diff --git a/.gitignore b/.gitignore index 2bb8491..3c847b4 100644 --- a/.gitignore +++ b/.gitignore @@ -13,4 +13,5 @@ AndroidBuild *.sln *.suo *.xcodeproj -*.xcworkspace \ No newline at end of file +*.xcworkspace +Plugins \ No newline at end of file diff --git a/Plugins/MetaXR/Config/BaseOculusXR.ini b/Plugins/MetaXR/Config/BaseOculusXR.ini deleted file mode 100644 index 4a27e44..0000000 --- a/Plugins/MetaXR/Config/BaseOculusXR.ini +++ /dev/null @@ -1,145 +0,0 @@ -[CoreRedirects] -; -+PackageRedirects=(OldName=".../OculusVR/...", NewName="/OculusXR/", MatchWildcard=true) -; -+ClassRedirects=(OldName="/Script/OculusHMD.OculusResourceHolder", NewName="/Script/OculusXRHMD.OculusXRResourceHolder") -+ClassRedirects=(OldName="/Script/OculusHMD.OculusPassthroughLayerComponent", NewName="/Script/OculusXRPassthrough.OculusXRPassthroughLayerComponent") -+ClassRedirects=(OldName="/Script/OculusHMD.StereoLayerShapeUserDefined", NewName="/Script/OculusXRPassthrough.OculusXRStereoLayerShapeUserDefined") -+ClassRedirects=(OldName="/Script/OculusHMD.StereoLayerShapeReconstructed", NewName="/Script/OculusXRPassthrough.OculusXRStereoLayerShapeReconstructed") -+ClassRedirects=(OldName="/Script/OculusHMD.OculusHMDRuntimeSettings", NewName="/Script/OculusXRHMD.OculusXRHMDRuntimeSettings") -+ClassRedirects=(OldName="/Script/OculusHMD.OculusEventComponent", NewName="/Script/OculusXRHMD.OculusXREventComponent") -+ClassRedirects=(OldName="/Script/OculusHMD.OculusSceneCaptureCubemap", NewName="/Script/OculusXRHMD.OculusXRSceneCaptureCubemap") -+ClassRedirects=(OldName="/Script/OculusHMD.PassthroughLayerBase", NewName="/Script/OculusXRPassthrough.OculusXRPassthroughLayerBase") -+ClassRedirects=(OldName="/Script/OculusHMD.OculusFunctionLibrary", NewName="/Script/OculusXRHMD.OculusXRFunctionLibrary") -; -+EnumRedirects=(OldName="EOculusXrApi", NewName="/Script/OculusXRHMD.EOculusXRXrApi") -+EnumRedirects=(OldName="EHandTrackingSupport", NewName="/Script/OculusXRHMD.EOculusXRHandTrackingSupport") -+EnumRedirects=(OldName="ETrackedDeviceType", NewName="/Script/OculusXRHMD.EOculusXRTrackedDeviceType") -+EnumRedirects=(OldName="EHandTrackingFrequency", NewName="/Script/OculusXRHMD.EOculusXRHandTrackingFrequency") -+EnumRedirects=(OldName="EColorMapType", NewName="/Script/OculusXRHMD.EOculusXRColorMapType") -+EnumRedirects=(OldName="EPassthroughLayerOrder", NewName="/Script/OculusXRHMD.EOculusXRPassthroughLayerOrder") -+EnumRedirects=(OldName="EOculusDeviceType", NewName="/Script/OculusXRHMD.EOculusXRDeviceType") -+EnumRedirects=(OldName="EColorSpace", NewName="/Script/OculusXRHMD.EOculusXRColorSpace") -+EnumRedirects=(OldName="EBoundaryType", NewName="/Script/OculusXRHMD.EOculusXRBoundaryType") -+EnumRedirects=(OldName="EProcessorPerformanceLevel", NewName="/Script/OculusXRHMD.EOculusXRProcessorPerformanceLevel") -; -+StructRedirects=(OldName="/Script/OculusHMD.GuardianTestResult", NewName="/Script/OculusXRHMD.OculusXRGuardianTestResult") -+StructRedirects=(OldName="/Script/OculusHMD.OculusSplashDesc", NewName="/Script/OculusXRHMD.OculusXRSplashDesc") -+StructRedirects=(OldName="/Script/OculusHMD.HmdUserProfile", NewName="/Script/OculusXRHMD.OculusXRHmdUserProfile") -+StructRedirects=(OldName="/Script/OculusHMD.HmdUserProfileField", NewName="/Script/OculusXRHMD.OculusXRHmdUserProfileField") -; -+ClassRedirects=(OldName="/Script/OculusInput.OculusHandComponent", NewName="/Script/OculusXRInput.OculusXRHandComponent") -+ClassRedirects=(OldName="/Script/OculusInput.OculusMRFunctionLibrary", NewName="/Script/OculusXRInput.OculusXRMRFunctionLibrary") -+ClassRedirects=(OldName="/Script/OculusInput.OculusInputFunctionLibrary", NewName="/Script/OculusXRInput.OculusXRInputFunctionLibrary") -; -+EnumRedirects=(OldName="ETrackingConfidence", NewName="/Script/OculusXRInput.EOculusXRTrackingConfidence") -+EnumRedirects=(OldName="EConfidenceBehavior", NewName="/Script/OculusXRInput.EOculusXRConfidenceBehavior") -+EnumRedirects=(OldName="EOculusHandType", NewName="/Script/OculusXRInput.EOculusXRHandType") -+EnumRedirects=(OldName="EOculusFinger", NewName="/Script/OculusXRInput.EOculusXRFinger") -+EnumRedirects=(OldName="ESystemGestureBehavior", NewName="/Script/OculusXRInput.EOculusXRSystemGestureBehavior") -+EnumRedirects=(OldName="EBone", NewName="/Script/OculusXRInput.EOculusXRBone") -; -+StructRedirects=(OldName="/Script/OculusInput.OculusCapsuleCollider", NewName="/Script/OculusXRInput.OculusXRCapsuleCollider") -; -; -; -; -+ClassRedirects=(OldName="/Script/OculusEditor.OculusHMDRuntimeSettings", NewName="/Script/OculusXREditor.OculusXRHMDRuntimeSettings") -+ClassRedirects=(OldName="/Script/OculusEditor.OculusEditorSettings", NewName="/Script/OculusXREditor.OculusXREditorSettings") -+ClassRedirects=(OldName="/Script/OculusEditor.OculusPlatformToolSettings", NewName="/Script/OculusXREditor.OculusXRPlatformToolSettings") -; -+EnumRedirects=(OldName="EOculusAssetType", NewName="/Script/OculusXREditor.EOculusXRAssetType") -+EnumRedirects=(OldName="EOculusPlatform", NewName="/Script/OculusXREditor.EOculusXRPlatform") -+EnumRedirects=(OldName="EOculusGamepadEmulation", NewName="/Script/OculusXREditor.EOculusXRGamepadEmulation") -; -+StructRedirects=(OldName="/Script/OculusEditor.RedistPackage", NewName="/Script/OculusXREditor.OculusXRRedistPackage") -+StructRedirects=(OldName="/Script/OculusEditor.AssetConfig", NewName="/Script/OculusXREditor.OculusXRAssetConfig") -; -+ClassRedirects=(OldName="/Script/OculusMR.OculusFunctionLibrary", NewName="/Script/OculusMR.OculusXRFunctionLibrary") -+ClassRedirects=(OldName="/Script/OculusMR.OculusMR_Settings", NewName="/Script/OculusMR.OculusXRMR_Settings") -+ClassRedirects=(OldName="/Script/OculusMR.OculusMRFunctionLibrary", NewName="/Script/OculusMR.OculusXRMRFunctionLibrary") -; -+EnumRedirects=(OldName="EOculusMR_CameraDeviceEnum", NewName="/Script/OculusMR.EOculusXRMR_CameraDeviceEnum") -+EnumRedirects=(OldName="EOculusMR_PostProcessEffects", NewName="/Script/OculusMR.EOculusXRMR_PostProcessEffects") -+EnumRedirects=(OldName="EOculusMR_CompositionMethod", NewName="/Script/OculusMR.EOculusXRMR_CompositionMethod") -+EnumRedirects=(OldName="EOculusMR_ClippingReference", NewName="/Script/OculusMR.EOculusXRMR_ClippingReference") -; -+StructRedirects=(OldName="/Script/OculusMR.OculusMR_PlaneMeshTriangle", NewName="/Script/OculusMR.OculusXRMR_PlaneMeshTriangle") -+StructRedirects=(OldName="/Script/OculusMR.TrackedCamera", NewName="/Script/OculusMR.OculusXRTrackedCamera") -; -+EnumRedirects=(OldName="EOculusXRXrApi",ValueChanges=(("LegacyOVRPlugin","OVRPluginOpenXR"))) -; -+EnumRedirects=(OldName="ETiledMultiResLevel",NewName="EOculusXRFoveatedRenderingLevel",ValueChanges=(("ETiledMultiResLevel_Off","Off"),("ETiledMultiResLevel_LMSLow","Low"),("ETiledMultiResLevel_LMSMedium","Medium"),("ETiledMultiResLevel_LMSHigh","High"),("ETiledMultiResLevel_LMSHighTop","HighTop"))) -+FunctionRedirects=(OldName="GetTiledMultiresLevel",NewName="GetFoveatedRenderingLevel") -+FunctionRedirects=(OldName="SetTiledMultiresLevel",NewName="SetFoveatedRenderingLevel") -+EnumRedirects=(OldName="EFixedFoveatedRenderingLevel",NewName="EOculusXRFoveatedRenderingLevel",ValueChanges=(("FFR_Off","Off"),("FFR_Low","Low"),("FFR_Medium","Medium"),("FFR_High","High"),("FFR_HighTop","HighTop"))) -+FunctionRedirects=(OldName="GetFixedFoveatedRenderingLevel",NewName="GetFoveatedRenderingLevel") -+FunctionRedirects=(OldName="SetFixedFoveatedRenderingLevel",NewName="SetFoveatedRenderingLevel") -; -+EnumRedirects=(OldName="/Script/OculusXRHMD.EOculusDeviceType",ValueChanges=(("OculusQuest","OculusQuest_Deprecated"),("Quest_Link","Quest_Link_Deprecated"))) -; -; Anchors and Scene redirects -+StructRedirects=(OldName="/Script/OculusAnchors.OculusSpaceQueryInfo", NewName="/Script/OculusXRAnchors.OculusXRSpaceQueryInfo") -+StructRedirects=(OldName="/Script/OculusAnchors.OculusSpaceQueryResult", NewName="/Script/OculusXRAnchors.OculusXRSpaceQueryResult") -+StructRedirects=(OldName="/Script/OculusAnchors.OculusSpaceQueryFilterValues", NewName="/Script/OculusXRAnchors.OculusXRSpaceQueryFilterValues") -+StructRedirects=(OldName="/Script/OculusAnchors.OculusAnchorManager", NewName="/Script/OculusXRAnchors.OculusXRAnchorManager") -+StructRedirects=(OldName="/Script/OculusAnchors.OculusSpatialAnchorManager", NewName="/Script/OculusXRAnchors.OculusXRSpatialAnchorManager") -+StructRedirects=(OldName="/Script/OculusAnchors.OculusRoomLayoutManager", NewName="/Script/OculusXRAnchors.OculusXRRoomLayoutManager") -+StructRedirects=(OldName="/Script/OculusAnchors.OculusAnchors", NewName="/Script/OculusXRAnchors.OculusXRAnchors") -+StructRedirects=(OldName="/Script/OculusAnchors.OculusRoomLayout", NewName="/Script/OculusXRAnchors.OculusXRRoomLayout") -+StructRedirects=(OldName="/Script/OculusScene.OculusSpawnedSceneAnchorProperties", NewName="/Script/OculusXRScene.OculusXRSpawnedSceneAnchorProperties") -+StructRedirects=(OldName="/Script/OculusAnchors.UUID", NewName="/Script/OculusXRAnchors.OculusXRUUID") -+StructRedirects=(OldName="/Script/OculusAnchors.UInt64", NewName="/Script/OculusXRAnchors.OculusXRUInt64") -; -+EnumRedirects=(OldName="EOculusSpaceQueryFilterType", NewName="/Script/OculusXRAnchors.EOculusXRSpaceQueryFilterType") -+EnumRedirects=(OldName="EOculusSpaceStorageLocation", NewName="/Script/OculusXRAnchors.EOculusXRSpaceStorageLocation") -+EnumRedirects=(OldName="EOculusSpaceStoragePersistenceMode", NewName="/Script/OculusXRAnchors.EOculusXRSpaceStoragePersistenceMode") -+EnumRedirects=(OldName="EOculusSpaceComponentType", NewName="/Script/OculusXRAnchors.EOculusXRSpaceComponentType") -+EnumRedirects=(OldName="EOculusLaunchCaptureFlowWhenMissingScene", NewName="/Script/OculusXRScene.EOculusXRLaunchCaptureFlowWhenMissingScene") -; -+ClassRedirects=(OldName="/Script/OculusAnchors.OculusAnchorComponent", NewName="/Script/OculusXRAnchors.OculusXRAnchorComponent") -+ClassRedirects=(OldName="/Script/OculusAnchors.OculusAnchorBPFuctionLibrary", NewName="/Script/OculusXRAnchors.OculusXRAnchorBPFuctionLibrary") -+ClassRedirects=(OldName="/Script/OculusAnchors.OculusAsyncAction_CreateSpatialAnchor", NewName="/Script/OculusXRAnchors.OculusXRAsyncAction_CreateSpatialAnchor") -+ClassRedirects=(OldName="/Script/OculusAnchors.OculusAsyncAction_EraseAnchor", NewName="/Script/OculusXRAnchors.OculusXRAsyncAction_EraseAnchor") -+ClassRedirects=(OldName="/Script/OculusAnchors.OculusAsyncAction_SaveAnchor", NewName="/Script/OculusXRAnchors.OculusXRAsyncAction_SaveAnchor") -+ClassRedirects=(OldName="/Script/OculusAnchors.OculusAsyncAction_QueryAnchors", NewName="/Script/OculusXRAnchors.OculusXRAsyncAction_QueryAnchors") -+ClassRedirects=(OldName="/Script/OculusAnchors.OculusAsyncAction_SetAnchorComponentStatus", NewName="/Script/OculusXRAnchors.OculusXRAsyncAction_SetAnchorComponentStatus") -+ClassRedirects=(OldName="/Script/OculusAnchors.OculusRoomLayoutManagerComponent", NewName="/Script/OculusXRAnchors.OculusXRRoomLayoutManagerComponent") -+ClassRedirects=(OldName="/Script/OculusAnchors.OculusSpatialAnchorComponent", NewName="/Script/OculusXRAnchors.OculusXRSpatialAnchorComponent") -+ClassRedirects=(OldName="/Script/OculusScene.OculusSceneAnchorComponent", NewName="/Script/OculusXRScene.OculusXRSceneAnchorComponent") -+ClassRedirects=(OldName="/Script/OculusScene.OculusSceneActor", NewName="/Script/OculusXRScene.OculusXRSceneActor") -; -+FunctionRedirects=(OldName="OculusAsyncAction_CreateSpatialAnchor.OculusAsyncCreateSpatialAnchor",NewName="OculusXRAsyncAction_CreateSpatialAnchor.OculusXRAsyncCreateSpatialAnchor") -+FunctionRedirects=(OldName="OculusAsyncAction_EraseAnchor.OculusAsyncEraseAnchor",NewName="OculusXRAsyncAction_EraseAnchor.OculusXRAsyncEraseAnchor") -+FunctionRedirects=(OldName="OculusAsyncAction_SaveAnchor.OculusAsyncSaveAnchor",NewName="OculusXRAsyncAction_SaveAnchor.OculusXRAsyncSaveAnchor") -+FunctionRedirects=(OldName="OculusAsyncAction_QueryAnchors.OculusAsyncQueryAnchors",NewName="OculusXRAsyncAction_QueryAnchors.OculusXRAsyncQueryAnchors") -+FunctionRedirects=(OldName="OculusAsyncAction_QueryAnchors.OculusAsyncQueryAnchorsAdvanced",NewName="OculusXRAsyncAction_QueryAnchors.OculusXRAsyncQueryAnchorsAdvanced") -+FunctionRedirects=(OldName="OculusAsyncAction_SetAnchorComponentStatus.OculusAsyncSetAnchorComponentStatus",NewName="OculusXRAsyncAction_SetAnchorComponentStatus.OculusXRAsyncSetAnchorComponentStatus") -; -+ClassRedirects=(OldName="/Script/OculusXRHMD.OculusXRPassthroughLayerComponent", NewName="/Script/OculusXRPassthrough.OculusXRPassthroughLayerComponent") -+ClassRedirects=(OldName="/Script/OculusXRHMD.OculusXRPassthroughLayerBase", NewName="/Script/OculusXRPassthrough.OculusXRPassthroughLayerBase") -+ClassRedirects=(OldName="/Script/OculusXRHMD.OculusXRStereoLayerShapeUserDefined", NewName="/Script/OculusXRPassthrough.OculusXRStereoLayerShapeUserDefined") -+ClassRedirects=(OldName="/Script/OculusXRHMD.OculusXRStereoLayerShapeReconstructed", NewName="/Script/OculusXRPassthrough.OculusXRStereoLayerShapeReconstructed") - -; Movement -+EnumRedirects=(OldName="EOculusBodyTrackingMode", NewName="/Script/OculusXRMovement.EOculusXRBodyTrackingMode") -+EnumRedirects=(OldName="EOculusBoneID", NewName="/Script/OculusXRMovement.EOculusXRBoneID") -+EnumRedirects=(OldName="EOculusFaceExpression", NewName="/Script/OculusXRMovement.EOculusXRFaceExpression") -+EnumRedirects=(OldName="EOculusFaceConfidence", NewName="/Script/OculusXRMovement.EOculusXRFaceConfidence") -+EnumRedirects=(OldName="EOculusEye", NewName="/Script/OculusXRMovement.EOculusXREye") -; -+StructRedirects=(OldName="/Script/OculusMovement.OculusBodyJoint", NewName="/Script/OculusXRMovement.OculusXRBodyJoint") -+StructRedirects=(OldName="/Script/OculusMovement.OculusBodyState", NewName="/Script/OculusXRMovement.OculusXRBodyState") -+StructRedirects=(OldName="/Script/OculusMovement.OculusFaceState", NewName="/Script/OculusXRMovement.OculusXRFaceState") -+StructRedirects=(OldName="/Script/OculusMovement.OculusEyeGazeState", NewName="/Script/OculusXRMovement.OculusXREyeGazeState") -+StructRedirects=(OldName="/Script/OculusMovement.OculusEyeGazesState", NewName="/Script/OculusXRMovement.OculusXREyeGazesState") -; -+ClassRedirects=(OldName="/Script/OculusMovement.OculusBodyTrackingComponent", NewName="/Script/OculusXRMovement.OculusXRBodyTrackingComponent") -+ClassRedirects=(OldName="/Script/OculusMovement.OculusEyeTrackingComponent", NewName="/Script/OculusXRMovement.OculusXREyeTrackingComponent") -+ClassRedirects=(OldName="/Script/OculusMovement.OculusFaceTrackingComponent", NewName="/Script/OculusXRMovement.OculusXRFaceTrackingComponent") -+ClassRedirects=(OldName="/Script/OculusMovement.OculusMovementFunctionLibrary", NewName="/Script/OculusXRMovement.OculusXRMovementFunctionLibrary") -; MRUK -+PackageRedirects=(OldName=".../MRUtilityKit/...", NewName="/OculusXR/", MatchWildcard=true) - -+ClassRedirects=(OldName="/Script/OculusXRAnchors.OculusXRRoomLayoutManagerComponent", NewName="/Script/OculusXRScene.OculusXRRoomLayoutManagerComponent") -+EnumRedirects=(OldName="/Script/OculusXRHMD.EOculusXROcclusionsMode",ValueChanges=(("HardOcclusions","HardOcclusions_Deprecated"))) diff --git a/Plugins/MetaXR/Config/FilterPlugin.ini b/Plugins/MetaXR/Config/FilterPlugin.ini deleted file mode 100644 index 9d21933..0000000 --- a/Plugins/MetaXR/Config/FilterPlugin.ini +++ /dev/null @@ -1,14 +0,0 @@ -[FilterPlugin] -; This section lists additional files which will be packaged along with your plugin. Paths should be listed relative to the root plugin directory, and -; may include "...", "*", and "?" wildcards to match directories, files, and individual characters respectively. -; -; Examples: -; /README.txt -; /Extras/... -; /Binaries/ThirdParty/*.dll -/Config/... -/build.log -/Shaders/... -/Source/Thirdparty/... - - diff --git a/Plugins/MetaXR/Content/Materials/LeftMetaQuestTouchPlusMaterial.uasset b/Plugins/MetaXR/Content/Materials/LeftMetaQuestTouchPlusMaterial.uasset deleted file mode 100644 index 91f2538..0000000 --- a/Plugins/MetaXR/Content/Materials/LeftMetaQuestTouchPlusMaterial.uasset +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:18b4cd5b341fdf48d7f3011f2432cbc4c92e12a8dc1ff927b38644752eb36ecb -size 9496 diff --git a/Plugins/MetaXR/Content/Materials/LeftMetaQuestTouchProMaterial.uasset b/Plugins/MetaXR/Content/Materials/LeftMetaQuestTouchProMaterial.uasset deleted file mode 100644 index ecfb794..0000000 --- a/Plugins/MetaXR/Content/Materials/LeftMetaQuestTouchProMaterial.uasset +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:a7b09956cc5b47dc73e3d3df164c6729aa60a4c40907d4fc890545d691738f68 -size 10447 diff --git a/Plugins/MetaXR/Content/Materials/MF_DistanceMap.uasset b/Plugins/MetaXR/Content/Materials/MF_DistanceMap.uasset deleted file mode 100644 index a9068a4..0000000 --- a/Plugins/MetaXR/Content/Materials/MF_DistanceMap.uasset +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:949ea9ea1698e3afab41c18b5a240c4f3be31ab0e2c03f1081649d579c62f0fb -size 21949 diff --git a/Plugins/MetaXR/Content/Materials/MI_BlobShadow.uasset b/Plugins/MetaXR/Content/Materials/MI_BlobShadow.uasset deleted file mode 100644 index dca2716..0000000 --- a/Plugins/MetaXR/Content/Materials/MI_BlobShadow.uasset +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:0e885b21e11a87747dcd05b70869075ee0898cb1f8d801b99992efee3d5019b5 -size 9613 diff --git a/Plugins/MetaXR/Content/Materials/MI_Highlights_Translucent.uasset b/Plugins/MetaXR/Content/Materials/MI_Highlights_Translucent.uasset deleted file mode 100644 index be43415..0000000 --- a/Plugins/MetaXR/Content/Materials/MI_Highlights_Translucent.uasset +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:9949c1b557b28a7f141960d9baaf4c992602246449796e74051c7772b71e0451 -size 6823 diff --git a/Plugins/MetaXR/Content/Materials/MPC_Highlights.uasset b/Plugins/MetaXR/Content/Materials/MPC_Highlights.uasset deleted file mode 100644 index 450ba7c..0000000 --- a/Plugins/MetaXR/Content/Materials/MPC_Highlights.uasset +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:8b18b27b4c0526f348c863cd66486089fad92e79f382851a6c0ac71d75249024 -size 4564 diff --git a/Plugins/MetaXR/Content/Materials/M_BlobShadow.uasset b/Plugins/MetaXR/Content/Materials/M_BlobShadow.uasset deleted file mode 100644 index be3a66e..0000000 --- a/Plugins/MetaXR/Content/Materials/M_BlobShadow.uasset +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:23bb0ddcaf8a8c4bc8a74375aa3520e8dd225d504729875f861bcdd45688f554 -size 26597 diff --git a/Plugins/MetaXR/Content/Materials/M_CreateMask.uasset b/Plugins/MetaXR/Content/Materials/M_CreateMask.uasset deleted file mode 100644 index c4dbe37..0000000 --- a/Plugins/MetaXR/Content/Materials/M_CreateMask.uasset +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:2eb26670ac25e43d9e8c779a6d8f8b9e41c9953cf279b44ce4784a7ed6ad8861 -size 28125 diff --git a/Plugins/MetaXR/Content/Materials/M_DistanceMapAll.uasset b/Plugins/MetaXR/Content/Materials/M_DistanceMapAll.uasset deleted file mode 100644 index 87ceb09..0000000 --- a/Plugins/MetaXR/Content/Materials/M_DistanceMapAll.uasset +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:10ef0b2309c6f510962528df56a1c328cab50a50073196ac07f99eeda4a54969 -size 17966 diff --git a/Plugins/MetaXR/Content/Materials/M_DistanceMapFree.uasset b/Plugins/MetaXR/Content/Materials/M_DistanceMapFree.uasset deleted file mode 100644 index 299b3d9..0000000 --- a/Plugins/MetaXR/Content/Materials/M_DistanceMapFree.uasset +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:dc0bd19a5b1ba87220f4aea4532ddc81c5e2f5632273fe629a1311fc24bfc02a -size 15343 diff --git a/Plugins/MetaXR/Content/Materials/M_DistanceMapOccupied.uasset b/Plugins/MetaXR/Content/Materials/M_DistanceMapOccupied.uasset deleted file mode 100644 index 09edd8a..0000000 --- a/Plugins/MetaXR/Content/Materials/M_DistanceMapOccupied.uasset +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:8474113a236c79f8c6a37befca3a02170ca0660c3638770df0c6b3c8563915ed -size 15921 diff --git a/Plugins/MetaXR/Content/Materials/M_FloorMask.uasset b/Plugins/MetaXR/Content/Materials/M_FloorMask.uasset deleted file mode 100644 index 47e30d0..0000000 --- a/Plugins/MetaXR/Content/Materials/M_FloorMask.uasset +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:4197f5a3e21608eb5e6fd3b8569b4b0c8753f5b48698b348bbfcc21909224e17 -size 7891 diff --git a/Plugins/MetaXR/Content/Materials/M_Highlights.uasset b/Plugins/MetaXR/Content/Materials/M_Highlights.uasset deleted file mode 100644 index 95aabd4..0000000 --- a/Plugins/MetaXR/Content/Materials/M_Highlights.uasset +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:b155f9bc4fa604d062aebc41dc328acce1bcca4530b2a457152d98d09f20ff8c -size 25141 diff --git a/Plugins/MetaXR/Content/Materials/M_JFAPass.uasset b/Plugins/MetaXR/Content/Materials/M_JFAPass.uasset deleted file mode 100644 index 848bf72..0000000 --- a/Plugins/MetaXR/Content/Materials/M_JFAPass.uasset +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:3e747a172a5adb04a2336821109f85754be03d74386257045b957546dd4fea78 -size 22021 diff --git a/Plugins/MetaXR/Content/Materials/M_SceneObjectMask.uasset b/Plugins/MetaXR/Content/Materials/M_SceneObjectMask.uasset deleted file mode 100644 index 79b40a7..0000000 --- a/Plugins/MetaXR/Content/Materials/M_SceneObjectMask.uasset +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:8e50bbde8b86dfeb3259b61f013968a3da96ecafbb317b04311024bc9eea0ddb -size 9366 diff --git a/Plugins/MetaXR/Content/Materials/MetaQuestTouchProMaterial.uasset b/Plugins/MetaXR/Content/Materials/MetaQuestTouchProMaterial.uasset deleted file mode 100644 index 653c1dd..0000000 --- a/Plugins/MetaXR/Content/Materials/MetaQuestTouchProMaterial.uasset +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:ca52344d9f210e3765146e18b566381198605894dcf484bdbaa4e3f198012bc3 -size 83175 diff --git a/Plugins/MetaXR/Content/Materials/OculusMR_ChromaKey.uasset b/Plugins/MetaXR/Content/Materials/OculusMR_ChromaKey.uasset deleted file mode 100644 index 8360b1c..0000000 --- a/Plugins/MetaXR/Content/Materials/OculusMR_ChromaKey.uasset +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:a08c44e3ac881924182cf152ef04768fa4673124b9fde9dfd3657d687d5fd527 -size 167711 diff --git a/Plugins/MetaXR/Content/Materials/OculusMR_OpaqueColoredMaterial.uasset b/Plugins/MetaXR/Content/Materials/OculusMR_OpaqueColoredMaterial.uasset deleted file mode 100644 index 310103e..0000000 --- a/Plugins/MetaXR/Content/Materials/OculusMR_OpaqueColoredMaterial.uasset +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:56e4bb5c2b9e5d0765e0fbd36be331f9c2ab0dbc260cc83cf6e97a4d019834eb -size 94122 diff --git a/Plugins/MetaXR/Content/Materials/OculusMR_WhiteMaterial.uasset b/Plugins/MetaXR/Content/Materials/OculusMR_WhiteMaterial.uasset deleted file mode 100644 index 501e4c8..0000000 --- a/Plugins/MetaXR/Content/Materials/OculusMR_WhiteMaterial.uasset +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:5c3c46ffd291896349c33c643f6a487b9d1dd7397928d31e8e35733af34fbc83 -size 59981 diff --git a/Plugins/MetaXR/Content/Materials/PokeAHoleMaterial.uasset b/Plugins/MetaXR/Content/Materials/PokeAHoleMaterial.uasset deleted file mode 100644 index 5862022..0000000 --- a/Plugins/MetaXR/Content/Materials/PokeAHoleMaterial.uasset +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:34b2ede22fa887498b332b44dde4179f376820a3047ae37f7128efa51d79ba95 -size 6499 diff --git a/Plugins/MetaXR/Content/Materials/RightMetaQuestTouchPlusMaterial.uasset b/Plugins/MetaXR/Content/Materials/RightMetaQuestTouchPlusMaterial.uasset deleted file mode 100644 index 58d51ea..0000000 --- a/Plugins/MetaXR/Content/Materials/RightMetaQuestTouchPlusMaterial.uasset +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:8533a56d45e68757df582780a1b53fef2a67dab954eeecf1407bcf2f6c1f0139 -size 9368 diff --git a/Plugins/MetaXR/Content/Materials/RightMetaQuestTouchProMaterial.uasset b/Plugins/MetaXR/Content/Materials/RightMetaQuestTouchProMaterial.uasset deleted file mode 100644 index 595f768..0000000 --- a/Plugins/MetaXR/Content/Materials/RightMetaQuestTouchProMaterial.uasset +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:a2235389523b132b61a9a3181c0da746dc6602bb8a5734d61c9dd50ec3fd6066 -size 9918 diff --git a/Plugins/MetaXR/Content/Materials/TouchForQuest2Material.uasset b/Plugins/MetaXR/Content/Materials/TouchForQuest2Material.uasset deleted file mode 100644 index c36c3ba..0000000 --- a/Plugins/MetaXR/Content/Materials/TouchForQuest2Material.uasset +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:f7c6b15d5326132ba49af186ca77694380307cb4ada1d4c16e1bafaec77454a7 -size 10829 diff --git a/Plugins/MetaXR/Content/Materials/TouchForQuestRiftSControllerMaterial.uasset b/Plugins/MetaXR/Content/Materials/TouchForQuestRiftSControllerMaterial.uasset deleted file mode 100644 index 1958b33..0000000 --- a/Plugins/MetaXR/Content/Materials/TouchForQuestRiftSControllerMaterial.uasset +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:36520d74b4b291d8687afbb60a418e64e7f51652976f3b94d7fcb11f7da6b44f -size 99699 diff --git a/Plugins/MetaXR/Content/Materials/model_pieces_controllerMATphongRT.uasset b/Plugins/MetaXR/Content/Materials/model_pieces_controllerMATphongRT.uasset deleted file mode 100644 index a089fb0..0000000 --- a/Plugins/MetaXR/Content/Materials/model_pieces_controllerMATphongRT.uasset +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:577e3f7b7075af3fd27cdc28634a4f53d99c54075dd7f989732d94037906a826 -size 111033 diff --git a/Plugins/MetaXR/Content/Materials/touchController_mat.uasset b/Plugins/MetaXR/Content/Materials/touchController_mat.uasset deleted file mode 100644 index 0e14920..0000000 --- a/Plugins/MetaXR/Content/Materials/touchController_mat.uasset +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:3e824230bd07de2ed74be6b8ddbd5f494c548926f4e3c3c46c0e8bcbb663c2e7 -size 95047 diff --git a/Plugins/MetaXR/Content/Meshes/LeftMetaQuestTouchPlus.fbx b/Plugins/MetaXR/Content/Meshes/LeftMetaQuestTouchPlus.fbx deleted file mode 100644 index fabe4d7..0000000 --- a/Plugins/MetaXR/Content/Meshes/LeftMetaQuestTouchPlus.fbx +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:4f62b338735c8087992c208663a0dcb6ae8c95928c1edea3c44f8b37d04da04f -size 287792 diff --git a/Plugins/MetaXR/Content/Meshes/LeftMetaQuestTouchPlus.uasset b/Plugins/MetaXR/Content/Meshes/LeftMetaQuestTouchPlus.uasset deleted file mode 100644 index 38c6e6c..0000000 --- a/Plugins/MetaXR/Content/Meshes/LeftMetaQuestTouchPlus.uasset +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:fbbe2060876c117412fbe59652c58ded6d9c6dd394e69db67c322eb13729af10 -size 222375 diff --git a/Plugins/MetaXR/Content/Meshes/LeftMetaQuestTouchPro.uasset b/Plugins/MetaXR/Content/Meshes/LeftMetaQuestTouchPro.uasset deleted file mode 100644 index c7d211a..0000000 --- a/Plugins/MetaXR/Content/Meshes/LeftMetaQuestTouchPro.uasset +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:df4df64c2debebbaee15e9bd593b9be243d7f4734d4fabba30d28d06ca733d0d -size 167905 diff --git a/Plugins/MetaXR/Content/Meshes/LeftMetaQuestTouchProNub.uasset b/Plugins/MetaXR/Content/Meshes/LeftMetaQuestTouchProNub.uasset deleted file mode 100644 index d6eb184..0000000 --- a/Plugins/MetaXR/Content/Meshes/LeftMetaQuestTouchProNub.uasset +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:d9d27399ac32afd39edb67cdcc20a4068eb95d05abb396532b6112ac6fdcc5c8 -size 26968 diff --git a/Plugins/MetaXR/Content/Meshes/LeftTouchForQuest2.uasset b/Plugins/MetaXR/Content/Meshes/LeftTouchForQuest2.uasset deleted file mode 100644 index 35b8960..0000000 --- a/Plugins/MetaXR/Content/Meshes/LeftTouchForQuest2.uasset +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:9cadbc5a391b529d73b94e66c99b8a51009a10f263a753718a0498c14a95b9f9 -size 1620506 diff --git a/Plugins/MetaXR/Content/Meshes/LeftTouchForQuestRiftSController.fbx b/Plugins/MetaXR/Content/Meshes/LeftTouchForQuestRiftSController.fbx deleted file mode 100644 index 2e4e5b0..0000000 --- a/Plugins/MetaXR/Content/Meshes/LeftTouchForQuestRiftSController.fbx +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:496844537b5ab18ffac4466e4197eee9b021abebefb093cf704d3e0a84f25eda -size 422976 diff --git a/Plugins/MetaXR/Content/Meshes/LeftTouchForQuestRiftSController.uasset b/Plugins/MetaXR/Content/Meshes/LeftTouchForQuestRiftSController.uasset deleted file mode 100644 index e4ec152..0000000 --- a/Plugins/MetaXR/Content/Meshes/LeftTouchForQuestRiftSController.uasset +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:c9e972e4a04cc074a073c24a3466bd836af6607017c20655cd8ab925a0611887 -size 334980 diff --git a/Plugins/MetaXR/Content/Meshes/RightMetaQuestTouchPlus.fbx b/Plugins/MetaXR/Content/Meshes/RightMetaQuestTouchPlus.fbx deleted file mode 100644 index 8ec73d9..0000000 --- a/Plugins/MetaXR/Content/Meshes/RightMetaQuestTouchPlus.fbx +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:3ba211be52ccf6e3e8708ec51777b250ce9ca9d2070e1295fc68231020769558 -size 288704 diff --git a/Plugins/MetaXR/Content/Meshes/RightMetaQuestTouchPlus.uasset b/Plugins/MetaXR/Content/Meshes/RightMetaQuestTouchPlus.uasset deleted file mode 100644 index e0c1c7c..0000000 --- a/Plugins/MetaXR/Content/Meshes/RightMetaQuestTouchPlus.uasset +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:8bd963c95a8d0c150ec7ad42f95230f4aa8e98f0845c5ee3d2fc743757953ba6 -size 221786 diff --git a/Plugins/MetaXR/Content/Meshes/RightMetaQuestTouchPro.uasset b/Plugins/MetaXR/Content/Meshes/RightMetaQuestTouchPro.uasset deleted file mode 100644 index 877b4b5..0000000 --- a/Plugins/MetaXR/Content/Meshes/RightMetaQuestTouchPro.uasset +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:9984f8f285005921951e276bb61066cfd147afbd88543ec5c0d3f1b0d1e3d0cc -size 168472 diff --git a/Plugins/MetaXR/Content/Meshes/RightMetaQuestTouchProNub.uasset b/Plugins/MetaXR/Content/Meshes/RightMetaQuestTouchProNub.uasset deleted file mode 100644 index 228aab7..0000000 --- a/Plugins/MetaXR/Content/Meshes/RightMetaQuestTouchProNub.uasset +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:6736591f01a4bedf1aefecb29d6cd50a584c37f8ebdbfdb080fec9b6a0349921 -size 27434 diff --git a/Plugins/MetaXR/Content/Meshes/RightTouchForQuest2.uasset b/Plugins/MetaXR/Content/Meshes/RightTouchForQuest2.uasset deleted file mode 100644 index 540f381..0000000 --- a/Plugins/MetaXR/Content/Meshes/RightTouchForQuest2.uasset +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:cdf3cf3027f6b6e5665b2a8b8aa3d36d5cf6e8375ad457fd41eddf45864f4bef -size 1622442 diff --git a/Plugins/MetaXR/Content/Meshes/RightTouchForQuestRiftSController.fbx b/Plugins/MetaXR/Content/Meshes/RightTouchForQuestRiftSController.fbx deleted file mode 100644 index ea282ce..0000000 --- a/Plugins/MetaXR/Content/Meshes/RightTouchForQuestRiftSController.fbx +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:1da951971570105cff39f7f10122caff22e0655811d9be13730ed2f8de305483 -size 422784 diff --git a/Plugins/MetaXR/Content/Meshes/RightTouchForQuestRiftSController.uasset b/Plugins/MetaXR/Content/Meshes/RightTouchForQuestRiftSController.uasset deleted file mode 100644 index d7b703d..0000000 --- a/Plugins/MetaXR/Content/Meshes/RightTouchForQuestRiftSController.uasset +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:816ffcda1ebd0c01fc413d37497888df005782ff14f5a603a049f85a9776298b -size 337188 diff --git a/Plugins/MetaXR/Content/Meshes/SM_Bevelcube.uasset b/Plugins/MetaXR/Content/Meshes/SM_Bevelcube.uasset deleted file mode 100644 index 0f62879..0000000 --- a/Plugins/MetaXR/Content/Meshes/SM_Bevelcube.uasset +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:4a828f6d87e34622c37323e406d24f092dd0f9c1c2954ff4d3e3fc4817b86c58 -size 32541 diff --git a/Plugins/MetaXR/Content/Meshes/SM_Plane.uasset b/Plugins/MetaXR/Content/Meshes/SM_Plane.uasset deleted file mode 100644 index c6af54f..0000000 --- a/Plugins/MetaXR/Content/Meshes/SM_Plane.uasset +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:505406591c94305cfa8b49541377a5d45ef515c401cdfb0f76a56423db9b9ebe -size 15758 diff --git a/Plugins/MetaXR/Content/Meshes/SM_Volume.uasset b/Plugins/MetaXR/Content/Meshes/SM_Volume.uasset deleted file mode 100644 index 6a7ab5f..0000000 --- a/Plugins/MetaXR/Content/Meshes/SM_Volume.uasset +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:7b214e5e6dc34a63d03232a15319929e39ff594131be6944fe7af172dd1f7f98 -size 17294 diff --git a/Plugins/MetaXR/Content/MetaXRControllers.uasset b/Plugins/MetaXR/Content/MetaXRControllers.uasset deleted file mode 100644 index 7a67a0f..0000000 --- a/Plugins/MetaXR/Content/MetaXRControllers.uasset +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:2dfb96c7159d3366f59fcbe277db3086b8e86a04e253748a5f376b85ee95112a -size 19999 diff --git a/Plugins/MetaXR/Content/OculusMR_GreenKey.uasset b/Plugins/MetaXR/Content/OculusMR_GreenKey.uasset deleted file mode 100644 index f85346e..0000000 --- a/Plugins/MetaXR/Content/OculusMR_GreenKey.uasset +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:d507f10c27952b84435a1fc313452ae514d1f5467f44774ddf64e2c443d34341 -size 109846 diff --git a/Plugins/MetaXR/Content/OculusModels.tps b/Plugins/MetaXR/Content/OculusModels.tps deleted file mode 100644 index 0fac4c5..0000000 --- a/Plugins/MetaXR/Content/OculusModels.tps +++ /dev/null @@ -1,13 +0,0 @@ - - - Oculus Models - /Engine/Plugins/Runtime/Oculus/OculusVR/Content/ - Provide our licensees with models that match actual physical Oculus devices. - https://developer.oculus.com/licenses/art-1.0/ - - Licensees - Git - P4 - - /Engine/Source/ThirdParty/Licenses/OculusModels_License.txt - \ No newline at end of file diff --git a/Plugins/MetaXR/Content/OculusModels_License.txt b/Plugins/MetaXR/Content/OculusModels_License.txt deleted file mode 100644 index 4c170b2..0000000 --- a/Plugins/MetaXR/Content/OculusModels_License.txt +++ /dev/null @@ -1,8 +0,0 @@ -Art Attribution License 1.0 -Copyright © Facebook Technologies, LLC and its affiliates. All rights reserved. - -You may use these images solely for referring to the corresponding product in your video game or VR experience (including manuals for users). Otherwise, you may not use these images, or any trademarks, logos or other intellectual property owned by Facebook Technologies, LLC formerly known as Oculus VR, LLC (“Oculus”), including but not limited to use on merchandise or other product such as clothing, hats, or mugs. Do not use the Oculus images in a way that implies a partnership, sponsorship or endorsement; or features Oculus on materials associated with pornography, illegal activities, or other materials that violate Oculus Terms. - -THE IMAGES ARE PROVIDED TO YOU ON AN “AS IS” BASIS AND YOU ARE SOLELY RESPONSIBLE FOR YOUR USE OF THE IMAGES. OCULUS DISCLAIMS ALL WARRANTIES REGARDING THE IMAGES, INCLUDING WARRANTIES OF NON-INFRINGEMENT. OCULUS SHALL NOT BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, CONSEQUENTIAL OR PUNITIVE DAMAGES ARISING FROM OR RELATED TO YOUR USE OF THE IMAGES. - -For the avoidance of doubt, this license shall not apply to the Oculus name, trademark or service mark, logo or design. \ No newline at end of file diff --git a/Plugins/MetaXR/Content/Textures/CRT_DistanceMap.uasset b/Plugins/MetaXR/Content/Textures/CRT_DistanceMap.uasset deleted file mode 100644 index f2c0941..0000000 --- a/Plugins/MetaXR/Content/Textures/CRT_DistanceMap.uasset +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:84cb8428c316fe728058c5d350dbd29630dc40bddac53d26ec17380ead8e2fb9 -size 4666 diff --git a/Plugins/MetaXR/Content/Textures/CRT_JumpFlood1.uasset b/Plugins/MetaXR/Content/Textures/CRT_JumpFlood1.uasset deleted file mode 100644 index 48a42e5..0000000 --- a/Plugins/MetaXR/Content/Textures/CRT_JumpFlood1.uasset +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:5dd63fda0c9f7275a108ddf8ef78dbf0e849dd2fe16a9636a39958382f569fbb -size 4661 diff --git a/Plugins/MetaXR/Content/Textures/CRT_JumpFlood2.uasset b/Plugins/MetaXR/Content/Textures/CRT_JumpFlood2.uasset deleted file mode 100644 index 69749f5..0000000 --- a/Plugins/MetaXR/Content/Textures/CRT_JumpFlood2.uasset +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:3cc86f615f32f16743a4bd737420a6594966f549ff2e76e5c046c589da0be5ac -size 4661 diff --git a/Plugins/MetaXR/Content/Textures/CRT_Mask.uasset b/Plugins/MetaXR/Content/Textures/CRT_Mask.uasset deleted file mode 100644 index 508cd1b..0000000 --- a/Plugins/MetaXR/Content/Textures/CRT_Mask.uasset +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:958bf8ebec5e88b5ef3a7dbb83baf40b31563044e97f1d93a2bfbd7d9ae0c2f6 -size 4736 diff --git a/Plugins/MetaXR/Content/Textures/LeftMetaQuestTouchPlus_Color.uasset b/Plugins/MetaXR/Content/Textures/LeftMetaQuestTouchPlus_Color.uasset deleted file mode 100644 index 397e139..0000000 --- a/Plugins/MetaXR/Content/Textures/LeftMetaQuestTouchPlus_Color.uasset +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:9d32f405dbb75078ca333884200775dc66e5401682479e1c6af9e3bf5aaea59c -size 5144987 diff --git a/Plugins/MetaXR/Content/Textures/LeftMetaQuestTouchPro_Color.uasset b/Plugins/MetaXR/Content/Textures/LeftMetaQuestTouchPro_Color.uasset deleted file mode 100644 index 75e1d27..0000000 --- a/Plugins/MetaXR/Content/Textures/LeftMetaQuestTouchPro_Color.uasset +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:f70c8b8e4ab9205f04cfd7cd9cffbc976232fd8c46e5232405576373abb332bc -size 4620263 diff --git a/Plugins/MetaXR/Content/Textures/LeftMetaQuestTouchPro_Normal.uasset b/Plugins/MetaXR/Content/Textures/LeftMetaQuestTouchPro_Normal.uasset deleted file mode 100644 index b76c109..0000000 --- a/Plugins/MetaXR/Content/Textures/LeftMetaQuestTouchPro_Normal.uasset +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:313a1d6a1cb9f2c6a423f4c92a795039ae4251f0fa3b99b4fa97215bf7753900 -size 2368859 diff --git a/Plugins/MetaXR/Content/Textures/RightMetaQuestTouchPlus_Color.uasset b/Plugins/MetaXR/Content/Textures/RightMetaQuestTouchPlus_Color.uasset deleted file mode 100644 index 2ea3715..0000000 --- a/Plugins/MetaXR/Content/Textures/RightMetaQuestTouchPlus_Color.uasset +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:3019e678d58551f5491ff9637781176aa63fc65d5d0fdddbd1f0be6f0cf24958 -size 5110320 diff --git a/Plugins/MetaXR/Content/Textures/RightMetaQuestTouchPro_Color.uasset b/Plugins/MetaXR/Content/Textures/RightMetaQuestTouchPro_Color.uasset deleted file mode 100644 index 5b18886..0000000 --- a/Plugins/MetaXR/Content/Textures/RightMetaQuestTouchPro_Color.uasset +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:5f1c75cd9c92d2619bd367e7db3cfc39d920293a42a0ce210070da9410bb58d2 -size 4653519 diff --git a/Plugins/MetaXR/Content/Textures/RightMetaQuestTouchPro_Normal.uasset b/Plugins/MetaXR/Content/Textures/RightMetaQuestTouchPro_Normal.uasset deleted file mode 100644 index fb7d279..0000000 --- a/Plugins/MetaXR/Content/Textures/RightMetaQuestTouchPro_Normal.uasset +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:5abf3f6a4991c65e934ab3aa3498b68a8ee89558e3f8262141951e9ee4a78309 -size 2405558 diff --git a/Plugins/MetaXR/Content/Textures/T_BlobShadow.uasset b/Plugins/MetaXR/Content/Textures/T_BlobShadow.uasset deleted file mode 100644 index fa408dd..0000000 --- a/Plugins/MetaXR/Content/Textures/T_BlobShadow.uasset +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:a90e6c8063061ec52beec4427bb4af611b21c5bda11117048bbed5da62ba9124 -size 16940 diff --git a/Plugins/MetaXR/Content/Textures/TouchForQuest2Material_Roughness.uasset b/Plugins/MetaXR/Content/Textures/TouchForQuest2Material_Roughness.uasset deleted file mode 100644 index 7aa165f..0000000 --- a/Plugins/MetaXR/Content/Textures/TouchForQuest2Material_Roughness.uasset +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:41c13554ad2a5d4ebc96841e1427a5696b4533e365c4b2d81881a0f1fde38af6 -size 97016 diff --git a/Plugins/MetaXR/Content/Textures/TouchForQuest2_Color.uasset b/Plugins/MetaXR/Content/Textures/TouchForQuest2_Color.uasset deleted file mode 100644 index c84c3db..0000000 --- a/Plugins/MetaXR/Content/Textures/TouchForQuest2_Color.uasset +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:c6c2fc5d9188597d6570a93d484781ceddd1ee62625e7a1ea1aba49e4ca4dd03 -size 470761 diff --git a/Plugins/MetaXR/Content/Textures/TouchForQuestRiftSController_albedo.uasset b/Plugins/MetaXR/Content/Textures/TouchForQuestRiftSController_albedo.uasset deleted file mode 100644 index d4211c2..0000000 --- a/Plugins/MetaXR/Content/Textures/TouchForQuestRiftSController_albedo.uasset +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:e02ac4d4c3d1ad7fbdbc0132d47b5beee52d8cf4d050480847fda855ff69bd0e -size 2601539 diff --git a/Plugins/MetaXR/OculusXR.uplugin b/Plugins/MetaXR/OculusXR.uplugin deleted file mode 100644 index 0ef362c..0000000 --- a/Plugins/MetaXR/OculusXR.uplugin +++ /dev/null @@ -1,184 +0,0 @@ -{ - "FileVersion": 3, - "Version": 1, - "VersionName": "1.108.0", - "FriendlyName": "Meta XR", - "Description": "Support for Meta Quest headsets and controllers", - "Category": "Virtual Reality", - "CreatedBy": "Meta Platforms, Inc.", - "CreatedByURL": "https://www.meta.com/", - "DocsURL": "https://developer.oculus.com/documentation/unreal/latest/concepts/unreal-engine/", - "MarketplaceURL": "com.epicgames.launcher://ue/marketplace/product/8313d8d7e7cf4e03a33e79eb757bccba", - "SupportURL": "https://forums.oculusvr.com/developer", - "EngineVersion": "5.5.0", - "CanContainContent": true, - "Installed": true, - "SupportedTargetPlatforms": [ - "Win64", - "Android" - ], - "Modules": [ - { - "Name": "OculusXRHMD", - "Type": "Runtime", - "LoadingPhase": "PostConfigInit", - "PlatformAllowList": [ - "Win64", - "Android" - ] - }, - { - "Name": "OculusXRInput", - "Type": "Runtime", - "LoadingPhase": "PostConfigInit", - "PlatformAllowList": [ - "Win64", - "Android" - ] - }, - { - "Name": "OculusXRMR", - "Type": "Runtime", - "LoadingPhase": "PostEngineInit", - "PlatformAllowList": [ - "Win64", - "Android" - ] - }, - { - "Name": "OculusXRAsyncRequest", - "Type": "Runtime", - "LoadingPhase": "PostEngineInit", - "PlatformAllowList": [ - "Win64", - "Android" - ] - }, - { - "Name": "OculusXRAnchors", - "Type": "Runtime", - "LoadingPhase": "PostConfigInit", - "PlatformAllowList": [ - "Win64", - "Android" - ] - }, - { - "Name": "OculusXRScene", - "Type": "Runtime", - "LoadingPhase": "PostConfigInit", - "PlatformAllowList": [ - "Win64", - "Android" - ] - }, - { - "Name": "OculusXRMovement", - "Type": "Runtime", - "LoadingPhase": "PostConfigInit", - "PlatformAllowList": [ - "Win64", - "Android" - ] - }, - { - "Name": "OculusXREyeTracker", - "Type": "Runtime", - "LoadingPhase": "Default", - "PlatformAllowList": [ - "Win64", - "Android" - ] - }, - { - "Name": "OculusXREditor", - "Type": "Editor", - "LoadingPhase": "Default", - "PlatformAllowList": [ - "Win64" - ] - }, - { - "Name": "OculusXRProjectSetupTool", - "Type": "Editor", - "LoadingPhase": "PostEngineInit", - "PlatformAllowList": [ - "Win64" - ] - }, - { - "Name": "OculusXRUncookedOnly", - "Type": "UncookedOnly", - "LoadingPhase": "Default", - "PlatformAllowList": [ - "Win64", - "Android" - ] - }, - { - "Name": "OculusXRPassthrough", - "Type": "Runtime", - "LoadingPhase": "PostConfigInit", - "PlatformAllowList": [ - "Win64", - "Android" - ] - }, - { - "Name": "MRUtilityKit", - "Type": "Runtime", - "LoadingPhase": "PostEngineInit", - "PlatformAllowList": [ - "Win64", - "Android" - ] - }, - { - "Name": "MRUtilityKitEditor", - "Type": "Editor", - "LoadingPhase": "PostEngineInit", - "PlatformAllowList": [ - "Win64" - ] - }, - { - "Name": "OculusXRColocation", - "Type": "Runtime", - "LoadingPhase": "PostConfigInit", - "PlatformAllowList": [ - "Win64", - "Android" - ] - } - ], - "Plugins": [ - { - "Name": "XRBase", - "Enabled": true - }, - { - "Name": "EnhancedInput", - "Enabled": true - }, - { - "Name": "ProceduralMeshComponent", - "Enabled": true - }, - { - "Name": "AndroidPermission", - "Enabled": true - }, - { - "Name": "LiveLink", - "Enabled": true - }, - { - "Name": "OpenXR", - "Enabled": true - }, - { - "Name": "PluginBrowser", - "Enabled": true - } - ] -} \ No newline at end of file diff --git a/Plugins/MetaXR/Resources/BugIcon.svg b/Plugins/MetaXR/Resources/BugIcon.svg deleted file mode 100644 index 953a282..0000000 --- a/Plugins/MetaXR/Resources/BugIcon.svg +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/Plugins/MetaXR/Resources/ButtonIcon_80x.png b/Plugins/MetaXR/Resources/ButtonIcon_80x.png deleted file mode 100644 index 352504a..0000000 --- a/Plugins/MetaXR/Resources/ButtonIcon_80x.png +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:10ec795f2657782e8e52d97f2c63f9ec5f7cdc02ca6236f0f7300068527ca834 -size 2332 diff --git a/Plugins/MetaXR/Resources/GreenDot.svg b/Plugins/MetaXR/Resources/GreenDot.svg deleted file mode 100644 index a62cbc8..0000000 --- a/Plugins/MetaXR/Resources/GreenDot.svg +++ /dev/null @@ -1,5 +0,0 @@ - - - - - diff --git a/Plugins/MetaXR/Resources/GreyDot.svg b/Plugins/MetaXR/Resources/GreyDot.svg deleted file mode 100644 index f1e3da4..0000000 --- a/Plugins/MetaXR/Resources/GreyDot.svg +++ /dev/null @@ -1,5 +0,0 @@ - - - - - diff --git a/Plugins/MetaXR/Resources/Icon128.png b/Plugins/MetaXR/Resources/Icon128.png deleted file mode 100644 index 17bad82..0000000 --- a/Plugins/MetaXR/Resources/Icon128.png +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:b6d55c2205e75a8f7ef23b37d6dfe0f4314042b56ab297c67676d1342cf705c3 -size 4209 diff --git a/Plugins/MetaXR/Resources/MetaLogo.svg b/Plugins/MetaXR/Resources/MetaLogo.svg deleted file mode 100644 index 40b09f3..0000000 --- a/Plugins/MetaXR/Resources/MetaLogo.svg +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/Plugins/MetaXR/Resources/MetaQuestBackground.png b/Plugins/MetaXR/Resources/MetaQuestBackground.png deleted file mode 100644 index 4633a23..0000000 --- a/Plugins/MetaXR/Resources/MetaQuestBackground.png +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:334961564d63bd669cd5a01790fa253f01de10720066acce83e6a2ea8c2682c2 -size 113118 diff --git a/Plugins/MetaXR/Resources/PlatformDesktop.svg b/Plugins/MetaXR/Resources/PlatformDesktop.svg deleted file mode 100644 index f5ef916..0000000 --- a/Plugins/MetaXR/Resources/PlatformDesktop.svg +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/Plugins/MetaXR/Resources/PlatformQuest2.svg b/Plugins/MetaXR/Resources/PlatformQuest2.svg deleted file mode 100644 index 5ee91e3..0000000 --- a/Plugins/MetaXR/Resources/PlatformQuest2.svg +++ /dev/null @@ -1,7 +0,0 @@ - - - - - - - diff --git a/Plugins/MetaXR/Resources/PlatformQuest3.svg b/Plugins/MetaXR/Resources/PlatformQuest3.svg deleted file mode 100644 index 514c730..0000000 --- a/Plugins/MetaXR/Resources/PlatformQuest3.svg +++ /dev/null @@ -1,10 +0,0 @@ - - - - - - - - - - diff --git a/Plugins/MetaXR/Resources/RedDot.svg b/Plugins/MetaXR/Resources/RedDot.svg deleted file mode 100644 index 02baaaf..0000000 --- a/Plugins/MetaXR/Resources/RedDot.svg +++ /dev/null @@ -1,5 +0,0 @@ - - - - - diff --git a/Plugins/MetaXR/Resources/WhiteDot.svg b/Plugins/MetaXR/Resources/WhiteDot.svg deleted file mode 100644 index c179483..0000000 --- a/Plugins/MetaXR/Resources/WhiteDot.svg +++ /dev/null @@ -1,5 +0,0 @@ - - - - - diff --git a/Plugins/MetaXR/Resources/YellowDot.svg b/Plugins/MetaXR/Resources/YellowDot.svg deleted file mode 100644 index 8b3b5b2..0000000 --- a/Plugins/MetaXR/Resources/YellowDot.svg +++ /dev/null @@ -1,5 +0,0 @@ - - - - - diff --git a/Plugins/MetaXR/Shaders/Highlights.ush b/Plugins/MetaXR/Shaders/Highlights.ush deleted file mode 100644 index 3106a0d..0000000 --- a/Plugins/MetaXR/Shaders/Highlights.ush +++ /dev/null @@ -1,51 +0,0 @@ -#pragma once - -float3 MRUKHighlights(float3 TranslatedWorldPosition, MaterialFloat TotalLights, MaterialFloat3 PixelNormal, inout MaterialFloat TotalLightAlpha) -{ - float3 TotalLight = 0; - TotalLightAlpha = 0; - - UNROLL_N(2) - for (int i = 0; i < TotalLights; i++) - { - int groupID = 2 + i * 3; - half4 PositionParam = MaterialCollection0.Vectors[groupID]; - half4 DataParam = MaterialCollection0.Vectors[groupID + 1]; - half4 ColorParam = MaterialCollection0.Vectors[groupID + 2]; - - // LightWorldPosition = float3(PositionParam.xyz); - // float LightColor = float3(ColorParam.xyz); - // float LightInvRadius = DataParam.x; - // float LightIntensity = DataParam.y; - // float LightFalloffExponent = DataParam.z; - // bool LightInverseSquared = DataParam.w; - - half3 ToLight = PositionParam.xyz - TranslatedWorldPosition; - - half DistanceSqr = dot(ToLight, ToLight); - half3 L = ToLight * rsqrt(DistanceSqr); - - float LightMask = 0; - - FLATTEN - if (DataParam.w > 0.0) - { - LightMask = Square(saturate(1 - Square(DistanceSqr * Square(DataParam.x)))); - DataParam.y *= 0.0001; //fake intensity multiplier, dividing by 0.0001 because Inverse Squared Falloff require really high intensity - } - else - { - half3 WorldLightVector = ToLight * DataParam.x; - half NormalizeDistanceSquared = dot(WorldLightVector, WorldLightVector); - LightMask = pow(1.0f - saturate(NormalizeDistanceSquared), DataParam.z); - } - - half angle = saturate(dot(L, PixelNormal)); - LightMask *= angle; - - TotalLight += LightMask * ColorParam.xyz * DataParam.y; - TotalLightAlpha += LightMask; - } - - return TotalLight; -} diff --git a/Plugins/MetaXR/Shaders/JumpFlood.ush b/Plugins/MetaXR/Shaders/JumpFlood.ush deleted file mode 100644 index cbe1724..0000000 --- a/Plugins/MetaXR/Shaders/JumpFlood.ush +++ /dev/null @@ -1,32 +0,0 @@ -float4 MRUKJumpFlood(MaterialFloat2 UV, Texture2D Tex, SamplerState TexSampler , MaterialFloat StepSize) -{ - float BestDistance = 99999; - float BestDistance2 = 99999; - float2 BestUV = float2(-1,-1); - float2 BestUV2 = float2(-1.0, -1.0); - - for (int y = -1; y <= 1; ++y) - { - for (int x = -1; x <= 1; ++x) - { - float2 UVOff = UV + float2(x,y) * StepSize; - float2 TempVaule = Texture2DSample(Tex, TexSampler, UVOff).xy; - float Dist = length(TempVaule - UV); - if ((TempVaule.x >= 0) && (TempVaule.y >= 0) && (Dist < BestDistance)) - { - BestDistance = Dist; - BestUV = TempVaule; - } - - float2 TempVaule2 = Texture2DSample(Tex, TexSampler, UVOff).zw; - float Dist2 = length(TempVaule2 - UV); - if ((TempVaule2.x >= 0) && (TempVaule2.y >= 0) && (Dist2 < BestDistance2)) - { - BestDistance2 = Dist2; - BestUV2 = TempVaule2; - } - } - } - - return float4(BestUV.x, BestUV.y, BestUV2.x, BestUV2.y); -} diff --git a/Plugins/MetaXR/Shaders/Private/HardOcclusions.usf b/Plugins/MetaXR/Shaders/Private/HardOcclusions.usf deleted file mode 100644 index 9eaf21d..0000000 --- a/Plugins/MetaXR/Shaders/Private/HardOcclusions.usf +++ /dev/null @@ -1,36 +0,0 @@ -// Copyright Epic Games, Inc. All Rights Reserved. - -#include "/Engine/Public/Platform.ush" - -#define NUM_VIEWS 2 - -// PS Textures Parameters -Texture2DArray EnvironmentDepthTexture; -SamplerState EnvironmentDepthSampler; -float2 DepthFactors; -float4x4 ScreenToDepthMatrices[NUM_VIEWS]; -int DepthViewId; - -void HardOcclusionsPS( - noperspective float4 UVAndScreenPos : TEXCOORD0, - float4 SvPosition : SV_POSITION, -#if INSTANCED_STEREO - in uint InstanceId : SV_InstanceID, -#elif MOBILE_MULTI_VIEW - in uint ViewId : SV_ViewID, -#endif - out float4 OutColor : SV_Target0, - out float OutDepth : SV_DEPTH) -{ -#if INSTANCED_STEREO - uint ViewId = InstanceId & 1; -#elif !MOBILE_MULTI_VIEW - uint ViewId = DepthViewId; -#endif - float4 TexCoordH = mul(ScreenToDepthMatrices[ViewId], float4(UVAndScreenPos.x, 1.0f - UVAndScreenPos.y, 0.0, 1.0)); - float3 TexCoord = float3(TexCoordH.x / TexCoordH.w, TexCoordH.y / TexCoordH.w, ViewId); - float InputDepthEye = EnvironmentDepthTexture.Sample(EnvironmentDepthSampler, TexCoord).r; - float DepthEye = InputDepthEye * DepthFactors.x + DepthFactors.y; - OutDepth = DepthEye; - OutColor = float4(0.0, 0.0, 0.0, 1.0); -} diff --git a/Plugins/MetaXR/Shaders/Private/ScreenPSEnvironmentDepthMinMax.usf b/Plugins/MetaXR/Shaders/Private/ScreenPSEnvironmentDepthMinMax.usf deleted file mode 100644 index d957d49..0000000 --- a/Plugins/MetaXR/Shaders/Private/ScreenPSEnvironmentDepthMinMax.usf +++ /dev/null @@ -1,103 +0,0 @@ -// Copyright Epic Games, Inc. All Rights Reserved. - -#include "/Engine/Private/Common.ush" - -Texture2DArray InTexture; -SamplerState InTextureSampler; -#if !ENABLE_MULTI_VIEW -// Use shader constants on PC Link -int ArraySlice; -#endif - -void Main( - FScreenVertexOutput Input, -#if ENABLE_MULTI_VIEW - // Use Multi View on Mobile - uint ArraySlice : SV_ViewID, -#endif - out float4 OutColor : SV_Target0 - ) -{ - float3 Dimensions; - InTexture.GetDimensions(Dimensions.x, Dimensions.y, Dimensions.z); - float2 onePixelOffset = 1.0f / Dimensions.xy; - - const uint NUM_SAMPLES = 4U; - const float2 offsets[NUM_SAMPLES] = { - float2(-1.0f, 1.0f), - float2(1.0f, 1.0f), - float2(-1.0f, -1.0f), - float2(1.0f, -1.0f) - }; - float4 depths[NUM_SAMPLES]; - float minDepth = 1.0f; - float maxDepth = 0.0f; - float depthSum = 0.0f; - - // Find the local min and max, and collect all depth samples in the sampling grid - uint i; - UNROLL - for (i = 0U; i < NUM_SAMPLES; ++i) { - float2 uvSample = Input.UV + (offsets[i] + 0.5f) * onePixelOffset; - float4 depth4 = InTexture.Gather(InTextureSampler, float3(uvSample, ArraySlice)); - - depthSum += dot(depth4, float4(0.25f, 0.25, 0.25, 0.25)); - - float localMax = max(max(depth4.x, depth4.y), max(depth4.z, depth4.w)); - float localMin = min(min(depth4.x, depth4.y), min(depth4.z, depth4.w)); - - maxDepth = max(maxDepth, localMax); - minDepth = min(minDepth, localMin); - - depths[i] = depth4; - } - - float maxSumDepth = 0.0f; - float minSumDepth = 0.0f; - float maxSumCount = 0.0f; - float minSumCount = 0.0f; - // Model the entire neighborhood as a bimodal distribution aggregated around the minimum and maximum values. - // Each side of the distribution (min and max) accepts values in a multiplicative range with respect to metric depth - // This will therefore aggregate all depth values until a maximum slope (depending also on the depth resolution) - static const float kMaxMetricDepthThrMultiplier = 0.85f; - static const float kMinMetricDepthThrMultiplier = 1.15f; - // Compute thresholds in window depth space: - // Dmetric = 1 / (1 - Dwin) - // Tmetric = kMultiplier * Dmetric - // Twin = 1 - 1/Tmetric - // Therefore: - // Twin = 1 - 1/(kMultiplier * (1 / (1 - Dwin))) = 1 - (1 - Dwin) / kMultiplier = 1 - 1/kMultiplier + Dwin / kMultiplier - float depthThrMax = (1.0f - 1.0f / kMaxMetricDepthThrMultiplier) + maxDepth * (1.0f / kMaxMetricDepthThrMultiplier); - float depthThrMin = (1.0f - 1.0f / kMinMetricDepthThrMultiplier) + minDepth * (1.0f / kMinMetricDepthThrMultiplier); - - - float avg = depthSum * (1.0f / float(NUM_SAMPLES)); - if (depthThrMax < minDepth && depthThrMin > maxDepth) { - // Degenerate case: the entire neighborhood is within min-max thresholds for averaging - // therefore minAvg == maxAvg == avg. - // Directly output the encoded fragColor as: - // (1 - minAvg, 1 - maxAvg, avg - minAvg, maxAvg - minAvg) - OutColor = float4(1.0f - avg, 1.0f - avg, 0.0f, 0.0f); - } else { - // Compute average depths around the minimum and maximum values - UNROLL - for (i = 0U; i < NUM_SAMPLES; ++i) { - float4 maxMask = (depths[i] >= float4(depthThrMax, depthThrMax, depthThrMax, depthThrMax)); - float4 minMask = (depths[i] <= float4(depthThrMin, depthThrMin, depthThrMin, depthThrMin)); - minSumDepth += dot(minMask, depths[i]); - minSumCount += dot(minMask, float4(1.0f, 1.0f, 1.0f, 1.0f)); - maxSumDepth += dot(maxMask, depths[i]); - maxSumCount += dot(maxMask, float4(1.0f, 1.0f, 1.0f, 1.0f)); - } - - float minAvg = minSumDepth / minSumCount; - float maxAvg = maxSumDepth / maxSumCount; - - // Encoding the depth as a 4-channel RGBA image for improved numerical stability. - // minAvg and maxAvg are encoded in inverse range to use more floating point precision in the far field. - // The interpolation ratio between min and max is computed as: (avg - minAvg) / (maxAvg - minAvg) - // We can perform the differences here at higher precision - // We let the division later to the occlusion shader to preserve the bilinear interpolation properties as with minAvg and maxAvg. - OutColor = float4(1.0f - minAvg, 1.0f - maxAvg, avg - minAvg, maxAvg - minAvg); - } -} diff --git a/Plugins/MetaXR/Shaders/Private/ScreenPixelShaderArraySlice.usf b/Plugins/MetaXR/Shaders/Private/ScreenPixelShaderArraySlice.usf deleted file mode 100644 index 9c471cb..0000000 --- a/Plugins/MetaXR/Shaders/Private/ScreenPixelShaderArraySlice.usf +++ /dev/null @@ -1,25 +0,0 @@ -// Copyright Epic Games, Inc. All Rights Reserved. - -#include "/Engine/Private/Common.ush" - -Texture2DArray InTexture; -SamplerState InTextureSampler; -int MipLevel; -int ArraySlice; - -void MainMipLevel( - FScreenVertexOutput Input, - out float4 OutColor : SV_Target0 - ) -{ - OutColor = InTexture.SampleLevel(InTextureSampler, float3(Input.UV, ArraySlice), MipLevel); -} - -void MainsRGBSourceMipLevel( - FScreenVertexOutput Input, - out float4 OutColor : SV_Target0 - ) -{ - OutColor = InTexture.SampleLevel(InTextureSampler, float3(Input.UV, ArraySlice), MipLevel); - OutColor.rgb = pow( OutColor.rgb, 1.0f / 2.2f ); -} diff --git a/Plugins/MetaXR/Source/MRUtilityKit/MRUtilityKit.Build.cs b/Plugins/MetaXR/Source/MRUtilityKit/MRUtilityKit.Build.cs deleted file mode 100644 index e117c51..0000000 --- a/Plugins/MetaXR/Source/MRUtilityKit/MRUtilityKit.Build.cs +++ /dev/null @@ -1,53 +0,0 @@ -// Copyright (c) Meta Platforms, Inc. and affiliates. - -using UnrealBuildTool; - -public class MRUtilityKit : ModuleRules -{ - public MRUtilityKit(ReadOnlyTargetRules Target) : base(Target) - { - PCHUsage = ModuleRules.PCHUsageMode.UseExplicitOrSharedPCHs; - - bUseUnity = true; - - PublicDependencyModuleNames.AddRange( - new string[] - { - "Core", - "RenderCore", - "Projects" - }); - - - if (Target.Version.MajorVersion > 5 || (Target.Version.MajorVersion == 5 && Target.Version.MinorVersion >= 3)) - { - PublicDependencyModuleNames.AddRange( - new string[] - { - "XRBase", - }); - } - - - PrivateDependencyModuleNames.AddRange( - new string[] - { - "CoreUObject", - "Engine", - "Slate", - "SlateCore", - "OculusXRHMD", - "OculusXRAnchors", - "OculusXRScene", - "Json", - "ProceduralMeshComponent", - "HeadMountedDisplay", - "MRUtilityKitShared", - }); - - if (Target.bBuildEditor == true) - { - PrivateDependencyModuleNames.Add("UnrealEd"); - } - } -} diff --git a/Plugins/MetaXR/Source/MRUtilityKit/Private/Generated/MRUtilityKitShared.h b/Plugins/MetaXR/Source/MRUtilityKit/Private/Generated/MRUtilityKitShared.h deleted file mode 100644 index f94fdae..0000000 --- a/Plugins/MetaXR/Source/MRUtilityKit/Private/Generated/MRUtilityKitShared.h +++ /dev/null @@ -1,386 +0,0 @@ -// Copyright (c) Meta Platforms, Inc. and affiliates. - -// @generated by `buck2 run //arvr/projects/mixedreality/libraries/mrutilitykit:build_and_deploy unreal` - -#pragma once - -#include -#include -#include -#include "CoreTypes.h" -#include "Math/UnrealMath.h" -#include "Math/MathFwd.h" - -struct MRUKShared -{ - static MRUKShared* GetInstance() { return Instance; } - - static void LoadMRUKSharedLibrary(); - static void FreeMRUKSharedLibrary(); - - struct MrukSceneAnchor; - - struct MrukRoomAnchor; - - struct MrukUuid; - - enum MrukSceneModel - { - MRUK_SCENE_MODEL_V2_FALLBACK_V1, - MRUK_SCENE_MODEL_V1, - MRUK_SCENE_MODEL_V2, - }; - - enum MrukLogLevel - { - MRUK_LOG_LEVEL_DEBUG, - MRUK_LOG_LEVEL_INFO, - MRUK_LOG_LEVEL_WARN, - MRUK_LOG_LEVEL_ERROR, - }; - - enum MrukResult - { - MRUK_SUCCESS, - MRUK_ERROR_INVALID_ARGS, - MRUK_ERROR_UNKNOWN, - MRUK_ERROR_INTERNAL, - MRUK_ERROR_DISCOVERY_ONGOING, - MRUK_ERROR_INVALID_JSON, - MRUK_ERROR_NO_ROOMS_FOUND, - MRUK_ERROR_INSUFFICIENT_RESOURCES, - MRUK_ERROR_STORAGE_AT_CAPACITY, - MRUK_ERROR_INSUFFICIENT_VIEW, - MRUK_ERROR_PERMISSION_INSUFFICIENT, - MRUK_ERROR_RATE_LIMITED, - MRUK_ERROR_TOO_DARK, - MRUK_ERROR_TOO_BRIGHT, - }; - - enum MrukSurfaceType - { - MRUK_SURFACE_TYPE_NONE, - MRUK_SURFACE_TYPE_PLANE, - MRUK_SURFACE_TYPE_VOLUME, - MRUK_SURFACE_TYPE_MESH, - MRUK_SURFACE_TYPE_ALL, - }; - - typedef void (*LogPrinter)(MrukLogLevel logLevel, const char* message); - - typedef void (*MrukOnPreRoomAnchorAdded)(const MrukRoomAnchor* roomAnchor, void* userContext); - - typedef void (*MrukOnRoomAnchorAdded)(const MrukRoomAnchor* roomAnchor, void* userContext); - - typedef void (*MrukOnRoomAnchorUpdated)(const MrukRoomAnchor* roomAnchor, const MrukUuid* oldRoomAnchorUuid, void* userContext); - - typedef void (*MrukOnRoomAnchorRemoved)(const MrukRoomAnchor* roomAnchor, void* userContext); - - typedef void (*MrukOnSceneAnchorAdded)(const MrukSceneAnchor* sceneAnchor, void* userContext); - - typedef void (*MrukOnSceneAnchorUpdated)(const MrukSceneAnchor* sceneAnchor, void* userContext); - - typedef void (*MrukOnSceneAnchorRemoved)(const MrukSceneAnchor* sceneAnchor, void* userContext); - - typedef void (*MrukOnDiscoveryFinished)(MrukResult result, void* userContext); - - struct MrukQuatf - { - float x; - float y; - float z; - float w; - }; - - struct MrukPosef - { - FVector3f position; - MrukQuatf rotation; - }; - - struct MrukPolygon2f - { - const FVector2f* points; - uint32_t numPoints; - }; - - struct MrukMesh2f - { - FVector2f* vertices; - uint32_t numVertices; - uint32_t* indices; - uint32_t numIndices; - }; - - struct MrukMesh3f - { - FVector3f* vertices; - uint32_t numVertices; - uint32_t* indices; - uint32_t numIndices; - }; - - struct MrukUuid - { - uint64_t part1; - uint64_t part2; - }; - - struct MrukVolume - { - FVector3f min; - FVector3f max; - }; - - struct MrukPlane - { - float x; - float y; - float width; - float height; - }; - - struct MrukSceneAnchor - { - uint64_t space; - MrukUuid uuid; - MrukUuid roomUuid; - MrukPosef pose; - MrukVolume volume; - MrukPlane plane; - char** semanticLabels; - FVector2f* planeBoundary; - uint32_t* globalMeshIndices; - FVector3f* globalMeshPositions; - uint32_t semanticLabelsCount; - uint32_t planeBoundaryCount; - uint32_t globalMeshIndicesCount; - uint32_t globalMeshPositionsCount; - bool hasVolume; - bool hasPlane; - }; - - struct MrukRoomAnchor - { - uint64_t space; - MrukUuid uuid; - }; - - struct MrukEventListener - { - MrukOnPreRoomAnchorAdded onPreRoomAnchorAdded; - MrukOnRoomAnchorAdded onRoomAnchorAdded; - MrukOnRoomAnchorUpdated onRoomAnchorUpdated; - MrukOnRoomAnchorRemoved onRoomAnchorRemoved; - MrukOnSceneAnchorAdded onSceneAnchorAdded; - MrukOnSceneAnchorUpdated onSceneAnchorUpdated; - MrukOnSceneAnchorRemoved onSceneAnchorRemoved; - MrukOnDiscoveryFinished onDiscoveryFinished; - void* userContext; - }; - - struct MrukHit - { - MrukUuid roomAnchorUuid; - MrukUuid sceneAnchorUuid; - float hitDistance; - FVector3f hitPosition; - FVector3f hitNormal; - }; - - void (*SetLogPrinter)(LogPrinter printer); - - /** - * Create the global anchor store with a external OpenXR instance and session. - * This should only be called once on application startup. - * Make sure to hook up the ContextOnOpenXrEvent() function as well. - * If the context is not needed anymore it should be destroyed with ContextDestroy() to free - * resources. - */ - MrukResult (*AnchorStoreCreate)(uint64_t xrInstance, uint64_t xrSession, void* xrInstanceProcAddrFunc, uint64_t baseSpace); - MrukResult (*AnchorStoreCreateWithoutOpenXr)(); - - /** - * Destroy the global anchor store - * This should only be called once on application shutdown. - */ - void (*AnchorStoreDestroy)(); - - /** - * If the base space changes after initialization, this function should be called to update the - * base space. - */ - void (*AnchorStoreSetBaseSpace)(uint64_t baseSpace); - - /** - * Start anchor discovery in the anchor store - */ - MrukResult (*AnchorStoreStartDiscovery)(bool shouldRemoveMissingRooms, MrukSceneModel sceneModel); - - /** - * Load the scene from a json string - */ - MrukResult (*AnchorStoreLoadSceneFromJson)(const char* jsonString, bool shouldRemoveMissingRooms, MrukSceneModel sceneModel); - - /** - * Save the scene to a json string. - * @return The serialized JSON string. This string must be freed with FreeAnchorStoreJson after use! - */ - const char* (*AnchorStoreSaveSceneToJson)(); - - /** - * Free the json string returned by AnchorStoreSaveSceneToJson. - * @param[in] jsonString The JSON string to free. - */ - void (*AnchorStoreFreeJson)(const char* jsonString); - - /** - * Clear and remove all rooms in the anchor store. - */ - void (*AnchorStoreClearRooms)(); - - /** - * Clear and remove the room that matches the given uuid. - */ - void (*AnchorStoreClearRoom)(MrukUuid roomUuid); - - /** - * Allows to forward OpenXR events from the engine into the shared library - */ - void (*AnchorStoreOnOpenXrEvent)(void* baseEventHeader); - - /** - * Needs to be called every tick by the engine. - */ - void (*AnchorStoreTick)(uint64_t nextPredictedDisplayTime); - void (*AnchorStoreRegisterEventListener)(MrukEventListener listener); - - /** - * Cast a ray against all anchors in the room and return the first hit. - */ - bool (*AnchorStoreRaycastRoom)(MrukUuid roomUuid, FVector3f origin, FVector3f direction, float maxDistance, uint32_t surfaceType, MrukHit* outHit); - - /** - * Cast a ray against all anchors in the room and return all hits along the ray. - */ - bool (*AnchorStoreRaycastRoomAll)(MrukUuid roomUuid, FVector3f origin, FVector3f direction, float maxDistance, uint32_t surfaceType, MrukHit* outHits, uint32_t* outHitsCount); - bool (*AnchorStoreIsDiscoveryRunning)(); - - /** - * Add two vectors together. This is implemented as a test to ensure the native shared - * library is working correctly. - * - * @param[in] a The first vector. - * @param[in] b The second vector. - * @return The sum of the two vectors. - */ - FVector3f (*AddVectors)(FVector3f a, FVector3f b); - - /** - * Triangulate a polygon with holes, any winding order works. The first polyline defines the main - * polygon. Following polylines define holes. This function will allocate memory for the vertices - * and indices. You *MUST* call FreeMesh() when you are done with it or you will leak memory. - * - * @param[in] polygons The polygon to triangulate. - * @param[in] numPolygons The number of polygons in the array. - * @return mesh The triangulated mesh. - */ - MrukMesh2f (*TriangulatePolygon)(const MrukPolygon2f* polygons, uint32_t numPolygons); - - /** - * Free the memory allocated by TriangulatePolygon. - * - * @param[in] mesh The mesh to free. - */ - void (*FreeMesh)(MrukMesh2f* mesh); - - /** - * Compute the mesh segmentation for a given set of vertices, indices and segmentation points. - * You *MUST* call FreeMeshSegmentation() on the meshSegments array when you are done with it or you - * will leak memory. - * - * @param[in] vertices The mesh vertices. - * @param[in] numVertices The number of vertices in the mesh. - * @param[in] indices The mesh indices. - * @param[in] numIndices The number of indices in the mesh. - * @param[in] segmentationPoints The points that should be used to calculate the segments. - * @param[in] numSegmentationPoints The number of segmentation points. - * @param[in] reservedMin The minimum bounding box for the reserved segment. - * @param[in] reservedMax The maximum bounding box for the reserved segment. - * @param[out] meshSegments The resulting segments. - * @param[out] numSegments The number of segments in the resulting array. - * @param[out] reservedSegment The segment that is inside the reserved bounding box. - */ - MrukResult (*ComputeMeshSegmentation)(const FVector3f* vertices, uint32_t numVertices, const uint32_t* indices, uint32_t numIndices, const FVector3f* segmentationPoints, uint32_t numSegmentationPoints, FVector3f reservedMin, FVector3f reservedMax, MrukMesh3f** meshSegments, uint32_t* numSegments, MrukMesh3f* reservedSegment); - - /** - * Free the memory allocated by ComputeMeshSegmentation. - * - * @param[in] meshSegments The array of segments to free. - * @param[in] numSegments The number of segments in the array. - * @param[in] reservedSegment The reserved segment to free. - */ - void (*FreeMeshSegmentation)(const MrukMesh3f* meshSegments, uint32_t numSegments, MrukMesh3f* reservedSegment); - -private: - - void LoadNativeFunctions() - { - SetLogPrinter = reinterpret_cast(LoadFunction(TEXT("SetLogPrinter"))); - AnchorStoreCreate = reinterpret_cast(LoadFunction(TEXT("AnchorStoreCreate"))); - AnchorStoreCreateWithoutOpenXr = reinterpret_cast(LoadFunction(TEXT("AnchorStoreCreateWithoutOpenXr"))); - AnchorStoreDestroy = reinterpret_cast(LoadFunction(TEXT("AnchorStoreDestroy"))); - AnchorStoreSetBaseSpace = reinterpret_cast(LoadFunction(TEXT("AnchorStoreSetBaseSpace"))); - AnchorStoreStartDiscovery = reinterpret_cast(LoadFunction(TEXT("AnchorStoreStartDiscovery"))); - AnchorStoreLoadSceneFromJson = reinterpret_cast(LoadFunction(TEXT("AnchorStoreLoadSceneFromJson"))); - AnchorStoreSaveSceneToJson = reinterpret_cast(LoadFunction(TEXT("AnchorStoreSaveSceneToJson"))); - AnchorStoreFreeJson = reinterpret_cast(LoadFunction(TEXT("AnchorStoreFreeJson"))); - AnchorStoreClearRooms = reinterpret_cast(LoadFunction(TEXT("AnchorStoreClearRooms"))); - AnchorStoreClearRoom = reinterpret_cast(LoadFunction(TEXT("AnchorStoreClearRoom"))); - AnchorStoreOnOpenXrEvent = reinterpret_cast(LoadFunction(TEXT("AnchorStoreOnOpenXrEvent"))); - AnchorStoreTick = reinterpret_cast(LoadFunction(TEXT("AnchorStoreTick"))); - AnchorStoreRegisterEventListener = reinterpret_cast(LoadFunction(TEXT("AnchorStoreRegisterEventListener"))); - AnchorStoreRaycastRoom = reinterpret_cast(LoadFunction(TEXT("AnchorStoreRaycastRoom"))); - AnchorStoreRaycastRoomAll = reinterpret_cast(LoadFunction(TEXT("AnchorStoreRaycastRoomAll"))); - AnchorStoreIsDiscoveryRunning = reinterpret_cast(LoadFunction(TEXT("AnchorStoreIsDiscoveryRunning"))); - AddVectors = reinterpret_cast(LoadFunction(TEXT("AddVectors"))); - TriangulatePolygon = reinterpret_cast(LoadFunction(TEXT("TriangulatePolygon"))); - FreeMesh = reinterpret_cast(LoadFunction(TEXT("FreeMesh"))); - ComputeMeshSegmentation = reinterpret_cast(LoadFunction(TEXT("ComputeMeshSegmentation"))); - FreeMeshSegmentation = reinterpret_cast(LoadFunction(TEXT("FreeMeshSegmentation"))); - } - - void UnloadNativeFunctions() - { - SetLogPrinter = nullptr; - AnchorStoreCreate = nullptr; - AnchorStoreCreateWithoutOpenXr = nullptr; - AnchorStoreDestroy = nullptr; - AnchorStoreSetBaseSpace = nullptr; - AnchorStoreStartDiscovery = nullptr; - AnchorStoreLoadSceneFromJson = nullptr; - AnchorStoreSaveSceneToJson = nullptr; - AnchorStoreFreeJson = nullptr; - AnchorStoreClearRooms = nullptr; - AnchorStoreClearRoom = nullptr; - AnchorStoreOnOpenXrEvent = nullptr; - AnchorStoreTick = nullptr; - AnchorStoreRegisterEventListener = nullptr; - AnchorStoreRaycastRoom = nullptr; - AnchorStoreRaycastRoomAll = nullptr; - AnchorStoreIsDiscoveryRunning = nullptr; - AddVectors = nullptr; - TriangulatePolygon = nullptr; - FreeMesh = nullptr; - ComputeMeshSegmentation = nullptr; - FreeMeshSegmentation = nullptr; - } - - void* LoadFunction(const TCHAR* ProcName); - - static MRUKShared* Instance; - void* MRUKSharedHandle; - - MRUKShared(void* handle); - ~MRUKShared(); -}; diff --git a/Plugins/MetaXR/Source/MRUtilityKit/Private/MRUtilityKit.cpp b/Plugins/MetaXR/Source/MRUtilityKit/Private/MRUtilityKit.cpp deleted file mode 100644 index 32b6f53..0000000 --- a/Plugins/MetaXR/Source/MRUtilityKit/Private/MRUtilityKit.cpp +++ /dev/null @@ -1,84 +0,0 @@ -// Copyright (c) Meta Platforms, Inc. and affiliates. - -#include "MRUtilityKit.h" -#include "Interfaces/IPluginManager.h" -#include "Misc/Paths.h" -#include "ShaderCore.h" - -#if WITH_EDITOR -#include "ISettingsModule.h" -#endif // WITH_EDITOR - -#define LOCTEXT_NAMESPACE "FMRUKModule" - -DEFINE_LOG_CATEGORY(LogMRUK); - -const FString FMRUKLabels::Floor("FLOOR"); -const FString FMRUKLabels::WallFace("WALL_FACE"); -const FString FMRUKLabels::InvisibleWallFace("INVISIBLE_WALL_FACE"); -const FString FMRUKLabels::Ceiling("CEILING"); -const FString FMRUKLabels::DoorFrame("DOOR_FRAME"); -const FString FMRUKLabels::WindowFrame("WINDOW_FRAME"); -const FString FMRUKLabels::Couch("COUCH"); -const FString FMRUKLabels::Table("TABLE"); -const FString FMRUKLabels::Screen("SCREEN"); -const FString FMRUKLabels::Bed("BED"); -const FString FMRUKLabels::Lamp("LAMP"); -const FString FMRUKLabels::Plant("PLANT"); -const FString FMRUKLabels::Storage("STORAGE"); -const FString FMRUKLabels::WallArt("WALL_ART"); -const FString FMRUKLabels::GlobalMesh("GLOBAL_MESH"); -const FString FMRUKLabels::Other("OTHER"); - -bool FMRUKLabelFilter::PassesFilter(const TArray& Labels) const -{ - for (const auto& ExcludedLabel : ExcludedLabels) - { - if (Labels.Contains(ExcludedLabel)) - { - return false; - } - } - for (const auto& IncludedLabel : IncludedLabels) - { - if (Labels.Contains(IncludedLabel)) - { - return true; - } - } - return IncludedLabels.IsEmpty(); -} - -UMRUKSettings::UMRUKSettings(const FObjectInitializer& obj) -{ -} - -void FMRUKModule::StartupModule() -{ - // This code will execute after your module is loaded into memory; the exact timing is specified - // in the .uplugin file per-module -#if WITH_EDITOR - if (ISettingsModule* SettingsModule = FModuleManager::GetModulePtr("Settings")) - { - SettingsModule->RegisterSettings("Project", "Plugins", "MRUtilityKit", - LOCTEXT("RuntimeSettingsName", "Mixed Reality Utility Kit"), LOCTEXT("RuntimeSettingsDescription", "Configure the Mixed Reality Utility plugin"), - GetMutableDefault()); - } -#endif // WITH_EDITOR -} - -void FMRUKModule::ShutdownModule() -{ - // This function may be called during shutdown to clean up your module. For modules that support - // dynamic reloading, we call this function before unloading the module. -#if WITH_EDITOR - if (ISettingsModule* SettingsModule = FModuleManager::GetModulePtr("Settings")) - { - SettingsModule->UnregisterSettings("Project", "Plugins", "MRUtilityKit"); - } -#endif // WITH_EDITOR -} - -#undef LOCTEXT_NAMESPACE - -IMPLEMENT_MODULE(FMRUKModule, MRUtilityKit) diff --git a/Plugins/MetaXR/Source/MRUtilityKit/Private/MRUtilityKitAnchor.cpp b/Plugins/MetaXR/Source/MRUtilityKit/Private/MRUtilityKitAnchor.cpp deleted file mode 100644 index d21215f..0000000 --- a/Plugins/MetaXR/Source/MRUtilityKit/Private/MRUtilityKitAnchor.cpp +++ /dev/null @@ -1,889 +0,0 @@ -// Copyright (c) Meta Platforms, Inc. and affiliates. - -#include "MRUtilityKitAnchor.h" -#include "MRUtilityKit.h" -#include "MRUtilityKitBPLibrary.h" -#include "MRUtilityKitGeometry.h" -#include "MRUtilityKitSubsystem.h" -#include "MRUtilityKitSerializationHelpers.h" -#include "MRUtilityKitSeatsComponent.h" -#include "MRUtilityKitRoom.h" -#include "OculusXRAnchorTypes.h" -#include "Engine/World.h" - -#define LOCTEXT_NAMESPACE "MRUKAnchor" - -// #pragma optimize("", off) - -AMRUKAnchor::AMRUKAnchor(const FObjectInitializer& ObjectInitializer) - : Super(ObjectInitializer) -{ - // Create a scene component as root so we can attach spawned actors to it - RootComponent = CreateDefaultSubobject(TEXT("SceneComponent")); -} - -bool AMRUKAnchor::LoadFromData(UMRUKAnchorData* AnchorData) -{ - check(AnchorData); - - bool Changed = false; - - if (const auto Seat = GetComponentByClass(); Seat && !HasLabel(FMRUKLabels::Couch)) - { - Seat->UnregisterComponent(); - Seat->DestroyComponent(); - Changed = true; - } - - AnchorUUID = AnchorData->SpaceQuery.UUID; - SpaceHandle = AnchorData->SpaceQuery.Space; - - SetActorTransform(AnchorData->Transform, false, nullptr, ETeleportType::ResetPhysics); - const auto NewSemanticClassifications = AnchorData->SemanticClassifications; - if (NewSemanticClassifications != SemanticClassifications) - { - Changed = true; - } - SemanticClassifications = NewSemanticClassifications; - - const FString Semantics = FString::Join(SemanticClassifications, TEXT("-")); - UE_LOG(LogMRUK, Log, TEXT("SpatialAnchor label is %s"), *Semantics); - - if (PlaneBounds != AnchorData->PlaneBounds) - { - Changed = true; - } - PlaneBounds = AnchorData->PlaneBounds; - PlaneBoundary2D = AnchorData->PlaneBoundary2D; - - if (VolumeBounds != AnchorData->VolumeBounds) - { - Changed = true; - } - VolumeBounds = AnchorData->VolumeBounds; - - if (Changed) - { - if (ProceduralMeshComponent) - { - ProceduralMeshComponent->UnregisterComponent(); - ProceduralMeshComponent->DestroyComponent(); - ProceduralMeshComponent = nullptr; - } - - if (CachedMesh.IsSet()) - { - CachedMesh.GetValue().Clear(); - } - } - - return Changed; -} - -bool AMRUKAnchor::IsPositionInBoundary(const FVector2D& Position) -{ - if (PlaneBoundary2D.IsEmpty()) - { - return false; - } - - int Intersections = 0; - - for (int i = 1; i <= PlaneBoundary2D.Num(); i++) - { - const FVector2D P1 = PlaneBoundary2D[i - 1]; - const FVector2D P2 = PlaneBoundary2D[i % PlaneBoundary2D.Num()]; - if (Position.Y > FMath::Min(P1.Y, P2.Y) && Position.Y <= FMath::Max(P1.Y, P2.Y)) - { - if (Position.X <= FMath::Max(P1.X, P2.X)) - { - if (P1.Y != P2.Y) - { - const auto Frac = (Position.Y - P1.Y) / (P2.Y - P1.Y); - const auto XIntersection = P1.X + Frac * (P2.X - P1.X); - if (P1.X == P2.X || Position.X <= XIntersection) - { - Intersections++; - } - } - } - } - } - - return Intersections % 2 == 1; -} - -FVector AMRUKAnchor::GenerateRandomPositionOnPlane() -{ - return GenerateRandomPositionOnPlaneFromStream(FRandomStream(NAME_None)); -} - -FVector AMRUKAnchor::GenerateRandomPositionOnPlaneFromStream(const FRandomStream& RandomStream) -{ - if (PlaneBoundary2D.IsEmpty()) - { - return FVector::ZeroVector; - } - - // Cache the mesh so that if the function is called multiple times it will re-use the previously triangulated mesh. - if (!CachedMesh.IsSet()) - { - TriangulatedMeshCache Mesh; - - TArray PlaneBoundary; - PlaneBoundary.Reserve(PlaneBoundary2D.Num()); - for (const auto Point : PlaneBoundary2D) - { - PlaneBoundary.Push(FVector2f(Point)); - } - - MRUKTriangulatePolygon({ PlaneBoundary }, Mesh.Vertices, Mesh.Triangles); - - // Compute the area of each triangle and the total surface area of the mesh - Mesh.Areas.Reserve(Mesh.Triangles.Num() / 3); - Mesh.TotalArea = 0.0f; - for (int i = 0; i < Mesh.Triangles.Num(); i += 3) - { - const auto I0 = Mesh.Triangles[i]; - const auto I1 = Mesh.Triangles[i + 1]; - const auto I2 = Mesh.Triangles[i + 2]; - auto V0 = Mesh.Vertices[I0]; - auto V1 = Mesh.Vertices[I1]; - auto V2 = Mesh.Vertices[I2]; - const auto Cross = FVector2D::CrossProduct(V1 - V0, V2 - V0); - float Area = Cross * 0.5f; - Mesh.TotalArea += Area; - Mesh.Areas.Add(Area); - } - CachedMesh.Emplace(MoveTemp(Mesh)); - } - - const auto& [Vertices, Triangles, Areas, TotalArea] = CachedMesh.GetValue(); - - // Pick a random triangle weighted by surface area (triangles with larger surface - // area have more chance of being chosen) - auto Rand = RandomStream.FRandRange(0.0f, TotalArea); - int TriangleIndex = 0; - for (; TriangleIndex < Areas.Num() - 1; ++TriangleIndex) - { - Rand -= Areas[TriangleIndex]; - if (Rand <= 0.0f) - { - break; - } - } - - // Get the vertices of the chosen triangle - const auto I0 = Triangles[TriangleIndex * 3]; - const auto I1 = Triangles[TriangleIndex * 3 + 1]; - const auto I2 = Triangles[TriangleIndex * 3 + 2]; - const auto V0 = FVector(0.0, Vertices[I0].X, Vertices[I0].Y); - const auto V1 = FVector(0.0, Vertices[I1].X, Vertices[I1].Y); - const auto V2 = FVector(0.0, Vertices[I2].X, Vertices[I2].Y); - - // Calculate a random point on that triangle - float U = RandomStream.FRandRange(0.0f, 1.0f); - float V = RandomStream.FRandRange(0.0f, 1.0f); - if (U + V > 1.0f) - { - if (U > V) - { - U = 1.0f - U; - } - else - { - V = 1.0f - V; - } - } - return V0 + U * (V1 - V0) + V * (V2 - V0); -} - -bool AMRUKAnchor::Raycast(const FVector& Origin, const FVector& Direction, float MaxDist, FMRUKHit& OutHit, int32 ComponentTypes) -{ - // If this anchor is the global mesh test against it - if ((ComponentTypes & static_cast(EMRUKComponentType::Mesh)) != 0 && this == Room->GlobalMeshAnchor) - { - FHitResult GlobalMeshOutHit{}; - float Dist = MaxDist; - if (MaxDist <= 0.0) - { - const float WorldToMeters = GetWorld()->GetWorldSettings()->WorldToMeters; - Dist = WorldToMeters * 1024; // 1024 m should cover every scene - } - if (ActorLineTraceSingle(GlobalMeshOutHit, Origin, Origin + Direction * Dist, ECollisionChannel::ECC_WorldDynamic, FCollisionQueryParams::DefaultQueryParam)) - { - OutHit.HitPosition = GlobalMeshOutHit.Location; - OutHit.HitNormal = GlobalMeshOutHit.Normal; - OutHit.HitDistance = GlobalMeshOutHit.Distance; - return true; - } - return false; - } - - auto Transform = GetTransform(); - // Transform the ray into local space - auto InverseTransform = Transform.Inverse(); - const auto OriginLocal = InverseTransform.TransformPositionNoScale(Origin); - const auto DirectionLocal = InverseTransform.TransformVectorNoScale(Direction); - FRay LocalRay = FRay(OriginLocal, DirectionLocal); - bool FoundHit = false; - - // If this anchor has a plane, hit test against it - if ((ComponentTypes & static_cast(EMRUKComponentType::Plane)) != 0 && PlaneBounds.bIsValid && RayCastPlane(LocalRay, MaxDist, OutHit)) - { - // Update max dist for the volume raycast - MaxDist = OutHit.HitDistance; - FoundHit = true; - } - // If this anchor has a volume, hit test against it - if ((ComponentTypes & static_cast(EMRUKComponentType::Volume)) != 0 && VolumeBounds.IsValid && RayCastVolume(LocalRay, MaxDist, OutHit)) - { - MaxDist = OutHit.HitDistance; - FoundHit = true; - } - - return FoundHit; -} - -bool AMRUKAnchor::RaycastAll(const FVector& Origin, const FVector& Direction, float MaxDist, TArray& OutHits, int32 ComponentTypes) -{ - if ((ComponentTypes & static_cast(EMRUKComponentType::Mesh)) != 0 && this == Room->GlobalMeshAnchor) - { - FHitResult GlobalMeshOutHit{}; - float Dist = MaxDist; - if (MaxDist <= 0.0) - { - - const float WorldToMeters = GetWorld()->GetWorldSettings()->WorldToMeters; - Dist = WorldToMeters * 1024; // 1024 m should cover every scene - } - if (ActorLineTraceSingle(GlobalMeshOutHit, Origin, Origin + Direction * Dist, ECollisionChannel::ECC_WorldDynamic, FCollisionQueryParams::DefaultQueryParam)) - { - FMRUKHit Hit{}; - Hit.HitPosition = GlobalMeshOutHit.Location; - Hit.HitNormal = GlobalMeshOutHit.Normal; - Hit.HitDistance = GlobalMeshOutHit.Distance; - OutHits.Push(Hit); - return true; - } - return false; - } - - auto Transform = GetTransform(); - // Transform the ray into local space - auto InverseTransform = Transform.Inverse(); - const auto OriginLocal = InverseTransform.TransformPositionNoScale(Origin); - const auto DirectionLocal = InverseTransform.TransformVectorNoScale(Direction); - FRay LocalRay = FRay(OriginLocal, DirectionLocal); - bool FoundHit = false; - // If this anchor has a plane, hit test against it - FMRUKHit Hit; - if ((ComponentTypes & static_cast(EMRUKComponentType::Plane)) != 0 && PlaneBounds.bIsValid && RayCastPlane(LocalRay, MaxDist, Hit)) - { - OutHits.Push(Hit); - FoundHit = true; - } - // If this anchor has a volume, hit test against it - if ((ComponentTypes & static_cast(EMRUKComponentType::Volume)) != 0 && VolumeBounds.IsValid && RayCastVolume(LocalRay, MaxDist, Hit)) - { - OutHits.Push(Hit); - FoundHit = true; - } - - return FoundHit; -} - -void AMRUKAnchor::AttachProceduralMesh(const TArray& CutHoleLabels, bool GenerateCollision, UMaterialInterface* ProceduralMaterial) -{ - AttachProceduralMesh({}, CutHoleLabels, GenerateCollision, ProceduralMaterial); -} - -void AMRUKAnchor::AttachProceduralMesh(TArray PlaneUVAdjustments, const TArray& CutHoleLabels, bool GenerateCollision, UMaterialInterface* ProceduralMaterial) -{ - if (ProceduralMeshComponent) - { - // Procedural mesh already attached - return; - } - - ProceduralMeshComponent = NewObject(this, TEXT("ProceduralMesh")); - ProceduralMeshComponent->SetupAttachment(RootComponent); - ProceduralMeshComponent->RegisterComponent(); - - GenerateProceduralAnchorMesh(ProceduralMeshComponent, PlaneUVAdjustments, CutHoleLabels, false, GenerateCollision); - - for (int32 SectionIndex = 0; SectionIndex < ProceduralMeshComponent->GetNumSections(); ++SectionIndex) - { - ProceduralMeshComponent->SetMaterial(SectionIndex, ProceduralMaterial); - } -} - -void AMRUKAnchor::GenerateProceduralAnchorMesh(UProceduralMeshComponent* ProceduralMesh, const TArray& PlaneUVAdjustments, const TArray& CutHoleLabels, bool PreferVolume, bool GenerateCollision, double Offset) -{ - int SectionIndex = 0; - if (VolumeBounds.IsValid) - { - TArray Vertices; - TArray Triangles; - TArray Normals; - TArray UVs; - TArray Colors; // Currently unused - TArray Tangents; // Currently unused - constexpr int32 NumVertices = 24; - constexpr int32 NumTriangles = 12; - Vertices.Reserve(NumVertices); - Triangles.Reserve(3 * NumTriangles); - Normals.Reserve(NumVertices); - UVs.Reserve(NumVertices); - - FBox VolumeBoundsOffset(VolumeBounds.Min - Offset, VolumeBounds.Max + Offset); - for (int i = 0; i < 3; i++) - { - for (int j = 0; j < 2; j++) - { - FVector Normal = FVector::ZeroVector; - if (j == 0) - { - Normal[i] = -1.0f; - } - else - { - Normal[i] = 1.0f; - } - auto BaseIndex = Vertices.Num(); - FVector Vertex; - Vertex[i] = VolumeBoundsOffset[j][i]; - for (int k = 0; k < 2; k++) - { - for (int l = 0; l < 2; l++) - { - Vertex[(i + 1) % 3] = VolumeBoundsOffset[k][(i + 1) % 3]; - Vertex[(i + 2) % 3] = VolumeBoundsOffset[l][(i + 2) % 3]; - Vertices.Push(Vertex); - Normals.Push(Normal); - // The 4 side faces of the cube should have their 0, 0 at the top left corner - // when viewed from the outside. - // The top face should have UVs that are consistent with planes to avoid Z fighting - // in case a plane and volume overlap (e.g. in the case of the desk). - FVector2D UV; - switch (i) - { - case 0: - UV = FVector2D(1 - k, 1 - l); - break; - case 1: - UV = FVector2D(k, l); - break; - case 2: - UV = FVector2D(1 - l, k); - break; - default: - UV = FVector2D::Zero(); - ensure(0); - } - if (j == 0) - { - UV.X = 1 - UV.X; - } - UVs.Push(UV); - } - } - if (j == 1) - { - Triangles.Push(BaseIndex); - Triangles.Push(BaseIndex + 1); - Triangles.Push(BaseIndex + 2); - Triangles.Push(BaseIndex + 2); - Triangles.Push(BaseIndex + 1); - Triangles.Push(BaseIndex + 3); - } - else - { - Triangles.Push(BaseIndex); - Triangles.Push(BaseIndex + 2); - Triangles.Push(BaseIndex + 1); - Triangles.Push(BaseIndex + 1); - Triangles.Push(BaseIndex + 2); - Triangles.Push(BaseIndex + 3); - } - } - } - - ProceduralMesh->CreateMeshSection_LinearColor(SectionIndex++, Vertices, Triangles, Normals, UVs, Colors, Tangents, GenerateCollision); - } - if (PlaneBounds.bIsValid && !(VolumeBounds.IsValid && PreferVolume)) - { - TArray> Polygons; - - TArray PlaneBoundary; - PlaneBoundary.Reserve(PlaneBoundary2D.Num()); - for (const auto Point : PlaneBoundary2D) - { - PlaneBoundary.Push(FVector2f(Point)); - } - Polygons.Push(PlaneBoundary); - - if (!CutHoleLabels.IsEmpty()) - { - for (const auto& ChildAnchor : ChildAnchors) - { - if (!ChildAnchor->HasAnyLabel(CutHoleLabels)) - { - continue; - } - - if (!ChildAnchor->PlaneBounds.bIsValid) - { - UE_LOG(LogMRUK, Warning, TEXT("Can only cut holes with anchors that have a plane")); - continue; - } - - const FVector ChildPositionLS = GetActorTransform().InverseTransformPosition(ChildAnchor->GetActorLocation()); - TArray HoleBoundary; - HoleBoundary.Reserve(ChildAnchor->PlaneBoundary2D.Num()); - for (int32 I = ChildAnchor->PlaneBoundary2D.Num() - 1; I >= 0; --I) - { - HoleBoundary.Push(FVector2f(ChildPositionLS.Y, ChildPositionLS.Z) + FVector2f(ChildAnchor->PlaneBoundary2D[I])); - } - Polygons.Push(HoleBoundary); - } - } - - TArray MeshVertices; - TArray MeshIndices; - MRUKTriangulatePolygon(Polygons, MeshVertices, MeshIndices); - - TArray Vertices; - TArray Normals; - TArray UV0s; - TArray UV1s; - TArray UV2s; - TArray UV3s; - TArray Colors; // Currently unused - TArray Tangents; - const int32 NumVertices = MeshVertices.Num(); - Normals.Reserve(NumVertices); - UV0s.Reserve(NumVertices); - UV1s.Reserve(NumVertices); - UV2s.Reserve(NumVertices); - UV3s.Reserve(NumVertices); - Tangents.Reserve(NumVertices); - - static const FVector Normal = -FVector::XAxisVector; - const FVector NormalOffset = Normal * Offset; - auto BoundsSize = PlaneBounds.GetSize(); - for (const auto& PlaneBoundaryVertex : MeshVertices) - { - const FVector Vertex = FVector(0, PlaneBoundaryVertex.X, PlaneBoundaryVertex.Y) + NormalOffset; - Vertices.Push(Vertex); - Normals.Push(Normal); - Tangents.Push(FProcMeshTangent(-FVector::YAxisVector, false)); - auto U = (PlaneBoundaryVertex.X - PlaneBounds.Min.X) / BoundsSize.X; - auto V = 1 - (PlaneBoundaryVertex.Y - PlaneBounds.Min.Y) / BoundsSize.Y; - if (PlaneUVAdjustments.Num() == 0) - { - UV0s.Push(FVector2D(U, V)); - } - if (PlaneUVAdjustments.Num() >= 1) - { - UV0s.Push(FVector2D(U, V) * PlaneUVAdjustments[0].Scale + PlaneUVAdjustments[0].Offset); - } - if (PlaneUVAdjustments.Num() >= 2) - { - UV1s.Push(FVector2D(U, V) * PlaneUVAdjustments[1].Scale + PlaneUVAdjustments[1].Offset); - } - if (PlaneUVAdjustments.Num() >= 3) - { - UV2s.Push(FVector2D(U, V) * PlaneUVAdjustments[2].Scale + PlaneUVAdjustments[2].Offset); - } - if (PlaneUVAdjustments.Num() >= 4) - { - UV3s.Push(FVector2D(U, V) * PlaneUVAdjustments[3].Scale + PlaneUVAdjustments[3].Offset); - } - } - ProceduralMesh->CreateMeshSection_LinearColor(SectionIndex++, Vertices, MeshIndices, Normals, UV0s, UV1s, UV2s, UV3s, Colors, Tangents, GenerateCollision); - } -} - -bool AMRUKAnchor::HasLabel(const FString& Label) const -{ - return SemanticClassifications.Contains(Label); -} - -bool AMRUKAnchor::HasAnyLabel(const TArray& Labels) const -{ - for (const auto& Label : Labels) - { - if (HasLabel(Label)) - { - return true; - } - } - return false; -} - -bool AMRUKAnchor::PassesLabelFilter(const FMRUKLabelFilter& LabelFilter) const -{ - return LabelFilter.PassesFilter(SemanticClassifications); -} - -double AMRUKAnchor::GetClosestSurfacePosition(const FVector& TestPosition, FVector& OutSurfacePosition) -{ - const auto& Transform = GetActorTransform(); - const auto TestPositionLocal = Transform.InverseTransformPosition(TestPosition); - - double ClosestDistance = DBL_MAX; - FVector ClosestPoint = FVector::ZeroVector; - - if (PlaneBounds.bIsValid) - { - const auto BestPoint2D = PlaneBounds.GetClosestPointTo(FVector2D(TestPositionLocal.Y, TestPositionLocal.Z)); - const FVector BestPoint(0.0, BestPoint2D.X, BestPoint2D.Y); - const auto Distance = FVector::Distance(BestPoint, TestPositionLocal); - if (Distance < ClosestDistance) - { - ClosestPoint = BestPoint; - ClosestDistance = Distance; - } - } - if (VolumeBounds.IsValid) - { - const auto BestPoint = VolumeBounds.GetClosestPointTo(TestPositionLocal); - const auto Distance = FVector::Distance(BestPoint, TestPositionLocal); - if (Distance < ClosestDistance) - { - ClosestPoint = BestPoint; - ClosestDistance = Distance; - } - } - - OutSurfacePosition = Transform.TransformPosition(ClosestPoint); - return ClosestDistance; -} - -bool AMRUKAnchor::IsPositionInVolumeBounds(const FVector& Position, bool TestVerticalBounds, double Tolerance) -{ - if (!VolumeBounds.IsValid) - { - return false; - } - - const auto& LocalPosition = GetActorTransform().InverseTransformPosition(Position); - - return ((TestVerticalBounds ? ((LocalPosition.X >= VolumeBounds.Min.X - Tolerance) && (LocalPosition.X <= VolumeBounds.Max.X + Tolerance)) : true) - && (LocalPosition.Y >= VolumeBounds.Min.Y - Tolerance) && (LocalPosition.Y <= VolumeBounds.Max.Y + Tolerance) - && (LocalPosition.Z >= VolumeBounds.Min.Z - Tolerance) && (LocalPosition.Z <= VolumeBounds.Max.Z + Tolerance)); -} - -FVector AMRUKAnchor::GetFacingDirection() const -{ - if (Room == nullptr) - { - return {}; - } - - if (!VolumeBounds.IsValid) - { - return GetActorForwardVector(); - } - - int32 CardinalAxis = 0; - return UMRUKBPLibrary::ComputeDirectionAwayFromClosestWall(this, CardinalAxis, {}); -} - -AActor* AMRUKAnchor::SpawnInterior(const TSubclassOf& ActorClass, bool MatchAspectRatio, bool CalculateFacingDirection, EMRUKSpawnerScalingMode ScalingMode) -{ - Interior = GetWorld()->SpawnActor(ActorClass); - auto InteriorRoot = Interior->GetRootComponent(); - if (!InteriorRoot) - { - UE_LOG(LogMRUK, Error, TEXT("SpawnInterior Spawned actor does not have a root component.")); - return nullptr; - } - InteriorRoot->SetMobility(EComponentMobility::Movable); - Interior->AttachToComponent(GetRootComponent(), FAttachmentTransformRules::KeepRelativeTransform); - Interior->SetActorRelativeScale3D(FVector::OneVector); - - const auto ChildLocalBounds = Interior->CalculateComponentsBoundingBoxInLocalSpace(true); - FQuat Rotation = FQuat::Identity; - FVector Offset = FVector::ZeroVector; - FVector Scale = FVector::OneVector; - - if (VolumeBounds.IsValid) - { - int CardinalAxisIndex = 0; - if (CalculateFacingDirection && !MatchAspectRatio) - { - // Pick rotation that is pointing away from the closest wall - // If we are also matching the aspect ratio then we only have a choice - // between 2 directions and first need to figure out what those 2 directions - // are before doing the ray casting. - UMRUKBPLibrary::ComputeDirectionAwayFromClosestWall(this, CardinalAxisIndex, {}); - } - Rotation = FQuat::MakeFromEuler(FVector(90, -(CardinalAxisIndex + 1) * 90, 90)); - - FBox ChildBounds = ChildLocalBounds.TransformBy(FTransform(Rotation)); - const FVector ChildSize1 = ChildBounds.GetSize(); - - Scale = VolumeBounds.GetSize() / ChildSize1; - - if (MatchAspectRatio) - { - FVector ChildSize2 = ChildSize1; - Swap(ChildSize2.Y, ChildSize2.Z); - FVector Scale2 = VolumeBounds.GetSize() / ChildSize2; - - float Distortion1 = FMath::Max(Scale.Y, Scale.Z) / FMath::Min(Scale.Y, Scale.Z); - float Distortion2 = FMath::Max(Scale2.Y, Scale2.Z) / FMath::Min(Scale2.Y, Scale2.Z); - - bool FlipToMatchAspectRatio = Distortion1 > Distortion2; - if (FlipToMatchAspectRatio) - { - CardinalAxisIndex = 1; - Scale = Scale2; - } - if (CalculateFacingDirection) - { - UMRUKBPLibrary::ComputeDirectionAwayFromClosestWall(this, CardinalAxisIndex, FlipToMatchAspectRatio ? TArray{ 0, 2 } : TArray{ 1, 3 }); - } - if (CardinalAxisIndex != 0) - { - // Update the rotation and child bounds if necessary - Rotation = FQuat::MakeFromEuler(FVector(90, -(CardinalAxisIndex + 1) * 90, 90)); - ChildBounds = ChildLocalBounds.TransformBy(FTransform(Rotation)); - } - } - - switch (ScalingMode) - { - case EMRUKSpawnerScalingMode::UniformScaling: - Scale.X = Scale.Y = Scale.Z = FMath::Min3(Scale.X, Scale.Y, Scale.Z); - break; - case EMRUKSpawnerScalingMode::UniformXYScale: - Scale.Y = Scale.Z = FMath::Min(Scale.Y, Scale.Z); - break; - case EMRUKSpawnerScalingMode::NoScaling: - Scale = FVector::OneVector; - break; - case EMRUKSpawnerScalingMode::Stretch: - // Nothing to do - break; - } - - // Calculate the offset between the base of the two bounding boxes. Note that the anchor is on the - // top of the volume and the X axis points downwards. So the base is at Max.X. - FVector VolumeBase = FVector(VolumeBounds.Max.X, 0.5 * (VolumeBounds.Min.Y + VolumeBounds.Max.Y), 0.5 * (VolumeBounds.Min.Z + VolumeBounds.Max.Z)); - FVector ChildBase = FVector(ChildBounds.Max.X, 0.5 * (ChildBounds.Min.Y + ChildBounds.Max.Y), 0.5 * (ChildBounds.Min.Z + ChildBounds.Max.Z)); - - Offset = VolumeBase - ChildBase * Scale; - } - else if (PlaneBounds.bIsValid) - { - const auto XAxis = GetTransform().GetUnitAxis(EAxis::X); - // Adjust the rotation so that Z always points up. This enables assets to be authored in a more natural - // way and show up in the scene as expected. - if (XAxis.Z <= -UE_INV_SQRT_2) - { - // This is a floor or other surface facing upwards - Rotation = FQuat::MakeFromEuler(FVector(0, 90, 0)); - } - else if (XAxis.Z >= UE_INV_SQRT_2) - { - // This is ceiling or other surface facing downwards. - Rotation = FQuat::MakeFromEuler(FVector(0, -90, 0)); - } - else - { - // This is a wall or other upright surface. - Rotation = FQuat::MakeFromEuler(FVector(0, 0, 180)); - } - - const auto ChildBounds = ChildLocalBounds.TransformBy(FTransform(Rotation)); - const auto ChildBounds2D = FBox2D(FVector2D(ChildBounds.Min.Y, ChildBounds.Min.Z), FVector2D(ChildBounds.Max.Y, ChildBounds.Max.Z)); - auto Scale2D = PlaneBounds.GetSize() / ChildBounds2D.GetSize(); - - switch (ScalingMode) - { - case EMRUKSpawnerScalingMode::UniformScaling: - case EMRUKSpawnerScalingMode::UniformXYScale: - Scale2D.X = Scale2D.Y = FMath::Min(Scale2D.X, Scale2D.Y); - break; - case EMRUKSpawnerScalingMode::NoScaling: - Scale2D = FVector2D::UnitVector; - break; - case EMRUKSpawnerScalingMode::Stretch: - // Nothing to do - break; - } - - const auto Offset2D = PlaneBounds.GetCenter() - ChildBounds2D.GetCenter() * Scale2D; - - Offset = FVector(0.0, Offset2D.X, Offset2D.Y); - Scale = FVector(0.5 * (Scale2D.X + Scale2D.Y), Scale2D.X, Scale2D.Y); - } - Interior->SetActorRelativeRotation(Rotation); - Interior->SetActorRelativeLocation(Offset); - UMRUKBPLibrary::SetScaleRecursivelyAdjustingForRotation(InteriorRoot, Scale); - - return Interior; -} - -TSharedRef AMRUKAnchor::JsonSerialize() -{ - TSharedRef JsonObject = MakeShareable(new FJsonObject); - JsonObject->SetField(TEXT("UUID"), MRUKSerialize(AnchorUUID)); - JsonObject->SetField(TEXT("SemanticClassifications"), MRUKSerialize(SemanticClassifications)); - JsonObject->SetField(TEXT("Transform"), MRUKSerialize(GetTransform())); - if (PlaneBounds.bIsValid) - { - JsonObject->SetField(TEXT("PlaneBounds"), MRUKSerialize(PlaneBounds)); - } - if (!PlaneBoundary2D.IsEmpty()) - { - JsonObject->SetField(TEXT("PlaneBoundary2D"), MRUKSerialize(PlaneBoundary2D)); - } - if (VolumeBounds.IsValid) - { - JsonObject->SetField(TEXT("VolumeBounds"), MRUKSerialize(VolumeBounds)); - } - - if (this == Room->GlobalMeshAnchor) - { - TArray ProcMeshComponents; - GetComponents(ProcMeshComponents); - for (const auto& Component : ProcMeshComponents) - { - const auto ProcMeshComponent = Cast(Component); - if (ProcMeshComponent && ProcMeshComponent->ComponentHasTag("GlobalMesh")) - { - ensure(ProcMeshComponent->GetNumSections() == 1); - - auto GlobalMeshJson = MakeShared(); - GlobalMeshJson->SetField(TEXT("UUID"), MRUKSerialize(AnchorUUID)); - - const auto ProcMeshSection = ProcMeshComponent->GetProcMeshSection(0); - - TArray> PositionsJson; - for (const auto& Vertex : ProcMeshSection->ProcVertexBuffer) - { - PositionsJson.Add(MRUKSerialize(Vertex.Position)); - } - GlobalMeshJson->SetArrayField(TEXT("Positions"), PositionsJson); - - TArray> IndicesJson; - for (const auto& Index : ProcMeshSection->ProcIndexBuffer) - { - IndicesJson.Add(MakeShared(Index)); - } - GlobalMeshJson->SetArrayField(TEXT("Indices"), IndicesJson); - - JsonObject->SetObjectField(TEXT("GlobalMesh"), GlobalMeshJson); - } - } - } - - return JsonObject; -} - -void AMRUKAnchor::EndPlay(EEndPlayReason::Type Reason) -{ - if (Interior) - { - Interior->Destroy(); - } - Super::EndPlay(Reason); -} - -bool AMRUKAnchor::RayCastPlane(const FRay& LocalRay, float MaxDist, FMRUKHit& OutHit) -{ - // If the ray is behind or parallel to the anchor's plane then ignore it - if (LocalRay.Direction.X >= UE_KINDA_SMALL_NUMBER) - { - // Distance to the plane from the ray origin along the ray's direction - const float Dist = -LocalRay.Origin.X / LocalRay.Direction.X; - // If the distance is negative or less than the maximum distance then ignore it - if (Dist >= 0.0f && (MaxDist <= 0 || Dist < MaxDist)) - { - const FVector HitPos = LocalRay.PointAt(Dist); - // Ensure the hit is within the plane extends and within the boundary - const FVector2D Pos2D(HitPos.Y, HitPos.Z); - if (PlaneBounds.IsInside(Pos2D) && IsPositionInBoundary(Pos2D)) - { - // Transform the result back into world space - const auto Transform = GetTransform(); - OutHit.HitPosition = Transform.TransformPositionNoScale(HitPos); - OutHit.HitNormal = Transform.TransformVectorNoScale(-FVector::XAxisVector); - OutHit.HitDistance = Dist; - return true; - } - } - } - return false; -} - -bool AMRUKAnchor::RayCastVolume(const FRay& LocalRay, float MaxDist, FMRUKHit& OutHit) -{ - // Use the slab method to determine if the ray intersects with the bounding box - // https://education.siggraph.org/static/HyperGraph/raytrace/rtinter3.htm - float DistNear = -UE_BIG_NUMBER, DistFar = UE_BIG_NUMBER; - int HitAxis = 0; - for (int i = 0; i < 3; ++i) - { - if (FMath::Abs(LocalRay.Direction.Component(i)) >= UE_KINDA_SMALL_NUMBER) - { - // Distance to the plane from the ray origin along the ray's direction - float Dist1 = (VolumeBounds.Min.Component(i) - LocalRay.Origin.Component(i)) / LocalRay.Direction.Component(i); - float Dist2 = (VolumeBounds.Max.Component(i) - LocalRay.Origin.Component(i)) / LocalRay.Direction.Component(i); - - if (Dist1 > Dist2) - { - std::swap(Dist1, Dist2); - } - if (Dist1 > DistNear) - { - DistNear = Dist1; - HitAxis = i; - } - if (Dist2 < DistFar) - { - DistFar = Dist2; - } - } - else - { - // In this case there is no intersection because the ray is parallel to the plane - // Check that it is within bounds - if (LocalRay.Origin.Component(i) < VolumeBounds.Min.Component(i) || LocalRay.Origin.Component(i) > VolumeBounds.Max.Component(i)) - { - // No intersection, set DistNear to a large number - DistNear = UE_BIG_NUMBER; - break; - } - } - } - if (DistNear >= 0 && DistNear <= DistFar && (MaxDist <= 0 || DistNear < MaxDist)) - { - const FVector HitPos = LocalRay.PointAt(DistNear); - FVector HitNormal = FVector::ZeroVector; - HitNormal.Component(HitAxis) = LocalRay.Direction.Component(HitAxis) > 0 ? -1 : 1; - // Transform the result back into world space - const auto Transform = GetTransform(); - OutHit.HitPosition = Transform.TransformPositionNoScale(HitPos); - OutHit.HitNormal = Transform.TransformVectorNoScale(HitNormal); - OutHit.HitDistance = DistNear; - return true; - } - return false; -} - -void AMRUKAnchor::TriangulatedMeshCache::Clear() -{ - Vertices.Empty(); - Triangles.Empty(); - Areas.Empty(); - TotalArea = 0.0f; -} - -// #pragma optimize("", on) - -#undef LOCTEXT_NAMESPACE diff --git a/Plugins/MetaXR/Source/MRUtilityKit/Private/MRUtilityKitAnchorActorSpawner.cpp b/Plugins/MetaXR/Source/MRUtilityKit/Private/MRUtilityKitAnchorActorSpawner.cpp deleted file mode 100644 index 93868b9..0000000 --- a/Plugins/MetaXR/Source/MRUtilityKit/Private/MRUtilityKitAnchorActorSpawner.cpp +++ /dev/null @@ -1,738 +0,0 @@ -// Copyright (c) Meta Platforms, Inc. and affiliates. - -#include "MRUtilityKitAnchorActorSpawner.h" - -#include "MRUtilityKitAnchor.h" -#include "MRUtilityKitTelemetry.h" -#include "MRUtilityKitSubsystem.h" -#include "MRUtilityKitBPLibrary.h" -#include "GameFramework/WorldSettings.h" - -#include "Engine/GameInstance.h" - -const FName GMRUK_PROCEDURAL_ANCHOR_MESH_TAG = TEXT("MRUKProceduralAnchorMesh"); - -namespace -{ - AActor* SpawnProceduralMesh(AMRUKAnchor* Anchor, const TArray& PlaneUVAdjustments, const TArray& CutHoleLabels, UMaterialInterface* Material) - { - AActor* Actor = Anchor->GetWorld()->SpawnActor(); - Actor->SetOwner(Anchor); - Actor->Tags.AddUnique(GMRUK_PROCEDURAL_ANCHOR_MESH_TAG); - Actor->SetRootComponent(NewObject(Actor, TEXT("Root"))); - Actor->GetRootComponent()->SetMobility(EComponentMobility::Movable); - Actor->AttachToComponent(Anchor->GetRootComponent(), FAttachmentTransformRules::KeepRelativeTransform); - Actor->SetActorRelativeScale3D(FVector::OneVector); - - UProceduralMeshComponent* ProceduralMeshComponent = NewObject(Actor, TEXT("ProceduralMesh")); - ProceduralMeshComponent->SetupAttachment(Actor->GetRootComponent()); - ProceduralMeshComponent->RegisterComponent(); - Actor->AddInstanceComponent(ProceduralMeshComponent); - - Anchor->GenerateProceduralAnchorMesh(ProceduralMeshComponent, PlaneUVAdjustments, CutHoleLabels, false, true); - - for (int32 SectionIndex = 0; SectionIndex < ProceduralMeshComponent->GetNumSections(); ++SectionIndex) - { - ProceduralMeshComponent->SetMaterial(SectionIndex, Material); - } - return Actor; - } -} // namespace - -void AMRUKAnchorActorSpawner::BeginPlay() -{ - Super::BeginPlay(); - - OculusXRTelemetry::TScopedMarker Event(static_cast(GetTypeHash(this))); - - if (SpawnMode == EMRUKSpawnMode::CurrentRoomOnly) - { - const auto Subsystem = GetGameInstance()->GetSubsystem(); - if (Subsystem->SceneLoadStatus == EMRUKInitStatus::Complete) - { - SpawnActors(Subsystem->GetCurrentRoom()); - } - else - { - // Only listen for the room created event in case no current room was available yet - Subsystem->OnRoomCreated.AddUniqueDynamic(this, &AMRUKAnchorActorSpawner::OnRoomCreated); - } - } - else if (SpawnMode == EMRUKSpawnMode::AllRooms) - { - const auto Subsystem = GetGameInstance()->GetSubsystem(); - for (auto Room : Subsystem->Rooms) - { - SpawnActors(Room); - } - - // Listen for new rooms that get created - Subsystem->OnRoomCreated.AddUniqueDynamic(this, &AMRUKAnchorActorSpawner::OnRoomCreated); - } -} - -void AMRUKAnchorActorSpawner::OnRoomCreated(AMRUKRoom* Room) -{ - if (SpawnMode == EMRUKSpawnMode::CurrentRoomOnly && GetGameInstance()->GetSubsystem()->GetCurrentRoom() != Room) - { - // Skip this room if it is not the current room - return; - } - SpawnActors(Room); -} - -void AMRUKAnchorActorSpawner::OnRoomUpdated(AMRUKRoom* Room) -{ - if (!SpawnedActors.Find(Room)) - { - // A room was updated that we don't care about. If we are in current room only mode - // we only want to update the one room we created - return; - } - SpawnActors(Room); -} - -void AMRUKAnchorActorSpawner::OnRoomRemoved(AMRUKRoom* Room) -{ - RemoveActors(Room); -} - -void AMRUKAnchorActorSpawner::RemoveActors(AMRUKRoom* Room) -{ - if (!IsValid(Room)) - { - UE_LOG(LogMRUK, Warning, TEXT("Can not remove actors from room that is a nullptr")); - return; - } - - if (TArray* Actors = SpawnedActors.Find(Room)) - { - for (AActor* Actor : *Actors) - { - if (IsValid(Actor)) - { - Actor->Destroy(); - } - } - Actors->Empty(); - SpawnedActors.Remove(Room); - } -} - -bool AMRUKAnchorActorSpawner::ShouldAnchorFallbackToProceduralMesh(const FMRUKSpawnGroup& SpawnGroup) const -{ - switch (SpawnGroup.FallbackToProcedural) - { - case EMRUKFallbackToProceduralOverwrite::Default: - return ShouldFallbackToProcedural; - case EMRUKFallbackToProceduralOverwrite::Fallback: - return true; - case EMRUKFallbackToProceduralOverwrite::NoFallback: - return false; - } - return false; -} - -TArray AMRUKAnchorActorSpawner::SpawnProceduralMeshesOnWallsIfNoWallActorGiven(AMRUKRoom* Room) -{ - TArray Actors; - const auto WallFace = SpawnGroups.Find(FMRUKLabels::WallFace); - if (!WallFace || (WallFace->Actors.IsEmpty() && ShouldAnchorFallbackToProceduralMesh(*WallFace))) - { - // If no wall mesh is given we want to spawn the walls procedural to make seamless UVs - TArray AnchorsWithPlaneUVs; - Room->ComputeWallMeshUVAdjustments({}, AnchorsWithPlaneUVs); - for (const auto& AnchorWithPlaneUVs : AnchorsWithPlaneUVs) - { - Actors.Push(SpawnProceduralMesh(AnchorWithPlaneUVs.Anchor, AnchorWithPlaneUVs.PlaneUVs, CutHoleLabels, ProceduralMaterial)); - } - } - return Actors; -} - -AActor* AMRUKAnchorActorSpawner::SpawnProceduralMeshOnFloorIfNoFloorActorGiven(AMRUKRoom* Room) -{ - const auto Floor = SpawnGroups.Find(FMRUKLabels::Floor); - if (Room->FloorAnchor && (!Floor || (Floor->Actors.IsEmpty() && ShouldAnchorFallbackToProceduralMesh(*Floor)))) - { - // Use metric scaling to match walls - const float WorldToMeters = GetWorldSettings()->WorldToMeters; - const FVector2D Scale = Room->FloorAnchor->PlaneBounds.GetSize() / WorldToMeters; - const TArray PlaneUVAdj = { { FVector2D::ZeroVector, Scale } }; - return SpawnProceduralMesh(Room->FloorAnchor, PlaneUVAdj, CutHoleLabels, ProceduralMaterial); - } - return nullptr; -} - -AActor* AMRUKAnchorActorSpawner::SpawnProceduralMeshOnCeilingIfNoCeilingActorGiven(AMRUKRoom* Room) -{ - const auto Ceiling = SpawnGroups.Find(FMRUKLabels::Ceiling); - if (Room->CeilingAnchor && (!Ceiling || (Ceiling->Actors.IsEmpty() && ShouldAnchorFallbackToProceduralMesh(*Ceiling)))) - { - // Use metric scaling to match walls - const float WorldToMeters = GetWorldSettings()->WorldToMeters; - const FVector2D Scale = Room->CeilingAnchor->PlaneBounds.GetSize() / WorldToMeters; - const TArray PlaneUVAdj = { { FVector2D::ZeroVector, Scale } }; - return SpawnProceduralMesh(Room->CeilingAnchor, PlaneUVAdj, CutHoleLabels, ProceduralMaterial); - } - return nullptr; -} - -AActor* AMRUKAnchorActorSpawner::SpawnProceduralMeshForAnchorIfNeeded(AMRUKAnchor* Anchor) -{ - if (!IsValid(Anchor)) - { - return nullptr; - } - - if (Anchor->SemanticClassifications.IsEmpty()) - { - // For unknown scene objects spawn a procedural mesh (should not happen in practice) - return SpawnProceduralMesh(Anchor, {}, CutHoleLabels, ProceduralMaterial); - } - - for (const FString& Label : Anchor->SemanticClassifications) - { - if (Label == FMRUKLabels::WallFace && Anchor->SemanticClassifications.Contains(FMRUKLabels::InvisibleWallFace)) - { - // Treat anchors with WALL_FACE and INVISIBLE_WALL_FACE as anchors that only have INVISIBLE_WALL_FACE - continue; - } - - const FMRUKSpawnGroup* SpawnGroup = SpawnGroups.Find(Label); - if (SpawnGroup && SpawnGroup->Actors.IsEmpty() && ShouldAnchorFallbackToProceduralMesh(*SpawnGroup)) - { - return SpawnProceduralMesh(Anchor, {}, CutHoleLabels, ProceduralMaterial); - } - } - - return nullptr; -} - -TArray AMRUKAnchorActorSpawner::SpawnProceduralMeshesInRoom(AMRUKRoom* Room) -{ - TArray Actors; - - const TArray WallActors = SpawnProceduralMeshesOnWallsIfNoWallActorGiven(Room); - if (!WallActors.IsEmpty()) - { - Actors.Append(WallActors); - } - - AActor* Actor = nullptr; - - Actor = SpawnProceduralMeshOnFloorIfNoFloorActorGiven(Room); - if (Actor) - { - Actors.Push(Actor); - } - Actor = SpawnProceduralMeshOnCeilingIfNoCeilingActorGiven(Room); - if (Actor) - { - Actors.Push(Actor); - } - for (const auto& Anchor : Room->AllAnchors) - { - if (Anchor->HasLabel(FMRUKLabels::Floor) || Anchor->HasLabel(FMRUKLabels::Ceiling) || Anchor->HasLabel(FMRUKLabels::WallFace)) - { - // These have already been spawned above in case it was necessary - continue; - } - Actor = SpawnProceduralMeshForAnchorIfNeeded(Anchor); - if (Actor) - { - Actors.Push(Actor); - } - } - - return Actors; -} - -bool AMRUKAnchorActorSpawner::SelectSpawnActorClosestSize(AMRUKAnchor* Anchor, const FMRUKSpawnGroup& SpawnGroup, FMRUKSpawnActor& OutSpawnActor) -{ - if (SpawnGroup.Actors.IsEmpty()) - { - return false; - } - - int Index = 0; - if (SpawnGroup.Actors.Num() > 1) - { - if (Anchor->VolumeBounds.IsValid) - { - const double AnchorSize = FMath::Pow(Anchor->VolumeBounds.GetVolume(), 1.0 / 3.0); - double ClosestSizeDifference = UE_BIG_NUMBER; - for (int i = 0; i < SpawnGroup.Actors.Num(); ++i) - { - const auto& SpawnActor = SpawnGroup.Actors[i]; - const auto Subsystem = GetGameInstance()->GetSubsystem(); - auto Bounds = Subsystem->GetActorClassBounds(SpawnActor.Actor); - if (Bounds.IsValid) - { - const double SpawnActorSize = FMath::Pow(Bounds.GetVolume(), 1.0 / 3.0); - const double SizeDifference = FMath::Abs(AnchorSize - SpawnActorSize); - if (SizeDifference < ClosestSizeDifference) - { - ClosestSizeDifference = SizeDifference; - Index = i; - } - } - } - } - } - OutSpawnActor = SpawnGroup.Actors[Index]; - return true; -} - -bool AMRUKAnchorActorSpawner::SelectSpawnActorRandom(const FMRUKSpawnGroup& SpawnGroup, const FRandomStream& RandomStream, FMRUKSpawnActor& OutSpawnActor) -{ - if (SpawnGroup.Actors.IsEmpty()) - { - return false; - } - const int Index = RandomStream.RandRange(0, SpawnGroup.Actors.Num() - 1); - OutSpawnActor = SpawnGroup.Actors[Index]; - return true; -} - -bool AMRUKAnchorActorSpawner::SelectSpawnActorFromSpawnGroup(AMRUKAnchor* Anchor, const FMRUKSpawnGroup& SpawnGroup, const FRandomStream& RandomStream, FMRUKSpawnActor& OutSpawnActor) -{ - if (SpawnGroup.Actors.IsEmpty()) - { - return false; - } - if (SpawnGroup.SelectionMode == EMRUKSpawnerSelectionMode::Random) - { - return SelectSpawnActorRandom(SpawnGroup, RandomStream, OutSpawnActor); - } - if (SpawnGroup.SelectionMode == EMRUKSpawnerSelectionMode::ClosestSize) - { - return SelectSpawnActorClosestSize(Anchor, SpawnGroup, OutSpawnActor); - } - if (SpawnGroup.SelectionMode == EMRUKSpawnerSelectionMode::Custom) - { - return SelectSpawnActorCustom(Anchor, SpawnGroup, RandomStream, OutSpawnActor); - } - OutSpawnActor = SpawnGroup.Actors[0]; - return true; -} - -void AMRUKAnchorActorSpawner::AttachAndFitActorToAnchor(AMRUKAnchor* Anchor, AActor* Actor, EMRUKSpawnerScalingMode ScalingMode, EMRUKAlignMode AlignMode, bool bCalculateFacingDirection, bool bMatchAspectRatio) -{ - auto ActorRoot = Actor->GetRootComponent(); - if (!ActorRoot) - { - UE_LOG(LogMRUK, Error, TEXT("Spawned actor does not have a root component.")); - return; - } - ActorRoot->SetMobility(EComponentMobility::Movable); - Actor->AttachToComponent(Anchor->GetRootComponent(), FAttachmentTransformRules::KeepRelativeTransform); - Actor->SetActorRelativeScale3D(FVector::OneVector); - - const auto ChildLocalBounds = Actor->CalculateComponentsBoundingBoxInLocalSpace(true); - FQuat Rotation = FQuat::Identity; - FVector Offset = FVector::ZeroVector; - FVector Scale = FVector::OneVector; - - if (Anchor->VolumeBounds.IsValid) - { - int CardinalAxisIndex = 0; - if (bCalculateFacingDirection && !bMatchAspectRatio) - { - // Pick rotation that is pointing away from the closest wall - // If we are also matching the aspect ratio then we only have a choice - // between 2 directions and first need to figure out what those 2 directions - // are before doing the ray casting. - UMRUKBPLibrary::ComputeDirectionAwayFromClosestWall(Anchor, CardinalAxisIndex, {}); - } - Rotation = FQuat::MakeFromEuler(FVector(90, -(CardinalAxisIndex + 1) * 90, 90)); - - FBox ChildBounds = ChildLocalBounds.TransformBy(FTransform(Rotation)); - const FVector ChildSize1 = ChildBounds.GetSize(); - - Scale = Anchor->VolumeBounds.GetSize() / ChildSize1; - - if (bMatchAspectRatio) - { - FVector ChildSize2 = ChildSize1; - Swap(ChildSize2.Y, ChildSize2.Z); - FVector Scale2 = Anchor->VolumeBounds.GetSize() / ChildSize2; - - float Distortion1 = FMath::Max(Scale.Y, Scale.Z) / FMath::Min(Scale.Y, Scale.Z); - float Distortion2 = FMath::Max(Scale2.Y, Scale2.Z) / FMath::Min(Scale2.Y, Scale2.Z); - - bool FlipToMatchAspectRatio = Distortion1 > Distortion2; - if (FlipToMatchAspectRatio) - { - CardinalAxisIndex = 1; - Scale = Scale2; - } - if (bCalculateFacingDirection) - { - UMRUKBPLibrary::ComputeDirectionAwayFromClosestWall(Anchor, CardinalAxisIndex, FlipToMatchAspectRatio ? TArray{ 0, 2 } : TArray{ 1, 3 }); - } - if (CardinalAxisIndex != 0) - { - // Update the rotation and child bounds if necessary - Rotation = FQuat::MakeFromEuler(FVector(90, -(CardinalAxisIndex + 1) * 90, 90)); - ChildBounds = ChildLocalBounds.TransformBy(FTransform(Rotation)); - } - } - - switch (ScalingMode) - { - case EMRUKSpawnerScalingMode::UniformScaling: - Scale.X = Scale.Y = Scale.Z = FMath::Min3(Scale.X, Scale.Y, Scale.Z); - break; - case EMRUKSpawnerScalingMode::UniformXYScale: - Scale.Y = Scale.Z = FMath::Min(Scale.Y, Scale.Z); - break; - case EMRUKSpawnerScalingMode::NoScaling: - Scale = FVector::OneVector; - break; - case EMRUKSpawnerScalingMode::Stretch: - // Nothing to do - break; - case EMRUKSpawnerScalingMode::Custom: - Scale = ComputeCustomScaling(Anchor, Actor, Scale); - break; - } - - if (AlignMode == EMRUKAlignMode::Custom) - { - Offset = ComputeCustomAlign(Anchor, Actor, ChildBounds, Scale); - } - else if (AlignMode != EMRUKAlignMode::None) - { - FVector ChildBase; - FVector VolumeBase; - - switch (AlignMode) - { - case EMRUKAlignMode::CenterOnCenter: - ChildBase = FVector(0.5 * (ChildBounds.Min.X + ChildBounds.Max.X), 0.5 * (ChildBounds.Min.Y + ChildBounds.Max.Y), 0.5 * (ChildBounds.Min.Z + ChildBounds.Max.Z)); - break; - - case EMRUKAlignMode::TopOnTop: - case EMRUKAlignMode::TopOnBottom: - ChildBase = FVector(ChildBounds.Min.X, 0.5 * (ChildBounds.Min.Y + ChildBounds.Max.Y), 0.5 * (ChildBounds.Min.Z + ChildBounds.Max.Z)); - break; - - case EMRUKAlignMode::Default: - case EMRUKAlignMode::BottomOnBottom: - case EMRUKAlignMode::BottomOnTop: - ChildBase = FVector(ChildBounds.Max.X, 0.5 * (ChildBounds.Min.Y + ChildBounds.Max.Y), 0.5 * (ChildBounds.Min.Z + ChildBounds.Max.Z)); - break; - - case EMRUKAlignMode::LeftOnLeft: - case EMRUKAlignMode::LeftOnRight: - ChildBase = FVector(0.5 * (ChildBounds.Min.X + ChildBounds.Max.X), 0.5 * (ChildBounds.Min.Y + ChildBounds.Max.Y), ChildBounds.Max.Z); - break; - - case EMRUKAlignMode::RightOnRight: - case EMRUKAlignMode::RightOnLeft: - ChildBase = FVector(0.5 * (ChildBounds.Min.X + ChildBounds.Max.X), 0.5 * (ChildBounds.Min.Y + ChildBounds.Max.Y), ChildBounds.Min.Z); - break; - - case EMRUKAlignMode::FrontOnFront: - case EMRUKAlignMode::FrontOnBack: - ChildBase = FVector(0.5 * (ChildBounds.Min.X + ChildBounds.Max.X), ChildBounds.Max.Y, 0.5 * (ChildBounds.Min.Z + ChildBounds.Max.Z)); - break; - - case EMRUKAlignMode::BackOnBack: - case EMRUKAlignMode::BackOnFront: - ChildBase = FVector(0.5 * (ChildBounds.Min.X + ChildBounds.Max.X), ChildBounds.Min.Y, 0.5 * (ChildBounds.Min.Z + ChildBounds.Max.Z)); - break; - } - - switch (AlignMode) - { - case EMRUKAlignMode::CenterOnCenter: - VolumeBase = FVector(0.5 * (Anchor->VolumeBounds.Min.X + Anchor->VolumeBounds.Max.X), 0.5 * (Anchor->VolumeBounds.Min.Y + Anchor->VolumeBounds.Max.Y), 0.5 * (Anchor->VolumeBounds.Min.Z + Anchor->VolumeBounds.Max.Z)); - break; - - case EMRUKAlignMode::TopOnTop: - case EMRUKAlignMode::BottomOnTop: - VolumeBase = FVector(Anchor->VolumeBounds.Min.X, 0.5 * (Anchor->VolumeBounds.Min.Y + Anchor->VolumeBounds.Max.Y), 0.5 * (Anchor->VolumeBounds.Min.Z + Anchor->VolumeBounds.Max.Z)); - break; - - case EMRUKAlignMode::Default: - case EMRUKAlignMode::BottomOnBottom: - case EMRUKAlignMode::TopOnBottom: - VolumeBase = FVector(Anchor->VolumeBounds.Max.X, 0.5 * (Anchor->VolumeBounds.Min.Y + Anchor->VolumeBounds.Max.Y), 0.5 * (Anchor->VolumeBounds.Min.Z + Anchor->VolumeBounds.Max.Z)); - break; - - case EMRUKAlignMode::LeftOnLeft: - case EMRUKAlignMode::RightOnLeft: - VolumeBase = FVector(0.5 * (Anchor->VolumeBounds.Min.X + Anchor->VolumeBounds.Max.X), 0.5 * (Anchor->VolumeBounds.Min.Y + Anchor->VolumeBounds.Max.Y), Anchor->VolumeBounds.Max.Z); - break; - - case EMRUKAlignMode::RightOnRight: - case EMRUKAlignMode::LeftOnRight: - VolumeBase = FVector(0.5 * (Anchor->VolumeBounds.Min.X + Anchor->VolumeBounds.Max.X), 0.5 * (Anchor->VolumeBounds.Min.Y + Anchor->VolumeBounds.Max.Y), Anchor->VolumeBounds.Min.Z); - break; - - case EMRUKAlignMode::FrontOnFront: - case EMRUKAlignMode::BackOnFront: - VolumeBase = FVector(0.5 * (Anchor->VolumeBounds.Min.X + Anchor->VolumeBounds.Max.X), Anchor->VolumeBounds.Max.Y, 0.5 * (Anchor->VolumeBounds.Min.Z + Anchor->VolumeBounds.Max.Z)); - break; - - case EMRUKAlignMode::BackOnBack: - case EMRUKAlignMode::FrontOnBack: - VolumeBase = FVector(0.5 * (Anchor->VolumeBounds.Min.X + Anchor->VolumeBounds.Max.X), Anchor->VolumeBounds.Min.Y, 0.5 * (Anchor->VolumeBounds.Min.Z + Anchor->VolumeBounds.Max.Z)); - break; - } - Offset = VolumeBase - ChildBase * Scale; - } - } - else if (Anchor->PlaneBounds.bIsValid) - { - const auto XAxis = Anchor->GetTransform().GetUnitAxis(EAxis::X); - // Adjust the rotation so that Z always points up. This enables assets to be authored in a more natural - // way and show up in the scene as expected. - if (XAxis.Z <= -UE_INV_SQRT_2) - { - // This is a floor or other surface facing upwards - Rotation = FQuat::MakeFromEuler(FVector(0, 90, 0)); - } - else if (XAxis.Z >= UE_INV_SQRT_2) - { - // This is ceiling or other surface facing downwards. - Rotation = FQuat::MakeFromEuler(FVector(0, -90, 0)); - } - else - { - // This is a wall or other upright surface. - Rotation = FQuat::MakeFromEuler(FVector(0, 0, 180)); - } - - const auto ChildBounds = ChildLocalBounds.TransformBy(FTransform(Rotation)); - const auto ChildBounds2D = FBox2D(FVector2D(ChildBounds.Min.Y, ChildBounds.Min.Z), FVector2D(ChildBounds.Max.Y, ChildBounds.Max.Z)); - auto Scale2D = Anchor->PlaneBounds.GetSize() / ChildBounds2D.GetSize(); - - switch (ScalingMode) - { - case EMRUKSpawnerScalingMode::UniformScaling: - case EMRUKSpawnerScalingMode::UniformXYScale: - Scale2D.X = Scale2D.Y = FMath::Min(Scale2D.X, Scale2D.Y); - break; - case EMRUKSpawnerScalingMode::NoScaling: - Scale2D = FVector2D::UnitVector; - break; - case EMRUKSpawnerScalingMode::Stretch: - // Nothing to do - break; - case EMRUKSpawnerScalingMode::Custom: - const FVector S = ComputeCustomScaling(Anchor, Actor, FVector(Scale2D.X, Scale2D.Y, 0.0)); - Scale2D.X = S.X; - Scale2D.Y = S.Y; - break; - } - - FVector2D Offset2D = FVector2D::ZeroVector; - switch (AlignMode) - { - case EMRUKAlignMode::None: - case EMRUKAlignMode::BackOnBack: - case EMRUKAlignMode::FrontOnFront: - case EMRUKAlignMode::FrontOnBack: - case EMRUKAlignMode::BackOnFront: - Offset = FVector::ZeroVector; - break; - case EMRUKAlignMode::Default: - case EMRUKAlignMode::CenterOnCenter: - Offset2D = Anchor->PlaneBounds.GetCenter() - ChildBounds2D.GetCenter() * Scale2D; - break; - case EMRUKAlignMode::BottomOnBottom: - Offset2D = FVector2D(Anchor->PlaneBounds.GetCenter().X, Anchor->PlaneBounds.Min.Y) - FVector2D(ChildBounds2D.GetCenter().X, ChildBounds2D.Min.Y) * Scale2D; - break; - case EMRUKAlignMode::TopOnTop: - Offset2D = FVector2D(Anchor->PlaneBounds.GetCenter().X, Anchor->PlaneBounds.Max.Y) - FVector2D(ChildBounds2D.GetCenter().X, ChildBounds2D.Max.Y) * Scale2D; - break; - case EMRUKAlignMode::LeftOnLeft: - Offset2D = FVector2D(Anchor->PlaneBounds.Max.X, Anchor->PlaneBounds.GetCenter().Y) - FVector2D(ChildBounds2D.Max.X, ChildBounds2D.GetCenter().Y) * Scale2D; - break; - case EMRUKAlignMode::RightOnRight: - Offset2D = FVector2D(Anchor->PlaneBounds.Min.X, Anchor->PlaneBounds.GetCenter().Y) - FVector2D(ChildBounds2D.Min.X, ChildBounds2D.GetCenter().Y) * Scale2D; - break; - case EMRUKAlignMode::BottomOnTop: - Offset2D = FVector2D(Anchor->PlaneBounds.GetCenter().X, Anchor->PlaneBounds.Max.Y) - FVector2D(ChildBounds2D.GetCenter().X, ChildBounds2D.Min.Y) * Scale2D; - break; - case EMRUKAlignMode::TopOnBottom: - Offset2D = FVector2D(Anchor->PlaneBounds.GetCenter().X, Anchor->PlaneBounds.Min.Y) - FVector2D(ChildBounds2D.GetCenter().X, ChildBounds2D.Max.Y) * Scale2D; - break; - case EMRUKAlignMode::LeftOnRight: - Offset2D = FVector2D(Anchor->PlaneBounds.Min.X, Anchor->PlaneBounds.GetCenter().Y) - FVector2D(ChildBounds2D.Max.X, ChildBounds2D.GetCenter().Y) * Scale2D; - break; - case EMRUKAlignMode::RightOnLeft: - Offset2D = FVector2D(Anchor->PlaneBounds.Max.X, Anchor->PlaneBounds.GetCenter().Y) - FVector2D(ChildBounds2D.Min.X, ChildBounds2D.GetCenter().Y) * Scale2D; - break; - case EMRUKAlignMode::Custom: - Offset = ComputeCustomAlign(Anchor, Actor, FBox(FVector(ChildBounds2D.Min, 0.0), FVector(ChildBounds2D.Max, 0.0)), FVector(Scale2D.X, Scale2D.Y, 0.0)); - Offset2D = FVector2D(Offset.X, Offset.Y); - break; - } - - Offset = FVector(0.0, Offset2D.X, Offset2D.Y); - Scale = FVector(0.5 * (Scale2D.X + Scale2D.Y), Scale2D.X, Scale2D.Y); - } - Actor->SetActorRelativeRotation(Rotation); - Actor->SetActorRelativeLocation(Offset); - UMRUKBPLibrary::SetScaleRecursivelyAdjustingForRotation(ActorRoot, Scale); -} - -AActor* AMRUKAnchorActorSpawner::SpawnAnchorActor_Implementation(AMRUKAnchor* Anchor, const FMRUKSpawnActor& SpawnActor) -{ - AActor* SpawnedActor = GetWorld()->SpawnActor(SpawnActor.Actor); - AttachAndFitActorToAnchor(Anchor, SpawnedActor, SpawnActor.ScalingMode, SpawnActor.AlignMode, SpawnActor.CalculateFacingDirection, SpawnActor.MatchAspectRatio); - return SpawnedActor; -} - -FVector AMRUKAnchorActorSpawner::ComputeCustomScaling_Implementation(AMRUKAnchor* Anchor, AActor* SpawnedActor, const FVector& StretchedScale) -{ - UE_LOG(LogMRUK, Warning, TEXT("Custom scaling mode selected but default implementation used. Please override ComputeCustomScaling() to define custom scaling")); - return StretchedScale; -} - -bool AMRUKAnchorActorSpawner::SelectSpawnActorCustom_Implementation(AMRUKAnchor* Anchor, const FMRUKSpawnGroup& SpawnGroup, const FRandomStream& RandomStream, FMRUKSpawnActor& OutSpawnActor) -{ - UE_LOG(LogMRUK, Warning, TEXT("Custom selection mode specified, but custom selection logic was not overwritten. Please overwrite SelectSpawnActorCustom() to define custom selection logic")); - return SelectSpawnActorRandom(SpawnGroup, RandomStream, OutSpawnActor); -} - -FVector AMRUKAnchorActorSpawner::ComputeCustomAlign_Implementation(AMRUKAnchor* Anchor, AActor* Actor, const FBox& ChildBounds, const FVector& Scale) -{ - UE_LOG(LogMRUK, Warning, TEXT("Custom align mode selected but default implementation used. Please override ComputeCustomAlign() to define custom align")); - return FVector::ZeroVector; -} - -bool AMRUKAnchorActorSpawner::ShouldSpawnActorForAnchor(AMRUKAnchor* Anchor, const FString& Label, FMRUKSpawnGroup& OutSpawnGroup) const -{ - if (Label == FMRUKLabels::WallFace && Anchor->SemanticClassifications.Contains(FMRUKLabels::InvisibleWallFace)) - { - // Treat anchors with WALL_FACE and INVISIBLE_WALL_FACE as anchors that only have INVISIBLE_WALL_FACE - return false; - } - - const auto SpawnGroup = SpawnGroups.Find(Label); - if (!SpawnGroup) - { - return false; - } - if (SpawnGroup->Actors.IsEmpty() && ShouldAnchorFallbackToProceduralMesh(*SpawnGroup)) - { - return false; - } - - OutSpawnGroup = *SpawnGroup; - return true; -} - -AActor* AMRUKAnchorActorSpawner::SpawnAnchorActorForLabel_Implementation(AMRUKAnchor* Anchor, const FString& Label, const FMRUKSpawnGroup& SpawnGroup, const FRandomStream& RandomStream) -{ - FMRUKSpawnActor SpawnActor{}; - if (SelectSpawnActorFromSpawnGroup(Anchor, SpawnGroup, RandomStream, SpawnActor)) - { - if (!SpawnActor.Actor) - { - UE_LOG(LogMRUK, Error, TEXT("Actor to spawn is a nullptr for label %s. Skipping it."), *Label); - return nullptr; - } - return SpawnAnchorActor(Anchor, SpawnActor); - } - UE_LOG(LogMRUK, Error, TEXT("Actor is nullptr for label %s."), *Label); - return nullptr; -} - -TArray AMRUKAnchorActorSpawner::SpawnAnchorActorsInRoom_Implementation(AMRUKRoom* Room, const FRandomStream& RandomStream) -{ - TArray SpawnedActorsInRoom; - - SpawnedActorsInRoom.Append(SpawnProceduralMeshesInRoom(Room)); - - for (const auto& Anchor : Room->AllAnchors) - { - if (!IsValid(Anchor)) - { - continue; - } - - for (const FString& Label : Anchor->SemanticClassifications) - { - FMRUKSpawnGroup SpawnGroup{}; - if (!ShouldSpawnActorForAnchor(Anchor, Label, SpawnGroup)) - { - continue; - } - - if (AActor* SpawnedActor = SpawnAnchorActorForLabel(Anchor, Label, SpawnGroup, RandomStream)) - { - SpawnedActorsInRoom.Push(SpawnedActor); - } - } - } - - return SpawnedActorsInRoom; -} - -void AMRUKAnchorActorSpawner::SpawnActors(AMRUKRoom* Room) -{ - if (!IsValid(Room)) - { - UE_LOG(LogMRUK, Warning, TEXT("Can not spawn actors in Room that is a nullptr")); - return; - } - - RemoveActors(Room); - - // Use last seed if possible to keep spawning deterministic after the first spawn. - // In case the anchor random spawn seed has been changed it will be used instead - // of the last seed. - int32 Seed = -1; - if (LastSeed >= 0) - { - if ((AnchorRandomSpawnSeed >= 0) && (LastSeed != AnchorRandomSpawnSeed)) - { - Seed = AnchorRandomSpawnSeed; - } - else - { - Seed = LastSeed; - } - } - else if (AnchorRandomSpawnSeed >= 0) - { - Seed = AnchorRandomSpawnSeed; - } - - FRandomStream RandomStream(Seed); - if (Seed < 0) - { - RandomStream.GenerateNewSeed(); - } - LastSeed = RandomStream.GetCurrentSeed(); - const TArray& Actors = SpawnAnchorActorsInRoom(Room, RandomStream); - SpawnedActors.Add(Room, Actors); - - const auto Subsystem = GetGameInstance()->GetSubsystem(); - Subsystem->OnRoomUpdated.AddUniqueDynamic(this, &AMRUKAnchorActorSpawner::OnRoomUpdated); - Subsystem->OnRoomRemoved.AddUniqueDynamic(this, &AMRUKAnchorActorSpawner::OnRoomRemoved); - - OnActorsSpawned.Broadcast(Room); -} - -void AMRUKAnchorActorSpawner::GetSpawnedActorsByRoom(AMRUKRoom* Room, TArray& Actors) -{ - if (const TArray* A = SpawnedActors.Find(Room)) - { - Actors.Append(*A); - } -} - -void AMRUKAnchorActorSpawner::GetSpawnedActors(TArray& Actors) -{ - for (const auto& KeyValue : SpawnedActors) - { - Actors.Append(KeyValue.Value); - } -} diff --git a/Plugins/MetaXR/Source/MRUtilityKit/Private/MRUtilityKitBPLibrary.cpp b/Plugins/MetaXR/Source/MRUtilityKit/Private/MRUtilityKitBPLibrary.cpp deleted file mode 100644 index 3c68a80..0000000 --- a/Plugins/MetaXR/Source/MRUtilityKit/Private/MRUtilityKitBPLibrary.cpp +++ /dev/null @@ -1,591 +0,0 @@ -// Copyright (c) Meta Platforms, Inc. and affiliates. - -#include "MRUtilityKitBPLibrary.h" - -#include "MRUtilityKit.h" -#include "Generated/MRUtilityKitShared.h" -#include "MRUtilityKitAnchor.h" -#include "MRUtilityKitSubsystem.h" -#include "MRUtilityKitSerializationHelpers.h" -#include "ProceduralMeshComponent.h" -#include "VectorUtil.h" -#include "Engine/World.h" -#include "Engine/GameInstance.h" -#include "Engine/Engine.h" -#include "TextureResource.h" -#include "Engine/TextureRenderTarget2D.h" - -#include "Engine/Texture2D.h" -#include "Serialization/JsonReader.h" -#include "Serialization/JsonSerializer.h" - -namespace -{ - TArray RecalculateNormals(const TArray& Vertices, const TArray& Triangles) - { - TArray Normals; - - // Initialize the normals array with zero vectors - Normals.Init(FVector::ZeroVector, Vertices.Num()); - - // Iterate through each triangle - for (int32 TriIndex = 0; TriIndex < Triangles.Num(); TriIndex += 3) - { - // Get the vertices of the triangle - FVector VertexA = Vertices[Triangles[TriIndex]]; - FVector VertexB = Vertices[Triangles[TriIndex + 1]]; - FVector VertexC = Vertices[Triangles[TriIndex + 2]]; - - // Calculate the triangle's normal - const FVector TriangleNormal = FVector::CrossProduct(VertexC - VertexA, VertexB - VertexA).GetSafeNormal(); - - // Add the triangle's normal to each of its vertices' normals - Normals[Triangles[TriIndex]] += TriangleNormal; - Normals[Triangles[TriIndex + 1]] += TriangleNormal; - Normals[Triangles[TriIndex + 2]] += TriangleNormal; - } - - // Normalize the vertex normals - for (FVector& Normal : Normals) - { - if (!Normal.IsNearlyZero()) - { - Normal.Normalize(); - } - else - { - Normal = FVector::UpVector; - } - } - - return Normals; - } - - TArray RecalculateTangents(const TArray& Normals) - { - TArray Tangents; - - // Initialize the tangents array with zero tangents - Tangents.Init(FProcMeshTangent(0.f, 0.f, 0.f), Normals.Num()); - - // Iterate through each normal - for (int32 NormalIndex = 0; NormalIndex < Normals.Num(); NormalIndex++) - { - const FVector& Normal = Normals[NormalIndex]; - - // Calculate a tangent based on the normal - FVector TangentX = FVector(1.0f, 0.0f, 0.0f); - - // Gram-Schmidt orthogonalization - TangentX -= Normal * FVector::DotProduct(TangentX, Normal); - if (!TangentX.IsNearlyZero()) - { - TangentX.Normalize(); - } - else - { - TangentX = FVector::UpVector; - } - - // Store the tangent in the array - Tangents[NormalIndex] = FProcMeshTangent(TangentX, false); - } - - return Tangents; - } - - void SetScaleRecursivelyAdjustingForRotationInternal(USceneComponent* SceneComponent, const FVector& UnRotatedScale, const FQuat& AccumulatedRotation, const FVector& ParentReciprocalScale) - { - if (SceneComponent) - { - const auto RelativeRotation = SceneComponent->GetRelativeRotationCache().RotatorToQuat(SceneComponent->GetRelativeRotation()); - const auto Rotation = AccumulatedRotation * RelativeRotation; - const FVector RotatedXAxis = Rotation.GetAxisX(); - const FVector RotatedYAxis = Rotation.GetAxisY(); - const FVector RotatedZAxis = Rotation.GetAxisZ(); - FVector RotatedScale; - if (FMath::Abs(RotatedXAxis.X) >= UE_INV_SQRT_2) - { - RotatedScale.X = UnRotatedScale.X; - } - else if (FMath::Abs(RotatedXAxis.Y) >= UE_INV_SQRT_2) - { - RotatedScale.X = UnRotatedScale.Y; - } - else - { - RotatedScale.X = UnRotatedScale.Z; - } - - if (FMath::Abs(RotatedYAxis.X) >= UE_INV_SQRT_2) - { - RotatedScale.Y = UnRotatedScale.X; - } - else if (FMath::Abs(RotatedYAxis.Y) >= UE_INV_SQRT_2) - { - RotatedScale.Y = UnRotatedScale.Y; - } - else - { - RotatedScale.Y = UnRotatedScale.Z; - } - - if (FMath::Abs(RotatedZAxis.X) >= UE_INV_SQRT_2) - { - RotatedScale.Z = UnRotatedScale.X; - } - else if (FMath::Abs(RotatedZAxis.Y) >= UE_INV_SQRT_2) - { - RotatedScale.Z = UnRotatedScale.Y; - } - else - { - RotatedScale.Z = UnRotatedScale.Z; - } - - const FVector OldScale = SceneComponent->GetRelativeScale3D(); - const FVector NewScale = ParentReciprocalScale * RotatedScale * OldScale; - SceneComponent->SetRelativeScale3D(NewScale); - const FVector NewParentReciprocalScale = ParentReciprocalScale * (OldScale / NewScale); - for (auto Child : SceneComponent->GetAttachChildren()) - { - if (Child) - { - SetScaleRecursivelyAdjustingForRotationInternal(Child, UnRotatedScale, Rotation, NewParentReciprocalScale); - } - } - } - } - - TArray GeneratePoints(const FTransform& Plane, const FBox2D& PlaneBounds, double PointsPerUnitX, double PointsPerUnitY, double WorldToMeters = 100.0) - { - const FVector PlaneRight = Plane.GetRotation().GetRightVector(); - const FVector PlaneUp = Plane.GetRotation().GetUpVector(); - const FVector PlaneSize = FVector(PlaneBounds.GetSize().X, PlaneBounds.GetSize().Y, 0.0); - const FVector PlaneBottomLeft = Plane.GetLocation() - PlaneRight * PlaneSize.X * 0.5f - PlaneUp * PlaneSize.Y * 0.5f; - - const int32 PointsX = FMath::Max(FMathf::Ceil(PointsPerUnitX * PlaneSize.X) / WorldToMeters, 1); - const int32 PointsY = FMath::Max(FMathf::Ceil(PointsPerUnitY * PlaneSize.Y) / WorldToMeters, 1); - - const FVector2D Stride{ PlaneSize.X / (PointsX + 1), PlaneSize.Y / (PointsY + 1) }; - - TArray Points; - Points.SetNum(PointsX * PointsY); - - for (int Iy = 0; Iy < PointsY; ++Iy) - { - for (int Ix = 0; Ix < PointsX; ++Ix) - { - const float Dx = (Ix + 1) * Stride.X; - const float Dy = (Iy + 1) * Stride.Y; - const FVector Point = PlaneBottomLeft + Dx * PlaneRight + Dy * PlaneUp; - Points[Ix + Iy * PointsX] = Point; - } - } - - return Points; - } -} // namespace - -UMRUKLoadFromDevice* UMRUKLoadFromDevice::LoadSceneFromDeviceAsync(const UObject* WorldContext -) -{ - // We must have a valid contextual world for this action, so we don't even make it - // unless we can resolve the UWorld from WorldContext. - UWorld* World = GEngine->GetWorldFromContextObject(WorldContext, EGetWorldErrorMode::ReturnNull); - if (!ensureAlwaysMsgf(IsValid(WorldContext), TEXT("World Context was not valid."))) - { - return nullptr; - } - - // Create a new UMyDelayAsyncAction, and store function arguments in it. - UMRUKLoadFromDevice* NewAction = NewObject(); - NewAction->World = World; - NewAction->RegisterWithGameInstance(World->GetGameInstance()); - return NewAction; -} - -void UMRUKLoadFromDevice::Activate() -{ - const auto Subsystem = World->GetGameInstance()->GetSubsystem(); - Subsystem->OnSceneLoaded.AddDynamic(this, &UMRUKLoadFromDevice::OnSceneLoaded); - - { - Subsystem->LoadSceneFromDevice(); - } -} - -void UMRUKLoadFromDevice::OnSceneLoaded(bool Succeeded) -{ - const auto Subsystem = World->GetGameInstance()->GetSubsystem(); - Subsystem->OnSceneLoaded.RemoveDynamic(this, &UMRUKLoadFromDevice::OnSceneLoaded); - if (Succeeded) - { - Success.Broadcast(); - } - else - { - Failure.Broadcast(); - } - SetReadyToDestroy(); -} - -bool UMRUKBPLibrary::LoadGlobalMeshFromDevice(FOculusXRUInt64 SpaceHandle, UProceduralMeshComponent* OutProceduralMesh, bool LoadCollision, const UObject* WorldContext) -{ - ensure(OutProceduralMesh); - - const UWorld* World = GEngine->GetWorldFromContextObject(WorldContext, EGetWorldErrorMode::ReturnNull); - if (!ensureAlwaysMsgf(IsValid(WorldContext), TEXT("World Context was not valid."))) - { - return false; - } - - const auto RoomLayoutManager = World->GetGameInstance()->GetSubsystem()->GetRoomLayoutManager(); - const bool LoadResult = RoomLayoutManager->LoadTriangleMesh(SpaceHandle.Value, OutProceduralMesh, LoadCollision); - if (!LoadResult) - { - UE_LOG(LogMRUK, Warning, TEXT("Could not load triangle mesh from layout manager")); - return false; - } - - return true; -} - -bool UMRUKBPLibrary::LoadGlobalMeshFromJsonString(const FString& JsonString, FOculusXRUUID AnchorUUID, UProceduralMeshComponent* OutProceduralMesh, bool LoadCollision) -{ - ensure(OutProceduralMesh); - - TSharedPtr JsonValue; - auto JsonReader = TJsonReaderFactory<>::Create(JsonString); - if (!FJsonSerializer::Deserialize(JsonReader, JsonValue)) - { - UE_LOG(LogMRUK, Warning, TEXT("Could not deserialize global mesh JSON data")); - return false; - } - - auto JsonObject = JsonValue->AsObject(); - - // Find room - auto RoomsJson = JsonObject->GetArrayField(TEXT("Rooms")); - for (const auto& RoomJson : RoomsJson) - { - auto RoomObject = RoomJson->AsObject(); - FOculusXRUUID RoomUUID; - MRUKDeserialize(*RoomObject->GetField(TEXT("UUID")), RoomUUID); - if (RoomUUID == AnchorUUID) - { - // Find global mesh anchor - auto AnchorsJson = RoomObject->GetArrayField(TEXT("Anchors")); - for (const auto& AnchorJson : AnchorsJson) - { - auto AnchorObject = AnchorJson->AsObject(); - if (AnchorObject->HasField(TEXT("GlobalMesh"))) - { - auto GlobalMeshObject = AnchorObject->GetField(TEXT("GlobalMesh"))->AsObject(); - - auto PositionsJson = GlobalMeshObject->GetArrayField(TEXT("Positions")); - TArray Positions; - Positions.Reserve(PositionsJson.Num()); - for (const auto& PositionJson : PositionsJson) - { - FVector Position; - MRUKDeserialize(*PositionJson, Position); - Positions.Push(Position); - } - - auto IndicesJson = GlobalMeshObject->GetArrayField(TEXT("Indices")); - TArray Indices; - Indices.Reserve(IndicesJson.Num()); - for (const auto& IndexJson : IndicesJson) - { - double Index; - MRUKDeserialize(*IndexJson, Index); - Indices.Push((int32)Index); - } - - TArray EmptyNormals; - TArray EmptyUV; - TArray EmptyVertexColors; - TArray EmptyTangents; - OutProceduralMesh->CreateMeshSection(0, Positions, Indices, EmptyNormals, EmptyUV, EmptyVertexColors, EmptyTangents, LoadCollision); - - return true; - } - } - - break; - } - } - - UE_LOG(LogMRUK, Warning, TEXT("Could not find global mesh in room")); - - return false; -} - -void UMRUKBPLibrary::RecalculateProceduralMeshAndTangents(UProceduralMeshComponent* Mesh) -{ - if (!IsValid(Mesh)) - return; - - for (int s = 0; s < Mesh->GetNumSections(); ++s) - { - FProcMeshSection* Section = Mesh->GetProcMeshSection(s); - - // Get vertices of the section - TArray Vertices; - for (FProcMeshVertex Vertex : Section->ProcVertexBuffer) - { - Vertices.Add(Vertex.Position); - } - - // Calculate normals and tangents - TArray Normals = RecalculateNormals(Vertices, Section->ProcIndexBuffer); - TArray Tangents = RecalculateTangents(Normals); - TArray EmptyUV; - TArray EmptyVertexColors; - - // Update mesh section - Mesh->UpdateMeshSection(s, Vertices, Normals, EmptyUV, EmptyVertexColors, Tangents); - } -} - -bool UMRUKBPLibrary::IsUnrealEngineMetaFork() -{ -#if defined(WITH_OCULUS_BRANCH) - return true; -#else - return false; -#endif -} - -FVector2D UMRUKBPLibrary::ComputeCentroid(const TArray& PolygonPoints) -{ - FVector2D Centroid = FVector2D::ZeroVector; - - double SignedArea = 0.0; - for (int32 I = 0; I < PolygonPoints.Num(); ++I) - { - const double X0 = PolygonPoints[I].X; - const double Y0 = PolygonPoints[I].Y; - const double X1 = PolygonPoints[(I + 1) % PolygonPoints.Num()].X; - const double Y1 = PolygonPoints[(I + 1) % PolygonPoints.Num()].Y; - - const double A = X0 * Y1 - X1 * Y0; - SignedArea += A; - - Centroid.X += (X0 + X1) * A; - Centroid.Y += (Y0 + Y1) * A; - } - - return Centroid / (6.0 * (SignedArea * 0.5)); -} - -void UMRUKBPLibrary::SetScaleRecursivelyAdjustingForRotation(USceneComponent* SceneComponent, const FVector& UnRotatedScale) -{ - SetScaleRecursivelyAdjustingForRotationInternal(SceneComponent, UnRotatedScale, FQuat::Identity, FVector::OneVector); -} - -FVector UMRUKBPLibrary::ComputeDirectionAwayFromClosestWall(const AMRUKAnchor* Anchor, int& OutCardinalAxisIndex, const TArray ExcludedAxes) -{ - double ClosestWallDistance = DBL_MAX; - FVector AwayFromWall{}; - - for (int i = 0; i < 4; ++i) - { - if (ExcludedAxes.Contains(i)) - { - continue; - } - // Shoot a ray along the cardinal directions - // The "Up" (i.e. Z axis) for anchors typically points away from the facing direction, but it depends - // entirely on how the user defined the volume in scene capture. - const auto CardinalAxis = (FQuat::MakeFromEuler({ 0.0, 0.0, 90.0 * i }).RotateVector(Anchor->GetActorUpVector())); - - for (const auto& WallAnchor : Anchor->Room->WallAnchors) - { - if (!WallAnchor) - { - continue; - } - FMRUKHit Hit{}; - if (!WallAnchor->Raycast(Anchor->GetActorLocation(), CardinalAxis, 0.0, Hit)) - { - continue; - } - const auto DistToWall = FVector::Distance(Hit.HitPosition, Anchor->GetActorLocation()); - if (DistToWall < ClosestWallDistance) - { - ClosestWallDistance = DistToWall; - AwayFromWall = -CardinalAxis; - OutCardinalAxisIndex = i; - } - } - } - - return AwayFromWall; -} - -UTexture2D* UMRUKBPLibrary::ConstructTexture2D(UTextureRenderTarget2D* RenderTarget2D, UObject* Outer, const FString& TexName) -{ - const auto SizeX = RenderTarget2D->SizeX; - const auto SizeY = RenderTarget2D->SizeY; - const auto Tex = UTexture2D::CreateTransient(SizeX, SizeY, RenderTarget2D->GetFormat()); - Tex->AddToRoot(); - Tex->Filter = TF_Bilinear; - Tex->CompressionSettings = TC_Default; - Tex->SRGB = 0; - Tex->UpdateResource(); - - FTextureRenderTargetResource* RenderTargetResource = RenderTarget2D->GameThread_GetRenderTargetResource(); - FReadSurfaceDataFlags ReadSurfaceDataFlags; - ReadSurfaceDataFlags.SetLinearToGamma(false); - - TArray OutBMP; - RenderTargetResource->ReadPixels(OutBMP, ReadSurfaceDataFlags); - - FTexture2DMipMap& Mip = Tex->GetPlatformData()->Mips[0]; - void* Data = Mip.BulkData.Lock(LOCK_READ_WRITE); - FMemory::Memcpy(Data, OutBMP.GetData(), SizeX * SizeY * 4); - Mip.BulkData.Unlock(); - - Tex->UpdateResource(); - return Tex; -} - -FLinearColor UMRUKBPLibrary::GetMatrixColumn(const FMatrix& Matrix, int32 Index) -{ - ensure(0 <= Index && Index < 4); - FLinearColor V; - V.R = Matrix.M[0][Index]; - V.G = Matrix.M[1][Index]; - V.B = Matrix.M[2][Index]; - V.A = Matrix.M[3][Index]; - return V; -} - -TArray UMRUKBPLibrary::ComputeRoomBoxGrid(const AMRUKRoom* Room, int32 MaxPointsCount, double PointsPerUnitX, double PointsPerUnitY) -{ - TArray AllPoints; - - const double WorldToMeters = Room->GetWorld()->GetWorldSettings()->WorldToMeters; - for (const AMRUKAnchor* WallAnchor : Room->WallAnchors) - { - - const auto Points = GeneratePoints(WallAnchor->GetTransform(), WallAnchor->PlaneBounds, PointsPerUnitX, PointsPerUnitY, WorldToMeters); - AllPoints.Append(Points); - } - - // Generate points between floor and ceiling - const float DistFloorCeiling = Room->CeilingAnchor->GetTransform().GetLocation().Z - Room->FloorAnchor->GetTransform().GetLocation().Z; - const int32 PlanesCount = FMath::Max(FMathf::Ceil(PointsPerUnitY * DistFloorCeiling) / WorldToMeters, 1); - const int32 SpaceBetweenPlanes = DistFloorCeiling / PlanesCount; - for (int i = 1; i < PlanesCount; ++i) - { - FTransform Transform = Room->CeilingAnchor->GetTransform(); - Transform.SetLocation(FVector(Transform.GetLocation().X, Transform.GetLocation().Y, Transform.GetLocation().Z - (SpaceBetweenPlanes * i))); - const auto Points = GeneratePoints(Transform, Room->CeilingAnchor->PlaneBounds, PointsPerUnitX, PointsPerUnitY, WorldToMeters); - AllPoints.Append(Points); - } - - const auto CeilingPoints = GeneratePoints(Room->CeilingAnchor->GetTransform(), Room->CeilingAnchor->PlaneBounds, PointsPerUnitX, PointsPerUnitY, WorldToMeters); - AllPoints.Append(CeilingPoints); - - const auto FloorPoints = GeneratePoints(Room->FloorAnchor->GetTransform(), Room->FloorAnchor->PlaneBounds, PointsPerUnitX, PointsPerUnitY, WorldToMeters); - AllPoints.Append(FloorPoints); - - if (AllPoints.Num() > MaxPointsCount) - { - // Shuffle the array - AllPoints.Sort([](const FVector& /*Item1*/, const FVector& /*Item2*/) { - return FMath::FRand() < 0.5f; - }); - - // Randomly remove some points - int32 PointsToRemoveCount = AllPoints.Num() - MaxPointsCount; - while (PointsToRemoveCount > 0) - { - AllPoints.Pop(); - --PointsToRemoveCount; - } - } - return AllPoints; -} - -void UMRUKBPLibrary::CreateMeshSegmentation(const TArray& MeshPositions, const TArray& MeshIndices, - const TArray& SegmentationPoints, const FVector& ReservedMin, const FVector& ReservedMax, - TArray& OutSegments, FMRUKMeshSegment& OutReservedSegment) -{ - if (!MRUKShared::GetInstance()) - { - UE_LOG(LogMRUK, Error, TEXT("MRUK shared library is not available. To use this functionality make sure the library is included")); - return; - } - - TArray MeshPositionsF; - MeshPositionsF.Reserve(MeshPositions.Num()); - for (const FVector& V : MeshPositions) - { - MeshPositionsF.Add(FVector3f(V)); - } - - TArray SegmentationPointsF; - SegmentationPointsF.Reserve(SegmentationPoints.Num()); - for (const FVector& V : SegmentationPoints) - { - SegmentationPointsF.Add(FVector3f(V)); - } - - MRUKShared::MrukMesh3f* MeshSegmentsF = nullptr; - uint32_t MeshSegmentsCount = 0; - - MRUKShared::MrukMesh3f ReservedMeshSegmentF{}; - - const FVector3f ReservedMinF(ReservedMin); - const FVector3f ReservedMaxF(ReservedMax); - - MRUKShared::GetInstance()->ComputeMeshSegmentation(MeshPositionsF.GetData(), MeshPositionsF.Num(), MeshIndices.GetData(), - MeshIndices.Num(), SegmentationPointsF.GetData(), SegmentationPointsF.Num(), ReservedMinF, ReservedMaxF, &MeshSegmentsF, - &MeshSegmentsCount, &ReservedMeshSegmentF); - - OutSegments.Reserve(MeshSegmentsCount); - for (uint32_t i = 0; i < MeshSegmentsCount; ++i) - { - const MRUKShared::MrukMesh3f& SegmentF = MeshSegmentsF[i]; - if (SegmentF.numIndices == 0) - { - continue; - } - - FMRUKMeshSegment MeshSegment{}; - MeshSegment.Indices.Reserve(SegmentF.numIndices); - MeshSegment.Positions.Reserve(SegmentF.numVertices); - for (uint32_t j = 0; j < SegmentF.numIndices; ++j) - { - MeshSegment.Indices.Add(SegmentF.indices[j]); - } - for (uint32_t j = 0; j < SegmentF.numVertices; ++j) - { - const FVector3f& V = SegmentF.vertices[j]; - MeshSegment.Positions.Add({ V.X, V.Y, V.Z }); - } - - OutSegments.Emplace(MoveTemp(MeshSegment)); - } - - if (ReservedMeshSegmentF.numIndices && ReservedMeshSegmentF.numVertices) - { - OutReservedSegment.Indices.Reserve(ReservedMeshSegmentF.numIndices); - OutReservedSegment.Positions.Reserve(ReservedMeshSegmentF.numVertices); - for (uint32_t j = 0; j < ReservedMeshSegmentF.numIndices; ++j) - { - OutReservedSegment.Indices.Add(ReservedMeshSegmentF.indices[j]); - } - for (uint32_t j = 0; j < ReservedMeshSegmentF.numVertices; ++j) - { - const FVector3f& V = ReservedMeshSegmentF.vertices[j]; - OutReservedSegment.Positions.Add({ V.X, V.Y, V.Z }); - } - } - - MRUKShared::GetInstance()->FreeMeshSegmentation(MeshSegmentsF, MeshSegmentsCount, &ReservedMeshSegmentF); -} diff --git a/Plugins/MetaXR/Source/MRUtilityKit/Private/MRUtilityKitBlobShadowComponent.cpp b/Plugins/MetaXR/Source/MRUtilityKit/Private/MRUtilityKitBlobShadowComponent.cpp deleted file mode 100644 index b4e55ec..0000000 --- a/Plugins/MetaXR/Source/MRUtilityKit/Private/MRUtilityKitBlobShadowComponent.cpp +++ /dev/null @@ -1,145 +0,0 @@ -// Copyright (c) Meta Platforms, Inc. and affiliates. - -#include "MRUtilityKitBlobShadowComponent.h" -#include "MRUtilityKitTelemetry.h" -#include "MRUtilityKit.h" -#include "Kismet/KismetSystemLibrary.h" -#include "UObject/ConstructorHelpers.h" -#include "Materials/MaterialInstance.h" -#include "Materials/MaterialInstanceDynamic.h" -#include "Engine/StaticMesh.h" - -UMRUKBlobShadowComponent::UMRUKBlobShadowComponent() -{ - const ConstructorHelpers::FObjectFinder PlaneAsset(TEXT("/Engine/BasicShapes/Plane")); - if (PlaneAsset.Succeeded()) - { - SetStaticMesh(PlaneAsset.Object); - } - else - { - UE_LOG(LogMRUK, Log, TEXT("Blob shadow couldn't find plane mesh in /Engine/BasicShapes/Plane")); - } - - const ConstructorHelpers::FObjectFinder BlobShadowMaterialAsset(TEXT("/OculusXR/Materials/MI_BlobShadow")); - if (BlobShadowMaterialAsset.Succeeded()) - { - SetMaterial(0, BlobShadowMaterialAsset.Object); - } - else - { - UE_LOG(LogMRUK, Log, TEXT("Blob shadow couldn't find blob shadow material in /OculusXR/Materials/MI_BlobShadow")); - } - - // Prevent sorting issue with transparent ground - SetTranslucentSortPriority(1); - - // We don't want any collision - SetCollisionProfileName("NoCollision"); - - // Need tick to be enabled - SetComponentTickEnabled(true); - PrimaryComponentTick.bCanEverTick = true; - bAutoActivate = true; -} - -void UMRUKBlobShadowComponent::BeginPlay() -{ - Super::BeginPlay(); - - OculusXRTelemetry::TScopedMarker Event(static_cast(GetTypeHash(this))); - - // Create dynamic material (for roundness and gradient settings) - DynMaterial = CreateAndSetMaterialInstanceDynamic(0); - - // Since we're updating the component size and position every frame it's better to not be influenced by parent - SetUsingAbsoluteLocation(true); - SetUsingAbsoluteRotation(true); - SetUsingAbsoluteScale(true); - - // Compute size and position once - UpdatePlaneSizeAndPosition(); -} - -void UMRUKBlobShadowComponent::TickComponent(float DeltaTime, ELevelTick TickType, FActorComponentTickFunction* ThisTickFunction) -{ - Super::TickComponent(DeltaTime, TickType, ThisTickFunction); - - // Update component size and position every frame - UpdatePlaneSizeAndPosition(); -} - -void UMRUKBlobShadowComponent::UpdatePlaneSizeAndPosition() -{ - FVector Origin; - FVector2D Extent; - double Yaw; - ComputeOwner2DBounds(Origin, Extent, Yaw); - - Extent += FVector2D::UnitVector * ExtraExtent; // Additional extent - SetWorldScale3D(FVector(Extent * 0.02f, 1.f)); // Plane mesh is 100x100, multiplying by 0.02f to match the correct size when scaling - SetWorldRotation(FRotator(0.f, Yaw, 0.f)); - - // Sphere trace to the ground - FHitResult Hit; - TArray ActorsToIgnore; - ActorsToIgnore.Add(GetOwner()); - const bool bHasHit = UKismetSystemLibrary::SphereTraceSingle(this, Origin, Origin + FVector::DownVector * MaxVerticalDistance, Extent.Length() * 0.5f, TraceTypeQuery1, - true, ActorsToIgnore, EDrawDebugTrace::None, Hit, true); - float Opacity = 0.f; - if (bHasHit) - { - SetHiddenInGame(false); // Make plane visible - SetWorldLocation(Hit.ImpactPoint + FVector::UpVector * 0.02f); // Impact + some offset to avoid Z-fighting - Opacity = FMath::GetMappedRangeValueClamped( - FVector2D(MaxVerticalDistance - FadeDistance, MaxVerticalDistance), - FVector2D(1.f, 0.f), - Hit.Distance); // Set opacity based on distance to ground - } - else - SetHiddenInGame(true); // Hide plane - - // Update material's parameters - if (DynMaterial) - { - DynMaterial->SetScalarParameterValue("CornerWorldSize", FMath::Min(Extent.X, Extent.Y) * Roundness); - DynMaterial->SetScalarParameterValue("Gradient", Gradient); - DynMaterial->SetScalarParameterValue("GradientPower", GradientPower); - DynMaterial->SetScalarParameterValue("Opacity", Opacity); - } - else // In case DynMaterial doesn't exist (e.g. in editor), update values directly on the mesh - { - SetScalarParameterValueOnMaterials("CornerWorldSize", FMath::Min(Extent.X, Extent.Y) * Roundness); - SetScalarParameterValueOnMaterials("Gradient", Gradient); - SetScalarParameterValueOnMaterials("GradientPower", GradientPower); - SetScalarParameterValueOnMaterials("Opacity", Opacity); - } -} - -void UMRUKBlobShadowComponent::ComputeOwner2DBounds(FVector& Origin, FVector2D& Extent, double& Yaw) const -{ - const AActor* Actor = GetOwner(); - - // Calculate local space BoundingBox from all components, but keep yaw to have a correct 2D bounding box at the end - FBox Box(ForceInit); - const FRotator YawOnly = FRotator(0.f, Actor->GetActorRotation().Yaw, 0.f); - const FTransform ActorToWorld = FTransform(YawOnly.Quaternion()); - const FTransform WorldToActor = ActorToWorld.Inverse(); - - Actor->ForEachComponent(true, [&](const UPrimitiveComponent* InPrimComp) { - // Ignore editor & blob shadow components - if (InPrimComp->IsRegistered() && !InPrimComp->IsEditorOnly() && !InPrimComp->bUseAttachParentBound && !InPrimComp->IsA()) - { - const FTransform ComponentToActor = InPrimComp->GetComponentTransform() * WorldToActor; - Box += InPrimComp->CalcBounds(ComponentToActor).GetBox(); - } - }); - - const FTransform Transform = Actor->GetTransform(); - // Project 3D extent to 2D - const FVector ProjectedExtent = FVector::VectorPlaneProject(Box.GetExtent(), FVector::UpVector); - - Origin = ActorToWorld.TransformPosition(Box.GetCenter()); - Extent = FVector2D(ProjectedExtent); - Yaw = Transform.GetRotation().Rotator().Yaw; -} diff --git a/Plugins/MetaXR/Source/MRUtilityKit/Private/MRUtilityKitData.cpp b/Plugins/MetaXR/Source/MRUtilityKit/Private/MRUtilityKitData.cpp deleted file mode 100644 index 71aa011..0000000 --- a/Plugins/MetaXR/Source/MRUtilityKit/Private/MRUtilityKitData.cpp +++ /dev/null @@ -1,355 +0,0 @@ -// Copyright (c) Meta Platforms, Inc. and affiliates. - -#include "MRUtilityKitData.h" -#include "MRUtilityKitSubsystem.h" -#include "MRUtilityKitSerializationHelpers.h" -#include "MRUtilityKitTelemetry.h" -#include "OculusXRAnchorBPFunctionLibrary.h" -#include "OculusXRScene.h" -#include "Engine/World.h" -#include "Engine/GameInstance.h" -#include "GameFramework/WorldSettings.h" -#include "Serialization/JsonReader.h" -#include "Serialization/JsonSerializer.h" - -AMRUKLocalizer::AMRUKLocalizer() -{ - PrimaryActorTick.bCanEverTick = true; - PrimaryActorTick.bStartWithTickEnabled = true; -} - -void AMRUKLocalizer::Tick(float DeltaTime) -{ - for (int i = 0; i < AnchorsData.Num(); ++i) - { - const auto Query = AnchorsData[i]; - if (UOculusXRAnchorBPFunctionLibrary::GetAnchorTransformByHandle(Query->SpaceQuery.Space, Query->Transform)) - { - Query->NeedAnchorLocalization = false; - if (Query->SemanticClassifications.IsEmpty()) - { - UE_LOG(LogMRUK, Log, TEXT("Localized anchor %s"), *Query->SpaceQuery.UUID.ToString()); - } - else - { - UE_LOG(LogMRUK, Log, TEXT("Localized anchor %s - %s"), *Query->SpaceQuery.UUID.ToString(), *Query->SemanticClassifications[0]); - } - AnchorsData.RemoveAt(i); - --i; - } - } - - if (AnchorsData.IsEmpty()) - { - UE_LOG(LogMRUK, Log, TEXT("All anchors localized")); - OnComplete.Broadcast(true); - } -} - -void UMRUKAnchorData::LoadFromDevice(const FOculusXRAnchorsDiscoverResult& AnchorsDiscoverResult) -{ - SpaceQuery = AnchorsDiscoverResult; - - Transform = FTransform::Identity; - NeedAnchorLocalization = false; - if (!UOculusXRAnchorBPFunctionLibrary::GetAnchorTransformByHandle(SpaceQuery.Space, Transform)) - { - UE_LOG(LogMRUK, Log, TEXT("Anchor %s is not localized yet. Localize it async."), *SpaceQuery.UUID.ToString()); - NeedAnchorLocalization = true; - } - - EOculusXRAnchorResult::Type Result = OculusXRScene::FOculusXRScene::GetSemanticClassification(SpaceQuery.Space.Value, SemanticClassifications); - if (!UOculusXRAnchorBPFunctionLibrary::IsAnchorResultSuccess(Result)) - { - UE_LOG(LogMRUK, Error, TEXT("Failed to get semantic classification space for %s."), *SpaceQuery.UUID.ToString()); - } - - const UWorld* World = GetWorld(); - const float WorldToMeters = World ? World->GetWorldSettings()->WorldToMeters : 100.0; - - FVector ScenePlanePos; - FVector ScenePlaneSize; - Result = OculusXRScene::FOculusXRScene::GetScenePlane(SpaceQuery.Space, ScenePlanePos, ScenePlaneSize); - if (UOculusXRAnchorBPFunctionLibrary::IsAnchorResultSuccess(Result)) - { - const FVector2D PlanePos = FVector2D(ScenePlanePos.Y, ScenePlanePos.Z) * WorldToMeters; - const FVector2D PlaneSize = FVector2D(ScenePlaneSize.Y, ScenePlaneSize.Z) * WorldToMeters; - PlaneBounds = FBox2D(PlanePos, PlanePos + PlaneSize); - TArray SpaceBoundary2D; - Result = OculusXRScene::FOculusXRScene::GetBoundary2D(SpaceQuery.Space, SpaceBoundary2D); - if (UOculusXRAnchorBPFunctionLibrary::IsAnchorResultSuccess(Result)) - { - PlaneBoundary2D.Reserve(SpaceBoundary2D.Num()); - for (int i = 0; i < SpaceBoundary2D.Num(); ++i) - { - PlaneBoundary2D.Push(FVector2D(SpaceBoundary2D[i].X * WorldToMeters, SpaceBoundary2D[i].Y * WorldToMeters)); - } - } - } - - FVector SceneVolumePos; - FVector SceneVolumeSize; - Result = OculusXRScene::FOculusXRScene::GetSceneVolume(SpaceQuery.Space, SceneVolumePos, SceneVolumeSize); - if (UOculusXRAnchorBPFunctionLibrary::IsAnchorResultSuccess(Result)) - { - const FVector VolumePos = SceneVolumePos * WorldToMeters; - const FVector VolumeSize = SceneVolumeSize * WorldToMeters; - VolumeBounds = FBox(VolumePos, VolumePos + VolumeSize); - } -} - -void UMRUKAnchorData::LoadFromJson(const FJsonValue& Value) -{ - const auto Object = Value.AsObject(); - MRUKDeserialize(*Object->GetField(TEXT("UUID")), SpaceQuery.UUID); - MRUKDeserialize(*Object->GetField(TEXT("SemanticClassifications")), SemanticClassifications); - MRUKDeserialize(*Object->GetField(TEXT("Transform")), Transform); - if (const auto JsonValue = Object->TryGetField(TEXT("PlaneBounds"))) - { - MRUKDeserialize(*JsonValue, PlaneBounds); - } - if (const auto JsonValue = Object->TryGetField(TEXT("PlaneBoundary2D"))) - { - MRUKDeserialize(*JsonValue, PlaneBoundary2D); - } - if (const auto JsonValue = Object->TryGetField(TEXT("VolumeBounds"))) - { - MRUKDeserialize(*JsonValue, VolumeBounds); - } - NeedAnchorLocalization = false; -} - -void UMRUKRoomData::LoadFromDevice(UMRUKSceneData* Data, const FOculusXRAnchorsDiscoverResult& AnchorsDiscoverResult) -{ - SceneData = Data; - - SpaceQuery = AnchorsDiscoverResult; - - const auto Subsystem = GetWorld()->GetGameInstance()->GetSubsystem(); - - if (!Subsystem->GetRoomLayoutManager()->GetRoomLayout(SpaceQuery.Space.Value, RoomLayout)) - { - UE_LOG(LogMRUK, Error, TEXT("Could not query room layout")); - FinishQuery(false); - return; - } - - EOculusXRAnchorResult::Type Result{}; - - const auto Filter = NewObject(this); - Filter->Uuids = RoomLayout.RoomObjectUUIDs; - FOculusXRSpaceDiscoveryInfo DiscoveryInfo{}; - DiscoveryInfo.Filters.Push(Filter); - - OculusXRAnchors::FOculusXRAnchors::DiscoverAnchors(DiscoveryInfo, FOculusXRDiscoverAnchorsResultsDelegate::CreateUObject(this, &UMRUKRoomData::RoomDataLoadedIncrementalResults), FOculusXRDiscoverAnchorsCompleteDelegate::CreateUObject(this, &UMRUKRoomData::RoomDataLoadedComplete), Result); - if (Result != EOculusXRAnchorResult::Success) - { - UE_LOG(LogMRUK, Error, TEXT("Failed to discover anchors")); - FinishQuery(false); - } -} - -void UMRUKRoomData::LoadFromJson(UMRUKSceneData* Data, const FJsonValue& Value) -{ - SceneData = Data; - - const auto Object = Value.AsObject(); - MRUKDeserialize(*Object->GetField(TEXT("UUID")), SpaceQuery.UUID); - MRUKDeserialize(*Object->GetField(TEXT("RoomLayout")), RoomLayout); - auto AnchorsJson = Object->GetArrayField(TEXT("Anchors")); - for (const auto& AnchorJson : AnchorsJson) - { - auto AnchorQuery = NewObject(this); - AnchorsData.Push(AnchorQuery); - RoomLayout.RoomObjectUUIDs.Add(AnchorQuery->SpaceQuery.UUID); - AnchorQuery->LoadFromJson(*AnchorJson); - } - FinishQuery(true); -} - -void UMRUKRoomData::FinishQuery(bool Success) -{ - OnComplete.Broadcast(Success); -} - -void UMRUKRoomData::RoomDataLoadedComplete(EOculusXRAnchorResult::Type Result) -{ - if (!UOculusXRAnchorBPFunctionLibrary::IsAnchorResultSuccess(Result)) - { - UE_LOG(LogMRUK, Error, TEXT("Discovering room data failed")); - FinishQuery(false); - return; - } - - if (AnchorsData.Num() == 0) - { - UE_LOG(LogMRUK, Warning, TEXT("Discovered room which doesn't contain any anchors. Skip that room")); - SceneData->RoomsData.Remove(this); - AnchorsInitialized(true); - return; - } - - TArray AnchorQueriesLocalization; - - for (auto& AnchorQuery : AnchorsData) - { - if (AnchorQuery->NeedAnchorLocalization) - { - AnchorQueriesLocalization.Push(AnchorQuery); - } - } - - if (!AnchorQueriesLocalization.IsEmpty()) - { - UE_LOG(LogMRUK, Log, TEXT("Could not localize all anchors. Going to localize them async")); - FActorSpawnParameters ActorSpawnParams; - ActorSpawnParams.SpawnCollisionHandlingOverride = ESpawnActorCollisionHandlingMethod::AlwaysSpawn; - LocalizationActor = GetWorld()->SpawnActor(ActorSpawnParams); - LocalizationActor->AnchorsData = AnchorQueriesLocalization; - LocalizationActor->OnComplete.AddDynamic(this, &UMRUKRoomData::AnchorsInitialized); - } - else - { - AnchorsInitialized(true); - } -} - -void UMRUKRoomData::RoomDataLoadedIncrementalResults(const TArray& DiscoverResults) -{ - // NOTE: This function may be called multiple times in batches. E.g. if there are 18 anchors in a room, this may - // be called once with 10 anchors and a second time with 8 anchors in DiscoverResults. - UE_LOG(LogMRUK, Log, TEXT("Received %d anchors from device"), DiscoverResults.Num()); - - for (auto& DiscoverResult : DiscoverResults) - { - auto AnchorQuery = NewObject(this); - AnchorQuery->LoadFromDevice(DiscoverResult); - AnchorsData.Push(AnchorQuery); - } -} - -void UMRUKRoomData::AnchorsInitialized(bool Success) -{ - UE_LOG(LogMRUK, Log, TEXT("Anchors data initialized Success==%d"), Success); - if (IsValid(LocalizationActor)) - { - LocalizationActor->Destroy(); - LocalizationActor = nullptr; - } - FinishQuery(Success); -} - -void UMRUKSceneData::LoadFromDevice() -{ - NumRoomsLeftToInitialize = 0; - - EOculusXRAnchorResult::Type Result{}; - - const auto Filter = NewObject(this); - Filter->ComponentType = EOculusXRSpaceComponentType::RoomLayout; - FOculusXRSpaceDiscoveryInfo DiscoveryInfo{}; - DiscoveryInfo.Filters.Push(Filter); - - OculusXRAnchors::FOculusXRAnchors::DiscoverAnchors(DiscoveryInfo, FOculusXRDiscoverAnchorsResultsDelegate::CreateUObject(this, &UMRUKSceneData::SceneDataLoadedComplete), FOculusXRDiscoverAnchorsCompleteDelegate::CreateUObject(this, &UMRUKSceneData::SceneDataLoadedResult), Result); - if (Result != EOculusXRAnchorResult::Success) - { - UE_LOG(LogMRUK, Error, TEXT("Failed to discover room layouts")); - FinishQuery(false); - } -} - - -void UMRUKSceneData::LoadFromJson(const FString& Json) -{ - TSharedPtr Value; - const TSharedRef> JsonReader = TJsonReaderFactory<>::Create(Json); - if (!FJsonSerializer::Deserialize(JsonReader, Value)) - { - UE_LOG(LogMRUK, Warning, TEXT("Could not deserialize JSON scene data: %s"), *JsonReader->GetErrorMessage()); - FinishQuery(false); - return; - } - - const auto Object = Value->AsObject(); - auto RoomsJson = Object->GetArrayField(TEXT("Rooms")); - - OculusXRTelemetry::TScopedMarker Event(static_cast(GetTypeHash(this))); - Event.AddAnnotation("NumRooms", TCHAR_TO_ANSI(*FString::FromInt(RoomsJson.Num()))); - Event.SetResult(RoomsJson.Num() > 0 ? OculusXRTelemetry::EAction::Success : OculusXRTelemetry::EAction::Fail); - - if (RoomsJson.IsEmpty()) - { - UE_LOG(LogMRUK, Warning, TEXT("Could not find Rooms in JSON")); - FinishQuery(false); - return; - } - NumRoomsLeftToInitialize = RoomsJson.Num(); - UE_LOG(LogMRUK, Log, TEXT("Found %d rooms in JSON"), NumRoomsLeftToInitialize); - for (const auto& RoomJson : RoomsJson) - { - auto RoomQuery = NewObject(this); - RoomsData.Push(RoomQuery); - RoomQuery->OnComplete.AddDynamic(this, &UMRUKSceneData::RoomQueryComplete); - RoomQuery->LoadFromJson(this, *RoomJson); - } -} - -void UMRUKSceneData::FinishQuery(bool Success) -{ - if (!Success) - { - AnyRoomFailed = true; - } - --NumRoomsLeftToInitialize; - if (NumRoomsLeftToInitialize <= 0) - { - OnComplete.Broadcast(!AnyRoomFailed); - } -} - -void UMRUKSceneData::SceneDataLoadedResult(EOculusXRAnchorResult::Type Result) -{ - if (!UOculusXRAnchorBPFunctionLibrary::IsAnchorResultSuccess(Result) || RoomsData.IsEmpty()) - { - UE_LOG(LogMRUK, Error, TEXT("Discovering room layouts failed")); - FinishQuery(false); - } -} - -void UMRUKSceneData::SceneDataLoadedComplete(const TArray& DiscoverResults) -{ - NumRoomsLeftToInitialize = DiscoverResults.Num(); - UE_LOG(LogMRUK, Log, TEXT("Found on %d rooms on the device"), NumRoomsLeftToInitialize); - - OculusXRTelemetry::TScopedMarker Event(static_cast(GetTypeHash(this))); - Event.AddAnnotation("NumRooms", TCHAR_TO_ANSI(*FString::FromInt(DiscoverResults.Num()))); - Event.SetResult(DiscoverResults.Num() > 0 ? OculusXRTelemetry::EAction::Success : OculusXRTelemetry::EAction::Fail); - - if (NumRoomsLeftToInitialize == 0) - { - UE_LOG(LogMRUK, Error, TEXT("No room layouts discovered")); - FinishQuery(false); - return; - } - - for (auto& DiscoverResult : DiscoverResults) - { - auto RoomQuery = NewObject(this); - RoomsData.Push(RoomQuery); - RoomQuery->OnComplete.AddDynamic(this, &UMRUKSceneData::RoomQueryComplete); - RoomQuery->LoadFromDevice(this, DiscoverResult); - } -} - -void UMRUKSceneData::RoomQueryComplete(bool Success) -{ - if (!Success) - { - AnyRoomFailed = true; - } - --NumRoomsLeftToInitialize; - if (NumRoomsLeftToInitialize == 0) - { - FinishQuery(!AnyRoomFailed); - } -} diff --git a/Plugins/MetaXR/Source/MRUtilityKit/Private/MRUtilityKitDebugComponent.cpp b/Plugins/MetaXR/Source/MRUtilityKit/Private/MRUtilityKitDebugComponent.cpp deleted file mode 100644 index 5ec7972..0000000 --- a/Plugins/MetaXR/Source/MRUtilityKit/Private/MRUtilityKitDebugComponent.cpp +++ /dev/null @@ -1,208 +0,0 @@ -// Copyright (c) Meta Platforms, Inc. and affiliates. - -#include "MRUtilityKitDebugComponent.h" -#include "MRUtilityKitTelemetry.h" -#include "MRUtilityKitSubsystem.h" -#include "MRUtilityKitAnchor.h" -#include "Kismet/KismetMathLibrary.h" -#include "IXRTrackingSystem.h" -#include "TextRenderComponent.h" -#include "Engine/World.h" -#include "Engine/GameInstance.h" -#include "Engine/Engine.h" - -UMRUKDebugComponent::UMRUKDebugComponent() -{ - PrimaryComponentTick.bCanEverTick = true; -} - -void UMRUKDebugComponent::ShowAnchorAtRayHit(const FVector& Origin, const FVector& Direction) -{ - if (!GizmoActorClass) - { - UE_LOG(LogMRUK, Warning, TEXT("Can not show anchor because no gizmo actor is set")); - return; - } - - HideAnchor(); - - const auto Subsystem = GetOwner()->GetGameInstance()->GetSubsystem(); - if (!Subsystem) - { - UE_LOG(LogMRUK, Warning, TEXT("Can not show anchor because there is no MRUtilityKit subsystem")); - return; - } - - FMRUKHit Hit{}; - FMRUKLabelFilter LabelFilter{}; - auto Anchor = Subsystem->Raycast(Origin, Direction, 0.0, LabelFilter, Hit); - if (!Anchor) - { - return; - } - - // Spawn Gizmo - if (!ActiveGizmoActor) - { - FActorSpawnParameters ActorSpawnParams; - ActorSpawnParams.SpawnCollisionHandlingOverride = ESpawnActorCollisionHandlingMethod::AlwaysSpawn; - ActorSpawnParams.Owner = GetOwner(); - ActiveGizmoActor = GetWorld()->SpawnActor(GizmoActorClass, nullptr, ActorSpawnParams); - } - else - { - ActiveGizmoActor->SetActorHiddenInGame(false); - } - ActiveGizmoActor->SetActorLocation(Hit.HitPosition); - ActiveGizmoActor->SetActorScale3D(GizmoScale); - ActiveGizmoActor->SetActorRotation(Anchor->GetActorRotation()); - - if (!TextActorClass) - { - UE_LOG(LogMRUK, Warning, TEXT("Can not show text at anchor because no text actor is set")); - return; - } - - // Spawn Text - if (!ActiveTextActor) - { - FActorSpawnParameters ActorSpawnParams; - ActorSpawnParams.SpawnCollisionHandlingOverride = ESpawnActorCollisionHandlingMethod::AlwaysSpawn; - ActorSpawnParams.Owner = GetOwner(); - ActiveTextActor = GetWorld()->SpawnActor(TextActorClass, nullptr, ActorSpawnParams); - } - else - { - ActiveTextActor->SetActorHiddenInGame(false); - } - - auto TextRenderComponent = ActiveTextActor->GetComponentByClass(); - FString Text; - for (int i = 0; i < Anchor->SemanticClassifications.Num(); ++i) - { - if (i != 0) - { - Text += ", "; - } - Text += Anchor->SemanticClassifications[i]; - } - TextRenderComponent->SetText(FText::FromString(Text)); - - ActiveTextActor->SetActorLocation(Hit.HitPosition + (Hit.HitNormal * 20.0)); - ActiveTextActor->SetActorScale3D(TextScale); - OrientTextActorToPlayer(); - - SetComponentTickEnabled(true); -} - -void UMRUKDebugComponent::HideAnchor() -{ - if (ActiveGizmoActor) - { - ActiveGizmoActor->SetActorHiddenInGame(true); - } - if (ActiveTextActor) - { - ActiveTextActor->SetActorHiddenInGame(true); - } - SetComponentTickEnabled(false); -} - -void UMRUKDebugComponent::ShowAnchorSpaceAtRayHit(const FVector& Origin, const FVector& Direction) -{ - const auto Subsystem = GetOwner()->GetGameInstance()->GetSubsystem(); - if (!Subsystem) - { - UE_LOG(LogMRUK, Warning, TEXT("Can not show anchor because there is no MRUtilityKit subsystem")); - return; - } - - FMRUKHit Hit{}; - const auto Anchor = Subsystem->Raycast(Origin, Direction, 0.0, {}, Hit); - if (!Anchor) - { - return; - } - - if (!ActiveAnchorSpaceActor || (ActiveAnchorSpaceActor && ActiveAnchorSpaceActor->GetParentActor() != Anchor)) - { - static constexpr double DebugSpaceOffset = 0.5; - - HideAnchorSpace(); - - FActorSpawnParameters ActorSpawnParams; - ActorSpawnParams.SpawnCollisionHandlingOverride = ESpawnActorCollisionHandlingMethod::AlwaysSpawn; - ActorSpawnParams.Owner = Anchor; - ActiveAnchorSpaceActor = GetWorld()->SpawnActor(ActorSpawnParams); - ActiveAnchorSpaceActor->SetRootComponent(NewObject(ActiveAnchorSpaceActor, TEXT("SceneComponent"))); - ActiveAnchorSpaceActor->AttachToActor(Anchor, FAttachmentTransformRules::KeepRelativeTransform); - ActiveAnchorSpaceActor->GetRootComponent()->SetMobility(EComponentMobility::Movable); - - const auto ProceduralMesh = NewObject(ActiveAnchorSpaceActor, TEXT("DebugVolumePlane")); - Anchor->GenerateProceduralAnchorMesh(ProceduralMesh, {}, {}, true, false, DebugSpaceOffset); - ActiveAnchorSpaceActor->AddInstanceComponent(ProceduralMesh); - ProceduralMesh->SetupAttachment(ActiveAnchorSpaceActor->GetRootComponent()); - ProceduralMesh->RegisterComponent(); - } -} - -void UMRUKDebugComponent::HideAnchorSpace() -{ - if (ActiveAnchorSpaceActor) - { - ActiveAnchorSpaceActor->Destroy(); - ActiveAnchorSpaceActor = nullptr; - } -} - -void UMRUKDebugComponent::BeginPlay() -{ - Super::BeginPlay(); - - OculusXRTelemetry::TScopedMarker Event(static_cast(GetTypeHash(this))); - - SetComponentTickEnabled(false); -} - -void UMRUKDebugComponent::TickComponent(float DeltaTime, enum ELevelTick TickType, FActorComponentTickFunction* ThisTickFunction) -{ - Super::TickComponent(DeltaTime, TickType, ThisTickFunction); - - UE_LOG(LogTemp, Warning, TEXT("Ticking enabled")); - OrientTextActorToPlayer(); -} - -void UMRUKDebugComponent::EndPlay(const EEndPlayReason::Type EndPlayReason) -{ - Super::EndPlay(EndPlayReason); - - if (ActiveGizmoActor) - { - ActiveGizmoActor->Destroy(); - ActiveGizmoActor = nullptr; - } - if (ActiveTextActor) - { - ActiveTextActor->Destroy(); - ActiveTextActor = nullptr; - } - if (ActiveAnchorSpaceActor) - { - ActiveAnchorSpaceActor->Destroy(); - ActiveAnchorSpaceActor = nullptr; - } -} - -void UMRUKDebugComponent::OrientTextActorToPlayer() const -{ - if (ActiveTextActor) - { - FQuat Orientation; - FVector Position(0.0); - GEngine->XRSystem->GetCurrentPose(IXRTrackingSystem::HMDDeviceId, Orientation, Position); - const auto TextForward = (Position - ActiveTextActor->GetActorLocation()).GetSafeNormal(); - const auto TextUp = FVector::UpVector; - const auto TextRot = UKismetMathLibrary::MakeRotFromXZ(TextForward, TextUp); - ActiveTextActor->SetActorRotation(TextRot); - } -} diff --git a/Plugins/MetaXR/Source/MRUtilityKit/Private/MRUtilityKitDestructibleMesh.cpp b/Plugins/MetaXR/Source/MRUtilityKit/Private/MRUtilityKitDestructibleMesh.cpp deleted file mode 100644 index 31a6327..0000000 --- a/Plugins/MetaXR/Source/MRUtilityKit/Private/MRUtilityKitDestructibleMesh.cpp +++ /dev/null @@ -1,248 +0,0 @@ -// Copyright (c) Meta Platforms, Inc. and affiliates. - -#include "MRUtilityKitDestructibleMesh.h" - -#include "Engine/GameInstance.h" -#include "MRUtilityKitBPLibrary.h" -#include "MRUtilityKitSubsystem.h" -#include "MRUtilityKitAnchor.h" -#include "MRUtilityKitRoom.h" -#include "MRUtilityKitTelemetry.h" -#include "OculusXRTelemetry.h" -#include "Tasks/Task.h" - -constexpr const char* RESERVED_MESH_SEGMENT_TAG = "ReservedMeshSegment"; - -UMRUKDestructibleMeshComponent::UMRUKDestructibleMeshComponent(const FObjectInitializer& ObjectInitializer) - : UProceduralMeshComponent(ObjectInitializer) -{ - PrimaryComponentTick.bCanEverTick = true; -} - -void UMRUKDestructibleMeshComponent::SegmentMesh(const TArray& MeshPositions, const TArray& MeshIndices, const TArray& SegmentationPoints) -{ - TaskResult = UE::Tasks::Launch(UE_SOURCE_LOCATION, [this, MeshPositions, MeshIndices, SegmentationPoints]() { - TArray Segments; - FMRUKMeshSegment ReservedMeshSegment; - - const FVector ReservedMin(ReservedTop, -1.0, -1.0); - const FVector ReservedMax(ReservedBottom, -1.0, -1.0); - - UMRUKBPLibrary::CreateMeshSegmentation(MeshPositions, MeshIndices, SegmentationPoints, ReservedMin, ReservedMax, Segments, ReservedMeshSegment); - return TPair, FMRUKMeshSegment>{ MoveTemp(Segments), MoveTemp(ReservedMeshSegment) }; - }); - SetComponentTickEnabled(true); -} - -void UMRUKDestructibleMeshComponent::BeginPlay() -{ - Super::BeginPlay(); - SetComponentTickEnabled(false); -} - -void UMRUKDestructibleMeshComponent::TickComponent(float DeltaTime, ELevelTick TickType, FActorComponentTickFunction* ThisTickFunction) -{ - Super::TickComponent(DeltaTime, TickType, ThisTickFunction); - - if (!TaskResult.IsCompleted()) - { - return; - } - - const auto& [MeshSegments, ReservedMeshSegment] = TaskResult.GetResult(); - - for (int32 i = 0; i < MeshSegments.Num(); ++i) - { - const auto& [Positions, Indices] = MeshSegments[i]; - const FString ProcMeshName = FString::Printf(TEXT("DestructibleMeshSegment%d"), i); - const auto ProcMesh = NewObject(GetOwner(), *ProcMeshName); - const FAttachmentTransformRules TransformRules{ EAttachmentRule::KeepRelative, false }; - ProcMesh->AttachToComponent(GetOwner()->GetRootComponent(), TransformRules); - ProcMesh->RegisterComponent(); - ProcMesh->ComponentTags.AddUnique(TEXT("DestructibleMeshSegment")); - GetOwner()->AddInstanceComponent(ProcMesh); - ProcMesh->CreateMeshSection(0, Positions, Indices, {}, {}, {}, {}, true); - if (GlobalMeshMaterial) - { - ProcMesh->SetMaterial(0, GlobalMeshMaterial); - } - } - if (ReservedMeshSegment.Indices.Num() > 0) - { - const auto ProcMesh = NewObject(GetOwner(), TEXT("ReservedMeshSegment")); - const FAttachmentTransformRules TransformRules{ EAttachmentRule::KeepRelative, false }; - ProcMesh->AttachToComponent(GetOwner()->GetRootComponent(), TransformRules); - ProcMesh->RegisterComponent(); - ProcMesh->ComponentTags.AddUnique(RESERVED_MESH_SEGMENT_TAG); - GetOwner()->AddInstanceComponent(ProcMesh); - ProcMesh->CreateMeshSection(0, ReservedMeshSegment.Positions, ReservedMeshSegment.Indices, {}, {}, {}, {}, true); - if (GlobalMeshMaterial) - { - ProcMesh->SetMaterial(0, GlobalMeshMaterial); - } - } - - SetComponentTickEnabled(false); - - OnMeshesGenerated.Broadcast(); -} - -AMRUKDestructibleGlobalMesh::AMRUKDestructibleGlobalMesh() -{ - DestructibleMeshComponent = CreateDefaultSubobject(TEXT("DestructibleMesh")); - SetRootComponent(DestructibleMeshComponent); -} - -void AMRUKDestructibleGlobalMesh::CreateDestructibleMesh(AMRUKRoom* Room) -{ - const UMRUKSubsystem* MRUKSubsystem = GetWorld()->GetGameInstance()->GetSubsystem(); - if (!Room) - { - Room = MRUKSubsystem->GetCurrentRoom(); - } - if (!Room) - { - UE_LOG(LogMRUK, Warning, TEXT("Could not find a room for the destructible mesh")); - return; - } - if (!Room->GlobalMeshAnchor) - { - UE_LOG(LogMRUK, Warning, TEXT("No global mesh available for creating a destructible mesh")); - return; - } - const AMRUKAnchor* GlobalMesh = Room->GlobalMeshAnchor; - UProceduralMeshComponent* GlobalProcMesh = Cast(GlobalMesh->GetComponentByClass(UProceduralMeshComponent::StaticClass())); - if (!GlobalProcMesh) - { - Room->LoadGlobalMeshFromDevice(); - } - if (!GlobalProcMesh) - { - UE_LOG(LogMRUK, Warning, TEXT("Could not load a triangle mesh from the global mesh")); - return; - } - - // Attach to the global mesh - const FAttachmentTransformRules AttachmentTransformRules{ EAttachmentRule::KeepRelative, false }; - AttachToActor(Room->GlobalMeshAnchor, AttachmentTransformRules); - - // Get global mesh data - ensure(GlobalProcMesh); - ensure(GlobalProcMesh->ComponentHasTag("GlobalMesh")); - FProcMeshSection* ProcMeshSection = GlobalProcMesh->GetProcMeshSection(0); - TArray MeshPositions; - MeshPositions.SetNum(ProcMeshSection->ProcVertexBuffer.Num()); - for (int32 i = 0; i < ProcMeshSection->ProcVertexBuffer.Num(); ++i) - { - MeshPositions[i] = ProcMeshSection->ProcVertexBuffer[i].Position * GetWorldSettings()->WorldToMeters; - } - const TArray& MeshIndices = ProcMeshSection->ProcIndexBuffer; - - TArray SegmentationPointsWS = UMRUKBPLibrary::ComputeRoomBoxGrid(Room, MaxPointsCount, PointsPerUnitX, PointsPerUnitY); - - TArray SegmentationPointsLS; - SegmentationPointsLS.SetNum(SegmentationPointsWS.Num()); - const FTransform T = GlobalMesh->GetActorTransform().Inverse(); - for (int32 i = 0; i < SegmentationPointsWS.Num(); ++i) - { - SegmentationPointsLS[i] = T.TransformPosition(SegmentationPointsWS[i]); - } - DestructibleMeshComponent->SegmentMesh(MeshPositions, MeshIndices, SegmentationPointsLS); -} - -void AMRUKDestructibleGlobalMesh::RemoveGlobalMeshSegment(UPrimitiveComponent* Mesh) -{ - if (!Mesh->ComponentTags.Contains(RESERVED_MESH_SEGMENT_TAG)) - { - // Only remove mesh segments that are allowed to be destroyed - Mesh->DestroyComponent(); - } -} - -void AMRUKDestructibleGlobalMeshSpawner::BeginPlay() -{ - Super::BeginPlay(); - OculusXRTelemetry::TScopedMarker Event(static_cast(GetTypeHash(this))); - - if (SpawnMode == EMRUKSpawnMode::CurrentRoomOnly) - { - const auto Subsystem = GetGameInstance()->GetSubsystem(); - if (Subsystem->SceneLoadStatus == EMRUKInitStatus::Complete) - { - AddDestructibleGlobalMesh(Subsystem->GetCurrentRoom()); - } - else - { - // Only listen for the room created event in case no current room was available yet - Subsystem->OnRoomCreated.AddUniqueDynamic(this, &AMRUKDestructibleGlobalMeshSpawner::OnRoomCreated); - // Remove destructible meshes as soon as the room gets removed - Subsystem->OnRoomRemoved.AddUniqueDynamic(this, &AMRUKDestructibleGlobalMeshSpawner::OnRoomRemoved); - } - } - else if (SpawnMode == EMRUKSpawnMode::AllRooms) - { - const auto Subsystem = GetGameInstance()->GetSubsystem(); - for (auto Room : Subsystem->Rooms) - { - AddDestructibleGlobalMesh(Room); - } - - // Listen for new rooms that get created - Subsystem->OnRoomCreated.AddUniqueDynamic(this, &AMRUKDestructibleGlobalMeshSpawner::OnRoomCreated); - // Remove destructible meshes as soon as the room gets removed - Subsystem->OnRoomRemoved.AddUniqueDynamic(this, &AMRUKDestructibleGlobalMeshSpawner::OnRoomRemoved); - } -} - -void AMRUKDestructibleGlobalMeshSpawner::OnRoomCreated(AMRUKRoom* Room) -{ - if (SpawnMode == EMRUKSpawnMode::CurrentRoomOnly && GetGameInstance()->GetSubsystem()->GetCurrentRoom() != Room) - { - // Skip this room if it is not the current room - return; - } - AddDestructibleGlobalMesh(Room); -} - -void AMRUKDestructibleGlobalMeshSpawner::OnRoomRemoved(AMRUKRoom* Room) -{ - if (!IsValid(Room)) - { - return; - } - - if (AMRUKDestructibleGlobalMesh** Mesh = SpawnedMeshes.Find(Room)) - { - (*Mesh)->Destroy(); - SpawnedMeshes.Remove(Room); - } -} - -AMRUKDestructibleGlobalMesh* AMRUKDestructibleGlobalMeshSpawner::FindDestructibleMeshForRoom(AMRUKRoom* Room) -{ - if (AMRUKDestructibleGlobalMesh** Mesh = SpawnedMeshes.Find(Room)) - { - return *Mesh; - } - return nullptr; -} - -AMRUKDestructibleGlobalMesh* AMRUKDestructibleGlobalMeshSpawner::AddDestructibleGlobalMesh(AMRUKRoom* Room) -{ - if (SpawnedMeshes.Contains(Room)) - { - return SpawnedMeshes[Room]; - } - - AMRUKDestructibleGlobalMesh* Mesh = GetWorld()->SpawnActor(); - Mesh->PointsPerUnitX = PointsPerUnitX; - Mesh->PointsPerUnitY = PointsPerUnitY; - Mesh->MaxPointsCount = MaxPointsCount; - Mesh->DestructibleMeshComponent->GlobalMeshMaterial = GlobalMeshMaterial; - Mesh->DestructibleMeshComponent->ReservedBottom = ReservedBottom; - Mesh->DestructibleMeshComponent->ReservedTop = ReservedTop; - Mesh->CreateDestructibleMesh(); - SpawnedMeshes.Add(Room, Mesh); - - return Mesh; -} diff --git a/Plugins/MetaXR/Source/MRUtilityKit/Private/MRUtilityKitDistanceMapGenerator.cpp b/Plugins/MetaXR/Source/MRUtilityKit/Private/MRUtilityKitDistanceMapGenerator.cpp deleted file mode 100644 index 2ff38a1..0000000 --- a/Plugins/MetaXR/Source/MRUtilityKit/Private/MRUtilityKitDistanceMapGenerator.cpp +++ /dev/null @@ -1,427 +0,0 @@ -// Copyright (c) Meta Platforms, Inc. and affiliates. - -#include "MRUtilityKitDistanceMapGenerator.h" -#include "MRUtilityKitSubsystem.h" -#include "MRUtilityKit.h" -#include "MRUtilityKitRoom.h" -#include "MRUtilityKitAnchor.h" -#include "Components/SceneCaptureComponent2D.h" -#include "Engine/CanvasRenderTarget2D.h" -#include "Engine/Canvas.h" -#include "Engine/GameInstance.h" -#include "Engine/World.h" -#include "Kismet/KismetRenderingLibrary.h" -#include "Materials/MaterialInstanceDynamic.h" -#include "Materials/MaterialInterface.h" -#include "UObject/ConstructorHelpers.h" - -AMRUKDistanceMapGenerator::AMRUKDistanceMapGenerator() -{ - // Create components - - Root = CreateDefaultSubobject(TEXT("DefaultSceneRoot")); - SceneCapture2D = CreateDefaultSubobject(TEXT("SceneCapture2D")); - - RootComponent = Root; - - // Setup components - - SceneCapture2D->SetupAttachment(Root); - SceneCapture2D->ProjectionType = ECameraProjectionMode::Orthographic; - SceneCapture2D->OrthoWidth = 512.0f; - SceneCapture2D->CaptureSource = ESceneCaptureSource::SCS_SceneColorHDR; - SceneCapture2D->PrimitiveRenderMode = ESceneCapturePrimitiveRenderMode::PRM_UseShowOnlyList; - SceneCapture2D->bCaptureEveryFrame = false; - SceneCapture2D->bCaptureOnMovement = false; - - const ConstructorHelpers::FObjectFinder RT1Finder(TEXT("/OculusXR/Textures/CRT_JumpFlood1")); - if (RT1Finder.Succeeded()) - { - RenderTarget1 = RT1Finder.Object; - } - const ConstructorHelpers::FObjectFinder RT2Finder(TEXT("/OculusXR/Textures/CRT_JumpFlood2")); - if (RT2Finder.Succeeded()) - { - RenderTarget2 = RT2Finder.Object; - } - const ConstructorHelpers::FObjectFinder RTMaskFinder(TEXT("/OculusXR/Textures/CRT_Mask")); - if (RTMaskFinder.Succeeded()) - { - SceneCapture2D->TextureTarget = RTMaskFinder.Object; - } - const ConstructorHelpers::FObjectFinder RTDistanceMapFinder(TEXT("/OculusXR/Textures/CRT_DistanceMap")); - if (RTDistanceMapFinder.Succeeded()) - { - DistanceMapRenderTarget = RTDistanceMapFinder.Object; - } - - const ConstructorHelpers::FObjectFinder MaskMaterialFinder(TEXT("/OculusXR/Materials/M_CreateMask")); - if (MaskMaterialFinder.Succeeded()) - { - MaskMaterial = MaskMaterialFinder.Object; - } - const ConstructorHelpers::FObjectFinder JFPassMaterialFinder(TEXT("/OculusXR/Materials/M_JFAPass")); - if (JFPassMaterialFinder.Succeeded()) - { - JFPassMaterial = JFPassMaterialFinder.Object; - } - - const ConstructorHelpers::FObjectFinder SceneObjectMaskMaterialFinder(TEXT("/OculusXR/Materials/M_SceneObjectMask")); - if (SceneObjectMaskMaterialFinder.Succeeded()) - { - SceneObjectMaskMaterial = SceneObjectMaskMaterialFinder.Object; - } - - const ConstructorHelpers::FObjectFinder FloorMaskMaterialFinder(TEXT("/OculusXR/Materials/M_FloorMask")); - if (FloorMaskMaterialFinder.Succeeded()) - { - FloorMaskMaterial = FloorMaskMaterialFinder.Object; - } - - const ConstructorHelpers::FObjectFinder DistanceMapFreeSpaceMaterialFinder(TEXT("/OculusXR/Materials/M_DistanceMapFree")); - if (DistanceMapFreeSpaceMaterialFinder.Succeeded()) - { - DistanceMapFreeSpaceMaterial = DistanceMapFreeSpaceMaterialFinder.Object; - } - - const ConstructorHelpers::FObjectFinder DistanceMapOccupiedSpaceMaterialFinder(TEXT("/OculusXR/Materials/M_DistanceMapOccupied")); - if (DistanceMapOccupiedSpaceMaterialFinder.Succeeded()) - { - DistanceMapOccupiedSpaceMaterial = DistanceMapOccupiedSpaceMaterialFinder.Object; - } - - const ConstructorHelpers::FObjectFinder DistanceMapAllSpaceMaterialFinder(TEXT("/OculusXR/Materials/M_DistanceMapAll")); - if (DistanceMapAllSpaceMaterialFinder.Succeeded()) - { - DistanceMapAllSpaceMaterial = DistanceMapAllSpaceMaterialFinder.Object; - } -} - -void AMRUKDistanceMapGenerator::BeginPlay() -{ - Super::BeginPlay(); - - SceneObjectMaskMaterial->EnsureIsComplete(); - FloorMaskMaterial->EnsureIsComplete(); - - if (SpawnMode == EMRUKSpawnMode::CurrentRoomOnly) - { - const auto Subsystem = GetGameInstance()->GetSubsystem(); - if (AMRUKRoom* CurrentRoom = Subsystem->GetCurrentRoom()) - { - CreateMaskMeshesForRoom(CurrentRoom); - } - else - { - Subsystem->OnRoomCreated.AddUniqueDynamic(this, &AMRUKDistanceMapGenerator::OnRoomCreated); - } - } - else if (SpawnMode == EMRUKSpawnMode::AllRooms) - { - const auto Subsystem = GetGameInstance()->GetSubsystem(); - for (auto& Room : Subsystem->Rooms) - { - CreateMaskMeshesForRoom(Room); - } - - Subsystem->OnRoomCreated.AddUniqueDynamic(this, &AMRUKDistanceMapGenerator::OnRoomCreated); - } -} - -UTexture* AMRUKDistanceMapGenerator::CaptureDistanceMap() -{ - CaptureInitialSceneMask(); - RenderDistanceMap(); - return GetDistanceMap(); -} - -void AMRUKDistanceMapGenerator::CaptureInitialSceneMask() -{ - if (!JFPassMaterialInstance) - { - JFPassMaterialInstance = UMaterialInstanceDynamic::Create(JFPassMaterial, this); - } - if (DistanceMapFreeSpaceMaterial && !DistanceMapFreeSpaceMaterialInstance) - { - DistanceMapFreeSpaceMaterialInstance = UMaterialInstanceDynamic::Create(DistanceMapFreeSpaceMaterial, this); - } - if (DistanceMapOccupiedSpaceMaterial && !DistanceMapOccupiedSpaceMaterialInstance) - { - DistanceMapOccupiedSpaceMaterialInstance = UMaterialInstanceDynamic::Create(DistanceMapOccupiedSpaceMaterial, this); - } - if (DistanceMapAllSpaceMaterial && !DistanceMapAllSpaceMaterialInstance) - { - DistanceMapAllSpaceMaterialInstance = UMaterialInstanceDynamic::Create(DistanceMapAllSpaceMaterial, this); - } - - check(SceneCapture2D->TextureTarget->SizeX == SceneCapture2D->TextureTarget->SizeY); - - SceneCapture2D->CaptureScene(); - - // Renders the texture that was captured by the scene capture component into a mask that can then be used further down - - UKismetRenderingLibrary::ClearRenderTarget2D(GetWorld(), RenderTarget1, FLinearColor::Black); - - UCanvas* Canvas{}; - FVector2D Size{}; - FDrawToRenderTargetContext RenderTargetContext{}; - UKismetRenderingLibrary::BeginDrawCanvasToRenderTarget(GetWorld(), RenderTarget1, Canvas, Size, RenderTargetContext); - - Canvas->K2_DrawMaterial(MaskMaterial, FVector2D::ZeroVector, Size, FVector2D::ZeroVector); - - UKismetRenderingLibrary::EndDrawCanvasToRenderTarget(GetWorld(), RenderTargetContext); -} - -void AMRUKDistanceMapGenerator::RenderDistanceMap() -{ - UCanvasRenderTarget2D* RTs[2] = { RenderTarget1, RenderTarget2 }; - - int32 RTIndex = 0; - - const double TextureSize = SceneCapture2D->TextureTarget->SizeX; - - check(TextureSize == RenderTarget1->SizeX); - check(TextureSize == RenderTarget1->SizeY); - check(TextureSize == RenderTarget2->SizeX); - check(TextureSize == RenderTarget2->SizeY); - - const int32 LastIndex = static_cast(FMath::Log2(TextureSize / 2.0)); - - // Play buffer ping pong and execute the jump flood algorithm on each step - - for (int32 I = 1; I <= LastIndex; ++I) - { - // Read from the render target that we have written before - JFPassMaterialInstance->SetTextureParameterValue(FName("RT"), RTs[RTIndex]); - const double Step = 1.0 / FMath::Pow(2.0, static_cast(I)); - JFPassMaterialInstance->SetScalarParameterValue(FName("Step"), Step); - - // Make sure to render to the other render target - RTIndex = (RTIndex + 1) % 2; - UCanvasRenderTarget2D* RT = RTs[RTIndex]; - - UKismetRenderingLibrary::ClearRenderTarget2D(GetWorld(), RT, FLinearColor::Black); - - UCanvas* Canvas{}; - FVector2D Size{}; - FDrawToRenderTargetContext RenderTargetContext{}; - UKismetRenderingLibrary::BeginDrawCanvasToRenderTarget(GetWorld(), RT, Canvas, Size, RenderTargetContext); - - Canvas->K2_DrawMaterial(JFPassMaterialInstance, FVector2D::ZeroVector, Size, FVector2D::ZeroVector); - - UKismetRenderingLibrary::EndDrawCanvasToRenderTarget(GetWorld(), RenderTargetContext); - } - - DistanceMapRT = RTIndex; - - if (DistanceMapGenerationMode != EMRUKDistanceMapGenerationMode::None) - { - UMaterialInstanceDynamic* RenderMaterial = nullptr; - - UKismetRenderingLibrary::ClearRenderTarget2D(GetWorld(), DistanceMapRenderTarget); - UCanvas* Canvas{}; - FVector2D Size{}; - FDrawToRenderTargetContext RenderTargetContext{}; - UKismetRenderingLibrary::BeginDrawCanvasToRenderTarget(GetWorld(), DistanceMapRenderTarget, Canvas, Size, RenderTargetContext); - switch (DistanceMapGenerationMode) - { - case EMRUKDistanceMapGenerationMode::FreeSpace: - RenderMaterial = DistanceMapFreeSpaceMaterialInstance; - break; - case EMRUKDistanceMapGenerationMode::OccupiedSpace: - RenderMaterial = DistanceMapOccupiedSpaceMaterialInstance; - break; - case EMRUKDistanceMapGenerationMode::AllSpace: - RenderMaterial = DistanceMapAllSpaceMaterialInstance; - break; - case EMRUKDistanceMapGenerationMode::None: - RenderMaterial = nullptr; - break; - } - if (RenderMaterial) - { - RenderMaterial->SetTextureParameterValue(FName("RT"), GetDistanceMapRenderTarget()); - Canvas->K2_DrawMaterial(RenderMaterial, FVector2D::ZeroVector, Size, FVector2D::ZeroVector); - } - UKismetRenderingLibrary::EndDrawCanvasToRenderTarget(GetWorld(), RenderTargetContext); - } -} - -void AMRUKDistanceMapGenerator::OnRoomCreated(AMRUKRoom* Room) -{ - if (SpawnMode == EMRUKSpawnMode::CurrentRoomOnly && GetGameInstance()->GetSubsystem()->GetCurrentRoom() != Room) - { - // Skip this room if it is not the current room - return; - } - - CreateMaskMeshesForRoom(Room); -} - -void AMRUKDistanceMapGenerator::OnRoomUpdated(AMRUKRoom* Room) -{ - if (!SpawnedMaskMeshes.Find(Room)) - { - // A room was updated that we don't care about. If we are in current room only mode - // we only want to update the one room we created - return; - } - - CreateMaskMeshesForRoom(Room); -} - -void AMRUKDistanceMapGenerator::CreateMaskMeshesForRoom(AMRUKRoom* Room) -{ - if (!Room) - { - UE_LOG(LogMRUK, Warning, TEXT("Can not create masked meshes for room that is a nullptr")); - return; - } - - if (TArray* Actors = SpawnedMaskMeshes.Find(Room)) - { - for (AActor* Actor : *Actors) - { - Actor->Destroy(); - } - Actors->Empty(); - SpawnedMaskMeshes.Remove(Room); - } - - // Create for each anchor a mesh with a material to use as a mask - // to initialize the jump flood algorithm. - - TArray SpawnedActors; - - for (auto& Anchor : Room->AllAnchors) - { - if (!Anchor->VolumeBounds.IsValid) - { - continue; - } - - SpawnedActors.Push(CreateMaskMeshOfAnchor(Anchor)); - } - if (Room->FloorAnchor) - { - SpawnedActors.Push(CreateMaskMeshOfAnchor(Room->FloorAnchor)); - } - - SpawnedMaskMeshes.Add(Room, SpawnedActors); - - const auto Subsystem = GetGameInstance()->GetSubsystem(); - Subsystem->OnRoomRemoved.AddUniqueDynamic(this, &AMRUKDistanceMapGenerator::RemoveMaskMeshesFromRoom); - Subsystem->OnRoomUpdated.AddUniqueDynamic(this, &AMRUKDistanceMapGenerator::OnRoomUpdated); - - OnReady.Broadcast(); -} - -AActor* AMRUKDistanceMapGenerator::CreateMaskMeshOfAnchor(AMRUKAnchor* Anchor) -{ - check(Anchor); - - FActorSpawnParameters ActorSpawnParams{}; - ActorSpawnParams.SpawnCollisionHandlingOverride = ESpawnActorCollisionHandlingMethod::AlwaysSpawn; - ActorSpawnParams.Owner = Anchor; - AActor* Actor = GetWorld()->SpawnActor(ActorSpawnParams); - - Actor->Tags.Push(GMRUK_DISTANCE_MAP_ACTOR_TAG); - - const auto R = NewObject(Actor, TEXT("Root")); - Actor->SetRootComponent(R); - R->RegisterComponent(); - Actor->AddInstanceComponent(R); - - Actor->AttachToActor(Anchor, FAttachmentTransformRules::KeepRelativeTransform); - - const auto ProceduralMesh = NewObject(Actor, TEXT("DistanceMapMesh")); - Anchor->GenerateProceduralAnchorMesh(ProceduralMesh, {}, {}, true, false); - - // Set a material depending if the anchor is the floor or a scene object. - // The different materials have different colors. These colors will be used to create different - // initialization masks for the jump flood algorithm. - - if (Anchor == Anchor->Room->FloorAnchor) - { - ProceduralMesh->SetMaterial(0, FloorMaskMaterial); - } - else - { - ProceduralMesh->SetMaterial(0, SceneObjectMaskMaterial); - } - - ProceduralMesh->SetupAttachment(Actor->GetRootComponent()); - ProceduralMesh->RegisterComponent(); - Actor->AddInstanceComponent(ProceduralMesh); - - // The created meshes will be only used to create a mask for jump flood. - // Therefore we don't want them to show up in the normal camera. - // This unfortunate means that the meshes will show up in other scene captures the user may place as well. - - ProceduralMesh->SetVisibleInSceneCaptureOnly(true); - SceneCapture2D->ShowOnlyActors.Push(Actor); - - return Actor; -} - -AActor* AMRUKDistanceMapGenerator::UpdateMaskMeshOfAnchor(AMRUKAnchor* Anchor) -{ - TArray ChildActors; - Anchor->GetAllChildActors(ChildActors); - - for (auto Child : ChildActors) - { - if (Child->ActorHasTag(GMRUK_DISTANCE_MAP_ACTOR_TAG)) - { - // Remove existing distance map actor - SceneCapture2D->ShowOnlyActors.Remove(Child); - Child->Destroy(); - } - } - - return CreateMaskMeshOfAnchor(Anchor); -} - -UTexture* AMRUKDistanceMapGenerator::GetDistanceMap() const -{ - return GetDistanceMapRenderTarget(); -} - -UCanvasRenderTarget2D* AMRUKDistanceMapGenerator::GetDistanceMapRenderTarget() const -{ - if (DistanceMapRT == -1) - { - UE_LOG(LogMRUK, Warning, TEXT("Make sure to first render the distance map by calling CaptureDistanceMap()")); - return nullptr; - } - check(DistanceMapRT >= 0); - - UCanvasRenderTarget2D* RTs[2] = { RenderTarget1, RenderTarget2 }; - return RTs[DistanceMapRT]; -} - -FMinimalViewInfo AMRUKDistanceMapGenerator::GetSceneCaptureView() const -{ - FMinimalViewInfo Info = {}; - SceneCapture2D->GetCameraView(1.0f, Info); - return Info; -} - -void AMRUKDistanceMapGenerator::RemoveMaskMeshesFromRoom(AMRUKRoom* Room) -{ - if (!Room) - { - UE_LOG(LogMRUK, Warning, TEXT("Can not remove masked meshes for room that is a nullptr")); - return; - } - - if (TArray* Actors = SpawnedMaskMeshes.Find(Room)) - { - for (AActor* Actor : *Actors) - { - Actor->Destroy(); - } - Actors->Empty(); - SpawnedMaskMeshes.Remove(Room); - } -} diff --git a/Plugins/MetaXR/Source/MRUtilityKit/Private/MRUtilityKitGeometry.cpp b/Plugins/MetaXR/Source/MRUtilityKit/Private/MRUtilityKitGeometry.cpp deleted file mode 100644 index e0cc413..0000000 --- a/Plugins/MetaXR/Source/MRUtilityKit/Private/MRUtilityKitGeometry.cpp +++ /dev/null @@ -1,42 +0,0 @@ -// Copyright (c) Meta Platforms, Inc. and affiliates. - -#include "MRUtilityKitGeometry.h" - -#include "MRUtilityKit.h" -#include "Generated/MRUtilityKitShared.h" - -void MRUKTriangulatePolygon(const TArray>& Polygons, TArray& Vertices, TArray& Indices) -{ - Vertices.Empty(); - Indices.Empty(); - - auto MRUKShared = MRUKShared::GetInstance(); - if (!MRUKShared) - { - UE_LOG(LogMRUK, Error, TEXT("MRUK shared library is not available. To use this functionality make sure the library is included")); - return; - } - - TArray ConvertedPolygons; - ConvertedPolygons.Reserve(Polygons.Num()); - for (const auto& Polygon : Polygons) - { - ConvertedPolygons.Push({ Polygon.GetData(), static_cast(Polygon.Num()) }); - } - - auto Mesh = MRUKShared->TriangulatePolygon(ConvertedPolygons.GetData(), ConvertedPolygons.Num()); - - Vertices.Reserve(Mesh.numVertices); - Indices.Reserve(Mesh.numIndices); - - for (uint32_t i = 0; i < Mesh.numVertices; ++i) - { - Vertices.Push(FVector2D(Mesh.vertices[i])); - } - for (uint32_t i = 0; i < Mesh.numIndices; ++i) - { - Indices.Push(Mesh.indices[i]); - } - - MRUKShared->FreeMesh(&Mesh); -} diff --git a/Plugins/MetaXR/Source/MRUtilityKit/Private/MRUtilityKitGridSliceResizer.cpp b/Plugins/MetaXR/Source/MRUtilityKit/Private/MRUtilityKitGridSliceResizer.cpp deleted file mode 100644 index 9d34135..0000000 --- a/Plugins/MetaXR/Source/MRUtilityKit/Private/MRUtilityKitGridSliceResizer.cpp +++ /dev/null @@ -1,281 +0,0 @@ -// Copyright (c) Meta Platforms, Inc. and affiliates. - -#include "MRUtilityKitGridSliceResizer.h" - -#include "MRUtilityKit.h" -#include "MRUtilityKitTelemetry.h" -#include "OculusXRTelemetry.h" -#include "Engine/StaticMesh.h" -#include "ProceduralMeshComponent.h" -#include "StaticMeshResources.h" - -UMRUKGridSliceResizerComponent::UMRUKGridSliceResizerComponent() -{ - PrimaryComponentTick.bCanEverTick = true; - - ProcMesh = CreateDefaultSubobject(TEXT("ProcMesh")); - ProcMesh->SetupAttachment(this); -} - -void UMRUKGridSliceResizerComponent::BeginPlay() -{ - Super::BeginPlay(); - OculusXRTelemetry::TScopedMarker Event(static_cast(GetTypeHash(this))); - SliceMesh(); -} - -void UMRUKGridSliceResizerComponent::OnRegister() -{ - Super::OnRegister(); - SliceMesh(); -} - -void UMRUKGridSliceResizerComponent::TickComponent(float DeltaTime, ELevelTick TickType, FActorComponentTickFunction* ThisTickFunction) -{ - Super::TickComponent(DeltaTime, TickType, ThisTickFunction); - - const FVector ActorScale = GetOwner() ? GetOwner()->GetActorScale() : FVector::OneVector; - if (Mesh && ActorScale != ResizerScale) - { - ResizerScale = ActorScale; - SliceMesh(); - } -} - -#if WITH_EDITOR -void UMRUKGridSliceResizerComponent::PostEditChangeProperty(FPropertyChangedEvent& PropertyChangedEvent) -{ - Super::PostEditChangeProperty(PropertyChangedEvent); - - if (PropertyChangedEvent.Property->GetOwner() == GetOwner()) - { - return; - } - - const FName PropertyName = (PropertyChangedEvent.Property != nullptr) ? PropertyChangedEvent.Property->GetFName() : NAME_None; - if (PropertyName == GET_MEMBER_NAME_CHECKED(UMRUKGridSliceResizerComponent, BorderXNegative) - || PropertyName == GET_MEMBER_NAME_CHECKED(UMRUKGridSliceResizerComponent, BorderXPositive) - || PropertyName == GET_MEMBER_NAME_CHECKED(UMRUKGridSliceResizerComponent, BorderYNegative) - || PropertyName == GET_MEMBER_NAME_CHECKED(UMRUKGridSliceResizerComponent, BorderYPositive) - || PropertyName == GET_MEMBER_NAME_CHECKED(UMRUKGridSliceResizerComponent, BorderZNegative) - || PropertyName == GET_MEMBER_NAME_CHECKED(UMRUKGridSliceResizerComponent, BorderZPositive) - || PropertyName == GET_MEMBER_NAME_CHECKED(UMRUKGridSliceResizerComponent, SlicerPivotOffset)) - { - SliceMesh(); - } -} -#endif - -void UMRUKGridSliceResizerComponent::SliceMesh() -{ - if (!Mesh) - { - return; - } - - if (!Mesh->bAllowCPUAccess) - { - UE_LOG(LogMRUK, Error, TEXT("Can not slice a mesh that has no CPU access. Make sure you enable CPU access on the static mesh asset.")); - return; - } - - TArray Positions; - TArray Normals; - TArray UVs; - TArray Colors; - TArray Triangles; - - const FStaticMeshLODResources& LODResources = Mesh->GetRenderData()->LODResources[0]; - const FStaticMeshVertexBuffers& VertexBuffers = LODResources.VertexBuffers; - const FRawStaticIndexBuffer& IndexBuffer = LODResources.IndexBuffer; - - Positions.SetNum(LODResources.GetNumVertices()); - Normals.SetNum(LODResources.GetNumVertices()); - UVs.SetNum(LODResources.GetNumVertices()); - Colors.SetNum(LODResources.GetNumVertices()); - - const FVector ActorScale = GetOwner() ? GetOwner()->GetActorScale() : FVector::OneVector; - const FVector ActorScaleInv = FVector(1.0 / ActorScale.X, 1.0 / ActorScale.Y, 1.0 / ActorScale.Z); - const FVector Size = ActorScale; - - // Slicing - - FTransform PivotTransform; - PivotTransform.SetLocation(-SlicerPivotOffset); - - FTransform ScaledInvPivotTransform; - ScaledInvPivotTransform.SetLocation(Size * SlicerPivotOffset); - - // The bounding box of the mesh to resize - FBox BBox = Mesh->GetBoundingBox(); - BBox = FBox(PivotTransform.TransformPosition(BBox.Min), PivotTransform.TransformPosition(BBox.Max)); - - // The bounding box of the mesh to resize scaled by the size - const FBox BBoxScaled = FBox(BBox.Min * Size, BBox.Max * Size); - - // The bounding box of the mesh to resize scaled including the pivot point - // This may be a bigger box as ScaledBBox in case the pivot is outside of the scaled bounding box. - const FBox BBoxScaledPivot = FBox( - FVector(FMath::Min(BBox.Min.X, SlicerPivotOffset.X), FMath::Min(BBox.Min.Y, SlicerPivotOffset.Y), FMath::Min(BBox.Min.Z, SlicerPivotOffset.Z)), - FVector(FMath::Max(BBox.Max.X, SlicerPivotOffset.X), FMath::Max(BBox.Max.Y, SlicerPivotOffset.Y), FMath::Max(BBox.Max.Z, SlicerPivotOffset.Z))); - - // Locations of the border slices between 0 - 1 - FVector BorderPos = FVector(BorderXPositive, BorderYPositive, BorderZPositive); - FVector BorderNeg = FVector(BorderXNegative, BorderYNegative, BorderZNegative); - - // Locations of the border slices for the X,Y,Z axis in local space - FVector BorderPosLS; - FVector BorderNegLS; - - // Distance from the Border[Pos|Neg]LS to the outer maximum/minimum of the BBox - FVector StubPos; - FVector StubNeg; - - // The inner bounding box that should be stretched in all directions - FVector BBoxInnerMax; - FVector BBoxInnerMin; - - // The expected bounding box of the inner bounding box when its scaled up by the size - FVector BBoxInnerScaledMax; - FVector BBoxInnerScaledMin; - - // The ratio between the inner bounding box and the scaled bounding box - FVector InnerBoxScaleRatioMax; - FVector InnerBoxScaleRatioMin; - - // The ratio to use for downscaling in case it's needed - FVector DownscaleMax; - FVector DownscaleMin; - - for (int32 I = 0; I < 3; ++I) - { - // We don't want to have division by zero further down the line - BorderPos[I] = FMath::Clamp(BorderPos[I], DBL_EPSILON, 1.0); - BorderNeg[I] = FMath::Clamp(BorderNeg[I], DBL_EPSILON, 1.0); - - BorderPosLS[I] = BBoxScaledPivot.Max[I] - (1.0 - BorderPos[I]) * FMath::Abs(BBoxScaledPivot.Max[I]); - BorderNegLS[I] = BBoxScaledPivot.Min[I] + (1.0 - BorderNeg[I]) * FMath::Abs(BBoxScaledPivot.Min[I]); - - StubPos[I] = FMath::Abs(BBox.Max[I] - BorderPosLS[I]); - StubNeg[I] = FMath::Abs(BBox.Min[I] - BorderNegLS[I]); - - BBoxInnerMax[I] = BBox.Max[I] - StubPos[I]; - BBoxInnerMin[I] = BBox.Min[I] + StubNeg[I]; - - // Max may be negative and Min may be positive in case the stubs are greater than - // the scaled down bounding box and therefore don't fit the scaled bounding box. - // This case gets treated special down below. - BBoxInnerScaledMax[I] = BBoxScaled.Max[I] - StubPos[I]; - BBoxInnerScaledMin[I] = BBoxScaled.Min[I] + StubNeg[I]; - - InnerBoxScaleRatioMax[I] = FMath::Max(0.0, BBoxInnerScaledMax[I] / BBoxInnerMax[I]); - InnerBoxScaleRatioMin[I] = FMath::Max(0.0, BBoxInnerScaledMin[I] / BBoxInnerMin[I]); - - // When Downscale[Min/Max] needs to be applied the temporary bounding box is - // Max == StubPos, Min == StubNeg. Therefore get the ratio between it and the - // expected scaled down bounding box to calculate the scale that needs - // to be applied - DownscaleMax[I] = BBoxScaled.Max[I] / StubPos[I]; - DownscaleMin[I] = BBoxScaled.Min[I] / StubNeg[I]; - } - - // Process vertices - - // If the center shouldn't be scaled we need to take care of the case when the original - // center vertices would be outside of the expected downscaled bounding box. Therefore, iterate - // through all vertices and check if the center vertices are outside. If they are outside we need - // to scale down the center part as usually. - // This unfortunately has to be done in a separate first pass. - bool ScaleDownCenter[3] = { false, false, false }; - - const int32 VertexCount = LODResources.GetNumVertices(); - for (int32 I = 0; I < VertexCount; ++I) - { - const FVector3f& Normal = VertexBuffers.StaticMeshVertexBuffer.VertexTangentZ(I); - Normals[I] = FVector(Normal.X, Normal.Y, Normal.Z); - - const FVector2f& UV = VertexBuffers.StaticMeshVertexBuffer.GetVertexUV(I, 0); - UVs[I] = FVector2D(UV.X, UV.Y); - - const FVector3f& P = VertexBuffers.PositionVertexBuffer.VertexPosition(I); - - // Apply pivot offset - Positions[I] = PivotTransform.TransformPosition(FVector(P.X, P.Y, P.Z)); - const FVector& Position = Positions[I]; - - for (int32 A = 0; A < 3; ++A) - { - if ((0.0 <= Position[A] && Position[A] <= BorderPosLS[A]) && (Position[A] > BBoxInnerScaledMax[A])) - { - ScaleDownCenter[A] = true; - } - else if ((BorderNegLS[A] <= Position[A] && Position[A] <= 0.0) && (Position[A] < BBoxInnerScaledMin[A])) - { - ScaleDownCenter[A] = true; - } - } - } - - bool bScaleCenter[3] = {}; - bScaleCenter[0] = ScaleCenterMode & static_cast(EMRUKScaleCenterMode::XAxis) ? true : false; - bScaleCenter[1] = ScaleCenterMode & static_cast(EMRUKScaleCenterMode::YAxis) ? true : false; - bScaleCenter[2] = ScaleCenterMode & static_cast(EMRUKScaleCenterMode::ZAxis) ? true : false; - - for (FVector& Position : Positions) - { - // Apply computations on each axis - - for (int32 A = 0; A < 3; ++A) - { - if ((bScaleCenter[A] || ScaleDownCenter[A]) && (0.0 <= Position[A] && Position[A] <= BorderPosLS[A])) - { - // Vertex is inside the inner distance and should be stretched - Position[A] *= InnerBoxScaleRatioMax[A]; - } - else if ((bScaleCenter[A] || ScaleDownCenter[A]) && (BorderNegLS[A] <= Position[A] && Position[A] <= 0.0)) - { - // Vertex is inside the inner distance and should be stretched - Position[A] *= InnerBoxScaleRatioMin[A]; - } - else if (BorderPosLS[A] < Position[A]) - { - // Vertex is inside the outer stub and should not be stretched - // Perform linear transform of vertices into their expect position - Position[A] = BorderPosLS[A] * InnerBoxScaleRatioMax[A] + (Position[A] - BorderPosLS[A]); - if (BBoxInnerScaledMax[A] < 0.0) - { - // The mesh that would result from the linear transform above is still not small enough to - // fit into the expected scaled down bounding box. This means the stubs need to be scaled down - // to make them fit. - Position[A] *= DownscaleMax[A]; - } - } - else if (Position[A] < BorderNegLS[A]) - { - // Vertex is inside the outer stub and should not be stretched - // Perform linear transform of vertices into their expect position - Position[A] = BorderNegLS[A] * InnerBoxScaleRatioMin[A] - (BorderNegLS[A] - Position[A]); - if (BBoxInnerScaledMin[A] > 0.0) - { - // The mesh that would result from the linear transform above is still not small enough to - // fit into the expected scaled down bounding box. This means the stubs need to be scaled down - // to make them fit. - Position[A] *= -DownscaleMin[A]; - } - } - } - - // Undo pivot offset - Position = ActorScaleInv * ScaledInvPivotTransform.TransformPosition(Position); - } - - Triangles.SetNum(IndexBuffer.GetNumIndices()); - for (int32 I = 0; I < IndexBuffer.GetNumIndices(); ++I) - { - Triangles[I] = IndexBuffer.GetIndex(I); - } - - ProcMesh->ClearMeshSection(0); - ProcMesh->CreateMeshSection(0, Positions, Triangles, Normals, UVs, Colors, {}, bGenerateCollision); - ProcMesh->SetMaterial(0, Mesh->GetMaterial(0)); -} diff --git a/Plugins/MetaXR/Source/MRUtilityKit/Private/MRUtilityKitGuardian.cpp b/Plugins/MetaXR/Source/MRUtilityKit/Private/MRUtilityKitGuardian.cpp deleted file mode 100644 index 708231c..0000000 --- a/Plugins/MetaXR/Source/MRUtilityKit/Private/MRUtilityKitGuardian.cpp +++ /dev/null @@ -1,17 +0,0 @@ -// Copyright (c) Meta Platforms, Inc. and affiliates. - -#include "MRUtilityKitGuardian.h" - -AMRUKGuardian::AMRUKGuardian(const FObjectInitializer& ObjectInitializer) - : Super(ObjectInitializer) -{ - // Create a scene component as root so we can attach spawned actors to it - RootComponent = CreateDefaultSubobject(TEXT("SceneComponent")); -} - -void AMRUKGuardian::CreateGuardian(UProceduralMeshComponent* GuardianMesh) -{ - GuardianMesh->SetupAttachment(RootComponent); - GuardianMesh->RegisterComponent(); - GuardianMeshComponent = GuardianMesh; -} diff --git a/Plugins/MetaXR/Source/MRUtilityKit/Private/MRUtilityKitGuardianSpawner.cpp b/Plugins/MetaXR/Source/MRUtilityKit/Private/MRUtilityKitGuardianSpawner.cpp deleted file mode 100644 index 6ced608..0000000 --- a/Plugins/MetaXR/Source/MRUtilityKit/Private/MRUtilityKitGuardianSpawner.cpp +++ /dev/null @@ -1,235 +0,0 @@ -// Copyright (c) Meta Platforms, Inc. and affiliates. - -#include "MRUtilityKitGuardianSpawner.h" - -#include "Engine/GameInstance.h" -#include "Engine/GameEngine.h" -#include "IXRTrackingSystem.h" -#include "Materials/MaterialInstanceDynamic.h" -#include "MRUtilityKitAnchor.h" -#include "MRUtilityKitGuardian.h" -#include "MRUtilityKitRoom.h" -#include "MRUtilityKitSubsystem.h" -#include "MRUtilityKitTelemetry.h" - -AMRUKGuardianSpawner::AMRUKGuardianSpawner() -{ - PrimaryActorTick.bCanEverTick = true; - PrimaryActorTick.bTickEvenWhenPaused = true; - PrimaryActorTick.TickGroup = TG_PrePhysics; -} - -void AMRUKGuardianSpawner::SetGuardianMaterial(UMaterialInstance* Material) -{ - if (!Material) - { - return; - } - - GuardianMaterial = Material; - DynamicGuardianMaterial = UMaterialInstanceDynamic::Create(GuardianMaterial, this); - DynamicGuardianMaterial->SetVectorParameterValue(TEXT("WallScale"), FVector(GridDensity)); - - // Recreate guardian meshes - TArray Rooms; - SpawnedGuardians.GetKeys(Rooms); - for (AMRUKRoom* Room : Rooms) - { - SpawnGuardians(Room); - } -} - -void AMRUKGuardianSpawner::SpawnGuardians(AMRUKRoom* Room) -{ - if (!IsValid(Room)) - { - UE_LOG(LogMRUK, Warning, TEXT("Can not spawn Guardians for a room that is a nullptr")); - return; - } - - // Remove guardians that are already in this room - DestroyGuardians(Room); - - const auto Subsystem = GetGameInstance()->GetSubsystem(); - Subsystem->OnRoomUpdated.AddUniqueDynamic(this, &AMRUKGuardianSpawner::OnRoomUpdated); - Subsystem->OnRoomRemoved.AddUniqueDynamic(this, &AMRUKGuardianSpawner::OnRoomRemoved); - - const auto SpawnGuardian = [this](AMRUKAnchor* Anchor, const TArray& PlaneUVAdjustments) { - // Create guardian actor - const auto GuardianActor = GetWorld()->SpawnActor(); - GuardianActor->AttachToComponent(Anchor->GetRootComponent(), FAttachmentTransformRules::KeepRelativeTransform); - GuardianActor->SetActorHiddenInGame(IsHidden()); - - // Generate procedural mesh - const auto ProceduralMesh = NewObject(GuardianActor, TEXT("GuardianMesh")); - Anchor->GenerateProceduralAnchorMesh(ProceduralMesh, PlaneUVAdjustments, {}, true, false, 0.01); - ProceduralMesh->SetMaterial(0, DynamicGuardianMaterial); - GuardianActor->CreateGuardian(ProceduralMesh); - - return GuardianActor; - }; - - TArray SpawnedActors; - - // Attach procedural meshes to the walls first because they are connected. - TArray AnchorsWithPlaneUVs; - const TArray WallTextureCoordinateModes = { { EMRUKCoordModeU::Metric, EMRUKCoordModeV::Metric } }; - Room->ComputeWallMeshUVAdjustments(WallTextureCoordinateModes, AnchorsWithPlaneUVs); - - for (const auto& [Anchor, PlaneUVs] : AnchorsWithPlaneUVs) - { - SpawnedActors.Push(SpawnGuardian(Anchor, PlaneUVs)); - } - - // Attach procedural meshes to the rest of the anchors. The walls have already meshes applied - // because of the first step and will therefore be ignored by this code automatically. - for (const auto& Anchor : Room->AllAnchors) - { - if (!Anchor || Anchor == Room->FloorAnchor || Anchor == Room->CeilingAnchor || Room->IsWallAnchor(Anchor)) - { - continue; - } - - SpawnedActors.Push(SpawnGuardian(Anchor, {})); - } - - SpawnedGuardians.Add(Room, SpawnedActors); -} - -void AMRUKGuardianSpawner::SetGridDensity(double Density) -{ - GridDensity = Density; - - if (DynamicGuardianMaterial) - { - DynamicGuardianMaterial->SetVectorParameterValue(TEXT("WallScale"), FVector(GridDensity)); - } -} - -void AMRUKGuardianSpawner::Tick(float DeltaSeconds) -{ - if (!DynamicGuardianMaterial) - { - return; - } - - if (EnableFade) - { - const auto Subsystem = GetGameInstance()->GetSubsystem(); - const auto CurrentRoom = Subsystem->GetCurrentRoom(); - if (!CurrentRoom) - { - return; - } - - FQuat HeadsetOrientation; - FVector HeadsetPosition(0.f); - GEngine->XRSystem->GetCurrentPose(IXRTrackingSystem::HMDDeviceId, HeadsetOrientation, HeadsetPosition); - - FVector SurfacePosition = FVector::ZeroVector; - double SurfaceDistance = 0.0; - FMRUKLabelFilter LabelFilter; - LabelFilter.ExcludedLabels = { FMRUKLabels::Ceiling, FMRUKLabels::Floor }; - CurrentRoom->TryGetClosestSurfacePosition(HeadsetPosition, SurfacePosition, SurfaceDistance, LabelFilter); - - const auto WorldToMeters = GetWorldSettings()->WorldToMeters; - const auto GuardianFade = FMath::Clamp(1.0 - ((SurfaceDistance / WorldToMeters) / GuardianDistance), 0.0, 1.0); - DynamicGuardianMaterial->SetScalarParameterValue(TEXT("Fade"), GuardianFade); - } -} - -void AMRUKGuardianSpawner::BeginPlay() -{ - Super::BeginPlay(); - - SetGuardianMaterial(GuardianMaterial); - - OculusXRTelemetry::TScopedMarker Event(static_cast(GetTypeHash(this))); - - if (SpawnMode == EMRUKSpawnMode::CurrentRoomOnly) - { - const auto Subsystem = GetGameInstance()->GetSubsystem(); - if (Subsystem->SceneLoadStatus == EMRUKInitStatus::Complete) - { - if (AMRUKRoom* CurrentRoom = Subsystem->GetCurrentRoom()) - { - SpawnGuardians(CurrentRoom); - } - } - else - { - // Only listen for the room created event in case no current room was available yet - Subsystem->OnRoomCreated.AddUniqueDynamic(this, &AMRUKGuardianSpawner::OnRoomCreated); - } - } - else if (SpawnMode == EMRUKSpawnMode::AllRooms) - { - const auto Subsystem = GetGameInstance()->GetSubsystem(); - for (auto Room : Subsystem->Rooms) - { - SpawnGuardians(Room); - } - - // Listen for new rooms that get created - Subsystem->OnRoomCreated.AddUniqueDynamic(this, &AMRUKGuardianSpawner::OnRoomCreated); - } -} - -#if WITH_EDITOR -void AMRUKGuardianSpawner::PostEditChangeProperty(FPropertyChangedEvent& PropertyChangedEvent) -{ - const auto PropertyName = (PropertyChangedEvent.Property != nullptr) ? PropertyChangedEvent.Property->GetFName() : NAME_None; - if (PropertyName == GET_MEMBER_NAME_CHECKED(AMRUKGuardianSpawner, GridDensity)) - { - SetGridDensity(GridDensity); - } - else if (PropertyName == GET_MEMBER_NAME_CHECKED(AMRUKGuardianSpawner, GuardianMaterial)) - { - SetGuardianMaterial(GuardianMaterial); - } - Super::PostEditChangeProperty(PropertyChangedEvent); -} -#endif - -void AMRUKGuardianSpawner::OnRoomCreated(AMRUKRoom* Room) -{ - if (SpawnMode == EMRUKSpawnMode::CurrentRoomOnly && GetGameInstance()->GetSubsystem()->GetCurrentRoom() != Room) - { - // Skip this room if it is not the current room - return; - } - - SpawnGuardians(Room); -} - -void AMRUKGuardianSpawner::OnRoomUpdated(AMRUKRoom* Room) -{ - if (!SpawnedGuardians.Find(Room)) - { - // A room was updated that we don't care about. If we are in current room only mode - // we only want to update the one room we created - return; - } - SpawnGuardians(Room); -} - -void AMRUKGuardianSpawner::OnRoomRemoved(AMRUKRoom* Room) -{ - DestroyGuardians(Room); -} - -void AMRUKGuardianSpawner::DestroyGuardians(AMRUKRoom* Room) -{ - if (TArray* Actors = SpawnedGuardians.Find(Room)) - { - for (AActor* Actor : *Actors) - { - if (IsValid(Actor)) - { - Actor->Destroy(); - } - } - Actors->Empty(); - SpawnedGuardians.Remove(Room); - } -} diff --git a/Plugins/MetaXR/Source/MRUtilityKit/Private/MRUtilityKitLightDispatcher.cpp b/Plugins/MetaXR/Source/MRUtilityKit/Private/MRUtilityKitLightDispatcher.cpp deleted file mode 100644 index 5e50afb..0000000 --- a/Plugins/MetaXR/Source/MRUtilityKit/Private/MRUtilityKitLightDispatcher.cpp +++ /dev/null @@ -1,161 +0,0 @@ -// Copyright (c) Meta Platforms, Inc. and affiliates. - -#include "MRUtilityKitLightDispatcher.h" -#include "MRUtilityKit.h" -#include "MRUtilityKitTelemetry.h" -#include "Components/PointLightComponent.h" -#include "Engine/PointLight.h" -#include "Engine/World.h" -#include "Kismet/GameplayStatics.h" -#include "Kismet/KismetMaterialLibrary.h" -#include "Materials/MaterialParameterCollection.h" -#include "Materials/MaterialParameterCollectionInstance.h" -#include "UObject/ConstructorHelpers.h" - -AMRUKLightDispatcher::AMRUKLightDispatcher() -{ - PrimaryActorTick.bCanEverTick = true; - - const ConstructorHelpers::FObjectFinder MpcAsset(TEXT("/OculusXR/Materials/MPC_Highlights")); - if (MpcAsset.Succeeded()) - { - Collection = MpcAsset.Object; - } - else - { - UE_LOG(LogMRUK, Log, TEXT("Light dispatcher couldn't find material parameter collection in /OculusXR/Materials/MPC_Highlights")); - } -} - -void AMRUKLightDispatcher::Tick(float DeltaSeconds) -{ - Super::Tick(DeltaSeconds); - FillParameterCollection(); -} - -void AMRUKLightDispatcher::FillParameterCollection() -{ - if (!Collection || PointLightComponents.IsEmpty()) - { - return; - } - - UMaterialParameterCollectionInstance* Instance = GetWorld()->GetParameterCollectionInstance(Collection); - - for (int i = 0; i < PointLightComponents.Num(); i++) - { - const UPointLightComponent* Light = PointLightComponents[i]; - if (!IsValid(Light)) - { - continue; - } - - const int Step = i * 3; - - // It's not possible to expand the amount of parameters in collection at runtime, - // in case we exceed the count of existing parameters break the loop - if (Collection->VectorParameters.Num() < Step + 3) - { - break; - } - - // Prepare parameters - FCollectionVectorParameter PositionParam, DataParam, ColorParam; - - PositionParam.ParameterName = FName("PointLightPosition" + FString::FromInt(i)); - DataParam.ParameterName = FName("PointLightData" + FString::FromInt(i)); - ColorParam.ParameterName = FName("PointLightColor" + FString::FromInt(i)); - - PositionParam.DefaultValue = FLinearColor(Light->GetComponentLocation()); - DataParam.DefaultValue = FLinearColor(1.f / Light->AttenuationRadius, Light->ComputeLightBrightness(), Light->LightFalloffExponent, Light->bUseInverseSquaredFalloff); - ColorParam.DefaultValue = Light->GetLightColor(); - - // Fill collection's vector parameters - Collection->VectorParameters[Step] = PositionParam; - Collection->VectorParameters[Step + 1] = DataParam; - Collection->VectorParameters[Step + 2] = ColorParam; - } - - // Send count of lights - Collection->ScalarParameters[0].DefaultValue = PointLightComponents.Num(); - UKismetMaterialLibrary::SetScalarParameterValue(GetWorld(), Collection, "TotalLights", PointLightComponents.Num()); - - // Update instance - Instance->UpdateRenderState(false); -} - -void AMRUKLightDispatcher::AddAdditionalPointLightActor(AActor* Actor) -{ - AdditionalActorsToLookForPointLightComponents.AddUnique(Actor); - AddPointLightsFromActor(Actor); -} - -void AMRUKLightDispatcher::ForceUpdateCollection() -{ - FillPointLights(); - FillParameterCollection(); - PointLightComponents.Empty(); -} - -void AMRUKLightDispatcher::BeginPlay() -{ - Super::BeginPlay(); - OculusXRTelemetry::TScopedMarker Event(static_cast(GetTypeHash(this))); - FillPointLights(); -} - -void AMRUKLightDispatcher::FillPointLights() -{ - // Make sure we don't have duplicates in the array - PointLightComponents.Empty(); - - if (ShouldFetchPointLightsAtBeginPlay) - { - // Fetch all point light actors from the level - - TArray PointLightActors; - UGameplayStatics::GetAllActorsOfClass(this, APointLight::StaticClass(), PointLightActors); - - for (AActor* Actor : PointLightActors) - { - const APointLight* PointLightActor = Cast(Actor); - - PointLightComponents.Add(PointLightActor->PointLightComponent); - } - } - else - { - // Only use the point lights that have been specified in ManualPointLights - - for (AActor* Actor : ManualPointLights) - { - if (!IsValid(Actor)) - { - continue; - } - - const APointLight* PointLightActor = Cast(Actor); - - PointLightComponents.Add(PointLightActor->PointLightComponent); - } - } - - // Check the additional added actors for point lights and add them in case they have - // PointLightComponents attached - for (const AActor* Actor : AdditionalActorsToLookForPointLightComponents) - { - if (!IsValid(Actor)) - { - continue; - } - - AddPointLightsFromActor(Actor); - } -} - -void AMRUKLightDispatcher::AddPointLightsFromActor(const AActor* Actor) -{ - TArray LightComponents; - Actor->GetComponents(LightComponents, false); - PointLightComponents.Append(LightComponents); -} diff --git a/Plugins/MetaXR/Source/MRUtilityKit/Private/MRUtilityKitPositionGenerator.cpp b/Plugins/MetaXR/Source/MRUtilityKit/Private/MRUtilityKitPositionGenerator.cpp deleted file mode 100644 index 3d2bac0..0000000 --- a/Plugins/MetaXR/Source/MRUtilityKit/Private/MRUtilityKitPositionGenerator.cpp +++ /dev/null @@ -1,220 +0,0 @@ -// Copyright (c) Meta Platforms, Inc. and affiliates. - -#include "MRUtilityKitPositionGenerator.h" -#include "MRUtilityKitSubsystem.h" -#include "Engine/OverlapResult.h" -#include "Engine/World.h" -#include "Engine/GameInstance.h" -#include "CollisionShape.h" - -bool AMRUtilityKitPositionGenerator::CanSpawnBox(const UWorld* World, const FBox& Box, const FVector& SpawnPosition, const FQuat& SpawnRotation, const FCollisionQueryParams& QueryParams, const ECollisionChannel CollisionChannel) -{ - TArray OutOverlaps; - const bool bHasOverlap = World->OverlapMultiByChannel(OutOverlaps, SpawnPosition, SpawnRotation, CollisionChannel, FCollisionShape::MakeBox(Box.GetExtent()), QueryParams); - return !bHasOverlap; -} - -void AMRUtilityKitPositionGenerator::BeginPlay() -{ - Super::BeginPlay(); - - if (RunOnStart) - { - const auto Subsystem = GetGameInstance()->GetSubsystem(); - if (Subsystem->SceneLoadStatus == EMRUKInitStatus::Complete) - { - SceneLoaded(true); - } - Subsystem->OnSceneLoaded.AddUniqueDynamic(this, &AMRUtilityKitPositionGenerator::SceneLoaded); - } -} - -bool AMRUtilityKitPositionGenerator::GenerateRandomPositionsOnSurface(TArray& OutTransforms) -{ - const auto Subsystem = GetGameInstance()->GetSubsystem(); - bool bSuccess = true; - bool bAnyFailure = false; - switch (RandomSpawnSettings.RoomFilter) - { - case EMRUKRoomFilter::None: - break; - case EMRUKRoomFilter::CurrentRoomOnly: - { - const auto Room = Subsystem->GetCurrentRoom(); - bSuccess = GenerateRandomPositionsOnSurfaceInRoom(Room, OutTransforms); - break; - } - case EMRUKRoomFilter::AllRooms: - { - for (auto& Room : Subsystem->Rooms) - { - if (!GenerateRandomPositionsOnSurfaceInRoom(Room, OutTransforms)) - { - bAnyFailure = true; - } - } - bSuccess = !bAnyFailure; - break; - } - default:; - } - return bSuccess; -} - -bool AMRUtilityKitPositionGenerator::GenerateRandomPositionsOnSurfaceInRoom(AMRUKRoom* Room, TArray& OutTransforms) -{ - bool bInitializedAnchor = IsValid(RandomSpawnSettings.ActorInstance); - if (bInitializedAnchor && RandomSpawnSettings.ActorClass != nullptr) - { - UE_LOG(LogMRUK, Error, TEXT("Cannot use an initialized Actor AND a defined ActorClass together. Use one of the options")); - return false; - } - if (!bInitializedAnchor && RandomSpawnSettings.ActorClass == nullptr) - { - UE_LOG(LogMRUK, Error, TEXT("Please define ActorClass.")); - return false; - } - - const auto Subsystem = GetGameInstance()->GetSubsystem(); - auto Bounds = bInitializedAnchor ? RandomSpawnSettings.ActorInstance->CalculateComponentsBoundingBoxInLocalSpace() : Subsystem->GetActorClassBounds(RandomSpawnSettings.ActorClass); - - float MinRadius = 0.0f; - float CenterOffset = (Bounds.GetCenter().Z != 0) ? Bounds.GetCenter().Z : 0.0f; - float BaseOffset = (Bounds.Min.Z != 0) ? -Bounds.Min.Z : 0.0f; - - FBox AdjustedBounds; - - TArray SpawnedBounds; - - if (Bounds.IsValid) - { - constexpr float ClearanceDistance = 0.01f; - CenterOffset = Bounds.GetCenter().Z; - - MinRadius = FMath::Min(FMath::Min(-Bounds.Min.X, -Bounds.Min.Y), FMath::Min(Bounds.Max.X, Bounds.Max.Y)); - if (MinRadius < 0.0f) - { - MinRadius = 0.0f; - } - - FVector Min = Bounds.Min; - FVector Max = Bounds.Max; - Min.Z += ClearanceDistance; - - if (Max.Z < Min.Z) - { - Max.Z = Min.Z; - } - - AdjustedBounds = FBox(Min, Max); - if (RandomSpawnSettings.OverrideBounds > 0) - { - FVector Center = FVector(0.0f, 0.0f, ClearanceDistance); - FVector Extents = FVector((RandomSpawnSettings.OverrideBounds), (RandomSpawnSettings.OverrideBounds), ClearanceDistance); - AdjustedBounds = FBox(Center - Extents, Center + Extents); - } - } - - int FoundPositions = 0; - - for (int i = 0; i < RandomSpawnSettings.SpawnAmount; ++i) - { - for (int j = 0; j < RandomSpawnSettings.MaxIterations; ++j) - { - FVector SpawnPosition = FVector::ZeroVector; - FVector SpawnNormal = FVector::ZeroVector; - bool FoundSpawnPos = false; - if (RandomSpawnSettings.SpawnLocations == EMRUKSpawnLocation::Floating) - { - FVector OutPos; - if (auto bRandomPos = Room->GenerateRandomPositionInRoom(OutPos, MinRadius, true); !bRandomPos) - { - break; - } - SpawnPosition = OutPos; - FoundSpawnPos = true; - } - else - { - if (FVector Normal, Pos; Room->GenerateRandomPositionOnSurface(RandomSpawnSettings.SpawnLocations, MinRadius, RandomSpawnSettings.Labels, Pos, Normal)) - { - SpawnPosition = Pos + Normal * BaseOffset; - SpawnNormal = Normal; - auto Center = SpawnPosition + Normal * CenterOffset; - if (auto bInRoom = Room->IsPositionInRoom(Center); !bInRoom) - { - continue; - } - if (Room->IsPositionInSceneVolume(Center)) - { - continue; - } - if (FMRUKHit Hit{}; Room->Raycast(SpawnPosition, Normal, RandomSpawnSettings.SurfaceClearanceDistance, RandomSpawnSettings.Labels, Hit)) - { - continue; - } - FoundSpawnPos = true; - } - } - FQuat SpawnRotation = FQuat::Identity; - if (!SpawnNormal.IsNearlyZero()) - { - SpawnNormal.Normalize(); - SpawnRotation = FQuat::FindBetweenNormals(FVector::UpVector, SpawnNormal); - } - - if (RandomSpawnSettings.CheckOverlaps && Bounds.IsValid && FoundSpawnPos) - { - FBox WorldBounds(AdjustedBounds.Min + SpawnPosition - AdjustedBounds.GetCenter(), AdjustedBounds.Max + SpawnPosition - AdjustedBounds.GetCenter()); - - FVector AdjustedSpawnPos = SpawnPosition + SpawnRotation * AdjustedBounds.GetCenter(); - - // check against world - if (!CanSpawnBox(GetTickableGameObjectWorld(), WorldBounds, AdjustedSpawnPos, SpawnRotation, FCollisionQueryParams::DefaultQueryParam, RandomSpawnSettings.CollisionChannel)) - { - continue; - } - } - if (bInitializedAnchor && FoundSpawnPos) - { - RandomSpawnSettings.ActorInstance->SetActorLocationAndRotation(SpawnPosition, SpawnRotation); - - // ignore SpawnAmount once we have a successful move of existing object in the scene - return true; - } - - if (FoundSpawnPos) - { - OutTransforms.Add(FTransform(SpawnRotation, SpawnPosition, FVector::OneVector)); - FoundPositions++; - break; - } - } - } - return FoundPositions == RandomSpawnSettings.SpawnAmount; -} - -void AMRUtilityKitPositionGenerator::SceneLoaded(bool Success) -{ - if (Success) - { - TArray OutTransforms; - const bool bSuccess = GenerateRandomPositionsOnSurface(OutTransforms); - - if (!bSuccess) - { - UE_LOG(LogMRUK, Warning, TEXT("Generate Random Positions on Surface not successful")); - return; - } - - if (RandomSpawnSettings.ActorClass != nullptr) - { - for (auto Transform : OutTransforms) - { - FActorSpawnParameters Params{}; - Params.SpawnCollisionHandlingOverride = ESpawnActorCollisionHandlingMethod::AlwaysSpawn; - GetWorld()->SpawnActor(RandomSpawnSettings.ActorClass, &Transform, Params); - } - } - } -} diff --git a/Plugins/MetaXR/Source/MRUtilityKit/Private/MRUtilityKitRoom.cpp b/Plugins/MetaXR/Source/MRUtilityKit/Private/MRUtilityKitRoom.cpp deleted file mode 100644 index 0a9a496..0000000 --- a/Plugins/MetaXR/Source/MRUtilityKit/Private/MRUtilityKitRoom.cpp +++ /dev/null @@ -1,1522 +0,0 @@ -// Copyright (c) Meta Platforms, Inc. and affiliates. - -#include "MRUtilityKitRoom.h" -#include "MRUtilityKitAnchor.h" -#include "MRUtilityKitSerializationHelpers.h" -#include "MRUtilityKitSeatsComponent.h" -#include "MRUtilityKitSubsystem.h" -#include "MRUtilityKitBPLibrary.h" -#include "Engine/GameInstance.h" -#include "GameFramework/Pawn.h" -#include "GameFramework/WorldSettings.h" -#include "Kismet/KismetMathLibrary.h" -#include "Misc/EngineVersionComparison.h" - -#define LOCTEXT_NAMESPACE "MRUtilityKitRoom" - -namespace -{ - double GetSeamlessFactor(double Perimeter, double StepSize) - { - double RoundedPerimeter = FMath::RoundHalfFromZero(Perimeter / StepSize); - if (RoundedPerimeter <= 0.0) - { - RoundedPerimeter = 1.0; - } - return Perimeter / RoundedPerimeter; - } - - FBox2D GetBoundsFromBoxForSide(const EMRUKBoxSide Side, const FBox& Box) - { - switch (Side) - { - case EMRUKBoxSide::XPos: - case EMRUKBoxSide::XNeg: - return FBox2D(FVector2D(Box.Min.Y, Box.Min.Z), FVector2D(Box.Max.Y, Box.Max.Z)); - case EMRUKBoxSide::YPos: - case EMRUKBoxSide::YNeg: - return FBox2D(FVector2D(Box.Min.X, Box.Min.Z), FVector2D(Box.Max.X, Box.Max.Z)); - case EMRUKBoxSide::ZPos: - case EMRUKBoxSide::ZNeg: - return FBox2D(FVector2D(Box.Min.X, Box.Min.Y), FVector2D(Box.Max.X, Box.Max.Y)); - } - return {}; - } - - FVector GetNormalBoxSide(const EMRUKBoxSide Side) - { - switch (Side) - { - case EMRUKBoxSide::XPos: - return FVector(1, 0, 0); - case EMRUKBoxSide::XNeg: - return FVector(-1, 0, 0); - case EMRUKBoxSide::YPos: - return FVector(0, 1, 0); - case EMRUKBoxSide::YNeg: - return FVector(0, -1, 0); - case EMRUKBoxSide::ZPos: - return FVector(0, 0, 1); - case EMRUKBoxSide::ZNeg: - return FVector(0, 0, -1); - } - return {}; - } - - FVector GetWorldPos(const FVector2D Pos2D, const AMRUKAnchor* ParentAnchor, const EMRUKBoxSide Side) - { - FVector LocalPos = FVector::Zero(); - switch (Side) - { - case EMRUKBoxSide::XPos: - LocalPos = FVector(ParentAnchor->VolumeBounds.Max.X, Pos2D.X, Pos2D.Y); - break; - case EMRUKBoxSide::XNeg: - LocalPos = FVector(ParentAnchor->VolumeBounds.Min.X, Pos2D.X, Pos2D.Y); - break; - case EMRUKBoxSide::YPos: - LocalPos = FVector(Pos2D.X, ParentAnchor->VolumeBounds.Max.Y, Pos2D.Y); - break; - case EMRUKBoxSide::YNeg: - LocalPos = FVector(Pos2D.X, ParentAnchor->VolumeBounds.Min.Y, Pos2D.Y); - break; - case EMRUKBoxSide::ZPos: - LocalPos = FVector(Pos2D.X, Pos2D.Y, ParentAnchor->VolumeBounds.Max.Z); - break; - case EMRUKBoxSide::ZNeg: - LocalPos = FVector(Pos2D.X, Pos2D.Y, ParentAnchor->VolumeBounds.Min.Z); - break; - } - return ParentAnchor->ActorToWorld().TransformPosition(LocalPos); - } - - const float InvSqrt2 = 1.0f / FMath::Sqrt(2.0f); - - bool IsActorOrientationHorizontal(const AActor* Actor) - { - bool bRet = false; - if (Actor == nullptr) - bRet = false; - else if (Actor->GetActorUpVector().Z >= InvSqrt2) // walls, door or similar - bRet = false; - else if (FMath::Abs(Actor->GetActorUpVector().X) >= InvSqrt2) - bRet = true; - return bRet; - } -} // namespace - -AMRUKRoom::AMRUKRoom(const FObjectInitializer& ObjectInitializer) - : Super(ObjectInitializer) -{ - // Create a scene component as root so we can attach spawned actors to it - RootComponent = CreateDefaultSubobject(TEXT("SceneComponent")); -} - -void AMRUKRoom::EndPlay(EEndPlayReason::Type Reason) -{ - for (const auto& Anchor : AllAnchors) - { - OnAnchorRemoved.Broadcast(Anchor); - Anchor->Destroy(); - } - - GetGameInstance()->GetSubsystem()->UnregisterRoom(this); - Super::EndPlay(Reason); -} - -void AMRUKRoom::LoadFromData(UMRUKRoomData* RoomData) -{ - check(RoomData); - - AnchorUUID = RoomData->SpaceQuery.UUID; - SpaceHandle = RoomData->SpaceQuery.Space; - RoomLayout = RoomData->RoomLayout; - - auto AnchorsToRemove = AllAnchors; - - AllAnchors.Empty(); - CeilingAnchor = nullptr; - FloorAnchor = nullptr; - WallAnchors.Empty(); - SeatAnchors.Empty(); - - TArray> AnchorsCreated; - TArray> AnchorsUpdated; - - for (const auto& AnchorData : RoomData->AnchorsData) - { - const auto AnchorFound = AnchorsToRemove.FindByPredicate([AnchorData](TObjectPtr Anchor) { - return Anchor && Anchor->AnchorUUID == AnchorData->SpaceQuery.UUID; - }); - AMRUKAnchor* Anchor = nullptr; - if (AnchorFound) - { - Anchor = *AnchorFound; - UE_LOG(LogMRUK, Log, TEXT("Update existing anchor in room")); - if (Anchor->LoadFromData(AnchorData)) - { - AnchorsUpdated.Push(Anchor); - } - AnchorsToRemove.Remove(Anchor); - } - else - { - UE_LOG(LogMRUK, Log, TEXT("Spawn new anchor in room")); - Anchor = SpawnAnchor(); - Anchor->LoadFromData(AnchorData); - AnchorsCreated.Push(Anchor); - } - AddAnchorToRoom(Anchor); - } - - UE_LOG(LogMRUK, Log, TEXT("Destroy %d old anchors"), AnchorsToRemove.Num()); - for (auto& OldAnchor : AnchorsToRemove) - { - OnAnchorRemoved.Broadcast(OldAnchor); - OldAnchor->Destroy(); - } - - InitializeRoom(); - - for (auto& Anchor : AnchorsUpdated) - { - OnAnchorUpdated.Broadcast(Anchor); - } - for (auto& Anchor : AnchorsCreated) - { - OnAnchorCreated.Broadcast(Anchor); - } -} - -TSharedRef AMRUKRoom::JsonSerialize() -{ - TSharedRef JsonObject = MakeShareable(new FJsonObject); - TArray> AnchorsArray; - for (const auto& Anchor : AllAnchors) - { - if (Anchor) - { - AnchorsArray.Add(MakeShareable(new FJsonValueObject(Anchor->JsonSerialize()))); - } - } - JsonObject->SetField(TEXT("UUID"), MRUKSerialize(AnchorUUID)); - JsonObject->SetField(TEXT("RoomLayout"), MRUKSerialize(RoomLayout)); - JsonObject->SetArrayField(TEXT("Anchors"), AnchorsArray); - return JsonObject; -} - -bool AMRUKRoom::Corresponds(UMRUKRoomData* RoomData) const -{ - if (!RoomData) - { - UE_LOG(LogMRUK, Warning, TEXT("Room query is null")); - return false; - } - - if (AnchorUUID == RoomData->SpaceQuery.UUID) - { - UE_LOG(LogMRUK, Log, TEXT("Rooms UUID equals")); - return true; - } - - for (const auto& Anchor : AllAnchors) - { - auto UUID = Anchor->AnchorUUID; - const auto Found = RoomData->AnchorsData.FindByPredicate([UUID](TObjectPtr AnchorData) { - return UUID == AnchorData->SpaceQuery.UUID; - }); - if (Found) - { - return true; - } - } - - UE_LOG(LogMRUK, Log, TEXT("Room is not equal")); - return false; -} - -AMRUKAnchor* AMRUKRoom::SpawnAnchor() -{ - FActorSpawnParameters SpawnParameters{}; - SpawnParameters.Owner = this; - const auto Anchor = GetWorld()->SpawnActor(SpawnParameters); - Anchor->Room = this; - GetRootComponent()->SetMobility(EComponentMobility::Movable); - Anchor->AttachToComponent(GetRootComponent(), FAttachmentTransformRules::KeepRelativeTransform); - - return Anchor; -} - -void AMRUKRoom::AddAnchorToRoom(AMRUKAnchor* Anchor) -{ - const FString Semantics = FString::Join(Anchor->SemanticClassifications, TEXT("-")); -#if WITH_EDITOR - if (Anchor->SemanticClassifications.Num() > 0) - { - Anchor->SetActorLabel(Semantics); - } -#endif - - UE_LOG(LogMRUK, Log, TEXT("Add '%s' anchor '%s' to room '%s'"), *Semantics, *Anchor->AnchorUUID.ToString(), *AnchorUUID.ToString()); - - if (Anchor->AnchorUUID == RoomLayout.FloorUuid) - { - FloorAnchor = Anchor; - } - if (Anchor->AnchorUUID == RoomLayout.CeilingUuid) - { - CeilingAnchor = Anchor; - } - if (RoomLayout.WallsUuid.Contains(Anchor->AnchorUUID)) - { - WallAnchors.Push(Anchor); - } - if (Anchor->HasLabel(FMRUKLabels::GlobalMesh)) - { - GlobalMeshAnchor = Anchor; - } - if (Anchor->HasLabel(FMRUKLabels::Couch)) - { - SeatAnchors.Push(Anchor); - } - - AllAnchors.Push(Anchor); -} - -void AMRUKRoom::InitializeRoom() -{ - ComputeRoomBounds(); - ComputeAnchorHierarchy(); - ComputeSeats(); - ComputeRoomEdges(); - KeyWallAnchor = nullptr; -} - -void AMRUKRoom::ComputeRoomBounds() -{ - RoomBounds.Init(); - - for (auto& Anchor : { FloorAnchor, CeilingAnchor }) - { - if (Anchor) - { - auto Transform = Anchor->GetTransform(); - for (const auto& Vertex : Anchor->PlaneBoundary2D) - { - const auto Pos = Transform.TransformPosition(FVector(0.0f, Vertex.X, Vertex.Y)); - RoomBounds += Pos; - } - } - } -} - -void AMRUKRoom::ComputeAnchorHierarchy() -{ - // Reset anchor hierarchy - for (auto& Anchor : AllAnchors) - { - Anchor->ParentAnchor = nullptr; - Anchor->ChildAnchors.Empty(); - } - - constexpr float OffsetTolerance = 4.0f; // 4 cm offset allowed - // Find things where are attached to walls such as doors, windows frames or wall art - for (const auto& WallAnchor : WallAnchors) - { - if (!WallAnchor) - { - continue; - } - const auto& WallTransform = WallAnchor->GetTransform(); - const auto WallNormal = WallTransform.GetUnitAxis(EAxis::X); - for (const auto& ChildAnchor : AllAnchors) - { - // Don't parent walls to themselves - if (ChildAnchor == WallAnchor) - { - continue; - } - const auto& ChildTransform = ChildAnchor->GetTransform(); - const auto ChildNormal = ChildTransform.GetUnitAxis(EAxis::X); - // Check that the two transforms face the same direction - if (!FVector::Coincident(WallNormal, ChildNormal)) - { - continue; - } - // Check that the position is close to the surface (they are a little bit offset - // to prevent Z fighting so allow for that). - auto LocalPos = WallTransform.InverseTransformPosition(ChildTransform.GetLocation()); - if (FMath::Abs(LocalPos.X) > OffsetTolerance) - { - continue; - } - // Check that the anchor is within the wall boundary - if (!WallAnchor->IsPositionInBoundary(FVector2D(LocalPos.Y, LocalPos.Z))) - { - continue; - } - // We have a match - ensureMsgf(!ChildAnchor->ParentAnchor, TEXT("This anchor already has a parent")); - ChildAnchor->ParentAnchor = WallAnchor; - WallAnchor->ChildAnchors.Push(ChildAnchor); - } - } - - // Find volumes on the floor - if (FloorAnchor) - { - const auto& FloorTransform = FloorAnchor->GetTransform(); - const auto FloorNormal = FloorTransform.GetUnitAxis(EAxis::X); - ensureMsgf(FVector::Coincident(FloorNormal, FVector::DownVector), TEXT("Floor normal should be pointing downwards")); - auto FloorHeight = FloorTransform.GetLocation().Z; - for (const auto& ChildAnchor : AllAnchors) - { - // Don't parent the floor to itself - if (ChildAnchor == FloorAnchor) - { - continue; - } - const auto& ChildTransform = ChildAnchor->GetTransform(); - const auto ChildXAxis = ChildTransform.GetUnitAxis(EAxis::X); - const auto& ChildVolumeBounds = ChildAnchor->VolumeBounds; - // Only interested in scene volumes, the assumption is that all scene volumes have X axis pointing downwards - if (!ChildVolumeBounds.IsValid || !FVector::Coincident(ChildXAxis, FVector::DownVector)) - { - continue; - } - auto ChildBottom = ChildTransform.GetLocation().Z - ChildVolumeBounds.Max.X; - // Check that the volume is on the floor - if (FMath::Abs(FloorHeight - ChildBottom) > OffsetTolerance) - { - continue; - } - auto LocalPos = FloorTransform.InverseTransformPosition(ChildTransform.GetLocation()); - // Check that child anchor is within the bounds of the floor - if (!FloorAnchor->IsPositionInBoundary(FVector2D(LocalPos.Y, LocalPos.Z))) - { - continue; - } - // We have a match - ensureMsgf(!ChildAnchor->ParentAnchor, TEXT("This anchor already has a parent")); - ChildAnchor->ParentAnchor = FloorAnchor; - FloorAnchor->ChildAnchors.Push(ChildAnchor); - } - } - - // Find relationship between scene volumes - for (const auto& ParentAnchor : AllAnchors) - { - if (!ParentAnchor) - { - continue; - } - const auto& ParentTransform = ParentAnchor->GetTransform(); - const auto ParentXAxis = ParentTransform.GetUnitAxis(EAxis::X); - const auto& ParentVolumeBounds = ParentAnchor->VolumeBounds; - // Only interested in scene volumes, the assumption is that all scene volumes have X axis pointing downwards - if (!ParentVolumeBounds.IsValid || !FVector::Coincident(ParentXAxis, FVector::DownVector)) - { - continue; - } - auto ParentTop = ParentTransform.GetLocation().Z - ParentVolumeBounds.Min.X; - for (const auto& ChildAnchor : AllAnchors) - { - // Don't parent anchors to themselves - if (ChildAnchor == ParentAnchor) - { - continue; - } - const auto& ChildTransform = ChildAnchor->GetTransform(); - const auto ChildXAxis = ChildTransform.GetUnitAxis(EAxis::X); - const auto& ChildVolumeBounds = ChildAnchor->VolumeBounds; - // Only interested in scene volumes, the assumption is that all scene volumes have X axis pointing downwards - if (!ChildVolumeBounds.IsValid || !FVector::Coincident(ChildXAxis, FVector::DownVector)) - { - continue; - } - auto ChildBottom = ChildTransform.GetLocation().Z - ChildVolumeBounds.Max.X; - // Check that the two volumes are stack on top of each other - if (FMath::Abs(ParentTop - ChildBottom) > OffsetTolerance) - { - continue; - } - // Check that at least one of the corners of the child volume is inside the bounds of the parent's volume - // when projected onto the horizontal plane. This is to match the Scene Capture tool which requires the - // user to defined stacked volumes by starting with one corner of the volume which must be on the parent's - // volume. - bool AnyCornerInside = false; - for (int i = 0; i < 4; ++i) - { - // Get a different corner on each iteration of the loop (height is not important here) - FVector ChildLocalPos(0.0f, i < 2 ? ChildVolumeBounds.Min.Y : ChildVolumeBounds.Max.Y, i % 2 == 0 ? ChildVolumeBounds.Min.Z : ChildVolumeBounds.Max.Z); - auto LocalPos = ParentTransform.InverseTransformPosition(ChildTransform.TransformPosition(ChildLocalPos)); - // Check that child anchor is within the bounds of the parent on the horizontal plane - if (LocalPos.Y >= ParentVolumeBounds.Min.Y && LocalPos.Y <= ParentVolumeBounds.Max.Y && LocalPos.Z >= ParentVolumeBounds.Min.Z && LocalPos.Z <= ParentVolumeBounds.Max.Z) - { - AnyCornerInside = true; - break; - } - } - if (!AnyCornerInside) - { - continue; - } - // We have a match - ensureMsgf(!ChildAnchor->ParentAnchor, TEXT("This anchor already has a parent")); - ChildAnchor->ParentAnchor = ParentAnchor; - ParentAnchor->ChildAnchors.Push(ChildAnchor); - } - } -} - -void AMRUKRoom::ComputeSeats() -{ - for (const auto& SeatAnchor : SeatAnchors) - { - if (SeatAnchor) - { - auto SeatsComponent = SeatAnchor->FindComponentByClass(); - if (!SeatsComponent) - { - SeatsComponent = NewObject(SeatAnchor, TEXT("Seats")); - SeatsComponent->RegisterComponent(); - } - SeatsComponent->CalculateSeatPoses(); - } - } -} - -void AMRUKRoom::ComputeRoomEdges() -{ - if (!FloorAnchor) - { - UE_LOG(LogMRUK, Warning, TEXT("Floor anchor not set, can not compute room edges")); - return; - } - - const auto& FloorBoundary = FloorAnchor->PlaneBoundary2D; - const auto& FloorTransform = FloorAnchor->GetActorTransform(); - -#if UE_VERSION_OLDER_THAN(5, 5, 0) - RoomEdges.SetNum(FloorBoundary.Num(), true); -#else - RoomEdges.SetNum(FloorBoundary.Num(), EAllowShrinking::Yes); -#endif - for (int i = 0; i < RoomEdges.Num(); ++i) - { - const auto& BoundaryPoint = FloorBoundary[i]; - FVector Edge = FVector(0.0, BoundaryPoint.X, BoundaryPoint.Y); - Edge = FloorTransform.TransformPosition(Edge); - Edge.Z = 0.0; - RoomEdges[i] = Edge; - } -} - -bool AMRUKRoom::IsPositionInRoom(const FVector& Position, bool TestVerticalBounds) -{ - if (!FloorAnchor) - { - return false; - } - - if (!(TestVerticalBounds ? RoomBounds.IsInside(Position) : RoomBounds.IsInsideXY(Position))) - { - return false; - } - - const auto Transform = FloorAnchor->GetTransform(); - const FVector LocalPos = Transform.InverseTransformPositionNoScale(Position); - return FloorAnchor->IsPositionInBoundary(FVector2D(LocalPos.Y, LocalPos.Z)); -} - -bool AMRUKRoom::GenerateRandomPositionInRoom(FVector& OutPosition, float MinDistanceToSurface, bool AvoidVolumes) -{ - return GenerateRandomPositionInRoomFromStream(OutPosition, FRandomStream(NAME_None), MinDistanceToSurface, AvoidVolumes); -} - -bool AMRUKRoom::GenerateRandomPositionInRoomFromStream(FVector& OutPosition, const FRandomStream& RandomStream, float MinDistanceToSurface, bool AvoidVolumes) -{ - if (!FloorAnchor) - { - return false; - } - if (MinDistanceToSurface > RoomBounds.GetExtent().GetMin()) - { - // We can exit early here as we know it's not possible to generate a position in the room that satisfies - // the MinDistanceToSurface requirement - return false; - } - FVector Position; - constexpr int MaxIterations = 1000; - // Bail after MaxIteration tries to avoid infinite loop in case MinDistanceToSurface is too large - // and we can't find a position which does not intersect with the walls and volumes - for (int i = 0; i < MaxIterations; ++i) - { - if (MinDistanceToSurface > 0.0f) - { - // If MinDistanceToSurface is large then it can be more efficient to randomly generate points within - // the shrunken bounds of the room - Position.X = RandomStream.FRandRange(RoomBounds.Min.X + MinDistanceToSurface, RoomBounds.Max.X - MinDistanceToSurface); - Position.Y = RandomStream.FRandRange(RoomBounds.Min.Y + MinDistanceToSurface, RoomBounds.Max.Y - MinDistanceToSurface); - Position.Z = RandomStream.FRandRange(RoomBounds.Min.Z + MinDistanceToSurface, RoomBounds.Max.Z - MinDistanceToSurface); - if (!IsPositionInRoom(Position)) - { - // Reject points that are outside the room - continue; - } - FVector SurfacePos; - double SurfaceDistance; - FMRUKLabelFilter Filter; - Filter.IncludedLabels = { FMRUKLabels::WallFace }; - if (TryGetClosestSurfacePosition(Position, SurfacePos, SurfaceDistance, Filter, MinDistanceToSurface)) - { - // Reject points that are too close to the walls - continue; - } - } - else - { - Position = FloorAnchor->GenerateRandomPositionOnPlaneFromStream(RandomStream); - Position = FloorAnchor->GetTransform().TransformPosition(Position); - Position.Z = RandomStream.FRandRange(RoomBounds.Min.Z + MinDistanceToSurface, RoomBounds.Max.Z - MinDistanceToSurface); - } - if (AvoidVolumes && IsPositionInSceneVolume(Position, true, MinDistanceToSurface)) - { - // Reject points inside volumes if avoid volumes has been enabled - continue; - } - OutPosition = Position; - return true; - } - return false; -} - -bool AMRUKRoom::GenerateRandomPositionOnSurface(EMRUKSpawnLocation SpawnLocation, float MinDistanceToEdge, - FMRUKLabelFilter LabelFilter, FVector& OutPosition, FVector& OutNormal) -{ - TArray Surfaces; - float TotalUsableSurfaceArea = 0.0f; - const float MinWidth = 2.0f * MinDistanceToEdge; - - OutPosition = FVector::ZeroVector; - OutNormal = FVector::ForwardVector; - for (auto& Anchor : AllAnchors) - { - if (!LabelFilter.PassesFilter(Anchor->SemanticClassifications)) - { - continue; - } - if (Anchor->PlaneBounds.bIsValid) - { - bool bSkipPlane = false; - - const bool bIsHorizontal = IsActorOrientationHorizontal(Anchor); - - // We skip the plane if it's vertical and if we are not spawning for vertical surfaces - if (SpawnLocation == EMRUKSpawnLocation::VerticalSurfaces) - { - bSkipPlane = bIsHorizontal; - } - // We skip the plane if it's not horizontal and if it's the ceiling - else if (SpawnLocation == EMRUKSpawnLocation::OnTopOfSurface) - { - bSkipPlane = !bIsHorizontal; - if (Anchor->SemanticClassifications.Contains(FMRUKLabels::Ceiling)) - bSkipPlane = true; - } - else if (SpawnLocation == EMRUKSpawnLocation::AnySurface) - { - bSkipPlane = false; - } - else if (SpawnLocation == EMRUKSpawnLocation::HangingDown) - { - bSkipPlane = !Anchor->SemanticClassifications.Contains(FMRUKLabels::Ceiling); - } - - if (!bSkipPlane) - { - const auto Size = Anchor->PlaneBounds.GetSize(); - if (Size.X > MinWidth && Size.Y > MinWidth) - { - const float UsableArea = (Size.X - MinWidth) * (Size.Y - MinWidth); - TotalUsableSurfaceArea += UsableArea; - Surfaces.Add({ Anchor, UsableArea, true, Anchor->PlaneBounds, EMRUKBoxSide{} }); - } - } - } - - if (Anchor->VolumeBounds.IsValid) - { - for (int FaceIndex = 0; FaceIndex < 6; ++FaceIndex) - { - const EMRUKBoxSide BoxSide = static_cast(FaceIndex); - - // Only top when spawning on top of surfaces. The negative X face corresponds to the top surface. - if (SpawnLocation == EMRUKSpawnLocation::OnTopOfSurface && BoxSide != EMRUKBoxSide::XNeg) - continue; - - // Switch top and bottom faces. The vertical surfaces are the Y and Z faces. - if (SpawnLocation == EMRUKSpawnLocation::VerticalSurfaces && FaceIndex < 2) - continue; - - // Only bottom when spawning on hanging down. The positive X face corresponds to the top surface. - if (SpawnLocation == EMRUKSpawnLocation::HangingDown && BoxSide != EMRUKBoxSide::XPos) - continue; - - FBox2D Bound = GetBoundsFromBoxForSide(BoxSide, Anchor->VolumeBounds); - - if (const auto Size = Bound.GetSize(); Size.X > MinWidth && Size.Y > MinWidth) - { - const float UsableArea = (Size.X - MinWidth) * (Size.Y - MinWidth); - TotalUsableSurfaceArea += UsableArea; - Surfaces.Add({ Anchor, UsableArea, false, Bound, BoxSide }); - } - } - } - } - if (Surfaces.Num() == 0) - { - return false; - } - - constexpr int MaxIterations = 1000; - for (int i = 0; i < MaxIterations; ++i) - { - // Pick a random surface weighted by surface area (surfaces with a larger - // area have more chance of being chosen) - float Rand = FMath::RandRange(0.f, TotalUsableSurfaceArea); - int Index = 0; - for (; Index < Surfaces.Num() - 1; ++Index) - { - Rand -= Surfaces[Index].UsableArea; - if (Rand <= 0.0f) - { - break; - } - } - auto& [Anchor, UsableArea, IsPlane, Bounds, BoxSide] = Surfaces[Index]; - - FVector2D Pos = FVector2D( - FMath::RandRange(Bounds.Min.X + MinDistanceToEdge, Bounds.Max.X - MinDistanceToEdge), - FMath::RandRange(Bounds.Min.Y + MinDistanceToEdge, Bounds.Max.Y - MinDistanceToEdge)); - - if (IsPlane && !Anchor->IsPositionInBoundary(Pos)) - continue; - - if (IsPlane) - { - const FVector Pos3DPlane = Anchor->ActorToWorld().TransformPosition(FVector(0.f, Pos.X, Pos.Y)); - OutPosition = Pos3DPlane; - OutNormal = Anchor->ActorToWorld().TransformVector(FVector::BackwardVector); - return true; - } - - OutPosition = GetWorldPos(Pos, Anchor, BoxSide); - OutNormal = Anchor->ActorToWorld().TransformVector(GetNormalBoxSide(BoxSide)); - return true; - } - return false; -} - -AMRUKAnchor* AMRUKRoom::Raycast(const FVector& Origin, const FVector& Direction, float MaxDist, const FMRUKLabelFilter& LabelFilter, FMRUKHit& OutHit) -{ - AMRUKAnchor* HitComponent = nullptr; - for (const auto& Anchor : AllAnchors) - { - if (!Anchor || !Anchor->PassesLabelFilter(LabelFilter)) - { - continue; - } - FMRUKHit HitResult; - if (Anchor->Raycast(Origin, Direction, MaxDist, HitResult, LabelFilter.ComponentTypes)) - { - // Prevent further hits which are further away from being found - MaxDist = HitResult.HitDistance; - OutHit = HitResult; - HitComponent = Anchor; - } - } - return HitComponent; -} - -bool AMRUKRoom::RaycastAll(const FVector& Origin, const FVector& Direction, float MaxDist, const FMRUKLabelFilter& LabelFilter, TArray& OutHits, TArray& OutAnchors) -{ - bool HitAnything = false; - for (const auto& Anchor : AllAnchors) - { - if (!Anchor || !Anchor->PassesLabelFilter(LabelFilter)) - { - continue; - } - if (Anchor->RaycastAll(Origin, Direction, MaxDist, OutHits, LabelFilter.ComponentTypes)) - { - HitAnything = true; - // For each element in OutHits we want an equivalent entry in OutAnchors with the same index - // which represents which anchor was hit. - while (OutHits.Num() > OutAnchors.Num()) - { - OutAnchors.Push(Anchor); - } - } - } - return HitAnything; -} - -void AMRUKRoom::ClearRoom() -{ - RoomLayout = {}; - AnchorUUID = {}; - SpaceHandle = {}; - RoomBounds.Init(); - for (auto& Anchor : AllAnchors) - { - if (Anchor) - { - Anchor->Destroy(); - } - } - AllAnchors.Empty(); - WallAnchors.Empty(); - SeatAnchors.Empty(); - FloorAnchor = nullptr; - CeilingAnchor = nullptr; - KeyWallAnchor = nullptr; -} - -bool AMRUKRoom::DoesRoomHave(const TArray& Labels) -{ - if (Labels.IsEmpty()) - { - return true; - } - - TArray RemainingLabels = Labels; - - for (const auto& Anchor : AllAnchors) - { - for (const auto& AnchorLabel : Anchor->SemanticClassifications) - { - const auto AnchorLabelIndex = RemainingLabels.Find(AnchorLabel); - if (AnchorLabelIndex != INDEX_NONE) - { - RemainingLabels.RemoveAt(AnchorLabelIndex); - if (RemainingLabels.IsEmpty()) - { - return true; - } - } - } - } - - return false; -} - -AMRUKAnchor* AMRUKRoom::TryGetClosestSurfacePosition(const FVector& WorldPosition, FVector& OutSurfacePosition, double& OutSurfaceDistance, const FMRUKLabelFilter& LabelFilter, double MaxDistance) -{ - if (MaxDistance <= 0.0) - { - MaxDistance = DBL_MAX; - } - OutSurfacePosition = FVector::Zero(); - AMRUKAnchor* ClosestAnchor = nullptr; - - for (const auto& Anchor : AllAnchors) - { - if (!Anchor || !Anchor->PassesLabelFilter(LabelFilter)) - { - continue; - } - - FVector SurfacePos{}; - const auto Distance = Anchor->GetClosestSurfacePosition(WorldPosition, SurfacePos); - if (Distance < MaxDistance) - { - MaxDistance = Distance; - OutSurfacePosition = SurfacePos; - ClosestAnchor = Anchor; - } - } - - OutSurfaceDistance = MaxDistance; - return ClosestAnchor; -} - -AMRUKAnchor* AMRUKRoom::IsPositionInSceneVolume(const FVector& WorldPosition, bool TestVerticalBounds, double Tolerance) -{ - for (const auto& Anchor : AllAnchors) - { - if (!Anchor) - { - continue; - } - - if (Anchor->IsPositionInVolumeBounds(WorldPosition, TestVerticalBounds, Tolerance)) - { - return Anchor; - } - } - - return nullptr; -} - -AMRUKAnchor* AMRUKRoom::TryGetClosestSeatPose(const FVector& RayOrigin, const FVector& RayDirection, FTransform& OutSeatTransform) -{ - FTransform ClosestPose{}; - AMRUKAnchor* ClosestAnchor = nullptr; - double ClosestDot = DBL_MIN; - - for (const auto& SeatAnchor : SeatAnchors) - { - if (!SeatAnchor) - { - continue; - } - const auto SeatsComponent = SeatAnchor->FindComponentByClass(); - if (!SeatsComponent) - { - continue; - } - - for (const auto& SeatPose : SeatsComponent->SeatPoses) - { - const auto VecToSeat = (SeatPose.GetLocation() - RayOrigin).GetSafeNormal(); - const auto ThisDot = RayDirection.Dot(VecToSeat); - if (ThisDot <= ClosestDot) - { - continue; - } - ClosestDot = ThisDot; - ClosestPose = SeatPose; - ClosestAnchor = SeatAnchor; - } - } - - OutSeatTransform = ClosestPose; - return ClosestAnchor; -} - -TArray AMRUKRoom::GetAnchorsByLabel(const FString& Label) const -{ - TArray> Anchors; - - for (const auto& Anchor : AllAnchors) - { - if (Anchor && Anchor->HasLabel(Label)) - { - Anchors.Push(Anchor); - } - } - return Anchors; -} - -AMRUKAnchor* AMRUKRoom::GetFirstAnchorByLabel(const FString& Label) const -{ - const auto Anchors = GetAnchorsByLabel(Label); - if (Anchors.IsEmpty()) - { - return nullptr; - } - return Anchors[0]; -} - -AMRUKAnchor* AMRUKRoom::GetBestPoseFromRaycast(const FVector& RayOrigin, const FVector& RayDirection, double MaxDist, const FMRUKLabelFilter& LabelFilter, FTransform& OutPose, EMRUKPositioningMethod PositioningMethod) -{ - FTransform BestPose{}; - - FMRUKHit Hit{}; - const auto HitAnchor = Raycast(RayOrigin, RayDirection, MaxDist, LabelFilter, Hit); - if (!HitAnchor) - { - return nullptr; - } - - FVector PosePosition = Hit.HitPosition; - FVector PoseUp = FVector::UpVector; - // By default, use the surface normal for pose forward - // Caution: Make sure all the cases of this being "up" are caught below - FVector PoseForward = Hit.HitNormal; - - constexpr double ParallelTolerance = 0.999; - - if (!HitAnchor->VolumeBounds.IsValid && Hit.HitNormal.Dot(PoseUp) >= ParallelTolerance) - { - // HitNormal and PoseUp are parallel. E.g. Walls and floors. - PoseForward = FVector{ RayOrigin.X - Hit.HitPosition.X, RayOrigin.Y - Hit.HitPosition.Y, 0.0 }.GetSafeNormal(); - } - else if (HitAnchor->VolumeBounds.IsValid) - { - // This is a volume object, and the ray has hit the top surface - if (Hit.HitNormal.Dot(FVector::UpVector) >= ParallelTolerance) - { - const auto& Transform = HitAnchor->GetActorTransform(); - - switch (PositioningMethod) - { - case EMRUKPositioningMethod::Center: - { - const auto HitLocalPos = Transform.InverseTransformPosition(Hit.HitPosition); - - double ShortestDistance = DBL_MAX; - FVector Forward = FVector::ZeroVector; - - auto Dist = FMath::Abs(HitLocalPos.Y - HitAnchor->VolumeBounds.Min.Y); - if (Dist < ShortestDistance) - { - ShortestDistance = Dist; - Forward = -HitAnchor->GetActorRightVector(); - } - Dist = FMath::Abs(HitLocalPos.Y - HitAnchor->VolumeBounds.Max.Y); - if (Dist < ShortestDistance) - { - ShortestDistance = Dist; - Forward = HitAnchor->GetActorRightVector(); - } - Dist = FMath::Abs(HitLocalPos.Z - HitAnchor->VolumeBounds.Min.Z); - if (Dist < ShortestDistance) - { - ShortestDistance = Dist; - Forward = -HitAnchor->GetActorUpVector(); - } - Dist = FMath::Abs(HitLocalPos.Z - HitAnchor->VolumeBounds.Max.Z); - if (Dist < ShortestDistance) - { - ShortestDistance = Dist; - Forward = HitAnchor->GetActorUpVector(); - } - - PoseForward = Forward; - PosePosition = Transform.TransformPosition(FVector::ZeroVector); - } - break; - case EMRUKPositioningMethod::Edge: - { - const auto HitLocalPos = Transform.InverseTransformPosition(Hit.HitPosition); - - double ShortestDistance = DBL_MAX; - FVector PoseLocal = FVector::ZeroVector; - - auto Dist = FMath::Abs(HitLocalPos.Y - HitAnchor->VolumeBounds.Min.Y); - if (Dist < ShortestDistance) - { - ShortestDistance = Dist; - PoseForward = -HitAnchor->GetActorRightVector(); - PoseLocal = { 0.0, HitAnchor->VolumeBounds.Min.Y, HitLocalPos.Z }; - } - Dist = FMath::Abs(HitLocalPos.Y - HitAnchor->VolumeBounds.Max.Y); - if (Dist < ShortestDistance) - { - ShortestDistance = Dist; - PoseForward = HitAnchor->GetActorRightVector(); - PoseLocal = { 0.0, HitAnchor->VolumeBounds.Max.Y, HitLocalPos.Z }; - } - Dist = FMath::Abs(HitLocalPos.Z - HitAnchor->VolumeBounds.Min.Z); - if (Dist < ShortestDistance) - { - ShortestDistance = Dist; - PoseForward = -HitAnchor->GetActorUpVector(); - PoseLocal = { 0.0, HitLocalPos.Y, HitAnchor->VolumeBounds.Min.Z }; - } - Dist = FMath::Abs(HitLocalPos.Z - HitAnchor->VolumeBounds.Max.Z); - if (Dist < ShortestDistance) - { - ShortestDistance = Dist; - PoseForward = HitAnchor->GetActorUpVector(); - PoseLocal = { 0.0, HitLocalPos.Y, HitAnchor->VolumeBounds.Max.Z }; - } - PosePosition = Transform.TransformPosition(PoseLocal); - } - break; - default: - { - const auto HitLocalPos = Transform.InverseTransformPosition(Hit.HitPosition); - PosePosition = Transform.TransformPosition({ 0.0, HitLocalPos.Y, HitLocalPos.Z }); - PoseForward = FVector{ RayOrigin.X - Hit.HitPosition.X, RayOrigin.Y - Hit.HitPosition.Y, 0.0 }.GetSafeNormal(); - } - break; - } - } - } - - BestPose.SetLocation(PosePosition); - BestPose.SetRotation(UKismetMathLibrary::MakeRotFromXZ(PoseForward, PoseUp).Quaternion()); - OutPose = BestPose; - - return HitAnchor; -} - -AMRUKAnchor* AMRUKRoom::GetKeyWall(double Tolerance) -{ - if (KeyWallAnchor) - { - return KeyWallAnchor; - } - - TArray> SortedWalls = WallAnchors; - SortedWalls.Sort([](const AMRUKAnchor& a, const AMRUKAnchor& b) { return a.PlaneBounds.GetExtent().X < b.PlaneBounds.GetExtent().X; }); - // Find the first one with no other walls behind it. - // SortedWalls is sorted from shortest side to longest - for (int i = SortedWalls.Num() - 1; i >= 0; --i) - { - const auto WallAnchor = SortedWalls[i]; - - bool NoPointsBehind = true; - - // Loop through the other corners, making sure none is behind the wall in question - for (const auto& RoomEdge : RoomEdges) - { - auto VecToCorner = RoomEdge - WallAnchor->GetActorLocation(); - // Due to anchor precision, we use a tolerance value. - // For example, an adjacent wall edge may be just behind the wall, leading to a false result - VecToCorner -= WallAnchor->GetActorForwardVector() * Tolerance; - - NoPointsBehind &= (-WallAnchor->GetActorForwardVector()).Dot(VecToCorner) >= 0.0; - if (!NoPointsBehind) - { - break; - } - } - - if (NoPointsBehind) - { - KeyWallAnchor = WallAnchor; - return WallAnchor; - } - } - - return nullptr; -} - -AMRUKAnchor* AMRUKRoom::GetLargestSurface(const FString& Label) -{ - AMRUKAnchor* LargestSurfaceAnchor = nullptr; - double LargestSurfaceArea = 0.0; - const auto LabelUpper = Label.ToUpper(); - - for (const auto& Anchor : AllAnchors) - { - if (!Anchor || !Anchor->HasLabel(Label)) - { - continue; - } - - double ThisSurfaceArea = 0.0; - if (Anchor->PlaneBounds.bIsValid) - { - ThisSurfaceArea = Anchor->PlaneBounds.GetArea(); - } - else if (Anchor->VolumeBounds.IsValid) - { - const auto VolumeSize = Anchor->VolumeBounds.GetSize(); - ThisSurfaceArea = VolumeSize.Y * VolumeSize.Z; - } - - if (ThisSurfaceArea > LargestSurfaceArea) - { - LargestSurfaceArea = ThisSurfaceArea; - LargestSurfaceAnchor = Anchor; - } - } - - return LargestSurfaceAnchor; -} - -void AMRUKRoom::AttachProceduralMeshToWalls(const TArray& CutHoleLabels, UMaterialInterface* ProceduralMaterial) -{ - AttachProceduralMeshToWalls({}, CutHoleLabels, ProceduralMaterial); -} - -void AMRUKRoom::ComputeWallMeshUVAdjustments(const TArray& WallTextureCoordinateModes, TArray& OutAnchorsWithPlaneUVs) -{ - TArray> ConnectedWalls = ComputeConnectedWalls(); - double Perimeter = 0.0; - for (const auto& WallAnchor : ConnectedWalls) - { - Perimeter += WallAnchor->PlaneBounds.GetSize().X; - } - const float WorldToMeters = GetWorldSettings()->WorldToMeters; - const double WallHeight = RoomBounds.GetSize().Z; - const double SeamlessWorldToMeters = GetSeamlessFactor(Perimeter, WorldToMeters); - double UOffset = 0.0; - const TArray& TexCoordModes = WallTextureCoordinateModes.IsEmpty() ? TArray{ FMRUKTexCoordModes{} } : WallTextureCoordinateModes; - for (const auto& WallAnchor : ConnectedWalls) - { - const double WallWidth = WallAnchor->PlaneBounds.GetSize().X; - TArray PlaneUVAdjustments; - for (const auto TexCoordMode : TexCoordModes) - { - float DenominatorX; - float DenominatorY; - // Determine the scaling in the V direction first, if this is set to maintain aspect - // ratio we need to come back to it after U scaling has been determined. - switch (TexCoordMode.V) - { - // Default to stretch in case maintain aspect ratio is set for both axes - default: - case EMRUKCoordModeV::Stretch: - DenominatorY = WallHeight; - break; - case EMRUKCoordModeV::Metric: - DenominatorY = WorldToMeters; - break; - } - switch (TexCoordMode.U) - { - default: - case EMRUKCoordModeU::Stretch: - DenominatorX = Perimeter; - break; - case EMRUKCoordModeU::Metric: - DenominatorX = WorldToMeters; - break; - case EMRUKCoordModeU::MetricSeamless: - DenominatorX = SeamlessWorldToMeters; - break; - case EMRUKCoordModeU::MaintainAspectRatio: - DenominatorX = DenominatorY; - break; - case EMRUKCoordModeU::MaintainAspectRatioSeamless: - DenominatorX = GetSeamlessFactor(Perimeter, DenominatorY); - break; - } - // Do another pass on V in case it has maintain aspect ratio set - if (TexCoordMode.V == EMRUKCoordModeV::MaintainAspectRatio) - { - DenominatorY = DenominatorX; - } - - const FVector2D Offset(UOffset / DenominatorX, 0); - const FVector2D Scale(WallWidth / DenominatorX, WallHeight / DenominatorY); - PlaneUVAdjustments.Push({ Offset, Scale }); - } - if (!WallAnchor->HasLabel(FMRUKLabels::InvisibleWallFace)) - { - OutAnchorsWithPlaneUVs.Push({ WallAnchor, PlaneUVAdjustments }); - } - UOffset += WallWidth; - } -} - -UProceduralMeshComponent* AMRUKRoom::GetOrCreateGlobalMeshProceduralMeshComponent(bool& OutExistedAlready) const -{ - // Try to find the global mesh procedural mesh component if it already exists - TArray ProcMeshComponents; - GetComponents(ProcMeshComponents); - for (const auto& ProcMeshComponent : ProcMeshComponents) - { - if (ProcMeshComponent->ComponentHasTag("GlobalMesh")) - { - OutExistedAlready = true; - return ProcMeshComponent; - } - } - - // Create the procedural mesh component if it doesn't exist already - const auto ProceduralMesh = NewObject(GlobalMeshAnchor, TEXT("GlobalMesh")); - ProceduralMesh->ComponentTags.Add("GlobalMesh"); - ProceduralMesh->RegisterComponent(); - GlobalMeshAnchor->AddInstanceComponent(ProceduralMesh); - OutExistedAlready = false; - return ProceduralMesh; -} - -void AMRUKRoom::SetupGlobalMeshProceduralMeshComponent(UProceduralMeshComponent& ProcMeshComponent, bool ExistedAlready, UMaterialInterface* Material) const -{ - ProcMeshComponent.SetMaterial(0, Material); - if (!ExistedAlready) - { - ProcMeshComponent.SetCollisionProfileName(TEXT("BlockAll")); - GlobalMeshAnchor->AddOwnedComponent(GlobalMeshAnchor->GetRootComponent()); - ProcMeshComponent.AttachToComponent(GlobalMeshAnchor->GetRootComponent(), FAttachmentTransformRules::KeepRelativeTransform); - ProcMeshComponent.SetRelativeScale3D(FVector(GetWorld()->GetWorldSettings()->WorldToMeters)); - } -} - -bool AMRUKRoom::LoadGlobalMeshFromDevice(UMaterialInterface* Material) -{ - if (!GlobalMeshAnchor) - { - UE_LOG(LogMRUK, Warning, TEXT("This room doesn't have a global mesh anchor")); - return false; - } - - bool ProcMeshExisted = false; - UProceduralMeshComponent* ProcMesh = GetOrCreateGlobalMeshProceduralMeshComponent(ProcMeshExisted); - - if (!UMRUKBPLibrary::LoadGlobalMeshFromDevice(GlobalMeshAnchor->SpaceHandle, ProcMesh, true, GetWorld())) - { - UE_LOG(LogMRUK, Warning, TEXT("Could not load Global Mesh from device")); - ProcMesh->DestroyComponent(); - return false; - } - - SetupGlobalMeshProceduralMeshComponent(*ProcMesh, ProcMeshExisted, Material); - - return true; -} - -bool AMRUKRoom::LoadGlobalMeshFromJsonString(const FString& JsonString, UMaterialInterface* Material) -{ - if (!GlobalMeshAnchor) - { - UE_LOG(LogMRUK, Warning, TEXT("A global mesh can only be loaded from a JSON string if it has a global mesh anchor. Please make sure you provide one.")); - return false; - } - - bool ProcMeshExisted = false; - UProceduralMeshComponent* ProcMesh = GetOrCreateGlobalMeshProceduralMeshComponent(ProcMeshExisted); - - if (!UMRUKBPLibrary::LoadGlobalMeshFromJsonString(JsonString, AnchorUUID, ProcMesh, true)) - { - UE_LOG(LogMRUK, Warning, TEXT("Failed parsing global mesh from JSON string")); - ProcMesh->DestroyComponent(); - return false; - } - - SetupGlobalMeshProceduralMeshComponent(*ProcMesh, ProcMeshExisted, Material); - - return true; -} - -FVector AMRUKRoom::ComputeCentroid(double Z) -{ - if (!FloorAnchor || !CeilingAnchor) - { - return FVector::ZeroVector; - } - - Z = FMath::Clamp(Z, 0.0, 1.0); - - const FVector2D CentroidLS = UMRUKBPLibrary::ComputeCentroid(FloorAnchor->PlaneBoundary2D); - const FVector CentroidWS = FloorAnchor->GetActorTransform().TransformPosition(FVector(0.0, CentroidLS.X, CentroidLS.Y)); - - const FVector Dir = (CeilingAnchor->GetActorLocation() - FloorAnchor->GetActorLocation()); - const double Dist = Dir.Length(); - - return CentroidWS + Dir.GetSafeNormal() * FMath::Lerp(0.0, Dist, Z); -} - -void AMRUKRoom::AttachProceduralMeshToWalls(const TArray& WallTextureCoordinateModes, const TArray& CutHoleLabels, UMaterialInterface* ProceduralMaterial) -{ - TArray AnchorsWithPlaneUVs; - ComputeWallMeshUVAdjustments(WallTextureCoordinateModes, AnchorsWithPlaneUVs); - for (const auto& AnchorWithPlaneUVs : AnchorsWithPlaneUVs) - { - AnchorWithPlaneUVs.Anchor->AttachProceduralMesh(AnchorWithPlaneUVs.PlaneUVs, CutHoleLabels, true, ProceduralMaterial); - } -} - -TArray> AMRUKRoom::ComputeConnectedWalls() const -{ - if (WallAnchors.IsEmpty()) - { - return {}; - } - - TArray> ConnectedWalls; - TArray> RemainingWalls = WallAnchors; - - for (int i = RemainingWalls.Num() - 1; i >= 0; --i) - { - if (RemainingWalls[i] == nullptr) - { - RemainingWalls.RemoveAt(i); - } - } - - ConnectedWalls.Reserve(WallAnchors.Num()); - ConnectedWalls.Push(RemainingWalls.Last()); - RemainingWalls.Pop(); - - while (!RemainingWalls.IsEmpty()) - { - const auto PrevWall = ConnectedWalls.Last(); - FVector LocalMaxEdge(0, PrevWall->PlaneBounds.Max.X, 0); - auto MaxEdge = PrevWall->GetTransform().TransformPosition(LocalMaxEdge); - int ClosestIndex = 0; - float ClosestDist = UE_MAX_FLT; - for (int i = 0; i < RemainingWalls.Num(); i++) - { - const auto& WallAnchor = RemainingWalls[i]; - FVector LocalMinEdge(0, WallAnchor->PlaneBounds.Min.X, 0); - auto MinEdge = WallAnchor->GetTransform().TransformPosition(LocalMinEdge); - const double Dist = FVector::Dist2D(MaxEdge, MinEdge); - if (Dist < ClosestDist) - { - ClosestDist = Dist; - ClosestIndex = i; - } - } - ConnectedWalls.Push(RemainingWalls[ClosestIndex]); - RemainingWalls.RemoveAt(ClosestIndex); - } - - return ConnectedWalls; -} - -TArray AMRUKRoom::SpawnInterior(const TMap& SpawnGroups, const TArray& CutHoleLabels, UMaterialInterface* ProceduralMaterial, bool ShouldFallbackToProcedural) -{ - return SpawnInteriorFromStream(SpawnGroups, FRandomStream(NAME_None), CutHoleLabels, ProceduralMaterial, ShouldFallbackToProcedural); -} - -TArray AMRUKRoom::SpawnInteriorFromStream(const TMap& SpawnGroups, const FRandomStream& RandomStream, const TArray& CutHoleLabels, UMaterialInterface* ProceduralMaterial, bool GlobalShouldFallbackToProcedural) -{ - TArray InteriorActors; - - const auto ShouldFallbackToProcedural = [GlobalShouldFallbackToProcedural](const FMRUKSpawnGroup* Anchor) -> bool { - check(Anchor); - switch (Anchor->FallbackToProcedural) - { - case EMRUKFallbackToProceduralOverwrite::Default: - return GlobalShouldFallbackToProcedural; - case EMRUKFallbackToProceduralOverwrite::Fallback: - return true; - case EMRUKFallbackToProceduralOverwrite::NoFallback: - return false; - } - return false; - }; - - const float WorldToMeters = GetWorldSettings()->WorldToMeters; - const auto WallFace = SpawnGroups.Find(FMRUKLabels::WallFace); - if (!WallFace || (WallFace->Actors.IsEmpty() && ShouldFallbackToProcedural(WallFace))) - { - // If no wall mesh is given we want to spawn the walls procedural to make seamless UVs - AttachProceduralMeshToWalls(CutHoleLabels, ProceduralMaterial); - } - const auto Floor = SpawnGroups.Find(FMRUKLabels::Floor); - if (FloorAnchor && (!Floor || (Floor->Actors.IsEmpty() && ShouldFallbackToProcedural(Floor)))) - { - // Use metric scaling to match walls - const FVector2D Scale = FloorAnchor->PlaneBounds.GetSize() / WorldToMeters; - FloorAnchor->AttachProceduralMesh({ { FVector2D::ZeroVector, Scale } }, CutHoleLabels, true, ProceduralMaterial); - } - const auto Ceiling = SpawnGroups.Find(FMRUKLabels::Ceiling); - if (CeilingAnchor && (!Ceiling || (Ceiling->Actors.IsEmpty() && ShouldFallbackToProcedural(Ceiling)))) - { - // Use metric scaling to match walls - const FVector2D Scale = CeilingAnchor->PlaneBounds.GetSize() / WorldToMeters; - CeilingAnchor->AttachProceduralMesh({ { FVector2D::ZeroVector, Scale } }, CutHoleLabels, true, ProceduralMaterial); - } - const auto Subsystem = GetGameInstance()->GetSubsystem(); - - for (const auto& Anchor : AllAnchors) - { - if (!Anchor) - { - continue; - } - if (Anchor->SemanticClassifications.IsEmpty()) - { - Anchor->AttachProceduralMesh(); - continue; - } - - bool SpawnProceduralMesh = true; - for (const auto& SemanticClassification : Anchor->SemanticClassifications) - { - if (SemanticClassification == FMRUKLabels::WallFace && Anchor->SemanticClassifications.Contains(FMRUKLabels::InvisibleWallFace)) - { - // Treat anchors with WALL_FACE and INVISIBLE_WALL_FACE as anchors that only have INVISIBLE_WALL_FACE - continue; - } - - const auto SpawnGroup = SpawnGroups.Find(SemanticClassification); - - if (!SpawnGroup) - { - continue; - } - if (SpawnGroup->Actors.IsEmpty()) - { - if (!ShouldFallbackToProcedural(SpawnGroup)) - { - SpawnProceduralMesh = false; - } - continue; - } - - SpawnProceduralMesh = false; - - int Index = 0; - if (SpawnGroup->Actors.Num() > 1) - { - if (SpawnGroup->SelectionMode == EMRUKSpawnerSelectionMode::Random) - { - Index = RandomStream.RandRange(0, SpawnGroup->Actors.Num() - 1); - } - else if (SpawnGroup->SelectionMode == EMRUKSpawnerSelectionMode::ClosestSize) - { - if (Anchor->VolumeBounds.IsValid) - { - const double AnchorSize = FMath::Pow(Anchor->VolumeBounds.GetVolume(), 1.0 / 3.0); - double ClosestSizeDifference = UE_BIG_NUMBER; - for (int i = 0; i < SpawnGroup->Actors.Num(); ++i) - { - const auto& SpawnActor = SpawnGroup->Actors[i]; - auto Bounds = Subsystem->GetActorClassBounds(SpawnActor.Actor); - if (Bounds.IsValid) - { - const double SpawnActorSize = FMath::Pow(Bounds.GetVolume(), 1.0 / 3.0); - const double SizeDifference = FMath::Abs(AnchorSize - SpawnActorSize); - if (SizeDifference < ClosestSizeDifference) - { - ClosestSizeDifference = SizeDifference; - Index = i; - } - } - } - } - } - } - - const auto& SpawnActor = SpawnGroup->Actors[Index]; - if (SpawnActor.Actor) - { - auto InteriorActor = Anchor->SpawnInterior(SpawnActor.Actor, SpawnActor.MatchAspectRatio, SpawnActor.CalculateFacingDirection, SpawnActor.ScalingMode); - InteriorActors.Push(InteriorActor); - } - else - { - UE_LOG(LogMRUK, Error, TEXT("Actor is nullptr for label %s."), *SemanticClassification); - } - break; - } - - if (SpawnProceduralMesh) - { - Anchor->AttachProceduralMesh(CutHoleLabels, true, ProceduralMaterial); - } - } - - return InteriorActors; -} - -bool AMRUKRoom::IsWallAnchor(AMRUKAnchor* Anchor) const -{ - return WallAnchors.Contains(Anchor); -} - -void AMRUKRoom::UpdateWorldLock(APawn* Pawn, const FVector& HeadWorldPosition) const -{ - const auto& Anchor = FloorAnchor; - if (!Anchor) - { - return; - } - - FTransform AnchorTransform; - FOculusXRAnchorLocationFlags AnchorFlags{}; - if (Anchor->SpaceHandle && UOculusXRAnchorBPFunctionLibrary::TryGetAnchorTransformByHandle(Anchor->SpaceHandle, AnchorTransform, AnchorFlags, EOculusXRAnchorSpace::Tracking)) - { - const FTransform& Transform = Anchor->GetActorTransform(); - const FTransform Adjustment = AnchorTransform.Inverse() * Transform; - - // Only use the Yaw component of the rotation, we don't want to introduce any errors with - // pitch or roll. - const double Yaw = Adjustment.Rotator().Yaw; - - Pawn->SetActorLocationAndRotation(Adjustment.GetLocation(), FRotator(0.0, Yaw, 0.0)); - } -} - -#undef LOCTEXT_NAMESPACE diff --git a/Plugins/MetaXR/Source/MRUtilityKit/Private/MRUtilityKitSceneDataProvider.cpp b/Plugins/MetaXR/Source/MRUtilityKit/Private/MRUtilityKitSceneDataProvider.cpp deleted file mode 100644 index e31709d..0000000 --- a/Plugins/MetaXR/Source/MRUtilityKit/Private/MRUtilityKitSceneDataProvider.cpp +++ /dev/null @@ -1,87 +0,0 @@ -// Copyright (c) Meta Platforms, Inc. and affiliates. - -#include "MRUtilityKitSceneDataProvider.h" -#include "UObject/ConstructorHelpers.h" -#include "MRUtilityKit.h" - -void AMRUKSceneDataProvider::GetRoom(FString& RoomJSON, FString& RoomName) -{ - if (!bUseRandomRoom) - { - if (!SpecificRoomName.IsEmpty()) - { - for (const auto& Room : Rooms) - { - const auto RoomDT = Room.Value; - const auto TmpJSON = RoomDT->FindRow(FName(SpecificRoomName), "", false); - if (TmpJSON != nullptr) - { - RoomJSON = TmpJSON->JSON; - RoomName = SpecificRoomName; - return; - } - } - UE_LOG(LogMRUK, Warning, TEXT("Specific room name not found, using random room.")); - } - else - { - UE_LOG(LogMRUK, Warning, TEXT("Specific room name not defined, using random room.")); - } - } - - if (bUseRandomRoomFromClass) - { - if (!SpecificRoomClass.IsEmpty()) - { - const auto RoomDT = *Rooms.Find(SpecificRoomClass); - if (RoomDT != nullptr) - { - TArray TmpArray; - RoomDT->GetAllRows("", TmpArray); - auto TmpRowNames = RoomDT->GetRowNames(); - const auto Num = TmpArray.Num() - 1; - const auto Idx = FMath::RandRange(0, Num); - - RoomJSON = TmpArray[Idx]->JSON; - RoomName = TmpRowNames[Idx].ToString(); - return; - } - - UE_LOG(LogMRUK, Warning, TEXT("Specific room class not found, using random room.")); - } - else - { - UE_LOG(LogMRUK, Warning, TEXT("Specific room class not defined, using random room.")); - } - } - - auto Num = Rooms.Num() - 1; - auto Idx = FMath::RandRange(0, Num); - - TArray ChildArray; - Rooms.GenerateValueArray(ChildArray); - - const auto Room = ChildArray[Idx]; - - Num = Room->GetRowMap().Num() - 1; - Idx = FMath::RandRange(0, Num); - - TArray RandomRoomRows; - auto RandomRoomRowNames = Room->GetRowNames(); - Room->GetAllRows("", RandomRoomRows); - - RoomJSON = RandomRoomRows[Idx]->JSON; - RoomName = RandomRoomRowNames[Idx].ToString(); -} - -// Called when the game starts or when spawned -void AMRUKSceneDataProvider::BeginPlay() -{ - Super::BeginPlay(); -} - -// Called every frame -void AMRUKSceneDataProvider::Tick(float DeltaTime) -{ - Super::Tick(DeltaTime); -} diff --git a/Plugins/MetaXR/Source/MRUtilityKit/Private/MRUtilityKitSeatsComponent.cpp b/Plugins/MetaXR/Source/MRUtilityKit/Private/MRUtilityKitSeatsComponent.cpp deleted file mode 100644 index b0892e6..0000000 --- a/Plugins/MetaXR/Source/MRUtilityKit/Private/MRUtilityKitSeatsComponent.cpp +++ /dev/null @@ -1,54 +0,0 @@ -// Copyright (c) Meta Platforms, Inc. and affiliates. - -#include "MRUtilityKitSeatsComponent.h" -#include "MRUtilityKitAnchor.h" -#include "MRUtilityKitRoom.h" -#include "Kismet/KismetMathLibrary.h" - -void UMRUKSeatsComponent::CalculateSeatPoses(double SeatWidth) -{ - const auto Anchor = Cast(GetOwner()); - if (!Anchor) - { - return; - } - - SeatPoses.Empty(); - - const auto SurfaceDimensions = Anchor->PlaneBounds.GetExtent(); - const auto SurfaceRatio = SurfaceDimensions.X / SurfaceDimensions.Y; - const auto SeatForward = Anchor->GetFacingDirection(); - const auto SeatUp = FVector::UpVector; - const auto SeatRotation = UKismetMathLibrary::MakeRotFromXZ(SeatForward, SeatUp).Quaternion(); - - if (SurfaceRatio < 2.0 && SurfaceRatio > 0.5) - { - // If the surface dimensions are mostly square (likely a chair), just have one centered seat. - FTransform SeatPose{}; - SeatPose.SetLocation(Anchor->GetActorLocation()); - SeatPose.SetRotation(SeatRotation); - SeatPoses.Add(SeatPose); - } - else - { - const auto XLong = SurfaceDimensions.X > SurfaceDimensions.Y; - const auto LongestDimension = XLong ? SurfaceDimensions.X : SurfaceDimensions.Y; - const auto NumSeats = FMath::Floor(LongestDimension / SeatWidth); - - const auto SeatPadding = (LongestDimension - (NumSeats * SeatWidth)) / NumSeats; - const auto FirstSeatOffset = (-LongestDimension + SeatPadding + SeatWidth) * 0.5; - - for (int i = 0; i < NumSeats; ++i) - { - const auto SeatRight = XLong ? Anchor->GetActorRightVector() : Anchor->GetActorUpVector(); - - const auto Offset = FirstSeatOffset + (SeatWidth + SeatPadding) * i; - const auto SeatPosition = Anchor->GetActorLocation() + SeatRight * Offset; - - FTransform SeatPose{}; - SeatPose.SetLocation(SeatPosition); - SeatPose.SetRotation(SeatRotation); - SeatPoses.Add(SeatPose); - } - } -} diff --git a/Plugins/MetaXR/Source/MRUtilityKit/Private/MRUtilityKitSerializationHelpers.cpp b/Plugins/MetaXR/Source/MRUtilityKit/Private/MRUtilityKitSerializationHelpers.cpp deleted file mode 100644 index 7918492..0000000 --- a/Plugins/MetaXR/Source/MRUtilityKit/Private/MRUtilityKitSerializationHelpers.cpp +++ /dev/null @@ -1,61 +0,0 @@ -// Copyright (c) Meta Platforms, Inc. and affiliates. - -#include "MRUtilityKitSerializationHelpers.h" - -TSharedPtr MRUKSerialize(const FString& String) -{ - return MakeShareable(new FJsonValueString(String)); -} - -void MRUKDeserialize(const FJsonValue& Value, FString& String) -{ - String = Value.AsString(); -} - -TSharedPtr MRUKSerialize(const FOculusXRUUID& UUID) -{ - return MakeShareable(new FJsonValueString(UUID.ToString())); -} - -void MRUKDeserialize(const FJsonValue& Value, FOculusXRUUID& UUID) -{ - const auto Hex = Value.AsString(); - if (Hex.Len() == OCULUSXR_UUID_SIZE * 2) - { - HexToBytes(Hex, UUID.UUIDBytes); - } - else - { - UE_LOG(LogJson, Error, TEXT("Json String '%s' is not of expected length %d when deserializing FOculusXRUUID"), *Hex, OCULUSXR_UUID_SIZE * 2); - UUID = FOculusXRUUID(); - } -} - -TSharedPtr MRUKSerialize(const double& Number) -{ - return MakeShareable(new FJsonValueNumber(Number)); -} - -void MRUKDeserialize(const FJsonValue& Value, double& Number) -{ - Number = Value.AsNumber(); -} - -TSharedPtr MRUKSerialize(const FOculusXRRoomLayout& RoomLayout) -{ - const TSharedRef JsonObject = MakeShareable(new FJsonObject); - // Note: No need to serialize the list of room object UUIDs since it is just the list of - // all anchors in the room - JsonObject->SetField(TEXT("FloorUuid"), MRUKSerialize(RoomLayout.FloorUuid)); - JsonObject->SetField(TEXT("CeilingUuid"), MRUKSerialize(RoomLayout.CeilingUuid)); - JsonObject->SetField(TEXT("WallsUuid"), MRUKSerialize(RoomLayout.WallsUuid)); - return MakeShareable(new FJsonValueObject(JsonObject)); -} - -void MRUKDeserialize(const FJsonValue& Value, FOculusXRRoomLayout& RoomLayout) -{ - const auto Object = Value.AsObject(); - MRUKDeserialize(*Object->GetField(TEXT("FloorUuid")), RoomLayout.FloorUuid); - MRUKDeserialize(*Object->GetField(TEXT("CeilingUuid")), RoomLayout.CeilingUuid); - MRUKDeserialize(*Object->GetField(TEXT("WallsUuid")), RoomLayout.WallsUuid); -} diff --git a/Plugins/MetaXR/Source/MRUtilityKit/Private/MRUtilityKitShared.cpp b/Plugins/MetaXR/Source/MRUtilityKit/Private/MRUtilityKitShared.cpp deleted file mode 100644 index 597c479..0000000 --- a/Plugins/MetaXR/Source/MRUtilityKit/Private/MRUtilityKitShared.cpp +++ /dev/null @@ -1,70 +0,0 @@ -// Copyright (c) Meta Platforms, Inc. and affiliates. - -#include "Generated/MRUtilityKitShared.h" -#include "MRUtilityKit.h" -#include "Misc/Paths.h" -#include "HAL/PlatformProcess.h" -#include "Interfaces/IPluginManager.h" - -MRUKShared* MRUKShared::Instance; - -MRUKShared::MRUKShared(void* handle) - : MRUKSharedHandle(handle) -{ - LoadNativeFunctions(); -} - -MRUKShared::~MRUKShared() -{ - UnloadNativeFunctions(); - - FPlatformProcess::FreeDllHandle(MRUKSharedHandle); - MRUKSharedHandle = nullptr; -} - -void MRUKShared::LoadMRUKSharedLibrary() -{ - if (Instance != nullptr) - { - return; - } - - // Load - UE_LOG(LogMRUK, Log, TEXT("Loading MR Utility Kit Shared library")); -#if PLATFORM_WINDOWS - const FString BinariesPath = FPaths::Combine(IPluginManager::Get().FindPlugin(TEXT("OculusXR"))->GetBaseDir(), TEXT("/Source/Thirdparty/MRUtilityKitShared/Lib/Win64")); - FPlatformProcess::PushDllDirectory(*BinariesPath); - void* handle = FPlatformProcess::GetDllHandle(TEXT("mrutilitykitshared.dll")); - FPlatformProcess::PopDllDirectory(*BinariesPath); -#elif PLATFORM_ANDROID - void* handle = FPlatformProcess::GetDllHandle(TEXT("libmrutilitykitshared.so")); -#endif // PLATFORM_ANDROID - - if (handle == nullptr) - { - UE_LOG(LogMRUK, Error, TEXT("Failed to load MR Utility Kit Shared library")); - return; - } - - Instance = new MRUKShared(handle); -} - -void MRUKShared::FreeMRUKSharedLibrary() -{ - if (Instance == nullptr) - { - return; - } - delete Instance; - Instance = nullptr; -} - -void* MRUKShared::LoadFunction(const TCHAR* ProcName) -{ - auto func = FPlatformProcess::GetDllExport(MRUKSharedHandle, ProcName); - if (func == nullptr) - { - UE_LOG(LogMRUK, Error, TEXT("Failed to load native function: %s"), ProcName); - } - return func; -} diff --git a/Plugins/MetaXR/Source/MRUtilityKit/Private/MRUtilityKitSubsystem.cpp b/Plugins/MetaXR/Source/MRUtilityKit/Private/MRUtilityKitSubsystem.cpp deleted file mode 100644 index e7a2b85..0000000 --- a/Plugins/MetaXR/Source/MRUtilityKit/Private/MRUtilityKitSubsystem.cpp +++ /dev/null @@ -1,574 +0,0 @@ -// Copyright (c) Meta Platforms, Inc. and affiliates. - -#include "MRUtilityKitSubsystem.h" -#include "MRUtilityKitAnchor.h" -#include "Kismet/GameplayStatics.h" -#include "HeadMountedDisplayFunctionLibrary.h" -#include "MRUtilityKitPositionGenerator.h" -#include "Serialization/JsonWriter.h" -#include "Serialization/JsonSerializer.h" -#include "GameFramework/Pawn.h" -#include "OculusXRRoomLayoutManagerComponent.h" -#include "OculusXRSceneEventDelegates.h" -#include "OculusXRSceneFunctionLibrary.h" -#include "Engine/Engine.h" -#if WITH_EDITOR -#include "Editor.h" -#endif // WITH_EDITOR -#include "Generated/MRUtilityKitShared.h" - -AMRUKAnchor* UMRUKSubsystem::Raycast(const FVector& Origin, const FVector& Direction, float MaxDist, const FMRUKLabelFilter& LabelFilter, FMRUKHit& OutHit) -{ - AMRUKAnchor* HitComponent = nullptr; - for (const auto& Room : Rooms) - { - FMRUKHit HitResult; - if (!Room) - { - continue; - } - if (AMRUKAnchor* Anchor = Room->Raycast(Origin, Direction, MaxDist, LabelFilter, HitResult)) - { - // Prevent further hits which are further away from being found - MaxDist = HitResult.HitDistance; - OutHit = HitResult; - HitComponent = Anchor; - } - } - return HitComponent; -} - -bool UMRUKSubsystem::RaycastAll(const FVector& Origin, const FVector& Direction, float MaxDist, const FMRUKLabelFilter& LabelFilter, TArray& OutHits, TArray& OutAnchors) -{ - bool HitAnything = false; - for (const auto& Room : Rooms) - { - if (!Room) - { - continue; - } - if (Room->RaycastAll(Origin, Direction, MaxDist, LabelFilter, OutHits, OutAnchors)) - { - HitAnything = true; - } - } - return HitAnything; -} - -void UMRUKSubsystem::Initialize(FSubsystemCollectionBase& Collection) -{ - const UMRUKSettings* Settings = GetMutableDefault(); - EnableWorldLock = Settings->EnableWorldLock; - - MRUKShared::LoadMRUKSharedLibrary(); -} - -void UMRUKSubsystem::Deinitialize() -{ - MRUKShared::FreeMRUKSharedLibrary(); -} - -TSharedRef UMRUKSubsystem::JsonSerialize() -{ - TSharedRef JsonObject = MakeShareable(new FJsonObject); - TArray> RoomsArray; - - for (const auto& Room : Rooms) - { - if (Room) - { - RoomsArray.Add(MakeShareable(new FJsonValueObject(Room->JsonSerialize()))); - } - } - - JsonObject->SetArrayField(TEXT("Rooms"), RoomsArray); - - return JsonObject; -} - -void UMRUKSubsystem::UnregisterRoom(AMRUKRoom* Room) -{ - Rooms.Remove(Room); -} - -AMRUKRoom* UMRUKSubsystem::GetCurrentRoom() const -{ - // This is a rather expensive operation, we should only do it at most once per frame. - if (CachedCurrentRoomFrame != GFrameCounter) - { - if (const APlayerController* PlayerController = UGameplayStatics::GetPlayerController(this, 0)) - { - if (APawn* Pawn = PlayerController->GetPawn()) - { - const auto& PawnTransform = Pawn->GetActorTransform(); - - FVector HeadPosition; - FRotator Unused; - - // Get the position and rotation of the VR headset - UHeadMountedDisplayFunctionLibrary::GetOrientationAndPosition(Unused, HeadPosition); - - HeadPosition = PawnTransform.TransformPosition(HeadPosition); - - for (const auto& Room : Rooms) - { - if (IsValid(Room) && Room->IsPositionInRoom(HeadPosition)) - { - CachedCurrentRoom = Room; - CachedCurrentRoomFrame = GFrameCounter; - return Room; - } - } - } - } - } - - if (IsValid(CachedCurrentRoom)) - { - return CachedCurrentRoom; - } - - for (const auto& Room : Rooms) - { - if (IsValid(Room)) - { - return Room; - } - } - return nullptr; -} - -FString UMRUKSubsystem::SaveSceneToJsonString() -{ - FString Json; - const TSharedRef> JsonWriter = TJsonWriterFactory<>::Create(&Json, 0); - FJsonSerializer::Serialize(JsonSerialize(), JsonWriter); - return Json; -} - -void UMRUKSubsystem::LoadSceneFromJsonString(const FString& String) -{ - if (SceneData || SceneLoadStatus == EMRUKInitStatus::Busy) - { - UE_LOG(LogMRUK, Error, TEXT("Can't start loading a scene from JSON while the scene is already loading")); - return; - } - - SceneData = NewObject(this); - - if (SceneLoadStatus == EMRUKInitStatus::Complete) - { - // Update the scene - UE_LOG(LogMRUK, Log, TEXT("Update scene from JSON")); - SceneData->OnComplete.AddDynamic(this, &UMRUKSubsystem::UpdatedSceneDataLoadedComplete); - } - else - { - UE_LOG(LogMRUK, Log, TEXT("Load scene from JSON")); - SceneData->OnComplete.AddDynamic(this, &UMRUKSubsystem::SceneDataLoadedComplete); - } - SceneLoadStatus = EMRUKInitStatus::Busy; - SceneData->LoadFromJson(String); -} - -void UMRUKSubsystem::LoadSceneFromDevice() -{ - if (SceneData || SceneLoadStatus == EMRUKInitStatus::Busy) - { - UE_LOG(LogMRUK, Error, TEXT("Can't start loading a scene from device while the scene is already loading")); - if (SceneData) - { - UE_LOG(LogMRUK, Error, TEXT("Ongoing scene data query")); - } - return; - } - - SceneData = NewObject(this); - if (!Rooms.IsEmpty()) - { - // Update the scene - UE_LOG(LogMRUK, Log, TEXT("Update scene from device")); - SceneData->OnComplete.AddDynamic(this, &UMRUKSubsystem::UpdatedSceneDataLoadedComplete); - } - else - { - UE_LOG(LogMRUK, Log, TEXT("Load scene from device")); - SceneData->OnComplete.AddDynamic(this, &UMRUKSubsystem::SceneDataLoadedComplete); - } - SceneLoadStatus = EMRUKInitStatus::Busy; -#if WITH_EDITOR - if (GetWorld()->WorldType == EWorldType::PIE && GEditor->IsSimulateInEditorInProgress()) - { - // LoadFromDevice sometimes doesn't broadcast failure when running in simulate mode. We can skip trying and just fail immediately in this case. - SceneData->OnComplete.Broadcast(false); - } - else -#endif // WITH_EDITOR - { - SceneData->LoadFromDevice(); - } -} - -void UMRUKSubsystem::SceneDataLoadedComplete(bool Success) -{ - UE_LOG(LogMRUK, Log, TEXT("Loaded scene data. Success==%d"), Success); - if (!SceneData) - { - UE_LOG(LogMRUK, Warning, TEXT("Can't process scene data if it's not loaded")); - FinishedLoading(false); - return; - } - if (SceneData->RoomsData.IsEmpty()) - { - UE_LOG(LogMRUK, Warning, TEXT("No room data found")); - FinishedLoading(false); - return; - } - - if (Success) - { - UE_LOG(LogMRUK, Log, TEXT("Spawn rooms from scene data")); - for (const auto& RoomData : SceneData->RoomsData) - { - AMRUKRoom* Room = SpawnRoom(); - Room->LoadFromData(RoomData); - } - } - FinishedLoading(Success); - - for (const auto& Room : Rooms) - { - OnRoomCreated.Broadcast(Room); - } -} - -void UMRUKSubsystem::UpdatedSceneDataLoadedComplete(bool Success) -{ - UE_LOG(LogMRUK, Log, TEXT("Loaded updated scene data from device. Sucess==%d"), Success); - - TArray> RoomsCreated; - TArray> RoomsUpdated; - - if (Success) - { - UE_LOG(LogMRUK, Log, TEXT("Update found %d rooms"), SceneData->RoomsData.Num()); - - TArray> RoomsToRemove = Rooms; - Rooms.Empty(); - - for (int i = 0; i < SceneData->RoomsData.Num(); ++i) - { - UMRUKRoomData* RoomData = SceneData->RoomsData[i]; - const TObjectPtr* RoomFound = RoomsToRemove.FindByPredicate([RoomData](TObjectPtr Room) { - return Room->Corresponds(RoomData); - }); - TObjectPtr Room = nullptr; - if (RoomFound) - { - Room = *RoomFound; - UE_LOG(LogMRUK, Log, TEXT("Update room from query")); - Rooms.Push(Room); - RoomsToRemove.Remove(Room); - RoomsUpdated.Push(Room); - } - else - { - UE_LOG(LogMRUK, Log, TEXT("Spawn room from query")); - Room = SpawnRoom(); - RoomsCreated.Push(Room); - } - Room->LoadFromData(RoomData); - } - - UE_LOG(LogMRUK, Log, TEXT("Destroy %d old rooms"), RoomsToRemove.Num()); - for (const auto& Room : RoomsToRemove) - { - OnRoomRemoved.Broadcast(Room); - Room->Destroy(); - } - } - FinishedLoading(Success); - - for (const auto& Room : RoomsUpdated) - { - OnRoomUpdated.Broadcast(Room); - } - for (const auto& Room : RoomsCreated) - { - OnRoomCreated.Broadcast(Room); - } -} - -void UMRUKSubsystem::ClearScene() -{ - if (SceneLoadStatus == EMRUKInitStatus::Busy) - { - UE_LOG(LogMRUK, Error, TEXT("Cannot clear scene while scene is loading")); - return; - } - SceneLoadStatus = EMRUKInitStatus::None; - // No ranged for loop because rooms may remove themselves from the array during destruction - for (int32 I = Rooms.Num() - 1; I >= 0; --I) - { - AMRUKRoom* Room = Rooms[I]; - if (IsValid(Room)) - { - Room->Destroy(); - } - } - Rooms.Empty(); -} - -AMRUKAnchor* UMRUKSubsystem::TryGetClosestSurfacePosition(const FVector& WorldPosition, FVector& OutSurfacePosition, const FMRUKLabelFilter& LabelFilter, double MaxDistance) -{ - AMRUKAnchor* ClosestAnchor = nullptr; - - for (const auto& Room : Rooms) - { - if (!Room) - { - continue; - } - double SurfaceDistance{}; - FVector SurfacePos{}; - if (const auto Anchor = Room->TryGetClosestSurfacePosition(WorldPosition, SurfacePos, SurfaceDistance, LabelFilter, MaxDistance)) - { - ClosestAnchor = Anchor; - OutSurfacePosition = SurfacePos; - MaxDistance = SurfaceDistance; - } - } - - return ClosestAnchor; -} - -AMRUKAnchor* UMRUKSubsystem::TryGetClosestSeatPose(const FVector& RayOrigin, const FVector& RayDirection, FTransform& OutSeatTransform) -{ - AMRUKAnchor* ClosestAnchor = nullptr; - double ClosestSeatDistanceSq = DBL_MAX; - - for (const auto& Room : Rooms) - { - if (!Room) - { - continue; - } - - FTransform SeatTransform{}; - if (AMRUKAnchor* Anchor = Room->TryGetClosestSeatPose(RayOrigin, RayDirection, SeatTransform)) - { - const double SeatDistanceSq = (RayOrigin - Anchor->GetActorTransform().GetTranslation()).SquaredLength(); - if (SeatDistanceSq < ClosestSeatDistanceSq) - { - ClosestAnchor = Anchor; - ClosestSeatDistanceSq = SeatDistanceSq; - OutSeatTransform = SeatTransform; - } - } - } - - return ClosestAnchor; -} - -AMRUKAnchor* UMRUKSubsystem::GetBestPoseFromRaycast(const FVector& RayOrigin, const FVector& RayDirection, double MaxDist, const FMRUKLabelFilter& LabelFilter, FTransform& OutPose, EMRUKPositioningMethod PositioningMethod) -{ - AMRUKAnchor* ClosestAnchor = nullptr; - double ClosestPoseDistanceSq = DBL_MAX; - - for (const auto& Room : Rooms) - { - if (!Room) - { - continue; - } - - FTransform Pose{}; - AMRUKAnchor* Anchor = Room->GetBestPoseFromRaycast(RayOrigin, RayDirection, MaxDist, LabelFilter, Pose, PositioningMethod); - if (Anchor) - { - const double PoseDistanceSq = (RayOrigin - OutPose.GetTranslation()).SquaredLength(); - if (PoseDistanceSq < ClosestPoseDistanceSq) - { - ClosestAnchor = Anchor; - ClosestPoseDistanceSq = PoseDistanceSq; - OutPose = Pose; - } - } - } - - return ClosestAnchor; -} - -AMRUKAnchor* UMRUKSubsystem::GetKeyWall(double Tolerance) -{ - if (AMRUKRoom* CurrentRoom = GetCurrentRoom()) - { - return CurrentRoom->GetKeyWall(Tolerance); - } - return nullptr; -} - -AMRUKAnchor* UMRUKSubsystem::GetLargestSurface(const FString& Label) -{ - if (AMRUKRoom* CurrentRoom = GetCurrentRoom()) - { - return CurrentRoom->GetLargestSurface(Label); - } - return nullptr; -} - -AMRUKAnchor* UMRUKSubsystem::IsPositionInSceneVolume(const FVector& WorldPosition, bool TestVerticalBounds, double Tolerance) -{ - for (const auto& Room : Rooms) - { - if (!Room) - { - continue; - } - if (const auto Anchor = Room->IsPositionInSceneVolume(WorldPosition, TestVerticalBounds, Tolerance)) - { - return Anchor; - } - } - return nullptr; -} - -TArray UMRUKSubsystem::SpawnInterior(const TMap& SpawnGroups, const TArray& CutHoleLabels, UMaterialInterface* ProceduralMaterial, bool ShouldFallbackToProcedural) -{ - return SpawnInteriorFromStream(SpawnGroups, FRandomStream(NAME_None), CutHoleLabels, ProceduralMaterial, ShouldFallbackToProcedural); -} - -TArray UMRUKSubsystem::SpawnInteriorFromStream(const TMap& SpawnGroups, const FRandomStream& RandomStream, const TArray& CutHoleLabels, UMaterialInterface* ProceduralMaterial, bool ShouldFallbackToProcedural) -{ - TArray AllInteriorActors; - - for (const auto& Room : Rooms) - { - if (!Room) - { - continue; - } - auto InteriorActors = Room->SpawnInteriorFromStream(SpawnGroups, RandomStream, CutHoleLabels, ProceduralMaterial, ShouldFallbackToProcedural); - AllInteriorActors.Append(InteriorActors); - } - - return AllInteriorActors; -} - -bool UMRUKSubsystem::LaunchSceneCapture() -{ - const bool Success = GetRoomLayoutManager()->LaunchCaptureFlow(); - if (Success) - { - UE_LOG(LogMRUK, Log, TEXT("Capture flow launched with success")); - } - else - { - UE_LOG(LogMRUK, Error, TEXT("Launching capture flow failed!")); - } - return Success; -} - -FBox UMRUKSubsystem::GetActorClassBounds(TSubclassOf Actor) -{ - if (const auto Entry = ActorClassBoundsCache.Find(Actor)) - { - return *Entry; - } - const auto TempActor = GetWorld()->SpawnActor(Actor); - const auto Bounds = TempActor->CalculateComponentsBoundingBoxInLocalSpace(true); - TempActor->Destroy(); - ActorClassBoundsCache.Add(Actor, Bounds); - return Bounds; -} - -void UMRUKSubsystem::SceneCaptureComplete(FOculusXRUInt64 RequestId, bool bSuccess) -{ - UE_LOG(LogMRUK, Log, TEXT("Scene capture complete Success==%d"), bSuccess); - OnCaptureComplete.Broadcast(bSuccess); -} - -UOculusXRRoomLayoutManagerComponent* UMRUKSubsystem::GetRoomLayoutManager() -{ - if (!RoomLayoutManager) - { - FActorSpawnParameters Params{}; - Params.SpawnCollisionHandlingOverride = ESpawnActorCollisionHandlingMethod::AlwaysSpawn; - Params.Owner = nullptr; - RoomLayoutManagerActor = GetWorld()->SpawnActor(Params); - RoomLayoutManagerActor->SetRootComponent(NewObject(RoomLayoutManagerActor, TEXT("SceneComponent"))); - - RoomLayoutManagerActor->AddComponentByClass(UOculusXRRoomLayoutManagerComponent::StaticClass(), false, FTransform::Identity, false); - RoomLayoutManager = RoomLayoutManagerActor->GetComponentByClass(); - RoomLayoutManager->OculusXRRoomLayoutSceneCaptureComplete.AddDynamic(this, &UMRUKSubsystem::SceneCaptureComplete); - } - return RoomLayoutManager; -} - -AMRUKRoom* UMRUKSubsystem::SpawnRoom() -{ - FActorSpawnParameters ActorSpawnParams; - ActorSpawnParams.SpawnCollisionHandlingOverride = ESpawnActorCollisionHandlingMethod::AlwaysSpawn; - AMRUKRoom* Room = GetWorld()->SpawnActor(ActorSpawnParams); - -#if WITH_EDITOR - Room->SetActorLabel(TEXT("ROOM")); -#endif - - Rooms.Push(Room); - - return Room; -} - -void UMRUKSubsystem::FinishedLoading(bool Success) -{ - UE_LOG(LogMRUK, Log, TEXT("Finished loading: Success==%d"), Success); - if (SceneData) - { - SceneData->MarkAsGarbage(); - SceneData = nullptr; - } - - if (Success) - { - SceneLoadStatus = EMRUKInitStatus::Complete; - } - else - { - SceneLoadStatus = EMRUKInitStatus::Failed; - } - OnSceneLoaded.Broadcast(Success); -} - -void UMRUKSubsystem::Tick(float DeltaTime) -{ - if (EnableWorldLock) - { - if (const auto Room = GetCurrentRoom()) - { - if (const APlayerController* PlayerController = UGameplayStatics::GetPlayerController(this, 0)) - { - if (APawn* Pawn = PlayerController->GetPawn()) - { - const auto& PawnTransform = Pawn->GetActorTransform(); - - FVector HeadPosition; - FRotator Unused; - - // Get the position and rotation of the VR headset - UHeadMountedDisplayFunctionLibrary::GetOrientationAndPosition(Unused, HeadPosition); - - HeadPosition = PawnTransform.TransformPosition(HeadPosition); - - Room->UpdateWorldLock(Pawn, HeadPosition); - } - } - } - } -} - -bool UMRUKSubsystem::IsTickable() const -{ - return !HasAnyFlags(RF_BeginDestroyed) && IsValidChecked(this) && (EnableWorldLock); -} - diff --git a/Plugins/MetaXR/Source/MRUtilityKit/Public/MRUtilityKit.h b/Plugins/MetaXR/Source/MRUtilityKit/Public/MRUtilityKit.h deleted file mode 100644 index bb13be5..0000000 --- a/Plugins/MetaXR/Source/MRUtilityKit/Public/MRUtilityKit.h +++ /dev/null @@ -1,412 +0,0 @@ -// Copyright (c) Meta Platforms, Inc. and affiliates. - -#pragma once - -#include "Modules/ModuleManager.h" -#include "GameFramework/Actor.h" - -#include "MRUtilityKit.generated.h" - -DECLARE_LOG_CATEGORY_EXTERN(LogMRUK, Log, All); - -UENUM(BlueprintType) -enum class EMRUKInitStatus : uint8 -{ - /// Not Initialized. - None, - /// Is busy Initializing. - Busy, - /// Has finished Initializing. - Complete, - /// Failed to initialize. - Failed, -}; - -UENUM(BlueprintType) -enum class EMRUKCoordModeU : uint8 -{ - /// The texture coordinates start at 0 and increase by 1 unit every meter. - Metric, - /// The texture coordinates start at 0 and increase by 1 unit every meter but are adjusted to end on a whole number to avoid seams. - MetricSeamless, - /// The texture coordinates are adjusted to the other dimensions to ensure the aspect ratio is maintained. - MaintainAspectRatio, - /// The texture coordinates are adjusted to the other dimensions to ensure the aspect ratio is maintained but are adjusted to end on a whole number to avoid seams. - MaintainAspectRatioSeamless, - /// The texture coordinates range from 0 to 1. - Stretch, -}; - -UENUM(BlueprintType) -enum class EMRUKCoordModeV : uint8 -{ - /// The texture coordinates start at 0 and increase by 1 unit every meter. - Metric, - /// The texture coordinates are adjusted to the other dimensions to ensure the aspect ratio is maintained. - MaintainAspectRatio, - /// The texture coordinates range from 0 to 1. - Stretch, -}; - -UENUM(BlueprintType) -enum class EMRUKSpawnerSelectionMode : uint8 -{ - /// Pick one at random. - Random, - /// Pick the closest size. - ClosestSize, - /// Used in the AMRUKAnchorActorSpawner to use allow for a custom selection mode. - Custom, -}; - -UENUM(BlueprintType) -enum class EMRUKSpawnerScalingMode : uint8 -{ - /// Stretch each axis to exactly match the size of the Plane/Volume. - Stretch, - /// Scale each axis by the same amount to maintain the correct aspect ratio. - UniformScaling, - /// Scale the X and Y axes uniformly but the Z scale can be different. - UniformXYScale, - /// Don't perform any scaling. - NoScaling, - /// Used in the AMRUKAnchorActorSpawner to use allow for a custom scaling. - Custom, -}; - -UENUM(BlueprintType) -enum class EMRUKAlignMode : uint8 -{ - /// Do not perform any alignment - None, - /// Align the bottom of the bounding boxes and center the rest - Default, - /// Center the bounding box in the anchor bounding box - CenterOnCenter, - /// Align the bottom of the bounding boxes and center the rest - BottomOnBottom, - /// Align the top of the bounding boxes and center the rest - TopOnTop, - /// Align the left of the bounding boxes and center the rest - LeftOnLeft, - /// Align the right of the bounding boxes and center the rest - RightOnRight, - /// Align the front of the bounding boxes and center the rest - FrontOnFront, - /// Align the back of the bounding boxes and center the rest - BackOnBack, - /// Align the top to the bottom of the anchor bounding box and center the rest - BottomOnTop, - /// Align the bottom to the top of the anchor bounding box and center the rest - TopOnBottom, - /// Align the left to the right of the anchor bounding box and center the rest - LeftOnRight, - /// Align the right to the left of the anchor bounding box and center the rest - RightOnLeft, - /// Align the front to the back of the anchor bounding box and center the rest - FrontOnBack, - /// Align the back to the front of the anchor bounding box and center the rest - BackOnFront, - /// Use custom alignment mode - Custom, -}; - -/** - * This enum is used to specify the component type, scene anchors can either have plane or volume components associated with them or both. - */ -UENUM(meta = (Bitflags, UseEnumValuesAsMaskValuesInEditor = "true")) -enum class EMRUKComponentType -{ - /// No component type. - None = 0 UMETA(Hidden), - /// Plane component type. - Plane = 1 << 0, - /// Volume component type. - Volume = 1 << 1, - /// Mesh component type. - Mesh = 1 << 2, - /// All component types. - All = Plane | Volume | Mesh UMETA(Hidden), -}; -ENUM_CLASS_FLAGS(EMRUKComponentType); - -/** - * Describes a Raycast hit in the MRUK (Mixed Reality Utility Kit). This structure is created by the AMRUKAnchor::Raycast and AMRUKAnchor::RaycastAll methods. You can read the position where the raycast hit, the normal of the surface that was hit, and the distance from the origin to the raycast hit position. - */ -USTRUCT(BlueprintType) -struct MRUTILITYKIT_API FMRUKHit -{ - GENERATED_BODY() - - /** - * The position where the raycast hit. - */ - UPROPERTY(BlueprintReadOnly, Category = "MR Utility Kit") - FVector HitPosition = FVector::ZeroVector; - - /** - * The normal of the surface that was hit. - */ - UPROPERTY(BlueprintReadOnly, Category = "MR Utility Kit") - FVector HitNormal = FVector::ZeroVector; - - /** - * The distance between the origin of the ray to the hit position. - */ - UPROPERTY(BlueprintReadOnly, Category = "MR Utility Kit") - float HitDistance = 0.0f; -}; - -/** - * Label filter to use in MRUK (Mixed Reality Utility Kit). You can use this to filter anchors by their labels. - * use the IncludedLabels and ExcludedLabels list to specify which labels to include and exclude. - */ -USTRUCT(BlueprintType) -struct MRUTILITYKIT_API FMRUKLabelFilter -{ - GENERATED_BODY() - - /** - * If included labels is not empty then the anchor must have at - * least one of the labels in this list. - */ - UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "MR Utility Kit") - TArray IncludedLabels; - - /** - * Anchors with any of the labels in this exclusion list - * will be ignored. - */ - UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "MR Utility Kit") - TArray ExcludedLabels; - - /** - * Enum flags representing component types to include, by default include all component types. - */ - UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "MR Utility Kit", meta = (Bitmask, BitmaskEnum = "EMRUKComponentType")) - int32 ComponentTypes = static_cast(EMRUKComponentType::All); - - /** - * Check if the labels pass the given label filter - * @param Labels The labels to check. - * @return Whether the filter passes or not. - */ - bool PassesFilter(const TArray& Labels) const; -}; - -/** - * Represents a configuration for adjusting the UV texture coordinates of a plane. - * - * It contains properties to specify an offset and scale to be applied to the UV texture coordinates. - */ -USTRUCT(BlueprintType) -struct MRUTILITYKIT_API FMRUKPlaneUV -{ - GENERATED_BODY() - - /** - * Offset applied to the UV texture coordinates. - */ - UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "MR Utility Kit") - FVector2D Offset = FVector2D::ZeroVector; - - /** - * Scale applied to the UV texture coordinates. - */ - UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "MR Utility Kit") - FVector2D Scale = FVector2D::UnitVector; -}; - -/** - * Texture coordinate modes for MRUK (Mixed Reality Utility Kit). You can use this to specify the texture coordinate mode for the U and V directions. - */ -USTRUCT(BlueprintType) -struct MRUTILITYKIT_API FMRUKTexCoordModes -{ - GENERATED_BODY() - - /** - * Texture Coordinate mode for the U direction. - */ - UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "MR Utility Kit") - EMRUKCoordModeU U = EMRUKCoordModeU::Metric; - - /** - * Texture Coordinate mode for the V direction. - */ - UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "MR Utility Kit") - EMRUKCoordModeV V = EMRUKCoordModeV::Metric; -}; - -/** - * This struct represents a configuration for spawning an actor in the scene. - * - * It contains properties to specify the class of the actor to spawn, whether to match the aspect ratio of the volume, - * whether to calculate the facing direction of the actor, and what scaling and alignment modes to apply to the actor. - */ -USTRUCT(BlueprintType) -struct MRUTILITYKIT_API FMRUKSpawnActor -{ - GENERATED_BODY() - - /** - * The class of actor to spawn. - */ - UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "MR Utility Kit") - TSubclassOf Actor; - - /** - * When match aspect ratio is enabled then the actor will be rotated - * to try and match the aspect ratio of the volume as closely as possible. - * This is most useful for long and thin volumes, keep this disabled for - * objects with an aspect ratio close to 1:1. Only applies to volumes. - */ - UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "MR Utility Kit") - bool MatchAspectRatio = false; - - /** - * When calculate facing direction is enabled the actor will be rotated to - * face away from the closest wall. If match aspect ratio is also enabled - * then that will take precedence and it will be constrained to a choice - * between 2 directions only. Only applies to volumes. - */ - UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "MR Utility Kit") - bool CalculateFacingDirection = false; - - /** - * Set what scaling mode to apply to the actor. By default the actor will - * be stretched to fit the size of the plane/volume. But in some cases - * this may not be desirable and can be customized here. - */ - UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "MR Utility Kit") - EMRUKSpawnerScalingMode ScalingMode = EMRUKSpawnerScalingMode::Stretch; - - /** - * Set what alignment mode to apply to the actor. By default the actor will - * be aligned that its bounding box matches the one from the anchor. - */ - UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "MR Utility Kit") - EMRUKAlignMode AlignMode = EMRUKAlignMode::Default; -}; - -/** - * This enum is used to specify the fallback behaviour when spawning an scene actor. - * Specify whether to fallback to a procedural mesh or not. - */ -UENUM(BlueprintType) -enum class EMRUKFallbackToProceduralOverwrite : uint8 -{ - /// Don't override the fallback to procedural standard behaviour. - Default, - /// Fallback to a procedural mesh. - Fallback, - /// Don't fallback to a procedural mesh. - NoFallback, -}; - -/** - * Holds a configuration for spawning a group of actors. - * - * It contains properties to specify a list of actors to choose from, the selection mode when multiple actors are specified, - * and whether to fall back to spawning a procedural mesh if no actor class has been specified for this label. - */ -USTRUCT(BlueprintType) -struct MRUTILITYKIT_API FMRUKSpawnGroup -{ - GENERATED_BODY() - - /** - * List of actors to choose from, multiple actors can be specified and - * the selection criteria will be determined by the SelectionMode option. - */ - UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "MR Utility Kit") - TArray Actors; - - /** - * Set the selection mode when multiple different actors are specified. - */ - UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "MR Utility Kit") - EMRUKSpawnerSelectionMode SelectionMode = EMRUKSpawnerSelectionMode::Random; - - /** - * Control if there should happen a fallback to spawning a procedural mesh - * in case no actor class has been specified for this label. The global - * fallback behaviour can be specified in the AMRUKAnchorActorSpawner. - */ - UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "MR Utility Kit") - EMRUKFallbackToProceduralOverwrite FallbackToProcedural = EMRUKFallbackToProceduralOverwrite::Default; -}; - -/** - * Implements the settings for the MRUtilityKit plugin. This is Unreal specific and not part of the MR Utility Kit library. - */ -UCLASS(config = Game, defaultconfig) -class MRUTILITYKIT_API UMRUKSettings : public UObject -{ - GENERATED_BODY() - -public: - UMRUKSettings(const FObjectInitializer& obj); - - /** - * When world locking is enabled the position of the VR Pawn will be adjusted each frame to ensure - * the room anchors are where they should be relative to the camera position. This is necessary to - * ensure the position of the virtual objects in the world do not get out of sync with the real world. - */ - UPROPERTY(config, EditAnywhere, Category = "MR Utility Kit") - bool EnableWorldLock = true; -}; - -/** - * MRUK (Mixed Reality Utility Kit) labels. These are the labels that are used by the MR Utility Kit library. - * Those labels are used to identify the different types of objects in the scene, such as walls, floors, etc. - * - * Furthermore you also use those labels to filter, for queries and other tools such as the Raycast and RaycastAll methods. - */ -struct MRUTILITYKIT_API FMRUKLabels -{ - static const FString Floor; - static const FString WallFace; - static const FString InvisibleWallFace; - static const FString Ceiling; - static const FString DoorFrame; - static const FString WindowFrame; - static const FString Couch; - static const FString Table; - static const FString Screen; - static const FString Bed; - static const FString Lamp; - static const FString Plant; - static const FString Storage; - static const FString WallArt; - static const FString GlobalMesh; - static const FString Other; -}; - -/** - * This spawnmode controls how the MR Utility Kit handles spawning actors in the scene, either for all rooms, only for the current room or not at all. - */ -UENUM(BlueprintType) -enum class EMRUKSpawnMode : uint8 -{ - /// Do not spawn anything on loading a scene or rooms. - None = 0, - - /// Will only take the current room into account. This enables legacy single room behaviour. Keep in mind that if your - /// experience loads multiple rooms and you use that mode the behaviour might be undefined. - CurrentRoomOnly, - - /// Spawn in every room and keep on spawning whenever a new room was discovered. - AllRooms -}; - -/** - * UE Module interface impelmentation - */ -class FMRUKModule : public IModuleInterface -{ -public: - /** IModuleInterface implementation */ - virtual void StartupModule() override; - virtual void ShutdownModule() override; -}; diff --git a/Plugins/MetaXR/Source/MRUtilityKit/Public/MRUtilityKitAnchor.h b/Plugins/MetaXR/Source/MRUtilityKit/Public/MRUtilityKitAnchor.h deleted file mode 100644 index a4f27fc..0000000 --- a/Plugins/MetaXR/Source/MRUtilityKit/Public/MRUtilityKitAnchor.h +++ /dev/null @@ -1,281 +0,0 @@ -// Copyright (c) Meta Platforms, Inc. and affiliates. - -#pragma once - -#include "GameFramework/Actor.h" -#include "Dom/JsonObject.h" -#include "MRUtilityKitAnchorActorSpawner.h" - -#include "OculusXRAnchorTypes.h" -#include "ProceduralMeshComponent.h" -#include "MRUtilityKitAnchor.generated.h" - -class AMRUKRoom; -class UMRUKAnchorData; - -/** - * Represents an anchor in the Mixed Reality Utility Kit. This combines an Unreal actor with the scene anchor. - * The actor is placed at the position of the anchor and the actor's rotation is set to match the rotation of the anchor. - * Provides functions to check if a position is inside the volume or plane of the anchor, raycast against the anchor, etc... - * @see https://developer.oculus.com/documentation/unreal/unreal-spatial-anchors/ - * for more information about anchors in the Mixed Reality Utility Kit. - */ -UCLASS(ClassGroup = MRUtilityKit, meta = (DisplayName = "MR Utility Kit Anchor")) -class MRUTILITYKIT_API AMRUKAnchor : public AActor -{ - GENERATED_BODY() - -public: - /** - * The space handle of this anchor - */ - UPROPERTY(VisibleInstanceOnly, Transient, BlueprintReadOnly, Category = "MR Utility Kit") - FOculusXRUInt64 SpaceHandle; - - /** - * The anchors UUID - */ - UPROPERTY(VisibleInstanceOnly, Transient, BlueprintReadOnly, Category = "MR Utility Kit") - FOculusXRUUID AnchorUUID; - - /** - * The semantic classification of the anchor, also sometimes refered to as labels for short. - * This can be for example FLOOR, COUCH, TABLE, SCREEN, BED, LAMP, etc... - */ - UPROPERTY(VisibleInstanceOnly, Transient, BlueprintReadOnly, Category = "MR Utility Kit") - TArray SemanticClassifications; - - /** - * If the anchor has a plane attached to it, this represents the bounds of that plane in - * local coordinate space. - */ - UPROPERTY(VisibleInstanceOnly, Transient, BlueprintReadOnly, Category = "MR Utility Kit") - FBox2D PlaneBounds{ ForceInit }; - - /** - * If the anchor has a plane attached to it, this represents the boundary of it in - * local coordinate space. For rectangular boundaries this will be the same as the - * PlaneBounds. - */ - UPROPERTY(VisibleInstanceOnly, Transient, BlueprintReadOnly, Category = "MR Utility Kit") - TArray PlaneBoundary2D; - - /** - * If the anchor has a volume attached to it, this represents the bounds of that volume in - * local coordinate space. - */ - UPROPERTY(VisibleInstanceOnly, Transient, BlueprintReadOnly, Category = "MR Utility Kit") - FBox VolumeBounds{ ForceInit }; - - /** - * Procedural mesh that is generated from the anchor geometry. - */ - UPROPERTY(VisibleInstanceOnly, Transient, BlueprintReadWrite, Category = "MR Utility Kit") - TObjectPtr ProceduralMeshComponent; - - /** - * Pointer to the parent anchor, e.g. if this is a door or window frame the parent will - * be a wall. If this is a screen it could have a desk parent. - */ - UPROPERTY(VisibleInstanceOnly, Transient, BlueprintReadOnly, Category = "MR Utility Kit") - TObjectPtr ParentAnchor; - - /** - * Array of all children attached to it, e.g. if this is a wall, it could have an array - * of door/window frames. If this is a desk it could have an array of screens on it. - */ - UPROPERTY(VisibleInstanceOnly, Transient, BlueprintReadOnly, Category = "MR Utility Kit") - TArray> ChildAnchors; - - /** - * The room this anchor is placed in. - */ - UPROPERTY(VisibleInstanceOnly, Transient, BlueprintReadOnly, Category = "MR Utility Kit") - TObjectPtr Room; - - /** - * Check if a 2D position is within the boundary of the plane. The position should be in - * the local coordinate system NOT world coordinates. - */ - UFUNCTION(BlueprintCallable, Category = "MR Utility Kit") - bool IsPositionInBoundary(const FVector2D& Position); - - /** - * Generate a uniform random position within the boundary of the plane. - * @return The random position in local coordinate space. - */ - UFUNCTION(BlueprintCallable, Category = "MR Utility Kit") - FVector GenerateRandomPositionOnPlane(); - - /** - * Generate a uniform random position within the boundary of the plane from a random stream. - * @param RandomStream A random generator used to generate the position on the plane. - * @return The random position in local coordinate space. - */ - UFUNCTION(BlueprintCallable, Category = "MR Utility Kit") - FVector GenerateRandomPositionOnPlaneFromStream(const FRandomStream& RandomStream); - - /** - * Cast a ray and return the closest hit against the volume and plane bounds. - * @param Origin Origin The origin of the ray. - * @param Direction Direction The direction of the ray. - * @param MaxDist The maximum distance the ray should travel. - * @param OutHit The closest hit. - * @param ComponentTypes The component types to include in the raycast. - * @return Whether the ray hit anything - */ - UFUNCTION(BlueprintCallable, Category = "MR Utility Kit") - bool Raycast(const FVector& Origin, const FVector& Direction, float MaxDist, FMRUKHit& OutHit, UPARAM(meta = (Bitmask, BitmaskEnum = "EMRUKComponentType")) int32 ComponentTypes = 7 /* EMRUKComponentType::All */); - static_assert(static_cast(EMRUKComponentType::All) == 7, "If this changes, please update the hardcoded default parameter in the Raycast function above"); - - /** - * Cast a ray and collect hits against the volume and plane bounds. The order of the hits in the array is not specified. - * @param Origin Origin The origin of the ray. - * @param Direction Direction The direction of the ray. - * @param MaxDist The maximum distance the ray should travel. - * @param OutHits The hits the ray collected. - * @param ComponentTypes The component types to include in the raycast. - * @return Whether the ray hit anything - */ - UFUNCTION(BlueprintCallable, Category = "MR Utility Kit") - bool RaycastAll(const FVector& Origin, const FVector& Direction, float MaxDist, TArray& OutHits, UPARAM(meta = (Bitmask, BitmaskEnum = "EMRUKComponentType")) int32 ComponentTypes = 7 /* EMRUKComponentType::All */); - static_assert(static_cast(EMRUKComponentType::All) == 7, "If this changes, please update the hardcoded default parameter in the RaycastAll function above"); - - /** - * Attach a procedural mesh to the anchor. The mesh will match the size, position and shape of the volume and/or plane - * if they are set. - * @param PlaneUVAdjustments Scale and offset to apply to the UV texture coordinates. If more than one is specified - * then multiple UV texture coordinates are created (up to 4) and adjustments applied to - * each. This can be left empty in which case a single set of UV texture coordinates are - * created in the range 0 to 1 for the plane. - * @param CutHoleLabels Labels for which the generated mesh should have holes. Only works with planes. - * @param GenerateCollision Whether to generate collision geometry or not - * @param ProceduralMaterial Material to use on the procedural generated mesh. - */ - UFUNCTION(BlueprintCallable, Category = "MR Utility Kit", meta = (AutoCreateRefTerm = "PlaneUVAdjustments", DeprecatedFunction, DeprecationMessage = "Use GenerateProceduralMesh instead.")) - void AttachProceduralMesh(TArray PlaneUVAdjustments, const TArray& CutHoleLabels, bool GenerateCollision = true, UMaterialInterface* ProceduralMaterial = nullptr); - - /** - * Generate a procedural mesh for the anchor. The mesh will match the size, position and shape of the volume and/or plane - * if they are set. - * @param ProceduralMesh The procedural mesh component that should be used to store the generated mesh. - * @param PlaneUVAdjustments Scale and offset to apply to the UV texture coordinates. If more than one is specified - * then multiple UV texture coordinates are created (up to 4) and adjustments applied to - * each. This can be left empty in which case a single set of UV texture coordinates are - * created in the range 0 to 1 for the plane. - * @param CutHoleLabels Labels for which the generated mesh should have holes. Only works with planes. - * @param GenerateCollision Whether to generate collision geometry or not - * @param Offset A offset to make the procedural mesh slightly bigger or smaller than the anchors volume/plane. - */ - UFUNCTION(BlueprintCallable, Category = "MR Utility Kit", meta = (AutoCreateRefTerm = "PlaneUVAdjustments")) - void GenerateProceduralAnchorMesh(UProceduralMeshComponent* ProceduralMesh, const TArray& PlaneUVAdjustments, const TArray& CutHoleLabels, bool PreferVolume = false, bool GenerateCollision = true, double Offset = 0.0); - - /** - * Check if the anchor has the given label. - * @param Label The label to check. - * @return Whether the anchor has the given label. - */ - UFUNCTION(BlueprintCallable, Category = "MR Utility Kit") - bool HasLabel(const FString& Label) const; - - /** - * Check if the anchor has any of the given labels. - * @param Labels The labels to check. - * @return Whether the anchor has any of the given labels. - */ - UFUNCTION(BlueprintCallable, Category = "MR Utility Kit") - bool HasAnyLabel(const TArray& Labels) const; - - /** - * Check if the anchor passes the given label filter - * @param LabelFilter The labels to check. - * @return Whether the anchor has any of the given labels. - */ - UFUNCTION(BlueprintCallable, Category = "MR Utility Kit") - bool PassesLabelFilter(const FMRUKLabelFilter& LabelFilter) const; - - /** - * Calculate the closest surface position on this anchor. - * @param TestPosition The position in world space for which the closes surface position should be obtained. - * @param OutSurfacePosition The closest surface position - * @return The distance between TestPosition and OutSurfacePosition - */ - UFUNCTION(BlueprintCallable, Category = "MR Utility Kit") - double GetClosestSurfacePosition(const FVector& TestPosition, FVector& OutSurfacePosition); - - /** - * Checks if the given position is on or inside the volume bounds. - * Floor, ceiling and wall anchors will be excluded from the search. - * @param Position The position in world space to check - * @param TestVerticalBounds Whether the vertical bounds should be checked or not - * @param Tolerance Tolerance - * @return The anchor the WorldPosition is in. A null pointer otherwise. - */ - UFUNCTION(BlueprintCallable, Category = "MR Utility Kit") - bool IsPositionInVolumeBounds(const FVector& Position, bool TestVerticalBounds = true, double Tolerance = 0.0); - - /** - * Gets a natural “forward” direction for anchors; for planes, this is always Z-forward. - * For volumes, it’s the X/Y cardinal axis that aligns best with the normal of the closest wall. - * @return The forward facing direction. - */ - UFUNCTION(BlueprintCallable, Category = "MR Utility Kit") - FVector GetFacingDirection() const; - - /** - * Spawn a mesh on the position of this anchor. - * The actor should have Z as up, Y as right and X as forward. - * @param ActorClass The Class to spawn at the anchors position. - * @param MatchAspectRatio If true the actor will be rotated to best match the aspect ratio of the volume (applies to volumes only). - * @param CalculateFacingDirection If true then actor will be rotated to face away from the closest wall (applies to volumes only). - * @param ScalingMode Sets how to scale the actor to fit the size of the volume/plane. - * @return The spawned actor or null if nothing was spawned. - */ - UFUNCTION(BlueprintCallable, meta = (DeprecatedFunction, DeprecationMessage = "Use AMRUKAnchorActorSpawner instead."), Category = "MR Utility Kit") - AActor* SpawnInterior(const TSubclassOf& ActorClass, bool MatchAspectRatio = false, bool CalculateFacingDirection = false, EMRUKSpawnerScalingMode ScalingMode = EMRUKSpawnerScalingMode::Stretch); - -public: - AMRUKAnchor(const FObjectInitializer& ObjectInitializer); - - /** - * Load the anchor from a MRUKAnchorData. This is used to load or update the anchor from device or from a JSON file. - * - * @param AnchorData The data to load from. - * @return true if the anchor was loaded successfully. - * @return false if the anchor could not be loaded. - */ - bool LoadFromData(UMRUKAnchorData* AnchorData); - - /** - * Attach a procedural mesh to the anchor. The mesh will match the size, position and shape of the volume and/or plane. - * - * @param CutHoleLabels Labels for which the generated mesh should have holes. Only works with planes. Example values: "WindowFrame", "DoorFrame". - * @param GenerateCollision Whether to generate collision geometry or not. - * @param ProceduralMaterial Material to use on the procedural generated mesh. - */ - void AttachProceduralMesh(const TArray& CutHoleLabels = {}, bool GenerateCollision = true, UMaterialInterface* ProceduralMaterial = nullptr); - - TSharedRef JsonSerialize(); - -protected: - void EndPlay(EEndPlayReason::Type Reason) override; - -private: - bool RayCastPlane(const FRay& LocalRay, float MaxDist, FMRUKHit& OutHit); - bool RayCastVolume(const FRay& LocalRay, float MaxDist, FMRUKHit& OutHit); - - struct TriangulatedMeshCache - { - TArray Vertices; - TArray Triangles; - TArray Areas; - float TotalArea; - - void Clear(); - }; - - UPROPERTY() - AActor* Interior = nullptr; - - TOptional CachedMesh; -}; diff --git a/Plugins/MetaXR/Source/MRUtilityKit/Public/MRUtilityKitAnchorActorSpawner.h b/Plugins/MetaXR/Source/MRUtilityKit/Public/MRUtilityKitAnchorActorSpawner.h deleted file mode 100644 index 02b7beb..0000000 --- a/Plugins/MetaXR/Source/MRUtilityKit/Public/MRUtilityKitAnchorActorSpawner.h +++ /dev/null @@ -1,322 +0,0 @@ -// Copyright (c) Meta Platforms, Inc. and affiliates. - -#pragma once - -#include "GameFramework/Actor.h" -#include "MRUtilityKit.h" -#include "MRUtilityKitAnchorActorSpawner.generated.h" - -extern const FName GMRUK_PROCEDURAL_ANCHOR_MESH_TAG; - -class AMRUKAnchor; -/** - * Spawns meshes on anchor positions. - * If the out of the box functionality doesn't match your goals the AnchorActorSpawner provides way to inject - * custom spawning logic into every step of it's spawning process by overwriting certain functions. - * For this please take a look at SpawnAnchorActorsForRoom(), SpawnAnchorActorForLabel(), and SpawnAnchorActor(). - */ -UCLASS(ClassGroup = MRUtilityKit, meta = (DisplayName = "MR Utility Kit Anchor Actor Spawner")) -class MRUTILITYKIT_API AMRUKAnchorActorSpawner : public AActor -{ - GENERATED_BODY() - -public: - DECLARE_DYNAMIC_MULTICAST_DELEGATE_OneParam(FOnInteriorSpawned, AMRUKRoom*, Room); - - /** - * Event that gets fired when the interior spawner finished spawning actors. - */ - UPROPERTY(BlueprintAssignable, Category = "MR Utility Kit") - FOnInteriorSpawned OnActorsSpawned; - - /** - * Seed to use for the random generator that decideds wich actor class to - * spawn if there a given multiple for a label. - * negative values will have the effect to initialize the random generator - * to a random seed. - */ - UPROPERTY(EditAnywhere, Category = "MR Utility Kit") - int AnchorRandomSpawnSeed = -1; - - /** - * Whether actors should be spawned automatically after the mixed reality - * utility kit has been initialized. This should not be changed after the scene has been loaded. - */ - UPROPERTY(EditAnywhere, Category = "MR Utility Kit") - EMRUKSpawnMode SpawnMode = EMRUKSpawnMode::CurrentRoomOnly; - - /** - * Material to use when falling back to procedural material. - */ - UPROPERTY(EditAnywhere, Category = "MR Utility Kit") - UMaterialInterface* ProceduralMaterial = nullptr; - - /** - * Whether or not the spawner should fallback to procedural meshes in case no actor - * class has been defined for a label. This behaviour can be overwritten on the label - * basis in SpawnGroups. - */ - UPROPERTY(EditAnywhere, Category = "MR Utility Kit") - bool ShouldFallbackToProcedural = true; - - /** - * Labels for which holes should be created in the parents plane mesh. - * E.g. if holes are needed in the walls where the windows and doors are, specify DOOR_FRAME and WINDOW_FRAME. - */ - UPROPERTY(EditAnywhere, Category = "MR Utility Kit") - TArray CutHoleLabels; - - /** - * A map of Actor classes to spawn for the given label. - */ - UPROPERTY(EditAnywhere, Category = "MR Utility Kit") - TMap SpawnGroups{ - { FMRUKLabels::Bed, {} }, - { FMRUKLabels::Ceiling, {} }, - { FMRUKLabels::Couch, {} }, - { FMRUKLabels::DoorFrame, {} }, - { FMRUKLabels::Floor, {} }, - { FMRUKLabels::Lamp, {} }, - { FMRUKLabels::Plant, {} }, - { FMRUKLabels::Screen, {} }, - { FMRUKLabels::Storage, {} }, - { FMRUKLabels::Table, {} }, - { FMRUKLabels::WallArt, {} }, - { FMRUKLabels::WallFace, {} }, - { FMRUKLabels::InvisibleWallFace, { {}, EMRUKSpawnerSelectionMode::Random, EMRUKFallbackToProceduralOverwrite::NoFallback } }, - { FMRUKLabels::WindowFrame, {} }, - { FMRUKLabels::Other, {} }, - }; - - /** - * Spawns the meshes for the given labels above on the anchor positions in each room. - * There might be multiple actor classes for a give label. If thats the case a actor class will be chosen radomly. - * The seed for this random generator can be set by AnchorRandomSpawnSeed. - * This function will be called automatically after the mixed reality utility kit initialized unless - * the option SpawnOnStart is set to false. - * If there is no actor class specified for a label then a procedural mesh matching the anchors volume and plane - * will be generated. - */ - UFUNCTION(BlueprintCallable, Category = "MR Utility Kit") - void SpawnActors(AMRUKRoom* Room); - - /** - * Return all spawned actors from the give room. - * @param Room The room from which the actors should be returned - * @param Actors The spawned actors. - */ - UFUNCTION(BlueprintCallable, Category = "MR Utility Kit") - void GetSpawnedActorsByRoom(AMRUKRoom* Room, TArray& Actors); - - /** - * Return all spawned actors from all rooms. - * @param Actors The spawned actors. - */ - UFUNCTION(BlueprintCallable, Category = "MR Utility Kit") - void GetSpawnedActors(TArray& Actors); - -protected: - /** - * This method gets called by the AnchorActorSpawner when it wants to spawn actors and procedural meshes in the room. - * It's possible to overwrite this function in Blueprint or C++ to implement custom spawning logic. - * The protected methods in the AnchorActorSpawner contain helper functions which can be useful when implementing - * a custom spawning logic. When implementing a custom spawning logic you may want to use SpawnAnchorActor() to spawn - * the actual actor and take care of it's orientation and scaling to match the anchors bounds. - * @param Room The room to spawn actors for. - * @param RandomStream A random stream to be used with the random selection mode. - * @return A list of all spawned actors. - */ - UFUNCTION(BlueprintNativeEvent, Category = "MR Utility Kit") - TArray SpawnAnchorActorsInRoom(AMRUKRoom* Room, const FRandomStream& RandomStream); - - virtual TArray SpawnAnchorActorsInRoom_Implementation(AMRUKRoom* Room, const FRandomStream& RandomStream); - - /** - * This method gets called by the default implementation of the SpawnAnchorActorsInRoom() for every label that should spawn a actor. - * By overwriting this function it is possible to inject custom spawning logic for actors on a per label basis. - * When implementing a custom spawning logic you may want to use SpawnAnchorActor() to spawn the actual actor and take care of it's - * orientation and scaling to match the anchors bounds. - * @param Anchor The anchor to spawn a actor for. - * @param Label The label to spawn a actor for. - * @param SpawnGroup Information on which actor should be spawned. - * @param RandomStream A random stream for implementing the random selection logic. - * @return The spawned actor. - */ - UFUNCTION(BlueprintNativeEvent, BlueprintCallable, Category = "MR Utility Kit") - AActor* SpawnAnchorActorForLabel(AMRUKAnchor* Anchor, const FString& Label, const FMRUKSpawnGroup& SpawnGroup, const FRandomStream& RandomStream); - - virtual AActor* SpawnAnchorActorForLabel_Implementation(AMRUKAnchor* Anchor, const FString& Label, const FMRUKSpawnGroup& SpawnGroup, const FRandomStream& RandomStream); - - /** - * This method gets called by the default implementation of SpawnAnchorActorForLabel() to spawn the anchor and orient and scale - * it correct to the given anchor. If you are planning to implement a custom spawning logic you likely want to use this function - * in the end to actually spawn the actor as it takes care of orientation and scaling of the actor with regards to the anchor bounds. - * @param Anchor The anchor to spawn the actor for. - * @param SpawnActor Information on which actor should be spawned. - * @return The spawned actor. - */ - UFUNCTION(BlueprintNativeEvent, BlueprintCallable, Category = "MR Utility Kit") - AActor* SpawnAnchorActor(AMRUKAnchor* Anchor, const FMRUKSpawnActor& SpawnActor); - - virtual AActor* SpawnAnchorActor_Implementation(AMRUKAnchor* Anchor, const FMRUKSpawnActor& SpawnActor); - - /** - * Override this method to inject custom scaling logic into the orientation process of an actor. The scale that this method returns - * gets used to scale the actor that will be spawned. - * @param Anchor The anchor for which the actor gets spawned. - * @param SpawnedActor The actor that gets spawned. - * @param StretchedScale The scale that would need to be applied to the actor to make it match with the bounding box of the anchor. - * In case it's a plane anchor only the X and Y component of the scale are relevant. - * @return The scale that should be applied to the actor. In case it's a plane anchor only the X and Y component are relevant. - */ - UFUNCTION(BlueprintNativeEvent, BlueprintCallable, Category = "MR Utility Kit") - FVector ComputeCustomScaling(AMRUKAnchor* Anchor, AActor* SpawnedActor, const FVector& StretchedScale); - - virtual FVector ComputeCustomScaling_Implementation(AMRUKAnchor* Anchor, AActor* SpawnedActor, const FVector& StretchedScale); - - /** - * Override this method to inject custom actor selection logic. This will be called for every actor that gets spawned by the AMRUKAnchorActorSpawner. - * @param Anchor The anchor for which a actor should be spawned - * @param SpawnGroup The group of actors that can be used for decision making. - * @param RandomStream A random stream to randomize outputs if necessary. - * @param OutSpawnActor The actor which should be spawned. - * @return Whether the selection process was successful or not. - */ - UFUNCTION(BlueprintNativeEvent, BlueprintCallable, Category = "MR Utility Kit") - bool SelectSpawnActorCustom(AMRUKAnchor* Anchor, const FMRUKSpawnGroup& SpawnGroup, const FRandomStream& RandomStream, FMRUKSpawnActor& OutSpawnActor); - - virtual bool SelectSpawnActorCustom_Implementation(AMRUKAnchor* Anchor, const FMRUKSpawnGroup& SpawnGroup, const FRandomStream& RandomStream, FMRUKSpawnActor& OutSpawnActor); - - /** - * Override this method to inject custom scaling logic into the orientation process of an actor. The scale that this method returns - * gets used to scale the actor that will be spawned. - * @param Anchor The anchor for which the actor gets spawned. - * @param Actor The actor that gets spawned. - * @param ChildBounds the rotated bounding box of the actor that should be spawned. For planes only X and Y components are relevant. - * @param Scale The scale that will be applied to the actor that will be spawned in place of the anchor. For planes only X and Y components are relevant. - * @return The offset that should be applied to the actor. In case it's a plane anchor only the X and Y component are relevant. - */ - UFUNCTION(BlueprintNativeEvent, BlueprintCallable, Category = "MR Utility Kit") - FVector ComputeCustomAlign(AMRUKAnchor* Anchor, AActor* Actor, const FBox& ChildBounds, const FVector& Scale); - - virtual FVector ComputeCustomAlign_Implementation(AMRUKAnchor* Anchor, AActor* Actor, const FBox& ChildBounds, const FVector& Scale); - - /** - * Check if for the given SpawnGroup a procedural mesh should be spawned. - * @param SpawnGroup The spawn group to check - * @return Whether a procedural mesh should be spawned or not - */ - UFUNCTION(BlueprintCallable, Category = "MR Utility Kit") - bool ShouldAnchorFallbackToProceduralMesh(const FMRUKSpawnGroup& SpawnGroup) const; - - /** - * Check if there should be spawned a actor for the given label. This function may return false in case - * the spawner should fallback to a procedural mesh. - * @param Anchor The anchor where the actor should be spawned - * @param Label The label of the anchor - * @param OutSpawnGroup Will be set in case a actor should be spawned - * @return Whether or not a actor should be spawned for the anchor - */ - UFUNCTION(BlueprintCallable, Category = "MR Utility Kit") - bool ShouldSpawnActorForAnchor(AMRUKAnchor* Anchor, const FString& Label, FMRUKSpawnGroup& OutSpawnGroup) const; - - /** - * Spawn a procedural mesh for all walls if no wall actor is given to the spawner. - * This will take care of generating seamless UVs for the walls. - * @param Room The room to spawn in. - */ - UFUNCTION(BlueprintCallable, Category = "MR Utility Kit") - TArray SpawnProceduralMeshesOnWallsIfNoWallActorGiven(AMRUKRoom* Room); - - /** - * Spawn a procedural mesh for the floor if no floor actor is given to the spawner. - * @param Room The room to spawn in. - */ - UFUNCTION(BlueprintCallable, Category = "MR Utility Kit") - AActor* SpawnProceduralMeshOnFloorIfNoFloorActorGiven(AMRUKRoom* Room); - - /** - * Spawn a procedural mesh for the ceiling if no ceiling actor is given to the spawner. - * @param Room The room to spawn in. - */ - UFUNCTION(BlueprintCallable, Category = "MR Utility Kit") - AActor* SpawnProceduralMeshOnCeilingIfNoCeilingActorGiven(AMRUKRoom* Room); - - /** - * Spawn a procedural mesh for the given anchor if the settings on the AnchorActorSpawner say so. - * @param Anchor The anchor for which the procedural mesh should be spawned - */ - UFUNCTION(BlueprintCallable, Category = "MR Utility Kit") - AActor* SpawnProceduralMeshForAnchorIfNeeded(AMRUKAnchor* Anchor); - - /** - * Spawn procedural meshes for every anchor that needs them. Including walls, ceiling and floor. - * The method determines if procedural mesh should be spawned or not based on the settings of the - * AnchorActorSpawner. - * @param Room The room to spawn in. - */ - UFUNCTION(BlueprintCallable, Category = "MR Utility Kit") - TArray SpawnProceduralMeshesInRoom(AMRUKRoom* Room); - - /** - * Select the SpawnActor based on the size that matches best the anchor bounds. - * @param Anchor The anchor for which a actor should be spawned. - * @param SpawnGroup The spawn group. - * @param OutSpawnActor The found spawn actor. - * @return True if a SpawnActor could be found. Otherwise, false. - */ - UFUNCTION(BlueprintCallable, Category = "MR Utility Kit") - bool SelectSpawnActorClosestSize(AMRUKAnchor* Anchor, const FMRUKSpawnGroup& SpawnGroup, FMRUKSpawnActor& OutSpawnActor); - - /** - * Select the SpawnActor randomly - * @param SpawnGroup The spawn group. - * @param RandomStream The random stream to use for the random selection. - * @param OutSpawnActor The found spawn actor. - * @return True if a SpawnActor could be found. Otherwise, false. - */ - UFUNCTION(BlueprintCallable, Category = "MR Utility Kit") - bool SelectSpawnActorRandom(const FMRUKSpawnGroup& SpawnGroup, const FRandomStream& RandomStream, FMRUKSpawnActor& OutSpawnActor); - - /** - * Select a SpawnActor from the SpawnGroup with respect to the given selection mode in SpawnGroup. - * @param Anchor The anchor for which the actor should be spawned. - * @param SpawnGroup The spawn group. - * @param RandomStream The random stream - * @param OutSpawnActor The found spawn actor - * @return True if a spawn actor has been found. Otherwise, false. - */ - UFUNCTION(BlueprintCallable, Category = "MR Utility Kit") - bool SelectSpawnActorFromSpawnGroup(AMRUKAnchor* Anchor, const FMRUKSpawnGroup& SpawnGroup, const FRandomStream& RandomStream, FMRUKSpawnActor& OutSpawnActor); - - /** - * Orient and scale the given actor to the anchors plane or volume bounds. - * @param Anchor The anchor - * @param Actor The actor which should be oriented and scaled to the given anchor. - * @param ScalingMode The scaling mode that should be used when doing the matching. - * @param bCalculateFacingDirection Whether or not the facing direction of the anchor should be calculated and used for the orientation process. - * @param bMatchAspectRatio Whether or not the aspect ratio of the anchor should be matched. - */ - UFUNCTION(BlueprintCallable, Category = "MR Utility Kit") - void AttachAndFitActorToAnchor(AMRUKAnchor* Anchor, AActor* Actor, EMRUKSpawnerScalingMode ScalingMode, EMRUKAlignMode AlignMode, bool bCalculateFacingDirection, bool bMatchAspectRatio); - - void BeginPlay() override; - - UFUNCTION() - void OnRoomCreated(AMRUKRoom* Room); - - UFUNCTION() - void OnRoomUpdated(AMRUKRoom* Room); - - UFUNCTION() - void OnRoomRemoved(AMRUKRoom* Room); - - UFUNCTION() - void RemoveActors(AMRUKRoom* Room); - -private: - // Room UUID to spawned actors in this room - TMap> SpawnedActors; - - int32 LastSeed = -1; -}; diff --git a/Plugins/MetaXR/Source/MRUtilityKit/Public/MRUtilityKitBPLibrary.h b/Plugins/MetaXR/Source/MRUtilityKit/Public/MRUtilityKitBPLibrary.h deleted file mode 100644 index d74df2b..0000000 --- a/Plugins/MetaXR/Source/MRUtilityKit/Public/MRUtilityKitBPLibrary.h +++ /dev/null @@ -1,173 +0,0 @@ -// Copyright (c) Meta Platforms, Inc. and affiliates. - -#pragma once - -#include "Kismet/BlueprintFunctionLibrary.h" -#include "Kismet/BlueprintAsyncActionBase.h" -#include "OculusXRAnchorTypes.h" -#include "MRUtilityKitBPLibrary.generated.h" - -USTRUCT(BlueprintType) -struct FMRUKMeshSegment -{ - GENERATED_BODY() - - TArray Positions; - TArray Indices; -}; - -/** - * Load the scene async from device. - */ -UCLASS() -class MRUTILITYKIT_API UMRUKLoadFromDevice : public UBlueprintAsyncActionBase -{ - GENERATED_BODY() -public: - DECLARE_DYNAMIC_MULTICAST_DELEGATE(FMRUKLoaded); - - UFUNCTION(BlueprintCallable, Category = "MR Utility Kit", meta = (WorldContext = "WorldContext", BlueprintInternalUseOnly = "true" - )) - static UMRUKLoadFromDevice* LoadSceneFromDeviceAsync(const UObject* WorldContext - ); - - virtual void Activate() override; - - UPROPERTY(BlueprintAssignable) - FMRUKLoaded Success; - - UPROPERTY(BlueprintAssignable) - FMRUKLoaded Failure; - -private: - UFUNCTION(CallInEditor) - void OnSceneLoaded(bool Succeeded); - - TWeakObjectPtr World = nullptr; -}; - -/** - * Mixed Reality Utility Kit Blueprint Function Library. - * See functions for further information. - */ -UCLASS() -class MRUTILITYKIT_API UMRUKBPLibrary : public UBlueprintFunctionLibrary -{ - GENERATED_BODY() - -public: - /** - * Load the global mesh from the device. - * @param SpaceHandle Space handle of the room. - * @param OutProceduralMesh Procedural mesh to load the triangle data in. - * @param LoadCollision Whether to generate collision or not. - * @param WorldContext Context of the world. - * @return Whether the load was successful or not. - */ - UFUNCTION(BlueprintCallable, Category = "MR Utility Kit", meta = (WorldContext = "WorldContext")) - static bool LoadGlobalMeshFromDevice(FOculusXRUInt64 SpaceHandle, UProceduralMeshComponent* OutProceduralMesh, bool LoadCollision, const UObject* WorldContext); - - /** - * Load the global mesh from a JSON string. - * @param JsonString The string containing the JSON. - * @param AnchorUUID Anchor UUID of the room - * @param OutProceduralMesh Procedural mesh to load the triangle data in. - * @param LoadCollision Whether to generate collision or not - * @return Whether the load was successful or not. - */ - UFUNCTION(BlueprintCallable, Category = "MR Utility Kit") - static bool LoadGlobalMeshFromJsonString(const FString& JsonString, FOculusXRUUID AnchorUUID, UProceduralMeshComponent* OutProceduralMesh, bool LoadCollision); - - /** - * (Re)Calculate Normals and Tangents of the given procedural mesh. - * @param Mesh The procedural mesh. - */ - UFUNCTION(BlueprintCallable, Category = "MR Utility Kit") - static void RecalculateProceduralMeshAndTangents(class UProceduralMeshComponent* Mesh); - - /** - * Check if the current Unreal Engine is the fork of Meta. - * @return Whether its the fork or not. - */ - UFUNCTION(BlueprintCallable, BlueprintPure, Category = "MR Utility Kit") - static bool IsUnrealEngineMetaFork(); - - /** - * Compute the centroid of a polygon that is defined by the points. - * The centroid may be outside of the polygon in case the polygon is non convex. - * @param PolygonPoints Points that define the polygon. - * @return The centroid. - */ - UFUNCTION(BlueprintCallable, BlueprintPure, Category = "MR Utility Kit") - static FVector2D ComputeCentroid(const TArray& PolygonPoints); - - /** - * In Unreal Engine, scale is always applied in the local space to avoid any skew. - * This means that if you have a component which has a 90 degree rotation and is scaled, or any of its - * children are scaled then the scale axes will not be applied as you would expect. This is can make it - * very awkward to work with when trying to scale the actors to fit within the scene volumes. To work around - * this problem, this function will attempt to adjust the scale axes recursively to match the expected behaviour. - * This will only work reliably if the rotations involved are 90 degrees, if they are not then it will pick the closest axis. - * @param SceneComponent The component where the scale should be set - * @param UnRotatedScale The scale you would like to have without considering any rotations - */ - UFUNCTION(BlueprintCallable, Category = "MR Utility Kit") - static void SetScaleRecursivelyAdjustingForRotation(USceneComponent* SceneComponent, const FVector& UnRotatedScale); - - /** - * Compute the direction that faces away from the closest wall of the given anchor. - * @param Anchor The anchor for which the direction should be computed. - * @param OutCardinalAxisIndex The index of the computed cardinal axis. Can be either 0, 1, 2 or 3 - * @param ExcludedAxes Axes to exclude in the computation. Can contain 0, 1, 2, 3 - * @return The direction - */ - UFUNCTION(BlueprintCallable, Category = "MR Utility Kit") - static FVector ComputeDirectionAwayFromClosestWall(const AMRUKAnchor* Anchor, int& OutCardinalAxisIndex, const TArray ExcludedAxes); - - /** - * Construct a 2D texture from a render target. - * @param RenderTarget2D The render target from which the texture should be created. - * @param Outer The (optional) outer object for the created texture. - * @param TexName Name for the new texture. - * @return The newly created texture. - */ - UFUNCTION(BlueprintCallable, Category = "MR Utility Kit") - static UTexture2D* ConstructTexture2D(UTextureRenderTarget2D* RenderTarget2D, UObject* Outer, const FString& TexName); - - /** - * Extract a column from a matrix. - * @param Matrix The matrix to use. - * @param Index The column index. - * @return The column of the matrix. - */ - UFUNCTION(BlueprintCallable, BlueprintPure, Category = "MR Utility Kit") - static FLinearColor GetMatrixColumn(const FMatrix& Matrix, int32 Index); - - /** - * Compute a grid by taking into account the room box geometry. E.g. create evenly spaced points on ceiling, floor and walls. - * @param Room The room to use - * @param MaxPointsCount The maximum number of points - * @param PointsPerUnitX The density of points on the X axis - * @param PointsPerUnitY The density of points on the Y axis - * @param bIncludeFloor Whether or not to include the floor - * @param bIncludeCeiling Whether or not to include the ceiling - * @param bIncludeWalls Whether or not to include the walls - * @return The computed points - */ - UFUNCTION(BlueprintCallable, Category = "MR Utility Kit") - static TArray ComputeRoomBoxGrid(const AMRUKRoom* Room, int32 MaxPointsCount, double PointsPerUnitX = 1.0, double PointsPerUnitY = 1.0); - - /** - * Create mesh segments from the given mesh. This can be used for creating a destructible mesh system. - * @param MeshPositions The mesh positions that should be segmented - * @param MeshIndices The mesh indices that should be segmented - * @param SegmentationPoints A set of points that should be used to calculate the segments - * @param ReservedMin Reserved space from the lower part of the bound box - * @param ReservedMax Reserved space from the upper part of the bounding box - * @param OutSegments The segmented meshes that have been created from the given mesh - * @param OutReservedSegment - */ - static void CreateMeshSegmentation(const TArray& MeshPositions, const TArray& MeshIndices, - const TArray& SegmentationPoints, const FVector& ReservedMin, const FVector& ReservedMax, - TArray& OutSegments, FMRUKMeshSegment& OutReservedSegment); -}; diff --git a/Plugins/MetaXR/Source/MRUtilityKit/Public/MRUtilityKitBlobShadowComponent.h b/Plugins/MetaXR/Source/MRUtilityKit/Public/MRUtilityKitBlobShadowComponent.h deleted file mode 100644 index f28442a..0000000 --- a/Plugins/MetaXR/Source/MRUtilityKit/Public/MRUtilityKitBlobShadowComponent.h +++ /dev/null @@ -1,72 +0,0 @@ -// Copyright (c) Meta Platforms, Inc. and affiliates. - -#pragma once - -#include "CoreMinimal.h" -#include "Components/StaticMeshComponent.h" -#include "MRUtilityKitBlobShadowComponent.generated.h" - -/** - * Adds a blob shadow below the actor. - * The blob shadow will position and resize itself automatically during runtime. - */ -UCLASS(ClassGroup = MRUtilityKit, Blueprintable, BlueprintType, meta = (BlueprintSpawnableComponent, DisplayName = "MR Utility Kit Blob Shadow Component")) -class MRUTILITYKIT_API UMRUKBlobShadowComponent : public UStaticMeshComponent -{ - GENERATED_BODY() - -public: - /** - * Controls the look of the blob shadow corners (0 = squared corners, 1 = rounded corners). - */ - UPROPERTY(Category = "MR Utility Kit|Aspect", EditAnywhere, BlueprintReadWrite, meta = (UIMin = "0", UIMax = "1")) - float Roundness = 1.0f; - - /** - * Controls the look of the blob shadow alpha (0 = fully opaque, 1 = gradient from the center). - */ - UPROPERTY(Category = "MR Utility Kit|Aspect", EditAnywhere, BlueprintReadWrite, meta = (UIMin = "0", UIMax = "1")) - float Gradient = 0.544f; - - /** - * Controls the curve of the blob shadow alpha gradient (only available if Gradient > 0). - */ - UPROPERTY(Category = "MR Utility Kit|Aspect", EditAnywhere, BlueprintReadWrite, meta = (EditCondition = "Gradient > 0")) - float GradientPower = 3.0f; - - /** - * Increase or decrease the calculated blob shadow size by a fixed amount. - */ - UPROPERTY(Category = "MR Utility Kit", EditAnywhere, BlueprintReadWrite) - float ExtraExtent = -10.0f; - - /** - * Maximum distance the actor can be away from the ground until the blob shadow is not shown anymore. - */ - UPROPERTY(Category = "MR Utility Kit", EditAnywhere, BlueprintReadWrite) - float MaxVerticalDistance = 100.f; - - /** - * Distance from the ground until the blob shadow starts to fade. - */ - UPROPERTY(Category = "MR Utility Kit", EditAnywhere, BlueprintReadWrite) - float FadeDistance = 20.f; - - /** - * Only callable in the editor from the scene, will update the blob shadow size, position and material parameters - * to give a preview how the blob shadow would look like. - */ - UFUNCTION(Category = "MR Utility Kit", CallInEditor) - void UpdatePlaneSizeAndPosition(); - -public: - UMRUKBlobShadowComponent(); - - void BeginPlay() override; - void TickComponent(float DeltaTime, enum ELevelTick TickType, FActorComponentTickFunction* ThisTickFunction) override; - void ComputeOwner2DBounds(FVector& Origin, FVector2D& Extent, double& Yaw) const; - -protected: - UPROPERTY() - UMaterialInstanceDynamic* DynMaterial; -}; diff --git a/Plugins/MetaXR/Source/MRUtilityKit/Public/MRUtilityKitData.h b/Plugins/MetaXR/Source/MRUtilityKit/Public/MRUtilityKitData.h deleted file mode 100644 index 61370d1..0000000 --- a/Plugins/MetaXR/Source/MRUtilityKit/Public/MRUtilityKitData.h +++ /dev/null @@ -1,139 +0,0 @@ -// Copyright (c) Meta Platforms, Inc. and affiliates. - -#pragma once - -#include "GameFramework/Actor.h" -#include "OculusXRRoomLayoutManagerComponent.h" -#include "Dom/JsonValue.h" -#include "OculusXRAnchorsRequests.h" -#include "MRUtilityKitData.generated.h" - -/** - * Actor to help finding the localization of actors. - * It gets a list of all anchor queries that should be localized - * and checks every tick if the anchor localization is there. - * When the localization is complete, it will emit the event OnComplete. - * - * NOTE: Normally this should be a async task. However, the anchor data - * can only be queried in game thread. - */ -UCLASS(ClassGroup = MRUtilityKit, Hidden) -class MRUTILITYKIT_API AMRUKLocalizer : public AActor -{ - GENERATED_BODY() - -public: - DECLARE_DYNAMIC_MULTICAST_DELEGATE_OneParam(FOnComplete, bool, Success); - - /** - * Event that gets fired when all anchors have been localized. - */ - UPROPERTY(BlueprintAssignable, Category = "MR Utility Kit") - FOnComplete OnComplete; - - TArray AnchorsData; - - AMRUKLocalizer(); - - void Tick(float DeltaTime) override; -}; - -/** - * A datastrcture to hold the data of a single anchor. It also provides functions to load the data from device or json. - */ -UCLASS(ClassGroup = MRUtilityKit, Hidden) -class MRUTILITYKIT_API UMRUKAnchorData : public UObject -{ - GENERATED_BODY() - -public: - FOculusXRAnchorsDiscoverResult SpaceQuery; - FTransform Transform; - - FBox2D PlaneBounds; - FBox VolumeBounds; - - TArray SemanticClassifications; - TArray PlaneBoundary2D; - - bool NeedAnchorLocalization = false; - - void LoadFromDevice(const FOculusXRAnchorsDiscoverResult& AnchorsDiscoverResult); - void LoadFromJson(const FJsonValue& Value); -}; - -/** - * Load room data from device. - * When all room data has been loaded, the OnComplete event will be fired. - */ -UCLASS(ClassGroup = MRUtilityKit, Hidden) -class MRUTILITYKIT_API UMRUKRoomData : public UObject -{ - GENERATED_BODY() - -public: - DECLARE_DYNAMIC_MULTICAST_DELEGATE_OneParam(FOnComplete, bool, Success); - - /** - * Event that gets fired after all room data has been loaded. - */ - UPROPERTY(BlueprintAssignable, Category = "MR Utility Kit") - FOnComplete OnComplete; - - FOculusXRAnchorsDiscoverResult SpaceQuery; - FOculusXRRoomLayout RoomLayout; - - UPROPERTY() - TArray> AnchorsData; - - UPROPERTY() - AMRUKLocalizer* LocalizationActor = nullptr; - - class UMRUKSceneData* SceneData; - - void LoadFromDevice(UMRUKSceneData* Data, const FOculusXRAnchorsDiscoverResult& AnchorsDiscoverResult); - void LoadFromJson(UMRUKSceneData* Data, const FJsonValue& Value); - -private: - void FinishQuery(bool Success); - void RoomDataLoadedComplete(EOculusXRAnchorResult::Type Result); - void RoomDataLoadedIncrementalResults(const TArray& DiscoverResults); - UFUNCTION() - void AnchorsInitialized(bool Success); -}; - -/** - * Load scene data from device. - * When all scene data has been loaded, the OnComplete event will be fired. - */ -UCLASS(ClassGroup = MRUtilityKit, Hidden) -class MRUTILITYKIT_API UMRUKSceneData : public UObject -{ - GENERATED_BODY() - -public: - DECLARE_DYNAMIC_MULTICAST_DELEGATE_OneParam(FOnComplete, bool, Success); - - /** - * Event that gets fired after all scene data has been loaded. - */ - UPROPERTY(BlueprintAssignable, Category = "MR Utility Kit") - FOnComplete OnComplete; - - UPROPERTY() - TArray> RoomsData; - - void LoadFromDevice(); - void LoadFromJson(const FString& Json); - -private: - int32 NumRoomsLeftToInitialize = 0; - bool AnyRoomFailed = false; - - void FinishQuery(bool Success); - void SceneDataLoadedResult(EOculusXRAnchorResult::Type Result); - void SceneDataLoadedComplete(const TArray& DiscoverResults); - UFUNCTION() - void RoomQueryComplete(bool Success); - -}; diff --git a/Plugins/MetaXR/Source/MRUtilityKit/Public/MRUtilityKitDebugComponent.h b/Plugins/MetaXR/Source/MRUtilityKit/Public/MRUtilityKitDebugComponent.h deleted file mode 100644 index b45a244..0000000 --- a/Plugins/MetaXR/Source/MRUtilityKit/Public/MRUtilityKitDebugComponent.h +++ /dev/null @@ -1,91 +0,0 @@ -// Copyright (c) Meta Platforms, Inc. and affiliates. - -#pragma once - -#include "GameFramework/Actor.h" -#include "MRUtilityKitDebugComponent.generated.h" - -/** - * Various debugging utilities for the scene. - * This component can for example attached to the player pawn. The various methods can - * then be called on input from the pawn. - */ -UCLASS(ClassGroup = MRUtilityKit, meta = (BlueprintSpawnableComponent, DisplayName = "MR Utility Kit Debug Component")) -class MRUTILITYKIT_API UMRUKDebugComponent : public UActorComponent -{ - GENERATED_BODY() - -public: - /** - * The gizmo to show when visualizing an anchor. - */ - UPROPERTY(EditAnywhere, BlueprintReadOnly, Category = "MR Utility Kit") - TSubclassOf GizmoActorClass = nullptr; - - /** - * The text to show when visualizing an anchor. - */ - UPROPERTY(EditAnywhere, BlueprintReadOnly, Category = "MR Utility Kit") - TSubclassOf TextActorClass = nullptr; - - /** - * The scale that should be applied to the gizmo before displaying it. - */ - UPROPERTY(EditAnywhere, BlueprintReadOnly, Category = "MR Utility Kit") - FVector GizmoScale = FVector(0.1); - - /** - * The scale that should be applied to the text before displaying it. - */ - UPROPERTY(EditAnywhere, BlueprintReadOnly, Category = "MR Utility Kit") - FVector TextScale = FVector(0.5); - - /** - * Shoot a ray and display the anchors coordinate system and labels that was hit by the ray if any. - * Call HideAnchor() to get rid of the displayed anchor. - * @param Origin The ray origin. - * @param Direction The ray direction. - */ - UFUNCTION(BlueprintCallable, Category = "MR Utility Kit") - void ShowAnchorAtRayHit(const FVector& Origin, const FVector& Direction); - - /** - * Hide the current anchor. This method needs only to be called to hide the anchor - * that was displayed by ShowAnchorAtRayHit(). - */ - UFUNCTION(BlueprintCallable, Category = "MR Utility Kit") - void HideAnchor(); - - /** - * Shoot a ray and display the anchors space that was hit by the ray if any. - * Call HideAnchorSpace() to get rid of the displayed anchor space. - * @param Origin The ray origin. - * @param Direction The ray direction. - */ - UFUNCTION(BlueprintCallable, Category = "MR Utility Kit") - void ShowAnchorSpaceAtRayHit(const FVector& Origin, const FVector& Direction); - - /** - * Hide the current anchor space actor. This method needs only to be called to hide the - * anchor space that was displayed by ShowAnchorAtRayHit(). - */ - UFUNCTION(BlueprintCallable, Category = "MR Utility Kit") - void HideAnchorSpace(); - -public: - UMRUKDebugComponent(); - - void BeginPlay() override; - void TickComponent(float DeltaTime, enum ELevelTick TickType, FActorComponentTickFunction* ThisTickFunction) override; - void EndPlay(const EEndPlayReason::Type EndPlayReason) override; - -private: - UPROPERTY() - TObjectPtr ActiveGizmoActor = nullptr; - UPROPERTY() - TObjectPtr ActiveTextActor = nullptr; - UPROPERTY() - TObjectPtr ActiveAnchorSpaceActor = nullptr; - - void OrientTextActorToPlayer() const; -}; diff --git a/Plugins/MetaXR/Source/MRUtilityKit/Public/MRUtilityKitDestructibleMesh.h b/Plugins/MetaXR/Source/MRUtilityKit/Public/MRUtilityKitDestructibleMesh.h deleted file mode 100644 index 6b6db5f..0000000 --- a/Plugins/MetaXR/Source/MRUtilityKit/Public/MRUtilityKitDestructibleMesh.h +++ /dev/null @@ -1,212 +0,0 @@ -// Copyright (c) Meta Platforms, Inc. and affiliates. - -#pragma once - -#include "MRUtilityKit.h" -#include "MRUtilityKitBPLibrary.h" -#include "GameFramework/Actor.h" -#include "ProceduralMeshComponent.h" -#include "Tasks/Task.h" -#include "MRUtilityKitDestructibleMesh.generated.h" - -/** - * Destructible mesh component. Creates mesh segments for the given geometry. - * The segments will be created async. - * In addition, its possible to define areas that are indestructible. - */ -UCLASS(ClassGroup = MRUtilityKit, Blueprintable, BlueprintType, meta = (BlueprintSpawnableComponent, DisplayName = "MR Utility Kit Destructible Mesh Component")) -class MRUTILITYKIT_API UMRUKDestructibleMeshComponent : public UProceduralMeshComponent -{ - GENERATED_BODY() - -public: - DECLARE_DYNAMIC_MULTICAST_DELEGATE(FOnMeshesGenerated); - - UMRUKDestructibleMeshComponent(const FObjectInitializer& ObjectInitializer); - - UPROPERTY(BlueprintAssignable, Category = "MR Utility Kit") - FOnMeshesGenerated OnMeshesGenerated; - - /** - * Material to display on the global mesh - */ - UPROPERTY(EditAnywhere, Category = "MR Utility Kit") - UMaterialInterface* GlobalMeshMaterial; - - /** - * Area on the top of the mesh that should be indestructible. - * The area is given in centimeters 1.0 == 1 cm. - * -1.0 means no reserved area. - */ - UPROPERTY(EditAnywhere, Category = "MR Utility Kit") - double ReservedTop = -1.0; - - /** - * Area on the bottom of the mesh that should be indestructible. - * The area is given in centimeters 1.0 == 1 cm - * -1.0 means no reserved area. - */ - UPROPERTY(EditAnywhere, Category = "MR Utility Kit") - double ReservedBottom = 30.0; - - /** - * Segment the given geometry into smaller chunks. For each chunk a procedural mesh component will be spawned and attached to the owning actor. - * @param MeshPositions Positions of the mesh to segment - * @param MeshIndices Indices of the mesh to segment - * @param SegmentationPoints Points to use to determine the segments. - */ - void SegmentMesh(const TArray& MeshPositions, const TArray& MeshIndices, const TArray& SegmentationPoints); - - virtual void BeginPlay() override; - virtual void TickComponent(float DeltaTime, ELevelTick TickType, FActorComponentTickFunction* ThisTickFunction) override; - -private: - UE::Tasks::TTask, FMRUKMeshSegment>> TaskResult; -}; - -/** - * Actor that constructs a destructible mesh for the given room - * The actor will automatically attach to the global mesh anchor of the given room to take it location and orientation. - */ -UCLASS(ClassGroup = MRUtilityKit, Blueprintable, BlueprintType, meta = (BlueprintSpawnableComponent, DisplayName = "MR Utility Kit Destructible Global Mesh")) -class MRUTILITYKIT_API AMRUKDestructibleGlobalMesh : public AActor -{ - GENERATED_BODY() - -public: - AMRUKDestructibleGlobalMesh(); - - UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "MR Utility Kit") - UMRUKDestructibleMeshComponent* DestructibleMeshComponent; - - /** - * Density of mesh segments on the X axis. - * Increase this value to get smaller cracks in the global mesh. - * Decrease this value to get bigger cracks in the global mesh. - */ - UPROPERTY(EditAnywhere, Category = "MR Utility Kit") - double PointsPerUnitX = 1.0; - - /** - * How many segmentation points should be created at a maximum. - */ - UPROPERTY(EditAnywhere, Category = "MR Utility Kit") - int MaxPointsCount = 256; - - /** - * Density of mesh segments on the Y axis. - * Increase this value to get smaller cracks in the global mesh. - * Decrease this value to get bigger cracks in the global mesh. - */ - UPROPERTY(EditAnywhere, Category = "MR Utility Kit") - double PointsPerUnitY = 1.0; - - /** - * Create a destructible mesh for the given room. If the global mesh has not yet been loaded - * this function will attempt to load the global mesh from the device. - * @param Room The room - */ - UFUNCTION(BlueprintCallable, Category = "MR Utility Kit") - void CreateDestructibleMesh(AMRUKRoom* Room = nullptr); - - /** - * Remove a segment of the global mesh. Takes care of not removing the reserved global mesh segment. - * @param Mesh The mesh to remove - */ - UFUNCTION(BlueprintCallable, Category = "MR Utility Kit") - void RemoveGlobalMeshSegment(UPrimitiveComponent* Mesh); -}; - -/** - * The destructible global mesh spawner allows to spawn (automatically) destructible global meshes - * when new rooms are created. - * A destructible global mesh is a version of the global mesh that can be destructed during runtime. - * The bulk of the work is performed in UDestructibleMeshComponent. It will perform on start a one time - * preprocessing step to segment the given global mesh into smaller chunks. After that the chunks can be used - * during the game and removed (e.g. with ray casts) at any time during the game simulating as if the global - * mesh would crack down. To enhance the visual quality when cracking the (e.g. removing mesh chunks) global mesh - * a particle system could be used. The system allows to define areas that should be non destructible. - */ -UCLASS(ClassGroup = MRUtilityKit, Blueprintable, BlueprintType, meta = (BlueprintSpawnableComponent, DisplayName = "MR Utility Kit Destructible Global Mesh Spawner")) -class MRUTILITYKIT_API AMRUKDestructibleGlobalMeshSpawner : public AActor -{ - GENERATED_BODY() - -public: - /** - * Whether destructible meshes should be spawned automatically. - */ - UPROPERTY(EditAnywhere, Category = "MR Utility Kit") - EMRUKSpawnMode SpawnMode = EMRUKSpawnMode::CurrentRoomOnly; - - /** - * Material to display on the global mesh - */ - UPROPERTY(EditAnywhere, Category = "MR Utility Kit") - UMaterialInterface* GlobalMeshMaterial; - - /** - * Density of mesh segments on the X axis. - * Increase this value to get smaller cracks in the global mesh. - * Decrease this value to get bigger cracks in the global mesh. - */ - UPROPERTY(EditAnywhere, Category = "MR Utility Kit") - double PointsPerUnitX = 1.0; - - /** - * How many segmentation points should be created at a maximum. - */ - UPROPERTY(EditAnywhere, Category = "MR Utility Kit") - int MaxPointsCount = 256; - - /** - * Density of mesh segments on the Y axis. - * Increase this value to get smaller cracks in the global mesh. - * Decrease this value to get bigger cracks in the global mesh. - */ - UPROPERTY(EditAnywhere, Category = "MR Utility Kit") - double PointsPerUnitY = 1.0; - - /** - * Area on the top of the mesh that should be indestructible. - * The area is given in centimeters 1.0 == 1 cm - * -1.0 means no reserved area. - */ - UPROPERTY(EditAnywhere, Category = "MR Utility Kit") - double ReservedTop = -1.0; - - /** - * Area on the bottom of the mesh that should be indestructible. - * The area is given in centimeters 1.0 == 1 cm - * -1.0 means no reserved area. - */ - UPROPERTY(EditAnywhere, Category = "MR Utility Kit") - double ReservedBottom = 30.0; - - void BeginPlay() override; - - /** - * Find the destructible mesh that has been spawned for the given room. - * @param Room Room to look for the destructible mesh - * @return The destructible mesh - */ - UFUNCTION(BlueprintCallable, Category = "MR Utility Kit") - AMRUKDestructibleGlobalMesh* FindDestructibleMeshForRoom(AMRUKRoom* Room); - - /** - * Add new destructible mesh for the given room. A mesh will only get spawned if no - * destructible mesh has been spawned for the room yet. - * @param Room The room. - */ - UFUNCTION(BlueprintCallable, Category = "MR Utility Kit") - AMRUKDestructibleGlobalMesh* AddDestructibleGlobalMesh(AMRUKRoom* Room); - -private: - TMap SpawnedMeshes; - - UFUNCTION() - void OnRoomCreated(AMRUKRoom* Room); - - UFUNCTION() - void OnRoomRemoved(AMRUKRoom* Room); -}; diff --git a/Plugins/MetaXR/Source/MRUtilityKit/Public/MRUtilityKitDistanceMapGenerator.h b/Plugins/MetaXR/Source/MRUtilityKit/Public/MRUtilityKitDistanceMapGenerator.h deleted file mode 100644 index a2625b9..0000000 --- a/Plugins/MetaXR/Source/MRUtilityKit/Public/MRUtilityKitDistanceMapGenerator.h +++ /dev/null @@ -1,197 +0,0 @@ -// Copyright (c) Meta Platforms, Inc. and affiliates. - -#pragma once - -#include "MRUtilityKit.h" -#include "GameFramework/Actor.h" -#include "MRUtilityKitDistanceMapGenerator.generated.h" - -const FName GMRUK_DISTANCE_MAP_ACTOR_TAG = TEXT("DistanceMapActor"); - -UENUM(BlueprintType) -enum class EMRUKDistanceMapGenerationMode : uint8 -{ - // Do not generate a distance map - None, - /// Generate distance map only for the free space. E.g. The floor inside the room. - FreeSpace, - /// Generate the distance map only for the occupied space. E.g. outside the room and inside scene objects. - OccupiedSpace, - /// Generate the distance map for free space and occupied space. - AllSpace, -}; - -/** - * Generates a distance map that can be used in materials to calculate the distance to various objects. - * This can enable interesting effects. With the distance map you can get the distance from scene objects - * or walls in a material shader. - * - * The Jump Flood Algorithm is used to generate the distance map. This is fast enough to regenerate - * every tick. - * - * To capture a distance map after a room has been loaded call CaptureDistanceMap(). - * It will return a captured distance map. In case you already called CaptureDistanceMap() - * you can receive the last captured distance map with GetDistanceMap(). No other setup is required. - * - * This class will create procedural meshes for every anchor to create a mask. These meshes have their - * visibility set to scene capture only. That however means that if you place a scene capture component yourself - * that the meshes will show up in your scene capture component. The actors that have the procedural meshes - * attached are tagged with GMRUK_DISTANCE_MAP_ACTOR_TAG. In case you don't want them to show up in your - * scene capture you can hide them by receiving all these actors with the tag GMRUK_DISTANCE_MAP_ACTOR_TAG - * and add these to the scene captures hidden actors. - */ -UCLASS(ClassGroup = MRUtilityKit, meta = (DisplayName = "MR Utility Kit Distance Map Generator")) -class MRUTILITYKIT_API AMRUKDistanceMapGenerator : public AActor -{ - GENERATED_BODY() - -public: - DECLARE_DYNAMIC_MULTICAST_DELEGATE(FOnReady); - - UPROPERTY(BlueprintAssignable, Category = "MR Utility Kit") - FOnReady OnReady; - - /** - * The mode in which the final distance map should be generated. - */ - UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "MR Utility Kit") - EMRUKDistanceMapGenerationMode DistanceMapGenerationMode = EMRUKDistanceMapGenerationMode::FreeSpace; - - UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "MR Utility Kit") - class USceneComponent* Root; - - UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "MR Utility Kit") - class USceneCaptureComponent2D* SceneCapture2D; - - UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "MR Utility Kit") - EMRUKSpawnMode SpawnMode = EMRUKSpawnMode::CurrentRoomOnly; - - /** - * First render target for jump flood algorithm. - */ - UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "MR Utility Kit") - class UCanvasRenderTarget2D* RenderTarget1; - - /** - * Second render target for jump flood algorithm. - */ - UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "MR Utility Kit") - class UCanvasRenderTarget2D* RenderTarget2; - - /** - * Render target for the final distance map - */ - UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "MR Utility Kit") - class UCanvasRenderTarget2D* DistanceMapRenderTarget; - - /** - * Material to render a mask that gets used to calculate the distance map. - */ - UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "MR Utility Kit") - class UMaterialInterface* MaskMaterial; - - /** - * Material that executes a pass of the jump flood algorithm. - */ - UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "MR Utility Kit") - class UMaterialInterface* JFPassMaterial; - - /** - * Material to render final distance map - */ - UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "MR Utility Kit") - class UMaterialInterface* DistanceMapFreeSpaceMaterial; - - UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "MR Utility Kit") - class UMaterialInterface* DistanceMapOccupiedSpaceMaterial; - - UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "MR Utility Kit") - class UMaterialInterface* DistanceMapAllSpaceMaterial; - - /** - * Capture the distance map. - * @return The captured distance map. - */ - UFUNCTION(BlueprintCallable, Category = "MR Utility Kit") - UTexture* CaptureDistanceMap(); - - /** - * Create mask meshes for the given room. - * These mask meshes are needed for the distance map to be rendered. It should only be called once before - * CaptureDistanceMap in case the SpawnMode has been set to None. - * The operation that this function executes is expensive. It only needs to be called after the room has been - * created or updated. - * @param Room The room for which the masked meshes should be created. - */ - UFUNCTION(BlueprintCallable, Category = "MR Utility Kit") - void CreateMaskMeshesForRoom(AMRUKRoom* Room); - - /** - * Remove mask meshes for the given room. - * This function should only be executed when SpawnMode is set to None. - * It only needs to be called after a room has been removed. - * @param Room The room for which the masked meshes should be removed. - */ - UFUNCTION(BlueprintCallable, Category = "MR Utility Kit") - void RemoveMaskMeshesFromRoom(AMRUKRoom* Room); - - /** - * Return the captured distance map. Be sure to call CaptureDistanceMap() before - * @return The captured distance map. - */ - UFUNCTION(BlueprintCallable, Category = "MR Utility Kit") - UTexture* GetDistanceMap() const; - - UFUNCTION(BlueprintCallable, Category = "MR Utility Kit") - UCanvasRenderTarget2D* GetDistanceMapRenderTarget() const; - - /** - * Retrieve the view info from the scene capture. This is useful for re projection of - * the distance map in a material. - * @return The view info. - */ - UFUNCTION(BlueprintCallable, Category = "MR Utility Kit") - FMinimalViewInfo GetSceneCaptureView() const; - -public: - AMRUKDistanceMapGenerator(); - -protected: - void BeginPlay() override; - -private: - TMap> SpawnedMaskMeshes; - - int32 DistanceMapRT = -1; - - UPROPERTY() - class UMaterialInstanceDynamic* JFPassMaterialInstance = nullptr; - - UPROPERTY() - class UMaterialInstanceDynamic* DistanceMapFreeSpaceMaterialInstance = nullptr; - UPROPERTY() - class UMaterialInstanceDynamic* DistanceMapOccupiedSpaceMaterialInstance = nullptr; - UPROPERTY() - class UMaterialInstanceDynamic* DistanceMapAllSpaceMaterialInstance = nullptr; - - UPROPERTY() - UMaterialInterface* SceneObjectMaskMaterial; - - UPROPERTY() - UMaterialInterface* FloorMaskMaterial; - - void CaptureInitialSceneMask(); - void RenderDistanceMap(); - - UFUNCTION() - void OnRoomCreated(AMRUKRoom* Room); - - UFUNCTION() - void OnRoomUpdated(AMRUKRoom* Room); - - UFUNCTION() - AActor* CreateMaskMeshOfAnchor(AMRUKAnchor* Anchor); - - UFUNCTION() - AActor* UpdateMaskMeshOfAnchor(AMRUKAnchor* Anchor); -}; diff --git a/Plugins/MetaXR/Source/MRUtilityKit/Public/MRUtilityKitGeometry.h b/Plugins/MetaXR/Source/MRUtilityKit/Public/MRUtilityKitGeometry.h deleted file mode 100644 index ffb3d28..0000000 --- a/Plugins/MetaXR/Source/MRUtilityKit/Public/MRUtilityKitGeometry.h +++ /dev/null @@ -1,8 +0,0 @@ -// Copyright (c) Meta Platforms, Inc. and affiliates. - -#pragma once - -#include "Containers/Array.h" -#include "Math/Vector2D.h" - -MRUTILITYKIT_API void MRUKTriangulatePolygon(const TArray>& Polygons, TArray& Vertices, TArray& Indices); diff --git a/Plugins/MetaXR/Source/MRUtilityKit/Public/MRUtilityKitGridSliceResizer.h b/Plugins/MetaXR/Source/MRUtilityKit/Public/MRUtilityKitGridSliceResizer.h deleted file mode 100644 index 1b87338..0000000 --- a/Plugins/MetaXR/Source/MRUtilityKit/Public/MRUtilityKitGridSliceResizer.h +++ /dev/null @@ -1,191 +0,0 @@ -// Copyright (c) Meta Platforms, Inc. and affiliates. - -#pragma once - -#include "CoreMinimal.h" -#include "Components/SceneComponent.h" -#include "MRUtilityKitGridSliceResizer.generated.h" - -UENUM(BlueprintType, Meta = (Bitflags, UseEnumValuesAsMaskValuesInEditor = "true")) -enum class EMRUKScaleCenterMode : uint8 -{ - None = 0 UMETA(Hidden), - XAxis = 1, - YAxis = 2, - ZAxis = 4, -}; - -/** - * The GridSliceResizerComponent is a versatile tool designed to maintain the proportions of - * specific areas of 3D meshes while allowing others to stretch during scaling. This component - * should replace the static mesh component, rather than being used in conjunction with it. - * - * The concept of the GridSliceResizerComponent is similar to the popular 9-Slice-Scaling technique - * used in 2D graphics, which keeps the borders of sprites unstretched while the inner rectangle is - * stretched. In essence, the GridSliceResizerComponent is a 27-Slice-Scaler for 3D meshes. - * - * The component operates by dividing the bounding box of a 3D mesh into 27 cuboids, as illustrated below. - * Not all cuboids are visible in this picture. Only the once that are front facing: - * - * +-----+-----------+-----+ - * /_____/___________/_____/| - * /_____/___________/_____/|| - * / / / /||| - * +-----+-----------+-----+ ||| - * | A | B | C |/||| - * +-----+-----------+-----+ ||| - * | | | | ||| - * | D | E | F | ||| - * | | | |/||/ - * +-----+-----------+-----+ |/ - * | G | H | I | / - * +-----+-----+-----+-----+ - * - * The scaling behaviour is as follows (assuming all other faces of the bounding box are divided as the - * front facing one): - * - * Center Cuboid (E): Vertices within this cuboid stretch on two axes (Y, Z). - * Corner Cuboids (A, C, G, I): These cuboids do not stretch on any axis. - * Middle Cuboids (B, H): These cuboids stretch horizontally but not vertically. - * Middle Cuboids (D, F): These cuboids stretch vertically but not horizontally. - * - * The slicing areas are defined by the SlicerPivotOffset and BorderXNegative, BorderXPositive, etc. - * These border values range from 0 to 1 and extend from the mesh's pivot (which may be offset by SlicerPivotOffset) - * to the maximum or minimum of the bounding box's axis. - * If all borders are set to 1, the mesh will stretch like a regular mesh during scaling. If set to 0, no stretching - * will occur. Typically, you'll want the pivot in the middle of the mesh and the borders set to around 0.8. - * - * You can visualize the borders and pivot in the Actor editor preview using bDebugDrawPivot, bDebugDrawBorderX, etc. - * - * This component is only compatible with static meshes that have CPU access enabled. Ensure you enable CPU - * access in the static mesh editor. - */ -UCLASS(ClassGroup = MRUtilityKit, Blueprintable, BlueprintType, meta = (BlueprintSpawnableComponent, DisplayName = "MR Utility Kit Grid Slice Resizer Component")) -class MRUTILITYKIT_API UMRUKGridSliceResizerComponent : public USceneComponent -{ - GENERATED_BODY() - -public: - /** - * The static mesh to slice. Make sure to enable CPU access on it. - */ - UPROPERTY(EditAnywhere, Category = "MR Utility Kit") - class UStaticMesh* Mesh; - - /** - * Slice border for the negative X axis. - */ - UPROPERTY(EditAnywhere, Category = "MR Utility Kit|Slices", meta = (ClampMin = "0.0", ClampMax = "1.0")) - double BorderXNegative = 1.0; - - /** - * Slice border for the positive X axis. - */ - UPROPERTY(EditAnywhere, Category = "MR Utility Kit|Slices", meta = (ClampMin = "0.0", ClampMax = "1.0")) - double BorderXPositive = 1.0; - - /** - * Slice border for the negative Y axis. - */ - UPROPERTY(EditAnywhere, Category = "MR Utility Kit|Slices", meta = (ClampMin = "0.0", ClampMax = "1.0")) - double BorderYNegative = 1.0; - - /** - * Slice border for the positive Y axis. - */ - UPROPERTY(EditAnywhere, Category = "MR Utility Kit|Slices", meta = (ClampMin = "0.0", ClampMax = "1.0")) - double BorderYPositive = 1.0; - - /** - * Slice border for the negative Z axis. - */ - UPROPERTY(EditAnywhere, Category = "MR Utility Kit|Slices", meta = (ClampMin = "0.0", ClampMax = "1.0")) - double BorderZNegative = 1.0; - - /** - * Slice border for the positive Z axis. - */ - UPROPERTY(EditAnywhere, Category = "MR Utility Kit|Slices", meta = (ClampMin = "0.0", ClampMax = "1.0")) - double BorderZPositive = 1.0; - - /** - * How much the meshes pivot should be offset when applying the slice borders. - */ - UPROPERTY(EditAnywhere, Category = "MR Utility Kit") - FVector SlicerPivotOffset; - - /** - * This parameter determines whether the center part of the object should be scaled. - * If set to false, the center vertices will remain stationary. This is particularly useful when - * you want to maintain the proportions of certain geometrical features in the center part, such - * as a doorknob. By keeping the center vertices in place, you can avoid unwanted stretching effects, - * resulting in a more visually appealing outcome. - * However, it's important to note that for a convincing visual effect, the texture applied to the object should also not stretch. - * If you encounter issues with texture stretching, consider adding an additional loop cut. - * This can help maintain the texture's proportions and prevent it from distorting. - * In case the mesh gets scaled down and some of the center vertices fall outside of the scaled down center - * all vertices that are inside the center will be scaled down uniformly. - */ - UPROPERTY(EditAnywhere, Category = "MR Utility Kit", meta = (Bitmask, BitmaskEnum = "/Script/MRUtilityKit.EMRUKScaleCenterMode")) - uint8 ScaleCenterMode = 0; - - /** - * Whether or not a collision mesh should be created for the static mesh. - */ - UPROPERTY(EditAnywhere, Category = "MR Utility Kit") - bool bGenerateCollision = true; - -#if WITH_EDITORONLY_DATA - /** - * Show the pivot of the mesh that gets used for the slice borders. - */ - UPROPERTY(EditAnywhere, Category = "MR Utility Kit") - bool bDebugDrawPivot = false; - - /** - * Show the slice borders on the X axis. - */ - UPROPERTY(EditAnywhere, Category = "MR Utility Kit") - bool bDebugDrawBorderX = false; - - /** - * Show the slice borders on the Y axis. - */ - UPROPERTY(EditAnywhere, Category = "MR Utility Kit") - bool bDebugDrawBorderY = false; - - /** - * Show the slice borders on the Z axis. - */ - UPROPERTY(EditAnywhere, Category = "MR Utility Kit") - bool bDebugDrawBorderZ = false; -#endif - - /** - * Slice the mesh. This gets automatically called whenever - * the scale of the owning Actor changes. - */ - UFUNCTION(BlueprintCallable, Category = "MR Utility Kit") - void SliceMesh(); - -public: - UMRUKGridSliceResizerComponent(); - - virtual void TickComponent(float DeltaTime, ELevelTick TickType, FActorComponentTickFunction* ThisTickFunction) override; - -protected: - virtual void BeginPlay() override; - virtual void OnRegister() override; - -#if WITH_EDITOR - virtual void PostEditChangeProperty(FPropertyChangedEvent& PropertyChangedEvent) override; -#endif - -private: - friend class FMRUKGridSliceResizerSpec; - - UPROPERTY(Transient) - class UProceduralMeshComponent* ProcMesh; - - FVector ResizerScale = FVector::OneVector; -}; diff --git a/Plugins/MetaXR/Source/MRUtilityKit/Public/MRUtilityKitGuardian.h b/Plugins/MetaXR/Source/MRUtilityKit/Public/MRUtilityKitGuardian.h deleted file mode 100644 index 8936eae..0000000 --- a/Plugins/MetaXR/Source/MRUtilityKit/Public/MRUtilityKitGuardian.h +++ /dev/null @@ -1,37 +0,0 @@ -// Copyright (c) Meta Platforms, Inc. and affiliates. - -#pragma once - -#include "MRUtilityKitRoom.h" -#include "GameFramework/Actor.h" -#include "ProceduralMeshComponent.h" -#include "MRUtilityKitGuardian.generated.h" - -/** - * The Guardian is a procedural mesh that is generated from the anchor geometry and has the guardian material applied. - * It is used to show the player where the walls and furniture. It prevents the player from walking into walls or furniture. - * It uses TryGetClosestSurfacePosition to determine if the player is close to the walls or furniture. - * This can be beneficial if your application has a full VR mode. - */ -UCLASS(ClassGroup = MRUtilityKit, meta = (DisplayName = "MR Utility Kit Guardian Actor")) -class MRUTILITYKIT_API AMRUKGuardian : public AActor -{ - GENERATED_BODY() - -public: - /** - * Procedural mesh that is generated from the anchor geometry and has the guardian material applied. - */ - UPROPERTY(VisibleInstanceOnly, Transient, BlueprintReadOnly, Category = "MR Utility Kit") - TObjectPtr GuardianMeshComponent; - - /** - * Attaches the procedural mesh component to this actor. - * @param GuardianMesh The mesh to attach. - */ - UFUNCTION(BlueprintCallable, Category = "MR Utility Kit") - void CreateGuardian(UProceduralMeshComponent* GuardianMesh); - -public: - AMRUKGuardian(const FObjectInitializer& ObjectInitializer); -}; diff --git a/Plugins/MetaXR/Source/MRUtilityKit/Public/MRUtilityKitGuardianSpawner.h b/Plugins/MetaXR/Source/MRUtilityKit/Public/MRUtilityKitGuardianSpawner.h deleted file mode 100644 index c23b9b0..0000000 --- a/Plugins/MetaXR/Source/MRUtilityKit/Public/MRUtilityKitGuardianSpawner.h +++ /dev/null @@ -1,107 +0,0 @@ -// Copyright (c) Meta Platforms, Inc. and affiliates. - -#pragma once - -#include "MRUtilityKit.h" -#include "GameFramework/Actor.h" -#include "MRUtilityKitGuardian.h" -#include "MRUtilityKitGuardianSpawner.generated.h" - -class AMRUKRoom; - -/** - * This class helps with spawning a guardian if the player gets close to any furniture or walls. This is useful if your application has a full VR mode. - * It can spawn a guardian for each room in the scene. It can also spawn a guardian for the current room only. - * For details about the guardian see the AMRUKGuardian class. - */ -UCLASS(ClassGroup = MRUtilityKit, meta = (DisplayName = "MR Utility Kit Guardian")) -class MRUTILITYKIT_API AMRUKGuardianSpawner : public AActor -{ - GENERATED_BODY() - -public: - AMRUKGuardianSpawner(); - - /** - * Whether SpawnGuardian() should be called automatically after the mixed reality utility kit - * has been initialized. - */ - UPROPERTY(EditAnywhere, Category = "MR Utility Kit") - EMRUKSpawnMode SpawnMode = EMRUKSpawnMode::CurrentRoomOnly; - - /** - * How close the camera needs to come to a surface before the guardian appears. - */ - UPROPERTY(EditAnywhere, Category = "MR Utility Kit") - double GuardianDistance = 0.75; - - /** - * Whether the fading value should be calculated for the shader or not. - If fading is not needed this can save performance. - */ - UPROPERTY(EditAnywhere, Category = "MR Utility Kit") - bool EnableFade = true; - - /** - * Spawn the guardian. This will get called automatically after the mixed reality utility kit has - * been initialized if SpawnMode is set to something other than None. - */ - UFUNCTION(BlueprintCallable, Category = "MR Utility Kit") - void SpawnGuardians(AMRUKRoom* Room); - - /** - * Set the guardian material to a different one. - * @param Material The guardian material. - */ - UFUNCTION(BlueprintSetter, Category = "MR Utility Kit") - void SetGuardianMaterial(UMaterialInstance* Material); - - /** - * Set the density of the grid. - * @param Density The grid density. - */ - UFUNCTION(BlueprintSetter, Category = "MR Utility Kit") - void SetGridDensity(double Density); - -public: - void Tick(float DeltaSeconds) override; - -protected: - /** - * The material to use for the guardian. It needs to have a scalar parameter Fade - * and a vector parameter WallScale. If this material is not set a default one - * will be used. - */ - UPROPERTY(EditAnywhere, BlueprintSetter = SetGuardianMaterial, Category = "MR Utility Kit") - TObjectPtr GuardianMaterial = nullptr; - - /** - * How dense the grid should be. - */ - UPROPERTY(EditAnywhere, BlueprintSetter = SetGridDensity, Category = "MR Utility Kit") - double GridDensity = 2.0; - - void BeginPlay() override; -#if WITH_EDITOR - void PostEditChangeProperty(FPropertyChangedEvent& PropertyChangedEvent) override; -#endif - -private: - // Room UUID to spawned actors in this room - TMap> SpawnedGuardians; - - UPROPERTY() - TObjectPtr DynamicGuardianMaterial = nullptr; - - UFUNCTION() - void DestroyGuardians(AMRUKRoom* Room); - - UFUNCTION() - void OnRoomCreated(AMRUKRoom* Room); - - UFUNCTION() - void OnRoomUpdated(AMRUKRoom* Room); - - UFUNCTION() - void OnRoomRemoved(AMRUKRoom* Room); -}; diff --git a/Plugins/MetaXR/Source/MRUtilityKit/Public/MRUtilityKitLightDispatcher.h b/Plugins/MetaXR/Source/MRUtilityKit/Public/MRUtilityKitLightDispatcher.h deleted file mode 100644 index 8dcde36..0000000 --- a/Plugins/MetaXR/Source/MRUtilityKit/Public/MRUtilityKitLightDispatcher.h +++ /dev/null @@ -1,80 +0,0 @@ -// Copyright (c) Meta Platforms, Inc. and affiliates. - -#pragma once - -#include "CoreMinimal.h" -#include "GameFramework/Actor.h" -#include "MRUtilityKitLightDispatcher.generated.h" - -/** - * If you want to have highlights from lights over passthrough use this actor to collect all point lights in the scene and send them to the M_Highlights material. - * It lights and sends them to a highlight material, which can be used to achieve highlights over Passthrough. - * The highlight effect is achieved by using a material parameter collection. - * See the PTRL Sample Project for an example of how to use this. - */ -UCLASS(ClassGroup = MRUtilityKit, meta = (DisplayName = "MR Utility Kit Light Dispatcher")) -class MRUTILITYKIT_API AMRUKLightDispatcher : public AActor -{ - GENERATED_BODY() - -public: - /** - * The material parameter collection in which to fill lights data. - * This parameter collection gets then send to the shader. - */ - UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "MR Utility Kit") - class UMaterialParameterCollection* Collection; - - /** - * Whether all point lights should be fetched automatically at BeginPlay(). - * The automatic fetching only works for PointLightActors. Actors that have PointLightComponents - * attached to them will not be detected. These should be specified in AdditionalActorsToLookForPointLightComponents. - */ - UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "MR Utility Kit") - bool ShouldFetchPointLightsAtBeginPlay = true; - - /** - * List of actor(s) that contain a PointLightComponent that should contribute to the highlight effect. - * Use AddAdditionalPointLightActor to add actors during runtime. - */ - UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "MR Utility Kit") - TArray AdditionalActorsToLookForPointLightComponents; - - /** - * PointLightActors to use for the highlight effect (not available if "Fetch Point Lights At Begin Play" is true). - */ - UPROPERTY(EditAnywhere, BlueprintReadWrite, meta = (EditCondition = "!ShouldFetchPointLightsAtBeginPlay"), Category = "MR Utility Kit") - TArray ManualPointLights; - - /** - * Add a actor to the AdditionalActorsToLookForPointLightComponents list. - * This should be used during runtime instead of adding actors directly to AdditionalActorsToLookForPointLightComponents. - * @param Actor Actor to add to AdditionalActorsToLookForPointLightComponents. - */ - UFUNCTION(BlueprintCallable, Category = "MR Utility Kit") - void AddAdditionalPointLightActor(AActor* Actor); - - /** - * Only callable in the editor from the scene, will update the linked parameter collection with the info - * of the point lights in the scene (based on the parameters), updating the highlight effect in the process. - * This is meant to preview the effect in the editor. - */ - UFUNCTION(CallInEditor, Category = "MR Utility Kit") - void ForceUpdateCollection(); - -public: - AMRUKLightDispatcher(); - - void Tick(float DeltaSeconds) override; - - void FillParameterCollection(); - -protected: - UPROPERTY(Transient) - TArray PointLightComponents; - - void BeginPlay() override; - - void FillPointLights(); - void AddPointLightsFromActor(const AActor* Actor); -}; diff --git a/Plugins/MetaXR/Source/MRUtilityKit/Public/MRUtilityKitPositionGenerator.h b/Plugins/MetaXR/Source/MRUtilityKit/Public/MRUtilityKitPositionGenerator.h deleted file mode 100644 index 52cdbb4..0000000 --- a/Plugins/MetaXR/Source/MRUtilityKit/Public/MRUtilityKitPositionGenerator.h +++ /dev/null @@ -1,144 +0,0 @@ -// Copyright (c) Meta Platforms, Inc. and affiliates. - -#pragma once - -#include "CoreMinimal.h" -#include "MRUtilityKitRoom.h" -#include "GameFramework/Actor.h" -#include "MRUtilityKitPositionGenerator.generated.h" - -/** - * Holds the settings which are used for generating random positions. It offers several attributes to be configured, such as - * which room to use, what actor to spawn, scene labels to use and much more. This struct is used by the position generator. - * @see AMRUtilityKitPositionGenerator - */ -USTRUCT(BlueprintType) -struct FMRUKRandomSpawnSettings -{ - GENERATED_BODY() - - /** - * When the scene data is loaded, this controls what room(s) the position generator will be used in. - */ - UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "MR Utility Kit") - EMRUKRoomFilter RoomFilter = EMRUKRoomFilter::CurrentRoomOnly; - - /** - * When an actor instance is reference here, this actor will be moved around. - * If you'd need to spawn new actors, use ActorClass. - */ - UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "MR Utility Kit") - AActor* ActorInstance = nullptr; - - /** - * Reference the specific actor class for spawning. - */ - UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "MR Utility Kit") - TSubclassOf ActorClass; - - /** - * How many instances to spawn at the random generated position per room. - * Note: If using an ActorInstance this property is ignored - */ - UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "MR Utility Kit") - int SpawnAmount = 8; - - /** - * Maximum number of times to attempt spawning/moving an object before giving up. - */ - UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "MR Utility Kit") - int MaxIterations = 1000; - - /** - * The type of surface by which to limit the generation. - */ - UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "MR Utility Kit") - EMRUKSpawnLocation SpawnLocations = EMRUKSpawnLocation::Floating; - - /** - * The labels to include or exclude. - */ - UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "MR Utility Kit") - FMRUKLabelFilter Labels; - - /** - * If enabled then the spawn position will be checked to make sure there is no overlap with physics colliders including themselves. - */ - UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "MR Utility Kit") - bool CheckOverlaps = true; - - /** - * Required free space for the object. - */ - UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "MR Utility Kit") - float OverrideBounds = -1; - - /** - * The CollisionChannel to use. - */ - UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "MR Utility Kit") - TEnumAsByte CollisionChannel = ECC_WorldStatic; - - /** - * The clearance distance required in front of the surface in order for it to be considered a valid spawn position. - */ - UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "MR Utility Kit") - float SurfaceClearanceDistance = 0.1f; -}; - -/** - * Position generator that can be used to generate random positions on the surface in a specific room or any room. - * - * It contains methods to generate random positions on the surface of a given spawn location, - * while ensuring that the generated positions are at least `MinDistanceToEdge` away from any edges, - * if it should run on start when MRUK initializes and follow the other settings specified in `SpawnSettings`. - */ -UCLASS() -class MRUTILITYKIT_API AMRUtilityKitPositionGenerator : public AActor -{ - GENERATED_BODY() - -public: - static bool CanSpawnBox(const UWorld* World, const FBox& Box, const FVector& SpawnPosition, const FQuat& SpawnRotation, const FCollisionQueryParams& QueryParams, ECollisionChannel CollisionChannel); - - /** - * Generates a set of random positions on the surface of a given spawn location, while ensuring that the generated positions - * are at least `MinDistanceToEdge` away from any edges and follow the other settings specified in `SpawnSettings`. - * @param OutTransforms An array of transforms representing the generated positions. - * @return A boolean value indicating whether valid positions were found. If no valid positions could be found, `OutTransforms` will be empty. - */ - UFUNCTION(BlueprintCallable, Category = "MR Utility Kit") - bool GenerateRandomPositionsOnSurface(TArray& OutTransforms); - - /** - * Generates a set of random positions on the surface of a given spawn location, while ensuring that the generated positions - * are at least `MinDistanceToEdge` away from any edges and follow the other settings specified in `SpawnSettings` in the - * give room. - * @param Room The room where the positions should be generated in. - * @param OutTransforms An array of transforms representing the generated positions. - * @return A boolean value indicating whether valid positions were found. If no valid positions could be found, `OutTransforms` will be empty. - */ - UFUNCTION(BlueprintCallable, Category = "MR Utility Kit") - bool GenerateRandomPositionsOnSurfaceInRoom(AMRUKRoom* Room, TArray& OutTransforms); - - /** - * Whether GenerateRandomPositionsOnSurface() should be called automatically after the mixed reality utility kit has been initialized - */ - UPROPERTY(EditAnywhere, Category = "MR Utility Kit") - bool RunOnStart = true; - - /** - * Settings that should be used when generating random positions. - */ - UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "MR Utility Kit") - FMRUKRandomSpawnSettings RandomSpawnSettings; - -protected: - virtual void BeginPlay() override; - -private: - virtual UWorld* GetTickableGameObjectWorld() const { return GetWorld(); } - - UFUNCTION() - void SceneLoaded(bool Success); -}; diff --git a/Plugins/MetaXR/Source/MRUtilityKit/Public/MRUtilityKitRoom.h b/Plugins/MetaXR/Source/MRUtilityKit/Public/MRUtilityKitRoom.h deleted file mode 100644 index 682b207..0000000 --- a/Plugins/MetaXR/Source/MRUtilityKit/Public/MRUtilityKitRoom.h +++ /dev/null @@ -1,481 +0,0 @@ -// Copyright (c) Meta Platforms, Inc. and affiliates. - -#pragma once - -#include "GameFramework/Actor.h" -#include "Dom/JsonObject.h" -#include "MRUtilityKit.h" -#include "OculusXRAnchorTypes.h" -#include "MRUtilityKitRoom.generated.h" - -class UMRUKRoomData; - -UENUM(BlueprintType) -enum class EMRUKSpawnLocation : uint8 -{ - Floating UMETA(DisplayName = "Floating"), // Spawn somewhere floating in the free space within the room - AnySurface UMETA(DisplayName = "Any surface"), // Spawn on any surface (i.e. a combination of all 3 options below) - VerticalSurfaces UMETA(DisplayName = "Vertical surfaces"), // Spawn only on vertical surfaces such as walls, windows, wall art, doors, etc... - OnTopOfSurface UMETA(DisplayName = "On top of surfaces"), // Spawn on surfaces facing upwards such as ground, top of tables, beds, couches, etc... - HangingDown UMETA(DisplayName = "Hanging down") // Spawn on surfaces facing downwards such as the ceiling -}; - -enum class EMRUKBoxSide : uint8 -{ - XPos, - XNeg, - YPos, - YNeg, - ZPos, - ZNeg, -}; - -UENUM(BlueprintType) -enum class EMRUKRoomFilter : uint8 -{ - None, - CurrentRoomOnly, - AllRooms -}; - -/** - * Method to use when determining the position and rotation for the best pose. - */ -UENUM(BlueprintType) -enum class EMRUKPositioningMethod : uint8 -{ - /** - * Center the object on the surface. - */ - Center = 0, - /** - * Snap the object to edge which is closest to the user. - */ - Edge, - /** - * Use the location where the ray hit the object as the location. - * The rotation is dependent on the objects shape. For example for walls - * the hit normal from the raycast will be used. For floors the rotation - * will be towards the user and for volumes that got hit on the top the - * rotation will be towards the longest edge that is nearest to the player. - */ - Default, -}; - -/** - * Represents an anchor with its corresponding plane UVs in the Mixed Reality Utility Kit. - */ -USTRUCT(BlueprintType) -struct FMRUKAnchorWithPlaneUVs -{ - GENERATED_BODY() - - /** - * A readonly reference to the anchor. - */ - UPROPERTY(BlueprintReadOnly, Category = "MR Utility Kit") - TObjectPtr Anchor; - - /** - * An array of plane UVs that correspond to the anchor. - */ - UPROPERTY(BlueprintReadOnly, Category = "MR Utility Kit") - TArray PlaneUVs; -}; - -/** - * Represents a room in the MRUK. - * A room holds (MRUK)Anchors as children for entities such as Desk, Floor, Ceiling, Walls, etc. Those entities are defined with their label. - * It also provides events which will be triggered when an anchor has been added, removed or updated from space setup. - * - * This room class calculates different helper properties such as Outline, Edges, Bounds - * and provides room functions as helpers such as determine if a point in space (XYZ) is inside the room, generating points on surfaces, generate points in room (floating), raycasts and more. - */ -UCLASS(ClassGroup = MRUtilityKit, meta = (DisplayName = "MR Utility Kit Room Actor")) -class MRUTILITYKIT_API AMRUKRoom : public AActor -{ - GENERATED_BODY() - -public: - DECLARE_DYNAMIC_MULTICAST_DELEGATE_OneParam(FOnAnchorUpdated, AMRUKAnchor*, Anchor); - DECLARE_DYNAMIC_MULTICAST_DELEGATE_OneParam(FOnAnchorCreated, AMRUKAnchor*, Anchor); - DECLARE_DYNAMIC_MULTICAST_DELEGATE_OneParam(FOnAnchorRemoved, AMRUKAnchor*, Anchor); - - /** - * The space handle of this anchor - */ - UPROPERTY(VisibleInstanceOnly, Transient, BlueprintReadOnly, Category = "MR Utility Kit") - FOculusXRUInt64 SpaceHandle; - - /** - * The anchors UUID - */ - UPROPERTY(VisibleInstanceOnly, Transient, BlueprintReadOnly, Category = "MR Utility Kit") - FOculusXRUUID AnchorUUID; - - /** - * Event that gets fired if a anchor in this room was updated. - * E.g. volume or plane changed. - */ - UPROPERTY(BlueprintAssignable, Category = "MR Utility Kit") - FOnAnchorUpdated OnAnchorUpdated; - - /** - * Event that gets fired if a new anchor was created in this room. - */ - UPROPERTY(BlueprintAssignable, Category = "MR Utility Kit") - FOnAnchorCreated OnAnchorCreated; - - /** - * Event that gets fired if a anchor gets removed from this room. - */ - UPROPERTY(BlueprintAssignable, Category = "MR Utility Kit") - FOnAnchorRemoved OnAnchorRemoved; - - /** - * Bounds of the room. - */ - UPROPERTY(VisibleInstanceOnly, Transient, BlueprintReadOnly, Category = "MR Utility Kit") - FBox RoomBounds; - - /** - * Edges of the room. - */ - UPROPERTY(VisibleInstanceOnly, Transient, BlueprintReadOnly, Category = "MR Utility Kit") - TArray RoomEdges; - - /** - * The floor anchor of this room. - */ - UPROPERTY(VisibleInstanceOnly, Transient, BlueprintReadOnly, Category = "MR Utility Kit") - TObjectPtr FloorAnchor; - - /** - * The ceiling anchor of this room. - */ - UPROPERTY(VisibleInstanceOnly, Transient, BlueprintReadOnly, Category = "MR Utility Kit") - TObjectPtr CeilingAnchor; - - /** - * The wall anchors of this room. - */ - UPROPERTY(VisibleInstanceOnly, Transient, BlueprintReadOnly, Category = "MR Utility Kit") - TArray> WallAnchors; - - /** - * The global mesh anchor of this room. - */ - UPROPERTY(VisibleInstanceOnly, Transient, BlueprintReadOnly, Category = "MR Utility Kit") - TObjectPtr GlobalMeshAnchor; - - /** - * All anchors which are possible to sit on. - */ - UPROPERTY(VisibleInstanceOnly, Transient, BlueprintReadOnly, Category = "MR Utility Kit") - TArray> SeatAnchors; - - /** - * All anchors of this room. - */ - UPROPERTY(VisibleInstanceOnly, Transient, BlueprintReadOnly, Category = "MR Utility Kit") - TArray> AllAnchors; - - /** - * Check whether the position is inside the room or not. - * @param Position The position in world space to check. - * @param TestVerticalBounds Whether the room should be constrained by vertical bounds or not in the check. - * @return Whether the position is inside the room or not. - */ - UFUNCTION(BlueprintCallable, Category = "MR Utility Kit") - bool IsPositionInRoom(const FVector& Position, bool TestVerticalBounds = true); - - /** - * Generate a uniform random position within the room. - * @param OutPosition Contains the randomly generated position. - * @param MinDistanceToSurface The minimum distance between the generated position and the closest surface/volume. - * @param AvoidVolumes If true then the position will not be inside a volume and min distance away from it. - * @return Return true if success otherwise false. If this fails it can be because the min distance to surface is too large. - */ - UFUNCTION(BlueprintCallable, Category = "MR Utility Kit") - bool GenerateRandomPositionInRoom(FVector& OutPosition, float MinDistanceToSurface = 0.0f, bool AvoidVolumes = false); - - /** - * Generate a uniform random position within the room from a random stream. - * @param OutPosition Contains the randomly generated position. - * @param RandomStream A random generator used to generate the position on the plane. - * @param MinDistanceToSurface The minimum distance between the generated position and the closest surface/volume. - * @param AvoidVolumes If true then the position will not be inside a volume and min distance away from it. - * @return Return true if success otherwise false. If this fails it can be because the min distance to surface is too large. - */ - UFUNCTION(BlueprintCallable, Category = "MR Utility Kit") - bool GenerateRandomPositionInRoomFromStream(FVector& OutPosition, const FRandomStream& RandomStream, float MinDistanceToSurface = 0.0f, bool AvoidVolumes = false); - - /** - * Generates a random position on the surface of a given spawn location, while ensuring that the generated position is at least `MinDistanceToEdge` away from any edges. The `LabelFilter` parameter allows you to specify which types of surfaces should be considered for generating the random position. - * - * @param SpawnLocation The location where the random position should be generated. - * @param MinDistanceToEdge The minimum distance from the edge that the generated position must have. - * @param LabelFilter A filter that specifies which types of surfaces should be considered for generating the random position. - * @param OutPosition The generated position. - * @param OutNormal The normal vector of the generated position. - * @return A boolean value indicating whether a valid position was found. If no valid position could be found, both `OutPosition` and `OutNormal` will be set to zero vectors. - */ - UFUNCTION(BlueprintCallable, Category = "MR Utility Kit") - bool GenerateRandomPositionOnSurface(EMRUKSpawnLocation SpawnLocation, float MinDistanceToEdge, FMRUKLabelFilter LabelFilter, FVector& OutPosition, FVector& OutNormal); - - /** - * Cast a ray and return the closest hit anchor - * @param Origin Origin The origin of the ray. - * @param Direction Direction The direction of the ray. - * @param MaxDist The maximum distance the ray should travel. - * @param LabelFilter The label filter can be used to include/exclude certain labels from the search. - * @param OutHit The closest hit. - * @return The anchor that the ray hit. - */ - UFUNCTION(BlueprintCallable, Category = "MR Utility Kit", meta = (AutoCreateRefTerm = "LabelFilter")) - AMRUKAnchor* Raycast(const FVector& Origin, const FVector& Direction, float MaxDist, const FMRUKLabelFilter& LabelFilter, FMRUKHit& OutHit); - - /** - * Cast a ray and collect hits against the volume and plane bounds in this room. The order of the hits in the array is not specified. - * @param Origin Origin The origin of the ray. - * @param Direction Direction The direction of the ray. - * @param MaxDist The maximum distance the ray should travel. - * @param OutHits The hits the ray collected. - * @param LabelFilter The label filter can be used to include/exclude certain labels from the search. - * @param OutAnchors The anchors that were hit. Each anchor in this array corresponds to a entry at the same position in OutHits. - * @return Whether the ray hit anything - */ - UFUNCTION(BlueprintCallable, Category = "MR Utility Kit", meta = (AutoCreateRefTerm = "LabelFilter")) - bool RaycastAll(const FVector& Origin, const FVector& Direction, float MaxDist, const FMRUKLabelFilter& LabelFilter, TArray& OutHits, TArray& OutAnchors); - - /** - * Clear all anchors from the room. - */ - UFUNCTION(BlueprintCallable, Category = "MR Utility Kit") - void ClearRoom(); - - /** - * Check if the room does have any of the labels. - * @param Labels The labels to check. - * @return Whether the label was found in the room. - */ - UFUNCTION(BlueprintCallable, Category = "MR Utility Kit") - bool DoesRoomHave(const TArray& Labels); - - /** - * Get the position on the surface that is closest to the given position with respect to the distance. - * @param WorldPosition The position in world space from which the closest surface point should be found. - * @param OutSurfacePosition The closest position on the closest surface if any. Otherwise zero. - * @param OutSurfaceDistance The distance between WorldPosition and OutSurfacePosition. - * @param LabelFilter The label filter can be used to include/exclude certain labels from the search. - * @param MaxDistance The distance to which a closest surface position should be searched. Everything below or equal to zero will be treated as infinity. - * @return The Anchor on which the closest surface position was found or a null pointer otherwise. - */ - UFUNCTION(BlueprintCallable, Category = "MR Utility Kit", meta = (AutoCreateRefTerm = "LabelFilter")) - AMRUKAnchor* TryGetClosestSurfacePosition(const FVector& WorldPosition, FVector& OutSurfacePosition, double& OutSurfaceDistance, const FMRUKLabelFilter& LabelFilter, double MaxDistance = 0.0); - - /** - * Checks if the given position is on or inside of any scene volume in the room. - * Floor, ceiling and wall anchors will be excluded from the search. - * @param WorldPosition The position in world space to check - * @param TestVerticalBounds Whether the vertical bounds should be checked or not - * @param Tolerance Tolerance - * @return The anchor the WorldPosition is in. A null pointer otherwise. - */ - UFUNCTION(BlueprintCallable, Category = "MR Utility Kit") - AMRUKAnchor* IsPositionInSceneVolume(const FVector& WorldPosition, bool TestVerticalBounds = true, double Tolerance = 0.0); - - /** - * Finds the closest seat given a ray. - * @param RayOrigin The origin of the ray. - * @param RayDirection The direction of the ray. - * @param OutSeatTransform The seat pose. - * @return If any seat was found the Anchor that has seats available will be returned. Otherwise a null pointer. - */ - UFUNCTION(BlueprintCallable, Category = "MR Utility Kit") - AMRUKAnchor* TryGetClosestSeatPose(const FVector& RayOrigin, const FVector& RayDirection, FTransform& OutSeatTransform); - - /** - * Finds all anchors in this room that have the given label attached. - * @param Label The label to search for. - * @return An array off anchors with the given label. - */ - UFUNCTION(BlueprintCallable, Category = "MR Utility Kit") - TArray GetAnchorsByLabel(const FString& Label) const; - - /** - * Finds the first anchor in this room that has the given label attached. - * @param Label The label to search for. - * @return If found, the Anchor that has the label attached. Otherwise a null pointer. - */ - UFUNCTION(BlueprintCallable, Category = "MR Utility Kit") - AMRUKAnchor* GetFirstAnchorByLabel(const FString& Label) const; - - /** - * Get a suggested pose (position & rotation) from a raycast to place objects on surfaces in the scene. - * There are different positioning modes available. Default just uses the position where the raycast - * hit the object. Edge snaps the position to the edge that is nearest to the user and Center simply - * centers the position on top of the surface. - * @param RayOrigin The origin of the ray. - * @param RayDirection The direction of the ray. - * @param MaxDist The maximum distance the ray should travel. - * @param LabelFilter The label filter can be used to include/exclude certain labels from the search. - * @param OutPose The calculated pose. - * @param PositioningMethod The method that should be used for determining the position on the surface. - * @return The anchor that was hit by the ray if any. Otherwise a null pointer. - */ - UFUNCTION(BlueprintCallable, Category = "MR Utility Kit", meta = (AutoCreateRefTerm = "LabelFilter")) - AMRUKAnchor* GetBestPoseFromRaycast(const FVector& RayOrigin, const FVector& RayDirection, double MaxDist, const FMRUKLabelFilter& LabelFilter, FTransform& OutPose, EMRUKPositioningMethod PositioningMethod = EMRUKPositioningMethod::Default); - - /** - * Return the longest wall in the room that has no other walls behind it. - * @param Tolerance The tolerance to use when determining wall that are behind. - * @return The wall anchor that is the key wall in the room. - */ - UFUNCTION(BlueprintCallable, Category = "MR Utility Kit") - AMRUKAnchor* GetKeyWall(double Tolerance = 0.1); - - /** - * Return the largest surface for a given label. - * @param Label The label of the surfaces to search in. - * @return The anchor that has the largest surface if any. Otherwise, a null pointer. - */ - UFUNCTION(BlueprintCallable, Category = "MR Utility Kit") - AMRUKAnchor* GetLargestSurface(const FString& Label); - - /** - * Attach a procedural mesh to the walls. This is done at the room level to ensure the UV coordinates - * can be done in a seamless way if desired. - * @param WallTextureCoordinateModes Mode of the wall texture coordinates. - * @param CutHoleLabels Labels for which holes should be cut into the plane meshes - * @param ProceduralMaterial Material to apply on top of the procedural mesh. - */ - UFUNCTION(BlueprintCallable, Category = "MR Utility Kit", meta = (AutoCreateRefTerm = "WallTextureCoordinateModes", DeprecatedFunction, DeprecationMessage = "Use GenerateProceduralMesh instead.")) - void AttachProceduralMeshToWalls(const TArray& WallTextureCoordinateModes, const TArray& CutHoleLabels, UMaterialInterface* ProceduralMaterial = nullptr); - - /** - * Spawn meshes on the position of the anchors of the room. - * The actors should have Z as up Y as right and X as forward. - * The pivot point should be in the bottom center. - * @param SpawnGroups A map which tells to spawn which actor to a given label. - * @param CutHoleLabels Labels for which the generated mesh should have holes. Only works with planes. - * @param ProceduralMaterial Material to apply on top of the procedural mesh if any. - * @param ShouldFallbackToProcedural Whether or not it should by default fallback to generating a procedural mesh if no actor class has been specified for a label. - * @return All spawned interior actors. - */ - UFUNCTION(BlueprintCallable, meta = (DeprecatedFunction, DeprecationMessage = "Use AMRUKAnchorActorSpawner instead."), Category = "MR Utility Kit") - TArray SpawnInterior(const TMap& SpawnGroups, const TArray& CutHoleLabels, UMaterialInterface* ProceduralMaterial = nullptr, bool ShouldFallbackToProcedural = true); - - /** - * Spawn meshes on the position of the anchors of the room from a random stream. - * The actors should have Z as up Y as right and X as forward. - * The pivot point should be in the bottom center. - * @param SpawnGroups A map wich tells to spawn which actor to a given label. - * @param CutHoleLabels Labels for which the generated mesh should have holes. Only works with planes. - * @param RandomStream A random generator to choose randomly between actor classes if there a multiple for one label. - * @param ProceduralMaterial Material to apply on top of the procedural mesh if any. - * @param ShouldFallbackToProcedural Whether or not it should by default fallback to generating a procedural mesh if no actor class has been specified for a label. - * @return All spawned interior actors. - */ - UFUNCTION(BlueprintCallable, meta = (DeprecatedFunction, DeprecationMessage = "Use AMRUKAnchorActorSpawner instead."), Category = "MR Utility Kit") - TArray SpawnInteriorFromStream(const TMap& SpawnGroups, const FRandomStream& RandomStream, const TArray& CutHoleLabels, UMaterialInterface* ProceduralMaterial = nullptr, bool ShouldFallbackToProcedural = true); - - /** - * Check if the given anchor is a wall anchor. - * @param Anchor The anchor to check. - * @return Whether the anchor is a wall anchor or not. - */ - UFUNCTION(BlueprintCallable, Category = "MR Utility Kit") - bool IsWallAnchor(AMRUKAnchor* Anchor) const; - - /** - * Compute the wall mesh texture coordinate adjustments that are needed to generate proper texture coordinates for the walls. - * @param WallTextureCoordinateModes The texture coordinate mode to use for the walls. - * @param OutAnchorsWithPlaneUVs The computed texture coordinate adjustment with the wall anchor. - */ - UFUNCTION(BlueprintCallable, Category = "MR Utility Kit") - void ComputeWallMeshUVAdjustments(const TArray& WallTextureCoordinateModes, TArray& OutAnchorsWithPlaneUVs); - - /** - * Load the triangle mesh of the global mesh anchor if it's available. - * @param Material The Material to show if the global mesh is visible. - * @return On success true, otherwise false. - */ - UFUNCTION(BlueprintCallable, Category = "MR Utility Kit") - bool LoadGlobalMeshFromDevice(UMaterialInterface* Material = nullptr); - - /** - * Load the triangle mesh of the global mesh anchor. For this function to succeed you need to make - * sure to have a global mesh specified in the JSON file. Not every JSON file has a global mesh in it. - * @param JsonString The string with the JSON data. - * @param Material Material to apply on the global mesh. - * @return On Success true, otherwise false. - */ - UFUNCTION(BlueprintCallable, Category = "MR Utility Kit") - bool LoadGlobalMeshFromJsonString(const FString& JsonString, UMaterialInterface* Material = nullptr); - - /** - * Compute the centroid of the room by taking the points of the floor boundary. - * The centroid may be outside of the room for non convex rooms. - * The Z value determines the height of the resulting vectors and ranges from - * 0 to 1. A Z value of 1 corresponds to the ceiling positions Z, while a Z value - * of 0 corresponds to the floor positions Z. Any value between 0 and 1 will - * interpolate between the two values. - * In case the floor and ceiling anchors haven't been loaded yet a zero vector - * will be returned. - * @param Z Value used for interpolation of Z. - * @return The centroid. - */ - UFUNCTION(BlueprintCallable, Category = "MR Utility Kit") - FVector ComputeCentroid(double Z = 0.5); - -public: - AMRUKRoom(const FObjectInitializer& ObjectInitializer); - - void EndPlay(EEndPlayReason::Type Reason) override; - - void LoadFromData(UMRUKRoomData* RoomData); - - void AttachProceduralMeshToWalls(const TArray& CutHoleLabels, UMaterialInterface* ProceduralMaterial = nullptr); - void UpdateWorldLock(APawn* Pawn, const FVector& HeadWorldPosition) const; - - TSharedRef JsonSerialize(); - - bool Corresponds(UMRUKRoomData* RoomQuery) const; - -private: - friend class FMRUKSpec; - - AMRUKAnchor* SpawnAnchor(); - - void InitializeRoom(); - void ComputeRoomBounds(); - void ComputeAnchorHierarchy(); - void ComputeSeats(); - void ComputeRoomEdges(); - - UFUNCTION(CallInEditor) - void AddAnchorToRoom(AMRUKAnchor* Anchor); - - class UProceduralMeshComponent* GetOrCreateGlobalMeshProceduralMeshComponent(bool& OutExistedAlready) const; - void SetupGlobalMeshProceduralMeshComponent(UProceduralMeshComponent& ProcMeshComponent, bool ExistedAlready, UMaterialInterface* Material) const; - - /** - * Get the list of walls in an order such that each one wall shares an edge with the next - * one in the list. - */ - TArray> ComputeConnectedWalls() const; - - FOculusXRRoomLayout RoomLayout; - UPROPERTY() - AMRUKAnchor* KeyWallAnchor = nullptr; - - struct Surface - { - AMRUKAnchor* Anchor; - float UsableArea; - bool IsPlane; - FBox2D Bounds; - EMRUKBoxSide Side; - }; -}; diff --git a/Plugins/MetaXR/Source/MRUtilityKit/Public/MRUtilityKitSceneDataProvider.h b/Plugins/MetaXR/Source/MRUtilityKit/Public/MRUtilityKitSceneDataProvider.h deleted file mode 100644 index 5fc5336..0000000 --- a/Plugins/MetaXR/Source/MRUtilityKit/Public/MRUtilityKitSceneDataProvider.h +++ /dev/null @@ -1,76 +0,0 @@ -// Copyright (c) Meta Platforms, Inc. and affiliates. - -#pragma once - -#include "CoreMinimal.h" -#include "GameFramework/Actor.h" -#include "Engine/DataTable.h" -#include "MRUtilityKitSceneDataProvider.generated.h" - -UCLASS(ClassGroup = MRUtilityKit, meta = (DisplayName = "MR Utility Kit Scene Data Provider")) -/* - * This actor is used to provide scene data to the MR Utility Kit when running in editor. - * You can also use it to not load a room from device. - * Use RandomRoom to load a random room from the list of rooms. - */ -class MRUTILITYKIT_API AMRUKSceneDataProvider : public AActor -{ - GENERATED_BODY() - -public: - /* - * This list holds the rooms that can be loaded, the key is the room type and the value is a data table that contains multiple rooms. - * Roomtypes such as Bedrooms, Livingrooms, etc. - */ - UPROPERTY(EditAnywhere, Category = "MR Utility Kit") - TMap Rooms; - - /* - * When this is true, a random room will be loaded from the list of rooms. - */ - UPROPERTY(BlueprintReadWrite, EditAnywhere, Category = "MR Utility Kit") - bool bUseRandomRoom = true; - - /* - * When this is true, a random room will be loaded a specific room class, defined in Rooms (Bedrooms, Offices, ..). - */ - UPROPERTY(BlueprintReadWrite, EditAnywhere, Category = "MR Utility Kit", meta = (EditCondition = "!bUseRandomRoom", EditConditionHides)) - bool bUseRandomRoomFromClass = false; - - /* - * Use this property to define a specific room class to load, only visible when bUseRandomRoomFromClass is true. - * This can be a room class such as Bedrooms, Offices, .. - */ - UPROPERTY(BlueprintReadWrite, EditAnywhere, Category = "MR Utility Kit", meta = (EditCondition = "bUseRandomRoomFromClass && !bUseRandomRoom", EditConditionHides)) - FString SpecificRoomClass; - - /* - * Define a specific room to load, only visible when bUseRandomRoom is false. - */ - UPROPERTY(BlueprintReadWrite, EditAnywhere, Category = "MR Utility Kit", meta = (EditCondition = "!bUseRandomRoom && !bUseRandomRoomFromClass", EditConditionHides)) - FString SpecificRoomName; - - /* - * Gets you a room from the list of rooms, if bUseRandomRoom is true, a random room will be returned. - */ - UFUNCTION(BlueprintCallable, Category = "MR Utility Kit") - void GetRoom(FString& RoomJSON, FString& RoomName); - -protected: - // Called when the game starts or when spawned - virtual void BeginPlay() override; - -public: - // Called every frame - virtual void Tick(float DeltaTime) override; -}; - -USTRUCT(Blueprintable, BlueprintType) -struct FJSONData : public FTableRowBase -{ - GENERATED_USTRUCT_BODY() - -public: - UPROPERTY(BlueprintReadWrite, EditAnywhere, Category = "MR Utility Kit") - FString JSON; -}; diff --git a/Plugins/MetaXR/Source/MRUtilityKit/Public/MRUtilityKitSeatsComponent.h b/Plugins/MetaXR/Source/MRUtilityKit/Public/MRUtilityKitSeatsComponent.h deleted file mode 100644 index 5e05a7e..0000000 --- a/Plugins/MetaXR/Source/MRUtilityKit/Public/MRUtilityKitSeatsComponent.h +++ /dev/null @@ -1,31 +0,0 @@ -// Copyright (c) Meta Platforms, Inc. and affiliates. - -#pragma once - -#include "CoreMinimal.h" -#include "Components/ActorComponent.h" -#include "MRUtilityKitSeatsComponent.generated.h" - -/** - * This component gets attached to Anchors which have seats available. - * Seats can be used for example to spawn avatars in the correct locations. - */ -UCLASS(ClassGroup = MRUtilityKit) -class MRUTILITYKIT_API UMRUKSeatsComponent : public UActorComponent -{ - GENERATED_BODY() - -public: - UPROPERTY(EditAnywhere, BlueprintReadOnly, Category = "MR Utility Kit") - TArray SeatPoses; - - /** - * Calculate the seats poses that are available on the actor. - * This gets called automatically after the room has been loaded. - * However, it's okay to call this function again with a different SeatWidth. - * The seat poses will then get recalculated. - * @param SeatWidth The width of each seat. - */ - UFUNCTION(BlueprintCallable, Category = "MR Utility Kit") - void CalculateSeatPoses(double SeatWidth = 60.0); -}; diff --git a/Plugins/MetaXR/Source/MRUtilityKit/Public/MRUtilityKitSerializationHelpers.h b/Plugins/MetaXR/Source/MRUtilityKit/Public/MRUtilityKitSerializationHelpers.h deleted file mode 100644 index 6ae18e4..0000000 --- a/Plugins/MetaXR/Source/MRUtilityKit/Public/MRUtilityKitSerializationHelpers.h +++ /dev/null @@ -1,204 +0,0 @@ -// Copyright (c) Meta Platforms, Inc. and affiliates. - -#pragma once - -#include "Dom/JsonObject.h" -#include "OculusXRAnchorTypes.h" -#include "OculusXRRoomLayoutManagerComponent.h" - -TSharedPtr MRUKSerialize(const FString& String); - -void MRUKDeserialize(const FJsonValue& Value, FString& String); - -TSharedPtr MRUKSerialize(const FOculusXRUUID& UUID); - -void MRUKDeserialize(const FJsonValue& Value, FOculusXRUUID& UUID); - -TSharedPtr MRUKSerialize(const double& Number); - -void MRUKDeserialize(const FJsonValue& Value, double& Number); - -TSharedPtr MRUKSerialize(const FOculusXRRoomLayout& RoomLayout); - -void MRUKDeserialize(const FJsonValue& Value, FOculusXRRoomLayout& RoomLayout); - -template -TSharedPtr MRUKSerialize(const UE::Math::TVector2& Vector) -{ - return MakeShareable(new FJsonValueArray({ MakeShareable(new FJsonValueNumber(Vector.X)), MakeShareable(new FJsonValueNumber(Vector.Y)) })); -} - -template -void MRUKDeserialize(const FJsonValue& Value, UE::Math::TVector2& Vector) -{ - if (auto Array = Value.AsArray(); Array.Num() == 2) - { - MRUKDeserialize(*Array[0], Vector.X); - MRUKDeserialize(*Array[1], Vector.Y); - } - else - { - UE_LOG(LogJson, Error, TEXT("Json Array is of length %d (expected 2) when deserializing TVector2"), Array.Num()); - Vector = UE::Math::TVector2::ZeroVector; - } -} - -template -TSharedPtr MRUKSerialize(const UE::Math::TVector& Vector) -{ - return MakeShareable(new FJsonValueArray({ MakeShareable(new FJsonValueNumber(Vector.X)), MakeShareable(new FJsonValueNumber(Vector.Y)), MakeShareable(new FJsonValueNumber(Vector.Z)) })); -} - -template -void MRUKDeserialize(const FJsonValue& Value, UE::Math::TVector& Vector) -{ - auto Array = Value.AsArray(); - if (Array.Num() == 3) - { - MRUKDeserialize(*Array[0], Vector.X); - MRUKDeserialize(*Array[1], Vector.Y); - MRUKDeserialize(*Array[2], Vector.Z); - } - else - { - UE_LOG(LogJson, Error, TEXT("Json Array is of length %d (expected 3) when deserializing TVector"), Array.Num()); - Vector = UE::Math::TVector::ZeroVector; - } -} - -template -TSharedPtr MRUKSerialize(const UE::Math::TRotator& Rotation) -{ - return MakeShareable(new FJsonValueArray({ MakeShareable(new FJsonValueNumber(Rotation.Pitch)), MakeShareable(new FJsonValueNumber(Rotation.Yaw)), MakeShareable(new FJsonValueNumber(Rotation.Roll)) })); -} - -template -void MRUKDeserialize(const FJsonValue& Value, UE::Math::TRotator& Rotation) -{ - auto Array = Value.AsArray(); - if (Array.Num() == 3) - { - MRUKDeserialize(*Array[0], Rotation.Pitch); - MRUKDeserialize(*Array[1], Rotation.Yaw); - MRUKDeserialize(*Array[2], Rotation.Roll); - } - else - { - UE_LOG(LogJson, Error, TEXT("Json Array is of length %d (expected 3) when deserializing TRotator"), Array.Num()); - Rotation = UE::Math::TRotator::ZeroRotator; - } -} - -template -TSharedPtr MRUKSerialize(const UE::Math::TBox2& Box) -{ - if (Box.bIsValid) - { - const TSharedRef JsonObject = MakeShareable(new FJsonObject); - JsonObject->SetField(TEXT("Min"), MRUKSerialize(Box.Min)); - JsonObject->SetField(TEXT("Max"), MRUKSerialize(Box.Max)); - return MakeShareable(new FJsonValueObject(JsonObject)); - } - else - { - return MakeShareable(new FJsonValueNull()); - } -} - -template -void MRUKDeserialize(const FJsonValue& Value, UE::Math::TBox2& Box) -{ - if (Value.IsNull()) - { - Box.Init(); - } - else - { - const auto Object = Value.AsObject(); - MRUKDeserialize(*Object->GetField(TEXT("Min")), Box.Min); - MRUKDeserialize(*Object->GetField(TEXT("Max")), Box.Max); - Box.bIsValid = true; - } -} - -template -TSharedPtr MRUKSerialize(const UE::Math::TBox& Box) -{ - if (Box.IsValid) - { - const TSharedRef JsonObject = MakeShareable(new FJsonObject); - JsonObject->SetField(TEXT("Min"), MRUKSerialize(Box.Min)); - JsonObject->SetField(TEXT("Max"), MRUKSerialize(Box.Max)); - return MakeShareable(new FJsonValueObject(JsonObject)); - } - else - { - return MakeShareable(new FJsonValueNull()); - } -} - -template -void MRUKDeserialize(const FJsonValue& Value, UE::Math::TBox& Box) -{ - if (Value.IsNull()) - { - Box.Init(); - } - else - { - const auto Object = Value.AsObject(); - MRUKDeserialize(*Object->GetField(TEXT("Min")), Box.Min); - MRUKDeserialize(*Object->GetField(TEXT("Max")), Box.Max); - Box.IsValid = 1; - } -} - -template -TSharedPtr MRUKSerialize(const UE::Math::TTransform& Transform) -{ - const TSharedRef JsonObject = MakeShareable(new FJsonObject); - JsonObject->SetField(TEXT("Translation"), MRUKSerialize(Transform.GetTranslation())); - JsonObject->SetField(TEXT("Rotation"), MRUKSerialize(Transform.Rotator())); - JsonObject->SetField(TEXT("Scale"), MRUKSerialize(Transform.GetScale3D())); - return MakeShareable(new FJsonValueObject(JsonObject)); -} - -template -void MRUKDeserialize(const FJsonValue& Value, UE::Math::TTransform& Transform) -{ - const auto Object = Value.AsObject(); - UE::Math::TVector Translation; - UE::Math::TRotator Rotation; - UE::Math::TVector Scale; - MRUKDeserialize(*Object->GetField(TEXT("Translation")), Translation); - MRUKDeserialize(*Object->GetField(TEXT("Rotation")), Rotation); - MRUKDeserialize(*Object->GetField(TEXT("Scale")), Scale); - - Transform.SetComponents(UE::Math::TQuat(Rotation), Translation, Scale); -} - -template -TSharedPtr MRUKSerialize(const TArray& Array) -{ - TArray> JsonArray; - JsonArray.Reserve(Array.Num()); - for (const auto& Item : Array) - { - JsonArray.Add(MRUKSerialize(Item)); - } - return MakeShareable(new FJsonValueArray(JsonArray)); -} - -template -void MRUKDeserialize(const FJsonValue& Value, TArray& OutArray) -{ - auto Array = Value.AsArray(); - OutArray.Empty(); - OutArray.Reserve(Array.Num()); - for (const auto& Item : Array) - { - T ItemDeserialized; - MRUKDeserialize(*Item, ItemDeserialized); - OutArray.Push(ItemDeserialized); - } -} diff --git a/Plugins/MetaXR/Source/MRUtilityKit/Public/MRUtilityKitSubsystem.h b/Plugins/MetaXR/Source/MRUtilityKit/Public/MRUtilityKitSubsystem.h deleted file mode 100644 index 1644240..0000000 --- a/Plugins/MetaXR/Source/MRUtilityKit/Public/MRUtilityKitSubsystem.h +++ /dev/null @@ -1,309 +0,0 @@ -// Copyright (c) Meta Platforms, Inc. and affiliates. - -#pragma once - -#include "Dom/JsonObject.h" -#include "GameFramework/Actor.h" -#include "GameFramework/WorldSettings.h" -#include "MRUtilityKitRoom.h" -#include "MRUtilityKit.h" -#include "MRUtilityKitData.h" -#include "OculusXRAnchorsRequests.h" -#include "Subsystems/GameInstanceSubsystem.h" -#include "Tickable.h" - -#include "MRUtilityKitSubsystem.generated.h" - -/** - * The Mixed Reality Utility Kit subsystem. - * - * This subsystem acts as a container for scene/anchor data. It has methods to load - * the scene data from the device or a JSON file. After the scene data has been loaded - * it will be stored inside the subsystem to make it possible to query the data from - * everywhere. In addition, it offers methods to fulfill queries on the scene data - * like ray casts or simple content placement. - * - * The subsystem only contains core functionality that is useful for most cases. - * More specific functionality is part of actors. For example, if your goal is to spawn - * meshes in the place of scene anchors you can place the AMRUKAnchorActorSpawner in the - * level to do this. When a level loads you would first load the anchor data from the - * device with this subsystem by calling LoadSceneFromDevice() and then the AMRUKAnchorActorSpawner - * will listen for the subsystem to load the scene data and then spawn the actors accordingly. - * - * You can expect methods in this subsystem to take all loaded rooms into consideration when computing. - * If you want to use a method only on a single specific room, there is most of the time a method - * with the same name on the AMRUKRoom. - */ -UCLASS(ClassGroup = MRUtilityKit) -class MRUTILITYKIT_API UMRUKSubsystem : public UGameInstanceSubsystem, public FTickableGameObject -{ - GENERATED_BODY() - -public: - DECLARE_DYNAMIC_MULTICAST_DELEGATE_OneParam(FOnLoaded, bool, Success); - DECLARE_DYNAMIC_MULTICAST_DELEGATE_OneParam(FOnCaptureComplete, bool, Success); - DECLARE_DYNAMIC_MULTICAST_DELEGATE_OneParam(FOnRoomCreated, AMRUKRoom*, Room); - DECLARE_DYNAMIC_MULTICAST_DELEGATE_OneParam(FOnRoomUpdated, AMRUKRoom*, Room); - DECLARE_DYNAMIC_MULTICAST_DELEGATE_OneParam(FOnRoomRemoved, AMRUKRoom*, Room); - - /** - * The status of the scene loading. When loading from device this is an asynchronous process - * so will be in the Busy state until it moves to Complete or Failed. - */ - UPROPERTY(VisibleInstanceOnly, Transient, BlueprintReadOnly, Category = "MR Utility Kit") - EMRUKInitStatus SceneLoadStatus = EMRUKInitStatus::None; - - /** - * An event that will trigger when a scene is loaded either from Device or from JSON. - * The Success parameter indicates whether the scene was loaded successfully or not. - */ - UPROPERTY(BlueprintAssignable, Category = "MR Utility Kit") - FOnLoaded OnSceneLoaded; - - /** - * An event that gets fired after a room has been created. - */ - UPROPERTY(BlueprintAssignable, Category = "MR Utility Kit") - FOnRoomCreated OnRoomCreated; - - /** - * An event that gets fired after a room has been updated. - */ - UPROPERTY(BlueprintAssignable, Category = "MR Utility Kit") - FOnRoomUpdated OnRoomUpdated; - - /** - * An event that gets fired when a room gets removed. - */ - UPROPERTY(BlueprintAssignable, Category = "MR Utility Kit") - FOnRoomRemoved OnRoomRemoved; - - /** - * An event that will trigger when the capture flow completed. - * The Success parameter indicates whether the scene was captured successfully or not. - */ - UPROPERTY(BlueprintAssignable, Category = "MR Utility Kit") - FOnCaptureComplete OnCaptureComplete; - - /** - * Contains a list of rooms that are tracked by the mixed reality utility kit subsystem. - */ - UPROPERTY(VisibleInstanceOnly, Transient, BlueprintReadOnly, Category = "MR Utility Kit") - TArray> Rooms; - - /** - * When world locking is enabled the position of the VR Pawn will be adjusted each frame to ensure - * the room anchors are where they should be relative to the camera position. This is necessary to - * ensure the position of the virtual objects in the world do not get out of sync with the real world. - */ - UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "MR Utility Kit") - bool EnableWorldLock = true; - - - /** - * Cast a ray and return the closest hit anchor in the scene. - * @param Origin Origin The origin of the ray. - * @param Direction Direction The direction of the ray. - * @param MaxDist The maximum distance the ray should travel. - * @param LabelFilter The label filter can be used to include/exclude certain labels from the search. - * @param OutHit The closest hit. - * @return The anchor that the ray hit - */ - UFUNCTION(BlueprintCallable, Category = "MR Utility Kit", meta = (AutoCreateRefTerm = "LabelFilter")) - AMRUKAnchor* Raycast(const FVector& Origin, const FVector& Direction, float MaxDist, const FMRUKLabelFilter& LabelFilter, FMRUKHit& OutHit); - - /** - * Cast a ray and collect hits against the volumes and plane bounds in every room in the scene. - * The order of the hits in the array is not specified. - * @param Origin Origin The origin of the ray. - * @param Direction Direction The direction of the ray. - * @param MaxDist The maximum distance the ray should travel. - * @param LabelFilter The label filter can be used to include/exclude certain labels from the search. - * @param OutHits The hits the ray collected. - * @param OutAnchors The anchors that were hit. Each anchor in this array corresponds to a entry at the same position in OutHits. - * @return Whether the ray hit anything - */ - UFUNCTION(BlueprintCallable, Category = "MR Utility Kit", meta = (AutoCreateRefTerm = "LabelFilter")) - bool RaycastAll(const FVector& Origin, const FVector& Direction, float MaxDist, const FMRUKLabelFilter& LabelFilter, TArray& OutHits, TArray& OutAnchors); - - /** - * Return the room that the headset is currently in. If the headset is not in any given room - * then it will return the room the headset was last in when this function was called. - * If the headset hasn't been in a valid room yet then return the first room in the list. - * If no rooms have been loaded yet then return null. - */ - UFUNCTION(BlueprintCallable, Category = "MR Utility Kit") - AMRUKRoom* GetCurrentRoom() const; - - /** - * Save all rooms and anchors to JSON. This JSON representation can than later be used by - * LoadSceneFromJsonString() to load the scene again. - * @return the JSON string. - */ - UFUNCTION(BlueprintCallable, Category = "MR Utility Kit") - FString SaveSceneToJsonString(); - - /** - * Load rooms and anchors from a JSON representation. - * If the scene is already loaded the scene will be updated with the changes. - */ - UFUNCTION(BlueprintCallable, Category = "MR Utility Kit") - void LoadSceneFromJsonString(const FString& String); - - /** - * Load rooms and anchors from the device. - * If the scene is already loaded the scene will be updated with the changes. - */ - UFUNCTION(BlueprintCallable, Category = "MR Utility Kit") - void LoadSceneFromDevice(); - - - /** - * Removes and clears every room. - */ - UFUNCTION(BlueprintCallable, Category = "MR Utility Kit") - void ClearScene(); - - /** - * Get the position on the surface that is closest to the given position with respect to the distance in all rooms. - * @param WorldPosition The position in world space from which the closest surface point should be found. - * @param OutSurfacePosition The closest position on the closest surface if any. Otherwise zero. - * @param LabelFilter The label filter can be used to include/exclude certain labels from the search. - * @param MaxDistance The distance to which a closest surface position should be searched. Everything below or equal to zero will be treated as infinity. - * @return The Anchor on which the closest surface position was found or a null pointer otherwise. - */ - UFUNCTION(BlueprintCallable, Category = "MR Utility Kit", meta = (AutoCreateRefTerm = "LabelFilter")) - AMRUKAnchor* TryGetClosestSurfacePosition(const FVector& WorldPosition, FVector& OutSurfacePosition, const FMRUKLabelFilter& LabelFilter, double MaxDistance = 0.0); - - /** - * Finds the closest seat given a ray. - * @param RayOrigin The origin of the ray. - * @param RayDirection The direction of the ray. - * @param OutSeatTransform The seat pose. - * @return If any seat was found the Anchor that has seats available will be returned. Otherwise a null pointer. - */ - UFUNCTION(BlueprintCallable, Category = "MR Utility Kit") - AMRUKAnchor* TryGetClosestSeatPose(const FVector& RayOrigin, const FVector& RayDirection, FTransform& OutSeatTransform); - - /** - * Get a suggested pose (position & rotation) from a raycast to place objects on surfaces in the scene. - * There are different positioning modes available. Default just uses the position where the raycast - * hit the object. Edge snaps the position to the edge that is nearest to the user and Center simply - * centers the position on top of the surface. - * @param RayOrigin The origin of the ray. - * @param RayDirection The direction of the ray. - * @param MaxDist The maximum distance the ray should travel. - * @param LabelFilter The label filter can be used to include/exclude certain labels from the search. - * @param OutPose The calculated pose. - * @param PositioningMethod The method that should be used for determining the position on the surface. - * @return The anchor that was hit by the ray if any. Otherwise a null pointer. - */ - UFUNCTION(BlueprintCallable, Category = "MR Utility Kit", meta = (AutoCreateRefTerm = "LabelFilter")) - AMRUKAnchor* GetBestPoseFromRaycast(const FVector& RayOrigin, const FVector& RayDirection, double MaxDist, const FMRUKLabelFilter& LabelFilter, FTransform& OutPose, EMRUKPositioningMethod PositioningMethod = EMRUKPositioningMethod::Default); - - /** - * Return the longest wall in the current room that has no other walls behind it. - * @param Tolerance The tolerance to use when determining wall that are behind. - * @return The wall anchor that is the key wall in the room. - */ - UFUNCTION(BlueprintCallable, Category = "MR Utility Kit") - AMRUKAnchor* GetKeyWall(double Tolerance = 0.1); - - /** - * Return the largest surface for a given label in the current room. - * @param Label The label of the surfaces to search in. - * @return The anchor that has the largest surface if any. Otherwise, a null pointer. - */ - UFUNCTION(BlueprintCallable, Category = "MR Utility Kit") - AMRUKAnchor* GetLargestSurface(const FString& Label); - - /** - * Checks if the given position is on or inside of any scene volume in the rooms. - * All rooms will be checked and the first anchors scene volume that has the point on or inside it will be returned. - * @param WorldPosition The position in world space to check - * @param TestVerticalBounds Whether the vertical bounds should be checked or not - * @param Tolerance Tolerance - * @return The anchor the WorldPosition is in. A null pointer otherwise. - */ - UFUNCTION(BlueprintCallable, Category = "MR Utility Kit") - AMRUKAnchor* IsPositionInSceneVolume(const FVector& WorldPosition, bool TestVerticalBounds = true, double Tolerance = 0.0); - - /** - * Spawn meshes on the position of the anchors of each room. - * The actors should have Z as up Y as right and X as forward. - * The pivot point should be in the bottom center. - * @param SpawnGroups A map which tells to spawn which actor to a given label. - * @param ProceduralMaterial Material to apply on top of the procedural mesh if any. - * @param CutHoleLabels Labels for which the generated mesh should have holes. Only works with planes. - * @param ShouldFallbackToProcedural Whether or not it should by default fallback to generating a procedural mesh if no actor class has been specified for a label. - * @return The spawned actors. - */ - UFUNCTION(BlueprintCallable, meta = (DeprecatedFunction, DeprecationMessage = "Use AMRUKAnchorActorSpawner instead."), Category = "MR Utility Kit") - TArray SpawnInterior(const TMap& SpawnGroups, const TArray& CutHoleLabels, UMaterialInterface* ProceduralMaterial = nullptr, bool ShouldFallbackToProcedural = true); - - /** - * Spawn meshes on the position of the anchors of each room from a random stream. - * The actors should have Z as up Y as right and X as forward. - * The pivot point should be in the bottom center. - * @param SpawnGroups A map which tells to spawn which actor to a given label. - * @param RandomStream A random generator to choose randomly between actor classes if there a multiple for one label. - * @param CutHoleLabels Labels for which the generated mesh should have holes. Only works with planes. - * @param ProceduralMaterial Material to apply on top of the procedural mesh if any. - * @param ShouldFallbackToProcedural Whether or not it should by default fallback to generating a procedural mesh if no actor class has been specified for a label. - * @return The spawned actors. - */ - UFUNCTION(BlueprintCallable, meta = (DeprecatedFunction, DeprecationMessage = "Use AMRUKAnchorActorSpawner instead."), Category = "MR Utility Kit") - TArray SpawnInteriorFromStream(const TMap& SpawnGroups, const FRandomStream& RandomStream, const TArray& CutHoleLabels, UMaterialInterface* ProceduralMaterial = nullptr, bool ShouldFallbackToProcedural = true); - - /** - * Launch the scene capture. After a successful capture the scene should be updated. - * @return Whether the capture was successful. - */ - UFUNCTION(BlueprintCallable, Category = "MR Utility Kit") - bool LaunchSceneCapture(); - -public: - void Initialize(FSubsystemCollectionBase& Collection) override; - void Deinitialize() override; - - TSharedRef JsonSerialize(); - void UnregisterRoom(AMRUKRoom* Room); - // Calculate the bounds of an Actor class and return it, the result is saved in a cache for faster lookup. - FBox GetActorClassBounds(TSubclassOf Actor); - UOculusXRRoomLayoutManagerComponent* GetRoomLayoutManager(); - -private: - AMRUKRoom* SpawnRoom(); - - void FinishedLoading(bool Success); - - // FTickableGameObject interface - virtual void Tick(float DeltaTime) override; - virtual bool IsTickable() const override; - virtual ETickableTickType GetTickableTickType() const override { return (HasAnyFlags(RF_ClassDefaultObject) ? ETickableTickType::Never : ETickableTickType::Conditional); } - virtual TStatId GetStatId() const override { RETURN_QUICK_DECLARE_CYCLE_STAT(UMRUKSubsystem, STATGROUP_Tickables); } - virtual UWorld* GetTickableGameObjectWorld() const override { return GetWorld(); } - // ~FTickableGameObject interface - - UFUNCTION() - void SceneDataLoadedComplete(bool Success); - UFUNCTION() - void UpdatedSceneDataLoadedComplete(bool Success); - UFUNCTION() - void SceneCaptureComplete(FOculusXRUInt64 RequestId, bool bSuccess); - - UPROPERTY() - TObjectPtr SceneData = nullptr; - - UPROPERTY() - AActor* RoomLayoutManagerActor = nullptr; - UPROPERTY() - UOculusXRRoomLayoutManagerComponent* RoomLayoutManager = nullptr; - UPROPERTY() - mutable AMRUKRoom* CachedCurrentRoom = nullptr; - mutable int64 CachedCurrentRoomFrame = 0; - UPROPERTY() - AActor* PositionGenerator = nullptr; - - TMap, FBox> ActorClassBoundsCache; -}; diff --git a/Plugins/MetaXR/Source/MRUtilityKit/Public/MRUtilityKitTelemetry.h b/Plugins/MetaXR/Source/MRUtilityKit/Public/MRUtilityKitTelemetry.h deleted file mode 100644 index ed3b7cc..0000000 --- a/Plugins/MetaXR/Source/MRUtilityKit/Public/MRUtilityKitTelemetry.h +++ /dev/null @@ -1,18 +0,0 @@ -// Copyright (c) Meta Platforms, Inc. and affiliates. - -#pragma once - -#include "OculusXRTelemetry.h" - -namespace MRUKTelemetry -{ - using FLoadGuardianMarker = OculusXRTelemetry::TMarker<257237531>; - using FLoadBlobShadowMarker = OculusXRTelemetry::TMarker<257244458>; - using FLoadLightDispatcherMarker = OculusXRTelemetry::TMarker<257234454>; - using FLoadDebugComponentMarker = OculusXRTelemetry::TMarker<257232584>; - using FLoadAnchorActorSpawnerMarker = OculusXRTelemetry::TMarker<257232670>; - using FLoadSceneFromDeviceMarker = OculusXRTelemetry::TMarker<257235234>; - using FLoadSceneFromJsonMarker = OculusXRTelemetry::TMarker<257237876>; - using FLoadGridSliceResizerMarker = OculusXRTelemetry::TMarker<257238248>; - using FLoadDestructibleGlobalMeshSpawner = OculusXRTelemetry::TMarker<257232038>; -} // namespace MRUKTelemetry diff --git a/Plugins/MetaXR/Source/MRUtilityKitEditor/MRUtilityKitEditor.Build.cs b/Plugins/MetaXR/Source/MRUtilityKitEditor/MRUtilityKitEditor.Build.cs deleted file mode 100644 index 9fcc1d0..0000000 --- a/Plugins/MetaXR/Source/MRUtilityKitEditor/MRUtilityKitEditor.Build.cs +++ /dev/null @@ -1,38 +0,0 @@ -// Copyright (c) Meta Platforms, Inc. and affiliates. - -using UnrealBuildTool; - -public class MRUtilityKitEditor : ModuleRules -{ - public MRUtilityKitEditor(ReadOnlyTargetRules Target) : base(Target) - { - bUseUnity = true; - - PCHUsage = ModuleRules.PCHUsageMode.UseExplicitOrSharedPCHs; - - PublicDependencyModuleNames.AddRange( - new string[] - { - "Core", - }); - - - PrivateDependencyModuleNames.AddRange( - new string[] - { - "CoreUObject", - "Engine", - "Slate", - "SlateCore", - "OculusXRHMD", - "OculusXRAnchors", - "OculusXRScene", - "Json", - "UnrealEd", - "RHI", - "RenderCore", - "ProceduralMeshComponent", - "MRUtilityKit", - }); - } -} diff --git a/Plugins/MetaXR/Source/MRUtilityKitEditor/Private/DistanceMapTestData.h b/Plugins/MetaXR/Source/MRUtilityKitEditor/Private/DistanceMapTestData.h deleted file mode 100644 index 72f37db..0000000 --- a/Plugins/MetaXR/Source/MRUtilityKitEditor/Private/DistanceMapTestData.h +++ /dev/null @@ -1,87391 +0,0 @@ -// Copyright (c) Meta Platforms, Inc. and affiliates. - -#pragma once - -#include "CoreMinimal.h" - -inline const uint8 DistanceMapTestData[] = { - 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x02, 0x00, 0x02, 0x20, 0x20, 0x03, 0x83, 0x9b, 0x00, 0x0a, 0x83, - 0x9b, 0x00, 0x0f, 0x83, 0x9b, 0x00, 0x14, 0x83, 0x9b, 0x00, 0x17, 0x83, - 0x9b, 0x00, 0x1b, 0x83, 0x9b, 0x00, 0x1e, 0x83, 0x9b, 0x00, 0x20, 0x83, - 0x9c, 0x00, 0x23, 0x83, 0x9b, 0x00, 0x25, 0x83, 0x9c, 0x00, 0x27, 0x83, - 0x9b, 0x00, 0x29, 0x83, 0x9c, 0x00, 0x2b, 0x83, 0x9b, 0x00, 0x2d, 0x83, - 0x9c, 0x00, 0x2f, 0x83, 0x9b, 0x00, 0x31, 0x83, 0x9c, 0x00, 0x32, 0x83, - 0x9b, 0x00, 0x34, 0x83, 0x9c, 0x00, 0x35, 0x83, 0x9b, 0x00, 0x37, 0x83, - 0x9c, 0x00, 0x38, 0x83, 0x9b, 0x00, 0x3a, 0x83, 0x9c, 0x00, 0x3b, 0x83, - 0x9b, 0x00, 0x3c, 0x83, 0x9c, 0x00, 0x3e, 0x83, 0x9b, 0x00, 0x3f, 0x83, - 0x9c, 0x00, 0x40, 0x83, 0x9b, 0x00, 0x42, 0x83, 0x9c, 0x00, 0x43, 0x83, - 0x9b, 0x00, 0x44, 0x83, 0x9c, 0x00, 0x45, 0x83, 0x9b, 0x00, 0x46, 0x83, - 0x9c, 0x00, 0x47, 0x83, 0x9b, 0x00, 0x48, 0x83, 0x9c, 0x00, 0x49, 0x83, - 0x9b, 0x00, 0x4a, 0x83, 0x9c, 0x00, 0x4b, 0x83, 0x9b, 0x00, 0x4c, 0x83, - 0x9c, 0x00, 0x4d, 0x83, 0x9b, 0x00, 0x4e, 0x83, 0x9c, 0x00, 0x4f, 0x83, - 0x9b, 0x00, 0x50, 0x83, 0x9c, 0x00, 0x51, 0x83, 0x9b, 0x00, 0x52, 0x83, - 0x9c, 0x00, 0x53, 0x83, 0x9b, 0x00, 0x54, 0x83, 0x9c, 0x00, 0x55, 0x83, - 0x9b, 0x00, 0x56, 0x83, 0x9c, 0x00, 0x57, 0x83, 0x9b, 0x00, 0x58, 0x83, - 0x9c, 0x00, 0x58, 0x83, 0x9b, 0x00, 0x59, 0x83, 0x9c, 0x00, 0x5a, 0x83, - 0x9b, 0x00, 0x5b, 0x83, 0x9c, 0x00, 0x5c, 0x83, 0x9b, 0x00, 0x5d, 0x83, - 0x9c, 0x00, 0x5d, 0x83, 0x9b, 0x00, 0x5e, 0x83, 0x9c, 0x00, 0x5f, 0x83, - 0x9b, 0x00, 0x60, 0x83, 0x9c, 0x00, 0x60, 0x83, 0x9b, 0x00, 0x61, 0x83, - 0x9c, 0x00, 0x62, 0x83, 0x9b, 0x00, 0x63, 0x83, 0x9c, 0x00, 0x63, 0x83, - 0x9b, 0x00, 0x64, 0x83, 0x9c, 0x00, 0x65, 0x83, 0x9b, 0x00, 0x66, 0x83, - 0x9c, 0x00, 0x66, 0x83, 0x9b, 0x00, 0x67, 0x83, 0x9c, 0x00, 0x68, 0x83, - 0x9b, 0x00, 0x68, 0x83, 0x9c, 0x00, 0x69, 0x83, 0x9b, 0x00, 0x6a, 0x83, - 0x9c, 0x00, 0x6a, 0x83, 0x9b, 0x00, 0x6b, 0x83, 0x9c, 0x00, 0x6c, 0x83, - 0x9b, 0x00, 0x6c, 0x83, 0x9c, 0x00, 0x6d, 0x83, 0x9b, 0x00, 0x6e, 0x83, - 0x9c, 0x00, 0x6e, 0x83, 0x9b, 0x00, 0x6f, 0x83, 0x9c, 0x00, 0x70, 0x83, - 0x9b, 0x00, 0x70, 0x83, 0x9c, 0x00, 0x71, 0x83, 0x9b, 0x00, 0x72, 0x83, - 0x9c, 0x00, 0x72, 0x83, 0x9b, 0x00, 0x73, 0x83, 0x9c, 0x00, 0x73, 0x83, - 0x9b, 0x00, 0x74, 0x83, 0x9c, 0x00, 0x75, 0x83, 0x9b, 0x00, 0x75, 0x83, - 0x9c, 0x00, 0x76, 0x83, 0x9b, 0x00, 0x76, 0x83, 0x9c, 0x00, 0x77, 0x83, - 0x9b, 0x00, 0x78, 0x83, 0x9c, 0x00, 0x78, 0x83, 0x9b, 0x00, 0x79, 0x83, - 0x9c, 0x00, 0x79, 0x83, 0x9b, 0x00, 0x7a, 0x83, 0x9c, 0x00, 0x7a, 0x83, - 0x9b, 0x00, 0x7b, 0x83, 0x9c, 0x00, 0x7c, 0x83, 0x9b, 0x00, 0x7c, 0x83, - 0x9c, 0x00, 0x7d, 0x83, 0x9b, 0x00, 0x7d, 0x83, 0x9c, 0x00, 0x7e, 0x83, - 0x9b, 0x00, 0x7e, 0x83, 0x9c, 0x00, 0x7f, 0x83, 0x9b, 0x00, 0x7f, 0x83, - 0x9c, 0x00, 0x80, 0x83, 0x9b, 0x00, 0x81, 0x83, 0x9c, 0x00, 0x81, 0x83, - 0x9b, 0x00, 0x82, 0x83, 0x9c, 0x00, 0x82, 0x83, 0x9b, 0x00, 0x83, 0x83, - 0x9c, 0x00, 0x83, 0x83, 0x9b, 0x00, 0x84, 0x83, 0x9c, 0x00, 0x84, 0x83, - 0x9b, 0x00, 0x85, 0x83, 0x9c, 0x00, 0x85, 0x83, 0x9b, 0x00, 0x86, 0x83, - 0x9c, 0x00, 0x86, 0x83, 0x9b, 0x00, 0x87, 0x83, 0x9c, 0x00, 0x87, 0x83, - 0x9b, 0x00, 0x88, 0x83, 0x9c, 0x00, 0x88, 0x83, 0x9b, 0x00, 0x89, 0x83, - 0x9c, 0x00, 0x89, 0x83, 0x9b, 0x00, 0x8a, 0x83, 0x9c, 0x00, 0x8a, 0x83, - 0x9b, 0x00, 0x8b, 0x83, 0x9c, 0x00, 0x8b, 0x83, 0x9b, 0x00, 0x8c, 0x83, - 0x9c, 0x00, 0x8c, 0x83, 0x9b, 0x00, 0x8d, 0x83, 0x9c, 0x00, 0x8d, 0x83, - 0x9b, 0x00, 0x8e, 0x83, 0x9c, 0x00, 0x8e, 0x83, 0x9b, 0x00, 0x8e, 0x83, - 0x9c, 0x00, 0x8f, 0x83, 0x9b, 0x00, 0x8f, 0x83, 0x9c, 0x00, 0x90, 0x83, - 0x9b, 0x00, 0x90, 0x83, 0x9c, 0x00, 0x91, 0x83, 0x9b, 0x00, 0x91, 0x83, - 0x9c, 0x00, 0x92, 0x83, 0x9b, 0x00, 0x92, 0x83, 0x9c, 0x00, 0x93, 0x83, - 0x9b, 0x00, 0x93, 0x83, 0x9c, 0x00, 0x94, 0x83, 0x9b, 0x00, 0x94, 0x83, - 0x9c, 0x00, 0x94, 0x83, 0x9b, 0x00, 0x95, 0x83, 0x9c, 0x00, 0x95, 0x83, - 0x9b, 0x00, 0x96, 0x83, 0x9c, 0x00, 0x96, 0x83, 0x9b, 0x00, 0x97, 0x83, - 0x9c, 0x00, 0x97, 0x83, 0x9b, 0x00, 0x98, 0x83, 0x9c, 0x00, 0x98, 0x83, - 0x9b, 0x00, 0x98, 0x83, 0x9c, 0x00, 0x99, 0x83, 0x9b, 0x00, 0x99, 0x83, - 0x9c, 0x00, 0x9a, 0x83, 0x9b, 0x00, 0x9a, 0x83, 0x9c, 0x00, 0x9a, 0x83, - 0x9b, 0x00, 0x9b, 0x83, 0x9c, 0x00, 0x9b, 0x83, 0x9b, 0x00, 0x9c, 0x83, - 0x9c, 0x00, 0x9c, 0x83, 0x9c, 0x00, 0x9d, 0x83, 0x9d, 0x00, 0x9d, 0x83, - 0x9c, 0x00, 0x9d, 0x83, 0x9d, 0x00, 0x9e, 0x83, 0x9c, 0x00, 0x9e, 0x83, - 0x9d, 0x00, 0x9f, 0x83, 0x9c, 0x00, 0x9f, 0x83, 0x9d, 0x00, 0x9f, 0x83, - 0x9c, 0x00, 0xa0, 0x83, 0x9d, 0x00, 0xa0, 0x83, 0x9c, 0x00, 0xa1, 0x83, - 0x9d, 0x00, 0xa1, 0x83, 0x9c, 0x00, 0xa1, 0x83, 0x9d, 0x00, 0xa2, 0x83, - 0x9c, 0x00, 0xa2, 0x83, 0x9d, 0x00, 0xa3, 0x83, 0x9c, 0x00, 0xa3, 0x83, - 0x9d, 0x00, 0xa3, 0x83, 0x9c, 0x00, 0xa4, 0x83, 0x9d, 0x00, 0xa4, 0x83, - 0x9c, 0x00, 0xa5, 0x83, 0x9d, 0x00, 0xa5, 0x83, 0x9c, 0x00, 0xa5, 0x83, - 0x9d, 0x00, 0xa6, 0x83, 0x9c, 0x00, 0xa6, 0x83, 0x9d, 0x00, 0xa6, 0x83, - 0x9c, 0x00, 0xa7, 0x83, 0x9d, 0x00, 0xa7, 0x83, 0x9c, 0x00, 0xa8, 0x83, - 0x9d, 0x00, 0xa8, 0x84, 0xa0, 0x00, 0xa8, 0x84, 0xa1, 0x00, 0xa9, 0x84, - 0xa0, 0x00, 0xa9, 0x84, 0xa1, 0x00, 0xaa, 0x84, 0xa0, 0x00, 0xaa, 0x84, - 0xa1, 0x00, 0xaa, 0x84, 0xa0, 0x00, 0xab, 0x84, 0xa1, 0x00, 0xab, 0x84, - 0xa0, 0x00, 0xab, 0x84, 0xa1, 0x00, 0xac, 0x85, 0xa4, 0x00, 0xac, 0x84, - 0xa1, 0x00, 0xac, 0x85, 0xa4, 0x00, 0xad, 0x84, 0xa1, 0x00, 0xad, 0x85, - 0xa4, 0x00, 0xae, 0x85, 0xa4, 0x00, 0xae, 0x85, 0xa4, 0x00, 0xae, 0x85, - 0xa4, 0x00, 0xaf, 0x85, 0xa4, 0x00, 0xaf, 0x86, 0xa8, 0x00, 0xaf, 0x85, - 0xa4, 0x00, 0xb0, 0x86, 0xa8, 0x00, 0xb0, 0x85, 0xa4, 0x00, 0xb0, 0x86, - 0xa8, 0x00, 0xb1, 0x85, 0xa4, 0x00, 0xb1, 0x86, 0xa8, 0x00, 0xb2, 0x86, - 0xa7, 0x00, 0xb2, 0x86, 0xa8, 0x00, 0xb2, 0x87, 0xab, 0x00, 0xb3, 0x87, - 0xab, 0x00, 0xb3, 0x87, 0xab, 0x00, 0xb3, 0x87, 0xab, 0x00, 0xb4, 0x87, - 0xab, 0x00, 0xb4, 0x87, 0xab, 0x00, 0xb4, 0x87, 0xab, 0x00, 0xb5, 0x87, - 0xab, 0x00, 0xb5, 0x87, 0xab, 0x00, 0xb5, 0x87, 0xab, 0x00, 0xb6, 0x87, - 0xab, 0x00, 0xb6, 0x87, 0xab, 0x00, 0xb6, 0x88, 0xaf, 0x00, 0xb7, 0x87, - 0xab, 0x00, 0xb7, 0x88, 0xaf, 0x00, 0xb7, 0x87, 0xab, 0x00, 0xb8, 0x88, - 0xaf, 0x00, 0xb8, 0x88, 0xae, 0x00, 0xb8, 0x88, 0xaf, 0x00, 0xb9, 0x88, - 0xae, 0x00, 0xb9, 0x88, 0xaf, 0x00, 0xb9, 0x89, 0xb2, 0x00, 0xba, 0x89, - 0xb2, 0x00, 0xba, 0x89, 0xb2, 0x00, 0xba, 0x89, 0xb2, 0x00, 0xbb, 0x89, - 0xb2, 0x00, 0xbb, 0x89, 0xb2, 0x00, 0xbb, 0x89, 0xb2, 0x00, 0xbc, 0x89, - 0xb2, 0x00, 0xbc, 0x89, 0xb2, 0x00, 0xbc, 0x89, 0xb2, 0x00, 0xbd, 0x8a, - 0xb5, 0x00, 0xbd, 0x89, 0xb2, 0x00, 0xbd, 0x8a, 0xb5, 0x00, 0xbe, 0x89, - 0xb2, 0x00, 0xbe, 0x8a, 0xb5, 0x00, 0xbe, 0x89, 0xb2, 0x00, 0xbf, 0x8a, - 0xb5, 0x00, 0xbf, 0x8a, 0xb5, 0x00, 0xbf, 0x8a, 0xb5, 0x00, 0xc0, 0x8b, - 0xb8, 0x00, 0xc0, 0x8a, 0xb5, 0x00, 0xc0, 0x8b, 0xb8, 0x00, 0xc1, 0x8a, - 0xb5, 0x00, 0xc1, 0x8b, 0xb8, 0x00, 0xc1, 0x8a, 0xb5, 0x00, 0xc1, 0x8b, - 0xb8, 0x00, 0xc2, 0x8b, 0xb8, 0x00, 0xc2, 0x8b, 0xb8, 0x00, 0xc2, 0x8c, - 0xbb, 0x00, 0xc3, 0x8c, 0xbc, 0x00, 0xc3, 0x8c, 0xbb, 0x00, 0xc3, 0x8c, - 0xbc, 0x00, 0xc4, 0x8c, 0xbb, 0x00, 0xc4, 0x8c, 0xbc, 0x00, 0xc4, 0x8c, - 0xbb, 0x00, 0xc5, 0x8c, 0xbc, 0x00, 0xc5, 0x8c, 0xbb, 0x00, 0xc5, 0x8c, - 0xbc, 0x00, 0xc6, 0x8d, 0xbf, 0x00, 0xc6, 0x8c, 0xbc, 0x00, 0xc6, 0x8d, - 0xbf, 0x00, 0xc6, 0x8c, 0xbc, 0x00, 0xc7, 0x8d, 0xbf, 0x00, 0xc7, 0x8c, - 0xbc, 0x00, 0xc7, 0x8d, 0xbf, 0x00, 0xc8, 0x8d, 0xbe, 0x00, 0xc8, 0x8d, - 0xbf, 0x00, 0xc8, 0x8d, 0xbe, 0x00, 0xc9, 0x8d, 0xbf, 0x00, 0xc9, 0x8e, - 0xc1, 0x00, 0xc9, 0x8d, 0xbf, 0x00, 0xc9, 0x8e, 0xc1, 0x00, 0xca, 0x8d, - 0xbf, 0x00, 0xca, 0x8e, 0xc1, 0x00, 0xca, 0x8d, 0xbf, 0x00, 0xcb, 0x8e, - 0xc1, 0x00, 0xcb, 0x8e, 0xc1, 0x00, 0xcb, 0x8e, 0xc1, 0x00, 0xcc, 0x8f, - 0xc4, 0x00, 0xcc, 0x8f, 0xc5, 0x00, 0xcc, 0x8f, 0xc4, 0x00, 0xcc, 0x8f, - 0xc5, 0x00, 0xcd, 0x8f, 0xc4, 0x00, 0xcd, 0x8f, 0xc5, 0x00, 0xcd, 0x8f, - 0xc4, 0x00, 0xce, 0x8f, 0xc5, 0x00, 0xce, 0x8f, 0xc4, 0x00, 0xce, 0x8f, - 0xc5, 0x00, 0xce, 0x90, 0xc7, 0x00, 0xcf, 0x8f, 0xc5, 0x00, 0xcf, 0x90, - 0xc7, 0x00, 0xcf, 0x8f, 0xc5, 0x00, 0xd0, 0x90, 0xc7, 0x00, 0xd0, 0x8f, - 0xc5, 0x00, 0xd0, 0x90, 0xc7, 0x00, 0xd0, 0x90, 0xc7, 0x00, 0xd1, 0x90, - 0xc7, 0x00, 0xd1, 0x91, 0xca, 0x00, 0xd1, 0x90, 0xc7, 0x00, 0xd2, 0x91, - 0xca, 0x00, 0xd2, 0x90, 0xc7, 0x00, 0xd2, 0x91, 0xca, 0x00, 0xd2, 0x90, - 0xc7, 0x00, 0xd3, 0x91, 0xca, 0x00, 0xd3, 0x91, 0xca, 0x00, 0xd3, 0x91, - 0xca, 0x00, 0xd4, 0x91, 0xca, 0x00, 0xd4, 0x91, 0xca, 0x00, 0xd4, 0x92, - 0xcd, 0x00, 0xd4, 0x92, 0xcd, 0x00, 0xd5, 0x92, 0xcd, 0x00, 0xd5, 0x92, - 0xcd, 0x00, 0xd5, 0x92, 0xcd, 0x00, 0xd6, 0x92, 0xcd, 0x00, 0xd6, 0x92, - 0xcd, 0x00, 0xd6, 0x92, 0xcd, 0x00, 0xd6, 0x92, 0xcd, 0x00, 0xd7, 0x92, - 0xcd, 0x00, 0xd7, 0x93, 0xd0, 0x00, 0xd7, 0x92, 0xcd, 0x00, 0xd7, 0x93, - 0xd0, 0x00, 0xd8, 0x92, 0xcd, 0x00, 0xd8, 0x93, 0xd0, 0x00, 0xd8, 0x92, - 0xcd, 0x00, 0xd9, 0x93, 0xd0, 0x00, 0xd9, 0x93, 0xcf, 0x00, 0xd9, 0x93, - 0xd0, 0x00, 0xd9, 0x94, 0xd2, 0x00, 0xda, 0x94, 0xd2, 0x00, 0xda, 0x94, - 0xd2, 0x00, 0xda, 0x94, 0xd2, 0x00, 0xda, 0x94, 0xd2, 0x00, 0xdb, 0x94, - 0xd2, 0x00, 0xdb, 0x94, 0xd2, 0x00, 0xdb, 0x94, 0xd2, 0x00, 0xdb, 0x94, - 0xd2, 0x00, 0xdc, 0x94, 0xd2, 0x00, 0xdc, 0x94, 0xd5, 0x00, 0xdc, 0x94, - 0xd2, 0x00, 0xdd, 0x94, 0xd5, 0x00, 0xdd, 0x94, 0xd2, 0x00, 0xdd, 0x94, - 0xd5, 0x00, 0xdd, 0x94, 0xd2, 0x00, 0xde, 0x94, 0xd5, 0x00, 0xde, 0x94, - 0xd5, 0x00, 0xde, 0x94, 0xd5, 0x00, 0xde, 0x95, 0xd7, 0x00, 0xdf, 0x94, - 0xd5, 0x00, 0xdf, 0x95, 0xd7, 0x00, 0xdf, 0x94, 0xd5, 0x00, 0xdf, 0x95, - 0xd7, 0x00, 0xe0, 0x94, 0xd5, 0x00, 0xe0, 0x95, 0xd7, 0x00, 0xe0, 0x94, - 0xd5, 0x00, 0xe1, 0x95, 0xd7, 0x00, 0xe1, 0x96, 0xda, 0x00, 0xe1, 0x96, - 0xda, 0x00, 0xe1, 0x96, 0xda, 0x00, 0xe2, 0x96, 0xda, 0x00, 0xe2, 0x96, - 0xda, 0x00, 0xe2, 0x96, 0xda, 0x00, 0xe2, 0x96, 0xda, 0x00, 0xe3, 0x96, - 0xda, 0x00, 0xe3, 0x96, 0xda, 0x00, 0xe3, 0x96, 0xda, 0x00, 0xe3, 0x96, - 0xda, 0x00, 0xe4, 0x96, 0xda, 0x00, 0xe4, 0x97, 0xdd, 0x00, 0xe4, 0x96, - 0xda, 0x00, 0xe4, 0x97, 0xdd, 0x00, 0xe5, 0x96, 0xda, 0x00, 0xe5, 0x97, - 0xdd, 0x00, 0xe5, 0x96, 0xda, 0x00, 0xe5, 0x97, 0xdd, 0x00, 0xe6, 0x97, - 0xdc, 0x00, 0xe6, 0x97, 0xdd, 0x00, 0xe6, 0x98, 0xdf, 0x00, 0xe6, 0x97, - 0xdd, 0x00, 0xe7, 0x98, 0xdf, 0x00, 0xe7, 0x97, 0xdd, 0x00, 0xe7, 0x98, - 0xdf, 0x00, 0xe7, 0x97, 0xdd, 0x00, 0xe8, 0x98, 0xdf, 0x00, 0xe8, 0x98, - 0xdf, 0x00, 0xe8, 0x98, 0xdf, 0x00, 0xe8, 0x99, 0xe1, 0x00, 0xe9, 0x99, - 0xe2, 0x00, 0xe9, 0x99, 0xe1, 0x00, 0xe9, 0x99, 0xe2, 0x00, 0xe9, 0x99, - 0xe1, 0x00, 0xea, 0x99, 0xe2, 0x00, 0xea, 0x99, 0xe1, 0x00, 0xea, 0x99, - 0xe2, 0x00, 0xea, 0x99, 0xe1, 0x00, 0xeb, 0x99, 0xe2, 0x00, 0xeb, 0x9a, - 0xe4, 0x00, 0xeb, 0x99, 0xe2, 0x00, 0xeb, 0x9a, 0xe4, 0x00, 0xec, 0x99, - 0xe2, 0x00, 0xec, 0x9a, 0xe4, 0x00, 0xec, 0x99, 0xe2, 0x00, 0xec, 0x9a, - 0xe4, 0x00, 0xec, 0x99, 0xe2, 0x00, 0xed, 0x9a, 0xe4, 0x00, 0xed, 0x9a, - 0xe4, 0x00, 0xed, 0x9a, 0xe4, 0x00, 0xed, 0x9a, 0xe6, 0x00, 0xee, 0x9a, - 0xe4, 0x00, 0xee, 0x9a, 0xe6, 0x00, 0xee, 0x9a, 0xe4, 0x00, 0xee, 0x9a, - 0xe6, 0x00, 0xef, 0x9a, 0xe4, 0x00, 0xef, 0x9a, 0xe6, 0x00, 0xef, 0x9a, - 0xe6, 0x00, 0xef, 0x9a, 0xe6, 0x00, 0xf0, 0x9b, 0xe8, 0x00, 0xf0, 0x9b, - 0xe9, 0x00, 0xf0, 0x9b, 0xe8, 0x00, 0xf0, 0x9b, 0xe9, 0x00, 0xf1, 0x9b, - 0xe8, 0x00, 0xf1, 0x9b, 0xe9, 0x00, 0xf1, 0x9b, 0xe8, 0x00, 0xf1, 0x9b, - 0xe9, 0x00, 0xf2, 0x9b, 0xe8, 0x00, 0xf2, 0x9b, 0xe9, 0x00, 0xf2, 0x9c, - 0xeb, 0x00, 0xf2, 0x9b, 0xe9, 0x00, 0xf2, 0x9c, 0xeb, 0x00, 0xf3, 0x9b, - 0xe9, 0x00, 0xf3, 0x9c, 0xeb, 0x00, 0xf3, 0x9b, 0xe9, 0x00, 0xf3, 0x9c, - 0xeb, 0x00, 0xf4, 0x9b, 0xe9, 0x00, 0xf4, 0x9c, 0xeb, 0x00, 0xf4, 0x9d, - 0xed, 0x00, 0xf4, 0x9d, 0xed, 0x00, 0xf5, 0x9d, 0xed, 0x00, 0xf5, 0x9d, - 0xed, 0x00, 0xf5, 0x9d, 0xed, 0x00, 0xf5, 0x9d, 0xed, 0x00, 0xf5, 0x9d, - 0xed, 0x00, 0xf6, 0x9d, 0xed, 0x00, 0xf6, 0x9d, 0xed, 0x00, 0xf6, 0x9d, - 0xed, 0x00, 0xf6, 0x9e, 0xef, 0x00, 0xf7, 0x9d, 0xed, 0x00, 0xf7, 0x9e, - 0xef, 0x00, 0xf7, 0x9d, 0xed, 0x00, 0xf7, 0x9e, 0xef, 0x00, 0xf8, 0x9d, - 0xed, 0x00, 0xf8, 0x9e, 0xef, 0x00, 0xf8, 0x9d, 0xed, 0x00, 0xf8, 0x9e, - 0xef, 0x00, 0xf8, 0x9f, 0xf2, 0x00, 0xf9, 0x9e, 0xef, 0x00, 0xf9, 0x9f, - 0xf2, 0x00, 0xf9, 0x9e, 0xef, 0x00, 0xf9, 0x9f, 0xf2, 0x00, 0xfa, 0x9e, - 0xef, 0x00, 0xfa, 0x9f, 0xf2, 0x00, 0xfa, 0x9e, 0xef, 0x00, 0xfa, 0x9f, - 0xf2, 0x00, 0xfa, 0x9f, 0xf1, 0x00, 0xfb, 0x9f, 0xf2, 0x00, 0xfb, 0x9f, - 0xf4, 0x00, 0xfb, 0x9f, 0xf4, 0x00, 0xfb, 0x9f, 0xf4, 0x00, 0xfc, 0x9f, - 0xf4, 0x00, 0xfc, 0x9f, 0xf4, 0x00, 0xfc, 0x9f, 0xf4, 0x00, 0xfc, 0x9f, - 0xf4, 0x00, 0xfc, 0x9f, 0xf4, 0x00, 0xfd, 0x9f, 0xf4, 0x00, 0xfd, 0x9f, - 0xf4, 0x00, 0xfd, 0xa0, 0xf6, 0x00, 0xfd, 0x9f, 0xf4, 0x00, 0xfe, 0xa0, - 0xf6, 0x00, 0xfe, 0x9f, 0xf4, 0x00, 0xfe, 0xa0, 0xf6, 0x00, 0xfe, 0xa0, - 0xf6, 0x00, 0xfe, 0xa0, 0xf6, 0x00, 0xff, 0xa0, 0xf6, 0x00, 0xff, 0xa0, - 0xf6, 0x00, 0x03, 0x83, 0x9b, 0x01, 0x0a, 0x83, 0x9b, 0x01, 0x0f, 0x83, - 0x9b, 0x01, 0x14, 0x83, 0x9b, 0x01, 0x17, 0x83, 0x9b, 0x01, 0x1b, 0x83, - 0x9b, 0x01, 0x1e, 0x83, 0x9b, 0x01, 0x20, 0x83, 0x9c, 0x01, 0x23, 0x83, - 0x9b, 0x01, 0x25, 0x83, 0x9c, 0x01, 0x27, 0x83, 0x9b, 0x01, 0x29, 0x83, - 0x9c, 0x01, 0x2b, 0x83, 0x9b, 0x01, 0x2d, 0x83, 0x9c, 0x01, 0x2f, 0x83, - 0x9b, 0x01, 0x31, 0x83, 0x9c, 0x01, 0x32, 0x83, 0x9b, 0x01, 0x34, 0x83, - 0x9c, 0x01, 0x35, 0x83, 0x9b, 0x01, 0x37, 0x83, 0x9c, 0x01, 0x38, 0x83, - 0x9b, 0x01, 0x3a, 0x83, 0x9c, 0x01, 0x3b, 0x83, 0x9b, 0x01, 0x3c, 0x83, - 0x9c, 0x01, 0x3e, 0x83, 0x9b, 0x01, 0x3f, 0x83, 0x9c, 0x01, 0x40, 0x83, - 0x9b, 0x01, 0x42, 0x83, 0x9c, 0x01, 0x43, 0x83, 0x9b, 0x01, 0x44, 0x83, - 0x9c, 0x01, 0x45, 0x83, 0x9b, 0x01, 0x46, 0x83, 0x9c, 0x01, 0x47, 0x83, - 0x9b, 0x01, 0x48, 0x83, 0x9c, 0x01, 0x49, 0x83, 0x9b, 0x01, 0x4a, 0x83, - 0x9c, 0x01, 0x4b, 0x83, 0x9b, 0x01, 0x4c, 0x83, 0x9c, 0x01, 0x4d, 0x83, - 0x9b, 0x01, 0x4e, 0x83, 0x9c, 0x01, 0x4f, 0x83, 0x9b, 0x01, 0x50, 0x83, - 0x9c, 0x01, 0x51, 0x83, 0x9b, 0x01, 0x52, 0x83, 0x9c, 0x01, 0x53, 0x83, - 0x9b, 0x01, 0x54, 0x83, 0x9c, 0x01, 0x55, 0x83, 0x9b, 0x01, 0x56, 0x83, - 0x9c, 0x01, 0x57, 0x83, 0x9b, 0x01, 0x58, 0x83, 0x9c, 0x01, 0x58, 0x83, - 0x9b, 0x01, 0x59, 0x83, 0x9c, 0x01, 0x5a, 0x83, 0x9b, 0x01, 0x5b, 0x83, - 0x9c, 0x01, 0x5c, 0x83, 0x9b, 0x01, 0x5d, 0x83, 0x9c, 0x01, 0x5d, 0x83, - 0x9b, 0x01, 0x5e, 0x83, 0x9c, 0x01, 0x5f, 0x83, 0x9b, 0x01, 0x60, 0x83, - 0x9c, 0x01, 0x60, 0x83, 0x9b, 0x01, 0x61, 0x83, 0x9c, 0x01, 0x62, 0x83, - 0x9b, 0x01, 0x63, 0x83, 0x9c, 0x01, 0x63, 0x83, 0x9b, 0x01, 0x64, 0x83, - 0x9c, 0x01, 0x65, 0x83, 0x9b, 0x01, 0x66, 0x83, 0x9c, 0x01, 0x66, 0x83, - 0x9b, 0x01, 0x67, 0x83, 0x9c, 0x01, 0x68, 0x83, 0x9b, 0x01, 0x68, 0x83, - 0x9c, 0x01, 0x69, 0x83, 0x9b, 0x01, 0x6a, 0x83, 0x9c, 0x01, 0x6a, 0x83, - 0x9b, 0x01, 0x6b, 0x83, 0x9c, 0x01, 0x6c, 0x83, 0x9b, 0x01, 0x6c, 0x83, - 0x9c, 0x01, 0x6d, 0x83, 0x9b, 0x01, 0x6e, 0x83, 0x9c, 0x01, 0x6e, 0x83, - 0x9b, 0x01, 0x6f, 0x83, 0x9c, 0x01, 0x70, 0x83, 0x9b, 0x01, 0x70, 0x83, - 0x9c, 0x01, 0x71, 0x83, 0x9b, 0x01, 0x72, 0x83, 0x9c, 0x01, 0x72, 0x83, - 0x9b, 0x01, 0x73, 0x83, 0x9c, 0x01, 0x73, 0x83, 0x9b, 0x01, 0x74, 0x83, - 0x9c, 0x01, 0x75, 0x83, 0x9b, 0x01, 0x75, 0x83, 0x9c, 0x01, 0x76, 0x83, - 0x9b, 0x01, 0x76, 0x83, 0x9c, 0x01, 0x77, 0x83, 0x9b, 0x01, 0x78, 0x83, - 0x9c, 0x01, 0x78, 0x83, 0x9b, 0x01, 0x79, 0x83, 0x9c, 0x01, 0x79, 0x83, - 0x9b, 0x01, 0x7a, 0x83, 0x9c, 0x01, 0x7a, 0x83, 0x9b, 0x01, 0x7b, 0x83, - 0x9c, 0x01, 0x7c, 0x83, 0x9b, 0x01, 0x7c, 0x83, 0x9c, 0x01, 0x7d, 0x83, - 0x9b, 0x01, 0x7d, 0x83, 0x9c, 0x01, 0x7e, 0x83, 0x9b, 0x01, 0x7e, 0x83, - 0x9c, 0x01, 0x7f, 0x83, 0x9b, 0x01, 0x7f, 0x83, 0x9c, 0x01, 0x80, 0x83, - 0x9b, 0x01, 0x81, 0x83, 0x9c, 0x01, 0x81, 0x83, 0x9b, 0x01, 0x82, 0x83, - 0x9c, 0x01, 0x82, 0x83, 0x9b, 0x01, 0x83, 0x83, 0x9c, 0x01, 0x83, 0x83, - 0x9b, 0x01, 0x84, 0x83, 0x9c, 0x01, 0x84, 0x83, 0x9b, 0x01, 0x85, 0x83, - 0x9c, 0x01, 0x85, 0x83, 0x9b, 0x01, 0x86, 0x83, 0x9c, 0x01, 0x86, 0x83, - 0x9b, 0x01, 0x87, 0x83, 0x9c, 0x01, 0x87, 0x83, 0x9b, 0x01, 0x88, 0x83, - 0x9c, 0x01, 0x88, 0x83, 0x9b, 0x01, 0x89, 0x83, 0x9c, 0x01, 0x89, 0x83, - 0x9b, 0x01, 0x8a, 0x83, 0x9c, 0x01, 0x8a, 0x83, 0x9b, 0x01, 0x8b, 0x83, - 0x9c, 0x01, 0x8b, 0x83, 0x9b, 0x01, 0x8c, 0x83, 0x9c, 0x01, 0x8c, 0x83, - 0x9b, 0x01, 0x8d, 0x83, 0x9c, 0x01, 0x8d, 0x83, 0x9b, 0x01, 0x8e, 0x83, - 0x9c, 0x01, 0x8e, 0x83, 0x9b, 0x01, 0x8e, 0x83, 0x9c, 0x01, 0x8f, 0x83, - 0x9b, 0x01, 0x8f, 0x83, 0x9c, 0x01, 0x90, 0x83, 0x9b, 0x01, 0x90, 0x83, - 0x9c, 0x01, 0x91, 0x83, 0x9b, 0x01, 0x91, 0x83, 0x9c, 0x01, 0x92, 0x83, - 0x9b, 0x01, 0x92, 0x83, 0x9c, 0x01, 0x93, 0x83, 0x9b, 0x01, 0x93, 0x83, - 0x9c, 0x01, 0x94, 0x83, 0x9b, 0x01, 0x94, 0x83, 0x9c, 0x01, 0x94, 0x83, - 0x9b, 0x01, 0x95, 0x83, 0x9c, 0x01, 0x95, 0x83, 0x9b, 0x01, 0x96, 0x83, - 0x9c, 0x01, 0x96, 0x83, 0x9b, 0x01, 0x97, 0x83, 0x9c, 0x01, 0x97, 0x83, - 0x9b, 0x01, 0x98, 0x83, 0x9c, 0x01, 0x98, 0x83, 0x9b, 0x01, 0x98, 0x83, - 0x9c, 0x01, 0x99, 0x83, 0x9b, 0x01, 0x99, 0x83, 0x9c, 0x01, 0x9a, 0x83, - 0x9b, 0x01, 0x9a, 0x83, 0x9c, 0x01, 0x9a, 0x83, 0x9b, 0x01, 0x9b, 0x83, - 0x9c, 0x01, 0x9b, 0x83, 0x9b, 0x01, 0x9c, 0x83, 0x9c, 0x01, 0x9c, 0x83, - 0x9c, 0x01, 0x9d, 0x83, 0x9d, 0x01, 0x9d, 0x83, 0x9c, 0x01, 0x9d, 0x83, - 0x9d, 0x01, 0x9e, 0x83, 0x9c, 0x01, 0x9e, 0x83, 0x9d, 0x01, 0x9f, 0x83, - 0x9c, 0x01, 0x9f, 0x83, 0x9d, 0x01, 0x9f, 0x83, 0x9c, 0x01, 0xa0, 0x83, - 0x9d, 0x01, 0xa0, 0x83, 0x9c, 0x01, 0xa1, 0x83, 0x9d, 0x01, 0xa1, 0x83, - 0x9c, 0x01, 0xa1, 0x83, 0x9d, 0x01, 0xa2, 0x83, 0x9c, 0x01, 0xa2, 0x83, - 0x9d, 0x01, 0xa3, 0x83, 0x9c, 0x01, 0xa3, 0x83, 0x9d, 0x01, 0xa3, 0x83, - 0x9c, 0x01, 0xa4, 0x83, 0x9d, 0x01, 0xa4, 0x83, 0x9c, 0x01, 0xa5, 0x83, - 0x9d, 0x01, 0xa5, 0x83, 0x9c, 0x01, 0xa5, 0x83, 0x9d, 0x01, 0xa6, 0x84, - 0x9f, 0x01, 0xa6, 0x83, 0x9d, 0x01, 0xa6, 0x84, 0x9f, 0x01, 0xa7, 0x83, - 0x9d, 0x01, 0xa7, 0x84, 0x9f, 0x01, 0xa8, 0x83, 0x9d, 0x01, 0xa8, 0x84, - 0x9f, 0x01, 0xa8, 0x83, 0x9d, 0x01, 0xa9, 0x84, 0x9f, 0x01, 0xa9, 0x84, - 0x9e, 0x01, 0xaa, 0x84, 0x9f, 0x01, 0xaa, 0x85, 0xa2, 0x01, 0xaa, 0x84, - 0x9f, 0x01, 0xab, 0x85, 0xa2, 0x01, 0xab, 0x84, 0x9f, 0x01, 0xab, 0x85, - 0xa2, 0x01, 0xac, 0x85, 0xa4, 0x01, 0xac, 0x85, 0xa2, 0x01, 0xac, 0x85, - 0xa4, 0x01, 0xad, 0x85, 0xa2, 0x01, 0xad, 0x85, 0xa4, 0x01, 0xae, 0x86, - 0xa6, 0x01, 0xae, 0x85, 0xa4, 0x01, 0xae, 0x86, 0xa6, 0x01, 0xaf, 0x85, - 0xa4, 0x01, 0xaf, 0x86, 0xa6, 0x01, 0xaf, 0x85, 0xa4, 0x01, 0xb0, 0x86, - 0xa6, 0x01, 0xb0, 0x86, 0xa6, 0x01, 0xb0, 0x86, 0xa6, 0x01, 0xb1, 0x87, - 0xaa, 0x01, 0xb1, 0x86, 0xa6, 0x01, 0xb2, 0x87, 0xaa, 0x01, 0xb2, 0x86, - 0xa6, 0x01, 0xb2, 0x87, 0xaa, 0x01, 0xb3, 0x87, 0xab, 0x01, 0xb3, 0x87, - 0xaa, 0x01, 0xb3, 0x87, 0xab, 0x01, 0xb4, 0x87, 0xaa, 0x01, 0xb4, 0x87, - 0xab, 0x01, 0xb4, 0x88, 0xad, 0x01, 0xb5, 0x87, 0xab, 0x01, 0xb5, 0x88, - 0xad, 0x01, 0xb5, 0x87, 0xab, 0x01, 0xb6, 0x88, 0xad, 0x01, 0xb6, 0x87, - 0xab, 0x01, 0xb6, 0x88, 0xad, 0x01, 0xb7, 0x87, 0xab, 0x01, 0xb7, 0x88, - 0xad, 0x01, 0xb7, 0x88, 0xad, 0x01, 0xb8, 0x88, 0xad, 0x01, 0xb8, 0x89, - 0xb0, 0x01, 0xb8, 0x88, 0xad, 0x01, 0xb9, 0x89, 0xb0, 0x01, 0xb9, 0x89, - 0xb2, 0x01, 0xb9, 0x89, 0xb0, 0x01, 0xba, 0x89, 0xb2, 0x01, 0xba, 0x89, - 0xb0, 0x01, 0xba, 0x89, 0xb2, 0x01, 0xbb, 0x89, 0xb0, 0x01, 0xbb, 0x89, - 0xb2, 0x01, 0xbb, 0x89, 0xb0, 0x01, 0xbc, 0x89, 0xb2, 0x01, 0xbc, 0x89, - 0xb2, 0x01, 0xbc, 0x89, 0xb2, 0x01, 0xbd, 0x89, 0xb2, 0x01, 0xbd, 0x89, - 0xb2, 0x01, 0xbd, 0x8a, 0xb3, 0x01, 0xbe, 0x8a, 0xb4, 0x01, 0xbe, 0x8b, - 0xb7, 0x01, 0xbe, 0x8b, 0xb7, 0x01, 0xbf, 0x8b, 0xb7, 0x01, 0xbf, 0x8b, - 0xb7, 0x01, 0xbf, 0x8b, 0xb7, 0x01, 0xc0, 0x8b, 0xb7, 0x01, 0xc0, 0x8b, - 0xb7, 0x01, 0xc0, 0x8b, 0xb7, 0x01, 0xc1, 0x8b, 0xb7, 0x01, 0xc1, 0x8b, - 0xb7, 0x01, 0xc1, 0x8c, 0xba, 0x01, 0xc1, 0x8b, 0xb7, 0x01, 0xc2, 0x8c, - 0xba, 0x01, 0xc2, 0x8b, 0xb7, 0x01, 0xc2, 0x8c, 0xba, 0x01, 0xc3, 0x8b, - 0xb8, 0x01, 0xc3, 0x8c, 0xba, 0x01, 0xc3, 0x8b, 0xb8, 0x01, 0xc4, 0x8c, - 0xba, 0x01, 0xc4, 0x8d, 0xbd, 0x01, 0xc4, 0x8c, 0xba, 0x01, 0xc5, 0x8d, - 0xbd, 0x01, 0xc5, 0x8c, 0xba, 0x01, 0xc5, 0x8d, 0xbd, 0x01, 0xc6, 0x8d, - 0xbf, 0x01, 0xc6, 0x8d, 0xbd, 0x01, 0xc6, 0x8d, 0xbf, 0x01, 0xc6, 0x8d, - 0xbd, 0x01, 0xc7, 0x8d, 0xbf, 0x01, 0xc7, 0x8e, 0xc0, 0x01, 0xc7, 0x8d, - 0xbf, 0x01, 0xc8, 0x8e, 0xc0, 0x01, 0xc8, 0x8d, 0xbf, 0x01, 0xc8, 0x8e, - 0xc0, 0x01, 0xc9, 0x8d, 0xbf, 0x01, 0xc9, 0x8e, 0xc0, 0x01, 0xc9, 0x8d, - 0xbf, 0x01, 0xc9, 0x8e, 0xc0, 0x01, 0xca, 0x8e, 0xc0, 0x01, 0xca, 0x8e, - 0xc0, 0x01, 0xca, 0x8e, 0xc3, 0x01, 0xcb, 0x8e, 0xc0, 0x01, 0xcb, 0x8e, - 0xc3, 0x01, 0xcb, 0x8e, 0xc0, 0x01, 0xcc, 0x8e, 0xc3, 0x01, 0xcc, 0x8f, - 0xc5, 0x01, 0xcc, 0x8e, 0xc3, 0x01, 0xcc, 0x8f, 0xc5, 0x01, 0xcd, 0x8e, - 0xc3, 0x01, 0xcd, 0x8f, 0xc5, 0x01, 0xcd, 0x8e, 0xc3, 0x01, 0xce, 0x8f, - 0xc5, 0x01, 0xce, 0x8e, 0xc3, 0x01, 0xce, 0x8f, 0xc5, 0x01, 0xce, 0x8f, - 0xc4, 0x01, 0xcf, 0x8f, 0xc5, 0x01, 0xcf, 0x8f, 0xc4, 0x01, 0xcf, 0x8f, - 0xc5, 0x01, 0xd0, 0x90, 0xc9, 0x01, 0xd0, 0x90, 0xc9, 0x01, 0xd0, 0x90, - 0xc9, 0x01, 0xd0, 0x90, 0xc9, 0x01, 0xd1, 0x90, 0xc9, 0x01, 0xd1, 0x90, - 0xc9, 0x01, 0xd1, 0x90, 0xc9, 0x01, 0xd2, 0x90, 0xc9, 0x01, 0xd2, 0x90, - 0xc9, 0x01, 0xd2, 0x90, 0xc9, 0x01, 0xd2, 0x91, 0xcc, 0x01, 0xd3, 0x90, - 0xc9, 0x01, 0xd3, 0x91, 0xcc, 0x01, 0xd3, 0x90, 0xc9, 0x01, 0xd4, 0x91, - 0xcc, 0x01, 0xd4, 0x91, 0xca, 0x01, 0xd4, 0x91, 0xcc, 0x01, 0xd4, 0x91, - 0xca, 0x01, 0xd5, 0x91, 0xcc, 0x01, 0xd5, 0x91, 0xcb, 0x01, 0xd5, 0x91, - 0xcc, 0x01, 0xd6, 0x92, 0xce, 0x01, 0xd6, 0x92, 0xce, 0x01, 0xd6, 0x92, - 0xce, 0x01, 0xd6, 0x92, 0xce, 0x01, 0xd7, 0x92, 0xce, 0x01, 0xd7, 0x92, - 0xce, 0x01, 0xd7, 0x92, 0xce, 0x01, 0xd7, 0x92, 0xce, 0x01, 0xd8, 0x92, - 0xce, 0x01, 0xd8, 0x92, 0xce, 0x01, 0xd8, 0x93, 0xd1, 0x01, 0xd9, 0x92, - 0xce, 0x01, 0xd9, 0x93, 0xd1, 0x01, 0xd9, 0x92, 0xce, 0x01, 0xd9, 0x93, - 0xd1, 0x01, 0xda, 0x93, 0xd0, 0x01, 0xda, 0x93, 0xd1, 0x01, 0xda, 0x93, - 0xd0, 0x01, 0xda, 0x93, 0xd1, 0x01, 0xdb, 0x94, 0xd4, 0x01, 0xdb, 0x93, - 0xd1, 0x01, 0xdb, 0x94, 0xd4, 0x01, 0xdb, 0x93, 0xd1, 0x01, 0xdc, 0x94, - 0xd4, 0x01, 0xdc, 0x94, 0xd5, 0x01, 0xdc, 0x94, 0xd4, 0x01, 0xdd, 0x94, - 0xd5, 0x01, 0xdd, 0x94, 0xd4, 0x01, 0xdd, 0x94, 0xd5, 0x01, 0xdd, 0x95, - 0xd6, 0x01, 0xde, 0x94, 0xd5, 0x01, 0xde, 0x95, 0xd6, 0x01, 0xde, 0x94, - 0xd5, 0x01, 0xde, 0x95, 0xd6, 0x01, 0xdf, 0x94, 0xd5, 0x01, 0xdf, 0x95, - 0xd6, 0x01, 0xdf, 0x94, 0xd5, 0x01, 0xdf, 0x95, 0xd6, 0x01, 0xe0, 0x96, - 0xd9, 0x01, 0xe0, 0x95, 0xd6, 0x01, 0xe0, 0x96, 0xd9, 0x01, 0xe1, 0x95, - 0xd6, 0x01, 0xe1, 0x96, 0xd9, 0x01, 0xe1, 0x96, 0xda, 0x01, 0xe1, 0x96, - 0xd9, 0x01, 0xe2, 0x96, 0xda, 0x01, 0xe2, 0x96, 0xd9, 0x01, 0xe2, 0x96, - 0xda, 0x01, 0xe2, 0x96, 0xd9, 0x01, 0xe3, 0x96, 0xda, 0x01, 0xe3, 0x96, - 0xd9, 0x01, 0xe3, 0x96, 0xda, 0x01, 0xe3, 0x96, 0xd9, 0x01, 0xe4, 0x96, - 0xda, 0x01, 0xe4, 0x96, 0xda, 0x01, 0xe4, 0x96, 0xda, 0x01, 0xe4, 0x96, - 0xda, 0x01, 0xe5, 0x96, 0xda, 0x01, 0xe5, 0x98, 0xde, 0x01, 0xe5, 0x98, - 0xde, 0x01, 0xe5, 0x98, 0xde, 0x01, 0xe6, 0x98, 0xde, 0x01, 0xe6, 0x98, - 0xde, 0x01, 0xe6, 0x98, 0xde, 0x01, 0xe6, 0x98, 0xde, 0x01, 0xe7, 0x98, - 0xde, 0x01, 0xe7, 0x98, 0xde, 0x01, 0xe7, 0x98, 0xde, 0x01, 0xe7, 0x98, - 0xe0, 0x01, 0xe8, 0x98, 0xde, 0x01, 0xe8, 0x98, 0xe0, 0x01, 0xe8, 0x98, - 0xde, 0x01, 0xe8, 0x98, 0xe0, 0x01, 0xe9, 0x98, 0xdf, 0x01, 0xe9, 0x98, - 0xe0, 0x01, 0xe9, 0x98, 0xdf, 0x01, 0xe9, 0x98, 0xe0, 0x01, 0xea, 0x99, - 0xe3, 0x01, 0xea, 0x98, 0xe0, 0x01, 0xea, 0x99, 0xe3, 0x01, 0xea, 0x98, - 0xe0, 0x01, 0xeb, 0x99, 0xe3, 0x01, 0xeb, 0x9a, 0xe4, 0x01, 0xeb, 0x99, - 0xe3, 0x01, 0xeb, 0x9a, 0xe4, 0x01, 0xec, 0x99, 0xe3, 0x01, 0xec, 0x9a, - 0xe4, 0x01, 0xec, 0x9a, 0xe5, 0x01, 0xec, 0x9a, 0xe4, 0x01, 0xec, 0x9a, - 0xe5, 0x01, 0xed, 0x9a, 0xe4, 0x01, 0xed, 0x9a, 0xe5, 0x01, 0xed, 0x9a, - 0xe4, 0x01, 0xed, 0x9a, 0xe5, 0x01, 0xee, 0x9a, 0xe4, 0x01, 0xee, 0x9a, - 0xe5, 0x01, 0xee, 0x9a, 0xe4, 0x01, 0xee, 0x9a, 0xe5, 0x01, 0xef, 0x9b, - 0xe7, 0x01, 0xef, 0x9a, 0xe5, 0x01, 0xef, 0x9b, 0xe7, 0x01, 0xef, 0x9a, - 0xe5, 0x01, 0xf0, 0x9b, 0xe7, 0x01, 0xf0, 0x9b, 0xe9, 0x01, 0xf0, 0x9b, - 0xe7, 0x01, 0xf0, 0x9b, 0xe9, 0x01, 0xf1, 0x9b, 0xe7, 0x01, 0xf1, 0x9b, - 0xe9, 0x01, 0xf1, 0x9c, 0xea, 0x01, 0xf1, 0x9b, 0xe9, 0x01, 0xf2, 0x9c, - 0xea, 0x01, 0xf2, 0x9b, 0xe9, 0x01, 0xf2, 0x9c, 0xea, 0x01, 0xf2, 0x9b, - 0xe9, 0x01, 0xf2, 0x9c, 0xea, 0x01, 0xf3, 0x9b, 0xe9, 0x01, 0xf3, 0x9c, - 0xea, 0x01, 0xf3, 0x9d, 0xec, 0x01, 0xf3, 0x9c, 0xea, 0x01, 0xf4, 0x9d, - 0xec, 0x01, 0xf4, 0x9c, 0xea, 0x01, 0xf4, 0x9d, 0xec, 0x01, 0xf4, 0x9d, - 0xed, 0x01, 0xf5, 0x9d, 0xec, 0x01, 0xf5, 0x9d, 0xed, 0x01, 0xf5, 0x9d, - 0xec, 0x01, 0xf5, 0x9d, 0xed, 0x01, 0xf5, 0x9d, 0xec, 0x01, 0xf6, 0x9d, - 0xed, 0x01, 0xf6, 0x9d, 0xec, 0x01, 0xf6, 0x9d, 0xed, 0x01, 0xf6, 0x9d, - 0xec, 0x01, 0xf7, 0x9d, 0xed, 0x01, 0xf7, 0x9d, 0xed, 0x01, 0xf7, 0x9d, - 0xed, 0x01, 0xf7, 0x9e, 0xf0, 0x01, 0xf8, 0x9e, 0xf1, 0x01, 0xf8, 0x9e, - 0xf0, 0x01, 0xf8, 0x9e, 0xf1, 0x01, 0xf8, 0x9e, 0xf0, 0x01, 0xf8, 0x9e, - 0xf1, 0x01, 0xf9, 0x9e, 0xf0, 0x01, 0xf9, 0x9e, 0xf1, 0x01, 0xf9, 0x9e, - 0xf0, 0x01, 0xf9, 0x9e, 0xf1, 0x01, 0xfa, 0x9f, 0xf3, 0x01, 0xfa, 0x9e, - 0xf1, 0x01, 0xfa, 0x9f, 0xf3, 0x01, 0xfa, 0x9e, 0xf1, 0x01, 0xfa, 0x9f, - 0xf3, 0x01, 0xfb, 0x9e, 0xf1, 0x01, 0xfb, 0x9f, 0xf3, 0x01, 0xfb, 0x9f, - 0xf2, 0x01, 0xfb, 0x9f, 0xf3, 0x01, 0xfc, 0x9f, 0xf2, 0x01, 0xfc, 0x9f, - 0xf3, 0x01, 0xfc, 0xa0, 0xf5, 0x01, 0xfc, 0x9f, 0xf3, 0x01, 0xfc, 0xa0, - 0xf5, 0x01, 0xfd, 0x9f, 0xf3, 0x01, 0xfd, 0xa0, 0xf5, 0x01, 0xfd, 0xa0, - 0xf6, 0x01, 0xfd, 0xa0, 0xf5, 0x01, 0xfe, 0xa0, 0xf6, 0x01, 0xfe, 0xa0, - 0xf6, 0x01, 0xfe, 0xa0, 0xf6, 0x01, 0xfe, 0xa0, 0xf6, 0x01, 0xfe, 0xa0, - 0xf6, 0x01, 0xff, 0xa1, 0xf7, 0x01, 0xff, 0xa0, 0xf6, 0x01, 0x03, 0x83, - 0x9b, 0x01, 0x0a, 0x83, 0x9b, 0x01, 0x0f, 0x83, 0x9b, 0x01, 0x14, 0x83, - 0x9b, 0x01, 0x17, 0x83, 0x9b, 0x01, 0x1b, 0x83, 0x9b, 0x01, 0x1e, 0x83, - 0x9b, 0x01, 0x20, 0x83, 0x9c, 0x01, 0x23, 0x83, 0x9b, 0x01, 0x25, 0x83, - 0x9c, 0x01, 0x27, 0x83, 0x9b, 0x01, 0x29, 0x83, 0x9c, 0x01, 0x2b, 0x83, - 0x9b, 0x01, 0x2d, 0x83, 0x9c, 0x01, 0x2f, 0x83, 0x9b, 0x01, 0x31, 0x83, - 0x9c, 0x01, 0x32, 0x83, 0x9b, 0x01, 0x34, 0x83, 0x9c, 0x01, 0x35, 0x83, - 0x9b, 0x01, 0x37, 0x83, 0x9c, 0x01, 0x38, 0x83, 0x9b, 0x01, 0x3a, 0x83, - 0x9c, 0x01, 0x3b, 0x83, 0x9b, 0x01, 0x3c, 0x83, 0x9c, 0x01, 0x3e, 0x83, - 0x9b, 0x01, 0x3f, 0x83, 0x9c, 0x01, 0x40, 0x83, 0x9b, 0x01, 0x42, 0x83, - 0x9c, 0x01, 0x43, 0x83, 0x9b, 0x01, 0x44, 0x83, 0x9c, 0x01, 0x45, 0x83, - 0x9b, 0x01, 0x46, 0x83, 0x9c, 0x01, 0x47, 0x83, 0x9b, 0x01, 0x48, 0x83, - 0x9c, 0x01, 0x49, 0x83, 0x9b, 0x01, 0x4a, 0x83, 0x9c, 0x01, 0x4b, 0x83, - 0x9b, 0x01, 0x4c, 0x83, 0x9c, 0x01, 0x4d, 0x83, 0x9b, 0x01, 0x4e, 0x83, - 0x9c, 0x01, 0x4f, 0x83, 0x9b, 0x01, 0x50, 0x83, 0x9c, 0x01, 0x51, 0x83, - 0x9b, 0x01, 0x52, 0x83, 0x9c, 0x01, 0x53, 0x83, 0x9b, 0x01, 0x54, 0x83, - 0x9c, 0x01, 0x55, 0x83, 0x9b, 0x01, 0x56, 0x83, 0x9c, 0x01, 0x57, 0x83, - 0x9b, 0x01, 0x58, 0x83, 0x9c, 0x01, 0x58, 0x83, 0x9b, 0x01, 0x59, 0x83, - 0x9c, 0x01, 0x5a, 0x83, 0x9b, 0x01, 0x5b, 0x83, 0x9c, 0x01, 0x5c, 0x83, - 0x9b, 0x01, 0x5d, 0x83, 0x9c, 0x01, 0x5d, 0x83, 0x9b, 0x01, 0x5e, 0x83, - 0x9c, 0x01, 0x5f, 0x83, 0x9b, 0x01, 0x60, 0x83, 0x9c, 0x01, 0x60, 0x83, - 0x9b, 0x01, 0x61, 0x83, 0x9c, 0x01, 0x62, 0x83, 0x9b, 0x01, 0x63, 0x83, - 0x9c, 0x01, 0x63, 0x83, 0x9b, 0x01, 0x64, 0x83, 0x9c, 0x01, 0x65, 0x83, - 0x9b, 0x01, 0x66, 0x83, 0x9c, 0x01, 0x66, 0x83, 0x9b, 0x01, 0x67, 0x83, - 0x9c, 0x01, 0x68, 0x83, 0x9b, 0x01, 0x68, 0x83, 0x9c, 0x01, 0x69, 0x83, - 0x9b, 0x01, 0x6a, 0x83, 0x9c, 0x01, 0x6a, 0x83, 0x9b, 0x01, 0x6b, 0x83, - 0x9c, 0x01, 0x6c, 0x83, 0x9b, 0x01, 0x6c, 0x83, 0x9c, 0x01, 0x6d, 0x83, - 0x9b, 0x01, 0x6e, 0x83, 0x9c, 0x01, 0x6e, 0x83, 0x9b, 0x01, 0x6f, 0x83, - 0x9c, 0x01, 0x70, 0x83, 0x9b, 0x01, 0x70, 0x83, 0x9c, 0x01, 0x71, 0x83, - 0x9b, 0x01, 0x72, 0x83, 0x9c, 0x01, 0x72, 0x83, 0x9b, 0x01, 0x73, 0x83, - 0x9c, 0x01, 0x73, 0x83, 0x9b, 0x01, 0x74, 0x83, 0x9c, 0x01, 0x75, 0x83, - 0x9b, 0x01, 0x75, 0x83, 0x9c, 0x01, 0x76, 0x83, 0x9b, 0x01, 0x76, 0x83, - 0x9c, 0x01, 0x77, 0x83, 0x9b, 0x01, 0x78, 0x83, 0x9c, 0x01, 0x78, 0x83, - 0x9b, 0x01, 0x79, 0x83, 0x9c, 0x01, 0x79, 0x83, 0x9b, 0x01, 0x7a, 0x83, - 0x9c, 0x01, 0x7a, 0x83, 0x9b, 0x01, 0x7b, 0x83, 0x9c, 0x01, 0x7c, 0x83, - 0x9b, 0x01, 0x7c, 0x83, 0x9c, 0x01, 0x7d, 0x83, 0x9b, 0x01, 0x7d, 0x83, - 0x9c, 0x01, 0x7e, 0x83, 0x9b, 0x01, 0x7e, 0x83, 0x9c, 0x01, 0x7f, 0x83, - 0x9b, 0x01, 0x7f, 0x83, 0x9c, 0x01, 0x80, 0x83, 0x9b, 0x01, 0x81, 0x83, - 0x9c, 0x01, 0x81, 0x83, 0x9b, 0x01, 0x82, 0x83, 0x9c, 0x01, 0x82, 0x83, - 0x9b, 0x01, 0x83, 0x83, 0x9c, 0x01, 0x83, 0x83, 0x9b, 0x01, 0x84, 0x83, - 0x9c, 0x01, 0x84, 0x83, 0x9b, 0x01, 0x85, 0x83, 0x9c, 0x01, 0x85, 0x83, - 0x9b, 0x01, 0x86, 0x83, 0x9c, 0x01, 0x86, 0x83, 0x9b, 0x01, 0x87, 0x83, - 0x9c, 0x01, 0x87, 0x83, 0x9b, 0x01, 0x88, 0x83, 0x9c, 0x01, 0x88, 0x83, - 0x9b, 0x01, 0x89, 0x83, 0x9c, 0x01, 0x89, 0x83, 0x9b, 0x01, 0x8a, 0x83, - 0x9c, 0x01, 0x8a, 0x83, 0x9b, 0x01, 0x8b, 0x83, 0x9c, 0x01, 0x8b, 0x83, - 0x9b, 0x01, 0x8c, 0x83, 0x9c, 0x01, 0x8c, 0x83, 0x9b, 0x01, 0x8d, 0x83, - 0x9c, 0x01, 0x8d, 0x83, 0x9b, 0x01, 0x8e, 0x83, 0x9c, 0x01, 0x8e, 0x83, - 0x9b, 0x01, 0x8e, 0x83, 0x9c, 0x01, 0x8f, 0x83, 0x9b, 0x01, 0x8f, 0x83, - 0x9c, 0x01, 0x90, 0x83, 0x9b, 0x01, 0x90, 0x83, 0x9c, 0x01, 0x91, 0x83, - 0x9b, 0x01, 0x91, 0x83, 0x9c, 0x01, 0x92, 0x83, 0x9b, 0x01, 0x92, 0x83, - 0x9c, 0x01, 0x93, 0x83, 0x9b, 0x01, 0x93, 0x83, 0x9c, 0x01, 0x94, 0x83, - 0x9b, 0x01, 0x94, 0x83, 0x9c, 0x01, 0x94, 0x83, 0x9b, 0x01, 0x95, 0x83, - 0x9c, 0x01, 0x95, 0x83, 0x9b, 0x01, 0x96, 0x83, 0x9c, 0x01, 0x96, 0x83, - 0x9b, 0x01, 0x97, 0x83, 0x9c, 0x01, 0x97, 0x83, 0x9b, 0x01, 0x98, 0x83, - 0x9c, 0x01, 0x98, 0x83, 0x9b, 0x01, 0x98, 0x83, 0x9c, 0x01, 0x99, 0x83, - 0x9b, 0x01, 0x99, 0x83, 0x9c, 0x01, 0x9a, 0x83, 0x9b, 0x01, 0x9a, 0x83, - 0x9c, 0x01, 0x9a, 0x83, 0x9b, 0x01, 0x9b, 0x83, 0x9c, 0x01, 0x9b, 0x83, - 0x9b, 0x01, 0x9c, 0x83, 0x9c, 0x01, 0x9c, 0x83, 0x9c, 0x01, 0x9d, 0x83, - 0x9d, 0x01, 0x9d, 0x83, 0x9c, 0x01, 0x9d, 0x83, 0x9d, 0x01, 0x9e, 0x83, - 0x9c, 0x01, 0x9e, 0x83, 0x9d, 0x01, 0x9f, 0x83, 0x9c, 0x01, 0x9f, 0x83, - 0x9d, 0x01, 0x9f, 0x83, 0x9c, 0x01, 0xa0, 0x83, 0x9d, 0x01, 0xa0, 0x83, - 0x9c, 0x01, 0xa1, 0x83, 0x9d, 0x01, 0xa1, 0x83, 0x9c, 0x01, 0xa1, 0x83, - 0x9d, 0x01, 0xa2, 0x83, 0x9c, 0x01, 0xa2, 0x83, 0x9d, 0x01, 0xa3, 0x83, - 0x9c, 0x01, 0xa3, 0x83, 0x9d, 0x01, 0xa3, 0x83, 0x9c, 0x01, 0xa4, 0x83, - 0x9d, 0x01, 0xa4, 0x83, 0x9c, 0x01, 0xa5, 0x83, 0x9d, 0x01, 0xa5, 0x83, - 0x9c, 0x01, 0xa5, 0x83, 0x9d, 0x01, 0xa6, 0x83, 0x9c, 0x01, 0xa6, 0x83, - 0x9d, 0x01, 0xa6, 0x83, 0x9c, 0x01, 0xa7, 0x83, 0x9d, 0x01, 0xa7, 0x83, - 0x9c, 0x01, 0xa8, 0x83, 0x9d, 0x01, 0xa8, 0x84, 0xa0, 0x01, 0xa8, 0x84, - 0xa1, 0x01, 0xa9, 0x84, 0xa0, 0x01, 0xa9, 0x84, 0xa1, 0x01, 0xaa, 0x84, - 0xa0, 0x01, 0xaa, 0x84, 0xa1, 0x01, 0xaa, 0x84, 0xa0, 0x01, 0xab, 0x84, - 0xa1, 0x01, 0xab, 0x84, 0xa0, 0x01, 0xab, 0x84, 0xa1, 0x01, 0xac, 0x85, - 0xa4, 0x01, 0xac, 0x84, 0xa1, 0x01, 0xac, 0x85, 0xa4, 0x01, 0xad, 0x84, - 0xa1, 0x01, 0xad, 0x85, 0xa4, 0x01, 0xae, 0x85, 0xa4, 0x01, 0xae, 0x85, - 0xa4, 0x01, 0xae, 0x85, 0xa4, 0x01, 0xaf, 0x85, 0xa4, 0x01, 0xaf, 0x86, - 0xa8, 0x01, 0xaf, 0x85, 0xa4, 0x01, 0xb0, 0x86, 0xa8, 0x01, 0xb0, 0x85, - 0xa4, 0x01, 0xb0, 0x86, 0xa8, 0x01, 0xb1, 0x86, 0xa7, 0x01, 0xb1, 0x86, - 0xa8, 0x01, 0xb2, 0x86, 0xa7, 0x01, 0xb2, 0x86, 0xa8, 0x01, 0xb2, 0x87, - 0xab, 0x01, 0xb3, 0x87, 0xab, 0x01, 0xb3, 0x87, 0xab, 0x01, 0xb3, 0x87, - 0xab, 0x01, 0xb4, 0x87, 0xab, 0x01, 0xb4, 0x87, 0xab, 0x01, 0xb4, 0x87, - 0xab, 0x01, 0xb5, 0x87, 0xab, 0x01, 0xb5, 0x87, 0xab, 0x01, 0xb5, 0x87, - 0xab, 0x01, 0xb6, 0x88, 0xaf, 0x01, 0xb6, 0x87, 0xab, 0x01, 0xb6, 0x88, - 0xaf, 0x01, 0xb7, 0x87, 0xab, 0x01, 0xb7, 0x88, 0xaf, 0x01, 0xb7, 0x87, - 0xab, 0x01, 0xb8, 0x88, 0xaf, 0x01, 0xb8, 0x88, 0xae, 0x01, 0xb8, 0x88, - 0xaf, 0x01, 0xb9, 0x89, 0xb2, 0x01, 0xb9, 0x89, 0xb2, 0x01, 0xb9, 0x89, - 0xb2, 0x01, 0xba, 0x89, 0xb2, 0x01, 0xba, 0x89, 0xb2, 0x01, 0xba, 0x89, - 0xb2, 0x01, 0xbb, 0x89, 0xb2, 0x01, 0xbb, 0x89, 0xb2, 0x01, 0xbb, 0x89, - 0xb2, 0x01, 0xbc, 0x89, 0xb2, 0x01, 0xbc, 0x89, 0xb2, 0x01, 0xbc, 0x89, - 0xb2, 0x01, 0xbd, 0x8a, 0xb5, 0x01, 0xbd, 0x89, 0xb2, 0x01, 0xbd, 0x8a, - 0xb5, 0x01, 0xbe, 0x89, 0xb2, 0x01, 0xbe, 0x8a, 0xb5, 0x01, 0xbe, 0x8a, - 0xb5, 0x01, 0xbf, 0x8a, 0xb5, 0x01, 0xbf, 0x8a, 0xb5, 0x01, 0xbf, 0x8a, - 0xb5, 0x01, 0xc0, 0x8b, 0xb8, 0x01, 0xc0, 0x8a, 0xb5, 0x01, 0xc0, 0x8b, - 0xb8, 0x01, 0xc1, 0x8a, 0xb5, 0x01, 0xc1, 0x8b, 0xb8, 0x01, 0xc1, 0x8a, - 0xb5, 0x01, 0xc1, 0x8b, 0xb8, 0x01, 0xc2, 0x8b, 0xb8, 0x01, 0xc2, 0x8b, - 0xb8, 0x01, 0xc2, 0x8c, 0xbb, 0x01, 0xc3, 0x8c, 0xbc, 0x01, 0xc3, 0x8c, - 0xbb, 0x01, 0xc3, 0x8c, 0xbc, 0x01, 0xc4, 0x8c, 0xbb, 0x01, 0xc4, 0x8c, - 0xbc, 0x01, 0xc4, 0x8c, 0xbb, 0x01, 0xc5, 0x8c, 0xbc, 0x01, 0xc5, 0x8c, - 0xbb, 0x01, 0xc5, 0x8c, 0xbc, 0x01, 0xc6, 0x8d, 0xbf, 0x01, 0xc6, 0x8c, - 0xbc, 0x01, 0xc6, 0x8d, 0xbf, 0x01, 0xc6, 0x8c, 0xbc, 0x01, 0xc7, 0x8d, - 0xbf, 0x01, 0xc7, 0x8c, 0xbc, 0x01, 0xc7, 0x8d, 0xbf, 0x01, 0xc8, 0x8d, - 0xbe, 0x01, 0xc8, 0x8d, 0xbf, 0x01, 0xc8, 0x8d, 0xbe, 0x01, 0xc9, 0x8d, - 0xbf, 0x01, 0xc9, 0x8e, 0xc1, 0x01, 0xc9, 0x8d, 0xbf, 0x01, 0xc9, 0x8e, - 0xc1, 0x01, 0xca, 0x8d, 0xbf, 0x01, 0xca, 0x8e, 0xc1, 0x01, 0xca, 0x8e, - 0xc1, 0x01, 0xcb, 0x8e, 0xc1, 0x01, 0xcb, 0x8e, 0xc1, 0x01, 0xcb, 0x8e, - 0xc1, 0x01, 0xcc, 0x8f, 0xc4, 0x01, 0xcc, 0x8f, 0xc5, 0x01, 0xcc, 0x8f, - 0xc4, 0x01, 0xcc, 0x8f, 0xc5, 0x01, 0xcd, 0x8f, 0xc4, 0x01, 0xcd, 0x8f, - 0xc5, 0x01, 0xcd, 0x8f, 0xc4, 0x01, 0xce, 0x8f, 0xc5, 0x01, 0xce, 0x8f, - 0xc4, 0x01, 0xce, 0x8f, 0xc5, 0x01, 0xce, 0x90, 0xc7, 0x01, 0xcf, 0x8f, - 0xc5, 0x01, 0xcf, 0x90, 0xc7, 0x01, 0xcf, 0x8f, 0xc5, 0x01, 0xd0, 0x90, - 0xc7, 0x01, 0xd0, 0x8f, 0xc5, 0x01, 0xd0, 0x90, 0xc7, 0x01, 0xd0, 0x90, - 0xc7, 0x01, 0xd1, 0x90, 0xc7, 0x01, 0xd1, 0x91, 0xca, 0x01, 0xd1, 0x90, - 0xc7, 0x01, 0xd2, 0x91, 0xca, 0x01, 0xd2, 0x90, 0xc7, 0x01, 0xd2, 0x91, - 0xca, 0x01, 0xd2, 0x90, 0xc7, 0x01, 0xd3, 0x91, 0xca, 0x01, 0xd3, 0x91, - 0xca, 0x01, 0xd3, 0x91, 0xca, 0x01, 0xd4, 0x92, 0xcd, 0x01, 0xd4, 0x92, - 0xcd, 0x01, 0xd4, 0x92, 0xcd, 0x01, 0xd4, 0x92, 0xcd, 0x01, 0xd5, 0x92, - 0xcd, 0x01, 0xd5, 0x92, 0xcd, 0x01, 0xd5, 0x92, 0xcd, 0x01, 0xd6, 0x92, - 0xcd, 0x01, 0xd6, 0x92, 0xcd, 0x01, 0xd6, 0x92, 0xcd, 0x01, 0xd6, 0x93, - 0xd0, 0x01, 0xd7, 0x92, 0xcd, 0x01, 0xd7, 0x93, 0xd0, 0x01, 0xd7, 0x92, - 0xcd, 0x01, 0xd7, 0x93, 0xd0, 0x01, 0xd8, 0x92, 0xcd, 0x01, 0xd8, 0x93, - 0xd0, 0x01, 0xd8, 0x92, 0xcd, 0x01, 0xd9, 0x93, 0xd0, 0x01, 0xd9, 0x93, - 0xcf, 0x01, 0xd9, 0x93, 0xd0, 0x01, 0xd9, 0x94, 0xd2, 0x01, 0xda, 0x94, - 0xd2, 0x01, 0xda, 0x94, 0xd2, 0x01, 0xda, 0x94, 0xd2, 0x01, 0xda, 0x94, - 0xd2, 0x01, 0xdb, 0x94, 0xd2, 0x01, 0xdb, 0x94, 0xd2, 0x01, 0xdb, 0x94, - 0xd2, 0x01, 0xdb, 0x94, 0xd2, 0x01, 0xdc, 0x94, 0xd2, 0x01, 0xdc, 0x94, - 0xd5, 0x01, 0xdc, 0x94, 0xd2, 0x01, 0xdd, 0x94, 0xd5, 0x01, 0xdd, 0x94, - 0xd2, 0x01, 0xdd, 0x94, 0xd5, 0x01, 0xdd, 0x94, 0xd2, 0x01, 0xde, 0x94, - 0xd5, 0x01, 0xde, 0x94, 0xd5, 0x01, 0xde, 0x94, 0xd5, 0x01, 0xde, 0x95, - 0xd7, 0x01, 0xdf, 0x94, 0xd5, 0x01, 0xdf, 0x95, 0xd7, 0x01, 0xdf, 0x94, - 0xd5, 0x01, 0xdf, 0x95, 0xd7, 0x01, 0xe0, 0x94, 0xd5, 0x01, 0xe0, 0x95, - 0xd7, 0x01, 0xe0, 0x95, 0xd7, 0x01, 0xe1, 0x95, 0xd7, 0x01, 0xe1, 0x96, - 0xda, 0x01, 0xe1, 0x96, 0xda, 0x01, 0xe1, 0x96, 0xda, 0x01, 0xe2, 0x96, - 0xda, 0x01, 0xe2, 0x96, 0xda, 0x01, 0xe2, 0x96, 0xda, 0x01, 0xe2, 0x96, - 0xda, 0x01, 0xe3, 0x96, 0xda, 0x01, 0xe3, 0x96, 0xda, 0x01, 0xe3, 0x96, - 0xda, 0x01, 0xe3, 0x96, 0xda, 0x01, 0xe4, 0x96, 0xda, 0x01, 0xe4, 0x97, - 0xdd, 0x01, 0xe4, 0x96, 0xda, 0x01, 0xe4, 0x97, 0xdd, 0x01, 0xe5, 0x96, - 0xda, 0x01, 0xe5, 0x97, 0xdd, 0x01, 0xe5, 0x96, 0xda, 0x01, 0xe5, 0x97, - 0xdd, 0x01, 0xe6, 0x97, 0xdc, 0x01, 0xe6, 0x97, 0xdd, 0x01, 0xe6, 0x98, - 0xdf, 0x01, 0xe6, 0x97, 0xdd, 0x01, 0xe7, 0x98, 0xdf, 0x01, 0xe7, 0x97, - 0xdd, 0x01, 0xe7, 0x98, 0xdf, 0x01, 0xe7, 0x97, 0xdd, 0x01, 0xe8, 0x98, - 0xdf, 0x01, 0xe8, 0x98, 0xdf, 0x01, 0xe8, 0x98, 0xdf, 0x01, 0xe8, 0x99, - 0xe1, 0x01, 0xe9, 0x99, 0xe2, 0x01, 0xe9, 0x99, 0xe1, 0x01, 0xe9, 0x99, - 0xe2, 0x01, 0xe9, 0x99, 0xe1, 0x01, 0xea, 0x99, 0xe2, 0x01, 0xea, 0x99, - 0xe1, 0x01, 0xea, 0x99, 0xe2, 0x01, 0xea, 0x99, 0xe1, 0x01, 0xeb, 0x99, - 0xe2, 0x01, 0xeb, 0x9a, 0xe4, 0x01, 0xeb, 0x99, 0xe2, 0x01, 0xeb, 0x9a, - 0xe4, 0x01, 0xec, 0x99, 0xe2, 0x01, 0xec, 0x9a, 0xe4, 0x01, 0xec, 0x99, - 0xe2, 0x01, 0xec, 0x9a, 0xe4, 0x01, 0xec, 0x99, 0xe2, 0x01, 0xed, 0x9a, - 0xe4, 0x01, 0xed, 0x9a, 0xe6, 0x01, 0xed, 0x9a, 0xe4, 0x01, 0xed, 0x9a, - 0xe6, 0x01, 0xee, 0x9a, 0xe4, 0x01, 0xee, 0x9a, 0xe6, 0x01, 0xee, 0x9a, - 0xe4, 0x01, 0xee, 0x9a, 0xe6, 0x01, 0xef, 0x9a, 0xe4, 0x01, 0xef, 0x9a, - 0xe6, 0x01, 0xef, 0x9b, 0xe8, 0x01, 0xef, 0x9b, 0xe9, 0x01, 0xf0, 0x9b, - 0xe8, 0x01, 0xf0, 0x9b, 0xe9, 0x01, 0xf0, 0x9b, 0xe8, 0x01, 0xf0, 0x9b, - 0xe9, 0x01, 0xf1, 0x9b, 0xe8, 0x01, 0xf1, 0x9b, 0xe9, 0x01, 0xf1, 0x9b, - 0xe8, 0x01, 0xf1, 0x9b, 0xe9, 0x01, 0xf2, 0x9b, 0xe8, 0x01, 0xf2, 0x9b, - 0xe9, 0x01, 0xf2, 0x9c, 0xeb, 0x01, 0xf2, 0x9b, 0xe9, 0x01, 0xf2, 0x9c, - 0xeb, 0x01, 0xf3, 0x9b, 0xe9, 0x01, 0xf3, 0x9c, 0xeb, 0x01, 0xf3, 0x9b, - 0xe9, 0x01, 0xf3, 0x9c, 0xeb, 0x01, 0xf4, 0x9c, 0xeb, 0x01, 0xf4, 0x9c, - 0xeb, 0x01, 0xf4, 0x9d, 0xed, 0x01, 0xf4, 0x9d, 0xed, 0x01, 0xf5, 0x9d, - 0xed, 0x01, 0xf5, 0x9d, 0xed, 0x01, 0xf5, 0x9d, 0xed, 0x01, 0xf5, 0x9d, - 0xed, 0x01, 0xf5, 0x9d, 0xed, 0x01, 0xf6, 0x9d, 0xed, 0x01, 0xf6, 0x9d, - 0xed, 0x01, 0xf6, 0x9d, 0xed, 0x01, 0xf6, 0x9e, 0xef, 0x01, 0xf7, 0x9d, - 0xed, 0x01, 0xf7, 0x9e, 0xef, 0x01, 0xf7, 0x9d, 0xed, 0x01, 0xf7, 0x9e, - 0xef, 0x01, 0xf8, 0x9d, 0xed, 0x01, 0xf8, 0x9e, 0xef, 0x01, 0xf8, 0x9d, - 0xed, 0x01, 0xf8, 0x9e, 0xef, 0x01, 0xf8, 0x9f, 0xf2, 0x01, 0xf9, 0x9e, - 0xef, 0x01, 0xf9, 0x9f, 0xf2, 0x01, 0xf9, 0x9e, 0xef, 0x01, 0xf9, 0x9f, - 0xf2, 0x01, 0xfa, 0x9e, 0xef, 0x01, 0xfa, 0x9f, 0xf2, 0x01, 0xfa, 0x9e, - 0xef, 0x01, 0xfa, 0x9f, 0xf2, 0x01, 0xfa, 0x9f, 0xf1, 0x01, 0xfb, 0x9f, - 0xf2, 0x01, 0xfb, 0x9f, 0xf4, 0x01, 0xfb, 0x9f, 0xf4, 0x01, 0xfb, 0x9f, - 0xf4, 0x01, 0xfc, 0x9f, 0xf4, 0x01, 0xfc, 0x9f, 0xf4, 0x01, 0xfc, 0x9f, - 0xf4, 0x01, 0xfc, 0x9f, 0xf4, 0x01, 0xfc, 0x9f, 0xf4, 0x01, 0xfd, 0x9f, - 0xf4, 0x01, 0xfd, 0x9f, 0xf4, 0x01, 0xfd, 0xa0, 0xf6, 0x01, 0xfd, 0x9f, - 0xf4, 0x01, 0xfe, 0xa0, 0xf6, 0x01, 0xfe, 0xa0, 0xf6, 0x01, 0xfe, 0xa0, - 0xf6, 0x01, 0xfe, 0xa0, 0xf6, 0x01, 0xfe, 0xa0, 0xf6, 0x01, 0xff, 0xa0, - 0xf6, 0x01, 0xff, 0xa0, 0xf6, 0x01, 0x03, 0x84, 0x9b, 0x02, 0x0a, 0x84, - 0x9b, 0x02, 0x0f, 0x84, 0x9b, 0x02, 0x14, 0x84, 0x9b, 0x02, 0x17, 0x84, - 0x9b, 0x02, 0x1b, 0x84, 0x9b, 0x02, 0x1e, 0x84, 0x9b, 0x02, 0x20, 0x84, - 0x9c, 0x02, 0x23, 0x84, 0x9b, 0x02, 0x25, 0x84, 0x9c, 0x02, 0x27, 0x84, - 0x9b, 0x02, 0x29, 0x84, 0x9c, 0x02, 0x2b, 0x84, 0x9b, 0x02, 0x2d, 0x84, - 0x9c, 0x02, 0x2f, 0x84, 0x9b, 0x02, 0x31, 0x84, 0x9c, 0x02, 0x32, 0x84, - 0x9b, 0x02, 0x34, 0x84, 0x9c, 0x02, 0x35, 0x84, 0x9b, 0x02, 0x37, 0x84, - 0x9c, 0x02, 0x38, 0x84, 0x9b, 0x02, 0x3a, 0x84, 0x9c, 0x02, 0x3b, 0x84, - 0x9b, 0x02, 0x3c, 0x84, 0x9c, 0x02, 0x3e, 0x84, 0x9b, 0x02, 0x3f, 0x84, - 0x9c, 0x02, 0x40, 0x84, 0x9b, 0x02, 0x42, 0x84, 0x9c, 0x02, 0x43, 0x84, - 0x9b, 0x02, 0x44, 0x84, 0x9c, 0x02, 0x45, 0x84, 0x9b, 0x02, 0x46, 0x84, - 0x9c, 0x02, 0x47, 0x84, 0x9b, 0x02, 0x48, 0x84, 0x9c, 0x02, 0x49, 0x84, - 0x9b, 0x02, 0x4a, 0x84, 0x9c, 0x02, 0x4b, 0x84, 0x9b, 0x02, 0x4c, 0x84, - 0x9c, 0x02, 0x4d, 0x84, 0x9b, 0x02, 0x4e, 0x84, 0x9c, 0x02, 0x4f, 0x84, - 0x9b, 0x02, 0x50, 0x84, 0x9c, 0x02, 0x51, 0x84, 0x9b, 0x02, 0x52, 0x84, - 0x9c, 0x02, 0x53, 0x84, 0x9b, 0x02, 0x54, 0x84, 0x9c, 0x02, 0x55, 0x84, - 0x9b, 0x02, 0x56, 0x84, 0x9c, 0x02, 0x57, 0x84, 0x9b, 0x02, 0x58, 0x84, - 0x9c, 0x02, 0x58, 0x84, 0x9b, 0x02, 0x59, 0x84, 0x9c, 0x02, 0x5a, 0x84, - 0x9b, 0x02, 0x5b, 0x84, 0x9c, 0x02, 0x5c, 0x84, 0x9b, 0x02, 0x5d, 0x84, - 0x9c, 0x02, 0x5d, 0x84, 0x9b, 0x02, 0x5e, 0x84, 0x9c, 0x02, 0x5f, 0x84, - 0x9b, 0x02, 0x60, 0x84, 0x9c, 0x02, 0x60, 0x84, 0x9b, 0x02, 0x61, 0x84, - 0x9c, 0x02, 0x62, 0x84, 0x9b, 0x02, 0x63, 0x84, 0x9c, 0x02, 0x63, 0x84, - 0x9b, 0x02, 0x64, 0x84, 0x9c, 0x02, 0x65, 0x84, 0x9b, 0x02, 0x66, 0x84, - 0x9c, 0x02, 0x66, 0x84, 0x9b, 0x02, 0x67, 0x84, 0x9c, 0x02, 0x68, 0x84, - 0x9b, 0x02, 0x68, 0x84, 0x9c, 0x02, 0x69, 0x84, 0x9b, 0x02, 0x6a, 0x84, - 0x9c, 0x02, 0x6a, 0x84, 0x9b, 0x02, 0x6b, 0x84, 0x9c, 0x02, 0x6c, 0x84, - 0x9b, 0x02, 0x6c, 0x84, 0x9c, 0x02, 0x6d, 0x84, 0x9b, 0x02, 0x6e, 0x84, - 0x9c, 0x02, 0x6e, 0x84, 0x9b, 0x02, 0x6f, 0x84, 0x9c, 0x02, 0x70, 0x84, - 0x9b, 0x02, 0x70, 0x84, 0x9c, 0x02, 0x71, 0x84, 0x9b, 0x02, 0x72, 0x84, - 0x9c, 0x02, 0x72, 0x84, 0x9b, 0x02, 0x73, 0x84, 0x9c, 0x02, 0x73, 0x84, - 0x9b, 0x02, 0x74, 0x84, 0x9c, 0x02, 0x75, 0x84, 0x9b, 0x02, 0x75, 0x84, - 0x9c, 0x02, 0x76, 0x84, 0x9b, 0x02, 0x76, 0x84, 0x9c, 0x02, 0x77, 0x84, - 0x9b, 0x02, 0x78, 0x84, 0x9c, 0x02, 0x78, 0x84, 0x9b, 0x02, 0x79, 0x84, - 0x9c, 0x02, 0x79, 0x84, 0x9b, 0x02, 0x7a, 0x84, 0x9c, 0x02, 0x7a, 0x84, - 0x9b, 0x02, 0x7b, 0x84, 0x9c, 0x02, 0x7c, 0x84, 0x9b, 0x02, 0x7c, 0x84, - 0x9c, 0x02, 0x7d, 0x84, 0x9b, 0x02, 0x7d, 0x84, 0x9c, 0x02, 0x7e, 0x84, - 0x9b, 0x02, 0x7e, 0x84, 0x9c, 0x02, 0x7f, 0x84, 0x9b, 0x02, 0x7f, 0x84, - 0x9c, 0x02, 0x80, 0x84, 0x9b, 0x02, 0x81, 0x84, 0x9c, 0x02, 0x81, 0x84, - 0x9b, 0x02, 0x82, 0x84, 0x9c, 0x02, 0x82, 0x84, 0x9b, 0x02, 0x83, 0x84, - 0x9c, 0x02, 0x83, 0x84, 0x9b, 0x02, 0x84, 0x84, 0x9c, 0x02, 0x84, 0x84, - 0x9b, 0x02, 0x85, 0x84, 0x9c, 0x02, 0x85, 0x84, 0x9b, 0x02, 0x86, 0x84, - 0x9c, 0x02, 0x86, 0x84, 0x9b, 0x02, 0x87, 0x84, 0x9c, 0x02, 0x87, 0x84, - 0x9b, 0x02, 0x88, 0x84, 0x9c, 0x02, 0x88, 0x84, 0x9b, 0x02, 0x89, 0x84, - 0x9c, 0x02, 0x89, 0x84, 0x9b, 0x02, 0x8a, 0x84, 0x9c, 0x02, 0x8a, 0x84, - 0x9b, 0x02, 0x8b, 0x84, 0x9c, 0x02, 0x8b, 0x84, 0x9b, 0x02, 0x8c, 0x84, - 0x9c, 0x02, 0x8c, 0x84, 0x9b, 0x02, 0x8d, 0x84, 0x9c, 0x02, 0x8d, 0x84, - 0x9b, 0x02, 0x8e, 0x84, 0x9c, 0x02, 0x8e, 0x84, 0x9b, 0x02, 0x8e, 0x84, - 0x9c, 0x02, 0x8f, 0x84, 0x9b, 0x02, 0x8f, 0x84, 0x9c, 0x02, 0x90, 0x84, - 0x9b, 0x02, 0x90, 0x84, 0x9c, 0x02, 0x91, 0x84, 0x9b, 0x02, 0x91, 0x84, - 0x9c, 0x02, 0x92, 0x84, 0x9b, 0x02, 0x92, 0x84, 0x9c, 0x02, 0x93, 0x84, - 0x9b, 0x02, 0x93, 0x84, 0x9c, 0x02, 0x94, 0x84, 0x9b, 0x02, 0x94, 0x84, - 0x9c, 0x02, 0x94, 0x84, 0x9b, 0x02, 0x95, 0x84, 0x9c, 0x02, 0x95, 0x84, - 0x9b, 0x02, 0x96, 0x84, 0x9c, 0x02, 0x96, 0x84, 0x9b, 0x02, 0x97, 0x84, - 0x9c, 0x02, 0x97, 0x84, 0x9b, 0x02, 0x98, 0x84, 0x9c, 0x02, 0x98, 0x84, - 0x9b, 0x02, 0x98, 0x84, 0x9c, 0x02, 0x99, 0x84, 0x9b, 0x02, 0x99, 0x84, - 0x9c, 0x02, 0x9a, 0x84, 0x9b, 0x02, 0x9a, 0x84, 0x9c, 0x02, 0x9a, 0x84, - 0x9b, 0x02, 0x9b, 0x84, 0x9c, 0x02, 0x9b, 0x84, 0x9b, 0x02, 0x9c, 0x84, - 0x9c, 0x02, 0x9c, 0x84, 0x9c, 0x02, 0x9d, 0x84, 0x9d, 0x02, 0x9d, 0x84, - 0x9d, 0x02, 0x9d, 0x84, 0x9d, 0x02, 0x9e, 0x84, 0x9e, 0x02, 0x9e, 0x84, - 0x9e, 0x02, 0x9f, 0x84, 0x9f, 0x02, 0x9f, 0x84, 0x9e, 0x02, 0x9f, 0x84, - 0x9f, 0x02, 0xa0, 0x84, 0x9e, 0x02, 0xa0, 0x84, 0x9f, 0x02, 0xa1, 0x84, - 0x9e, 0x02, 0xa1, 0x84, 0x9f, 0x02, 0xa1, 0x84, 0x9e, 0x02, 0xa2, 0x84, - 0x9f, 0x02, 0xa2, 0x84, 0x9e, 0x02, 0xa3, 0x84, 0x9f, 0x02, 0xa3, 0x84, - 0x9e, 0x02, 0xa3, 0x84, 0x9f, 0x02, 0xa4, 0x84, 0x9e, 0x02, 0xa4, 0x84, - 0x9f, 0x02, 0xa5, 0x84, 0x9e, 0x02, 0xa5, 0x84, 0x9f, 0x02, 0xa5, 0x84, - 0x9e, 0x02, 0xa6, 0x84, 0x9f, 0x02, 0xa6, 0x84, 0x9e, 0x02, 0xa6, 0x84, - 0x9f, 0x02, 0xa7, 0x84, 0x9e, 0x02, 0xa7, 0x84, 0x9f, 0x02, 0xa8, 0x84, - 0x9e, 0x02, 0xa8, 0x84, 0x9f, 0x02, 0xa8, 0x84, 0x9e, 0x02, 0xa9, 0x84, - 0x9f, 0x02, 0xa9, 0x84, 0x9e, 0x02, 0xaa, 0x84, 0x9f, 0x02, 0xaa, 0x85, - 0xa2, 0x02, 0xaa, 0x84, 0x9f, 0x02, 0xab, 0x85, 0xa2, 0x02, 0xab, 0x85, - 0xa4, 0x02, 0xab, 0x85, 0xa2, 0x02, 0xac, 0x85, 0xa4, 0x02, 0xac, 0x85, - 0xa2, 0x02, 0xac, 0x85, 0xa4, 0x02, 0xad, 0x85, 0xa2, 0x02, 0xad, 0x85, - 0xa4, 0x02, 0xae, 0x86, 0xa6, 0x02, 0xae, 0x85, 0xa4, 0x02, 0xae, 0x86, - 0xa6, 0x02, 0xaf, 0x85, 0xa4, 0x02, 0xaf, 0x86, 0xa6, 0x02, 0xaf, 0x85, - 0xa4, 0x02, 0xb0, 0x86, 0xa6, 0x02, 0xb0, 0x86, 0xa6, 0x02, 0xb0, 0x86, - 0xa6, 0x02, 0xb1, 0x87, 0xaa, 0x02, 0xb1, 0x86, 0xa6, 0x02, 0xb2, 0x87, - 0xaa, 0x02, 0xb2, 0x86, 0xa6, 0x02, 0xb2, 0x87, 0xaa, 0x02, 0xb3, 0x87, - 0xa9, 0x02, 0xb3, 0x87, 0xaa, 0x02, 0xb3, 0x87, 0xa9, 0x02, 0xb4, 0x87, - 0xaa, 0x02, 0xb4, 0x88, 0xad, 0x02, 0xb4, 0x88, 0xad, 0x02, 0xb5, 0x88, - 0xad, 0x02, 0xb5, 0x88, 0xad, 0x02, 0xb5, 0x88, 0xad, 0x02, 0xb6, 0x88, - 0xad, 0x02, 0xb6, 0x88, 0xad, 0x02, 0xb6, 0x88, 0xad, 0x02, 0xb7, 0x88, - 0xad, 0x02, 0xb7, 0x88, 0xad, 0x02, 0xb7, 0x89, 0xb0, 0x02, 0xb8, 0x88, - 0xad, 0x02, 0xb8, 0x89, 0xb0, 0x02, 0xb8, 0x88, 0xad, 0x02, 0xb9, 0x89, - 0xb0, 0x02, 0xb9, 0x89, 0xb2, 0x02, 0xb9, 0x89, 0xb0, 0x02, 0xba, 0x89, - 0xb2, 0x02, 0xba, 0x89, 0xb0, 0x02, 0xba, 0x89, 0xb2, 0x02, 0xbb, 0x89, - 0xb0, 0x02, 0xbb, 0x89, 0xb2, 0x02, 0xbb, 0x89, 0xb0, 0x02, 0xbc, 0x89, - 0xb2, 0x02, 0xbc, 0x89, 0xb2, 0x02, 0xbc, 0x89, 0xb2, 0x02, 0xbd, 0x89, - 0xb2, 0x02, 0xbd, 0x89, 0xb2, 0x02, 0xbd, 0x8a, 0xb3, 0x02, 0xbe, 0x8a, - 0xb4, 0x02, 0xbe, 0x8b, 0xb7, 0x02, 0xbe, 0x8b, 0xb7, 0x02, 0xbf, 0x8b, - 0xb7, 0x02, 0xbf, 0x8b, 0xb7, 0x02, 0xbf, 0x8b, 0xb7, 0x02, 0xc0, 0x8b, - 0xb7, 0x02, 0xc0, 0x8b, 0xb7, 0x02, 0xc0, 0x8b, 0xb7, 0x02, 0xc1, 0x8b, - 0xb7, 0x02, 0xc1, 0x8b, 0xb7, 0x02, 0xc1, 0x8c, 0xba, 0x02, 0xc1, 0x8b, - 0xb7, 0x02, 0xc2, 0x8c, 0xba, 0x02, 0xc2, 0x8b, 0xb7, 0x02, 0xc2, 0x8c, - 0xba, 0x02, 0xc3, 0x8b, 0xb7, 0x02, 0xc3, 0x8c, 0xba, 0x02, 0xc3, 0x8c, - 0xba, 0x02, 0xc4, 0x8c, 0xba, 0x02, 0xc4, 0x8d, 0xbd, 0x02, 0xc4, 0x8c, - 0xba, 0x02, 0xc5, 0x8d, 0xbd, 0x02, 0xc5, 0x8c, 0xba, 0x02, 0xc5, 0x8d, - 0xbd, 0x02, 0xc6, 0x8d, 0xbf, 0x02, 0xc6, 0x8d, 0xbd, 0x02, 0xc6, 0x8d, - 0xbf, 0x02, 0xc6, 0x8d, 0xbd, 0x02, 0xc7, 0x8d, 0xbf, 0x02, 0xc7, 0x8e, - 0xc0, 0x02, 0xc7, 0x8d, 0xbf, 0x02, 0xc8, 0x8e, 0xc0, 0x02, 0xc8, 0x8d, - 0xbf, 0x02, 0xc8, 0x8e, 0xc0, 0x02, 0xc9, 0x8d, 0xbf, 0x02, 0xc9, 0x8e, - 0xc0, 0x02, 0xc9, 0x8d, 0xbf, 0x02, 0xc9, 0x8e, 0xc0, 0x02, 0xca, 0x8e, - 0xc0, 0x02, 0xca, 0x8e, 0xc0, 0x02, 0xca, 0x8e, 0xc3, 0x02, 0xcb, 0x8e, - 0xc0, 0x02, 0xcb, 0x8e, 0xc3, 0x02, 0xcb, 0x8e, 0xc0, 0x02, 0xcc, 0x8e, - 0xc3, 0x02, 0xcc, 0x8e, 0xc3, 0x02, 0xcc, 0x8e, 0xc3, 0x02, 0xcc, 0x8e, - 0xc3, 0x02, 0xcd, 0x8e, 0xc3, 0x02, 0xcd, 0x8f, 0xc6, 0x02, 0xcd, 0x8e, - 0xc3, 0x02, 0xce, 0x8f, 0xc6, 0x02, 0xce, 0x8e, 0xc3, 0x02, 0xce, 0x8f, - 0xc6, 0x02, 0xce, 0x8e, 0xc3, 0x02, 0xcf, 0x8f, 0xc6, 0x02, 0xcf, 0x8f, - 0xc6, 0x02, 0xcf, 0x8f, 0xc6, 0x02, 0xd0, 0x90, 0xc9, 0x02, 0xd0, 0x90, - 0xc9, 0x02, 0xd0, 0x90, 0xc9, 0x02, 0xd0, 0x90, 0xc9, 0x02, 0xd1, 0x90, - 0xc9, 0x02, 0xd1, 0x90, 0xc9, 0x02, 0xd1, 0x90, 0xc9, 0x02, 0xd2, 0x90, - 0xc9, 0x02, 0xd2, 0x90, 0xc9, 0x02, 0xd2, 0x90, 0xc9, 0x02, 0xd2, 0x91, - 0xcc, 0x02, 0xd3, 0x90, 0xc9, 0x02, 0xd3, 0x91, 0xcc, 0x02, 0xd3, 0x90, - 0xc9, 0x02, 0xd4, 0x91, 0xcc, 0x02, 0xd4, 0x91, 0xca, 0x02, 0xd4, 0x91, - 0xcc, 0x02, 0xd4, 0x91, 0xca, 0x02, 0xd5, 0x91, 0xcc, 0x02, 0xd5, 0x92, - 0xce, 0x02, 0xd5, 0x92, 0xce, 0x02, 0xd6, 0x92, 0xce, 0x02, 0xd6, 0x92, - 0xce, 0x02, 0xd6, 0x92, 0xce, 0x02, 0xd6, 0x92, 0xce, 0x02, 0xd7, 0x92, - 0xce, 0x02, 0xd7, 0x92, 0xce, 0x02, 0xd7, 0x92, 0xce, 0x02, 0xd7, 0x92, - 0xce, 0x02, 0xd8, 0x93, 0xd1, 0x02, 0xd8, 0x92, 0xce, 0x02, 0xd8, 0x93, - 0xd1, 0x02, 0xd9, 0x92, 0xce, 0x02, 0xd9, 0x93, 0xd1, 0x02, 0xd9, 0x92, - 0xce, 0x02, 0xd9, 0x93, 0xd1, 0x02, 0xda, 0x92, 0xce, 0x02, 0xda, 0x93, - 0xd1, 0x02, 0xda, 0x93, 0xd1, 0x02, 0xda, 0x93, 0xd1, 0x02, 0xdb, 0x94, - 0xd4, 0x02, 0xdb, 0x93, 0xd1, 0x02, 0xdb, 0x94, 0xd4, 0x02, 0xdb, 0x93, - 0xd1, 0x02, 0xdc, 0x94, 0xd4, 0x02, 0xdc, 0x94, 0xd5, 0x02, 0xdc, 0x94, - 0xd4, 0x02, 0xdd, 0x94, 0xd5, 0x02, 0xdd, 0x94, 0xd4, 0x02, 0xdd, 0x94, - 0xd5, 0x02, 0xdd, 0x95, 0xd6, 0x02, 0xde, 0x94, 0xd5, 0x02, 0xde, 0x95, - 0xd6, 0x02, 0xde, 0x94, 0xd5, 0x02, 0xde, 0x95, 0xd6, 0x02, 0xdf, 0x94, - 0xd5, 0x02, 0xdf, 0x95, 0xd6, 0x02, 0xdf, 0x94, 0xd5, 0x02, 0xdf, 0x95, - 0xd6, 0x02, 0xe0, 0x96, 0xd9, 0x02, 0xe0, 0x95, 0xd6, 0x02, 0xe0, 0x96, - 0xd9, 0x02, 0xe1, 0x95, 0xd6, 0x02, 0xe1, 0x96, 0xd9, 0x02, 0xe1, 0x95, - 0xd6, 0x02, 0xe1, 0x96, 0xd9, 0x02, 0xe2, 0x96, 0xd9, 0x02, 0xe2, 0x96, - 0xd9, 0x02, 0xe2, 0x97, 0xdb, 0x02, 0xe2, 0x96, 0xd9, 0x02, 0xe3, 0x97, - 0xdb, 0x02, 0xe3, 0x96, 0xd9, 0x02, 0xe3, 0x97, 0xdb, 0x02, 0xe3, 0x96, - 0xd9, 0x02, 0xe4, 0x97, 0xdb, 0x02, 0xe4, 0x96, 0xd9, 0x02, 0xe4, 0x97, - 0xdb, 0x02, 0xe4, 0x97, 0xdb, 0x02, 0xe5, 0x97, 0xdb, 0x02, 0xe5, 0x98, - 0xde, 0x02, 0xe5, 0x98, 0xde, 0x02, 0xe5, 0x98, 0xde, 0x02, 0xe6, 0x98, - 0xde, 0x02, 0xe6, 0x98, 0xde, 0x02, 0xe6, 0x98, 0xde, 0x02, 0xe6, 0x98, - 0xde, 0x02, 0xe7, 0x98, 0xde, 0x02, 0xe7, 0x98, 0xde, 0x02, 0xe7, 0x98, - 0xde, 0x02, 0xe7, 0x98, 0xe0, 0x02, 0xe8, 0x98, 0xde, 0x02, 0xe8, 0x98, - 0xe0, 0x02, 0xe8, 0x98, 0xde, 0x02, 0xe8, 0x98, 0xe0, 0x02, 0xe9, 0x98, - 0xdf, 0x02, 0xe9, 0x98, 0xe0, 0x02, 0xe9, 0x98, 0xdf, 0x02, 0xe9, 0x98, - 0xe0, 0x02, 0xea, 0x99, 0xe3, 0x02, 0xea, 0x98, 0xe0, 0x02, 0xea, 0x99, - 0xe3, 0x02, 0xea, 0x98, 0xe0, 0x02, 0xeb, 0x99, 0xe3, 0x02, 0xeb, 0x98, - 0xe0, 0x02, 0xeb, 0x99, 0xe3, 0x02, 0xeb, 0x99, 0xe2, 0x02, 0xec, 0x99, - 0xe3, 0x02, 0xec, 0x9a, 0xe5, 0x02, 0xec, 0x9a, 0xe5, 0x02, 0xec, 0x9a, - 0xe5, 0x02, 0xec, 0x9a, 0xe5, 0x02, 0xed, 0x9a, 0xe5, 0x02, 0xed, 0x9a, - 0xe5, 0x02, 0xed, 0x9a, 0xe5, 0x02, 0xed, 0x9a, 0xe5, 0x02, 0xee, 0x9a, - 0xe5, 0x02, 0xee, 0x9a, 0xe5, 0x02, 0xee, 0x9b, 0xe7, 0x02, 0xee, 0x9a, - 0xe5, 0x02, 0xef, 0x9b, 0xe7, 0x02, 0xef, 0x9a, 0xe5, 0x02, 0xef, 0x9b, - 0xe7, 0x02, 0xef, 0x9a, 0xe5, 0x02, 0xf0, 0x9b, 0xe7, 0x02, 0xf0, 0x9b, - 0xe9, 0x02, 0xf0, 0x9b, 0xe7, 0x02, 0xf0, 0x9b, 0xe9, 0x02, 0xf1, 0x9c, - 0xea, 0x02, 0xf1, 0x9b, 0xe9, 0x02, 0xf1, 0x9c, 0xea, 0x02, 0xf1, 0x9b, - 0xe9, 0x02, 0xf2, 0x9c, 0xea, 0x02, 0xf2, 0x9b, 0xe9, 0x02, 0xf2, 0x9c, - 0xea, 0x02, 0xf2, 0x9b, 0xe9, 0x02, 0xf2, 0x9c, 0xea, 0x02, 0xf3, 0x9b, - 0xe9, 0x02, 0xf3, 0x9c, 0xea, 0x02, 0xf3, 0x9d, 0xec, 0x02, 0xf3, 0x9c, - 0xea, 0x02, 0xf4, 0x9d, 0xec, 0x02, 0xf4, 0x9c, 0xea, 0x02, 0xf4, 0x9d, - 0xec, 0x02, 0xf4, 0x9c, 0xea, 0x02, 0xf5, 0x9d, 0xec, 0x02, 0xf5, 0x9d, - 0xec, 0x02, 0xf5, 0x9d, 0xec, 0x02, 0xf5, 0x9d, 0xee, 0x02, 0xf5, 0x9d, - 0xec, 0x02, 0xf6, 0x9d, 0xee, 0x02, 0xf6, 0x9d, 0xec, 0x02, 0xf6, 0x9d, - 0xee, 0x02, 0xf6, 0x9d, 0xec, 0x02, 0xf7, 0x9d, 0xee, 0x02, 0xf7, 0x9d, - 0xec, 0x02, 0xf7, 0x9d, 0xee, 0x02, 0xf7, 0x9e, 0xf0, 0x02, 0xf8, 0x9e, - 0xf1, 0x02, 0xf8, 0x9e, 0xf0, 0x02, 0xf8, 0x9e, 0xf1, 0x02, 0xf8, 0x9e, - 0xf0, 0x02, 0xf8, 0x9e, 0xf1, 0x02, 0xf9, 0x9e, 0xf0, 0x02, 0xf9, 0x9e, - 0xf1, 0x02, 0xf9, 0x9e, 0xf0, 0x02, 0xf9, 0x9e, 0xf1, 0x02, 0xfa, 0x9f, - 0xf3, 0x02, 0xfa, 0x9e, 0xf1, 0x02, 0xfa, 0x9f, 0xf3, 0x02, 0xfa, 0x9e, - 0xf1, 0x02, 0xfa, 0x9f, 0xf3, 0x02, 0xfb, 0x9e, 0xf1, 0x02, 0xfb, 0x9f, - 0xf3, 0x02, 0xfb, 0x9f, 0xf2, 0x02, 0xfb, 0x9f, 0xf3, 0x02, 0xfc, 0x9f, - 0xf2, 0x02, 0xfc, 0x9f, 0xf3, 0x02, 0xfc, 0xa0, 0xf5, 0x02, 0xfc, 0x9f, - 0xf3, 0x02, 0xfc, 0xa0, 0xf5, 0x02, 0xfd, 0x9f, 0xf3, 0x02, 0xfd, 0xa0, - 0xf5, 0x02, 0xfd, 0x9f, 0xf3, 0x02, 0xfd, 0xa0, 0xf5, 0x02, 0xfe, 0xa0, - 0xf5, 0x02, 0xfe, 0xa0, 0xf5, 0x02, 0xfe, 0xa1, 0xf7, 0x02, 0xfe, 0xa1, - 0xf7, 0x02, 0xfe, 0xa1, 0xf7, 0x02, 0xff, 0xa1, 0xf7, 0x02, 0xff, 0xa1, - 0xf7, 0x02, 0x03, 0x83, 0x9b, 0x02, 0x0a, 0x83, 0x9b, 0x02, 0x0f, 0x83, - 0x9b, 0x02, 0x14, 0x83, 0x9b, 0x02, 0x17, 0x83, 0x9b, 0x02, 0x1b, 0x83, - 0x9b, 0x02, 0x1e, 0x83, 0x9b, 0x02, 0x20, 0x83, 0x9c, 0x02, 0x23, 0x83, - 0x9b, 0x02, 0x25, 0x83, 0x9c, 0x02, 0x27, 0x83, 0x9b, 0x02, 0x29, 0x83, - 0x9c, 0x02, 0x2b, 0x83, 0x9b, 0x02, 0x2d, 0x83, 0x9c, 0x02, 0x2f, 0x83, - 0x9b, 0x02, 0x31, 0x83, 0x9c, 0x02, 0x32, 0x83, 0x9b, 0x02, 0x34, 0x83, - 0x9c, 0x02, 0x35, 0x83, 0x9b, 0x02, 0x37, 0x83, 0x9c, 0x02, 0x38, 0x83, - 0x9b, 0x02, 0x3a, 0x83, 0x9c, 0x02, 0x3b, 0x83, 0x9b, 0x02, 0x3c, 0x83, - 0x9c, 0x02, 0x3e, 0x83, 0x9b, 0x02, 0x3f, 0x83, 0x9c, 0x02, 0x40, 0x83, - 0x9b, 0x02, 0x42, 0x83, 0x9c, 0x02, 0x43, 0x83, 0x9b, 0x02, 0x44, 0x83, - 0x9c, 0x02, 0x45, 0x83, 0x9b, 0x02, 0x46, 0x83, 0x9c, 0x02, 0x47, 0x83, - 0x9b, 0x02, 0x48, 0x83, 0x9c, 0x02, 0x49, 0x83, 0x9b, 0x02, 0x4a, 0x83, - 0x9c, 0x02, 0x4b, 0x83, 0x9b, 0x02, 0x4c, 0x83, 0x9c, 0x02, 0x4d, 0x83, - 0x9b, 0x02, 0x4e, 0x83, 0x9c, 0x02, 0x4f, 0x83, 0x9b, 0x02, 0x50, 0x83, - 0x9c, 0x02, 0x51, 0x83, 0x9b, 0x02, 0x52, 0x83, 0x9c, 0x02, 0x53, 0x83, - 0x9b, 0x02, 0x54, 0x83, 0x9c, 0x02, 0x55, 0x83, 0x9b, 0x02, 0x56, 0x83, - 0x9c, 0x02, 0x57, 0x83, 0x9b, 0x02, 0x58, 0x83, 0x9c, 0x02, 0x58, 0x83, - 0x9b, 0x02, 0x59, 0x83, 0x9c, 0x02, 0x5a, 0x83, 0x9b, 0x02, 0x5b, 0x83, - 0x9c, 0x02, 0x5c, 0x83, 0x9b, 0x02, 0x5d, 0x83, 0x9c, 0x02, 0x5d, 0x83, - 0x9b, 0x02, 0x5e, 0x83, 0x9c, 0x02, 0x5f, 0x83, 0x9b, 0x02, 0x60, 0x83, - 0x9c, 0x02, 0x60, 0x83, 0x9b, 0x02, 0x61, 0x83, 0x9c, 0x02, 0x62, 0x83, - 0x9b, 0x02, 0x63, 0x83, 0x9c, 0x02, 0x63, 0x83, 0x9b, 0x02, 0x64, 0x83, - 0x9c, 0x02, 0x65, 0x83, 0x9b, 0x02, 0x66, 0x83, 0x9c, 0x02, 0x66, 0x83, - 0x9b, 0x02, 0x67, 0x83, 0x9c, 0x02, 0x68, 0x83, 0x9b, 0x02, 0x68, 0x83, - 0x9c, 0x02, 0x69, 0x83, 0x9b, 0x02, 0x6a, 0x83, 0x9c, 0x02, 0x6a, 0x83, - 0x9b, 0x02, 0x6b, 0x83, 0x9c, 0x02, 0x6c, 0x83, 0x9b, 0x02, 0x6c, 0x83, - 0x9c, 0x02, 0x6d, 0x83, 0x9b, 0x02, 0x6e, 0x83, 0x9c, 0x02, 0x6e, 0x83, - 0x9b, 0x02, 0x6f, 0x83, 0x9c, 0x02, 0x70, 0x83, 0x9b, 0x02, 0x70, 0x83, - 0x9c, 0x02, 0x71, 0x83, 0x9b, 0x02, 0x72, 0x83, 0x9c, 0x02, 0x72, 0x83, - 0x9b, 0x02, 0x73, 0x83, 0x9c, 0x02, 0x73, 0x83, 0x9b, 0x02, 0x74, 0x83, - 0x9c, 0x02, 0x75, 0x83, 0x9b, 0x02, 0x75, 0x83, 0x9c, 0x02, 0x76, 0x83, - 0x9b, 0x02, 0x76, 0x83, 0x9c, 0x02, 0x77, 0x83, 0x9b, 0x02, 0x78, 0x83, - 0x9c, 0x02, 0x78, 0x83, 0x9b, 0x02, 0x79, 0x83, 0x9c, 0x02, 0x79, 0x83, - 0x9b, 0x02, 0x7a, 0x83, 0x9c, 0x02, 0x7a, 0x83, 0x9b, 0x02, 0x7b, 0x83, - 0x9c, 0x02, 0x7c, 0x83, 0x9b, 0x02, 0x7c, 0x83, 0x9c, 0x02, 0x7d, 0x83, - 0x9b, 0x02, 0x7d, 0x83, 0x9c, 0x02, 0x7e, 0x83, 0x9b, 0x02, 0x7e, 0x83, - 0x9c, 0x02, 0x7f, 0x83, 0x9b, 0x02, 0x7f, 0x83, 0x9c, 0x02, 0x80, 0x83, - 0x9b, 0x02, 0x81, 0x83, 0x9c, 0x02, 0x81, 0x83, 0x9b, 0x02, 0x82, 0x83, - 0x9c, 0x02, 0x82, 0x83, 0x9b, 0x02, 0x83, 0x83, 0x9c, 0x02, 0x83, 0x83, - 0x9b, 0x02, 0x84, 0x83, 0x9c, 0x02, 0x84, 0x83, 0x9b, 0x02, 0x85, 0x83, - 0x9c, 0x02, 0x85, 0x83, 0x9b, 0x02, 0x86, 0x83, 0x9c, 0x02, 0x86, 0x83, - 0x9b, 0x02, 0x87, 0x83, 0x9c, 0x02, 0x87, 0x83, 0x9b, 0x02, 0x88, 0x83, - 0x9c, 0x02, 0x88, 0x83, 0x9b, 0x02, 0x89, 0x83, 0x9c, 0x02, 0x89, 0x83, - 0x9b, 0x02, 0x8a, 0x83, 0x9c, 0x02, 0x8a, 0x83, 0x9b, 0x02, 0x8b, 0x83, - 0x9c, 0x02, 0x8b, 0x83, 0x9b, 0x02, 0x8c, 0x83, 0x9c, 0x02, 0x8c, 0x83, - 0x9b, 0x02, 0x8d, 0x83, 0x9c, 0x02, 0x8d, 0x83, 0x9b, 0x02, 0x8e, 0x83, - 0x9c, 0x02, 0x8e, 0x83, 0x9b, 0x02, 0x8e, 0x83, 0x9c, 0x02, 0x8f, 0x83, - 0x9b, 0x02, 0x8f, 0x83, 0x9c, 0x02, 0x90, 0x83, 0x9b, 0x02, 0x90, 0x83, - 0x9c, 0x02, 0x91, 0x83, 0x9b, 0x02, 0x91, 0x83, 0x9c, 0x02, 0x92, 0x83, - 0x9b, 0x02, 0x92, 0x83, 0x9c, 0x02, 0x93, 0x83, 0x9b, 0x02, 0x93, 0x83, - 0x9c, 0x02, 0x94, 0x83, 0x9b, 0x02, 0x94, 0x83, 0x9c, 0x02, 0x94, 0x83, - 0x9b, 0x02, 0x95, 0x83, 0x9c, 0x02, 0x95, 0x83, 0x9b, 0x02, 0x96, 0x83, - 0x9c, 0x02, 0x96, 0x83, 0x9b, 0x02, 0x97, 0x83, 0x9c, 0x02, 0x97, 0x83, - 0x9b, 0x02, 0x98, 0x83, 0x9c, 0x02, 0x98, 0x83, 0x9b, 0x02, 0x98, 0x83, - 0x9c, 0x02, 0x99, 0x83, 0x9b, 0x02, 0x99, 0x83, 0x9c, 0x02, 0x9a, 0x83, - 0x9b, 0x02, 0x9a, 0x83, 0x9c, 0x02, 0x9a, 0x83, 0x9b, 0x02, 0x9b, 0x83, - 0x9c, 0x02, 0x9b, 0x83, 0x9b, 0x02, 0x9c, 0x83, 0x9c, 0x02, 0x9c, 0x83, - 0x9c, 0x02, 0x9d, 0x83, 0x9d, 0x02, 0x9d, 0x83, 0x9c, 0x02, 0x9d, 0x83, - 0x9d, 0x02, 0x9e, 0x83, 0x9c, 0x02, 0x9e, 0x83, 0x9d, 0x02, 0x9f, 0x83, - 0x9c, 0x02, 0x9f, 0x83, 0x9d, 0x02, 0x9f, 0x83, 0x9c, 0x02, 0xa0, 0x83, - 0x9d, 0x02, 0xa0, 0x83, 0x9c, 0x02, 0xa1, 0x83, 0x9d, 0x02, 0xa1, 0x83, - 0x9c, 0x02, 0xa1, 0x83, 0x9d, 0x02, 0xa2, 0x83, 0x9c, 0x02, 0xa2, 0x83, - 0x9d, 0x02, 0xa3, 0x83, 0x9c, 0x02, 0xa3, 0x83, 0x9d, 0x02, 0xa3, 0x83, - 0x9c, 0x02, 0xa4, 0x83, 0x9d, 0x02, 0xa4, 0x83, 0x9c, 0x02, 0xa5, 0x83, - 0x9d, 0x02, 0xa5, 0x83, 0x9c, 0x02, 0xa5, 0x83, 0x9d, 0x02, 0xa6, 0x83, - 0x9c, 0x02, 0xa6, 0x83, 0x9d, 0x02, 0xa6, 0x83, 0x9c, 0x02, 0xa7, 0x83, - 0x9d, 0x02, 0xa7, 0x84, 0xa0, 0x02, 0xa8, 0x84, 0xa1, 0x02, 0xa8, 0x84, - 0xa0, 0x02, 0xa8, 0x84, 0xa1, 0x02, 0xa9, 0x84, 0xa0, 0x02, 0xa9, 0x84, - 0xa1, 0x02, 0xaa, 0x84, 0xa0, 0x02, 0xaa, 0x84, 0xa1, 0x02, 0xaa, 0x84, - 0xa0, 0x02, 0xab, 0x84, 0xa1, 0x02, 0xab, 0x85, 0xa4, 0x02, 0xab, 0x84, - 0xa1, 0x02, 0xac, 0x85, 0xa4, 0x02, 0xac, 0x84, 0xa1, 0x02, 0xac, 0x85, - 0xa4, 0x02, 0xad, 0x84, 0xa1, 0x02, 0xad, 0x85, 0xa4, 0x02, 0xae, 0x85, - 0xa4, 0x02, 0xae, 0x85, 0xa4, 0x02, 0xae, 0x85, 0xa4, 0x02, 0xaf, 0x85, - 0xa4, 0x02, 0xaf, 0x86, 0xa8, 0x02, 0xaf, 0x85, 0xa4, 0x02, 0xb0, 0x86, - 0xa8, 0x02, 0xb0, 0x85, 0xa4, 0x02, 0xb0, 0x86, 0xa8, 0x02, 0xb1, 0x86, - 0xa7, 0x02, 0xb1, 0x86, 0xa8, 0x02, 0xb2, 0x86, 0xa7, 0x02, 0xb2, 0x86, - 0xa8, 0x02, 0xb2, 0x87, 0xab, 0x02, 0xb3, 0x87, 0xab, 0x02, 0xb3, 0x87, - 0xab, 0x02, 0xb3, 0x87, 0xab, 0x02, 0xb4, 0x87, 0xab, 0x02, 0xb4, 0x87, - 0xab, 0x02, 0xb4, 0x87, 0xab, 0x02, 0xb5, 0x87, 0xab, 0x02, 0xb5, 0x87, - 0xab, 0x02, 0xb5, 0x87, 0xab, 0x02, 0xb6, 0x88, 0xaf, 0x02, 0xb6, 0x87, - 0xab, 0x02, 0xb6, 0x88, 0xaf, 0x02, 0xb7, 0x87, 0xab, 0x02, 0xb7, 0x88, - 0xaf, 0x02, 0xb7, 0x87, 0xab, 0x02, 0xb8, 0x88, 0xaf, 0x02, 0xb8, 0x88, - 0xae, 0x02, 0xb8, 0x88, 0xaf, 0x02, 0xb9, 0x89, 0xb2, 0x02, 0xb9, 0x89, - 0xb2, 0x02, 0xb9, 0x89, 0xb2, 0x02, 0xba, 0x89, 0xb2, 0x02, 0xba, 0x89, - 0xb2, 0x02, 0xba, 0x89, 0xb2, 0x02, 0xbb, 0x89, 0xb2, 0x02, 0xbb, 0x89, - 0xb2, 0x02, 0xbb, 0x89, 0xb2, 0x02, 0xbc, 0x89, 0xb2, 0x02, 0xbc, 0x89, - 0xb2, 0x02, 0xbc, 0x89, 0xb2, 0x02, 0xbd, 0x8a, 0xb5, 0x02, 0xbd, 0x89, - 0xb2, 0x02, 0xbd, 0x8a, 0xb5, 0x02, 0xbe, 0x89, 0xb2, 0x02, 0xbe, 0x8a, - 0xb5, 0x02, 0xbe, 0x8a, 0xb5, 0x02, 0xbf, 0x8a, 0xb5, 0x02, 0xbf, 0x8a, - 0xb5, 0x02, 0xbf, 0x8a, 0xb5, 0x02, 0xc0, 0x8b, 0xb8, 0x02, 0xc0, 0x8a, - 0xb5, 0x02, 0xc0, 0x8b, 0xb8, 0x02, 0xc1, 0x8a, 0xb5, 0x02, 0xc1, 0x8b, - 0xb8, 0x02, 0xc1, 0x8b, 0xb8, 0x02, 0xc1, 0x8b, 0xb8, 0x02, 0xc2, 0x8b, - 0xb8, 0x02, 0xc2, 0x8b, 0xb8, 0x02, 0xc2, 0x8c, 0xbb, 0x02, 0xc3, 0x8c, - 0xbc, 0x02, 0xc3, 0x8c, 0xbb, 0x02, 0xc3, 0x8c, 0xbc, 0x02, 0xc4, 0x8c, - 0xbb, 0x02, 0xc4, 0x8c, 0xbc, 0x02, 0xc4, 0x8c, 0xbb, 0x02, 0xc5, 0x8c, - 0xbc, 0x02, 0xc5, 0x8c, 0xbb, 0x02, 0xc5, 0x8c, 0xbc, 0x02, 0xc6, 0x8d, - 0xbf, 0x02, 0xc6, 0x8c, 0xbc, 0x02, 0xc6, 0x8d, 0xbf, 0x02, 0xc6, 0x8c, - 0xbc, 0x02, 0xc7, 0x8d, 0xbf, 0x02, 0xc7, 0x8c, 0xbc, 0x02, 0xc7, 0x8d, - 0xbf, 0x02, 0xc8, 0x8d, 0xbe, 0x02, 0xc8, 0x8d, 0xbf, 0x02, 0xc8, 0x8e, - 0xc1, 0x02, 0xc9, 0x8d, 0xbf, 0x02, 0xc9, 0x8e, 0xc1, 0x02, 0xc9, 0x8d, - 0xbf, 0x02, 0xc9, 0x8e, 0xc1, 0x02, 0xca, 0x8d, 0xbf, 0x02, 0xca, 0x8e, - 0xc1, 0x02, 0xca, 0x8e, 0xc1, 0x02, 0xcb, 0x8e, 0xc1, 0x02, 0xcb, 0x8e, - 0xc1, 0x02, 0xcb, 0x8e, 0xc1, 0x02, 0xcc, 0x8f, 0xc4, 0x02, 0xcc, 0x8f, - 0xc5, 0x02, 0xcc, 0x8f, 0xc4, 0x02, 0xcc, 0x8f, 0xc5, 0x02, 0xcd, 0x8f, - 0xc4, 0x02, 0xcd, 0x8f, 0xc5, 0x02, 0xcd, 0x8f, 0xc4, 0x02, 0xce, 0x8f, - 0xc5, 0x02, 0xce, 0x8f, 0xc4, 0x02, 0xce, 0x8f, 0xc5, 0x02, 0xce, 0x90, - 0xc7, 0x02, 0xcf, 0x8f, 0xc5, 0x02, 0xcf, 0x90, 0xc7, 0x02, 0xcf, 0x8f, - 0xc5, 0x02, 0xd0, 0x90, 0xc7, 0x02, 0xd0, 0x8f, 0xc5, 0x02, 0xd0, 0x90, - 0xc7, 0x02, 0xd0, 0x90, 0xc7, 0x02, 0xd1, 0x90, 0xc7, 0x02, 0xd1, 0x91, - 0xca, 0x02, 0xd1, 0x90, 0xc7, 0x02, 0xd2, 0x91, 0xca, 0x02, 0xd2, 0x90, - 0xc7, 0x02, 0xd2, 0x91, 0xca, 0x02, 0xd2, 0x90, 0xc7, 0x02, 0xd3, 0x91, - 0xca, 0x02, 0xd3, 0x91, 0xca, 0x02, 0xd3, 0x91, 0xca, 0x02, 0xd4, 0x92, - 0xcd, 0x02, 0xd4, 0x92, 0xcd, 0x02, 0xd4, 0x92, 0xcd, 0x02, 0xd4, 0x92, - 0xcd, 0x02, 0xd5, 0x92, 0xcd, 0x02, 0xd5, 0x92, 0xcd, 0x02, 0xd5, 0x92, - 0xcd, 0x02, 0xd6, 0x92, 0xcd, 0x02, 0xd6, 0x92, 0xcd, 0x02, 0xd6, 0x92, - 0xcd, 0x02, 0xd6, 0x93, 0xd0, 0x02, 0xd7, 0x92, 0xcd, 0x02, 0xd7, 0x93, - 0xd0, 0x02, 0xd7, 0x92, 0xcd, 0x02, 0xd7, 0x93, 0xd0, 0x02, 0xd8, 0x92, - 0xcd, 0x02, 0xd8, 0x93, 0xd0, 0x02, 0xd8, 0x93, 0xcf, 0x02, 0xd9, 0x93, - 0xd0, 0x02, 0xd9, 0x94, 0xd2, 0x02, 0xd9, 0x94, 0xd2, 0x02, 0xd9, 0x94, - 0xd2, 0x02, 0xda, 0x94, 0xd2, 0x02, 0xda, 0x94, 0xd2, 0x02, 0xda, 0x94, - 0xd2, 0x02, 0xda, 0x94, 0xd2, 0x02, 0xdb, 0x94, 0xd2, 0x02, 0xdb, 0x94, - 0xd2, 0x02, 0xdb, 0x94, 0xd2, 0x02, 0xdb, 0x94, 0xd2, 0x02, 0xdc, 0x94, - 0xd2, 0x02, 0xdc, 0x94, 0xd5, 0x02, 0xdc, 0x94, 0xd2, 0x02, 0xdd, 0x94, - 0xd5, 0x02, 0xdd, 0x94, 0xd2, 0x02, 0xdd, 0x94, 0xd5, 0x02, 0xdd, 0x94, - 0xd2, 0x02, 0xde, 0x94, 0xd5, 0x02, 0xde, 0x94, 0xd5, 0x02, 0xde, 0x94, - 0xd5, 0x02, 0xde, 0x95, 0xd7, 0x02, 0xdf, 0x94, 0xd5, 0x02, 0xdf, 0x95, - 0xd7, 0x02, 0xdf, 0x94, 0xd5, 0x02, 0xdf, 0x95, 0xd7, 0x02, 0xe0, 0x94, - 0xd5, 0x02, 0xe0, 0x95, 0xd7, 0x02, 0xe0, 0x95, 0xd7, 0x02, 0xe1, 0x95, - 0xd7, 0x02, 0xe1, 0x96, 0xda, 0x02, 0xe1, 0x96, 0xda, 0x02, 0xe1, 0x96, - 0xda, 0x02, 0xe2, 0x96, 0xda, 0x02, 0xe2, 0x96, 0xda, 0x02, 0xe2, 0x96, - 0xda, 0x02, 0xe2, 0x96, 0xda, 0x02, 0xe3, 0x96, 0xda, 0x02, 0xe3, 0x96, - 0xda, 0x02, 0xe3, 0x96, 0xda, 0x02, 0xe3, 0x97, 0xdd, 0x02, 0xe4, 0x96, - 0xda, 0x02, 0xe4, 0x97, 0xdd, 0x02, 0xe4, 0x96, 0xda, 0x02, 0xe4, 0x97, - 0xdd, 0x02, 0xe5, 0x96, 0xda, 0x02, 0xe5, 0x97, 0xdd, 0x02, 0xe5, 0x96, - 0xda, 0x02, 0xe5, 0x97, 0xdd, 0x02, 0xe6, 0x98, 0xdf, 0x02, 0xe6, 0x97, - 0xdd, 0x02, 0xe6, 0x98, 0xdf, 0x02, 0xe6, 0x97, 0xdd, 0x02, 0xe7, 0x98, - 0xdf, 0x02, 0xe7, 0x97, 0xdd, 0x02, 0xe7, 0x98, 0xdf, 0x02, 0xe7, 0x97, - 0xdd, 0x02, 0xe8, 0x98, 0xdf, 0x02, 0xe8, 0x98, 0xdf, 0x02, 0xe8, 0x98, - 0xdf, 0x02, 0xe8, 0x99, 0xe1, 0x02, 0xe9, 0x99, 0xe2, 0x02, 0xe9, 0x99, - 0xe1, 0x02, 0xe9, 0x99, 0xe2, 0x02, 0xe9, 0x99, 0xe1, 0x02, 0xea, 0x99, - 0xe2, 0x02, 0xea, 0x99, 0xe1, 0x02, 0xea, 0x99, 0xe2, 0x02, 0xea, 0x99, - 0xe1, 0x02, 0xeb, 0x99, 0xe2, 0x02, 0xeb, 0x9a, 0xe4, 0x02, 0xeb, 0x99, - 0xe2, 0x02, 0xeb, 0x9a, 0xe4, 0x02, 0xec, 0x99, 0xe2, 0x02, 0xec, 0x9a, - 0xe4, 0x02, 0xec, 0x99, 0xe2, 0x02, 0xec, 0x9a, 0xe4, 0x02, 0xec, 0x9a, - 0xe4, 0x02, 0xed, 0x9a, 0xe4, 0x02, 0xed, 0x9a, 0xe6, 0x02, 0xed, 0x9a, - 0xe4, 0x02, 0xed, 0x9a, 0xe6, 0x02, 0xee, 0x9a, 0xe4, 0x02, 0xee, 0x9a, - 0xe6, 0x02, 0xee, 0x9a, 0xe4, 0x02, 0xee, 0x9a, 0xe6, 0x02, 0xef, 0x9a, - 0xe4, 0x02, 0xef, 0x9a, 0xe6, 0x02, 0xef, 0x9b, 0xe8, 0x02, 0xef, 0x9b, - 0xe9, 0x02, 0xf0, 0x9b, 0xe8, 0x02, 0xf0, 0x9b, 0xe9, 0x02, 0xf0, 0x9b, - 0xe8, 0x02, 0xf0, 0x9b, 0xe9, 0x02, 0xf1, 0x9b, 0xe8, 0x02, 0xf1, 0x9b, - 0xe9, 0x02, 0xf1, 0x9b, 0xe8, 0x02, 0xf1, 0x9b, 0xe9, 0x02, 0xf2, 0x9b, - 0xe8, 0x02, 0xf2, 0x9b, 0xe9, 0x02, 0xf2, 0x9c, 0xeb, 0x02, 0xf2, 0x9b, - 0xe9, 0x02, 0xf2, 0x9c, 0xeb, 0x02, 0xf3, 0x9b, 0xe9, 0x02, 0xf3, 0x9c, - 0xeb, 0x02, 0xf3, 0x9b, 0xe9, 0x02, 0xf3, 0x9c, 0xeb, 0x02, 0xf4, 0x9c, - 0xeb, 0x02, 0xf4, 0x9c, 0xeb, 0x02, 0xf4, 0x9d, 0xed, 0x02, 0xf4, 0x9d, - 0xed, 0x02, 0xf5, 0x9d, 0xed, 0x02, 0xf5, 0x9d, 0xed, 0x02, 0xf5, 0x9d, - 0xed, 0x02, 0xf5, 0x9d, 0xed, 0x02, 0xf5, 0x9d, 0xed, 0x02, 0xf6, 0x9d, - 0xed, 0x02, 0xf6, 0x9d, 0xed, 0x02, 0xf6, 0x9d, 0xed, 0x02, 0xf6, 0x9e, - 0xef, 0x02, 0xf7, 0x9d, 0xed, 0x02, 0xf7, 0x9e, 0xef, 0x02, 0xf7, 0x9d, - 0xed, 0x02, 0xf7, 0x9e, 0xef, 0x02, 0xf8, 0x9d, 0xed, 0x02, 0xf8, 0x9e, - 0xef, 0x02, 0xf8, 0x9d, 0xed, 0x02, 0xf8, 0x9e, 0xef, 0x02, 0xf8, 0x9f, - 0xf2, 0x02, 0xf9, 0x9e, 0xef, 0x02, 0xf9, 0x9f, 0xf2, 0x02, 0xf9, 0x9e, - 0xef, 0x02, 0xf9, 0x9f, 0xf2, 0x02, 0xfa, 0x9e, 0xef, 0x02, 0xfa, 0x9f, - 0xf2, 0x02, 0xfa, 0x9e, 0xef, 0x02, 0xfa, 0x9f, 0xf2, 0x02, 0xfa, 0x9f, - 0xf4, 0x02, 0xfb, 0x9f, 0xf4, 0x02, 0xfb, 0x9f, 0xf4, 0x02, 0xfb, 0x9f, - 0xf4, 0x02, 0xfb, 0x9f, 0xf4, 0x02, 0xfc, 0x9f, 0xf4, 0x02, 0xfc, 0x9f, - 0xf4, 0x02, 0xfc, 0x9f, 0xf4, 0x02, 0xfc, 0x9f, 0xf4, 0x02, 0xfc, 0x9f, - 0xf4, 0x02, 0xfd, 0x9f, 0xf4, 0x02, 0xfd, 0x9f, 0xf4, 0x02, 0xfd, 0xa0, - 0xf6, 0x02, 0xfd, 0x9f, 0xf4, 0x02, 0xfe, 0xa0, 0xf6, 0x02, 0xfe, 0xa0, - 0xf6, 0x02, 0xfe, 0xa0, 0xf6, 0x02, 0xfe, 0xa0, 0xf6, 0x02, 0xfe, 0xa0, - 0xf6, 0x02, 0xff, 0xa0, 0xf6, 0x02, 0xff, 0xa0, 0xf6, 0x02, 0x03, 0x84, - 0x9b, 0x03, 0x0a, 0x84, 0x9b, 0x03, 0x0f, 0x84, 0x9b, 0x03, 0x14, 0x84, - 0x9b, 0x03, 0x17, 0x84, 0x9b, 0x03, 0x1b, 0x84, 0x9b, 0x03, 0x1e, 0x84, - 0x9b, 0x03, 0x20, 0x84, 0x9c, 0x03, 0x23, 0x84, 0x9b, 0x03, 0x25, 0x84, - 0x9c, 0x03, 0x27, 0x84, 0x9b, 0x03, 0x29, 0x84, 0x9c, 0x03, 0x2b, 0x84, - 0x9b, 0x03, 0x2d, 0x84, 0x9c, 0x03, 0x2f, 0x84, 0x9b, 0x03, 0x31, 0x84, - 0x9c, 0x03, 0x32, 0x84, 0x9b, 0x03, 0x34, 0x84, 0x9c, 0x03, 0x35, 0x84, - 0x9b, 0x03, 0x37, 0x84, 0x9c, 0x03, 0x38, 0x84, 0x9b, 0x03, 0x3a, 0x84, - 0x9c, 0x03, 0x3b, 0x84, 0x9b, 0x03, 0x3c, 0x84, 0x9c, 0x03, 0x3e, 0x84, - 0x9b, 0x03, 0x3f, 0x84, 0x9c, 0x03, 0x40, 0x84, 0x9b, 0x03, 0x42, 0x84, - 0x9c, 0x03, 0x43, 0x84, 0x9b, 0x03, 0x44, 0x84, 0x9c, 0x03, 0x45, 0x84, - 0x9b, 0x03, 0x46, 0x84, 0x9c, 0x03, 0x47, 0x84, 0x9b, 0x03, 0x48, 0x84, - 0x9c, 0x03, 0x49, 0x84, 0x9b, 0x03, 0x4a, 0x84, 0x9c, 0x03, 0x4b, 0x84, - 0x9b, 0x03, 0x4c, 0x84, 0x9c, 0x03, 0x4d, 0x84, 0x9b, 0x03, 0x4e, 0x84, - 0x9c, 0x03, 0x4f, 0x84, 0x9b, 0x03, 0x50, 0x84, 0x9c, 0x03, 0x51, 0x84, - 0x9b, 0x03, 0x52, 0x84, 0x9c, 0x03, 0x53, 0x84, 0x9b, 0x03, 0x54, 0x84, - 0x9c, 0x03, 0x55, 0x84, 0x9b, 0x03, 0x56, 0x84, 0x9c, 0x03, 0x57, 0x84, - 0x9b, 0x03, 0x58, 0x84, 0x9c, 0x03, 0x58, 0x84, 0x9b, 0x03, 0x59, 0x84, - 0x9c, 0x03, 0x5a, 0x84, 0x9b, 0x03, 0x5b, 0x84, 0x9c, 0x03, 0x5c, 0x84, - 0x9b, 0x03, 0x5d, 0x84, 0x9c, 0x03, 0x5d, 0x84, 0x9b, 0x03, 0x5e, 0x84, - 0x9c, 0x03, 0x5f, 0x84, 0x9b, 0x03, 0x60, 0x84, 0x9c, 0x03, 0x60, 0x84, - 0x9b, 0x03, 0x61, 0x84, 0x9c, 0x03, 0x62, 0x84, 0x9b, 0x03, 0x63, 0x84, - 0x9c, 0x03, 0x63, 0x84, 0x9b, 0x03, 0x64, 0x84, 0x9c, 0x03, 0x65, 0x84, - 0x9b, 0x03, 0x66, 0x84, 0x9c, 0x03, 0x66, 0x84, 0x9b, 0x03, 0x67, 0x84, - 0x9c, 0x03, 0x68, 0x84, 0x9b, 0x03, 0x68, 0x84, 0x9c, 0x03, 0x69, 0x84, - 0x9b, 0x03, 0x6a, 0x84, 0x9c, 0x03, 0x6a, 0x84, 0x9b, 0x03, 0x6b, 0x84, - 0x9c, 0x03, 0x6c, 0x84, 0x9b, 0x03, 0x6c, 0x84, 0x9c, 0x03, 0x6d, 0x84, - 0x9b, 0x03, 0x6e, 0x84, 0x9c, 0x03, 0x6e, 0x84, 0x9b, 0x03, 0x6f, 0x84, - 0x9c, 0x03, 0x70, 0x84, 0x9b, 0x03, 0x70, 0x84, 0x9c, 0x03, 0x71, 0x84, - 0x9b, 0x03, 0x72, 0x84, 0x9c, 0x03, 0x72, 0x84, 0x9b, 0x03, 0x73, 0x84, - 0x9c, 0x03, 0x73, 0x84, 0x9b, 0x03, 0x74, 0x84, 0x9c, 0x03, 0x75, 0x84, - 0x9b, 0x03, 0x75, 0x84, 0x9c, 0x03, 0x76, 0x84, 0x9b, 0x03, 0x76, 0x84, - 0x9c, 0x03, 0x77, 0x84, 0x9b, 0x03, 0x78, 0x84, 0x9c, 0x03, 0x78, 0x84, - 0x9b, 0x03, 0x79, 0x84, 0x9c, 0x03, 0x79, 0x84, 0x9b, 0x03, 0x7a, 0x84, - 0x9c, 0x03, 0x7a, 0x84, 0x9b, 0x03, 0x7b, 0x84, 0x9c, 0x03, 0x7c, 0x84, - 0x9b, 0x03, 0x7c, 0x84, 0x9c, 0x03, 0x7d, 0x84, 0x9b, 0x03, 0x7d, 0x84, - 0x9c, 0x03, 0x7e, 0x84, 0x9b, 0x03, 0x7e, 0x84, 0x9c, 0x03, 0x7f, 0x84, - 0x9b, 0x03, 0x7f, 0x84, 0x9c, 0x03, 0x80, 0x84, 0x9b, 0x03, 0x81, 0x84, - 0x9c, 0x03, 0x81, 0x84, 0x9b, 0x03, 0x82, 0x84, 0x9c, 0x03, 0x82, 0x84, - 0x9b, 0x03, 0x83, 0x84, 0x9c, 0x03, 0x83, 0x84, 0x9b, 0x03, 0x84, 0x84, - 0x9c, 0x03, 0x84, 0x84, 0x9b, 0x03, 0x85, 0x84, 0x9c, 0x03, 0x85, 0x84, - 0x9b, 0x03, 0x86, 0x84, 0x9c, 0x03, 0x86, 0x84, 0x9b, 0x03, 0x87, 0x84, - 0x9c, 0x03, 0x87, 0x84, 0x9b, 0x03, 0x88, 0x84, 0x9c, 0x03, 0x88, 0x84, - 0x9b, 0x03, 0x89, 0x84, 0x9c, 0x03, 0x89, 0x84, 0x9b, 0x03, 0x8a, 0x84, - 0x9c, 0x03, 0x8a, 0x84, 0x9b, 0x03, 0x8b, 0x84, 0x9c, 0x03, 0x8b, 0x84, - 0x9b, 0x03, 0x8c, 0x84, 0x9c, 0x03, 0x8c, 0x84, 0x9b, 0x03, 0x8d, 0x84, - 0x9c, 0x03, 0x8d, 0x84, 0x9b, 0x03, 0x8e, 0x84, 0x9c, 0x03, 0x8e, 0x84, - 0x9b, 0x03, 0x8e, 0x84, 0x9c, 0x03, 0x8f, 0x84, 0x9b, 0x03, 0x8f, 0x84, - 0x9c, 0x03, 0x90, 0x84, 0x9b, 0x03, 0x90, 0x84, 0x9c, 0x03, 0x91, 0x84, - 0x9b, 0x03, 0x91, 0x84, 0x9c, 0x03, 0x92, 0x84, 0x9b, 0x03, 0x92, 0x84, - 0x9c, 0x03, 0x93, 0x84, 0x9b, 0x03, 0x93, 0x84, 0x9c, 0x03, 0x94, 0x84, - 0x9b, 0x03, 0x94, 0x84, 0x9c, 0x03, 0x94, 0x84, 0x9b, 0x03, 0x95, 0x84, - 0x9c, 0x03, 0x95, 0x84, 0x9b, 0x03, 0x96, 0x84, 0x9c, 0x03, 0x96, 0x84, - 0x9b, 0x03, 0x97, 0x84, 0x9c, 0x03, 0x97, 0x84, 0x9b, 0x03, 0x98, 0x84, - 0x9c, 0x03, 0x98, 0x84, 0x9b, 0x03, 0x98, 0x84, 0x9c, 0x03, 0x99, 0x84, - 0x9b, 0x03, 0x99, 0x84, 0x9c, 0x03, 0x9a, 0x84, 0x9b, 0x03, 0x9a, 0x84, - 0x9c, 0x03, 0x9a, 0x84, 0x9b, 0x03, 0x9b, 0x84, 0x9c, 0x03, 0x9b, 0x84, - 0x9b, 0x03, 0x9c, 0x84, 0x9c, 0x03, 0x9c, 0x84, 0x9c, 0x03, 0x9d, 0x84, - 0x9d, 0x03, 0x9d, 0x84, 0x9d, 0x03, 0x9d, 0x84, 0x9d, 0x03, 0x9e, 0x84, - 0x9e, 0x03, 0x9e, 0x84, 0x9e, 0x03, 0x9f, 0x84, 0x9f, 0x03, 0x9f, 0x84, - 0x9e, 0x03, 0x9f, 0x84, 0x9f, 0x03, 0xa0, 0x84, 0x9e, 0x03, 0xa0, 0x84, - 0x9f, 0x03, 0xa1, 0x84, 0x9e, 0x03, 0xa1, 0x84, 0x9f, 0x03, 0xa1, 0x84, - 0x9e, 0x03, 0xa2, 0x84, 0x9f, 0x03, 0xa2, 0x84, 0x9e, 0x03, 0xa3, 0x84, - 0x9f, 0x03, 0xa3, 0x84, 0x9e, 0x03, 0xa3, 0x84, 0x9f, 0x03, 0xa4, 0x84, - 0x9e, 0x03, 0xa4, 0x84, 0x9f, 0x03, 0xa5, 0x84, 0x9e, 0x03, 0xa5, 0x84, - 0x9f, 0x03, 0xa5, 0x84, 0x9e, 0x03, 0xa6, 0x84, 0x9f, 0x03, 0xa6, 0x84, - 0x9e, 0x03, 0xa6, 0x84, 0x9f, 0x03, 0xa7, 0x84, 0x9e, 0x03, 0xa7, 0x84, - 0x9f, 0x03, 0xa8, 0x84, 0x9e, 0x03, 0xa8, 0x84, 0x9f, 0x03, 0xa8, 0x84, - 0x9e, 0x03, 0xa9, 0x84, 0x9f, 0x03, 0xa9, 0x85, 0xa2, 0x03, 0xaa, 0x84, - 0x9f, 0x03, 0xaa, 0x85, 0xa2, 0x03, 0xaa, 0x84, 0x9f, 0x03, 0xab, 0x85, - 0xa2, 0x03, 0xab, 0x85, 0xa4, 0x03, 0xab, 0x85, 0xa2, 0x03, 0xac, 0x85, - 0xa4, 0x03, 0xac, 0x85, 0xa2, 0x03, 0xac, 0x85, 0xa4, 0x03, 0xad, 0x85, - 0xa2, 0x03, 0xad, 0x85, 0xa4, 0x03, 0xae, 0x86, 0xa6, 0x03, 0xae, 0x85, - 0xa4, 0x03, 0xae, 0x86, 0xa6, 0x03, 0xaf, 0x85, 0xa4, 0x03, 0xaf, 0x86, - 0xa6, 0x03, 0xaf, 0x85, 0xa4, 0x03, 0xb0, 0x86, 0xa6, 0x03, 0xb0, 0x86, - 0xa6, 0x03, 0xb0, 0x86, 0xa6, 0x03, 0xb1, 0x87, 0xaa, 0x03, 0xb1, 0x86, - 0xa6, 0x03, 0xb2, 0x87, 0xaa, 0x03, 0xb2, 0x86, 0xa6, 0x03, 0xb2, 0x87, - 0xaa, 0x03, 0xb3, 0x87, 0xa9, 0x03, 0xb3, 0x87, 0xaa, 0x03, 0xb3, 0x87, - 0xa9, 0x03, 0xb4, 0x87, 0xaa, 0x03, 0xb4, 0x88, 0xad, 0x03, 0xb4, 0x88, - 0xad, 0x03, 0xb5, 0x88, 0xad, 0x03, 0xb5, 0x88, 0xad, 0x03, 0xb5, 0x88, - 0xad, 0x03, 0xb6, 0x88, 0xad, 0x03, 0xb6, 0x88, 0xad, 0x03, 0xb6, 0x88, - 0xad, 0x03, 0xb7, 0x88, 0xad, 0x03, 0xb7, 0x88, 0xad, 0x03, 0xb7, 0x89, - 0xb0, 0x03, 0xb8, 0x88, 0xad, 0x03, 0xb8, 0x89, 0xb0, 0x03, 0xb8, 0x88, - 0xad, 0x03, 0xb9, 0x89, 0xb0, 0x03, 0xb9, 0x89, 0xb2, 0x03, 0xb9, 0x89, - 0xb0, 0x03, 0xba, 0x89, 0xb2, 0x03, 0xba, 0x89, 0xb0, 0x03, 0xba, 0x89, - 0xb2, 0x03, 0xbb, 0x89, 0xb0, 0x03, 0xbb, 0x89, 0xb2, 0x03, 0xbb, 0x89, - 0xb0, 0x03, 0xbc, 0x89, 0xb2, 0x03, 0xbc, 0x89, 0xb2, 0x03, 0xbc, 0x89, - 0xb2, 0x03, 0xbd, 0x89, 0xb2, 0x03, 0xbd, 0x89, 0xb2, 0x03, 0xbd, 0x8b, - 0xb7, 0x03, 0xbe, 0x8b, 0xb7, 0x03, 0xbe, 0x8b, 0xb7, 0x03, 0xbe, 0x8b, - 0xb7, 0x03, 0xbf, 0x8b, 0xb7, 0x03, 0xbf, 0x8b, 0xb7, 0x03, 0xbf, 0x8b, - 0xb7, 0x03, 0xc0, 0x8b, 0xb7, 0x03, 0xc0, 0x8b, 0xb7, 0x03, 0xc0, 0x8b, - 0xb7, 0x03, 0xc1, 0x8b, 0xb7, 0x03, 0xc1, 0x8b, 0xb7, 0x03, 0xc1, 0x8c, - 0xba, 0x03, 0xc1, 0x8b, 0xb7, 0x03, 0xc2, 0x8c, 0xba, 0x03, 0xc2, 0x8b, - 0xb7, 0x03, 0xc2, 0x8c, 0xba, 0x03, 0xc3, 0x8c, 0xba, 0x03, 0xc3, 0x8c, - 0xba, 0x03, 0xc3, 0x8c, 0xba, 0x03, 0xc4, 0x8c, 0xba, 0x03, 0xc4, 0x8d, - 0xbd, 0x03, 0xc4, 0x8c, 0xba, 0x03, 0xc5, 0x8d, 0xbd, 0x03, 0xc5, 0x8c, - 0xba, 0x03, 0xc5, 0x8d, 0xbd, 0x03, 0xc6, 0x8d, 0xbf, 0x03, 0xc6, 0x8d, - 0xbd, 0x03, 0xc6, 0x8d, 0xbf, 0x03, 0xc6, 0x8d, 0xbd, 0x03, 0xc7, 0x8d, - 0xbf, 0x03, 0xc7, 0x8e, 0xc0, 0x03, 0xc7, 0x8d, 0xbf, 0x03, 0xc8, 0x8e, - 0xc0, 0x03, 0xc8, 0x8d, 0xbf, 0x03, 0xc8, 0x8e, 0xc0, 0x03, 0xc9, 0x8d, - 0xbf, 0x03, 0xc9, 0x8e, 0xc0, 0x03, 0xc9, 0x8d, 0xbf, 0x03, 0xc9, 0x8e, - 0xc0, 0x03, 0xca, 0x8e, 0xc3, 0x03, 0xca, 0x8e, 0xc0, 0x03, 0xca, 0x8e, - 0xc3, 0x03, 0xcb, 0x8e, 0xc0, 0x03, 0xcb, 0x8e, 0xc3, 0x03, 0xcb, 0x8e, - 0xc0, 0x03, 0xcc, 0x8e, 0xc3, 0x03, 0xcc, 0x8e, 0xc3, 0x03, 0xcc, 0x8e, - 0xc3, 0x03, 0xcc, 0x8e, 0xc3, 0x03, 0xcd, 0x8e, 0xc3, 0x03, 0xcd, 0x8f, - 0xc6, 0x03, 0xcd, 0x8e, 0xc3, 0x03, 0xce, 0x8f, 0xc6, 0x03, 0xce, 0x8e, - 0xc3, 0x03, 0xce, 0x8f, 0xc6, 0x03, 0xce, 0x8f, 0xc6, 0x03, 0xcf, 0x8f, - 0xc6, 0x03, 0xcf, 0x8f, 0xc6, 0x03, 0xcf, 0x8f, 0xc6, 0x03, 0xd0, 0x90, - 0xc9, 0x03, 0xd0, 0x90, 0xc9, 0x03, 0xd0, 0x90, 0xc9, 0x03, 0xd0, 0x90, - 0xc9, 0x03, 0xd1, 0x90, 0xc9, 0x03, 0xd1, 0x90, 0xc9, 0x03, 0xd1, 0x90, - 0xc9, 0x03, 0xd2, 0x90, 0xc9, 0x03, 0xd2, 0x90, 0xc9, 0x03, 0xd2, 0x90, - 0xc9, 0x03, 0xd2, 0x91, 0xcc, 0x03, 0xd3, 0x90, 0xc9, 0x03, 0xd3, 0x91, - 0xcc, 0x03, 0xd3, 0x90, 0xc9, 0x03, 0xd4, 0x91, 0xcc, 0x03, 0xd4, 0x91, - 0xca, 0x03, 0xd4, 0x91, 0xcc, 0x03, 0xd4, 0x91, 0xca, 0x03, 0xd5, 0x91, - 0xcc, 0x03, 0xd5, 0x92, 0xce, 0x03, 0xd5, 0x92, 0xce, 0x03, 0xd6, 0x92, - 0xce, 0x03, 0xd6, 0x92, 0xce, 0x03, 0xd6, 0x92, 0xce, 0x03, 0xd6, 0x92, - 0xce, 0x03, 0xd7, 0x92, 0xce, 0x03, 0xd7, 0x92, 0xce, 0x03, 0xd7, 0x92, - 0xce, 0x03, 0xd7, 0x92, 0xce, 0x03, 0xd8, 0x93, 0xd1, 0x03, 0xd8, 0x92, - 0xce, 0x03, 0xd8, 0x93, 0xd1, 0x03, 0xd9, 0x92, 0xce, 0x03, 0xd9, 0x93, - 0xd1, 0x03, 0xd9, 0x92, 0xce, 0x03, 0xd9, 0x93, 0xd1, 0x03, 0xda, 0x93, - 0xd1, 0x03, 0xda, 0x93, 0xd1, 0x03, 0xda, 0x94, 0xd4, 0x03, 0xda, 0x93, - 0xd1, 0x03, 0xdb, 0x94, 0xd4, 0x03, 0xdb, 0x93, 0xd1, 0x03, 0xdb, 0x94, - 0xd4, 0x03, 0xdb, 0x93, 0xd1, 0x03, 0xdc, 0x94, 0xd4, 0x03, 0xdc, 0x94, - 0xd5, 0x03, 0xdc, 0x94, 0xd4, 0x03, 0xdd, 0x94, 0xd5, 0x03, 0xdd, 0x94, - 0xd4, 0x03, 0xdd, 0x94, 0xd5, 0x03, 0xdd, 0x95, 0xd6, 0x03, 0xde, 0x94, - 0xd5, 0x03, 0xde, 0x95, 0xd6, 0x03, 0xde, 0x94, 0xd5, 0x03, 0xde, 0x95, - 0xd6, 0x03, 0xdf, 0x94, 0xd5, 0x03, 0xdf, 0x95, 0xd6, 0x03, 0xdf, 0x94, - 0xd5, 0x03, 0xdf, 0x95, 0xd6, 0x03, 0xe0, 0x96, 0xd9, 0x03, 0xe0, 0x95, - 0xd6, 0x03, 0xe0, 0x96, 0xd9, 0x03, 0xe1, 0x95, 0xd6, 0x03, 0xe1, 0x96, - 0xd9, 0x03, 0xe1, 0x95, 0xd6, 0x03, 0xe1, 0x96, 0xd9, 0x03, 0xe2, 0x96, - 0xd9, 0x03, 0xe2, 0x96, 0xd9, 0x03, 0xe2, 0x97, 0xdb, 0x03, 0xe2, 0x96, - 0xd9, 0x03, 0xe3, 0x97, 0xdb, 0x03, 0xe3, 0x96, 0xd9, 0x03, 0xe3, 0x97, - 0xdb, 0x03, 0xe3, 0x96, 0xd9, 0x03, 0xe4, 0x97, 0xdb, 0x03, 0xe4, 0x97, - 0xdb, 0x03, 0xe4, 0x97, 0xdb, 0x03, 0xe4, 0x98, 0xde, 0x03, 0xe5, 0x98, - 0xde, 0x03, 0xe5, 0x98, 0xde, 0x03, 0xe5, 0x98, 0xde, 0x03, 0xe5, 0x98, - 0xde, 0x03, 0xe6, 0x98, 0xde, 0x03, 0xe6, 0x98, 0xde, 0x03, 0xe6, 0x98, - 0xde, 0x03, 0xe6, 0x98, 0xde, 0x03, 0xe7, 0x98, 0xde, 0x03, 0xe7, 0x98, - 0xde, 0x03, 0xe7, 0x98, 0xde, 0x03, 0xe7, 0x98, 0xe0, 0x03, 0xe8, 0x98, - 0xde, 0x03, 0xe8, 0x98, 0xe0, 0x03, 0xe8, 0x98, 0xde, 0x03, 0xe8, 0x98, - 0xe0, 0x03, 0xe9, 0x98, 0xdf, 0x03, 0xe9, 0x98, 0xe0, 0x03, 0xe9, 0x98, - 0xdf, 0x03, 0xe9, 0x98, 0xe0, 0x03, 0xea, 0x99, 0xe3, 0x03, 0xea, 0x98, - 0xe0, 0x03, 0xea, 0x99, 0xe3, 0x03, 0xea, 0x98, 0xe0, 0x03, 0xeb, 0x99, - 0xe3, 0x03, 0xeb, 0x98, 0xe0, 0x03, 0xeb, 0x99, 0xe3, 0x03, 0xeb, 0x99, - 0xe2, 0x03, 0xec, 0x99, 0xe3, 0x03, 0xec, 0x9a, 0xe5, 0x03, 0xec, 0x9a, - 0xe5, 0x03, 0xec, 0x9a, 0xe5, 0x03, 0xec, 0x9a, 0xe5, 0x03, 0xed, 0x9a, - 0xe5, 0x03, 0xed, 0x9a, 0xe5, 0x03, 0xed, 0x9a, 0xe5, 0x03, 0xed, 0x9a, - 0xe5, 0x03, 0xee, 0x9a, 0xe5, 0x03, 0xee, 0x9a, 0xe5, 0x03, 0xee, 0x9b, - 0xe7, 0x03, 0xee, 0x9a, 0xe5, 0x03, 0xef, 0x9b, 0xe7, 0x03, 0xef, 0x9a, - 0xe5, 0x03, 0xef, 0x9b, 0xe7, 0x03, 0xef, 0x9b, 0xe9, 0x03, 0xf0, 0x9b, - 0xe7, 0x03, 0xf0, 0x9b, 0xe9, 0x03, 0xf0, 0x9b, 0xe7, 0x03, 0xf0, 0x9b, - 0xe9, 0x03, 0xf1, 0x9c, 0xea, 0x03, 0xf1, 0x9b, 0xe9, 0x03, 0xf1, 0x9c, - 0xea, 0x03, 0xf1, 0x9b, 0xe9, 0x03, 0xf2, 0x9c, 0xea, 0x03, 0xf2, 0x9b, - 0xe9, 0x03, 0xf2, 0x9c, 0xea, 0x03, 0xf2, 0x9b, 0xe9, 0x03, 0xf2, 0x9c, - 0xea, 0x03, 0xf3, 0x9b, 0xe9, 0x03, 0xf3, 0x9c, 0xea, 0x03, 0xf3, 0x9d, - 0xec, 0x03, 0xf3, 0x9c, 0xea, 0x03, 0xf4, 0x9d, 0xec, 0x03, 0xf4, 0x9c, - 0xea, 0x03, 0xf4, 0x9d, 0xec, 0x03, 0xf4, 0x9c, 0xea, 0x03, 0xf5, 0x9d, - 0xec, 0x03, 0xf5, 0x9d, 0xec, 0x03, 0xf5, 0x9d, 0xec, 0x03, 0xf5, 0x9d, - 0xee, 0x03, 0xf5, 0x9d, 0xec, 0x03, 0xf6, 0x9d, 0xee, 0x03, 0xf6, 0x9d, - 0xec, 0x03, 0xf6, 0x9d, 0xee, 0x03, 0xf6, 0x9d, 0xec, 0x03, 0xf7, 0x9d, - 0xee, 0x03, 0xf7, 0x9d, 0xee, 0x03, 0xf7, 0x9d, 0xee, 0x03, 0xf7, 0x9e, - 0xf0, 0x03, 0xf8, 0x9e, 0xf1, 0x03, 0xf8, 0x9e, 0xf0, 0x03, 0xf8, 0x9e, - 0xf1, 0x03, 0xf8, 0x9e, 0xf0, 0x03, 0xf8, 0x9e, 0xf1, 0x03, 0xf9, 0x9e, - 0xf0, 0x03, 0xf9, 0x9e, 0xf1, 0x03, 0xf9, 0x9e, 0xf0, 0x03, 0xf9, 0x9e, - 0xf1, 0x03, 0xfa, 0x9f, 0xf3, 0x03, 0xfa, 0x9e, 0xf1, 0x03, 0xfa, 0x9f, - 0xf3, 0x03, 0xfa, 0x9e, 0xf1, 0x03, 0xfa, 0x9f, 0xf3, 0x03, 0xfb, 0x9e, - 0xf1, 0x03, 0xfb, 0x9f, 0xf3, 0x03, 0xfb, 0x9f, 0xf2, 0x03, 0xfb, 0x9f, - 0xf3, 0x03, 0xfc, 0xa0, 0xf5, 0x03, 0xfc, 0x9f, 0xf3, 0x03, 0xfc, 0xa0, - 0xf5, 0x03, 0xfc, 0x9f, 0xf3, 0x03, 0xfc, 0xa0, 0xf5, 0x03, 0xfd, 0x9f, - 0xf3, 0x03, 0xfd, 0xa0, 0xf5, 0x03, 0xfd, 0x9f, 0xf3, 0x03, 0xfd, 0xa0, - 0xf5, 0x03, 0xfe, 0xa0, 0xf5, 0x03, 0xfe, 0xa0, 0xf5, 0x03, 0xfe, 0xa1, - 0xf7, 0x03, 0xfe, 0xa1, 0xf7, 0x03, 0xfe, 0xa1, 0xf7, 0x03, 0xff, 0xa1, - 0xf7, 0x03, 0xff, 0xa1, 0xf7, 0x03, 0x03, 0x83, 0x9b, 0x03, 0x0a, 0x83, - 0x9b, 0x03, 0x0f, 0x83, 0x9b, 0x03, 0x14, 0x83, 0x9b, 0x03, 0x17, 0x83, - 0x9b, 0x03, 0x1b, 0x83, 0x9b, 0x03, 0x1e, 0x83, 0x9b, 0x03, 0x20, 0x83, - 0x9c, 0x03, 0x23, 0x83, 0x9b, 0x03, 0x25, 0x83, 0x9c, 0x03, 0x27, 0x83, - 0x9b, 0x03, 0x29, 0x83, 0x9c, 0x03, 0x2b, 0x83, 0x9b, 0x03, 0x2d, 0x83, - 0x9c, 0x03, 0x2f, 0x83, 0x9b, 0x03, 0x31, 0x83, 0x9c, 0x03, 0x32, 0x83, - 0x9b, 0x03, 0x34, 0x83, 0x9c, 0x03, 0x35, 0x83, 0x9b, 0x03, 0x37, 0x83, - 0x9c, 0x03, 0x38, 0x83, 0x9b, 0x03, 0x3a, 0x83, 0x9c, 0x03, 0x3b, 0x83, - 0x9b, 0x03, 0x3c, 0x83, 0x9c, 0x03, 0x3e, 0x83, 0x9b, 0x03, 0x3f, 0x83, - 0x9c, 0x03, 0x40, 0x83, 0x9b, 0x03, 0x42, 0x83, 0x9c, 0x03, 0x43, 0x83, - 0x9b, 0x03, 0x44, 0x83, 0x9c, 0x03, 0x45, 0x83, 0x9b, 0x03, 0x46, 0x83, - 0x9c, 0x03, 0x47, 0x83, 0x9b, 0x03, 0x48, 0x83, 0x9c, 0x03, 0x49, 0x83, - 0x9b, 0x03, 0x4a, 0x83, 0x9c, 0x03, 0x4b, 0x83, 0x9b, 0x03, 0x4c, 0x83, - 0x9c, 0x03, 0x4d, 0x83, 0x9b, 0x03, 0x4e, 0x83, 0x9c, 0x03, 0x4f, 0x83, - 0x9b, 0x03, 0x50, 0x83, 0x9c, 0x03, 0x51, 0x83, 0x9b, 0x03, 0x52, 0x83, - 0x9c, 0x03, 0x53, 0x83, 0x9b, 0x03, 0x54, 0x83, 0x9c, 0x03, 0x55, 0x83, - 0x9b, 0x03, 0x56, 0x83, 0x9c, 0x03, 0x57, 0x83, 0x9b, 0x03, 0x58, 0x83, - 0x9c, 0x03, 0x58, 0x83, 0x9b, 0x03, 0x59, 0x83, 0x9c, 0x03, 0x5a, 0x83, - 0x9b, 0x03, 0x5b, 0x83, 0x9c, 0x03, 0x5c, 0x83, 0x9b, 0x03, 0x5d, 0x83, - 0x9c, 0x03, 0x5d, 0x83, 0x9b, 0x03, 0x5e, 0x83, 0x9c, 0x03, 0x5f, 0x83, - 0x9b, 0x03, 0x60, 0x83, 0x9c, 0x03, 0x60, 0x83, 0x9b, 0x03, 0x61, 0x83, - 0x9c, 0x03, 0x62, 0x83, 0x9b, 0x03, 0x63, 0x83, 0x9c, 0x03, 0x63, 0x83, - 0x9b, 0x03, 0x64, 0x83, 0x9c, 0x03, 0x65, 0x83, 0x9b, 0x03, 0x66, 0x83, - 0x9c, 0x03, 0x66, 0x83, 0x9b, 0x03, 0x67, 0x83, 0x9c, 0x03, 0x68, 0x83, - 0x9b, 0x03, 0x68, 0x83, 0x9c, 0x03, 0x69, 0x83, 0x9b, 0x03, 0x6a, 0x83, - 0x9c, 0x03, 0x6a, 0x83, 0x9b, 0x03, 0x6b, 0x83, 0x9c, 0x03, 0x6c, 0x83, - 0x9b, 0x03, 0x6c, 0x83, 0x9c, 0x03, 0x6d, 0x83, 0x9b, 0x03, 0x6e, 0x83, - 0x9c, 0x03, 0x6e, 0x83, 0x9b, 0x03, 0x6f, 0x83, 0x9c, 0x03, 0x70, 0x83, - 0x9b, 0x03, 0x70, 0x83, 0x9c, 0x03, 0x71, 0x83, 0x9b, 0x03, 0x72, 0x83, - 0x9c, 0x03, 0x72, 0x83, 0x9b, 0x03, 0x73, 0x83, 0x9c, 0x03, 0x73, 0x83, - 0x9b, 0x03, 0x74, 0x83, 0x9c, 0x03, 0x75, 0x83, 0x9b, 0x03, 0x75, 0x83, - 0x9c, 0x03, 0x76, 0x83, 0x9b, 0x03, 0x76, 0x83, 0x9c, 0x03, 0x77, 0x83, - 0x9b, 0x03, 0x78, 0x83, 0x9c, 0x03, 0x78, 0x83, 0x9b, 0x03, 0x79, 0x83, - 0x9c, 0x03, 0x79, 0x83, 0x9b, 0x03, 0x7a, 0x83, 0x9c, 0x03, 0x7a, 0x83, - 0x9b, 0x03, 0x7b, 0x83, 0x9c, 0x03, 0x7c, 0x83, 0x9b, 0x03, 0x7c, 0x83, - 0x9c, 0x03, 0x7d, 0x83, 0x9b, 0x03, 0x7d, 0x83, 0x9c, 0x03, 0x7e, 0x83, - 0x9b, 0x03, 0x7e, 0x83, 0x9c, 0x03, 0x7f, 0x83, 0x9b, 0x03, 0x7f, 0x83, - 0x9c, 0x03, 0x80, 0x83, 0x9b, 0x03, 0x81, 0x83, 0x9c, 0x03, 0x81, 0x83, - 0x9b, 0x03, 0x82, 0x83, 0x9c, 0x03, 0x82, 0x83, 0x9b, 0x03, 0x83, 0x83, - 0x9c, 0x03, 0x83, 0x83, 0x9b, 0x03, 0x84, 0x83, 0x9c, 0x03, 0x84, 0x83, - 0x9b, 0x03, 0x85, 0x83, 0x9c, 0x03, 0x85, 0x83, 0x9b, 0x03, 0x86, 0x83, - 0x9c, 0x03, 0x86, 0x83, 0x9b, 0x03, 0x87, 0x83, 0x9c, 0x03, 0x87, 0x83, - 0x9b, 0x03, 0x88, 0x83, 0x9c, 0x03, 0x88, 0x83, 0x9b, 0x03, 0x89, 0x83, - 0x9c, 0x03, 0x89, 0x83, 0x9b, 0x03, 0x8a, 0x83, 0x9c, 0x03, 0x8a, 0x83, - 0x9b, 0x03, 0x8b, 0x83, 0x9c, 0x03, 0x8b, 0x83, 0x9b, 0x03, 0x8c, 0x83, - 0x9c, 0x03, 0x8c, 0x83, 0x9b, 0x03, 0x8d, 0x83, 0x9c, 0x03, 0x8d, 0x83, - 0x9b, 0x03, 0x8e, 0x83, 0x9c, 0x03, 0x8e, 0x83, 0x9b, 0x03, 0x8e, 0x83, - 0x9c, 0x03, 0x8f, 0x83, 0x9b, 0x03, 0x8f, 0x83, 0x9c, 0x03, 0x90, 0x83, - 0x9b, 0x03, 0x90, 0x83, 0x9c, 0x03, 0x91, 0x83, 0x9b, 0x03, 0x91, 0x83, - 0x9c, 0x03, 0x92, 0x83, 0x9b, 0x03, 0x92, 0x83, 0x9c, 0x03, 0x93, 0x83, - 0x9b, 0x03, 0x93, 0x83, 0x9c, 0x03, 0x94, 0x83, 0x9b, 0x03, 0x94, 0x83, - 0x9c, 0x03, 0x94, 0x83, 0x9b, 0x03, 0x95, 0x83, 0x9c, 0x03, 0x95, 0x83, - 0x9b, 0x03, 0x96, 0x83, 0x9c, 0x03, 0x96, 0x83, 0x9b, 0x03, 0x97, 0x83, - 0x9c, 0x03, 0x97, 0x83, 0x9b, 0x03, 0x98, 0x83, 0x9c, 0x03, 0x98, 0x83, - 0x9b, 0x03, 0x98, 0x83, 0x9c, 0x03, 0x99, 0x83, 0x9b, 0x03, 0x99, 0x83, - 0x9c, 0x03, 0x9a, 0x83, 0x9b, 0x03, 0x9a, 0x83, 0x9c, 0x03, 0x9a, 0x83, - 0x9b, 0x03, 0x9b, 0x83, 0x9c, 0x03, 0x9b, 0x83, 0x9b, 0x03, 0x9c, 0x83, - 0x9c, 0x03, 0x9c, 0x83, 0x9c, 0x03, 0x9d, 0x83, 0x9d, 0x03, 0x9d, 0x83, - 0x9c, 0x03, 0x9d, 0x83, 0x9d, 0x03, 0x9e, 0x83, 0x9c, 0x03, 0x9e, 0x83, - 0x9d, 0x03, 0x9f, 0x83, 0x9c, 0x03, 0x9f, 0x83, 0x9d, 0x03, 0x9f, 0x83, - 0x9c, 0x03, 0xa0, 0x83, 0x9d, 0x03, 0xa0, 0x83, 0x9c, 0x03, 0xa1, 0x83, - 0x9d, 0x03, 0xa1, 0x83, 0x9c, 0x03, 0xa1, 0x83, 0x9d, 0x03, 0xa2, 0x83, - 0x9c, 0x03, 0xa2, 0x83, 0x9d, 0x03, 0xa3, 0x83, 0x9c, 0x03, 0xa3, 0x83, - 0x9d, 0x03, 0xa3, 0x83, 0x9c, 0x03, 0xa4, 0x83, 0x9d, 0x03, 0xa4, 0x83, - 0x9c, 0x03, 0xa5, 0x83, 0x9d, 0x03, 0xa5, 0x83, 0x9c, 0x03, 0xa5, 0x83, - 0x9d, 0x03, 0xa6, 0x83, 0x9c, 0x03, 0xa6, 0x83, 0x9d, 0x03, 0xa6, 0x83, - 0x9c, 0x03, 0xa7, 0x83, 0x9d, 0x03, 0xa7, 0x84, 0xa0, 0x03, 0xa8, 0x84, - 0xa1, 0x03, 0xa8, 0x84, 0xa0, 0x03, 0xa8, 0x84, 0xa1, 0x03, 0xa9, 0x84, - 0xa0, 0x03, 0xa9, 0x84, 0xa1, 0x03, 0xaa, 0x84, 0xa0, 0x03, 0xaa, 0x84, - 0xa1, 0x03, 0xaa, 0x84, 0xa0, 0x03, 0xab, 0x84, 0xa1, 0x03, 0xab, 0x85, - 0xa4, 0x03, 0xab, 0x84, 0xa1, 0x03, 0xac, 0x85, 0xa4, 0x03, 0xac, 0x84, - 0xa1, 0x03, 0xac, 0x85, 0xa4, 0x03, 0xad, 0x84, 0xa1, 0x03, 0xad, 0x85, - 0xa4, 0x03, 0xae, 0x85, 0xa4, 0x03, 0xae, 0x85, 0xa4, 0x03, 0xae, 0x85, - 0xa4, 0x03, 0xaf, 0x85, 0xa4, 0x03, 0xaf, 0x86, 0xa8, 0x03, 0xaf, 0x85, - 0xa4, 0x03, 0xb0, 0x86, 0xa8, 0x03, 0xb0, 0x85, 0xa4, 0x03, 0xb0, 0x86, - 0xa8, 0x03, 0xb1, 0x86, 0xa7, 0x03, 0xb1, 0x86, 0xa8, 0x03, 0xb2, 0x86, - 0xa7, 0x03, 0xb2, 0x86, 0xa8, 0x03, 0xb2, 0x87, 0xab, 0x03, 0xb3, 0x87, - 0xab, 0x03, 0xb3, 0x87, 0xab, 0x03, 0xb3, 0x87, 0xab, 0x03, 0xb4, 0x87, - 0xab, 0x03, 0xb4, 0x87, 0xab, 0x03, 0xb4, 0x87, 0xab, 0x03, 0xb5, 0x87, - 0xab, 0x03, 0xb5, 0x87, 0xab, 0x03, 0xb5, 0x87, 0xab, 0x03, 0xb6, 0x88, - 0xaf, 0x03, 0xb6, 0x87, 0xab, 0x03, 0xb6, 0x88, 0xaf, 0x03, 0xb7, 0x87, - 0xab, 0x03, 0xb7, 0x88, 0xaf, 0x03, 0xb7, 0x88, 0xae, 0x03, 0xb8, 0x88, - 0xaf, 0x03, 0xb8, 0x88, 0xae, 0x03, 0xb8, 0x88, 0xaf, 0x03, 0xb9, 0x89, - 0xb2, 0x03, 0xb9, 0x89, 0xb2, 0x03, 0xb9, 0x89, 0xb2, 0x03, 0xba, 0x89, - 0xb2, 0x03, 0xba, 0x89, 0xb2, 0x03, 0xba, 0x89, 0xb2, 0x03, 0xbb, 0x89, - 0xb2, 0x03, 0xbb, 0x89, 0xb2, 0x03, 0xbb, 0x89, 0xb2, 0x03, 0xbc, 0x89, - 0xb2, 0x03, 0xbc, 0x8a, 0xb5, 0x03, 0xbc, 0x89, 0xb2, 0x03, 0xbd, 0x8a, - 0xb5, 0x03, 0xbd, 0x89, 0xb2, 0x03, 0xbd, 0x8a, 0xb5, 0x03, 0xbe, 0x89, - 0xb2, 0x03, 0xbe, 0x8a, 0xb5, 0x03, 0xbe, 0x8a, 0xb5, 0x03, 0xbf, 0x8a, - 0xb5, 0x03, 0xbf, 0x8b, 0xb8, 0x03, 0xbf, 0x8a, 0xb5, 0x03, 0xc0, 0x8b, - 0xb8, 0x03, 0xc0, 0x8a, 0xb5, 0x03, 0xc0, 0x8b, 0xb8, 0x03, 0xc1, 0x8a, - 0xb5, 0x03, 0xc1, 0x8b, 0xb8, 0x03, 0xc1, 0x8b, 0xb8, 0x03, 0xc1, 0x8b, - 0xb8, 0x03, 0xc2, 0x8b, 0xb8, 0x03, 0xc2, 0x8b, 0xb8, 0x03, 0xc2, 0x8c, - 0xbb, 0x03, 0xc3, 0x8c, 0xbc, 0x03, 0xc3, 0x8c, 0xbb, 0x03, 0xc3, 0x8c, - 0xbc, 0x03, 0xc4, 0x8c, 0xbb, 0x03, 0xc4, 0x8c, 0xbc, 0x03, 0xc4, 0x8c, - 0xbb, 0x03, 0xc5, 0x8c, 0xbc, 0x03, 0xc5, 0x8c, 0xbb, 0x03, 0xc5, 0x8c, - 0xbc, 0x03, 0xc6, 0x8d, 0xbf, 0x03, 0xc6, 0x8c, 0xbc, 0x03, 0xc6, 0x8d, - 0xbf, 0x03, 0xc6, 0x8c, 0xbc, 0x03, 0xc7, 0x8d, 0xbf, 0x03, 0xc7, 0x8c, - 0xbc, 0x03, 0xc7, 0x8d, 0xbf, 0x03, 0xc8, 0x8d, 0xbe, 0x03, 0xc8, 0x8d, - 0xbf, 0x03, 0xc8, 0x8e, 0xc1, 0x03, 0xc9, 0x8d, 0xbf, 0x03, 0xc9, 0x8e, - 0xc1, 0x03, 0xc9, 0x8d, 0xbf, 0x03, 0xc9, 0x8e, 0xc1, 0x03, 0xca, 0x8d, - 0xbf, 0x03, 0xca, 0x8e, 0xc1, 0x03, 0xca, 0x8e, 0xc1, 0x03, 0xcb, 0x8e, - 0xc1, 0x03, 0xcb, 0x8f, 0xc4, 0x03, 0xcb, 0x8f, 0xc5, 0x03, 0xcc, 0x8f, - 0xc4, 0x03, 0xcc, 0x8f, 0xc5, 0x03, 0xcc, 0x8f, 0xc4, 0x03, 0xcc, 0x8f, - 0xc5, 0x03, 0xcd, 0x8f, 0xc4, 0x03, 0xcd, 0x8f, 0xc5, 0x03, 0xcd, 0x8f, - 0xc4, 0x03, 0xce, 0x8f, 0xc5, 0x03, 0xce, 0x8f, 0xc4, 0x03, 0xce, 0x8f, - 0xc5, 0x03, 0xce, 0x90, 0xc7, 0x03, 0xcf, 0x8f, 0xc5, 0x03, 0xcf, 0x90, - 0xc7, 0x03, 0xcf, 0x8f, 0xc5, 0x03, 0xd0, 0x90, 0xc7, 0x03, 0xd0, 0x90, - 0xc7, 0x03, 0xd0, 0x90, 0xc7, 0x03, 0xd0, 0x90, 0xc7, 0x03, 0xd1, 0x90, - 0xc7, 0x03, 0xd1, 0x91, 0xca, 0x03, 0xd1, 0x90, 0xc7, 0x03, 0xd2, 0x91, - 0xca, 0x03, 0xd2, 0x90, 0xc7, 0x03, 0xd2, 0x91, 0xca, 0x03, 0xd2, 0x90, - 0xc7, 0x03, 0xd3, 0x91, 0xca, 0x03, 0xd3, 0x91, 0xca, 0x03, 0xd3, 0x91, - 0xca, 0x03, 0xd4, 0x92, 0xcd, 0x03, 0xd4, 0x92, 0xcd, 0x03, 0xd4, 0x92, - 0xcd, 0x03, 0xd4, 0x92, 0xcd, 0x03, 0xd5, 0x92, 0xcd, 0x03, 0xd5, 0x92, - 0xcd, 0x03, 0xd5, 0x92, 0xcd, 0x03, 0xd6, 0x92, 0xcd, 0x03, 0xd6, 0x92, - 0xcd, 0x03, 0xd6, 0x92, 0xcd, 0x03, 0xd6, 0x93, 0xd0, 0x03, 0xd7, 0x92, - 0xcd, 0x03, 0xd7, 0x93, 0xd0, 0x03, 0xd7, 0x92, 0xcd, 0x03, 0xd7, 0x93, - 0xd0, 0x03, 0xd8, 0x92, 0xcd, 0x03, 0xd8, 0x93, 0xd0, 0x03, 0xd8, 0x93, - 0xcf, 0x03, 0xd9, 0x93, 0xd0, 0x03, 0xd9, 0x94, 0xd2, 0x03, 0xd9, 0x94, - 0xd2, 0x03, 0xd9, 0x94, 0xd2, 0x03, 0xda, 0x94, 0xd2, 0x03, 0xda, 0x94, - 0xd2, 0x03, 0xda, 0x94, 0xd2, 0x03, 0xda, 0x94, 0xd2, 0x03, 0xdb, 0x94, - 0xd2, 0x03, 0xdb, 0x94, 0xd2, 0x03, 0xdb, 0x94, 0xd2, 0x03, 0xdb, 0x94, - 0xd5, 0x03, 0xdc, 0x94, 0xd2, 0x03, 0xdc, 0x94, 0xd5, 0x03, 0xdc, 0x94, - 0xd2, 0x03, 0xdd, 0x94, 0xd5, 0x03, 0xdd, 0x94, 0xd2, 0x03, 0xdd, 0x94, - 0xd5, 0x03, 0xdd, 0x94, 0xd2, 0x03, 0xde, 0x94, 0xd5, 0x03, 0xde, 0x94, - 0xd5, 0x03, 0xde, 0x94, 0xd5, 0x03, 0xde, 0x95, 0xd7, 0x03, 0xdf, 0x94, - 0xd5, 0x03, 0xdf, 0x95, 0xd7, 0x03, 0xdf, 0x94, 0xd5, 0x03, 0xdf, 0x95, - 0xd7, 0x03, 0xe0, 0x94, 0xd5, 0x03, 0xe0, 0x95, 0xd7, 0x03, 0xe0, 0x95, - 0xd7, 0x03, 0xe1, 0x95, 0xd7, 0x03, 0xe1, 0x96, 0xda, 0x03, 0xe1, 0x96, - 0xda, 0x03, 0xe1, 0x96, 0xda, 0x03, 0xe2, 0x96, 0xda, 0x03, 0xe2, 0x96, - 0xda, 0x03, 0xe2, 0x96, 0xda, 0x03, 0xe2, 0x96, 0xda, 0x03, 0xe3, 0x96, - 0xda, 0x03, 0xe3, 0x96, 0xda, 0x03, 0xe3, 0x96, 0xda, 0x03, 0xe3, 0x97, - 0xdd, 0x03, 0xe4, 0x96, 0xda, 0x03, 0xe4, 0x97, 0xdd, 0x03, 0xe4, 0x96, - 0xda, 0x03, 0xe4, 0x97, 0xdd, 0x03, 0xe5, 0x96, 0xda, 0x03, 0xe5, 0x97, - 0xdd, 0x03, 0xe5, 0x97, 0xdc, 0x03, 0xe5, 0x97, 0xdd, 0x03, 0xe6, 0x98, - 0xdf, 0x03, 0xe6, 0x97, 0xdd, 0x03, 0xe6, 0x98, 0xdf, 0x03, 0xe6, 0x97, - 0xdd, 0x03, 0xe7, 0x98, 0xdf, 0x03, 0xe7, 0x97, 0xdd, 0x03, 0xe7, 0x98, - 0xdf, 0x03, 0xe7, 0x97, 0xdd, 0x03, 0xe8, 0x98, 0xdf, 0x03, 0xe8, 0x98, - 0xdf, 0x03, 0xe8, 0x98, 0xdf, 0x03, 0xe8, 0x99, 0xe1, 0x03, 0xe9, 0x99, - 0xe2, 0x03, 0xe9, 0x99, 0xe1, 0x03, 0xe9, 0x99, 0xe2, 0x03, 0xe9, 0x99, - 0xe1, 0x03, 0xea, 0x99, 0xe2, 0x03, 0xea, 0x99, 0xe1, 0x03, 0xea, 0x99, - 0xe2, 0x03, 0xea, 0x99, 0xe1, 0x03, 0xeb, 0x99, 0xe2, 0x03, 0xeb, 0x9a, - 0xe4, 0x03, 0xeb, 0x99, 0xe2, 0x03, 0xeb, 0x9a, 0xe4, 0x03, 0xec, 0x99, - 0xe2, 0x03, 0xec, 0x9a, 0xe4, 0x03, 0xec, 0x99, 0xe2, 0x03, 0xec, 0x9a, - 0xe4, 0x03, 0xec, 0x9a, 0xe4, 0x03, 0xed, 0x9a, 0xe4, 0x03, 0xed, 0x9a, - 0xe6, 0x03, 0xed, 0x9a, 0xe4, 0x03, 0xed, 0x9a, 0xe6, 0x03, 0xee, 0x9a, - 0xe4, 0x03, 0xee, 0x9a, 0xe6, 0x03, 0xee, 0x9a, 0xe4, 0x03, 0xee, 0x9a, - 0xe6, 0x03, 0xef, 0x9a, 0xe6, 0x03, 0xef, 0x9a, 0xe6, 0x03, 0xef, 0x9b, - 0xe8, 0x03, 0xef, 0x9b, 0xe9, 0x03, 0xf0, 0x9b, 0xe8, 0x03, 0xf0, 0x9b, - 0xe9, 0x03, 0xf0, 0x9b, 0xe8, 0x03, 0xf0, 0x9b, 0xe9, 0x03, 0xf1, 0x9b, - 0xe8, 0x03, 0xf1, 0x9b, 0xe9, 0x03, 0xf1, 0x9b, 0xe8, 0x03, 0xf1, 0x9b, - 0xe9, 0x03, 0xf2, 0x9c, 0xeb, 0x03, 0xf2, 0x9b, 0xe9, 0x03, 0xf2, 0x9c, - 0xeb, 0x03, 0xf2, 0x9b, 0xe9, 0x03, 0xf2, 0x9c, 0xeb, 0x03, 0xf3, 0x9b, - 0xe9, 0x03, 0xf3, 0x9c, 0xeb, 0x03, 0xf3, 0x9b, 0xe9, 0x03, 0xf3, 0x9c, - 0xeb, 0x03, 0xf4, 0x9d, 0xed, 0x03, 0xf4, 0x9d, 0xed, 0x03, 0xf4, 0x9d, - 0xed, 0x03, 0xf4, 0x9d, 0xed, 0x03, 0xf5, 0x9d, 0xed, 0x03, 0xf5, 0x9d, - 0xed, 0x03, 0xf5, 0x9d, 0xed, 0x03, 0xf5, 0x9d, 0xed, 0x03, 0xf5, 0x9d, - 0xed, 0x03, 0xf6, 0x9d, 0xed, 0x03, 0xf6, 0x9d, 0xed, 0x03, 0xf6, 0x9d, - 0xed, 0x03, 0xf6, 0x9e, 0xef, 0x03, 0xf7, 0x9d, 0xed, 0x03, 0xf7, 0x9e, - 0xef, 0x03, 0xf7, 0x9d, 0xed, 0x03, 0xf7, 0x9e, 0xef, 0x03, 0xf8, 0x9d, - 0xed, 0x03, 0xf8, 0x9e, 0xef, 0x03, 0xf8, 0x9e, 0xef, 0x03, 0xf8, 0x9e, - 0xef, 0x03, 0xf8, 0x9f, 0xf2, 0x03, 0xf9, 0x9e, 0xef, 0x03, 0xf9, 0x9f, - 0xf2, 0x03, 0xf9, 0x9e, 0xef, 0x03, 0xf9, 0x9f, 0xf2, 0x03, 0xfa, 0x9e, - 0xef, 0x03, 0xfa, 0x9f, 0xf2, 0x03, 0xfa, 0x9e, 0xef, 0x03, 0xfa, 0x9f, - 0xf2, 0x03, 0xfa, 0x9f, 0xf4, 0x03, 0xfb, 0x9f, 0xf4, 0x03, 0xfb, 0x9f, - 0xf4, 0x03, 0xfb, 0x9f, 0xf4, 0x03, 0xfb, 0x9f, 0xf4, 0x03, 0xfc, 0x9f, - 0xf4, 0x03, 0xfc, 0x9f, 0xf4, 0x03, 0xfc, 0x9f, 0xf4, 0x03, 0xfc, 0x9f, - 0xf4, 0x03, 0xfc, 0x9f, 0xf4, 0x03, 0xfd, 0xa0, 0xf6, 0x03, 0xfd, 0x9f, - 0xf4, 0x03, 0xfd, 0xa0, 0xf6, 0x03, 0xfd, 0x9f, 0xf4, 0x03, 0xfe, 0xa0, - 0xf6, 0x03, 0xfe, 0xa0, 0xf6, 0x03, 0xfe, 0xa0, 0xf6, 0x03, 0xfe, 0xa0, - 0xf6, 0x03, 0xfe, 0xa0, 0xf6, 0x03, 0xff, 0xa0, 0xf6, 0x03, 0xff, 0xa0, - 0xf6, 0x03, 0x03, 0x84, 0x9b, 0x04, 0x0a, 0x84, 0x9b, 0x04, 0x0f, 0x84, - 0x9b, 0x04, 0x14, 0x84, 0x9b, 0x04, 0x17, 0x84, 0x9b, 0x04, 0x1b, 0x84, - 0x9b, 0x04, 0x1e, 0x84, 0x9b, 0x04, 0x20, 0x84, 0x9c, 0x04, 0x23, 0x84, - 0x9b, 0x04, 0x25, 0x84, 0x9c, 0x04, 0x27, 0x84, 0x9b, 0x04, 0x29, 0x84, - 0x9c, 0x04, 0x2b, 0x84, 0x9b, 0x04, 0x2d, 0x84, 0x9c, 0x04, 0x2f, 0x84, - 0x9b, 0x04, 0x31, 0x84, 0x9c, 0x04, 0x32, 0x84, 0x9b, 0x04, 0x34, 0x84, - 0x9c, 0x04, 0x35, 0x84, 0x9b, 0x04, 0x37, 0x84, 0x9c, 0x04, 0x38, 0x84, - 0x9b, 0x04, 0x3a, 0x84, 0x9c, 0x04, 0x3b, 0x84, 0x9b, 0x04, 0x3c, 0x84, - 0x9c, 0x04, 0x3e, 0x84, 0x9b, 0x04, 0x3f, 0x84, 0x9c, 0x04, 0x40, 0x84, - 0x9b, 0x04, 0x42, 0x84, 0x9c, 0x04, 0x43, 0x84, 0x9b, 0x04, 0x44, 0x84, - 0x9c, 0x04, 0x45, 0x84, 0x9b, 0x04, 0x46, 0x84, 0x9c, 0x04, 0x47, 0x84, - 0x9b, 0x04, 0x48, 0x84, 0x9c, 0x04, 0x49, 0x84, 0x9b, 0x04, 0x4a, 0x84, - 0x9c, 0x04, 0x4b, 0x84, 0x9b, 0x04, 0x4c, 0x84, 0x9c, 0x04, 0x4d, 0x84, - 0x9b, 0x04, 0x4e, 0x84, 0x9c, 0x04, 0x4f, 0x84, 0x9b, 0x04, 0x50, 0x84, - 0x9c, 0x04, 0x51, 0x84, 0x9b, 0x04, 0x52, 0x84, 0x9c, 0x04, 0x53, 0x84, - 0x9b, 0x04, 0x54, 0x84, 0x9c, 0x04, 0x55, 0x84, 0x9b, 0x04, 0x56, 0x84, - 0x9c, 0x04, 0x57, 0x84, 0x9b, 0x04, 0x58, 0x84, 0x9c, 0x04, 0x58, 0x84, - 0x9b, 0x04, 0x59, 0x84, 0x9c, 0x04, 0x5a, 0x84, 0x9b, 0x04, 0x5b, 0x84, - 0x9c, 0x04, 0x5c, 0x84, 0x9b, 0x04, 0x5d, 0x84, 0x9c, 0x04, 0x5d, 0x84, - 0x9b, 0x04, 0x5e, 0x84, 0x9c, 0x04, 0x5f, 0x84, 0x9b, 0x04, 0x60, 0x84, - 0x9c, 0x04, 0x60, 0x84, 0x9b, 0x04, 0x61, 0x84, 0x9c, 0x04, 0x62, 0x84, - 0x9b, 0x04, 0x63, 0x84, 0x9c, 0x04, 0x63, 0x84, 0x9b, 0x04, 0x64, 0x84, - 0x9c, 0x04, 0x65, 0x84, 0x9b, 0x04, 0x66, 0x84, 0x9c, 0x04, 0x66, 0x84, - 0x9b, 0x04, 0x67, 0x84, 0x9c, 0x04, 0x68, 0x84, 0x9b, 0x04, 0x68, 0x84, - 0x9c, 0x04, 0x69, 0x84, 0x9b, 0x04, 0x6a, 0x84, 0x9c, 0x04, 0x6a, 0x84, - 0x9b, 0x04, 0x6b, 0x84, 0x9c, 0x04, 0x6c, 0x84, 0x9b, 0x04, 0x6c, 0x84, - 0x9c, 0x04, 0x6d, 0x84, 0x9b, 0x04, 0x6e, 0x84, 0x9c, 0x04, 0x6e, 0x84, - 0x9b, 0x04, 0x6f, 0x84, 0x9c, 0x04, 0x70, 0x84, 0x9b, 0x04, 0x70, 0x84, - 0x9c, 0x04, 0x71, 0x84, 0x9b, 0x04, 0x72, 0x84, 0x9c, 0x04, 0x72, 0x84, - 0x9b, 0x04, 0x73, 0x84, 0x9c, 0x04, 0x73, 0x84, 0x9b, 0x04, 0x74, 0x84, - 0x9c, 0x04, 0x75, 0x84, 0x9b, 0x04, 0x75, 0x84, 0x9c, 0x04, 0x76, 0x84, - 0x9b, 0x04, 0x76, 0x84, 0x9c, 0x04, 0x77, 0x84, 0x9b, 0x04, 0x78, 0x84, - 0x9c, 0x04, 0x78, 0x84, 0x9b, 0x04, 0x79, 0x84, 0x9c, 0x04, 0x79, 0x84, - 0x9b, 0x04, 0x7a, 0x84, 0x9c, 0x04, 0x7a, 0x84, 0x9b, 0x04, 0x7b, 0x84, - 0x9c, 0x04, 0x7c, 0x84, 0x9b, 0x04, 0x7c, 0x84, 0x9c, 0x04, 0x7d, 0x84, - 0x9b, 0x04, 0x7d, 0x84, 0x9c, 0x04, 0x7e, 0x84, 0x9b, 0x04, 0x7e, 0x84, - 0x9c, 0x04, 0x7f, 0x84, 0x9b, 0x04, 0x7f, 0x84, 0x9c, 0x04, 0x80, 0x84, - 0x9b, 0x04, 0x81, 0x84, 0x9c, 0x04, 0x81, 0x84, 0x9b, 0x04, 0x82, 0x84, - 0x9c, 0x04, 0x82, 0x84, 0x9b, 0x04, 0x83, 0x84, 0x9c, 0x04, 0x83, 0x84, - 0x9b, 0x04, 0x84, 0x84, 0x9c, 0x04, 0x84, 0x84, 0x9b, 0x04, 0x85, 0x84, - 0x9c, 0x04, 0x85, 0x84, 0x9b, 0x04, 0x86, 0x84, 0x9c, 0x04, 0x86, 0x84, - 0x9b, 0x04, 0x87, 0x84, 0x9c, 0x04, 0x87, 0x84, 0x9b, 0x04, 0x88, 0x84, - 0x9c, 0x04, 0x88, 0x84, 0x9b, 0x04, 0x89, 0x84, 0x9c, 0x04, 0x89, 0x84, - 0x9b, 0x04, 0x8a, 0x84, 0x9c, 0x04, 0x8a, 0x84, 0x9b, 0x04, 0x8b, 0x84, - 0x9c, 0x04, 0x8b, 0x84, 0x9b, 0x04, 0x8c, 0x84, 0x9c, 0x04, 0x8c, 0x84, - 0x9b, 0x04, 0x8d, 0x84, 0x9c, 0x04, 0x8d, 0x84, 0x9b, 0x04, 0x8e, 0x84, - 0x9c, 0x04, 0x8e, 0x84, 0x9b, 0x04, 0x8e, 0x84, 0x9c, 0x04, 0x8f, 0x84, - 0x9b, 0x04, 0x8f, 0x84, 0x9c, 0x04, 0x90, 0x84, 0x9b, 0x04, 0x90, 0x84, - 0x9c, 0x04, 0x91, 0x84, 0x9b, 0x04, 0x91, 0x84, 0x9c, 0x04, 0x92, 0x84, - 0x9b, 0x04, 0x92, 0x84, 0x9c, 0x04, 0x93, 0x84, 0x9b, 0x04, 0x93, 0x84, - 0x9c, 0x04, 0x94, 0x84, 0x9b, 0x04, 0x94, 0x84, 0x9c, 0x04, 0x94, 0x84, - 0x9b, 0x04, 0x95, 0x84, 0x9c, 0x04, 0x95, 0x84, 0x9b, 0x04, 0x96, 0x84, - 0x9c, 0x04, 0x96, 0x84, 0x9b, 0x04, 0x97, 0x84, 0x9c, 0x04, 0x97, 0x84, - 0x9b, 0x04, 0x98, 0x84, 0x9c, 0x04, 0x98, 0x84, 0x9b, 0x04, 0x98, 0x84, - 0x9c, 0x04, 0x99, 0x84, 0x9b, 0x04, 0x99, 0x84, 0x9c, 0x04, 0x9a, 0x84, - 0x9b, 0x04, 0x9a, 0x84, 0x9c, 0x04, 0x9a, 0x84, 0x9b, 0x04, 0x9b, 0x84, - 0x9c, 0x04, 0x9b, 0x84, 0x9b, 0x04, 0x9c, 0x84, 0x9c, 0x04, 0x9c, 0x84, - 0x9c, 0x04, 0x9d, 0x84, 0x9d, 0x04, 0x9d, 0x84, 0x9d, 0x04, 0x9d, 0x84, - 0x9d, 0x04, 0x9e, 0x84, 0x9e, 0x04, 0x9e, 0x84, 0x9e, 0x04, 0x9f, 0x84, - 0x9f, 0x04, 0x9f, 0x84, 0x9e, 0x04, 0x9f, 0x84, 0x9f, 0x04, 0xa0, 0x84, - 0x9e, 0x04, 0xa0, 0x84, 0x9f, 0x04, 0xa1, 0x84, 0x9e, 0x04, 0xa1, 0x84, - 0x9f, 0x04, 0xa1, 0x84, 0x9e, 0x04, 0xa2, 0x84, 0x9f, 0x04, 0xa2, 0x84, - 0x9e, 0x04, 0xa3, 0x84, 0x9f, 0x04, 0xa3, 0x84, 0x9e, 0x04, 0xa3, 0x84, - 0x9f, 0x04, 0xa4, 0x84, 0x9e, 0x04, 0xa4, 0x84, 0x9f, 0x04, 0xa5, 0x84, - 0x9e, 0x04, 0xa5, 0x84, 0x9f, 0x04, 0xa5, 0x84, 0x9e, 0x04, 0xa6, 0x84, - 0x9f, 0x04, 0xa6, 0x84, 0x9e, 0x04, 0xa6, 0x84, 0x9f, 0x04, 0xa7, 0x84, - 0x9e, 0x04, 0xa7, 0x84, 0x9f, 0x04, 0xa8, 0x84, 0x9e, 0x04, 0xa8, 0x84, - 0x9f, 0x04, 0xa8, 0x84, 0x9e, 0x04, 0xa9, 0x84, 0x9f, 0x04, 0xa9, 0x85, - 0xa2, 0x04, 0xaa, 0x84, 0x9f, 0x04, 0xaa, 0x85, 0xa2, 0x04, 0xaa, 0x84, - 0x9f, 0x04, 0xab, 0x85, 0xa2, 0x04, 0xab, 0x85, 0xa2, 0x04, 0xab, 0x85, - 0xa2, 0x04, 0xac, 0x85, 0xa2, 0x04, 0xac, 0x85, 0xa2, 0x04, 0xac, 0x86, - 0xa6, 0x04, 0xad, 0x86, 0xa6, 0x04, 0xad, 0x86, 0xa6, 0x04, 0xae, 0x86, - 0xa6, 0x04, 0xae, 0x86, 0xa6, 0x04, 0xae, 0x86, 0xa6, 0x04, 0xaf, 0x86, - 0xa6, 0x04, 0xaf, 0x86, 0xa6, 0x04, 0xaf, 0x86, 0xa6, 0x04, 0xb0, 0x86, - 0xa6, 0x04, 0xb0, 0x86, 0xa6, 0x04, 0xb0, 0x86, 0xa6, 0x04, 0xb1, 0x87, - 0xaa, 0x04, 0xb1, 0x86, 0xa6, 0x04, 0xb2, 0x87, 0xaa, 0x04, 0xb2, 0x86, - 0xa6, 0x04, 0xb2, 0x87, 0xaa, 0x04, 0xb3, 0x87, 0xa9, 0x04, 0xb3, 0x87, - 0xaa, 0x04, 0xb3, 0x87, 0xa9, 0x04, 0xb4, 0x87, 0xaa, 0x04, 0xb4, 0x88, - 0xad, 0x04, 0xb4, 0x88, 0xad, 0x04, 0xb5, 0x88, 0xad, 0x04, 0xb5, 0x88, - 0xad, 0x04, 0xb5, 0x88, 0xad, 0x04, 0xb6, 0x88, 0xad, 0x04, 0xb6, 0x88, - 0xad, 0x04, 0xb6, 0x88, 0xad, 0x04, 0xb7, 0x88, 0xad, 0x04, 0xb7, 0x88, - 0xad, 0x04, 0xb7, 0x89, 0xb0, 0x04, 0xb8, 0x88, 0xad, 0x04, 0xb8, 0x89, - 0xb0, 0x04, 0xb8, 0x88, 0xad, 0x04, 0xb9, 0x89, 0xb0, 0x04, 0xb9, 0x89, - 0xb2, 0x04, 0xb9, 0x89, 0xb0, 0x04, 0xba, 0x89, 0xb2, 0x04, 0xba, 0x89, - 0xb0, 0x04, 0xba, 0x89, 0xb2, 0x04, 0xbb, 0x89, 0xb0, 0x04, 0xbb, 0x89, - 0xb2, 0x04, 0xbb, 0x89, 0xb0, 0x04, 0xbc, 0x89, 0xb2, 0x04, 0xbc, 0x89, - 0xb2, 0x04, 0xbc, 0x89, 0xb2, 0x04, 0xbd, 0x89, 0xb2, 0x04, 0xbd, 0x89, - 0xb2, 0x04, 0xbd, 0x8b, 0xb7, 0x04, 0xbe, 0x8b, 0xb7, 0x04, 0xbe, 0x8b, - 0xb7, 0x04, 0xbe, 0x8b, 0xb7, 0x04, 0xbf, 0x8b, 0xb7, 0x04, 0xbf, 0x8b, - 0xb7, 0x04, 0xbf, 0x8b, 0xb7, 0x04, 0xc0, 0x8b, 0xb7, 0x04, 0xc0, 0x8b, - 0xb7, 0x04, 0xc0, 0x8b, 0xb7, 0x04, 0xc1, 0x8c, 0xba, 0x04, 0xc1, 0x8b, - 0xb7, 0x04, 0xc1, 0x8c, 0xba, 0x04, 0xc1, 0x8b, 0xb7, 0x04, 0xc2, 0x8c, - 0xba, 0x04, 0xc2, 0x8b, 0xb7, 0x04, 0xc2, 0x8c, 0xba, 0x04, 0xc3, 0x8c, - 0xba, 0x04, 0xc3, 0x8c, 0xba, 0x04, 0xc3, 0x8c, 0xba, 0x04, 0xc4, 0x8c, - 0xba, 0x04, 0xc4, 0x8d, 0xbd, 0x04, 0xc4, 0x8c, 0xba, 0x04, 0xc5, 0x8d, - 0xbd, 0x04, 0xc5, 0x8c, 0xba, 0x04, 0xc5, 0x8d, 0xbd, 0x04, 0xc6, 0x8d, - 0xbd, 0x04, 0xc6, 0x8d, 0xbd, 0x04, 0xc6, 0x8d, 0xbd, 0x04, 0xc6, 0x8d, - 0xbd, 0x04, 0xc7, 0x8e, 0xc0, 0x04, 0xc7, 0x8e, 0xc0, 0x04, 0xc7, 0x8e, - 0xc0, 0x04, 0xc8, 0x8e, 0xc0, 0x04, 0xc8, 0x8e, 0xc0, 0x04, 0xc8, 0x8e, - 0xc0, 0x04, 0xc9, 0x8e, 0xc0, 0x04, 0xc9, 0x8e, 0xc0, 0x04, 0xc9, 0x8e, - 0xc0, 0x04, 0xc9, 0x8e, 0xc0, 0x04, 0xca, 0x8e, 0xc3, 0x04, 0xca, 0x8e, - 0xc0, 0x04, 0xca, 0x8e, 0xc3, 0x04, 0xcb, 0x8e, 0xc0, 0x04, 0xcb, 0x8e, - 0xc3, 0x04, 0xcb, 0x8e, 0xc0, 0x04, 0xcc, 0x8e, 0xc3, 0x04, 0xcc, 0x8e, - 0xc3, 0x04, 0xcc, 0x8e, 0xc3, 0x04, 0xcc, 0x8f, 0xc6, 0x04, 0xcd, 0x8e, - 0xc3, 0x04, 0xcd, 0x8f, 0xc6, 0x04, 0xcd, 0x8e, 0xc3, 0x04, 0xce, 0x8f, - 0xc6, 0x04, 0xce, 0x8e, 0xc3, 0x04, 0xce, 0x8f, 0xc6, 0x04, 0xce, 0x8f, - 0xc6, 0x04, 0xcf, 0x8f, 0xc6, 0x04, 0xcf, 0x8f, 0xc6, 0x04, 0xcf, 0x8f, - 0xc6, 0x04, 0xd0, 0x90, 0xc9, 0x04, 0xd0, 0x90, 0xc9, 0x04, 0xd0, 0x90, - 0xc9, 0x04, 0xd0, 0x90, 0xc9, 0x04, 0xd1, 0x90, 0xc9, 0x04, 0xd1, 0x90, - 0xc9, 0x04, 0xd1, 0x90, 0xc9, 0x04, 0xd2, 0x90, 0xc9, 0x04, 0xd2, 0x90, - 0xc9, 0x04, 0xd2, 0x90, 0xc9, 0x04, 0xd2, 0x91, 0xcc, 0x04, 0xd3, 0x90, - 0xc9, 0x04, 0xd3, 0x91, 0xcc, 0x04, 0xd3, 0x90, 0xc9, 0x04, 0xd4, 0x91, - 0xcc, 0x04, 0xd4, 0x91, 0xca, 0x04, 0xd4, 0x91, 0xcc, 0x04, 0xd4, 0x91, - 0xca, 0x04, 0xd5, 0x91, 0xcc, 0x04, 0xd5, 0x92, 0xce, 0x04, 0xd5, 0x92, - 0xce, 0x04, 0xd6, 0x92, 0xce, 0x04, 0xd6, 0x92, 0xce, 0x04, 0xd6, 0x92, - 0xce, 0x04, 0xd6, 0x92, 0xce, 0x04, 0xd7, 0x92, 0xce, 0x04, 0xd7, 0x92, - 0xce, 0x04, 0xd7, 0x92, 0xce, 0x04, 0xd7, 0x92, 0xce, 0x04, 0xd8, 0x93, - 0xd1, 0x04, 0xd8, 0x92, 0xce, 0x04, 0xd8, 0x93, 0xd1, 0x04, 0xd9, 0x92, - 0xce, 0x04, 0xd9, 0x93, 0xd1, 0x04, 0xd9, 0x92, 0xce, 0x04, 0xd9, 0x93, - 0xd1, 0x04, 0xda, 0x93, 0xd1, 0x04, 0xda, 0x93, 0xd1, 0x04, 0xda, 0x94, - 0xd4, 0x04, 0xda, 0x93, 0xd1, 0x04, 0xdb, 0x94, 0xd4, 0x04, 0xdb, 0x93, - 0xd1, 0x04, 0xdb, 0x94, 0xd4, 0x04, 0xdb, 0x93, 0xd1, 0x04, 0xdc, 0x94, - 0xd4, 0x04, 0xdc, 0x94, 0xd3, 0x04, 0xdc, 0x94, 0xd4, 0x04, 0xdd, 0x95, - 0xd6, 0x04, 0xdd, 0x95, 0xd6, 0x04, 0xdd, 0x95, 0xd6, 0x04, 0xdd, 0x95, - 0xd6, 0x04, 0xde, 0x95, 0xd6, 0x04, 0xde, 0x95, 0xd6, 0x04, 0xde, 0x95, - 0xd6, 0x04, 0xde, 0x95, 0xd6, 0x04, 0xdf, 0x95, 0xd6, 0x04, 0xdf, 0x95, - 0xd6, 0x04, 0xdf, 0x95, 0xd6, 0x04, 0xdf, 0x95, 0xd6, 0x04, 0xe0, 0x96, - 0xd9, 0x04, 0xe0, 0x95, 0xd6, 0x04, 0xe0, 0x96, 0xd9, 0x04, 0xe1, 0x95, - 0xd6, 0x04, 0xe1, 0x96, 0xd9, 0x04, 0xe1, 0x95, 0xd6, 0x04, 0xe1, 0x96, - 0xd9, 0x04, 0xe2, 0x96, 0xd9, 0x04, 0xe2, 0x96, 0xd9, 0x04, 0xe2, 0x97, - 0xdb, 0x04, 0xe2, 0x96, 0xd9, 0x04, 0xe3, 0x97, 0xdb, 0x04, 0xe3, 0x96, - 0xd9, 0x04, 0xe3, 0x97, 0xdb, 0x04, 0xe3, 0x96, 0xd9, 0x04, 0xe4, 0x97, - 0xdb, 0x04, 0xe4, 0x97, 0xdb, 0x04, 0xe4, 0x97, 0xdb, 0x04, 0xe4, 0x98, - 0xde, 0x04, 0xe5, 0x98, 0xde, 0x04, 0xe5, 0x98, 0xde, 0x04, 0xe5, 0x98, - 0xde, 0x04, 0xe5, 0x98, 0xde, 0x04, 0xe6, 0x98, 0xde, 0x04, 0xe6, 0x98, - 0xde, 0x04, 0xe6, 0x98, 0xde, 0x04, 0xe6, 0x98, 0xde, 0x04, 0xe7, 0x98, - 0xde, 0x04, 0xe7, 0x98, 0xe0, 0x04, 0xe7, 0x98, 0xde, 0x04, 0xe7, 0x98, - 0xe0, 0x04, 0xe8, 0x98, 0xde, 0x04, 0xe8, 0x98, 0xe0, 0x04, 0xe8, 0x98, - 0xde, 0x04, 0xe8, 0x98, 0xe0, 0x04, 0xe9, 0x98, 0xdf, 0x04, 0xe9, 0x98, - 0xe0, 0x04, 0xe9, 0x98, 0xdf, 0x04, 0xe9, 0x98, 0xe0, 0x04, 0xea, 0x99, - 0xe3, 0x04, 0xea, 0x98, 0xe0, 0x04, 0xea, 0x99, 0xe3, 0x04, 0xea, 0x98, - 0xe0, 0x04, 0xeb, 0x99, 0xe3, 0x04, 0xeb, 0x98, 0xe0, 0x04, 0xeb, 0x99, - 0xe3, 0x04, 0xeb, 0x99, 0xe2, 0x04, 0xec, 0x99, 0xe3, 0x04, 0xec, 0x9a, - 0xe5, 0x04, 0xec, 0x9a, 0xe5, 0x04, 0xec, 0x9a, 0xe5, 0x04, 0xec, 0x9a, - 0xe5, 0x04, 0xed, 0x9a, 0xe5, 0x04, 0xed, 0x9a, 0xe5, 0x04, 0xed, 0x9a, - 0xe5, 0x04, 0xed, 0x9a, 0xe5, 0x04, 0xee, 0x9a, 0xe5, 0x04, 0xee, 0x9a, - 0xe5, 0x04, 0xee, 0x9b, 0xe7, 0x04, 0xee, 0x9a, 0xe5, 0x04, 0xef, 0x9b, - 0xe7, 0x04, 0xef, 0x9a, 0xe5, 0x04, 0xef, 0x9b, 0xe7, 0x04, 0xef, 0x9a, - 0xe5, 0x04, 0xf0, 0x9b, 0xe7, 0x04, 0xf0, 0x9b, 0xe7, 0x04, 0xf0, 0x9b, - 0xe7, 0x04, 0xf0, 0x9c, 0xea, 0x04, 0xf1, 0x9c, 0xea, 0x04, 0xf1, 0x9c, - 0xea, 0x04, 0xf1, 0x9c, 0xea, 0x04, 0xf1, 0x9c, 0xea, 0x04, 0xf2, 0x9c, - 0xea, 0x04, 0xf2, 0x9c, 0xea, 0x04, 0xf2, 0x9c, 0xea, 0x04, 0xf2, 0x9c, - 0xea, 0x04, 0xf2, 0x9c, 0xea, 0x04, 0xf3, 0x9d, 0xec, 0x04, 0xf3, 0x9c, - 0xea, 0x04, 0xf3, 0x9d, 0xec, 0x04, 0xf3, 0x9c, 0xea, 0x04, 0xf4, 0x9d, - 0xec, 0x04, 0xf4, 0x9c, 0xea, 0x04, 0xf4, 0x9d, 0xec, 0x04, 0xf4, 0x9c, - 0xea, 0x04, 0xf5, 0x9d, 0xec, 0x04, 0xf5, 0x9d, 0xee, 0x04, 0xf5, 0x9d, - 0xec, 0x04, 0xf5, 0x9d, 0xee, 0x04, 0xf5, 0x9d, 0xec, 0x04, 0xf6, 0x9d, - 0xee, 0x04, 0xf6, 0x9d, 0xec, 0x04, 0xf6, 0x9d, 0xee, 0x04, 0xf6, 0x9d, - 0xec, 0x04, 0xf7, 0x9d, 0xee, 0x04, 0xf7, 0x9d, 0xee, 0x04, 0xf7, 0x9d, - 0xee, 0x04, 0xf7, 0x9e, 0xf0, 0x04, 0xf8, 0x9e, 0xf1, 0x04, 0xf8, 0x9e, - 0xf0, 0x04, 0xf8, 0x9e, 0xf1, 0x04, 0xf8, 0x9e, 0xf0, 0x04, 0xf8, 0x9e, - 0xf1, 0x04, 0xf9, 0x9e, 0xf0, 0x04, 0xf9, 0x9e, 0xf1, 0x04, 0xf9, 0x9e, - 0xf0, 0x04, 0xf9, 0x9e, 0xf1, 0x04, 0xfa, 0x9f, 0xf3, 0x04, 0xfa, 0x9e, - 0xf1, 0x04, 0xfa, 0x9f, 0xf3, 0x04, 0xfa, 0x9e, 0xf1, 0x04, 0xfa, 0x9f, - 0xf3, 0x04, 0xfb, 0x9e, 0xf1, 0x04, 0xfb, 0x9f, 0xf3, 0x04, 0xfb, 0x9f, - 0xf2, 0x04, 0xfb, 0x9f, 0xf3, 0x04, 0xfc, 0xa0, 0xf5, 0x04, 0xfc, 0x9f, - 0xf3, 0x04, 0xfc, 0xa0, 0xf5, 0x04, 0xfc, 0x9f, 0xf3, 0x04, 0xfc, 0xa0, - 0xf5, 0x04, 0xfd, 0x9f, 0xf3, 0x04, 0xfd, 0xa0, 0xf5, 0x04, 0xfd, 0x9f, - 0xf3, 0x04, 0xfd, 0xa0, 0xf5, 0x04, 0xfe, 0xa1, 0xf7, 0x04, 0xfe, 0xa1, - 0xf7, 0x04, 0xfe, 0xa1, 0xf7, 0x04, 0xfe, 0xa1, 0xf7, 0x04, 0xfe, 0xa1, - 0xf7, 0x04, 0xff, 0xa1, 0xf7, 0x04, 0xff, 0xa1, 0xf7, 0x04, 0x03, 0x83, - 0x9b, 0x04, 0x0a, 0x83, 0x9b, 0x04, 0x0f, 0x83, 0x9b, 0x04, 0x14, 0x83, - 0x9b, 0x04, 0x17, 0x83, 0x9b, 0x04, 0x1b, 0x83, 0x9b, 0x04, 0x1e, 0x83, - 0x9b, 0x04, 0x20, 0x83, 0x9c, 0x04, 0x23, 0x83, 0x9b, 0x04, 0x25, 0x83, - 0x9c, 0x04, 0x27, 0x83, 0x9b, 0x04, 0x29, 0x83, 0x9c, 0x04, 0x2b, 0x83, - 0x9b, 0x04, 0x2d, 0x83, 0x9c, 0x04, 0x2f, 0x83, 0x9b, 0x04, 0x31, 0x83, - 0x9c, 0x04, 0x32, 0x83, 0x9b, 0x04, 0x34, 0x83, 0x9c, 0x04, 0x35, 0x83, - 0x9b, 0x04, 0x37, 0x83, 0x9c, 0x04, 0x38, 0x83, 0x9b, 0x04, 0x3a, 0x83, - 0x9c, 0x04, 0x3b, 0x83, 0x9b, 0x04, 0x3c, 0x83, 0x9c, 0x04, 0x3e, 0x83, - 0x9b, 0x04, 0x3f, 0x83, 0x9c, 0x04, 0x40, 0x83, 0x9b, 0x04, 0x42, 0x83, - 0x9c, 0x04, 0x43, 0x83, 0x9b, 0x04, 0x44, 0x83, 0x9c, 0x04, 0x45, 0x83, - 0x9b, 0x04, 0x46, 0x83, 0x9c, 0x04, 0x47, 0x83, 0x9b, 0x04, 0x48, 0x83, - 0x9c, 0x04, 0x49, 0x83, 0x9b, 0x04, 0x4a, 0x83, 0x9c, 0x04, 0x4b, 0x83, - 0x9b, 0x04, 0x4c, 0x83, 0x9c, 0x04, 0x4d, 0x83, 0x9b, 0x04, 0x4e, 0x83, - 0x9c, 0x04, 0x4f, 0x83, 0x9b, 0x04, 0x50, 0x83, 0x9c, 0x04, 0x51, 0x83, - 0x9b, 0x04, 0x52, 0x83, 0x9c, 0x04, 0x53, 0x83, 0x9b, 0x04, 0x54, 0x83, - 0x9c, 0x04, 0x55, 0x83, 0x9b, 0x04, 0x56, 0x83, 0x9c, 0x04, 0x57, 0x83, - 0x9b, 0x04, 0x58, 0x83, 0x9c, 0x04, 0x58, 0x83, 0x9b, 0x04, 0x59, 0x83, - 0x9c, 0x04, 0x5a, 0x83, 0x9b, 0x04, 0x5b, 0x83, 0x9c, 0x04, 0x5c, 0x83, - 0x9b, 0x04, 0x5d, 0x83, 0x9c, 0x04, 0x5d, 0x83, 0x9b, 0x04, 0x5e, 0x83, - 0x9c, 0x04, 0x5f, 0x83, 0x9b, 0x04, 0x60, 0x83, 0x9c, 0x04, 0x60, 0x83, - 0x9b, 0x04, 0x61, 0x83, 0x9c, 0x04, 0x62, 0x83, 0x9b, 0x04, 0x63, 0x83, - 0x9c, 0x04, 0x63, 0x83, 0x9b, 0x04, 0x64, 0x83, 0x9c, 0x04, 0x65, 0x83, - 0x9b, 0x04, 0x66, 0x83, 0x9c, 0x04, 0x66, 0x83, 0x9b, 0x04, 0x67, 0x83, - 0x9c, 0x04, 0x68, 0x83, 0x9b, 0x04, 0x68, 0x83, 0x9c, 0x04, 0x69, 0x83, - 0x9b, 0x04, 0x6a, 0x83, 0x9c, 0x04, 0x6a, 0x83, 0x9b, 0x04, 0x6b, 0x83, - 0x9c, 0x04, 0x6c, 0x83, 0x9b, 0x04, 0x6c, 0x83, 0x9c, 0x04, 0x6d, 0x83, - 0x9b, 0x04, 0x6e, 0x83, 0x9c, 0x04, 0x6e, 0x83, 0x9b, 0x04, 0x6f, 0x83, - 0x9c, 0x04, 0x70, 0x83, 0x9b, 0x04, 0x70, 0x83, 0x9c, 0x04, 0x71, 0x83, - 0x9b, 0x04, 0x72, 0x83, 0x9c, 0x04, 0x72, 0x83, 0x9b, 0x04, 0x73, 0x83, - 0x9c, 0x04, 0x73, 0x83, 0x9b, 0x04, 0x74, 0x83, 0x9c, 0x04, 0x75, 0x83, - 0x9b, 0x04, 0x75, 0x83, 0x9c, 0x04, 0x76, 0x83, 0x9b, 0x04, 0x76, 0x83, - 0x9c, 0x04, 0x77, 0x83, 0x9b, 0x04, 0x78, 0x83, 0x9c, 0x04, 0x78, 0x83, - 0x9b, 0x04, 0x79, 0x83, 0x9c, 0x04, 0x79, 0x83, 0x9b, 0x04, 0x7a, 0x83, - 0x9c, 0x04, 0x7a, 0x83, 0x9b, 0x04, 0x7b, 0x83, 0x9c, 0x04, 0x7c, 0x83, - 0x9b, 0x04, 0x7c, 0x83, 0x9c, 0x04, 0x7d, 0x83, 0x9b, 0x04, 0x7d, 0x83, - 0x9c, 0x04, 0x7e, 0x83, 0x9b, 0x04, 0x7e, 0x83, 0x9c, 0x04, 0x7f, 0x83, - 0x9b, 0x04, 0x7f, 0x83, 0x9c, 0x04, 0x80, 0x83, 0x9b, 0x04, 0x81, 0x83, - 0x9c, 0x04, 0x81, 0x83, 0x9b, 0x04, 0x82, 0x83, 0x9c, 0x04, 0x82, 0x83, - 0x9b, 0x04, 0x83, 0x83, 0x9c, 0x04, 0x83, 0x83, 0x9b, 0x04, 0x84, 0x83, - 0x9c, 0x04, 0x84, 0x83, 0x9b, 0x04, 0x85, 0x83, 0x9c, 0x04, 0x85, 0x83, - 0x9b, 0x04, 0x86, 0x83, 0x9c, 0x04, 0x86, 0x83, 0x9b, 0x04, 0x87, 0x83, - 0x9c, 0x04, 0x87, 0x83, 0x9b, 0x04, 0x88, 0x83, 0x9c, 0x04, 0x88, 0x83, - 0x9b, 0x04, 0x89, 0x83, 0x9c, 0x04, 0x89, 0x83, 0x9b, 0x04, 0x8a, 0x83, - 0x9c, 0x04, 0x8a, 0x83, 0x9b, 0x04, 0x8b, 0x83, 0x9c, 0x04, 0x8b, 0x83, - 0x9b, 0x04, 0x8c, 0x83, 0x9c, 0x04, 0x8c, 0x83, 0x9b, 0x04, 0x8d, 0x83, - 0x9c, 0x04, 0x8d, 0x83, 0x9b, 0x04, 0x8e, 0x83, 0x9c, 0x04, 0x8e, 0x83, - 0x9b, 0x04, 0x8e, 0x83, 0x9c, 0x04, 0x8f, 0x83, 0x9b, 0x04, 0x8f, 0x83, - 0x9c, 0x04, 0x90, 0x83, 0x9b, 0x04, 0x90, 0x83, 0x9c, 0x04, 0x91, 0x83, - 0x9b, 0x04, 0x91, 0x83, 0x9c, 0x04, 0x92, 0x83, 0x9b, 0x04, 0x92, 0x83, - 0x9c, 0x04, 0x93, 0x83, 0x9b, 0x04, 0x93, 0x83, 0x9c, 0x04, 0x94, 0x83, - 0x9b, 0x04, 0x94, 0x83, 0x9c, 0x04, 0x94, 0x83, 0x9b, 0x04, 0x95, 0x83, - 0x9c, 0x04, 0x95, 0x83, 0x9b, 0x04, 0x96, 0x83, 0x9c, 0x04, 0x96, 0x83, - 0x9b, 0x04, 0x97, 0x83, 0x9c, 0x04, 0x97, 0x83, 0x9b, 0x04, 0x98, 0x83, - 0x9c, 0x04, 0x98, 0x83, 0x9b, 0x04, 0x98, 0x83, 0x9c, 0x04, 0x99, 0x83, - 0x9b, 0x04, 0x99, 0x83, 0x9c, 0x04, 0x9a, 0x83, 0x9b, 0x04, 0x9a, 0x83, - 0x9c, 0x04, 0x9a, 0x83, 0x9b, 0x04, 0x9b, 0x83, 0x9c, 0x04, 0x9b, 0x83, - 0x9b, 0x04, 0x9c, 0x83, 0x9c, 0x04, 0x9c, 0x83, 0x9c, 0x04, 0x9d, 0x83, - 0x9d, 0x04, 0x9d, 0x83, 0x9c, 0x04, 0x9d, 0x83, 0x9d, 0x04, 0x9e, 0x83, - 0x9c, 0x04, 0x9e, 0x83, 0x9d, 0x04, 0x9f, 0x83, 0x9c, 0x04, 0x9f, 0x83, - 0x9d, 0x04, 0x9f, 0x83, 0x9c, 0x04, 0xa0, 0x83, 0x9d, 0x04, 0xa0, 0x83, - 0x9c, 0x04, 0xa1, 0x83, 0x9d, 0x04, 0xa1, 0x83, 0x9c, 0x04, 0xa1, 0x83, - 0x9d, 0x04, 0xa2, 0x83, 0x9c, 0x04, 0xa2, 0x83, 0x9d, 0x04, 0xa3, 0x83, - 0x9c, 0x04, 0xa3, 0x83, 0x9d, 0x04, 0xa3, 0x83, 0x9c, 0x04, 0xa4, 0x83, - 0x9d, 0x04, 0xa4, 0x83, 0x9c, 0x04, 0xa5, 0x83, 0x9d, 0x04, 0xa5, 0x83, - 0x9c, 0x04, 0xa5, 0x83, 0x9d, 0x04, 0xa6, 0x83, 0x9c, 0x04, 0xa6, 0x83, - 0x9d, 0x04, 0xa6, 0x83, 0x9c, 0x04, 0xa7, 0x83, 0x9d, 0x04, 0xa7, 0x84, - 0xa0, 0x04, 0xa8, 0x84, 0xa1, 0x04, 0xa8, 0x84, 0xa0, 0x04, 0xa8, 0x84, - 0xa1, 0x04, 0xa9, 0x84, 0xa0, 0x04, 0xa9, 0x84, 0xa1, 0x04, 0xaa, 0x84, - 0xa0, 0x04, 0xaa, 0x84, 0xa1, 0x04, 0xaa, 0x84, 0xa0, 0x04, 0xab, 0x84, - 0xa1, 0x04, 0xab, 0x85, 0xa4, 0x04, 0xab, 0x84, 0xa1, 0x04, 0xac, 0x85, - 0xa4, 0x04, 0xac, 0x84, 0xa1, 0x04, 0xac, 0x85, 0xa4, 0x04, 0xad, 0x85, - 0xa4, 0x04, 0xad, 0x85, 0xa4, 0x04, 0xae, 0x85, 0xa4, 0x04, 0xae, 0x85, - 0xa4, 0x04, 0xae, 0x86, 0xa8, 0x04, 0xaf, 0x85, 0xa4, 0x04, 0xaf, 0x86, - 0xa8, 0x04, 0xaf, 0x85, 0xa4, 0x04, 0xb0, 0x86, 0xa8, 0x04, 0xb0, 0x85, - 0xa4, 0x04, 0xb0, 0x86, 0xa8, 0x04, 0xb1, 0x86, 0xa7, 0x04, 0xb1, 0x86, - 0xa8, 0x04, 0xb2, 0x86, 0xa7, 0x04, 0xb2, 0x86, 0xa8, 0x04, 0xb2, 0x87, - 0xab, 0x04, 0xb3, 0x87, 0xab, 0x04, 0xb3, 0x87, 0xab, 0x04, 0xb3, 0x87, - 0xab, 0x04, 0xb4, 0x87, 0xab, 0x04, 0xb4, 0x87, 0xab, 0x04, 0xb4, 0x87, - 0xab, 0x04, 0xb5, 0x87, 0xab, 0x04, 0xb5, 0x87, 0xab, 0x04, 0xb5, 0x87, - 0xab, 0x04, 0xb6, 0x88, 0xaf, 0x04, 0xb6, 0x87, 0xab, 0x04, 0xb6, 0x88, - 0xaf, 0x04, 0xb7, 0x87, 0xab, 0x04, 0xb7, 0x88, 0xaf, 0x04, 0xb7, 0x88, - 0xae, 0x04, 0xb8, 0x88, 0xaf, 0x04, 0xb8, 0x88, 0xae, 0x04, 0xb8, 0x88, - 0xaf, 0x04, 0xb9, 0x89, 0xb2, 0x04, 0xb9, 0x89, 0xb2, 0x04, 0xb9, 0x89, - 0xb2, 0x04, 0xba, 0x89, 0xb2, 0x04, 0xba, 0x89, 0xb2, 0x04, 0xba, 0x89, - 0xb2, 0x04, 0xbb, 0x89, 0xb2, 0x04, 0xbb, 0x89, 0xb2, 0x04, 0xbb, 0x89, - 0xb2, 0x04, 0xbc, 0x89, 0xb2, 0x04, 0xbc, 0x8a, 0xb5, 0x04, 0xbc, 0x89, - 0xb2, 0x04, 0xbd, 0x8a, 0xb5, 0x04, 0xbd, 0x89, 0xb2, 0x04, 0xbd, 0x8a, - 0xb5, 0x04, 0xbe, 0x89, 0xb2, 0x04, 0xbe, 0x8a, 0xb5, 0x04, 0xbe, 0x8a, - 0xb5, 0x04, 0xbf, 0x8a, 0xb5, 0x04, 0xbf, 0x8b, 0xb8, 0x04, 0xbf, 0x8a, - 0xb5, 0x04, 0xc0, 0x8b, 0xb8, 0x04, 0xc0, 0x8a, 0xb5, 0x04, 0xc0, 0x8b, - 0xb8, 0x04, 0xc1, 0x8a, 0xb5, 0x04, 0xc1, 0x8b, 0xb8, 0x04, 0xc1, 0x8b, - 0xb8, 0x04, 0xc1, 0x8b, 0xb8, 0x04, 0xc2, 0x8c, 0xbb, 0x04, 0xc2, 0x8c, - 0xbc, 0x04, 0xc2, 0x8c, 0xbb, 0x04, 0xc3, 0x8c, 0xbc, 0x04, 0xc3, 0x8c, - 0xbb, 0x04, 0xc3, 0x8c, 0xbc, 0x04, 0xc4, 0x8c, 0xbb, 0x04, 0xc4, 0x8c, - 0xbc, 0x04, 0xc4, 0x8c, 0xbb, 0x04, 0xc5, 0x8c, 0xbc, 0x04, 0xc5, 0x8c, - 0xbb, 0x04, 0xc5, 0x8c, 0xbc, 0x04, 0xc6, 0x8d, 0xbf, 0x04, 0xc6, 0x8c, - 0xbc, 0x04, 0xc6, 0x8d, 0xbf, 0x04, 0xc6, 0x8c, 0xbc, 0x04, 0xc7, 0x8d, - 0xbf, 0x04, 0xc7, 0x8d, 0xbe, 0x04, 0xc7, 0x8d, 0xbf, 0x04, 0xc8, 0x8d, - 0xbe, 0x04, 0xc8, 0x8d, 0xbf, 0x04, 0xc8, 0x8e, 0xc1, 0x04, 0xc9, 0x8d, - 0xbf, 0x04, 0xc9, 0x8e, 0xc1, 0x04, 0xc9, 0x8d, 0xbf, 0x04, 0xc9, 0x8e, - 0xc1, 0x04, 0xca, 0x8d, 0xbf, 0x04, 0xca, 0x8e, 0xc1, 0x04, 0xca, 0x8e, - 0xc1, 0x04, 0xcb, 0x8e, 0xc1, 0x04, 0xcb, 0x8f, 0xc4, 0x04, 0xcb, 0x8f, - 0xc5, 0x04, 0xcc, 0x8f, 0xc4, 0x04, 0xcc, 0x8f, 0xc5, 0x04, 0xcc, 0x8f, - 0xc4, 0x04, 0xcc, 0x8f, 0xc5, 0x04, 0xcd, 0x8f, 0xc4, 0x04, 0xcd, 0x8f, - 0xc5, 0x04, 0xcd, 0x8f, 0xc4, 0x04, 0xce, 0x8f, 0xc5, 0x04, 0xce, 0x90, - 0xc7, 0x04, 0xce, 0x8f, 0xc5, 0x04, 0xce, 0x90, 0xc7, 0x04, 0xcf, 0x8f, - 0xc5, 0x04, 0xcf, 0x90, 0xc7, 0x04, 0xcf, 0x8f, 0xc5, 0x04, 0xd0, 0x90, - 0xc7, 0x04, 0xd0, 0x90, 0xc7, 0x04, 0xd0, 0x90, 0xc7, 0x04, 0xd0, 0x91, - 0xca, 0x04, 0xd1, 0x90, 0xc7, 0x04, 0xd1, 0x91, 0xca, 0x04, 0xd1, 0x90, - 0xc7, 0x04, 0xd2, 0x91, 0xca, 0x04, 0xd2, 0x90, 0xc7, 0x04, 0xd2, 0x91, - 0xca, 0x04, 0xd2, 0x91, 0xca, 0x04, 0xd3, 0x91, 0xca, 0x04, 0xd3, 0x91, - 0xca, 0x04, 0xd3, 0x91, 0xca, 0x04, 0xd4, 0x92, 0xcd, 0x04, 0xd4, 0x92, - 0xcd, 0x04, 0xd4, 0x92, 0xcd, 0x04, 0xd4, 0x92, 0xcd, 0x04, 0xd5, 0x92, - 0xcd, 0x04, 0xd5, 0x92, 0xcd, 0x04, 0xd5, 0x92, 0xcd, 0x04, 0xd6, 0x92, - 0xcd, 0x04, 0xd6, 0x92, 0xcd, 0x04, 0xd6, 0x92, 0xcd, 0x04, 0xd6, 0x93, - 0xd0, 0x04, 0xd7, 0x92, 0xcd, 0x04, 0xd7, 0x93, 0xd0, 0x04, 0xd7, 0x92, - 0xcd, 0x04, 0xd7, 0x93, 0xd0, 0x04, 0xd8, 0x92, 0xcd, 0x04, 0xd8, 0x93, - 0xd0, 0x04, 0xd8, 0x93, 0xcf, 0x04, 0xd9, 0x93, 0xd0, 0x04, 0xd9, 0x94, - 0xd2, 0x04, 0xd9, 0x94, 0xd2, 0x04, 0xd9, 0x94, 0xd2, 0x04, 0xda, 0x94, - 0xd2, 0x04, 0xda, 0x94, 0xd2, 0x04, 0xda, 0x94, 0xd2, 0x04, 0xda, 0x94, - 0xd2, 0x04, 0xdb, 0x94, 0xd2, 0x04, 0xdb, 0x94, 0xd2, 0x04, 0xdb, 0x94, - 0xd2, 0x04, 0xdb, 0x94, 0xd5, 0x04, 0xdc, 0x94, 0xd2, 0x04, 0xdc, 0x94, - 0xd5, 0x04, 0xdc, 0x94, 0xd2, 0x04, 0xdd, 0x94, 0xd5, 0x04, 0xdd, 0x94, - 0xd2, 0x04, 0xdd, 0x94, 0xd5, 0x04, 0xdd, 0x94, 0xd5, 0x04, 0xde, 0x94, - 0xd5, 0x04, 0xde, 0x95, 0xd7, 0x04, 0xde, 0x94, 0xd5, 0x04, 0xde, 0x95, - 0xd7, 0x04, 0xdf, 0x94, 0xd5, 0x04, 0xdf, 0x95, 0xd7, 0x04, 0xdf, 0x94, - 0xd5, 0x04, 0xdf, 0x95, 0xd7, 0x04, 0xe0, 0x94, 0xd5, 0x04, 0xe0, 0x95, - 0xd7, 0x04, 0xe0, 0x95, 0xd7, 0x04, 0xe1, 0x95, 0xd7, 0x04, 0xe1, 0x96, - 0xda, 0x04, 0xe1, 0x96, 0xda, 0x04, 0xe1, 0x96, 0xda, 0x04, 0xe2, 0x96, - 0xda, 0x04, 0xe2, 0x96, 0xda, 0x04, 0xe2, 0x96, 0xda, 0x04, 0xe2, 0x96, - 0xda, 0x04, 0xe3, 0x96, 0xda, 0x04, 0xe3, 0x96, 0xda, 0x04, 0xe3, 0x96, - 0xda, 0x04, 0xe3, 0x97, 0xdd, 0x04, 0xe4, 0x96, 0xda, 0x04, 0xe4, 0x97, - 0xdd, 0x04, 0xe4, 0x96, 0xda, 0x04, 0xe4, 0x97, 0xdd, 0x04, 0xe5, 0x96, - 0xda, 0x04, 0xe5, 0x97, 0xdd, 0x04, 0xe5, 0x97, 0xdc, 0x04, 0xe5, 0x97, - 0xdd, 0x04, 0xe6, 0x98, 0xdf, 0x04, 0xe6, 0x97, 0xdd, 0x04, 0xe6, 0x98, - 0xdf, 0x04, 0xe6, 0x97, 0xdd, 0x04, 0xe7, 0x98, 0xdf, 0x04, 0xe7, 0x97, - 0xdd, 0x04, 0xe7, 0x98, 0xdf, 0x04, 0xe7, 0x98, 0xdf, 0x04, 0xe8, 0x98, - 0xdf, 0x04, 0xe8, 0x99, 0xe1, 0x04, 0xe8, 0x99, 0xe2, 0x04, 0xe8, 0x99, - 0xe1, 0x04, 0xe9, 0x99, 0xe2, 0x04, 0xe9, 0x99, 0xe1, 0x04, 0xe9, 0x99, - 0xe2, 0x04, 0xe9, 0x99, 0xe1, 0x04, 0xea, 0x99, 0xe2, 0x04, 0xea, 0x99, - 0xe1, 0x04, 0xea, 0x99, 0xe2, 0x04, 0xea, 0x99, 0xe1, 0x04, 0xeb, 0x99, - 0xe2, 0x04, 0xeb, 0x9a, 0xe4, 0x04, 0xeb, 0x99, 0xe2, 0x04, 0xeb, 0x9a, - 0xe4, 0x04, 0xec, 0x99, 0xe2, 0x04, 0xec, 0x9a, 0xe4, 0x04, 0xec, 0x99, - 0xe2, 0x04, 0xec, 0x9a, 0xe4, 0x04, 0xec, 0x9a, 0xe4, 0x04, 0xed, 0x9a, - 0xe4, 0x04, 0xed, 0x9a, 0xe6, 0x04, 0xed, 0x9a, 0xe4, 0x04, 0xed, 0x9a, - 0xe6, 0x04, 0xee, 0x9a, 0xe4, 0x04, 0xee, 0x9a, 0xe6, 0x04, 0xee, 0x9a, - 0xe4, 0x04, 0xee, 0x9a, 0xe6, 0x04, 0xef, 0x9a, 0xe6, 0x04, 0xef, 0x9a, - 0xe6, 0x04, 0xef, 0x9b, 0xe8, 0x04, 0xef, 0x9b, 0xe9, 0x04, 0xf0, 0x9b, - 0xe8, 0x04, 0xf0, 0x9b, 0xe9, 0x04, 0xf0, 0x9b, 0xe8, 0x04, 0xf0, 0x9b, - 0xe9, 0x04, 0xf1, 0x9b, 0xe8, 0x04, 0xf1, 0x9b, 0xe9, 0x04, 0xf1, 0x9b, - 0xe8, 0x04, 0xf1, 0x9b, 0xe9, 0x04, 0xf2, 0x9c, 0xeb, 0x04, 0xf2, 0x9b, - 0xe9, 0x04, 0xf2, 0x9c, 0xeb, 0x04, 0xf2, 0x9b, 0xe9, 0x04, 0xf2, 0x9c, - 0xeb, 0x04, 0xf3, 0x9b, 0xe9, 0x04, 0xf3, 0x9c, 0xeb, 0x04, 0xf3, 0x9b, - 0xe9, 0x04, 0xf3, 0x9c, 0xeb, 0x04, 0xf4, 0x9d, 0xed, 0x04, 0xf4, 0x9d, - 0xed, 0x04, 0xf4, 0x9d, 0xed, 0x04, 0xf4, 0x9d, 0xed, 0x04, 0xf5, 0x9d, - 0xed, 0x04, 0xf5, 0x9d, 0xed, 0x04, 0xf5, 0x9d, 0xed, 0x04, 0xf5, 0x9d, - 0xed, 0x04, 0xf5, 0x9d, 0xed, 0x04, 0xf6, 0x9d, 0xed, 0x04, 0xf6, 0x9e, - 0xef, 0x04, 0xf6, 0x9d, 0xed, 0x04, 0xf6, 0x9e, 0xef, 0x04, 0xf7, 0x9d, - 0xed, 0x04, 0xf7, 0x9e, 0xef, 0x04, 0xf7, 0x9d, 0xed, 0x04, 0xf7, 0x9e, - 0xef, 0x04, 0xf8, 0x9d, 0xed, 0x04, 0xf8, 0x9e, 0xef, 0x04, 0xf8, 0x9e, - 0xef, 0x04, 0xf8, 0x9e, 0xef, 0x04, 0xf8, 0x9f, 0xf2, 0x04, 0xf9, 0x9e, - 0xef, 0x04, 0xf9, 0x9f, 0xf2, 0x04, 0xf9, 0x9e, 0xef, 0x04, 0xf9, 0x9f, - 0xf2, 0x04, 0xfa, 0x9e, 0xef, 0x04, 0xfa, 0x9f, 0xf2, 0x04, 0xfa, 0x9f, - 0xf1, 0x04, 0xfa, 0x9f, 0xf2, 0x04, 0xfa, 0x9f, 0xf4, 0x04, 0xfb, 0x9f, - 0xf4, 0x04, 0xfb, 0x9f, 0xf4, 0x04, 0xfb, 0x9f, 0xf4, 0x04, 0xfb, 0x9f, - 0xf4, 0x04, 0xfc, 0x9f, 0xf4, 0x04, 0xfc, 0x9f, 0xf4, 0x04, 0xfc, 0x9f, - 0xf4, 0x04, 0xfc, 0x9f, 0xf4, 0x04, 0xfc, 0x9f, 0xf4, 0x04, 0xfd, 0xa0, - 0xf6, 0x04, 0xfd, 0x9f, 0xf4, 0x04, 0xfd, 0xa0, 0xf6, 0x04, 0xfd, 0x9f, - 0xf4, 0x04, 0xfe, 0xa0, 0xf6, 0x04, 0xfe, 0xa0, 0xf6, 0x04, 0xfe, 0xa0, - 0xf6, 0x04, 0xfe, 0xa0, 0xf6, 0x04, 0xfe, 0xa0, 0xf6, 0x04, 0xff, 0xa0, - 0xf6, 0x04, 0xff, 0xa0, 0xf6, 0x04, 0x03, 0x84, 0x9b, 0x05, 0x0a, 0x84, - 0x9b, 0x05, 0x0f, 0x84, 0x9b, 0x05, 0x14, 0x84, 0x9b, 0x05, 0x17, 0x84, - 0x9b, 0x05, 0x1b, 0x84, 0x9b, 0x05, 0x1e, 0x84, 0x9b, 0x05, 0x20, 0x84, - 0x9c, 0x05, 0x23, 0x84, 0x9b, 0x05, 0x25, 0x84, 0x9c, 0x05, 0x27, 0x84, - 0x9b, 0x05, 0x29, 0x84, 0x9c, 0x05, 0x2b, 0x84, 0x9b, 0x05, 0x2d, 0x84, - 0x9c, 0x05, 0x2f, 0x84, 0x9b, 0x05, 0x31, 0x84, 0x9c, 0x05, 0x32, 0x84, - 0x9b, 0x05, 0x34, 0x84, 0x9c, 0x05, 0x35, 0x84, 0x9b, 0x05, 0x37, 0x84, - 0x9c, 0x05, 0x38, 0x84, 0x9b, 0x05, 0x3a, 0x84, 0x9c, 0x05, 0x3b, 0x84, - 0x9b, 0x05, 0x3c, 0x84, 0x9c, 0x05, 0x3e, 0x84, 0x9b, 0x05, 0x3f, 0x84, - 0x9c, 0x05, 0x40, 0x84, 0x9b, 0x05, 0x42, 0x84, 0x9c, 0x05, 0x43, 0x84, - 0x9b, 0x05, 0x44, 0x84, 0x9c, 0x05, 0x45, 0x84, 0x9b, 0x05, 0x46, 0x84, - 0x9c, 0x05, 0x47, 0x84, 0x9b, 0x05, 0x48, 0x84, 0x9c, 0x05, 0x49, 0x84, - 0x9b, 0x05, 0x4a, 0x84, 0x9c, 0x05, 0x4b, 0x84, 0x9b, 0x05, 0x4c, 0x84, - 0x9c, 0x05, 0x4d, 0x84, 0x9b, 0x05, 0x4e, 0x84, 0x9c, 0x05, 0x4f, 0x84, - 0x9b, 0x05, 0x50, 0x84, 0x9c, 0x05, 0x51, 0x84, 0x9b, 0x05, 0x52, 0x84, - 0x9c, 0x05, 0x53, 0x84, 0x9b, 0x05, 0x54, 0x84, 0x9c, 0x05, 0x55, 0x84, - 0x9b, 0x05, 0x56, 0x84, 0x9c, 0x05, 0x57, 0x84, 0x9b, 0x05, 0x58, 0x84, - 0x9c, 0x05, 0x58, 0x84, 0x9b, 0x05, 0x59, 0x84, 0x9c, 0x05, 0x5a, 0x84, - 0x9b, 0x05, 0x5b, 0x84, 0x9c, 0x05, 0x5c, 0x84, 0x9b, 0x05, 0x5d, 0x84, - 0x9c, 0x05, 0x5d, 0x84, 0x9b, 0x05, 0x5e, 0x84, 0x9c, 0x05, 0x5f, 0x84, - 0x9b, 0x05, 0x60, 0x84, 0x9c, 0x05, 0x60, 0x84, 0x9b, 0x05, 0x61, 0x84, - 0x9c, 0x05, 0x62, 0x84, 0x9b, 0x05, 0x63, 0x84, 0x9c, 0x05, 0x63, 0x84, - 0x9b, 0x05, 0x64, 0x84, 0x9c, 0x05, 0x65, 0x84, 0x9b, 0x05, 0x66, 0x84, - 0x9c, 0x05, 0x66, 0x84, 0x9b, 0x05, 0x67, 0x84, 0x9c, 0x05, 0x68, 0x84, - 0x9b, 0x05, 0x68, 0x84, 0x9c, 0x05, 0x69, 0x84, 0x9b, 0x05, 0x6a, 0x84, - 0x9c, 0x05, 0x6a, 0x84, 0x9b, 0x05, 0x6b, 0x84, 0x9c, 0x05, 0x6c, 0x84, - 0x9b, 0x05, 0x6c, 0x84, 0x9c, 0x05, 0x6d, 0x84, 0x9b, 0x05, 0x6e, 0x84, - 0x9c, 0x05, 0x6e, 0x84, 0x9b, 0x05, 0x6f, 0x84, 0x9c, 0x05, 0x70, 0x84, - 0x9b, 0x05, 0x70, 0x84, 0x9c, 0x05, 0x71, 0x84, 0x9b, 0x05, 0x72, 0x84, - 0x9c, 0x05, 0x72, 0x84, 0x9b, 0x05, 0x73, 0x84, 0x9c, 0x05, 0x73, 0x84, - 0x9b, 0x05, 0x74, 0x84, 0x9c, 0x05, 0x75, 0x84, 0x9b, 0x05, 0x75, 0x84, - 0x9c, 0x05, 0x76, 0x84, 0x9b, 0x05, 0x76, 0x84, 0x9c, 0x05, 0x77, 0x84, - 0x9b, 0x05, 0x78, 0x84, 0x9c, 0x05, 0x78, 0x84, 0x9b, 0x05, 0x79, 0x84, - 0x9c, 0x05, 0x79, 0x84, 0x9b, 0x05, 0x7a, 0x84, 0x9c, 0x05, 0x7a, 0x84, - 0x9b, 0x05, 0x7b, 0x84, 0x9c, 0x05, 0x7c, 0x84, 0x9b, 0x05, 0x7c, 0x84, - 0x9c, 0x05, 0x7d, 0x84, 0x9b, 0x05, 0x7d, 0x84, 0x9c, 0x05, 0x7e, 0x84, - 0x9b, 0x05, 0x7e, 0x84, 0x9c, 0x05, 0x7f, 0x84, 0x9b, 0x05, 0x7f, 0x84, - 0x9c, 0x05, 0x80, 0x84, 0x9b, 0x05, 0x81, 0x84, 0x9c, 0x05, 0x81, 0x84, - 0x9b, 0x05, 0x82, 0x84, 0x9c, 0x05, 0x82, 0x84, 0x9b, 0x05, 0x83, 0x84, - 0x9c, 0x05, 0x83, 0x84, 0x9b, 0x05, 0x84, 0x84, 0x9c, 0x05, 0x84, 0x84, - 0x9b, 0x05, 0x85, 0x84, 0x9c, 0x05, 0x85, 0x84, 0x9b, 0x05, 0x86, 0x84, - 0x9c, 0x05, 0x86, 0x84, 0x9b, 0x05, 0x87, 0x84, 0x9c, 0x05, 0x87, 0x84, - 0x9b, 0x05, 0x88, 0x84, 0x9c, 0x05, 0x88, 0x84, 0x9b, 0x05, 0x89, 0x84, - 0x9c, 0x05, 0x89, 0x84, 0x9b, 0x05, 0x8a, 0x84, 0x9c, 0x05, 0x8a, 0x84, - 0x9b, 0x05, 0x8b, 0x84, 0x9c, 0x05, 0x8b, 0x84, 0x9b, 0x05, 0x8c, 0x84, - 0x9c, 0x05, 0x8c, 0x84, 0x9b, 0x05, 0x8d, 0x84, 0x9c, 0x05, 0x8d, 0x84, - 0x9b, 0x05, 0x8e, 0x84, 0x9c, 0x05, 0x8e, 0x84, 0x9b, 0x05, 0x8e, 0x84, - 0x9c, 0x05, 0x8f, 0x84, 0x9b, 0x05, 0x8f, 0x84, 0x9c, 0x05, 0x90, 0x84, - 0x9b, 0x05, 0x90, 0x84, 0x9c, 0x05, 0x91, 0x84, 0x9b, 0x05, 0x91, 0x84, - 0x9c, 0x05, 0x92, 0x84, 0x9b, 0x05, 0x92, 0x84, 0x9c, 0x05, 0x93, 0x84, - 0x9b, 0x05, 0x93, 0x84, 0x9c, 0x05, 0x94, 0x84, 0x9b, 0x05, 0x94, 0x84, - 0x9c, 0x05, 0x94, 0x84, 0x9b, 0x05, 0x95, 0x84, 0x9c, 0x05, 0x95, 0x84, - 0x9b, 0x05, 0x96, 0x84, 0x9c, 0x05, 0x96, 0x84, 0x9b, 0x05, 0x97, 0x84, - 0x9c, 0x05, 0x97, 0x84, 0x9b, 0x05, 0x98, 0x84, 0x9c, 0x05, 0x98, 0x84, - 0x9b, 0x05, 0x98, 0x84, 0x9c, 0x05, 0x99, 0x84, 0x9b, 0x05, 0x99, 0x84, - 0x9c, 0x05, 0x9a, 0x84, 0x9b, 0x05, 0x9a, 0x84, 0x9c, 0x05, 0x9a, 0x84, - 0x9b, 0x05, 0x9b, 0x84, 0x9c, 0x05, 0x9b, 0x84, 0x9b, 0x05, 0x9c, 0x84, - 0x9c, 0x05, 0x9c, 0x84, 0x9c, 0x05, 0x9d, 0x84, 0x9d, 0x05, 0x9d, 0x84, - 0x9d, 0x05, 0x9d, 0x84, 0x9d, 0x05, 0x9e, 0x84, 0x9e, 0x05, 0x9e, 0x84, - 0x9e, 0x05, 0x9f, 0x84, 0x9f, 0x05, 0x9f, 0x84, 0x9e, 0x05, 0x9f, 0x84, - 0x9f, 0x05, 0xa0, 0x84, 0x9e, 0x05, 0xa0, 0x84, 0x9f, 0x05, 0xa1, 0x84, - 0x9e, 0x05, 0xa1, 0x84, 0x9f, 0x05, 0xa1, 0x84, 0x9e, 0x05, 0xa2, 0x84, - 0x9f, 0x05, 0xa2, 0x84, 0x9e, 0x05, 0xa3, 0x84, 0x9f, 0x05, 0xa3, 0x84, - 0x9e, 0x05, 0xa3, 0x84, 0x9f, 0x05, 0xa4, 0x84, 0x9e, 0x05, 0xa4, 0x84, - 0x9f, 0x05, 0xa5, 0x84, 0x9e, 0x05, 0xa5, 0x84, 0x9f, 0x05, 0xa5, 0x84, - 0x9e, 0x05, 0xa6, 0x84, 0x9f, 0x05, 0xa6, 0x84, 0x9e, 0x05, 0xa6, 0x84, - 0x9f, 0x05, 0xa7, 0x84, 0x9e, 0x05, 0xa7, 0x84, 0x9f, 0x05, 0xa8, 0x84, - 0x9e, 0x05, 0xa8, 0x84, 0x9f, 0x05, 0xa8, 0x84, 0x9e, 0x05, 0xa9, 0x84, - 0x9f, 0x05, 0xa9, 0x85, 0xa2, 0x05, 0xaa, 0x84, 0x9f, 0x05, 0xaa, 0x85, - 0xa2, 0x05, 0xaa, 0x84, 0x9f, 0x05, 0xab, 0x85, 0xa2, 0x05, 0xab, 0x85, - 0xa2, 0x05, 0xab, 0x85, 0xa2, 0x05, 0xac, 0x85, 0xa2, 0x05, 0xac, 0x85, - 0xa2, 0x05, 0xac, 0x86, 0xa6, 0x05, 0xad, 0x86, 0xa6, 0x05, 0xad, 0x86, - 0xa6, 0x05, 0xae, 0x86, 0xa6, 0x05, 0xae, 0x86, 0xa6, 0x05, 0xae, 0x86, - 0xa6, 0x05, 0xaf, 0x86, 0xa6, 0x05, 0xaf, 0x86, 0xa6, 0x05, 0xaf, 0x86, - 0xa6, 0x05, 0xb0, 0x86, 0xa6, 0x05, 0xb0, 0x87, 0xaa, 0x05, 0xb0, 0x86, - 0xa6, 0x05, 0xb1, 0x87, 0xaa, 0x05, 0xb1, 0x86, 0xa6, 0x05, 0xb2, 0x87, - 0xaa, 0x05, 0xb2, 0x86, 0xa6, 0x05, 0xb2, 0x87, 0xaa, 0x05, 0xb3, 0x87, - 0xa9, 0x05, 0xb3, 0x87, 0xaa, 0x05, 0xb3, 0x87, 0xa9, 0x05, 0xb4, 0x87, - 0xaa, 0x05, 0xb4, 0x88, 0xad, 0x05, 0xb4, 0x88, 0xad, 0x05, 0xb5, 0x88, - 0xad, 0x05, 0xb5, 0x88, 0xad, 0x05, 0xb5, 0x88, 0xad, 0x05, 0xb6, 0x88, - 0xad, 0x05, 0xb6, 0x88, 0xad, 0x05, 0xb6, 0x88, 0xad, 0x05, 0xb7, 0x88, - 0xad, 0x05, 0xb7, 0x88, 0xad, 0x05, 0xb7, 0x89, 0xb0, 0x05, 0xb8, 0x88, - 0xad, 0x05, 0xb8, 0x89, 0xb0, 0x05, 0xb8, 0x88, 0xad, 0x05, 0xb9, 0x89, - 0xb0, 0x05, 0xb9, 0x89, 0xb2, 0x05, 0xb9, 0x89, 0xb0, 0x05, 0xba, 0x89, - 0xb2, 0x05, 0xba, 0x89, 0xb0, 0x05, 0xba, 0x89, 0xb2, 0x05, 0xbb, 0x89, - 0xb0, 0x05, 0xbb, 0x89, 0xb2, 0x05, 0xbb, 0x89, 0xb2, 0x05, 0xbc, 0x89, - 0xb2, 0x05, 0xbc, 0x89, 0xb2, 0x05, 0xbc, 0x89, 0xb2, 0x05, 0xbd, 0x8a, - 0xb3, 0x05, 0xbd, 0x8a, 0xb4, 0x05, 0xbd, 0x8b, 0xb7, 0x05, 0xbe, 0x8b, - 0xb7, 0x05, 0xbe, 0x8b, 0xb7, 0x05, 0xbe, 0x8b, 0xb7, 0x05, 0xbf, 0x8b, - 0xb7, 0x05, 0xbf, 0x8b, 0xb7, 0x05, 0xbf, 0x8b, 0xb7, 0x05, 0xc0, 0x8b, - 0xb7, 0x05, 0xc0, 0x8b, 0xb7, 0x05, 0xc0, 0x8b, 0xb7, 0x05, 0xc1, 0x8c, - 0xba, 0x05, 0xc1, 0x8b, 0xb7, 0x05, 0xc1, 0x8c, 0xba, 0x05, 0xc1, 0x8b, - 0xb7, 0x05, 0xc2, 0x8c, 0xba, 0x05, 0xc2, 0x8b, 0xb7, 0x05, 0xc2, 0x8c, - 0xba, 0x05, 0xc3, 0x8c, 0xba, 0x05, 0xc3, 0x8c, 0xba, 0x05, 0xc3, 0x8d, - 0xbd, 0x05, 0xc4, 0x8c, 0xba, 0x05, 0xc4, 0x8d, 0xbd, 0x05, 0xc4, 0x8c, - 0xba, 0x05, 0xc5, 0x8d, 0xbd, 0x05, 0xc5, 0x8c, 0xba, 0x05, 0xc5, 0x8d, - 0xbd, 0x05, 0xc6, 0x8d, 0xbd, 0x05, 0xc6, 0x8d, 0xbd, 0x05, 0xc6, 0x8d, - 0xbd, 0x05, 0xc6, 0x8d, 0xbd, 0x05, 0xc7, 0x8e, 0xc0, 0x05, 0xc7, 0x8e, - 0xc0, 0x05, 0xc7, 0x8e, 0xc0, 0x05, 0xc8, 0x8e, 0xc0, 0x05, 0xc8, 0x8e, - 0xc0, 0x05, 0xc8, 0x8e, 0xc0, 0x05, 0xc9, 0x8e, 0xc0, 0x05, 0xc9, 0x8e, - 0xc0, 0x05, 0xc9, 0x8e, 0xc0, 0x05, 0xc9, 0x8e, 0xc0, 0x05, 0xca, 0x8e, - 0xc3, 0x05, 0xca, 0x8e, 0xc0, 0x05, 0xca, 0x8e, 0xc3, 0x05, 0xcb, 0x8e, - 0xc0, 0x05, 0xcb, 0x8e, 0xc3, 0x05, 0xcb, 0x8e, 0xc0, 0x05, 0xcc, 0x8e, - 0xc3, 0x05, 0xcc, 0x8e, 0xc3, 0x05, 0xcc, 0x8e, 0xc3, 0x05, 0xcc, 0x8f, - 0xc6, 0x05, 0xcd, 0x8e, 0xc3, 0x05, 0xcd, 0x8f, 0xc6, 0x05, 0xcd, 0x8e, - 0xc3, 0x05, 0xce, 0x8f, 0xc6, 0x05, 0xce, 0x8e, 0xc3, 0x05, 0xce, 0x8f, - 0xc6, 0x05, 0xce, 0x8f, 0xc6, 0x05, 0xcf, 0x8f, 0xc6, 0x05, 0xcf, 0x90, - 0xc9, 0x05, 0xcf, 0x90, 0xc9, 0x05, 0xd0, 0x90, 0xc9, 0x05, 0xd0, 0x90, - 0xc9, 0x05, 0xd0, 0x90, 0xc9, 0x05, 0xd0, 0x90, 0xc9, 0x05, 0xd1, 0x90, - 0xc9, 0x05, 0xd1, 0x90, 0xc9, 0x05, 0xd1, 0x90, 0xc9, 0x05, 0xd2, 0x90, - 0xc9, 0x05, 0xd2, 0x90, 0xc9, 0x05, 0xd2, 0x90, 0xc9, 0x05, 0xd2, 0x91, - 0xcc, 0x05, 0xd3, 0x90, 0xc9, 0x05, 0xd3, 0x91, 0xcc, 0x05, 0xd3, 0x91, - 0xca, 0x05, 0xd4, 0x91, 0xcc, 0x05, 0xd4, 0x91, 0xca, 0x05, 0xd4, 0x91, - 0xcc, 0x05, 0xd4, 0x91, 0xcb, 0x05, 0xd5, 0x91, 0xcc, 0x05, 0xd5, 0x92, - 0xce, 0x05, 0xd5, 0x92, 0xce, 0x05, 0xd6, 0x92, 0xce, 0x05, 0xd6, 0x92, - 0xce, 0x05, 0xd6, 0x92, 0xce, 0x05, 0xd6, 0x92, 0xce, 0x05, 0xd7, 0x92, - 0xce, 0x05, 0xd7, 0x92, 0xce, 0x05, 0xd7, 0x92, 0xce, 0x05, 0xd7, 0x92, - 0xce, 0x05, 0xd8, 0x93, 0xd1, 0x05, 0xd8, 0x92, 0xce, 0x05, 0xd8, 0x93, - 0xd1, 0x05, 0xd9, 0x92, 0xce, 0x05, 0xd9, 0x93, 0xd1, 0x05, 0xd9, 0x92, - 0xce, 0x05, 0xd9, 0x93, 0xd1, 0x05, 0xda, 0x93, 0xd1, 0x05, 0xda, 0x93, - 0xd1, 0x05, 0xda, 0x94, 0xd4, 0x05, 0xda, 0x93, 0xd1, 0x05, 0xdb, 0x94, - 0xd4, 0x05, 0xdb, 0x93, 0xd1, 0x05, 0xdb, 0x94, 0xd4, 0x05, 0xdb, 0x93, - 0xd1, 0x05, 0xdc, 0x94, 0xd4, 0x05, 0xdc, 0x94, 0xd3, 0x05, 0xdc, 0x94, - 0xd4, 0x05, 0xdd, 0x95, 0xd6, 0x05, 0xdd, 0x95, 0xd6, 0x05, 0xdd, 0x95, - 0xd6, 0x05, 0xdd, 0x95, 0xd6, 0x05, 0xde, 0x95, 0xd6, 0x05, 0xde, 0x95, - 0xd6, 0x05, 0xde, 0x95, 0xd6, 0x05, 0xde, 0x95, 0xd6, 0x05, 0xdf, 0x95, - 0xd6, 0x05, 0xdf, 0x95, 0xd6, 0x05, 0xdf, 0x96, 0xd9, 0x05, 0xdf, 0x95, - 0xd6, 0x05, 0xe0, 0x96, 0xd9, 0x05, 0xe0, 0x95, 0xd6, 0x05, 0xe0, 0x96, - 0xd9, 0x05, 0xe1, 0x95, 0xd6, 0x05, 0xe1, 0x96, 0xd9, 0x05, 0xe1, 0x95, - 0xd6, 0x05, 0xe1, 0x96, 0xd9, 0x05, 0xe2, 0x96, 0xd9, 0x05, 0xe2, 0x96, - 0xd9, 0x05, 0xe2, 0x97, 0xdb, 0x05, 0xe2, 0x96, 0xd9, 0x05, 0xe3, 0x97, - 0xdb, 0x05, 0xe3, 0x96, 0xd9, 0x05, 0xe3, 0x97, 0xdb, 0x05, 0xe3, 0x96, - 0xd9, 0x05, 0xe4, 0x97, 0xdb, 0x05, 0xe4, 0x97, 0xdb, 0x05, 0xe4, 0x97, - 0xdb, 0x05, 0xe4, 0x98, 0xde, 0x05, 0xe5, 0x98, 0xde, 0x05, 0xe5, 0x98, - 0xde, 0x05, 0xe5, 0x98, 0xde, 0x05, 0xe5, 0x98, 0xde, 0x05, 0xe6, 0x98, - 0xde, 0x05, 0xe6, 0x98, 0xde, 0x05, 0xe6, 0x98, 0xde, 0x05, 0xe6, 0x98, - 0xde, 0x05, 0xe7, 0x98, 0xde, 0x05, 0xe7, 0x98, 0xe0, 0x05, 0xe7, 0x98, - 0xde, 0x05, 0xe7, 0x98, 0xe0, 0x05, 0xe8, 0x98, 0xde, 0x05, 0xe8, 0x98, - 0xe0, 0x05, 0xe8, 0x98, 0xdf, 0x05, 0xe8, 0x98, 0xe0, 0x05, 0xe9, 0x98, - 0xdf, 0x05, 0xe9, 0x98, 0xe0, 0x05, 0xe9, 0x99, 0xe3, 0x05, 0xe9, 0x98, - 0xe0, 0x05, 0xea, 0x99, 0xe3, 0x05, 0xea, 0x98, 0xe0, 0x05, 0xea, 0x99, - 0xe3, 0x05, 0xea, 0x98, 0xe0, 0x05, 0xeb, 0x99, 0xe3, 0x05, 0xeb, 0x98, - 0xe0, 0x05, 0xeb, 0x99, 0xe3, 0x05, 0xeb, 0x99, 0xe2, 0x05, 0xec, 0x99, - 0xe3, 0x05, 0xec, 0x9a, 0xe5, 0x05, 0xec, 0x9a, 0xe5, 0x05, 0xec, 0x9a, - 0xe5, 0x05, 0xec, 0x9a, 0xe5, 0x05, 0xed, 0x9a, 0xe5, 0x05, 0xed, 0x9a, - 0xe5, 0x05, 0xed, 0x9a, 0xe5, 0x05, 0xed, 0x9a, 0xe5, 0x05, 0xee, 0x9a, - 0xe5, 0x05, 0xee, 0x9a, 0xe5, 0x05, 0xee, 0x9b, 0xe7, 0x05, 0xee, 0x9a, - 0xe5, 0x05, 0xef, 0x9b, 0xe7, 0x05, 0xef, 0x9a, 0xe5, 0x05, 0xef, 0x9b, - 0xe7, 0x05, 0xef, 0x9a, 0xe5, 0x05, 0xf0, 0x9b, 0xe7, 0x05, 0xf0, 0x9b, - 0xe7, 0x05, 0xf0, 0x9b, 0xe7, 0x05, 0xf0, 0x9c, 0xea, 0x05, 0xf1, 0x9c, - 0xea, 0x05, 0xf1, 0x9c, 0xea, 0x05, 0xf1, 0x9c, 0xea, 0x05, 0xf1, 0x9c, - 0xea, 0x05, 0xf2, 0x9c, 0xea, 0x05, 0xf2, 0x9c, 0xea, 0x05, 0xf2, 0x9c, - 0xea, 0x05, 0xf2, 0x9c, 0xea, 0x05, 0xf2, 0x9c, 0xea, 0x05, 0xf3, 0x9d, - 0xec, 0x05, 0xf3, 0x9c, 0xea, 0x05, 0xf3, 0x9d, 0xec, 0x05, 0xf3, 0x9c, - 0xea, 0x05, 0xf4, 0x9d, 0xec, 0x05, 0xf4, 0x9c, 0xea, 0x05, 0xf4, 0x9d, - 0xec, 0x05, 0xf4, 0x9c, 0xea, 0x05, 0xf5, 0x9d, 0xec, 0x05, 0xf5, 0x9d, - 0xee, 0x05, 0xf5, 0x9d, 0xec, 0x05, 0xf5, 0x9d, 0xee, 0x05, 0xf5, 0x9d, - 0xec, 0x05, 0xf6, 0x9d, 0xee, 0x05, 0xf6, 0x9d, 0xec, 0x05, 0xf6, 0x9d, - 0xee, 0x05, 0xf6, 0x9d, 0xec, 0x05, 0xf7, 0x9d, 0xee, 0x05, 0xf7, 0x9e, - 0xf0, 0x05, 0xf7, 0x9e, 0xf1, 0x05, 0xf7, 0x9e, 0xf0, 0x05, 0xf8, 0x9e, - 0xf1, 0x05, 0xf8, 0x9e, 0xf0, 0x05, 0xf8, 0x9e, 0xf1, 0x05, 0xf8, 0x9e, - 0xf0, 0x05, 0xf8, 0x9e, 0xf1, 0x05, 0xf9, 0x9e, 0xf0, 0x05, 0xf9, 0x9e, - 0xf1, 0x05, 0xf9, 0x9e, 0xf0, 0x05, 0xf9, 0x9e, 0xf1, 0x05, 0xfa, 0x9f, - 0xf3, 0x05, 0xfa, 0x9e, 0xf1, 0x05, 0xfa, 0x9f, 0xf3, 0x05, 0xfa, 0x9e, - 0xf1, 0x05, 0xfa, 0x9f, 0xf3, 0x05, 0xfb, 0x9f, 0xf2, 0x05, 0xfb, 0x9f, - 0xf3, 0x05, 0xfb, 0x9f, 0xf2, 0x05, 0xfb, 0x9f, 0xf3, 0x05, 0xfc, 0xa0, - 0xf5, 0x05, 0xfc, 0x9f, 0xf3, 0x05, 0xfc, 0xa0, 0xf5, 0x05, 0xfc, 0x9f, - 0xf3, 0x05, 0xfc, 0xa0, 0xf5, 0x05, 0xfd, 0x9f, 0xf3, 0x05, 0xfd, 0xa0, - 0xf5, 0x05, 0xfd, 0x9f, 0xf3, 0x05, 0xfd, 0xa0, 0xf5, 0x05, 0xfe, 0xa1, - 0xf7, 0x05, 0xfe, 0xa1, 0xf7, 0x05, 0xfe, 0xa1, 0xf7, 0x05, 0xfe, 0xa1, - 0xf7, 0x05, 0xfe, 0xa1, 0xf7, 0x05, 0xff, 0xa1, 0xf7, 0x05, 0xff, 0xa1, - 0xf7, 0x05, 0x03, 0x83, 0x9b, 0x05, 0x0a, 0x83, 0x9b, 0x05, 0x0f, 0x83, - 0x9b, 0x05, 0x14, 0x83, 0x9b, 0x05, 0x17, 0x83, 0x9b, 0x05, 0x1b, 0x83, - 0x9b, 0x05, 0x1e, 0x83, 0x9b, 0x05, 0x20, 0x83, 0x9c, 0x05, 0x23, 0x83, - 0x9b, 0x05, 0x25, 0x83, 0x9c, 0x05, 0x27, 0x83, 0x9b, 0x05, 0x29, 0x83, - 0x9c, 0x05, 0x2b, 0x83, 0x9b, 0x05, 0x2d, 0x83, 0x9c, 0x05, 0x2f, 0x83, - 0x9b, 0x05, 0x31, 0x83, 0x9c, 0x05, 0x32, 0x83, 0x9b, 0x05, 0x34, 0x83, - 0x9c, 0x05, 0x35, 0x83, 0x9b, 0x05, 0x37, 0x83, 0x9c, 0x05, 0x38, 0x83, - 0x9b, 0x05, 0x3a, 0x83, 0x9c, 0x05, 0x3b, 0x83, 0x9b, 0x05, 0x3c, 0x83, - 0x9c, 0x05, 0x3e, 0x83, 0x9b, 0x05, 0x3f, 0x83, 0x9c, 0x05, 0x40, 0x83, - 0x9b, 0x05, 0x42, 0x83, 0x9c, 0x05, 0x43, 0x83, 0x9b, 0x05, 0x44, 0x83, - 0x9c, 0x05, 0x45, 0x83, 0x9b, 0x05, 0x46, 0x83, 0x9c, 0x05, 0x47, 0x83, - 0x9b, 0x05, 0x48, 0x83, 0x9c, 0x05, 0x49, 0x83, 0x9b, 0x05, 0x4a, 0x83, - 0x9c, 0x05, 0x4b, 0x83, 0x9b, 0x05, 0x4c, 0x83, 0x9c, 0x05, 0x4d, 0x83, - 0x9b, 0x05, 0x4e, 0x83, 0x9c, 0x05, 0x4f, 0x83, 0x9b, 0x05, 0x50, 0x83, - 0x9c, 0x05, 0x51, 0x83, 0x9b, 0x05, 0x52, 0x83, 0x9c, 0x05, 0x53, 0x83, - 0x9b, 0x05, 0x54, 0x83, 0x9c, 0x05, 0x55, 0x83, 0x9b, 0x05, 0x56, 0x83, - 0x9c, 0x05, 0x57, 0x83, 0x9b, 0x05, 0x58, 0x83, 0x9c, 0x05, 0x58, 0x83, - 0x9b, 0x05, 0x59, 0x83, 0x9c, 0x05, 0x5a, 0x83, 0x9b, 0x05, 0x5b, 0x83, - 0x9c, 0x05, 0x5c, 0x83, 0x9b, 0x05, 0x5d, 0x83, 0x9c, 0x05, 0x5d, 0x83, - 0x9b, 0x05, 0x5e, 0x83, 0x9c, 0x05, 0x5f, 0x83, 0x9b, 0x05, 0x60, 0x83, - 0x9c, 0x05, 0x60, 0x83, 0x9b, 0x05, 0x61, 0x83, 0x9c, 0x05, 0x62, 0x83, - 0x9b, 0x05, 0x63, 0x83, 0x9c, 0x05, 0x63, 0x83, 0x9b, 0x05, 0x64, 0x83, - 0x9c, 0x05, 0x65, 0x83, 0x9b, 0x05, 0x66, 0x83, 0x9c, 0x05, 0x66, 0x83, - 0x9b, 0x05, 0x67, 0x83, 0x9c, 0x05, 0x68, 0x83, 0x9b, 0x05, 0x68, 0x83, - 0x9c, 0x05, 0x69, 0x83, 0x9b, 0x05, 0x6a, 0x83, 0x9c, 0x05, 0x6a, 0x83, - 0x9b, 0x05, 0x6b, 0x83, 0x9c, 0x05, 0x6c, 0x83, 0x9b, 0x05, 0x6c, 0x83, - 0x9c, 0x05, 0x6d, 0x83, 0x9b, 0x05, 0x6e, 0x83, 0x9c, 0x05, 0x6e, 0x83, - 0x9b, 0x05, 0x6f, 0x83, 0x9c, 0x05, 0x70, 0x83, 0x9b, 0x05, 0x70, 0x83, - 0x9c, 0x05, 0x71, 0x83, 0x9b, 0x05, 0x72, 0x83, 0x9c, 0x05, 0x72, 0x83, - 0x9b, 0x05, 0x73, 0x83, 0x9c, 0x05, 0x73, 0x83, 0x9b, 0x05, 0x74, 0x83, - 0x9c, 0x05, 0x75, 0x83, 0x9b, 0x05, 0x75, 0x83, 0x9c, 0x05, 0x76, 0x83, - 0x9b, 0x05, 0x76, 0x83, 0x9c, 0x05, 0x77, 0x83, 0x9b, 0x05, 0x78, 0x83, - 0x9c, 0x05, 0x78, 0x83, 0x9b, 0x05, 0x79, 0x83, 0x9c, 0x05, 0x79, 0x83, - 0x9b, 0x05, 0x7a, 0x83, 0x9c, 0x05, 0x7a, 0x83, 0x9b, 0x05, 0x7b, 0x83, - 0x9c, 0x05, 0x7c, 0x83, 0x9b, 0x05, 0x7c, 0x83, 0x9c, 0x05, 0x7d, 0x83, - 0x9b, 0x05, 0x7d, 0x83, 0x9c, 0x05, 0x7e, 0x83, 0x9b, 0x05, 0x7e, 0x83, - 0x9c, 0x05, 0x7f, 0x83, 0x9b, 0x05, 0x7f, 0x83, 0x9c, 0x05, 0x80, 0x83, - 0x9b, 0x05, 0x81, 0x83, 0x9c, 0x05, 0x81, 0x83, 0x9b, 0x05, 0x82, 0x83, - 0x9c, 0x05, 0x82, 0x83, 0x9b, 0x05, 0x83, 0x83, 0x9c, 0x05, 0x83, 0x83, - 0x9b, 0x05, 0x84, 0x83, 0x9c, 0x05, 0x84, 0x83, 0x9b, 0x05, 0x85, 0x83, - 0x9c, 0x05, 0x85, 0x83, 0x9b, 0x05, 0x86, 0x83, 0x9c, 0x05, 0x86, 0x83, - 0x9b, 0x05, 0x87, 0x83, 0x9c, 0x05, 0x87, 0x83, 0x9b, 0x05, 0x88, 0x83, - 0x9c, 0x05, 0x88, 0x83, 0x9b, 0x05, 0x89, 0x83, 0x9c, 0x05, 0x89, 0x83, - 0x9b, 0x05, 0x8a, 0x83, 0x9c, 0x05, 0x8a, 0x83, 0x9b, 0x05, 0x8b, 0x83, - 0x9c, 0x05, 0x8b, 0x83, 0x9b, 0x05, 0x8c, 0x83, 0x9c, 0x05, 0x8c, 0x83, - 0x9b, 0x05, 0x8d, 0x83, 0x9c, 0x05, 0x8d, 0x83, 0x9b, 0x05, 0x8e, 0x83, - 0x9c, 0x05, 0x8e, 0x83, 0x9b, 0x05, 0x8e, 0x83, 0x9c, 0x05, 0x8f, 0x83, - 0x9b, 0x05, 0x8f, 0x83, 0x9c, 0x05, 0x90, 0x83, 0x9b, 0x05, 0x90, 0x83, - 0x9c, 0x05, 0x91, 0x83, 0x9b, 0x05, 0x91, 0x83, 0x9c, 0x05, 0x92, 0x83, - 0x9b, 0x05, 0x92, 0x83, 0x9c, 0x05, 0x93, 0x83, 0x9b, 0x05, 0x93, 0x83, - 0x9c, 0x05, 0x94, 0x83, 0x9b, 0x05, 0x94, 0x83, 0x9c, 0x05, 0x94, 0x83, - 0x9b, 0x05, 0x95, 0x83, 0x9c, 0x05, 0x95, 0x83, 0x9b, 0x05, 0x96, 0x83, - 0x9c, 0x05, 0x96, 0x83, 0x9b, 0x05, 0x97, 0x83, 0x9c, 0x05, 0x97, 0x83, - 0x9b, 0x05, 0x98, 0x83, 0x9c, 0x05, 0x98, 0x83, 0x9b, 0x05, 0x98, 0x83, - 0x9c, 0x05, 0x99, 0x83, 0x9b, 0x05, 0x99, 0x83, 0x9c, 0x05, 0x9a, 0x83, - 0x9b, 0x05, 0x9a, 0x83, 0x9c, 0x05, 0x9a, 0x83, 0x9b, 0x05, 0x9b, 0x83, - 0x9c, 0x05, 0x9b, 0x83, 0x9b, 0x05, 0x9c, 0x83, 0x9c, 0x05, 0x9c, 0x83, - 0x9c, 0x05, 0x9d, 0x83, 0x9d, 0x05, 0x9d, 0x83, 0x9c, 0x05, 0x9d, 0x83, - 0x9d, 0x05, 0x9e, 0x83, 0x9c, 0x05, 0x9e, 0x83, 0x9d, 0x05, 0x9f, 0x83, - 0x9c, 0x05, 0x9f, 0x83, 0x9d, 0x05, 0x9f, 0x83, 0x9c, 0x05, 0xa0, 0x83, - 0x9d, 0x05, 0xa0, 0x83, 0x9c, 0x05, 0xa1, 0x83, 0x9d, 0x05, 0xa1, 0x83, - 0x9c, 0x05, 0xa1, 0x83, 0x9d, 0x05, 0xa2, 0x83, 0x9c, 0x05, 0xa2, 0x83, - 0x9d, 0x05, 0xa3, 0x83, 0x9c, 0x05, 0xa3, 0x83, 0x9d, 0x05, 0xa3, 0x83, - 0x9c, 0x05, 0xa4, 0x83, 0x9d, 0x05, 0xa4, 0x83, 0x9c, 0x05, 0xa5, 0x83, - 0x9d, 0x05, 0xa5, 0x83, 0x9c, 0x05, 0xa5, 0x83, 0x9d, 0x05, 0xa6, 0x83, - 0x9c, 0x05, 0xa6, 0x83, 0x9d, 0x05, 0xa6, 0x83, 0x9c, 0x05, 0xa7, 0x83, - 0x9d, 0x05, 0xa7, 0x84, 0xa0, 0x05, 0xa8, 0x84, 0xa1, 0x05, 0xa8, 0x84, - 0xa0, 0x05, 0xa8, 0x84, 0xa1, 0x05, 0xa9, 0x84, 0xa0, 0x05, 0xa9, 0x84, - 0xa1, 0x05, 0xaa, 0x84, 0xa0, 0x05, 0xaa, 0x84, 0xa1, 0x05, 0xaa, 0x84, - 0xa0, 0x05, 0xab, 0x84, 0xa1, 0x05, 0xab, 0x85, 0xa4, 0x05, 0xab, 0x84, - 0xa1, 0x05, 0xac, 0x85, 0xa4, 0x05, 0xac, 0x84, 0xa1, 0x05, 0xac, 0x85, - 0xa4, 0x05, 0xad, 0x85, 0xa4, 0x05, 0xad, 0x85, 0xa4, 0x05, 0xae, 0x85, - 0xa4, 0x05, 0xae, 0x85, 0xa4, 0x05, 0xae, 0x86, 0xa8, 0x05, 0xaf, 0x85, - 0xa4, 0x05, 0xaf, 0x86, 0xa8, 0x05, 0xaf, 0x85, 0xa4, 0x05, 0xb0, 0x86, - 0xa8, 0x05, 0xb0, 0x86, 0xa7, 0x05, 0xb0, 0x86, 0xa8, 0x05, 0xb1, 0x86, - 0xa7, 0x05, 0xb1, 0x86, 0xa8, 0x05, 0xb2, 0x87, 0xab, 0x05, 0xb2, 0x87, - 0xab, 0x05, 0xb2, 0x87, 0xab, 0x05, 0xb3, 0x87, 0xab, 0x05, 0xb3, 0x87, - 0xab, 0x05, 0xb3, 0x87, 0xab, 0x05, 0xb4, 0x87, 0xab, 0x05, 0xb4, 0x87, - 0xab, 0x05, 0xb4, 0x87, 0xab, 0x05, 0xb5, 0x87, 0xab, 0x05, 0xb5, 0x87, - 0xab, 0x05, 0xb5, 0x87, 0xab, 0x05, 0xb6, 0x88, 0xaf, 0x05, 0xb6, 0x87, - 0xab, 0x05, 0xb6, 0x88, 0xaf, 0x05, 0xb7, 0x87, 0xab, 0x05, 0xb7, 0x88, - 0xaf, 0x05, 0xb7, 0x88, 0xae, 0x05, 0xb8, 0x88, 0xaf, 0x05, 0xb8, 0x88, - 0xae, 0x05, 0xb8, 0x88, 0xaf, 0x05, 0xb9, 0x89, 0xb2, 0x05, 0xb9, 0x89, - 0xb2, 0x05, 0xb9, 0x89, 0xb2, 0x05, 0xba, 0x89, 0xb2, 0x05, 0xba, 0x89, - 0xb2, 0x05, 0xba, 0x89, 0xb2, 0x05, 0xbb, 0x89, 0xb2, 0x05, 0xbb, 0x89, - 0xb2, 0x05, 0xbb, 0x89, 0xb2, 0x05, 0xbc, 0x89, 0xb2, 0x05, 0xbc, 0x8a, - 0xb5, 0x05, 0xbc, 0x89, 0xb2, 0x05, 0xbd, 0x8a, 0xb5, 0x05, 0xbd, 0x89, - 0xb2, 0x05, 0xbd, 0x8a, 0xb5, 0x05, 0xbe, 0x8a, 0xb5, 0x05, 0xbe, 0x8a, - 0xb5, 0x05, 0xbe, 0x8a, 0xb5, 0x05, 0xbf, 0x8a, 0xb5, 0x05, 0xbf, 0x8b, - 0xb8, 0x05, 0xbf, 0x8a, 0xb5, 0x05, 0xc0, 0x8b, 0xb8, 0x05, 0xc0, 0x8a, - 0xb5, 0x05, 0xc0, 0x8b, 0xb8, 0x05, 0xc1, 0x8a, 0xb5, 0x05, 0xc1, 0x8b, - 0xb8, 0x05, 0xc1, 0x8b, 0xb8, 0x05, 0xc1, 0x8b, 0xb8, 0x05, 0xc2, 0x8c, - 0xbb, 0x05, 0xc2, 0x8c, 0xbc, 0x05, 0xc2, 0x8c, 0xbb, 0x05, 0xc3, 0x8c, - 0xbc, 0x05, 0xc3, 0x8c, 0xbb, 0x05, 0xc3, 0x8c, 0xbc, 0x05, 0xc4, 0x8c, - 0xbb, 0x05, 0xc4, 0x8c, 0xbc, 0x05, 0xc4, 0x8c, 0xbb, 0x05, 0xc5, 0x8c, - 0xbc, 0x05, 0xc5, 0x8d, 0xbf, 0x05, 0xc5, 0x8c, 0xbc, 0x05, 0xc6, 0x8d, - 0xbf, 0x05, 0xc6, 0x8c, 0xbc, 0x05, 0xc6, 0x8d, 0xbf, 0x05, 0xc6, 0x8c, - 0xbc, 0x05, 0xc7, 0x8d, 0xbf, 0x05, 0xc7, 0x8d, 0xbe, 0x05, 0xc7, 0x8d, - 0xbf, 0x05, 0xc8, 0x8d, 0xbe, 0x05, 0xc8, 0x8d, 0xbf, 0x05, 0xc8, 0x8e, - 0xc1, 0x05, 0xc9, 0x8d, 0xbf, 0x05, 0xc9, 0x8e, 0xc1, 0x05, 0xc9, 0x8d, - 0xbf, 0x05, 0xc9, 0x8e, 0xc1, 0x05, 0xca, 0x8e, 0xc1, 0x05, 0xca, 0x8e, - 0xc1, 0x05, 0xca, 0x8e, 0xc1, 0x05, 0xcb, 0x8e, 0xc1, 0x05, 0xcb, 0x8f, - 0xc4, 0x05, 0xcb, 0x8f, 0xc5, 0x05, 0xcc, 0x8f, 0xc4, 0x05, 0xcc, 0x8f, - 0xc5, 0x05, 0xcc, 0x8f, 0xc4, 0x05, 0xcc, 0x8f, 0xc5, 0x05, 0xcd, 0x8f, - 0xc4, 0x05, 0xcd, 0x8f, 0xc5, 0x05, 0xcd, 0x8f, 0xc4, 0x05, 0xce, 0x8f, - 0xc5, 0x05, 0xce, 0x90, 0xc7, 0x05, 0xce, 0x8f, 0xc5, 0x05, 0xce, 0x90, - 0xc7, 0x05, 0xcf, 0x8f, 0xc5, 0x05, 0xcf, 0x90, 0xc7, 0x05, 0xcf, 0x8f, - 0xc5, 0x05, 0xd0, 0x90, 0xc7, 0x05, 0xd0, 0x90, 0xc7, 0x05, 0xd0, 0x90, - 0xc7, 0x05, 0xd0, 0x91, 0xca, 0x05, 0xd1, 0x90, 0xc7, 0x05, 0xd1, 0x91, - 0xca, 0x05, 0xd1, 0x90, 0xc7, 0x05, 0xd2, 0x91, 0xca, 0x05, 0xd2, 0x90, - 0xc7, 0x05, 0xd2, 0x91, 0xca, 0x05, 0xd2, 0x91, 0xca, 0x05, 0xd3, 0x91, - 0xca, 0x05, 0xd3, 0x91, 0xca, 0x05, 0xd3, 0x91, 0xca, 0x05, 0xd4, 0x92, - 0xcd, 0x05, 0xd4, 0x92, 0xcd, 0x05, 0xd4, 0x92, 0xcd, 0x05, 0xd4, 0x92, - 0xcd, 0x05, 0xd5, 0x92, 0xcd, 0x05, 0xd5, 0x92, 0xcd, 0x05, 0xd5, 0x92, - 0xcd, 0x05, 0xd6, 0x92, 0xcd, 0x05, 0xd6, 0x92, 0xcd, 0x05, 0xd6, 0x92, - 0xcd, 0x05, 0xd6, 0x93, 0xd0, 0x05, 0xd7, 0x92, 0xcd, 0x05, 0xd7, 0x93, - 0xd0, 0x05, 0xd7, 0x92, 0xcd, 0x05, 0xd7, 0x93, 0xd0, 0x05, 0xd8, 0x92, - 0xcd, 0x05, 0xd8, 0x93, 0xd0, 0x05, 0xd8, 0x93, 0xcf, 0x05, 0xd9, 0x93, - 0xd0, 0x05, 0xd9, 0x94, 0xd2, 0x05, 0xd9, 0x94, 0xd2, 0x05, 0xd9, 0x94, - 0xd2, 0x05, 0xda, 0x94, 0xd2, 0x05, 0xda, 0x94, 0xd2, 0x05, 0xda, 0x94, - 0xd2, 0x05, 0xda, 0x94, 0xd2, 0x05, 0xdb, 0x94, 0xd2, 0x05, 0xdb, 0x94, - 0xd2, 0x05, 0xdb, 0x94, 0xd2, 0x05, 0xdb, 0x94, 0xd5, 0x05, 0xdc, 0x94, - 0xd2, 0x05, 0xdc, 0x94, 0xd5, 0x05, 0xdc, 0x94, 0xd2, 0x05, 0xdd, 0x94, - 0xd5, 0x05, 0xdd, 0x94, 0xd2, 0x05, 0xdd, 0x94, 0xd5, 0x05, 0xdd, 0x94, - 0xd5, 0x05, 0xde, 0x94, 0xd5, 0x05, 0xde, 0x95, 0xd7, 0x05, 0xde, 0x94, - 0xd5, 0x05, 0xde, 0x95, 0xd7, 0x05, 0xdf, 0x94, 0xd5, 0x05, 0xdf, 0x95, - 0xd7, 0x05, 0xdf, 0x94, 0xd5, 0x05, 0xdf, 0x95, 0xd7, 0x05, 0xe0, 0x95, - 0xd7, 0x05, 0xe0, 0x95, 0xd7, 0x05, 0xe0, 0x96, 0xda, 0x05, 0xe1, 0x96, - 0xda, 0x05, 0xe1, 0x96, 0xda, 0x05, 0xe1, 0x96, 0xda, 0x05, 0xe1, 0x96, - 0xda, 0x05, 0xe2, 0x96, 0xda, 0x05, 0xe2, 0x96, 0xda, 0x05, 0xe2, 0x96, - 0xda, 0x05, 0xe2, 0x96, 0xda, 0x05, 0xe3, 0x96, 0xda, 0x05, 0xe3, 0x96, - 0xda, 0x05, 0xe3, 0x96, 0xda, 0x05, 0xe3, 0x97, 0xdd, 0x05, 0xe4, 0x96, - 0xda, 0x05, 0xe4, 0x97, 0xdd, 0x05, 0xe4, 0x96, 0xda, 0x05, 0xe4, 0x97, - 0xdd, 0x05, 0xe5, 0x96, 0xda, 0x05, 0xe5, 0x97, 0xdd, 0x05, 0xe5, 0x97, - 0xdc, 0x05, 0xe5, 0x97, 0xdd, 0x05, 0xe6, 0x98, 0xdf, 0x05, 0xe6, 0x97, - 0xdd, 0x05, 0xe6, 0x98, 0xdf, 0x05, 0xe6, 0x97, 0xdd, 0x05, 0xe7, 0x98, - 0xdf, 0x05, 0xe7, 0x97, 0xdd, 0x05, 0xe7, 0x98, 0xdf, 0x05, 0xe7, 0x98, - 0xdf, 0x05, 0xe8, 0x98, 0xdf, 0x05, 0xe8, 0x99, 0xe1, 0x05, 0xe8, 0x99, - 0xe2, 0x05, 0xe8, 0x99, 0xe1, 0x05, 0xe9, 0x99, 0xe2, 0x05, 0xe9, 0x99, - 0xe1, 0x05, 0xe9, 0x99, 0xe2, 0x05, 0xe9, 0x99, 0xe1, 0x05, 0xea, 0x99, - 0xe2, 0x05, 0xea, 0x99, 0xe1, 0x05, 0xea, 0x99, 0xe2, 0x05, 0xea, 0x9a, - 0xe4, 0x05, 0xeb, 0x99, 0xe2, 0x05, 0xeb, 0x9a, 0xe4, 0x05, 0xeb, 0x99, - 0xe2, 0x05, 0xeb, 0x9a, 0xe4, 0x05, 0xec, 0x99, 0xe2, 0x05, 0xec, 0x9a, - 0xe4, 0x05, 0xec, 0x99, 0xe2, 0x05, 0xec, 0x9a, 0xe4, 0x05, 0xec, 0x9a, - 0xe4, 0x05, 0xed, 0x9a, 0xe4, 0x05, 0xed, 0x9a, 0xe6, 0x05, 0xed, 0x9a, - 0xe4, 0x05, 0xed, 0x9a, 0xe6, 0x05, 0xee, 0x9a, 0xe4, 0x05, 0xee, 0x9a, - 0xe6, 0x05, 0xee, 0x9a, 0xe4, 0x05, 0xee, 0x9a, 0xe6, 0x05, 0xef, 0x9a, - 0xe6, 0x05, 0xef, 0x9a, 0xe6, 0x05, 0xef, 0x9b, 0xe8, 0x05, 0xef, 0x9b, - 0xe9, 0x05, 0xf0, 0x9b, 0xe8, 0x05, 0xf0, 0x9b, 0xe9, 0x05, 0xf0, 0x9b, - 0xe8, 0x05, 0xf0, 0x9b, 0xe9, 0x05, 0xf1, 0x9b, 0xe8, 0x05, 0xf1, 0x9b, - 0xe9, 0x05, 0xf1, 0x9b, 0xe8, 0x05, 0xf1, 0x9b, 0xe9, 0x05, 0xf2, 0x9c, - 0xeb, 0x05, 0xf2, 0x9b, 0xe9, 0x05, 0xf2, 0x9c, 0xeb, 0x05, 0xf2, 0x9b, - 0xe9, 0x05, 0xf2, 0x9c, 0xeb, 0x05, 0xf3, 0x9b, 0xe9, 0x05, 0xf3, 0x9c, - 0xeb, 0x05, 0xf3, 0x9c, 0xeb, 0x05, 0xf3, 0x9c, 0xeb, 0x05, 0xf4, 0x9d, - 0xed, 0x05, 0xf4, 0x9d, 0xed, 0x05, 0xf4, 0x9d, 0xed, 0x05, 0xf4, 0x9d, - 0xed, 0x05, 0xf5, 0x9d, 0xed, 0x05, 0xf5, 0x9d, 0xed, 0x05, 0xf5, 0x9d, - 0xed, 0x05, 0xf5, 0x9d, 0xed, 0x05, 0xf5, 0x9d, 0xed, 0x05, 0xf6, 0x9d, - 0xed, 0x05, 0xf6, 0x9e, 0xef, 0x05, 0xf6, 0x9d, 0xed, 0x05, 0xf6, 0x9e, - 0xef, 0x05, 0xf7, 0x9d, 0xed, 0x05, 0xf7, 0x9e, 0xef, 0x05, 0xf7, 0x9d, - 0xed, 0x05, 0xf7, 0x9e, 0xef, 0x05, 0xf8, 0x9d, 0xed, 0x05, 0xf8, 0x9e, - 0xef, 0x05, 0xf8, 0x9f, 0xf2, 0x05, 0xf8, 0x9e, 0xef, 0x05, 0xf8, 0x9f, - 0xf2, 0x05, 0xf9, 0x9e, 0xef, 0x05, 0xf9, 0x9f, 0xf2, 0x05, 0xf9, 0x9e, - 0xef, 0x05, 0xf9, 0x9f, 0xf2, 0x05, 0xfa, 0x9e, 0xef, 0x05, 0xfa, 0x9f, - 0xf2, 0x05, 0xfa, 0x9f, 0xf1, 0x05, 0xfa, 0x9f, 0xf2, 0x05, 0xfa, 0x9f, - 0xf4, 0x05, 0xfb, 0x9f, 0xf4, 0x05, 0xfb, 0x9f, 0xf4, 0x05, 0xfb, 0x9f, - 0xf4, 0x05, 0xfb, 0x9f, 0xf4, 0x05, 0xfc, 0x9f, 0xf4, 0x05, 0xfc, 0x9f, - 0xf4, 0x05, 0xfc, 0x9f, 0xf4, 0x05, 0xfc, 0x9f, 0xf4, 0x05, 0xfc, 0x9f, - 0xf4, 0x05, 0xfd, 0xa0, 0xf6, 0x05, 0xfd, 0x9f, 0xf4, 0x05, 0xfd, 0xa0, - 0xf6, 0x05, 0xfd, 0x9f, 0xf4, 0x05, 0xfe, 0xa0, 0xf6, 0x05, 0xfe, 0xa0, - 0xf6, 0x05, 0xfe, 0xa0, 0xf6, 0x05, 0xfe, 0xa0, 0xf6, 0x05, 0xfe, 0xa0, - 0xf6, 0x05, 0xff, 0xa0, 0xf6, 0x05, 0xff, 0xa0, 0xf6, 0x05, 0x03, 0x84, - 0x9b, 0x06, 0x0a, 0x84, 0x9b, 0x06, 0x0f, 0x84, 0x9b, 0x06, 0x14, 0x84, - 0x9b, 0x06, 0x17, 0x84, 0x9b, 0x06, 0x1b, 0x84, 0x9b, 0x06, 0x1e, 0x84, - 0x9b, 0x06, 0x20, 0x84, 0x9c, 0x06, 0x23, 0x84, 0x9b, 0x06, 0x25, 0x84, - 0x9c, 0x06, 0x27, 0x84, 0x9b, 0x06, 0x29, 0x84, 0x9c, 0x06, 0x2b, 0x84, - 0x9b, 0x06, 0x2d, 0x84, 0x9c, 0x06, 0x2f, 0x84, 0x9b, 0x06, 0x31, 0x84, - 0x9c, 0x06, 0x32, 0x84, 0x9b, 0x06, 0x34, 0x84, 0x9c, 0x06, 0x35, 0x84, - 0x9b, 0x06, 0x37, 0x84, 0x9c, 0x06, 0x38, 0x84, 0x9b, 0x06, 0x3a, 0x84, - 0x9c, 0x06, 0x3b, 0x84, 0x9b, 0x06, 0x3c, 0x84, 0x9c, 0x06, 0x3e, 0x84, - 0x9b, 0x06, 0x3f, 0x84, 0x9c, 0x06, 0x40, 0x84, 0x9b, 0x06, 0x42, 0x84, - 0x9c, 0x06, 0x43, 0x84, 0x9b, 0x06, 0x44, 0x84, 0x9c, 0x06, 0x45, 0x84, - 0x9b, 0x06, 0x46, 0x84, 0x9c, 0x06, 0x47, 0x84, 0x9b, 0x06, 0x48, 0x84, - 0x9c, 0x06, 0x49, 0x84, 0x9b, 0x06, 0x4a, 0x84, 0x9c, 0x06, 0x4b, 0x84, - 0x9b, 0x06, 0x4c, 0x84, 0x9c, 0x06, 0x4d, 0x84, 0x9b, 0x06, 0x4e, 0x84, - 0x9c, 0x06, 0x4f, 0x84, 0x9b, 0x06, 0x50, 0x84, 0x9c, 0x06, 0x51, 0x84, - 0x9b, 0x06, 0x52, 0x84, 0x9c, 0x06, 0x53, 0x84, 0x9b, 0x06, 0x54, 0x84, - 0x9c, 0x06, 0x55, 0x84, 0x9b, 0x06, 0x56, 0x84, 0x9c, 0x06, 0x57, 0x84, - 0x9b, 0x06, 0x58, 0x84, 0x9c, 0x06, 0x58, 0x84, 0x9b, 0x06, 0x59, 0x84, - 0x9c, 0x06, 0x5a, 0x84, 0x9b, 0x06, 0x5b, 0x84, 0x9c, 0x06, 0x5c, 0x84, - 0x9b, 0x06, 0x5d, 0x84, 0x9c, 0x06, 0x5d, 0x84, 0x9b, 0x06, 0x5e, 0x84, - 0x9c, 0x06, 0x5f, 0x84, 0x9b, 0x06, 0x60, 0x84, 0x9c, 0x06, 0x60, 0x84, - 0x9b, 0x06, 0x61, 0x84, 0x9c, 0x06, 0x62, 0x84, 0x9b, 0x06, 0x63, 0x84, - 0x9c, 0x06, 0x63, 0x84, 0x9b, 0x06, 0x64, 0x84, 0x9c, 0x06, 0x65, 0x84, - 0x9b, 0x06, 0x66, 0x84, 0x9c, 0x06, 0x66, 0x84, 0x9b, 0x06, 0x67, 0x84, - 0x9c, 0x06, 0x68, 0x84, 0x9b, 0x06, 0x68, 0x84, 0x9c, 0x06, 0x69, 0x84, - 0x9b, 0x06, 0x6a, 0x84, 0x9c, 0x06, 0x6a, 0x84, 0x9b, 0x06, 0x6b, 0x84, - 0x9c, 0x06, 0x6c, 0x84, 0x9b, 0x06, 0x6c, 0x84, 0x9c, 0x06, 0x6d, 0x84, - 0x9b, 0x06, 0x6e, 0x84, 0x9c, 0x06, 0x6e, 0x84, 0x9b, 0x06, 0x6f, 0x84, - 0x9c, 0x06, 0x70, 0x84, 0x9b, 0x06, 0x70, 0x84, 0x9c, 0x06, 0x71, 0x84, - 0x9b, 0x06, 0x72, 0x84, 0x9c, 0x06, 0x72, 0x84, 0x9b, 0x06, 0x73, 0x84, - 0x9c, 0x06, 0x73, 0x84, 0x9b, 0x06, 0x74, 0x84, 0x9c, 0x06, 0x75, 0x84, - 0x9b, 0x06, 0x75, 0x84, 0x9c, 0x06, 0x76, 0x84, 0x9b, 0x06, 0x76, 0x84, - 0x9c, 0x06, 0x77, 0x84, 0x9b, 0x06, 0x78, 0x84, 0x9c, 0x06, 0x78, 0x84, - 0x9b, 0x06, 0x79, 0x84, 0x9c, 0x06, 0x79, 0x84, 0x9b, 0x06, 0x7a, 0x84, - 0x9c, 0x06, 0x7a, 0x84, 0x9b, 0x06, 0x7b, 0x84, 0x9c, 0x06, 0x7c, 0x84, - 0x9b, 0x06, 0x7c, 0x84, 0x9c, 0x06, 0x7d, 0x84, 0x9b, 0x06, 0x7d, 0x84, - 0x9c, 0x06, 0x7e, 0x84, 0x9b, 0x06, 0x7e, 0x84, 0x9c, 0x06, 0x7f, 0x84, - 0x9b, 0x06, 0x7f, 0x84, 0x9c, 0x06, 0x80, 0x84, 0x9b, 0x06, 0x81, 0x84, - 0x9c, 0x06, 0x81, 0x84, 0x9b, 0x06, 0x82, 0x84, 0x9c, 0x06, 0x82, 0x84, - 0x9b, 0x06, 0x83, 0x84, 0x9c, 0x06, 0x83, 0x84, 0x9b, 0x06, 0x84, 0x84, - 0x9c, 0x06, 0x84, 0x84, 0x9b, 0x06, 0x85, 0x84, 0x9c, 0x06, 0x85, 0x84, - 0x9b, 0x06, 0x86, 0x84, 0x9c, 0x06, 0x86, 0x84, 0x9b, 0x06, 0x87, 0x84, - 0x9c, 0x06, 0x87, 0x84, 0x9b, 0x06, 0x88, 0x84, 0x9c, 0x06, 0x88, 0x84, - 0x9b, 0x06, 0x89, 0x84, 0x9c, 0x06, 0x89, 0x84, 0x9b, 0x06, 0x8a, 0x84, - 0x9c, 0x06, 0x8a, 0x84, 0x9b, 0x06, 0x8b, 0x84, 0x9c, 0x06, 0x8b, 0x84, - 0x9b, 0x06, 0x8c, 0x84, 0x9c, 0x06, 0x8c, 0x84, 0x9b, 0x06, 0x8d, 0x84, - 0x9c, 0x06, 0x8d, 0x84, 0x9b, 0x06, 0x8e, 0x84, 0x9c, 0x06, 0x8e, 0x84, - 0x9b, 0x06, 0x8e, 0x84, 0x9c, 0x06, 0x8f, 0x84, 0x9b, 0x06, 0x8f, 0x84, - 0x9c, 0x06, 0x90, 0x84, 0x9b, 0x06, 0x90, 0x84, 0x9c, 0x06, 0x91, 0x84, - 0x9b, 0x06, 0x91, 0x84, 0x9c, 0x06, 0x92, 0x84, 0x9b, 0x06, 0x92, 0x84, - 0x9c, 0x06, 0x93, 0x84, 0x9b, 0x06, 0x93, 0x84, 0x9c, 0x06, 0x94, 0x84, - 0x9b, 0x06, 0x94, 0x84, 0x9c, 0x06, 0x94, 0x84, 0x9b, 0x06, 0x95, 0x84, - 0x9c, 0x06, 0x95, 0x84, 0x9b, 0x06, 0x96, 0x84, 0x9c, 0x06, 0x96, 0x84, - 0x9b, 0x06, 0x97, 0x84, 0x9c, 0x06, 0x97, 0x84, 0x9b, 0x06, 0x98, 0x84, - 0x9c, 0x06, 0x98, 0x84, 0x9b, 0x06, 0x98, 0x84, 0x9c, 0x06, 0x99, 0x84, - 0x9b, 0x06, 0x99, 0x84, 0x9c, 0x06, 0x9a, 0x84, 0x9b, 0x06, 0x9a, 0x84, - 0x9c, 0x06, 0x9a, 0x84, 0x9b, 0x06, 0x9b, 0x84, 0x9c, 0x06, 0x9b, 0x84, - 0x9b, 0x06, 0x9c, 0x84, 0x9c, 0x06, 0x9c, 0x84, 0x9c, 0x06, 0x9d, 0x84, - 0x9d, 0x06, 0x9d, 0x84, 0x9d, 0x06, 0x9d, 0x84, 0x9d, 0x06, 0x9e, 0x84, - 0x9e, 0x06, 0x9e, 0x84, 0x9e, 0x06, 0x9f, 0x84, 0x9f, 0x06, 0x9f, 0x84, - 0x9e, 0x06, 0x9f, 0x84, 0x9f, 0x06, 0xa0, 0x84, 0x9e, 0x06, 0xa0, 0x84, - 0x9f, 0x06, 0xa1, 0x84, 0x9e, 0x06, 0xa1, 0x84, 0x9f, 0x06, 0xa1, 0x84, - 0x9e, 0x06, 0xa2, 0x84, 0x9f, 0x06, 0xa2, 0x84, 0x9e, 0x06, 0xa3, 0x84, - 0x9f, 0x06, 0xa3, 0x84, 0x9e, 0x06, 0xa3, 0x84, 0x9f, 0x06, 0xa4, 0x84, - 0x9e, 0x06, 0xa4, 0x84, 0x9f, 0x06, 0xa5, 0x84, 0x9e, 0x06, 0xa5, 0x84, - 0x9f, 0x06, 0xa5, 0x84, 0x9e, 0x06, 0xa6, 0x84, 0x9f, 0x06, 0xa6, 0x84, - 0x9e, 0x06, 0xa6, 0x84, 0x9f, 0x06, 0xa7, 0x84, 0x9e, 0x06, 0xa7, 0x84, - 0x9f, 0x06, 0xa8, 0x84, 0x9e, 0x06, 0xa8, 0x84, 0x9f, 0x06, 0xa8, 0x84, - 0x9e, 0x06, 0xa9, 0x84, 0x9f, 0x06, 0xa9, 0x85, 0xa2, 0x06, 0xaa, 0x84, - 0x9f, 0x06, 0xaa, 0x85, 0xa2, 0x06, 0xaa, 0x84, 0x9f, 0x06, 0xab, 0x85, - 0xa2, 0x06, 0xab, 0x85, 0xa2, 0x06, 0xab, 0x85, 0xa2, 0x06, 0xac, 0x85, - 0xa2, 0x06, 0xac, 0x85, 0xa2, 0x06, 0xac, 0x86, 0xa6, 0x06, 0xad, 0x86, - 0xa6, 0x06, 0xad, 0x86, 0xa6, 0x06, 0xae, 0x86, 0xa6, 0x06, 0xae, 0x86, - 0xa6, 0x06, 0xae, 0x86, 0xa6, 0x06, 0xaf, 0x86, 0xa6, 0x06, 0xaf, 0x86, - 0xa6, 0x06, 0xaf, 0x86, 0xa6, 0x06, 0xb0, 0x86, 0xa6, 0x06, 0xb0, 0x87, - 0xaa, 0x06, 0xb0, 0x86, 0xa6, 0x06, 0xb1, 0x87, 0xaa, 0x06, 0xb1, 0x86, - 0xa6, 0x06, 0xb2, 0x87, 0xaa, 0x06, 0xb2, 0x87, 0xa9, 0x06, 0xb2, 0x87, - 0xaa, 0x06, 0xb3, 0x87, 0xa9, 0x06, 0xb3, 0x87, 0xaa, 0x06, 0xb3, 0x88, - 0xad, 0x06, 0xb4, 0x88, 0xad, 0x06, 0xb4, 0x88, 0xad, 0x06, 0xb4, 0x88, - 0xad, 0x06, 0xb5, 0x88, 0xad, 0x06, 0xb5, 0x88, 0xad, 0x06, 0xb5, 0x88, - 0xad, 0x06, 0xb6, 0x88, 0xad, 0x06, 0xb6, 0x88, 0xad, 0x06, 0xb6, 0x88, - 0xad, 0x06, 0xb7, 0x88, 0xad, 0x06, 0xb7, 0x88, 0xad, 0x06, 0xb7, 0x89, - 0xb0, 0x06, 0xb8, 0x88, 0xad, 0x06, 0xb8, 0x89, 0xb0, 0x06, 0xb8, 0x89, - 0xb2, 0x06, 0xb9, 0x89, 0xb0, 0x06, 0xb9, 0x89, 0xb2, 0x06, 0xb9, 0x89, - 0xb0, 0x06, 0xba, 0x89, 0xb2, 0x06, 0xba, 0x89, 0xb0, 0x06, 0xba, 0x89, - 0xb2, 0x06, 0xbb, 0x89, 0xb0, 0x06, 0xbb, 0x89, 0xb2, 0x06, 0xbb, 0x89, - 0xb2, 0x06, 0xbc, 0x89, 0xb2, 0x06, 0xbc, 0x89, 0xb2, 0x06, 0xbc, 0x89, - 0xb2, 0x06, 0xbd, 0x8a, 0xb3, 0x06, 0xbd, 0x8a, 0xb4, 0x06, 0xbd, 0x8b, - 0xb7, 0x06, 0xbe, 0x8b, 0xb7, 0x06, 0xbe, 0x8b, 0xb7, 0x06, 0xbe, 0x8b, - 0xb7, 0x06, 0xbf, 0x8b, 0xb7, 0x06, 0xbf, 0x8b, 0xb7, 0x06, 0xbf, 0x8b, - 0xb7, 0x06, 0xc0, 0x8b, 0xb7, 0x06, 0xc0, 0x8b, 0xb7, 0x06, 0xc0, 0x8b, - 0xb7, 0x06, 0xc1, 0x8c, 0xba, 0x06, 0xc1, 0x8b, 0xb7, 0x06, 0xc1, 0x8c, - 0xba, 0x06, 0xc1, 0x8b, 0xb7, 0x06, 0xc2, 0x8c, 0xba, 0x06, 0xc2, 0x8b, - 0xb7, 0x06, 0xc2, 0x8c, 0xba, 0x06, 0xc3, 0x8c, 0xba, 0x06, 0xc3, 0x8c, - 0xba, 0x06, 0xc3, 0x8d, 0xbd, 0x06, 0xc4, 0x8c, 0xba, 0x06, 0xc4, 0x8d, - 0xbd, 0x06, 0xc4, 0x8c, 0xba, 0x06, 0xc5, 0x8d, 0xbd, 0x06, 0xc5, 0x8c, - 0xba, 0x06, 0xc5, 0x8d, 0xbd, 0x06, 0xc6, 0x8d, 0xbd, 0x06, 0xc6, 0x8d, - 0xbd, 0x06, 0xc6, 0x8e, 0xc0, 0x06, 0xc6, 0x8e, 0xc0, 0x06, 0xc7, 0x8e, - 0xc0, 0x06, 0xc7, 0x8e, 0xc0, 0x06, 0xc7, 0x8e, 0xc0, 0x06, 0xc8, 0x8e, - 0xc0, 0x06, 0xc8, 0x8e, 0xc0, 0x06, 0xc8, 0x8e, 0xc0, 0x06, 0xc9, 0x8e, - 0xc0, 0x06, 0xc9, 0x8e, 0xc0, 0x06, 0xc9, 0x8e, 0xc0, 0x06, 0xc9, 0x8e, - 0xc0, 0x06, 0xca, 0x8e, 0xc3, 0x06, 0xca, 0x8e, 0xc0, 0x06, 0xca, 0x8e, - 0xc3, 0x06, 0xcb, 0x8e, 0xc0, 0x06, 0xcb, 0x8e, 0xc3, 0x06, 0xcb, 0x8e, - 0xc3, 0x06, 0xcc, 0x8e, 0xc3, 0x06, 0xcc, 0x8e, 0xc3, 0x06, 0xcc, 0x8e, - 0xc3, 0x06, 0xcc, 0x8f, 0xc6, 0x06, 0xcd, 0x8e, 0xc3, 0x06, 0xcd, 0x8f, - 0xc6, 0x06, 0xcd, 0x8e, 0xc3, 0x06, 0xce, 0x8f, 0xc6, 0x06, 0xce, 0x8e, - 0xc3, 0x06, 0xce, 0x8f, 0xc6, 0x06, 0xce, 0x8f, 0xc6, 0x06, 0xcf, 0x8f, - 0xc6, 0x06, 0xcf, 0x90, 0xc9, 0x06, 0xcf, 0x90, 0xc9, 0x06, 0xd0, 0x90, - 0xc9, 0x06, 0xd0, 0x90, 0xc9, 0x06, 0xd0, 0x90, 0xc9, 0x06, 0xd0, 0x90, - 0xc9, 0x06, 0xd1, 0x90, 0xc9, 0x06, 0xd1, 0x90, 0xc9, 0x06, 0xd1, 0x90, - 0xc9, 0x06, 0xd2, 0x90, 0xc9, 0x06, 0xd2, 0x91, 0xcc, 0x06, 0xd2, 0x90, - 0xc9, 0x06, 0xd2, 0x91, 0xcc, 0x06, 0xd3, 0x90, 0xc9, 0x06, 0xd3, 0x91, - 0xcc, 0x06, 0xd3, 0x91, 0xca, 0x06, 0xd4, 0x91, 0xcc, 0x06, 0xd4, 0x91, - 0xca, 0x06, 0xd4, 0x91, 0xcc, 0x06, 0xd4, 0x91, 0xcb, 0x06, 0xd5, 0x91, - 0xcc, 0x06, 0xd5, 0x92, 0xce, 0x06, 0xd5, 0x92, 0xce, 0x06, 0xd6, 0x92, - 0xce, 0x06, 0xd6, 0x92, 0xce, 0x06, 0xd6, 0x92, 0xce, 0x06, 0xd6, 0x92, - 0xce, 0x06, 0xd7, 0x92, 0xce, 0x06, 0xd7, 0x92, 0xce, 0x06, 0xd7, 0x92, - 0xce, 0x06, 0xd7, 0x92, 0xce, 0x06, 0xd8, 0x93, 0xd1, 0x06, 0xd8, 0x92, - 0xce, 0x06, 0xd8, 0x93, 0xd1, 0x06, 0xd9, 0x92, 0xce, 0x06, 0xd9, 0x93, - 0xd1, 0x06, 0xd9, 0x92, 0xce, 0x06, 0xd9, 0x93, 0xd1, 0x06, 0xda, 0x93, - 0xd1, 0x06, 0xda, 0x93, 0xd1, 0x06, 0xda, 0x94, 0xd4, 0x06, 0xda, 0x93, - 0xd1, 0x06, 0xdb, 0x94, 0xd4, 0x06, 0xdb, 0x93, 0xd1, 0x06, 0xdb, 0x94, - 0xd4, 0x06, 0xdb, 0x93, 0xd1, 0x06, 0xdc, 0x94, 0xd4, 0x06, 0xdc, 0x94, - 0xd3, 0x06, 0xdc, 0x94, 0xd4, 0x06, 0xdd, 0x95, 0xd6, 0x06, 0xdd, 0x95, - 0xd6, 0x06, 0xdd, 0x95, 0xd6, 0x06, 0xdd, 0x95, 0xd6, 0x06, 0xde, 0x95, - 0xd6, 0x06, 0xde, 0x95, 0xd6, 0x06, 0xde, 0x95, 0xd6, 0x06, 0xde, 0x95, - 0xd6, 0x06, 0xdf, 0x95, 0xd6, 0x06, 0xdf, 0x95, 0xd6, 0x06, 0xdf, 0x96, - 0xd9, 0x06, 0xdf, 0x95, 0xd6, 0x06, 0xe0, 0x96, 0xd9, 0x06, 0xe0, 0x95, - 0xd6, 0x06, 0xe0, 0x96, 0xd9, 0x06, 0xe1, 0x95, 0xd6, 0x06, 0xe1, 0x96, - 0xd9, 0x06, 0xe1, 0x96, 0xd9, 0x06, 0xe1, 0x96, 0xd9, 0x06, 0xe2, 0x97, - 0xdb, 0x06, 0xe2, 0x96, 0xd9, 0x06, 0xe2, 0x97, 0xdb, 0x06, 0xe2, 0x96, - 0xd9, 0x06, 0xe3, 0x97, 0xdb, 0x06, 0xe3, 0x96, 0xd9, 0x06, 0xe3, 0x97, - 0xdb, 0x06, 0xe3, 0x96, 0xd9, 0x06, 0xe4, 0x97, 0xdb, 0x06, 0xe4, 0x97, - 0xdb, 0x06, 0xe4, 0x97, 0xdb, 0x06, 0xe4, 0x98, 0xde, 0x06, 0xe5, 0x98, - 0xde, 0x06, 0xe5, 0x98, 0xde, 0x06, 0xe5, 0x98, 0xde, 0x06, 0xe5, 0x98, - 0xde, 0x06, 0xe6, 0x98, 0xde, 0x06, 0xe6, 0x98, 0xde, 0x06, 0xe6, 0x98, - 0xde, 0x06, 0xe6, 0x98, 0xde, 0x06, 0xe7, 0x98, 0xde, 0x06, 0xe7, 0x98, - 0xe0, 0x06, 0xe7, 0x98, 0xde, 0x06, 0xe7, 0x98, 0xe0, 0x06, 0xe8, 0x98, - 0xde, 0x06, 0xe8, 0x98, 0xe0, 0x06, 0xe8, 0x98, 0xdf, 0x06, 0xe8, 0x98, - 0xe0, 0x06, 0xe9, 0x98, 0xdf, 0x06, 0xe9, 0x98, 0xe0, 0x06, 0xe9, 0x99, - 0xe3, 0x06, 0xe9, 0x98, 0xe0, 0x06, 0xea, 0x99, 0xe3, 0x06, 0xea, 0x98, - 0xe0, 0x06, 0xea, 0x99, 0xe3, 0x06, 0xea, 0x98, 0xe0, 0x06, 0xeb, 0x99, - 0xe3, 0x06, 0xeb, 0x99, 0xe2, 0x06, 0xeb, 0x99, 0xe3, 0x06, 0xeb, 0x9a, - 0xe5, 0x06, 0xec, 0x9a, 0xe5, 0x06, 0xec, 0x9a, 0xe5, 0x06, 0xec, 0x9a, - 0xe5, 0x06, 0xec, 0x9a, 0xe5, 0x06, 0xec, 0x9a, 0xe5, 0x06, 0xed, 0x9a, - 0xe5, 0x06, 0xed, 0x9a, 0xe5, 0x06, 0xed, 0x9a, 0xe5, 0x06, 0xed, 0x9a, - 0xe5, 0x06, 0xee, 0x9a, 0xe5, 0x06, 0xee, 0x9a, 0xe5, 0x06, 0xee, 0x9b, - 0xe7, 0x06, 0xee, 0x9a, 0xe5, 0x06, 0xef, 0x9b, 0xe7, 0x06, 0xef, 0x9a, - 0xe5, 0x06, 0xef, 0x9b, 0xe7, 0x06, 0xef, 0x9a, 0xe5, 0x06, 0xf0, 0x9b, - 0xe7, 0x06, 0xf0, 0x9b, 0xe7, 0x06, 0xf0, 0x9b, 0xe7, 0x06, 0xf0, 0x9c, - 0xea, 0x06, 0xf1, 0x9c, 0xea, 0x06, 0xf1, 0x9c, 0xea, 0x06, 0xf1, 0x9c, - 0xea, 0x06, 0xf1, 0x9c, 0xea, 0x06, 0xf2, 0x9c, 0xea, 0x06, 0xf2, 0x9c, - 0xea, 0x06, 0xf2, 0x9c, 0xea, 0x06, 0xf2, 0x9c, 0xea, 0x06, 0xf2, 0x9c, - 0xea, 0x06, 0xf3, 0x9d, 0xec, 0x06, 0xf3, 0x9c, 0xea, 0x06, 0xf3, 0x9d, - 0xec, 0x06, 0xf3, 0x9c, 0xea, 0x06, 0xf4, 0x9d, 0xec, 0x06, 0xf4, 0x9c, - 0xea, 0x06, 0xf4, 0x9d, 0xec, 0x06, 0xf4, 0x9d, 0xec, 0x06, 0xf5, 0x9d, - 0xec, 0x06, 0xf5, 0x9d, 0xee, 0x06, 0xf5, 0x9d, 0xec, 0x06, 0xf5, 0x9d, - 0xee, 0x06, 0xf5, 0x9d, 0xec, 0x06, 0xf6, 0x9d, 0xee, 0x06, 0xf6, 0x9d, - 0xec, 0x06, 0xf6, 0x9d, 0xee, 0x06, 0xf6, 0x9d, 0xec, 0x06, 0xf7, 0x9d, - 0xee, 0x06, 0xf7, 0x9e, 0xf0, 0x06, 0xf7, 0x9e, 0xf1, 0x06, 0xf7, 0x9e, - 0xf0, 0x06, 0xf8, 0x9e, 0xf1, 0x06, 0xf8, 0x9e, 0xf0, 0x06, 0xf8, 0x9e, - 0xf1, 0x06, 0xf8, 0x9e, 0xf0, 0x06, 0xf8, 0x9e, 0xf1, 0x06, 0xf9, 0x9e, - 0xf0, 0x06, 0xf9, 0x9e, 0xf1, 0x06, 0xf9, 0x9f, 0xf3, 0x06, 0xf9, 0x9e, - 0xf1, 0x06, 0xfa, 0x9f, 0xf3, 0x06, 0xfa, 0x9e, 0xf1, 0x06, 0xfa, 0x9f, - 0xf3, 0x06, 0xfa, 0x9e, 0xf1, 0x06, 0xfa, 0x9f, 0xf3, 0x06, 0xfb, 0x9f, - 0xf2, 0x06, 0xfb, 0x9f, 0xf3, 0x06, 0xfb, 0x9f, 0xf2, 0x06, 0xfb, 0x9f, - 0xf3, 0x06, 0xfc, 0xa0, 0xf5, 0x06, 0xfc, 0x9f, 0xf3, 0x06, 0xfc, 0xa0, - 0xf5, 0x06, 0xfc, 0x9f, 0xf3, 0x06, 0xfc, 0xa0, 0xf5, 0x06, 0xfd, 0x9f, - 0xf3, 0x06, 0xfd, 0xa0, 0xf5, 0x06, 0xfd, 0xa0, 0xf5, 0x06, 0xfd, 0xa0, - 0xf5, 0x06, 0xfe, 0xa1, 0xf7, 0x06, 0xfe, 0xa1, 0xf7, 0x06, 0xfe, 0xa1, - 0xf7, 0x06, 0xfe, 0xa1, 0xf7, 0x06, 0xfe, 0xa1, 0xf7, 0x06, 0xff, 0xa1, - 0xf7, 0x06, 0xff, 0xa1, 0xf7, 0x06, 0x03, 0x83, 0x9b, 0x06, 0x0a, 0x83, - 0x9b, 0x06, 0x0f, 0x83, 0x9b, 0x06, 0x14, 0x83, 0x9b, 0x06, 0x17, 0x83, - 0x9b, 0x06, 0x1b, 0x83, 0x9b, 0x06, 0x1e, 0x83, 0x9b, 0x06, 0x20, 0x83, - 0x9c, 0x06, 0x23, 0x83, 0x9b, 0x06, 0x25, 0x83, 0x9c, 0x06, 0x27, 0x83, - 0x9b, 0x06, 0x29, 0x83, 0x9c, 0x06, 0x2b, 0x83, 0x9b, 0x06, 0x2d, 0x83, - 0x9c, 0x06, 0x2f, 0x83, 0x9b, 0x06, 0x31, 0x83, 0x9c, 0x06, 0x32, 0x83, - 0x9b, 0x06, 0x34, 0x83, 0x9c, 0x06, 0x35, 0x83, 0x9b, 0x06, 0x37, 0x83, - 0x9c, 0x06, 0x38, 0x83, 0x9b, 0x06, 0x3a, 0x83, 0x9c, 0x06, 0x3b, 0x83, - 0x9b, 0x06, 0x3c, 0x83, 0x9c, 0x06, 0x3e, 0x83, 0x9b, 0x06, 0x3f, 0x83, - 0x9c, 0x06, 0x40, 0x83, 0x9b, 0x06, 0x42, 0x83, 0x9c, 0x06, 0x43, 0x83, - 0x9b, 0x06, 0x44, 0x83, 0x9c, 0x06, 0x45, 0x83, 0x9b, 0x06, 0x46, 0x83, - 0x9c, 0x06, 0x47, 0x83, 0x9b, 0x06, 0x48, 0x83, 0x9c, 0x06, 0x49, 0x83, - 0x9b, 0x06, 0x4a, 0x83, 0x9c, 0x06, 0x4b, 0x83, 0x9b, 0x06, 0x4c, 0x83, - 0x9c, 0x06, 0x4d, 0x83, 0x9b, 0x06, 0x4e, 0x83, 0x9c, 0x06, 0x4f, 0x83, - 0x9b, 0x06, 0x50, 0x83, 0x9c, 0x06, 0x51, 0x83, 0x9b, 0x06, 0x52, 0x83, - 0x9c, 0x06, 0x53, 0x83, 0x9b, 0x06, 0x54, 0x83, 0x9c, 0x06, 0x55, 0x83, - 0x9b, 0x06, 0x56, 0x83, 0x9c, 0x06, 0x57, 0x83, 0x9b, 0x06, 0x58, 0x83, - 0x9c, 0x06, 0x58, 0x83, 0x9b, 0x06, 0x59, 0x83, 0x9c, 0x06, 0x5a, 0x83, - 0x9b, 0x06, 0x5b, 0x83, 0x9c, 0x06, 0x5c, 0x83, 0x9b, 0x06, 0x5d, 0x83, - 0x9c, 0x06, 0x5d, 0x83, 0x9b, 0x06, 0x5e, 0x83, 0x9c, 0x06, 0x5f, 0x83, - 0x9b, 0x06, 0x60, 0x83, 0x9c, 0x06, 0x60, 0x83, 0x9b, 0x06, 0x61, 0x83, - 0x9c, 0x06, 0x62, 0x83, 0x9b, 0x06, 0x63, 0x83, 0x9c, 0x06, 0x63, 0x83, - 0x9b, 0x06, 0x64, 0x83, 0x9c, 0x06, 0x65, 0x83, 0x9b, 0x06, 0x66, 0x83, - 0x9c, 0x06, 0x66, 0x83, 0x9b, 0x06, 0x67, 0x83, 0x9c, 0x06, 0x68, 0x83, - 0x9b, 0x06, 0x68, 0x83, 0x9c, 0x06, 0x69, 0x83, 0x9b, 0x06, 0x6a, 0x83, - 0x9c, 0x06, 0x6a, 0x83, 0x9b, 0x06, 0x6b, 0x83, 0x9c, 0x06, 0x6c, 0x83, - 0x9b, 0x06, 0x6c, 0x83, 0x9c, 0x06, 0x6d, 0x83, 0x9b, 0x06, 0x6e, 0x83, - 0x9c, 0x06, 0x6e, 0x83, 0x9b, 0x06, 0x6f, 0x83, 0x9c, 0x06, 0x70, 0x83, - 0x9b, 0x06, 0x70, 0x83, 0x9c, 0x06, 0x71, 0x83, 0x9b, 0x06, 0x72, 0x83, - 0x9c, 0x06, 0x72, 0x83, 0x9b, 0x06, 0x73, 0x83, 0x9c, 0x06, 0x73, 0x83, - 0x9b, 0x06, 0x74, 0x83, 0x9c, 0x06, 0x75, 0x83, 0x9b, 0x06, 0x75, 0x83, - 0x9c, 0x06, 0x76, 0x83, 0x9b, 0x06, 0x76, 0x83, 0x9c, 0x06, 0x77, 0x83, - 0x9b, 0x06, 0x78, 0x83, 0x9c, 0x06, 0x78, 0x83, 0x9b, 0x06, 0x79, 0x83, - 0x9c, 0x06, 0x79, 0x83, 0x9b, 0x06, 0x7a, 0x83, 0x9c, 0x06, 0x7a, 0x83, - 0x9b, 0x06, 0x7b, 0x83, 0x9c, 0x06, 0x7c, 0x83, 0x9b, 0x06, 0x7c, 0x83, - 0x9c, 0x06, 0x7d, 0x83, 0x9b, 0x06, 0x7d, 0x83, 0x9c, 0x06, 0x7e, 0x83, - 0x9b, 0x06, 0x7e, 0x83, 0x9c, 0x06, 0x7f, 0x83, 0x9b, 0x06, 0x7f, 0x83, - 0x9c, 0x06, 0x80, 0x83, 0x9b, 0x06, 0x81, 0x83, 0x9c, 0x06, 0x81, 0x83, - 0x9b, 0x06, 0x82, 0x83, 0x9c, 0x06, 0x82, 0x83, 0x9b, 0x06, 0x83, 0x83, - 0x9c, 0x06, 0x83, 0x83, 0x9b, 0x06, 0x84, 0x83, 0x9c, 0x06, 0x84, 0x83, - 0x9b, 0x06, 0x85, 0x83, 0x9c, 0x06, 0x85, 0x83, 0x9b, 0x06, 0x86, 0x83, - 0x9c, 0x06, 0x86, 0x83, 0x9b, 0x06, 0x87, 0x83, 0x9c, 0x06, 0x87, 0x83, - 0x9b, 0x06, 0x88, 0x83, 0x9c, 0x06, 0x88, 0x83, 0x9b, 0x06, 0x89, 0x83, - 0x9c, 0x06, 0x89, 0x83, 0x9b, 0x06, 0x8a, 0x83, 0x9c, 0x06, 0x8a, 0x83, - 0x9b, 0x06, 0x8b, 0x83, 0x9c, 0x06, 0x8b, 0x83, 0x9b, 0x06, 0x8c, 0x83, - 0x9c, 0x06, 0x8c, 0x83, 0x9b, 0x06, 0x8d, 0x83, 0x9c, 0x06, 0x8d, 0x83, - 0x9b, 0x06, 0x8e, 0x83, 0x9c, 0x06, 0x8e, 0x83, 0x9b, 0x06, 0x8e, 0x83, - 0x9c, 0x06, 0x8f, 0x83, 0x9b, 0x06, 0x8f, 0x83, 0x9c, 0x06, 0x90, 0x83, - 0x9b, 0x06, 0x90, 0x83, 0x9c, 0x06, 0x91, 0x83, 0x9b, 0x06, 0x91, 0x83, - 0x9c, 0x06, 0x92, 0x83, 0x9b, 0x06, 0x92, 0x83, 0x9c, 0x06, 0x93, 0x83, - 0x9b, 0x06, 0x93, 0x83, 0x9c, 0x06, 0x94, 0x83, 0x9b, 0x06, 0x94, 0x83, - 0x9c, 0x06, 0x94, 0x83, 0x9b, 0x06, 0x95, 0x83, 0x9c, 0x06, 0x95, 0x83, - 0x9b, 0x06, 0x96, 0x83, 0x9c, 0x06, 0x96, 0x83, 0x9b, 0x06, 0x97, 0x83, - 0x9c, 0x06, 0x97, 0x83, 0x9b, 0x06, 0x98, 0x83, 0x9c, 0x06, 0x98, 0x83, - 0x9b, 0x06, 0x98, 0x83, 0x9c, 0x06, 0x99, 0x83, 0x9b, 0x06, 0x99, 0x83, - 0x9c, 0x06, 0x9a, 0x83, 0x9b, 0x06, 0x9a, 0x83, 0x9c, 0x06, 0x9a, 0x83, - 0x9b, 0x06, 0x9b, 0x83, 0x9c, 0x06, 0x9b, 0x83, 0x9b, 0x06, 0x9c, 0x83, - 0x9c, 0x06, 0x9c, 0x83, 0x9c, 0x06, 0x9d, 0x83, 0x9d, 0x06, 0x9d, 0x83, - 0x9c, 0x06, 0x9d, 0x83, 0x9d, 0x06, 0x9e, 0x83, 0x9c, 0x06, 0x9e, 0x83, - 0x9d, 0x06, 0x9f, 0x83, 0x9c, 0x06, 0x9f, 0x83, 0x9d, 0x06, 0x9f, 0x83, - 0x9c, 0x06, 0xa0, 0x83, 0x9d, 0x06, 0xa0, 0x83, 0x9c, 0x06, 0xa1, 0x83, - 0x9d, 0x06, 0xa1, 0x83, 0x9c, 0x06, 0xa1, 0x83, 0x9d, 0x06, 0xa2, 0x83, - 0x9c, 0x06, 0xa2, 0x83, 0x9d, 0x06, 0xa3, 0x83, 0x9c, 0x06, 0xa3, 0x83, - 0x9d, 0x06, 0xa3, 0x83, 0x9c, 0x06, 0xa4, 0x83, 0x9d, 0x06, 0xa4, 0x83, - 0x9c, 0x06, 0xa5, 0x83, 0x9d, 0x06, 0xa5, 0x83, 0x9c, 0x06, 0xa5, 0x83, - 0x9d, 0x06, 0xa6, 0x83, 0x9c, 0x06, 0xa6, 0x83, 0x9d, 0x06, 0xa6, 0x84, - 0xa0, 0x06, 0xa7, 0x84, 0xa1, 0x06, 0xa7, 0x84, 0xa0, 0x06, 0xa8, 0x84, - 0xa1, 0x06, 0xa8, 0x84, 0xa0, 0x06, 0xa8, 0x84, 0xa1, 0x06, 0xa9, 0x84, - 0xa0, 0x06, 0xa9, 0x84, 0xa1, 0x06, 0xaa, 0x84, 0xa0, 0x06, 0xaa, 0x84, - 0xa1, 0x06, 0xaa, 0x84, 0xa0, 0x06, 0xab, 0x84, 0xa1, 0x06, 0xab, 0x85, - 0xa4, 0x06, 0xab, 0x84, 0xa1, 0x06, 0xac, 0x85, 0xa4, 0x06, 0xac, 0x84, - 0xa1, 0x06, 0xac, 0x85, 0xa4, 0x06, 0xad, 0x85, 0xa4, 0x06, 0xad, 0x85, - 0xa4, 0x06, 0xae, 0x85, 0xa4, 0x06, 0xae, 0x85, 0xa4, 0x06, 0xae, 0x86, - 0xa8, 0x06, 0xaf, 0x85, 0xa4, 0x06, 0xaf, 0x86, 0xa8, 0x06, 0xaf, 0x85, - 0xa4, 0x06, 0xb0, 0x86, 0xa8, 0x06, 0xb0, 0x86, 0xa7, 0x06, 0xb0, 0x86, - 0xa8, 0x06, 0xb1, 0x86, 0xa7, 0x06, 0xb1, 0x86, 0xa8, 0x06, 0xb2, 0x87, - 0xab, 0x06, 0xb2, 0x87, 0xab, 0x06, 0xb2, 0x87, 0xab, 0x06, 0xb3, 0x87, - 0xab, 0x06, 0xb3, 0x87, 0xab, 0x06, 0xb3, 0x87, 0xab, 0x06, 0xb4, 0x87, - 0xab, 0x06, 0xb4, 0x87, 0xab, 0x06, 0xb4, 0x87, 0xab, 0x06, 0xb5, 0x87, - 0xab, 0x06, 0xb5, 0x88, 0xaf, 0x06, 0xb5, 0x87, 0xab, 0x06, 0xb6, 0x88, - 0xaf, 0x06, 0xb6, 0x87, 0xab, 0x06, 0xb6, 0x88, 0xaf, 0x06, 0xb7, 0x87, - 0xab, 0x06, 0xb7, 0x88, 0xaf, 0x06, 0xb7, 0x88, 0xae, 0x06, 0xb8, 0x88, - 0xaf, 0x06, 0xb8, 0x89, 0xb2, 0x06, 0xb8, 0x89, 0xb2, 0x06, 0xb9, 0x89, - 0xb2, 0x06, 0xb9, 0x89, 0xb2, 0x06, 0xb9, 0x89, 0xb2, 0x06, 0xba, 0x89, - 0xb2, 0x06, 0xba, 0x89, 0xb2, 0x06, 0xba, 0x89, 0xb2, 0x06, 0xbb, 0x89, - 0xb2, 0x06, 0xbb, 0x89, 0xb2, 0x06, 0xbb, 0x89, 0xb2, 0x06, 0xbc, 0x89, - 0xb2, 0x06, 0xbc, 0x8a, 0xb5, 0x06, 0xbc, 0x89, 0xb2, 0x06, 0xbd, 0x8a, - 0xb5, 0x06, 0xbd, 0x89, 0xb2, 0x06, 0xbd, 0x8a, 0xb5, 0x06, 0xbe, 0x8a, - 0xb5, 0x06, 0xbe, 0x8a, 0xb5, 0x06, 0xbe, 0x8a, 0xb5, 0x06, 0xbf, 0x8a, - 0xb5, 0x06, 0xbf, 0x8b, 0xb8, 0x06, 0xbf, 0x8a, 0xb5, 0x06, 0xc0, 0x8b, - 0xb8, 0x06, 0xc0, 0x8a, 0xb5, 0x06, 0xc0, 0x8b, 0xb8, 0x06, 0xc1, 0x8b, - 0xb8, 0x06, 0xc1, 0x8b, 0xb8, 0x06, 0xc1, 0x8b, 0xb8, 0x06, 0xc1, 0x8b, - 0xb8, 0x06, 0xc2, 0x8c, 0xbb, 0x06, 0xc2, 0x8c, 0xbc, 0x06, 0xc2, 0x8c, - 0xbb, 0x06, 0xc3, 0x8c, 0xbc, 0x06, 0xc3, 0x8c, 0xbb, 0x06, 0xc3, 0x8c, - 0xbc, 0x06, 0xc4, 0x8c, 0xbb, 0x06, 0xc4, 0x8c, 0xbc, 0x06, 0xc4, 0x8c, - 0xbb, 0x06, 0xc5, 0x8c, 0xbc, 0x06, 0xc5, 0x8d, 0xbf, 0x06, 0xc5, 0x8c, - 0xbc, 0x06, 0xc6, 0x8d, 0xbf, 0x06, 0xc6, 0x8c, 0xbc, 0x06, 0xc6, 0x8d, - 0xbf, 0x06, 0xc6, 0x8c, 0xbc, 0x06, 0xc7, 0x8d, 0xbf, 0x06, 0xc7, 0x8d, - 0xbe, 0x06, 0xc7, 0x8d, 0xbf, 0x06, 0xc8, 0x8e, 0xc1, 0x06, 0xc8, 0x8d, - 0xbf, 0x06, 0xc8, 0x8e, 0xc1, 0x06, 0xc9, 0x8d, 0xbf, 0x06, 0xc9, 0x8e, - 0xc1, 0x06, 0xc9, 0x8d, 0xbf, 0x06, 0xc9, 0x8e, 0xc1, 0x06, 0xca, 0x8e, - 0xc1, 0x06, 0xca, 0x8e, 0xc1, 0x06, 0xca, 0x8e, 0xc1, 0x06, 0xcb, 0x8e, - 0xc1, 0x06, 0xcb, 0x8f, 0xc4, 0x06, 0xcb, 0x8f, 0xc5, 0x06, 0xcc, 0x8f, - 0xc4, 0x06, 0xcc, 0x8f, 0xc5, 0x06, 0xcc, 0x8f, 0xc4, 0x06, 0xcc, 0x8f, - 0xc5, 0x06, 0xcd, 0x8f, 0xc4, 0x06, 0xcd, 0x8f, 0xc5, 0x06, 0xcd, 0x8f, - 0xc4, 0x06, 0xce, 0x8f, 0xc5, 0x06, 0xce, 0x90, 0xc7, 0x06, 0xce, 0x8f, - 0xc5, 0x06, 0xce, 0x90, 0xc7, 0x06, 0xcf, 0x8f, 0xc5, 0x06, 0xcf, 0x90, - 0xc7, 0x06, 0xcf, 0x8f, 0xc5, 0x06, 0xd0, 0x90, 0xc7, 0x06, 0xd0, 0x90, - 0xc7, 0x06, 0xd0, 0x90, 0xc7, 0x06, 0xd0, 0x91, 0xca, 0x06, 0xd1, 0x90, - 0xc7, 0x06, 0xd1, 0x91, 0xca, 0x06, 0xd1, 0x90, 0xc7, 0x06, 0xd2, 0x91, - 0xca, 0x06, 0xd2, 0x90, 0xc7, 0x06, 0xd2, 0x91, 0xca, 0x06, 0xd2, 0x91, - 0xca, 0x06, 0xd3, 0x91, 0xca, 0x06, 0xd3, 0x92, 0xcd, 0x06, 0xd3, 0x92, - 0xcd, 0x06, 0xd4, 0x92, 0xcd, 0x06, 0xd4, 0x92, 0xcd, 0x06, 0xd4, 0x92, - 0xcd, 0x06, 0xd4, 0x92, 0xcd, 0x06, 0xd5, 0x92, 0xcd, 0x06, 0xd5, 0x92, - 0xcd, 0x06, 0xd5, 0x92, 0xcd, 0x06, 0xd6, 0x92, 0xcd, 0x06, 0xd6, 0x92, - 0xcd, 0x06, 0xd6, 0x92, 0xcd, 0x06, 0xd6, 0x93, 0xd0, 0x06, 0xd7, 0x92, - 0xcd, 0x06, 0xd7, 0x93, 0xd0, 0x06, 0xd7, 0x92, 0xcd, 0x06, 0xd7, 0x93, - 0xd0, 0x06, 0xd8, 0x93, 0xcf, 0x06, 0xd8, 0x93, 0xd0, 0x06, 0xd8, 0x93, - 0xcf, 0x06, 0xd9, 0x93, 0xd0, 0x06, 0xd9, 0x94, 0xd2, 0x06, 0xd9, 0x94, - 0xd2, 0x06, 0xd9, 0x94, 0xd2, 0x06, 0xda, 0x94, 0xd2, 0x06, 0xda, 0x94, - 0xd2, 0x06, 0xda, 0x94, 0xd2, 0x06, 0xda, 0x94, 0xd2, 0x06, 0xdb, 0x94, - 0xd2, 0x06, 0xdb, 0x94, 0xd2, 0x06, 0xdb, 0x94, 0xd2, 0x06, 0xdb, 0x94, - 0xd5, 0x06, 0xdc, 0x94, 0xd2, 0x06, 0xdc, 0x94, 0xd5, 0x06, 0xdc, 0x94, - 0xd2, 0x06, 0xdd, 0x94, 0xd5, 0x06, 0xdd, 0x94, 0xd2, 0x06, 0xdd, 0x94, - 0xd5, 0x06, 0xdd, 0x94, 0xd5, 0x06, 0xde, 0x94, 0xd5, 0x06, 0xde, 0x95, - 0xd7, 0x06, 0xde, 0x94, 0xd5, 0x06, 0xde, 0x95, 0xd7, 0x06, 0xdf, 0x94, - 0xd5, 0x06, 0xdf, 0x95, 0xd7, 0x06, 0xdf, 0x94, 0xd5, 0x06, 0xdf, 0x95, - 0xd7, 0x06, 0xe0, 0x95, 0xd7, 0x06, 0xe0, 0x95, 0xd7, 0x06, 0xe0, 0x96, - 0xda, 0x06, 0xe1, 0x96, 0xda, 0x06, 0xe1, 0x96, 0xda, 0x06, 0xe1, 0x96, - 0xda, 0x06, 0xe1, 0x96, 0xda, 0x06, 0xe2, 0x96, 0xda, 0x06, 0xe2, 0x96, - 0xda, 0x06, 0xe2, 0x96, 0xda, 0x06, 0xe2, 0x96, 0xda, 0x06, 0xe3, 0x96, - 0xda, 0x06, 0xe3, 0x97, 0xdd, 0x06, 0xe3, 0x96, 0xda, 0x06, 0xe3, 0x97, - 0xdd, 0x06, 0xe4, 0x96, 0xda, 0x06, 0xe4, 0x97, 0xdd, 0x06, 0xe4, 0x96, - 0xda, 0x06, 0xe4, 0x97, 0xdd, 0x06, 0xe5, 0x96, 0xda, 0x06, 0xe5, 0x97, - 0xdd, 0x06, 0xe5, 0x97, 0xdc, 0x06, 0xe5, 0x97, 0xdd, 0x06, 0xe6, 0x98, - 0xdf, 0x06, 0xe6, 0x97, 0xdd, 0x06, 0xe6, 0x98, 0xdf, 0x06, 0xe6, 0x97, - 0xdd, 0x06, 0xe7, 0x98, 0xdf, 0x06, 0xe7, 0x97, 0xdd, 0x06, 0xe7, 0x98, - 0xdf, 0x06, 0xe7, 0x98, 0xdf, 0x06, 0xe8, 0x98, 0xdf, 0x06, 0xe8, 0x99, - 0xe1, 0x06, 0xe8, 0x99, 0xe2, 0x06, 0xe8, 0x99, 0xe1, 0x06, 0xe9, 0x99, - 0xe2, 0x06, 0xe9, 0x99, 0xe1, 0x06, 0xe9, 0x99, 0xe2, 0x06, 0xe9, 0x99, - 0xe1, 0x06, 0xea, 0x99, 0xe2, 0x06, 0xea, 0x99, 0xe1, 0x06, 0xea, 0x99, - 0xe2, 0x06, 0xea, 0x9a, 0xe4, 0x06, 0xeb, 0x99, 0xe2, 0x06, 0xeb, 0x9a, - 0xe4, 0x06, 0xeb, 0x99, 0xe2, 0x06, 0xeb, 0x9a, 0xe4, 0x06, 0xec, 0x99, - 0xe2, 0x06, 0xec, 0x9a, 0xe4, 0x06, 0xec, 0x9a, 0xe4, 0x06, 0xec, 0x9a, - 0xe4, 0x06, 0xec, 0x9a, 0xe6, 0x06, 0xed, 0x9a, 0xe4, 0x06, 0xed, 0x9a, - 0xe6, 0x06, 0xed, 0x9a, 0xe4, 0x06, 0xed, 0x9a, 0xe6, 0x06, 0xee, 0x9a, - 0xe4, 0x06, 0xee, 0x9a, 0xe6, 0x06, 0xee, 0x9a, 0xe4, 0x06, 0xee, 0x9a, - 0xe6, 0x06, 0xef, 0x9a, 0xe6, 0x06, 0xef, 0x9a, 0xe6, 0x06, 0xef, 0x9b, - 0xe8, 0x06, 0xef, 0x9b, 0xe9, 0x06, 0xf0, 0x9b, 0xe8, 0x06, 0xf0, 0x9b, - 0xe9, 0x06, 0xf0, 0x9b, 0xe8, 0x06, 0xf0, 0x9b, 0xe9, 0x06, 0xf1, 0x9b, - 0xe8, 0x06, 0xf1, 0x9b, 0xe9, 0x06, 0xf1, 0x9b, 0xe8, 0x06, 0xf1, 0x9b, - 0xe9, 0x06, 0xf2, 0x9c, 0xeb, 0x06, 0xf2, 0x9b, 0xe9, 0x06, 0xf2, 0x9c, - 0xeb, 0x06, 0xf2, 0x9b, 0xe9, 0x06, 0xf2, 0x9c, 0xeb, 0x06, 0xf3, 0x9b, - 0xe9, 0x06, 0xf3, 0x9c, 0xeb, 0x06, 0xf3, 0x9c, 0xeb, 0x06, 0xf3, 0x9c, - 0xeb, 0x06, 0xf4, 0x9d, 0xed, 0x06, 0xf4, 0x9d, 0xed, 0x06, 0xf4, 0x9d, - 0xed, 0x06, 0xf4, 0x9d, 0xed, 0x06, 0xf5, 0x9d, 0xed, 0x06, 0xf5, 0x9d, - 0xed, 0x06, 0xf5, 0x9d, 0xed, 0x06, 0xf5, 0x9d, 0xed, 0x06, 0xf5, 0x9d, - 0xed, 0x06, 0xf6, 0x9d, 0xed, 0x06, 0xf6, 0x9e, 0xef, 0x06, 0xf6, 0x9d, - 0xed, 0x06, 0xf6, 0x9e, 0xef, 0x06, 0xf7, 0x9d, 0xed, 0x06, 0xf7, 0x9e, - 0xef, 0x06, 0xf7, 0x9d, 0xed, 0x06, 0xf7, 0x9e, 0xef, 0x06, 0xf8, 0x9d, - 0xed, 0x06, 0xf8, 0x9e, 0xef, 0x06, 0xf8, 0x9f, 0xf2, 0x06, 0xf8, 0x9e, - 0xef, 0x06, 0xf8, 0x9f, 0xf2, 0x06, 0xf9, 0x9e, 0xef, 0x06, 0xf9, 0x9f, - 0xf2, 0x06, 0xf9, 0x9e, 0xef, 0x06, 0xf9, 0x9f, 0xf2, 0x06, 0xfa, 0x9e, - 0xef, 0x06, 0xfa, 0x9f, 0xf2, 0x06, 0xfa, 0x9f, 0xf4, 0x06, 0xfa, 0x9f, - 0xf2, 0x06, 0xfa, 0x9f, 0xf4, 0x06, 0xfb, 0x9f, 0xf4, 0x06, 0xfb, 0x9f, - 0xf4, 0x06, 0xfb, 0x9f, 0xf4, 0x06, 0xfb, 0x9f, 0xf4, 0x06, 0xfc, 0x9f, - 0xf4, 0x06, 0xfc, 0x9f, 0xf4, 0x06, 0xfc, 0x9f, 0xf4, 0x06, 0xfc, 0x9f, - 0xf4, 0x06, 0xfc, 0x9f, 0xf4, 0x06, 0xfd, 0xa0, 0xf6, 0x06, 0xfd, 0x9f, - 0xf4, 0x06, 0xfd, 0xa0, 0xf6, 0x06, 0xfd, 0x9f, 0xf4, 0x06, 0xfe, 0xa0, - 0xf6, 0x06, 0xfe, 0xa0, 0xf6, 0x06, 0xfe, 0xa0, 0xf6, 0x06, 0xfe, 0xa0, - 0xf6, 0x06, 0xfe, 0xa0, 0xf6, 0x06, 0xff, 0xa0, 0xf6, 0x06, 0xff, 0xa0, - 0xf6, 0x06, 0x03, 0x84, 0x9b, 0x07, 0x0a, 0x84, 0x9b, 0x07, 0x0f, 0x84, - 0x9b, 0x07, 0x14, 0x84, 0x9b, 0x07, 0x17, 0x84, 0x9b, 0x07, 0x1b, 0x84, - 0x9b, 0x07, 0x1e, 0x84, 0x9b, 0x07, 0x20, 0x84, 0x9c, 0x07, 0x23, 0x84, - 0x9b, 0x07, 0x25, 0x84, 0x9c, 0x07, 0x27, 0x84, 0x9b, 0x07, 0x29, 0x84, - 0x9c, 0x07, 0x2b, 0x84, 0x9b, 0x07, 0x2d, 0x84, 0x9c, 0x07, 0x2f, 0x84, - 0x9b, 0x07, 0x31, 0x84, 0x9c, 0x07, 0x32, 0x84, 0x9b, 0x07, 0x34, 0x84, - 0x9c, 0x07, 0x35, 0x84, 0x9b, 0x07, 0x37, 0x84, 0x9c, 0x07, 0x38, 0x84, - 0x9b, 0x07, 0x3a, 0x84, 0x9c, 0x07, 0x3b, 0x84, 0x9b, 0x07, 0x3c, 0x84, - 0x9c, 0x07, 0x3e, 0x84, 0x9b, 0x07, 0x3f, 0x84, 0x9c, 0x07, 0x40, 0x84, - 0x9b, 0x07, 0x42, 0x84, 0x9c, 0x07, 0x43, 0x84, 0x9b, 0x07, 0x44, 0x84, - 0x9c, 0x07, 0x45, 0x84, 0x9b, 0x07, 0x46, 0x84, 0x9c, 0x07, 0x47, 0x84, - 0x9b, 0x07, 0x48, 0x84, 0x9c, 0x07, 0x49, 0x84, 0x9b, 0x07, 0x4a, 0x84, - 0x9c, 0x07, 0x4b, 0x84, 0x9b, 0x07, 0x4c, 0x84, 0x9c, 0x07, 0x4d, 0x84, - 0x9b, 0x07, 0x4e, 0x84, 0x9c, 0x07, 0x4f, 0x84, 0x9b, 0x07, 0x50, 0x84, - 0x9c, 0x07, 0x51, 0x84, 0x9b, 0x07, 0x52, 0x84, 0x9c, 0x07, 0x53, 0x84, - 0x9b, 0x07, 0x54, 0x84, 0x9c, 0x07, 0x55, 0x84, 0x9b, 0x07, 0x56, 0x84, - 0x9c, 0x07, 0x57, 0x84, 0x9b, 0x07, 0x58, 0x84, 0x9c, 0x07, 0x58, 0x84, - 0x9b, 0x07, 0x59, 0x84, 0x9c, 0x07, 0x5a, 0x84, 0x9b, 0x07, 0x5b, 0x84, - 0x9c, 0x07, 0x5c, 0x84, 0x9b, 0x07, 0x5d, 0x84, 0x9c, 0x07, 0x5d, 0x84, - 0x9b, 0x07, 0x5e, 0x84, 0x9c, 0x07, 0x5f, 0x84, 0x9b, 0x07, 0x60, 0x84, - 0x9c, 0x07, 0x60, 0x84, 0x9b, 0x07, 0x61, 0x84, 0x9c, 0x07, 0x62, 0x84, - 0x9b, 0x07, 0x63, 0x84, 0x9c, 0x07, 0x63, 0x84, 0x9b, 0x07, 0x64, 0x84, - 0x9c, 0x07, 0x65, 0x84, 0x9b, 0x07, 0x66, 0x84, 0x9c, 0x07, 0x66, 0x84, - 0x9b, 0x07, 0x67, 0x84, 0x9c, 0x07, 0x68, 0x84, 0x9b, 0x07, 0x68, 0x84, - 0x9c, 0x07, 0x69, 0x84, 0x9b, 0x07, 0x6a, 0x84, 0x9c, 0x07, 0x6a, 0x84, - 0x9b, 0x07, 0x6b, 0x84, 0x9c, 0x07, 0x6c, 0x84, 0x9b, 0x07, 0x6c, 0x84, - 0x9c, 0x07, 0x6d, 0x84, 0x9b, 0x07, 0x6e, 0x84, 0x9c, 0x07, 0x6e, 0x84, - 0x9b, 0x07, 0x6f, 0x84, 0x9c, 0x07, 0x70, 0x84, 0x9b, 0x07, 0x70, 0x84, - 0x9c, 0x07, 0x71, 0x84, 0x9b, 0x07, 0x72, 0x84, 0x9c, 0x07, 0x72, 0x84, - 0x9b, 0x07, 0x73, 0x84, 0x9c, 0x07, 0x73, 0x84, 0x9b, 0x07, 0x74, 0x84, - 0x9c, 0x07, 0x75, 0x84, 0x9b, 0x07, 0x75, 0x84, 0x9c, 0x07, 0x76, 0x84, - 0x9b, 0x07, 0x76, 0x84, 0x9c, 0x07, 0x77, 0x84, 0x9b, 0x07, 0x78, 0x84, - 0x9c, 0x07, 0x78, 0x84, 0x9b, 0x07, 0x79, 0x84, 0x9c, 0x07, 0x79, 0x84, - 0x9b, 0x07, 0x7a, 0x84, 0x9c, 0x07, 0x7a, 0x84, 0x9b, 0x07, 0x7b, 0x84, - 0x9c, 0x07, 0x7c, 0x84, 0x9b, 0x07, 0x7c, 0x84, 0x9c, 0x07, 0x7d, 0x84, - 0x9b, 0x07, 0x7d, 0x84, 0x9c, 0x07, 0x7e, 0x84, 0x9b, 0x07, 0x7e, 0x84, - 0x9c, 0x07, 0x7f, 0x84, 0x9b, 0x07, 0x7f, 0x84, 0x9c, 0x07, 0x80, 0x84, - 0x9b, 0x07, 0x81, 0x84, 0x9c, 0x07, 0x81, 0x84, 0x9b, 0x07, 0x82, 0x84, - 0x9c, 0x07, 0x82, 0x84, 0x9b, 0x07, 0x83, 0x84, 0x9c, 0x07, 0x83, 0x84, - 0x9b, 0x07, 0x84, 0x84, 0x9c, 0x07, 0x84, 0x84, 0x9b, 0x07, 0x85, 0x84, - 0x9c, 0x07, 0x85, 0x84, 0x9b, 0x07, 0x86, 0x84, 0x9c, 0x07, 0x86, 0x84, - 0x9b, 0x07, 0x87, 0x84, 0x9c, 0x07, 0x87, 0x84, 0x9b, 0x07, 0x88, 0x84, - 0x9c, 0x07, 0x88, 0x84, 0x9b, 0x07, 0x89, 0x84, 0x9c, 0x07, 0x89, 0x84, - 0x9b, 0x07, 0x8a, 0x84, 0x9c, 0x07, 0x8a, 0x84, 0x9b, 0x07, 0x8b, 0x84, - 0x9c, 0x07, 0x8b, 0x84, 0x9b, 0x07, 0x8c, 0x84, 0x9c, 0x07, 0x8c, 0x84, - 0x9b, 0x07, 0x8d, 0x84, 0x9c, 0x07, 0x8d, 0x84, 0x9b, 0x07, 0x8e, 0x84, - 0x9c, 0x07, 0x8e, 0x84, 0x9b, 0x07, 0x8e, 0x84, 0x9c, 0x07, 0x8f, 0x84, - 0x9b, 0x07, 0x8f, 0x84, 0x9c, 0x07, 0x90, 0x84, 0x9b, 0x07, 0x90, 0x84, - 0x9c, 0x07, 0x91, 0x84, 0x9b, 0x07, 0x91, 0x84, 0x9c, 0x07, 0x92, 0x84, - 0x9b, 0x07, 0x92, 0x84, 0x9c, 0x07, 0x93, 0x84, 0x9b, 0x07, 0x93, 0x84, - 0x9c, 0x07, 0x94, 0x84, 0x9b, 0x07, 0x94, 0x84, 0x9c, 0x07, 0x94, 0x84, - 0x9b, 0x07, 0x95, 0x84, 0x9c, 0x07, 0x95, 0x84, 0x9b, 0x07, 0x96, 0x84, - 0x9c, 0x07, 0x96, 0x84, 0x9b, 0x07, 0x97, 0x84, 0x9c, 0x07, 0x97, 0x84, - 0x9b, 0x07, 0x98, 0x84, 0x9c, 0x07, 0x98, 0x84, 0x9b, 0x07, 0x98, 0x84, - 0x9c, 0x07, 0x99, 0x84, 0x9b, 0x07, 0x99, 0x84, 0x9c, 0x07, 0x9a, 0x84, - 0x9b, 0x07, 0x9a, 0x84, 0x9c, 0x07, 0x9a, 0x84, 0x9b, 0x07, 0x9b, 0x84, - 0x9c, 0x07, 0x9b, 0x84, 0x9b, 0x07, 0x9c, 0x84, 0x9c, 0x07, 0x9c, 0x84, - 0x9c, 0x07, 0x9d, 0x84, 0x9d, 0x07, 0x9d, 0x84, 0x9d, 0x07, 0x9d, 0x84, - 0x9d, 0x07, 0x9e, 0x84, 0x9e, 0x07, 0x9e, 0x84, 0x9e, 0x07, 0x9f, 0x84, - 0x9f, 0x07, 0x9f, 0x84, 0x9e, 0x07, 0x9f, 0x84, 0x9f, 0x07, 0xa0, 0x84, - 0x9e, 0x07, 0xa0, 0x84, 0x9f, 0x07, 0xa1, 0x84, 0x9e, 0x07, 0xa1, 0x84, - 0x9f, 0x07, 0xa1, 0x84, 0x9e, 0x07, 0xa2, 0x84, 0x9f, 0x07, 0xa2, 0x84, - 0x9e, 0x07, 0xa3, 0x84, 0x9f, 0x07, 0xa3, 0x84, 0x9e, 0x07, 0xa3, 0x84, - 0x9f, 0x07, 0xa4, 0x84, 0x9e, 0x07, 0xa4, 0x84, 0x9f, 0x07, 0xa5, 0x84, - 0x9e, 0x07, 0xa5, 0x84, 0x9f, 0x07, 0xa5, 0x84, 0x9e, 0x07, 0xa6, 0x84, - 0x9f, 0x07, 0xa6, 0x84, 0x9e, 0x07, 0xa6, 0x84, 0x9f, 0x07, 0xa7, 0x84, - 0x9e, 0x07, 0xa7, 0x84, 0x9f, 0x07, 0xa8, 0x84, 0x9e, 0x07, 0xa8, 0x84, - 0x9f, 0x07, 0xa8, 0x85, 0xa2, 0x07, 0xa9, 0x84, 0x9f, 0x07, 0xa9, 0x85, - 0xa2, 0x07, 0xaa, 0x84, 0x9f, 0x07, 0xaa, 0x85, 0xa2, 0x07, 0xaa, 0x84, - 0x9f, 0x07, 0xab, 0x85, 0xa2, 0x07, 0xab, 0x85, 0xa2, 0x07, 0xab, 0x85, - 0xa2, 0x07, 0xac, 0x85, 0xa2, 0x07, 0xac, 0x85, 0xa2, 0x07, 0xac, 0x86, - 0xa6, 0x07, 0xad, 0x86, 0xa6, 0x07, 0xad, 0x86, 0xa6, 0x07, 0xae, 0x86, - 0xa6, 0x07, 0xae, 0x86, 0xa6, 0x07, 0xae, 0x86, 0xa6, 0x07, 0xaf, 0x86, - 0xa6, 0x07, 0xaf, 0x86, 0xa6, 0x07, 0xaf, 0x86, 0xa6, 0x07, 0xb0, 0x86, - 0xa6, 0x07, 0xb0, 0x87, 0xaa, 0x07, 0xb0, 0x86, 0xa6, 0x07, 0xb1, 0x87, - 0xaa, 0x07, 0xb1, 0x86, 0xa6, 0x07, 0xb2, 0x87, 0xaa, 0x07, 0xb2, 0x87, - 0xa9, 0x07, 0xb2, 0x87, 0xaa, 0x07, 0xb3, 0x87, 0xa9, 0x07, 0xb3, 0x87, - 0xaa, 0x07, 0xb3, 0x88, 0xad, 0x07, 0xb4, 0x88, 0xad, 0x07, 0xb4, 0x88, - 0xad, 0x07, 0xb4, 0x88, 0xad, 0x07, 0xb5, 0x88, 0xad, 0x07, 0xb5, 0x88, - 0xad, 0x07, 0xb5, 0x88, 0xad, 0x07, 0xb6, 0x88, 0xad, 0x07, 0xb6, 0x88, - 0xad, 0x07, 0xb6, 0x88, 0xad, 0x07, 0xb7, 0x89, 0xb0, 0x07, 0xb7, 0x88, - 0xad, 0x07, 0xb7, 0x89, 0xb0, 0x07, 0xb8, 0x88, 0xad, 0x07, 0xb8, 0x89, - 0xb0, 0x07, 0xb8, 0x89, 0xb2, 0x07, 0xb9, 0x89, 0xb0, 0x07, 0xb9, 0x89, - 0xb2, 0x07, 0xb9, 0x89, 0xb0, 0x07, 0xba, 0x89, 0xb2, 0x07, 0xba, 0x89, - 0xb0, 0x07, 0xba, 0x89, 0xb2, 0x07, 0xbb, 0x89, 0xb0, 0x07, 0xbb, 0x89, - 0xb2, 0x07, 0xbb, 0x89, 0xb2, 0x07, 0xbc, 0x89, 0xb2, 0x07, 0xbc, 0x89, - 0xb2, 0x07, 0xbc, 0x89, 0xb2, 0x07, 0xbd, 0x8a, 0xb3, 0x07, 0xbd, 0x8a, - 0xb4, 0x07, 0xbd, 0x8b, 0xb7, 0x07, 0xbe, 0x8b, 0xb7, 0x07, 0xbe, 0x8b, - 0xb7, 0x07, 0xbe, 0x8b, 0xb7, 0x07, 0xbf, 0x8b, 0xb7, 0x07, 0xbf, 0x8b, - 0xb7, 0x07, 0xbf, 0x8b, 0xb7, 0x07, 0xc0, 0x8b, 0xb7, 0x07, 0xc0, 0x8b, - 0xb7, 0x07, 0xc0, 0x8b, 0xb7, 0x07, 0xc1, 0x8c, 0xba, 0x07, 0xc1, 0x8b, - 0xb7, 0x07, 0xc1, 0x8c, 0xba, 0x07, 0xc1, 0x8b, 0xb7, 0x07, 0xc2, 0x8c, - 0xba, 0x07, 0xc2, 0x8c, 0xba, 0x07, 0xc2, 0x8c, 0xba, 0x07, 0xc3, 0x8c, - 0xba, 0x07, 0xc3, 0x8c, 0xba, 0x07, 0xc3, 0x8d, 0xbd, 0x07, 0xc4, 0x8c, - 0xba, 0x07, 0xc4, 0x8d, 0xbd, 0x07, 0xc4, 0x8c, 0xba, 0x07, 0xc5, 0x8d, - 0xbd, 0x07, 0xc5, 0x8c, 0xba, 0x07, 0xc5, 0x8d, 0xbd, 0x07, 0xc6, 0x8d, - 0xbd, 0x07, 0xc6, 0x8d, 0xbd, 0x07, 0xc6, 0x8e, 0xc0, 0x07, 0xc6, 0x8e, - 0xc0, 0x07, 0xc7, 0x8e, 0xc0, 0x07, 0xc7, 0x8e, 0xc0, 0x07, 0xc7, 0x8e, - 0xc0, 0x07, 0xc8, 0x8e, 0xc0, 0x07, 0xc8, 0x8e, 0xc0, 0x07, 0xc8, 0x8e, - 0xc0, 0x07, 0xc9, 0x8e, 0xc0, 0x07, 0xc9, 0x8e, 0xc0, 0x07, 0xc9, 0x8e, - 0xc3, 0x07, 0xc9, 0x8e, 0xc0, 0x07, 0xca, 0x8e, 0xc3, 0x07, 0xca, 0x8e, - 0xc0, 0x07, 0xca, 0x8e, 0xc3, 0x07, 0xcb, 0x8e, 0xc0, 0x07, 0xcb, 0x8e, - 0xc3, 0x07, 0xcb, 0x8e, 0xc3, 0x07, 0xcc, 0x8e, 0xc3, 0x07, 0xcc, 0x8e, - 0xc3, 0x07, 0xcc, 0x8e, 0xc3, 0x07, 0xcc, 0x8f, 0xc6, 0x07, 0xcd, 0x8e, - 0xc3, 0x07, 0xcd, 0x8f, 0xc6, 0x07, 0xcd, 0x8e, 0xc3, 0x07, 0xce, 0x8f, - 0xc6, 0x07, 0xce, 0x8f, 0xc6, 0x07, 0xce, 0x8f, 0xc6, 0x07, 0xce, 0x8f, - 0xc6, 0x07, 0xcf, 0x8f, 0xc6, 0x07, 0xcf, 0x90, 0xc9, 0x07, 0xcf, 0x90, - 0xc9, 0x07, 0xd0, 0x90, 0xc9, 0x07, 0xd0, 0x90, 0xc9, 0x07, 0xd0, 0x90, - 0xc9, 0x07, 0xd0, 0x90, 0xc9, 0x07, 0xd1, 0x90, 0xc9, 0x07, 0xd1, 0x90, - 0xc9, 0x07, 0xd1, 0x90, 0xc9, 0x07, 0xd2, 0x90, 0xc9, 0x07, 0xd2, 0x91, - 0xcc, 0x07, 0xd2, 0x90, 0xc9, 0x07, 0xd2, 0x91, 0xcc, 0x07, 0xd3, 0x90, - 0xc9, 0x07, 0xd3, 0x91, 0xcc, 0x07, 0xd3, 0x91, 0xca, 0x07, 0xd4, 0x91, - 0xcc, 0x07, 0xd4, 0x91, 0xca, 0x07, 0xd4, 0x91, 0xcc, 0x07, 0xd4, 0x92, - 0xce, 0x07, 0xd5, 0x92, 0xce, 0x07, 0xd5, 0x92, 0xce, 0x07, 0xd5, 0x92, - 0xce, 0x07, 0xd6, 0x92, 0xce, 0x07, 0xd6, 0x92, 0xce, 0x07, 0xd6, 0x92, - 0xce, 0x07, 0xd6, 0x92, 0xce, 0x07, 0xd7, 0x92, 0xce, 0x07, 0xd7, 0x92, - 0xce, 0x07, 0xd7, 0x92, 0xce, 0x07, 0xd7, 0x92, 0xce, 0x07, 0xd8, 0x93, - 0xd1, 0x07, 0xd8, 0x92, 0xce, 0x07, 0xd8, 0x93, 0xd1, 0x07, 0xd9, 0x92, - 0xce, 0x07, 0xd9, 0x93, 0xd1, 0x07, 0xd9, 0x93, 0xd1, 0x07, 0xd9, 0x93, - 0xd1, 0x07, 0xda, 0x93, 0xd1, 0x07, 0xda, 0x93, 0xd1, 0x07, 0xda, 0x94, - 0xd4, 0x07, 0xda, 0x93, 0xd1, 0x07, 0xdb, 0x94, 0xd4, 0x07, 0xdb, 0x93, - 0xd1, 0x07, 0xdb, 0x94, 0xd4, 0x07, 0xdb, 0x93, 0xd1, 0x07, 0xdc, 0x94, - 0xd4, 0x07, 0xdc, 0x94, 0xd3, 0x07, 0xdc, 0x94, 0xd4, 0x07, 0xdd, 0x95, - 0xd6, 0x07, 0xdd, 0x95, 0xd6, 0x07, 0xdd, 0x95, 0xd6, 0x07, 0xdd, 0x95, - 0xd6, 0x07, 0xde, 0x95, 0xd6, 0x07, 0xde, 0x95, 0xd6, 0x07, 0xde, 0x95, - 0xd6, 0x07, 0xde, 0x95, 0xd6, 0x07, 0xdf, 0x95, 0xd6, 0x07, 0xdf, 0x95, - 0xd6, 0x07, 0xdf, 0x96, 0xd9, 0x07, 0xdf, 0x95, 0xd6, 0x07, 0xe0, 0x96, - 0xd9, 0x07, 0xe0, 0x95, 0xd6, 0x07, 0xe0, 0x96, 0xd9, 0x07, 0xe1, 0x95, - 0xd6, 0x07, 0xe1, 0x96, 0xd9, 0x07, 0xe1, 0x96, 0xd9, 0x07, 0xe1, 0x96, - 0xd9, 0x07, 0xe2, 0x97, 0xdb, 0x07, 0xe2, 0x96, 0xd9, 0x07, 0xe2, 0x97, - 0xdb, 0x07, 0xe2, 0x96, 0xd9, 0x07, 0xe3, 0x97, 0xdb, 0x07, 0xe3, 0x96, - 0xd9, 0x07, 0xe3, 0x97, 0xdb, 0x07, 0xe3, 0x97, 0xdb, 0x07, 0xe4, 0x97, - 0xdb, 0x07, 0xe4, 0x98, 0xde, 0x07, 0xe4, 0x98, 0xde, 0x07, 0xe4, 0x98, - 0xde, 0x07, 0xe5, 0x98, 0xde, 0x07, 0xe5, 0x98, 0xde, 0x07, 0xe5, 0x98, - 0xde, 0x07, 0xe5, 0x98, 0xde, 0x07, 0xe6, 0x98, 0xde, 0x07, 0xe6, 0x98, - 0xde, 0x07, 0xe6, 0x98, 0xde, 0x07, 0xe6, 0x98, 0xde, 0x07, 0xe7, 0x98, - 0xde, 0x07, 0xe7, 0x98, 0xe0, 0x07, 0xe7, 0x98, 0xde, 0x07, 0xe7, 0x98, - 0xe0, 0x07, 0xe8, 0x98, 0xde, 0x07, 0xe8, 0x98, 0xe0, 0x07, 0xe8, 0x98, - 0xdf, 0x07, 0xe8, 0x98, 0xe0, 0x07, 0xe9, 0x98, 0xdf, 0x07, 0xe9, 0x98, - 0xe0, 0x07, 0xe9, 0x99, 0xe3, 0x07, 0xe9, 0x98, 0xe0, 0x07, 0xea, 0x99, - 0xe3, 0x07, 0xea, 0x98, 0xe0, 0x07, 0xea, 0x99, 0xe3, 0x07, 0xea, 0x98, - 0xe0, 0x07, 0xeb, 0x99, 0xe3, 0x07, 0xeb, 0x99, 0xe2, 0x07, 0xeb, 0x99, - 0xe3, 0x07, 0xeb, 0x9a, 0xe5, 0x07, 0xec, 0x9a, 0xe5, 0x07, 0xec, 0x9a, - 0xe5, 0x07, 0xec, 0x9a, 0xe5, 0x07, 0xec, 0x9a, 0xe5, 0x07, 0xec, 0x9a, - 0xe5, 0x07, 0xed, 0x9a, 0xe5, 0x07, 0xed, 0x9a, 0xe5, 0x07, 0xed, 0x9a, - 0xe5, 0x07, 0xed, 0x9a, 0xe5, 0x07, 0xee, 0x9b, 0xe7, 0x07, 0xee, 0x9a, - 0xe5, 0x07, 0xee, 0x9b, 0xe7, 0x07, 0xee, 0x9a, 0xe5, 0x07, 0xef, 0x9b, - 0xe7, 0x07, 0xef, 0x9a, 0xe5, 0x07, 0xef, 0x9b, 0xe7, 0x07, 0xef, 0x9a, - 0xe5, 0x07, 0xf0, 0x9b, 0xe7, 0x07, 0xf0, 0x9b, 0xe7, 0x07, 0xf0, 0x9b, - 0xe7, 0x07, 0xf0, 0x9c, 0xea, 0x07, 0xf1, 0x9c, 0xea, 0x07, 0xf1, 0x9c, - 0xea, 0x07, 0xf1, 0x9c, 0xea, 0x07, 0xf1, 0x9c, 0xea, 0x07, 0xf2, 0x9c, - 0xea, 0x07, 0xf2, 0x9c, 0xea, 0x07, 0xf2, 0x9c, 0xea, 0x07, 0xf2, 0x9c, - 0xea, 0x07, 0xf2, 0x9c, 0xea, 0x07, 0xf3, 0x9d, 0xec, 0x07, 0xf3, 0x9c, - 0xea, 0x07, 0xf3, 0x9d, 0xec, 0x07, 0xf3, 0x9c, 0xea, 0x07, 0xf4, 0x9d, - 0xec, 0x07, 0xf4, 0x9c, 0xea, 0x07, 0xf4, 0x9d, 0xec, 0x07, 0xf4, 0x9d, - 0xec, 0x07, 0xf5, 0x9d, 0xec, 0x07, 0xf5, 0x9d, 0xee, 0x07, 0xf5, 0x9d, - 0xec, 0x07, 0xf5, 0x9d, 0xee, 0x07, 0xf5, 0x9d, 0xec, 0x07, 0xf6, 0x9d, - 0xee, 0x07, 0xf6, 0x9d, 0xec, 0x07, 0xf6, 0x9d, 0xee, 0x07, 0xf6, 0x9d, - 0xee, 0x07, 0xf7, 0x9d, 0xee, 0x07, 0xf7, 0x9e, 0xf0, 0x07, 0xf7, 0x9e, - 0xf1, 0x07, 0xf7, 0x9e, 0xf0, 0x07, 0xf8, 0x9e, 0xf1, 0x07, 0xf8, 0x9e, - 0xf0, 0x07, 0xf8, 0x9e, 0xf1, 0x07, 0xf8, 0x9e, 0xf0, 0x07, 0xf8, 0x9e, - 0xf1, 0x07, 0xf9, 0x9e, 0xf0, 0x07, 0xf9, 0x9e, 0xf1, 0x07, 0xf9, 0x9f, - 0xf3, 0x07, 0xf9, 0x9e, 0xf1, 0x07, 0xfa, 0x9f, 0xf3, 0x07, 0xfa, 0x9e, - 0xf1, 0x07, 0xfa, 0x9f, 0xf3, 0x07, 0xfa, 0x9e, 0xf1, 0x07, 0xfa, 0x9f, - 0xf3, 0x07, 0xfb, 0x9f, 0xf2, 0x07, 0xfb, 0x9f, 0xf3, 0x07, 0xfb, 0x9f, - 0xf2, 0x07, 0xfb, 0x9f, 0xf3, 0x07, 0xfc, 0xa0, 0xf5, 0x07, 0xfc, 0x9f, - 0xf3, 0x07, 0xfc, 0xa0, 0xf5, 0x07, 0xfc, 0x9f, 0xf3, 0x07, 0xfc, 0xa0, - 0xf5, 0x07, 0xfd, 0x9f, 0xf3, 0x07, 0xfd, 0xa0, 0xf5, 0x07, 0xfd, 0xa0, - 0xf5, 0x07, 0xfd, 0xa0, 0xf5, 0x07, 0xfe, 0xa1, 0xf7, 0x07, 0xfe, 0xa1, - 0xf7, 0x07, 0xfe, 0xa1, 0xf7, 0x07, 0xfe, 0xa1, 0xf7, 0x07, 0xfe, 0xa1, - 0xf7, 0x07, 0xff, 0xa1, 0xf7, 0x07, 0xff, 0xa1, 0xf7, 0x07, 0x03, 0x83, - 0x9b, 0x07, 0x0a, 0x83, 0x9b, 0x07, 0x0f, 0x83, 0x9b, 0x07, 0x14, 0x83, - 0x9b, 0x07, 0x17, 0x83, 0x9b, 0x07, 0x1b, 0x83, 0x9b, 0x07, 0x1e, 0x83, - 0x9b, 0x07, 0x20, 0x83, 0x9c, 0x07, 0x23, 0x83, 0x9b, 0x07, 0x25, 0x83, - 0x9c, 0x07, 0x27, 0x83, 0x9b, 0x07, 0x29, 0x83, 0x9c, 0x07, 0x2b, 0x83, - 0x9b, 0x07, 0x2d, 0x83, 0x9c, 0x07, 0x2f, 0x83, 0x9b, 0x07, 0x31, 0x83, - 0x9c, 0x07, 0x32, 0x83, 0x9b, 0x07, 0x34, 0x83, 0x9c, 0x07, 0x35, 0x83, - 0x9b, 0x07, 0x37, 0x83, 0x9c, 0x07, 0x38, 0x83, 0x9b, 0x07, 0x3a, 0x83, - 0x9c, 0x07, 0x3b, 0x83, 0x9b, 0x07, 0x3c, 0x83, 0x9c, 0x07, 0x3e, 0x83, - 0x9b, 0x07, 0x3f, 0x83, 0x9c, 0x07, 0x40, 0x83, 0x9b, 0x07, 0x42, 0x83, - 0x9c, 0x07, 0x43, 0x83, 0x9b, 0x07, 0x44, 0x83, 0x9c, 0x07, 0x45, 0x83, - 0x9b, 0x07, 0x46, 0x83, 0x9c, 0x07, 0x47, 0x83, 0x9b, 0x07, 0x48, 0x83, - 0x9c, 0x07, 0x49, 0x83, 0x9b, 0x07, 0x4a, 0x83, 0x9c, 0x07, 0x4b, 0x83, - 0x9b, 0x07, 0x4c, 0x83, 0x9c, 0x07, 0x4d, 0x83, 0x9b, 0x07, 0x4e, 0x83, - 0x9c, 0x07, 0x4f, 0x83, 0x9b, 0x07, 0x50, 0x83, 0x9c, 0x07, 0x51, 0x83, - 0x9b, 0x07, 0x52, 0x83, 0x9c, 0x07, 0x53, 0x83, 0x9b, 0x07, 0x54, 0x83, - 0x9c, 0x07, 0x55, 0x83, 0x9b, 0x07, 0x56, 0x83, 0x9c, 0x07, 0x57, 0x83, - 0x9b, 0x07, 0x58, 0x83, 0x9c, 0x07, 0x58, 0x83, 0x9b, 0x07, 0x59, 0x83, - 0x9c, 0x07, 0x5a, 0x83, 0x9b, 0x07, 0x5b, 0x83, 0x9c, 0x07, 0x5c, 0x83, - 0x9b, 0x07, 0x5d, 0x83, 0x9c, 0x07, 0x5d, 0x83, 0x9b, 0x07, 0x5e, 0x83, - 0x9c, 0x07, 0x5f, 0x83, 0x9b, 0x07, 0x60, 0x83, 0x9c, 0x07, 0x60, 0x83, - 0x9b, 0x07, 0x61, 0x83, 0x9c, 0x07, 0x62, 0x83, 0x9b, 0x07, 0x63, 0x83, - 0x9c, 0x07, 0x63, 0x83, 0x9b, 0x07, 0x64, 0x83, 0x9c, 0x07, 0x65, 0x83, - 0x9b, 0x07, 0x66, 0x83, 0x9c, 0x07, 0x66, 0x83, 0x9b, 0x07, 0x67, 0x83, - 0x9c, 0x07, 0x68, 0x83, 0x9b, 0x07, 0x68, 0x83, 0x9c, 0x07, 0x69, 0x83, - 0x9b, 0x07, 0x6a, 0x83, 0x9c, 0x07, 0x6a, 0x83, 0x9b, 0x07, 0x6b, 0x83, - 0x9c, 0x07, 0x6c, 0x83, 0x9b, 0x07, 0x6c, 0x83, 0x9c, 0x07, 0x6d, 0x83, - 0x9b, 0x07, 0x6e, 0x83, 0x9c, 0x07, 0x6e, 0x83, 0x9b, 0x07, 0x6f, 0x83, - 0x9c, 0x07, 0x70, 0x83, 0x9b, 0x07, 0x70, 0x83, 0x9c, 0x07, 0x71, 0x83, - 0x9b, 0x07, 0x72, 0x83, 0x9c, 0x07, 0x72, 0x83, 0x9b, 0x07, 0x73, 0x83, - 0x9c, 0x07, 0x73, 0x83, 0x9b, 0x07, 0x74, 0x83, 0x9c, 0x07, 0x75, 0x83, - 0x9b, 0x07, 0x75, 0x83, 0x9c, 0x07, 0x76, 0x83, 0x9b, 0x07, 0x76, 0x83, - 0x9c, 0x07, 0x77, 0x83, 0x9b, 0x07, 0x78, 0x83, 0x9c, 0x07, 0x78, 0x83, - 0x9b, 0x07, 0x79, 0x83, 0x9c, 0x07, 0x79, 0x83, 0x9b, 0x07, 0x7a, 0x83, - 0x9c, 0x07, 0x7a, 0x83, 0x9b, 0x07, 0x7b, 0x83, 0x9c, 0x07, 0x7c, 0x83, - 0x9b, 0x07, 0x7c, 0x83, 0x9c, 0x07, 0x7d, 0x83, 0x9b, 0x07, 0x7d, 0x83, - 0x9c, 0x07, 0x7e, 0x83, 0x9b, 0x07, 0x7e, 0x83, 0x9c, 0x07, 0x7f, 0x83, - 0x9b, 0x07, 0x7f, 0x83, 0x9c, 0x07, 0x80, 0x83, 0x9b, 0x07, 0x81, 0x83, - 0x9c, 0x07, 0x81, 0x83, 0x9b, 0x07, 0x82, 0x83, 0x9c, 0x07, 0x82, 0x83, - 0x9b, 0x07, 0x83, 0x83, 0x9c, 0x07, 0x83, 0x83, 0x9b, 0x07, 0x84, 0x83, - 0x9c, 0x07, 0x84, 0x83, 0x9b, 0x07, 0x85, 0x83, 0x9c, 0x07, 0x85, 0x83, - 0x9b, 0x07, 0x86, 0x83, 0x9c, 0x07, 0x86, 0x83, 0x9b, 0x07, 0x87, 0x83, - 0x9c, 0x07, 0x87, 0x83, 0x9b, 0x07, 0x88, 0x83, 0x9c, 0x07, 0x88, 0x83, - 0x9b, 0x07, 0x89, 0x83, 0x9c, 0x07, 0x89, 0x83, 0x9b, 0x07, 0x8a, 0x83, - 0x9c, 0x07, 0x8a, 0x83, 0x9b, 0x07, 0x8b, 0x83, 0x9c, 0x07, 0x8b, 0x83, - 0x9b, 0x07, 0x8c, 0x83, 0x9c, 0x07, 0x8c, 0x83, 0x9b, 0x07, 0x8d, 0x83, - 0x9c, 0x07, 0x8d, 0x83, 0x9b, 0x07, 0x8e, 0x83, 0x9c, 0x07, 0x8e, 0x83, - 0x9b, 0x07, 0x8e, 0x83, 0x9c, 0x07, 0x8f, 0x83, 0x9b, 0x07, 0x8f, 0x83, - 0x9c, 0x07, 0x90, 0x83, 0x9b, 0x07, 0x90, 0x83, 0x9c, 0x07, 0x91, 0x83, - 0x9b, 0x07, 0x91, 0x83, 0x9c, 0x07, 0x92, 0x83, 0x9b, 0x07, 0x92, 0x83, - 0x9c, 0x07, 0x93, 0x83, 0x9b, 0x07, 0x93, 0x83, 0x9c, 0x07, 0x94, 0x83, - 0x9b, 0x07, 0x94, 0x83, 0x9c, 0x07, 0x94, 0x83, 0x9b, 0x07, 0x95, 0x83, - 0x9c, 0x07, 0x95, 0x83, 0x9b, 0x07, 0x96, 0x83, 0x9c, 0x07, 0x96, 0x83, - 0x9b, 0x07, 0x97, 0x83, 0x9c, 0x07, 0x97, 0x83, 0x9b, 0x07, 0x98, 0x83, - 0x9c, 0x07, 0x98, 0x83, 0x9b, 0x07, 0x98, 0x83, 0x9c, 0x07, 0x99, 0x83, - 0x9b, 0x07, 0x99, 0x83, 0x9c, 0x07, 0x9a, 0x83, 0x9b, 0x07, 0x9a, 0x83, - 0x9c, 0x07, 0x9a, 0x83, 0x9b, 0x07, 0x9b, 0x83, 0x9c, 0x07, 0x9b, 0x83, - 0x9b, 0x07, 0x9c, 0x83, 0x9c, 0x07, 0x9c, 0x83, 0x9c, 0x07, 0x9d, 0x83, - 0x9d, 0x07, 0x9d, 0x83, 0x9c, 0x07, 0x9d, 0x83, 0x9d, 0x07, 0x9e, 0x83, - 0x9c, 0x07, 0x9e, 0x83, 0x9d, 0x07, 0x9f, 0x83, 0x9c, 0x07, 0x9f, 0x83, - 0x9d, 0x07, 0x9f, 0x83, 0x9c, 0x07, 0xa0, 0x83, 0x9d, 0x07, 0xa0, 0x83, - 0x9c, 0x07, 0xa1, 0x83, 0x9d, 0x07, 0xa1, 0x83, 0x9c, 0x07, 0xa1, 0x83, - 0x9d, 0x07, 0xa2, 0x83, 0x9c, 0x07, 0xa2, 0x83, 0x9d, 0x07, 0xa3, 0x83, - 0x9c, 0x07, 0xa3, 0x83, 0x9d, 0x07, 0xa3, 0x83, 0x9c, 0x07, 0xa4, 0x83, - 0x9d, 0x07, 0xa4, 0x83, 0x9c, 0x07, 0xa5, 0x83, 0x9d, 0x07, 0xa5, 0x83, - 0x9c, 0x07, 0xa5, 0x83, 0x9d, 0x07, 0xa6, 0x83, 0x9c, 0x07, 0xa6, 0x83, - 0x9d, 0x07, 0xa6, 0x84, 0xa0, 0x07, 0xa7, 0x84, 0xa1, 0x07, 0xa7, 0x84, - 0xa0, 0x07, 0xa8, 0x84, 0xa1, 0x07, 0xa8, 0x84, 0xa0, 0x07, 0xa8, 0x84, - 0xa1, 0x07, 0xa9, 0x84, 0xa0, 0x07, 0xa9, 0x84, 0xa1, 0x07, 0xaa, 0x84, - 0xa0, 0x07, 0xaa, 0x84, 0xa1, 0x07, 0xaa, 0x85, 0xa4, 0x07, 0xab, 0x84, - 0xa1, 0x07, 0xab, 0x85, 0xa4, 0x07, 0xab, 0x84, 0xa1, 0x07, 0xac, 0x85, - 0xa4, 0x07, 0xac, 0x84, 0xa1, 0x07, 0xac, 0x85, 0xa4, 0x07, 0xad, 0x85, - 0xa4, 0x07, 0xad, 0x85, 0xa4, 0x07, 0xae, 0x85, 0xa4, 0x07, 0xae, 0x85, - 0xa4, 0x07, 0xae, 0x86, 0xa8, 0x07, 0xaf, 0x85, 0xa4, 0x07, 0xaf, 0x86, - 0xa8, 0x07, 0xaf, 0x85, 0xa4, 0x07, 0xb0, 0x86, 0xa8, 0x07, 0xb0, 0x86, - 0xa7, 0x07, 0xb0, 0x86, 0xa8, 0x07, 0xb1, 0x86, 0xa7, 0x07, 0xb1, 0x86, - 0xa8, 0x07, 0xb2, 0x87, 0xab, 0x07, 0xb2, 0x87, 0xab, 0x07, 0xb2, 0x87, - 0xab, 0x07, 0xb3, 0x87, 0xab, 0x07, 0xb3, 0x87, 0xab, 0x07, 0xb3, 0x87, - 0xab, 0x07, 0xb4, 0x87, 0xab, 0x07, 0xb4, 0x87, 0xab, 0x07, 0xb4, 0x87, - 0xab, 0x07, 0xb5, 0x87, 0xab, 0x07, 0xb5, 0x88, 0xaf, 0x07, 0xb5, 0x87, - 0xab, 0x07, 0xb6, 0x88, 0xaf, 0x07, 0xb6, 0x87, 0xab, 0x07, 0xb6, 0x88, - 0xaf, 0x07, 0xb7, 0x88, 0xae, 0x07, 0xb7, 0x88, 0xaf, 0x07, 0xb7, 0x88, - 0xae, 0x07, 0xb8, 0x88, 0xaf, 0x07, 0xb8, 0x89, 0xb2, 0x07, 0xb8, 0x89, - 0xb2, 0x07, 0xb9, 0x89, 0xb2, 0x07, 0xb9, 0x89, 0xb2, 0x07, 0xb9, 0x89, - 0xb2, 0x07, 0xba, 0x89, 0xb2, 0x07, 0xba, 0x89, 0xb2, 0x07, 0xba, 0x89, - 0xb2, 0x07, 0xbb, 0x89, 0xb2, 0x07, 0xbb, 0x89, 0xb2, 0x07, 0xbb, 0x89, - 0xb2, 0x07, 0xbc, 0x89, 0xb2, 0x07, 0xbc, 0x8a, 0xb5, 0x07, 0xbc, 0x89, - 0xb2, 0x07, 0xbd, 0x8a, 0xb5, 0x07, 0xbd, 0x89, 0xb2, 0x07, 0xbd, 0x8a, - 0xb5, 0x07, 0xbe, 0x8a, 0xb5, 0x07, 0xbe, 0x8a, 0xb5, 0x07, 0xbe, 0x8a, - 0xb5, 0x07, 0xbf, 0x8a, 0xb5, 0x07, 0xbf, 0x8b, 0xb8, 0x07, 0xbf, 0x8a, - 0xb5, 0x07, 0xc0, 0x8b, 0xb8, 0x07, 0xc0, 0x8a, 0xb5, 0x07, 0xc0, 0x8b, - 0xb8, 0x07, 0xc1, 0x8b, 0xb8, 0x07, 0xc1, 0x8b, 0xb8, 0x07, 0xc1, 0x8b, - 0xb8, 0x07, 0xc1, 0x8b, 0xb8, 0x07, 0xc2, 0x8c, 0xbb, 0x07, 0xc2, 0x8c, - 0xbc, 0x07, 0xc2, 0x8c, 0xbb, 0x07, 0xc3, 0x8c, 0xbc, 0x07, 0xc3, 0x8c, - 0xbb, 0x07, 0xc3, 0x8c, 0xbc, 0x07, 0xc4, 0x8c, 0xbb, 0x07, 0xc4, 0x8c, - 0xbc, 0x07, 0xc4, 0x8c, 0xbb, 0x07, 0xc5, 0x8c, 0xbc, 0x07, 0xc5, 0x8d, - 0xbf, 0x07, 0xc5, 0x8c, 0xbc, 0x07, 0xc6, 0x8d, 0xbf, 0x07, 0xc6, 0x8c, - 0xbc, 0x07, 0xc6, 0x8d, 0xbf, 0x07, 0xc6, 0x8c, 0xbc, 0x07, 0xc7, 0x8d, - 0xbf, 0x07, 0xc7, 0x8d, 0xbe, 0x07, 0xc7, 0x8d, 0xbf, 0x07, 0xc8, 0x8e, - 0xc1, 0x07, 0xc8, 0x8d, 0xbf, 0x07, 0xc8, 0x8e, 0xc1, 0x07, 0xc9, 0x8d, - 0xbf, 0x07, 0xc9, 0x8e, 0xc1, 0x07, 0xc9, 0x8d, 0xbf, 0x07, 0xc9, 0x8e, - 0xc1, 0x07, 0xca, 0x8e, 0xc1, 0x07, 0xca, 0x8e, 0xc1, 0x07, 0xca, 0x8f, - 0xc4, 0x07, 0xcb, 0x8f, 0xc5, 0x07, 0xcb, 0x8f, 0xc4, 0x07, 0xcb, 0x8f, - 0xc5, 0x07, 0xcc, 0x8f, 0xc4, 0x07, 0xcc, 0x8f, 0xc5, 0x07, 0xcc, 0x8f, - 0xc4, 0x07, 0xcc, 0x8f, 0xc5, 0x07, 0xcd, 0x8f, 0xc4, 0x07, 0xcd, 0x8f, - 0xc5, 0x07, 0xcd, 0x8f, 0xc4, 0x07, 0xce, 0x8f, 0xc5, 0x07, 0xce, 0x90, - 0xc7, 0x07, 0xce, 0x8f, 0xc5, 0x07, 0xce, 0x90, 0xc7, 0x07, 0xcf, 0x8f, - 0xc5, 0x07, 0xcf, 0x90, 0xc7, 0x07, 0xcf, 0x90, 0xc7, 0x07, 0xd0, 0x90, - 0xc7, 0x07, 0xd0, 0x90, 0xc7, 0x07, 0xd0, 0x90, 0xc7, 0x07, 0xd0, 0x91, - 0xca, 0x07, 0xd1, 0x90, 0xc7, 0x07, 0xd1, 0x91, 0xca, 0x07, 0xd1, 0x90, - 0xc7, 0x07, 0xd2, 0x91, 0xca, 0x07, 0xd2, 0x90, 0xc7, 0x07, 0xd2, 0x91, - 0xca, 0x07, 0xd2, 0x91, 0xca, 0x07, 0xd3, 0x91, 0xca, 0x07, 0xd3, 0x92, - 0xcd, 0x07, 0xd3, 0x92, 0xcd, 0x07, 0xd4, 0x92, 0xcd, 0x07, 0xd4, 0x92, - 0xcd, 0x07, 0xd4, 0x92, 0xcd, 0x07, 0xd4, 0x92, 0xcd, 0x07, 0xd5, 0x92, - 0xcd, 0x07, 0xd5, 0x92, 0xcd, 0x07, 0xd5, 0x92, 0xcd, 0x07, 0xd6, 0x92, - 0xcd, 0x07, 0xd6, 0x93, 0xd0, 0x07, 0xd6, 0x92, 0xcd, 0x07, 0xd6, 0x93, - 0xd0, 0x07, 0xd7, 0x92, 0xcd, 0x07, 0xd7, 0x93, 0xd0, 0x07, 0xd7, 0x92, - 0xcd, 0x07, 0xd7, 0x93, 0xd0, 0x07, 0xd8, 0x93, 0xcf, 0x07, 0xd8, 0x93, - 0xd0, 0x07, 0xd8, 0x93, 0xcf, 0x07, 0xd9, 0x93, 0xd0, 0x07, 0xd9, 0x94, - 0xd2, 0x07, 0xd9, 0x94, 0xd2, 0x07, 0xd9, 0x94, 0xd2, 0x07, 0xda, 0x94, - 0xd2, 0x07, 0xda, 0x94, 0xd2, 0x07, 0xda, 0x94, 0xd2, 0x07, 0xda, 0x94, - 0xd2, 0x07, 0xdb, 0x94, 0xd2, 0x07, 0xdb, 0x94, 0xd2, 0x07, 0xdb, 0x94, - 0xd2, 0x07, 0xdb, 0x94, 0xd5, 0x07, 0xdc, 0x94, 0xd2, 0x07, 0xdc, 0x94, - 0xd5, 0x07, 0xdc, 0x94, 0xd2, 0x07, 0xdd, 0x94, 0xd5, 0x07, 0xdd, 0x94, - 0xd2, 0x07, 0xdd, 0x94, 0xd5, 0x07, 0xdd, 0x94, 0xd5, 0x07, 0xde, 0x94, - 0xd5, 0x07, 0xde, 0x95, 0xd7, 0x07, 0xde, 0x94, 0xd5, 0x07, 0xde, 0x95, - 0xd7, 0x07, 0xdf, 0x94, 0xd5, 0x07, 0xdf, 0x95, 0xd7, 0x07, 0xdf, 0x94, - 0xd5, 0x07, 0xdf, 0x95, 0xd7, 0x07, 0xe0, 0x95, 0xd7, 0x07, 0xe0, 0x95, - 0xd7, 0x07, 0xe0, 0x96, 0xda, 0x07, 0xe1, 0x96, 0xda, 0x07, 0xe1, 0x96, - 0xda, 0x07, 0xe1, 0x96, 0xda, 0x07, 0xe1, 0x96, 0xda, 0x07, 0xe2, 0x96, - 0xda, 0x07, 0xe2, 0x96, 0xda, 0x07, 0xe2, 0x96, 0xda, 0x07, 0xe2, 0x96, - 0xda, 0x07, 0xe3, 0x96, 0xda, 0x07, 0xe3, 0x97, 0xdd, 0x07, 0xe3, 0x96, - 0xda, 0x07, 0xe3, 0x97, 0xdd, 0x07, 0xe4, 0x96, 0xda, 0x07, 0xe4, 0x97, - 0xdd, 0x07, 0xe4, 0x96, 0xda, 0x07, 0xe4, 0x97, 0xdd, 0x07, 0xe5, 0x97, - 0xdc, 0x07, 0xe5, 0x97, 0xdd, 0x07, 0xe5, 0x98, 0xdf, 0x07, 0xe5, 0x97, - 0xdd, 0x07, 0xe6, 0x98, 0xdf, 0x07, 0xe6, 0x97, 0xdd, 0x07, 0xe6, 0x98, - 0xdf, 0x07, 0xe6, 0x97, 0xdd, 0x07, 0xe7, 0x98, 0xdf, 0x07, 0xe7, 0x97, - 0xdd, 0x07, 0xe7, 0x98, 0xdf, 0x07, 0xe7, 0x98, 0xdf, 0x07, 0xe8, 0x98, - 0xdf, 0x07, 0xe8, 0x99, 0xe1, 0x07, 0xe8, 0x99, 0xe2, 0x07, 0xe8, 0x99, - 0xe1, 0x07, 0xe9, 0x99, 0xe2, 0x07, 0xe9, 0x99, 0xe1, 0x07, 0xe9, 0x99, - 0xe2, 0x07, 0xe9, 0x99, 0xe1, 0x07, 0xea, 0x99, 0xe2, 0x07, 0xea, 0x99, - 0xe1, 0x07, 0xea, 0x99, 0xe2, 0x07, 0xea, 0x9a, 0xe4, 0x07, 0xeb, 0x99, - 0xe2, 0x07, 0xeb, 0x9a, 0xe4, 0x07, 0xeb, 0x99, 0xe2, 0x07, 0xeb, 0x9a, - 0xe4, 0x07, 0xec, 0x99, 0xe2, 0x07, 0xec, 0x9a, 0xe4, 0x07, 0xec, 0x9a, - 0xe4, 0x07, 0xec, 0x9a, 0xe4, 0x07, 0xec, 0x9a, 0xe6, 0x07, 0xed, 0x9a, - 0xe4, 0x07, 0xed, 0x9a, 0xe6, 0x07, 0xed, 0x9a, 0xe4, 0x07, 0xed, 0x9a, - 0xe6, 0x07, 0xee, 0x9a, 0xe4, 0x07, 0xee, 0x9a, 0xe6, 0x07, 0xee, 0x9a, - 0xe6, 0x07, 0xee, 0x9a, 0xe6, 0x07, 0xef, 0x9b, 0xe8, 0x07, 0xef, 0x9b, - 0xe9, 0x07, 0xef, 0x9b, 0xe8, 0x07, 0xef, 0x9b, 0xe9, 0x07, 0xf0, 0x9b, - 0xe8, 0x07, 0xf0, 0x9b, 0xe9, 0x07, 0xf0, 0x9b, 0xe8, 0x07, 0xf0, 0x9b, - 0xe9, 0x07, 0xf1, 0x9b, 0xe8, 0x07, 0xf1, 0x9b, 0xe9, 0x07, 0xf1, 0x9b, - 0xe8, 0x07, 0xf1, 0x9b, 0xe9, 0x07, 0xf2, 0x9c, 0xeb, 0x07, 0xf2, 0x9b, - 0xe9, 0x07, 0xf2, 0x9c, 0xeb, 0x07, 0xf2, 0x9b, 0xe9, 0x07, 0xf2, 0x9c, - 0xeb, 0x07, 0xf3, 0x9b, 0xe9, 0x07, 0xf3, 0x9c, 0xeb, 0x07, 0xf3, 0x9c, - 0xeb, 0x07, 0xf3, 0x9c, 0xeb, 0x07, 0xf4, 0x9d, 0xed, 0x07, 0xf4, 0x9d, - 0xed, 0x07, 0xf4, 0x9d, 0xed, 0x07, 0xf4, 0x9d, 0xed, 0x07, 0xf5, 0x9d, - 0xed, 0x07, 0xf5, 0x9d, 0xed, 0x07, 0xf5, 0x9d, 0xed, 0x07, 0xf5, 0x9d, - 0xed, 0x07, 0xf5, 0x9d, 0xed, 0x07, 0xf6, 0x9d, 0xed, 0x07, 0xf6, 0x9e, - 0xef, 0x07, 0xf6, 0x9d, 0xed, 0x07, 0xf6, 0x9e, 0xef, 0x07, 0xf7, 0x9d, - 0xed, 0x07, 0xf7, 0x9e, 0xef, 0x07, 0xf7, 0x9d, 0xed, 0x07, 0xf7, 0x9e, - 0xef, 0x07, 0xf8, 0x9e, 0xef, 0x07, 0xf8, 0x9e, 0xef, 0x07, 0xf8, 0x9f, - 0xf2, 0x07, 0xf8, 0x9e, 0xef, 0x07, 0xf8, 0x9f, 0xf2, 0x07, 0xf9, 0x9e, - 0xef, 0x07, 0xf9, 0x9f, 0xf2, 0x07, 0xf9, 0x9e, 0xef, 0x07, 0xf9, 0x9f, - 0xf2, 0x07, 0xfa, 0x9e, 0xef, 0x07, 0xfa, 0x9f, 0xf2, 0x07, 0xfa, 0x9f, - 0xf4, 0x07, 0xfa, 0x9f, 0xf4, 0x07, 0xfa, 0x9f, 0xf4, 0x07, 0xfb, 0x9f, - 0xf4, 0x07, 0xfb, 0x9f, 0xf4, 0x07, 0xfb, 0x9f, 0xf4, 0x07, 0xfb, 0x9f, - 0xf4, 0x07, 0xfc, 0x9f, 0xf4, 0x07, 0xfc, 0x9f, 0xf4, 0x07, 0xfc, 0x9f, - 0xf4, 0x07, 0xfc, 0xa0, 0xf6, 0x07, 0xfc, 0x9f, 0xf4, 0x07, 0xfd, 0xa0, - 0xf6, 0x07, 0xfd, 0x9f, 0xf4, 0x07, 0xfd, 0xa0, 0xf6, 0x07, 0xfd, 0x9f, - 0xf4, 0x07, 0xfe, 0xa0, 0xf6, 0x07, 0xfe, 0xa0, 0xf6, 0x07, 0xfe, 0xa0, - 0xf6, 0x07, 0xfe, 0xa0, 0xf6, 0x07, 0xfe, 0xa0, 0xf6, 0x07, 0xff, 0xa0, - 0xf6, 0x07, 0xff, 0xa0, 0xf6, 0x07, 0x03, 0x84, 0x9b, 0x08, 0x0a, 0x84, - 0x9b, 0x08, 0x0f, 0x84, 0x9b, 0x08, 0x14, 0x84, 0x9b, 0x08, 0x17, 0x84, - 0x9b, 0x08, 0x1b, 0x84, 0x9b, 0x08, 0x1e, 0x84, 0x9b, 0x08, 0x20, 0x84, - 0x9c, 0x08, 0x23, 0x84, 0x9b, 0x08, 0x25, 0x84, 0x9c, 0x08, 0x27, 0x84, - 0x9b, 0x08, 0x29, 0x84, 0x9c, 0x08, 0x2b, 0x84, 0x9b, 0x08, 0x2d, 0x84, - 0x9c, 0x08, 0x2f, 0x84, 0x9b, 0x08, 0x31, 0x84, 0x9c, 0x08, 0x32, 0x84, - 0x9b, 0x08, 0x34, 0x84, 0x9c, 0x08, 0x35, 0x84, 0x9b, 0x08, 0x37, 0x84, - 0x9c, 0x08, 0x38, 0x84, 0x9b, 0x08, 0x3a, 0x84, 0x9c, 0x08, 0x3b, 0x84, - 0x9b, 0x08, 0x3c, 0x84, 0x9c, 0x08, 0x3e, 0x84, 0x9b, 0x08, 0x3f, 0x84, - 0x9c, 0x08, 0x40, 0x84, 0x9b, 0x08, 0x42, 0x84, 0x9c, 0x08, 0x43, 0x84, - 0x9b, 0x08, 0x44, 0x84, 0x9c, 0x08, 0x45, 0x84, 0x9b, 0x08, 0x46, 0x84, - 0x9c, 0x08, 0x47, 0x84, 0x9b, 0x08, 0x48, 0x84, 0x9c, 0x08, 0x49, 0x84, - 0x9b, 0x08, 0x4a, 0x84, 0x9c, 0x08, 0x4b, 0x84, 0x9b, 0x08, 0x4c, 0x84, - 0x9c, 0x08, 0x4d, 0x84, 0x9b, 0x08, 0x4e, 0x84, 0x9c, 0x08, 0x4f, 0x84, - 0x9b, 0x08, 0x50, 0x84, 0x9c, 0x08, 0x51, 0x84, 0x9b, 0x08, 0x52, 0x84, - 0x9c, 0x08, 0x53, 0x84, 0x9b, 0x08, 0x54, 0x84, 0x9c, 0x08, 0x55, 0x84, - 0x9b, 0x08, 0x56, 0x84, 0x9c, 0x08, 0x57, 0x84, 0x9b, 0x08, 0x58, 0x84, - 0x9c, 0x08, 0x58, 0x84, 0x9b, 0x08, 0x59, 0x84, 0x9c, 0x08, 0x5a, 0x84, - 0x9b, 0x08, 0x5b, 0x84, 0x9c, 0x08, 0x5c, 0x84, 0x9b, 0x08, 0x5d, 0x84, - 0x9c, 0x08, 0x5d, 0x84, 0x9b, 0x08, 0x5e, 0x84, 0x9c, 0x08, 0x5f, 0x84, - 0x9b, 0x08, 0x60, 0x84, 0x9c, 0x08, 0x60, 0x84, 0x9b, 0x08, 0x61, 0x84, - 0x9c, 0x08, 0x62, 0x84, 0x9b, 0x08, 0x63, 0x84, 0x9c, 0x08, 0x63, 0x84, - 0x9b, 0x08, 0x64, 0x84, 0x9c, 0x08, 0x65, 0x84, 0x9b, 0x08, 0x66, 0x84, - 0x9c, 0x08, 0x66, 0x84, 0x9b, 0x08, 0x67, 0x84, 0x9c, 0x08, 0x68, 0x84, - 0x9b, 0x08, 0x68, 0x84, 0x9c, 0x08, 0x69, 0x84, 0x9b, 0x08, 0x6a, 0x84, - 0x9c, 0x08, 0x6a, 0x84, 0x9b, 0x08, 0x6b, 0x84, 0x9c, 0x08, 0x6c, 0x84, - 0x9b, 0x08, 0x6c, 0x84, 0x9c, 0x08, 0x6d, 0x84, 0x9b, 0x08, 0x6e, 0x84, - 0x9c, 0x08, 0x6e, 0x84, 0x9b, 0x08, 0x6f, 0x84, 0x9c, 0x08, 0x70, 0x84, - 0x9b, 0x08, 0x70, 0x84, 0x9c, 0x08, 0x71, 0x84, 0x9b, 0x08, 0x72, 0x84, - 0x9c, 0x08, 0x72, 0x84, 0x9b, 0x08, 0x73, 0x84, 0x9c, 0x08, 0x73, 0x84, - 0x9b, 0x08, 0x74, 0x84, 0x9c, 0x08, 0x75, 0x84, 0x9b, 0x08, 0x75, 0x84, - 0x9c, 0x08, 0x76, 0x84, 0x9b, 0x08, 0x76, 0x84, 0x9c, 0x08, 0x77, 0x84, - 0x9b, 0x08, 0x78, 0x84, 0x9c, 0x08, 0x78, 0x84, 0x9b, 0x08, 0x79, 0x84, - 0x9c, 0x08, 0x79, 0x84, 0x9b, 0x08, 0x7a, 0x84, 0x9c, 0x08, 0x7a, 0x84, - 0x9b, 0x08, 0x7b, 0x84, 0x9c, 0x08, 0x7c, 0x84, 0x9b, 0x08, 0x7c, 0x84, - 0x9c, 0x08, 0x7d, 0x84, 0x9b, 0x08, 0x7d, 0x84, 0x9c, 0x08, 0x7e, 0x84, - 0x9b, 0x08, 0x7e, 0x84, 0x9c, 0x08, 0x7f, 0x84, 0x9b, 0x08, 0x7f, 0x84, - 0x9c, 0x08, 0x80, 0x84, 0x9b, 0x08, 0x81, 0x84, 0x9c, 0x08, 0x81, 0x84, - 0x9b, 0x08, 0x82, 0x84, 0x9c, 0x08, 0x82, 0x84, 0x9b, 0x08, 0x83, 0x84, - 0x9c, 0x08, 0x83, 0x84, 0x9b, 0x08, 0x84, 0x84, 0x9c, 0x08, 0x84, 0x84, - 0x9b, 0x08, 0x85, 0x84, 0x9c, 0x08, 0x85, 0x84, 0x9b, 0x08, 0x86, 0x84, - 0x9c, 0x08, 0x86, 0x84, 0x9b, 0x08, 0x87, 0x84, 0x9c, 0x08, 0x87, 0x84, - 0x9b, 0x08, 0x88, 0x84, 0x9c, 0x08, 0x88, 0x84, 0x9b, 0x08, 0x89, 0x84, - 0x9c, 0x08, 0x89, 0x84, 0x9b, 0x08, 0x8a, 0x84, 0x9c, 0x08, 0x8a, 0x84, - 0x9b, 0x08, 0x8b, 0x84, 0x9c, 0x08, 0x8b, 0x84, 0x9b, 0x08, 0x8c, 0x84, - 0x9c, 0x08, 0x8c, 0x84, 0x9b, 0x08, 0x8d, 0x84, 0x9c, 0x08, 0x8d, 0x84, - 0x9b, 0x08, 0x8e, 0x84, 0x9c, 0x08, 0x8e, 0x84, 0x9b, 0x08, 0x8e, 0x84, - 0x9c, 0x08, 0x8f, 0x84, 0x9b, 0x08, 0x8f, 0x84, 0x9c, 0x08, 0x90, 0x84, - 0x9b, 0x08, 0x90, 0x84, 0x9c, 0x08, 0x91, 0x84, 0x9b, 0x08, 0x91, 0x84, - 0x9c, 0x08, 0x92, 0x84, 0x9b, 0x08, 0x92, 0x84, 0x9c, 0x08, 0x93, 0x84, - 0x9b, 0x08, 0x93, 0x84, 0x9c, 0x08, 0x94, 0x84, 0x9b, 0x08, 0x94, 0x84, - 0x9c, 0x08, 0x94, 0x84, 0x9b, 0x08, 0x95, 0x84, 0x9c, 0x08, 0x95, 0x84, - 0x9b, 0x08, 0x96, 0x84, 0x9c, 0x08, 0x96, 0x84, 0x9b, 0x08, 0x97, 0x84, - 0x9c, 0x08, 0x97, 0x84, 0x9b, 0x08, 0x98, 0x84, 0x9c, 0x08, 0x98, 0x84, - 0x9b, 0x08, 0x98, 0x84, 0x9c, 0x08, 0x99, 0x84, 0x9b, 0x08, 0x99, 0x84, - 0x9c, 0x08, 0x9a, 0x84, 0x9b, 0x08, 0x9a, 0x84, 0x9c, 0x08, 0x9a, 0x84, - 0x9b, 0x08, 0x9b, 0x84, 0x9c, 0x08, 0x9b, 0x84, 0x9b, 0x08, 0x9c, 0x84, - 0x9c, 0x08, 0x9c, 0x84, 0x9c, 0x08, 0x9d, 0x84, 0x9d, 0x08, 0x9d, 0x84, - 0x9d, 0x08, 0x9d, 0x84, 0x9d, 0x08, 0x9e, 0x84, 0x9e, 0x08, 0x9e, 0x84, - 0x9e, 0x08, 0x9f, 0x84, 0x9f, 0x08, 0x9f, 0x84, 0x9e, 0x08, 0x9f, 0x84, - 0x9f, 0x08, 0xa0, 0x84, 0x9e, 0x08, 0xa0, 0x84, 0x9f, 0x08, 0xa1, 0x84, - 0x9e, 0x08, 0xa1, 0x84, 0x9f, 0x08, 0xa1, 0x84, 0x9e, 0x08, 0xa2, 0x84, - 0x9f, 0x08, 0xa2, 0x84, 0x9e, 0x08, 0xa3, 0x84, 0x9f, 0x08, 0xa3, 0x84, - 0x9e, 0x08, 0xa3, 0x84, 0x9f, 0x08, 0xa4, 0x84, 0x9e, 0x08, 0xa4, 0x84, - 0x9f, 0x08, 0xa5, 0x84, 0x9e, 0x08, 0xa5, 0x84, 0x9f, 0x08, 0xa5, 0x84, - 0x9e, 0x08, 0xa6, 0x84, 0x9f, 0x08, 0xa6, 0x84, 0x9e, 0x08, 0xa6, 0x84, - 0x9f, 0x08, 0xa7, 0x84, 0x9e, 0x08, 0xa7, 0x84, 0x9f, 0x08, 0xa8, 0x84, - 0x9e, 0x08, 0xa8, 0x84, 0x9f, 0x08, 0xa8, 0x85, 0xa2, 0x08, 0xa9, 0x84, - 0x9f, 0x08, 0xa9, 0x85, 0xa2, 0x08, 0xaa, 0x84, 0x9f, 0x08, 0xaa, 0x85, - 0xa2, 0x08, 0xaa, 0x85, 0xa2, 0x08, 0xab, 0x85, 0xa2, 0x08, 0xab, 0x85, - 0xa2, 0x08, 0xab, 0x85, 0xa2, 0x08, 0xac, 0x86, 0xa6, 0x08, 0xac, 0x86, - 0xa6, 0x08, 0xac, 0x86, 0xa6, 0x08, 0xad, 0x86, 0xa6, 0x08, 0xad, 0x86, - 0xa6, 0x08, 0xae, 0x86, 0xa6, 0x08, 0xae, 0x86, 0xa6, 0x08, 0xae, 0x86, - 0xa6, 0x08, 0xaf, 0x86, 0xa6, 0x08, 0xaf, 0x86, 0xa6, 0x08, 0xaf, 0x86, - 0xa6, 0x08, 0xb0, 0x86, 0xa6, 0x08, 0xb0, 0x87, 0xaa, 0x08, 0xb0, 0x86, - 0xa6, 0x08, 0xb1, 0x87, 0xaa, 0x08, 0xb1, 0x86, 0xa6, 0x08, 0xb2, 0x87, - 0xaa, 0x08, 0xb2, 0x87, 0xa9, 0x08, 0xb2, 0x87, 0xaa, 0x08, 0xb3, 0x87, - 0xa9, 0x08, 0xb3, 0x87, 0xaa, 0x08, 0xb3, 0x88, 0xad, 0x08, 0xb4, 0x88, - 0xad, 0x08, 0xb4, 0x88, 0xad, 0x08, 0xb4, 0x88, 0xad, 0x08, 0xb5, 0x88, - 0xad, 0x08, 0xb5, 0x88, 0xad, 0x08, 0xb5, 0x88, 0xad, 0x08, 0xb6, 0x88, - 0xad, 0x08, 0xb6, 0x88, 0xad, 0x08, 0xb6, 0x88, 0xad, 0x08, 0xb7, 0x89, - 0xb0, 0x08, 0xb7, 0x88, 0xad, 0x08, 0xb7, 0x89, 0xb0, 0x08, 0xb8, 0x88, - 0xad, 0x08, 0xb8, 0x89, 0xb0, 0x08, 0xb8, 0x89, 0xb2, 0x08, 0xb9, 0x89, - 0xb0, 0x08, 0xb9, 0x89, 0xb2, 0x08, 0xb9, 0x89, 0xb0, 0x08, 0xba, 0x89, - 0xb2, 0x08, 0xba, 0x89, 0xb0, 0x08, 0xba, 0x89, 0xb2, 0x08, 0xbb, 0x89, - 0xb0, 0x08, 0xbb, 0x89, 0xb2, 0x08, 0xbb, 0x89, 0xb2, 0x08, 0xbc, 0x89, - 0xb2, 0x08, 0xbc, 0x89, 0xb2, 0x08, 0xbc, 0x89, 0xb2, 0x08, 0xbd, 0x8a, - 0xb3, 0x08, 0xbd, 0x8a, 0xb4, 0x08, 0xbd, 0x8b, 0xb7, 0x08, 0xbe, 0x8b, - 0xb7, 0x08, 0xbe, 0x8b, 0xb7, 0x08, 0xbe, 0x8b, 0xb7, 0x08, 0xbf, 0x8b, - 0xb7, 0x08, 0xbf, 0x8b, 0xb7, 0x08, 0xbf, 0x8b, 0xb7, 0x08, 0xc0, 0x8b, - 0xb7, 0x08, 0xc0, 0x8b, 0xb7, 0x08, 0xc0, 0x8b, 0xb7, 0x08, 0xc1, 0x8c, - 0xba, 0x08, 0xc1, 0x8b, 0xb7, 0x08, 0xc1, 0x8c, 0xba, 0x08, 0xc1, 0x8b, - 0xb7, 0x08, 0xc2, 0x8c, 0xba, 0x08, 0xc2, 0x8c, 0xba, 0x08, 0xc2, 0x8c, - 0xba, 0x08, 0xc3, 0x8c, 0xba, 0x08, 0xc3, 0x8c, 0xba, 0x08, 0xc3, 0x8d, - 0xbd, 0x08, 0xc4, 0x8c, 0xba, 0x08, 0xc4, 0x8d, 0xbd, 0x08, 0xc4, 0x8c, - 0xba, 0x08, 0xc5, 0x8d, 0xbd, 0x08, 0xc5, 0x8d, 0xbd, 0x08, 0xc5, 0x8d, - 0xbd, 0x08, 0xc6, 0x8d, 0xbd, 0x08, 0xc6, 0x8d, 0xbd, 0x08, 0xc6, 0x8e, - 0xc0, 0x08, 0xc6, 0x8e, 0xc0, 0x08, 0xc7, 0x8e, 0xc0, 0x08, 0xc7, 0x8e, - 0xc0, 0x08, 0xc7, 0x8e, 0xc0, 0x08, 0xc8, 0x8e, 0xc0, 0x08, 0xc8, 0x8e, - 0xc0, 0x08, 0xc8, 0x8e, 0xc0, 0x08, 0xc9, 0x8e, 0xc0, 0x08, 0xc9, 0x8e, - 0xc0, 0x08, 0xc9, 0x8e, 0xc3, 0x08, 0xc9, 0x8e, 0xc0, 0x08, 0xca, 0x8e, - 0xc3, 0x08, 0xca, 0x8e, 0xc0, 0x08, 0xca, 0x8e, 0xc3, 0x08, 0xcb, 0x8e, - 0xc0, 0x08, 0xcb, 0x8e, 0xc3, 0x08, 0xcb, 0x8e, 0xc3, 0x08, 0xcc, 0x8e, - 0xc3, 0x08, 0xcc, 0x8f, 0xc6, 0x08, 0xcc, 0x8e, 0xc3, 0x08, 0xcc, 0x8f, - 0xc6, 0x08, 0xcd, 0x8e, 0xc3, 0x08, 0xcd, 0x8f, 0xc6, 0x08, 0xcd, 0x8e, - 0xc3, 0x08, 0xce, 0x8f, 0xc6, 0x08, 0xce, 0x8f, 0xc6, 0x08, 0xce, 0x8f, - 0xc6, 0x08, 0xce, 0x8f, 0xc6, 0x08, 0xcf, 0x8f, 0xc6, 0x08, 0xcf, 0x90, - 0xc9, 0x08, 0xcf, 0x90, 0xc9, 0x08, 0xd0, 0x90, 0xc9, 0x08, 0xd0, 0x90, - 0xc9, 0x08, 0xd0, 0x90, 0xc9, 0x08, 0xd0, 0x90, 0xc9, 0x08, 0xd1, 0x90, - 0xc9, 0x08, 0xd1, 0x90, 0xc9, 0x08, 0xd1, 0x90, 0xc9, 0x08, 0xd2, 0x90, - 0xc9, 0x08, 0xd2, 0x91, 0xcc, 0x08, 0xd2, 0x90, 0xc9, 0x08, 0xd2, 0x91, - 0xcc, 0x08, 0xd3, 0x90, 0xc9, 0x08, 0xd3, 0x91, 0xcc, 0x08, 0xd3, 0x90, - 0xc9, 0x08, 0xd4, 0x91, 0xcc, 0x08, 0xd4, 0x91, 0xcb, 0x08, 0xd4, 0x91, - 0xcc, 0x08, 0xd4, 0x92, 0xce, 0x08, 0xd5, 0x92, 0xce, 0x08, 0xd5, 0x92, - 0xce, 0x08, 0xd5, 0x92, 0xce, 0x08, 0xd6, 0x92, 0xce, 0x08, 0xd6, 0x92, - 0xce, 0x08, 0xd6, 0x92, 0xce, 0x08, 0xd6, 0x92, 0xce, 0x08, 0xd7, 0x92, - 0xce, 0x08, 0xd7, 0x92, 0xce, 0x08, 0xd7, 0x93, 0xd1, 0x08, 0xd7, 0x92, - 0xce, 0x08, 0xd8, 0x93, 0xd1, 0x08, 0xd8, 0x92, 0xce, 0x08, 0xd8, 0x93, - 0xd1, 0x08, 0xd9, 0x92, 0xce, 0x08, 0xd9, 0x93, 0xd1, 0x08, 0xd9, 0x93, - 0xd1, 0x08, 0xd9, 0x93, 0xd1, 0x08, 0xda, 0x93, 0xd1, 0x08, 0xda, 0x93, - 0xd1, 0x08, 0xda, 0x94, 0xd4, 0x08, 0xda, 0x93, 0xd1, 0x08, 0xdb, 0x94, - 0xd4, 0x08, 0xdb, 0x93, 0xd1, 0x08, 0xdb, 0x94, 0xd4, 0x08, 0xdb, 0x94, - 0xd3, 0x08, 0xdc, 0x94, 0xd4, 0x08, 0xdc, 0x94, 0xd3, 0x08, 0xdc, 0x94, - 0xd4, 0x08, 0xdd, 0x95, 0xd6, 0x08, 0xdd, 0x95, 0xd6, 0x08, 0xdd, 0x95, - 0xd6, 0x08, 0xdd, 0x95, 0xd6, 0x08, 0xde, 0x95, 0xd6, 0x08, 0xde, 0x95, - 0xd6, 0x08, 0xde, 0x95, 0xd6, 0x08, 0xde, 0x95, 0xd6, 0x08, 0xdf, 0x95, - 0xd6, 0x08, 0xdf, 0x95, 0xd6, 0x08, 0xdf, 0x96, 0xd9, 0x08, 0xdf, 0x95, - 0xd6, 0x08, 0xe0, 0x96, 0xd9, 0x08, 0xe0, 0x95, 0xd6, 0x08, 0xe0, 0x96, - 0xd9, 0x08, 0xe1, 0x95, 0xd6, 0x08, 0xe1, 0x96, 0xd9, 0x08, 0xe1, 0x96, - 0xd9, 0x08, 0xe1, 0x96, 0xd9, 0x08, 0xe2, 0x97, 0xdb, 0x08, 0xe2, 0x96, - 0xd9, 0x08, 0xe2, 0x97, 0xdb, 0x08, 0xe2, 0x96, 0xd9, 0x08, 0xe3, 0x97, - 0xdb, 0x08, 0xe3, 0x96, 0xd9, 0x08, 0xe3, 0x97, 0xdb, 0x08, 0xe3, 0x97, - 0xdb, 0x08, 0xe4, 0x97, 0xdb, 0x08, 0xe4, 0x98, 0xde, 0x08, 0xe4, 0x98, - 0xde, 0x08, 0xe4, 0x98, 0xde, 0x08, 0xe5, 0x98, 0xde, 0x08, 0xe5, 0x98, - 0xde, 0x08, 0xe5, 0x98, 0xde, 0x08, 0xe5, 0x98, 0xde, 0x08, 0xe6, 0x98, - 0xde, 0x08, 0xe6, 0x98, 0xde, 0x08, 0xe6, 0x98, 0xde, 0x08, 0xe6, 0x98, - 0xe0, 0x08, 0xe7, 0x98, 0xde, 0x08, 0xe7, 0x98, 0xe0, 0x08, 0xe7, 0x98, - 0xde, 0x08, 0xe7, 0x98, 0xe0, 0x08, 0xe8, 0x98, 0xde, 0x08, 0xe8, 0x98, - 0xe0, 0x08, 0xe8, 0x98, 0xdf, 0x08, 0xe8, 0x98, 0xe0, 0x08, 0xe9, 0x98, - 0xdf, 0x08, 0xe9, 0x98, 0xe0, 0x08, 0xe9, 0x99, 0xe3, 0x08, 0xe9, 0x98, - 0xe0, 0x08, 0xea, 0x99, 0xe3, 0x08, 0xea, 0x98, 0xe0, 0x08, 0xea, 0x99, - 0xe3, 0x08, 0xea, 0x98, 0xe0, 0x08, 0xeb, 0x99, 0xe3, 0x08, 0xeb, 0x99, - 0xe2, 0x08, 0xeb, 0x99, 0xe3, 0x08, 0xeb, 0x9a, 0xe5, 0x08, 0xec, 0x9a, - 0xe5, 0x08, 0xec, 0x9a, 0xe5, 0x08, 0xec, 0x9a, 0xe5, 0x08, 0xec, 0x9a, - 0xe5, 0x08, 0xec, 0x9a, 0xe5, 0x08, 0xed, 0x9a, 0xe5, 0x08, 0xed, 0x9a, - 0xe5, 0x08, 0xed, 0x9a, 0xe5, 0x08, 0xed, 0x9a, 0xe5, 0x08, 0xee, 0x9b, - 0xe7, 0x08, 0xee, 0x9a, 0xe5, 0x08, 0xee, 0x9b, 0xe7, 0x08, 0xee, 0x9a, - 0xe5, 0x08, 0xef, 0x9b, 0xe7, 0x08, 0xef, 0x9a, 0xe5, 0x08, 0xef, 0x9b, - 0xe7, 0x08, 0xef, 0x9b, 0xe7, 0x08, 0xf0, 0x9b, 0xe7, 0x08, 0xf0, 0x9c, - 0xea, 0x08, 0xf0, 0x9c, 0xea, 0x08, 0xf0, 0x9c, 0xea, 0x08, 0xf1, 0x9c, - 0xea, 0x08, 0xf1, 0x9c, 0xea, 0x08, 0xf1, 0x9c, 0xea, 0x08, 0xf1, 0x9c, - 0xea, 0x08, 0xf2, 0x9c, 0xea, 0x08, 0xf2, 0x9c, 0xea, 0x08, 0xf2, 0x9c, - 0xea, 0x08, 0xf2, 0x9c, 0xea, 0x08, 0xf2, 0x9c, 0xea, 0x08, 0xf3, 0x9d, - 0xec, 0x08, 0xf3, 0x9c, 0xea, 0x08, 0xf3, 0x9d, 0xec, 0x08, 0xf3, 0x9c, - 0xea, 0x08, 0xf4, 0x9d, 0xec, 0x08, 0xf4, 0x9c, 0xea, 0x08, 0xf4, 0x9d, - 0xec, 0x08, 0xf4, 0x9d, 0xec, 0x08, 0xf5, 0x9d, 0xec, 0x08, 0xf5, 0x9d, - 0xee, 0x08, 0xf5, 0x9d, 0xec, 0x08, 0xf5, 0x9d, 0xee, 0x08, 0xf5, 0x9d, - 0xec, 0x08, 0xf6, 0x9d, 0xee, 0x08, 0xf6, 0x9d, 0xec, 0x08, 0xf6, 0x9d, - 0xee, 0x08, 0xf6, 0x9d, 0xee, 0x08, 0xf7, 0x9d, 0xee, 0x08, 0xf7, 0x9e, - 0xf0, 0x08, 0xf7, 0x9e, 0xf1, 0x08, 0xf7, 0x9e, 0xf0, 0x08, 0xf8, 0x9e, - 0xf1, 0x08, 0xf8, 0x9e, 0xf0, 0x08, 0xf8, 0x9e, 0xf1, 0x08, 0xf8, 0x9e, - 0xf0, 0x08, 0xf8, 0x9e, 0xf1, 0x08, 0xf9, 0x9e, 0xf0, 0x08, 0xf9, 0x9e, - 0xf1, 0x08, 0xf9, 0x9f, 0xf3, 0x08, 0xf9, 0x9e, 0xf1, 0x08, 0xfa, 0x9f, - 0xf3, 0x08, 0xfa, 0x9e, 0xf1, 0x08, 0xfa, 0x9f, 0xf3, 0x08, 0xfa, 0x9e, - 0xf1, 0x08, 0xfa, 0x9f, 0xf3, 0x08, 0xfb, 0x9e, 0xf1, 0x08, 0xfb, 0x9f, - 0xf3, 0x08, 0xfb, 0xa0, 0xf5, 0x08, 0xfb, 0x9f, 0xf3, 0x08, 0xfc, 0xa0, - 0xf5, 0x08, 0xfc, 0x9f, 0xf3, 0x08, 0xfc, 0xa0, 0xf5, 0x08, 0xfc, 0x9f, - 0xf3, 0x08, 0xfc, 0xa0, 0xf5, 0x08, 0xfd, 0x9f, 0xf3, 0x08, 0xfd, 0xa0, - 0xf5, 0x08, 0xfd, 0xa1, 0xf7, 0x08, 0xfd, 0xa1, 0xf7, 0x08, 0xfe, 0xa1, - 0xf7, 0x08, 0xfe, 0xa1, 0xf7, 0x08, 0xfe, 0xa1, 0xf7, 0x08, 0xfe, 0xa1, - 0xf7, 0x08, 0xfe, 0xa1, 0xf7, 0x08, 0xff, 0xa1, 0xf7, 0x08, 0xff, 0xa1, - 0xf7, 0x08, 0x03, 0x83, 0x9b, 0x08, 0x0a, 0x83, 0x9b, 0x08, 0x0f, 0x83, - 0x9b, 0x08, 0x14, 0x83, 0x9b, 0x08, 0x17, 0x83, 0x9b, 0x08, 0x1b, 0x83, - 0x9b, 0x08, 0x1e, 0x83, 0x9b, 0x08, 0x20, 0x83, 0x9c, 0x08, 0x23, 0x83, - 0x9b, 0x08, 0x25, 0x83, 0x9c, 0x08, 0x27, 0x83, 0x9b, 0x08, 0x29, 0x83, - 0x9c, 0x08, 0x2b, 0x83, 0x9b, 0x08, 0x2d, 0x83, 0x9c, 0x08, 0x2f, 0x83, - 0x9b, 0x08, 0x31, 0x83, 0x9c, 0x08, 0x32, 0x83, 0x9b, 0x08, 0x34, 0x83, - 0x9c, 0x08, 0x35, 0x83, 0x9b, 0x08, 0x37, 0x83, 0x9c, 0x08, 0x38, 0x83, - 0x9b, 0x08, 0x3a, 0x83, 0x9c, 0x08, 0x3b, 0x83, 0x9b, 0x08, 0x3c, 0x83, - 0x9c, 0x08, 0x3e, 0x83, 0x9b, 0x08, 0x3f, 0x83, 0x9c, 0x08, 0x40, 0x83, - 0x9b, 0x08, 0x42, 0x83, 0x9c, 0x08, 0x43, 0x83, 0x9b, 0x08, 0x44, 0x83, - 0x9c, 0x08, 0x45, 0x83, 0x9b, 0x08, 0x46, 0x83, 0x9c, 0x08, 0x47, 0x83, - 0x9b, 0x08, 0x48, 0x83, 0x9c, 0x08, 0x49, 0x83, 0x9b, 0x08, 0x4a, 0x83, - 0x9c, 0x08, 0x4b, 0x83, 0x9b, 0x08, 0x4c, 0x83, 0x9c, 0x08, 0x4d, 0x83, - 0x9b, 0x08, 0x4e, 0x83, 0x9c, 0x08, 0x4f, 0x83, 0x9b, 0x08, 0x50, 0x83, - 0x9c, 0x08, 0x51, 0x83, 0x9b, 0x08, 0x52, 0x83, 0x9c, 0x08, 0x53, 0x83, - 0x9b, 0x08, 0x54, 0x83, 0x9c, 0x08, 0x55, 0x83, 0x9b, 0x08, 0x56, 0x83, - 0x9c, 0x08, 0x57, 0x83, 0x9b, 0x08, 0x58, 0x83, 0x9c, 0x08, 0x58, 0x83, - 0x9b, 0x08, 0x59, 0x83, 0x9c, 0x08, 0x5a, 0x83, 0x9b, 0x08, 0x5b, 0x83, - 0x9c, 0x08, 0x5c, 0x83, 0x9b, 0x08, 0x5d, 0x83, 0x9c, 0x08, 0x5d, 0x83, - 0x9b, 0x08, 0x5e, 0x83, 0x9c, 0x08, 0x5f, 0x83, 0x9b, 0x08, 0x60, 0x83, - 0x9c, 0x08, 0x60, 0x83, 0x9b, 0x08, 0x61, 0x83, 0x9c, 0x08, 0x62, 0x83, - 0x9b, 0x08, 0x63, 0x83, 0x9c, 0x08, 0x63, 0x83, 0x9b, 0x08, 0x64, 0x83, - 0x9c, 0x08, 0x65, 0x83, 0x9b, 0x08, 0x66, 0x83, 0x9c, 0x08, 0x66, 0x83, - 0x9b, 0x08, 0x67, 0x83, 0x9c, 0x08, 0x68, 0x83, 0x9b, 0x08, 0x68, 0x83, - 0x9c, 0x08, 0x69, 0x83, 0x9b, 0x08, 0x6a, 0x83, 0x9c, 0x08, 0x6a, 0x83, - 0x9b, 0x08, 0x6b, 0x83, 0x9c, 0x08, 0x6c, 0x83, 0x9b, 0x08, 0x6c, 0x83, - 0x9c, 0x08, 0x6d, 0x83, 0x9b, 0x08, 0x6e, 0x83, 0x9c, 0x08, 0x6e, 0x83, - 0x9b, 0x08, 0x6f, 0x83, 0x9c, 0x08, 0x70, 0x83, 0x9b, 0x08, 0x70, 0x83, - 0x9c, 0x08, 0x71, 0x83, 0x9b, 0x08, 0x72, 0x83, 0x9c, 0x08, 0x72, 0x83, - 0x9b, 0x08, 0x73, 0x83, 0x9c, 0x08, 0x73, 0x83, 0x9b, 0x08, 0x74, 0x83, - 0x9c, 0x08, 0x75, 0x83, 0x9b, 0x08, 0x75, 0x83, 0x9c, 0x08, 0x76, 0x83, - 0x9b, 0x08, 0x76, 0x83, 0x9c, 0x08, 0x77, 0x83, 0x9b, 0x08, 0x78, 0x83, - 0x9c, 0x08, 0x78, 0x83, 0x9b, 0x08, 0x79, 0x83, 0x9c, 0x08, 0x79, 0x83, - 0x9b, 0x08, 0x7a, 0x83, 0x9c, 0x08, 0x7a, 0x83, 0x9b, 0x08, 0x7b, 0x83, - 0x9c, 0x08, 0x7c, 0x83, 0x9b, 0x08, 0x7c, 0x83, 0x9c, 0x08, 0x7d, 0x83, - 0x9b, 0x08, 0x7d, 0x83, 0x9c, 0x08, 0x7e, 0x83, 0x9b, 0x08, 0x7e, 0x83, - 0x9c, 0x08, 0x7f, 0x83, 0x9b, 0x08, 0x7f, 0x83, 0x9c, 0x08, 0x80, 0x83, - 0x9b, 0x08, 0x81, 0x83, 0x9c, 0x08, 0x81, 0x83, 0x9b, 0x08, 0x82, 0x83, - 0x9c, 0x08, 0x82, 0x83, 0x9b, 0x08, 0x83, 0x83, 0x9c, 0x08, 0x83, 0x83, - 0x9b, 0x08, 0x84, 0x83, 0x9c, 0x08, 0x84, 0x83, 0x9b, 0x08, 0x85, 0x83, - 0x9c, 0x08, 0x85, 0x83, 0x9b, 0x08, 0x86, 0x83, 0x9c, 0x08, 0x86, 0x83, - 0x9b, 0x08, 0x87, 0x83, 0x9c, 0x08, 0x87, 0x83, 0x9b, 0x08, 0x88, 0x83, - 0x9c, 0x08, 0x88, 0x83, 0x9b, 0x08, 0x89, 0x83, 0x9c, 0x08, 0x89, 0x83, - 0x9b, 0x08, 0x8a, 0x83, 0x9c, 0x08, 0x8a, 0x83, 0x9b, 0x08, 0x8b, 0x83, - 0x9c, 0x08, 0x8b, 0x83, 0x9b, 0x08, 0x8c, 0x83, 0x9c, 0x08, 0x8c, 0x83, - 0x9b, 0x08, 0x8d, 0x83, 0x9c, 0x08, 0x8d, 0x83, 0x9b, 0x08, 0x8e, 0x83, - 0x9c, 0x08, 0x8e, 0x83, 0x9b, 0x08, 0x8e, 0x83, 0x9c, 0x08, 0x8f, 0x83, - 0x9b, 0x08, 0x8f, 0x83, 0x9c, 0x08, 0x90, 0x83, 0x9b, 0x08, 0x90, 0x83, - 0x9c, 0x08, 0x91, 0x83, 0x9b, 0x08, 0x91, 0x83, 0x9c, 0x08, 0x92, 0x83, - 0x9b, 0x08, 0x92, 0x83, 0x9c, 0x08, 0x93, 0x83, 0x9b, 0x08, 0x93, 0x83, - 0x9c, 0x08, 0x94, 0x83, 0x9b, 0x08, 0x94, 0x83, 0x9c, 0x08, 0x94, 0x83, - 0x9b, 0x08, 0x95, 0x83, 0x9c, 0x08, 0x95, 0x83, 0x9b, 0x08, 0x96, 0x83, - 0x9c, 0x08, 0x96, 0x83, 0x9b, 0x08, 0x97, 0x83, 0x9c, 0x08, 0x97, 0x83, - 0x9b, 0x08, 0x98, 0x83, 0x9c, 0x08, 0x98, 0x83, 0x9b, 0x08, 0x98, 0x83, - 0x9c, 0x08, 0x99, 0x83, 0x9b, 0x08, 0x99, 0x83, 0x9c, 0x08, 0x9a, 0x83, - 0x9b, 0x08, 0x9a, 0x83, 0x9c, 0x08, 0x9a, 0x83, 0x9b, 0x08, 0x9b, 0x83, - 0x9c, 0x08, 0x9b, 0x83, 0x9b, 0x08, 0x9c, 0x83, 0x9c, 0x08, 0x9c, 0x83, - 0x9c, 0x08, 0x9d, 0x83, 0x9d, 0x08, 0x9d, 0x83, 0x9c, 0x08, 0x9d, 0x83, - 0x9d, 0x08, 0x9e, 0x83, 0x9c, 0x08, 0x9e, 0x83, 0x9d, 0x08, 0x9f, 0x83, - 0x9c, 0x08, 0x9f, 0x83, 0x9d, 0x08, 0x9f, 0x83, 0x9c, 0x08, 0xa0, 0x83, - 0x9d, 0x08, 0xa0, 0x83, 0x9c, 0x08, 0xa1, 0x83, 0x9d, 0x08, 0xa1, 0x83, - 0x9c, 0x08, 0xa1, 0x83, 0x9d, 0x08, 0xa2, 0x83, 0x9c, 0x08, 0xa2, 0x83, - 0x9d, 0x08, 0xa3, 0x83, 0x9c, 0x08, 0xa3, 0x83, 0x9d, 0x08, 0xa3, 0x83, - 0x9c, 0x08, 0xa4, 0x83, 0x9d, 0x08, 0xa4, 0x83, 0x9c, 0x08, 0xa5, 0x83, - 0x9d, 0x08, 0xa5, 0x83, 0x9c, 0x08, 0xa5, 0x83, 0x9d, 0x08, 0xa6, 0x83, - 0x9c, 0x08, 0xa6, 0x83, 0x9d, 0x08, 0xa6, 0x84, 0xa0, 0x08, 0xa7, 0x84, - 0xa1, 0x08, 0xa7, 0x84, 0xa0, 0x08, 0xa8, 0x84, 0xa1, 0x08, 0xa8, 0x84, - 0xa0, 0x08, 0xa8, 0x84, 0xa1, 0x08, 0xa9, 0x84, 0xa0, 0x08, 0xa9, 0x84, - 0xa1, 0x08, 0xaa, 0x84, 0xa0, 0x08, 0xaa, 0x84, 0xa1, 0x08, 0xaa, 0x85, - 0xa4, 0x08, 0xab, 0x84, 0xa1, 0x08, 0xab, 0x85, 0xa4, 0x08, 0xab, 0x84, - 0xa1, 0x08, 0xac, 0x85, 0xa4, 0x08, 0xac, 0x85, 0xa4, 0x08, 0xac, 0x85, - 0xa4, 0x08, 0xad, 0x85, 0xa4, 0x08, 0xad, 0x85, 0xa4, 0x08, 0xae, 0x86, - 0xa8, 0x08, 0xae, 0x85, 0xa4, 0x08, 0xae, 0x86, 0xa8, 0x08, 0xaf, 0x85, - 0xa4, 0x08, 0xaf, 0x86, 0xa8, 0x08, 0xaf, 0x85, 0xa4, 0x08, 0xb0, 0x86, - 0xa8, 0x08, 0xb0, 0x86, 0xa7, 0x08, 0xb0, 0x86, 0xa8, 0x08, 0xb1, 0x86, - 0xa7, 0x08, 0xb1, 0x86, 0xa8, 0x08, 0xb2, 0x87, 0xab, 0x08, 0xb2, 0x87, - 0xab, 0x08, 0xb2, 0x87, 0xab, 0x08, 0xb3, 0x87, 0xab, 0x08, 0xb3, 0x87, - 0xab, 0x08, 0xb3, 0x87, 0xab, 0x08, 0xb4, 0x87, 0xab, 0x08, 0xb4, 0x87, - 0xab, 0x08, 0xb4, 0x87, 0xab, 0x08, 0xb5, 0x87, 0xab, 0x08, 0xb5, 0x88, - 0xaf, 0x08, 0xb5, 0x87, 0xab, 0x08, 0xb6, 0x88, 0xaf, 0x08, 0xb6, 0x87, - 0xab, 0x08, 0xb6, 0x88, 0xaf, 0x08, 0xb7, 0x88, 0xae, 0x08, 0xb7, 0x88, - 0xaf, 0x08, 0xb7, 0x88, 0xae, 0x08, 0xb8, 0x88, 0xaf, 0x08, 0xb8, 0x89, - 0xb2, 0x08, 0xb8, 0x89, 0xb2, 0x08, 0xb9, 0x89, 0xb2, 0x08, 0xb9, 0x89, - 0xb2, 0x08, 0xb9, 0x89, 0xb2, 0x08, 0xba, 0x89, 0xb2, 0x08, 0xba, 0x89, - 0xb2, 0x08, 0xba, 0x89, 0xb2, 0x08, 0xbb, 0x89, 0xb2, 0x08, 0xbb, 0x89, - 0xb2, 0x08, 0xbb, 0x8a, 0xb5, 0x08, 0xbc, 0x89, 0xb2, 0x08, 0xbc, 0x8a, - 0xb5, 0x08, 0xbc, 0x89, 0xb2, 0x08, 0xbd, 0x8a, 0xb5, 0x08, 0xbd, 0x89, - 0xb2, 0x08, 0xbd, 0x8a, 0xb5, 0x08, 0xbe, 0x8a, 0xb5, 0x08, 0xbe, 0x8a, - 0xb5, 0x08, 0xbe, 0x8a, 0xb5, 0x08, 0xbf, 0x8a, 0xb5, 0x08, 0xbf, 0x8b, - 0xb8, 0x08, 0xbf, 0x8a, 0xb5, 0x08, 0xc0, 0x8b, 0xb8, 0x08, 0xc0, 0x8a, - 0xb5, 0x08, 0xc0, 0x8b, 0xb8, 0x08, 0xc1, 0x8b, 0xb8, 0x08, 0xc1, 0x8b, - 0xb8, 0x08, 0xc1, 0x8b, 0xb8, 0x08, 0xc1, 0x8b, 0xb8, 0x08, 0xc2, 0x8c, - 0xbb, 0x08, 0xc2, 0x8c, 0xbc, 0x08, 0xc2, 0x8c, 0xbb, 0x08, 0xc3, 0x8c, - 0xbc, 0x08, 0xc3, 0x8c, 0xbb, 0x08, 0xc3, 0x8c, 0xbc, 0x08, 0xc4, 0x8c, - 0xbb, 0x08, 0xc4, 0x8c, 0xbc, 0x08, 0xc4, 0x8c, 0xbb, 0x08, 0xc5, 0x8c, - 0xbc, 0x08, 0xc5, 0x8d, 0xbf, 0x08, 0xc5, 0x8c, 0xbc, 0x08, 0xc6, 0x8d, - 0xbf, 0x08, 0xc6, 0x8c, 0xbc, 0x08, 0xc6, 0x8d, 0xbf, 0x08, 0xc6, 0x8d, - 0xbe, 0x08, 0xc7, 0x8d, 0xbf, 0x08, 0xc7, 0x8d, 0xbe, 0x08, 0xc7, 0x8d, - 0xbf, 0x08, 0xc8, 0x8e, 0xc1, 0x08, 0xc8, 0x8d, 0xbf, 0x08, 0xc8, 0x8e, - 0xc1, 0x08, 0xc9, 0x8d, 0xbf, 0x08, 0xc9, 0x8e, 0xc1, 0x08, 0xc9, 0x8d, - 0xbf, 0x08, 0xc9, 0x8e, 0xc1, 0x08, 0xca, 0x8e, 0xc1, 0x08, 0xca, 0x8e, - 0xc1, 0x08, 0xca, 0x8f, 0xc4, 0x08, 0xcb, 0x8f, 0xc5, 0x08, 0xcb, 0x8f, - 0xc4, 0x08, 0xcb, 0x8f, 0xc5, 0x08, 0xcc, 0x8f, 0xc4, 0x08, 0xcc, 0x8f, - 0xc5, 0x08, 0xcc, 0x8f, 0xc4, 0x08, 0xcc, 0x8f, 0xc5, 0x08, 0xcd, 0x8f, - 0xc4, 0x08, 0xcd, 0x8f, 0xc5, 0x08, 0xcd, 0x90, 0xc7, 0x08, 0xce, 0x8f, - 0xc5, 0x08, 0xce, 0x90, 0xc7, 0x08, 0xce, 0x8f, 0xc5, 0x08, 0xce, 0x90, - 0xc7, 0x08, 0xcf, 0x8f, 0xc5, 0x08, 0xcf, 0x90, 0xc7, 0x08, 0xcf, 0x90, - 0xc7, 0x08, 0xd0, 0x90, 0xc7, 0x08, 0xd0, 0x90, 0xc7, 0x08, 0xd0, 0x90, - 0xc7, 0x08, 0xd0, 0x91, 0xca, 0x08, 0xd1, 0x90, 0xc7, 0x08, 0xd1, 0x91, - 0xca, 0x08, 0xd1, 0x90, 0xc7, 0x08, 0xd2, 0x91, 0xca, 0x08, 0xd2, 0x91, - 0xca, 0x08, 0xd2, 0x91, 0xca, 0x08, 0xd2, 0x91, 0xca, 0x08, 0xd3, 0x91, - 0xca, 0x08, 0xd3, 0x92, 0xcd, 0x08, 0xd3, 0x92, 0xcd, 0x08, 0xd4, 0x92, - 0xcd, 0x08, 0xd4, 0x92, 0xcd, 0x08, 0xd4, 0x92, 0xcd, 0x08, 0xd4, 0x92, - 0xcd, 0x08, 0xd5, 0x92, 0xcd, 0x08, 0xd5, 0x92, 0xcd, 0x08, 0xd5, 0x92, - 0xcd, 0x08, 0xd6, 0x92, 0xcd, 0x08, 0xd6, 0x93, 0xd0, 0x08, 0xd6, 0x92, - 0xcd, 0x08, 0xd6, 0x93, 0xd0, 0x08, 0xd7, 0x92, 0xcd, 0x08, 0xd7, 0x93, - 0xd0, 0x08, 0xd7, 0x92, 0xcd, 0x08, 0xd7, 0x93, 0xd0, 0x08, 0xd8, 0x93, - 0xcf, 0x08, 0xd8, 0x93, 0xd0, 0x08, 0xd8, 0x94, 0xd2, 0x08, 0xd9, 0x94, - 0xd2, 0x08, 0xd9, 0x94, 0xd2, 0x08, 0xd9, 0x94, 0xd2, 0x08, 0xd9, 0x94, - 0xd2, 0x08, 0xda, 0x94, 0xd2, 0x08, 0xda, 0x94, 0xd2, 0x08, 0xda, 0x94, - 0xd2, 0x08, 0xda, 0x94, 0xd2, 0x08, 0xdb, 0x94, 0xd2, 0x08, 0xdb, 0x94, - 0xd2, 0x08, 0xdb, 0x94, 0xd2, 0x08, 0xdb, 0x94, 0xd5, 0x08, 0xdc, 0x94, - 0xd2, 0x08, 0xdc, 0x94, 0xd5, 0x08, 0xdc, 0x94, 0xd2, 0x08, 0xdd, 0x94, - 0xd5, 0x08, 0xdd, 0x94, 0xd5, 0x08, 0xdd, 0x94, 0xd5, 0x08, 0xdd, 0x94, - 0xd5, 0x08, 0xde, 0x94, 0xd5, 0x08, 0xde, 0x95, 0xd7, 0x08, 0xde, 0x94, - 0xd5, 0x08, 0xde, 0x95, 0xd7, 0x08, 0xdf, 0x94, 0xd5, 0x08, 0xdf, 0x95, - 0xd7, 0x08, 0xdf, 0x94, 0xd5, 0x08, 0xdf, 0x95, 0xd7, 0x08, 0xe0, 0x95, - 0xd7, 0x08, 0xe0, 0x95, 0xd7, 0x08, 0xe0, 0x96, 0xda, 0x08, 0xe1, 0x96, - 0xda, 0x08, 0xe1, 0x96, 0xda, 0x08, 0xe1, 0x96, 0xda, 0x08, 0xe1, 0x96, - 0xda, 0x08, 0xe2, 0x96, 0xda, 0x08, 0xe2, 0x96, 0xda, 0x08, 0xe2, 0x96, - 0xda, 0x08, 0xe2, 0x96, 0xda, 0x08, 0xe3, 0x96, 0xda, 0x08, 0xe3, 0x97, - 0xdd, 0x08, 0xe3, 0x96, 0xda, 0x08, 0xe3, 0x97, 0xdd, 0x08, 0xe4, 0x96, - 0xda, 0x08, 0xe4, 0x97, 0xdd, 0x08, 0xe4, 0x96, 0xda, 0x08, 0xe4, 0x97, - 0xdd, 0x08, 0xe5, 0x97, 0xdc, 0x08, 0xe5, 0x97, 0xdd, 0x08, 0xe5, 0x98, - 0xdf, 0x08, 0xe5, 0x97, 0xdd, 0x08, 0xe6, 0x98, 0xdf, 0x08, 0xe6, 0x97, - 0xdd, 0x08, 0xe6, 0x98, 0xdf, 0x08, 0xe6, 0x97, 0xdd, 0x08, 0xe7, 0x98, - 0xdf, 0x08, 0xe7, 0x98, 0xdf, 0x08, 0xe7, 0x98, 0xdf, 0x08, 0xe7, 0x99, - 0xe1, 0x08, 0xe8, 0x98, 0xdf, 0x08, 0xe8, 0x99, 0xe1, 0x08, 0xe8, 0x99, - 0xe2, 0x08, 0xe8, 0x99, 0xe1, 0x08, 0xe9, 0x99, 0xe2, 0x08, 0xe9, 0x99, - 0xe1, 0x08, 0xe9, 0x99, 0xe2, 0x08, 0xe9, 0x99, 0xe1, 0x08, 0xea, 0x99, - 0xe2, 0x08, 0xea, 0x99, 0xe1, 0x08, 0xea, 0x99, 0xe2, 0x08, 0xea, 0x9a, - 0xe4, 0x08, 0xeb, 0x99, 0xe2, 0x08, 0xeb, 0x9a, 0xe4, 0x08, 0xeb, 0x99, - 0xe2, 0x08, 0xeb, 0x9a, 0xe4, 0x08, 0xec, 0x99, 0xe2, 0x08, 0xec, 0x9a, - 0xe4, 0x08, 0xec, 0x9a, 0xe4, 0x08, 0xec, 0x9a, 0xe4, 0x08, 0xec, 0x9a, - 0xe6, 0x08, 0xed, 0x9a, 0xe4, 0x08, 0xed, 0x9a, 0xe6, 0x08, 0xed, 0x9a, - 0xe4, 0x08, 0xed, 0x9a, 0xe6, 0x08, 0xee, 0x9a, 0xe4, 0x08, 0xee, 0x9a, - 0xe6, 0x08, 0xee, 0x9a, 0xe6, 0x08, 0xee, 0x9a, 0xe6, 0x08, 0xef, 0x9b, - 0xe8, 0x08, 0xef, 0x9b, 0xe9, 0x08, 0xef, 0x9b, 0xe8, 0x08, 0xef, 0x9b, - 0xe9, 0x08, 0xf0, 0x9b, 0xe8, 0x08, 0xf0, 0x9b, 0xe9, 0x08, 0xf0, 0x9b, - 0xe8, 0x08, 0xf0, 0x9b, 0xe9, 0x08, 0xf1, 0x9b, 0xe8, 0x08, 0xf1, 0x9b, - 0xe9, 0x08, 0xf1, 0x9c, 0xeb, 0x08, 0xf1, 0x9b, 0xe9, 0x08, 0xf2, 0x9c, - 0xeb, 0x08, 0xf2, 0x9b, 0xe9, 0x08, 0xf2, 0x9c, 0xeb, 0x08, 0xf2, 0x9b, - 0xe9, 0x08, 0xf2, 0x9c, 0xeb, 0x08, 0xf3, 0x9b, 0xe9, 0x08, 0xf3, 0x9c, - 0xeb, 0x08, 0xf3, 0x9c, 0xeb, 0x08, 0xf3, 0x9c, 0xeb, 0x08, 0xf4, 0x9d, - 0xed, 0x08, 0xf4, 0x9d, 0xed, 0x08, 0xf4, 0x9d, 0xed, 0x08, 0xf4, 0x9d, - 0xed, 0x08, 0xf5, 0x9d, 0xed, 0x08, 0xf5, 0x9d, 0xed, 0x08, 0xf5, 0x9d, - 0xed, 0x08, 0xf5, 0x9d, 0xed, 0x08, 0xf5, 0x9d, 0xed, 0x08, 0xf6, 0x9d, - 0xed, 0x08, 0xf6, 0x9e, 0xef, 0x08, 0xf6, 0x9d, 0xed, 0x08, 0xf6, 0x9e, - 0xef, 0x08, 0xf7, 0x9d, 0xed, 0x08, 0xf7, 0x9e, 0xef, 0x08, 0xf7, 0x9d, - 0xed, 0x08, 0xf7, 0x9e, 0xef, 0x08, 0xf8, 0x9e, 0xef, 0x08, 0xf8, 0x9e, - 0xef, 0x08, 0xf8, 0x9f, 0xf2, 0x08, 0xf8, 0x9e, 0xef, 0x08, 0xf8, 0x9f, - 0xf2, 0x08, 0xf9, 0x9e, 0xef, 0x08, 0xf9, 0x9f, 0xf2, 0x08, 0xf9, 0x9e, - 0xef, 0x08, 0xf9, 0x9f, 0xf2, 0x08, 0xfa, 0x9f, 0xf1, 0x08, 0xfa, 0x9f, - 0xf2, 0x08, 0xfa, 0x9f, 0xf4, 0x08, 0xfa, 0x9f, 0xf4, 0x08, 0xfa, 0x9f, - 0xf4, 0x08, 0xfb, 0x9f, 0xf4, 0x08, 0xfb, 0x9f, 0xf4, 0x08, 0xfb, 0x9f, - 0xf4, 0x08, 0xfb, 0x9f, 0xf4, 0x08, 0xfc, 0x9f, 0xf4, 0x08, 0xfc, 0x9f, - 0xf4, 0x08, 0xfc, 0x9f, 0xf4, 0x08, 0xfc, 0xa0, 0xf6, 0x08, 0xfc, 0x9f, - 0xf4, 0x08, 0xfd, 0xa0, 0xf6, 0x08, 0xfd, 0x9f, 0xf4, 0x08, 0xfd, 0xa0, - 0xf6, 0x08, 0xfd, 0x9f, 0xf4, 0x08, 0xfe, 0xa0, 0xf6, 0x08, 0xfe, 0xa0, - 0xf6, 0x08, 0xfe, 0xa0, 0xf6, 0x08, 0xfe, 0xa0, 0xf6, 0x08, 0xfe, 0xa0, - 0xf6, 0x08, 0xff, 0xa0, 0xf6, 0x08, 0xff, 0xa0, 0xf6, 0x08, 0x03, 0x84, - 0x9b, 0x09, 0x0a, 0x84, 0x9b, 0x09, 0x0f, 0x84, 0x9b, 0x09, 0x14, 0x84, - 0x9b, 0x09, 0x17, 0x84, 0x9b, 0x09, 0x1b, 0x84, 0x9b, 0x09, 0x1e, 0x84, - 0x9b, 0x09, 0x20, 0x84, 0x9c, 0x09, 0x23, 0x84, 0x9b, 0x09, 0x25, 0x84, - 0x9c, 0x09, 0x27, 0x84, 0x9b, 0x09, 0x29, 0x84, 0x9c, 0x09, 0x2b, 0x84, - 0x9b, 0x09, 0x2d, 0x84, 0x9c, 0x09, 0x2f, 0x84, 0x9b, 0x09, 0x31, 0x84, - 0x9c, 0x09, 0x32, 0x84, 0x9b, 0x09, 0x34, 0x84, 0x9c, 0x09, 0x35, 0x84, - 0x9b, 0x09, 0x37, 0x84, 0x9c, 0x09, 0x38, 0x84, 0x9b, 0x09, 0x3a, 0x84, - 0x9c, 0x09, 0x3b, 0x84, 0x9b, 0x09, 0x3c, 0x84, 0x9c, 0x09, 0x3e, 0x84, - 0x9b, 0x09, 0x3f, 0x84, 0x9c, 0x09, 0x40, 0x84, 0x9b, 0x09, 0x42, 0x84, - 0x9c, 0x09, 0x43, 0x84, 0x9b, 0x09, 0x44, 0x84, 0x9c, 0x09, 0x45, 0x84, - 0x9b, 0x09, 0x46, 0x84, 0x9c, 0x09, 0x47, 0x84, 0x9b, 0x09, 0x48, 0x84, - 0x9c, 0x09, 0x49, 0x84, 0x9b, 0x09, 0x4a, 0x84, 0x9c, 0x09, 0x4b, 0x84, - 0x9b, 0x09, 0x4c, 0x84, 0x9c, 0x09, 0x4d, 0x84, 0x9b, 0x09, 0x4e, 0x84, - 0x9c, 0x09, 0x4f, 0x84, 0x9b, 0x09, 0x50, 0x84, 0x9c, 0x09, 0x51, 0x84, - 0x9b, 0x09, 0x52, 0x84, 0x9c, 0x09, 0x53, 0x84, 0x9b, 0x09, 0x54, 0x84, - 0x9c, 0x09, 0x55, 0x84, 0x9b, 0x09, 0x56, 0x84, 0x9c, 0x09, 0x57, 0x84, - 0x9b, 0x09, 0x58, 0x84, 0x9c, 0x09, 0x58, 0x84, 0x9b, 0x09, 0x59, 0x84, - 0x9c, 0x09, 0x5a, 0x84, 0x9b, 0x09, 0x5b, 0x84, 0x9c, 0x09, 0x5c, 0x84, - 0x9b, 0x09, 0x5d, 0x84, 0x9c, 0x09, 0x5d, 0x84, 0x9b, 0x09, 0x5e, 0x84, - 0x9c, 0x09, 0x5f, 0x84, 0x9b, 0x09, 0x60, 0x84, 0x9c, 0x09, 0x60, 0x84, - 0x9b, 0x09, 0x61, 0x84, 0x9c, 0x09, 0x62, 0x84, 0x9b, 0x09, 0x63, 0x84, - 0x9c, 0x09, 0x63, 0x84, 0x9b, 0x09, 0x64, 0x84, 0x9c, 0x09, 0x65, 0x84, - 0x9b, 0x09, 0x66, 0x84, 0x9c, 0x09, 0x66, 0x84, 0x9b, 0x09, 0x67, 0x84, - 0x9c, 0x09, 0x68, 0x84, 0x9b, 0x09, 0x68, 0x84, 0x9c, 0x09, 0x69, 0x84, - 0x9b, 0x09, 0x6a, 0x84, 0x9c, 0x09, 0x6a, 0x84, 0x9b, 0x09, 0x6b, 0x84, - 0x9c, 0x09, 0x6c, 0x84, 0x9b, 0x09, 0x6c, 0x84, 0x9c, 0x09, 0x6d, 0x84, - 0x9b, 0x09, 0x6e, 0x84, 0x9c, 0x09, 0x6e, 0x84, 0x9b, 0x09, 0x6f, 0x84, - 0x9c, 0x09, 0x70, 0x84, 0x9b, 0x09, 0x70, 0x84, 0x9c, 0x09, 0x71, 0x84, - 0x9b, 0x09, 0x72, 0x84, 0x9c, 0x09, 0x72, 0x84, 0x9b, 0x09, 0x73, 0x84, - 0x9c, 0x09, 0x73, 0x84, 0x9b, 0x09, 0x74, 0x84, 0x9c, 0x09, 0x75, 0x84, - 0x9b, 0x09, 0x75, 0x84, 0x9c, 0x09, 0x76, 0x84, 0x9b, 0x09, 0x76, 0x84, - 0x9c, 0x09, 0x77, 0x84, 0x9b, 0x09, 0x78, 0x84, 0x9c, 0x09, 0x78, 0x84, - 0x9b, 0x09, 0x79, 0x84, 0x9c, 0x09, 0x79, 0x84, 0x9b, 0x09, 0x7a, 0x84, - 0x9c, 0x09, 0x7a, 0x84, 0x9b, 0x09, 0x7b, 0x84, 0x9c, 0x09, 0x7c, 0x84, - 0x9b, 0x09, 0x7c, 0x84, 0x9c, 0x09, 0x7d, 0x84, 0x9b, 0x09, 0x7d, 0x84, - 0x9c, 0x09, 0x7e, 0x84, 0x9b, 0x09, 0x7e, 0x84, 0x9c, 0x09, 0x7f, 0x84, - 0x9b, 0x09, 0x7f, 0x84, 0x9c, 0x09, 0x80, 0x84, 0x9b, 0x09, 0x81, 0x84, - 0x9c, 0x09, 0x81, 0x84, 0x9b, 0x09, 0x82, 0x84, 0x9c, 0x09, 0x82, 0x84, - 0x9b, 0x09, 0x83, 0x84, 0x9c, 0x09, 0x83, 0x84, 0x9b, 0x09, 0x84, 0x84, - 0x9c, 0x09, 0x84, 0x84, 0x9b, 0x09, 0x85, 0x84, 0x9c, 0x09, 0x85, 0x84, - 0x9b, 0x09, 0x86, 0x84, 0x9c, 0x09, 0x86, 0x84, 0x9b, 0x09, 0x87, 0x84, - 0x9c, 0x09, 0x87, 0x84, 0x9b, 0x09, 0x88, 0x84, 0x9c, 0x09, 0x88, 0x84, - 0x9b, 0x09, 0x89, 0x84, 0x9c, 0x09, 0x89, 0x84, 0x9b, 0x09, 0x8a, 0x84, - 0x9c, 0x09, 0x8a, 0x84, 0x9b, 0x09, 0x8b, 0x84, 0x9c, 0x09, 0x8b, 0x84, - 0x9b, 0x09, 0x8c, 0x84, 0x9c, 0x09, 0x8c, 0x84, 0x9b, 0x09, 0x8d, 0x84, - 0x9c, 0x09, 0x8d, 0x84, 0x9b, 0x09, 0x8e, 0x84, 0x9c, 0x09, 0x8e, 0x84, - 0x9b, 0x09, 0x8e, 0x84, 0x9c, 0x09, 0x8f, 0x84, 0x9b, 0x09, 0x8f, 0x84, - 0x9c, 0x09, 0x90, 0x84, 0x9b, 0x09, 0x90, 0x84, 0x9c, 0x09, 0x91, 0x84, - 0x9b, 0x09, 0x91, 0x84, 0x9c, 0x09, 0x92, 0x84, 0x9b, 0x09, 0x92, 0x84, - 0x9c, 0x09, 0x93, 0x84, 0x9b, 0x09, 0x93, 0x84, 0x9c, 0x09, 0x94, 0x84, - 0x9b, 0x09, 0x94, 0x84, 0x9c, 0x09, 0x94, 0x84, 0x9b, 0x09, 0x95, 0x84, - 0x9c, 0x09, 0x95, 0x84, 0x9b, 0x09, 0x96, 0x84, 0x9c, 0x09, 0x96, 0x84, - 0x9b, 0x09, 0x97, 0x84, 0x9c, 0x09, 0x97, 0x84, 0x9b, 0x09, 0x98, 0x84, - 0x9c, 0x09, 0x98, 0x84, 0x9b, 0x09, 0x98, 0x84, 0x9c, 0x09, 0x99, 0x84, - 0x9b, 0x09, 0x99, 0x84, 0x9c, 0x09, 0x9a, 0x84, 0x9b, 0x09, 0x9a, 0x84, - 0x9c, 0x09, 0x9a, 0x84, 0x9b, 0x09, 0x9b, 0x84, 0x9c, 0x09, 0x9b, 0x84, - 0x9b, 0x09, 0x9c, 0x84, 0x9c, 0x09, 0x9c, 0x84, 0x9c, 0x09, 0x9d, 0x84, - 0x9d, 0x09, 0x9d, 0x84, 0x9d, 0x09, 0x9d, 0x84, 0x9d, 0x09, 0x9e, 0x84, - 0x9e, 0x09, 0x9e, 0x84, 0x9e, 0x09, 0x9f, 0x84, 0x9f, 0x09, 0x9f, 0x84, - 0x9e, 0x09, 0x9f, 0x84, 0x9f, 0x09, 0xa0, 0x84, 0x9e, 0x09, 0xa0, 0x84, - 0x9f, 0x09, 0xa1, 0x84, 0x9e, 0x09, 0xa1, 0x84, 0x9f, 0x09, 0xa1, 0x84, - 0x9e, 0x09, 0xa2, 0x84, 0x9f, 0x09, 0xa2, 0x84, 0x9e, 0x09, 0xa3, 0x84, - 0x9f, 0x09, 0xa3, 0x84, 0x9e, 0x09, 0xa3, 0x84, 0x9f, 0x09, 0xa4, 0x84, - 0x9e, 0x09, 0xa4, 0x84, 0x9f, 0x09, 0xa5, 0x84, 0x9e, 0x09, 0xa5, 0x84, - 0x9f, 0x09, 0xa5, 0x84, 0x9e, 0x09, 0xa6, 0x84, 0x9f, 0x09, 0xa6, 0x84, - 0x9e, 0x09, 0xa6, 0x84, 0x9f, 0x09, 0xa7, 0x84, 0x9e, 0x09, 0xa7, 0x84, - 0x9f, 0x09, 0xa8, 0x84, 0x9e, 0x09, 0xa8, 0x84, 0x9f, 0x09, 0xa8, 0x85, - 0xa2, 0x09, 0xa9, 0x84, 0x9f, 0x09, 0xa9, 0x85, 0xa2, 0x09, 0xaa, 0x84, - 0x9f, 0x09, 0xaa, 0x85, 0xa2, 0x09, 0xaa, 0x85, 0xa2, 0x09, 0xab, 0x85, - 0xa2, 0x09, 0xab, 0x85, 0xa2, 0x09, 0xab, 0x85, 0xa2, 0x09, 0xac, 0x86, - 0xa6, 0x09, 0xac, 0x86, 0xa6, 0x09, 0xac, 0x86, 0xa6, 0x09, 0xad, 0x86, - 0xa6, 0x09, 0xad, 0x86, 0xa6, 0x09, 0xae, 0x86, 0xa6, 0x09, 0xae, 0x86, - 0xa6, 0x09, 0xae, 0x86, 0xa6, 0x09, 0xaf, 0x86, 0xa6, 0x09, 0xaf, 0x86, - 0xa6, 0x09, 0xaf, 0x87, 0xaa, 0x09, 0xb0, 0x86, 0xa6, 0x09, 0xb0, 0x87, - 0xaa, 0x09, 0xb0, 0x86, 0xa6, 0x09, 0xb1, 0x87, 0xaa, 0x09, 0xb1, 0x86, - 0xa6, 0x09, 0xb2, 0x87, 0xaa, 0x09, 0xb2, 0x87, 0xa9, 0x09, 0xb2, 0x87, - 0xaa, 0x09, 0xb3, 0x87, 0xa9, 0x09, 0xb3, 0x87, 0xaa, 0x09, 0xb3, 0x88, - 0xad, 0x09, 0xb4, 0x88, 0xad, 0x09, 0xb4, 0x88, 0xad, 0x09, 0xb4, 0x88, - 0xad, 0x09, 0xb5, 0x88, 0xad, 0x09, 0xb5, 0x88, 0xad, 0x09, 0xb5, 0x88, - 0xad, 0x09, 0xb6, 0x88, 0xad, 0x09, 0xb6, 0x88, 0xad, 0x09, 0xb6, 0x88, - 0xad, 0x09, 0xb7, 0x89, 0xb0, 0x09, 0xb7, 0x88, 0xad, 0x09, 0xb7, 0x89, - 0xb0, 0x09, 0xb8, 0x88, 0xad, 0x09, 0xb8, 0x89, 0xb0, 0x09, 0xb8, 0x89, - 0xb2, 0x09, 0xb9, 0x89, 0xb0, 0x09, 0xb9, 0x89, 0xb2, 0x09, 0xb9, 0x89, - 0xb0, 0x09, 0xba, 0x89, 0xb2, 0x09, 0xba, 0x89, 0xb0, 0x09, 0xba, 0x89, - 0xb2, 0x09, 0xbb, 0x89, 0xb2, 0x09, 0xbb, 0x89, 0xb2, 0x09, 0xbb, 0x89, - 0xb2, 0x09, 0xbc, 0x89, 0xb2, 0x09, 0xbc, 0x8a, 0xb3, 0x09, 0xbc, 0x8a, - 0xb4, 0x09, 0xbd, 0x8b, 0xb7, 0x09, 0xbd, 0x8b, 0xb7, 0x09, 0xbd, 0x8b, - 0xb7, 0x09, 0xbe, 0x8b, 0xb7, 0x09, 0xbe, 0x8b, 0xb7, 0x09, 0xbe, 0x8b, - 0xb7, 0x09, 0xbf, 0x8b, 0xb7, 0x09, 0xbf, 0x8b, 0xb7, 0x09, 0xbf, 0x8b, - 0xb7, 0x09, 0xc0, 0x8b, 0xb7, 0x09, 0xc0, 0x8b, 0xb7, 0x09, 0xc0, 0x8b, - 0xb7, 0x09, 0xc1, 0x8c, 0xba, 0x09, 0xc1, 0x8b, 0xb7, 0x09, 0xc1, 0x8c, - 0xba, 0x09, 0xc1, 0x8b, 0xb7, 0x09, 0xc2, 0x8c, 0xba, 0x09, 0xc2, 0x8c, - 0xba, 0x09, 0xc2, 0x8c, 0xba, 0x09, 0xc3, 0x8c, 0xba, 0x09, 0xc3, 0x8c, - 0xba, 0x09, 0xc3, 0x8d, 0xbd, 0x09, 0xc4, 0x8c, 0xba, 0x09, 0xc4, 0x8d, - 0xbd, 0x09, 0xc4, 0x8c, 0xba, 0x09, 0xc5, 0x8d, 0xbd, 0x09, 0xc5, 0x8d, - 0xbd, 0x09, 0xc5, 0x8d, 0xbd, 0x09, 0xc6, 0x8d, 0xbd, 0x09, 0xc6, 0x8d, - 0xbd, 0x09, 0xc6, 0x8e, 0xc0, 0x09, 0xc6, 0x8e, 0xc0, 0x09, 0xc7, 0x8e, - 0xc0, 0x09, 0xc7, 0x8e, 0xc0, 0x09, 0xc7, 0x8e, 0xc0, 0x09, 0xc8, 0x8e, - 0xc0, 0x09, 0xc8, 0x8e, 0xc0, 0x09, 0xc8, 0x8e, 0xc0, 0x09, 0xc9, 0x8e, - 0xc0, 0x09, 0xc9, 0x8e, 0xc0, 0x09, 0xc9, 0x8e, 0xc3, 0x09, 0xc9, 0x8e, - 0xc0, 0x09, 0xca, 0x8e, 0xc3, 0x09, 0xca, 0x8e, 0xc0, 0x09, 0xca, 0x8e, - 0xc3, 0x09, 0xcb, 0x8e, 0xc0, 0x09, 0xcb, 0x8e, 0xc3, 0x09, 0xcb, 0x8e, - 0xc3, 0x09, 0xcc, 0x8e, 0xc3, 0x09, 0xcc, 0x8f, 0xc6, 0x09, 0xcc, 0x8e, - 0xc3, 0x09, 0xcc, 0x8f, 0xc6, 0x09, 0xcd, 0x8e, 0xc3, 0x09, 0xcd, 0x8f, - 0xc6, 0x09, 0xcd, 0x8e, 0xc3, 0x09, 0xce, 0x8f, 0xc6, 0x09, 0xce, 0x8f, - 0xc6, 0x09, 0xce, 0x8f, 0xc6, 0x09, 0xce, 0x90, 0xc9, 0x09, 0xcf, 0x90, - 0xc9, 0x09, 0xcf, 0x90, 0xc9, 0x09, 0xcf, 0x90, 0xc9, 0x09, 0xd0, 0x90, - 0xc9, 0x09, 0xd0, 0x90, 0xc9, 0x09, 0xd0, 0x90, 0xc9, 0x09, 0xd0, 0x90, - 0xc9, 0x09, 0xd1, 0x90, 0xc9, 0x09, 0xd1, 0x90, 0xc9, 0x09, 0xd1, 0x90, - 0xc9, 0x09, 0xd2, 0x90, 0xc9, 0x09, 0xd2, 0x91, 0xcc, 0x09, 0xd2, 0x90, - 0xc9, 0x09, 0xd2, 0x91, 0xcc, 0x09, 0xd3, 0x90, 0xc9, 0x09, 0xd3, 0x91, - 0xcc, 0x09, 0xd3, 0x91, 0xcb, 0x09, 0xd4, 0x91, 0xcc, 0x09, 0xd4, 0x91, - 0xcb, 0x09, 0xd4, 0x91, 0xcc, 0x09, 0xd4, 0x92, 0xce, 0x09, 0xd5, 0x92, - 0xce, 0x09, 0xd5, 0x92, 0xce, 0x09, 0xd5, 0x92, 0xce, 0x09, 0xd6, 0x92, - 0xce, 0x09, 0xd6, 0x92, 0xce, 0x09, 0xd6, 0x92, 0xce, 0x09, 0xd6, 0x92, - 0xce, 0x09, 0xd7, 0x92, 0xce, 0x09, 0xd7, 0x92, 0xce, 0x09, 0xd7, 0x93, - 0xd1, 0x09, 0xd7, 0x92, 0xce, 0x09, 0xd8, 0x93, 0xd1, 0x09, 0xd8, 0x92, - 0xce, 0x09, 0xd8, 0x93, 0xd1, 0x09, 0xd9, 0x92, 0xce, 0x09, 0xd9, 0x93, - 0xd1, 0x09, 0xd9, 0x93, 0xd1, 0x09, 0xd9, 0x93, 0xd1, 0x09, 0xda, 0x94, - 0xd4, 0x09, 0xda, 0x93, 0xd1, 0x09, 0xda, 0x94, 0xd4, 0x09, 0xda, 0x93, - 0xd1, 0x09, 0xdb, 0x94, 0xd4, 0x09, 0xdb, 0x93, 0xd1, 0x09, 0xdb, 0x94, - 0xd4, 0x09, 0xdb, 0x94, 0xd3, 0x09, 0xdc, 0x94, 0xd4, 0x09, 0xdc, 0x94, - 0xd3, 0x09, 0xdc, 0x94, 0xd4, 0x09, 0xdd, 0x95, 0xd6, 0x09, 0xdd, 0x95, - 0xd6, 0x09, 0xdd, 0x95, 0xd6, 0x09, 0xdd, 0x95, 0xd6, 0x09, 0xde, 0x95, - 0xd6, 0x09, 0xde, 0x95, 0xd6, 0x09, 0xde, 0x95, 0xd6, 0x09, 0xde, 0x95, - 0xd6, 0x09, 0xdf, 0x95, 0xd6, 0x09, 0xdf, 0x95, 0xd6, 0x09, 0xdf, 0x96, - 0xd9, 0x09, 0xdf, 0x95, 0xd6, 0x09, 0xe0, 0x96, 0xd9, 0x09, 0xe0, 0x95, - 0xd6, 0x09, 0xe0, 0x96, 0xd9, 0x09, 0xe1, 0x95, 0xd6, 0x09, 0xe1, 0x96, - 0xd9, 0x09, 0xe1, 0x96, 0xd9, 0x09, 0xe1, 0x96, 0xd9, 0x09, 0xe2, 0x97, - 0xdb, 0x09, 0xe2, 0x96, 0xd9, 0x09, 0xe2, 0x97, 0xdb, 0x09, 0xe2, 0x96, - 0xd9, 0x09, 0xe3, 0x97, 0xdb, 0x09, 0xe3, 0x96, 0xd9, 0x09, 0xe3, 0x97, - 0xdb, 0x09, 0xe3, 0x97, 0xdb, 0x09, 0xe4, 0x97, 0xdb, 0x09, 0xe4, 0x98, - 0xde, 0x09, 0xe4, 0x98, 0xde, 0x09, 0xe4, 0x98, 0xde, 0x09, 0xe5, 0x98, - 0xde, 0x09, 0xe5, 0x98, 0xde, 0x09, 0xe5, 0x98, 0xde, 0x09, 0xe5, 0x98, - 0xde, 0x09, 0xe6, 0x98, 0xde, 0x09, 0xe6, 0x98, 0xde, 0x09, 0xe6, 0x98, - 0xde, 0x09, 0xe6, 0x98, 0xe0, 0x09, 0xe7, 0x98, 0xde, 0x09, 0xe7, 0x98, - 0xe0, 0x09, 0xe7, 0x98, 0xde, 0x09, 0xe7, 0x98, 0xe0, 0x09, 0xe8, 0x98, - 0xdf, 0x09, 0xe8, 0x98, 0xe0, 0x09, 0xe8, 0x98, 0xdf, 0x09, 0xe8, 0x98, - 0xe0, 0x09, 0xe9, 0x99, 0xe3, 0x09, 0xe9, 0x98, 0xe0, 0x09, 0xe9, 0x99, - 0xe3, 0x09, 0xe9, 0x98, 0xe0, 0x09, 0xea, 0x99, 0xe3, 0x09, 0xea, 0x98, - 0xe0, 0x09, 0xea, 0x99, 0xe3, 0x09, 0xea, 0x98, 0xe0, 0x09, 0xeb, 0x99, - 0xe3, 0x09, 0xeb, 0x99, 0xe2, 0x09, 0xeb, 0x99, 0xe3, 0x09, 0xeb, 0x9a, - 0xe5, 0x09, 0xec, 0x9a, 0xe5, 0x09, 0xec, 0x9a, 0xe5, 0x09, 0xec, 0x9a, - 0xe5, 0x09, 0xec, 0x9a, 0xe5, 0x09, 0xec, 0x9a, 0xe5, 0x09, 0xed, 0x9a, - 0xe5, 0x09, 0xed, 0x9a, 0xe5, 0x09, 0xed, 0x9a, 0xe5, 0x09, 0xed, 0x9a, - 0xe5, 0x09, 0xee, 0x9b, 0xe7, 0x09, 0xee, 0x9a, 0xe5, 0x09, 0xee, 0x9b, - 0xe7, 0x09, 0xee, 0x9a, 0xe5, 0x09, 0xef, 0x9b, 0xe7, 0x09, 0xef, 0x9a, - 0xe5, 0x09, 0xef, 0x9b, 0xe7, 0x09, 0xef, 0x9b, 0xe7, 0x09, 0xf0, 0x9b, - 0xe7, 0x09, 0xf0, 0x9c, 0xea, 0x09, 0xf0, 0x9c, 0xea, 0x09, 0xf0, 0x9c, - 0xea, 0x09, 0xf1, 0x9c, 0xea, 0x09, 0xf1, 0x9c, 0xea, 0x09, 0xf1, 0x9c, - 0xea, 0x09, 0xf1, 0x9c, 0xea, 0x09, 0xf2, 0x9c, 0xea, 0x09, 0xf2, 0x9c, - 0xea, 0x09, 0xf2, 0x9c, 0xea, 0x09, 0xf2, 0x9d, 0xec, 0x09, 0xf2, 0x9c, - 0xea, 0x09, 0xf3, 0x9d, 0xec, 0x09, 0xf3, 0x9c, 0xea, 0x09, 0xf3, 0x9d, - 0xec, 0x09, 0xf3, 0x9c, 0xea, 0x09, 0xf4, 0x9d, 0xec, 0x09, 0xf4, 0x9c, - 0xea, 0x09, 0xf4, 0x9d, 0xec, 0x09, 0xf4, 0x9d, 0xec, 0x09, 0xf5, 0x9d, - 0xec, 0x09, 0xf5, 0x9d, 0xee, 0x09, 0xf5, 0x9d, 0xec, 0x09, 0xf5, 0x9d, - 0xee, 0x09, 0xf5, 0x9d, 0xec, 0x09, 0xf6, 0x9d, 0xee, 0x09, 0xf6, 0x9d, - 0xec, 0x09, 0xf6, 0x9d, 0xee, 0x09, 0xf6, 0x9d, 0xee, 0x09, 0xf7, 0x9d, - 0xee, 0x09, 0xf7, 0x9e, 0xf0, 0x09, 0xf7, 0x9e, 0xf1, 0x09, 0xf7, 0x9e, - 0xf0, 0x09, 0xf8, 0x9e, 0xf1, 0x09, 0xf8, 0x9e, 0xf0, 0x09, 0xf8, 0x9e, - 0xf1, 0x09, 0xf8, 0x9e, 0xf0, 0x09, 0xf8, 0x9e, 0xf1, 0x09, 0xf9, 0x9e, - 0xf0, 0x09, 0xf9, 0x9e, 0xf1, 0x09, 0xf9, 0x9f, 0xf3, 0x09, 0xf9, 0x9e, - 0xf1, 0x09, 0xfa, 0x9f, 0xf3, 0x09, 0xfa, 0x9e, 0xf1, 0x09, 0xfa, 0x9f, - 0xf3, 0x09, 0xfa, 0x9e, 0xf1, 0x09, 0xfa, 0x9f, 0xf3, 0x09, 0xfb, 0x9f, - 0xf2, 0x09, 0xfb, 0x9f, 0xf3, 0x09, 0xfb, 0xa0, 0xf5, 0x09, 0xfb, 0x9f, - 0xf3, 0x09, 0xfc, 0xa0, 0xf5, 0x09, 0xfc, 0x9f, 0xf3, 0x09, 0xfc, 0xa0, - 0xf5, 0x09, 0xfc, 0x9f, 0xf3, 0x09, 0xfc, 0xa0, 0xf5, 0x09, 0xfd, 0x9f, - 0xf3, 0x09, 0xfd, 0xa0, 0xf5, 0x09, 0xfd, 0xa1, 0xf7, 0x09, 0xfd, 0xa1, - 0xf7, 0x09, 0xfe, 0xa1, 0xf7, 0x09, 0xfe, 0xa1, 0xf7, 0x09, 0xfe, 0xa1, - 0xf7, 0x09, 0xfe, 0xa1, 0xf7, 0x09, 0xfe, 0xa1, 0xf7, 0x09, 0xff, 0xa1, - 0xf7, 0x09, 0xff, 0xa1, 0xf7, 0x09, 0x03, 0x83, 0x9b, 0x09, 0x0a, 0x83, - 0x9b, 0x09, 0x0f, 0x83, 0x9b, 0x09, 0x14, 0x83, 0x9b, 0x09, 0x17, 0x83, - 0x9b, 0x09, 0x1b, 0x83, 0x9b, 0x09, 0x1e, 0x83, 0x9b, 0x09, 0x20, 0x83, - 0x9c, 0x09, 0x23, 0x83, 0x9b, 0x09, 0x25, 0x83, 0x9c, 0x09, 0x27, 0x83, - 0x9b, 0x09, 0x29, 0x83, 0x9c, 0x09, 0x2b, 0x83, 0x9b, 0x09, 0x2d, 0x83, - 0x9c, 0x09, 0x2f, 0x83, 0x9b, 0x09, 0x31, 0x83, 0x9c, 0x09, 0x32, 0x83, - 0x9b, 0x09, 0x34, 0x83, 0x9c, 0x09, 0x35, 0x83, 0x9b, 0x09, 0x37, 0x83, - 0x9c, 0x09, 0x38, 0x83, 0x9b, 0x09, 0x3a, 0x83, 0x9c, 0x09, 0x3b, 0x83, - 0x9b, 0x09, 0x3c, 0x83, 0x9c, 0x09, 0x3e, 0x83, 0x9b, 0x09, 0x3f, 0x83, - 0x9c, 0x09, 0x40, 0x83, 0x9b, 0x09, 0x42, 0x83, 0x9c, 0x09, 0x43, 0x83, - 0x9b, 0x09, 0x44, 0x83, 0x9c, 0x09, 0x45, 0x83, 0x9b, 0x09, 0x46, 0x83, - 0x9c, 0x09, 0x47, 0x83, 0x9b, 0x09, 0x48, 0x83, 0x9c, 0x09, 0x49, 0x83, - 0x9b, 0x09, 0x4a, 0x83, 0x9c, 0x09, 0x4b, 0x83, 0x9b, 0x09, 0x4c, 0x83, - 0x9c, 0x09, 0x4d, 0x83, 0x9b, 0x09, 0x4e, 0x83, 0x9c, 0x09, 0x4f, 0x83, - 0x9b, 0x09, 0x50, 0x83, 0x9c, 0x09, 0x51, 0x83, 0x9b, 0x09, 0x52, 0x83, - 0x9c, 0x09, 0x53, 0x83, 0x9b, 0x09, 0x54, 0x83, 0x9c, 0x09, 0x55, 0x83, - 0x9b, 0x09, 0x56, 0x83, 0x9c, 0x09, 0x57, 0x83, 0x9b, 0x09, 0x58, 0x83, - 0x9c, 0x09, 0x58, 0x83, 0x9b, 0x09, 0x59, 0x83, 0x9c, 0x09, 0x5a, 0x83, - 0x9b, 0x09, 0x5b, 0x83, 0x9c, 0x09, 0x5c, 0x83, 0x9b, 0x09, 0x5d, 0x83, - 0x9c, 0x09, 0x5d, 0x83, 0x9b, 0x09, 0x5e, 0x83, 0x9c, 0x09, 0x5f, 0x83, - 0x9b, 0x09, 0x60, 0x83, 0x9c, 0x09, 0x60, 0x83, 0x9b, 0x09, 0x61, 0x83, - 0x9c, 0x09, 0x62, 0x83, 0x9b, 0x09, 0x63, 0x83, 0x9c, 0x09, 0x63, 0x83, - 0x9b, 0x09, 0x64, 0x83, 0x9c, 0x09, 0x65, 0x83, 0x9b, 0x09, 0x66, 0x83, - 0x9c, 0x09, 0x66, 0x83, 0x9b, 0x09, 0x67, 0x83, 0x9c, 0x09, 0x68, 0x83, - 0x9b, 0x09, 0x68, 0x83, 0x9c, 0x09, 0x69, 0x83, 0x9b, 0x09, 0x6a, 0x83, - 0x9c, 0x09, 0x6a, 0x83, 0x9b, 0x09, 0x6b, 0x83, 0x9c, 0x09, 0x6c, 0x83, - 0x9b, 0x09, 0x6c, 0x83, 0x9c, 0x09, 0x6d, 0x83, 0x9b, 0x09, 0x6e, 0x83, - 0x9c, 0x09, 0x6e, 0x83, 0x9b, 0x09, 0x6f, 0x83, 0x9c, 0x09, 0x70, 0x83, - 0x9b, 0x09, 0x70, 0x83, 0x9c, 0x09, 0x71, 0x83, 0x9b, 0x09, 0x72, 0x83, - 0x9c, 0x09, 0x72, 0x83, 0x9b, 0x09, 0x73, 0x83, 0x9c, 0x09, 0x73, 0x83, - 0x9b, 0x09, 0x74, 0x83, 0x9c, 0x09, 0x75, 0x83, 0x9b, 0x09, 0x75, 0x83, - 0x9c, 0x09, 0x76, 0x83, 0x9b, 0x09, 0x76, 0x83, 0x9c, 0x09, 0x77, 0x83, - 0x9b, 0x09, 0x78, 0x83, 0x9c, 0x09, 0x78, 0x83, 0x9b, 0x09, 0x79, 0x83, - 0x9c, 0x09, 0x79, 0x83, 0x9b, 0x09, 0x7a, 0x83, 0x9c, 0x09, 0x7a, 0x83, - 0x9b, 0x09, 0x7b, 0x83, 0x9c, 0x09, 0x7c, 0x83, 0x9b, 0x09, 0x7c, 0x83, - 0x9c, 0x09, 0x7d, 0x83, 0x9b, 0x09, 0x7d, 0x83, 0x9c, 0x09, 0x7e, 0x83, - 0x9b, 0x09, 0x7e, 0x83, 0x9c, 0x09, 0x7f, 0x83, 0x9b, 0x09, 0x7f, 0x83, - 0x9c, 0x09, 0x80, 0x83, 0x9b, 0x09, 0x81, 0x83, 0x9c, 0x09, 0x81, 0x83, - 0x9b, 0x09, 0x82, 0x83, 0x9c, 0x09, 0x82, 0x83, 0x9b, 0x09, 0x83, 0x83, - 0x9c, 0x09, 0x83, 0x83, 0x9b, 0x09, 0x84, 0x83, 0x9c, 0x09, 0x84, 0x83, - 0x9b, 0x09, 0x85, 0x83, 0x9c, 0x09, 0x85, 0x83, 0x9b, 0x09, 0x86, 0x83, - 0x9c, 0x09, 0x86, 0x83, 0x9b, 0x09, 0x87, 0x83, 0x9c, 0x09, 0x87, 0x83, - 0x9b, 0x09, 0x88, 0x83, 0x9c, 0x09, 0x88, 0x83, 0x9b, 0x09, 0x89, 0x83, - 0x9c, 0x09, 0x89, 0x83, 0x9b, 0x09, 0x8a, 0x83, 0x9c, 0x09, 0x8a, 0x83, - 0x9b, 0x09, 0x8b, 0x83, 0x9c, 0x09, 0x8b, 0x83, 0x9b, 0x09, 0x8c, 0x83, - 0x9c, 0x09, 0x8c, 0x83, 0x9b, 0x09, 0x8d, 0x83, 0x9c, 0x09, 0x8d, 0x83, - 0x9b, 0x09, 0x8e, 0x83, 0x9c, 0x09, 0x8e, 0x83, 0x9b, 0x09, 0x8e, 0x83, - 0x9c, 0x09, 0x8f, 0x83, 0x9b, 0x09, 0x8f, 0x83, 0x9c, 0x09, 0x90, 0x83, - 0x9b, 0x09, 0x90, 0x83, 0x9c, 0x09, 0x91, 0x83, 0x9b, 0x09, 0x91, 0x83, - 0x9c, 0x09, 0x92, 0x83, 0x9b, 0x09, 0x92, 0x83, 0x9c, 0x09, 0x93, 0x83, - 0x9b, 0x09, 0x93, 0x83, 0x9c, 0x09, 0x94, 0x83, 0x9b, 0x09, 0x94, 0x83, - 0x9c, 0x09, 0x94, 0x83, 0x9b, 0x09, 0x95, 0x83, 0x9c, 0x09, 0x95, 0x83, - 0x9b, 0x09, 0x96, 0x83, 0x9c, 0x09, 0x96, 0x83, 0x9b, 0x09, 0x97, 0x83, - 0x9c, 0x09, 0x97, 0x83, 0x9b, 0x09, 0x98, 0x83, 0x9c, 0x09, 0x98, 0x83, - 0x9b, 0x09, 0x98, 0x83, 0x9c, 0x09, 0x99, 0x83, 0x9b, 0x09, 0x99, 0x83, - 0x9c, 0x09, 0x9a, 0x83, 0x9b, 0x09, 0x9a, 0x83, 0x9c, 0x09, 0x9a, 0x83, - 0x9b, 0x09, 0x9b, 0x83, 0x9c, 0x09, 0x9b, 0x83, 0x9b, 0x09, 0x9c, 0x83, - 0x9c, 0x09, 0x9c, 0x83, 0x9c, 0x09, 0x9d, 0x83, 0x9d, 0x09, 0x9d, 0x83, - 0x9c, 0x09, 0x9d, 0x83, 0x9d, 0x09, 0x9e, 0x83, 0x9c, 0x09, 0x9e, 0x83, - 0x9d, 0x09, 0x9f, 0x83, 0x9c, 0x09, 0x9f, 0x83, 0x9d, 0x09, 0x9f, 0x83, - 0x9c, 0x09, 0xa0, 0x83, 0x9d, 0x09, 0xa0, 0x83, 0x9c, 0x09, 0xa1, 0x83, - 0x9d, 0x09, 0xa1, 0x83, 0x9c, 0x09, 0xa1, 0x83, 0x9d, 0x09, 0xa2, 0x83, - 0x9c, 0x09, 0xa2, 0x83, 0x9d, 0x09, 0xa3, 0x83, 0x9c, 0x09, 0xa3, 0x83, - 0x9d, 0x09, 0xa3, 0x83, 0x9c, 0x09, 0xa4, 0x83, 0x9d, 0x09, 0xa4, 0x83, - 0x9c, 0x09, 0xa5, 0x83, 0x9d, 0x09, 0xa5, 0x83, 0x9c, 0x09, 0xa5, 0x83, - 0x9d, 0x09, 0xa6, 0x83, 0x9c, 0x09, 0xa6, 0x83, 0x9d, 0x09, 0xa6, 0x84, - 0xa0, 0x09, 0xa7, 0x84, 0xa1, 0x09, 0xa7, 0x84, 0xa0, 0x09, 0xa8, 0x84, - 0xa1, 0x09, 0xa8, 0x84, 0xa0, 0x09, 0xa8, 0x84, 0xa1, 0x09, 0xa9, 0x84, - 0xa0, 0x09, 0xa9, 0x84, 0xa1, 0x09, 0xaa, 0x84, 0xa0, 0x09, 0xaa, 0x84, - 0xa1, 0x09, 0xaa, 0x85, 0xa4, 0x09, 0xab, 0x84, 0xa1, 0x09, 0xab, 0x85, - 0xa4, 0x09, 0xab, 0x84, 0xa1, 0x09, 0xac, 0x85, 0xa4, 0x09, 0xac, 0x85, - 0xa4, 0x09, 0xac, 0x85, 0xa4, 0x09, 0xad, 0x85, 0xa4, 0x09, 0xad, 0x85, - 0xa4, 0x09, 0xae, 0x86, 0xa8, 0x09, 0xae, 0x85, 0xa4, 0x09, 0xae, 0x86, - 0xa8, 0x09, 0xaf, 0x85, 0xa4, 0x09, 0xaf, 0x86, 0xa8, 0x09, 0xaf, 0x86, - 0xa7, 0x09, 0xb0, 0x86, 0xa8, 0x09, 0xb0, 0x86, 0xa7, 0x09, 0xb0, 0x86, - 0xa8, 0x09, 0xb1, 0x87, 0xab, 0x09, 0xb1, 0x87, 0xab, 0x09, 0xb2, 0x87, - 0xab, 0x09, 0xb2, 0x87, 0xab, 0x09, 0xb2, 0x87, 0xab, 0x09, 0xb3, 0x87, - 0xab, 0x09, 0xb3, 0x87, 0xab, 0x09, 0xb3, 0x87, 0xab, 0x09, 0xb4, 0x87, - 0xab, 0x09, 0xb4, 0x87, 0xab, 0x09, 0xb4, 0x87, 0xab, 0x09, 0xb5, 0x87, - 0xab, 0x09, 0xb5, 0x88, 0xaf, 0x09, 0xb5, 0x87, 0xab, 0x09, 0xb6, 0x88, - 0xaf, 0x09, 0xb6, 0x87, 0xab, 0x09, 0xb6, 0x88, 0xaf, 0x09, 0xb7, 0x88, - 0xae, 0x09, 0xb7, 0x88, 0xaf, 0x09, 0xb7, 0x88, 0xae, 0x09, 0xb8, 0x88, - 0xaf, 0x09, 0xb8, 0x89, 0xb2, 0x09, 0xb8, 0x89, 0xb2, 0x09, 0xb9, 0x89, - 0xb2, 0x09, 0xb9, 0x89, 0xb2, 0x09, 0xb9, 0x89, 0xb2, 0x09, 0xba, 0x89, - 0xb2, 0x09, 0xba, 0x89, 0xb2, 0x09, 0xba, 0x89, 0xb2, 0x09, 0xbb, 0x89, - 0xb2, 0x09, 0xbb, 0x89, 0xb2, 0x09, 0xbb, 0x8a, 0xb5, 0x09, 0xbc, 0x89, - 0xb2, 0x09, 0xbc, 0x8a, 0xb5, 0x09, 0xbc, 0x89, 0xb2, 0x09, 0xbd, 0x8a, - 0xb5, 0x09, 0xbd, 0x8a, 0xb5, 0x09, 0xbd, 0x8a, 0xb5, 0x09, 0xbe, 0x8a, - 0xb5, 0x09, 0xbe, 0x8a, 0xb5, 0x09, 0xbe, 0x8b, 0xb8, 0x09, 0xbf, 0x8a, - 0xb5, 0x09, 0xbf, 0x8b, 0xb8, 0x09, 0xbf, 0x8a, 0xb5, 0x09, 0xc0, 0x8b, - 0xb8, 0x09, 0xc0, 0x8a, 0xb5, 0x09, 0xc0, 0x8b, 0xb8, 0x09, 0xc1, 0x8b, - 0xb8, 0x09, 0xc1, 0x8b, 0xb8, 0x09, 0xc1, 0x8b, 0xb8, 0x09, 0xc1, 0x8b, - 0xb8, 0x09, 0xc2, 0x8c, 0xbb, 0x09, 0xc2, 0x8c, 0xbc, 0x09, 0xc2, 0x8c, - 0xbb, 0x09, 0xc3, 0x8c, 0xbc, 0x09, 0xc3, 0x8c, 0xbb, 0x09, 0xc3, 0x8c, - 0xbc, 0x09, 0xc4, 0x8c, 0xbb, 0x09, 0xc4, 0x8c, 0xbc, 0x09, 0xc4, 0x8c, - 0xbb, 0x09, 0xc5, 0x8c, 0xbc, 0x09, 0xc5, 0x8d, 0xbf, 0x09, 0xc5, 0x8c, - 0xbc, 0x09, 0xc6, 0x8d, 0xbf, 0x09, 0xc6, 0x8c, 0xbc, 0x09, 0xc6, 0x8d, - 0xbf, 0x09, 0xc6, 0x8d, 0xbe, 0x09, 0xc7, 0x8d, 0xbf, 0x09, 0xc7, 0x8d, - 0xbe, 0x09, 0xc7, 0x8d, 0xbf, 0x09, 0xc8, 0x8e, 0xc1, 0x09, 0xc8, 0x8d, - 0xbf, 0x09, 0xc8, 0x8e, 0xc1, 0x09, 0xc9, 0x8d, 0xbf, 0x09, 0xc9, 0x8e, - 0xc1, 0x09, 0xc9, 0x8e, 0xc1, 0x09, 0xc9, 0x8e, 0xc1, 0x09, 0xca, 0x8e, - 0xc1, 0x09, 0xca, 0x8e, 0xc1, 0x09, 0xca, 0x8f, 0xc4, 0x09, 0xcb, 0x8f, - 0xc5, 0x09, 0xcb, 0x8f, 0xc4, 0x09, 0xcb, 0x8f, 0xc5, 0x09, 0xcc, 0x8f, - 0xc4, 0x09, 0xcc, 0x8f, 0xc5, 0x09, 0xcc, 0x8f, 0xc4, 0x09, 0xcc, 0x8f, - 0xc5, 0x09, 0xcd, 0x8f, 0xc4, 0x09, 0xcd, 0x8f, 0xc5, 0x09, 0xcd, 0x90, - 0xc7, 0x09, 0xce, 0x8f, 0xc5, 0x09, 0xce, 0x90, 0xc7, 0x09, 0xce, 0x8f, - 0xc5, 0x09, 0xce, 0x90, 0xc7, 0x09, 0xcf, 0x8f, 0xc5, 0x09, 0xcf, 0x90, - 0xc7, 0x09, 0xcf, 0x90, 0xc7, 0x09, 0xd0, 0x90, 0xc7, 0x09, 0xd0, 0x91, - 0xca, 0x09, 0xd0, 0x90, 0xc7, 0x09, 0xd0, 0x91, 0xca, 0x09, 0xd1, 0x90, - 0xc7, 0x09, 0xd1, 0x91, 0xca, 0x09, 0xd1, 0x90, 0xc7, 0x09, 0xd2, 0x91, - 0xca, 0x09, 0xd2, 0x91, 0xca, 0x09, 0xd2, 0x91, 0xca, 0x09, 0xd2, 0x91, - 0xca, 0x09, 0xd3, 0x91, 0xca, 0x09, 0xd3, 0x92, 0xcd, 0x09, 0xd3, 0x92, - 0xcd, 0x09, 0xd4, 0x92, 0xcd, 0x09, 0xd4, 0x92, 0xcd, 0x09, 0xd4, 0x92, - 0xcd, 0x09, 0xd4, 0x92, 0xcd, 0x09, 0xd5, 0x92, 0xcd, 0x09, 0xd5, 0x92, - 0xcd, 0x09, 0xd5, 0x92, 0xcd, 0x09, 0xd6, 0x92, 0xcd, 0x09, 0xd6, 0x93, - 0xd0, 0x09, 0xd6, 0x92, 0xcd, 0x09, 0xd6, 0x93, 0xd0, 0x09, 0xd7, 0x92, - 0xcd, 0x09, 0xd7, 0x93, 0xd0, 0x09, 0xd7, 0x92, 0xcd, 0x09, 0xd7, 0x93, - 0xd0, 0x09, 0xd8, 0x93, 0xcf, 0x09, 0xd8, 0x93, 0xd0, 0x09, 0xd8, 0x94, - 0xd2, 0x09, 0xd9, 0x94, 0xd2, 0x09, 0xd9, 0x94, 0xd2, 0x09, 0xd9, 0x94, - 0xd2, 0x09, 0xd9, 0x94, 0xd2, 0x09, 0xda, 0x94, 0xd2, 0x09, 0xda, 0x94, - 0xd2, 0x09, 0xda, 0x94, 0xd2, 0x09, 0xda, 0x94, 0xd2, 0x09, 0xdb, 0x94, - 0xd2, 0x09, 0xdb, 0x94, 0xd5, 0x09, 0xdb, 0x94, 0xd2, 0x09, 0xdb, 0x94, - 0xd5, 0x09, 0xdc, 0x94, 0xd2, 0x09, 0xdc, 0x94, 0xd5, 0x09, 0xdc, 0x94, - 0xd2, 0x09, 0xdd, 0x94, 0xd5, 0x09, 0xdd, 0x94, 0xd5, 0x09, 0xdd, 0x94, - 0xd5, 0x09, 0xdd, 0x94, 0xd5, 0x09, 0xde, 0x94, 0xd5, 0x09, 0xde, 0x95, - 0xd7, 0x09, 0xde, 0x94, 0xd5, 0x09, 0xde, 0x95, 0xd7, 0x09, 0xdf, 0x94, - 0xd5, 0x09, 0xdf, 0x95, 0xd7, 0x09, 0xdf, 0x95, 0xd7, 0x09, 0xdf, 0x95, - 0xd7, 0x09, 0xe0, 0x95, 0xd7, 0x09, 0xe0, 0x95, 0xd7, 0x09, 0xe0, 0x96, - 0xda, 0x09, 0xe1, 0x96, 0xda, 0x09, 0xe1, 0x96, 0xda, 0x09, 0xe1, 0x96, - 0xda, 0x09, 0xe1, 0x96, 0xda, 0x09, 0xe2, 0x96, 0xda, 0x09, 0xe2, 0x96, - 0xda, 0x09, 0xe2, 0x96, 0xda, 0x09, 0xe2, 0x96, 0xda, 0x09, 0xe3, 0x96, - 0xda, 0x09, 0xe3, 0x97, 0xdd, 0x09, 0xe3, 0x96, 0xda, 0x09, 0xe3, 0x97, - 0xdd, 0x09, 0xe4, 0x96, 0xda, 0x09, 0xe4, 0x97, 0xdd, 0x09, 0xe4, 0x96, - 0xda, 0x09, 0xe4, 0x97, 0xdd, 0x09, 0xe5, 0x97, 0xdc, 0x09, 0xe5, 0x97, - 0xdd, 0x09, 0xe5, 0x98, 0xdf, 0x09, 0xe5, 0x97, 0xdd, 0x09, 0xe6, 0x98, - 0xdf, 0x09, 0xe6, 0x97, 0xdd, 0x09, 0xe6, 0x98, 0xdf, 0x09, 0xe6, 0x97, - 0xdd, 0x09, 0xe7, 0x98, 0xdf, 0x09, 0xe7, 0x98, 0xdf, 0x09, 0xe7, 0x98, - 0xdf, 0x09, 0xe7, 0x99, 0xe1, 0x09, 0xe8, 0x99, 0xe2, 0x09, 0xe8, 0x99, - 0xe1, 0x09, 0xe8, 0x99, 0xe2, 0x09, 0xe8, 0x99, 0xe1, 0x09, 0xe9, 0x99, - 0xe2, 0x09, 0xe9, 0x99, 0xe1, 0x09, 0xe9, 0x99, 0xe2, 0x09, 0xe9, 0x99, - 0xe1, 0x09, 0xea, 0x99, 0xe2, 0x09, 0xea, 0x9a, 0xe4, 0x09, 0xea, 0x99, - 0xe2, 0x09, 0xea, 0x9a, 0xe4, 0x09, 0xeb, 0x99, 0xe2, 0x09, 0xeb, 0x9a, - 0xe4, 0x09, 0xeb, 0x99, 0xe2, 0x09, 0xeb, 0x9a, 0xe4, 0x09, 0xec, 0x99, - 0xe2, 0x09, 0xec, 0x9a, 0xe4, 0x09, 0xec, 0x9a, 0xe4, 0x09, 0xec, 0x9a, - 0xe4, 0x09, 0xec, 0x9a, 0xe6, 0x09, 0xed, 0x9a, 0xe4, 0x09, 0xed, 0x9a, - 0xe6, 0x09, 0xed, 0x9a, 0xe4, 0x09, 0xed, 0x9a, 0xe6, 0x09, 0xee, 0x9a, - 0xe4, 0x09, 0xee, 0x9a, 0xe6, 0x09, 0xee, 0x9a, 0xe6, 0x09, 0xee, 0x9a, - 0xe6, 0x09, 0xef, 0x9b, 0xe8, 0x09, 0xef, 0x9b, 0xe9, 0x09, 0xef, 0x9b, - 0xe8, 0x09, 0xef, 0x9b, 0xe9, 0x09, 0xf0, 0x9b, 0xe8, 0x09, 0xf0, 0x9b, - 0xe9, 0x09, 0xf0, 0x9b, 0xe8, 0x09, 0xf0, 0x9b, 0xe9, 0x09, 0xf1, 0x9b, - 0xe8, 0x09, 0xf1, 0x9b, 0xe9, 0x09, 0xf1, 0x9c, 0xeb, 0x09, 0xf1, 0x9b, - 0xe9, 0x09, 0xf2, 0x9c, 0xeb, 0x09, 0xf2, 0x9b, 0xe9, 0x09, 0xf2, 0x9c, - 0xeb, 0x09, 0xf2, 0x9b, 0xe9, 0x09, 0xf2, 0x9c, 0xeb, 0x09, 0xf3, 0x9c, - 0xeb, 0x09, 0xf3, 0x9c, 0xeb, 0x09, 0xf3, 0x9d, 0xed, 0x09, 0xf3, 0x9d, - 0xed, 0x09, 0xf4, 0x9d, 0xed, 0x09, 0xf4, 0x9d, 0xed, 0x09, 0xf4, 0x9d, - 0xed, 0x09, 0xf4, 0x9d, 0xed, 0x09, 0xf5, 0x9d, 0xed, 0x09, 0xf5, 0x9d, - 0xed, 0x09, 0xf5, 0x9d, 0xed, 0x09, 0xf5, 0x9d, 0xed, 0x09, 0xf5, 0x9d, - 0xed, 0x09, 0xf6, 0x9d, 0xed, 0x09, 0xf6, 0x9e, 0xef, 0x09, 0xf6, 0x9d, - 0xed, 0x09, 0xf6, 0x9e, 0xef, 0x09, 0xf7, 0x9d, 0xed, 0x09, 0xf7, 0x9e, - 0xef, 0x09, 0xf7, 0x9d, 0xed, 0x09, 0xf7, 0x9e, 0xef, 0x09, 0xf8, 0x9e, - 0xef, 0x09, 0xf8, 0x9e, 0xef, 0x09, 0xf8, 0x9f, 0xf2, 0x09, 0xf8, 0x9e, - 0xef, 0x09, 0xf8, 0x9f, 0xf2, 0x09, 0xf9, 0x9e, 0xef, 0x09, 0xf9, 0x9f, - 0xf2, 0x09, 0xf9, 0x9e, 0xef, 0x09, 0xf9, 0x9f, 0xf2, 0x09, 0xfa, 0x9f, - 0xf1, 0x09, 0xfa, 0x9f, 0xf2, 0x09, 0xfa, 0x9f, 0xf4, 0x09, 0xfa, 0x9f, - 0xf4, 0x09, 0xfa, 0x9f, 0xf4, 0x09, 0xfb, 0x9f, 0xf4, 0x09, 0xfb, 0x9f, - 0xf4, 0x09, 0xfb, 0x9f, 0xf4, 0x09, 0xfb, 0x9f, 0xf4, 0x09, 0xfc, 0x9f, - 0xf4, 0x09, 0xfc, 0x9f, 0xf4, 0x09, 0xfc, 0x9f, 0xf4, 0x09, 0xfc, 0xa0, - 0xf6, 0x09, 0xfc, 0x9f, 0xf4, 0x09, 0xfd, 0xa0, 0xf6, 0x09, 0xfd, 0x9f, - 0xf4, 0x09, 0xfd, 0xa0, 0xf6, 0x09, 0xfd, 0x9f, 0xf4, 0x09, 0xfe, 0xa0, - 0xf6, 0x09, 0xfe, 0xa0, 0xf6, 0x09, 0xfe, 0xa0, 0xf6, 0x09, 0xfe, 0xa0, - 0xf6, 0x09, 0xfe, 0xa0, 0xf6, 0x09, 0xff, 0xa0, 0xf6, 0x09, 0xff, 0xa0, - 0xf6, 0x09, 0x03, 0x84, 0x9b, 0x0a, 0x0a, 0x84, 0x9b, 0x0a, 0x0f, 0x84, - 0x9b, 0x0a, 0x14, 0x84, 0x9b, 0x0a, 0x17, 0x84, 0x9b, 0x0a, 0x1b, 0x84, - 0x9b, 0x0a, 0x1e, 0x84, 0x9b, 0x0a, 0x20, 0x84, 0x9c, 0x0a, 0x23, 0x84, - 0x9b, 0x0a, 0x25, 0x84, 0x9c, 0x0a, 0x27, 0x84, 0x9b, 0x0a, 0x29, 0x84, - 0x9c, 0x0a, 0x2b, 0x84, 0x9b, 0x0a, 0x2d, 0x84, 0x9c, 0x0a, 0x2f, 0x84, - 0x9b, 0x0a, 0x31, 0x84, 0x9c, 0x0a, 0x32, 0x84, 0x9b, 0x0a, 0x34, 0x84, - 0x9c, 0x0a, 0x35, 0x84, 0x9b, 0x0a, 0x37, 0x84, 0x9c, 0x0a, 0x38, 0x84, - 0x9b, 0x0a, 0x3a, 0x84, 0x9c, 0x0a, 0x3b, 0x84, 0x9b, 0x0a, 0x3c, 0x84, - 0x9c, 0x0a, 0x3e, 0x84, 0x9b, 0x0a, 0x3f, 0x84, 0x9c, 0x0a, 0x40, 0x84, - 0x9b, 0x0a, 0x42, 0x84, 0x9c, 0x0a, 0x43, 0x84, 0x9b, 0x0a, 0x44, 0x84, - 0x9c, 0x0a, 0x45, 0x84, 0x9b, 0x0a, 0x46, 0x84, 0x9c, 0x0a, 0x47, 0x84, - 0x9b, 0x0a, 0x48, 0x84, 0x9c, 0x0a, 0x49, 0x84, 0x9b, 0x0a, 0x4a, 0x84, - 0x9c, 0x0a, 0x4b, 0x84, 0x9b, 0x0a, 0x4c, 0x84, 0x9c, 0x0a, 0x4d, 0x84, - 0x9b, 0x0a, 0x4e, 0x84, 0x9c, 0x0a, 0x4f, 0x84, 0x9b, 0x0a, 0x50, 0x84, - 0x9c, 0x0a, 0x51, 0x84, 0x9b, 0x0a, 0x52, 0x84, 0x9c, 0x0a, 0x53, 0x84, - 0x9b, 0x0a, 0x54, 0x84, 0x9c, 0x0a, 0x55, 0x84, 0x9b, 0x0a, 0x56, 0x84, - 0x9c, 0x0a, 0x57, 0x84, 0x9b, 0x0a, 0x58, 0x84, 0x9c, 0x0a, 0x58, 0x84, - 0x9b, 0x0a, 0x59, 0x84, 0x9c, 0x0a, 0x5a, 0x84, 0x9b, 0x0a, 0x5b, 0x84, - 0x9c, 0x0a, 0x5c, 0x84, 0x9b, 0x0a, 0x5d, 0x84, 0x9c, 0x0a, 0x5d, 0x84, - 0x9b, 0x0a, 0x5e, 0x84, 0x9c, 0x0a, 0x5f, 0x84, 0x9b, 0x0a, 0x60, 0x84, - 0x9c, 0x0a, 0x60, 0x84, 0x9b, 0x0a, 0x61, 0x84, 0x9c, 0x0a, 0x62, 0x84, - 0x9b, 0x0a, 0x63, 0x84, 0x9c, 0x0a, 0x63, 0x84, 0x9b, 0x0a, 0x64, 0x84, - 0x9c, 0x0a, 0x65, 0x84, 0x9b, 0x0a, 0x66, 0x84, 0x9c, 0x0a, 0x66, 0x84, - 0x9b, 0x0a, 0x67, 0x84, 0x9c, 0x0a, 0x68, 0x84, 0x9b, 0x0a, 0x68, 0x84, - 0x9c, 0x0a, 0x69, 0x84, 0x9b, 0x0a, 0x6a, 0x84, 0x9c, 0x0a, 0x6a, 0x84, - 0x9b, 0x0a, 0x6b, 0x84, 0x9c, 0x0a, 0x6c, 0x84, 0x9b, 0x0a, 0x6c, 0x84, - 0x9c, 0x0a, 0x6d, 0x84, 0x9b, 0x0a, 0x6e, 0x84, 0x9c, 0x0a, 0x6e, 0x84, - 0x9b, 0x0a, 0x6f, 0x84, 0x9c, 0x0a, 0x70, 0x84, 0x9b, 0x0a, 0x70, 0x84, - 0x9c, 0x0a, 0x71, 0x84, 0x9b, 0x0a, 0x72, 0x84, 0x9c, 0x0a, 0x72, 0x84, - 0x9b, 0x0a, 0x73, 0x84, 0x9c, 0x0a, 0x73, 0x84, 0x9b, 0x0a, 0x74, 0x84, - 0x9c, 0x0a, 0x75, 0x84, 0x9b, 0x0a, 0x75, 0x84, 0x9c, 0x0a, 0x76, 0x84, - 0x9b, 0x0a, 0x76, 0x84, 0x9c, 0x0a, 0x77, 0x84, 0x9b, 0x0a, 0x78, 0x84, - 0x9c, 0x0a, 0x78, 0x84, 0x9b, 0x0a, 0x79, 0x84, 0x9c, 0x0a, 0x79, 0x84, - 0x9b, 0x0a, 0x7a, 0x84, 0x9c, 0x0a, 0x7a, 0x84, 0x9b, 0x0a, 0x7b, 0x84, - 0x9c, 0x0a, 0x7c, 0x84, 0x9b, 0x0a, 0x7c, 0x84, 0x9c, 0x0a, 0x7d, 0x84, - 0x9b, 0x0a, 0x7d, 0x84, 0x9c, 0x0a, 0x7e, 0x84, 0x9b, 0x0a, 0x7e, 0x84, - 0x9c, 0x0a, 0x7f, 0x84, 0x9b, 0x0a, 0x7f, 0x84, 0x9c, 0x0a, 0x80, 0x84, - 0x9b, 0x0a, 0x81, 0x84, 0x9c, 0x0a, 0x81, 0x84, 0x9b, 0x0a, 0x82, 0x84, - 0x9c, 0x0a, 0x82, 0x84, 0x9b, 0x0a, 0x83, 0x84, 0x9c, 0x0a, 0x83, 0x84, - 0x9b, 0x0a, 0x84, 0x84, 0x9c, 0x0a, 0x84, 0x84, 0x9b, 0x0a, 0x85, 0x84, - 0x9c, 0x0a, 0x85, 0x84, 0x9b, 0x0a, 0x86, 0x84, 0x9c, 0x0a, 0x86, 0x84, - 0x9b, 0x0a, 0x87, 0x84, 0x9c, 0x0a, 0x87, 0x84, 0x9b, 0x0a, 0x88, 0x84, - 0x9c, 0x0a, 0x88, 0x84, 0x9b, 0x0a, 0x89, 0x84, 0x9c, 0x0a, 0x89, 0x84, - 0x9b, 0x0a, 0x8a, 0x84, 0x9c, 0x0a, 0x8a, 0x84, 0x9b, 0x0a, 0x8b, 0x84, - 0x9c, 0x0a, 0x8b, 0x84, 0x9b, 0x0a, 0x8c, 0x84, 0x9c, 0x0a, 0x8c, 0x84, - 0x9b, 0x0a, 0x8d, 0x84, 0x9c, 0x0a, 0x8d, 0x84, 0x9b, 0x0a, 0x8e, 0x84, - 0x9c, 0x0a, 0x8e, 0x84, 0x9b, 0x0a, 0x8e, 0x84, 0x9c, 0x0a, 0x8f, 0x84, - 0x9b, 0x0a, 0x8f, 0x84, 0x9c, 0x0a, 0x90, 0x84, 0x9b, 0x0a, 0x90, 0x84, - 0x9c, 0x0a, 0x91, 0x84, 0x9b, 0x0a, 0x91, 0x84, 0x9c, 0x0a, 0x92, 0x84, - 0x9b, 0x0a, 0x92, 0x84, 0x9c, 0x0a, 0x93, 0x84, 0x9b, 0x0a, 0x93, 0x84, - 0x9c, 0x0a, 0x94, 0x84, 0x9b, 0x0a, 0x94, 0x84, 0x9c, 0x0a, 0x94, 0x84, - 0x9b, 0x0a, 0x95, 0x84, 0x9c, 0x0a, 0x95, 0x84, 0x9b, 0x0a, 0x96, 0x84, - 0x9c, 0x0a, 0x96, 0x84, 0x9b, 0x0a, 0x97, 0x84, 0x9c, 0x0a, 0x97, 0x84, - 0x9b, 0x0a, 0x98, 0x84, 0x9c, 0x0a, 0x98, 0x84, 0x9b, 0x0a, 0x98, 0x84, - 0x9c, 0x0a, 0x99, 0x84, 0x9b, 0x0a, 0x99, 0x84, 0x9c, 0x0a, 0x9a, 0x84, - 0x9b, 0x0a, 0x9a, 0x84, 0x9c, 0x0a, 0x9a, 0x84, 0x9b, 0x0a, 0x9b, 0x84, - 0x9c, 0x0a, 0x9b, 0x84, 0x9b, 0x0a, 0x9c, 0x84, 0x9c, 0x0a, 0x9c, 0x84, - 0x9c, 0x0a, 0x9d, 0x84, 0x9d, 0x0a, 0x9d, 0x84, 0x9d, 0x0a, 0x9d, 0x84, - 0x9d, 0x0a, 0x9e, 0x84, 0x9e, 0x0a, 0x9e, 0x84, 0x9e, 0x0a, 0x9f, 0x84, - 0x9f, 0x0a, 0x9f, 0x84, 0x9e, 0x0a, 0x9f, 0x84, 0x9f, 0x0a, 0xa0, 0x84, - 0x9e, 0x0a, 0xa0, 0x84, 0x9f, 0x0a, 0xa1, 0x84, 0x9e, 0x0a, 0xa1, 0x84, - 0x9f, 0x0a, 0xa1, 0x84, 0x9e, 0x0a, 0xa2, 0x84, 0x9f, 0x0a, 0xa2, 0x84, - 0x9e, 0x0a, 0xa3, 0x84, 0x9f, 0x0a, 0xa3, 0x84, 0x9e, 0x0a, 0xa3, 0x84, - 0x9f, 0x0a, 0xa4, 0x84, 0x9e, 0x0a, 0xa4, 0x84, 0x9f, 0x0a, 0xa5, 0x84, - 0x9e, 0x0a, 0xa5, 0x84, 0x9f, 0x0a, 0xa5, 0x84, 0x9e, 0x0a, 0xa6, 0x84, - 0x9f, 0x0a, 0xa6, 0x84, 0x9e, 0x0a, 0xa6, 0x84, 0x9f, 0x0a, 0xa7, 0x84, - 0x9e, 0x0a, 0xa7, 0x84, 0x9f, 0x0a, 0xa8, 0x84, 0x9e, 0x0a, 0xa8, 0x84, - 0x9f, 0x0a, 0xa8, 0x85, 0xa2, 0x0a, 0xa9, 0x84, 0x9f, 0x0a, 0xa9, 0x85, - 0xa2, 0x0a, 0xaa, 0x84, 0x9f, 0x0a, 0xaa, 0x85, 0xa2, 0x0a, 0xaa, 0x85, - 0xa2, 0x0a, 0xab, 0x85, 0xa2, 0x0a, 0xab, 0x85, 0xa2, 0x0a, 0xab, 0x85, - 0xa2, 0x0a, 0xac, 0x86, 0xa6, 0x0a, 0xac, 0x86, 0xa6, 0x0a, 0xac, 0x86, - 0xa6, 0x0a, 0xad, 0x86, 0xa6, 0x0a, 0xad, 0x86, 0xa6, 0x0a, 0xae, 0x86, - 0xa6, 0x0a, 0xae, 0x86, 0xa6, 0x0a, 0xae, 0x86, 0xa6, 0x0a, 0xaf, 0x86, - 0xa6, 0x0a, 0xaf, 0x86, 0xa6, 0x0a, 0xaf, 0x87, 0xaa, 0x0a, 0xb0, 0x86, - 0xa6, 0x0a, 0xb0, 0x87, 0xaa, 0x0a, 0xb0, 0x86, 0xa6, 0x0a, 0xb1, 0x87, - 0xaa, 0x0a, 0xb1, 0x87, 0xa9, 0x0a, 0xb2, 0x87, 0xaa, 0x0a, 0xb2, 0x87, - 0xa9, 0x0a, 0xb2, 0x87, 0xaa, 0x0a, 0xb3, 0x88, 0xad, 0x0a, 0xb3, 0x88, - 0xad, 0x0a, 0xb3, 0x88, 0xad, 0x0a, 0xb4, 0x88, 0xad, 0x0a, 0xb4, 0x88, - 0xad, 0x0a, 0xb4, 0x88, 0xad, 0x0a, 0xb5, 0x88, 0xad, 0x0a, 0xb5, 0x88, - 0xad, 0x0a, 0xb5, 0x88, 0xad, 0x0a, 0xb6, 0x88, 0xad, 0x0a, 0xb6, 0x88, - 0xad, 0x0a, 0xb6, 0x88, 0xad, 0x0a, 0xb7, 0x89, 0xb0, 0x0a, 0xb7, 0x88, - 0xad, 0x0a, 0xb7, 0x89, 0xb0, 0x0a, 0xb8, 0x88, 0xad, 0x0a, 0xb8, 0x89, - 0xb0, 0x0a, 0xb8, 0x89, 0xb2, 0x0a, 0xb9, 0x89, 0xb0, 0x0a, 0xb9, 0x89, - 0xb2, 0x0a, 0xb9, 0x89, 0xb0, 0x0a, 0xba, 0x89, 0xb2, 0x0a, 0xba, 0x89, - 0xb0, 0x0a, 0xba, 0x89, 0xb2, 0x0a, 0xbb, 0x89, 0xb2, 0x0a, 0xbb, 0x89, - 0xb2, 0x0a, 0xbb, 0x89, 0xb2, 0x0a, 0xbc, 0x89, 0xb2, 0x0a, 0xbc, 0x8a, - 0xb3, 0x0a, 0xbc, 0x8a, 0xb4, 0x0a, 0xbd, 0x8b, 0xb7, 0x0a, 0xbd, 0x8b, - 0xb7, 0x0a, 0xbd, 0x8b, 0xb7, 0x0a, 0xbe, 0x8b, 0xb7, 0x0a, 0xbe, 0x8b, - 0xb7, 0x0a, 0xbe, 0x8b, 0xb7, 0x0a, 0xbf, 0x8b, 0xb7, 0x0a, 0xbf, 0x8b, - 0xb7, 0x0a, 0xbf, 0x8b, 0xb7, 0x0a, 0xc0, 0x8b, 0xb7, 0x0a, 0xc0, 0x8c, - 0xba, 0x0a, 0xc0, 0x8b, 0xb7, 0x0a, 0xc1, 0x8c, 0xba, 0x0a, 0xc1, 0x8b, - 0xb7, 0x0a, 0xc1, 0x8c, 0xba, 0x0a, 0xc1, 0x8b, 0xb7, 0x0a, 0xc2, 0x8c, - 0xba, 0x0a, 0xc2, 0x8c, 0xba, 0x0a, 0xc2, 0x8c, 0xba, 0x0a, 0xc3, 0x8c, - 0xba, 0x0a, 0xc3, 0x8c, 0xba, 0x0a, 0xc3, 0x8d, 0xbd, 0x0a, 0xc4, 0x8c, - 0xba, 0x0a, 0xc4, 0x8d, 0xbd, 0x0a, 0xc4, 0x8c, 0xba, 0x0a, 0xc5, 0x8d, - 0xbd, 0x0a, 0xc5, 0x8d, 0xbd, 0x0a, 0xc5, 0x8d, 0xbd, 0x0a, 0xc6, 0x8d, - 0xbd, 0x0a, 0xc6, 0x8d, 0xbd, 0x0a, 0xc6, 0x8e, 0xc0, 0x0a, 0xc6, 0x8e, - 0xc0, 0x0a, 0xc7, 0x8e, 0xc0, 0x0a, 0xc7, 0x8e, 0xc0, 0x0a, 0xc7, 0x8e, - 0xc0, 0x0a, 0xc8, 0x8e, 0xc0, 0x0a, 0xc8, 0x8e, 0xc0, 0x0a, 0xc8, 0x8e, - 0xc0, 0x0a, 0xc9, 0x8e, 0xc0, 0x0a, 0xc9, 0x8e, 0xc0, 0x0a, 0xc9, 0x8e, - 0xc3, 0x0a, 0xc9, 0x8e, 0xc0, 0x0a, 0xca, 0x8e, 0xc3, 0x0a, 0xca, 0x8e, - 0xc0, 0x0a, 0xca, 0x8e, 0xc3, 0x0a, 0xcb, 0x8e, 0xc3, 0x0a, 0xcb, 0x8e, - 0xc3, 0x0a, 0xcb, 0x8e, 0xc3, 0x0a, 0xcc, 0x8e, 0xc3, 0x0a, 0xcc, 0x8f, - 0xc6, 0x0a, 0xcc, 0x8e, 0xc3, 0x0a, 0xcc, 0x8f, 0xc6, 0x0a, 0xcd, 0x8e, - 0xc3, 0x0a, 0xcd, 0x8f, 0xc6, 0x0a, 0xcd, 0x8e, 0xc3, 0x0a, 0xce, 0x8f, - 0xc6, 0x0a, 0xce, 0x8f, 0xc6, 0x0a, 0xce, 0x8f, 0xc6, 0x0a, 0xce, 0x90, - 0xc9, 0x0a, 0xcf, 0x90, 0xc9, 0x0a, 0xcf, 0x90, 0xc9, 0x0a, 0xcf, 0x90, - 0xc9, 0x0a, 0xd0, 0x90, 0xc9, 0x0a, 0xd0, 0x90, 0xc9, 0x0a, 0xd0, 0x90, - 0xc9, 0x0a, 0xd0, 0x90, 0xc9, 0x0a, 0xd1, 0x90, 0xc9, 0x0a, 0xd1, 0x90, - 0xc9, 0x0a, 0xd1, 0x91, 0xcc, 0x0a, 0xd2, 0x90, 0xc9, 0x0a, 0xd2, 0x91, - 0xcc, 0x0a, 0xd2, 0x90, 0xc9, 0x0a, 0xd2, 0x91, 0xcc, 0x0a, 0xd3, 0x90, - 0xc9, 0x0a, 0xd3, 0x91, 0xcc, 0x0a, 0xd3, 0x91, 0xcb, 0x0a, 0xd4, 0x91, - 0xcc, 0x0a, 0xd4, 0x91, 0xcb, 0x0a, 0xd4, 0x91, 0xcc, 0x0a, 0xd4, 0x92, - 0xce, 0x0a, 0xd5, 0x92, 0xce, 0x0a, 0xd5, 0x92, 0xce, 0x0a, 0xd5, 0x92, - 0xce, 0x0a, 0xd6, 0x92, 0xce, 0x0a, 0xd6, 0x92, 0xce, 0x0a, 0xd6, 0x92, - 0xce, 0x0a, 0xd6, 0x92, 0xce, 0x0a, 0xd7, 0x92, 0xce, 0x0a, 0xd7, 0x92, - 0xce, 0x0a, 0xd7, 0x93, 0xd1, 0x0a, 0xd7, 0x92, 0xce, 0x0a, 0xd8, 0x93, - 0xd1, 0x0a, 0xd8, 0x92, 0xce, 0x0a, 0xd8, 0x93, 0xd1, 0x0a, 0xd9, 0x92, - 0xce, 0x0a, 0xd9, 0x93, 0xd1, 0x0a, 0xd9, 0x93, 0xd1, 0x0a, 0xd9, 0x93, - 0xd1, 0x0a, 0xda, 0x94, 0xd4, 0x0a, 0xda, 0x93, 0xd1, 0x0a, 0xda, 0x94, - 0xd4, 0x0a, 0xda, 0x93, 0xd1, 0x0a, 0xdb, 0x94, 0xd4, 0x0a, 0xdb, 0x93, - 0xd1, 0x0a, 0xdb, 0x94, 0xd4, 0x0a, 0xdb, 0x94, 0xd3, 0x0a, 0xdc, 0x94, - 0xd4, 0x0a, 0xdc, 0x95, 0xd6, 0x0a, 0xdc, 0x95, 0xd6, 0x0a, 0xdd, 0x95, - 0xd6, 0x0a, 0xdd, 0x95, 0xd6, 0x0a, 0xdd, 0x95, 0xd6, 0x0a, 0xdd, 0x95, - 0xd6, 0x0a, 0xde, 0x95, 0xd6, 0x0a, 0xde, 0x95, 0xd6, 0x0a, 0xde, 0x95, - 0xd6, 0x0a, 0xde, 0x95, 0xd6, 0x0a, 0xdf, 0x95, 0xd6, 0x0a, 0xdf, 0x95, - 0xd6, 0x0a, 0xdf, 0x96, 0xd9, 0x0a, 0xdf, 0x95, 0xd6, 0x0a, 0xe0, 0x96, - 0xd9, 0x0a, 0xe0, 0x95, 0xd6, 0x0a, 0xe0, 0x96, 0xd9, 0x0a, 0xe1, 0x96, - 0xd9, 0x0a, 0xe1, 0x96, 0xd9, 0x0a, 0xe1, 0x96, 0xd9, 0x0a, 0xe1, 0x96, - 0xd9, 0x0a, 0xe2, 0x97, 0xdb, 0x0a, 0xe2, 0x96, 0xd9, 0x0a, 0xe2, 0x97, - 0xdb, 0x0a, 0xe2, 0x96, 0xd9, 0x0a, 0xe3, 0x97, 0xdb, 0x0a, 0xe3, 0x96, - 0xd9, 0x0a, 0xe3, 0x97, 0xdb, 0x0a, 0xe3, 0x97, 0xdb, 0x0a, 0xe4, 0x97, - 0xdb, 0x0a, 0xe4, 0x98, 0xde, 0x0a, 0xe4, 0x98, 0xde, 0x0a, 0xe4, 0x98, - 0xde, 0x0a, 0xe5, 0x98, 0xde, 0x0a, 0xe5, 0x98, 0xde, 0x0a, 0xe5, 0x98, - 0xde, 0x0a, 0xe5, 0x98, 0xde, 0x0a, 0xe6, 0x98, 0xde, 0x0a, 0xe6, 0x98, - 0xde, 0x0a, 0xe6, 0x98, 0xde, 0x0a, 0xe6, 0x98, 0xe0, 0x0a, 0xe7, 0x98, - 0xde, 0x0a, 0xe7, 0x98, 0xe0, 0x0a, 0xe7, 0x98, 0xde, 0x0a, 0xe7, 0x98, - 0xe0, 0x0a, 0xe8, 0x98, 0xdf, 0x0a, 0xe8, 0x98, 0xe0, 0x0a, 0xe8, 0x98, - 0xdf, 0x0a, 0xe8, 0x98, 0xe0, 0x0a, 0xe9, 0x99, 0xe3, 0x0a, 0xe9, 0x98, - 0xe0, 0x0a, 0xe9, 0x99, 0xe3, 0x0a, 0xe9, 0x98, 0xe0, 0x0a, 0xea, 0x99, - 0xe3, 0x0a, 0xea, 0x98, 0xe0, 0x0a, 0xea, 0x99, 0xe3, 0x0a, 0xea, 0x99, - 0xe2, 0x0a, 0xeb, 0x99, 0xe3, 0x0a, 0xeb, 0x9a, 0xe5, 0x0a, 0xeb, 0x9a, - 0xe5, 0x0a, 0xeb, 0x9a, 0xe5, 0x0a, 0xec, 0x9a, 0xe5, 0x0a, 0xec, 0x9a, - 0xe5, 0x0a, 0xec, 0x9a, 0xe5, 0x0a, 0xec, 0x9a, 0xe5, 0x0a, 0xec, 0x9a, - 0xe5, 0x0a, 0xed, 0x9a, 0xe5, 0x0a, 0xed, 0x9a, 0xe5, 0x0a, 0xed, 0x9a, - 0xe5, 0x0a, 0xed, 0x9a, 0xe5, 0x0a, 0xee, 0x9b, 0xe7, 0x0a, 0xee, 0x9a, - 0xe5, 0x0a, 0xee, 0x9b, 0xe7, 0x0a, 0xee, 0x9a, 0xe5, 0x0a, 0xef, 0x9b, - 0xe7, 0x0a, 0xef, 0x9a, 0xe5, 0x0a, 0xef, 0x9b, 0xe7, 0x0a, 0xef, 0x9b, - 0xe7, 0x0a, 0xf0, 0x9b, 0xe7, 0x0a, 0xf0, 0x9c, 0xea, 0x0a, 0xf0, 0x9c, - 0xea, 0x0a, 0xf0, 0x9c, 0xea, 0x0a, 0xf1, 0x9c, 0xea, 0x0a, 0xf1, 0x9c, - 0xea, 0x0a, 0xf1, 0x9c, 0xea, 0x0a, 0xf1, 0x9c, 0xea, 0x0a, 0xf2, 0x9c, - 0xea, 0x0a, 0xf2, 0x9c, 0xea, 0x0a, 0xf2, 0x9c, 0xea, 0x0a, 0xf2, 0x9d, - 0xec, 0x0a, 0xf2, 0x9c, 0xea, 0x0a, 0xf3, 0x9d, 0xec, 0x0a, 0xf3, 0x9c, - 0xea, 0x0a, 0xf3, 0x9d, 0xec, 0x0a, 0xf3, 0x9c, 0xea, 0x0a, 0xf4, 0x9d, - 0xec, 0x0a, 0xf4, 0x9d, 0xec, 0x0a, 0xf4, 0x9d, 0xec, 0x0a, 0xf4, 0x9d, - 0xee, 0x0a, 0xf5, 0x9d, 0xec, 0x0a, 0xf5, 0x9d, 0xee, 0x0a, 0xf5, 0x9d, - 0xec, 0x0a, 0xf5, 0x9d, 0xee, 0x0a, 0xf5, 0x9d, 0xec, 0x0a, 0xf6, 0x9d, - 0xee, 0x0a, 0xf6, 0x9d, 0xec, 0x0a, 0xf6, 0x9d, 0xee, 0x0a, 0xf6, 0x9d, - 0xee, 0x0a, 0xf7, 0x9d, 0xee, 0x0a, 0xf7, 0x9e, 0xf0, 0x0a, 0xf7, 0x9e, - 0xf1, 0x0a, 0xf7, 0x9e, 0xf0, 0x0a, 0xf8, 0x9e, 0xf1, 0x0a, 0xf8, 0x9e, - 0xf0, 0x0a, 0xf8, 0x9e, 0xf1, 0x0a, 0xf8, 0x9e, 0xf0, 0x0a, 0xf8, 0x9e, - 0xf1, 0x0a, 0xf9, 0x9e, 0xf0, 0x0a, 0xf9, 0x9e, 0xf1, 0x0a, 0xf9, 0x9f, - 0xf3, 0x0a, 0xf9, 0x9e, 0xf1, 0x0a, 0xfa, 0x9f, 0xf3, 0x0a, 0xfa, 0x9e, - 0xf1, 0x0a, 0xfa, 0x9f, 0xf3, 0x0a, 0xfa, 0x9e, 0xf1, 0x0a, 0xfa, 0x9f, - 0xf3, 0x0a, 0xfb, 0x9f, 0xf2, 0x0a, 0xfb, 0x9f, 0xf3, 0x0a, 0xfb, 0xa0, - 0xf5, 0x0a, 0xfb, 0x9f, 0xf3, 0x0a, 0xfc, 0xa0, 0xf5, 0x0a, 0xfc, 0x9f, - 0xf3, 0x0a, 0xfc, 0xa0, 0xf5, 0x0a, 0xfc, 0x9f, 0xf3, 0x0a, 0xfc, 0xa0, - 0xf5, 0x0a, 0xfd, 0xa0, 0xf5, 0x0a, 0xfd, 0xa0, 0xf5, 0x0a, 0xfd, 0xa1, - 0xf7, 0x0a, 0xfd, 0xa1, 0xf7, 0x0a, 0xfe, 0xa1, 0xf7, 0x0a, 0xfe, 0xa1, - 0xf7, 0x0a, 0xfe, 0xa1, 0xf7, 0x0a, 0xfe, 0xa1, 0xf7, 0x0a, 0xfe, 0xa1, - 0xf7, 0x0a, 0xff, 0xa1, 0xf7, 0x0a, 0xff, 0xa1, 0xf7, 0x0a, 0x03, 0x83, - 0x9b, 0x0a, 0x0a, 0x83, 0x9b, 0x0a, 0x0f, 0x83, 0x9b, 0x0a, 0x14, 0x83, - 0x9b, 0x0a, 0x17, 0x83, 0x9b, 0x0a, 0x1b, 0x83, 0x9b, 0x0a, 0x1e, 0x83, - 0x9b, 0x0a, 0x20, 0x83, 0x9c, 0x0a, 0x23, 0x83, 0x9b, 0x0a, 0x25, 0x83, - 0x9c, 0x0a, 0x27, 0x83, 0x9b, 0x0a, 0x29, 0x83, 0x9c, 0x0a, 0x2b, 0x83, - 0x9b, 0x0a, 0x2d, 0x83, 0x9c, 0x0a, 0x2f, 0x83, 0x9b, 0x0a, 0x31, 0x83, - 0x9c, 0x0a, 0x32, 0x83, 0x9b, 0x0a, 0x34, 0x83, 0x9c, 0x0a, 0x35, 0x83, - 0x9b, 0x0a, 0x37, 0x83, 0x9c, 0x0a, 0x38, 0x83, 0x9b, 0x0a, 0x3a, 0x83, - 0x9c, 0x0a, 0x3b, 0x83, 0x9b, 0x0a, 0x3c, 0x83, 0x9c, 0x0a, 0x3e, 0x83, - 0x9b, 0x0a, 0x3f, 0x83, 0x9c, 0x0a, 0x40, 0x83, 0x9b, 0x0a, 0x42, 0x83, - 0x9c, 0x0a, 0x43, 0x83, 0x9b, 0x0a, 0x44, 0x83, 0x9c, 0x0a, 0x45, 0x83, - 0x9b, 0x0a, 0x46, 0x83, 0x9c, 0x0a, 0x47, 0x83, 0x9b, 0x0a, 0x48, 0x83, - 0x9c, 0x0a, 0x49, 0x83, 0x9b, 0x0a, 0x4a, 0x83, 0x9c, 0x0a, 0x4b, 0x83, - 0x9b, 0x0a, 0x4c, 0x83, 0x9c, 0x0a, 0x4d, 0x83, 0x9b, 0x0a, 0x4e, 0x83, - 0x9c, 0x0a, 0x4f, 0x83, 0x9b, 0x0a, 0x50, 0x83, 0x9c, 0x0a, 0x51, 0x83, - 0x9b, 0x0a, 0x52, 0x83, 0x9c, 0x0a, 0x53, 0x83, 0x9b, 0x0a, 0x54, 0x83, - 0x9c, 0x0a, 0x55, 0x83, 0x9b, 0x0a, 0x56, 0x83, 0x9c, 0x0a, 0x57, 0x83, - 0x9b, 0x0a, 0x58, 0x83, 0x9c, 0x0a, 0x58, 0x83, 0x9b, 0x0a, 0x59, 0x83, - 0x9c, 0x0a, 0x5a, 0x83, 0x9b, 0x0a, 0x5b, 0x83, 0x9c, 0x0a, 0x5c, 0x83, - 0x9b, 0x0a, 0x5d, 0x83, 0x9c, 0x0a, 0x5d, 0x83, 0x9b, 0x0a, 0x5e, 0x83, - 0x9c, 0x0a, 0x5f, 0x83, 0x9b, 0x0a, 0x60, 0x83, 0x9c, 0x0a, 0x60, 0x83, - 0x9b, 0x0a, 0x61, 0x83, 0x9c, 0x0a, 0x62, 0x83, 0x9b, 0x0a, 0x63, 0x83, - 0x9c, 0x0a, 0x63, 0x83, 0x9b, 0x0a, 0x64, 0x83, 0x9c, 0x0a, 0x65, 0x83, - 0x9b, 0x0a, 0x66, 0x83, 0x9c, 0x0a, 0x66, 0x83, 0x9b, 0x0a, 0x67, 0x83, - 0x9c, 0x0a, 0x68, 0x83, 0x9b, 0x0a, 0x68, 0x83, 0x9c, 0x0a, 0x69, 0x83, - 0x9b, 0x0a, 0x6a, 0x83, 0x9c, 0x0a, 0x6a, 0x83, 0x9b, 0x0a, 0x6b, 0x83, - 0x9c, 0x0a, 0x6c, 0x83, 0x9b, 0x0a, 0x6c, 0x83, 0x9c, 0x0a, 0x6d, 0x83, - 0x9b, 0x0a, 0x6e, 0x83, 0x9c, 0x0a, 0x6e, 0x83, 0x9b, 0x0a, 0x6f, 0x83, - 0x9c, 0x0a, 0x70, 0x83, 0x9b, 0x0a, 0x70, 0x83, 0x9c, 0x0a, 0x71, 0x83, - 0x9b, 0x0a, 0x72, 0x83, 0x9c, 0x0a, 0x72, 0x83, 0x9b, 0x0a, 0x73, 0x83, - 0x9c, 0x0a, 0x73, 0x83, 0x9b, 0x0a, 0x74, 0x83, 0x9c, 0x0a, 0x75, 0x83, - 0x9b, 0x0a, 0x75, 0x83, 0x9c, 0x0a, 0x76, 0x83, 0x9b, 0x0a, 0x76, 0x83, - 0x9c, 0x0a, 0x77, 0x83, 0x9b, 0x0a, 0x78, 0x83, 0x9c, 0x0a, 0x78, 0x83, - 0x9b, 0x0a, 0x79, 0x83, 0x9c, 0x0a, 0x79, 0x83, 0x9b, 0x0a, 0x7a, 0x83, - 0x9c, 0x0a, 0x7a, 0x83, 0x9b, 0x0a, 0x7b, 0x83, 0x9c, 0x0a, 0x7c, 0x83, - 0x9b, 0x0a, 0x7c, 0x83, 0x9c, 0x0a, 0x7d, 0x83, 0x9b, 0x0a, 0x7d, 0x83, - 0x9c, 0x0a, 0x7e, 0x83, 0x9b, 0x0a, 0x7e, 0x83, 0x9c, 0x0a, 0x7f, 0x83, - 0x9b, 0x0a, 0x7f, 0x83, 0x9c, 0x0a, 0x80, 0x83, 0x9b, 0x0a, 0x81, 0x83, - 0x9c, 0x0a, 0x81, 0x83, 0x9b, 0x0a, 0x82, 0x83, 0x9c, 0x0a, 0x82, 0x83, - 0x9b, 0x0a, 0x83, 0x83, 0x9c, 0x0a, 0x83, 0x83, 0x9b, 0x0a, 0x84, 0x83, - 0x9c, 0x0a, 0x84, 0x83, 0x9b, 0x0a, 0x85, 0x83, 0x9c, 0x0a, 0x85, 0x83, - 0x9b, 0x0a, 0x86, 0x83, 0x9c, 0x0a, 0x86, 0x83, 0x9b, 0x0a, 0x87, 0x83, - 0x9c, 0x0a, 0x87, 0x83, 0x9b, 0x0a, 0x88, 0x83, 0x9c, 0x0a, 0x88, 0x83, - 0x9b, 0x0a, 0x89, 0x83, 0x9c, 0x0a, 0x89, 0x83, 0x9b, 0x0a, 0x8a, 0x83, - 0x9c, 0x0a, 0x8a, 0x83, 0x9b, 0x0a, 0x8b, 0x83, 0x9c, 0x0a, 0x8b, 0x83, - 0x9b, 0x0a, 0x8c, 0x83, 0x9c, 0x0a, 0x8c, 0x83, 0x9b, 0x0a, 0x8d, 0x83, - 0x9c, 0x0a, 0x8d, 0x83, 0x9b, 0x0a, 0x8e, 0x83, 0x9c, 0x0a, 0x8e, 0x83, - 0x9b, 0x0a, 0x8e, 0x83, 0x9c, 0x0a, 0x8f, 0x83, 0x9b, 0x0a, 0x8f, 0x83, - 0x9c, 0x0a, 0x90, 0x83, 0x9b, 0x0a, 0x90, 0x83, 0x9c, 0x0a, 0x91, 0x83, - 0x9b, 0x0a, 0x91, 0x83, 0x9c, 0x0a, 0x92, 0x83, 0x9b, 0x0a, 0x92, 0x83, - 0x9c, 0x0a, 0x93, 0x83, 0x9b, 0x0a, 0x93, 0x83, 0x9c, 0x0a, 0x94, 0x83, - 0x9b, 0x0a, 0x94, 0x83, 0x9c, 0x0a, 0x94, 0x83, 0x9b, 0x0a, 0x95, 0x83, - 0x9c, 0x0a, 0x95, 0x83, 0x9b, 0x0a, 0x96, 0x83, 0x9c, 0x0a, 0x96, 0x83, - 0x9b, 0x0a, 0x97, 0x83, 0x9c, 0x0a, 0x97, 0x83, 0x9b, 0x0a, 0x98, 0x83, - 0x9c, 0x0a, 0x98, 0x83, 0x9b, 0x0a, 0x98, 0x83, 0x9c, 0x0a, 0x99, 0x83, - 0x9b, 0x0a, 0x99, 0x83, 0x9c, 0x0a, 0x9a, 0x83, 0x9b, 0x0a, 0x9a, 0x83, - 0x9c, 0x0a, 0x9a, 0x83, 0x9b, 0x0a, 0x9b, 0x83, 0x9c, 0x0a, 0x9b, 0x83, - 0x9b, 0x0a, 0x9c, 0x83, 0x9c, 0x0a, 0x9c, 0x83, 0x9c, 0x0a, 0x9d, 0x83, - 0x9d, 0x0a, 0x9d, 0x83, 0x9c, 0x0a, 0x9d, 0x83, 0x9d, 0x0a, 0x9e, 0x83, - 0x9c, 0x0a, 0x9e, 0x83, 0x9d, 0x0a, 0x9f, 0x83, 0x9c, 0x0a, 0x9f, 0x83, - 0x9d, 0x0a, 0x9f, 0x83, 0x9c, 0x0a, 0xa0, 0x83, 0x9d, 0x0a, 0xa0, 0x83, - 0x9c, 0x0a, 0xa1, 0x83, 0x9d, 0x0a, 0xa1, 0x83, 0x9c, 0x0a, 0xa1, 0x83, - 0x9d, 0x0a, 0xa2, 0x83, 0x9c, 0x0a, 0xa2, 0x83, 0x9d, 0x0a, 0xa3, 0x83, - 0x9c, 0x0a, 0xa3, 0x83, 0x9d, 0x0a, 0xa3, 0x83, 0x9c, 0x0a, 0xa4, 0x83, - 0x9d, 0x0a, 0xa4, 0x83, 0x9c, 0x0a, 0xa5, 0x83, 0x9d, 0x0a, 0xa5, 0x83, - 0x9c, 0x0a, 0xa5, 0x83, 0x9d, 0x0a, 0xa6, 0x83, 0x9c, 0x0a, 0xa6, 0x83, - 0x9d, 0x0a, 0xa6, 0x84, 0xa0, 0x0a, 0xa7, 0x84, 0xa1, 0x0a, 0xa7, 0x84, - 0xa0, 0x0a, 0xa8, 0x84, 0xa1, 0x0a, 0xa8, 0x84, 0xa0, 0x0a, 0xa8, 0x84, - 0xa1, 0x0a, 0xa9, 0x84, 0xa0, 0x0a, 0xa9, 0x84, 0xa1, 0x0a, 0xaa, 0x84, - 0xa0, 0x0a, 0xaa, 0x84, 0xa1, 0x0a, 0xaa, 0x85, 0xa4, 0x0a, 0xab, 0x84, - 0xa1, 0x0a, 0xab, 0x85, 0xa4, 0x0a, 0xab, 0x84, 0xa1, 0x0a, 0xac, 0x85, - 0xa4, 0x0a, 0xac, 0x85, 0xa4, 0x0a, 0xac, 0x85, 0xa4, 0x0a, 0xad, 0x85, - 0xa4, 0x0a, 0xad, 0x85, 0xa4, 0x0a, 0xae, 0x86, 0xa8, 0x0a, 0xae, 0x85, - 0xa4, 0x0a, 0xae, 0x86, 0xa8, 0x0a, 0xaf, 0x85, 0xa4, 0x0a, 0xaf, 0x86, - 0xa8, 0x0a, 0xaf, 0x86, 0xa7, 0x0a, 0xb0, 0x86, 0xa8, 0x0a, 0xb0, 0x86, - 0xa7, 0x0a, 0xb0, 0x86, 0xa8, 0x0a, 0xb1, 0x87, 0xab, 0x0a, 0xb1, 0x87, - 0xab, 0x0a, 0xb2, 0x87, 0xab, 0x0a, 0xb2, 0x87, 0xab, 0x0a, 0xb2, 0x87, - 0xab, 0x0a, 0xb3, 0x87, 0xab, 0x0a, 0xb3, 0x87, 0xab, 0x0a, 0xb3, 0x87, - 0xab, 0x0a, 0xb4, 0x87, 0xab, 0x0a, 0xb4, 0x87, 0xab, 0x0a, 0xb4, 0x88, - 0xaf, 0x0a, 0xb5, 0x87, 0xab, 0x0a, 0xb5, 0x88, 0xaf, 0x0a, 0xb5, 0x87, - 0xab, 0x0a, 0xb6, 0x88, 0xaf, 0x0a, 0xb6, 0x87, 0xab, 0x0a, 0xb6, 0x88, - 0xaf, 0x0a, 0xb7, 0x88, 0xae, 0x0a, 0xb7, 0x88, 0xaf, 0x0a, 0xb7, 0x88, - 0xae, 0x0a, 0xb8, 0x88, 0xaf, 0x0a, 0xb8, 0x89, 0xb2, 0x0a, 0xb8, 0x89, - 0xb2, 0x0a, 0xb9, 0x89, 0xb2, 0x0a, 0xb9, 0x89, 0xb2, 0x0a, 0xb9, 0x89, - 0xb2, 0x0a, 0xba, 0x89, 0xb2, 0x0a, 0xba, 0x89, 0xb2, 0x0a, 0xba, 0x89, - 0xb2, 0x0a, 0xbb, 0x89, 0xb2, 0x0a, 0xbb, 0x89, 0xb2, 0x0a, 0xbb, 0x8a, - 0xb5, 0x0a, 0xbc, 0x89, 0xb2, 0x0a, 0xbc, 0x8a, 0xb5, 0x0a, 0xbc, 0x89, - 0xb2, 0x0a, 0xbd, 0x8a, 0xb5, 0x0a, 0xbd, 0x8a, 0xb5, 0x0a, 0xbd, 0x8a, - 0xb5, 0x0a, 0xbe, 0x8a, 0xb5, 0x0a, 0xbe, 0x8a, 0xb5, 0x0a, 0xbe, 0x8b, - 0xb8, 0x0a, 0xbf, 0x8a, 0xb5, 0x0a, 0xbf, 0x8b, 0xb8, 0x0a, 0xbf, 0x8a, - 0xb5, 0x0a, 0xc0, 0x8b, 0xb8, 0x0a, 0xc0, 0x8b, 0xb8, 0x0a, 0xc0, 0x8b, - 0xb8, 0x0a, 0xc1, 0x8b, 0xb8, 0x0a, 0xc1, 0x8b, 0xb8, 0x0a, 0xc1, 0x8c, - 0xbb, 0x0a, 0xc1, 0x8c, 0xbc, 0x0a, 0xc2, 0x8c, 0xbb, 0x0a, 0xc2, 0x8c, - 0xbc, 0x0a, 0xc2, 0x8c, 0xbb, 0x0a, 0xc3, 0x8c, 0xbc, 0x0a, 0xc3, 0x8c, - 0xbb, 0x0a, 0xc3, 0x8c, 0xbc, 0x0a, 0xc4, 0x8c, 0xbb, 0x0a, 0xc4, 0x8c, - 0xbc, 0x0a, 0xc4, 0x8c, 0xbb, 0x0a, 0xc5, 0x8c, 0xbc, 0x0a, 0xc5, 0x8d, - 0xbf, 0x0a, 0xc5, 0x8c, 0xbc, 0x0a, 0xc6, 0x8d, 0xbf, 0x0a, 0xc6, 0x8c, - 0xbc, 0x0a, 0xc6, 0x8d, 0xbf, 0x0a, 0xc6, 0x8d, 0xbe, 0x0a, 0xc7, 0x8d, - 0xbf, 0x0a, 0xc7, 0x8d, 0xbe, 0x0a, 0xc7, 0x8d, 0xbf, 0x0a, 0xc8, 0x8e, - 0xc1, 0x0a, 0xc8, 0x8d, 0xbf, 0x0a, 0xc8, 0x8e, 0xc1, 0x0a, 0xc9, 0x8d, - 0xbf, 0x0a, 0xc9, 0x8e, 0xc1, 0x0a, 0xc9, 0x8e, 0xc1, 0x0a, 0xc9, 0x8e, - 0xc1, 0x0a, 0xca, 0x8e, 0xc1, 0x0a, 0xca, 0x8e, 0xc1, 0x0a, 0xca, 0x8f, - 0xc4, 0x0a, 0xcb, 0x8f, 0xc5, 0x0a, 0xcb, 0x8f, 0xc4, 0x0a, 0xcb, 0x8f, - 0xc5, 0x0a, 0xcc, 0x8f, 0xc4, 0x0a, 0xcc, 0x8f, 0xc5, 0x0a, 0xcc, 0x8f, - 0xc4, 0x0a, 0xcc, 0x8f, 0xc5, 0x0a, 0xcd, 0x8f, 0xc4, 0x0a, 0xcd, 0x8f, - 0xc5, 0x0a, 0xcd, 0x90, 0xc7, 0x0a, 0xce, 0x8f, 0xc5, 0x0a, 0xce, 0x90, - 0xc7, 0x0a, 0xce, 0x8f, 0xc5, 0x0a, 0xce, 0x90, 0xc7, 0x0a, 0xcf, 0x8f, - 0xc5, 0x0a, 0xcf, 0x90, 0xc7, 0x0a, 0xcf, 0x90, 0xc7, 0x0a, 0xd0, 0x90, - 0xc7, 0x0a, 0xd0, 0x91, 0xca, 0x0a, 0xd0, 0x90, 0xc7, 0x0a, 0xd0, 0x91, - 0xca, 0x0a, 0xd1, 0x90, 0xc7, 0x0a, 0xd1, 0x91, 0xca, 0x0a, 0xd1, 0x90, - 0xc7, 0x0a, 0xd2, 0x91, 0xca, 0x0a, 0xd2, 0x91, 0xca, 0x0a, 0xd2, 0x91, - 0xca, 0x0a, 0xd2, 0x92, 0xcd, 0x0a, 0xd3, 0x92, 0xcd, 0x0a, 0xd3, 0x92, - 0xcd, 0x0a, 0xd3, 0x92, 0xcd, 0x0a, 0xd4, 0x92, 0xcd, 0x0a, 0xd4, 0x92, - 0xcd, 0x0a, 0xd4, 0x92, 0xcd, 0x0a, 0xd4, 0x92, 0xcd, 0x0a, 0xd5, 0x92, - 0xcd, 0x0a, 0xd5, 0x92, 0xcd, 0x0a, 0xd5, 0x92, 0xcd, 0x0a, 0xd6, 0x92, - 0xcd, 0x0a, 0xd6, 0x93, 0xd0, 0x0a, 0xd6, 0x92, 0xcd, 0x0a, 0xd6, 0x93, - 0xd0, 0x0a, 0xd7, 0x92, 0xcd, 0x0a, 0xd7, 0x93, 0xd0, 0x0a, 0xd7, 0x93, - 0xcf, 0x0a, 0xd7, 0x93, 0xd0, 0x0a, 0xd8, 0x93, 0xcf, 0x0a, 0xd8, 0x93, - 0xd0, 0x0a, 0xd8, 0x94, 0xd2, 0x0a, 0xd9, 0x94, 0xd2, 0x0a, 0xd9, 0x94, - 0xd2, 0x0a, 0xd9, 0x94, 0xd2, 0x0a, 0xd9, 0x94, 0xd2, 0x0a, 0xda, 0x94, - 0xd2, 0x0a, 0xda, 0x94, 0xd2, 0x0a, 0xda, 0x94, 0xd2, 0x0a, 0xda, 0x94, - 0xd2, 0x0a, 0xdb, 0x94, 0xd2, 0x0a, 0xdb, 0x94, 0xd5, 0x0a, 0xdb, 0x94, - 0xd2, 0x0a, 0xdb, 0x94, 0xd5, 0x0a, 0xdc, 0x94, 0xd2, 0x0a, 0xdc, 0x94, - 0xd5, 0x0a, 0xdc, 0x94, 0xd2, 0x0a, 0xdd, 0x94, 0xd5, 0x0a, 0xdd, 0x94, - 0xd5, 0x0a, 0xdd, 0x94, 0xd5, 0x0a, 0xdd, 0x95, 0xd7, 0x0a, 0xde, 0x94, - 0xd5, 0x0a, 0xde, 0x95, 0xd7, 0x0a, 0xde, 0x94, 0xd5, 0x0a, 0xde, 0x95, - 0xd7, 0x0a, 0xdf, 0x94, 0xd5, 0x0a, 0xdf, 0x95, 0xd7, 0x0a, 0xdf, 0x95, - 0xd7, 0x0a, 0xdf, 0x95, 0xd7, 0x0a, 0xe0, 0x95, 0xd7, 0x0a, 0xe0, 0x95, - 0xd7, 0x0a, 0xe0, 0x96, 0xda, 0x0a, 0xe1, 0x96, 0xda, 0x0a, 0xe1, 0x96, - 0xda, 0x0a, 0xe1, 0x96, 0xda, 0x0a, 0xe1, 0x96, 0xda, 0x0a, 0xe2, 0x96, - 0xda, 0x0a, 0xe2, 0x96, 0xda, 0x0a, 0xe2, 0x96, 0xda, 0x0a, 0xe2, 0x96, - 0xda, 0x0a, 0xe3, 0x96, 0xda, 0x0a, 0xe3, 0x97, 0xdd, 0x0a, 0xe3, 0x96, - 0xda, 0x0a, 0xe3, 0x97, 0xdd, 0x0a, 0xe4, 0x96, 0xda, 0x0a, 0xe4, 0x97, - 0xdd, 0x0a, 0xe4, 0x96, 0xda, 0x0a, 0xe4, 0x97, 0xdd, 0x0a, 0xe5, 0x97, - 0xdc, 0x0a, 0xe5, 0x97, 0xdd, 0x0a, 0xe5, 0x98, 0xdf, 0x0a, 0xe5, 0x97, - 0xdd, 0x0a, 0xe6, 0x98, 0xdf, 0x0a, 0xe6, 0x97, 0xdd, 0x0a, 0xe6, 0x98, - 0xdf, 0x0a, 0xe6, 0x97, 0xdd, 0x0a, 0xe7, 0x98, 0xdf, 0x0a, 0xe7, 0x98, - 0xdf, 0x0a, 0xe7, 0x98, 0xdf, 0x0a, 0xe7, 0x99, 0xe1, 0x0a, 0xe8, 0x99, - 0xe2, 0x0a, 0xe8, 0x99, 0xe1, 0x0a, 0xe8, 0x99, 0xe2, 0x0a, 0xe8, 0x99, - 0xe1, 0x0a, 0xe9, 0x99, 0xe2, 0x0a, 0xe9, 0x99, 0xe1, 0x0a, 0xe9, 0x99, - 0xe2, 0x0a, 0xe9, 0x99, 0xe1, 0x0a, 0xea, 0x99, 0xe2, 0x0a, 0xea, 0x9a, - 0xe4, 0x0a, 0xea, 0x99, 0xe2, 0x0a, 0xea, 0x9a, 0xe4, 0x0a, 0xeb, 0x99, - 0xe2, 0x0a, 0xeb, 0x9a, 0xe4, 0x0a, 0xeb, 0x99, 0xe2, 0x0a, 0xeb, 0x9a, - 0xe4, 0x0a, 0xec, 0x9a, 0xe4, 0x0a, 0xec, 0x9a, 0xe4, 0x0a, 0xec, 0x9a, - 0xe6, 0x0a, 0xec, 0x9a, 0xe4, 0x0a, 0xec, 0x9a, 0xe6, 0x0a, 0xed, 0x9a, - 0xe4, 0x0a, 0xed, 0x9a, 0xe6, 0x0a, 0xed, 0x9a, 0xe4, 0x0a, 0xed, 0x9a, - 0xe6, 0x0a, 0xee, 0x9a, 0xe4, 0x0a, 0xee, 0x9a, 0xe6, 0x0a, 0xee, 0x9a, - 0xe6, 0x0a, 0xee, 0x9a, 0xe6, 0x0a, 0xef, 0x9b, 0xe8, 0x0a, 0xef, 0x9b, - 0xe9, 0x0a, 0xef, 0x9b, 0xe8, 0x0a, 0xef, 0x9b, 0xe9, 0x0a, 0xf0, 0x9b, - 0xe8, 0x0a, 0xf0, 0x9b, 0xe9, 0x0a, 0xf0, 0x9b, 0xe8, 0x0a, 0xf0, 0x9b, - 0xe9, 0x0a, 0xf1, 0x9b, 0xe8, 0x0a, 0xf1, 0x9b, 0xe9, 0x0a, 0xf1, 0x9c, - 0xeb, 0x0a, 0xf1, 0x9b, 0xe9, 0x0a, 0xf2, 0x9c, 0xeb, 0x0a, 0xf2, 0x9b, - 0xe9, 0x0a, 0xf2, 0x9c, 0xeb, 0x0a, 0xf2, 0x9b, 0xe9, 0x0a, 0xf2, 0x9c, - 0xeb, 0x0a, 0xf3, 0x9c, 0xeb, 0x0a, 0xf3, 0x9c, 0xeb, 0x0a, 0xf3, 0x9d, - 0xed, 0x0a, 0xf3, 0x9d, 0xed, 0x0a, 0xf4, 0x9d, 0xed, 0x0a, 0xf4, 0x9d, - 0xed, 0x0a, 0xf4, 0x9d, 0xed, 0x0a, 0xf4, 0x9d, 0xed, 0x0a, 0xf5, 0x9d, - 0xed, 0x0a, 0xf5, 0x9d, 0xed, 0x0a, 0xf5, 0x9d, 0xed, 0x0a, 0xf5, 0x9d, - 0xed, 0x0a, 0xf5, 0x9e, 0xef, 0x0a, 0xf6, 0x9d, 0xed, 0x0a, 0xf6, 0x9e, - 0xef, 0x0a, 0xf6, 0x9d, 0xed, 0x0a, 0xf6, 0x9e, 0xef, 0x0a, 0xf7, 0x9d, - 0xed, 0x0a, 0xf7, 0x9e, 0xef, 0x0a, 0xf7, 0x9d, 0xed, 0x0a, 0xf7, 0x9e, - 0xef, 0x0a, 0xf8, 0x9e, 0xef, 0x0a, 0xf8, 0x9e, 0xef, 0x0a, 0xf8, 0x9f, - 0xf2, 0x0a, 0xf8, 0x9e, 0xef, 0x0a, 0xf8, 0x9f, 0xf2, 0x0a, 0xf9, 0x9e, - 0xef, 0x0a, 0xf9, 0x9f, 0xf2, 0x0a, 0xf9, 0x9e, 0xef, 0x0a, 0xf9, 0x9f, - 0xf2, 0x0a, 0xfa, 0x9f, 0xf1, 0x0a, 0xfa, 0x9f, 0xf2, 0x0a, 0xfa, 0x9f, - 0xf4, 0x0a, 0xfa, 0x9f, 0xf4, 0x0a, 0xfa, 0x9f, 0xf4, 0x0a, 0xfb, 0x9f, - 0xf4, 0x0a, 0xfb, 0x9f, 0xf4, 0x0a, 0xfb, 0x9f, 0xf4, 0x0a, 0xfb, 0x9f, - 0xf4, 0x0a, 0xfc, 0x9f, 0xf4, 0x0a, 0xfc, 0x9f, 0xf4, 0x0a, 0xfc, 0x9f, - 0xf4, 0x0a, 0xfc, 0xa0, 0xf6, 0x0a, 0xfc, 0x9f, 0xf4, 0x0a, 0xfd, 0xa0, - 0xf6, 0x0a, 0xfd, 0x9f, 0xf4, 0x0a, 0xfd, 0xa0, 0xf6, 0x0a, 0xfd, 0x9f, - 0xf4, 0x0a, 0xfe, 0xa0, 0xf6, 0x0a, 0xfe, 0xa0, 0xf6, 0x0a, 0xfe, 0xa0, - 0xf6, 0x0a, 0xfe, 0xa0, 0xf6, 0x0a, 0xfe, 0xa0, 0xf6, 0x0a, 0xff, 0xa0, - 0xf6, 0x0a, 0xff, 0xa0, 0xf6, 0x0a, 0x03, 0x84, 0x9b, 0x0b, 0x0a, 0x84, - 0x9b, 0x0b, 0x0f, 0x84, 0x9b, 0x0b, 0x14, 0x84, 0x9b, 0x0b, 0x17, 0x84, - 0x9b, 0x0b, 0x1b, 0x84, 0x9b, 0x0b, 0x1e, 0x84, 0x9b, 0x0b, 0x20, 0x84, - 0x9c, 0x0b, 0x23, 0x84, 0x9b, 0x0b, 0x25, 0x84, 0x9c, 0x0b, 0x27, 0x84, - 0x9b, 0x0b, 0x29, 0x84, 0x9c, 0x0b, 0x2b, 0x84, 0x9b, 0x0b, 0x2d, 0x84, - 0x9c, 0x0b, 0x2f, 0x84, 0x9b, 0x0b, 0x31, 0x84, 0x9c, 0x0b, 0x32, 0x84, - 0x9b, 0x0b, 0x34, 0x84, 0x9c, 0x0b, 0x35, 0x84, 0x9b, 0x0b, 0x37, 0x84, - 0x9c, 0x0b, 0x38, 0x84, 0x9b, 0x0b, 0x3a, 0x84, 0x9c, 0x0b, 0x3b, 0x84, - 0x9b, 0x0b, 0x3c, 0x84, 0x9c, 0x0b, 0x3e, 0x84, 0x9b, 0x0b, 0x3f, 0x84, - 0x9c, 0x0b, 0x40, 0x84, 0x9b, 0x0b, 0x42, 0x84, 0x9c, 0x0b, 0x43, 0x84, - 0x9b, 0x0b, 0x44, 0x84, 0x9c, 0x0b, 0x45, 0x84, 0x9b, 0x0b, 0x46, 0x84, - 0x9c, 0x0b, 0x47, 0x84, 0x9b, 0x0b, 0x48, 0x84, 0x9c, 0x0b, 0x49, 0x84, - 0x9b, 0x0b, 0x4a, 0x84, 0x9c, 0x0b, 0x4b, 0x84, 0x9b, 0x0b, 0x4c, 0x84, - 0x9c, 0x0b, 0x4d, 0x84, 0x9b, 0x0b, 0x4e, 0x84, 0x9c, 0x0b, 0x4f, 0x84, - 0x9b, 0x0b, 0x50, 0x84, 0x9c, 0x0b, 0x51, 0x84, 0x9b, 0x0b, 0x52, 0x84, - 0x9c, 0x0b, 0x53, 0x84, 0x9b, 0x0b, 0x54, 0x84, 0x9c, 0x0b, 0x55, 0x84, - 0x9b, 0x0b, 0x56, 0x84, 0x9c, 0x0b, 0x57, 0x84, 0x9b, 0x0b, 0x58, 0x84, - 0x9c, 0x0b, 0x58, 0x84, 0x9b, 0x0b, 0x59, 0x84, 0x9c, 0x0b, 0x5a, 0x84, - 0x9b, 0x0b, 0x5b, 0x84, 0x9c, 0x0b, 0x5c, 0x84, 0x9b, 0x0b, 0x5d, 0x84, - 0x9c, 0x0b, 0x5d, 0x84, 0x9b, 0x0b, 0x5e, 0x84, 0x9c, 0x0b, 0x5f, 0x84, - 0x9b, 0x0b, 0x60, 0x84, 0x9c, 0x0b, 0x60, 0x84, 0x9b, 0x0b, 0x61, 0x84, - 0x9c, 0x0b, 0x62, 0x84, 0x9b, 0x0b, 0x63, 0x84, 0x9c, 0x0b, 0x63, 0x84, - 0x9b, 0x0b, 0x64, 0x84, 0x9c, 0x0b, 0x65, 0x84, 0x9b, 0x0b, 0x66, 0x84, - 0x9c, 0x0b, 0x66, 0x84, 0x9b, 0x0b, 0x67, 0x84, 0x9c, 0x0b, 0x68, 0x84, - 0x9b, 0x0b, 0x68, 0x84, 0x9c, 0x0b, 0x69, 0x84, 0x9b, 0x0b, 0x6a, 0x84, - 0x9c, 0x0b, 0x6a, 0x84, 0x9b, 0x0b, 0x6b, 0x84, 0x9c, 0x0b, 0x6c, 0x84, - 0x9b, 0x0b, 0x6c, 0x84, 0x9c, 0x0b, 0x6d, 0x84, 0x9b, 0x0b, 0x6e, 0x84, - 0x9c, 0x0b, 0x6e, 0x84, 0x9b, 0x0b, 0x6f, 0x84, 0x9c, 0x0b, 0x70, 0x84, - 0x9b, 0x0b, 0x70, 0x84, 0x9c, 0x0b, 0x71, 0x84, 0x9b, 0x0b, 0x72, 0x84, - 0x9c, 0x0b, 0x72, 0x84, 0x9b, 0x0b, 0x73, 0x84, 0x9c, 0x0b, 0x73, 0x84, - 0x9b, 0x0b, 0x74, 0x84, 0x9c, 0x0b, 0x75, 0x84, 0x9b, 0x0b, 0x75, 0x84, - 0x9c, 0x0b, 0x76, 0x84, 0x9b, 0x0b, 0x76, 0x84, 0x9c, 0x0b, 0x77, 0x84, - 0x9b, 0x0b, 0x78, 0x84, 0x9c, 0x0b, 0x78, 0x84, 0x9b, 0x0b, 0x79, 0x84, - 0x9c, 0x0b, 0x79, 0x84, 0x9b, 0x0b, 0x7a, 0x84, 0x9c, 0x0b, 0x7a, 0x84, - 0x9b, 0x0b, 0x7b, 0x84, 0x9c, 0x0b, 0x7c, 0x84, 0x9b, 0x0b, 0x7c, 0x84, - 0x9c, 0x0b, 0x7d, 0x84, 0x9b, 0x0b, 0x7d, 0x84, 0x9c, 0x0b, 0x7e, 0x84, - 0x9b, 0x0b, 0x7e, 0x84, 0x9c, 0x0b, 0x7f, 0x84, 0x9b, 0x0b, 0x7f, 0x84, - 0x9c, 0x0b, 0x80, 0x84, 0x9b, 0x0b, 0x81, 0x84, 0x9c, 0x0b, 0x81, 0x84, - 0x9b, 0x0b, 0x82, 0x84, 0x9c, 0x0b, 0x82, 0x84, 0x9b, 0x0b, 0x83, 0x84, - 0x9c, 0x0b, 0x83, 0x84, 0x9b, 0x0b, 0x84, 0x84, 0x9c, 0x0b, 0x84, 0x84, - 0x9b, 0x0b, 0x85, 0x84, 0x9c, 0x0b, 0x85, 0x84, 0x9b, 0x0b, 0x86, 0x84, - 0x9c, 0x0b, 0x86, 0x84, 0x9b, 0x0b, 0x87, 0x84, 0x9c, 0x0b, 0x87, 0x84, - 0x9b, 0x0b, 0x88, 0x84, 0x9c, 0x0b, 0x88, 0x84, 0x9b, 0x0b, 0x89, 0x84, - 0x9c, 0x0b, 0x89, 0x84, 0x9b, 0x0b, 0x8a, 0x84, 0x9c, 0x0b, 0x8a, 0x84, - 0x9b, 0x0b, 0x8b, 0x84, 0x9c, 0x0b, 0x8b, 0x84, 0x9b, 0x0b, 0x8c, 0x84, - 0x9c, 0x0b, 0x8c, 0x84, 0x9b, 0x0b, 0x8d, 0x84, 0x9c, 0x0b, 0x8d, 0x84, - 0x9b, 0x0b, 0x8e, 0x84, 0x9c, 0x0b, 0x8e, 0x84, 0x9b, 0x0b, 0x8e, 0x84, - 0x9c, 0x0b, 0x8f, 0x84, 0x9b, 0x0b, 0x8f, 0x84, 0x9c, 0x0b, 0x90, 0x84, - 0x9b, 0x0b, 0x90, 0x84, 0x9c, 0x0b, 0x91, 0x84, 0x9b, 0x0b, 0x91, 0x84, - 0x9c, 0x0b, 0x92, 0x84, 0x9b, 0x0b, 0x92, 0x84, 0x9c, 0x0b, 0x93, 0x84, - 0x9b, 0x0b, 0x93, 0x84, 0x9c, 0x0b, 0x94, 0x84, 0x9b, 0x0b, 0x94, 0x84, - 0x9c, 0x0b, 0x94, 0x84, 0x9b, 0x0b, 0x95, 0x84, 0x9c, 0x0b, 0x95, 0x84, - 0x9b, 0x0b, 0x96, 0x84, 0x9c, 0x0b, 0x96, 0x84, 0x9b, 0x0b, 0x97, 0x84, - 0x9c, 0x0b, 0x97, 0x84, 0x9b, 0x0b, 0x98, 0x84, 0x9c, 0x0b, 0x98, 0x84, - 0x9b, 0x0b, 0x98, 0x84, 0x9c, 0x0b, 0x99, 0x84, 0x9b, 0x0b, 0x99, 0x84, - 0x9c, 0x0b, 0x9a, 0x84, 0x9b, 0x0b, 0x9a, 0x84, 0x9c, 0x0b, 0x9a, 0x84, - 0x9b, 0x0b, 0x9b, 0x84, 0x9c, 0x0b, 0x9b, 0x84, 0x9b, 0x0b, 0x9c, 0x84, - 0x9c, 0x0b, 0x9c, 0x84, 0x9c, 0x0b, 0x9d, 0x84, 0x9d, 0x0b, 0x9d, 0x84, - 0x9d, 0x0b, 0x9d, 0x84, 0x9d, 0x0b, 0x9e, 0x84, 0x9e, 0x0b, 0x9e, 0x84, - 0x9e, 0x0b, 0x9f, 0x84, 0x9f, 0x0b, 0x9f, 0x84, 0x9e, 0x0b, 0x9f, 0x84, - 0x9f, 0x0b, 0xa0, 0x84, 0x9e, 0x0b, 0xa0, 0x84, 0x9f, 0x0b, 0xa1, 0x84, - 0x9e, 0x0b, 0xa1, 0x84, 0x9f, 0x0b, 0xa1, 0x84, 0x9e, 0x0b, 0xa2, 0x84, - 0x9f, 0x0b, 0xa2, 0x84, 0x9e, 0x0b, 0xa3, 0x84, 0x9f, 0x0b, 0xa3, 0x84, - 0x9e, 0x0b, 0xa3, 0x84, 0x9f, 0x0b, 0xa4, 0x84, 0x9e, 0x0b, 0xa4, 0x84, - 0x9f, 0x0b, 0xa5, 0x84, 0x9e, 0x0b, 0xa5, 0x84, 0x9f, 0x0b, 0xa5, 0x84, - 0x9e, 0x0b, 0xa6, 0x84, 0x9f, 0x0b, 0xa6, 0x84, 0x9e, 0x0b, 0xa6, 0x84, - 0x9f, 0x0b, 0xa7, 0x84, 0x9e, 0x0b, 0xa7, 0x84, 0x9f, 0x0b, 0xa8, 0x84, - 0x9e, 0x0b, 0xa8, 0x84, 0x9f, 0x0b, 0xa8, 0x85, 0xa2, 0x0b, 0xa9, 0x84, - 0x9f, 0x0b, 0xa9, 0x85, 0xa2, 0x0b, 0xaa, 0x84, 0x9f, 0x0b, 0xaa, 0x85, - 0xa2, 0x0b, 0xaa, 0x85, 0xa2, 0x0b, 0xab, 0x85, 0xa2, 0x0b, 0xab, 0x85, - 0xa2, 0x0b, 0xab, 0x85, 0xa2, 0x0b, 0xac, 0x86, 0xa6, 0x0b, 0xac, 0x86, - 0xa6, 0x0b, 0xac, 0x86, 0xa6, 0x0b, 0xad, 0x86, 0xa6, 0x0b, 0xad, 0x86, - 0xa6, 0x0b, 0xae, 0x86, 0xa6, 0x0b, 0xae, 0x86, 0xa6, 0x0b, 0xae, 0x86, - 0xa6, 0x0b, 0xaf, 0x86, 0xa6, 0x0b, 0xaf, 0x86, 0xa6, 0x0b, 0xaf, 0x87, - 0xaa, 0x0b, 0xb0, 0x86, 0xa6, 0x0b, 0xb0, 0x87, 0xaa, 0x0b, 0xb0, 0x86, - 0xa6, 0x0b, 0xb1, 0x87, 0xaa, 0x0b, 0xb1, 0x87, 0xa9, 0x0b, 0xb2, 0x87, - 0xaa, 0x0b, 0xb2, 0x87, 0xa9, 0x0b, 0xb2, 0x87, 0xaa, 0x0b, 0xb3, 0x88, - 0xad, 0x0b, 0xb3, 0x88, 0xad, 0x0b, 0xb3, 0x88, 0xad, 0x0b, 0xb4, 0x88, - 0xad, 0x0b, 0xb4, 0x88, 0xad, 0x0b, 0xb4, 0x88, 0xad, 0x0b, 0xb5, 0x88, - 0xad, 0x0b, 0xb5, 0x88, 0xad, 0x0b, 0xb5, 0x88, 0xad, 0x0b, 0xb6, 0x88, - 0xad, 0x0b, 0xb6, 0x89, 0xb0, 0x0b, 0xb6, 0x88, 0xad, 0x0b, 0xb7, 0x89, - 0xb0, 0x0b, 0xb7, 0x88, 0xad, 0x0b, 0xb7, 0x89, 0xb0, 0x0b, 0xb8, 0x89, - 0xb2, 0x0b, 0xb8, 0x89, 0xb0, 0x0b, 0xb8, 0x89, 0xb2, 0x0b, 0xb9, 0x89, - 0xb0, 0x0b, 0xb9, 0x89, 0xb2, 0x0b, 0xb9, 0x89, 0xb0, 0x0b, 0xba, 0x89, - 0xb2, 0x0b, 0xba, 0x89, 0xb0, 0x0b, 0xba, 0x89, 0xb2, 0x0b, 0xbb, 0x89, - 0xb2, 0x0b, 0xbb, 0x89, 0xb2, 0x0b, 0xbb, 0x89, 0xb2, 0x0b, 0xbc, 0x89, - 0xb2, 0x0b, 0xbc, 0x8a, 0xb3, 0x0b, 0xbc, 0x8a, 0xb4, 0x0b, 0xbd, 0x8b, - 0xb7, 0x0b, 0xbd, 0x8b, 0xb7, 0x0b, 0xbd, 0x8b, 0xb7, 0x0b, 0xbe, 0x8b, - 0xb7, 0x0b, 0xbe, 0x8b, 0xb7, 0x0b, 0xbe, 0x8b, 0xb7, 0x0b, 0xbf, 0x8b, - 0xb7, 0x0b, 0xbf, 0x8b, 0xb7, 0x0b, 0xbf, 0x8b, 0xb7, 0x0b, 0xc0, 0x8b, - 0xb7, 0x0b, 0xc0, 0x8c, 0xba, 0x0b, 0xc0, 0x8b, 0xb7, 0x0b, 0xc1, 0x8c, - 0xba, 0x0b, 0xc1, 0x8b, 0xb7, 0x0b, 0xc1, 0x8c, 0xba, 0x0b, 0xc1, 0x8c, - 0xba, 0x0b, 0xc2, 0x8c, 0xba, 0x0b, 0xc2, 0x8c, 0xba, 0x0b, 0xc2, 0x8c, - 0xba, 0x0b, 0xc3, 0x8d, 0xbd, 0x0b, 0xc3, 0x8c, 0xba, 0x0b, 0xc3, 0x8d, - 0xbd, 0x0b, 0xc4, 0x8c, 0xba, 0x0b, 0xc4, 0x8d, 0xbd, 0x0b, 0xc4, 0x8c, - 0xba, 0x0b, 0xc5, 0x8d, 0xbd, 0x0b, 0xc5, 0x8d, 0xbd, 0x0b, 0xc5, 0x8d, - 0xbd, 0x0b, 0xc6, 0x8d, 0xbd, 0x0b, 0xc6, 0x8d, 0xbd, 0x0b, 0xc6, 0x8e, - 0xc0, 0x0b, 0xc6, 0x8e, 0xc0, 0x0b, 0xc7, 0x8e, 0xc0, 0x0b, 0xc7, 0x8e, - 0xc0, 0x0b, 0xc7, 0x8e, 0xc0, 0x0b, 0xc8, 0x8e, 0xc0, 0x0b, 0xc8, 0x8e, - 0xc0, 0x0b, 0xc8, 0x8e, 0xc0, 0x0b, 0xc9, 0x8e, 0xc0, 0x0b, 0xc9, 0x8e, - 0xc0, 0x0b, 0xc9, 0x8e, 0xc3, 0x0b, 0xc9, 0x8e, 0xc0, 0x0b, 0xca, 0x8e, - 0xc3, 0x0b, 0xca, 0x8e, 0xc0, 0x0b, 0xca, 0x8e, 0xc3, 0x0b, 0xcb, 0x8e, - 0xc3, 0x0b, 0xcb, 0x8e, 0xc3, 0x0b, 0xcb, 0x8e, 0xc3, 0x0b, 0xcc, 0x8e, - 0xc3, 0x0b, 0xcc, 0x8f, 0xc6, 0x0b, 0xcc, 0x8e, 0xc3, 0x0b, 0xcc, 0x8f, - 0xc6, 0x0b, 0xcd, 0x8e, 0xc3, 0x0b, 0xcd, 0x8f, 0xc6, 0x0b, 0xcd, 0x8f, - 0xc6, 0x0b, 0xce, 0x8f, 0xc6, 0x0b, 0xce, 0x8f, 0xc6, 0x0b, 0xce, 0x8f, - 0xc6, 0x0b, 0xce, 0x90, 0xc9, 0x0b, 0xcf, 0x90, 0xc9, 0x0b, 0xcf, 0x90, - 0xc9, 0x0b, 0xcf, 0x90, 0xc9, 0x0b, 0xd0, 0x90, 0xc9, 0x0b, 0xd0, 0x90, - 0xc9, 0x0b, 0xd0, 0x90, 0xc9, 0x0b, 0xd0, 0x90, 0xc9, 0x0b, 0xd1, 0x90, - 0xc9, 0x0b, 0xd1, 0x90, 0xc9, 0x0b, 0xd1, 0x91, 0xcc, 0x0b, 0xd2, 0x90, - 0xc9, 0x0b, 0xd2, 0x91, 0xcc, 0x0b, 0xd2, 0x90, 0xc9, 0x0b, 0xd2, 0x91, - 0xcc, 0x0b, 0xd3, 0x90, 0xc9, 0x0b, 0xd3, 0x91, 0xcc, 0x0b, 0xd3, 0x91, - 0xcb, 0x0b, 0xd4, 0x91, 0xcc, 0x0b, 0xd4, 0x92, 0xce, 0x0b, 0xd4, 0x92, - 0xce, 0x0b, 0xd4, 0x92, 0xce, 0x0b, 0xd5, 0x92, 0xce, 0x0b, 0xd5, 0x92, - 0xce, 0x0b, 0xd5, 0x92, 0xce, 0x0b, 0xd6, 0x92, 0xce, 0x0b, 0xd6, 0x92, - 0xce, 0x0b, 0xd6, 0x92, 0xce, 0x0b, 0xd6, 0x92, 0xce, 0x0b, 0xd7, 0x92, - 0xce, 0x0b, 0xd7, 0x92, 0xce, 0x0b, 0xd7, 0x93, 0xd1, 0x0b, 0xd7, 0x92, - 0xce, 0x0b, 0xd8, 0x93, 0xd1, 0x0b, 0xd8, 0x92, 0xce, 0x0b, 0xd8, 0x93, - 0xd1, 0x0b, 0xd9, 0x93, 0xd1, 0x0b, 0xd9, 0x93, 0xd1, 0x0b, 0xd9, 0x93, - 0xd1, 0x0b, 0xd9, 0x93, 0xd1, 0x0b, 0xda, 0x94, 0xd4, 0x0b, 0xda, 0x93, - 0xd1, 0x0b, 0xda, 0x94, 0xd4, 0x0b, 0xda, 0x93, 0xd1, 0x0b, 0xdb, 0x94, - 0xd4, 0x0b, 0xdb, 0x93, 0xd1, 0x0b, 0xdb, 0x94, 0xd4, 0x0b, 0xdb, 0x94, - 0xd3, 0x0b, 0xdc, 0x94, 0xd4, 0x0b, 0xdc, 0x95, 0xd6, 0x0b, 0xdc, 0x95, - 0xd6, 0x0b, 0xdd, 0x95, 0xd6, 0x0b, 0xdd, 0x95, 0xd6, 0x0b, 0xdd, 0x95, - 0xd6, 0x0b, 0xdd, 0x95, 0xd6, 0x0b, 0xde, 0x95, 0xd6, 0x0b, 0xde, 0x95, - 0xd6, 0x0b, 0xde, 0x95, 0xd6, 0x0b, 0xde, 0x95, 0xd6, 0x0b, 0xdf, 0x96, - 0xd9, 0x0b, 0xdf, 0x95, 0xd6, 0x0b, 0xdf, 0x96, 0xd9, 0x0b, 0xdf, 0x95, - 0xd6, 0x0b, 0xe0, 0x96, 0xd9, 0x0b, 0xe0, 0x95, 0xd6, 0x0b, 0xe0, 0x96, - 0xd9, 0x0b, 0xe1, 0x96, 0xd9, 0x0b, 0xe1, 0x96, 0xd9, 0x0b, 0xe1, 0x96, - 0xd9, 0x0b, 0xe1, 0x96, 0xd9, 0x0b, 0xe2, 0x97, 0xdb, 0x0b, 0xe2, 0x96, - 0xd9, 0x0b, 0xe2, 0x97, 0xdb, 0x0b, 0xe2, 0x96, 0xd9, 0x0b, 0xe3, 0x97, - 0xdb, 0x0b, 0xe3, 0x97, 0xdb, 0x0b, 0xe3, 0x97, 0xdb, 0x0b, 0xe3, 0x97, - 0xdb, 0x0b, 0xe4, 0x97, 0xdb, 0x0b, 0xe4, 0x98, 0xde, 0x0b, 0xe4, 0x98, - 0xde, 0x0b, 0xe4, 0x98, 0xde, 0x0b, 0xe5, 0x98, 0xde, 0x0b, 0xe5, 0x98, - 0xde, 0x0b, 0xe5, 0x98, 0xde, 0x0b, 0xe5, 0x98, 0xde, 0x0b, 0xe6, 0x98, - 0xde, 0x0b, 0xe6, 0x98, 0xde, 0x0b, 0xe6, 0x98, 0xde, 0x0b, 0xe6, 0x98, - 0xe0, 0x0b, 0xe7, 0x98, 0xde, 0x0b, 0xe7, 0x98, 0xe0, 0x0b, 0xe7, 0x98, - 0xde, 0x0b, 0xe7, 0x98, 0xe0, 0x0b, 0xe8, 0x98, 0xdf, 0x0b, 0xe8, 0x98, - 0xe0, 0x0b, 0xe8, 0x98, 0xdf, 0x0b, 0xe8, 0x98, 0xe0, 0x0b, 0xe9, 0x99, - 0xe3, 0x0b, 0xe9, 0x98, 0xe0, 0x0b, 0xe9, 0x99, 0xe3, 0x0b, 0xe9, 0x98, - 0xe0, 0x0b, 0xea, 0x99, 0xe3, 0x0b, 0xea, 0x98, 0xe0, 0x0b, 0xea, 0x99, - 0xe3, 0x0b, 0xea, 0x99, 0xe2, 0x0b, 0xeb, 0x99, 0xe3, 0x0b, 0xeb, 0x9a, - 0xe5, 0x0b, 0xeb, 0x9a, 0xe5, 0x0b, 0xeb, 0x9a, 0xe5, 0x0b, 0xec, 0x9a, - 0xe5, 0x0b, 0xec, 0x9a, 0xe5, 0x0b, 0xec, 0x9a, 0xe5, 0x0b, 0xec, 0x9a, - 0xe5, 0x0b, 0xec, 0x9a, 0xe5, 0x0b, 0xed, 0x9a, 0xe5, 0x0b, 0xed, 0x9a, - 0xe5, 0x0b, 0xed, 0x9b, 0xe7, 0x0b, 0xed, 0x9a, 0xe5, 0x0b, 0xee, 0x9b, - 0xe7, 0x0b, 0xee, 0x9a, 0xe5, 0x0b, 0xee, 0x9b, 0xe7, 0x0b, 0xee, 0x9a, - 0xe5, 0x0b, 0xef, 0x9b, 0xe7, 0x0b, 0xef, 0x9a, 0xe5, 0x0b, 0xef, 0x9b, - 0xe7, 0x0b, 0xef, 0x9b, 0xe7, 0x0b, 0xf0, 0x9b, 0xe7, 0x0b, 0xf0, 0x9c, - 0xea, 0x0b, 0xf0, 0x9c, 0xea, 0x0b, 0xf0, 0x9c, 0xea, 0x0b, 0xf1, 0x9c, - 0xea, 0x0b, 0xf1, 0x9c, 0xea, 0x0b, 0xf1, 0x9c, 0xea, 0x0b, 0xf1, 0x9c, - 0xea, 0x0b, 0xf2, 0x9c, 0xea, 0x0b, 0xf2, 0x9c, 0xea, 0x0b, 0xf2, 0x9c, - 0xea, 0x0b, 0xf2, 0x9d, 0xec, 0x0b, 0xf2, 0x9c, 0xea, 0x0b, 0xf3, 0x9d, - 0xec, 0x0b, 0xf3, 0x9c, 0xea, 0x0b, 0xf3, 0x9d, 0xec, 0x0b, 0xf3, 0x9c, - 0xea, 0x0b, 0xf4, 0x9d, 0xec, 0x0b, 0xf4, 0x9d, 0xec, 0x0b, 0xf4, 0x9d, - 0xec, 0x0b, 0xf4, 0x9d, 0xee, 0x0b, 0xf5, 0x9d, 0xec, 0x0b, 0xf5, 0x9d, - 0xee, 0x0b, 0xf5, 0x9d, 0xec, 0x0b, 0xf5, 0x9d, 0xee, 0x0b, 0xf5, 0x9d, - 0xec, 0x0b, 0xf6, 0x9d, 0xee, 0x0b, 0xf6, 0x9d, 0xee, 0x0b, 0xf6, 0x9d, - 0xee, 0x0b, 0xf6, 0x9e, 0xf0, 0x0b, 0xf7, 0x9e, 0xf1, 0x0b, 0xf7, 0x9e, - 0xf0, 0x0b, 0xf7, 0x9e, 0xf1, 0x0b, 0xf7, 0x9e, 0xf0, 0x0b, 0xf8, 0x9e, - 0xf1, 0x0b, 0xf8, 0x9e, 0xf0, 0x0b, 0xf8, 0x9e, 0xf1, 0x0b, 0xf8, 0x9e, - 0xf0, 0x0b, 0xf8, 0x9e, 0xf1, 0x0b, 0xf9, 0x9e, 0xf0, 0x0b, 0xf9, 0x9e, - 0xf1, 0x0b, 0xf9, 0x9f, 0xf3, 0x0b, 0xf9, 0x9e, 0xf1, 0x0b, 0xfa, 0x9f, - 0xf3, 0x0b, 0xfa, 0x9e, 0xf1, 0x0b, 0xfa, 0x9f, 0xf3, 0x0b, 0xfa, 0x9e, - 0xf1, 0x0b, 0xfa, 0x9f, 0xf3, 0x0b, 0xfb, 0x9f, 0xf2, 0x0b, 0xfb, 0x9f, - 0xf3, 0x0b, 0xfb, 0xa0, 0xf5, 0x0b, 0xfb, 0x9f, 0xf3, 0x0b, 0xfc, 0xa0, - 0xf5, 0x0b, 0xfc, 0x9f, 0xf3, 0x0b, 0xfc, 0xa0, 0xf5, 0x0b, 0xfc, 0x9f, - 0xf3, 0x0b, 0xfc, 0xa0, 0xf5, 0x0b, 0xfd, 0xa0, 0xf5, 0x0b, 0xfd, 0xa0, - 0xf5, 0x0b, 0xfd, 0xa1, 0xf7, 0x0b, 0xfd, 0xa1, 0xf7, 0x0b, 0xfe, 0xa1, - 0xf7, 0x0b, 0xfe, 0xa1, 0xf7, 0x0b, 0xfe, 0xa1, 0xf7, 0x0b, 0xfe, 0xa1, - 0xf7, 0x0b, 0xfe, 0xa1, 0xf7, 0x0b, 0xff, 0xa1, 0xf7, 0x0b, 0xff, 0xa1, - 0xf7, 0x0b, 0x03, 0x83, 0x9b, 0x0b, 0x0a, 0x83, 0x9b, 0x0b, 0x0f, 0x83, - 0x9b, 0x0b, 0x14, 0x83, 0x9b, 0x0b, 0x17, 0x83, 0x9b, 0x0b, 0x1b, 0x83, - 0x9b, 0x0b, 0x1e, 0x83, 0x9b, 0x0b, 0x20, 0x83, 0x9c, 0x0b, 0x23, 0x83, - 0x9b, 0x0b, 0x25, 0x83, 0x9c, 0x0b, 0x27, 0x83, 0x9b, 0x0b, 0x29, 0x83, - 0x9c, 0x0b, 0x2b, 0x83, 0x9b, 0x0b, 0x2d, 0x83, 0x9c, 0x0b, 0x2f, 0x83, - 0x9b, 0x0b, 0x31, 0x83, 0x9c, 0x0b, 0x32, 0x83, 0x9b, 0x0b, 0x34, 0x83, - 0x9c, 0x0b, 0x35, 0x83, 0x9b, 0x0b, 0x37, 0x83, 0x9c, 0x0b, 0x38, 0x83, - 0x9b, 0x0b, 0x3a, 0x83, 0x9c, 0x0b, 0x3b, 0x83, 0x9b, 0x0b, 0x3c, 0x83, - 0x9c, 0x0b, 0x3e, 0x83, 0x9b, 0x0b, 0x3f, 0x83, 0x9c, 0x0b, 0x40, 0x83, - 0x9b, 0x0b, 0x42, 0x83, 0x9c, 0x0b, 0x43, 0x83, 0x9b, 0x0b, 0x44, 0x83, - 0x9c, 0x0b, 0x45, 0x83, 0x9b, 0x0b, 0x46, 0x83, 0x9c, 0x0b, 0x47, 0x83, - 0x9b, 0x0b, 0x48, 0x83, 0x9c, 0x0b, 0x49, 0x83, 0x9b, 0x0b, 0x4a, 0x83, - 0x9c, 0x0b, 0x4b, 0x83, 0x9b, 0x0b, 0x4c, 0x83, 0x9c, 0x0b, 0x4d, 0x83, - 0x9b, 0x0b, 0x4e, 0x83, 0x9c, 0x0b, 0x4f, 0x83, 0x9b, 0x0b, 0x50, 0x83, - 0x9c, 0x0b, 0x51, 0x83, 0x9b, 0x0b, 0x52, 0x83, 0x9c, 0x0b, 0x53, 0x83, - 0x9b, 0x0b, 0x54, 0x83, 0x9c, 0x0b, 0x55, 0x83, 0x9b, 0x0b, 0x56, 0x83, - 0x9c, 0x0b, 0x57, 0x83, 0x9b, 0x0b, 0x58, 0x83, 0x9c, 0x0b, 0x58, 0x83, - 0x9b, 0x0b, 0x59, 0x83, 0x9c, 0x0b, 0x5a, 0x83, 0x9b, 0x0b, 0x5b, 0x83, - 0x9c, 0x0b, 0x5c, 0x83, 0x9b, 0x0b, 0x5d, 0x83, 0x9c, 0x0b, 0x5d, 0x83, - 0x9b, 0x0b, 0x5e, 0x83, 0x9c, 0x0b, 0x5f, 0x83, 0x9b, 0x0b, 0x60, 0x83, - 0x9c, 0x0b, 0x60, 0x83, 0x9b, 0x0b, 0x61, 0x83, 0x9c, 0x0b, 0x62, 0x83, - 0x9b, 0x0b, 0x63, 0x83, 0x9c, 0x0b, 0x63, 0x83, 0x9b, 0x0b, 0x64, 0x83, - 0x9c, 0x0b, 0x65, 0x83, 0x9b, 0x0b, 0x66, 0x83, 0x9c, 0x0b, 0x66, 0x83, - 0x9b, 0x0b, 0x67, 0x83, 0x9c, 0x0b, 0x68, 0x83, 0x9b, 0x0b, 0x68, 0x83, - 0x9c, 0x0b, 0x69, 0x83, 0x9b, 0x0b, 0x6a, 0x83, 0x9c, 0x0b, 0x6a, 0x83, - 0x9b, 0x0b, 0x6b, 0x83, 0x9c, 0x0b, 0x6c, 0x83, 0x9b, 0x0b, 0x6c, 0x83, - 0x9c, 0x0b, 0x6d, 0x83, 0x9b, 0x0b, 0x6e, 0x83, 0x9c, 0x0b, 0x6e, 0x83, - 0x9b, 0x0b, 0x6f, 0x83, 0x9c, 0x0b, 0x70, 0x83, 0x9b, 0x0b, 0x70, 0x83, - 0x9c, 0x0b, 0x71, 0x83, 0x9b, 0x0b, 0x72, 0x83, 0x9c, 0x0b, 0x72, 0x83, - 0x9b, 0x0b, 0x73, 0x83, 0x9c, 0x0b, 0x73, 0x83, 0x9b, 0x0b, 0x74, 0x83, - 0x9c, 0x0b, 0x75, 0x83, 0x9b, 0x0b, 0x75, 0x83, 0x9c, 0x0b, 0x76, 0x83, - 0x9b, 0x0b, 0x76, 0x83, 0x9c, 0x0b, 0x77, 0x83, 0x9b, 0x0b, 0x78, 0x83, - 0x9c, 0x0b, 0x78, 0x83, 0x9b, 0x0b, 0x79, 0x83, 0x9c, 0x0b, 0x79, 0x83, - 0x9b, 0x0b, 0x7a, 0x83, 0x9c, 0x0b, 0x7a, 0x83, 0x9b, 0x0b, 0x7b, 0x83, - 0x9c, 0x0b, 0x7c, 0x83, 0x9b, 0x0b, 0x7c, 0x83, 0x9c, 0x0b, 0x7d, 0x83, - 0x9b, 0x0b, 0x7d, 0x83, 0x9c, 0x0b, 0x7e, 0x83, 0x9b, 0x0b, 0x7e, 0x83, - 0x9c, 0x0b, 0x7f, 0x83, 0x9b, 0x0b, 0x7f, 0x83, 0x9c, 0x0b, 0x80, 0x83, - 0x9b, 0x0b, 0x81, 0x83, 0x9c, 0x0b, 0x81, 0x83, 0x9b, 0x0b, 0x82, 0x83, - 0x9c, 0x0b, 0x82, 0x83, 0x9b, 0x0b, 0x83, 0x83, 0x9c, 0x0b, 0x83, 0x83, - 0x9b, 0x0b, 0x84, 0x83, 0x9c, 0x0b, 0x84, 0x83, 0x9b, 0x0b, 0x85, 0x83, - 0x9c, 0x0b, 0x85, 0x83, 0x9b, 0x0b, 0x86, 0x83, 0x9c, 0x0b, 0x86, 0x83, - 0x9b, 0x0b, 0x87, 0x83, 0x9c, 0x0b, 0x87, 0x83, 0x9b, 0x0b, 0x88, 0x83, - 0x9c, 0x0b, 0x88, 0x83, 0x9b, 0x0b, 0x89, 0x83, 0x9c, 0x0b, 0x89, 0x83, - 0x9b, 0x0b, 0x8a, 0x83, 0x9c, 0x0b, 0x8a, 0x83, 0x9b, 0x0b, 0x8b, 0x83, - 0x9c, 0x0b, 0x8b, 0x83, 0x9b, 0x0b, 0x8c, 0x83, 0x9c, 0x0b, 0x8c, 0x83, - 0x9b, 0x0b, 0x8d, 0x83, 0x9c, 0x0b, 0x8d, 0x83, 0x9b, 0x0b, 0x8e, 0x83, - 0x9c, 0x0b, 0x8e, 0x83, 0x9b, 0x0b, 0x8e, 0x83, 0x9c, 0x0b, 0x8f, 0x83, - 0x9b, 0x0b, 0x8f, 0x83, 0x9c, 0x0b, 0x90, 0x83, 0x9b, 0x0b, 0x90, 0x83, - 0x9c, 0x0b, 0x91, 0x83, 0x9b, 0x0b, 0x91, 0x83, 0x9c, 0x0b, 0x92, 0x83, - 0x9b, 0x0b, 0x92, 0x83, 0x9c, 0x0b, 0x93, 0x83, 0x9b, 0x0b, 0x93, 0x83, - 0x9c, 0x0b, 0x94, 0x83, 0x9b, 0x0b, 0x94, 0x83, 0x9c, 0x0b, 0x94, 0x83, - 0x9b, 0x0b, 0x95, 0x83, 0x9c, 0x0b, 0x95, 0x83, 0x9b, 0x0b, 0x96, 0x83, - 0x9c, 0x0b, 0x96, 0x83, 0x9b, 0x0b, 0x97, 0x83, 0x9c, 0x0b, 0x97, 0x83, - 0x9b, 0x0b, 0x98, 0x83, 0x9c, 0x0b, 0x98, 0x83, 0x9b, 0x0b, 0x98, 0x83, - 0x9c, 0x0b, 0x99, 0x83, 0x9b, 0x0b, 0x99, 0x83, 0x9c, 0x0b, 0x9a, 0x83, - 0x9b, 0x0b, 0x9a, 0x83, 0x9c, 0x0b, 0x9a, 0x83, 0x9b, 0x0b, 0x9b, 0x83, - 0x9c, 0x0b, 0x9b, 0x83, 0x9b, 0x0b, 0x9c, 0x83, 0x9c, 0x0b, 0x9c, 0x83, - 0x9c, 0x0b, 0x9d, 0x83, 0x9d, 0x0b, 0x9d, 0x83, 0x9c, 0x0b, 0x9d, 0x83, - 0x9d, 0x0b, 0x9e, 0x83, 0x9c, 0x0b, 0x9e, 0x83, 0x9d, 0x0b, 0x9f, 0x83, - 0x9c, 0x0b, 0x9f, 0x83, 0x9d, 0x0b, 0x9f, 0x83, 0x9c, 0x0b, 0xa0, 0x83, - 0x9d, 0x0b, 0xa0, 0x83, 0x9c, 0x0b, 0xa1, 0x83, 0x9d, 0x0b, 0xa1, 0x83, - 0x9c, 0x0b, 0xa1, 0x83, 0x9d, 0x0b, 0xa2, 0x83, 0x9c, 0x0b, 0xa2, 0x83, - 0x9d, 0x0b, 0xa3, 0x83, 0x9c, 0x0b, 0xa3, 0x83, 0x9d, 0x0b, 0xa3, 0x83, - 0x9c, 0x0b, 0xa4, 0x83, 0x9d, 0x0b, 0xa4, 0x83, 0x9c, 0x0b, 0xa5, 0x83, - 0x9d, 0x0b, 0xa5, 0x83, 0x9c, 0x0b, 0xa5, 0x83, 0x9d, 0x0b, 0xa6, 0x83, - 0x9c, 0x0b, 0xa6, 0x83, 0x9d, 0x0b, 0xa6, 0x84, 0xa0, 0x0b, 0xa7, 0x84, - 0xa1, 0x0b, 0xa7, 0x84, 0xa0, 0x0b, 0xa8, 0x84, 0xa1, 0x0b, 0xa8, 0x84, - 0xa0, 0x0b, 0xa8, 0x84, 0xa1, 0x0b, 0xa9, 0x84, 0xa0, 0x0b, 0xa9, 0x84, - 0xa1, 0x0b, 0xaa, 0x84, 0xa0, 0x0b, 0xaa, 0x84, 0xa1, 0x0b, 0xaa, 0x85, - 0xa4, 0x0b, 0xab, 0x84, 0xa1, 0x0b, 0xab, 0x85, 0xa4, 0x0b, 0xab, 0x84, - 0xa1, 0x0b, 0xac, 0x85, 0xa4, 0x0b, 0xac, 0x85, 0xa4, 0x0b, 0xac, 0x85, - 0xa4, 0x0b, 0xad, 0x85, 0xa4, 0x0b, 0xad, 0x85, 0xa4, 0x0b, 0xae, 0x86, - 0xa8, 0x0b, 0xae, 0x85, 0xa4, 0x0b, 0xae, 0x86, 0xa8, 0x0b, 0xaf, 0x85, - 0xa4, 0x0b, 0xaf, 0x86, 0xa8, 0x0b, 0xaf, 0x86, 0xa7, 0x0b, 0xb0, 0x86, - 0xa8, 0x0b, 0xb0, 0x86, 0xa7, 0x0b, 0xb0, 0x86, 0xa8, 0x0b, 0xb1, 0x87, - 0xab, 0x0b, 0xb1, 0x87, 0xab, 0x0b, 0xb2, 0x87, 0xab, 0x0b, 0xb2, 0x87, - 0xab, 0x0b, 0xb2, 0x87, 0xab, 0x0b, 0xb3, 0x87, 0xab, 0x0b, 0xb3, 0x87, - 0xab, 0x0b, 0xb3, 0x87, 0xab, 0x0b, 0xb4, 0x87, 0xab, 0x0b, 0xb4, 0x87, - 0xab, 0x0b, 0xb4, 0x88, 0xaf, 0x0b, 0xb5, 0x87, 0xab, 0x0b, 0xb5, 0x88, - 0xaf, 0x0b, 0xb5, 0x87, 0xab, 0x0b, 0xb6, 0x88, 0xaf, 0x0b, 0xb6, 0x88, - 0xae, 0x0b, 0xb6, 0x88, 0xaf, 0x0b, 0xb7, 0x88, 0xae, 0x0b, 0xb7, 0x88, - 0xaf, 0x0b, 0xb7, 0x89, 0xb2, 0x0b, 0xb8, 0x89, 0xb2, 0x0b, 0xb8, 0x89, - 0xb2, 0x0b, 0xb8, 0x89, 0xb2, 0x0b, 0xb9, 0x89, 0xb2, 0x0b, 0xb9, 0x89, - 0xb2, 0x0b, 0xb9, 0x89, 0xb2, 0x0b, 0xba, 0x89, 0xb2, 0x0b, 0xba, 0x89, - 0xb2, 0x0b, 0xba, 0x89, 0xb2, 0x0b, 0xbb, 0x89, 0xb2, 0x0b, 0xbb, 0x89, - 0xb2, 0x0b, 0xbb, 0x8a, 0xb5, 0x0b, 0xbc, 0x89, 0xb2, 0x0b, 0xbc, 0x8a, - 0xb5, 0x0b, 0xbc, 0x89, 0xb2, 0x0b, 0xbd, 0x8a, 0xb5, 0x0b, 0xbd, 0x8a, - 0xb5, 0x0b, 0xbd, 0x8a, 0xb5, 0x0b, 0xbe, 0x8a, 0xb5, 0x0b, 0xbe, 0x8a, - 0xb5, 0x0b, 0xbe, 0x8b, 0xb8, 0x0b, 0xbf, 0x8a, 0xb5, 0x0b, 0xbf, 0x8b, - 0xb8, 0x0b, 0xbf, 0x8a, 0xb5, 0x0b, 0xc0, 0x8b, 0xb8, 0x0b, 0xc0, 0x8b, - 0xb8, 0x0b, 0xc0, 0x8b, 0xb8, 0x0b, 0xc1, 0x8b, 0xb8, 0x0b, 0xc1, 0x8b, - 0xb8, 0x0b, 0xc1, 0x8c, 0xbb, 0x0b, 0xc1, 0x8c, 0xbc, 0x0b, 0xc2, 0x8c, - 0xbb, 0x0b, 0xc2, 0x8c, 0xbc, 0x0b, 0xc2, 0x8c, 0xbb, 0x0b, 0xc3, 0x8c, - 0xbc, 0x0b, 0xc3, 0x8c, 0xbb, 0x0b, 0xc3, 0x8c, 0xbc, 0x0b, 0xc4, 0x8c, - 0xbb, 0x0b, 0xc4, 0x8c, 0xbc, 0x0b, 0xc4, 0x8d, 0xbf, 0x0b, 0xc5, 0x8c, - 0xbc, 0x0b, 0xc5, 0x8d, 0xbf, 0x0b, 0xc5, 0x8c, 0xbc, 0x0b, 0xc6, 0x8d, - 0xbf, 0x0b, 0xc6, 0x8c, 0xbc, 0x0b, 0xc6, 0x8d, 0xbf, 0x0b, 0xc6, 0x8d, - 0xbe, 0x0b, 0xc7, 0x8d, 0xbf, 0x0b, 0xc7, 0x8d, 0xbe, 0x0b, 0xc7, 0x8d, - 0xbf, 0x0b, 0xc8, 0x8e, 0xc1, 0x0b, 0xc8, 0x8d, 0xbf, 0x0b, 0xc8, 0x8e, - 0xc1, 0x0b, 0xc9, 0x8d, 0xbf, 0x0b, 0xc9, 0x8e, 0xc1, 0x0b, 0xc9, 0x8e, - 0xc1, 0x0b, 0xc9, 0x8e, 0xc1, 0x0b, 0xca, 0x8e, 0xc1, 0x0b, 0xca, 0x8e, - 0xc1, 0x0b, 0xca, 0x8f, 0xc4, 0x0b, 0xcb, 0x8f, 0xc5, 0x0b, 0xcb, 0x8f, - 0xc4, 0x0b, 0xcb, 0x8f, 0xc5, 0x0b, 0xcc, 0x8f, 0xc4, 0x0b, 0xcc, 0x8f, - 0xc5, 0x0b, 0xcc, 0x8f, 0xc4, 0x0b, 0xcc, 0x8f, 0xc5, 0x0b, 0xcd, 0x8f, - 0xc4, 0x0b, 0xcd, 0x8f, 0xc5, 0x0b, 0xcd, 0x90, 0xc7, 0x0b, 0xce, 0x8f, - 0xc5, 0x0b, 0xce, 0x90, 0xc7, 0x0b, 0xce, 0x8f, 0xc5, 0x0b, 0xce, 0x90, - 0xc7, 0x0b, 0xcf, 0x90, 0xc7, 0x0b, 0xcf, 0x90, 0xc7, 0x0b, 0xcf, 0x90, - 0xc7, 0x0b, 0xd0, 0x90, 0xc7, 0x0b, 0xd0, 0x91, 0xca, 0x0b, 0xd0, 0x90, - 0xc7, 0x0b, 0xd0, 0x91, 0xca, 0x0b, 0xd1, 0x90, 0xc7, 0x0b, 0xd1, 0x91, - 0xca, 0x0b, 0xd1, 0x90, 0xc7, 0x0b, 0xd2, 0x91, 0xca, 0x0b, 0xd2, 0x91, - 0xca, 0x0b, 0xd2, 0x91, 0xca, 0x0b, 0xd2, 0x92, 0xcd, 0x0b, 0xd3, 0x92, - 0xcd, 0x0b, 0xd3, 0x92, 0xcd, 0x0b, 0xd3, 0x92, 0xcd, 0x0b, 0xd4, 0x92, - 0xcd, 0x0b, 0xd4, 0x92, 0xcd, 0x0b, 0xd4, 0x92, 0xcd, 0x0b, 0xd4, 0x92, - 0xcd, 0x0b, 0xd5, 0x92, 0xcd, 0x0b, 0xd5, 0x92, 0xcd, 0x0b, 0xd5, 0x93, - 0xd0, 0x0b, 0xd6, 0x92, 0xcd, 0x0b, 0xd6, 0x93, 0xd0, 0x0b, 0xd6, 0x92, - 0xcd, 0x0b, 0xd6, 0x93, 0xd0, 0x0b, 0xd7, 0x92, 0xcd, 0x0b, 0xd7, 0x93, - 0xd0, 0x0b, 0xd7, 0x93, 0xcf, 0x0b, 0xd7, 0x93, 0xd0, 0x0b, 0xd8, 0x93, - 0xcf, 0x0b, 0xd8, 0x93, 0xd0, 0x0b, 0xd8, 0x94, 0xd2, 0x0b, 0xd9, 0x94, - 0xd2, 0x0b, 0xd9, 0x94, 0xd2, 0x0b, 0xd9, 0x94, 0xd2, 0x0b, 0xd9, 0x94, - 0xd2, 0x0b, 0xda, 0x94, 0xd2, 0x0b, 0xda, 0x94, 0xd2, 0x0b, 0xda, 0x94, - 0xd2, 0x0b, 0xda, 0x94, 0xd2, 0x0b, 0xdb, 0x94, 0xd2, 0x0b, 0xdb, 0x94, - 0xd5, 0x0b, 0xdb, 0x94, 0xd2, 0x0b, 0xdb, 0x94, 0xd5, 0x0b, 0xdc, 0x94, - 0xd2, 0x0b, 0xdc, 0x94, 0xd5, 0x0b, 0xdc, 0x94, 0xd2, 0x0b, 0xdd, 0x94, - 0xd5, 0x0b, 0xdd, 0x94, 0xd5, 0x0b, 0xdd, 0x94, 0xd5, 0x0b, 0xdd, 0x95, - 0xd7, 0x0b, 0xde, 0x94, 0xd5, 0x0b, 0xde, 0x95, 0xd7, 0x0b, 0xde, 0x94, - 0xd5, 0x0b, 0xde, 0x95, 0xd7, 0x0b, 0xdf, 0x94, 0xd5, 0x0b, 0xdf, 0x95, - 0xd7, 0x0b, 0xdf, 0x95, 0xd7, 0x0b, 0xdf, 0x95, 0xd7, 0x0b, 0xe0, 0x96, - 0xda, 0x0b, 0xe0, 0x96, 0xda, 0x0b, 0xe0, 0x96, 0xda, 0x0b, 0xe1, 0x96, - 0xda, 0x0b, 0xe1, 0x96, 0xda, 0x0b, 0xe1, 0x96, 0xda, 0x0b, 0xe1, 0x96, - 0xda, 0x0b, 0xe2, 0x96, 0xda, 0x0b, 0xe2, 0x96, 0xda, 0x0b, 0xe2, 0x96, - 0xda, 0x0b, 0xe2, 0x96, 0xda, 0x0b, 0xe3, 0x96, 0xda, 0x0b, 0xe3, 0x97, - 0xdd, 0x0b, 0xe3, 0x96, 0xda, 0x0b, 0xe3, 0x97, 0xdd, 0x0b, 0xe4, 0x96, - 0xda, 0x0b, 0xe4, 0x97, 0xdd, 0x0b, 0xe4, 0x97, 0xdc, 0x0b, 0xe4, 0x97, - 0xdd, 0x0b, 0xe5, 0x97, 0xdc, 0x0b, 0xe5, 0x97, 0xdd, 0x0b, 0xe5, 0x98, - 0xdf, 0x0b, 0xe5, 0x97, 0xdd, 0x0b, 0xe6, 0x98, 0xdf, 0x0b, 0xe6, 0x97, - 0xdd, 0x0b, 0xe6, 0x98, 0xdf, 0x0b, 0xe6, 0x97, 0xdd, 0x0b, 0xe7, 0x98, - 0xdf, 0x0b, 0xe7, 0x98, 0xdf, 0x0b, 0xe7, 0x98, 0xdf, 0x0b, 0xe7, 0x99, - 0xe1, 0x0b, 0xe8, 0x99, 0xe2, 0x0b, 0xe8, 0x99, 0xe1, 0x0b, 0xe8, 0x99, - 0xe2, 0x0b, 0xe8, 0x99, 0xe1, 0x0b, 0xe9, 0x99, 0xe2, 0x0b, 0xe9, 0x99, - 0xe1, 0x0b, 0xe9, 0x99, 0xe2, 0x0b, 0xe9, 0x99, 0xe1, 0x0b, 0xea, 0x99, - 0xe2, 0x0b, 0xea, 0x9a, 0xe4, 0x0b, 0xea, 0x99, 0xe2, 0x0b, 0xea, 0x9a, - 0xe4, 0x0b, 0xeb, 0x99, 0xe2, 0x0b, 0xeb, 0x9a, 0xe4, 0x0b, 0xeb, 0x99, - 0xe2, 0x0b, 0xeb, 0x9a, 0xe4, 0x0b, 0xec, 0x9a, 0xe4, 0x0b, 0xec, 0x9a, - 0xe4, 0x0b, 0xec, 0x9a, 0xe6, 0x0b, 0xec, 0x9a, 0xe4, 0x0b, 0xec, 0x9a, - 0xe6, 0x0b, 0xed, 0x9a, 0xe4, 0x0b, 0xed, 0x9a, 0xe6, 0x0b, 0xed, 0x9a, - 0xe4, 0x0b, 0xed, 0x9a, 0xe6, 0x0b, 0xee, 0x9a, 0xe6, 0x0b, 0xee, 0x9a, - 0xe6, 0x0b, 0xee, 0x9b, 0xe8, 0x0b, 0xee, 0x9b, 0xe9, 0x0b, 0xef, 0x9b, - 0xe8, 0x0b, 0xef, 0x9b, 0xe9, 0x0b, 0xef, 0x9b, 0xe8, 0x0b, 0xef, 0x9b, - 0xe9, 0x0b, 0xf0, 0x9b, 0xe8, 0x0b, 0xf0, 0x9b, 0xe9, 0x0b, 0xf0, 0x9b, - 0xe8, 0x0b, 0xf0, 0x9b, 0xe9, 0x0b, 0xf1, 0x9b, 0xe8, 0x0b, 0xf1, 0x9b, - 0xe9, 0x0b, 0xf1, 0x9c, 0xeb, 0x0b, 0xf1, 0x9b, 0xe9, 0x0b, 0xf2, 0x9c, - 0xeb, 0x0b, 0xf2, 0x9b, 0xe9, 0x0b, 0xf2, 0x9c, 0xeb, 0x0b, 0xf2, 0x9b, - 0xe9, 0x0b, 0xf2, 0x9c, 0xeb, 0x0b, 0xf3, 0x9c, 0xeb, 0x0b, 0xf3, 0x9c, - 0xeb, 0x0b, 0xf3, 0x9d, 0xed, 0x0b, 0xf3, 0x9d, 0xed, 0x0b, 0xf4, 0x9d, - 0xed, 0x0b, 0xf4, 0x9d, 0xed, 0x0b, 0xf4, 0x9d, 0xed, 0x0b, 0xf4, 0x9d, - 0xed, 0x0b, 0xf5, 0x9d, 0xed, 0x0b, 0xf5, 0x9d, 0xed, 0x0b, 0xf5, 0x9d, - 0xed, 0x0b, 0xf5, 0x9d, 0xed, 0x0b, 0xf5, 0x9e, 0xef, 0x0b, 0xf6, 0x9d, - 0xed, 0x0b, 0xf6, 0x9e, 0xef, 0x0b, 0xf6, 0x9d, 0xed, 0x0b, 0xf6, 0x9e, - 0xef, 0x0b, 0xf7, 0x9d, 0xed, 0x0b, 0xf7, 0x9e, 0xef, 0x0b, 0xf7, 0x9e, - 0xef, 0x0b, 0xf7, 0x9e, 0xef, 0x0b, 0xf8, 0x9f, 0xf2, 0x0b, 0xf8, 0x9e, - 0xef, 0x0b, 0xf8, 0x9f, 0xf2, 0x0b, 0xf8, 0x9e, 0xef, 0x0b, 0xf8, 0x9f, - 0xf2, 0x0b, 0xf9, 0x9e, 0xef, 0x0b, 0xf9, 0x9f, 0xf2, 0x0b, 0xf9, 0x9e, - 0xef, 0x0b, 0xf9, 0x9f, 0xf2, 0x0b, 0xfa, 0x9f, 0xf1, 0x0b, 0xfa, 0x9f, - 0xf2, 0x0b, 0xfa, 0x9f, 0xf4, 0x0b, 0xfa, 0x9f, 0xf4, 0x0b, 0xfa, 0x9f, - 0xf4, 0x0b, 0xfb, 0x9f, 0xf4, 0x0b, 0xfb, 0x9f, 0xf4, 0x0b, 0xfb, 0x9f, - 0xf4, 0x0b, 0xfb, 0x9f, 0xf4, 0x0b, 0xfc, 0x9f, 0xf4, 0x0b, 0xfc, 0x9f, - 0xf4, 0x0b, 0xfc, 0x9f, 0xf4, 0x0b, 0xfc, 0xa0, 0xf6, 0x0b, 0xfc, 0x9f, - 0xf4, 0x0b, 0xfd, 0xa0, 0xf6, 0x0b, 0xfd, 0x9f, 0xf4, 0x0b, 0xfd, 0xa0, - 0xf6, 0x0b, 0xfd, 0x9f, 0xf4, 0x0b, 0xfe, 0xa0, 0xf6, 0x0b, 0xfe, 0xa0, - 0xf6, 0x0b, 0xfe, 0xa0, 0xf6, 0x0b, 0xfe, 0xa0, 0xf6, 0x0b, 0xfe, 0xa0, - 0xf6, 0x0b, 0xff, 0xa0, 0xf6, 0x0b, 0xff, 0xa0, 0xf6, 0x0b, 0x03, 0x84, - 0x9b, 0x0c, 0x0a, 0x84, 0x9b, 0x0c, 0x0f, 0x84, 0x9b, 0x0c, 0x14, 0x84, - 0x9b, 0x0c, 0x17, 0x84, 0x9b, 0x0c, 0x1b, 0x84, 0x9b, 0x0c, 0x1e, 0x84, - 0x9b, 0x0c, 0x20, 0x84, 0x9c, 0x0c, 0x23, 0x84, 0x9b, 0x0c, 0x25, 0x84, - 0x9c, 0x0c, 0x27, 0x84, 0x9b, 0x0c, 0x29, 0x84, 0x9c, 0x0c, 0x2b, 0x84, - 0x9b, 0x0c, 0x2d, 0x84, 0x9c, 0x0c, 0x2f, 0x84, 0x9b, 0x0c, 0x31, 0x84, - 0x9c, 0x0c, 0x32, 0x84, 0x9b, 0x0c, 0x34, 0x84, 0x9c, 0x0c, 0x35, 0x84, - 0x9b, 0x0c, 0x37, 0x84, 0x9c, 0x0c, 0x38, 0x84, 0x9b, 0x0c, 0x3a, 0x84, - 0x9c, 0x0c, 0x3b, 0x84, 0x9b, 0x0c, 0x3c, 0x84, 0x9c, 0x0c, 0x3e, 0x84, - 0x9b, 0x0c, 0x3f, 0x84, 0x9c, 0x0c, 0x40, 0x84, 0x9b, 0x0c, 0x42, 0x84, - 0x9c, 0x0c, 0x43, 0x84, 0x9b, 0x0c, 0x44, 0x84, 0x9c, 0x0c, 0x45, 0x84, - 0x9b, 0x0c, 0x46, 0x84, 0x9c, 0x0c, 0x47, 0x84, 0x9b, 0x0c, 0x48, 0x84, - 0x9c, 0x0c, 0x49, 0x84, 0x9b, 0x0c, 0x4a, 0x84, 0x9c, 0x0c, 0x4b, 0x84, - 0x9b, 0x0c, 0x4c, 0x84, 0x9c, 0x0c, 0x4d, 0x84, 0x9b, 0x0c, 0x4e, 0x84, - 0x9c, 0x0c, 0x4f, 0x84, 0x9b, 0x0c, 0x50, 0x84, 0x9c, 0x0c, 0x51, 0x84, - 0x9b, 0x0c, 0x52, 0x84, 0x9c, 0x0c, 0x53, 0x84, 0x9b, 0x0c, 0x54, 0x84, - 0x9c, 0x0c, 0x55, 0x84, 0x9b, 0x0c, 0x56, 0x84, 0x9c, 0x0c, 0x57, 0x84, - 0x9b, 0x0c, 0x58, 0x84, 0x9c, 0x0c, 0x58, 0x84, 0x9b, 0x0c, 0x59, 0x84, - 0x9c, 0x0c, 0x5a, 0x84, 0x9b, 0x0c, 0x5b, 0x84, 0x9c, 0x0c, 0x5c, 0x84, - 0x9b, 0x0c, 0x5d, 0x84, 0x9c, 0x0c, 0x5d, 0x84, 0x9b, 0x0c, 0x5e, 0x84, - 0x9c, 0x0c, 0x5f, 0x84, 0x9b, 0x0c, 0x60, 0x84, 0x9c, 0x0c, 0x60, 0x84, - 0x9b, 0x0c, 0x61, 0x84, 0x9c, 0x0c, 0x62, 0x84, 0x9b, 0x0c, 0x63, 0x84, - 0x9c, 0x0c, 0x63, 0x84, 0x9b, 0x0c, 0x64, 0x84, 0x9c, 0x0c, 0x65, 0x84, - 0x9b, 0x0c, 0x66, 0x84, 0x9c, 0x0c, 0x66, 0x84, 0x9b, 0x0c, 0x67, 0x84, - 0x9c, 0x0c, 0x68, 0x84, 0x9b, 0x0c, 0x68, 0x84, 0x9c, 0x0c, 0x69, 0x84, - 0x9b, 0x0c, 0x6a, 0x84, 0x9c, 0x0c, 0x6a, 0x84, 0x9b, 0x0c, 0x6b, 0x84, - 0x9c, 0x0c, 0x6c, 0x84, 0x9b, 0x0c, 0x6c, 0x84, 0x9c, 0x0c, 0x6d, 0x84, - 0x9b, 0x0c, 0x6e, 0x84, 0x9c, 0x0c, 0x6e, 0x84, 0x9b, 0x0c, 0x6f, 0x84, - 0x9c, 0x0c, 0x70, 0x84, 0x9b, 0x0c, 0x70, 0x84, 0x9c, 0x0c, 0x71, 0x84, - 0x9b, 0x0c, 0x72, 0x84, 0x9c, 0x0c, 0x72, 0x84, 0x9b, 0x0c, 0x73, 0x84, - 0x9c, 0x0c, 0x73, 0x84, 0x9b, 0x0c, 0x74, 0x84, 0x9c, 0x0c, 0x75, 0x84, - 0x9b, 0x0c, 0x75, 0x84, 0x9c, 0x0c, 0x76, 0x84, 0x9b, 0x0c, 0x76, 0x84, - 0x9c, 0x0c, 0x77, 0x84, 0x9b, 0x0c, 0x78, 0x84, 0x9c, 0x0c, 0x78, 0x84, - 0x9b, 0x0c, 0x79, 0x84, 0x9c, 0x0c, 0x79, 0x84, 0x9b, 0x0c, 0x7a, 0x84, - 0x9c, 0x0c, 0x7a, 0x84, 0x9b, 0x0c, 0x7b, 0x84, 0x9c, 0x0c, 0x7c, 0x84, - 0x9b, 0x0c, 0x7c, 0x84, 0x9c, 0x0c, 0x7d, 0x84, 0x9b, 0x0c, 0x7d, 0x84, - 0x9c, 0x0c, 0x7e, 0x84, 0x9b, 0x0c, 0x7e, 0x84, 0x9c, 0x0c, 0x7f, 0x84, - 0x9b, 0x0c, 0x7f, 0x84, 0x9c, 0x0c, 0x80, 0x84, 0x9b, 0x0c, 0x81, 0x84, - 0x9c, 0x0c, 0x81, 0x84, 0x9b, 0x0c, 0x82, 0x84, 0x9c, 0x0c, 0x82, 0x84, - 0x9b, 0x0c, 0x83, 0x84, 0x9c, 0x0c, 0x83, 0x84, 0x9b, 0x0c, 0x84, 0x84, - 0x9c, 0x0c, 0x84, 0x84, 0x9b, 0x0c, 0x85, 0x84, 0x9c, 0x0c, 0x85, 0x84, - 0x9b, 0x0c, 0x86, 0x84, 0x9c, 0x0c, 0x86, 0x84, 0x9b, 0x0c, 0x87, 0x84, - 0x9c, 0x0c, 0x87, 0x84, 0x9b, 0x0c, 0x88, 0x84, 0x9c, 0x0c, 0x88, 0x84, - 0x9b, 0x0c, 0x89, 0x84, 0x9c, 0x0c, 0x89, 0x84, 0x9b, 0x0c, 0x8a, 0x84, - 0x9c, 0x0c, 0x8a, 0x84, 0x9b, 0x0c, 0x8b, 0x84, 0x9c, 0x0c, 0x8b, 0x84, - 0x9b, 0x0c, 0x8c, 0x84, 0x9c, 0x0c, 0x8c, 0x84, 0x9b, 0x0c, 0x8d, 0x84, - 0x9c, 0x0c, 0x8d, 0x84, 0x9b, 0x0c, 0x8e, 0x84, 0x9c, 0x0c, 0x8e, 0x84, - 0x9b, 0x0c, 0x8e, 0x84, 0x9c, 0x0c, 0x8f, 0x84, 0x9b, 0x0c, 0x8f, 0x84, - 0x9c, 0x0c, 0x90, 0x84, 0x9b, 0x0c, 0x90, 0x84, 0x9c, 0x0c, 0x91, 0x84, - 0x9b, 0x0c, 0x91, 0x84, 0x9c, 0x0c, 0x92, 0x84, 0x9b, 0x0c, 0x92, 0x84, - 0x9c, 0x0c, 0x93, 0x84, 0x9b, 0x0c, 0x93, 0x84, 0x9c, 0x0c, 0x94, 0x84, - 0x9b, 0x0c, 0x94, 0x84, 0x9c, 0x0c, 0x94, 0x84, 0x9b, 0x0c, 0x95, 0x84, - 0x9c, 0x0c, 0x95, 0x84, 0x9b, 0x0c, 0x96, 0x84, 0x9c, 0x0c, 0x96, 0x84, - 0x9b, 0x0c, 0x97, 0x84, 0x9c, 0x0c, 0x97, 0x84, 0x9b, 0x0c, 0x98, 0x84, - 0x9c, 0x0c, 0x98, 0x84, 0x9b, 0x0c, 0x98, 0x84, 0x9c, 0x0c, 0x99, 0x84, - 0x9b, 0x0c, 0x99, 0x84, 0x9c, 0x0c, 0x9a, 0x84, 0x9b, 0x0c, 0x9a, 0x84, - 0x9c, 0x0c, 0x9a, 0x84, 0x9b, 0x0c, 0x9b, 0x84, 0x9c, 0x0c, 0x9b, 0x84, - 0x9b, 0x0c, 0x9c, 0x84, 0x9c, 0x0c, 0x9c, 0x84, 0x9c, 0x0c, 0x9d, 0x84, - 0x9d, 0x0c, 0x9d, 0x84, 0x9d, 0x0c, 0x9d, 0x84, 0x9d, 0x0c, 0x9e, 0x84, - 0x9e, 0x0c, 0x9e, 0x84, 0x9e, 0x0c, 0x9f, 0x84, 0x9f, 0x0c, 0x9f, 0x84, - 0x9e, 0x0c, 0x9f, 0x84, 0x9f, 0x0c, 0xa0, 0x84, 0x9e, 0x0c, 0xa0, 0x84, - 0x9f, 0x0c, 0xa1, 0x84, 0x9e, 0x0c, 0xa1, 0x84, 0x9f, 0x0c, 0xa1, 0x84, - 0x9e, 0x0c, 0xa2, 0x84, 0x9f, 0x0c, 0xa2, 0x84, 0x9e, 0x0c, 0xa3, 0x84, - 0x9f, 0x0c, 0xa3, 0x84, 0x9e, 0x0c, 0xa3, 0x84, 0x9f, 0x0c, 0xa4, 0x84, - 0x9e, 0x0c, 0xa4, 0x84, 0x9f, 0x0c, 0xa5, 0x84, 0x9e, 0x0c, 0xa5, 0x84, - 0x9f, 0x0c, 0xa5, 0x84, 0x9e, 0x0c, 0xa6, 0x84, 0x9f, 0x0c, 0xa6, 0x84, - 0x9e, 0x0c, 0xa6, 0x84, 0x9f, 0x0c, 0xa7, 0x84, 0x9e, 0x0c, 0xa7, 0x84, - 0x9f, 0x0c, 0xa8, 0x84, 0x9e, 0x0c, 0xa8, 0x84, 0x9f, 0x0c, 0xa8, 0x85, - 0xa2, 0x0c, 0xa9, 0x84, 0x9f, 0x0c, 0xa9, 0x85, 0xa2, 0x0c, 0xaa, 0x85, - 0xa2, 0x0c, 0xaa, 0x85, 0xa2, 0x0c, 0xaa, 0x85, 0xa2, 0x0c, 0xab, 0x85, - 0xa2, 0x0c, 0xab, 0x85, 0xa2, 0x0c, 0xab, 0x85, 0xa2, 0x0c, 0xac, 0x86, - 0xa6, 0x0c, 0xac, 0x86, 0xa6, 0x0c, 0xac, 0x86, 0xa6, 0x0c, 0xad, 0x86, - 0xa6, 0x0c, 0xad, 0x86, 0xa6, 0x0c, 0xae, 0x86, 0xa6, 0x0c, 0xae, 0x86, - 0xa6, 0x0c, 0xae, 0x86, 0xa6, 0x0c, 0xaf, 0x86, 0xa6, 0x0c, 0xaf, 0x86, - 0xa6, 0x0c, 0xaf, 0x87, 0xaa, 0x0c, 0xb0, 0x86, 0xa6, 0x0c, 0xb0, 0x87, - 0xaa, 0x0c, 0xb0, 0x86, 0xa6, 0x0c, 0xb1, 0x87, 0xaa, 0x0c, 0xb1, 0x87, - 0xa9, 0x0c, 0xb2, 0x87, 0xaa, 0x0c, 0xb2, 0x87, 0xa9, 0x0c, 0xb2, 0x87, - 0xaa, 0x0c, 0xb3, 0x88, 0xad, 0x0c, 0xb3, 0x88, 0xad, 0x0c, 0xb3, 0x88, - 0xad, 0x0c, 0xb4, 0x88, 0xad, 0x0c, 0xb4, 0x88, 0xad, 0x0c, 0xb4, 0x88, - 0xad, 0x0c, 0xb5, 0x88, 0xad, 0x0c, 0xb5, 0x88, 0xad, 0x0c, 0xb5, 0x88, - 0xad, 0x0c, 0xb6, 0x88, 0xad, 0x0c, 0xb6, 0x89, 0xb0, 0x0c, 0xb6, 0x88, - 0xad, 0x0c, 0xb7, 0x89, 0xb0, 0x0c, 0xb7, 0x88, 0xad, 0x0c, 0xb7, 0x89, - 0xb0, 0x0c, 0xb8, 0x89, 0xb2, 0x0c, 0xb8, 0x89, 0xb0, 0x0c, 0xb8, 0x89, - 0xb2, 0x0c, 0xb9, 0x89, 0xb0, 0x0c, 0xb9, 0x89, 0xb2, 0x0c, 0xb9, 0x89, - 0xb0, 0x0c, 0xba, 0x89, 0xb2, 0x0c, 0xba, 0x89, 0xb0, 0x0c, 0xba, 0x89, - 0xb2, 0x0c, 0xbb, 0x89, 0xb2, 0x0c, 0xbb, 0x89, 0xb2, 0x0c, 0xbb, 0x89, - 0xb2, 0x0c, 0xbc, 0x89, 0xb2, 0x0c, 0xbc, 0x8a, 0xb3, 0x0c, 0xbc, 0x8a, - 0xb4, 0x0c, 0xbd, 0x8b, 0xb7, 0x0c, 0xbd, 0x8b, 0xb7, 0x0c, 0xbd, 0x8b, - 0xb7, 0x0c, 0xbe, 0x8b, 0xb7, 0x0c, 0xbe, 0x8b, 0xb7, 0x0c, 0xbe, 0x8b, - 0xb7, 0x0c, 0xbf, 0x8b, 0xb7, 0x0c, 0xbf, 0x8b, 0xb7, 0x0c, 0xbf, 0x8b, - 0xb7, 0x0c, 0xc0, 0x8b, 0xb7, 0x0c, 0xc0, 0x8c, 0xba, 0x0c, 0xc0, 0x8b, - 0xb7, 0x0c, 0xc1, 0x8c, 0xba, 0x0c, 0xc1, 0x8b, 0xb7, 0x0c, 0xc1, 0x8c, - 0xba, 0x0c, 0xc1, 0x8c, 0xba, 0x0c, 0xc2, 0x8c, 0xba, 0x0c, 0xc2, 0x8c, - 0xba, 0x0c, 0xc2, 0x8c, 0xba, 0x0c, 0xc3, 0x8d, 0xbd, 0x0c, 0xc3, 0x8c, - 0xba, 0x0c, 0xc3, 0x8d, 0xbd, 0x0c, 0xc4, 0x8c, 0xba, 0x0c, 0xc4, 0x8d, - 0xbd, 0x0c, 0xc4, 0x8d, 0xbd, 0x0c, 0xc5, 0x8d, 0xbd, 0x0c, 0xc5, 0x8d, - 0xbd, 0x0c, 0xc5, 0x8d, 0xbd, 0x0c, 0xc6, 0x8e, 0xc0, 0x0c, 0xc6, 0x8e, - 0xc0, 0x0c, 0xc6, 0x8e, 0xc0, 0x0c, 0xc6, 0x8e, 0xc0, 0x0c, 0xc7, 0x8e, - 0xc0, 0x0c, 0xc7, 0x8e, 0xc0, 0x0c, 0xc7, 0x8e, 0xc0, 0x0c, 0xc8, 0x8e, - 0xc0, 0x0c, 0xc8, 0x8e, 0xc0, 0x0c, 0xc8, 0x8e, 0xc0, 0x0c, 0xc9, 0x8e, - 0xc0, 0x0c, 0xc9, 0x8e, 0xc0, 0x0c, 0xc9, 0x8e, 0xc3, 0x0c, 0xc9, 0x8e, - 0xc0, 0x0c, 0xca, 0x8e, 0xc3, 0x0c, 0xca, 0x8e, 0xc0, 0x0c, 0xca, 0x8e, - 0xc3, 0x0c, 0xcb, 0x8e, 0xc3, 0x0c, 0xcb, 0x8e, 0xc3, 0x0c, 0xcb, 0x8e, - 0xc3, 0x0c, 0xcc, 0x8e, 0xc3, 0x0c, 0xcc, 0x8f, 0xc6, 0x0c, 0xcc, 0x8e, - 0xc3, 0x0c, 0xcc, 0x8f, 0xc6, 0x0c, 0xcd, 0x8e, 0xc3, 0x0c, 0xcd, 0x8f, - 0xc6, 0x0c, 0xcd, 0x8f, 0xc6, 0x0c, 0xce, 0x8f, 0xc6, 0x0c, 0xce, 0x8f, - 0xc6, 0x0c, 0xce, 0x8f, 0xc6, 0x0c, 0xce, 0x90, 0xc9, 0x0c, 0xcf, 0x90, - 0xc9, 0x0c, 0xcf, 0x90, 0xc9, 0x0c, 0xcf, 0x90, 0xc9, 0x0c, 0xd0, 0x90, - 0xc9, 0x0c, 0xd0, 0x90, 0xc9, 0x0c, 0xd0, 0x90, 0xc9, 0x0c, 0xd0, 0x90, - 0xc9, 0x0c, 0xd1, 0x90, 0xc9, 0x0c, 0xd1, 0x90, 0xc9, 0x0c, 0xd1, 0x91, - 0xcc, 0x0c, 0xd2, 0x90, 0xc9, 0x0c, 0xd2, 0x91, 0xcc, 0x0c, 0xd2, 0x90, - 0xc9, 0x0c, 0xd2, 0x91, 0xcc, 0x0c, 0xd3, 0x90, 0xc9, 0x0c, 0xd3, 0x91, - 0xcc, 0x0c, 0xd3, 0x91, 0xcb, 0x0c, 0xd4, 0x91, 0xcc, 0x0c, 0xd4, 0x92, - 0xce, 0x0c, 0xd4, 0x92, 0xce, 0x0c, 0xd4, 0x92, 0xce, 0x0c, 0xd5, 0x92, - 0xce, 0x0c, 0xd5, 0x92, 0xce, 0x0c, 0xd5, 0x92, 0xce, 0x0c, 0xd6, 0x92, - 0xce, 0x0c, 0xd6, 0x92, 0xce, 0x0c, 0xd6, 0x92, 0xce, 0x0c, 0xd6, 0x92, - 0xce, 0x0c, 0xd7, 0x93, 0xd1, 0x0c, 0xd7, 0x92, 0xce, 0x0c, 0xd7, 0x93, - 0xd1, 0x0c, 0xd7, 0x92, 0xce, 0x0c, 0xd8, 0x93, 0xd1, 0x0c, 0xd8, 0x92, - 0xce, 0x0c, 0xd8, 0x93, 0xd1, 0x0c, 0xd9, 0x93, 0xd1, 0x0c, 0xd9, 0x93, - 0xd1, 0x0c, 0xd9, 0x93, 0xd1, 0x0c, 0xd9, 0x93, 0xd1, 0x0c, 0xda, 0x94, - 0xd4, 0x0c, 0xda, 0x93, 0xd1, 0x0c, 0xda, 0x94, 0xd4, 0x0c, 0xda, 0x93, - 0xd1, 0x0c, 0xdb, 0x94, 0xd4, 0x0c, 0xdb, 0x94, 0xd3, 0x0c, 0xdb, 0x94, - 0xd4, 0x0c, 0xdb, 0x94, 0xd3, 0x0c, 0xdc, 0x94, 0xd4, 0x0c, 0xdc, 0x95, - 0xd6, 0x0c, 0xdc, 0x95, 0xd6, 0x0c, 0xdd, 0x95, 0xd6, 0x0c, 0xdd, 0x95, - 0xd6, 0x0c, 0xdd, 0x95, 0xd6, 0x0c, 0xdd, 0x95, 0xd6, 0x0c, 0xde, 0x95, - 0xd6, 0x0c, 0xde, 0x95, 0xd6, 0x0c, 0xde, 0x95, 0xd6, 0x0c, 0xde, 0x95, - 0xd6, 0x0c, 0xdf, 0x96, 0xd9, 0x0c, 0xdf, 0x95, 0xd6, 0x0c, 0xdf, 0x96, - 0xd9, 0x0c, 0xdf, 0x95, 0xd6, 0x0c, 0xe0, 0x96, 0xd9, 0x0c, 0xe0, 0x95, - 0xd6, 0x0c, 0xe0, 0x96, 0xd9, 0x0c, 0xe1, 0x96, 0xd9, 0x0c, 0xe1, 0x96, - 0xd9, 0x0c, 0xe1, 0x97, 0xdb, 0x0c, 0xe1, 0x96, 0xd9, 0x0c, 0xe2, 0x97, - 0xdb, 0x0c, 0xe2, 0x96, 0xd9, 0x0c, 0xe2, 0x97, 0xdb, 0x0c, 0xe2, 0x96, - 0xd9, 0x0c, 0xe3, 0x97, 0xdb, 0x0c, 0xe3, 0x97, 0xdb, 0x0c, 0xe3, 0x97, - 0xdb, 0x0c, 0xe3, 0x97, 0xdb, 0x0c, 0xe4, 0x97, 0xdb, 0x0c, 0xe4, 0x98, - 0xde, 0x0c, 0xe4, 0x98, 0xde, 0x0c, 0xe4, 0x98, 0xde, 0x0c, 0xe5, 0x98, - 0xde, 0x0c, 0xe5, 0x98, 0xde, 0x0c, 0xe5, 0x98, 0xde, 0x0c, 0xe5, 0x98, - 0xde, 0x0c, 0xe6, 0x98, 0xde, 0x0c, 0xe6, 0x98, 0xde, 0x0c, 0xe6, 0x98, - 0xde, 0x0c, 0xe6, 0x98, 0xe0, 0x0c, 0xe7, 0x98, 0xde, 0x0c, 0xe7, 0x98, - 0xe0, 0x0c, 0xe7, 0x98, 0xde, 0x0c, 0xe7, 0x98, 0xe0, 0x0c, 0xe8, 0x98, - 0xdf, 0x0c, 0xe8, 0x98, 0xe0, 0x0c, 0xe8, 0x98, 0xdf, 0x0c, 0xe8, 0x98, - 0xe0, 0x0c, 0xe9, 0x99, 0xe3, 0x0c, 0xe9, 0x98, 0xe0, 0x0c, 0xe9, 0x99, - 0xe3, 0x0c, 0xe9, 0x98, 0xe0, 0x0c, 0xea, 0x99, 0xe3, 0x0c, 0xea, 0x98, - 0xe0, 0x0c, 0xea, 0x99, 0xe3, 0x0c, 0xea, 0x99, 0xe2, 0x0c, 0xeb, 0x99, - 0xe3, 0x0c, 0xeb, 0x9a, 0xe5, 0x0c, 0xeb, 0x9a, 0xe5, 0x0c, 0xeb, 0x9a, - 0xe5, 0x0c, 0xec, 0x9a, 0xe5, 0x0c, 0xec, 0x9a, 0xe5, 0x0c, 0xec, 0x9a, - 0xe5, 0x0c, 0xec, 0x9a, 0xe5, 0x0c, 0xec, 0x9a, 0xe5, 0x0c, 0xed, 0x9a, - 0xe5, 0x0c, 0xed, 0x9a, 0xe5, 0x0c, 0xed, 0x9b, 0xe7, 0x0c, 0xed, 0x9a, - 0xe5, 0x0c, 0xee, 0x9b, 0xe7, 0x0c, 0xee, 0x9a, 0xe5, 0x0c, 0xee, 0x9b, - 0xe7, 0x0c, 0xee, 0x9a, 0xe5, 0x0c, 0xef, 0x9b, 0xe7, 0x0c, 0xef, 0x9b, - 0xe7, 0x0c, 0xef, 0x9b, 0xe7, 0x0c, 0xef, 0x9c, 0xea, 0x0c, 0xf0, 0x9c, - 0xea, 0x0c, 0xf0, 0x9c, 0xea, 0x0c, 0xf0, 0x9c, 0xea, 0x0c, 0xf0, 0x9c, - 0xea, 0x0c, 0xf1, 0x9c, 0xea, 0x0c, 0xf1, 0x9c, 0xea, 0x0c, 0xf1, 0x9c, - 0xea, 0x0c, 0xf1, 0x9c, 0xea, 0x0c, 0xf2, 0x9c, 0xea, 0x0c, 0xf2, 0x9c, - 0xea, 0x0c, 0xf2, 0x9c, 0xea, 0x0c, 0xf2, 0x9d, 0xec, 0x0c, 0xf2, 0x9c, - 0xea, 0x0c, 0xf3, 0x9d, 0xec, 0x0c, 0xf3, 0x9c, 0xea, 0x0c, 0xf3, 0x9d, - 0xec, 0x0c, 0xf3, 0x9c, 0xea, 0x0c, 0xf4, 0x9d, 0xec, 0x0c, 0xf4, 0x9d, - 0xec, 0x0c, 0xf4, 0x9d, 0xec, 0x0c, 0xf4, 0x9d, 0xee, 0x0c, 0xf5, 0x9d, - 0xec, 0x0c, 0xf5, 0x9d, 0xee, 0x0c, 0xf5, 0x9d, 0xec, 0x0c, 0xf5, 0x9d, - 0xee, 0x0c, 0xf5, 0x9d, 0xec, 0x0c, 0xf6, 0x9d, 0xee, 0x0c, 0xf6, 0x9d, - 0xee, 0x0c, 0xf6, 0x9d, 0xee, 0x0c, 0xf6, 0x9e, 0xf0, 0x0c, 0xf7, 0x9e, - 0xf1, 0x0c, 0xf7, 0x9e, 0xf0, 0x0c, 0xf7, 0x9e, 0xf1, 0x0c, 0xf7, 0x9e, - 0xf0, 0x0c, 0xf8, 0x9e, 0xf1, 0x0c, 0xf8, 0x9e, 0xf0, 0x0c, 0xf8, 0x9e, - 0xf1, 0x0c, 0xf8, 0x9e, 0xf0, 0x0c, 0xf8, 0x9e, 0xf1, 0x0c, 0xf9, 0x9f, - 0xf3, 0x0c, 0xf9, 0x9e, 0xf1, 0x0c, 0xf9, 0x9f, 0xf3, 0x0c, 0xf9, 0x9e, - 0xf1, 0x0c, 0xfa, 0x9f, 0xf3, 0x0c, 0xfa, 0x9e, 0xf1, 0x0c, 0xfa, 0x9f, - 0xf3, 0x0c, 0xfa, 0x9e, 0xf1, 0x0c, 0xfa, 0x9f, 0xf3, 0x0c, 0xfb, 0x9f, - 0xf2, 0x0c, 0xfb, 0x9f, 0xf3, 0x0c, 0xfb, 0xa0, 0xf5, 0x0c, 0xfb, 0x9f, - 0xf3, 0x0c, 0xfc, 0xa0, 0xf5, 0x0c, 0xfc, 0x9f, 0xf3, 0x0c, 0xfc, 0xa0, - 0xf5, 0x0c, 0xfc, 0x9f, 0xf3, 0x0c, 0xfc, 0xa0, 0xf5, 0x0c, 0xfd, 0xa0, - 0xf5, 0x0c, 0xfd, 0xa0, 0xf5, 0x0c, 0xfd, 0xa1, 0xf7, 0x0c, 0xfd, 0xa1, - 0xf7, 0x0c, 0xfe, 0xa1, 0xf7, 0x0c, 0xfe, 0xa1, 0xf7, 0x0c, 0xfe, 0xa1, - 0xf7, 0x0c, 0xfe, 0xa1, 0xf7, 0x0c, 0xfe, 0xa1, 0xf7, 0x0c, 0xff, 0xa1, - 0xf7, 0x0c, 0xff, 0xa1, 0xf7, 0x0c, 0x03, 0x83, 0x9b, 0x0c, 0x0a, 0x83, - 0x9b, 0x0c, 0x0f, 0x83, 0x9b, 0x0c, 0x14, 0x83, 0x9b, 0x0c, 0x17, 0x83, - 0x9b, 0x0c, 0x1b, 0x83, 0x9b, 0x0c, 0x1e, 0x83, 0x9b, 0x0c, 0x20, 0x83, - 0x9c, 0x0c, 0x23, 0x83, 0x9b, 0x0c, 0x25, 0x83, 0x9c, 0x0c, 0x27, 0x83, - 0x9b, 0x0c, 0x29, 0x83, 0x9c, 0x0c, 0x2b, 0x83, 0x9b, 0x0c, 0x2d, 0x83, - 0x9c, 0x0c, 0x2f, 0x83, 0x9b, 0x0c, 0x31, 0x83, 0x9c, 0x0c, 0x32, 0x83, - 0x9b, 0x0c, 0x34, 0x83, 0x9c, 0x0c, 0x35, 0x83, 0x9b, 0x0c, 0x37, 0x83, - 0x9c, 0x0c, 0x38, 0x83, 0x9b, 0x0c, 0x3a, 0x83, 0x9c, 0x0c, 0x3b, 0x83, - 0x9b, 0x0c, 0x3c, 0x83, 0x9c, 0x0c, 0x3e, 0x83, 0x9b, 0x0c, 0x3f, 0x83, - 0x9c, 0x0c, 0x40, 0x83, 0x9b, 0x0c, 0x42, 0x83, 0x9c, 0x0c, 0x43, 0x83, - 0x9b, 0x0c, 0x44, 0x83, 0x9c, 0x0c, 0x45, 0x83, 0x9b, 0x0c, 0x46, 0x83, - 0x9c, 0x0c, 0x47, 0x83, 0x9b, 0x0c, 0x48, 0x83, 0x9c, 0x0c, 0x49, 0x83, - 0x9b, 0x0c, 0x4a, 0x83, 0x9c, 0x0c, 0x4b, 0x83, 0x9b, 0x0c, 0x4c, 0x83, - 0x9c, 0x0c, 0x4d, 0x83, 0x9b, 0x0c, 0x4e, 0x83, 0x9c, 0x0c, 0x4f, 0x83, - 0x9b, 0x0c, 0x50, 0x83, 0x9c, 0x0c, 0x51, 0x83, 0x9b, 0x0c, 0x52, 0x83, - 0x9c, 0x0c, 0x53, 0x83, 0x9b, 0x0c, 0x54, 0x83, 0x9c, 0x0c, 0x55, 0x83, - 0x9b, 0x0c, 0x56, 0x83, 0x9c, 0x0c, 0x57, 0x83, 0x9b, 0x0c, 0x58, 0x83, - 0x9c, 0x0c, 0x58, 0x83, 0x9b, 0x0c, 0x59, 0x83, 0x9c, 0x0c, 0x5a, 0x83, - 0x9b, 0x0c, 0x5b, 0x83, 0x9c, 0x0c, 0x5c, 0x83, 0x9b, 0x0c, 0x5d, 0x83, - 0x9c, 0x0c, 0x5d, 0x83, 0x9b, 0x0c, 0x5e, 0x83, 0x9c, 0x0c, 0x5f, 0x83, - 0x9b, 0x0c, 0x60, 0x83, 0x9c, 0x0c, 0x60, 0x83, 0x9b, 0x0c, 0x61, 0x83, - 0x9c, 0x0c, 0x62, 0x83, 0x9b, 0x0c, 0x63, 0x83, 0x9c, 0x0c, 0x63, 0x83, - 0x9b, 0x0c, 0x64, 0x83, 0x9c, 0x0c, 0x65, 0x83, 0x9b, 0x0c, 0x66, 0x83, - 0x9c, 0x0c, 0x66, 0x83, 0x9b, 0x0c, 0x67, 0x83, 0x9c, 0x0c, 0x68, 0x83, - 0x9b, 0x0c, 0x68, 0x83, 0x9c, 0x0c, 0x69, 0x83, 0x9b, 0x0c, 0x6a, 0x83, - 0x9c, 0x0c, 0x6a, 0x83, 0x9b, 0x0c, 0x6b, 0x83, 0x9c, 0x0c, 0x6c, 0x83, - 0x9b, 0x0c, 0x6c, 0x83, 0x9c, 0x0c, 0x6d, 0x83, 0x9b, 0x0c, 0x6e, 0x83, - 0x9c, 0x0c, 0x6e, 0x83, 0x9b, 0x0c, 0x6f, 0x83, 0x9c, 0x0c, 0x70, 0x83, - 0x9b, 0x0c, 0x70, 0x83, 0x9c, 0x0c, 0x71, 0x83, 0x9b, 0x0c, 0x72, 0x83, - 0x9c, 0x0c, 0x72, 0x83, 0x9b, 0x0c, 0x73, 0x83, 0x9c, 0x0c, 0x73, 0x83, - 0x9b, 0x0c, 0x74, 0x83, 0x9c, 0x0c, 0x75, 0x83, 0x9b, 0x0c, 0x75, 0x83, - 0x9c, 0x0c, 0x76, 0x83, 0x9b, 0x0c, 0x76, 0x83, 0x9c, 0x0c, 0x77, 0x83, - 0x9b, 0x0c, 0x78, 0x83, 0x9c, 0x0c, 0x78, 0x83, 0x9b, 0x0c, 0x79, 0x83, - 0x9c, 0x0c, 0x79, 0x83, 0x9b, 0x0c, 0x7a, 0x83, 0x9c, 0x0c, 0x7a, 0x83, - 0x9b, 0x0c, 0x7b, 0x83, 0x9c, 0x0c, 0x7c, 0x83, 0x9b, 0x0c, 0x7c, 0x83, - 0x9c, 0x0c, 0x7d, 0x83, 0x9b, 0x0c, 0x7d, 0x83, 0x9c, 0x0c, 0x7e, 0x83, - 0x9b, 0x0c, 0x7e, 0x83, 0x9c, 0x0c, 0x7f, 0x83, 0x9b, 0x0c, 0x7f, 0x83, - 0x9c, 0x0c, 0x80, 0x83, 0x9b, 0x0c, 0x81, 0x83, 0x9c, 0x0c, 0x81, 0x83, - 0x9b, 0x0c, 0x82, 0x83, 0x9c, 0x0c, 0x82, 0x83, 0x9b, 0x0c, 0x83, 0x83, - 0x9c, 0x0c, 0x83, 0x83, 0x9b, 0x0c, 0x84, 0x83, 0x9c, 0x0c, 0x84, 0x83, - 0x9b, 0x0c, 0x85, 0x83, 0x9c, 0x0c, 0x85, 0x83, 0x9b, 0x0c, 0x86, 0x83, - 0x9c, 0x0c, 0x86, 0x83, 0x9b, 0x0c, 0x87, 0x83, 0x9c, 0x0c, 0x87, 0x83, - 0x9b, 0x0c, 0x88, 0x83, 0x9c, 0x0c, 0x88, 0x83, 0x9b, 0x0c, 0x89, 0x83, - 0x9c, 0x0c, 0x89, 0x83, 0x9b, 0x0c, 0x8a, 0x83, 0x9c, 0x0c, 0x8a, 0x83, - 0x9b, 0x0c, 0x8b, 0x83, 0x9c, 0x0c, 0x8b, 0x83, 0x9b, 0x0c, 0x8c, 0x83, - 0x9c, 0x0c, 0x8c, 0x83, 0x9b, 0x0c, 0x8d, 0x83, 0x9c, 0x0c, 0x8d, 0x83, - 0x9b, 0x0c, 0x8e, 0x83, 0x9c, 0x0c, 0x8e, 0x83, 0x9b, 0x0c, 0x8e, 0x83, - 0x9c, 0x0c, 0x8f, 0x83, 0x9b, 0x0c, 0x8f, 0x83, 0x9c, 0x0c, 0x90, 0x83, - 0x9b, 0x0c, 0x90, 0x83, 0x9c, 0x0c, 0x91, 0x83, 0x9b, 0x0c, 0x91, 0x83, - 0x9c, 0x0c, 0x92, 0x83, 0x9b, 0x0c, 0x92, 0x83, 0x9c, 0x0c, 0x93, 0x83, - 0x9b, 0x0c, 0x93, 0x83, 0x9c, 0x0c, 0x94, 0x83, 0x9b, 0x0c, 0x94, 0x83, - 0x9c, 0x0c, 0x94, 0x83, 0x9b, 0x0c, 0x95, 0x83, 0x9c, 0x0c, 0x95, 0x83, - 0x9b, 0x0c, 0x96, 0x83, 0x9c, 0x0c, 0x96, 0x83, 0x9b, 0x0c, 0x97, 0x83, - 0x9c, 0x0c, 0x97, 0x83, 0x9b, 0x0c, 0x98, 0x83, 0x9c, 0x0c, 0x98, 0x83, - 0x9b, 0x0c, 0x98, 0x83, 0x9c, 0x0c, 0x99, 0x83, 0x9b, 0x0c, 0x99, 0x83, - 0x9c, 0x0c, 0x9a, 0x83, 0x9b, 0x0c, 0x9a, 0x83, 0x9c, 0x0c, 0x9a, 0x83, - 0x9b, 0x0c, 0x9b, 0x83, 0x9c, 0x0c, 0x9b, 0x83, 0x9b, 0x0c, 0x9c, 0x83, - 0x9c, 0x0c, 0x9c, 0x83, 0x9c, 0x0c, 0x9d, 0x83, 0x9d, 0x0c, 0x9d, 0x83, - 0x9c, 0x0c, 0x9d, 0x83, 0x9d, 0x0c, 0x9e, 0x83, 0x9c, 0x0c, 0x9e, 0x83, - 0x9d, 0x0c, 0x9f, 0x83, 0x9c, 0x0c, 0x9f, 0x83, 0x9d, 0x0c, 0x9f, 0x83, - 0x9c, 0x0c, 0xa0, 0x83, 0x9d, 0x0c, 0xa0, 0x83, 0x9c, 0x0c, 0xa1, 0x83, - 0x9d, 0x0c, 0xa1, 0x83, 0x9c, 0x0c, 0xa1, 0x83, 0x9d, 0x0c, 0xa2, 0x83, - 0x9c, 0x0c, 0xa2, 0x83, 0x9d, 0x0c, 0xa3, 0x83, 0x9c, 0x0c, 0xa3, 0x83, - 0x9d, 0x0c, 0xa3, 0x83, 0x9c, 0x0c, 0xa4, 0x83, 0x9d, 0x0c, 0xa4, 0x83, - 0x9c, 0x0c, 0xa5, 0x83, 0x9d, 0x0c, 0xa5, 0x83, 0x9c, 0x0c, 0xa5, 0x83, - 0x9d, 0x0c, 0xa6, 0x84, 0xa0, 0x0c, 0xa6, 0x84, 0xa1, 0x0c, 0xa6, 0x84, - 0xa0, 0x0c, 0xa7, 0x84, 0xa1, 0x0c, 0xa7, 0x84, 0xa0, 0x0c, 0xa8, 0x84, - 0xa1, 0x0c, 0xa8, 0x84, 0xa0, 0x0c, 0xa8, 0x84, 0xa1, 0x0c, 0xa9, 0x84, - 0xa0, 0x0c, 0xa9, 0x84, 0xa1, 0x0c, 0xaa, 0x84, 0xa0, 0x0c, 0xaa, 0x84, - 0xa1, 0x0c, 0xaa, 0x85, 0xa4, 0x0c, 0xab, 0x84, 0xa1, 0x0c, 0xab, 0x85, - 0xa4, 0x0c, 0xab, 0x85, 0xa4, 0x0c, 0xac, 0x85, 0xa4, 0x0c, 0xac, 0x85, - 0xa4, 0x0c, 0xac, 0x85, 0xa4, 0x0c, 0xad, 0x85, 0xa4, 0x0c, 0xad, 0x85, - 0xa4, 0x0c, 0xae, 0x86, 0xa8, 0x0c, 0xae, 0x85, 0xa4, 0x0c, 0xae, 0x86, - 0xa8, 0x0c, 0xaf, 0x85, 0xa4, 0x0c, 0xaf, 0x86, 0xa8, 0x0c, 0xaf, 0x86, - 0xa7, 0x0c, 0xb0, 0x86, 0xa8, 0x0c, 0xb0, 0x86, 0xa7, 0x0c, 0xb0, 0x86, - 0xa8, 0x0c, 0xb1, 0x87, 0xab, 0x0c, 0xb1, 0x87, 0xab, 0x0c, 0xb2, 0x87, - 0xab, 0x0c, 0xb2, 0x87, 0xab, 0x0c, 0xb2, 0x87, 0xab, 0x0c, 0xb3, 0x87, - 0xab, 0x0c, 0xb3, 0x87, 0xab, 0x0c, 0xb3, 0x87, 0xab, 0x0c, 0xb4, 0x87, - 0xab, 0x0c, 0xb4, 0x87, 0xab, 0x0c, 0xb4, 0x88, 0xaf, 0x0c, 0xb5, 0x87, - 0xab, 0x0c, 0xb5, 0x88, 0xaf, 0x0c, 0xb5, 0x87, 0xab, 0x0c, 0xb6, 0x88, - 0xaf, 0x0c, 0xb6, 0x88, 0xae, 0x0c, 0xb6, 0x88, 0xaf, 0x0c, 0xb7, 0x88, - 0xae, 0x0c, 0xb7, 0x88, 0xaf, 0x0c, 0xb7, 0x89, 0xb2, 0x0c, 0xb8, 0x89, - 0xb2, 0x0c, 0xb8, 0x89, 0xb2, 0x0c, 0xb8, 0x89, 0xb2, 0x0c, 0xb9, 0x89, - 0xb2, 0x0c, 0xb9, 0x89, 0xb2, 0x0c, 0xb9, 0x89, 0xb2, 0x0c, 0xba, 0x89, - 0xb2, 0x0c, 0xba, 0x89, 0xb2, 0x0c, 0xba, 0x89, 0xb2, 0x0c, 0xbb, 0x89, - 0xb2, 0x0c, 0xbb, 0x89, 0xb2, 0x0c, 0xbb, 0x8a, 0xb5, 0x0c, 0xbc, 0x89, - 0xb2, 0x0c, 0xbc, 0x8a, 0xb5, 0x0c, 0xbc, 0x89, 0xb2, 0x0c, 0xbd, 0x8a, - 0xb5, 0x0c, 0xbd, 0x8a, 0xb5, 0x0c, 0xbd, 0x8a, 0xb5, 0x0c, 0xbe, 0x8a, - 0xb5, 0x0c, 0xbe, 0x8a, 0xb5, 0x0c, 0xbe, 0x8b, 0xb8, 0x0c, 0xbf, 0x8a, - 0xb5, 0x0c, 0xbf, 0x8b, 0xb8, 0x0c, 0xbf, 0x8a, 0xb5, 0x0c, 0xc0, 0x8b, - 0xb8, 0x0c, 0xc0, 0x8b, 0xb8, 0x0c, 0xc0, 0x8b, 0xb8, 0x0c, 0xc1, 0x8b, - 0xb8, 0x0c, 0xc1, 0x8b, 0xb8, 0x0c, 0xc1, 0x8c, 0xbb, 0x0c, 0xc1, 0x8c, - 0xbc, 0x0c, 0xc2, 0x8c, 0xbb, 0x0c, 0xc2, 0x8c, 0xbc, 0x0c, 0xc2, 0x8c, - 0xbb, 0x0c, 0xc3, 0x8c, 0xbc, 0x0c, 0xc3, 0x8c, 0xbb, 0x0c, 0xc3, 0x8c, - 0xbc, 0x0c, 0xc4, 0x8c, 0xbb, 0x0c, 0xc4, 0x8c, 0xbc, 0x0c, 0xc4, 0x8d, - 0xbf, 0x0c, 0xc5, 0x8c, 0xbc, 0x0c, 0xc5, 0x8d, 0xbf, 0x0c, 0xc5, 0x8c, - 0xbc, 0x0c, 0xc6, 0x8d, 0xbf, 0x0c, 0xc6, 0x8d, 0xbe, 0x0c, 0xc6, 0x8d, - 0xbf, 0x0c, 0xc6, 0x8d, 0xbe, 0x0c, 0xc7, 0x8d, 0xbf, 0x0c, 0xc7, 0x8e, - 0xc1, 0x0c, 0xc7, 0x8d, 0xbf, 0x0c, 0xc8, 0x8e, 0xc1, 0x0c, 0xc8, 0x8d, - 0xbf, 0x0c, 0xc8, 0x8e, 0xc1, 0x0c, 0xc9, 0x8d, 0xbf, 0x0c, 0xc9, 0x8e, - 0xc1, 0x0c, 0xc9, 0x8e, 0xc1, 0x0c, 0xc9, 0x8e, 0xc1, 0x0c, 0xca, 0x8e, - 0xc1, 0x0c, 0xca, 0x8e, 0xc1, 0x0c, 0xca, 0x8f, 0xc4, 0x0c, 0xcb, 0x8f, - 0xc5, 0x0c, 0xcb, 0x8f, 0xc4, 0x0c, 0xcb, 0x8f, 0xc5, 0x0c, 0xcc, 0x8f, - 0xc4, 0x0c, 0xcc, 0x8f, 0xc5, 0x0c, 0xcc, 0x8f, 0xc4, 0x0c, 0xcc, 0x8f, - 0xc5, 0x0c, 0xcd, 0x8f, 0xc4, 0x0c, 0xcd, 0x8f, 0xc5, 0x0c, 0xcd, 0x90, - 0xc7, 0x0c, 0xce, 0x8f, 0xc5, 0x0c, 0xce, 0x90, 0xc7, 0x0c, 0xce, 0x8f, - 0xc5, 0x0c, 0xce, 0x90, 0xc7, 0x0c, 0xcf, 0x90, 0xc7, 0x0c, 0xcf, 0x90, - 0xc7, 0x0c, 0xcf, 0x90, 0xc7, 0x0c, 0xd0, 0x90, 0xc7, 0x0c, 0xd0, 0x91, - 0xca, 0x0c, 0xd0, 0x90, 0xc7, 0x0c, 0xd0, 0x91, 0xca, 0x0c, 0xd1, 0x90, - 0xc7, 0x0c, 0xd1, 0x91, 0xca, 0x0c, 0xd1, 0x91, 0xca, 0x0c, 0xd2, 0x91, - 0xca, 0x0c, 0xd2, 0x91, 0xca, 0x0c, 0xd2, 0x91, 0xca, 0x0c, 0xd2, 0x92, - 0xcd, 0x0c, 0xd3, 0x92, 0xcd, 0x0c, 0xd3, 0x92, 0xcd, 0x0c, 0xd3, 0x92, - 0xcd, 0x0c, 0xd4, 0x92, 0xcd, 0x0c, 0xd4, 0x92, 0xcd, 0x0c, 0xd4, 0x92, - 0xcd, 0x0c, 0xd4, 0x92, 0xcd, 0x0c, 0xd5, 0x92, 0xcd, 0x0c, 0xd5, 0x92, - 0xcd, 0x0c, 0xd5, 0x93, 0xd0, 0x0c, 0xd6, 0x92, 0xcd, 0x0c, 0xd6, 0x93, - 0xd0, 0x0c, 0xd6, 0x92, 0xcd, 0x0c, 0xd6, 0x93, 0xd0, 0x0c, 0xd7, 0x92, - 0xcd, 0x0c, 0xd7, 0x93, 0xd0, 0x0c, 0xd7, 0x93, 0xcf, 0x0c, 0xd7, 0x93, - 0xd0, 0x0c, 0xd8, 0x94, 0xd2, 0x0c, 0xd8, 0x94, 0xd2, 0x0c, 0xd8, 0x94, - 0xd2, 0x0c, 0xd9, 0x94, 0xd2, 0x0c, 0xd9, 0x94, 0xd2, 0x0c, 0xd9, 0x94, - 0xd2, 0x0c, 0xd9, 0x94, 0xd2, 0x0c, 0xda, 0x94, 0xd2, 0x0c, 0xda, 0x94, - 0xd2, 0x0c, 0xda, 0x94, 0xd2, 0x0c, 0xda, 0x94, 0xd2, 0x0c, 0xdb, 0x94, - 0xd2, 0x0c, 0xdb, 0x94, 0xd5, 0x0c, 0xdb, 0x94, 0xd2, 0x0c, 0xdb, 0x94, - 0xd5, 0x0c, 0xdc, 0x94, 0xd2, 0x0c, 0xdc, 0x94, 0xd5, 0x0c, 0xdc, 0x94, - 0xd5, 0x0c, 0xdd, 0x94, 0xd5, 0x0c, 0xdd, 0x94, 0xd5, 0x0c, 0xdd, 0x94, - 0xd5, 0x0c, 0xdd, 0x95, 0xd7, 0x0c, 0xde, 0x94, 0xd5, 0x0c, 0xde, 0x95, - 0xd7, 0x0c, 0xde, 0x94, 0xd5, 0x0c, 0xde, 0x95, 0xd7, 0x0c, 0xdf, 0x94, - 0xd5, 0x0c, 0xdf, 0x95, 0xd7, 0x0c, 0xdf, 0x95, 0xd7, 0x0c, 0xdf, 0x95, - 0xd7, 0x0c, 0xe0, 0x96, 0xda, 0x0c, 0xe0, 0x96, 0xda, 0x0c, 0xe0, 0x96, - 0xda, 0x0c, 0xe1, 0x96, 0xda, 0x0c, 0xe1, 0x96, 0xda, 0x0c, 0xe1, 0x96, - 0xda, 0x0c, 0xe1, 0x96, 0xda, 0x0c, 0xe2, 0x96, 0xda, 0x0c, 0xe2, 0x96, - 0xda, 0x0c, 0xe2, 0x96, 0xda, 0x0c, 0xe2, 0x97, 0xdd, 0x0c, 0xe3, 0x96, - 0xda, 0x0c, 0xe3, 0x97, 0xdd, 0x0c, 0xe3, 0x96, 0xda, 0x0c, 0xe3, 0x97, - 0xdd, 0x0c, 0xe4, 0x96, 0xda, 0x0c, 0xe4, 0x97, 0xdd, 0x0c, 0xe4, 0x97, - 0xdc, 0x0c, 0xe4, 0x97, 0xdd, 0x0c, 0xe5, 0x98, 0xdf, 0x0c, 0xe5, 0x97, - 0xdd, 0x0c, 0xe5, 0x98, 0xdf, 0x0c, 0xe5, 0x97, 0xdd, 0x0c, 0xe6, 0x98, - 0xdf, 0x0c, 0xe6, 0x97, 0xdd, 0x0c, 0xe6, 0x98, 0xdf, 0x0c, 0xe6, 0x98, - 0xdf, 0x0c, 0xe7, 0x98, 0xdf, 0x0c, 0xe7, 0x98, 0xdf, 0x0c, 0xe7, 0x98, - 0xdf, 0x0c, 0xe7, 0x99, 0xe1, 0x0c, 0xe8, 0x99, 0xe2, 0x0c, 0xe8, 0x99, - 0xe1, 0x0c, 0xe8, 0x99, 0xe2, 0x0c, 0xe8, 0x99, 0xe1, 0x0c, 0xe9, 0x99, - 0xe2, 0x0c, 0xe9, 0x99, 0xe1, 0x0c, 0xe9, 0x99, 0xe2, 0x0c, 0xe9, 0x99, - 0xe1, 0x0c, 0xea, 0x99, 0xe2, 0x0c, 0xea, 0x9a, 0xe4, 0x0c, 0xea, 0x99, - 0xe2, 0x0c, 0xea, 0x9a, 0xe4, 0x0c, 0xeb, 0x99, 0xe2, 0x0c, 0xeb, 0x9a, - 0xe4, 0x0c, 0xeb, 0x99, 0xe2, 0x0c, 0xeb, 0x9a, 0xe4, 0x0c, 0xec, 0x9a, - 0xe4, 0x0c, 0xec, 0x9a, 0xe4, 0x0c, 0xec, 0x9a, 0xe6, 0x0c, 0xec, 0x9a, - 0xe4, 0x0c, 0xec, 0x9a, 0xe6, 0x0c, 0xed, 0x9a, 0xe4, 0x0c, 0xed, 0x9a, - 0xe6, 0x0c, 0xed, 0x9a, 0xe4, 0x0c, 0xed, 0x9a, 0xe6, 0x0c, 0xee, 0x9a, - 0xe6, 0x0c, 0xee, 0x9a, 0xe6, 0x0c, 0xee, 0x9b, 0xe8, 0x0c, 0xee, 0x9b, - 0xe9, 0x0c, 0xef, 0x9b, 0xe8, 0x0c, 0xef, 0x9b, 0xe9, 0x0c, 0xef, 0x9b, - 0xe8, 0x0c, 0xef, 0x9b, 0xe9, 0x0c, 0xf0, 0x9b, 0xe8, 0x0c, 0xf0, 0x9b, - 0xe9, 0x0c, 0xf0, 0x9b, 0xe8, 0x0c, 0xf0, 0x9b, 0xe9, 0x0c, 0xf1, 0x9c, - 0xeb, 0x0c, 0xf1, 0x9b, 0xe9, 0x0c, 0xf1, 0x9c, 0xeb, 0x0c, 0xf1, 0x9b, - 0xe9, 0x0c, 0xf2, 0x9c, 0xeb, 0x0c, 0xf2, 0x9b, 0xe9, 0x0c, 0xf2, 0x9c, - 0xeb, 0x0c, 0xf2, 0x9b, 0xe9, 0x0c, 0xf2, 0x9c, 0xeb, 0x0c, 0xf3, 0x9c, - 0xeb, 0x0c, 0xf3, 0x9c, 0xeb, 0x0c, 0xf3, 0x9d, 0xed, 0x0c, 0xf3, 0x9d, - 0xed, 0x0c, 0xf4, 0x9d, 0xed, 0x0c, 0xf4, 0x9d, 0xed, 0x0c, 0xf4, 0x9d, - 0xed, 0x0c, 0xf4, 0x9d, 0xed, 0x0c, 0xf5, 0x9d, 0xed, 0x0c, 0xf5, 0x9d, - 0xed, 0x0c, 0xf5, 0x9d, 0xed, 0x0c, 0xf5, 0x9d, 0xed, 0x0c, 0xf5, 0x9e, - 0xef, 0x0c, 0xf6, 0x9d, 0xed, 0x0c, 0xf6, 0x9e, 0xef, 0x0c, 0xf6, 0x9d, - 0xed, 0x0c, 0xf6, 0x9e, 0xef, 0x0c, 0xf7, 0x9d, 0xed, 0x0c, 0xf7, 0x9e, - 0xef, 0x0c, 0xf7, 0x9e, 0xef, 0x0c, 0xf7, 0x9e, 0xef, 0x0c, 0xf8, 0x9f, - 0xf2, 0x0c, 0xf8, 0x9e, 0xef, 0x0c, 0xf8, 0x9f, 0xf2, 0x0c, 0xf8, 0x9e, - 0xef, 0x0c, 0xf8, 0x9f, 0xf2, 0x0c, 0xf9, 0x9e, 0xef, 0x0c, 0xf9, 0x9f, - 0xf2, 0x0c, 0xf9, 0x9f, 0xf1, 0x0c, 0xf9, 0x9f, 0xf2, 0x0c, 0xfa, 0x9f, - 0xf4, 0x0c, 0xfa, 0x9f, 0xf4, 0x0c, 0xfa, 0x9f, 0xf4, 0x0c, 0xfa, 0x9f, - 0xf4, 0x0c, 0xfa, 0x9f, 0xf4, 0x0c, 0xfb, 0x9f, 0xf4, 0x0c, 0xfb, 0x9f, - 0xf4, 0x0c, 0xfb, 0x9f, 0xf4, 0x0c, 0xfb, 0x9f, 0xf4, 0x0c, 0xfc, 0x9f, - 0xf4, 0x0c, 0xfc, 0x9f, 0xf4, 0x0c, 0xfc, 0x9f, 0xf4, 0x0c, 0xfc, 0xa0, - 0xf6, 0x0c, 0xfc, 0x9f, 0xf4, 0x0c, 0xfd, 0xa0, 0xf6, 0x0c, 0xfd, 0x9f, - 0xf4, 0x0c, 0xfd, 0xa0, 0xf6, 0x0c, 0xfd, 0x9f, 0xf4, 0x0c, 0xfe, 0xa0, - 0xf6, 0x0c, 0xfe, 0xa0, 0xf6, 0x0c, 0xfe, 0xa0, 0xf6, 0x0c, 0xfe, 0xa0, - 0xf6, 0x0c, 0xfe, 0xa0, 0xf6, 0x0c, 0xff, 0xa0, 0xf6, 0x0c, 0xff, 0xa0, - 0xf6, 0x0c, 0x03, 0x84, 0x9b, 0x0d, 0x0a, 0x84, 0x9b, 0x0d, 0x0f, 0x84, - 0x9b, 0x0d, 0x14, 0x84, 0x9b, 0x0d, 0x17, 0x84, 0x9b, 0x0d, 0x1b, 0x84, - 0x9b, 0x0d, 0x1e, 0x84, 0x9b, 0x0d, 0x20, 0x84, 0x9c, 0x0d, 0x23, 0x84, - 0x9b, 0x0d, 0x25, 0x84, 0x9c, 0x0d, 0x27, 0x84, 0x9b, 0x0d, 0x29, 0x84, - 0x9c, 0x0d, 0x2b, 0x84, 0x9b, 0x0d, 0x2d, 0x84, 0x9c, 0x0d, 0x2f, 0x84, - 0x9b, 0x0d, 0x31, 0x84, 0x9c, 0x0d, 0x32, 0x84, 0x9b, 0x0d, 0x34, 0x84, - 0x9c, 0x0d, 0x35, 0x84, 0x9b, 0x0d, 0x37, 0x84, 0x9c, 0x0d, 0x38, 0x84, - 0x9b, 0x0d, 0x3a, 0x84, 0x9c, 0x0d, 0x3b, 0x84, 0x9b, 0x0d, 0x3c, 0x84, - 0x9c, 0x0d, 0x3e, 0x84, 0x9b, 0x0d, 0x3f, 0x84, 0x9c, 0x0d, 0x40, 0x84, - 0x9b, 0x0d, 0x42, 0x84, 0x9c, 0x0d, 0x43, 0x84, 0x9b, 0x0d, 0x44, 0x84, - 0x9c, 0x0d, 0x45, 0x84, 0x9b, 0x0d, 0x46, 0x84, 0x9c, 0x0d, 0x47, 0x84, - 0x9b, 0x0d, 0x48, 0x84, 0x9c, 0x0d, 0x49, 0x84, 0x9b, 0x0d, 0x4a, 0x84, - 0x9c, 0x0d, 0x4b, 0x84, 0x9b, 0x0d, 0x4c, 0x84, 0x9c, 0x0d, 0x4d, 0x84, - 0x9b, 0x0d, 0x4e, 0x84, 0x9c, 0x0d, 0x4f, 0x84, 0x9b, 0x0d, 0x50, 0x84, - 0x9c, 0x0d, 0x51, 0x84, 0x9b, 0x0d, 0x52, 0x84, 0x9c, 0x0d, 0x53, 0x84, - 0x9b, 0x0d, 0x54, 0x84, 0x9c, 0x0d, 0x55, 0x84, 0x9b, 0x0d, 0x56, 0x84, - 0x9c, 0x0d, 0x57, 0x84, 0x9b, 0x0d, 0x58, 0x84, 0x9c, 0x0d, 0x58, 0x84, - 0x9b, 0x0d, 0x59, 0x84, 0x9c, 0x0d, 0x5a, 0x84, 0x9b, 0x0d, 0x5b, 0x84, - 0x9c, 0x0d, 0x5c, 0x84, 0x9b, 0x0d, 0x5d, 0x84, 0x9c, 0x0d, 0x5d, 0x84, - 0x9b, 0x0d, 0x5e, 0x84, 0x9c, 0x0d, 0x5f, 0x84, 0x9b, 0x0d, 0x60, 0x84, - 0x9c, 0x0d, 0x60, 0x84, 0x9b, 0x0d, 0x61, 0x84, 0x9c, 0x0d, 0x62, 0x84, - 0x9b, 0x0d, 0x63, 0x84, 0x9c, 0x0d, 0x63, 0x84, 0x9b, 0x0d, 0x64, 0x84, - 0x9c, 0x0d, 0x65, 0x84, 0x9b, 0x0d, 0x66, 0x84, 0x9c, 0x0d, 0x66, 0x84, - 0x9b, 0x0d, 0x67, 0x84, 0x9c, 0x0d, 0x68, 0x84, 0x9b, 0x0d, 0x68, 0x84, - 0x9c, 0x0d, 0x69, 0x84, 0x9b, 0x0d, 0x6a, 0x84, 0x9c, 0x0d, 0x6a, 0x84, - 0x9b, 0x0d, 0x6b, 0x84, 0x9c, 0x0d, 0x6c, 0x84, 0x9b, 0x0d, 0x6c, 0x84, - 0x9c, 0x0d, 0x6d, 0x84, 0x9b, 0x0d, 0x6e, 0x84, 0x9c, 0x0d, 0x6e, 0x84, - 0x9b, 0x0d, 0x6f, 0x84, 0x9c, 0x0d, 0x70, 0x84, 0x9b, 0x0d, 0x70, 0x84, - 0x9c, 0x0d, 0x71, 0x84, 0x9b, 0x0d, 0x72, 0x84, 0x9c, 0x0d, 0x72, 0x84, - 0x9b, 0x0d, 0x73, 0x84, 0x9c, 0x0d, 0x73, 0x84, 0x9b, 0x0d, 0x74, 0x84, - 0x9c, 0x0d, 0x75, 0x84, 0x9b, 0x0d, 0x75, 0x84, 0x9c, 0x0d, 0x76, 0x84, - 0x9b, 0x0d, 0x76, 0x84, 0x9c, 0x0d, 0x77, 0x84, 0x9b, 0x0d, 0x78, 0x84, - 0x9c, 0x0d, 0x78, 0x84, 0x9b, 0x0d, 0x79, 0x84, 0x9c, 0x0d, 0x79, 0x84, - 0x9b, 0x0d, 0x7a, 0x84, 0x9c, 0x0d, 0x7a, 0x84, 0x9b, 0x0d, 0x7b, 0x84, - 0x9c, 0x0d, 0x7c, 0x84, 0x9b, 0x0d, 0x7c, 0x84, 0x9c, 0x0d, 0x7d, 0x84, - 0x9b, 0x0d, 0x7d, 0x84, 0x9c, 0x0d, 0x7e, 0x84, 0x9b, 0x0d, 0x7e, 0x84, - 0x9c, 0x0d, 0x7f, 0x84, 0x9b, 0x0d, 0x7f, 0x84, 0x9c, 0x0d, 0x80, 0x84, - 0x9b, 0x0d, 0x81, 0x84, 0x9c, 0x0d, 0x81, 0x84, 0x9b, 0x0d, 0x82, 0x84, - 0x9c, 0x0d, 0x82, 0x84, 0x9b, 0x0d, 0x83, 0x84, 0x9c, 0x0d, 0x83, 0x84, - 0x9b, 0x0d, 0x84, 0x84, 0x9c, 0x0d, 0x84, 0x84, 0x9b, 0x0d, 0x85, 0x84, - 0x9c, 0x0d, 0x85, 0x84, 0x9b, 0x0d, 0x86, 0x84, 0x9c, 0x0d, 0x86, 0x84, - 0x9b, 0x0d, 0x87, 0x84, 0x9c, 0x0d, 0x87, 0x84, 0x9b, 0x0d, 0x88, 0x84, - 0x9c, 0x0d, 0x88, 0x84, 0x9b, 0x0d, 0x89, 0x84, 0x9c, 0x0d, 0x89, 0x84, - 0x9b, 0x0d, 0x8a, 0x84, 0x9c, 0x0d, 0x8a, 0x84, 0x9b, 0x0d, 0x8b, 0x84, - 0x9c, 0x0d, 0x8b, 0x84, 0x9b, 0x0d, 0x8c, 0x84, 0x9c, 0x0d, 0x8c, 0x84, - 0x9b, 0x0d, 0x8d, 0x84, 0x9c, 0x0d, 0x8d, 0x84, 0x9b, 0x0d, 0x8e, 0x84, - 0x9c, 0x0d, 0x8e, 0x84, 0x9b, 0x0d, 0x8e, 0x84, 0x9c, 0x0d, 0x8f, 0x84, - 0x9b, 0x0d, 0x8f, 0x84, 0x9c, 0x0d, 0x90, 0x84, 0x9b, 0x0d, 0x90, 0x84, - 0x9c, 0x0d, 0x91, 0x84, 0x9b, 0x0d, 0x91, 0x84, 0x9c, 0x0d, 0x92, 0x84, - 0x9b, 0x0d, 0x92, 0x84, 0x9c, 0x0d, 0x93, 0x84, 0x9b, 0x0d, 0x93, 0x84, - 0x9c, 0x0d, 0x94, 0x84, 0x9b, 0x0d, 0x94, 0x84, 0x9c, 0x0d, 0x94, 0x84, - 0x9b, 0x0d, 0x95, 0x84, 0x9c, 0x0d, 0x95, 0x84, 0x9b, 0x0d, 0x96, 0x84, - 0x9c, 0x0d, 0x96, 0x84, 0x9b, 0x0d, 0x97, 0x84, 0x9c, 0x0d, 0x97, 0x84, - 0x9b, 0x0d, 0x98, 0x84, 0x9c, 0x0d, 0x98, 0x84, 0x9b, 0x0d, 0x98, 0x84, - 0x9c, 0x0d, 0x99, 0x84, 0x9b, 0x0d, 0x99, 0x84, 0x9c, 0x0d, 0x9a, 0x84, - 0x9b, 0x0d, 0x9a, 0x84, 0x9c, 0x0d, 0x9a, 0x84, 0x9b, 0x0d, 0x9b, 0x84, - 0x9c, 0x0d, 0x9b, 0x84, 0x9b, 0x0d, 0x9c, 0x84, 0x9c, 0x0d, 0x9c, 0x84, - 0x9c, 0x0d, 0x9d, 0x84, 0x9d, 0x0d, 0x9d, 0x84, 0x9d, 0x0d, 0x9d, 0x84, - 0x9d, 0x0d, 0x9e, 0x84, 0x9e, 0x0d, 0x9e, 0x84, 0x9e, 0x0d, 0x9f, 0x84, - 0x9f, 0x0d, 0x9f, 0x84, 0x9e, 0x0d, 0x9f, 0x84, 0x9f, 0x0d, 0xa0, 0x84, - 0x9e, 0x0d, 0xa0, 0x84, 0x9f, 0x0d, 0xa1, 0x84, 0x9e, 0x0d, 0xa1, 0x84, - 0x9f, 0x0d, 0xa1, 0x84, 0x9e, 0x0d, 0xa2, 0x84, 0x9f, 0x0d, 0xa2, 0x84, - 0x9e, 0x0d, 0xa3, 0x84, 0x9f, 0x0d, 0xa3, 0x84, 0x9e, 0x0d, 0xa3, 0x84, - 0x9f, 0x0d, 0xa4, 0x84, 0x9e, 0x0d, 0xa4, 0x84, 0x9f, 0x0d, 0xa5, 0x84, - 0x9e, 0x0d, 0xa5, 0x84, 0x9f, 0x0d, 0xa5, 0x84, 0x9e, 0x0d, 0xa6, 0x84, - 0x9f, 0x0d, 0xa6, 0x84, 0x9e, 0x0d, 0xa6, 0x84, 0x9f, 0x0d, 0xa7, 0x84, - 0x9e, 0x0d, 0xa7, 0x84, 0x9f, 0x0d, 0xa8, 0x85, 0xa2, 0x0d, 0xa8, 0x84, - 0x9f, 0x0d, 0xa8, 0x85, 0xa2, 0x0d, 0xa9, 0x84, 0x9f, 0x0d, 0xa9, 0x85, - 0xa2, 0x0d, 0xaa, 0x85, 0xa2, 0x0d, 0xaa, 0x85, 0xa2, 0x0d, 0xaa, 0x85, - 0xa2, 0x0d, 0xab, 0x85, 0xa2, 0x0d, 0xab, 0x85, 0xa2, 0x0d, 0xab, 0x85, - 0xa2, 0x0d, 0xac, 0x86, 0xa6, 0x0d, 0xac, 0x86, 0xa6, 0x0d, 0xac, 0x86, - 0xa6, 0x0d, 0xad, 0x86, 0xa6, 0x0d, 0xad, 0x86, 0xa6, 0x0d, 0xae, 0x86, - 0xa6, 0x0d, 0xae, 0x86, 0xa6, 0x0d, 0xae, 0x86, 0xa6, 0x0d, 0xaf, 0x86, - 0xa6, 0x0d, 0xaf, 0x86, 0xa6, 0x0d, 0xaf, 0x87, 0xaa, 0x0d, 0xb0, 0x86, - 0xa6, 0x0d, 0xb0, 0x87, 0xaa, 0x0d, 0xb0, 0x86, 0xa6, 0x0d, 0xb1, 0x87, - 0xaa, 0x0d, 0xb1, 0x87, 0xa9, 0x0d, 0xb2, 0x87, 0xaa, 0x0d, 0xb2, 0x87, - 0xa9, 0x0d, 0xb2, 0x87, 0xaa, 0x0d, 0xb3, 0x88, 0xad, 0x0d, 0xb3, 0x88, - 0xad, 0x0d, 0xb3, 0x88, 0xad, 0x0d, 0xb4, 0x88, 0xad, 0x0d, 0xb4, 0x88, - 0xad, 0x0d, 0xb4, 0x88, 0xad, 0x0d, 0xb5, 0x88, 0xad, 0x0d, 0xb5, 0x88, - 0xad, 0x0d, 0xb5, 0x88, 0xad, 0x0d, 0xb6, 0x88, 0xad, 0x0d, 0xb6, 0x89, - 0xb0, 0x0d, 0xb6, 0x88, 0xad, 0x0d, 0xb7, 0x89, 0xb0, 0x0d, 0xb7, 0x88, - 0xad, 0x0d, 0xb7, 0x89, 0xb0, 0x0d, 0xb8, 0x89, 0xb2, 0x0d, 0xb8, 0x89, - 0xb0, 0x0d, 0xb8, 0x89, 0xb2, 0x0d, 0xb9, 0x89, 0xb0, 0x0d, 0xb9, 0x89, - 0xb2, 0x0d, 0xb9, 0x89, 0xb0, 0x0d, 0xba, 0x89, 0xb2, 0x0d, 0xba, 0x89, - 0xb2, 0x0d, 0xba, 0x89, 0xb2, 0x0d, 0xbb, 0x89, 0xb2, 0x0d, 0xbb, 0x89, - 0xb2, 0x0d, 0xbb, 0x8a, 0xb3, 0x0d, 0xbc, 0x8a, 0xb4, 0x0d, 0xbc, 0x8b, - 0xb7, 0x0d, 0xbc, 0x8b, 0xb7, 0x0d, 0xbd, 0x8b, 0xb7, 0x0d, 0xbd, 0x8b, - 0xb7, 0x0d, 0xbd, 0x8b, 0xb7, 0x0d, 0xbe, 0x8b, 0xb7, 0x0d, 0xbe, 0x8b, - 0xb7, 0x0d, 0xbe, 0x8b, 0xb7, 0x0d, 0xbf, 0x8b, 0xb7, 0x0d, 0xbf, 0x8b, - 0xb7, 0x0d, 0xbf, 0x8b, 0xb7, 0x0d, 0xc0, 0x8b, 0xb7, 0x0d, 0xc0, 0x8c, - 0xba, 0x0d, 0xc0, 0x8b, 0xb7, 0x0d, 0xc1, 0x8c, 0xba, 0x0d, 0xc1, 0x8b, - 0xb7, 0x0d, 0xc1, 0x8c, 0xba, 0x0d, 0xc1, 0x8c, 0xba, 0x0d, 0xc2, 0x8c, - 0xba, 0x0d, 0xc2, 0x8c, 0xba, 0x0d, 0xc2, 0x8c, 0xba, 0x0d, 0xc3, 0x8d, - 0xbd, 0x0d, 0xc3, 0x8c, 0xba, 0x0d, 0xc3, 0x8d, 0xbd, 0x0d, 0xc4, 0x8c, - 0xba, 0x0d, 0xc4, 0x8d, 0xbd, 0x0d, 0xc4, 0x8d, 0xbd, 0x0d, 0xc5, 0x8d, - 0xbd, 0x0d, 0xc5, 0x8d, 0xbd, 0x0d, 0xc5, 0x8d, 0xbd, 0x0d, 0xc6, 0x8e, - 0xc0, 0x0d, 0xc6, 0x8e, 0xc0, 0x0d, 0xc6, 0x8e, 0xc0, 0x0d, 0xc6, 0x8e, - 0xc0, 0x0d, 0xc7, 0x8e, 0xc0, 0x0d, 0xc7, 0x8e, 0xc0, 0x0d, 0xc7, 0x8e, - 0xc0, 0x0d, 0xc8, 0x8e, 0xc0, 0x0d, 0xc8, 0x8e, 0xc0, 0x0d, 0xc8, 0x8e, - 0xc0, 0x0d, 0xc9, 0x8e, 0xc3, 0x0d, 0xc9, 0x8e, 0xc0, 0x0d, 0xc9, 0x8e, - 0xc3, 0x0d, 0xc9, 0x8e, 0xc0, 0x0d, 0xca, 0x8e, 0xc3, 0x0d, 0xca, 0x8e, - 0xc0, 0x0d, 0xca, 0x8e, 0xc3, 0x0d, 0xcb, 0x8e, 0xc3, 0x0d, 0xcb, 0x8e, - 0xc3, 0x0d, 0xcb, 0x8e, 0xc3, 0x0d, 0xcc, 0x8e, 0xc3, 0x0d, 0xcc, 0x8f, - 0xc6, 0x0d, 0xcc, 0x8e, 0xc3, 0x0d, 0xcc, 0x8f, 0xc6, 0x0d, 0xcd, 0x8e, - 0xc3, 0x0d, 0xcd, 0x8f, 0xc6, 0x0d, 0xcd, 0x8f, 0xc6, 0x0d, 0xce, 0x8f, - 0xc6, 0x0d, 0xce, 0x8f, 0xc6, 0x0d, 0xce, 0x8f, 0xc6, 0x0d, 0xce, 0x90, - 0xc9, 0x0d, 0xcf, 0x90, 0xc9, 0x0d, 0xcf, 0x90, 0xc9, 0x0d, 0xcf, 0x90, - 0xc9, 0x0d, 0xd0, 0x90, 0xc9, 0x0d, 0xd0, 0x90, 0xc9, 0x0d, 0xd0, 0x90, - 0xc9, 0x0d, 0xd0, 0x90, 0xc9, 0x0d, 0xd1, 0x90, 0xc9, 0x0d, 0xd1, 0x90, - 0xc9, 0x0d, 0xd1, 0x91, 0xcc, 0x0d, 0xd2, 0x90, 0xc9, 0x0d, 0xd2, 0x91, - 0xcc, 0x0d, 0xd2, 0x90, 0xc9, 0x0d, 0xd2, 0x91, 0xcc, 0x0d, 0xd3, 0x91, - 0xcb, 0x0d, 0xd3, 0x91, 0xcc, 0x0d, 0xd3, 0x91, 0xcb, 0x0d, 0xd4, 0x91, - 0xcc, 0x0d, 0xd4, 0x92, 0xce, 0x0d, 0xd4, 0x92, 0xce, 0x0d, 0xd4, 0x92, - 0xce, 0x0d, 0xd5, 0x92, 0xce, 0x0d, 0xd5, 0x92, 0xce, 0x0d, 0xd5, 0x92, - 0xce, 0x0d, 0xd6, 0x92, 0xce, 0x0d, 0xd6, 0x92, 0xce, 0x0d, 0xd6, 0x92, - 0xce, 0x0d, 0xd6, 0x92, 0xce, 0x0d, 0xd7, 0x93, 0xd1, 0x0d, 0xd7, 0x92, - 0xce, 0x0d, 0xd7, 0x93, 0xd1, 0x0d, 0xd7, 0x92, 0xce, 0x0d, 0xd8, 0x93, - 0xd1, 0x0d, 0xd8, 0x92, 0xce, 0x0d, 0xd8, 0x93, 0xd1, 0x0d, 0xd9, 0x93, - 0xd1, 0x0d, 0xd9, 0x93, 0xd1, 0x0d, 0xd9, 0x94, 0xd4, 0x0d, 0xd9, 0x93, - 0xd1, 0x0d, 0xda, 0x94, 0xd4, 0x0d, 0xda, 0x93, 0xd1, 0x0d, 0xda, 0x94, - 0xd4, 0x0d, 0xda, 0x93, 0xd1, 0x0d, 0xdb, 0x94, 0xd4, 0x0d, 0xdb, 0x94, - 0xd3, 0x0d, 0xdb, 0x94, 0xd4, 0x0d, 0xdb, 0x94, 0xd3, 0x0d, 0xdc, 0x94, - 0xd4, 0x0d, 0xdc, 0x95, 0xd6, 0x0d, 0xdc, 0x95, 0xd6, 0x0d, 0xdd, 0x95, - 0xd6, 0x0d, 0xdd, 0x95, 0xd6, 0x0d, 0xdd, 0x95, 0xd6, 0x0d, 0xdd, 0x95, - 0xd6, 0x0d, 0xde, 0x95, 0xd6, 0x0d, 0xde, 0x95, 0xd6, 0x0d, 0xde, 0x95, - 0xd6, 0x0d, 0xde, 0x95, 0xd6, 0x0d, 0xdf, 0x96, 0xd9, 0x0d, 0xdf, 0x95, - 0xd6, 0x0d, 0xdf, 0x96, 0xd9, 0x0d, 0xdf, 0x95, 0xd6, 0x0d, 0xe0, 0x96, - 0xd9, 0x0d, 0xe0, 0x95, 0xd6, 0x0d, 0xe0, 0x96, 0xd9, 0x0d, 0xe1, 0x96, - 0xd9, 0x0d, 0xe1, 0x96, 0xd9, 0x0d, 0xe1, 0x97, 0xdb, 0x0d, 0xe1, 0x96, - 0xd9, 0x0d, 0xe2, 0x97, 0xdb, 0x0d, 0xe2, 0x96, 0xd9, 0x0d, 0xe2, 0x97, - 0xdb, 0x0d, 0xe2, 0x96, 0xd9, 0x0d, 0xe3, 0x97, 0xdb, 0x0d, 0xe3, 0x97, - 0xdb, 0x0d, 0xe3, 0x97, 0xdb, 0x0d, 0xe3, 0x98, 0xde, 0x0d, 0xe4, 0x98, - 0xde, 0x0d, 0xe4, 0x98, 0xde, 0x0d, 0xe4, 0x98, 0xde, 0x0d, 0xe4, 0x98, - 0xde, 0x0d, 0xe5, 0x98, 0xde, 0x0d, 0xe5, 0x98, 0xde, 0x0d, 0xe5, 0x98, - 0xde, 0x0d, 0xe5, 0x98, 0xde, 0x0d, 0xe6, 0x98, 0xde, 0x0d, 0xe6, 0x98, - 0xde, 0x0d, 0xe6, 0x98, 0xde, 0x0d, 0xe6, 0x98, 0xe0, 0x0d, 0xe7, 0x98, - 0xde, 0x0d, 0xe7, 0x98, 0xe0, 0x0d, 0xe7, 0x98, 0xdf, 0x0d, 0xe7, 0x98, - 0xe0, 0x0d, 0xe8, 0x98, 0xdf, 0x0d, 0xe8, 0x98, 0xe0, 0x0d, 0xe8, 0x98, - 0xe0, 0x0d, 0xe8, 0x98, 0xe0, 0x0d, 0xe9, 0x99, 0xe3, 0x0d, 0xe9, 0x98, - 0xe0, 0x0d, 0xe9, 0x99, 0xe3, 0x0d, 0xe9, 0x98, 0xe0, 0x0d, 0xea, 0x99, - 0xe3, 0x0d, 0xea, 0x98, 0xe0, 0x0d, 0xea, 0x99, 0xe3, 0x0d, 0xea, 0x99, - 0xe2, 0x0d, 0xeb, 0x99, 0xe3, 0x0d, 0xeb, 0x9a, 0xe5, 0x0d, 0xeb, 0x9a, - 0xe5, 0x0d, 0xeb, 0x9a, 0xe5, 0x0d, 0xec, 0x9a, 0xe5, 0x0d, 0xec, 0x9a, - 0xe5, 0x0d, 0xec, 0x9a, 0xe5, 0x0d, 0xec, 0x9a, 0xe5, 0x0d, 0xec, 0x9a, - 0xe5, 0x0d, 0xed, 0x9a, 0xe5, 0x0d, 0xed, 0x9a, 0xe5, 0x0d, 0xed, 0x9b, - 0xe7, 0x0d, 0xed, 0x9a, 0xe5, 0x0d, 0xee, 0x9b, 0xe7, 0x0d, 0xee, 0x9a, - 0xe5, 0x0d, 0xee, 0x9b, 0xe7, 0x0d, 0xee, 0x9a, 0xe5, 0x0d, 0xef, 0x9b, - 0xe7, 0x0d, 0xef, 0x9b, 0xe7, 0x0d, 0xef, 0x9b, 0xe7, 0x0d, 0xef, 0x9c, - 0xea, 0x0d, 0xf0, 0x9c, 0xea, 0x0d, 0xf0, 0x9c, 0xea, 0x0d, 0xf0, 0x9c, - 0xea, 0x0d, 0xf0, 0x9c, 0xea, 0x0d, 0xf1, 0x9c, 0xea, 0x0d, 0xf1, 0x9c, - 0xea, 0x0d, 0xf1, 0x9c, 0xea, 0x0d, 0xf1, 0x9c, 0xea, 0x0d, 0xf2, 0x9c, - 0xea, 0x0d, 0xf2, 0x9d, 0xec, 0x0d, 0xf2, 0x9c, 0xea, 0x0d, 0xf2, 0x9d, - 0xec, 0x0d, 0xf2, 0x9c, 0xea, 0x0d, 0xf3, 0x9d, 0xec, 0x0d, 0xf3, 0x9c, - 0xea, 0x0d, 0xf3, 0x9d, 0xec, 0x0d, 0xf3, 0x9c, 0xea, 0x0d, 0xf4, 0x9d, - 0xec, 0x0d, 0xf4, 0x9d, 0xec, 0x0d, 0xf4, 0x9d, 0xec, 0x0d, 0xf4, 0x9d, - 0xee, 0x0d, 0xf5, 0x9d, 0xec, 0x0d, 0xf5, 0x9d, 0xee, 0x0d, 0xf5, 0x9d, - 0xec, 0x0d, 0xf5, 0x9d, 0xee, 0x0d, 0xf5, 0x9d, 0xec, 0x0d, 0xf6, 0x9d, - 0xee, 0x0d, 0xf6, 0x9d, 0xee, 0x0d, 0xf6, 0x9d, 0xee, 0x0d, 0xf6, 0x9e, - 0xf0, 0x0d, 0xf7, 0x9e, 0xf1, 0x0d, 0xf7, 0x9e, 0xf0, 0x0d, 0xf7, 0x9e, - 0xf1, 0x0d, 0xf7, 0x9e, 0xf0, 0x0d, 0xf8, 0x9e, 0xf1, 0x0d, 0xf8, 0x9e, - 0xf0, 0x0d, 0xf8, 0x9e, 0xf1, 0x0d, 0xf8, 0x9e, 0xf0, 0x0d, 0xf8, 0x9e, - 0xf1, 0x0d, 0xf9, 0x9f, 0xf3, 0x0d, 0xf9, 0x9e, 0xf1, 0x0d, 0xf9, 0x9f, - 0xf3, 0x0d, 0xf9, 0x9e, 0xf1, 0x0d, 0xfa, 0x9f, 0xf3, 0x0d, 0xfa, 0x9e, - 0xf1, 0x0d, 0xfa, 0x9f, 0xf3, 0x0d, 0xfa, 0x9f, 0xf2, 0x0d, 0xfa, 0x9f, - 0xf3, 0x0d, 0xfb, 0xa0, 0xf5, 0x0d, 0xfb, 0x9f, 0xf3, 0x0d, 0xfb, 0xa0, - 0xf5, 0x0d, 0xfb, 0x9f, 0xf3, 0x0d, 0xfc, 0xa0, 0xf5, 0x0d, 0xfc, 0x9f, - 0xf3, 0x0d, 0xfc, 0xa0, 0xf5, 0x0d, 0xfc, 0x9f, 0xf3, 0x0d, 0xfc, 0xa0, - 0xf5, 0x0d, 0xfd, 0xa0, 0xf5, 0x0d, 0xfd, 0xa0, 0xf5, 0x0d, 0xfd, 0xa1, - 0xf7, 0x0d, 0xfd, 0xa1, 0xf7, 0x0d, 0xfe, 0xa1, 0xf7, 0x0d, 0xfe, 0xa1, - 0xf7, 0x0d, 0xfe, 0xa1, 0xf7, 0x0d, 0xfe, 0xa1, 0xf7, 0x0d, 0xfe, 0xa1, - 0xf7, 0x0d, 0xff, 0xa1, 0xf7, 0x0d, 0xff, 0xa1, 0xf7, 0x0d, 0x03, 0x83, - 0x9b, 0x0d, 0x0a, 0x83, 0x9b, 0x0d, 0x0f, 0x83, 0x9b, 0x0d, 0x14, 0x83, - 0x9b, 0x0d, 0x17, 0x83, 0x9b, 0x0d, 0x1b, 0x83, 0x9b, 0x0d, 0x1e, 0x83, - 0x9b, 0x0d, 0x20, 0x83, 0x9c, 0x0d, 0x23, 0x83, 0x9b, 0x0d, 0x25, 0x83, - 0x9c, 0x0d, 0x27, 0x83, 0x9b, 0x0d, 0x29, 0x83, 0x9c, 0x0d, 0x2b, 0x83, - 0x9b, 0x0d, 0x2d, 0x83, 0x9c, 0x0d, 0x2f, 0x83, 0x9b, 0x0d, 0x31, 0x83, - 0x9c, 0x0d, 0x32, 0x83, 0x9b, 0x0d, 0x34, 0x83, 0x9c, 0x0d, 0x35, 0x83, - 0x9b, 0x0d, 0x37, 0x83, 0x9c, 0x0d, 0x38, 0x83, 0x9b, 0x0d, 0x3a, 0x83, - 0x9c, 0x0d, 0x3b, 0x83, 0x9b, 0x0d, 0x3c, 0x83, 0x9c, 0x0d, 0x3e, 0x83, - 0x9b, 0x0d, 0x3f, 0x83, 0x9c, 0x0d, 0x40, 0x83, 0x9b, 0x0d, 0x42, 0x83, - 0x9c, 0x0d, 0x43, 0x83, 0x9b, 0x0d, 0x44, 0x83, 0x9c, 0x0d, 0x45, 0x83, - 0x9b, 0x0d, 0x46, 0x83, 0x9c, 0x0d, 0x47, 0x83, 0x9b, 0x0d, 0x48, 0x83, - 0x9c, 0x0d, 0x49, 0x83, 0x9b, 0x0d, 0x4a, 0x83, 0x9c, 0x0d, 0x4b, 0x83, - 0x9b, 0x0d, 0x4c, 0x83, 0x9c, 0x0d, 0x4d, 0x83, 0x9b, 0x0d, 0x4e, 0x83, - 0x9c, 0x0d, 0x4f, 0x83, 0x9b, 0x0d, 0x50, 0x83, 0x9c, 0x0d, 0x51, 0x83, - 0x9b, 0x0d, 0x52, 0x83, 0x9c, 0x0d, 0x53, 0x83, 0x9b, 0x0d, 0x54, 0x83, - 0x9c, 0x0d, 0x55, 0x83, 0x9b, 0x0d, 0x56, 0x83, 0x9c, 0x0d, 0x57, 0x83, - 0x9b, 0x0d, 0x58, 0x83, 0x9c, 0x0d, 0x58, 0x83, 0x9b, 0x0d, 0x59, 0x83, - 0x9c, 0x0d, 0x5a, 0x83, 0x9b, 0x0d, 0x5b, 0x83, 0x9c, 0x0d, 0x5c, 0x83, - 0x9b, 0x0d, 0x5d, 0x83, 0x9c, 0x0d, 0x5d, 0x83, 0x9b, 0x0d, 0x5e, 0x83, - 0x9c, 0x0d, 0x5f, 0x83, 0x9b, 0x0d, 0x60, 0x83, 0x9c, 0x0d, 0x60, 0x83, - 0x9b, 0x0d, 0x61, 0x83, 0x9c, 0x0d, 0x62, 0x83, 0x9b, 0x0d, 0x63, 0x83, - 0x9c, 0x0d, 0x63, 0x83, 0x9b, 0x0d, 0x64, 0x83, 0x9c, 0x0d, 0x65, 0x83, - 0x9b, 0x0d, 0x66, 0x83, 0x9c, 0x0d, 0x66, 0x83, 0x9b, 0x0d, 0x67, 0x83, - 0x9c, 0x0d, 0x68, 0x83, 0x9b, 0x0d, 0x68, 0x83, 0x9c, 0x0d, 0x69, 0x83, - 0x9b, 0x0d, 0x6a, 0x83, 0x9c, 0x0d, 0x6a, 0x83, 0x9b, 0x0d, 0x6b, 0x83, - 0x9c, 0x0d, 0x6c, 0x83, 0x9b, 0x0d, 0x6c, 0x83, 0x9c, 0x0d, 0x6d, 0x83, - 0x9b, 0x0d, 0x6e, 0x83, 0x9c, 0x0d, 0x6e, 0x83, 0x9b, 0x0d, 0x6f, 0x83, - 0x9c, 0x0d, 0x70, 0x83, 0x9b, 0x0d, 0x70, 0x83, 0x9c, 0x0d, 0x71, 0x83, - 0x9b, 0x0d, 0x72, 0x83, 0x9c, 0x0d, 0x72, 0x83, 0x9b, 0x0d, 0x73, 0x83, - 0x9c, 0x0d, 0x73, 0x83, 0x9b, 0x0d, 0x74, 0x83, 0x9c, 0x0d, 0x75, 0x83, - 0x9b, 0x0d, 0x75, 0x83, 0x9c, 0x0d, 0x76, 0x83, 0x9b, 0x0d, 0x76, 0x83, - 0x9c, 0x0d, 0x77, 0x83, 0x9b, 0x0d, 0x78, 0x83, 0x9c, 0x0d, 0x78, 0x83, - 0x9b, 0x0d, 0x79, 0x83, 0x9c, 0x0d, 0x79, 0x83, 0x9b, 0x0d, 0x7a, 0x83, - 0x9c, 0x0d, 0x7a, 0x83, 0x9b, 0x0d, 0x7b, 0x83, 0x9c, 0x0d, 0x7c, 0x83, - 0x9b, 0x0d, 0x7c, 0x83, 0x9c, 0x0d, 0x7d, 0x83, 0x9b, 0x0d, 0x7d, 0x83, - 0x9c, 0x0d, 0x7e, 0x83, 0x9b, 0x0d, 0x7e, 0x83, 0x9c, 0x0d, 0x7f, 0x83, - 0x9b, 0x0d, 0x7f, 0x83, 0x9c, 0x0d, 0x80, 0x83, 0x9b, 0x0d, 0x81, 0x83, - 0x9c, 0x0d, 0x81, 0x83, 0x9b, 0x0d, 0x82, 0x83, 0x9c, 0x0d, 0x82, 0x83, - 0x9b, 0x0d, 0x83, 0x83, 0x9c, 0x0d, 0x83, 0x83, 0x9b, 0x0d, 0x84, 0x83, - 0x9c, 0x0d, 0x84, 0x83, 0x9b, 0x0d, 0x85, 0x83, 0x9c, 0x0d, 0x85, 0x83, - 0x9b, 0x0d, 0x86, 0x83, 0x9c, 0x0d, 0x86, 0x83, 0x9b, 0x0d, 0x87, 0x83, - 0x9c, 0x0d, 0x87, 0x83, 0x9b, 0x0d, 0x88, 0x83, 0x9c, 0x0d, 0x88, 0x83, - 0x9b, 0x0d, 0x89, 0x83, 0x9c, 0x0d, 0x89, 0x83, 0x9b, 0x0d, 0x8a, 0x83, - 0x9c, 0x0d, 0x8a, 0x83, 0x9b, 0x0d, 0x8b, 0x83, 0x9c, 0x0d, 0x8b, 0x83, - 0x9b, 0x0d, 0x8c, 0x83, 0x9c, 0x0d, 0x8c, 0x83, 0x9b, 0x0d, 0x8d, 0x83, - 0x9c, 0x0d, 0x8d, 0x83, 0x9b, 0x0d, 0x8e, 0x83, 0x9c, 0x0d, 0x8e, 0x83, - 0x9b, 0x0d, 0x8e, 0x83, 0x9c, 0x0d, 0x8f, 0x83, 0x9b, 0x0d, 0x8f, 0x83, - 0x9c, 0x0d, 0x90, 0x83, 0x9b, 0x0d, 0x90, 0x83, 0x9c, 0x0d, 0x91, 0x83, - 0x9b, 0x0d, 0x91, 0x83, 0x9c, 0x0d, 0x92, 0x83, 0x9b, 0x0d, 0x92, 0x83, - 0x9c, 0x0d, 0x93, 0x83, 0x9b, 0x0d, 0x93, 0x83, 0x9c, 0x0d, 0x94, 0x83, - 0x9b, 0x0d, 0x94, 0x83, 0x9c, 0x0d, 0x94, 0x83, 0x9b, 0x0d, 0x95, 0x83, - 0x9c, 0x0d, 0x95, 0x83, 0x9b, 0x0d, 0x96, 0x83, 0x9c, 0x0d, 0x96, 0x83, - 0x9b, 0x0d, 0x97, 0x83, 0x9c, 0x0d, 0x97, 0x83, 0x9b, 0x0d, 0x98, 0x83, - 0x9c, 0x0d, 0x98, 0x83, 0x9b, 0x0d, 0x98, 0x83, 0x9c, 0x0d, 0x99, 0x83, - 0x9b, 0x0d, 0x99, 0x83, 0x9c, 0x0d, 0x9a, 0x83, 0x9b, 0x0d, 0x9a, 0x83, - 0x9c, 0x0d, 0x9a, 0x83, 0x9b, 0x0d, 0x9b, 0x83, 0x9c, 0x0d, 0x9b, 0x83, - 0x9b, 0x0d, 0x9c, 0x83, 0x9c, 0x0d, 0x9c, 0x83, 0x9c, 0x0d, 0x9d, 0x83, - 0x9d, 0x0d, 0x9d, 0x83, 0x9c, 0x0d, 0x9d, 0x83, 0x9d, 0x0d, 0x9e, 0x83, - 0x9c, 0x0d, 0x9e, 0x83, 0x9d, 0x0d, 0x9f, 0x83, 0x9c, 0x0d, 0x9f, 0x83, - 0x9d, 0x0d, 0x9f, 0x83, 0x9c, 0x0d, 0xa0, 0x83, 0x9d, 0x0d, 0xa0, 0x83, - 0x9c, 0x0d, 0xa1, 0x83, 0x9d, 0x0d, 0xa1, 0x83, 0x9c, 0x0d, 0xa1, 0x83, - 0x9d, 0x0d, 0xa2, 0x83, 0x9c, 0x0d, 0xa2, 0x83, 0x9d, 0x0d, 0xa3, 0x83, - 0x9c, 0x0d, 0xa3, 0x83, 0x9d, 0x0d, 0xa3, 0x83, 0x9c, 0x0d, 0xa4, 0x83, - 0x9d, 0x0d, 0xa4, 0x83, 0x9c, 0x0d, 0xa5, 0x83, 0x9d, 0x0d, 0xa5, 0x83, - 0x9c, 0x0d, 0xa5, 0x83, 0x9d, 0x0d, 0xa6, 0x84, 0xa0, 0x0d, 0xa6, 0x84, - 0xa1, 0x0d, 0xa6, 0x84, 0xa0, 0x0d, 0xa7, 0x84, 0xa1, 0x0d, 0xa7, 0x84, - 0xa0, 0x0d, 0xa8, 0x84, 0xa1, 0x0d, 0xa8, 0x84, 0xa0, 0x0d, 0xa8, 0x84, - 0xa1, 0x0d, 0xa9, 0x84, 0xa0, 0x0d, 0xa9, 0x84, 0xa1, 0x0d, 0xaa, 0x85, - 0xa4, 0x0d, 0xaa, 0x84, 0xa1, 0x0d, 0xaa, 0x85, 0xa4, 0x0d, 0xab, 0x84, - 0xa1, 0x0d, 0xab, 0x85, 0xa4, 0x0d, 0xab, 0x85, 0xa4, 0x0d, 0xac, 0x85, - 0xa4, 0x0d, 0xac, 0x85, 0xa4, 0x0d, 0xac, 0x85, 0xa4, 0x0d, 0xad, 0x85, - 0xa4, 0x0d, 0xad, 0x85, 0xa4, 0x0d, 0xae, 0x86, 0xa8, 0x0d, 0xae, 0x85, - 0xa4, 0x0d, 0xae, 0x86, 0xa8, 0x0d, 0xaf, 0x86, 0xa7, 0x0d, 0xaf, 0x86, - 0xa8, 0x0d, 0xaf, 0x86, 0xa7, 0x0d, 0xb0, 0x86, 0xa8, 0x0d, 0xb0, 0x86, - 0xa7, 0x0d, 0xb0, 0x86, 0xa8, 0x0d, 0xb1, 0x87, 0xab, 0x0d, 0xb1, 0x87, - 0xab, 0x0d, 0xb2, 0x87, 0xab, 0x0d, 0xb2, 0x87, 0xab, 0x0d, 0xb2, 0x87, - 0xab, 0x0d, 0xb3, 0x87, 0xab, 0x0d, 0xb3, 0x87, 0xab, 0x0d, 0xb3, 0x87, - 0xab, 0x0d, 0xb4, 0x87, 0xab, 0x0d, 0xb4, 0x87, 0xab, 0x0d, 0xb4, 0x88, - 0xaf, 0x0d, 0xb5, 0x87, 0xab, 0x0d, 0xb5, 0x88, 0xaf, 0x0d, 0xb5, 0x87, - 0xab, 0x0d, 0xb6, 0x88, 0xaf, 0x0d, 0xb6, 0x88, 0xae, 0x0d, 0xb6, 0x88, - 0xaf, 0x0d, 0xb7, 0x88, 0xae, 0x0d, 0xb7, 0x88, 0xaf, 0x0d, 0xb7, 0x89, - 0xb2, 0x0d, 0xb8, 0x89, 0xb2, 0x0d, 0xb8, 0x89, 0xb2, 0x0d, 0xb8, 0x89, - 0xb2, 0x0d, 0xb9, 0x89, 0xb2, 0x0d, 0xb9, 0x89, 0xb2, 0x0d, 0xb9, 0x89, - 0xb2, 0x0d, 0xba, 0x89, 0xb2, 0x0d, 0xba, 0x89, 0xb2, 0x0d, 0xba, 0x89, - 0xb2, 0x0d, 0xbb, 0x8a, 0xb5, 0x0d, 0xbb, 0x89, 0xb2, 0x0d, 0xbb, 0x8a, - 0xb5, 0x0d, 0xbc, 0x89, 0xb2, 0x0d, 0xbc, 0x8a, 0xb5, 0x0d, 0xbc, 0x8a, - 0xb5, 0x0d, 0xbd, 0x8a, 0xb5, 0x0d, 0xbd, 0x8a, 0xb5, 0x0d, 0xbd, 0x8a, - 0xb5, 0x0d, 0xbe, 0x8b, 0xb8, 0x0d, 0xbe, 0x8a, 0xb5, 0x0d, 0xbe, 0x8b, - 0xb8, 0x0d, 0xbf, 0x8a, 0xb5, 0x0d, 0xbf, 0x8b, 0xb8, 0x0d, 0xbf, 0x8a, - 0xb5, 0x0d, 0xc0, 0x8b, 0xb8, 0x0d, 0xc0, 0x8b, 0xb8, 0x0d, 0xc0, 0x8b, - 0xb8, 0x0d, 0xc1, 0x8b, 0xb8, 0x0d, 0xc1, 0x8b, 0xb8, 0x0d, 0xc1, 0x8c, - 0xbb, 0x0d, 0xc1, 0x8c, 0xbc, 0x0d, 0xc2, 0x8c, 0xbb, 0x0d, 0xc2, 0x8c, - 0xbc, 0x0d, 0xc2, 0x8c, 0xbb, 0x0d, 0xc3, 0x8c, 0xbc, 0x0d, 0xc3, 0x8c, - 0xbb, 0x0d, 0xc3, 0x8c, 0xbc, 0x0d, 0xc4, 0x8c, 0xbb, 0x0d, 0xc4, 0x8c, - 0xbc, 0x0d, 0xc4, 0x8d, 0xbf, 0x0d, 0xc5, 0x8c, 0xbc, 0x0d, 0xc5, 0x8d, - 0xbf, 0x0d, 0xc5, 0x8c, 0xbc, 0x0d, 0xc6, 0x8d, 0xbf, 0x0d, 0xc6, 0x8d, - 0xbe, 0x0d, 0xc6, 0x8d, 0xbf, 0x0d, 0xc6, 0x8d, 0xbe, 0x0d, 0xc7, 0x8d, - 0xbf, 0x0d, 0xc7, 0x8e, 0xc1, 0x0d, 0xc7, 0x8d, 0xbf, 0x0d, 0xc8, 0x8e, - 0xc1, 0x0d, 0xc8, 0x8d, 0xbf, 0x0d, 0xc8, 0x8e, 0xc1, 0x0d, 0xc9, 0x8e, - 0xc1, 0x0d, 0xc9, 0x8e, 0xc1, 0x0d, 0xc9, 0x8e, 0xc1, 0x0d, 0xc9, 0x8e, - 0xc1, 0x0d, 0xca, 0x8f, 0xc4, 0x0d, 0xca, 0x8f, 0xc5, 0x0d, 0xca, 0x8f, - 0xc4, 0x0d, 0xcb, 0x8f, 0xc5, 0x0d, 0xcb, 0x8f, 0xc4, 0x0d, 0xcb, 0x8f, - 0xc5, 0x0d, 0xcc, 0x8f, 0xc4, 0x0d, 0xcc, 0x8f, 0xc5, 0x0d, 0xcc, 0x8f, - 0xc4, 0x0d, 0xcc, 0x8f, 0xc5, 0x0d, 0xcd, 0x8f, 0xc4, 0x0d, 0xcd, 0x8f, - 0xc5, 0x0d, 0xcd, 0x90, 0xc7, 0x0d, 0xce, 0x8f, 0xc5, 0x0d, 0xce, 0x90, - 0xc7, 0x0d, 0xce, 0x8f, 0xc5, 0x0d, 0xce, 0x90, 0xc7, 0x0d, 0xcf, 0x90, - 0xc7, 0x0d, 0xcf, 0x90, 0xc7, 0x0d, 0xcf, 0x90, 0xc7, 0x0d, 0xd0, 0x90, - 0xc7, 0x0d, 0xd0, 0x91, 0xca, 0x0d, 0xd0, 0x90, 0xc7, 0x0d, 0xd0, 0x91, - 0xca, 0x0d, 0xd1, 0x90, 0xc7, 0x0d, 0xd1, 0x91, 0xca, 0x0d, 0xd1, 0x91, - 0xca, 0x0d, 0xd2, 0x91, 0xca, 0x0d, 0xd2, 0x91, 0xca, 0x0d, 0xd2, 0x91, - 0xca, 0x0d, 0xd2, 0x92, 0xcd, 0x0d, 0xd3, 0x92, 0xcd, 0x0d, 0xd3, 0x92, - 0xcd, 0x0d, 0xd3, 0x92, 0xcd, 0x0d, 0xd4, 0x92, 0xcd, 0x0d, 0xd4, 0x92, - 0xcd, 0x0d, 0xd4, 0x92, 0xcd, 0x0d, 0xd4, 0x92, 0xcd, 0x0d, 0xd5, 0x92, - 0xcd, 0x0d, 0xd5, 0x92, 0xcd, 0x0d, 0xd5, 0x93, 0xd0, 0x0d, 0xd6, 0x92, - 0xcd, 0x0d, 0xd6, 0x93, 0xd0, 0x0d, 0xd6, 0x92, 0xcd, 0x0d, 0xd6, 0x93, - 0xd0, 0x0d, 0xd7, 0x92, 0xcd, 0x0d, 0xd7, 0x93, 0xd0, 0x0d, 0xd7, 0x93, - 0xcf, 0x0d, 0xd7, 0x93, 0xd0, 0x0d, 0xd8, 0x94, 0xd2, 0x0d, 0xd8, 0x94, - 0xd2, 0x0d, 0xd8, 0x94, 0xd2, 0x0d, 0xd9, 0x94, 0xd2, 0x0d, 0xd9, 0x94, - 0xd2, 0x0d, 0xd9, 0x94, 0xd2, 0x0d, 0xd9, 0x94, 0xd2, 0x0d, 0xda, 0x94, - 0xd2, 0x0d, 0xda, 0x94, 0xd2, 0x0d, 0xda, 0x94, 0xd2, 0x0d, 0xda, 0x94, - 0xd5, 0x0d, 0xdb, 0x94, 0xd2, 0x0d, 0xdb, 0x94, 0xd5, 0x0d, 0xdb, 0x94, - 0xd2, 0x0d, 0xdb, 0x94, 0xd5, 0x0d, 0xdc, 0x94, 0xd2, 0x0d, 0xdc, 0x94, - 0xd5, 0x0d, 0xdc, 0x94, 0xd5, 0x0d, 0xdd, 0x94, 0xd5, 0x0d, 0xdd, 0x94, - 0xd5, 0x0d, 0xdd, 0x94, 0xd5, 0x0d, 0xdd, 0x95, 0xd7, 0x0d, 0xde, 0x94, - 0xd5, 0x0d, 0xde, 0x95, 0xd7, 0x0d, 0xde, 0x94, 0xd5, 0x0d, 0xde, 0x95, - 0xd7, 0x0d, 0xdf, 0x95, 0xd7, 0x0d, 0xdf, 0x95, 0xd7, 0x0d, 0xdf, 0x95, - 0xd7, 0x0d, 0xdf, 0x95, 0xd7, 0x0d, 0xe0, 0x96, 0xda, 0x0d, 0xe0, 0x96, - 0xda, 0x0d, 0xe0, 0x96, 0xda, 0x0d, 0xe1, 0x96, 0xda, 0x0d, 0xe1, 0x96, - 0xda, 0x0d, 0xe1, 0x96, 0xda, 0x0d, 0xe1, 0x96, 0xda, 0x0d, 0xe2, 0x96, - 0xda, 0x0d, 0xe2, 0x96, 0xda, 0x0d, 0xe2, 0x96, 0xda, 0x0d, 0xe2, 0x97, - 0xdd, 0x0d, 0xe3, 0x96, 0xda, 0x0d, 0xe3, 0x97, 0xdd, 0x0d, 0xe3, 0x96, - 0xda, 0x0d, 0xe3, 0x97, 0xdd, 0x0d, 0xe4, 0x96, 0xda, 0x0d, 0xe4, 0x97, - 0xdd, 0x0d, 0xe4, 0x97, 0xdc, 0x0d, 0xe4, 0x97, 0xdd, 0x0d, 0xe5, 0x98, - 0xdf, 0x0d, 0xe5, 0x97, 0xdd, 0x0d, 0xe5, 0x98, 0xdf, 0x0d, 0xe5, 0x97, - 0xdd, 0x0d, 0xe6, 0x98, 0xdf, 0x0d, 0xe6, 0x97, 0xdd, 0x0d, 0xe6, 0x98, - 0xdf, 0x0d, 0xe6, 0x98, 0xdf, 0x0d, 0xe7, 0x98, 0xdf, 0x0d, 0xe7, 0x98, - 0xdf, 0x0d, 0xe7, 0x98, 0xdf, 0x0d, 0xe7, 0x99, 0xe1, 0x0d, 0xe8, 0x99, - 0xe2, 0x0d, 0xe8, 0x99, 0xe1, 0x0d, 0xe8, 0x99, 0xe2, 0x0d, 0xe8, 0x99, - 0xe1, 0x0d, 0xe9, 0x99, 0xe2, 0x0d, 0xe9, 0x99, 0xe1, 0x0d, 0xe9, 0x99, - 0xe2, 0x0d, 0xe9, 0x99, 0xe1, 0x0d, 0xea, 0x99, 0xe2, 0x0d, 0xea, 0x9a, - 0xe4, 0x0d, 0xea, 0x99, 0xe2, 0x0d, 0xea, 0x9a, 0xe4, 0x0d, 0xeb, 0x99, - 0xe2, 0x0d, 0xeb, 0x9a, 0xe4, 0x0d, 0xeb, 0x99, 0xe2, 0x0d, 0xeb, 0x9a, - 0xe4, 0x0d, 0xec, 0x9a, 0xe4, 0x0d, 0xec, 0x9a, 0xe4, 0x0d, 0xec, 0x9a, - 0xe6, 0x0d, 0xec, 0x9a, 0xe4, 0x0d, 0xec, 0x9a, 0xe6, 0x0d, 0xed, 0x9a, - 0xe4, 0x0d, 0xed, 0x9a, 0xe6, 0x0d, 0xed, 0x9a, 0xe4, 0x0d, 0xed, 0x9a, - 0xe6, 0x0d, 0xee, 0x9a, 0xe6, 0x0d, 0xee, 0x9a, 0xe6, 0x0d, 0xee, 0x9b, - 0xe8, 0x0d, 0xee, 0x9b, 0xe9, 0x0d, 0xef, 0x9b, 0xe8, 0x0d, 0xef, 0x9b, - 0xe9, 0x0d, 0xef, 0x9b, 0xe8, 0x0d, 0xef, 0x9b, 0xe9, 0x0d, 0xf0, 0x9b, - 0xe8, 0x0d, 0xf0, 0x9b, 0xe9, 0x0d, 0xf0, 0x9b, 0xe8, 0x0d, 0xf0, 0x9b, - 0xe9, 0x0d, 0xf1, 0x9c, 0xeb, 0x0d, 0xf1, 0x9b, 0xe9, 0x0d, 0xf1, 0x9c, - 0xeb, 0x0d, 0xf1, 0x9b, 0xe9, 0x0d, 0xf2, 0x9c, 0xeb, 0x0d, 0xf2, 0x9b, - 0xe9, 0x0d, 0xf2, 0x9c, 0xeb, 0x0d, 0xf2, 0x9c, 0xeb, 0x0d, 0xf2, 0x9c, - 0xeb, 0x0d, 0xf3, 0x9d, 0xed, 0x0d, 0xf3, 0x9d, 0xed, 0x0d, 0xf3, 0x9d, - 0xed, 0x0d, 0xf3, 0x9d, 0xed, 0x0d, 0xf4, 0x9d, 0xed, 0x0d, 0xf4, 0x9d, - 0xed, 0x0d, 0xf4, 0x9d, 0xed, 0x0d, 0xf4, 0x9d, 0xed, 0x0d, 0xf5, 0x9d, - 0xed, 0x0d, 0xf5, 0x9d, 0xed, 0x0d, 0xf5, 0x9d, 0xed, 0x0d, 0xf5, 0x9d, - 0xed, 0x0d, 0xf5, 0x9e, 0xef, 0x0d, 0xf6, 0x9d, 0xed, 0x0d, 0xf6, 0x9e, - 0xef, 0x0d, 0xf6, 0x9d, 0xed, 0x0d, 0xf6, 0x9e, 0xef, 0x0d, 0xf7, 0x9d, - 0xed, 0x0d, 0xf7, 0x9e, 0xef, 0x0d, 0xf7, 0x9e, 0xef, 0x0d, 0xf7, 0x9e, - 0xef, 0x0d, 0xf8, 0x9f, 0xf2, 0x0d, 0xf8, 0x9e, 0xef, 0x0d, 0xf8, 0x9f, - 0xf2, 0x0d, 0xf8, 0x9e, 0xef, 0x0d, 0xf8, 0x9f, 0xf2, 0x0d, 0xf9, 0x9e, - 0xef, 0x0d, 0xf9, 0x9f, 0xf2, 0x0d, 0xf9, 0x9f, 0xf1, 0x0d, 0xf9, 0x9f, - 0xf2, 0x0d, 0xfa, 0x9f, 0xf4, 0x0d, 0xfa, 0x9f, 0xf4, 0x0d, 0xfa, 0x9f, - 0xf4, 0x0d, 0xfa, 0x9f, 0xf4, 0x0d, 0xfa, 0x9f, 0xf4, 0x0d, 0xfb, 0x9f, - 0xf4, 0x0d, 0xfb, 0x9f, 0xf4, 0x0d, 0xfb, 0x9f, 0xf4, 0x0d, 0xfb, 0x9f, - 0xf4, 0x0d, 0xfc, 0x9f, 0xf4, 0x0d, 0xfc, 0xa0, 0xf6, 0x0d, 0xfc, 0x9f, - 0xf4, 0x0d, 0xfc, 0xa0, 0xf6, 0x0d, 0xfc, 0x9f, 0xf4, 0x0d, 0xfd, 0xa0, - 0xf6, 0x0d, 0xfd, 0x9f, 0xf4, 0x0d, 0xfd, 0xa0, 0xf6, 0x0d, 0xfd, 0x9f, - 0xf4, 0x0d, 0xfe, 0xa0, 0xf6, 0x0d, 0xfe, 0xa0, 0xf6, 0x0d, 0xfe, 0xa0, - 0xf6, 0x0d, 0xfe, 0xa0, 0xf6, 0x0d, 0xfe, 0xa0, 0xf6, 0x0d, 0xff, 0xa1, - 0xf8, 0x0d, 0xff, 0xa0, 0xf6, 0x0d, 0x03, 0x84, 0x9b, 0x0e, 0x0a, 0x84, - 0x9b, 0x0e, 0x0f, 0x84, 0x9b, 0x0e, 0x14, 0x84, 0x9b, 0x0e, 0x17, 0x84, - 0x9b, 0x0e, 0x1b, 0x84, 0x9b, 0x0e, 0x1e, 0x84, 0x9b, 0x0e, 0x20, 0x84, - 0x9c, 0x0e, 0x23, 0x84, 0x9b, 0x0e, 0x25, 0x84, 0x9c, 0x0e, 0x27, 0x84, - 0x9b, 0x0e, 0x29, 0x84, 0x9c, 0x0e, 0x2b, 0x84, 0x9b, 0x0e, 0x2d, 0x84, - 0x9c, 0x0e, 0x2f, 0x84, 0x9b, 0x0e, 0x31, 0x84, 0x9c, 0x0e, 0x32, 0x84, - 0x9b, 0x0e, 0x34, 0x84, 0x9c, 0x0e, 0x35, 0x84, 0x9b, 0x0e, 0x37, 0x84, - 0x9c, 0x0e, 0x38, 0x84, 0x9b, 0x0e, 0x3a, 0x84, 0x9c, 0x0e, 0x3b, 0x84, - 0x9b, 0x0e, 0x3c, 0x84, 0x9c, 0x0e, 0x3e, 0x84, 0x9b, 0x0e, 0x3f, 0x84, - 0x9c, 0x0e, 0x40, 0x84, 0x9b, 0x0e, 0x42, 0x84, 0x9c, 0x0e, 0x43, 0x84, - 0x9b, 0x0e, 0x44, 0x84, 0x9c, 0x0e, 0x45, 0x84, 0x9b, 0x0e, 0x46, 0x84, - 0x9c, 0x0e, 0x47, 0x84, 0x9b, 0x0e, 0x48, 0x84, 0x9c, 0x0e, 0x49, 0x84, - 0x9b, 0x0e, 0x4a, 0x84, 0x9c, 0x0e, 0x4b, 0x84, 0x9b, 0x0e, 0x4c, 0x84, - 0x9c, 0x0e, 0x4d, 0x84, 0x9b, 0x0e, 0x4e, 0x84, 0x9c, 0x0e, 0x4f, 0x84, - 0x9b, 0x0e, 0x50, 0x84, 0x9c, 0x0e, 0x51, 0x84, 0x9b, 0x0e, 0x52, 0x84, - 0x9c, 0x0e, 0x53, 0x84, 0x9b, 0x0e, 0x54, 0x84, 0x9c, 0x0e, 0x55, 0x84, - 0x9b, 0x0e, 0x56, 0x84, 0x9c, 0x0e, 0x57, 0x84, 0x9b, 0x0e, 0x58, 0x84, - 0x9c, 0x0e, 0x58, 0x84, 0x9b, 0x0e, 0x59, 0x84, 0x9c, 0x0e, 0x5a, 0x84, - 0x9b, 0x0e, 0x5b, 0x84, 0x9c, 0x0e, 0x5c, 0x84, 0x9b, 0x0e, 0x5d, 0x84, - 0x9c, 0x0e, 0x5d, 0x84, 0x9b, 0x0e, 0x5e, 0x84, 0x9c, 0x0e, 0x5f, 0x84, - 0x9b, 0x0e, 0x60, 0x84, 0x9c, 0x0e, 0x60, 0x84, 0x9b, 0x0e, 0x61, 0x84, - 0x9c, 0x0e, 0x62, 0x84, 0x9b, 0x0e, 0x63, 0x84, 0x9c, 0x0e, 0x63, 0x84, - 0x9b, 0x0e, 0x64, 0x84, 0x9c, 0x0e, 0x65, 0x84, 0x9b, 0x0e, 0x66, 0x84, - 0x9c, 0x0e, 0x66, 0x84, 0x9b, 0x0e, 0x67, 0x84, 0x9c, 0x0e, 0x68, 0x84, - 0x9b, 0x0e, 0x68, 0x84, 0x9c, 0x0e, 0x69, 0x84, 0x9b, 0x0e, 0x6a, 0x84, - 0x9c, 0x0e, 0x6a, 0x84, 0x9b, 0x0e, 0x6b, 0x84, 0x9c, 0x0e, 0x6c, 0x84, - 0x9b, 0x0e, 0x6c, 0x84, 0x9c, 0x0e, 0x6d, 0x84, 0x9b, 0x0e, 0x6e, 0x84, - 0x9c, 0x0e, 0x6e, 0x84, 0x9b, 0x0e, 0x6f, 0x84, 0x9c, 0x0e, 0x70, 0x84, - 0x9b, 0x0e, 0x70, 0x84, 0x9c, 0x0e, 0x71, 0x84, 0x9b, 0x0e, 0x72, 0x84, - 0x9c, 0x0e, 0x72, 0x84, 0x9b, 0x0e, 0x73, 0x84, 0x9c, 0x0e, 0x73, 0x84, - 0x9b, 0x0e, 0x74, 0x84, 0x9c, 0x0e, 0x75, 0x84, 0x9b, 0x0e, 0x75, 0x84, - 0x9c, 0x0e, 0x76, 0x84, 0x9b, 0x0e, 0x76, 0x84, 0x9c, 0x0e, 0x77, 0x84, - 0x9b, 0x0e, 0x78, 0x84, 0x9c, 0x0e, 0x78, 0x84, 0x9b, 0x0e, 0x79, 0x84, - 0x9c, 0x0e, 0x79, 0x84, 0x9b, 0x0e, 0x7a, 0x84, 0x9c, 0x0e, 0x7a, 0x84, - 0x9b, 0x0e, 0x7b, 0x84, 0x9c, 0x0e, 0x7c, 0x84, 0x9b, 0x0e, 0x7c, 0x84, - 0x9c, 0x0e, 0x7d, 0x84, 0x9b, 0x0e, 0x7d, 0x84, 0x9c, 0x0e, 0x7e, 0x84, - 0x9b, 0x0e, 0x7e, 0x84, 0x9c, 0x0e, 0x7f, 0x84, 0x9b, 0x0e, 0x7f, 0x84, - 0x9c, 0x0e, 0x80, 0x84, 0x9b, 0x0e, 0x81, 0x84, 0x9c, 0x0e, 0x81, 0x84, - 0x9b, 0x0e, 0x82, 0x84, 0x9c, 0x0e, 0x82, 0x84, 0x9b, 0x0e, 0x83, 0x84, - 0x9c, 0x0e, 0x83, 0x84, 0x9b, 0x0e, 0x84, 0x84, 0x9c, 0x0e, 0x84, 0x84, - 0x9b, 0x0e, 0x85, 0x84, 0x9c, 0x0e, 0x85, 0x84, 0x9b, 0x0e, 0x86, 0x84, - 0x9c, 0x0e, 0x86, 0x84, 0x9b, 0x0e, 0x87, 0x84, 0x9c, 0x0e, 0x87, 0x84, - 0x9b, 0x0e, 0x88, 0x84, 0x9c, 0x0e, 0x88, 0x84, 0x9b, 0x0e, 0x89, 0x84, - 0x9c, 0x0e, 0x89, 0x84, 0x9b, 0x0e, 0x8a, 0x84, 0x9c, 0x0e, 0x8a, 0x84, - 0x9b, 0x0e, 0x8b, 0x84, 0x9c, 0x0e, 0x8b, 0x84, 0x9b, 0x0e, 0x8c, 0x84, - 0x9c, 0x0e, 0x8c, 0x84, 0x9b, 0x0e, 0x8d, 0x84, 0x9c, 0x0e, 0x8d, 0x84, - 0x9b, 0x0e, 0x8e, 0x84, 0x9c, 0x0e, 0x8e, 0x84, 0x9b, 0x0e, 0x8e, 0x84, - 0x9c, 0x0e, 0x8f, 0x84, 0x9b, 0x0e, 0x8f, 0x84, 0x9c, 0x0e, 0x90, 0x84, - 0x9b, 0x0e, 0x90, 0x84, 0x9c, 0x0e, 0x91, 0x84, 0x9b, 0x0e, 0x91, 0x84, - 0x9c, 0x0e, 0x92, 0x84, 0x9b, 0x0e, 0x92, 0x84, 0x9c, 0x0e, 0x93, 0x84, - 0x9b, 0x0e, 0x93, 0x84, 0x9c, 0x0e, 0x94, 0x84, 0x9b, 0x0e, 0x94, 0x84, - 0x9c, 0x0e, 0x94, 0x84, 0x9b, 0x0e, 0x95, 0x84, 0x9c, 0x0e, 0x95, 0x84, - 0x9b, 0x0e, 0x96, 0x84, 0x9c, 0x0e, 0x96, 0x84, 0x9b, 0x0e, 0x97, 0x84, - 0x9c, 0x0e, 0x97, 0x84, 0x9b, 0x0e, 0x98, 0x84, 0x9c, 0x0e, 0x98, 0x84, - 0x9b, 0x0e, 0x98, 0x84, 0x9c, 0x0e, 0x99, 0x84, 0x9b, 0x0e, 0x99, 0x84, - 0x9c, 0x0e, 0x9a, 0x84, 0x9b, 0x0e, 0x9a, 0x84, 0x9c, 0x0e, 0x9a, 0x84, - 0x9b, 0x0e, 0x9b, 0x84, 0x9c, 0x0e, 0x9b, 0x84, 0x9b, 0x0e, 0x9c, 0x84, - 0x9c, 0x0e, 0x9c, 0x84, 0x9c, 0x0e, 0x9d, 0x84, 0x9d, 0x0e, 0x9d, 0x84, - 0x9d, 0x0e, 0x9d, 0x84, 0x9d, 0x0e, 0x9e, 0x84, 0x9e, 0x0e, 0x9e, 0x84, - 0x9e, 0x0e, 0x9f, 0x84, 0x9f, 0x0e, 0x9f, 0x84, 0x9e, 0x0e, 0x9f, 0x84, - 0x9f, 0x0e, 0xa0, 0x84, 0x9e, 0x0e, 0xa0, 0x84, 0x9f, 0x0e, 0xa1, 0x84, - 0x9e, 0x0e, 0xa1, 0x84, 0x9f, 0x0e, 0xa1, 0x84, 0x9e, 0x0e, 0xa2, 0x84, - 0x9f, 0x0e, 0xa2, 0x84, 0x9e, 0x0e, 0xa3, 0x84, 0x9f, 0x0e, 0xa3, 0x84, - 0x9e, 0x0e, 0xa3, 0x84, 0x9f, 0x0e, 0xa4, 0x84, 0x9e, 0x0e, 0xa4, 0x84, - 0x9f, 0x0e, 0xa5, 0x84, 0x9e, 0x0e, 0xa5, 0x84, 0x9f, 0x0e, 0xa5, 0x84, - 0x9e, 0x0e, 0xa6, 0x84, 0x9f, 0x0e, 0xa6, 0x84, 0x9e, 0x0e, 0xa6, 0x84, - 0x9f, 0x0e, 0xa7, 0x84, 0x9e, 0x0e, 0xa7, 0x84, 0x9f, 0x0e, 0xa8, 0x85, - 0xa2, 0x0e, 0xa8, 0x84, 0x9f, 0x0e, 0xa8, 0x85, 0xa2, 0x0e, 0xa9, 0x84, - 0x9f, 0x0e, 0xa9, 0x85, 0xa2, 0x0e, 0xaa, 0x85, 0xa2, 0x0e, 0xaa, 0x85, - 0xa2, 0x0e, 0xaa, 0x85, 0xa2, 0x0e, 0xab, 0x85, 0xa2, 0x0e, 0xab, 0x86, - 0xa6, 0x0e, 0xab, 0x86, 0xa6, 0x0e, 0xac, 0x86, 0xa6, 0x0e, 0xac, 0x86, - 0xa6, 0x0e, 0xac, 0x86, 0xa6, 0x0e, 0xad, 0x86, 0xa6, 0x0e, 0xad, 0x86, - 0xa6, 0x0e, 0xae, 0x86, 0xa6, 0x0e, 0xae, 0x86, 0xa6, 0x0e, 0xae, 0x86, - 0xa6, 0x0e, 0xaf, 0x86, 0xa6, 0x0e, 0xaf, 0x86, 0xa6, 0x0e, 0xaf, 0x87, - 0xaa, 0x0e, 0xb0, 0x86, 0xa6, 0x0e, 0xb0, 0x87, 0xaa, 0x0e, 0xb0, 0x87, - 0xa9, 0x0e, 0xb1, 0x87, 0xaa, 0x0e, 0xb1, 0x87, 0xa9, 0x0e, 0xb2, 0x87, - 0xaa, 0x0e, 0xb2, 0x87, 0xa9, 0x0e, 0xb2, 0x87, 0xaa, 0x0e, 0xb3, 0x88, - 0xad, 0x0e, 0xb3, 0x88, 0xad, 0x0e, 0xb3, 0x88, 0xad, 0x0e, 0xb4, 0x88, - 0xad, 0x0e, 0xb4, 0x88, 0xad, 0x0e, 0xb4, 0x88, 0xad, 0x0e, 0xb5, 0x88, - 0xad, 0x0e, 0xb5, 0x88, 0xad, 0x0e, 0xb5, 0x88, 0xad, 0x0e, 0xb6, 0x88, - 0xad, 0x0e, 0xb6, 0x89, 0xb0, 0x0e, 0xb6, 0x88, 0xad, 0x0e, 0xb7, 0x89, - 0xb0, 0x0e, 0xb7, 0x88, 0xad, 0x0e, 0xb7, 0x89, 0xb0, 0x0e, 0xb8, 0x89, - 0xb2, 0x0e, 0xb8, 0x89, 0xb0, 0x0e, 0xb8, 0x89, 0xb2, 0x0e, 0xb9, 0x89, - 0xb0, 0x0e, 0xb9, 0x89, 0xb2, 0x0e, 0xb9, 0x89, 0xb0, 0x0e, 0xba, 0x89, - 0xb2, 0x0e, 0xba, 0x89, 0xb2, 0x0e, 0xba, 0x89, 0xb2, 0x0e, 0xbb, 0x89, - 0xb2, 0x0e, 0xbb, 0x89, 0xb2, 0x0e, 0xbb, 0x8a, 0xb3, 0x0e, 0xbc, 0x8a, - 0xb4, 0x0e, 0xbc, 0x8b, 0xb7, 0x0e, 0xbc, 0x8b, 0xb7, 0x0e, 0xbd, 0x8b, - 0xb7, 0x0e, 0xbd, 0x8b, 0xb7, 0x0e, 0xbd, 0x8b, 0xb7, 0x0e, 0xbe, 0x8b, - 0xb7, 0x0e, 0xbe, 0x8b, 0xb7, 0x0e, 0xbe, 0x8b, 0xb7, 0x0e, 0xbf, 0x8b, - 0xb7, 0x0e, 0xbf, 0x8b, 0xb7, 0x0e, 0xbf, 0x8c, 0xba, 0x0e, 0xc0, 0x8b, - 0xb7, 0x0e, 0xc0, 0x8c, 0xba, 0x0e, 0xc0, 0x8b, 0xb7, 0x0e, 0xc1, 0x8c, - 0xba, 0x0e, 0xc1, 0x8b, 0xb7, 0x0e, 0xc1, 0x8c, 0xba, 0x0e, 0xc1, 0x8c, - 0xba, 0x0e, 0xc2, 0x8c, 0xba, 0x0e, 0xc2, 0x8c, 0xba, 0x0e, 0xc2, 0x8c, - 0xba, 0x0e, 0xc3, 0x8d, 0xbd, 0x0e, 0xc3, 0x8c, 0xba, 0x0e, 0xc3, 0x8d, - 0xbd, 0x0e, 0xc4, 0x8c, 0xba, 0x0e, 0xc4, 0x8d, 0xbd, 0x0e, 0xc4, 0x8d, - 0xbd, 0x0e, 0xc5, 0x8d, 0xbd, 0x0e, 0xc5, 0x8d, 0xbd, 0x0e, 0xc5, 0x8d, - 0xbd, 0x0e, 0xc6, 0x8e, 0xc0, 0x0e, 0xc6, 0x8e, 0xc0, 0x0e, 0xc6, 0x8e, - 0xc0, 0x0e, 0xc6, 0x8e, 0xc0, 0x0e, 0xc7, 0x8e, 0xc0, 0x0e, 0xc7, 0x8e, - 0xc0, 0x0e, 0xc7, 0x8e, 0xc0, 0x0e, 0xc8, 0x8e, 0xc0, 0x0e, 0xc8, 0x8e, - 0xc0, 0x0e, 0xc8, 0x8e, 0xc0, 0x0e, 0xc9, 0x8e, 0xc3, 0x0e, 0xc9, 0x8e, - 0xc0, 0x0e, 0xc9, 0x8e, 0xc3, 0x0e, 0xc9, 0x8e, 0xc0, 0x0e, 0xca, 0x8e, - 0xc3, 0x0e, 0xca, 0x8e, 0xc3, 0x0e, 0xca, 0x8e, 0xc3, 0x0e, 0xcb, 0x8e, - 0xc3, 0x0e, 0xcb, 0x8e, 0xc3, 0x0e, 0xcb, 0x8f, 0xc6, 0x0e, 0xcc, 0x8e, - 0xc3, 0x0e, 0xcc, 0x8f, 0xc6, 0x0e, 0xcc, 0x8e, 0xc3, 0x0e, 0xcc, 0x8f, - 0xc6, 0x0e, 0xcd, 0x8e, 0xc3, 0x0e, 0xcd, 0x8f, 0xc6, 0x0e, 0xcd, 0x8f, - 0xc6, 0x0e, 0xce, 0x8f, 0xc6, 0x0e, 0xce, 0x8f, 0xc6, 0x0e, 0xce, 0x8f, - 0xc6, 0x0e, 0xce, 0x90, 0xc9, 0x0e, 0xcf, 0x90, 0xc9, 0x0e, 0xcf, 0x90, - 0xc9, 0x0e, 0xcf, 0x90, 0xc9, 0x0e, 0xd0, 0x90, 0xc9, 0x0e, 0xd0, 0x90, - 0xc9, 0x0e, 0xd0, 0x90, 0xc9, 0x0e, 0xd0, 0x90, 0xc9, 0x0e, 0xd1, 0x90, - 0xc9, 0x0e, 0xd1, 0x90, 0xc9, 0x0e, 0xd1, 0x91, 0xcc, 0x0e, 0xd2, 0x90, - 0xc9, 0x0e, 0xd2, 0x91, 0xcc, 0x0e, 0xd2, 0x90, 0xc9, 0x0e, 0xd2, 0x91, - 0xcc, 0x0e, 0xd3, 0x91, 0xcb, 0x0e, 0xd3, 0x91, 0xcc, 0x0e, 0xd3, 0x91, - 0xcb, 0x0e, 0xd4, 0x91, 0xcc, 0x0e, 0xd4, 0x92, 0xce, 0x0e, 0xd4, 0x92, - 0xce, 0x0e, 0xd4, 0x92, 0xce, 0x0e, 0xd5, 0x92, 0xce, 0x0e, 0xd5, 0x92, - 0xce, 0x0e, 0xd5, 0x92, 0xce, 0x0e, 0xd6, 0x92, 0xce, 0x0e, 0xd6, 0x92, - 0xce, 0x0e, 0xd6, 0x92, 0xce, 0x0e, 0xd6, 0x92, 0xce, 0x0e, 0xd7, 0x93, - 0xd1, 0x0e, 0xd7, 0x92, 0xce, 0x0e, 0xd7, 0x93, 0xd1, 0x0e, 0xd7, 0x92, - 0xce, 0x0e, 0xd8, 0x93, 0xd1, 0x0e, 0xd8, 0x92, 0xce, 0x0e, 0xd8, 0x93, - 0xd1, 0x0e, 0xd9, 0x93, 0xd1, 0x0e, 0xd9, 0x93, 0xd1, 0x0e, 0xd9, 0x94, - 0xd4, 0x0e, 0xd9, 0x93, 0xd1, 0x0e, 0xda, 0x94, 0xd4, 0x0e, 0xda, 0x93, - 0xd1, 0x0e, 0xda, 0x94, 0xd4, 0x0e, 0xda, 0x93, 0xd1, 0x0e, 0xdb, 0x94, - 0xd4, 0x0e, 0xdb, 0x94, 0xd3, 0x0e, 0xdb, 0x94, 0xd4, 0x0e, 0xdb, 0x95, - 0xd6, 0x0e, 0xdc, 0x95, 0xd6, 0x0e, 0xdc, 0x95, 0xd6, 0x0e, 0xdc, 0x95, - 0xd6, 0x0e, 0xdd, 0x95, 0xd6, 0x0e, 0xdd, 0x95, 0xd6, 0x0e, 0xdd, 0x95, - 0xd6, 0x0e, 0xdd, 0x95, 0xd6, 0x0e, 0xde, 0x95, 0xd6, 0x0e, 0xde, 0x95, - 0xd6, 0x0e, 0xde, 0x95, 0xd6, 0x0e, 0xde, 0x95, 0xd6, 0x0e, 0xdf, 0x96, - 0xd9, 0x0e, 0xdf, 0x95, 0xd6, 0x0e, 0xdf, 0x96, 0xd9, 0x0e, 0xdf, 0x95, - 0xd6, 0x0e, 0xe0, 0x96, 0xd9, 0x0e, 0xe0, 0x96, 0xd9, 0x0e, 0xe0, 0x96, - 0xd9, 0x0e, 0xe1, 0x96, 0xd9, 0x0e, 0xe1, 0x96, 0xd9, 0x0e, 0xe1, 0x97, - 0xdb, 0x0e, 0xe1, 0x96, 0xd9, 0x0e, 0xe2, 0x97, 0xdb, 0x0e, 0xe2, 0x96, - 0xd9, 0x0e, 0xe2, 0x97, 0xdb, 0x0e, 0xe2, 0x96, 0xd9, 0x0e, 0xe3, 0x97, - 0xdb, 0x0e, 0xe3, 0x97, 0xdb, 0x0e, 0xe3, 0x97, 0xdb, 0x0e, 0xe3, 0x98, - 0xde, 0x0e, 0xe4, 0x98, 0xde, 0x0e, 0xe4, 0x98, 0xde, 0x0e, 0xe4, 0x98, - 0xde, 0x0e, 0xe4, 0x98, 0xde, 0x0e, 0xe5, 0x98, 0xde, 0x0e, 0xe5, 0x98, - 0xde, 0x0e, 0xe5, 0x98, 0xde, 0x0e, 0xe5, 0x98, 0xde, 0x0e, 0xe6, 0x98, - 0xde, 0x0e, 0xe6, 0x98, 0xe0, 0x0e, 0xe6, 0x98, 0xde, 0x0e, 0xe6, 0x98, - 0xe0, 0x0e, 0xe7, 0x98, 0xde, 0x0e, 0xe7, 0x98, 0xe0, 0x0e, 0xe7, 0x98, - 0xdf, 0x0e, 0xe7, 0x98, 0xe0, 0x0e, 0xe8, 0x98, 0xdf, 0x0e, 0xe8, 0x98, - 0xe0, 0x0e, 0xe8, 0x98, 0xe0, 0x0e, 0xe8, 0x98, 0xe0, 0x0e, 0xe9, 0x99, - 0xe3, 0x0e, 0xe9, 0x98, 0xe0, 0x0e, 0xe9, 0x99, 0xe3, 0x0e, 0xe9, 0x98, - 0xe0, 0x0e, 0xea, 0x99, 0xe3, 0x0e, 0xea, 0x99, 0xe2, 0x0e, 0xea, 0x99, - 0xe3, 0x0e, 0xea, 0x99, 0xe2, 0x0e, 0xeb, 0x99, 0xe3, 0x0e, 0xeb, 0x9a, - 0xe5, 0x0e, 0xeb, 0x9a, 0xe5, 0x0e, 0xeb, 0x9a, 0xe5, 0x0e, 0xec, 0x9a, - 0xe5, 0x0e, 0xec, 0x9a, 0xe5, 0x0e, 0xec, 0x9a, 0xe5, 0x0e, 0xec, 0x9a, - 0xe5, 0x0e, 0xec, 0x9a, 0xe5, 0x0e, 0xed, 0x9a, 0xe5, 0x0e, 0xed, 0x9a, - 0xe5, 0x0e, 0xed, 0x9b, 0xe7, 0x0e, 0xed, 0x9a, 0xe5, 0x0e, 0xee, 0x9b, - 0xe7, 0x0e, 0xee, 0x9a, 0xe5, 0x0e, 0xee, 0x9b, 0xe7, 0x0e, 0xee, 0x9a, - 0xe5, 0x0e, 0xef, 0x9b, 0xe7, 0x0e, 0xef, 0x9b, 0xe7, 0x0e, 0xef, 0x9b, - 0xe7, 0x0e, 0xef, 0x9c, 0xea, 0x0e, 0xf0, 0x9c, 0xea, 0x0e, 0xf0, 0x9c, - 0xea, 0x0e, 0xf0, 0x9c, 0xea, 0x0e, 0xf0, 0x9c, 0xea, 0x0e, 0xf1, 0x9c, - 0xea, 0x0e, 0xf1, 0x9c, 0xea, 0x0e, 0xf1, 0x9c, 0xea, 0x0e, 0xf1, 0x9c, - 0xea, 0x0e, 0xf2, 0x9c, 0xea, 0x0e, 0xf2, 0x9d, 0xec, 0x0e, 0xf2, 0x9c, - 0xea, 0x0e, 0xf2, 0x9d, 0xec, 0x0e, 0xf2, 0x9c, 0xea, 0x0e, 0xf3, 0x9d, - 0xec, 0x0e, 0xf3, 0x9c, 0xea, 0x0e, 0xf3, 0x9d, 0xec, 0x0e, 0xf3, 0x9d, - 0xec, 0x0e, 0xf4, 0x9d, 0xec, 0x0e, 0xf4, 0x9d, 0xee, 0x0e, 0xf4, 0x9d, - 0xec, 0x0e, 0xf4, 0x9d, 0xee, 0x0e, 0xf5, 0x9d, 0xec, 0x0e, 0xf5, 0x9d, - 0xee, 0x0e, 0xf5, 0x9d, 0xec, 0x0e, 0xf5, 0x9d, 0xee, 0x0e, 0xf5, 0x9d, - 0xec, 0x0e, 0xf6, 0x9d, 0xee, 0x0e, 0xf6, 0x9d, 0xee, 0x0e, 0xf6, 0x9d, - 0xee, 0x0e, 0xf6, 0x9e, 0xf0, 0x0e, 0xf7, 0x9e, 0xf1, 0x0e, 0xf7, 0x9e, - 0xf0, 0x0e, 0xf7, 0x9e, 0xf1, 0x0e, 0xf7, 0x9e, 0xf0, 0x0e, 0xf8, 0x9e, - 0xf1, 0x0e, 0xf8, 0x9e, 0xf0, 0x0e, 0xf8, 0x9e, 0xf1, 0x0e, 0xf8, 0x9e, - 0xf0, 0x0e, 0xf8, 0x9e, 0xf1, 0x0e, 0xf9, 0x9f, 0xf3, 0x0e, 0xf9, 0x9e, - 0xf1, 0x0e, 0xf9, 0x9f, 0xf3, 0x0e, 0xf9, 0x9e, 0xf1, 0x0e, 0xfa, 0x9f, - 0xf3, 0x0e, 0xfa, 0x9e, 0xf1, 0x0e, 0xfa, 0x9f, 0xf3, 0x0e, 0xfa, 0x9f, - 0xf2, 0x0e, 0xfa, 0x9f, 0xf3, 0x0e, 0xfb, 0xa0, 0xf5, 0x0e, 0xfb, 0x9f, - 0xf3, 0x0e, 0xfb, 0xa0, 0xf5, 0x0e, 0xfb, 0x9f, 0xf3, 0x0e, 0xfc, 0xa0, - 0xf5, 0x0e, 0xfc, 0x9f, 0xf3, 0x0e, 0xfc, 0xa0, 0xf5, 0x0e, 0xfc, 0xa0, - 0xf5, 0x0e, 0xfc, 0xa0, 0xf5, 0x0e, 0xfd, 0xa1, 0xf7, 0x0e, 0xfd, 0xa1, - 0xf7, 0x0e, 0xfd, 0xa1, 0xf7, 0x0e, 0xfd, 0xa1, 0xf7, 0x0e, 0xfe, 0xa1, - 0xf7, 0x0e, 0xfe, 0xa1, 0xf7, 0x0e, 0xfe, 0xa1, 0xf7, 0x0e, 0xfe, 0xa1, - 0xf7, 0x0e, 0xfe, 0xa1, 0xf7, 0x0e, 0xff, 0xa1, 0xf7, 0x0e, 0xff, 0xa1, - 0xf7, 0x0e, 0x03, 0x83, 0x9b, 0x0e, 0x0a, 0x83, 0x9b, 0x0e, 0x0f, 0x83, - 0x9b, 0x0e, 0x14, 0x83, 0x9b, 0x0e, 0x17, 0x83, 0x9b, 0x0e, 0x1b, 0x83, - 0x9b, 0x0e, 0x1e, 0x83, 0x9b, 0x0e, 0x20, 0x83, 0x9c, 0x0e, 0x23, 0x83, - 0x9b, 0x0e, 0x25, 0x83, 0x9c, 0x0e, 0x27, 0x83, 0x9b, 0x0e, 0x29, 0x83, - 0x9c, 0x0e, 0x2b, 0x83, 0x9b, 0x0e, 0x2d, 0x83, 0x9c, 0x0e, 0x2f, 0x83, - 0x9b, 0x0e, 0x31, 0x83, 0x9c, 0x0e, 0x32, 0x83, 0x9b, 0x0e, 0x34, 0x83, - 0x9c, 0x0e, 0x35, 0x83, 0x9b, 0x0e, 0x37, 0x83, 0x9c, 0x0e, 0x38, 0x83, - 0x9b, 0x0e, 0x3a, 0x83, 0x9c, 0x0e, 0x3b, 0x83, 0x9b, 0x0e, 0x3c, 0x83, - 0x9c, 0x0e, 0x3e, 0x83, 0x9b, 0x0e, 0x3f, 0x83, 0x9c, 0x0e, 0x40, 0x83, - 0x9b, 0x0e, 0x42, 0x83, 0x9c, 0x0e, 0x43, 0x83, 0x9b, 0x0e, 0x44, 0x83, - 0x9c, 0x0e, 0x45, 0x83, 0x9b, 0x0e, 0x46, 0x83, 0x9c, 0x0e, 0x47, 0x83, - 0x9b, 0x0e, 0x48, 0x83, 0x9c, 0x0e, 0x49, 0x83, 0x9b, 0x0e, 0x4a, 0x83, - 0x9c, 0x0e, 0x4b, 0x83, 0x9b, 0x0e, 0x4c, 0x83, 0x9c, 0x0e, 0x4d, 0x83, - 0x9b, 0x0e, 0x4e, 0x83, 0x9c, 0x0e, 0x4f, 0x83, 0x9b, 0x0e, 0x50, 0x83, - 0x9c, 0x0e, 0x51, 0x83, 0x9b, 0x0e, 0x52, 0x83, 0x9c, 0x0e, 0x53, 0x83, - 0x9b, 0x0e, 0x54, 0x83, 0x9c, 0x0e, 0x55, 0x83, 0x9b, 0x0e, 0x56, 0x83, - 0x9c, 0x0e, 0x57, 0x83, 0x9b, 0x0e, 0x58, 0x83, 0x9c, 0x0e, 0x58, 0x83, - 0x9b, 0x0e, 0x59, 0x83, 0x9c, 0x0e, 0x5a, 0x83, 0x9b, 0x0e, 0x5b, 0x83, - 0x9c, 0x0e, 0x5c, 0x83, 0x9b, 0x0e, 0x5d, 0x83, 0x9c, 0x0e, 0x5d, 0x83, - 0x9b, 0x0e, 0x5e, 0x83, 0x9c, 0x0e, 0x5f, 0x83, 0x9b, 0x0e, 0x60, 0x83, - 0x9c, 0x0e, 0x60, 0x83, 0x9b, 0x0e, 0x61, 0x83, 0x9c, 0x0e, 0x62, 0x83, - 0x9b, 0x0e, 0x63, 0x83, 0x9c, 0x0e, 0x63, 0x83, 0x9b, 0x0e, 0x64, 0x83, - 0x9c, 0x0e, 0x65, 0x83, 0x9b, 0x0e, 0x66, 0x83, 0x9c, 0x0e, 0x66, 0x83, - 0x9b, 0x0e, 0x67, 0x83, 0x9c, 0x0e, 0x68, 0x83, 0x9b, 0x0e, 0x68, 0x83, - 0x9c, 0x0e, 0x69, 0x83, 0x9b, 0x0e, 0x6a, 0x83, 0x9c, 0x0e, 0x6a, 0x83, - 0x9b, 0x0e, 0x6b, 0x83, 0x9c, 0x0e, 0x6c, 0x83, 0x9b, 0x0e, 0x6c, 0x83, - 0x9c, 0x0e, 0x6d, 0x83, 0x9b, 0x0e, 0x6e, 0x83, 0x9c, 0x0e, 0x6e, 0x83, - 0x9b, 0x0e, 0x6f, 0x83, 0x9c, 0x0e, 0x70, 0x83, 0x9b, 0x0e, 0x70, 0x83, - 0x9c, 0x0e, 0x71, 0x83, 0x9b, 0x0e, 0x72, 0x83, 0x9c, 0x0e, 0x72, 0x83, - 0x9b, 0x0e, 0x73, 0x83, 0x9c, 0x0e, 0x73, 0x83, 0x9b, 0x0e, 0x74, 0x83, - 0x9c, 0x0e, 0x75, 0x83, 0x9b, 0x0e, 0x75, 0x83, 0x9c, 0x0e, 0x76, 0x83, - 0x9b, 0x0e, 0x76, 0x83, 0x9c, 0x0e, 0x77, 0x83, 0x9b, 0x0e, 0x78, 0x83, - 0x9c, 0x0e, 0x78, 0x83, 0x9b, 0x0e, 0x79, 0x83, 0x9c, 0x0e, 0x79, 0x83, - 0x9b, 0x0e, 0x7a, 0x83, 0x9c, 0x0e, 0x7a, 0x83, 0x9b, 0x0e, 0x7b, 0x83, - 0x9c, 0x0e, 0x7c, 0x83, 0x9b, 0x0e, 0x7c, 0x83, 0x9c, 0x0e, 0x7d, 0x83, - 0x9b, 0x0e, 0x7d, 0x83, 0x9c, 0x0e, 0x7e, 0x83, 0x9b, 0x0e, 0x7e, 0x83, - 0x9c, 0x0e, 0x7f, 0x83, 0x9b, 0x0e, 0x7f, 0x83, 0x9c, 0x0e, 0x80, 0x83, - 0x9b, 0x0e, 0x81, 0x83, 0x9c, 0x0e, 0x81, 0x83, 0x9b, 0x0e, 0x82, 0x83, - 0x9c, 0x0e, 0x82, 0x83, 0x9b, 0x0e, 0x83, 0x83, 0x9c, 0x0e, 0x83, 0x83, - 0x9b, 0x0e, 0x84, 0x83, 0x9c, 0x0e, 0x84, 0x83, 0x9b, 0x0e, 0x85, 0x83, - 0x9c, 0x0e, 0x85, 0x83, 0x9b, 0x0e, 0x86, 0x83, 0x9c, 0x0e, 0x86, 0x83, - 0x9b, 0x0e, 0x87, 0x83, 0x9c, 0x0e, 0x87, 0x83, 0x9b, 0x0e, 0x88, 0x83, - 0x9c, 0x0e, 0x88, 0x83, 0x9b, 0x0e, 0x89, 0x83, 0x9c, 0x0e, 0x89, 0x83, - 0x9b, 0x0e, 0x8a, 0x83, 0x9c, 0x0e, 0x8a, 0x83, 0x9b, 0x0e, 0x8b, 0x83, - 0x9c, 0x0e, 0x8b, 0x83, 0x9b, 0x0e, 0x8c, 0x83, 0x9c, 0x0e, 0x8c, 0x83, - 0x9b, 0x0e, 0x8d, 0x83, 0x9c, 0x0e, 0x8d, 0x83, 0x9b, 0x0e, 0x8e, 0x83, - 0x9c, 0x0e, 0x8e, 0x83, 0x9b, 0x0e, 0x8e, 0x83, 0x9c, 0x0e, 0x8f, 0x83, - 0x9b, 0x0e, 0x8f, 0x83, 0x9c, 0x0e, 0x90, 0x83, 0x9b, 0x0e, 0x90, 0x83, - 0x9c, 0x0e, 0x91, 0x83, 0x9b, 0x0e, 0x91, 0x83, 0x9c, 0x0e, 0x92, 0x83, - 0x9b, 0x0e, 0x92, 0x83, 0x9c, 0x0e, 0x93, 0x83, 0x9b, 0x0e, 0x93, 0x83, - 0x9c, 0x0e, 0x94, 0x83, 0x9b, 0x0e, 0x94, 0x83, 0x9c, 0x0e, 0x94, 0x83, - 0x9b, 0x0e, 0x95, 0x83, 0x9c, 0x0e, 0x95, 0x83, 0x9b, 0x0e, 0x96, 0x83, - 0x9c, 0x0e, 0x96, 0x83, 0x9b, 0x0e, 0x97, 0x83, 0x9c, 0x0e, 0x97, 0x83, - 0x9b, 0x0e, 0x98, 0x83, 0x9c, 0x0e, 0x98, 0x83, 0x9b, 0x0e, 0x98, 0x83, - 0x9c, 0x0e, 0x99, 0x83, 0x9b, 0x0e, 0x99, 0x83, 0x9c, 0x0e, 0x9a, 0x83, - 0x9b, 0x0e, 0x9a, 0x83, 0x9c, 0x0e, 0x9a, 0x83, 0x9b, 0x0e, 0x9b, 0x83, - 0x9c, 0x0e, 0x9b, 0x83, 0x9b, 0x0e, 0x9c, 0x83, 0x9c, 0x0e, 0x9c, 0x83, - 0x9c, 0x0e, 0x9d, 0x83, 0x9d, 0x0e, 0x9d, 0x83, 0x9c, 0x0e, 0x9d, 0x83, - 0x9d, 0x0e, 0x9e, 0x83, 0x9c, 0x0e, 0x9e, 0x83, 0x9d, 0x0e, 0x9f, 0x83, - 0x9c, 0x0e, 0x9f, 0x83, 0x9d, 0x0e, 0x9f, 0x83, 0x9c, 0x0e, 0xa0, 0x83, - 0x9d, 0x0e, 0xa0, 0x83, 0x9c, 0x0e, 0xa1, 0x83, 0x9d, 0x0e, 0xa1, 0x83, - 0x9c, 0x0e, 0xa1, 0x83, 0x9d, 0x0e, 0xa2, 0x83, 0x9c, 0x0e, 0xa2, 0x83, - 0x9d, 0x0e, 0xa3, 0x83, 0x9c, 0x0e, 0xa3, 0x83, 0x9d, 0x0e, 0xa3, 0x83, - 0x9c, 0x0e, 0xa4, 0x83, 0x9d, 0x0e, 0xa4, 0x83, 0x9c, 0x0e, 0xa5, 0x83, - 0x9d, 0x0e, 0xa5, 0x83, 0x9c, 0x0e, 0xa5, 0x83, 0x9d, 0x0e, 0xa6, 0x84, - 0xa0, 0x0e, 0xa6, 0x84, 0xa1, 0x0e, 0xa6, 0x84, 0xa0, 0x0e, 0xa7, 0x84, - 0xa1, 0x0e, 0xa7, 0x84, 0xa0, 0x0e, 0xa8, 0x84, 0xa1, 0x0e, 0xa8, 0x84, - 0xa0, 0x0e, 0xa8, 0x84, 0xa1, 0x0e, 0xa9, 0x84, 0xa0, 0x0e, 0xa9, 0x84, - 0xa1, 0x0e, 0xaa, 0x85, 0xa4, 0x0e, 0xaa, 0x84, 0xa1, 0x0e, 0xaa, 0x85, - 0xa4, 0x0e, 0xab, 0x84, 0xa1, 0x0e, 0xab, 0x85, 0xa4, 0x0e, 0xab, 0x85, - 0xa4, 0x0e, 0xac, 0x85, 0xa4, 0x0e, 0xac, 0x85, 0xa4, 0x0e, 0xac, 0x85, - 0xa4, 0x0e, 0xad, 0x86, 0xa8, 0x0e, 0xad, 0x85, 0xa4, 0x0e, 0xae, 0x86, - 0xa8, 0x0e, 0xae, 0x85, 0xa4, 0x0e, 0xae, 0x86, 0xa8, 0x0e, 0xaf, 0x86, - 0xa7, 0x0e, 0xaf, 0x86, 0xa8, 0x0e, 0xaf, 0x86, 0xa7, 0x0e, 0xb0, 0x86, - 0xa8, 0x0e, 0xb0, 0x86, 0xa7, 0x0e, 0xb0, 0x86, 0xa8, 0x0e, 0xb1, 0x87, - 0xab, 0x0e, 0xb1, 0x87, 0xab, 0x0e, 0xb2, 0x87, 0xab, 0x0e, 0xb2, 0x87, - 0xab, 0x0e, 0xb2, 0x87, 0xab, 0x0e, 0xb3, 0x87, 0xab, 0x0e, 0xb3, 0x87, - 0xab, 0x0e, 0xb3, 0x87, 0xab, 0x0e, 0xb4, 0x87, 0xab, 0x0e, 0xb4, 0x87, - 0xab, 0x0e, 0xb4, 0x88, 0xaf, 0x0e, 0xb5, 0x87, 0xab, 0x0e, 0xb5, 0x88, - 0xaf, 0x0e, 0xb5, 0x87, 0xab, 0x0e, 0xb6, 0x88, 0xaf, 0x0e, 0xb6, 0x88, - 0xae, 0x0e, 0xb6, 0x88, 0xaf, 0x0e, 0xb7, 0x88, 0xae, 0x0e, 0xb7, 0x88, - 0xaf, 0x0e, 0xb7, 0x89, 0xb2, 0x0e, 0xb8, 0x89, 0xb2, 0x0e, 0xb8, 0x89, - 0xb2, 0x0e, 0xb8, 0x89, 0xb2, 0x0e, 0xb9, 0x89, 0xb2, 0x0e, 0xb9, 0x89, - 0xb2, 0x0e, 0xb9, 0x89, 0xb2, 0x0e, 0xba, 0x89, 0xb2, 0x0e, 0xba, 0x89, - 0xb2, 0x0e, 0xba, 0x89, 0xb2, 0x0e, 0xbb, 0x8a, 0xb5, 0x0e, 0xbb, 0x89, - 0xb2, 0x0e, 0xbb, 0x8a, 0xb5, 0x0e, 0xbc, 0x89, 0xb2, 0x0e, 0xbc, 0x8a, - 0xb5, 0x0e, 0xbc, 0x8a, 0xb5, 0x0e, 0xbd, 0x8a, 0xb5, 0x0e, 0xbd, 0x8a, - 0xb5, 0x0e, 0xbd, 0x8a, 0xb5, 0x0e, 0xbe, 0x8b, 0xb8, 0x0e, 0xbe, 0x8a, - 0xb5, 0x0e, 0xbe, 0x8b, 0xb8, 0x0e, 0xbf, 0x8a, 0xb5, 0x0e, 0xbf, 0x8b, - 0xb8, 0x0e, 0xbf, 0x8b, 0xb8, 0x0e, 0xc0, 0x8b, 0xb8, 0x0e, 0xc0, 0x8b, - 0xb8, 0x0e, 0xc0, 0x8b, 0xb8, 0x0e, 0xc1, 0x8c, 0xbb, 0x0e, 0xc1, 0x8c, - 0xbc, 0x0e, 0xc1, 0x8c, 0xbb, 0x0e, 0xc1, 0x8c, 0xbc, 0x0e, 0xc2, 0x8c, - 0xbb, 0x0e, 0xc2, 0x8c, 0xbc, 0x0e, 0xc2, 0x8c, 0xbb, 0x0e, 0xc3, 0x8c, - 0xbc, 0x0e, 0xc3, 0x8c, 0xbb, 0x0e, 0xc3, 0x8c, 0xbc, 0x0e, 0xc4, 0x8c, - 0xbb, 0x0e, 0xc4, 0x8c, 0xbc, 0x0e, 0xc4, 0x8d, 0xbf, 0x0e, 0xc5, 0x8c, - 0xbc, 0x0e, 0xc5, 0x8d, 0xbf, 0x0e, 0xc5, 0x8c, 0xbc, 0x0e, 0xc6, 0x8d, - 0xbf, 0x0e, 0xc6, 0x8d, 0xbe, 0x0e, 0xc6, 0x8d, 0xbf, 0x0e, 0xc6, 0x8d, - 0xbe, 0x0e, 0xc7, 0x8d, 0xbf, 0x0e, 0xc7, 0x8e, 0xc1, 0x0e, 0xc7, 0x8d, - 0xbf, 0x0e, 0xc8, 0x8e, 0xc1, 0x0e, 0xc8, 0x8d, 0xbf, 0x0e, 0xc8, 0x8e, - 0xc1, 0x0e, 0xc9, 0x8e, 0xc1, 0x0e, 0xc9, 0x8e, 0xc1, 0x0e, 0xc9, 0x8e, - 0xc1, 0x0e, 0xc9, 0x8e, 0xc1, 0x0e, 0xca, 0x8f, 0xc4, 0x0e, 0xca, 0x8f, - 0xc5, 0x0e, 0xca, 0x8f, 0xc4, 0x0e, 0xcb, 0x8f, 0xc5, 0x0e, 0xcb, 0x8f, - 0xc4, 0x0e, 0xcb, 0x8f, 0xc5, 0x0e, 0xcc, 0x8f, 0xc4, 0x0e, 0xcc, 0x8f, - 0xc5, 0x0e, 0xcc, 0x8f, 0xc4, 0x0e, 0xcc, 0x8f, 0xc5, 0x0e, 0xcd, 0x90, - 0xc7, 0x0e, 0xcd, 0x8f, 0xc5, 0x0e, 0xcd, 0x90, 0xc7, 0x0e, 0xce, 0x8f, - 0xc5, 0x0e, 0xce, 0x90, 0xc7, 0x0e, 0xce, 0x8f, 0xc5, 0x0e, 0xce, 0x90, - 0xc7, 0x0e, 0xcf, 0x90, 0xc7, 0x0e, 0xcf, 0x90, 0xc7, 0x0e, 0xcf, 0x90, - 0xc7, 0x0e, 0xd0, 0x90, 0xc7, 0x0e, 0xd0, 0x91, 0xca, 0x0e, 0xd0, 0x90, - 0xc7, 0x0e, 0xd0, 0x91, 0xca, 0x0e, 0xd1, 0x90, 0xc7, 0x0e, 0xd1, 0x91, - 0xca, 0x0e, 0xd1, 0x91, 0xca, 0x0e, 0xd2, 0x91, 0xca, 0x0e, 0xd2, 0x91, - 0xca, 0x0e, 0xd2, 0x91, 0xca, 0x0e, 0xd2, 0x92, 0xcd, 0x0e, 0xd3, 0x92, - 0xcd, 0x0e, 0xd3, 0x92, 0xcd, 0x0e, 0xd3, 0x92, 0xcd, 0x0e, 0xd4, 0x92, - 0xcd, 0x0e, 0xd4, 0x92, 0xcd, 0x0e, 0xd4, 0x92, 0xcd, 0x0e, 0xd4, 0x92, - 0xcd, 0x0e, 0xd5, 0x92, 0xcd, 0x0e, 0xd5, 0x92, 0xcd, 0x0e, 0xd5, 0x93, - 0xd0, 0x0e, 0xd6, 0x92, 0xcd, 0x0e, 0xd6, 0x93, 0xd0, 0x0e, 0xd6, 0x92, - 0xcd, 0x0e, 0xd6, 0x93, 0xd0, 0x0e, 0xd7, 0x93, 0xcf, 0x0e, 0xd7, 0x93, - 0xd0, 0x0e, 0xd7, 0x93, 0xcf, 0x0e, 0xd7, 0x93, 0xd0, 0x0e, 0xd8, 0x94, - 0xd2, 0x0e, 0xd8, 0x94, 0xd2, 0x0e, 0xd8, 0x94, 0xd2, 0x0e, 0xd9, 0x94, - 0xd2, 0x0e, 0xd9, 0x94, 0xd2, 0x0e, 0xd9, 0x94, 0xd2, 0x0e, 0xd9, 0x94, - 0xd2, 0x0e, 0xda, 0x94, 0xd2, 0x0e, 0xda, 0x94, 0xd2, 0x0e, 0xda, 0x94, - 0xd2, 0x0e, 0xda, 0x94, 0xd5, 0x0e, 0xdb, 0x94, 0xd2, 0x0e, 0xdb, 0x94, - 0xd5, 0x0e, 0xdb, 0x94, 0xd2, 0x0e, 0xdb, 0x94, 0xd5, 0x0e, 0xdc, 0x94, - 0xd2, 0x0e, 0xdc, 0x94, 0xd5, 0x0e, 0xdc, 0x94, 0xd5, 0x0e, 0xdd, 0x94, - 0xd5, 0x0e, 0xdd, 0x95, 0xd7, 0x0e, 0xdd, 0x94, 0xd5, 0x0e, 0xdd, 0x95, - 0xd7, 0x0e, 0xde, 0x94, 0xd5, 0x0e, 0xde, 0x95, 0xd7, 0x0e, 0xde, 0x94, - 0xd5, 0x0e, 0xde, 0x95, 0xd7, 0x0e, 0xdf, 0x95, 0xd7, 0x0e, 0xdf, 0x95, - 0xd7, 0x0e, 0xdf, 0x95, 0xd7, 0x0e, 0xdf, 0x95, 0xd7, 0x0e, 0xe0, 0x96, - 0xda, 0x0e, 0xe0, 0x96, 0xda, 0x0e, 0xe0, 0x96, 0xda, 0x0e, 0xe1, 0x96, - 0xda, 0x0e, 0xe1, 0x96, 0xda, 0x0e, 0xe1, 0x96, 0xda, 0x0e, 0xe1, 0x96, - 0xda, 0x0e, 0xe2, 0x96, 0xda, 0x0e, 0xe2, 0x96, 0xda, 0x0e, 0xe2, 0x96, - 0xda, 0x0e, 0xe2, 0x97, 0xdd, 0x0e, 0xe3, 0x96, 0xda, 0x0e, 0xe3, 0x97, - 0xdd, 0x0e, 0xe3, 0x96, 0xda, 0x0e, 0xe3, 0x97, 0xdd, 0x0e, 0xe4, 0x96, - 0xda, 0x0e, 0xe4, 0x97, 0xdd, 0x0e, 0xe4, 0x97, 0xdc, 0x0e, 0xe4, 0x97, - 0xdd, 0x0e, 0xe5, 0x98, 0xdf, 0x0e, 0xe5, 0x97, 0xdd, 0x0e, 0xe5, 0x98, - 0xdf, 0x0e, 0xe5, 0x97, 0xdd, 0x0e, 0xe6, 0x98, 0xdf, 0x0e, 0xe6, 0x97, - 0xdd, 0x0e, 0xe6, 0x98, 0xdf, 0x0e, 0xe6, 0x98, 0xdf, 0x0e, 0xe7, 0x98, - 0xdf, 0x0e, 0xe7, 0x99, 0xe1, 0x0e, 0xe7, 0x99, 0xe2, 0x0e, 0xe7, 0x99, - 0xe1, 0x0e, 0xe8, 0x99, 0xe2, 0x0e, 0xe8, 0x99, 0xe1, 0x0e, 0xe8, 0x99, - 0xe2, 0x0e, 0xe8, 0x99, 0xe1, 0x0e, 0xe9, 0x99, 0xe2, 0x0e, 0xe9, 0x99, - 0xe1, 0x0e, 0xe9, 0x99, 0xe2, 0x0e, 0xe9, 0x99, 0xe1, 0x0e, 0xea, 0x99, - 0xe2, 0x0e, 0xea, 0x9a, 0xe4, 0x0e, 0xea, 0x99, 0xe2, 0x0e, 0xea, 0x9a, - 0xe4, 0x0e, 0xeb, 0x99, 0xe2, 0x0e, 0xeb, 0x9a, 0xe4, 0x0e, 0xeb, 0x9a, - 0xe4, 0x0e, 0xeb, 0x9a, 0xe4, 0x0e, 0xec, 0x9a, 0xe4, 0x0e, 0xec, 0x9a, - 0xe4, 0x0e, 0xec, 0x9a, 0xe6, 0x0e, 0xec, 0x9a, 0xe4, 0x0e, 0xec, 0x9a, - 0xe6, 0x0e, 0xed, 0x9a, 0xe4, 0x0e, 0xed, 0x9a, 0xe6, 0x0e, 0xed, 0x9a, - 0xe4, 0x0e, 0xed, 0x9a, 0xe6, 0x0e, 0xee, 0x9a, 0xe6, 0x0e, 0xee, 0x9a, - 0xe6, 0x0e, 0xee, 0x9b, 0xe8, 0x0e, 0xee, 0x9b, 0xe9, 0x0e, 0xef, 0x9b, - 0xe8, 0x0e, 0xef, 0x9b, 0xe9, 0x0e, 0xef, 0x9b, 0xe8, 0x0e, 0xef, 0x9b, - 0xe9, 0x0e, 0xf0, 0x9b, 0xe8, 0x0e, 0xf0, 0x9b, 0xe9, 0x0e, 0xf0, 0x9b, - 0xe8, 0x0e, 0xf0, 0x9b, 0xe9, 0x0e, 0xf1, 0x9c, 0xeb, 0x0e, 0xf1, 0x9b, - 0xe9, 0x0e, 0xf1, 0x9c, 0xeb, 0x0e, 0xf1, 0x9b, 0xe9, 0x0e, 0xf2, 0x9c, - 0xeb, 0x0e, 0xf2, 0x9b, 0xe9, 0x0e, 0xf2, 0x9c, 0xeb, 0x0e, 0xf2, 0x9c, - 0xeb, 0x0e, 0xf2, 0x9c, 0xeb, 0x0e, 0xf3, 0x9d, 0xed, 0x0e, 0xf3, 0x9d, - 0xed, 0x0e, 0xf3, 0x9d, 0xed, 0x0e, 0xf3, 0x9d, 0xed, 0x0e, 0xf4, 0x9d, - 0xed, 0x0e, 0xf4, 0x9d, 0xed, 0x0e, 0xf4, 0x9d, 0xed, 0x0e, 0xf4, 0x9d, - 0xed, 0x0e, 0xf5, 0x9d, 0xed, 0x0e, 0xf5, 0x9d, 0xed, 0x0e, 0xf5, 0x9e, - 0xef, 0x0e, 0xf5, 0x9d, 0xed, 0x0e, 0xf5, 0x9e, 0xef, 0x0e, 0xf6, 0x9d, - 0xed, 0x0e, 0xf6, 0x9e, 0xef, 0x0e, 0xf6, 0x9d, 0xed, 0x0e, 0xf6, 0x9e, - 0xef, 0x0e, 0xf7, 0x9d, 0xed, 0x0e, 0xf7, 0x9e, 0xef, 0x0e, 0xf7, 0x9e, - 0xef, 0x0e, 0xf7, 0x9e, 0xef, 0x0e, 0xf8, 0x9f, 0xf2, 0x0e, 0xf8, 0x9e, - 0xef, 0x0e, 0xf8, 0x9f, 0xf2, 0x0e, 0xf8, 0x9e, 0xef, 0x0e, 0xf8, 0x9f, - 0xf2, 0x0e, 0xf9, 0x9e, 0xef, 0x0e, 0xf9, 0x9f, 0xf2, 0x0e, 0xf9, 0x9f, - 0xf1, 0x0e, 0xf9, 0x9f, 0xf2, 0x0e, 0xfa, 0x9f, 0xf4, 0x0e, 0xfa, 0x9f, - 0xf4, 0x0e, 0xfa, 0x9f, 0xf4, 0x0e, 0xfa, 0x9f, 0xf4, 0x0e, 0xfa, 0x9f, - 0xf4, 0x0e, 0xfb, 0x9f, 0xf4, 0x0e, 0xfb, 0x9f, 0xf4, 0x0e, 0xfb, 0x9f, - 0xf4, 0x0e, 0xfb, 0x9f, 0xf4, 0x0e, 0xfc, 0x9f, 0xf4, 0x0e, 0xfc, 0xa0, - 0xf6, 0x0e, 0xfc, 0x9f, 0xf4, 0x0e, 0xfc, 0xa0, 0xf6, 0x0e, 0xfc, 0x9f, - 0xf4, 0x0e, 0xfd, 0xa0, 0xf6, 0x0e, 0xfd, 0x9f, 0xf4, 0x0e, 0xfd, 0xa0, - 0xf6, 0x0e, 0xfd, 0xa0, 0xf6, 0x0e, 0xfe, 0xa0, 0xf6, 0x0e, 0xfe, 0xa0, - 0xf6, 0x0e, 0xfe, 0xa0, 0xf6, 0x0e, 0xfe, 0xa0, 0xf6, 0x0e, 0xfe, 0xa0, - 0xf6, 0x0e, 0xff, 0xa1, 0xf8, 0x0e, 0xff, 0xa0, 0xf6, 0x0e, 0x03, 0x84, - 0x9b, 0x0f, 0x0a, 0x84, 0x9b, 0x0f, 0x0f, 0x84, 0x9b, 0x0f, 0x14, 0x84, - 0x9b, 0x0f, 0x17, 0x84, 0x9b, 0x0f, 0x1b, 0x84, 0x9b, 0x0f, 0x1e, 0x84, - 0x9b, 0x0f, 0x20, 0x84, 0x9c, 0x0f, 0x23, 0x84, 0x9b, 0x0f, 0x25, 0x84, - 0x9c, 0x0f, 0x27, 0x84, 0x9b, 0x0f, 0x29, 0x84, 0x9c, 0x0f, 0x2b, 0x84, - 0x9b, 0x0f, 0x2d, 0x84, 0x9c, 0x0f, 0x2f, 0x84, 0x9b, 0x0f, 0x31, 0x84, - 0x9c, 0x0f, 0x32, 0x84, 0x9b, 0x0f, 0x34, 0x84, 0x9c, 0x0f, 0x35, 0x84, - 0x9b, 0x0f, 0x37, 0x84, 0x9c, 0x0f, 0x38, 0x84, 0x9b, 0x0f, 0x3a, 0x84, - 0x9c, 0x0f, 0x3b, 0x84, 0x9b, 0x0f, 0x3c, 0x84, 0x9c, 0x0f, 0x3e, 0x84, - 0x9b, 0x0f, 0x3f, 0x84, 0x9c, 0x0f, 0x40, 0x84, 0x9b, 0x0f, 0x42, 0x84, - 0x9c, 0x0f, 0x43, 0x84, 0x9b, 0x0f, 0x44, 0x84, 0x9c, 0x0f, 0x45, 0x84, - 0x9b, 0x0f, 0x46, 0x84, 0x9c, 0x0f, 0x47, 0x84, 0x9b, 0x0f, 0x48, 0x84, - 0x9c, 0x0f, 0x49, 0x84, 0x9b, 0x0f, 0x4a, 0x84, 0x9c, 0x0f, 0x4b, 0x84, - 0x9b, 0x0f, 0x4c, 0x84, 0x9c, 0x0f, 0x4d, 0x84, 0x9b, 0x0f, 0x4e, 0x84, - 0x9c, 0x0f, 0x4f, 0x84, 0x9b, 0x0f, 0x50, 0x84, 0x9c, 0x0f, 0x51, 0x84, - 0x9b, 0x0f, 0x52, 0x84, 0x9c, 0x0f, 0x53, 0x84, 0x9b, 0x0f, 0x54, 0x84, - 0x9c, 0x0f, 0x55, 0x84, 0x9b, 0x0f, 0x56, 0x84, 0x9c, 0x0f, 0x57, 0x84, - 0x9b, 0x0f, 0x58, 0x84, 0x9c, 0x0f, 0x58, 0x84, 0x9b, 0x0f, 0x59, 0x84, - 0x9c, 0x0f, 0x5a, 0x84, 0x9b, 0x0f, 0x5b, 0x84, 0x9c, 0x0f, 0x5c, 0x84, - 0x9b, 0x0f, 0x5d, 0x84, 0x9c, 0x0f, 0x5d, 0x84, 0x9b, 0x0f, 0x5e, 0x84, - 0x9c, 0x0f, 0x5f, 0x84, 0x9b, 0x0f, 0x60, 0x84, 0x9c, 0x0f, 0x60, 0x84, - 0x9b, 0x0f, 0x61, 0x84, 0x9c, 0x0f, 0x62, 0x84, 0x9b, 0x0f, 0x63, 0x84, - 0x9c, 0x0f, 0x63, 0x84, 0x9b, 0x0f, 0x64, 0x84, 0x9c, 0x0f, 0x65, 0x84, - 0x9b, 0x0f, 0x66, 0x84, 0x9c, 0x0f, 0x66, 0x84, 0x9b, 0x0f, 0x67, 0x84, - 0x9c, 0x0f, 0x68, 0x84, 0x9b, 0x0f, 0x68, 0x84, 0x9c, 0x0f, 0x69, 0x84, - 0x9b, 0x0f, 0x6a, 0x84, 0x9c, 0x0f, 0x6a, 0x84, 0x9b, 0x0f, 0x6b, 0x84, - 0x9c, 0x0f, 0x6c, 0x84, 0x9b, 0x0f, 0x6c, 0x84, 0x9c, 0x0f, 0x6d, 0x84, - 0x9b, 0x0f, 0x6e, 0x84, 0x9c, 0x0f, 0x6e, 0x84, 0x9b, 0x0f, 0x6f, 0x84, - 0x9c, 0x0f, 0x70, 0x84, 0x9b, 0x0f, 0x70, 0x84, 0x9c, 0x0f, 0x71, 0x84, - 0x9b, 0x0f, 0x72, 0x84, 0x9c, 0x0f, 0x72, 0x84, 0x9b, 0x0f, 0x73, 0x84, - 0x9c, 0x0f, 0x73, 0x84, 0x9b, 0x0f, 0x74, 0x84, 0x9c, 0x0f, 0x75, 0x84, - 0x9b, 0x0f, 0x75, 0x84, 0x9c, 0x0f, 0x76, 0x84, 0x9b, 0x0f, 0x76, 0x84, - 0x9c, 0x0f, 0x77, 0x84, 0x9b, 0x0f, 0x78, 0x84, 0x9c, 0x0f, 0x78, 0x84, - 0x9b, 0x0f, 0x79, 0x84, 0x9c, 0x0f, 0x79, 0x84, 0x9b, 0x0f, 0x7a, 0x84, - 0x9c, 0x0f, 0x7a, 0x84, 0x9b, 0x0f, 0x7b, 0x84, 0x9c, 0x0f, 0x7c, 0x84, - 0x9b, 0x0f, 0x7c, 0x84, 0x9c, 0x0f, 0x7d, 0x84, 0x9b, 0x0f, 0x7d, 0x84, - 0x9c, 0x0f, 0x7e, 0x84, 0x9b, 0x0f, 0x7e, 0x84, 0x9c, 0x0f, 0x7f, 0x84, - 0x9b, 0x0f, 0x7f, 0x84, 0x9c, 0x0f, 0x80, 0x84, 0x9b, 0x0f, 0x81, 0x84, - 0x9c, 0x0f, 0x81, 0x84, 0x9b, 0x0f, 0x82, 0x84, 0x9c, 0x0f, 0x82, 0x84, - 0x9b, 0x0f, 0x83, 0x84, 0x9c, 0x0f, 0x83, 0x84, 0x9b, 0x0f, 0x84, 0x84, - 0x9c, 0x0f, 0x84, 0x84, 0x9b, 0x0f, 0x85, 0x84, 0x9c, 0x0f, 0x85, 0x84, - 0x9b, 0x0f, 0x86, 0x84, 0x9c, 0x0f, 0x86, 0x84, 0x9b, 0x0f, 0x87, 0x84, - 0x9c, 0x0f, 0x87, 0x84, 0x9b, 0x0f, 0x88, 0x84, 0x9c, 0x0f, 0x88, 0x84, - 0x9b, 0x0f, 0x89, 0x84, 0x9c, 0x0f, 0x89, 0x84, 0x9b, 0x0f, 0x8a, 0x84, - 0x9c, 0x0f, 0x8a, 0x84, 0x9b, 0x0f, 0x8b, 0x84, 0x9c, 0x0f, 0x8b, 0x84, - 0x9b, 0x0f, 0x8c, 0x84, 0x9c, 0x0f, 0x8c, 0x84, 0x9b, 0x0f, 0x8d, 0x84, - 0x9c, 0x0f, 0x8d, 0x84, 0x9b, 0x0f, 0x8e, 0x84, 0x9c, 0x0f, 0x8e, 0x84, - 0x9b, 0x0f, 0x8e, 0x84, 0x9c, 0x0f, 0x8f, 0x84, 0x9b, 0x0f, 0x8f, 0x84, - 0x9c, 0x0f, 0x90, 0x84, 0x9b, 0x0f, 0x90, 0x84, 0x9c, 0x0f, 0x91, 0x84, - 0x9b, 0x0f, 0x91, 0x84, 0x9c, 0x0f, 0x92, 0x84, 0x9b, 0x0f, 0x92, 0x84, - 0x9c, 0x0f, 0x93, 0x84, 0x9b, 0x0f, 0x93, 0x84, 0x9c, 0x0f, 0x94, 0x84, - 0x9b, 0x0f, 0x94, 0x84, 0x9c, 0x0f, 0x94, 0x84, 0x9b, 0x0f, 0x95, 0x84, - 0x9c, 0x0f, 0x95, 0x84, 0x9b, 0x0f, 0x96, 0x84, 0x9c, 0x0f, 0x96, 0x84, - 0x9b, 0x0f, 0x97, 0x84, 0x9c, 0x0f, 0x97, 0x84, 0x9b, 0x0f, 0x98, 0x84, - 0x9c, 0x0f, 0x98, 0x84, 0x9b, 0x0f, 0x98, 0x84, 0x9c, 0x0f, 0x99, 0x84, - 0x9b, 0x0f, 0x99, 0x84, 0x9c, 0x0f, 0x9a, 0x84, 0x9b, 0x0f, 0x9a, 0x84, - 0x9c, 0x0f, 0x9a, 0x84, 0x9b, 0x0f, 0x9b, 0x84, 0x9c, 0x0f, 0x9b, 0x84, - 0x9b, 0x0f, 0x9c, 0x84, 0x9c, 0x0f, 0x9c, 0x84, 0x9c, 0x0f, 0x9d, 0x84, - 0x9d, 0x0f, 0x9d, 0x84, 0x9d, 0x0f, 0x9d, 0x84, 0x9d, 0x0f, 0x9e, 0x84, - 0x9e, 0x0f, 0x9e, 0x84, 0x9e, 0x0f, 0x9f, 0x84, 0x9f, 0x0f, 0x9f, 0x84, - 0x9e, 0x0f, 0x9f, 0x84, 0x9f, 0x0f, 0xa0, 0x84, 0x9e, 0x0f, 0xa0, 0x84, - 0x9f, 0x0f, 0xa1, 0x84, 0x9e, 0x0f, 0xa1, 0x84, 0x9f, 0x0f, 0xa1, 0x84, - 0x9e, 0x0f, 0xa2, 0x84, 0x9f, 0x0f, 0xa2, 0x84, 0x9e, 0x0f, 0xa3, 0x84, - 0x9f, 0x0f, 0xa3, 0x84, 0x9e, 0x0f, 0xa3, 0x84, 0x9f, 0x0f, 0xa4, 0x84, - 0x9e, 0x0f, 0xa4, 0x84, 0x9f, 0x0f, 0xa5, 0x84, 0x9e, 0x0f, 0xa5, 0x84, - 0x9f, 0x0f, 0xa5, 0x84, 0x9e, 0x0f, 0xa6, 0x84, 0x9f, 0x0f, 0xa6, 0x84, - 0x9e, 0x0f, 0xa6, 0x84, 0x9f, 0x0f, 0xa7, 0x84, 0x9e, 0x0f, 0xa7, 0x84, - 0x9f, 0x0f, 0xa8, 0x85, 0xa2, 0x0f, 0xa8, 0x84, 0x9f, 0x0f, 0xa8, 0x85, - 0xa2, 0x0f, 0xa9, 0x84, 0x9f, 0x0f, 0xa9, 0x85, 0xa2, 0x0f, 0xaa, 0x85, - 0xa2, 0x0f, 0xaa, 0x85, 0xa2, 0x0f, 0xaa, 0x85, 0xa2, 0x0f, 0xab, 0x85, - 0xa2, 0x0f, 0xab, 0x86, 0xa6, 0x0f, 0xab, 0x86, 0xa6, 0x0f, 0xac, 0x86, - 0xa6, 0x0f, 0xac, 0x86, 0xa6, 0x0f, 0xac, 0x86, 0xa6, 0x0f, 0xad, 0x86, - 0xa6, 0x0f, 0xad, 0x86, 0xa6, 0x0f, 0xae, 0x86, 0xa6, 0x0f, 0xae, 0x86, - 0xa6, 0x0f, 0xae, 0x86, 0xa6, 0x0f, 0xaf, 0x87, 0xaa, 0x0f, 0xaf, 0x86, - 0xa6, 0x0f, 0xaf, 0x87, 0xaa, 0x0f, 0xb0, 0x86, 0xa6, 0x0f, 0xb0, 0x87, - 0xaa, 0x0f, 0xb0, 0x87, 0xa9, 0x0f, 0xb1, 0x87, 0xaa, 0x0f, 0xb1, 0x87, - 0xa9, 0x0f, 0xb2, 0x87, 0xaa, 0x0f, 0xb2, 0x87, 0xa9, 0x0f, 0xb2, 0x87, - 0xaa, 0x0f, 0xb3, 0x88, 0xad, 0x0f, 0xb3, 0x88, 0xad, 0x0f, 0xb3, 0x88, - 0xad, 0x0f, 0xb4, 0x88, 0xad, 0x0f, 0xb4, 0x88, 0xad, 0x0f, 0xb4, 0x88, - 0xad, 0x0f, 0xb5, 0x88, 0xad, 0x0f, 0xb5, 0x88, 0xad, 0x0f, 0xb5, 0x88, - 0xad, 0x0f, 0xb6, 0x88, 0xad, 0x0f, 0xb6, 0x89, 0xb0, 0x0f, 0xb6, 0x88, - 0xad, 0x0f, 0xb7, 0x89, 0xb0, 0x0f, 0xb7, 0x89, 0xb2, 0x0f, 0xb7, 0x89, - 0xb0, 0x0f, 0xb8, 0x89, 0xb2, 0x0f, 0xb8, 0x89, 0xb0, 0x0f, 0xb8, 0x89, - 0xb2, 0x0f, 0xb9, 0x89, 0xb0, 0x0f, 0xb9, 0x89, 0xb2, 0x0f, 0xb9, 0x89, - 0xb0, 0x0f, 0xba, 0x89, 0xb2, 0x0f, 0xba, 0x89, 0xb2, 0x0f, 0xba, 0x89, - 0xb2, 0x0f, 0xbb, 0x89, 0xb2, 0x0f, 0xbb, 0x89, 0xb2, 0x0f, 0xbb, 0x8a, - 0xb3, 0x0f, 0xbc, 0x8a, 0xb4, 0x0f, 0xbc, 0x8b, 0xb7, 0x0f, 0xbc, 0x8b, - 0xb7, 0x0f, 0xbd, 0x8b, 0xb7, 0x0f, 0xbd, 0x8b, 0xb7, 0x0f, 0xbd, 0x8b, - 0xb7, 0x0f, 0xbe, 0x8b, 0xb7, 0x0f, 0xbe, 0x8b, 0xb7, 0x0f, 0xbe, 0x8b, - 0xb7, 0x0f, 0xbf, 0x8b, 0xb7, 0x0f, 0xbf, 0x8b, 0xb7, 0x0f, 0xbf, 0x8c, - 0xba, 0x0f, 0xc0, 0x8b, 0xb7, 0x0f, 0xc0, 0x8c, 0xba, 0x0f, 0xc0, 0x8b, - 0xb7, 0x0f, 0xc1, 0x8c, 0xba, 0x0f, 0xc1, 0x8c, 0xba, 0x0f, 0xc1, 0x8c, - 0xba, 0x0f, 0xc1, 0x8c, 0xba, 0x0f, 0xc2, 0x8c, 0xba, 0x0f, 0xc2, 0x8d, - 0xbd, 0x0f, 0xc2, 0x8c, 0xba, 0x0f, 0xc3, 0x8d, 0xbd, 0x0f, 0xc3, 0x8c, - 0xba, 0x0f, 0xc3, 0x8d, 0xbd, 0x0f, 0xc4, 0x8c, 0xba, 0x0f, 0xc4, 0x8d, - 0xbd, 0x0f, 0xc4, 0x8d, 0xbd, 0x0f, 0xc5, 0x8d, 0xbd, 0x0f, 0xc5, 0x8d, - 0xbd, 0x0f, 0xc5, 0x8d, 0xbd, 0x0f, 0xc6, 0x8e, 0xc0, 0x0f, 0xc6, 0x8e, - 0xc0, 0x0f, 0xc6, 0x8e, 0xc0, 0x0f, 0xc6, 0x8e, 0xc0, 0x0f, 0xc7, 0x8e, - 0xc0, 0x0f, 0xc7, 0x8e, 0xc0, 0x0f, 0xc7, 0x8e, 0xc0, 0x0f, 0xc8, 0x8e, - 0xc0, 0x0f, 0xc8, 0x8e, 0xc0, 0x0f, 0xc8, 0x8e, 0xc0, 0x0f, 0xc9, 0x8e, - 0xc3, 0x0f, 0xc9, 0x8e, 0xc0, 0x0f, 0xc9, 0x8e, 0xc3, 0x0f, 0xc9, 0x8e, - 0xc0, 0x0f, 0xca, 0x8e, 0xc3, 0x0f, 0xca, 0x8e, 0xc3, 0x0f, 0xca, 0x8e, - 0xc3, 0x0f, 0xcb, 0x8e, 0xc3, 0x0f, 0xcb, 0x8e, 0xc3, 0x0f, 0xcb, 0x8f, - 0xc6, 0x0f, 0xcc, 0x8e, 0xc3, 0x0f, 0xcc, 0x8f, 0xc6, 0x0f, 0xcc, 0x8e, - 0xc3, 0x0f, 0xcc, 0x8f, 0xc6, 0x0f, 0xcd, 0x8f, 0xc6, 0x0f, 0xcd, 0x8f, - 0xc6, 0x0f, 0xcd, 0x8f, 0xc6, 0x0f, 0xce, 0x8f, 0xc6, 0x0f, 0xce, 0x90, - 0xc9, 0x0f, 0xce, 0x90, 0xc9, 0x0f, 0xce, 0x90, 0xc9, 0x0f, 0xcf, 0x90, - 0xc9, 0x0f, 0xcf, 0x90, 0xc9, 0x0f, 0xcf, 0x90, 0xc9, 0x0f, 0xd0, 0x90, - 0xc9, 0x0f, 0xd0, 0x90, 0xc9, 0x0f, 0xd0, 0x90, 0xc9, 0x0f, 0xd0, 0x90, - 0xc9, 0x0f, 0xd1, 0x90, 0xc9, 0x0f, 0xd1, 0x90, 0xc9, 0x0f, 0xd1, 0x91, - 0xcc, 0x0f, 0xd2, 0x90, 0xc9, 0x0f, 0xd2, 0x91, 0xcc, 0x0f, 0xd2, 0x90, - 0xc9, 0x0f, 0xd2, 0x91, 0xcc, 0x0f, 0xd3, 0x91, 0xcb, 0x0f, 0xd3, 0x91, - 0xcc, 0x0f, 0xd3, 0x91, 0xcb, 0x0f, 0xd4, 0x91, 0xcc, 0x0f, 0xd4, 0x92, - 0xce, 0x0f, 0xd4, 0x92, 0xce, 0x0f, 0xd4, 0x92, 0xce, 0x0f, 0xd5, 0x92, - 0xce, 0x0f, 0xd5, 0x92, 0xce, 0x0f, 0xd5, 0x92, 0xce, 0x0f, 0xd6, 0x92, - 0xce, 0x0f, 0xd6, 0x92, 0xce, 0x0f, 0xd6, 0x92, 0xce, 0x0f, 0xd6, 0x92, - 0xce, 0x0f, 0xd7, 0x93, 0xd1, 0x0f, 0xd7, 0x92, 0xce, 0x0f, 0xd7, 0x93, - 0xd1, 0x0f, 0xd7, 0x92, 0xce, 0x0f, 0xd8, 0x93, 0xd1, 0x0f, 0xd8, 0x93, - 0xd1, 0x0f, 0xd8, 0x93, 0xd1, 0x0f, 0xd9, 0x93, 0xd1, 0x0f, 0xd9, 0x93, - 0xd1, 0x0f, 0xd9, 0x94, 0xd4, 0x0f, 0xd9, 0x93, 0xd1, 0x0f, 0xda, 0x94, - 0xd4, 0x0f, 0xda, 0x93, 0xd1, 0x0f, 0xda, 0x94, 0xd4, 0x0f, 0xda, 0x93, - 0xd1, 0x0f, 0xdb, 0x94, 0xd4, 0x0f, 0xdb, 0x94, 0xd3, 0x0f, 0xdb, 0x94, - 0xd4, 0x0f, 0xdb, 0x95, 0xd6, 0x0f, 0xdc, 0x95, 0xd6, 0x0f, 0xdc, 0x95, - 0xd6, 0x0f, 0xdc, 0x95, 0xd6, 0x0f, 0xdd, 0x95, 0xd6, 0x0f, 0xdd, 0x95, - 0xd6, 0x0f, 0xdd, 0x95, 0xd6, 0x0f, 0xdd, 0x95, 0xd6, 0x0f, 0xde, 0x95, - 0xd6, 0x0f, 0xde, 0x95, 0xd6, 0x0f, 0xde, 0x96, 0xd9, 0x0f, 0xde, 0x95, - 0xd6, 0x0f, 0xdf, 0x96, 0xd9, 0x0f, 0xdf, 0x95, 0xd6, 0x0f, 0xdf, 0x96, - 0xd9, 0x0f, 0xdf, 0x95, 0xd6, 0x0f, 0xe0, 0x96, 0xd9, 0x0f, 0xe0, 0x96, - 0xd9, 0x0f, 0xe0, 0x96, 0xd9, 0x0f, 0xe1, 0x96, 0xd9, 0x0f, 0xe1, 0x96, - 0xd9, 0x0f, 0xe1, 0x97, 0xdb, 0x0f, 0xe1, 0x96, 0xd9, 0x0f, 0xe2, 0x97, - 0xdb, 0x0f, 0xe2, 0x96, 0xd9, 0x0f, 0xe2, 0x97, 0xdb, 0x0f, 0xe2, 0x97, - 0xdb, 0x0f, 0xe3, 0x97, 0xdb, 0x0f, 0xe3, 0x97, 0xdb, 0x0f, 0xe3, 0x97, - 0xdb, 0x0f, 0xe3, 0x98, 0xde, 0x0f, 0xe4, 0x98, 0xde, 0x0f, 0xe4, 0x98, - 0xde, 0x0f, 0xe4, 0x98, 0xde, 0x0f, 0xe4, 0x98, 0xde, 0x0f, 0xe5, 0x98, - 0xde, 0x0f, 0xe5, 0x98, 0xde, 0x0f, 0xe5, 0x98, 0xde, 0x0f, 0xe5, 0x98, - 0xde, 0x0f, 0xe6, 0x98, 0xde, 0x0f, 0xe6, 0x98, 0xe0, 0x0f, 0xe6, 0x98, - 0xde, 0x0f, 0xe6, 0x98, 0xe0, 0x0f, 0xe7, 0x98, 0xde, 0x0f, 0xe7, 0x98, - 0xe0, 0x0f, 0xe7, 0x98, 0xdf, 0x0f, 0xe7, 0x98, 0xe0, 0x0f, 0xe8, 0x98, - 0xdf, 0x0f, 0xe8, 0x98, 0xe0, 0x0f, 0xe8, 0x99, 0xe3, 0x0f, 0xe8, 0x98, - 0xe0, 0x0f, 0xe9, 0x99, 0xe3, 0x0f, 0xe9, 0x98, 0xe0, 0x0f, 0xe9, 0x99, - 0xe3, 0x0f, 0xe9, 0x98, 0xe0, 0x0f, 0xea, 0x99, 0xe3, 0x0f, 0xea, 0x99, - 0xe2, 0x0f, 0xea, 0x99, 0xe3, 0x0f, 0xea, 0x99, 0xe2, 0x0f, 0xeb, 0x99, - 0xe3, 0x0f, 0xeb, 0x9a, 0xe5, 0x0f, 0xeb, 0x9a, 0xe5, 0x0f, 0xeb, 0x9a, - 0xe5, 0x0f, 0xec, 0x9a, 0xe5, 0x0f, 0xec, 0x9a, 0xe5, 0x0f, 0xec, 0x9a, - 0xe5, 0x0f, 0xec, 0x9a, 0xe5, 0x0f, 0xec, 0x9a, 0xe5, 0x0f, 0xed, 0x9a, - 0xe5, 0x0f, 0xed, 0x9a, 0xe5, 0x0f, 0xed, 0x9b, 0xe7, 0x0f, 0xed, 0x9a, - 0xe5, 0x0f, 0xee, 0x9b, 0xe7, 0x0f, 0xee, 0x9a, 0xe5, 0x0f, 0xee, 0x9b, - 0xe7, 0x0f, 0xee, 0x9a, 0xe5, 0x0f, 0xef, 0x9b, 0xe7, 0x0f, 0xef, 0x9b, - 0xe7, 0x0f, 0xef, 0x9b, 0xe7, 0x0f, 0xef, 0x9c, 0xea, 0x0f, 0xf0, 0x9c, - 0xea, 0x0f, 0xf0, 0x9c, 0xea, 0x0f, 0xf0, 0x9c, 0xea, 0x0f, 0xf0, 0x9c, - 0xea, 0x0f, 0xf1, 0x9c, 0xea, 0x0f, 0xf1, 0x9c, 0xea, 0x0f, 0xf1, 0x9c, - 0xea, 0x0f, 0xf1, 0x9c, 0xea, 0x0f, 0xf2, 0x9c, 0xea, 0x0f, 0xf2, 0x9d, - 0xec, 0x0f, 0xf2, 0x9c, 0xea, 0x0f, 0xf2, 0x9d, 0xec, 0x0f, 0xf2, 0x9c, - 0xea, 0x0f, 0xf3, 0x9d, 0xec, 0x0f, 0xf3, 0x9c, 0xea, 0x0f, 0xf3, 0x9d, - 0xec, 0x0f, 0xf3, 0x9d, 0xec, 0x0f, 0xf4, 0x9d, 0xec, 0x0f, 0xf4, 0x9d, - 0xee, 0x0f, 0xf4, 0x9d, 0xec, 0x0f, 0xf4, 0x9d, 0xee, 0x0f, 0xf5, 0x9d, - 0xec, 0x0f, 0xf5, 0x9d, 0xee, 0x0f, 0xf5, 0x9d, 0xec, 0x0f, 0xf5, 0x9d, - 0xee, 0x0f, 0xf5, 0x9d, 0xee, 0x0f, 0xf6, 0x9d, 0xee, 0x0f, 0xf6, 0x9e, - 0xf0, 0x0f, 0xf6, 0x9e, 0xf1, 0x0f, 0xf6, 0x9e, 0xf0, 0x0f, 0xf7, 0x9e, - 0xf1, 0x0f, 0xf7, 0x9e, 0xf0, 0x0f, 0xf7, 0x9e, 0xf1, 0x0f, 0xf7, 0x9e, - 0xf0, 0x0f, 0xf8, 0x9e, 0xf1, 0x0f, 0xf8, 0x9e, 0xf0, 0x0f, 0xf8, 0x9e, - 0xf1, 0x0f, 0xf8, 0x9e, 0xf0, 0x0f, 0xf8, 0x9e, 0xf1, 0x0f, 0xf9, 0x9f, - 0xf3, 0x0f, 0xf9, 0x9e, 0xf1, 0x0f, 0xf9, 0x9f, 0xf3, 0x0f, 0xf9, 0x9e, - 0xf1, 0x0f, 0xfa, 0x9f, 0xf3, 0x0f, 0xfa, 0x9e, 0xf1, 0x0f, 0xfa, 0x9f, - 0xf3, 0x0f, 0xfa, 0x9f, 0xf2, 0x0f, 0xfa, 0x9f, 0xf3, 0x0f, 0xfb, 0xa0, - 0xf5, 0x0f, 0xfb, 0x9f, 0xf3, 0x0f, 0xfb, 0xa0, 0xf5, 0x0f, 0xfb, 0x9f, - 0xf3, 0x0f, 0xfc, 0xa0, 0xf5, 0x0f, 0xfc, 0x9f, 0xf3, 0x0f, 0xfc, 0xa0, - 0xf5, 0x0f, 0xfc, 0xa0, 0xf5, 0x0f, 0xfc, 0xa0, 0xf5, 0x0f, 0xfd, 0xa1, - 0xf7, 0x0f, 0xfd, 0xa1, 0xf7, 0x0f, 0xfd, 0xa1, 0xf7, 0x0f, 0xfd, 0xa1, - 0xf7, 0x0f, 0xfe, 0xa1, 0xf7, 0x0f, 0xfe, 0xa1, 0xf7, 0x0f, 0xfe, 0xa1, - 0xf7, 0x0f, 0xfe, 0xa1, 0xf7, 0x0f, 0xfe, 0xa1, 0xf7, 0x0f, 0xff, 0xa1, - 0xf7, 0x0f, 0xff, 0xa1, 0xf9, 0x0f, 0x03, 0x83, 0x9b, 0x0f, 0x0a, 0x83, - 0x9b, 0x0f, 0x0f, 0x83, 0x9b, 0x0f, 0x14, 0x83, 0x9b, 0x0f, 0x17, 0x83, - 0x9b, 0x0f, 0x1b, 0x83, 0x9b, 0x0f, 0x1e, 0x83, 0x9b, 0x0f, 0x20, 0x83, - 0x9c, 0x0f, 0x23, 0x83, 0x9b, 0x0f, 0x25, 0x83, 0x9c, 0x0f, 0x27, 0x83, - 0x9b, 0x0f, 0x29, 0x83, 0x9c, 0x0f, 0x2b, 0x83, 0x9b, 0x0f, 0x2d, 0x83, - 0x9c, 0x0f, 0x2f, 0x83, 0x9b, 0x0f, 0x31, 0x83, 0x9c, 0x0f, 0x32, 0x83, - 0x9b, 0x0f, 0x34, 0x83, 0x9c, 0x0f, 0x35, 0x83, 0x9b, 0x0f, 0x37, 0x83, - 0x9c, 0x0f, 0x38, 0x83, 0x9b, 0x0f, 0x3a, 0x83, 0x9c, 0x0f, 0x3b, 0x83, - 0x9b, 0x0f, 0x3c, 0x83, 0x9c, 0x0f, 0x3e, 0x83, 0x9b, 0x0f, 0x3f, 0x83, - 0x9c, 0x0f, 0x40, 0x83, 0x9b, 0x0f, 0x42, 0x83, 0x9c, 0x0f, 0x43, 0x83, - 0x9b, 0x0f, 0x44, 0x83, 0x9c, 0x0f, 0x45, 0x83, 0x9b, 0x0f, 0x46, 0x83, - 0x9c, 0x0f, 0x47, 0x83, 0x9b, 0x0f, 0x48, 0x83, 0x9c, 0x0f, 0x49, 0x83, - 0x9b, 0x0f, 0x4a, 0x83, 0x9c, 0x0f, 0x4b, 0x83, 0x9b, 0x0f, 0x4c, 0x83, - 0x9c, 0x0f, 0x4d, 0x83, 0x9b, 0x0f, 0x4e, 0x83, 0x9c, 0x0f, 0x4f, 0x83, - 0x9b, 0x0f, 0x50, 0x83, 0x9c, 0x0f, 0x51, 0x83, 0x9b, 0x0f, 0x52, 0x83, - 0x9c, 0x0f, 0x53, 0x83, 0x9b, 0x0f, 0x54, 0x83, 0x9c, 0x0f, 0x55, 0x83, - 0x9b, 0x0f, 0x56, 0x83, 0x9c, 0x0f, 0x57, 0x83, 0x9b, 0x0f, 0x58, 0x83, - 0x9c, 0x0f, 0x58, 0x83, 0x9b, 0x0f, 0x59, 0x83, 0x9c, 0x0f, 0x5a, 0x83, - 0x9b, 0x0f, 0x5b, 0x83, 0x9c, 0x0f, 0x5c, 0x83, 0x9b, 0x0f, 0x5d, 0x83, - 0x9c, 0x0f, 0x5d, 0x83, 0x9b, 0x0f, 0x5e, 0x83, 0x9c, 0x0f, 0x5f, 0x83, - 0x9b, 0x0f, 0x60, 0x83, 0x9c, 0x0f, 0x60, 0x83, 0x9b, 0x0f, 0x61, 0x83, - 0x9c, 0x0f, 0x62, 0x83, 0x9b, 0x0f, 0x63, 0x83, 0x9c, 0x0f, 0x63, 0x83, - 0x9b, 0x0f, 0x64, 0x83, 0x9c, 0x0f, 0x65, 0x83, 0x9b, 0x0f, 0x66, 0x83, - 0x9c, 0x0f, 0x66, 0x83, 0x9b, 0x0f, 0x67, 0x83, 0x9c, 0x0f, 0x68, 0x83, - 0x9b, 0x0f, 0x68, 0x83, 0x9c, 0x0f, 0x69, 0x83, 0x9b, 0x0f, 0x6a, 0x83, - 0x9c, 0x0f, 0x6a, 0x83, 0x9b, 0x0f, 0x6b, 0x83, 0x9c, 0x0f, 0x6c, 0x83, - 0x9b, 0x0f, 0x6c, 0x83, 0x9c, 0x0f, 0x6d, 0x83, 0x9b, 0x0f, 0x6e, 0x83, - 0x9c, 0x0f, 0x6e, 0x83, 0x9b, 0x0f, 0x6f, 0x83, 0x9c, 0x0f, 0x70, 0x83, - 0x9b, 0x0f, 0x70, 0x83, 0x9c, 0x0f, 0x71, 0x83, 0x9b, 0x0f, 0x72, 0x83, - 0x9c, 0x0f, 0x72, 0x83, 0x9b, 0x0f, 0x73, 0x83, 0x9c, 0x0f, 0x73, 0x83, - 0x9b, 0x0f, 0x74, 0x83, 0x9c, 0x0f, 0x75, 0x83, 0x9b, 0x0f, 0x75, 0x83, - 0x9c, 0x0f, 0x76, 0x83, 0x9b, 0x0f, 0x76, 0x83, 0x9c, 0x0f, 0x77, 0x83, - 0x9b, 0x0f, 0x78, 0x83, 0x9c, 0x0f, 0x78, 0x83, 0x9b, 0x0f, 0x79, 0x83, - 0x9c, 0x0f, 0x79, 0x83, 0x9b, 0x0f, 0x7a, 0x83, 0x9c, 0x0f, 0x7a, 0x83, - 0x9b, 0x0f, 0x7b, 0x83, 0x9c, 0x0f, 0x7c, 0x83, 0x9b, 0x0f, 0x7c, 0x83, - 0x9c, 0x0f, 0x7d, 0x83, 0x9b, 0x0f, 0x7d, 0x83, 0x9c, 0x0f, 0x7e, 0x83, - 0x9b, 0x0f, 0x7e, 0x83, 0x9c, 0x0f, 0x7f, 0x83, 0x9b, 0x0f, 0x7f, 0x83, - 0x9c, 0x0f, 0x80, 0x83, 0x9b, 0x0f, 0x81, 0x83, 0x9c, 0x0f, 0x81, 0x83, - 0x9b, 0x0f, 0x82, 0x83, 0x9c, 0x0f, 0x82, 0x83, 0x9b, 0x0f, 0x83, 0x83, - 0x9c, 0x0f, 0x83, 0x83, 0x9b, 0x0f, 0x84, 0x83, 0x9c, 0x0f, 0x84, 0x83, - 0x9b, 0x0f, 0x85, 0x83, 0x9c, 0x0f, 0x85, 0x83, 0x9b, 0x0f, 0x86, 0x83, - 0x9c, 0x0f, 0x86, 0x83, 0x9b, 0x0f, 0x87, 0x83, 0x9c, 0x0f, 0x87, 0x83, - 0x9b, 0x0f, 0x88, 0x83, 0x9c, 0x0f, 0x88, 0x83, 0x9b, 0x0f, 0x89, 0x83, - 0x9c, 0x0f, 0x89, 0x83, 0x9b, 0x0f, 0x8a, 0x83, 0x9c, 0x0f, 0x8a, 0x83, - 0x9b, 0x0f, 0x8b, 0x83, 0x9c, 0x0f, 0x8b, 0x83, 0x9b, 0x0f, 0x8c, 0x83, - 0x9c, 0x0f, 0x8c, 0x83, 0x9b, 0x0f, 0x8d, 0x83, 0x9c, 0x0f, 0x8d, 0x83, - 0x9b, 0x0f, 0x8e, 0x83, 0x9c, 0x0f, 0x8e, 0x83, 0x9b, 0x0f, 0x8e, 0x83, - 0x9c, 0x0f, 0x8f, 0x83, 0x9b, 0x0f, 0x8f, 0x83, 0x9c, 0x0f, 0x90, 0x83, - 0x9b, 0x0f, 0x90, 0x83, 0x9c, 0x0f, 0x91, 0x83, 0x9b, 0x0f, 0x91, 0x83, - 0x9c, 0x0f, 0x92, 0x83, 0x9b, 0x0f, 0x92, 0x83, 0x9c, 0x0f, 0x93, 0x83, - 0x9b, 0x0f, 0x93, 0x83, 0x9c, 0x0f, 0x94, 0x83, 0x9b, 0x0f, 0x94, 0x83, - 0x9c, 0x0f, 0x94, 0x83, 0x9b, 0x0f, 0x95, 0x83, 0x9c, 0x0f, 0x95, 0x83, - 0x9b, 0x0f, 0x96, 0x83, 0x9c, 0x0f, 0x96, 0x83, 0x9b, 0x0f, 0x97, 0x83, - 0x9c, 0x0f, 0x97, 0x83, 0x9b, 0x0f, 0x98, 0x83, 0x9c, 0x0f, 0x98, 0x83, - 0x9b, 0x0f, 0x98, 0x83, 0x9c, 0x0f, 0x99, 0x83, 0x9b, 0x0f, 0x99, 0x83, - 0x9c, 0x0f, 0x9a, 0x83, 0x9b, 0x0f, 0x9a, 0x83, 0x9c, 0x0f, 0x9a, 0x83, - 0x9b, 0x0f, 0x9b, 0x83, 0x9c, 0x0f, 0x9b, 0x83, 0x9b, 0x0f, 0x9c, 0x83, - 0x9c, 0x0f, 0x9c, 0x83, 0x9c, 0x0f, 0x9d, 0x83, 0x9d, 0x0f, 0x9d, 0x83, - 0x9c, 0x0f, 0x9d, 0x83, 0x9d, 0x0f, 0x9e, 0x83, 0x9c, 0x0f, 0x9e, 0x83, - 0x9d, 0x0f, 0x9f, 0x83, 0x9c, 0x0f, 0x9f, 0x83, 0x9d, 0x0f, 0x9f, 0x83, - 0x9c, 0x0f, 0xa0, 0x83, 0x9d, 0x0f, 0xa0, 0x83, 0x9c, 0x0f, 0xa1, 0x83, - 0x9d, 0x0f, 0xa1, 0x83, 0x9c, 0x0f, 0xa1, 0x83, 0x9d, 0x0f, 0xa2, 0x83, - 0x9c, 0x0f, 0xa2, 0x83, 0x9d, 0x0f, 0xa3, 0x83, 0x9c, 0x0f, 0xa3, 0x83, - 0x9d, 0x0f, 0xa3, 0x83, 0x9c, 0x0f, 0xa4, 0x83, 0x9d, 0x0f, 0xa4, 0x83, - 0x9c, 0x0f, 0xa5, 0x83, 0x9d, 0x0f, 0xa5, 0x83, 0x9c, 0x0f, 0xa5, 0x83, - 0x9d, 0x0f, 0xa6, 0x84, 0xa0, 0x0f, 0xa6, 0x84, 0xa1, 0x0f, 0xa6, 0x84, - 0xa0, 0x0f, 0xa7, 0x84, 0xa1, 0x0f, 0xa7, 0x84, 0xa0, 0x0f, 0xa8, 0x84, - 0xa1, 0x0f, 0xa8, 0x84, 0xa0, 0x0f, 0xa8, 0x84, 0xa1, 0x0f, 0xa9, 0x84, - 0xa0, 0x0f, 0xa9, 0x84, 0xa1, 0x0f, 0xaa, 0x85, 0xa4, 0x0f, 0xaa, 0x84, - 0xa1, 0x0f, 0xaa, 0x85, 0xa4, 0x0f, 0xab, 0x84, 0xa1, 0x0f, 0xab, 0x85, - 0xa4, 0x0f, 0xab, 0x85, 0xa4, 0x0f, 0xac, 0x85, 0xa4, 0x0f, 0xac, 0x85, - 0xa4, 0x0f, 0xac, 0x85, 0xa4, 0x0f, 0xad, 0x86, 0xa8, 0x0f, 0xad, 0x85, - 0xa4, 0x0f, 0xae, 0x86, 0xa8, 0x0f, 0xae, 0x85, 0xa4, 0x0f, 0xae, 0x86, - 0xa8, 0x0f, 0xaf, 0x86, 0xa7, 0x0f, 0xaf, 0x86, 0xa8, 0x0f, 0xaf, 0x86, - 0xa7, 0x0f, 0xb0, 0x86, 0xa8, 0x0f, 0xb0, 0x87, 0xab, 0x0f, 0xb0, 0x87, - 0xab, 0x0f, 0xb1, 0x87, 0xab, 0x0f, 0xb1, 0x87, 0xab, 0x0f, 0xb2, 0x87, - 0xab, 0x0f, 0xb2, 0x87, 0xab, 0x0f, 0xb2, 0x87, 0xab, 0x0f, 0xb3, 0x87, - 0xab, 0x0f, 0xb3, 0x87, 0xab, 0x0f, 0xb3, 0x87, 0xab, 0x0f, 0xb4, 0x87, - 0xab, 0x0f, 0xb4, 0x87, 0xab, 0x0f, 0xb4, 0x88, 0xaf, 0x0f, 0xb5, 0x87, - 0xab, 0x0f, 0xb5, 0x88, 0xaf, 0x0f, 0xb5, 0x88, 0xae, 0x0f, 0xb6, 0x88, - 0xaf, 0x0f, 0xb6, 0x88, 0xae, 0x0f, 0xb6, 0x88, 0xaf, 0x0f, 0xb7, 0x88, - 0xae, 0x0f, 0xb7, 0x88, 0xaf, 0x0f, 0xb7, 0x89, 0xb2, 0x0f, 0xb8, 0x89, - 0xb2, 0x0f, 0xb8, 0x89, 0xb2, 0x0f, 0xb8, 0x89, 0xb2, 0x0f, 0xb9, 0x89, - 0xb2, 0x0f, 0xb9, 0x89, 0xb2, 0x0f, 0xb9, 0x89, 0xb2, 0x0f, 0xba, 0x89, - 0xb2, 0x0f, 0xba, 0x89, 0xb2, 0x0f, 0xba, 0x89, 0xb2, 0x0f, 0xbb, 0x8a, - 0xb5, 0x0f, 0xbb, 0x89, 0xb2, 0x0f, 0xbb, 0x8a, 0xb5, 0x0f, 0xbc, 0x89, - 0xb2, 0x0f, 0xbc, 0x8a, 0xb5, 0x0f, 0xbc, 0x8a, 0xb5, 0x0f, 0xbd, 0x8a, - 0xb5, 0x0f, 0xbd, 0x8a, 0xb5, 0x0f, 0xbd, 0x8a, 0xb5, 0x0f, 0xbe, 0x8b, - 0xb8, 0x0f, 0xbe, 0x8a, 0xb5, 0x0f, 0xbe, 0x8b, 0xb8, 0x0f, 0xbf, 0x8a, - 0xb5, 0x0f, 0xbf, 0x8b, 0xb8, 0x0f, 0xbf, 0x8b, 0xb8, 0x0f, 0xc0, 0x8b, - 0xb8, 0x0f, 0xc0, 0x8b, 0xb8, 0x0f, 0xc0, 0x8b, 0xb8, 0x0f, 0xc1, 0x8c, - 0xbb, 0x0f, 0xc1, 0x8c, 0xbc, 0x0f, 0xc1, 0x8c, 0xbb, 0x0f, 0xc1, 0x8c, - 0xbc, 0x0f, 0xc2, 0x8c, 0xbb, 0x0f, 0xc2, 0x8c, 0xbc, 0x0f, 0xc2, 0x8c, - 0xbb, 0x0f, 0xc3, 0x8c, 0xbc, 0x0f, 0xc3, 0x8c, 0xbb, 0x0f, 0xc3, 0x8c, - 0xbc, 0x0f, 0xc4, 0x8d, 0xbf, 0x0f, 0xc4, 0x8c, 0xbc, 0x0f, 0xc4, 0x8d, - 0xbf, 0x0f, 0xc5, 0x8c, 0xbc, 0x0f, 0xc5, 0x8d, 0xbf, 0x0f, 0xc5, 0x8c, - 0xbc, 0x0f, 0xc6, 0x8d, 0xbf, 0x0f, 0xc6, 0x8d, 0xbe, 0x0f, 0xc6, 0x8d, - 0xbf, 0x0f, 0xc6, 0x8d, 0xbe, 0x0f, 0xc7, 0x8d, 0xbf, 0x0f, 0xc7, 0x8e, - 0xc1, 0x0f, 0xc7, 0x8d, 0xbf, 0x0f, 0xc8, 0x8e, 0xc1, 0x0f, 0xc8, 0x8d, - 0xbf, 0x0f, 0xc8, 0x8e, 0xc1, 0x0f, 0xc9, 0x8e, 0xc1, 0x0f, 0xc9, 0x8e, - 0xc1, 0x0f, 0xc9, 0x8e, 0xc1, 0x0f, 0xc9, 0x8e, 0xc1, 0x0f, 0xca, 0x8f, - 0xc4, 0x0f, 0xca, 0x8f, 0xc5, 0x0f, 0xca, 0x8f, 0xc4, 0x0f, 0xcb, 0x8f, - 0xc5, 0x0f, 0xcb, 0x8f, 0xc4, 0x0f, 0xcb, 0x8f, 0xc5, 0x0f, 0xcc, 0x8f, - 0xc4, 0x0f, 0xcc, 0x8f, 0xc5, 0x0f, 0xcc, 0x8f, 0xc4, 0x0f, 0xcc, 0x8f, - 0xc5, 0x0f, 0xcd, 0x90, 0xc7, 0x0f, 0xcd, 0x8f, 0xc5, 0x0f, 0xcd, 0x90, - 0xc7, 0x0f, 0xce, 0x8f, 0xc5, 0x0f, 0xce, 0x90, 0xc7, 0x0f, 0xce, 0x90, - 0xc7, 0x0f, 0xce, 0x90, 0xc7, 0x0f, 0xcf, 0x90, 0xc7, 0x0f, 0xcf, 0x90, - 0xc7, 0x0f, 0xcf, 0x91, 0xca, 0x0f, 0xd0, 0x90, 0xc7, 0x0f, 0xd0, 0x91, - 0xca, 0x0f, 0xd0, 0x90, 0xc7, 0x0f, 0xd0, 0x91, 0xca, 0x0f, 0xd1, 0x90, - 0xc7, 0x0f, 0xd1, 0x91, 0xca, 0x0f, 0xd1, 0x91, 0xca, 0x0f, 0xd2, 0x91, - 0xca, 0x0f, 0xd2, 0x91, 0xca, 0x0f, 0xd2, 0x91, 0xca, 0x0f, 0xd2, 0x92, - 0xcd, 0x0f, 0xd3, 0x92, 0xcd, 0x0f, 0xd3, 0x92, 0xcd, 0x0f, 0xd3, 0x92, - 0xcd, 0x0f, 0xd4, 0x92, 0xcd, 0x0f, 0xd4, 0x92, 0xcd, 0x0f, 0xd4, 0x92, - 0xcd, 0x0f, 0xd4, 0x92, 0xcd, 0x0f, 0xd5, 0x92, 0xcd, 0x0f, 0xd5, 0x92, - 0xcd, 0x0f, 0xd5, 0x93, 0xd0, 0x0f, 0xd6, 0x92, 0xcd, 0x0f, 0xd6, 0x93, - 0xd0, 0x0f, 0xd6, 0x92, 0xcd, 0x0f, 0xd6, 0x93, 0xd0, 0x0f, 0xd7, 0x93, - 0xcf, 0x0f, 0xd7, 0x93, 0xd0, 0x0f, 0xd7, 0x93, 0xcf, 0x0f, 0xd7, 0x93, - 0xd0, 0x0f, 0xd8, 0x94, 0xd2, 0x0f, 0xd8, 0x94, 0xd2, 0x0f, 0xd8, 0x94, - 0xd2, 0x0f, 0xd9, 0x94, 0xd2, 0x0f, 0xd9, 0x94, 0xd2, 0x0f, 0xd9, 0x94, - 0xd2, 0x0f, 0xd9, 0x94, 0xd2, 0x0f, 0xda, 0x94, 0xd2, 0x0f, 0xda, 0x94, - 0xd2, 0x0f, 0xda, 0x94, 0xd2, 0x0f, 0xda, 0x94, 0xd5, 0x0f, 0xdb, 0x94, - 0xd2, 0x0f, 0xdb, 0x94, 0xd5, 0x0f, 0xdb, 0x94, 0xd2, 0x0f, 0xdb, 0x94, - 0xd5, 0x0f, 0xdc, 0x94, 0xd2, 0x0f, 0xdc, 0x94, 0xd5, 0x0f, 0xdc, 0x94, - 0xd5, 0x0f, 0xdd, 0x94, 0xd5, 0x0f, 0xdd, 0x95, 0xd7, 0x0f, 0xdd, 0x94, - 0xd5, 0x0f, 0xdd, 0x95, 0xd7, 0x0f, 0xde, 0x94, 0xd5, 0x0f, 0xde, 0x95, - 0xd7, 0x0f, 0xde, 0x94, 0xd5, 0x0f, 0xde, 0x95, 0xd7, 0x0f, 0xdf, 0x95, - 0xd7, 0x0f, 0xdf, 0x95, 0xd7, 0x0f, 0xdf, 0x96, 0xda, 0x0f, 0xdf, 0x96, - 0xda, 0x0f, 0xe0, 0x96, 0xda, 0x0f, 0xe0, 0x96, 0xda, 0x0f, 0xe0, 0x96, - 0xda, 0x0f, 0xe1, 0x96, 0xda, 0x0f, 0xe1, 0x96, 0xda, 0x0f, 0xe1, 0x96, - 0xda, 0x0f, 0xe1, 0x96, 0xda, 0x0f, 0xe2, 0x96, 0xda, 0x0f, 0xe2, 0x96, - 0xda, 0x0f, 0xe2, 0x96, 0xda, 0x0f, 0xe2, 0x97, 0xdd, 0x0f, 0xe3, 0x96, - 0xda, 0x0f, 0xe3, 0x97, 0xdd, 0x0f, 0xe3, 0x96, 0xda, 0x0f, 0xe3, 0x97, - 0xdd, 0x0f, 0xe4, 0x97, 0xdc, 0x0f, 0xe4, 0x97, 0xdd, 0x0f, 0xe4, 0x97, - 0xdc, 0x0f, 0xe4, 0x97, 0xdd, 0x0f, 0xe5, 0x98, 0xdf, 0x0f, 0xe5, 0x97, - 0xdd, 0x0f, 0xe5, 0x98, 0xdf, 0x0f, 0xe5, 0x97, 0xdd, 0x0f, 0xe6, 0x98, - 0xdf, 0x0f, 0xe6, 0x97, 0xdd, 0x0f, 0xe6, 0x98, 0xdf, 0x0f, 0xe6, 0x98, - 0xdf, 0x0f, 0xe7, 0x98, 0xdf, 0x0f, 0xe7, 0x99, 0xe1, 0x0f, 0xe7, 0x99, - 0xe2, 0x0f, 0xe7, 0x99, 0xe1, 0x0f, 0xe8, 0x99, 0xe2, 0x0f, 0xe8, 0x99, - 0xe1, 0x0f, 0xe8, 0x99, 0xe2, 0x0f, 0xe8, 0x99, 0xe1, 0x0f, 0xe9, 0x99, - 0xe2, 0x0f, 0xe9, 0x99, 0xe1, 0x0f, 0xe9, 0x99, 0xe2, 0x0f, 0xe9, 0x9a, - 0xe4, 0x0f, 0xea, 0x99, 0xe2, 0x0f, 0xea, 0x9a, 0xe4, 0x0f, 0xea, 0x99, - 0xe2, 0x0f, 0xea, 0x9a, 0xe4, 0x0f, 0xeb, 0x99, 0xe2, 0x0f, 0xeb, 0x9a, - 0xe4, 0x0f, 0xeb, 0x9a, 0xe4, 0x0f, 0xeb, 0x9a, 0xe4, 0x0f, 0xec, 0x9a, - 0xe4, 0x0f, 0xec, 0x9a, 0xe4, 0x0f, 0xec, 0x9a, 0xe6, 0x0f, 0xec, 0x9a, - 0xe4, 0x0f, 0xec, 0x9a, 0xe6, 0x0f, 0xed, 0x9a, 0xe4, 0x0f, 0xed, 0x9a, - 0xe6, 0x0f, 0xed, 0x9a, 0xe6, 0x0f, 0xed, 0x9a, 0xe6, 0x0f, 0xee, 0x9a, - 0xe6, 0x0f, 0xee, 0x9a, 0xe6, 0x0f, 0xee, 0x9b, 0xe8, 0x0f, 0xee, 0x9b, - 0xe9, 0x0f, 0xef, 0x9b, 0xe8, 0x0f, 0xef, 0x9b, 0xe9, 0x0f, 0xef, 0x9b, - 0xe8, 0x0f, 0xef, 0x9b, 0xe9, 0x0f, 0xf0, 0x9b, 0xe8, 0x0f, 0xf0, 0x9b, - 0xe9, 0x0f, 0xf0, 0x9b, 0xe8, 0x0f, 0xf0, 0x9b, 0xe9, 0x0f, 0xf1, 0x9c, - 0xeb, 0x0f, 0xf1, 0x9b, 0xe9, 0x0f, 0xf1, 0x9c, 0xeb, 0x0f, 0xf1, 0x9b, - 0xe9, 0x0f, 0xf2, 0x9c, 0xeb, 0x0f, 0xf2, 0x9b, 0xe9, 0x0f, 0xf2, 0x9c, - 0xeb, 0x0f, 0xf2, 0x9c, 0xeb, 0x0f, 0xf2, 0x9c, 0xeb, 0x0f, 0xf3, 0x9d, - 0xed, 0x0f, 0xf3, 0x9d, 0xed, 0x0f, 0xf3, 0x9d, 0xed, 0x0f, 0xf3, 0x9d, - 0xed, 0x0f, 0xf4, 0x9d, 0xed, 0x0f, 0xf4, 0x9d, 0xed, 0x0f, 0xf4, 0x9d, - 0xed, 0x0f, 0xf4, 0x9d, 0xed, 0x0f, 0xf5, 0x9d, 0xed, 0x0f, 0xf5, 0x9d, - 0xed, 0x0f, 0xf5, 0x9e, 0xef, 0x0f, 0xf5, 0x9d, 0xed, 0x0f, 0xf5, 0x9e, - 0xef, 0x0f, 0xf6, 0x9d, 0xed, 0x0f, 0xf6, 0x9e, 0xef, 0x0f, 0xf6, 0x9d, - 0xed, 0x0f, 0xf6, 0x9e, 0xef, 0x0f, 0xf7, 0x9e, 0xef, 0x0f, 0xf7, 0x9e, - 0xef, 0x0f, 0xf7, 0x9f, 0xf2, 0x0f, 0xf7, 0x9e, 0xef, 0x0f, 0xf8, 0x9f, - 0xf2, 0x0f, 0xf8, 0x9e, 0xef, 0x0f, 0xf8, 0x9f, 0xf2, 0x0f, 0xf8, 0x9e, - 0xef, 0x0f, 0xf8, 0x9f, 0xf2, 0x0f, 0xf9, 0x9e, 0xef, 0x0f, 0xf9, 0x9f, - 0xf2, 0x0f, 0xf9, 0x9f, 0xf1, 0x0f, 0xf9, 0x9f, 0xf2, 0x0f, 0xfa, 0x9f, - 0xf4, 0x0f, 0xfa, 0x9f, 0xf4, 0x0f, 0xfa, 0x9f, 0xf4, 0x0f, 0xfa, 0x9f, - 0xf4, 0x0f, 0xfa, 0x9f, 0xf4, 0x0f, 0xfb, 0x9f, 0xf4, 0x0f, 0xfb, 0x9f, - 0xf4, 0x0f, 0xfb, 0x9f, 0xf4, 0x0f, 0xfb, 0x9f, 0xf4, 0x0f, 0xfc, 0x9f, - 0xf4, 0x0f, 0xfc, 0xa0, 0xf6, 0x0f, 0xfc, 0x9f, 0xf4, 0x0f, 0xfc, 0xa0, - 0xf6, 0x0f, 0xfc, 0x9f, 0xf4, 0x0f, 0xfd, 0xa0, 0xf6, 0x0f, 0xfd, 0x9f, - 0xf4, 0x0f, 0xfd, 0xa0, 0xf6, 0x0f, 0xfd, 0xa0, 0xf6, 0x0f, 0xfe, 0xa0, - 0xf6, 0x0f, 0xfe, 0xa0, 0xf6, 0x0f, 0xfe, 0xa0, 0xf6, 0x0f, 0xfe, 0xa0, - 0xf6, 0x0f, 0xfe, 0xa0, 0xf6, 0x0f, 0xff, 0xa1, 0xf8, 0x0f, 0xff, 0xa0, - 0xf6, 0x0f, 0x03, 0x84, 0x9b, 0x10, 0x0a, 0x84, 0x9b, 0x10, 0x0f, 0x84, - 0x9b, 0x10, 0x14, 0x84, 0x9b, 0x10, 0x17, 0x84, 0x9b, 0x10, 0x1b, 0x84, - 0x9b, 0x10, 0x1e, 0x84, 0x9b, 0x10, 0x20, 0x84, 0x9c, 0x10, 0x23, 0x84, - 0x9b, 0x10, 0x25, 0x84, 0x9c, 0x10, 0x27, 0x84, 0x9b, 0x10, 0x29, 0x84, - 0x9c, 0x10, 0x2b, 0x84, 0x9b, 0x10, 0x2d, 0x84, 0x9c, 0x10, 0x2f, 0x84, - 0x9b, 0x10, 0x31, 0x84, 0x9c, 0x10, 0x32, 0x84, 0x9b, 0x10, 0x34, 0x84, - 0x9c, 0x10, 0x35, 0x84, 0x9b, 0x10, 0x37, 0x84, 0x9c, 0x10, 0x38, 0x84, - 0x9b, 0x10, 0x3a, 0x84, 0x9c, 0x10, 0x3b, 0x84, 0x9b, 0x10, 0x3c, 0x84, - 0x9c, 0x10, 0x3e, 0x84, 0x9b, 0x10, 0x3f, 0x84, 0x9c, 0x10, 0x40, 0x84, - 0x9b, 0x10, 0x42, 0x84, 0x9c, 0x10, 0x43, 0x84, 0x9b, 0x10, 0x44, 0x84, - 0x9c, 0x10, 0x45, 0x84, 0x9b, 0x10, 0x46, 0x84, 0x9c, 0x10, 0x47, 0x84, - 0x9b, 0x10, 0x48, 0x84, 0x9c, 0x10, 0x49, 0x84, 0x9b, 0x10, 0x4a, 0x84, - 0x9c, 0x10, 0x4b, 0x84, 0x9b, 0x10, 0x4c, 0x84, 0x9c, 0x10, 0x4d, 0x84, - 0x9b, 0x10, 0x4e, 0x84, 0x9c, 0x10, 0x4f, 0x84, 0x9b, 0x10, 0x50, 0x84, - 0x9c, 0x10, 0x51, 0x84, 0x9b, 0x10, 0x52, 0x84, 0x9c, 0x10, 0x53, 0x84, - 0x9b, 0x10, 0x54, 0x84, 0x9c, 0x10, 0x55, 0x84, 0x9b, 0x10, 0x56, 0x84, - 0x9c, 0x10, 0x57, 0x84, 0x9b, 0x10, 0x58, 0x84, 0x9c, 0x10, 0x58, 0x84, - 0x9b, 0x10, 0x59, 0x84, 0x9c, 0x10, 0x5a, 0x84, 0x9b, 0x10, 0x5b, 0x84, - 0x9c, 0x10, 0x5c, 0x84, 0x9b, 0x10, 0x5d, 0x84, 0x9c, 0x10, 0x5d, 0x84, - 0x9b, 0x10, 0x5e, 0x84, 0x9c, 0x10, 0x5f, 0x84, 0x9b, 0x10, 0x60, 0x84, - 0x9c, 0x10, 0x60, 0x84, 0x9b, 0x10, 0x61, 0x84, 0x9c, 0x10, 0x62, 0x84, - 0x9b, 0x10, 0x63, 0x84, 0x9c, 0x10, 0x63, 0x84, 0x9b, 0x10, 0x64, 0x84, - 0x9c, 0x10, 0x65, 0x84, 0x9b, 0x10, 0x66, 0x84, 0x9c, 0x10, 0x66, 0x84, - 0x9b, 0x10, 0x67, 0x84, 0x9c, 0x10, 0x68, 0x84, 0x9b, 0x10, 0x68, 0x84, - 0x9c, 0x10, 0x69, 0x84, 0x9b, 0x10, 0x6a, 0x84, 0x9c, 0x10, 0x6a, 0x84, - 0x9b, 0x10, 0x6b, 0x84, 0x9c, 0x10, 0x6c, 0x84, 0x9b, 0x10, 0x6c, 0x84, - 0x9c, 0x10, 0x6d, 0x84, 0x9b, 0x10, 0x6e, 0x84, 0x9c, 0x10, 0x6e, 0x84, - 0x9b, 0x10, 0x6f, 0x84, 0x9c, 0x10, 0x70, 0x84, 0x9b, 0x10, 0x70, 0x84, - 0x9c, 0x10, 0x71, 0x84, 0x9b, 0x10, 0x72, 0x84, 0x9c, 0x10, 0x72, 0x84, - 0x9b, 0x10, 0x73, 0x84, 0x9c, 0x10, 0x73, 0x84, 0x9b, 0x10, 0x74, 0x84, - 0x9c, 0x10, 0x75, 0x84, 0x9b, 0x10, 0x75, 0x84, 0x9c, 0x10, 0x76, 0x84, - 0x9b, 0x10, 0x76, 0x84, 0x9c, 0x10, 0x77, 0x84, 0x9b, 0x10, 0x78, 0x84, - 0x9c, 0x10, 0x78, 0x84, 0x9b, 0x10, 0x79, 0x84, 0x9c, 0x10, 0x79, 0x84, - 0x9b, 0x10, 0x7a, 0x84, 0x9c, 0x10, 0x7a, 0x84, 0x9b, 0x10, 0x7b, 0x84, - 0x9c, 0x10, 0x7c, 0x84, 0x9b, 0x10, 0x7c, 0x84, 0x9c, 0x10, 0x7d, 0x84, - 0x9b, 0x10, 0x7d, 0x84, 0x9c, 0x10, 0x7e, 0x84, 0x9b, 0x10, 0x7e, 0x84, - 0x9c, 0x10, 0x7f, 0x84, 0x9b, 0x10, 0x7f, 0x84, 0x9c, 0x10, 0x80, 0x84, - 0x9b, 0x10, 0x81, 0x84, 0x9c, 0x10, 0x81, 0x84, 0x9b, 0x10, 0x82, 0x84, - 0x9c, 0x10, 0x82, 0x84, 0x9b, 0x10, 0x83, 0x84, 0x9c, 0x10, 0x83, 0x84, - 0x9b, 0x10, 0x84, 0x84, 0x9c, 0x10, 0x84, 0x84, 0x9b, 0x10, 0x85, 0x84, - 0x9c, 0x10, 0x85, 0x84, 0x9b, 0x10, 0x86, 0x84, 0x9c, 0x10, 0x86, 0x84, - 0x9b, 0x10, 0x87, 0x84, 0x9c, 0x10, 0x87, 0x84, 0x9b, 0x10, 0x88, 0x84, - 0x9c, 0x10, 0x88, 0x84, 0x9b, 0x10, 0x89, 0x84, 0x9c, 0x10, 0x89, 0x84, - 0x9b, 0x10, 0x8a, 0x84, 0x9c, 0x10, 0x8a, 0x84, 0x9b, 0x10, 0x8b, 0x84, - 0x9c, 0x10, 0x8b, 0x84, 0x9b, 0x10, 0x8c, 0x84, 0x9c, 0x10, 0x8c, 0x84, - 0x9b, 0x10, 0x8d, 0x84, 0x9c, 0x10, 0x8d, 0x84, 0x9b, 0x10, 0x8e, 0x84, - 0x9c, 0x10, 0x8e, 0x84, 0x9b, 0x10, 0x8e, 0x84, 0x9c, 0x10, 0x8f, 0x84, - 0x9b, 0x10, 0x8f, 0x84, 0x9c, 0x10, 0x90, 0x84, 0x9b, 0x10, 0x90, 0x84, - 0x9c, 0x10, 0x91, 0x84, 0x9b, 0x10, 0x91, 0x84, 0x9c, 0x10, 0x92, 0x84, - 0x9b, 0x10, 0x92, 0x84, 0x9c, 0x10, 0x93, 0x84, 0x9b, 0x10, 0x93, 0x84, - 0x9c, 0x10, 0x94, 0x84, 0x9b, 0x10, 0x94, 0x84, 0x9c, 0x10, 0x94, 0x84, - 0x9b, 0x10, 0x95, 0x84, 0x9c, 0x10, 0x95, 0x84, 0x9b, 0x10, 0x96, 0x84, - 0x9c, 0x10, 0x96, 0x84, 0x9b, 0x10, 0x97, 0x84, 0x9c, 0x10, 0x97, 0x84, - 0x9b, 0x10, 0x98, 0x84, 0x9c, 0x10, 0x98, 0x84, 0x9b, 0x10, 0x98, 0x84, - 0x9c, 0x10, 0x99, 0x84, 0x9b, 0x10, 0x99, 0x84, 0x9c, 0x10, 0x9a, 0x84, - 0x9b, 0x10, 0x9a, 0x84, 0x9c, 0x10, 0x9a, 0x84, 0x9b, 0x10, 0x9b, 0x84, - 0x9c, 0x10, 0x9b, 0x84, 0x9b, 0x10, 0x9c, 0x84, 0x9c, 0x10, 0x9c, 0x84, - 0x9c, 0x10, 0x9d, 0x84, 0x9d, 0x10, 0x9d, 0x84, 0x9d, 0x10, 0x9d, 0x84, - 0x9d, 0x10, 0x9e, 0x84, 0x9e, 0x10, 0x9e, 0x84, 0x9e, 0x10, 0x9f, 0x84, - 0x9f, 0x10, 0x9f, 0x84, 0x9e, 0x10, 0x9f, 0x84, 0x9f, 0x10, 0xa0, 0x84, - 0x9e, 0x10, 0xa0, 0x84, 0x9f, 0x10, 0xa1, 0x84, 0x9e, 0x10, 0xa1, 0x84, - 0x9f, 0x10, 0xa1, 0x84, 0x9e, 0x10, 0xa2, 0x84, 0x9f, 0x10, 0xa2, 0x84, - 0x9e, 0x10, 0xa3, 0x84, 0x9f, 0x10, 0xa3, 0x84, 0x9e, 0x10, 0xa3, 0x84, - 0x9f, 0x10, 0xa4, 0x84, 0x9e, 0x10, 0xa4, 0x84, 0x9f, 0x10, 0xa5, 0x84, - 0x9e, 0x10, 0xa5, 0x84, 0x9f, 0x10, 0xa5, 0x84, 0x9e, 0x10, 0xa6, 0x84, - 0x9f, 0x10, 0xa6, 0x84, 0x9e, 0x10, 0xa6, 0x84, 0x9f, 0x10, 0xa7, 0x84, - 0x9e, 0x10, 0xa7, 0x84, 0x9f, 0x10, 0xa8, 0x85, 0xa2, 0x10, 0xa8, 0x84, - 0x9f, 0x10, 0xa8, 0x85, 0xa2, 0x10, 0xa9, 0x85, 0xa2, 0x10, 0xa9, 0x85, - 0xa2, 0x10, 0xaa, 0x85, 0xa2, 0x10, 0xaa, 0x85, 0xa2, 0x10, 0xaa, 0x85, - 0xa2, 0x10, 0xab, 0x85, 0xa2, 0x10, 0xab, 0x86, 0xa6, 0x10, 0xab, 0x86, - 0xa6, 0x10, 0xac, 0x86, 0xa6, 0x10, 0xac, 0x86, 0xa6, 0x10, 0xac, 0x86, - 0xa6, 0x10, 0xad, 0x86, 0xa6, 0x10, 0xad, 0x86, 0xa6, 0x10, 0xae, 0x86, - 0xa6, 0x10, 0xae, 0x86, 0xa6, 0x10, 0xae, 0x86, 0xa6, 0x10, 0xaf, 0x87, - 0xaa, 0x10, 0xaf, 0x86, 0xa6, 0x10, 0xaf, 0x87, 0xaa, 0x10, 0xb0, 0x86, - 0xa6, 0x10, 0xb0, 0x87, 0xaa, 0x10, 0xb0, 0x87, 0xa9, 0x10, 0xb1, 0x87, - 0xaa, 0x10, 0xb1, 0x87, 0xa9, 0x10, 0xb2, 0x87, 0xaa, 0x10, 0xb2, 0x88, - 0xad, 0x10, 0xb2, 0x88, 0xad, 0x10, 0xb3, 0x88, 0xad, 0x10, 0xb3, 0x88, - 0xad, 0x10, 0xb3, 0x88, 0xad, 0x10, 0xb4, 0x88, 0xad, 0x10, 0xb4, 0x88, - 0xad, 0x10, 0xb4, 0x88, 0xad, 0x10, 0xb5, 0x88, 0xad, 0x10, 0xb5, 0x88, - 0xad, 0x10, 0xb5, 0x88, 0xad, 0x10, 0xb6, 0x88, 0xad, 0x10, 0xb6, 0x89, - 0xb0, 0x10, 0xb6, 0x88, 0xad, 0x10, 0xb7, 0x89, 0xb0, 0x10, 0xb7, 0x89, - 0xb2, 0x10, 0xb7, 0x89, 0xb0, 0x10, 0xb8, 0x89, 0xb2, 0x10, 0xb8, 0x89, - 0xb0, 0x10, 0xb8, 0x89, 0xb2, 0x10, 0xb9, 0x89, 0xb0, 0x10, 0xb9, 0x89, - 0xb2, 0x10, 0xb9, 0x89, 0xb0, 0x10, 0xba, 0x89, 0xb2, 0x10, 0xba, 0x89, - 0xb2, 0x10, 0xba, 0x89, 0xb2, 0x10, 0xbb, 0x89, 0xb2, 0x10, 0xbb, 0x89, - 0xb2, 0x10, 0xbb, 0x8a, 0xb3, 0x10, 0xbc, 0x8a, 0xb4, 0x10, 0xbc, 0x8b, - 0xb7, 0x10, 0xbc, 0x8b, 0xb7, 0x10, 0xbd, 0x8b, 0xb7, 0x10, 0xbd, 0x8b, - 0xb7, 0x10, 0xbd, 0x8b, 0xb7, 0x10, 0xbe, 0x8b, 0xb7, 0x10, 0xbe, 0x8b, - 0xb7, 0x10, 0xbe, 0x8b, 0xb7, 0x10, 0xbf, 0x8b, 0xb7, 0x10, 0xbf, 0x8b, - 0xb7, 0x10, 0xbf, 0x8c, 0xba, 0x10, 0xc0, 0x8b, 0xb7, 0x10, 0xc0, 0x8c, - 0xba, 0x10, 0xc0, 0x8b, 0xb7, 0x10, 0xc1, 0x8c, 0xba, 0x10, 0xc1, 0x8c, - 0xba, 0x10, 0xc1, 0x8c, 0xba, 0x10, 0xc1, 0x8c, 0xba, 0x10, 0xc2, 0x8c, - 0xba, 0x10, 0xc2, 0x8d, 0xbd, 0x10, 0xc2, 0x8c, 0xba, 0x10, 0xc3, 0x8d, - 0xbd, 0x10, 0xc3, 0x8c, 0xba, 0x10, 0xc3, 0x8d, 0xbd, 0x10, 0xc4, 0x8d, - 0xbd, 0x10, 0xc4, 0x8d, 0xbd, 0x10, 0xc4, 0x8d, 0xbd, 0x10, 0xc5, 0x8d, - 0xbd, 0x10, 0xc5, 0x8e, 0xc0, 0x10, 0xc5, 0x8e, 0xc0, 0x10, 0xc6, 0x8e, - 0xc0, 0x10, 0xc6, 0x8e, 0xc0, 0x10, 0xc6, 0x8e, 0xc0, 0x10, 0xc6, 0x8e, - 0xc0, 0x10, 0xc7, 0x8e, 0xc0, 0x10, 0xc7, 0x8e, 0xc0, 0x10, 0xc7, 0x8e, - 0xc0, 0x10, 0xc8, 0x8e, 0xc0, 0x10, 0xc8, 0x8e, 0xc0, 0x10, 0xc8, 0x8e, - 0xc0, 0x10, 0xc9, 0x8e, 0xc3, 0x10, 0xc9, 0x8e, 0xc0, 0x10, 0xc9, 0x8e, - 0xc3, 0x10, 0xc9, 0x8e, 0xc0, 0x10, 0xca, 0x8e, 0xc3, 0x10, 0xca, 0x8e, - 0xc3, 0x10, 0xca, 0x8e, 0xc3, 0x10, 0xcb, 0x8e, 0xc3, 0x10, 0xcb, 0x8e, - 0xc3, 0x10, 0xcb, 0x8f, 0xc6, 0x10, 0xcc, 0x8e, 0xc3, 0x10, 0xcc, 0x8f, - 0xc6, 0x10, 0xcc, 0x8e, 0xc3, 0x10, 0xcc, 0x8f, 0xc6, 0x10, 0xcd, 0x8f, - 0xc6, 0x10, 0xcd, 0x8f, 0xc6, 0x10, 0xcd, 0x8f, 0xc6, 0x10, 0xce, 0x8f, - 0xc6, 0x10, 0xce, 0x90, 0xc9, 0x10, 0xce, 0x90, 0xc9, 0x10, 0xce, 0x90, - 0xc9, 0x10, 0xcf, 0x90, 0xc9, 0x10, 0xcf, 0x90, 0xc9, 0x10, 0xcf, 0x90, - 0xc9, 0x10, 0xd0, 0x90, 0xc9, 0x10, 0xd0, 0x90, 0xc9, 0x10, 0xd0, 0x90, - 0xc9, 0x10, 0xd0, 0x90, 0xc9, 0x10, 0xd1, 0x91, 0xcc, 0x10, 0xd1, 0x90, - 0xc9, 0x10, 0xd1, 0x91, 0xcc, 0x10, 0xd2, 0x90, 0xc9, 0x10, 0xd2, 0x91, - 0xcc, 0x10, 0xd2, 0x90, 0xc9, 0x10, 0xd2, 0x91, 0xcc, 0x10, 0xd3, 0x91, - 0xcb, 0x10, 0xd3, 0x91, 0xcc, 0x10, 0xd3, 0x91, 0xcb, 0x10, 0xd4, 0x91, - 0xcc, 0x10, 0xd4, 0x92, 0xce, 0x10, 0xd4, 0x92, 0xce, 0x10, 0xd4, 0x92, - 0xce, 0x10, 0xd5, 0x92, 0xce, 0x10, 0xd5, 0x92, 0xce, 0x10, 0xd5, 0x92, - 0xce, 0x10, 0xd6, 0x92, 0xce, 0x10, 0xd6, 0x92, 0xce, 0x10, 0xd6, 0x92, - 0xce, 0x10, 0xd6, 0x92, 0xce, 0x10, 0xd7, 0x93, 0xd1, 0x10, 0xd7, 0x92, - 0xce, 0x10, 0xd7, 0x93, 0xd1, 0x10, 0xd7, 0x92, 0xce, 0x10, 0xd8, 0x93, - 0xd1, 0x10, 0xd8, 0x93, 0xd1, 0x10, 0xd8, 0x93, 0xd1, 0x10, 0xd9, 0x93, - 0xd1, 0x10, 0xd9, 0x93, 0xd1, 0x10, 0xd9, 0x94, 0xd4, 0x10, 0xd9, 0x93, - 0xd1, 0x10, 0xda, 0x94, 0xd4, 0x10, 0xda, 0x93, 0xd1, 0x10, 0xda, 0x94, - 0xd4, 0x10, 0xda, 0x94, 0xd3, 0x10, 0xdb, 0x94, 0xd4, 0x10, 0xdb, 0x94, - 0xd3, 0x10, 0xdb, 0x94, 0xd4, 0x10, 0xdb, 0x95, 0xd6, 0x10, 0xdc, 0x95, - 0xd6, 0x10, 0xdc, 0x95, 0xd6, 0x10, 0xdc, 0x95, 0xd6, 0x10, 0xdd, 0x95, - 0xd6, 0x10, 0xdd, 0x95, 0xd6, 0x10, 0xdd, 0x95, 0xd6, 0x10, 0xdd, 0x95, - 0xd6, 0x10, 0xde, 0x95, 0xd6, 0x10, 0xde, 0x95, 0xd6, 0x10, 0xde, 0x96, - 0xd9, 0x10, 0xde, 0x95, 0xd6, 0x10, 0xdf, 0x96, 0xd9, 0x10, 0xdf, 0x95, - 0xd6, 0x10, 0xdf, 0x96, 0xd9, 0x10, 0xdf, 0x95, 0xd6, 0x10, 0xe0, 0x96, - 0xd9, 0x10, 0xe0, 0x96, 0xd9, 0x10, 0xe0, 0x96, 0xd9, 0x10, 0xe1, 0x97, - 0xdb, 0x10, 0xe1, 0x96, 0xd9, 0x10, 0xe1, 0x97, 0xdb, 0x10, 0xe1, 0x96, - 0xd9, 0x10, 0xe2, 0x97, 0xdb, 0x10, 0xe2, 0x96, 0xd9, 0x10, 0xe2, 0x97, - 0xdb, 0x10, 0xe2, 0x97, 0xdb, 0x10, 0xe3, 0x97, 0xdb, 0x10, 0xe3, 0x97, - 0xdb, 0x10, 0xe3, 0x97, 0xdb, 0x10, 0xe3, 0x98, 0xde, 0x10, 0xe4, 0x98, - 0xde, 0x10, 0xe4, 0x98, 0xde, 0x10, 0xe4, 0x98, 0xde, 0x10, 0xe4, 0x98, - 0xde, 0x10, 0xe5, 0x98, 0xde, 0x10, 0xe5, 0x98, 0xde, 0x10, 0xe5, 0x98, - 0xde, 0x10, 0xe5, 0x98, 0xde, 0x10, 0xe6, 0x98, 0xde, 0x10, 0xe6, 0x98, - 0xe0, 0x10, 0xe6, 0x98, 0xde, 0x10, 0xe6, 0x98, 0xe0, 0x10, 0xe7, 0x98, - 0xde, 0x10, 0xe7, 0x98, 0xe0, 0x10, 0xe7, 0x98, 0xde, 0x10, 0xe7, 0x98, - 0xe0, 0x10, 0xe8, 0x98, 0xe0, 0x10, 0xe8, 0x98, 0xe0, 0x10, 0xe8, 0x99, - 0xe3, 0x10, 0xe8, 0x98, 0xe0, 0x10, 0xe9, 0x99, 0xe3, 0x10, 0xe9, 0x98, - 0xe0, 0x10, 0xe9, 0x99, 0xe3, 0x10, 0xe9, 0x98, 0xe0, 0x10, 0xea, 0x99, - 0xe3, 0x10, 0xea, 0x99, 0xe2, 0x10, 0xea, 0x99, 0xe3, 0x10, 0xea, 0x9a, - 0xe5, 0x10, 0xeb, 0x9a, 0xe5, 0x10, 0xeb, 0x9a, 0xe5, 0x10, 0xeb, 0x9a, - 0xe5, 0x10, 0xeb, 0x9a, 0xe5, 0x10, 0xec, 0x9a, 0xe5, 0x10, 0xec, 0x9a, - 0xe5, 0x10, 0xec, 0x9a, 0xe5, 0x10, 0xec, 0x9a, 0xe5, 0x10, 0xec, 0x9a, - 0xe5, 0x10, 0xed, 0x9a, 0xe5, 0x10, 0xed, 0x9a, 0xe5, 0x10, 0xed, 0x9b, - 0xe7, 0x10, 0xed, 0x9a, 0xe5, 0x10, 0xee, 0x9b, 0xe7, 0x10, 0xee, 0x9a, - 0xe5, 0x10, 0xee, 0x9b, 0xe7, 0x10, 0xee, 0x9b, 0xe7, 0x10, 0xef, 0x9b, - 0xe7, 0x10, 0xef, 0x9b, 0xe7, 0x10, 0xef, 0x9b, 0xe7, 0x10, 0xef, 0x9c, - 0xea, 0x10, 0xf0, 0x9c, 0xea, 0x10, 0xf0, 0x9c, 0xea, 0x10, 0xf0, 0x9c, - 0xea, 0x10, 0xf0, 0x9c, 0xea, 0x10, 0xf1, 0x9c, 0xea, 0x10, 0xf1, 0x9c, - 0xea, 0x10, 0xf1, 0x9c, 0xea, 0x10, 0xf1, 0x9c, 0xea, 0x10, 0xf2, 0x9c, - 0xea, 0x10, 0xf2, 0x9d, 0xec, 0x10, 0xf2, 0x9c, 0xea, 0x10, 0xf2, 0x9d, - 0xec, 0x10, 0xf2, 0x9c, 0xea, 0x10, 0xf3, 0x9d, 0xec, 0x10, 0xf3, 0x9c, - 0xea, 0x10, 0xf3, 0x9d, 0xec, 0x10, 0xf3, 0x9d, 0xec, 0x10, 0xf4, 0x9d, - 0xec, 0x10, 0xf4, 0x9d, 0xee, 0x10, 0xf4, 0x9d, 0xec, 0x10, 0xf4, 0x9d, - 0xee, 0x10, 0xf5, 0x9d, 0xec, 0x10, 0xf5, 0x9d, 0xee, 0x10, 0xf5, 0x9d, - 0xec, 0x10, 0xf5, 0x9d, 0xee, 0x10, 0xf5, 0x9d, 0xee, 0x10, 0xf6, 0x9d, - 0xee, 0x10, 0xf6, 0x9e, 0xf0, 0x10, 0xf6, 0x9e, 0xf1, 0x10, 0xf6, 0x9e, - 0xf0, 0x10, 0xf7, 0x9e, 0xf1, 0x10, 0xf7, 0x9e, 0xf0, 0x10, 0xf7, 0x9e, - 0xf1, 0x10, 0xf7, 0x9e, 0xf0, 0x10, 0xf8, 0x9e, 0xf1, 0x10, 0xf8, 0x9e, - 0xf0, 0x10, 0xf8, 0x9e, 0xf1, 0x10, 0xf8, 0x9f, 0xf3, 0x10, 0xf8, 0x9e, - 0xf1, 0x10, 0xf9, 0x9f, 0xf3, 0x10, 0xf9, 0x9e, 0xf1, 0x10, 0xf9, 0x9f, - 0xf3, 0x10, 0xf9, 0x9e, 0xf1, 0x10, 0xfa, 0x9f, 0xf3, 0x10, 0xfa, 0x9e, - 0xf1, 0x10, 0xfa, 0x9f, 0xf3, 0x10, 0xfa, 0x9f, 0xf2, 0x10, 0xfa, 0x9f, - 0xf3, 0x10, 0xfb, 0xa0, 0xf5, 0x10, 0xfb, 0x9f, 0xf3, 0x10, 0xfb, 0xa0, - 0xf5, 0x10, 0xfb, 0x9f, 0xf3, 0x10, 0xfc, 0xa0, 0xf5, 0x10, 0xfc, 0x9f, - 0xf3, 0x10, 0xfc, 0xa0, 0xf5, 0x10, 0xfc, 0xa0, 0xf5, 0x10, 0xfc, 0xa0, - 0xf5, 0x10, 0xfd, 0xa1, 0xf7, 0x10, 0xfd, 0xa1, 0xf7, 0x10, 0xfd, 0xa1, - 0xf7, 0x10, 0xfd, 0xa1, 0xf7, 0x10, 0xfe, 0xa1, 0xf7, 0x10, 0xfe, 0xa1, - 0xf7, 0x10, 0xfe, 0xa1, 0xf7, 0x10, 0xfe, 0xa1, 0xf7, 0x10, 0xfe, 0xa1, - 0xf7, 0x10, 0xff, 0xa1, 0xf7, 0x10, 0xff, 0xa1, 0xf9, 0x10, 0x03, 0x83, - 0x9b, 0x10, 0x0a, 0x83, 0x9b, 0x10, 0x0f, 0x83, 0x9b, 0x10, 0x14, 0x83, - 0x9b, 0x10, 0x17, 0x83, 0x9b, 0x10, 0x1b, 0x83, 0x9b, 0x10, 0x1e, 0x83, - 0x9b, 0x10, 0x20, 0x83, 0x9c, 0x10, 0x23, 0x83, 0x9b, 0x10, 0x25, 0x83, - 0x9c, 0x10, 0x27, 0x83, 0x9b, 0x10, 0x29, 0x83, 0x9c, 0x10, 0x2b, 0x83, - 0x9b, 0x10, 0x2d, 0x83, 0x9c, 0x10, 0x2f, 0x83, 0x9b, 0x10, 0x31, 0x83, - 0x9c, 0x10, 0x32, 0x83, 0x9b, 0x10, 0x34, 0x83, 0x9c, 0x10, 0x35, 0x83, - 0x9b, 0x10, 0x37, 0x83, 0x9c, 0x10, 0x38, 0x83, 0x9b, 0x10, 0x3a, 0x83, - 0x9c, 0x10, 0x3b, 0x83, 0x9b, 0x10, 0x3c, 0x83, 0x9c, 0x10, 0x3e, 0x83, - 0x9b, 0x10, 0x3f, 0x83, 0x9c, 0x10, 0x40, 0x83, 0x9b, 0x10, 0x42, 0x83, - 0x9c, 0x10, 0x43, 0x83, 0x9b, 0x10, 0x44, 0x83, 0x9c, 0x10, 0x45, 0x83, - 0x9b, 0x10, 0x46, 0x83, 0x9c, 0x10, 0x47, 0x83, 0x9b, 0x10, 0x48, 0x83, - 0x9c, 0x10, 0x49, 0x83, 0x9b, 0x10, 0x4a, 0x83, 0x9c, 0x10, 0x4b, 0x83, - 0x9b, 0x10, 0x4c, 0x83, 0x9c, 0x10, 0x4d, 0x83, 0x9b, 0x10, 0x4e, 0x83, - 0x9c, 0x10, 0x4f, 0x83, 0x9b, 0x10, 0x50, 0x83, 0x9c, 0x10, 0x51, 0x83, - 0x9b, 0x10, 0x52, 0x83, 0x9c, 0x10, 0x53, 0x83, 0x9b, 0x10, 0x54, 0x83, - 0x9c, 0x10, 0x55, 0x83, 0x9b, 0x10, 0x56, 0x83, 0x9c, 0x10, 0x57, 0x83, - 0x9b, 0x10, 0x58, 0x83, 0x9c, 0x10, 0x58, 0x83, 0x9b, 0x10, 0x59, 0x83, - 0x9c, 0x10, 0x5a, 0x83, 0x9b, 0x10, 0x5b, 0x83, 0x9c, 0x10, 0x5c, 0x83, - 0x9b, 0x10, 0x5d, 0x83, 0x9c, 0x10, 0x5d, 0x83, 0x9b, 0x10, 0x5e, 0x83, - 0x9c, 0x10, 0x5f, 0x83, 0x9b, 0x10, 0x60, 0x83, 0x9c, 0x10, 0x60, 0x83, - 0x9b, 0x10, 0x61, 0x83, 0x9c, 0x10, 0x62, 0x83, 0x9b, 0x10, 0x63, 0x83, - 0x9c, 0x10, 0x63, 0x83, 0x9b, 0x10, 0x64, 0x83, 0x9c, 0x10, 0x65, 0x83, - 0x9b, 0x10, 0x66, 0x83, 0x9c, 0x10, 0x66, 0x83, 0x9b, 0x10, 0x67, 0x83, - 0x9c, 0x10, 0x68, 0x83, 0x9b, 0x10, 0x68, 0x83, 0x9c, 0x10, 0x69, 0x83, - 0x9b, 0x10, 0x6a, 0x83, 0x9c, 0x10, 0x6a, 0x83, 0x9b, 0x10, 0x6b, 0x83, - 0x9c, 0x10, 0x6c, 0x83, 0x9b, 0x10, 0x6c, 0x83, 0x9c, 0x10, 0x6d, 0x83, - 0x9b, 0x10, 0x6e, 0x83, 0x9c, 0x10, 0x6e, 0x83, 0x9b, 0x10, 0x6f, 0x83, - 0x9c, 0x10, 0x70, 0x83, 0x9b, 0x10, 0x70, 0x83, 0x9c, 0x10, 0x71, 0x83, - 0x9b, 0x10, 0x72, 0x83, 0x9c, 0x10, 0x72, 0x83, 0x9b, 0x10, 0x73, 0x83, - 0x9c, 0x10, 0x73, 0x83, 0x9b, 0x10, 0x74, 0x83, 0x9c, 0x10, 0x75, 0x83, - 0x9b, 0x10, 0x75, 0x83, 0x9c, 0x10, 0x76, 0x83, 0x9b, 0x10, 0x76, 0x83, - 0x9c, 0x10, 0x77, 0x83, 0x9b, 0x10, 0x78, 0x83, 0x9c, 0x10, 0x78, 0x83, - 0x9b, 0x10, 0x79, 0x83, 0x9c, 0x10, 0x79, 0x83, 0x9b, 0x10, 0x7a, 0x83, - 0x9c, 0x10, 0x7a, 0x83, 0x9b, 0x10, 0x7b, 0x83, 0x9c, 0x10, 0x7c, 0x83, - 0x9b, 0x10, 0x7c, 0x83, 0x9c, 0x10, 0x7d, 0x83, 0x9b, 0x10, 0x7d, 0x83, - 0x9c, 0x10, 0x7e, 0x83, 0x9b, 0x10, 0x7e, 0x83, 0x9c, 0x10, 0x7f, 0x83, - 0x9b, 0x10, 0x7f, 0x83, 0x9c, 0x10, 0x80, 0x83, 0x9b, 0x10, 0x81, 0x83, - 0x9c, 0x10, 0x81, 0x83, 0x9b, 0x10, 0x82, 0x83, 0x9c, 0x10, 0x82, 0x83, - 0x9b, 0x10, 0x83, 0x83, 0x9c, 0x10, 0x83, 0x83, 0x9b, 0x10, 0x84, 0x83, - 0x9c, 0x10, 0x84, 0x83, 0x9b, 0x10, 0x85, 0x83, 0x9c, 0x10, 0x85, 0x83, - 0x9b, 0x10, 0x86, 0x83, 0x9c, 0x10, 0x86, 0x83, 0x9b, 0x10, 0x87, 0x83, - 0x9c, 0x10, 0x87, 0x83, 0x9b, 0x10, 0x88, 0x83, 0x9c, 0x10, 0x88, 0x83, - 0x9b, 0x10, 0x89, 0x83, 0x9c, 0x10, 0x89, 0x83, 0x9b, 0x10, 0x8a, 0x83, - 0x9c, 0x10, 0x8a, 0x83, 0x9b, 0x10, 0x8b, 0x83, 0x9c, 0x10, 0x8b, 0x83, - 0x9b, 0x10, 0x8c, 0x83, 0x9c, 0x10, 0x8c, 0x83, 0x9b, 0x10, 0x8d, 0x83, - 0x9c, 0x10, 0x8d, 0x83, 0x9b, 0x10, 0x8e, 0x83, 0x9c, 0x10, 0x8e, 0x83, - 0x9b, 0x10, 0x8e, 0x83, 0x9c, 0x10, 0x8f, 0x83, 0x9b, 0x10, 0x8f, 0x83, - 0x9c, 0x10, 0x90, 0x83, 0x9b, 0x10, 0x90, 0x83, 0x9c, 0x10, 0x91, 0x83, - 0x9b, 0x10, 0x91, 0x83, 0x9c, 0x10, 0x92, 0x83, 0x9b, 0x10, 0x92, 0x83, - 0x9c, 0x10, 0x93, 0x83, 0x9b, 0x10, 0x93, 0x83, 0x9c, 0x10, 0x94, 0x83, - 0x9b, 0x10, 0x94, 0x83, 0x9c, 0x10, 0x94, 0x83, 0x9b, 0x10, 0x95, 0x83, - 0x9c, 0x10, 0x95, 0x83, 0x9b, 0x10, 0x96, 0x83, 0x9c, 0x10, 0x96, 0x83, - 0x9b, 0x10, 0x97, 0x83, 0x9c, 0x10, 0x97, 0x83, 0x9b, 0x10, 0x98, 0x83, - 0x9c, 0x10, 0x98, 0x83, 0x9b, 0x10, 0x98, 0x83, 0x9c, 0x10, 0x99, 0x83, - 0x9b, 0x10, 0x99, 0x83, 0x9c, 0x10, 0x9a, 0x83, 0x9b, 0x10, 0x9a, 0x83, - 0x9c, 0x10, 0x9a, 0x83, 0x9b, 0x10, 0x9b, 0x83, 0x9c, 0x10, 0x9b, 0x83, - 0x9b, 0x10, 0x9c, 0x83, 0x9c, 0x10, 0x9c, 0x83, 0x9c, 0x10, 0x9d, 0x83, - 0x9d, 0x10, 0x9d, 0x83, 0x9c, 0x10, 0x9d, 0x83, 0x9d, 0x10, 0x9e, 0x83, - 0x9c, 0x10, 0x9e, 0x83, 0x9d, 0x10, 0x9f, 0x83, 0x9c, 0x10, 0x9f, 0x83, - 0x9d, 0x10, 0x9f, 0x83, 0x9c, 0x10, 0xa0, 0x83, 0x9d, 0x10, 0xa0, 0x83, - 0x9c, 0x10, 0xa1, 0x83, 0x9d, 0x10, 0xa1, 0x83, 0x9c, 0x10, 0xa1, 0x83, - 0x9d, 0x10, 0xa2, 0x83, 0x9c, 0x10, 0xa2, 0x83, 0x9d, 0x10, 0xa3, 0x83, - 0x9c, 0x10, 0xa3, 0x83, 0x9d, 0x10, 0xa3, 0x83, 0x9c, 0x10, 0xa4, 0x83, - 0x9d, 0x10, 0xa4, 0x83, 0x9c, 0x10, 0xa5, 0x83, 0x9d, 0x10, 0xa5, 0x84, - 0xa0, 0x10, 0xa5, 0x84, 0xa1, 0x10, 0xa6, 0x84, 0xa0, 0x10, 0xa6, 0x84, - 0xa1, 0x10, 0xa6, 0x84, 0xa0, 0x10, 0xa7, 0x84, 0xa1, 0x10, 0xa7, 0x84, - 0xa0, 0x10, 0xa8, 0x84, 0xa1, 0x10, 0xa8, 0x84, 0xa0, 0x10, 0xa8, 0x84, - 0xa1, 0x10, 0xa9, 0x84, 0xa0, 0x10, 0xa9, 0x84, 0xa1, 0x10, 0xaa, 0x85, - 0xa4, 0x10, 0xaa, 0x84, 0xa1, 0x10, 0xaa, 0x85, 0xa4, 0x10, 0xab, 0x85, - 0xa4, 0x10, 0xab, 0x85, 0xa4, 0x10, 0xab, 0x85, 0xa4, 0x10, 0xac, 0x85, - 0xa4, 0x10, 0xac, 0x85, 0xa4, 0x10, 0xac, 0x85, 0xa4, 0x10, 0xad, 0x86, - 0xa8, 0x10, 0xad, 0x85, 0xa4, 0x10, 0xae, 0x86, 0xa8, 0x10, 0xae, 0x85, - 0xa4, 0x10, 0xae, 0x86, 0xa8, 0x10, 0xaf, 0x86, 0xa7, 0x10, 0xaf, 0x86, - 0xa8, 0x10, 0xaf, 0x86, 0xa7, 0x10, 0xb0, 0x86, 0xa8, 0x10, 0xb0, 0x87, - 0xab, 0x10, 0xb0, 0x87, 0xab, 0x10, 0xb1, 0x87, 0xab, 0x10, 0xb1, 0x87, - 0xab, 0x10, 0xb2, 0x87, 0xab, 0x10, 0xb2, 0x87, 0xab, 0x10, 0xb2, 0x87, - 0xab, 0x10, 0xb3, 0x87, 0xab, 0x10, 0xb3, 0x87, 0xab, 0x10, 0xb3, 0x87, - 0xab, 0x10, 0xb4, 0x88, 0xaf, 0x10, 0xb4, 0x87, 0xab, 0x10, 0xb4, 0x88, - 0xaf, 0x10, 0xb5, 0x87, 0xab, 0x10, 0xb5, 0x88, 0xaf, 0x10, 0xb5, 0x88, - 0xae, 0x10, 0xb6, 0x88, 0xaf, 0x10, 0xb6, 0x88, 0xae, 0x10, 0xb6, 0x88, - 0xaf, 0x10, 0xb7, 0x89, 0xb2, 0x10, 0xb7, 0x89, 0xb2, 0x10, 0xb7, 0x89, - 0xb2, 0x10, 0xb8, 0x89, 0xb2, 0x10, 0xb8, 0x89, 0xb2, 0x10, 0xb8, 0x89, - 0xb2, 0x10, 0xb9, 0x89, 0xb2, 0x10, 0xb9, 0x89, 0xb2, 0x10, 0xb9, 0x89, - 0xb2, 0x10, 0xba, 0x89, 0xb2, 0x10, 0xba, 0x89, 0xb2, 0x10, 0xba, 0x89, - 0xb2, 0x10, 0xbb, 0x8a, 0xb5, 0x10, 0xbb, 0x89, 0xb2, 0x10, 0xbb, 0x8a, - 0xb5, 0x10, 0xbc, 0x89, 0xb2, 0x10, 0xbc, 0x8a, 0xb5, 0x10, 0xbc, 0x8a, - 0xb5, 0x10, 0xbd, 0x8a, 0xb5, 0x10, 0xbd, 0x8a, 0xb5, 0x10, 0xbd, 0x8a, - 0xb5, 0x10, 0xbe, 0x8b, 0xb8, 0x10, 0xbe, 0x8a, 0xb5, 0x10, 0xbe, 0x8b, - 0xb8, 0x10, 0xbf, 0x8a, 0xb5, 0x10, 0xbf, 0x8b, 0xb8, 0x10, 0xbf, 0x8b, - 0xb8, 0x10, 0xc0, 0x8b, 0xb8, 0x10, 0xc0, 0x8b, 0xb8, 0x10, 0xc0, 0x8b, - 0xb8, 0x10, 0xc1, 0x8c, 0xbb, 0x10, 0xc1, 0x8c, 0xbc, 0x10, 0xc1, 0x8c, - 0xbb, 0x10, 0xc1, 0x8c, 0xbc, 0x10, 0xc2, 0x8c, 0xbb, 0x10, 0xc2, 0x8c, - 0xbc, 0x10, 0xc2, 0x8c, 0xbb, 0x10, 0xc3, 0x8c, 0xbc, 0x10, 0xc3, 0x8c, - 0xbb, 0x10, 0xc3, 0x8c, 0xbc, 0x10, 0xc4, 0x8d, 0xbf, 0x10, 0xc4, 0x8c, - 0xbc, 0x10, 0xc4, 0x8d, 0xbf, 0x10, 0xc5, 0x8c, 0xbc, 0x10, 0xc5, 0x8d, - 0xbf, 0x10, 0xc5, 0x8d, 0xbe, 0x10, 0xc6, 0x8d, 0xbf, 0x10, 0xc6, 0x8d, - 0xbe, 0x10, 0xc6, 0x8d, 0xbf, 0x10, 0xc6, 0x8e, 0xc1, 0x10, 0xc7, 0x8d, - 0xbf, 0x10, 0xc7, 0x8e, 0xc1, 0x10, 0xc7, 0x8d, 0xbf, 0x10, 0xc8, 0x8e, - 0xc1, 0x10, 0xc8, 0x8d, 0xbf, 0x10, 0xc8, 0x8e, 0xc1, 0x10, 0xc9, 0x8e, - 0xc1, 0x10, 0xc9, 0x8e, 0xc1, 0x10, 0xc9, 0x8e, 0xc1, 0x10, 0xc9, 0x8e, - 0xc1, 0x10, 0xca, 0x8f, 0xc4, 0x10, 0xca, 0x8f, 0xc5, 0x10, 0xca, 0x8f, - 0xc4, 0x10, 0xcb, 0x8f, 0xc5, 0x10, 0xcb, 0x8f, 0xc4, 0x10, 0xcb, 0x8f, - 0xc5, 0x10, 0xcc, 0x8f, 0xc4, 0x10, 0xcc, 0x8f, 0xc5, 0x10, 0xcc, 0x8f, - 0xc4, 0x10, 0xcc, 0x8f, 0xc5, 0x10, 0xcd, 0x90, 0xc7, 0x10, 0xcd, 0x8f, - 0xc5, 0x10, 0xcd, 0x90, 0xc7, 0x10, 0xce, 0x8f, 0xc5, 0x10, 0xce, 0x90, - 0xc7, 0x10, 0xce, 0x90, 0xc7, 0x10, 0xce, 0x90, 0xc7, 0x10, 0xcf, 0x90, - 0xc7, 0x10, 0xcf, 0x90, 0xc7, 0x10, 0xcf, 0x91, 0xca, 0x10, 0xd0, 0x90, - 0xc7, 0x10, 0xd0, 0x91, 0xca, 0x10, 0xd0, 0x90, 0xc7, 0x10, 0xd0, 0x91, - 0xca, 0x10, 0xd1, 0x91, 0xca, 0x10, 0xd1, 0x91, 0xca, 0x10, 0xd1, 0x91, - 0xca, 0x10, 0xd2, 0x91, 0xca, 0x10, 0xd2, 0x92, 0xcd, 0x10, 0xd2, 0x92, - 0xcd, 0x10, 0xd2, 0x92, 0xcd, 0x10, 0xd3, 0x92, 0xcd, 0x10, 0xd3, 0x92, - 0xcd, 0x10, 0xd3, 0x92, 0xcd, 0x10, 0xd4, 0x92, 0xcd, 0x10, 0xd4, 0x92, - 0xcd, 0x10, 0xd4, 0x92, 0xcd, 0x10, 0xd4, 0x92, 0xcd, 0x10, 0xd5, 0x92, - 0xcd, 0x10, 0xd5, 0x92, 0xcd, 0x10, 0xd5, 0x93, 0xd0, 0x10, 0xd6, 0x92, - 0xcd, 0x10, 0xd6, 0x93, 0xd0, 0x10, 0xd6, 0x92, 0xcd, 0x10, 0xd6, 0x93, - 0xd0, 0x10, 0xd7, 0x93, 0xcf, 0x10, 0xd7, 0x93, 0xd0, 0x10, 0xd7, 0x93, - 0xcf, 0x10, 0xd7, 0x93, 0xd0, 0x10, 0xd8, 0x94, 0xd2, 0x10, 0xd8, 0x94, - 0xd2, 0x10, 0xd8, 0x94, 0xd2, 0x10, 0xd9, 0x94, 0xd2, 0x10, 0xd9, 0x94, - 0xd2, 0x10, 0xd9, 0x94, 0xd2, 0x10, 0xd9, 0x94, 0xd2, 0x10, 0xda, 0x94, - 0xd2, 0x10, 0xda, 0x94, 0xd2, 0x10, 0xda, 0x94, 0xd2, 0x10, 0xda, 0x94, - 0xd5, 0x10, 0xdb, 0x94, 0xd2, 0x10, 0xdb, 0x94, 0xd5, 0x10, 0xdb, 0x94, - 0xd2, 0x10, 0xdb, 0x94, 0xd5, 0x10, 0xdc, 0x94, 0xd5, 0x10, 0xdc, 0x94, - 0xd5, 0x10, 0xdc, 0x94, 0xd5, 0x10, 0xdd, 0x94, 0xd5, 0x10, 0xdd, 0x95, - 0xd7, 0x10, 0xdd, 0x94, 0xd5, 0x10, 0xdd, 0x95, 0xd7, 0x10, 0xde, 0x94, - 0xd5, 0x10, 0xde, 0x95, 0xd7, 0x10, 0xde, 0x94, 0xd5, 0x10, 0xde, 0x95, - 0xd7, 0x10, 0xdf, 0x95, 0xd7, 0x10, 0xdf, 0x95, 0xd7, 0x10, 0xdf, 0x96, - 0xda, 0x10, 0xdf, 0x96, 0xda, 0x10, 0xe0, 0x96, 0xda, 0x10, 0xe0, 0x96, - 0xda, 0x10, 0xe0, 0x96, 0xda, 0x10, 0xe1, 0x96, 0xda, 0x10, 0xe1, 0x96, - 0xda, 0x10, 0xe1, 0x96, 0xda, 0x10, 0xe1, 0x96, 0xda, 0x10, 0xe2, 0x96, - 0xda, 0x10, 0xe2, 0x97, 0xdd, 0x10, 0xe2, 0x96, 0xda, 0x10, 0xe2, 0x97, - 0xdd, 0x10, 0xe3, 0x96, 0xda, 0x10, 0xe3, 0x97, 0xdd, 0x10, 0xe3, 0x96, - 0xda, 0x10, 0xe3, 0x97, 0xdd, 0x10, 0xe4, 0x97, 0xdc, 0x10, 0xe4, 0x97, - 0xdd, 0x10, 0xe4, 0x97, 0xdc, 0x10, 0xe4, 0x97, 0xdd, 0x10, 0xe5, 0x98, - 0xdf, 0x10, 0xe5, 0x97, 0xdd, 0x10, 0xe5, 0x98, 0xdf, 0x10, 0xe5, 0x97, - 0xdd, 0x10, 0xe6, 0x98, 0xdf, 0x10, 0xe6, 0x98, 0xdf, 0x10, 0xe6, 0x98, - 0xdf, 0x10, 0xe6, 0x98, 0xdf, 0x10, 0xe7, 0x98, 0xdf, 0x10, 0xe7, 0x99, - 0xe1, 0x10, 0xe7, 0x99, 0xe2, 0x10, 0xe7, 0x99, 0xe1, 0x10, 0xe8, 0x99, - 0xe2, 0x10, 0xe8, 0x99, 0xe1, 0x10, 0xe8, 0x99, 0xe2, 0x10, 0xe8, 0x99, - 0xe1, 0x10, 0xe9, 0x99, 0xe2, 0x10, 0xe9, 0x99, 0xe1, 0x10, 0xe9, 0x99, - 0xe2, 0x10, 0xe9, 0x9a, 0xe4, 0x10, 0xea, 0x99, 0xe2, 0x10, 0xea, 0x9a, - 0xe4, 0x10, 0xea, 0x99, 0xe2, 0x10, 0xea, 0x9a, 0xe4, 0x10, 0xeb, 0x99, - 0xe2, 0x10, 0xeb, 0x9a, 0xe4, 0x10, 0xeb, 0x9a, 0xe4, 0x10, 0xeb, 0x9a, - 0xe4, 0x10, 0xec, 0x9a, 0xe6, 0x10, 0xec, 0x9a, 0xe4, 0x10, 0xec, 0x9a, - 0xe6, 0x10, 0xec, 0x9a, 0xe4, 0x10, 0xec, 0x9a, 0xe6, 0x10, 0xed, 0x9a, - 0xe4, 0x10, 0xed, 0x9a, 0xe6, 0x10, 0xed, 0x9a, 0xe6, 0x10, 0xed, 0x9a, - 0xe6, 0x10, 0xee, 0x9a, 0xe6, 0x10, 0xee, 0x9a, 0xe6, 0x10, 0xee, 0x9b, - 0xe8, 0x10, 0xee, 0x9b, 0xe9, 0x10, 0xef, 0x9b, 0xe8, 0x10, 0xef, 0x9b, - 0xe9, 0x10, 0xef, 0x9b, 0xe8, 0x10, 0xef, 0x9b, 0xe9, 0x10, 0xf0, 0x9b, - 0xe8, 0x10, 0xf0, 0x9b, 0xe9, 0x10, 0xf0, 0x9b, 0xe8, 0x10, 0xf0, 0x9b, - 0xe9, 0x10, 0xf1, 0x9c, 0xeb, 0x10, 0xf1, 0x9b, 0xe9, 0x10, 0xf1, 0x9c, - 0xeb, 0x10, 0xf1, 0x9b, 0xe9, 0x10, 0xf2, 0x9c, 0xeb, 0x10, 0xf2, 0x9b, - 0xe9, 0x10, 0xf2, 0x9c, 0xeb, 0x10, 0xf2, 0x9c, 0xeb, 0x10, 0xf2, 0x9c, - 0xeb, 0x10, 0xf3, 0x9d, 0xed, 0x10, 0xf3, 0x9d, 0xed, 0x10, 0xf3, 0x9d, - 0xed, 0x10, 0xf3, 0x9d, 0xed, 0x10, 0xf4, 0x9d, 0xed, 0x10, 0xf4, 0x9d, - 0xed, 0x10, 0xf4, 0x9d, 0xed, 0x10, 0xf4, 0x9d, 0xed, 0x10, 0xf5, 0x9d, - 0xed, 0x10, 0xf5, 0x9d, 0xed, 0x10, 0xf5, 0x9e, 0xef, 0x10, 0xf5, 0x9d, - 0xed, 0x10, 0xf5, 0x9e, 0xef, 0x10, 0xf6, 0x9d, 0xed, 0x10, 0xf6, 0x9e, - 0xef, 0x10, 0xf6, 0x9d, 0xed, 0x10, 0xf6, 0x9e, 0xef, 0x10, 0xf7, 0x9e, - 0xef, 0x10, 0xf7, 0x9e, 0xef, 0x10, 0xf7, 0x9f, 0xf2, 0x10, 0xf7, 0x9e, - 0xef, 0x10, 0xf8, 0x9f, 0xf2, 0x10, 0xf8, 0x9e, 0xef, 0x10, 0xf8, 0x9f, - 0xf2, 0x10, 0xf8, 0x9e, 0xef, 0x10, 0xf8, 0x9f, 0xf2, 0x10, 0xf9, 0x9f, - 0xf1, 0x10, 0xf9, 0x9f, 0xf2, 0x10, 0xf9, 0x9f, 0xf4, 0x10, 0xf9, 0x9f, - 0xf4, 0x10, 0xfa, 0x9f, 0xf4, 0x10, 0xfa, 0x9f, 0xf4, 0x10, 0xfa, 0x9f, - 0xf4, 0x10, 0xfa, 0x9f, 0xf4, 0x10, 0xfa, 0x9f, 0xf4, 0x10, 0xfb, 0x9f, - 0xf4, 0x10, 0xfb, 0x9f, 0xf4, 0x10, 0xfb, 0x9f, 0xf4, 0x10, 0xfb, 0x9f, - 0xf4, 0x10, 0xfc, 0x9f, 0xf4, 0x10, 0xfc, 0xa0, 0xf6, 0x10, 0xfc, 0x9f, - 0xf4, 0x10, 0xfc, 0xa0, 0xf6, 0x10, 0xfc, 0x9f, 0xf4, 0x10, 0xfd, 0xa0, - 0xf6, 0x10, 0xfd, 0x9f, 0xf4, 0x10, 0xfd, 0xa0, 0xf6, 0x10, 0xfd, 0xa0, - 0xf6, 0x10, 0xfe, 0xa0, 0xf6, 0x10, 0xfe, 0xa0, 0xf6, 0x10, 0xfe, 0xa0, - 0xf6, 0x10, 0xfe, 0xa0, 0xf6, 0x10, 0xfe, 0xa0, 0xf6, 0x10, 0xff, 0xa1, - 0xf8, 0x10, 0xff, 0xa0, 0xf6, 0x10, 0x03, 0x84, 0x9b, 0x11, 0x0a, 0x84, - 0x9b, 0x11, 0x0f, 0x84, 0x9b, 0x11, 0x14, 0x84, 0x9b, 0x11, 0x17, 0x84, - 0x9b, 0x11, 0x1b, 0x84, 0x9b, 0x11, 0x1e, 0x84, 0x9b, 0x11, 0x20, 0x84, - 0x9c, 0x11, 0x23, 0x84, 0x9b, 0x11, 0x25, 0x84, 0x9c, 0x11, 0x27, 0x84, - 0x9b, 0x11, 0x29, 0x84, 0x9c, 0x11, 0x2b, 0x84, 0x9b, 0x11, 0x2d, 0x84, - 0x9c, 0x11, 0x2f, 0x84, 0x9b, 0x11, 0x31, 0x84, 0x9c, 0x11, 0x32, 0x84, - 0x9b, 0x11, 0x34, 0x84, 0x9c, 0x11, 0x35, 0x84, 0x9b, 0x11, 0x37, 0x84, - 0x9c, 0x11, 0x38, 0x84, 0x9b, 0x11, 0x3a, 0x84, 0x9c, 0x11, 0x3b, 0x84, - 0x9b, 0x11, 0x3c, 0x84, 0x9c, 0x11, 0x3e, 0x84, 0x9b, 0x11, 0x3f, 0x84, - 0x9c, 0x11, 0x40, 0x84, 0x9b, 0x11, 0x42, 0x84, 0x9c, 0x11, 0x43, 0x84, - 0x9b, 0x11, 0x44, 0x84, 0x9c, 0x11, 0x45, 0x84, 0x9b, 0x11, 0x46, 0x84, - 0x9c, 0x11, 0x47, 0x84, 0x9b, 0x11, 0x48, 0x84, 0x9c, 0x11, 0x49, 0x84, - 0x9b, 0x11, 0x4a, 0x84, 0x9c, 0x11, 0x4b, 0x84, 0x9b, 0x11, 0x4c, 0x84, - 0x9c, 0x11, 0x4d, 0x84, 0x9b, 0x11, 0x4e, 0x84, 0x9c, 0x11, 0x4f, 0x84, - 0x9b, 0x11, 0x50, 0x84, 0x9c, 0x11, 0x51, 0x84, 0x9b, 0x11, 0x52, 0x84, - 0x9c, 0x11, 0x53, 0x84, 0x9b, 0x11, 0x54, 0x84, 0x9c, 0x11, 0x55, 0x84, - 0x9b, 0x11, 0x56, 0x84, 0x9c, 0x11, 0x57, 0x84, 0x9b, 0x11, 0x58, 0x84, - 0x9c, 0x11, 0x58, 0x84, 0x9b, 0x11, 0x59, 0x84, 0x9c, 0x11, 0x5a, 0x84, - 0x9b, 0x11, 0x5b, 0x84, 0x9c, 0x11, 0x5c, 0x84, 0x9b, 0x11, 0x5d, 0x84, - 0x9c, 0x11, 0x5d, 0x84, 0x9b, 0x11, 0x5e, 0x84, 0x9c, 0x11, 0x5f, 0x84, - 0x9b, 0x11, 0x60, 0x84, 0x9c, 0x11, 0x60, 0x84, 0x9b, 0x11, 0x61, 0x84, - 0x9c, 0x11, 0x62, 0x84, 0x9b, 0x11, 0x63, 0x84, 0x9c, 0x11, 0x63, 0x84, - 0x9b, 0x11, 0x64, 0x84, 0x9c, 0x11, 0x65, 0x84, 0x9b, 0x11, 0x66, 0x84, - 0x9c, 0x11, 0x66, 0x84, 0x9b, 0x11, 0x67, 0x84, 0x9c, 0x11, 0x68, 0x84, - 0x9b, 0x11, 0x68, 0x84, 0x9c, 0x11, 0x69, 0x84, 0x9b, 0x11, 0x6a, 0x84, - 0x9c, 0x11, 0x6a, 0x84, 0x9b, 0x11, 0x6b, 0x84, 0x9c, 0x11, 0x6c, 0x84, - 0x9b, 0x11, 0x6c, 0x84, 0x9c, 0x11, 0x6d, 0x84, 0x9b, 0x11, 0x6e, 0x84, - 0x9c, 0x11, 0x6e, 0x84, 0x9b, 0x11, 0x6f, 0x84, 0x9c, 0x11, 0x70, 0x84, - 0x9b, 0x11, 0x70, 0x84, 0x9c, 0x11, 0x71, 0x84, 0x9b, 0x11, 0x72, 0x84, - 0x9c, 0x11, 0x72, 0x84, 0x9b, 0x11, 0x73, 0x84, 0x9c, 0x11, 0x73, 0x84, - 0x9b, 0x11, 0x74, 0x84, 0x9c, 0x11, 0x75, 0x84, 0x9b, 0x11, 0x75, 0x84, - 0x9c, 0x11, 0x76, 0x84, 0x9b, 0x11, 0x76, 0x84, 0x9c, 0x11, 0x77, 0x84, - 0x9b, 0x11, 0x78, 0x84, 0x9c, 0x11, 0x78, 0x84, 0x9b, 0x11, 0x79, 0x84, - 0x9c, 0x11, 0x79, 0x84, 0x9b, 0x11, 0x7a, 0x84, 0x9c, 0x11, 0x7a, 0x84, - 0x9b, 0x11, 0x7b, 0x84, 0x9c, 0x11, 0x7c, 0x84, 0x9b, 0x11, 0x7c, 0x84, - 0x9c, 0x11, 0x7d, 0x84, 0x9b, 0x11, 0x7d, 0x84, 0x9c, 0x11, 0x7e, 0x84, - 0x9b, 0x11, 0x7e, 0x84, 0x9c, 0x11, 0x7f, 0x84, 0x9b, 0x11, 0x7f, 0x84, - 0x9c, 0x11, 0x80, 0x84, 0x9b, 0x11, 0x81, 0x84, 0x9c, 0x11, 0x81, 0x84, - 0x9b, 0x11, 0x82, 0x84, 0x9c, 0x11, 0x82, 0x84, 0x9b, 0x11, 0x83, 0x84, - 0x9c, 0x11, 0x83, 0x84, 0x9b, 0x11, 0x84, 0x84, 0x9c, 0x11, 0x84, 0x84, - 0x9b, 0x11, 0x85, 0x84, 0x9c, 0x11, 0x85, 0x84, 0x9b, 0x11, 0x86, 0x84, - 0x9c, 0x11, 0x86, 0x84, 0x9b, 0x11, 0x87, 0x84, 0x9c, 0x11, 0x87, 0x84, - 0x9b, 0x11, 0x88, 0x84, 0x9c, 0x11, 0x88, 0x84, 0x9b, 0x11, 0x89, 0x84, - 0x9c, 0x11, 0x89, 0x84, 0x9b, 0x11, 0x8a, 0x84, 0x9c, 0x11, 0x8a, 0x84, - 0x9b, 0x11, 0x8b, 0x84, 0x9c, 0x11, 0x8b, 0x84, 0x9b, 0x11, 0x8c, 0x84, - 0x9c, 0x11, 0x8c, 0x84, 0x9b, 0x11, 0x8d, 0x84, 0x9c, 0x11, 0x8d, 0x84, - 0x9b, 0x11, 0x8e, 0x84, 0x9c, 0x11, 0x8e, 0x84, 0x9b, 0x11, 0x8e, 0x84, - 0x9c, 0x11, 0x8f, 0x84, 0x9b, 0x11, 0x8f, 0x84, 0x9c, 0x11, 0x90, 0x84, - 0x9b, 0x11, 0x90, 0x84, 0x9c, 0x11, 0x91, 0x84, 0x9b, 0x11, 0x91, 0x84, - 0x9c, 0x11, 0x92, 0x84, 0x9b, 0x11, 0x92, 0x84, 0x9c, 0x11, 0x93, 0x84, - 0x9b, 0x11, 0x93, 0x84, 0x9c, 0x11, 0x94, 0x84, 0x9b, 0x11, 0x94, 0x84, - 0x9c, 0x11, 0x94, 0x84, 0x9b, 0x11, 0x95, 0x84, 0x9c, 0x11, 0x95, 0x84, - 0x9b, 0x11, 0x96, 0x84, 0x9c, 0x11, 0x96, 0x84, 0x9b, 0x11, 0x97, 0x84, - 0x9c, 0x11, 0x97, 0x84, 0x9b, 0x11, 0x98, 0x84, 0x9c, 0x11, 0x98, 0x84, - 0x9b, 0x11, 0x98, 0x84, 0x9c, 0x11, 0x99, 0x84, 0x9b, 0x11, 0x99, 0x84, - 0x9c, 0x11, 0x9a, 0x84, 0x9b, 0x11, 0x9a, 0x84, 0x9c, 0x11, 0x9a, 0x84, - 0x9b, 0x11, 0x9b, 0x84, 0x9c, 0x11, 0x9b, 0x84, 0x9b, 0x11, 0x9c, 0x84, - 0x9c, 0x11, 0x9c, 0x84, 0x9c, 0x11, 0x9d, 0x84, 0x9d, 0x11, 0x9d, 0x84, - 0x9d, 0x11, 0x9d, 0x84, 0x9d, 0x11, 0x9e, 0x84, 0x9e, 0x11, 0x9e, 0x84, - 0x9e, 0x11, 0x9f, 0x84, 0x9f, 0x11, 0x9f, 0x84, 0x9e, 0x11, 0x9f, 0x84, - 0x9f, 0x11, 0xa0, 0x84, 0x9e, 0x11, 0xa0, 0x84, 0x9f, 0x11, 0xa1, 0x84, - 0x9e, 0x11, 0xa1, 0x84, 0x9f, 0x11, 0xa1, 0x84, 0x9e, 0x11, 0xa2, 0x84, - 0x9f, 0x11, 0xa2, 0x84, 0x9e, 0x11, 0xa3, 0x84, 0x9f, 0x11, 0xa3, 0x84, - 0x9e, 0x11, 0xa3, 0x84, 0x9f, 0x11, 0xa4, 0x84, 0x9e, 0x11, 0xa4, 0x84, - 0x9f, 0x11, 0xa5, 0x84, 0x9e, 0x11, 0xa5, 0x84, 0x9f, 0x11, 0xa5, 0x84, - 0x9e, 0x11, 0xa6, 0x84, 0x9f, 0x11, 0xa6, 0x84, 0x9e, 0x11, 0xa6, 0x84, - 0x9f, 0x11, 0xa7, 0x85, 0xa2, 0x11, 0xa7, 0x84, 0x9f, 0x11, 0xa8, 0x85, - 0xa2, 0x11, 0xa8, 0x84, 0x9f, 0x11, 0xa8, 0x85, 0xa2, 0x11, 0xa9, 0x85, - 0xa2, 0x11, 0xa9, 0x85, 0xa2, 0x11, 0xaa, 0x85, 0xa2, 0x11, 0xaa, 0x85, - 0xa2, 0x11, 0xaa, 0x85, 0xa2, 0x11, 0xab, 0x85, 0xa2, 0x11, 0xab, 0x86, - 0xa6, 0x11, 0xab, 0x86, 0xa6, 0x11, 0xac, 0x86, 0xa6, 0x11, 0xac, 0x86, - 0xa6, 0x11, 0xac, 0x86, 0xa6, 0x11, 0xad, 0x86, 0xa6, 0x11, 0xad, 0x86, - 0xa6, 0x11, 0xae, 0x86, 0xa6, 0x11, 0xae, 0x86, 0xa6, 0x11, 0xae, 0x86, - 0xa6, 0x11, 0xaf, 0x87, 0xaa, 0x11, 0xaf, 0x86, 0xa6, 0x11, 0xaf, 0x87, - 0xaa, 0x11, 0xb0, 0x86, 0xa6, 0x11, 0xb0, 0x87, 0xaa, 0x11, 0xb0, 0x87, - 0xa9, 0x11, 0xb1, 0x87, 0xaa, 0x11, 0xb1, 0x87, 0xa9, 0x11, 0xb2, 0x87, - 0xaa, 0x11, 0xb2, 0x88, 0xad, 0x11, 0xb2, 0x88, 0xad, 0x11, 0xb3, 0x88, - 0xad, 0x11, 0xb3, 0x88, 0xad, 0x11, 0xb3, 0x88, 0xad, 0x11, 0xb4, 0x88, - 0xad, 0x11, 0xb4, 0x88, 0xad, 0x11, 0xb4, 0x88, 0xad, 0x11, 0xb5, 0x88, - 0xad, 0x11, 0xb5, 0x88, 0xad, 0x11, 0xb5, 0x89, 0xb0, 0x11, 0xb6, 0x88, - 0xad, 0x11, 0xb6, 0x89, 0xb0, 0x11, 0xb6, 0x88, 0xad, 0x11, 0xb7, 0x89, - 0xb0, 0x11, 0xb7, 0x89, 0xb2, 0x11, 0xb7, 0x89, 0xb0, 0x11, 0xb8, 0x89, - 0xb2, 0x11, 0xb8, 0x89, 0xb0, 0x11, 0xb8, 0x89, 0xb2, 0x11, 0xb9, 0x89, - 0xb0, 0x11, 0xb9, 0x89, 0xb2, 0x11, 0xb9, 0x89, 0xb2, 0x11, 0xba, 0x89, - 0xb2, 0x11, 0xba, 0x89, 0xb2, 0x11, 0xba, 0x89, 0xb2, 0x11, 0xbb, 0x8a, - 0xb3, 0x11, 0xbb, 0x8a, 0xb4, 0x11, 0xbb, 0x8a, 0xb3, 0x11, 0xbc, 0x8a, - 0xb4, 0x11, 0xbc, 0x8b, 0xb7, 0x11, 0xbc, 0x8b, 0xb7, 0x11, 0xbd, 0x8b, - 0xb7, 0x11, 0xbd, 0x8b, 0xb7, 0x11, 0xbd, 0x8b, 0xb7, 0x11, 0xbe, 0x8b, - 0xb7, 0x11, 0xbe, 0x8b, 0xb7, 0x11, 0xbe, 0x8b, 0xb7, 0x11, 0xbf, 0x8b, - 0xb7, 0x11, 0xbf, 0x8b, 0xb7, 0x11, 0xbf, 0x8c, 0xba, 0x11, 0xc0, 0x8b, - 0xb7, 0x11, 0xc0, 0x8c, 0xba, 0x11, 0xc0, 0x8b, 0xb7, 0x11, 0xc1, 0x8c, - 0xba, 0x11, 0xc1, 0x8c, 0xba, 0x11, 0xc1, 0x8c, 0xba, 0x11, 0xc1, 0x8c, - 0xba, 0x11, 0xc2, 0x8c, 0xba, 0x11, 0xc2, 0x8d, 0xbd, 0x11, 0xc2, 0x8c, - 0xba, 0x11, 0xc3, 0x8d, 0xbd, 0x11, 0xc3, 0x8c, 0xba, 0x11, 0xc3, 0x8d, - 0xbd, 0x11, 0xc4, 0x8d, 0xbd, 0x11, 0xc4, 0x8d, 0xbd, 0x11, 0xc4, 0x8d, - 0xbd, 0x11, 0xc5, 0x8d, 0xbd, 0x11, 0xc5, 0x8e, 0xc0, 0x11, 0xc5, 0x8e, - 0xc0, 0x11, 0xc6, 0x8e, 0xc0, 0x11, 0xc6, 0x8e, 0xc0, 0x11, 0xc6, 0x8e, - 0xc0, 0x11, 0xc6, 0x8e, 0xc0, 0x11, 0xc7, 0x8e, 0xc0, 0x11, 0xc7, 0x8e, - 0xc0, 0x11, 0xc7, 0x8e, 0xc0, 0x11, 0xc8, 0x8e, 0xc0, 0x11, 0xc8, 0x8e, - 0xc3, 0x11, 0xc8, 0x8e, 0xc0, 0x11, 0xc9, 0x8e, 0xc3, 0x11, 0xc9, 0x8e, - 0xc0, 0x11, 0xc9, 0x8e, 0xc3, 0x11, 0xc9, 0x8e, 0xc0, 0x11, 0xca, 0x8e, - 0xc3, 0x11, 0xca, 0x8e, 0xc3, 0x11, 0xca, 0x8e, 0xc3, 0x11, 0xcb, 0x8e, - 0xc3, 0x11, 0xcb, 0x8e, 0xc3, 0x11, 0xcb, 0x8f, 0xc6, 0x11, 0xcc, 0x8e, - 0xc3, 0x11, 0xcc, 0x8f, 0xc6, 0x11, 0xcc, 0x8e, 0xc3, 0x11, 0xcc, 0x8f, - 0xc6, 0x11, 0xcd, 0x8f, 0xc6, 0x11, 0xcd, 0x8f, 0xc6, 0x11, 0xcd, 0x8f, - 0xc6, 0x11, 0xce, 0x8f, 0xc6, 0x11, 0xce, 0x90, 0xc9, 0x11, 0xce, 0x90, - 0xc9, 0x11, 0xce, 0x90, 0xc9, 0x11, 0xcf, 0x90, 0xc9, 0x11, 0xcf, 0x90, - 0xc9, 0x11, 0xcf, 0x90, 0xc9, 0x11, 0xd0, 0x90, 0xc9, 0x11, 0xd0, 0x90, - 0xc9, 0x11, 0xd0, 0x90, 0xc9, 0x11, 0xd0, 0x90, 0xc9, 0x11, 0xd1, 0x91, - 0xcc, 0x11, 0xd1, 0x90, 0xc9, 0x11, 0xd1, 0x91, 0xcc, 0x11, 0xd2, 0x90, - 0xc9, 0x11, 0xd2, 0x91, 0xcc, 0x11, 0xd2, 0x91, 0xcb, 0x11, 0xd2, 0x91, - 0xcc, 0x11, 0xd3, 0x91, 0xcb, 0x11, 0xd3, 0x91, 0xcc, 0x11, 0xd3, 0x92, - 0xce, 0x11, 0xd4, 0x92, 0xce, 0x11, 0xd4, 0x92, 0xce, 0x11, 0xd4, 0x92, - 0xce, 0x11, 0xd4, 0x92, 0xce, 0x11, 0xd5, 0x92, 0xce, 0x11, 0xd5, 0x92, - 0xce, 0x11, 0xd5, 0x92, 0xce, 0x11, 0xd6, 0x92, 0xce, 0x11, 0xd6, 0x92, - 0xce, 0x11, 0xd6, 0x92, 0xce, 0x11, 0xd6, 0x92, 0xce, 0x11, 0xd7, 0x93, - 0xd1, 0x11, 0xd7, 0x92, 0xce, 0x11, 0xd7, 0x93, 0xd1, 0x11, 0xd7, 0x92, - 0xce, 0x11, 0xd8, 0x93, 0xd1, 0x11, 0xd8, 0x93, 0xd1, 0x11, 0xd8, 0x93, - 0xd1, 0x11, 0xd9, 0x93, 0xd1, 0x11, 0xd9, 0x93, 0xd1, 0x11, 0xd9, 0x94, - 0xd4, 0x11, 0xd9, 0x93, 0xd1, 0x11, 0xda, 0x94, 0xd4, 0x11, 0xda, 0x93, - 0xd1, 0x11, 0xda, 0x94, 0xd4, 0x11, 0xda, 0x94, 0xd3, 0x11, 0xdb, 0x94, - 0xd4, 0x11, 0xdb, 0x94, 0xd3, 0x11, 0xdb, 0x94, 0xd4, 0x11, 0xdb, 0x95, - 0xd6, 0x11, 0xdc, 0x95, 0xd6, 0x11, 0xdc, 0x95, 0xd6, 0x11, 0xdc, 0x95, - 0xd6, 0x11, 0xdd, 0x95, 0xd6, 0x11, 0xdd, 0x95, 0xd6, 0x11, 0xdd, 0x95, - 0xd6, 0x11, 0xdd, 0x95, 0xd6, 0x11, 0xde, 0x95, 0xd6, 0x11, 0xde, 0x95, - 0xd6, 0x11, 0xde, 0x96, 0xd9, 0x11, 0xde, 0x95, 0xd6, 0x11, 0xdf, 0x96, - 0xd9, 0x11, 0xdf, 0x95, 0xd6, 0x11, 0xdf, 0x96, 0xd9, 0x11, 0xdf, 0x95, - 0xd6, 0x11, 0xe0, 0x96, 0xd9, 0x11, 0xe0, 0x96, 0xd9, 0x11, 0xe0, 0x96, - 0xd9, 0x11, 0xe1, 0x97, 0xdb, 0x11, 0xe1, 0x96, 0xd9, 0x11, 0xe1, 0x97, - 0xdb, 0x11, 0xe1, 0x96, 0xd9, 0x11, 0xe2, 0x97, 0xdb, 0x11, 0xe2, 0x96, - 0xd9, 0x11, 0xe2, 0x97, 0xdb, 0x11, 0xe2, 0x97, 0xdb, 0x11, 0xe3, 0x97, - 0xdb, 0x11, 0xe3, 0x98, 0xde, 0x11, 0xe3, 0x98, 0xde, 0x11, 0xe3, 0x98, - 0xde, 0x11, 0xe4, 0x98, 0xde, 0x11, 0xe4, 0x98, 0xde, 0x11, 0xe4, 0x98, - 0xde, 0x11, 0xe4, 0x98, 0xde, 0x11, 0xe5, 0x98, 0xde, 0x11, 0xe5, 0x98, - 0xde, 0x11, 0xe5, 0x98, 0xde, 0x11, 0xe5, 0x98, 0xde, 0x11, 0xe6, 0x98, - 0xde, 0x11, 0xe6, 0x98, 0xe0, 0x11, 0xe6, 0x98, 0xde, 0x11, 0xe6, 0x98, - 0xe0, 0x11, 0xe7, 0x98, 0xde, 0x11, 0xe7, 0x98, 0xe0, 0x11, 0xe7, 0x98, - 0xe0, 0x11, 0xe7, 0x98, 0xe0, 0x11, 0xe8, 0x98, 0xe0, 0x11, 0xe8, 0x98, - 0xe0, 0x11, 0xe8, 0x99, 0xe3, 0x11, 0xe8, 0x98, 0xe0, 0x11, 0xe9, 0x99, - 0xe3, 0x11, 0xe9, 0x98, 0xe0, 0x11, 0xe9, 0x99, 0xe3, 0x11, 0xe9, 0x98, - 0xe0, 0x11, 0xea, 0x99, 0xe3, 0x11, 0xea, 0x99, 0xe2, 0x11, 0xea, 0x99, - 0xe3, 0x11, 0xea, 0x9a, 0xe5, 0x11, 0xeb, 0x9a, 0xe5, 0x11, 0xeb, 0x9a, - 0xe5, 0x11, 0xeb, 0x9a, 0xe5, 0x11, 0xeb, 0x9a, 0xe5, 0x11, 0xec, 0x9a, - 0xe5, 0x11, 0xec, 0x9a, 0xe5, 0x11, 0xec, 0x9a, 0xe5, 0x11, 0xec, 0x9a, - 0xe5, 0x11, 0xec, 0x9a, 0xe5, 0x11, 0xed, 0x9b, 0xe7, 0x11, 0xed, 0x9a, - 0xe5, 0x11, 0xed, 0x9b, 0xe7, 0x11, 0xed, 0x9a, 0xe5, 0x11, 0xee, 0x9b, - 0xe7, 0x11, 0xee, 0x9a, 0xe5, 0x11, 0xee, 0x9b, 0xe7, 0x11, 0xee, 0x9b, - 0xe7, 0x11, 0xef, 0x9b, 0xe7, 0x11, 0xef, 0x9b, 0xe7, 0x11, 0xef, 0x9b, - 0xe7, 0x11, 0xef, 0x9c, 0xea, 0x11, 0xf0, 0x9c, 0xea, 0x11, 0xf0, 0x9c, - 0xea, 0x11, 0xf0, 0x9c, 0xea, 0x11, 0xf0, 0x9c, 0xea, 0x11, 0xf1, 0x9c, - 0xea, 0x11, 0xf1, 0x9c, 0xea, 0x11, 0xf1, 0x9c, 0xea, 0x11, 0xf1, 0x9c, - 0xea, 0x11, 0xf2, 0x9c, 0xea, 0x11, 0xf2, 0x9d, 0xec, 0x11, 0xf2, 0x9c, - 0xea, 0x11, 0xf2, 0x9d, 0xec, 0x11, 0xf2, 0x9c, 0xea, 0x11, 0xf3, 0x9d, - 0xec, 0x11, 0xf3, 0x9c, 0xea, 0x11, 0xf3, 0x9d, 0xec, 0x11, 0xf3, 0x9d, - 0xec, 0x11, 0xf4, 0x9d, 0xec, 0x11, 0xf4, 0x9d, 0xee, 0x11, 0xf4, 0x9d, - 0xec, 0x11, 0xf4, 0x9d, 0xee, 0x11, 0xf5, 0x9d, 0xec, 0x11, 0xf5, 0x9d, - 0xee, 0x11, 0xf5, 0x9d, 0xec, 0x11, 0xf5, 0x9d, 0xee, 0x11, 0xf5, 0x9d, - 0xee, 0x11, 0xf6, 0x9d, 0xee, 0x11, 0xf6, 0x9e, 0xf0, 0x11, 0xf6, 0x9e, - 0xf1, 0x11, 0xf6, 0x9e, 0xf0, 0x11, 0xf7, 0x9e, 0xf1, 0x11, 0xf7, 0x9e, - 0xf0, 0x11, 0xf7, 0x9e, 0xf1, 0x11, 0xf7, 0x9e, 0xf0, 0x11, 0xf8, 0x9e, - 0xf1, 0x11, 0xf8, 0x9e, 0xf0, 0x11, 0xf8, 0x9e, 0xf1, 0x11, 0xf8, 0x9f, - 0xf3, 0x11, 0xf8, 0x9e, 0xf1, 0x11, 0xf9, 0x9f, 0xf3, 0x11, 0xf9, 0x9e, - 0xf1, 0x11, 0xf9, 0x9f, 0xf3, 0x11, 0xf9, 0x9e, 0xf1, 0x11, 0xfa, 0x9f, - 0xf3, 0x11, 0xfa, 0x9f, 0xf2, 0x11, 0xfa, 0x9f, 0xf3, 0x11, 0xfa, 0xa0, - 0xf5, 0x11, 0xfa, 0x9f, 0xf3, 0x11, 0xfb, 0xa0, 0xf5, 0x11, 0xfb, 0x9f, - 0xf3, 0x11, 0xfb, 0xa0, 0xf5, 0x11, 0xfb, 0x9f, 0xf3, 0x11, 0xfc, 0xa0, - 0xf5, 0x11, 0xfc, 0x9f, 0xf3, 0x11, 0xfc, 0xa0, 0xf5, 0x11, 0xfc, 0xa0, - 0xf5, 0x11, 0xfc, 0xa0, 0xf5, 0x11, 0xfd, 0xa1, 0xf7, 0x11, 0xfd, 0xa1, - 0xf7, 0x11, 0xfd, 0xa1, 0xf7, 0x11, 0xfd, 0xa1, 0xf7, 0x11, 0xfe, 0xa1, - 0xf7, 0x11, 0xfe, 0xa1, 0xf7, 0x11, 0xfe, 0xa1, 0xf7, 0x11, 0xfe, 0xa1, - 0xf7, 0x11, 0xfe, 0xa1, 0xf7, 0x11, 0xff, 0xa1, 0xf7, 0x11, 0xff, 0xa1, - 0xf9, 0x11, 0x03, 0x83, 0x9b, 0x11, 0x0a, 0x83, 0x9b, 0x11, 0x0f, 0x83, - 0x9b, 0x11, 0x14, 0x83, 0x9b, 0x11, 0x17, 0x83, 0x9b, 0x11, 0x1b, 0x83, - 0x9b, 0x11, 0x1e, 0x83, 0x9b, 0x11, 0x20, 0x83, 0x9c, 0x11, 0x23, 0x83, - 0x9b, 0x11, 0x25, 0x83, 0x9c, 0x11, 0x27, 0x83, 0x9b, 0x11, 0x29, 0x83, - 0x9c, 0x11, 0x2b, 0x83, 0x9b, 0x11, 0x2d, 0x83, 0x9c, 0x11, 0x2f, 0x83, - 0x9b, 0x11, 0x31, 0x83, 0x9c, 0x11, 0x32, 0x83, 0x9b, 0x11, 0x34, 0x83, - 0x9c, 0x11, 0x35, 0x83, 0x9b, 0x11, 0x37, 0x83, 0x9c, 0x11, 0x38, 0x83, - 0x9b, 0x11, 0x3a, 0x83, 0x9c, 0x11, 0x3b, 0x83, 0x9b, 0x11, 0x3c, 0x83, - 0x9c, 0x11, 0x3e, 0x83, 0x9b, 0x11, 0x3f, 0x83, 0x9c, 0x11, 0x40, 0x83, - 0x9b, 0x11, 0x42, 0x83, 0x9c, 0x11, 0x43, 0x83, 0x9b, 0x11, 0x44, 0x83, - 0x9c, 0x11, 0x45, 0x83, 0x9b, 0x11, 0x46, 0x83, 0x9c, 0x11, 0x47, 0x83, - 0x9b, 0x11, 0x48, 0x83, 0x9c, 0x11, 0x49, 0x83, 0x9b, 0x11, 0x4a, 0x83, - 0x9c, 0x11, 0x4b, 0x83, 0x9b, 0x11, 0x4c, 0x83, 0x9c, 0x11, 0x4d, 0x83, - 0x9b, 0x11, 0x4e, 0x83, 0x9c, 0x11, 0x4f, 0x83, 0x9b, 0x11, 0x50, 0x83, - 0x9c, 0x11, 0x51, 0x83, 0x9b, 0x11, 0x52, 0x83, 0x9c, 0x11, 0x53, 0x83, - 0x9b, 0x11, 0x54, 0x83, 0x9c, 0x11, 0x55, 0x83, 0x9b, 0x11, 0x56, 0x83, - 0x9c, 0x11, 0x57, 0x83, 0x9b, 0x11, 0x58, 0x83, 0x9c, 0x11, 0x58, 0x83, - 0x9b, 0x11, 0x59, 0x83, 0x9c, 0x11, 0x5a, 0x83, 0x9b, 0x11, 0x5b, 0x83, - 0x9c, 0x11, 0x5c, 0x83, 0x9b, 0x11, 0x5d, 0x83, 0x9c, 0x11, 0x5d, 0x83, - 0x9b, 0x11, 0x5e, 0x83, 0x9c, 0x11, 0x5f, 0x83, 0x9b, 0x11, 0x60, 0x83, - 0x9c, 0x11, 0x60, 0x83, 0x9b, 0x11, 0x61, 0x83, 0x9c, 0x11, 0x62, 0x83, - 0x9b, 0x11, 0x63, 0x83, 0x9c, 0x11, 0x63, 0x83, 0x9b, 0x11, 0x64, 0x83, - 0x9c, 0x11, 0x65, 0x83, 0x9b, 0x11, 0x66, 0x83, 0x9c, 0x11, 0x66, 0x83, - 0x9b, 0x11, 0x67, 0x83, 0x9c, 0x11, 0x68, 0x83, 0x9b, 0x11, 0x68, 0x83, - 0x9c, 0x11, 0x69, 0x83, 0x9b, 0x11, 0x6a, 0x83, 0x9c, 0x11, 0x6a, 0x83, - 0x9b, 0x11, 0x6b, 0x83, 0x9c, 0x11, 0x6c, 0x83, 0x9b, 0x11, 0x6c, 0x83, - 0x9c, 0x11, 0x6d, 0x83, 0x9b, 0x11, 0x6e, 0x83, 0x9c, 0x11, 0x6e, 0x83, - 0x9b, 0x11, 0x6f, 0x83, 0x9c, 0x11, 0x70, 0x83, 0x9b, 0x11, 0x70, 0x83, - 0x9c, 0x11, 0x71, 0x83, 0x9b, 0x11, 0x72, 0x83, 0x9c, 0x11, 0x72, 0x83, - 0x9b, 0x11, 0x73, 0x83, 0x9c, 0x11, 0x73, 0x83, 0x9b, 0x11, 0x74, 0x83, - 0x9c, 0x11, 0x75, 0x83, 0x9b, 0x11, 0x75, 0x83, 0x9c, 0x11, 0x76, 0x83, - 0x9b, 0x11, 0x76, 0x83, 0x9c, 0x11, 0x77, 0x83, 0x9b, 0x11, 0x78, 0x83, - 0x9c, 0x11, 0x78, 0x83, 0x9b, 0x11, 0x79, 0x83, 0x9c, 0x11, 0x79, 0x83, - 0x9b, 0x11, 0x7a, 0x83, 0x9c, 0x11, 0x7a, 0x83, 0x9b, 0x11, 0x7b, 0x83, - 0x9c, 0x11, 0x7c, 0x83, 0x9b, 0x11, 0x7c, 0x83, 0x9c, 0x11, 0x7d, 0x83, - 0x9b, 0x11, 0x7d, 0x83, 0x9c, 0x11, 0x7e, 0x83, 0x9b, 0x11, 0x7e, 0x83, - 0x9c, 0x11, 0x7f, 0x83, 0x9b, 0x11, 0x7f, 0x83, 0x9c, 0x11, 0x80, 0x83, - 0x9b, 0x11, 0x81, 0x83, 0x9c, 0x11, 0x81, 0x83, 0x9b, 0x11, 0x82, 0x83, - 0x9c, 0x11, 0x82, 0x83, 0x9b, 0x11, 0x83, 0x83, 0x9c, 0x11, 0x83, 0x83, - 0x9b, 0x11, 0x84, 0x83, 0x9c, 0x11, 0x84, 0x83, 0x9b, 0x11, 0x85, 0x83, - 0x9c, 0x11, 0x85, 0x83, 0x9b, 0x11, 0x86, 0x83, 0x9c, 0x11, 0x86, 0x83, - 0x9b, 0x11, 0x87, 0x83, 0x9c, 0x11, 0x87, 0x83, 0x9b, 0x11, 0x88, 0x83, - 0x9c, 0x11, 0x88, 0x83, 0x9b, 0x11, 0x89, 0x83, 0x9c, 0x11, 0x89, 0x83, - 0x9b, 0x11, 0x8a, 0x83, 0x9c, 0x11, 0x8a, 0x83, 0x9b, 0x11, 0x8b, 0x83, - 0x9c, 0x11, 0x8b, 0x83, 0x9b, 0x11, 0x8c, 0x83, 0x9c, 0x11, 0x8c, 0x83, - 0x9b, 0x11, 0x8d, 0x83, 0x9c, 0x11, 0x8d, 0x83, 0x9b, 0x11, 0x8e, 0x83, - 0x9c, 0x11, 0x8e, 0x83, 0x9b, 0x11, 0x8e, 0x83, 0x9c, 0x11, 0x8f, 0x83, - 0x9b, 0x11, 0x8f, 0x83, 0x9c, 0x11, 0x90, 0x83, 0x9b, 0x11, 0x90, 0x83, - 0x9c, 0x11, 0x91, 0x83, 0x9b, 0x11, 0x91, 0x83, 0x9c, 0x11, 0x92, 0x83, - 0x9b, 0x11, 0x92, 0x83, 0x9c, 0x11, 0x93, 0x83, 0x9b, 0x11, 0x93, 0x83, - 0x9c, 0x11, 0x94, 0x83, 0x9b, 0x11, 0x94, 0x83, 0x9c, 0x11, 0x94, 0x83, - 0x9b, 0x11, 0x95, 0x83, 0x9c, 0x11, 0x95, 0x83, 0x9b, 0x11, 0x96, 0x83, - 0x9c, 0x11, 0x96, 0x83, 0x9b, 0x11, 0x97, 0x83, 0x9c, 0x11, 0x97, 0x83, - 0x9b, 0x11, 0x98, 0x83, 0x9c, 0x11, 0x98, 0x83, 0x9b, 0x11, 0x98, 0x83, - 0x9c, 0x11, 0x99, 0x83, 0x9b, 0x11, 0x99, 0x83, 0x9c, 0x11, 0x9a, 0x83, - 0x9b, 0x11, 0x9a, 0x83, 0x9c, 0x11, 0x9a, 0x83, 0x9b, 0x11, 0x9b, 0x83, - 0x9c, 0x11, 0x9b, 0x83, 0x9b, 0x11, 0x9c, 0x83, 0x9c, 0x11, 0x9c, 0x83, - 0x9c, 0x11, 0x9d, 0x83, 0x9d, 0x11, 0x9d, 0x83, 0x9c, 0x11, 0x9d, 0x83, - 0x9d, 0x11, 0x9e, 0x83, 0x9c, 0x11, 0x9e, 0x83, 0x9d, 0x11, 0x9f, 0x83, - 0x9c, 0x11, 0x9f, 0x83, 0x9d, 0x11, 0x9f, 0x83, 0x9c, 0x11, 0xa0, 0x83, - 0x9d, 0x11, 0xa0, 0x83, 0x9c, 0x11, 0xa1, 0x83, 0x9d, 0x11, 0xa1, 0x83, - 0x9c, 0x11, 0xa1, 0x83, 0x9d, 0x11, 0xa2, 0x83, 0x9c, 0x11, 0xa2, 0x83, - 0x9d, 0x11, 0xa3, 0x83, 0x9c, 0x11, 0xa3, 0x83, 0x9d, 0x11, 0xa3, 0x83, - 0x9c, 0x11, 0xa4, 0x83, 0x9d, 0x11, 0xa4, 0x83, 0x9c, 0x11, 0xa5, 0x83, - 0x9d, 0x11, 0xa5, 0x84, 0xa0, 0x11, 0xa5, 0x84, 0xa1, 0x11, 0xa6, 0x84, - 0xa0, 0x11, 0xa6, 0x84, 0xa1, 0x11, 0xa6, 0x84, 0xa0, 0x11, 0xa7, 0x84, - 0xa1, 0x11, 0xa7, 0x84, 0xa0, 0x11, 0xa8, 0x84, 0xa1, 0x11, 0xa8, 0x84, - 0xa0, 0x11, 0xa8, 0x84, 0xa1, 0x11, 0xa9, 0x85, 0xa4, 0x11, 0xa9, 0x84, - 0xa1, 0x11, 0xaa, 0x85, 0xa4, 0x11, 0xaa, 0x84, 0xa1, 0x11, 0xaa, 0x85, - 0xa4, 0x11, 0xab, 0x85, 0xa4, 0x11, 0xab, 0x85, 0xa4, 0x11, 0xab, 0x85, - 0xa4, 0x11, 0xac, 0x85, 0xa4, 0x11, 0xac, 0x85, 0xa4, 0x11, 0xac, 0x85, - 0xa4, 0x11, 0xad, 0x86, 0xa8, 0x11, 0xad, 0x85, 0xa4, 0x11, 0xae, 0x86, - 0xa8, 0x11, 0xae, 0x86, 0xa7, 0x11, 0xae, 0x86, 0xa8, 0x11, 0xaf, 0x86, - 0xa7, 0x11, 0xaf, 0x86, 0xa8, 0x11, 0xaf, 0x86, 0xa7, 0x11, 0xb0, 0x86, - 0xa8, 0x11, 0xb0, 0x87, 0xab, 0x11, 0xb0, 0x87, 0xab, 0x11, 0xb1, 0x87, - 0xab, 0x11, 0xb1, 0x87, 0xab, 0x11, 0xb2, 0x87, 0xab, 0x11, 0xb2, 0x87, - 0xab, 0x11, 0xb2, 0x87, 0xab, 0x11, 0xb3, 0x87, 0xab, 0x11, 0xb3, 0x87, - 0xab, 0x11, 0xb3, 0x87, 0xab, 0x11, 0xb4, 0x88, 0xaf, 0x11, 0xb4, 0x87, - 0xab, 0x11, 0xb4, 0x88, 0xaf, 0x11, 0xb5, 0x87, 0xab, 0x11, 0xb5, 0x88, - 0xaf, 0x11, 0xb5, 0x88, 0xae, 0x11, 0xb6, 0x88, 0xaf, 0x11, 0xb6, 0x88, - 0xae, 0x11, 0xb6, 0x88, 0xaf, 0x11, 0xb7, 0x89, 0xb2, 0x11, 0xb7, 0x89, - 0xb2, 0x11, 0xb7, 0x89, 0xb2, 0x11, 0xb8, 0x89, 0xb2, 0x11, 0xb8, 0x89, - 0xb2, 0x11, 0xb8, 0x89, 0xb2, 0x11, 0xb9, 0x89, 0xb2, 0x11, 0xb9, 0x89, - 0xb2, 0x11, 0xb9, 0x89, 0xb2, 0x11, 0xba, 0x89, 0xb2, 0x11, 0xba, 0x89, - 0xb2, 0x11, 0xba, 0x89, 0xb2, 0x11, 0xbb, 0x8a, 0xb5, 0x11, 0xbb, 0x89, - 0xb2, 0x11, 0xbb, 0x8a, 0xb5, 0x11, 0xbc, 0x8a, 0xb5, 0x11, 0xbc, 0x8a, - 0xb5, 0x11, 0xbc, 0x8a, 0xb5, 0x11, 0xbd, 0x8a, 0xb5, 0x11, 0xbd, 0x8a, - 0xb5, 0x11, 0xbd, 0x8a, 0xb5, 0x11, 0xbe, 0x8b, 0xb8, 0x11, 0xbe, 0x8a, - 0xb5, 0x11, 0xbe, 0x8b, 0xb8, 0x11, 0xbf, 0x8a, 0xb5, 0x11, 0xbf, 0x8b, - 0xb8, 0x11, 0xbf, 0x8b, 0xb8, 0x11, 0xc0, 0x8b, 0xb8, 0x11, 0xc0, 0x8b, - 0xb8, 0x11, 0xc0, 0x8b, 0xb8, 0x11, 0xc1, 0x8c, 0xbb, 0x11, 0xc1, 0x8c, - 0xbc, 0x11, 0xc1, 0x8c, 0xbb, 0x11, 0xc1, 0x8c, 0xbc, 0x11, 0xc2, 0x8c, - 0xbb, 0x11, 0xc2, 0x8c, 0xbc, 0x11, 0xc2, 0x8c, 0xbb, 0x11, 0xc3, 0x8c, - 0xbc, 0x11, 0xc3, 0x8c, 0xbb, 0x11, 0xc3, 0x8c, 0xbc, 0x11, 0xc4, 0x8d, - 0xbf, 0x11, 0xc4, 0x8c, 0xbc, 0x11, 0xc4, 0x8d, 0xbf, 0x11, 0xc5, 0x8c, - 0xbc, 0x11, 0xc5, 0x8d, 0xbf, 0x11, 0xc5, 0x8d, 0xbe, 0x11, 0xc6, 0x8d, - 0xbf, 0x11, 0xc6, 0x8d, 0xbe, 0x11, 0xc6, 0x8d, 0xbf, 0x11, 0xc6, 0x8e, - 0xc1, 0x11, 0xc7, 0x8d, 0xbf, 0x11, 0xc7, 0x8e, 0xc1, 0x11, 0xc7, 0x8d, - 0xbf, 0x11, 0xc8, 0x8e, 0xc1, 0x11, 0xc8, 0x8e, 0xc1, 0x11, 0xc8, 0x8e, - 0xc1, 0x11, 0xc9, 0x8e, 0xc1, 0x11, 0xc9, 0x8e, 0xc1, 0x11, 0xc9, 0x8f, - 0xc4, 0x11, 0xc9, 0x8f, 0xc5, 0x11, 0xca, 0x8f, 0xc4, 0x11, 0xca, 0x8f, - 0xc5, 0x11, 0xca, 0x8f, 0xc4, 0x11, 0xcb, 0x8f, 0xc5, 0x11, 0xcb, 0x8f, - 0xc4, 0x11, 0xcb, 0x8f, 0xc5, 0x11, 0xcc, 0x8f, 0xc4, 0x11, 0xcc, 0x8f, - 0xc5, 0x11, 0xcc, 0x8f, 0xc4, 0x11, 0xcc, 0x8f, 0xc5, 0x11, 0xcd, 0x90, - 0xc7, 0x11, 0xcd, 0x8f, 0xc5, 0x11, 0xcd, 0x90, 0xc7, 0x11, 0xce, 0x8f, - 0xc5, 0x11, 0xce, 0x90, 0xc7, 0x11, 0xce, 0x90, 0xc7, 0x11, 0xce, 0x90, - 0xc7, 0x11, 0xcf, 0x90, 0xc7, 0x11, 0xcf, 0x90, 0xc7, 0x11, 0xcf, 0x91, - 0xca, 0x11, 0xd0, 0x90, 0xc7, 0x11, 0xd0, 0x91, 0xca, 0x11, 0xd0, 0x90, - 0xc7, 0x11, 0xd0, 0x91, 0xca, 0x11, 0xd1, 0x91, 0xca, 0x11, 0xd1, 0x91, - 0xca, 0x11, 0xd1, 0x91, 0xca, 0x11, 0xd2, 0x91, 0xca, 0x11, 0xd2, 0x92, - 0xcd, 0x11, 0xd2, 0x92, 0xcd, 0x11, 0xd2, 0x92, 0xcd, 0x11, 0xd3, 0x92, - 0xcd, 0x11, 0xd3, 0x92, 0xcd, 0x11, 0xd3, 0x92, 0xcd, 0x11, 0xd4, 0x92, - 0xcd, 0x11, 0xd4, 0x92, 0xcd, 0x11, 0xd4, 0x92, 0xcd, 0x11, 0xd4, 0x92, - 0xcd, 0x11, 0xd5, 0x93, 0xd0, 0x11, 0xd5, 0x92, 0xcd, 0x11, 0xd5, 0x93, - 0xd0, 0x11, 0xd6, 0x92, 0xcd, 0x11, 0xd6, 0x93, 0xd0, 0x11, 0xd6, 0x92, - 0xcd, 0x11, 0xd6, 0x93, 0xd0, 0x11, 0xd7, 0x93, 0xcf, 0x11, 0xd7, 0x93, - 0xd0, 0x11, 0xd7, 0x93, 0xcf, 0x11, 0xd7, 0x93, 0xd0, 0x11, 0xd8, 0x94, - 0xd2, 0x11, 0xd8, 0x94, 0xd2, 0x11, 0xd8, 0x94, 0xd2, 0x11, 0xd9, 0x94, - 0xd2, 0x11, 0xd9, 0x94, 0xd2, 0x11, 0xd9, 0x94, 0xd2, 0x11, 0xd9, 0x94, - 0xd2, 0x11, 0xda, 0x94, 0xd2, 0x11, 0xda, 0x94, 0xd2, 0x11, 0xda, 0x94, - 0xd2, 0x11, 0xda, 0x94, 0xd5, 0x11, 0xdb, 0x94, 0xd2, 0x11, 0xdb, 0x94, - 0xd5, 0x11, 0xdb, 0x94, 0xd2, 0x11, 0xdb, 0x94, 0xd5, 0x11, 0xdc, 0x94, - 0xd5, 0x11, 0xdc, 0x94, 0xd5, 0x11, 0xdc, 0x94, 0xd5, 0x11, 0xdd, 0x94, - 0xd5, 0x11, 0xdd, 0x95, 0xd7, 0x11, 0xdd, 0x94, 0xd5, 0x11, 0xdd, 0x95, - 0xd7, 0x11, 0xde, 0x94, 0xd5, 0x11, 0xde, 0x95, 0xd7, 0x11, 0xde, 0x95, - 0xd7, 0x11, 0xde, 0x95, 0xd7, 0x11, 0xdf, 0x95, 0xd7, 0x11, 0xdf, 0x95, - 0xd7, 0x11, 0xdf, 0x96, 0xda, 0x11, 0xdf, 0x96, 0xda, 0x11, 0xe0, 0x96, - 0xda, 0x11, 0xe0, 0x96, 0xda, 0x11, 0xe0, 0x96, 0xda, 0x11, 0xe1, 0x96, - 0xda, 0x11, 0xe1, 0x96, 0xda, 0x11, 0xe1, 0x96, 0xda, 0x11, 0xe1, 0x96, - 0xda, 0x11, 0xe2, 0x96, 0xda, 0x11, 0xe2, 0x97, 0xdd, 0x11, 0xe2, 0x96, - 0xda, 0x11, 0xe2, 0x97, 0xdd, 0x11, 0xe3, 0x96, 0xda, 0x11, 0xe3, 0x97, - 0xdd, 0x11, 0xe3, 0x96, 0xda, 0x11, 0xe3, 0x97, 0xdd, 0x11, 0xe4, 0x97, - 0xdc, 0x11, 0xe4, 0x97, 0xdd, 0x11, 0xe4, 0x98, 0xdf, 0x11, 0xe4, 0x97, - 0xdd, 0x11, 0xe5, 0x98, 0xdf, 0x11, 0xe5, 0x97, 0xdd, 0x11, 0xe5, 0x98, - 0xdf, 0x11, 0xe5, 0x97, 0xdd, 0x11, 0xe6, 0x98, 0xdf, 0x11, 0xe6, 0x98, - 0xdf, 0x11, 0xe6, 0x98, 0xdf, 0x11, 0xe6, 0x98, 0xdf, 0x11, 0xe7, 0x98, - 0xdf, 0x11, 0xe7, 0x99, 0xe1, 0x11, 0xe7, 0x99, 0xe2, 0x11, 0xe7, 0x99, - 0xe1, 0x11, 0xe8, 0x99, 0xe2, 0x11, 0xe8, 0x99, 0xe1, 0x11, 0xe8, 0x99, - 0xe2, 0x11, 0xe8, 0x99, 0xe1, 0x11, 0xe9, 0x99, 0xe2, 0x11, 0xe9, 0x99, - 0xe1, 0x11, 0xe9, 0x99, 0xe2, 0x11, 0xe9, 0x9a, 0xe4, 0x11, 0xea, 0x99, - 0xe2, 0x11, 0xea, 0x9a, 0xe4, 0x11, 0xea, 0x99, 0xe2, 0x11, 0xea, 0x9a, - 0xe4, 0x11, 0xeb, 0x99, 0xe2, 0x11, 0xeb, 0x9a, 0xe4, 0x11, 0xeb, 0x9a, - 0xe4, 0x11, 0xeb, 0x9a, 0xe4, 0x11, 0xec, 0x9a, 0xe6, 0x11, 0xec, 0x9a, - 0xe4, 0x11, 0xec, 0x9a, 0xe6, 0x11, 0xec, 0x9a, 0xe4, 0x11, 0xec, 0x9a, - 0xe6, 0x11, 0xed, 0x9a, 0xe4, 0x11, 0xed, 0x9a, 0xe6, 0x11, 0xed, 0x9a, - 0xe6, 0x11, 0xed, 0x9a, 0xe6, 0x11, 0xee, 0x9b, 0xe8, 0x11, 0xee, 0x9b, - 0xe9, 0x11, 0xee, 0x9b, 0xe8, 0x11, 0xee, 0x9b, 0xe9, 0x11, 0xef, 0x9b, - 0xe8, 0x11, 0xef, 0x9b, 0xe9, 0x11, 0xef, 0x9b, 0xe8, 0x11, 0xef, 0x9b, - 0xe9, 0x11, 0xf0, 0x9b, 0xe8, 0x11, 0xf0, 0x9b, 0xe9, 0x11, 0xf0, 0x9b, - 0xe8, 0x11, 0xf0, 0x9b, 0xe9, 0x11, 0xf1, 0x9c, 0xeb, 0x11, 0xf1, 0x9b, - 0xe9, 0x11, 0xf1, 0x9c, 0xeb, 0x11, 0xf1, 0x9b, 0xe9, 0x11, 0xf2, 0x9c, - 0xeb, 0x11, 0xf2, 0x9c, 0xeb, 0x11, 0xf2, 0x9c, 0xeb, 0x11, 0xf2, 0x9c, - 0xeb, 0x11, 0xf2, 0x9c, 0xeb, 0x11, 0xf3, 0x9d, 0xed, 0x11, 0xf3, 0x9d, - 0xed, 0x11, 0xf3, 0x9d, 0xed, 0x11, 0xf3, 0x9d, 0xed, 0x11, 0xf4, 0x9d, - 0xed, 0x11, 0xf4, 0x9d, 0xed, 0x11, 0xf4, 0x9d, 0xed, 0x11, 0xf4, 0x9d, - 0xed, 0x11, 0xf5, 0x9d, 0xed, 0x11, 0xf5, 0x9d, 0xed, 0x11, 0xf5, 0x9e, - 0xef, 0x11, 0xf5, 0x9d, 0xed, 0x11, 0xf5, 0x9e, 0xef, 0x11, 0xf6, 0x9d, - 0xed, 0x11, 0xf6, 0x9e, 0xef, 0x11, 0xf6, 0x9d, 0xed, 0x11, 0xf6, 0x9e, - 0xef, 0x11, 0xf7, 0x9e, 0xef, 0x11, 0xf7, 0x9e, 0xef, 0x11, 0xf7, 0x9f, - 0xf2, 0x11, 0xf7, 0x9e, 0xef, 0x11, 0xf8, 0x9f, 0xf2, 0x11, 0xf8, 0x9e, - 0xef, 0x11, 0xf8, 0x9f, 0xf2, 0x11, 0xf8, 0x9e, 0xef, 0x11, 0xf8, 0x9f, - 0xf2, 0x11, 0xf9, 0x9f, 0xf1, 0x11, 0xf9, 0x9f, 0xf2, 0x11, 0xf9, 0x9f, - 0xf4, 0x11, 0xf9, 0x9f, 0xf4, 0x11, 0xfa, 0x9f, 0xf4, 0x11, 0xfa, 0x9f, - 0xf4, 0x11, 0xfa, 0x9f, 0xf4, 0x11, 0xfa, 0x9f, 0xf4, 0x11, 0xfa, 0x9f, - 0xf4, 0x11, 0xfb, 0x9f, 0xf4, 0x11, 0xfb, 0x9f, 0xf4, 0x11, 0xfb, 0x9f, - 0xf4, 0x11, 0xfb, 0xa0, 0xf6, 0x11, 0xfc, 0x9f, 0xf4, 0x11, 0xfc, 0xa0, - 0xf6, 0x11, 0xfc, 0x9f, 0xf4, 0x11, 0xfc, 0xa0, 0xf6, 0x11, 0xfc, 0x9f, - 0xf4, 0x11, 0xfd, 0xa0, 0xf6, 0x11, 0xfd, 0x9f, 0xf4, 0x11, 0xfd, 0xa0, - 0xf6, 0x11, 0xfd, 0xa0, 0xf6, 0x11, 0xfe, 0xa0, 0xf6, 0x11, 0xfe, 0xa0, - 0xf6, 0x11, 0xfe, 0xa0, 0xf6, 0x11, 0xfe, 0xa0, 0xf6, 0x11, 0xfe, 0xa0, - 0xf6, 0x11, 0xff, 0xa1, 0xf8, 0x11, 0xff, 0xa0, 0xf6, 0x11, 0x03, 0x84, - 0x9b, 0x12, 0x0a, 0x84, 0x9b, 0x12, 0x0f, 0x84, 0x9b, 0x12, 0x14, 0x84, - 0x9b, 0x12, 0x17, 0x84, 0x9b, 0x12, 0x1b, 0x84, 0x9b, 0x12, 0x1e, 0x84, - 0x9b, 0x12, 0x20, 0x84, 0x9c, 0x12, 0x23, 0x84, 0x9b, 0x12, 0x25, 0x84, - 0x9c, 0x12, 0x27, 0x84, 0x9b, 0x12, 0x29, 0x84, 0x9c, 0x12, 0x2b, 0x84, - 0x9b, 0x12, 0x2d, 0x84, 0x9c, 0x12, 0x2f, 0x84, 0x9b, 0x12, 0x31, 0x84, - 0x9c, 0x12, 0x32, 0x84, 0x9b, 0x12, 0x34, 0x84, 0x9c, 0x12, 0x35, 0x84, - 0x9b, 0x12, 0x37, 0x84, 0x9c, 0x12, 0x38, 0x84, 0x9b, 0x12, 0x3a, 0x84, - 0x9c, 0x12, 0x3b, 0x84, 0x9b, 0x12, 0x3c, 0x84, 0x9c, 0x12, 0x3e, 0x84, - 0x9b, 0x12, 0x3f, 0x84, 0x9c, 0x12, 0x40, 0x84, 0x9b, 0x12, 0x42, 0x84, - 0x9c, 0x12, 0x43, 0x84, 0x9b, 0x12, 0x44, 0x84, 0x9c, 0x12, 0x45, 0x84, - 0x9b, 0x12, 0x46, 0x84, 0x9c, 0x12, 0x47, 0x84, 0x9b, 0x12, 0x48, 0x84, - 0x9c, 0x12, 0x49, 0x84, 0x9b, 0x12, 0x4a, 0x84, 0x9c, 0x12, 0x4b, 0x84, - 0x9b, 0x12, 0x4c, 0x84, 0x9c, 0x12, 0x4d, 0x84, 0x9b, 0x12, 0x4e, 0x84, - 0x9c, 0x12, 0x4f, 0x84, 0x9b, 0x12, 0x50, 0x84, 0x9c, 0x12, 0x51, 0x84, - 0x9b, 0x12, 0x52, 0x84, 0x9c, 0x12, 0x53, 0x84, 0x9b, 0x12, 0x54, 0x84, - 0x9c, 0x12, 0x55, 0x84, 0x9b, 0x12, 0x56, 0x84, 0x9c, 0x12, 0x57, 0x84, - 0x9b, 0x12, 0x58, 0x84, 0x9c, 0x12, 0x58, 0x84, 0x9b, 0x12, 0x59, 0x84, - 0x9c, 0x12, 0x5a, 0x84, 0x9b, 0x12, 0x5b, 0x84, 0x9c, 0x12, 0x5c, 0x84, - 0x9b, 0x12, 0x5d, 0x84, 0x9c, 0x12, 0x5d, 0x84, 0x9b, 0x12, 0x5e, 0x84, - 0x9c, 0x12, 0x5f, 0x84, 0x9b, 0x12, 0x60, 0x84, 0x9c, 0x12, 0x60, 0x84, - 0x9b, 0x12, 0x61, 0x84, 0x9c, 0x12, 0x62, 0x84, 0x9b, 0x12, 0x63, 0x84, - 0x9c, 0x12, 0x63, 0x84, 0x9b, 0x12, 0x64, 0x84, 0x9c, 0x12, 0x65, 0x84, - 0x9b, 0x12, 0x66, 0x84, 0x9c, 0x12, 0x66, 0x84, 0x9b, 0x12, 0x67, 0x84, - 0x9c, 0x12, 0x68, 0x84, 0x9b, 0x12, 0x68, 0x84, 0x9c, 0x12, 0x69, 0x84, - 0x9b, 0x12, 0x6a, 0x84, 0x9c, 0x12, 0x6a, 0x84, 0x9b, 0x12, 0x6b, 0x84, - 0x9c, 0x12, 0x6c, 0x84, 0x9b, 0x12, 0x6c, 0x84, 0x9c, 0x12, 0x6d, 0x84, - 0x9b, 0x12, 0x6e, 0x84, 0x9c, 0x12, 0x6e, 0x84, 0x9b, 0x12, 0x6f, 0x84, - 0x9c, 0x12, 0x70, 0x84, 0x9b, 0x12, 0x70, 0x84, 0x9c, 0x12, 0x71, 0x84, - 0x9b, 0x12, 0x72, 0x84, 0x9c, 0x12, 0x72, 0x84, 0x9b, 0x12, 0x73, 0x84, - 0x9c, 0x12, 0x73, 0x84, 0x9b, 0x12, 0x74, 0x84, 0x9c, 0x12, 0x75, 0x84, - 0x9b, 0x12, 0x75, 0x84, 0x9c, 0x12, 0x76, 0x84, 0x9b, 0x12, 0x76, 0x84, - 0x9c, 0x12, 0x77, 0x84, 0x9b, 0x12, 0x78, 0x84, 0x9c, 0x12, 0x78, 0x84, - 0x9b, 0x12, 0x79, 0x84, 0x9c, 0x12, 0x79, 0x84, 0x9b, 0x12, 0x7a, 0x84, - 0x9c, 0x12, 0x7a, 0x84, 0x9b, 0x12, 0x7b, 0x84, 0x9c, 0x12, 0x7c, 0x84, - 0x9b, 0x12, 0x7c, 0x84, 0x9c, 0x12, 0x7d, 0x84, 0x9b, 0x12, 0x7d, 0x84, - 0x9c, 0x12, 0x7e, 0x84, 0x9b, 0x12, 0x7e, 0x84, 0x9c, 0x12, 0x7f, 0x84, - 0x9b, 0x12, 0x7f, 0x84, 0x9c, 0x12, 0x80, 0x84, 0x9b, 0x12, 0x81, 0x84, - 0x9c, 0x12, 0x81, 0x84, 0x9b, 0x12, 0x82, 0x84, 0x9c, 0x12, 0x82, 0x84, - 0x9b, 0x12, 0x83, 0x84, 0x9c, 0x12, 0x83, 0x84, 0x9b, 0x12, 0x84, 0x84, - 0x9c, 0x12, 0x84, 0x84, 0x9b, 0x12, 0x85, 0x84, 0x9c, 0x12, 0x85, 0x84, - 0x9b, 0x12, 0x86, 0x84, 0x9c, 0x12, 0x86, 0x84, 0x9b, 0x12, 0x87, 0x84, - 0x9c, 0x12, 0x87, 0x84, 0x9b, 0x12, 0x88, 0x84, 0x9c, 0x12, 0x88, 0x84, - 0x9b, 0x12, 0x89, 0x84, 0x9c, 0x12, 0x89, 0x84, 0x9b, 0x12, 0x8a, 0x84, - 0x9c, 0x12, 0x8a, 0x84, 0x9b, 0x12, 0x8b, 0x84, 0x9c, 0x12, 0x8b, 0x84, - 0x9b, 0x12, 0x8c, 0x84, 0x9c, 0x12, 0x8c, 0x84, 0x9b, 0x12, 0x8d, 0x84, - 0x9c, 0x12, 0x8d, 0x84, 0x9b, 0x12, 0x8e, 0x84, 0x9c, 0x12, 0x8e, 0x84, - 0x9b, 0x12, 0x8e, 0x84, 0x9c, 0x12, 0x8f, 0x84, 0x9b, 0x12, 0x8f, 0x84, - 0x9c, 0x12, 0x90, 0x84, 0x9b, 0x12, 0x90, 0x84, 0x9c, 0x12, 0x91, 0x84, - 0x9b, 0x12, 0x91, 0x84, 0x9c, 0x12, 0x92, 0x84, 0x9b, 0x12, 0x92, 0x84, - 0x9c, 0x12, 0x93, 0x84, 0x9b, 0x12, 0x93, 0x84, 0x9c, 0x12, 0x94, 0x84, - 0x9b, 0x12, 0x94, 0x84, 0x9c, 0x12, 0x94, 0x84, 0x9b, 0x12, 0x95, 0x84, - 0x9c, 0x12, 0x95, 0x84, 0x9b, 0x12, 0x96, 0x84, 0x9c, 0x12, 0x96, 0x84, - 0x9b, 0x12, 0x97, 0x84, 0x9c, 0x12, 0x97, 0x84, 0x9b, 0x12, 0x98, 0x84, - 0x9c, 0x12, 0x98, 0x84, 0x9b, 0x12, 0x98, 0x84, 0x9c, 0x12, 0x99, 0x84, - 0x9b, 0x12, 0x99, 0x84, 0x9c, 0x12, 0x9a, 0x84, 0x9b, 0x12, 0x9a, 0x84, - 0x9c, 0x12, 0x9a, 0x84, 0x9b, 0x12, 0x9b, 0x84, 0x9c, 0x12, 0x9b, 0x84, - 0x9b, 0x12, 0x9c, 0x84, 0x9c, 0x12, 0x9c, 0x84, 0x9c, 0x12, 0x9d, 0x84, - 0x9d, 0x12, 0x9d, 0x84, 0x9d, 0x12, 0x9d, 0x84, 0x9d, 0x12, 0x9e, 0x84, - 0x9e, 0x12, 0x9e, 0x84, 0x9e, 0x12, 0x9f, 0x84, 0x9f, 0x12, 0x9f, 0x84, - 0x9e, 0x12, 0x9f, 0x84, 0x9f, 0x12, 0xa0, 0x84, 0x9e, 0x12, 0xa0, 0x84, - 0x9f, 0x12, 0xa1, 0x84, 0x9e, 0x12, 0xa1, 0x84, 0x9f, 0x12, 0xa1, 0x84, - 0x9e, 0x12, 0xa2, 0x84, 0x9f, 0x12, 0xa2, 0x84, 0x9e, 0x12, 0xa3, 0x84, - 0x9f, 0x12, 0xa3, 0x84, 0x9e, 0x12, 0xa3, 0x84, 0x9f, 0x12, 0xa4, 0x84, - 0x9e, 0x12, 0xa4, 0x84, 0x9f, 0x12, 0xa5, 0x84, 0x9e, 0x12, 0xa5, 0x84, - 0x9f, 0x12, 0xa5, 0x84, 0x9e, 0x12, 0xa6, 0x84, 0x9f, 0x12, 0xa6, 0x84, - 0x9e, 0x12, 0xa6, 0x84, 0x9f, 0x12, 0xa7, 0x85, 0xa2, 0x12, 0xa7, 0x84, - 0x9f, 0x12, 0xa8, 0x85, 0xa2, 0x12, 0xa8, 0x84, 0x9f, 0x12, 0xa8, 0x85, - 0xa2, 0x12, 0xa9, 0x85, 0xa2, 0x12, 0xa9, 0x85, 0xa2, 0x12, 0xaa, 0x85, - 0xa2, 0x12, 0xaa, 0x85, 0xa2, 0x12, 0xaa, 0x86, 0xa6, 0x12, 0xab, 0x86, - 0xa6, 0x12, 0xab, 0x86, 0xa6, 0x12, 0xab, 0x86, 0xa6, 0x12, 0xac, 0x86, - 0xa6, 0x12, 0xac, 0x86, 0xa6, 0x12, 0xac, 0x86, 0xa6, 0x12, 0xad, 0x86, - 0xa6, 0x12, 0xad, 0x86, 0xa6, 0x12, 0xae, 0x86, 0xa6, 0x12, 0xae, 0x86, - 0xa6, 0x12, 0xae, 0x86, 0xa6, 0x12, 0xaf, 0x87, 0xaa, 0x12, 0xaf, 0x86, - 0xa6, 0x12, 0xaf, 0x87, 0xaa, 0x12, 0xb0, 0x87, 0xa9, 0x12, 0xb0, 0x87, - 0xaa, 0x12, 0xb0, 0x87, 0xa9, 0x12, 0xb1, 0x87, 0xaa, 0x12, 0xb1, 0x87, - 0xa9, 0x12, 0xb2, 0x87, 0xaa, 0x12, 0xb2, 0x88, 0xad, 0x12, 0xb2, 0x88, - 0xad, 0x12, 0xb3, 0x88, 0xad, 0x12, 0xb3, 0x88, 0xad, 0x12, 0xb3, 0x88, - 0xad, 0x12, 0xb4, 0x88, 0xad, 0x12, 0xb4, 0x88, 0xad, 0x12, 0xb4, 0x88, - 0xad, 0x12, 0xb5, 0x88, 0xad, 0x12, 0xb5, 0x88, 0xad, 0x12, 0xb5, 0x89, - 0xb0, 0x12, 0xb6, 0x88, 0xad, 0x12, 0xb6, 0x89, 0xb0, 0x12, 0xb6, 0x88, - 0xad, 0x12, 0xb7, 0x89, 0xb0, 0x12, 0xb7, 0x89, 0xb2, 0x12, 0xb7, 0x89, - 0xb0, 0x12, 0xb8, 0x89, 0xb2, 0x12, 0xb8, 0x89, 0xb0, 0x12, 0xb8, 0x89, - 0xb2, 0x12, 0xb9, 0x89, 0xb0, 0x12, 0xb9, 0x89, 0xb2, 0x12, 0xb9, 0x89, - 0xb2, 0x12, 0xba, 0x89, 0xb2, 0x12, 0xba, 0x89, 0xb2, 0x12, 0xba, 0x89, - 0xb2, 0x12, 0xbb, 0x8a, 0xb3, 0x12, 0xbb, 0x8a, 0xb4, 0x12, 0xbb, 0x8a, - 0xb3, 0x12, 0xbc, 0x8a, 0xb4, 0x12, 0xbc, 0x8b, 0xb7, 0x12, 0xbc, 0x8b, - 0xb7, 0x12, 0xbd, 0x8b, 0xb7, 0x12, 0xbd, 0x8b, 0xb7, 0x12, 0xbd, 0x8b, - 0xb7, 0x12, 0xbe, 0x8b, 0xb7, 0x12, 0xbe, 0x8b, 0xb7, 0x12, 0xbe, 0x8b, - 0xb7, 0x12, 0xbf, 0x8b, 0xb7, 0x12, 0xbf, 0x8b, 0xb7, 0x12, 0xbf, 0x8c, - 0xba, 0x12, 0xc0, 0x8b, 0xb7, 0x12, 0xc0, 0x8c, 0xba, 0x12, 0xc0, 0x8b, - 0xb7, 0x12, 0xc1, 0x8c, 0xba, 0x12, 0xc1, 0x8c, 0xba, 0x12, 0xc1, 0x8c, - 0xba, 0x12, 0xc1, 0x8c, 0xba, 0x12, 0xc2, 0x8c, 0xba, 0x12, 0xc2, 0x8d, - 0xbd, 0x12, 0xc2, 0x8c, 0xba, 0x12, 0xc3, 0x8d, 0xbd, 0x12, 0xc3, 0x8c, - 0xba, 0x12, 0xc3, 0x8d, 0xbd, 0x12, 0xc4, 0x8d, 0xbd, 0x12, 0xc4, 0x8d, - 0xbd, 0x12, 0xc4, 0x8d, 0xbd, 0x12, 0xc5, 0x8d, 0xbd, 0x12, 0xc5, 0x8e, - 0xc0, 0x12, 0xc5, 0x8e, 0xc0, 0x12, 0xc6, 0x8e, 0xc0, 0x12, 0xc6, 0x8e, - 0xc0, 0x12, 0xc6, 0x8e, 0xc0, 0x12, 0xc6, 0x8e, 0xc0, 0x12, 0xc7, 0x8e, - 0xc0, 0x12, 0xc7, 0x8e, 0xc0, 0x12, 0xc7, 0x8e, 0xc0, 0x12, 0xc8, 0x8e, - 0xc0, 0x12, 0xc8, 0x8e, 0xc3, 0x12, 0xc8, 0x8e, 0xc0, 0x12, 0xc9, 0x8e, - 0xc3, 0x12, 0xc9, 0x8e, 0xc0, 0x12, 0xc9, 0x8e, 0xc3, 0x12, 0xc9, 0x8e, - 0xc3, 0x12, 0xca, 0x8e, 0xc3, 0x12, 0xca, 0x8e, 0xc3, 0x12, 0xca, 0x8e, - 0xc3, 0x12, 0xcb, 0x8f, 0xc6, 0x12, 0xcb, 0x8e, 0xc3, 0x12, 0xcb, 0x8f, - 0xc6, 0x12, 0xcc, 0x8e, 0xc3, 0x12, 0xcc, 0x8f, 0xc6, 0x12, 0xcc, 0x8e, - 0xc3, 0x12, 0xcc, 0x8f, 0xc6, 0x12, 0xcd, 0x8f, 0xc6, 0x12, 0xcd, 0x8f, - 0xc6, 0x12, 0xcd, 0x8f, 0xc6, 0x12, 0xce, 0x8f, 0xc6, 0x12, 0xce, 0x90, - 0xc9, 0x12, 0xce, 0x90, 0xc9, 0x12, 0xce, 0x90, 0xc9, 0x12, 0xcf, 0x90, - 0xc9, 0x12, 0xcf, 0x90, 0xc9, 0x12, 0xcf, 0x90, 0xc9, 0x12, 0xd0, 0x90, - 0xc9, 0x12, 0xd0, 0x90, 0xc9, 0x12, 0xd0, 0x90, 0xc9, 0x12, 0xd0, 0x90, - 0xc9, 0x12, 0xd1, 0x91, 0xcc, 0x12, 0xd1, 0x90, 0xc9, 0x12, 0xd1, 0x91, - 0xcc, 0x12, 0xd2, 0x90, 0xc9, 0x12, 0xd2, 0x91, 0xcc, 0x12, 0xd2, 0x91, - 0xcb, 0x12, 0xd2, 0x91, 0xcc, 0x12, 0xd3, 0x91, 0xcb, 0x12, 0xd3, 0x91, - 0xcc, 0x12, 0xd3, 0x92, 0xce, 0x12, 0xd4, 0x92, 0xce, 0x12, 0xd4, 0x92, - 0xce, 0x12, 0xd4, 0x92, 0xce, 0x12, 0xd4, 0x92, 0xce, 0x12, 0xd5, 0x92, - 0xce, 0x12, 0xd5, 0x92, 0xce, 0x12, 0xd5, 0x92, 0xce, 0x12, 0xd6, 0x92, - 0xce, 0x12, 0xd6, 0x92, 0xce, 0x12, 0xd6, 0x93, 0xd1, 0x12, 0xd6, 0x92, - 0xce, 0x12, 0xd7, 0x93, 0xd1, 0x12, 0xd7, 0x92, 0xce, 0x12, 0xd7, 0x93, - 0xd1, 0x12, 0xd7, 0x92, 0xce, 0x12, 0xd8, 0x93, 0xd1, 0x12, 0xd8, 0x93, - 0xd1, 0x12, 0xd8, 0x93, 0xd1, 0x12, 0xd9, 0x93, 0xd1, 0x12, 0xd9, 0x93, - 0xd1, 0x12, 0xd9, 0x94, 0xd4, 0x12, 0xd9, 0x93, 0xd1, 0x12, 0xda, 0x94, - 0xd4, 0x12, 0xda, 0x93, 0xd1, 0x12, 0xda, 0x94, 0xd4, 0x12, 0xda, 0x94, - 0xd3, 0x12, 0xdb, 0x94, 0xd4, 0x12, 0xdb, 0x94, 0xd3, 0x12, 0xdb, 0x94, - 0xd4, 0x12, 0xdb, 0x95, 0xd6, 0x12, 0xdc, 0x95, 0xd6, 0x12, 0xdc, 0x95, - 0xd6, 0x12, 0xdc, 0x95, 0xd6, 0x12, 0xdd, 0x95, 0xd6, 0x12, 0xdd, 0x95, - 0xd6, 0x12, 0xdd, 0x95, 0xd6, 0x12, 0xdd, 0x95, 0xd6, 0x12, 0xde, 0x95, - 0xd6, 0x12, 0xde, 0x95, 0xd6, 0x12, 0xde, 0x96, 0xd9, 0x12, 0xde, 0x95, - 0xd6, 0x12, 0xdf, 0x96, 0xd9, 0x12, 0xdf, 0x95, 0xd6, 0x12, 0xdf, 0x96, - 0xd9, 0x12, 0xdf, 0x96, 0xd9, 0x12, 0xe0, 0x96, 0xd9, 0x12, 0xe0, 0x96, - 0xd9, 0x12, 0xe0, 0x96, 0xd9, 0x12, 0xe1, 0x97, 0xdb, 0x12, 0xe1, 0x96, - 0xd9, 0x12, 0xe1, 0x97, 0xdb, 0x12, 0xe1, 0x96, 0xd9, 0x12, 0xe2, 0x97, - 0xdb, 0x12, 0xe2, 0x96, 0xd9, 0x12, 0xe2, 0x97, 0xdb, 0x12, 0xe2, 0x97, - 0xdb, 0x12, 0xe3, 0x97, 0xdb, 0x12, 0xe3, 0x98, 0xde, 0x12, 0xe3, 0x98, - 0xde, 0x12, 0xe3, 0x98, 0xde, 0x12, 0xe4, 0x98, 0xde, 0x12, 0xe4, 0x98, - 0xde, 0x12, 0xe4, 0x98, 0xde, 0x12, 0xe4, 0x98, 0xde, 0x12, 0xe5, 0x98, - 0xde, 0x12, 0xe5, 0x98, 0xde, 0x12, 0xe5, 0x98, 0xde, 0x12, 0xe5, 0x98, - 0xe0, 0x12, 0xe6, 0x98, 0xde, 0x12, 0xe6, 0x98, 0xe0, 0x12, 0xe6, 0x98, - 0xde, 0x12, 0xe6, 0x98, 0xe0, 0x12, 0xe7, 0x98, 0xde, 0x12, 0xe7, 0x98, - 0xe0, 0x12, 0xe7, 0x98, 0xe0, 0x12, 0xe7, 0x98, 0xe0, 0x12, 0xe8, 0x98, - 0xe0, 0x12, 0xe8, 0x98, 0xe0, 0x12, 0xe8, 0x99, 0xe3, 0x12, 0xe8, 0x98, - 0xe0, 0x12, 0xe9, 0x99, 0xe3, 0x12, 0xe9, 0x98, 0xe0, 0x12, 0xe9, 0x99, - 0xe3, 0x12, 0xe9, 0x99, 0xe2, 0x12, 0xea, 0x99, 0xe3, 0x12, 0xea, 0x99, - 0xe2, 0x12, 0xea, 0x99, 0xe3, 0x12, 0xea, 0x9a, 0xe5, 0x12, 0xeb, 0x9a, - 0xe5, 0x12, 0xeb, 0x9a, 0xe5, 0x12, 0xeb, 0x9a, 0xe5, 0x12, 0xeb, 0x9a, - 0xe5, 0x12, 0xec, 0x9a, 0xe5, 0x12, 0xec, 0x9a, 0xe5, 0x12, 0xec, 0x9a, - 0xe5, 0x12, 0xec, 0x9a, 0xe5, 0x12, 0xec, 0x9a, 0xe5, 0x12, 0xed, 0x9b, - 0xe7, 0x12, 0xed, 0x9a, 0xe5, 0x12, 0xed, 0x9b, 0xe7, 0x12, 0xed, 0x9a, - 0xe5, 0x12, 0xee, 0x9b, 0xe7, 0x12, 0xee, 0x9a, 0xe5, 0x12, 0xee, 0x9b, - 0xe7, 0x12, 0xee, 0x9b, 0xe7, 0x12, 0xef, 0x9b, 0xe7, 0x12, 0xef, 0x9c, - 0xea, 0x12, 0xef, 0x9c, 0xea, 0x12, 0xef, 0x9c, 0xea, 0x12, 0xf0, 0x9c, - 0xea, 0x12, 0xf0, 0x9c, 0xea, 0x12, 0xf0, 0x9c, 0xea, 0x12, 0xf0, 0x9c, - 0xea, 0x12, 0xf1, 0x9c, 0xea, 0x12, 0xf1, 0x9c, 0xea, 0x12, 0xf1, 0x9c, - 0xea, 0x12, 0xf1, 0x9c, 0xea, 0x12, 0xf2, 0x9c, 0xea, 0x12, 0xf2, 0x9d, - 0xec, 0x12, 0xf2, 0x9c, 0xea, 0x12, 0xf2, 0x9d, 0xec, 0x12, 0xf2, 0x9c, - 0xea, 0x12, 0xf3, 0x9d, 0xec, 0x12, 0xf3, 0x9d, 0xec, 0x12, 0xf3, 0x9d, - 0xec, 0x12, 0xf3, 0x9d, 0xec, 0x12, 0xf4, 0x9d, 0xec, 0x12, 0xf4, 0x9d, - 0xee, 0x12, 0xf4, 0x9d, 0xec, 0x12, 0xf4, 0x9d, 0xee, 0x12, 0xf5, 0x9d, - 0xec, 0x12, 0xf5, 0x9d, 0xee, 0x12, 0xf5, 0x9d, 0xec, 0x12, 0xf5, 0x9d, - 0xee, 0x12, 0xf5, 0x9d, 0xee, 0x12, 0xf6, 0x9d, 0xee, 0x12, 0xf6, 0x9e, - 0xf0, 0x12, 0xf6, 0x9e, 0xf1, 0x12, 0xf6, 0x9e, 0xf0, 0x12, 0xf7, 0x9e, - 0xf1, 0x12, 0xf7, 0x9e, 0xf0, 0x12, 0xf7, 0x9e, 0xf1, 0x12, 0xf7, 0x9e, - 0xf0, 0x12, 0xf8, 0x9e, 0xf1, 0x12, 0xf8, 0x9e, 0xf0, 0x12, 0xf8, 0x9e, - 0xf1, 0x12, 0xf8, 0x9f, 0xf3, 0x12, 0xf8, 0x9e, 0xf1, 0x12, 0xf9, 0x9f, - 0xf3, 0x12, 0xf9, 0x9e, 0xf1, 0x12, 0xf9, 0x9f, 0xf3, 0x12, 0xf9, 0x9e, - 0xf1, 0x12, 0xfa, 0x9f, 0xf3, 0x12, 0xfa, 0x9f, 0xf2, 0x12, 0xfa, 0x9f, - 0xf3, 0x12, 0xfa, 0xa0, 0xf5, 0x12, 0xfa, 0x9f, 0xf3, 0x12, 0xfb, 0xa0, - 0xf5, 0x12, 0xfb, 0x9f, 0xf3, 0x12, 0xfb, 0xa0, 0xf5, 0x12, 0xfb, 0x9f, - 0xf3, 0x12, 0xfc, 0xa0, 0xf5, 0x12, 0xfc, 0xa0, 0xf5, 0x12, 0xfc, 0xa0, - 0xf5, 0x12, 0xfc, 0xa1, 0xf7, 0x12, 0xfc, 0xa1, 0xf7, 0x12, 0xfd, 0xa1, - 0xf7, 0x12, 0xfd, 0xa1, 0xf7, 0x12, 0xfd, 0xa1, 0xf7, 0x12, 0xfd, 0xa1, - 0xf7, 0x12, 0xfe, 0xa1, 0xf7, 0x12, 0xfe, 0xa1, 0xf7, 0x12, 0xfe, 0xa1, - 0xf7, 0x12, 0xfe, 0xa1, 0xf7, 0x12, 0xfe, 0xa1, 0xf7, 0x12, 0xff, 0xa1, - 0xf7, 0x12, 0xff, 0xa1, 0xf9, 0x12, 0x03, 0x83, 0x9b, 0x12, 0x0a, 0x83, - 0x9b, 0x12, 0x0f, 0x83, 0x9b, 0x12, 0x14, 0x83, 0x9b, 0x12, 0x17, 0x83, - 0x9b, 0x12, 0x1b, 0x83, 0x9b, 0x12, 0x1e, 0x83, 0x9b, 0x12, 0x20, 0x83, - 0x9c, 0x12, 0x23, 0x83, 0x9b, 0x12, 0x25, 0x83, 0x9c, 0x12, 0x27, 0x83, - 0x9b, 0x12, 0x29, 0x83, 0x9c, 0x12, 0x2b, 0x83, 0x9b, 0x12, 0x2d, 0x83, - 0x9c, 0x12, 0x2f, 0x83, 0x9b, 0x12, 0x31, 0x83, 0x9c, 0x12, 0x32, 0x83, - 0x9b, 0x12, 0x34, 0x83, 0x9c, 0x12, 0x35, 0x83, 0x9b, 0x12, 0x37, 0x83, - 0x9c, 0x12, 0x38, 0x83, 0x9b, 0x12, 0x3a, 0x83, 0x9c, 0x12, 0x3b, 0x83, - 0x9b, 0x12, 0x3c, 0x83, 0x9c, 0x12, 0x3e, 0x83, 0x9b, 0x12, 0x3f, 0x83, - 0x9c, 0x12, 0x40, 0x83, 0x9b, 0x12, 0x42, 0x83, 0x9c, 0x12, 0x43, 0x83, - 0x9b, 0x12, 0x44, 0x83, 0x9c, 0x12, 0x45, 0x83, 0x9b, 0x12, 0x46, 0x83, - 0x9c, 0x12, 0x47, 0x83, 0x9b, 0x12, 0x48, 0x83, 0x9c, 0x12, 0x49, 0x83, - 0x9b, 0x12, 0x4a, 0x83, 0x9c, 0x12, 0x4b, 0x83, 0x9b, 0x12, 0x4c, 0x83, - 0x9c, 0x12, 0x4d, 0x83, 0x9b, 0x12, 0x4e, 0x83, 0x9c, 0x12, 0x4f, 0x83, - 0x9b, 0x12, 0x50, 0x83, 0x9c, 0x12, 0x51, 0x83, 0x9b, 0x12, 0x52, 0x83, - 0x9c, 0x12, 0x53, 0x83, 0x9b, 0x12, 0x54, 0x83, 0x9c, 0x12, 0x55, 0x83, - 0x9b, 0x12, 0x56, 0x83, 0x9c, 0x12, 0x57, 0x83, 0x9b, 0x12, 0x58, 0x83, - 0x9c, 0x12, 0x58, 0x83, 0x9b, 0x12, 0x59, 0x83, 0x9c, 0x12, 0x5a, 0x83, - 0x9b, 0x12, 0x5b, 0x83, 0x9c, 0x12, 0x5c, 0x83, 0x9b, 0x12, 0x5d, 0x83, - 0x9c, 0x12, 0x5d, 0x83, 0x9b, 0x12, 0x5e, 0x83, 0x9c, 0x12, 0x5f, 0x83, - 0x9b, 0x12, 0x60, 0x83, 0x9c, 0x12, 0x60, 0x83, 0x9b, 0x12, 0x61, 0x83, - 0x9c, 0x12, 0x62, 0x83, 0x9b, 0x12, 0x63, 0x83, 0x9c, 0x12, 0x63, 0x83, - 0x9b, 0x12, 0x64, 0x83, 0x9c, 0x12, 0x65, 0x83, 0x9b, 0x12, 0x66, 0x83, - 0x9c, 0x12, 0x66, 0x83, 0x9b, 0x12, 0x67, 0x83, 0x9c, 0x12, 0x68, 0x83, - 0x9b, 0x12, 0x68, 0x83, 0x9c, 0x12, 0x69, 0x83, 0x9b, 0x12, 0x6a, 0x83, - 0x9c, 0x12, 0x6a, 0x83, 0x9b, 0x12, 0x6b, 0x83, 0x9c, 0x12, 0x6c, 0x83, - 0x9b, 0x12, 0x6c, 0x83, 0x9c, 0x12, 0x6d, 0x83, 0x9b, 0x12, 0x6e, 0x83, - 0x9c, 0x12, 0x6e, 0x83, 0x9b, 0x12, 0x6f, 0x83, 0x9c, 0x12, 0x70, 0x83, - 0x9b, 0x12, 0x70, 0x83, 0x9c, 0x12, 0x71, 0x83, 0x9b, 0x12, 0x72, 0x83, - 0x9c, 0x12, 0x72, 0x83, 0x9b, 0x12, 0x73, 0x83, 0x9c, 0x12, 0x73, 0x83, - 0x9b, 0x12, 0x74, 0x83, 0x9c, 0x12, 0x75, 0x83, 0x9b, 0x12, 0x75, 0x83, - 0x9c, 0x12, 0x76, 0x83, 0x9b, 0x12, 0x76, 0x83, 0x9c, 0x12, 0x77, 0x83, - 0x9b, 0x12, 0x78, 0x83, 0x9c, 0x12, 0x78, 0x83, 0x9b, 0x12, 0x79, 0x83, - 0x9c, 0x12, 0x79, 0x83, 0x9b, 0x12, 0x7a, 0x83, 0x9c, 0x12, 0x7a, 0x83, - 0x9b, 0x12, 0x7b, 0x83, 0x9c, 0x12, 0x7c, 0x83, 0x9b, 0x12, 0x7c, 0x83, - 0x9c, 0x12, 0x7d, 0x83, 0x9b, 0x12, 0x7d, 0x83, 0x9c, 0x12, 0x7e, 0x83, - 0x9b, 0x12, 0x7e, 0x83, 0x9c, 0x12, 0x7f, 0x83, 0x9b, 0x12, 0x7f, 0x83, - 0x9c, 0x12, 0x80, 0x83, 0x9b, 0x12, 0x81, 0x83, 0x9c, 0x12, 0x81, 0x83, - 0x9b, 0x12, 0x82, 0x83, 0x9c, 0x12, 0x82, 0x83, 0x9b, 0x12, 0x83, 0x83, - 0x9c, 0x12, 0x83, 0x83, 0x9b, 0x12, 0x84, 0x83, 0x9c, 0x12, 0x84, 0x83, - 0x9b, 0x12, 0x85, 0x83, 0x9c, 0x12, 0x85, 0x83, 0x9b, 0x12, 0x86, 0x83, - 0x9c, 0x12, 0x86, 0x83, 0x9b, 0x12, 0x87, 0x83, 0x9c, 0x12, 0x87, 0x83, - 0x9b, 0x12, 0x88, 0x83, 0x9c, 0x12, 0x88, 0x83, 0x9b, 0x12, 0x89, 0x83, - 0x9c, 0x12, 0x89, 0x83, 0x9b, 0x12, 0x8a, 0x83, 0x9c, 0x12, 0x8a, 0x83, - 0x9b, 0x12, 0x8b, 0x83, 0x9c, 0x12, 0x8b, 0x83, 0x9b, 0x12, 0x8c, 0x83, - 0x9c, 0x12, 0x8c, 0x83, 0x9b, 0x12, 0x8d, 0x83, 0x9c, 0x12, 0x8d, 0x83, - 0x9b, 0x12, 0x8e, 0x83, 0x9c, 0x12, 0x8e, 0x83, 0x9b, 0x12, 0x8e, 0x83, - 0x9c, 0x12, 0x8f, 0x83, 0x9b, 0x12, 0x8f, 0x83, 0x9c, 0x12, 0x90, 0x83, - 0x9b, 0x12, 0x90, 0x83, 0x9c, 0x12, 0x91, 0x83, 0x9b, 0x12, 0x91, 0x83, - 0x9c, 0x12, 0x92, 0x83, 0x9b, 0x12, 0x92, 0x83, 0x9c, 0x12, 0x93, 0x83, - 0x9b, 0x12, 0x93, 0x83, 0x9c, 0x12, 0x94, 0x83, 0x9b, 0x12, 0x94, 0x83, - 0x9c, 0x12, 0x94, 0x83, 0x9b, 0x12, 0x95, 0x83, 0x9c, 0x12, 0x95, 0x83, - 0x9b, 0x12, 0x96, 0x83, 0x9c, 0x12, 0x96, 0x83, 0x9b, 0x12, 0x97, 0x83, - 0x9c, 0x12, 0x97, 0x83, 0x9b, 0x12, 0x98, 0x83, 0x9c, 0x12, 0x98, 0x83, - 0x9b, 0x12, 0x98, 0x83, 0x9c, 0x12, 0x99, 0x83, 0x9b, 0x12, 0x99, 0x83, - 0x9c, 0x12, 0x9a, 0x83, 0x9b, 0x12, 0x9a, 0x83, 0x9c, 0x12, 0x9a, 0x83, - 0x9b, 0x12, 0x9b, 0x83, 0x9c, 0x12, 0x9b, 0x83, 0x9b, 0x12, 0x9c, 0x83, - 0x9c, 0x12, 0x9c, 0x83, 0x9c, 0x12, 0x9d, 0x83, 0x9d, 0x12, 0x9d, 0x83, - 0x9c, 0x12, 0x9d, 0x83, 0x9d, 0x12, 0x9e, 0x83, 0x9c, 0x12, 0x9e, 0x83, - 0x9d, 0x12, 0x9f, 0x83, 0x9c, 0x12, 0x9f, 0x83, 0x9d, 0x12, 0x9f, 0x83, - 0x9c, 0x12, 0xa0, 0x83, 0x9d, 0x12, 0xa0, 0x83, 0x9c, 0x12, 0xa1, 0x83, - 0x9d, 0x12, 0xa1, 0x83, 0x9c, 0x12, 0xa1, 0x83, 0x9d, 0x12, 0xa2, 0x83, - 0x9c, 0x12, 0xa2, 0x83, 0x9d, 0x12, 0xa3, 0x83, 0x9c, 0x12, 0xa3, 0x83, - 0x9d, 0x12, 0xa3, 0x83, 0x9c, 0x12, 0xa4, 0x83, 0x9d, 0x12, 0xa4, 0x83, - 0x9c, 0x12, 0xa5, 0x83, 0x9d, 0x12, 0xa5, 0x84, 0xa0, 0x12, 0xa5, 0x84, - 0xa1, 0x12, 0xa6, 0x84, 0xa0, 0x12, 0xa6, 0x84, 0xa1, 0x12, 0xa6, 0x84, - 0xa0, 0x12, 0xa7, 0x84, 0xa1, 0x12, 0xa7, 0x84, 0xa0, 0x12, 0xa8, 0x84, - 0xa1, 0x12, 0xa8, 0x84, 0xa0, 0x12, 0xa8, 0x84, 0xa1, 0x12, 0xa9, 0x85, - 0xa4, 0x12, 0xa9, 0x84, 0xa1, 0x12, 0xaa, 0x85, 0xa4, 0x12, 0xaa, 0x84, - 0xa1, 0x12, 0xaa, 0x85, 0xa4, 0x12, 0xab, 0x85, 0xa4, 0x12, 0xab, 0x85, - 0xa4, 0x12, 0xab, 0x85, 0xa4, 0x12, 0xac, 0x85, 0xa4, 0x12, 0xac, 0x86, - 0xa8, 0x12, 0xac, 0x85, 0xa4, 0x12, 0xad, 0x86, 0xa8, 0x12, 0xad, 0x85, - 0xa4, 0x12, 0xae, 0x86, 0xa8, 0x12, 0xae, 0x86, 0xa7, 0x12, 0xae, 0x86, - 0xa8, 0x12, 0xaf, 0x86, 0xa7, 0x12, 0xaf, 0x86, 0xa8, 0x12, 0xaf, 0x86, - 0xa7, 0x12, 0xb0, 0x86, 0xa8, 0x12, 0xb0, 0x87, 0xab, 0x12, 0xb0, 0x87, - 0xab, 0x12, 0xb1, 0x87, 0xab, 0x12, 0xb1, 0x87, 0xab, 0x12, 0xb2, 0x87, - 0xab, 0x12, 0xb2, 0x87, 0xab, 0x12, 0xb2, 0x87, 0xab, 0x12, 0xb3, 0x87, - 0xab, 0x12, 0xb3, 0x87, 0xab, 0x12, 0xb3, 0x87, 0xab, 0x12, 0xb4, 0x88, - 0xaf, 0x12, 0xb4, 0x87, 0xab, 0x12, 0xb4, 0x88, 0xaf, 0x12, 0xb5, 0x87, - 0xab, 0x12, 0xb5, 0x88, 0xaf, 0x12, 0xb5, 0x88, 0xae, 0x12, 0xb6, 0x88, - 0xaf, 0x12, 0xb6, 0x88, 0xae, 0x12, 0xb6, 0x88, 0xaf, 0x12, 0xb7, 0x89, - 0xb2, 0x12, 0xb7, 0x89, 0xb2, 0x12, 0xb7, 0x89, 0xb2, 0x12, 0xb8, 0x89, - 0xb2, 0x12, 0xb8, 0x89, 0xb2, 0x12, 0xb8, 0x89, 0xb2, 0x12, 0xb9, 0x89, - 0xb2, 0x12, 0xb9, 0x89, 0xb2, 0x12, 0xb9, 0x89, 0xb2, 0x12, 0xba, 0x89, - 0xb2, 0x12, 0xba, 0x8a, 0xb5, 0x12, 0xba, 0x89, 0xb2, 0x12, 0xbb, 0x8a, - 0xb5, 0x12, 0xbb, 0x89, 0xb2, 0x12, 0xbb, 0x8a, 0xb5, 0x12, 0xbc, 0x8a, - 0xb5, 0x12, 0xbc, 0x8a, 0xb5, 0x12, 0xbc, 0x8a, 0xb5, 0x12, 0xbd, 0x8a, - 0xb5, 0x12, 0xbd, 0x8a, 0xb5, 0x12, 0xbd, 0x8a, 0xb5, 0x12, 0xbe, 0x8b, - 0xb8, 0x12, 0xbe, 0x8a, 0xb5, 0x12, 0xbe, 0x8b, 0xb8, 0x12, 0xbf, 0x8b, - 0xb8, 0x12, 0xbf, 0x8b, 0xb8, 0x12, 0xbf, 0x8b, 0xb8, 0x12, 0xc0, 0x8b, - 0xb8, 0x12, 0xc0, 0x8b, 0xb8, 0x12, 0xc0, 0x8b, 0xb8, 0x12, 0xc1, 0x8c, - 0xbb, 0x12, 0xc1, 0x8c, 0xbc, 0x12, 0xc1, 0x8c, 0xbb, 0x12, 0xc1, 0x8c, - 0xbc, 0x12, 0xc2, 0x8c, 0xbb, 0x12, 0xc2, 0x8c, 0xbc, 0x12, 0xc2, 0x8c, - 0xbb, 0x12, 0xc3, 0x8c, 0xbc, 0x12, 0xc3, 0x8c, 0xbb, 0x12, 0xc3, 0x8c, - 0xbc, 0x12, 0xc4, 0x8d, 0xbf, 0x12, 0xc4, 0x8c, 0xbc, 0x12, 0xc4, 0x8d, - 0xbf, 0x12, 0xc5, 0x8c, 0xbc, 0x12, 0xc5, 0x8d, 0xbf, 0x12, 0xc5, 0x8d, - 0xbe, 0x12, 0xc6, 0x8d, 0xbf, 0x12, 0xc6, 0x8d, 0xbe, 0x12, 0xc6, 0x8d, - 0xbf, 0x12, 0xc6, 0x8e, 0xc1, 0x12, 0xc7, 0x8d, 0xbf, 0x12, 0xc7, 0x8e, - 0xc1, 0x12, 0xc7, 0x8d, 0xbf, 0x12, 0xc8, 0x8e, 0xc1, 0x12, 0xc8, 0x8e, - 0xc1, 0x12, 0xc8, 0x8e, 0xc1, 0x12, 0xc9, 0x8e, 0xc1, 0x12, 0xc9, 0x8e, - 0xc1, 0x12, 0xc9, 0x8f, 0xc4, 0x12, 0xc9, 0x8f, 0xc5, 0x12, 0xca, 0x8f, - 0xc4, 0x12, 0xca, 0x8f, 0xc5, 0x12, 0xca, 0x8f, 0xc4, 0x12, 0xcb, 0x8f, - 0xc5, 0x12, 0xcb, 0x8f, 0xc4, 0x12, 0xcb, 0x8f, 0xc5, 0x12, 0xcc, 0x8f, - 0xc4, 0x12, 0xcc, 0x8f, 0xc5, 0x12, 0xcc, 0x90, 0xc7, 0x12, 0xcc, 0x8f, - 0xc5, 0x12, 0xcd, 0x90, 0xc7, 0x12, 0xcd, 0x8f, 0xc5, 0x12, 0xcd, 0x90, - 0xc7, 0x12, 0xce, 0x8f, 0xc5, 0x12, 0xce, 0x90, 0xc7, 0x12, 0xce, 0x90, - 0xc7, 0x12, 0xce, 0x90, 0xc7, 0x12, 0xcf, 0x90, 0xc7, 0x12, 0xcf, 0x90, - 0xc7, 0x12, 0xcf, 0x91, 0xca, 0x12, 0xd0, 0x90, 0xc7, 0x12, 0xd0, 0x91, - 0xca, 0x12, 0xd0, 0x90, 0xc7, 0x12, 0xd0, 0x91, 0xca, 0x12, 0xd1, 0x91, - 0xca, 0x12, 0xd1, 0x91, 0xca, 0x12, 0xd1, 0x91, 0xca, 0x12, 0xd2, 0x91, - 0xca, 0x12, 0xd2, 0x92, 0xcd, 0x12, 0xd2, 0x92, 0xcd, 0x12, 0xd2, 0x92, - 0xcd, 0x12, 0xd3, 0x92, 0xcd, 0x12, 0xd3, 0x92, 0xcd, 0x12, 0xd3, 0x92, - 0xcd, 0x12, 0xd4, 0x92, 0xcd, 0x12, 0xd4, 0x92, 0xcd, 0x12, 0xd4, 0x92, - 0xcd, 0x12, 0xd4, 0x92, 0xcd, 0x12, 0xd5, 0x93, 0xd0, 0x12, 0xd5, 0x92, - 0xcd, 0x12, 0xd5, 0x93, 0xd0, 0x12, 0xd6, 0x92, 0xcd, 0x12, 0xd6, 0x93, - 0xd0, 0x12, 0xd6, 0x93, 0xcf, 0x12, 0xd6, 0x93, 0xd0, 0x12, 0xd7, 0x93, - 0xcf, 0x12, 0xd7, 0x93, 0xd0, 0x12, 0xd7, 0x94, 0xd2, 0x12, 0xd7, 0x94, - 0xd2, 0x12, 0xd8, 0x94, 0xd2, 0x12, 0xd8, 0x94, 0xd2, 0x12, 0xd8, 0x94, - 0xd2, 0x12, 0xd9, 0x94, 0xd2, 0x12, 0xd9, 0x94, 0xd2, 0x12, 0xd9, 0x94, - 0xd2, 0x12, 0xd9, 0x94, 0xd2, 0x12, 0xda, 0x94, 0xd2, 0x12, 0xda, 0x94, - 0xd2, 0x12, 0xda, 0x94, 0xd2, 0x12, 0xda, 0x94, 0xd5, 0x12, 0xdb, 0x94, - 0xd2, 0x12, 0xdb, 0x94, 0xd5, 0x12, 0xdb, 0x94, 0xd2, 0x12, 0xdb, 0x94, - 0xd5, 0x12, 0xdc, 0x94, 0xd5, 0x12, 0xdc, 0x94, 0xd5, 0x12, 0xdc, 0x94, - 0xd5, 0x12, 0xdd, 0x94, 0xd5, 0x12, 0xdd, 0x95, 0xd7, 0x12, 0xdd, 0x94, - 0xd5, 0x12, 0xdd, 0x95, 0xd7, 0x12, 0xde, 0x94, 0xd5, 0x12, 0xde, 0x95, - 0xd7, 0x12, 0xde, 0x95, 0xd7, 0x12, 0xde, 0x95, 0xd7, 0x12, 0xdf, 0x95, - 0xd7, 0x12, 0xdf, 0x95, 0xd7, 0x12, 0xdf, 0x96, 0xda, 0x12, 0xdf, 0x96, - 0xda, 0x12, 0xe0, 0x96, 0xda, 0x12, 0xe0, 0x96, 0xda, 0x12, 0xe0, 0x96, - 0xda, 0x12, 0xe1, 0x96, 0xda, 0x12, 0xe1, 0x96, 0xda, 0x12, 0xe1, 0x96, - 0xda, 0x12, 0xe1, 0x96, 0xda, 0x12, 0xe2, 0x96, 0xda, 0x12, 0xe2, 0x97, - 0xdd, 0x12, 0xe2, 0x96, 0xda, 0x12, 0xe2, 0x97, 0xdd, 0x12, 0xe3, 0x96, - 0xda, 0x12, 0xe3, 0x97, 0xdd, 0x12, 0xe3, 0x96, 0xda, 0x12, 0xe3, 0x97, - 0xdd, 0x12, 0xe4, 0x97, 0xdc, 0x12, 0xe4, 0x97, 0xdd, 0x12, 0xe4, 0x98, - 0xdf, 0x12, 0xe4, 0x97, 0xdd, 0x12, 0xe5, 0x98, 0xdf, 0x12, 0xe5, 0x97, - 0xdd, 0x12, 0xe5, 0x98, 0xdf, 0x12, 0xe5, 0x97, 0xdd, 0x12, 0xe6, 0x98, - 0xdf, 0x12, 0xe6, 0x98, 0xdf, 0x12, 0xe6, 0x98, 0xdf, 0x12, 0xe6, 0x99, - 0xe1, 0x12, 0xe7, 0x99, 0xe2, 0x12, 0xe7, 0x99, 0xe1, 0x12, 0xe7, 0x99, - 0xe2, 0x12, 0xe7, 0x99, 0xe1, 0x12, 0xe8, 0x99, 0xe2, 0x12, 0xe8, 0x99, - 0xe1, 0x12, 0xe8, 0x99, 0xe2, 0x12, 0xe8, 0x99, 0xe1, 0x12, 0xe9, 0x99, - 0xe2, 0x12, 0xe9, 0x99, 0xe1, 0x12, 0xe9, 0x99, 0xe2, 0x12, 0xe9, 0x9a, - 0xe4, 0x12, 0xea, 0x99, 0xe2, 0x12, 0xea, 0x9a, 0xe4, 0x12, 0xea, 0x99, - 0xe2, 0x12, 0xea, 0x9a, 0xe4, 0x12, 0xeb, 0x9a, 0xe4, 0x12, 0xeb, 0x9a, - 0xe4, 0x12, 0xeb, 0x9a, 0xe4, 0x12, 0xeb, 0x9a, 0xe4, 0x12, 0xec, 0x9a, - 0xe6, 0x12, 0xec, 0x9a, 0xe4, 0x12, 0xec, 0x9a, 0xe6, 0x12, 0xec, 0x9a, - 0xe4, 0x12, 0xec, 0x9a, 0xe6, 0x12, 0xed, 0x9a, 0xe4, 0x12, 0xed, 0x9a, - 0xe6, 0x12, 0xed, 0x9a, 0xe6, 0x12, 0xed, 0x9a, 0xe6, 0x12, 0xee, 0x9b, - 0xe8, 0x12, 0xee, 0x9b, 0xe9, 0x12, 0xee, 0x9b, 0xe8, 0x12, 0xee, 0x9b, - 0xe9, 0x12, 0xef, 0x9b, 0xe8, 0x12, 0xef, 0x9b, 0xe9, 0x12, 0xef, 0x9b, - 0xe8, 0x12, 0xef, 0x9b, 0xe9, 0x12, 0xf0, 0x9b, 0xe8, 0x12, 0xf0, 0x9b, - 0xe9, 0x12, 0xf0, 0x9c, 0xeb, 0x12, 0xf0, 0x9b, 0xe9, 0x12, 0xf1, 0x9c, - 0xeb, 0x12, 0xf1, 0x9b, 0xe9, 0x12, 0xf1, 0x9c, 0xeb, 0x12, 0xf1, 0x9b, - 0xe9, 0x12, 0xf2, 0x9c, 0xeb, 0x12, 0xf2, 0x9c, 0xeb, 0x12, 0xf2, 0x9c, - 0xeb, 0x12, 0xf2, 0x9c, 0xeb, 0x12, 0xf2, 0x9c, 0xeb, 0x12, 0xf3, 0x9d, - 0xed, 0x12, 0xf3, 0x9d, 0xed, 0x12, 0xf3, 0x9d, 0xed, 0x12, 0xf3, 0x9d, - 0xed, 0x12, 0xf4, 0x9d, 0xed, 0x12, 0xf4, 0x9d, 0xed, 0x12, 0xf4, 0x9d, - 0xed, 0x12, 0xf4, 0x9d, 0xed, 0x12, 0xf5, 0x9d, 0xed, 0x12, 0xf5, 0x9d, - 0xed, 0x12, 0xf5, 0x9e, 0xef, 0x12, 0xf5, 0x9d, 0xed, 0x12, 0xf5, 0x9e, - 0xef, 0x12, 0xf6, 0x9d, 0xed, 0x12, 0xf6, 0x9e, 0xef, 0x12, 0xf6, 0x9d, - 0xed, 0x12, 0xf6, 0x9e, 0xef, 0x12, 0xf7, 0x9e, 0xef, 0x12, 0xf7, 0x9e, - 0xef, 0x12, 0xf7, 0x9f, 0xf2, 0x12, 0xf7, 0x9e, 0xef, 0x12, 0xf8, 0x9f, - 0xf2, 0x12, 0xf8, 0x9e, 0xef, 0x12, 0xf8, 0x9f, 0xf2, 0x12, 0xf8, 0x9e, - 0xef, 0x12, 0xf8, 0x9f, 0xf2, 0x12, 0xf9, 0x9f, 0xf1, 0x12, 0xf9, 0x9f, - 0xf2, 0x12, 0xf9, 0x9f, 0xf4, 0x12, 0xf9, 0x9f, 0xf4, 0x12, 0xfa, 0x9f, - 0xf4, 0x12, 0xfa, 0x9f, 0xf4, 0x12, 0xfa, 0x9f, 0xf4, 0x12, 0xfa, 0x9f, - 0xf4, 0x12, 0xfa, 0x9f, 0xf4, 0x12, 0xfb, 0x9f, 0xf4, 0x12, 0xfb, 0x9f, - 0xf4, 0x12, 0xfb, 0x9f, 0xf4, 0x12, 0xfb, 0xa0, 0xf6, 0x12, 0xfc, 0x9f, - 0xf4, 0x12, 0xfc, 0xa0, 0xf6, 0x12, 0xfc, 0x9f, 0xf4, 0x12, 0xfc, 0xa0, - 0xf6, 0x12, 0xfc, 0x9f, 0xf4, 0x12, 0xfd, 0xa0, 0xf6, 0x12, 0xfd, 0xa0, - 0xf6, 0x12, 0xfd, 0xa0, 0xf6, 0x12, 0xfd, 0xa1, 0xf8, 0x12, 0xfe, 0xa0, - 0xf6, 0x12, 0xfe, 0xa0, 0xf6, 0x12, 0xfe, 0xa0, 0xf6, 0x12, 0xfe, 0xa1, - 0xf8, 0x12, 0xfe, 0xa0, 0xf6, 0x12, 0xff, 0xa1, 0xf8, 0x12, 0xff, 0xa0, - 0xf6, 0x12, 0x03, 0x84, 0x9b, 0x13, 0x0a, 0x84, 0x9b, 0x13, 0x0f, 0x84, - 0x9b, 0x13, 0x14, 0x84, 0x9b, 0x13, 0x17, 0x84, 0x9b, 0x13, 0x1b, 0x84, - 0x9b, 0x13, 0x1e, 0x84, 0x9b, 0x13, 0x20, 0x84, 0x9c, 0x13, 0x23, 0x84, - 0x9b, 0x13, 0x25, 0x84, 0x9c, 0x13, 0x27, 0x84, 0x9b, 0x13, 0x29, 0x84, - 0x9c, 0x13, 0x2b, 0x84, 0x9b, 0x13, 0x2d, 0x84, 0x9c, 0x13, 0x2f, 0x84, - 0x9b, 0x13, 0x31, 0x84, 0x9c, 0x13, 0x32, 0x84, 0x9b, 0x13, 0x34, 0x84, - 0x9c, 0x13, 0x35, 0x84, 0x9b, 0x13, 0x37, 0x84, 0x9c, 0x13, 0x38, 0x84, - 0x9b, 0x13, 0x3a, 0x84, 0x9c, 0x13, 0x3b, 0x84, 0x9b, 0x13, 0x3c, 0x84, - 0x9c, 0x13, 0x3e, 0x84, 0x9b, 0x13, 0x3f, 0x84, 0x9c, 0x13, 0x40, 0x84, - 0x9b, 0x13, 0x42, 0x84, 0x9c, 0x13, 0x43, 0x84, 0x9b, 0x13, 0x44, 0x84, - 0x9c, 0x13, 0x45, 0x84, 0x9b, 0x13, 0x46, 0x84, 0x9c, 0x13, 0x47, 0x84, - 0x9b, 0x13, 0x48, 0x84, 0x9c, 0x13, 0x49, 0x84, 0x9b, 0x13, 0x4a, 0x84, - 0x9c, 0x13, 0x4b, 0x84, 0x9b, 0x13, 0x4c, 0x84, 0x9c, 0x13, 0x4d, 0x84, - 0x9b, 0x13, 0x4e, 0x84, 0x9c, 0x13, 0x4f, 0x84, 0x9b, 0x13, 0x50, 0x84, - 0x9c, 0x13, 0x51, 0x84, 0x9b, 0x13, 0x52, 0x84, 0x9c, 0x13, 0x53, 0x84, - 0x9b, 0x13, 0x54, 0x84, 0x9c, 0x13, 0x55, 0x84, 0x9b, 0x13, 0x56, 0x84, - 0x9c, 0x13, 0x57, 0x84, 0x9b, 0x13, 0x58, 0x84, 0x9c, 0x13, 0x58, 0x84, - 0x9b, 0x13, 0x59, 0x84, 0x9c, 0x13, 0x5a, 0x84, 0x9b, 0x13, 0x5b, 0x84, - 0x9c, 0x13, 0x5c, 0x84, 0x9b, 0x13, 0x5d, 0x84, 0x9c, 0x13, 0x5d, 0x84, - 0x9b, 0x13, 0x5e, 0x84, 0x9c, 0x13, 0x5f, 0x84, 0x9b, 0x13, 0x60, 0x84, - 0x9c, 0x13, 0x60, 0x84, 0x9b, 0x13, 0x61, 0x84, 0x9c, 0x13, 0x62, 0x84, - 0x9b, 0x13, 0x63, 0x84, 0x9c, 0x13, 0x63, 0x84, 0x9b, 0x13, 0x64, 0x84, - 0x9c, 0x13, 0x65, 0x84, 0x9b, 0x13, 0x66, 0x84, 0x9c, 0x13, 0x66, 0x84, - 0x9b, 0x13, 0x67, 0x84, 0x9c, 0x13, 0x68, 0x84, 0x9b, 0x13, 0x68, 0x84, - 0x9c, 0x13, 0x69, 0x84, 0x9b, 0x13, 0x6a, 0x84, 0x9c, 0x13, 0x6a, 0x84, - 0x9b, 0x13, 0x6b, 0x84, 0x9c, 0x13, 0x6c, 0x84, 0x9b, 0x13, 0x6c, 0x84, - 0x9c, 0x13, 0x6d, 0x84, 0x9b, 0x13, 0x6e, 0x84, 0x9c, 0x13, 0x6e, 0x84, - 0x9b, 0x13, 0x6f, 0x84, 0x9c, 0x13, 0x70, 0x84, 0x9b, 0x13, 0x70, 0x84, - 0x9c, 0x13, 0x71, 0x84, 0x9b, 0x13, 0x72, 0x84, 0x9c, 0x13, 0x72, 0x84, - 0x9b, 0x13, 0x73, 0x84, 0x9c, 0x13, 0x73, 0x84, 0x9b, 0x13, 0x74, 0x84, - 0x9c, 0x13, 0x75, 0x84, 0x9b, 0x13, 0x75, 0x84, 0x9c, 0x13, 0x76, 0x84, - 0x9b, 0x13, 0x76, 0x84, 0x9c, 0x13, 0x77, 0x84, 0x9b, 0x13, 0x78, 0x84, - 0x9c, 0x13, 0x78, 0x84, 0x9b, 0x13, 0x79, 0x84, 0x9c, 0x13, 0x79, 0x84, - 0x9b, 0x13, 0x7a, 0x84, 0x9c, 0x13, 0x7a, 0x84, 0x9b, 0x13, 0x7b, 0x84, - 0x9c, 0x13, 0x7c, 0x84, 0x9b, 0x13, 0x7c, 0x84, 0x9c, 0x13, 0x7d, 0x84, - 0x9b, 0x13, 0x7d, 0x84, 0x9c, 0x13, 0x7e, 0x84, 0x9b, 0x13, 0x7e, 0x84, - 0x9c, 0x13, 0x7f, 0x84, 0x9b, 0x13, 0x7f, 0x84, 0x9c, 0x13, 0x80, 0x84, - 0x9b, 0x13, 0x81, 0x84, 0x9c, 0x13, 0x81, 0x84, 0x9b, 0x13, 0x82, 0x84, - 0x9c, 0x13, 0x82, 0x84, 0x9b, 0x13, 0x83, 0x84, 0x9c, 0x13, 0x83, 0x84, - 0x9b, 0x13, 0x84, 0x84, 0x9c, 0x13, 0x84, 0x84, 0x9b, 0x13, 0x85, 0x84, - 0x9c, 0x13, 0x85, 0x84, 0x9b, 0x13, 0x86, 0x84, 0x9c, 0x13, 0x86, 0x84, - 0x9b, 0x13, 0x87, 0x84, 0x9c, 0x13, 0x87, 0x84, 0x9b, 0x13, 0x88, 0x84, - 0x9c, 0x13, 0x88, 0x84, 0x9b, 0x13, 0x89, 0x84, 0x9c, 0x13, 0x89, 0x84, - 0x9b, 0x13, 0x8a, 0x84, 0x9c, 0x13, 0x8a, 0x84, 0x9b, 0x13, 0x8b, 0x84, - 0x9c, 0x13, 0x8b, 0x84, 0x9b, 0x13, 0x8c, 0x84, 0x9c, 0x13, 0x8c, 0x84, - 0x9b, 0x13, 0x8d, 0x84, 0x9c, 0x13, 0x8d, 0x84, 0x9b, 0x13, 0x8e, 0x84, - 0x9c, 0x13, 0x8e, 0x84, 0x9b, 0x13, 0x8e, 0x84, 0x9c, 0x13, 0x8f, 0x84, - 0x9b, 0x13, 0x8f, 0x84, 0x9c, 0x13, 0x90, 0x84, 0x9b, 0x13, 0x90, 0x84, - 0x9c, 0x13, 0x91, 0x84, 0x9b, 0x13, 0x91, 0x84, 0x9c, 0x13, 0x92, 0x84, - 0x9b, 0x13, 0x92, 0x84, 0x9c, 0x13, 0x93, 0x84, 0x9b, 0x13, 0x93, 0x84, - 0x9c, 0x13, 0x94, 0x84, 0x9b, 0x13, 0x94, 0x84, 0x9c, 0x13, 0x94, 0x84, - 0x9b, 0x13, 0x95, 0x84, 0x9c, 0x13, 0x95, 0x84, 0x9b, 0x13, 0x96, 0x84, - 0x9c, 0x13, 0x96, 0x84, 0x9b, 0x13, 0x97, 0x84, 0x9c, 0x13, 0x97, 0x84, - 0x9b, 0x13, 0x98, 0x84, 0x9c, 0x13, 0x98, 0x84, 0x9b, 0x13, 0x98, 0x84, - 0x9c, 0x13, 0x99, 0x84, 0x9b, 0x13, 0x99, 0x84, 0x9c, 0x13, 0x9a, 0x84, - 0x9b, 0x13, 0x9a, 0x84, 0x9c, 0x13, 0x9a, 0x84, 0x9b, 0x13, 0x9b, 0x84, - 0x9c, 0x13, 0x9b, 0x84, 0x9b, 0x13, 0x9c, 0x84, 0x9c, 0x13, 0x9c, 0x84, - 0x9c, 0x13, 0x9d, 0x84, 0x9d, 0x13, 0x9d, 0x84, 0x9d, 0x13, 0x9d, 0x84, - 0x9d, 0x13, 0x9e, 0x84, 0x9e, 0x13, 0x9e, 0x84, 0x9e, 0x13, 0x9f, 0x84, - 0x9f, 0x13, 0x9f, 0x84, 0x9e, 0x13, 0x9f, 0x84, 0x9f, 0x13, 0xa0, 0x84, - 0x9e, 0x13, 0xa0, 0x84, 0x9f, 0x13, 0xa1, 0x84, 0x9e, 0x13, 0xa1, 0x84, - 0x9f, 0x13, 0xa1, 0x84, 0x9e, 0x13, 0xa2, 0x84, 0x9f, 0x13, 0xa2, 0x84, - 0x9e, 0x13, 0xa3, 0x84, 0x9f, 0x13, 0xa3, 0x84, 0x9e, 0x13, 0xa3, 0x84, - 0x9f, 0x13, 0xa4, 0x84, 0x9e, 0x13, 0xa4, 0x84, 0x9f, 0x13, 0xa5, 0x84, - 0x9e, 0x13, 0xa5, 0x84, 0x9f, 0x13, 0xa5, 0x84, 0x9e, 0x13, 0xa6, 0x84, - 0x9f, 0x13, 0xa6, 0x84, 0x9e, 0x13, 0xa6, 0x84, 0x9f, 0x13, 0xa7, 0x85, - 0xa2, 0x13, 0xa7, 0x84, 0x9f, 0x13, 0xa8, 0x85, 0xa2, 0x13, 0xa8, 0x84, - 0x9f, 0x13, 0xa8, 0x85, 0xa2, 0x13, 0xa9, 0x85, 0xa2, 0x13, 0xa9, 0x85, - 0xa2, 0x13, 0xaa, 0x85, 0xa2, 0x13, 0xaa, 0x85, 0xa2, 0x13, 0xaa, 0x86, - 0xa6, 0x13, 0xab, 0x86, 0xa6, 0x13, 0xab, 0x86, 0xa6, 0x13, 0xab, 0x86, - 0xa6, 0x13, 0xac, 0x86, 0xa6, 0x13, 0xac, 0x86, 0xa6, 0x13, 0xac, 0x86, - 0xa6, 0x13, 0xad, 0x86, 0xa6, 0x13, 0xad, 0x86, 0xa6, 0x13, 0xae, 0x86, - 0xa6, 0x13, 0xae, 0x87, 0xaa, 0x13, 0xae, 0x86, 0xa6, 0x13, 0xaf, 0x87, - 0xaa, 0x13, 0xaf, 0x86, 0xa6, 0x13, 0xaf, 0x87, 0xaa, 0x13, 0xb0, 0x87, - 0xa9, 0x13, 0xb0, 0x87, 0xaa, 0x13, 0xb0, 0x87, 0xa9, 0x13, 0xb1, 0x87, - 0xaa, 0x13, 0xb1, 0x87, 0xa9, 0x13, 0xb2, 0x87, 0xaa, 0x13, 0xb2, 0x88, - 0xad, 0x13, 0xb2, 0x88, 0xad, 0x13, 0xb3, 0x88, 0xad, 0x13, 0xb3, 0x88, - 0xad, 0x13, 0xb3, 0x88, 0xad, 0x13, 0xb4, 0x88, 0xad, 0x13, 0xb4, 0x88, - 0xad, 0x13, 0xb4, 0x88, 0xad, 0x13, 0xb5, 0x88, 0xad, 0x13, 0xb5, 0x88, - 0xad, 0x13, 0xb5, 0x89, 0xb0, 0x13, 0xb6, 0x88, 0xad, 0x13, 0xb6, 0x89, - 0xb0, 0x13, 0xb6, 0x88, 0xad, 0x13, 0xb7, 0x89, 0xb0, 0x13, 0xb7, 0x89, - 0xb2, 0x13, 0xb7, 0x89, 0xb0, 0x13, 0xb8, 0x89, 0xb2, 0x13, 0xb8, 0x89, - 0xb0, 0x13, 0xb8, 0x89, 0xb2, 0x13, 0xb9, 0x89, 0xb0, 0x13, 0xb9, 0x89, - 0xb2, 0x13, 0xb9, 0x89, 0xb2, 0x13, 0xba, 0x89, 0xb2, 0x13, 0xba, 0x89, - 0xb2, 0x13, 0xba, 0x89, 0xb2, 0x13, 0xbb, 0x8a, 0xb3, 0x13, 0xbb, 0x8a, - 0xb4, 0x13, 0xbb, 0x8b, 0xb7, 0x13, 0xbc, 0x8b, 0xb7, 0x13, 0xbc, 0x8b, - 0xb7, 0x13, 0xbc, 0x8b, 0xb7, 0x13, 0xbd, 0x8b, 0xb7, 0x13, 0xbd, 0x8b, - 0xb7, 0x13, 0xbd, 0x8b, 0xb7, 0x13, 0xbe, 0x8b, 0xb7, 0x13, 0xbe, 0x8b, - 0xb7, 0x13, 0xbe, 0x8b, 0xb7, 0x13, 0xbf, 0x8b, 0xb7, 0x13, 0xbf, 0x8b, - 0xb7, 0x13, 0xbf, 0x8c, 0xba, 0x13, 0xc0, 0x8b, 0xb7, 0x13, 0xc0, 0x8c, - 0xba, 0x13, 0xc0, 0x8c, 0xba, 0x13, 0xc1, 0x8c, 0xba, 0x13, 0xc1, 0x8c, - 0xba, 0x13, 0xc1, 0x8c, 0xba, 0x13, 0xc1, 0x8c, 0xba, 0x13, 0xc2, 0x8c, - 0xba, 0x13, 0xc2, 0x8d, 0xbd, 0x13, 0xc2, 0x8c, 0xba, 0x13, 0xc3, 0x8d, - 0xbd, 0x13, 0xc3, 0x8c, 0xba, 0x13, 0xc3, 0x8d, 0xbd, 0x13, 0xc4, 0x8d, - 0xbd, 0x13, 0xc4, 0x8d, 0xbd, 0x13, 0xc4, 0x8d, 0xbd, 0x13, 0xc5, 0x8d, - 0xbd, 0x13, 0xc5, 0x8e, 0xc0, 0x13, 0xc5, 0x8e, 0xc0, 0x13, 0xc6, 0x8e, - 0xc0, 0x13, 0xc6, 0x8e, 0xc0, 0x13, 0xc6, 0x8e, 0xc0, 0x13, 0xc6, 0x8e, - 0xc0, 0x13, 0xc7, 0x8e, 0xc0, 0x13, 0xc7, 0x8e, 0xc0, 0x13, 0xc7, 0x8e, - 0xc0, 0x13, 0xc8, 0x8e, 0xc0, 0x13, 0xc8, 0x8e, 0xc3, 0x13, 0xc8, 0x8e, - 0xc0, 0x13, 0xc9, 0x8e, 0xc3, 0x13, 0xc9, 0x8e, 0xc0, 0x13, 0xc9, 0x8e, - 0xc3, 0x13, 0xc9, 0x8e, 0xc3, 0x13, 0xca, 0x8e, 0xc3, 0x13, 0xca, 0x8e, - 0xc3, 0x13, 0xca, 0x8e, 0xc3, 0x13, 0xcb, 0x8f, 0xc6, 0x13, 0xcb, 0x8e, - 0xc3, 0x13, 0xcb, 0x8f, 0xc6, 0x13, 0xcc, 0x8e, 0xc3, 0x13, 0xcc, 0x8f, - 0xc6, 0x13, 0xcc, 0x8f, 0xc6, 0x13, 0xcc, 0x8f, 0xc6, 0x13, 0xcd, 0x8f, - 0xc6, 0x13, 0xcd, 0x8f, 0xc6, 0x13, 0xcd, 0x90, 0xc9, 0x13, 0xce, 0x90, - 0xc9, 0x13, 0xce, 0x90, 0xc9, 0x13, 0xce, 0x90, 0xc9, 0x13, 0xce, 0x90, - 0xc9, 0x13, 0xcf, 0x90, 0xc9, 0x13, 0xcf, 0x90, 0xc9, 0x13, 0xcf, 0x90, - 0xc9, 0x13, 0xd0, 0x90, 0xc9, 0x13, 0xd0, 0x90, 0xc9, 0x13, 0xd0, 0x90, - 0xc9, 0x13, 0xd0, 0x90, 0xc9, 0x13, 0xd1, 0x91, 0xcc, 0x13, 0xd1, 0x90, - 0xc9, 0x13, 0xd1, 0x91, 0xcc, 0x13, 0xd2, 0x90, 0xc9, 0x13, 0xd2, 0x91, - 0xcc, 0x13, 0xd2, 0x91, 0xcb, 0x13, 0xd2, 0x91, 0xcc, 0x13, 0xd3, 0x91, - 0xcb, 0x13, 0xd3, 0x91, 0xcc, 0x13, 0xd3, 0x92, 0xce, 0x13, 0xd4, 0x92, - 0xce, 0x13, 0xd4, 0x92, 0xce, 0x13, 0xd4, 0x92, 0xce, 0x13, 0xd4, 0x92, - 0xce, 0x13, 0xd5, 0x92, 0xce, 0x13, 0xd5, 0x92, 0xce, 0x13, 0xd5, 0x92, - 0xce, 0x13, 0xd6, 0x92, 0xce, 0x13, 0xd6, 0x92, 0xce, 0x13, 0xd6, 0x93, - 0xd1, 0x13, 0xd6, 0x92, 0xce, 0x13, 0xd7, 0x93, 0xd1, 0x13, 0xd7, 0x92, - 0xce, 0x13, 0xd7, 0x93, 0xd1, 0x13, 0xd7, 0x93, 0xd1, 0x13, 0xd8, 0x93, - 0xd1, 0x13, 0xd8, 0x93, 0xd1, 0x13, 0xd8, 0x93, 0xd1, 0x13, 0xd9, 0x94, - 0xd4, 0x13, 0xd9, 0x93, 0xd1, 0x13, 0xd9, 0x94, 0xd4, 0x13, 0xd9, 0x93, - 0xd1, 0x13, 0xda, 0x94, 0xd4, 0x13, 0xda, 0x93, 0xd1, 0x13, 0xda, 0x94, - 0xd4, 0x13, 0xda, 0x94, 0xd3, 0x13, 0xdb, 0x94, 0xd4, 0x13, 0xdb, 0x94, - 0xd3, 0x13, 0xdb, 0x94, 0xd4, 0x13, 0xdb, 0x95, 0xd6, 0x13, 0xdc, 0x95, - 0xd6, 0x13, 0xdc, 0x95, 0xd6, 0x13, 0xdc, 0x95, 0xd6, 0x13, 0xdd, 0x95, - 0xd6, 0x13, 0xdd, 0x95, 0xd6, 0x13, 0xdd, 0x95, 0xd6, 0x13, 0xdd, 0x95, - 0xd6, 0x13, 0xde, 0x95, 0xd6, 0x13, 0xde, 0x95, 0xd6, 0x13, 0xde, 0x96, - 0xd9, 0x13, 0xde, 0x95, 0xd6, 0x13, 0xdf, 0x96, 0xd9, 0x13, 0xdf, 0x95, - 0xd6, 0x13, 0xdf, 0x96, 0xd9, 0x13, 0xdf, 0x96, 0xd9, 0x13, 0xe0, 0x96, - 0xd9, 0x13, 0xe0, 0x96, 0xd9, 0x13, 0xe0, 0x96, 0xd9, 0x13, 0xe1, 0x97, - 0xdb, 0x13, 0xe1, 0x96, 0xd9, 0x13, 0xe1, 0x97, 0xdb, 0x13, 0xe1, 0x96, - 0xd9, 0x13, 0xe2, 0x97, 0xdb, 0x13, 0xe2, 0x97, 0xdb, 0x13, 0xe2, 0x97, - 0xdb, 0x13, 0xe2, 0x97, 0xdb, 0x13, 0xe3, 0x97, 0xdb, 0x13, 0xe3, 0x98, - 0xde, 0x13, 0xe3, 0x98, 0xde, 0x13, 0xe3, 0x98, 0xde, 0x13, 0xe4, 0x98, - 0xde, 0x13, 0xe4, 0x98, 0xde, 0x13, 0xe4, 0x98, 0xde, 0x13, 0xe4, 0x98, - 0xde, 0x13, 0xe5, 0x98, 0xde, 0x13, 0xe5, 0x98, 0xde, 0x13, 0xe5, 0x98, - 0xde, 0x13, 0xe5, 0x98, 0xe0, 0x13, 0xe6, 0x98, 0xde, 0x13, 0xe6, 0x98, - 0xe0, 0x13, 0xe6, 0x98, 0xde, 0x13, 0xe6, 0x98, 0xe0, 0x13, 0xe7, 0x98, - 0xde, 0x13, 0xe7, 0x98, 0xe0, 0x13, 0xe7, 0x98, 0xe0, 0x13, 0xe7, 0x98, - 0xe0, 0x13, 0xe8, 0x99, 0xe3, 0x13, 0xe8, 0x98, 0xe0, 0x13, 0xe8, 0x99, - 0xe3, 0x13, 0xe8, 0x98, 0xe0, 0x13, 0xe9, 0x99, 0xe3, 0x13, 0xe9, 0x98, - 0xe0, 0x13, 0xe9, 0x99, 0xe3, 0x13, 0xe9, 0x99, 0xe2, 0x13, 0xea, 0x99, - 0xe3, 0x13, 0xea, 0x99, 0xe2, 0x13, 0xea, 0x99, 0xe3, 0x13, 0xea, 0x9a, - 0xe5, 0x13, 0xeb, 0x9a, 0xe5, 0x13, 0xeb, 0x9a, 0xe5, 0x13, 0xeb, 0x9a, - 0xe5, 0x13, 0xeb, 0x9a, 0xe5, 0x13, 0xec, 0x9a, 0xe5, 0x13, 0xec, 0x9a, - 0xe5, 0x13, 0xec, 0x9a, 0xe5, 0x13, 0xec, 0x9a, 0xe5, 0x13, 0xec, 0x9a, - 0xe5, 0x13, 0xed, 0x9b, 0xe7, 0x13, 0xed, 0x9a, 0xe5, 0x13, 0xed, 0x9b, - 0xe7, 0x13, 0xed, 0x9a, 0xe5, 0x13, 0xee, 0x9b, 0xe7, 0x13, 0xee, 0x9a, - 0xe5, 0x13, 0xee, 0x9b, 0xe7, 0x13, 0xee, 0x9b, 0xe7, 0x13, 0xef, 0x9b, - 0xe7, 0x13, 0xef, 0x9c, 0xea, 0x13, 0xef, 0x9c, 0xea, 0x13, 0xef, 0x9c, - 0xea, 0x13, 0xf0, 0x9c, 0xea, 0x13, 0xf0, 0x9c, 0xea, 0x13, 0xf0, 0x9c, - 0xea, 0x13, 0xf0, 0x9c, 0xea, 0x13, 0xf1, 0x9c, 0xea, 0x13, 0xf1, 0x9c, - 0xea, 0x13, 0xf1, 0x9c, 0xea, 0x13, 0xf1, 0x9d, 0xec, 0x13, 0xf2, 0x9c, - 0xea, 0x13, 0xf2, 0x9d, 0xec, 0x13, 0xf2, 0x9c, 0xea, 0x13, 0xf2, 0x9d, - 0xec, 0x13, 0xf2, 0x9c, 0xea, 0x13, 0xf3, 0x9d, 0xec, 0x13, 0xf3, 0x9d, - 0xec, 0x13, 0xf3, 0x9d, 0xec, 0x13, 0xf3, 0x9d, 0xec, 0x13, 0xf4, 0x9d, - 0xec, 0x13, 0xf4, 0x9d, 0xee, 0x13, 0xf4, 0x9d, 0xec, 0x13, 0xf4, 0x9d, - 0xee, 0x13, 0xf5, 0x9d, 0xec, 0x13, 0xf5, 0x9d, 0xee, 0x13, 0xf5, 0x9d, - 0xee, 0x13, 0xf5, 0x9d, 0xee, 0x13, 0xf5, 0x9d, 0xee, 0x13, 0xf6, 0x9d, - 0xee, 0x13, 0xf6, 0x9e, 0xf0, 0x13, 0xf6, 0x9e, 0xf1, 0x13, 0xf6, 0x9e, - 0xf0, 0x13, 0xf7, 0x9e, 0xf1, 0x13, 0xf7, 0x9e, 0xf0, 0x13, 0xf7, 0x9e, - 0xf1, 0x13, 0xf7, 0x9e, 0xf0, 0x13, 0xf8, 0x9e, 0xf1, 0x13, 0xf8, 0x9e, - 0xf0, 0x13, 0xf8, 0x9e, 0xf1, 0x13, 0xf8, 0x9f, 0xf3, 0x13, 0xf8, 0x9e, - 0xf1, 0x13, 0xf9, 0x9f, 0xf3, 0x13, 0xf9, 0x9e, 0xf1, 0x13, 0xf9, 0x9f, - 0xf3, 0x13, 0xf9, 0x9e, 0xf1, 0x13, 0xfa, 0x9f, 0xf3, 0x13, 0xfa, 0x9f, - 0xf2, 0x13, 0xfa, 0x9f, 0xf3, 0x13, 0xfa, 0xa0, 0xf5, 0x13, 0xfa, 0x9f, - 0xf3, 0x13, 0xfb, 0xa0, 0xf5, 0x13, 0xfb, 0x9f, 0xf3, 0x13, 0xfb, 0xa0, - 0xf5, 0x13, 0xfb, 0x9f, 0xf3, 0x13, 0xfc, 0xa0, 0xf5, 0x13, 0xfc, 0xa0, - 0xf5, 0x13, 0xfc, 0xa0, 0xf5, 0x13, 0xfc, 0xa1, 0xf7, 0x13, 0xfc, 0xa1, - 0xf7, 0x13, 0xfd, 0xa1, 0xf7, 0x13, 0xfd, 0xa1, 0xf7, 0x13, 0xfd, 0xa1, - 0xf7, 0x13, 0xfd, 0xa1, 0xf7, 0x13, 0xfe, 0xa1, 0xf7, 0x13, 0xfe, 0xa1, - 0xf7, 0x13, 0xfe, 0xa1, 0xf7, 0x13, 0xfe, 0xa1, 0xf7, 0x13, 0xfe, 0xa1, - 0xf9, 0x13, 0xff, 0xa1, 0xf7, 0x13, 0xff, 0xa1, 0xf9, 0x13, 0x03, 0x83, - 0x9b, 0x13, 0x0a, 0x83, 0x9b, 0x13, 0x0f, 0x83, 0x9b, 0x13, 0x14, 0x83, - 0x9b, 0x13, 0x17, 0x83, 0x9b, 0x13, 0x1b, 0x83, 0x9b, 0x13, 0x1e, 0x83, - 0x9b, 0x13, 0x20, 0x83, 0x9c, 0x13, 0x23, 0x83, 0x9b, 0x13, 0x25, 0x83, - 0x9c, 0x13, 0x27, 0x83, 0x9b, 0x13, 0x29, 0x83, 0x9c, 0x13, 0x2b, 0x83, - 0x9b, 0x13, 0x2d, 0x83, 0x9c, 0x13, 0x2f, 0x83, 0x9b, 0x13, 0x31, 0x83, - 0x9c, 0x13, 0x32, 0x83, 0x9b, 0x13, 0x34, 0x83, 0x9c, 0x13, 0x35, 0x83, - 0x9b, 0x13, 0x37, 0x83, 0x9c, 0x13, 0x38, 0x83, 0x9b, 0x13, 0x3a, 0x83, - 0x9c, 0x13, 0x3b, 0x83, 0x9b, 0x13, 0x3c, 0x83, 0x9c, 0x13, 0x3e, 0x83, - 0x9b, 0x13, 0x3f, 0x83, 0x9c, 0x13, 0x40, 0x83, 0x9b, 0x13, 0x42, 0x83, - 0x9c, 0x13, 0x43, 0x83, 0x9b, 0x13, 0x44, 0x83, 0x9c, 0x13, 0x45, 0x83, - 0x9b, 0x13, 0x46, 0x83, 0x9c, 0x13, 0x47, 0x83, 0x9b, 0x13, 0x48, 0x83, - 0x9c, 0x13, 0x49, 0x83, 0x9b, 0x13, 0x4a, 0x83, 0x9c, 0x13, 0x4b, 0x83, - 0x9b, 0x13, 0x4c, 0x83, 0x9c, 0x13, 0x4d, 0x83, 0x9b, 0x13, 0x4e, 0x83, - 0x9c, 0x13, 0x4f, 0x83, 0x9b, 0x13, 0x50, 0x83, 0x9c, 0x13, 0x51, 0x83, - 0x9b, 0x13, 0x52, 0x83, 0x9c, 0x13, 0x53, 0x83, 0x9b, 0x13, 0x54, 0x83, - 0x9c, 0x13, 0x55, 0x83, 0x9b, 0x13, 0x56, 0x83, 0x9c, 0x13, 0x57, 0x83, - 0x9b, 0x13, 0x58, 0x83, 0x9c, 0x13, 0x58, 0x83, 0x9b, 0x13, 0x59, 0x83, - 0x9c, 0x13, 0x5a, 0x83, 0x9b, 0x13, 0x5b, 0x83, 0x9c, 0x13, 0x5c, 0x83, - 0x9b, 0x13, 0x5d, 0x83, 0x9c, 0x13, 0x5d, 0x83, 0x9b, 0x13, 0x5e, 0x83, - 0x9c, 0x13, 0x5f, 0x83, 0x9b, 0x13, 0x60, 0x83, 0x9c, 0x13, 0x60, 0x83, - 0x9b, 0x13, 0x61, 0x83, 0x9c, 0x13, 0x62, 0x83, 0x9b, 0x13, 0x63, 0x83, - 0x9c, 0x13, 0x63, 0x83, 0x9b, 0x13, 0x64, 0x83, 0x9c, 0x13, 0x65, 0x83, - 0x9b, 0x13, 0x66, 0x83, 0x9c, 0x13, 0x66, 0x83, 0x9b, 0x13, 0x67, 0x83, - 0x9c, 0x13, 0x68, 0x83, 0x9b, 0x13, 0x68, 0x83, 0x9c, 0x13, 0x69, 0x83, - 0x9b, 0x13, 0x6a, 0x83, 0x9c, 0x13, 0x6a, 0x83, 0x9b, 0x13, 0x6b, 0x83, - 0x9c, 0x13, 0x6c, 0x83, 0x9b, 0x13, 0x6c, 0x83, 0x9c, 0x13, 0x6d, 0x83, - 0x9b, 0x13, 0x6e, 0x83, 0x9c, 0x13, 0x6e, 0x83, 0x9b, 0x13, 0x6f, 0x83, - 0x9c, 0x13, 0x70, 0x83, 0x9b, 0x13, 0x70, 0x83, 0x9c, 0x13, 0x71, 0x83, - 0x9b, 0x13, 0x72, 0x83, 0x9c, 0x13, 0x72, 0x83, 0x9b, 0x13, 0x73, 0x83, - 0x9c, 0x13, 0x73, 0x83, 0x9b, 0x13, 0x74, 0x83, 0x9c, 0x13, 0x75, 0x83, - 0x9b, 0x13, 0x75, 0x83, 0x9c, 0x13, 0x76, 0x83, 0x9b, 0x13, 0x76, 0x83, - 0x9c, 0x13, 0x77, 0x83, 0x9b, 0x13, 0x78, 0x83, 0x9c, 0x13, 0x78, 0x83, - 0x9b, 0x13, 0x79, 0x83, 0x9c, 0x13, 0x79, 0x83, 0x9b, 0x13, 0x7a, 0x83, - 0x9c, 0x13, 0x7a, 0x83, 0x9b, 0x13, 0x7b, 0x83, 0x9c, 0x13, 0x7c, 0x83, - 0x9b, 0x13, 0x7c, 0x83, 0x9c, 0x13, 0x7d, 0x83, 0x9b, 0x13, 0x7d, 0x83, - 0x9c, 0x13, 0x7e, 0x83, 0x9b, 0x13, 0x7e, 0x83, 0x9c, 0x13, 0x7f, 0x83, - 0x9b, 0x13, 0x7f, 0x83, 0x9c, 0x13, 0x80, 0x83, 0x9b, 0x13, 0x81, 0x83, - 0x9c, 0x13, 0x81, 0x83, 0x9b, 0x13, 0x82, 0x83, 0x9c, 0x13, 0x82, 0x83, - 0x9b, 0x13, 0x83, 0x83, 0x9c, 0x13, 0x83, 0x83, 0x9b, 0x13, 0x84, 0x83, - 0x9c, 0x13, 0x84, 0x83, 0x9b, 0x13, 0x85, 0x83, 0x9c, 0x13, 0x85, 0x83, - 0x9b, 0x13, 0x86, 0x83, 0x9c, 0x13, 0x86, 0x83, 0x9b, 0x13, 0x87, 0x83, - 0x9c, 0x13, 0x87, 0x83, 0x9b, 0x13, 0x88, 0x83, 0x9c, 0x13, 0x88, 0x83, - 0x9b, 0x13, 0x89, 0x83, 0x9c, 0x13, 0x89, 0x83, 0x9b, 0x13, 0x8a, 0x83, - 0x9c, 0x13, 0x8a, 0x83, 0x9b, 0x13, 0x8b, 0x83, 0x9c, 0x13, 0x8b, 0x83, - 0x9b, 0x13, 0x8c, 0x83, 0x9c, 0x13, 0x8c, 0x83, 0x9b, 0x13, 0x8d, 0x83, - 0x9c, 0x13, 0x8d, 0x83, 0x9b, 0x13, 0x8e, 0x83, 0x9c, 0x13, 0x8e, 0x83, - 0x9b, 0x13, 0x8e, 0x83, 0x9c, 0x13, 0x8f, 0x83, 0x9b, 0x13, 0x8f, 0x83, - 0x9c, 0x13, 0x90, 0x83, 0x9b, 0x13, 0x90, 0x83, 0x9c, 0x13, 0x91, 0x83, - 0x9b, 0x13, 0x91, 0x83, 0x9c, 0x13, 0x92, 0x83, 0x9b, 0x13, 0x92, 0x83, - 0x9c, 0x13, 0x93, 0x83, 0x9b, 0x13, 0x93, 0x83, 0x9c, 0x13, 0x94, 0x83, - 0x9b, 0x13, 0x94, 0x83, 0x9c, 0x13, 0x94, 0x83, 0x9b, 0x13, 0x95, 0x83, - 0x9c, 0x13, 0x95, 0x83, 0x9b, 0x13, 0x96, 0x83, 0x9c, 0x13, 0x96, 0x83, - 0x9b, 0x13, 0x97, 0x83, 0x9c, 0x13, 0x97, 0x83, 0x9b, 0x13, 0x98, 0x83, - 0x9c, 0x13, 0x98, 0x83, 0x9b, 0x13, 0x98, 0x83, 0x9c, 0x13, 0x99, 0x83, - 0x9b, 0x13, 0x99, 0x83, 0x9c, 0x13, 0x9a, 0x83, 0x9b, 0x13, 0x9a, 0x83, - 0x9c, 0x13, 0x9a, 0x83, 0x9b, 0x13, 0x9b, 0x83, 0x9c, 0x13, 0x9b, 0x83, - 0x9b, 0x13, 0x9c, 0x83, 0x9c, 0x13, 0x9c, 0x83, 0x9c, 0x13, 0x9d, 0x83, - 0x9d, 0x13, 0x9d, 0x83, 0x9c, 0x13, 0x9d, 0x83, 0x9d, 0x13, 0x9e, 0x83, - 0x9c, 0x13, 0x9e, 0x83, 0x9d, 0x13, 0x9f, 0x83, 0x9c, 0x13, 0x9f, 0x83, - 0x9d, 0x13, 0x9f, 0x83, 0x9c, 0x13, 0xa0, 0x83, 0x9d, 0x13, 0xa0, 0x83, - 0x9c, 0x13, 0xa1, 0x83, 0x9d, 0x13, 0xa1, 0x83, 0x9c, 0x13, 0xa1, 0x83, - 0x9d, 0x13, 0xa2, 0x83, 0x9c, 0x13, 0xa2, 0x83, 0x9d, 0x13, 0xa3, 0x83, - 0x9c, 0x13, 0xa3, 0x83, 0x9d, 0x13, 0xa3, 0x83, 0x9c, 0x13, 0xa4, 0x83, - 0x9d, 0x13, 0xa4, 0x83, 0x9c, 0x13, 0xa5, 0x83, 0x9d, 0x13, 0xa5, 0x84, - 0xa0, 0x13, 0xa5, 0x84, 0xa1, 0x13, 0xa6, 0x84, 0xa0, 0x13, 0xa6, 0x84, - 0xa1, 0x13, 0xa6, 0x84, 0xa0, 0x13, 0xa7, 0x84, 0xa1, 0x13, 0xa7, 0x84, - 0xa0, 0x13, 0xa8, 0x84, 0xa1, 0x13, 0xa8, 0x84, 0xa0, 0x13, 0xa8, 0x84, - 0xa1, 0x13, 0xa9, 0x85, 0xa4, 0x13, 0xa9, 0x84, 0xa1, 0x13, 0xaa, 0x85, - 0xa4, 0x13, 0xaa, 0x84, 0xa1, 0x13, 0xaa, 0x85, 0xa4, 0x13, 0xab, 0x85, - 0xa4, 0x13, 0xab, 0x85, 0xa4, 0x13, 0xab, 0x85, 0xa4, 0x13, 0xac, 0x85, - 0xa4, 0x13, 0xac, 0x86, 0xa8, 0x13, 0xac, 0x85, 0xa4, 0x13, 0xad, 0x86, - 0xa8, 0x13, 0xad, 0x85, 0xa4, 0x13, 0xae, 0x86, 0xa8, 0x13, 0xae, 0x86, - 0xa7, 0x13, 0xae, 0x86, 0xa8, 0x13, 0xaf, 0x86, 0xa7, 0x13, 0xaf, 0x86, - 0xa8, 0x13, 0xaf, 0x87, 0xab, 0x13, 0xb0, 0x87, 0xab, 0x13, 0xb0, 0x87, - 0xab, 0x13, 0xb0, 0x87, 0xab, 0x13, 0xb1, 0x87, 0xab, 0x13, 0xb1, 0x87, - 0xab, 0x13, 0xb2, 0x87, 0xab, 0x13, 0xb2, 0x87, 0xab, 0x13, 0xb2, 0x87, - 0xab, 0x13, 0xb3, 0x87, 0xab, 0x13, 0xb3, 0x87, 0xab, 0x13, 0xb3, 0x87, - 0xab, 0x13, 0xb4, 0x88, 0xaf, 0x13, 0xb4, 0x87, 0xab, 0x13, 0xb4, 0x88, - 0xaf, 0x13, 0xb5, 0x88, 0xae, 0x13, 0xb5, 0x88, 0xaf, 0x13, 0xb5, 0x88, - 0xae, 0x13, 0xb6, 0x88, 0xaf, 0x13, 0xb6, 0x88, 0xae, 0x13, 0xb6, 0x88, - 0xaf, 0x13, 0xb7, 0x89, 0xb2, 0x13, 0xb7, 0x89, 0xb2, 0x13, 0xb7, 0x89, - 0xb2, 0x13, 0xb8, 0x89, 0xb2, 0x13, 0xb8, 0x89, 0xb2, 0x13, 0xb8, 0x89, - 0xb2, 0x13, 0xb9, 0x89, 0xb2, 0x13, 0xb9, 0x89, 0xb2, 0x13, 0xb9, 0x89, - 0xb2, 0x13, 0xba, 0x89, 0xb2, 0x13, 0xba, 0x8a, 0xb5, 0x13, 0xba, 0x89, - 0xb2, 0x13, 0xbb, 0x8a, 0xb5, 0x13, 0xbb, 0x89, 0xb2, 0x13, 0xbb, 0x8a, - 0xb5, 0x13, 0xbc, 0x8a, 0xb5, 0x13, 0xbc, 0x8a, 0xb5, 0x13, 0xbc, 0x8a, - 0xb5, 0x13, 0xbd, 0x8a, 0xb5, 0x13, 0xbd, 0x8b, 0xb8, 0x13, 0xbd, 0x8a, - 0xb5, 0x13, 0xbe, 0x8b, 0xb8, 0x13, 0xbe, 0x8a, 0xb5, 0x13, 0xbe, 0x8b, - 0xb8, 0x13, 0xbf, 0x8b, 0xb8, 0x13, 0xbf, 0x8b, 0xb8, 0x13, 0xbf, 0x8b, - 0xb8, 0x13, 0xc0, 0x8b, 0xb8, 0x13, 0xc0, 0x8b, 0xb8, 0x13, 0xc0, 0x8b, - 0xb8, 0x13, 0xc1, 0x8c, 0xbb, 0x13, 0xc1, 0x8c, 0xbc, 0x13, 0xc1, 0x8c, - 0xbb, 0x13, 0xc1, 0x8c, 0xbc, 0x13, 0xc2, 0x8c, 0xbb, 0x13, 0xc2, 0x8c, - 0xbc, 0x13, 0xc2, 0x8c, 0xbb, 0x13, 0xc3, 0x8c, 0xbc, 0x13, 0xc3, 0x8c, - 0xbb, 0x13, 0xc3, 0x8c, 0xbc, 0x13, 0xc4, 0x8d, 0xbf, 0x13, 0xc4, 0x8c, - 0xbc, 0x13, 0xc4, 0x8d, 0xbf, 0x13, 0xc5, 0x8c, 0xbc, 0x13, 0xc5, 0x8d, - 0xbf, 0x13, 0xc5, 0x8d, 0xbe, 0x13, 0xc6, 0x8d, 0xbf, 0x13, 0xc6, 0x8d, - 0xbe, 0x13, 0xc6, 0x8d, 0xbf, 0x13, 0xc6, 0x8e, 0xc1, 0x13, 0xc7, 0x8d, - 0xbf, 0x13, 0xc7, 0x8e, 0xc1, 0x13, 0xc7, 0x8d, 0xbf, 0x13, 0xc8, 0x8e, - 0xc1, 0x13, 0xc8, 0x8e, 0xc1, 0x13, 0xc8, 0x8e, 0xc1, 0x13, 0xc9, 0x8e, - 0xc1, 0x13, 0xc9, 0x8e, 0xc1, 0x13, 0xc9, 0x8f, 0xc4, 0x13, 0xc9, 0x8f, - 0xc5, 0x13, 0xca, 0x8f, 0xc4, 0x13, 0xca, 0x8f, 0xc5, 0x13, 0xca, 0x8f, - 0xc4, 0x13, 0xcb, 0x8f, 0xc5, 0x13, 0xcb, 0x8f, 0xc4, 0x13, 0xcb, 0x8f, - 0xc5, 0x13, 0xcc, 0x8f, 0xc4, 0x13, 0xcc, 0x8f, 0xc5, 0x13, 0xcc, 0x90, - 0xc7, 0x13, 0xcc, 0x8f, 0xc5, 0x13, 0xcd, 0x90, 0xc7, 0x13, 0xcd, 0x8f, - 0xc5, 0x13, 0xcd, 0x90, 0xc7, 0x13, 0xce, 0x90, 0xc7, 0x13, 0xce, 0x90, - 0xc7, 0x13, 0xce, 0x90, 0xc7, 0x13, 0xce, 0x90, 0xc7, 0x13, 0xcf, 0x91, - 0xca, 0x13, 0xcf, 0x90, 0xc7, 0x13, 0xcf, 0x91, 0xca, 0x13, 0xd0, 0x90, - 0xc7, 0x13, 0xd0, 0x91, 0xca, 0x13, 0xd0, 0x90, 0xc7, 0x13, 0xd0, 0x91, - 0xca, 0x13, 0xd1, 0x91, 0xca, 0x13, 0xd1, 0x91, 0xca, 0x13, 0xd1, 0x91, - 0xca, 0x13, 0xd2, 0x91, 0xca, 0x13, 0xd2, 0x92, 0xcd, 0x13, 0xd2, 0x92, - 0xcd, 0x13, 0xd2, 0x92, 0xcd, 0x13, 0xd3, 0x92, 0xcd, 0x13, 0xd3, 0x92, - 0xcd, 0x13, 0xd3, 0x92, 0xcd, 0x13, 0xd4, 0x92, 0xcd, 0x13, 0xd4, 0x92, - 0xcd, 0x13, 0xd4, 0x92, 0xcd, 0x13, 0xd4, 0x92, 0xcd, 0x13, 0xd5, 0x93, - 0xd0, 0x13, 0xd5, 0x92, 0xcd, 0x13, 0xd5, 0x93, 0xd0, 0x13, 0xd6, 0x92, - 0xcd, 0x13, 0xd6, 0x93, 0xd0, 0x13, 0xd6, 0x93, 0xcf, 0x13, 0xd6, 0x93, - 0xd0, 0x13, 0xd7, 0x93, 0xcf, 0x13, 0xd7, 0x93, 0xd0, 0x13, 0xd7, 0x94, - 0xd2, 0x13, 0xd7, 0x94, 0xd2, 0x13, 0xd8, 0x94, 0xd2, 0x13, 0xd8, 0x94, - 0xd2, 0x13, 0xd8, 0x94, 0xd2, 0x13, 0xd9, 0x94, 0xd2, 0x13, 0xd9, 0x94, - 0xd2, 0x13, 0xd9, 0x94, 0xd2, 0x13, 0xd9, 0x94, 0xd2, 0x13, 0xda, 0x94, - 0xd2, 0x13, 0xda, 0x94, 0xd5, 0x13, 0xda, 0x94, 0xd2, 0x13, 0xda, 0x94, - 0xd5, 0x13, 0xdb, 0x94, 0xd2, 0x13, 0xdb, 0x94, 0xd5, 0x13, 0xdb, 0x94, - 0xd2, 0x13, 0xdb, 0x94, 0xd5, 0x13, 0xdc, 0x94, 0xd5, 0x13, 0xdc, 0x94, - 0xd5, 0x13, 0xdc, 0x94, 0xd5, 0x13, 0xdd, 0x94, 0xd5, 0x13, 0xdd, 0x95, - 0xd7, 0x13, 0xdd, 0x94, 0xd5, 0x13, 0xdd, 0x95, 0xd7, 0x13, 0xde, 0x94, - 0xd5, 0x13, 0xde, 0x95, 0xd7, 0x13, 0xde, 0x95, 0xd7, 0x13, 0xde, 0x95, - 0xd7, 0x13, 0xdf, 0x95, 0xd7, 0x13, 0xdf, 0x95, 0xd7, 0x13, 0xdf, 0x96, - 0xda, 0x13, 0xdf, 0x96, 0xda, 0x13, 0xe0, 0x96, 0xda, 0x13, 0xe0, 0x96, - 0xda, 0x13, 0xe0, 0x96, 0xda, 0x13, 0xe1, 0x96, 0xda, 0x13, 0xe1, 0x96, - 0xda, 0x13, 0xe1, 0x96, 0xda, 0x13, 0xe1, 0x96, 0xda, 0x13, 0xe2, 0x96, - 0xda, 0x13, 0xe2, 0x97, 0xdd, 0x13, 0xe2, 0x96, 0xda, 0x13, 0xe2, 0x97, - 0xdd, 0x13, 0xe3, 0x96, 0xda, 0x13, 0xe3, 0x97, 0xdd, 0x13, 0xe3, 0x97, - 0xdc, 0x13, 0xe3, 0x97, 0xdd, 0x13, 0xe4, 0x97, 0xdc, 0x13, 0xe4, 0x97, - 0xdd, 0x13, 0xe4, 0x98, 0xdf, 0x13, 0xe4, 0x97, 0xdd, 0x13, 0xe5, 0x98, - 0xdf, 0x13, 0xe5, 0x97, 0xdd, 0x13, 0xe5, 0x98, 0xdf, 0x13, 0xe5, 0x97, - 0xdd, 0x13, 0xe6, 0x98, 0xdf, 0x13, 0xe6, 0x98, 0xdf, 0x13, 0xe6, 0x98, - 0xdf, 0x13, 0xe6, 0x99, 0xe1, 0x13, 0xe7, 0x99, 0xe2, 0x13, 0xe7, 0x99, - 0xe1, 0x13, 0xe7, 0x99, 0xe2, 0x13, 0xe7, 0x99, 0xe1, 0x13, 0xe8, 0x99, - 0xe2, 0x13, 0xe8, 0x99, 0xe1, 0x13, 0xe8, 0x99, 0xe2, 0x13, 0xe8, 0x99, - 0xe1, 0x13, 0xe9, 0x99, 0xe2, 0x13, 0xe9, 0x9a, 0xe4, 0x13, 0xe9, 0x99, - 0xe2, 0x13, 0xe9, 0x9a, 0xe4, 0x13, 0xea, 0x99, 0xe2, 0x13, 0xea, 0x9a, - 0xe4, 0x13, 0xea, 0x99, 0xe2, 0x13, 0xea, 0x9a, 0xe4, 0x13, 0xeb, 0x9a, - 0xe4, 0x13, 0xeb, 0x9a, 0xe4, 0x13, 0xeb, 0x9a, 0xe4, 0x13, 0xeb, 0x9a, - 0xe4, 0x13, 0xec, 0x9a, 0xe6, 0x13, 0xec, 0x9a, 0xe4, 0x13, 0xec, 0x9a, - 0xe6, 0x13, 0xec, 0x9a, 0xe4, 0x13, 0xec, 0x9a, 0xe6, 0x13, 0xed, 0x9a, - 0xe6, 0x13, 0xed, 0x9a, 0xe6, 0x13, 0xed, 0x9a, 0xe6, 0x13, 0xed, 0x9a, - 0xe6, 0x13, 0xee, 0x9b, 0xe8, 0x13, 0xee, 0x9b, 0xe9, 0x13, 0xee, 0x9b, - 0xe8, 0x13, 0xee, 0x9b, 0xe9, 0x13, 0xef, 0x9b, 0xe8, 0x13, 0xef, 0x9b, - 0xe9, 0x13, 0xef, 0x9b, 0xe8, 0x13, 0xef, 0x9b, 0xe9, 0x13, 0xf0, 0x9b, - 0xe8, 0x13, 0xf0, 0x9b, 0xe9, 0x13, 0xf0, 0x9c, 0xeb, 0x13, 0xf0, 0x9b, - 0xe9, 0x13, 0xf1, 0x9c, 0xeb, 0x13, 0xf1, 0x9b, 0xe9, 0x13, 0xf1, 0x9c, - 0xeb, 0x13, 0xf1, 0x9b, 0xe9, 0x13, 0xf2, 0x9c, 0xeb, 0x13, 0xf2, 0x9c, - 0xeb, 0x13, 0xf2, 0x9c, 0xeb, 0x13, 0xf2, 0x9d, 0xed, 0x13, 0xf2, 0x9d, - 0xed, 0x13, 0xf3, 0x9d, 0xed, 0x13, 0xf3, 0x9d, 0xed, 0x13, 0xf3, 0x9d, - 0xed, 0x13, 0xf3, 0x9d, 0xed, 0x13, 0xf4, 0x9d, 0xed, 0x13, 0xf4, 0x9d, - 0xed, 0x13, 0xf4, 0x9d, 0xed, 0x13, 0xf4, 0x9d, 0xed, 0x13, 0xf5, 0x9d, - 0xed, 0x13, 0xf5, 0x9d, 0xed, 0x13, 0xf5, 0x9e, 0xef, 0x13, 0xf5, 0x9d, - 0xed, 0x13, 0xf5, 0x9e, 0xef, 0x13, 0xf6, 0x9d, 0xed, 0x13, 0xf6, 0x9e, - 0xef, 0x13, 0xf6, 0x9e, 0xef, 0x13, 0xf6, 0x9e, 0xef, 0x13, 0xf7, 0x9e, - 0xef, 0x13, 0xf7, 0x9e, 0xef, 0x13, 0xf7, 0x9f, 0xf2, 0x13, 0xf7, 0x9e, - 0xef, 0x13, 0xf8, 0x9f, 0xf2, 0x13, 0xf8, 0x9e, 0xef, 0x13, 0xf8, 0x9f, - 0xf2, 0x13, 0xf8, 0x9e, 0xef, 0x13, 0xf8, 0x9f, 0xf2, 0x13, 0xf9, 0x9f, - 0xf1, 0x13, 0xf9, 0x9f, 0xf2, 0x13, 0xf9, 0x9f, 0xf4, 0x13, 0xf9, 0x9f, - 0xf4, 0x13, 0xfa, 0x9f, 0xf4, 0x13, 0xfa, 0x9f, 0xf4, 0x13, 0xfa, 0x9f, - 0xf4, 0x13, 0xfa, 0x9f, 0xf4, 0x13, 0xfa, 0x9f, 0xf4, 0x13, 0xfb, 0x9f, - 0xf4, 0x13, 0xfb, 0x9f, 0xf4, 0x13, 0xfb, 0x9f, 0xf4, 0x13, 0xfb, 0xa0, - 0xf6, 0x13, 0xfc, 0x9f, 0xf4, 0x13, 0xfc, 0xa0, 0xf6, 0x13, 0xfc, 0x9f, - 0xf4, 0x13, 0xfc, 0xa0, 0xf6, 0x13, 0xfc, 0x9f, 0xf4, 0x13, 0xfd, 0xa0, - 0xf6, 0x13, 0xfd, 0xa0, 0xf6, 0x13, 0xfd, 0xa0, 0xf6, 0x13, 0xfd, 0xa1, - 0xf8, 0x13, 0xfe, 0xa0, 0xf6, 0x13, 0xfe, 0xa0, 0xf6, 0x13, 0xfe, 0xa0, - 0xf6, 0x13, 0xfe, 0xa1, 0xf8, 0x13, 0xfe, 0xa0, 0xf6, 0x13, 0xff, 0xa1, - 0xf8, 0x13, 0xff, 0xa1, 0xf8, 0x13, 0x03, 0x84, 0x9b, 0x14, 0x0a, 0x84, - 0x9b, 0x14, 0x0f, 0x84, 0x9b, 0x14, 0x14, 0x84, 0x9b, 0x14, 0x17, 0x84, - 0x9b, 0x14, 0x1b, 0x84, 0x9b, 0x14, 0x1e, 0x84, 0x9b, 0x14, 0x20, 0x86, - 0x9b, 0x14, 0x23, 0x84, 0x9b, 0x14, 0x25, 0x84, 0x9c, 0x14, 0x27, 0x84, - 0x9b, 0x14, 0x29, 0x84, 0x9c, 0x14, 0x2b, 0x84, 0x9b, 0x14, 0x2d, 0x84, - 0x9c, 0x14, 0x2f, 0x84, 0x9b, 0x14, 0x31, 0x84, 0x9c, 0x14, 0x32, 0x84, - 0x9b, 0x14, 0x34, 0x84, 0x9c, 0x14, 0x35, 0x84, 0x9b, 0x14, 0x37, 0x84, - 0x9c, 0x14, 0x38, 0x84, 0x9b, 0x14, 0x3a, 0x84, 0x9c, 0x14, 0x3b, 0x84, - 0x9b, 0x14, 0x3c, 0x84, 0x9c, 0x14, 0x3e, 0x84, 0x9b, 0x14, 0x3f, 0x84, - 0x9c, 0x14, 0x40, 0x84, 0x9b, 0x14, 0x42, 0x84, 0x9c, 0x14, 0x43, 0x84, - 0x9b, 0x14, 0x44, 0x84, 0x9c, 0x14, 0x45, 0x84, 0x9b, 0x14, 0x46, 0x84, - 0x9c, 0x14, 0x47, 0x84, 0x9b, 0x14, 0x48, 0x84, 0x9c, 0x14, 0x49, 0x84, - 0x9b, 0x14, 0x4a, 0x84, 0x9c, 0x14, 0x4b, 0x84, 0x9b, 0x14, 0x4c, 0x84, - 0x9c, 0x14, 0x4d, 0x84, 0x9b, 0x14, 0x4e, 0x84, 0x9c, 0x14, 0x4f, 0x84, - 0x9b, 0x14, 0x50, 0x84, 0x9c, 0x14, 0x51, 0x84, 0x9b, 0x14, 0x52, 0x84, - 0x9c, 0x14, 0x53, 0x84, 0x9b, 0x14, 0x54, 0x84, 0x9c, 0x14, 0x55, 0x84, - 0x9b, 0x14, 0x56, 0x84, 0x9c, 0x14, 0x57, 0x84, 0x9b, 0x14, 0x58, 0x84, - 0x9c, 0x14, 0x58, 0x84, 0x9b, 0x14, 0x59, 0x84, 0x9c, 0x14, 0x5a, 0x84, - 0x9b, 0x14, 0x5b, 0x84, 0x9c, 0x14, 0x5c, 0x84, 0x9b, 0x14, 0x5d, 0x84, - 0x9c, 0x14, 0x5d, 0x84, 0x9b, 0x14, 0x5e, 0x84, 0x9c, 0x14, 0x5f, 0x84, - 0x9b, 0x14, 0x60, 0x84, 0x9c, 0x14, 0x60, 0x84, 0x9b, 0x14, 0x61, 0x84, - 0x9c, 0x14, 0x62, 0x84, 0x9b, 0x14, 0x63, 0x84, 0x9c, 0x14, 0x63, 0x84, - 0x9b, 0x14, 0x64, 0x84, 0x9c, 0x14, 0x65, 0x84, 0x9b, 0x14, 0x66, 0x84, - 0x9c, 0x14, 0x66, 0x84, 0x9b, 0x14, 0x67, 0x84, 0x9c, 0x14, 0x68, 0x84, - 0x9b, 0x14, 0x68, 0x84, 0x9c, 0x14, 0x69, 0x84, 0x9b, 0x14, 0x6a, 0x84, - 0x9c, 0x14, 0x6a, 0x84, 0x9b, 0x14, 0x6b, 0x84, 0x9c, 0x14, 0x6c, 0x84, - 0x9b, 0x14, 0x6c, 0x84, 0x9c, 0x14, 0x6d, 0x84, 0x9b, 0x14, 0x6e, 0x84, - 0x9c, 0x14, 0x6e, 0x84, 0x9b, 0x14, 0x6f, 0x84, 0x9c, 0x14, 0x70, 0x84, - 0x9b, 0x14, 0x70, 0x84, 0x9c, 0x14, 0x71, 0x84, 0x9b, 0x14, 0x72, 0x84, - 0x9c, 0x14, 0x72, 0x84, 0x9b, 0x14, 0x73, 0x84, 0x9c, 0x14, 0x73, 0x84, - 0x9b, 0x14, 0x74, 0x84, 0x9c, 0x14, 0x75, 0x84, 0x9b, 0x14, 0x75, 0x84, - 0x9c, 0x14, 0x76, 0x84, 0x9b, 0x14, 0x76, 0x84, 0x9c, 0x14, 0x77, 0x84, - 0x9b, 0x14, 0x78, 0x84, 0x9c, 0x14, 0x78, 0x84, 0x9b, 0x14, 0x79, 0x84, - 0x9c, 0x14, 0x79, 0x84, 0x9b, 0x14, 0x7a, 0x84, 0x9c, 0x14, 0x7a, 0x84, - 0x9b, 0x14, 0x7b, 0x84, 0x9c, 0x14, 0x7c, 0x84, 0x9b, 0x14, 0x7c, 0x84, - 0x9c, 0x14, 0x7d, 0x84, 0x9b, 0x14, 0x7d, 0x84, 0x9c, 0x14, 0x7e, 0x84, - 0x9b, 0x14, 0x7e, 0x84, 0x9c, 0x14, 0x7f, 0x84, 0x9b, 0x14, 0x7f, 0x84, - 0x9c, 0x14, 0x80, 0x84, 0x9b, 0x14, 0x81, 0x84, 0x9c, 0x14, 0x81, 0x84, - 0x9b, 0x14, 0x82, 0x84, 0x9c, 0x14, 0x82, 0x84, 0x9b, 0x14, 0x83, 0x84, - 0x9c, 0x14, 0x83, 0x84, 0x9b, 0x14, 0x84, 0x84, 0x9c, 0x14, 0x84, 0x84, - 0x9b, 0x14, 0x85, 0x84, 0x9c, 0x14, 0x85, 0x84, 0x9b, 0x14, 0x86, 0x84, - 0x9c, 0x14, 0x86, 0x84, 0x9b, 0x14, 0x87, 0x84, 0x9c, 0x14, 0x87, 0x84, - 0x9b, 0x14, 0x88, 0x84, 0x9c, 0x14, 0x88, 0x84, 0x9b, 0x14, 0x89, 0x84, - 0x9c, 0x14, 0x89, 0x84, 0x9b, 0x14, 0x8a, 0x84, 0x9c, 0x14, 0x8a, 0x84, - 0x9b, 0x14, 0x8b, 0x84, 0x9c, 0x14, 0x8b, 0x84, 0x9b, 0x14, 0x8c, 0x84, - 0x9c, 0x14, 0x8c, 0x84, 0x9b, 0x14, 0x8d, 0x84, 0x9c, 0x14, 0x8d, 0x84, - 0x9b, 0x14, 0x8e, 0x84, 0x9c, 0x14, 0x8e, 0x84, 0x9b, 0x14, 0x8e, 0x84, - 0x9c, 0x14, 0x8f, 0x84, 0x9b, 0x14, 0x8f, 0x84, 0x9c, 0x14, 0x90, 0x84, - 0x9b, 0x14, 0x90, 0x84, 0x9c, 0x14, 0x91, 0x84, 0x9b, 0x14, 0x91, 0x84, - 0x9c, 0x14, 0x92, 0x84, 0x9b, 0x14, 0x92, 0x84, 0x9c, 0x14, 0x93, 0x84, - 0x9b, 0x14, 0x93, 0x84, 0x9c, 0x14, 0x94, 0x84, 0x9b, 0x14, 0x94, 0x84, - 0x9c, 0x14, 0x94, 0x84, 0x9b, 0x14, 0x95, 0x84, 0x9c, 0x14, 0x95, 0x84, - 0x9b, 0x14, 0x96, 0x84, 0x9c, 0x14, 0x96, 0x84, 0x9b, 0x14, 0x97, 0x84, - 0x9c, 0x14, 0x97, 0x84, 0x9b, 0x14, 0x98, 0x84, 0x9c, 0x14, 0x98, 0x84, - 0x9b, 0x14, 0x98, 0x84, 0x9c, 0x14, 0x99, 0x84, 0x9b, 0x14, 0x99, 0x84, - 0x9c, 0x14, 0x9a, 0x84, 0x9b, 0x14, 0x9a, 0x84, 0x9c, 0x14, 0x9a, 0x84, - 0x9b, 0x14, 0x9b, 0x84, 0x9c, 0x14, 0x9b, 0x84, 0x9b, 0x14, 0x9c, 0x84, - 0x9c, 0x14, 0x9c, 0x84, 0x9c, 0x14, 0x9d, 0x84, 0x9d, 0x14, 0x9d, 0x84, - 0x9d, 0x14, 0x9d, 0x84, 0x9d, 0x14, 0x9e, 0x84, 0x9e, 0x14, 0x9e, 0x84, - 0x9e, 0x14, 0x9f, 0x84, 0x9f, 0x14, 0x9f, 0x84, 0x9e, 0x14, 0x9f, 0x84, - 0x9f, 0x14, 0xa0, 0x84, 0x9e, 0x14, 0xa0, 0x84, 0x9f, 0x14, 0xa1, 0x84, - 0x9e, 0x14, 0xa1, 0x84, 0x9f, 0x14, 0xa1, 0x84, 0x9e, 0x14, 0xa2, 0x84, - 0x9f, 0x14, 0xa2, 0x84, 0x9e, 0x14, 0xa3, 0x84, 0x9f, 0x14, 0xa3, 0x84, - 0x9e, 0x14, 0xa3, 0x84, 0x9f, 0x14, 0xa4, 0x84, 0x9e, 0x14, 0xa4, 0x84, - 0x9f, 0x14, 0xa5, 0x84, 0x9e, 0x14, 0xa5, 0x84, 0x9f, 0x14, 0xa5, 0x84, - 0x9e, 0x14, 0xa6, 0x84, 0x9f, 0x14, 0xa6, 0x84, 0x9e, 0x14, 0xa6, 0x84, - 0x9f, 0x14, 0xa7, 0x85, 0xa2, 0x14, 0xa7, 0x84, 0x9f, 0x14, 0xa8, 0x85, - 0xa2, 0x14, 0xa8, 0x85, 0xa2, 0x14, 0xa8, 0x85, 0xa2, 0x14, 0xa9, 0x85, - 0xa2, 0x14, 0xa9, 0x85, 0xa2, 0x14, 0xaa, 0x85, 0xa2, 0x14, 0xaa, 0x85, - 0xa2, 0x14, 0xaa, 0x86, 0xa6, 0x14, 0xab, 0x86, 0xa6, 0x14, 0xab, 0x86, - 0xa6, 0x14, 0xab, 0x86, 0xa6, 0x14, 0xac, 0x86, 0xa6, 0x14, 0xac, 0x86, - 0xa6, 0x14, 0xac, 0x86, 0xa6, 0x14, 0xad, 0x86, 0xa6, 0x14, 0xad, 0x86, - 0xa6, 0x14, 0xae, 0x86, 0xa6, 0x14, 0xae, 0x87, 0xaa, 0x14, 0xae, 0x86, - 0xa6, 0x14, 0xaf, 0x87, 0xaa, 0x14, 0xaf, 0x86, 0xa6, 0x14, 0xaf, 0x87, - 0xaa, 0x14, 0xb0, 0x87, 0xa9, 0x14, 0xb0, 0x87, 0xaa, 0x14, 0xb0, 0x87, - 0xa9, 0x14, 0xb1, 0x87, 0xaa, 0x14, 0xb1, 0x88, 0xad, 0x14, 0xb2, 0x88, - 0xad, 0x14, 0xb2, 0x88, 0xad, 0x14, 0xb2, 0x88, 0xad, 0x14, 0xb3, 0x88, - 0xad, 0x14, 0xb3, 0x88, 0xad, 0x14, 0xb3, 0x88, 0xad, 0x14, 0xb4, 0x88, - 0xad, 0x14, 0xb4, 0x88, 0xad, 0x14, 0xb4, 0x88, 0xad, 0x14, 0xb5, 0x88, - 0xad, 0x14, 0xb5, 0x88, 0xad, 0x14, 0xb5, 0x89, 0xb0, 0x14, 0xb6, 0x88, - 0xad, 0x14, 0xb6, 0x89, 0xb0, 0x14, 0xb6, 0x89, 0xb2, 0x14, 0xb7, 0x89, - 0xb0, 0x14, 0xb7, 0x89, 0xb2, 0x14, 0xb7, 0x89, 0xb0, 0x14, 0xb8, 0x89, - 0xb2, 0x14, 0xb8, 0x89, 0xb0, 0x14, 0xb8, 0x89, 0xb2, 0x14, 0xb9, 0x89, - 0xb0, 0x14, 0xb9, 0x89, 0xb2, 0x14, 0xb9, 0x89, 0xb2, 0x14, 0xba, 0x89, - 0xb2, 0x14, 0xba, 0x89, 0xb2, 0x14, 0xba, 0x89, 0xb2, 0x14, 0xbb, 0x8a, - 0xb3, 0x14, 0xbb, 0x8a, 0xb4, 0x14, 0xbb, 0x8b, 0xb7, 0x14, 0xbc, 0x8b, - 0xb7, 0x14, 0xbc, 0x8b, 0xb7, 0x14, 0xbc, 0x8b, 0xb7, 0x14, 0xbd, 0x8b, - 0xb7, 0x14, 0xbd, 0x8b, 0xb7, 0x14, 0xbd, 0x8b, 0xb7, 0x14, 0xbe, 0x8b, - 0xb7, 0x14, 0xbe, 0x8b, 0xb7, 0x14, 0xbe, 0x8b, 0xb7, 0x14, 0xbf, 0x8c, - 0xba, 0x14, 0xbf, 0x8b, 0xb7, 0x14, 0xbf, 0x8c, 0xba, 0x14, 0xc0, 0x8b, - 0xb7, 0x14, 0xc0, 0x8c, 0xba, 0x14, 0xc0, 0x8c, 0xba, 0x14, 0xc1, 0x8c, - 0xba, 0x14, 0xc1, 0x8c, 0xba, 0x14, 0xc1, 0x8c, 0xba, 0x14, 0xc1, 0x8c, - 0xba, 0x14, 0xc2, 0x8c, 0xba, 0x14, 0xc2, 0x8d, 0xbd, 0x14, 0xc2, 0x8c, - 0xba, 0x14, 0xc3, 0x8d, 0xbd, 0x14, 0xc3, 0x8d, 0xbd, 0x14, 0xc3, 0x8d, - 0xbd, 0x14, 0xc4, 0x8d, 0xbd, 0x14, 0xc4, 0x8d, 0xbd, 0x14, 0xc4, 0x8d, - 0xbd, 0x14, 0xc5, 0x8d, 0xbd, 0x14, 0xc5, 0x8e, 0xc0, 0x14, 0xc5, 0x8e, - 0xc0, 0x14, 0xc6, 0x8e, 0xc0, 0x14, 0xc6, 0x8e, 0xc0, 0x14, 0xc6, 0x8e, - 0xc0, 0x14, 0xc6, 0x8e, 0xc0, 0x14, 0xc7, 0x8e, 0xc0, 0x14, 0xc7, 0x8e, - 0xc0, 0x14, 0xc7, 0x8e, 0xc0, 0x14, 0xc8, 0x8e, 0xc0, 0x14, 0xc8, 0x8e, - 0xc3, 0x14, 0xc8, 0x8e, 0xc0, 0x14, 0xc9, 0x8e, 0xc3, 0x14, 0xc9, 0x8e, - 0xc0, 0x14, 0xc9, 0x8e, 0xc3, 0x14, 0xc9, 0x8e, 0xc3, 0x14, 0xca, 0x8e, - 0xc3, 0x14, 0xca, 0x8e, 0xc3, 0x14, 0xca, 0x8e, 0xc3, 0x14, 0xcb, 0x8f, - 0xc6, 0x14, 0xcb, 0x8e, 0xc3, 0x14, 0xcb, 0x8f, 0xc6, 0x14, 0xcc, 0x8e, - 0xc3, 0x14, 0xcc, 0x8f, 0xc6, 0x14, 0xcc, 0x8f, 0xc6, 0x14, 0xcc, 0x8f, - 0xc6, 0x14, 0xcd, 0x8f, 0xc6, 0x14, 0xcd, 0x8f, 0xc6, 0x14, 0xcd, 0x90, - 0xc9, 0x14, 0xce, 0x90, 0xc9, 0x14, 0xce, 0x90, 0xc9, 0x14, 0xce, 0x90, - 0xc9, 0x14, 0xce, 0x90, 0xc9, 0x14, 0xcf, 0x90, 0xc9, 0x14, 0xcf, 0x90, - 0xc9, 0x14, 0xcf, 0x90, 0xc9, 0x14, 0xd0, 0x90, 0xc9, 0x14, 0xd0, 0x90, - 0xc9, 0x14, 0xd0, 0x91, 0xcc, 0x14, 0xd0, 0x90, 0xc9, 0x14, 0xd1, 0x91, - 0xcc, 0x14, 0xd1, 0x90, 0xc9, 0x14, 0xd1, 0x91, 0xcc, 0x14, 0xd2, 0x90, - 0xc9, 0x14, 0xd2, 0x91, 0xcc, 0x14, 0xd2, 0x91, 0xcb, 0x14, 0xd2, 0x91, - 0xcc, 0x14, 0xd3, 0x91, 0xcb, 0x14, 0xd3, 0x91, 0xcc, 0x14, 0xd3, 0x92, - 0xce, 0x14, 0xd4, 0x92, 0xce, 0x14, 0xd4, 0x92, 0xce, 0x14, 0xd4, 0x92, - 0xce, 0x14, 0xd4, 0x92, 0xce, 0x14, 0xd5, 0x92, 0xce, 0x14, 0xd5, 0x92, - 0xce, 0x14, 0xd5, 0x92, 0xce, 0x14, 0xd6, 0x92, 0xce, 0x14, 0xd6, 0x92, - 0xce, 0x14, 0xd6, 0x93, 0xd1, 0x14, 0xd6, 0x92, 0xce, 0x14, 0xd7, 0x93, - 0xd1, 0x14, 0xd7, 0x92, 0xce, 0x14, 0xd7, 0x93, 0xd1, 0x14, 0xd7, 0x93, - 0xd1, 0x14, 0xd8, 0x93, 0xd1, 0x14, 0xd8, 0x93, 0xd1, 0x14, 0xd8, 0x93, - 0xd1, 0x14, 0xd9, 0x94, 0xd4, 0x14, 0xd9, 0x93, 0xd1, 0x14, 0xd9, 0x94, - 0xd4, 0x14, 0xd9, 0x93, 0xd1, 0x14, 0xda, 0x94, 0xd4, 0x14, 0xda, 0x94, - 0xd3, 0x14, 0xda, 0x94, 0xd4, 0x14, 0xda, 0x94, 0xd3, 0x14, 0xdb, 0x94, - 0xd4, 0x14, 0xdb, 0x95, 0xd6, 0x14, 0xdb, 0x95, 0xd6, 0x14, 0xdb, 0x95, - 0xd6, 0x14, 0xdc, 0x95, 0xd6, 0x14, 0xdc, 0x95, 0xd6, 0x14, 0xdc, 0x95, - 0xd6, 0x14, 0xdd, 0x95, 0xd6, 0x14, 0xdd, 0x95, 0xd6, 0x14, 0xdd, 0x95, - 0xd6, 0x14, 0xdd, 0x95, 0xd6, 0x14, 0xde, 0x95, 0xd6, 0x14, 0xde, 0x95, - 0xd6, 0x14, 0xde, 0x96, 0xd9, 0x14, 0xde, 0x95, 0xd6, 0x14, 0xdf, 0x96, - 0xd9, 0x14, 0xdf, 0x95, 0xd6, 0x14, 0xdf, 0x96, 0xd9, 0x14, 0xdf, 0x96, - 0xd9, 0x14, 0xe0, 0x96, 0xd9, 0x14, 0xe0, 0x96, 0xd9, 0x14, 0xe0, 0x96, - 0xd9, 0x14, 0xe1, 0x97, 0xdb, 0x14, 0xe1, 0x96, 0xd9, 0x14, 0xe1, 0x97, - 0xdb, 0x14, 0xe1, 0x96, 0xd9, 0x14, 0xe2, 0x97, 0xdb, 0x14, 0xe2, 0x97, - 0xdb, 0x14, 0xe2, 0x97, 0xdb, 0x14, 0xe2, 0x97, 0xdb, 0x14, 0xe3, 0x97, - 0xdb, 0x14, 0xe3, 0x98, 0xde, 0x14, 0xe3, 0x98, 0xde, 0x14, 0xe3, 0x98, - 0xde, 0x14, 0xe4, 0x98, 0xde, 0x14, 0xe4, 0x98, 0xde, 0x14, 0xe4, 0x98, - 0xde, 0x14, 0xe4, 0x98, 0xde, 0x14, 0xe5, 0x98, 0xde, 0x14, 0xe5, 0x98, - 0xde, 0x14, 0xe5, 0x98, 0xde, 0x14, 0xe5, 0x98, 0xe0, 0x14, 0xe6, 0x98, - 0xde, 0x14, 0xe6, 0x98, 0xe0, 0x14, 0xe6, 0x98, 0xde, 0x14, 0xe6, 0x98, - 0xe0, 0x14, 0xe7, 0x98, 0xde, 0x14, 0xe7, 0x98, 0xe0, 0x14, 0xe7, 0x98, - 0xe0, 0x14, 0xe7, 0x98, 0xe0, 0x14, 0xe8, 0x99, 0xe3, 0x14, 0xe8, 0x98, - 0xe0, 0x14, 0xe8, 0x99, 0xe3, 0x14, 0xe8, 0x98, 0xe0, 0x14, 0xe9, 0x99, - 0xe3, 0x14, 0xe9, 0x98, 0xe0, 0x14, 0xe9, 0x99, 0xe3, 0x14, 0xe9, 0x99, - 0xe2, 0x14, 0xea, 0x99, 0xe3, 0x14, 0xea, 0x9a, 0xe5, 0x14, 0xea, 0x9a, - 0xe5, 0x14, 0xea, 0x9a, 0xe5, 0x14, 0xeb, 0x9a, 0xe5, 0x14, 0xeb, 0x9a, - 0xe5, 0x14, 0xeb, 0x9a, 0xe5, 0x14, 0xeb, 0x9a, 0xe5, 0x14, 0xec, 0x9a, - 0xe5, 0x14, 0xec, 0x9a, 0xe5, 0x14, 0xec, 0x9a, 0xe5, 0x14, 0xec, 0x9a, - 0xe5, 0x14, 0xec, 0x9a, 0xe5, 0x14, 0xed, 0x9b, 0xe7, 0x14, 0xed, 0x9a, - 0xe5, 0x14, 0xed, 0x9b, 0xe7, 0x14, 0xed, 0x9a, 0xe5, 0x14, 0xee, 0x9b, - 0xe7, 0x14, 0xee, 0x9b, 0xe7, 0x14, 0xee, 0x9b, 0xe7, 0x14, 0xee, 0x9b, - 0xe7, 0x14, 0xef, 0x9b, 0xe7, 0x14, 0xef, 0x9c, 0xea, 0x14, 0xef, 0x9c, - 0xea, 0x14, 0xef, 0x9c, 0xea, 0x14, 0xf0, 0x9c, 0xea, 0x14, 0xf0, 0x9c, - 0xea, 0x14, 0xf0, 0x9c, 0xea, 0x14, 0xf0, 0x9c, 0xea, 0x14, 0xf1, 0x9c, - 0xea, 0x14, 0xf1, 0x9c, 0xea, 0x14, 0xf1, 0x9c, 0xea, 0x14, 0xf1, 0x9d, - 0xec, 0x14, 0xf2, 0x9c, 0xea, 0x14, 0xf2, 0x9d, 0xec, 0x14, 0xf2, 0x9c, - 0xea, 0x14, 0xf2, 0x9d, 0xec, 0x14, 0xf2, 0x9c, 0xea, 0x14, 0xf3, 0x9d, - 0xec, 0x14, 0xf3, 0x9d, 0xec, 0x14, 0xf3, 0x9d, 0xec, 0x14, 0xf3, 0x9d, - 0xee, 0x14, 0xf4, 0x9d, 0xec, 0x14, 0xf4, 0x9d, 0xee, 0x14, 0xf4, 0x9d, - 0xec, 0x14, 0xf4, 0x9d, 0xee, 0x14, 0xf5, 0x9d, 0xec, 0x14, 0xf5, 0x9d, - 0xee, 0x14, 0xf5, 0x9d, 0xee, 0x14, 0xf5, 0x9d, 0xee, 0x14, 0xf5, 0x9d, - 0xee, 0x14, 0xf6, 0x9d, 0xee, 0x14, 0xf6, 0x9e, 0xf0, 0x14, 0xf6, 0x9e, - 0xf1, 0x14, 0xf6, 0x9e, 0xf0, 0x14, 0xf7, 0x9e, 0xf1, 0x14, 0xf7, 0x9e, - 0xf0, 0x14, 0xf7, 0x9e, 0xf1, 0x14, 0xf7, 0x9e, 0xf0, 0x14, 0xf8, 0x9e, - 0xf1, 0x14, 0xf8, 0x9e, 0xf0, 0x14, 0xf8, 0x9e, 0xf1, 0x14, 0xf8, 0x9f, - 0xf3, 0x14, 0xf8, 0x9e, 0xf1, 0x14, 0xf9, 0x9f, 0xf3, 0x14, 0xf9, 0x9e, - 0xf1, 0x14, 0xf9, 0x9f, 0xf3, 0x14, 0xf9, 0x9e, 0xf1, 0x14, 0xfa, 0x9f, - 0xf3, 0x14, 0xfa, 0x9f, 0xf2, 0x14, 0xfa, 0x9f, 0xf3, 0x14, 0xfa, 0xa0, - 0xf5, 0x14, 0xfa, 0x9f, 0xf3, 0x14, 0xfb, 0xa0, 0xf5, 0x14, 0xfb, 0x9f, - 0xf3, 0x14, 0xfb, 0xa0, 0xf5, 0x14, 0xfb, 0x9f, 0xf3, 0x14, 0xfc, 0xa0, - 0xf5, 0x14, 0xfc, 0xa0, 0xf5, 0x14, 0xfc, 0xa0, 0xf5, 0x14, 0xfc, 0xa1, - 0xf7, 0x14, 0xfc, 0xa1, 0xf7, 0x14, 0xfd, 0xa1, 0xf7, 0x14, 0xfd, 0xa1, - 0xf7, 0x14, 0xfd, 0xa1, 0xf7, 0x14, 0xfd, 0xa1, 0xf7, 0x14, 0xfe, 0xa1, - 0xf7, 0x14, 0xfe, 0xa1, 0xf7, 0x14, 0xfe, 0xa1, 0xf7, 0x14, 0xfe, 0xa1, - 0xf7, 0x14, 0xfe, 0xa1, 0xf9, 0x14, 0xff, 0xa1, 0xf7, 0x14, 0xff, 0xa1, - 0xf9, 0x14, 0x03, 0x83, 0x9b, 0x14, 0x0a, 0x83, 0x9b, 0x14, 0x0f, 0x83, - 0x9b, 0x14, 0x14, 0x83, 0x9b, 0x14, 0x17, 0x83, 0x9b, 0x14, 0x1b, 0x83, - 0x9b, 0x14, 0x1e, 0x83, 0x9b, 0x14, 0x20, 0x83, 0x9c, 0x14, 0x23, 0x83, - 0x9b, 0x14, 0x25, 0x83, 0x9c, 0x14, 0x27, 0x83, 0x9b, 0x14, 0x29, 0x83, - 0x9c, 0x14, 0x2b, 0x83, 0x9b, 0x14, 0x2d, 0x83, 0x9c, 0x14, 0x2f, 0x83, - 0x9b, 0x14, 0x31, 0x83, 0x9c, 0x14, 0x32, 0x83, 0x9b, 0x14, 0x34, 0x83, - 0x9c, 0x14, 0x35, 0x83, 0x9b, 0x14, 0x37, 0x83, 0x9c, 0x14, 0x38, 0x83, - 0x9b, 0x14, 0x3a, 0x83, 0x9c, 0x14, 0x3b, 0x83, 0x9b, 0x14, 0x3c, 0x83, - 0x9c, 0x14, 0x3e, 0x83, 0x9b, 0x14, 0x3f, 0x83, 0x9c, 0x14, 0x40, 0x83, - 0x9b, 0x14, 0x42, 0x83, 0x9c, 0x14, 0x43, 0x83, 0x9b, 0x14, 0x44, 0x83, - 0x9c, 0x14, 0x45, 0x83, 0x9b, 0x14, 0x46, 0x83, 0x9c, 0x14, 0x47, 0x83, - 0x9b, 0x14, 0x48, 0x83, 0x9c, 0x14, 0x49, 0x83, 0x9b, 0x14, 0x4a, 0x83, - 0x9c, 0x14, 0x4b, 0x83, 0x9b, 0x14, 0x4c, 0x83, 0x9c, 0x14, 0x4d, 0x83, - 0x9b, 0x14, 0x4e, 0x83, 0x9c, 0x14, 0x4f, 0x83, 0x9b, 0x14, 0x50, 0x83, - 0x9c, 0x14, 0x51, 0x83, 0x9b, 0x14, 0x52, 0x83, 0x9c, 0x14, 0x53, 0x83, - 0x9b, 0x14, 0x54, 0x83, 0x9c, 0x14, 0x55, 0x83, 0x9b, 0x14, 0x56, 0x83, - 0x9c, 0x14, 0x57, 0x83, 0x9b, 0x14, 0x58, 0x83, 0x9c, 0x14, 0x58, 0x83, - 0x9b, 0x14, 0x59, 0x83, 0x9c, 0x14, 0x5a, 0x83, 0x9b, 0x14, 0x5b, 0x83, - 0x9c, 0x14, 0x5c, 0x83, 0x9b, 0x14, 0x5d, 0x83, 0x9c, 0x14, 0x5d, 0x83, - 0x9b, 0x14, 0x5e, 0x83, 0x9c, 0x14, 0x5f, 0x83, 0x9b, 0x14, 0x60, 0x83, - 0x9c, 0x14, 0x60, 0x83, 0x9b, 0x14, 0x61, 0x83, 0x9c, 0x14, 0x62, 0x83, - 0x9b, 0x14, 0x63, 0x83, 0x9c, 0x14, 0x63, 0x83, 0x9b, 0x14, 0x64, 0x83, - 0x9c, 0x14, 0x65, 0x83, 0x9b, 0x14, 0x66, 0x83, 0x9c, 0x14, 0x66, 0x83, - 0x9b, 0x14, 0x67, 0x83, 0x9c, 0x14, 0x68, 0x83, 0x9b, 0x14, 0x68, 0x83, - 0x9c, 0x14, 0x69, 0x83, 0x9b, 0x14, 0x6a, 0x83, 0x9c, 0x14, 0x6a, 0x83, - 0x9b, 0x14, 0x6b, 0x83, 0x9c, 0x14, 0x6c, 0x83, 0x9b, 0x14, 0x6c, 0x83, - 0x9c, 0x14, 0x6d, 0x83, 0x9b, 0x14, 0x6e, 0x83, 0x9c, 0x14, 0x6e, 0x83, - 0x9b, 0x14, 0x6f, 0x83, 0x9c, 0x14, 0x70, 0x83, 0x9b, 0x14, 0x70, 0x83, - 0x9c, 0x14, 0x71, 0x83, 0x9b, 0x14, 0x72, 0x83, 0x9c, 0x14, 0x72, 0x83, - 0x9b, 0x14, 0x73, 0x83, 0x9c, 0x14, 0x73, 0x83, 0x9b, 0x14, 0x74, 0x83, - 0x9c, 0x14, 0x75, 0x83, 0x9b, 0x14, 0x75, 0x83, 0x9c, 0x14, 0x76, 0x83, - 0x9b, 0x14, 0x76, 0x83, 0x9c, 0x14, 0x77, 0x83, 0x9b, 0x14, 0x78, 0x83, - 0x9c, 0x14, 0x78, 0x83, 0x9b, 0x14, 0x79, 0x83, 0x9c, 0x14, 0x79, 0x83, - 0x9b, 0x14, 0x7a, 0x83, 0x9c, 0x14, 0x7a, 0x83, 0x9b, 0x14, 0x7b, 0x83, - 0x9c, 0x14, 0x7c, 0x83, 0x9b, 0x14, 0x7c, 0x83, 0x9c, 0x14, 0x7d, 0x83, - 0x9b, 0x14, 0x7d, 0x83, 0x9c, 0x14, 0x7e, 0x83, 0x9b, 0x14, 0x7e, 0x83, - 0x9c, 0x14, 0x7f, 0x83, 0x9b, 0x14, 0x7f, 0x83, 0x9c, 0x14, 0x80, 0x83, - 0x9b, 0x14, 0x81, 0x83, 0x9c, 0x14, 0x81, 0x83, 0x9b, 0x14, 0x82, 0x83, - 0x9c, 0x14, 0x82, 0x83, 0x9b, 0x14, 0x83, 0x83, 0x9c, 0x14, 0x83, 0x83, - 0x9b, 0x14, 0x84, 0x83, 0x9c, 0x14, 0x84, 0x83, 0x9b, 0x14, 0x85, 0x83, - 0x9c, 0x14, 0x85, 0x83, 0x9b, 0x14, 0x86, 0x83, 0x9c, 0x14, 0x86, 0x83, - 0x9b, 0x14, 0x87, 0x83, 0x9c, 0x14, 0x87, 0x83, 0x9b, 0x14, 0x88, 0x83, - 0x9c, 0x14, 0x88, 0x83, 0x9b, 0x14, 0x89, 0x83, 0x9c, 0x14, 0x89, 0x83, - 0x9b, 0x14, 0x8a, 0x83, 0x9c, 0x14, 0x8a, 0x83, 0x9b, 0x14, 0x8b, 0x83, - 0x9c, 0x14, 0x8b, 0x83, 0x9b, 0x14, 0x8c, 0x83, 0x9c, 0x14, 0x8c, 0x83, - 0x9b, 0x14, 0x8d, 0x83, 0x9c, 0x14, 0x8d, 0x83, 0x9b, 0x14, 0x8e, 0x83, - 0x9c, 0x14, 0x8e, 0x83, 0x9b, 0x14, 0x8e, 0x83, 0x9c, 0x14, 0x8f, 0x83, - 0x9b, 0x14, 0x8f, 0x83, 0x9c, 0x14, 0x90, 0x83, 0x9b, 0x14, 0x90, 0x83, - 0x9c, 0x14, 0x91, 0x83, 0x9b, 0x14, 0x91, 0x83, 0x9c, 0x14, 0x92, 0x83, - 0x9b, 0x14, 0x92, 0x83, 0x9c, 0x14, 0x93, 0x83, 0x9b, 0x14, 0x93, 0x83, - 0x9c, 0x14, 0x94, 0x83, 0x9b, 0x14, 0x94, 0x83, 0x9c, 0x14, 0x94, 0x83, - 0x9b, 0x14, 0x95, 0x83, 0x9c, 0x14, 0x95, 0x83, 0x9b, 0x14, 0x96, 0x83, - 0x9c, 0x14, 0x96, 0x83, 0x9b, 0x14, 0x97, 0x83, 0x9c, 0x14, 0x97, 0x83, - 0x9b, 0x14, 0x98, 0x83, 0x9c, 0x14, 0x98, 0x83, 0x9b, 0x14, 0x98, 0x83, - 0x9c, 0x14, 0x99, 0x83, 0x9b, 0x14, 0x99, 0x83, 0x9c, 0x14, 0x9a, 0x83, - 0x9b, 0x14, 0x9a, 0x83, 0x9c, 0x14, 0x9a, 0x83, 0x9b, 0x14, 0x9b, 0x83, - 0x9c, 0x14, 0x9b, 0x83, 0x9b, 0x14, 0x9c, 0x83, 0x9c, 0x14, 0x9c, 0x83, - 0x9c, 0x14, 0x9d, 0x83, 0x9d, 0x14, 0x9d, 0x83, 0x9c, 0x14, 0x9d, 0x83, - 0x9d, 0x14, 0x9e, 0x83, 0x9c, 0x14, 0x9e, 0x83, 0x9d, 0x14, 0x9f, 0x83, - 0x9c, 0x14, 0x9f, 0x83, 0x9d, 0x14, 0x9f, 0x83, 0x9c, 0x14, 0xa0, 0x83, - 0x9d, 0x14, 0xa0, 0x83, 0x9c, 0x14, 0xa1, 0x83, 0x9d, 0x14, 0xa1, 0x83, - 0x9c, 0x14, 0xa1, 0x83, 0x9d, 0x14, 0xa2, 0x83, 0x9c, 0x14, 0xa2, 0x83, - 0x9d, 0x14, 0xa3, 0x83, 0x9c, 0x14, 0xa3, 0x83, 0x9d, 0x14, 0xa3, 0x83, - 0x9c, 0x14, 0xa4, 0x83, 0x9d, 0x14, 0xa4, 0x83, 0x9c, 0x14, 0xa5, 0x83, - 0x9d, 0x14, 0xa5, 0x84, 0xa0, 0x14, 0xa5, 0x84, 0xa1, 0x14, 0xa6, 0x84, - 0xa0, 0x14, 0xa6, 0x84, 0xa1, 0x14, 0xa6, 0x84, 0xa0, 0x14, 0xa7, 0x84, - 0xa1, 0x14, 0xa7, 0x84, 0xa0, 0x14, 0xa8, 0x84, 0xa1, 0x14, 0xa8, 0x84, - 0xa0, 0x14, 0xa8, 0x84, 0xa1, 0x14, 0xa9, 0x85, 0xa4, 0x14, 0xa9, 0x84, - 0xa1, 0x14, 0xaa, 0x85, 0xa4, 0x14, 0xaa, 0x85, 0xa4, 0x14, 0xaa, 0x85, - 0xa4, 0x14, 0xab, 0x85, 0xa4, 0x14, 0xab, 0x85, 0xa4, 0x14, 0xab, 0x85, - 0xa4, 0x14, 0xac, 0x85, 0xa4, 0x14, 0xac, 0x86, 0xa8, 0x14, 0xac, 0x85, - 0xa4, 0x14, 0xad, 0x86, 0xa8, 0x14, 0xad, 0x85, 0xa4, 0x14, 0xae, 0x86, - 0xa8, 0x14, 0xae, 0x86, 0xa7, 0x14, 0xae, 0x86, 0xa8, 0x14, 0xaf, 0x86, - 0xa7, 0x14, 0xaf, 0x86, 0xa8, 0x14, 0xaf, 0x87, 0xab, 0x14, 0xb0, 0x87, - 0xab, 0x14, 0xb0, 0x87, 0xab, 0x14, 0xb0, 0x87, 0xab, 0x14, 0xb1, 0x87, - 0xab, 0x14, 0xb1, 0x87, 0xab, 0x14, 0xb2, 0x87, 0xab, 0x14, 0xb2, 0x87, - 0xab, 0x14, 0xb2, 0x87, 0xab, 0x14, 0xb3, 0x87, 0xab, 0x14, 0xb3, 0x88, - 0xaf, 0x14, 0xb3, 0x87, 0xab, 0x14, 0xb4, 0x88, 0xaf, 0x14, 0xb4, 0x87, - 0xab, 0x14, 0xb4, 0x88, 0xaf, 0x14, 0xb5, 0x88, 0xae, 0x14, 0xb5, 0x88, - 0xaf, 0x14, 0xb5, 0x88, 0xae, 0x14, 0xb6, 0x88, 0xaf, 0x14, 0xb6, 0x88, - 0xae, 0x14, 0xb6, 0x88, 0xaf, 0x14, 0xb7, 0x89, 0xb2, 0x14, 0xb7, 0x89, - 0xb2, 0x14, 0xb7, 0x89, 0xb2, 0x14, 0xb8, 0x89, 0xb2, 0x14, 0xb8, 0x89, - 0xb2, 0x14, 0xb8, 0x89, 0xb2, 0x14, 0xb9, 0x89, 0xb2, 0x14, 0xb9, 0x89, - 0xb2, 0x14, 0xb9, 0x89, 0xb2, 0x14, 0xba, 0x89, 0xb2, 0x14, 0xba, 0x8a, - 0xb5, 0x14, 0xba, 0x89, 0xb2, 0x14, 0xbb, 0x8a, 0xb5, 0x14, 0xbb, 0x89, - 0xb2, 0x14, 0xbb, 0x8a, 0xb5, 0x14, 0xbc, 0x8a, 0xb5, 0x14, 0xbc, 0x8a, - 0xb5, 0x14, 0xbc, 0x8a, 0xb5, 0x14, 0xbd, 0x8a, 0xb5, 0x14, 0xbd, 0x8b, - 0xb8, 0x14, 0xbd, 0x8a, 0xb5, 0x14, 0xbe, 0x8b, 0xb8, 0x14, 0xbe, 0x8a, - 0xb5, 0x14, 0xbe, 0x8b, 0xb8, 0x14, 0xbf, 0x8b, 0xb8, 0x14, 0xbf, 0x8b, - 0xb8, 0x14, 0xbf, 0x8b, 0xb8, 0x14, 0xc0, 0x8b, 0xb8, 0x14, 0xc0, 0x8c, - 0xbb, 0x14, 0xc0, 0x8c, 0xbc, 0x14, 0xc1, 0x8c, 0xbb, 0x14, 0xc1, 0x8c, - 0xbc, 0x14, 0xc1, 0x8c, 0xbb, 0x14, 0xc1, 0x8c, 0xbc, 0x14, 0xc2, 0x8c, - 0xbb, 0x14, 0xc2, 0x8c, 0xbc, 0x14, 0xc2, 0x8c, 0xbb, 0x14, 0xc3, 0x8c, - 0xbc, 0x14, 0xc3, 0x8c, 0xbb, 0x14, 0xc3, 0x8c, 0xbc, 0x14, 0xc4, 0x8d, - 0xbf, 0x14, 0xc4, 0x8c, 0xbc, 0x14, 0xc4, 0x8d, 0xbf, 0x14, 0xc5, 0x8d, - 0xbe, 0x14, 0xc5, 0x8d, 0xbf, 0x14, 0xc5, 0x8d, 0xbe, 0x14, 0xc6, 0x8d, - 0xbf, 0x14, 0xc6, 0x8d, 0xbe, 0x14, 0xc6, 0x8d, 0xbf, 0x14, 0xc6, 0x8e, - 0xc1, 0x14, 0xc7, 0x8d, 0xbf, 0x14, 0xc7, 0x8e, 0xc1, 0x14, 0xc7, 0x8d, - 0xbf, 0x14, 0xc8, 0x8e, 0xc1, 0x14, 0xc8, 0x8e, 0xc1, 0x14, 0xc8, 0x8e, - 0xc1, 0x14, 0xc9, 0x8e, 0xc1, 0x14, 0xc9, 0x8e, 0xc1, 0x14, 0xc9, 0x8f, - 0xc4, 0x14, 0xc9, 0x8f, 0xc5, 0x14, 0xca, 0x8f, 0xc4, 0x14, 0xca, 0x8f, - 0xc5, 0x14, 0xca, 0x8f, 0xc4, 0x14, 0xcb, 0x8f, 0xc5, 0x14, 0xcb, 0x8f, - 0xc4, 0x14, 0xcb, 0x8f, 0xc5, 0x14, 0xcc, 0x8f, 0xc4, 0x14, 0xcc, 0x8f, - 0xc5, 0x14, 0xcc, 0x90, 0xc7, 0x14, 0xcc, 0x8f, 0xc5, 0x14, 0xcd, 0x90, - 0xc7, 0x14, 0xcd, 0x8f, 0xc5, 0x14, 0xcd, 0x90, 0xc7, 0x14, 0xce, 0x90, - 0xc7, 0x14, 0xce, 0x90, 0xc7, 0x14, 0xce, 0x90, 0xc7, 0x14, 0xce, 0x90, - 0xc7, 0x14, 0xcf, 0x91, 0xca, 0x14, 0xcf, 0x90, 0xc7, 0x14, 0xcf, 0x91, - 0xca, 0x14, 0xd0, 0x90, 0xc7, 0x14, 0xd0, 0x91, 0xca, 0x14, 0xd0, 0x91, - 0xca, 0x14, 0xd0, 0x91, 0xca, 0x14, 0xd1, 0x91, 0xca, 0x14, 0xd1, 0x91, - 0xca, 0x14, 0xd1, 0x92, 0xcd, 0x14, 0xd2, 0x92, 0xcd, 0x14, 0xd2, 0x92, - 0xcd, 0x14, 0xd2, 0x92, 0xcd, 0x14, 0xd2, 0x92, 0xcd, 0x14, 0xd3, 0x92, - 0xcd, 0x14, 0xd3, 0x92, 0xcd, 0x14, 0xd3, 0x92, 0xcd, 0x14, 0xd4, 0x92, - 0xcd, 0x14, 0xd4, 0x92, 0xcd, 0x14, 0xd4, 0x92, 0xcd, 0x14, 0xd4, 0x92, - 0xcd, 0x14, 0xd5, 0x93, 0xd0, 0x14, 0xd5, 0x92, 0xcd, 0x14, 0xd5, 0x93, - 0xd0, 0x14, 0xd6, 0x92, 0xcd, 0x14, 0xd6, 0x93, 0xd0, 0x14, 0xd6, 0x93, - 0xcf, 0x14, 0xd6, 0x93, 0xd0, 0x14, 0xd7, 0x93, 0xcf, 0x14, 0xd7, 0x93, - 0xd0, 0x14, 0xd7, 0x94, 0xd2, 0x14, 0xd7, 0x94, 0xd2, 0x14, 0xd8, 0x94, - 0xd2, 0x14, 0xd8, 0x94, 0xd2, 0x14, 0xd8, 0x94, 0xd2, 0x14, 0xd9, 0x94, - 0xd2, 0x14, 0xd9, 0x94, 0xd2, 0x14, 0xd9, 0x94, 0xd2, 0x14, 0xd9, 0x94, - 0xd2, 0x14, 0xda, 0x94, 0xd2, 0x14, 0xda, 0x94, 0xd5, 0x14, 0xda, 0x94, - 0xd2, 0x14, 0xda, 0x94, 0xd5, 0x14, 0xdb, 0x94, 0xd2, 0x14, 0xdb, 0x94, - 0xd5, 0x14, 0xdb, 0x94, 0xd5, 0x14, 0xdb, 0x94, 0xd5, 0x14, 0xdc, 0x94, - 0xd5, 0x14, 0xdc, 0x94, 0xd5, 0x14, 0xdc, 0x95, 0xd7, 0x14, 0xdd, 0x94, - 0xd5, 0x14, 0xdd, 0x95, 0xd7, 0x14, 0xdd, 0x94, 0xd5, 0x14, 0xdd, 0x95, - 0xd7, 0x14, 0xde, 0x94, 0xd5, 0x14, 0xde, 0x95, 0xd7, 0x14, 0xde, 0x95, - 0xd7, 0x14, 0xde, 0x95, 0xd7, 0x14, 0xdf, 0x95, 0xd7, 0x14, 0xdf, 0x95, - 0xd7, 0x14, 0xdf, 0x96, 0xda, 0x14, 0xdf, 0x96, 0xda, 0x14, 0xe0, 0x96, - 0xda, 0x14, 0xe0, 0x96, 0xda, 0x14, 0xe0, 0x96, 0xda, 0x14, 0xe1, 0x96, - 0xda, 0x14, 0xe1, 0x96, 0xda, 0x14, 0xe1, 0x96, 0xda, 0x14, 0xe1, 0x96, - 0xda, 0x14, 0xe2, 0x96, 0xda, 0x14, 0xe2, 0x97, 0xdd, 0x14, 0xe2, 0x96, - 0xda, 0x14, 0xe2, 0x97, 0xdd, 0x14, 0xe3, 0x96, 0xda, 0x14, 0xe3, 0x97, - 0xdd, 0x14, 0xe3, 0x97, 0xdc, 0x14, 0xe3, 0x97, 0xdd, 0x14, 0xe4, 0x97, - 0xdc, 0x14, 0xe4, 0x97, 0xdd, 0x14, 0xe4, 0x98, 0xdf, 0x14, 0xe4, 0x97, - 0xdd, 0x14, 0xe5, 0x98, 0xdf, 0x14, 0xe5, 0x97, 0xdd, 0x14, 0xe5, 0x98, - 0xdf, 0x14, 0xe5, 0x98, 0xdf, 0x14, 0xe6, 0x98, 0xdf, 0x14, 0xe6, 0x98, - 0xdf, 0x14, 0xe6, 0x98, 0xdf, 0x14, 0xe6, 0x99, 0xe1, 0x14, 0xe7, 0x99, - 0xe2, 0x14, 0xe7, 0x99, 0xe1, 0x14, 0xe7, 0x99, 0xe2, 0x14, 0xe7, 0x99, - 0xe1, 0x14, 0xe8, 0x99, 0xe2, 0x14, 0xe8, 0x99, 0xe1, 0x14, 0xe8, 0x99, - 0xe2, 0x14, 0xe8, 0x99, 0xe1, 0x14, 0xe9, 0x99, 0xe2, 0x14, 0xe9, 0x9a, - 0xe4, 0x14, 0xe9, 0x99, 0xe2, 0x14, 0xe9, 0x9a, 0xe4, 0x14, 0xea, 0x99, - 0xe2, 0x14, 0xea, 0x9a, 0xe4, 0x14, 0xea, 0x99, 0xe2, 0x14, 0xea, 0x9a, - 0xe4, 0x14, 0xeb, 0x9a, 0xe4, 0x14, 0xeb, 0x9a, 0xe4, 0x14, 0xeb, 0x9a, - 0xe6, 0x14, 0xeb, 0x9a, 0xe4, 0x14, 0xec, 0x9a, 0xe6, 0x14, 0xec, 0x9a, - 0xe4, 0x14, 0xec, 0x9a, 0xe6, 0x14, 0xec, 0x9a, 0xe4, 0x14, 0xec, 0x9a, - 0xe6, 0x14, 0xed, 0x9a, 0xe6, 0x14, 0xed, 0x9a, 0xe6, 0x14, 0xed, 0x9a, - 0xe6, 0x14, 0xed, 0x9a, 0xe6, 0x14, 0xee, 0x9b, 0xe8, 0x14, 0xee, 0x9b, - 0xe9, 0x14, 0xee, 0x9b, 0xe8, 0x14, 0xee, 0x9b, 0xe9, 0x14, 0xef, 0x9b, - 0xe8, 0x14, 0xef, 0x9b, 0xe9, 0x14, 0xef, 0x9b, 0xe8, 0x14, 0xef, 0x9b, - 0xe9, 0x14, 0xf0, 0x9b, 0xe8, 0x14, 0xf0, 0x9b, 0xe9, 0x14, 0xf0, 0x9c, - 0xeb, 0x14, 0xf0, 0x9b, 0xe9, 0x14, 0xf1, 0x9c, 0xeb, 0x14, 0xf1, 0x9b, - 0xe9, 0x14, 0xf1, 0x9c, 0xeb, 0x14, 0xf1, 0x9b, 0xe9, 0x14, 0xf2, 0x9c, - 0xeb, 0x14, 0xf2, 0x9c, 0xeb, 0x14, 0xf2, 0x9c, 0xeb, 0x14, 0xf2, 0x9d, - 0xed, 0x14, 0xf2, 0x9d, 0xed, 0x14, 0xf3, 0x9d, 0xed, 0x14, 0xf3, 0x9d, - 0xed, 0x14, 0xf3, 0x9d, 0xed, 0x14, 0xf3, 0x9d, 0xed, 0x14, 0xf4, 0x9d, - 0xed, 0x14, 0xf4, 0x9d, 0xed, 0x14, 0xf4, 0x9d, 0xed, 0x14, 0xf4, 0x9d, - 0xed, 0x14, 0xf5, 0x9e, 0xef, 0x14, 0xf5, 0x9d, 0xed, 0x14, 0xf5, 0x9e, - 0xef, 0x14, 0xf5, 0x9d, 0xed, 0x14, 0xf5, 0x9e, 0xef, 0x14, 0xf6, 0x9d, - 0xed, 0x14, 0xf6, 0x9e, 0xef, 0x14, 0xf6, 0x9e, 0xef, 0x14, 0xf6, 0x9e, - 0xef, 0x14, 0xf7, 0x9e, 0xef, 0x14, 0xf7, 0x9e, 0xef, 0x14, 0xf7, 0x9f, - 0xf2, 0x14, 0xf7, 0x9e, 0xef, 0x14, 0xf8, 0x9f, 0xf2, 0x14, 0xf8, 0x9e, - 0xef, 0x14, 0xf8, 0x9f, 0xf2, 0x14, 0xf8, 0x9f, 0xf1, 0x14, 0xf8, 0x9f, - 0xf2, 0x14, 0xf9, 0x9f, 0xf1, 0x14, 0xf9, 0x9f, 0xf2, 0x14, 0xf9, 0x9f, - 0xf4, 0x14, 0xf9, 0x9f, 0xf4, 0x14, 0xfa, 0x9f, 0xf4, 0x14, 0xfa, 0x9f, - 0xf4, 0x14, 0xfa, 0x9f, 0xf4, 0x14, 0xfa, 0x9f, 0xf4, 0x14, 0xfa, 0x9f, - 0xf4, 0x14, 0xfb, 0x9f, 0xf4, 0x14, 0xfb, 0x9f, 0xf4, 0x14, 0xfb, 0x9f, - 0xf4, 0x14, 0xfb, 0xa0, 0xf6, 0x14, 0xfc, 0x9f, 0xf4, 0x14, 0xfc, 0xa0, - 0xf6, 0x14, 0xfc, 0x9f, 0xf4, 0x14, 0xfc, 0xa0, 0xf6, 0x14, 0xfc, 0x9f, - 0xf4, 0x14, 0xfd, 0xa0, 0xf6, 0x14, 0xfd, 0xa0, 0xf6, 0x14, 0xfd, 0xa0, - 0xf6, 0x14, 0xfd, 0xa1, 0xf8, 0x14, 0xfe, 0xa0, 0xf6, 0x14, 0xfe, 0xa0, - 0xf6, 0x14, 0xfe, 0xa0, 0xf6, 0x14, 0xfe, 0xa1, 0xf8, 0x14, 0xfe, 0xa0, - 0xf6, 0x14, 0xff, 0xa1, 0xf8, 0x14, 0xff, 0xa1, 0xf8, 0x14, 0x03, 0x84, - 0x9b, 0x15, 0x0a, 0x84, 0x9b, 0x15, 0x0f, 0x84, 0x9b, 0x15, 0x14, 0x84, - 0x9b, 0x15, 0x17, 0x84, 0x9b, 0x15, 0x1b, 0x84, 0x9b, 0x15, 0x1e, 0x84, - 0x9b, 0x15, 0x20, 0x86, 0x9b, 0x15, 0x23, 0x84, 0x9b, 0x15, 0x25, 0x86, - 0x9b, 0x15, 0x27, 0x84, 0x9b, 0x15, 0x29, 0x86, 0x9b, 0x15, 0x2b, 0x84, - 0x9b, 0x15, 0x2d, 0x84, 0x9c, 0x15, 0x2f, 0x84, 0x9b, 0x15, 0x31, 0x84, - 0x9c, 0x15, 0x32, 0x84, 0x9b, 0x15, 0x34, 0x84, 0x9c, 0x15, 0x35, 0x84, - 0x9b, 0x15, 0x37, 0x84, 0x9c, 0x15, 0x38, 0x84, 0x9b, 0x15, 0x3a, 0x84, - 0x9c, 0x15, 0x3b, 0x84, 0x9b, 0x15, 0x3c, 0x84, 0x9c, 0x15, 0x3e, 0x84, - 0x9b, 0x15, 0x3f, 0x84, 0x9c, 0x15, 0x40, 0x84, 0x9b, 0x15, 0x42, 0x84, - 0x9c, 0x15, 0x43, 0x84, 0x9b, 0x15, 0x44, 0x84, 0x9c, 0x15, 0x45, 0x84, - 0x9b, 0x15, 0x46, 0x84, 0x9c, 0x15, 0x47, 0x84, 0x9b, 0x15, 0x48, 0x84, - 0x9c, 0x15, 0x49, 0x84, 0x9b, 0x15, 0x4a, 0x84, 0x9c, 0x15, 0x4b, 0x84, - 0x9b, 0x15, 0x4c, 0x84, 0x9c, 0x15, 0x4d, 0x84, 0x9b, 0x15, 0x4e, 0x84, - 0x9c, 0x15, 0x4f, 0x84, 0x9b, 0x15, 0x50, 0x84, 0x9c, 0x15, 0x51, 0x84, - 0x9b, 0x15, 0x52, 0x84, 0x9c, 0x15, 0x53, 0x84, 0x9b, 0x15, 0x54, 0x84, - 0x9c, 0x15, 0x55, 0x84, 0x9b, 0x15, 0x56, 0x84, 0x9c, 0x15, 0x57, 0x84, - 0x9b, 0x15, 0x58, 0x84, 0x9c, 0x15, 0x58, 0x84, 0x9b, 0x15, 0x59, 0x84, - 0x9c, 0x15, 0x5a, 0x84, 0x9b, 0x15, 0x5b, 0x84, 0x9c, 0x15, 0x5c, 0x84, - 0x9b, 0x15, 0x5d, 0x84, 0x9c, 0x15, 0x5d, 0x84, 0x9b, 0x15, 0x5e, 0x84, - 0x9c, 0x15, 0x5f, 0x84, 0x9b, 0x15, 0x60, 0x84, 0x9c, 0x15, 0x60, 0x84, - 0x9b, 0x15, 0x61, 0x84, 0x9c, 0x15, 0x62, 0x84, 0x9b, 0x15, 0x63, 0x84, - 0x9c, 0x15, 0x63, 0x84, 0x9b, 0x15, 0x64, 0x84, 0x9c, 0x15, 0x65, 0x84, - 0x9b, 0x15, 0x66, 0x84, 0x9c, 0x15, 0x66, 0x84, 0x9b, 0x15, 0x67, 0x84, - 0x9c, 0x15, 0x68, 0x84, 0x9b, 0x15, 0x68, 0x84, 0x9c, 0x15, 0x69, 0x84, - 0x9b, 0x15, 0x6a, 0x84, 0x9c, 0x15, 0x6a, 0x84, 0x9b, 0x15, 0x6b, 0x84, - 0x9c, 0x15, 0x6c, 0x84, 0x9b, 0x15, 0x6c, 0x84, 0x9c, 0x15, 0x6d, 0x84, - 0x9b, 0x15, 0x6e, 0x84, 0x9c, 0x15, 0x6e, 0x84, 0x9b, 0x15, 0x6f, 0x84, - 0x9c, 0x15, 0x70, 0x84, 0x9b, 0x15, 0x70, 0x84, 0x9c, 0x15, 0x71, 0x84, - 0x9b, 0x15, 0x72, 0x84, 0x9c, 0x15, 0x72, 0x84, 0x9b, 0x15, 0x73, 0x84, - 0x9c, 0x15, 0x73, 0x84, 0x9b, 0x15, 0x74, 0x84, 0x9c, 0x15, 0x75, 0x84, - 0x9b, 0x15, 0x75, 0x84, 0x9c, 0x15, 0x76, 0x84, 0x9b, 0x15, 0x76, 0x84, - 0x9c, 0x15, 0x77, 0x84, 0x9b, 0x15, 0x78, 0x84, 0x9c, 0x15, 0x78, 0x84, - 0x9b, 0x15, 0x79, 0x84, 0x9c, 0x15, 0x79, 0x84, 0x9b, 0x15, 0x7a, 0x84, - 0x9c, 0x15, 0x7a, 0x84, 0x9b, 0x15, 0x7b, 0x84, 0x9c, 0x15, 0x7c, 0x84, - 0x9b, 0x15, 0x7c, 0x84, 0x9c, 0x15, 0x7d, 0x84, 0x9b, 0x15, 0x7d, 0x84, - 0x9c, 0x15, 0x7e, 0x84, 0x9b, 0x15, 0x7e, 0x84, 0x9c, 0x15, 0x7f, 0x84, - 0x9b, 0x15, 0x7f, 0x84, 0x9c, 0x15, 0x80, 0x84, 0x9b, 0x15, 0x81, 0x84, - 0x9c, 0x15, 0x81, 0x84, 0x9b, 0x15, 0x82, 0x84, 0x9c, 0x15, 0x82, 0x84, - 0x9b, 0x15, 0x83, 0x84, 0x9c, 0x15, 0x83, 0x84, 0x9b, 0x15, 0x84, 0x84, - 0x9c, 0x15, 0x84, 0x84, 0x9b, 0x15, 0x85, 0x84, 0x9c, 0x15, 0x85, 0x84, - 0x9b, 0x15, 0x86, 0x84, 0x9c, 0x15, 0x86, 0x84, 0x9b, 0x15, 0x87, 0x84, - 0x9c, 0x15, 0x87, 0x84, 0x9b, 0x15, 0x88, 0x84, 0x9c, 0x15, 0x88, 0x84, - 0x9b, 0x15, 0x89, 0x84, 0x9c, 0x15, 0x89, 0x84, 0x9b, 0x15, 0x8a, 0x84, - 0x9c, 0x15, 0x8a, 0x84, 0x9b, 0x15, 0x8b, 0x84, 0x9c, 0x15, 0x8b, 0x84, - 0x9b, 0x15, 0x8c, 0x84, 0x9c, 0x15, 0x8c, 0x84, 0x9b, 0x15, 0x8d, 0x84, - 0x9c, 0x15, 0x8d, 0x84, 0x9b, 0x15, 0x8e, 0x84, 0x9c, 0x15, 0x8e, 0x84, - 0x9b, 0x15, 0x8e, 0x84, 0x9c, 0x15, 0x8f, 0x84, 0x9b, 0x15, 0x8f, 0x84, - 0x9c, 0x15, 0x90, 0x84, 0x9b, 0x15, 0x90, 0x84, 0x9c, 0x15, 0x91, 0x84, - 0x9b, 0x15, 0x91, 0x84, 0x9c, 0x15, 0x92, 0x84, 0x9b, 0x15, 0x92, 0x84, - 0x9c, 0x15, 0x93, 0x84, 0x9b, 0x15, 0x93, 0x84, 0x9c, 0x15, 0x94, 0x84, - 0x9b, 0x15, 0x94, 0x84, 0x9c, 0x15, 0x94, 0x84, 0x9b, 0x15, 0x95, 0x84, - 0x9c, 0x15, 0x95, 0x84, 0x9b, 0x15, 0x96, 0x84, 0x9c, 0x15, 0x96, 0x84, - 0x9b, 0x15, 0x97, 0x84, 0x9c, 0x15, 0x97, 0x84, 0x9b, 0x15, 0x98, 0x84, - 0x9c, 0x15, 0x98, 0x84, 0x9b, 0x15, 0x98, 0x84, 0x9c, 0x15, 0x99, 0x84, - 0x9b, 0x15, 0x99, 0x84, 0x9c, 0x15, 0x9a, 0x84, 0x9b, 0x15, 0x9a, 0x84, - 0x9c, 0x15, 0x9a, 0x84, 0x9b, 0x15, 0x9b, 0x84, 0x9c, 0x15, 0x9b, 0x84, - 0x9b, 0x15, 0x9c, 0x84, 0x9c, 0x15, 0x9c, 0x84, 0x9c, 0x15, 0x9d, 0x84, - 0x9d, 0x15, 0x9d, 0x84, 0x9d, 0x15, 0x9d, 0x84, 0x9d, 0x15, 0x9e, 0x84, - 0x9e, 0x15, 0x9e, 0x84, 0x9e, 0x15, 0x9f, 0x84, 0x9f, 0x15, 0x9f, 0x84, - 0x9e, 0x15, 0x9f, 0x84, 0x9f, 0x15, 0xa0, 0x84, 0x9e, 0x15, 0xa0, 0x84, - 0x9f, 0x15, 0xa1, 0x84, 0x9e, 0x15, 0xa1, 0x84, 0x9f, 0x15, 0xa1, 0x84, - 0x9e, 0x15, 0xa2, 0x84, 0x9f, 0x15, 0xa2, 0x84, 0x9e, 0x15, 0xa3, 0x84, - 0x9f, 0x15, 0xa3, 0x84, 0x9e, 0x15, 0xa3, 0x84, 0x9f, 0x15, 0xa4, 0x84, - 0x9e, 0x15, 0xa4, 0x84, 0x9f, 0x15, 0xa5, 0x84, 0x9e, 0x15, 0xa5, 0x84, - 0x9f, 0x15, 0xa5, 0x84, 0x9e, 0x15, 0xa6, 0x84, 0x9f, 0x15, 0xa6, 0x84, - 0x9e, 0x15, 0xa6, 0x84, 0x9f, 0x15, 0xa7, 0x85, 0xa2, 0x15, 0xa7, 0x84, - 0x9f, 0x15, 0xa8, 0x85, 0xa2, 0x15, 0xa8, 0x85, 0xa2, 0x15, 0xa8, 0x85, - 0xa2, 0x15, 0xa9, 0x85, 0xa2, 0x15, 0xa9, 0x85, 0xa2, 0x15, 0xaa, 0x85, - 0xa2, 0x15, 0xaa, 0x85, 0xa2, 0x15, 0xaa, 0x86, 0xa6, 0x15, 0xab, 0x86, - 0xa6, 0x15, 0xab, 0x86, 0xa6, 0x15, 0xab, 0x86, 0xa6, 0x15, 0xac, 0x86, - 0xa6, 0x15, 0xac, 0x86, 0xa6, 0x15, 0xac, 0x86, 0xa6, 0x15, 0xad, 0x86, - 0xa6, 0x15, 0xad, 0x86, 0xa6, 0x15, 0xae, 0x86, 0xa6, 0x15, 0xae, 0x87, - 0xaa, 0x15, 0xae, 0x86, 0xa6, 0x15, 0xaf, 0x87, 0xaa, 0x15, 0xaf, 0x86, - 0xa6, 0x15, 0xaf, 0x87, 0xaa, 0x15, 0xb0, 0x87, 0xa9, 0x15, 0xb0, 0x87, - 0xaa, 0x15, 0xb0, 0x87, 0xa9, 0x15, 0xb1, 0x87, 0xaa, 0x15, 0xb1, 0x88, - 0xad, 0x15, 0xb2, 0x88, 0xad, 0x15, 0xb2, 0x88, 0xad, 0x15, 0xb2, 0x88, - 0xad, 0x15, 0xb3, 0x88, 0xad, 0x15, 0xb3, 0x88, 0xad, 0x15, 0xb3, 0x88, - 0xad, 0x15, 0xb4, 0x88, 0xad, 0x15, 0xb4, 0x88, 0xad, 0x15, 0xb4, 0x88, - 0xad, 0x15, 0xb5, 0x89, 0xb0, 0x15, 0xb5, 0x88, 0xad, 0x15, 0xb5, 0x89, - 0xb0, 0x15, 0xb6, 0x88, 0xad, 0x15, 0xb6, 0x89, 0xb0, 0x15, 0xb6, 0x89, - 0xb2, 0x15, 0xb7, 0x89, 0xb0, 0x15, 0xb7, 0x89, 0xb2, 0x15, 0xb7, 0x89, - 0xb0, 0x15, 0xb8, 0x89, 0xb2, 0x15, 0xb8, 0x89, 0xb0, 0x15, 0xb8, 0x89, - 0xb2, 0x15, 0xb9, 0x89, 0xb2, 0x15, 0xb9, 0x89, 0xb2, 0x15, 0xb9, 0x89, - 0xb2, 0x15, 0xba, 0x89, 0xb2, 0x15, 0xba, 0x8a, 0xb3, 0x15, 0xba, 0x8a, - 0xb4, 0x15, 0xbb, 0x8a, 0xb3, 0x15, 0xbb, 0x8a, 0xb4, 0x15, 0xbb, 0x8b, - 0xb7, 0x15, 0xbc, 0x8b, 0xb7, 0x15, 0xbc, 0x8b, 0xb7, 0x15, 0xbc, 0x8b, - 0xb7, 0x15, 0xbd, 0x8b, 0xb7, 0x15, 0xbd, 0x8b, 0xb7, 0x15, 0xbd, 0x8b, - 0xb7, 0x15, 0xbe, 0x8b, 0xb7, 0x15, 0xbe, 0x8b, 0xb7, 0x15, 0xbe, 0x8b, - 0xb7, 0x15, 0xbf, 0x8c, 0xba, 0x15, 0xbf, 0x8b, 0xb7, 0x15, 0xbf, 0x8c, - 0xba, 0x15, 0xc0, 0x8b, 0xb7, 0x15, 0xc0, 0x8c, 0xba, 0x15, 0xc0, 0x8c, - 0xba, 0x15, 0xc1, 0x8c, 0xba, 0x15, 0xc1, 0x8c, 0xba, 0x15, 0xc1, 0x8c, - 0xba, 0x15, 0xc1, 0x8d, 0xbd, 0x15, 0xc2, 0x8c, 0xba, 0x15, 0xc2, 0x8d, - 0xbd, 0x15, 0xc2, 0x8c, 0xba, 0x15, 0xc3, 0x8d, 0xbd, 0x15, 0xc3, 0x8d, - 0xbd, 0x15, 0xc3, 0x8d, 0xbd, 0x15, 0xc4, 0x8d, 0xbd, 0x15, 0xc4, 0x8d, - 0xbd, 0x15, 0xc4, 0x8d, 0xbd, 0x15, 0xc5, 0x8d, 0xbd, 0x15, 0xc5, 0x8e, - 0xc0, 0x15, 0xc5, 0x8e, 0xc0, 0x15, 0xc6, 0x8e, 0xc0, 0x15, 0xc6, 0x8e, - 0xc0, 0x15, 0xc6, 0x8e, 0xc0, 0x15, 0xc6, 0x8e, 0xc0, 0x15, 0xc7, 0x8e, - 0xc0, 0x15, 0xc7, 0x8e, 0xc0, 0x15, 0xc7, 0x8e, 0xc0, 0x15, 0xc8, 0x8e, - 0xc0, 0x15, 0xc8, 0x8e, 0xc3, 0x15, 0xc8, 0x8e, 0xc0, 0x15, 0xc9, 0x8e, - 0xc3, 0x15, 0xc9, 0x8e, 0xc0, 0x15, 0xc9, 0x8e, 0xc3, 0x15, 0xc9, 0x8e, - 0xc3, 0x15, 0xca, 0x8e, 0xc3, 0x15, 0xca, 0x8e, 0xc3, 0x15, 0xca, 0x8e, - 0xc3, 0x15, 0xcb, 0x8f, 0xc6, 0x15, 0xcb, 0x8e, 0xc3, 0x15, 0xcb, 0x8f, - 0xc6, 0x15, 0xcc, 0x8e, 0xc3, 0x15, 0xcc, 0x8f, 0xc6, 0x15, 0xcc, 0x8f, - 0xc6, 0x15, 0xcc, 0x8f, 0xc6, 0x15, 0xcd, 0x8f, 0xc6, 0x15, 0xcd, 0x8f, - 0xc6, 0x15, 0xcd, 0x90, 0xc9, 0x15, 0xce, 0x90, 0xc9, 0x15, 0xce, 0x90, - 0xc9, 0x15, 0xce, 0x90, 0xc9, 0x15, 0xce, 0x90, 0xc9, 0x15, 0xcf, 0x90, - 0xc9, 0x15, 0xcf, 0x90, 0xc9, 0x15, 0xcf, 0x90, 0xc9, 0x15, 0xd0, 0x90, - 0xc9, 0x15, 0xd0, 0x90, 0xc9, 0x15, 0xd0, 0x91, 0xcc, 0x15, 0xd0, 0x90, - 0xc9, 0x15, 0xd1, 0x91, 0xcc, 0x15, 0xd1, 0x90, 0xc9, 0x15, 0xd1, 0x91, - 0xcc, 0x15, 0xd2, 0x91, 0xcb, 0x15, 0xd2, 0x91, 0xcc, 0x15, 0xd2, 0x91, - 0xcb, 0x15, 0xd2, 0x91, 0xcc, 0x15, 0xd3, 0x92, 0xce, 0x15, 0xd3, 0x92, - 0xce, 0x15, 0xd3, 0x92, 0xce, 0x15, 0xd4, 0x92, 0xce, 0x15, 0xd4, 0x92, - 0xce, 0x15, 0xd4, 0x92, 0xce, 0x15, 0xd4, 0x92, 0xce, 0x15, 0xd5, 0x92, - 0xce, 0x15, 0xd5, 0x92, 0xce, 0x15, 0xd5, 0x92, 0xce, 0x15, 0xd6, 0x92, - 0xce, 0x15, 0xd6, 0x92, 0xce, 0x15, 0xd6, 0x93, 0xd1, 0x15, 0xd6, 0x92, - 0xce, 0x15, 0xd7, 0x93, 0xd1, 0x15, 0xd7, 0x92, 0xce, 0x15, 0xd7, 0x93, - 0xd1, 0x15, 0xd7, 0x93, 0xd1, 0x15, 0xd8, 0x93, 0xd1, 0x15, 0xd8, 0x93, - 0xd1, 0x15, 0xd8, 0x93, 0xd1, 0x15, 0xd9, 0x94, 0xd4, 0x15, 0xd9, 0x93, - 0xd1, 0x15, 0xd9, 0x94, 0xd4, 0x15, 0xd9, 0x93, 0xd1, 0x15, 0xda, 0x94, - 0xd4, 0x15, 0xda, 0x94, 0xd3, 0x15, 0xda, 0x94, 0xd4, 0x15, 0xda, 0x94, - 0xd3, 0x15, 0xdb, 0x94, 0xd4, 0x15, 0xdb, 0x95, 0xd6, 0x15, 0xdb, 0x95, - 0xd6, 0x15, 0xdb, 0x95, 0xd6, 0x15, 0xdc, 0x95, 0xd6, 0x15, 0xdc, 0x95, - 0xd6, 0x15, 0xdc, 0x95, 0xd6, 0x15, 0xdd, 0x95, 0xd6, 0x15, 0xdd, 0x95, - 0xd6, 0x15, 0xdd, 0x95, 0xd6, 0x15, 0xdd, 0x95, 0xd6, 0x15, 0xde, 0x96, - 0xd9, 0x15, 0xde, 0x95, 0xd6, 0x15, 0xde, 0x96, 0xd9, 0x15, 0xde, 0x95, - 0xd6, 0x15, 0xdf, 0x96, 0xd9, 0x15, 0xdf, 0x95, 0xd6, 0x15, 0xdf, 0x96, - 0xd9, 0x15, 0xdf, 0x96, 0xd9, 0x15, 0xe0, 0x96, 0xd9, 0x15, 0xe0, 0x96, - 0xd9, 0x15, 0xe0, 0x96, 0xd9, 0x15, 0xe1, 0x97, 0xdb, 0x15, 0xe1, 0x96, - 0xd9, 0x15, 0xe1, 0x97, 0xdb, 0x15, 0xe1, 0x96, 0xd9, 0x15, 0xe2, 0x97, - 0xdb, 0x15, 0xe2, 0x97, 0xdb, 0x15, 0xe2, 0x97, 0xdb, 0x15, 0xe2, 0x97, - 0xdb, 0x15, 0xe3, 0x97, 0xdb, 0x15, 0xe3, 0x98, 0xde, 0x15, 0xe3, 0x98, - 0xde, 0x15, 0xe3, 0x98, 0xde, 0x15, 0xe4, 0x98, 0xde, 0x15, 0xe4, 0x98, - 0xde, 0x15, 0xe4, 0x98, 0xde, 0x15, 0xe4, 0x98, 0xde, 0x15, 0xe5, 0x98, - 0xde, 0x15, 0xe5, 0x98, 0xde, 0x15, 0xe5, 0x98, 0xde, 0x15, 0xe5, 0x98, - 0xe0, 0x15, 0xe6, 0x98, 0xde, 0x15, 0xe6, 0x98, 0xe0, 0x15, 0xe6, 0x98, - 0xde, 0x15, 0xe6, 0x98, 0xe0, 0x15, 0xe7, 0x98, 0xe0, 0x15, 0xe7, 0x98, - 0xe0, 0x15, 0xe7, 0x98, 0xe0, 0x15, 0xe7, 0x98, 0xe0, 0x15, 0xe8, 0x99, - 0xe3, 0x15, 0xe8, 0x98, 0xe0, 0x15, 0xe8, 0x99, 0xe3, 0x15, 0xe8, 0x98, - 0xe0, 0x15, 0xe9, 0x99, 0xe3, 0x15, 0xe9, 0x98, 0xe0, 0x15, 0xe9, 0x99, - 0xe3, 0x15, 0xe9, 0x99, 0xe2, 0x15, 0xea, 0x99, 0xe3, 0x15, 0xea, 0x9a, - 0xe5, 0x15, 0xea, 0x9a, 0xe5, 0x15, 0xea, 0x9a, 0xe5, 0x15, 0xeb, 0x9a, - 0xe5, 0x15, 0xeb, 0x9a, 0xe5, 0x15, 0xeb, 0x9a, 0xe5, 0x15, 0xeb, 0x9a, - 0xe5, 0x15, 0xec, 0x9a, 0xe5, 0x15, 0xec, 0x9a, 0xe5, 0x15, 0xec, 0x9a, - 0xe5, 0x15, 0xec, 0x9b, 0xe7, 0x15, 0xec, 0x9a, 0xe5, 0x15, 0xed, 0x9b, - 0xe7, 0x15, 0xed, 0x9a, 0xe5, 0x15, 0xed, 0x9b, 0xe7, 0x15, 0xed, 0x9a, - 0xe5, 0x15, 0xee, 0x9b, 0xe7, 0x15, 0xee, 0x9b, 0xe7, 0x15, 0xee, 0x9b, - 0xe7, 0x15, 0xee, 0x9b, 0xe7, 0x15, 0xef, 0x9b, 0xe7, 0x15, 0xef, 0x9c, - 0xea, 0x15, 0xef, 0x9c, 0xea, 0x15, 0xef, 0x9c, 0xea, 0x15, 0xf0, 0x9c, - 0xea, 0x15, 0xf0, 0x9c, 0xea, 0x15, 0xf0, 0x9c, 0xea, 0x15, 0xf0, 0x9c, - 0xea, 0x15, 0xf1, 0x9c, 0xea, 0x15, 0xf1, 0x9c, 0xea, 0x15, 0xf1, 0x9c, - 0xea, 0x15, 0xf1, 0x9d, 0xec, 0x15, 0xf2, 0x9c, 0xea, 0x15, 0xf2, 0x9d, - 0xec, 0x15, 0xf2, 0x9c, 0xea, 0x15, 0xf2, 0x9d, 0xec, 0x15, 0xf2, 0x9c, - 0xea, 0x15, 0xf3, 0x9d, 0xec, 0x15, 0xf3, 0x9d, 0xec, 0x15, 0xf3, 0x9d, - 0xec, 0x15, 0xf3, 0x9d, 0xee, 0x15, 0xf4, 0x9d, 0xec, 0x15, 0xf4, 0x9d, - 0xee, 0x15, 0xf4, 0x9d, 0xec, 0x15, 0xf4, 0x9d, 0xee, 0x15, 0xf5, 0x9d, - 0xec, 0x15, 0xf5, 0x9d, 0xee, 0x15, 0xf5, 0x9d, 0xee, 0x15, 0xf5, 0x9d, - 0xee, 0x15, 0xf5, 0x9e, 0xf0, 0x15, 0xf6, 0x9e, 0xf1, 0x15, 0xf6, 0x9e, - 0xf0, 0x15, 0xf6, 0x9e, 0xf1, 0x15, 0xf6, 0x9e, 0xf0, 0x15, 0xf7, 0x9e, - 0xf1, 0x15, 0xf7, 0x9e, 0xf0, 0x15, 0xf7, 0x9e, 0xf1, 0x15, 0xf7, 0x9e, - 0xf0, 0x15, 0xf8, 0x9e, 0xf1, 0x15, 0xf8, 0x9e, 0xf0, 0x15, 0xf8, 0x9e, - 0xf1, 0x15, 0xf8, 0x9f, 0xf3, 0x15, 0xf8, 0x9e, 0xf1, 0x15, 0xf9, 0x9f, - 0xf3, 0x15, 0xf9, 0x9e, 0xf1, 0x15, 0xf9, 0x9f, 0xf3, 0x15, 0xf9, 0x9f, - 0xf2, 0x15, 0xfa, 0x9f, 0xf3, 0x15, 0xfa, 0x9f, 0xf2, 0x15, 0xfa, 0x9f, - 0xf3, 0x15, 0xfa, 0xa0, 0xf5, 0x15, 0xfa, 0x9f, 0xf3, 0x15, 0xfb, 0xa0, - 0xf5, 0x15, 0xfb, 0x9f, 0xf3, 0x15, 0xfb, 0xa0, 0xf5, 0x15, 0xfb, 0x9f, - 0xf3, 0x15, 0xfc, 0xa0, 0xf5, 0x15, 0xfc, 0xa0, 0xf5, 0x15, 0xfc, 0xa0, - 0xf5, 0x15, 0xfc, 0xa1, 0xf7, 0x15, 0xfc, 0xa1, 0xf7, 0x15, 0xfd, 0xa1, - 0xf7, 0x15, 0xfd, 0xa1, 0xf7, 0x15, 0xfd, 0xa1, 0xf7, 0x15, 0xfd, 0xa1, - 0xf7, 0x15, 0xfe, 0xa1, 0xf7, 0x15, 0xfe, 0xa1, 0xf7, 0x15, 0xfe, 0xa1, - 0xf7, 0x15, 0xfe, 0xa1, 0xf7, 0x15, 0xfe, 0xa1, 0xf9, 0x15, 0xff, 0xa1, - 0xf7, 0x15, 0xff, 0xa1, 0xf9, 0x15, 0x03, 0x83, 0x9b, 0x15, 0x0a, 0x83, - 0x9b, 0x15, 0x0f, 0x83, 0x9b, 0x15, 0x14, 0x83, 0x9b, 0x15, 0x17, 0x83, - 0x9b, 0x15, 0x1b, 0x83, 0x9b, 0x15, 0x1e, 0x83, 0x9b, 0x15, 0x20, 0x83, - 0x9c, 0x15, 0x23, 0x83, 0x9b, 0x15, 0x25, 0x83, 0x9c, 0x15, 0x27, 0x83, - 0x9b, 0x15, 0x29, 0x83, 0x9c, 0x15, 0x2b, 0x83, 0x9b, 0x15, 0x2d, 0x83, - 0x9c, 0x15, 0x2f, 0x83, 0x9b, 0x15, 0x31, 0x83, 0x9c, 0x15, 0x32, 0x83, - 0x9b, 0x15, 0x34, 0x83, 0x9c, 0x15, 0x35, 0x83, 0x9b, 0x15, 0x37, 0x83, - 0x9c, 0x15, 0x38, 0x83, 0x9b, 0x15, 0x3a, 0x83, 0x9c, 0x15, 0x3b, 0x83, - 0x9b, 0x15, 0x3c, 0x83, 0x9c, 0x15, 0x3e, 0x83, 0x9b, 0x15, 0x3f, 0x83, - 0x9c, 0x15, 0x40, 0x83, 0x9b, 0x15, 0x42, 0x83, 0x9c, 0x15, 0x43, 0x83, - 0x9b, 0x15, 0x44, 0x83, 0x9c, 0x15, 0x45, 0x83, 0x9b, 0x15, 0x46, 0x83, - 0x9c, 0x15, 0x47, 0x83, 0x9b, 0x15, 0x48, 0x83, 0x9c, 0x15, 0x49, 0x83, - 0x9b, 0x15, 0x4a, 0x83, 0x9c, 0x15, 0x4b, 0x83, 0x9b, 0x15, 0x4c, 0x83, - 0x9c, 0x15, 0x4d, 0x83, 0x9b, 0x15, 0x4e, 0x83, 0x9c, 0x15, 0x4f, 0x83, - 0x9b, 0x15, 0x50, 0x83, 0x9c, 0x15, 0x51, 0x83, 0x9b, 0x15, 0x52, 0x83, - 0x9c, 0x15, 0x53, 0x83, 0x9b, 0x15, 0x54, 0x83, 0x9c, 0x15, 0x55, 0x83, - 0x9b, 0x15, 0x56, 0x83, 0x9c, 0x15, 0x57, 0x83, 0x9b, 0x15, 0x58, 0x83, - 0x9c, 0x15, 0x58, 0x83, 0x9b, 0x15, 0x59, 0x83, 0x9c, 0x15, 0x5a, 0x83, - 0x9b, 0x15, 0x5b, 0x83, 0x9c, 0x15, 0x5c, 0x83, 0x9b, 0x15, 0x5d, 0x83, - 0x9c, 0x15, 0x5d, 0x83, 0x9b, 0x15, 0x5e, 0x83, 0x9c, 0x15, 0x5f, 0x83, - 0x9b, 0x15, 0x60, 0x83, 0x9c, 0x15, 0x60, 0x83, 0x9b, 0x15, 0x61, 0x83, - 0x9c, 0x15, 0x62, 0x83, 0x9b, 0x15, 0x63, 0x83, 0x9c, 0x15, 0x63, 0x83, - 0x9b, 0x15, 0x64, 0x83, 0x9c, 0x15, 0x65, 0x83, 0x9b, 0x15, 0x66, 0x83, - 0x9c, 0x15, 0x66, 0x83, 0x9b, 0x15, 0x67, 0x83, 0x9c, 0x15, 0x68, 0x83, - 0x9b, 0x15, 0x68, 0x83, 0x9c, 0x15, 0x69, 0x83, 0x9b, 0x15, 0x6a, 0x83, - 0x9c, 0x15, 0x6a, 0x83, 0x9b, 0x15, 0x6b, 0x83, 0x9c, 0x15, 0x6c, 0x83, - 0x9b, 0x15, 0x6c, 0x83, 0x9c, 0x15, 0x6d, 0x83, 0x9b, 0x15, 0x6e, 0x83, - 0x9c, 0x15, 0x6e, 0x83, 0x9b, 0x15, 0x6f, 0x83, 0x9c, 0x15, 0x70, 0x83, - 0x9b, 0x15, 0x70, 0x83, 0x9c, 0x15, 0x71, 0x83, 0x9b, 0x15, 0x72, 0x83, - 0x9c, 0x15, 0x72, 0x83, 0x9b, 0x15, 0x73, 0x83, 0x9c, 0x15, 0x73, 0x83, - 0x9b, 0x15, 0x74, 0x83, 0x9c, 0x15, 0x75, 0x83, 0x9b, 0x15, 0x75, 0x83, - 0x9c, 0x15, 0x76, 0x83, 0x9b, 0x15, 0x76, 0x83, 0x9c, 0x15, 0x77, 0x83, - 0x9b, 0x15, 0x78, 0x83, 0x9c, 0x15, 0x78, 0x83, 0x9b, 0x15, 0x79, 0x83, - 0x9c, 0x15, 0x79, 0x83, 0x9b, 0x15, 0x7a, 0x83, 0x9c, 0x15, 0x7a, 0x83, - 0x9b, 0x15, 0x7b, 0x83, 0x9c, 0x15, 0x7c, 0x83, 0x9b, 0x15, 0x7c, 0x83, - 0x9c, 0x15, 0x7d, 0x83, 0x9b, 0x15, 0x7d, 0x83, 0x9c, 0x15, 0x7e, 0x83, - 0x9b, 0x15, 0x7e, 0x83, 0x9c, 0x15, 0x7f, 0x83, 0x9b, 0x15, 0x7f, 0x83, - 0x9c, 0x15, 0x80, 0x83, 0x9b, 0x15, 0x81, 0x83, 0x9c, 0x15, 0x81, 0x83, - 0x9b, 0x15, 0x82, 0x83, 0x9c, 0x15, 0x82, 0x83, 0x9b, 0x15, 0x83, 0x83, - 0x9c, 0x15, 0x83, 0x83, 0x9b, 0x15, 0x84, 0x83, 0x9c, 0x15, 0x84, 0x83, - 0x9b, 0x15, 0x85, 0x83, 0x9c, 0x15, 0x85, 0x83, 0x9b, 0x15, 0x86, 0x83, - 0x9c, 0x15, 0x86, 0x83, 0x9b, 0x15, 0x87, 0x83, 0x9c, 0x15, 0x87, 0x83, - 0x9b, 0x15, 0x88, 0x83, 0x9c, 0x15, 0x88, 0x83, 0x9b, 0x15, 0x89, 0x83, - 0x9c, 0x15, 0x89, 0x83, 0x9b, 0x15, 0x8a, 0x83, 0x9c, 0x15, 0x8a, 0x83, - 0x9b, 0x15, 0x8b, 0x83, 0x9c, 0x15, 0x8b, 0x83, 0x9b, 0x15, 0x8c, 0x83, - 0x9c, 0x15, 0x8c, 0x83, 0x9b, 0x15, 0x8d, 0x83, 0x9c, 0x15, 0x8d, 0x83, - 0x9b, 0x15, 0x8e, 0x83, 0x9c, 0x15, 0x8e, 0x83, 0x9b, 0x15, 0x8e, 0x83, - 0x9c, 0x15, 0x8f, 0x83, 0x9b, 0x15, 0x8f, 0x83, 0x9c, 0x15, 0x90, 0x83, - 0x9b, 0x15, 0x90, 0x83, 0x9c, 0x15, 0x91, 0x83, 0x9b, 0x15, 0x91, 0x83, - 0x9c, 0x15, 0x92, 0x83, 0x9b, 0x15, 0x92, 0x83, 0x9c, 0x15, 0x93, 0x83, - 0x9b, 0x15, 0x93, 0x83, 0x9c, 0x15, 0x94, 0x83, 0x9b, 0x15, 0x94, 0x83, - 0x9c, 0x15, 0x94, 0x83, 0x9b, 0x15, 0x95, 0x83, 0x9c, 0x15, 0x95, 0x83, - 0x9b, 0x15, 0x96, 0x83, 0x9c, 0x15, 0x96, 0x83, 0x9b, 0x15, 0x97, 0x83, - 0x9c, 0x15, 0x97, 0x83, 0x9b, 0x15, 0x98, 0x83, 0x9c, 0x15, 0x98, 0x83, - 0x9b, 0x15, 0x98, 0x83, 0x9c, 0x15, 0x99, 0x83, 0x9b, 0x15, 0x99, 0x83, - 0x9c, 0x15, 0x9a, 0x83, 0x9b, 0x15, 0x9a, 0x83, 0x9c, 0x15, 0x9a, 0x83, - 0x9b, 0x15, 0x9b, 0x83, 0x9c, 0x15, 0x9b, 0x83, 0x9b, 0x15, 0x9c, 0x83, - 0x9c, 0x15, 0x9c, 0x83, 0x9c, 0x15, 0x9d, 0x83, 0x9d, 0x15, 0x9d, 0x83, - 0x9c, 0x15, 0x9d, 0x83, 0x9d, 0x15, 0x9e, 0x83, 0x9c, 0x15, 0x9e, 0x83, - 0x9d, 0x15, 0x9f, 0x83, 0x9c, 0x15, 0x9f, 0x83, 0x9d, 0x15, 0x9f, 0x83, - 0x9c, 0x15, 0xa0, 0x83, 0x9d, 0x15, 0xa0, 0x83, 0x9c, 0x15, 0xa1, 0x83, - 0x9d, 0x15, 0xa1, 0x83, 0x9c, 0x15, 0xa1, 0x83, 0x9d, 0x15, 0xa2, 0x83, - 0x9c, 0x15, 0xa2, 0x83, 0x9d, 0x15, 0xa3, 0x83, 0x9c, 0x15, 0xa3, 0x83, - 0x9d, 0x15, 0xa3, 0x83, 0x9c, 0x15, 0xa4, 0x83, 0x9d, 0x15, 0xa4, 0x83, - 0x9c, 0x15, 0xa5, 0x83, 0x9d, 0x15, 0xa5, 0x84, 0xa0, 0x15, 0xa5, 0x84, - 0xa1, 0x15, 0xa6, 0x84, 0xa0, 0x15, 0xa6, 0x84, 0xa1, 0x15, 0xa6, 0x84, - 0xa0, 0x15, 0xa7, 0x84, 0xa1, 0x15, 0xa7, 0x84, 0xa0, 0x15, 0xa8, 0x84, - 0xa1, 0x15, 0xa8, 0x84, 0xa0, 0x15, 0xa8, 0x84, 0xa1, 0x15, 0xa9, 0x85, - 0xa4, 0x15, 0xa9, 0x84, 0xa1, 0x15, 0xaa, 0x85, 0xa4, 0x15, 0xaa, 0x85, - 0xa4, 0x15, 0xaa, 0x85, 0xa4, 0x15, 0xab, 0x85, 0xa4, 0x15, 0xab, 0x85, - 0xa4, 0x15, 0xab, 0x85, 0xa4, 0x15, 0xac, 0x85, 0xa4, 0x15, 0xac, 0x86, - 0xa8, 0x15, 0xac, 0x85, 0xa4, 0x15, 0xad, 0x86, 0xa8, 0x15, 0xad, 0x86, - 0xa7, 0x15, 0xae, 0x86, 0xa8, 0x15, 0xae, 0x86, 0xa7, 0x15, 0xae, 0x86, - 0xa8, 0x15, 0xaf, 0x86, 0xa7, 0x15, 0xaf, 0x86, 0xa8, 0x15, 0xaf, 0x87, - 0xab, 0x15, 0xb0, 0x87, 0xab, 0x15, 0xb0, 0x87, 0xab, 0x15, 0xb0, 0x87, - 0xab, 0x15, 0xb1, 0x87, 0xab, 0x15, 0xb1, 0x87, 0xab, 0x15, 0xb2, 0x87, - 0xab, 0x15, 0xb2, 0x87, 0xab, 0x15, 0xb2, 0x87, 0xab, 0x15, 0xb3, 0x87, - 0xab, 0x15, 0xb3, 0x88, 0xaf, 0x15, 0xb3, 0x87, 0xab, 0x15, 0xb4, 0x88, - 0xaf, 0x15, 0xb4, 0x87, 0xab, 0x15, 0xb4, 0x88, 0xaf, 0x15, 0xb5, 0x88, - 0xae, 0x15, 0xb5, 0x88, 0xaf, 0x15, 0xb5, 0x88, 0xae, 0x15, 0xb6, 0x88, - 0xaf, 0x15, 0xb6, 0x89, 0xb2, 0x15, 0xb6, 0x89, 0xb2, 0x15, 0xb7, 0x89, - 0xb2, 0x15, 0xb7, 0x89, 0xb2, 0x15, 0xb7, 0x89, 0xb2, 0x15, 0xb8, 0x89, - 0xb2, 0x15, 0xb8, 0x89, 0xb2, 0x15, 0xb8, 0x89, 0xb2, 0x15, 0xb9, 0x89, - 0xb2, 0x15, 0xb9, 0x89, 0xb2, 0x15, 0xb9, 0x89, 0xb2, 0x15, 0xba, 0x89, - 0xb2, 0x15, 0xba, 0x8a, 0xb5, 0x15, 0xba, 0x89, 0xb2, 0x15, 0xbb, 0x8a, - 0xb5, 0x15, 0xbb, 0x8a, 0xb5, 0x15, 0xbb, 0x8a, 0xb5, 0x15, 0xbc, 0x8a, - 0xb5, 0x15, 0xbc, 0x8a, 0xb5, 0x15, 0xbc, 0x8a, 0xb5, 0x15, 0xbd, 0x8a, - 0xb5, 0x15, 0xbd, 0x8b, 0xb8, 0x15, 0xbd, 0x8a, 0xb5, 0x15, 0xbe, 0x8b, - 0xb8, 0x15, 0xbe, 0x8a, 0xb5, 0x15, 0xbe, 0x8b, 0xb8, 0x15, 0xbf, 0x8b, - 0xb8, 0x15, 0xbf, 0x8b, 0xb8, 0x15, 0xbf, 0x8b, 0xb8, 0x15, 0xc0, 0x8b, - 0xb8, 0x15, 0xc0, 0x8c, 0xbb, 0x15, 0xc0, 0x8c, 0xbc, 0x15, 0xc1, 0x8c, - 0xbb, 0x15, 0xc1, 0x8c, 0xbc, 0x15, 0xc1, 0x8c, 0xbb, 0x15, 0xc1, 0x8c, - 0xbc, 0x15, 0xc2, 0x8c, 0xbb, 0x15, 0xc2, 0x8c, 0xbc, 0x15, 0xc2, 0x8c, - 0xbb, 0x15, 0xc3, 0x8c, 0xbc, 0x15, 0xc3, 0x8d, 0xbf, 0x15, 0xc3, 0x8c, - 0xbc, 0x15, 0xc4, 0x8d, 0xbf, 0x15, 0xc4, 0x8c, 0xbc, 0x15, 0xc4, 0x8d, - 0xbf, 0x15, 0xc5, 0x8d, 0xbe, 0x15, 0xc5, 0x8d, 0xbf, 0x15, 0xc5, 0x8d, - 0xbe, 0x15, 0xc6, 0x8d, 0xbf, 0x15, 0xc6, 0x8d, 0xbe, 0x15, 0xc6, 0x8d, - 0xbf, 0x15, 0xc6, 0x8e, 0xc1, 0x15, 0xc7, 0x8d, 0xbf, 0x15, 0xc7, 0x8e, - 0xc1, 0x15, 0xc7, 0x8e, 0xc1, 0x15, 0xc8, 0x8e, 0xc1, 0x15, 0xc8, 0x8e, - 0xc1, 0x15, 0xc8, 0x8e, 0xc1, 0x15, 0xc9, 0x8e, 0xc1, 0x15, 0xc9, 0x8e, - 0xc1, 0x15, 0xc9, 0x8f, 0xc4, 0x15, 0xc9, 0x8f, 0xc5, 0x15, 0xca, 0x8f, - 0xc4, 0x15, 0xca, 0x8f, 0xc5, 0x15, 0xca, 0x8f, 0xc4, 0x15, 0xcb, 0x8f, - 0xc5, 0x15, 0xcb, 0x8f, 0xc4, 0x15, 0xcb, 0x8f, 0xc5, 0x15, 0xcc, 0x8f, - 0xc4, 0x15, 0xcc, 0x8f, 0xc5, 0x15, 0xcc, 0x90, 0xc7, 0x15, 0xcc, 0x8f, - 0xc5, 0x15, 0xcd, 0x90, 0xc7, 0x15, 0xcd, 0x8f, 0xc5, 0x15, 0xcd, 0x90, - 0xc7, 0x15, 0xce, 0x90, 0xc7, 0x15, 0xce, 0x90, 0xc7, 0x15, 0xce, 0x90, - 0xc7, 0x15, 0xce, 0x90, 0xc7, 0x15, 0xcf, 0x91, 0xca, 0x15, 0xcf, 0x90, - 0xc7, 0x15, 0xcf, 0x91, 0xca, 0x15, 0xd0, 0x90, 0xc7, 0x15, 0xd0, 0x91, - 0xca, 0x15, 0xd0, 0x91, 0xca, 0x15, 0xd0, 0x91, 0xca, 0x15, 0xd1, 0x91, - 0xca, 0x15, 0xd1, 0x91, 0xca, 0x15, 0xd1, 0x92, 0xcd, 0x15, 0xd2, 0x92, - 0xcd, 0x15, 0xd2, 0x92, 0xcd, 0x15, 0xd2, 0x92, 0xcd, 0x15, 0xd2, 0x92, - 0xcd, 0x15, 0xd3, 0x92, 0xcd, 0x15, 0xd3, 0x92, 0xcd, 0x15, 0xd3, 0x92, - 0xcd, 0x15, 0xd4, 0x92, 0xcd, 0x15, 0xd4, 0x92, 0xcd, 0x15, 0xd4, 0x93, - 0xd0, 0x15, 0xd4, 0x92, 0xcd, 0x15, 0xd5, 0x93, 0xd0, 0x15, 0xd5, 0x92, - 0xcd, 0x15, 0xd5, 0x93, 0xd0, 0x15, 0xd6, 0x92, 0xcd, 0x15, 0xd6, 0x93, - 0xd0, 0x15, 0xd6, 0x93, 0xcf, 0x15, 0xd6, 0x93, 0xd0, 0x15, 0xd7, 0x93, - 0xcf, 0x15, 0xd7, 0x93, 0xd0, 0x15, 0xd7, 0x94, 0xd2, 0x15, 0xd7, 0x94, - 0xd2, 0x15, 0xd8, 0x94, 0xd2, 0x15, 0xd8, 0x94, 0xd2, 0x15, 0xd8, 0x94, - 0xd2, 0x15, 0xd9, 0x94, 0xd2, 0x15, 0xd9, 0x94, 0xd2, 0x15, 0xd9, 0x94, - 0xd2, 0x15, 0xd9, 0x94, 0xd2, 0x15, 0xda, 0x94, 0xd2, 0x15, 0xda, 0x94, - 0xd5, 0x15, 0xda, 0x94, 0xd2, 0x15, 0xda, 0x94, 0xd5, 0x15, 0xdb, 0x94, - 0xd2, 0x15, 0xdb, 0x94, 0xd5, 0x15, 0xdb, 0x94, 0xd5, 0x15, 0xdb, 0x94, - 0xd5, 0x15, 0xdc, 0x94, 0xd5, 0x15, 0xdc, 0x94, 0xd5, 0x15, 0xdc, 0x95, - 0xd7, 0x15, 0xdd, 0x94, 0xd5, 0x15, 0xdd, 0x95, 0xd7, 0x15, 0xdd, 0x94, - 0xd5, 0x15, 0xdd, 0x95, 0xd7, 0x15, 0xde, 0x95, 0xd7, 0x15, 0xde, 0x95, - 0xd7, 0x15, 0xde, 0x95, 0xd7, 0x15, 0xde, 0x95, 0xd7, 0x15, 0xdf, 0x96, - 0xda, 0x15, 0xdf, 0x96, 0xda, 0x15, 0xdf, 0x96, 0xda, 0x15, 0xdf, 0x96, - 0xda, 0x15, 0xe0, 0x96, 0xda, 0x15, 0xe0, 0x96, 0xda, 0x15, 0xe0, 0x96, - 0xda, 0x15, 0xe1, 0x96, 0xda, 0x15, 0xe1, 0x96, 0xda, 0x15, 0xe1, 0x96, - 0xda, 0x15, 0xe1, 0x96, 0xda, 0x15, 0xe2, 0x96, 0xda, 0x15, 0xe2, 0x97, - 0xdd, 0x15, 0xe2, 0x96, 0xda, 0x15, 0xe2, 0x97, 0xdd, 0x15, 0xe3, 0x96, - 0xda, 0x15, 0xe3, 0x97, 0xdd, 0x15, 0xe3, 0x97, 0xdc, 0x15, 0xe3, 0x97, - 0xdd, 0x15, 0xe4, 0x97, 0xdc, 0x15, 0xe4, 0x97, 0xdd, 0x15, 0xe4, 0x98, - 0xdf, 0x15, 0xe4, 0x97, 0xdd, 0x15, 0xe5, 0x98, 0xdf, 0x15, 0xe5, 0x97, - 0xdd, 0x15, 0xe5, 0x98, 0xdf, 0x15, 0xe5, 0x98, 0xdf, 0x15, 0xe6, 0x98, - 0xdf, 0x15, 0xe6, 0x98, 0xdf, 0x15, 0xe6, 0x98, 0xdf, 0x15, 0xe6, 0x99, - 0xe1, 0x15, 0xe7, 0x99, 0xe2, 0x15, 0xe7, 0x99, 0xe1, 0x15, 0xe7, 0x99, - 0xe2, 0x15, 0xe7, 0x99, 0xe1, 0x15, 0xe8, 0x99, 0xe2, 0x15, 0xe8, 0x99, - 0xe1, 0x15, 0xe8, 0x99, 0xe2, 0x15, 0xe8, 0x99, 0xe1, 0x15, 0xe9, 0x99, - 0xe2, 0x15, 0xe9, 0x9a, 0xe4, 0x15, 0xe9, 0x99, 0xe2, 0x15, 0xe9, 0x9a, - 0xe4, 0x15, 0xea, 0x99, 0xe2, 0x15, 0xea, 0x9a, 0xe4, 0x15, 0xea, 0x99, - 0xe2, 0x15, 0xea, 0x9a, 0xe4, 0x15, 0xeb, 0x9a, 0xe4, 0x15, 0xeb, 0x9a, - 0xe4, 0x15, 0xeb, 0x9a, 0xe6, 0x15, 0xeb, 0x9a, 0xe4, 0x15, 0xec, 0x9a, - 0xe6, 0x15, 0xec, 0x9a, 0xe4, 0x15, 0xec, 0x9a, 0xe6, 0x15, 0xec, 0x9a, - 0xe4, 0x15, 0xec, 0x9a, 0xe6, 0x15, 0xed, 0x9a, 0xe6, 0x15, 0xed, 0x9a, - 0xe6, 0x15, 0xed, 0x9b, 0xe8, 0x15, 0xed, 0x9b, 0xe9, 0x15, 0xee, 0x9b, - 0xe8, 0x15, 0xee, 0x9b, 0xe9, 0x15, 0xee, 0x9b, 0xe8, 0x15, 0xee, 0x9b, - 0xe9, 0x15, 0xef, 0x9b, 0xe8, 0x15, 0xef, 0x9b, 0xe9, 0x15, 0xef, 0x9b, - 0xe8, 0x15, 0xef, 0x9b, 0xe9, 0x15, 0xf0, 0x9b, 0xe8, 0x15, 0xf0, 0x9b, - 0xe9, 0x15, 0xf0, 0x9c, 0xeb, 0x15, 0xf0, 0x9b, 0xe9, 0x15, 0xf1, 0x9c, - 0xeb, 0x15, 0xf1, 0x9b, 0xe9, 0x15, 0xf1, 0x9c, 0xeb, 0x15, 0xf1, 0x9c, - 0xeb, 0x15, 0xf2, 0x9c, 0xeb, 0x15, 0xf2, 0x9c, 0xeb, 0x15, 0xf2, 0x9c, - 0xeb, 0x15, 0xf2, 0x9d, 0xed, 0x15, 0xf2, 0x9d, 0xed, 0x15, 0xf3, 0x9d, - 0xed, 0x15, 0xf3, 0x9d, 0xed, 0x15, 0xf3, 0x9d, 0xed, 0x15, 0xf3, 0x9d, - 0xed, 0x15, 0xf4, 0x9d, 0xed, 0x15, 0xf4, 0x9d, 0xed, 0x15, 0xf4, 0x9d, - 0xed, 0x15, 0xf4, 0x9d, 0xed, 0x15, 0xf5, 0x9e, 0xef, 0x15, 0xf5, 0x9d, - 0xed, 0x15, 0xf5, 0x9e, 0xef, 0x15, 0xf5, 0x9d, 0xed, 0x15, 0xf5, 0x9e, - 0xef, 0x15, 0xf6, 0x9d, 0xed, 0x15, 0xf6, 0x9e, 0xef, 0x15, 0xf6, 0x9e, - 0xef, 0x15, 0xf6, 0x9e, 0xef, 0x15, 0xf7, 0x9f, 0xf2, 0x15, 0xf7, 0x9e, - 0xef, 0x15, 0xf7, 0x9f, 0xf2, 0x15, 0xf7, 0x9e, 0xef, 0x15, 0xf8, 0x9f, - 0xf2, 0x15, 0xf8, 0x9e, 0xef, 0x15, 0xf8, 0x9f, 0xf2, 0x15, 0xf8, 0x9f, - 0xf1, 0x15, 0xf8, 0x9f, 0xf2, 0x15, 0xf9, 0x9f, 0xf1, 0x15, 0xf9, 0x9f, - 0xf2, 0x15, 0xf9, 0x9f, 0xf4, 0x15, 0xf9, 0x9f, 0xf4, 0x15, 0xfa, 0x9f, - 0xf4, 0x15, 0xfa, 0x9f, 0xf4, 0x15, 0xfa, 0x9f, 0xf4, 0x15, 0xfa, 0x9f, - 0xf4, 0x15, 0xfa, 0x9f, 0xf4, 0x15, 0xfb, 0x9f, 0xf4, 0x15, 0xfb, 0x9f, - 0xf4, 0x15, 0xfb, 0x9f, 0xf4, 0x15, 0xfb, 0xa0, 0xf6, 0x15, 0xfc, 0x9f, - 0xf4, 0x15, 0xfc, 0xa0, 0xf6, 0x15, 0xfc, 0x9f, 0xf4, 0x15, 0xfc, 0xa0, - 0xf6, 0x15, 0xfc, 0x9f, 0xf4, 0x15, 0xfd, 0xa0, 0xf6, 0x15, 0xfd, 0xa0, - 0xf6, 0x15, 0xfd, 0xa0, 0xf6, 0x15, 0xfd, 0xa1, 0xf8, 0x15, 0xfe, 0xa0, - 0xf6, 0x15, 0xfe, 0xa0, 0xf6, 0x15, 0xfe, 0xa0, 0xf6, 0x15, 0xfe, 0xa1, - 0xf8, 0x15, 0xfe, 0xa0, 0xf6, 0x15, 0xff, 0xa1, 0xf8, 0x15, 0xff, 0xa1, - 0xf8, 0x15, 0x03, 0x84, 0x9b, 0x16, 0x0a, 0x84, 0x9b, 0x16, 0x0f, 0x84, - 0x9b, 0x16, 0x14, 0x84, 0x9b, 0x16, 0x17, 0x84, 0x9b, 0x16, 0x1b, 0x84, - 0x9b, 0x16, 0x1e, 0x84, 0x9b, 0x16, 0x20, 0x86, 0x9b, 0x16, 0x23, 0x84, - 0x9b, 0x16, 0x25, 0x86, 0x9b, 0x16, 0x27, 0x84, 0x9b, 0x16, 0x29, 0x86, - 0x9b, 0x16, 0x2b, 0x84, 0x9b, 0x16, 0x2d, 0x86, 0x9b, 0x16, 0x2f, 0x84, - 0x9b, 0x16, 0x31, 0x86, 0x9b, 0x16, 0x32, 0x84, 0x9b, 0x16, 0x34, 0x84, - 0x9c, 0x16, 0x35, 0x84, 0x9b, 0x16, 0x37, 0x84, 0x9c, 0x16, 0x38, 0x84, - 0x9b, 0x16, 0x3a, 0x84, 0x9c, 0x16, 0x3b, 0x84, 0x9b, 0x16, 0x3c, 0x84, - 0x9c, 0x16, 0x3e, 0x84, 0x9b, 0x16, 0x3f, 0x84, 0x9c, 0x16, 0x40, 0x84, - 0x9b, 0x16, 0x42, 0x84, 0x9c, 0x16, 0x43, 0x84, 0x9b, 0x16, 0x44, 0x84, - 0x9c, 0x16, 0x45, 0x84, 0x9b, 0x16, 0x46, 0x84, 0x9c, 0x16, 0x47, 0x84, - 0x9b, 0x16, 0x48, 0x84, 0x9c, 0x16, 0x49, 0x84, 0x9b, 0x16, 0x4a, 0x84, - 0x9c, 0x16, 0x4b, 0x84, 0x9b, 0x16, 0x4c, 0x84, 0x9c, 0x16, 0x4d, 0x84, - 0x9b, 0x16, 0x4e, 0x84, 0x9c, 0x16, 0x4f, 0x84, 0x9b, 0x16, 0x50, 0x84, - 0x9c, 0x16, 0x51, 0x84, 0x9b, 0x16, 0x52, 0x84, 0x9c, 0x16, 0x53, 0x84, - 0x9b, 0x16, 0x54, 0x84, 0x9c, 0x16, 0x55, 0x84, 0x9b, 0x16, 0x56, 0x84, - 0x9c, 0x16, 0x57, 0x84, 0x9b, 0x16, 0x58, 0x84, 0x9c, 0x16, 0x58, 0x84, - 0x9b, 0x16, 0x59, 0x84, 0x9c, 0x16, 0x5a, 0x84, 0x9b, 0x16, 0x5b, 0x84, - 0x9c, 0x16, 0x5c, 0x84, 0x9b, 0x16, 0x5d, 0x84, 0x9c, 0x16, 0x5d, 0x84, - 0x9b, 0x16, 0x5e, 0x84, 0x9c, 0x16, 0x5f, 0x84, 0x9b, 0x16, 0x60, 0x84, - 0x9c, 0x16, 0x60, 0x84, 0x9b, 0x16, 0x61, 0x84, 0x9c, 0x16, 0x62, 0x84, - 0x9b, 0x16, 0x63, 0x84, 0x9c, 0x16, 0x63, 0x84, 0x9b, 0x16, 0x64, 0x84, - 0x9c, 0x16, 0x65, 0x84, 0x9b, 0x16, 0x66, 0x84, 0x9c, 0x16, 0x66, 0x84, - 0x9b, 0x16, 0x67, 0x84, 0x9c, 0x16, 0x68, 0x84, 0x9b, 0x16, 0x68, 0x84, - 0x9c, 0x16, 0x69, 0x84, 0x9b, 0x16, 0x6a, 0x84, 0x9c, 0x16, 0x6a, 0x84, - 0x9b, 0x16, 0x6b, 0x84, 0x9c, 0x16, 0x6c, 0x84, 0x9b, 0x16, 0x6c, 0x84, - 0x9c, 0x16, 0x6d, 0x84, 0x9b, 0x16, 0x6e, 0x84, 0x9c, 0x16, 0x6e, 0x84, - 0x9b, 0x16, 0x6f, 0x84, 0x9c, 0x16, 0x70, 0x84, 0x9b, 0x16, 0x70, 0x84, - 0x9c, 0x16, 0x71, 0x84, 0x9b, 0x16, 0x72, 0x84, 0x9c, 0x16, 0x72, 0x84, - 0x9b, 0x16, 0x73, 0x84, 0x9c, 0x16, 0x73, 0x84, 0x9b, 0x16, 0x74, 0x84, - 0x9c, 0x16, 0x75, 0x84, 0x9b, 0x16, 0x75, 0x84, 0x9c, 0x16, 0x76, 0x84, - 0x9b, 0x16, 0x76, 0x84, 0x9c, 0x16, 0x77, 0x84, 0x9b, 0x16, 0x78, 0x84, - 0x9c, 0x16, 0x78, 0x84, 0x9b, 0x16, 0x79, 0x84, 0x9c, 0x16, 0x79, 0x84, - 0x9b, 0x16, 0x7a, 0x84, 0x9c, 0x16, 0x7a, 0x84, 0x9b, 0x16, 0x7b, 0x84, - 0x9c, 0x16, 0x7c, 0x84, 0x9b, 0x16, 0x7c, 0x84, 0x9c, 0x16, 0x7d, 0x84, - 0x9b, 0x16, 0x7d, 0x84, 0x9c, 0x16, 0x7e, 0x84, 0x9b, 0x16, 0x7e, 0x84, - 0x9c, 0x16, 0x7f, 0x84, 0x9b, 0x16, 0x7f, 0x84, 0x9c, 0x16, 0x80, 0x84, - 0x9b, 0x16, 0x81, 0x84, 0x9c, 0x16, 0x81, 0x84, 0x9b, 0x16, 0x82, 0x84, - 0x9c, 0x16, 0x82, 0x84, 0x9b, 0x16, 0x83, 0x84, 0x9c, 0x16, 0x83, 0x84, - 0x9b, 0x16, 0x84, 0x84, 0x9c, 0x16, 0x84, 0x84, 0x9b, 0x16, 0x85, 0x84, - 0x9c, 0x16, 0x85, 0x84, 0x9b, 0x16, 0x86, 0x84, 0x9c, 0x16, 0x86, 0x84, - 0x9b, 0x16, 0x87, 0x84, 0x9c, 0x16, 0x87, 0x84, 0x9b, 0x16, 0x88, 0x84, - 0x9c, 0x16, 0x88, 0x84, 0x9b, 0x16, 0x89, 0x84, 0x9c, 0x16, 0x89, 0x84, - 0x9b, 0x16, 0x8a, 0x84, 0x9c, 0x16, 0x8a, 0x84, 0x9b, 0x16, 0x8b, 0x84, - 0x9c, 0x16, 0x8b, 0x84, 0x9b, 0x16, 0x8c, 0x84, 0x9c, 0x16, 0x8c, 0x84, - 0x9b, 0x16, 0x8d, 0x84, 0x9c, 0x16, 0x8d, 0x84, 0x9b, 0x16, 0x8e, 0x84, - 0x9c, 0x16, 0x8e, 0x84, 0x9b, 0x16, 0x8e, 0x84, 0x9c, 0x16, 0x8f, 0x84, - 0x9b, 0x16, 0x8f, 0x84, 0x9c, 0x16, 0x90, 0x84, 0x9b, 0x16, 0x90, 0x84, - 0x9c, 0x16, 0x91, 0x84, 0x9b, 0x16, 0x91, 0x84, 0x9c, 0x16, 0x92, 0x84, - 0x9b, 0x16, 0x92, 0x84, 0x9c, 0x16, 0x93, 0x84, 0x9b, 0x16, 0x93, 0x84, - 0x9c, 0x16, 0x94, 0x84, 0x9b, 0x16, 0x94, 0x84, 0x9c, 0x16, 0x94, 0x84, - 0x9b, 0x16, 0x95, 0x84, 0x9c, 0x16, 0x95, 0x84, 0x9b, 0x16, 0x96, 0x84, - 0x9c, 0x16, 0x96, 0x84, 0x9b, 0x16, 0x97, 0x84, 0x9c, 0x16, 0x97, 0x84, - 0x9b, 0x16, 0x98, 0x84, 0x9c, 0x16, 0x98, 0x84, 0x9b, 0x16, 0x98, 0x84, - 0x9c, 0x16, 0x99, 0x84, 0x9b, 0x16, 0x99, 0x84, 0x9c, 0x16, 0x9a, 0x84, - 0x9b, 0x16, 0x9a, 0x84, 0x9c, 0x16, 0x9a, 0x84, 0x9b, 0x16, 0x9b, 0x84, - 0x9c, 0x16, 0x9b, 0x84, 0x9b, 0x16, 0x9c, 0x84, 0x9c, 0x16, 0x9c, 0x84, - 0x9c, 0x16, 0x9d, 0x84, 0x9d, 0x16, 0x9d, 0x84, 0x9d, 0x16, 0x9d, 0x84, - 0x9d, 0x16, 0x9e, 0x84, 0x9e, 0x16, 0x9e, 0x84, 0x9e, 0x16, 0x9f, 0x84, - 0x9f, 0x16, 0x9f, 0x84, 0x9e, 0x16, 0x9f, 0x84, 0x9f, 0x16, 0xa0, 0x84, - 0x9e, 0x16, 0xa0, 0x84, 0x9f, 0x16, 0xa1, 0x84, 0x9e, 0x16, 0xa1, 0x84, - 0x9f, 0x16, 0xa1, 0x84, 0x9e, 0x16, 0xa2, 0x84, 0x9f, 0x16, 0xa2, 0x84, - 0x9e, 0x16, 0xa3, 0x84, 0x9f, 0x16, 0xa3, 0x84, 0x9e, 0x16, 0xa3, 0x84, - 0x9f, 0x16, 0xa4, 0x84, 0x9e, 0x16, 0xa4, 0x84, 0x9f, 0x16, 0xa5, 0x84, - 0x9e, 0x16, 0xa5, 0x84, 0x9f, 0x16, 0xa5, 0x84, 0x9e, 0x16, 0xa6, 0x84, - 0x9f, 0x16, 0xa6, 0x84, 0x9e, 0x16, 0xa6, 0x84, 0x9f, 0x16, 0xa7, 0x85, - 0xa2, 0x16, 0xa7, 0x84, 0x9f, 0x16, 0xa8, 0x85, 0xa2, 0x16, 0xa8, 0x85, - 0xa2, 0x16, 0xa8, 0x85, 0xa2, 0x16, 0xa9, 0x85, 0xa2, 0x16, 0xa9, 0x85, - 0xa2, 0x16, 0xaa, 0x85, 0xa2, 0x16, 0xaa, 0x85, 0xa2, 0x16, 0xaa, 0x86, - 0xa6, 0x16, 0xab, 0x86, 0xa6, 0x16, 0xab, 0x86, 0xa6, 0x16, 0xab, 0x86, - 0xa6, 0x16, 0xac, 0x86, 0xa6, 0x16, 0xac, 0x86, 0xa6, 0x16, 0xac, 0x86, - 0xa6, 0x16, 0xad, 0x86, 0xa6, 0x16, 0xad, 0x86, 0xa6, 0x16, 0xae, 0x86, - 0xa6, 0x16, 0xae, 0x87, 0xaa, 0x16, 0xae, 0x86, 0xa6, 0x16, 0xaf, 0x87, - 0xaa, 0x16, 0xaf, 0x87, 0xa9, 0x16, 0xaf, 0x87, 0xaa, 0x16, 0xb0, 0x87, - 0xa9, 0x16, 0xb0, 0x87, 0xaa, 0x16, 0xb0, 0x87, 0xa9, 0x16, 0xb1, 0x87, - 0xaa, 0x16, 0xb1, 0x88, 0xad, 0x16, 0xb2, 0x88, 0xad, 0x16, 0xb2, 0x88, - 0xad, 0x16, 0xb2, 0x88, 0xad, 0x16, 0xb3, 0x88, 0xad, 0x16, 0xb3, 0x88, - 0xad, 0x16, 0xb3, 0x88, 0xad, 0x16, 0xb4, 0x88, 0xad, 0x16, 0xb4, 0x88, - 0xad, 0x16, 0xb4, 0x88, 0xad, 0x16, 0xb5, 0x89, 0xb0, 0x16, 0xb5, 0x88, - 0xad, 0x16, 0xb5, 0x89, 0xb0, 0x16, 0xb6, 0x88, 0xad, 0x16, 0xb6, 0x89, - 0xb0, 0x16, 0xb6, 0x89, 0xb2, 0x16, 0xb7, 0x89, 0xb0, 0x16, 0xb7, 0x89, - 0xb2, 0x16, 0xb7, 0x89, 0xb0, 0x16, 0xb8, 0x89, 0xb2, 0x16, 0xb8, 0x89, - 0xb0, 0x16, 0xb8, 0x89, 0xb2, 0x16, 0xb9, 0x89, 0xb2, 0x16, 0xb9, 0x89, - 0xb2, 0x16, 0xb9, 0x89, 0xb2, 0x16, 0xba, 0x89, 0xb2, 0x16, 0xba, 0x8a, - 0xb3, 0x16, 0xba, 0x8a, 0xb4, 0x16, 0xbb, 0x8a, 0xb3, 0x16, 0xbb, 0x8a, - 0xb4, 0x16, 0xbb, 0x8b, 0xb7, 0x16, 0xbc, 0x8b, 0xb7, 0x16, 0xbc, 0x8b, - 0xb7, 0x16, 0xbc, 0x8b, 0xb7, 0x16, 0xbd, 0x8b, 0xb7, 0x16, 0xbd, 0x8b, - 0xb7, 0x16, 0xbd, 0x8b, 0xb7, 0x16, 0xbe, 0x8b, 0xb7, 0x16, 0xbe, 0x8b, - 0xb7, 0x16, 0xbe, 0x8b, 0xb7, 0x16, 0xbf, 0x8c, 0xba, 0x16, 0xbf, 0x8b, - 0xb7, 0x16, 0xbf, 0x8c, 0xba, 0x16, 0xc0, 0x8b, 0xb7, 0x16, 0xc0, 0x8c, - 0xba, 0x16, 0xc0, 0x8c, 0xba, 0x16, 0xc1, 0x8c, 0xba, 0x16, 0xc1, 0x8c, - 0xba, 0x16, 0xc1, 0x8c, 0xba, 0x16, 0xc1, 0x8d, 0xbd, 0x16, 0xc2, 0x8c, - 0xba, 0x16, 0xc2, 0x8d, 0xbd, 0x16, 0xc2, 0x8c, 0xba, 0x16, 0xc3, 0x8d, - 0xbd, 0x16, 0xc3, 0x8d, 0xbd, 0x16, 0xc3, 0x8d, 0xbd, 0x16, 0xc4, 0x8d, - 0xbd, 0x16, 0xc4, 0x8d, 0xbd, 0x16, 0xc4, 0x8e, 0xc0, 0x16, 0xc5, 0x8e, - 0xc0, 0x16, 0xc5, 0x8e, 0xc0, 0x16, 0xc5, 0x8e, 0xc0, 0x16, 0xc6, 0x8e, - 0xc0, 0x16, 0xc6, 0x8e, 0xc0, 0x16, 0xc6, 0x8e, 0xc0, 0x16, 0xc6, 0x8e, - 0xc0, 0x16, 0xc7, 0x8e, 0xc0, 0x16, 0xc7, 0x8e, 0xc0, 0x16, 0xc7, 0x8e, - 0xc0, 0x16, 0xc8, 0x8e, 0xc0, 0x16, 0xc8, 0x8e, 0xc3, 0x16, 0xc8, 0x8e, - 0xc0, 0x16, 0xc9, 0x8e, 0xc3, 0x16, 0xc9, 0x8e, 0xc3, 0x16, 0xc9, 0x8e, - 0xc3, 0x16, 0xc9, 0x8e, 0xc3, 0x16, 0xca, 0x8e, 0xc3, 0x16, 0xca, 0x8e, - 0xc3, 0x16, 0xca, 0x8e, 0xc3, 0x16, 0xcb, 0x8f, 0xc6, 0x16, 0xcb, 0x8e, - 0xc3, 0x16, 0xcb, 0x8f, 0xc6, 0x16, 0xcc, 0x8e, 0xc3, 0x16, 0xcc, 0x8f, - 0xc6, 0x16, 0xcc, 0x8f, 0xc6, 0x16, 0xcc, 0x8f, 0xc6, 0x16, 0xcd, 0x8f, - 0xc6, 0x16, 0xcd, 0x8f, 0xc6, 0x16, 0xcd, 0x90, 0xc9, 0x16, 0xce, 0x90, - 0xc9, 0x16, 0xce, 0x90, 0xc9, 0x16, 0xce, 0x90, 0xc9, 0x16, 0xce, 0x90, - 0xc9, 0x16, 0xcf, 0x90, 0xc9, 0x16, 0xcf, 0x90, 0xc9, 0x16, 0xcf, 0x90, - 0xc9, 0x16, 0xd0, 0x90, 0xc9, 0x16, 0xd0, 0x90, 0xc9, 0x16, 0xd0, 0x91, - 0xcc, 0x16, 0xd0, 0x90, 0xc9, 0x16, 0xd1, 0x91, 0xcc, 0x16, 0xd1, 0x90, - 0xc9, 0x16, 0xd1, 0x91, 0xcc, 0x16, 0xd2, 0x91, 0xcb, 0x16, 0xd2, 0x91, - 0xcc, 0x16, 0xd2, 0x91, 0xcb, 0x16, 0xd2, 0x91, 0xcc, 0x16, 0xd3, 0x92, - 0xce, 0x16, 0xd3, 0x92, 0xce, 0x16, 0xd3, 0x92, 0xce, 0x16, 0xd4, 0x92, - 0xce, 0x16, 0xd4, 0x92, 0xce, 0x16, 0xd4, 0x92, 0xce, 0x16, 0xd4, 0x92, - 0xce, 0x16, 0xd5, 0x92, 0xce, 0x16, 0xd5, 0x92, 0xce, 0x16, 0xd5, 0x92, - 0xce, 0x16, 0xd6, 0x93, 0xd1, 0x16, 0xd6, 0x92, 0xce, 0x16, 0xd6, 0x93, - 0xd1, 0x16, 0xd6, 0x92, 0xce, 0x16, 0xd7, 0x93, 0xd1, 0x16, 0xd7, 0x92, - 0xce, 0x16, 0xd7, 0x93, 0xd1, 0x16, 0xd7, 0x93, 0xd1, 0x16, 0xd8, 0x93, - 0xd1, 0x16, 0xd8, 0x93, 0xd1, 0x16, 0xd8, 0x93, 0xd1, 0x16, 0xd9, 0x94, - 0xd4, 0x16, 0xd9, 0x93, 0xd1, 0x16, 0xd9, 0x94, 0xd4, 0x16, 0xd9, 0x93, - 0xd1, 0x16, 0xda, 0x94, 0xd4, 0x16, 0xda, 0x94, 0xd3, 0x16, 0xda, 0x94, - 0xd4, 0x16, 0xda, 0x94, 0xd3, 0x16, 0xdb, 0x94, 0xd4, 0x16, 0xdb, 0x95, - 0xd6, 0x16, 0xdb, 0x95, 0xd6, 0x16, 0xdb, 0x95, 0xd6, 0x16, 0xdc, 0x95, - 0xd6, 0x16, 0xdc, 0x95, 0xd6, 0x16, 0xdc, 0x95, 0xd6, 0x16, 0xdd, 0x95, - 0xd6, 0x16, 0xdd, 0x95, 0xd6, 0x16, 0xdd, 0x95, 0xd6, 0x16, 0xdd, 0x95, - 0xd6, 0x16, 0xde, 0x96, 0xd9, 0x16, 0xde, 0x95, 0xd6, 0x16, 0xde, 0x96, - 0xd9, 0x16, 0xde, 0x95, 0xd6, 0x16, 0xdf, 0x96, 0xd9, 0x16, 0xdf, 0x96, - 0xd9, 0x16, 0xdf, 0x96, 0xd9, 0x16, 0xdf, 0x96, 0xd9, 0x16, 0xe0, 0x96, - 0xd9, 0x16, 0xe0, 0x97, 0xdb, 0x16, 0xe0, 0x96, 0xd9, 0x16, 0xe1, 0x97, - 0xdb, 0x16, 0xe1, 0x96, 0xd9, 0x16, 0xe1, 0x97, 0xdb, 0x16, 0xe1, 0x96, - 0xd9, 0x16, 0xe2, 0x97, 0xdb, 0x16, 0xe2, 0x97, 0xdb, 0x16, 0xe2, 0x97, - 0xdb, 0x16, 0xe2, 0x97, 0xdb, 0x16, 0xe3, 0x97, 0xdb, 0x16, 0xe3, 0x98, - 0xde, 0x16, 0xe3, 0x98, 0xde, 0x16, 0xe3, 0x98, 0xde, 0x16, 0xe4, 0x98, - 0xde, 0x16, 0xe4, 0x98, 0xde, 0x16, 0xe4, 0x98, 0xde, 0x16, 0xe4, 0x98, - 0xde, 0x16, 0xe5, 0x98, 0xde, 0x16, 0xe5, 0x98, 0xde, 0x16, 0xe5, 0x98, - 0xde, 0x16, 0xe5, 0x98, 0xe0, 0x16, 0xe6, 0x98, 0xde, 0x16, 0xe6, 0x98, - 0xe0, 0x16, 0xe6, 0x98, 0xde, 0x16, 0xe6, 0x98, 0xe0, 0x16, 0xe7, 0x98, - 0xe0, 0x16, 0xe7, 0x98, 0xe0, 0x16, 0xe7, 0x98, 0xe0, 0x16, 0xe7, 0x98, - 0xe0, 0x16, 0xe8, 0x99, 0xe3, 0x16, 0xe8, 0x98, 0xe0, 0x16, 0xe8, 0x99, - 0xe3, 0x16, 0xe8, 0x98, 0xe0, 0x16, 0xe9, 0x99, 0xe3, 0x16, 0xe9, 0x99, - 0xe2, 0x16, 0xe9, 0x99, 0xe3, 0x16, 0xe9, 0x99, 0xe2, 0x16, 0xea, 0x99, - 0xe3, 0x16, 0xea, 0x9a, 0xe5, 0x16, 0xea, 0x9a, 0xe5, 0x16, 0xea, 0x9a, - 0xe5, 0x16, 0xeb, 0x9a, 0xe5, 0x16, 0xeb, 0x9a, 0xe5, 0x16, 0xeb, 0x9a, - 0xe5, 0x16, 0xeb, 0x9a, 0xe5, 0x16, 0xec, 0x9a, 0xe5, 0x16, 0xec, 0x9a, - 0xe5, 0x16, 0xec, 0x9a, 0xe5, 0x16, 0xec, 0x9b, 0xe7, 0x16, 0xec, 0x9a, - 0xe5, 0x16, 0xed, 0x9b, 0xe7, 0x16, 0xed, 0x9a, 0xe5, 0x16, 0xed, 0x9b, - 0xe7, 0x16, 0xed, 0x9a, 0xe5, 0x16, 0xee, 0x9b, 0xe7, 0x16, 0xee, 0x9b, - 0xe7, 0x16, 0xee, 0x9b, 0xe7, 0x16, 0xee, 0x9c, 0xea, 0x16, 0xef, 0x9c, - 0xea, 0x16, 0xef, 0x9c, 0xea, 0x16, 0xef, 0x9c, 0xea, 0x16, 0xef, 0x9c, - 0xea, 0x16, 0xf0, 0x9c, 0xea, 0x16, 0xf0, 0x9c, 0xea, 0x16, 0xf0, 0x9c, - 0xea, 0x16, 0xf0, 0x9c, 0xea, 0x16, 0xf1, 0x9c, 0xea, 0x16, 0xf1, 0x9c, - 0xea, 0x16, 0xf1, 0x9c, 0xea, 0x16, 0xf1, 0x9d, 0xec, 0x16, 0xf2, 0x9c, - 0xea, 0x16, 0xf2, 0x9d, 0xec, 0x16, 0xf2, 0x9c, 0xea, 0x16, 0xf2, 0x9d, - 0xec, 0x16, 0xf2, 0x9d, 0xec, 0x16, 0xf3, 0x9d, 0xec, 0x16, 0xf3, 0x9d, - 0xec, 0x16, 0xf3, 0x9d, 0xec, 0x16, 0xf3, 0x9d, 0xee, 0x16, 0xf4, 0x9d, - 0xec, 0x16, 0xf4, 0x9d, 0xee, 0x16, 0xf4, 0x9d, 0xec, 0x16, 0xf4, 0x9d, - 0xee, 0x16, 0xf5, 0x9d, 0xec, 0x16, 0xf5, 0x9d, 0xee, 0x16, 0xf5, 0x9d, - 0xee, 0x16, 0xf5, 0x9d, 0xee, 0x16, 0xf5, 0x9e, 0xf0, 0x16, 0xf6, 0x9e, - 0xf1, 0x16, 0xf6, 0x9e, 0xf0, 0x16, 0xf6, 0x9e, 0xf1, 0x16, 0xf6, 0x9e, - 0xf0, 0x16, 0xf7, 0x9e, 0xf1, 0x16, 0xf7, 0x9e, 0xf0, 0x16, 0xf7, 0x9e, - 0xf1, 0x16, 0xf7, 0x9e, 0xf0, 0x16, 0xf8, 0x9e, 0xf1, 0x16, 0xf8, 0x9f, - 0xf3, 0x16, 0xf8, 0x9e, 0xf1, 0x16, 0xf8, 0x9f, 0xf3, 0x16, 0xf8, 0x9e, - 0xf1, 0x16, 0xf9, 0x9f, 0xf3, 0x16, 0xf9, 0x9e, 0xf1, 0x16, 0xf9, 0x9f, - 0xf3, 0x16, 0xf9, 0x9f, 0xf2, 0x16, 0xfa, 0x9f, 0xf3, 0x16, 0xfa, 0x9f, - 0xf2, 0x16, 0xfa, 0x9f, 0xf3, 0x16, 0xfa, 0xa0, 0xf5, 0x16, 0xfa, 0x9f, - 0xf3, 0x16, 0xfb, 0xa0, 0xf5, 0x16, 0xfb, 0x9f, 0xf3, 0x16, 0xfb, 0xa0, - 0xf5, 0x16, 0xfb, 0xa0, 0xf5, 0x16, 0xfc, 0xa0, 0xf5, 0x16, 0xfc, 0xa0, - 0xf5, 0x16, 0xfc, 0xa0, 0xf5, 0x16, 0xfc, 0xa1, 0xf7, 0x16, 0xfc, 0xa1, - 0xf7, 0x16, 0xfd, 0xa1, 0xf7, 0x16, 0xfd, 0xa1, 0xf7, 0x16, 0xfd, 0xa1, - 0xf7, 0x16, 0xfd, 0xa1, 0xf7, 0x16, 0xfe, 0xa1, 0xf7, 0x16, 0xfe, 0xa1, - 0xf7, 0x16, 0xfe, 0xa1, 0xf7, 0x16, 0xfe, 0xa1, 0xf7, 0x16, 0xfe, 0xa1, - 0xf9, 0x16, 0xff, 0xa1, 0xf7, 0x16, 0xff, 0xa1, 0xf9, 0x16, 0x03, 0x83, - 0x9b, 0x16, 0x0a, 0x83, 0x9b, 0x16, 0x0f, 0x83, 0x9b, 0x16, 0x14, 0x83, - 0x9b, 0x16, 0x17, 0x83, 0x9b, 0x16, 0x1b, 0x83, 0x9b, 0x16, 0x1e, 0x83, - 0x9b, 0x16, 0x20, 0x83, 0x9c, 0x16, 0x23, 0x83, 0x9b, 0x16, 0x25, 0x83, - 0x9c, 0x16, 0x27, 0x83, 0x9b, 0x16, 0x29, 0x83, 0x9c, 0x16, 0x2b, 0x83, - 0x9b, 0x16, 0x2d, 0x83, 0x9c, 0x16, 0x2f, 0x83, 0x9b, 0x16, 0x31, 0x83, - 0x9c, 0x16, 0x32, 0x83, 0x9b, 0x16, 0x34, 0x83, 0x9c, 0x16, 0x35, 0x83, - 0x9b, 0x16, 0x37, 0x83, 0x9c, 0x16, 0x38, 0x83, 0x9b, 0x16, 0x3a, 0x83, - 0x9c, 0x16, 0x3b, 0x83, 0x9b, 0x16, 0x3c, 0x83, 0x9c, 0x16, 0x3e, 0x83, - 0x9b, 0x16, 0x3f, 0x83, 0x9c, 0x16, 0x40, 0x83, 0x9b, 0x16, 0x42, 0x83, - 0x9c, 0x16, 0x43, 0x83, 0x9b, 0x16, 0x44, 0x83, 0x9c, 0x16, 0x45, 0x83, - 0x9b, 0x16, 0x46, 0x83, 0x9c, 0x16, 0x47, 0x83, 0x9b, 0x16, 0x48, 0x83, - 0x9c, 0x16, 0x49, 0x83, 0x9b, 0x16, 0x4a, 0x83, 0x9c, 0x16, 0x4b, 0x83, - 0x9b, 0x16, 0x4c, 0x83, 0x9c, 0x16, 0x4d, 0x83, 0x9b, 0x16, 0x4e, 0x83, - 0x9c, 0x16, 0x4f, 0x83, 0x9b, 0x16, 0x50, 0x83, 0x9c, 0x16, 0x51, 0x83, - 0x9b, 0x16, 0x52, 0x83, 0x9c, 0x16, 0x53, 0x83, 0x9b, 0x16, 0x54, 0x83, - 0x9c, 0x16, 0x55, 0x83, 0x9b, 0x16, 0x56, 0x83, 0x9c, 0x16, 0x57, 0x83, - 0x9b, 0x16, 0x58, 0x83, 0x9c, 0x16, 0x58, 0x83, 0x9b, 0x16, 0x59, 0x83, - 0x9c, 0x16, 0x5a, 0x83, 0x9b, 0x16, 0x5b, 0x83, 0x9c, 0x16, 0x5c, 0x83, - 0x9b, 0x16, 0x5d, 0x83, 0x9c, 0x16, 0x5d, 0x83, 0x9b, 0x16, 0x5e, 0x83, - 0x9c, 0x16, 0x5f, 0x83, 0x9b, 0x16, 0x60, 0x83, 0x9c, 0x16, 0x60, 0x83, - 0x9b, 0x16, 0x61, 0x83, 0x9c, 0x16, 0x62, 0x83, 0x9b, 0x16, 0x63, 0x83, - 0x9c, 0x16, 0x63, 0x83, 0x9b, 0x16, 0x64, 0x83, 0x9c, 0x16, 0x65, 0x83, - 0x9b, 0x16, 0x66, 0x83, 0x9c, 0x16, 0x66, 0x83, 0x9b, 0x16, 0x67, 0x83, - 0x9c, 0x16, 0x68, 0x83, 0x9b, 0x16, 0x68, 0x83, 0x9c, 0x16, 0x69, 0x83, - 0x9b, 0x16, 0x6a, 0x83, 0x9c, 0x16, 0x6a, 0x83, 0x9b, 0x16, 0x6b, 0x83, - 0x9c, 0x16, 0x6c, 0x83, 0x9b, 0x16, 0x6c, 0x83, 0x9c, 0x16, 0x6d, 0x83, - 0x9b, 0x16, 0x6e, 0x83, 0x9c, 0x16, 0x6e, 0x83, 0x9b, 0x16, 0x6f, 0x83, - 0x9c, 0x16, 0x70, 0x83, 0x9b, 0x16, 0x70, 0x83, 0x9c, 0x16, 0x71, 0x83, - 0x9b, 0x16, 0x72, 0x83, 0x9c, 0x16, 0x72, 0x83, 0x9b, 0x16, 0x73, 0x83, - 0x9c, 0x16, 0x73, 0x83, 0x9b, 0x16, 0x74, 0x83, 0x9c, 0x16, 0x75, 0x83, - 0x9b, 0x16, 0x75, 0x83, 0x9c, 0x16, 0x76, 0x83, 0x9b, 0x16, 0x76, 0x83, - 0x9c, 0x16, 0x77, 0x83, 0x9b, 0x16, 0x78, 0x83, 0x9c, 0x16, 0x78, 0x83, - 0x9b, 0x16, 0x79, 0x83, 0x9c, 0x16, 0x79, 0x83, 0x9b, 0x16, 0x7a, 0x83, - 0x9c, 0x16, 0x7a, 0x83, 0x9b, 0x16, 0x7b, 0x83, 0x9c, 0x16, 0x7c, 0x83, - 0x9b, 0x16, 0x7c, 0x83, 0x9c, 0x16, 0x7d, 0x83, 0x9b, 0x16, 0x7d, 0x83, - 0x9c, 0x16, 0x7e, 0x83, 0x9b, 0x16, 0x7e, 0x83, 0x9c, 0x16, 0x7f, 0x83, - 0x9b, 0x16, 0x7f, 0x83, 0x9c, 0x16, 0x80, 0x83, 0x9b, 0x16, 0x81, 0x83, - 0x9c, 0x16, 0x81, 0x83, 0x9b, 0x16, 0x82, 0x83, 0x9c, 0x16, 0x82, 0x83, - 0x9b, 0x16, 0x83, 0x83, 0x9c, 0x16, 0x83, 0x83, 0x9b, 0x16, 0x84, 0x83, - 0x9c, 0x16, 0x84, 0x83, 0x9b, 0x16, 0x85, 0x83, 0x9c, 0x16, 0x85, 0x83, - 0x9b, 0x16, 0x86, 0x83, 0x9c, 0x16, 0x86, 0x83, 0x9b, 0x16, 0x87, 0x83, - 0x9c, 0x16, 0x87, 0x83, 0x9b, 0x16, 0x88, 0x83, 0x9c, 0x16, 0x88, 0x83, - 0x9b, 0x16, 0x89, 0x83, 0x9c, 0x16, 0x89, 0x83, 0x9b, 0x16, 0x8a, 0x83, - 0x9c, 0x16, 0x8a, 0x83, 0x9b, 0x16, 0x8b, 0x83, 0x9c, 0x16, 0x8b, 0x83, - 0x9b, 0x16, 0x8c, 0x83, 0x9c, 0x16, 0x8c, 0x83, 0x9b, 0x16, 0x8d, 0x83, - 0x9c, 0x16, 0x8d, 0x83, 0x9b, 0x16, 0x8e, 0x83, 0x9c, 0x16, 0x8e, 0x83, - 0x9b, 0x16, 0x8e, 0x83, 0x9c, 0x16, 0x8f, 0x83, 0x9b, 0x16, 0x8f, 0x83, - 0x9c, 0x16, 0x90, 0x83, 0x9b, 0x16, 0x90, 0x83, 0x9c, 0x16, 0x91, 0x83, - 0x9b, 0x16, 0x91, 0x83, 0x9c, 0x16, 0x92, 0x83, 0x9b, 0x16, 0x92, 0x83, - 0x9c, 0x16, 0x93, 0x83, 0x9b, 0x16, 0x93, 0x83, 0x9c, 0x16, 0x94, 0x83, - 0x9b, 0x16, 0x94, 0x83, 0x9c, 0x16, 0x94, 0x83, 0x9b, 0x16, 0x95, 0x83, - 0x9c, 0x16, 0x95, 0x83, 0x9b, 0x16, 0x96, 0x83, 0x9c, 0x16, 0x96, 0x83, - 0x9b, 0x16, 0x97, 0x83, 0x9c, 0x16, 0x97, 0x83, 0x9b, 0x16, 0x98, 0x83, - 0x9c, 0x16, 0x98, 0x83, 0x9b, 0x16, 0x98, 0x83, 0x9c, 0x16, 0x99, 0x83, - 0x9b, 0x16, 0x99, 0x83, 0x9c, 0x16, 0x9a, 0x83, 0x9b, 0x16, 0x9a, 0x83, - 0x9c, 0x16, 0x9a, 0x83, 0x9b, 0x16, 0x9b, 0x83, 0x9c, 0x16, 0x9b, 0x83, - 0x9b, 0x16, 0x9c, 0x83, 0x9c, 0x16, 0x9c, 0x83, 0x9c, 0x16, 0x9d, 0x83, - 0x9d, 0x16, 0x9d, 0x83, 0x9c, 0x16, 0x9d, 0x83, 0x9d, 0x16, 0x9e, 0x83, - 0x9c, 0x16, 0x9e, 0x83, 0x9d, 0x16, 0x9f, 0x83, 0x9c, 0x16, 0x9f, 0x83, - 0x9d, 0x16, 0x9f, 0x83, 0x9c, 0x16, 0xa0, 0x83, 0x9d, 0x16, 0xa0, 0x83, - 0x9c, 0x16, 0xa1, 0x83, 0x9d, 0x16, 0xa1, 0x83, 0x9c, 0x16, 0xa1, 0x83, - 0x9d, 0x16, 0xa2, 0x83, 0x9c, 0x16, 0xa2, 0x83, 0x9d, 0x16, 0xa3, 0x83, - 0x9c, 0x16, 0xa3, 0x83, 0x9d, 0x16, 0xa3, 0x83, 0x9c, 0x16, 0xa4, 0x83, - 0x9d, 0x16, 0xa4, 0x84, 0xa0, 0x16, 0xa5, 0x84, 0xa1, 0x16, 0xa5, 0x84, - 0xa0, 0x16, 0xa5, 0x84, 0xa1, 0x16, 0xa6, 0x84, 0xa0, 0x16, 0xa6, 0x84, - 0xa1, 0x16, 0xa6, 0x84, 0xa0, 0x16, 0xa7, 0x84, 0xa1, 0x16, 0xa7, 0x84, - 0xa0, 0x16, 0xa8, 0x84, 0xa1, 0x16, 0xa8, 0x84, 0xa0, 0x16, 0xa8, 0x84, - 0xa1, 0x16, 0xa9, 0x85, 0xa4, 0x16, 0xa9, 0x84, 0xa1, 0x16, 0xaa, 0x85, - 0xa4, 0x16, 0xaa, 0x85, 0xa4, 0x16, 0xaa, 0x85, 0xa4, 0x16, 0xab, 0x85, - 0xa4, 0x16, 0xab, 0x85, 0xa4, 0x16, 0xab, 0x85, 0xa4, 0x16, 0xac, 0x85, - 0xa4, 0x16, 0xac, 0x86, 0xa8, 0x16, 0xac, 0x85, 0xa4, 0x16, 0xad, 0x86, - 0xa8, 0x16, 0xad, 0x86, 0xa7, 0x16, 0xae, 0x86, 0xa8, 0x16, 0xae, 0x86, - 0xa7, 0x16, 0xae, 0x86, 0xa8, 0x16, 0xaf, 0x86, 0xa7, 0x16, 0xaf, 0x86, - 0xa8, 0x16, 0xaf, 0x87, 0xab, 0x16, 0xb0, 0x87, 0xab, 0x16, 0xb0, 0x87, - 0xab, 0x16, 0xb0, 0x87, 0xab, 0x16, 0xb1, 0x87, 0xab, 0x16, 0xb1, 0x87, - 0xab, 0x16, 0xb2, 0x87, 0xab, 0x16, 0xb2, 0x87, 0xab, 0x16, 0xb2, 0x87, - 0xab, 0x16, 0xb3, 0x87, 0xab, 0x16, 0xb3, 0x88, 0xaf, 0x16, 0xb3, 0x87, - 0xab, 0x16, 0xb4, 0x88, 0xaf, 0x16, 0xb4, 0x87, 0xab, 0x16, 0xb4, 0x88, - 0xaf, 0x16, 0xb5, 0x88, 0xae, 0x16, 0xb5, 0x88, 0xaf, 0x16, 0xb5, 0x88, - 0xae, 0x16, 0xb6, 0x88, 0xaf, 0x16, 0xb6, 0x89, 0xb2, 0x16, 0xb6, 0x89, - 0xb2, 0x16, 0xb7, 0x89, 0xb2, 0x16, 0xb7, 0x89, 0xb2, 0x16, 0xb7, 0x89, - 0xb2, 0x16, 0xb8, 0x89, 0xb2, 0x16, 0xb8, 0x89, 0xb2, 0x16, 0xb8, 0x89, - 0xb2, 0x16, 0xb9, 0x89, 0xb2, 0x16, 0xb9, 0x89, 0xb2, 0x16, 0xb9, 0x89, - 0xb2, 0x16, 0xba, 0x89, 0xb2, 0x16, 0xba, 0x8a, 0xb5, 0x16, 0xba, 0x89, - 0xb2, 0x16, 0xbb, 0x8a, 0xb5, 0x16, 0xbb, 0x8a, 0xb5, 0x16, 0xbb, 0x8a, - 0xb5, 0x16, 0xbc, 0x8a, 0xb5, 0x16, 0xbc, 0x8a, 0xb5, 0x16, 0xbc, 0x8a, - 0xb5, 0x16, 0xbd, 0x8a, 0xb5, 0x16, 0xbd, 0x8b, 0xb8, 0x16, 0xbd, 0x8a, - 0xb5, 0x16, 0xbe, 0x8b, 0xb8, 0x16, 0xbe, 0x8b, 0xb8, 0x16, 0xbe, 0x8b, - 0xb8, 0x16, 0xbf, 0x8b, 0xb8, 0x16, 0xbf, 0x8b, 0xb8, 0x16, 0xbf, 0x8b, - 0xb8, 0x16, 0xc0, 0x8b, 0xb8, 0x16, 0xc0, 0x8c, 0xbb, 0x16, 0xc0, 0x8c, - 0xbc, 0x16, 0xc1, 0x8c, 0xbb, 0x16, 0xc1, 0x8c, 0xbc, 0x16, 0xc1, 0x8c, - 0xbb, 0x16, 0xc1, 0x8c, 0xbc, 0x16, 0xc2, 0x8c, 0xbb, 0x16, 0xc2, 0x8c, - 0xbc, 0x16, 0xc2, 0x8c, 0xbb, 0x16, 0xc3, 0x8c, 0xbc, 0x16, 0xc3, 0x8d, - 0xbf, 0x16, 0xc3, 0x8c, 0xbc, 0x16, 0xc4, 0x8d, 0xbf, 0x16, 0xc4, 0x8c, - 0xbc, 0x16, 0xc4, 0x8d, 0xbf, 0x16, 0xc5, 0x8d, 0xbe, 0x16, 0xc5, 0x8d, - 0xbf, 0x16, 0xc5, 0x8d, 0xbe, 0x16, 0xc6, 0x8d, 0xbf, 0x16, 0xc6, 0x8e, - 0xc1, 0x16, 0xc6, 0x8d, 0xbf, 0x16, 0xc6, 0x8e, 0xc1, 0x16, 0xc7, 0x8d, - 0xbf, 0x16, 0xc7, 0x8e, 0xc1, 0x16, 0xc7, 0x8e, 0xc1, 0x16, 0xc8, 0x8e, - 0xc1, 0x16, 0xc8, 0x8e, 0xc1, 0x16, 0xc8, 0x8e, 0xc1, 0x16, 0xc9, 0x8e, - 0xc1, 0x16, 0xc9, 0x8e, 0xc1, 0x16, 0xc9, 0x8f, 0xc4, 0x16, 0xc9, 0x8f, - 0xc5, 0x16, 0xca, 0x8f, 0xc4, 0x16, 0xca, 0x8f, 0xc5, 0x16, 0xca, 0x8f, - 0xc4, 0x16, 0xcb, 0x8f, 0xc5, 0x16, 0xcb, 0x8f, 0xc4, 0x16, 0xcb, 0x8f, - 0xc5, 0x16, 0xcc, 0x8f, 0xc4, 0x16, 0xcc, 0x8f, 0xc5, 0x16, 0xcc, 0x90, - 0xc7, 0x16, 0xcc, 0x8f, 0xc5, 0x16, 0xcd, 0x90, 0xc7, 0x16, 0xcd, 0x8f, - 0xc5, 0x16, 0xcd, 0x90, 0xc7, 0x16, 0xce, 0x90, 0xc7, 0x16, 0xce, 0x90, - 0xc7, 0x16, 0xce, 0x90, 0xc7, 0x16, 0xce, 0x90, 0xc7, 0x16, 0xcf, 0x91, - 0xca, 0x16, 0xcf, 0x90, 0xc7, 0x16, 0xcf, 0x91, 0xca, 0x16, 0xd0, 0x90, - 0xc7, 0x16, 0xd0, 0x91, 0xca, 0x16, 0xd0, 0x91, 0xca, 0x16, 0xd0, 0x91, - 0xca, 0x16, 0xd1, 0x91, 0xca, 0x16, 0xd1, 0x91, 0xca, 0x16, 0xd1, 0x92, - 0xcd, 0x16, 0xd2, 0x92, 0xcd, 0x16, 0xd2, 0x92, 0xcd, 0x16, 0xd2, 0x92, - 0xcd, 0x16, 0xd2, 0x92, 0xcd, 0x16, 0xd3, 0x92, 0xcd, 0x16, 0xd3, 0x92, - 0xcd, 0x16, 0xd3, 0x92, 0xcd, 0x16, 0xd4, 0x92, 0xcd, 0x16, 0xd4, 0x92, - 0xcd, 0x16, 0xd4, 0x93, 0xd0, 0x16, 0xd4, 0x92, 0xcd, 0x16, 0xd5, 0x93, - 0xd0, 0x16, 0xd5, 0x92, 0xcd, 0x16, 0xd5, 0x93, 0xd0, 0x16, 0xd6, 0x93, - 0xcf, 0x16, 0xd6, 0x93, 0xd0, 0x16, 0xd6, 0x93, 0xcf, 0x16, 0xd6, 0x93, - 0xd0, 0x16, 0xd7, 0x94, 0xd2, 0x16, 0xd7, 0x94, 0xd2, 0x16, 0xd7, 0x94, - 0xd2, 0x16, 0xd7, 0x94, 0xd2, 0x16, 0xd8, 0x94, 0xd2, 0x16, 0xd8, 0x94, - 0xd2, 0x16, 0xd8, 0x94, 0xd2, 0x16, 0xd9, 0x94, 0xd2, 0x16, 0xd9, 0x94, - 0xd2, 0x16, 0xd9, 0x94, 0xd2, 0x16, 0xd9, 0x94, 0xd2, 0x16, 0xda, 0x94, - 0xd2, 0x16, 0xda, 0x94, 0xd5, 0x16, 0xda, 0x94, 0xd2, 0x16, 0xda, 0x94, - 0xd5, 0x16, 0xdb, 0x94, 0xd2, 0x16, 0xdb, 0x94, 0xd5, 0x16, 0xdb, 0x94, - 0xd5, 0x16, 0xdb, 0x94, 0xd5, 0x16, 0xdc, 0x94, 0xd5, 0x16, 0xdc, 0x94, - 0xd5, 0x16, 0xdc, 0x95, 0xd7, 0x16, 0xdd, 0x94, 0xd5, 0x16, 0xdd, 0x95, - 0xd7, 0x16, 0xdd, 0x94, 0xd5, 0x16, 0xdd, 0x95, 0xd7, 0x16, 0xde, 0x95, - 0xd7, 0x16, 0xde, 0x95, 0xd7, 0x16, 0xde, 0x95, 0xd7, 0x16, 0xde, 0x95, - 0xd7, 0x16, 0xdf, 0x96, 0xda, 0x16, 0xdf, 0x96, 0xda, 0x16, 0xdf, 0x96, - 0xda, 0x16, 0xdf, 0x96, 0xda, 0x16, 0xe0, 0x96, 0xda, 0x16, 0xe0, 0x96, - 0xda, 0x16, 0xe0, 0x96, 0xda, 0x16, 0xe1, 0x96, 0xda, 0x16, 0xe1, 0x96, - 0xda, 0x16, 0xe1, 0x96, 0xda, 0x16, 0xe1, 0x97, 0xdd, 0x16, 0xe2, 0x96, - 0xda, 0x16, 0xe2, 0x97, 0xdd, 0x16, 0xe2, 0x96, 0xda, 0x16, 0xe2, 0x97, - 0xdd, 0x16, 0xe3, 0x96, 0xda, 0x16, 0xe3, 0x97, 0xdd, 0x16, 0xe3, 0x97, - 0xdc, 0x16, 0xe3, 0x97, 0xdd, 0x16, 0xe4, 0x97, 0xdc, 0x16, 0xe4, 0x97, - 0xdd, 0x16, 0xe4, 0x98, 0xdf, 0x16, 0xe4, 0x97, 0xdd, 0x16, 0xe5, 0x98, - 0xdf, 0x16, 0xe5, 0x97, 0xdd, 0x16, 0xe5, 0x98, 0xdf, 0x16, 0xe5, 0x98, - 0xdf, 0x16, 0xe6, 0x98, 0xdf, 0x16, 0xe6, 0x98, 0xdf, 0x16, 0xe6, 0x98, - 0xdf, 0x16, 0xe6, 0x99, 0xe1, 0x16, 0xe7, 0x99, 0xe2, 0x16, 0xe7, 0x99, - 0xe1, 0x16, 0xe7, 0x99, 0xe2, 0x16, 0xe7, 0x99, 0xe1, 0x16, 0xe8, 0x99, - 0xe2, 0x16, 0xe8, 0x99, 0xe1, 0x16, 0xe8, 0x99, 0xe2, 0x16, 0xe8, 0x99, - 0xe1, 0x16, 0xe9, 0x99, 0xe2, 0x16, 0xe9, 0x9a, 0xe4, 0x16, 0xe9, 0x99, - 0xe2, 0x16, 0xe9, 0x9a, 0xe4, 0x16, 0xea, 0x99, 0xe2, 0x16, 0xea, 0x9a, - 0xe4, 0x16, 0xea, 0x9a, 0xe4, 0x16, 0xea, 0x9a, 0xe4, 0x16, 0xeb, 0x9a, - 0xe4, 0x16, 0xeb, 0x9a, 0xe4, 0x16, 0xeb, 0x9a, 0xe6, 0x16, 0xeb, 0x9a, - 0xe4, 0x16, 0xec, 0x9a, 0xe6, 0x16, 0xec, 0x9a, 0xe4, 0x16, 0xec, 0x9a, - 0xe6, 0x16, 0xec, 0x9a, 0xe4, 0x16, 0xec, 0x9a, 0xe6, 0x16, 0xed, 0x9a, - 0xe6, 0x16, 0xed, 0x9a, 0xe6, 0x16, 0xed, 0x9b, 0xe8, 0x16, 0xed, 0x9b, - 0xe9, 0x16, 0xee, 0x9b, 0xe8, 0x16, 0xee, 0x9b, 0xe9, 0x16, 0xee, 0x9b, - 0xe8, 0x16, 0xee, 0x9b, 0xe9, 0x16, 0xef, 0x9b, 0xe8, 0x16, 0xef, 0x9b, - 0xe9, 0x16, 0xef, 0x9b, 0xe8, 0x16, 0xef, 0x9b, 0xe9, 0x16, 0xf0, 0x9c, - 0xeb, 0x16, 0xf0, 0x9b, 0xe9, 0x16, 0xf0, 0x9c, 0xeb, 0x16, 0xf0, 0x9b, - 0xe9, 0x16, 0xf1, 0x9c, 0xeb, 0x16, 0xf1, 0x9b, 0xe9, 0x16, 0xf1, 0x9c, - 0xeb, 0x16, 0xf1, 0x9c, 0xeb, 0x16, 0xf2, 0x9c, 0xeb, 0x16, 0xf2, 0x9c, - 0xeb, 0x16, 0xf2, 0x9c, 0xeb, 0x16, 0xf2, 0x9d, 0xed, 0x16, 0xf2, 0x9d, - 0xed, 0x16, 0xf3, 0x9d, 0xed, 0x16, 0xf3, 0x9d, 0xed, 0x16, 0xf3, 0x9d, - 0xed, 0x16, 0xf3, 0x9d, 0xed, 0x16, 0xf4, 0x9d, 0xed, 0x16, 0xf4, 0x9d, - 0xed, 0x16, 0xf4, 0x9d, 0xed, 0x16, 0xf4, 0x9d, 0xed, 0x16, 0xf5, 0x9e, - 0xef, 0x16, 0xf5, 0x9d, 0xed, 0x16, 0xf5, 0x9e, 0xef, 0x16, 0xf5, 0x9d, - 0xed, 0x16, 0xf5, 0x9e, 0xef, 0x16, 0xf6, 0x9d, 0xed, 0x16, 0xf6, 0x9e, - 0xef, 0x16, 0xf6, 0x9e, 0xef, 0x16, 0xf6, 0x9e, 0xef, 0x16, 0xf7, 0x9f, - 0xf2, 0x16, 0xf7, 0x9e, 0xef, 0x16, 0xf7, 0x9f, 0xf2, 0x16, 0xf7, 0x9e, - 0xef, 0x16, 0xf8, 0x9f, 0xf2, 0x16, 0xf8, 0x9e, 0xef, 0x16, 0xf8, 0x9f, - 0xf2, 0x16, 0xf8, 0x9f, 0xf1, 0x16, 0xf8, 0x9f, 0xf2, 0x16, 0xf9, 0x9f, - 0xf4, 0x16, 0xf9, 0x9f, 0xf4, 0x16, 0xf9, 0x9f, 0xf4, 0x16, 0xf9, 0x9f, - 0xf4, 0x16, 0xfa, 0x9f, 0xf4, 0x16, 0xfa, 0x9f, 0xf4, 0x16, 0xfa, 0x9f, - 0xf4, 0x16, 0xfa, 0x9f, 0xf4, 0x16, 0xfa, 0x9f, 0xf4, 0x16, 0xfb, 0x9f, - 0xf4, 0x16, 0xfb, 0x9f, 0xf4, 0x16, 0xfb, 0x9f, 0xf4, 0x16, 0xfb, 0xa0, - 0xf6, 0x16, 0xfc, 0x9f, 0xf4, 0x16, 0xfc, 0xa0, 0xf6, 0x16, 0xfc, 0x9f, - 0xf4, 0x16, 0xfc, 0xa0, 0xf6, 0x16, 0xfc, 0xa0, 0xf6, 0x16, 0xfd, 0xa0, - 0xf6, 0x16, 0xfd, 0xa0, 0xf6, 0x16, 0xfd, 0xa0, 0xf6, 0x16, 0xfd, 0xa1, - 0xf8, 0x16, 0xfe, 0xa0, 0xf6, 0x16, 0xfe, 0xa1, 0xf8, 0x16, 0xfe, 0xa0, - 0xf6, 0x16, 0xfe, 0xa1, 0xf8, 0x16, 0xfe, 0xa0, 0xf6, 0x16, 0xff, 0xa1, - 0xf8, 0x16, 0xff, 0xa1, 0xf8, 0x16, 0x03, 0x84, 0x9b, 0x17, 0x0a, 0x84, - 0x9b, 0x17, 0x0f, 0x84, 0x9b, 0x17, 0x14, 0x84, 0x9b, 0x17, 0x17, 0x84, - 0x9b, 0x17, 0x1b, 0x84, 0x9b, 0x17, 0x1e, 0x84, 0x9b, 0x17, 0x20, 0x86, - 0x9b, 0x17, 0x23, 0x84, 0x9b, 0x17, 0x25, 0x86, 0x9b, 0x17, 0x27, 0x84, - 0x9b, 0x17, 0x29, 0x86, 0x9b, 0x17, 0x2b, 0x84, 0x9b, 0x17, 0x2d, 0x86, - 0x9b, 0x17, 0x2f, 0x84, 0x9b, 0x17, 0x31, 0x86, 0x9b, 0x17, 0x32, 0x84, - 0x9b, 0x17, 0x34, 0x86, 0x9b, 0x17, 0x35, 0x84, 0x9b, 0x17, 0x37, 0x86, - 0x9b, 0x17, 0x38, 0x84, 0x9b, 0x17, 0x3a, 0x84, 0x9c, 0x17, 0x3b, 0x84, - 0x9b, 0x17, 0x3c, 0x84, 0x9c, 0x17, 0x3e, 0x84, 0x9b, 0x17, 0x3f, 0x84, - 0x9c, 0x17, 0x40, 0x84, 0x9b, 0x17, 0x42, 0x84, 0x9c, 0x17, 0x43, 0x84, - 0x9b, 0x17, 0x44, 0x84, 0x9c, 0x17, 0x45, 0x84, 0x9b, 0x17, 0x46, 0x84, - 0x9c, 0x17, 0x47, 0x84, 0x9b, 0x17, 0x48, 0x84, 0x9c, 0x17, 0x49, 0x84, - 0x9b, 0x17, 0x4a, 0x84, 0x9c, 0x17, 0x4b, 0x84, 0x9b, 0x17, 0x4c, 0x84, - 0x9c, 0x17, 0x4d, 0x84, 0x9b, 0x17, 0x4e, 0x84, 0x9c, 0x17, 0x4f, 0x84, - 0x9b, 0x17, 0x50, 0x84, 0x9c, 0x17, 0x51, 0x84, 0x9b, 0x17, 0x52, 0x84, - 0x9c, 0x17, 0x53, 0x84, 0x9b, 0x17, 0x54, 0x84, 0x9c, 0x17, 0x55, 0x84, - 0x9b, 0x17, 0x56, 0x84, 0x9c, 0x17, 0x57, 0x84, 0x9b, 0x17, 0x58, 0x84, - 0x9c, 0x17, 0x58, 0x84, 0x9b, 0x17, 0x59, 0x84, 0x9c, 0x17, 0x5a, 0x84, - 0x9b, 0x17, 0x5b, 0x84, 0x9c, 0x17, 0x5c, 0x84, 0x9b, 0x17, 0x5d, 0x84, - 0x9c, 0x17, 0x5d, 0x84, 0x9b, 0x17, 0x5e, 0x84, 0x9c, 0x17, 0x5f, 0x84, - 0x9b, 0x17, 0x60, 0x84, 0x9c, 0x17, 0x60, 0x84, 0x9b, 0x17, 0x61, 0x84, - 0x9c, 0x17, 0x62, 0x84, 0x9b, 0x17, 0x63, 0x84, 0x9c, 0x17, 0x63, 0x84, - 0x9b, 0x17, 0x64, 0x84, 0x9c, 0x17, 0x65, 0x84, 0x9b, 0x17, 0x66, 0x84, - 0x9c, 0x17, 0x66, 0x84, 0x9b, 0x17, 0x67, 0x84, 0x9c, 0x17, 0x68, 0x84, - 0x9b, 0x17, 0x68, 0x84, 0x9c, 0x17, 0x69, 0x84, 0x9b, 0x17, 0x6a, 0x84, - 0x9c, 0x17, 0x6a, 0x84, 0x9b, 0x17, 0x6b, 0x84, 0x9c, 0x17, 0x6c, 0x84, - 0x9b, 0x17, 0x6c, 0x84, 0x9c, 0x17, 0x6d, 0x84, 0x9b, 0x17, 0x6e, 0x84, - 0x9c, 0x17, 0x6e, 0x84, 0x9b, 0x17, 0x6f, 0x84, 0x9c, 0x17, 0x70, 0x84, - 0x9b, 0x17, 0x70, 0x84, 0x9c, 0x17, 0x71, 0x84, 0x9b, 0x17, 0x72, 0x84, - 0x9c, 0x17, 0x72, 0x84, 0x9b, 0x17, 0x73, 0x84, 0x9c, 0x17, 0x73, 0x84, - 0x9b, 0x17, 0x74, 0x84, 0x9c, 0x17, 0x75, 0x84, 0x9b, 0x17, 0x75, 0x84, - 0x9c, 0x17, 0x76, 0x84, 0x9b, 0x17, 0x76, 0x84, 0x9c, 0x17, 0x77, 0x84, - 0x9b, 0x17, 0x78, 0x84, 0x9c, 0x17, 0x78, 0x84, 0x9b, 0x17, 0x79, 0x84, - 0x9c, 0x17, 0x79, 0x84, 0x9b, 0x17, 0x7a, 0x84, 0x9c, 0x17, 0x7a, 0x84, - 0x9b, 0x17, 0x7b, 0x84, 0x9c, 0x17, 0x7c, 0x84, 0x9b, 0x17, 0x7c, 0x84, - 0x9c, 0x17, 0x7d, 0x84, 0x9b, 0x17, 0x7d, 0x84, 0x9c, 0x17, 0x7e, 0x84, - 0x9b, 0x17, 0x7e, 0x84, 0x9c, 0x17, 0x7f, 0x84, 0x9b, 0x17, 0x7f, 0x84, - 0x9c, 0x17, 0x80, 0x84, 0x9b, 0x17, 0x81, 0x84, 0x9c, 0x17, 0x81, 0x84, - 0x9b, 0x17, 0x82, 0x84, 0x9c, 0x17, 0x82, 0x84, 0x9b, 0x17, 0x83, 0x84, - 0x9c, 0x17, 0x83, 0x84, 0x9b, 0x17, 0x84, 0x84, 0x9c, 0x17, 0x84, 0x84, - 0x9b, 0x17, 0x85, 0x84, 0x9c, 0x17, 0x85, 0x84, 0x9b, 0x17, 0x86, 0x84, - 0x9c, 0x17, 0x86, 0x84, 0x9b, 0x17, 0x87, 0x84, 0x9c, 0x17, 0x87, 0x84, - 0x9b, 0x17, 0x88, 0x84, 0x9c, 0x17, 0x88, 0x84, 0x9b, 0x17, 0x89, 0x84, - 0x9c, 0x17, 0x89, 0x84, 0x9b, 0x17, 0x8a, 0x84, 0x9c, 0x17, 0x8a, 0x84, - 0x9b, 0x17, 0x8b, 0x84, 0x9c, 0x17, 0x8b, 0x84, 0x9b, 0x17, 0x8c, 0x84, - 0x9c, 0x17, 0x8c, 0x84, 0x9b, 0x17, 0x8d, 0x84, 0x9c, 0x17, 0x8d, 0x84, - 0x9b, 0x17, 0x8e, 0x84, 0x9c, 0x17, 0x8e, 0x84, 0x9b, 0x17, 0x8e, 0x84, - 0x9c, 0x17, 0x8f, 0x84, 0x9b, 0x17, 0x8f, 0x84, 0x9c, 0x17, 0x90, 0x84, - 0x9b, 0x17, 0x90, 0x84, 0x9c, 0x17, 0x91, 0x84, 0x9b, 0x17, 0x91, 0x84, - 0x9c, 0x17, 0x92, 0x84, 0x9b, 0x17, 0x92, 0x84, 0x9c, 0x17, 0x93, 0x84, - 0x9b, 0x17, 0x93, 0x84, 0x9c, 0x17, 0x94, 0x84, 0x9b, 0x17, 0x94, 0x84, - 0x9c, 0x17, 0x94, 0x84, 0x9b, 0x17, 0x95, 0x84, 0x9c, 0x17, 0x95, 0x84, - 0x9b, 0x17, 0x96, 0x84, 0x9c, 0x17, 0x96, 0x84, 0x9b, 0x17, 0x97, 0x84, - 0x9c, 0x17, 0x97, 0x84, 0x9b, 0x17, 0x98, 0x84, 0x9c, 0x17, 0x98, 0x84, - 0x9b, 0x17, 0x98, 0x84, 0x9c, 0x17, 0x99, 0x84, 0x9b, 0x17, 0x99, 0x84, - 0x9c, 0x17, 0x9a, 0x84, 0x9b, 0x17, 0x9a, 0x84, 0x9c, 0x17, 0x9a, 0x84, - 0x9b, 0x17, 0x9b, 0x84, 0x9c, 0x17, 0x9b, 0x84, 0x9b, 0x17, 0x9c, 0x84, - 0x9c, 0x17, 0x9c, 0x84, 0x9c, 0x17, 0x9d, 0x84, 0x9d, 0x17, 0x9d, 0x84, - 0x9d, 0x17, 0x9d, 0x84, 0x9d, 0x17, 0x9e, 0x84, 0x9e, 0x17, 0x9e, 0x84, - 0x9e, 0x17, 0x9f, 0x84, 0x9f, 0x17, 0x9f, 0x84, 0x9e, 0x17, 0x9f, 0x84, - 0x9f, 0x17, 0xa0, 0x84, 0x9e, 0x17, 0xa0, 0x84, 0x9f, 0x17, 0xa1, 0x84, - 0x9e, 0x17, 0xa1, 0x84, 0x9f, 0x17, 0xa1, 0x84, 0x9e, 0x17, 0xa2, 0x84, - 0x9f, 0x17, 0xa2, 0x84, 0x9e, 0x17, 0xa3, 0x84, 0x9f, 0x17, 0xa3, 0x84, - 0x9e, 0x17, 0xa3, 0x84, 0x9f, 0x17, 0xa4, 0x84, 0x9e, 0x17, 0xa4, 0x84, - 0x9f, 0x17, 0xa5, 0x84, 0x9e, 0x17, 0xa5, 0x84, 0x9f, 0x17, 0xa5, 0x84, - 0x9e, 0x17, 0xa6, 0x84, 0x9f, 0x17, 0xa6, 0x85, 0xa2, 0x17, 0xa6, 0x84, - 0x9f, 0x17, 0xa7, 0x85, 0xa2, 0x17, 0xa7, 0x84, 0x9f, 0x17, 0xa8, 0x85, - 0xa2, 0x17, 0xa8, 0x85, 0xa2, 0x17, 0xa8, 0x85, 0xa2, 0x17, 0xa9, 0x85, - 0xa2, 0x17, 0xa9, 0x85, 0xa2, 0x17, 0xaa, 0x85, 0xa2, 0x17, 0xaa, 0x85, - 0xa2, 0x17, 0xaa, 0x86, 0xa6, 0x17, 0xab, 0x86, 0xa6, 0x17, 0xab, 0x86, - 0xa6, 0x17, 0xab, 0x86, 0xa6, 0x17, 0xac, 0x86, 0xa6, 0x17, 0xac, 0x86, - 0xa6, 0x17, 0xac, 0x86, 0xa6, 0x17, 0xad, 0x86, 0xa6, 0x17, 0xad, 0x86, - 0xa6, 0x17, 0xae, 0x86, 0xa6, 0x17, 0xae, 0x87, 0xaa, 0x17, 0xae, 0x86, - 0xa6, 0x17, 0xaf, 0x87, 0xaa, 0x17, 0xaf, 0x87, 0xa9, 0x17, 0xaf, 0x87, - 0xaa, 0x17, 0xb0, 0x87, 0xa9, 0x17, 0xb0, 0x87, 0xaa, 0x17, 0xb0, 0x87, - 0xa9, 0x17, 0xb1, 0x87, 0xaa, 0x17, 0xb1, 0x88, 0xad, 0x17, 0xb2, 0x88, - 0xad, 0x17, 0xb2, 0x88, 0xad, 0x17, 0xb2, 0x88, 0xad, 0x17, 0xb3, 0x88, - 0xad, 0x17, 0xb3, 0x88, 0xad, 0x17, 0xb3, 0x88, 0xad, 0x17, 0xb4, 0x88, - 0xad, 0x17, 0xb4, 0x88, 0xad, 0x17, 0xb4, 0x88, 0xad, 0x17, 0xb5, 0x89, - 0xb0, 0x17, 0xb5, 0x88, 0xad, 0x17, 0xb5, 0x89, 0xb0, 0x17, 0xb6, 0x88, - 0xad, 0x17, 0xb6, 0x89, 0xb0, 0x17, 0xb6, 0x89, 0xb2, 0x17, 0xb7, 0x89, - 0xb0, 0x17, 0xb7, 0x89, 0xb2, 0x17, 0xb7, 0x89, 0xb0, 0x17, 0xb8, 0x89, - 0xb2, 0x17, 0xb8, 0x89, 0xb0, 0x17, 0xb8, 0x89, 0xb2, 0x17, 0xb9, 0x89, - 0xb2, 0x17, 0xb9, 0x89, 0xb2, 0x17, 0xb9, 0x89, 0xb2, 0x17, 0xba, 0x89, - 0xb2, 0x17, 0xba, 0x8a, 0xb3, 0x17, 0xba, 0x8a, 0xb4, 0x17, 0xbb, 0x8b, - 0xb7, 0x17, 0xbb, 0x8b, 0xb7, 0x17, 0xbb, 0x8b, 0xb7, 0x17, 0xbc, 0x8b, - 0xb7, 0x17, 0xbc, 0x8b, 0xb7, 0x17, 0xbc, 0x8b, 0xb7, 0x17, 0xbd, 0x8b, - 0xb7, 0x17, 0xbd, 0x8b, 0xb7, 0x17, 0xbd, 0x8b, 0xb7, 0x17, 0xbe, 0x8b, - 0xb7, 0x17, 0xbe, 0x8b, 0xb7, 0x17, 0xbe, 0x8b, 0xb7, 0x17, 0xbf, 0x8c, - 0xba, 0x17, 0xbf, 0x8b, 0xb7, 0x17, 0xbf, 0x8c, 0xba, 0x17, 0xc0, 0x8c, - 0xba, 0x17, 0xc0, 0x8c, 0xba, 0x17, 0xc0, 0x8c, 0xba, 0x17, 0xc1, 0x8c, - 0xba, 0x17, 0xc1, 0x8c, 0xba, 0x17, 0xc1, 0x8c, 0xba, 0x17, 0xc1, 0x8d, - 0xbd, 0x17, 0xc2, 0x8c, 0xba, 0x17, 0xc2, 0x8d, 0xbd, 0x17, 0xc2, 0x8c, - 0xba, 0x17, 0xc3, 0x8d, 0xbd, 0x17, 0xc3, 0x8d, 0xbd, 0x17, 0xc3, 0x8d, - 0xbd, 0x17, 0xc4, 0x8d, 0xbd, 0x17, 0xc4, 0x8d, 0xbd, 0x17, 0xc4, 0x8e, - 0xc0, 0x17, 0xc5, 0x8e, 0xc0, 0x17, 0xc5, 0x8e, 0xc0, 0x17, 0xc5, 0x8e, - 0xc0, 0x17, 0xc6, 0x8e, 0xc0, 0x17, 0xc6, 0x8e, 0xc0, 0x17, 0xc6, 0x8e, - 0xc0, 0x17, 0xc6, 0x8e, 0xc0, 0x17, 0xc7, 0x8e, 0xc0, 0x17, 0xc7, 0x8e, - 0xc0, 0x17, 0xc7, 0x8e, 0xc3, 0x17, 0xc8, 0x8e, 0xc0, 0x17, 0xc8, 0x8e, - 0xc3, 0x17, 0xc8, 0x8e, 0xc0, 0x17, 0xc9, 0x8e, 0xc3, 0x17, 0xc9, 0x8e, - 0xc3, 0x17, 0xc9, 0x8e, 0xc3, 0x17, 0xc9, 0x8e, 0xc3, 0x17, 0xca, 0x8e, - 0xc3, 0x17, 0xca, 0x8e, 0xc3, 0x17, 0xca, 0x8e, 0xc3, 0x17, 0xcb, 0x8f, - 0xc6, 0x17, 0xcb, 0x8e, 0xc3, 0x17, 0xcb, 0x8f, 0xc6, 0x17, 0xcc, 0x8f, - 0xc6, 0x17, 0xcc, 0x8f, 0xc6, 0x17, 0xcc, 0x8f, 0xc6, 0x17, 0xcc, 0x8f, - 0xc6, 0x17, 0xcd, 0x8f, 0xc6, 0x17, 0xcd, 0x8f, 0xc6, 0x17, 0xcd, 0x90, - 0xc9, 0x17, 0xce, 0x90, 0xc9, 0x17, 0xce, 0x90, 0xc9, 0x17, 0xce, 0x90, - 0xc9, 0x17, 0xce, 0x90, 0xc9, 0x17, 0xcf, 0x90, 0xc9, 0x17, 0xcf, 0x90, - 0xc9, 0x17, 0xcf, 0x90, 0xc9, 0x17, 0xd0, 0x90, 0xc9, 0x17, 0xd0, 0x90, - 0xc9, 0x17, 0xd0, 0x91, 0xcc, 0x17, 0xd0, 0x90, 0xc9, 0x17, 0xd1, 0x91, - 0xcc, 0x17, 0xd1, 0x90, 0xc9, 0x17, 0xd1, 0x91, 0xcc, 0x17, 0xd2, 0x91, - 0xcb, 0x17, 0xd2, 0x91, 0xcc, 0x17, 0xd2, 0x91, 0xcb, 0x17, 0xd2, 0x91, - 0xcc, 0x17, 0xd3, 0x92, 0xce, 0x17, 0xd3, 0x92, 0xce, 0x17, 0xd3, 0x92, - 0xce, 0x17, 0xd4, 0x92, 0xce, 0x17, 0xd4, 0x92, 0xce, 0x17, 0xd4, 0x92, - 0xce, 0x17, 0xd4, 0x92, 0xce, 0x17, 0xd5, 0x92, 0xce, 0x17, 0xd5, 0x92, - 0xce, 0x17, 0xd5, 0x92, 0xce, 0x17, 0xd6, 0x93, 0xd1, 0x17, 0xd6, 0x92, - 0xce, 0x17, 0xd6, 0x93, 0xd1, 0x17, 0xd6, 0x92, 0xce, 0x17, 0xd7, 0x93, - 0xd1, 0x17, 0xd7, 0x93, 0xd1, 0x17, 0xd7, 0x93, 0xd1, 0x17, 0xd7, 0x93, - 0xd1, 0x17, 0xd8, 0x93, 0xd1, 0x17, 0xd8, 0x94, 0xd4, 0x17, 0xd8, 0x93, - 0xd1, 0x17, 0xd9, 0x94, 0xd4, 0x17, 0xd9, 0x93, 0xd1, 0x17, 0xd9, 0x94, - 0xd4, 0x17, 0xd9, 0x93, 0xd1, 0x17, 0xda, 0x94, 0xd4, 0x17, 0xda, 0x94, - 0xd3, 0x17, 0xda, 0x94, 0xd4, 0x17, 0xda, 0x94, 0xd3, 0x17, 0xdb, 0x94, - 0xd4, 0x17, 0xdb, 0x95, 0xd6, 0x17, 0xdb, 0x95, 0xd6, 0x17, 0xdb, 0x95, - 0xd6, 0x17, 0xdc, 0x95, 0xd6, 0x17, 0xdc, 0x95, 0xd6, 0x17, 0xdc, 0x95, - 0xd6, 0x17, 0xdd, 0x95, 0xd6, 0x17, 0xdd, 0x95, 0xd6, 0x17, 0xdd, 0x95, - 0xd6, 0x17, 0xdd, 0x95, 0xd6, 0x17, 0xde, 0x96, 0xd9, 0x17, 0xde, 0x95, - 0xd6, 0x17, 0xde, 0x96, 0xd9, 0x17, 0xde, 0x95, 0xd6, 0x17, 0xdf, 0x96, - 0xd9, 0x17, 0xdf, 0x96, 0xd9, 0x17, 0xdf, 0x96, 0xd9, 0x17, 0xdf, 0x96, - 0xd9, 0x17, 0xe0, 0x96, 0xd9, 0x17, 0xe0, 0x97, 0xdb, 0x17, 0xe0, 0x96, - 0xd9, 0x17, 0xe1, 0x97, 0xdb, 0x17, 0xe1, 0x96, 0xd9, 0x17, 0xe1, 0x97, - 0xdb, 0x17, 0xe1, 0x97, 0xdb, 0x17, 0xe2, 0x97, 0xdb, 0x17, 0xe2, 0x97, - 0xdb, 0x17, 0xe2, 0x97, 0xdb, 0x17, 0xe2, 0x98, 0xde, 0x17, 0xe3, 0x98, - 0xde, 0x17, 0xe3, 0x98, 0xde, 0x17, 0xe3, 0x98, 0xde, 0x17, 0xe3, 0x98, - 0xde, 0x17, 0xe4, 0x98, 0xde, 0x17, 0xe4, 0x98, 0xde, 0x17, 0xe4, 0x98, - 0xde, 0x17, 0xe4, 0x98, 0xde, 0x17, 0xe5, 0x98, 0xde, 0x17, 0xe5, 0x98, - 0xde, 0x17, 0xe5, 0x98, 0xde, 0x17, 0xe5, 0x98, 0xe0, 0x17, 0xe6, 0x98, - 0xde, 0x17, 0xe6, 0x98, 0xe0, 0x17, 0xe6, 0x98, 0xde, 0x17, 0xe6, 0x98, - 0xe0, 0x17, 0xe7, 0x98, 0xe0, 0x17, 0xe7, 0x98, 0xe0, 0x17, 0xe7, 0x98, - 0xe0, 0x17, 0xe7, 0x98, 0xe0, 0x17, 0xe8, 0x99, 0xe3, 0x17, 0xe8, 0x98, - 0xe0, 0x17, 0xe8, 0x99, 0xe3, 0x17, 0xe8, 0x98, 0xe0, 0x17, 0xe9, 0x99, - 0xe3, 0x17, 0xe9, 0x99, 0xe2, 0x17, 0xe9, 0x99, 0xe3, 0x17, 0xe9, 0x99, - 0xe2, 0x17, 0xea, 0x99, 0xe3, 0x17, 0xea, 0x9a, 0xe5, 0x17, 0xea, 0x9a, - 0xe5, 0x17, 0xea, 0x9a, 0xe5, 0x17, 0xeb, 0x9a, 0xe5, 0x17, 0xeb, 0x9a, - 0xe5, 0x17, 0xeb, 0x9a, 0xe5, 0x17, 0xeb, 0x9a, 0xe5, 0x17, 0xec, 0x9a, - 0xe5, 0x17, 0xec, 0x9a, 0xe5, 0x17, 0xec, 0x9a, 0xe5, 0x17, 0xec, 0x9b, - 0xe7, 0x17, 0xec, 0x9a, 0xe5, 0x17, 0xed, 0x9b, 0xe7, 0x17, 0xed, 0x9a, - 0xe5, 0x17, 0xed, 0x9b, 0xe7, 0x17, 0xed, 0x9a, 0xe5, 0x17, 0xee, 0x9b, - 0xe7, 0x17, 0xee, 0x9b, 0xe7, 0x17, 0xee, 0x9b, 0xe7, 0x17, 0xee, 0x9c, - 0xea, 0x17, 0xef, 0x9c, 0xea, 0x17, 0xef, 0x9c, 0xea, 0x17, 0xef, 0x9c, - 0xea, 0x17, 0xef, 0x9c, 0xea, 0x17, 0xf0, 0x9c, 0xea, 0x17, 0xf0, 0x9c, - 0xea, 0x17, 0xf0, 0x9c, 0xea, 0x17, 0xf0, 0x9c, 0xea, 0x17, 0xf1, 0x9c, - 0xea, 0x17, 0xf1, 0x9d, 0xec, 0x17, 0xf1, 0x9c, 0xea, 0x17, 0xf1, 0x9d, - 0xec, 0x17, 0xf2, 0x9c, 0xea, 0x17, 0xf2, 0x9d, 0xec, 0x17, 0xf2, 0x9c, - 0xea, 0x17, 0xf2, 0x9d, 0xec, 0x17, 0xf2, 0x9d, 0xec, 0x17, 0xf3, 0x9d, - 0xec, 0x17, 0xf3, 0x9d, 0xec, 0x17, 0xf3, 0x9d, 0xec, 0x17, 0xf3, 0x9d, - 0xee, 0x17, 0xf4, 0x9d, 0xec, 0x17, 0xf4, 0x9d, 0xee, 0x17, 0xf4, 0x9d, - 0xec, 0x17, 0xf4, 0x9d, 0xee, 0x17, 0xf5, 0x9d, 0xee, 0x17, 0xf5, 0x9d, - 0xee, 0x17, 0xf5, 0x9d, 0xee, 0x17, 0xf5, 0x9d, 0xee, 0x17, 0xf5, 0x9e, - 0xf0, 0x17, 0xf6, 0x9e, 0xf1, 0x17, 0xf6, 0x9e, 0xf0, 0x17, 0xf6, 0x9e, - 0xf1, 0x17, 0xf6, 0x9e, 0xf0, 0x17, 0xf7, 0x9e, 0xf1, 0x17, 0xf7, 0x9e, - 0xf0, 0x17, 0xf7, 0x9e, 0xf1, 0x17, 0xf7, 0x9e, 0xf0, 0x17, 0xf8, 0x9e, - 0xf1, 0x17, 0xf8, 0x9f, 0xf3, 0x17, 0xf8, 0x9e, 0xf1, 0x17, 0xf8, 0x9f, - 0xf3, 0x17, 0xf8, 0x9e, 0xf1, 0x17, 0xf9, 0x9f, 0xf3, 0x17, 0xf9, 0x9e, - 0xf1, 0x17, 0xf9, 0x9f, 0xf3, 0x17, 0xf9, 0x9f, 0xf2, 0x17, 0xfa, 0x9f, - 0xf3, 0x17, 0xfa, 0xa0, 0xf5, 0x17, 0xfa, 0x9f, 0xf3, 0x17, 0xfa, 0xa0, - 0xf5, 0x17, 0xfa, 0x9f, 0xf3, 0x17, 0xfb, 0xa0, 0xf5, 0x17, 0xfb, 0x9f, - 0xf3, 0x17, 0xfb, 0xa0, 0xf5, 0x17, 0xfb, 0xa0, 0xf5, 0x17, 0xfc, 0xa0, - 0xf5, 0x17, 0xfc, 0xa0, 0xf5, 0x17, 0xfc, 0xa0, 0xf5, 0x17, 0xfc, 0xa1, - 0xf7, 0x17, 0xfc, 0xa1, 0xf7, 0x17, 0xfd, 0xa1, 0xf7, 0x17, 0xfd, 0xa1, - 0xf7, 0x17, 0xfd, 0xa1, 0xf7, 0x17, 0xfd, 0xa1, 0xf7, 0x17, 0xfe, 0xa1, - 0xf7, 0x17, 0xfe, 0xa1, 0xf7, 0x17, 0xfe, 0xa1, 0xf7, 0x17, 0xfe, 0xa1, - 0xf7, 0x17, 0xfe, 0xa1, 0xf9, 0x17, 0xff, 0xa1, 0xf7, 0x17, 0xff, 0xa1, - 0xf9, 0x17, 0x03, 0x83, 0x9b, 0x17, 0x0a, 0x83, 0x9b, 0x17, 0x0f, 0x83, - 0x9b, 0x17, 0x14, 0x83, 0x9b, 0x17, 0x17, 0x83, 0x9b, 0x17, 0x1b, 0x83, - 0x9b, 0x17, 0x1e, 0x83, 0x9b, 0x17, 0x20, 0x83, 0x9c, 0x17, 0x23, 0x83, - 0x9b, 0x17, 0x25, 0x83, 0x9c, 0x17, 0x27, 0x83, 0x9b, 0x17, 0x29, 0x83, - 0x9c, 0x17, 0x2b, 0x83, 0x9b, 0x17, 0x2d, 0x83, 0x9c, 0x17, 0x2f, 0x83, - 0x9b, 0x17, 0x31, 0x83, 0x9c, 0x17, 0x32, 0x83, 0x9b, 0x17, 0x34, 0x83, - 0x9c, 0x17, 0x35, 0x83, 0x9b, 0x17, 0x37, 0x83, 0x9c, 0x17, 0x38, 0x83, - 0x9b, 0x17, 0x3a, 0x83, 0x9c, 0x17, 0x3b, 0x83, 0x9b, 0x17, 0x3c, 0x83, - 0x9c, 0x17, 0x3e, 0x83, 0x9b, 0x17, 0x3f, 0x83, 0x9c, 0x17, 0x40, 0x83, - 0x9b, 0x17, 0x42, 0x83, 0x9c, 0x17, 0x43, 0x83, 0x9b, 0x17, 0x44, 0x83, - 0x9c, 0x17, 0x45, 0x83, 0x9b, 0x17, 0x46, 0x83, 0x9c, 0x17, 0x47, 0x83, - 0x9b, 0x17, 0x48, 0x83, 0x9c, 0x17, 0x49, 0x83, 0x9b, 0x17, 0x4a, 0x83, - 0x9c, 0x17, 0x4b, 0x83, 0x9b, 0x17, 0x4c, 0x83, 0x9c, 0x17, 0x4d, 0x83, - 0x9b, 0x17, 0x4e, 0x83, 0x9c, 0x17, 0x4f, 0x83, 0x9b, 0x17, 0x50, 0x83, - 0x9c, 0x17, 0x51, 0x83, 0x9b, 0x17, 0x52, 0x83, 0x9c, 0x17, 0x53, 0x83, - 0x9b, 0x17, 0x54, 0x83, 0x9c, 0x17, 0x55, 0x83, 0x9b, 0x17, 0x56, 0x83, - 0x9c, 0x17, 0x57, 0x83, 0x9b, 0x17, 0x58, 0x83, 0x9c, 0x17, 0x58, 0x83, - 0x9b, 0x17, 0x59, 0x83, 0x9c, 0x17, 0x5a, 0x83, 0x9b, 0x17, 0x5b, 0x83, - 0x9c, 0x17, 0x5c, 0x83, 0x9b, 0x17, 0x5d, 0x83, 0x9c, 0x17, 0x5d, 0x83, - 0x9b, 0x17, 0x5e, 0x83, 0x9c, 0x17, 0x5f, 0x83, 0x9b, 0x17, 0x60, 0x83, - 0x9c, 0x17, 0x60, 0x83, 0x9b, 0x17, 0x61, 0x83, 0x9c, 0x17, 0x62, 0x83, - 0x9b, 0x17, 0x63, 0x83, 0x9c, 0x17, 0x63, 0x83, 0x9b, 0x17, 0x64, 0x83, - 0x9c, 0x17, 0x65, 0x83, 0x9b, 0x17, 0x66, 0x83, 0x9c, 0x17, 0x66, 0x83, - 0x9b, 0x17, 0x67, 0x83, 0x9c, 0x17, 0x68, 0x83, 0x9b, 0x17, 0x68, 0x83, - 0x9c, 0x17, 0x69, 0x83, 0x9b, 0x17, 0x6a, 0x83, 0x9c, 0x17, 0x6a, 0x83, - 0x9b, 0x17, 0x6b, 0x83, 0x9c, 0x17, 0x6c, 0x83, 0x9b, 0x17, 0x6c, 0x83, - 0x9c, 0x17, 0x6d, 0x83, 0x9b, 0x17, 0x6e, 0x83, 0x9c, 0x17, 0x6e, 0x83, - 0x9b, 0x17, 0x6f, 0x83, 0x9c, 0x17, 0x70, 0x83, 0x9b, 0x17, 0x70, 0x83, - 0x9c, 0x17, 0x71, 0x83, 0x9b, 0x17, 0x72, 0x83, 0x9c, 0x17, 0x72, 0x83, - 0x9b, 0x17, 0x73, 0x83, 0x9c, 0x17, 0x73, 0x83, 0x9b, 0x17, 0x74, 0x83, - 0x9c, 0x17, 0x75, 0x83, 0x9b, 0x17, 0x75, 0x83, 0x9c, 0x17, 0x76, 0x83, - 0x9b, 0x17, 0x76, 0x83, 0x9c, 0x17, 0x77, 0x83, 0x9b, 0x17, 0x78, 0x83, - 0x9c, 0x17, 0x78, 0x83, 0x9b, 0x17, 0x79, 0x83, 0x9c, 0x17, 0x79, 0x83, - 0x9b, 0x17, 0x7a, 0x83, 0x9c, 0x17, 0x7a, 0x83, 0x9b, 0x17, 0x7b, 0x83, - 0x9c, 0x17, 0x7c, 0x83, 0x9b, 0x17, 0x7c, 0x83, 0x9c, 0x17, 0x7d, 0x83, - 0x9b, 0x17, 0x7d, 0x83, 0x9c, 0x17, 0x7e, 0x83, 0x9b, 0x17, 0x7e, 0x83, - 0x9c, 0x17, 0x7f, 0x83, 0x9b, 0x17, 0x7f, 0x83, 0x9c, 0x17, 0x80, 0x83, - 0x9b, 0x17, 0x81, 0x83, 0x9c, 0x17, 0x81, 0x83, 0x9b, 0x17, 0x82, 0x83, - 0x9c, 0x17, 0x82, 0x83, 0x9b, 0x17, 0x83, 0x83, 0x9c, 0x17, 0x83, 0x83, - 0x9b, 0x17, 0x84, 0x83, 0x9c, 0x17, 0x84, 0x83, 0x9b, 0x17, 0x85, 0x83, - 0x9c, 0x17, 0x85, 0x83, 0x9b, 0x17, 0x86, 0x83, 0x9c, 0x17, 0x86, 0x83, - 0x9b, 0x17, 0x87, 0x83, 0x9c, 0x17, 0x87, 0x83, 0x9b, 0x17, 0x88, 0x83, - 0x9c, 0x17, 0x88, 0x83, 0x9b, 0x17, 0x89, 0x83, 0x9c, 0x17, 0x89, 0x83, - 0x9b, 0x17, 0x8a, 0x83, 0x9c, 0x17, 0x8a, 0x83, 0x9b, 0x17, 0x8b, 0x83, - 0x9c, 0x17, 0x8b, 0x83, 0x9b, 0x17, 0x8c, 0x83, 0x9c, 0x17, 0x8c, 0x83, - 0x9b, 0x17, 0x8d, 0x83, 0x9c, 0x17, 0x8d, 0x83, 0x9b, 0x17, 0x8e, 0x83, - 0x9c, 0x17, 0x8e, 0x83, 0x9b, 0x17, 0x8e, 0x83, 0x9c, 0x17, 0x8f, 0x83, - 0x9b, 0x17, 0x8f, 0x83, 0x9c, 0x17, 0x90, 0x83, 0x9b, 0x17, 0x90, 0x83, - 0x9c, 0x17, 0x91, 0x83, 0x9b, 0x17, 0x91, 0x83, 0x9c, 0x17, 0x92, 0x83, - 0x9b, 0x17, 0x92, 0x83, 0x9c, 0x17, 0x93, 0x83, 0x9b, 0x17, 0x93, 0x83, - 0x9c, 0x17, 0x94, 0x83, 0x9b, 0x17, 0x94, 0x83, 0x9c, 0x17, 0x94, 0x83, - 0x9b, 0x17, 0x95, 0x83, 0x9c, 0x17, 0x95, 0x83, 0x9b, 0x17, 0x96, 0x83, - 0x9c, 0x17, 0x96, 0x83, 0x9b, 0x17, 0x97, 0x83, 0x9c, 0x17, 0x97, 0x83, - 0x9b, 0x17, 0x98, 0x83, 0x9c, 0x17, 0x98, 0x83, 0x9b, 0x17, 0x98, 0x83, - 0x9c, 0x17, 0x99, 0x83, 0x9b, 0x17, 0x99, 0x83, 0x9c, 0x17, 0x9a, 0x83, - 0x9b, 0x17, 0x9a, 0x83, 0x9c, 0x17, 0x9a, 0x83, 0x9b, 0x17, 0x9b, 0x83, - 0x9c, 0x17, 0x9b, 0x83, 0x9b, 0x17, 0x9c, 0x83, 0x9c, 0x17, 0x9c, 0x83, - 0x9c, 0x17, 0x9d, 0x83, 0x9d, 0x17, 0x9d, 0x83, 0x9c, 0x17, 0x9d, 0x83, - 0x9d, 0x17, 0x9e, 0x83, 0x9c, 0x17, 0x9e, 0x83, 0x9d, 0x17, 0x9f, 0x83, - 0x9c, 0x17, 0x9f, 0x83, 0x9d, 0x17, 0x9f, 0x83, 0x9c, 0x17, 0xa0, 0x83, - 0x9d, 0x17, 0xa0, 0x83, 0x9c, 0x17, 0xa1, 0x83, 0x9d, 0x17, 0xa1, 0x83, - 0x9c, 0x17, 0xa1, 0x83, 0x9d, 0x17, 0xa2, 0x83, 0x9c, 0x17, 0xa2, 0x83, - 0x9d, 0x17, 0xa3, 0x83, 0x9c, 0x17, 0xa3, 0x83, 0x9d, 0x17, 0xa3, 0x83, - 0x9c, 0x17, 0xa4, 0x83, 0x9d, 0x17, 0xa4, 0x84, 0xa0, 0x17, 0xa5, 0x84, - 0xa1, 0x17, 0xa5, 0x84, 0xa0, 0x17, 0xa5, 0x84, 0xa1, 0x17, 0xa6, 0x84, - 0xa0, 0x17, 0xa6, 0x84, 0xa1, 0x17, 0xa6, 0x84, 0xa0, 0x17, 0xa7, 0x84, - 0xa1, 0x17, 0xa7, 0x84, 0xa0, 0x17, 0xa8, 0x84, 0xa1, 0x17, 0xa8, 0x85, - 0xa4, 0x17, 0xa8, 0x84, 0xa1, 0x17, 0xa9, 0x85, 0xa4, 0x17, 0xa9, 0x84, - 0xa1, 0x17, 0xaa, 0x85, 0xa4, 0x17, 0xaa, 0x85, 0xa4, 0x17, 0xaa, 0x85, - 0xa4, 0x17, 0xab, 0x85, 0xa4, 0x17, 0xab, 0x85, 0xa4, 0x17, 0xab, 0x85, - 0xa4, 0x17, 0xac, 0x85, 0xa4, 0x17, 0xac, 0x86, 0xa8, 0x17, 0xac, 0x85, - 0xa4, 0x17, 0xad, 0x86, 0xa8, 0x17, 0xad, 0x86, 0xa7, 0x17, 0xae, 0x86, - 0xa8, 0x17, 0xae, 0x86, 0xa7, 0x17, 0xae, 0x86, 0xa8, 0x17, 0xaf, 0x86, - 0xa7, 0x17, 0xaf, 0x86, 0xa8, 0x17, 0xaf, 0x87, 0xab, 0x17, 0xb0, 0x87, - 0xab, 0x17, 0xb0, 0x87, 0xab, 0x17, 0xb0, 0x87, 0xab, 0x17, 0xb1, 0x87, - 0xab, 0x17, 0xb1, 0x87, 0xab, 0x17, 0xb2, 0x87, 0xab, 0x17, 0xb2, 0x87, - 0xab, 0x17, 0xb2, 0x87, 0xab, 0x17, 0xb3, 0x87, 0xab, 0x17, 0xb3, 0x88, - 0xaf, 0x17, 0xb3, 0x87, 0xab, 0x17, 0xb4, 0x88, 0xaf, 0x17, 0xb4, 0x88, - 0xae, 0x17, 0xb4, 0x88, 0xaf, 0x17, 0xb5, 0x88, 0xae, 0x17, 0xb5, 0x88, - 0xaf, 0x17, 0xb5, 0x88, 0xae, 0x17, 0xb6, 0x88, 0xaf, 0x17, 0xb6, 0x89, - 0xb2, 0x17, 0xb6, 0x89, 0xb2, 0x17, 0xb7, 0x89, 0xb2, 0x17, 0xb7, 0x89, - 0xb2, 0x17, 0xb7, 0x89, 0xb2, 0x17, 0xb8, 0x89, 0xb2, 0x17, 0xb8, 0x89, - 0xb2, 0x17, 0xb8, 0x89, 0xb2, 0x17, 0xb9, 0x89, 0xb2, 0x17, 0xb9, 0x89, - 0xb2, 0x17, 0xb9, 0x8a, 0xb5, 0x17, 0xba, 0x89, 0xb2, 0x17, 0xba, 0x8a, - 0xb5, 0x17, 0xba, 0x89, 0xb2, 0x17, 0xbb, 0x8a, 0xb5, 0x17, 0xbb, 0x8a, - 0xb5, 0x17, 0xbb, 0x8a, 0xb5, 0x17, 0xbc, 0x8a, 0xb5, 0x17, 0xbc, 0x8a, - 0xb5, 0x17, 0xbc, 0x8b, 0xb8, 0x17, 0xbd, 0x8a, 0xb5, 0x17, 0xbd, 0x8b, - 0xb8, 0x17, 0xbd, 0x8a, 0xb5, 0x17, 0xbe, 0x8b, 0xb8, 0x17, 0xbe, 0x8b, - 0xb8, 0x17, 0xbe, 0x8b, 0xb8, 0x17, 0xbf, 0x8b, 0xb8, 0x17, 0xbf, 0x8b, - 0xb8, 0x17, 0xbf, 0x8b, 0xb8, 0x17, 0xc0, 0x8b, 0xb8, 0x17, 0xc0, 0x8c, - 0xbb, 0x17, 0xc0, 0x8c, 0xbc, 0x17, 0xc1, 0x8c, 0xbb, 0x17, 0xc1, 0x8c, - 0xbc, 0x17, 0xc1, 0x8c, 0xbb, 0x17, 0xc1, 0x8c, 0xbc, 0x17, 0xc2, 0x8c, - 0xbb, 0x17, 0xc2, 0x8c, 0xbc, 0x17, 0xc2, 0x8c, 0xbb, 0x17, 0xc3, 0x8c, - 0xbc, 0x17, 0xc3, 0x8d, 0xbf, 0x17, 0xc3, 0x8c, 0xbc, 0x17, 0xc4, 0x8d, - 0xbf, 0x17, 0xc4, 0x8c, 0xbc, 0x17, 0xc4, 0x8d, 0xbf, 0x17, 0xc5, 0x8d, - 0xbe, 0x17, 0xc5, 0x8d, 0xbf, 0x17, 0xc5, 0x8d, 0xbe, 0x17, 0xc6, 0x8d, - 0xbf, 0x17, 0xc6, 0x8e, 0xc1, 0x17, 0xc6, 0x8d, 0xbf, 0x17, 0xc6, 0x8e, - 0xc1, 0x17, 0xc7, 0x8d, 0xbf, 0x17, 0xc7, 0x8e, 0xc1, 0x17, 0xc7, 0x8e, - 0xc1, 0x17, 0xc8, 0x8e, 0xc1, 0x17, 0xc8, 0x8e, 0xc1, 0x17, 0xc8, 0x8e, - 0xc1, 0x17, 0xc9, 0x8f, 0xc4, 0x17, 0xc9, 0x8f, 0xc5, 0x17, 0xc9, 0x8f, - 0xc4, 0x17, 0xc9, 0x8f, 0xc5, 0x17, 0xca, 0x8f, 0xc4, 0x17, 0xca, 0x8f, - 0xc5, 0x17, 0xca, 0x8f, 0xc4, 0x17, 0xcb, 0x8f, 0xc5, 0x17, 0xcb, 0x8f, - 0xc4, 0x17, 0xcb, 0x8f, 0xc5, 0x17, 0xcc, 0x8f, 0xc4, 0x17, 0xcc, 0x8f, - 0xc5, 0x17, 0xcc, 0x90, 0xc7, 0x17, 0xcc, 0x8f, 0xc5, 0x17, 0xcd, 0x90, - 0xc7, 0x17, 0xcd, 0x90, 0xc7, 0x17, 0xcd, 0x90, 0xc7, 0x17, 0xce, 0x90, - 0xc7, 0x17, 0xce, 0x90, 0xc7, 0x17, 0xce, 0x90, 0xc7, 0x17, 0xce, 0x90, - 0xc7, 0x17, 0xcf, 0x91, 0xca, 0x17, 0xcf, 0x90, 0xc7, 0x17, 0xcf, 0x91, - 0xca, 0x17, 0xd0, 0x90, 0xc7, 0x17, 0xd0, 0x91, 0xca, 0x17, 0xd0, 0x91, - 0xca, 0x17, 0xd0, 0x91, 0xca, 0x17, 0xd1, 0x91, 0xca, 0x17, 0xd1, 0x91, - 0xca, 0x17, 0xd1, 0x92, 0xcd, 0x17, 0xd2, 0x92, 0xcd, 0x17, 0xd2, 0x92, - 0xcd, 0x17, 0xd2, 0x92, 0xcd, 0x17, 0xd2, 0x92, 0xcd, 0x17, 0xd3, 0x92, - 0xcd, 0x17, 0xd3, 0x92, 0xcd, 0x17, 0xd3, 0x92, 0xcd, 0x17, 0xd4, 0x92, - 0xcd, 0x17, 0xd4, 0x92, 0xcd, 0x17, 0xd4, 0x93, 0xd0, 0x17, 0xd4, 0x92, - 0xcd, 0x17, 0xd5, 0x93, 0xd0, 0x17, 0xd5, 0x92, 0xcd, 0x17, 0xd5, 0x93, - 0xd0, 0x17, 0xd6, 0x93, 0xcf, 0x17, 0xd6, 0x93, 0xd0, 0x17, 0xd6, 0x93, - 0xcf, 0x17, 0xd6, 0x93, 0xd0, 0x17, 0xd7, 0x94, 0xd2, 0x17, 0xd7, 0x94, - 0xd2, 0x17, 0xd7, 0x94, 0xd2, 0x17, 0xd7, 0x94, 0xd2, 0x17, 0xd8, 0x94, - 0xd2, 0x17, 0xd8, 0x94, 0xd2, 0x17, 0xd8, 0x94, 0xd2, 0x17, 0xd9, 0x94, - 0xd2, 0x17, 0xd9, 0x94, 0xd2, 0x17, 0xd9, 0x94, 0xd2, 0x17, 0xd9, 0x94, - 0xd5, 0x17, 0xda, 0x94, 0xd2, 0x17, 0xda, 0x94, 0xd5, 0x17, 0xda, 0x94, - 0xd2, 0x17, 0xda, 0x94, 0xd5, 0x17, 0xdb, 0x94, 0xd2, 0x17, 0xdb, 0x94, - 0xd5, 0x17, 0xdb, 0x94, 0xd5, 0x17, 0xdb, 0x94, 0xd5, 0x17, 0xdc, 0x94, - 0xd5, 0x17, 0xdc, 0x94, 0xd5, 0x17, 0xdc, 0x95, 0xd7, 0x17, 0xdd, 0x94, - 0xd5, 0x17, 0xdd, 0x95, 0xd7, 0x17, 0xdd, 0x94, 0xd5, 0x17, 0xdd, 0x95, - 0xd7, 0x17, 0xde, 0x95, 0xd7, 0x17, 0xde, 0x95, 0xd7, 0x17, 0xde, 0x95, - 0xd7, 0x17, 0xde, 0x95, 0xd7, 0x17, 0xdf, 0x96, 0xda, 0x17, 0xdf, 0x96, - 0xda, 0x17, 0xdf, 0x96, 0xda, 0x17, 0xdf, 0x96, 0xda, 0x17, 0xe0, 0x96, - 0xda, 0x17, 0xe0, 0x96, 0xda, 0x17, 0xe0, 0x96, 0xda, 0x17, 0xe1, 0x96, - 0xda, 0x17, 0xe1, 0x96, 0xda, 0x17, 0xe1, 0x96, 0xda, 0x17, 0xe1, 0x97, - 0xdd, 0x17, 0xe2, 0x96, 0xda, 0x17, 0xe2, 0x97, 0xdd, 0x17, 0xe2, 0x96, - 0xda, 0x17, 0xe2, 0x97, 0xdd, 0x17, 0xe3, 0x97, 0xdc, 0x17, 0xe3, 0x97, - 0xdd, 0x17, 0xe3, 0x97, 0xdc, 0x17, 0xe3, 0x97, 0xdd, 0x17, 0xe4, 0x98, - 0xdf, 0x17, 0xe4, 0x97, 0xdd, 0x17, 0xe4, 0x98, 0xdf, 0x17, 0xe4, 0x97, - 0xdd, 0x17, 0xe5, 0x98, 0xdf, 0x17, 0xe5, 0x97, 0xdd, 0x17, 0xe5, 0x98, - 0xdf, 0x17, 0xe5, 0x98, 0xdf, 0x17, 0xe6, 0x98, 0xdf, 0x17, 0xe6, 0x98, - 0xdf, 0x17, 0xe6, 0x98, 0xdf, 0x17, 0xe6, 0x99, 0xe1, 0x17, 0xe7, 0x99, - 0xe2, 0x17, 0xe7, 0x99, 0xe1, 0x17, 0xe7, 0x99, 0xe2, 0x17, 0xe7, 0x99, - 0xe1, 0x17, 0xe8, 0x99, 0xe2, 0x17, 0xe8, 0x99, 0xe1, 0x17, 0xe8, 0x99, - 0xe2, 0x17, 0xe8, 0x99, 0xe1, 0x17, 0xe9, 0x99, 0xe2, 0x17, 0xe9, 0x9a, - 0xe4, 0x17, 0xe9, 0x99, 0xe2, 0x17, 0xe9, 0x9a, 0xe4, 0x17, 0xea, 0x99, - 0xe2, 0x17, 0xea, 0x9a, 0xe4, 0x17, 0xea, 0x9a, 0xe4, 0x17, 0xea, 0x9a, - 0xe4, 0x17, 0xeb, 0x9a, 0xe4, 0x17, 0xeb, 0x9a, 0xe4, 0x17, 0xeb, 0x9a, - 0xe6, 0x17, 0xeb, 0x9a, 0xe4, 0x17, 0xec, 0x9a, 0xe6, 0x17, 0xec, 0x9a, - 0xe4, 0x17, 0xec, 0x9a, 0xe6, 0x17, 0xec, 0x9a, 0xe6, 0x17, 0xec, 0x9a, - 0xe6, 0x17, 0xed, 0x9a, 0xe6, 0x17, 0xed, 0x9a, 0xe6, 0x17, 0xed, 0x9b, - 0xe8, 0x17, 0xed, 0x9b, 0xe9, 0x17, 0xee, 0x9b, 0xe8, 0x17, 0xee, 0x9b, - 0xe9, 0x17, 0xee, 0x9b, 0xe8, 0x17, 0xee, 0x9b, 0xe9, 0x17, 0xef, 0x9b, - 0xe8, 0x17, 0xef, 0x9b, 0xe9, 0x17, 0xef, 0x9b, 0xe8, 0x17, 0xef, 0x9b, - 0xe9, 0x17, 0xf0, 0x9c, 0xeb, 0x17, 0xf0, 0x9b, 0xe9, 0x17, 0xf0, 0x9c, - 0xeb, 0x17, 0xf0, 0x9b, 0xe9, 0x17, 0xf1, 0x9c, 0xeb, 0x17, 0xf1, 0x9b, - 0xe9, 0x17, 0xf1, 0x9c, 0xeb, 0x17, 0xf1, 0x9c, 0xeb, 0x17, 0xf2, 0x9c, - 0xeb, 0x17, 0xf2, 0x9d, 0xed, 0x17, 0xf2, 0x9d, 0xed, 0x17, 0xf2, 0x9d, - 0xed, 0x17, 0xf2, 0x9d, 0xed, 0x17, 0xf3, 0x9d, 0xed, 0x17, 0xf3, 0x9d, - 0xed, 0x17, 0xf3, 0x9d, 0xed, 0x17, 0xf3, 0x9d, 0xed, 0x17, 0xf4, 0x9d, - 0xed, 0x17, 0xf4, 0x9d, 0xed, 0x17, 0xf4, 0x9d, 0xed, 0x17, 0xf4, 0x9d, - 0xed, 0x17, 0xf5, 0x9e, 0xef, 0x17, 0xf5, 0x9d, 0xed, 0x17, 0xf5, 0x9e, - 0xef, 0x17, 0xf5, 0x9d, 0xed, 0x17, 0xf5, 0x9e, 0xef, 0x17, 0xf6, 0x9e, - 0xef, 0x17, 0xf6, 0x9e, 0xef, 0x17, 0xf6, 0x9e, 0xef, 0x17, 0xf6, 0x9e, - 0xef, 0x17, 0xf7, 0x9f, 0xf2, 0x17, 0xf7, 0x9e, 0xef, 0x17, 0xf7, 0x9f, - 0xf2, 0x17, 0xf7, 0x9e, 0xef, 0x17, 0xf8, 0x9f, 0xf2, 0x17, 0xf8, 0x9e, - 0xef, 0x17, 0xf8, 0x9f, 0xf2, 0x17, 0xf8, 0x9f, 0xf1, 0x17, 0xf8, 0x9f, - 0xf2, 0x17, 0xf9, 0x9f, 0xf4, 0x17, 0xf9, 0x9f, 0xf4, 0x17, 0xf9, 0x9f, - 0xf4, 0x17, 0xf9, 0x9f, 0xf4, 0x17, 0xfa, 0x9f, 0xf4, 0x17, 0xfa, 0x9f, - 0xf4, 0x17, 0xfa, 0x9f, 0xf4, 0x17, 0xfa, 0x9f, 0xf4, 0x17, 0xfa, 0x9f, - 0xf4, 0x17, 0xfb, 0x9f, 0xf4, 0x17, 0xfb, 0xa0, 0xf6, 0x17, 0xfb, 0x9f, - 0xf4, 0x17, 0xfb, 0xa0, 0xf6, 0x17, 0xfc, 0x9f, 0xf4, 0x17, 0xfc, 0xa0, - 0xf6, 0x17, 0xfc, 0x9f, 0xf4, 0x17, 0xfc, 0xa0, 0xf6, 0x17, 0xfc, 0xa0, - 0xf6, 0x17, 0xfd, 0xa0, 0xf6, 0x17, 0xfd, 0xa0, 0xf6, 0x17, 0xfd, 0xa0, - 0xf6, 0x17, 0xfd, 0xa1, 0xf8, 0x17, 0xfe, 0xa0, 0xf6, 0x17, 0xfe, 0xa1, - 0xf8, 0x17, 0xfe, 0xa0, 0xf6, 0x17, 0xfe, 0xa1, 0xf8, 0x17, 0xfe, 0xa1, - 0xf8, 0x17, 0xff, 0xa1, 0xf8, 0x17, 0xff, 0xa1, 0xf8, 0x17, 0x03, 0x84, - 0x9b, 0x18, 0x0a, 0x84, 0x9b, 0x18, 0x0f, 0x84, 0x9b, 0x18, 0x14, 0x84, - 0x9b, 0x18, 0x17, 0x84, 0x9b, 0x18, 0x1b, 0x84, 0x9b, 0x18, 0x1e, 0x84, - 0x9b, 0x18, 0x20, 0x86, 0x9b, 0x18, 0x23, 0x84, 0x9b, 0x18, 0x25, 0x86, - 0x9b, 0x18, 0x27, 0x84, 0x9b, 0x18, 0x29, 0x86, 0x9b, 0x18, 0x2b, 0x84, - 0x9b, 0x18, 0x2d, 0x86, 0x9b, 0x18, 0x2f, 0x84, 0x9b, 0x18, 0x31, 0x86, - 0x9b, 0x18, 0x32, 0x84, 0x9b, 0x18, 0x34, 0x86, 0x9b, 0x18, 0x35, 0x84, - 0x9b, 0x18, 0x37, 0x86, 0x9b, 0x18, 0x38, 0x84, 0x9b, 0x18, 0x3a, 0x86, - 0x9b, 0x18, 0x3b, 0x84, 0x9b, 0x18, 0x3c, 0x86, 0x9b, 0x18, 0x3e, 0x84, - 0x9b, 0x18, 0x3f, 0x84, 0x9c, 0x18, 0x40, 0x84, 0x9b, 0x18, 0x42, 0x84, - 0x9c, 0x18, 0x43, 0x84, 0x9b, 0x18, 0x44, 0x84, 0x9c, 0x18, 0x45, 0x84, - 0x9b, 0x18, 0x46, 0x84, 0x9c, 0x18, 0x47, 0x84, 0x9b, 0x18, 0x48, 0x84, - 0x9c, 0x18, 0x49, 0x84, 0x9b, 0x18, 0x4a, 0x84, 0x9c, 0x18, 0x4b, 0x84, - 0x9b, 0x18, 0x4c, 0x84, 0x9c, 0x18, 0x4d, 0x84, 0x9b, 0x18, 0x4e, 0x84, - 0x9c, 0x18, 0x4f, 0x84, 0x9b, 0x18, 0x50, 0x84, 0x9c, 0x18, 0x51, 0x84, - 0x9b, 0x18, 0x52, 0x84, 0x9c, 0x18, 0x53, 0x84, 0x9b, 0x18, 0x54, 0x84, - 0x9c, 0x18, 0x55, 0x84, 0x9b, 0x18, 0x56, 0x84, 0x9c, 0x18, 0x57, 0x84, - 0x9b, 0x18, 0x58, 0x84, 0x9c, 0x18, 0x58, 0x84, 0x9b, 0x18, 0x59, 0x84, - 0x9c, 0x18, 0x5a, 0x84, 0x9b, 0x18, 0x5b, 0x84, 0x9c, 0x18, 0x5c, 0x84, - 0x9b, 0x18, 0x5d, 0x84, 0x9c, 0x18, 0x5d, 0x84, 0x9b, 0x18, 0x5e, 0x84, - 0x9c, 0x18, 0x5f, 0x84, 0x9b, 0x18, 0x60, 0x84, 0x9c, 0x18, 0x60, 0x84, - 0x9b, 0x18, 0x61, 0x84, 0x9c, 0x18, 0x62, 0x84, 0x9b, 0x18, 0x63, 0x84, - 0x9c, 0x18, 0x63, 0x84, 0x9b, 0x18, 0x64, 0x84, 0x9c, 0x18, 0x65, 0x84, - 0x9b, 0x18, 0x66, 0x84, 0x9c, 0x18, 0x66, 0x84, 0x9b, 0x18, 0x67, 0x84, - 0x9c, 0x18, 0x68, 0x84, 0x9b, 0x18, 0x68, 0x84, 0x9c, 0x18, 0x69, 0x84, - 0x9b, 0x18, 0x6a, 0x84, 0x9c, 0x18, 0x6a, 0x84, 0x9b, 0x18, 0x6b, 0x84, - 0x9c, 0x18, 0x6c, 0x84, 0x9b, 0x18, 0x6c, 0x84, 0x9c, 0x18, 0x6d, 0x84, - 0x9b, 0x18, 0x6e, 0x84, 0x9c, 0x18, 0x6e, 0x84, 0x9b, 0x18, 0x6f, 0x84, - 0x9c, 0x18, 0x70, 0x84, 0x9b, 0x18, 0x70, 0x84, 0x9c, 0x18, 0x71, 0x84, - 0x9b, 0x18, 0x72, 0x84, 0x9c, 0x18, 0x72, 0x84, 0x9b, 0x18, 0x73, 0x84, - 0x9c, 0x18, 0x73, 0x84, 0x9b, 0x18, 0x74, 0x84, 0x9c, 0x18, 0x75, 0x84, - 0x9b, 0x18, 0x75, 0x84, 0x9c, 0x18, 0x76, 0x84, 0x9b, 0x18, 0x76, 0x84, - 0x9c, 0x18, 0x77, 0x84, 0x9b, 0x18, 0x78, 0x84, 0x9c, 0x18, 0x78, 0x84, - 0x9b, 0x18, 0x79, 0x84, 0x9c, 0x18, 0x79, 0x84, 0x9b, 0x18, 0x7a, 0x84, - 0x9c, 0x18, 0x7a, 0x84, 0x9b, 0x18, 0x7b, 0x84, 0x9c, 0x18, 0x7c, 0x84, - 0x9b, 0x18, 0x7c, 0x84, 0x9c, 0x18, 0x7d, 0x84, 0x9b, 0x18, 0x7d, 0x84, - 0x9c, 0x18, 0x7e, 0x84, 0x9b, 0x18, 0x7e, 0x84, 0x9c, 0x18, 0x7f, 0x84, - 0x9b, 0x18, 0x7f, 0x84, 0x9c, 0x18, 0x80, 0x84, 0x9b, 0x18, 0x81, 0x84, - 0x9c, 0x18, 0x81, 0x84, 0x9b, 0x18, 0x82, 0x84, 0x9c, 0x18, 0x82, 0x84, - 0x9b, 0x18, 0x83, 0x84, 0x9c, 0x18, 0x83, 0x84, 0x9b, 0x18, 0x84, 0x84, - 0x9c, 0x18, 0x84, 0x84, 0x9b, 0x18, 0x85, 0x84, 0x9c, 0x18, 0x85, 0x84, - 0x9b, 0x18, 0x86, 0x84, 0x9c, 0x18, 0x86, 0x84, 0x9b, 0x18, 0x87, 0x84, - 0x9c, 0x18, 0x87, 0x84, 0x9b, 0x18, 0x88, 0x84, 0x9c, 0x18, 0x88, 0x84, - 0x9b, 0x18, 0x89, 0x84, 0x9c, 0x18, 0x89, 0x84, 0x9b, 0x18, 0x8a, 0x84, - 0x9c, 0x18, 0x8a, 0x84, 0x9b, 0x18, 0x8b, 0x84, 0x9c, 0x18, 0x8b, 0x84, - 0x9b, 0x18, 0x8c, 0x84, 0x9c, 0x18, 0x8c, 0x84, 0x9b, 0x18, 0x8d, 0x84, - 0x9c, 0x18, 0x8d, 0x84, 0x9b, 0x18, 0x8e, 0x84, 0x9c, 0x18, 0x8e, 0x84, - 0x9b, 0x18, 0x8e, 0x84, 0x9c, 0x18, 0x8f, 0x84, 0x9b, 0x18, 0x8f, 0x84, - 0x9c, 0x18, 0x90, 0x84, 0x9b, 0x18, 0x90, 0x84, 0x9c, 0x18, 0x91, 0x84, - 0x9b, 0x18, 0x91, 0x84, 0x9c, 0x18, 0x92, 0x84, 0x9b, 0x18, 0x92, 0x84, - 0x9c, 0x18, 0x93, 0x84, 0x9b, 0x18, 0x93, 0x84, 0x9c, 0x18, 0x94, 0x84, - 0x9b, 0x18, 0x94, 0x84, 0x9c, 0x18, 0x94, 0x84, 0x9b, 0x18, 0x95, 0x84, - 0x9c, 0x18, 0x95, 0x84, 0x9b, 0x18, 0x96, 0x84, 0x9c, 0x18, 0x96, 0x84, - 0x9b, 0x18, 0x97, 0x84, 0x9c, 0x18, 0x97, 0x84, 0x9b, 0x18, 0x98, 0x84, - 0x9c, 0x18, 0x98, 0x84, 0x9b, 0x18, 0x98, 0x84, 0x9c, 0x18, 0x99, 0x84, - 0x9b, 0x18, 0x99, 0x84, 0x9c, 0x18, 0x9a, 0x84, 0x9b, 0x18, 0x9a, 0x84, - 0x9c, 0x18, 0x9a, 0x84, 0x9b, 0x18, 0x9b, 0x84, 0x9c, 0x18, 0x9b, 0x84, - 0x9b, 0x18, 0x9c, 0x84, 0x9c, 0x18, 0x9c, 0x84, 0x9c, 0x18, 0x9d, 0x84, - 0x9d, 0x18, 0x9d, 0x84, 0x9d, 0x18, 0x9d, 0x84, 0x9d, 0x18, 0x9e, 0x84, - 0x9e, 0x18, 0x9e, 0x84, 0x9e, 0x18, 0x9f, 0x84, 0x9f, 0x18, 0x9f, 0x84, - 0x9e, 0x18, 0x9f, 0x84, 0x9f, 0x18, 0xa0, 0x84, 0x9e, 0x18, 0xa0, 0x84, - 0x9f, 0x18, 0xa1, 0x84, 0x9e, 0x18, 0xa1, 0x84, 0x9f, 0x18, 0xa1, 0x84, - 0x9e, 0x18, 0xa2, 0x84, 0x9f, 0x18, 0xa2, 0x84, 0x9e, 0x18, 0xa3, 0x84, - 0x9f, 0x18, 0xa3, 0x84, 0x9e, 0x18, 0xa3, 0x84, 0x9f, 0x18, 0xa4, 0x84, - 0x9e, 0x18, 0xa4, 0x84, 0x9f, 0x18, 0xa5, 0x84, 0x9e, 0x18, 0xa5, 0x84, - 0x9f, 0x18, 0xa5, 0x84, 0x9e, 0x18, 0xa6, 0x84, 0x9f, 0x18, 0xa6, 0x85, - 0xa2, 0x18, 0xa6, 0x84, 0x9f, 0x18, 0xa7, 0x85, 0xa2, 0x18, 0xa7, 0x85, - 0xa2, 0x18, 0xa8, 0x85, 0xa2, 0x18, 0xa8, 0x85, 0xa2, 0x18, 0xa8, 0x85, - 0xa2, 0x18, 0xa9, 0x85, 0xa2, 0x18, 0xa9, 0x85, 0xa2, 0x18, 0xaa, 0x86, - 0xa6, 0x18, 0xaa, 0x86, 0xa6, 0x18, 0xaa, 0x86, 0xa6, 0x18, 0xab, 0x86, - 0xa6, 0x18, 0xab, 0x86, 0xa6, 0x18, 0xab, 0x86, 0xa6, 0x18, 0xac, 0x86, - 0xa6, 0x18, 0xac, 0x86, 0xa6, 0x18, 0xac, 0x86, 0xa6, 0x18, 0xad, 0x86, - 0xa6, 0x18, 0xad, 0x86, 0xa6, 0x18, 0xae, 0x86, 0xa6, 0x18, 0xae, 0x87, - 0xaa, 0x18, 0xae, 0x86, 0xa6, 0x18, 0xaf, 0x87, 0xaa, 0x18, 0xaf, 0x87, - 0xa9, 0x18, 0xaf, 0x87, 0xaa, 0x18, 0xb0, 0x87, 0xa9, 0x18, 0xb0, 0x87, - 0xaa, 0x18, 0xb0, 0x87, 0xa9, 0x18, 0xb1, 0x87, 0xaa, 0x18, 0xb1, 0x88, - 0xad, 0x18, 0xb2, 0x88, 0xad, 0x18, 0xb2, 0x88, 0xad, 0x18, 0xb2, 0x88, - 0xad, 0x18, 0xb3, 0x88, 0xad, 0x18, 0xb3, 0x88, 0xad, 0x18, 0xb3, 0x88, - 0xad, 0x18, 0xb4, 0x88, 0xad, 0x18, 0xb4, 0x88, 0xad, 0x18, 0xb4, 0x88, - 0xad, 0x18, 0xb5, 0x89, 0xb0, 0x18, 0xb5, 0x88, 0xad, 0x18, 0xb5, 0x89, - 0xb0, 0x18, 0xb6, 0x89, 0xb0, 0x18, 0xb6, 0x89, 0xb0, 0x18, 0xb6, 0x89, - 0xb2, 0x18, 0xb7, 0x89, 0xb0, 0x18, 0xb7, 0x89, 0xb2, 0x18, 0xb7, 0x89, - 0xb0, 0x18, 0xb8, 0x89, 0xb2, 0x18, 0xb8, 0x89, 0xb0, 0x18, 0xb8, 0x89, - 0xb2, 0x18, 0xb9, 0x89, 0xb2, 0x18, 0xb9, 0x89, 0xb2, 0x18, 0xb9, 0x89, - 0xb2, 0x18, 0xba, 0x89, 0xb2, 0x18, 0xba, 0x8a, 0xb3, 0x18, 0xba, 0x8a, - 0xb4, 0x18, 0xbb, 0x8b, 0xb7, 0x18, 0xbb, 0x8b, 0xb7, 0x18, 0xbb, 0x8b, - 0xb7, 0x18, 0xbc, 0x8b, 0xb7, 0x18, 0xbc, 0x8b, 0xb7, 0x18, 0xbc, 0x8b, - 0xb7, 0x18, 0xbd, 0x8b, 0xb7, 0x18, 0xbd, 0x8b, 0xb7, 0x18, 0xbd, 0x8b, - 0xb7, 0x18, 0xbe, 0x8b, 0xb7, 0x18, 0xbe, 0x8c, 0xba, 0x18, 0xbe, 0x8b, - 0xb7, 0x18, 0xbf, 0x8c, 0xba, 0x18, 0xbf, 0x8b, 0xb7, 0x18, 0xbf, 0x8c, - 0xba, 0x18, 0xc0, 0x8c, 0xba, 0x18, 0xc0, 0x8c, 0xba, 0x18, 0xc0, 0x8c, - 0xba, 0x18, 0xc1, 0x8c, 0xba, 0x18, 0xc1, 0x8c, 0xba, 0x18, 0xc1, 0x8c, - 0xba, 0x18, 0xc1, 0x8d, 0xbd, 0x18, 0xc2, 0x8c, 0xba, 0x18, 0xc2, 0x8d, - 0xbd, 0x18, 0xc2, 0x8d, 0xbd, 0x18, 0xc3, 0x8d, 0xbd, 0x18, 0xc3, 0x8d, - 0xbd, 0x18, 0xc3, 0x8d, 0xbd, 0x18, 0xc4, 0x8d, 0xbd, 0x18, 0xc4, 0x8d, - 0xbd, 0x18, 0xc4, 0x8e, 0xc0, 0x18, 0xc5, 0x8e, 0xc0, 0x18, 0xc5, 0x8e, - 0xc0, 0x18, 0xc5, 0x8e, 0xc0, 0x18, 0xc6, 0x8e, 0xc0, 0x18, 0xc6, 0x8e, - 0xc0, 0x18, 0xc6, 0x8e, 0xc0, 0x18, 0xc6, 0x8e, 0xc0, 0x18, 0xc7, 0x8e, - 0xc0, 0x18, 0xc7, 0x8e, 0xc0, 0x18, 0xc7, 0x8e, 0xc3, 0x18, 0xc8, 0x8e, - 0xc0, 0x18, 0xc8, 0x8e, 0xc3, 0x18, 0xc8, 0x8e, 0xc0, 0x18, 0xc9, 0x8e, - 0xc3, 0x18, 0xc9, 0x8e, 0xc3, 0x18, 0xc9, 0x8e, 0xc3, 0x18, 0xc9, 0x8e, - 0xc3, 0x18, 0xca, 0x8e, 0xc3, 0x18, 0xca, 0x8f, 0xc6, 0x18, 0xca, 0x8e, - 0xc3, 0x18, 0xcb, 0x8f, 0xc6, 0x18, 0xcb, 0x8e, 0xc3, 0x18, 0xcb, 0x8f, - 0xc6, 0x18, 0xcc, 0x8f, 0xc6, 0x18, 0xcc, 0x8f, 0xc6, 0x18, 0xcc, 0x8f, - 0xc6, 0x18, 0xcc, 0x8f, 0xc6, 0x18, 0xcd, 0x8f, 0xc6, 0x18, 0xcd, 0x8f, - 0xc6, 0x18, 0xcd, 0x90, 0xc9, 0x18, 0xce, 0x90, 0xc9, 0x18, 0xce, 0x90, - 0xc9, 0x18, 0xce, 0x90, 0xc9, 0x18, 0xce, 0x90, 0xc9, 0x18, 0xcf, 0x90, - 0xc9, 0x18, 0xcf, 0x90, 0xc9, 0x18, 0xcf, 0x90, 0xc9, 0x18, 0xd0, 0x90, - 0xc9, 0x18, 0xd0, 0x90, 0xc9, 0x18, 0xd0, 0x91, 0xcc, 0x18, 0xd0, 0x90, - 0xc9, 0x18, 0xd1, 0x91, 0xcc, 0x18, 0xd1, 0x90, 0xc9, 0x18, 0xd1, 0x91, - 0xcc, 0x18, 0xd2, 0x91, 0xcb, 0x18, 0xd2, 0x91, 0xcc, 0x18, 0xd2, 0x91, - 0xcb, 0x18, 0xd2, 0x91, 0xcc, 0x18, 0xd3, 0x92, 0xce, 0x18, 0xd3, 0x92, - 0xce, 0x18, 0xd3, 0x92, 0xce, 0x18, 0xd4, 0x92, 0xce, 0x18, 0xd4, 0x92, - 0xce, 0x18, 0xd4, 0x92, 0xce, 0x18, 0xd4, 0x92, 0xce, 0x18, 0xd5, 0x92, - 0xce, 0x18, 0xd5, 0x92, 0xce, 0x18, 0xd5, 0x92, 0xce, 0x18, 0xd6, 0x93, - 0xd1, 0x18, 0xd6, 0x92, 0xce, 0x18, 0xd6, 0x93, 0xd1, 0x18, 0xd6, 0x92, - 0xce, 0x18, 0xd7, 0x93, 0xd1, 0x18, 0xd7, 0x93, 0xd1, 0x18, 0xd7, 0x93, - 0xd1, 0x18, 0xd7, 0x93, 0xd1, 0x18, 0xd8, 0x93, 0xd1, 0x18, 0xd8, 0x94, - 0xd4, 0x18, 0xd8, 0x93, 0xd1, 0x18, 0xd9, 0x94, 0xd4, 0x18, 0xd9, 0x93, - 0xd1, 0x18, 0xd9, 0x94, 0xd4, 0x18, 0xd9, 0x94, 0xd3, 0x18, 0xda, 0x94, - 0xd4, 0x18, 0xda, 0x94, 0xd3, 0x18, 0xda, 0x94, 0xd4, 0x18, 0xda, 0x95, - 0xd6, 0x18, 0xdb, 0x95, 0xd6, 0x18, 0xdb, 0x95, 0xd6, 0x18, 0xdb, 0x95, - 0xd6, 0x18, 0xdb, 0x95, 0xd6, 0x18, 0xdc, 0x95, 0xd6, 0x18, 0xdc, 0x95, - 0xd6, 0x18, 0xdc, 0x95, 0xd6, 0x18, 0xdd, 0x95, 0xd6, 0x18, 0xdd, 0x95, - 0xd6, 0x18, 0xdd, 0x95, 0xd6, 0x18, 0xdd, 0x95, 0xd6, 0x18, 0xde, 0x96, - 0xd9, 0x18, 0xde, 0x95, 0xd6, 0x18, 0xde, 0x96, 0xd9, 0x18, 0xde, 0x95, - 0xd6, 0x18, 0xdf, 0x96, 0xd9, 0x18, 0xdf, 0x96, 0xd9, 0x18, 0xdf, 0x96, - 0xd9, 0x18, 0xdf, 0x96, 0xd9, 0x18, 0xe0, 0x96, 0xd9, 0x18, 0xe0, 0x97, - 0xdb, 0x18, 0xe0, 0x96, 0xd9, 0x18, 0xe1, 0x97, 0xdb, 0x18, 0xe1, 0x96, - 0xd9, 0x18, 0xe1, 0x97, 0xdb, 0x18, 0xe1, 0x97, 0xdb, 0x18, 0xe2, 0x97, - 0xdb, 0x18, 0xe2, 0x97, 0xdb, 0x18, 0xe2, 0x97, 0xdb, 0x18, 0xe2, 0x98, - 0xde, 0x18, 0xe3, 0x98, 0xde, 0x18, 0xe3, 0x98, 0xde, 0x18, 0xe3, 0x98, - 0xde, 0x18, 0xe3, 0x98, 0xde, 0x18, 0xe4, 0x98, 0xde, 0x18, 0xe4, 0x98, - 0xde, 0x18, 0xe4, 0x98, 0xde, 0x18, 0xe4, 0x98, 0xde, 0x18, 0xe5, 0x98, - 0xde, 0x18, 0xe5, 0x98, 0xe0, 0x18, 0xe5, 0x98, 0xde, 0x18, 0xe5, 0x98, - 0xe0, 0x18, 0xe6, 0x98, 0xde, 0x18, 0xe6, 0x98, 0xe0, 0x18, 0xe6, 0x98, - 0xde, 0x18, 0xe6, 0x98, 0xe0, 0x18, 0xe7, 0x98, 0xe0, 0x18, 0xe7, 0x98, - 0xe0, 0x18, 0xe7, 0x98, 0xe0, 0x18, 0xe7, 0x98, 0xe0, 0x18, 0xe8, 0x99, - 0xe3, 0x18, 0xe8, 0x98, 0xe0, 0x18, 0xe8, 0x99, 0xe3, 0x18, 0xe8, 0x98, - 0xe0, 0x18, 0xe9, 0x99, 0xe3, 0x18, 0xe9, 0x99, 0xe2, 0x18, 0xe9, 0x99, - 0xe3, 0x18, 0xe9, 0x99, 0xe2, 0x18, 0xea, 0x99, 0xe3, 0x18, 0xea, 0x9a, - 0xe5, 0x18, 0xea, 0x9a, 0xe5, 0x18, 0xea, 0x9a, 0xe5, 0x18, 0xeb, 0x9a, - 0xe5, 0x18, 0xeb, 0x9a, 0xe5, 0x18, 0xeb, 0x9a, 0xe5, 0x18, 0xeb, 0x9a, - 0xe5, 0x18, 0xec, 0x9a, 0xe5, 0x18, 0xec, 0x9a, 0xe5, 0x18, 0xec, 0x9a, - 0xe5, 0x18, 0xec, 0x9b, 0xe7, 0x18, 0xec, 0x9a, 0xe5, 0x18, 0xed, 0x9b, - 0xe7, 0x18, 0xed, 0x9a, 0xe5, 0x18, 0xed, 0x9b, 0xe7, 0x18, 0xed, 0x9b, - 0xe7, 0x18, 0xee, 0x9b, 0xe7, 0x18, 0xee, 0x9b, 0xe7, 0x18, 0xee, 0x9b, - 0xe7, 0x18, 0xee, 0x9c, 0xea, 0x18, 0xef, 0x9c, 0xea, 0x18, 0xef, 0x9c, - 0xea, 0x18, 0xef, 0x9c, 0xea, 0x18, 0xef, 0x9c, 0xea, 0x18, 0xf0, 0x9c, - 0xea, 0x18, 0xf0, 0x9c, 0xea, 0x18, 0xf0, 0x9c, 0xea, 0x18, 0xf0, 0x9c, - 0xea, 0x18, 0xf1, 0x9c, 0xea, 0x18, 0xf1, 0x9d, 0xec, 0x18, 0xf1, 0x9c, - 0xea, 0x18, 0xf1, 0x9d, 0xec, 0x18, 0xf2, 0x9c, 0xea, 0x18, 0xf2, 0x9d, - 0xec, 0x18, 0xf2, 0x9c, 0xea, 0x18, 0xf2, 0x9d, 0xec, 0x18, 0xf2, 0x9d, - 0xec, 0x18, 0xf3, 0x9d, 0xec, 0x18, 0xf3, 0x9d, 0xee, 0x18, 0xf3, 0x9d, - 0xec, 0x18, 0xf3, 0x9d, 0xee, 0x18, 0xf4, 0x9d, 0xec, 0x18, 0xf4, 0x9d, - 0xee, 0x18, 0xf4, 0x9d, 0xec, 0x18, 0xf4, 0x9d, 0xee, 0x18, 0xf5, 0x9d, - 0xee, 0x18, 0xf5, 0x9d, 0xee, 0x18, 0xf5, 0x9d, 0xee, 0x18, 0xf5, 0x9d, - 0xee, 0x18, 0xf5, 0x9e, 0xf0, 0x18, 0xf6, 0x9e, 0xf1, 0x18, 0xf6, 0x9e, - 0xf0, 0x18, 0xf6, 0x9e, 0xf1, 0x18, 0xf6, 0x9e, 0xf0, 0x18, 0xf7, 0x9e, - 0xf1, 0x18, 0xf7, 0x9e, 0xf0, 0x18, 0xf7, 0x9e, 0xf1, 0x18, 0xf7, 0x9e, - 0xf0, 0x18, 0xf8, 0x9e, 0xf1, 0x18, 0xf8, 0x9f, 0xf3, 0x18, 0xf8, 0x9e, - 0xf1, 0x18, 0xf8, 0x9f, 0xf3, 0x18, 0xf8, 0x9e, 0xf1, 0x18, 0xf9, 0x9f, - 0xf3, 0x18, 0xf9, 0x9e, 0xf1, 0x18, 0xf9, 0x9f, 0xf3, 0x18, 0xf9, 0x9f, - 0xf2, 0x18, 0xfa, 0x9f, 0xf3, 0x18, 0xfa, 0xa0, 0xf5, 0x18, 0xfa, 0x9f, - 0xf3, 0x18, 0xfa, 0xa0, 0xf5, 0x18, 0xfa, 0x9f, 0xf3, 0x18, 0xfb, 0xa0, - 0xf5, 0x18, 0xfb, 0x9f, 0xf3, 0x18, 0xfb, 0xa0, 0xf5, 0x18, 0xfb, 0xa0, - 0xf5, 0x18, 0xfc, 0xa0, 0xf5, 0x18, 0xfc, 0xa1, 0xf7, 0x18, 0xfc, 0xa1, - 0xf7, 0x18, 0xfc, 0xa1, 0xf7, 0x18, 0xfc, 0xa1, 0xf7, 0x18, 0xfd, 0xa1, - 0xf7, 0x18, 0xfd, 0xa1, 0xf7, 0x18, 0xfd, 0xa1, 0xf7, 0x18, 0xfd, 0xa1, - 0xf7, 0x18, 0xfe, 0xa1, 0xf7, 0x18, 0xfe, 0xa1, 0xf7, 0x18, 0xfe, 0xa1, - 0xf7, 0x18, 0xfe, 0xa1, 0xf7, 0x18, 0xfe, 0xa1, 0xf9, 0x18, 0xff, 0xa1, - 0xf7, 0x18, 0xff, 0xa1, 0xf9, 0x18, 0x03, 0x83, 0x9b, 0x18, 0x0a, 0x83, - 0x9b, 0x18, 0x0f, 0x83, 0x9b, 0x18, 0x14, 0x83, 0x9b, 0x18, 0x17, 0x83, - 0x9b, 0x18, 0x1b, 0x83, 0x9b, 0x18, 0x1e, 0x83, 0x9b, 0x18, 0x20, 0x83, - 0x9c, 0x18, 0x23, 0x83, 0x9b, 0x18, 0x25, 0x83, 0x9c, 0x18, 0x27, 0x83, - 0x9b, 0x18, 0x29, 0x83, 0x9c, 0x18, 0x2b, 0x83, 0x9b, 0x18, 0x2d, 0x83, - 0x9c, 0x18, 0x2f, 0x83, 0x9b, 0x18, 0x31, 0x83, 0x9c, 0x18, 0x32, 0x83, - 0x9b, 0x18, 0x34, 0x83, 0x9c, 0x18, 0x35, 0x83, 0x9b, 0x18, 0x37, 0x83, - 0x9c, 0x18, 0x38, 0x83, 0x9b, 0x18, 0x3a, 0x83, 0x9c, 0x18, 0x3b, 0x83, - 0x9b, 0x18, 0x3c, 0x83, 0x9c, 0x18, 0x3e, 0x83, 0x9b, 0x18, 0x3f, 0x83, - 0x9c, 0x18, 0x40, 0x83, 0x9b, 0x18, 0x42, 0x83, 0x9c, 0x18, 0x43, 0x83, - 0x9b, 0x18, 0x44, 0x83, 0x9c, 0x18, 0x45, 0x83, 0x9b, 0x18, 0x46, 0x83, - 0x9c, 0x18, 0x47, 0x83, 0x9b, 0x18, 0x48, 0x83, 0x9c, 0x18, 0x49, 0x83, - 0x9b, 0x18, 0x4a, 0x83, 0x9c, 0x18, 0x4b, 0x83, 0x9b, 0x18, 0x4c, 0x83, - 0x9c, 0x18, 0x4d, 0x83, 0x9b, 0x18, 0x4e, 0x83, 0x9c, 0x18, 0x4f, 0x83, - 0x9b, 0x18, 0x50, 0x83, 0x9c, 0x18, 0x51, 0x83, 0x9b, 0x18, 0x52, 0x83, - 0x9c, 0x18, 0x53, 0x83, 0x9b, 0x18, 0x54, 0x83, 0x9c, 0x18, 0x55, 0x83, - 0x9b, 0x18, 0x56, 0x83, 0x9c, 0x18, 0x57, 0x83, 0x9b, 0x18, 0x58, 0x83, - 0x9c, 0x18, 0x58, 0x83, 0x9b, 0x18, 0x59, 0x83, 0x9c, 0x18, 0x5a, 0x83, - 0x9b, 0x18, 0x5b, 0x83, 0x9c, 0x18, 0x5c, 0x83, 0x9b, 0x18, 0x5d, 0x83, - 0x9c, 0x18, 0x5d, 0x83, 0x9b, 0x18, 0x5e, 0x83, 0x9c, 0x18, 0x5f, 0x83, - 0x9b, 0x18, 0x60, 0x83, 0x9c, 0x18, 0x60, 0x83, 0x9b, 0x18, 0x61, 0x83, - 0x9c, 0x18, 0x62, 0x83, 0x9b, 0x18, 0x63, 0x83, 0x9c, 0x18, 0x63, 0x83, - 0x9b, 0x18, 0x64, 0x83, 0x9c, 0x18, 0x65, 0x83, 0x9b, 0x18, 0x66, 0x83, - 0x9c, 0x18, 0x66, 0x83, 0x9b, 0x18, 0x67, 0x83, 0x9c, 0x18, 0x68, 0x83, - 0x9b, 0x18, 0x68, 0x83, 0x9c, 0x18, 0x69, 0x83, 0x9b, 0x18, 0x6a, 0x83, - 0x9c, 0x18, 0x6a, 0x83, 0x9b, 0x18, 0x6b, 0x83, 0x9c, 0x18, 0x6c, 0x83, - 0x9b, 0x18, 0x6c, 0x83, 0x9c, 0x18, 0x6d, 0x83, 0x9b, 0x18, 0x6e, 0x83, - 0x9c, 0x18, 0x6e, 0x83, 0x9b, 0x18, 0x6f, 0x83, 0x9c, 0x18, 0x70, 0x83, - 0x9b, 0x18, 0x70, 0x83, 0x9c, 0x18, 0x71, 0x83, 0x9b, 0x18, 0x72, 0x83, - 0x9c, 0x18, 0x72, 0x83, 0x9b, 0x18, 0x73, 0x83, 0x9c, 0x18, 0x73, 0x83, - 0x9b, 0x18, 0x74, 0x83, 0x9c, 0x18, 0x75, 0x83, 0x9b, 0x18, 0x75, 0x83, - 0x9c, 0x18, 0x76, 0x83, 0x9b, 0x18, 0x76, 0x83, 0x9c, 0x18, 0x77, 0x83, - 0x9b, 0x18, 0x78, 0x83, 0x9c, 0x18, 0x78, 0x83, 0x9b, 0x18, 0x79, 0x83, - 0x9c, 0x18, 0x79, 0x83, 0x9b, 0x18, 0x7a, 0x83, 0x9c, 0x18, 0x7a, 0x83, - 0x9b, 0x18, 0x7b, 0x83, 0x9c, 0x18, 0x7c, 0x83, 0x9b, 0x18, 0x7c, 0x83, - 0x9c, 0x18, 0x7d, 0x83, 0x9b, 0x18, 0x7d, 0x83, 0x9c, 0x18, 0x7e, 0x83, - 0x9b, 0x18, 0x7e, 0x83, 0x9c, 0x18, 0x7f, 0x83, 0x9b, 0x18, 0x7f, 0x83, - 0x9c, 0x18, 0x80, 0x83, 0x9b, 0x18, 0x81, 0x83, 0x9c, 0x18, 0x81, 0x83, - 0x9b, 0x18, 0x82, 0x83, 0x9c, 0x18, 0x82, 0x83, 0x9b, 0x18, 0x83, 0x83, - 0x9c, 0x18, 0x83, 0x83, 0x9b, 0x18, 0x84, 0x83, 0x9c, 0x18, 0x84, 0x83, - 0x9b, 0x18, 0x85, 0x83, 0x9c, 0x18, 0x85, 0x83, 0x9b, 0x18, 0x86, 0x83, - 0x9c, 0x18, 0x86, 0x83, 0x9b, 0x18, 0x87, 0x83, 0x9c, 0x18, 0x87, 0x83, - 0x9b, 0x18, 0x88, 0x83, 0x9c, 0x18, 0x88, 0x83, 0x9b, 0x18, 0x89, 0x83, - 0x9c, 0x18, 0x89, 0x83, 0x9b, 0x18, 0x8a, 0x83, 0x9c, 0x18, 0x8a, 0x83, - 0x9b, 0x18, 0x8b, 0x83, 0x9c, 0x18, 0x8b, 0x83, 0x9b, 0x18, 0x8c, 0x83, - 0x9c, 0x18, 0x8c, 0x83, 0x9b, 0x18, 0x8d, 0x83, 0x9c, 0x18, 0x8d, 0x83, - 0x9b, 0x18, 0x8e, 0x83, 0x9c, 0x18, 0x8e, 0x83, 0x9b, 0x18, 0x8e, 0x83, - 0x9c, 0x18, 0x8f, 0x83, 0x9b, 0x18, 0x8f, 0x83, 0x9c, 0x18, 0x90, 0x83, - 0x9b, 0x18, 0x90, 0x83, 0x9c, 0x18, 0x91, 0x83, 0x9b, 0x18, 0x91, 0x83, - 0x9c, 0x18, 0x92, 0x83, 0x9b, 0x18, 0x92, 0x83, 0x9c, 0x18, 0x93, 0x83, - 0x9b, 0x18, 0x93, 0x83, 0x9c, 0x18, 0x94, 0x83, 0x9b, 0x18, 0x94, 0x83, - 0x9c, 0x18, 0x94, 0x83, 0x9b, 0x18, 0x95, 0x83, 0x9c, 0x18, 0x95, 0x83, - 0x9b, 0x18, 0x96, 0x83, 0x9c, 0x18, 0x96, 0x83, 0x9b, 0x18, 0x97, 0x83, - 0x9c, 0x18, 0x97, 0x83, 0x9b, 0x18, 0x98, 0x83, 0x9c, 0x18, 0x98, 0x83, - 0x9b, 0x18, 0x98, 0x83, 0x9c, 0x18, 0x99, 0x83, 0x9b, 0x18, 0x99, 0x83, - 0x9c, 0x18, 0x9a, 0x83, 0x9b, 0x18, 0x9a, 0x83, 0x9c, 0x18, 0x9a, 0x83, - 0x9b, 0x18, 0x9b, 0x83, 0x9c, 0x18, 0x9b, 0x83, 0x9b, 0x18, 0x9c, 0x83, - 0x9c, 0x18, 0x9c, 0x83, 0x9c, 0x18, 0x9d, 0x83, 0x9d, 0x18, 0x9d, 0x83, - 0x9c, 0x18, 0x9d, 0x83, 0x9d, 0x18, 0x9e, 0x83, 0x9c, 0x18, 0x9e, 0x83, - 0x9d, 0x18, 0x9f, 0x83, 0x9c, 0x18, 0x9f, 0x83, 0x9d, 0x18, 0x9f, 0x83, - 0x9c, 0x18, 0xa0, 0x83, 0x9d, 0x18, 0xa0, 0x83, 0x9c, 0x18, 0xa1, 0x83, - 0x9d, 0x18, 0xa1, 0x83, 0x9c, 0x18, 0xa1, 0x83, 0x9d, 0x18, 0xa2, 0x83, - 0x9c, 0x18, 0xa2, 0x83, 0x9d, 0x18, 0xa3, 0x83, 0x9c, 0x18, 0xa3, 0x83, - 0x9d, 0x18, 0xa3, 0x83, 0x9c, 0x18, 0xa4, 0x83, 0x9d, 0x18, 0xa4, 0x84, - 0xa0, 0x18, 0xa5, 0x84, 0xa1, 0x18, 0xa5, 0x84, 0xa0, 0x18, 0xa5, 0x84, - 0xa1, 0x18, 0xa6, 0x84, 0xa0, 0x18, 0xa6, 0x84, 0xa1, 0x18, 0xa6, 0x84, - 0xa0, 0x18, 0xa7, 0x84, 0xa1, 0x18, 0xa7, 0x84, 0xa0, 0x18, 0xa8, 0x84, - 0xa1, 0x18, 0xa8, 0x85, 0xa4, 0x18, 0xa8, 0x84, 0xa1, 0x18, 0xa9, 0x85, - 0xa4, 0x18, 0xa9, 0x85, 0xa4, 0x18, 0xaa, 0x85, 0xa4, 0x18, 0xaa, 0x85, - 0xa4, 0x18, 0xaa, 0x85, 0xa4, 0x18, 0xab, 0x85, 0xa4, 0x18, 0xab, 0x85, - 0xa4, 0x18, 0xab, 0x86, 0xa8, 0x18, 0xac, 0x85, 0xa4, 0x18, 0xac, 0x86, - 0xa8, 0x18, 0xac, 0x85, 0xa4, 0x18, 0xad, 0x86, 0xa8, 0x18, 0xad, 0x86, - 0xa7, 0x18, 0xae, 0x86, 0xa8, 0x18, 0xae, 0x86, 0xa7, 0x18, 0xae, 0x86, - 0xa8, 0x18, 0xaf, 0x86, 0xa7, 0x18, 0xaf, 0x86, 0xa8, 0x18, 0xaf, 0x87, - 0xab, 0x18, 0xb0, 0x87, 0xab, 0x18, 0xb0, 0x87, 0xab, 0x18, 0xb0, 0x87, - 0xab, 0x18, 0xb1, 0x87, 0xab, 0x18, 0xb1, 0x87, 0xab, 0x18, 0xb2, 0x87, - 0xab, 0x18, 0xb2, 0x87, 0xab, 0x18, 0xb2, 0x87, 0xab, 0x18, 0xb3, 0x87, - 0xab, 0x18, 0xb3, 0x88, 0xaf, 0x18, 0xb3, 0x87, 0xab, 0x18, 0xb4, 0x88, - 0xaf, 0x18, 0xb4, 0x88, 0xae, 0x18, 0xb4, 0x88, 0xaf, 0x18, 0xb5, 0x88, - 0xae, 0x18, 0xb5, 0x88, 0xaf, 0x18, 0xb5, 0x88, 0xae, 0x18, 0xb6, 0x88, - 0xaf, 0x18, 0xb6, 0x89, 0xb2, 0x18, 0xb6, 0x89, 0xb2, 0x18, 0xb7, 0x89, - 0xb2, 0x18, 0xb7, 0x89, 0xb2, 0x18, 0xb7, 0x89, 0xb2, 0x18, 0xb8, 0x89, - 0xb2, 0x18, 0xb8, 0x89, 0xb2, 0x18, 0xb8, 0x89, 0xb2, 0x18, 0xb9, 0x89, - 0xb2, 0x18, 0xb9, 0x89, 0xb2, 0x18, 0xb9, 0x8a, 0xb5, 0x18, 0xba, 0x89, - 0xb2, 0x18, 0xba, 0x8a, 0xb5, 0x18, 0xba, 0x89, 0xb2, 0x18, 0xbb, 0x8a, - 0xb5, 0x18, 0xbb, 0x8a, 0xb5, 0x18, 0xbb, 0x8a, 0xb5, 0x18, 0xbc, 0x8a, - 0xb5, 0x18, 0xbc, 0x8a, 0xb5, 0x18, 0xbc, 0x8b, 0xb8, 0x18, 0xbd, 0x8a, - 0xb5, 0x18, 0xbd, 0x8b, 0xb8, 0x18, 0xbd, 0x8a, 0xb5, 0x18, 0xbe, 0x8b, - 0xb8, 0x18, 0xbe, 0x8b, 0xb8, 0x18, 0xbe, 0x8b, 0xb8, 0x18, 0xbf, 0x8b, - 0xb8, 0x18, 0xbf, 0x8b, 0xb8, 0x18, 0xbf, 0x8c, 0xbb, 0x18, 0xc0, 0x8c, - 0xbc, 0x18, 0xc0, 0x8c, 0xbb, 0x18, 0xc0, 0x8c, 0xbc, 0x18, 0xc1, 0x8c, - 0xbb, 0x18, 0xc1, 0x8c, 0xbc, 0x18, 0xc1, 0x8c, 0xbb, 0x18, 0xc1, 0x8c, - 0xbc, 0x18, 0xc2, 0x8c, 0xbb, 0x18, 0xc2, 0x8c, 0xbc, 0x18, 0xc2, 0x8c, - 0xbb, 0x18, 0xc3, 0x8c, 0xbc, 0x18, 0xc3, 0x8d, 0xbf, 0x18, 0xc3, 0x8c, - 0xbc, 0x18, 0xc4, 0x8d, 0xbf, 0x18, 0xc4, 0x8d, 0xbe, 0x18, 0xc4, 0x8d, - 0xbf, 0x18, 0xc5, 0x8d, 0xbe, 0x18, 0xc5, 0x8d, 0xbf, 0x18, 0xc5, 0x8d, - 0xbe, 0x18, 0xc6, 0x8d, 0xbf, 0x18, 0xc6, 0x8e, 0xc1, 0x18, 0xc6, 0x8d, - 0xbf, 0x18, 0xc6, 0x8e, 0xc1, 0x18, 0xc7, 0x8d, 0xbf, 0x18, 0xc7, 0x8e, - 0xc1, 0x18, 0xc7, 0x8e, 0xc1, 0x18, 0xc8, 0x8e, 0xc1, 0x18, 0xc8, 0x8e, - 0xc1, 0x18, 0xc8, 0x8e, 0xc1, 0x18, 0xc9, 0x8f, 0xc4, 0x18, 0xc9, 0x8f, - 0xc5, 0x18, 0xc9, 0x8f, 0xc4, 0x18, 0xc9, 0x8f, 0xc5, 0x18, 0xca, 0x8f, - 0xc4, 0x18, 0xca, 0x8f, 0xc5, 0x18, 0xca, 0x8f, 0xc4, 0x18, 0xcb, 0x8f, - 0xc5, 0x18, 0xcb, 0x8f, 0xc4, 0x18, 0xcb, 0x8f, 0xc5, 0x18, 0xcc, 0x90, - 0xc7, 0x18, 0xcc, 0x8f, 0xc5, 0x18, 0xcc, 0x90, 0xc7, 0x18, 0xcc, 0x8f, - 0xc5, 0x18, 0xcd, 0x90, 0xc7, 0x18, 0xcd, 0x90, 0xc7, 0x18, 0xcd, 0x90, - 0xc7, 0x18, 0xce, 0x90, 0xc7, 0x18, 0xce, 0x90, 0xc7, 0x18, 0xce, 0x90, - 0xc7, 0x18, 0xce, 0x90, 0xc7, 0x18, 0xcf, 0x91, 0xca, 0x18, 0xcf, 0x90, - 0xc7, 0x18, 0xcf, 0x91, 0xca, 0x18, 0xd0, 0x91, 0xca, 0x18, 0xd0, 0x91, - 0xca, 0x18, 0xd0, 0x91, 0xca, 0x18, 0xd0, 0x91, 0xca, 0x18, 0xd1, 0x91, - 0xca, 0x18, 0xd1, 0x91, 0xca, 0x18, 0xd1, 0x92, 0xcd, 0x18, 0xd2, 0x92, - 0xcd, 0x18, 0xd2, 0x92, 0xcd, 0x18, 0xd2, 0x92, 0xcd, 0x18, 0xd2, 0x92, - 0xcd, 0x18, 0xd3, 0x92, 0xcd, 0x18, 0xd3, 0x92, 0xcd, 0x18, 0xd3, 0x92, - 0xcd, 0x18, 0xd4, 0x92, 0xcd, 0x18, 0xd4, 0x92, 0xcd, 0x18, 0xd4, 0x93, - 0xd0, 0x18, 0xd4, 0x92, 0xcd, 0x18, 0xd5, 0x93, 0xd0, 0x18, 0xd5, 0x92, - 0xcd, 0x18, 0xd5, 0x93, 0xd0, 0x18, 0xd6, 0x93, 0xcf, 0x18, 0xd6, 0x93, - 0xd0, 0x18, 0xd6, 0x93, 0xcf, 0x18, 0xd6, 0x93, 0xd0, 0x18, 0xd7, 0x94, - 0xd2, 0x18, 0xd7, 0x94, 0xd2, 0x18, 0xd7, 0x94, 0xd2, 0x18, 0xd7, 0x94, - 0xd2, 0x18, 0xd8, 0x94, 0xd2, 0x18, 0xd8, 0x94, 0xd2, 0x18, 0xd8, 0x94, - 0xd2, 0x18, 0xd9, 0x94, 0xd2, 0x18, 0xd9, 0x94, 0xd2, 0x18, 0xd9, 0x94, - 0xd2, 0x18, 0xd9, 0x94, 0xd5, 0x18, 0xda, 0x94, 0xd2, 0x18, 0xda, 0x94, - 0xd5, 0x18, 0xda, 0x94, 0xd2, 0x18, 0xda, 0x94, 0xd5, 0x18, 0xdb, 0x94, - 0xd5, 0x18, 0xdb, 0x94, 0xd5, 0x18, 0xdb, 0x94, 0xd5, 0x18, 0xdb, 0x94, - 0xd5, 0x18, 0xdc, 0x95, 0xd7, 0x18, 0xdc, 0x94, 0xd5, 0x18, 0xdc, 0x95, - 0xd7, 0x18, 0xdd, 0x94, 0xd5, 0x18, 0xdd, 0x95, 0xd7, 0x18, 0xdd, 0x94, - 0xd5, 0x18, 0xdd, 0x95, 0xd7, 0x18, 0xde, 0x95, 0xd7, 0x18, 0xde, 0x95, - 0xd7, 0x18, 0xde, 0x95, 0xd7, 0x18, 0xde, 0x95, 0xd7, 0x18, 0xdf, 0x96, - 0xda, 0x18, 0xdf, 0x96, 0xda, 0x18, 0xdf, 0x96, 0xda, 0x18, 0xdf, 0x96, - 0xda, 0x18, 0xe0, 0x96, 0xda, 0x18, 0xe0, 0x96, 0xda, 0x18, 0xe0, 0x96, - 0xda, 0x18, 0xe1, 0x96, 0xda, 0x18, 0xe1, 0x96, 0xda, 0x18, 0xe1, 0x96, - 0xda, 0x18, 0xe1, 0x97, 0xdd, 0x18, 0xe2, 0x96, 0xda, 0x18, 0xe2, 0x97, - 0xdd, 0x18, 0xe2, 0x96, 0xda, 0x18, 0xe2, 0x97, 0xdd, 0x18, 0xe3, 0x97, - 0xdc, 0x18, 0xe3, 0x97, 0xdd, 0x18, 0xe3, 0x97, 0xdc, 0x18, 0xe3, 0x97, - 0xdd, 0x18, 0xe4, 0x98, 0xdf, 0x18, 0xe4, 0x97, 0xdd, 0x18, 0xe4, 0x98, - 0xdf, 0x18, 0xe4, 0x97, 0xdd, 0x18, 0xe5, 0x98, 0xdf, 0x18, 0xe5, 0x98, - 0xdf, 0x18, 0xe5, 0x98, 0xdf, 0x18, 0xe5, 0x98, 0xdf, 0x18, 0xe6, 0x98, - 0xdf, 0x18, 0xe6, 0x99, 0xe1, 0x18, 0xe6, 0x99, 0xe2, 0x18, 0xe6, 0x99, - 0xe1, 0x18, 0xe7, 0x99, 0xe2, 0x18, 0xe7, 0x99, 0xe1, 0x18, 0xe7, 0x99, - 0xe2, 0x18, 0xe7, 0x99, 0xe1, 0x18, 0xe8, 0x99, 0xe2, 0x18, 0xe8, 0x99, - 0xe1, 0x18, 0xe8, 0x99, 0xe2, 0x18, 0xe8, 0x99, 0xe1, 0x18, 0xe9, 0x99, - 0xe2, 0x18, 0xe9, 0x9a, 0xe4, 0x18, 0xe9, 0x99, 0xe2, 0x18, 0xe9, 0x9a, - 0xe4, 0x18, 0xea, 0x99, 0xe2, 0x18, 0xea, 0x9a, 0xe4, 0x18, 0xea, 0x9a, - 0xe4, 0x18, 0xea, 0x9a, 0xe4, 0x18, 0xeb, 0x9a, 0xe4, 0x18, 0xeb, 0x9a, - 0xe4, 0x18, 0xeb, 0x9a, 0xe6, 0x18, 0xeb, 0x9a, 0xe4, 0x18, 0xec, 0x9a, - 0xe6, 0x18, 0xec, 0x9a, 0xe4, 0x18, 0xec, 0x9a, 0xe6, 0x18, 0xec, 0x9a, - 0xe6, 0x18, 0xec, 0x9a, 0xe6, 0x18, 0xed, 0x9a, 0xe6, 0x18, 0xed, 0x9a, - 0xe6, 0x18, 0xed, 0x9b, 0xe8, 0x18, 0xed, 0x9b, 0xe9, 0x18, 0xee, 0x9b, - 0xe8, 0x18, 0xee, 0x9b, 0xe9, 0x18, 0xee, 0x9b, 0xe8, 0x18, 0xee, 0x9b, - 0xe9, 0x18, 0xef, 0x9b, 0xe8, 0x18, 0xef, 0x9b, 0xe9, 0x18, 0xef, 0x9b, - 0xe8, 0x18, 0xef, 0x9b, 0xe9, 0x18, 0xf0, 0x9c, 0xeb, 0x18, 0xf0, 0x9b, - 0xe9, 0x18, 0xf0, 0x9c, 0xeb, 0x18, 0xf0, 0x9b, 0xe9, 0x18, 0xf1, 0x9c, - 0xeb, 0x18, 0xf1, 0x9b, 0xe9, 0x18, 0xf1, 0x9c, 0xeb, 0x18, 0xf1, 0x9c, - 0xeb, 0x18, 0xf2, 0x9c, 0xeb, 0x18, 0xf2, 0x9d, 0xed, 0x18, 0xf2, 0x9d, - 0xed, 0x18, 0xf2, 0x9d, 0xed, 0x18, 0xf2, 0x9d, 0xed, 0x18, 0xf3, 0x9d, - 0xed, 0x18, 0xf3, 0x9d, 0xed, 0x18, 0xf3, 0x9d, 0xed, 0x18, 0xf3, 0x9d, - 0xed, 0x18, 0xf4, 0x9d, 0xed, 0x18, 0xf4, 0x9d, 0xed, 0x18, 0xf4, 0x9e, - 0xef, 0x18, 0xf4, 0x9d, 0xed, 0x18, 0xf5, 0x9e, 0xef, 0x18, 0xf5, 0x9d, - 0xed, 0x18, 0xf5, 0x9e, 0xef, 0x18, 0xf5, 0x9d, 0xed, 0x18, 0xf5, 0x9e, - 0xef, 0x18, 0xf6, 0x9e, 0xef, 0x18, 0xf6, 0x9e, 0xef, 0x18, 0xf6, 0x9e, - 0xef, 0x18, 0xf6, 0x9e, 0xef, 0x18, 0xf7, 0x9f, 0xf2, 0x18, 0xf7, 0x9e, - 0xef, 0x18, 0xf7, 0x9f, 0xf2, 0x18, 0xf7, 0x9e, 0xef, 0x18, 0xf8, 0x9f, - 0xf2, 0x18, 0xf8, 0x9f, 0xf1, 0x18, 0xf8, 0x9f, 0xf2, 0x18, 0xf8, 0x9f, - 0xf1, 0x18, 0xf8, 0x9f, 0xf2, 0x18, 0xf9, 0x9f, 0xf4, 0x18, 0xf9, 0x9f, - 0xf4, 0x18, 0xf9, 0x9f, 0xf4, 0x18, 0xf9, 0x9f, 0xf4, 0x18, 0xfa, 0x9f, - 0xf4, 0x18, 0xfa, 0x9f, 0xf4, 0x18, 0xfa, 0x9f, 0xf4, 0x18, 0xfa, 0x9f, - 0xf4, 0x18, 0xfa, 0x9f, 0xf4, 0x18, 0xfb, 0x9f, 0xf4, 0x18, 0xfb, 0xa0, - 0xf6, 0x18, 0xfb, 0x9f, 0xf4, 0x18, 0xfb, 0xa0, 0xf6, 0x18, 0xfc, 0x9f, - 0xf4, 0x18, 0xfc, 0xa0, 0xf6, 0x18, 0xfc, 0x9f, 0xf4, 0x18, 0xfc, 0xa0, - 0xf6, 0x18, 0xfc, 0xa0, 0xf6, 0x18, 0xfd, 0xa0, 0xf6, 0x18, 0xfd, 0xa1, - 0xf8, 0x18, 0xfd, 0xa0, 0xf6, 0x18, 0xfd, 0xa1, 0xf8, 0x18, 0xfe, 0xa0, - 0xf6, 0x18, 0xfe, 0xa1, 0xf8, 0x18, 0xfe, 0xa0, 0xf6, 0x18, 0xfe, 0xa1, - 0xf8, 0x18, 0xfe, 0xa1, 0xf8, 0x18, 0xff, 0xa1, 0xf8, 0x18, 0xff, 0xa1, - 0xf8, 0x18, 0x03, 0x84, 0x9b, 0x19, 0x0a, 0x84, 0x9b, 0x19, 0x0f, 0x84, - 0x9b, 0x19, 0x14, 0x84, 0x9b, 0x19, 0x17, 0x84, 0x9b, 0x19, 0x1b, 0x84, - 0x9b, 0x19, 0x1e, 0x84, 0x9b, 0x19, 0x20, 0x86, 0x9b, 0x19, 0x23, 0x84, - 0x9b, 0x19, 0x25, 0x86, 0x9b, 0x19, 0x27, 0x84, 0x9b, 0x19, 0x29, 0x86, - 0x9b, 0x19, 0x2b, 0x84, 0x9b, 0x19, 0x2d, 0x86, 0x9b, 0x19, 0x2f, 0x84, - 0x9b, 0x19, 0x31, 0x86, 0x9b, 0x19, 0x32, 0x84, 0x9b, 0x19, 0x34, 0x86, - 0x9b, 0x19, 0x35, 0x84, 0x9b, 0x19, 0x37, 0x86, 0x9b, 0x19, 0x38, 0x84, - 0x9b, 0x19, 0x3a, 0x86, 0x9b, 0x19, 0x3b, 0x84, 0x9b, 0x19, 0x3c, 0x86, - 0x9b, 0x19, 0x3e, 0x84, 0x9b, 0x19, 0x3f, 0x86, 0x9b, 0x19, 0x40, 0x84, - 0x9b, 0x19, 0x42, 0x86, 0x9b, 0x19, 0x43, 0x84, 0x9b, 0x19, 0x44, 0x84, - 0x9c, 0x19, 0x45, 0x84, 0x9b, 0x19, 0x46, 0x84, 0x9c, 0x19, 0x47, 0x84, - 0x9b, 0x19, 0x48, 0x84, 0x9c, 0x19, 0x49, 0x84, 0x9b, 0x19, 0x4a, 0x84, - 0x9c, 0x19, 0x4b, 0x84, 0x9b, 0x19, 0x4c, 0x84, 0x9c, 0x19, 0x4d, 0x84, - 0x9b, 0x19, 0x4e, 0x84, 0x9c, 0x19, 0x4f, 0x84, 0x9b, 0x19, 0x50, 0x84, - 0x9c, 0x19, 0x51, 0x84, 0x9b, 0x19, 0x52, 0x84, 0x9c, 0x19, 0x53, 0x84, - 0x9b, 0x19, 0x54, 0x84, 0x9c, 0x19, 0x55, 0x84, 0x9b, 0x19, 0x56, 0x84, - 0x9c, 0x19, 0x57, 0x84, 0x9b, 0x19, 0x58, 0x84, 0x9c, 0x19, 0x58, 0x84, - 0x9b, 0x19, 0x59, 0x84, 0x9c, 0x19, 0x5a, 0x84, 0x9b, 0x19, 0x5b, 0x84, - 0x9c, 0x19, 0x5c, 0x84, 0x9b, 0x19, 0x5d, 0x84, 0x9c, 0x19, 0x5d, 0x84, - 0x9b, 0x19, 0x5e, 0x84, 0x9c, 0x19, 0x5f, 0x84, 0x9b, 0x19, 0x60, 0x84, - 0x9c, 0x19, 0x60, 0x84, 0x9b, 0x19, 0x61, 0x84, 0x9c, 0x19, 0x62, 0x84, - 0x9b, 0x19, 0x63, 0x84, 0x9c, 0x19, 0x63, 0x84, 0x9b, 0x19, 0x64, 0x84, - 0x9c, 0x19, 0x65, 0x84, 0x9b, 0x19, 0x66, 0x84, 0x9c, 0x19, 0x66, 0x84, - 0x9b, 0x19, 0x67, 0x84, 0x9c, 0x19, 0x68, 0x84, 0x9b, 0x19, 0x68, 0x84, - 0x9c, 0x19, 0x69, 0x84, 0x9b, 0x19, 0x6a, 0x84, 0x9c, 0x19, 0x6a, 0x84, - 0x9b, 0x19, 0x6b, 0x84, 0x9c, 0x19, 0x6c, 0x84, 0x9b, 0x19, 0x6c, 0x84, - 0x9c, 0x19, 0x6d, 0x84, 0x9b, 0x19, 0x6e, 0x84, 0x9c, 0x19, 0x6e, 0x84, - 0x9b, 0x19, 0x6f, 0x84, 0x9c, 0x19, 0x70, 0x84, 0x9b, 0x19, 0x70, 0x84, - 0x9c, 0x19, 0x71, 0x84, 0x9b, 0x19, 0x72, 0x84, 0x9c, 0x19, 0x72, 0x84, - 0x9b, 0x19, 0x73, 0x84, 0x9c, 0x19, 0x73, 0x84, 0x9b, 0x19, 0x74, 0x84, - 0x9c, 0x19, 0x75, 0x84, 0x9b, 0x19, 0x75, 0x84, 0x9c, 0x19, 0x76, 0x84, - 0x9b, 0x19, 0x76, 0x84, 0x9c, 0x19, 0x77, 0x84, 0x9b, 0x19, 0x78, 0x84, - 0x9c, 0x19, 0x78, 0x84, 0x9b, 0x19, 0x79, 0x84, 0x9c, 0x19, 0x79, 0x84, - 0x9b, 0x19, 0x7a, 0x84, 0x9c, 0x19, 0x7a, 0x84, 0x9b, 0x19, 0x7b, 0x84, - 0x9c, 0x19, 0x7c, 0x84, 0x9b, 0x19, 0x7c, 0x84, 0x9c, 0x19, 0x7d, 0x84, - 0x9b, 0x19, 0x7d, 0x84, 0x9c, 0x19, 0x7e, 0x84, 0x9b, 0x19, 0x7e, 0x84, - 0x9c, 0x19, 0x7f, 0x84, 0x9b, 0x19, 0x7f, 0x84, 0x9c, 0x19, 0x80, 0x84, - 0x9b, 0x19, 0x81, 0x84, 0x9c, 0x19, 0x81, 0x84, 0x9b, 0x19, 0x82, 0x84, - 0x9c, 0x19, 0x82, 0x84, 0x9b, 0x19, 0x83, 0x84, 0x9c, 0x19, 0x83, 0x84, - 0x9b, 0x19, 0x84, 0x84, 0x9c, 0x19, 0x84, 0x84, 0x9b, 0x19, 0x85, 0x84, - 0x9c, 0x19, 0x85, 0x84, 0x9b, 0x19, 0x86, 0x84, 0x9c, 0x19, 0x86, 0x84, - 0x9b, 0x19, 0x87, 0x84, 0x9c, 0x19, 0x87, 0x84, 0x9b, 0x19, 0x88, 0x84, - 0x9c, 0x19, 0x88, 0x84, 0x9b, 0x19, 0x89, 0x84, 0x9c, 0x19, 0x89, 0x84, - 0x9b, 0x19, 0x8a, 0x84, 0x9c, 0x19, 0x8a, 0x84, 0x9b, 0x19, 0x8b, 0x84, - 0x9c, 0x19, 0x8b, 0x84, 0x9b, 0x19, 0x8c, 0x84, 0x9c, 0x19, 0x8c, 0x84, - 0x9b, 0x19, 0x8d, 0x84, 0x9c, 0x19, 0x8d, 0x84, 0x9b, 0x19, 0x8e, 0x84, - 0x9c, 0x19, 0x8e, 0x84, 0x9b, 0x19, 0x8e, 0x84, 0x9c, 0x19, 0x8f, 0x84, - 0x9b, 0x19, 0x8f, 0x84, 0x9c, 0x19, 0x90, 0x84, 0x9b, 0x19, 0x90, 0x84, - 0x9c, 0x19, 0x91, 0x84, 0x9b, 0x19, 0x91, 0x84, 0x9c, 0x19, 0x92, 0x84, - 0x9b, 0x19, 0x92, 0x84, 0x9c, 0x19, 0x93, 0x84, 0x9b, 0x19, 0x93, 0x84, - 0x9c, 0x19, 0x94, 0x84, 0x9b, 0x19, 0x94, 0x84, 0x9c, 0x19, 0x94, 0x84, - 0x9b, 0x19, 0x95, 0x84, 0x9c, 0x19, 0x95, 0x84, 0x9b, 0x19, 0x96, 0x84, - 0x9c, 0x19, 0x96, 0x84, 0x9b, 0x19, 0x97, 0x84, 0x9c, 0x19, 0x97, 0x84, - 0x9b, 0x19, 0x98, 0x84, 0x9c, 0x19, 0x98, 0x84, 0x9b, 0x19, 0x98, 0x84, - 0x9c, 0x19, 0x99, 0x84, 0x9b, 0x19, 0x99, 0x84, 0x9c, 0x19, 0x9a, 0x84, - 0x9b, 0x19, 0x9a, 0x84, 0x9c, 0x19, 0x9a, 0x84, 0x9b, 0x19, 0x9b, 0x84, - 0x9c, 0x19, 0x9b, 0x84, 0x9b, 0x19, 0x9c, 0x84, 0x9c, 0x19, 0x9c, 0x84, - 0x9c, 0x19, 0x9d, 0x84, 0x9d, 0x19, 0x9d, 0x84, 0x9d, 0x19, 0x9d, 0x84, - 0x9d, 0x19, 0x9e, 0x84, 0x9e, 0x19, 0x9e, 0x84, 0x9e, 0x19, 0x9f, 0x84, - 0x9f, 0x19, 0x9f, 0x84, 0x9e, 0x19, 0x9f, 0x84, 0x9f, 0x19, 0xa0, 0x84, - 0x9e, 0x19, 0xa0, 0x84, 0x9f, 0x19, 0xa1, 0x84, 0x9e, 0x19, 0xa1, 0x84, - 0x9f, 0x19, 0xa1, 0x84, 0x9e, 0x19, 0xa2, 0x84, 0x9f, 0x19, 0xa2, 0x84, - 0x9e, 0x19, 0xa3, 0x84, 0x9f, 0x19, 0xa3, 0x84, 0x9e, 0x19, 0xa3, 0x84, - 0x9f, 0x19, 0xa4, 0x84, 0x9e, 0x19, 0xa4, 0x84, 0x9f, 0x19, 0xa5, 0x84, - 0x9e, 0x19, 0xa5, 0x84, 0x9f, 0x19, 0xa5, 0x84, 0x9e, 0x19, 0xa6, 0x84, - 0x9f, 0x19, 0xa6, 0x85, 0xa2, 0x19, 0xa6, 0x84, 0x9f, 0x19, 0xa7, 0x85, - 0xa2, 0x19, 0xa7, 0x85, 0xa2, 0x19, 0xa8, 0x85, 0xa2, 0x19, 0xa8, 0x85, - 0xa2, 0x19, 0xa8, 0x85, 0xa2, 0x19, 0xa9, 0x85, 0xa2, 0x19, 0xa9, 0x85, - 0xa2, 0x19, 0xaa, 0x86, 0xa6, 0x19, 0xaa, 0x86, 0xa6, 0x19, 0xaa, 0x86, - 0xa6, 0x19, 0xab, 0x86, 0xa6, 0x19, 0xab, 0x86, 0xa6, 0x19, 0xab, 0x86, - 0xa6, 0x19, 0xac, 0x86, 0xa6, 0x19, 0xac, 0x86, 0xa6, 0x19, 0xac, 0x86, - 0xa6, 0x19, 0xad, 0x86, 0xa6, 0x19, 0xad, 0x87, 0xaa, 0x19, 0xae, 0x86, - 0xa6, 0x19, 0xae, 0x87, 0xaa, 0x19, 0xae, 0x86, 0xa6, 0x19, 0xaf, 0x87, - 0xaa, 0x19, 0xaf, 0x87, 0xa9, 0x19, 0xaf, 0x87, 0xaa, 0x19, 0xb0, 0x87, - 0xa9, 0x19, 0xb0, 0x87, 0xaa, 0x19, 0xb0, 0x87, 0xa9, 0x19, 0xb1, 0x87, - 0xaa, 0x19, 0xb1, 0x88, 0xad, 0x19, 0xb2, 0x88, 0xad, 0x19, 0xb2, 0x88, - 0xad, 0x19, 0xb2, 0x88, 0xad, 0x19, 0xb3, 0x88, 0xad, 0x19, 0xb3, 0x88, - 0xad, 0x19, 0xb3, 0x88, 0xad, 0x19, 0xb4, 0x88, 0xad, 0x19, 0xb4, 0x88, - 0xad, 0x19, 0xb4, 0x88, 0xad, 0x19, 0xb5, 0x89, 0xb0, 0x19, 0xb5, 0x88, - 0xad, 0x19, 0xb5, 0x89, 0xb0, 0x19, 0xb6, 0x89, 0xb0, 0x19, 0xb6, 0x89, - 0xb0, 0x19, 0xb6, 0x89, 0xb2, 0x19, 0xb7, 0x89, 0xb0, 0x19, 0xb7, 0x89, - 0xb2, 0x19, 0xb7, 0x89, 0xb0, 0x19, 0xb8, 0x89, 0xb2, 0x19, 0xb8, 0x89, - 0xb2, 0x19, 0xb8, 0x89, 0xb2, 0x19, 0xb9, 0x89, 0xb2, 0x19, 0xb9, 0x89, - 0xb2, 0x19, 0xb9, 0x8a, 0xb3, 0x19, 0xba, 0x8a, 0xb4, 0x19, 0xba, 0x8a, - 0xb3, 0x19, 0xba, 0x8a, 0xb4, 0x19, 0xbb, 0x8b, 0xb7, 0x19, 0xbb, 0x8b, - 0xb7, 0x19, 0xbb, 0x8b, 0xb7, 0x19, 0xbc, 0x8b, 0xb7, 0x19, 0xbc, 0x8b, - 0xb7, 0x19, 0xbc, 0x8b, 0xb7, 0x19, 0xbd, 0x8b, 0xb7, 0x19, 0xbd, 0x8b, - 0xb7, 0x19, 0xbd, 0x8b, 0xb7, 0x19, 0xbe, 0x8b, 0xb7, 0x19, 0xbe, 0x8c, - 0xba, 0x19, 0xbe, 0x8b, 0xb7, 0x19, 0xbf, 0x8c, 0xba, 0x19, 0xbf, 0x8b, - 0xb7, 0x19, 0xbf, 0x8c, 0xba, 0x19, 0xc0, 0x8c, 0xba, 0x19, 0xc0, 0x8c, - 0xba, 0x19, 0xc0, 0x8c, 0xba, 0x19, 0xc1, 0x8c, 0xba, 0x19, 0xc1, 0x8d, - 0xbd, 0x19, 0xc1, 0x8c, 0xba, 0x19, 0xc1, 0x8d, 0xbd, 0x19, 0xc2, 0x8c, - 0xba, 0x19, 0xc2, 0x8d, 0xbd, 0x19, 0xc2, 0x8d, 0xbd, 0x19, 0xc3, 0x8d, - 0xbd, 0x19, 0xc3, 0x8d, 0xbd, 0x19, 0xc3, 0x8d, 0xbd, 0x19, 0xc4, 0x8d, - 0xbd, 0x19, 0xc4, 0x8d, 0xbd, 0x19, 0xc4, 0x8e, 0xc0, 0x19, 0xc5, 0x8e, - 0xc0, 0x19, 0xc5, 0x8e, 0xc0, 0x19, 0xc5, 0x8e, 0xc0, 0x19, 0xc6, 0x8e, - 0xc0, 0x19, 0xc6, 0x8e, 0xc0, 0x19, 0xc6, 0x8e, 0xc0, 0x19, 0xc6, 0x8e, - 0xc0, 0x19, 0xc7, 0x8e, 0xc0, 0x19, 0xc7, 0x8e, 0xc0, 0x19, 0xc7, 0x8e, - 0xc3, 0x19, 0xc8, 0x8e, 0xc0, 0x19, 0xc8, 0x8e, 0xc3, 0x19, 0xc8, 0x8e, - 0xc0, 0x19, 0xc9, 0x8e, 0xc3, 0x19, 0xc9, 0x8e, 0xc3, 0x19, 0xc9, 0x8e, - 0xc3, 0x19, 0xc9, 0x8e, 0xc3, 0x19, 0xca, 0x8e, 0xc3, 0x19, 0xca, 0x8f, - 0xc6, 0x19, 0xca, 0x8e, 0xc3, 0x19, 0xcb, 0x8f, 0xc6, 0x19, 0xcb, 0x8e, - 0xc3, 0x19, 0xcb, 0x8f, 0xc6, 0x19, 0xcc, 0x8f, 0xc6, 0x19, 0xcc, 0x8f, - 0xc6, 0x19, 0xcc, 0x8f, 0xc6, 0x19, 0xcc, 0x8f, 0xc6, 0x19, 0xcd, 0x90, - 0xc9, 0x19, 0xcd, 0x90, 0xc9, 0x19, 0xcd, 0x90, 0xc9, 0x19, 0xce, 0x90, - 0xc9, 0x19, 0xce, 0x90, 0xc9, 0x19, 0xce, 0x90, 0xc9, 0x19, 0xce, 0x90, - 0xc9, 0x19, 0xcf, 0x90, 0xc9, 0x19, 0xcf, 0x90, 0xc9, 0x19, 0xcf, 0x90, - 0xc9, 0x19, 0xd0, 0x90, 0xc9, 0x19, 0xd0, 0x90, 0xc9, 0x19, 0xd0, 0x91, - 0xcc, 0x19, 0xd0, 0x90, 0xc9, 0x19, 0xd1, 0x91, 0xcc, 0x19, 0xd1, 0x91, - 0xcb, 0x19, 0xd1, 0x91, 0xcc, 0x19, 0xd2, 0x91, 0xcb, 0x19, 0xd2, 0x91, - 0xcc, 0x19, 0xd2, 0x91, 0xcb, 0x19, 0xd2, 0x91, 0xcc, 0x19, 0xd3, 0x92, - 0xce, 0x19, 0xd3, 0x92, 0xce, 0x19, 0xd3, 0x92, 0xce, 0x19, 0xd4, 0x92, - 0xce, 0x19, 0xd4, 0x92, 0xce, 0x19, 0xd4, 0x92, 0xce, 0x19, 0xd4, 0x92, - 0xce, 0x19, 0xd5, 0x92, 0xce, 0x19, 0xd5, 0x92, 0xce, 0x19, 0xd5, 0x92, - 0xce, 0x19, 0xd6, 0x93, 0xd1, 0x19, 0xd6, 0x92, 0xce, 0x19, 0xd6, 0x93, - 0xd1, 0x19, 0xd6, 0x92, 0xce, 0x19, 0xd7, 0x93, 0xd1, 0x19, 0xd7, 0x93, - 0xd1, 0x19, 0xd7, 0x93, 0xd1, 0x19, 0xd7, 0x93, 0xd1, 0x19, 0xd8, 0x93, - 0xd1, 0x19, 0xd8, 0x94, 0xd4, 0x19, 0xd8, 0x93, 0xd1, 0x19, 0xd9, 0x94, - 0xd4, 0x19, 0xd9, 0x93, 0xd1, 0x19, 0xd9, 0x94, 0xd4, 0x19, 0xd9, 0x94, - 0xd3, 0x19, 0xda, 0x94, 0xd4, 0x19, 0xda, 0x94, 0xd3, 0x19, 0xda, 0x94, - 0xd4, 0x19, 0xda, 0x95, 0xd6, 0x19, 0xdb, 0x95, 0xd6, 0x19, 0xdb, 0x95, - 0xd6, 0x19, 0xdb, 0x95, 0xd6, 0x19, 0xdb, 0x95, 0xd6, 0x19, 0xdc, 0x95, - 0xd6, 0x19, 0xdc, 0x95, 0xd6, 0x19, 0xdc, 0x95, 0xd6, 0x19, 0xdd, 0x95, - 0xd6, 0x19, 0xdd, 0x95, 0xd6, 0x19, 0xdd, 0x96, 0xd9, 0x19, 0xdd, 0x95, - 0xd6, 0x19, 0xde, 0x96, 0xd9, 0x19, 0xde, 0x95, 0xd6, 0x19, 0xde, 0x96, - 0xd9, 0x19, 0xde, 0x95, 0xd6, 0x19, 0xdf, 0x96, 0xd9, 0x19, 0xdf, 0x96, - 0xd9, 0x19, 0xdf, 0x96, 0xd9, 0x19, 0xdf, 0x96, 0xd9, 0x19, 0xe0, 0x96, - 0xd9, 0x19, 0xe0, 0x97, 0xdb, 0x19, 0xe0, 0x96, 0xd9, 0x19, 0xe1, 0x97, - 0xdb, 0x19, 0xe1, 0x96, 0xd9, 0x19, 0xe1, 0x97, 0xdb, 0x19, 0xe1, 0x97, - 0xdb, 0x19, 0xe2, 0x97, 0xdb, 0x19, 0xe2, 0x97, 0xdb, 0x19, 0xe2, 0x97, - 0xdb, 0x19, 0xe2, 0x98, 0xde, 0x19, 0xe3, 0x98, 0xde, 0x19, 0xe3, 0x98, - 0xde, 0x19, 0xe3, 0x98, 0xde, 0x19, 0xe3, 0x98, 0xde, 0x19, 0xe4, 0x98, - 0xde, 0x19, 0xe4, 0x98, 0xde, 0x19, 0xe4, 0x98, 0xde, 0x19, 0xe4, 0x98, - 0xde, 0x19, 0xe5, 0x98, 0xde, 0x19, 0xe5, 0x98, 0xe0, 0x19, 0xe5, 0x98, - 0xde, 0x19, 0xe5, 0x98, 0xe0, 0x19, 0xe6, 0x98, 0xde, 0x19, 0xe6, 0x98, - 0xe0, 0x19, 0xe6, 0x98, 0xe0, 0x19, 0xe6, 0x98, 0xe0, 0x19, 0xe7, 0x98, - 0xe0, 0x19, 0xe7, 0x98, 0xe0, 0x19, 0xe7, 0x99, 0xe3, 0x19, 0xe7, 0x98, - 0xe0, 0x19, 0xe8, 0x99, 0xe3, 0x19, 0xe8, 0x98, 0xe0, 0x19, 0xe8, 0x99, - 0xe3, 0x19, 0xe8, 0x98, 0xe0, 0x19, 0xe9, 0x99, 0xe3, 0x19, 0xe9, 0x99, - 0xe2, 0x19, 0xe9, 0x99, 0xe3, 0x19, 0xe9, 0x99, 0xe2, 0x19, 0xea, 0x99, - 0xe3, 0x19, 0xea, 0x9a, 0xe5, 0x19, 0xea, 0x9a, 0xe5, 0x19, 0xea, 0x9a, - 0xe5, 0x19, 0xeb, 0x9a, 0xe5, 0x19, 0xeb, 0x9a, 0xe5, 0x19, 0xeb, 0x9a, - 0xe5, 0x19, 0xeb, 0x9a, 0xe5, 0x19, 0xec, 0x9a, 0xe5, 0x19, 0xec, 0x9a, - 0xe5, 0x19, 0xec, 0x9a, 0xe5, 0x19, 0xec, 0x9b, 0xe7, 0x19, 0xec, 0x9a, - 0xe5, 0x19, 0xed, 0x9b, 0xe7, 0x19, 0xed, 0x9a, 0xe5, 0x19, 0xed, 0x9b, - 0xe7, 0x19, 0xed, 0x9b, 0xe7, 0x19, 0xee, 0x9b, 0xe7, 0x19, 0xee, 0x9b, - 0xe7, 0x19, 0xee, 0x9b, 0xe7, 0x19, 0xee, 0x9c, 0xea, 0x19, 0xef, 0x9c, - 0xea, 0x19, 0xef, 0x9c, 0xea, 0x19, 0xef, 0x9c, 0xea, 0x19, 0xef, 0x9c, - 0xea, 0x19, 0xf0, 0x9c, 0xea, 0x19, 0xf0, 0x9c, 0xea, 0x19, 0xf0, 0x9c, - 0xea, 0x19, 0xf0, 0x9c, 0xea, 0x19, 0xf1, 0x9c, 0xea, 0x19, 0xf1, 0x9d, - 0xec, 0x19, 0xf1, 0x9c, 0xea, 0x19, 0xf1, 0x9d, 0xec, 0x19, 0xf2, 0x9c, - 0xea, 0x19, 0xf2, 0x9d, 0xec, 0x19, 0xf2, 0x9c, 0xea, 0x19, 0xf2, 0x9d, - 0xec, 0x19, 0xf2, 0x9d, 0xec, 0x19, 0xf3, 0x9d, 0xec, 0x19, 0xf3, 0x9d, - 0xee, 0x19, 0xf3, 0x9d, 0xec, 0x19, 0xf3, 0x9d, 0xee, 0x19, 0xf4, 0x9d, - 0xec, 0x19, 0xf4, 0x9d, 0xee, 0x19, 0xf4, 0x9d, 0xec, 0x19, 0xf4, 0x9d, - 0xee, 0x19, 0xf5, 0x9d, 0xee, 0x19, 0xf5, 0x9d, 0xee, 0x19, 0xf5, 0x9e, - 0xf0, 0x19, 0xf5, 0x9e, 0xf1, 0x19, 0xf5, 0x9e, 0xf0, 0x19, 0xf6, 0x9e, - 0xf1, 0x19, 0xf6, 0x9e, 0xf0, 0x19, 0xf6, 0x9e, 0xf1, 0x19, 0xf6, 0x9e, - 0xf0, 0x19, 0xf7, 0x9e, 0xf1, 0x19, 0xf7, 0x9e, 0xf0, 0x19, 0xf7, 0x9e, - 0xf1, 0x19, 0xf7, 0x9e, 0xf0, 0x19, 0xf8, 0x9e, 0xf1, 0x19, 0xf8, 0x9f, - 0xf3, 0x19, 0xf8, 0x9e, 0xf1, 0x19, 0xf8, 0x9f, 0xf3, 0x19, 0xf8, 0x9e, - 0xf1, 0x19, 0xf9, 0x9f, 0xf3, 0x19, 0xf9, 0x9f, 0xf2, 0x19, 0xf9, 0x9f, - 0xf3, 0x19, 0xf9, 0x9f, 0xf2, 0x19, 0xfa, 0x9f, 0xf3, 0x19, 0xfa, 0xa0, - 0xf5, 0x19, 0xfa, 0x9f, 0xf3, 0x19, 0xfa, 0xa0, 0xf5, 0x19, 0xfa, 0x9f, - 0xf3, 0x19, 0xfb, 0xa0, 0xf5, 0x19, 0xfb, 0x9f, 0xf3, 0x19, 0xfb, 0xa0, - 0xf5, 0x19, 0xfb, 0xa0, 0xf5, 0x19, 0xfc, 0xa0, 0xf5, 0x19, 0xfc, 0xa1, - 0xf7, 0x19, 0xfc, 0xa1, 0xf7, 0x19, 0xfc, 0xa1, 0xf7, 0x19, 0xfc, 0xa1, - 0xf7, 0x19, 0xfd, 0xa1, 0xf7, 0x19, 0xfd, 0xa1, 0xf7, 0x19, 0xfd, 0xa1, - 0xf7, 0x19, 0xfd, 0xa1, 0xf7, 0x19, 0xfe, 0xa1, 0xf7, 0x19, 0xfe, 0xa1, - 0xf7, 0x19, 0xfe, 0xa1, 0xf9, 0x19, 0xfe, 0xa1, 0xf7, 0x19, 0xfe, 0xa1, - 0xf9, 0x19, 0xff, 0xa1, 0xf7, 0x19, 0xff, 0xa1, 0xf9, 0x19, 0x03, 0x83, - 0x9b, 0x19, 0x0a, 0x83, 0x9b, 0x19, 0x0f, 0x83, 0x9b, 0x19, 0x14, 0x83, - 0x9b, 0x19, 0x17, 0x83, 0x9b, 0x19, 0x1b, 0x83, 0x9b, 0x19, 0x1e, 0x83, - 0x9b, 0x19, 0x20, 0x83, 0x9c, 0x19, 0x23, 0x83, 0x9b, 0x19, 0x25, 0x83, - 0x9c, 0x19, 0x27, 0x83, 0x9b, 0x19, 0x29, 0x83, 0x9c, 0x19, 0x2b, 0x83, - 0x9b, 0x19, 0x2d, 0x83, 0x9c, 0x19, 0x2f, 0x83, 0x9b, 0x19, 0x31, 0x83, - 0x9c, 0x19, 0x32, 0x83, 0x9b, 0x19, 0x34, 0x83, 0x9c, 0x19, 0x35, 0x83, - 0x9b, 0x19, 0x37, 0x83, 0x9c, 0x19, 0x38, 0x83, 0x9b, 0x19, 0x3a, 0x83, - 0x9c, 0x19, 0x3b, 0x83, 0x9b, 0x19, 0x3c, 0x83, 0x9c, 0x19, 0x3e, 0x83, - 0x9b, 0x19, 0x3f, 0x83, 0x9c, 0x19, 0x40, 0x83, 0x9b, 0x19, 0x42, 0x83, - 0x9c, 0x19, 0x43, 0x83, 0x9b, 0x19, 0x44, 0x83, 0x9c, 0x19, 0x45, 0x83, - 0x9b, 0x19, 0x46, 0x83, 0x9c, 0x19, 0x47, 0x83, 0x9b, 0x19, 0x48, 0x83, - 0x9c, 0x19, 0x49, 0x83, 0x9b, 0x19, 0x4a, 0x83, 0x9c, 0x19, 0x4b, 0x83, - 0x9b, 0x19, 0x4c, 0x83, 0x9c, 0x19, 0x4d, 0x83, 0x9b, 0x19, 0x4e, 0x83, - 0x9c, 0x19, 0x4f, 0x83, 0x9b, 0x19, 0x50, 0x83, 0x9c, 0x19, 0x51, 0x83, - 0x9b, 0x19, 0x52, 0x83, 0x9c, 0x19, 0x53, 0x83, 0x9b, 0x19, 0x54, 0x83, - 0x9c, 0x19, 0x55, 0x83, 0x9b, 0x19, 0x56, 0x83, 0x9c, 0x19, 0x57, 0x83, - 0x9b, 0x19, 0x58, 0x83, 0x9c, 0x19, 0x58, 0x83, 0x9b, 0x19, 0x59, 0x83, - 0x9c, 0x19, 0x5a, 0x83, 0x9b, 0x19, 0x5b, 0x83, 0x9c, 0x19, 0x5c, 0x83, - 0x9b, 0x19, 0x5d, 0x83, 0x9c, 0x19, 0x5d, 0x83, 0x9b, 0x19, 0x5e, 0x83, - 0x9c, 0x19, 0x5f, 0x83, 0x9b, 0x19, 0x60, 0x83, 0x9c, 0x19, 0x60, 0x83, - 0x9b, 0x19, 0x61, 0x83, 0x9c, 0x19, 0x62, 0x83, 0x9b, 0x19, 0x63, 0x83, - 0x9c, 0x19, 0x63, 0x83, 0x9b, 0x19, 0x64, 0x83, 0x9c, 0x19, 0x65, 0x83, - 0x9b, 0x19, 0x66, 0x83, 0x9c, 0x19, 0x66, 0x83, 0x9b, 0x19, 0x67, 0x83, - 0x9c, 0x19, 0x68, 0x83, 0x9b, 0x19, 0x68, 0x83, 0x9c, 0x19, 0x69, 0x83, - 0x9b, 0x19, 0x6a, 0x83, 0x9c, 0x19, 0x6a, 0x83, 0x9b, 0x19, 0x6b, 0x83, - 0x9c, 0x19, 0x6c, 0x83, 0x9b, 0x19, 0x6c, 0x83, 0x9c, 0x19, 0x6d, 0x83, - 0x9b, 0x19, 0x6e, 0x83, 0x9c, 0x19, 0x6e, 0x83, 0x9b, 0x19, 0x6f, 0x83, - 0x9c, 0x19, 0x70, 0x83, 0x9b, 0x19, 0x70, 0x83, 0x9c, 0x19, 0x71, 0x83, - 0x9b, 0x19, 0x72, 0x83, 0x9c, 0x19, 0x72, 0x83, 0x9b, 0x19, 0x73, 0x83, - 0x9c, 0x19, 0x73, 0x83, 0x9b, 0x19, 0x74, 0x83, 0x9c, 0x19, 0x75, 0x83, - 0x9b, 0x19, 0x75, 0x83, 0x9c, 0x19, 0x76, 0x83, 0x9b, 0x19, 0x76, 0x83, - 0x9c, 0x19, 0x77, 0x83, 0x9b, 0x19, 0x78, 0x83, 0x9c, 0x19, 0x78, 0x83, - 0x9b, 0x19, 0x79, 0x83, 0x9c, 0x19, 0x79, 0x83, 0x9b, 0x19, 0x7a, 0x83, - 0x9c, 0x19, 0x7a, 0x83, 0x9b, 0x19, 0x7b, 0x83, 0x9c, 0x19, 0x7c, 0x83, - 0x9b, 0x19, 0x7c, 0x83, 0x9c, 0x19, 0x7d, 0x83, 0x9b, 0x19, 0x7d, 0x83, - 0x9c, 0x19, 0x7e, 0x83, 0x9b, 0x19, 0x7e, 0x83, 0x9c, 0x19, 0x7f, 0x83, - 0x9b, 0x19, 0x7f, 0x83, 0x9c, 0x19, 0x80, 0x83, 0x9b, 0x19, 0x81, 0x83, - 0x9c, 0x19, 0x81, 0x83, 0x9b, 0x19, 0x82, 0x83, 0x9c, 0x19, 0x82, 0x83, - 0x9b, 0x19, 0x83, 0x83, 0x9c, 0x19, 0x83, 0x83, 0x9b, 0x19, 0x84, 0x83, - 0x9c, 0x19, 0x84, 0x83, 0x9b, 0x19, 0x85, 0x83, 0x9c, 0x19, 0x85, 0x83, - 0x9b, 0x19, 0x86, 0x83, 0x9c, 0x19, 0x86, 0x83, 0x9b, 0x19, 0x87, 0x83, - 0x9c, 0x19, 0x87, 0x83, 0x9b, 0x19, 0x88, 0x83, 0x9c, 0x19, 0x88, 0x83, - 0x9b, 0x19, 0x89, 0x83, 0x9c, 0x19, 0x89, 0x83, 0x9b, 0x19, 0x8a, 0x83, - 0x9c, 0x19, 0x8a, 0x83, 0x9b, 0x19, 0x8b, 0x83, 0x9c, 0x19, 0x8b, 0x83, - 0x9b, 0x19, 0x8c, 0x83, 0x9c, 0x19, 0x8c, 0x83, 0x9b, 0x19, 0x8d, 0x83, - 0x9c, 0x19, 0x8d, 0x83, 0x9b, 0x19, 0x8e, 0x83, 0x9c, 0x19, 0x8e, 0x83, - 0x9b, 0x19, 0x8e, 0x83, 0x9c, 0x19, 0x8f, 0x83, 0x9b, 0x19, 0x8f, 0x83, - 0x9c, 0x19, 0x90, 0x83, 0x9b, 0x19, 0x90, 0x83, 0x9c, 0x19, 0x91, 0x83, - 0x9b, 0x19, 0x91, 0x83, 0x9c, 0x19, 0x92, 0x83, 0x9b, 0x19, 0x92, 0x83, - 0x9c, 0x19, 0x93, 0x83, 0x9b, 0x19, 0x93, 0x83, 0x9c, 0x19, 0x94, 0x83, - 0x9b, 0x19, 0x94, 0x83, 0x9c, 0x19, 0x94, 0x83, 0x9b, 0x19, 0x95, 0x83, - 0x9c, 0x19, 0x95, 0x83, 0x9b, 0x19, 0x96, 0x83, 0x9c, 0x19, 0x96, 0x83, - 0x9b, 0x19, 0x97, 0x83, 0x9c, 0x19, 0x97, 0x83, 0x9b, 0x19, 0x98, 0x83, - 0x9c, 0x19, 0x98, 0x83, 0x9b, 0x19, 0x98, 0x83, 0x9c, 0x19, 0x99, 0x83, - 0x9b, 0x19, 0x99, 0x83, 0x9c, 0x19, 0x9a, 0x83, 0x9b, 0x19, 0x9a, 0x83, - 0x9c, 0x19, 0x9a, 0x83, 0x9b, 0x19, 0x9b, 0x83, 0x9c, 0x19, 0x9b, 0x83, - 0x9b, 0x19, 0x9c, 0x83, 0x9c, 0x19, 0x9c, 0x83, 0x9c, 0x19, 0x9d, 0x83, - 0x9d, 0x19, 0x9d, 0x83, 0x9c, 0x19, 0x9d, 0x83, 0x9d, 0x19, 0x9e, 0x83, - 0x9c, 0x19, 0x9e, 0x83, 0x9d, 0x19, 0x9f, 0x83, 0x9c, 0x19, 0x9f, 0x83, - 0x9d, 0x19, 0x9f, 0x83, 0x9c, 0x19, 0xa0, 0x83, 0x9d, 0x19, 0xa0, 0x83, - 0x9c, 0x19, 0xa1, 0x83, 0x9d, 0x19, 0xa1, 0x83, 0x9c, 0x19, 0xa1, 0x83, - 0x9d, 0x19, 0xa2, 0x83, 0x9c, 0x19, 0xa2, 0x83, 0x9d, 0x19, 0xa3, 0x83, - 0x9c, 0x19, 0xa3, 0x83, 0x9d, 0x19, 0xa3, 0x83, 0x9c, 0x19, 0xa4, 0x83, - 0x9d, 0x19, 0xa4, 0x84, 0xa0, 0x19, 0xa5, 0x84, 0xa1, 0x19, 0xa5, 0x84, - 0xa0, 0x19, 0xa5, 0x84, 0xa1, 0x19, 0xa6, 0x84, 0xa0, 0x19, 0xa6, 0x84, - 0xa1, 0x19, 0xa6, 0x84, 0xa0, 0x19, 0xa7, 0x84, 0xa1, 0x19, 0xa7, 0x84, - 0xa0, 0x19, 0xa8, 0x84, 0xa1, 0x19, 0xa8, 0x85, 0xa4, 0x19, 0xa8, 0x84, - 0xa1, 0x19, 0xa9, 0x85, 0xa4, 0x19, 0xa9, 0x85, 0xa4, 0x19, 0xaa, 0x85, - 0xa4, 0x19, 0xaa, 0x85, 0xa4, 0x19, 0xaa, 0x85, 0xa4, 0x19, 0xab, 0x85, - 0xa4, 0x19, 0xab, 0x85, 0xa4, 0x19, 0xab, 0x86, 0xa8, 0x19, 0xac, 0x85, - 0xa4, 0x19, 0xac, 0x86, 0xa8, 0x19, 0xac, 0x86, 0xa7, 0x19, 0xad, 0x86, - 0xa8, 0x19, 0xad, 0x86, 0xa7, 0x19, 0xae, 0x86, 0xa8, 0x19, 0xae, 0x86, - 0xa7, 0x19, 0xae, 0x86, 0xa8, 0x19, 0xaf, 0x87, 0xab, 0x19, 0xaf, 0x87, - 0xab, 0x19, 0xaf, 0x87, 0xab, 0x19, 0xb0, 0x87, 0xab, 0x19, 0xb0, 0x87, - 0xab, 0x19, 0xb0, 0x87, 0xab, 0x19, 0xb1, 0x87, 0xab, 0x19, 0xb1, 0x87, - 0xab, 0x19, 0xb2, 0x87, 0xab, 0x19, 0xb2, 0x87, 0xab, 0x19, 0xb2, 0x87, - 0xab, 0x19, 0xb3, 0x87, 0xab, 0x19, 0xb3, 0x88, 0xaf, 0x19, 0xb3, 0x87, - 0xab, 0x19, 0xb4, 0x88, 0xaf, 0x19, 0xb4, 0x88, 0xae, 0x19, 0xb4, 0x88, - 0xaf, 0x19, 0xb5, 0x88, 0xae, 0x19, 0xb5, 0x88, 0xaf, 0x19, 0xb5, 0x88, - 0xae, 0x19, 0xb6, 0x88, 0xaf, 0x19, 0xb6, 0x89, 0xb2, 0x19, 0xb6, 0x89, - 0xb2, 0x19, 0xb7, 0x89, 0xb2, 0x19, 0xb7, 0x89, 0xb2, 0x19, 0xb7, 0x89, - 0xb2, 0x19, 0xb8, 0x89, 0xb2, 0x19, 0xb8, 0x89, 0xb2, 0x19, 0xb8, 0x89, - 0xb2, 0x19, 0xb9, 0x89, 0xb2, 0x19, 0xb9, 0x89, 0xb2, 0x19, 0xb9, 0x8a, - 0xb5, 0x19, 0xba, 0x89, 0xb2, 0x19, 0xba, 0x8a, 0xb5, 0x19, 0xba, 0x8a, - 0xb5, 0x19, 0xbb, 0x8a, 0xb5, 0x19, 0xbb, 0x8a, 0xb5, 0x19, 0xbb, 0x8a, - 0xb5, 0x19, 0xbc, 0x8a, 0xb5, 0x19, 0xbc, 0x8a, 0xb5, 0x19, 0xbc, 0x8b, - 0xb8, 0x19, 0xbd, 0x8a, 0xb5, 0x19, 0xbd, 0x8b, 0xb8, 0x19, 0xbd, 0x8a, - 0xb5, 0x19, 0xbe, 0x8b, 0xb8, 0x19, 0xbe, 0x8b, 0xb8, 0x19, 0xbe, 0x8b, - 0xb8, 0x19, 0xbf, 0x8b, 0xb8, 0x19, 0xbf, 0x8b, 0xb8, 0x19, 0xbf, 0x8c, - 0xbb, 0x19, 0xc0, 0x8c, 0xbc, 0x19, 0xc0, 0x8c, 0xbb, 0x19, 0xc0, 0x8c, - 0xbc, 0x19, 0xc1, 0x8c, 0xbb, 0x19, 0xc1, 0x8c, 0xbc, 0x19, 0xc1, 0x8c, - 0xbb, 0x19, 0xc1, 0x8c, 0xbc, 0x19, 0xc2, 0x8c, 0xbb, 0x19, 0xc2, 0x8c, - 0xbc, 0x19, 0xc2, 0x8d, 0xbf, 0x19, 0xc3, 0x8c, 0xbc, 0x19, 0xc3, 0x8d, - 0xbf, 0x19, 0xc3, 0x8c, 0xbc, 0x19, 0xc4, 0x8d, 0xbf, 0x19, 0xc4, 0x8d, - 0xbe, 0x19, 0xc4, 0x8d, 0xbf, 0x19, 0xc5, 0x8d, 0xbe, 0x19, 0xc5, 0x8d, - 0xbf, 0x19, 0xc5, 0x8d, 0xbe, 0x19, 0xc6, 0x8d, 0xbf, 0x19, 0xc6, 0x8e, - 0xc1, 0x19, 0xc6, 0x8d, 0xbf, 0x19, 0xc6, 0x8e, 0xc1, 0x19, 0xc7, 0x8e, - 0xc1, 0x19, 0xc7, 0x8e, 0xc1, 0x19, 0xc7, 0x8e, 0xc1, 0x19, 0xc8, 0x8e, - 0xc1, 0x19, 0xc8, 0x8e, 0xc1, 0x19, 0xc8, 0x8e, 0xc1, 0x19, 0xc9, 0x8f, - 0xc4, 0x19, 0xc9, 0x8f, 0xc5, 0x19, 0xc9, 0x8f, 0xc4, 0x19, 0xc9, 0x8f, - 0xc5, 0x19, 0xca, 0x8f, 0xc4, 0x19, 0xca, 0x8f, 0xc5, 0x19, 0xca, 0x8f, - 0xc4, 0x19, 0xcb, 0x8f, 0xc5, 0x19, 0xcb, 0x8f, 0xc4, 0x19, 0xcb, 0x8f, - 0xc5, 0x19, 0xcc, 0x90, 0xc7, 0x19, 0xcc, 0x8f, 0xc5, 0x19, 0xcc, 0x90, - 0xc7, 0x19, 0xcc, 0x8f, 0xc5, 0x19, 0xcd, 0x90, 0xc7, 0x19, 0xcd, 0x90, - 0xc7, 0x19, 0xcd, 0x90, 0xc7, 0x19, 0xce, 0x90, 0xc7, 0x19, 0xce, 0x90, - 0xc7, 0x19, 0xce, 0x91, 0xca, 0x19, 0xce, 0x90, 0xc7, 0x19, 0xcf, 0x91, - 0xca, 0x19, 0xcf, 0x90, 0xc7, 0x19, 0xcf, 0x91, 0xca, 0x19, 0xd0, 0x91, - 0xca, 0x19, 0xd0, 0x91, 0xca, 0x19, 0xd0, 0x91, 0xca, 0x19, 0xd0, 0x91, - 0xca, 0x19, 0xd1, 0x91, 0xca, 0x19, 0xd1, 0x91, 0xca, 0x19, 0xd1, 0x92, - 0xcd, 0x19, 0xd2, 0x92, 0xcd, 0x19, 0xd2, 0x92, 0xcd, 0x19, 0xd2, 0x92, - 0xcd, 0x19, 0xd2, 0x92, 0xcd, 0x19, 0xd3, 0x92, 0xcd, 0x19, 0xd3, 0x92, - 0xcd, 0x19, 0xd3, 0x92, 0xcd, 0x19, 0xd4, 0x92, 0xcd, 0x19, 0xd4, 0x92, - 0xcd, 0x19, 0xd4, 0x93, 0xd0, 0x19, 0xd4, 0x92, 0xcd, 0x19, 0xd5, 0x93, - 0xd0, 0x19, 0xd5, 0x92, 0xcd, 0x19, 0xd5, 0x93, 0xd0, 0x19, 0xd6, 0x93, - 0xcf, 0x19, 0xd6, 0x93, 0xd0, 0x19, 0xd6, 0x93, 0xcf, 0x19, 0xd6, 0x93, - 0xd0, 0x19, 0xd7, 0x94, 0xd2, 0x19, 0xd7, 0x94, 0xd2, 0x19, 0xd7, 0x94, - 0xd2, 0x19, 0xd7, 0x94, 0xd2, 0x19, 0xd8, 0x94, 0xd2, 0x19, 0xd8, 0x94, - 0xd2, 0x19, 0xd8, 0x94, 0xd2, 0x19, 0xd9, 0x94, 0xd2, 0x19, 0xd9, 0x94, - 0xd2, 0x19, 0xd9, 0x94, 0xd2, 0x19, 0xd9, 0x94, 0xd5, 0x19, 0xda, 0x94, - 0xd2, 0x19, 0xda, 0x94, 0xd5, 0x19, 0xda, 0x94, 0xd2, 0x19, 0xda, 0x94, - 0xd5, 0x19, 0xdb, 0x94, 0xd5, 0x19, 0xdb, 0x94, 0xd5, 0x19, 0xdb, 0x94, - 0xd5, 0x19, 0xdb, 0x94, 0xd5, 0x19, 0xdc, 0x95, 0xd7, 0x19, 0xdc, 0x94, - 0xd5, 0x19, 0xdc, 0x95, 0xd7, 0x19, 0xdd, 0x94, 0xd5, 0x19, 0xdd, 0x95, - 0xd7, 0x19, 0xdd, 0x95, 0xd7, 0x19, 0xdd, 0x95, 0xd7, 0x19, 0xde, 0x95, - 0xd7, 0x19, 0xde, 0x95, 0xd7, 0x19, 0xde, 0x96, 0xda, 0x19, 0xde, 0x96, - 0xda, 0x19, 0xdf, 0x96, 0xda, 0x19, 0xdf, 0x96, 0xda, 0x19, 0xdf, 0x96, - 0xda, 0x19, 0xdf, 0x96, 0xda, 0x19, 0xe0, 0x96, 0xda, 0x19, 0xe0, 0x96, - 0xda, 0x19, 0xe0, 0x96, 0xda, 0x19, 0xe1, 0x96, 0xda, 0x19, 0xe1, 0x96, - 0xda, 0x19, 0xe1, 0x96, 0xda, 0x19, 0xe1, 0x97, 0xdd, 0x19, 0xe2, 0x96, - 0xda, 0x19, 0xe2, 0x97, 0xdd, 0x19, 0xe2, 0x96, 0xda, 0x19, 0xe2, 0x97, - 0xdd, 0x19, 0xe3, 0x97, 0xdc, 0x19, 0xe3, 0x97, 0xdd, 0x19, 0xe3, 0x97, - 0xdc, 0x19, 0xe3, 0x97, 0xdd, 0x19, 0xe4, 0x98, 0xdf, 0x19, 0xe4, 0x97, - 0xdd, 0x19, 0xe4, 0x98, 0xdf, 0x19, 0xe4, 0x97, 0xdd, 0x19, 0xe5, 0x98, - 0xdf, 0x19, 0xe5, 0x98, 0xdf, 0x19, 0xe5, 0x98, 0xdf, 0x19, 0xe5, 0x98, - 0xdf, 0x19, 0xe6, 0x98, 0xdf, 0x19, 0xe6, 0x99, 0xe1, 0x19, 0xe6, 0x99, - 0xe2, 0x19, 0xe6, 0x99, 0xe1, 0x19, 0xe7, 0x99, 0xe2, 0x19, 0xe7, 0x99, - 0xe1, 0x19, 0xe7, 0x99, 0xe2, 0x19, 0xe7, 0x99, 0xe1, 0x19, 0xe8, 0x99, - 0xe2, 0x19, 0xe8, 0x99, 0xe1, 0x19, 0xe8, 0x99, 0xe2, 0x19, 0xe8, 0x9a, - 0xe4, 0x19, 0xe9, 0x99, 0xe2, 0x19, 0xe9, 0x9a, 0xe4, 0x19, 0xe9, 0x99, - 0xe2, 0x19, 0xe9, 0x9a, 0xe4, 0x19, 0xea, 0x99, 0xe2, 0x19, 0xea, 0x9a, - 0xe4, 0x19, 0xea, 0x9a, 0xe4, 0x19, 0xea, 0x9a, 0xe4, 0x19, 0xeb, 0x9a, - 0xe4, 0x19, 0xeb, 0x9a, 0xe4, 0x19, 0xeb, 0x9a, 0xe6, 0x19, 0xeb, 0x9a, - 0xe4, 0x19, 0xec, 0x9a, 0xe6, 0x19, 0xec, 0x9a, 0xe4, 0x19, 0xec, 0x9a, - 0xe6, 0x19, 0xec, 0x9a, 0xe6, 0x19, 0xec, 0x9a, 0xe6, 0x19, 0xed, 0x9a, - 0xe6, 0x19, 0xed, 0x9a, 0xe6, 0x19, 0xed, 0x9b, 0xe8, 0x19, 0xed, 0x9b, - 0xe9, 0x19, 0xee, 0x9b, 0xe8, 0x19, 0xee, 0x9b, 0xe9, 0x19, 0xee, 0x9b, - 0xe8, 0x19, 0xee, 0x9b, 0xe9, 0x19, 0xef, 0x9b, 0xe8, 0x19, 0xef, 0x9b, - 0xe9, 0x19, 0xef, 0x9b, 0xe8, 0x19, 0xef, 0x9b, 0xe9, 0x19, 0xf0, 0x9c, - 0xeb, 0x19, 0xf0, 0x9b, 0xe9, 0x19, 0xf0, 0x9c, 0xeb, 0x19, 0xf0, 0x9b, - 0xe9, 0x19, 0xf1, 0x9c, 0xeb, 0x19, 0xf1, 0x9c, 0xeb, 0x19, 0xf1, 0x9c, - 0xeb, 0x19, 0xf1, 0x9c, 0xeb, 0x19, 0xf2, 0x9c, 0xeb, 0x19, 0xf2, 0x9d, - 0xed, 0x19, 0xf2, 0x9d, 0xed, 0x19, 0xf2, 0x9d, 0xed, 0x19, 0xf2, 0x9d, - 0xed, 0x19, 0xf3, 0x9d, 0xed, 0x19, 0xf3, 0x9d, 0xed, 0x19, 0xf3, 0x9d, - 0xed, 0x19, 0xf3, 0x9d, 0xed, 0x19, 0xf4, 0x9d, 0xed, 0x19, 0xf4, 0x9d, - 0xed, 0x19, 0xf4, 0x9e, 0xef, 0x19, 0xf4, 0x9d, 0xed, 0x19, 0xf5, 0x9e, - 0xef, 0x19, 0xf5, 0x9d, 0xed, 0x19, 0xf5, 0x9e, 0xef, 0x19, 0xf5, 0x9d, - 0xed, 0x19, 0xf5, 0x9e, 0xef, 0x19, 0xf6, 0x9e, 0xef, 0x19, 0xf6, 0x9e, - 0xef, 0x19, 0xf6, 0x9f, 0xf2, 0x19, 0xf6, 0x9e, 0xef, 0x19, 0xf7, 0x9f, - 0xf2, 0x19, 0xf7, 0x9e, 0xef, 0x19, 0xf7, 0x9f, 0xf2, 0x19, 0xf7, 0x9e, - 0xef, 0x19, 0xf8, 0x9f, 0xf2, 0x19, 0xf8, 0x9f, 0xf1, 0x19, 0xf8, 0x9f, - 0xf2, 0x19, 0xf8, 0x9f, 0xf1, 0x19, 0xf8, 0x9f, 0xf2, 0x19, 0xf9, 0x9f, - 0xf4, 0x19, 0xf9, 0x9f, 0xf4, 0x19, 0xf9, 0x9f, 0xf4, 0x19, 0xf9, 0x9f, - 0xf4, 0x19, 0xfa, 0x9f, 0xf4, 0x19, 0xfa, 0x9f, 0xf4, 0x19, 0xfa, 0x9f, - 0xf4, 0x19, 0xfa, 0x9f, 0xf4, 0x19, 0xfa, 0x9f, 0xf4, 0x19, 0xfb, 0x9f, - 0xf4, 0x19, 0xfb, 0xa0, 0xf6, 0x19, 0xfb, 0x9f, 0xf4, 0x19, 0xfb, 0xa0, - 0xf6, 0x19, 0xfc, 0x9f, 0xf4, 0x19, 0xfc, 0xa0, 0xf6, 0x19, 0xfc, 0x9f, - 0xf4, 0x19, 0xfc, 0xa0, 0xf6, 0x19, 0xfc, 0xa0, 0xf6, 0x19, 0xfd, 0xa0, - 0xf6, 0x19, 0xfd, 0xa1, 0xf8, 0x19, 0xfd, 0xa0, 0xf6, 0x19, 0xfd, 0xa1, - 0xf8, 0x19, 0xfe, 0xa0, 0xf6, 0x19, 0xfe, 0xa1, 0xf8, 0x19, 0xfe, 0xa0, - 0xf6, 0x19, 0xfe, 0xa1, 0xf8, 0x19, 0xfe, 0xa1, 0xf8, 0x19, 0xff, 0xa1, - 0xf8, 0x19, 0xff, 0xa2, 0xfa, 0x19, 0x03, 0x84, 0x9b, 0x1a, 0x0a, 0x84, - 0x9b, 0x1a, 0x0f, 0x84, 0x9b, 0x1a, 0x14, 0x84, 0x9b, 0x1a, 0x17, 0x84, - 0x9b, 0x1a, 0x1b, 0x84, 0x9b, 0x1a, 0x1e, 0x84, 0x9b, 0x1a, 0x20, 0x86, - 0x9b, 0x1a, 0x23, 0x84, 0x9b, 0x1a, 0x25, 0x86, 0x9b, 0x1a, 0x27, 0x84, - 0x9b, 0x1a, 0x29, 0x86, 0x9b, 0x1a, 0x2b, 0x84, 0x9b, 0x1a, 0x2d, 0x86, - 0x9b, 0x1a, 0x2f, 0x84, 0x9b, 0x1a, 0x31, 0x86, 0x9b, 0x1a, 0x32, 0x84, - 0x9b, 0x1a, 0x34, 0x86, 0x9b, 0x1a, 0x35, 0x84, 0x9b, 0x1a, 0x37, 0x86, - 0x9b, 0x1a, 0x38, 0x84, 0x9b, 0x1a, 0x3a, 0x86, 0x9b, 0x1a, 0x3b, 0x84, - 0x9b, 0x1a, 0x3c, 0x86, 0x9b, 0x1a, 0x3e, 0x84, 0x9b, 0x1a, 0x3f, 0x86, - 0x9b, 0x1a, 0x40, 0x84, 0x9b, 0x1a, 0x42, 0x86, 0x9b, 0x1a, 0x43, 0x84, - 0x9b, 0x1a, 0x44, 0x86, 0x9b, 0x1a, 0x45, 0x84, 0x9b, 0x1a, 0x46, 0x86, - 0x9b, 0x1a, 0x47, 0x84, 0x9b, 0x1a, 0x48, 0x84, 0x9c, 0x1a, 0x49, 0x84, - 0x9b, 0x1a, 0x4a, 0x84, 0x9c, 0x1a, 0x4b, 0x84, 0x9b, 0x1a, 0x4c, 0x84, - 0x9c, 0x1a, 0x4d, 0x84, 0x9b, 0x1a, 0x4e, 0x84, 0x9c, 0x1a, 0x4f, 0x84, - 0x9b, 0x1a, 0x50, 0x84, 0x9c, 0x1a, 0x51, 0x84, 0x9b, 0x1a, 0x52, 0x84, - 0x9c, 0x1a, 0x53, 0x84, 0x9b, 0x1a, 0x54, 0x84, 0x9c, 0x1a, 0x55, 0x84, - 0x9b, 0x1a, 0x56, 0x84, 0x9c, 0x1a, 0x57, 0x84, 0x9b, 0x1a, 0x58, 0x84, - 0x9c, 0x1a, 0x58, 0x84, 0x9b, 0x1a, 0x59, 0x84, 0x9c, 0x1a, 0x5a, 0x84, - 0x9b, 0x1a, 0x5b, 0x84, 0x9c, 0x1a, 0x5c, 0x84, 0x9b, 0x1a, 0x5d, 0x84, - 0x9c, 0x1a, 0x5d, 0x84, 0x9b, 0x1a, 0x5e, 0x84, 0x9c, 0x1a, 0x5f, 0x84, - 0x9b, 0x1a, 0x60, 0x84, 0x9c, 0x1a, 0x60, 0x84, 0x9b, 0x1a, 0x61, 0x84, - 0x9c, 0x1a, 0x62, 0x84, 0x9b, 0x1a, 0x63, 0x84, 0x9c, 0x1a, 0x63, 0x84, - 0x9b, 0x1a, 0x64, 0x84, 0x9c, 0x1a, 0x65, 0x84, 0x9b, 0x1a, 0x66, 0x84, - 0x9c, 0x1a, 0x66, 0x84, 0x9b, 0x1a, 0x67, 0x84, 0x9c, 0x1a, 0x68, 0x84, - 0x9b, 0x1a, 0x68, 0x84, 0x9c, 0x1a, 0x69, 0x84, 0x9b, 0x1a, 0x6a, 0x84, - 0x9c, 0x1a, 0x6a, 0x84, 0x9b, 0x1a, 0x6b, 0x84, 0x9c, 0x1a, 0x6c, 0x84, - 0x9b, 0x1a, 0x6c, 0x84, 0x9c, 0x1a, 0x6d, 0x84, 0x9b, 0x1a, 0x6e, 0x84, - 0x9c, 0x1a, 0x6e, 0x84, 0x9b, 0x1a, 0x6f, 0x84, 0x9c, 0x1a, 0x70, 0x84, - 0x9b, 0x1a, 0x70, 0x84, 0x9c, 0x1a, 0x71, 0x84, 0x9b, 0x1a, 0x72, 0x84, - 0x9c, 0x1a, 0x72, 0x84, 0x9b, 0x1a, 0x73, 0x84, 0x9c, 0x1a, 0x73, 0x84, - 0x9b, 0x1a, 0x74, 0x84, 0x9c, 0x1a, 0x75, 0x84, 0x9b, 0x1a, 0x75, 0x84, - 0x9c, 0x1a, 0x76, 0x84, 0x9b, 0x1a, 0x76, 0x84, 0x9c, 0x1a, 0x77, 0x84, - 0x9b, 0x1a, 0x78, 0x84, 0x9c, 0x1a, 0x78, 0x84, 0x9b, 0x1a, 0x79, 0x84, - 0x9c, 0x1a, 0x79, 0x84, 0x9b, 0x1a, 0x7a, 0x84, 0x9c, 0x1a, 0x7a, 0x84, - 0x9b, 0x1a, 0x7b, 0x84, 0x9c, 0x1a, 0x7c, 0x84, 0x9b, 0x1a, 0x7c, 0x84, - 0x9c, 0x1a, 0x7d, 0x84, 0x9b, 0x1a, 0x7d, 0x84, 0x9c, 0x1a, 0x7e, 0x84, - 0x9b, 0x1a, 0x7e, 0x84, 0x9c, 0x1a, 0x7f, 0x84, 0x9b, 0x1a, 0x7f, 0x84, - 0x9c, 0x1a, 0x80, 0x84, 0x9b, 0x1a, 0x81, 0x84, 0x9c, 0x1a, 0x81, 0x84, - 0x9b, 0x1a, 0x82, 0x84, 0x9c, 0x1a, 0x82, 0x84, 0x9b, 0x1a, 0x83, 0x84, - 0x9c, 0x1a, 0x83, 0x84, 0x9b, 0x1a, 0x84, 0x84, 0x9c, 0x1a, 0x84, 0x84, - 0x9b, 0x1a, 0x85, 0x84, 0x9c, 0x1a, 0x85, 0x84, 0x9b, 0x1a, 0x86, 0x84, - 0x9c, 0x1a, 0x86, 0x84, 0x9b, 0x1a, 0x87, 0x84, 0x9c, 0x1a, 0x87, 0x84, - 0x9b, 0x1a, 0x88, 0x84, 0x9c, 0x1a, 0x88, 0x84, 0x9b, 0x1a, 0x89, 0x84, - 0x9c, 0x1a, 0x89, 0x84, 0x9b, 0x1a, 0x8a, 0x84, 0x9c, 0x1a, 0x8a, 0x84, - 0x9b, 0x1a, 0x8b, 0x84, 0x9c, 0x1a, 0x8b, 0x84, 0x9b, 0x1a, 0x8c, 0x84, - 0x9c, 0x1a, 0x8c, 0x84, 0x9b, 0x1a, 0x8d, 0x84, 0x9c, 0x1a, 0x8d, 0x84, - 0x9b, 0x1a, 0x8e, 0x84, 0x9c, 0x1a, 0x8e, 0x84, 0x9b, 0x1a, 0x8e, 0x84, - 0x9c, 0x1a, 0x8f, 0x84, 0x9b, 0x1a, 0x8f, 0x84, 0x9c, 0x1a, 0x90, 0x84, - 0x9b, 0x1a, 0x90, 0x84, 0x9c, 0x1a, 0x91, 0x84, 0x9b, 0x1a, 0x91, 0x84, - 0x9c, 0x1a, 0x92, 0x84, 0x9b, 0x1a, 0x92, 0x84, 0x9c, 0x1a, 0x93, 0x84, - 0x9b, 0x1a, 0x93, 0x84, 0x9c, 0x1a, 0x94, 0x84, 0x9b, 0x1a, 0x94, 0x84, - 0x9c, 0x1a, 0x94, 0x84, 0x9b, 0x1a, 0x95, 0x84, 0x9c, 0x1a, 0x95, 0x84, - 0x9b, 0x1a, 0x96, 0x84, 0x9c, 0x1a, 0x96, 0x84, 0x9b, 0x1a, 0x97, 0x84, - 0x9c, 0x1a, 0x97, 0x84, 0x9b, 0x1a, 0x98, 0x84, 0x9c, 0x1a, 0x98, 0x84, - 0x9b, 0x1a, 0x98, 0x84, 0x9c, 0x1a, 0x99, 0x84, 0x9b, 0x1a, 0x99, 0x84, - 0x9c, 0x1a, 0x9a, 0x84, 0x9b, 0x1a, 0x9a, 0x84, 0x9c, 0x1a, 0x9a, 0x84, - 0x9b, 0x1a, 0x9b, 0x84, 0x9c, 0x1a, 0x9b, 0x84, 0x9b, 0x1a, 0x9c, 0x84, - 0x9c, 0x1a, 0x9c, 0x84, 0x9c, 0x1a, 0x9d, 0x84, 0x9d, 0x1a, 0x9d, 0x84, - 0x9d, 0x1a, 0x9d, 0x84, 0x9d, 0x1a, 0x9e, 0x84, 0x9e, 0x1a, 0x9e, 0x84, - 0x9e, 0x1a, 0x9f, 0x84, 0x9f, 0x1a, 0x9f, 0x84, 0x9e, 0x1a, 0x9f, 0x84, - 0x9f, 0x1a, 0xa0, 0x84, 0x9e, 0x1a, 0xa0, 0x84, 0x9f, 0x1a, 0xa1, 0x84, - 0x9e, 0x1a, 0xa1, 0x84, 0x9f, 0x1a, 0xa1, 0x84, 0x9e, 0x1a, 0xa2, 0x84, - 0x9f, 0x1a, 0xa2, 0x84, 0x9e, 0x1a, 0xa3, 0x84, 0x9f, 0x1a, 0xa3, 0x84, - 0x9e, 0x1a, 0xa3, 0x84, 0x9f, 0x1a, 0xa4, 0x84, 0x9e, 0x1a, 0xa4, 0x84, - 0x9f, 0x1a, 0xa5, 0x84, 0x9e, 0x1a, 0xa5, 0x84, 0x9f, 0x1a, 0xa5, 0x84, - 0x9e, 0x1a, 0xa6, 0x84, 0x9f, 0x1a, 0xa6, 0x85, 0xa2, 0x1a, 0xa6, 0x84, - 0x9f, 0x1a, 0xa7, 0x85, 0xa2, 0x1a, 0xa7, 0x85, 0xa2, 0x1a, 0xa8, 0x85, - 0xa2, 0x1a, 0xa8, 0x85, 0xa2, 0x1a, 0xa8, 0x85, 0xa2, 0x1a, 0xa9, 0x85, - 0xa2, 0x1a, 0xa9, 0x85, 0xa2, 0x1a, 0xaa, 0x86, 0xa6, 0x1a, 0xaa, 0x86, - 0xa6, 0x1a, 0xaa, 0x86, 0xa6, 0x1a, 0xab, 0x86, 0xa6, 0x1a, 0xab, 0x86, - 0xa6, 0x1a, 0xab, 0x86, 0xa6, 0x1a, 0xac, 0x86, 0xa6, 0x1a, 0xac, 0x86, - 0xa6, 0x1a, 0xac, 0x86, 0xa6, 0x1a, 0xad, 0x86, 0xa6, 0x1a, 0xad, 0x87, - 0xaa, 0x1a, 0xae, 0x86, 0xa6, 0x1a, 0xae, 0x87, 0xaa, 0x1a, 0xae, 0x87, - 0xa9, 0x1a, 0xaf, 0x87, 0xaa, 0x1a, 0xaf, 0x87, 0xa9, 0x1a, 0xaf, 0x87, - 0xaa, 0x1a, 0xb0, 0x87, 0xa9, 0x1a, 0xb0, 0x87, 0xaa, 0x1a, 0xb0, 0x88, - 0xad, 0x1a, 0xb1, 0x88, 0xad, 0x1a, 0xb1, 0x88, 0xad, 0x1a, 0xb2, 0x88, - 0xad, 0x1a, 0xb2, 0x88, 0xad, 0x1a, 0xb2, 0x88, 0xad, 0x1a, 0xb3, 0x88, - 0xad, 0x1a, 0xb3, 0x88, 0xad, 0x1a, 0xb3, 0x88, 0xad, 0x1a, 0xb4, 0x88, - 0xad, 0x1a, 0xb4, 0x88, 0xad, 0x1a, 0xb4, 0x88, 0xad, 0x1a, 0xb5, 0x89, - 0xb0, 0x1a, 0xb5, 0x88, 0xad, 0x1a, 0xb5, 0x89, 0xb0, 0x1a, 0xb6, 0x89, - 0xb2, 0x1a, 0xb6, 0x89, 0xb0, 0x1a, 0xb6, 0x89, 0xb2, 0x1a, 0xb7, 0x89, - 0xb0, 0x1a, 0xb7, 0x89, 0xb2, 0x1a, 0xb7, 0x89, 0xb0, 0x1a, 0xb8, 0x89, - 0xb2, 0x1a, 0xb8, 0x89, 0xb2, 0x1a, 0xb8, 0x89, 0xb2, 0x1a, 0xb9, 0x89, - 0xb2, 0x1a, 0xb9, 0x89, 0xb2, 0x1a, 0xb9, 0x8a, 0xb3, 0x1a, 0xba, 0x8a, - 0xb4, 0x1a, 0xba, 0x8a, 0xb3, 0x1a, 0xba, 0x8a, 0xb4, 0x1a, 0xbb, 0x8b, - 0xb7, 0x1a, 0xbb, 0x8b, 0xb7, 0x1a, 0xbb, 0x8b, 0xb7, 0x1a, 0xbc, 0x8b, - 0xb7, 0x1a, 0xbc, 0x8b, 0xb7, 0x1a, 0xbc, 0x8b, 0xb7, 0x1a, 0xbd, 0x8b, - 0xb7, 0x1a, 0xbd, 0x8b, 0xb7, 0x1a, 0xbd, 0x8b, 0xb7, 0x1a, 0xbe, 0x8b, - 0xb7, 0x1a, 0xbe, 0x8c, 0xba, 0x1a, 0xbe, 0x8b, 0xb7, 0x1a, 0xbf, 0x8c, - 0xba, 0x1a, 0xbf, 0x8b, 0xb7, 0x1a, 0xbf, 0x8c, 0xba, 0x1a, 0xc0, 0x8c, - 0xba, 0x1a, 0xc0, 0x8c, 0xba, 0x1a, 0xc0, 0x8c, 0xba, 0x1a, 0xc1, 0x8c, - 0xba, 0x1a, 0xc1, 0x8d, 0xbd, 0x1a, 0xc1, 0x8c, 0xba, 0x1a, 0xc1, 0x8d, - 0xbd, 0x1a, 0xc2, 0x8c, 0xba, 0x1a, 0xc2, 0x8d, 0xbd, 0x1a, 0xc2, 0x8d, - 0xbd, 0x1a, 0xc3, 0x8d, 0xbd, 0x1a, 0xc3, 0x8d, 0xbd, 0x1a, 0xc3, 0x8d, - 0xbd, 0x1a, 0xc4, 0x8e, 0xc0, 0x1a, 0xc4, 0x8e, 0xc0, 0x1a, 0xc4, 0x8e, - 0xc0, 0x1a, 0xc5, 0x8e, 0xc0, 0x1a, 0xc5, 0x8e, 0xc0, 0x1a, 0xc5, 0x8e, - 0xc0, 0x1a, 0xc6, 0x8e, 0xc0, 0x1a, 0xc6, 0x8e, 0xc0, 0x1a, 0xc6, 0x8e, - 0xc0, 0x1a, 0xc6, 0x8e, 0xc0, 0x1a, 0xc7, 0x8e, 0xc0, 0x1a, 0xc7, 0x8e, - 0xc0, 0x1a, 0xc7, 0x8e, 0xc3, 0x1a, 0xc8, 0x8e, 0xc0, 0x1a, 0xc8, 0x8e, - 0xc3, 0x1a, 0xc8, 0x8e, 0xc3, 0x1a, 0xc9, 0x8e, 0xc3, 0x1a, 0xc9, 0x8e, - 0xc3, 0x1a, 0xc9, 0x8e, 0xc3, 0x1a, 0xc9, 0x8e, 0xc3, 0x1a, 0xca, 0x8e, - 0xc3, 0x1a, 0xca, 0x8f, 0xc6, 0x1a, 0xca, 0x8e, 0xc3, 0x1a, 0xcb, 0x8f, - 0xc6, 0x1a, 0xcb, 0x8e, 0xc3, 0x1a, 0xcb, 0x8f, 0xc6, 0x1a, 0xcc, 0x8f, - 0xc6, 0x1a, 0xcc, 0x8f, 0xc6, 0x1a, 0xcc, 0x8f, 0xc6, 0x1a, 0xcc, 0x8f, - 0xc6, 0x1a, 0xcd, 0x90, 0xc9, 0x1a, 0xcd, 0x90, 0xc9, 0x1a, 0xcd, 0x90, - 0xc9, 0x1a, 0xce, 0x90, 0xc9, 0x1a, 0xce, 0x90, 0xc9, 0x1a, 0xce, 0x90, - 0xc9, 0x1a, 0xce, 0x90, 0xc9, 0x1a, 0xcf, 0x90, 0xc9, 0x1a, 0xcf, 0x90, - 0xc9, 0x1a, 0xcf, 0x90, 0xc9, 0x1a, 0xd0, 0x91, 0xcc, 0x1a, 0xd0, 0x90, - 0xc9, 0x1a, 0xd0, 0x91, 0xcc, 0x1a, 0xd0, 0x90, 0xc9, 0x1a, 0xd1, 0x91, - 0xcc, 0x1a, 0xd1, 0x91, 0xcb, 0x1a, 0xd1, 0x91, 0xcc, 0x1a, 0xd2, 0x91, - 0xcb, 0x1a, 0xd2, 0x91, 0xcc, 0x1a, 0xd2, 0x91, 0xcb, 0x1a, 0xd2, 0x91, - 0xcc, 0x1a, 0xd3, 0x92, 0xce, 0x1a, 0xd3, 0x92, 0xce, 0x1a, 0xd3, 0x92, - 0xce, 0x1a, 0xd4, 0x92, 0xce, 0x1a, 0xd4, 0x92, 0xce, 0x1a, 0xd4, 0x92, - 0xce, 0x1a, 0xd4, 0x92, 0xce, 0x1a, 0xd5, 0x92, 0xce, 0x1a, 0xd5, 0x92, - 0xce, 0x1a, 0xd5, 0x92, 0xce, 0x1a, 0xd6, 0x93, 0xd1, 0x1a, 0xd6, 0x92, - 0xce, 0x1a, 0xd6, 0x93, 0xd1, 0x1a, 0xd6, 0x92, 0xce, 0x1a, 0xd7, 0x93, - 0xd1, 0x1a, 0xd7, 0x93, 0xd1, 0x1a, 0xd7, 0x93, 0xd1, 0x1a, 0xd7, 0x93, - 0xd1, 0x1a, 0xd8, 0x93, 0xd1, 0x1a, 0xd8, 0x94, 0xd4, 0x1a, 0xd8, 0x93, - 0xd1, 0x1a, 0xd9, 0x94, 0xd4, 0x1a, 0xd9, 0x93, 0xd1, 0x1a, 0xd9, 0x94, - 0xd4, 0x1a, 0xd9, 0x94, 0xd3, 0x1a, 0xda, 0x94, 0xd4, 0x1a, 0xda, 0x94, - 0xd3, 0x1a, 0xda, 0x94, 0xd4, 0x1a, 0xda, 0x95, 0xd6, 0x1a, 0xdb, 0x95, - 0xd6, 0x1a, 0xdb, 0x95, 0xd6, 0x1a, 0xdb, 0x95, 0xd6, 0x1a, 0xdb, 0x95, - 0xd6, 0x1a, 0xdc, 0x95, 0xd6, 0x1a, 0xdc, 0x95, 0xd6, 0x1a, 0xdc, 0x95, - 0xd6, 0x1a, 0xdd, 0x95, 0xd6, 0x1a, 0xdd, 0x95, 0xd6, 0x1a, 0xdd, 0x96, - 0xd9, 0x1a, 0xdd, 0x95, 0xd6, 0x1a, 0xde, 0x96, 0xd9, 0x1a, 0xde, 0x95, - 0xd6, 0x1a, 0xde, 0x96, 0xd9, 0x1a, 0xde, 0x96, 0xd9, 0x1a, 0xdf, 0x96, - 0xd9, 0x1a, 0xdf, 0x96, 0xd9, 0x1a, 0xdf, 0x96, 0xd9, 0x1a, 0xdf, 0x97, - 0xdb, 0x1a, 0xe0, 0x96, 0xd9, 0x1a, 0xe0, 0x97, 0xdb, 0x1a, 0xe0, 0x96, - 0xd9, 0x1a, 0xe1, 0x97, 0xdb, 0x1a, 0xe1, 0x96, 0xd9, 0x1a, 0xe1, 0x97, - 0xdb, 0x1a, 0xe1, 0x97, 0xdb, 0x1a, 0xe2, 0x97, 0xdb, 0x1a, 0xe2, 0x97, - 0xdb, 0x1a, 0xe2, 0x97, 0xdb, 0x1a, 0xe2, 0x98, 0xde, 0x1a, 0xe3, 0x98, - 0xde, 0x1a, 0xe3, 0x98, 0xde, 0x1a, 0xe3, 0x98, 0xde, 0x1a, 0xe3, 0x98, - 0xde, 0x1a, 0xe4, 0x98, 0xde, 0x1a, 0xe4, 0x98, 0xde, 0x1a, 0xe4, 0x98, - 0xde, 0x1a, 0xe4, 0x98, 0xde, 0x1a, 0xe5, 0x98, 0xde, 0x1a, 0xe5, 0x98, - 0xe0, 0x1a, 0xe5, 0x98, 0xde, 0x1a, 0xe5, 0x98, 0xe0, 0x1a, 0xe6, 0x98, - 0xde, 0x1a, 0xe6, 0x98, 0xe0, 0x1a, 0xe6, 0x98, 0xe0, 0x1a, 0xe6, 0x98, - 0xe0, 0x1a, 0xe7, 0x98, 0xe0, 0x1a, 0xe7, 0x98, 0xe0, 0x1a, 0xe7, 0x99, - 0xe3, 0x1a, 0xe7, 0x98, 0xe0, 0x1a, 0xe8, 0x99, 0xe3, 0x1a, 0xe8, 0x98, - 0xe0, 0x1a, 0xe8, 0x99, 0xe3, 0x1a, 0xe8, 0x99, 0xe2, 0x1a, 0xe9, 0x99, - 0xe3, 0x1a, 0xe9, 0x99, 0xe2, 0x1a, 0xe9, 0x99, 0xe3, 0x1a, 0xe9, 0x9a, - 0xe5, 0x1a, 0xea, 0x9a, 0xe5, 0x1a, 0xea, 0x9a, 0xe5, 0x1a, 0xea, 0x9a, - 0xe5, 0x1a, 0xea, 0x9a, 0xe5, 0x1a, 0xeb, 0x9a, 0xe5, 0x1a, 0xeb, 0x9a, - 0xe5, 0x1a, 0xeb, 0x9a, 0xe5, 0x1a, 0xeb, 0x9a, 0xe5, 0x1a, 0xec, 0x9a, - 0xe5, 0x1a, 0xec, 0x9a, 0xe5, 0x1a, 0xec, 0x9a, 0xe5, 0x1a, 0xec, 0x9b, - 0xe7, 0x1a, 0xec, 0x9a, 0xe5, 0x1a, 0xed, 0x9b, 0xe7, 0x1a, 0xed, 0x9a, - 0xe5, 0x1a, 0xed, 0x9b, 0xe7, 0x1a, 0xed, 0x9b, 0xe7, 0x1a, 0xee, 0x9b, - 0xe7, 0x1a, 0xee, 0x9b, 0xe7, 0x1a, 0xee, 0x9b, 0xe7, 0x1a, 0xee, 0x9c, - 0xea, 0x1a, 0xef, 0x9c, 0xea, 0x1a, 0xef, 0x9c, 0xea, 0x1a, 0xef, 0x9c, - 0xea, 0x1a, 0xef, 0x9c, 0xea, 0x1a, 0xf0, 0x9c, 0xea, 0x1a, 0xf0, 0x9c, - 0xea, 0x1a, 0xf0, 0x9c, 0xea, 0x1a, 0xf0, 0x9c, 0xea, 0x1a, 0xf1, 0x9c, - 0xea, 0x1a, 0xf1, 0x9d, 0xec, 0x1a, 0xf1, 0x9c, 0xea, 0x1a, 0xf1, 0x9d, - 0xec, 0x1a, 0xf2, 0x9c, 0xea, 0x1a, 0xf2, 0x9d, 0xec, 0x1a, 0xf2, 0x9d, - 0xec, 0x1a, 0xf2, 0x9d, 0xec, 0x1a, 0xf2, 0x9d, 0xec, 0x1a, 0xf3, 0x9d, - 0xec, 0x1a, 0xf3, 0x9d, 0xee, 0x1a, 0xf3, 0x9d, 0xec, 0x1a, 0xf3, 0x9d, - 0xee, 0x1a, 0xf4, 0x9d, 0xec, 0x1a, 0xf4, 0x9d, 0xee, 0x1a, 0xf4, 0x9d, - 0xec, 0x1a, 0xf4, 0x9d, 0xee, 0x1a, 0xf5, 0x9d, 0xee, 0x1a, 0xf5, 0x9d, - 0xee, 0x1a, 0xf5, 0x9e, 0xf0, 0x1a, 0xf5, 0x9e, 0xf1, 0x1a, 0xf5, 0x9e, - 0xf0, 0x1a, 0xf6, 0x9e, 0xf1, 0x1a, 0xf6, 0x9e, 0xf0, 0x1a, 0xf6, 0x9e, - 0xf1, 0x1a, 0xf6, 0x9e, 0xf0, 0x1a, 0xf7, 0x9e, 0xf1, 0x1a, 0xf7, 0x9e, - 0xf0, 0x1a, 0xf7, 0x9e, 0xf1, 0x1a, 0xf7, 0x9f, 0xf3, 0x1a, 0xf8, 0x9e, - 0xf1, 0x1a, 0xf8, 0x9f, 0xf3, 0x1a, 0xf8, 0x9e, 0xf1, 0x1a, 0xf8, 0x9f, - 0xf3, 0x1a, 0xf8, 0x9e, 0xf1, 0x1a, 0xf9, 0x9f, 0xf3, 0x1a, 0xf9, 0x9f, - 0xf2, 0x1a, 0xf9, 0x9f, 0xf3, 0x1a, 0xf9, 0x9f, 0xf2, 0x1a, 0xfa, 0x9f, - 0xf3, 0x1a, 0xfa, 0xa0, 0xf5, 0x1a, 0xfa, 0x9f, 0xf3, 0x1a, 0xfa, 0xa0, - 0xf5, 0x1a, 0xfa, 0x9f, 0xf3, 0x1a, 0xfb, 0xa0, 0xf5, 0x1a, 0xfb, 0xa0, - 0xf5, 0x1a, 0xfb, 0xa0, 0xf5, 0x1a, 0xfb, 0xa0, 0xf5, 0x1a, 0xfc, 0xa0, - 0xf5, 0x1a, 0xfc, 0xa1, 0xf7, 0x1a, 0xfc, 0xa1, 0xf7, 0x1a, 0xfc, 0xa1, - 0xf7, 0x1a, 0xfc, 0xa1, 0xf7, 0x1a, 0xfd, 0xa1, 0xf7, 0x1a, 0xfd, 0xa1, - 0xf7, 0x1a, 0xfd, 0xa1, 0xf7, 0x1a, 0xfd, 0xa1, 0xf7, 0x1a, 0xfe, 0xa1, - 0xf7, 0x1a, 0xfe, 0xa1, 0xf7, 0x1a, 0xfe, 0xa1, 0xf9, 0x1a, 0xfe, 0xa1, - 0xf7, 0x1a, 0xfe, 0xa1, 0xf9, 0x1a, 0xff, 0xa1, 0xf7, 0x1a, 0xff, 0xa1, - 0xf9, 0x1a, 0x03, 0x83, 0x9b, 0x1a, 0x0a, 0x83, 0x9b, 0x1a, 0x0f, 0x83, - 0x9b, 0x1a, 0x14, 0x83, 0x9b, 0x1a, 0x17, 0x83, 0x9b, 0x1a, 0x1b, 0x83, - 0x9b, 0x1a, 0x1e, 0x83, 0x9b, 0x1a, 0x20, 0x83, 0x9c, 0x1a, 0x23, 0x83, - 0x9b, 0x1a, 0x25, 0x83, 0x9c, 0x1a, 0x27, 0x83, 0x9b, 0x1a, 0x29, 0x83, - 0x9c, 0x1a, 0x2b, 0x83, 0x9b, 0x1a, 0x2d, 0x83, 0x9c, 0x1a, 0x2f, 0x83, - 0x9b, 0x1a, 0x31, 0x83, 0x9c, 0x1a, 0x32, 0x83, 0x9b, 0x1a, 0x34, 0x83, - 0x9c, 0x1a, 0x35, 0x83, 0x9b, 0x1a, 0x37, 0x83, 0x9c, 0x1a, 0x38, 0x83, - 0x9b, 0x1a, 0x3a, 0x83, 0x9c, 0x1a, 0x3b, 0x83, 0x9b, 0x1a, 0x3c, 0x83, - 0x9c, 0x1a, 0x3e, 0x83, 0x9b, 0x1a, 0x3f, 0x83, 0x9c, 0x1a, 0x40, 0x83, - 0x9b, 0x1a, 0x42, 0x83, 0x9c, 0x1a, 0x43, 0x83, 0x9b, 0x1a, 0x44, 0x83, - 0x9c, 0x1a, 0x45, 0x83, 0x9b, 0x1a, 0x46, 0x83, 0x9c, 0x1a, 0x47, 0x83, - 0x9b, 0x1a, 0x48, 0x83, 0x9c, 0x1a, 0x49, 0x83, 0x9b, 0x1a, 0x4a, 0x83, - 0x9c, 0x1a, 0x4b, 0x83, 0x9b, 0x1a, 0x4c, 0x83, 0x9c, 0x1a, 0x4d, 0x83, - 0x9b, 0x1a, 0x4e, 0x83, 0x9c, 0x1a, 0x4f, 0x83, 0x9b, 0x1a, 0x50, 0x83, - 0x9c, 0x1a, 0x51, 0x83, 0x9b, 0x1a, 0x52, 0x83, 0x9c, 0x1a, 0x53, 0x83, - 0x9b, 0x1a, 0x54, 0x83, 0x9c, 0x1a, 0x55, 0x83, 0x9b, 0x1a, 0x56, 0x83, - 0x9c, 0x1a, 0x57, 0x83, 0x9b, 0x1a, 0x58, 0x83, 0x9c, 0x1a, 0x58, 0x83, - 0x9b, 0x1a, 0x59, 0x83, 0x9c, 0x1a, 0x5a, 0x83, 0x9b, 0x1a, 0x5b, 0x83, - 0x9c, 0x1a, 0x5c, 0x83, 0x9b, 0x1a, 0x5d, 0x83, 0x9c, 0x1a, 0x5d, 0x83, - 0x9b, 0x1a, 0x5e, 0x83, 0x9c, 0x1a, 0x5f, 0x83, 0x9b, 0x1a, 0x60, 0x83, - 0x9c, 0x1a, 0x60, 0x83, 0x9b, 0x1a, 0x61, 0x83, 0x9c, 0x1a, 0x62, 0x83, - 0x9b, 0x1a, 0x63, 0x83, 0x9c, 0x1a, 0x63, 0x83, 0x9b, 0x1a, 0x64, 0x83, - 0x9c, 0x1a, 0x65, 0x83, 0x9b, 0x1a, 0x66, 0x83, 0x9c, 0x1a, 0x66, 0x83, - 0x9b, 0x1a, 0x67, 0x83, 0x9c, 0x1a, 0x68, 0x83, 0x9b, 0x1a, 0x68, 0x83, - 0x9c, 0x1a, 0x69, 0x83, 0x9b, 0x1a, 0x6a, 0x83, 0x9c, 0x1a, 0x6a, 0x83, - 0x9b, 0x1a, 0x6b, 0x83, 0x9c, 0x1a, 0x6c, 0x83, 0x9b, 0x1a, 0x6c, 0x83, - 0x9c, 0x1a, 0x6d, 0x83, 0x9b, 0x1a, 0x6e, 0x83, 0x9c, 0x1a, 0x6e, 0x83, - 0x9b, 0x1a, 0x6f, 0x83, 0x9c, 0x1a, 0x70, 0x83, 0x9b, 0x1a, 0x70, 0x83, - 0x9c, 0x1a, 0x71, 0x83, 0x9b, 0x1a, 0x72, 0x83, 0x9c, 0x1a, 0x72, 0x83, - 0x9b, 0x1a, 0x73, 0x83, 0x9c, 0x1a, 0x73, 0x83, 0x9b, 0x1a, 0x74, 0x83, - 0x9c, 0x1a, 0x75, 0x83, 0x9b, 0x1a, 0x75, 0x83, 0x9c, 0x1a, 0x76, 0x83, - 0x9b, 0x1a, 0x76, 0x83, 0x9c, 0x1a, 0x77, 0x83, 0x9b, 0x1a, 0x78, 0x83, - 0x9c, 0x1a, 0x78, 0x83, 0x9b, 0x1a, 0x79, 0x83, 0x9c, 0x1a, 0x79, 0x83, - 0x9b, 0x1a, 0x7a, 0x83, 0x9c, 0x1a, 0x7a, 0x83, 0x9b, 0x1a, 0x7b, 0x83, - 0x9c, 0x1a, 0x7c, 0x83, 0x9b, 0x1a, 0x7c, 0x83, 0x9c, 0x1a, 0x7d, 0x83, - 0x9b, 0x1a, 0x7d, 0x83, 0x9c, 0x1a, 0x7e, 0x83, 0x9b, 0x1a, 0x7e, 0x83, - 0x9c, 0x1a, 0x7f, 0x83, 0x9b, 0x1a, 0x7f, 0x83, 0x9c, 0x1a, 0x80, 0x83, - 0x9b, 0x1a, 0x81, 0x83, 0x9c, 0x1a, 0x81, 0x83, 0x9b, 0x1a, 0x82, 0x83, - 0x9c, 0x1a, 0x82, 0x83, 0x9b, 0x1a, 0x83, 0x83, 0x9c, 0x1a, 0x83, 0x83, - 0x9b, 0x1a, 0x84, 0x83, 0x9c, 0x1a, 0x84, 0x83, 0x9b, 0x1a, 0x85, 0x83, - 0x9c, 0x1a, 0x85, 0x83, 0x9b, 0x1a, 0x86, 0x83, 0x9c, 0x1a, 0x86, 0x83, - 0x9b, 0x1a, 0x87, 0x83, 0x9c, 0x1a, 0x87, 0x83, 0x9b, 0x1a, 0x88, 0x83, - 0x9c, 0x1a, 0x88, 0x83, 0x9b, 0x1a, 0x89, 0x83, 0x9c, 0x1a, 0x89, 0x83, - 0x9b, 0x1a, 0x8a, 0x83, 0x9c, 0x1a, 0x8a, 0x83, 0x9b, 0x1a, 0x8b, 0x83, - 0x9c, 0x1a, 0x8b, 0x83, 0x9b, 0x1a, 0x8c, 0x83, 0x9c, 0x1a, 0x8c, 0x83, - 0x9b, 0x1a, 0x8d, 0x83, 0x9c, 0x1a, 0x8d, 0x83, 0x9b, 0x1a, 0x8e, 0x83, - 0x9c, 0x1a, 0x8e, 0x83, 0x9b, 0x1a, 0x8e, 0x83, 0x9c, 0x1a, 0x8f, 0x83, - 0x9b, 0x1a, 0x8f, 0x83, 0x9c, 0x1a, 0x90, 0x83, 0x9b, 0x1a, 0x90, 0x83, - 0x9c, 0x1a, 0x91, 0x83, 0x9b, 0x1a, 0x91, 0x83, 0x9c, 0x1a, 0x92, 0x83, - 0x9b, 0x1a, 0x92, 0x83, 0x9c, 0x1a, 0x93, 0x83, 0x9b, 0x1a, 0x93, 0x83, - 0x9c, 0x1a, 0x94, 0x83, 0x9b, 0x1a, 0x94, 0x83, 0x9c, 0x1a, 0x94, 0x83, - 0x9b, 0x1a, 0x95, 0x83, 0x9c, 0x1a, 0x95, 0x83, 0x9b, 0x1a, 0x96, 0x83, - 0x9c, 0x1a, 0x96, 0x83, 0x9b, 0x1a, 0x97, 0x83, 0x9c, 0x1a, 0x97, 0x83, - 0x9b, 0x1a, 0x98, 0x83, 0x9c, 0x1a, 0x98, 0x83, 0x9b, 0x1a, 0x98, 0x83, - 0x9c, 0x1a, 0x99, 0x83, 0x9b, 0x1a, 0x99, 0x83, 0x9c, 0x1a, 0x9a, 0x83, - 0x9b, 0x1a, 0x9a, 0x83, 0x9c, 0x1a, 0x9a, 0x83, 0x9b, 0x1a, 0x9b, 0x83, - 0x9c, 0x1a, 0x9b, 0x83, 0x9b, 0x1a, 0x9c, 0x83, 0x9c, 0x1a, 0x9c, 0x83, - 0x9c, 0x1a, 0x9d, 0x83, 0x9d, 0x1a, 0x9d, 0x83, 0x9c, 0x1a, 0x9d, 0x83, - 0x9d, 0x1a, 0x9e, 0x83, 0x9c, 0x1a, 0x9e, 0x83, 0x9d, 0x1a, 0x9f, 0x83, - 0x9c, 0x1a, 0x9f, 0x83, 0x9d, 0x1a, 0x9f, 0x83, 0x9c, 0x1a, 0xa0, 0x83, - 0x9d, 0x1a, 0xa0, 0x83, 0x9c, 0x1a, 0xa1, 0x83, 0x9d, 0x1a, 0xa1, 0x83, - 0x9c, 0x1a, 0xa1, 0x83, 0x9d, 0x1a, 0xa2, 0x83, 0x9c, 0x1a, 0xa2, 0x83, - 0x9d, 0x1a, 0xa3, 0x83, 0x9c, 0x1a, 0xa3, 0x83, 0x9d, 0x1a, 0xa3, 0x84, - 0xa0, 0x1a, 0xa4, 0x84, 0xa1, 0x1a, 0xa4, 0x84, 0xa0, 0x1a, 0xa5, 0x84, - 0xa1, 0x1a, 0xa5, 0x84, 0xa0, 0x1a, 0xa5, 0x84, 0xa1, 0x1a, 0xa6, 0x84, - 0xa0, 0x1a, 0xa6, 0x84, 0xa1, 0x1a, 0xa6, 0x84, 0xa0, 0x1a, 0xa7, 0x84, - 0xa1, 0x1a, 0xa7, 0x84, 0xa0, 0x1a, 0xa8, 0x84, 0xa1, 0x1a, 0xa8, 0x85, - 0xa4, 0x1a, 0xa8, 0x84, 0xa1, 0x1a, 0xa9, 0x85, 0xa4, 0x1a, 0xa9, 0x85, - 0xa4, 0x1a, 0xaa, 0x85, 0xa4, 0x1a, 0xaa, 0x85, 0xa4, 0x1a, 0xaa, 0x85, - 0xa4, 0x1a, 0xab, 0x85, 0xa4, 0x1a, 0xab, 0x85, 0xa4, 0x1a, 0xab, 0x86, - 0xa8, 0x1a, 0xac, 0x85, 0xa4, 0x1a, 0xac, 0x86, 0xa8, 0x1a, 0xac, 0x86, - 0xa7, 0x1a, 0xad, 0x86, 0xa8, 0x1a, 0xad, 0x86, 0xa7, 0x1a, 0xae, 0x86, - 0xa8, 0x1a, 0xae, 0x86, 0xa7, 0x1a, 0xae, 0x86, 0xa8, 0x1a, 0xaf, 0x87, - 0xab, 0x1a, 0xaf, 0x87, 0xab, 0x1a, 0xaf, 0x87, 0xab, 0x1a, 0xb0, 0x87, - 0xab, 0x1a, 0xb0, 0x87, 0xab, 0x1a, 0xb0, 0x87, 0xab, 0x1a, 0xb1, 0x87, - 0xab, 0x1a, 0xb1, 0x87, 0xab, 0x1a, 0xb2, 0x87, 0xab, 0x1a, 0xb2, 0x87, - 0xab, 0x1a, 0xb2, 0x88, 0xaf, 0x1a, 0xb3, 0x87, 0xab, 0x1a, 0xb3, 0x88, - 0xaf, 0x1a, 0xb3, 0x87, 0xab, 0x1a, 0xb4, 0x88, 0xaf, 0x1a, 0xb4, 0x88, - 0xae, 0x1a, 0xb4, 0x88, 0xaf, 0x1a, 0xb5, 0x88, 0xae, 0x1a, 0xb5, 0x88, - 0xaf, 0x1a, 0xb5, 0x89, 0xb2, 0x1a, 0xb6, 0x89, 0xb2, 0x1a, 0xb6, 0x89, - 0xb2, 0x1a, 0xb6, 0x89, 0xb2, 0x1a, 0xb7, 0x89, 0xb2, 0x1a, 0xb7, 0x89, - 0xb2, 0x1a, 0xb7, 0x89, 0xb2, 0x1a, 0xb8, 0x89, 0xb2, 0x1a, 0xb8, 0x89, - 0xb2, 0x1a, 0xb8, 0x89, 0xb2, 0x1a, 0xb9, 0x89, 0xb2, 0x1a, 0xb9, 0x89, - 0xb2, 0x1a, 0xb9, 0x8a, 0xb5, 0x1a, 0xba, 0x89, 0xb2, 0x1a, 0xba, 0x8a, - 0xb5, 0x1a, 0xba, 0x8a, 0xb5, 0x1a, 0xbb, 0x8a, 0xb5, 0x1a, 0xbb, 0x8a, - 0xb5, 0x1a, 0xbb, 0x8a, 0xb5, 0x1a, 0xbc, 0x8a, 0xb5, 0x1a, 0xbc, 0x8a, - 0xb5, 0x1a, 0xbc, 0x8b, 0xb8, 0x1a, 0xbd, 0x8a, 0xb5, 0x1a, 0xbd, 0x8b, - 0xb8, 0x1a, 0xbd, 0x8b, 0xb8, 0x1a, 0xbe, 0x8b, 0xb8, 0x1a, 0xbe, 0x8b, - 0xb8, 0x1a, 0xbe, 0x8b, 0xb8, 0x1a, 0xbf, 0x8b, 0xb8, 0x1a, 0xbf, 0x8b, - 0xb8, 0x1a, 0xbf, 0x8c, 0xbb, 0x1a, 0xc0, 0x8c, 0xbc, 0x1a, 0xc0, 0x8c, - 0xbb, 0x1a, 0xc0, 0x8c, 0xbc, 0x1a, 0xc1, 0x8c, 0xbb, 0x1a, 0xc1, 0x8c, - 0xbc, 0x1a, 0xc1, 0x8c, 0xbb, 0x1a, 0xc1, 0x8c, 0xbc, 0x1a, 0xc2, 0x8c, - 0xbb, 0x1a, 0xc2, 0x8c, 0xbc, 0x1a, 0xc2, 0x8d, 0xbf, 0x1a, 0xc3, 0x8c, - 0xbc, 0x1a, 0xc3, 0x8d, 0xbf, 0x1a, 0xc3, 0x8c, 0xbc, 0x1a, 0xc4, 0x8d, - 0xbf, 0x1a, 0xc4, 0x8d, 0xbe, 0x1a, 0xc4, 0x8d, 0xbf, 0x1a, 0xc5, 0x8d, - 0xbe, 0x1a, 0xc5, 0x8d, 0xbf, 0x1a, 0xc5, 0x8e, 0xc1, 0x1a, 0xc6, 0x8d, - 0xbf, 0x1a, 0xc6, 0x8e, 0xc1, 0x1a, 0xc6, 0x8d, 0xbf, 0x1a, 0xc6, 0x8e, - 0xc1, 0x1a, 0xc7, 0x8e, 0xc1, 0x1a, 0xc7, 0x8e, 0xc1, 0x1a, 0xc7, 0x8e, - 0xc1, 0x1a, 0xc8, 0x8e, 0xc1, 0x1a, 0xc8, 0x8e, 0xc1, 0x1a, 0xc8, 0x8e, - 0xc1, 0x1a, 0xc9, 0x8f, 0xc4, 0x1a, 0xc9, 0x8f, 0xc5, 0x1a, 0xc9, 0x8f, - 0xc4, 0x1a, 0xc9, 0x8f, 0xc5, 0x1a, 0xca, 0x8f, 0xc4, 0x1a, 0xca, 0x8f, - 0xc5, 0x1a, 0xca, 0x8f, 0xc4, 0x1a, 0xcb, 0x8f, 0xc5, 0x1a, 0xcb, 0x8f, - 0xc4, 0x1a, 0xcb, 0x8f, 0xc5, 0x1a, 0xcc, 0x90, 0xc7, 0x1a, 0xcc, 0x8f, - 0xc5, 0x1a, 0xcc, 0x90, 0xc7, 0x1a, 0xcc, 0x8f, 0xc5, 0x1a, 0xcd, 0x90, - 0xc7, 0x1a, 0xcd, 0x90, 0xc7, 0x1a, 0xcd, 0x90, 0xc7, 0x1a, 0xce, 0x90, - 0xc7, 0x1a, 0xce, 0x90, 0xc7, 0x1a, 0xce, 0x91, 0xca, 0x1a, 0xce, 0x90, - 0xc7, 0x1a, 0xcf, 0x91, 0xca, 0x1a, 0xcf, 0x90, 0xc7, 0x1a, 0xcf, 0x91, - 0xca, 0x1a, 0xd0, 0x91, 0xca, 0x1a, 0xd0, 0x91, 0xca, 0x1a, 0xd0, 0x91, - 0xca, 0x1a, 0xd0, 0x91, 0xca, 0x1a, 0xd1, 0x92, 0xcd, 0x1a, 0xd1, 0x92, - 0xcd, 0x1a, 0xd1, 0x92, 0xcd, 0x1a, 0xd2, 0x92, 0xcd, 0x1a, 0xd2, 0x92, - 0xcd, 0x1a, 0xd2, 0x92, 0xcd, 0x1a, 0xd2, 0x92, 0xcd, 0x1a, 0xd3, 0x92, - 0xcd, 0x1a, 0xd3, 0x92, 0xcd, 0x1a, 0xd3, 0x92, 0xcd, 0x1a, 0xd4, 0x92, - 0xcd, 0x1a, 0xd4, 0x92, 0xcd, 0x1a, 0xd4, 0x93, 0xd0, 0x1a, 0xd4, 0x92, - 0xcd, 0x1a, 0xd5, 0x93, 0xd0, 0x1a, 0xd5, 0x93, 0xcf, 0x1a, 0xd5, 0x93, - 0xd0, 0x1a, 0xd6, 0x93, 0xcf, 0x1a, 0xd6, 0x93, 0xd0, 0x1a, 0xd6, 0x93, - 0xcf, 0x1a, 0xd6, 0x93, 0xd0, 0x1a, 0xd7, 0x94, 0xd2, 0x1a, 0xd7, 0x94, - 0xd2, 0x1a, 0xd7, 0x94, 0xd2, 0x1a, 0xd7, 0x94, 0xd2, 0x1a, 0xd8, 0x94, - 0xd2, 0x1a, 0xd8, 0x94, 0xd2, 0x1a, 0xd8, 0x94, 0xd2, 0x1a, 0xd9, 0x94, - 0xd2, 0x1a, 0xd9, 0x94, 0xd2, 0x1a, 0xd9, 0x94, 0xd2, 0x1a, 0xd9, 0x94, - 0xd5, 0x1a, 0xda, 0x94, 0xd2, 0x1a, 0xda, 0x94, 0xd5, 0x1a, 0xda, 0x94, - 0xd2, 0x1a, 0xda, 0x94, 0xd5, 0x1a, 0xdb, 0x94, 0xd5, 0x1a, 0xdb, 0x94, - 0xd5, 0x1a, 0xdb, 0x94, 0xd5, 0x1a, 0xdb, 0x94, 0xd5, 0x1a, 0xdc, 0x95, - 0xd7, 0x1a, 0xdc, 0x94, 0xd5, 0x1a, 0xdc, 0x95, 0xd7, 0x1a, 0xdd, 0x94, - 0xd5, 0x1a, 0xdd, 0x95, 0xd7, 0x1a, 0xdd, 0x95, 0xd7, 0x1a, 0xdd, 0x95, - 0xd7, 0x1a, 0xde, 0x95, 0xd7, 0x1a, 0xde, 0x95, 0xd7, 0x1a, 0xde, 0x96, - 0xda, 0x1a, 0xde, 0x96, 0xda, 0x1a, 0xdf, 0x96, 0xda, 0x1a, 0xdf, 0x96, - 0xda, 0x1a, 0xdf, 0x96, 0xda, 0x1a, 0xdf, 0x96, 0xda, 0x1a, 0xe0, 0x96, - 0xda, 0x1a, 0xe0, 0x96, 0xda, 0x1a, 0xe0, 0x96, 0xda, 0x1a, 0xe1, 0x96, - 0xda, 0x1a, 0xe1, 0x97, 0xdd, 0x1a, 0xe1, 0x96, 0xda, 0x1a, 0xe1, 0x97, - 0xdd, 0x1a, 0xe2, 0x96, 0xda, 0x1a, 0xe2, 0x97, 0xdd, 0x1a, 0xe2, 0x96, - 0xda, 0x1a, 0xe2, 0x97, 0xdd, 0x1a, 0xe3, 0x97, 0xdc, 0x1a, 0xe3, 0x97, - 0xdd, 0x1a, 0xe3, 0x97, 0xdc, 0x1a, 0xe3, 0x97, 0xdd, 0x1a, 0xe4, 0x98, - 0xdf, 0x1a, 0xe4, 0x97, 0xdd, 0x1a, 0xe4, 0x98, 0xdf, 0x1a, 0xe4, 0x97, - 0xdd, 0x1a, 0xe5, 0x98, 0xdf, 0x1a, 0xe5, 0x98, 0xdf, 0x1a, 0xe5, 0x98, - 0xdf, 0x1a, 0xe5, 0x98, 0xdf, 0x1a, 0xe6, 0x98, 0xdf, 0x1a, 0xe6, 0x99, - 0xe1, 0x1a, 0xe6, 0x99, 0xe2, 0x1a, 0xe6, 0x99, 0xe1, 0x1a, 0xe7, 0x99, - 0xe2, 0x1a, 0xe7, 0x99, 0xe1, 0x1a, 0xe7, 0x99, 0xe2, 0x1a, 0xe7, 0x99, - 0xe1, 0x1a, 0xe8, 0x99, 0xe2, 0x1a, 0xe8, 0x99, 0xe1, 0x1a, 0xe8, 0x99, - 0xe2, 0x1a, 0xe8, 0x9a, 0xe4, 0x1a, 0xe9, 0x99, 0xe2, 0x1a, 0xe9, 0x9a, - 0xe4, 0x1a, 0xe9, 0x99, 0xe2, 0x1a, 0xe9, 0x9a, 0xe4, 0x1a, 0xea, 0x9a, - 0xe4, 0x1a, 0xea, 0x9a, 0xe4, 0x1a, 0xea, 0x9a, 0xe4, 0x1a, 0xea, 0x9a, - 0xe4, 0x1a, 0xeb, 0x9a, 0xe6, 0x1a, 0xeb, 0x9a, 0xe4, 0x1a, 0xeb, 0x9a, - 0xe6, 0x1a, 0xeb, 0x9a, 0xe4, 0x1a, 0xec, 0x9a, 0xe6, 0x1a, 0xec, 0x9a, - 0xe4, 0x1a, 0xec, 0x9a, 0xe6, 0x1a, 0xec, 0x9a, 0xe6, 0x1a, 0xec, 0x9a, - 0xe6, 0x1a, 0xed, 0x9a, 0xe6, 0x1a, 0xed, 0x9a, 0xe6, 0x1a, 0xed, 0x9b, - 0xe8, 0x1a, 0xed, 0x9b, 0xe9, 0x1a, 0xee, 0x9b, 0xe8, 0x1a, 0xee, 0x9b, - 0xe9, 0x1a, 0xee, 0x9b, 0xe8, 0x1a, 0xee, 0x9b, 0xe9, 0x1a, 0xef, 0x9b, - 0xe8, 0x1a, 0xef, 0x9b, 0xe9, 0x1a, 0xef, 0x9b, 0xe8, 0x1a, 0xef, 0x9b, - 0xe9, 0x1a, 0xf0, 0x9c, 0xeb, 0x1a, 0xf0, 0x9b, 0xe9, 0x1a, 0xf0, 0x9c, - 0xeb, 0x1a, 0xf0, 0x9b, 0xe9, 0x1a, 0xf1, 0x9c, 0xeb, 0x1a, 0xf1, 0x9c, - 0xeb, 0x1a, 0xf1, 0x9c, 0xeb, 0x1a, 0xf1, 0x9c, 0xeb, 0x1a, 0xf2, 0x9c, - 0xeb, 0x1a, 0xf2, 0x9d, 0xed, 0x1a, 0xf2, 0x9d, 0xed, 0x1a, 0xf2, 0x9d, - 0xed, 0x1a, 0xf2, 0x9d, 0xed, 0x1a, 0xf3, 0x9d, 0xed, 0x1a, 0xf3, 0x9d, - 0xed, 0x1a, 0xf3, 0x9d, 0xed, 0x1a, 0xf3, 0x9d, 0xed, 0x1a, 0xf4, 0x9d, - 0xed, 0x1a, 0xf4, 0x9d, 0xed, 0x1a, 0xf4, 0x9e, 0xef, 0x1a, 0xf4, 0x9d, - 0xed, 0x1a, 0xf5, 0x9e, 0xef, 0x1a, 0xf5, 0x9d, 0xed, 0x1a, 0xf5, 0x9e, - 0xef, 0x1a, 0xf5, 0x9d, 0xed, 0x1a, 0xf5, 0x9e, 0xef, 0x1a, 0xf6, 0x9e, - 0xef, 0x1a, 0xf6, 0x9e, 0xef, 0x1a, 0xf6, 0x9f, 0xf2, 0x1a, 0xf6, 0x9e, - 0xef, 0x1a, 0xf7, 0x9f, 0xf2, 0x1a, 0xf7, 0x9e, 0xef, 0x1a, 0xf7, 0x9f, - 0xf2, 0x1a, 0xf7, 0x9e, 0xef, 0x1a, 0xf8, 0x9f, 0xf2, 0x1a, 0xf8, 0x9f, - 0xf1, 0x1a, 0xf8, 0x9f, 0xf2, 0x1a, 0xf8, 0x9f, 0xf4, 0x1a, 0xf8, 0x9f, - 0xf4, 0x1a, 0xf9, 0x9f, 0xf4, 0x1a, 0xf9, 0x9f, 0xf4, 0x1a, 0xf9, 0x9f, - 0xf4, 0x1a, 0xf9, 0x9f, 0xf4, 0x1a, 0xfa, 0x9f, 0xf4, 0x1a, 0xfa, 0x9f, - 0xf4, 0x1a, 0xfa, 0x9f, 0xf4, 0x1a, 0xfa, 0x9f, 0xf4, 0x1a, 0xfa, 0x9f, - 0xf4, 0x1a, 0xfb, 0x9f, 0xf4, 0x1a, 0xfb, 0xa0, 0xf6, 0x1a, 0xfb, 0x9f, - 0xf4, 0x1a, 0xfb, 0xa0, 0xf6, 0x1a, 0xfc, 0x9f, 0xf4, 0x1a, 0xfc, 0xa0, - 0xf6, 0x1a, 0xfc, 0xa0, 0xf6, 0x1a, 0xfc, 0xa0, 0xf6, 0x1a, 0xfc, 0xa0, - 0xf6, 0x1a, 0xfd, 0xa0, 0xf6, 0x1a, 0xfd, 0xa1, 0xf8, 0x1a, 0xfd, 0xa0, - 0xf6, 0x1a, 0xfd, 0xa1, 0xf8, 0x1a, 0xfe, 0xa0, 0xf6, 0x1a, 0xfe, 0xa1, - 0xf8, 0x1a, 0xfe, 0xa0, 0xf6, 0x1a, 0xfe, 0xa1, 0xf8, 0x1a, 0xfe, 0xa1, - 0xf8, 0x1a, 0xff, 0xa1, 0xf8, 0x1a, 0xff, 0xa2, 0xfa, 0x1a, 0x03, 0x84, - 0x9b, 0x1b, 0x0a, 0x84, 0x9b, 0x1b, 0x0f, 0x84, 0x9b, 0x1b, 0x14, 0x84, - 0x9b, 0x1b, 0x17, 0x84, 0x9b, 0x1b, 0x1b, 0x84, 0x9b, 0x1b, 0x1e, 0x84, - 0x9b, 0x1b, 0x20, 0x86, 0x9b, 0x1b, 0x23, 0x84, 0x9b, 0x1b, 0x25, 0x86, - 0x9b, 0x1b, 0x27, 0x84, 0x9b, 0x1b, 0x29, 0x86, 0x9b, 0x1b, 0x2b, 0x84, - 0x9b, 0x1b, 0x2d, 0x86, 0x9b, 0x1b, 0x2f, 0x84, 0x9b, 0x1b, 0x31, 0x86, - 0x9b, 0x1b, 0x32, 0x84, 0x9b, 0x1b, 0x34, 0x86, 0x9b, 0x1b, 0x35, 0x84, - 0x9b, 0x1b, 0x37, 0x86, 0x9b, 0x1b, 0x38, 0x84, 0x9b, 0x1b, 0x3a, 0x86, - 0x9b, 0x1b, 0x3b, 0x84, 0x9b, 0x1b, 0x3c, 0x86, 0x9b, 0x1b, 0x3e, 0x84, - 0x9b, 0x1b, 0x3f, 0x86, 0x9b, 0x1b, 0x40, 0x84, 0x9b, 0x1b, 0x42, 0x86, - 0x9b, 0x1b, 0x43, 0x84, 0x9b, 0x1b, 0x44, 0x86, 0x9b, 0x1b, 0x45, 0x84, - 0x9b, 0x1b, 0x46, 0x86, 0x9b, 0x1b, 0x47, 0x84, 0x9b, 0x1b, 0x48, 0x86, - 0x9b, 0x1b, 0x49, 0x84, 0x9b, 0x1b, 0x4a, 0x86, 0x9b, 0x1b, 0x4b, 0x84, - 0x9b, 0x1b, 0x4c, 0x84, 0x9c, 0x1b, 0x4d, 0x84, 0x9b, 0x1b, 0x4e, 0x84, - 0x9c, 0x1b, 0x4f, 0x84, 0x9b, 0x1b, 0x50, 0x84, 0x9c, 0x1b, 0x51, 0x84, - 0x9b, 0x1b, 0x52, 0x84, 0x9c, 0x1b, 0x53, 0x84, 0x9b, 0x1b, 0x54, 0x84, - 0x9c, 0x1b, 0x55, 0x84, 0x9b, 0x1b, 0x56, 0x84, 0x9c, 0x1b, 0x57, 0x84, - 0x9b, 0x1b, 0x58, 0x84, 0x9c, 0x1b, 0x58, 0x84, 0x9b, 0x1b, 0x59, 0x84, - 0x9c, 0x1b, 0x5a, 0x84, 0x9b, 0x1b, 0x5b, 0x84, 0x9c, 0x1b, 0x5c, 0x84, - 0x9b, 0x1b, 0x5d, 0x84, 0x9c, 0x1b, 0x5d, 0x84, 0x9b, 0x1b, 0x5e, 0x84, - 0x9c, 0x1b, 0x5f, 0x84, 0x9b, 0x1b, 0x60, 0x84, 0x9c, 0x1b, 0x60, 0x84, - 0x9b, 0x1b, 0x61, 0x84, 0x9c, 0x1b, 0x62, 0x84, 0x9b, 0x1b, 0x63, 0x84, - 0x9c, 0x1b, 0x63, 0x84, 0x9b, 0x1b, 0x64, 0x84, 0x9c, 0x1b, 0x65, 0x84, - 0x9b, 0x1b, 0x66, 0x84, 0x9c, 0x1b, 0x66, 0x84, 0x9b, 0x1b, 0x67, 0x84, - 0x9c, 0x1b, 0x68, 0x84, 0x9b, 0x1b, 0x68, 0x84, 0x9c, 0x1b, 0x69, 0x84, - 0x9b, 0x1b, 0x6a, 0x84, 0x9c, 0x1b, 0x6a, 0x84, 0x9b, 0x1b, 0x6b, 0x84, - 0x9c, 0x1b, 0x6c, 0x84, 0x9b, 0x1b, 0x6c, 0x84, 0x9c, 0x1b, 0x6d, 0x84, - 0x9b, 0x1b, 0x6e, 0x84, 0x9c, 0x1b, 0x6e, 0x84, 0x9b, 0x1b, 0x6f, 0x84, - 0x9c, 0x1b, 0x70, 0x84, 0x9b, 0x1b, 0x70, 0x84, 0x9c, 0x1b, 0x71, 0x84, - 0x9b, 0x1b, 0x72, 0x84, 0x9c, 0x1b, 0x72, 0x84, 0x9b, 0x1b, 0x73, 0x84, - 0x9c, 0x1b, 0x73, 0x84, 0x9b, 0x1b, 0x74, 0x84, 0x9c, 0x1b, 0x75, 0x84, - 0x9b, 0x1b, 0x75, 0x84, 0x9c, 0x1b, 0x76, 0x84, 0x9b, 0x1b, 0x76, 0x84, - 0x9c, 0x1b, 0x77, 0x84, 0x9b, 0x1b, 0x78, 0x84, 0x9c, 0x1b, 0x78, 0x84, - 0x9b, 0x1b, 0x79, 0x84, 0x9c, 0x1b, 0x79, 0x84, 0x9b, 0x1b, 0x7a, 0x84, - 0x9c, 0x1b, 0x7a, 0x84, 0x9b, 0x1b, 0x7b, 0x84, 0x9c, 0x1b, 0x7c, 0x84, - 0x9b, 0x1b, 0x7c, 0x84, 0x9c, 0x1b, 0x7d, 0x84, 0x9b, 0x1b, 0x7d, 0x84, - 0x9c, 0x1b, 0x7e, 0x84, 0x9b, 0x1b, 0x7e, 0x84, 0x9c, 0x1b, 0x7f, 0x84, - 0x9b, 0x1b, 0x7f, 0x84, 0x9c, 0x1b, 0x80, 0x84, 0x9b, 0x1b, 0x81, 0x84, - 0x9c, 0x1b, 0x81, 0x84, 0x9b, 0x1b, 0x82, 0x84, 0x9c, 0x1b, 0x82, 0x84, - 0x9b, 0x1b, 0x83, 0x84, 0x9c, 0x1b, 0x83, 0x84, 0x9b, 0x1b, 0x84, 0x84, - 0x9c, 0x1b, 0x84, 0x84, 0x9b, 0x1b, 0x85, 0x84, 0x9c, 0x1b, 0x85, 0x84, - 0x9b, 0x1b, 0x86, 0x84, 0x9c, 0x1b, 0x86, 0x84, 0x9b, 0x1b, 0x87, 0x84, - 0x9c, 0x1b, 0x87, 0x84, 0x9b, 0x1b, 0x88, 0x84, 0x9c, 0x1b, 0x88, 0x84, - 0x9b, 0x1b, 0x89, 0x84, 0x9c, 0x1b, 0x89, 0x84, 0x9b, 0x1b, 0x8a, 0x84, - 0x9c, 0x1b, 0x8a, 0x84, 0x9b, 0x1b, 0x8b, 0x84, 0x9c, 0x1b, 0x8b, 0x84, - 0x9b, 0x1b, 0x8c, 0x84, 0x9c, 0x1b, 0x8c, 0x84, 0x9b, 0x1b, 0x8d, 0x84, - 0x9c, 0x1b, 0x8d, 0x84, 0x9b, 0x1b, 0x8e, 0x84, 0x9c, 0x1b, 0x8e, 0x84, - 0x9b, 0x1b, 0x8e, 0x84, 0x9c, 0x1b, 0x8f, 0x84, 0x9b, 0x1b, 0x8f, 0x84, - 0x9c, 0x1b, 0x90, 0x84, 0x9b, 0x1b, 0x90, 0x84, 0x9c, 0x1b, 0x91, 0x84, - 0x9b, 0x1b, 0x91, 0x84, 0x9c, 0x1b, 0x92, 0x84, 0x9b, 0x1b, 0x92, 0x84, - 0x9c, 0x1b, 0x93, 0x84, 0x9b, 0x1b, 0x93, 0x84, 0x9c, 0x1b, 0x94, 0x84, - 0x9b, 0x1b, 0x94, 0x84, 0x9c, 0x1b, 0x94, 0x84, 0x9b, 0x1b, 0x95, 0x84, - 0x9c, 0x1b, 0x95, 0x84, 0x9b, 0x1b, 0x96, 0x84, 0x9c, 0x1b, 0x96, 0x84, - 0x9b, 0x1b, 0x97, 0x84, 0x9c, 0x1b, 0x97, 0x84, 0x9b, 0x1b, 0x98, 0x84, - 0x9c, 0x1b, 0x98, 0x84, 0x9b, 0x1b, 0x98, 0x84, 0x9c, 0x1b, 0x99, 0x84, - 0x9b, 0x1b, 0x99, 0x84, 0x9c, 0x1b, 0x9a, 0x84, 0x9b, 0x1b, 0x9a, 0x84, - 0x9c, 0x1b, 0x9a, 0x84, 0x9b, 0x1b, 0x9b, 0x84, 0x9c, 0x1b, 0x9b, 0x84, - 0x9b, 0x1b, 0x9c, 0x84, 0x9c, 0x1b, 0x9c, 0x84, 0x9c, 0x1b, 0x9d, 0x84, - 0x9d, 0x1b, 0x9d, 0x84, 0x9d, 0x1b, 0x9d, 0x84, 0x9d, 0x1b, 0x9e, 0x84, - 0x9e, 0x1b, 0x9e, 0x84, 0x9e, 0x1b, 0x9f, 0x84, 0x9f, 0x1b, 0x9f, 0x84, - 0x9e, 0x1b, 0x9f, 0x84, 0x9f, 0x1b, 0xa0, 0x84, 0x9e, 0x1b, 0xa0, 0x84, - 0x9f, 0x1b, 0xa1, 0x84, 0x9e, 0x1b, 0xa1, 0x84, 0x9f, 0x1b, 0xa1, 0x84, - 0x9e, 0x1b, 0xa2, 0x84, 0x9f, 0x1b, 0xa2, 0x84, 0x9e, 0x1b, 0xa3, 0x84, - 0x9f, 0x1b, 0xa3, 0x84, 0x9e, 0x1b, 0xa3, 0x84, 0x9f, 0x1b, 0xa4, 0x84, - 0x9e, 0x1b, 0xa4, 0x84, 0x9f, 0x1b, 0xa5, 0x84, 0x9e, 0x1b, 0xa5, 0x84, - 0x9f, 0x1b, 0xa5, 0x85, 0xa2, 0x1b, 0xa6, 0x84, 0x9f, 0x1b, 0xa6, 0x85, - 0xa2, 0x1b, 0xa6, 0x84, 0x9f, 0x1b, 0xa7, 0x85, 0xa2, 0x1b, 0xa7, 0x85, - 0xa2, 0x1b, 0xa8, 0x85, 0xa2, 0x1b, 0xa8, 0x85, 0xa2, 0x1b, 0xa8, 0x85, - 0xa2, 0x1b, 0xa9, 0x85, 0xa2, 0x1b, 0xa9, 0x85, 0xa2, 0x1b, 0xaa, 0x86, - 0xa6, 0x1b, 0xaa, 0x86, 0xa6, 0x1b, 0xaa, 0x86, 0xa6, 0x1b, 0xab, 0x86, - 0xa6, 0x1b, 0xab, 0x86, 0xa6, 0x1b, 0xab, 0x86, 0xa6, 0x1b, 0xac, 0x86, - 0xa6, 0x1b, 0xac, 0x86, 0xa6, 0x1b, 0xac, 0x86, 0xa6, 0x1b, 0xad, 0x86, - 0xa6, 0x1b, 0xad, 0x87, 0xaa, 0x1b, 0xae, 0x86, 0xa6, 0x1b, 0xae, 0x87, - 0xaa, 0x1b, 0xae, 0x87, 0xa9, 0x1b, 0xaf, 0x87, 0xaa, 0x1b, 0xaf, 0x87, - 0xa9, 0x1b, 0xaf, 0x87, 0xaa, 0x1b, 0xb0, 0x87, 0xa9, 0x1b, 0xb0, 0x87, - 0xaa, 0x1b, 0xb0, 0x88, 0xad, 0x1b, 0xb1, 0x88, 0xad, 0x1b, 0xb1, 0x88, - 0xad, 0x1b, 0xb2, 0x88, 0xad, 0x1b, 0xb2, 0x88, 0xad, 0x1b, 0xb2, 0x88, - 0xad, 0x1b, 0xb3, 0x88, 0xad, 0x1b, 0xb3, 0x88, 0xad, 0x1b, 0xb3, 0x88, - 0xad, 0x1b, 0xb4, 0x88, 0xad, 0x1b, 0xb4, 0x89, 0xb0, 0x1b, 0xb4, 0x88, - 0xad, 0x1b, 0xb5, 0x89, 0xb0, 0x1b, 0xb5, 0x88, 0xad, 0x1b, 0xb5, 0x89, - 0xb0, 0x1b, 0xb6, 0x89, 0xb2, 0x1b, 0xb6, 0x89, 0xb0, 0x1b, 0xb6, 0x89, - 0xb2, 0x1b, 0xb7, 0x89, 0xb0, 0x1b, 0xb7, 0x89, 0xb2, 0x1b, 0xb7, 0x89, - 0xb0, 0x1b, 0xb8, 0x89, 0xb2, 0x1b, 0xb8, 0x89, 0xb2, 0x1b, 0xb8, 0x89, - 0xb2, 0x1b, 0xb9, 0x89, 0xb2, 0x1b, 0xb9, 0x89, 0xb2, 0x1b, 0xb9, 0x8a, - 0xb3, 0x1b, 0xba, 0x8a, 0xb4, 0x1b, 0xba, 0x8a, 0xb3, 0x1b, 0xba, 0x8a, - 0xb4, 0x1b, 0xbb, 0x8b, 0xb7, 0x1b, 0xbb, 0x8b, 0xb7, 0x1b, 0xbb, 0x8b, - 0xb7, 0x1b, 0xbc, 0x8b, 0xb7, 0x1b, 0xbc, 0x8b, 0xb7, 0x1b, 0xbc, 0x8b, - 0xb7, 0x1b, 0xbd, 0x8b, 0xb7, 0x1b, 0xbd, 0x8b, 0xb7, 0x1b, 0xbd, 0x8b, - 0xb7, 0x1b, 0xbe, 0x8b, 0xb7, 0x1b, 0xbe, 0x8c, 0xba, 0x1b, 0xbe, 0x8b, - 0xb7, 0x1b, 0xbf, 0x8c, 0xba, 0x1b, 0xbf, 0x8c, 0xba, 0x1b, 0xbf, 0x8c, - 0xba, 0x1b, 0xc0, 0x8c, 0xba, 0x1b, 0xc0, 0x8c, 0xba, 0x1b, 0xc0, 0x8c, - 0xba, 0x1b, 0xc1, 0x8c, 0xba, 0x1b, 0xc1, 0x8d, 0xbd, 0x1b, 0xc1, 0x8c, - 0xba, 0x1b, 0xc1, 0x8d, 0xbd, 0x1b, 0xc2, 0x8c, 0xba, 0x1b, 0xc2, 0x8d, - 0xbd, 0x1b, 0xc2, 0x8d, 0xbd, 0x1b, 0xc3, 0x8d, 0xbd, 0x1b, 0xc3, 0x8d, - 0xbd, 0x1b, 0xc3, 0x8d, 0xbd, 0x1b, 0xc4, 0x8e, 0xc0, 0x1b, 0xc4, 0x8e, - 0xc0, 0x1b, 0xc4, 0x8e, 0xc0, 0x1b, 0xc5, 0x8e, 0xc0, 0x1b, 0xc5, 0x8e, - 0xc0, 0x1b, 0xc5, 0x8e, 0xc0, 0x1b, 0xc6, 0x8e, 0xc0, 0x1b, 0xc6, 0x8e, - 0xc0, 0x1b, 0xc6, 0x8e, 0xc0, 0x1b, 0xc6, 0x8e, 0xc0, 0x1b, 0xc7, 0x8e, - 0xc3, 0x1b, 0xc7, 0x8e, 0xc0, 0x1b, 0xc7, 0x8e, 0xc3, 0x1b, 0xc8, 0x8e, - 0xc0, 0x1b, 0xc8, 0x8e, 0xc3, 0x1b, 0xc8, 0x8e, 0xc3, 0x1b, 0xc9, 0x8e, - 0xc3, 0x1b, 0xc9, 0x8e, 0xc3, 0x1b, 0xc9, 0x8e, 0xc3, 0x1b, 0xc9, 0x8e, - 0xc3, 0x1b, 0xca, 0x8e, 0xc3, 0x1b, 0xca, 0x8f, 0xc6, 0x1b, 0xca, 0x8e, - 0xc3, 0x1b, 0xcb, 0x8f, 0xc6, 0x1b, 0xcb, 0x8f, 0xc6, 0x1b, 0xcb, 0x8f, - 0xc6, 0x1b, 0xcc, 0x8f, 0xc6, 0x1b, 0xcc, 0x8f, 0xc6, 0x1b, 0xcc, 0x8f, - 0xc6, 0x1b, 0xcc, 0x8f, 0xc6, 0x1b, 0xcd, 0x90, 0xc9, 0x1b, 0xcd, 0x90, - 0xc9, 0x1b, 0xcd, 0x90, 0xc9, 0x1b, 0xce, 0x90, 0xc9, 0x1b, 0xce, 0x90, - 0xc9, 0x1b, 0xce, 0x90, 0xc9, 0x1b, 0xce, 0x90, 0xc9, 0x1b, 0xcf, 0x90, - 0xc9, 0x1b, 0xcf, 0x90, 0xc9, 0x1b, 0xcf, 0x90, 0xc9, 0x1b, 0xd0, 0x91, - 0xcc, 0x1b, 0xd0, 0x90, 0xc9, 0x1b, 0xd0, 0x91, 0xcc, 0x1b, 0xd0, 0x90, - 0xc9, 0x1b, 0xd1, 0x91, 0xcc, 0x1b, 0xd1, 0x91, 0xcb, 0x1b, 0xd1, 0x91, - 0xcc, 0x1b, 0xd2, 0x91, 0xcb, 0x1b, 0xd2, 0x91, 0xcc, 0x1b, 0xd2, 0x92, - 0xce, 0x1b, 0xd2, 0x92, 0xce, 0x1b, 0xd3, 0x92, 0xce, 0x1b, 0xd3, 0x92, - 0xce, 0x1b, 0xd3, 0x92, 0xce, 0x1b, 0xd4, 0x92, 0xce, 0x1b, 0xd4, 0x92, - 0xce, 0x1b, 0xd4, 0x92, 0xce, 0x1b, 0xd4, 0x92, 0xce, 0x1b, 0xd5, 0x92, - 0xce, 0x1b, 0xd5, 0x92, 0xce, 0x1b, 0xd5, 0x92, 0xce, 0x1b, 0xd6, 0x93, - 0xd1, 0x1b, 0xd6, 0x92, 0xce, 0x1b, 0xd6, 0x93, 0xd1, 0x1b, 0xd6, 0x93, - 0xd1, 0x1b, 0xd7, 0x93, 0xd1, 0x1b, 0xd7, 0x93, 0xd1, 0x1b, 0xd7, 0x93, - 0xd1, 0x1b, 0xd7, 0x93, 0xd1, 0x1b, 0xd8, 0x93, 0xd1, 0x1b, 0xd8, 0x94, - 0xd4, 0x1b, 0xd8, 0x93, 0xd1, 0x1b, 0xd9, 0x94, 0xd4, 0x1b, 0xd9, 0x93, - 0xd1, 0x1b, 0xd9, 0x94, 0xd4, 0x1b, 0xd9, 0x94, 0xd3, 0x1b, 0xda, 0x94, - 0xd4, 0x1b, 0xda, 0x94, 0xd3, 0x1b, 0xda, 0x94, 0xd4, 0x1b, 0xda, 0x95, - 0xd6, 0x1b, 0xdb, 0x95, 0xd6, 0x1b, 0xdb, 0x95, 0xd6, 0x1b, 0xdb, 0x95, - 0xd6, 0x1b, 0xdb, 0x95, 0xd6, 0x1b, 0xdc, 0x95, 0xd6, 0x1b, 0xdc, 0x95, - 0xd6, 0x1b, 0xdc, 0x95, 0xd6, 0x1b, 0xdd, 0x95, 0xd6, 0x1b, 0xdd, 0x95, - 0xd6, 0x1b, 0xdd, 0x96, 0xd9, 0x1b, 0xdd, 0x95, 0xd6, 0x1b, 0xde, 0x96, - 0xd9, 0x1b, 0xde, 0x95, 0xd6, 0x1b, 0xde, 0x96, 0xd9, 0x1b, 0xde, 0x96, - 0xd9, 0x1b, 0xdf, 0x96, 0xd9, 0x1b, 0xdf, 0x96, 0xd9, 0x1b, 0xdf, 0x96, - 0xd9, 0x1b, 0xdf, 0x97, 0xdb, 0x1b, 0xe0, 0x96, 0xd9, 0x1b, 0xe0, 0x97, - 0xdb, 0x1b, 0xe0, 0x96, 0xd9, 0x1b, 0xe1, 0x97, 0xdb, 0x1b, 0xe1, 0x97, - 0xdb, 0x1b, 0xe1, 0x97, 0xdb, 0x1b, 0xe1, 0x97, 0xdb, 0x1b, 0xe2, 0x97, - 0xdb, 0x1b, 0xe2, 0x98, 0xde, 0x1b, 0xe2, 0x98, 0xde, 0x1b, 0xe2, 0x98, - 0xde, 0x1b, 0xe3, 0x98, 0xde, 0x1b, 0xe3, 0x98, 0xde, 0x1b, 0xe3, 0x98, - 0xde, 0x1b, 0xe3, 0x98, 0xde, 0x1b, 0xe4, 0x98, 0xde, 0x1b, 0xe4, 0x98, - 0xde, 0x1b, 0xe4, 0x98, 0xde, 0x1b, 0xe4, 0x98, 0xde, 0x1b, 0xe5, 0x98, - 0xde, 0x1b, 0xe5, 0x98, 0xe0, 0x1b, 0xe5, 0x98, 0xde, 0x1b, 0xe5, 0x98, - 0xe0, 0x1b, 0xe6, 0x98, 0xde, 0x1b, 0xe6, 0x98, 0xe0, 0x1b, 0xe6, 0x98, - 0xe0, 0x1b, 0xe6, 0x98, 0xe0, 0x1b, 0xe7, 0x98, 0xe0, 0x1b, 0xe7, 0x98, - 0xe0, 0x1b, 0xe7, 0x99, 0xe3, 0x1b, 0xe7, 0x98, 0xe0, 0x1b, 0xe8, 0x99, - 0xe3, 0x1b, 0xe8, 0x98, 0xe0, 0x1b, 0xe8, 0x99, 0xe3, 0x1b, 0xe8, 0x99, - 0xe2, 0x1b, 0xe9, 0x99, 0xe3, 0x1b, 0xe9, 0x99, 0xe2, 0x1b, 0xe9, 0x99, - 0xe3, 0x1b, 0xe9, 0x9a, 0xe5, 0x1b, 0xea, 0x9a, 0xe5, 0x1b, 0xea, 0x9a, - 0xe5, 0x1b, 0xea, 0x9a, 0xe5, 0x1b, 0xea, 0x9a, 0xe5, 0x1b, 0xeb, 0x9a, - 0xe5, 0x1b, 0xeb, 0x9a, 0xe5, 0x1b, 0xeb, 0x9a, 0xe5, 0x1b, 0xeb, 0x9a, - 0xe5, 0x1b, 0xec, 0x9a, 0xe5, 0x1b, 0xec, 0x9b, 0xe7, 0x1b, 0xec, 0x9a, - 0xe5, 0x1b, 0xec, 0x9b, 0xe7, 0x1b, 0xec, 0x9a, 0xe5, 0x1b, 0xed, 0x9b, - 0xe7, 0x1b, 0xed, 0x9a, 0xe5, 0x1b, 0xed, 0x9b, 0xe7, 0x1b, 0xed, 0x9b, - 0xe7, 0x1b, 0xee, 0x9b, 0xe7, 0x1b, 0xee, 0x9b, 0xe7, 0x1b, 0xee, 0x9b, - 0xe7, 0x1b, 0xee, 0x9c, 0xea, 0x1b, 0xef, 0x9c, 0xea, 0x1b, 0xef, 0x9c, - 0xea, 0x1b, 0xef, 0x9c, 0xea, 0x1b, 0xef, 0x9c, 0xea, 0x1b, 0xf0, 0x9c, - 0xea, 0x1b, 0xf0, 0x9c, 0xea, 0x1b, 0xf0, 0x9c, 0xea, 0x1b, 0xf0, 0x9c, - 0xea, 0x1b, 0xf1, 0x9c, 0xea, 0x1b, 0xf1, 0x9d, 0xec, 0x1b, 0xf1, 0x9c, - 0xea, 0x1b, 0xf1, 0x9d, 0xec, 0x1b, 0xf2, 0x9c, 0xea, 0x1b, 0xf2, 0x9d, - 0xec, 0x1b, 0xf2, 0x9d, 0xec, 0x1b, 0xf2, 0x9d, 0xec, 0x1b, 0xf2, 0x9d, - 0xec, 0x1b, 0xf3, 0x9d, 0xec, 0x1b, 0xf3, 0x9d, 0xee, 0x1b, 0xf3, 0x9d, - 0xec, 0x1b, 0xf3, 0x9d, 0xee, 0x1b, 0xf4, 0x9d, 0xec, 0x1b, 0xf4, 0x9d, - 0xee, 0x1b, 0xf4, 0x9d, 0xee, 0x1b, 0xf4, 0x9d, 0xee, 0x1b, 0xf5, 0x9d, - 0xee, 0x1b, 0xf5, 0x9d, 0xee, 0x1b, 0xf5, 0x9e, 0xf0, 0x1b, 0xf5, 0x9e, - 0xf1, 0x1b, 0xf5, 0x9e, 0xf0, 0x1b, 0xf6, 0x9e, 0xf1, 0x1b, 0xf6, 0x9e, - 0xf0, 0x1b, 0xf6, 0x9e, 0xf1, 0x1b, 0xf6, 0x9e, 0xf0, 0x1b, 0xf7, 0x9e, - 0xf1, 0x1b, 0xf7, 0x9e, 0xf0, 0x1b, 0xf7, 0x9e, 0xf1, 0x1b, 0xf7, 0x9f, - 0xf3, 0x1b, 0xf8, 0x9e, 0xf1, 0x1b, 0xf8, 0x9f, 0xf3, 0x1b, 0xf8, 0x9e, - 0xf1, 0x1b, 0xf8, 0x9f, 0xf3, 0x1b, 0xf8, 0x9e, 0xf1, 0x1b, 0xf9, 0x9f, - 0xf3, 0x1b, 0xf9, 0x9f, 0xf2, 0x1b, 0xf9, 0x9f, 0xf3, 0x1b, 0xf9, 0xa0, - 0xf5, 0x1b, 0xfa, 0x9f, 0xf3, 0x1b, 0xfa, 0xa0, 0xf5, 0x1b, 0xfa, 0x9f, - 0xf3, 0x1b, 0xfa, 0xa0, 0xf5, 0x1b, 0xfa, 0x9f, 0xf3, 0x1b, 0xfb, 0xa0, - 0xf5, 0x1b, 0xfb, 0xa0, 0xf5, 0x1b, 0xfb, 0xa0, 0xf5, 0x1b, 0xfb, 0xa0, - 0xf5, 0x1b, 0xfc, 0xa0, 0xf5, 0x1b, 0xfc, 0xa1, 0xf7, 0x1b, 0xfc, 0xa1, - 0xf7, 0x1b, 0xfc, 0xa1, 0xf7, 0x1b, 0xfc, 0xa1, 0xf7, 0x1b, 0xfd, 0xa1, - 0xf7, 0x1b, 0xfd, 0xa1, 0xf7, 0x1b, 0xfd, 0xa1, 0xf7, 0x1b, 0xfd, 0xa1, - 0xf7, 0x1b, 0xfe, 0xa1, 0xf7, 0x1b, 0xfe, 0xa1, 0xf7, 0x1b, 0xfe, 0xa1, - 0xf9, 0x1b, 0xfe, 0xa1, 0xf7, 0x1b, 0xfe, 0xa1, 0xf9, 0x1b, 0xff, 0xa1, - 0xf7, 0x1b, 0xff, 0xa1, 0xf9, 0x1b, 0x03, 0x83, 0x9b, 0x1b, 0x0a, 0x83, - 0x9b, 0x1b, 0x0f, 0x83, 0x9b, 0x1b, 0x14, 0x83, 0x9b, 0x1b, 0x17, 0x83, - 0x9b, 0x1b, 0x1b, 0x83, 0x9b, 0x1b, 0x1e, 0x83, 0x9b, 0x1b, 0x20, 0x83, - 0x9c, 0x1b, 0x23, 0x83, 0x9b, 0x1b, 0x25, 0x83, 0x9c, 0x1b, 0x27, 0x83, - 0x9b, 0x1b, 0x29, 0x83, 0x9c, 0x1b, 0x2b, 0x83, 0x9b, 0x1b, 0x2d, 0x83, - 0x9c, 0x1b, 0x2f, 0x83, 0x9b, 0x1b, 0x31, 0x83, 0x9c, 0x1b, 0x32, 0x83, - 0x9b, 0x1b, 0x34, 0x83, 0x9c, 0x1b, 0x35, 0x83, 0x9b, 0x1b, 0x37, 0x83, - 0x9c, 0x1b, 0x38, 0x83, 0x9b, 0x1b, 0x3a, 0x83, 0x9c, 0x1b, 0x3b, 0x83, - 0x9b, 0x1b, 0x3c, 0x83, 0x9c, 0x1b, 0x3e, 0x83, 0x9b, 0x1b, 0x3f, 0x83, - 0x9c, 0x1b, 0x40, 0x83, 0x9b, 0x1b, 0x42, 0x83, 0x9c, 0x1b, 0x43, 0x83, - 0x9b, 0x1b, 0x44, 0x83, 0x9c, 0x1b, 0x45, 0x83, 0x9b, 0x1b, 0x46, 0x83, - 0x9c, 0x1b, 0x47, 0x83, 0x9b, 0x1b, 0x48, 0x83, 0x9c, 0x1b, 0x49, 0x83, - 0x9b, 0x1b, 0x4a, 0x83, 0x9c, 0x1b, 0x4b, 0x83, 0x9b, 0x1b, 0x4c, 0x83, - 0x9c, 0x1b, 0x4d, 0x83, 0x9b, 0x1b, 0x4e, 0x83, 0x9c, 0x1b, 0x4f, 0x83, - 0x9b, 0x1b, 0x50, 0x83, 0x9c, 0x1b, 0x51, 0x83, 0x9b, 0x1b, 0x52, 0x83, - 0x9c, 0x1b, 0x53, 0x83, 0x9b, 0x1b, 0x54, 0x83, 0x9c, 0x1b, 0x55, 0x83, - 0x9b, 0x1b, 0x56, 0x83, 0x9c, 0x1b, 0x57, 0x83, 0x9b, 0x1b, 0x58, 0x83, - 0x9c, 0x1b, 0x58, 0x83, 0x9b, 0x1b, 0x59, 0x83, 0x9c, 0x1b, 0x5a, 0x83, - 0x9b, 0x1b, 0x5b, 0x83, 0x9c, 0x1b, 0x5c, 0x83, 0x9b, 0x1b, 0x5d, 0x83, - 0x9c, 0x1b, 0x5d, 0x83, 0x9b, 0x1b, 0x5e, 0x83, 0x9c, 0x1b, 0x5f, 0x83, - 0x9b, 0x1b, 0x60, 0x83, 0x9c, 0x1b, 0x60, 0x83, 0x9b, 0x1b, 0x61, 0x83, - 0x9c, 0x1b, 0x62, 0x83, 0x9b, 0x1b, 0x63, 0x83, 0x9c, 0x1b, 0x63, 0x83, - 0x9b, 0x1b, 0x64, 0x83, 0x9c, 0x1b, 0x65, 0x83, 0x9b, 0x1b, 0x66, 0x83, - 0x9c, 0x1b, 0x66, 0x83, 0x9b, 0x1b, 0x67, 0x83, 0x9c, 0x1b, 0x68, 0x83, - 0x9b, 0x1b, 0x68, 0x83, 0x9c, 0x1b, 0x69, 0x83, 0x9b, 0x1b, 0x6a, 0x83, - 0x9c, 0x1b, 0x6a, 0x83, 0x9b, 0x1b, 0x6b, 0x83, 0x9c, 0x1b, 0x6c, 0x83, - 0x9b, 0x1b, 0x6c, 0x83, 0x9c, 0x1b, 0x6d, 0x83, 0x9b, 0x1b, 0x6e, 0x83, - 0x9c, 0x1b, 0x6e, 0x83, 0x9b, 0x1b, 0x6f, 0x83, 0x9c, 0x1b, 0x70, 0x83, - 0x9b, 0x1b, 0x70, 0x83, 0x9c, 0x1b, 0x71, 0x83, 0x9b, 0x1b, 0x72, 0x83, - 0x9c, 0x1b, 0x72, 0x83, 0x9b, 0x1b, 0x73, 0x83, 0x9c, 0x1b, 0x73, 0x83, - 0x9b, 0x1b, 0x74, 0x83, 0x9c, 0x1b, 0x75, 0x83, 0x9b, 0x1b, 0x75, 0x83, - 0x9c, 0x1b, 0x76, 0x83, 0x9b, 0x1b, 0x76, 0x83, 0x9c, 0x1b, 0x77, 0x83, - 0x9b, 0x1b, 0x78, 0x83, 0x9c, 0x1b, 0x78, 0x83, 0x9b, 0x1b, 0x79, 0x83, - 0x9c, 0x1b, 0x79, 0x83, 0x9b, 0x1b, 0x7a, 0x83, 0x9c, 0x1b, 0x7a, 0x83, - 0x9b, 0x1b, 0x7b, 0x83, 0x9c, 0x1b, 0x7c, 0x83, 0x9b, 0x1b, 0x7c, 0x83, - 0x9c, 0x1b, 0x7d, 0x83, 0x9b, 0x1b, 0x7d, 0x83, 0x9c, 0x1b, 0x7e, 0x83, - 0x9b, 0x1b, 0x7e, 0x83, 0x9c, 0x1b, 0x7f, 0x83, 0x9b, 0x1b, 0x7f, 0x83, - 0x9c, 0x1b, 0x80, 0x83, 0x9b, 0x1b, 0x81, 0x83, 0x9c, 0x1b, 0x81, 0x83, - 0x9b, 0x1b, 0x82, 0x83, 0x9c, 0x1b, 0x82, 0x83, 0x9b, 0x1b, 0x83, 0x83, - 0x9c, 0x1b, 0x83, 0x83, 0x9b, 0x1b, 0x84, 0x83, 0x9c, 0x1b, 0x84, 0x83, - 0x9b, 0x1b, 0x85, 0x83, 0x9c, 0x1b, 0x85, 0x83, 0x9b, 0x1b, 0x86, 0x83, - 0x9c, 0x1b, 0x86, 0x83, 0x9b, 0x1b, 0x87, 0x83, 0x9c, 0x1b, 0x87, 0x83, - 0x9b, 0x1b, 0x88, 0x83, 0x9c, 0x1b, 0x88, 0x83, 0x9b, 0x1b, 0x89, 0x83, - 0x9c, 0x1b, 0x89, 0x83, 0x9b, 0x1b, 0x8a, 0x83, 0x9c, 0x1b, 0x8a, 0x83, - 0x9b, 0x1b, 0x8b, 0x83, 0x9c, 0x1b, 0x8b, 0x83, 0x9b, 0x1b, 0x8c, 0x83, - 0x9c, 0x1b, 0x8c, 0x83, 0x9b, 0x1b, 0x8d, 0x83, 0x9c, 0x1b, 0x8d, 0x83, - 0x9b, 0x1b, 0x8e, 0x83, 0x9c, 0x1b, 0x8e, 0x83, 0x9b, 0x1b, 0x8e, 0x83, - 0x9c, 0x1b, 0x8f, 0x83, 0x9b, 0x1b, 0x8f, 0x83, 0x9c, 0x1b, 0x90, 0x83, - 0x9b, 0x1b, 0x90, 0x83, 0x9c, 0x1b, 0x91, 0x83, 0x9b, 0x1b, 0x91, 0x83, - 0x9c, 0x1b, 0x92, 0x83, 0x9b, 0x1b, 0x92, 0x83, 0x9c, 0x1b, 0x93, 0x83, - 0x9b, 0x1b, 0x93, 0x83, 0x9c, 0x1b, 0x94, 0x83, 0x9b, 0x1b, 0x94, 0x83, - 0x9c, 0x1b, 0x94, 0x83, 0x9b, 0x1b, 0x95, 0x83, 0x9c, 0x1b, 0x95, 0x83, - 0x9b, 0x1b, 0x96, 0x83, 0x9c, 0x1b, 0x96, 0x83, 0x9b, 0x1b, 0x97, 0x83, - 0x9c, 0x1b, 0x97, 0x83, 0x9b, 0x1b, 0x98, 0x83, 0x9c, 0x1b, 0x98, 0x83, - 0x9b, 0x1b, 0x98, 0x83, 0x9c, 0x1b, 0x99, 0x83, 0x9b, 0x1b, 0x99, 0x83, - 0x9c, 0x1b, 0x9a, 0x83, 0x9b, 0x1b, 0x9a, 0x83, 0x9c, 0x1b, 0x9a, 0x83, - 0x9b, 0x1b, 0x9b, 0x83, 0x9c, 0x1b, 0x9b, 0x83, 0x9b, 0x1b, 0x9c, 0x83, - 0x9c, 0x1b, 0x9c, 0x83, 0x9c, 0x1b, 0x9d, 0x83, 0x9d, 0x1b, 0x9d, 0x83, - 0x9c, 0x1b, 0x9d, 0x83, 0x9d, 0x1b, 0x9e, 0x83, 0x9c, 0x1b, 0x9e, 0x83, - 0x9d, 0x1b, 0x9f, 0x83, 0x9c, 0x1b, 0x9f, 0x83, 0x9d, 0x1b, 0x9f, 0x83, - 0x9c, 0x1b, 0xa0, 0x83, 0x9d, 0x1b, 0xa0, 0x83, 0x9c, 0x1b, 0xa1, 0x83, - 0x9d, 0x1b, 0xa1, 0x83, 0x9c, 0x1b, 0xa1, 0x83, 0x9d, 0x1b, 0xa2, 0x83, - 0x9c, 0x1b, 0xa2, 0x83, 0x9d, 0x1b, 0xa3, 0x83, 0x9c, 0x1b, 0xa3, 0x83, - 0x9d, 0x1b, 0xa3, 0x84, 0xa0, 0x1b, 0xa4, 0x84, 0xa1, 0x1b, 0xa4, 0x84, - 0xa0, 0x1b, 0xa5, 0x84, 0xa1, 0x1b, 0xa5, 0x84, 0xa0, 0x1b, 0xa5, 0x84, - 0xa1, 0x1b, 0xa6, 0x84, 0xa0, 0x1b, 0xa6, 0x84, 0xa1, 0x1b, 0xa6, 0x84, - 0xa0, 0x1b, 0xa7, 0x84, 0xa1, 0x1b, 0xa7, 0x85, 0xa4, 0x1b, 0xa8, 0x84, - 0xa1, 0x1b, 0xa8, 0x85, 0xa4, 0x1b, 0xa8, 0x84, 0xa1, 0x1b, 0xa9, 0x85, - 0xa4, 0x1b, 0xa9, 0x85, 0xa4, 0x1b, 0xaa, 0x85, 0xa4, 0x1b, 0xaa, 0x85, - 0xa4, 0x1b, 0xaa, 0x85, 0xa4, 0x1b, 0xab, 0x85, 0xa4, 0x1b, 0xab, 0x85, - 0xa4, 0x1b, 0xab, 0x86, 0xa8, 0x1b, 0xac, 0x85, 0xa4, 0x1b, 0xac, 0x86, - 0xa8, 0x1b, 0xac, 0x86, 0xa7, 0x1b, 0xad, 0x86, 0xa8, 0x1b, 0xad, 0x86, - 0xa7, 0x1b, 0xae, 0x86, 0xa8, 0x1b, 0xae, 0x86, 0xa7, 0x1b, 0xae, 0x86, - 0xa8, 0x1b, 0xaf, 0x87, 0xab, 0x1b, 0xaf, 0x87, 0xab, 0x1b, 0xaf, 0x87, - 0xab, 0x1b, 0xb0, 0x87, 0xab, 0x1b, 0xb0, 0x87, 0xab, 0x1b, 0xb0, 0x87, - 0xab, 0x1b, 0xb1, 0x87, 0xab, 0x1b, 0xb1, 0x87, 0xab, 0x1b, 0xb2, 0x87, - 0xab, 0x1b, 0xb2, 0x87, 0xab, 0x1b, 0xb2, 0x88, 0xaf, 0x1b, 0xb3, 0x87, - 0xab, 0x1b, 0xb3, 0x88, 0xaf, 0x1b, 0xb3, 0x88, 0xae, 0x1b, 0xb4, 0x88, - 0xaf, 0x1b, 0xb4, 0x88, 0xae, 0x1b, 0xb4, 0x88, 0xaf, 0x1b, 0xb5, 0x88, - 0xae, 0x1b, 0xb5, 0x88, 0xaf, 0x1b, 0xb5, 0x89, 0xb2, 0x1b, 0xb6, 0x89, - 0xb2, 0x1b, 0xb6, 0x89, 0xb2, 0x1b, 0xb6, 0x89, 0xb2, 0x1b, 0xb7, 0x89, - 0xb2, 0x1b, 0xb7, 0x89, 0xb2, 0x1b, 0xb7, 0x89, 0xb2, 0x1b, 0xb8, 0x89, - 0xb2, 0x1b, 0xb8, 0x89, 0xb2, 0x1b, 0xb8, 0x89, 0xb2, 0x1b, 0xb9, 0x89, - 0xb2, 0x1b, 0xb9, 0x89, 0xb2, 0x1b, 0xb9, 0x8a, 0xb5, 0x1b, 0xba, 0x89, - 0xb2, 0x1b, 0xba, 0x8a, 0xb5, 0x1b, 0xba, 0x8a, 0xb5, 0x1b, 0xbb, 0x8a, - 0xb5, 0x1b, 0xbb, 0x8a, 0xb5, 0x1b, 0xbb, 0x8a, 0xb5, 0x1b, 0xbc, 0x8a, - 0xb5, 0x1b, 0xbc, 0x8a, 0xb5, 0x1b, 0xbc, 0x8b, 0xb8, 0x1b, 0xbd, 0x8a, - 0xb5, 0x1b, 0xbd, 0x8b, 0xb8, 0x1b, 0xbd, 0x8b, 0xb8, 0x1b, 0xbe, 0x8b, - 0xb8, 0x1b, 0xbe, 0x8b, 0xb8, 0x1b, 0xbe, 0x8b, 0xb8, 0x1b, 0xbf, 0x8b, - 0xb8, 0x1b, 0xbf, 0x8b, 0xb8, 0x1b, 0xbf, 0x8c, 0xbb, 0x1b, 0xc0, 0x8c, - 0xbc, 0x1b, 0xc0, 0x8c, 0xbb, 0x1b, 0xc0, 0x8c, 0xbc, 0x1b, 0xc1, 0x8c, - 0xbb, 0x1b, 0xc1, 0x8c, 0xbc, 0x1b, 0xc1, 0x8c, 0xbb, 0x1b, 0xc1, 0x8c, - 0xbc, 0x1b, 0xc2, 0x8c, 0xbb, 0x1b, 0xc2, 0x8c, 0xbc, 0x1b, 0xc2, 0x8d, - 0xbf, 0x1b, 0xc3, 0x8c, 0xbc, 0x1b, 0xc3, 0x8d, 0xbf, 0x1b, 0xc3, 0x8c, - 0xbc, 0x1b, 0xc4, 0x8d, 0xbf, 0x1b, 0xc4, 0x8d, 0xbe, 0x1b, 0xc4, 0x8d, - 0xbf, 0x1b, 0xc5, 0x8d, 0xbe, 0x1b, 0xc5, 0x8d, 0xbf, 0x1b, 0xc5, 0x8e, - 0xc1, 0x1b, 0xc6, 0x8d, 0xbf, 0x1b, 0xc6, 0x8e, 0xc1, 0x1b, 0xc6, 0x8d, - 0xbf, 0x1b, 0xc6, 0x8e, 0xc1, 0x1b, 0xc7, 0x8e, 0xc1, 0x1b, 0xc7, 0x8e, - 0xc1, 0x1b, 0xc7, 0x8e, 0xc1, 0x1b, 0xc8, 0x8e, 0xc1, 0x1b, 0xc8, 0x8f, - 0xc4, 0x1b, 0xc8, 0x8f, 0xc5, 0x1b, 0xc9, 0x8f, 0xc4, 0x1b, 0xc9, 0x8f, - 0xc5, 0x1b, 0xc9, 0x8f, 0xc4, 0x1b, 0xc9, 0x8f, 0xc5, 0x1b, 0xca, 0x8f, - 0xc4, 0x1b, 0xca, 0x8f, 0xc5, 0x1b, 0xca, 0x8f, 0xc4, 0x1b, 0xcb, 0x8f, - 0xc5, 0x1b, 0xcb, 0x8f, 0xc4, 0x1b, 0xcb, 0x8f, 0xc5, 0x1b, 0xcc, 0x90, - 0xc7, 0x1b, 0xcc, 0x8f, 0xc5, 0x1b, 0xcc, 0x90, 0xc7, 0x1b, 0xcc, 0x90, - 0xc7, 0x1b, 0xcd, 0x90, 0xc7, 0x1b, 0xcd, 0x90, 0xc7, 0x1b, 0xcd, 0x90, - 0xc7, 0x1b, 0xce, 0x90, 0xc7, 0x1b, 0xce, 0x90, 0xc7, 0x1b, 0xce, 0x91, - 0xca, 0x1b, 0xce, 0x90, 0xc7, 0x1b, 0xcf, 0x91, 0xca, 0x1b, 0xcf, 0x90, - 0xc7, 0x1b, 0xcf, 0x91, 0xca, 0x1b, 0xd0, 0x91, 0xca, 0x1b, 0xd0, 0x91, - 0xca, 0x1b, 0xd0, 0x91, 0xca, 0x1b, 0xd0, 0x91, 0xca, 0x1b, 0xd1, 0x92, - 0xcd, 0x1b, 0xd1, 0x92, 0xcd, 0x1b, 0xd1, 0x92, 0xcd, 0x1b, 0xd2, 0x92, - 0xcd, 0x1b, 0xd2, 0x92, 0xcd, 0x1b, 0xd2, 0x92, 0xcd, 0x1b, 0xd2, 0x92, - 0xcd, 0x1b, 0xd3, 0x92, 0xcd, 0x1b, 0xd3, 0x92, 0xcd, 0x1b, 0xd3, 0x92, - 0xcd, 0x1b, 0xd4, 0x93, 0xd0, 0x1b, 0xd4, 0x92, 0xcd, 0x1b, 0xd4, 0x93, - 0xd0, 0x1b, 0xd4, 0x92, 0xcd, 0x1b, 0xd5, 0x93, 0xd0, 0x1b, 0xd5, 0x93, - 0xcf, 0x1b, 0xd5, 0x93, 0xd0, 0x1b, 0xd6, 0x93, 0xcf, 0x1b, 0xd6, 0x93, - 0xd0, 0x1b, 0xd6, 0x93, 0xcf, 0x1b, 0xd6, 0x93, 0xd0, 0x1b, 0xd7, 0x94, - 0xd2, 0x1b, 0xd7, 0x94, 0xd2, 0x1b, 0xd7, 0x94, 0xd2, 0x1b, 0xd7, 0x94, - 0xd2, 0x1b, 0xd8, 0x94, 0xd2, 0x1b, 0xd8, 0x94, 0xd2, 0x1b, 0xd8, 0x94, - 0xd2, 0x1b, 0xd9, 0x94, 0xd2, 0x1b, 0xd9, 0x94, 0xd2, 0x1b, 0xd9, 0x94, - 0xd2, 0x1b, 0xd9, 0x94, 0xd5, 0x1b, 0xda, 0x94, 0xd2, 0x1b, 0xda, 0x94, - 0xd5, 0x1b, 0xda, 0x94, 0xd2, 0x1b, 0xda, 0x94, 0xd5, 0x1b, 0xdb, 0x94, - 0xd5, 0x1b, 0xdb, 0x94, 0xd5, 0x1b, 0xdb, 0x94, 0xd5, 0x1b, 0xdb, 0x94, - 0xd5, 0x1b, 0xdc, 0x95, 0xd7, 0x1b, 0xdc, 0x94, 0xd5, 0x1b, 0xdc, 0x95, - 0xd7, 0x1b, 0xdd, 0x94, 0xd5, 0x1b, 0xdd, 0x95, 0xd7, 0x1b, 0xdd, 0x95, - 0xd7, 0x1b, 0xdd, 0x95, 0xd7, 0x1b, 0xde, 0x95, 0xd7, 0x1b, 0xde, 0x95, - 0xd7, 0x1b, 0xde, 0x96, 0xda, 0x1b, 0xde, 0x96, 0xda, 0x1b, 0xdf, 0x96, - 0xda, 0x1b, 0xdf, 0x96, 0xda, 0x1b, 0xdf, 0x96, 0xda, 0x1b, 0xdf, 0x96, - 0xda, 0x1b, 0xe0, 0x96, 0xda, 0x1b, 0xe0, 0x96, 0xda, 0x1b, 0xe0, 0x96, - 0xda, 0x1b, 0xe1, 0x96, 0xda, 0x1b, 0xe1, 0x97, 0xdd, 0x1b, 0xe1, 0x96, - 0xda, 0x1b, 0xe1, 0x97, 0xdd, 0x1b, 0xe2, 0x96, 0xda, 0x1b, 0xe2, 0x97, - 0xdd, 0x1b, 0xe2, 0x97, 0xdc, 0x1b, 0xe2, 0x97, 0xdd, 0x1b, 0xe3, 0x97, - 0xdc, 0x1b, 0xe3, 0x97, 0xdd, 0x1b, 0xe3, 0x98, 0xdf, 0x1b, 0xe3, 0x97, - 0xdd, 0x1b, 0xe4, 0x98, 0xdf, 0x1b, 0xe4, 0x97, 0xdd, 0x1b, 0xe4, 0x98, - 0xdf, 0x1b, 0xe4, 0x97, 0xdd, 0x1b, 0xe5, 0x98, 0xdf, 0x1b, 0xe5, 0x98, - 0xdf, 0x1b, 0xe5, 0x98, 0xdf, 0x1b, 0xe5, 0x98, 0xdf, 0x1b, 0xe6, 0x98, - 0xdf, 0x1b, 0xe6, 0x99, 0xe1, 0x1b, 0xe6, 0x99, 0xe2, 0x1b, 0xe6, 0x99, - 0xe1, 0x1b, 0xe7, 0x99, 0xe2, 0x1b, 0xe7, 0x99, 0xe1, 0x1b, 0xe7, 0x99, - 0xe2, 0x1b, 0xe7, 0x99, 0xe1, 0x1b, 0xe8, 0x99, 0xe2, 0x1b, 0xe8, 0x99, - 0xe1, 0x1b, 0xe8, 0x99, 0xe2, 0x1b, 0xe8, 0x9a, 0xe4, 0x1b, 0xe9, 0x99, - 0xe2, 0x1b, 0xe9, 0x9a, 0xe4, 0x1b, 0xe9, 0x99, 0xe2, 0x1b, 0xe9, 0x9a, - 0xe4, 0x1b, 0xea, 0x9a, 0xe4, 0x1b, 0xea, 0x9a, 0xe4, 0x1b, 0xea, 0x9a, - 0xe4, 0x1b, 0xea, 0x9a, 0xe4, 0x1b, 0xeb, 0x9a, 0xe6, 0x1b, 0xeb, 0x9a, - 0xe4, 0x1b, 0xeb, 0x9a, 0xe6, 0x1b, 0xeb, 0x9a, 0xe4, 0x1b, 0xec, 0x9a, - 0xe6, 0x1b, 0xec, 0x9a, 0xe6, 0x1b, 0xec, 0x9a, 0xe6, 0x1b, 0xec, 0x9a, - 0xe6, 0x1b, 0xec, 0x9a, 0xe6, 0x1b, 0xed, 0x9b, 0xe8, 0x1b, 0xed, 0x9b, - 0xe9, 0x1b, 0xed, 0x9b, 0xe8, 0x1b, 0xed, 0x9b, 0xe9, 0x1b, 0xee, 0x9b, - 0xe8, 0x1b, 0xee, 0x9b, 0xe9, 0x1b, 0xee, 0x9b, 0xe8, 0x1b, 0xee, 0x9b, - 0xe9, 0x1b, 0xef, 0x9b, 0xe8, 0x1b, 0xef, 0x9b, 0xe9, 0x1b, 0xef, 0x9b, - 0xe8, 0x1b, 0xef, 0x9b, 0xe9, 0x1b, 0xf0, 0x9c, 0xeb, 0x1b, 0xf0, 0x9b, - 0xe9, 0x1b, 0xf0, 0x9c, 0xeb, 0x1b, 0xf0, 0x9b, 0xe9, 0x1b, 0xf1, 0x9c, - 0xeb, 0x1b, 0xf1, 0x9c, 0xeb, 0x1b, 0xf1, 0x9c, 0xeb, 0x1b, 0xf1, 0x9c, - 0xeb, 0x1b, 0xf2, 0x9c, 0xeb, 0x1b, 0xf2, 0x9d, 0xed, 0x1b, 0xf2, 0x9d, - 0xed, 0x1b, 0xf2, 0x9d, 0xed, 0x1b, 0xf2, 0x9d, 0xed, 0x1b, 0xf3, 0x9d, - 0xed, 0x1b, 0xf3, 0x9d, 0xed, 0x1b, 0xf3, 0x9d, 0xed, 0x1b, 0xf3, 0x9d, - 0xed, 0x1b, 0xf4, 0x9d, 0xed, 0x1b, 0xf4, 0x9d, 0xed, 0x1b, 0xf4, 0x9e, - 0xef, 0x1b, 0xf4, 0x9d, 0xed, 0x1b, 0xf5, 0x9e, 0xef, 0x1b, 0xf5, 0x9d, - 0xed, 0x1b, 0xf5, 0x9e, 0xef, 0x1b, 0xf5, 0x9e, 0xef, 0x1b, 0xf5, 0x9e, - 0xef, 0x1b, 0xf6, 0x9e, 0xef, 0x1b, 0xf6, 0x9e, 0xef, 0x1b, 0xf6, 0x9f, - 0xf2, 0x1b, 0xf6, 0x9e, 0xef, 0x1b, 0xf7, 0x9f, 0xf2, 0x1b, 0xf7, 0x9e, - 0xef, 0x1b, 0xf7, 0x9f, 0xf2, 0x1b, 0xf7, 0x9e, 0xef, 0x1b, 0xf8, 0x9f, - 0xf2, 0x1b, 0xf8, 0x9f, 0xf1, 0x1b, 0xf8, 0x9f, 0xf2, 0x1b, 0xf8, 0x9f, - 0xf4, 0x1b, 0xf8, 0x9f, 0xf4, 0x1b, 0xf9, 0x9f, 0xf4, 0x1b, 0xf9, 0x9f, - 0xf4, 0x1b, 0xf9, 0x9f, 0xf4, 0x1b, 0xf9, 0x9f, 0xf4, 0x1b, 0xfa, 0x9f, - 0xf4, 0x1b, 0xfa, 0x9f, 0xf4, 0x1b, 0xfa, 0x9f, 0xf4, 0x1b, 0xfa, 0x9f, - 0xf4, 0x1b, 0xfa, 0xa0, 0xf6, 0x1b, 0xfb, 0x9f, 0xf4, 0x1b, 0xfb, 0xa0, - 0xf6, 0x1b, 0xfb, 0x9f, 0xf4, 0x1b, 0xfb, 0xa0, 0xf6, 0x1b, 0xfc, 0x9f, - 0xf4, 0x1b, 0xfc, 0xa0, 0xf6, 0x1b, 0xfc, 0xa0, 0xf6, 0x1b, 0xfc, 0xa0, - 0xf6, 0x1b, 0xfc, 0xa0, 0xf6, 0x1b, 0xfd, 0xa0, 0xf6, 0x1b, 0xfd, 0xa1, - 0xf8, 0x1b, 0xfd, 0xa0, 0xf6, 0x1b, 0xfd, 0xa1, 0xf8, 0x1b, 0xfe, 0xa0, - 0xf6, 0x1b, 0xfe, 0xa1, 0xf8, 0x1b, 0xfe, 0xa1, 0xf8, 0x1b, 0xfe, 0xa1, - 0xf8, 0x1b, 0xfe, 0xa1, 0xf8, 0x1b, 0xff, 0xa1, 0xf8, 0x1b, 0xff, 0xa2, - 0xfa, 0x1b, 0x03, 0x84, 0x9b, 0x1c, 0x0a, 0x84, 0x9b, 0x1c, 0x0f, 0x84, - 0x9b, 0x1c, 0x14, 0x84, 0x9b, 0x1c, 0x17, 0x84, 0x9b, 0x1c, 0x1b, 0x84, - 0x9b, 0x1c, 0x1e, 0x84, 0x9b, 0x1c, 0x20, 0x86, 0x9b, 0x1c, 0x23, 0x84, - 0x9b, 0x1c, 0x25, 0x86, 0x9b, 0x1c, 0x27, 0x84, 0x9b, 0x1c, 0x29, 0x86, - 0x9b, 0x1c, 0x2b, 0x84, 0x9b, 0x1c, 0x2d, 0x86, 0x9b, 0x1c, 0x2f, 0x84, - 0x9b, 0x1c, 0x31, 0x86, 0x9b, 0x1c, 0x32, 0x84, 0x9b, 0x1c, 0x34, 0x86, - 0x9b, 0x1c, 0x35, 0x84, 0x9b, 0x1c, 0x37, 0x86, 0x9b, 0x1c, 0x38, 0x84, - 0x9b, 0x1c, 0x3a, 0x86, 0x9b, 0x1c, 0x3b, 0x84, 0x9b, 0x1c, 0x3c, 0x86, - 0x9b, 0x1c, 0x3e, 0x84, 0x9b, 0x1c, 0x3f, 0x86, 0x9b, 0x1c, 0x40, 0x84, - 0x9b, 0x1c, 0x42, 0x86, 0x9b, 0x1c, 0x43, 0x84, 0x9b, 0x1c, 0x44, 0x86, - 0x9b, 0x1c, 0x45, 0x84, 0x9b, 0x1c, 0x46, 0x86, 0x9b, 0x1c, 0x47, 0x84, - 0x9b, 0x1c, 0x48, 0x86, 0x9b, 0x1c, 0x49, 0x84, 0x9b, 0x1c, 0x4a, 0x86, - 0x9b, 0x1c, 0x4b, 0x84, 0x9b, 0x1c, 0x4c, 0x86, 0x9b, 0x1c, 0x4d, 0x84, - 0x9b, 0x1c, 0x4e, 0x86, 0x9b, 0x1c, 0x4f, 0x84, 0x9b, 0x1c, 0x50, 0x84, - 0x9c, 0x1c, 0x51, 0x84, 0x9b, 0x1c, 0x52, 0x84, 0x9c, 0x1c, 0x53, 0x84, - 0x9b, 0x1c, 0x54, 0x84, 0x9c, 0x1c, 0x55, 0x84, 0x9b, 0x1c, 0x56, 0x84, - 0x9c, 0x1c, 0x57, 0x84, 0x9b, 0x1c, 0x58, 0x84, 0x9c, 0x1c, 0x58, 0x84, - 0x9b, 0x1c, 0x59, 0x84, 0x9c, 0x1c, 0x5a, 0x84, 0x9b, 0x1c, 0x5b, 0x84, - 0x9c, 0x1c, 0x5c, 0x84, 0x9b, 0x1c, 0x5d, 0x84, 0x9c, 0x1c, 0x5d, 0x84, - 0x9b, 0x1c, 0x5e, 0x84, 0x9c, 0x1c, 0x5f, 0x84, 0x9b, 0x1c, 0x60, 0x84, - 0x9c, 0x1c, 0x60, 0x84, 0x9b, 0x1c, 0x61, 0x84, 0x9c, 0x1c, 0x62, 0x84, - 0x9b, 0x1c, 0x63, 0x84, 0x9c, 0x1c, 0x63, 0x84, 0x9b, 0x1c, 0x64, 0x84, - 0x9c, 0x1c, 0x65, 0x84, 0x9b, 0x1c, 0x66, 0x84, 0x9c, 0x1c, 0x66, 0x84, - 0x9b, 0x1c, 0x67, 0x84, 0x9c, 0x1c, 0x68, 0x84, 0x9b, 0x1c, 0x68, 0x84, - 0x9c, 0x1c, 0x69, 0x84, 0x9b, 0x1c, 0x6a, 0x84, 0x9c, 0x1c, 0x6a, 0x84, - 0x9b, 0x1c, 0x6b, 0x84, 0x9c, 0x1c, 0x6c, 0x84, 0x9b, 0x1c, 0x6c, 0x84, - 0x9c, 0x1c, 0x6d, 0x84, 0x9b, 0x1c, 0x6e, 0x84, 0x9c, 0x1c, 0x6e, 0x84, - 0x9b, 0x1c, 0x6f, 0x84, 0x9c, 0x1c, 0x70, 0x84, 0x9b, 0x1c, 0x70, 0x84, - 0x9c, 0x1c, 0x71, 0x84, 0x9b, 0x1c, 0x72, 0x84, 0x9c, 0x1c, 0x72, 0x84, - 0x9b, 0x1c, 0x73, 0x84, 0x9c, 0x1c, 0x73, 0x84, 0x9b, 0x1c, 0x74, 0x84, - 0x9c, 0x1c, 0x75, 0x84, 0x9b, 0x1c, 0x75, 0x84, 0x9c, 0x1c, 0x76, 0x84, - 0x9b, 0x1c, 0x76, 0x84, 0x9c, 0x1c, 0x77, 0x84, 0x9b, 0x1c, 0x78, 0x84, - 0x9c, 0x1c, 0x78, 0x84, 0x9b, 0x1c, 0x79, 0x84, 0x9c, 0x1c, 0x79, 0x84, - 0x9b, 0x1c, 0x7a, 0x84, 0x9c, 0x1c, 0x7a, 0x84, 0x9b, 0x1c, 0x7b, 0x84, - 0x9c, 0x1c, 0x7c, 0x84, 0x9b, 0x1c, 0x7c, 0x84, 0x9c, 0x1c, 0x7d, 0x84, - 0x9b, 0x1c, 0x7d, 0x84, 0x9c, 0x1c, 0x7e, 0x84, 0x9b, 0x1c, 0x7e, 0x84, - 0x9c, 0x1c, 0x7f, 0x84, 0x9b, 0x1c, 0x7f, 0x84, 0x9c, 0x1c, 0x80, 0x84, - 0x9b, 0x1c, 0x81, 0x84, 0x9c, 0x1c, 0x81, 0x84, 0x9b, 0x1c, 0x82, 0x84, - 0x9c, 0x1c, 0x82, 0x84, 0x9b, 0x1c, 0x83, 0x84, 0x9c, 0x1c, 0x83, 0x84, - 0x9b, 0x1c, 0x84, 0x84, 0x9c, 0x1c, 0x84, 0x84, 0x9b, 0x1c, 0x85, 0x84, - 0x9c, 0x1c, 0x85, 0x84, 0x9b, 0x1c, 0x86, 0x84, 0x9c, 0x1c, 0x86, 0x84, - 0x9b, 0x1c, 0x87, 0x84, 0x9c, 0x1c, 0x87, 0x84, 0x9b, 0x1c, 0x88, 0x84, - 0x9c, 0x1c, 0x88, 0x84, 0x9b, 0x1c, 0x89, 0x84, 0x9c, 0x1c, 0x89, 0x84, - 0x9b, 0x1c, 0x8a, 0x84, 0x9c, 0x1c, 0x8a, 0x84, 0x9b, 0x1c, 0x8b, 0x84, - 0x9c, 0x1c, 0x8b, 0x84, 0x9b, 0x1c, 0x8c, 0x84, 0x9c, 0x1c, 0x8c, 0x84, - 0x9b, 0x1c, 0x8d, 0x84, 0x9c, 0x1c, 0x8d, 0x84, 0x9b, 0x1c, 0x8e, 0x84, - 0x9c, 0x1c, 0x8e, 0x84, 0x9b, 0x1c, 0x8e, 0x84, 0x9c, 0x1c, 0x8f, 0x84, - 0x9b, 0x1c, 0x8f, 0x84, 0x9c, 0x1c, 0x90, 0x84, 0x9b, 0x1c, 0x90, 0x84, - 0x9c, 0x1c, 0x91, 0x84, 0x9b, 0x1c, 0x91, 0x84, 0x9c, 0x1c, 0x92, 0x84, - 0x9b, 0x1c, 0x92, 0x84, 0x9c, 0x1c, 0x93, 0x84, 0x9b, 0x1c, 0x93, 0x84, - 0x9c, 0x1c, 0x94, 0x84, 0x9b, 0x1c, 0x94, 0x84, 0x9c, 0x1c, 0x94, 0x84, - 0x9b, 0x1c, 0x95, 0x84, 0x9c, 0x1c, 0x95, 0x84, 0x9b, 0x1c, 0x96, 0x84, - 0x9c, 0x1c, 0x96, 0x84, 0x9b, 0x1c, 0x97, 0x84, 0x9c, 0x1c, 0x97, 0x84, - 0x9b, 0x1c, 0x98, 0x84, 0x9c, 0x1c, 0x98, 0x84, 0x9b, 0x1c, 0x98, 0x84, - 0x9c, 0x1c, 0x99, 0x84, 0x9b, 0x1c, 0x99, 0x84, 0x9c, 0x1c, 0x9a, 0x84, - 0x9b, 0x1c, 0x9a, 0x84, 0x9c, 0x1c, 0x9a, 0x84, 0x9b, 0x1c, 0x9b, 0x84, - 0x9c, 0x1c, 0x9b, 0x84, 0x9b, 0x1c, 0x9c, 0x84, 0x9c, 0x1c, 0x9c, 0x84, - 0x9c, 0x1c, 0x9d, 0x84, 0x9d, 0x1c, 0x9d, 0x84, 0x9d, 0x1c, 0x9d, 0x84, - 0x9d, 0x1c, 0x9e, 0x84, 0x9e, 0x1c, 0x9e, 0x84, 0x9e, 0x1c, 0x9f, 0x84, - 0x9f, 0x1c, 0x9f, 0x84, 0x9e, 0x1c, 0x9f, 0x84, 0x9f, 0x1c, 0xa0, 0x84, - 0x9e, 0x1c, 0xa0, 0x84, 0x9f, 0x1c, 0xa1, 0x84, 0x9e, 0x1c, 0xa1, 0x84, - 0x9f, 0x1c, 0xa1, 0x84, 0x9e, 0x1c, 0xa2, 0x84, 0x9f, 0x1c, 0xa2, 0x84, - 0x9e, 0x1c, 0xa3, 0x84, 0x9f, 0x1c, 0xa3, 0x84, 0x9e, 0x1c, 0xa3, 0x84, - 0x9f, 0x1c, 0xa4, 0x84, 0x9e, 0x1c, 0xa4, 0x84, 0x9f, 0x1c, 0xa5, 0x84, - 0x9e, 0x1c, 0xa5, 0x84, 0x9f, 0x1c, 0xa5, 0x85, 0xa2, 0x1c, 0xa6, 0x84, - 0x9f, 0x1c, 0xa6, 0x85, 0xa2, 0x1c, 0xa6, 0x85, 0xa2, 0x1c, 0xa7, 0x85, - 0xa2, 0x1c, 0xa7, 0x85, 0xa2, 0x1c, 0xa8, 0x85, 0xa2, 0x1c, 0xa8, 0x85, - 0xa2, 0x1c, 0xa8, 0x85, 0xa2, 0x1c, 0xa9, 0x86, 0xa6, 0x1c, 0xa9, 0x86, - 0xa6, 0x1c, 0xaa, 0x86, 0xa6, 0x1c, 0xaa, 0x86, 0xa6, 0x1c, 0xaa, 0x86, - 0xa6, 0x1c, 0xab, 0x86, 0xa6, 0x1c, 0xab, 0x86, 0xa6, 0x1c, 0xab, 0x86, - 0xa6, 0x1c, 0xac, 0x86, 0xa6, 0x1c, 0xac, 0x86, 0xa6, 0x1c, 0xac, 0x86, - 0xa6, 0x1c, 0xad, 0x86, 0xa6, 0x1c, 0xad, 0x87, 0xaa, 0x1c, 0xae, 0x86, - 0xa6, 0x1c, 0xae, 0x87, 0xaa, 0x1c, 0xae, 0x87, 0xa9, 0x1c, 0xaf, 0x87, - 0xaa, 0x1c, 0xaf, 0x87, 0xa9, 0x1c, 0xaf, 0x87, 0xaa, 0x1c, 0xb0, 0x87, - 0xa9, 0x1c, 0xb0, 0x87, 0xaa, 0x1c, 0xb0, 0x88, 0xad, 0x1c, 0xb1, 0x88, - 0xad, 0x1c, 0xb1, 0x88, 0xad, 0x1c, 0xb2, 0x88, 0xad, 0x1c, 0xb2, 0x88, - 0xad, 0x1c, 0xb2, 0x88, 0xad, 0x1c, 0xb3, 0x88, 0xad, 0x1c, 0xb3, 0x88, - 0xad, 0x1c, 0xb3, 0x88, 0xad, 0x1c, 0xb4, 0x88, 0xad, 0x1c, 0xb4, 0x89, - 0xb0, 0x1c, 0xb4, 0x88, 0xad, 0x1c, 0xb5, 0x89, 0xb0, 0x1c, 0xb5, 0x89, - 0xb0, 0x1c, 0xb5, 0x89, 0xb0, 0x1c, 0xb6, 0x89, 0xb2, 0x1c, 0xb6, 0x89, - 0xb0, 0x1c, 0xb6, 0x89, 0xb2, 0x1c, 0xb7, 0x89, 0xb0, 0x1c, 0xb7, 0x89, - 0xb2, 0x1c, 0xb7, 0x89, 0xb0, 0x1c, 0xb8, 0x89, 0xb2, 0x1c, 0xb8, 0x89, - 0xb2, 0x1c, 0xb8, 0x89, 0xb2, 0x1c, 0xb9, 0x89, 0xb2, 0x1c, 0xb9, 0x89, - 0xb2, 0x1c, 0xb9, 0x8a, 0xb3, 0x1c, 0xba, 0x8a, 0xb4, 0x1c, 0xba, 0x8a, - 0xb3, 0x1c, 0xba, 0x8a, 0xb4, 0x1c, 0xbb, 0x8b, 0xb7, 0x1c, 0xbb, 0x8b, - 0xb7, 0x1c, 0xbb, 0x8b, 0xb7, 0x1c, 0xbc, 0x8b, 0xb7, 0x1c, 0xbc, 0x8b, - 0xb7, 0x1c, 0xbc, 0x8b, 0xb7, 0x1c, 0xbd, 0x8b, 0xb7, 0x1c, 0xbd, 0x8b, - 0xb7, 0x1c, 0xbd, 0x8b, 0xb7, 0x1c, 0xbe, 0x8b, 0xb7, 0x1c, 0xbe, 0x8c, - 0xba, 0x1c, 0xbe, 0x8b, 0xb7, 0x1c, 0xbf, 0x8c, 0xba, 0x1c, 0xbf, 0x8c, - 0xba, 0x1c, 0xbf, 0x8c, 0xba, 0x1c, 0xc0, 0x8c, 0xba, 0x1c, 0xc0, 0x8c, - 0xba, 0x1c, 0xc0, 0x8c, 0xba, 0x1c, 0xc1, 0x8c, 0xba, 0x1c, 0xc1, 0x8d, - 0xbd, 0x1c, 0xc1, 0x8c, 0xba, 0x1c, 0xc1, 0x8d, 0xbd, 0x1c, 0xc2, 0x8d, - 0xbd, 0x1c, 0xc2, 0x8d, 0xbd, 0x1c, 0xc2, 0x8d, 0xbd, 0x1c, 0xc3, 0x8d, - 0xbd, 0x1c, 0xc3, 0x8d, 0xbd, 0x1c, 0xc3, 0x8d, 0xbd, 0x1c, 0xc4, 0x8e, - 0xc0, 0x1c, 0xc4, 0x8e, 0xc0, 0x1c, 0xc4, 0x8e, 0xc0, 0x1c, 0xc5, 0x8e, - 0xc0, 0x1c, 0xc5, 0x8e, 0xc0, 0x1c, 0xc5, 0x8e, 0xc0, 0x1c, 0xc6, 0x8e, - 0xc0, 0x1c, 0xc6, 0x8e, 0xc0, 0x1c, 0xc6, 0x8e, 0xc0, 0x1c, 0xc6, 0x8e, - 0xc0, 0x1c, 0xc7, 0x8e, 0xc3, 0x1c, 0xc7, 0x8e, 0xc0, 0x1c, 0xc7, 0x8e, - 0xc3, 0x1c, 0xc8, 0x8e, 0xc0, 0x1c, 0xc8, 0x8e, 0xc3, 0x1c, 0xc8, 0x8e, - 0xc3, 0x1c, 0xc9, 0x8e, 0xc3, 0x1c, 0xc9, 0x8e, 0xc3, 0x1c, 0xc9, 0x8e, - 0xc3, 0x1c, 0xc9, 0x8f, 0xc6, 0x1c, 0xca, 0x8e, 0xc3, 0x1c, 0xca, 0x8f, - 0xc6, 0x1c, 0xca, 0x8e, 0xc3, 0x1c, 0xcb, 0x8f, 0xc6, 0x1c, 0xcb, 0x8f, - 0xc6, 0x1c, 0xcb, 0x8f, 0xc6, 0x1c, 0xcc, 0x8f, 0xc6, 0x1c, 0xcc, 0x8f, - 0xc6, 0x1c, 0xcc, 0x8f, 0xc6, 0x1c, 0xcc, 0x8f, 0xc6, 0x1c, 0xcd, 0x90, - 0xc9, 0x1c, 0xcd, 0x90, 0xc9, 0x1c, 0xcd, 0x90, 0xc9, 0x1c, 0xce, 0x90, - 0xc9, 0x1c, 0xce, 0x90, 0xc9, 0x1c, 0xce, 0x90, 0xc9, 0x1c, 0xce, 0x90, - 0xc9, 0x1c, 0xcf, 0x90, 0xc9, 0x1c, 0xcf, 0x90, 0xc9, 0x1c, 0xcf, 0x90, - 0xc9, 0x1c, 0xd0, 0x91, 0xcc, 0x1c, 0xd0, 0x90, 0xc9, 0x1c, 0xd0, 0x91, - 0xcc, 0x1c, 0xd0, 0x90, 0xc9, 0x1c, 0xd1, 0x91, 0xcc, 0x1c, 0xd1, 0x91, - 0xcb, 0x1c, 0xd1, 0x91, 0xcc, 0x1c, 0xd2, 0x91, 0xcb, 0x1c, 0xd2, 0x91, - 0xcc, 0x1c, 0xd2, 0x92, 0xce, 0x1c, 0xd2, 0x92, 0xce, 0x1c, 0xd3, 0x92, - 0xce, 0x1c, 0xd3, 0x92, 0xce, 0x1c, 0xd3, 0x92, 0xce, 0x1c, 0xd4, 0x92, - 0xce, 0x1c, 0xd4, 0x92, 0xce, 0x1c, 0xd4, 0x92, 0xce, 0x1c, 0xd4, 0x92, - 0xce, 0x1c, 0xd5, 0x92, 0xce, 0x1c, 0xd5, 0x93, 0xd1, 0x1c, 0xd5, 0x92, - 0xce, 0x1c, 0xd6, 0x93, 0xd1, 0x1c, 0xd6, 0x92, 0xce, 0x1c, 0xd6, 0x93, - 0xd1, 0x1c, 0xd6, 0x93, 0xd1, 0x1c, 0xd7, 0x93, 0xd1, 0x1c, 0xd7, 0x93, - 0xd1, 0x1c, 0xd7, 0x93, 0xd1, 0x1c, 0xd7, 0x93, 0xd1, 0x1c, 0xd8, 0x93, - 0xd1, 0x1c, 0xd8, 0x94, 0xd4, 0x1c, 0xd8, 0x93, 0xd1, 0x1c, 0xd9, 0x94, - 0xd4, 0x1c, 0xd9, 0x94, 0xd3, 0x1c, 0xd9, 0x94, 0xd4, 0x1c, 0xd9, 0x94, - 0xd3, 0x1c, 0xda, 0x94, 0xd4, 0x1c, 0xda, 0x94, 0xd3, 0x1c, 0xda, 0x94, - 0xd4, 0x1c, 0xda, 0x95, 0xd6, 0x1c, 0xdb, 0x95, 0xd6, 0x1c, 0xdb, 0x95, - 0xd6, 0x1c, 0xdb, 0x95, 0xd6, 0x1c, 0xdb, 0x95, 0xd6, 0x1c, 0xdc, 0x95, - 0xd6, 0x1c, 0xdc, 0x95, 0xd6, 0x1c, 0xdc, 0x95, 0xd6, 0x1c, 0xdd, 0x95, - 0xd6, 0x1c, 0xdd, 0x95, 0xd6, 0x1c, 0xdd, 0x96, 0xd9, 0x1c, 0xdd, 0x95, - 0xd6, 0x1c, 0xde, 0x96, 0xd9, 0x1c, 0xde, 0x95, 0xd6, 0x1c, 0xde, 0x96, - 0xd9, 0x1c, 0xde, 0x96, 0xd9, 0x1c, 0xdf, 0x96, 0xd9, 0x1c, 0xdf, 0x96, - 0xd9, 0x1c, 0xdf, 0x96, 0xd9, 0x1c, 0xdf, 0x97, 0xdb, 0x1c, 0xe0, 0x96, - 0xd9, 0x1c, 0xe0, 0x97, 0xdb, 0x1c, 0xe0, 0x96, 0xd9, 0x1c, 0xe1, 0x97, - 0xdb, 0x1c, 0xe1, 0x97, 0xdb, 0x1c, 0xe1, 0x97, 0xdb, 0x1c, 0xe1, 0x97, - 0xdb, 0x1c, 0xe2, 0x97, 0xdb, 0x1c, 0xe2, 0x98, 0xde, 0x1c, 0xe2, 0x98, - 0xde, 0x1c, 0xe2, 0x98, 0xde, 0x1c, 0xe3, 0x98, 0xde, 0x1c, 0xe3, 0x98, - 0xde, 0x1c, 0xe3, 0x98, 0xde, 0x1c, 0xe3, 0x98, 0xde, 0x1c, 0xe4, 0x98, - 0xde, 0x1c, 0xe4, 0x98, 0xde, 0x1c, 0xe4, 0x98, 0xde, 0x1c, 0xe4, 0x98, - 0xe0, 0x1c, 0xe5, 0x98, 0xde, 0x1c, 0xe5, 0x98, 0xe0, 0x1c, 0xe5, 0x98, - 0xde, 0x1c, 0xe5, 0x98, 0xe0, 0x1c, 0xe6, 0x98, 0xde, 0x1c, 0xe6, 0x98, - 0xe0, 0x1c, 0xe6, 0x98, 0xe0, 0x1c, 0xe6, 0x98, 0xe0, 0x1c, 0xe7, 0x98, - 0xe0, 0x1c, 0xe7, 0x98, 0xe0, 0x1c, 0xe7, 0x99, 0xe3, 0x1c, 0xe7, 0x98, - 0xe0, 0x1c, 0xe8, 0x99, 0xe3, 0x1c, 0xe8, 0x98, 0xe0, 0x1c, 0xe8, 0x99, - 0xe3, 0x1c, 0xe8, 0x99, 0xe2, 0x1c, 0xe9, 0x99, 0xe3, 0x1c, 0xe9, 0x99, - 0xe2, 0x1c, 0xe9, 0x99, 0xe3, 0x1c, 0xe9, 0x9a, 0xe5, 0x1c, 0xea, 0x9a, - 0xe5, 0x1c, 0xea, 0x9a, 0xe5, 0x1c, 0xea, 0x9a, 0xe5, 0x1c, 0xea, 0x9a, - 0xe5, 0x1c, 0xeb, 0x9a, 0xe5, 0x1c, 0xeb, 0x9a, 0xe5, 0x1c, 0xeb, 0x9a, - 0xe5, 0x1c, 0xeb, 0x9a, 0xe5, 0x1c, 0xec, 0x9a, 0xe5, 0x1c, 0xec, 0x9b, - 0xe7, 0x1c, 0xec, 0x9a, 0xe5, 0x1c, 0xec, 0x9b, 0xe7, 0x1c, 0xec, 0x9a, - 0xe5, 0x1c, 0xed, 0x9b, 0xe7, 0x1c, 0xed, 0x9b, 0xe7, 0x1c, 0xed, 0x9b, - 0xe7, 0x1c, 0xed, 0x9b, 0xe7, 0x1c, 0xee, 0x9b, 0xe7, 0x1c, 0xee, 0x9c, - 0xea, 0x1c, 0xee, 0x9c, 0xea, 0x1c, 0xee, 0x9c, 0xea, 0x1c, 0xef, 0x9c, - 0xea, 0x1c, 0xef, 0x9c, 0xea, 0x1c, 0xef, 0x9c, 0xea, 0x1c, 0xef, 0x9c, - 0xea, 0x1c, 0xf0, 0x9c, 0xea, 0x1c, 0xf0, 0x9c, 0xea, 0x1c, 0xf0, 0x9c, - 0xea, 0x1c, 0xf0, 0x9c, 0xea, 0x1c, 0xf1, 0x9c, 0xea, 0x1c, 0xf1, 0x9d, - 0xec, 0x1c, 0xf1, 0x9c, 0xea, 0x1c, 0xf1, 0x9d, 0xec, 0x1c, 0xf2, 0x9c, - 0xea, 0x1c, 0xf2, 0x9d, 0xec, 0x1c, 0xf2, 0x9d, 0xec, 0x1c, 0xf2, 0x9d, - 0xec, 0x1c, 0xf2, 0x9d, 0xec, 0x1c, 0xf3, 0x9d, 0xec, 0x1c, 0xf3, 0x9d, - 0xee, 0x1c, 0xf3, 0x9d, 0xec, 0x1c, 0xf3, 0x9d, 0xee, 0x1c, 0xf4, 0x9d, - 0xec, 0x1c, 0xf4, 0x9d, 0xee, 0x1c, 0xf4, 0x9d, 0xee, 0x1c, 0xf4, 0x9d, - 0xee, 0x1c, 0xf5, 0x9d, 0xee, 0x1c, 0xf5, 0x9d, 0xee, 0x1c, 0xf5, 0x9e, - 0xf0, 0x1c, 0xf5, 0x9e, 0xf1, 0x1c, 0xf5, 0x9e, 0xf0, 0x1c, 0xf6, 0x9e, - 0xf1, 0x1c, 0xf6, 0x9e, 0xf0, 0x1c, 0xf6, 0x9e, 0xf1, 0x1c, 0xf6, 0x9e, - 0xf0, 0x1c, 0xf7, 0x9e, 0xf1, 0x1c, 0xf7, 0x9e, 0xf0, 0x1c, 0xf7, 0x9e, - 0xf1, 0x1c, 0xf7, 0x9f, 0xf3, 0x1c, 0xf8, 0x9e, 0xf1, 0x1c, 0xf8, 0x9f, - 0xf3, 0x1c, 0xf8, 0x9e, 0xf1, 0x1c, 0xf8, 0x9f, 0xf3, 0x1c, 0xf8, 0x9e, - 0xf1, 0x1c, 0xf9, 0x9f, 0xf3, 0x1c, 0xf9, 0x9f, 0xf2, 0x1c, 0xf9, 0x9f, - 0xf3, 0x1c, 0xf9, 0xa0, 0xf5, 0x1c, 0xfa, 0x9f, 0xf3, 0x1c, 0xfa, 0xa0, - 0xf5, 0x1c, 0xfa, 0x9f, 0xf3, 0x1c, 0xfa, 0xa0, 0xf5, 0x1c, 0xfa, 0x9f, - 0xf3, 0x1c, 0xfb, 0xa0, 0xf5, 0x1c, 0xfb, 0xa0, 0xf5, 0x1c, 0xfb, 0xa0, - 0xf5, 0x1c, 0xfb, 0xa1, 0xf7, 0x1c, 0xfc, 0xa1, 0xf7, 0x1c, 0xfc, 0xa1, - 0xf7, 0x1c, 0xfc, 0xa1, 0xf7, 0x1c, 0xfc, 0xa1, 0xf7, 0x1c, 0xfc, 0xa1, - 0xf7, 0x1c, 0xfd, 0xa1, 0xf7, 0x1c, 0xfd, 0xa1, 0xf7, 0x1c, 0xfd, 0xa1, - 0xf7, 0x1c, 0xfd, 0xa1, 0xf7, 0x1c, 0xfe, 0xa1, 0xf7, 0x1c, 0xfe, 0xa1, - 0xf7, 0x1c, 0xfe, 0xa1, 0xf9, 0x1c, 0xfe, 0xa1, 0xf7, 0x1c, 0xfe, 0xa1, - 0xf9, 0x1c, 0xff, 0xa1, 0xf7, 0x1c, 0xff, 0xa1, 0xf9, 0x1c, 0x03, 0x83, - 0x9b, 0x1c, 0x0a, 0x83, 0x9b, 0x1c, 0x0f, 0x83, 0x9b, 0x1c, 0x14, 0x83, - 0x9b, 0x1c, 0x17, 0x83, 0x9b, 0x1c, 0x1b, 0x83, 0x9b, 0x1c, 0x1e, 0x83, - 0x9b, 0x1c, 0x20, 0x83, 0x9c, 0x1c, 0x23, 0x83, 0x9b, 0x1c, 0x25, 0x83, - 0x9c, 0x1c, 0x27, 0x83, 0x9b, 0x1c, 0x29, 0x83, 0x9c, 0x1c, 0x2b, 0x83, - 0x9b, 0x1c, 0x2d, 0x83, 0x9c, 0x1c, 0x2f, 0x83, 0x9b, 0x1c, 0x31, 0x83, - 0x9c, 0x1c, 0x32, 0x83, 0x9b, 0x1c, 0x34, 0x83, 0x9c, 0x1c, 0x35, 0x83, - 0x9b, 0x1c, 0x37, 0x83, 0x9c, 0x1c, 0x38, 0x83, 0x9b, 0x1c, 0x3a, 0x83, - 0x9c, 0x1c, 0x3b, 0x83, 0x9b, 0x1c, 0x3c, 0x83, 0x9c, 0x1c, 0x3e, 0x83, - 0x9b, 0x1c, 0x3f, 0x83, 0x9c, 0x1c, 0x40, 0x83, 0x9b, 0x1c, 0x42, 0x83, - 0x9c, 0x1c, 0x43, 0x83, 0x9b, 0x1c, 0x44, 0x83, 0x9c, 0x1c, 0x45, 0x83, - 0x9b, 0x1c, 0x46, 0x83, 0x9c, 0x1c, 0x47, 0x83, 0x9b, 0x1c, 0x48, 0x83, - 0x9c, 0x1c, 0x49, 0x83, 0x9b, 0x1c, 0x4a, 0x83, 0x9c, 0x1c, 0x4b, 0x83, - 0x9b, 0x1c, 0x4c, 0x83, 0x9c, 0x1c, 0x4d, 0x83, 0x9b, 0x1c, 0x4e, 0x83, - 0x9c, 0x1c, 0x4f, 0x83, 0x9b, 0x1c, 0x50, 0x83, 0x9c, 0x1c, 0x51, 0x83, - 0x9b, 0x1c, 0x52, 0x83, 0x9c, 0x1c, 0x53, 0x83, 0x9b, 0x1c, 0x54, 0x83, - 0x9c, 0x1c, 0x55, 0x83, 0x9b, 0x1c, 0x56, 0x83, 0x9c, 0x1c, 0x57, 0x83, - 0x9b, 0x1c, 0x58, 0x83, 0x9c, 0x1c, 0x58, 0x83, 0x9b, 0x1c, 0x59, 0x83, - 0x9c, 0x1c, 0x5a, 0x83, 0x9b, 0x1c, 0x5b, 0x83, 0x9c, 0x1c, 0x5c, 0x83, - 0x9b, 0x1c, 0x5d, 0x83, 0x9c, 0x1c, 0x5d, 0x83, 0x9b, 0x1c, 0x5e, 0x83, - 0x9c, 0x1c, 0x5f, 0x83, 0x9b, 0x1c, 0x60, 0x83, 0x9c, 0x1c, 0x60, 0x83, - 0x9b, 0x1c, 0x61, 0x83, 0x9c, 0x1c, 0x62, 0x83, 0x9b, 0x1c, 0x63, 0x83, - 0x9c, 0x1c, 0x63, 0x83, 0x9b, 0x1c, 0x64, 0x83, 0x9c, 0x1c, 0x65, 0x83, - 0x9b, 0x1c, 0x66, 0x83, 0x9c, 0x1c, 0x66, 0x83, 0x9b, 0x1c, 0x67, 0x83, - 0x9c, 0x1c, 0x68, 0x83, 0x9b, 0x1c, 0x68, 0x83, 0x9c, 0x1c, 0x69, 0x83, - 0x9b, 0x1c, 0x6a, 0x83, 0x9c, 0x1c, 0x6a, 0x83, 0x9b, 0x1c, 0x6b, 0x83, - 0x9c, 0x1c, 0x6c, 0x83, 0x9b, 0x1c, 0x6c, 0x83, 0x9c, 0x1c, 0x6d, 0x83, - 0x9b, 0x1c, 0x6e, 0x83, 0x9c, 0x1c, 0x6e, 0x83, 0x9b, 0x1c, 0x6f, 0x83, - 0x9c, 0x1c, 0x70, 0x83, 0x9b, 0x1c, 0x70, 0x83, 0x9c, 0x1c, 0x71, 0x83, - 0x9b, 0x1c, 0x72, 0x83, 0x9c, 0x1c, 0x72, 0x83, 0x9b, 0x1c, 0x73, 0x83, - 0x9c, 0x1c, 0x73, 0x83, 0x9b, 0x1c, 0x74, 0x83, 0x9c, 0x1c, 0x75, 0x83, - 0x9b, 0x1c, 0x75, 0x83, 0x9c, 0x1c, 0x76, 0x83, 0x9b, 0x1c, 0x76, 0x83, - 0x9c, 0x1c, 0x77, 0x83, 0x9b, 0x1c, 0x78, 0x83, 0x9c, 0x1c, 0x78, 0x83, - 0x9b, 0x1c, 0x79, 0x83, 0x9c, 0x1c, 0x79, 0x83, 0x9b, 0x1c, 0x7a, 0x83, - 0x9c, 0x1c, 0x7a, 0x83, 0x9b, 0x1c, 0x7b, 0x83, 0x9c, 0x1c, 0x7c, 0x83, - 0x9b, 0x1c, 0x7c, 0x83, 0x9c, 0x1c, 0x7d, 0x83, 0x9b, 0x1c, 0x7d, 0x83, - 0x9c, 0x1c, 0x7e, 0x83, 0x9b, 0x1c, 0x7e, 0x83, 0x9c, 0x1c, 0x7f, 0x83, - 0x9b, 0x1c, 0x7f, 0x83, 0x9c, 0x1c, 0x80, 0x83, 0x9b, 0x1c, 0x81, 0x83, - 0x9c, 0x1c, 0x81, 0x83, 0x9b, 0x1c, 0x82, 0x83, 0x9c, 0x1c, 0x82, 0x83, - 0x9b, 0x1c, 0x83, 0x83, 0x9c, 0x1c, 0x83, 0x83, 0x9b, 0x1c, 0x84, 0x83, - 0x9c, 0x1c, 0x84, 0x83, 0x9b, 0x1c, 0x85, 0x83, 0x9c, 0x1c, 0x85, 0x83, - 0x9b, 0x1c, 0x86, 0x83, 0x9c, 0x1c, 0x86, 0x83, 0x9b, 0x1c, 0x87, 0x83, - 0x9c, 0x1c, 0x87, 0x83, 0x9b, 0x1c, 0x88, 0x83, 0x9c, 0x1c, 0x88, 0x83, - 0x9b, 0x1c, 0x89, 0x83, 0x9c, 0x1c, 0x89, 0x83, 0x9b, 0x1c, 0x8a, 0x83, - 0x9c, 0x1c, 0x8a, 0x83, 0x9b, 0x1c, 0x8b, 0x83, 0x9c, 0x1c, 0x8b, 0x83, - 0x9b, 0x1c, 0x8c, 0x83, 0x9c, 0x1c, 0x8c, 0x83, 0x9b, 0x1c, 0x8d, 0x83, - 0x9c, 0x1c, 0x8d, 0x83, 0x9b, 0x1c, 0x8e, 0x83, 0x9c, 0x1c, 0x8e, 0x83, - 0x9b, 0x1c, 0x8e, 0x83, 0x9c, 0x1c, 0x8f, 0x83, 0x9b, 0x1c, 0x8f, 0x83, - 0x9c, 0x1c, 0x90, 0x83, 0x9b, 0x1c, 0x90, 0x83, 0x9c, 0x1c, 0x91, 0x83, - 0x9b, 0x1c, 0x91, 0x83, 0x9c, 0x1c, 0x92, 0x83, 0x9b, 0x1c, 0x92, 0x83, - 0x9c, 0x1c, 0x93, 0x83, 0x9b, 0x1c, 0x93, 0x83, 0x9c, 0x1c, 0x94, 0x83, - 0x9b, 0x1c, 0x94, 0x83, 0x9c, 0x1c, 0x94, 0x83, 0x9b, 0x1c, 0x95, 0x83, - 0x9c, 0x1c, 0x95, 0x83, 0x9b, 0x1c, 0x96, 0x83, 0x9c, 0x1c, 0x96, 0x83, - 0x9b, 0x1c, 0x97, 0x83, 0x9c, 0x1c, 0x97, 0x83, 0x9b, 0x1c, 0x98, 0x83, - 0x9c, 0x1c, 0x98, 0x83, 0x9b, 0x1c, 0x98, 0x83, 0x9c, 0x1c, 0x99, 0x83, - 0x9b, 0x1c, 0x99, 0x83, 0x9c, 0x1c, 0x9a, 0x83, 0x9b, 0x1c, 0x9a, 0x83, - 0x9c, 0x1c, 0x9a, 0x83, 0x9b, 0x1c, 0x9b, 0x83, 0x9c, 0x1c, 0x9b, 0x83, - 0x9b, 0x1c, 0x9c, 0x83, 0x9c, 0x1c, 0x9c, 0x83, 0x9c, 0x1c, 0x9d, 0x83, - 0x9d, 0x1c, 0x9d, 0x83, 0x9c, 0x1c, 0x9d, 0x83, 0x9d, 0x1c, 0x9e, 0x83, - 0x9c, 0x1c, 0x9e, 0x83, 0x9d, 0x1c, 0x9f, 0x83, 0x9c, 0x1c, 0x9f, 0x83, - 0x9d, 0x1c, 0x9f, 0x83, 0x9c, 0x1c, 0xa0, 0x83, 0x9d, 0x1c, 0xa0, 0x83, - 0x9c, 0x1c, 0xa1, 0x83, 0x9d, 0x1c, 0xa1, 0x83, 0x9c, 0x1c, 0xa1, 0x83, - 0x9d, 0x1c, 0xa2, 0x83, 0x9c, 0x1c, 0xa2, 0x83, 0x9d, 0x1c, 0xa3, 0x83, - 0x9c, 0x1c, 0xa3, 0x83, 0x9d, 0x1c, 0xa3, 0x84, 0xa0, 0x1c, 0xa4, 0x84, - 0xa1, 0x1c, 0xa4, 0x84, 0xa0, 0x1c, 0xa5, 0x84, 0xa1, 0x1c, 0xa5, 0x84, - 0xa0, 0x1c, 0xa5, 0x84, 0xa1, 0x1c, 0xa6, 0x84, 0xa0, 0x1c, 0xa6, 0x84, - 0xa1, 0x1c, 0xa6, 0x84, 0xa0, 0x1c, 0xa7, 0x84, 0xa1, 0x1c, 0xa7, 0x85, - 0xa4, 0x1c, 0xa8, 0x84, 0xa1, 0x1c, 0xa8, 0x85, 0xa4, 0x1c, 0xa8, 0x85, - 0xa4, 0x1c, 0xa9, 0x85, 0xa4, 0x1c, 0xa9, 0x85, 0xa4, 0x1c, 0xaa, 0x85, - 0xa4, 0x1c, 0xaa, 0x85, 0xa4, 0x1c, 0xaa, 0x85, 0xa4, 0x1c, 0xab, 0x86, - 0xa8, 0x1c, 0xab, 0x85, 0xa4, 0x1c, 0xab, 0x86, 0xa8, 0x1c, 0xac, 0x85, - 0xa4, 0x1c, 0xac, 0x86, 0xa8, 0x1c, 0xac, 0x86, 0xa7, 0x1c, 0xad, 0x86, - 0xa8, 0x1c, 0xad, 0x86, 0xa7, 0x1c, 0xae, 0x86, 0xa8, 0x1c, 0xae, 0x86, - 0xa7, 0x1c, 0xae, 0x86, 0xa8, 0x1c, 0xaf, 0x87, 0xab, 0x1c, 0xaf, 0x87, - 0xab, 0x1c, 0xaf, 0x87, 0xab, 0x1c, 0xb0, 0x87, 0xab, 0x1c, 0xb0, 0x87, - 0xab, 0x1c, 0xb0, 0x87, 0xab, 0x1c, 0xb1, 0x87, 0xab, 0x1c, 0xb1, 0x87, - 0xab, 0x1c, 0xb2, 0x87, 0xab, 0x1c, 0xb2, 0x87, 0xab, 0x1c, 0xb2, 0x88, - 0xaf, 0x1c, 0xb3, 0x87, 0xab, 0x1c, 0xb3, 0x88, 0xaf, 0x1c, 0xb3, 0x88, - 0xae, 0x1c, 0xb4, 0x88, 0xaf, 0x1c, 0xb4, 0x88, 0xae, 0x1c, 0xb4, 0x88, - 0xaf, 0x1c, 0xb5, 0x88, 0xae, 0x1c, 0xb5, 0x88, 0xaf, 0x1c, 0xb5, 0x89, - 0xb2, 0x1c, 0xb6, 0x89, 0xb2, 0x1c, 0xb6, 0x89, 0xb2, 0x1c, 0xb6, 0x89, - 0xb2, 0x1c, 0xb7, 0x89, 0xb2, 0x1c, 0xb7, 0x89, 0xb2, 0x1c, 0xb7, 0x89, - 0xb2, 0x1c, 0xb8, 0x89, 0xb2, 0x1c, 0xb8, 0x89, 0xb2, 0x1c, 0xb8, 0x89, - 0xb2, 0x1c, 0xb9, 0x8a, 0xb5, 0x1c, 0xb9, 0x89, 0xb2, 0x1c, 0xb9, 0x8a, - 0xb5, 0x1c, 0xba, 0x89, 0xb2, 0x1c, 0xba, 0x8a, 0xb5, 0x1c, 0xba, 0x8a, - 0xb5, 0x1c, 0xbb, 0x8a, 0xb5, 0x1c, 0xbb, 0x8a, 0xb5, 0x1c, 0xbb, 0x8a, - 0xb5, 0x1c, 0xbc, 0x8a, 0xb5, 0x1c, 0xbc, 0x8a, 0xb5, 0x1c, 0xbc, 0x8b, - 0xb8, 0x1c, 0xbd, 0x8a, 0xb5, 0x1c, 0xbd, 0x8b, 0xb8, 0x1c, 0xbd, 0x8b, - 0xb8, 0x1c, 0xbe, 0x8b, 0xb8, 0x1c, 0xbe, 0x8b, 0xb8, 0x1c, 0xbe, 0x8b, - 0xb8, 0x1c, 0xbf, 0x8b, 0xb8, 0x1c, 0xbf, 0x8b, 0xb8, 0x1c, 0xbf, 0x8c, - 0xbb, 0x1c, 0xc0, 0x8c, 0xbc, 0x1c, 0xc0, 0x8c, 0xbb, 0x1c, 0xc0, 0x8c, - 0xbc, 0x1c, 0xc1, 0x8c, 0xbb, 0x1c, 0xc1, 0x8c, 0xbc, 0x1c, 0xc1, 0x8c, - 0xbb, 0x1c, 0xc1, 0x8c, 0xbc, 0x1c, 0xc2, 0x8c, 0xbb, 0x1c, 0xc2, 0x8c, - 0xbc, 0x1c, 0xc2, 0x8d, 0xbf, 0x1c, 0xc3, 0x8c, 0xbc, 0x1c, 0xc3, 0x8d, - 0xbf, 0x1c, 0xc3, 0x8d, 0xbe, 0x1c, 0xc4, 0x8d, 0xbf, 0x1c, 0xc4, 0x8d, - 0xbe, 0x1c, 0xc4, 0x8d, 0xbf, 0x1c, 0xc5, 0x8d, 0xbe, 0x1c, 0xc5, 0x8d, - 0xbf, 0x1c, 0xc5, 0x8e, 0xc1, 0x1c, 0xc6, 0x8d, 0xbf, 0x1c, 0xc6, 0x8e, - 0xc1, 0x1c, 0xc6, 0x8d, 0xbf, 0x1c, 0xc6, 0x8e, 0xc1, 0x1c, 0xc7, 0x8e, - 0xc1, 0x1c, 0xc7, 0x8e, 0xc1, 0x1c, 0xc7, 0x8e, 0xc1, 0x1c, 0xc8, 0x8e, - 0xc1, 0x1c, 0xc8, 0x8f, 0xc4, 0x1c, 0xc8, 0x8f, 0xc5, 0x1c, 0xc9, 0x8f, - 0xc4, 0x1c, 0xc9, 0x8f, 0xc5, 0x1c, 0xc9, 0x8f, 0xc4, 0x1c, 0xc9, 0x8f, - 0xc5, 0x1c, 0xca, 0x8f, 0xc4, 0x1c, 0xca, 0x8f, 0xc5, 0x1c, 0xca, 0x8f, - 0xc4, 0x1c, 0xcb, 0x8f, 0xc5, 0x1c, 0xcb, 0x90, 0xc7, 0x1c, 0xcb, 0x8f, - 0xc5, 0x1c, 0xcc, 0x90, 0xc7, 0x1c, 0xcc, 0x8f, 0xc5, 0x1c, 0xcc, 0x90, - 0xc7, 0x1c, 0xcc, 0x90, 0xc7, 0x1c, 0xcd, 0x90, 0xc7, 0x1c, 0xcd, 0x90, - 0xc7, 0x1c, 0xcd, 0x90, 0xc7, 0x1c, 0xce, 0x90, 0xc7, 0x1c, 0xce, 0x90, - 0xc7, 0x1c, 0xce, 0x91, 0xca, 0x1c, 0xce, 0x90, 0xc7, 0x1c, 0xcf, 0x91, - 0xca, 0x1c, 0xcf, 0x91, 0xca, 0x1c, 0xcf, 0x91, 0xca, 0x1c, 0xd0, 0x91, - 0xca, 0x1c, 0xd0, 0x91, 0xca, 0x1c, 0xd0, 0x91, 0xca, 0x1c, 0xd0, 0x91, - 0xca, 0x1c, 0xd1, 0x92, 0xcd, 0x1c, 0xd1, 0x92, 0xcd, 0x1c, 0xd1, 0x92, - 0xcd, 0x1c, 0xd2, 0x92, 0xcd, 0x1c, 0xd2, 0x92, 0xcd, 0x1c, 0xd2, 0x92, - 0xcd, 0x1c, 0xd2, 0x92, 0xcd, 0x1c, 0xd3, 0x92, 0xcd, 0x1c, 0xd3, 0x92, - 0xcd, 0x1c, 0xd3, 0x92, 0xcd, 0x1c, 0xd4, 0x93, 0xd0, 0x1c, 0xd4, 0x92, - 0xcd, 0x1c, 0xd4, 0x93, 0xd0, 0x1c, 0xd4, 0x92, 0xcd, 0x1c, 0xd5, 0x93, - 0xd0, 0x1c, 0xd5, 0x93, 0xcf, 0x1c, 0xd5, 0x93, 0xd0, 0x1c, 0xd6, 0x93, - 0xcf, 0x1c, 0xd6, 0x93, 0xd0, 0x1c, 0xd6, 0x94, 0xd2, 0x1c, 0xd6, 0x94, - 0xd2, 0x1c, 0xd7, 0x94, 0xd2, 0x1c, 0xd7, 0x94, 0xd2, 0x1c, 0xd7, 0x94, - 0xd2, 0x1c, 0xd7, 0x94, 0xd2, 0x1c, 0xd8, 0x94, 0xd2, 0x1c, 0xd8, 0x94, - 0xd2, 0x1c, 0xd8, 0x94, 0xd2, 0x1c, 0xd9, 0x94, 0xd2, 0x1c, 0xd9, 0x94, - 0xd2, 0x1c, 0xd9, 0x94, 0xd2, 0x1c, 0xd9, 0x94, 0xd5, 0x1c, 0xda, 0x94, - 0xd2, 0x1c, 0xda, 0x94, 0xd5, 0x1c, 0xda, 0x94, 0xd5, 0x1c, 0xda, 0x94, - 0xd5, 0x1c, 0xdb, 0x94, 0xd5, 0x1c, 0xdb, 0x94, 0xd5, 0x1c, 0xdb, 0x94, - 0xd5, 0x1c, 0xdb, 0x94, 0xd5, 0x1c, 0xdc, 0x95, 0xd7, 0x1c, 0xdc, 0x94, - 0xd5, 0x1c, 0xdc, 0x95, 0xd7, 0x1c, 0xdd, 0x94, 0xd5, 0x1c, 0xdd, 0x95, - 0xd7, 0x1c, 0xdd, 0x95, 0xd7, 0x1c, 0xdd, 0x95, 0xd7, 0x1c, 0xde, 0x95, - 0xd7, 0x1c, 0xde, 0x95, 0xd7, 0x1c, 0xde, 0x96, 0xda, 0x1c, 0xde, 0x96, - 0xda, 0x1c, 0xdf, 0x96, 0xda, 0x1c, 0xdf, 0x96, 0xda, 0x1c, 0xdf, 0x96, - 0xda, 0x1c, 0xdf, 0x96, 0xda, 0x1c, 0xe0, 0x96, 0xda, 0x1c, 0xe0, 0x96, - 0xda, 0x1c, 0xe0, 0x96, 0xda, 0x1c, 0xe1, 0x96, 0xda, 0x1c, 0xe1, 0x97, - 0xdd, 0x1c, 0xe1, 0x96, 0xda, 0x1c, 0xe1, 0x97, 0xdd, 0x1c, 0xe2, 0x96, - 0xda, 0x1c, 0xe2, 0x97, 0xdd, 0x1c, 0xe2, 0x97, 0xdc, 0x1c, 0xe2, 0x97, - 0xdd, 0x1c, 0xe3, 0x97, 0xdc, 0x1c, 0xe3, 0x97, 0xdd, 0x1c, 0xe3, 0x98, - 0xdf, 0x1c, 0xe3, 0x97, 0xdd, 0x1c, 0xe4, 0x98, 0xdf, 0x1c, 0xe4, 0x97, - 0xdd, 0x1c, 0xe4, 0x98, 0xdf, 0x1c, 0xe4, 0x98, 0xdf, 0x1c, 0xe5, 0x98, - 0xdf, 0x1c, 0xe5, 0x98, 0xdf, 0x1c, 0xe5, 0x98, 0xdf, 0x1c, 0xe5, 0x99, - 0xe1, 0x1c, 0xe6, 0x99, 0xe2, 0x1c, 0xe6, 0x99, 0xe1, 0x1c, 0xe6, 0x99, - 0xe2, 0x1c, 0xe6, 0x99, 0xe1, 0x1c, 0xe7, 0x99, 0xe2, 0x1c, 0xe7, 0x99, - 0xe1, 0x1c, 0xe7, 0x99, 0xe2, 0x1c, 0xe7, 0x99, 0xe1, 0x1c, 0xe8, 0x99, - 0xe2, 0x1c, 0xe8, 0x99, 0xe1, 0x1c, 0xe8, 0x99, 0xe2, 0x1c, 0xe8, 0x9a, - 0xe4, 0x1c, 0xe9, 0x99, 0xe2, 0x1c, 0xe9, 0x9a, 0xe4, 0x1c, 0xe9, 0x99, - 0xe2, 0x1c, 0xe9, 0x9a, 0xe4, 0x1c, 0xea, 0x9a, 0xe4, 0x1c, 0xea, 0x9a, - 0xe4, 0x1c, 0xea, 0x9a, 0xe4, 0x1c, 0xea, 0x9a, 0xe4, 0x1c, 0xeb, 0x9a, - 0xe6, 0x1c, 0xeb, 0x9a, 0xe4, 0x1c, 0xeb, 0x9a, 0xe6, 0x1c, 0xeb, 0x9a, - 0xe4, 0x1c, 0xec, 0x9a, 0xe6, 0x1c, 0xec, 0x9a, 0xe6, 0x1c, 0xec, 0x9a, - 0xe6, 0x1c, 0xec, 0x9a, 0xe6, 0x1c, 0xec, 0x9a, 0xe6, 0x1c, 0xed, 0x9b, - 0xe8, 0x1c, 0xed, 0x9b, 0xe9, 0x1c, 0xed, 0x9b, 0xe8, 0x1c, 0xed, 0x9b, - 0xe9, 0x1c, 0xee, 0x9b, 0xe8, 0x1c, 0xee, 0x9b, 0xe9, 0x1c, 0xee, 0x9b, - 0xe8, 0x1c, 0xee, 0x9b, 0xe9, 0x1c, 0xef, 0x9b, 0xe8, 0x1c, 0xef, 0x9b, - 0xe9, 0x1c, 0xef, 0x9c, 0xeb, 0x1c, 0xef, 0x9b, 0xe9, 0x1c, 0xf0, 0x9c, - 0xeb, 0x1c, 0xf0, 0x9b, 0xe9, 0x1c, 0xf0, 0x9c, 0xeb, 0x1c, 0xf0, 0x9b, - 0xe9, 0x1c, 0xf1, 0x9c, 0xeb, 0x1c, 0xf1, 0x9c, 0xeb, 0x1c, 0xf1, 0x9c, - 0xeb, 0x1c, 0xf1, 0x9c, 0xeb, 0x1c, 0xf2, 0x9c, 0xeb, 0x1c, 0xf2, 0x9d, - 0xed, 0x1c, 0xf2, 0x9d, 0xed, 0x1c, 0xf2, 0x9d, 0xed, 0x1c, 0xf2, 0x9d, - 0xed, 0x1c, 0xf3, 0x9d, 0xed, 0x1c, 0xf3, 0x9d, 0xed, 0x1c, 0xf3, 0x9d, - 0xed, 0x1c, 0xf3, 0x9d, 0xed, 0x1c, 0xf4, 0x9d, 0xed, 0x1c, 0xf4, 0x9d, - 0xed, 0x1c, 0xf4, 0x9e, 0xef, 0x1c, 0xf4, 0x9d, 0xed, 0x1c, 0xf5, 0x9e, - 0xef, 0x1c, 0xf5, 0x9d, 0xed, 0x1c, 0xf5, 0x9e, 0xef, 0x1c, 0xf5, 0x9e, - 0xef, 0x1c, 0xf5, 0x9e, 0xef, 0x1c, 0xf6, 0x9e, 0xef, 0x1c, 0xf6, 0x9e, - 0xef, 0x1c, 0xf6, 0x9f, 0xf2, 0x1c, 0xf6, 0x9e, 0xef, 0x1c, 0xf7, 0x9f, - 0xf2, 0x1c, 0xf7, 0x9e, 0xef, 0x1c, 0xf7, 0x9f, 0xf2, 0x1c, 0xf7, 0x9f, - 0xf1, 0x1c, 0xf8, 0x9f, 0xf2, 0x1c, 0xf8, 0x9f, 0xf1, 0x1c, 0xf8, 0x9f, - 0xf2, 0x1c, 0xf8, 0x9f, 0xf4, 0x1c, 0xf8, 0x9f, 0xf4, 0x1c, 0xf9, 0x9f, - 0xf4, 0x1c, 0xf9, 0x9f, 0xf4, 0x1c, 0xf9, 0x9f, 0xf4, 0x1c, 0xf9, 0x9f, - 0xf4, 0x1c, 0xfa, 0x9f, 0xf4, 0x1c, 0xfa, 0x9f, 0xf4, 0x1c, 0xfa, 0x9f, - 0xf4, 0x1c, 0xfa, 0x9f, 0xf4, 0x1c, 0xfa, 0xa0, 0xf6, 0x1c, 0xfb, 0x9f, - 0xf4, 0x1c, 0xfb, 0xa0, 0xf6, 0x1c, 0xfb, 0x9f, 0xf4, 0x1c, 0xfb, 0xa0, - 0xf6, 0x1c, 0xfc, 0x9f, 0xf4, 0x1c, 0xfc, 0xa0, 0xf6, 0x1c, 0xfc, 0xa0, - 0xf6, 0x1c, 0xfc, 0xa0, 0xf6, 0x1c, 0xfc, 0xa1, 0xf8, 0x1c, 0xfd, 0xa0, - 0xf6, 0x1c, 0xfd, 0xa1, 0xf8, 0x1c, 0xfd, 0xa0, 0xf6, 0x1c, 0xfd, 0xa1, - 0xf8, 0x1c, 0xfe, 0xa0, 0xf6, 0x1c, 0xfe, 0xa1, 0xf8, 0x1c, 0xfe, 0xa1, - 0xf8, 0x1c, 0xfe, 0xa1, 0xf8, 0x1c, 0xfe, 0xa1, 0xf8, 0x1c, 0xff, 0xa1, - 0xf8, 0x1c, 0xff, 0xa2, 0xfa, 0x1c, 0x03, 0x84, 0x9b, 0x1d, 0x0a, 0x84, - 0x9b, 0x1d, 0x0f, 0x84, 0x9b, 0x1d, 0x14, 0x84, 0x9b, 0x1d, 0x17, 0x84, - 0x9b, 0x1d, 0x1b, 0x84, 0x9b, 0x1d, 0x1e, 0x84, 0x9b, 0x1d, 0x20, 0x86, - 0x9b, 0x1d, 0x23, 0x84, 0x9b, 0x1d, 0x25, 0x86, 0x9b, 0x1d, 0x27, 0x84, - 0x9b, 0x1d, 0x29, 0x86, 0x9b, 0x1d, 0x2b, 0x84, 0x9b, 0x1d, 0x2d, 0x86, - 0x9b, 0x1d, 0x2f, 0x84, 0x9b, 0x1d, 0x31, 0x86, 0x9b, 0x1d, 0x32, 0x84, - 0x9b, 0x1d, 0x34, 0x86, 0x9b, 0x1d, 0x35, 0x84, 0x9b, 0x1d, 0x37, 0x86, - 0x9b, 0x1d, 0x38, 0x84, 0x9b, 0x1d, 0x3a, 0x86, 0x9b, 0x1d, 0x3b, 0x84, - 0x9b, 0x1d, 0x3c, 0x86, 0x9b, 0x1d, 0x3e, 0x84, 0x9b, 0x1d, 0x3f, 0x86, - 0x9b, 0x1d, 0x40, 0x84, 0x9b, 0x1d, 0x42, 0x86, 0x9b, 0x1d, 0x43, 0x84, - 0x9b, 0x1d, 0x44, 0x86, 0x9b, 0x1d, 0x45, 0x84, 0x9b, 0x1d, 0x46, 0x86, - 0x9b, 0x1d, 0x47, 0x84, 0x9b, 0x1d, 0x48, 0x86, 0x9b, 0x1d, 0x49, 0x84, - 0x9b, 0x1d, 0x4a, 0x86, 0x9b, 0x1d, 0x4b, 0x84, 0x9b, 0x1d, 0x4c, 0x86, - 0x9b, 0x1d, 0x4d, 0x84, 0x9b, 0x1d, 0x4e, 0x86, 0x9b, 0x1d, 0x4f, 0x84, - 0x9b, 0x1d, 0x50, 0x86, 0x9b, 0x1d, 0x51, 0x84, 0x9b, 0x1d, 0x52, 0x86, - 0x9b, 0x1d, 0x53, 0x84, 0x9b, 0x1d, 0x54, 0x84, 0x9c, 0x1d, 0x55, 0x84, - 0x9b, 0x1d, 0x56, 0x84, 0x9c, 0x1d, 0x57, 0x84, 0x9b, 0x1d, 0x58, 0x84, - 0x9c, 0x1d, 0x58, 0x84, 0x9b, 0x1d, 0x59, 0x84, 0x9c, 0x1d, 0x5a, 0x84, - 0x9b, 0x1d, 0x5b, 0x84, 0x9c, 0x1d, 0x5c, 0x84, 0x9b, 0x1d, 0x5d, 0x84, - 0x9c, 0x1d, 0x5d, 0x84, 0x9b, 0x1d, 0x5e, 0x84, 0x9c, 0x1d, 0x5f, 0x84, - 0x9b, 0x1d, 0x60, 0x84, 0x9c, 0x1d, 0x60, 0x84, 0x9b, 0x1d, 0x61, 0x84, - 0x9c, 0x1d, 0x62, 0x84, 0x9b, 0x1d, 0x63, 0x84, 0x9c, 0x1d, 0x63, 0x84, - 0x9b, 0x1d, 0x64, 0x84, 0x9c, 0x1d, 0x65, 0x84, 0x9b, 0x1d, 0x66, 0x84, - 0x9c, 0x1d, 0x66, 0x84, 0x9b, 0x1d, 0x67, 0x84, 0x9c, 0x1d, 0x68, 0x84, - 0x9b, 0x1d, 0x68, 0x84, 0x9c, 0x1d, 0x69, 0x84, 0x9b, 0x1d, 0x6a, 0x84, - 0x9c, 0x1d, 0x6a, 0x84, 0x9b, 0x1d, 0x6b, 0x84, 0x9c, 0x1d, 0x6c, 0x84, - 0x9b, 0x1d, 0x6c, 0x84, 0x9c, 0x1d, 0x6d, 0x84, 0x9b, 0x1d, 0x6e, 0x84, - 0x9c, 0x1d, 0x6e, 0x84, 0x9b, 0x1d, 0x6f, 0x84, 0x9c, 0x1d, 0x70, 0x84, - 0x9b, 0x1d, 0x70, 0x84, 0x9c, 0x1d, 0x71, 0x84, 0x9b, 0x1d, 0x72, 0x84, - 0x9c, 0x1d, 0x72, 0x84, 0x9b, 0x1d, 0x73, 0x84, 0x9c, 0x1d, 0x73, 0x84, - 0x9b, 0x1d, 0x74, 0x84, 0x9c, 0x1d, 0x75, 0x84, 0x9b, 0x1d, 0x75, 0x84, - 0x9c, 0x1d, 0x76, 0x84, 0x9b, 0x1d, 0x76, 0x84, 0x9c, 0x1d, 0x77, 0x84, - 0x9b, 0x1d, 0x78, 0x84, 0x9c, 0x1d, 0x78, 0x84, 0x9b, 0x1d, 0x79, 0x84, - 0x9c, 0x1d, 0x79, 0x84, 0x9b, 0x1d, 0x7a, 0x84, 0x9c, 0x1d, 0x7a, 0x84, - 0x9b, 0x1d, 0x7b, 0x84, 0x9c, 0x1d, 0x7c, 0x84, 0x9b, 0x1d, 0x7c, 0x84, - 0x9c, 0x1d, 0x7d, 0x84, 0x9b, 0x1d, 0x7d, 0x84, 0x9c, 0x1d, 0x7e, 0x84, - 0x9b, 0x1d, 0x7e, 0x84, 0x9c, 0x1d, 0x7f, 0x84, 0x9b, 0x1d, 0x7f, 0x84, - 0x9c, 0x1d, 0x80, 0x84, 0x9b, 0x1d, 0x81, 0x84, 0x9c, 0x1d, 0x81, 0x84, - 0x9b, 0x1d, 0x82, 0x84, 0x9c, 0x1d, 0x82, 0x84, 0x9b, 0x1d, 0x83, 0x84, - 0x9c, 0x1d, 0x83, 0x84, 0x9b, 0x1d, 0x84, 0x84, 0x9c, 0x1d, 0x84, 0x84, - 0x9b, 0x1d, 0x85, 0x84, 0x9c, 0x1d, 0x85, 0x84, 0x9b, 0x1d, 0x86, 0x84, - 0x9c, 0x1d, 0x86, 0x84, 0x9b, 0x1d, 0x87, 0x84, 0x9c, 0x1d, 0x87, 0x84, - 0x9b, 0x1d, 0x88, 0x84, 0x9c, 0x1d, 0x88, 0x84, 0x9b, 0x1d, 0x89, 0x84, - 0x9c, 0x1d, 0x89, 0x84, 0x9b, 0x1d, 0x8a, 0x84, 0x9c, 0x1d, 0x8a, 0x84, - 0x9b, 0x1d, 0x8b, 0x84, 0x9c, 0x1d, 0x8b, 0x84, 0x9b, 0x1d, 0x8c, 0x84, - 0x9c, 0x1d, 0x8c, 0x84, 0x9b, 0x1d, 0x8d, 0x84, 0x9c, 0x1d, 0x8d, 0x84, - 0x9b, 0x1d, 0x8e, 0x84, 0x9c, 0x1d, 0x8e, 0x84, 0x9b, 0x1d, 0x8e, 0x84, - 0x9c, 0x1d, 0x8f, 0x84, 0x9b, 0x1d, 0x8f, 0x84, 0x9c, 0x1d, 0x90, 0x84, - 0x9b, 0x1d, 0x90, 0x84, 0x9c, 0x1d, 0x91, 0x84, 0x9b, 0x1d, 0x91, 0x84, - 0x9c, 0x1d, 0x92, 0x84, 0x9b, 0x1d, 0x92, 0x84, 0x9c, 0x1d, 0x93, 0x84, - 0x9b, 0x1d, 0x93, 0x84, 0x9c, 0x1d, 0x94, 0x84, 0x9b, 0x1d, 0x94, 0x84, - 0x9c, 0x1d, 0x94, 0x84, 0x9b, 0x1d, 0x95, 0x84, 0x9c, 0x1d, 0x95, 0x84, - 0x9b, 0x1d, 0x96, 0x84, 0x9c, 0x1d, 0x96, 0x84, 0x9b, 0x1d, 0x97, 0x84, - 0x9c, 0x1d, 0x97, 0x84, 0x9b, 0x1d, 0x98, 0x84, 0x9c, 0x1d, 0x98, 0x84, - 0x9b, 0x1d, 0x98, 0x84, 0x9c, 0x1d, 0x99, 0x84, 0x9b, 0x1d, 0x99, 0x84, - 0x9c, 0x1d, 0x9a, 0x84, 0x9b, 0x1d, 0x9a, 0x84, 0x9c, 0x1d, 0x9a, 0x84, - 0x9b, 0x1d, 0x9b, 0x84, 0x9c, 0x1d, 0x9b, 0x84, 0x9b, 0x1d, 0x9c, 0x84, - 0x9c, 0x1d, 0x9c, 0x84, 0x9c, 0x1d, 0x9d, 0x84, 0x9d, 0x1d, 0x9d, 0x84, - 0x9d, 0x1d, 0x9d, 0x84, 0x9d, 0x1d, 0x9e, 0x84, 0x9e, 0x1d, 0x9e, 0x84, - 0x9e, 0x1d, 0x9f, 0x84, 0x9f, 0x1d, 0x9f, 0x84, 0x9e, 0x1d, 0x9f, 0x84, - 0x9f, 0x1d, 0xa0, 0x84, 0x9e, 0x1d, 0xa0, 0x84, 0x9f, 0x1d, 0xa1, 0x84, - 0x9e, 0x1d, 0xa1, 0x84, 0x9f, 0x1d, 0xa1, 0x84, 0x9e, 0x1d, 0xa2, 0x84, - 0x9f, 0x1d, 0xa2, 0x84, 0x9e, 0x1d, 0xa3, 0x84, 0x9f, 0x1d, 0xa3, 0x84, - 0x9e, 0x1d, 0xa3, 0x84, 0x9f, 0x1d, 0xa4, 0x84, 0x9e, 0x1d, 0xa4, 0x84, - 0x9f, 0x1d, 0xa5, 0x84, 0x9e, 0x1d, 0xa5, 0x84, 0x9f, 0x1d, 0xa5, 0x85, - 0xa2, 0x1d, 0xa6, 0x84, 0x9f, 0x1d, 0xa6, 0x85, 0xa2, 0x1d, 0xa6, 0x85, - 0xa2, 0x1d, 0xa7, 0x85, 0xa2, 0x1d, 0xa7, 0x85, 0xa2, 0x1d, 0xa8, 0x85, - 0xa2, 0x1d, 0xa8, 0x85, 0xa2, 0x1d, 0xa8, 0x85, 0xa2, 0x1d, 0xa9, 0x86, - 0xa6, 0x1d, 0xa9, 0x86, 0xa6, 0x1d, 0xaa, 0x86, 0xa6, 0x1d, 0xaa, 0x86, - 0xa6, 0x1d, 0xaa, 0x86, 0xa6, 0x1d, 0xab, 0x86, 0xa6, 0x1d, 0xab, 0x86, - 0xa6, 0x1d, 0xab, 0x86, 0xa6, 0x1d, 0xac, 0x86, 0xa6, 0x1d, 0xac, 0x86, - 0xa6, 0x1d, 0xac, 0x87, 0xaa, 0x1d, 0xad, 0x86, 0xa6, 0x1d, 0xad, 0x87, - 0xaa, 0x1d, 0xae, 0x86, 0xa6, 0x1d, 0xae, 0x87, 0xaa, 0x1d, 0xae, 0x87, - 0xa9, 0x1d, 0xaf, 0x87, 0xaa, 0x1d, 0xaf, 0x87, 0xa9, 0x1d, 0xaf, 0x87, - 0xaa, 0x1d, 0xb0, 0x87, 0xa9, 0x1d, 0xb0, 0x87, 0xaa, 0x1d, 0xb0, 0x88, - 0xad, 0x1d, 0xb1, 0x88, 0xad, 0x1d, 0xb1, 0x88, 0xad, 0x1d, 0xb2, 0x88, - 0xad, 0x1d, 0xb2, 0x88, 0xad, 0x1d, 0xb2, 0x88, 0xad, 0x1d, 0xb3, 0x88, - 0xad, 0x1d, 0xb3, 0x88, 0xad, 0x1d, 0xb3, 0x88, 0xad, 0x1d, 0xb4, 0x88, - 0xad, 0x1d, 0xb4, 0x89, 0xb0, 0x1d, 0xb4, 0x88, 0xad, 0x1d, 0xb5, 0x89, - 0xb0, 0x1d, 0xb5, 0x89, 0xb0, 0x1d, 0xb5, 0x89, 0xb0, 0x1d, 0xb6, 0x89, - 0xb2, 0x1d, 0xb6, 0x89, 0xb0, 0x1d, 0xb6, 0x89, 0xb2, 0x1d, 0xb7, 0x89, - 0xb0, 0x1d, 0xb7, 0x89, 0xb2, 0x1d, 0xb7, 0x89, 0xb2, 0x1d, 0xb8, 0x89, - 0xb2, 0x1d, 0xb8, 0x89, 0xb2, 0x1d, 0xb8, 0x89, 0xb2, 0x1d, 0xb9, 0x8a, - 0xb3, 0x1d, 0xb9, 0x8a, 0xb4, 0x1d, 0xb9, 0x8a, 0xb3, 0x1d, 0xba, 0x8a, - 0xb4, 0x1d, 0xba, 0x8b, 0xb7, 0x1d, 0xba, 0x8b, 0xb7, 0x1d, 0xbb, 0x8b, - 0xb7, 0x1d, 0xbb, 0x8b, 0xb7, 0x1d, 0xbb, 0x8b, 0xb7, 0x1d, 0xbc, 0x8b, - 0xb7, 0x1d, 0xbc, 0x8b, 0xb7, 0x1d, 0xbc, 0x8b, 0xb7, 0x1d, 0xbd, 0x8b, - 0xb7, 0x1d, 0xbd, 0x8b, 0xb7, 0x1d, 0xbd, 0x8b, 0xb7, 0x1d, 0xbe, 0x8b, - 0xb7, 0x1d, 0xbe, 0x8c, 0xba, 0x1d, 0xbe, 0x8b, 0xb7, 0x1d, 0xbf, 0x8c, - 0xba, 0x1d, 0xbf, 0x8c, 0xba, 0x1d, 0xbf, 0x8c, 0xba, 0x1d, 0xc0, 0x8c, - 0xba, 0x1d, 0xc0, 0x8c, 0xba, 0x1d, 0xc0, 0x8c, 0xba, 0x1d, 0xc1, 0x8c, - 0xba, 0x1d, 0xc1, 0x8d, 0xbd, 0x1d, 0xc1, 0x8c, 0xba, 0x1d, 0xc1, 0x8d, - 0xbd, 0x1d, 0xc2, 0x8d, 0xbd, 0x1d, 0xc2, 0x8d, 0xbd, 0x1d, 0xc2, 0x8d, - 0xbd, 0x1d, 0xc3, 0x8d, 0xbd, 0x1d, 0xc3, 0x8d, 0xbd, 0x1d, 0xc3, 0x8d, - 0xbd, 0x1d, 0xc4, 0x8e, 0xc0, 0x1d, 0xc4, 0x8e, 0xc0, 0x1d, 0xc4, 0x8e, - 0xc0, 0x1d, 0xc5, 0x8e, 0xc0, 0x1d, 0xc5, 0x8e, 0xc0, 0x1d, 0xc5, 0x8e, - 0xc0, 0x1d, 0xc6, 0x8e, 0xc0, 0x1d, 0xc6, 0x8e, 0xc0, 0x1d, 0xc6, 0x8e, - 0xc0, 0x1d, 0xc6, 0x8e, 0xc0, 0x1d, 0xc7, 0x8e, 0xc3, 0x1d, 0xc7, 0x8e, - 0xc0, 0x1d, 0xc7, 0x8e, 0xc3, 0x1d, 0xc8, 0x8e, 0xc0, 0x1d, 0xc8, 0x8e, - 0xc3, 0x1d, 0xc8, 0x8e, 0xc3, 0x1d, 0xc9, 0x8e, 0xc3, 0x1d, 0xc9, 0x8e, - 0xc3, 0x1d, 0xc9, 0x8e, 0xc3, 0x1d, 0xc9, 0x8f, 0xc6, 0x1d, 0xca, 0x8e, - 0xc3, 0x1d, 0xca, 0x8f, 0xc6, 0x1d, 0xca, 0x8e, 0xc3, 0x1d, 0xcb, 0x8f, - 0xc6, 0x1d, 0xcb, 0x8f, 0xc6, 0x1d, 0xcb, 0x8f, 0xc6, 0x1d, 0xcc, 0x8f, - 0xc6, 0x1d, 0xcc, 0x8f, 0xc6, 0x1d, 0xcc, 0x90, 0xc9, 0x1d, 0xcc, 0x90, - 0xc9, 0x1d, 0xcd, 0x90, 0xc9, 0x1d, 0xcd, 0x90, 0xc9, 0x1d, 0xcd, 0x90, - 0xc9, 0x1d, 0xce, 0x90, 0xc9, 0x1d, 0xce, 0x90, 0xc9, 0x1d, 0xce, 0x90, - 0xc9, 0x1d, 0xce, 0x90, 0xc9, 0x1d, 0xcf, 0x90, 0xc9, 0x1d, 0xcf, 0x90, - 0xc9, 0x1d, 0xcf, 0x90, 0xc9, 0x1d, 0xd0, 0x91, 0xcc, 0x1d, 0xd0, 0x90, - 0xc9, 0x1d, 0xd0, 0x91, 0xcc, 0x1d, 0xd0, 0x91, 0xcb, 0x1d, 0xd1, 0x91, - 0xcc, 0x1d, 0xd1, 0x91, 0xcb, 0x1d, 0xd1, 0x91, 0xcc, 0x1d, 0xd2, 0x91, - 0xcb, 0x1d, 0xd2, 0x91, 0xcc, 0x1d, 0xd2, 0x92, 0xce, 0x1d, 0xd2, 0x92, - 0xce, 0x1d, 0xd3, 0x92, 0xce, 0x1d, 0xd3, 0x92, 0xce, 0x1d, 0xd3, 0x92, - 0xce, 0x1d, 0xd4, 0x92, 0xce, 0x1d, 0xd4, 0x92, 0xce, 0x1d, 0xd4, 0x92, - 0xce, 0x1d, 0xd4, 0x92, 0xce, 0x1d, 0xd5, 0x92, 0xce, 0x1d, 0xd5, 0x93, - 0xd1, 0x1d, 0xd5, 0x92, 0xce, 0x1d, 0xd6, 0x93, 0xd1, 0x1d, 0xd6, 0x92, - 0xce, 0x1d, 0xd6, 0x93, 0xd1, 0x1d, 0xd6, 0x93, 0xd1, 0x1d, 0xd7, 0x93, - 0xd1, 0x1d, 0xd7, 0x93, 0xd1, 0x1d, 0xd7, 0x93, 0xd1, 0x1d, 0xd7, 0x94, - 0xd4, 0x1d, 0xd8, 0x93, 0xd1, 0x1d, 0xd8, 0x94, 0xd4, 0x1d, 0xd8, 0x93, - 0xd1, 0x1d, 0xd9, 0x94, 0xd4, 0x1d, 0xd9, 0x94, 0xd3, 0x1d, 0xd9, 0x94, - 0xd4, 0x1d, 0xd9, 0x94, 0xd3, 0x1d, 0xda, 0x94, 0xd4, 0x1d, 0xda, 0x94, - 0xd3, 0x1d, 0xda, 0x94, 0xd4, 0x1d, 0xda, 0x95, 0xd6, 0x1d, 0xdb, 0x95, - 0xd6, 0x1d, 0xdb, 0x95, 0xd6, 0x1d, 0xdb, 0x95, 0xd6, 0x1d, 0xdb, 0x95, - 0xd6, 0x1d, 0xdc, 0x95, 0xd6, 0x1d, 0xdc, 0x95, 0xd6, 0x1d, 0xdc, 0x95, - 0xd6, 0x1d, 0xdd, 0x95, 0xd6, 0x1d, 0xdd, 0x95, 0xd6, 0x1d, 0xdd, 0x96, - 0xd9, 0x1d, 0xdd, 0x95, 0xd6, 0x1d, 0xde, 0x96, 0xd9, 0x1d, 0xde, 0x95, - 0xd6, 0x1d, 0xde, 0x96, 0xd9, 0x1d, 0xde, 0x96, 0xd9, 0x1d, 0xdf, 0x96, - 0xd9, 0x1d, 0xdf, 0x96, 0xd9, 0x1d, 0xdf, 0x96, 0xd9, 0x1d, 0xdf, 0x97, - 0xdb, 0x1d, 0xe0, 0x96, 0xd9, 0x1d, 0xe0, 0x97, 0xdb, 0x1d, 0xe0, 0x96, - 0xd9, 0x1d, 0xe1, 0x97, 0xdb, 0x1d, 0xe1, 0x97, 0xdb, 0x1d, 0xe1, 0x97, - 0xdb, 0x1d, 0xe1, 0x97, 0xdb, 0x1d, 0xe2, 0x97, 0xdb, 0x1d, 0xe2, 0x98, - 0xde, 0x1d, 0xe2, 0x98, 0xde, 0x1d, 0xe2, 0x98, 0xde, 0x1d, 0xe3, 0x98, - 0xde, 0x1d, 0xe3, 0x98, 0xde, 0x1d, 0xe3, 0x98, 0xde, 0x1d, 0xe3, 0x98, - 0xde, 0x1d, 0xe4, 0x98, 0xde, 0x1d, 0xe4, 0x98, 0xde, 0x1d, 0xe4, 0x98, - 0xde, 0x1d, 0xe4, 0x98, 0xe0, 0x1d, 0xe5, 0x98, 0xde, 0x1d, 0xe5, 0x98, - 0xe0, 0x1d, 0xe5, 0x98, 0xde, 0x1d, 0xe5, 0x98, 0xe0, 0x1d, 0xe6, 0x98, - 0xe0, 0x1d, 0xe6, 0x98, 0xe0, 0x1d, 0xe6, 0x98, 0xe0, 0x1d, 0xe6, 0x98, - 0xe0, 0x1d, 0xe7, 0x99, 0xe3, 0x1d, 0xe7, 0x98, 0xe0, 0x1d, 0xe7, 0x99, - 0xe3, 0x1d, 0xe7, 0x98, 0xe0, 0x1d, 0xe8, 0x99, 0xe3, 0x1d, 0xe8, 0x98, - 0xe0, 0x1d, 0xe8, 0x99, 0xe3, 0x1d, 0xe8, 0x99, 0xe2, 0x1d, 0xe9, 0x99, - 0xe3, 0x1d, 0xe9, 0x99, 0xe2, 0x1d, 0xe9, 0x99, 0xe3, 0x1d, 0xe9, 0x9a, - 0xe5, 0x1d, 0xea, 0x9a, 0xe5, 0x1d, 0xea, 0x9a, 0xe5, 0x1d, 0xea, 0x9a, - 0xe5, 0x1d, 0xea, 0x9a, 0xe5, 0x1d, 0xeb, 0x9a, 0xe5, 0x1d, 0xeb, 0x9a, - 0xe5, 0x1d, 0xeb, 0x9a, 0xe5, 0x1d, 0xeb, 0x9a, 0xe5, 0x1d, 0xec, 0x9a, - 0xe5, 0x1d, 0xec, 0x9b, 0xe7, 0x1d, 0xec, 0x9a, 0xe5, 0x1d, 0xec, 0x9b, - 0xe7, 0x1d, 0xec, 0x9a, 0xe5, 0x1d, 0xed, 0x9b, 0xe7, 0x1d, 0xed, 0x9b, - 0xe7, 0x1d, 0xed, 0x9b, 0xe7, 0x1d, 0xed, 0x9b, 0xe7, 0x1d, 0xee, 0x9b, - 0xe7, 0x1d, 0xee, 0x9c, 0xea, 0x1d, 0xee, 0x9c, 0xea, 0x1d, 0xee, 0x9c, - 0xea, 0x1d, 0xef, 0x9c, 0xea, 0x1d, 0xef, 0x9c, 0xea, 0x1d, 0xef, 0x9c, - 0xea, 0x1d, 0xef, 0x9c, 0xea, 0x1d, 0xf0, 0x9c, 0xea, 0x1d, 0xf0, 0x9c, - 0xea, 0x1d, 0xf0, 0x9c, 0xea, 0x1d, 0xf0, 0x9d, 0xec, 0x1d, 0xf1, 0x9c, - 0xea, 0x1d, 0xf1, 0x9d, 0xec, 0x1d, 0xf1, 0x9c, 0xea, 0x1d, 0xf1, 0x9d, - 0xec, 0x1d, 0xf2, 0x9c, 0xea, 0x1d, 0xf2, 0x9d, 0xec, 0x1d, 0xf2, 0x9d, - 0xec, 0x1d, 0xf2, 0x9d, 0xec, 0x1d, 0xf2, 0x9d, 0xec, 0x1d, 0xf3, 0x9d, - 0xec, 0x1d, 0xf3, 0x9d, 0xee, 0x1d, 0xf3, 0x9d, 0xec, 0x1d, 0xf3, 0x9d, - 0xee, 0x1d, 0xf4, 0x9d, 0xec, 0x1d, 0xf4, 0x9d, 0xee, 0x1d, 0xf4, 0x9d, - 0xee, 0x1d, 0xf4, 0x9d, 0xee, 0x1d, 0xf5, 0x9d, 0xee, 0x1d, 0xf5, 0x9d, - 0xee, 0x1d, 0xf5, 0x9e, 0xf0, 0x1d, 0xf5, 0x9e, 0xf1, 0x1d, 0xf5, 0x9e, - 0xf0, 0x1d, 0xf6, 0x9e, 0xf1, 0x1d, 0xf6, 0x9e, 0xf0, 0x1d, 0xf6, 0x9e, - 0xf1, 0x1d, 0xf6, 0x9e, 0xf0, 0x1d, 0xf7, 0x9e, 0xf1, 0x1d, 0xf7, 0x9e, - 0xf0, 0x1d, 0xf7, 0x9e, 0xf1, 0x1d, 0xf7, 0x9f, 0xf3, 0x1d, 0xf8, 0x9e, - 0xf1, 0x1d, 0xf8, 0x9f, 0xf3, 0x1d, 0xf8, 0x9e, 0xf1, 0x1d, 0xf8, 0x9f, - 0xf3, 0x1d, 0xf8, 0x9f, 0xf2, 0x1d, 0xf9, 0x9f, 0xf3, 0x1d, 0xf9, 0x9f, - 0xf2, 0x1d, 0xf9, 0x9f, 0xf3, 0x1d, 0xf9, 0xa0, 0xf5, 0x1d, 0xfa, 0x9f, - 0xf3, 0x1d, 0xfa, 0xa0, 0xf5, 0x1d, 0xfa, 0x9f, 0xf3, 0x1d, 0xfa, 0xa0, - 0xf5, 0x1d, 0xfa, 0x9f, 0xf3, 0x1d, 0xfb, 0xa0, 0xf5, 0x1d, 0xfb, 0xa0, - 0xf5, 0x1d, 0xfb, 0xa0, 0xf5, 0x1d, 0xfb, 0xa1, 0xf7, 0x1d, 0xfc, 0xa1, - 0xf7, 0x1d, 0xfc, 0xa1, 0xf7, 0x1d, 0xfc, 0xa1, 0xf7, 0x1d, 0xfc, 0xa1, - 0xf7, 0x1d, 0xfc, 0xa1, 0xf7, 0x1d, 0xfd, 0xa1, 0xf7, 0x1d, 0xfd, 0xa1, - 0xf7, 0x1d, 0xfd, 0xa1, 0xf7, 0x1d, 0xfd, 0xa1, 0xf7, 0x1d, 0xfe, 0xa1, - 0xf9, 0x1d, 0xfe, 0xa1, 0xf7, 0x1d, 0xfe, 0xa1, 0xf9, 0x1d, 0xfe, 0xa1, - 0xf7, 0x1d, 0xfe, 0xa1, 0xf9, 0x1d, 0xff, 0xa1, 0xf7, 0x1d, 0xff, 0xa1, - 0xf9, 0x1d, 0x03, 0x83, 0x9b, 0x1d, 0x0a, 0x83, 0x9b, 0x1d, 0x0f, 0x83, - 0x9b, 0x1d, 0x14, 0x83, 0x9b, 0x1d, 0x17, 0x83, 0x9b, 0x1d, 0x1b, 0x83, - 0x9b, 0x1d, 0x1e, 0x83, 0x9b, 0x1d, 0x20, 0x83, 0x9c, 0x1d, 0x23, 0x83, - 0x9b, 0x1d, 0x25, 0x83, 0x9c, 0x1d, 0x27, 0x83, 0x9b, 0x1d, 0x29, 0x83, - 0x9c, 0x1d, 0x2b, 0x83, 0x9b, 0x1d, 0x2d, 0x83, 0x9c, 0x1d, 0x2f, 0x83, - 0x9b, 0x1d, 0x31, 0x83, 0x9c, 0x1d, 0x32, 0x83, 0x9b, 0x1d, 0x34, 0x83, - 0x9c, 0x1d, 0x35, 0x83, 0x9b, 0x1d, 0x37, 0x83, 0x9c, 0x1d, 0x38, 0x83, - 0x9b, 0x1d, 0x3a, 0x83, 0x9c, 0x1d, 0x3b, 0x83, 0x9b, 0x1d, 0x3c, 0x83, - 0x9c, 0x1d, 0x3e, 0x83, 0x9b, 0x1d, 0x3f, 0x83, 0x9c, 0x1d, 0x40, 0x83, - 0x9b, 0x1d, 0x42, 0x83, 0x9c, 0x1d, 0x43, 0x83, 0x9b, 0x1d, 0x44, 0x83, - 0x9c, 0x1d, 0x45, 0x83, 0x9b, 0x1d, 0x46, 0x83, 0x9c, 0x1d, 0x47, 0x83, - 0x9b, 0x1d, 0x48, 0x83, 0x9c, 0x1d, 0x49, 0x83, 0x9b, 0x1d, 0x4a, 0x83, - 0x9c, 0x1d, 0x4b, 0x83, 0x9b, 0x1d, 0x4c, 0x83, 0x9c, 0x1d, 0x4d, 0x83, - 0x9b, 0x1d, 0x4e, 0x83, 0x9c, 0x1d, 0x4f, 0x83, 0x9b, 0x1d, 0x50, 0x83, - 0x9c, 0x1d, 0x51, 0x83, 0x9b, 0x1d, 0x52, 0x83, 0x9c, 0x1d, 0x53, 0x83, - 0x9b, 0x1d, 0x54, 0x83, 0x9c, 0x1d, 0x55, 0x83, 0x9b, 0x1d, 0x56, 0x83, - 0x9c, 0x1d, 0x57, 0x83, 0x9b, 0x1d, 0x58, 0x83, 0x9c, 0x1d, 0x58, 0x83, - 0x9b, 0x1d, 0x59, 0x83, 0x9c, 0x1d, 0x5a, 0x83, 0x9b, 0x1d, 0x5b, 0x83, - 0x9c, 0x1d, 0x5c, 0x83, 0x9b, 0x1d, 0x5d, 0x83, 0x9c, 0x1d, 0x5d, 0x83, - 0x9b, 0x1d, 0x5e, 0x83, 0x9c, 0x1d, 0x5f, 0x83, 0x9b, 0x1d, 0x60, 0x83, - 0x9c, 0x1d, 0x60, 0x83, 0x9b, 0x1d, 0x61, 0x83, 0x9c, 0x1d, 0x62, 0x83, - 0x9b, 0x1d, 0x63, 0x83, 0x9c, 0x1d, 0x63, 0x83, 0x9b, 0x1d, 0x64, 0x83, - 0x9c, 0x1d, 0x65, 0x83, 0x9b, 0x1d, 0x66, 0x83, 0x9c, 0x1d, 0x66, 0x83, - 0x9b, 0x1d, 0x67, 0x83, 0x9c, 0x1d, 0x68, 0x83, 0x9b, 0x1d, 0x68, 0x83, - 0x9c, 0x1d, 0x69, 0x83, 0x9b, 0x1d, 0x6a, 0x83, 0x9c, 0x1d, 0x6a, 0x83, - 0x9b, 0x1d, 0x6b, 0x83, 0x9c, 0x1d, 0x6c, 0x83, 0x9b, 0x1d, 0x6c, 0x83, - 0x9c, 0x1d, 0x6d, 0x83, 0x9b, 0x1d, 0x6e, 0x83, 0x9c, 0x1d, 0x6e, 0x83, - 0x9b, 0x1d, 0x6f, 0x83, 0x9c, 0x1d, 0x70, 0x83, 0x9b, 0x1d, 0x70, 0x83, - 0x9c, 0x1d, 0x71, 0x83, 0x9b, 0x1d, 0x72, 0x83, 0x9c, 0x1d, 0x72, 0x83, - 0x9b, 0x1d, 0x73, 0x83, 0x9c, 0x1d, 0x73, 0x83, 0x9b, 0x1d, 0x74, 0x83, - 0x9c, 0x1d, 0x75, 0x83, 0x9b, 0x1d, 0x75, 0x83, 0x9c, 0x1d, 0x76, 0x83, - 0x9b, 0x1d, 0x76, 0x83, 0x9c, 0x1d, 0x77, 0x83, 0x9b, 0x1d, 0x78, 0x83, - 0x9c, 0x1d, 0x78, 0x83, 0x9b, 0x1d, 0x79, 0x83, 0x9c, 0x1d, 0x79, 0x83, - 0x9b, 0x1d, 0x7a, 0x83, 0x9c, 0x1d, 0x7a, 0x83, 0x9b, 0x1d, 0x7b, 0x83, - 0x9c, 0x1d, 0x7c, 0x83, 0x9b, 0x1d, 0x7c, 0x83, 0x9c, 0x1d, 0x7d, 0x83, - 0x9b, 0x1d, 0x7d, 0x83, 0x9c, 0x1d, 0x7e, 0x83, 0x9b, 0x1d, 0x7e, 0x83, - 0x9c, 0x1d, 0x7f, 0x83, 0x9b, 0x1d, 0x7f, 0x83, 0x9c, 0x1d, 0x80, 0x83, - 0x9b, 0x1d, 0x81, 0x83, 0x9c, 0x1d, 0x81, 0x83, 0x9b, 0x1d, 0x82, 0x83, - 0x9c, 0x1d, 0x82, 0x83, 0x9b, 0x1d, 0x83, 0x83, 0x9c, 0x1d, 0x83, 0x83, - 0x9b, 0x1d, 0x84, 0x83, 0x9c, 0x1d, 0x84, 0x83, 0x9b, 0x1d, 0x85, 0x83, - 0x9c, 0x1d, 0x85, 0x83, 0x9b, 0x1d, 0x86, 0x83, 0x9c, 0x1d, 0x86, 0x83, - 0x9b, 0x1d, 0x87, 0x83, 0x9c, 0x1d, 0x87, 0x83, 0x9b, 0x1d, 0x88, 0x83, - 0x9c, 0x1d, 0x88, 0x83, 0x9b, 0x1d, 0x89, 0x83, 0x9c, 0x1d, 0x89, 0x83, - 0x9b, 0x1d, 0x8a, 0x83, 0x9c, 0x1d, 0x8a, 0x83, 0x9b, 0x1d, 0x8b, 0x83, - 0x9c, 0x1d, 0x8b, 0x83, 0x9b, 0x1d, 0x8c, 0x83, 0x9c, 0x1d, 0x8c, 0x83, - 0x9b, 0x1d, 0x8d, 0x83, 0x9c, 0x1d, 0x8d, 0x83, 0x9b, 0x1d, 0x8e, 0x83, - 0x9c, 0x1d, 0x8e, 0x83, 0x9b, 0x1d, 0x8e, 0x83, 0x9c, 0x1d, 0x8f, 0x83, - 0x9b, 0x1d, 0x8f, 0x83, 0x9c, 0x1d, 0x90, 0x83, 0x9b, 0x1d, 0x90, 0x83, - 0x9c, 0x1d, 0x91, 0x83, 0x9b, 0x1d, 0x91, 0x83, 0x9c, 0x1d, 0x92, 0x83, - 0x9b, 0x1d, 0x92, 0x83, 0x9c, 0x1d, 0x93, 0x83, 0x9b, 0x1d, 0x93, 0x83, - 0x9c, 0x1d, 0x94, 0x83, 0x9b, 0x1d, 0x94, 0x83, 0x9c, 0x1d, 0x94, 0x83, - 0x9b, 0x1d, 0x95, 0x83, 0x9c, 0x1d, 0x95, 0x83, 0x9b, 0x1d, 0x96, 0x83, - 0x9c, 0x1d, 0x96, 0x83, 0x9b, 0x1d, 0x97, 0x83, 0x9c, 0x1d, 0x97, 0x83, - 0x9b, 0x1d, 0x98, 0x83, 0x9c, 0x1d, 0x98, 0x83, 0x9b, 0x1d, 0x98, 0x83, - 0x9c, 0x1d, 0x99, 0x83, 0x9b, 0x1d, 0x99, 0x83, 0x9c, 0x1d, 0x9a, 0x83, - 0x9b, 0x1d, 0x9a, 0x83, 0x9c, 0x1d, 0x9a, 0x83, 0x9b, 0x1d, 0x9b, 0x83, - 0x9c, 0x1d, 0x9b, 0x83, 0x9b, 0x1d, 0x9c, 0x83, 0x9c, 0x1d, 0x9c, 0x83, - 0x9c, 0x1d, 0x9d, 0x83, 0x9d, 0x1d, 0x9d, 0x83, 0x9c, 0x1d, 0x9d, 0x83, - 0x9d, 0x1d, 0x9e, 0x83, 0x9c, 0x1d, 0x9e, 0x83, 0x9d, 0x1d, 0x9f, 0x83, - 0x9c, 0x1d, 0x9f, 0x83, 0x9d, 0x1d, 0x9f, 0x83, 0x9c, 0x1d, 0xa0, 0x83, - 0x9d, 0x1d, 0xa0, 0x83, 0x9c, 0x1d, 0xa1, 0x83, 0x9d, 0x1d, 0xa1, 0x83, - 0x9c, 0x1d, 0xa1, 0x83, 0x9d, 0x1d, 0xa2, 0x83, 0x9c, 0x1d, 0xa2, 0x83, - 0x9d, 0x1d, 0xa3, 0x83, 0x9c, 0x1d, 0xa3, 0x83, 0x9d, 0x1d, 0xa3, 0x84, - 0xa0, 0x1d, 0xa4, 0x84, 0xa1, 0x1d, 0xa4, 0x84, 0xa0, 0x1d, 0xa5, 0x84, - 0xa1, 0x1d, 0xa5, 0x84, 0xa0, 0x1d, 0xa5, 0x84, 0xa1, 0x1d, 0xa6, 0x84, - 0xa0, 0x1d, 0xa6, 0x84, 0xa1, 0x1d, 0xa6, 0x84, 0xa0, 0x1d, 0xa7, 0x84, - 0xa1, 0x1d, 0xa7, 0x85, 0xa4, 0x1d, 0xa8, 0x84, 0xa1, 0x1d, 0xa8, 0x85, - 0xa4, 0x1d, 0xa8, 0x85, 0xa4, 0x1d, 0xa9, 0x85, 0xa4, 0x1d, 0xa9, 0x85, - 0xa4, 0x1d, 0xaa, 0x85, 0xa4, 0x1d, 0xaa, 0x85, 0xa4, 0x1d, 0xaa, 0x85, - 0xa4, 0x1d, 0xab, 0x86, 0xa8, 0x1d, 0xab, 0x85, 0xa4, 0x1d, 0xab, 0x86, - 0xa8, 0x1d, 0xac, 0x86, 0xa7, 0x1d, 0xac, 0x86, 0xa8, 0x1d, 0xac, 0x86, - 0xa7, 0x1d, 0xad, 0x86, 0xa8, 0x1d, 0xad, 0x86, 0xa7, 0x1d, 0xae, 0x86, - 0xa8, 0x1d, 0xae, 0x87, 0xab, 0x1d, 0xae, 0x87, 0xab, 0x1d, 0xaf, 0x87, - 0xab, 0x1d, 0xaf, 0x87, 0xab, 0x1d, 0xaf, 0x87, 0xab, 0x1d, 0xb0, 0x87, - 0xab, 0x1d, 0xb0, 0x87, 0xab, 0x1d, 0xb0, 0x87, 0xab, 0x1d, 0xb1, 0x87, - 0xab, 0x1d, 0xb1, 0x87, 0xab, 0x1d, 0xb2, 0x87, 0xab, 0x1d, 0xb2, 0x87, - 0xab, 0x1d, 0xb2, 0x88, 0xaf, 0x1d, 0xb3, 0x87, 0xab, 0x1d, 0xb3, 0x88, - 0xaf, 0x1d, 0xb3, 0x88, 0xae, 0x1d, 0xb4, 0x88, 0xaf, 0x1d, 0xb4, 0x88, - 0xae, 0x1d, 0xb4, 0x88, 0xaf, 0x1d, 0xb5, 0x88, 0xae, 0x1d, 0xb5, 0x88, - 0xaf, 0x1d, 0xb5, 0x89, 0xb2, 0x1d, 0xb6, 0x89, 0xb2, 0x1d, 0xb6, 0x89, - 0xb2, 0x1d, 0xb6, 0x89, 0xb2, 0x1d, 0xb7, 0x89, 0xb2, 0x1d, 0xb7, 0x89, - 0xb2, 0x1d, 0xb7, 0x89, 0xb2, 0x1d, 0xb8, 0x89, 0xb2, 0x1d, 0xb8, 0x89, - 0xb2, 0x1d, 0xb8, 0x89, 0xb2, 0x1d, 0xb9, 0x8a, 0xb5, 0x1d, 0xb9, 0x89, - 0xb2, 0x1d, 0xb9, 0x8a, 0xb5, 0x1d, 0xba, 0x8a, 0xb5, 0x1d, 0xba, 0x8a, - 0xb5, 0x1d, 0xba, 0x8a, 0xb5, 0x1d, 0xbb, 0x8a, 0xb5, 0x1d, 0xbb, 0x8a, - 0xb5, 0x1d, 0xbb, 0x8a, 0xb5, 0x1d, 0xbc, 0x8b, 0xb8, 0x1d, 0xbc, 0x8a, - 0xb5, 0x1d, 0xbc, 0x8b, 0xb8, 0x1d, 0xbd, 0x8a, 0xb5, 0x1d, 0xbd, 0x8b, - 0xb8, 0x1d, 0xbd, 0x8b, 0xb8, 0x1d, 0xbe, 0x8b, 0xb8, 0x1d, 0xbe, 0x8b, - 0xb8, 0x1d, 0xbe, 0x8b, 0xb8, 0x1d, 0xbf, 0x8b, 0xb8, 0x1d, 0xbf, 0x8b, - 0xb8, 0x1d, 0xbf, 0x8c, 0xbb, 0x1d, 0xc0, 0x8c, 0xbc, 0x1d, 0xc0, 0x8c, - 0xbb, 0x1d, 0xc0, 0x8c, 0xbc, 0x1d, 0xc1, 0x8c, 0xbb, 0x1d, 0xc1, 0x8c, - 0xbc, 0x1d, 0xc1, 0x8c, 0xbb, 0x1d, 0xc1, 0x8c, 0xbc, 0x1d, 0xc2, 0x8c, - 0xbb, 0x1d, 0xc2, 0x8c, 0xbc, 0x1d, 0xc2, 0x8d, 0xbf, 0x1d, 0xc3, 0x8c, - 0xbc, 0x1d, 0xc3, 0x8d, 0xbf, 0x1d, 0xc3, 0x8d, 0xbe, 0x1d, 0xc4, 0x8d, - 0xbf, 0x1d, 0xc4, 0x8d, 0xbe, 0x1d, 0xc4, 0x8d, 0xbf, 0x1d, 0xc5, 0x8d, - 0xbe, 0x1d, 0xc5, 0x8d, 0xbf, 0x1d, 0xc5, 0x8e, 0xc1, 0x1d, 0xc6, 0x8d, - 0xbf, 0x1d, 0xc6, 0x8e, 0xc1, 0x1d, 0xc6, 0x8e, 0xc1, 0x1d, 0xc6, 0x8e, - 0xc1, 0x1d, 0xc7, 0x8e, 0xc1, 0x1d, 0xc7, 0x8e, 0xc1, 0x1d, 0xc7, 0x8e, - 0xc1, 0x1d, 0xc8, 0x8e, 0xc1, 0x1d, 0xc8, 0x8f, 0xc4, 0x1d, 0xc8, 0x8f, - 0xc5, 0x1d, 0xc9, 0x8f, 0xc4, 0x1d, 0xc9, 0x8f, 0xc5, 0x1d, 0xc9, 0x8f, - 0xc4, 0x1d, 0xc9, 0x8f, 0xc5, 0x1d, 0xca, 0x8f, 0xc4, 0x1d, 0xca, 0x8f, - 0xc5, 0x1d, 0xca, 0x8f, 0xc4, 0x1d, 0xcb, 0x8f, 0xc5, 0x1d, 0xcb, 0x90, - 0xc7, 0x1d, 0xcb, 0x8f, 0xc5, 0x1d, 0xcc, 0x90, 0xc7, 0x1d, 0xcc, 0x8f, - 0xc5, 0x1d, 0xcc, 0x90, 0xc7, 0x1d, 0xcc, 0x90, 0xc7, 0x1d, 0xcd, 0x90, - 0xc7, 0x1d, 0xcd, 0x90, 0xc7, 0x1d, 0xcd, 0x90, 0xc7, 0x1d, 0xce, 0x91, - 0xca, 0x1d, 0xce, 0x90, 0xc7, 0x1d, 0xce, 0x91, 0xca, 0x1d, 0xce, 0x90, - 0xc7, 0x1d, 0xcf, 0x91, 0xca, 0x1d, 0xcf, 0x91, 0xca, 0x1d, 0xcf, 0x91, - 0xca, 0x1d, 0xd0, 0x91, 0xca, 0x1d, 0xd0, 0x91, 0xca, 0x1d, 0xd0, 0x91, - 0xca, 0x1d, 0xd0, 0x91, 0xca, 0x1d, 0xd1, 0x92, 0xcd, 0x1d, 0xd1, 0x92, - 0xcd, 0x1d, 0xd1, 0x92, 0xcd, 0x1d, 0xd2, 0x92, 0xcd, 0x1d, 0xd2, 0x92, - 0xcd, 0x1d, 0xd2, 0x92, 0xcd, 0x1d, 0xd2, 0x92, 0xcd, 0x1d, 0xd3, 0x92, - 0xcd, 0x1d, 0xd3, 0x92, 0xcd, 0x1d, 0xd3, 0x92, 0xcd, 0x1d, 0xd4, 0x93, - 0xd0, 0x1d, 0xd4, 0x92, 0xcd, 0x1d, 0xd4, 0x93, 0xd0, 0x1d, 0xd4, 0x92, - 0xcd, 0x1d, 0xd5, 0x93, 0xd0, 0x1d, 0xd5, 0x93, 0xcf, 0x1d, 0xd5, 0x93, - 0xd0, 0x1d, 0xd6, 0x93, 0xcf, 0x1d, 0xd6, 0x93, 0xd0, 0x1d, 0xd6, 0x94, - 0xd2, 0x1d, 0xd6, 0x94, 0xd2, 0x1d, 0xd7, 0x94, 0xd2, 0x1d, 0xd7, 0x94, - 0xd2, 0x1d, 0xd7, 0x94, 0xd2, 0x1d, 0xd7, 0x94, 0xd2, 0x1d, 0xd8, 0x94, - 0xd2, 0x1d, 0xd8, 0x94, 0xd2, 0x1d, 0xd8, 0x94, 0xd2, 0x1d, 0xd9, 0x94, - 0xd2, 0x1d, 0xd9, 0x94, 0xd5, 0x1d, 0xd9, 0x94, 0xd2, 0x1d, 0xd9, 0x94, - 0xd5, 0x1d, 0xda, 0x94, 0xd2, 0x1d, 0xda, 0x94, 0xd5, 0x1d, 0xda, 0x94, - 0xd5, 0x1d, 0xda, 0x94, 0xd5, 0x1d, 0xdb, 0x94, 0xd5, 0x1d, 0xdb, 0x94, - 0xd5, 0x1d, 0xdb, 0x94, 0xd5, 0x1d, 0xdb, 0x94, 0xd5, 0x1d, 0xdc, 0x95, - 0xd7, 0x1d, 0xdc, 0x94, 0xd5, 0x1d, 0xdc, 0x95, 0xd7, 0x1d, 0xdd, 0x95, - 0xd7, 0x1d, 0xdd, 0x95, 0xd7, 0x1d, 0xdd, 0x95, 0xd7, 0x1d, 0xdd, 0x95, - 0xd7, 0x1d, 0xde, 0x95, 0xd7, 0x1d, 0xde, 0x95, 0xd7, 0x1d, 0xde, 0x96, - 0xda, 0x1d, 0xde, 0x96, 0xda, 0x1d, 0xdf, 0x96, 0xda, 0x1d, 0xdf, 0x96, - 0xda, 0x1d, 0xdf, 0x96, 0xda, 0x1d, 0xdf, 0x96, 0xda, 0x1d, 0xe0, 0x96, - 0xda, 0x1d, 0xe0, 0x96, 0xda, 0x1d, 0xe0, 0x96, 0xda, 0x1d, 0xe1, 0x96, - 0xda, 0x1d, 0xe1, 0x97, 0xdd, 0x1d, 0xe1, 0x96, 0xda, 0x1d, 0xe1, 0x97, - 0xdd, 0x1d, 0xe2, 0x96, 0xda, 0x1d, 0xe2, 0x97, 0xdd, 0x1d, 0xe2, 0x97, - 0xdc, 0x1d, 0xe2, 0x97, 0xdd, 0x1d, 0xe3, 0x97, 0xdc, 0x1d, 0xe3, 0x97, - 0xdd, 0x1d, 0xe3, 0x98, 0xdf, 0x1d, 0xe3, 0x97, 0xdd, 0x1d, 0xe4, 0x98, - 0xdf, 0x1d, 0xe4, 0x97, 0xdd, 0x1d, 0xe4, 0x98, 0xdf, 0x1d, 0xe4, 0x98, - 0xdf, 0x1d, 0xe5, 0x98, 0xdf, 0x1d, 0xe5, 0x98, 0xdf, 0x1d, 0xe5, 0x98, - 0xdf, 0x1d, 0xe5, 0x99, 0xe1, 0x1d, 0xe6, 0x99, 0xe2, 0x1d, 0xe6, 0x99, - 0xe1, 0x1d, 0xe6, 0x99, 0xe2, 0x1d, 0xe6, 0x99, 0xe1, 0x1d, 0xe7, 0x99, - 0xe2, 0x1d, 0xe7, 0x99, 0xe1, 0x1d, 0xe7, 0x99, 0xe2, 0x1d, 0xe7, 0x99, - 0xe1, 0x1d, 0xe8, 0x99, 0xe2, 0x1d, 0xe8, 0x9a, 0xe4, 0x1d, 0xe8, 0x99, - 0xe2, 0x1d, 0xe8, 0x9a, 0xe4, 0x1d, 0xe9, 0x99, 0xe2, 0x1d, 0xe9, 0x9a, - 0xe4, 0x1d, 0xe9, 0x99, 0xe2, 0x1d, 0xe9, 0x9a, 0xe4, 0x1d, 0xea, 0x9a, - 0xe4, 0x1d, 0xea, 0x9a, 0xe4, 0x1d, 0xea, 0x9a, 0xe4, 0x1d, 0xea, 0x9a, - 0xe4, 0x1d, 0xeb, 0x9a, 0xe6, 0x1d, 0xeb, 0x9a, 0xe4, 0x1d, 0xeb, 0x9a, - 0xe6, 0x1d, 0xeb, 0x9a, 0xe4, 0x1d, 0xec, 0x9a, 0xe6, 0x1d, 0xec, 0x9a, - 0xe6, 0x1d, 0xec, 0x9a, 0xe6, 0x1d, 0xec, 0x9a, 0xe6, 0x1d, 0xec, 0x9a, - 0xe6, 0x1d, 0xed, 0x9b, 0xe8, 0x1d, 0xed, 0x9b, 0xe9, 0x1d, 0xed, 0x9b, - 0xe8, 0x1d, 0xed, 0x9b, 0xe9, 0x1d, 0xee, 0x9b, 0xe8, 0x1d, 0xee, 0x9b, - 0xe9, 0x1d, 0xee, 0x9b, 0xe8, 0x1d, 0xee, 0x9b, 0xe9, 0x1d, 0xef, 0x9b, - 0xe8, 0x1d, 0xef, 0x9b, 0xe9, 0x1d, 0xef, 0x9c, 0xeb, 0x1d, 0xef, 0x9b, - 0xe9, 0x1d, 0xf0, 0x9c, 0xeb, 0x1d, 0xf0, 0x9b, 0xe9, 0x1d, 0xf0, 0x9c, - 0xeb, 0x1d, 0xf0, 0x9c, 0xeb, 0x1d, 0xf1, 0x9c, 0xeb, 0x1d, 0xf1, 0x9c, - 0xeb, 0x1d, 0xf1, 0x9c, 0xeb, 0x1d, 0xf1, 0x9d, 0xed, 0x1d, 0xf2, 0x9d, - 0xed, 0x1d, 0xf2, 0x9d, 0xed, 0x1d, 0xf2, 0x9d, 0xed, 0x1d, 0xf2, 0x9d, - 0xed, 0x1d, 0xf2, 0x9d, 0xed, 0x1d, 0xf3, 0x9d, 0xed, 0x1d, 0xf3, 0x9d, - 0xed, 0x1d, 0xf3, 0x9d, 0xed, 0x1d, 0xf3, 0x9d, 0xed, 0x1d, 0xf4, 0x9d, - 0xed, 0x1d, 0xf4, 0x9d, 0xed, 0x1d, 0xf4, 0x9e, 0xef, 0x1d, 0xf4, 0x9d, - 0xed, 0x1d, 0xf5, 0x9e, 0xef, 0x1d, 0xf5, 0x9d, 0xed, 0x1d, 0xf5, 0x9e, - 0xef, 0x1d, 0xf5, 0x9e, 0xef, 0x1d, 0xf5, 0x9e, 0xef, 0x1d, 0xf6, 0x9e, - 0xef, 0x1d, 0xf6, 0x9e, 0xef, 0x1d, 0xf6, 0x9f, 0xf2, 0x1d, 0xf6, 0x9e, - 0xef, 0x1d, 0xf7, 0x9f, 0xf2, 0x1d, 0xf7, 0x9e, 0xef, 0x1d, 0xf7, 0x9f, - 0xf2, 0x1d, 0xf7, 0x9f, 0xf1, 0x1d, 0xf8, 0x9f, 0xf2, 0x1d, 0xf8, 0x9f, - 0xf1, 0x1d, 0xf8, 0x9f, 0xf2, 0x1d, 0xf8, 0x9f, 0xf4, 0x1d, 0xf8, 0x9f, - 0xf4, 0x1d, 0xf9, 0x9f, 0xf4, 0x1d, 0xf9, 0x9f, 0xf4, 0x1d, 0xf9, 0x9f, - 0xf4, 0x1d, 0xf9, 0x9f, 0xf4, 0x1d, 0xfa, 0x9f, 0xf4, 0x1d, 0xfa, 0x9f, - 0xf4, 0x1d, 0xfa, 0x9f, 0xf4, 0x1d, 0xfa, 0x9f, 0xf4, 0x1d, 0xfa, 0xa0, - 0xf6, 0x1d, 0xfb, 0x9f, 0xf4, 0x1d, 0xfb, 0xa0, 0xf6, 0x1d, 0xfb, 0x9f, - 0xf4, 0x1d, 0xfb, 0xa0, 0xf6, 0x1d, 0xfc, 0x9f, 0xf4, 0x1d, 0xfc, 0xa0, - 0xf6, 0x1d, 0xfc, 0xa0, 0xf6, 0x1d, 0xfc, 0xa0, 0xf6, 0x1d, 0xfc, 0xa1, - 0xf8, 0x1d, 0xfd, 0xa0, 0xf6, 0x1d, 0xfd, 0xa1, 0xf8, 0x1d, 0xfd, 0xa0, - 0xf6, 0x1d, 0xfd, 0xa1, 0xf8, 0x1d, 0xfe, 0xa0, 0xf6, 0x1d, 0xfe, 0xa1, - 0xf8, 0x1d, 0xfe, 0xa1, 0xf8, 0x1d, 0xfe, 0xa1, 0xf8, 0x1d, 0xfe, 0xa2, - 0xfa, 0x1d, 0xff, 0xa2, 0xfa, 0x1d, 0xff, 0xa2, 0xfa, 0x1d, 0x03, 0x84, - 0x9b, 0x1e, 0x0a, 0x84, 0x9b, 0x1e, 0x0f, 0x84, 0x9b, 0x1e, 0x14, 0x84, - 0x9b, 0x1e, 0x17, 0x84, 0x9b, 0x1e, 0x1b, 0x84, 0x9b, 0x1e, 0x1e, 0x84, - 0x9b, 0x1e, 0x20, 0x86, 0x9b, 0x1e, 0x23, 0x84, 0x9b, 0x1e, 0x25, 0x86, - 0x9b, 0x1e, 0x27, 0x84, 0x9b, 0x1e, 0x29, 0x86, 0x9b, 0x1e, 0x2b, 0x84, - 0x9b, 0x1e, 0x2d, 0x86, 0x9b, 0x1e, 0x2f, 0x84, 0x9b, 0x1e, 0x31, 0x86, - 0x9b, 0x1e, 0x32, 0x84, 0x9b, 0x1e, 0x34, 0x86, 0x9b, 0x1e, 0x35, 0x84, - 0x9b, 0x1e, 0x37, 0x86, 0x9b, 0x1e, 0x38, 0x84, 0x9b, 0x1e, 0x3a, 0x86, - 0x9b, 0x1e, 0x3b, 0x84, 0x9b, 0x1e, 0x3c, 0x86, 0x9b, 0x1e, 0x3e, 0x84, - 0x9b, 0x1e, 0x3f, 0x86, 0x9b, 0x1e, 0x40, 0x84, 0x9b, 0x1e, 0x42, 0x86, - 0x9b, 0x1e, 0x43, 0x84, 0x9b, 0x1e, 0x44, 0x86, 0x9b, 0x1e, 0x45, 0x84, - 0x9b, 0x1e, 0x46, 0x86, 0x9b, 0x1e, 0x47, 0x84, 0x9b, 0x1e, 0x48, 0x86, - 0x9b, 0x1e, 0x49, 0x84, 0x9b, 0x1e, 0x4a, 0x86, 0x9b, 0x1e, 0x4b, 0x84, - 0x9b, 0x1e, 0x4c, 0x86, 0x9b, 0x1e, 0x4d, 0x84, 0x9b, 0x1e, 0x4e, 0x86, - 0x9b, 0x1e, 0x4f, 0x84, 0x9b, 0x1e, 0x50, 0x86, 0x9b, 0x1e, 0x51, 0x84, - 0x9b, 0x1e, 0x52, 0x86, 0x9b, 0x1e, 0x53, 0x84, 0x9b, 0x1e, 0x54, 0x86, - 0x9b, 0x1e, 0x55, 0x84, 0x9b, 0x1e, 0x56, 0x86, 0x9b, 0x1e, 0x57, 0x84, - 0x9b, 0x1e, 0x58, 0x84, 0x9c, 0x1e, 0x58, 0x84, 0x9b, 0x1e, 0x59, 0x84, - 0x9c, 0x1e, 0x5a, 0x84, 0x9b, 0x1e, 0x5b, 0x84, 0x9c, 0x1e, 0x5c, 0x84, - 0x9b, 0x1e, 0x5d, 0x84, 0x9c, 0x1e, 0x5d, 0x84, 0x9b, 0x1e, 0x5e, 0x84, - 0x9c, 0x1e, 0x5f, 0x84, 0x9b, 0x1e, 0x60, 0x84, 0x9c, 0x1e, 0x60, 0x84, - 0x9b, 0x1e, 0x61, 0x84, 0x9c, 0x1e, 0x62, 0x84, 0x9b, 0x1e, 0x63, 0x84, - 0x9c, 0x1e, 0x63, 0x84, 0x9b, 0x1e, 0x64, 0x84, 0x9c, 0x1e, 0x65, 0x84, - 0x9b, 0x1e, 0x66, 0x84, 0x9c, 0x1e, 0x66, 0x84, 0x9b, 0x1e, 0x67, 0x84, - 0x9c, 0x1e, 0x68, 0x84, 0x9b, 0x1e, 0x68, 0x84, 0x9c, 0x1e, 0x69, 0x84, - 0x9b, 0x1e, 0x6a, 0x84, 0x9c, 0x1e, 0x6a, 0x84, 0x9b, 0x1e, 0x6b, 0x84, - 0x9c, 0x1e, 0x6c, 0x84, 0x9b, 0x1e, 0x6c, 0x84, 0x9c, 0x1e, 0x6d, 0x84, - 0x9b, 0x1e, 0x6e, 0x84, 0x9c, 0x1e, 0x6e, 0x84, 0x9b, 0x1e, 0x6f, 0x84, - 0x9c, 0x1e, 0x70, 0x84, 0x9b, 0x1e, 0x70, 0x84, 0x9c, 0x1e, 0x71, 0x84, - 0x9b, 0x1e, 0x72, 0x84, 0x9c, 0x1e, 0x72, 0x84, 0x9b, 0x1e, 0x73, 0x84, - 0x9c, 0x1e, 0x73, 0x84, 0x9b, 0x1e, 0x74, 0x84, 0x9c, 0x1e, 0x75, 0x84, - 0x9b, 0x1e, 0x75, 0x84, 0x9c, 0x1e, 0x76, 0x84, 0x9b, 0x1e, 0x76, 0x84, - 0x9c, 0x1e, 0x77, 0x84, 0x9b, 0x1e, 0x78, 0x84, 0x9c, 0x1e, 0x78, 0x84, - 0x9b, 0x1e, 0x79, 0x84, 0x9c, 0x1e, 0x79, 0x84, 0x9b, 0x1e, 0x7a, 0x84, - 0x9c, 0x1e, 0x7a, 0x84, 0x9b, 0x1e, 0x7b, 0x84, 0x9c, 0x1e, 0x7c, 0x84, - 0x9b, 0x1e, 0x7c, 0x84, 0x9c, 0x1e, 0x7d, 0x84, 0x9b, 0x1e, 0x7d, 0x84, - 0x9c, 0x1e, 0x7e, 0x84, 0x9b, 0x1e, 0x7e, 0x84, 0x9c, 0x1e, 0x7f, 0x84, - 0x9b, 0x1e, 0x7f, 0x84, 0x9c, 0x1e, 0x80, 0x84, 0x9b, 0x1e, 0x81, 0x84, - 0x9c, 0x1e, 0x81, 0x84, 0x9b, 0x1e, 0x82, 0x84, 0x9c, 0x1e, 0x82, 0x84, - 0x9b, 0x1e, 0x83, 0x84, 0x9c, 0x1e, 0x83, 0x84, 0x9b, 0x1e, 0x84, 0x84, - 0x9c, 0x1e, 0x84, 0x84, 0x9b, 0x1e, 0x85, 0x84, 0x9c, 0x1e, 0x85, 0x84, - 0x9b, 0x1e, 0x86, 0x84, 0x9c, 0x1e, 0x86, 0x84, 0x9b, 0x1e, 0x87, 0x84, - 0x9c, 0x1e, 0x87, 0x84, 0x9b, 0x1e, 0x88, 0x84, 0x9c, 0x1e, 0x88, 0x84, - 0x9b, 0x1e, 0x89, 0x84, 0x9c, 0x1e, 0x89, 0x84, 0x9b, 0x1e, 0x8a, 0x84, - 0x9c, 0x1e, 0x8a, 0x84, 0x9b, 0x1e, 0x8b, 0x84, 0x9c, 0x1e, 0x8b, 0x84, - 0x9b, 0x1e, 0x8c, 0x84, 0x9c, 0x1e, 0x8c, 0x84, 0x9b, 0x1e, 0x8d, 0x84, - 0x9c, 0x1e, 0x8d, 0x84, 0x9b, 0x1e, 0x8e, 0x84, 0x9c, 0x1e, 0x8e, 0x84, - 0x9b, 0x1e, 0x8e, 0x84, 0x9c, 0x1e, 0x8f, 0x84, 0x9b, 0x1e, 0x8f, 0x84, - 0x9c, 0x1e, 0x90, 0x84, 0x9b, 0x1e, 0x90, 0x84, 0x9c, 0x1e, 0x91, 0x84, - 0x9b, 0x1e, 0x91, 0x84, 0x9c, 0x1e, 0x92, 0x84, 0x9b, 0x1e, 0x92, 0x84, - 0x9c, 0x1e, 0x93, 0x84, 0x9b, 0x1e, 0x93, 0x84, 0x9c, 0x1e, 0x94, 0x84, - 0x9b, 0x1e, 0x94, 0x84, 0x9c, 0x1e, 0x94, 0x84, 0x9b, 0x1e, 0x95, 0x84, - 0x9c, 0x1e, 0x95, 0x84, 0x9b, 0x1e, 0x96, 0x84, 0x9c, 0x1e, 0x96, 0x84, - 0x9b, 0x1e, 0x97, 0x84, 0x9c, 0x1e, 0x97, 0x84, 0x9b, 0x1e, 0x98, 0x84, - 0x9c, 0x1e, 0x98, 0x84, 0x9b, 0x1e, 0x98, 0x84, 0x9c, 0x1e, 0x99, 0x84, - 0x9b, 0x1e, 0x99, 0x84, 0x9c, 0x1e, 0x9a, 0x84, 0x9b, 0x1e, 0x9a, 0x84, - 0x9c, 0x1e, 0x9a, 0x84, 0x9b, 0x1e, 0x9b, 0x84, 0x9c, 0x1e, 0x9b, 0x84, - 0x9b, 0x1e, 0x9c, 0x84, 0x9c, 0x1e, 0x9c, 0x84, 0x9c, 0x1e, 0x9d, 0x84, - 0x9d, 0x1e, 0x9d, 0x84, 0x9d, 0x1e, 0x9d, 0x84, 0x9d, 0x1e, 0x9e, 0x84, - 0x9e, 0x1e, 0x9e, 0x84, 0x9e, 0x1e, 0x9f, 0x84, 0x9f, 0x1e, 0x9f, 0x84, - 0x9e, 0x1e, 0x9f, 0x84, 0x9f, 0x1e, 0xa0, 0x84, 0x9e, 0x1e, 0xa0, 0x84, - 0x9f, 0x1e, 0xa1, 0x84, 0x9e, 0x1e, 0xa1, 0x84, 0x9f, 0x1e, 0xa1, 0x84, - 0x9e, 0x1e, 0xa2, 0x84, 0x9f, 0x1e, 0xa2, 0x84, 0x9e, 0x1e, 0xa3, 0x84, - 0x9f, 0x1e, 0xa3, 0x84, 0x9e, 0x1e, 0xa3, 0x84, 0x9f, 0x1e, 0xa4, 0x84, - 0x9e, 0x1e, 0xa4, 0x84, 0x9f, 0x1e, 0xa5, 0x84, 0x9e, 0x1e, 0xa5, 0x84, - 0x9f, 0x1e, 0xa5, 0x85, 0xa2, 0x1e, 0xa6, 0x84, 0x9f, 0x1e, 0xa6, 0x85, - 0xa2, 0x1e, 0xa6, 0x85, 0xa2, 0x1e, 0xa7, 0x85, 0xa2, 0x1e, 0xa7, 0x85, - 0xa2, 0x1e, 0xa8, 0x85, 0xa2, 0x1e, 0xa8, 0x85, 0xa2, 0x1e, 0xa8, 0x85, - 0xa2, 0x1e, 0xa9, 0x86, 0xa6, 0x1e, 0xa9, 0x86, 0xa6, 0x1e, 0xaa, 0x86, - 0xa6, 0x1e, 0xaa, 0x86, 0xa6, 0x1e, 0xaa, 0x86, 0xa6, 0x1e, 0xab, 0x86, - 0xa6, 0x1e, 0xab, 0x86, 0xa6, 0x1e, 0xab, 0x86, 0xa6, 0x1e, 0xac, 0x86, - 0xa6, 0x1e, 0xac, 0x86, 0xa6, 0x1e, 0xac, 0x87, 0xaa, 0x1e, 0xad, 0x86, - 0xa6, 0x1e, 0xad, 0x87, 0xaa, 0x1e, 0xae, 0x87, 0xa9, 0x1e, 0xae, 0x87, - 0xaa, 0x1e, 0xae, 0x87, 0xa9, 0x1e, 0xaf, 0x87, 0xaa, 0x1e, 0xaf, 0x87, - 0xa9, 0x1e, 0xaf, 0x87, 0xaa, 0x1e, 0xb0, 0x88, 0xad, 0x1e, 0xb0, 0x88, - 0xad, 0x1e, 0xb0, 0x88, 0xad, 0x1e, 0xb1, 0x88, 0xad, 0x1e, 0xb1, 0x88, - 0xad, 0x1e, 0xb2, 0x88, 0xad, 0x1e, 0xb2, 0x88, 0xad, 0x1e, 0xb2, 0x88, - 0xad, 0x1e, 0xb3, 0x88, 0xad, 0x1e, 0xb3, 0x88, 0xad, 0x1e, 0xb3, 0x88, - 0xad, 0x1e, 0xb4, 0x88, 0xad, 0x1e, 0xb4, 0x89, 0xb0, 0x1e, 0xb4, 0x88, - 0xad, 0x1e, 0xb5, 0x89, 0xb0, 0x1e, 0xb5, 0x89, 0xb0, 0x1e, 0xb5, 0x89, - 0xb0, 0x1e, 0xb6, 0x89, 0xb2, 0x1e, 0xb6, 0x89, 0xb0, 0x1e, 0xb6, 0x89, - 0xb2, 0x1e, 0xb7, 0x89, 0xb0, 0x1e, 0xb7, 0x89, 0xb2, 0x1e, 0xb7, 0x89, - 0xb2, 0x1e, 0xb8, 0x89, 0xb2, 0x1e, 0xb8, 0x89, 0xb2, 0x1e, 0xb8, 0x89, - 0xb2, 0x1e, 0xb9, 0x8a, 0xb3, 0x1e, 0xb9, 0x8a, 0xb4, 0x1e, 0xb9, 0x8a, - 0xb3, 0x1e, 0xba, 0x8a, 0xb4, 0x1e, 0xba, 0x8b, 0xb7, 0x1e, 0xba, 0x8b, - 0xb7, 0x1e, 0xbb, 0x8b, 0xb7, 0x1e, 0xbb, 0x8b, 0xb7, 0x1e, 0xbb, 0x8b, - 0xb7, 0x1e, 0xbc, 0x8b, 0xb7, 0x1e, 0xbc, 0x8b, 0xb7, 0x1e, 0xbc, 0x8b, - 0xb7, 0x1e, 0xbd, 0x8b, 0xb7, 0x1e, 0xbd, 0x8b, 0xb7, 0x1e, 0xbd, 0x8c, - 0xba, 0x1e, 0xbe, 0x8b, 0xb7, 0x1e, 0xbe, 0x8c, 0xba, 0x1e, 0xbe, 0x8b, - 0xb7, 0x1e, 0xbf, 0x8c, 0xba, 0x1e, 0xbf, 0x8c, 0xba, 0x1e, 0xbf, 0x8c, - 0xba, 0x1e, 0xc0, 0x8c, 0xba, 0x1e, 0xc0, 0x8c, 0xba, 0x1e, 0xc0, 0x8c, - 0xba, 0x1e, 0xc1, 0x8c, 0xba, 0x1e, 0xc1, 0x8d, 0xbd, 0x1e, 0xc1, 0x8c, - 0xba, 0x1e, 0xc1, 0x8d, 0xbd, 0x1e, 0xc2, 0x8d, 0xbd, 0x1e, 0xc2, 0x8d, - 0xbd, 0x1e, 0xc2, 0x8d, 0xbd, 0x1e, 0xc3, 0x8d, 0xbd, 0x1e, 0xc3, 0x8d, - 0xbd, 0x1e, 0xc3, 0x8d, 0xbd, 0x1e, 0xc4, 0x8e, 0xc0, 0x1e, 0xc4, 0x8e, - 0xc0, 0x1e, 0xc4, 0x8e, 0xc0, 0x1e, 0xc5, 0x8e, 0xc0, 0x1e, 0xc5, 0x8e, - 0xc0, 0x1e, 0xc5, 0x8e, 0xc0, 0x1e, 0xc6, 0x8e, 0xc0, 0x1e, 0xc6, 0x8e, - 0xc0, 0x1e, 0xc6, 0x8e, 0xc0, 0x1e, 0xc6, 0x8e, 0xc0, 0x1e, 0xc7, 0x8e, - 0xc3, 0x1e, 0xc7, 0x8e, 0xc0, 0x1e, 0xc7, 0x8e, 0xc3, 0x1e, 0xc8, 0x8e, - 0xc3, 0x1e, 0xc8, 0x8e, 0xc3, 0x1e, 0xc8, 0x8e, 0xc3, 0x1e, 0xc9, 0x8e, - 0xc3, 0x1e, 0xc9, 0x8e, 0xc3, 0x1e, 0xc9, 0x8e, 0xc3, 0x1e, 0xc9, 0x8f, - 0xc6, 0x1e, 0xca, 0x8e, 0xc3, 0x1e, 0xca, 0x8f, 0xc6, 0x1e, 0xca, 0x8e, - 0xc3, 0x1e, 0xcb, 0x8f, 0xc6, 0x1e, 0xcb, 0x8f, 0xc6, 0x1e, 0xcb, 0x8f, - 0xc6, 0x1e, 0xcc, 0x8f, 0xc6, 0x1e, 0xcc, 0x8f, 0xc6, 0x1e, 0xcc, 0x90, - 0xc9, 0x1e, 0xcc, 0x90, 0xc9, 0x1e, 0xcd, 0x90, 0xc9, 0x1e, 0xcd, 0x90, - 0xc9, 0x1e, 0xcd, 0x90, 0xc9, 0x1e, 0xce, 0x90, 0xc9, 0x1e, 0xce, 0x90, - 0xc9, 0x1e, 0xce, 0x90, 0xc9, 0x1e, 0xce, 0x90, 0xc9, 0x1e, 0xcf, 0x90, - 0xc9, 0x1e, 0xcf, 0x91, 0xcc, 0x1e, 0xcf, 0x90, 0xc9, 0x1e, 0xd0, 0x91, - 0xcc, 0x1e, 0xd0, 0x90, 0xc9, 0x1e, 0xd0, 0x91, 0xcc, 0x1e, 0xd0, 0x91, - 0xcb, 0x1e, 0xd1, 0x91, 0xcc, 0x1e, 0xd1, 0x91, 0xcb, 0x1e, 0xd1, 0x91, - 0xcc, 0x1e, 0xd2, 0x91, 0xcb, 0x1e, 0xd2, 0x91, 0xcc, 0x1e, 0xd2, 0x92, - 0xce, 0x1e, 0xd2, 0x92, 0xce, 0x1e, 0xd3, 0x92, 0xce, 0x1e, 0xd3, 0x92, - 0xce, 0x1e, 0xd3, 0x92, 0xce, 0x1e, 0xd4, 0x92, 0xce, 0x1e, 0xd4, 0x92, - 0xce, 0x1e, 0xd4, 0x92, 0xce, 0x1e, 0xd4, 0x92, 0xce, 0x1e, 0xd5, 0x92, - 0xce, 0x1e, 0xd5, 0x93, 0xd1, 0x1e, 0xd5, 0x92, 0xce, 0x1e, 0xd6, 0x93, - 0xd1, 0x1e, 0xd6, 0x92, 0xce, 0x1e, 0xd6, 0x93, 0xd1, 0x1e, 0xd6, 0x93, - 0xd1, 0x1e, 0xd7, 0x93, 0xd1, 0x1e, 0xd7, 0x93, 0xd1, 0x1e, 0xd7, 0x93, - 0xd1, 0x1e, 0xd7, 0x94, 0xd4, 0x1e, 0xd8, 0x93, 0xd1, 0x1e, 0xd8, 0x94, - 0xd4, 0x1e, 0xd8, 0x93, 0xd1, 0x1e, 0xd9, 0x94, 0xd4, 0x1e, 0xd9, 0x94, - 0xd3, 0x1e, 0xd9, 0x94, 0xd4, 0x1e, 0xd9, 0x94, 0xd3, 0x1e, 0xda, 0x94, - 0xd4, 0x1e, 0xda, 0x95, 0xd6, 0x1e, 0xda, 0x95, 0xd6, 0x1e, 0xda, 0x95, - 0xd6, 0x1e, 0xdb, 0x95, 0xd6, 0x1e, 0xdb, 0x95, 0xd6, 0x1e, 0xdb, 0x95, - 0xd6, 0x1e, 0xdb, 0x95, 0xd6, 0x1e, 0xdc, 0x95, 0xd6, 0x1e, 0xdc, 0x95, - 0xd6, 0x1e, 0xdc, 0x95, 0xd6, 0x1e, 0xdd, 0x95, 0xd6, 0x1e, 0xdd, 0x95, - 0xd6, 0x1e, 0xdd, 0x96, 0xd9, 0x1e, 0xdd, 0x95, 0xd6, 0x1e, 0xde, 0x96, - 0xd9, 0x1e, 0xde, 0x96, 0xd9, 0x1e, 0xde, 0x96, 0xd9, 0x1e, 0xde, 0x96, - 0xd9, 0x1e, 0xdf, 0x96, 0xd9, 0x1e, 0xdf, 0x96, 0xd9, 0x1e, 0xdf, 0x96, - 0xd9, 0x1e, 0xdf, 0x97, 0xdb, 0x1e, 0xe0, 0x96, 0xd9, 0x1e, 0xe0, 0x97, - 0xdb, 0x1e, 0xe0, 0x96, 0xd9, 0x1e, 0xe1, 0x97, 0xdb, 0x1e, 0xe1, 0x97, - 0xdb, 0x1e, 0xe1, 0x97, 0xdb, 0x1e, 0xe1, 0x97, 0xdb, 0x1e, 0xe2, 0x97, - 0xdb, 0x1e, 0xe2, 0x98, 0xde, 0x1e, 0xe2, 0x98, 0xde, 0x1e, 0xe2, 0x98, - 0xde, 0x1e, 0xe3, 0x98, 0xde, 0x1e, 0xe3, 0x98, 0xde, 0x1e, 0xe3, 0x98, - 0xde, 0x1e, 0xe3, 0x98, 0xde, 0x1e, 0xe4, 0x98, 0xde, 0x1e, 0xe4, 0x98, - 0xde, 0x1e, 0xe4, 0x98, 0xde, 0x1e, 0xe4, 0x98, 0xe0, 0x1e, 0xe5, 0x98, - 0xde, 0x1e, 0xe5, 0x98, 0xe0, 0x1e, 0xe5, 0x98, 0xde, 0x1e, 0xe5, 0x98, - 0xe0, 0x1e, 0xe6, 0x98, 0xe0, 0x1e, 0xe6, 0x98, 0xe0, 0x1e, 0xe6, 0x98, - 0xe0, 0x1e, 0xe6, 0x98, 0xe0, 0x1e, 0xe7, 0x99, 0xe3, 0x1e, 0xe7, 0x98, - 0xe0, 0x1e, 0xe7, 0x99, 0xe3, 0x1e, 0xe7, 0x98, 0xe0, 0x1e, 0xe8, 0x99, - 0xe3, 0x1e, 0xe8, 0x99, 0xe2, 0x1e, 0xe8, 0x99, 0xe3, 0x1e, 0xe8, 0x99, - 0xe2, 0x1e, 0xe9, 0x99, 0xe3, 0x1e, 0xe9, 0x9a, 0xe5, 0x1e, 0xe9, 0x9a, - 0xe5, 0x1e, 0xe9, 0x9a, 0xe5, 0x1e, 0xea, 0x9a, 0xe5, 0x1e, 0xea, 0x9a, - 0xe5, 0x1e, 0xea, 0x9a, 0xe5, 0x1e, 0xea, 0x9a, 0xe5, 0x1e, 0xeb, 0x9a, - 0xe5, 0x1e, 0xeb, 0x9a, 0xe5, 0x1e, 0xeb, 0x9a, 0xe5, 0x1e, 0xeb, 0x9a, - 0xe5, 0x1e, 0xec, 0x9a, 0xe5, 0x1e, 0xec, 0x9b, 0xe7, 0x1e, 0xec, 0x9a, - 0xe5, 0x1e, 0xec, 0x9b, 0xe7, 0x1e, 0xec, 0x9a, 0xe5, 0x1e, 0xed, 0x9b, - 0xe7, 0x1e, 0xed, 0x9b, 0xe7, 0x1e, 0xed, 0x9b, 0xe7, 0x1e, 0xed, 0x9b, - 0xe7, 0x1e, 0xee, 0x9b, 0xe7, 0x1e, 0xee, 0x9c, 0xea, 0x1e, 0xee, 0x9c, - 0xea, 0x1e, 0xee, 0x9c, 0xea, 0x1e, 0xef, 0x9c, 0xea, 0x1e, 0xef, 0x9c, - 0xea, 0x1e, 0xef, 0x9c, 0xea, 0x1e, 0xef, 0x9c, 0xea, 0x1e, 0xf0, 0x9c, - 0xea, 0x1e, 0xf0, 0x9c, 0xea, 0x1e, 0xf0, 0x9c, 0xea, 0x1e, 0xf0, 0x9d, - 0xec, 0x1e, 0xf1, 0x9c, 0xea, 0x1e, 0xf1, 0x9d, 0xec, 0x1e, 0xf1, 0x9c, - 0xea, 0x1e, 0xf1, 0x9d, 0xec, 0x1e, 0xf2, 0x9d, 0xec, 0x1e, 0xf2, 0x9d, - 0xec, 0x1e, 0xf2, 0x9d, 0xec, 0x1e, 0xf2, 0x9d, 0xec, 0x1e, 0xf2, 0x9d, - 0xee, 0x1e, 0xf3, 0x9d, 0xec, 0x1e, 0xf3, 0x9d, 0xee, 0x1e, 0xf3, 0x9d, - 0xec, 0x1e, 0xf3, 0x9d, 0xee, 0x1e, 0xf4, 0x9d, 0xec, 0x1e, 0xf4, 0x9d, - 0xee, 0x1e, 0xf4, 0x9d, 0xee, 0x1e, 0xf4, 0x9d, 0xee, 0x1e, 0xf5, 0x9d, - 0xee, 0x1e, 0xf5, 0x9d, 0xee, 0x1e, 0xf5, 0x9e, 0xf0, 0x1e, 0xf5, 0x9e, - 0xf1, 0x1e, 0xf5, 0x9e, 0xf0, 0x1e, 0xf6, 0x9e, 0xf1, 0x1e, 0xf6, 0x9e, - 0xf0, 0x1e, 0xf6, 0x9e, 0xf1, 0x1e, 0xf6, 0x9e, 0xf0, 0x1e, 0xf7, 0x9e, - 0xf1, 0x1e, 0xf7, 0x9e, 0xf0, 0x1e, 0xf7, 0x9e, 0xf1, 0x1e, 0xf7, 0x9f, - 0xf3, 0x1e, 0xf8, 0x9e, 0xf1, 0x1e, 0xf8, 0x9f, 0xf3, 0x1e, 0xf8, 0x9e, - 0xf1, 0x1e, 0xf8, 0x9f, 0xf3, 0x1e, 0xf8, 0x9f, 0xf2, 0x1e, 0xf9, 0x9f, - 0xf3, 0x1e, 0xf9, 0x9f, 0xf2, 0x1e, 0xf9, 0x9f, 0xf3, 0x1e, 0xf9, 0xa0, - 0xf5, 0x1e, 0xfa, 0x9f, 0xf3, 0x1e, 0xfa, 0xa0, 0xf5, 0x1e, 0xfa, 0x9f, - 0xf3, 0x1e, 0xfa, 0xa0, 0xf5, 0x1e, 0xfa, 0xa0, 0xf5, 0x1e, 0xfb, 0xa0, - 0xf5, 0x1e, 0xfb, 0xa0, 0xf5, 0x1e, 0xfb, 0xa0, 0xf5, 0x1e, 0xfb, 0xa1, - 0xf7, 0x1e, 0xfc, 0xa1, 0xf7, 0x1e, 0xfc, 0xa1, 0xf7, 0x1e, 0xfc, 0xa1, - 0xf7, 0x1e, 0xfc, 0xa1, 0xf7, 0x1e, 0xfc, 0xa1, 0xf7, 0x1e, 0xfd, 0xa1, - 0xf7, 0x1e, 0xfd, 0xa1, 0xf7, 0x1e, 0xfd, 0xa1, 0xf7, 0x1e, 0xfd, 0xa1, - 0xf7, 0x1e, 0xfe, 0xa1, 0xf9, 0x1e, 0xfe, 0xa1, 0xf7, 0x1e, 0xfe, 0xa1, - 0xf9, 0x1e, 0xfe, 0xa1, 0xf7, 0x1e, 0xfe, 0xa1, 0xf9, 0x1e, 0xff, 0xa1, - 0xf7, 0x1e, 0xff, 0xa1, 0xf9, 0x1e, 0x03, 0x83, 0x9b, 0x1e, 0x0a, 0x83, - 0x9b, 0x1e, 0x0f, 0x83, 0x9b, 0x1e, 0x14, 0x83, 0x9b, 0x1e, 0x17, 0x83, - 0x9b, 0x1e, 0x1b, 0x83, 0x9b, 0x1e, 0x1e, 0x83, 0x9b, 0x1e, 0x20, 0x83, - 0x9c, 0x1e, 0x23, 0x83, 0x9b, 0x1e, 0x25, 0x83, 0x9c, 0x1e, 0x27, 0x83, - 0x9b, 0x1e, 0x29, 0x83, 0x9c, 0x1e, 0x2b, 0x83, 0x9b, 0x1e, 0x2d, 0x83, - 0x9c, 0x1e, 0x2f, 0x83, 0x9b, 0x1e, 0x31, 0x83, 0x9c, 0x1e, 0x32, 0x83, - 0x9b, 0x1e, 0x34, 0x83, 0x9c, 0x1e, 0x35, 0x83, 0x9b, 0x1e, 0x37, 0x83, - 0x9c, 0x1e, 0x38, 0x83, 0x9b, 0x1e, 0x3a, 0x83, 0x9c, 0x1e, 0x3b, 0x83, - 0x9b, 0x1e, 0x3c, 0x83, 0x9c, 0x1e, 0x3e, 0x83, 0x9b, 0x1e, 0x3f, 0x83, - 0x9c, 0x1e, 0x40, 0x83, 0x9b, 0x1e, 0x42, 0x83, 0x9c, 0x1e, 0x43, 0x83, - 0x9b, 0x1e, 0x44, 0x83, 0x9c, 0x1e, 0x45, 0x83, 0x9b, 0x1e, 0x46, 0x83, - 0x9c, 0x1e, 0x47, 0x83, 0x9b, 0x1e, 0x48, 0x83, 0x9c, 0x1e, 0x49, 0x83, - 0x9b, 0x1e, 0x4a, 0x83, 0x9c, 0x1e, 0x4b, 0x83, 0x9b, 0x1e, 0x4c, 0x83, - 0x9c, 0x1e, 0x4d, 0x83, 0x9b, 0x1e, 0x4e, 0x83, 0x9c, 0x1e, 0x4f, 0x83, - 0x9b, 0x1e, 0x50, 0x83, 0x9c, 0x1e, 0x51, 0x83, 0x9b, 0x1e, 0x52, 0x83, - 0x9c, 0x1e, 0x53, 0x83, 0x9b, 0x1e, 0x54, 0x83, 0x9c, 0x1e, 0x55, 0x83, - 0x9b, 0x1e, 0x56, 0x83, 0x9c, 0x1e, 0x57, 0x83, 0x9b, 0x1e, 0x58, 0x83, - 0x9c, 0x1e, 0x58, 0x83, 0x9b, 0x1e, 0x59, 0x83, 0x9c, 0x1e, 0x5a, 0x83, - 0x9b, 0x1e, 0x5b, 0x83, 0x9c, 0x1e, 0x5c, 0x83, 0x9b, 0x1e, 0x5d, 0x83, - 0x9c, 0x1e, 0x5d, 0x83, 0x9b, 0x1e, 0x5e, 0x83, 0x9c, 0x1e, 0x5f, 0x83, - 0x9b, 0x1e, 0x60, 0x83, 0x9c, 0x1e, 0x60, 0x83, 0x9b, 0x1e, 0x61, 0x83, - 0x9c, 0x1e, 0x62, 0x83, 0x9b, 0x1e, 0x63, 0x83, 0x9c, 0x1e, 0x63, 0x83, - 0x9b, 0x1e, 0x64, 0x83, 0x9c, 0x1e, 0x65, 0x83, 0x9b, 0x1e, 0x66, 0x83, - 0x9c, 0x1e, 0x66, 0x83, 0x9b, 0x1e, 0x67, 0x83, 0x9c, 0x1e, 0x68, 0x83, - 0x9b, 0x1e, 0x68, 0x83, 0x9c, 0x1e, 0x69, 0x83, 0x9b, 0x1e, 0x6a, 0x83, - 0x9c, 0x1e, 0x6a, 0x83, 0x9b, 0x1e, 0x6b, 0x83, 0x9c, 0x1e, 0x6c, 0x83, - 0x9b, 0x1e, 0x6c, 0x83, 0x9c, 0x1e, 0x6d, 0x83, 0x9b, 0x1e, 0x6e, 0x83, - 0x9c, 0x1e, 0x6e, 0x83, 0x9b, 0x1e, 0x6f, 0x83, 0x9c, 0x1e, 0x70, 0x83, - 0x9b, 0x1e, 0x70, 0x83, 0x9c, 0x1e, 0x71, 0x83, 0x9b, 0x1e, 0x72, 0x83, - 0x9c, 0x1e, 0x72, 0x83, 0x9b, 0x1e, 0x73, 0x83, 0x9c, 0x1e, 0x73, 0x83, - 0x9b, 0x1e, 0x74, 0x83, 0x9c, 0x1e, 0x75, 0x83, 0x9b, 0x1e, 0x75, 0x83, - 0x9c, 0x1e, 0x76, 0x83, 0x9b, 0x1e, 0x76, 0x83, 0x9c, 0x1e, 0x77, 0x83, - 0x9b, 0x1e, 0x78, 0x83, 0x9c, 0x1e, 0x78, 0x83, 0x9b, 0x1e, 0x79, 0x83, - 0x9c, 0x1e, 0x79, 0x83, 0x9b, 0x1e, 0x7a, 0x83, 0x9c, 0x1e, 0x7a, 0x83, - 0x9b, 0x1e, 0x7b, 0x83, 0x9c, 0x1e, 0x7c, 0x83, 0x9b, 0x1e, 0x7c, 0x83, - 0x9c, 0x1e, 0x7d, 0x83, 0x9b, 0x1e, 0x7d, 0x83, 0x9c, 0x1e, 0x7e, 0x83, - 0x9b, 0x1e, 0x7e, 0x83, 0x9c, 0x1e, 0x7f, 0x83, 0x9b, 0x1e, 0x7f, 0x83, - 0x9c, 0x1e, 0x80, 0x83, 0x9b, 0x1e, 0x81, 0x83, 0x9c, 0x1e, 0x81, 0x83, - 0x9b, 0x1e, 0x82, 0x83, 0x9c, 0x1e, 0x82, 0x83, 0x9b, 0x1e, 0x83, 0x83, - 0x9c, 0x1e, 0x83, 0x83, 0x9b, 0x1e, 0x84, 0x83, 0x9c, 0x1e, 0x84, 0x83, - 0x9b, 0x1e, 0x85, 0x83, 0x9c, 0x1e, 0x85, 0x83, 0x9b, 0x1e, 0x86, 0x83, - 0x9c, 0x1e, 0x86, 0x83, 0x9b, 0x1e, 0x87, 0x83, 0x9c, 0x1e, 0x87, 0x83, - 0x9b, 0x1e, 0x88, 0x83, 0x9c, 0x1e, 0x88, 0x83, 0x9b, 0x1e, 0x89, 0x83, - 0x9c, 0x1e, 0x89, 0x83, 0x9b, 0x1e, 0x8a, 0x83, 0x9c, 0x1e, 0x8a, 0x83, - 0x9b, 0x1e, 0x8b, 0x83, 0x9c, 0x1e, 0x8b, 0x83, 0x9b, 0x1e, 0x8c, 0x83, - 0x9c, 0x1e, 0x8c, 0x83, 0x9b, 0x1e, 0x8d, 0x83, 0x9c, 0x1e, 0x8d, 0x83, - 0x9b, 0x1e, 0x8e, 0x83, 0x9c, 0x1e, 0x8e, 0x83, 0x9b, 0x1e, 0x8e, 0x83, - 0x9c, 0x1e, 0x8f, 0x83, 0x9b, 0x1e, 0x8f, 0x83, 0x9c, 0x1e, 0x90, 0x83, - 0x9b, 0x1e, 0x90, 0x83, 0x9c, 0x1e, 0x91, 0x83, 0x9b, 0x1e, 0x91, 0x83, - 0x9c, 0x1e, 0x92, 0x83, 0x9b, 0x1e, 0x92, 0x83, 0x9c, 0x1e, 0x93, 0x83, - 0x9b, 0x1e, 0x93, 0x83, 0x9c, 0x1e, 0x94, 0x83, 0x9b, 0x1e, 0x94, 0x83, - 0x9c, 0x1e, 0x94, 0x83, 0x9b, 0x1e, 0x95, 0x83, 0x9c, 0x1e, 0x95, 0x83, - 0x9b, 0x1e, 0x96, 0x83, 0x9c, 0x1e, 0x96, 0x83, 0x9b, 0x1e, 0x97, 0x83, - 0x9c, 0x1e, 0x97, 0x83, 0x9b, 0x1e, 0x98, 0x83, 0x9c, 0x1e, 0x98, 0x83, - 0x9b, 0x1e, 0x98, 0x83, 0x9c, 0x1e, 0x99, 0x83, 0x9b, 0x1e, 0x99, 0x83, - 0x9c, 0x1e, 0x9a, 0x83, 0x9b, 0x1e, 0x9a, 0x83, 0x9c, 0x1e, 0x9a, 0x83, - 0x9b, 0x1e, 0x9b, 0x83, 0x9c, 0x1e, 0x9b, 0x83, 0x9b, 0x1e, 0x9c, 0x83, - 0x9c, 0x1e, 0x9c, 0x83, 0x9c, 0x1e, 0x9d, 0x83, 0x9d, 0x1e, 0x9d, 0x83, - 0x9c, 0x1e, 0x9d, 0x83, 0x9d, 0x1e, 0x9e, 0x83, 0x9c, 0x1e, 0x9e, 0x83, - 0x9d, 0x1e, 0x9f, 0x83, 0x9c, 0x1e, 0x9f, 0x83, 0x9d, 0x1e, 0x9f, 0x83, - 0x9c, 0x1e, 0xa0, 0x83, 0x9d, 0x1e, 0xa0, 0x83, 0x9c, 0x1e, 0xa1, 0x83, - 0x9d, 0x1e, 0xa1, 0x83, 0x9c, 0x1e, 0xa1, 0x83, 0x9d, 0x1e, 0xa2, 0x83, - 0x9c, 0x1e, 0xa2, 0x83, 0x9d, 0x1e, 0xa3, 0x83, 0x9c, 0x1e, 0xa3, 0x83, - 0x9d, 0x1e, 0xa3, 0x84, 0xa0, 0x1e, 0xa4, 0x84, 0xa1, 0x1e, 0xa4, 0x84, - 0xa0, 0x1e, 0xa5, 0x84, 0xa1, 0x1e, 0xa5, 0x84, 0xa0, 0x1e, 0xa5, 0x84, - 0xa1, 0x1e, 0xa6, 0x84, 0xa0, 0x1e, 0xa6, 0x84, 0xa1, 0x1e, 0xa6, 0x84, - 0xa0, 0x1e, 0xa7, 0x84, 0xa1, 0x1e, 0xa7, 0x85, 0xa4, 0x1e, 0xa8, 0x84, - 0xa1, 0x1e, 0xa8, 0x85, 0xa4, 0x1e, 0xa8, 0x85, 0xa4, 0x1e, 0xa9, 0x85, - 0xa4, 0x1e, 0xa9, 0x85, 0xa4, 0x1e, 0xaa, 0x85, 0xa4, 0x1e, 0xaa, 0x85, - 0xa4, 0x1e, 0xaa, 0x85, 0xa4, 0x1e, 0xab, 0x86, 0xa8, 0x1e, 0xab, 0x85, - 0xa4, 0x1e, 0xab, 0x86, 0xa8, 0x1e, 0xac, 0x86, 0xa7, 0x1e, 0xac, 0x86, - 0xa8, 0x1e, 0xac, 0x86, 0xa7, 0x1e, 0xad, 0x86, 0xa8, 0x1e, 0xad, 0x86, - 0xa7, 0x1e, 0xae, 0x86, 0xa8, 0x1e, 0xae, 0x87, 0xab, 0x1e, 0xae, 0x87, - 0xab, 0x1e, 0xaf, 0x87, 0xab, 0x1e, 0xaf, 0x87, 0xab, 0x1e, 0xaf, 0x87, - 0xab, 0x1e, 0xb0, 0x87, 0xab, 0x1e, 0xb0, 0x87, 0xab, 0x1e, 0xb0, 0x87, - 0xab, 0x1e, 0xb1, 0x87, 0xab, 0x1e, 0xb1, 0x87, 0xab, 0x1e, 0xb2, 0x88, - 0xaf, 0x1e, 0xb2, 0x87, 0xab, 0x1e, 0xb2, 0x88, 0xaf, 0x1e, 0xb3, 0x87, - 0xab, 0x1e, 0xb3, 0x88, 0xaf, 0x1e, 0xb3, 0x88, 0xae, 0x1e, 0xb4, 0x88, - 0xaf, 0x1e, 0xb4, 0x88, 0xae, 0x1e, 0xb4, 0x88, 0xaf, 0x1e, 0xb5, 0x88, - 0xae, 0x1e, 0xb5, 0x88, 0xaf, 0x1e, 0xb5, 0x89, 0xb2, 0x1e, 0xb6, 0x89, - 0xb2, 0x1e, 0xb6, 0x89, 0xb2, 0x1e, 0xb6, 0x89, 0xb2, 0x1e, 0xb7, 0x89, - 0xb2, 0x1e, 0xb7, 0x89, 0xb2, 0x1e, 0xb7, 0x89, 0xb2, 0x1e, 0xb8, 0x89, - 0xb2, 0x1e, 0xb8, 0x89, 0xb2, 0x1e, 0xb8, 0x89, 0xb2, 0x1e, 0xb9, 0x8a, - 0xb5, 0x1e, 0xb9, 0x89, 0xb2, 0x1e, 0xb9, 0x8a, 0xb5, 0x1e, 0xba, 0x8a, - 0xb5, 0x1e, 0xba, 0x8a, 0xb5, 0x1e, 0xba, 0x8a, 0xb5, 0x1e, 0xbb, 0x8a, - 0xb5, 0x1e, 0xbb, 0x8a, 0xb5, 0x1e, 0xbb, 0x8a, 0xb5, 0x1e, 0xbc, 0x8b, - 0xb8, 0x1e, 0xbc, 0x8a, 0xb5, 0x1e, 0xbc, 0x8b, 0xb8, 0x1e, 0xbd, 0x8b, - 0xb8, 0x1e, 0xbd, 0x8b, 0xb8, 0x1e, 0xbd, 0x8b, 0xb8, 0x1e, 0xbe, 0x8b, - 0xb8, 0x1e, 0xbe, 0x8b, 0xb8, 0x1e, 0xbe, 0x8b, 0xb8, 0x1e, 0xbf, 0x8c, - 0xbb, 0x1e, 0xbf, 0x8c, 0xbc, 0x1e, 0xbf, 0x8c, 0xbb, 0x1e, 0xc0, 0x8c, - 0xbc, 0x1e, 0xc0, 0x8c, 0xbb, 0x1e, 0xc0, 0x8c, 0xbc, 0x1e, 0xc1, 0x8c, - 0xbb, 0x1e, 0xc1, 0x8c, 0xbc, 0x1e, 0xc1, 0x8c, 0xbb, 0x1e, 0xc1, 0x8c, - 0xbc, 0x1e, 0xc2, 0x8c, 0xbb, 0x1e, 0xc2, 0x8c, 0xbc, 0x1e, 0xc2, 0x8d, - 0xbf, 0x1e, 0xc3, 0x8c, 0xbc, 0x1e, 0xc3, 0x8d, 0xbf, 0x1e, 0xc3, 0x8d, - 0xbe, 0x1e, 0xc4, 0x8d, 0xbf, 0x1e, 0xc4, 0x8d, 0xbe, 0x1e, 0xc4, 0x8d, - 0xbf, 0x1e, 0xc5, 0x8d, 0xbe, 0x1e, 0xc5, 0x8d, 0xbf, 0x1e, 0xc5, 0x8e, - 0xc1, 0x1e, 0xc6, 0x8d, 0xbf, 0x1e, 0xc6, 0x8e, 0xc1, 0x1e, 0xc6, 0x8e, - 0xc1, 0x1e, 0xc6, 0x8e, 0xc1, 0x1e, 0xc7, 0x8e, 0xc1, 0x1e, 0xc7, 0x8e, - 0xc1, 0x1e, 0xc7, 0x8e, 0xc1, 0x1e, 0xc8, 0x8e, 0xc1, 0x1e, 0xc8, 0x8f, - 0xc4, 0x1e, 0xc8, 0x8f, 0xc5, 0x1e, 0xc9, 0x8f, 0xc4, 0x1e, 0xc9, 0x8f, - 0xc5, 0x1e, 0xc9, 0x8f, 0xc4, 0x1e, 0xc9, 0x8f, 0xc5, 0x1e, 0xca, 0x8f, - 0xc4, 0x1e, 0xca, 0x8f, 0xc5, 0x1e, 0xca, 0x8f, 0xc4, 0x1e, 0xcb, 0x8f, - 0xc5, 0x1e, 0xcb, 0x90, 0xc7, 0x1e, 0xcb, 0x8f, 0xc5, 0x1e, 0xcc, 0x90, - 0xc7, 0x1e, 0xcc, 0x8f, 0xc5, 0x1e, 0xcc, 0x90, 0xc7, 0x1e, 0xcc, 0x90, - 0xc7, 0x1e, 0xcd, 0x90, 0xc7, 0x1e, 0xcd, 0x90, 0xc7, 0x1e, 0xcd, 0x90, - 0xc7, 0x1e, 0xce, 0x91, 0xca, 0x1e, 0xce, 0x90, 0xc7, 0x1e, 0xce, 0x91, - 0xca, 0x1e, 0xce, 0x90, 0xc7, 0x1e, 0xcf, 0x91, 0xca, 0x1e, 0xcf, 0x91, - 0xca, 0x1e, 0xcf, 0x91, 0xca, 0x1e, 0xd0, 0x91, 0xca, 0x1e, 0xd0, 0x91, - 0xca, 0x1e, 0xd0, 0x92, 0xcd, 0x1e, 0xd0, 0x92, 0xcd, 0x1e, 0xd1, 0x92, - 0xcd, 0x1e, 0xd1, 0x92, 0xcd, 0x1e, 0xd1, 0x92, 0xcd, 0x1e, 0xd2, 0x92, - 0xcd, 0x1e, 0xd2, 0x92, 0xcd, 0x1e, 0xd2, 0x92, 0xcd, 0x1e, 0xd2, 0x92, - 0xcd, 0x1e, 0xd3, 0x92, 0xcd, 0x1e, 0xd3, 0x92, 0xcd, 0x1e, 0xd3, 0x92, - 0xcd, 0x1e, 0xd4, 0x93, 0xd0, 0x1e, 0xd4, 0x92, 0xcd, 0x1e, 0xd4, 0x93, - 0xd0, 0x1e, 0xd4, 0x93, 0xcf, 0x1e, 0xd5, 0x93, 0xd0, 0x1e, 0xd5, 0x93, - 0xcf, 0x1e, 0xd5, 0x93, 0xd0, 0x1e, 0xd6, 0x93, 0xcf, 0x1e, 0xd6, 0x93, - 0xd0, 0x1e, 0xd6, 0x94, 0xd2, 0x1e, 0xd6, 0x94, 0xd2, 0x1e, 0xd7, 0x94, - 0xd2, 0x1e, 0xd7, 0x94, 0xd2, 0x1e, 0xd7, 0x94, 0xd2, 0x1e, 0xd7, 0x94, - 0xd2, 0x1e, 0xd8, 0x94, 0xd2, 0x1e, 0xd8, 0x94, 0xd2, 0x1e, 0xd8, 0x94, - 0xd2, 0x1e, 0xd9, 0x94, 0xd2, 0x1e, 0xd9, 0x94, 0xd5, 0x1e, 0xd9, 0x94, - 0xd2, 0x1e, 0xd9, 0x94, 0xd5, 0x1e, 0xda, 0x94, 0xd2, 0x1e, 0xda, 0x94, - 0xd5, 0x1e, 0xda, 0x94, 0xd5, 0x1e, 0xda, 0x94, 0xd5, 0x1e, 0xdb, 0x94, - 0xd5, 0x1e, 0xdb, 0x94, 0xd5, 0x1e, 0xdb, 0x95, 0xd7, 0x1e, 0xdb, 0x94, - 0xd5, 0x1e, 0xdc, 0x95, 0xd7, 0x1e, 0xdc, 0x94, 0xd5, 0x1e, 0xdc, 0x95, - 0xd7, 0x1e, 0xdd, 0x95, 0xd7, 0x1e, 0xdd, 0x95, 0xd7, 0x1e, 0xdd, 0x95, - 0xd7, 0x1e, 0xdd, 0x95, 0xd7, 0x1e, 0xde, 0x95, 0xd7, 0x1e, 0xde, 0x95, - 0xd7, 0x1e, 0xde, 0x96, 0xda, 0x1e, 0xde, 0x96, 0xda, 0x1e, 0xdf, 0x96, - 0xda, 0x1e, 0xdf, 0x96, 0xda, 0x1e, 0xdf, 0x96, 0xda, 0x1e, 0xdf, 0x96, - 0xda, 0x1e, 0xe0, 0x96, 0xda, 0x1e, 0xe0, 0x96, 0xda, 0x1e, 0xe0, 0x96, - 0xda, 0x1e, 0xe1, 0x96, 0xda, 0x1e, 0xe1, 0x97, 0xdd, 0x1e, 0xe1, 0x96, - 0xda, 0x1e, 0xe1, 0x97, 0xdd, 0x1e, 0xe2, 0x96, 0xda, 0x1e, 0xe2, 0x97, - 0xdd, 0x1e, 0xe2, 0x97, 0xdc, 0x1e, 0xe2, 0x97, 0xdd, 0x1e, 0xe3, 0x97, - 0xdc, 0x1e, 0xe3, 0x97, 0xdd, 0x1e, 0xe3, 0x98, 0xdf, 0x1e, 0xe3, 0x97, - 0xdd, 0x1e, 0xe4, 0x98, 0xdf, 0x1e, 0xe4, 0x97, 0xdd, 0x1e, 0xe4, 0x98, - 0xdf, 0x1e, 0xe4, 0x98, 0xdf, 0x1e, 0xe5, 0x98, 0xdf, 0x1e, 0xe5, 0x98, - 0xdf, 0x1e, 0xe5, 0x98, 0xdf, 0x1e, 0xe5, 0x99, 0xe1, 0x1e, 0xe6, 0x99, - 0xe2, 0x1e, 0xe6, 0x99, 0xe1, 0x1e, 0xe6, 0x99, 0xe2, 0x1e, 0xe6, 0x99, - 0xe1, 0x1e, 0xe7, 0x99, 0xe2, 0x1e, 0xe7, 0x99, 0xe1, 0x1e, 0xe7, 0x99, - 0xe2, 0x1e, 0xe7, 0x99, 0xe1, 0x1e, 0xe8, 0x99, 0xe2, 0x1e, 0xe8, 0x9a, - 0xe4, 0x1e, 0xe8, 0x99, 0xe2, 0x1e, 0xe8, 0x9a, 0xe4, 0x1e, 0xe9, 0x99, - 0xe2, 0x1e, 0xe9, 0x9a, 0xe4, 0x1e, 0xe9, 0x9a, 0xe4, 0x1e, 0xe9, 0x9a, - 0xe4, 0x1e, 0xea, 0x9a, 0xe4, 0x1e, 0xea, 0x9a, 0xe4, 0x1e, 0xea, 0x9a, - 0xe6, 0x1e, 0xea, 0x9a, 0xe4, 0x1e, 0xeb, 0x9a, 0xe6, 0x1e, 0xeb, 0x9a, - 0xe4, 0x1e, 0xeb, 0x9a, 0xe6, 0x1e, 0xeb, 0x9a, 0xe4, 0x1e, 0xec, 0x9a, - 0xe6, 0x1e, 0xec, 0x9a, 0xe6, 0x1e, 0xec, 0x9a, 0xe6, 0x1e, 0xec, 0x9a, - 0xe6, 0x1e, 0xec, 0x9a, 0xe6, 0x1e, 0xed, 0x9b, 0xe8, 0x1e, 0xed, 0x9b, - 0xe9, 0x1e, 0xed, 0x9b, 0xe8, 0x1e, 0xed, 0x9b, 0xe9, 0x1e, 0xee, 0x9b, - 0xe8, 0x1e, 0xee, 0x9b, 0xe9, 0x1e, 0xee, 0x9b, 0xe8, 0x1e, 0xee, 0x9b, - 0xe9, 0x1e, 0xef, 0x9b, 0xe8, 0x1e, 0xef, 0x9b, 0xe9, 0x1e, 0xef, 0x9c, - 0xeb, 0x1e, 0xef, 0x9b, 0xe9, 0x1e, 0xf0, 0x9c, 0xeb, 0x1e, 0xf0, 0x9b, - 0xe9, 0x1e, 0xf0, 0x9c, 0xeb, 0x1e, 0xf0, 0x9c, 0xeb, 0x1e, 0xf1, 0x9c, - 0xeb, 0x1e, 0xf1, 0x9c, 0xeb, 0x1e, 0xf1, 0x9c, 0xeb, 0x1e, 0xf1, 0x9d, - 0xed, 0x1e, 0xf2, 0x9d, 0xed, 0x1e, 0xf2, 0x9d, 0xed, 0x1e, 0xf2, 0x9d, - 0xed, 0x1e, 0xf2, 0x9d, 0xed, 0x1e, 0xf2, 0x9d, 0xed, 0x1e, 0xf3, 0x9d, - 0xed, 0x1e, 0xf3, 0x9d, 0xed, 0x1e, 0xf3, 0x9d, 0xed, 0x1e, 0xf3, 0x9d, - 0xed, 0x1e, 0xf4, 0x9e, 0xef, 0x1e, 0xf4, 0x9d, 0xed, 0x1e, 0xf4, 0x9e, - 0xef, 0x1e, 0xf4, 0x9d, 0xed, 0x1e, 0xf5, 0x9e, 0xef, 0x1e, 0xf5, 0x9d, - 0xed, 0x1e, 0xf5, 0x9e, 0xef, 0x1e, 0xf5, 0x9e, 0xef, 0x1e, 0xf5, 0x9e, - 0xef, 0x1e, 0xf6, 0x9e, 0xef, 0x1e, 0xf6, 0x9e, 0xef, 0x1e, 0xf6, 0x9f, - 0xf2, 0x1e, 0xf6, 0x9e, 0xef, 0x1e, 0xf7, 0x9f, 0xf2, 0x1e, 0xf7, 0x9e, - 0xef, 0x1e, 0xf7, 0x9f, 0xf2, 0x1e, 0xf7, 0x9f, 0xf1, 0x1e, 0xf8, 0x9f, - 0xf2, 0x1e, 0xf8, 0x9f, 0xf1, 0x1e, 0xf8, 0x9f, 0xf2, 0x1e, 0xf8, 0x9f, - 0xf4, 0x1e, 0xf8, 0x9f, 0xf4, 0x1e, 0xf9, 0x9f, 0xf4, 0x1e, 0xf9, 0x9f, - 0xf4, 0x1e, 0xf9, 0x9f, 0xf4, 0x1e, 0xf9, 0x9f, 0xf4, 0x1e, 0xfa, 0x9f, - 0xf4, 0x1e, 0xfa, 0x9f, 0xf4, 0x1e, 0xfa, 0x9f, 0xf4, 0x1e, 0xfa, 0x9f, - 0xf4, 0x1e, 0xfa, 0xa0, 0xf6, 0x1e, 0xfb, 0x9f, 0xf4, 0x1e, 0xfb, 0xa0, - 0xf6, 0x1e, 0xfb, 0x9f, 0xf4, 0x1e, 0xfb, 0xa0, 0xf6, 0x1e, 0xfc, 0xa0, - 0xf6, 0x1e, 0xfc, 0xa0, 0xf6, 0x1e, 0xfc, 0xa0, 0xf6, 0x1e, 0xfc, 0xa0, - 0xf6, 0x1e, 0xfc, 0xa1, 0xf8, 0x1e, 0xfd, 0xa0, 0xf6, 0x1e, 0xfd, 0xa1, - 0xf8, 0x1e, 0xfd, 0xa0, 0xf6, 0x1e, 0xfd, 0xa1, 0xf8, 0x1e, 0xfe, 0xa0, - 0xf6, 0x1e, 0xfe, 0xa1, 0xf8, 0x1e, 0xfe, 0xa1, 0xf8, 0x1e, 0xfe, 0xa1, - 0xf8, 0x1e, 0xfe, 0xa2, 0xfa, 0x1e, 0xff, 0xa2, 0xfa, 0x1e, 0xff, 0xa2, - 0xfa, 0x1e, 0x03, 0x84, 0x9b, 0x1f, 0x0a, 0x84, 0x9b, 0x1f, 0x0f, 0x84, - 0x9b, 0x1f, 0x14, 0x84, 0x9b, 0x1f, 0x17, 0x84, 0x9b, 0x1f, 0x1b, 0x84, - 0x9b, 0x1f, 0x1e, 0x84, 0x9b, 0x1f, 0x20, 0x86, 0x9b, 0x1f, 0x23, 0x84, - 0x9b, 0x1f, 0x25, 0x86, 0x9b, 0x1f, 0x27, 0x84, 0x9b, 0x1f, 0x29, 0x86, - 0x9b, 0x1f, 0x2b, 0x84, 0x9b, 0x1f, 0x2d, 0x86, 0x9b, 0x1f, 0x2f, 0x84, - 0x9b, 0x1f, 0x31, 0x86, 0x9b, 0x1f, 0x32, 0x84, 0x9b, 0x1f, 0x34, 0x86, - 0x9b, 0x1f, 0x35, 0x84, 0x9b, 0x1f, 0x37, 0x86, 0x9b, 0x1f, 0x38, 0x84, - 0x9b, 0x1f, 0x3a, 0x86, 0x9b, 0x1f, 0x3b, 0x84, 0x9b, 0x1f, 0x3c, 0x86, - 0x9b, 0x1f, 0x3e, 0x84, 0x9b, 0x1f, 0x3f, 0x86, 0x9b, 0x1f, 0x40, 0x84, - 0x9b, 0x1f, 0x42, 0x86, 0x9b, 0x1f, 0x43, 0x84, 0x9b, 0x1f, 0x44, 0x86, - 0x9b, 0x1f, 0x45, 0x84, 0x9b, 0x1f, 0x46, 0x86, 0x9b, 0x1f, 0x47, 0x84, - 0x9b, 0x1f, 0x48, 0x86, 0x9b, 0x1f, 0x49, 0x84, 0x9b, 0x1f, 0x4a, 0x86, - 0x9b, 0x1f, 0x4b, 0x84, 0x9b, 0x1f, 0x4c, 0x86, 0x9b, 0x1f, 0x4d, 0x84, - 0x9b, 0x1f, 0x4e, 0x86, 0x9b, 0x1f, 0x4f, 0x84, 0x9b, 0x1f, 0x50, 0x86, - 0x9b, 0x1f, 0x51, 0x84, 0x9b, 0x1f, 0x52, 0x86, 0x9b, 0x1f, 0x53, 0x84, - 0x9b, 0x1f, 0x54, 0x86, 0x9b, 0x1f, 0x55, 0x84, 0x9b, 0x1f, 0x56, 0x86, - 0x9b, 0x1f, 0x57, 0x84, 0x9b, 0x1f, 0x58, 0x86, 0x9b, 0x1f, 0x58, 0x84, - 0x9b, 0x1f, 0x59, 0x86, 0x9b, 0x1f, 0x5a, 0x84, 0x9b, 0x1f, 0x5b, 0x84, - 0x9c, 0x1f, 0x5c, 0x84, 0x9b, 0x1f, 0x5d, 0x84, 0x9c, 0x1f, 0x5d, 0x84, - 0x9b, 0x1f, 0x5e, 0x84, 0x9c, 0x1f, 0x5f, 0x84, 0x9b, 0x1f, 0x60, 0x84, - 0x9c, 0x1f, 0x60, 0x84, 0x9b, 0x1f, 0x61, 0x84, 0x9c, 0x1f, 0x62, 0x84, - 0x9b, 0x1f, 0x63, 0x84, 0x9c, 0x1f, 0x63, 0x84, 0x9b, 0x1f, 0x64, 0x84, - 0x9c, 0x1f, 0x65, 0x84, 0x9b, 0x1f, 0x66, 0x84, 0x9c, 0x1f, 0x66, 0x84, - 0x9b, 0x1f, 0x67, 0x84, 0x9c, 0x1f, 0x68, 0x84, 0x9b, 0x1f, 0x68, 0x84, - 0x9c, 0x1f, 0x69, 0x84, 0x9b, 0x1f, 0x6a, 0x84, 0x9c, 0x1f, 0x6a, 0x84, - 0x9b, 0x1f, 0x6b, 0x84, 0x9c, 0x1f, 0x6c, 0x84, 0x9b, 0x1f, 0x6c, 0x84, - 0x9c, 0x1f, 0x6d, 0x84, 0x9b, 0x1f, 0x6e, 0x84, 0x9c, 0x1f, 0x6e, 0x84, - 0x9b, 0x1f, 0x6f, 0x84, 0x9c, 0x1f, 0x70, 0x84, 0x9b, 0x1f, 0x70, 0x84, - 0x9c, 0x1f, 0x71, 0x84, 0x9b, 0x1f, 0x72, 0x84, 0x9c, 0x1f, 0x72, 0x84, - 0x9b, 0x1f, 0x73, 0x84, 0x9c, 0x1f, 0x73, 0x84, 0x9b, 0x1f, 0x74, 0x84, - 0x9c, 0x1f, 0x75, 0x84, 0x9b, 0x1f, 0x75, 0x84, 0x9c, 0x1f, 0x76, 0x84, - 0x9b, 0x1f, 0x76, 0x84, 0x9c, 0x1f, 0x77, 0x84, 0x9b, 0x1f, 0x78, 0x84, - 0x9c, 0x1f, 0x78, 0x84, 0x9b, 0x1f, 0x79, 0x84, 0x9c, 0x1f, 0x79, 0x84, - 0x9b, 0x1f, 0x7a, 0x84, 0x9c, 0x1f, 0x7a, 0x84, 0x9b, 0x1f, 0x7b, 0x84, - 0x9c, 0x1f, 0x7c, 0x84, 0x9b, 0x1f, 0x7c, 0x84, 0x9c, 0x1f, 0x7d, 0x84, - 0x9b, 0x1f, 0x7d, 0x84, 0x9c, 0x1f, 0x7e, 0x84, 0x9b, 0x1f, 0x7e, 0x84, - 0x9c, 0x1f, 0x7f, 0x84, 0x9b, 0x1f, 0x7f, 0x84, 0x9c, 0x1f, 0x80, 0x84, - 0x9b, 0x1f, 0x81, 0x84, 0x9c, 0x1f, 0x81, 0x84, 0x9b, 0x1f, 0x82, 0x84, - 0x9c, 0x1f, 0x82, 0x84, 0x9b, 0x1f, 0x83, 0x84, 0x9c, 0x1f, 0x83, 0x84, - 0x9b, 0x1f, 0x84, 0x84, 0x9c, 0x1f, 0x84, 0x84, 0x9b, 0x1f, 0x85, 0x84, - 0x9c, 0x1f, 0x85, 0x84, 0x9b, 0x1f, 0x86, 0x84, 0x9c, 0x1f, 0x86, 0x84, - 0x9b, 0x1f, 0x87, 0x84, 0x9c, 0x1f, 0x87, 0x84, 0x9b, 0x1f, 0x88, 0x84, - 0x9c, 0x1f, 0x88, 0x84, 0x9b, 0x1f, 0x89, 0x84, 0x9c, 0x1f, 0x89, 0x84, - 0x9b, 0x1f, 0x8a, 0x84, 0x9c, 0x1f, 0x8a, 0x84, 0x9b, 0x1f, 0x8b, 0x84, - 0x9c, 0x1f, 0x8b, 0x84, 0x9b, 0x1f, 0x8c, 0x84, 0x9c, 0x1f, 0x8c, 0x84, - 0x9b, 0x1f, 0x8d, 0x84, 0x9c, 0x1f, 0x8d, 0x84, 0x9b, 0x1f, 0x8e, 0x84, - 0x9c, 0x1f, 0x8e, 0x84, 0x9b, 0x1f, 0x8e, 0x84, 0x9c, 0x1f, 0x8f, 0x84, - 0x9b, 0x1f, 0x8f, 0x84, 0x9c, 0x1f, 0x90, 0x84, 0x9b, 0x1f, 0x90, 0x84, - 0x9c, 0x1f, 0x91, 0x84, 0x9b, 0x1f, 0x91, 0x84, 0x9c, 0x1f, 0x92, 0x84, - 0x9b, 0x1f, 0x92, 0x84, 0x9c, 0x1f, 0x93, 0x84, 0x9b, 0x1f, 0x93, 0x84, - 0x9c, 0x1f, 0x94, 0x84, 0x9b, 0x1f, 0x94, 0x84, 0x9c, 0x1f, 0x94, 0x84, - 0x9b, 0x1f, 0x95, 0x84, 0x9c, 0x1f, 0x95, 0x84, 0x9b, 0x1f, 0x96, 0x84, - 0x9c, 0x1f, 0x96, 0x84, 0x9b, 0x1f, 0x97, 0x84, 0x9c, 0x1f, 0x97, 0x84, - 0x9b, 0x1f, 0x98, 0x84, 0x9c, 0x1f, 0x98, 0x84, 0x9b, 0x1f, 0x98, 0x84, - 0x9c, 0x1f, 0x99, 0x84, 0x9b, 0x1f, 0x99, 0x84, 0x9c, 0x1f, 0x9a, 0x84, - 0x9b, 0x1f, 0x9a, 0x84, 0x9c, 0x1f, 0x9a, 0x84, 0x9b, 0x1f, 0x9b, 0x84, - 0x9c, 0x1f, 0x9b, 0x84, 0x9b, 0x1f, 0x9c, 0x84, 0x9c, 0x1f, 0x9c, 0x84, - 0x9c, 0x1f, 0x9d, 0x84, 0x9d, 0x1f, 0x9d, 0x84, 0x9d, 0x1f, 0x9d, 0x84, - 0x9d, 0x1f, 0x9e, 0x84, 0x9e, 0x1f, 0x9e, 0x84, 0x9e, 0x1f, 0x9f, 0x84, - 0x9f, 0x1f, 0x9f, 0x84, 0x9e, 0x1f, 0x9f, 0x84, 0x9f, 0x1f, 0xa0, 0x84, - 0x9e, 0x1f, 0xa0, 0x84, 0x9f, 0x1f, 0xa1, 0x84, 0x9e, 0x1f, 0xa1, 0x84, - 0x9f, 0x1f, 0xa1, 0x84, 0x9e, 0x1f, 0xa2, 0x84, 0x9f, 0x1f, 0xa2, 0x84, - 0x9e, 0x1f, 0xa3, 0x84, 0x9f, 0x1f, 0xa3, 0x84, 0x9e, 0x1f, 0xa3, 0x84, - 0x9f, 0x1f, 0xa4, 0x84, 0x9e, 0x1f, 0xa4, 0x84, 0x9f, 0x1f, 0xa5, 0x84, - 0x9e, 0x1f, 0xa5, 0x84, 0x9f, 0x1f, 0xa5, 0x85, 0xa2, 0x1f, 0xa6, 0x84, - 0x9f, 0x1f, 0xa6, 0x85, 0xa2, 0x1f, 0xa6, 0x85, 0xa2, 0x1f, 0xa7, 0x85, - 0xa2, 0x1f, 0xa7, 0x85, 0xa2, 0x1f, 0xa8, 0x85, 0xa2, 0x1f, 0xa8, 0x85, - 0xa2, 0x1f, 0xa8, 0x85, 0xa2, 0x1f, 0xa9, 0x86, 0xa6, 0x1f, 0xa9, 0x86, - 0xa6, 0x1f, 0xaa, 0x86, 0xa6, 0x1f, 0xaa, 0x86, 0xa6, 0x1f, 0xaa, 0x86, - 0xa6, 0x1f, 0xab, 0x86, 0xa6, 0x1f, 0xab, 0x86, 0xa6, 0x1f, 0xab, 0x86, - 0xa6, 0x1f, 0xac, 0x86, 0xa6, 0x1f, 0xac, 0x86, 0xa6, 0x1f, 0xac, 0x87, - 0xaa, 0x1f, 0xad, 0x86, 0xa6, 0x1f, 0xad, 0x87, 0xaa, 0x1f, 0xae, 0x87, - 0xa9, 0x1f, 0xae, 0x87, 0xaa, 0x1f, 0xae, 0x87, 0xa9, 0x1f, 0xaf, 0x87, - 0xaa, 0x1f, 0xaf, 0x87, 0xa9, 0x1f, 0xaf, 0x87, 0xaa, 0x1f, 0xb0, 0x88, - 0xad, 0x1f, 0xb0, 0x88, 0xad, 0x1f, 0xb0, 0x88, 0xad, 0x1f, 0xb1, 0x88, - 0xad, 0x1f, 0xb1, 0x88, 0xad, 0x1f, 0xb2, 0x88, 0xad, 0x1f, 0xb2, 0x88, - 0xad, 0x1f, 0xb2, 0x88, 0xad, 0x1f, 0xb3, 0x88, 0xad, 0x1f, 0xb3, 0x88, - 0xad, 0x1f, 0xb3, 0x89, 0xb0, 0x1f, 0xb4, 0x88, 0xad, 0x1f, 0xb4, 0x89, - 0xb0, 0x1f, 0xb4, 0x88, 0xad, 0x1f, 0xb5, 0x89, 0xb0, 0x1f, 0xb5, 0x89, - 0xb0, 0x1f, 0xb5, 0x89, 0xb0, 0x1f, 0xb6, 0x89, 0xb2, 0x1f, 0xb6, 0x89, - 0xb0, 0x1f, 0xb6, 0x89, 0xb2, 0x1f, 0xb7, 0x89, 0xb0, 0x1f, 0xb7, 0x89, - 0xb2, 0x1f, 0xb7, 0x89, 0xb2, 0x1f, 0xb8, 0x89, 0xb2, 0x1f, 0xb8, 0x89, - 0xb2, 0x1f, 0xb8, 0x89, 0xb2, 0x1f, 0xb9, 0x8a, 0xb3, 0x1f, 0xb9, 0x8a, - 0xb4, 0x1f, 0xb9, 0x8a, 0xb3, 0x1f, 0xba, 0x8a, 0xb4, 0x1f, 0xba, 0x8b, - 0xb7, 0x1f, 0xba, 0x8b, 0xb7, 0x1f, 0xbb, 0x8b, 0xb7, 0x1f, 0xbb, 0x8b, - 0xb7, 0x1f, 0xbb, 0x8b, 0xb7, 0x1f, 0xbc, 0x8b, 0xb7, 0x1f, 0xbc, 0x8b, - 0xb7, 0x1f, 0xbc, 0x8b, 0xb7, 0x1f, 0xbd, 0x8b, 0xb7, 0x1f, 0xbd, 0x8b, - 0xb7, 0x1f, 0xbd, 0x8c, 0xba, 0x1f, 0xbe, 0x8b, 0xb7, 0x1f, 0xbe, 0x8c, - 0xba, 0x1f, 0xbe, 0x8c, 0xba, 0x1f, 0xbf, 0x8c, 0xba, 0x1f, 0xbf, 0x8c, - 0xba, 0x1f, 0xbf, 0x8c, 0xba, 0x1f, 0xc0, 0x8c, 0xba, 0x1f, 0xc0, 0x8c, - 0xba, 0x1f, 0xc0, 0x8d, 0xbd, 0x1f, 0xc1, 0x8c, 0xba, 0x1f, 0xc1, 0x8d, - 0xbd, 0x1f, 0xc1, 0x8c, 0xba, 0x1f, 0xc1, 0x8d, 0xbd, 0x1f, 0xc2, 0x8d, - 0xbd, 0x1f, 0xc2, 0x8d, 0xbd, 0x1f, 0xc2, 0x8d, 0xbd, 0x1f, 0xc3, 0x8d, - 0xbd, 0x1f, 0xc3, 0x8d, 0xbd, 0x1f, 0xc3, 0x8d, 0xbd, 0x1f, 0xc4, 0x8e, - 0xc0, 0x1f, 0xc4, 0x8e, 0xc0, 0x1f, 0xc4, 0x8e, 0xc0, 0x1f, 0xc5, 0x8e, - 0xc0, 0x1f, 0xc5, 0x8e, 0xc0, 0x1f, 0xc5, 0x8e, 0xc0, 0x1f, 0xc6, 0x8e, - 0xc0, 0x1f, 0xc6, 0x8e, 0xc0, 0x1f, 0xc6, 0x8e, 0xc0, 0x1f, 0xc6, 0x8e, - 0xc0, 0x1f, 0xc7, 0x8e, 0xc3, 0x1f, 0xc7, 0x8e, 0xc0, 0x1f, 0xc7, 0x8e, - 0xc3, 0x1f, 0xc8, 0x8e, 0xc3, 0x1f, 0xc8, 0x8e, 0xc3, 0x1f, 0xc8, 0x8e, - 0xc3, 0x1f, 0xc9, 0x8e, 0xc3, 0x1f, 0xc9, 0x8e, 0xc3, 0x1f, 0xc9, 0x8e, - 0xc3, 0x1f, 0xc9, 0x8f, 0xc6, 0x1f, 0xca, 0x8e, 0xc3, 0x1f, 0xca, 0x8f, - 0xc6, 0x1f, 0xca, 0x8f, 0xc6, 0x1f, 0xcb, 0x8f, 0xc6, 0x1f, 0xcb, 0x8f, - 0xc6, 0x1f, 0xcb, 0x8f, 0xc6, 0x1f, 0xcc, 0x8f, 0xc6, 0x1f, 0xcc, 0x8f, - 0xc6, 0x1f, 0xcc, 0x90, 0xc9, 0x1f, 0xcc, 0x90, 0xc9, 0x1f, 0xcd, 0x90, - 0xc9, 0x1f, 0xcd, 0x90, 0xc9, 0x1f, 0xcd, 0x90, 0xc9, 0x1f, 0xce, 0x90, - 0xc9, 0x1f, 0xce, 0x90, 0xc9, 0x1f, 0xce, 0x90, 0xc9, 0x1f, 0xce, 0x90, - 0xc9, 0x1f, 0xcf, 0x90, 0xc9, 0x1f, 0xcf, 0x91, 0xcc, 0x1f, 0xcf, 0x90, - 0xc9, 0x1f, 0xd0, 0x91, 0xcc, 0x1f, 0xd0, 0x90, 0xc9, 0x1f, 0xd0, 0x91, - 0xcc, 0x1f, 0xd0, 0x91, 0xcb, 0x1f, 0xd1, 0x91, 0xcc, 0x1f, 0xd1, 0x91, - 0xcb, 0x1f, 0xd1, 0x91, 0xcc, 0x1f, 0xd2, 0x92, 0xce, 0x1f, 0xd2, 0x92, - 0xce, 0x1f, 0xd2, 0x92, 0xce, 0x1f, 0xd2, 0x92, 0xce, 0x1f, 0xd3, 0x92, - 0xce, 0x1f, 0xd3, 0x92, 0xce, 0x1f, 0xd3, 0x92, 0xce, 0x1f, 0xd4, 0x92, - 0xce, 0x1f, 0xd4, 0x92, 0xce, 0x1f, 0xd4, 0x92, 0xce, 0x1f, 0xd4, 0x92, - 0xce, 0x1f, 0xd5, 0x92, 0xce, 0x1f, 0xd5, 0x93, 0xd1, 0x1f, 0xd5, 0x92, - 0xce, 0x1f, 0xd6, 0x93, 0xd1, 0x1f, 0xd6, 0x93, 0xd1, 0x1f, 0xd6, 0x93, - 0xd1, 0x1f, 0xd6, 0x93, 0xd1, 0x1f, 0xd7, 0x93, 0xd1, 0x1f, 0xd7, 0x93, - 0xd1, 0x1f, 0xd7, 0x93, 0xd1, 0x1f, 0xd7, 0x94, 0xd4, 0x1f, 0xd8, 0x93, - 0xd1, 0x1f, 0xd8, 0x94, 0xd4, 0x1f, 0xd8, 0x93, 0xd1, 0x1f, 0xd9, 0x94, - 0xd4, 0x1f, 0xd9, 0x94, 0xd3, 0x1f, 0xd9, 0x94, 0xd4, 0x1f, 0xd9, 0x94, - 0xd3, 0x1f, 0xda, 0x94, 0xd4, 0x1f, 0xda, 0x95, 0xd6, 0x1f, 0xda, 0x95, - 0xd6, 0x1f, 0xda, 0x95, 0xd6, 0x1f, 0xdb, 0x95, 0xd6, 0x1f, 0xdb, 0x95, - 0xd6, 0x1f, 0xdb, 0x95, 0xd6, 0x1f, 0xdb, 0x95, 0xd6, 0x1f, 0xdc, 0x95, - 0xd6, 0x1f, 0xdc, 0x95, 0xd6, 0x1f, 0xdc, 0x95, 0xd6, 0x1f, 0xdd, 0x96, - 0xd9, 0x1f, 0xdd, 0x95, 0xd6, 0x1f, 0xdd, 0x96, 0xd9, 0x1f, 0xdd, 0x95, - 0xd6, 0x1f, 0xde, 0x96, 0xd9, 0x1f, 0xde, 0x96, 0xd9, 0x1f, 0xde, 0x96, - 0xd9, 0x1f, 0xde, 0x96, 0xd9, 0x1f, 0xdf, 0x96, 0xd9, 0x1f, 0xdf, 0x96, - 0xd9, 0x1f, 0xdf, 0x96, 0xd9, 0x1f, 0xdf, 0x97, 0xdb, 0x1f, 0xe0, 0x96, - 0xd9, 0x1f, 0xe0, 0x97, 0xdb, 0x1f, 0xe0, 0x97, 0xdb, 0x1f, 0xe1, 0x97, - 0xdb, 0x1f, 0xe1, 0x97, 0xdb, 0x1f, 0xe1, 0x97, 0xdb, 0x1f, 0xe1, 0x97, - 0xdb, 0x1f, 0xe2, 0x97, 0xdb, 0x1f, 0xe2, 0x98, 0xde, 0x1f, 0xe2, 0x98, - 0xde, 0x1f, 0xe2, 0x98, 0xde, 0x1f, 0xe3, 0x98, 0xde, 0x1f, 0xe3, 0x98, - 0xde, 0x1f, 0xe3, 0x98, 0xde, 0x1f, 0xe3, 0x98, 0xde, 0x1f, 0xe4, 0x98, - 0xde, 0x1f, 0xe4, 0x98, 0xde, 0x1f, 0xe4, 0x98, 0xde, 0x1f, 0xe4, 0x98, - 0xe0, 0x1f, 0xe5, 0x98, 0xde, 0x1f, 0xe5, 0x98, 0xe0, 0x1f, 0xe5, 0x98, - 0xde, 0x1f, 0xe5, 0x98, 0xe0, 0x1f, 0xe6, 0x98, 0xe0, 0x1f, 0xe6, 0x98, - 0xe0, 0x1f, 0xe6, 0x98, 0xe0, 0x1f, 0xe6, 0x98, 0xe0, 0x1f, 0xe7, 0x99, - 0xe3, 0x1f, 0xe7, 0x98, 0xe0, 0x1f, 0xe7, 0x99, 0xe3, 0x1f, 0xe7, 0x98, - 0xe0, 0x1f, 0xe8, 0x99, 0xe3, 0x1f, 0xe8, 0x99, 0xe2, 0x1f, 0xe8, 0x99, - 0xe3, 0x1f, 0xe8, 0x99, 0xe2, 0x1f, 0xe9, 0x99, 0xe3, 0x1f, 0xe9, 0x9a, - 0xe5, 0x1f, 0xe9, 0x9a, 0xe5, 0x1f, 0xe9, 0x9a, 0xe5, 0x1f, 0xea, 0x9a, - 0xe5, 0x1f, 0xea, 0x9a, 0xe5, 0x1f, 0xea, 0x9a, 0xe5, 0x1f, 0xea, 0x9a, - 0xe5, 0x1f, 0xeb, 0x9a, 0xe5, 0x1f, 0xeb, 0x9a, 0xe5, 0x1f, 0xeb, 0x9a, - 0xe5, 0x1f, 0xeb, 0x9b, 0xe7, 0x1f, 0xec, 0x9a, 0xe5, 0x1f, 0xec, 0x9b, - 0xe7, 0x1f, 0xec, 0x9a, 0xe5, 0x1f, 0xec, 0x9b, 0xe7, 0x1f, 0xec, 0x9a, - 0xe5, 0x1f, 0xed, 0x9b, 0xe7, 0x1f, 0xed, 0x9b, 0xe7, 0x1f, 0xed, 0x9b, - 0xe7, 0x1f, 0xed, 0x9b, 0xe7, 0x1f, 0xee, 0x9b, 0xe7, 0x1f, 0xee, 0x9c, - 0xea, 0x1f, 0xee, 0x9c, 0xea, 0x1f, 0xee, 0x9c, 0xea, 0x1f, 0xef, 0x9c, - 0xea, 0x1f, 0xef, 0x9c, 0xea, 0x1f, 0xef, 0x9c, 0xea, 0x1f, 0xef, 0x9c, - 0xea, 0x1f, 0xf0, 0x9c, 0xea, 0x1f, 0xf0, 0x9c, 0xea, 0x1f, 0xf0, 0x9c, - 0xea, 0x1f, 0xf0, 0x9d, 0xec, 0x1f, 0xf1, 0x9c, 0xea, 0x1f, 0xf1, 0x9d, - 0xec, 0x1f, 0xf1, 0x9c, 0xea, 0x1f, 0xf1, 0x9d, 0xec, 0x1f, 0xf2, 0x9d, - 0xec, 0x1f, 0xf2, 0x9d, 0xec, 0x1f, 0xf2, 0x9d, 0xec, 0x1f, 0xf2, 0x9d, - 0xec, 0x1f, 0xf2, 0x9d, 0xee, 0x1f, 0xf3, 0x9d, 0xec, 0x1f, 0xf3, 0x9d, - 0xee, 0x1f, 0xf3, 0x9d, 0xec, 0x1f, 0xf3, 0x9d, 0xee, 0x1f, 0xf4, 0x9d, - 0xee, 0x1f, 0xf4, 0x9d, 0xee, 0x1f, 0xf4, 0x9d, 0xee, 0x1f, 0xf4, 0x9d, - 0xee, 0x1f, 0xf5, 0x9e, 0xf0, 0x1f, 0xf5, 0x9e, 0xf1, 0x1f, 0xf5, 0x9e, - 0xf0, 0x1f, 0xf5, 0x9e, 0xf1, 0x1f, 0xf5, 0x9e, 0xf0, 0x1f, 0xf6, 0x9e, - 0xf1, 0x1f, 0xf6, 0x9e, 0xf0, 0x1f, 0xf6, 0x9e, 0xf1, 0x1f, 0xf6, 0x9e, - 0xf0, 0x1f, 0xf7, 0x9e, 0xf1, 0x1f, 0xf7, 0x9e, 0xf0, 0x1f, 0xf7, 0x9e, - 0xf1, 0x1f, 0xf7, 0x9f, 0xf3, 0x1f, 0xf8, 0x9e, 0xf1, 0x1f, 0xf8, 0x9f, - 0xf3, 0x1f, 0xf8, 0x9e, 0xf1, 0x1f, 0xf8, 0x9f, 0xf3, 0x1f, 0xf8, 0x9f, - 0xf2, 0x1f, 0xf9, 0x9f, 0xf3, 0x1f, 0xf9, 0x9f, 0xf2, 0x1f, 0xf9, 0x9f, - 0xf3, 0x1f, 0xf9, 0xa0, 0xf5, 0x1f, 0xfa, 0x9f, 0xf3, 0x1f, 0xfa, 0xa0, - 0xf5, 0x1f, 0xfa, 0x9f, 0xf3, 0x1f, 0xfa, 0xa0, 0xf5, 0x1f, 0xfa, 0xa0, - 0xf5, 0x1f, 0xfb, 0xa0, 0xf5, 0x1f, 0xfb, 0xa0, 0xf5, 0x1f, 0xfb, 0xa0, - 0xf5, 0x1f, 0xfb, 0xa1, 0xf7, 0x1f, 0xfc, 0xa1, 0xf7, 0x1f, 0xfc, 0xa1, - 0xf7, 0x1f, 0xfc, 0xa1, 0xf7, 0x1f, 0xfc, 0xa1, 0xf7, 0x1f, 0xfc, 0xa1, - 0xf7, 0x1f, 0xfd, 0xa1, 0xf7, 0x1f, 0xfd, 0xa1, 0xf7, 0x1f, 0xfd, 0xa1, - 0xf7, 0x1f, 0xfd, 0xa1, 0xf7, 0x1f, 0xfe, 0xa1, 0xf9, 0x1f, 0xfe, 0xa1, - 0xf7, 0x1f, 0xfe, 0xa1, 0xf9, 0x1f, 0xfe, 0xa1, 0xf7, 0x1f, 0xfe, 0xa1, - 0xf9, 0x1f, 0xff, 0xa1, 0xf7, 0x1f, 0xff, 0xa1, 0xf9, 0x1f, 0x03, 0x83, - 0x9b, 0x1f, 0x0a, 0x83, 0x9b, 0x1f, 0x0f, 0x83, 0x9b, 0x1f, 0x14, 0x83, - 0x9b, 0x1f, 0x17, 0x83, 0x9b, 0x1f, 0x1b, 0x83, 0x9b, 0x1f, 0x1e, 0x83, - 0x9b, 0x1f, 0x20, 0x83, 0x9c, 0x1f, 0x23, 0x83, 0x9b, 0x1f, 0x25, 0x83, - 0x9c, 0x1f, 0x27, 0x83, 0x9b, 0x1f, 0x29, 0x83, 0x9c, 0x1f, 0x2b, 0x83, - 0x9b, 0x1f, 0x2d, 0x83, 0x9c, 0x1f, 0x2f, 0x83, 0x9b, 0x1f, 0x31, 0x83, - 0x9c, 0x1f, 0x32, 0x83, 0x9b, 0x1f, 0x34, 0x83, 0x9c, 0x1f, 0x35, 0x83, - 0x9b, 0x1f, 0x37, 0x83, 0x9c, 0x1f, 0x38, 0x83, 0x9b, 0x1f, 0x3a, 0x83, - 0x9c, 0x1f, 0x3b, 0x83, 0x9b, 0x1f, 0x3c, 0x83, 0x9c, 0x1f, 0x3e, 0x83, - 0x9b, 0x1f, 0x3f, 0x83, 0x9c, 0x1f, 0x40, 0x83, 0x9b, 0x1f, 0x42, 0x83, - 0x9c, 0x1f, 0x43, 0x83, 0x9b, 0x1f, 0x44, 0x83, 0x9c, 0x1f, 0x45, 0x83, - 0x9b, 0x1f, 0x46, 0x83, 0x9c, 0x1f, 0x47, 0x83, 0x9b, 0x1f, 0x48, 0x83, - 0x9c, 0x1f, 0x49, 0x83, 0x9b, 0x1f, 0x4a, 0x83, 0x9c, 0x1f, 0x4b, 0x83, - 0x9b, 0x1f, 0x4c, 0x83, 0x9c, 0x1f, 0x4d, 0x83, 0x9b, 0x1f, 0x4e, 0x83, - 0x9c, 0x1f, 0x4f, 0x83, 0x9b, 0x1f, 0x50, 0x83, 0x9c, 0x1f, 0x51, 0x83, - 0x9b, 0x1f, 0x52, 0x83, 0x9c, 0x1f, 0x53, 0x83, 0x9b, 0x1f, 0x54, 0x83, - 0x9c, 0x1f, 0x55, 0x83, 0x9b, 0x1f, 0x56, 0x83, 0x9c, 0x1f, 0x57, 0x83, - 0x9b, 0x1f, 0x58, 0x83, 0x9c, 0x1f, 0x58, 0x83, 0x9b, 0x1f, 0x59, 0x83, - 0x9c, 0x1f, 0x5a, 0x83, 0x9b, 0x1f, 0x5b, 0x83, 0x9c, 0x1f, 0x5c, 0x83, - 0x9b, 0x1f, 0x5d, 0x83, 0x9c, 0x1f, 0x5d, 0x83, 0x9b, 0x1f, 0x5e, 0x83, - 0x9c, 0x1f, 0x5f, 0x83, 0x9b, 0x1f, 0x60, 0x83, 0x9c, 0x1f, 0x60, 0x83, - 0x9b, 0x1f, 0x61, 0x83, 0x9c, 0x1f, 0x62, 0x83, 0x9b, 0x1f, 0x63, 0x83, - 0x9c, 0x1f, 0x63, 0x83, 0x9b, 0x1f, 0x64, 0x83, 0x9c, 0x1f, 0x65, 0x83, - 0x9b, 0x1f, 0x66, 0x83, 0x9c, 0x1f, 0x66, 0x83, 0x9b, 0x1f, 0x67, 0x83, - 0x9c, 0x1f, 0x68, 0x83, 0x9b, 0x1f, 0x68, 0x83, 0x9c, 0x1f, 0x69, 0x83, - 0x9b, 0x1f, 0x6a, 0x83, 0x9c, 0x1f, 0x6a, 0x83, 0x9b, 0x1f, 0x6b, 0x83, - 0x9c, 0x1f, 0x6c, 0x83, 0x9b, 0x1f, 0x6c, 0x83, 0x9c, 0x1f, 0x6d, 0x83, - 0x9b, 0x1f, 0x6e, 0x83, 0x9c, 0x1f, 0x6e, 0x83, 0x9b, 0x1f, 0x6f, 0x83, - 0x9c, 0x1f, 0x70, 0x83, 0x9b, 0x1f, 0x70, 0x83, 0x9c, 0x1f, 0x71, 0x83, - 0x9b, 0x1f, 0x72, 0x83, 0x9c, 0x1f, 0x72, 0x83, 0x9b, 0x1f, 0x73, 0x83, - 0x9c, 0x1f, 0x73, 0x83, 0x9b, 0x1f, 0x74, 0x83, 0x9c, 0x1f, 0x75, 0x83, - 0x9b, 0x1f, 0x75, 0x83, 0x9c, 0x1f, 0x76, 0x83, 0x9b, 0x1f, 0x76, 0x83, - 0x9c, 0x1f, 0x77, 0x83, 0x9b, 0x1f, 0x78, 0x83, 0x9c, 0x1f, 0x78, 0x83, - 0x9b, 0x1f, 0x79, 0x83, 0x9c, 0x1f, 0x79, 0x83, 0x9b, 0x1f, 0x7a, 0x83, - 0x9c, 0x1f, 0x7a, 0x83, 0x9b, 0x1f, 0x7b, 0x83, 0x9c, 0x1f, 0x7c, 0x83, - 0x9b, 0x1f, 0x7c, 0x83, 0x9c, 0x1f, 0x7d, 0x83, 0x9b, 0x1f, 0x7d, 0x83, - 0x9c, 0x1f, 0x7e, 0x83, 0x9b, 0x1f, 0x7e, 0x83, 0x9c, 0x1f, 0x7f, 0x83, - 0x9b, 0x1f, 0x7f, 0x83, 0x9c, 0x1f, 0x80, 0x83, 0x9b, 0x1f, 0x81, 0x83, - 0x9c, 0x1f, 0x81, 0x83, 0x9b, 0x1f, 0x82, 0x83, 0x9c, 0x1f, 0x82, 0x83, - 0x9b, 0x1f, 0x83, 0x83, 0x9c, 0x1f, 0x83, 0x83, 0x9b, 0x1f, 0x84, 0x83, - 0x9c, 0x1f, 0x84, 0x83, 0x9b, 0x1f, 0x85, 0x83, 0x9c, 0x1f, 0x85, 0x83, - 0x9b, 0x1f, 0x86, 0x83, 0x9c, 0x1f, 0x86, 0x83, 0x9b, 0x1f, 0x87, 0x83, - 0x9c, 0x1f, 0x87, 0x83, 0x9b, 0x1f, 0x88, 0x83, 0x9c, 0x1f, 0x88, 0x83, - 0x9b, 0x1f, 0x89, 0x83, 0x9c, 0x1f, 0x89, 0x83, 0x9b, 0x1f, 0x8a, 0x83, - 0x9c, 0x1f, 0x8a, 0x83, 0x9b, 0x1f, 0x8b, 0x83, 0x9c, 0x1f, 0x8b, 0x83, - 0x9b, 0x1f, 0x8c, 0x83, 0x9c, 0x1f, 0x8c, 0x83, 0x9b, 0x1f, 0x8d, 0x83, - 0x9c, 0x1f, 0x8d, 0x83, 0x9b, 0x1f, 0x8e, 0x83, 0x9c, 0x1f, 0x8e, 0x83, - 0x9b, 0x1f, 0x8e, 0x83, 0x9c, 0x1f, 0x8f, 0x83, 0x9b, 0x1f, 0x8f, 0x83, - 0x9c, 0x1f, 0x90, 0x83, 0x9b, 0x1f, 0x90, 0x83, 0x9c, 0x1f, 0x91, 0x83, - 0x9b, 0x1f, 0x91, 0x83, 0x9c, 0x1f, 0x92, 0x83, 0x9b, 0x1f, 0x92, 0x83, - 0x9c, 0x1f, 0x93, 0x83, 0x9b, 0x1f, 0x93, 0x83, 0x9c, 0x1f, 0x94, 0x83, - 0x9b, 0x1f, 0x94, 0x83, 0x9c, 0x1f, 0x94, 0x83, 0x9b, 0x1f, 0x95, 0x83, - 0x9c, 0x1f, 0x95, 0x83, 0x9b, 0x1f, 0x96, 0x83, 0x9c, 0x1f, 0x96, 0x83, - 0x9b, 0x1f, 0x97, 0x83, 0x9c, 0x1f, 0x97, 0x83, 0x9b, 0x1f, 0x98, 0x83, - 0x9c, 0x1f, 0x98, 0x83, 0x9b, 0x1f, 0x98, 0x83, 0x9c, 0x1f, 0x99, 0x83, - 0x9b, 0x1f, 0x99, 0x83, 0x9c, 0x1f, 0x9a, 0x83, 0x9b, 0x1f, 0x9a, 0x83, - 0x9c, 0x1f, 0x9a, 0x83, 0x9b, 0x1f, 0x9b, 0x83, 0x9c, 0x1f, 0x9b, 0x83, - 0x9b, 0x1f, 0x9c, 0x83, 0x9c, 0x1f, 0x9c, 0x83, 0x9c, 0x1f, 0x9d, 0x83, - 0x9d, 0x1f, 0x9d, 0x83, 0x9c, 0x1f, 0x9d, 0x83, 0x9d, 0x1f, 0x9e, 0x83, - 0x9c, 0x1f, 0x9e, 0x83, 0x9d, 0x1f, 0x9f, 0x83, 0x9c, 0x1f, 0x9f, 0x83, - 0x9d, 0x1f, 0x9f, 0x83, 0x9c, 0x1f, 0xa0, 0x83, 0x9d, 0x1f, 0xa0, 0x83, - 0x9c, 0x1f, 0xa1, 0x83, 0x9d, 0x1f, 0xa1, 0x83, 0x9c, 0x1f, 0xa1, 0x83, - 0x9d, 0x1f, 0xa2, 0x83, 0x9c, 0x1f, 0xa2, 0x83, 0x9d, 0x1f, 0xa3, 0x83, - 0x9c, 0x1f, 0xa3, 0x83, 0x9d, 0x1f, 0xa3, 0x84, 0xa0, 0x1f, 0xa4, 0x84, - 0xa1, 0x1f, 0xa4, 0x84, 0xa0, 0x1f, 0xa5, 0x84, 0xa1, 0x1f, 0xa5, 0x84, - 0xa0, 0x1f, 0xa5, 0x84, 0xa1, 0x1f, 0xa6, 0x84, 0xa0, 0x1f, 0xa6, 0x84, - 0xa1, 0x1f, 0xa6, 0x84, 0xa0, 0x1f, 0xa7, 0x84, 0xa1, 0x1f, 0xa7, 0x85, - 0xa4, 0x1f, 0xa8, 0x84, 0xa1, 0x1f, 0xa8, 0x85, 0xa4, 0x1f, 0xa8, 0x85, - 0xa4, 0x1f, 0xa9, 0x85, 0xa4, 0x1f, 0xa9, 0x85, 0xa4, 0x1f, 0xaa, 0x85, - 0xa4, 0x1f, 0xaa, 0x85, 0xa4, 0x1f, 0xaa, 0x85, 0xa4, 0x1f, 0xab, 0x86, - 0xa8, 0x1f, 0xab, 0x85, 0xa4, 0x1f, 0xab, 0x86, 0xa8, 0x1f, 0xac, 0x86, - 0xa7, 0x1f, 0xac, 0x86, 0xa8, 0x1f, 0xac, 0x86, 0xa7, 0x1f, 0xad, 0x86, - 0xa8, 0x1f, 0xad, 0x86, 0xa7, 0x1f, 0xae, 0x86, 0xa8, 0x1f, 0xae, 0x87, - 0xab, 0x1f, 0xae, 0x87, 0xab, 0x1f, 0xaf, 0x87, 0xab, 0x1f, 0xaf, 0x87, - 0xab, 0x1f, 0xaf, 0x87, 0xab, 0x1f, 0xb0, 0x87, 0xab, 0x1f, 0xb0, 0x87, - 0xab, 0x1f, 0xb0, 0x87, 0xab, 0x1f, 0xb1, 0x87, 0xab, 0x1f, 0xb1, 0x87, - 0xab, 0x1f, 0xb2, 0x88, 0xaf, 0x1f, 0xb2, 0x87, 0xab, 0x1f, 0xb2, 0x88, - 0xaf, 0x1f, 0xb3, 0x88, 0xae, 0x1f, 0xb3, 0x88, 0xaf, 0x1f, 0xb3, 0x88, - 0xae, 0x1f, 0xb4, 0x88, 0xaf, 0x1f, 0xb4, 0x88, 0xae, 0x1f, 0xb4, 0x88, - 0xaf, 0x1f, 0xb5, 0x89, 0xb2, 0x1f, 0xb5, 0x89, 0xb2, 0x1f, 0xb5, 0x89, - 0xb2, 0x1f, 0xb6, 0x89, 0xb2, 0x1f, 0xb6, 0x89, 0xb2, 0x1f, 0xb6, 0x89, - 0xb2, 0x1f, 0xb7, 0x89, 0xb2, 0x1f, 0xb7, 0x89, 0xb2, 0x1f, 0xb7, 0x89, - 0xb2, 0x1f, 0xb8, 0x89, 0xb2, 0x1f, 0xb8, 0x89, 0xb2, 0x1f, 0xb8, 0x89, - 0xb2, 0x1f, 0xb9, 0x8a, 0xb5, 0x1f, 0xb9, 0x89, 0xb2, 0x1f, 0xb9, 0x8a, - 0xb5, 0x1f, 0xba, 0x8a, 0xb5, 0x1f, 0xba, 0x8a, 0xb5, 0x1f, 0xba, 0x8a, - 0xb5, 0x1f, 0xbb, 0x8a, 0xb5, 0x1f, 0xbb, 0x8a, 0xb5, 0x1f, 0xbb, 0x8a, - 0xb5, 0x1f, 0xbc, 0x8b, 0xb8, 0x1f, 0xbc, 0x8a, 0xb5, 0x1f, 0xbc, 0x8b, - 0xb8, 0x1f, 0xbd, 0x8b, 0xb8, 0x1f, 0xbd, 0x8b, 0xb8, 0x1f, 0xbd, 0x8b, - 0xb8, 0x1f, 0xbe, 0x8b, 0xb8, 0x1f, 0xbe, 0x8b, 0xb8, 0x1f, 0xbe, 0x8b, - 0xb8, 0x1f, 0xbf, 0x8c, 0xbb, 0x1f, 0xbf, 0x8c, 0xbc, 0x1f, 0xbf, 0x8c, - 0xbb, 0x1f, 0xc0, 0x8c, 0xbc, 0x1f, 0xc0, 0x8c, 0xbb, 0x1f, 0xc0, 0x8c, - 0xbc, 0x1f, 0xc1, 0x8c, 0xbb, 0x1f, 0xc1, 0x8c, 0xbc, 0x1f, 0xc1, 0x8c, - 0xbb, 0x1f, 0xc1, 0x8c, 0xbc, 0x1f, 0xc2, 0x8d, 0xbf, 0x1f, 0xc2, 0x8c, - 0xbc, 0x1f, 0xc2, 0x8d, 0xbf, 0x1f, 0xc3, 0x8c, 0xbc, 0x1f, 0xc3, 0x8d, - 0xbf, 0x1f, 0xc3, 0x8d, 0xbe, 0x1f, 0xc4, 0x8d, 0xbf, 0x1f, 0xc4, 0x8d, - 0xbe, 0x1f, 0xc4, 0x8d, 0xbf, 0x1f, 0xc5, 0x8d, 0xbe, 0x1f, 0xc5, 0x8d, - 0xbf, 0x1f, 0xc5, 0x8e, 0xc1, 0x1f, 0xc6, 0x8d, 0xbf, 0x1f, 0xc6, 0x8e, - 0xc1, 0x1f, 0xc6, 0x8e, 0xc1, 0x1f, 0xc6, 0x8e, 0xc1, 0x1f, 0xc7, 0x8e, - 0xc1, 0x1f, 0xc7, 0x8e, 0xc1, 0x1f, 0xc7, 0x8e, 0xc1, 0x1f, 0xc8, 0x8e, - 0xc1, 0x1f, 0xc8, 0x8f, 0xc4, 0x1f, 0xc8, 0x8f, 0xc5, 0x1f, 0xc9, 0x8f, - 0xc4, 0x1f, 0xc9, 0x8f, 0xc5, 0x1f, 0xc9, 0x8f, 0xc4, 0x1f, 0xc9, 0x8f, - 0xc5, 0x1f, 0xca, 0x8f, 0xc4, 0x1f, 0xca, 0x8f, 0xc5, 0x1f, 0xca, 0x8f, - 0xc4, 0x1f, 0xcb, 0x8f, 0xc5, 0x1f, 0xcb, 0x90, 0xc7, 0x1f, 0xcb, 0x8f, - 0xc5, 0x1f, 0xcc, 0x90, 0xc7, 0x1f, 0xcc, 0x90, 0xc7, 0x1f, 0xcc, 0x90, - 0xc7, 0x1f, 0xcc, 0x90, 0xc7, 0x1f, 0xcd, 0x90, 0xc7, 0x1f, 0xcd, 0x90, - 0xc7, 0x1f, 0xcd, 0x90, 0xc7, 0x1f, 0xce, 0x91, 0xca, 0x1f, 0xce, 0x90, - 0xc7, 0x1f, 0xce, 0x91, 0xca, 0x1f, 0xce, 0x90, 0xc7, 0x1f, 0xcf, 0x91, - 0xca, 0x1f, 0xcf, 0x91, 0xca, 0x1f, 0xcf, 0x91, 0xca, 0x1f, 0xd0, 0x91, - 0xca, 0x1f, 0xd0, 0x91, 0xca, 0x1f, 0xd0, 0x92, 0xcd, 0x1f, 0xd0, 0x92, - 0xcd, 0x1f, 0xd1, 0x92, 0xcd, 0x1f, 0xd1, 0x92, 0xcd, 0x1f, 0xd1, 0x92, - 0xcd, 0x1f, 0xd2, 0x92, 0xcd, 0x1f, 0xd2, 0x92, 0xcd, 0x1f, 0xd2, 0x92, - 0xcd, 0x1f, 0xd2, 0x92, 0xcd, 0x1f, 0xd3, 0x92, 0xcd, 0x1f, 0xd3, 0x93, - 0xd0, 0x1f, 0xd3, 0x92, 0xcd, 0x1f, 0xd4, 0x93, 0xd0, 0x1f, 0xd4, 0x92, - 0xcd, 0x1f, 0xd4, 0x93, 0xd0, 0x1f, 0xd4, 0x93, 0xcf, 0x1f, 0xd5, 0x93, - 0xd0, 0x1f, 0xd5, 0x93, 0xcf, 0x1f, 0xd5, 0x93, 0xd0, 0x1f, 0xd6, 0x93, - 0xcf, 0x1f, 0xd6, 0x93, 0xd0, 0x1f, 0xd6, 0x94, 0xd2, 0x1f, 0xd6, 0x94, - 0xd2, 0x1f, 0xd7, 0x94, 0xd2, 0x1f, 0xd7, 0x94, 0xd2, 0x1f, 0xd7, 0x94, - 0xd2, 0x1f, 0xd7, 0x94, 0xd2, 0x1f, 0xd8, 0x94, 0xd2, 0x1f, 0xd8, 0x94, - 0xd2, 0x1f, 0xd8, 0x94, 0xd2, 0x1f, 0xd9, 0x94, 0xd2, 0x1f, 0xd9, 0x94, - 0xd5, 0x1f, 0xd9, 0x94, 0xd2, 0x1f, 0xd9, 0x94, 0xd5, 0x1f, 0xda, 0x94, - 0xd2, 0x1f, 0xda, 0x94, 0xd5, 0x1f, 0xda, 0x94, 0xd5, 0x1f, 0xda, 0x94, - 0xd5, 0x1f, 0xdb, 0x94, 0xd5, 0x1f, 0xdb, 0x94, 0xd5, 0x1f, 0xdb, 0x95, - 0xd7, 0x1f, 0xdb, 0x94, 0xd5, 0x1f, 0xdc, 0x95, 0xd7, 0x1f, 0xdc, 0x94, - 0xd5, 0x1f, 0xdc, 0x95, 0xd7, 0x1f, 0xdd, 0x95, 0xd7, 0x1f, 0xdd, 0x95, - 0xd7, 0x1f, 0xdd, 0x95, 0xd7, 0x1f, 0xdd, 0x95, 0xd7, 0x1f, 0xde, 0x96, - 0xda, 0x1f, 0xde, 0x96, 0xda, 0x1f, 0xde, 0x96, 0xda, 0x1f, 0xde, 0x96, - 0xda, 0x1f, 0xdf, 0x96, 0xda, 0x1f, 0xdf, 0x96, 0xda, 0x1f, 0xdf, 0x96, - 0xda, 0x1f, 0xdf, 0x96, 0xda, 0x1f, 0xe0, 0x96, 0xda, 0x1f, 0xe0, 0x96, - 0xda, 0x1f, 0xe0, 0x96, 0xda, 0x1f, 0xe1, 0x96, 0xda, 0x1f, 0xe1, 0x97, - 0xdd, 0x1f, 0xe1, 0x96, 0xda, 0x1f, 0xe1, 0x97, 0xdd, 0x1f, 0xe2, 0x97, - 0xdc, 0x1f, 0xe2, 0x97, 0xdd, 0x1f, 0xe2, 0x97, 0xdc, 0x1f, 0xe2, 0x97, - 0xdd, 0x1f, 0xe3, 0x97, 0xdc, 0x1f, 0xe3, 0x97, 0xdd, 0x1f, 0xe3, 0x98, - 0xdf, 0x1f, 0xe3, 0x97, 0xdd, 0x1f, 0xe4, 0x98, 0xdf, 0x1f, 0xe4, 0x97, - 0xdd, 0x1f, 0xe4, 0x98, 0xdf, 0x1f, 0xe4, 0x98, 0xdf, 0x1f, 0xe5, 0x98, - 0xdf, 0x1f, 0xe5, 0x98, 0xdf, 0x1f, 0xe5, 0x98, 0xdf, 0x1f, 0xe5, 0x99, - 0xe1, 0x1f, 0xe6, 0x99, 0xe2, 0x1f, 0xe6, 0x99, 0xe1, 0x1f, 0xe6, 0x99, - 0xe2, 0x1f, 0xe6, 0x99, 0xe1, 0x1f, 0xe7, 0x99, 0xe2, 0x1f, 0xe7, 0x99, - 0xe1, 0x1f, 0xe7, 0x99, 0xe2, 0x1f, 0xe7, 0x99, 0xe1, 0x1f, 0xe8, 0x99, - 0xe2, 0x1f, 0xe8, 0x9a, 0xe4, 0x1f, 0xe8, 0x99, 0xe2, 0x1f, 0xe8, 0x9a, - 0xe4, 0x1f, 0xe9, 0x99, 0xe2, 0x1f, 0xe9, 0x9a, 0xe4, 0x1f, 0xe9, 0x9a, - 0xe4, 0x1f, 0xe9, 0x9a, 0xe4, 0x1f, 0xea, 0x9a, 0xe4, 0x1f, 0xea, 0x9a, - 0xe4, 0x1f, 0xea, 0x9a, 0xe6, 0x1f, 0xea, 0x9a, 0xe4, 0x1f, 0xeb, 0x9a, - 0xe6, 0x1f, 0xeb, 0x9a, 0xe4, 0x1f, 0xeb, 0x9a, 0xe6, 0x1f, 0xeb, 0x9a, - 0xe6, 0x1f, 0xec, 0x9a, 0xe6, 0x1f, 0xec, 0x9a, 0xe6, 0x1f, 0xec, 0x9a, - 0xe6, 0x1f, 0xec, 0x9b, 0xe8, 0x1f, 0xec, 0x9b, 0xe9, 0x1f, 0xed, 0x9b, - 0xe8, 0x1f, 0xed, 0x9b, 0xe9, 0x1f, 0xed, 0x9b, 0xe8, 0x1f, 0xed, 0x9b, - 0xe9, 0x1f, 0xee, 0x9b, 0xe8, 0x1f, 0xee, 0x9b, 0xe9, 0x1f, 0xee, 0x9b, - 0xe8, 0x1f, 0xee, 0x9b, 0xe9, 0x1f, 0xef, 0x9b, 0xe8, 0x1f, 0xef, 0x9b, - 0xe9, 0x1f, 0xef, 0x9c, 0xeb, 0x1f, 0xef, 0x9b, 0xe9, 0x1f, 0xf0, 0x9c, - 0xeb, 0x1f, 0xf0, 0x9b, 0xe9, 0x1f, 0xf0, 0x9c, 0xeb, 0x1f, 0xf0, 0x9c, - 0xeb, 0x1f, 0xf1, 0x9c, 0xeb, 0x1f, 0xf1, 0x9c, 0xeb, 0x1f, 0xf1, 0x9c, - 0xeb, 0x1f, 0xf1, 0x9d, 0xed, 0x1f, 0xf2, 0x9d, 0xed, 0x1f, 0xf2, 0x9d, - 0xed, 0x1f, 0xf2, 0x9d, 0xed, 0x1f, 0xf2, 0x9d, 0xed, 0x1f, 0xf2, 0x9d, - 0xed, 0x1f, 0xf3, 0x9d, 0xed, 0x1f, 0xf3, 0x9d, 0xed, 0x1f, 0xf3, 0x9d, - 0xed, 0x1f, 0xf3, 0x9d, 0xed, 0x1f, 0xf4, 0x9e, 0xef, 0x1f, 0xf4, 0x9d, - 0xed, 0x1f, 0xf4, 0x9e, 0xef, 0x1f, 0xf4, 0x9d, 0xed, 0x1f, 0xf5, 0x9e, - 0xef, 0x1f, 0xf5, 0x9e, 0xef, 0x1f, 0xf5, 0x9e, 0xef, 0x1f, 0xf5, 0x9e, - 0xef, 0x1f, 0xf5, 0x9e, 0xef, 0x1f, 0xf6, 0x9f, 0xf2, 0x1f, 0xf6, 0x9e, - 0xef, 0x1f, 0xf6, 0x9f, 0xf2, 0x1f, 0xf6, 0x9e, 0xef, 0x1f, 0xf7, 0x9f, - 0xf2, 0x1f, 0xf7, 0x9e, 0xef, 0x1f, 0xf7, 0x9f, 0xf2, 0x1f, 0xf7, 0x9f, - 0xf1, 0x1f, 0xf8, 0x9f, 0xf2, 0x1f, 0xf8, 0x9f, 0xf1, 0x1f, 0xf8, 0x9f, - 0xf2, 0x1f, 0xf8, 0x9f, 0xf4, 0x1f, 0xf8, 0x9f, 0xf4, 0x1f, 0xf9, 0x9f, - 0xf4, 0x1f, 0xf9, 0x9f, 0xf4, 0x1f, 0xf9, 0x9f, 0xf4, 0x1f, 0xf9, 0x9f, - 0xf4, 0x1f, 0xfa, 0x9f, 0xf4, 0x1f, 0xfa, 0x9f, 0xf4, 0x1f, 0xfa, 0x9f, - 0xf4, 0x1f, 0xfa, 0x9f, 0xf4, 0x1f, 0xfa, 0xa0, 0xf6, 0x1f, 0xfb, 0x9f, - 0xf4, 0x1f, 0xfb, 0xa0, 0xf6, 0x1f, 0xfb, 0x9f, 0xf4, 0x1f, 0xfb, 0xa0, - 0xf6, 0x1f, 0xfc, 0xa0, 0xf6, 0x1f, 0xfc, 0xa0, 0xf6, 0x1f, 0xfc, 0xa0, - 0xf6, 0x1f, 0xfc, 0xa0, 0xf6, 0x1f, 0xfc, 0xa1, 0xf8, 0x1f, 0xfd, 0xa0, - 0xf6, 0x1f, 0xfd, 0xa1, 0xf8, 0x1f, 0xfd, 0xa0, 0xf6, 0x1f, 0xfd, 0xa1, - 0xf8, 0x1f, 0xfe, 0xa1, 0xf8, 0x1f, 0xfe, 0xa1, 0xf8, 0x1f, 0xfe, 0xa1, - 0xf8, 0x1f, 0xfe, 0xa1, 0xf8, 0x1f, 0xfe, 0xa2, 0xfa, 0x1f, 0xff, 0xa2, - 0xfa, 0x1f, 0xff, 0xa2, 0xfa, 0x1f, 0x03, 0x84, 0x9b, 0x20, 0x0a, 0x84, - 0x9b, 0x20, 0x0f, 0x84, 0x9b, 0x20, 0x14, 0x84, 0x9b, 0x20, 0x17, 0x84, - 0x9b, 0x20, 0x1b, 0x84, 0x9b, 0x20, 0x1e, 0x84, 0x9b, 0x20, 0x20, 0x86, - 0x9b, 0x20, 0x23, 0x84, 0x9b, 0x20, 0x25, 0x86, 0x9b, 0x20, 0x27, 0x84, - 0x9b, 0x20, 0x29, 0x86, 0x9b, 0x20, 0x2b, 0x84, 0x9b, 0x20, 0x2d, 0x86, - 0x9b, 0x20, 0x2f, 0x84, 0x9b, 0x20, 0x31, 0x86, 0x9b, 0x20, 0x32, 0x84, - 0x9b, 0x20, 0x34, 0x86, 0x9b, 0x20, 0x35, 0x84, 0x9b, 0x20, 0x37, 0x86, - 0x9b, 0x20, 0x38, 0x84, 0x9b, 0x20, 0x3a, 0x86, 0x9b, 0x20, 0x3b, 0x84, - 0x9b, 0x20, 0x3c, 0x86, 0x9b, 0x20, 0x3e, 0x84, 0x9b, 0x20, 0x3f, 0x86, - 0x9b, 0x20, 0x40, 0x84, 0x9b, 0x20, 0x42, 0x86, 0x9b, 0x20, 0x43, 0x84, - 0x9b, 0x20, 0x44, 0x86, 0x9b, 0x20, 0x45, 0x84, 0x9b, 0x20, 0x46, 0x86, - 0x9b, 0x20, 0x47, 0x84, 0x9b, 0x20, 0x48, 0x86, 0x9b, 0x20, 0x49, 0x84, - 0x9b, 0x20, 0x4a, 0x86, 0x9b, 0x20, 0x4b, 0x84, 0x9b, 0x20, 0x4c, 0x86, - 0x9b, 0x20, 0x4d, 0x84, 0x9b, 0x20, 0x4e, 0x86, 0x9b, 0x20, 0x4f, 0x84, - 0x9b, 0x20, 0x50, 0x86, 0x9b, 0x20, 0x51, 0x84, 0x9b, 0x20, 0x52, 0x86, - 0x9b, 0x20, 0x53, 0x84, 0x9b, 0x20, 0x54, 0x86, 0x9b, 0x20, 0x55, 0x84, - 0x9b, 0x20, 0x56, 0x86, 0x9b, 0x20, 0x57, 0x84, 0x9b, 0x20, 0x58, 0x86, - 0x9b, 0x20, 0x58, 0x84, 0x9b, 0x20, 0x59, 0x86, 0x9b, 0x20, 0x5a, 0x84, - 0x9b, 0x20, 0x5b, 0x86, 0x9b, 0x20, 0x5c, 0x84, 0x9b, 0x20, 0x5d, 0x86, - 0x9b, 0x20, 0x5d, 0x84, 0x9b, 0x20, 0x5e, 0x84, 0x9c, 0x20, 0x5f, 0x84, - 0x9b, 0x20, 0x60, 0x84, 0x9c, 0x20, 0x60, 0x84, 0x9b, 0x20, 0x61, 0x84, - 0x9c, 0x20, 0x62, 0x84, 0x9b, 0x20, 0x63, 0x84, 0x9c, 0x20, 0x63, 0x84, - 0x9b, 0x20, 0x64, 0x84, 0x9c, 0x20, 0x65, 0x84, 0x9b, 0x20, 0x66, 0x84, - 0x9c, 0x20, 0x66, 0x84, 0x9b, 0x20, 0x67, 0x84, 0x9c, 0x20, 0x68, 0x84, - 0x9b, 0x20, 0x68, 0x84, 0x9c, 0x20, 0x69, 0x84, 0x9b, 0x20, 0x6a, 0x84, - 0x9c, 0x20, 0x6a, 0x84, 0x9b, 0x20, 0x6b, 0x84, 0x9c, 0x20, 0x6c, 0x84, - 0x9b, 0x20, 0x6c, 0x84, 0x9c, 0x20, 0x6d, 0x84, 0x9b, 0x20, 0x6e, 0x84, - 0x9c, 0x20, 0x6e, 0x84, 0x9b, 0x20, 0x6f, 0x84, 0x9c, 0x20, 0x70, 0x84, - 0x9b, 0x20, 0x70, 0x84, 0x9c, 0x20, 0x71, 0x84, 0x9b, 0x20, 0x72, 0x84, - 0x9c, 0x20, 0x72, 0x84, 0x9b, 0x20, 0x73, 0x84, 0x9c, 0x20, 0x73, 0x84, - 0x9b, 0x20, 0x74, 0x84, 0x9c, 0x20, 0x75, 0x84, 0x9b, 0x20, 0x75, 0x84, - 0x9c, 0x20, 0x76, 0x84, 0x9b, 0x20, 0x76, 0x84, 0x9c, 0x20, 0x77, 0x84, - 0x9b, 0x20, 0x78, 0x84, 0x9c, 0x20, 0x78, 0x84, 0x9b, 0x20, 0x79, 0x84, - 0x9c, 0x20, 0x79, 0x84, 0x9b, 0x20, 0x7a, 0x84, 0x9c, 0x20, 0x7a, 0x84, - 0x9b, 0x20, 0x7b, 0x84, 0x9c, 0x20, 0x7c, 0x84, 0x9b, 0x20, 0x7c, 0x84, - 0x9c, 0x20, 0x7d, 0x84, 0x9b, 0x20, 0x7d, 0x84, 0x9c, 0x20, 0x7e, 0x84, - 0x9b, 0x20, 0x7e, 0x84, 0x9c, 0x20, 0x7f, 0x84, 0x9b, 0x20, 0x7f, 0x84, - 0x9c, 0x20, 0x80, 0x84, 0x9b, 0x20, 0x81, 0x84, 0x9c, 0x20, 0x81, 0x84, - 0x9b, 0x20, 0x82, 0x84, 0x9c, 0x20, 0x82, 0x84, 0x9b, 0x20, 0x83, 0x84, - 0x9c, 0x20, 0x83, 0x84, 0x9b, 0x20, 0x84, 0x84, 0x9c, 0x20, 0x84, 0x84, - 0x9b, 0x20, 0x85, 0x84, 0x9c, 0x20, 0x85, 0x84, 0x9b, 0x20, 0x86, 0x84, - 0x9c, 0x20, 0x86, 0x84, 0x9b, 0x20, 0x87, 0x84, 0x9c, 0x20, 0x87, 0x84, - 0x9b, 0x20, 0x88, 0x84, 0x9c, 0x20, 0x88, 0x84, 0x9b, 0x20, 0x89, 0x84, - 0x9c, 0x20, 0x89, 0x84, 0x9b, 0x20, 0x8a, 0x84, 0x9c, 0x20, 0x8a, 0x84, - 0x9b, 0x20, 0x8b, 0x84, 0x9c, 0x20, 0x8b, 0x84, 0x9b, 0x20, 0x8c, 0x84, - 0x9c, 0x20, 0x8c, 0x84, 0x9b, 0x20, 0x8d, 0x84, 0x9c, 0x20, 0x8d, 0x84, - 0x9b, 0x20, 0x8e, 0x84, 0x9c, 0x20, 0x8e, 0x84, 0x9b, 0x20, 0x8e, 0x84, - 0x9c, 0x20, 0x8f, 0x84, 0x9b, 0x20, 0x8f, 0x84, 0x9c, 0x20, 0x90, 0x84, - 0x9b, 0x20, 0x90, 0x84, 0x9c, 0x20, 0x91, 0x84, 0x9b, 0x20, 0x91, 0x84, - 0x9c, 0x20, 0x92, 0x84, 0x9b, 0x20, 0x92, 0x84, 0x9c, 0x20, 0x93, 0x84, - 0x9b, 0x20, 0x93, 0x84, 0x9c, 0x20, 0x94, 0x84, 0x9b, 0x20, 0x94, 0x84, - 0x9c, 0x20, 0x94, 0x84, 0x9b, 0x20, 0x95, 0x84, 0x9c, 0x20, 0x95, 0x84, - 0x9b, 0x20, 0x96, 0x84, 0x9c, 0x20, 0x96, 0x84, 0x9b, 0x20, 0x97, 0x84, - 0x9c, 0x20, 0x97, 0x84, 0x9b, 0x20, 0x98, 0x84, 0x9c, 0x20, 0x98, 0x84, - 0x9b, 0x20, 0x98, 0x84, 0x9c, 0x20, 0x99, 0x84, 0x9b, 0x20, 0x99, 0x84, - 0x9c, 0x20, 0x9a, 0x84, 0x9b, 0x20, 0x9a, 0x84, 0x9c, 0x20, 0x9a, 0x84, - 0x9b, 0x20, 0x9b, 0x84, 0x9c, 0x20, 0x9b, 0x84, 0x9b, 0x20, 0x9c, 0x84, - 0x9c, 0x20, 0x9c, 0x84, 0x9c, 0x20, 0x9d, 0x84, 0x9d, 0x20, 0x9d, 0x84, - 0x9d, 0x20, 0x9d, 0x84, 0x9d, 0x20, 0x9e, 0x84, 0x9e, 0x20, 0x9e, 0x84, - 0x9e, 0x20, 0x9f, 0x84, 0x9f, 0x20, 0x9f, 0x84, 0x9e, 0x20, 0x9f, 0x84, - 0x9f, 0x20, 0xa0, 0x84, 0x9e, 0x20, 0xa0, 0x84, 0x9f, 0x20, 0xa1, 0x84, - 0x9e, 0x20, 0xa1, 0x84, 0x9f, 0x20, 0xa1, 0x84, 0x9e, 0x20, 0xa2, 0x84, - 0x9f, 0x20, 0xa2, 0x84, 0x9e, 0x20, 0xa3, 0x84, 0x9f, 0x20, 0xa3, 0x84, - 0x9e, 0x20, 0xa3, 0x84, 0x9f, 0x20, 0xa4, 0x84, 0x9e, 0x20, 0xa4, 0x84, - 0x9f, 0x20, 0xa5, 0x84, 0x9e, 0x20, 0xa5, 0x84, 0x9f, 0x20, 0xa5, 0x85, - 0xa2, 0x20, 0xa6, 0x85, 0xa2, 0x20, 0xa6, 0x85, 0xa2, 0x20, 0xa6, 0x85, - 0xa2, 0x20, 0xa7, 0x85, 0xa2, 0x20, 0xa7, 0x85, 0xa2, 0x20, 0xa8, 0x85, - 0xa2, 0x20, 0xa8, 0x85, 0xa2, 0x20, 0xa8, 0x85, 0xa2, 0x20, 0xa9, 0x86, - 0xa6, 0x20, 0xa9, 0x86, 0xa6, 0x20, 0xaa, 0x86, 0xa6, 0x20, 0xaa, 0x86, - 0xa6, 0x20, 0xaa, 0x86, 0xa6, 0x20, 0xab, 0x86, 0xa6, 0x20, 0xab, 0x86, - 0xa6, 0x20, 0xab, 0x86, 0xa6, 0x20, 0xac, 0x86, 0xa6, 0x20, 0xac, 0x86, - 0xa6, 0x20, 0xac, 0x87, 0xaa, 0x20, 0xad, 0x86, 0xa6, 0x20, 0xad, 0x87, - 0xaa, 0x20, 0xae, 0x87, 0xa9, 0x20, 0xae, 0x87, 0xaa, 0x20, 0xae, 0x87, - 0xa9, 0x20, 0xaf, 0x87, 0xaa, 0x20, 0xaf, 0x87, 0xa9, 0x20, 0xaf, 0x87, - 0xaa, 0x20, 0xb0, 0x88, 0xad, 0x20, 0xb0, 0x88, 0xad, 0x20, 0xb0, 0x88, - 0xad, 0x20, 0xb1, 0x88, 0xad, 0x20, 0xb1, 0x88, 0xad, 0x20, 0xb2, 0x88, - 0xad, 0x20, 0xb2, 0x88, 0xad, 0x20, 0xb2, 0x88, 0xad, 0x20, 0xb3, 0x88, - 0xad, 0x20, 0xb3, 0x88, 0xad, 0x20, 0xb3, 0x89, 0xb0, 0x20, 0xb4, 0x88, - 0xad, 0x20, 0xb4, 0x89, 0xb0, 0x20, 0xb4, 0x89, 0xb0, 0x20, 0xb5, 0x89, - 0xb0, 0x20, 0xb5, 0x89, 0xb2, 0x20, 0xb5, 0x89, 0xb0, 0x20, 0xb6, 0x89, - 0xb2, 0x20, 0xb6, 0x89, 0xb0, 0x20, 0xb6, 0x89, 0xb2, 0x20, 0xb7, 0x89, - 0xb0, 0x20, 0xb7, 0x89, 0xb2, 0x20, 0xb7, 0x89, 0xb2, 0x20, 0xb8, 0x89, - 0xb2, 0x20, 0xb8, 0x89, 0xb2, 0x20, 0xb8, 0x89, 0xb2, 0x20, 0xb9, 0x8a, - 0xb3, 0x20, 0xb9, 0x8a, 0xb4, 0x20, 0xb9, 0x8a, 0xb3, 0x20, 0xba, 0x8a, - 0xb4, 0x20, 0xba, 0x8b, 0xb7, 0x20, 0xba, 0x8b, 0xb7, 0x20, 0xbb, 0x8b, - 0xb7, 0x20, 0xbb, 0x8b, 0xb7, 0x20, 0xbb, 0x8b, 0xb7, 0x20, 0xbc, 0x8b, - 0xb7, 0x20, 0xbc, 0x8b, 0xb7, 0x20, 0xbc, 0x8b, 0xb7, 0x20, 0xbd, 0x8b, - 0xb7, 0x20, 0xbd, 0x8b, 0xb7, 0x20, 0xbd, 0x8c, 0xba, 0x20, 0xbe, 0x8b, - 0xb7, 0x20, 0xbe, 0x8c, 0xba, 0x20, 0xbe, 0x8c, 0xba, 0x20, 0xbf, 0x8c, - 0xba, 0x20, 0xbf, 0x8c, 0xba, 0x20, 0xbf, 0x8c, 0xba, 0x20, 0xc0, 0x8c, - 0xba, 0x20, 0xc0, 0x8c, 0xba, 0x20, 0xc0, 0x8d, 0xbd, 0x20, 0xc1, 0x8c, - 0xba, 0x20, 0xc1, 0x8d, 0xbd, 0x20, 0xc1, 0x8d, 0xbd, 0x20, 0xc1, 0x8d, - 0xbd, 0x20, 0xc2, 0x8d, 0xbd, 0x20, 0xc2, 0x8d, 0xbd, 0x20, 0xc2, 0x8d, - 0xbd, 0x20, 0xc3, 0x8d, 0xbd, 0x20, 0xc3, 0x8e, 0xc0, 0x20, 0xc3, 0x8e, - 0xc0, 0x20, 0xc4, 0x8e, 0xc0, 0x20, 0xc4, 0x8e, 0xc0, 0x20, 0xc4, 0x8e, - 0xc0, 0x20, 0xc5, 0x8e, 0xc0, 0x20, 0xc5, 0x8e, 0xc0, 0x20, 0xc5, 0x8e, - 0xc0, 0x20, 0xc6, 0x8e, 0xc0, 0x20, 0xc6, 0x8e, 0xc0, 0x20, 0xc6, 0x8e, - 0xc0, 0x20, 0xc6, 0x8e, 0xc0, 0x20, 0xc7, 0x8e, 0xc3, 0x20, 0xc7, 0x8e, - 0xc0, 0x20, 0xc7, 0x8e, 0xc3, 0x20, 0xc8, 0x8e, 0xc3, 0x20, 0xc8, 0x8e, - 0xc3, 0x20, 0xc8, 0x8e, 0xc3, 0x20, 0xc9, 0x8e, 0xc3, 0x20, 0xc9, 0x8e, - 0xc3, 0x20, 0xc9, 0x8e, 0xc3, 0x20, 0xc9, 0x8f, 0xc6, 0x20, 0xca, 0x8e, - 0xc3, 0x20, 0xca, 0x8f, 0xc6, 0x20, 0xca, 0x8f, 0xc6, 0x20, 0xcb, 0x8f, - 0xc6, 0x20, 0xcb, 0x8f, 0xc6, 0x20, 0xcb, 0x8f, 0xc6, 0x20, 0xcc, 0x8f, - 0xc6, 0x20, 0xcc, 0x8f, 0xc6, 0x20, 0xcc, 0x90, 0xc9, 0x20, 0xcc, 0x90, - 0xc9, 0x20, 0xcd, 0x90, 0xc9, 0x20, 0xcd, 0x90, 0xc9, 0x20, 0xcd, 0x90, - 0xc9, 0x20, 0xce, 0x90, 0xc9, 0x20, 0xce, 0x90, 0xc9, 0x20, 0xce, 0x90, - 0xc9, 0x20, 0xce, 0x90, 0xc9, 0x20, 0xcf, 0x90, 0xc9, 0x20, 0xcf, 0x91, - 0xcc, 0x20, 0xcf, 0x90, 0xc9, 0x20, 0xd0, 0x91, 0xcc, 0x20, 0xd0, 0x90, - 0xc9, 0x20, 0xd0, 0x91, 0xcc, 0x20, 0xd0, 0x91, 0xcb, 0x20, 0xd1, 0x91, - 0xcc, 0x20, 0xd1, 0x91, 0xcb, 0x20, 0xd1, 0x91, 0xcc, 0x20, 0xd2, 0x92, - 0xce, 0x20, 0xd2, 0x92, 0xce, 0x20, 0xd2, 0x92, 0xce, 0x20, 0xd2, 0x92, - 0xce, 0x20, 0xd3, 0x92, 0xce, 0x20, 0xd3, 0x92, 0xce, 0x20, 0xd3, 0x92, - 0xce, 0x20, 0xd4, 0x92, 0xce, 0x20, 0xd4, 0x92, 0xce, 0x20, 0xd4, 0x92, - 0xce, 0x20, 0xd4, 0x93, 0xd1, 0x20, 0xd5, 0x92, 0xce, 0x20, 0xd5, 0x93, - 0xd1, 0x20, 0xd5, 0x92, 0xce, 0x20, 0xd6, 0x93, 0xd1, 0x20, 0xd6, 0x93, - 0xd1, 0x20, 0xd6, 0x93, 0xd1, 0x20, 0xd6, 0x93, 0xd1, 0x20, 0xd7, 0x93, - 0xd1, 0x20, 0xd7, 0x93, 0xd1, 0x20, 0xd7, 0x93, 0xd1, 0x20, 0xd7, 0x94, - 0xd4, 0x20, 0xd8, 0x93, 0xd1, 0x20, 0xd8, 0x94, 0xd4, 0x20, 0xd8, 0x94, - 0xd3, 0x20, 0xd9, 0x94, 0xd4, 0x20, 0xd9, 0x94, 0xd3, 0x20, 0xd9, 0x94, - 0xd4, 0x20, 0xd9, 0x94, 0xd3, 0x20, 0xda, 0x94, 0xd4, 0x20, 0xda, 0x95, - 0xd6, 0x20, 0xda, 0x95, 0xd6, 0x20, 0xda, 0x95, 0xd6, 0x20, 0xdb, 0x95, - 0xd6, 0x20, 0xdb, 0x95, 0xd6, 0x20, 0xdb, 0x95, 0xd6, 0x20, 0xdb, 0x95, - 0xd6, 0x20, 0xdc, 0x95, 0xd6, 0x20, 0xdc, 0x95, 0xd6, 0x20, 0xdc, 0x95, - 0xd6, 0x20, 0xdd, 0x96, 0xd9, 0x20, 0xdd, 0x95, 0xd6, 0x20, 0xdd, 0x96, - 0xd9, 0x20, 0xdd, 0x95, 0xd6, 0x20, 0xde, 0x96, 0xd9, 0x20, 0xde, 0x96, - 0xd9, 0x20, 0xde, 0x96, 0xd9, 0x20, 0xde, 0x96, 0xd9, 0x20, 0xdf, 0x96, - 0xd9, 0x20, 0xdf, 0x97, 0xdb, 0x20, 0xdf, 0x96, 0xd9, 0x20, 0xdf, 0x97, - 0xdb, 0x20, 0xe0, 0x96, 0xd9, 0x20, 0xe0, 0x97, 0xdb, 0x20, 0xe0, 0x97, - 0xdb, 0x20, 0xe1, 0x97, 0xdb, 0x20, 0xe1, 0x97, 0xdb, 0x20, 0xe1, 0x97, - 0xdb, 0x20, 0xe1, 0x97, 0xdb, 0x20, 0xe2, 0x97, 0xdb, 0x20, 0xe2, 0x98, - 0xde, 0x20, 0xe2, 0x98, 0xde, 0x20, 0xe2, 0x98, 0xde, 0x20, 0xe3, 0x98, - 0xde, 0x20, 0xe3, 0x98, 0xde, 0x20, 0xe3, 0x98, 0xde, 0x20, 0xe3, 0x98, - 0xde, 0x20, 0xe4, 0x98, 0xde, 0x20, 0xe4, 0x98, 0xde, 0x20, 0xe4, 0x98, - 0xde, 0x20, 0xe4, 0x98, 0xe0, 0x20, 0xe5, 0x98, 0xde, 0x20, 0xe5, 0x98, - 0xe0, 0x20, 0xe5, 0x98, 0xde, 0x20, 0xe5, 0x98, 0xe0, 0x20, 0xe6, 0x98, - 0xe0, 0x20, 0xe6, 0x98, 0xe0, 0x20, 0xe6, 0x98, 0xe0, 0x20, 0xe6, 0x98, - 0xe0, 0x20, 0xe7, 0x99, 0xe3, 0x20, 0xe7, 0x98, 0xe0, 0x20, 0xe7, 0x99, - 0xe3, 0x20, 0xe7, 0x98, 0xe0, 0x20, 0xe8, 0x99, 0xe3, 0x20, 0xe8, 0x99, - 0xe2, 0x20, 0xe8, 0x99, 0xe3, 0x20, 0xe8, 0x99, 0xe2, 0x20, 0xe9, 0x99, - 0xe3, 0x20, 0xe9, 0x9a, 0xe5, 0x20, 0xe9, 0x9a, 0xe5, 0x20, 0xe9, 0x9a, - 0xe5, 0x20, 0xea, 0x9a, 0xe5, 0x20, 0xea, 0x9a, 0xe5, 0x20, 0xea, 0x9a, - 0xe5, 0x20, 0xea, 0x9a, 0xe5, 0x20, 0xeb, 0x9a, 0xe5, 0x20, 0xeb, 0x9a, - 0xe5, 0x20, 0xeb, 0x9a, 0xe5, 0x20, 0xeb, 0x9b, 0xe7, 0x20, 0xec, 0x9a, - 0xe5, 0x20, 0xec, 0x9b, 0xe7, 0x20, 0xec, 0x9a, 0xe5, 0x20, 0xec, 0x9b, - 0xe7, 0x20, 0xec, 0x9b, 0xe7, 0x20, 0xed, 0x9b, 0xe7, 0x20, 0xed, 0x9b, - 0xe7, 0x20, 0xed, 0x9b, 0xe7, 0x20, 0xed, 0x9c, 0xea, 0x20, 0xee, 0x9c, - 0xea, 0x20, 0xee, 0x9c, 0xea, 0x20, 0xee, 0x9c, 0xea, 0x20, 0xee, 0x9c, - 0xea, 0x20, 0xef, 0x9c, 0xea, 0x20, 0xef, 0x9c, 0xea, 0x20, 0xef, 0x9c, - 0xea, 0x20, 0xef, 0x9c, 0xea, 0x20, 0xf0, 0x9c, 0xea, 0x20, 0xf0, 0x9c, - 0xea, 0x20, 0xf0, 0x9c, 0xea, 0x20, 0xf0, 0x9d, 0xec, 0x20, 0xf1, 0x9c, - 0xea, 0x20, 0xf1, 0x9d, 0xec, 0x20, 0xf1, 0x9c, 0xea, 0x20, 0xf1, 0x9d, - 0xec, 0x20, 0xf2, 0x9d, 0xec, 0x20, 0xf2, 0x9d, 0xec, 0x20, 0xf2, 0x9d, - 0xec, 0x20, 0xf2, 0x9d, 0xec, 0x20, 0xf2, 0x9d, 0xee, 0x20, 0xf3, 0x9d, - 0xec, 0x20, 0xf3, 0x9d, 0xee, 0x20, 0xf3, 0x9d, 0xec, 0x20, 0xf3, 0x9d, - 0xee, 0x20, 0xf4, 0x9d, 0xee, 0x20, 0xf4, 0x9d, 0xee, 0x20, 0xf4, 0x9d, - 0xee, 0x20, 0xf4, 0x9d, 0xee, 0x20, 0xf5, 0x9e, 0xf0, 0x20, 0xf5, 0x9e, - 0xf1, 0x20, 0xf5, 0x9e, 0xf0, 0x20, 0xf5, 0x9e, 0xf1, 0x20, 0xf5, 0x9e, - 0xf0, 0x20, 0xf6, 0x9e, 0xf1, 0x20, 0xf6, 0x9e, 0xf0, 0x20, 0xf6, 0x9e, - 0xf1, 0x20, 0xf6, 0x9e, 0xf0, 0x20, 0xf7, 0x9e, 0xf1, 0x20, 0xf7, 0x9f, - 0xf3, 0x20, 0xf7, 0x9e, 0xf1, 0x20, 0xf7, 0x9f, 0xf3, 0x20, 0xf8, 0x9e, - 0xf1, 0x20, 0xf8, 0x9f, 0xf3, 0x20, 0xf8, 0x9e, 0xf1, 0x20, 0xf8, 0x9f, - 0xf3, 0x20, 0xf8, 0x9f, 0xf2, 0x20, 0xf9, 0x9f, 0xf3, 0x20, 0xf9, 0x9f, - 0xf2, 0x20, 0xf9, 0x9f, 0xf3, 0x20, 0xf9, 0xa0, 0xf5, 0x20, 0xfa, 0x9f, - 0xf3, 0x20, 0xfa, 0xa0, 0xf5, 0x20, 0xfa, 0x9f, 0xf3, 0x20, 0xfa, 0xa0, - 0xf5, 0x20, 0xfa, 0xa0, 0xf5, 0x20, 0xfb, 0xa0, 0xf5, 0x20, 0xfb, 0xa0, - 0xf5, 0x20, 0xfb, 0xa0, 0xf5, 0x20, 0xfb, 0xa1, 0xf7, 0x20, 0xfc, 0xa1, - 0xf7, 0x20, 0xfc, 0xa1, 0xf7, 0x20, 0xfc, 0xa1, 0xf7, 0x20, 0xfc, 0xa1, - 0xf7, 0x20, 0xfc, 0xa1, 0xf7, 0x20, 0xfd, 0xa1, 0xf7, 0x20, 0xfd, 0xa1, - 0xf7, 0x20, 0xfd, 0xa1, 0xf7, 0x20, 0xfd, 0xa1, 0xf7, 0x20, 0xfe, 0xa1, - 0xf9, 0x20, 0xfe, 0xa1, 0xf7, 0x20, 0xfe, 0xa1, 0xf9, 0x20, 0xfe, 0xa1, - 0xf7, 0x20, 0xfe, 0xa1, 0xf9, 0x20, 0xff, 0xa1, 0xf9, 0x20, 0xff, 0xa1, - 0xf9, 0x20, 0x03, 0x83, 0x9b, 0x20, 0x0a, 0x83, 0x9b, 0x20, 0x0f, 0x83, - 0x9b, 0x20, 0x14, 0x83, 0x9b, 0x20, 0x17, 0x83, 0x9b, 0x20, 0x1b, 0x83, - 0x9b, 0x20, 0x1e, 0x83, 0x9b, 0x20, 0x20, 0x83, 0x9c, 0x20, 0x23, 0x83, - 0x9b, 0x20, 0x25, 0x83, 0x9c, 0x20, 0x27, 0x83, 0x9b, 0x20, 0x29, 0x83, - 0x9c, 0x20, 0x2b, 0x83, 0x9b, 0x20, 0x2d, 0x83, 0x9c, 0x20, 0x2f, 0x83, - 0x9b, 0x20, 0x31, 0x83, 0x9c, 0x20, 0x32, 0x83, 0x9b, 0x20, 0x34, 0x83, - 0x9c, 0x20, 0x35, 0x83, 0x9b, 0x20, 0x37, 0x83, 0x9c, 0x20, 0x38, 0x83, - 0x9b, 0x20, 0x3a, 0x83, 0x9c, 0x20, 0x3b, 0x83, 0x9b, 0x20, 0x3c, 0x83, - 0x9c, 0x20, 0x3e, 0x83, 0x9b, 0x20, 0x3f, 0x83, 0x9c, 0x20, 0x40, 0x83, - 0x9b, 0x20, 0x42, 0x83, 0x9c, 0x20, 0x43, 0x83, 0x9b, 0x20, 0x44, 0x83, - 0x9c, 0x20, 0x45, 0x83, 0x9b, 0x20, 0x46, 0x83, 0x9c, 0x20, 0x47, 0x83, - 0x9b, 0x20, 0x48, 0x83, 0x9c, 0x20, 0x49, 0x83, 0x9b, 0x20, 0x4a, 0x83, - 0x9c, 0x20, 0x4b, 0x83, 0x9b, 0x20, 0x4c, 0x83, 0x9c, 0x20, 0x4d, 0x83, - 0x9b, 0x20, 0x4e, 0x83, 0x9c, 0x20, 0x4f, 0x83, 0x9b, 0x20, 0x50, 0x83, - 0x9c, 0x20, 0x51, 0x83, 0x9b, 0x20, 0x52, 0x83, 0x9c, 0x20, 0x53, 0x83, - 0x9b, 0x20, 0x54, 0x83, 0x9c, 0x20, 0x55, 0x83, 0x9b, 0x20, 0x56, 0x83, - 0x9c, 0x20, 0x57, 0x83, 0x9b, 0x20, 0x58, 0x83, 0x9c, 0x20, 0x58, 0x83, - 0x9b, 0x20, 0x59, 0x83, 0x9c, 0x20, 0x5a, 0x83, 0x9b, 0x20, 0x5b, 0x83, - 0x9c, 0x20, 0x5c, 0x83, 0x9b, 0x20, 0x5d, 0x83, 0x9c, 0x20, 0x5d, 0x83, - 0x9b, 0x20, 0x5e, 0x83, 0x9c, 0x20, 0x5f, 0x83, 0x9b, 0x20, 0x60, 0x83, - 0x9c, 0x20, 0x60, 0x83, 0x9b, 0x20, 0x61, 0x83, 0x9c, 0x20, 0x62, 0x83, - 0x9b, 0x20, 0x63, 0x83, 0x9c, 0x20, 0x63, 0x83, 0x9b, 0x20, 0x64, 0x83, - 0x9c, 0x20, 0x65, 0x83, 0x9b, 0x20, 0x66, 0x83, 0x9c, 0x20, 0x66, 0x83, - 0x9b, 0x20, 0x67, 0x83, 0x9c, 0x20, 0x68, 0x83, 0x9b, 0x20, 0x68, 0x83, - 0x9c, 0x20, 0x69, 0x83, 0x9b, 0x20, 0x6a, 0x83, 0x9c, 0x20, 0x6a, 0x83, - 0x9b, 0x20, 0x6b, 0x83, 0x9c, 0x20, 0x6c, 0x83, 0x9b, 0x20, 0x6c, 0x83, - 0x9c, 0x20, 0x6d, 0x83, 0x9b, 0x20, 0x6e, 0x83, 0x9c, 0x20, 0x6e, 0x83, - 0x9b, 0x20, 0x6f, 0x83, 0x9c, 0x20, 0x70, 0x83, 0x9b, 0x20, 0x70, 0x83, - 0x9c, 0x20, 0x71, 0x83, 0x9b, 0x20, 0x72, 0x83, 0x9c, 0x20, 0x72, 0x83, - 0x9b, 0x20, 0x73, 0x83, 0x9c, 0x20, 0x73, 0x83, 0x9b, 0x20, 0x74, 0x83, - 0x9c, 0x20, 0x75, 0x83, 0x9b, 0x20, 0x75, 0x83, 0x9c, 0x20, 0x76, 0x83, - 0x9b, 0x20, 0x76, 0x83, 0x9c, 0x20, 0x77, 0x83, 0x9b, 0x20, 0x78, 0x83, - 0x9c, 0x20, 0x78, 0x83, 0x9b, 0x20, 0x79, 0x83, 0x9c, 0x20, 0x79, 0x83, - 0x9b, 0x20, 0x7a, 0x83, 0x9c, 0x20, 0x7a, 0x83, 0x9b, 0x20, 0x7b, 0x83, - 0x9c, 0x20, 0x7c, 0x83, 0x9b, 0x20, 0x7c, 0x83, 0x9c, 0x20, 0x7d, 0x83, - 0x9b, 0x20, 0x7d, 0x83, 0x9c, 0x20, 0x7e, 0x83, 0x9b, 0x20, 0x7e, 0x83, - 0x9c, 0x20, 0x7f, 0x83, 0x9b, 0x20, 0x7f, 0x83, 0x9c, 0x20, 0x80, 0x83, - 0x9b, 0x20, 0x81, 0x83, 0x9c, 0x20, 0x81, 0x83, 0x9b, 0x20, 0x82, 0x83, - 0x9c, 0x20, 0x82, 0x83, 0x9b, 0x20, 0x83, 0x83, 0x9c, 0x20, 0x83, 0x83, - 0x9b, 0x20, 0x84, 0x83, 0x9c, 0x20, 0x84, 0x83, 0x9b, 0x20, 0x85, 0x83, - 0x9c, 0x20, 0x85, 0x83, 0x9b, 0x20, 0x86, 0x83, 0x9c, 0x20, 0x86, 0x83, - 0x9b, 0x20, 0x87, 0x83, 0x9c, 0x20, 0x87, 0x83, 0x9b, 0x20, 0x88, 0x83, - 0x9c, 0x20, 0x88, 0x83, 0x9b, 0x20, 0x89, 0x83, 0x9c, 0x20, 0x89, 0x83, - 0x9b, 0x20, 0x8a, 0x83, 0x9c, 0x20, 0x8a, 0x83, 0x9b, 0x20, 0x8b, 0x83, - 0x9c, 0x20, 0x8b, 0x83, 0x9b, 0x20, 0x8c, 0x83, 0x9c, 0x20, 0x8c, 0x83, - 0x9b, 0x20, 0x8d, 0x83, 0x9c, 0x20, 0x8d, 0x83, 0x9b, 0x20, 0x8e, 0x83, - 0x9c, 0x20, 0x8e, 0x83, 0x9b, 0x20, 0x8e, 0x83, 0x9c, 0x20, 0x8f, 0x83, - 0x9b, 0x20, 0x8f, 0x83, 0x9c, 0x20, 0x90, 0x83, 0x9b, 0x20, 0x90, 0x83, - 0x9c, 0x20, 0x91, 0x83, 0x9b, 0x20, 0x91, 0x83, 0x9c, 0x20, 0x92, 0x83, - 0x9b, 0x20, 0x92, 0x83, 0x9c, 0x20, 0x93, 0x83, 0x9b, 0x20, 0x93, 0x83, - 0x9c, 0x20, 0x94, 0x83, 0x9b, 0x20, 0x94, 0x83, 0x9c, 0x20, 0x94, 0x83, - 0x9b, 0x20, 0x95, 0x83, 0x9c, 0x20, 0x95, 0x83, 0x9b, 0x20, 0x96, 0x83, - 0x9c, 0x20, 0x96, 0x83, 0x9b, 0x20, 0x97, 0x83, 0x9c, 0x20, 0x97, 0x83, - 0x9b, 0x20, 0x98, 0x83, 0x9c, 0x20, 0x98, 0x83, 0x9b, 0x20, 0x98, 0x83, - 0x9c, 0x20, 0x99, 0x83, 0x9b, 0x20, 0x99, 0x83, 0x9c, 0x20, 0x9a, 0x83, - 0x9b, 0x20, 0x9a, 0x83, 0x9c, 0x20, 0x9a, 0x83, 0x9b, 0x20, 0x9b, 0x83, - 0x9c, 0x20, 0x9b, 0x83, 0x9b, 0x20, 0x9c, 0x83, 0x9c, 0x20, 0x9c, 0x83, - 0x9c, 0x20, 0x9d, 0x83, 0x9d, 0x20, 0x9d, 0x83, 0x9c, 0x20, 0x9d, 0x83, - 0x9d, 0x20, 0x9e, 0x83, 0x9c, 0x20, 0x9e, 0x83, 0x9d, 0x20, 0x9f, 0x83, - 0x9c, 0x20, 0x9f, 0x83, 0x9d, 0x20, 0x9f, 0x83, 0x9c, 0x20, 0xa0, 0x83, - 0x9d, 0x20, 0xa0, 0x83, 0x9c, 0x20, 0xa1, 0x83, 0x9d, 0x20, 0xa1, 0x83, - 0x9c, 0x20, 0xa1, 0x83, 0x9d, 0x20, 0xa2, 0x83, 0x9c, 0x20, 0xa2, 0x83, - 0x9d, 0x20, 0xa3, 0x84, 0xa0, 0x20, 0xa3, 0x84, 0xa1, 0x20, 0xa3, 0x84, - 0xa0, 0x20, 0xa4, 0x84, 0xa1, 0x20, 0xa4, 0x84, 0xa0, 0x20, 0xa5, 0x84, - 0xa1, 0x20, 0xa5, 0x84, 0xa0, 0x20, 0xa5, 0x84, 0xa1, 0x20, 0xa6, 0x84, - 0xa0, 0x20, 0xa6, 0x84, 0xa1, 0x20, 0xa6, 0x84, 0xa0, 0x20, 0xa7, 0x84, - 0xa1, 0x20, 0xa7, 0x85, 0xa4, 0x20, 0xa8, 0x85, 0xa4, 0x20, 0xa8, 0x85, - 0xa4, 0x20, 0xa8, 0x85, 0xa4, 0x20, 0xa9, 0x85, 0xa4, 0x20, 0xa9, 0x85, - 0xa4, 0x20, 0xaa, 0x85, 0xa4, 0x20, 0xaa, 0x85, 0xa4, 0x20, 0xaa, 0x85, - 0xa4, 0x20, 0xab, 0x86, 0xa8, 0x20, 0xab, 0x85, 0xa4, 0x20, 0xab, 0x86, - 0xa8, 0x20, 0xac, 0x86, 0xa7, 0x20, 0xac, 0x86, 0xa8, 0x20, 0xac, 0x86, - 0xa7, 0x20, 0xad, 0x86, 0xa8, 0x20, 0xad, 0x86, 0xa7, 0x20, 0xae, 0x86, - 0xa8, 0x20, 0xae, 0x87, 0xab, 0x20, 0xae, 0x87, 0xab, 0x20, 0xaf, 0x87, - 0xab, 0x20, 0xaf, 0x87, 0xab, 0x20, 0xaf, 0x87, 0xab, 0x20, 0xb0, 0x87, - 0xab, 0x20, 0xb0, 0x87, 0xab, 0x20, 0xb0, 0x87, 0xab, 0x20, 0xb1, 0x87, - 0xab, 0x20, 0xb1, 0x87, 0xab, 0x20, 0xb2, 0x88, 0xaf, 0x20, 0xb2, 0x87, - 0xab, 0x20, 0xb2, 0x88, 0xaf, 0x20, 0xb3, 0x88, 0xae, 0x20, 0xb3, 0x88, - 0xaf, 0x20, 0xb3, 0x88, 0xae, 0x20, 0xb4, 0x88, 0xaf, 0x20, 0xb4, 0x88, - 0xae, 0x20, 0xb4, 0x88, 0xaf, 0x20, 0xb5, 0x89, 0xb2, 0x20, 0xb5, 0x89, - 0xb2, 0x20, 0xb5, 0x89, 0xb2, 0x20, 0xb6, 0x89, 0xb2, 0x20, 0xb6, 0x89, - 0xb2, 0x20, 0xb6, 0x89, 0xb2, 0x20, 0xb7, 0x89, 0xb2, 0x20, 0xb7, 0x89, - 0xb2, 0x20, 0xb7, 0x89, 0xb2, 0x20, 0xb8, 0x89, 0xb2, 0x20, 0xb8, 0x89, - 0xb2, 0x20, 0xb8, 0x89, 0xb2, 0x20, 0xb9, 0x8a, 0xb5, 0x20, 0xb9, 0x89, - 0xb2, 0x20, 0xb9, 0x8a, 0xb5, 0x20, 0xba, 0x8a, 0xb5, 0x20, 0xba, 0x8a, - 0xb5, 0x20, 0xba, 0x8a, 0xb5, 0x20, 0xbb, 0x8a, 0xb5, 0x20, 0xbb, 0x8a, - 0xb5, 0x20, 0xbb, 0x8a, 0xb5, 0x20, 0xbc, 0x8b, 0xb8, 0x20, 0xbc, 0x8a, - 0xb5, 0x20, 0xbc, 0x8b, 0xb8, 0x20, 0xbd, 0x8b, 0xb8, 0x20, 0xbd, 0x8b, - 0xb8, 0x20, 0xbd, 0x8b, 0xb8, 0x20, 0xbe, 0x8b, 0xb8, 0x20, 0xbe, 0x8b, - 0xb8, 0x20, 0xbe, 0x8b, 0xb8, 0x20, 0xbf, 0x8c, 0xbb, 0x20, 0xbf, 0x8c, - 0xbc, 0x20, 0xbf, 0x8c, 0xbb, 0x20, 0xc0, 0x8c, 0xbc, 0x20, 0xc0, 0x8c, - 0xbb, 0x20, 0xc0, 0x8c, 0xbc, 0x20, 0xc1, 0x8c, 0xbb, 0x20, 0xc1, 0x8c, - 0xbc, 0x20, 0xc1, 0x8c, 0xbb, 0x20, 0xc1, 0x8c, 0xbc, 0x20, 0xc2, 0x8d, - 0xbf, 0x20, 0xc2, 0x8c, 0xbc, 0x20, 0xc2, 0x8d, 0xbf, 0x20, 0xc3, 0x8d, - 0xbe, 0x20, 0xc3, 0x8d, 0xbf, 0x20, 0xc3, 0x8d, 0xbe, 0x20, 0xc4, 0x8d, - 0xbf, 0x20, 0xc4, 0x8d, 0xbe, 0x20, 0xc4, 0x8d, 0xbf, 0x20, 0xc5, 0x8e, - 0xc1, 0x20, 0xc5, 0x8d, 0xbf, 0x20, 0xc5, 0x8e, 0xc1, 0x20, 0xc6, 0x8d, - 0xbf, 0x20, 0xc6, 0x8e, 0xc1, 0x20, 0xc6, 0x8e, 0xc1, 0x20, 0xc6, 0x8e, - 0xc1, 0x20, 0xc7, 0x8e, 0xc1, 0x20, 0xc7, 0x8e, 0xc1, 0x20, 0xc7, 0x8e, - 0xc1, 0x20, 0xc8, 0x8e, 0xc1, 0x20, 0xc8, 0x8f, 0xc4, 0x20, 0xc8, 0x8f, - 0xc5, 0x20, 0xc9, 0x8f, 0xc4, 0x20, 0xc9, 0x8f, 0xc5, 0x20, 0xc9, 0x8f, - 0xc4, 0x20, 0xc9, 0x8f, 0xc5, 0x20, 0xca, 0x8f, 0xc4, 0x20, 0xca, 0x8f, - 0xc5, 0x20, 0xca, 0x8f, 0xc4, 0x20, 0xcb, 0x8f, 0xc5, 0x20, 0xcb, 0x90, - 0xc7, 0x20, 0xcb, 0x8f, 0xc5, 0x20, 0xcc, 0x90, 0xc7, 0x20, 0xcc, 0x90, - 0xc7, 0x20, 0xcc, 0x90, 0xc7, 0x20, 0xcc, 0x90, 0xc7, 0x20, 0xcd, 0x90, - 0xc7, 0x20, 0xcd, 0x90, 0xc7, 0x20, 0xcd, 0x90, 0xc7, 0x20, 0xce, 0x91, - 0xca, 0x20, 0xce, 0x90, 0xc7, 0x20, 0xce, 0x91, 0xca, 0x20, 0xce, 0x91, - 0xca, 0x20, 0xcf, 0x91, 0xca, 0x20, 0xcf, 0x91, 0xca, 0x20, 0xcf, 0x91, - 0xca, 0x20, 0xd0, 0x91, 0xca, 0x20, 0xd0, 0x91, 0xca, 0x20, 0xd0, 0x92, - 0xcd, 0x20, 0xd0, 0x92, 0xcd, 0x20, 0xd1, 0x92, 0xcd, 0x20, 0xd1, 0x92, - 0xcd, 0x20, 0xd1, 0x92, 0xcd, 0x20, 0xd2, 0x92, 0xcd, 0x20, 0xd2, 0x92, - 0xcd, 0x20, 0xd2, 0x92, 0xcd, 0x20, 0xd2, 0x92, 0xcd, 0x20, 0xd3, 0x92, - 0xcd, 0x20, 0xd3, 0x93, 0xd0, 0x20, 0xd3, 0x92, 0xcd, 0x20, 0xd4, 0x93, - 0xd0, 0x20, 0xd4, 0x92, 0xcd, 0x20, 0xd4, 0x93, 0xd0, 0x20, 0xd4, 0x93, - 0xcf, 0x20, 0xd5, 0x93, 0xd0, 0x20, 0xd5, 0x93, 0xcf, 0x20, 0xd5, 0x93, - 0xd0, 0x20, 0xd6, 0x94, 0xd2, 0x20, 0xd6, 0x94, 0xd2, 0x20, 0xd6, 0x94, - 0xd2, 0x20, 0xd6, 0x94, 0xd2, 0x20, 0xd7, 0x94, 0xd2, 0x20, 0xd7, 0x94, - 0xd2, 0x20, 0xd7, 0x94, 0xd2, 0x20, 0xd7, 0x94, 0xd2, 0x20, 0xd8, 0x94, - 0xd2, 0x20, 0xd8, 0x94, 0xd2, 0x20, 0xd8, 0x94, 0xd2, 0x20, 0xd9, 0x94, - 0xd2, 0x20, 0xd9, 0x94, 0xd5, 0x20, 0xd9, 0x94, 0xd2, 0x20, 0xd9, 0x94, - 0xd5, 0x20, 0xda, 0x94, 0xd5, 0x20, 0xda, 0x94, 0xd5, 0x20, 0xda, 0x94, - 0xd5, 0x20, 0xda, 0x94, 0xd5, 0x20, 0xdb, 0x94, 0xd5, 0x20, 0xdb, 0x94, - 0xd5, 0x20, 0xdb, 0x95, 0xd7, 0x20, 0xdb, 0x94, 0xd5, 0x20, 0xdc, 0x95, - 0xd7, 0x20, 0xdc, 0x94, 0xd5, 0x20, 0xdc, 0x95, 0xd7, 0x20, 0xdd, 0x95, - 0xd7, 0x20, 0xdd, 0x95, 0xd7, 0x20, 0xdd, 0x95, 0xd7, 0x20, 0xdd, 0x95, - 0xd7, 0x20, 0xde, 0x96, 0xda, 0x20, 0xde, 0x96, 0xda, 0x20, 0xde, 0x96, - 0xda, 0x20, 0xde, 0x96, 0xda, 0x20, 0xdf, 0x96, 0xda, 0x20, 0xdf, 0x96, - 0xda, 0x20, 0xdf, 0x96, 0xda, 0x20, 0xdf, 0x96, 0xda, 0x20, 0xe0, 0x96, - 0xda, 0x20, 0xe0, 0x96, 0xda, 0x20, 0xe0, 0x97, 0xdd, 0x20, 0xe1, 0x96, - 0xda, 0x20, 0xe1, 0x97, 0xdd, 0x20, 0xe1, 0x96, 0xda, 0x20, 0xe1, 0x97, - 0xdd, 0x20, 0xe2, 0x97, 0xdc, 0x20, 0xe2, 0x97, 0xdd, 0x20, 0xe2, 0x97, - 0xdc, 0x20, 0xe2, 0x97, 0xdd, 0x20, 0xe3, 0x97, 0xdc, 0x20, 0xe3, 0x97, - 0xdd, 0x20, 0xe3, 0x98, 0xdf, 0x20, 0xe3, 0x97, 0xdd, 0x20, 0xe4, 0x98, - 0xdf, 0x20, 0xe4, 0x98, 0xdf, 0x20, 0xe4, 0x98, 0xdf, 0x20, 0xe4, 0x98, - 0xdf, 0x20, 0xe5, 0x98, 0xdf, 0x20, 0xe5, 0x98, 0xdf, 0x20, 0xe5, 0x98, - 0xdf, 0x20, 0xe5, 0x99, 0xe1, 0x20, 0xe6, 0x99, 0xe2, 0x20, 0xe6, 0x99, - 0xe1, 0x20, 0xe6, 0x99, 0xe2, 0x20, 0xe6, 0x99, 0xe1, 0x20, 0xe7, 0x99, - 0xe2, 0x20, 0xe7, 0x99, 0xe1, 0x20, 0xe7, 0x99, 0xe2, 0x20, 0xe7, 0x99, - 0xe1, 0x20, 0xe8, 0x99, 0xe2, 0x20, 0xe8, 0x9a, 0xe4, 0x20, 0xe8, 0x99, - 0xe2, 0x20, 0xe8, 0x9a, 0xe4, 0x20, 0xe9, 0x99, 0xe2, 0x20, 0xe9, 0x9a, - 0xe4, 0x20, 0xe9, 0x9a, 0xe4, 0x20, 0xe9, 0x9a, 0xe4, 0x20, 0xea, 0x9a, - 0xe4, 0x20, 0xea, 0x9a, 0xe4, 0x20, 0xea, 0x9a, 0xe6, 0x20, 0xea, 0x9a, - 0xe4, 0x20, 0xeb, 0x9a, 0xe6, 0x20, 0xeb, 0x9a, 0xe4, 0x20, 0xeb, 0x9a, - 0xe6, 0x20, 0xeb, 0x9a, 0xe6, 0x20, 0xec, 0x9a, 0xe6, 0x20, 0xec, 0x9a, - 0xe6, 0x20, 0xec, 0x9a, 0xe6, 0x20, 0xec, 0x9b, 0xe8, 0x20, 0xec, 0x9b, - 0xe9, 0x20, 0xed, 0x9b, 0xe8, 0x20, 0xed, 0x9b, 0xe9, 0x20, 0xed, 0x9b, - 0xe8, 0x20, 0xed, 0x9b, 0xe9, 0x20, 0xee, 0x9b, 0xe8, 0x20, 0xee, 0x9b, - 0xe9, 0x20, 0xee, 0x9b, 0xe8, 0x20, 0xee, 0x9b, 0xe9, 0x20, 0xef, 0x9c, - 0xeb, 0x20, 0xef, 0x9b, 0xe9, 0x20, 0xef, 0x9c, 0xeb, 0x20, 0xef, 0x9b, - 0xe9, 0x20, 0xf0, 0x9c, 0xeb, 0x20, 0xf0, 0x9b, 0xe9, 0x20, 0xf0, 0x9c, - 0xeb, 0x20, 0xf0, 0x9c, 0xeb, 0x20, 0xf1, 0x9c, 0xeb, 0x20, 0xf1, 0x9c, - 0xeb, 0x20, 0xf1, 0x9c, 0xeb, 0x20, 0xf1, 0x9d, 0xed, 0x20, 0xf2, 0x9d, - 0xed, 0x20, 0xf2, 0x9d, 0xed, 0x20, 0xf2, 0x9d, 0xed, 0x20, 0xf2, 0x9d, - 0xed, 0x20, 0xf2, 0x9d, 0xed, 0x20, 0xf3, 0x9d, 0xed, 0x20, 0xf3, 0x9d, - 0xed, 0x20, 0xf3, 0x9d, 0xed, 0x20, 0xf3, 0x9d, 0xed, 0x20, 0xf4, 0x9e, - 0xef, 0x20, 0xf4, 0x9d, 0xed, 0x20, 0xf4, 0x9e, 0xef, 0x20, 0xf4, 0x9d, - 0xed, 0x20, 0xf5, 0x9e, 0xef, 0x20, 0xf5, 0x9e, 0xef, 0x20, 0xf5, 0x9e, - 0xef, 0x20, 0xf5, 0x9e, 0xef, 0x20, 0xf5, 0x9e, 0xef, 0x20, 0xf6, 0x9f, - 0xf2, 0x20, 0xf6, 0x9e, 0xef, 0x20, 0xf6, 0x9f, 0xf2, 0x20, 0xf6, 0x9e, - 0xef, 0x20, 0xf7, 0x9f, 0xf2, 0x20, 0xf7, 0x9f, 0xf1, 0x20, 0xf7, 0x9f, - 0xf2, 0x20, 0xf7, 0x9f, 0xf1, 0x20, 0xf8, 0x9f, 0xf2, 0x20, 0xf8, 0x9f, - 0xf4, 0x20, 0xf8, 0x9f, 0xf4, 0x20, 0xf8, 0x9f, 0xf4, 0x20, 0xf8, 0x9f, - 0xf4, 0x20, 0xf9, 0x9f, 0xf4, 0x20, 0xf9, 0x9f, 0xf4, 0x20, 0xf9, 0x9f, - 0xf4, 0x20, 0xf9, 0x9f, 0xf4, 0x20, 0xfa, 0x9f, 0xf4, 0x20, 0xfa, 0x9f, - 0xf4, 0x20, 0xfa, 0x9f, 0xf4, 0x20, 0xfa, 0x9f, 0xf4, 0x20, 0xfa, 0xa0, - 0xf6, 0x20, 0xfb, 0x9f, 0xf4, 0x20, 0xfb, 0xa0, 0xf6, 0x20, 0xfb, 0x9f, - 0xf4, 0x20, 0xfb, 0xa0, 0xf6, 0x20, 0xfc, 0xa0, 0xf6, 0x20, 0xfc, 0xa0, - 0xf6, 0x20, 0xfc, 0xa0, 0xf6, 0x20, 0xfc, 0xa0, 0xf6, 0x20, 0xfc, 0xa1, - 0xf8, 0x20, 0xfd, 0xa0, 0xf6, 0x20, 0xfd, 0xa1, 0xf8, 0x20, 0xfd, 0xa0, - 0xf6, 0x20, 0xfd, 0xa1, 0xf8, 0x20, 0xfe, 0xa1, 0xf8, 0x20, 0xfe, 0xa1, - 0xf8, 0x20, 0xfe, 0xa1, 0xf8, 0x20, 0xfe, 0xa1, 0xf8, 0x20, 0xfe, 0xa2, - 0xfa, 0x20, 0xff, 0xa2, 0xfa, 0x20, 0xff, 0xa2, 0xfa, 0x20, 0x03, 0x84, - 0x9b, 0x21, 0x0a, 0x84, 0x9b, 0x21, 0x0f, 0x84, 0x9b, 0x21, 0x14, 0x84, - 0x9b, 0x21, 0x17, 0x84, 0x9b, 0x21, 0x1b, 0x84, 0x9b, 0x21, 0x1e, 0x84, - 0x9b, 0x21, 0x20, 0x86, 0x9b, 0x21, 0x23, 0x84, 0x9b, 0x21, 0x25, 0x86, - 0x9b, 0x21, 0x27, 0x84, 0x9b, 0x21, 0x29, 0x86, 0x9b, 0x21, 0x2b, 0x84, - 0x9b, 0x21, 0x2d, 0x86, 0x9b, 0x21, 0x2f, 0x84, 0x9b, 0x21, 0x31, 0x86, - 0x9b, 0x21, 0x32, 0x84, 0x9b, 0x21, 0x34, 0x86, 0x9b, 0x21, 0x35, 0x84, - 0x9b, 0x21, 0x37, 0x86, 0x9b, 0x21, 0x38, 0x84, 0x9b, 0x21, 0x3a, 0x86, - 0x9b, 0x21, 0x3b, 0x84, 0x9b, 0x21, 0x3c, 0x86, 0x9b, 0x21, 0x3e, 0x84, - 0x9b, 0x21, 0x3f, 0x86, 0x9b, 0x21, 0x40, 0x84, 0x9b, 0x21, 0x42, 0x86, - 0x9b, 0x21, 0x43, 0x84, 0x9b, 0x21, 0x44, 0x86, 0x9b, 0x21, 0x45, 0x84, - 0x9b, 0x21, 0x46, 0x86, 0x9b, 0x21, 0x47, 0x84, 0x9b, 0x21, 0x48, 0x86, - 0x9b, 0x21, 0x49, 0x84, 0x9b, 0x21, 0x4a, 0x86, 0x9b, 0x21, 0x4b, 0x84, - 0x9b, 0x21, 0x4c, 0x86, 0x9b, 0x21, 0x4d, 0x84, 0x9b, 0x21, 0x4e, 0x86, - 0x9b, 0x21, 0x4f, 0x84, 0x9b, 0x21, 0x50, 0x86, 0x9b, 0x21, 0x51, 0x84, - 0x9b, 0x21, 0x52, 0x86, 0x9b, 0x21, 0x53, 0x84, 0x9b, 0x21, 0x54, 0x86, - 0x9b, 0x21, 0x55, 0x84, 0x9b, 0x21, 0x56, 0x86, 0x9b, 0x21, 0x57, 0x84, - 0x9b, 0x21, 0x58, 0x86, 0x9b, 0x21, 0x58, 0x84, 0x9b, 0x21, 0x59, 0x86, - 0x9b, 0x21, 0x5a, 0x84, 0x9b, 0x21, 0x5b, 0x86, 0x9b, 0x21, 0x5c, 0x84, - 0x9b, 0x21, 0x5d, 0x86, 0x9b, 0x21, 0x5d, 0x84, 0x9b, 0x21, 0x5e, 0x86, - 0x9b, 0x21, 0x5f, 0x84, 0x9b, 0x21, 0x60, 0x86, 0x9b, 0x21, 0x60, 0x84, - 0x9b, 0x21, 0x61, 0x84, 0x9c, 0x21, 0x62, 0x84, 0x9b, 0x21, 0x63, 0x84, - 0x9c, 0x21, 0x63, 0x84, 0x9b, 0x21, 0x64, 0x84, 0x9c, 0x21, 0x65, 0x84, - 0x9b, 0x21, 0x66, 0x84, 0x9c, 0x21, 0x66, 0x84, 0x9b, 0x21, 0x67, 0x84, - 0x9c, 0x21, 0x68, 0x84, 0x9b, 0x21, 0x68, 0x84, 0x9c, 0x21, 0x69, 0x84, - 0x9b, 0x21, 0x6a, 0x84, 0x9c, 0x21, 0x6a, 0x84, 0x9b, 0x21, 0x6b, 0x84, - 0x9c, 0x21, 0x6c, 0x84, 0x9b, 0x21, 0x6c, 0x84, 0x9c, 0x21, 0x6d, 0x84, - 0x9b, 0x21, 0x6e, 0x84, 0x9c, 0x21, 0x6e, 0x84, 0x9b, 0x21, 0x6f, 0x84, - 0x9c, 0x21, 0x70, 0x84, 0x9b, 0x21, 0x70, 0x84, 0x9c, 0x21, 0x71, 0x84, - 0x9b, 0x21, 0x72, 0x84, 0x9c, 0x21, 0x72, 0x84, 0x9b, 0x21, 0x73, 0x84, - 0x9c, 0x21, 0x73, 0x84, 0x9b, 0x21, 0x74, 0x84, 0x9c, 0x21, 0x75, 0x84, - 0x9b, 0x21, 0x75, 0x84, 0x9c, 0x21, 0x76, 0x84, 0x9b, 0x21, 0x76, 0x84, - 0x9c, 0x21, 0x77, 0x84, 0x9b, 0x21, 0x78, 0x84, 0x9c, 0x21, 0x78, 0x84, - 0x9b, 0x21, 0x79, 0x84, 0x9c, 0x21, 0x79, 0x84, 0x9b, 0x21, 0x7a, 0x84, - 0x9c, 0x21, 0x7a, 0x84, 0x9b, 0x21, 0x7b, 0x84, 0x9c, 0x21, 0x7c, 0x84, - 0x9b, 0x21, 0x7c, 0x84, 0x9c, 0x21, 0x7d, 0x84, 0x9b, 0x21, 0x7d, 0x84, - 0x9c, 0x21, 0x7e, 0x84, 0x9b, 0x21, 0x7e, 0x84, 0x9c, 0x21, 0x7f, 0x84, - 0x9b, 0x21, 0x7f, 0x84, 0x9c, 0x21, 0x80, 0x84, 0x9b, 0x21, 0x81, 0x84, - 0x9c, 0x21, 0x81, 0x84, 0x9b, 0x21, 0x82, 0x84, 0x9c, 0x21, 0x82, 0x84, - 0x9b, 0x21, 0x83, 0x84, 0x9c, 0x21, 0x83, 0x84, 0x9b, 0x21, 0x84, 0x84, - 0x9c, 0x21, 0x84, 0x84, 0x9b, 0x21, 0x85, 0x84, 0x9c, 0x21, 0x85, 0x84, - 0x9b, 0x21, 0x86, 0x84, 0x9c, 0x21, 0x86, 0x84, 0x9b, 0x21, 0x87, 0x84, - 0x9c, 0x21, 0x87, 0x84, 0x9b, 0x21, 0x88, 0x84, 0x9c, 0x21, 0x88, 0x84, - 0x9b, 0x21, 0x89, 0x84, 0x9c, 0x21, 0x89, 0x84, 0x9b, 0x21, 0x8a, 0x84, - 0x9c, 0x21, 0x8a, 0x84, 0x9b, 0x21, 0x8b, 0x84, 0x9c, 0x21, 0x8b, 0x84, - 0x9b, 0x21, 0x8c, 0x84, 0x9c, 0x21, 0x8c, 0x84, 0x9b, 0x21, 0x8d, 0x84, - 0x9c, 0x21, 0x8d, 0x84, 0x9b, 0x21, 0x8e, 0x84, 0x9c, 0x21, 0x8e, 0x84, - 0x9b, 0x21, 0x8e, 0x84, 0x9c, 0x21, 0x8f, 0x84, 0x9b, 0x21, 0x8f, 0x84, - 0x9c, 0x21, 0x90, 0x84, 0x9b, 0x21, 0x90, 0x84, 0x9c, 0x21, 0x91, 0x84, - 0x9b, 0x21, 0x91, 0x84, 0x9c, 0x21, 0x92, 0x84, 0x9b, 0x21, 0x92, 0x84, - 0x9c, 0x21, 0x93, 0x84, 0x9b, 0x21, 0x93, 0x84, 0x9c, 0x21, 0x94, 0x84, - 0x9b, 0x21, 0x94, 0x84, 0x9c, 0x21, 0x94, 0x84, 0x9b, 0x21, 0x95, 0x84, - 0x9c, 0x21, 0x95, 0x84, 0x9b, 0x21, 0x96, 0x84, 0x9c, 0x21, 0x96, 0x84, - 0x9b, 0x21, 0x97, 0x84, 0x9c, 0x21, 0x97, 0x84, 0x9b, 0x21, 0x98, 0x84, - 0x9c, 0x21, 0x98, 0x84, 0x9b, 0x21, 0x98, 0x84, 0x9c, 0x21, 0x99, 0x84, - 0x9b, 0x21, 0x99, 0x84, 0x9c, 0x21, 0x9a, 0x84, 0x9b, 0x21, 0x9a, 0x84, - 0x9c, 0x21, 0x9a, 0x84, 0x9b, 0x21, 0x9b, 0x84, 0x9c, 0x21, 0x9b, 0x84, - 0x9b, 0x21, 0x9c, 0x84, 0x9c, 0x21, 0x9c, 0x84, 0x9c, 0x21, 0x9d, 0x84, - 0x9d, 0x21, 0x9d, 0x84, 0x9d, 0x21, 0x9d, 0x84, 0x9d, 0x21, 0x9e, 0x84, - 0x9e, 0x21, 0x9e, 0x84, 0x9e, 0x21, 0x9f, 0x84, 0x9f, 0x21, 0x9f, 0x84, - 0x9e, 0x21, 0x9f, 0x84, 0x9f, 0x21, 0xa0, 0x84, 0x9e, 0x21, 0xa0, 0x84, - 0x9f, 0x21, 0xa1, 0x84, 0x9e, 0x21, 0xa1, 0x84, 0x9f, 0x21, 0xa1, 0x84, - 0x9e, 0x21, 0xa2, 0x84, 0x9f, 0x21, 0xa2, 0x84, 0x9e, 0x21, 0xa3, 0x84, - 0x9f, 0x21, 0xa3, 0x84, 0x9e, 0x21, 0xa3, 0x84, 0x9f, 0x21, 0xa4, 0x84, - 0x9e, 0x21, 0xa4, 0x84, 0x9f, 0x21, 0xa5, 0x85, 0xa2, 0x21, 0xa5, 0x84, - 0x9f, 0x21, 0xa5, 0x85, 0xa2, 0x21, 0xa6, 0x85, 0xa2, 0x21, 0xa6, 0x85, - 0xa2, 0x21, 0xa6, 0x85, 0xa2, 0x21, 0xa7, 0x85, 0xa2, 0x21, 0xa7, 0x85, - 0xa2, 0x21, 0xa8, 0x85, 0xa2, 0x21, 0xa8, 0x85, 0xa2, 0x21, 0xa8, 0x85, - 0xa2, 0x21, 0xa9, 0x86, 0xa6, 0x21, 0xa9, 0x86, 0xa6, 0x21, 0xaa, 0x86, - 0xa6, 0x21, 0xaa, 0x86, 0xa6, 0x21, 0xaa, 0x86, 0xa6, 0x21, 0xab, 0x86, - 0xa6, 0x21, 0xab, 0x86, 0xa6, 0x21, 0xab, 0x86, 0xa6, 0x21, 0xac, 0x86, - 0xa6, 0x21, 0xac, 0x86, 0xa6, 0x21, 0xac, 0x87, 0xaa, 0x21, 0xad, 0x86, - 0xa6, 0x21, 0xad, 0x87, 0xaa, 0x21, 0xae, 0x87, 0xa9, 0x21, 0xae, 0x87, - 0xaa, 0x21, 0xae, 0x87, 0xa9, 0x21, 0xaf, 0x87, 0xaa, 0x21, 0xaf, 0x87, - 0xa9, 0x21, 0xaf, 0x87, 0xaa, 0x21, 0xb0, 0x88, 0xad, 0x21, 0xb0, 0x88, - 0xad, 0x21, 0xb0, 0x88, 0xad, 0x21, 0xb1, 0x88, 0xad, 0x21, 0xb1, 0x88, - 0xad, 0x21, 0xb2, 0x88, 0xad, 0x21, 0xb2, 0x88, 0xad, 0x21, 0xb2, 0x88, - 0xad, 0x21, 0xb3, 0x88, 0xad, 0x21, 0xb3, 0x88, 0xad, 0x21, 0xb3, 0x89, - 0xb0, 0x21, 0xb4, 0x88, 0xad, 0x21, 0xb4, 0x89, 0xb0, 0x21, 0xb4, 0x89, - 0xb0, 0x21, 0xb5, 0x89, 0xb0, 0x21, 0xb5, 0x89, 0xb2, 0x21, 0xb5, 0x89, - 0xb0, 0x21, 0xb6, 0x89, 0xb2, 0x21, 0xb6, 0x89, 0xb0, 0x21, 0xb6, 0x89, - 0xb2, 0x21, 0xb7, 0x89, 0xb2, 0x21, 0xb7, 0x89, 0xb2, 0x21, 0xb7, 0x89, - 0xb2, 0x21, 0xb8, 0x89, 0xb2, 0x21, 0xb8, 0x8a, 0xb3, 0x21, 0xb8, 0x8a, - 0xb4, 0x21, 0xb9, 0x8a, 0xb3, 0x21, 0xb9, 0x8a, 0xb4, 0x21, 0xb9, 0x8b, - 0xb7, 0x21, 0xba, 0x8b, 0xb7, 0x21, 0xba, 0x8b, 0xb7, 0x21, 0xba, 0x8b, - 0xb7, 0x21, 0xbb, 0x8b, 0xb7, 0x21, 0xbb, 0x8b, 0xb7, 0x21, 0xbb, 0x8b, - 0xb7, 0x21, 0xbc, 0x8b, 0xb7, 0x21, 0xbc, 0x8b, 0xb7, 0x21, 0xbc, 0x8b, - 0xb7, 0x21, 0xbd, 0x8b, 0xb7, 0x21, 0xbd, 0x8b, 0xb7, 0x21, 0xbd, 0x8c, - 0xba, 0x21, 0xbe, 0x8b, 0xb7, 0x21, 0xbe, 0x8c, 0xba, 0x21, 0xbe, 0x8c, - 0xba, 0x21, 0xbf, 0x8c, 0xba, 0x21, 0xbf, 0x8c, 0xba, 0x21, 0xbf, 0x8c, - 0xba, 0x21, 0xc0, 0x8c, 0xba, 0x21, 0xc0, 0x8c, 0xba, 0x21, 0xc0, 0x8d, - 0xbd, 0x21, 0xc1, 0x8c, 0xba, 0x21, 0xc1, 0x8d, 0xbd, 0x21, 0xc1, 0x8d, - 0xbd, 0x21, 0xc1, 0x8d, 0xbd, 0x21, 0xc2, 0x8d, 0xbd, 0x21, 0xc2, 0x8d, - 0xbd, 0x21, 0xc2, 0x8d, 0xbd, 0x21, 0xc3, 0x8d, 0xbd, 0x21, 0xc3, 0x8e, - 0xc0, 0x21, 0xc3, 0x8e, 0xc0, 0x21, 0xc4, 0x8e, 0xc0, 0x21, 0xc4, 0x8e, - 0xc0, 0x21, 0xc4, 0x8e, 0xc0, 0x21, 0xc5, 0x8e, 0xc0, 0x21, 0xc5, 0x8e, - 0xc0, 0x21, 0xc5, 0x8e, 0xc0, 0x21, 0xc6, 0x8e, 0xc0, 0x21, 0xc6, 0x8e, - 0xc0, 0x21, 0xc6, 0x8e, 0xc3, 0x21, 0xc6, 0x8e, 0xc0, 0x21, 0xc7, 0x8e, - 0xc3, 0x21, 0xc7, 0x8e, 0xc0, 0x21, 0xc7, 0x8e, 0xc3, 0x21, 0xc8, 0x8e, - 0xc3, 0x21, 0xc8, 0x8e, 0xc3, 0x21, 0xc8, 0x8e, 0xc3, 0x21, 0xc9, 0x8e, - 0xc3, 0x21, 0xc9, 0x8e, 0xc3, 0x21, 0xc9, 0x8e, 0xc3, 0x21, 0xc9, 0x8f, - 0xc6, 0x21, 0xca, 0x8e, 0xc3, 0x21, 0xca, 0x8f, 0xc6, 0x21, 0xca, 0x8f, - 0xc6, 0x21, 0xcb, 0x8f, 0xc6, 0x21, 0xcb, 0x8f, 0xc6, 0x21, 0xcb, 0x8f, - 0xc6, 0x21, 0xcc, 0x8f, 0xc6, 0x21, 0xcc, 0x8f, 0xc6, 0x21, 0xcc, 0x90, - 0xc9, 0x21, 0xcc, 0x90, 0xc9, 0x21, 0xcd, 0x90, 0xc9, 0x21, 0xcd, 0x90, - 0xc9, 0x21, 0xcd, 0x90, 0xc9, 0x21, 0xce, 0x90, 0xc9, 0x21, 0xce, 0x90, - 0xc9, 0x21, 0xce, 0x90, 0xc9, 0x21, 0xce, 0x90, 0xc9, 0x21, 0xcf, 0x90, - 0xc9, 0x21, 0xcf, 0x91, 0xcc, 0x21, 0xcf, 0x90, 0xc9, 0x21, 0xd0, 0x91, - 0xcc, 0x21, 0xd0, 0x91, 0xcb, 0x21, 0xd0, 0x91, 0xcc, 0x21, 0xd0, 0x91, - 0xcb, 0x21, 0xd1, 0x91, 0xcc, 0x21, 0xd1, 0x91, 0xcb, 0x21, 0xd1, 0x91, - 0xcc, 0x21, 0xd2, 0x92, 0xce, 0x21, 0xd2, 0x92, 0xce, 0x21, 0xd2, 0x92, - 0xce, 0x21, 0xd2, 0x92, 0xce, 0x21, 0xd3, 0x92, 0xce, 0x21, 0xd3, 0x92, - 0xce, 0x21, 0xd3, 0x92, 0xce, 0x21, 0xd4, 0x92, 0xce, 0x21, 0xd4, 0x92, - 0xce, 0x21, 0xd4, 0x92, 0xce, 0x21, 0xd4, 0x93, 0xd1, 0x21, 0xd5, 0x92, - 0xce, 0x21, 0xd5, 0x93, 0xd1, 0x21, 0xd5, 0x92, 0xce, 0x21, 0xd6, 0x93, - 0xd1, 0x21, 0xd6, 0x93, 0xd1, 0x21, 0xd6, 0x93, 0xd1, 0x21, 0xd6, 0x93, - 0xd1, 0x21, 0xd7, 0x93, 0xd1, 0x21, 0xd7, 0x94, 0xd4, 0x21, 0xd7, 0x93, - 0xd1, 0x21, 0xd7, 0x94, 0xd4, 0x21, 0xd8, 0x93, 0xd1, 0x21, 0xd8, 0x94, - 0xd4, 0x21, 0xd8, 0x94, 0xd3, 0x21, 0xd9, 0x94, 0xd4, 0x21, 0xd9, 0x94, - 0xd3, 0x21, 0xd9, 0x94, 0xd4, 0x21, 0xd9, 0x94, 0xd3, 0x21, 0xda, 0x94, - 0xd4, 0x21, 0xda, 0x95, 0xd6, 0x21, 0xda, 0x95, 0xd6, 0x21, 0xda, 0x95, - 0xd6, 0x21, 0xdb, 0x95, 0xd6, 0x21, 0xdb, 0x95, 0xd6, 0x21, 0xdb, 0x95, - 0xd6, 0x21, 0xdb, 0x95, 0xd6, 0x21, 0xdc, 0x95, 0xd6, 0x21, 0xdc, 0x95, - 0xd6, 0x21, 0xdc, 0x95, 0xd6, 0x21, 0xdd, 0x96, 0xd9, 0x21, 0xdd, 0x95, - 0xd6, 0x21, 0xdd, 0x96, 0xd9, 0x21, 0xdd, 0x95, 0xd6, 0x21, 0xde, 0x96, - 0xd9, 0x21, 0xde, 0x96, 0xd9, 0x21, 0xde, 0x96, 0xd9, 0x21, 0xde, 0x96, - 0xd9, 0x21, 0xdf, 0x96, 0xd9, 0x21, 0xdf, 0x97, 0xdb, 0x21, 0xdf, 0x96, - 0xd9, 0x21, 0xdf, 0x97, 0xdb, 0x21, 0xe0, 0x96, 0xd9, 0x21, 0xe0, 0x97, - 0xdb, 0x21, 0xe0, 0x97, 0xdb, 0x21, 0xe1, 0x97, 0xdb, 0x21, 0xe1, 0x97, - 0xdb, 0x21, 0xe1, 0x97, 0xdb, 0x21, 0xe1, 0x98, 0xde, 0x21, 0xe2, 0x98, - 0xde, 0x21, 0xe2, 0x98, 0xde, 0x21, 0xe2, 0x98, 0xde, 0x21, 0xe2, 0x98, - 0xde, 0x21, 0xe3, 0x98, 0xde, 0x21, 0xe3, 0x98, 0xde, 0x21, 0xe3, 0x98, - 0xde, 0x21, 0xe3, 0x98, 0xde, 0x21, 0xe4, 0x98, 0xde, 0x21, 0xe4, 0x98, - 0xde, 0x21, 0xe4, 0x98, 0xde, 0x21, 0xe4, 0x98, 0xe0, 0x21, 0xe5, 0x98, - 0xde, 0x21, 0xe5, 0x98, 0xe0, 0x21, 0xe5, 0x98, 0xe0, 0x21, 0xe5, 0x98, - 0xe0, 0x21, 0xe6, 0x98, 0xe0, 0x21, 0xe6, 0x98, 0xe0, 0x21, 0xe6, 0x98, - 0xe0, 0x21, 0xe6, 0x98, 0xe0, 0x21, 0xe7, 0x99, 0xe3, 0x21, 0xe7, 0x98, - 0xe0, 0x21, 0xe7, 0x99, 0xe3, 0x21, 0xe7, 0x98, 0xe0, 0x21, 0xe8, 0x99, - 0xe3, 0x21, 0xe8, 0x99, 0xe2, 0x21, 0xe8, 0x99, 0xe3, 0x21, 0xe8, 0x99, - 0xe2, 0x21, 0xe9, 0x99, 0xe3, 0x21, 0xe9, 0x9a, 0xe5, 0x21, 0xe9, 0x9a, - 0xe5, 0x21, 0xe9, 0x9a, 0xe5, 0x21, 0xea, 0x9a, 0xe5, 0x21, 0xea, 0x9a, - 0xe5, 0x21, 0xea, 0x9a, 0xe5, 0x21, 0xea, 0x9a, 0xe5, 0x21, 0xeb, 0x9a, - 0xe5, 0x21, 0xeb, 0x9a, 0xe5, 0x21, 0xeb, 0x9a, 0xe5, 0x21, 0xeb, 0x9b, - 0xe7, 0x21, 0xec, 0x9a, 0xe5, 0x21, 0xec, 0x9b, 0xe7, 0x21, 0xec, 0x9a, - 0xe5, 0x21, 0xec, 0x9b, 0xe7, 0x21, 0xec, 0x9b, 0xe7, 0x21, 0xed, 0x9b, - 0xe7, 0x21, 0xed, 0x9b, 0xe7, 0x21, 0xed, 0x9b, 0xe7, 0x21, 0xed, 0x9c, - 0xea, 0x21, 0xee, 0x9c, 0xea, 0x21, 0xee, 0x9c, 0xea, 0x21, 0xee, 0x9c, - 0xea, 0x21, 0xee, 0x9c, 0xea, 0x21, 0xef, 0x9c, 0xea, 0x21, 0xef, 0x9c, - 0xea, 0x21, 0xef, 0x9c, 0xea, 0x21, 0xef, 0x9c, 0xea, 0x21, 0xf0, 0x9c, - 0xea, 0x21, 0xf0, 0x9d, 0xec, 0x21, 0xf0, 0x9c, 0xea, 0x21, 0xf0, 0x9d, - 0xec, 0x21, 0xf1, 0x9c, 0xea, 0x21, 0xf1, 0x9d, 0xec, 0x21, 0xf1, 0x9c, - 0xea, 0x21, 0xf1, 0x9d, 0xec, 0x21, 0xf2, 0x9d, 0xec, 0x21, 0xf2, 0x9d, - 0xec, 0x21, 0xf2, 0x9d, 0xec, 0x21, 0xf2, 0x9d, 0xec, 0x21, 0xf2, 0x9d, - 0xee, 0x21, 0xf3, 0x9d, 0xec, 0x21, 0xf3, 0x9d, 0xee, 0x21, 0xf3, 0x9d, - 0xec, 0x21, 0xf3, 0x9d, 0xee, 0x21, 0xf4, 0x9d, 0xee, 0x21, 0xf4, 0x9d, - 0xee, 0x21, 0xf4, 0x9d, 0xee, 0x21, 0xf4, 0x9d, 0xee, 0x21, 0xf5, 0x9e, - 0xf0, 0x21, 0xf5, 0x9e, 0xf1, 0x21, 0xf5, 0x9e, 0xf0, 0x21, 0xf5, 0x9e, - 0xf1, 0x21, 0xf5, 0x9e, 0xf0, 0x21, 0xf6, 0x9e, 0xf1, 0x21, 0xf6, 0x9e, - 0xf0, 0x21, 0xf6, 0x9e, 0xf1, 0x21, 0xf6, 0x9e, 0xf0, 0x21, 0xf7, 0x9e, - 0xf1, 0x21, 0xf7, 0x9f, 0xf3, 0x21, 0xf7, 0x9e, 0xf1, 0x21, 0xf7, 0x9f, - 0xf3, 0x21, 0xf8, 0x9e, 0xf1, 0x21, 0xf8, 0x9f, 0xf3, 0x21, 0xf8, 0x9f, - 0xf2, 0x21, 0xf8, 0x9f, 0xf3, 0x21, 0xf8, 0x9f, 0xf2, 0x21, 0xf9, 0x9f, - 0xf3, 0x21, 0xf9, 0xa0, 0xf5, 0x21, 0xf9, 0x9f, 0xf3, 0x21, 0xf9, 0xa0, - 0xf5, 0x21, 0xfa, 0x9f, 0xf3, 0x21, 0xfa, 0xa0, 0xf5, 0x21, 0xfa, 0x9f, - 0xf3, 0x21, 0xfa, 0xa0, 0xf5, 0x21, 0xfa, 0xa0, 0xf5, 0x21, 0xfb, 0xa0, - 0xf5, 0x21, 0xfb, 0xa0, 0xf5, 0x21, 0xfb, 0xa0, 0xf5, 0x21, 0xfb, 0xa1, - 0xf7, 0x21, 0xfc, 0xa1, 0xf7, 0x21, 0xfc, 0xa1, 0xf7, 0x21, 0xfc, 0xa1, - 0xf7, 0x21, 0xfc, 0xa1, 0xf7, 0x21, 0xfc, 0xa1, 0xf7, 0x21, 0xfd, 0xa1, - 0xf7, 0x21, 0xfd, 0xa1, 0xf7, 0x21, 0xfd, 0xa1, 0xf7, 0x21, 0xfd, 0xa1, - 0xf7, 0x21, 0xfe, 0xa1, 0xf9, 0x21, 0xfe, 0xa1, 0xf7, 0x21, 0xfe, 0xa1, - 0xf9, 0x21, 0xfe, 0xa1, 0xf7, 0x21, 0xfe, 0xa1, 0xf9, 0x21, 0xff, 0xa1, - 0xf9, 0x21, 0xff, 0xa1, 0xf9, 0x21, 0x03, 0x83, 0x9b, 0x21, 0x0a, 0x83, - 0x9b, 0x21, 0x0f, 0x83, 0x9b, 0x21, 0x14, 0x83, 0x9b, 0x21, 0x17, 0x83, - 0x9b, 0x21, 0x1b, 0x83, 0x9b, 0x21, 0x1e, 0x83, 0x9b, 0x21, 0x20, 0x86, - 0x9b, 0x21, 0x23, 0x83, 0x9b, 0x21, 0x25, 0x83, 0x9c, 0x21, 0x27, 0x83, - 0x9b, 0x21, 0x29, 0x83, 0x9c, 0x21, 0x2b, 0x83, 0x9b, 0x21, 0x2d, 0x83, - 0x9c, 0x21, 0x2f, 0x83, 0x9b, 0x21, 0x31, 0x83, 0x9c, 0x21, 0x32, 0x83, - 0x9b, 0x21, 0x34, 0x83, 0x9c, 0x21, 0x35, 0x83, 0x9b, 0x21, 0x37, 0x83, - 0x9c, 0x21, 0x38, 0x83, 0x9b, 0x21, 0x3a, 0x83, 0x9c, 0x21, 0x3b, 0x83, - 0x9b, 0x21, 0x3c, 0x83, 0x9c, 0x21, 0x3e, 0x83, 0x9b, 0x21, 0x3f, 0x83, - 0x9c, 0x21, 0x40, 0x83, 0x9b, 0x21, 0x42, 0x83, 0x9c, 0x21, 0x43, 0x83, - 0x9b, 0x21, 0x44, 0x83, 0x9c, 0x21, 0x45, 0x83, 0x9b, 0x21, 0x46, 0x83, - 0x9c, 0x21, 0x47, 0x83, 0x9b, 0x21, 0x48, 0x83, 0x9c, 0x21, 0x49, 0x83, - 0x9b, 0x21, 0x4a, 0x83, 0x9c, 0x21, 0x4b, 0x83, 0x9b, 0x21, 0x4c, 0x83, - 0x9c, 0x21, 0x4d, 0x83, 0x9b, 0x21, 0x4e, 0x83, 0x9c, 0x21, 0x4f, 0x83, - 0x9b, 0x21, 0x50, 0x83, 0x9c, 0x21, 0x51, 0x83, 0x9b, 0x21, 0x52, 0x83, - 0x9c, 0x21, 0x53, 0x83, 0x9b, 0x21, 0x54, 0x83, 0x9c, 0x21, 0x55, 0x83, - 0x9b, 0x21, 0x56, 0x83, 0x9c, 0x21, 0x57, 0x83, 0x9b, 0x21, 0x58, 0x83, - 0x9c, 0x21, 0x58, 0x83, 0x9b, 0x21, 0x59, 0x83, 0x9c, 0x21, 0x5a, 0x83, - 0x9b, 0x21, 0x5b, 0x83, 0x9c, 0x21, 0x5c, 0x83, 0x9b, 0x21, 0x5d, 0x83, - 0x9c, 0x21, 0x5d, 0x83, 0x9b, 0x21, 0x5e, 0x83, 0x9c, 0x21, 0x5f, 0x83, - 0x9b, 0x21, 0x60, 0x83, 0x9c, 0x21, 0x60, 0x83, 0x9b, 0x21, 0x61, 0x83, - 0x9c, 0x21, 0x62, 0x83, 0x9b, 0x21, 0x63, 0x83, 0x9c, 0x21, 0x63, 0x83, - 0x9b, 0x21, 0x64, 0x83, 0x9c, 0x21, 0x65, 0x83, 0x9b, 0x21, 0x66, 0x83, - 0x9c, 0x21, 0x66, 0x83, 0x9b, 0x21, 0x67, 0x83, 0x9c, 0x21, 0x68, 0x83, - 0x9b, 0x21, 0x68, 0x83, 0x9c, 0x21, 0x69, 0x83, 0x9b, 0x21, 0x6a, 0x83, - 0x9c, 0x21, 0x6a, 0x83, 0x9b, 0x21, 0x6b, 0x83, 0x9c, 0x21, 0x6c, 0x83, - 0x9b, 0x21, 0x6c, 0x83, 0x9c, 0x21, 0x6d, 0x83, 0x9b, 0x21, 0x6e, 0x83, - 0x9c, 0x21, 0x6e, 0x83, 0x9b, 0x21, 0x6f, 0x83, 0x9c, 0x21, 0x70, 0x83, - 0x9b, 0x21, 0x70, 0x83, 0x9c, 0x21, 0x71, 0x83, 0x9b, 0x21, 0x72, 0x83, - 0x9c, 0x21, 0x72, 0x83, 0x9b, 0x21, 0x73, 0x83, 0x9c, 0x21, 0x73, 0x83, - 0x9b, 0x21, 0x74, 0x83, 0x9c, 0x21, 0x75, 0x83, 0x9b, 0x21, 0x75, 0x83, - 0x9c, 0x21, 0x76, 0x83, 0x9b, 0x21, 0x76, 0x83, 0x9c, 0x21, 0x77, 0x83, - 0x9b, 0x21, 0x78, 0x83, 0x9c, 0x21, 0x78, 0x83, 0x9b, 0x21, 0x79, 0x83, - 0x9c, 0x21, 0x79, 0x83, 0x9b, 0x21, 0x7a, 0x83, 0x9c, 0x21, 0x7a, 0x83, - 0x9b, 0x21, 0x7b, 0x83, 0x9c, 0x21, 0x7c, 0x83, 0x9b, 0x21, 0x7c, 0x83, - 0x9c, 0x21, 0x7d, 0x83, 0x9b, 0x21, 0x7d, 0x83, 0x9c, 0x21, 0x7e, 0x83, - 0x9b, 0x21, 0x7e, 0x83, 0x9c, 0x21, 0x7f, 0x83, 0x9b, 0x21, 0x7f, 0x83, - 0x9c, 0x21, 0x80, 0x83, 0x9b, 0x21, 0x81, 0x83, 0x9c, 0x21, 0x81, 0x83, - 0x9b, 0x21, 0x82, 0x83, 0x9c, 0x21, 0x82, 0x83, 0x9b, 0x21, 0x83, 0x83, - 0x9c, 0x21, 0x83, 0x83, 0x9b, 0x21, 0x84, 0x83, 0x9c, 0x21, 0x84, 0x83, - 0x9b, 0x21, 0x85, 0x83, 0x9c, 0x21, 0x85, 0x83, 0x9b, 0x21, 0x86, 0x83, - 0x9c, 0x21, 0x86, 0x83, 0x9b, 0x21, 0x87, 0x83, 0x9c, 0x21, 0x87, 0x83, - 0x9b, 0x21, 0x88, 0x83, 0x9c, 0x21, 0x88, 0x83, 0x9b, 0x21, 0x89, 0x83, - 0x9c, 0x21, 0x89, 0x83, 0x9b, 0x21, 0x8a, 0x83, 0x9c, 0x21, 0x8a, 0x83, - 0x9b, 0x21, 0x8b, 0x83, 0x9c, 0x21, 0x8b, 0x83, 0x9b, 0x21, 0x8c, 0x83, - 0x9c, 0x21, 0x8c, 0x83, 0x9b, 0x21, 0x8d, 0x83, 0x9c, 0x21, 0x8d, 0x83, - 0x9b, 0x21, 0x8e, 0x83, 0x9c, 0x21, 0x8e, 0x83, 0x9b, 0x21, 0x8e, 0x83, - 0x9c, 0x21, 0x8f, 0x83, 0x9b, 0x21, 0x8f, 0x83, 0x9c, 0x21, 0x90, 0x83, - 0x9b, 0x21, 0x90, 0x83, 0x9c, 0x21, 0x91, 0x83, 0x9b, 0x21, 0x91, 0x83, - 0x9c, 0x21, 0x92, 0x83, 0x9b, 0x21, 0x92, 0x83, 0x9c, 0x21, 0x93, 0x83, - 0x9b, 0x21, 0x93, 0x83, 0x9c, 0x21, 0x94, 0x83, 0x9b, 0x21, 0x94, 0x83, - 0x9c, 0x21, 0x94, 0x83, 0x9b, 0x21, 0x95, 0x83, 0x9c, 0x21, 0x95, 0x83, - 0x9b, 0x21, 0x96, 0x83, 0x9c, 0x21, 0x96, 0x83, 0x9b, 0x21, 0x97, 0x83, - 0x9c, 0x21, 0x97, 0x83, 0x9b, 0x21, 0x98, 0x83, 0x9c, 0x21, 0x98, 0x83, - 0x9b, 0x21, 0x98, 0x83, 0x9c, 0x21, 0x99, 0x83, 0x9b, 0x21, 0x99, 0x83, - 0x9c, 0x21, 0x9a, 0x83, 0x9b, 0x21, 0x9a, 0x83, 0x9c, 0x21, 0x9a, 0x83, - 0x9b, 0x21, 0x9b, 0x83, 0x9c, 0x21, 0x9b, 0x83, 0x9b, 0x21, 0x9c, 0x83, - 0x9c, 0x21, 0x9c, 0x83, 0x9c, 0x21, 0x9d, 0x83, 0x9d, 0x21, 0x9d, 0x83, - 0x9c, 0x21, 0x9d, 0x83, 0x9d, 0x21, 0x9e, 0x83, 0x9c, 0x21, 0x9e, 0x83, - 0x9d, 0x21, 0x9f, 0x83, 0x9c, 0x21, 0x9f, 0x83, 0x9d, 0x21, 0x9f, 0x83, - 0x9c, 0x21, 0xa0, 0x83, 0x9d, 0x21, 0xa0, 0x83, 0x9c, 0x21, 0xa1, 0x83, - 0x9d, 0x21, 0xa1, 0x83, 0x9c, 0x21, 0xa1, 0x83, 0x9d, 0x21, 0xa2, 0x83, - 0x9c, 0x21, 0xa2, 0x83, 0x9d, 0x21, 0xa3, 0x84, 0xa0, 0x21, 0xa3, 0x84, - 0xa1, 0x21, 0xa3, 0x84, 0xa0, 0x21, 0xa4, 0x84, 0xa1, 0x21, 0xa4, 0x84, - 0xa0, 0x21, 0xa5, 0x84, 0xa1, 0x21, 0xa5, 0x84, 0xa0, 0x21, 0xa5, 0x84, - 0xa1, 0x21, 0xa6, 0x84, 0xa0, 0x21, 0xa6, 0x84, 0xa1, 0x21, 0xa6, 0x85, - 0xa4, 0x21, 0xa7, 0x84, 0xa1, 0x21, 0xa7, 0x85, 0xa4, 0x21, 0xa8, 0x85, - 0xa4, 0x21, 0xa8, 0x85, 0xa4, 0x21, 0xa8, 0x85, 0xa4, 0x21, 0xa9, 0x85, - 0xa4, 0x21, 0xa9, 0x85, 0xa4, 0x21, 0xaa, 0x85, 0xa4, 0x21, 0xaa, 0x85, - 0xa4, 0x21, 0xaa, 0x85, 0xa4, 0x21, 0xab, 0x86, 0xa8, 0x21, 0xab, 0x86, - 0xa7, 0x21, 0xab, 0x86, 0xa8, 0x21, 0xac, 0x86, 0xa7, 0x21, 0xac, 0x86, - 0xa8, 0x21, 0xac, 0x86, 0xa7, 0x21, 0xad, 0x86, 0xa8, 0x21, 0xad, 0x86, - 0xa7, 0x21, 0xae, 0x86, 0xa8, 0x21, 0xae, 0x87, 0xab, 0x21, 0xae, 0x87, - 0xab, 0x21, 0xaf, 0x87, 0xab, 0x21, 0xaf, 0x87, 0xab, 0x21, 0xaf, 0x87, - 0xab, 0x21, 0xb0, 0x87, 0xab, 0x21, 0xb0, 0x87, 0xab, 0x21, 0xb0, 0x87, - 0xab, 0x21, 0xb1, 0x87, 0xab, 0x21, 0xb1, 0x87, 0xab, 0x21, 0xb2, 0x88, - 0xaf, 0x21, 0xb2, 0x87, 0xab, 0x21, 0xb2, 0x88, 0xaf, 0x21, 0xb3, 0x88, - 0xae, 0x21, 0xb3, 0x88, 0xaf, 0x21, 0xb3, 0x88, 0xae, 0x21, 0xb4, 0x88, - 0xaf, 0x21, 0xb4, 0x88, 0xae, 0x21, 0xb4, 0x88, 0xaf, 0x21, 0xb5, 0x89, - 0xb2, 0x21, 0xb5, 0x89, 0xb2, 0x21, 0xb5, 0x89, 0xb2, 0x21, 0xb6, 0x89, - 0xb2, 0x21, 0xb6, 0x89, 0xb2, 0x21, 0xb6, 0x89, 0xb2, 0x21, 0xb7, 0x89, - 0xb2, 0x21, 0xb7, 0x89, 0xb2, 0x21, 0xb7, 0x89, 0xb2, 0x21, 0xb8, 0x89, - 0xb2, 0x21, 0xb8, 0x8a, 0xb5, 0x21, 0xb8, 0x89, 0xb2, 0x21, 0xb9, 0x8a, - 0xb5, 0x21, 0xb9, 0x8a, 0xb5, 0x21, 0xb9, 0x8a, 0xb5, 0x21, 0xba, 0x8a, - 0xb5, 0x21, 0xba, 0x8a, 0xb5, 0x21, 0xba, 0x8a, 0xb5, 0x21, 0xbb, 0x8a, - 0xb5, 0x21, 0xbb, 0x8b, 0xb8, 0x21, 0xbb, 0x8a, 0xb5, 0x21, 0xbc, 0x8b, - 0xb8, 0x21, 0xbc, 0x8a, 0xb5, 0x21, 0xbc, 0x8b, 0xb8, 0x21, 0xbd, 0x8b, - 0xb8, 0x21, 0xbd, 0x8b, 0xb8, 0x21, 0xbd, 0x8b, 0xb8, 0x21, 0xbe, 0x8b, - 0xb8, 0x21, 0xbe, 0x8b, 0xb8, 0x21, 0xbe, 0x8b, 0xb8, 0x21, 0xbf, 0x8c, - 0xbb, 0x21, 0xbf, 0x8c, 0xbc, 0x21, 0xbf, 0x8c, 0xbb, 0x21, 0xc0, 0x8c, - 0xbc, 0x21, 0xc0, 0x8c, 0xbb, 0x21, 0xc0, 0x8c, 0xbc, 0x21, 0xc1, 0x8c, - 0xbb, 0x21, 0xc1, 0x8c, 0xbc, 0x21, 0xc1, 0x8c, 0xbb, 0x21, 0xc1, 0x8c, - 0xbc, 0x21, 0xc2, 0x8d, 0xbf, 0x21, 0xc2, 0x8c, 0xbc, 0x21, 0xc2, 0x8d, - 0xbf, 0x21, 0xc3, 0x8d, 0xbe, 0x21, 0xc3, 0x8d, 0xbf, 0x21, 0xc3, 0x8d, - 0xbe, 0x21, 0xc4, 0x8d, 0xbf, 0x21, 0xc4, 0x8d, 0xbe, 0x21, 0xc4, 0x8d, - 0xbf, 0x21, 0xc5, 0x8e, 0xc1, 0x21, 0xc5, 0x8d, 0xbf, 0x21, 0xc5, 0x8e, - 0xc1, 0x21, 0xc6, 0x8e, 0xc1, 0x21, 0xc6, 0x8e, 0xc1, 0x21, 0xc6, 0x8e, - 0xc1, 0x21, 0xc6, 0x8e, 0xc1, 0x21, 0xc7, 0x8e, 0xc1, 0x21, 0xc7, 0x8e, - 0xc1, 0x21, 0xc7, 0x8f, 0xc4, 0x21, 0xc8, 0x8f, 0xc5, 0x21, 0xc8, 0x8f, - 0xc4, 0x21, 0xc8, 0x8f, 0xc5, 0x21, 0xc9, 0x8f, 0xc4, 0x21, 0xc9, 0x8f, - 0xc5, 0x21, 0xc9, 0x8f, 0xc4, 0x21, 0xc9, 0x8f, 0xc5, 0x21, 0xca, 0x8f, - 0xc4, 0x21, 0xca, 0x8f, 0xc5, 0x21, 0xca, 0x8f, 0xc4, 0x21, 0xcb, 0x8f, - 0xc5, 0x21, 0xcb, 0x90, 0xc7, 0x21, 0xcb, 0x8f, 0xc5, 0x21, 0xcc, 0x90, - 0xc7, 0x21, 0xcc, 0x90, 0xc7, 0x21, 0xcc, 0x90, 0xc7, 0x21, 0xcc, 0x90, - 0xc7, 0x21, 0xcd, 0x90, 0xc7, 0x21, 0xcd, 0x90, 0xc7, 0x21, 0xcd, 0x90, - 0xc7, 0x21, 0xce, 0x91, 0xca, 0x21, 0xce, 0x90, 0xc7, 0x21, 0xce, 0x91, - 0xca, 0x21, 0xce, 0x91, 0xca, 0x21, 0xcf, 0x91, 0xca, 0x21, 0xcf, 0x91, - 0xca, 0x21, 0xcf, 0x91, 0xca, 0x21, 0xd0, 0x91, 0xca, 0x21, 0xd0, 0x91, - 0xca, 0x21, 0xd0, 0x92, 0xcd, 0x21, 0xd0, 0x92, 0xcd, 0x21, 0xd1, 0x92, - 0xcd, 0x21, 0xd1, 0x92, 0xcd, 0x21, 0xd1, 0x92, 0xcd, 0x21, 0xd2, 0x92, - 0xcd, 0x21, 0xd2, 0x92, 0xcd, 0x21, 0xd2, 0x92, 0xcd, 0x21, 0xd2, 0x92, - 0xcd, 0x21, 0xd3, 0x92, 0xcd, 0x21, 0xd3, 0x93, 0xd0, 0x21, 0xd3, 0x92, - 0xcd, 0x21, 0xd4, 0x93, 0xd0, 0x21, 0xd4, 0x92, 0xcd, 0x21, 0xd4, 0x93, - 0xd0, 0x21, 0xd4, 0x93, 0xcf, 0x21, 0xd5, 0x93, 0xd0, 0x21, 0xd5, 0x93, - 0xcf, 0x21, 0xd5, 0x93, 0xd0, 0x21, 0xd6, 0x94, 0xd2, 0x21, 0xd6, 0x94, - 0xd2, 0x21, 0xd6, 0x94, 0xd2, 0x21, 0xd6, 0x94, 0xd2, 0x21, 0xd7, 0x94, - 0xd2, 0x21, 0xd7, 0x94, 0xd2, 0x21, 0xd7, 0x94, 0xd2, 0x21, 0xd7, 0x94, - 0xd2, 0x21, 0xd8, 0x94, 0xd2, 0x21, 0xd8, 0x94, 0xd2, 0x21, 0xd8, 0x94, - 0xd5, 0x21, 0xd9, 0x94, 0xd2, 0x21, 0xd9, 0x94, 0xd5, 0x21, 0xd9, 0x94, - 0xd2, 0x21, 0xd9, 0x94, 0xd5, 0x21, 0xda, 0x94, 0xd5, 0x21, 0xda, 0x94, - 0xd5, 0x21, 0xda, 0x94, 0xd5, 0x21, 0xda, 0x94, 0xd5, 0x21, 0xdb, 0x94, - 0xd5, 0x21, 0xdb, 0x94, 0xd5, 0x21, 0xdb, 0x95, 0xd7, 0x21, 0xdb, 0x94, - 0xd5, 0x21, 0xdc, 0x95, 0xd7, 0x21, 0xdc, 0x95, 0xd7, 0x21, 0xdc, 0x95, - 0xd7, 0x21, 0xdd, 0x95, 0xd7, 0x21, 0xdd, 0x95, 0xd7, 0x21, 0xdd, 0x95, - 0xd7, 0x21, 0xdd, 0x95, 0xd7, 0x21, 0xde, 0x96, 0xda, 0x21, 0xde, 0x96, - 0xda, 0x21, 0xde, 0x96, 0xda, 0x21, 0xde, 0x96, 0xda, 0x21, 0xdf, 0x96, - 0xda, 0x21, 0xdf, 0x96, 0xda, 0x21, 0xdf, 0x96, 0xda, 0x21, 0xdf, 0x96, - 0xda, 0x21, 0xe0, 0x96, 0xda, 0x21, 0xe0, 0x96, 0xda, 0x21, 0xe0, 0x97, - 0xdd, 0x21, 0xe1, 0x96, 0xda, 0x21, 0xe1, 0x97, 0xdd, 0x21, 0xe1, 0x96, - 0xda, 0x21, 0xe1, 0x97, 0xdd, 0x21, 0xe2, 0x97, 0xdc, 0x21, 0xe2, 0x97, - 0xdd, 0x21, 0xe2, 0x97, 0xdc, 0x21, 0xe2, 0x97, 0xdd, 0x21, 0xe3, 0x98, - 0xdf, 0x21, 0xe3, 0x97, 0xdd, 0x21, 0xe3, 0x98, 0xdf, 0x21, 0xe3, 0x97, - 0xdd, 0x21, 0xe4, 0x98, 0xdf, 0x21, 0xe4, 0x98, 0xdf, 0x21, 0xe4, 0x98, - 0xdf, 0x21, 0xe4, 0x98, 0xdf, 0x21, 0xe5, 0x98, 0xdf, 0x21, 0xe5, 0x98, - 0xdf, 0x21, 0xe5, 0x98, 0xdf, 0x21, 0xe5, 0x99, 0xe1, 0x21, 0xe6, 0x99, - 0xe2, 0x21, 0xe6, 0x99, 0xe1, 0x21, 0xe6, 0x99, 0xe2, 0x21, 0xe6, 0x99, - 0xe1, 0x21, 0xe7, 0x99, 0xe2, 0x21, 0xe7, 0x99, 0xe1, 0x21, 0xe7, 0x99, - 0xe2, 0x21, 0xe7, 0x99, 0xe1, 0x21, 0xe8, 0x99, 0xe2, 0x21, 0xe8, 0x9a, - 0xe4, 0x21, 0xe8, 0x99, 0xe2, 0x21, 0xe8, 0x9a, 0xe4, 0x21, 0xe9, 0x99, - 0xe2, 0x21, 0xe9, 0x9a, 0xe4, 0x21, 0xe9, 0x9a, 0xe4, 0x21, 0xe9, 0x9a, - 0xe4, 0x21, 0xea, 0x9a, 0xe4, 0x21, 0xea, 0x9a, 0xe4, 0x21, 0xea, 0x9a, - 0xe6, 0x21, 0xea, 0x9a, 0xe4, 0x21, 0xeb, 0x9a, 0xe6, 0x21, 0xeb, 0x9a, - 0xe4, 0x21, 0xeb, 0x9a, 0xe6, 0x21, 0xeb, 0x9a, 0xe6, 0x21, 0xec, 0x9a, - 0xe6, 0x21, 0xec, 0x9a, 0xe6, 0x21, 0xec, 0x9a, 0xe6, 0x21, 0xec, 0x9b, - 0xe8, 0x21, 0xec, 0x9b, 0xe9, 0x21, 0xed, 0x9b, 0xe8, 0x21, 0xed, 0x9b, - 0xe9, 0x21, 0xed, 0x9b, 0xe8, 0x21, 0xed, 0x9b, 0xe9, 0x21, 0xee, 0x9b, - 0xe8, 0x21, 0xee, 0x9b, 0xe9, 0x21, 0xee, 0x9b, 0xe8, 0x21, 0xee, 0x9b, - 0xe9, 0x21, 0xef, 0x9c, 0xeb, 0x21, 0xef, 0x9b, 0xe9, 0x21, 0xef, 0x9c, - 0xeb, 0x21, 0xef, 0x9b, 0xe9, 0x21, 0xf0, 0x9c, 0xeb, 0x21, 0xf0, 0x9c, - 0xeb, 0x21, 0xf0, 0x9c, 0xeb, 0x21, 0xf0, 0x9c, 0xeb, 0x21, 0xf1, 0x9c, - 0xeb, 0x21, 0xf1, 0x9d, 0xed, 0x21, 0xf1, 0x9d, 0xed, 0x21, 0xf1, 0x9d, - 0xed, 0x21, 0xf2, 0x9d, 0xed, 0x21, 0xf2, 0x9d, 0xed, 0x21, 0xf2, 0x9d, - 0xed, 0x21, 0xf2, 0x9d, 0xed, 0x21, 0xf2, 0x9d, 0xed, 0x21, 0xf3, 0x9d, - 0xed, 0x21, 0xf3, 0x9d, 0xed, 0x21, 0xf3, 0x9d, 0xed, 0x21, 0xf3, 0x9d, - 0xed, 0x21, 0xf4, 0x9e, 0xef, 0x21, 0xf4, 0x9d, 0xed, 0x21, 0xf4, 0x9e, - 0xef, 0x21, 0xf4, 0x9d, 0xed, 0x21, 0xf5, 0x9e, 0xef, 0x21, 0xf5, 0x9e, - 0xef, 0x21, 0xf5, 0x9e, 0xef, 0x21, 0xf5, 0x9e, 0xef, 0x21, 0xf5, 0x9e, - 0xef, 0x21, 0xf6, 0x9f, 0xf2, 0x21, 0xf6, 0x9e, 0xef, 0x21, 0xf6, 0x9f, - 0xf2, 0x21, 0xf6, 0x9e, 0xef, 0x21, 0xf7, 0x9f, 0xf2, 0x21, 0xf7, 0x9f, - 0xf1, 0x21, 0xf7, 0x9f, 0xf2, 0x21, 0xf7, 0x9f, 0xf1, 0x21, 0xf8, 0x9f, - 0xf2, 0x21, 0xf8, 0x9f, 0xf4, 0x21, 0xf8, 0x9f, 0xf4, 0x21, 0xf8, 0x9f, - 0xf4, 0x21, 0xf8, 0x9f, 0xf4, 0x21, 0xf9, 0x9f, 0xf4, 0x21, 0xf9, 0x9f, - 0xf4, 0x21, 0xf9, 0x9f, 0xf4, 0x21, 0xf9, 0x9f, 0xf4, 0x21, 0xfa, 0x9f, - 0xf4, 0x21, 0xfa, 0x9f, 0xf4, 0x21, 0xfa, 0xa0, 0xf6, 0x21, 0xfa, 0x9f, - 0xf4, 0x21, 0xfa, 0xa0, 0xf6, 0x21, 0xfb, 0x9f, 0xf4, 0x21, 0xfb, 0xa0, - 0xf6, 0x21, 0xfb, 0x9f, 0xf4, 0x21, 0xfb, 0xa0, 0xf6, 0x21, 0xfc, 0xa0, - 0xf6, 0x21, 0xfc, 0xa0, 0xf6, 0x21, 0xfc, 0xa0, 0xf6, 0x21, 0xfc, 0xa0, - 0xf6, 0x21, 0xfc, 0xa1, 0xf8, 0x21, 0xfd, 0xa0, 0xf6, 0x21, 0xfd, 0xa1, - 0xf8, 0x21, 0xfd, 0xa0, 0xf6, 0x21, 0xfd, 0xa1, 0xf8, 0x21, 0xfe, 0xa1, - 0xf8, 0x21, 0xfe, 0xa1, 0xf8, 0x21, 0xfe, 0xa1, 0xf8, 0x21, 0xfe, 0xa1, - 0xf8, 0x21, 0xfe, 0xa2, 0xfa, 0x21, 0xff, 0xa2, 0xfa, 0x21, 0xff, 0xa2, - 0xfa, 0x21, 0x03, 0x84, 0x9b, 0x22, 0x0a, 0x84, 0x9b, 0x22, 0x0f, 0x84, - 0x9b, 0x22, 0x14, 0x84, 0x9b, 0x22, 0x17, 0x84, 0x9b, 0x22, 0x1b, 0x84, - 0x9b, 0x22, 0x1e, 0x84, 0x9b, 0x22, 0x20, 0x86, 0x9b, 0x22, 0x23, 0x84, - 0x9b, 0x22, 0x25, 0x86, 0x9b, 0x22, 0x27, 0x84, 0x9b, 0x22, 0x29, 0x86, - 0x9b, 0x22, 0x2b, 0x84, 0x9b, 0x22, 0x2d, 0x86, 0x9b, 0x22, 0x2f, 0x84, - 0x9b, 0x22, 0x31, 0x86, 0x9b, 0x22, 0x32, 0x84, 0x9b, 0x22, 0x34, 0x86, - 0x9b, 0x22, 0x35, 0x84, 0x9b, 0x22, 0x37, 0x86, 0x9b, 0x22, 0x38, 0x84, - 0x9b, 0x22, 0x3a, 0x86, 0x9b, 0x22, 0x3b, 0x84, 0x9b, 0x22, 0x3c, 0x86, - 0x9b, 0x22, 0x3e, 0x84, 0x9b, 0x22, 0x3f, 0x86, 0x9b, 0x22, 0x40, 0x84, - 0x9b, 0x22, 0x42, 0x86, 0x9b, 0x22, 0x43, 0x84, 0x9b, 0x22, 0x44, 0x86, - 0x9b, 0x22, 0x45, 0x84, 0x9b, 0x22, 0x46, 0x86, 0x9b, 0x22, 0x47, 0x84, - 0x9b, 0x22, 0x48, 0x86, 0x9b, 0x22, 0x49, 0x84, 0x9b, 0x22, 0x4a, 0x86, - 0x9b, 0x22, 0x4b, 0x84, 0x9b, 0x22, 0x4c, 0x86, 0x9b, 0x22, 0x4d, 0x84, - 0x9b, 0x22, 0x4e, 0x86, 0x9b, 0x22, 0x4f, 0x84, 0x9b, 0x22, 0x50, 0x86, - 0x9b, 0x22, 0x51, 0x84, 0x9b, 0x22, 0x52, 0x86, 0x9b, 0x22, 0x53, 0x84, - 0x9b, 0x22, 0x54, 0x86, 0x9b, 0x22, 0x55, 0x84, 0x9b, 0x22, 0x56, 0x86, - 0x9b, 0x22, 0x57, 0x84, 0x9b, 0x22, 0x58, 0x86, 0x9b, 0x22, 0x58, 0x84, - 0x9b, 0x22, 0x59, 0x86, 0x9b, 0x22, 0x5a, 0x84, 0x9b, 0x22, 0x5b, 0x86, - 0x9b, 0x22, 0x5c, 0x84, 0x9b, 0x22, 0x5d, 0x86, 0x9b, 0x22, 0x5d, 0x84, - 0x9b, 0x22, 0x5e, 0x86, 0x9b, 0x22, 0x5f, 0x84, 0x9b, 0x22, 0x60, 0x86, - 0x9b, 0x22, 0x60, 0x84, 0x9b, 0x22, 0x61, 0x86, 0x9b, 0x22, 0x62, 0x84, - 0x9b, 0x22, 0x63, 0x86, 0x9b, 0x22, 0x63, 0x84, 0x9b, 0x22, 0x64, 0x84, - 0x9c, 0x22, 0x65, 0x84, 0x9b, 0x22, 0x66, 0x84, 0x9c, 0x22, 0x66, 0x84, - 0x9b, 0x22, 0x67, 0x84, 0x9c, 0x22, 0x68, 0x84, 0x9b, 0x22, 0x68, 0x84, - 0x9c, 0x22, 0x69, 0x84, 0x9b, 0x22, 0x6a, 0x84, 0x9c, 0x22, 0x6a, 0x84, - 0x9b, 0x22, 0x6b, 0x84, 0x9c, 0x22, 0x6c, 0x84, 0x9b, 0x22, 0x6c, 0x84, - 0x9c, 0x22, 0x6d, 0x84, 0x9b, 0x22, 0x6e, 0x84, 0x9c, 0x22, 0x6e, 0x84, - 0x9b, 0x22, 0x6f, 0x84, 0x9c, 0x22, 0x70, 0x84, 0x9b, 0x22, 0x70, 0x84, - 0x9c, 0x22, 0x71, 0x84, 0x9b, 0x22, 0x72, 0x84, 0x9c, 0x22, 0x72, 0x84, - 0x9b, 0x22, 0x73, 0x84, 0x9c, 0x22, 0x73, 0x84, 0x9b, 0x22, 0x74, 0x84, - 0x9c, 0x22, 0x75, 0x84, 0x9b, 0x22, 0x75, 0x84, 0x9c, 0x22, 0x76, 0x84, - 0x9b, 0x22, 0x76, 0x84, 0x9c, 0x22, 0x77, 0x84, 0x9b, 0x22, 0x78, 0x84, - 0x9c, 0x22, 0x78, 0x84, 0x9b, 0x22, 0x79, 0x84, 0x9c, 0x22, 0x79, 0x84, - 0x9b, 0x22, 0x7a, 0x84, 0x9c, 0x22, 0x7a, 0x84, 0x9b, 0x22, 0x7b, 0x84, - 0x9c, 0x22, 0x7c, 0x84, 0x9b, 0x22, 0x7c, 0x84, 0x9c, 0x22, 0x7d, 0x84, - 0x9b, 0x22, 0x7d, 0x84, 0x9c, 0x22, 0x7e, 0x84, 0x9b, 0x22, 0x7e, 0x84, - 0x9c, 0x22, 0x7f, 0x84, 0x9b, 0x22, 0x7f, 0x84, 0x9c, 0x22, 0x80, 0x84, - 0x9b, 0x22, 0x81, 0x84, 0x9c, 0x22, 0x81, 0x84, 0x9b, 0x22, 0x82, 0x84, - 0x9c, 0x22, 0x82, 0x84, 0x9b, 0x22, 0x83, 0x84, 0x9c, 0x22, 0x83, 0x84, - 0x9b, 0x22, 0x84, 0x84, 0x9c, 0x22, 0x84, 0x84, 0x9b, 0x22, 0x85, 0x84, - 0x9c, 0x22, 0x85, 0x84, 0x9b, 0x22, 0x86, 0x84, 0x9c, 0x22, 0x86, 0x84, - 0x9b, 0x22, 0x87, 0x84, 0x9c, 0x22, 0x87, 0x84, 0x9b, 0x22, 0x88, 0x84, - 0x9c, 0x22, 0x88, 0x84, 0x9b, 0x22, 0x89, 0x84, 0x9c, 0x22, 0x89, 0x84, - 0x9b, 0x22, 0x8a, 0x84, 0x9c, 0x22, 0x8a, 0x84, 0x9b, 0x22, 0x8b, 0x84, - 0x9c, 0x22, 0x8b, 0x84, 0x9b, 0x22, 0x8c, 0x84, 0x9c, 0x22, 0x8c, 0x84, - 0x9b, 0x22, 0x8d, 0x84, 0x9c, 0x22, 0x8d, 0x84, 0x9b, 0x22, 0x8e, 0x84, - 0x9c, 0x22, 0x8e, 0x84, 0x9b, 0x22, 0x8e, 0x84, 0x9c, 0x22, 0x8f, 0x84, - 0x9b, 0x22, 0x8f, 0x84, 0x9c, 0x22, 0x90, 0x84, 0x9b, 0x22, 0x90, 0x84, - 0x9c, 0x22, 0x91, 0x84, 0x9b, 0x22, 0x91, 0x84, 0x9c, 0x22, 0x92, 0x84, - 0x9b, 0x22, 0x92, 0x84, 0x9c, 0x22, 0x93, 0x84, 0x9b, 0x22, 0x93, 0x84, - 0x9c, 0x22, 0x94, 0x84, 0x9b, 0x22, 0x94, 0x84, 0x9c, 0x22, 0x94, 0x84, - 0x9b, 0x22, 0x95, 0x84, 0x9c, 0x22, 0x95, 0x84, 0x9b, 0x22, 0x96, 0x84, - 0x9c, 0x22, 0x96, 0x84, 0x9b, 0x22, 0x97, 0x84, 0x9c, 0x22, 0x97, 0x84, - 0x9b, 0x22, 0x98, 0x84, 0x9c, 0x22, 0x98, 0x84, 0x9b, 0x22, 0x98, 0x84, - 0x9c, 0x22, 0x99, 0x84, 0x9b, 0x22, 0x99, 0x84, 0x9c, 0x22, 0x9a, 0x84, - 0x9b, 0x22, 0x9a, 0x84, 0x9c, 0x22, 0x9a, 0x84, 0x9b, 0x22, 0x9b, 0x84, - 0x9c, 0x22, 0x9b, 0x84, 0x9b, 0x22, 0x9c, 0x84, 0x9c, 0x22, 0x9c, 0x84, - 0x9c, 0x22, 0x9d, 0x84, 0x9d, 0x22, 0x9d, 0x84, 0x9d, 0x22, 0x9d, 0x84, - 0x9d, 0x22, 0x9e, 0x84, 0x9e, 0x22, 0x9e, 0x84, 0x9e, 0x22, 0x9f, 0x84, - 0x9f, 0x22, 0x9f, 0x84, 0x9e, 0x22, 0x9f, 0x84, 0x9f, 0x22, 0xa0, 0x84, - 0x9e, 0x22, 0xa0, 0x84, 0x9f, 0x22, 0xa1, 0x84, 0x9e, 0x22, 0xa1, 0x84, - 0x9f, 0x22, 0xa1, 0x84, 0x9e, 0x22, 0xa2, 0x84, 0x9f, 0x22, 0xa2, 0x84, - 0x9e, 0x22, 0xa3, 0x84, 0x9f, 0x22, 0xa3, 0x84, 0x9e, 0x22, 0xa3, 0x84, - 0x9f, 0x22, 0xa4, 0x84, 0x9e, 0x22, 0xa4, 0x84, 0x9f, 0x22, 0xa5, 0x85, - 0xa2, 0x22, 0xa5, 0x84, 0x9f, 0x22, 0xa5, 0x85, 0xa2, 0x22, 0xa6, 0x85, - 0xa2, 0x22, 0xa6, 0x85, 0xa2, 0x22, 0xa6, 0x85, 0xa2, 0x22, 0xa7, 0x85, - 0xa2, 0x22, 0xa7, 0x85, 0xa2, 0x22, 0xa8, 0x85, 0xa2, 0x22, 0xa8, 0x86, - 0xa6, 0x22, 0xa8, 0x86, 0xa6, 0x22, 0xa9, 0x86, 0xa6, 0x22, 0xa9, 0x86, - 0xa6, 0x22, 0xaa, 0x86, 0xa6, 0x22, 0xaa, 0x86, 0xa6, 0x22, 0xaa, 0x86, - 0xa6, 0x22, 0xab, 0x86, 0xa6, 0x22, 0xab, 0x86, 0xa6, 0x22, 0xab, 0x86, - 0xa6, 0x22, 0xac, 0x86, 0xa6, 0x22, 0xac, 0x86, 0xa6, 0x22, 0xac, 0x87, - 0xaa, 0x22, 0xad, 0x87, 0xa9, 0x22, 0xad, 0x87, 0xaa, 0x22, 0xae, 0x87, - 0xa9, 0x22, 0xae, 0x87, 0xaa, 0x22, 0xae, 0x87, 0xa9, 0x22, 0xaf, 0x87, - 0xaa, 0x22, 0xaf, 0x87, 0xa9, 0x22, 0xaf, 0x87, 0xaa, 0x22, 0xb0, 0x88, - 0xad, 0x22, 0xb0, 0x88, 0xad, 0x22, 0xb0, 0x88, 0xad, 0x22, 0xb1, 0x88, - 0xad, 0x22, 0xb1, 0x88, 0xad, 0x22, 0xb2, 0x88, 0xad, 0x22, 0xb2, 0x88, - 0xad, 0x22, 0xb2, 0x88, 0xad, 0x22, 0xb3, 0x88, 0xad, 0x22, 0xb3, 0x88, - 0xad, 0x22, 0xb3, 0x89, 0xb0, 0x22, 0xb4, 0x88, 0xad, 0x22, 0xb4, 0x89, - 0xb0, 0x22, 0xb4, 0x89, 0xb0, 0x22, 0xb5, 0x89, 0xb0, 0x22, 0xb5, 0x89, - 0xb2, 0x22, 0xb5, 0x89, 0xb0, 0x22, 0xb6, 0x89, 0xb2, 0x22, 0xb6, 0x89, - 0xb0, 0x22, 0xb6, 0x89, 0xb2, 0x22, 0xb7, 0x89, 0xb2, 0x22, 0xb7, 0x89, - 0xb2, 0x22, 0xb7, 0x89, 0xb2, 0x22, 0xb8, 0x89, 0xb2, 0x22, 0xb8, 0x8a, - 0xb3, 0x22, 0xb8, 0x8a, 0xb4, 0x22, 0xb9, 0x8a, 0xb3, 0x22, 0xb9, 0x8a, - 0xb4, 0x22, 0xb9, 0x8b, 0xb7, 0x22, 0xba, 0x8b, 0xb7, 0x22, 0xba, 0x8b, - 0xb7, 0x22, 0xba, 0x8b, 0xb7, 0x22, 0xbb, 0x8b, 0xb7, 0x22, 0xbb, 0x8b, - 0xb7, 0x22, 0xbb, 0x8b, 0xb7, 0x22, 0xbc, 0x8b, 0xb7, 0x22, 0xbc, 0x8b, - 0xb7, 0x22, 0xbc, 0x8b, 0xb7, 0x22, 0xbd, 0x8c, 0xba, 0x22, 0xbd, 0x8b, - 0xb7, 0x22, 0xbd, 0x8c, 0xba, 0x22, 0xbe, 0x8b, 0xb7, 0x22, 0xbe, 0x8c, - 0xba, 0x22, 0xbe, 0x8c, 0xba, 0x22, 0xbf, 0x8c, 0xba, 0x22, 0xbf, 0x8c, - 0xba, 0x22, 0xbf, 0x8c, 0xba, 0x22, 0xc0, 0x8c, 0xba, 0x22, 0xc0, 0x8c, - 0xba, 0x22, 0xc0, 0x8d, 0xbd, 0x22, 0xc1, 0x8c, 0xba, 0x22, 0xc1, 0x8d, - 0xbd, 0x22, 0xc1, 0x8d, 0xbd, 0x22, 0xc1, 0x8d, 0xbd, 0x22, 0xc2, 0x8d, - 0xbd, 0x22, 0xc2, 0x8d, 0xbd, 0x22, 0xc2, 0x8d, 0xbd, 0x22, 0xc3, 0x8d, - 0xbd, 0x22, 0xc3, 0x8e, 0xc0, 0x22, 0xc3, 0x8e, 0xc0, 0x22, 0xc4, 0x8e, - 0xc0, 0x22, 0xc4, 0x8e, 0xc0, 0x22, 0xc4, 0x8e, 0xc0, 0x22, 0xc5, 0x8e, - 0xc0, 0x22, 0xc5, 0x8e, 0xc0, 0x22, 0xc5, 0x8e, 0xc0, 0x22, 0xc6, 0x8e, - 0xc0, 0x22, 0xc6, 0x8e, 0xc0, 0x22, 0xc6, 0x8e, 0xc3, 0x22, 0xc6, 0x8e, - 0xc0, 0x22, 0xc7, 0x8e, 0xc3, 0x22, 0xc7, 0x8e, 0xc3, 0x22, 0xc7, 0x8e, - 0xc3, 0x22, 0xc8, 0x8e, 0xc3, 0x22, 0xc8, 0x8e, 0xc3, 0x22, 0xc8, 0x8e, - 0xc3, 0x22, 0xc9, 0x8e, 0xc3, 0x22, 0xc9, 0x8f, 0xc6, 0x22, 0xc9, 0x8e, - 0xc3, 0x22, 0xc9, 0x8f, 0xc6, 0x22, 0xca, 0x8e, 0xc3, 0x22, 0xca, 0x8f, - 0xc6, 0x22, 0xca, 0x8f, 0xc6, 0x22, 0xcb, 0x8f, 0xc6, 0x22, 0xcb, 0x8f, - 0xc6, 0x22, 0xcb, 0x8f, 0xc6, 0x22, 0xcc, 0x8f, 0xc6, 0x22, 0xcc, 0x8f, - 0xc6, 0x22, 0xcc, 0x90, 0xc9, 0x22, 0xcc, 0x90, 0xc9, 0x22, 0xcd, 0x90, - 0xc9, 0x22, 0xcd, 0x90, 0xc9, 0x22, 0xcd, 0x90, 0xc9, 0x22, 0xce, 0x90, - 0xc9, 0x22, 0xce, 0x90, 0xc9, 0x22, 0xce, 0x90, 0xc9, 0x22, 0xce, 0x90, - 0xc9, 0x22, 0xcf, 0x90, 0xc9, 0x22, 0xcf, 0x91, 0xcc, 0x22, 0xcf, 0x90, - 0xc9, 0x22, 0xd0, 0x91, 0xcc, 0x22, 0xd0, 0x91, 0xcb, 0x22, 0xd0, 0x91, - 0xcc, 0x22, 0xd0, 0x91, 0xcb, 0x22, 0xd1, 0x91, 0xcc, 0x22, 0xd1, 0x91, - 0xcb, 0x22, 0xd1, 0x91, 0xcc, 0x22, 0xd2, 0x92, 0xce, 0x22, 0xd2, 0x92, - 0xce, 0x22, 0xd2, 0x92, 0xce, 0x22, 0xd2, 0x92, 0xce, 0x22, 0xd3, 0x92, - 0xce, 0x22, 0xd3, 0x92, 0xce, 0x22, 0xd3, 0x92, 0xce, 0x22, 0xd4, 0x92, - 0xce, 0x22, 0xd4, 0x92, 0xce, 0x22, 0xd4, 0x92, 0xce, 0x22, 0xd4, 0x93, - 0xd1, 0x22, 0xd5, 0x92, 0xce, 0x22, 0xd5, 0x93, 0xd1, 0x22, 0xd5, 0x92, - 0xce, 0x22, 0xd6, 0x93, 0xd1, 0x22, 0xd6, 0x93, 0xd1, 0x22, 0xd6, 0x93, - 0xd1, 0x22, 0xd6, 0x93, 0xd1, 0x22, 0xd7, 0x93, 0xd1, 0x22, 0xd7, 0x94, - 0xd4, 0x22, 0xd7, 0x93, 0xd1, 0x22, 0xd7, 0x94, 0xd4, 0x22, 0xd8, 0x93, - 0xd1, 0x22, 0xd8, 0x94, 0xd4, 0x22, 0xd8, 0x94, 0xd3, 0x22, 0xd9, 0x94, - 0xd4, 0x22, 0xd9, 0x94, 0xd3, 0x22, 0xd9, 0x94, 0xd4, 0x22, 0xd9, 0x95, - 0xd6, 0x22, 0xda, 0x95, 0xd6, 0x22, 0xda, 0x95, 0xd6, 0x22, 0xda, 0x95, - 0xd6, 0x22, 0xda, 0x95, 0xd6, 0x22, 0xdb, 0x95, 0xd6, 0x22, 0xdb, 0x95, - 0xd6, 0x22, 0xdb, 0x95, 0xd6, 0x22, 0xdb, 0x95, 0xd6, 0x22, 0xdc, 0x95, - 0xd6, 0x22, 0xdc, 0x95, 0xd6, 0x22, 0xdc, 0x95, 0xd6, 0x22, 0xdd, 0x96, - 0xd9, 0x22, 0xdd, 0x95, 0xd6, 0x22, 0xdd, 0x96, 0xd9, 0x22, 0xdd, 0x96, - 0xd9, 0x22, 0xde, 0x96, 0xd9, 0x22, 0xde, 0x96, 0xd9, 0x22, 0xde, 0x96, - 0xd9, 0x22, 0xde, 0x96, 0xd9, 0x22, 0xdf, 0x96, 0xd9, 0x22, 0xdf, 0x97, - 0xdb, 0x22, 0xdf, 0x96, 0xd9, 0x22, 0xdf, 0x97, 0xdb, 0x22, 0xe0, 0x96, - 0xd9, 0x22, 0xe0, 0x97, 0xdb, 0x22, 0xe0, 0x97, 0xdb, 0x22, 0xe1, 0x97, - 0xdb, 0x22, 0xe1, 0x97, 0xdb, 0x22, 0xe1, 0x97, 0xdb, 0x22, 0xe1, 0x98, - 0xde, 0x22, 0xe2, 0x98, 0xde, 0x22, 0xe2, 0x98, 0xde, 0x22, 0xe2, 0x98, - 0xde, 0x22, 0xe2, 0x98, 0xde, 0x22, 0xe3, 0x98, 0xde, 0x22, 0xe3, 0x98, - 0xde, 0x22, 0xe3, 0x98, 0xde, 0x22, 0xe3, 0x98, 0xde, 0x22, 0xe4, 0x98, - 0xde, 0x22, 0xe4, 0x98, 0xe0, 0x22, 0xe4, 0x98, 0xde, 0x22, 0xe4, 0x98, - 0xe0, 0x22, 0xe5, 0x98, 0xde, 0x22, 0xe5, 0x98, 0xe0, 0x22, 0xe5, 0x98, - 0xe0, 0x22, 0xe5, 0x98, 0xe0, 0x22, 0xe6, 0x98, 0xe0, 0x22, 0xe6, 0x98, - 0xe0, 0x22, 0xe6, 0x98, 0xe0, 0x22, 0xe6, 0x98, 0xe0, 0x22, 0xe7, 0x99, - 0xe3, 0x22, 0xe7, 0x98, 0xe0, 0x22, 0xe7, 0x99, 0xe3, 0x22, 0xe7, 0x99, - 0xe2, 0x22, 0xe8, 0x99, 0xe3, 0x22, 0xe8, 0x99, 0xe2, 0x22, 0xe8, 0x99, - 0xe3, 0x22, 0xe8, 0x99, 0xe2, 0x22, 0xe9, 0x99, 0xe3, 0x22, 0xe9, 0x9a, - 0xe5, 0x22, 0xe9, 0x9a, 0xe5, 0x22, 0xe9, 0x9a, 0xe5, 0x22, 0xea, 0x9a, - 0xe5, 0x22, 0xea, 0x9a, 0xe5, 0x22, 0xea, 0x9a, 0xe5, 0x22, 0xea, 0x9a, - 0xe5, 0x22, 0xeb, 0x9a, 0xe5, 0x22, 0xeb, 0x9a, 0xe5, 0x22, 0xeb, 0x9a, - 0xe5, 0x22, 0xeb, 0x9b, 0xe7, 0x22, 0xec, 0x9a, 0xe5, 0x22, 0xec, 0x9b, - 0xe7, 0x22, 0xec, 0x9a, 0xe5, 0x22, 0xec, 0x9b, 0xe7, 0x22, 0xec, 0x9b, - 0xe7, 0x22, 0xed, 0x9b, 0xe7, 0x22, 0xed, 0x9b, 0xe7, 0x22, 0xed, 0x9b, - 0xe7, 0x22, 0xed, 0x9c, 0xea, 0x22, 0xee, 0x9c, 0xea, 0x22, 0xee, 0x9c, - 0xea, 0x22, 0xee, 0x9c, 0xea, 0x22, 0xee, 0x9c, 0xea, 0x22, 0xef, 0x9c, - 0xea, 0x22, 0xef, 0x9c, 0xea, 0x22, 0xef, 0x9c, 0xea, 0x22, 0xef, 0x9c, - 0xea, 0x22, 0xf0, 0x9c, 0xea, 0x22, 0xf0, 0x9d, 0xec, 0x22, 0xf0, 0x9c, - 0xea, 0x22, 0xf0, 0x9d, 0xec, 0x22, 0xf1, 0x9c, 0xea, 0x22, 0xf1, 0x9d, - 0xec, 0x22, 0xf1, 0x9d, 0xec, 0x22, 0xf1, 0x9d, 0xec, 0x22, 0xf2, 0x9d, - 0xec, 0x22, 0xf2, 0x9d, 0xec, 0x22, 0xf2, 0x9d, 0xee, 0x22, 0xf2, 0x9d, - 0xec, 0x22, 0xf2, 0x9d, 0xee, 0x22, 0xf3, 0x9d, 0xec, 0x22, 0xf3, 0x9d, - 0xee, 0x22, 0xf3, 0x9d, 0xec, 0x22, 0xf3, 0x9d, 0xee, 0x22, 0xf4, 0x9d, - 0xee, 0x22, 0xf4, 0x9d, 0xee, 0x22, 0xf4, 0x9d, 0xee, 0x22, 0xf4, 0x9d, - 0xee, 0x22, 0xf5, 0x9e, 0xf0, 0x22, 0xf5, 0x9e, 0xf1, 0x22, 0xf5, 0x9e, - 0xf0, 0x22, 0xf5, 0x9e, 0xf1, 0x22, 0xf5, 0x9e, 0xf0, 0x22, 0xf6, 0x9e, - 0xf1, 0x22, 0xf6, 0x9e, 0xf0, 0x22, 0xf6, 0x9e, 0xf1, 0x22, 0xf6, 0x9e, - 0xf0, 0x22, 0xf7, 0x9e, 0xf1, 0x22, 0xf7, 0x9f, 0xf3, 0x22, 0xf7, 0x9e, - 0xf1, 0x22, 0xf7, 0x9f, 0xf3, 0x22, 0xf8, 0x9e, 0xf1, 0x22, 0xf8, 0x9f, - 0xf3, 0x22, 0xf8, 0x9f, 0xf2, 0x22, 0xf8, 0x9f, 0xf3, 0x22, 0xf8, 0x9f, - 0xf2, 0x22, 0xf9, 0x9f, 0xf3, 0x22, 0xf9, 0xa0, 0xf5, 0x22, 0xf9, 0x9f, - 0xf3, 0x22, 0xf9, 0xa0, 0xf5, 0x22, 0xfa, 0x9f, 0xf3, 0x22, 0xfa, 0xa0, - 0xf5, 0x22, 0xfa, 0xa0, 0xf5, 0x22, 0xfa, 0xa0, 0xf5, 0x22, 0xfa, 0xa0, - 0xf5, 0x22, 0xfb, 0xa0, 0xf5, 0x22, 0xfb, 0xa1, 0xf7, 0x22, 0xfb, 0xa1, - 0xf7, 0x22, 0xfb, 0xa1, 0xf7, 0x22, 0xfc, 0xa1, 0xf7, 0x22, 0xfc, 0xa1, - 0xf7, 0x22, 0xfc, 0xa1, 0xf7, 0x22, 0xfc, 0xa1, 0xf7, 0x22, 0xfc, 0xa1, - 0xf7, 0x22, 0xfd, 0xa1, 0xf7, 0x22, 0xfd, 0xa1, 0xf7, 0x22, 0xfd, 0xa1, - 0xf7, 0x22, 0xfd, 0xa1, 0xf7, 0x22, 0xfe, 0xa1, 0xf9, 0x22, 0xfe, 0xa1, - 0xf7, 0x22, 0xfe, 0xa1, 0xf9, 0x22, 0xfe, 0xa1, 0xf7, 0x22, 0xfe, 0xa1, - 0xf9, 0x22, 0xff, 0xa1, 0xf9, 0x22, 0xff, 0xa1, 0xf9, 0x22, 0x03, 0x83, - 0x9b, 0x22, 0x0a, 0x83, 0x9b, 0x22, 0x0f, 0x83, 0x9b, 0x22, 0x14, 0x83, - 0x9b, 0x22, 0x17, 0x83, 0x9b, 0x22, 0x1b, 0x83, 0x9b, 0x22, 0x1e, 0x83, - 0x9b, 0x22, 0x20, 0x86, 0x9b, 0x22, 0x23, 0x83, 0x9b, 0x22, 0x25, 0x86, - 0x9b, 0x22, 0x27, 0x83, 0x9b, 0x22, 0x29, 0x86, 0x9b, 0x22, 0x2b, 0x83, - 0x9b, 0x22, 0x2d, 0x86, 0x9b, 0x22, 0x2f, 0x83, 0x9b, 0x22, 0x31, 0x86, - 0x9b, 0x22, 0x32, 0x83, 0x9b, 0x22, 0x34, 0x83, 0x9c, 0x22, 0x35, 0x83, - 0x9b, 0x22, 0x37, 0x83, 0x9c, 0x22, 0x38, 0x83, 0x9b, 0x22, 0x3a, 0x83, - 0x9c, 0x22, 0x3b, 0x83, 0x9b, 0x22, 0x3c, 0x83, 0x9c, 0x22, 0x3e, 0x83, - 0x9b, 0x22, 0x3f, 0x83, 0x9c, 0x22, 0x40, 0x83, 0x9b, 0x22, 0x42, 0x83, - 0x9c, 0x22, 0x43, 0x83, 0x9b, 0x22, 0x44, 0x83, 0x9c, 0x22, 0x45, 0x83, - 0x9b, 0x22, 0x46, 0x83, 0x9c, 0x22, 0x47, 0x83, 0x9b, 0x22, 0x48, 0x83, - 0x9c, 0x22, 0x49, 0x83, 0x9b, 0x22, 0x4a, 0x83, 0x9c, 0x22, 0x4b, 0x83, - 0x9b, 0x22, 0x4c, 0x83, 0x9c, 0x22, 0x4d, 0x83, 0x9b, 0x22, 0x4e, 0x83, - 0x9c, 0x22, 0x4f, 0x83, 0x9b, 0x22, 0x50, 0x83, 0x9c, 0x22, 0x51, 0x83, - 0x9b, 0x22, 0x52, 0x83, 0x9c, 0x22, 0x53, 0x83, 0x9b, 0x22, 0x54, 0x83, - 0x9c, 0x22, 0x55, 0x83, 0x9b, 0x22, 0x56, 0x83, 0x9c, 0x22, 0x57, 0x83, - 0x9b, 0x22, 0x58, 0x83, 0x9c, 0x22, 0x58, 0x83, 0x9b, 0x22, 0x59, 0x83, - 0x9c, 0x22, 0x5a, 0x83, 0x9b, 0x22, 0x5b, 0x83, 0x9c, 0x22, 0x5c, 0x83, - 0x9b, 0x22, 0x5d, 0x83, 0x9c, 0x22, 0x5d, 0x83, 0x9b, 0x22, 0x5e, 0x83, - 0x9c, 0x22, 0x5f, 0x83, 0x9b, 0x22, 0x60, 0x83, 0x9c, 0x22, 0x60, 0x83, - 0x9b, 0x22, 0x61, 0x83, 0x9c, 0x22, 0x62, 0x83, 0x9b, 0x22, 0x63, 0x83, - 0x9c, 0x22, 0x63, 0x83, 0x9b, 0x22, 0x64, 0x83, 0x9c, 0x22, 0x65, 0x83, - 0x9b, 0x22, 0x66, 0x83, 0x9c, 0x22, 0x66, 0x83, 0x9b, 0x22, 0x67, 0x83, - 0x9c, 0x22, 0x68, 0x83, 0x9b, 0x22, 0x68, 0x83, 0x9c, 0x22, 0x69, 0x83, - 0x9b, 0x22, 0x6a, 0x83, 0x9c, 0x22, 0x6a, 0x83, 0x9b, 0x22, 0x6b, 0x83, - 0x9c, 0x22, 0x6c, 0x83, 0x9b, 0x22, 0x6c, 0x83, 0x9c, 0x22, 0x6d, 0x83, - 0x9b, 0x22, 0x6e, 0x83, 0x9c, 0x22, 0x6e, 0x83, 0x9b, 0x22, 0x6f, 0x83, - 0x9c, 0x22, 0x70, 0x83, 0x9b, 0x22, 0x70, 0x83, 0x9c, 0x22, 0x71, 0x83, - 0x9b, 0x22, 0x72, 0x83, 0x9c, 0x22, 0x72, 0x83, 0x9b, 0x22, 0x73, 0x83, - 0x9c, 0x22, 0x73, 0x83, 0x9b, 0x22, 0x74, 0x83, 0x9c, 0x22, 0x75, 0x83, - 0x9b, 0x22, 0x75, 0x83, 0x9c, 0x22, 0x76, 0x83, 0x9b, 0x22, 0x76, 0x83, - 0x9c, 0x22, 0x77, 0x83, 0x9b, 0x22, 0x78, 0x83, 0x9c, 0x22, 0x78, 0x83, - 0x9b, 0x22, 0x79, 0x83, 0x9c, 0x22, 0x79, 0x83, 0x9b, 0x22, 0x7a, 0x83, - 0x9c, 0x22, 0x7a, 0x83, 0x9b, 0x22, 0x7b, 0x83, 0x9c, 0x22, 0x7c, 0x83, - 0x9b, 0x22, 0x7c, 0x83, 0x9c, 0x22, 0x7d, 0x83, 0x9b, 0x22, 0x7d, 0x83, - 0x9c, 0x22, 0x7e, 0x83, 0x9b, 0x22, 0x7e, 0x83, 0x9c, 0x22, 0x7f, 0x83, - 0x9b, 0x22, 0x7f, 0x83, 0x9c, 0x22, 0x80, 0x83, 0x9b, 0x22, 0x81, 0x83, - 0x9c, 0x22, 0x81, 0x83, 0x9b, 0x22, 0x82, 0x83, 0x9c, 0x22, 0x82, 0x83, - 0x9b, 0x22, 0x83, 0x83, 0x9c, 0x22, 0x83, 0x83, 0x9b, 0x22, 0x84, 0x83, - 0x9c, 0x22, 0x84, 0x83, 0x9b, 0x22, 0x85, 0x83, 0x9c, 0x22, 0x85, 0x83, - 0x9b, 0x22, 0x86, 0x83, 0x9c, 0x22, 0x86, 0x83, 0x9b, 0x22, 0x87, 0x83, - 0x9c, 0x22, 0x87, 0x83, 0x9b, 0x22, 0x88, 0x83, 0x9c, 0x22, 0x88, 0x83, - 0x9b, 0x22, 0x89, 0x83, 0x9c, 0x22, 0x89, 0x83, 0x9b, 0x22, 0x8a, 0x83, - 0x9c, 0x22, 0x8a, 0x83, 0x9b, 0x22, 0x8b, 0x83, 0x9c, 0x22, 0x8b, 0x83, - 0x9b, 0x22, 0x8c, 0x83, 0x9c, 0x22, 0x8c, 0x83, 0x9b, 0x22, 0x8d, 0x83, - 0x9c, 0x22, 0x8d, 0x83, 0x9b, 0x22, 0x8e, 0x83, 0x9c, 0x22, 0x8e, 0x83, - 0x9b, 0x22, 0x8e, 0x83, 0x9c, 0x22, 0x8f, 0x83, 0x9b, 0x22, 0x8f, 0x83, - 0x9c, 0x22, 0x90, 0x83, 0x9b, 0x22, 0x90, 0x83, 0x9c, 0x22, 0x91, 0x83, - 0x9b, 0x22, 0x91, 0x83, 0x9c, 0x22, 0x92, 0x83, 0x9b, 0x22, 0x92, 0x83, - 0x9c, 0x22, 0x93, 0x83, 0x9b, 0x22, 0x93, 0x83, 0x9c, 0x22, 0x94, 0x83, - 0x9b, 0x22, 0x94, 0x83, 0x9c, 0x22, 0x94, 0x83, 0x9b, 0x22, 0x95, 0x83, - 0x9c, 0x22, 0x95, 0x83, 0x9b, 0x22, 0x96, 0x83, 0x9c, 0x22, 0x96, 0x83, - 0x9b, 0x22, 0x97, 0x83, 0x9c, 0x22, 0x97, 0x83, 0x9b, 0x22, 0x98, 0x83, - 0x9c, 0x22, 0x98, 0x83, 0x9b, 0x22, 0x98, 0x83, 0x9c, 0x22, 0x99, 0x83, - 0x9b, 0x22, 0x99, 0x83, 0x9c, 0x22, 0x9a, 0x83, 0x9b, 0x22, 0x9a, 0x83, - 0x9c, 0x22, 0x9a, 0x83, 0x9b, 0x22, 0x9b, 0x83, 0x9c, 0x22, 0x9b, 0x83, - 0x9b, 0x22, 0x9c, 0x83, 0x9c, 0x22, 0x9c, 0x83, 0x9c, 0x22, 0x9d, 0x83, - 0x9d, 0x22, 0x9d, 0x83, 0x9c, 0x22, 0x9d, 0x83, 0x9d, 0x22, 0x9e, 0x83, - 0x9c, 0x22, 0x9e, 0x83, 0x9d, 0x22, 0x9f, 0x83, 0x9c, 0x22, 0x9f, 0x83, - 0x9d, 0x22, 0x9f, 0x83, 0x9c, 0x22, 0xa0, 0x83, 0x9d, 0x22, 0xa0, 0x83, - 0x9c, 0x22, 0xa1, 0x83, 0x9d, 0x22, 0xa1, 0x83, 0x9c, 0x22, 0xa1, 0x83, - 0x9d, 0x22, 0xa2, 0x83, 0x9c, 0x22, 0xa2, 0x83, 0x9d, 0x22, 0xa3, 0x84, - 0xa0, 0x22, 0xa3, 0x84, 0xa1, 0x22, 0xa3, 0x84, 0xa0, 0x22, 0xa4, 0x84, - 0xa1, 0x22, 0xa4, 0x84, 0xa0, 0x22, 0xa5, 0x84, 0xa1, 0x22, 0xa5, 0x84, - 0xa0, 0x22, 0xa5, 0x84, 0xa1, 0x22, 0xa6, 0x84, 0xa0, 0x22, 0xa6, 0x84, - 0xa1, 0x22, 0xa6, 0x85, 0xa4, 0x22, 0xa7, 0x84, 0xa1, 0x22, 0xa7, 0x85, - 0xa4, 0x22, 0xa8, 0x85, 0xa4, 0x22, 0xa8, 0x85, 0xa4, 0x22, 0xa8, 0x85, - 0xa4, 0x22, 0xa9, 0x85, 0xa4, 0x22, 0xa9, 0x85, 0xa4, 0x22, 0xaa, 0x85, - 0xa4, 0x22, 0xaa, 0x86, 0xa8, 0x22, 0xaa, 0x85, 0xa4, 0x22, 0xab, 0x86, - 0xa8, 0x22, 0xab, 0x86, 0xa7, 0x22, 0xab, 0x86, 0xa8, 0x22, 0xac, 0x86, - 0xa7, 0x22, 0xac, 0x86, 0xa8, 0x22, 0xac, 0x86, 0xa7, 0x22, 0xad, 0x86, - 0xa8, 0x22, 0xad, 0x86, 0xa7, 0x22, 0xae, 0x86, 0xa8, 0x22, 0xae, 0x87, - 0xab, 0x22, 0xae, 0x87, 0xab, 0x22, 0xaf, 0x87, 0xab, 0x22, 0xaf, 0x87, - 0xab, 0x22, 0xaf, 0x87, 0xab, 0x22, 0xb0, 0x87, 0xab, 0x22, 0xb0, 0x87, - 0xab, 0x22, 0xb0, 0x87, 0xab, 0x22, 0xb1, 0x87, 0xab, 0x22, 0xb1, 0x87, - 0xab, 0x22, 0xb2, 0x88, 0xaf, 0x22, 0xb2, 0x87, 0xab, 0x22, 0xb2, 0x88, - 0xaf, 0x22, 0xb3, 0x88, 0xae, 0x22, 0xb3, 0x88, 0xaf, 0x22, 0xb3, 0x88, - 0xae, 0x22, 0xb4, 0x88, 0xaf, 0x22, 0xb4, 0x88, 0xae, 0x22, 0xb4, 0x88, - 0xaf, 0x22, 0xb5, 0x89, 0xb2, 0x22, 0xb5, 0x89, 0xb2, 0x22, 0xb5, 0x89, - 0xb2, 0x22, 0xb6, 0x89, 0xb2, 0x22, 0xb6, 0x89, 0xb2, 0x22, 0xb6, 0x89, - 0xb2, 0x22, 0xb7, 0x89, 0xb2, 0x22, 0xb7, 0x89, 0xb2, 0x22, 0xb7, 0x89, - 0xb2, 0x22, 0xb8, 0x89, 0xb2, 0x22, 0xb8, 0x8a, 0xb5, 0x22, 0xb8, 0x89, - 0xb2, 0x22, 0xb9, 0x8a, 0xb5, 0x22, 0xb9, 0x8a, 0xb5, 0x22, 0xb9, 0x8a, - 0xb5, 0x22, 0xba, 0x8a, 0xb5, 0x22, 0xba, 0x8a, 0xb5, 0x22, 0xba, 0x8a, - 0xb5, 0x22, 0xbb, 0x8a, 0xb5, 0x22, 0xbb, 0x8b, 0xb8, 0x22, 0xbb, 0x8a, - 0xb5, 0x22, 0xbc, 0x8b, 0xb8, 0x22, 0xbc, 0x8b, 0xb8, 0x22, 0xbc, 0x8b, - 0xb8, 0x22, 0xbd, 0x8b, 0xb8, 0x22, 0xbd, 0x8b, 0xb8, 0x22, 0xbd, 0x8b, - 0xb8, 0x22, 0xbe, 0x8b, 0xb8, 0x22, 0xbe, 0x8c, 0xbb, 0x22, 0xbe, 0x8c, - 0xbc, 0x22, 0xbf, 0x8c, 0xbb, 0x22, 0xbf, 0x8c, 0xbc, 0x22, 0xbf, 0x8c, - 0xbb, 0x22, 0xc0, 0x8c, 0xbc, 0x22, 0xc0, 0x8c, 0xbb, 0x22, 0xc0, 0x8c, - 0xbc, 0x22, 0xc1, 0x8c, 0xbb, 0x22, 0xc1, 0x8c, 0xbc, 0x22, 0xc1, 0x8c, - 0xbb, 0x22, 0xc1, 0x8c, 0xbc, 0x22, 0xc2, 0x8d, 0xbf, 0x22, 0xc2, 0x8c, - 0xbc, 0x22, 0xc2, 0x8d, 0xbf, 0x22, 0xc3, 0x8d, 0xbe, 0x22, 0xc3, 0x8d, - 0xbf, 0x22, 0xc3, 0x8d, 0xbe, 0x22, 0xc4, 0x8d, 0xbf, 0x22, 0xc4, 0x8d, - 0xbe, 0x22, 0xc4, 0x8d, 0xbf, 0x22, 0xc5, 0x8e, 0xc1, 0x22, 0xc5, 0x8d, - 0xbf, 0x22, 0xc5, 0x8e, 0xc1, 0x22, 0xc6, 0x8e, 0xc1, 0x22, 0xc6, 0x8e, - 0xc1, 0x22, 0xc6, 0x8e, 0xc1, 0x22, 0xc6, 0x8e, 0xc1, 0x22, 0xc7, 0x8e, - 0xc1, 0x22, 0xc7, 0x8e, 0xc1, 0x22, 0xc7, 0x8f, 0xc4, 0x22, 0xc8, 0x8f, - 0xc5, 0x22, 0xc8, 0x8f, 0xc4, 0x22, 0xc8, 0x8f, 0xc5, 0x22, 0xc9, 0x8f, - 0xc4, 0x22, 0xc9, 0x8f, 0xc5, 0x22, 0xc9, 0x8f, 0xc4, 0x22, 0xc9, 0x8f, - 0xc5, 0x22, 0xca, 0x8f, 0xc4, 0x22, 0xca, 0x8f, 0xc5, 0x22, 0xca, 0x90, - 0xc7, 0x22, 0xcb, 0x8f, 0xc5, 0x22, 0xcb, 0x90, 0xc7, 0x22, 0xcb, 0x8f, - 0xc5, 0x22, 0xcc, 0x90, 0xc7, 0x22, 0xcc, 0x90, 0xc7, 0x22, 0xcc, 0x90, - 0xc7, 0x22, 0xcc, 0x90, 0xc7, 0x22, 0xcd, 0x90, 0xc7, 0x22, 0xcd, 0x90, - 0xc7, 0x22, 0xcd, 0x90, 0xc7, 0x22, 0xce, 0x91, 0xca, 0x22, 0xce, 0x90, - 0xc7, 0x22, 0xce, 0x91, 0xca, 0x22, 0xce, 0x91, 0xca, 0x22, 0xcf, 0x91, - 0xca, 0x22, 0xcf, 0x91, 0xca, 0x22, 0xcf, 0x91, 0xca, 0x22, 0xd0, 0x91, - 0xca, 0x22, 0xd0, 0x91, 0xca, 0x22, 0xd0, 0x92, 0xcd, 0x22, 0xd0, 0x92, - 0xcd, 0x22, 0xd1, 0x92, 0xcd, 0x22, 0xd1, 0x92, 0xcd, 0x22, 0xd1, 0x92, - 0xcd, 0x22, 0xd2, 0x92, 0xcd, 0x22, 0xd2, 0x92, 0xcd, 0x22, 0xd2, 0x92, - 0xcd, 0x22, 0xd2, 0x92, 0xcd, 0x22, 0xd3, 0x92, 0xcd, 0x22, 0xd3, 0x93, - 0xd0, 0x22, 0xd3, 0x92, 0xcd, 0x22, 0xd4, 0x93, 0xd0, 0x22, 0xd4, 0x93, - 0xcf, 0x22, 0xd4, 0x93, 0xd0, 0x22, 0xd4, 0x93, 0xcf, 0x22, 0xd5, 0x93, - 0xd0, 0x22, 0xd5, 0x93, 0xcf, 0x22, 0xd5, 0x93, 0xd0, 0x22, 0xd6, 0x94, - 0xd2, 0x22, 0xd6, 0x94, 0xd2, 0x22, 0xd6, 0x94, 0xd2, 0x22, 0xd6, 0x94, - 0xd2, 0x22, 0xd7, 0x94, 0xd2, 0x22, 0xd7, 0x94, 0xd2, 0x22, 0xd7, 0x94, - 0xd2, 0x22, 0xd7, 0x94, 0xd2, 0x22, 0xd8, 0x94, 0xd2, 0x22, 0xd8, 0x94, - 0xd2, 0x22, 0xd8, 0x94, 0xd5, 0x22, 0xd9, 0x94, 0xd2, 0x22, 0xd9, 0x94, - 0xd5, 0x22, 0xd9, 0x94, 0xd2, 0x22, 0xd9, 0x94, 0xd5, 0x22, 0xda, 0x94, - 0xd5, 0x22, 0xda, 0x94, 0xd5, 0x22, 0xda, 0x94, 0xd5, 0x22, 0xda, 0x94, - 0xd5, 0x22, 0xdb, 0x95, 0xd7, 0x22, 0xdb, 0x94, 0xd5, 0x22, 0xdb, 0x95, - 0xd7, 0x22, 0xdb, 0x94, 0xd5, 0x22, 0xdc, 0x95, 0xd7, 0x22, 0xdc, 0x95, - 0xd7, 0x22, 0xdc, 0x95, 0xd7, 0x22, 0xdd, 0x95, 0xd7, 0x22, 0xdd, 0x95, - 0xd7, 0x22, 0xdd, 0x95, 0xd7, 0x22, 0xdd, 0x95, 0xd7, 0x22, 0xde, 0x96, - 0xda, 0x22, 0xde, 0x96, 0xda, 0x22, 0xde, 0x96, 0xda, 0x22, 0xde, 0x96, - 0xda, 0x22, 0xdf, 0x96, 0xda, 0x22, 0xdf, 0x96, 0xda, 0x22, 0xdf, 0x96, - 0xda, 0x22, 0xdf, 0x96, 0xda, 0x22, 0xe0, 0x96, 0xda, 0x22, 0xe0, 0x96, - 0xda, 0x22, 0xe0, 0x97, 0xdd, 0x22, 0xe1, 0x96, 0xda, 0x22, 0xe1, 0x97, - 0xdd, 0x22, 0xe1, 0x96, 0xda, 0x22, 0xe1, 0x97, 0xdd, 0x22, 0xe2, 0x97, - 0xdc, 0x22, 0xe2, 0x97, 0xdd, 0x22, 0xe2, 0x97, 0xdc, 0x22, 0xe2, 0x97, - 0xdd, 0x22, 0xe3, 0x98, 0xdf, 0x22, 0xe3, 0x97, 0xdd, 0x22, 0xe3, 0x98, - 0xdf, 0x22, 0xe3, 0x97, 0xdd, 0x22, 0xe4, 0x98, 0xdf, 0x22, 0xe4, 0x98, - 0xdf, 0x22, 0xe4, 0x98, 0xdf, 0x22, 0xe4, 0x98, 0xdf, 0x22, 0xe5, 0x98, - 0xdf, 0x22, 0xe5, 0x99, 0xe1, 0x22, 0xe5, 0x99, 0xe2, 0x22, 0xe5, 0x99, - 0xe1, 0x22, 0xe6, 0x99, 0xe2, 0x22, 0xe6, 0x99, 0xe1, 0x22, 0xe6, 0x99, - 0xe2, 0x22, 0xe6, 0x99, 0xe1, 0x22, 0xe7, 0x99, 0xe2, 0x22, 0xe7, 0x99, - 0xe1, 0x22, 0xe7, 0x99, 0xe2, 0x22, 0xe7, 0x99, 0xe1, 0x22, 0xe8, 0x99, - 0xe2, 0x22, 0xe8, 0x9a, 0xe4, 0x22, 0xe8, 0x99, 0xe2, 0x22, 0xe8, 0x9a, - 0xe4, 0x22, 0xe9, 0x9a, 0xe4, 0x22, 0xe9, 0x9a, 0xe4, 0x22, 0xe9, 0x9a, - 0xe4, 0x22, 0xe9, 0x9a, 0xe4, 0x22, 0xea, 0x9a, 0xe4, 0x22, 0xea, 0x9a, - 0xe4, 0x22, 0xea, 0x9a, 0xe6, 0x22, 0xea, 0x9a, 0xe4, 0x22, 0xeb, 0x9a, - 0xe6, 0x22, 0xeb, 0x9a, 0xe4, 0x22, 0xeb, 0x9a, 0xe6, 0x22, 0xeb, 0x9a, - 0xe6, 0x22, 0xec, 0x9a, 0xe6, 0x22, 0xec, 0x9a, 0xe6, 0x22, 0xec, 0x9a, - 0xe6, 0x22, 0xec, 0x9b, 0xe8, 0x22, 0xec, 0x9b, 0xe9, 0x22, 0xed, 0x9b, - 0xe8, 0x22, 0xed, 0x9b, 0xe9, 0x22, 0xed, 0x9b, 0xe8, 0x22, 0xed, 0x9b, - 0xe9, 0x22, 0xee, 0x9b, 0xe8, 0x22, 0xee, 0x9b, 0xe9, 0x22, 0xee, 0x9b, - 0xe8, 0x22, 0xee, 0x9b, 0xe9, 0x22, 0xef, 0x9c, 0xeb, 0x22, 0xef, 0x9b, - 0xe9, 0x22, 0xef, 0x9c, 0xeb, 0x22, 0xef, 0x9b, 0xe9, 0x22, 0xf0, 0x9c, - 0xeb, 0x22, 0xf0, 0x9c, 0xeb, 0x22, 0xf0, 0x9c, 0xeb, 0x22, 0xf0, 0x9c, - 0xeb, 0x22, 0xf1, 0x9c, 0xeb, 0x22, 0xf1, 0x9d, 0xed, 0x22, 0xf1, 0x9d, - 0xed, 0x22, 0xf1, 0x9d, 0xed, 0x22, 0xf2, 0x9d, 0xed, 0x22, 0xf2, 0x9d, - 0xed, 0x22, 0xf2, 0x9d, 0xed, 0x22, 0xf2, 0x9d, 0xed, 0x22, 0xf2, 0x9d, - 0xed, 0x22, 0xf3, 0x9d, 0xed, 0x22, 0xf3, 0x9d, 0xed, 0x22, 0xf3, 0x9e, - 0xef, 0x22, 0xf3, 0x9d, 0xed, 0x22, 0xf4, 0x9e, 0xef, 0x22, 0xf4, 0x9d, - 0xed, 0x22, 0xf4, 0x9e, 0xef, 0x22, 0xf4, 0x9d, 0xed, 0x22, 0xf5, 0x9e, - 0xef, 0x22, 0xf5, 0x9e, 0xef, 0x22, 0xf5, 0x9e, 0xef, 0x22, 0xf5, 0x9e, - 0xef, 0x22, 0xf5, 0x9e, 0xef, 0x22, 0xf6, 0x9f, 0xf2, 0x22, 0xf6, 0x9e, - 0xef, 0x22, 0xf6, 0x9f, 0xf2, 0x22, 0xf6, 0x9e, 0xef, 0x22, 0xf7, 0x9f, - 0xf2, 0x22, 0xf7, 0x9f, 0xf1, 0x22, 0xf7, 0x9f, 0xf2, 0x22, 0xf7, 0x9f, - 0xf1, 0x22, 0xf8, 0x9f, 0xf2, 0x22, 0xf8, 0x9f, 0xf4, 0x22, 0xf8, 0x9f, - 0xf4, 0x22, 0xf8, 0x9f, 0xf4, 0x22, 0xf8, 0x9f, 0xf4, 0x22, 0xf9, 0x9f, - 0xf4, 0x22, 0xf9, 0x9f, 0xf4, 0x22, 0xf9, 0x9f, 0xf4, 0x22, 0xf9, 0x9f, - 0xf4, 0x22, 0xfa, 0x9f, 0xf4, 0x22, 0xfa, 0x9f, 0xf4, 0x22, 0xfa, 0xa0, - 0xf6, 0x22, 0xfa, 0x9f, 0xf4, 0x22, 0xfa, 0xa0, 0xf6, 0x22, 0xfb, 0x9f, - 0xf4, 0x22, 0xfb, 0xa0, 0xf6, 0x22, 0xfb, 0xa0, 0xf6, 0x22, 0xfb, 0xa0, - 0xf6, 0x22, 0xfc, 0xa0, 0xf6, 0x22, 0xfc, 0xa0, 0xf6, 0x22, 0xfc, 0xa1, - 0xf8, 0x22, 0xfc, 0xa0, 0xf6, 0x22, 0xfc, 0xa1, 0xf8, 0x22, 0xfd, 0xa0, - 0xf6, 0x22, 0xfd, 0xa1, 0xf8, 0x22, 0xfd, 0xa0, 0xf6, 0x22, 0xfd, 0xa1, - 0xf8, 0x22, 0xfe, 0xa1, 0xf8, 0x22, 0xfe, 0xa1, 0xf8, 0x22, 0xfe, 0xa1, - 0xf8, 0x22, 0xfe, 0xa1, 0xf8, 0x22, 0xfe, 0xa2, 0xfa, 0x22, 0xff, 0xa2, - 0xfa, 0x22, 0xff, 0xa2, 0xfa, 0x22, 0x03, 0x84, 0x9b, 0x23, 0x0a, 0x84, - 0x9b, 0x23, 0x0f, 0x84, 0x9b, 0x23, 0x14, 0x84, 0x9b, 0x23, 0x17, 0x84, - 0x9b, 0x23, 0x1b, 0x84, 0x9b, 0x23, 0x1e, 0x84, 0x9b, 0x23, 0x20, 0x86, - 0x9b, 0x23, 0x23, 0x84, 0x9b, 0x23, 0x25, 0x86, 0x9b, 0x23, 0x27, 0x84, - 0x9b, 0x23, 0x29, 0x86, 0x9b, 0x23, 0x2b, 0x84, 0x9b, 0x23, 0x2d, 0x86, - 0x9b, 0x23, 0x2f, 0x84, 0x9b, 0x23, 0x31, 0x86, 0x9b, 0x23, 0x32, 0x84, - 0x9b, 0x23, 0x34, 0x86, 0x9b, 0x23, 0x35, 0x84, 0x9b, 0x23, 0x37, 0x86, - 0x9b, 0x23, 0x38, 0x84, 0x9b, 0x23, 0x3a, 0x86, 0x9b, 0x23, 0x3b, 0x84, - 0x9b, 0x23, 0x3c, 0x86, 0x9b, 0x23, 0x3e, 0x84, 0x9b, 0x23, 0x3f, 0x86, - 0x9b, 0x23, 0x40, 0x84, 0x9b, 0x23, 0x42, 0x86, 0x9b, 0x23, 0x43, 0x84, - 0x9b, 0x23, 0x44, 0x86, 0x9b, 0x23, 0x45, 0x84, 0x9b, 0x23, 0x46, 0x86, - 0x9b, 0x23, 0x47, 0x84, 0x9b, 0x23, 0x48, 0x86, 0x9b, 0x23, 0x49, 0x84, - 0x9b, 0x23, 0x4a, 0x86, 0x9b, 0x23, 0x4b, 0x84, 0x9b, 0x23, 0x4c, 0x86, - 0x9b, 0x23, 0x4d, 0x84, 0x9b, 0x23, 0x4e, 0x86, 0x9b, 0x23, 0x4f, 0x84, - 0x9b, 0x23, 0x50, 0x86, 0x9b, 0x23, 0x51, 0x84, 0x9b, 0x23, 0x52, 0x86, - 0x9b, 0x23, 0x53, 0x84, 0x9b, 0x23, 0x54, 0x86, 0x9b, 0x23, 0x55, 0x84, - 0x9b, 0x23, 0x56, 0x86, 0x9b, 0x23, 0x57, 0x84, 0x9b, 0x23, 0x58, 0x86, - 0x9b, 0x23, 0x58, 0x84, 0x9b, 0x23, 0x59, 0x86, 0x9b, 0x23, 0x5a, 0x84, - 0x9b, 0x23, 0x5b, 0x86, 0x9b, 0x23, 0x5c, 0x84, 0x9b, 0x23, 0x5d, 0x86, - 0x9b, 0x23, 0x5d, 0x84, 0x9b, 0x23, 0x5e, 0x86, 0x9b, 0x23, 0x5f, 0x84, - 0x9b, 0x23, 0x60, 0x86, 0x9b, 0x23, 0x60, 0x84, 0x9b, 0x23, 0x61, 0x86, - 0x9b, 0x23, 0x62, 0x84, 0x9b, 0x23, 0x63, 0x86, 0x9b, 0x23, 0x63, 0x84, - 0x9b, 0x23, 0x64, 0x86, 0x9b, 0x23, 0x65, 0x84, 0x9b, 0x23, 0x66, 0x86, - 0x9b, 0x23, 0x66, 0x84, 0x9b, 0x23, 0x67, 0x84, 0x9c, 0x23, 0x68, 0x84, - 0x9b, 0x23, 0x68, 0x84, 0x9c, 0x23, 0x69, 0x84, 0x9b, 0x23, 0x6a, 0x84, - 0x9c, 0x23, 0x6a, 0x84, 0x9b, 0x23, 0x6b, 0x84, 0x9c, 0x23, 0x6c, 0x84, - 0x9b, 0x23, 0x6c, 0x84, 0x9c, 0x23, 0x6d, 0x84, 0x9b, 0x23, 0x6e, 0x84, - 0x9c, 0x23, 0x6e, 0x84, 0x9b, 0x23, 0x6f, 0x84, 0x9c, 0x23, 0x70, 0x84, - 0x9b, 0x23, 0x70, 0x84, 0x9c, 0x23, 0x71, 0x84, 0x9b, 0x23, 0x72, 0x84, - 0x9c, 0x23, 0x72, 0x84, 0x9b, 0x23, 0x73, 0x84, 0x9c, 0x23, 0x73, 0x84, - 0x9b, 0x23, 0x74, 0x84, 0x9c, 0x23, 0x75, 0x84, 0x9b, 0x23, 0x75, 0x84, - 0x9c, 0x23, 0x76, 0x84, 0x9b, 0x23, 0x76, 0x84, 0x9c, 0x23, 0x77, 0x84, - 0x9b, 0x23, 0x78, 0x84, 0x9c, 0x23, 0x78, 0x84, 0x9b, 0x23, 0x79, 0x84, - 0x9c, 0x23, 0x79, 0x84, 0x9b, 0x23, 0x7a, 0x84, 0x9c, 0x23, 0x7a, 0x84, - 0x9b, 0x23, 0x7b, 0x84, 0x9c, 0x23, 0x7c, 0x84, 0x9b, 0x23, 0x7c, 0x84, - 0x9c, 0x23, 0x7d, 0x84, 0x9b, 0x23, 0x7d, 0x84, 0x9c, 0x23, 0x7e, 0x84, - 0x9b, 0x23, 0x7e, 0x84, 0x9c, 0x23, 0x7f, 0x84, 0x9b, 0x23, 0x7f, 0x84, - 0x9c, 0x23, 0x80, 0x84, 0x9b, 0x23, 0x81, 0x84, 0x9c, 0x23, 0x81, 0x84, - 0x9b, 0x23, 0x82, 0x84, 0x9c, 0x23, 0x82, 0x84, 0x9b, 0x23, 0x83, 0x84, - 0x9c, 0x23, 0x83, 0x84, 0x9b, 0x23, 0x84, 0x84, 0x9c, 0x23, 0x84, 0x84, - 0x9b, 0x23, 0x85, 0x84, 0x9c, 0x23, 0x85, 0x84, 0x9b, 0x23, 0x86, 0x84, - 0x9c, 0x23, 0x86, 0x84, 0x9b, 0x23, 0x87, 0x84, 0x9c, 0x23, 0x87, 0x84, - 0x9b, 0x23, 0x88, 0x84, 0x9c, 0x23, 0x88, 0x84, 0x9b, 0x23, 0x89, 0x84, - 0x9c, 0x23, 0x89, 0x84, 0x9b, 0x23, 0x8a, 0x84, 0x9c, 0x23, 0x8a, 0x84, - 0x9b, 0x23, 0x8b, 0x84, 0x9c, 0x23, 0x8b, 0x84, 0x9b, 0x23, 0x8c, 0x84, - 0x9c, 0x23, 0x8c, 0x84, 0x9b, 0x23, 0x8d, 0x84, 0x9c, 0x23, 0x8d, 0x84, - 0x9b, 0x23, 0x8e, 0x84, 0x9c, 0x23, 0x8e, 0x84, 0x9b, 0x23, 0x8e, 0x84, - 0x9c, 0x23, 0x8f, 0x84, 0x9b, 0x23, 0x8f, 0x84, 0x9c, 0x23, 0x90, 0x84, - 0x9b, 0x23, 0x90, 0x84, 0x9c, 0x23, 0x91, 0x84, 0x9b, 0x23, 0x91, 0x84, - 0x9c, 0x23, 0x92, 0x84, 0x9b, 0x23, 0x92, 0x84, 0x9c, 0x23, 0x93, 0x84, - 0x9b, 0x23, 0x93, 0x84, 0x9c, 0x23, 0x94, 0x84, 0x9b, 0x23, 0x94, 0x84, - 0x9c, 0x23, 0x94, 0x84, 0x9b, 0x23, 0x95, 0x84, 0x9c, 0x23, 0x95, 0x84, - 0x9b, 0x23, 0x96, 0x84, 0x9c, 0x23, 0x96, 0x84, 0x9b, 0x23, 0x97, 0x84, - 0x9c, 0x23, 0x97, 0x84, 0x9b, 0x23, 0x98, 0x84, 0x9c, 0x23, 0x98, 0x84, - 0x9b, 0x23, 0x98, 0x84, 0x9c, 0x23, 0x99, 0x84, 0x9b, 0x23, 0x99, 0x84, - 0x9c, 0x23, 0x9a, 0x84, 0x9b, 0x23, 0x9a, 0x84, 0x9c, 0x23, 0x9a, 0x84, - 0x9b, 0x23, 0x9b, 0x84, 0x9c, 0x23, 0x9b, 0x84, 0x9b, 0x23, 0x9c, 0x84, - 0x9c, 0x23, 0x9c, 0x84, 0x9c, 0x23, 0x9d, 0x84, 0x9d, 0x23, 0x9d, 0x84, - 0x9d, 0x23, 0x9d, 0x84, 0x9d, 0x23, 0x9e, 0x84, 0x9e, 0x23, 0x9e, 0x84, - 0x9e, 0x23, 0x9f, 0x84, 0x9f, 0x23, 0x9f, 0x84, 0x9e, 0x23, 0x9f, 0x84, - 0x9f, 0x23, 0xa0, 0x84, 0x9e, 0x23, 0xa0, 0x84, 0x9f, 0x23, 0xa1, 0x84, - 0x9e, 0x23, 0xa1, 0x84, 0x9f, 0x23, 0xa1, 0x84, 0x9e, 0x23, 0xa2, 0x84, - 0x9f, 0x23, 0xa2, 0x84, 0x9e, 0x23, 0xa3, 0x84, 0x9f, 0x23, 0xa3, 0x84, - 0x9e, 0x23, 0xa3, 0x84, 0x9f, 0x23, 0xa4, 0x84, 0x9e, 0x23, 0xa4, 0x84, - 0x9f, 0x23, 0xa5, 0x85, 0xa2, 0x23, 0xa5, 0x84, 0x9f, 0x23, 0xa5, 0x85, - 0xa2, 0x23, 0xa6, 0x85, 0xa2, 0x23, 0xa6, 0x85, 0xa2, 0x23, 0xa6, 0x85, - 0xa2, 0x23, 0xa7, 0x85, 0xa2, 0x23, 0xa7, 0x85, 0xa2, 0x23, 0xa8, 0x85, - 0xa2, 0x23, 0xa8, 0x86, 0xa6, 0x23, 0xa8, 0x86, 0xa6, 0x23, 0xa9, 0x86, - 0xa6, 0x23, 0xa9, 0x86, 0xa6, 0x23, 0xaa, 0x86, 0xa6, 0x23, 0xaa, 0x86, - 0xa6, 0x23, 0xaa, 0x86, 0xa6, 0x23, 0xab, 0x86, 0xa6, 0x23, 0xab, 0x86, - 0xa6, 0x23, 0xab, 0x86, 0xa6, 0x23, 0xac, 0x87, 0xaa, 0x23, 0xac, 0x86, - 0xa6, 0x23, 0xac, 0x87, 0xaa, 0x23, 0xad, 0x87, 0xa9, 0x23, 0xad, 0x87, - 0xaa, 0x23, 0xae, 0x87, 0xa9, 0x23, 0xae, 0x87, 0xaa, 0x23, 0xae, 0x87, - 0xa9, 0x23, 0xaf, 0x87, 0xaa, 0x23, 0xaf, 0x87, 0xa9, 0x23, 0xaf, 0x87, - 0xaa, 0x23, 0xb0, 0x88, 0xad, 0x23, 0xb0, 0x88, 0xad, 0x23, 0xb0, 0x88, - 0xad, 0x23, 0xb1, 0x88, 0xad, 0x23, 0xb1, 0x88, 0xad, 0x23, 0xb2, 0x88, - 0xad, 0x23, 0xb2, 0x88, 0xad, 0x23, 0xb2, 0x88, 0xad, 0x23, 0xb3, 0x88, - 0xad, 0x23, 0xb3, 0x88, 0xad, 0x23, 0xb3, 0x89, 0xb0, 0x23, 0xb4, 0x88, - 0xad, 0x23, 0xb4, 0x89, 0xb0, 0x23, 0xb4, 0x89, 0xb0, 0x23, 0xb5, 0x89, - 0xb0, 0x23, 0xb5, 0x89, 0xb2, 0x23, 0xb5, 0x89, 0xb0, 0x23, 0xb6, 0x89, - 0xb2, 0x23, 0xb6, 0x89, 0xb0, 0x23, 0xb6, 0x89, 0xb2, 0x23, 0xb7, 0x89, - 0xb2, 0x23, 0xb7, 0x89, 0xb2, 0x23, 0xb7, 0x89, 0xb2, 0x23, 0xb8, 0x89, - 0xb2, 0x23, 0xb8, 0x8a, 0xb3, 0x23, 0xb8, 0x8a, 0xb4, 0x23, 0xb9, 0x8a, - 0xb3, 0x23, 0xb9, 0x8a, 0xb4, 0x23, 0xb9, 0x8b, 0xb7, 0x23, 0xba, 0x8b, - 0xb7, 0x23, 0xba, 0x8b, 0xb7, 0x23, 0xba, 0x8b, 0xb7, 0x23, 0xbb, 0x8b, - 0xb7, 0x23, 0xbb, 0x8b, 0xb7, 0x23, 0xbb, 0x8b, 0xb7, 0x23, 0xbc, 0x8b, - 0xb7, 0x23, 0xbc, 0x8b, 0xb7, 0x23, 0xbc, 0x8b, 0xb7, 0x23, 0xbd, 0x8c, - 0xba, 0x23, 0xbd, 0x8b, 0xb7, 0x23, 0xbd, 0x8c, 0xba, 0x23, 0xbe, 0x8c, - 0xba, 0x23, 0xbe, 0x8c, 0xba, 0x23, 0xbe, 0x8c, 0xba, 0x23, 0xbf, 0x8c, - 0xba, 0x23, 0xbf, 0x8c, 0xba, 0x23, 0xbf, 0x8c, 0xba, 0x23, 0xc0, 0x8d, - 0xbd, 0x23, 0xc0, 0x8c, 0xba, 0x23, 0xc0, 0x8d, 0xbd, 0x23, 0xc1, 0x8c, - 0xba, 0x23, 0xc1, 0x8d, 0xbd, 0x23, 0xc1, 0x8d, 0xbd, 0x23, 0xc1, 0x8d, - 0xbd, 0x23, 0xc2, 0x8d, 0xbd, 0x23, 0xc2, 0x8d, 0xbd, 0x23, 0xc2, 0x8d, - 0xbd, 0x23, 0xc3, 0x8d, 0xbd, 0x23, 0xc3, 0x8e, 0xc0, 0x23, 0xc3, 0x8e, - 0xc0, 0x23, 0xc4, 0x8e, 0xc0, 0x23, 0xc4, 0x8e, 0xc0, 0x23, 0xc4, 0x8e, - 0xc0, 0x23, 0xc5, 0x8e, 0xc0, 0x23, 0xc5, 0x8e, 0xc0, 0x23, 0xc5, 0x8e, - 0xc0, 0x23, 0xc6, 0x8e, 0xc0, 0x23, 0xc6, 0x8e, 0xc0, 0x23, 0xc6, 0x8e, - 0xc3, 0x23, 0xc6, 0x8e, 0xc0, 0x23, 0xc7, 0x8e, 0xc3, 0x23, 0xc7, 0x8e, - 0xc3, 0x23, 0xc7, 0x8e, 0xc3, 0x23, 0xc8, 0x8e, 0xc3, 0x23, 0xc8, 0x8e, - 0xc3, 0x23, 0xc8, 0x8e, 0xc3, 0x23, 0xc9, 0x8e, 0xc3, 0x23, 0xc9, 0x8f, - 0xc6, 0x23, 0xc9, 0x8e, 0xc3, 0x23, 0xc9, 0x8f, 0xc6, 0x23, 0xca, 0x8f, - 0xc6, 0x23, 0xca, 0x8f, 0xc6, 0x23, 0xca, 0x8f, 0xc6, 0x23, 0xcb, 0x8f, - 0xc6, 0x23, 0xcb, 0x8f, 0xc6, 0x23, 0xcb, 0x8f, 0xc6, 0x23, 0xcc, 0x90, - 0xc9, 0x23, 0xcc, 0x90, 0xc9, 0x23, 0xcc, 0x90, 0xc9, 0x23, 0xcc, 0x90, - 0xc9, 0x23, 0xcd, 0x90, 0xc9, 0x23, 0xcd, 0x90, 0xc9, 0x23, 0xcd, 0x90, - 0xc9, 0x23, 0xce, 0x90, 0xc9, 0x23, 0xce, 0x90, 0xc9, 0x23, 0xce, 0x90, - 0xc9, 0x23, 0xce, 0x90, 0xc9, 0x23, 0xcf, 0x90, 0xc9, 0x23, 0xcf, 0x91, - 0xcc, 0x23, 0xcf, 0x90, 0xc9, 0x23, 0xd0, 0x91, 0xcc, 0x23, 0xd0, 0x91, - 0xcb, 0x23, 0xd0, 0x91, 0xcc, 0x23, 0xd0, 0x91, 0xcb, 0x23, 0xd1, 0x91, - 0xcc, 0x23, 0xd1, 0x91, 0xcb, 0x23, 0xd1, 0x91, 0xcc, 0x23, 0xd2, 0x92, - 0xce, 0x23, 0xd2, 0x92, 0xce, 0x23, 0xd2, 0x92, 0xce, 0x23, 0xd2, 0x92, - 0xce, 0x23, 0xd3, 0x92, 0xce, 0x23, 0xd3, 0x92, 0xce, 0x23, 0xd3, 0x92, - 0xce, 0x23, 0xd4, 0x92, 0xce, 0x23, 0xd4, 0x92, 0xce, 0x23, 0xd4, 0x92, - 0xce, 0x23, 0xd4, 0x93, 0xd1, 0x23, 0xd5, 0x92, 0xce, 0x23, 0xd5, 0x93, - 0xd1, 0x23, 0xd5, 0x93, 0xd1, 0x23, 0xd6, 0x93, 0xd1, 0x23, 0xd6, 0x93, - 0xd1, 0x23, 0xd6, 0x93, 0xd1, 0x23, 0xd6, 0x93, 0xd1, 0x23, 0xd7, 0x93, - 0xd1, 0x23, 0xd7, 0x94, 0xd4, 0x23, 0xd7, 0x93, 0xd1, 0x23, 0xd7, 0x94, - 0xd4, 0x23, 0xd8, 0x93, 0xd1, 0x23, 0xd8, 0x94, 0xd4, 0x23, 0xd8, 0x94, - 0xd3, 0x23, 0xd9, 0x94, 0xd4, 0x23, 0xd9, 0x94, 0xd3, 0x23, 0xd9, 0x94, - 0xd4, 0x23, 0xd9, 0x95, 0xd6, 0x23, 0xda, 0x95, 0xd6, 0x23, 0xda, 0x95, - 0xd6, 0x23, 0xda, 0x95, 0xd6, 0x23, 0xda, 0x95, 0xd6, 0x23, 0xdb, 0x95, - 0xd6, 0x23, 0xdb, 0x95, 0xd6, 0x23, 0xdb, 0x95, 0xd6, 0x23, 0xdb, 0x95, - 0xd6, 0x23, 0xdc, 0x95, 0xd6, 0x23, 0xdc, 0x96, 0xd9, 0x23, 0xdc, 0x95, - 0xd6, 0x23, 0xdd, 0x96, 0xd9, 0x23, 0xdd, 0x95, 0xd6, 0x23, 0xdd, 0x96, - 0xd9, 0x23, 0xdd, 0x96, 0xd9, 0x23, 0xde, 0x96, 0xd9, 0x23, 0xde, 0x96, - 0xd9, 0x23, 0xde, 0x96, 0xd9, 0x23, 0xde, 0x96, 0xd9, 0x23, 0xdf, 0x96, - 0xd9, 0x23, 0xdf, 0x97, 0xdb, 0x23, 0xdf, 0x96, 0xd9, 0x23, 0xdf, 0x97, - 0xdb, 0x23, 0xe0, 0x97, 0xdb, 0x23, 0xe0, 0x97, 0xdb, 0x23, 0xe0, 0x97, - 0xdb, 0x23, 0xe1, 0x97, 0xdb, 0x23, 0xe1, 0x97, 0xdb, 0x23, 0xe1, 0x97, - 0xdb, 0x23, 0xe1, 0x98, 0xde, 0x23, 0xe2, 0x98, 0xde, 0x23, 0xe2, 0x98, - 0xde, 0x23, 0xe2, 0x98, 0xde, 0x23, 0xe2, 0x98, 0xde, 0x23, 0xe3, 0x98, - 0xde, 0x23, 0xe3, 0x98, 0xde, 0x23, 0xe3, 0x98, 0xde, 0x23, 0xe3, 0x98, - 0xde, 0x23, 0xe4, 0x98, 0xde, 0x23, 0xe4, 0x98, 0xe0, 0x23, 0xe4, 0x98, - 0xde, 0x23, 0xe4, 0x98, 0xe0, 0x23, 0xe5, 0x98, 0xde, 0x23, 0xe5, 0x98, - 0xe0, 0x23, 0xe5, 0x98, 0xe0, 0x23, 0xe5, 0x98, 0xe0, 0x23, 0xe6, 0x98, - 0xe0, 0x23, 0xe6, 0x98, 0xe0, 0x23, 0xe6, 0x99, 0xe3, 0x23, 0xe6, 0x98, - 0xe0, 0x23, 0xe7, 0x99, 0xe3, 0x23, 0xe7, 0x98, 0xe0, 0x23, 0xe7, 0x99, - 0xe3, 0x23, 0xe7, 0x99, 0xe2, 0x23, 0xe8, 0x99, 0xe3, 0x23, 0xe8, 0x99, - 0xe2, 0x23, 0xe8, 0x99, 0xe3, 0x23, 0xe8, 0x99, 0xe2, 0x23, 0xe9, 0x99, - 0xe3, 0x23, 0xe9, 0x9a, 0xe5, 0x23, 0xe9, 0x9a, 0xe5, 0x23, 0xe9, 0x9a, - 0xe5, 0x23, 0xea, 0x9a, 0xe5, 0x23, 0xea, 0x9a, 0xe5, 0x23, 0xea, 0x9a, - 0xe5, 0x23, 0xea, 0x9a, 0xe5, 0x23, 0xeb, 0x9a, 0xe5, 0x23, 0xeb, 0x9a, - 0xe5, 0x23, 0xeb, 0x9a, 0xe5, 0x23, 0xeb, 0x9b, 0xe7, 0x23, 0xec, 0x9a, - 0xe5, 0x23, 0xec, 0x9b, 0xe7, 0x23, 0xec, 0x9a, 0xe5, 0x23, 0xec, 0x9b, - 0xe7, 0x23, 0xec, 0x9b, 0xe7, 0x23, 0xed, 0x9b, 0xe7, 0x23, 0xed, 0x9b, - 0xe7, 0x23, 0xed, 0x9b, 0xe7, 0x23, 0xed, 0x9c, 0xea, 0x23, 0xee, 0x9c, - 0xea, 0x23, 0xee, 0x9c, 0xea, 0x23, 0xee, 0x9c, 0xea, 0x23, 0xee, 0x9c, - 0xea, 0x23, 0xef, 0x9c, 0xea, 0x23, 0xef, 0x9c, 0xea, 0x23, 0xef, 0x9c, - 0xea, 0x23, 0xef, 0x9c, 0xea, 0x23, 0xf0, 0x9c, 0xea, 0x23, 0xf0, 0x9d, - 0xec, 0x23, 0xf0, 0x9c, 0xea, 0x23, 0xf0, 0x9d, 0xec, 0x23, 0xf1, 0x9c, - 0xea, 0x23, 0xf1, 0x9d, 0xec, 0x23, 0xf1, 0x9d, 0xec, 0x23, 0xf1, 0x9d, - 0xec, 0x23, 0xf2, 0x9d, 0xec, 0x23, 0xf2, 0x9d, 0xec, 0x23, 0xf2, 0x9d, - 0xee, 0x23, 0xf2, 0x9d, 0xec, 0x23, 0xf2, 0x9d, 0xee, 0x23, 0xf3, 0x9d, - 0xec, 0x23, 0xf3, 0x9d, 0xee, 0x23, 0xf3, 0x9d, 0xee, 0x23, 0xf3, 0x9d, - 0xee, 0x23, 0xf4, 0x9d, 0xee, 0x23, 0xf4, 0x9d, 0xee, 0x23, 0xf4, 0x9e, - 0xf0, 0x23, 0xf4, 0x9e, 0xf1, 0x23, 0xf5, 0x9e, 0xf0, 0x23, 0xf5, 0x9e, - 0xf1, 0x23, 0xf5, 0x9e, 0xf0, 0x23, 0xf5, 0x9e, 0xf1, 0x23, 0xf5, 0x9e, - 0xf0, 0x23, 0xf6, 0x9e, 0xf1, 0x23, 0xf6, 0x9e, 0xf0, 0x23, 0xf6, 0x9e, - 0xf1, 0x23, 0xf6, 0x9e, 0xf0, 0x23, 0xf7, 0x9e, 0xf1, 0x23, 0xf7, 0x9f, - 0xf3, 0x23, 0xf7, 0x9e, 0xf1, 0x23, 0xf7, 0x9f, 0xf3, 0x23, 0xf8, 0x9e, - 0xf1, 0x23, 0xf8, 0x9f, 0xf3, 0x23, 0xf8, 0x9f, 0xf2, 0x23, 0xf8, 0x9f, - 0xf3, 0x23, 0xf8, 0x9f, 0xf2, 0x23, 0xf9, 0x9f, 0xf3, 0x23, 0xf9, 0xa0, - 0xf5, 0x23, 0xf9, 0x9f, 0xf3, 0x23, 0xf9, 0xa0, 0xf5, 0x23, 0xfa, 0x9f, - 0xf3, 0x23, 0xfa, 0xa0, 0xf5, 0x23, 0xfa, 0xa0, 0xf5, 0x23, 0xfa, 0xa0, - 0xf5, 0x23, 0xfa, 0xa0, 0xf5, 0x23, 0xfb, 0xa0, 0xf5, 0x23, 0xfb, 0xa1, - 0xf7, 0x23, 0xfb, 0xa1, 0xf7, 0x23, 0xfb, 0xa1, 0xf7, 0x23, 0xfc, 0xa1, - 0xf7, 0x23, 0xfc, 0xa1, 0xf7, 0x23, 0xfc, 0xa1, 0xf7, 0x23, 0xfc, 0xa1, - 0xf7, 0x23, 0xfc, 0xa1, 0xf7, 0x23, 0xfd, 0xa1, 0xf7, 0x23, 0xfd, 0xa1, - 0xf7, 0x23, 0xfd, 0xa1, 0xf9, 0x23, 0xfd, 0xa1, 0xf7, 0x23, 0xfe, 0xa1, - 0xf9, 0x23, 0xfe, 0xa1, 0xf7, 0x23, 0xfe, 0xa1, 0xf9, 0x23, 0xfe, 0xa1, - 0xf7, 0x23, 0xfe, 0xa1, 0xf9, 0x23, 0xff, 0xa1, 0xf9, 0x23, 0xff, 0xa1, - 0xf9, 0x23, 0x03, 0x83, 0x9b, 0x23, 0x0a, 0x83, 0x9b, 0x23, 0x0f, 0x83, - 0x9b, 0x23, 0x14, 0x83, 0x9b, 0x23, 0x17, 0x83, 0x9b, 0x23, 0x1b, 0x83, - 0x9b, 0x23, 0x1e, 0x83, 0x9b, 0x23, 0x20, 0x86, 0x9b, 0x23, 0x23, 0x83, - 0x9b, 0x23, 0x25, 0x86, 0x9b, 0x23, 0x27, 0x83, 0x9b, 0x23, 0x29, 0x86, - 0x9b, 0x23, 0x2b, 0x83, 0x9b, 0x23, 0x2d, 0x86, 0x9b, 0x23, 0x2f, 0x83, - 0x9b, 0x23, 0x31, 0x86, 0x9b, 0x23, 0x32, 0x83, 0x9b, 0x23, 0x34, 0x86, - 0x9b, 0x23, 0x35, 0x83, 0x9b, 0x23, 0x37, 0x86, 0x9b, 0x23, 0x38, 0x83, - 0x9b, 0x23, 0x3a, 0x83, 0x9c, 0x23, 0x3b, 0x83, 0x9b, 0x23, 0x3c, 0x83, - 0x9c, 0x23, 0x3e, 0x83, 0x9b, 0x23, 0x3f, 0x83, 0x9c, 0x23, 0x40, 0x83, - 0x9b, 0x23, 0x42, 0x83, 0x9c, 0x23, 0x43, 0x83, 0x9b, 0x23, 0x44, 0x83, - 0x9c, 0x23, 0x45, 0x83, 0x9b, 0x23, 0x46, 0x83, 0x9c, 0x23, 0x47, 0x83, - 0x9b, 0x23, 0x48, 0x83, 0x9c, 0x23, 0x49, 0x83, 0x9b, 0x23, 0x4a, 0x83, - 0x9c, 0x23, 0x4b, 0x83, 0x9b, 0x23, 0x4c, 0x83, 0x9c, 0x23, 0x4d, 0x83, - 0x9b, 0x23, 0x4e, 0x83, 0x9c, 0x23, 0x4f, 0x83, 0x9b, 0x23, 0x50, 0x83, - 0x9c, 0x23, 0x51, 0x83, 0x9b, 0x23, 0x52, 0x83, 0x9c, 0x23, 0x53, 0x83, - 0x9b, 0x23, 0x54, 0x83, 0x9c, 0x23, 0x55, 0x83, 0x9b, 0x23, 0x56, 0x83, - 0x9c, 0x23, 0x57, 0x83, 0x9b, 0x23, 0x58, 0x83, 0x9c, 0x23, 0x58, 0x83, - 0x9b, 0x23, 0x59, 0x83, 0x9c, 0x23, 0x5a, 0x83, 0x9b, 0x23, 0x5b, 0x83, - 0x9c, 0x23, 0x5c, 0x83, 0x9b, 0x23, 0x5d, 0x83, 0x9c, 0x23, 0x5d, 0x83, - 0x9b, 0x23, 0x5e, 0x83, 0x9c, 0x23, 0x5f, 0x83, 0x9b, 0x23, 0x60, 0x83, - 0x9c, 0x23, 0x60, 0x83, 0x9b, 0x23, 0x61, 0x83, 0x9c, 0x23, 0x62, 0x83, - 0x9b, 0x23, 0x63, 0x83, 0x9c, 0x23, 0x63, 0x83, 0x9b, 0x23, 0x64, 0x83, - 0x9c, 0x23, 0x65, 0x83, 0x9b, 0x23, 0x66, 0x83, 0x9c, 0x23, 0x66, 0x83, - 0x9b, 0x23, 0x67, 0x83, 0x9c, 0x23, 0x68, 0x83, 0x9b, 0x23, 0x68, 0x83, - 0x9c, 0x23, 0x69, 0x83, 0x9b, 0x23, 0x6a, 0x83, 0x9c, 0x23, 0x6a, 0x83, - 0x9b, 0x23, 0x6b, 0x83, 0x9c, 0x23, 0x6c, 0x83, 0x9b, 0x23, 0x6c, 0x83, - 0x9c, 0x23, 0x6d, 0x83, 0x9b, 0x23, 0x6e, 0x83, 0x9c, 0x23, 0x6e, 0x83, - 0x9b, 0x23, 0x6f, 0x83, 0x9c, 0x23, 0x70, 0x83, 0x9b, 0x23, 0x70, 0x83, - 0x9c, 0x23, 0x71, 0x83, 0x9b, 0x23, 0x72, 0x83, 0x9c, 0x23, 0x72, 0x83, - 0x9b, 0x23, 0x73, 0x83, 0x9c, 0x23, 0x73, 0x83, 0x9b, 0x23, 0x74, 0x83, - 0x9c, 0x23, 0x75, 0x83, 0x9b, 0x23, 0x75, 0x83, 0x9c, 0x23, 0x76, 0x83, - 0x9b, 0x23, 0x76, 0x83, 0x9c, 0x23, 0x77, 0x83, 0x9b, 0x23, 0x78, 0x83, - 0x9c, 0x23, 0x78, 0x83, 0x9b, 0x23, 0x79, 0x83, 0x9c, 0x23, 0x79, 0x83, - 0x9b, 0x23, 0x7a, 0x83, 0x9c, 0x23, 0x7a, 0x83, 0x9b, 0x23, 0x7b, 0x83, - 0x9c, 0x23, 0x7c, 0x83, 0x9b, 0x23, 0x7c, 0x83, 0x9c, 0x23, 0x7d, 0x83, - 0x9b, 0x23, 0x7d, 0x83, 0x9c, 0x23, 0x7e, 0x83, 0x9b, 0x23, 0x7e, 0x83, - 0x9c, 0x23, 0x7f, 0x83, 0x9b, 0x23, 0x7f, 0x83, 0x9c, 0x23, 0x80, 0x83, - 0x9b, 0x23, 0x81, 0x83, 0x9c, 0x23, 0x81, 0x83, 0x9b, 0x23, 0x82, 0x83, - 0x9c, 0x23, 0x82, 0x83, 0x9b, 0x23, 0x83, 0x83, 0x9c, 0x23, 0x83, 0x83, - 0x9b, 0x23, 0x84, 0x83, 0x9c, 0x23, 0x84, 0x83, 0x9b, 0x23, 0x85, 0x83, - 0x9c, 0x23, 0x85, 0x83, 0x9b, 0x23, 0x86, 0x83, 0x9c, 0x23, 0x86, 0x83, - 0x9b, 0x23, 0x87, 0x83, 0x9c, 0x23, 0x87, 0x83, 0x9b, 0x23, 0x88, 0x83, - 0x9c, 0x23, 0x88, 0x83, 0x9b, 0x23, 0x89, 0x83, 0x9c, 0x23, 0x89, 0x83, - 0x9b, 0x23, 0x8a, 0x83, 0x9c, 0x23, 0x8a, 0x83, 0x9b, 0x23, 0x8b, 0x83, - 0x9c, 0x23, 0x8b, 0x83, 0x9b, 0x23, 0x8c, 0x83, 0x9c, 0x23, 0x8c, 0x83, - 0x9b, 0x23, 0x8d, 0x83, 0x9c, 0x23, 0x8d, 0x83, 0x9b, 0x23, 0x8e, 0x83, - 0x9c, 0x23, 0x8e, 0x83, 0x9b, 0x23, 0x8e, 0x83, 0x9c, 0x23, 0x8f, 0x83, - 0x9b, 0x23, 0x8f, 0x83, 0x9c, 0x23, 0x90, 0x83, 0x9b, 0x23, 0x90, 0x83, - 0x9c, 0x23, 0x91, 0x83, 0x9b, 0x23, 0x91, 0x83, 0x9c, 0x23, 0x92, 0x83, - 0x9b, 0x23, 0x92, 0x83, 0x9c, 0x23, 0x93, 0x83, 0x9b, 0x23, 0x93, 0x83, - 0x9c, 0x23, 0x94, 0x83, 0x9b, 0x23, 0x94, 0x83, 0x9c, 0x23, 0x94, 0x83, - 0x9b, 0x23, 0x95, 0x83, 0x9c, 0x23, 0x95, 0x83, 0x9b, 0x23, 0x96, 0x83, - 0x9c, 0x23, 0x96, 0x83, 0x9b, 0x23, 0x97, 0x83, 0x9c, 0x23, 0x97, 0x83, - 0x9b, 0x23, 0x98, 0x83, 0x9c, 0x23, 0x98, 0x83, 0x9b, 0x23, 0x98, 0x83, - 0x9c, 0x23, 0x99, 0x83, 0x9b, 0x23, 0x99, 0x83, 0x9c, 0x23, 0x9a, 0x83, - 0x9b, 0x23, 0x9a, 0x83, 0x9c, 0x23, 0x9a, 0x83, 0x9b, 0x23, 0x9b, 0x83, - 0x9c, 0x23, 0x9b, 0x83, 0x9b, 0x23, 0x9c, 0x83, 0x9c, 0x23, 0x9c, 0x83, - 0x9c, 0x23, 0x9d, 0x83, 0x9d, 0x23, 0x9d, 0x83, 0x9c, 0x23, 0x9d, 0x83, - 0x9d, 0x23, 0x9e, 0x83, 0x9c, 0x23, 0x9e, 0x83, 0x9d, 0x23, 0x9f, 0x83, - 0x9c, 0x23, 0x9f, 0x83, 0x9d, 0x23, 0x9f, 0x83, 0x9c, 0x23, 0xa0, 0x83, - 0x9d, 0x23, 0xa0, 0x83, 0x9c, 0x23, 0xa1, 0x83, 0x9d, 0x23, 0xa1, 0x83, - 0x9c, 0x23, 0xa1, 0x83, 0x9d, 0x23, 0xa2, 0x83, 0x9c, 0x23, 0xa2, 0x83, - 0x9d, 0x23, 0xa3, 0x84, 0xa0, 0x23, 0xa3, 0x84, 0xa1, 0x23, 0xa3, 0x84, - 0xa0, 0x23, 0xa4, 0x84, 0xa1, 0x23, 0xa4, 0x84, 0xa0, 0x23, 0xa5, 0x84, - 0xa1, 0x23, 0xa5, 0x84, 0xa0, 0x23, 0xa5, 0x84, 0xa1, 0x23, 0xa6, 0x84, - 0xa0, 0x23, 0xa6, 0x84, 0xa1, 0x23, 0xa6, 0x85, 0xa4, 0x23, 0xa7, 0x84, - 0xa1, 0x23, 0xa7, 0x85, 0xa4, 0x23, 0xa8, 0x85, 0xa4, 0x23, 0xa8, 0x85, - 0xa4, 0x23, 0xa8, 0x85, 0xa4, 0x23, 0xa9, 0x85, 0xa4, 0x23, 0xa9, 0x85, - 0xa4, 0x23, 0xaa, 0x85, 0xa4, 0x23, 0xaa, 0x86, 0xa8, 0x23, 0xaa, 0x85, - 0xa4, 0x23, 0xab, 0x86, 0xa8, 0x23, 0xab, 0x86, 0xa7, 0x23, 0xab, 0x86, - 0xa8, 0x23, 0xac, 0x86, 0xa7, 0x23, 0xac, 0x86, 0xa8, 0x23, 0xac, 0x86, - 0xa7, 0x23, 0xad, 0x86, 0xa8, 0x23, 0xad, 0x87, 0xab, 0x23, 0xae, 0x87, - 0xab, 0x23, 0xae, 0x87, 0xab, 0x23, 0xae, 0x87, 0xab, 0x23, 0xaf, 0x87, - 0xab, 0x23, 0xaf, 0x87, 0xab, 0x23, 0xaf, 0x87, 0xab, 0x23, 0xb0, 0x87, - 0xab, 0x23, 0xb0, 0x87, 0xab, 0x23, 0xb0, 0x87, 0xab, 0x23, 0xb1, 0x87, - 0xab, 0x23, 0xb1, 0x87, 0xab, 0x23, 0xb2, 0x88, 0xaf, 0x23, 0xb2, 0x88, - 0xae, 0x23, 0xb2, 0x88, 0xaf, 0x23, 0xb3, 0x88, 0xae, 0x23, 0xb3, 0x88, - 0xaf, 0x23, 0xb3, 0x88, 0xae, 0x23, 0xb4, 0x88, 0xaf, 0x23, 0xb4, 0x88, - 0xae, 0x23, 0xb4, 0x88, 0xaf, 0x23, 0xb5, 0x89, 0xb2, 0x23, 0xb5, 0x89, - 0xb2, 0x23, 0xb5, 0x89, 0xb2, 0x23, 0xb6, 0x89, 0xb2, 0x23, 0xb6, 0x89, - 0xb2, 0x23, 0xb6, 0x89, 0xb2, 0x23, 0xb7, 0x89, 0xb2, 0x23, 0xb7, 0x89, - 0xb2, 0x23, 0xb7, 0x89, 0xb2, 0x23, 0xb8, 0x89, 0xb2, 0x23, 0xb8, 0x8a, - 0xb5, 0x23, 0xb8, 0x89, 0xb2, 0x23, 0xb9, 0x8a, 0xb5, 0x23, 0xb9, 0x8a, - 0xb5, 0x23, 0xb9, 0x8a, 0xb5, 0x23, 0xba, 0x8a, 0xb5, 0x23, 0xba, 0x8a, - 0xb5, 0x23, 0xba, 0x8a, 0xb5, 0x23, 0xbb, 0x8a, 0xb5, 0x23, 0xbb, 0x8b, - 0xb8, 0x23, 0xbb, 0x8a, 0xb5, 0x23, 0xbc, 0x8b, 0xb8, 0x23, 0xbc, 0x8b, - 0xb8, 0x23, 0xbc, 0x8b, 0xb8, 0x23, 0xbd, 0x8b, 0xb8, 0x23, 0xbd, 0x8b, - 0xb8, 0x23, 0xbd, 0x8b, 0xb8, 0x23, 0xbe, 0x8b, 0xb8, 0x23, 0xbe, 0x8c, - 0xbb, 0x23, 0xbe, 0x8c, 0xbc, 0x23, 0xbf, 0x8c, 0xbb, 0x23, 0xbf, 0x8c, - 0xbc, 0x23, 0xbf, 0x8c, 0xbb, 0x23, 0xc0, 0x8c, 0xbc, 0x23, 0xc0, 0x8c, - 0xbb, 0x23, 0xc0, 0x8c, 0xbc, 0x23, 0xc1, 0x8c, 0xbb, 0x23, 0xc1, 0x8c, - 0xbc, 0x23, 0xc1, 0x8d, 0xbf, 0x23, 0xc1, 0x8c, 0xbc, 0x23, 0xc2, 0x8d, - 0xbf, 0x23, 0xc2, 0x8c, 0xbc, 0x23, 0xc2, 0x8d, 0xbf, 0x23, 0xc3, 0x8d, - 0xbe, 0x23, 0xc3, 0x8d, 0xbf, 0x23, 0xc3, 0x8d, 0xbe, 0x23, 0xc4, 0x8d, - 0xbf, 0x23, 0xc4, 0x8d, 0xbe, 0x23, 0xc4, 0x8d, 0xbf, 0x23, 0xc5, 0x8e, - 0xc1, 0x23, 0xc5, 0x8d, 0xbf, 0x23, 0xc5, 0x8e, 0xc1, 0x23, 0xc6, 0x8e, - 0xc1, 0x23, 0xc6, 0x8e, 0xc1, 0x23, 0xc6, 0x8e, 0xc1, 0x23, 0xc6, 0x8e, - 0xc1, 0x23, 0xc7, 0x8e, 0xc1, 0x23, 0xc7, 0x8e, 0xc1, 0x23, 0xc7, 0x8f, - 0xc4, 0x23, 0xc8, 0x8f, 0xc5, 0x23, 0xc8, 0x8f, 0xc4, 0x23, 0xc8, 0x8f, - 0xc5, 0x23, 0xc9, 0x8f, 0xc4, 0x23, 0xc9, 0x8f, 0xc5, 0x23, 0xc9, 0x8f, - 0xc4, 0x23, 0xc9, 0x8f, 0xc5, 0x23, 0xca, 0x8f, 0xc4, 0x23, 0xca, 0x8f, - 0xc5, 0x23, 0xca, 0x90, 0xc7, 0x23, 0xcb, 0x8f, 0xc5, 0x23, 0xcb, 0x90, - 0xc7, 0x23, 0xcb, 0x90, 0xc7, 0x23, 0xcc, 0x90, 0xc7, 0x23, 0xcc, 0x90, - 0xc7, 0x23, 0xcc, 0x90, 0xc7, 0x23, 0xcc, 0x90, 0xc7, 0x23, 0xcd, 0x90, - 0xc7, 0x23, 0xcd, 0x91, 0xca, 0x23, 0xcd, 0x90, 0xc7, 0x23, 0xce, 0x91, - 0xca, 0x23, 0xce, 0x90, 0xc7, 0x23, 0xce, 0x91, 0xca, 0x23, 0xce, 0x91, - 0xca, 0x23, 0xcf, 0x91, 0xca, 0x23, 0xcf, 0x91, 0xca, 0x23, 0xcf, 0x91, - 0xca, 0x23, 0xd0, 0x91, 0xca, 0x23, 0xd0, 0x91, 0xca, 0x23, 0xd0, 0x92, - 0xcd, 0x23, 0xd0, 0x92, 0xcd, 0x23, 0xd1, 0x92, 0xcd, 0x23, 0xd1, 0x92, - 0xcd, 0x23, 0xd1, 0x92, 0xcd, 0x23, 0xd2, 0x92, 0xcd, 0x23, 0xd2, 0x92, - 0xcd, 0x23, 0xd2, 0x92, 0xcd, 0x23, 0xd2, 0x92, 0xcd, 0x23, 0xd3, 0x92, - 0xcd, 0x23, 0xd3, 0x93, 0xd0, 0x23, 0xd3, 0x92, 0xcd, 0x23, 0xd4, 0x93, - 0xd0, 0x23, 0xd4, 0x93, 0xcf, 0x23, 0xd4, 0x93, 0xd0, 0x23, 0xd4, 0x93, - 0xcf, 0x23, 0xd5, 0x93, 0xd0, 0x23, 0xd5, 0x93, 0xcf, 0x23, 0xd5, 0x93, - 0xd0, 0x23, 0xd6, 0x94, 0xd2, 0x23, 0xd6, 0x94, 0xd2, 0x23, 0xd6, 0x94, - 0xd2, 0x23, 0xd6, 0x94, 0xd2, 0x23, 0xd7, 0x94, 0xd2, 0x23, 0xd7, 0x94, - 0xd2, 0x23, 0xd7, 0x94, 0xd2, 0x23, 0xd7, 0x94, 0xd2, 0x23, 0xd8, 0x94, - 0xd2, 0x23, 0xd8, 0x94, 0xd2, 0x23, 0xd8, 0x94, 0xd5, 0x23, 0xd9, 0x94, - 0xd2, 0x23, 0xd9, 0x94, 0xd5, 0x23, 0xd9, 0x94, 0xd2, 0x23, 0xd9, 0x94, - 0xd5, 0x23, 0xda, 0x94, 0xd5, 0x23, 0xda, 0x94, 0xd5, 0x23, 0xda, 0x94, - 0xd5, 0x23, 0xda, 0x94, 0xd5, 0x23, 0xdb, 0x95, 0xd7, 0x23, 0xdb, 0x94, - 0xd5, 0x23, 0xdb, 0x95, 0xd7, 0x23, 0xdb, 0x94, 0xd5, 0x23, 0xdc, 0x95, - 0xd7, 0x23, 0xdc, 0x95, 0xd7, 0x23, 0xdc, 0x95, 0xd7, 0x23, 0xdd, 0x95, - 0xd7, 0x23, 0xdd, 0x95, 0xd7, 0x23, 0xdd, 0x96, 0xda, 0x23, 0xdd, 0x96, - 0xda, 0x23, 0xde, 0x96, 0xda, 0x23, 0xde, 0x96, 0xda, 0x23, 0xde, 0x96, - 0xda, 0x23, 0xde, 0x96, 0xda, 0x23, 0xdf, 0x96, 0xda, 0x23, 0xdf, 0x96, - 0xda, 0x23, 0xdf, 0x96, 0xda, 0x23, 0xdf, 0x96, 0xda, 0x23, 0xe0, 0x96, - 0xda, 0x23, 0xe0, 0x96, 0xda, 0x23, 0xe0, 0x97, 0xdd, 0x23, 0xe1, 0x96, - 0xda, 0x23, 0xe1, 0x97, 0xdd, 0x23, 0xe1, 0x97, 0xdc, 0x23, 0xe1, 0x97, - 0xdd, 0x23, 0xe2, 0x97, 0xdc, 0x23, 0xe2, 0x97, 0xdd, 0x23, 0xe2, 0x97, - 0xdc, 0x23, 0xe2, 0x97, 0xdd, 0x23, 0xe3, 0x98, 0xdf, 0x23, 0xe3, 0x97, - 0xdd, 0x23, 0xe3, 0x98, 0xdf, 0x23, 0xe3, 0x97, 0xdd, 0x23, 0xe4, 0x98, - 0xdf, 0x23, 0xe4, 0x98, 0xdf, 0x23, 0xe4, 0x98, 0xdf, 0x23, 0xe4, 0x98, - 0xdf, 0x23, 0xe5, 0x98, 0xdf, 0x23, 0xe5, 0x99, 0xe1, 0x23, 0xe5, 0x99, - 0xe2, 0x23, 0xe5, 0x99, 0xe1, 0x23, 0xe6, 0x99, 0xe2, 0x23, 0xe6, 0x99, - 0xe1, 0x23, 0xe6, 0x99, 0xe2, 0x23, 0xe6, 0x99, 0xe1, 0x23, 0xe7, 0x99, - 0xe2, 0x23, 0xe7, 0x99, 0xe1, 0x23, 0xe7, 0x99, 0xe2, 0x23, 0xe7, 0x9a, - 0xe4, 0x23, 0xe8, 0x99, 0xe2, 0x23, 0xe8, 0x9a, 0xe4, 0x23, 0xe8, 0x99, - 0xe2, 0x23, 0xe8, 0x9a, 0xe4, 0x23, 0xe9, 0x9a, 0xe4, 0x23, 0xe9, 0x9a, - 0xe4, 0x23, 0xe9, 0x9a, 0xe4, 0x23, 0xe9, 0x9a, 0xe4, 0x23, 0xea, 0x9a, - 0xe4, 0x23, 0xea, 0x9a, 0xe4, 0x23, 0xea, 0x9a, 0xe6, 0x23, 0xea, 0x9a, - 0xe4, 0x23, 0xeb, 0x9a, 0xe6, 0x23, 0xeb, 0x9a, 0xe6, 0x23, 0xeb, 0x9a, - 0xe6, 0x23, 0xeb, 0x9a, 0xe6, 0x23, 0xec, 0x9a, 0xe6, 0x23, 0xec, 0x9a, - 0xe6, 0x23, 0xec, 0x9a, 0xe6, 0x23, 0xec, 0x9b, 0xe8, 0x23, 0xec, 0x9b, - 0xe9, 0x23, 0xed, 0x9b, 0xe8, 0x23, 0xed, 0x9b, 0xe9, 0x23, 0xed, 0x9b, - 0xe8, 0x23, 0xed, 0x9b, 0xe9, 0x23, 0xee, 0x9b, 0xe8, 0x23, 0xee, 0x9b, - 0xe9, 0x23, 0xee, 0x9b, 0xe8, 0x23, 0xee, 0x9b, 0xe9, 0x23, 0xef, 0x9c, - 0xeb, 0x23, 0xef, 0x9b, 0xe9, 0x23, 0xef, 0x9c, 0xeb, 0x23, 0xef, 0x9b, - 0xe9, 0x23, 0xf0, 0x9c, 0xeb, 0x23, 0xf0, 0x9c, 0xeb, 0x23, 0xf0, 0x9c, - 0xeb, 0x23, 0xf0, 0x9c, 0xeb, 0x23, 0xf1, 0x9c, 0xeb, 0x23, 0xf1, 0x9d, - 0xed, 0x23, 0xf1, 0x9d, 0xed, 0x23, 0xf1, 0x9d, 0xed, 0x23, 0xf2, 0x9d, - 0xed, 0x23, 0xf2, 0x9d, 0xed, 0x23, 0xf2, 0x9d, 0xed, 0x23, 0xf2, 0x9d, - 0xed, 0x23, 0xf2, 0x9d, 0xed, 0x23, 0xf3, 0x9d, 0xed, 0x23, 0xf3, 0x9d, - 0xed, 0x23, 0xf3, 0x9e, 0xef, 0x23, 0xf3, 0x9d, 0xed, 0x23, 0xf4, 0x9e, - 0xef, 0x23, 0xf4, 0x9d, 0xed, 0x23, 0xf4, 0x9e, 0xef, 0x23, 0xf4, 0x9e, - 0xef, 0x23, 0xf5, 0x9e, 0xef, 0x23, 0xf5, 0x9e, 0xef, 0x23, 0xf5, 0x9e, - 0xef, 0x23, 0xf5, 0x9f, 0xf2, 0x23, 0xf5, 0x9e, 0xef, 0x23, 0xf6, 0x9f, - 0xf2, 0x23, 0xf6, 0x9e, 0xef, 0x23, 0xf6, 0x9f, 0xf2, 0x23, 0xf6, 0x9e, - 0xef, 0x23, 0xf7, 0x9f, 0xf2, 0x23, 0xf7, 0x9f, 0xf1, 0x23, 0xf7, 0x9f, - 0xf2, 0x23, 0xf7, 0x9f, 0xf1, 0x23, 0xf8, 0x9f, 0xf2, 0x23, 0xf8, 0x9f, - 0xf4, 0x23, 0xf8, 0x9f, 0xf4, 0x23, 0xf8, 0x9f, 0xf4, 0x23, 0xf8, 0x9f, - 0xf4, 0x23, 0xf9, 0x9f, 0xf4, 0x23, 0xf9, 0x9f, 0xf4, 0x23, 0xf9, 0x9f, - 0xf4, 0x23, 0xf9, 0x9f, 0xf4, 0x23, 0xfa, 0x9f, 0xf4, 0x23, 0xfa, 0x9f, - 0xf4, 0x23, 0xfa, 0xa0, 0xf6, 0x23, 0xfa, 0x9f, 0xf4, 0x23, 0xfa, 0xa0, - 0xf6, 0x23, 0xfb, 0x9f, 0xf4, 0x23, 0xfb, 0xa0, 0xf6, 0x23, 0xfb, 0xa0, - 0xf6, 0x23, 0xfb, 0xa0, 0xf6, 0x23, 0xfc, 0xa0, 0xf6, 0x23, 0xfc, 0xa0, - 0xf6, 0x23, 0xfc, 0xa1, 0xf8, 0x23, 0xfc, 0xa0, 0xf6, 0x23, 0xfc, 0xa1, - 0xf8, 0x23, 0xfd, 0xa0, 0xf6, 0x23, 0xfd, 0xa1, 0xf8, 0x23, 0xfd, 0xa1, - 0xf8, 0x23, 0xfd, 0xa1, 0xf8, 0x23, 0xfe, 0xa1, 0xf8, 0x23, 0xfe, 0xa1, - 0xf8, 0x23, 0xfe, 0xa2, 0xfa, 0x23, 0xfe, 0xa2, 0xfa, 0x23, 0xfe, 0xa2, - 0xfa, 0x23, 0xff, 0xa2, 0xfa, 0x23, 0xff, 0xa2, 0xfa, 0x23, 0x03, 0x84, - 0x9b, 0x24, 0x0a, 0x84, 0x9b, 0x24, 0x0f, 0x84, 0x9b, 0x24, 0x14, 0x84, - 0x9b, 0x24, 0x17, 0x84, 0x9b, 0x24, 0x1b, 0x84, 0x9b, 0x24, 0x1e, 0x84, - 0x9b, 0x24, 0x20, 0x86, 0x9b, 0x24, 0x23, 0x84, 0x9b, 0x24, 0x25, 0x86, - 0x9b, 0x24, 0x27, 0x84, 0x9b, 0x24, 0x29, 0x86, 0x9b, 0x24, 0x2b, 0x84, - 0x9b, 0x24, 0x2d, 0x86, 0x9b, 0x24, 0x2f, 0x84, 0x9b, 0x24, 0x31, 0x86, - 0x9b, 0x24, 0x32, 0x84, 0x9b, 0x24, 0x34, 0x86, 0x9b, 0x24, 0x35, 0x84, - 0x9b, 0x24, 0x37, 0x86, 0x9b, 0x24, 0x38, 0x84, 0x9b, 0x24, 0x3a, 0x86, - 0x9b, 0x24, 0x3b, 0x84, 0x9b, 0x24, 0x3c, 0x86, 0x9b, 0x24, 0x3e, 0x84, - 0x9b, 0x24, 0x3f, 0x86, 0x9b, 0x24, 0x40, 0x84, 0x9b, 0x24, 0x42, 0x86, - 0x9b, 0x24, 0x43, 0x84, 0x9b, 0x24, 0x44, 0x86, 0x9b, 0x24, 0x45, 0x84, - 0x9b, 0x24, 0x46, 0x86, 0x9b, 0x24, 0x47, 0x84, 0x9b, 0x24, 0x48, 0x86, - 0x9b, 0x24, 0x49, 0x84, 0x9b, 0x24, 0x4a, 0x86, 0x9b, 0x24, 0x4b, 0x84, - 0x9b, 0x24, 0x4c, 0x86, 0x9b, 0x24, 0x4d, 0x84, 0x9b, 0x24, 0x4e, 0x86, - 0x9b, 0x24, 0x4f, 0x84, 0x9b, 0x24, 0x50, 0x86, 0x9b, 0x24, 0x51, 0x84, - 0x9b, 0x24, 0x52, 0x86, 0x9b, 0x24, 0x53, 0x84, 0x9b, 0x24, 0x54, 0x86, - 0x9b, 0x24, 0x55, 0x84, 0x9b, 0x24, 0x56, 0x86, 0x9b, 0x24, 0x57, 0x84, - 0x9b, 0x24, 0x58, 0x86, 0x9b, 0x24, 0x58, 0x84, 0x9b, 0x24, 0x59, 0x86, - 0x9b, 0x24, 0x5a, 0x84, 0x9b, 0x24, 0x5b, 0x86, 0x9b, 0x24, 0x5c, 0x84, - 0x9b, 0x24, 0x5d, 0x86, 0x9b, 0x24, 0x5d, 0x84, 0x9b, 0x24, 0x5e, 0x86, - 0x9b, 0x24, 0x5f, 0x84, 0x9b, 0x24, 0x60, 0x86, 0x9b, 0x24, 0x60, 0x84, - 0x9b, 0x24, 0x61, 0x86, 0x9b, 0x24, 0x62, 0x84, 0x9b, 0x24, 0x63, 0x86, - 0x9b, 0x24, 0x63, 0x84, 0x9b, 0x24, 0x64, 0x86, 0x9b, 0x24, 0x65, 0x84, - 0x9b, 0x24, 0x66, 0x86, 0x9b, 0x24, 0x66, 0x84, 0x9b, 0x24, 0x67, 0x86, - 0x9b, 0x24, 0x68, 0x84, 0x9b, 0x24, 0x68, 0x86, 0x9b, 0x24, 0x69, 0x84, - 0x9b, 0x24, 0x6a, 0x84, 0x9c, 0x24, 0x6a, 0x84, 0x9b, 0x24, 0x6b, 0x84, - 0x9c, 0x24, 0x6c, 0x84, 0x9b, 0x24, 0x6c, 0x84, 0x9c, 0x24, 0x6d, 0x84, - 0x9b, 0x24, 0x6e, 0x84, 0x9c, 0x24, 0x6e, 0x84, 0x9b, 0x24, 0x6f, 0x84, - 0x9c, 0x24, 0x70, 0x84, 0x9b, 0x24, 0x70, 0x84, 0x9c, 0x24, 0x71, 0x84, - 0x9b, 0x24, 0x72, 0x84, 0x9c, 0x24, 0x72, 0x84, 0x9b, 0x24, 0x73, 0x84, - 0x9c, 0x24, 0x73, 0x84, 0x9b, 0x24, 0x74, 0x84, 0x9c, 0x24, 0x75, 0x84, - 0x9b, 0x24, 0x75, 0x84, 0x9c, 0x24, 0x76, 0x84, 0x9b, 0x24, 0x76, 0x84, - 0x9c, 0x24, 0x77, 0x84, 0x9b, 0x24, 0x78, 0x84, 0x9c, 0x24, 0x78, 0x84, - 0x9b, 0x24, 0x79, 0x84, 0x9c, 0x24, 0x79, 0x84, 0x9b, 0x24, 0x7a, 0x84, - 0x9c, 0x24, 0x7a, 0x84, 0x9b, 0x24, 0x7b, 0x84, 0x9c, 0x24, 0x7c, 0x84, - 0x9b, 0x24, 0x7c, 0x84, 0x9c, 0x24, 0x7d, 0x84, 0x9b, 0x24, 0x7d, 0x84, - 0x9c, 0x24, 0x7e, 0x84, 0x9b, 0x24, 0x7e, 0x84, 0x9c, 0x24, 0x7f, 0x84, - 0x9b, 0x24, 0x7f, 0x84, 0x9c, 0x24, 0x80, 0x84, 0x9b, 0x24, 0x81, 0x84, - 0x9c, 0x24, 0x81, 0x84, 0x9b, 0x24, 0x82, 0x84, 0x9c, 0x24, 0x82, 0x84, - 0x9b, 0x24, 0x83, 0x84, 0x9c, 0x24, 0x83, 0x84, 0x9b, 0x24, 0x84, 0x84, - 0x9c, 0x24, 0x84, 0x84, 0x9b, 0x24, 0x85, 0x84, 0x9c, 0x24, 0x85, 0x84, - 0x9b, 0x24, 0x86, 0x84, 0x9c, 0x24, 0x86, 0x84, 0x9b, 0x24, 0x87, 0x84, - 0x9c, 0x24, 0x87, 0x84, 0x9b, 0x24, 0x88, 0x84, 0x9c, 0x24, 0x88, 0x84, - 0x9b, 0x24, 0x89, 0x84, 0x9c, 0x24, 0x89, 0x84, 0x9b, 0x24, 0x8a, 0x84, - 0x9c, 0x24, 0x8a, 0x84, 0x9b, 0x24, 0x8b, 0x84, 0x9c, 0x24, 0x8b, 0x84, - 0x9b, 0x24, 0x8c, 0x84, 0x9c, 0x24, 0x8c, 0x84, 0x9b, 0x24, 0x8d, 0x84, - 0x9c, 0x24, 0x8d, 0x84, 0x9b, 0x24, 0x8e, 0x84, 0x9c, 0x24, 0x8e, 0x84, - 0x9b, 0x24, 0x8e, 0x84, 0x9c, 0x24, 0x8f, 0x84, 0x9b, 0x24, 0x8f, 0x84, - 0x9c, 0x24, 0x90, 0x84, 0x9b, 0x24, 0x90, 0x84, 0x9c, 0x24, 0x91, 0x84, - 0x9b, 0x24, 0x91, 0x84, 0x9c, 0x24, 0x92, 0x84, 0x9b, 0x24, 0x92, 0x84, - 0x9c, 0x24, 0x93, 0x84, 0x9b, 0x24, 0x93, 0x84, 0x9c, 0x24, 0x94, 0x84, - 0x9b, 0x24, 0x94, 0x84, 0x9c, 0x24, 0x94, 0x84, 0x9b, 0x24, 0x95, 0x84, - 0x9c, 0x24, 0x95, 0x84, 0x9b, 0x24, 0x96, 0x84, 0x9c, 0x24, 0x96, 0x84, - 0x9b, 0x24, 0x97, 0x84, 0x9c, 0x24, 0x97, 0x84, 0x9b, 0x24, 0x98, 0x84, - 0x9c, 0x24, 0x98, 0x84, 0x9b, 0x24, 0x98, 0x84, 0x9c, 0x24, 0x99, 0x84, - 0x9b, 0x24, 0x99, 0x84, 0x9c, 0x24, 0x9a, 0x84, 0x9b, 0x24, 0x9a, 0x84, - 0x9c, 0x24, 0x9a, 0x84, 0x9b, 0x24, 0x9b, 0x84, 0x9c, 0x24, 0x9b, 0x84, - 0x9b, 0x24, 0x9c, 0x84, 0x9c, 0x24, 0x9c, 0x84, 0x9c, 0x24, 0x9d, 0x84, - 0x9d, 0x24, 0x9d, 0x84, 0x9d, 0x24, 0x9d, 0x84, 0x9d, 0x24, 0x9e, 0x84, - 0x9e, 0x24, 0x9e, 0x84, 0x9e, 0x24, 0x9f, 0x84, 0x9f, 0x24, 0x9f, 0x84, - 0x9e, 0x24, 0x9f, 0x84, 0x9f, 0x24, 0xa0, 0x84, 0x9e, 0x24, 0xa0, 0x84, - 0x9f, 0x24, 0xa1, 0x84, 0x9e, 0x24, 0xa1, 0x84, 0x9f, 0x24, 0xa1, 0x84, - 0x9e, 0x24, 0xa2, 0x84, 0x9f, 0x24, 0xa2, 0x84, 0x9e, 0x24, 0xa3, 0x84, - 0x9f, 0x24, 0xa3, 0x84, 0x9e, 0x24, 0xa3, 0x84, 0x9f, 0x24, 0xa4, 0x84, - 0x9e, 0x24, 0xa4, 0x84, 0x9f, 0x24, 0xa5, 0x85, 0xa2, 0x24, 0xa5, 0x85, - 0xa2, 0x24, 0xa5, 0x85, 0xa2, 0x24, 0xa6, 0x85, 0xa2, 0x24, 0xa6, 0x85, - 0xa2, 0x24, 0xa6, 0x85, 0xa2, 0x24, 0xa7, 0x85, 0xa2, 0x24, 0xa7, 0x85, - 0xa2, 0x24, 0xa8, 0x85, 0xa2, 0x24, 0xa8, 0x86, 0xa6, 0x24, 0xa8, 0x86, - 0xa6, 0x24, 0xa9, 0x86, 0xa6, 0x24, 0xa9, 0x86, 0xa6, 0x24, 0xaa, 0x86, - 0xa6, 0x24, 0xaa, 0x86, 0xa6, 0x24, 0xaa, 0x86, 0xa6, 0x24, 0xab, 0x86, - 0xa6, 0x24, 0xab, 0x86, 0xa6, 0x24, 0xab, 0x86, 0xa6, 0x24, 0xac, 0x87, - 0xaa, 0x24, 0xac, 0x86, 0xa6, 0x24, 0xac, 0x87, 0xaa, 0x24, 0xad, 0x87, - 0xa9, 0x24, 0xad, 0x87, 0xaa, 0x24, 0xae, 0x87, 0xa9, 0x24, 0xae, 0x87, - 0xaa, 0x24, 0xae, 0x87, 0xa9, 0x24, 0xaf, 0x87, 0xaa, 0x24, 0xaf, 0x88, - 0xad, 0x24, 0xaf, 0x88, 0xad, 0x24, 0xb0, 0x88, 0xad, 0x24, 0xb0, 0x88, - 0xad, 0x24, 0xb0, 0x88, 0xad, 0x24, 0xb1, 0x88, 0xad, 0x24, 0xb1, 0x88, - 0xad, 0x24, 0xb2, 0x88, 0xad, 0x24, 0xb2, 0x88, 0xad, 0x24, 0xb2, 0x88, - 0xad, 0x24, 0xb3, 0x88, 0xad, 0x24, 0xb3, 0x88, 0xad, 0x24, 0xb3, 0x89, - 0xb0, 0x24, 0xb4, 0x89, 0xb0, 0x24, 0xb4, 0x89, 0xb0, 0x24, 0xb4, 0x89, - 0xb0, 0x24, 0xb5, 0x89, 0xb0, 0x24, 0xb5, 0x89, 0xb2, 0x24, 0xb5, 0x89, - 0xb0, 0x24, 0xb6, 0x89, 0xb2, 0x24, 0xb6, 0x89, 0xb0, 0x24, 0xb6, 0x89, - 0xb2, 0x24, 0xb7, 0x89, 0xb2, 0x24, 0xb7, 0x89, 0xb2, 0x24, 0xb7, 0x89, - 0xb2, 0x24, 0xb8, 0x89, 0xb2, 0x24, 0xb8, 0x8a, 0xb3, 0x24, 0xb8, 0x8a, - 0xb4, 0x24, 0xb9, 0x8a, 0xb3, 0x24, 0xb9, 0x8a, 0xb4, 0x24, 0xb9, 0x8b, - 0xb7, 0x24, 0xba, 0x8b, 0xb7, 0x24, 0xba, 0x8b, 0xb7, 0x24, 0xba, 0x8b, - 0xb7, 0x24, 0xbb, 0x8b, 0xb7, 0x24, 0xbb, 0x8b, 0xb7, 0x24, 0xbb, 0x8b, - 0xb7, 0x24, 0xbc, 0x8b, 0xb7, 0x24, 0xbc, 0x8b, 0xb7, 0x24, 0xbc, 0x8b, - 0xb7, 0x24, 0xbd, 0x8c, 0xba, 0x24, 0xbd, 0x8b, 0xb7, 0x24, 0xbd, 0x8c, - 0xba, 0x24, 0xbe, 0x8c, 0xba, 0x24, 0xbe, 0x8c, 0xba, 0x24, 0xbe, 0x8c, - 0xba, 0x24, 0xbf, 0x8c, 0xba, 0x24, 0xbf, 0x8c, 0xba, 0x24, 0xbf, 0x8c, - 0xba, 0x24, 0xc0, 0x8d, 0xbd, 0x24, 0xc0, 0x8c, 0xba, 0x24, 0xc0, 0x8d, - 0xbd, 0x24, 0xc1, 0x8d, 0xbd, 0x24, 0xc1, 0x8d, 0xbd, 0x24, 0xc1, 0x8d, - 0xbd, 0x24, 0xc1, 0x8d, 0xbd, 0x24, 0xc2, 0x8d, 0xbd, 0x24, 0xc2, 0x8d, - 0xbd, 0x24, 0xc2, 0x8e, 0xc0, 0x24, 0xc3, 0x8e, 0xc0, 0x24, 0xc3, 0x8e, - 0xc0, 0x24, 0xc3, 0x8e, 0xc0, 0x24, 0xc4, 0x8e, 0xc0, 0x24, 0xc4, 0x8e, - 0xc0, 0x24, 0xc4, 0x8e, 0xc0, 0x24, 0xc5, 0x8e, 0xc0, 0x24, 0xc5, 0x8e, - 0xc0, 0x24, 0xc5, 0x8e, 0xc0, 0x24, 0xc6, 0x8e, 0xc0, 0x24, 0xc6, 0x8e, - 0xc0, 0x24, 0xc6, 0x8e, 0xc3, 0x24, 0xc6, 0x8e, 0xc0, 0x24, 0xc7, 0x8e, - 0xc3, 0x24, 0xc7, 0x8e, 0xc3, 0x24, 0xc7, 0x8e, 0xc3, 0x24, 0xc8, 0x8e, - 0xc3, 0x24, 0xc8, 0x8e, 0xc3, 0x24, 0xc8, 0x8e, 0xc3, 0x24, 0xc9, 0x8e, - 0xc3, 0x24, 0xc9, 0x8f, 0xc6, 0x24, 0xc9, 0x8e, 0xc3, 0x24, 0xc9, 0x8f, - 0xc6, 0x24, 0xca, 0x8f, 0xc6, 0x24, 0xca, 0x8f, 0xc6, 0x24, 0xca, 0x8f, - 0xc6, 0x24, 0xcb, 0x8f, 0xc6, 0x24, 0xcb, 0x8f, 0xc6, 0x24, 0xcb, 0x8f, - 0xc6, 0x24, 0xcc, 0x90, 0xc9, 0x24, 0xcc, 0x90, 0xc9, 0x24, 0xcc, 0x90, - 0xc9, 0x24, 0xcc, 0x90, 0xc9, 0x24, 0xcd, 0x90, 0xc9, 0x24, 0xcd, 0x90, - 0xc9, 0x24, 0xcd, 0x90, 0xc9, 0x24, 0xce, 0x90, 0xc9, 0x24, 0xce, 0x90, - 0xc9, 0x24, 0xce, 0x90, 0xc9, 0x24, 0xce, 0x91, 0xcc, 0x24, 0xcf, 0x90, - 0xc9, 0x24, 0xcf, 0x91, 0xcc, 0x24, 0xcf, 0x90, 0xc9, 0x24, 0xd0, 0x91, - 0xcc, 0x24, 0xd0, 0x91, 0xcb, 0x24, 0xd0, 0x91, 0xcc, 0x24, 0xd0, 0x91, - 0xcb, 0x24, 0xd1, 0x91, 0xcc, 0x24, 0xd1, 0x91, 0xcb, 0x24, 0xd1, 0x91, - 0xcc, 0x24, 0xd2, 0x92, 0xce, 0x24, 0xd2, 0x92, 0xce, 0x24, 0xd2, 0x92, - 0xce, 0x24, 0xd2, 0x92, 0xce, 0x24, 0xd3, 0x92, 0xce, 0x24, 0xd3, 0x92, - 0xce, 0x24, 0xd3, 0x92, 0xce, 0x24, 0xd4, 0x92, 0xce, 0x24, 0xd4, 0x92, - 0xce, 0x24, 0xd4, 0x92, 0xce, 0x24, 0xd4, 0x93, 0xd1, 0x24, 0xd5, 0x92, - 0xce, 0x24, 0xd5, 0x93, 0xd1, 0x24, 0xd5, 0x93, 0xd1, 0x24, 0xd6, 0x93, - 0xd1, 0x24, 0xd6, 0x93, 0xd1, 0x24, 0xd6, 0x93, 0xd1, 0x24, 0xd6, 0x93, - 0xd1, 0x24, 0xd7, 0x93, 0xd1, 0x24, 0xd7, 0x94, 0xd4, 0x24, 0xd7, 0x93, - 0xd1, 0x24, 0xd7, 0x94, 0xd4, 0x24, 0xd8, 0x94, 0xd3, 0x24, 0xd8, 0x94, - 0xd4, 0x24, 0xd8, 0x94, 0xd3, 0x24, 0xd9, 0x94, 0xd4, 0x24, 0xd9, 0x94, - 0xd3, 0x24, 0xd9, 0x94, 0xd4, 0x24, 0xd9, 0x95, 0xd6, 0x24, 0xda, 0x95, - 0xd6, 0x24, 0xda, 0x95, 0xd6, 0x24, 0xda, 0x95, 0xd6, 0x24, 0xda, 0x95, - 0xd6, 0x24, 0xdb, 0x95, 0xd6, 0x24, 0xdb, 0x95, 0xd6, 0x24, 0xdb, 0x95, - 0xd6, 0x24, 0xdb, 0x95, 0xd6, 0x24, 0xdc, 0x95, 0xd6, 0x24, 0xdc, 0x96, - 0xd9, 0x24, 0xdc, 0x95, 0xd6, 0x24, 0xdd, 0x96, 0xd9, 0x24, 0xdd, 0x95, - 0xd6, 0x24, 0xdd, 0x96, 0xd9, 0x24, 0xdd, 0x96, 0xd9, 0x24, 0xde, 0x96, - 0xd9, 0x24, 0xde, 0x96, 0xd9, 0x24, 0xde, 0x96, 0xd9, 0x24, 0xde, 0x97, - 0xdb, 0x24, 0xdf, 0x96, 0xd9, 0x24, 0xdf, 0x97, 0xdb, 0x24, 0xdf, 0x96, - 0xd9, 0x24, 0xdf, 0x97, 0xdb, 0x24, 0xe0, 0x97, 0xdb, 0x24, 0xe0, 0x97, - 0xdb, 0x24, 0xe0, 0x97, 0xdb, 0x24, 0xe1, 0x97, 0xdb, 0x24, 0xe1, 0x97, - 0xdb, 0x24, 0xe1, 0x97, 0xdb, 0x24, 0xe1, 0x98, 0xde, 0x24, 0xe2, 0x98, - 0xde, 0x24, 0xe2, 0x98, 0xde, 0x24, 0xe2, 0x98, 0xde, 0x24, 0xe2, 0x98, - 0xde, 0x24, 0xe3, 0x98, 0xde, 0x24, 0xe3, 0x98, 0xde, 0x24, 0xe3, 0x98, - 0xde, 0x24, 0xe3, 0x98, 0xde, 0x24, 0xe4, 0x98, 0xde, 0x24, 0xe4, 0x98, - 0xe0, 0x24, 0xe4, 0x98, 0xde, 0x24, 0xe4, 0x98, 0xe0, 0x24, 0xe5, 0x98, - 0xde, 0x24, 0xe5, 0x98, 0xe0, 0x24, 0xe5, 0x98, 0xe0, 0x24, 0xe5, 0x98, - 0xe0, 0x24, 0xe6, 0x98, 0xe0, 0x24, 0xe6, 0x98, 0xe0, 0x24, 0xe6, 0x99, - 0xe3, 0x24, 0xe6, 0x98, 0xe0, 0x24, 0xe7, 0x99, 0xe3, 0x24, 0xe7, 0x98, - 0xe0, 0x24, 0xe7, 0x99, 0xe3, 0x24, 0xe7, 0x99, 0xe2, 0x24, 0xe8, 0x99, - 0xe3, 0x24, 0xe8, 0x99, 0xe2, 0x24, 0xe8, 0x99, 0xe3, 0x24, 0xe8, 0x9a, - 0xe5, 0x24, 0xe9, 0x9a, 0xe5, 0x24, 0xe9, 0x9a, 0xe5, 0x24, 0xe9, 0x9a, - 0xe5, 0x24, 0xe9, 0x9a, 0xe5, 0x24, 0xea, 0x9a, 0xe5, 0x24, 0xea, 0x9a, - 0xe5, 0x24, 0xea, 0x9a, 0xe5, 0x24, 0xea, 0x9a, 0xe5, 0x24, 0xeb, 0x9a, - 0xe5, 0x24, 0xeb, 0x9a, 0xe5, 0x24, 0xeb, 0x9a, 0xe5, 0x24, 0xeb, 0x9b, - 0xe7, 0x24, 0xec, 0x9a, 0xe5, 0x24, 0xec, 0x9b, 0xe7, 0x24, 0xec, 0x9b, - 0xe7, 0x24, 0xec, 0x9b, 0xe7, 0x24, 0xec, 0x9b, 0xe7, 0x24, 0xed, 0x9b, - 0xe7, 0x24, 0xed, 0x9b, 0xe7, 0x24, 0xed, 0x9b, 0xe7, 0x24, 0xed, 0x9c, - 0xea, 0x24, 0xee, 0x9c, 0xea, 0x24, 0xee, 0x9c, 0xea, 0x24, 0xee, 0x9c, - 0xea, 0x24, 0xee, 0x9c, 0xea, 0x24, 0xef, 0x9c, 0xea, 0x24, 0xef, 0x9c, - 0xea, 0x24, 0xef, 0x9c, 0xea, 0x24, 0xef, 0x9c, 0xea, 0x24, 0xf0, 0x9c, - 0xea, 0x24, 0xf0, 0x9d, 0xec, 0x24, 0xf0, 0x9c, 0xea, 0x24, 0xf0, 0x9d, - 0xec, 0x24, 0xf1, 0x9c, 0xea, 0x24, 0xf1, 0x9d, 0xec, 0x24, 0xf1, 0x9d, - 0xec, 0x24, 0xf1, 0x9d, 0xec, 0x24, 0xf2, 0x9d, 0xec, 0x24, 0xf2, 0x9d, - 0xec, 0x24, 0xf2, 0x9d, 0xee, 0x24, 0xf2, 0x9d, 0xec, 0x24, 0xf2, 0x9d, - 0xee, 0x24, 0xf3, 0x9d, 0xec, 0x24, 0xf3, 0x9d, 0xee, 0x24, 0xf3, 0x9d, - 0xee, 0x24, 0xf3, 0x9d, 0xee, 0x24, 0xf4, 0x9d, 0xee, 0x24, 0xf4, 0x9d, - 0xee, 0x24, 0xf4, 0x9e, 0xf0, 0x24, 0xf4, 0x9e, 0xf1, 0x24, 0xf5, 0x9e, - 0xf0, 0x24, 0xf5, 0x9e, 0xf1, 0x24, 0xf5, 0x9e, 0xf0, 0x24, 0xf5, 0x9e, - 0xf1, 0x24, 0xf5, 0x9e, 0xf0, 0x24, 0xf6, 0x9e, 0xf1, 0x24, 0xf6, 0x9e, - 0xf0, 0x24, 0xf6, 0x9e, 0xf1, 0x24, 0xf6, 0x9f, 0xf3, 0x24, 0xf7, 0x9e, - 0xf1, 0x24, 0xf7, 0x9f, 0xf3, 0x24, 0xf7, 0x9e, 0xf1, 0x24, 0xf7, 0x9f, - 0xf3, 0x24, 0xf8, 0x9e, 0xf1, 0x24, 0xf8, 0x9f, 0xf3, 0x24, 0xf8, 0x9f, - 0xf2, 0x24, 0xf8, 0x9f, 0xf3, 0x24, 0xf8, 0x9f, 0xf2, 0x24, 0xf9, 0x9f, - 0xf3, 0x24, 0xf9, 0xa0, 0xf5, 0x24, 0xf9, 0x9f, 0xf3, 0x24, 0xf9, 0xa0, - 0xf5, 0x24, 0xfa, 0x9f, 0xf3, 0x24, 0xfa, 0xa0, 0xf5, 0x24, 0xfa, 0xa0, - 0xf5, 0x24, 0xfa, 0xa0, 0xf5, 0x24, 0xfa, 0xa0, 0xf5, 0x24, 0xfb, 0xa0, - 0xf5, 0x24, 0xfb, 0xa1, 0xf7, 0x24, 0xfb, 0xa1, 0xf7, 0x24, 0xfb, 0xa1, - 0xf7, 0x24, 0xfc, 0xa1, 0xf7, 0x24, 0xfc, 0xa1, 0xf7, 0x24, 0xfc, 0xa1, - 0xf7, 0x24, 0xfc, 0xa1, 0xf7, 0x24, 0xfc, 0xa1, 0xf7, 0x24, 0xfd, 0xa1, - 0xf7, 0x24, 0xfd, 0xa1, 0xf7, 0x24, 0xfd, 0xa1, 0xf9, 0x24, 0xfd, 0xa1, - 0xf7, 0x24, 0xfe, 0xa1, 0xf9, 0x24, 0xfe, 0xa1, 0xf7, 0x24, 0xfe, 0xa1, - 0xf9, 0x24, 0xfe, 0xa1, 0xf9, 0x24, 0xfe, 0xa1, 0xf9, 0x24, 0xff, 0xa1, - 0xf9, 0x24, 0xff, 0xa1, 0xf9, 0x24, 0x03, 0x83, 0x9b, 0x24, 0x0a, 0x83, - 0x9b, 0x24, 0x0f, 0x83, 0x9b, 0x24, 0x14, 0x83, 0x9b, 0x24, 0x17, 0x83, - 0x9b, 0x24, 0x1b, 0x83, 0x9b, 0x24, 0x1e, 0x83, 0x9b, 0x24, 0x20, 0x86, - 0x9b, 0x24, 0x23, 0x83, 0x9b, 0x24, 0x25, 0x86, 0x9b, 0x24, 0x27, 0x83, - 0x9b, 0x24, 0x29, 0x86, 0x9b, 0x24, 0x2b, 0x83, 0x9b, 0x24, 0x2d, 0x86, - 0x9b, 0x24, 0x2f, 0x83, 0x9b, 0x24, 0x31, 0x86, 0x9b, 0x24, 0x32, 0x83, - 0x9b, 0x24, 0x34, 0x86, 0x9b, 0x24, 0x35, 0x83, 0x9b, 0x24, 0x37, 0x86, - 0x9b, 0x24, 0x38, 0x83, 0x9b, 0x24, 0x3a, 0x86, 0x9b, 0x24, 0x3b, 0x83, - 0x9b, 0x24, 0x3c, 0x86, 0x9b, 0x24, 0x3e, 0x83, 0x9b, 0x24, 0x3f, 0x86, - 0x9b, 0x24, 0x40, 0x83, 0x9b, 0x24, 0x42, 0x86, 0x9b, 0x24, 0x43, 0x83, - 0x9b, 0x24, 0x44, 0x83, 0x9c, 0x24, 0x45, 0x83, 0x9b, 0x24, 0x46, 0x83, - 0x9c, 0x24, 0x47, 0x83, 0x9b, 0x24, 0x48, 0x83, 0x9c, 0x24, 0x49, 0x83, - 0x9b, 0x24, 0x4a, 0x83, 0x9c, 0x24, 0x4b, 0x83, 0x9b, 0x24, 0x4c, 0x83, - 0x9c, 0x24, 0x4d, 0x83, 0x9b, 0x24, 0x4e, 0x83, 0x9c, 0x24, 0x4f, 0x83, - 0x9b, 0x24, 0x50, 0x83, 0x9c, 0x24, 0x51, 0x83, 0x9b, 0x24, 0x52, 0x83, - 0x9c, 0x24, 0x53, 0x83, 0x9b, 0x24, 0x54, 0x83, 0x9c, 0x24, 0x55, 0x83, - 0x9b, 0x24, 0x56, 0x83, 0x9c, 0x24, 0x57, 0x83, 0x9b, 0x24, 0x58, 0x83, - 0x9c, 0x24, 0x58, 0x83, 0x9b, 0x24, 0x59, 0x83, 0x9c, 0x24, 0x5a, 0x83, - 0x9b, 0x24, 0x5b, 0x83, 0x9c, 0x24, 0x5c, 0x83, 0x9b, 0x24, 0x5d, 0x83, - 0x9c, 0x24, 0x5d, 0x83, 0x9b, 0x24, 0x5e, 0x83, 0x9c, 0x24, 0x5f, 0x83, - 0x9b, 0x24, 0x60, 0x83, 0x9c, 0x24, 0x60, 0x83, 0x9b, 0x24, 0x61, 0x83, - 0x9c, 0x24, 0x62, 0x83, 0x9b, 0x24, 0x63, 0x83, 0x9c, 0x24, 0x63, 0x83, - 0x9b, 0x24, 0x64, 0x83, 0x9c, 0x24, 0x65, 0x83, 0x9b, 0x24, 0x66, 0x83, - 0x9c, 0x24, 0x66, 0x83, 0x9b, 0x24, 0x67, 0x83, 0x9c, 0x24, 0x68, 0x83, - 0x9b, 0x24, 0x68, 0x83, 0x9c, 0x24, 0x69, 0x83, 0x9b, 0x24, 0x6a, 0x83, - 0x9c, 0x24, 0x6a, 0x83, 0x9b, 0x24, 0x6b, 0x83, 0x9c, 0x24, 0x6c, 0x83, - 0x9b, 0x24, 0x6c, 0x83, 0x9c, 0x24, 0x6d, 0x83, 0x9b, 0x24, 0x6e, 0x83, - 0x9c, 0x24, 0x6e, 0x83, 0x9b, 0x24, 0x6f, 0x83, 0x9c, 0x24, 0x70, 0x83, - 0x9b, 0x24, 0x70, 0x83, 0x9c, 0x24, 0x71, 0x83, 0x9b, 0x24, 0x72, 0x83, - 0x9c, 0x24, 0x72, 0x83, 0x9b, 0x24, 0x73, 0x83, 0x9c, 0x24, 0x73, 0x83, - 0x9b, 0x24, 0x74, 0x83, 0x9c, 0x24, 0x75, 0x83, 0x9b, 0x24, 0x75, 0x83, - 0x9c, 0x24, 0x76, 0x83, 0x9b, 0x24, 0x76, 0x83, 0x9c, 0x24, 0x77, 0x83, - 0x9b, 0x24, 0x78, 0x83, 0x9c, 0x24, 0x78, 0x83, 0x9b, 0x24, 0x79, 0x83, - 0x9c, 0x24, 0x79, 0x83, 0x9b, 0x24, 0x7a, 0x83, 0x9c, 0x24, 0x7a, 0x83, - 0x9b, 0x24, 0x7b, 0x83, 0x9c, 0x24, 0x7c, 0x83, 0x9b, 0x24, 0x7c, 0x83, - 0x9c, 0x24, 0x7d, 0x83, 0x9b, 0x24, 0x7d, 0x83, 0x9c, 0x24, 0x7e, 0x83, - 0x9b, 0x24, 0x7e, 0x83, 0x9c, 0x24, 0x7f, 0x83, 0x9b, 0x24, 0x7f, 0x83, - 0x9c, 0x24, 0x80, 0x83, 0x9b, 0x24, 0x81, 0x83, 0x9c, 0x24, 0x81, 0x83, - 0x9b, 0x24, 0x82, 0x83, 0x9c, 0x24, 0x82, 0x83, 0x9b, 0x24, 0x83, 0x83, - 0x9c, 0x24, 0x83, 0x83, 0x9b, 0x24, 0x84, 0x83, 0x9c, 0x24, 0x84, 0x83, - 0x9b, 0x24, 0x85, 0x83, 0x9c, 0x24, 0x85, 0x83, 0x9b, 0x24, 0x86, 0x83, - 0x9c, 0x24, 0x86, 0x83, 0x9b, 0x24, 0x87, 0x83, 0x9c, 0x24, 0x87, 0x83, - 0x9b, 0x24, 0x88, 0x83, 0x9c, 0x24, 0x88, 0x83, 0x9b, 0x24, 0x89, 0x83, - 0x9c, 0x24, 0x89, 0x83, 0x9b, 0x24, 0x8a, 0x83, 0x9c, 0x24, 0x8a, 0x83, - 0x9b, 0x24, 0x8b, 0x83, 0x9c, 0x24, 0x8b, 0x83, 0x9b, 0x24, 0x8c, 0x83, - 0x9c, 0x24, 0x8c, 0x83, 0x9b, 0x24, 0x8d, 0x83, 0x9c, 0x24, 0x8d, 0x83, - 0x9b, 0x24, 0x8e, 0x83, 0x9c, 0x24, 0x8e, 0x83, 0x9b, 0x24, 0x8e, 0x83, - 0x9c, 0x24, 0x8f, 0x83, 0x9b, 0x24, 0x8f, 0x83, 0x9c, 0x24, 0x90, 0x83, - 0x9b, 0x24, 0x90, 0x83, 0x9c, 0x24, 0x91, 0x83, 0x9b, 0x24, 0x91, 0x83, - 0x9c, 0x24, 0x92, 0x83, 0x9b, 0x24, 0x92, 0x83, 0x9c, 0x24, 0x93, 0x83, - 0x9b, 0x24, 0x93, 0x83, 0x9c, 0x24, 0x94, 0x83, 0x9b, 0x24, 0x94, 0x83, - 0x9c, 0x24, 0x94, 0x83, 0x9b, 0x24, 0x95, 0x83, 0x9c, 0x24, 0x95, 0x83, - 0x9b, 0x24, 0x96, 0x83, 0x9c, 0x24, 0x96, 0x83, 0x9b, 0x24, 0x97, 0x83, - 0x9c, 0x24, 0x97, 0x83, 0x9b, 0x24, 0x98, 0x83, 0x9c, 0x24, 0x98, 0x83, - 0x9b, 0x24, 0x98, 0x83, 0x9c, 0x24, 0x99, 0x83, 0x9b, 0x24, 0x99, 0x83, - 0x9c, 0x24, 0x9a, 0x83, 0x9b, 0x24, 0x9a, 0x83, 0x9c, 0x24, 0x9a, 0x83, - 0x9b, 0x24, 0x9b, 0x83, 0x9c, 0x24, 0x9b, 0x83, 0x9b, 0x24, 0x9c, 0x83, - 0x9c, 0x24, 0x9c, 0x83, 0x9c, 0x24, 0x9d, 0x83, 0x9d, 0x24, 0x9d, 0x83, - 0x9c, 0x24, 0x9d, 0x83, 0x9d, 0x24, 0x9e, 0x83, 0x9c, 0x24, 0x9e, 0x83, - 0x9d, 0x24, 0x9f, 0x83, 0x9c, 0x24, 0x9f, 0x83, 0x9d, 0x24, 0x9f, 0x83, - 0x9c, 0x24, 0xa0, 0x83, 0x9d, 0x24, 0xa0, 0x83, 0x9c, 0x24, 0xa1, 0x83, - 0x9d, 0x24, 0xa1, 0x83, 0x9c, 0x24, 0xa1, 0x83, 0x9d, 0x24, 0xa2, 0x84, - 0xa0, 0x24, 0xa2, 0x84, 0xa1, 0x24, 0xa3, 0x84, 0xa0, 0x24, 0xa3, 0x84, - 0xa1, 0x24, 0xa3, 0x84, 0xa0, 0x24, 0xa4, 0x84, 0xa1, 0x24, 0xa4, 0x84, - 0xa0, 0x24, 0xa5, 0x84, 0xa1, 0x24, 0xa5, 0x84, 0xa0, 0x24, 0xa5, 0x84, - 0xa1, 0x24, 0xa6, 0x84, 0xa0, 0x24, 0xa6, 0x84, 0xa1, 0x24, 0xa6, 0x85, - 0xa4, 0x24, 0xa7, 0x85, 0xa4, 0x24, 0xa7, 0x85, 0xa4, 0x24, 0xa8, 0x85, - 0xa4, 0x24, 0xa8, 0x85, 0xa4, 0x24, 0xa8, 0x85, 0xa4, 0x24, 0xa9, 0x85, - 0xa4, 0x24, 0xa9, 0x85, 0xa4, 0x24, 0xaa, 0x85, 0xa4, 0x24, 0xaa, 0x86, - 0xa8, 0x24, 0xaa, 0x85, 0xa4, 0x24, 0xab, 0x86, 0xa8, 0x24, 0xab, 0x86, - 0xa7, 0x24, 0xab, 0x86, 0xa8, 0x24, 0xac, 0x86, 0xa7, 0x24, 0xac, 0x86, - 0xa8, 0x24, 0xac, 0x86, 0xa7, 0x24, 0xad, 0x86, 0xa8, 0x24, 0xad, 0x87, - 0xab, 0x24, 0xae, 0x87, 0xab, 0x24, 0xae, 0x87, 0xab, 0x24, 0xae, 0x87, - 0xab, 0x24, 0xaf, 0x87, 0xab, 0x24, 0xaf, 0x87, 0xab, 0x24, 0xaf, 0x87, - 0xab, 0x24, 0xb0, 0x87, 0xab, 0x24, 0xb0, 0x87, 0xab, 0x24, 0xb0, 0x87, - 0xab, 0x24, 0xb1, 0x88, 0xaf, 0x24, 0xb1, 0x87, 0xab, 0x24, 0xb2, 0x88, - 0xaf, 0x24, 0xb2, 0x88, 0xae, 0x24, 0xb2, 0x88, 0xaf, 0x24, 0xb3, 0x88, - 0xae, 0x24, 0xb3, 0x88, 0xaf, 0x24, 0xb3, 0x88, 0xae, 0x24, 0xb4, 0x88, - 0xaf, 0x24, 0xb4, 0x89, 0xb2, 0x24, 0xb4, 0x89, 0xb2, 0x24, 0xb5, 0x89, - 0xb2, 0x24, 0xb5, 0x89, 0xb2, 0x24, 0xb5, 0x89, 0xb2, 0x24, 0xb6, 0x89, - 0xb2, 0x24, 0xb6, 0x89, 0xb2, 0x24, 0xb6, 0x89, 0xb2, 0x24, 0xb7, 0x89, - 0xb2, 0x24, 0xb7, 0x89, 0xb2, 0x24, 0xb7, 0x89, 0xb2, 0x24, 0xb8, 0x89, - 0xb2, 0x24, 0xb8, 0x8a, 0xb5, 0x24, 0xb8, 0x89, 0xb2, 0x24, 0xb9, 0x8a, - 0xb5, 0x24, 0xb9, 0x8a, 0xb5, 0x24, 0xb9, 0x8a, 0xb5, 0x24, 0xba, 0x8a, - 0xb5, 0x24, 0xba, 0x8a, 0xb5, 0x24, 0xba, 0x8a, 0xb5, 0x24, 0xbb, 0x8a, - 0xb5, 0x24, 0xbb, 0x8b, 0xb8, 0x24, 0xbb, 0x8a, 0xb5, 0x24, 0xbc, 0x8b, - 0xb8, 0x24, 0xbc, 0x8b, 0xb8, 0x24, 0xbc, 0x8b, 0xb8, 0x24, 0xbd, 0x8b, - 0xb8, 0x24, 0xbd, 0x8b, 0xb8, 0x24, 0xbd, 0x8b, 0xb8, 0x24, 0xbe, 0x8b, - 0xb8, 0x24, 0xbe, 0x8c, 0xbb, 0x24, 0xbe, 0x8c, 0xbc, 0x24, 0xbf, 0x8c, - 0xbb, 0x24, 0xbf, 0x8c, 0xbc, 0x24, 0xbf, 0x8c, 0xbb, 0x24, 0xc0, 0x8c, - 0xbc, 0x24, 0xc0, 0x8c, 0xbb, 0x24, 0xc0, 0x8c, 0xbc, 0x24, 0xc1, 0x8c, - 0xbb, 0x24, 0xc1, 0x8c, 0xbc, 0x24, 0xc1, 0x8d, 0xbf, 0x24, 0xc1, 0x8c, - 0xbc, 0x24, 0xc2, 0x8d, 0xbf, 0x24, 0xc2, 0x8d, 0xbe, 0x24, 0xc2, 0x8d, - 0xbf, 0x24, 0xc3, 0x8d, 0xbe, 0x24, 0xc3, 0x8d, 0xbf, 0x24, 0xc3, 0x8d, - 0xbe, 0x24, 0xc4, 0x8d, 0xbf, 0x24, 0xc4, 0x8e, 0xc1, 0x24, 0xc4, 0x8d, - 0xbf, 0x24, 0xc5, 0x8e, 0xc1, 0x24, 0xc5, 0x8d, 0xbf, 0x24, 0xc5, 0x8e, - 0xc1, 0x24, 0xc6, 0x8e, 0xc1, 0x24, 0xc6, 0x8e, 0xc1, 0x24, 0xc6, 0x8e, - 0xc1, 0x24, 0xc6, 0x8e, 0xc1, 0x24, 0xc7, 0x8e, 0xc1, 0x24, 0xc7, 0x8e, - 0xc1, 0x24, 0xc7, 0x8f, 0xc4, 0x24, 0xc8, 0x8f, 0xc5, 0x24, 0xc8, 0x8f, - 0xc4, 0x24, 0xc8, 0x8f, 0xc5, 0x24, 0xc9, 0x8f, 0xc4, 0x24, 0xc9, 0x8f, - 0xc5, 0x24, 0xc9, 0x8f, 0xc4, 0x24, 0xc9, 0x8f, 0xc5, 0x24, 0xca, 0x8f, - 0xc4, 0x24, 0xca, 0x8f, 0xc5, 0x24, 0xca, 0x90, 0xc7, 0x24, 0xcb, 0x8f, - 0xc5, 0x24, 0xcb, 0x90, 0xc7, 0x24, 0xcb, 0x90, 0xc7, 0x24, 0xcc, 0x90, - 0xc7, 0x24, 0xcc, 0x90, 0xc7, 0x24, 0xcc, 0x90, 0xc7, 0x24, 0xcc, 0x90, - 0xc7, 0x24, 0xcd, 0x90, 0xc7, 0x24, 0xcd, 0x91, 0xca, 0x24, 0xcd, 0x90, - 0xc7, 0x24, 0xce, 0x91, 0xca, 0x24, 0xce, 0x91, 0xca, 0x24, 0xce, 0x91, - 0xca, 0x24, 0xce, 0x91, 0xca, 0x24, 0xcf, 0x91, 0xca, 0x24, 0xcf, 0x91, - 0xca, 0x24, 0xcf, 0x91, 0xca, 0x24, 0xd0, 0x92, 0xcd, 0x24, 0xd0, 0x92, - 0xcd, 0x24, 0xd0, 0x92, 0xcd, 0x24, 0xd0, 0x92, 0xcd, 0x24, 0xd1, 0x92, - 0xcd, 0x24, 0xd1, 0x92, 0xcd, 0x24, 0xd1, 0x92, 0xcd, 0x24, 0xd2, 0x92, - 0xcd, 0x24, 0xd2, 0x92, 0xcd, 0x24, 0xd2, 0x92, 0xcd, 0x24, 0xd2, 0x92, - 0xcd, 0x24, 0xd3, 0x92, 0xcd, 0x24, 0xd3, 0x93, 0xd0, 0x24, 0xd3, 0x92, - 0xcd, 0x24, 0xd4, 0x93, 0xd0, 0x24, 0xd4, 0x93, 0xcf, 0x24, 0xd4, 0x93, - 0xd0, 0x24, 0xd4, 0x93, 0xcf, 0x24, 0xd5, 0x93, 0xd0, 0x24, 0xd5, 0x93, - 0xcf, 0x24, 0xd5, 0x93, 0xd0, 0x24, 0xd6, 0x94, 0xd2, 0x24, 0xd6, 0x94, - 0xd2, 0x24, 0xd6, 0x94, 0xd2, 0x24, 0xd6, 0x94, 0xd2, 0x24, 0xd7, 0x94, - 0xd2, 0x24, 0xd7, 0x94, 0xd2, 0x24, 0xd7, 0x94, 0xd2, 0x24, 0xd7, 0x94, - 0xd2, 0x24, 0xd8, 0x94, 0xd2, 0x24, 0xd8, 0x94, 0xd2, 0x24, 0xd8, 0x94, - 0xd5, 0x24, 0xd9, 0x94, 0xd2, 0x24, 0xd9, 0x94, 0xd5, 0x24, 0xd9, 0x94, - 0xd5, 0x24, 0xd9, 0x94, 0xd5, 0x24, 0xda, 0x94, 0xd5, 0x24, 0xda, 0x94, - 0xd5, 0x24, 0xda, 0x94, 0xd5, 0x24, 0xda, 0x94, 0xd5, 0x24, 0xdb, 0x95, - 0xd7, 0x24, 0xdb, 0x94, 0xd5, 0x24, 0xdb, 0x95, 0xd7, 0x24, 0xdb, 0x94, - 0xd5, 0x24, 0xdc, 0x95, 0xd7, 0x24, 0xdc, 0x95, 0xd7, 0x24, 0xdc, 0x95, - 0xd7, 0x24, 0xdd, 0x95, 0xd7, 0x24, 0xdd, 0x95, 0xd7, 0x24, 0xdd, 0x96, - 0xda, 0x24, 0xdd, 0x96, 0xda, 0x24, 0xde, 0x96, 0xda, 0x24, 0xde, 0x96, - 0xda, 0x24, 0xde, 0x96, 0xda, 0x24, 0xde, 0x96, 0xda, 0x24, 0xdf, 0x96, - 0xda, 0x24, 0xdf, 0x96, 0xda, 0x24, 0xdf, 0x96, 0xda, 0x24, 0xdf, 0x96, - 0xda, 0x24, 0xe0, 0x97, 0xdd, 0x24, 0xe0, 0x96, 0xda, 0x24, 0xe0, 0x97, - 0xdd, 0x24, 0xe1, 0x96, 0xda, 0x24, 0xe1, 0x97, 0xdd, 0x24, 0xe1, 0x97, - 0xdc, 0x24, 0xe1, 0x97, 0xdd, 0x24, 0xe2, 0x97, 0xdc, 0x24, 0xe2, 0x97, - 0xdd, 0x24, 0xe2, 0x97, 0xdc, 0x24, 0xe2, 0x97, 0xdd, 0x24, 0xe3, 0x98, - 0xdf, 0x24, 0xe3, 0x97, 0xdd, 0x24, 0xe3, 0x98, 0xdf, 0x24, 0xe3, 0x98, - 0xdf, 0x24, 0xe4, 0x98, 0xdf, 0x24, 0xe4, 0x98, 0xdf, 0x24, 0xe4, 0x98, - 0xdf, 0x24, 0xe4, 0x98, 0xdf, 0x24, 0xe5, 0x98, 0xdf, 0x24, 0xe5, 0x99, - 0xe1, 0x24, 0xe5, 0x99, 0xe2, 0x24, 0xe5, 0x99, 0xe1, 0x24, 0xe6, 0x99, - 0xe2, 0x24, 0xe6, 0x99, 0xe1, 0x24, 0xe6, 0x99, 0xe2, 0x24, 0xe6, 0x99, - 0xe1, 0x24, 0xe7, 0x99, 0xe2, 0x24, 0xe7, 0x99, 0xe1, 0x24, 0xe7, 0x99, - 0xe2, 0x24, 0xe7, 0x9a, 0xe4, 0x24, 0xe8, 0x99, 0xe2, 0x24, 0xe8, 0x9a, - 0xe4, 0x24, 0xe8, 0x99, 0xe2, 0x24, 0xe8, 0x9a, 0xe4, 0x24, 0xe9, 0x9a, - 0xe4, 0x24, 0xe9, 0x9a, 0xe4, 0x24, 0xe9, 0x9a, 0xe4, 0x24, 0xe9, 0x9a, - 0xe4, 0x24, 0xea, 0x9a, 0xe6, 0x24, 0xea, 0x9a, 0xe4, 0x24, 0xea, 0x9a, - 0xe6, 0x24, 0xea, 0x9a, 0xe4, 0x24, 0xeb, 0x9a, 0xe6, 0x24, 0xeb, 0x9a, - 0xe6, 0x24, 0xeb, 0x9a, 0xe6, 0x24, 0xeb, 0x9a, 0xe6, 0x24, 0xec, 0x9a, - 0xe6, 0x24, 0xec, 0x9a, 0xe6, 0x24, 0xec, 0x9a, 0xe6, 0x24, 0xec, 0x9b, - 0xe8, 0x24, 0xec, 0x9b, 0xe9, 0x24, 0xed, 0x9b, 0xe8, 0x24, 0xed, 0x9b, - 0xe9, 0x24, 0xed, 0x9b, 0xe8, 0x24, 0xed, 0x9b, 0xe9, 0x24, 0xee, 0x9b, - 0xe8, 0x24, 0xee, 0x9b, 0xe9, 0x24, 0xee, 0x9b, 0xe8, 0x24, 0xee, 0x9b, - 0xe9, 0x24, 0xef, 0x9c, 0xeb, 0x24, 0xef, 0x9b, 0xe9, 0x24, 0xef, 0x9c, - 0xeb, 0x24, 0xef, 0x9b, 0xe9, 0x24, 0xf0, 0x9c, 0xeb, 0x24, 0xf0, 0x9c, - 0xeb, 0x24, 0xf0, 0x9c, 0xeb, 0x24, 0xf0, 0x9c, 0xeb, 0x24, 0xf1, 0x9c, - 0xeb, 0x24, 0xf1, 0x9d, 0xed, 0x24, 0xf1, 0x9d, 0xed, 0x24, 0xf1, 0x9d, - 0xed, 0x24, 0xf2, 0x9d, 0xed, 0x24, 0xf2, 0x9d, 0xed, 0x24, 0xf2, 0x9d, - 0xed, 0x24, 0xf2, 0x9d, 0xed, 0x24, 0xf2, 0x9d, 0xed, 0x24, 0xf3, 0x9d, - 0xed, 0x24, 0xf3, 0x9d, 0xed, 0x24, 0xf3, 0x9e, 0xef, 0x24, 0xf3, 0x9d, - 0xed, 0x24, 0xf4, 0x9e, 0xef, 0x24, 0xf4, 0x9d, 0xed, 0x24, 0xf4, 0x9e, - 0xef, 0x24, 0xf4, 0x9e, 0xef, 0x24, 0xf5, 0x9e, 0xef, 0x24, 0xf5, 0x9e, - 0xef, 0x24, 0xf5, 0x9e, 0xef, 0x24, 0xf5, 0x9f, 0xf2, 0x24, 0xf5, 0x9e, - 0xef, 0x24, 0xf6, 0x9f, 0xf2, 0x24, 0xf6, 0x9e, 0xef, 0x24, 0xf6, 0x9f, - 0xf2, 0x24, 0xf6, 0x9f, 0xf1, 0x24, 0xf7, 0x9f, 0xf2, 0x24, 0xf7, 0x9f, - 0xf1, 0x24, 0xf7, 0x9f, 0xf2, 0x24, 0xf7, 0x9f, 0xf4, 0x24, 0xf8, 0x9f, - 0xf4, 0x24, 0xf8, 0x9f, 0xf4, 0x24, 0xf8, 0x9f, 0xf4, 0x24, 0xf8, 0x9f, - 0xf4, 0x24, 0xf8, 0x9f, 0xf4, 0x24, 0xf9, 0x9f, 0xf4, 0x24, 0xf9, 0x9f, - 0xf4, 0x24, 0xf9, 0x9f, 0xf4, 0x24, 0xf9, 0x9f, 0xf4, 0x24, 0xfa, 0x9f, - 0xf4, 0x24, 0xfa, 0x9f, 0xf4, 0x24, 0xfa, 0xa0, 0xf6, 0x24, 0xfa, 0x9f, - 0xf4, 0x24, 0xfa, 0xa0, 0xf6, 0x24, 0xfb, 0x9f, 0xf4, 0x24, 0xfb, 0xa0, - 0xf6, 0x24, 0xfb, 0xa0, 0xf6, 0x24, 0xfb, 0xa0, 0xf6, 0x24, 0xfc, 0xa0, - 0xf6, 0x24, 0xfc, 0xa0, 0xf6, 0x24, 0xfc, 0xa1, 0xf8, 0x24, 0xfc, 0xa0, - 0xf6, 0x24, 0xfc, 0xa1, 0xf8, 0x24, 0xfd, 0xa0, 0xf6, 0x24, 0xfd, 0xa1, - 0xf8, 0x24, 0xfd, 0xa1, 0xf8, 0x24, 0xfd, 0xa1, 0xf8, 0x24, 0xfe, 0xa1, - 0xf8, 0x24, 0xfe, 0xa1, 0xf8, 0x24, 0xfe, 0xa2, 0xfa, 0x24, 0xfe, 0xa2, - 0xfa, 0x24, 0xfe, 0xa2, 0xfa, 0x24, 0xff, 0xa2, 0xfa, 0x24, 0xff, 0xa2, - 0xfa, 0x24, 0x03, 0x84, 0x9b, 0x25, 0x0a, 0x84, 0x9b, 0x25, 0x0f, 0x84, - 0x9b, 0x25, 0x14, 0x84, 0x9b, 0x25, 0x17, 0x84, 0x9b, 0x25, 0x1b, 0x84, - 0x9b, 0x25, 0x1e, 0x84, 0x9b, 0x25, 0x20, 0x86, 0x9b, 0x25, 0x23, 0x84, - 0x9b, 0x25, 0x25, 0x86, 0x9b, 0x25, 0x27, 0x84, 0x9b, 0x25, 0x29, 0x86, - 0x9b, 0x25, 0x2b, 0x84, 0x9b, 0x25, 0x2d, 0x86, 0x9b, 0x25, 0x2f, 0x84, - 0x9b, 0x25, 0x31, 0x86, 0x9b, 0x25, 0x32, 0x84, 0x9b, 0x25, 0x34, 0x86, - 0x9b, 0x25, 0x35, 0x84, 0x9b, 0x25, 0x37, 0x86, 0x9b, 0x25, 0x38, 0x84, - 0x9b, 0x25, 0x3a, 0x86, 0x9b, 0x25, 0x3b, 0x84, 0x9b, 0x25, 0x3c, 0x86, - 0x9b, 0x25, 0x3e, 0x84, 0x9b, 0x25, 0x3f, 0x86, 0x9b, 0x25, 0x40, 0x84, - 0x9b, 0x25, 0x42, 0x86, 0x9b, 0x25, 0x43, 0x84, 0x9b, 0x25, 0x44, 0x86, - 0x9b, 0x25, 0x45, 0x84, 0x9b, 0x25, 0x46, 0x86, 0x9b, 0x25, 0x47, 0x84, - 0x9b, 0x25, 0x48, 0x86, 0x9b, 0x25, 0x49, 0x84, 0x9b, 0x25, 0x4a, 0x86, - 0x9b, 0x25, 0x4b, 0x84, 0x9b, 0x25, 0x4c, 0x86, 0x9b, 0x25, 0x4d, 0x84, - 0x9b, 0x25, 0x4e, 0x86, 0x9b, 0x25, 0x4f, 0x84, 0x9b, 0x25, 0x50, 0x86, - 0x9b, 0x25, 0x51, 0x84, 0x9b, 0x25, 0x52, 0x86, 0x9b, 0x25, 0x53, 0x84, - 0x9b, 0x25, 0x54, 0x86, 0x9b, 0x25, 0x55, 0x84, 0x9b, 0x25, 0x56, 0x86, - 0x9b, 0x25, 0x57, 0x84, 0x9b, 0x25, 0x58, 0x86, 0x9b, 0x25, 0x58, 0x84, - 0x9b, 0x25, 0x59, 0x86, 0x9b, 0x25, 0x5a, 0x84, 0x9b, 0x25, 0x5b, 0x86, - 0x9b, 0x25, 0x5c, 0x84, 0x9b, 0x25, 0x5d, 0x86, 0x9b, 0x25, 0x5d, 0x84, - 0x9b, 0x25, 0x5e, 0x86, 0x9b, 0x25, 0x5f, 0x84, 0x9b, 0x25, 0x60, 0x86, - 0x9b, 0x25, 0x60, 0x84, 0x9b, 0x25, 0x61, 0x86, 0x9b, 0x25, 0x62, 0x84, - 0x9b, 0x25, 0x63, 0x86, 0x9b, 0x25, 0x63, 0x84, 0x9b, 0x25, 0x64, 0x86, - 0x9b, 0x25, 0x65, 0x84, 0x9b, 0x25, 0x66, 0x86, 0x9b, 0x25, 0x66, 0x84, - 0x9b, 0x25, 0x67, 0x86, 0x9b, 0x25, 0x68, 0x84, 0x9b, 0x25, 0x68, 0x86, - 0x9b, 0x25, 0x69, 0x84, 0x9b, 0x25, 0x6a, 0x86, 0x9b, 0x25, 0x6a, 0x84, - 0x9b, 0x25, 0x6b, 0x86, 0x9b, 0x25, 0x6c, 0x84, 0x9b, 0x25, 0x6c, 0x84, - 0x9c, 0x25, 0x6d, 0x84, 0x9b, 0x25, 0x6e, 0x84, 0x9c, 0x25, 0x6e, 0x84, - 0x9b, 0x25, 0x6f, 0x84, 0x9c, 0x25, 0x70, 0x84, 0x9b, 0x25, 0x70, 0x84, - 0x9c, 0x25, 0x71, 0x84, 0x9b, 0x25, 0x72, 0x84, 0x9c, 0x25, 0x72, 0x84, - 0x9b, 0x25, 0x73, 0x84, 0x9c, 0x25, 0x73, 0x84, 0x9b, 0x25, 0x74, 0x84, - 0x9c, 0x25, 0x75, 0x84, 0x9b, 0x25, 0x75, 0x84, 0x9c, 0x25, 0x76, 0x84, - 0x9b, 0x25, 0x76, 0x84, 0x9c, 0x25, 0x77, 0x84, 0x9b, 0x25, 0x78, 0x84, - 0x9c, 0x25, 0x78, 0x84, 0x9b, 0x25, 0x79, 0x84, 0x9c, 0x25, 0x79, 0x84, - 0x9b, 0x25, 0x7a, 0x84, 0x9c, 0x25, 0x7a, 0x84, 0x9b, 0x25, 0x7b, 0x84, - 0x9c, 0x25, 0x7c, 0x84, 0x9b, 0x25, 0x7c, 0x84, 0x9c, 0x25, 0x7d, 0x84, - 0x9b, 0x25, 0x7d, 0x84, 0x9c, 0x25, 0x7e, 0x84, 0x9b, 0x25, 0x7e, 0x84, - 0x9c, 0x25, 0x7f, 0x84, 0x9b, 0x25, 0x7f, 0x84, 0x9c, 0x25, 0x80, 0x84, - 0x9b, 0x25, 0x81, 0x84, 0x9c, 0x25, 0x81, 0x84, 0x9b, 0x25, 0x82, 0x84, - 0x9c, 0x25, 0x82, 0x84, 0x9b, 0x25, 0x83, 0x84, 0x9c, 0x25, 0x83, 0x84, - 0x9b, 0x25, 0x84, 0x84, 0x9c, 0x25, 0x84, 0x84, 0x9b, 0x25, 0x85, 0x84, - 0x9c, 0x25, 0x85, 0x84, 0x9b, 0x25, 0x86, 0x84, 0x9c, 0x25, 0x86, 0x84, - 0x9b, 0x25, 0x87, 0x84, 0x9c, 0x25, 0x87, 0x84, 0x9b, 0x25, 0x88, 0x84, - 0x9c, 0x25, 0x88, 0x84, 0x9b, 0x25, 0x89, 0x84, 0x9c, 0x25, 0x89, 0x84, - 0x9b, 0x25, 0x8a, 0x84, 0x9c, 0x25, 0x8a, 0x84, 0x9b, 0x25, 0x8b, 0x84, - 0x9c, 0x25, 0x8b, 0x84, 0x9b, 0x25, 0x8c, 0x84, 0x9c, 0x25, 0x8c, 0x84, - 0x9b, 0x25, 0x8d, 0x84, 0x9c, 0x25, 0x8d, 0x84, 0x9b, 0x25, 0x8e, 0x84, - 0x9c, 0x25, 0x8e, 0x84, 0x9b, 0x25, 0x8e, 0x84, 0x9c, 0x25, 0x8f, 0x84, - 0x9b, 0x25, 0x8f, 0x84, 0x9c, 0x25, 0x90, 0x84, 0x9b, 0x25, 0x90, 0x84, - 0x9c, 0x25, 0x91, 0x84, 0x9b, 0x25, 0x91, 0x84, 0x9c, 0x25, 0x92, 0x84, - 0x9b, 0x25, 0x92, 0x84, 0x9c, 0x25, 0x93, 0x84, 0x9b, 0x25, 0x93, 0x84, - 0x9c, 0x25, 0x94, 0x84, 0x9b, 0x25, 0x94, 0x84, 0x9c, 0x25, 0x94, 0x84, - 0x9b, 0x25, 0x95, 0x84, 0x9c, 0x25, 0x95, 0x84, 0x9b, 0x25, 0x96, 0x84, - 0x9c, 0x25, 0x96, 0x84, 0x9b, 0x25, 0x97, 0x84, 0x9c, 0x25, 0x97, 0x84, - 0x9b, 0x25, 0x98, 0x84, 0x9c, 0x25, 0x98, 0x84, 0x9b, 0x25, 0x98, 0x84, - 0x9c, 0x25, 0x99, 0x84, 0x9b, 0x25, 0x99, 0x84, 0x9c, 0x25, 0x9a, 0x84, - 0x9b, 0x25, 0x9a, 0x84, 0x9c, 0x25, 0x9a, 0x84, 0x9b, 0x25, 0x9b, 0x84, - 0x9c, 0x25, 0x9b, 0x84, 0x9b, 0x25, 0x9c, 0x84, 0x9c, 0x25, 0x9c, 0x84, - 0x9c, 0x25, 0x9d, 0x84, 0x9d, 0x25, 0x9d, 0x84, 0x9d, 0x25, 0x9d, 0x84, - 0x9d, 0x25, 0x9e, 0x84, 0x9e, 0x25, 0x9e, 0x84, 0x9e, 0x25, 0x9f, 0x84, - 0x9f, 0x25, 0x9f, 0x84, 0x9e, 0x25, 0x9f, 0x84, 0x9f, 0x25, 0xa0, 0x84, - 0x9e, 0x25, 0xa0, 0x84, 0x9f, 0x25, 0xa1, 0x84, 0x9e, 0x25, 0xa1, 0x84, - 0x9f, 0x25, 0xa1, 0x84, 0x9e, 0x25, 0xa2, 0x84, 0x9f, 0x25, 0xa2, 0x84, - 0x9e, 0x25, 0xa3, 0x84, 0x9f, 0x25, 0xa3, 0x84, 0x9e, 0x25, 0xa3, 0x84, - 0x9f, 0x25, 0xa4, 0x85, 0xa2, 0x25, 0xa4, 0x84, 0x9f, 0x25, 0xa5, 0x85, - 0xa2, 0x25, 0xa5, 0x85, 0xa2, 0x25, 0xa5, 0x85, 0xa2, 0x25, 0xa6, 0x85, - 0xa2, 0x25, 0xa6, 0x85, 0xa2, 0x25, 0xa6, 0x85, 0xa2, 0x25, 0xa7, 0x85, - 0xa2, 0x25, 0xa7, 0x85, 0xa2, 0x25, 0xa8, 0x85, 0xa2, 0x25, 0xa8, 0x86, - 0xa6, 0x25, 0xa8, 0x86, 0xa6, 0x25, 0xa9, 0x86, 0xa6, 0x25, 0xa9, 0x86, - 0xa6, 0x25, 0xaa, 0x86, 0xa6, 0x25, 0xaa, 0x86, 0xa6, 0x25, 0xaa, 0x86, - 0xa6, 0x25, 0xab, 0x86, 0xa6, 0x25, 0xab, 0x86, 0xa6, 0x25, 0xab, 0x86, - 0xa6, 0x25, 0xac, 0x87, 0xaa, 0x25, 0xac, 0x86, 0xa6, 0x25, 0xac, 0x87, - 0xaa, 0x25, 0xad, 0x87, 0xa9, 0x25, 0xad, 0x87, 0xaa, 0x25, 0xae, 0x87, - 0xa9, 0x25, 0xae, 0x87, 0xaa, 0x25, 0xae, 0x87, 0xa9, 0x25, 0xaf, 0x87, - 0xaa, 0x25, 0xaf, 0x88, 0xad, 0x25, 0xaf, 0x88, 0xad, 0x25, 0xb0, 0x88, - 0xad, 0x25, 0xb0, 0x88, 0xad, 0x25, 0xb0, 0x88, 0xad, 0x25, 0xb1, 0x88, - 0xad, 0x25, 0xb1, 0x88, 0xad, 0x25, 0xb2, 0x88, 0xad, 0x25, 0xb2, 0x88, - 0xad, 0x25, 0xb2, 0x88, 0xad, 0x25, 0xb3, 0x89, 0xb0, 0x25, 0xb3, 0x88, - 0xad, 0x25, 0xb3, 0x89, 0xb0, 0x25, 0xb4, 0x89, 0xb0, 0x25, 0xb4, 0x89, - 0xb0, 0x25, 0xb4, 0x89, 0xb0, 0x25, 0xb5, 0x89, 0xb0, 0x25, 0xb5, 0x89, - 0xb2, 0x25, 0xb5, 0x89, 0xb0, 0x25, 0xb6, 0x89, 0xb2, 0x25, 0xb6, 0x89, - 0xb2, 0x25, 0xb6, 0x89, 0xb2, 0x25, 0xb7, 0x89, 0xb2, 0x25, 0xb7, 0x89, - 0xb2, 0x25, 0xb7, 0x8a, 0xb3, 0x25, 0xb8, 0x8a, 0xb4, 0x25, 0xb8, 0x8a, - 0xb3, 0x25, 0xb8, 0x8a, 0xb4, 0x25, 0xb9, 0x8a, 0xb3, 0x25, 0xb9, 0x8a, - 0xb4, 0x25, 0xb9, 0x8b, 0xb7, 0x25, 0xba, 0x8b, 0xb7, 0x25, 0xba, 0x8b, - 0xb7, 0x25, 0xba, 0x8b, 0xb7, 0x25, 0xbb, 0x8b, 0xb7, 0x25, 0xbb, 0x8b, - 0xb7, 0x25, 0xbb, 0x8b, 0xb7, 0x25, 0xbc, 0x8b, 0xb7, 0x25, 0xbc, 0x8b, - 0xb7, 0x25, 0xbc, 0x8b, 0xb7, 0x25, 0xbd, 0x8c, 0xba, 0x25, 0xbd, 0x8b, - 0xb7, 0x25, 0xbd, 0x8c, 0xba, 0x25, 0xbe, 0x8c, 0xba, 0x25, 0xbe, 0x8c, - 0xba, 0x25, 0xbe, 0x8c, 0xba, 0x25, 0xbf, 0x8c, 0xba, 0x25, 0xbf, 0x8c, - 0xba, 0x25, 0xbf, 0x8c, 0xba, 0x25, 0xc0, 0x8d, 0xbd, 0x25, 0xc0, 0x8c, - 0xba, 0x25, 0xc0, 0x8d, 0xbd, 0x25, 0xc1, 0x8d, 0xbd, 0x25, 0xc1, 0x8d, - 0xbd, 0x25, 0xc1, 0x8d, 0xbd, 0x25, 0xc1, 0x8d, 0xbd, 0x25, 0xc2, 0x8d, - 0xbd, 0x25, 0xc2, 0x8d, 0xbd, 0x25, 0xc2, 0x8e, 0xc0, 0x25, 0xc3, 0x8e, - 0xc0, 0x25, 0xc3, 0x8e, 0xc0, 0x25, 0xc3, 0x8e, 0xc0, 0x25, 0xc4, 0x8e, - 0xc0, 0x25, 0xc4, 0x8e, 0xc0, 0x25, 0xc4, 0x8e, 0xc0, 0x25, 0xc5, 0x8e, - 0xc0, 0x25, 0xc5, 0x8e, 0xc0, 0x25, 0xc5, 0x8e, 0xc0, 0x25, 0xc6, 0x8e, - 0xc3, 0x25, 0xc6, 0x8e, 0xc0, 0x25, 0xc6, 0x8e, 0xc3, 0x25, 0xc6, 0x8e, - 0xc0, 0x25, 0xc7, 0x8e, 0xc3, 0x25, 0xc7, 0x8e, 0xc3, 0x25, 0xc7, 0x8e, - 0xc3, 0x25, 0xc8, 0x8e, 0xc3, 0x25, 0xc8, 0x8e, 0xc3, 0x25, 0xc8, 0x8e, - 0xc3, 0x25, 0xc9, 0x8e, 0xc3, 0x25, 0xc9, 0x8f, 0xc6, 0x25, 0xc9, 0x8e, - 0xc3, 0x25, 0xc9, 0x8f, 0xc6, 0x25, 0xca, 0x8f, 0xc6, 0x25, 0xca, 0x8f, - 0xc6, 0x25, 0xca, 0x8f, 0xc6, 0x25, 0xcb, 0x8f, 0xc6, 0x25, 0xcb, 0x8f, - 0xc6, 0x25, 0xcb, 0x8f, 0xc6, 0x25, 0xcc, 0x90, 0xc9, 0x25, 0xcc, 0x90, - 0xc9, 0x25, 0xcc, 0x90, 0xc9, 0x25, 0xcc, 0x90, 0xc9, 0x25, 0xcd, 0x90, - 0xc9, 0x25, 0xcd, 0x90, 0xc9, 0x25, 0xcd, 0x90, 0xc9, 0x25, 0xce, 0x90, - 0xc9, 0x25, 0xce, 0x90, 0xc9, 0x25, 0xce, 0x90, 0xc9, 0x25, 0xce, 0x91, - 0xcc, 0x25, 0xcf, 0x90, 0xc9, 0x25, 0xcf, 0x91, 0xcc, 0x25, 0xcf, 0x91, - 0xcb, 0x25, 0xd0, 0x91, 0xcc, 0x25, 0xd0, 0x91, 0xcb, 0x25, 0xd0, 0x91, - 0xcc, 0x25, 0xd0, 0x91, 0xcb, 0x25, 0xd1, 0x91, 0xcc, 0x25, 0xd1, 0x92, - 0xce, 0x25, 0xd1, 0x92, 0xce, 0x25, 0xd2, 0x92, 0xce, 0x25, 0xd2, 0x92, - 0xce, 0x25, 0xd2, 0x92, 0xce, 0x25, 0xd2, 0x92, 0xce, 0x25, 0xd3, 0x92, - 0xce, 0x25, 0xd3, 0x92, 0xce, 0x25, 0xd3, 0x92, 0xce, 0x25, 0xd4, 0x92, - 0xce, 0x25, 0xd4, 0x92, 0xce, 0x25, 0xd4, 0x92, 0xce, 0x25, 0xd4, 0x93, - 0xd1, 0x25, 0xd5, 0x92, 0xce, 0x25, 0xd5, 0x93, 0xd1, 0x25, 0xd5, 0x93, - 0xd1, 0x25, 0xd6, 0x93, 0xd1, 0x25, 0xd6, 0x93, 0xd1, 0x25, 0xd6, 0x93, - 0xd1, 0x25, 0xd6, 0x93, 0xd1, 0x25, 0xd7, 0x93, 0xd1, 0x25, 0xd7, 0x94, - 0xd4, 0x25, 0xd7, 0x93, 0xd1, 0x25, 0xd7, 0x94, 0xd4, 0x25, 0xd8, 0x94, - 0xd3, 0x25, 0xd8, 0x94, 0xd4, 0x25, 0xd8, 0x94, 0xd3, 0x25, 0xd9, 0x94, - 0xd4, 0x25, 0xd9, 0x94, 0xd3, 0x25, 0xd9, 0x94, 0xd4, 0x25, 0xd9, 0x95, - 0xd6, 0x25, 0xda, 0x95, 0xd6, 0x25, 0xda, 0x95, 0xd6, 0x25, 0xda, 0x95, - 0xd6, 0x25, 0xda, 0x95, 0xd6, 0x25, 0xdb, 0x95, 0xd6, 0x25, 0xdb, 0x95, - 0xd6, 0x25, 0xdb, 0x95, 0xd6, 0x25, 0xdb, 0x95, 0xd6, 0x25, 0xdc, 0x95, - 0xd6, 0x25, 0xdc, 0x96, 0xd9, 0x25, 0xdc, 0x95, 0xd6, 0x25, 0xdd, 0x96, - 0xd9, 0x25, 0xdd, 0x95, 0xd6, 0x25, 0xdd, 0x96, 0xd9, 0x25, 0xdd, 0x96, - 0xd9, 0x25, 0xde, 0x96, 0xd9, 0x25, 0xde, 0x96, 0xd9, 0x25, 0xde, 0x96, - 0xd9, 0x25, 0xde, 0x97, 0xdb, 0x25, 0xdf, 0x96, 0xd9, 0x25, 0xdf, 0x97, - 0xdb, 0x25, 0xdf, 0x96, 0xd9, 0x25, 0xdf, 0x97, 0xdb, 0x25, 0xe0, 0x97, - 0xdb, 0x25, 0xe0, 0x97, 0xdb, 0x25, 0xe0, 0x97, 0xdb, 0x25, 0xe1, 0x97, - 0xdb, 0x25, 0xe1, 0x98, 0xde, 0x25, 0xe1, 0x98, 0xde, 0x25, 0xe1, 0x98, - 0xde, 0x25, 0xe2, 0x98, 0xde, 0x25, 0xe2, 0x98, 0xde, 0x25, 0xe2, 0x98, - 0xde, 0x25, 0xe2, 0x98, 0xde, 0x25, 0xe3, 0x98, 0xde, 0x25, 0xe3, 0x98, - 0xde, 0x25, 0xe3, 0x98, 0xde, 0x25, 0xe3, 0x98, 0xde, 0x25, 0xe4, 0x98, - 0xde, 0x25, 0xe4, 0x98, 0xe0, 0x25, 0xe4, 0x98, 0xde, 0x25, 0xe4, 0x98, - 0xe0, 0x25, 0xe5, 0x98, 0xe0, 0x25, 0xe5, 0x98, 0xe0, 0x25, 0xe5, 0x98, - 0xe0, 0x25, 0xe5, 0x98, 0xe0, 0x25, 0xe6, 0x98, 0xe0, 0x25, 0xe6, 0x98, - 0xe0, 0x25, 0xe6, 0x99, 0xe3, 0x25, 0xe6, 0x98, 0xe0, 0x25, 0xe7, 0x99, - 0xe3, 0x25, 0xe7, 0x98, 0xe0, 0x25, 0xe7, 0x99, 0xe3, 0x25, 0xe7, 0x99, - 0xe2, 0x25, 0xe8, 0x99, 0xe3, 0x25, 0xe8, 0x99, 0xe2, 0x25, 0xe8, 0x99, - 0xe3, 0x25, 0xe8, 0x9a, 0xe5, 0x25, 0xe9, 0x9a, 0xe5, 0x25, 0xe9, 0x9a, - 0xe5, 0x25, 0xe9, 0x9a, 0xe5, 0x25, 0xe9, 0x9a, 0xe5, 0x25, 0xea, 0x9a, - 0xe5, 0x25, 0xea, 0x9a, 0xe5, 0x25, 0xea, 0x9a, 0xe5, 0x25, 0xea, 0x9a, - 0xe5, 0x25, 0xeb, 0x9a, 0xe5, 0x25, 0xeb, 0x9b, 0xe7, 0x25, 0xeb, 0x9a, - 0xe5, 0x25, 0xeb, 0x9b, 0xe7, 0x25, 0xec, 0x9a, 0xe5, 0x25, 0xec, 0x9b, - 0xe7, 0x25, 0xec, 0x9b, 0xe7, 0x25, 0xec, 0x9b, 0xe7, 0x25, 0xec, 0x9b, - 0xe7, 0x25, 0xed, 0x9b, 0xe7, 0x25, 0xed, 0x9b, 0xe7, 0x25, 0xed, 0x9b, - 0xe7, 0x25, 0xed, 0x9c, 0xea, 0x25, 0xee, 0x9c, 0xea, 0x25, 0xee, 0x9c, - 0xea, 0x25, 0xee, 0x9c, 0xea, 0x25, 0xee, 0x9c, 0xea, 0x25, 0xef, 0x9c, - 0xea, 0x25, 0xef, 0x9c, 0xea, 0x25, 0xef, 0x9c, 0xea, 0x25, 0xef, 0x9c, - 0xea, 0x25, 0xf0, 0x9c, 0xea, 0x25, 0xf0, 0x9d, 0xec, 0x25, 0xf0, 0x9c, - 0xea, 0x25, 0xf0, 0x9d, 0xec, 0x25, 0xf1, 0x9c, 0xea, 0x25, 0xf1, 0x9d, - 0xec, 0x25, 0xf1, 0x9d, 0xec, 0x25, 0xf1, 0x9d, 0xec, 0x25, 0xf2, 0x9d, - 0xec, 0x25, 0xf2, 0x9d, 0xec, 0x25, 0xf2, 0x9d, 0xee, 0x25, 0xf2, 0x9d, - 0xec, 0x25, 0xf2, 0x9d, 0xee, 0x25, 0xf3, 0x9d, 0xec, 0x25, 0xf3, 0x9d, - 0xee, 0x25, 0xf3, 0x9d, 0xee, 0x25, 0xf3, 0x9d, 0xee, 0x25, 0xf4, 0x9d, - 0xee, 0x25, 0xf4, 0x9d, 0xee, 0x25, 0xf4, 0x9e, 0xf0, 0x25, 0xf4, 0x9e, - 0xf1, 0x25, 0xf5, 0x9e, 0xf0, 0x25, 0xf5, 0x9e, 0xf1, 0x25, 0xf5, 0x9e, - 0xf0, 0x25, 0xf5, 0x9e, 0xf1, 0x25, 0xf5, 0x9e, 0xf0, 0x25, 0xf6, 0x9e, - 0xf1, 0x25, 0xf6, 0x9e, 0xf0, 0x25, 0xf6, 0x9e, 0xf1, 0x25, 0xf6, 0x9f, - 0xf3, 0x25, 0xf7, 0x9e, 0xf1, 0x25, 0xf7, 0x9f, 0xf3, 0x25, 0xf7, 0x9e, - 0xf1, 0x25, 0xf7, 0x9f, 0xf3, 0x25, 0xf8, 0x9f, 0xf2, 0x25, 0xf8, 0x9f, - 0xf3, 0x25, 0xf8, 0x9f, 0xf2, 0x25, 0xf8, 0x9f, 0xf3, 0x25, 0xf8, 0xa0, - 0xf5, 0x25, 0xf9, 0x9f, 0xf3, 0x25, 0xf9, 0xa0, 0xf5, 0x25, 0xf9, 0x9f, - 0xf3, 0x25, 0xf9, 0xa0, 0xf5, 0x25, 0xfa, 0x9f, 0xf3, 0x25, 0xfa, 0xa0, - 0xf5, 0x25, 0xfa, 0xa0, 0xf5, 0x25, 0xfa, 0xa0, 0xf5, 0x25, 0xfa, 0xa0, - 0xf5, 0x25, 0xfb, 0xa0, 0xf5, 0x25, 0xfb, 0xa1, 0xf7, 0x25, 0xfb, 0xa1, - 0xf7, 0x25, 0xfb, 0xa1, 0xf7, 0x25, 0xfc, 0xa1, 0xf7, 0x25, 0xfc, 0xa1, - 0xf7, 0x25, 0xfc, 0xa1, 0xf7, 0x25, 0xfc, 0xa1, 0xf7, 0x25, 0xfc, 0xa1, - 0xf7, 0x25, 0xfd, 0xa1, 0xf7, 0x25, 0xfd, 0xa1, 0xf7, 0x25, 0xfd, 0xa1, - 0xf9, 0x25, 0xfd, 0xa1, 0xf7, 0x25, 0xfe, 0xa1, 0xf9, 0x25, 0xfe, 0xa1, - 0xf7, 0x25, 0xfe, 0xa1, 0xf9, 0x25, 0xfe, 0xa1, 0xf9, 0x25, 0xfe, 0xa1, - 0xf9, 0x25, 0xff, 0xa1, 0xf9, 0x25, 0xff, 0xa1, 0xf9, 0x25, 0x03, 0x83, - 0x9b, 0x25, 0x0a, 0x83, 0x9b, 0x25, 0x0f, 0x83, 0x9b, 0x25, 0x14, 0x83, - 0x9b, 0x25, 0x17, 0x83, 0x9b, 0x25, 0x1b, 0x83, 0x9b, 0x25, 0x1e, 0x83, - 0x9b, 0x25, 0x20, 0x86, 0x9b, 0x25, 0x23, 0x83, 0x9b, 0x25, 0x25, 0x86, - 0x9b, 0x25, 0x27, 0x83, 0x9b, 0x25, 0x29, 0x86, 0x9b, 0x25, 0x2b, 0x83, - 0x9b, 0x25, 0x2d, 0x86, 0x9b, 0x25, 0x2f, 0x83, 0x9b, 0x25, 0x31, 0x86, - 0x9b, 0x25, 0x32, 0x83, 0x9b, 0x25, 0x34, 0x86, 0x9b, 0x25, 0x35, 0x83, - 0x9b, 0x25, 0x37, 0x86, 0x9b, 0x25, 0x38, 0x83, 0x9b, 0x25, 0x3a, 0x86, - 0x9b, 0x25, 0x3b, 0x83, 0x9b, 0x25, 0x3c, 0x86, 0x9b, 0x25, 0x3e, 0x83, - 0x9b, 0x25, 0x3f, 0x86, 0x9b, 0x25, 0x40, 0x83, 0x9b, 0x25, 0x42, 0x86, - 0x9b, 0x25, 0x43, 0x83, 0x9b, 0x25, 0x44, 0x86, 0x9b, 0x25, 0x45, 0x83, - 0x9b, 0x25, 0x46, 0x86, 0x9b, 0x25, 0x47, 0x83, 0x9b, 0x25, 0x48, 0x83, - 0x9c, 0x25, 0x49, 0x83, 0x9b, 0x25, 0x4a, 0x83, 0x9c, 0x25, 0x4b, 0x83, - 0x9b, 0x25, 0x4c, 0x83, 0x9c, 0x25, 0x4d, 0x83, 0x9b, 0x25, 0x4e, 0x83, - 0x9c, 0x25, 0x4f, 0x83, 0x9b, 0x25, 0x50, 0x83, 0x9c, 0x25, 0x51, 0x83, - 0x9b, 0x25, 0x52, 0x83, 0x9c, 0x25, 0x53, 0x83, 0x9b, 0x25, 0x54, 0x83, - 0x9c, 0x25, 0x55, 0x83, 0x9b, 0x25, 0x56, 0x83, 0x9c, 0x25, 0x57, 0x83, - 0x9b, 0x25, 0x58, 0x83, 0x9c, 0x25, 0x58, 0x83, 0x9b, 0x25, 0x59, 0x83, - 0x9c, 0x25, 0x5a, 0x83, 0x9b, 0x25, 0x5b, 0x83, 0x9c, 0x25, 0x5c, 0x83, - 0x9b, 0x25, 0x5d, 0x83, 0x9c, 0x25, 0x5d, 0x83, 0x9b, 0x25, 0x5e, 0x83, - 0x9c, 0x25, 0x5f, 0x83, 0x9b, 0x25, 0x60, 0x83, 0x9c, 0x25, 0x60, 0x83, - 0x9b, 0x25, 0x61, 0x83, 0x9c, 0x25, 0x62, 0x83, 0x9b, 0x25, 0x63, 0x83, - 0x9c, 0x25, 0x63, 0x83, 0x9b, 0x25, 0x64, 0x83, 0x9c, 0x25, 0x65, 0x83, - 0x9b, 0x25, 0x66, 0x83, 0x9c, 0x25, 0x66, 0x83, 0x9b, 0x25, 0x67, 0x83, - 0x9c, 0x25, 0x68, 0x83, 0x9b, 0x25, 0x68, 0x83, 0x9c, 0x25, 0x69, 0x83, - 0x9b, 0x25, 0x6a, 0x83, 0x9c, 0x25, 0x6a, 0x83, 0x9b, 0x25, 0x6b, 0x83, - 0x9c, 0x25, 0x6c, 0x83, 0x9b, 0x25, 0x6c, 0x83, 0x9c, 0x25, 0x6d, 0x83, - 0x9b, 0x25, 0x6e, 0x83, 0x9c, 0x25, 0x6e, 0x83, 0x9b, 0x25, 0x6f, 0x83, - 0x9c, 0x25, 0x70, 0x83, 0x9b, 0x25, 0x70, 0x83, 0x9c, 0x25, 0x71, 0x83, - 0x9b, 0x25, 0x72, 0x83, 0x9c, 0x25, 0x72, 0x83, 0x9b, 0x25, 0x73, 0x83, - 0x9c, 0x25, 0x73, 0x83, 0x9b, 0x25, 0x74, 0x83, 0x9c, 0x25, 0x75, 0x83, - 0x9b, 0x25, 0x75, 0x83, 0x9c, 0x25, 0x76, 0x83, 0x9b, 0x25, 0x76, 0x83, - 0x9c, 0x25, 0x77, 0x83, 0x9b, 0x25, 0x78, 0x83, 0x9c, 0x25, 0x78, 0x83, - 0x9b, 0x25, 0x79, 0x83, 0x9c, 0x25, 0x79, 0x83, 0x9b, 0x25, 0x7a, 0x83, - 0x9c, 0x25, 0x7a, 0x83, 0x9b, 0x25, 0x7b, 0x83, 0x9c, 0x25, 0x7c, 0x83, - 0x9b, 0x25, 0x7c, 0x83, 0x9c, 0x25, 0x7d, 0x83, 0x9b, 0x25, 0x7d, 0x83, - 0x9c, 0x25, 0x7e, 0x83, 0x9b, 0x25, 0x7e, 0x83, 0x9c, 0x25, 0x7f, 0x83, - 0x9b, 0x25, 0x7f, 0x83, 0x9c, 0x25, 0x80, 0x83, 0x9b, 0x25, 0x81, 0x83, - 0x9c, 0x25, 0x81, 0x83, 0x9b, 0x25, 0x82, 0x83, 0x9c, 0x25, 0x82, 0x83, - 0x9b, 0x25, 0x83, 0x83, 0x9c, 0x25, 0x83, 0x83, 0x9b, 0x25, 0x84, 0x83, - 0x9c, 0x25, 0x84, 0x83, 0x9b, 0x25, 0x85, 0x83, 0x9c, 0x25, 0x85, 0x83, - 0x9b, 0x25, 0x86, 0x83, 0x9c, 0x25, 0x86, 0x83, 0x9b, 0x25, 0x87, 0x83, - 0x9c, 0x25, 0x87, 0x83, 0x9b, 0x25, 0x88, 0x83, 0x9c, 0x25, 0x88, 0x83, - 0x9b, 0x25, 0x89, 0x83, 0x9c, 0x25, 0x89, 0x83, 0x9b, 0x25, 0x8a, 0x83, - 0x9c, 0x25, 0x8a, 0x83, 0x9b, 0x25, 0x8b, 0x83, 0x9c, 0x25, 0x8b, 0x83, - 0x9b, 0x25, 0x8c, 0x83, 0x9c, 0x25, 0x8c, 0x83, 0x9b, 0x25, 0x8d, 0x83, - 0x9c, 0x25, 0x8d, 0x83, 0x9b, 0x25, 0x8e, 0x83, 0x9c, 0x25, 0x8e, 0x83, - 0x9b, 0x25, 0x8e, 0x83, 0x9c, 0x25, 0x8f, 0x83, 0x9b, 0x25, 0x8f, 0x83, - 0x9c, 0x25, 0x90, 0x83, 0x9b, 0x25, 0x90, 0x83, 0x9c, 0x25, 0x91, 0x83, - 0x9b, 0x25, 0x91, 0x83, 0x9c, 0x25, 0x92, 0x83, 0x9b, 0x25, 0x92, 0x83, - 0x9c, 0x25, 0x93, 0x83, 0x9b, 0x25, 0x93, 0x83, 0x9c, 0x25, 0x94, 0x83, - 0x9b, 0x25, 0x94, 0x83, 0x9c, 0x25, 0x94, 0x83, 0x9b, 0x25, 0x95, 0x83, - 0x9c, 0x25, 0x95, 0x83, 0x9b, 0x25, 0x96, 0x83, 0x9c, 0x25, 0x96, 0x83, - 0x9b, 0x25, 0x97, 0x83, 0x9c, 0x25, 0x97, 0x83, 0x9b, 0x25, 0x98, 0x83, - 0x9c, 0x25, 0x98, 0x83, 0x9b, 0x25, 0x98, 0x83, 0x9c, 0x25, 0x99, 0x83, - 0x9b, 0x25, 0x99, 0x83, 0x9c, 0x25, 0x9a, 0x83, 0x9b, 0x25, 0x9a, 0x83, - 0x9c, 0x25, 0x9a, 0x83, 0x9b, 0x25, 0x9b, 0x83, 0x9c, 0x25, 0x9b, 0x83, - 0x9b, 0x25, 0x9c, 0x83, 0x9c, 0x25, 0x9c, 0x83, 0x9c, 0x25, 0x9d, 0x83, - 0x9d, 0x25, 0x9d, 0x83, 0x9c, 0x25, 0x9d, 0x83, 0x9d, 0x25, 0x9e, 0x83, - 0x9c, 0x25, 0x9e, 0x83, 0x9d, 0x25, 0x9f, 0x83, 0x9c, 0x25, 0x9f, 0x83, - 0x9d, 0x25, 0x9f, 0x83, 0x9c, 0x25, 0xa0, 0x83, 0x9d, 0x25, 0xa0, 0x83, - 0x9c, 0x25, 0xa1, 0x83, 0x9d, 0x25, 0xa1, 0x83, 0x9c, 0x25, 0xa1, 0x83, - 0x9d, 0x25, 0xa2, 0x84, 0xa0, 0x25, 0xa2, 0x84, 0xa1, 0x25, 0xa3, 0x84, - 0xa0, 0x25, 0xa3, 0x84, 0xa1, 0x25, 0xa3, 0x84, 0xa0, 0x25, 0xa4, 0x84, - 0xa1, 0x25, 0xa4, 0x84, 0xa0, 0x25, 0xa5, 0x84, 0xa1, 0x25, 0xa5, 0x84, - 0xa0, 0x25, 0xa5, 0x84, 0xa1, 0x25, 0xa6, 0x85, 0xa4, 0x25, 0xa6, 0x84, - 0xa1, 0x25, 0xa6, 0x85, 0xa4, 0x25, 0xa7, 0x85, 0xa4, 0x25, 0xa7, 0x85, - 0xa4, 0x25, 0xa8, 0x85, 0xa4, 0x25, 0xa8, 0x85, 0xa4, 0x25, 0xa8, 0x85, - 0xa4, 0x25, 0xa9, 0x85, 0xa4, 0x25, 0xa9, 0x85, 0xa4, 0x25, 0xaa, 0x85, - 0xa4, 0x25, 0xaa, 0x86, 0xa8, 0x25, 0xaa, 0x86, 0xa7, 0x25, 0xab, 0x86, - 0xa8, 0x25, 0xab, 0x86, 0xa7, 0x25, 0xab, 0x86, 0xa8, 0x25, 0xac, 0x86, - 0xa7, 0x25, 0xac, 0x86, 0xa8, 0x25, 0xac, 0x86, 0xa7, 0x25, 0xad, 0x86, - 0xa8, 0x25, 0xad, 0x87, 0xab, 0x25, 0xae, 0x87, 0xab, 0x25, 0xae, 0x87, - 0xab, 0x25, 0xae, 0x87, 0xab, 0x25, 0xaf, 0x87, 0xab, 0x25, 0xaf, 0x87, - 0xab, 0x25, 0xaf, 0x87, 0xab, 0x25, 0xb0, 0x87, 0xab, 0x25, 0xb0, 0x87, - 0xab, 0x25, 0xb0, 0x87, 0xab, 0x25, 0xb1, 0x88, 0xaf, 0x25, 0xb1, 0x87, - 0xab, 0x25, 0xb2, 0x88, 0xaf, 0x25, 0xb2, 0x88, 0xae, 0x25, 0xb2, 0x88, - 0xaf, 0x25, 0xb3, 0x88, 0xae, 0x25, 0xb3, 0x88, 0xaf, 0x25, 0xb3, 0x88, - 0xae, 0x25, 0xb4, 0x88, 0xaf, 0x25, 0xb4, 0x89, 0xb2, 0x25, 0xb4, 0x89, - 0xb2, 0x25, 0xb5, 0x89, 0xb2, 0x25, 0xb5, 0x89, 0xb2, 0x25, 0xb5, 0x89, - 0xb2, 0x25, 0xb6, 0x89, 0xb2, 0x25, 0xb6, 0x89, 0xb2, 0x25, 0xb6, 0x89, - 0xb2, 0x25, 0xb7, 0x89, 0xb2, 0x25, 0xb7, 0x89, 0xb2, 0x25, 0xb7, 0x89, - 0xb2, 0x25, 0xb8, 0x89, 0xb2, 0x25, 0xb8, 0x8a, 0xb5, 0x25, 0xb8, 0x8a, - 0xb5, 0x25, 0xb9, 0x8a, 0xb5, 0x25, 0xb9, 0x8a, 0xb5, 0x25, 0xb9, 0x8a, - 0xb5, 0x25, 0xba, 0x8a, 0xb5, 0x25, 0xba, 0x8a, 0xb5, 0x25, 0xba, 0x8a, - 0xb5, 0x25, 0xbb, 0x8a, 0xb5, 0x25, 0xbb, 0x8b, 0xb8, 0x25, 0xbb, 0x8a, - 0xb5, 0x25, 0xbc, 0x8b, 0xb8, 0x25, 0xbc, 0x8b, 0xb8, 0x25, 0xbc, 0x8b, - 0xb8, 0x25, 0xbd, 0x8b, 0xb8, 0x25, 0xbd, 0x8b, 0xb8, 0x25, 0xbd, 0x8b, - 0xb8, 0x25, 0xbe, 0x8b, 0xb8, 0x25, 0xbe, 0x8c, 0xbb, 0x25, 0xbe, 0x8c, - 0xbc, 0x25, 0xbf, 0x8c, 0xbb, 0x25, 0xbf, 0x8c, 0xbc, 0x25, 0xbf, 0x8c, - 0xbb, 0x25, 0xc0, 0x8c, 0xbc, 0x25, 0xc0, 0x8c, 0xbb, 0x25, 0xc0, 0x8c, - 0xbc, 0x25, 0xc1, 0x8c, 0xbb, 0x25, 0xc1, 0x8c, 0xbc, 0x25, 0xc1, 0x8d, - 0xbf, 0x25, 0xc1, 0x8c, 0xbc, 0x25, 0xc2, 0x8d, 0xbf, 0x25, 0xc2, 0x8d, - 0xbe, 0x25, 0xc2, 0x8d, 0xbf, 0x25, 0xc3, 0x8d, 0xbe, 0x25, 0xc3, 0x8d, - 0xbf, 0x25, 0xc3, 0x8d, 0xbe, 0x25, 0xc4, 0x8d, 0xbf, 0x25, 0xc4, 0x8e, - 0xc1, 0x25, 0xc4, 0x8d, 0xbf, 0x25, 0xc5, 0x8e, 0xc1, 0x25, 0xc5, 0x8e, - 0xc1, 0x25, 0xc5, 0x8e, 0xc1, 0x25, 0xc6, 0x8e, 0xc1, 0x25, 0xc6, 0x8e, - 0xc1, 0x25, 0xc6, 0x8e, 0xc1, 0x25, 0xc6, 0x8e, 0xc1, 0x25, 0xc7, 0x8f, - 0xc4, 0x25, 0xc7, 0x8f, 0xc5, 0x25, 0xc7, 0x8f, 0xc4, 0x25, 0xc8, 0x8f, - 0xc5, 0x25, 0xc8, 0x8f, 0xc4, 0x25, 0xc8, 0x8f, 0xc5, 0x25, 0xc9, 0x8f, - 0xc4, 0x25, 0xc9, 0x8f, 0xc5, 0x25, 0xc9, 0x8f, 0xc4, 0x25, 0xc9, 0x8f, - 0xc5, 0x25, 0xca, 0x8f, 0xc4, 0x25, 0xca, 0x8f, 0xc5, 0x25, 0xca, 0x90, - 0xc7, 0x25, 0xcb, 0x8f, 0xc5, 0x25, 0xcb, 0x90, 0xc7, 0x25, 0xcb, 0x90, - 0xc7, 0x25, 0xcc, 0x90, 0xc7, 0x25, 0xcc, 0x90, 0xc7, 0x25, 0xcc, 0x90, - 0xc7, 0x25, 0xcc, 0x90, 0xc7, 0x25, 0xcd, 0x90, 0xc7, 0x25, 0xcd, 0x91, - 0xca, 0x25, 0xcd, 0x90, 0xc7, 0x25, 0xce, 0x91, 0xca, 0x25, 0xce, 0x91, - 0xca, 0x25, 0xce, 0x91, 0xca, 0x25, 0xce, 0x91, 0xca, 0x25, 0xcf, 0x91, - 0xca, 0x25, 0xcf, 0x91, 0xca, 0x25, 0xcf, 0x91, 0xca, 0x25, 0xd0, 0x92, - 0xcd, 0x25, 0xd0, 0x92, 0xcd, 0x25, 0xd0, 0x92, 0xcd, 0x25, 0xd0, 0x92, - 0xcd, 0x25, 0xd1, 0x92, 0xcd, 0x25, 0xd1, 0x92, 0xcd, 0x25, 0xd1, 0x92, - 0xcd, 0x25, 0xd2, 0x92, 0xcd, 0x25, 0xd2, 0x92, 0xcd, 0x25, 0xd2, 0x92, - 0xcd, 0x25, 0xd2, 0x93, 0xd0, 0x25, 0xd3, 0x92, 0xcd, 0x25, 0xd3, 0x93, - 0xd0, 0x25, 0xd3, 0x92, 0xcd, 0x25, 0xd4, 0x93, 0xd0, 0x25, 0xd4, 0x93, - 0xcf, 0x25, 0xd4, 0x93, 0xd0, 0x25, 0xd4, 0x93, 0xcf, 0x25, 0xd5, 0x93, - 0xd0, 0x25, 0xd5, 0x93, 0xcf, 0x25, 0xd5, 0x93, 0xd0, 0x25, 0xd6, 0x94, - 0xd2, 0x25, 0xd6, 0x94, 0xd2, 0x25, 0xd6, 0x94, 0xd2, 0x25, 0xd6, 0x94, - 0xd2, 0x25, 0xd7, 0x94, 0xd2, 0x25, 0xd7, 0x94, 0xd2, 0x25, 0xd7, 0x94, - 0xd2, 0x25, 0xd7, 0x94, 0xd2, 0x25, 0xd8, 0x94, 0xd2, 0x25, 0xd8, 0x94, - 0xd2, 0x25, 0xd8, 0x94, 0xd5, 0x25, 0xd9, 0x94, 0xd2, 0x25, 0xd9, 0x94, - 0xd5, 0x25, 0xd9, 0x94, 0xd5, 0x25, 0xd9, 0x94, 0xd5, 0x25, 0xda, 0x94, - 0xd5, 0x25, 0xda, 0x94, 0xd5, 0x25, 0xda, 0x94, 0xd5, 0x25, 0xda, 0x94, - 0xd5, 0x25, 0xdb, 0x95, 0xd7, 0x25, 0xdb, 0x94, 0xd5, 0x25, 0xdb, 0x95, - 0xd7, 0x25, 0xdb, 0x95, 0xd7, 0x25, 0xdc, 0x95, 0xd7, 0x25, 0xdc, 0x95, - 0xd7, 0x25, 0xdc, 0x95, 0xd7, 0x25, 0xdd, 0x95, 0xd7, 0x25, 0xdd, 0x95, - 0xd7, 0x25, 0xdd, 0x96, 0xda, 0x25, 0xdd, 0x96, 0xda, 0x25, 0xde, 0x96, - 0xda, 0x25, 0xde, 0x96, 0xda, 0x25, 0xde, 0x96, 0xda, 0x25, 0xde, 0x96, - 0xda, 0x25, 0xdf, 0x96, 0xda, 0x25, 0xdf, 0x96, 0xda, 0x25, 0xdf, 0x96, - 0xda, 0x25, 0xdf, 0x96, 0xda, 0x25, 0xe0, 0x97, 0xdd, 0x25, 0xe0, 0x96, - 0xda, 0x25, 0xe0, 0x97, 0xdd, 0x25, 0xe1, 0x96, 0xda, 0x25, 0xe1, 0x97, - 0xdd, 0x25, 0xe1, 0x97, 0xdc, 0x25, 0xe1, 0x97, 0xdd, 0x25, 0xe2, 0x97, - 0xdc, 0x25, 0xe2, 0x97, 0xdd, 0x25, 0xe2, 0x98, 0xdf, 0x25, 0xe2, 0x97, - 0xdd, 0x25, 0xe3, 0x98, 0xdf, 0x25, 0xe3, 0x97, 0xdd, 0x25, 0xe3, 0x98, - 0xdf, 0x25, 0xe3, 0x98, 0xdf, 0x25, 0xe4, 0x98, 0xdf, 0x25, 0xe4, 0x98, - 0xdf, 0x25, 0xe4, 0x98, 0xdf, 0x25, 0xe4, 0x98, 0xdf, 0x25, 0xe5, 0x98, - 0xdf, 0x25, 0xe5, 0x99, 0xe1, 0x25, 0xe5, 0x99, 0xe2, 0x25, 0xe5, 0x99, - 0xe1, 0x25, 0xe6, 0x99, 0xe2, 0x25, 0xe6, 0x99, 0xe1, 0x25, 0xe6, 0x99, - 0xe2, 0x25, 0xe6, 0x99, 0xe1, 0x25, 0xe7, 0x99, 0xe2, 0x25, 0xe7, 0x99, - 0xe1, 0x25, 0xe7, 0x99, 0xe2, 0x25, 0xe7, 0x9a, 0xe4, 0x25, 0xe8, 0x99, - 0xe2, 0x25, 0xe8, 0x9a, 0xe4, 0x25, 0xe8, 0x99, 0xe2, 0x25, 0xe8, 0x9a, - 0xe4, 0x25, 0xe9, 0x9a, 0xe4, 0x25, 0xe9, 0x9a, 0xe4, 0x25, 0xe9, 0x9a, - 0xe4, 0x25, 0xe9, 0x9a, 0xe4, 0x25, 0xea, 0x9a, 0xe6, 0x25, 0xea, 0x9a, - 0xe4, 0x25, 0xea, 0x9a, 0xe6, 0x25, 0xea, 0x9a, 0xe4, 0x25, 0xeb, 0x9a, - 0xe6, 0x25, 0xeb, 0x9a, 0xe6, 0x25, 0xeb, 0x9a, 0xe6, 0x25, 0xeb, 0x9a, - 0xe6, 0x25, 0xec, 0x9a, 0xe6, 0x25, 0xec, 0x9b, 0xe8, 0x25, 0xec, 0x9b, - 0xe9, 0x25, 0xec, 0x9b, 0xe8, 0x25, 0xec, 0x9b, 0xe9, 0x25, 0xed, 0x9b, - 0xe8, 0x25, 0xed, 0x9b, 0xe9, 0x25, 0xed, 0x9b, 0xe8, 0x25, 0xed, 0x9b, - 0xe9, 0x25, 0xee, 0x9b, 0xe8, 0x25, 0xee, 0x9b, 0xe9, 0x25, 0xee, 0x9b, - 0xe8, 0x25, 0xee, 0x9b, 0xe9, 0x25, 0xef, 0x9c, 0xeb, 0x25, 0xef, 0x9b, - 0xe9, 0x25, 0xef, 0x9c, 0xeb, 0x25, 0xef, 0x9c, 0xeb, 0x25, 0xf0, 0x9c, - 0xeb, 0x25, 0xf0, 0x9c, 0xeb, 0x25, 0xf0, 0x9c, 0xeb, 0x25, 0xf0, 0x9c, - 0xeb, 0x25, 0xf1, 0x9c, 0xeb, 0x25, 0xf1, 0x9d, 0xed, 0x25, 0xf1, 0x9d, - 0xed, 0x25, 0xf1, 0x9d, 0xed, 0x25, 0xf2, 0x9d, 0xed, 0x25, 0xf2, 0x9d, - 0xed, 0x25, 0xf2, 0x9d, 0xed, 0x25, 0xf2, 0x9d, 0xed, 0x25, 0xf2, 0x9d, - 0xed, 0x25, 0xf3, 0x9d, 0xed, 0x25, 0xf3, 0x9d, 0xed, 0x25, 0xf3, 0x9e, - 0xef, 0x25, 0xf3, 0x9d, 0xed, 0x25, 0xf4, 0x9e, 0xef, 0x25, 0xf4, 0x9d, - 0xed, 0x25, 0xf4, 0x9e, 0xef, 0x25, 0xf4, 0x9e, 0xef, 0x25, 0xf5, 0x9e, - 0xef, 0x25, 0xf5, 0x9e, 0xef, 0x25, 0xf5, 0x9e, 0xef, 0x25, 0xf5, 0x9f, - 0xf2, 0x25, 0xf5, 0x9e, 0xef, 0x25, 0xf6, 0x9f, 0xf2, 0x25, 0xf6, 0x9e, - 0xef, 0x25, 0xf6, 0x9f, 0xf2, 0x25, 0xf6, 0x9f, 0xf1, 0x25, 0xf7, 0x9f, - 0xf2, 0x25, 0xf7, 0x9f, 0xf1, 0x25, 0xf7, 0x9f, 0xf2, 0x25, 0xf7, 0x9f, - 0xf4, 0x25, 0xf8, 0x9f, 0xf4, 0x25, 0xf8, 0x9f, 0xf4, 0x25, 0xf8, 0x9f, - 0xf4, 0x25, 0xf8, 0x9f, 0xf4, 0x25, 0xf8, 0x9f, 0xf4, 0x25, 0xf9, 0x9f, - 0xf4, 0x25, 0xf9, 0x9f, 0xf4, 0x25, 0xf9, 0x9f, 0xf4, 0x25, 0xf9, 0x9f, - 0xf4, 0x25, 0xfa, 0xa0, 0xf6, 0x25, 0xfa, 0x9f, 0xf4, 0x25, 0xfa, 0xa0, - 0xf6, 0x25, 0xfa, 0x9f, 0xf4, 0x25, 0xfa, 0xa0, 0xf6, 0x25, 0xfb, 0x9f, - 0xf4, 0x25, 0xfb, 0xa0, 0xf6, 0x25, 0xfb, 0xa0, 0xf6, 0x25, 0xfb, 0xa0, - 0xf6, 0x25, 0xfc, 0xa0, 0xf6, 0x25, 0xfc, 0xa0, 0xf6, 0x25, 0xfc, 0xa1, - 0xf8, 0x25, 0xfc, 0xa0, 0xf6, 0x25, 0xfc, 0xa1, 0xf8, 0x25, 0xfd, 0xa0, - 0xf6, 0x25, 0xfd, 0xa1, 0xf8, 0x25, 0xfd, 0xa1, 0xf8, 0x25, 0xfd, 0xa1, - 0xf8, 0x25, 0xfe, 0xa1, 0xf8, 0x25, 0xfe, 0xa1, 0xf8, 0x25, 0xfe, 0xa2, - 0xfa, 0x25, 0xfe, 0xa2, 0xfa, 0x25, 0xfe, 0xa2, 0xfa, 0x25, 0xff, 0xa2, - 0xfa, 0x25, 0xff, 0xa2, 0xfa, 0x25, 0x03, 0x84, 0x9b, 0x26, 0x0a, 0x84, - 0x9b, 0x26, 0x0f, 0x84, 0x9b, 0x26, 0x14, 0x84, 0x9b, 0x26, 0x17, 0x84, - 0x9b, 0x26, 0x1b, 0x84, 0x9b, 0x26, 0x1e, 0x84, 0x9b, 0x26, 0x20, 0x86, - 0x9b, 0x26, 0x23, 0x84, 0x9b, 0x26, 0x25, 0x86, 0x9b, 0x26, 0x27, 0x84, - 0x9b, 0x26, 0x29, 0x86, 0x9b, 0x26, 0x2b, 0x84, 0x9b, 0x26, 0x2d, 0x86, - 0x9b, 0x26, 0x2f, 0x84, 0x9b, 0x26, 0x31, 0x86, 0x9b, 0x26, 0x32, 0x84, - 0x9b, 0x26, 0x34, 0x86, 0x9b, 0x26, 0x35, 0x84, 0x9b, 0x26, 0x37, 0x86, - 0x9b, 0x26, 0x38, 0x84, 0x9b, 0x26, 0x3a, 0x86, 0x9b, 0x26, 0x3b, 0x84, - 0x9b, 0x26, 0x3c, 0x86, 0x9b, 0x26, 0x3e, 0x84, 0x9b, 0x26, 0x3f, 0x86, - 0x9b, 0x26, 0x40, 0x84, 0x9b, 0x26, 0x42, 0x86, 0x9b, 0x26, 0x43, 0x84, - 0x9b, 0x26, 0x44, 0x86, 0x9b, 0x26, 0x45, 0x84, 0x9b, 0x26, 0x46, 0x86, - 0x9b, 0x26, 0x47, 0x84, 0x9b, 0x26, 0x48, 0x86, 0x9b, 0x26, 0x49, 0x84, - 0x9b, 0x26, 0x4a, 0x86, 0x9b, 0x26, 0x4b, 0x84, 0x9b, 0x26, 0x4c, 0x86, - 0x9b, 0x26, 0x4d, 0x84, 0x9b, 0x26, 0x4e, 0x86, 0x9b, 0x26, 0x4f, 0x84, - 0x9b, 0x26, 0x50, 0x86, 0x9b, 0x26, 0x51, 0x84, 0x9b, 0x26, 0x52, 0x86, - 0x9b, 0x26, 0x53, 0x84, 0x9b, 0x26, 0x54, 0x86, 0x9b, 0x26, 0x55, 0x84, - 0x9b, 0x26, 0x56, 0x86, 0x9b, 0x26, 0x57, 0x84, 0x9b, 0x26, 0x58, 0x86, - 0x9b, 0x26, 0x58, 0x84, 0x9b, 0x26, 0x59, 0x86, 0x9b, 0x26, 0x5a, 0x84, - 0x9b, 0x26, 0x5b, 0x86, 0x9b, 0x26, 0x5c, 0x84, 0x9b, 0x26, 0x5d, 0x86, - 0x9b, 0x26, 0x5d, 0x84, 0x9b, 0x26, 0x5e, 0x86, 0x9b, 0x26, 0x5f, 0x84, - 0x9b, 0x26, 0x60, 0x86, 0x9b, 0x26, 0x60, 0x84, 0x9b, 0x26, 0x61, 0x86, - 0x9b, 0x26, 0x62, 0x84, 0x9b, 0x26, 0x63, 0x86, 0x9b, 0x26, 0x63, 0x84, - 0x9b, 0x26, 0x64, 0x86, 0x9b, 0x26, 0x65, 0x84, 0x9b, 0x26, 0x66, 0x86, - 0x9b, 0x26, 0x66, 0x84, 0x9b, 0x26, 0x67, 0x86, 0x9b, 0x26, 0x68, 0x84, - 0x9b, 0x26, 0x68, 0x86, 0x9b, 0x26, 0x69, 0x84, 0x9b, 0x26, 0x6a, 0x86, - 0x9b, 0x26, 0x6a, 0x84, 0x9b, 0x26, 0x6b, 0x86, 0x9b, 0x26, 0x6c, 0x84, - 0x9b, 0x26, 0x6c, 0x86, 0x9b, 0x26, 0x6d, 0x84, 0x9b, 0x26, 0x6e, 0x86, - 0x9b, 0x26, 0x6e, 0x84, 0x9b, 0x26, 0x6f, 0x84, 0x9c, 0x26, 0x70, 0x84, - 0x9b, 0x26, 0x70, 0x84, 0x9c, 0x26, 0x71, 0x84, 0x9b, 0x26, 0x72, 0x84, - 0x9c, 0x26, 0x72, 0x84, 0x9b, 0x26, 0x73, 0x84, 0x9c, 0x26, 0x73, 0x84, - 0x9b, 0x26, 0x74, 0x84, 0x9c, 0x26, 0x75, 0x84, 0x9b, 0x26, 0x75, 0x84, - 0x9c, 0x26, 0x76, 0x84, 0x9b, 0x26, 0x76, 0x84, 0x9c, 0x26, 0x77, 0x84, - 0x9b, 0x26, 0x78, 0x84, 0x9c, 0x26, 0x78, 0x84, 0x9b, 0x26, 0x79, 0x84, - 0x9c, 0x26, 0x79, 0x84, 0x9b, 0x26, 0x7a, 0x84, 0x9c, 0x26, 0x7a, 0x84, - 0x9b, 0x26, 0x7b, 0x84, 0x9c, 0x26, 0x7c, 0x84, 0x9b, 0x26, 0x7c, 0x84, - 0x9c, 0x26, 0x7d, 0x84, 0x9b, 0x26, 0x7d, 0x84, 0x9c, 0x26, 0x7e, 0x84, - 0x9b, 0x26, 0x7e, 0x84, 0x9c, 0x26, 0x7f, 0x84, 0x9b, 0x26, 0x7f, 0x84, - 0x9c, 0x26, 0x80, 0x84, 0x9b, 0x26, 0x81, 0x84, 0x9c, 0x26, 0x81, 0x84, - 0x9b, 0x26, 0x82, 0x84, 0x9c, 0x26, 0x82, 0x84, 0x9b, 0x26, 0x83, 0x84, - 0x9c, 0x26, 0x83, 0x84, 0x9b, 0x26, 0x84, 0x84, 0x9c, 0x26, 0x84, 0x84, - 0x9b, 0x26, 0x85, 0x84, 0x9c, 0x26, 0x85, 0x84, 0x9b, 0x26, 0x86, 0x84, - 0x9c, 0x26, 0x86, 0x84, 0x9b, 0x26, 0x87, 0x84, 0x9c, 0x26, 0x87, 0x84, - 0x9b, 0x26, 0x88, 0x84, 0x9c, 0x26, 0x88, 0x84, 0x9b, 0x26, 0x89, 0x84, - 0x9c, 0x26, 0x89, 0x84, 0x9b, 0x26, 0x8a, 0x84, 0x9c, 0x26, 0x8a, 0x84, - 0x9b, 0x26, 0x8b, 0x84, 0x9c, 0x26, 0x8b, 0x84, 0x9b, 0x26, 0x8c, 0x84, - 0x9c, 0x26, 0x8c, 0x84, 0x9b, 0x26, 0x8d, 0x84, 0x9c, 0x26, 0x8d, 0x84, - 0x9b, 0x26, 0x8e, 0x84, 0x9c, 0x26, 0x8e, 0x84, 0x9b, 0x26, 0x8e, 0x84, - 0x9c, 0x26, 0x8f, 0x84, 0x9b, 0x26, 0x8f, 0x84, 0x9c, 0x26, 0x90, 0x84, - 0x9b, 0x26, 0x90, 0x84, 0x9c, 0x26, 0x91, 0x84, 0x9b, 0x26, 0x91, 0x84, - 0x9c, 0x26, 0x92, 0x84, 0x9b, 0x26, 0x92, 0x84, 0x9c, 0x26, 0x93, 0x84, - 0x9b, 0x26, 0x93, 0x84, 0x9c, 0x26, 0x94, 0x84, 0x9b, 0x26, 0x94, 0x84, - 0x9c, 0x26, 0x94, 0x84, 0x9b, 0x26, 0x95, 0x84, 0x9c, 0x26, 0x95, 0x84, - 0x9b, 0x26, 0x96, 0x84, 0x9c, 0x26, 0x96, 0x84, 0x9b, 0x26, 0x97, 0x84, - 0x9c, 0x26, 0x97, 0x84, 0x9b, 0x26, 0x98, 0x84, 0x9c, 0x26, 0x98, 0x84, - 0x9b, 0x26, 0x98, 0x84, 0x9c, 0x26, 0x99, 0x84, 0x9b, 0x26, 0x99, 0x84, - 0x9c, 0x26, 0x9a, 0x84, 0x9b, 0x26, 0x9a, 0x84, 0x9c, 0x26, 0x9a, 0x84, - 0x9b, 0x26, 0x9b, 0x84, 0x9c, 0x26, 0x9b, 0x84, 0x9b, 0x26, 0x9c, 0x84, - 0x9c, 0x26, 0x9c, 0x84, 0x9c, 0x26, 0x9d, 0x84, 0x9d, 0x26, 0x9d, 0x84, - 0x9d, 0x26, 0x9d, 0x84, 0x9d, 0x26, 0x9e, 0x84, 0x9e, 0x26, 0x9e, 0x84, - 0x9e, 0x26, 0x9f, 0x84, 0x9f, 0x26, 0x9f, 0x84, 0x9e, 0x26, 0x9f, 0x84, - 0x9f, 0x26, 0xa0, 0x84, 0x9e, 0x26, 0xa0, 0x84, 0x9f, 0x26, 0xa1, 0x84, - 0x9e, 0x26, 0xa1, 0x84, 0x9f, 0x26, 0xa1, 0x84, 0x9e, 0x26, 0xa2, 0x84, - 0x9f, 0x26, 0xa2, 0x84, 0x9e, 0x26, 0xa3, 0x84, 0x9f, 0x26, 0xa3, 0x84, - 0x9e, 0x26, 0xa3, 0x84, 0x9f, 0x26, 0xa4, 0x85, 0xa2, 0x26, 0xa4, 0x84, - 0x9f, 0x26, 0xa5, 0x85, 0xa2, 0x26, 0xa5, 0x85, 0xa2, 0x26, 0xa5, 0x85, - 0xa2, 0x26, 0xa6, 0x85, 0xa2, 0x26, 0xa6, 0x85, 0xa2, 0x26, 0xa6, 0x85, - 0xa2, 0x26, 0xa7, 0x85, 0xa2, 0x26, 0xa7, 0x86, 0xa6, 0x26, 0xa8, 0x86, - 0xa6, 0x26, 0xa8, 0x86, 0xa6, 0x26, 0xa8, 0x86, 0xa6, 0x26, 0xa9, 0x86, - 0xa6, 0x26, 0xa9, 0x86, 0xa6, 0x26, 0xaa, 0x86, 0xa6, 0x26, 0xaa, 0x86, - 0xa6, 0x26, 0xaa, 0x86, 0xa6, 0x26, 0xab, 0x86, 0xa6, 0x26, 0xab, 0x86, - 0xa6, 0x26, 0xab, 0x86, 0xa6, 0x26, 0xac, 0x87, 0xaa, 0x26, 0xac, 0x87, - 0xa9, 0x26, 0xac, 0x87, 0xaa, 0x26, 0xad, 0x87, 0xa9, 0x26, 0xad, 0x87, - 0xaa, 0x26, 0xae, 0x87, 0xa9, 0x26, 0xae, 0x87, 0xaa, 0x26, 0xae, 0x87, - 0xa9, 0x26, 0xaf, 0x87, 0xaa, 0x26, 0xaf, 0x88, 0xad, 0x26, 0xaf, 0x88, - 0xad, 0x26, 0xb0, 0x88, 0xad, 0x26, 0xb0, 0x88, 0xad, 0x26, 0xb0, 0x88, - 0xad, 0x26, 0xb1, 0x88, 0xad, 0x26, 0xb1, 0x88, 0xad, 0x26, 0xb2, 0x88, - 0xad, 0x26, 0xb2, 0x88, 0xad, 0x26, 0xb2, 0x88, 0xad, 0x26, 0xb3, 0x89, - 0xb0, 0x26, 0xb3, 0x88, 0xad, 0x26, 0xb3, 0x89, 0xb0, 0x26, 0xb4, 0x89, - 0xb0, 0x26, 0xb4, 0x89, 0xb0, 0x26, 0xb4, 0x89, 0xb2, 0x26, 0xb5, 0x89, - 0xb0, 0x26, 0xb5, 0x89, 0xb2, 0x26, 0xb5, 0x89, 0xb0, 0x26, 0xb6, 0x89, - 0xb2, 0x26, 0xb6, 0x89, 0xb2, 0x26, 0xb6, 0x89, 0xb2, 0x26, 0xb7, 0x89, - 0xb2, 0x26, 0xb7, 0x89, 0xb2, 0x26, 0xb7, 0x8a, 0xb3, 0x26, 0xb8, 0x8a, - 0xb4, 0x26, 0xb8, 0x8a, 0xb3, 0x26, 0xb8, 0x8a, 0xb4, 0x26, 0xb9, 0x8a, - 0xb3, 0x26, 0xb9, 0x8a, 0xb4, 0x26, 0xb9, 0x8b, 0xb7, 0x26, 0xba, 0x8b, - 0xb7, 0x26, 0xba, 0x8b, 0xb7, 0x26, 0xba, 0x8b, 0xb7, 0x26, 0xbb, 0x8b, - 0xb7, 0x26, 0xbb, 0x8b, 0xb7, 0x26, 0xbb, 0x8b, 0xb7, 0x26, 0xbc, 0x8b, - 0xb7, 0x26, 0xbc, 0x8b, 0xb7, 0x26, 0xbc, 0x8b, 0xb7, 0x26, 0xbd, 0x8c, - 0xba, 0x26, 0xbd, 0x8b, 0xb7, 0x26, 0xbd, 0x8c, 0xba, 0x26, 0xbe, 0x8c, - 0xba, 0x26, 0xbe, 0x8c, 0xba, 0x26, 0xbe, 0x8c, 0xba, 0x26, 0xbf, 0x8c, - 0xba, 0x26, 0xbf, 0x8c, 0xba, 0x26, 0xbf, 0x8c, 0xba, 0x26, 0xc0, 0x8d, - 0xbd, 0x26, 0xc0, 0x8c, 0xba, 0x26, 0xc0, 0x8d, 0xbd, 0x26, 0xc1, 0x8d, - 0xbd, 0x26, 0xc1, 0x8d, 0xbd, 0x26, 0xc1, 0x8d, 0xbd, 0x26, 0xc1, 0x8d, - 0xbd, 0x26, 0xc2, 0x8d, 0xbd, 0x26, 0xc2, 0x8d, 0xbd, 0x26, 0xc2, 0x8e, - 0xc0, 0x26, 0xc3, 0x8e, 0xc0, 0x26, 0xc3, 0x8e, 0xc0, 0x26, 0xc3, 0x8e, - 0xc0, 0x26, 0xc4, 0x8e, 0xc0, 0x26, 0xc4, 0x8e, 0xc0, 0x26, 0xc4, 0x8e, - 0xc0, 0x26, 0xc5, 0x8e, 0xc0, 0x26, 0xc5, 0x8e, 0xc0, 0x26, 0xc5, 0x8e, - 0xc0, 0x26, 0xc6, 0x8e, 0xc3, 0x26, 0xc6, 0x8e, 0xc0, 0x26, 0xc6, 0x8e, - 0xc3, 0x26, 0xc6, 0x8e, 0xc3, 0x26, 0xc7, 0x8e, 0xc3, 0x26, 0xc7, 0x8e, - 0xc3, 0x26, 0xc7, 0x8e, 0xc3, 0x26, 0xc8, 0x8e, 0xc3, 0x26, 0xc8, 0x8e, - 0xc3, 0x26, 0xc8, 0x8f, 0xc6, 0x26, 0xc9, 0x8e, 0xc3, 0x26, 0xc9, 0x8f, - 0xc6, 0x26, 0xc9, 0x8e, 0xc3, 0x26, 0xc9, 0x8f, 0xc6, 0x26, 0xca, 0x8f, - 0xc6, 0x26, 0xca, 0x8f, 0xc6, 0x26, 0xca, 0x8f, 0xc6, 0x26, 0xcb, 0x8f, - 0xc6, 0x26, 0xcb, 0x8f, 0xc6, 0x26, 0xcb, 0x8f, 0xc6, 0x26, 0xcc, 0x90, - 0xc9, 0x26, 0xcc, 0x90, 0xc9, 0x26, 0xcc, 0x90, 0xc9, 0x26, 0xcc, 0x90, - 0xc9, 0x26, 0xcd, 0x90, 0xc9, 0x26, 0xcd, 0x90, 0xc9, 0x26, 0xcd, 0x90, - 0xc9, 0x26, 0xce, 0x90, 0xc9, 0x26, 0xce, 0x90, 0xc9, 0x26, 0xce, 0x90, - 0xc9, 0x26, 0xce, 0x91, 0xcc, 0x26, 0xcf, 0x90, 0xc9, 0x26, 0xcf, 0x91, - 0xcc, 0x26, 0xcf, 0x91, 0xcb, 0x26, 0xd0, 0x91, 0xcc, 0x26, 0xd0, 0x91, - 0xcb, 0x26, 0xd0, 0x91, 0xcc, 0x26, 0xd0, 0x91, 0xcb, 0x26, 0xd1, 0x91, - 0xcc, 0x26, 0xd1, 0x92, 0xce, 0x26, 0xd1, 0x92, 0xce, 0x26, 0xd2, 0x92, - 0xce, 0x26, 0xd2, 0x92, 0xce, 0x26, 0xd2, 0x92, 0xce, 0x26, 0xd2, 0x92, - 0xce, 0x26, 0xd3, 0x92, 0xce, 0x26, 0xd3, 0x92, 0xce, 0x26, 0xd3, 0x92, - 0xce, 0x26, 0xd4, 0x92, 0xce, 0x26, 0xd4, 0x93, 0xd1, 0x26, 0xd4, 0x92, - 0xce, 0x26, 0xd4, 0x93, 0xd1, 0x26, 0xd5, 0x92, 0xce, 0x26, 0xd5, 0x93, - 0xd1, 0x26, 0xd5, 0x93, 0xd1, 0x26, 0xd6, 0x93, 0xd1, 0x26, 0xd6, 0x93, - 0xd1, 0x26, 0xd6, 0x93, 0xd1, 0x26, 0xd6, 0x93, 0xd1, 0x26, 0xd7, 0x93, - 0xd1, 0x26, 0xd7, 0x94, 0xd4, 0x26, 0xd7, 0x93, 0xd1, 0x26, 0xd7, 0x94, - 0xd4, 0x26, 0xd8, 0x94, 0xd3, 0x26, 0xd8, 0x94, 0xd4, 0x26, 0xd8, 0x94, - 0xd3, 0x26, 0xd9, 0x94, 0xd4, 0x26, 0xd9, 0x94, 0xd3, 0x26, 0xd9, 0x94, - 0xd4, 0x26, 0xd9, 0x95, 0xd6, 0x26, 0xda, 0x95, 0xd6, 0x26, 0xda, 0x95, - 0xd6, 0x26, 0xda, 0x95, 0xd6, 0x26, 0xda, 0x95, 0xd6, 0x26, 0xdb, 0x95, - 0xd6, 0x26, 0xdb, 0x95, 0xd6, 0x26, 0xdb, 0x95, 0xd6, 0x26, 0xdb, 0x95, - 0xd6, 0x26, 0xdc, 0x95, 0xd6, 0x26, 0xdc, 0x96, 0xd9, 0x26, 0xdc, 0x95, - 0xd6, 0x26, 0xdd, 0x96, 0xd9, 0x26, 0xdd, 0x96, 0xd9, 0x26, 0xdd, 0x96, - 0xd9, 0x26, 0xdd, 0x96, 0xd9, 0x26, 0xde, 0x96, 0xd9, 0x26, 0xde, 0x96, - 0xd9, 0x26, 0xde, 0x96, 0xd9, 0x26, 0xde, 0x97, 0xdb, 0x26, 0xdf, 0x96, - 0xd9, 0x26, 0xdf, 0x97, 0xdb, 0x26, 0xdf, 0x96, 0xd9, 0x26, 0xdf, 0x97, - 0xdb, 0x26, 0xe0, 0x97, 0xdb, 0x26, 0xe0, 0x97, 0xdb, 0x26, 0xe0, 0x97, - 0xdb, 0x26, 0xe1, 0x97, 0xdb, 0x26, 0xe1, 0x98, 0xde, 0x26, 0xe1, 0x98, - 0xde, 0x26, 0xe1, 0x98, 0xde, 0x26, 0xe2, 0x98, 0xde, 0x26, 0xe2, 0x98, - 0xde, 0x26, 0xe2, 0x98, 0xde, 0x26, 0xe2, 0x98, 0xde, 0x26, 0xe3, 0x98, - 0xde, 0x26, 0xe3, 0x98, 0xde, 0x26, 0xe3, 0x98, 0xde, 0x26, 0xe3, 0x98, - 0xe0, 0x26, 0xe4, 0x98, 0xde, 0x26, 0xe4, 0x98, 0xe0, 0x26, 0xe4, 0x98, - 0xde, 0x26, 0xe4, 0x98, 0xe0, 0x26, 0xe5, 0x98, 0xe0, 0x26, 0xe5, 0x98, - 0xe0, 0x26, 0xe5, 0x98, 0xe0, 0x26, 0xe5, 0x98, 0xe0, 0x26, 0xe6, 0x98, - 0xe0, 0x26, 0xe6, 0x98, 0xe0, 0x26, 0xe6, 0x99, 0xe3, 0x26, 0xe6, 0x98, - 0xe0, 0x26, 0xe7, 0x99, 0xe3, 0x26, 0xe7, 0x99, 0xe2, 0x26, 0xe7, 0x99, - 0xe3, 0x26, 0xe7, 0x99, 0xe2, 0x26, 0xe8, 0x99, 0xe3, 0x26, 0xe8, 0x99, - 0xe2, 0x26, 0xe8, 0x99, 0xe3, 0x26, 0xe8, 0x9a, 0xe5, 0x26, 0xe9, 0x9a, - 0xe5, 0x26, 0xe9, 0x9a, 0xe5, 0x26, 0xe9, 0x9a, 0xe5, 0x26, 0xe9, 0x9a, - 0xe5, 0x26, 0xea, 0x9a, 0xe5, 0x26, 0xea, 0x9a, 0xe5, 0x26, 0xea, 0x9a, - 0xe5, 0x26, 0xea, 0x9a, 0xe5, 0x26, 0xeb, 0x9a, 0xe5, 0x26, 0xeb, 0x9b, - 0xe7, 0x26, 0xeb, 0x9a, 0xe5, 0x26, 0xeb, 0x9b, 0xe7, 0x26, 0xec, 0x9a, - 0xe5, 0x26, 0xec, 0x9b, 0xe7, 0x26, 0xec, 0x9b, 0xe7, 0x26, 0xec, 0x9b, - 0xe7, 0x26, 0xec, 0x9b, 0xe7, 0x26, 0xed, 0x9b, 0xe7, 0x26, 0xed, 0x9c, - 0xea, 0x26, 0xed, 0x9c, 0xea, 0x26, 0xed, 0x9c, 0xea, 0x26, 0xee, 0x9c, - 0xea, 0x26, 0xee, 0x9c, 0xea, 0x26, 0xee, 0x9c, 0xea, 0x26, 0xee, 0x9c, - 0xea, 0x26, 0xef, 0x9c, 0xea, 0x26, 0xef, 0x9c, 0xea, 0x26, 0xef, 0x9c, - 0xea, 0x26, 0xef, 0x9c, 0xea, 0x26, 0xf0, 0x9c, 0xea, 0x26, 0xf0, 0x9d, - 0xec, 0x26, 0xf0, 0x9c, 0xea, 0x26, 0xf0, 0x9d, 0xec, 0x26, 0xf1, 0x9d, - 0xec, 0x26, 0xf1, 0x9d, 0xec, 0x26, 0xf1, 0x9d, 0xec, 0x26, 0xf1, 0x9d, - 0xec, 0x26, 0xf2, 0x9d, 0xec, 0x26, 0xf2, 0x9d, 0xec, 0x26, 0xf2, 0x9d, - 0xee, 0x26, 0xf2, 0x9d, 0xec, 0x26, 0xf2, 0x9d, 0xee, 0x26, 0xf3, 0x9d, - 0xec, 0x26, 0xf3, 0x9d, 0xee, 0x26, 0xf3, 0x9d, 0xee, 0x26, 0xf3, 0x9d, - 0xee, 0x26, 0xf4, 0x9d, 0xee, 0x26, 0xf4, 0x9d, 0xee, 0x26, 0xf4, 0x9e, - 0xf0, 0x26, 0xf4, 0x9e, 0xf1, 0x26, 0xf5, 0x9e, 0xf0, 0x26, 0xf5, 0x9e, - 0xf1, 0x26, 0xf5, 0x9e, 0xf0, 0x26, 0xf5, 0x9e, 0xf1, 0x26, 0xf5, 0x9e, - 0xf0, 0x26, 0xf6, 0x9e, 0xf1, 0x26, 0xf6, 0x9e, 0xf0, 0x26, 0xf6, 0x9e, - 0xf1, 0x26, 0xf6, 0x9f, 0xf3, 0x26, 0xf7, 0x9e, 0xf1, 0x26, 0xf7, 0x9f, - 0xf3, 0x26, 0xf7, 0x9e, 0xf1, 0x26, 0xf7, 0x9f, 0xf3, 0x26, 0xf8, 0x9f, - 0xf2, 0x26, 0xf8, 0x9f, 0xf3, 0x26, 0xf8, 0x9f, 0xf2, 0x26, 0xf8, 0x9f, - 0xf3, 0x26, 0xf8, 0xa0, 0xf5, 0x26, 0xf9, 0x9f, 0xf3, 0x26, 0xf9, 0xa0, - 0xf5, 0x26, 0xf9, 0x9f, 0xf3, 0x26, 0xf9, 0xa0, 0xf5, 0x26, 0xfa, 0xa0, - 0xf5, 0x26, 0xfa, 0xa0, 0xf5, 0x26, 0xfa, 0xa0, 0xf5, 0x26, 0xfa, 0xa0, - 0xf5, 0x26, 0xfa, 0xa1, 0xf7, 0x26, 0xfb, 0xa1, 0xf7, 0x26, 0xfb, 0xa1, - 0xf7, 0x26, 0xfb, 0xa1, 0xf7, 0x26, 0xfb, 0xa1, 0xf7, 0x26, 0xfc, 0xa1, - 0xf7, 0x26, 0xfc, 0xa1, 0xf7, 0x26, 0xfc, 0xa1, 0xf7, 0x26, 0xfc, 0xa1, - 0xf7, 0x26, 0xfc, 0xa1, 0xf7, 0x26, 0xfd, 0xa1, 0xf7, 0x26, 0xfd, 0xa1, - 0xf7, 0x26, 0xfd, 0xa1, 0xf9, 0x26, 0xfd, 0xa1, 0xf7, 0x26, 0xfe, 0xa1, - 0xf9, 0x26, 0xfe, 0xa1, 0xf7, 0x26, 0xfe, 0xa1, 0xf9, 0x26, 0xfe, 0xa1, - 0xf9, 0x26, 0xfe, 0xa1, 0xf9, 0x26, 0xff, 0xa1, 0xf9, 0x26, 0xff, 0xa1, - 0xf9, 0x26, 0x03, 0x83, 0x9b, 0x26, 0x0a, 0x83, 0x9b, 0x26, 0x0f, 0x83, - 0x9b, 0x26, 0x14, 0x83, 0x9b, 0x26, 0x17, 0x83, 0x9b, 0x26, 0x1b, 0x83, - 0x9b, 0x26, 0x1e, 0x83, 0x9b, 0x26, 0x20, 0x86, 0x9b, 0x26, 0x23, 0x83, - 0x9b, 0x26, 0x25, 0x86, 0x9b, 0x26, 0x27, 0x83, 0x9b, 0x26, 0x29, 0x86, - 0x9b, 0x26, 0x2b, 0x83, 0x9b, 0x26, 0x2d, 0x86, 0x9b, 0x26, 0x2f, 0x83, - 0x9b, 0x26, 0x31, 0x86, 0x9b, 0x26, 0x32, 0x83, 0x9b, 0x26, 0x34, 0x86, - 0x9b, 0x26, 0x35, 0x83, 0x9b, 0x26, 0x37, 0x86, 0x9b, 0x26, 0x38, 0x83, - 0x9b, 0x26, 0x3a, 0x86, 0x9b, 0x26, 0x3b, 0x83, 0x9b, 0x26, 0x3c, 0x86, - 0x9b, 0x26, 0x3e, 0x83, 0x9b, 0x26, 0x3f, 0x86, 0x9b, 0x26, 0x40, 0x83, - 0x9b, 0x26, 0x42, 0x86, 0x9b, 0x26, 0x43, 0x83, 0x9b, 0x26, 0x44, 0x86, - 0x9b, 0x26, 0x45, 0x83, 0x9b, 0x26, 0x46, 0x86, 0x9b, 0x26, 0x47, 0x83, - 0x9b, 0x26, 0x48, 0x86, 0x9b, 0x26, 0x49, 0x83, 0x9b, 0x26, 0x4a, 0x86, - 0x9b, 0x26, 0x4b, 0x83, 0x9b, 0x26, 0x4c, 0x86, 0x9b, 0x26, 0x4d, 0x83, - 0x9b, 0x26, 0x4e, 0x86, 0x9b, 0x26, 0x4f, 0x83, 0x9b, 0x26, 0x50, 0x83, - 0x9c, 0x26, 0x51, 0x83, 0x9b, 0x26, 0x52, 0x83, 0x9c, 0x26, 0x53, 0x83, - 0x9b, 0x26, 0x54, 0x83, 0x9c, 0x26, 0x55, 0x83, 0x9b, 0x26, 0x56, 0x83, - 0x9c, 0x26, 0x57, 0x83, 0x9b, 0x26, 0x58, 0x83, 0x9c, 0x26, 0x58, 0x83, - 0x9b, 0x26, 0x59, 0x83, 0x9c, 0x26, 0x5a, 0x83, 0x9b, 0x26, 0x5b, 0x83, - 0x9c, 0x26, 0x5c, 0x83, 0x9b, 0x26, 0x5d, 0x83, 0x9c, 0x26, 0x5d, 0x83, - 0x9b, 0x26, 0x5e, 0x83, 0x9c, 0x26, 0x5f, 0x83, 0x9b, 0x26, 0x60, 0x83, - 0x9c, 0x26, 0x60, 0x83, 0x9b, 0x26, 0x61, 0x83, 0x9c, 0x26, 0x62, 0x83, - 0x9b, 0x26, 0x63, 0x83, 0x9c, 0x26, 0x63, 0x83, 0x9b, 0x26, 0x64, 0x83, - 0x9c, 0x26, 0x65, 0x83, 0x9b, 0x26, 0x66, 0x83, 0x9c, 0x26, 0x66, 0x83, - 0x9b, 0x26, 0x67, 0x83, 0x9c, 0x26, 0x68, 0x83, 0x9b, 0x26, 0x68, 0x83, - 0x9c, 0x26, 0x69, 0x83, 0x9b, 0x26, 0x6a, 0x83, 0x9c, 0x26, 0x6a, 0x83, - 0x9b, 0x26, 0x6b, 0x83, 0x9c, 0x26, 0x6c, 0x83, 0x9b, 0x26, 0x6c, 0x83, - 0x9c, 0x26, 0x6d, 0x83, 0x9b, 0x26, 0x6e, 0x83, 0x9c, 0x26, 0x6e, 0x83, - 0x9b, 0x26, 0x6f, 0x83, 0x9c, 0x26, 0x70, 0x83, 0x9b, 0x26, 0x70, 0x83, - 0x9c, 0x26, 0x71, 0x83, 0x9b, 0x26, 0x72, 0x83, 0x9c, 0x26, 0x72, 0x83, - 0x9b, 0x26, 0x73, 0x83, 0x9c, 0x26, 0x73, 0x83, 0x9b, 0x26, 0x74, 0x83, - 0x9c, 0x26, 0x75, 0x83, 0x9b, 0x26, 0x75, 0x83, 0x9c, 0x26, 0x76, 0x83, - 0x9b, 0x26, 0x76, 0x83, 0x9c, 0x26, 0x77, 0x83, 0x9b, 0x26, 0x78, 0x83, - 0x9c, 0x26, 0x78, 0x83, 0x9b, 0x26, 0x79, 0x83, 0x9c, 0x26, 0x79, 0x83, - 0x9b, 0x26, 0x7a, 0x83, 0x9c, 0x26, 0x7a, 0x83, 0x9b, 0x26, 0x7b, 0x83, - 0x9c, 0x26, 0x7c, 0x83, 0x9b, 0x26, 0x7c, 0x83, 0x9c, 0x26, 0x7d, 0x83, - 0x9b, 0x26, 0x7d, 0x83, 0x9c, 0x26, 0x7e, 0x83, 0x9b, 0x26, 0x7e, 0x83, - 0x9c, 0x26, 0x7f, 0x83, 0x9b, 0x26, 0x7f, 0x83, 0x9c, 0x26, 0x80, 0x83, - 0x9b, 0x26, 0x81, 0x83, 0x9c, 0x26, 0x81, 0x83, 0x9b, 0x26, 0x82, 0x83, - 0x9c, 0x26, 0x82, 0x83, 0x9b, 0x26, 0x83, 0x83, 0x9c, 0x26, 0x83, 0x83, - 0x9b, 0x26, 0x84, 0x83, 0x9c, 0x26, 0x84, 0x83, 0x9b, 0x26, 0x85, 0x83, - 0x9c, 0x26, 0x85, 0x83, 0x9b, 0x26, 0x86, 0x83, 0x9c, 0x26, 0x86, 0x83, - 0x9b, 0x26, 0x87, 0x83, 0x9c, 0x26, 0x87, 0x83, 0x9b, 0x26, 0x88, 0x83, - 0x9c, 0x26, 0x88, 0x83, 0x9b, 0x26, 0x89, 0x83, 0x9c, 0x26, 0x89, 0x83, - 0x9b, 0x26, 0x8a, 0x83, 0x9c, 0x26, 0x8a, 0x83, 0x9b, 0x26, 0x8b, 0x83, - 0x9c, 0x26, 0x8b, 0x83, 0x9b, 0x26, 0x8c, 0x83, 0x9c, 0x26, 0x8c, 0x83, - 0x9b, 0x26, 0x8d, 0x83, 0x9c, 0x26, 0x8d, 0x83, 0x9b, 0x26, 0x8e, 0x83, - 0x9c, 0x26, 0x8e, 0x83, 0x9b, 0x26, 0x8e, 0x83, 0x9c, 0x26, 0x8f, 0x83, - 0x9b, 0x26, 0x8f, 0x83, 0x9c, 0x26, 0x90, 0x83, 0x9b, 0x26, 0x90, 0x83, - 0x9c, 0x26, 0x91, 0x83, 0x9b, 0x26, 0x91, 0x83, 0x9c, 0x26, 0x92, 0x83, - 0x9b, 0x26, 0x92, 0x83, 0x9c, 0x26, 0x93, 0x83, 0x9b, 0x26, 0x93, 0x83, - 0x9c, 0x26, 0x94, 0x83, 0x9b, 0x26, 0x94, 0x83, 0x9c, 0x26, 0x94, 0x83, - 0x9b, 0x26, 0x95, 0x83, 0x9c, 0x26, 0x95, 0x83, 0x9b, 0x26, 0x96, 0x83, - 0x9c, 0x26, 0x96, 0x83, 0x9b, 0x26, 0x97, 0x83, 0x9c, 0x26, 0x97, 0x83, - 0x9b, 0x26, 0x98, 0x83, 0x9c, 0x26, 0x98, 0x83, 0x9b, 0x26, 0x98, 0x83, - 0x9c, 0x26, 0x99, 0x83, 0x9b, 0x26, 0x99, 0x83, 0x9c, 0x26, 0x9a, 0x83, - 0x9b, 0x26, 0x9a, 0x83, 0x9c, 0x26, 0x9a, 0x83, 0x9b, 0x26, 0x9b, 0x83, - 0x9c, 0x26, 0x9b, 0x83, 0x9b, 0x26, 0x9c, 0x83, 0x9c, 0x26, 0x9c, 0x83, - 0x9c, 0x26, 0x9d, 0x83, 0x9d, 0x26, 0x9d, 0x83, 0x9c, 0x26, 0x9d, 0x83, - 0x9d, 0x26, 0x9e, 0x83, 0x9c, 0x26, 0x9e, 0x83, 0x9d, 0x26, 0x9f, 0x83, - 0x9c, 0x26, 0x9f, 0x83, 0x9d, 0x26, 0x9f, 0x83, 0x9c, 0x26, 0xa0, 0x83, - 0x9d, 0x26, 0xa0, 0x83, 0x9c, 0x26, 0xa1, 0x83, 0x9d, 0x26, 0xa1, 0x83, - 0x9c, 0x26, 0xa1, 0x83, 0x9d, 0x26, 0xa2, 0x84, 0xa0, 0x26, 0xa2, 0x84, - 0xa1, 0x26, 0xa3, 0x84, 0xa0, 0x26, 0xa3, 0x84, 0xa1, 0x26, 0xa3, 0x84, - 0xa0, 0x26, 0xa4, 0x84, 0xa1, 0x26, 0xa4, 0x84, 0xa0, 0x26, 0xa5, 0x84, - 0xa1, 0x26, 0xa5, 0x84, 0xa0, 0x26, 0xa5, 0x84, 0xa1, 0x26, 0xa6, 0x85, - 0xa4, 0x26, 0xa6, 0x84, 0xa1, 0x26, 0xa6, 0x85, 0xa4, 0x26, 0xa7, 0x85, - 0xa4, 0x26, 0xa7, 0x85, 0xa4, 0x26, 0xa8, 0x85, 0xa4, 0x26, 0xa8, 0x85, - 0xa4, 0x26, 0xa8, 0x85, 0xa4, 0x26, 0xa9, 0x85, 0xa4, 0x26, 0xa9, 0x86, - 0xa8, 0x26, 0xaa, 0x85, 0xa4, 0x26, 0xaa, 0x86, 0xa8, 0x26, 0xaa, 0x86, - 0xa7, 0x26, 0xab, 0x86, 0xa8, 0x26, 0xab, 0x86, 0xa7, 0x26, 0xab, 0x86, - 0xa8, 0x26, 0xac, 0x86, 0xa7, 0x26, 0xac, 0x86, 0xa8, 0x26, 0xac, 0x86, - 0xa7, 0x26, 0xad, 0x86, 0xa8, 0x26, 0xad, 0x87, 0xab, 0x26, 0xae, 0x87, - 0xab, 0x26, 0xae, 0x87, 0xab, 0x26, 0xae, 0x87, 0xab, 0x26, 0xaf, 0x87, - 0xab, 0x26, 0xaf, 0x87, 0xab, 0x26, 0xaf, 0x87, 0xab, 0x26, 0xb0, 0x87, - 0xab, 0x26, 0xb0, 0x87, 0xab, 0x26, 0xb0, 0x87, 0xab, 0x26, 0xb1, 0x88, - 0xaf, 0x26, 0xb1, 0x87, 0xab, 0x26, 0xb2, 0x88, 0xaf, 0x26, 0xb2, 0x88, - 0xae, 0x26, 0xb2, 0x88, 0xaf, 0x26, 0xb3, 0x88, 0xae, 0x26, 0xb3, 0x88, - 0xaf, 0x26, 0xb3, 0x88, 0xae, 0x26, 0xb4, 0x88, 0xaf, 0x26, 0xb4, 0x89, - 0xb2, 0x26, 0xb4, 0x89, 0xb2, 0x26, 0xb5, 0x89, 0xb2, 0x26, 0xb5, 0x89, - 0xb2, 0x26, 0xb5, 0x89, 0xb2, 0x26, 0xb6, 0x89, 0xb2, 0x26, 0xb6, 0x89, - 0xb2, 0x26, 0xb6, 0x89, 0xb2, 0x26, 0xb7, 0x89, 0xb2, 0x26, 0xb7, 0x89, - 0xb2, 0x26, 0xb7, 0x8a, 0xb5, 0x26, 0xb8, 0x89, 0xb2, 0x26, 0xb8, 0x8a, - 0xb5, 0x26, 0xb8, 0x8a, 0xb5, 0x26, 0xb9, 0x8a, 0xb5, 0x26, 0xb9, 0x8a, - 0xb5, 0x26, 0xb9, 0x8a, 0xb5, 0x26, 0xba, 0x8a, 0xb5, 0x26, 0xba, 0x8a, - 0xb5, 0x26, 0xba, 0x8a, 0xb5, 0x26, 0xbb, 0x8a, 0xb5, 0x26, 0xbb, 0x8b, - 0xb8, 0x26, 0xbb, 0x8b, 0xb8, 0x26, 0xbc, 0x8b, 0xb8, 0x26, 0xbc, 0x8b, - 0xb8, 0x26, 0xbc, 0x8b, 0xb8, 0x26, 0xbd, 0x8b, 0xb8, 0x26, 0xbd, 0x8b, - 0xb8, 0x26, 0xbd, 0x8b, 0xb8, 0x26, 0xbe, 0x8b, 0xb8, 0x26, 0xbe, 0x8c, - 0xbb, 0x26, 0xbe, 0x8c, 0xbc, 0x26, 0xbf, 0x8c, 0xbb, 0x26, 0xbf, 0x8c, - 0xbc, 0x26, 0xbf, 0x8c, 0xbb, 0x26, 0xc0, 0x8c, 0xbc, 0x26, 0xc0, 0x8c, - 0xbb, 0x26, 0xc0, 0x8c, 0xbc, 0x26, 0xc1, 0x8c, 0xbb, 0x26, 0xc1, 0x8c, - 0xbc, 0x26, 0xc1, 0x8d, 0xbf, 0x26, 0xc1, 0x8c, 0xbc, 0x26, 0xc2, 0x8d, - 0xbf, 0x26, 0xc2, 0x8d, 0xbe, 0x26, 0xc2, 0x8d, 0xbf, 0x26, 0xc3, 0x8d, - 0xbe, 0x26, 0xc3, 0x8d, 0xbf, 0x26, 0xc3, 0x8d, 0xbe, 0x26, 0xc4, 0x8d, - 0xbf, 0x26, 0xc4, 0x8e, 0xc1, 0x26, 0xc4, 0x8d, 0xbf, 0x26, 0xc5, 0x8e, - 0xc1, 0x26, 0xc5, 0x8e, 0xc1, 0x26, 0xc5, 0x8e, 0xc1, 0x26, 0xc6, 0x8e, - 0xc1, 0x26, 0xc6, 0x8e, 0xc1, 0x26, 0xc6, 0x8e, 0xc1, 0x26, 0xc6, 0x8e, - 0xc1, 0x26, 0xc7, 0x8f, 0xc4, 0x26, 0xc7, 0x8f, 0xc5, 0x26, 0xc7, 0x8f, - 0xc4, 0x26, 0xc8, 0x8f, 0xc5, 0x26, 0xc8, 0x8f, 0xc4, 0x26, 0xc8, 0x8f, - 0xc5, 0x26, 0xc9, 0x8f, 0xc4, 0x26, 0xc9, 0x8f, 0xc5, 0x26, 0xc9, 0x8f, - 0xc4, 0x26, 0xc9, 0x8f, 0xc5, 0x26, 0xca, 0x90, 0xc7, 0x26, 0xca, 0x8f, - 0xc5, 0x26, 0xca, 0x90, 0xc7, 0x26, 0xcb, 0x8f, 0xc5, 0x26, 0xcb, 0x90, - 0xc7, 0x26, 0xcb, 0x90, 0xc7, 0x26, 0xcc, 0x90, 0xc7, 0x26, 0xcc, 0x90, - 0xc7, 0x26, 0xcc, 0x90, 0xc7, 0x26, 0xcc, 0x90, 0xc7, 0x26, 0xcd, 0x90, - 0xc7, 0x26, 0xcd, 0x91, 0xca, 0x26, 0xcd, 0x90, 0xc7, 0x26, 0xce, 0x91, - 0xca, 0x26, 0xce, 0x91, 0xca, 0x26, 0xce, 0x91, 0xca, 0x26, 0xce, 0x91, - 0xca, 0x26, 0xcf, 0x91, 0xca, 0x26, 0xcf, 0x91, 0xca, 0x26, 0xcf, 0x91, - 0xca, 0x26, 0xd0, 0x92, 0xcd, 0x26, 0xd0, 0x92, 0xcd, 0x26, 0xd0, 0x92, - 0xcd, 0x26, 0xd0, 0x92, 0xcd, 0x26, 0xd1, 0x92, 0xcd, 0x26, 0xd1, 0x92, - 0xcd, 0x26, 0xd1, 0x92, 0xcd, 0x26, 0xd2, 0x92, 0xcd, 0x26, 0xd2, 0x92, - 0xcd, 0x26, 0xd2, 0x92, 0xcd, 0x26, 0xd2, 0x93, 0xd0, 0x26, 0xd3, 0x92, - 0xcd, 0x26, 0xd3, 0x93, 0xd0, 0x26, 0xd3, 0x93, 0xcf, 0x26, 0xd4, 0x93, - 0xd0, 0x26, 0xd4, 0x93, 0xcf, 0x26, 0xd4, 0x93, 0xd0, 0x26, 0xd4, 0x93, - 0xcf, 0x26, 0xd5, 0x93, 0xd0, 0x26, 0xd5, 0x94, 0xd2, 0x26, 0xd5, 0x94, - 0xd2, 0x26, 0xd6, 0x94, 0xd2, 0x26, 0xd6, 0x94, 0xd2, 0x26, 0xd6, 0x94, - 0xd2, 0x26, 0xd6, 0x94, 0xd2, 0x26, 0xd7, 0x94, 0xd2, 0x26, 0xd7, 0x94, - 0xd2, 0x26, 0xd7, 0x94, 0xd2, 0x26, 0xd7, 0x94, 0xd2, 0x26, 0xd8, 0x94, - 0xd2, 0x26, 0xd8, 0x94, 0xd2, 0x26, 0xd8, 0x94, 0xd5, 0x26, 0xd9, 0x94, - 0xd2, 0x26, 0xd9, 0x94, 0xd5, 0x26, 0xd9, 0x94, 0xd5, 0x26, 0xd9, 0x94, - 0xd5, 0x26, 0xda, 0x94, 0xd5, 0x26, 0xda, 0x94, 0xd5, 0x26, 0xda, 0x94, - 0xd5, 0x26, 0xda, 0x94, 0xd5, 0x26, 0xdb, 0x95, 0xd7, 0x26, 0xdb, 0x94, - 0xd5, 0x26, 0xdb, 0x95, 0xd7, 0x26, 0xdb, 0x95, 0xd7, 0x26, 0xdc, 0x95, - 0xd7, 0x26, 0xdc, 0x95, 0xd7, 0x26, 0xdc, 0x95, 0xd7, 0x26, 0xdd, 0x95, - 0xd7, 0x26, 0xdd, 0x95, 0xd7, 0x26, 0xdd, 0x96, 0xda, 0x26, 0xdd, 0x96, - 0xda, 0x26, 0xde, 0x96, 0xda, 0x26, 0xde, 0x96, 0xda, 0x26, 0xde, 0x96, - 0xda, 0x26, 0xde, 0x96, 0xda, 0x26, 0xdf, 0x96, 0xda, 0x26, 0xdf, 0x96, - 0xda, 0x26, 0xdf, 0x96, 0xda, 0x26, 0xdf, 0x96, 0xda, 0x26, 0xe0, 0x97, - 0xdd, 0x26, 0xe0, 0x96, 0xda, 0x26, 0xe0, 0x97, 0xdd, 0x26, 0xe1, 0x96, - 0xda, 0x26, 0xe1, 0x97, 0xdd, 0x26, 0xe1, 0x97, 0xdc, 0x26, 0xe1, 0x97, - 0xdd, 0x26, 0xe2, 0x97, 0xdc, 0x26, 0xe2, 0x97, 0xdd, 0x26, 0xe2, 0x98, - 0xdf, 0x26, 0xe2, 0x97, 0xdd, 0x26, 0xe3, 0x98, 0xdf, 0x26, 0xe3, 0x97, - 0xdd, 0x26, 0xe3, 0x98, 0xdf, 0x26, 0xe3, 0x98, 0xdf, 0x26, 0xe4, 0x98, - 0xdf, 0x26, 0xe4, 0x98, 0xdf, 0x26, 0xe4, 0x98, 0xdf, 0x26, 0xe4, 0x99, - 0xe1, 0x26, 0xe5, 0x99, 0xe2, 0x26, 0xe5, 0x99, 0xe1, 0x26, 0xe5, 0x99, - 0xe2, 0x26, 0xe5, 0x99, 0xe1, 0x26, 0xe6, 0x99, 0xe2, 0x26, 0xe6, 0x99, - 0xe1, 0x26, 0xe6, 0x99, 0xe2, 0x26, 0xe6, 0x99, 0xe1, 0x26, 0xe7, 0x99, - 0xe2, 0x26, 0xe7, 0x99, 0xe1, 0x26, 0xe7, 0x99, 0xe2, 0x26, 0xe7, 0x9a, - 0xe4, 0x26, 0xe8, 0x99, 0xe2, 0x26, 0xe8, 0x9a, 0xe4, 0x26, 0xe8, 0x9a, - 0xe4, 0x26, 0xe8, 0x9a, 0xe4, 0x26, 0xe9, 0x9a, 0xe4, 0x26, 0xe9, 0x9a, - 0xe4, 0x26, 0xe9, 0x9a, 0xe4, 0x26, 0xe9, 0x9a, 0xe4, 0x26, 0xea, 0x9a, - 0xe6, 0x26, 0xea, 0x9a, 0xe4, 0x26, 0xea, 0x9a, 0xe6, 0x26, 0xea, 0x9a, - 0xe4, 0x26, 0xeb, 0x9a, 0xe6, 0x26, 0xeb, 0x9a, 0xe6, 0x26, 0xeb, 0x9a, - 0xe6, 0x26, 0xeb, 0x9a, 0xe6, 0x26, 0xec, 0x9a, 0xe6, 0x26, 0xec, 0x9b, - 0xe8, 0x26, 0xec, 0x9b, 0xe9, 0x26, 0xec, 0x9b, 0xe8, 0x26, 0xec, 0x9b, - 0xe9, 0x26, 0xed, 0x9b, 0xe8, 0x26, 0xed, 0x9b, 0xe9, 0x26, 0xed, 0x9b, - 0xe8, 0x26, 0xed, 0x9b, 0xe9, 0x26, 0xee, 0x9b, 0xe8, 0x26, 0xee, 0x9b, - 0xe9, 0x26, 0xee, 0x9c, 0xeb, 0x26, 0xee, 0x9b, 0xe9, 0x26, 0xef, 0x9c, - 0xeb, 0x26, 0xef, 0x9b, 0xe9, 0x26, 0xef, 0x9c, 0xeb, 0x26, 0xef, 0x9c, - 0xeb, 0x26, 0xf0, 0x9c, 0xeb, 0x26, 0xf0, 0x9c, 0xeb, 0x26, 0xf0, 0x9c, - 0xeb, 0x26, 0xf0, 0x9c, 0xeb, 0x26, 0xf1, 0x9c, 0xeb, 0x26, 0xf1, 0x9d, - 0xed, 0x26, 0xf1, 0x9d, 0xed, 0x26, 0xf1, 0x9d, 0xed, 0x26, 0xf2, 0x9d, - 0xed, 0x26, 0xf2, 0x9d, 0xed, 0x26, 0xf2, 0x9d, 0xed, 0x26, 0xf2, 0x9d, - 0xed, 0x26, 0xf2, 0x9d, 0xed, 0x26, 0xf3, 0x9d, 0xed, 0x26, 0xf3, 0x9d, - 0xed, 0x26, 0xf3, 0x9e, 0xef, 0x26, 0xf3, 0x9d, 0xed, 0x26, 0xf4, 0x9e, - 0xef, 0x26, 0xf4, 0x9d, 0xed, 0x26, 0xf4, 0x9e, 0xef, 0x26, 0xf4, 0x9e, - 0xef, 0x26, 0xf5, 0x9e, 0xef, 0x26, 0xf5, 0x9e, 0xef, 0x26, 0xf5, 0x9e, - 0xef, 0x26, 0xf5, 0x9f, 0xf2, 0x26, 0xf5, 0x9e, 0xef, 0x26, 0xf6, 0x9f, - 0xf2, 0x26, 0xf6, 0x9e, 0xef, 0x26, 0xf6, 0x9f, 0xf2, 0x26, 0xf6, 0x9f, - 0xf1, 0x26, 0xf7, 0x9f, 0xf2, 0x26, 0xf7, 0x9f, 0xf1, 0x26, 0xf7, 0x9f, - 0xf2, 0x26, 0xf7, 0x9f, 0xf4, 0x26, 0xf8, 0x9f, 0xf4, 0x26, 0xf8, 0x9f, - 0xf4, 0x26, 0xf8, 0x9f, 0xf4, 0x26, 0xf8, 0x9f, 0xf4, 0x26, 0xf8, 0x9f, - 0xf4, 0x26, 0xf9, 0x9f, 0xf4, 0x26, 0xf9, 0x9f, 0xf4, 0x26, 0xf9, 0x9f, - 0xf4, 0x26, 0xf9, 0x9f, 0xf4, 0x26, 0xfa, 0xa0, 0xf6, 0x26, 0xfa, 0x9f, - 0xf4, 0x26, 0xfa, 0xa0, 0xf6, 0x26, 0xfa, 0x9f, 0xf4, 0x26, 0xfa, 0xa0, - 0xf6, 0x26, 0xfb, 0xa0, 0xf6, 0x26, 0xfb, 0xa0, 0xf6, 0x26, 0xfb, 0xa0, - 0xf6, 0x26, 0xfb, 0xa0, 0xf6, 0x26, 0xfc, 0xa1, 0xf8, 0x26, 0xfc, 0xa0, - 0xf6, 0x26, 0xfc, 0xa1, 0xf8, 0x26, 0xfc, 0xa0, 0xf6, 0x26, 0xfc, 0xa1, - 0xf8, 0x26, 0xfd, 0xa0, 0xf6, 0x26, 0xfd, 0xa1, 0xf8, 0x26, 0xfd, 0xa1, - 0xf8, 0x26, 0xfd, 0xa1, 0xf8, 0x26, 0xfe, 0xa1, 0xf8, 0x26, 0xfe, 0xa1, - 0xf8, 0x26, 0xfe, 0xa2, 0xfa, 0x26, 0xfe, 0xa2, 0xfa, 0x26, 0xfe, 0xa2, - 0xfa, 0x26, 0xff, 0xa2, 0xfa, 0x26, 0xff, 0xa2, 0xfa, 0x26, 0x03, 0x84, - 0x9b, 0x27, 0x0a, 0x84, 0x9b, 0x27, 0x0f, 0x84, 0x9b, 0x27, 0x14, 0x84, - 0x9b, 0x27, 0x17, 0x84, 0x9b, 0x27, 0x1b, 0x84, 0x9b, 0x27, 0x1e, 0x84, - 0x9b, 0x27, 0x20, 0x86, 0x9b, 0x27, 0x23, 0x84, 0x9b, 0x27, 0x25, 0x86, - 0x9b, 0x27, 0x27, 0x84, 0x9b, 0x27, 0x29, 0x86, 0x9b, 0x27, 0x2b, 0x84, - 0x9b, 0x27, 0x2d, 0x86, 0x9b, 0x27, 0x2f, 0x84, 0x9b, 0x27, 0x31, 0x86, - 0x9b, 0x27, 0x32, 0x84, 0x9b, 0x27, 0x34, 0x86, 0x9b, 0x27, 0x35, 0x84, - 0x9b, 0x27, 0x37, 0x86, 0x9b, 0x27, 0x38, 0x84, 0x9b, 0x27, 0x3a, 0x86, - 0x9b, 0x27, 0x3b, 0x84, 0x9b, 0x27, 0x3c, 0x86, 0x9b, 0x27, 0x3e, 0x84, - 0x9b, 0x27, 0x3f, 0x86, 0x9b, 0x27, 0x40, 0x84, 0x9b, 0x27, 0x42, 0x86, - 0x9b, 0x27, 0x43, 0x84, 0x9b, 0x27, 0x44, 0x86, 0x9b, 0x27, 0x45, 0x84, - 0x9b, 0x27, 0x46, 0x86, 0x9b, 0x27, 0x47, 0x84, 0x9b, 0x27, 0x48, 0x86, - 0x9b, 0x27, 0x49, 0x84, 0x9b, 0x27, 0x4a, 0x86, 0x9b, 0x27, 0x4b, 0x84, - 0x9b, 0x27, 0x4c, 0x86, 0x9b, 0x27, 0x4d, 0x84, 0x9b, 0x27, 0x4e, 0x86, - 0x9b, 0x27, 0x4f, 0x84, 0x9b, 0x27, 0x50, 0x86, 0x9b, 0x27, 0x51, 0x84, - 0x9b, 0x27, 0x52, 0x86, 0x9b, 0x27, 0x53, 0x84, 0x9b, 0x27, 0x54, 0x86, - 0x9b, 0x27, 0x55, 0x84, 0x9b, 0x27, 0x56, 0x86, 0x9b, 0x27, 0x57, 0x84, - 0x9b, 0x27, 0x58, 0x86, 0x9b, 0x27, 0x58, 0x84, 0x9b, 0x27, 0x59, 0x86, - 0x9b, 0x27, 0x5a, 0x84, 0x9b, 0x27, 0x5b, 0x86, 0x9b, 0x27, 0x5c, 0x84, - 0x9b, 0x27, 0x5d, 0x86, 0x9b, 0x27, 0x5d, 0x84, 0x9b, 0x27, 0x5e, 0x86, - 0x9b, 0x27, 0x5f, 0x84, 0x9b, 0x27, 0x60, 0x86, 0x9b, 0x27, 0x60, 0x84, - 0x9b, 0x27, 0x61, 0x86, 0x9b, 0x27, 0x62, 0x84, 0x9b, 0x27, 0x63, 0x86, - 0x9b, 0x27, 0x63, 0x84, 0x9b, 0x27, 0x64, 0x86, 0x9b, 0x27, 0x65, 0x84, - 0x9b, 0x27, 0x66, 0x86, 0x9b, 0x27, 0x66, 0x84, 0x9b, 0x27, 0x67, 0x86, - 0x9b, 0x27, 0x68, 0x84, 0x9b, 0x27, 0x68, 0x86, 0x9b, 0x27, 0x69, 0x84, - 0x9b, 0x27, 0x6a, 0x86, 0x9b, 0x27, 0x6a, 0x84, 0x9b, 0x27, 0x6b, 0x86, - 0x9b, 0x27, 0x6c, 0x84, 0x9b, 0x27, 0x6c, 0x86, 0x9b, 0x27, 0x6d, 0x84, - 0x9b, 0x27, 0x6e, 0x86, 0x9b, 0x27, 0x6e, 0x84, 0x9b, 0x27, 0x6f, 0x86, - 0x9b, 0x27, 0x70, 0x84, 0x9b, 0x27, 0x70, 0x86, 0x9b, 0x27, 0x71, 0x84, - 0x9b, 0x27, 0x72, 0x84, 0x9c, 0x27, 0x72, 0x84, 0x9b, 0x27, 0x73, 0x84, - 0x9c, 0x27, 0x73, 0x84, 0x9b, 0x27, 0x74, 0x84, 0x9c, 0x27, 0x75, 0x84, - 0x9b, 0x27, 0x75, 0x84, 0x9c, 0x27, 0x76, 0x84, 0x9b, 0x27, 0x76, 0x84, - 0x9c, 0x27, 0x77, 0x84, 0x9b, 0x27, 0x78, 0x84, 0x9c, 0x27, 0x78, 0x84, - 0x9b, 0x27, 0x79, 0x84, 0x9c, 0x27, 0x79, 0x84, 0x9b, 0x27, 0x7a, 0x84, - 0x9c, 0x27, 0x7a, 0x84, 0x9b, 0x27, 0x7b, 0x84, 0x9c, 0x27, 0x7c, 0x84, - 0x9b, 0x27, 0x7c, 0x84, 0x9c, 0x27, 0x7d, 0x84, 0x9b, 0x27, 0x7d, 0x84, - 0x9c, 0x27, 0x7e, 0x84, 0x9b, 0x27, 0x7e, 0x84, 0x9c, 0x27, 0x7f, 0x84, - 0x9b, 0x27, 0x7f, 0x84, 0x9c, 0x27, 0x80, 0x84, 0x9b, 0x27, 0x81, 0x84, - 0x9c, 0x27, 0x81, 0x84, 0x9b, 0x27, 0x82, 0x84, 0x9c, 0x27, 0x82, 0x84, - 0x9b, 0x27, 0x83, 0x84, 0x9c, 0x27, 0x83, 0x84, 0x9b, 0x27, 0x84, 0x84, - 0x9c, 0x27, 0x84, 0x84, 0x9b, 0x27, 0x85, 0x84, 0x9c, 0x27, 0x85, 0x84, - 0x9b, 0x27, 0x86, 0x84, 0x9c, 0x27, 0x86, 0x84, 0x9b, 0x27, 0x87, 0x84, - 0x9c, 0x27, 0x87, 0x84, 0x9b, 0x27, 0x88, 0x84, 0x9c, 0x27, 0x88, 0x84, - 0x9b, 0x27, 0x89, 0x84, 0x9c, 0x27, 0x89, 0x84, 0x9b, 0x27, 0x8a, 0x84, - 0x9c, 0x27, 0x8a, 0x84, 0x9b, 0x27, 0x8b, 0x84, 0x9c, 0x27, 0x8b, 0x84, - 0x9b, 0x27, 0x8c, 0x84, 0x9c, 0x27, 0x8c, 0x84, 0x9b, 0x27, 0x8d, 0x84, - 0x9c, 0x27, 0x8d, 0x84, 0x9b, 0x27, 0x8e, 0x84, 0x9c, 0x27, 0x8e, 0x84, - 0x9b, 0x27, 0x8e, 0x84, 0x9c, 0x27, 0x8f, 0x84, 0x9b, 0x27, 0x8f, 0x84, - 0x9c, 0x27, 0x90, 0x84, 0x9b, 0x27, 0x90, 0x84, 0x9c, 0x27, 0x91, 0x84, - 0x9b, 0x27, 0x91, 0x84, 0x9c, 0x27, 0x92, 0x84, 0x9b, 0x27, 0x92, 0x84, - 0x9c, 0x27, 0x93, 0x84, 0x9b, 0x27, 0x93, 0x84, 0x9c, 0x27, 0x94, 0x84, - 0x9b, 0x27, 0x94, 0x84, 0x9c, 0x27, 0x94, 0x84, 0x9b, 0x27, 0x95, 0x84, - 0x9c, 0x27, 0x95, 0x84, 0x9b, 0x27, 0x96, 0x84, 0x9c, 0x27, 0x96, 0x84, - 0x9b, 0x27, 0x97, 0x84, 0x9c, 0x27, 0x97, 0x84, 0x9b, 0x27, 0x98, 0x84, - 0x9c, 0x27, 0x98, 0x84, 0x9b, 0x27, 0x98, 0x84, 0x9c, 0x27, 0x99, 0x84, - 0x9b, 0x27, 0x99, 0x84, 0x9c, 0x27, 0x9a, 0x84, 0x9b, 0x27, 0x9a, 0x84, - 0x9c, 0x27, 0x9a, 0x84, 0x9b, 0x27, 0x9b, 0x84, 0x9c, 0x27, 0x9b, 0x84, - 0x9b, 0x27, 0x9c, 0x84, 0x9c, 0x27, 0x9c, 0x84, 0x9c, 0x27, 0x9d, 0x84, - 0x9d, 0x27, 0x9d, 0x84, 0x9d, 0x27, 0x9d, 0x84, 0x9d, 0x27, 0x9e, 0x84, - 0x9e, 0x27, 0x9e, 0x84, 0x9e, 0x27, 0x9f, 0x84, 0x9f, 0x27, 0x9f, 0x84, - 0x9e, 0x27, 0x9f, 0x84, 0x9f, 0x27, 0xa0, 0x84, 0x9e, 0x27, 0xa0, 0x84, - 0x9f, 0x27, 0xa1, 0x84, 0x9e, 0x27, 0xa1, 0x84, 0x9f, 0x27, 0xa1, 0x84, - 0x9e, 0x27, 0xa2, 0x84, 0x9f, 0x27, 0xa2, 0x84, 0x9e, 0x27, 0xa3, 0x84, - 0x9f, 0x27, 0xa3, 0x84, 0x9e, 0x27, 0xa3, 0x84, 0x9f, 0x27, 0xa4, 0x85, - 0xa2, 0x27, 0xa4, 0x84, 0x9f, 0x27, 0xa5, 0x85, 0xa2, 0x27, 0xa5, 0x85, - 0xa2, 0x27, 0xa5, 0x85, 0xa2, 0x27, 0xa6, 0x85, 0xa2, 0x27, 0xa6, 0x85, - 0xa2, 0x27, 0xa6, 0x85, 0xa2, 0x27, 0xa7, 0x85, 0xa2, 0x27, 0xa7, 0x86, - 0xa6, 0x27, 0xa8, 0x86, 0xa6, 0x27, 0xa8, 0x86, 0xa6, 0x27, 0xa8, 0x86, - 0xa6, 0x27, 0xa9, 0x86, 0xa6, 0x27, 0xa9, 0x86, 0xa6, 0x27, 0xaa, 0x86, - 0xa6, 0x27, 0xaa, 0x86, 0xa6, 0x27, 0xaa, 0x86, 0xa6, 0x27, 0xab, 0x86, - 0xa6, 0x27, 0xab, 0x87, 0xaa, 0x27, 0xab, 0x86, 0xa6, 0x27, 0xac, 0x87, - 0xaa, 0x27, 0xac, 0x87, 0xa9, 0x27, 0xac, 0x87, 0xaa, 0x27, 0xad, 0x87, - 0xa9, 0x27, 0xad, 0x87, 0xaa, 0x27, 0xae, 0x87, 0xa9, 0x27, 0xae, 0x87, - 0xaa, 0x27, 0xae, 0x87, 0xa9, 0x27, 0xaf, 0x87, 0xaa, 0x27, 0xaf, 0x88, - 0xad, 0x27, 0xaf, 0x88, 0xad, 0x27, 0xb0, 0x88, 0xad, 0x27, 0xb0, 0x88, - 0xad, 0x27, 0xb0, 0x88, 0xad, 0x27, 0xb1, 0x88, 0xad, 0x27, 0xb1, 0x88, - 0xad, 0x27, 0xb2, 0x88, 0xad, 0x27, 0xb2, 0x88, 0xad, 0x27, 0xb2, 0x88, - 0xad, 0x27, 0xb3, 0x89, 0xb0, 0x27, 0xb3, 0x88, 0xad, 0x27, 0xb3, 0x89, - 0xb0, 0x27, 0xb4, 0x89, 0xb0, 0x27, 0xb4, 0x89, 0xb0, 0x27, 0xb4, 0x89, - 0xb2, 0x27, 0xb5, 0x89, 0xb0, 0x27, 0xb5, 0x89, 0xb2, 0x27, 0xb5, 0x89, - 0xb0, 0x27, 0xb6, 0x89, 0xb2, 0x27, 0xb6, 0x89, 0xb2, 0x27, 0xb6, 0x89, - 0xb2, 0x27, 0xb7, 0x89, 0xb2, 0x27, 0xb7, 0x89, 0xb2, 0x27, 0xb7, 0x8a, - 0xb3, 0x27, 0xb8, 0x8a, 0xb4, 0x27, 0xb8, 0x8a, 0xb3, 0x27, 0xb8, 0x8a, - 0xb4, 0x27, 0xb9, 0x8b, 0xb7, 0x27, 0xb9, 0x8b, 0xb7, 0x27, 0xb9, 0x8b, - 0xb7, 0x27, 0xba, 0x8b, 0xb7, 0x27, 0xba, 0x8b, 0xb7, 0x27, 0xba, 0x8b, - 0xb7, 0x27, 0xbb, 0x8b, 0xb7, 0x27, 0xbb, 0x8b, 0xb7, 0x27, 0xbb, 0x8b, - 0xb7, 0x27, 0xbc, 0x8b, 0xb7, 0x27, 0xbc, 0x8b, 0xb7, 0x27, 0xbc, 0x8b, - 0xb7, 0x27, 0xbd, 0x8c, 0xba, 0x27, 0xbd, 0x8c, 0xba, 0x27, 0xbd, 0x8c, - 0xba, 0x27, 0xbe, 0x8c, 0xba, 0x27, 0xbe, 0x8c, 0xba, 0x27, 0xbe, 0x8c, - 0xba, 0x27, 0xbf, 0x8c, 0xba, 0x27, 0xbf, 0x8c, 0xba, 0x27, 0xbf, 0x8c, - 0xba, 0x27, 0xc0, 0x8d, 0xbd, 0x27, 0xc0, 0x8c, 0xba, 0x27, 0xc0, 0x8d, - 0xbd, 0x27, 0xc1, 0x8d, 0xbd, 0x27, 0xc1, 0x8d, 0xbd, 0x27, 0xc1, 0x8d, - 0xbd, 0x27, 0xc1, 0x8d, 0xbd, 0x27, 0xc2, 0x8d, 0xbd, 0x27, 0xc2, 0x8d, - 0xbd, 0x27, 0xc2, 0x8e, 0xc0, 0x27, 0xc3, 0x8e, 0xc0, 0x27, 0xc3, 0x8e, - 0xc0, 0x27, 0xc3, 0x8e, 0xc0, 0x27, 0xc4, 0x8e, 0xc0, 0x27, 0xc4, 0x8e, - 0xc0, 0x27, 0xc4, 0x8e, 0xc0, 0x27, 0xc5, 0x8e, 0xc0, 0x27, 0xc5, 0x8e, - 0xc0, 0x27, 0xc5, 0x8e, 0xc0, 0x27, 0xc6, 0x8e, 0xc3, 0x27, 0xc6, 0x8e, - 0xc0, 0x27, 0xc6, 0x8e, 0xc3, 0x27, 0xc6, 0x8e, 0xc3, 0x27, 0xc7, 0x8e, - 0xc3, 0x27, 0xc7, 0x8e, 0xc3, 0x27, 0xc7, 0x8e, 0xc3, 0x27, 0xc8, 0x8e, - 0xc3, 0x27, 0xc8, 0x8e, 0xc3, 0x27, 0xc8, 0x8f, 0xc6, 0x27, 0xc9, 0x8e, - 0xc3, 0x27, 0xc9, 0x8f, 0xc6, 0x27, 0xc9, 0x8f, 0xc6, 0x27, 0xc9, 0x8f, - 0xc6, 0x27, 0xca, 0x8f, 0xc6, 0x27, 0xca, 0x8f, 0xc6, 0x27, 0xca, 0x8f, - 0xc6, 0x27, 0xcb, 0x8f, 0xc6, 0x27, 0xcb, 0x90, 0xc9, 0x27, 0xcb, 0x90, - 0xc9, 0x27, 0xcc, 0x90, 0xc9, 0x27, 0xcc, 0x90, 0xc9, 0x27, 0xcc, 0x90, - 0xc9, 0x27, 0xcc, 0x90, 0xc9, 0x27, 0xcd, 0x90, 0xc9, 0x27, 0xcd, 0x90, - 0xc9, 0x27, 0xcd, 0x90, 0xc9, 0x27, 0xce, 0x90, 0xc9, 0x27, 0xce, 0x90, - 0xc9, 0x27, 0xce, 0x90, 0xc9, 0x27, 0xce, 0x91, 0xcc, 0x27, 0xcf, 0x90, - 0xc9, 0x27, 0xcf, 0x91, 0xcc, 0x27, 0xcf, 0x91, 0xcb, 0x27, 0xd0, 0x91, - 0xcc, 0x27, 0xd0, 0x91, 0xcb, 0x27, 0xd0, 0x91, 0xcc, 0x27, 0xd0, 0x91, - 0xcb, 0x27, 0xd1, 0x91, 0xcc, 0x27, 0xd1, 0x92, 0xce, 0x27, 0xd1, 0x92, - 0xce, 0x27, 0xd2, 0x92, 0xce, 0x27, 0xd2, 0x92, 0xce, 0x27, 0xd2, 0x92, - 0xce, 0x27, 0xd2, 0x92, 0xce, 0x27, 0xd3, 0x92, 0xce, 0x27, 0xd3, 0x92, - 0xce, 0x27, 0xd3, 0x92, 0xce, 0x27, 0xd4, 0x92, 0xce, 0x27, 0xd4, 0x93, - 0xd1, 0x27, 0xd4, 0x92, 0xce, 0x27, 0xd4, 0x93, 0xd1, 0x27, 0xd5, 0x93, - 0xd1, 0x27, 0xd5, 0x93, 0xd1, 0x27, 0xd5, 0x93, 0xd1, 0x27, 0xd6, 0x93, - 0xd1, 0x27, 0xd6, 0x93, 0xd1, 0x27, 0xd6, 0x93, 0xd1, 0x27, 0xd6, 0x94, - 0xd4, 0x27, 0xd7, 0x93, 0xd1, 0x27, 0xd7, 0x94, 0xd4, 0x27, 0xd7, 0x93, - 0xd1, 0x27, 0xd7, 0x94, 0xd4, 0x27, 0xd8, 0x94, 0xd3, 0x27, 0xd8, 0x94, - 0xd4, 0x27, 0xd8, 0x94, 0xd3, 0x27, 0xd9, 0x94, 0xd4, 0x27, 0xd9, 0x94, - 0xd3, 0x27, 0xd9, 0x94, 0xd4, 0x27, 0xd9, 0x95, 0xd6, 0x27, 0xda, 0x95, - 0xd6, 0x27, 0xda, 0x95, 0xd6, 0x27, 0xda, 0x95, 0xd6, 0x27, 0xda, 0x95, - 0xd6, 0x27, 0xdb, 0x95, 0xd6, 0x27, 0xdb, 0x95, 0xd6, 0x27, 0xdb, 0x95, - 0xd6, 0x27, 0xdb, 0x95, 0xd6, 0x27, 0xdc, 0x95, 0xd6, 0x27, 0xdc, 0x96, - 0xd9, 0x27, 0xdc, 0x95, 0xd6, 0x27, 0xdd, 0x96, 0xd9, 0x27, 0xdd, 0x96, - 0xd9, 0x27, 0xdd, 0x96, 0xd9, 0x27, 0xdd, 0x96, 0xd9, 0x27, 0xde, 0x96, - 0xd9, 0x27, 0xde, 0x96, 0xd9, 0x27, 0xde, 0x96, 0xd9, 0x27, 0xde, 0x97, - 0xdb, 0x27, 0xdf, 0x96, 0xd9, 0x27, 0xdf, 0x97, 0xdb, 0x27, 0xdf, 0x97, - 0xdb, 0x27, 0xdf, 0x97, 0xdb, 0x27, 0xe0, 0x97, 0xdb, 0x27, 0xe0, 0x97, - 0xdb, 0x27, 0xe0, 0x97, 0xdb, 0x27, 0xe1, 0x97, 0xdb, 0x27, 0xe1, 0x98, - 0xde, 0x27, 0xe1, 0x98, 0xde, 0x27, 0xe1, 0x98, 0xde, 0x27, 0xe2, 0x98, - 0xde, 0x27, 0xe2, 0x98, 0xde, 0x27, 0xe2, 0x98, 0xde, 0x27, 0xe2, 0x98, - 0xde, 0x27, 0xe3, 0x98, 0xde, 0x27, 0xe3, 0x98, 0xde, 0x27, 0xe3, 0x98, - 0xde, 0x27, 0xe3, 0x98, 0xe0, 0x27, 0xe4, 0x98, 0xde, 0x27, 0xe4, 0x98, - 0xe0, 0x27, 0xe4, 0x98, 0xde, 0x27, 0xe4, 0x98, 0xe0, 0x27, 0xe5, 0x98, - 0xe0, 0x27, 0xe5, 0x98, 0xe0, 0x27, 0xe5, 0x98, 0xe0, 0x27, 0xe5, 0x98, - 0xe0, 0x27, 0xe6, 0x99, 0xe3, 0x27, 0xe6, 0x98, 0xe0, 0x27, 0xe6, 0x99, - 0xe3, 0x27, 0xe6, 0x98, 0xe0, 0x27, 0xe7, 0x99, 0xe3, 0x27, 0xe7, 0x99, - 0xe2, 0x27, 0xe7, 0x99, 0xe3, 0x27, 0xe7, 0x99, 0xe2, 0x27, 0xe8, 0x99, - 0xe3, 0x27, 0xe8, 0x99, 0xe2, 0x27, 0xe8, 0x99, 0xe3, 0x27, 0xe8, 0x9a, - 0xe5, 0x27, 0xe9, 0x9a, 0xe5, 0x27, 0xe9, 0x9a, 0xe5, 0x27, 0xe9, 0x9a, - 0xe5, 0x27, 0xe9, 0x9a, 0xe5, 0x27, 0xea, 0x9a, 0xe5, 0x27, 0xea, 0x9a, - 0xe5, 0x27, 0xea, 0x9a, 0xe5, 0x27, 0xea, 0x9a, 0xe5, 0x27, 0xeb, 0x9a, - 0xe5, 0x27, 0xeb, 0x9b, 0xe7, 0x27, 0xeb, 0x9a, 0xe5, 0x27, 0xeb, 0x9b, - 0xe7, 0x27, 0xec, 0x9a, 0xe5, 0x27, 0xec, 0x9b, 0xe7, 0x27, 0xec, 0x9b, - 0xe7, 0x27, 0xec, 0x9b, 0xe7, 0x27, 0xec, 0x9b, 0xe7, 0x27, 0xed, 0x9b, - 0xe7, 0x27, 0xed, 0x9c, 0xea, 0x27, 0xed, 0x9c, 0xea, 0x27, 0xed, 0x9c, - 0xea, 0x27, 0xee, 0x9c, 0xea, 0x27, 0xee, 0x9c, 0xea, 0x27, 0xee, 0x9c, - 0xea, 0x27, 0xee, 0x9c, 0xea, 0x27, 0xef, 0x9c, 0xea, 0x27, 0xef, 0x9c, - 0xea, 0x27, 0xef, 0x9c, 0xea, 0x27, 0xef, 0x9d, 0xec, 0x27, 0xf0, 0x9c, - 0xea, 0x27, 0xf0, 0x9d, 0xec, 0x27, 0xf0, 0x9c, 0xea, 0x27, 0xf0, 0x9d, - 0xec, 0x27, 0xf1, 0x9d, 0xec, 0x27, 0xf1, 0x9d, 0xec, 0x27, 0xf1, 0x9d, - 0xec, 0x27, 0xf1, 0x9d, 0xec, 0x27, 0xf2, 0x9d, 0xec, 0x27, 0xf2, 0x9d, - 0xec, 0x27, 0xf2, 0x9d, 0xee, 0x27, 0xf2, 0x9d, 0xec, 0x27, 0xf2, 0x9d, - 0xee, 0x27, 0xf3, 0x9d, 0xee, 0x27, 0xf3, 0x9d, 0xee, 0x27, 0xf3, 0x9d, - 0xee, 0x27, 0xf3, 0x9d, 0xee, 0x27, 0xf4, 0x9d, 0xee, 0x27, 0xf4, 0x9d, - 0xee, 0x27, 0xf4, 0x9e, 0xf0, 0x27, 0xf4, 0x9e, 0xf1, 0x27, 0xf5, 0x9e, - 0xf0, 0x27, 0xf5, 0x9e, 0xf1, 0x27, 0xf5, 0x9e, 0xf0, 0x27, 0xf5, 0x9e, - 0xf1, 0x27, 0xf5, 0x9e, 0xf0, 0x27, 0xf6, 0x9e, 0xf1, 0x27, 0xf6, 0x9e, - 0xf0, 0x27, 0xf6, 0x9e, 0xf1, 0x27, 0xf6, 0x9f, 0xf3, 0x27, 0xf7, 0x9e, - 0xf1, 0x27, 0xf7, 0x9f, 0xf3, 0x27, 0xf7, 0x9e, 0xf1, 0x27, 0xf7, 0x9f, - 0xf3, 0x27, 0xf8, 0x9f, 0xf2, 0x27, 0xf8, 0x9f, 0xf3, 0x27, 0xf8, 0x9f, - 0xf2, 0x27, 0xf8, 0x9f, 0xf3, 0x27, 0xf8, 0xa0, 0xf5, 0x27, 0xf9, 0x9f, - 0xf3, 0x27, 0xf9, 0xa0, 0xf5, 0x27, 0xf9, 0x9f, 0xf3, 0x27, 0xf9, 0xa0, - 0xf5, 0x27, 0xfa, 0xa0, 0xf5, 0x27, 0xfa, 0xa0, 0xf5, 0x27, 0xfa, 0xa0, - 0xf5, 0x27, 0xfa, 0xa0, 0xf5, 0x27, 0xfa, 0xa1, 0xf7, 0x27, 0xfb, 0xa1, - 0xf7, 0x27, 0xfb, 0xa1, 0xf7, 0x27, 0xfb, 0xa1, 0xf7, 0x27, 0xfb, 0xa1, - 0xf7, 0x27, 0xfc, 0xa1, 0xf7, 0x27, 0xfc, 0xa1, 0xf7, 0x27, 0xfc, 0xa1, - 0xf7, 0x27, 0xfc, 0xa1, 0xf7, 0x27, 0xfc, 0xa1, 0xf7, 0x27, 0xfd, 0xa1, - 0xf9, 0x27, 0xfd, 0xa1, 0xf7, 0x27, 0xfd, 0xa1, 0xf9, 0x27, 0xfd, 0xa1, - 0xf7, 0x27, 0xfe, 0xa1, 0xf9, 0x27, 0xfe, 0xa1, 0xf7, 0x27, 0xfe, 0xa1, - 0xf9, 0x27, 0xfe, 0xa1, 0xf9, 0x27, 0xfe, 0xa1, 0xf9, 0x27, 0xff, 0xa1, - 0xf9, 0x27, 0xff, 0xa1, 0xf9, 0x27, 0x03, 0x83, 0x9b, 0x27, 0x0a, 0x83, - 0x9b, 0x27, 0x0f, 0x83, 0x9b, 0x27, 0x14, 0x83, 0x9b, 0x27, 0x17, 0x83, - 0x9b, 0x27, 0x1b, 0x83, 0x9b, 0x27, 0x1e, 0x83, 0x9b, 0x27, 0x20, 0x86, - 0x9b, 0x27, 0x23, 0x83, 0x9b, 0x27, 0x25, 0x86, 0x9b, 0x27, 0x27, 0x83, - 0x9b, 0x27, 0x29, 0x86, 0x9b, 0x27, 0x2b, 0x83, 0x9b, 0x27, 0x2d, 0x86, - 0x9b, 0x27, 0x2f, 0x83, 0x9b, 0x27, 0x31, 0x86, 0x9b, 0x27, 0x32, 0x83, - 0x9b, 0x27, 0x34, 0x86, 0x9b, 0x27, 0x35, 0x83, 0x9b, 0x27, 0x37, 0x86, - 0x9b, 0x27, 0x38, 0x83, 0x9b, 0x27, 0x3a, 0x86, 0x9b, 0x27, 0x3b, 0x83, - 0x9b, 0x27, 0x3c, 0x86, 0x9b, 0x27, 0x3e, 0x83, 0x9b, 0x27, 0x3f, 0x86, - 0x9b, 0x27, 0x40, 0x83, 0x9b, 0x27, 0x42, 0x86, 0x9b, 0x27, 0x43, 0x83, - 0x9b, 0x27, 0x44, 0x86, 0x9b, 0x27, 0x45, 0x83, 0x9b, 0x27, 0x46, 0x86, - 0x9b, 0x27, 0x47, 0x83, 0x9b, 0x27, 0x48, 0x86, 0x9b, 0x27, 0x49, 0x83, - 0x9b, 0x27, 0x4a, 0x86, 0x9b, 0x27, 0x4b, 0x83, 0x9b, 0x27, 0x4c, 0x86, - 0x9b, 0x27, 0x4d, 0x83, 0x9b, 0x27, 0x4e, 0x86, 0x9b, 0x27, 0x4f, 0x83, - 0x9b, 0x27, 0x50, 0x86, 0x9b, 0x27, 0x51, 0x83, 0x9b, 0x27, 0x52, 0x86, - 0x9b, 0x27, 0x53, 0x83, 0x9b, 0x27, 0x54, 0x83, 0x9c, 0x27, 0x55, 0x83, - 0x9b, 0x27, 0x56, 0x83, 0x9c, 0x27, 0x57, 0x83, 0x9b, 0x27, 0x58, 0x83, - 0x9c, 0x27, 0x58, 0x83, 0x9b, 0x27, 0x59, 0x83, 0x9c, 0x27, 0x5a, 0x83, - 0x9b, 0x27, 0x5b, 0x83, 0x9c, 0x27, 0x5c, 0x83, 0x9b, 0x27, 0x5d, 0x83, - 0x9c, 0x27, 0x5d, 0x83, 0x9b, 0x27, 0x5e, 0x83, 0x9c, 0x27, 0x5f, 0x83, - 0x9b, 0x27, 0x60, 0x83, 0x9c, 0x27, 0x60, 0x83, 0x9b, 0x27, 0x61, 0x83, - 0x9c, 0x27, 0x62, 0x83, 0x9b, 0x27, 0x63, 0x83, 0x9c, 0x27, 0x63, 0x83, - 0x9b, 0x27, 0x64, 0x83, 0x9c, 0x27, 0x65, 0x83, 0x9b, 0x27, 0x66, 0x83, - 0x9c, 0x27, 0x66, 0x83, 0x9b, 0x27, 0x67, 0x83, 0x9c, 0x27, 0x68, 0x83, - 0x9b, 0x27, 0x68, 0x83, 0x9c, 0x27, 0x69, 0x83, 0x9b, 0x27, 0x6a, 0x83, - 0x9c, 0x27, 0x6a, 0x83, 0x9b, 0x27, 0x6b, 0x83, 0x9c, 0x27, 0x6c, 0x83, - 0x9b, 0x27, 0x6c, 0x83, 0x9c, 0x27, 0x6d, 0x83, 0x9b, 0x27, 0x6e, 0x83, - 0x9c, 0x27, 0x6e, 0x83, 0x9b, 0x27, 0x6f, 0x83, 0x9c, 0x27, 0x70, 0x83, - 0x9b, 0x27, 0x70, 0x83, 0x9c, 0x27, 0x71, 0x83, 0x9b, 0x27, 0x72, 0x83, - 0x9c, 0x27, 0x72, 0x83, 0x9b, 0x27, 0x73, 0x83, 0x9c, 0x27, 0x73, 0x83, - 0x9b, 0x27, 0x74, 0x83, 0x9c, 0x27, 0x75, 0x83, 0x9b, 0x27, 0x75, 0x83, - 0x9c, 0x27, 0x76, 0x83, 0x9b, 0x27, 0x76, 0x83, 0x9c, 0x27, 0x77, 0x83, - 0x9b, 0x27, 0x78, 0x83, 0x9c, 0x27, 0x78, 0x83, 0x9b, 0x27, 0x79, 0x83, - 0x9c, 0x27, 0x79, 0x83, 0x9b, 0x27, 0x7a, 0x83, 0x9c, 0x27, 0x7a, 0x83, - 0x9b, 0x27, 0x7b, 0x83, 0x9c, 0x27, 0x7c, 0x83, 0x9b, 0x27, 0x7c, 0x83, - 0x9c, 0x27, 0x7d, 0x83, 0x9b, 0x27, 0x7d, 0x83, 0x9c, 0x27, 0x7e, 0x83, - 0x9b, 0x27, 0x7e, 0x83, 0x9c, 0x27, 0x7f, 0x83, 0x9b, 0x27, 0x7f, 0x83, - 0x9c, 0x27, 0x80, 0x83, 0x9b, 0x27, 0x81, 0x83, 0x9c, 0x27, 0x81, 0x83, - 0x9b, 0x27, 0x82, 0x83, 0x9c, 0x27, 0x82, 0x83, 0x9b, 0x27, 0x83, 0x83, - 0x9c, 0x27, 0x83, 0x83, 0x9b, 0x27, 0x84, 0x83, 0x9c, 0x27, 0x84, 0x83, - 0x9b, 0x27, 0x85, 0x83, 0x9c, 0x27, 0x85, 0x83, 0x9b, 0x27, 0x86, 0x83, - 0x9c, 0x27, 0x86, 0x83, 0x9b, 0x27, 0x87, 0x83, 0x9c, 0x27, 0x87, 0x83, - 0x9b, 0x27, 0x88, 0x83, 0x9c, 0x27, 0x88, 0x83, 0x9b, 0x27, 0x89, 0x83, - 0x9c, 0x27, 0x89, 0x83, 0x9b, 0x27, 0x8a, 0x83, 0x9c, 0x27, 0x8a, 0x83, - 0x9b, 0x27, 0x8b, 0x83, 0x9c, 0x27, 0x8b, 0x83, 0x9b, 0x27, 0x8c, 0x83, - 0x9c, 0x27, 0x8c, 0x83, 0x9b, 0x27, 0x8d, 0x83, 0x9c, 0x27, 0x8d, 0x83, - 0x9b, 0x27, 0x8e, 0x83, 0x9c, 0x27, 0x8e, 0x83, 0x9b, 0x27, 0x8e, 0x83, - 0x9c, 0x27, 0x8f, 0x83, 0x9b, 0x27, 0x8f, 0x83, 0x9c, 0x27, 0x90, 0x83, - 0x9b, 0x27, 0x90, 0x83, 0x9c, 0x27, 0x91, 0x83, 0x9b, 0x27, 0x91, 0x83, - 0x9c, 0x27, 0x92, 0x83, 0x9b, 0x27, 0x92, 0x83, 0x9c, 0x27, 0x93, 0x83, - 0x9b, 0x27, 0x93, 0x83, 0x9c, 0x27, 0x94, 0x83, 0x9b, 0x27, 0x94, 0x83, - 0x9c, 0x27, 0x94, 0x83, 0x9b, 0x27, 0x95, 0x83, 0x9c, 0x27, 0x95, 0x83, - 0x9b, 0x27, 0x96, 0x83, 0x9c, 0x27, 0x96, 0x83, 0x9b, 0x27, 0x97, 0x83, - 0x9c, 0x27, 0x97, 0x83, 0x9b, 0x27, 0x98, 0x83, 0x9c, 0x27, 0x98, 0x83, - 0x9b, 0x27, 0x98, 0x83, 0x9c, 0x27, 0x99, 0x83, 0x9b, 0x27, 0x99, 0x83, - 0x9c, 0x27, 0x9a, 0x83, 0x9b, 0x27, 0x9a, 0x83, 0x9c, 0x27, 0x9a, 0x83, - 0x9b, 0x27, 0x9b, 0x83, 0x9c, 0x27, 0x9b, 0x83, 0x9b, 0x27, 0x9c, 0x83, - 0x9c, 0x27, 0x9c, 0x83, 0x9c, 0x27, 0x9d, 0x83, 0x9d, 0x27, 0x9d, 0x83, - 0x9c, 0x27, 0x9d, 0x83, 0x9d, 0x27, 0x9e, 0x83, 0x9c, 0x27, 0x9e, 0x83, - 0x9d, 0x27, 0x9f, 0x83, 0x9c, 0x27, 0x9f, 0x83, 0x9d, 0x27, 0x9f, 0x83, - 0x9c, 0x27, 0xa0, 0x83, 0x9d, 0x27, 0xa0, 0x83, 0x9c, 0x27, 0xa1, 0x83, - 0x9d, 0x27, 0xa1, 0x83, 0x9c, 0x27, 0xa1, 0x83, 0x9d, 0x27, 0xa2, 0x84, - 0xa0, 0x27, 0xa2, 0x84, 0xa1, 0x27, 0xa3, 0x84, 0xa0, 0x27, 0xa3, 0x84, - 0xa1, 0x27, 0xa3, 0x84, 0xa0, 0x27, 0xa4, 0x84, 0xa1, 0x27, 0xa4, 0x84, - 0xa0, 0x27, 0xa5, 0x84, 0xa1, 0x27, 0xa5, 0x84, 0xa0, 0x27, 0xa5, 0x84, - 0xa1, 0x27, 0xa6, 0x85, 0xa4, 0x27, 0xa6, 0x84, 0xa1, 0x27, 0xa6, 0x85, - 0xa4, 0x27, 0xa7, 0x85, 0xa4, 0x27, 0xa7, 0x85, 0xa4, 0x27, 0xa8, 0x85, - 0xa4, 0x27, 0xa8, 0x85, 0xa4, 0x27, 0xa8, 0x85, 0xa4, 0x27, 0xa9, 0x85, - 0xa4, 0x27, 0xa9, 0x86, 0xa8, 0x27, 0xaa, 0x85, 0xa4, 0x27, 0xaa, 0x86, - 0xa8, 0x27, 0xaa, 0x86, 0xa7, 0x27, 0xab, 0x86, 0xa8, 0x27, 0xab, 0x86, - 0xa7, 0x27, 0xab, 0x86, 0xa8, 0x27, 0xac, 0x86, 0xa7, 0x27, 0xac, 0x86, - 0xa8, 0x27, 0xac, 0x87, 0xab, 0x27, 0xad, 0x87, 0xab, 0x27, 0xad, 0x87, - 0xab, 0x27, 0xae, 0x87, 0xab, 0x27, 0xae, 0x87, 0xab, 0x27, 0xae, 0x87, - 0xab, 0x27, 0xaf, 0x87, 0xab, 0x27, 0xaf, 0x87, 0xab, 0x27, 0xaf, 0x87, - 0xab, 0x27, 0xb0, 0x87, 0xab, 0x27, 0xb0, 0x87, 0xab, 0x27, 0xb0, 0x87, - 0xab, 0x27, 0xb1, 0x88, 0xaf, 0x27, 0xb1, 0x88, 0xae, 0x27, 0xb2, 0x88, - 0xaf, 0x27, 0xb2, 0x88, 0xae, 0x27, 0xb2, 0x88, 0xaf, 0x27, 0xb3, 0x88, - 0xae, 0x27, 0xb3, 0x88, 0xaf, 0x27, 0xb3, 0x88, 0xae, 0x27, 0xb4, 0x88, - 0xaf, 0x27, 0xb4, 0x89, 0xb2, 0x27, 0xb4, 0x89, 0xb2, 0x27, 0xb5, 0x89, - 0xb2, 0x27, 0xb5, 0x89, 0xb2, 0x27, 0xb5, 0x89, 0xb2, 0x27, 0xb6, 0x89, - 0xb2, 0x27, 0xb6, 0x89, 0xb2, 0x27, 0xb6, 0x89, 0xb2, 0x27, 0xb7, 0x89, - 0xb2, 0x27, 0xb7, 0x89, 0xb2, 0x27, 0xb7, 0x8a, 0xb5, 0x27, 0xb8, 0x89, - 0xb2, 0x27, 0xb8, 0x8a, 0xb5, 0x27, 0xb8, 0x8a, 0xb5, 0x27, 0xb9, 0x8a, - 0xb5, 0x27, 0xb9, 0x8a, 0xb5, 0x27, 0xb9, 0x8a, 0xb5, 0x27, 0xba, 0x8a, - 0xb5, 0x27, 0xba, 0x8a, 0xb5, 0x27, 0xba, 0x8b, 0xb8, 0x27, 0xbb, 0x8a, - 0xb5, 0x27, 0xbb, 0x8b, 0xb8, 0x27, 0xbb, 0x8b, 0xb8, 0x27, 0xbc, 0x8b, - 0xb8, 0x27, 0xbc, 0x8b, 0xb8, 0x27, 0xbc, 0x8b, 0xb8, 0x27, 0xbd, 0x8b, - 0xb8, 0x27, 0xbd, 0x8b, 0xb8, 0x27, 0xbd, 0x8b, 0xb8, 0x27, 0xbe, 0x8b, - 0xb8, 0x27, 0xbe, 0x8c, 0xbb, 0x27, 0xbe, 0x8c, 0xbc, 0x27, 0xbf, 0x8c, - 0xbb, 0x27, 0xbf, 0x8c, 0xbc, 0x27, 0xbf, 0x8c, 0xbb, 0x27, 0xc0, 0x8c, - 0xbc, 0x27, 0xc0, 0x8c, 0xbb, 0x27, 0xc0, 0x8c, 0xbc, 0x27, 0xc1, 0x8c, - 0xbb, 0x27, 0xc1, 0x8c, 0xbc, 0x27, 0xc1, 0x8d, 0xbf, 0x27, 0xc1, 0x8c, - 0xbc, 0x27, 0xc2, 0x8d, 0xbf, 0x27, 0xc2, 0x8d, 0xbe, 0x27, 0xc2, 0x8d, - 0xbf, 0x27, 0xc3, 0x8d, 0xbe, 0x27, 0xc3, 0x8d, 0xbf, 0x27, 0xc3, 0x8d, - 0xbe, 0x27, 0xc4, 0x8d, 0xbf, 0x27, 0xc4, 0x8e, 0xc1, 0x27, 0xc4, 0x8d, - 0xbf, 0x27, 0xc5, 0x8e, 0xc1, 0x27, 0xc5, 0x8e, 0xc1, 0x27, 0xc5, 0x8e, - 0xc1, 0x27, 0xc6, 0x8e, 0xc1, 0x27, 0xc6, 0x8e, 0xc1, 0x27, 0xc6, 0x8e, - 0xc1, 0x27, 0xc6, 0x8e, 0xc1, 0x27, 0xc7, 0x8f, 0xc4, 0x27, 0xc7, 0x8f, - 0xc5, 0x27, 0xc7, 0x8f, 0xc4, 0x27, 0xc8, 0x8f, 0xc5, 0x27, 0xc8, 0x8f, - 0xc4, 0x27, 0xc8, 0x8f, 0xc5, 0x27, 0xc9, 0x8f, 0xc4, 0x27, 0xc9, 0x8f, - 0xc5, 0x27, 0xc9, 0x8f, 0xc4, 0x27, 0xc9, 0x8f, 0xc5, 0x27, 0xca, 0x90, - 0xc7, 0x27, 0xca, 0x8f, 0xc5, 0x27, 0xca, 0x90, 0xc7, 0x27, 0xcb, 0x90, - 0xc7, 0x27, 0xcb, 0x90, 0xc7, 0x27, 0xcb, 0x90, 0xc7, 0x27, 0xcc, 0x90, - 0xc7, 0x27, 0xcc, 0x90, 0xc7, 0x27, 0xcc, 0x90, 0xc7, 0x27, 0xcc, 0x91, - 0xca, 0x27, 0xcd, 0x90, 0xc7, 0x27, 0xcd, 0x91, 0xca, 0x27, 0xcd, 0x90, - 0xc7, 0x27, 0xce, 0x91, 0xca, 0x27, 0xce, 0x91, 0xca, 0x27, 0xce, 0x91, - 0xca, 0x27, 0xce, 0x91, 0xca, 0x27, 0xcf, 0x91, 0xca, 0x27, 0xcf, 0x91, - 0xca, 0x27, 0xcf, 0x91, 0xca, 0x27, 0xd0, 0x92, 0xcd, 0x27, 0xd0, 0x92, - 0xcd, 0x27, 0xd0, 0x92, 0xcd, 0x27, 0xd0, 0x92, 0xcd, 0x27, 0xd1, 0x92, - 0xcd, 0x27, 0xd1, 0x92, 0xcd, 0x27, 0xd1, 0x92, 0xcd, 0x27, 0xd2, 0x92, - 0xcd, 0x27, 0xd2, 0x92, 0xcd, 0x27, 0xd2, 0x92, 0xcd, 0x27, 0xd2, 0x93, - 0xd0, 0x27, 0xd3, 0x92, 0xcd, 0x27, 0xd3, 0x93, 0xd0, 0x27, 0xd3, 0x93, - 0xcf, 0x27, 0xd4, 0x93, 0xd0, 0x27, 0xd4, 0x93, 0xcf, 0x27, 0xd4, 0x93, - 0xd0, 0x27, 0xd4, 0x93, 0xcf, 0x27, 0xd5, 0x93, 0xd0, 0x27, 0xd5, 0x94, - 0xd2, 0x27, 0xd5, 0x94, 0xd2, 0x27, 0xd6, 0x94, 0xd2, 0x27, 0xd6, 0x94, - 0xd2, 0x27, 0xd6, 0x94, 0xd2, 0x27, 0xd6, 0x94, 0xd2, 0x27, 0xd7, 0x94, - 0xd2, 0x27, 0xd7, 0x94, 0xd2, 0x27, 0xd7, 0x94, 0xd2, 0x27, 0xd7, 0x94, - 0xd2, 0x27, 0xd8, 0x94, 0xd5, 0x27, 0xd8, 0x94, 0xd2, 0x27, 0xd8, 0x94, - 0xd5, 0x27, 0xd9, 0x94, 0xd2, 0x27, 0xd9, 0x94, 0xd5, 0x27, 0xd9, 0x94, - 0xd5, 0x27, 0xd9, 0x94, 0xd5, 0x27, 0xda, 0x94, 0xd5, 0x27, 0xda, 0x94, - 0xd5, 0x27, 0xda, 0x94, 0xd5, 0x27, 0xda, 0x94, 0xd5, 0x27, 0xdb, 0x95, - 0xd7, 0x27, 0xdb, 0x94, 0xd5, 0x27, 0xdb, 0x95, 0xd7, 0x27, 0xdb, 0x95, - 0xd7, 0x27, 0xdc, 0x95, 0xd7, 0x27, 0xdc, 0x95, 0xd7, 0x27, 0xdc, 0x95, - 0xd7, 0x27, 0xdd, 0x95, 0xd7, 0x27, 0xdd, 0x95, 0xd7, 0x27, 0xdd, 0x96, - 0xda, 0x27, 0xdd, 0x96, 0xda, 0x27, 0xde, 0x96, 0xda, 0x27, 0xde, 0x96, - 0xda, 0x27, 0xde, 0x96, 0xda, 0x27, 0xde, 0x96, 0xda, 0x27, 0xdf, 0x96, - 0xda, 0x27, 0xdf, 0x96, 0xda, 0x27, 0xdf, 0x96, 0xda, 0x27, 0xdf, 0x96, - 0xda, 0x27, 0xe0, 0x97, 0xdd, 0x27, 0xe0, 0x96, 0xda, 0x27, 0xe0, 0x97, - 0xdd, 0x27, 0xe1, 0x97, 0xdc, 0x27, 0xe1, 0x97, 0xdd, 0x27, 0xe1, 0x97, - 0xdc, 0x27, 0xe1, 0x97, 0xdd, 0x27, 0xe2, 0x97, 0xdc, 0x27, 0xe2, 0x97, - 0xdd, 0x27, 0xe2, 0x98, 0xdf, 0x27, 0xe2, 0x97, 0xdd, 0x27, 0xe3, 0x98, - 0xdf, 0x27, 0xe3, 0x97, 0xdd, 0x27, 0xe3, 0x98, 0xdf, 0x27, 0xe3, 0x98, - 0xdf, 0x27, 0xe4, 0x98, 0xdf, 0x27, 0xe4, 0x98, 0xdf, 0x27, 0xe4, 0x98, - 0xdf, 0x27, 0xe4, 0x99, 0xe1, 0x27, 0xe5, 0x99, 0xe2, 0x27, 0xe5, 0x99, - 0xe1, 0x27, 0xe5, 0x99, 0xe2, 0x27, 0xe5, 0x99, 0xe1, 0x27, 0xe6, 0x99, - 0xe2, 0x27, 0xe6, 0x99, 0xe1, 0x27, 0xe6, 0x99, 0xe2, 0x27, 0xe6, 0x99, - 0xe1, 0x27, 0xe7, 0x99, 0xe2, 0x27, 0xe7, 0x9a, 0xe4, 0x27, 0xe7, 0x99, - 0xe2, 0x27, 0xe7, 0x9a, 0xe4, 0x27, 0xe8, 0x99, 0xe2, 0x27, 0xe8, 0x9a, - 0xe4, 0x27, 0xe8, 0x9a, 0xe4, 0x27, 0xe8, 0x9a, 0xe4, 0x27, 0xe9, 0x9a, - 0xe4, 0x27, 0xe9, 0x9a, 0xe4, 0x27, 0xe9, 0x9a, 0xe4, 0x27, 0xe9, 0x9a, - 0xe4, 0x27, 0xea, 0x9a, 0xe6, 0x27, 0xea, 0x9a, 0xe4, 0x27, 0xea, 0x9a, - 0xe6, 0x27, 0xea, 0x9a, 0xe6, 0x27, 0xeb, 0x9a, 0xe6, 0x27, 0xeb, 0x9a, - 0xe6, 0x27, 0xeb, 0x9a, 0xe6, 0x27, 0xeb, 0x9a, 0xe6, 0x27, 0xec, 0x9a, - 0xe6, 0x27, 0xec, 0x9b, 0xe8, 0x27, 0xec, 0x9b, 0xe9, 0x27, 0xec, 0x9b, - 0xe8, 0x27, 0xec, 0x9b, 0xe9, 0x27, 0xed, 0x9b, 0xe8, 0x27, 0xed, 0x9b, - 0xe9, 0x27, 0xed, 0x9b, 0xe8, 0x27, 0xed, 0x9b, 0xe9, 0x27, 0xee, 0x9b, - 0xe8, 0x27, 0xee, 0x9b, 0xe9, 0x27, 0xee, 0x9c, 0xeb, 0x27, 0xee, 0x9b, - 0xe9, 0x27, 0xef, 0x9c, 0xeb, 0x27, 0xef, 0x9b, 0xe9, 0x27, 0xef, 0x9c, - 0xeb, 0x27, 0xef, 0x9c, 0xeb, 0x27, 0xf0, 0x9c, 0xeb, 0x27, 0xf0, 0x9c, - 0xeb, 0x27, 0xf0, 0x9c, 0xeb, 0x27, 0xf0, 0x9d, 0xed, 0x27, 0xf1, 0x9d, - 0xed, 0x27, 0xf1, 0x9d, 0xed, 0x27, 0xf1, 0x9d, 0xed, 0x27, 0xf1, 0x9d, - 0xed, 0x27, 0xf2, 0x9d, 0xed, 0x27, 0xf2, 0x9d, 0xed, 0x27, 0xf2, 0x9d, - 0xed, 0x27, 0xf2, 0x9d, 0xed, 0x27, 0xf2, 0x9d, 0xed, 0x27, 0xf3, 0x9d, - 0xed, 0x27, 0xf3, 0x9d, 0xed, 0x27, 0xf3, 0x9e, 0xef, 0x27, 0xf3, 0x9d, - 0xed, 0x27, 0xf4, 0x9e, 0xef, 0x27, 0xf4, 0x9e, 0xef, 0x27, 0xf4, 0x9e, - 0xef, 0x27, 0xf4, 0x9e, 0xef, 0x27, 0xf5, 0x9e, 0xef, 0x27, 0xf5, 0x9e, - 0xef, 0x27, 0xf5, 0x9e, 0xef, 0x27, 0xf5, 0x9f, 0xf2, 0x27, 0xf5, 0x9e, - 0xef, 0x27, 0xf6, 0x9f, 0xf2, 0x27, 0xf6, 0x9e, 0xef, 0x27, 0xf6, 0x9f, - 0xf2, 0x27, 0xf6, 0x9f, 0xf1, 0x27, 0xf7, 0x9f, 0xf2, 0x27, 0xf7, 0x9f, - 0xf1, 0x27, 0xf7, 0x9f, 0xf2, 0x27, 0xf7, 0x9f, 0xf4, 0x27, 0xf8, 0x9f, - 0xf4, 0x27, 0xf8, 0x9f, 0xf4, 0x27, 0xf8, 0x9f, 0xf4, 0x27, 0xf8, 0x9f, - 0xf4, 0x27, 0xf8, 0x9f, 0xf4, 0x27, 0xf9, 0x9f, 0xf4, 0x27, 0xf9, 0x9f, - 0xf4, 0x27, 0xf9, 0x9f, 0xf4, 0x27, 0xf9, 0x9f, 0xf4, 0x27, 0xfa, 0xa0, - 0xf6, 0x27, 0xfa, 0x9f, 0xf4, 0x27, 0xfa, 0xa0, 0xf6, 0x27, 0xfa, 0x9f, - 0xf4, 0x27, 0xfa, 0xa0, 0xf6, 0x27, 0xfb, 0xa0, 0xf6, 0x27, 0xfb, 0xa0, - 0xf6, 0x27, 0xfb, 0xa0, 0xf6, 0x27, 0xfb, 0xa0, 0xf6, 0x27, 0xfc, 0xa1, - 0xf8, 0x27, 0xfc, 0xa0, 0xf6, 0x27, 0xfc, 0xa1, 0xf8, 0x27, 0xfc, 0xa0, - 0xf6, 0x27, 0xfc, 0xa1, 0xf8, 0x27, 0xfd, 0xa1, 0xf8, 0x27, 0xfd, 0xa1, - 0xf8, 0x27, 0xfd, 0xa1, 0xf8, 0x27, 0xfd, 0xa1, 0xf8, 0x27, 0xfe, 0xa2, - 0xfa, 0x27, 0xfe, 0xa2, 0xfa, 0x27, 0xfe, 0xa2, 0xfa, 0x27, 0xfe, 0xa2, - 0xfa, 0x27, 0xfe, 0xa2, 0xfa, 0x27, 0xff, 0xa2, 0xfa, 0x27, 0xff, 0xa2, - 0xfa, 0x27, 0x03, 0x84, 0x9b, 0x28, 0x0a, 0x86, 0x9b, 0x28, 0x0f, 0x84, - 0x9b, 0x28, 0x14, 0x86, 0x9b, 0x28, 0x17, 0x84, 0x9b, 0x28, 0x1b, 0x86, - 0x9b, 0x28, 0x1e, 0x84, 0x9b, 0x28, 0x20, 0x86, 0x9b, 0x28, 0x23, 0x84, - 0x9b, 0x28, 0x25, 0x86, 0x9b, 0x28, 0x27, 0x84, 0x9b, 0x28, 0x29, 0x86, - 0x9b, 0x28, 0x2b, 0x84, 0x9b, 0x28, 0x2d, 0x86, 0x9b, 0x28, 0x2f, 0x84, - 0x9b, 0x28, 0x31, 0x86, 0x9b, 0x28, 0x32, 0x84, 0x9b, 0x28, 0x34, 0x86, - 0x9b, 0x28, 0x35, 0x84, 0x9b, 0x28, 0x37, 0x86, 0x9b, 0x28, 0x38, 0x84, - 0x9b, 0x28, 0x3a, 0x86, 0x9b, 0x28, 0x3b, 0x84, 0x9b, 0x28, 0x3c, 0x86, - 0x9b, 0x28, 0x3e, 0x84, 0x9b, 0x28, 0x3f, 0x86, 0x9b, 0x28, 0x40, 0x84, - 0x9b, 0x28, 0x42, 0x86, 0x9b, 0x28, 0x43, 0x84, 0x9b, 0x28, 0x44, 0x86, - 0x9b, 0x28, 0x45, 0x84, 0x9b, 0x28, 0x46, 0x86, 0x9b, 0x28, 0x47, 0x84, - 0x9b, 0x28, 0x48, 0x86, 0x9b, 0x28, 0x49, 0x84, 0x9b, 0x28, 0x4a, 0x86, - 0x9b, 0x28, 0x4b, 0x84, 0x9b, 0x28, 0x4c, 0x86, 0x9b, 0x28, 0x4d, 0x84, - 0x9b, 0x28, 0x4e, 0x86, 0x9b, 0x28, 0x4f, 0x84, 0x9b, 0x28, 0x50, 0x86, - 0x9b, 0x28, 0x51, 0x84, 0x9b, 0x28, 0x52, 0x86, 0x9b, 0x28, 0x53, 0x84, - 0x9b, 0x28, 0x54, 0x86, 0x9b, 0x28, 0x55, 0x84, 0x9b, 0x28, 0x56, 0x86, - 0x9b, 0x28, 0x57, 0x84, 0x9b, 0x28, 0x58, 0x86, 0x9b, 0x28, 0x58, 0x84, - 0x9b, 0x28, 0x59, 0x86, 0x9b, 0x28, 0x5a, 0x84, 0x9b, 0x28, 0x5b, 0x86, - 0x9b, 0x28, 0x5c, 0x84, 0x9b, 0x28, 0x5d, 0x86, 0x9b, 0x28, 0x5d, 0x84, - 0x9b, 0x28, 0x5e, 0x86, 0x9b, 0x28, 0x5f, 0x84, 0x9b, 0x28, 0x60, 0x86, - 0x9b, 0x28, 0x60, 0x84, 0x9b, 0x28, 0x61, 0x86, 0x9b, 0x28, 0x62, 0x84, - 0x9b, 0x28, 0x63, 0x86, 0x9b, 0x28, 0x63, 0x84, 0x9b, 0x28, 0x64, 0x86, - 0x9b, 0x28, 0x65, 0x84, 0x9b, 0x28, 0x66, 0x86, 0x9b, 0x28, 0x66, 0x84, - 0x9b, 0x28, 0x67, 0x86, 0x9b, 0x28, 0x68, 0x84, 0x9b, 0x28, 0x68, 0x86, - 0x9b, 0x28, 0x69, 0x84, 0x9b, 0x28, 0x6a, 0x86, 0x9b, 0x28, 0x6a, 0x84, - 0x9b, 0x28, 0x6b, 0x86, 0x9b, 0x28, 0x6c, 0x84, 0x9b, 0x28, 0x6c, 0x86, - 0x9b, 0x28, 0x6d, 0x84, 0x9b, 0x28, 0x6e, 0x86, 0x9b, 0x28, 0x6e, 0x84, - 0x9b, 0x28, 0x6f, 0x86, 0x9b, 0x28, 0x70, 0x84, 0x9b, 0x28, 0x70, 0x86, - 0x9b, 0x28, 0x71, 0x84, 0x9b, 0x28, 0x72, 0x86, 0x9b, 0x28, 0x72, 0x84, - 0x9b, 0x28, 0x73, 0x86, 0x9b, 0x28, 0x73, 0x84, 0x9b, 0x28, 0x74, 0x84, - 0x9c, 0x28, 0x75, 0x84, 0x9b, 0x28, 0x75, 0x84, 0x9c, 0x28, 0x76, 0x84, - 0x9b, 0x28, 0x76, 0x84, 0x9c, 0x28, 0x77, 0x84, 0x9b, 0x28, 0x78, 0x84, - 0x9c, 0x28, 0x78, 0x84, 0x9b, 0x28, 0x79, 0x84, 0x9c, 0x28, 0x79, 0x84, - 0x9b, 0x28, 0x7a, 0x84, 0x9c, 0x28, 0x7a, 0x84, 0x9b, 0x28, 0x7b, 0x84, - 0x9c, 0x28, 0x7c, 0x84, 0x9b, 0x28, 0x7c, 0x84, 0x9c, 0x28, 0x7d, 0x84, - 0x9b, 0x28, 0x7d, 0x84, 0x9c, 0x28, 0x7e, 0x84, 0x9b, 0x28, 0x7e, 0x84, - 0x9c, 0x28, 0x7f, 0x84, 0x9b, 0x28, 0x7f, 0x84, 0x9c, 0x28, 0x80, 0x84, - 0x9b, 0x28, 0x81, 0x84, 0x9c, 0x28, 0x81, 0x84, 0x9b, 0x28, 0x82, 0x84, - 0x9c, 0x28, 0x82, 0x84, 0x9b, 0x28, 0x83, 0x84, 0x9c, 0x28, 0x83, 0x84, - 0x9b, 0x28, 0x84, 0x84, 0x9c, 0x28, 0x84, 0x84, 0x9b, 0x28, 0x85, 0x84, - 0x9c, 0x28, 0x85, 0x84, 0x9b, 0x28, 0x86, 0x84, 0x9c, 0x28, 0x86, 0x84, - 0x9b, 0x28, 0x87, 0x84, 0x9c, 0x28, 0x87, 0x84, 0x9b, 0x28, 0x88, 0x84, - 0x9c, 0x28, 0x88, 0x84, 0x9b, 0x28, 0x89, 0x84, 0x9c, 0x28, 0x89, 0x84, - 0x9b, 0x28, 0x8a, 0x84, 0x9c, 0x28, 0x8a, 0x84, 0x9b, 0x28, 0x8b, 0x84, - 0x9c, 0x28, 0x8b, 0x84, 0x9b, 0x28, 0x8c, 0x84, 0x9c, 0x28, 0x8c, 0x84, - 0x9b, 0x28, 0x8d, 0x84, 0x9c, 0x28, 0x8d, 0x84, 0x9b, 0x28, 0x8e, 0x84, - 0x9c, 0x28, 0x8e, 0x84, 0x9b, 0x28, 0x8e, 0x84, 0x9c, 0x28, 0x8f, 0x84, - 0x9b, 0x28, 0x8f, 0x84, 0x9c, 0x28, 0x90, 0x84, 0x9b, 0x28, 0x90, 0x84, - 0x9c, 0x28, 0x91, 0x84, 0x9b, 0x28, 0x91, 0x84, 0x9c, 0x28, 0x92, 0x84, - 0x9b, 0x28, 0x92, 0x84, 0x9c, 0x28, 0x93, 0x84, 0x9b, 0x28, 0x93, 0x84, - 0x9c, 0x28, 0x94, 0x84, 0x9b, 0x28, 0x94, 0x84, 0x9c, 0x28, 0x94, 0x84, - 0x9b, 0x28, 0x95, 0x84, 0x9c, 0x28, 0x95, 0x84, 0x9b, 0x28, 0x96, 0x84, - 0x9c, 0x28, 0x96, 0x84, 0x9b, 0x28, 0x97, 0x84, 0x9c, 0x28, 0x97, 0x84, - 0x9b, 0x28, 0x98, 0x84, 0x9c, 0x28, 0x98, 0x84, 0x9b, 0x28, 0x98, 0x84, - 0x9c, 0x28, 0x99, 0x84, 0x9b, 0x28, 0x99, 0x84, 0x9c, 0x28, 0x9a, 0x84, - 0x9b, 0x28, 0x9a, 0x84, 0x9c, 0x28, 0x9a, 0x84, 0x9b, 0x28, 0x9b, 0x84, - 0x9c, 0x28, 0x9b, 0x84, 0x9b, 0x28, 0x9c, 0x84, 0x9c, 0x28, 0x9c, 0x84, - 0x9c, 0x28, 0x9d, 0x84, 0x9d, 0x28, 0x9d, 0x84, 0x9d, 0x28, 0x9d, 0x84, - 0x9d, 0x28, 0x9e, 0x84, 0x9e, 0x28, 0x9e, 0x84, 0x9e, 0x28, 0x9f, 0x84, - 0x9f, 0x28, 0x9f, 0x84, 0x9e, 0x28, 0x9f, 0x84, 0x9f, 0x28, 0xa0, 0x84, - 0x9e, 0x28, 0xa0, 0x84, 0x9f, 0x28, 0xa1, 0x84, 0x9e, 0x28, 0xa1, 0x84, - 0x9f, 0x28, 0xa1, 0x84, 0x9e, 0x28, 0xa2, 0x84, 0x9f, 0x28, 0xa2, 0x84, - 0x9e, 0x28, 0xa3, 0x84, 0x9f, 0x28, 0xa3, 0x84, 0x9e, 0x28, 0xa3, 0x84, - 0x9f, 0x28, 0xa4, 0x85, 0xa2, 0x28, 0xa4, 0x85, 0xa2, 0x28, 0xa5, 0x85, - 0xa2, 0x28, 0xa5, 0x85, 0xa2, 0x28, 0xa5, 0x85, 0xa2, 0x28, 0xa6, 0x85, - 0xa2, 0x28, 0xa6, 0x85, 0xa2, 0x28, 0xa6, 0x85, 0xa2, 0x28, 0xa7, 0x85, - 0xa2, 0x28, 0xa7, 0x86, 0xa6, 0x28, 0xa8, 0x86, 0xa6, 0x28, 0xa8, 0x86, - 0xa6, 0x28, 0xa8, 0x86, 0xa6, 0x28, 0xa9, 0x86, 0xa6, 0x28, 0xa9, 0x86, - 0xa6, 0x28, 0xaa, 0x86, 0xa6, 0x28, 0xaa, 0x86, 0xa6, 0x28, 0xaa, 0x86, - 0xa6, 0x28, 0xab, 0x86, 0xa6, 0x28, 0xab, 0x87, 0xaa, 0x28, 0xab, 0x86, - 0xa6, 0x28, 0xac, 0x87, 0xaa, 0x28, 0xac, 0x87, 0xa9, 0x28, 0xac, 0x87, - 0xaa, 0x28, 0xad, 0x87, 0xa9, 0x28, 0xad, 0x87, 0xaa, 0x28, 0xae, 0x87, - 0xa9, 0x28, 0xae, 0x87, 0xaa, 0x28, 0xae, 0x88, 0xad, 0x28, 0xaf, 0x88, - 0xad, 0x28, 0xaf, 0x88, 0xad, 0x28, 0xaf, 0x88, 0xad, 0x28, 0xb0, 0x88, - 0xad, 0x28, 0xb0, 0x88, 0xad, 0x28, 0xb0, 0x88, 0xad, 0x28, 0xb1, 0x88, - 0xad, 0x28, 0xb1, 0x88, 0xad, 0x28, 0xb2, 0x88, 0xad, 0x28, 0xb2, 0x88, - 0xad, 0x28, 0xb2, 0x88, 0xad, 0x28, 0xb3, 0x89, 0xb0, 0x28, 0xb3, 0x89, - 0xb0, 0x28, 0xb3, 0x89, 0xb0, 0x28, 0xb4, 0x89, 0xb0, 0x28, 0xb4, 0x89, - 0xb0, 0x28, 0xb4, 0x89, 0xb2, 0x28, 0xb5, 0x89, 0xb0, 0x28, 0xb5, 0x89, - 0xb2, 0x28, 0xb5, 0x89, 0xb0, 0x28, 0xb6, 0x89, 0xb2, 0x28, 0xb6, 0x89, - 0xb2, 0x28, 0xb6, 0x89, 0xb2, 0x28, 0xb7, 0x89, 0xb2, 0x28, 0xb7, 0x89, - 0xb2, 0x28, 0xb7, 0x8a, 0xb3, 0x28, 0xb8, 0x8a, 0xb4, 0x28, 0xb8, 0x8a, - 0xb3, 0x28, 0xb8, 0x8a, 0xb4, 0x28, 0xb9, 0x8b, 0xb7, 0x28, 0xb9, 0x8b, - 0xb7, 0x28, 0xb9, 0x8b, 0xb7, 0x28, 0xba, 0x8b, 0xb7, 0x28, 0xba, 0x8b, - 0xb7, 0x28, 0xba, 0x8b, 0xb7, 0x28, 0xbb, 0x8b, 0xb7, 0x28, 0xbb, 0x8b, - 0xb7, 0x28, 0xbb, 0x8b, 0xb7, 0x28, 0xbc, 0x8b, 0xb7, 0x28, 0xbc, 0x8c, - 0xba, 0x28, 0xbc, 0x8b, 0xb7, 0x28, 0xbd, 0x8c, 0xba, 0x28, 0xbd, 0x8c, - 0xba, 0x28, 0xbd, 0x8c, 0xba, 0x28, 0xbe, 0x8c, 0xba, 0x28, 0xbe, 0x8c, - 0xba, 0x28, 0xbe, 0x8c, 0xba, 0x28, 0xbf, 0x8c, 0xba, 0x28, 0xbf, 0x8c, - 0xba, 0x28, 0xbf, 0x8c, 0xba, 0x28, 0xc0, 0x8d, 0xbd, 0x28, 0xc0, 0x8d, - 0xbd, 0x28, 0xc0, 0x8d, 0xbd, 0x28, 0xc1, 0x8d, 0xbd, 0x28, 0xc1, 0x8d, - 0xbd, 0x28, 0xc1, 0x8d, 0xbd, 0x28, 0xc1, 0x8d, 0xbd, 0x28, 0xc2, 0x8d, - 0xbd, 0x28, 0xc2, 0x8d, 0xbd, 0x28, 0xc2, 0x8e, 0xc0, 0x28, 0xc3, 0x8e, - 0xc0, 0x28, 0xc3, 0x8e, 0xc0, 0x28, 0xc3, 0x8e, 0xc0, 0x28, 0xc4, 0x8e, - 0xc0, 0x28, 0xc4, 0x8e, 0xc0, 0x28, 0xc4, 0x8e, 0xc0, 0x28, 0xc5, 0x8e, - 0xc0, 0x28, 0xc5, 0x8e, 0xc0, 0x28, 0xc5, 0x8e, 0xc0, 0x28, 0xc6, 0x8e, - 0xc3, 0x28, 0xc6, 0x8e, 0xc0, 0x28, 0xc6, 0x8e, 0xc3, 0x28, 0xc6, 0x8e, - 0xc3, 0x28, 0xc7, 0x8e, 0xc3, 0x28, 0xc7, 0x8e, 0xc3, 0x28, 0xc7, 0x8e, - 0xc3, 0x28, 0xc8, 0x8e, 0xc3, 0x28, 0xc8, 0x8e, 0xc3, 0x28, 0xc8, 0x8f, - 0xc6, 0x28, 0xc9, 0x8e, 0xc3, 0x28, 0xc9, 0x8f, 0xc6, 0x28, 0xc9, 0x8f, - 0xc6, 0x28, 0xc9, 0x8f, 0xc6, 0x28, 0xca, 0x8f, 0xc6, 0x28, 0xca, 0x8f, - 0xc6, 0x28, 0xca, 0x8f, 0xc6, 0x28, 0xcb, 0x8f, 0xc6, 0x28, 0xcb, 0x90, - 0xc9, 0x28, 0xcb, 0x90, 0xc9, 0x28, 0xcc, 0x90, 0xc9, 0x28, 0xcc, 0x90, - 0xc9, 0x28, 0xcc, 0x90, 0xc9, 0x28, 0xcc, 0x90, 0xc9, 0x28, 0xcd, 0x90, - 0xc9, 0x28, 0xcd, 0x90, 0xc9, 0x28, 0xcd, 0x90, 0xc9, 0x28, 0xce, 0x90, - 0xc9, 0x28, 0xce, 0x91, 0xcc, 0x28, 0xce, 0x90, 0xc9, 0x28, 0xce, 0x91, - 0xcc, 0x28, 0xcf, 0x90, 0xc9, 0x28, 0xcf, 0x91, 0xcc, 0x28, 0xcf, 0x91, - 0xcb, 0x28, 0xd0, 0x91, 0xcc, 0x28, 0xd0, 0x91, 0xcb, 0x28, 0xd0, 0x91, - 0xcc, 0x28, 0xd0, 0x91, 0xcb, 0x28, 0xd1, 0x91, 0xcc, 0x28, 0xd1, 0x92, - 0xce, 0x28, 0xd1, 0x92, 0xce, 0x28, 0xd2, 0x92, 0xce, 0x28, 0xd2, 0x92, - 0xce, 0x28, 0xd2, 0x92, 0xce, 0x28, 0xd2, 0x92, 0xce, 0x28, 0xd3, 0x92, - 0xce, 0x28, 0xd3, 0x92, 0xce, 0x28, 0xd3, 0x92, 0xce, 0x28, 0xd4, 0x92, - 0xce, 0x28, 0xd4, 0x93, 0xd1, 0x28, 0xd4, 0x92, 0xce, 0x28, 0xd4, 0x93, - 0xd1, 0x28, 0xd5, 0x93, 0xd1, 0x28, 0xd5, 0x93, 0xd1, 0x28, 0xd5, 0x93, - 0xd1, 0x28, 0xd6, 0x93, 0xd1, 0x28, 0xd6, 0x93, 0xd1, 0x28, 0xd6, 0x93, - 0xd1, 0x28, 0xd6, 0x94, 0xd4, 0x28, 0xd7, 0x93, 0xd1, 0x28, 0xd7, 0x94, - 0xd4, 0x28, 0xd7, 0x94, 0xd3, 0x28, 0xd7, 0x94, 0xd4, 0x28, 0xd8, 0x94, - 0xd3, 0x28, 0xd8, 0x94, 0xd4, 0x28, 0xd8, 0x94, 0xd3, 0x28, 0xd9, 0x94, - 0xd4, 0x28, 0xd9, 0x95, 0xd6, 0x28, 0xd9, 0x95, 0xd6, 0x28, 0xd9, 0x95, - 0xd6, 0x28, 0xda, 0x95, 0xd6, 0x28, 0xda, 0x95, 0xd6, 0x28, 0xda, 0x95, - 0xd6, 0x28, 0xda, 0x95, 0xd6, 0x28, 0xdb, 0x95, 0xd6, 0x28, 0xdb, 0x95, - 0xd6, 0x28, 0xdb, 0x95, 0xd6, 0x28, 0xdb, 0x95, 0xd6, 0x28, 0xdc, 0x95, - 0xd6, 0x28, 0xdc, 0x96, 0xd9, 0x28, 0xdc, 0x95, 0xd6, 0x28, 0xdd, 0x96, - 0xd9, 0x28, 0xdd, 0x96, 0xd9, 0x28, 0xdd, 0x96, 0xd9, 0x28, 0xdd, 0x96, - 0xd9, 0x28, 0xde, 0x96, 0xd9, 0x28, 0xde, 0x96, 0xd9, 0x28, 0xde, 0x96, - 0xd9, 0x28, 0xde, 0x97, 0xdb, 0x28, 0xdf, 0x96, 0xd9, 0x28, 0xdf, 0x97, - 0xdb, 0x28, 0xdf, 0x97, 0xdb, 0x28, 0xdf, 0x97, 0xdb, 0x28, 0xe0, 0x97, - 0xdb, 0x28, 0xe0, 0x97, 0xdb, 0x28, 0xe0, 0x97, 0xdb, 0x28, 0xe1, 0x97, - 0xdb, 0x28, 0xe1, 0x98, 0xde, 0x28, 0xe1, 0x98, 0xde, 0x28, 0xe1, 0x98, - 0xde, 0x28, 0xe2, 0x98, 0xde, 0x28, 0xe2, 0x98, 0xde, 0x28, 0xe2, 0x98, - 0xde, 0x28, 0xe2, 0x98, 0xde, 0x28, 0xe3, 0x98, 0xde, 0x28, 0xe3, 0x98, - 0xde, 0x28, 0xe3, 0x98, 0xde, 0x28, 0xe3, 0x98, 0xe0, 0x28, 0xe4, 0x98, - 0xde, 0x28, 0xe4, 0x98, 0xe0, 0x28, 0xe4, 0x98, 0xde, 0x28, 0xe4, 0x98, - 0xe0, 0x28, 0xe5, 0x98, 0xe0, 0x28, 0xe5, 0x98, 0xe0, 0x28, 0xe5, 0x98, - 0xe0, 0x28, 0xe5, 0x98, 0xe0, 0x28, 0xe6, 0x99, 0xe3, 0x28, 0xe6, 0x98, - 0xe0, 0x28, 0xe6, 0x99, 0xe3, 0x28, 0xe6, 0x98, 0xe0, 0x28, 0xe7, 0x99, - 0xe3, 0x28, 0xe7, 0x99, 0xe2, 0x28, 0xe7, 0x99, 0xe3, 0x28, 0xe7, 0x99, - 0xe2, 0x28, 0xe8, 0x99, 0xe3, 0x28, 0xe8, 0x9a, 0xe5, 0x28, 0xe8, 0x9a, - 0xe5, 0x28, 0xe8, 0x9a, 0xe5, 0x28, 0xe9, 0x9a, 0xe5, 0x28, 0xe9, 0x9a, - 0xe5, 0x28, 0xe9, 0x9a, 0xe5, 0x28, 0xe9, 0x9a, 0xe5, 0x28, 0xea, 0x9a, - 0xe5, 0x28, 0xea, 0x9a, 0xe5, 0x28, 0xea, 0x9a, 0xe5, 0x28, 0xea, 0x9a, - 0xe5, 0x28, 0xeb, 0x9a, 0xe5, 0x28, 0xeb, 0x9b, 0xe7, 0x28, 0xeb, 0x9a, - 0xe5, 0x28, 0xeb, 0x9b, 0xe7, 0x28, 0xec, 0x9b, 0xe7, 0x28, 0xec, 0x9b, - 0xe7, 0x28, 0xec, 0x9b, 0xe7, 0x28, 0xec, 0x9b, 0xe7, 0x28, 0xec, 0x9b, - 0xe7, 0x28, 0xed, 0x9b, 0xe7, 0x28, 0xed, 0x9c, 0xea, 0x28, 0xed, 0x9c, - 0xea, 0x28, 0xed, 0x9c, 0xea, 0x28, 0xee, 0x9c, 0xea, 0x28, 0xee, 0x9c, - 0xea, 0x28, 0xee, 0x9c, 0xea, 0x28, 0xee, 0x9c, 0xea, 0x28, 0xef, 0x9c, - 0xea, 0x28, 0xef, 0x9c, 0xea, 0x28, 0xef, 0x9c, 0xea, 0x28, 0xef, 0x9d, - 0xec, 0x28, 0xf0, 0x9c, 0xea, 0x28, 0xf0, 0x9d, 0xec, 0x28, 0xf0, 0x9c, - 0xea, 0x28, 0xf0, 0x9d, 0xec, 0x28, 0xf1, 0x9d, 0xec, 0x28, 0xf1, 0x9d, - 0xec, 0x28, 0xf1, 0x9d, 0xec, 0x28, 0xf1, 0x9d, 0xec, 0x28, 0xf2, 0x9d, - 0xee, 0x28, 0xf2, 0x9d, 0xec, 0x28, 0xf2, 0x9d, 0xee, 0x28, 0xf2, 0x9d, - 0xec, 0x28, 0xf2, 0x9d, 0xee, 0x28, 0xf3, 0x9d, 0xee, 0x28, 0xf3, 0x9d, - 0xee, 0x28, 0xf3, 0x9d, 0xee, 0x28, 0xf3, 0x9d, 0xee, 0x28, 0xf4, 0x9d, - 0xee, 0x28, 0xf4, 0x9d, 0xee, 0x28, 0xf4, 0x9e, 0xf0, 0x28, 0xf4, 0x9e, - 0xf1, 0x28, 0xf5, 0x9e, 0xf0, 0x28, 0xf5, 0x9e, 0xf1, 0x28, 0xf5, 0x9e, - 0xf0, 0x28, 0xf5, 0x9e, 0xf1, 0x28, 0xf5, 0x9e, 0xf0, 0x28, 0xf6, 0x9e, - 0xf1, 0x28, 0xf6, 0x9e, 0xf0, 0x28, 0xf6, 0x9e, 0xf1, 0x28, 0xf6, 0x9f, - 0xf3, 0x28, 0xf7, 0x9e, 0xf1, 0x28, 0xf7, 0x9f, 0xf3, 0x28, 0xf7, 0x9e, - 0xf1, 0x28, 0xf7, 0x9f, 0xf3, 0x28, 0xf8, 0x9f, 0xf2, 0x28, 0xf8, 0x9f, - 0xf3, 0x28, 0xf8, 0x9f, 0xf2, 0x28, 0xf8, 0x9f, 0xf3, 0x28, 0xf8, 0xa0, - 0xf5, 0x28, 0xf9, 0x9f, 0xf3, 0x28, 0xf9, 0xa0, 0xf5, 0x28, 0xf9, 0x9f, - 0xf3, 0x28, 0xf9, 0xa0, 0xf5, 0x28, 0xfa, 0xa0, 0xf5, 0x28, 0xfa, 0xa0, - 0xf5, 0x28, 0xfa, 0xa0, 0xf5, 0x28, 0xfa, 0xa0, 0xf5, 0x28, 0xfa, 0xa1, - 0xf7, 0x28, 0xfb, 0xa1, 0xf7, 0x28, 0xfb, 0xa1, 0xf7, 0x28, 0xfb, 0xa1, - 0xf7, 0x28, 0xfb, 0xa1, 0xf7, 0x28, 0xfc, 0xa1, 0xf7, 0x28, 0xfc, 0xa1, - 0xf7, 0x28, 0xfc, 0xa1, 0xf7, 0x28, 0xfc, 0xa1, 0xf7, 0x28, 0xfc, 0xa1, - 0xf7, 0x28, 0xfd, 0xa1, 0xf9, 0x28, 0xfd, 0xa1, 0xf7, 0x28, 0xfd, 0xa1, - 0xf9, 0x28, 0xfd, 0xa1, 0xf7, 0x28, 0xfe, 0xa1, 0xf9, 0x28, 0xfe, 0xa1, - 0xf9, 0x28, 0xfe, 0xa1, 0xf9, 0x28, 0xfe, 0xa1, 0xf9, 0x28, 0xfe, 0xa1, - 0xf9, 0x28, 0xff, 0xa2, 0xfb, 0x28, 0xff, 0xa1, 0xf9, 0x28, 0x03, 0x83, - 0x9b, 0x28, 0x0a, 0x83, 0x9b, 0x28, 0x0f, 0x83, 0x9b, 0x28, 0x14, 0x83, - 0x9b, 0x28, 0x17, 0x83, 0x9b, 0x28, 0x1b, 0x83, 0x9b, 0x28, 0x1e, 0x83, - 0x9b, 0x28, 0x20, 0x86, 0x9b, 0x28, 0x23, 0x83, 0x9b, 0x28, 0x25, 0x86, - 0x9b, 0x28, 0x27, 0x83, 0x9b, 0x28, 0x29, 0x86, 0x9b, 0x28, 0x2b, 0x83, - 0x9b, 0x28, 0x2d, 0x86, 0x9b, 0x28, 0x2f, 0x83, 0x9b, 0x28, 0x31, 0x86, - 0x9b, 0x28, 0x32, 0x83, 0x9b, 0x28, 0x34, 0x86, 0x9b, 0x28, 0x35, 0x83, - 0x9b, 0x28, 0x37, 0x86, 0x9b, 0x28, 0x38, 0x83, 0x9b, 0x28, 0x3a, 0x86, - 0x9b, 0x28, 0x3b, 0x83, 0x9b, 0x28, 0x3c, 0x86, 0x9b, 0x28, 0x3e, 0x83, - 0x9b, 0x28, 0x3f, 0x86, 0x9b, 0x28, 0x40, 0x83, 0x9b, 0x28, 0x42, 0x86, - 0x9b, 0x28, 0x43, 0x83, 0x9b, 0x28, 0x44, 0x86, 0x9b, 0x28, 0x45, 0x83, - 0x9b, 0x28, 0x46, 0x86, 0x9b, 0x28, 0x47, 0x83, 0x9b, 0x28, 0x48, 0x86, - 0x9b, 0x28, 0x49, 0x83, 0x9b, 0x28, 0x4a, 0x86, 0x9b, 0x28, 0x4b, 0x83, - 0x9b, 0x28, 0x4c, 0x86, 0x9b, 0x28, 0x4d, 0x83, 0x9b, 0x28, 0x4e, 0x86, - 0x9b, 0x28, 0x4f, 0x83, 0x9b, 0x28, 0x50, 0x86, 0x9b, 0x28, 0x51, 0x83, - 0x9b, 0x28, 0x52, 0x86, 0x9b, 0x28, 0x53, 0x83, 0x9b, 0x28, 0x54, 0x86, - 0x9b, 0x28, 0x55, 0x83, 0x9b, 0x28, 0x56, 0x86, 0x9b, 0x28, 0x57, 0x83, - 0x9b, 0x28, 0x58, 0x86, 0x9b, 0x28, 0x58, 0x83, 0x9b, 0x28, 0x59, 0x86, - 0x9b, 0x28, 0x5a, 0x83, 0x9b, 0x28, 0x5b, 0x83, 0x9c, 0x28, 0x5c, 0x83, - 0x9b, 0x28, 0x5d, 0x83, 0x9c, 0x28, 0x5d, 0x83, 0x9b, 0x28, 0x5e, 0x83, - 0x9c, 0x28, 0x5f, 0x83, 0x9b, 0x28, 0x60, 0x83, 0x9c, 0x28, 0x60, 0x83, - 0x9b, 0x28, 0x61, 0x83, 0x9c, 0x28, 0x62, 0x83, 0x9b, 0x28, 0x63, 0x83, - 0x9c, 0x28, 0x63, 0x83, 0x9b, 0x28, 0x64, 0x83, 0x9c, 0x28, 0x65, 0x83, - 0x9b, 0x28, 0x66, 0x83, 0x9c, 0x28, 0x66, 0x83, 0x9b, 0x28, 0x67, 0x83, - 0x9c, 0x28, 0x68, 0x83, 0x9b, 0x28, 0x68, 0x83, 0x9c, 0x28, 0x69, 0x83, - 0x9b, 0x28, 0x6a, 0x83, 0x9c, 0x28, 0x6a, 0x83, 0x9b, 0x28, 0x6b, 0x83, - 0x9c, 0x28, 0x6c, 0x83, 0x9b, 0x28, 0x6c, 0x83, 0x9c, 0x28, 0x6d, 0x83, - 0x9b, 0x28, 0x6e, 0x83, 0x9c, 0x28, 0x6e, 0x83, 0x9b, 0x28, 0x6f, 0x83, - 0x9c, 0x28, 0x70, 0x83, 0x9b, 0x28, 0x70, 0x83, 0x9c, 0x28, 0x71, 0x83, - 0x9b, 0x28, 0x72, 0x83, 0x9c, 0x28, 0x72, 0x83, 0x9b, 0x28, 0x73, 0x83, - 0x9c, 0x28, 0x73, 0x83, 0x9b, 0x28, 0x74, 0x83, 0x9c, 0x28, 0x75, 0x83, - 0x9b, 0x28, 0x75, 0x83, 0x9c, 0x28, 0x76, 0x83, 0x9b, 0x28, 0x76, 0x83, - 0x9c, 0x28, 0x77, 0x83, 0x9b, 0x28, 0x78, 0x83, 0x9c, 0x28, 0x78, 0x83, - 0x9b, 0x28, 0x79, 0x83, 0x9c, 0x28, 0x79, 0x83, 0x9b, 0x28, 0x7a, 0x83, - 0x9c, 0x28, 0x7a, 0x83, 0x9b, 0x28, 0x7b, 0x83, 0x9c, 0x28, 0x7c, 0x83, - 0x9b, 0x28, 0x7c, 0x83, 0x9c, 0x28, 0x7d, 0x83, 0x9b, 0x28, 0x7d, 0x83, - 0x9c, 0x28, 0x7e, 0x83, 0x9b, 0x28, 0x7e, 0x83, 0x9c, 0x28, 0x7f, 0x83, - 0x9b, 0x28, 0x7f, 0x83, 0x9c, 0x28, 0x80, 0x83, 0x9b, 0x28, 0x81, 0x83, - 0x9c, 0x28, 0x81, 0x83, 0x9b, 0x28, 0x82, 0x83, 0x9c, 0x28, 0x82, 0x83, - 0x9b, 0x28, 0x83, 0x83, 0x9c, 0x28, 0x83, 0x83, 0x9b, 0x28, 0x84, 0x83, - 0x9c, 0x28, 0x84, 0x83, 0x9b, 0x28, 0x85, 0x83, 0x9c, 0x28, 0x85, 0x83, - 0x9b, 0x28, 0x86, 0x83, 0x9c, 0x28, 0x86, 0x83, 0x9b, 0x28, 0x87, 0x83, - 0x9c, 0x28, 0x87, 0x83, 0x9b, 0x28, 0x88, 0x83, 0x9c, 0x28, 0x88, 0x83, - 0x9b, 0x28, 0x89, 0x83, 0x9c, 0x28, 0x89, 0x83, 0x9b, 0x28, 0x8a, 0x83, - 0x9c, 0x28, 0x8a, 0x83, 0x9b, 0x28, 0x8b, 0x83, 0x9c, 0x28, 0x8b, 0x83, - 0x9b, 0x28, 0x8c, 0x83, 0x9c, 0x28, 0x8c, 0x83, 0x9b, 0x28, 0x8d, 0x83, - 0x9c, 0x28, 0x8d, 0x83, 0x9b, 0x28, 0x8e, 0x83, 0x9c, 0x28, 0x8e, 0x83, - 0x9b, 0x28, 0x8e, 0x83, 0x9c, 0x28, 0x8f, 0x83, 0x9b, 0x28, 0x8f, 0x83, - 0x9c, 0x28, 0x90, 0x83, 0x9b, 0x28, 0x90, 0x83, 0x9c, 0x28, 0x91, 0x83, - 0x9b, 0x28, 0x91, 0x83, 0x9c, 0x28, 0x92, 0x83, 0x9b, 0x28, 0x92, 0x83, - 0x9c, 0x28, 0x93, 0x83, 0x9b, 0x28, 0x93, 0x83, 0x9c, 0x28, 0x94, 0x83, - 0x9b, 0x28, 0x94, 0x83, 0x9c, 0x28, 0x94, 0x83, 0x9b, 0x28, 0x95, 0x83, - 0x9c, 0x28, 0x95, 0x83, 0x9b, 0x28, 0x96, 0x83, 0x9c, 0x28, 0x96, 0x83, - 0x9b, 0x28, 0x97, 0x83, 0x9c, 0x28, 0x97, 0x83, 0x9b, 0x28, 0x98, 0x83, - 0x9c, 0x28, 0x98, 0x83, 0x9b, 0x28, 0x98, 0x83, 0x9c, 0x28, 0x99, 0x83, - 0x9b, 0x28, 0x99, 0x83, 0x9c, 0x28, 0x9a, 0x83, 0x9b, 0x28, 0x9a, 0x83, - 0x9c, 0x28, 0x9a, 0x83, 0x9b, 0x28, 0x9b, 0x83, 0x9c, 0x28, 0x9b, 0x83, - 0x9b, 0x28, 0x9c, 0x83, 0x9c, 0x28, 0x9c, 0x83, 0x9c, 0x28, 0x9d, 0x83, - 0x9d, 0x28, 0x9d, 0x83, 0x9c, 0x28, 0x9d, 0x83, 0x9d, 0x28, 0x9e, 0x83, - 0x9c, 0x28, 0x9e, 0x83, 0x9d, 0x28, 0x9f, 0x83, 0x9c, 0x28, 0x9f, 0x83, - 0x9d, 0x28, 0x9f, 0x83, 0x9c, 0x28, 0xa0, 0x83, 0x9d, 0x28, 0xa0, 0x83, - 0x9c, 0x28, 0xa1, 0x83, 0x9d, 0x28, 0xa1, 0x83, 0x9c, 0x28, 0xa1, 0x83, - 0x9d, 0x28, 0xa2, 0x84, 0xa0, 0x28, 0xa2, 0x84, 0xa1, 0x28, 0xa3, 0x84, - 0xa0, 0x28, 0xa3, 0x84, 0xa1, 0x28, 0xa3, 0x84, 0xa0, 0x28, 0xa4, 0x84, - 0xa1, 0x28, 0xa4, 0x84, 0xa0, 0x28, 0xa5, 0x84, 0xa1, 0x28, 0xa5, 0x84, - 0xa0, 0x28, 0xa5, 0x84, 0xa1, 0x28, 0xa6, 0x85, 0xa4, 0x28, 0xa6, 0x85, - 0xa4, 0x28, 0xa6, 0x85, 0xa4, 0x28, 0xa7, 0x85, 0xa4, 0x28, 0xa7, 0x85, - 0xa4, 0x28, 0xa8, 0x85, 0xa4, 0x28, 0xa8, 0x85, 0xa4, 0x28, 0xa8, 0x85, - 0xa4, 0x28, 0xa9, 0x85, 0xa4, 0x28, 0xa9, 0x86, 0xa8, 0x28, 0xaa, 0x85, - 0xa4, 0x28, 0xaa, 0x86, 0xa8, 0x28, 0xaa, 0x86, 0xa7, 0x28, 0xab, 0x86, - 0xa8, 0x28, 0xab, 0x86, 0xa7, 0x28, 0xab, 0x86, 0xa8, 0x28, 0xac, 0x86, - 0xa7, 0x28, 0xac, 0x86, 0xa8, 0x28, 0xac, 0x87, 0xab, 0x28, 0xad, 0x87, - 0xab, 0x28, 0xad, 0x87, 0xab, 0x28, 0xae, 0x87, 0xab, 0x28, 0xae, 0x87, - 0xab, 0x28, 0xae, 0x87, 0xab, 0x28, 0xaf, 0x87, 0xab, 0x28, 0xaf, 0x87, - 0xab, 0x28, 0xaf, 0x87, 0xab, 0x28, 0xb0, 0x87, 0xab, 0x28, 0xb0, 0x88, - 0xaf, 0x28, 0xb0, 0x87, 0xab, 0x28, 0xb1, 0x88, 0xaf, 0x28, 0xb1, 0x88, - 0xae, 0x28, 0xb2, 0x88, 0xaf, 0x28, 0xb2, 0x88, 0xae, 0x28, 0xb2, 0x88, - 0xaf, 0x28, 0xb3, 0x88, 0xae, 0x28, 0xb3, 0x88, 0xaf, 0x28, 0xb3, 0x88, - 0xae, 0x28, 0xb4, 0x88, 0xaf, 0x28, 0xb4, 0x89, 0xb2, 0x28, 0xb4, 0x89, - 0xb2, 0x28, 0xb5, 0x89, 0xb2, 0x28, 0xb5, 0x89, 0xb2, 0x28, 0xb5, 0x89, - 0xb2, 0x28, 0xb6, 0x89, 0xb2, 0x28, 0xb6, 0x89, 0xb2, 0x28, 0xb6, 0x89, - 0xb2, 0x28, 0xb7, 0x89, 0xb2, 0x28, 0xb7, 0x89, 0xb2, 0x28, 0xb7, 0x8a, - 0xb5, 0x28, 0xb8, 0x89, 0xb2, 0x28, 0xb8, 0x8a, 0xb5, 0x28, 0xb8, 0x8a, - 0xb5, 0x28, 0xb9, 0x8a, 0xb5, 0x28, 0xb9, 0x8a, 0xb5, 0x28, 0xb9, 0x8a, - 0xb5, 0x28, 0xba, 0x8a, 0xb5, 0x28, 0xba, 0x8a, 0xb5, 0x28, 0xba, 0x8b, - 0xb8, 0x28, 0xbb, 0x8a, 0xb5, 0x28, 0xbb, 0x8b, 0xb8, 0x28, 0xbb, 0x8b, - 0xb8, 0x28, 0xbc, 0x8b, 0xb8, 0x28, 0xbc, 0x8b, 0xb8, 0x28, 0xbc, 0x8b, - 0xb8, 0x28, 0xbd, 0x8b, 0xb8, 0x28, 0xbd, 0x8b, 0xb8, 0x28, 0xbd, 0x8c, - 0xbb, 0x28, 0xbe, 0x8c, 0xbc, 0x28, 0xbe, 0x8c, 0xbb, 0x28, 0xbe, 0x8c, - 0xbc, 0x28, 0xbf, 0x8c, 0xbb, 0x28, 0xbf, 0x8c, 0xbc, 0x28, 0xbf, 0x8c, - 0xbb, 0x28, 0xc0, 0x8c, 0xbc, 0x28, 0xc0, 0x8c, 0xbb, 0x28, 0xc0, 0x8c, - 0xbc, 0x28, 0xc1, 0x8c, 0xbb, 0x28, 0xc1, 0x8c, 0xbc, 0x28, 0xc1, 0x8d, - 0xbf, 0x28, 0xc1, 0x8d, 0xbe, 0x28, 0xc2, 0x8d, 0xbf, 0x28, 0xc2, 0x8d, - 0xbe, 0x28, 0xc2, 0x8d, 0xbf, 0x28, 0xc3, 0x8d, 0xbe, 0x28, 0xc3, 0x8d, - 0xbf, 0x28, 0xc3, 0x8d, 0xbe, 0x28, 0xc4, 0x8d, 0xbf, 0x28, 0xc4, 0x8e, - 0xc1, 0x28, 0xc4, 0x8d, 0xbf, 0x28, 0xc5, 0x8e, 0xc1, 0x28, 0xc5, 0x8e, - 0xc1, 0x28, 0xc5, 0x8e, 0xc1, 0x28, 0xc6, 0x8e, 0xc1, 0x28, 0xc6, 0x8e, - 0xc1, 0x28, 0xc6, 0x8e, 0xc1, 0x28, 0xc6, 0x8e, 0xc1, 0x28, 0xc7, 0x8f, - 0xc4, 0x28, 0xc7, 0x8f, 0xc5, 0x28, 0xc7, 0x8f, 0xc4, 0x28, 0xc8, 0x8f, - 0xc5, 0x28, 0xc8, 0x8f, 0xc4, 0x28, 0xc8, 0x8f, 0xc5, 0x28, 0xc9, 0x8f, - 0xc4, 0x28, 0xc9, 0x8f, 0xc5, 0x28, 0xc9, 0x8f, 0xc4, 0x28, 0xc9, 0x8f, - 0xc5, 0x28, 0xca, 0x90, 0xc7, 0x28, 0xca, 0x8f, 0xc5, 0x28, 0xca, 0x90, - 0xc7, 0x28, 0xcb, 0x90, 0xc7, 0x28, 0xcb, 0x90, 0xc7, 0x28, 0xcb, 0x90, - 0xc7, 0x28, 0xcc, 0x90, 0xc7, 0x28, 0xcc, 0x90, 0xc7, 0x28, 0xcc, 0x90, - 0xc7, 0x28, 0xcc, 0x91, 0xca, 0x28, 0xcd, 0x90, 0xc7, 0x28, 0xcd, 0x91, - 0xca, 0x28, 0xcd, 0x91, 0xca, 0x28, 0xce, 0x91, 0xca, 0x28, 0xce, 0x91, - 0xca, 0x28, 0xce, 0x91, 0xca, 0x28, 0xce, 0x91, 0xca, 0x28, 0xcf, 0x91, - 0xca, 0x28, 0xcf, 0x92, 0xcd, 0x28, 0xcf, 0x92, 0xcd, 0x28, 0xd0, 0x92, - 0xcd, 0x28, 0xd0, 0x92, 0xcd, 0x28, 0xd0, 0x92, 0xcd, 0x28, 0xd0, 0x92, - 0xcd, 0x28, 0xd1, 0x92, 0xcd, 0x28, 0xd1, 0x92, 0xcd, 0x28, 0xd1, 0x92, - 0xcd, 0x28, 0xd2, 0x92, 0xcd, 0x28, 0xd2, 0x92, 0xcd, 0x28, 0xd2, 0x92, - 0xcd, 0x28, 0xd2, 0x93, 0xd0, 0x28, 0xd3, 0x92, 0xcd, 0x28, 0xd3, 0x93, - 0xd0, 0x28, 0xd3, 0x93, 0xcf, 0x28, 0xd4, 0x93, 0xd0, 0x28, 0xd4, 0x93, - 0xcf, 0x28, 0xd4, 0x93, 0xd0, 0x28, 0xd4, 0x93, 0xcf, 0x28, 0xd5, 0x93, - 0xd0, 0x28, 0xd5, 0x94, 0xd2, 0x28, 0xd5, 0x94, 0xd2, 0x28, 0xd6, 0x94, - 0xd2, 0x28, 0xd6, 0x94, 0xd2, 0x28, 0xd6, 0x94, 0xd2, 0x28, 0xd6, 0x94, - 0xd2, 0x28, 0xd7, 0x94, 0xd2, 0x28, 0xd7, 0x94, 0xd2, 0x28, 0xd7, 0x94, - 0xd2, 0x28, 0xd7, 0x94, 0xd2, 0x28, 0xd8, 0x94, 0xd5, 0x28, 0xd8, 0x94, - 0xd2, 0x28, 0xd8, 0x94, 0xd5, 0x28, 0xd9, 0x94, 0xd5, 0x28, 0xd9, 0x94, - 0xd5, 0x28, 0xd9, 0x94, 0xd5, 0x28, 0xd9, 0x94, 0xd5, 0x28, 0xda, 0x94, - 0xd5, 0x28, 0xda, 0x94, 0xd5, 0x28, 0xda, 0x95, 0xd7, 0x28, 0xda, 0x94, - 0xd5, 0x28, 0xdb, 0x95, 0xd7, 0x28, 0xdb, 0x94, 0xd5, 0x28, 0xdb, 0x95, - 0xd7, 0x28, 0xdb, 0x95, 0xd7, 0x28, 0xdc, 0x95, 0xd7, 0x28, 0xdc, 0x95, - 0xd7, 0x28, 0xdc, 0x95, 0xd7, 0x28, 0xdd, 0x95, 0xd7, 0x28, 0xdd, 0x95, - 0xd7, 0x28, 0xdd, 0x96, 0xda, 0x28, 0xdd, 0x96, 0xda, 0x28, 0xde, 0x96, - 0xda, 0x28, 0xde, 0x96, 0xda, 0x28, 0xde, 0x96, 0xda, 0x28, 0xde, 0x96, - 0xda, 0x28, 0xdf, 0x96, 0xda, 0x28, 0xdf, 0x96, 0xda, 0x28, 0xdf, 0x96, - 0xda, 0x28, 0xdf, 0x96, 0xda, 0x28, 0xe0, 0x97, 0xdd, 0x28, 0xe0, 0x96, - 0xda, 0x28, 0xe0, 0x97, 0xdd, 0x28, 0xe1, 0x97, 0xdc, 0x28, 0xe1, 0x97, - 0xdd, 0x28, 0xe1, 0x97, 0xdc, 0x28, 0xe1, 0x97, 0xdd, 0x28, 0xe2, 0x97, - 0xdc, 0x28, 0xe2, 0x97, 0xdd, 0x28, 0xe2, 0x98, 0xdf, 0x28, 0xe2, 0x97, - 0xdd, 0x28, 0xe3, 0x98, 0xdf, 0x28, 0xe3, 0x98, 0xdf, 0x28, 0xe3, 0x98, - 0xdf, 0x28, 0xe3, 0x98, 0xdf, 0x28, 0xe4, 0x98, 0xdf, 0x28, 0xe4, 0x98, - 0xdf, 0x28, 0xe4, 0x98, 0xdf, 0x28, 0xe4, 0x99, 0xe1, 0x28, 0xe5, 0x99, - 0xe2, 0x28, 0xe5, 0x99, 0xe1, 0x28, 0xe5, 0x99, 0xe2, 0x28, 0xe5, 0x99, - 0xe1, 0x28, 0xe6, 0x99, 0xe2, 0x28, 0xe6, 0x99, 0xe1, 0x28, 0xe6, 0x99, - 0xe2, 0x28, 0xe6, 0x99, 0xe1, 0x28, 0xe7, 0x99, 0xe2, 0x28, 0xe7, 0x9a, - 0xe4, 0x28, 0xe7, 0x99, 0xe2, 0x28, 0xe7, 0x9a, 0xe4, 0x28, 0xe8, 0x99, - 0xe2, 0x28, 0xe8, 0x9a, 0xe4, 0x28, 0xe8, 0x9a, 0xe4, 0x28, 0xe8, 0x9a, - 0xe4, 0x28, 0xe9, 0x9a, 0xe4, 0x28, 0xe9, 0x9a, 0xe4, 0x28, 0xe9, 0x9a, - 0xe6, 0x28, 0xe9, 0x9a, 0xe4, 0x28, 0xea, 0x9a, 0xe6, 0x28, 0xea, 0x9a, - 0xe4, 0x28, 0xea, 0x9a, 0xe6, 0x28, 0xea, 0x9a, 0xe6, 0x28, 0xeb, 0x9a, - 0xe6, 0x28, 0xeb, 0x9a, 0xe6, 0x28, 0xeb, 0x9a, 0xe6, 0x28, 0xeb, 0x9a, - 0xe6, 0x28, 0xec, 0x9a, 0xe6, 0x28, 0xec, 0x9b, 0xe8, 0x28, 0xec, 0x9b, - 0xe9, 0x28, 0xec, 0x9b, 0xe8, 0x28, 0xec, 0x9b, 0xe9, 0x28, 0xed, 0x9b, - 0xe8, 0x28, 0xed, 0x9b, 0xe9, 0x28, 0xed, 0x9b, 0xe8, 0x28, 0xed, 0x9b, - 0xe9, 0x28, 0xee, 0x9b, 0xe8, 0x28, 0xee, 0x9b, 0xe9, 0x28, 0xee, 0x9c, - 0xeb, 0x28, 0xee, 0x9b, 0xe9, 0x28, 0xef, 0x9c, 0xeb, 0x28, 0xef, 0x9b, - 0xe9, 0x28, 0xef, 0x9c, 0xeb, 0x28, 0xef, 0x9c, 0xeb, 0x28, 0xf0, 0x9c, - 0xeb, 0x28, 0xf0, 0x9c, 0xeb, 0x28, 0xf0, 0x9c, 0xeb, 0x28, 0xf0, 0x9d, - 0xed, 0x28, 0xf1, 0x9d, 0xed, 0x28, 0xf1, 0x9d, 0xed, 0x28, 0xf1, 0x9d, - 0xed, 0x28, 0xf1, 0x9d, 0xed, 0x28, 0xf2, 0x9d, 0xed, 0x28, 0xf2, 0x9d, - 0xed, 0x28, 0xf2, 0x9d, 0xed, 0x28, 0xf2, 0x9d, 0xed, 0x28, 0xf2, 0x9d, - 0xed, 0x28, 0xf3, 0x9e, 0xef, 0x28, 0xf3, 0x9d, 0xed, 0x28, 0xf3, 0x9e, - 0xef, 0x28, 0xf3, 0x9d, 0xed, 0x28, 0xf4, 0x9e, 0xef, 0x28, 0xf4, 0x9e, - 0xef, 0x28, 0xf4, 0x9e, 0xef, 0x28, 0xf4, 0x9e, 0xef, 0x28, 0xf5, 0x9e, - 0xef, 0x28, 0xf5, 0x9e, 0xef, 0x28, 0xf5, 0x9e, 0xef, 0x28, 0xf5, 0x9f, - 0xf2, 0x28, 0xf5, 0x9e, 0xef, 0x28, 0xf6, 0x9f, 0xf2, 0x28, 0xf6, 0x9f, - 0xf1, 0x28, 0xf6, 0x9f, 0xf2, 0x28, 0xf6, 0x9f, 0xf1, 0x28, 0xf7, 0x9f, - 0xf2, 0x28, 0xf7, 0x9f, 0xf1, 0x28, 0xf7, 0x9f, 0xf2, 0x28, 0xf7, 0x9f, - 0xf4, 0x28, 0xf8, 0x9f, 0xf4, 0x28, 0xf8, 0x9f, 0xf4, 0x28, 0xf8, 0x9f, - 0xf4, 0x28, 0xf8, 0x9f, 0xf4, 0x28, 0xf8, 0x9f, 0xf4, 0x28, 0xf9, 0x9f, - 0xf4, 0x28, 0xf9, 0x9f, 0xf4, 0x28, 0xf9, 0x9f, 0xf4, 0x28, 0xf9, 0x9f, - 0xf4, 0x28, 0xfa, 0xa0, 0xf6, 0x28, 0xfa, 0x9f, 0xf4, 0x28, 0xfa, 0xa0, - 0xf6, 0x28, 0xfa, 0x9f, 0xf4, 0x28, 0xfa, 0xa0, 0xf6, 0x28, 0xfb, 0xa0, - 0xf6, 0x28, 0xfb, 0xa0, 0xf6, 0x28, 0xfb, 0xa0, 0xf6, 0x28, 0xfb, 0xa0, - 0xf6, 0x28, 0xfc, 0xa1, 0xf8, 0x28, 0xfc, 0xa0, 0xf6, 0x28, 0xfc, 0xa1, - 0xf8, 0x28, 0xfc, 0xa0, 0xf6, 0x28, 0xfc, 0xa1, 0xf8, 0x28, 0xfd, 0xa1, - 0xf8, 0x28, 0xfd, 0xa1, 0xf8, 0x28, 0xfd, 0xa1, 0xf8, 0x28, 0xfd, 0xa1, - 0xf8, 0x28, 0xfe, 0xa2, 0xfa, 0x28, 0xfe, 0xa2, 0xfa, 0x28, 0xfe, 0xa2, - 0xfa, 0x28, 0xfe, 0xa2, 0xfa, 0x28, 0xfe, 0xa2, 0xfa, 0x28, 0xff, 0xa2, - 0xfa, 0x28, 0xff, 0xa2, 0xfa, 0x28, 0x03, 0x84, 0x9b, 0x29, 0x0a, 0x86, - 0x9b, 0x29, 0x0f, 0x84, 0x9b, 0x29, 0x14, 0x86, 0x9b, 0x29, 0x17, 0x84, - 0x9b, 0x29, 0x1b, 0x86, 0x9b, 0x29, 0x1e, 0x84, 0x9b, 0x29, 0x20, 0x86, - 0x9b, 0x29, 0x23, 0x84, 0x9b, 0x29, 0x25, 0x86, 0x9b, 0x29, 0x27, 0x84, - 0x9b, 0x29, 0x29, 0x86, 0x9b, 0x29, 0x2b, 0x84, 0x9b, 0x29, 0x2d, 0x86, - 0x9b, 0x29, 0x2f, 0x84, 0x9b, 0x29, 0x31, 0x86, 0x9b, 0x29, 0x32, 0x84, - 0x9b, 0x29, 0x34, 0x86, 0x9b, 0x29, 0x35, 0x84, 0x9b, 0x29, 0x37, 0x86, - 0x9b, 0x29, 0x38, 0x84, 0x9b, 0x29, 0x3a, 0x86, 0x9b, 0x29, 0x3b, 0x84, - 0x9b, 0x29, 0x3c, 0x86, 0x9b, 0x29, 0x3e, 0x84, 0x9b, 0x29, 0x3f, 0x86, - 0x9b, 0x29, 0x40, 0x84, 0x9b, 0x29, 0x42, 0x86, 0x9b, 0x29, 0x43, 0x84, - 0x9b, 0x29, 0x44, 0x86, 0x9b, 0x29, 0x45, 0x84, 0x9b, 0x29, 0x46, 0x86, - 0x9b, 0x29, 0x47, 0x84, 0x9b, 0x29, 0x48, 0x86, 0x9b, 0x29, 0x49, 0x84, - 0x9b, 0x29, 0x4a, 0x86, 0x9b, 0x29, 0x4b, 0x84, 0x9b, 0x29, 0x4c, 0x86, - 0x9b, 0x29, 0x4d, 0x84, 0x9b, 0x29, 0x4e, 0x86, 0x9b, 0x29, 0x4f, 0x84, - 0x9b, 0x29, 0x50, 0x86, 0x9b, 0x29, 0x51, 0x84, 0x9b, 0x29, 0x52, 0x86, - 0x9b, 0x29, 0x53, 0x84, 0x9b, 0x29, 0x54, 0x86, 0x9b, 0x29, 0x55, 0x84, - 0x9b, 0x29, 0x56, 0x86, 0x9b, 0x29, 0x57, 0x84, 0x9b, 0x29, 0x58, 0x86, - 0x9b, 0x29, 0x58, 0x84, 0x9b, 0x29, 0x59, 0x86, 0x9b, 0x29, 0x5a, 0x84, - 0x9b, 0x29, 0x5b, 0x86, 0x9b, 0x29, 0x5c, 0x84, 0x9b, 0x29, 0x5d, 0x86, - 0x9b, 0x29, 0x5d, 0x84, 0x9b, 0x29, 0x5e, 0x86, 0x9b, 0x29, 0x5f, 0x84, - 0x9b, 0x29, 0x60, 0x86, 0x9b, 0x29, 0x60, 0x84, 0x9b, 0x29, 0x61, 0x86, - 0x9b, 0x29, 0x62, 0x84, 0x9b, 0x29, 0x63, 0x86, 0x9b, 0x29, 0x63, 0x84, - 0x9b, 0x29, 0x64, 0x86, 0x9b, 0x29, 0x65, 0x84, 0x9b, 0x29, 0x66, 0x86, - 0x9b, 0x29, 0x66, 0x84, 0x9b, 0x29, 0x67, 0x86, 0x9b, 0x29, 0x68, 0x84, - 0x9b, 0x29, 0x68, 0x86, 0x9b, 0x29, 0x69, 0x84, 0x9b, 0x29, 0x6a, 0x86, - 0x9b, 0x29, 0x6a, 0x84, 0x9b, 0x29, 0x6b, 0x86, 0x9b, 0x29, 0x6c, 0x84, - 0x9b, 0x29, 0x6c, 0x86, 0x9b, 0x29, 0x6d, 0x84, 0x9b, 0x29, 0x6e, 0x86, - 0x9b, 0x29, 0x6e, 0x84, 0x9b, 0x29, 0x6f, 0x86, 0x9b, 0x29, 0x70, 0x84, - 0x9b, 0x29, 0x70, 0x86, 0x9b, 0x29, 0x71, 0x84, 0x9b, 0x29, 0x72, 0x86, - 0x9b, 0x29, 0x72, 0x84, 0x9b, 0x29, 0x73, 0x86, 0x9b, 0x29, 0x73, 0x84, - 0x9b, 0x29, 0x74, 0x86, 0x9b, 0x29, 0x75, 0x84, 0x9b, 0x29, 0x75, 0x86, - 0x9b, 0x29, 0x76, 0x84, 0x9b, 0x29, 0x76, 0x84, 0x9c, 0x29, 0x77, 0x84, - 0x9b, 0x29, 0x78, 0x84, 0x9c, 0x29, 0x78, 0x84, 0x9b, 0x29, 0x79, 0x84, - 0x9c, 0x29, 0x79, 0x84, 0x9b, 0x29, 0x7a, 0x84, 0x9c, 0x29, 0x7a, 0x84, - 0x9b, 0x29, 0x7b, 0x84, 0x9c, 0x29, 0x7c, 0x84, 0x9b, 0x29, 0x7c, 0x84, - 0x9c, 0x29, 0x7d, 0x84, 0x9b, 0x29, 0x7d, 0x84, 0x9c, 0x29, 0x7e, 0x84, - 0x9b, 0x29, 0x7e, 0x84, 0x9c, 0x29, 0x7f, 0x84, 0x9b, 0x29, 0x7f, 0x84, - 0x9c, 0x29, 0x80, 0x84, 0x9b, 0x29, 0x81, 0x84, 0x9c, 0x29, 0x81, 0x84, - 0x9b, 0x29, 0x82, 0x84, 0x9c, 0x29, 0x82, 0x84, 0x9b, 0x29, 0x83, 0x84, - 0x9c, 0x29, 0x83, 0x84, 0x9b, 0x29, 0x84, 0x84, 0x9c, 0x29, 0x84, 0x84, - 0x9b, 0x29, 0x85, 0x84, 0x9c, 0x29, 0x85, 0x84, 0x9b, 0x29, 0x86, 0x84, - 0x9c, 0x29, 0x86, 0x84, 0x9b, 0x29, 0x87, 0x84, 0x9c, 0x29, 0x87, 0x84, - 0x9b, 0x29, 0x88, 0x84, 0x9c, 0x29, 0x88, 0x84, 0x9b, 0x29, 0x89, 0x84, - 0x9c, 0x29, 0x89, 0x84, 0x9b, 0x29, 0x8a, 0x84, 0x9c, 0x29, 0x8a, 0x84, - 0x9b, 0x29, 0x8b, 0x84, 0x9c, 0x29, 0x8b, 0x84, 0x9b, 0x29, 0x8c, 0x84, - 0x9c, 0x29, 0x8c, 0x84, 0x9b, 0x29, 0x8d, 0x84, 0x9c, 0x29, 0x8d, 0x84, - 0x9b, 0x29, 0x8e, 0x84, 0x9c, 0x29, 0x8e, 0x84, 0x9b, 0x29, 0x8e, 0x84, - 0x9c, 0x29, 0x8f, 0x84, 0x9b, 0x29, 0x8f, 0x84, 0x9c, 0x29, 0x90, 0x84, - 0x9b, 0x29, 0x90, 0x84, 0x9c, 0x29, 0x91, 0x84, 0x9b, 0x29, 0x91, 0x84, - 0x9c, 0x29, 0x92, 0x84, 0x9b, 0x29, 0x92, 0x84, 0x9c, 0x29, 0x93, 0x84, - 0x9b, 0x29, 0x93, 0x84, 0x9c, 0x29, 0x94, 0x84, 0x9b, 0x29, 0x94, 0x84, - 0x9c, 0x29, 0x94, 0x84, 0x9b, 0x29, 0x95, 0x84, 0x9c, 0x29, 0x95, 0x84, - 0x9b, 0x29, 0x96, 0x84, 0x9c, 0x29, 0x96, 0x84, 0x9b, 0x29, 0x97, 0x84, - 0x9c, 0x29, 0x97, 0x84, 0x9b, 0x29, 0x98, 0x84, 0x9c, 0x29, 0x98, 0x84, - 0x9b, 0x29, 0x98, 0x84, 0x9c, 0x29, 0x99, 0x84, 0x9b, 0x29, 0x99, 0x84, - 0x9c, 0x29, 0x9a, 0x84, 0x9b, 0x29, 0x9a, 0x84, 0x9c, 0x29, 0x9a, 0x84, - 0x9b, 0x29, 0x9b, 0x84, 0x9c, 0x29, 0x9b, 0x84, 0x9b, 0x29, 0x9c, 0x84, - 0x9c, 0x29, 0x9c, 0x84, 0x9c, 0x29, 0x9d, 0x84, 0x9d, 0x29, 0x9d, 0x84, - 0x9d, 0x29, 0x9d, 0x84, 0x9d, 0x29, 0x9e, 0x84, 0x9e, 0x29, 0x9e, 0x84, - 0x9e, 0x29, 0x9f, 0x84, 0x9f, 0x29, 0x9f, 0x84, 0x9e, 0x29, 0x9f, 0x84, - 0x9f, 0x29, 0xa0, 0x84, 0x9e, 0x29, 0xa0, 0x84, 0x9f, 0x29, 0xa1, 0x84, - 0x9e, 0x29, 0xa1, 0x84, 0x9f, 0x29, 0xa1, 0x84, 0x9e, 0x29, 0xa2, 0x84, - 0x9f, 0x29, 0xa2, 0x84, 0x9e, 0x29, 0xa3, 0x84, 0x9f, 0x29, 0xa3, 0x84, - 0x9e, 0x29, 0xa3, 0x84, 0x9f, 0x29, 0xa4, 0x85, 0xa2, 0x29, 0xa4, 0x85, - 0xa2, 0x29, 0xa5, 0x85, 0xa2, 0x29, 0xa5, 0x85, 0xa2, 0x29, 0xa5, 0x85, - 0xa2, 0x29, 0xa6, 0x85, 0xa2, 0x29, 0xa6, 0x85, 0xa2, 0x29, 0xa6, 0x85, - 0xa2, 0x29, 0xa7, 0x85, 0xa2, 0x29, 0xa7, 0x86, 0xa6, 0x29, 0xa8, 0x86, - 0xa6, 0x29, 0xa8, 0x86, 0xa6, 0x29, 0xa8, 0x86, 0xa6, 0x29, 0xa9, 0x86, - 0xa6, 0x29, 0xa9, 0x86, 0xa6, 0x29, 0xaa, 0x86, 0xa6, 0x29, 0xaa, 0x86, - 0xa6, 0x29, 0xaa, 0x86, 0xa6, 0x29, 0xab, 0x86, 0xa6, 0x29, 0xab, 0x87, - 0xaa, 0x29, 0xab, 0x86, 0xa6, 0x29, 0xac, 0x87, 0xaa, 0x29, 0xac, 0x87, - 0xa9, 0x29, 0xac, 0x87, 0xaa, 0x29, 0xad, 0x87, 0xa9, 0x29, 0xad, 0x87, - 0xaa, 0x29, 0xae, 0x87, 0xa9, 0x29, 0xae, 0x87, 0xaa, 0x29, 0xae, 0x88, - 0xad, 0x29, 0xaf, 0x88, 0xad, 0x29, 0xaf, 0x88, 0xad, 0x29, 0xaf, 0x88, - 0xad, 0x29, 0xb0, 0x88, 0xad, 0x29, 0xb0, 0x88, 0xad, 0x29, 0xb0, 0x88, - 0xad, 0x29, 0xb1, 0x88, 0xad, 0x29, 0xb1, 0x88, 0xad, 0x29, 0xb2, 0x88, - 0xad, 0x29, 0xb2, 0x89, 0xb0, 0x29, 0xb2, 0x88, 0xad, 0x29, 0xb3, 0x89, - 0xb0, 0x29, 0xb3, 0x89, 0xb0, 0x29, 0xb3, 0x89, 0xb0, 0x29, 0xb4, 0x89, - 0xb0, 0x29, 0xb4, 0x89, 0xb0, 0x29, 0xb4, 0x89, 0xb2, 0x29, 0xb5, 0x89, - 0xb0, 0x29, 0xb5, 0x89, 0xb2, 0x29, 0xb5, 0x89, 0xb2, 0x29, 0xb6, 0x89, - 0xb2, 0x29, 0xb6, 0x89, 0xb2, 0x29, 0xb6, 0x89, 0xb2, 0x29, 0xb7, 0x8a, - 0xb3, 0x29, 0xb7, 0x8a, 0xb4, 0x29, 0xb7, 0x8a, 0xb3, 0x29, 0xb8, 0x8a, - 0xb4, 0x29, 0xb8, 0x8a, 0xb3, 0x29, 0xb8, 0x8a, 0xb4, 0x29, 0xb9, 0x8b, - 0xb7, 0x29, 0xb9, 0x8b, 0xb7, 0x29, 0xb9, 0x8b, 0xb7, 0x29, 0xba, 0x8b, - 0xb7, 0x29, 0xba, 0x8b, 0xb7, 0x29, 0xba, 0x8b, 0xb7, 0x29, 0xbb, 0x8b, - 0xb7, 0x29, 0xbb, 0x8b, 0xb7, 0x29, 0xbb, 0x8b, 0xb7, 0x29, 0xbc, 0x8b, - 0xb7, 0x29, 0xbc, 0x8c, 0xba, 0x29, 0xbc, 0x8b, 0xb7, 0x29, 0xbd, 0x8c, - 0xba, 0x29, 0xbd, 0x8c, 0xba, 0x29, 0xbd, 0x8c, 0xba, 0x29, 0xbe, 0x8c, - 0xba, 0x29, 0xbe, 0x8c, 0xba, 0x29, 0xbe, 0x8c, 0xba, 0x29, 0xbf, 0x8c, - 0xba, 0x29, 0xbf, 0x8d, 0xbd, 0x29, 0xbf, 0x8c, 0xba, 0x29, 0xc0, 0x8d, - 0xbd, 0x29, 0xc0, 0x8d, 0xbd, 0x29, 0xc0, 0x8d, 0xbd, 0x29, 0xc1, 0x8d, - 0xbd, 0x29, 0xc1, 0x8d, 0xbd, 0x29, 0xc1, 0x8d, 0xbd, 0x29, 0xc1, 0x8d, - 0xbd, 0x29, 0xc2, 0x8d, 0xbd, 0x29, 0xc2, 0x8d, 0xbd, 0x29, 0xc2, 0x8e, - 0xc0, 0x29, 0xc3, 0x8e, 0xc0, 0x29, 0xc3, 0x8e, 0xc0, 0x29, 0xc3, 0x8e, - 0xc0, 0x29, 0xc4, 0x8e, 0xc0, 0x29, 0xc4, 0x8e, 0xc0, 0x29, 0xc4, 0x8e, - 0xc0, 0x29, 0xc5, 0x8e, 0xc0, 0x29, 0xc5, 0x8e, 0xc0, 0x29, 0xc5, 0x8e, - 0xc0, 0x29, 0xc6, 0x8e, 0xc3, 0x29, 0xc6, 0x8e, 0xc0, 0x29, 0xc6, 0x8e, - 0xc3, 0x29, 0xc6, 0x8e, 0xc3, 0x29, 0xc7, 0x8e, 0xc3, 0x29, 0xc7, 0x8e, - 0xc3, 0x29, 0xc7, 0x8e, 0xc3, 0x29, 0xc8, 0x8e, 0xc3, 0x29, 0xc8, 0x8e, - 0xc3, 0x29, 0xc8, 0x8f, 0xc6, 0x29, 0xc9, 0x8e, 0xc3, 0x29, 0xc9, 0x8f, - 0xc6, 0x29, 0xc9, 0x8f, 0xc6, 0x29, 0xc9, 0x8f, 0xc6, 0x29, 0xca, 0x8f, - 0xc6, 0x29, 0xca, 0x8f, 0xc6, 0x29, 0xca, 0x8f, 0xc6, 0x29, 0xcb, 0x8f, - 0xc6, 0x29, 0xcb, 0x90, 0xc9, 0x29, 0xcb, 0x90, 0xc9, 0x29, 0xcc, 0x90, - 0xc9, 0x29, 0xcc, 0x90, 0xc9, 0x29, 0xcc, 0x90, 0xc9, 0x29, 0xcc, 0x90, - 0xc9, 0x29, 0xcd, 0x90, 0xc9, 0x29, 0xcd, 0x90, 0xc9, 0x29, 0xcd, 0x90, - 0xc9, 0x29, 0xce, 0x90, 0xc9, 0x29, 0xce, 0x91, 0xcc, 0x29, 0xce, 0x90, - 0xc9, 0x29, 0xce, 0x91, 0xcc, 0x29, 0xcf, 0x91, 0xcb, 0x29, 0xcf, 0x91, - 0xcc, 0x29, 0xcf, 0x91, 0xcb, 0x29, 0xd0, 0x91, 0xcc, 0x29, 0xd0, 0x91, - 0xcb, 0x29, 0xd0, 0x91, 0xcc, 0x29, 0xd0, 0x92, 0xce, 0x29, 0xd1, 0x92, - 0xce, 0x29, 0xd1, 0x92, 0xce, 0x29, 0xd1, 0x92, 0xce, 0x29, 0xd2, 0x92, - 0xce, 0x29, 0xd2, 0x92, 0xce, 0x29, 0xd2, 0x92, 0xce, 0x29, 0xd2, 0x92, - 0xce, 0x29, 0xd3, 0x92, 0xce, 0x29, 0xd3, 0x92, 0xce, 0x29, 0xd3, 0x92, - 0xce, 0x29, 0xd4, 0x92, 0xce, 0x29, 0xd4, 0x93, 0xd1, 0x29, 0xd4, 0x92, - 0xce, 0x29, 0xd4, 0x93, 0xd1, 0x29, 0xd5, 0x93, 0xd1, 0x29, 0xd5, 0x93, - 0xd1, 0x29, 0xd5, 0x93, 0xd1, 0x29, 0xd6, 0x93, 0xd1, 0x29, 0xd6, 0x93, - 0xd1, 0x29, 0xd6, 0x93, 0xd1, 0x29, 0xd6, 0x94, 0xd4, 0x29, 0xd7, 0x93, - 0xd1, 0x29, 0xd7, 0x94, 0xd4, 0x29, 0xd7, 0x94, 0xd3, 0x29, 0xd7, 0x94, - 0xd4, 0x29, 0xd8, 0x94, 0xd3, 0x29, 0xd8, 0x94, 0xd4, 0x29, 0xd8, 0x94, - 0xd3, 0x29, 0xd9, 0x94, 0xd4, 0x29, 0xd9, 0x95, 0xd6, 0x29, 0xd9, 0x95, - 0xd6, 0x29, 0xd9, 0x95, 0xd6, 0x29, 0xda, 0x95, 0xd6, 0x29, 0xda, 0x95, - 0xd6, 0x29, 0xda, 0x95, 0xd6, 0x29, 0xda, 0x95, 0xd6, 0x29, 0xdb, 0x95, - 0xd6, 0x29, 0xdb, 0x95, 0xd6, 0x29, 0xdb, 0x95, 0xd6, 0x29, 0xdb, 0x96, - 0xd9, 0x29, 0xdc, 0x95, 0xd6, 0x29, 0xdc, 0x96, 0xd9, 0x29, 0xdc, 0x95, - 0xd6, 0x29, 0xdd, 0x96, 0xd9, 0x29, 0xdd, 0x96, 0xd9, 0x29, 0xdd, 0x96, - 0xd9, 0x29, 0xdd, 0x96, 0xd9, 0x29, 0xde, 0x96, 0xd9, 0x29, 0xde, 0x96, - 0xd9, 0x29, 0xde, 0x96, 0xd9, 0x29, 0xde, 0x97, 0xdb, 0x29, 0xdf, 0x96, - 0xd9, 0x29, 0xdf, 0x97, 0xdb, 0x29, 0xdf, 0x97, 0xdb, 0x29, 0xdf, 0x97, - 0xdb, 0x29, 0xe0, 0x97, 0xdb, 0x29, 0xe0, 0x97, 0xdb, 0x29, 0xe0, 0x97, - 0xdb, 0x29, 0xe1, 0x97, 0xdb, 0x29, 0xe1, 0x98, 0xde, 0x29, 0xe1, 0x98, - 0xde, 0x29, 0xe1, 0x98, 0xde, 0x29, 0xe2, 0x98, 0xde, 0x29, 0xe2, 0x98, - 0xde, 0x29, 0xe2, 0x98, 0xde, 0x29, 0xe2, 0x98, 0xde, 0x29, 0xe3, 0x98, - 0xde, 0x29, 0xe3, 0x98, 0xde, 0x29, 0xe3, 0x98, 0xde, 0x29, 0xe3, 0x98, - 0xe0, 0x29, 0xe4, 0x98, 0xde, 0x29, 0xe4, 0x98, 0xe0, 0x29, 0xe4, 0x98, - 0xe0, 0x29, 0xe4, 0x98, 0xe0, 0x29, 0xe5, 0x98, 0xe0, 0x29, 0xe5, 0x98, - 0xe0, 0x29, 0xe5, 0x98, 0xe0, 0x29, 0xe5, 0x98, 0xe0, 0x29, 0xe6, 0x99, - 0xe3, 0x29, 0xe6, 0x98, 0xe0, 0x29, 0xe6, 0x99, 0xe3, 0x29, 0xe6, 0x98, - 0xe0, 0x29, 0xe7, 0x99, 0xe3, 0x29, 0xe7, 0x99, 0xe2, 0x29, 0xe7, 0x99, - 0xe3, 0x29, 0xe7, 0x99, 0xe2, 0x29, 0xe8, 0x99, 0xe3, 0x29, 0xe8, 0x9a, - 0xe5, 0x29, 0xe8, 0x9a, 0xe5, 0x29, 0xe8, 0x9a, 0xe5, 0x29, 0xe9, 0x9a, - 0xe5, 0x29, 0xe9, 0x9a, 0xe5, 0x29, 0xe9, 0x9a, 0xe5, 0x29, 0xe9, 0x9a, - 0xe5, 0x29, 0xea, 0x9a, 0xe5, 0x29, 0xea, 0x9a, 0xe5, 0x29, 0xea, 0x9a, - 0xe5, 0x29, 0xea, 0x9b, 0xe7, 0x29, 0xeb, 0x9a, 0xe5, 0x29, 0xeb, 0x9b, - 0xe7, 0x29, 0xeb, 0x9a, 0xe5, 0x29, 0xeb, 0x9b, 0xe7, 0x29, 0xec, 0x9b, - 0xe7, 0x29, 0xec, 0x9b, 0xe7, 0x29, 0xec, 0x9b, 0xe7, 0x29, 0xec, 0x9b, - 0xe7, 0x29, 0xec, 0x9b, 0xe7, 0x29, 0xed, 0x9b, 0xe7, 0x29, 0xed, 0x9c, - 0xea, 0x29, 0xed, 0x9c, 0xea, 0x29, 0xed, 0x9c, 0xea, 0x29, 0xee, 0x9c, - 0xea, 0x29, 0xee, 0x9c, 0xea, 0x29, 0xee, 0x9c, 0xea, 0x29, 0xee, 0x9c, - 0xea, 0x29, 0xef, 0x9c, 0xea, 0x29, 0xef, 0x9c, 0xea, 0x29, 0xef, 0x9c, - 0xea, 0x29, 0xef, 0x9d, 0xec, 0x29, 0xf0, 0x9c, 0xea, 0x29, 0xf0, 0x9d, - 0xec, 0x29, 0xf0, 0x9c, 0xea, 0x29, 0xf0, 0x9d, 0xec, 0x29, 0xf1, 0x9d, - 0xec, 0x29, 0xf1, 0x9d, 0xec, 0x29, 0xf1, 0x9d, 0xec, 0x29, 0xf1, 0x9d, - 0xec, 0x29, 0xf2, 0x9d, 0xee, 0x29, 0xf2, 0x9d, 0xec, 0x29, 0xf2, 0x9d, - 0xee, 0x29, 0xf2, 0x9d, 0xec, 0x29, 0xf2, 0x9d, 0xee, 0x29, 0xf3, 0x9d, - 0xee, 0x29, 0xf3, 0x9d, 0xee, 0x29, 0xf3, 0x9d, 0xee, 0x29, 0xf3, 0x9d, - 0xee, 0x29, 0xf4, 0x9e, 0xf0, 0x29, 0xf4, 0x9e, 0xf1, 0x29, 0xf4, 0x9e, - 0xf0, 0x29, 0xf4, 0x9e, 0xf1, 0x29, 0xf5, 0x9e, 0xf0, 0x29, 0xf5, 0x9e, - 0xf1, 0x29, 0xf5, 0x9e, 0xf0, 0x29, 0xf5, 0x9e, 0xf1, 0x29, 0xf5, 0x9e, - 0xf0, 0x29, 0xf6, 0x9e, 0xf1, 0x29, 0xf6, 0x9e, 0xf0, 0x29, 0xf6, 0x9e, - 0xf1, 0x29, 0xf6, 0x9f, 0xf3, 0x29, 0xf7, 0x9e, 0xf1, 0x29, 0xf7, 0x9f, - 0xf3, 0x29, 0xf7, 0x9f, 0xf2, 0x29, 0xf7, 0x9f, 0xf3, 0x29, 0xf8, 0x9f, - 0xf2, 0x29, 0xf8, 0x9f, 0xf3, 0x29, 0xf8, 0x9f, 0xf2, 0x29, 0xf8, 0x9f, - 0xf3, 0x29, 0xf8, 0xa0, 0xf5, 0x29, 0xf9, 0x9f, 0xf3, 0x29, 0xf9, 0xa0, - 0xf5, 0x29, 0xf9, 0x9f, 0xf3, 0x29, 0xf9, 0xa0, 0xf5, 0x29, 0xfa, 0xa0, - 0xf5, 0x29, 0xfa, 0xa0, 0xf5, 0x29, 0xfa, 0xa0, 0xf5, 0x29, 0xfa, 0xa0, - 0xf5, 0x29, 0xfa, 0xa1, 0xf7, 0x29, 0xfb, 0xa1, 0xf7, 0x29, 0xfb, 0xa1, - 0xf7, 0x29, 0xfb, 0xa1, 0xf7, 0x29, 0xfb, 0xa1, 0xf7, 0x29, 0xfc, 0xa1, - 0xf7, 0x29, 0xfc, 0xa1, 0xf7, 0x29, 0xfc, 0xa1, 0xf7, 0x29, 0xfc, 0xa1, - 0xf7, 0x29, 0xfc, 0xa1, 0xf7, 0x29, 0xfd, 0xa1, 0xf9, 0x29, 0xfd, 0xa1, - 0xf7, 0x29, 0xfd, 0xa1, 0xf9, 0x29, 0xfd, 0xa1, 0xf7, 0x29, 0xfe, 0xa1, - 0xf9, 0x29, 0xfe, 0xa1, 0xf9, 0x29, 0xfe, 0xa1, 0xf9, 0x29, 0xfe, 0xa1, - 0xf9, 0x29, 0xfe, 0xa1, 0xf9, 0x29, 0xff, 0xa2, 0xfb, 0x29, 0xff, 0xa1, - 0xf9, 0x29, 0x03, 0x83, 0x9b, 0x29, 0x0a, 0x83, 0x9b, 0x29, 0x0f, 0x83, - 0x9b, 0x29, 0x14, 0x83, 0x9b, 0x29, 0x17, 0x83, 0x9b, 0x29, 0x1b, 0x83, - 0x9b, 0x29, 0x1e, 0x83, 0x9b, 0x29, 0x20, 0x86, 0x9b, 0x29, 0x23, 0x83, - 0x9b, 0x29, 0x25, 0x86, 0x9b, 0x29, 0x27, 0x83, 0x9b, 0x29, 0x29, 0x86, - 0x9b, 0x29, 0x2b, 0x83, 0x9b, 0x29, 0x2d, 0x86, 0x9b, 0x29, 0x2f, 0x83, - 0x9b, 0x29, 0x31, 0x86, 0x9b, 0x29, 0x32, 0x83, 0x9b, 0x29, 0x34, 0x86, - 0x9b, 0x29, 0x35, 0x83, 0x9b, 0x29, 0x37, 0x86, 0x9b, 0x29, 0x38, 0x83, - 0x9b, 0x29, 0x3a, 0x86, 0x9b, 0x29, 0x3b, 0x83, 0x9b, 0x29, 0x3c, 0x86, - 0x9b, 0x29, 0x3e, 0x83, 0x9b, 0x29, 0x3f, 0x86, 0x9b, 0x29, 0x40, 0x83, - 0x9b, 0x29, 0x42, 0x86, 0x9b, 0x29, 0x43, 0x83, 0x9b, 0x29, 0x44, 0x86, - 0x9b, 0x29, 0x45, 0x83, 0x9b, 0x29, 0x46, 0x86, 0x9b, 0x29, 0x47, 0x83, - 0x9b, 0x29, 0x48, 0x86, 0x9b, 0x29, 0x49, 0x83, 0x9b, 0x29, 0x4a, 0x86, - 0x9b, 0x29, 0x4b, 0x83, 0x9b, 0x29, 0x4c, 0x86, 0x9b, 0x29, 0x4d, 0x83, - 0x9b, 0x29, 0x4e, 0x86, 0x9b, 0x29, 0x4f, 0x83, 0x9b, 0x29, 0x50, 0x86, - 0x9b, 0x29, 0x51, 0x83, 0x9b, 0x29, 0x52, 0x86, 0x9b, 0x29, 0x53, 0x83, - 0x9b, 0x29, 0x54, 0x86, 0x9b, 0x29, 0x55, 0x83, 0x9b, 0x29, 0x56, 0x86, - 0x9b, 0x29, 0x57, 0x83, 0x9b, 0x29, 0x58, 0x86, 0x9b, 0x29, 0x58, 0x83, - 0x9b, 0x29, 0x59, 0x86, 0x9b, 0x29, 0x5a, 0x83, 0x9b, 0x29, 0x5b, 0x86, - 0x9b, 0x29, 0x5c, 0x83, 0x9b, 0x29, 0x5d, 0x86, 0x9b, 0x29, 0x5d, 0x83, - 0x9b, 0x29, 0x5e, 0x83, 0x9c, 0x29, 0x5f, 0x83, 0x9b, 0x29, 0x60, 0x83, - 0x9c, 0x29, 0x60, 0x83, 0x9b, 0x29, 0x61, 0x83, 0x9c, 0x29, 0x62, 0x83, - 0x9b, 0x29, 0x63, 0x83, 0x9c, 0x29, 0x63, 0x83, 0x9b, 0x29, 0x64, 0x83, - 0x9c, 0x29, 0x65, 0x83, 0x9b, 0x29, 0x66, 0x83, 0x9c, 0x29, 0x66, 0x83, - 0x9b, 0x29, 0x67, 0x83, 0x9c, 0x29, 0x68, 0x83, 0x9b, 0x29, 0x68, 0x83, - 0x9c, 0x29, 0x69, 0x83, 0x9b, 0x29, 0x6a, 0x83, 0x9c, 0x29, 0x6a, 0x83, - 0x9b, 0x29, 0x6b, 0x83, 0x9c, 0x29, 0x6c, 0x83, 0x9b, 0x29, 0x6c, 0x83, - 0x9c, 0x29, 0x6d, 0x83, 0x9b, 0x29, 0x6e, 0x83, 0x9c, 0x29, 0x6e, 0x83, - 0x9b, 0x29, 0x6f, 0x83, 0x9c, 0x29, 0x70, 0x83, 0x9b, 0x29, 0x70, 0x83, - 0x9c, 0x29, 0x71, 0x83, 0x9b, 0x29, 0x72, 0x83, 0x9c, 0x29, 0x72, 0x83, - 0x9b, 0x29, 0x73, 0x83, 0x9c, 0x29, 0x73, 0x83, 0x9b, 0x29, 0x74, 0x83, - 0x9c, 0x29, 0x75, 0x83, 0x9b, 0x29, 0x75, 0x83, 0x9c, 0x29, 0x76, 0x83, - 0x9b, 0x29, 0x76, 0x83, 0x9c, 0x29, 0x77, 0x83, 0x9b, 0x29, 0x78, 0x83, - 0x9c, 0x29, 0x78, 0x83, 0x9b, 0x29, 0x79, 0x83, 0x9c, 0x29, 0x79, 0x83, - 0x9b, 0x29, 0x7a, 0x83, 0x9c, 0x29, 0x7a, 0x83, 0x9b, 0x29, 0x7b, 0x83, - 0x9c, 0x29, 0x7c, 0x83, 0x9b, 0x29, 0x7c, 0x83, 0x9c, 0x29, 0x7d, 0x83, - 0x9b, 0x29, 0x7d, 0x83, 0x9c, 0x29, 0x7e, 0x83, 0x9b, 0x29, 0x7e, 0x83, - 0x9c, 0x29, 0x7f, 0x83, 0x9b, 0x29, 0x7f, 0x83, 0x9c, 0x29, 0x80, 0x83, - 0x9b, 0x29, 0x81, 0x83, 0x9c, 0x29, 0x81, 0x83, 0x9b, 0x29, 0x82, 0x83, - 0x9c, 0x29, 0x82, 0x83, 0x9b, 0x29, 0x83, 0x83, 0x9c, 0x29, 0x83, 0x83, - 0x9b, 0x29, 0x84, 0x83, 0x9c, 0x29, 0x84, 0x83, 0x9b, 0x29, 0x85, 0x83, - 0x9c, 0x29, 0x85, 0x83, 0x9b, 0x29, 0x86, 0x83, 0x9c, 0x29, 0x86, 0x83, - 0x9b, 0x29, 0x87, 0x83, 0x9c, 0x29, 0x87, 0x83, 0x9b, 0x29, 0x88, 0x83, - 0x9c, 0x29, 0x88, 0x83, 0x9b, 0x29, 0x89, 0x83, 0x9c, 0x29, 0x89, 0x83, - 0x9b, 0x29, 0x8a, 0x83, 0x9c, 0x29, 0x8a, 0x83, 0x9b, 0x29, 0x8b, 0x83, - 0x9c, 0x29, 0x8b, 0x83, 0x9b, 0x29, 0x8c, 0x83, 0x9c, 0x29, 0x8c, 0x83, - 0x9b, 0x29, 0x8d, 0x83, 0x9c, 0x29, 0x8d, 0x83, 0x9b, 0x29, 0x8e, 0x83, - 0x9c, 0x29, 0x8e, 0x83, 0x9b, 0x29, 0x8e, 0x83, 0x9c, 0x29, 0x8f, 0x83, - 0x9b, 0x29, 0x8f, 0x83, 0x9c, 0x29, 0x90, 0x83, 0x9b, 0x29, 0x90, 0x83, - 0x9c, 0x29, 0x91, 0x83, 0x9b, 0x29, 0x91, 0x83, 0x9c, 0x29, 0x92, 0x83, - 0x9b, 0x29, 0x92, 0x83, 0x9c, 0x29, 0x93, 0x83, 0x9b, 0x29, 0x93, 0x83, - 0x9c, 0x29, 0x94, 0x83, 0x9b, 0x29, 0x94, 0x83, 0x9c, 0x29, 0x94, 0x83, - 0x9b, 0x29, 0x95, 0x83, 0x9c, 0x29, 0x95, 0x83, 0x9b, 0x29, 0x96, 0x83, - 0x9c, 0x29, 0x96, 0x83, 0x9b, 0x29, 0x97, 0x83, 0x9c, 0x29, 0x97, 0x83, - 0x9b, 0x29, 0x98, 0x83, 0x9c, 0x29, 0x98, 0x83, 0x9b, 0x29, 0x98, 0x83, - 0x9c, 0x29, 0x99, 0x83, 0x9b, 0x29, 0x99, 0x83, 0x9c, 0x29, 0x9a, 0x83, - 0x9b, 0x29, 0x9a, 0x83, 0x9c, 0x29, 0x9a, 0x83, 0x9b, 0x29, 0x9b, 0x83, - 0x9c, 0x29, 0x9b, 0x83, 0x9b, 0x29, 0x9c, 0x83, 0x9c, 0x29, 0x9c, 0x83, - 0x9c, 0x29, 0x9d, 0x83, 0x9d, 0x29, 0x9d, 0x83, 0x9c, 0x29, 0x9d, 0x83, - 0x9d, 0x29, 0x9e, 0x83, 0x9c, 0x29, 0x9e, 0x83, 0x9d, 0x29, 0x9f, 0x83, - 0x9c, 0x29, 0x9f, 0x83, 0x9d, 0x29, 0x9f, 0x83, 0x9c, 0x29, 0xa0, 0x83, - 0x9d, 0x29, 0xa0, 0x83, 0x9c, 0x29, 0xa1, 0x83, 0x9d, 0x29, 0xa1, 0x83, - 0x9c, 0x29, 0xa1, 0x83, 0x9d, 0x29, 0xa2, 0x84, 0xa0, 0x29, 0xa2, 0x84, - 0xa1, 0x29, 0xa3, 0x84, 0xa0, 0x29, 0xa3, 0x84, 0xa1, 0x29, 0xa3, 0x84, - 0xa0, 0x29, 0xa4, 0x84, 0xa1, 0x29, 0xa4, 0x84, 0xa0, 0x29, 0xa5, 0x84, - 0xa1, 0x29, 0xa5, 0x84, 0xa0, 0x29, 0xa5, 0x84, 0xa1, 0x29, 0xa6, 0x85, - 0xa4, 0x29, 0xa6, 0x85, 0xa4, 0x29, 0xa6, 0x85, 0xa4, 0x29, 0xa7, 0x85, - 0xa4, 0x29, 0xa7, 0x85, 0xa4, 0x29, 0xa8, 0x85, 0xa4, 0x29, 0xa8, 0x85, - 0xa4, 0x29, 0xa8, 0x85, 0xa4, 0x29, 0xa9, 0x85, 0xa4, 0x29, 0xa9, 0x86, - 0xa8, 0x29, 0xaa, 0x86, 0xa7, 0x29, 0xaa, 0x86, 0xa8, 0x29, 0xaa, 0x86, - 0xa7, 0x29, 0xab, 0x86, 0xa8, 0x29, 0xab, 0x86, 0xa7, 0x29, 0xab, 0x86, - 0xa8, 0x29, 0xac, 0x86, 0xa7, 0x29, 0xac, 0x86, 0xa8, 0x29, 0xac, 0x87, - 0xab, 0x29, 0xad, 0x87, 0xab, 0x29, 0xad, 0x87, 0xab, 0x29, 0xae, 0x87, - 0xab, 0x29, 0xae, 0x87, 0xab, 0x29, 0xae, 0x87, 0xab, 0x29, 0xaf, 0x87, - 0xab, 0x29, 0xaf, 0x87, 0xab, 0x29, 0xaf, 0x87, 0xab, 0x29, 0xb0, 0x87, - 0xab, 0x29, 0xb0, 0x88, 0xaf, 0x29, 0xb0, 0x87, 0xab, 0x29, 0xb1, 0x88, - 0xaf, 0x29, 0xb1, 0x88, 0xae, 0x29, 0xb2, 0x88, 0xaf, 0x29, 0xb2, 0x88, - 0xae, 0x29, 0xb2, 0x88, 0xaf, 0x29, 0xb3, 0x88, 0xae, 0x29, 0xb3, 0x88, - 0xaf, 0x29, 0xb3, 0x89, 0xb2, 0x29, 0xb4, 0x89, 0xb2, 0x29, 0xb4, 0x89, - 0xb2, 0x29, 0xb4, 0x89, 0xb2, 0x29, 0xb5, 0x89, 0xb2, 0x29, 0xb5, 0x89, - 0xb2, 0x29, 0xb5, 0x89, 0xb2, 0x29, 0xb6, 0x89, 0xb2, 0x29, 0xb6, 0x89, - 0xb2, 0x29, 0xb6, 0x89, 0xb2, 0x29, 0xb7, 0x89, 0xb2, 0x29, 0xb7, 0x89, - 0xb2, 0x29, 0xb7, 0x8a, 0xb5, 0x29, 0xb8, 0x8a, 0xb5, 0x29, 0xb8, 0x8a, - 0xb5, 0x29, 0xb8, 0x8a, 0xb5, 0x29, 0xb9, 0x8a, 0xb5, 0x29, 0xb9, 0x8a, - 0xb5, 0x29, 0xb9, 0x8a, 0xb5, 0x29, 0xba, 0x8a, 0xb5, 0x29, 0xba, 0x8a, - 0xb5, 0x29, 0xba, 0x8b, 0xb8, 0x29, 0xbb, 0x8a, 0xb5, 0x29, 0xbb, 0x8b, - 0xb8, 0x29, 0xbb, 0x8b, 0xb8, 0x29, 0xbc, 0x8b, 0xb8, 0x29, 0xbc, 0x8b, - 0xb8, 0x29, 0xbc, 0x8b, 0xb8, 0x29, 0xbd, 0x8b, 0xb8, 0x29, 0xbd, 0x8b, - 0xb8, 0x29, 0xbd, 0x8c, 0xbb, 0x29, 0xbe, 0x8c, 0xbc, 0x29, 0xbe, 0x8c, - 0xbb, 0x29, 0xbe, 0x8c, 0xbc, 0x29, 0xbf, 0x8c, 0xbb, 0x29, 0xbf, 0x8c, - 0xbc, 0x29, 0xbf, 0x8c, 0xbb, 0x29, 0xc0, 0x8c, 0xbc, 0x29, 0xc0, 0x8c, - 0xbb, 0x29, 0xc0, 0x8c, 0xbc, 0x29, 0xc1, 0x8d, 0xbf, 0x29, 0xc1, 0x8c, - 0xbc, 0x29, 0xc1, 0x8d, 0xbf, 0x29, 0xc1, 0x8d, 0xbe, 0x29, 0xc2, 0x8d, - 0xbf, 0x29, 0xc2, 0x8d, 0xbe, 0x29, 0xc2, 0x8d, 0xbf, 0x29, 0xc3, 0x8d, - 0xbe, 0x29, 0xc3, 0x8d, 0xbf, 0x29, 0xc3, 0x8d, 0xbe, 0x29, 0xc4, 0x8d, - 0xbf, 0x29, 0xc4, 0x8e, 0xc1, 0x29, 0xc4, 0x8e, 0xc1, 0x29, 0xc5, 0x8e, - 0xc1, 0x29, 0xc5, 0x8e, 0xc1, 0x29, 0xc5, 0x8e, 0xc1, 0x29, 0xc6, 0x8e, - 0xc1, 0x29, 0xc6, 0x8e, 0xc1, 0x29, 0xc6, 0x8e, 0xc1, 0x29, 0xc6, 0x8e, - 0xc1, 0x29, 0xc7, 0x8f, 0xc4, 0x29, 0xc7, 0x8f, 0xc5, 0x29, 0xc7, 0x8f, - 0xc4, 0x29, 0xc8, 0x8f, 0xc5, 0x29, 0xc8, 0x8f, 0xc4, 0x29, 0xc8, 0x8f, - 0xc5, 0x29, 0xc9, 0x8f, 0xc4, 0x29, 0xc9, 0x8f, 0xc5, 0x29, 0xc9, 0x8f, - 0xc4, 0x29, 0xc9, 0x8f, 0xc5, 0x29, 0xca, 0x90, 0xc7, 0x29, 0xca, 0x8f, - 0xc5, 0x29, 0xca, 0x90, 0xc7, 0x29, 0xcb, 0x90, 0xc7, 0x29, 0xcb, 0x90, - 0xc7, 0x29, 0xcb, 0x90, 0xc7, 0x29, 0xcc, 0x90, 0xc7, 0x29, 0xcc, 0x90, - 0xc7, 0x29, 0xcc, 0x90, 0xc7, 0x29, 0xcc, 0x91, 0xca, 0x29, 0xcd, 0x90, - 0xc7, 0x29, 0xcd, 0x91, 0xca, 0x29, 0xcd, 0x91, 0xca, 0x29, 0xce, 0x91, - 0xca, 0x29, 0xce, 0x91, 0xca, 0x29, 0xce, 0x91, 0xca, 0x29, 0xce, 0x91, - 0xca, 0x29, 0xcf, 0x91, 0xca, 0x29, 0xcf, 0x92, 0xcd, 0x29, 0xcf, 0x92, - 0xcd, 0x29, 0xd0, 0x92, 0xcd, 0x29, 0xd0, 0x92, 0xcd, 0x29, 0xd0, 0x92, - 0xcd, 0x29, 0xd0, 0x92, 0xcd, 0x29, 0xd1, 0x92, 0xcd, 0x29, 0xd1, 0x92, - 0xcd, 0x29, 0xd1, 0x92, 0xcd, 0x29, 0xd2, 0x92, 0xcd, 0x29, 0xd2, 0x93, - 0xd0, 0x29, 0xd2, 0x92, 0xcd, 0x29, 0xd2, 0x93, 0xd0, 0x29, 0xd3, 0x92, - 0xcd, 0x29, 0xd3, 0x93, 0xd0, 0x29, 0xd3, 0x93, 0xcf, 0x29, 0xd4, 0x93, - 0xd0, 0x29, 0xd4, 0x93, 0xcf, 0x29, 0xd4, 0x93, 0xd0, 0x29, 0xd4, 0x93, - 0xcf, 0x29, 0xd5, 0x93, 0xd0, 0x29, 0xd5, 0x94, 0xd2, 0x29, 0xd5, 0x94, - 0xd2, 0x29, 0xd6, 0x94, 0xd2, 0x29, 0xd6, 0x94, 0xd2, 0x29, 0xd6, 0x94, - 0xd2, 0x29, 0xd6, 0x94, 0xd2, 0x29, 0xd7, 0x94, 0xd2, 0x29, 0xd7, 0x94, - 0xd2, 0x29, 0xd7, 0x94, 0xd2, 0x29, 0xd7, 0x94, 0xd2, 0x29, 0xd8, 0x94, - 0xd5, 0x29, 0xd8, 0x94, 0xd2, 0x29, 0xd8, 0x94, 0xd5, 0x29, 0xd9, 0x94, - 0xd5, 0x29, 0xd9, 0x94, 0xd5, 0x29, 0xd9, 0x94, 0xd5, 0x29, 0xd9, 0x94, - 0xd5, 0x29, 0xda, 0x94, 0xd5, 0x29, 0xda, 0x94, 0xd5, 0x29, 0xda, 0x95, - 0xd7, 0x29, 0xda, 0x94, 0xd5, 0x29, 0xdb, 0x95, 0xd7, 0x29, 0xdb, 0x95, - 0xd7, 0x29, 0xdb, 0x95, 0xd7, 0x29, 0xdb, 0x95, 0xd7, 0x29, 0xdc, 0x95, - 0xd7, 0x29, 0xdc, 0x95, 0xd7, 0x29, 0xdc, 0x95, 0xd7, 0x29, 0xdd, 0x96, - 0xda, 0x29, 0xdd, 0x96, 0xda, 0x29, 0xdd, 0x96, 0xda, 0x29, 0xdd, 0x96, - 0xda, 0x29, 0xde, 0x96, 0xda, 0x29, 0xde, 0x96, 0xda, 0x29, 0xde, 0x96, - 0xda, 0x29, 0xde, 0x96, 0xda, 0x29, 0xdf, 0x96, 0xda, 0x29, 0xdf, 0x96, - 0xda, 0x29, 0xdf, 0x96, 0xda, 0x29, 0xdf, 0x96, 0xda, 0x29, 0xe0, 0x97, - 0xdd, 0x29, 0xe0, 0x96, 0xda, 0x29, 0xe0, 0x97, 0xdd, 0x29, 0xe1, 0x97, - 0xdc, 0x29, 0xe1, 0x97, 0xdd, 0x29, 0xe1, 0x97, 0xdc, 0x29, 0xe1, 0x97, - 0xdd, 0x29, 0xe2, 0x97, 0xdc, 0x29, 0xe2, 0x97, 0xdd, 0x29, 0xe2, 0x98, - 0xdf, 0x29, 0xe2, 0x97, 0xdd, 0x29, 0xe3, 0x98, 0xdf, 0x29, 0xe3, 0x98, - 0xdf, 0x29, 0xe3, 0x98, 0xdf, 0x29, 0xe3, 0x98, 0xdf, 0x29, 0xe4, 0x98, - 0xdf, 0x29, 0xe4, 0x98, 0xdf, 0x29, 0xe4, 0x98, 0xdf, 0x29, 0xe4, 0x99, - 0xe1, 0x29, 0xe5, 0x99, 0xe2, 0x29, 0xe5, 0x99, 0xe1, 0x29, 0xe5, 0x99, - 0xe2, 0x29, 0xe5, 0x99, 0xe1, 0x29, 0xe6, 0x99, 0xe2, 0x29, 0xe6, 0x99, - 0xe1, 0x29, 0xe6, 0x99, 0xe2, 0x29, 0xe6, 0x99, 0xe1, 0x29, 0xe7, 0x99, - 0xe2, 0x29, 0xe7, 0x9a, 0xe4, 0x29, 0xe7, 0x99, 0xe2, 0x29, 0xe7, 0x9a, - 0xe4, 0x29, 0xe8, 0x99, 0xe2, 0x29, 0xe8, 0x9a, 0xe4, 0x29, 0xe8, 0x9a, - 0xe4, 0x29, 0xe8, 0x9a, 0xe4, 0x29, 0xe9, 0x9a, 0xe4, 0x29, 0xe9, 0x9a, - 0xe4, 0x29, 0xe9, 0x9a, 0xe6, 0x29, 0xe9, 0x9a, 0xe4, 0x29, 0xea, 0x9a, - 0xe6, 0x29, 0xea, 0x9a, 0xe4, 0x29, 0xea, 0x9a, 0xe6, 0x29, 0xea, 0x9a, - 0xe6, 0x29, 0xeb, 0x9a, 0xe6, 0x29, 0xeb, 0x9a, 0xe6, 0x29, 0xeb, 0x9a, - 0xe6, 0x29, 0xeb, 0x9b, 0xe8, 0x29, 0xec, 0x9b, 0xe9, 0x29, 0xec, 0x9b, - 0xe8, 0x29, 0xec, 0x9b, 0xe9, 0x29, 0xec, 0x9b, 0xe8, 0x29, 0xec, 0x9b, - 0xe9, 0x29, 0xed, 0x9b, 0xe8, 0x29, 0xed, 0x9b, 0xe9, 0x29, 0xed, 0x9b, - 0xe8, 0x29, 0xed, 0x9b, 0xe9, 0x29, 0xee, 0x9b, 0xe8, 0x29, 0xee, 0x9b, - 0xe9, 0x29, 0xee, 0x9c, 0xeb, 0x29, 0xee, 0x9b, 0xe9, 0x29, 0xef, 0x9c, - 0xeb, 0x29, 0xef, 0x9c, 0xeb, 0x29, 0xef, 0x9c, 0xeb, 0x29, 0xef, 0x9c, - 0xeb, 0x29, 0xf0, 0x9c, 0xeb, 0x29, 0xf0, 0x9c, 0xeb, 0x29, 0xf0, 0x9c, - 0xeb, 0x29, 0xf0, 0x9d, 0xed, 0x29, 0xf1, 0x9d, 0xed, 0x29, 0xf1, 0x9d, - 0xed, 0x29, 0xf1, 0x9d, 0xed, 0x29, 0xf1, 0x9d, 0xed, 0x29, 0xf2, 0x9d, - 0xed, 0x29, 0xf2, 0x9d, 0xed, 0x29, 0xf2, 0x9d, 0xed, 0x29, 0xf2, 0x9d, - 0xed, 0x29, 0xf2, 0x9d, 0xed, 0x29, 0xf3, 0x9e, 0xef, 0x29, 0xf3, 0x9d, - 0xed, 0x29, 0xf3, 0x9e, 0xef, 0x29, 0xf3, 0x9d, 0xed, 0x29, 0xf4, 0x9e, - 0xef, 0x29, 0xf4, 0x9e, 0xef, 0x29, 0xf4, 0x9e, 0xef, 0x29, 0xf4, 0x9e, - 0xef, 0x29, 0xf5, 0x9e, 0xef, 0x29, 0xf5, 0x9f, 0xf2, 0x29, 0xf5, 0x9e, - 0xef, 0x29, 0xf5, 0x9f, 0xf2, 0x29, 0xf5, 0x9e, 0xef, 0x29, 0xf6, 0x9f, - 0xf2, 0x29, 0xf6, 0x9f, 0xf1, 0x29, 0xf6, 0x9f, 0xf2, 0x29, 0xf6, 0x9f, - 0xf1, 0x29, 0xf7, 0x9f, 0xf2, 0x29, 0xf7, 0x9f, 0xf1, 0x29, 0xf7, 0x9f, - 0xf2, 0x29, 0xf7, 0x9f, 0xf4, 0x29, 0xf8, 0x9f, 0xf4, 0x29, 0xf8, 0x9f, - 0xf4, 0x29, 0xf8, 0x9f, 0xf4, 0x29, 0xf8, 0x9f, 0xf4, 0x29, 0xf8, 0x9f, - 0xf4, 0x29, 0xf9, 0x9f, 0xf4, 0x29, 0xf9, 0x9f, 0xf4, 0x29, 0xf9, 0x9f, - 0xf4, 0x29, 0xf9, 0x9f, 0xf4, 0x29, 0xfa, 0xa0, 0xf6, 0x29, 0xfa, 0x9f, - 0xf4, 0x29, 0xfa, 0xa0, 0xf6, 0x29, 0xfa, 0x9f, 0xf4, 0x29, 0xfa, 0xa0, - 0xf6, 0x29, 0xfb, 0xa0, 0xf6, 0x29, 0xfb, 0xa0, 0xf6, 0x29, 0xfb, 0xa0, - 0xf6, 0x29, 0xfb, 0xa0, 0xf6, 0x29, 0xfc, 0xa1, 0xf8, 0x29, 0xfc, 0xa0, - 0xf6, 0x29, 0xfc, 0xa1, 0xf8, 0x29, 0xfc, 0xa0, 0xf6, 0x29, 0xfc, 0xa1, - 0xf8, 0x29, 0xfd, 0xa1, 0xf8, 0x29, 0xfd, 0xa1, 0xf8, 0x29, 0xfd, 0xa1, - 0xf8, 0x29, 0xfd, 0xa1, 0xf8, 0x29, 0xfe, 0xa2, 0xfa, 0x29, 0xfe, 0xa2, - 0xfa, 0x29, 0xfe, 0xa2, 0xfa, 0x29, 0xfe, 0xa2, 0xfa, 0x29, 0xfe, 0xa2, - 0xfa, 0x29, 0xff, 0xa2, 0xfa, 0x29, 0xff, 0xa2, 0xfa, 0x29, 0x03, 0x84, - 0x9b, 0x2a, 0x0a, 0x86, 0x9b, 0x2a, 0x0f, 0x84, 0x9b, 0x2a, 0x14, 0x86, - 0x9b, 0x2a, 0x17, 0x84, 0x9b, 0x2a, 0x1b, 0x86, 0x9b, 0x2a, 0x1e, 0x84, - 0x9b, 0x2a, 0x20, 0x86, 0x9b, 0x2a, 0x23, 0x84, 0x9b, 0x2a, 0x25, 0x86, - 0x9b, 0x2a, 0x27, 0x84, 0x9b, 0x2a, 0x29, 0x86, 0x9b, 0x2a, 0x2b, 0x84, - 0x9b, 0x2a, 0x2d, 0x86, 0x9b, 0x2a, 0x2f, 0x84, 0x9b, 0x2a, 0x31, 0x86, - 0x9b, 0x2a, 0x32, 0x84, 0x9b, 0x2a, 0x34, 0x86, 0x9b, 0x2a, 0x35, 0x84, - 0x9b, 0x2a, 0x37, 0x86, 0x9b, 0x2a, 0x38, 0x84, 0x9b, 0x2a, 0x3a, 0x86, - 0x9b, 0x2a, 0x3b, 0x84, 0x9b, 0x2a, 0x3c, 0x86, 0x9b, 0x2a, 0x3e, 0x84, - 0x9b, 0x2a, 0x3f, 0x86, 0x9b, 0x2a, 0x40, 0x84, 0x9b, 0x2a, 0x42, 0x86, - 0x9b, 0x2a, 0x43, 0x84, 0x9b, 0x2a, 0x44, 0x86, 0x9b, 0x2a, 0x45, 0x84, - 0x9b, 0x2a, 0x46, 0x86, 0x9b, 0x2a, 0x47, 0x84, 0x9b, 0x2a, 0x48, 0x86, - 0x9b, 0x2a, 0x49, 0x84, 0x9b, 0x2a, 0x4a, 0x86, 0x9b, 0x2a, 0x4b, 0x84, - 0x9b, 0x2a, 0x4c, 0x86, 0x9b, 0x2a, 0x4d, 0x84, 0x9b, 0x2a, 0x4e, 0x86, - 0x9b, 0x2a, 0x4f, 0x84, 0x9b, 0x2a, 0x50, 0x86, 0x9b, 0x2a, 0x51, 0x84, - 0x9b, 0x2a, 0x52, 0x86, 0x9b, 0x2a, 0x53, 0x84, 0x9b, 0x2a, 0x54, 0x86, - 0x9b, 0x2a, 0x55, 0x84, 0x9b, 0x2a, 0x56, 0x86, 0x9b, 0x2a, 0x57, 0x84, - 0x9b, 0x2a, 0x58, 0x86, 0x9b, 0x2a, 0x58, 0x84, 0x9b, 0x2a, 0x59, 0x86, - 0x9b, 0x2a, 0x5a, 0x84, 0x9b, 0x2a, 0x5b, 0x86, 0x9b, 0x2a, 0x5c, 0x84, - 0x9b, 0x2a, 0x5d, 0x86, 0x9b, 0x2a, 0x5d, 0x84, 0x9b, 0x2a, 0x5e, 0x86, - 0x9b, 0x2a, 0x5f, 0x84, 0x9b, 0x2a, 0x60, 0x86, 0x9b, 0x2a, 0x60, 0x84, - 0x9b, 0x2a, 0x61, 0x86, 0x9b, 0x2a, 0x62, 0x84, 0x9b, 0x2a, 0x63, 0x86, - 0x9b, 0x2a, 0x63, 0x84, 0x9b, 0x2a, 0x64, 0x86, 0x9b, 0x2a, 0x65, 0x84, - 0x9b, 0x2a, 0x66, 0x86, 0x9b, 0x2a, 0x66, 0x84, 0x9b, 0x2a, 0x67, 0x86, - 0x9b, 0x2a, 0x68, 0x84, 0x9b, 0x2a, 0x68, 0x86, 0x9b, 0x2a, 0x69, 0x84, - 0x9b, 0x2a, 0x6a, 0x86, 0x9b, 0x2a, 0x6a, 0x84, 0x9b, 0x2a, 0x6b, 0x86, - 0x9b, 0x2a, 0x6c, 0x84, 0x9b, 0x2a, 0x6c, 0x86, 0x9b, 0x2a, 0x6d, 0x84, - 0x9b, 0x2a, 0x6e, 0x86, 0x9b, 0x2a, 0x6e, 0x84, 0x9b, 0x2a, 0x6f, 0x86, - 0x9b, 0x2a, 0x70, 0x84, 0x9b, 0x2a, 0x70, 0x86, 0x9b, 0x2a, 0x71, 0x84, - 0x9b, 0x2a, 0x72, 0x86, 0x9b, 0x2a, 0x72, 0x84, 0x9b, 0x2a, 0x73, 0x86, - 0x9b, 0x2a, 0x73, 0x84, 0x9b, 0x2a, 0x74, 0x86, 0x9b, 0x2a, 0x75, 0x84, - 0x9b, 0x2a, 0x75, 0x86, 0x9b, 0x2a, 0x76, 0x84, 0x9b, 0x2a, 0x76, 0x86, - 0x9b, 0x2a, 0x77, 0x84, 0x9b, 0x2a, 0x78, 0x86, 0x9b, 0x2a, 0x78, 0x84, - 0x9b, 0x2a, 0x79, 0x84, 0x9c, 0x2a, 0x79, 0x84, 0x9b, 0x2a, 0x7a, 0x84, - 0x9c, 0x2a, 0x7a, 0x84, 0x9b, 0x2a, 0x7b, 0x84, 0x9c, 0x2a, 0x7c, 0x84, - 0x9b, 0x2a, 0x7c, 0x84, 0x9c, 0x2a, 0x7d, 0x84, 0x9b, 0x2a, 0x7d, 0x84, - 0x9c, 0x2a, 0x7e, 0x84, 0x9b, 0x2a, 0x7e, 0x84, 0x9c, 0x2a, 0x7f, 0x84, - 0x9b, 0x2a, 0x7f, 0x84, 0x9c, 0x2a, 0x80, 0x84, 0x9b, 0x2a, 0x81, 0x84, - 0x9c, 0x2a, 0x81, 0x84, 0x9b, 0x2a, 0x82, 0x84, 0x9c, 0x2a, 0x82, 0x84, - 0x9b, 0x2a, 0x83, 0x84, 0x9c, 0x2a, 0x83, 0x84, 0x9b, 0x2a, 0x84, 0x84, - 0x9c, 0x2a, 0x84, 0x84, 0x9b, 0x2a, 0x85, 0x84, 0x9c, 0x2a, 0x85, 0x84, - 0x9b, 0x2a, 0x86, 0x84, 0x9c, 0x2a, 0x86, 0x84, 0x9b, 0x2a, 0x87, 0x84, - 0x9c, 0x2a, 0x87, 0x84, 0x9b, 0x2a, 0x88, 0x84, 0x9c, 0x2a, 0x88, 0x84, - 0x9b, 0x2a, 0x89, 0x84, 0x9c, 0x2a, 0x89, 0x84, 0x9b, 0x2a, 0x8a, 0x84, - 0x9c, 0x2a, 0x8a, 0x84, 0x9b, 0x2a, 0x8b, 0x84, 0x9c, 0x2a, 0x8b, 0x84, - 0x9b, 0x2a, 0x8c, 0x84, 0x9c, 0x2a, 0x8c, 0x84, 0x9b, 0x2a, 0x8d, 0x84, - 0x9c, 0x2a, 0x8d, 0x84, 0x9b, 0x2a, 0x8e, 0x84, 0x9c, 0x2a, 0x8e, 0x84, - 0x9b, 0x2a, 0x8e, 0x84, 0x9c, 0x2a, 0x8f, 0x84, 0x9b, 0x2a, 0x8f, 0x84, - 0x9c, 0x2a, 0x90, 0x84, 0x9b, 0x2a, 0x90, 0x84, 0x9c, 0x2a, 0x91, 0x84, - 0x9b, 0x2a, 0x91, 0x84, 0x9c, 0x2a, 0x92, 0x84, 0x9b, 0x2a, 0x92, 0x84, - 0x9c, 0x2a, 0x93, 0x84, 0x9b, 0x2a, 0x93, 0x84, 0x9c, 0x2a, 0x94, 0x84, - 0x9b, 0x2a, 0x94, 0x84, 0x9c, 0x2a, 0x94, 0x84, 0x9b, 0x2a, 0x95, 0x84, - 0x9c, 0x2a, 0x95, 0x84, 0x9b, 0x2a, 0x96, 0x84, 0x9c, 0x2a, 0x96, 0x84, - 0x9b, 0x2a, 0x97, 0x84, 0x9c, 0x2a, 0x97, 0x84, 0x9b, 0x2a, 0x98, 0x84, - 0x9c, 0x2a, 0x98, 0x84, 0x9b, 0x2a, 0x98, 0x84, 0x9c, 0x2a, 0x99, 0x84, - 0x9b, 0x2a, 0x99, 0x84, 0x9c, 0x2a, 0x9a, 0x84, 0x9b, 0x2a, 0x9a, 0x84, - 0x9c, 0x2a, 0x9a, 0x84, 0x9b, 0x2a, 0x9b, 0x84, 0x9c, 0x2a, 0x9b, 0x84, - 0x9b, 0x2a, 0x9c, 0x84, 0x9c, 0x2a, 0x9c, 0x84, 0x9c, 0x2a, 0x9d, 0x84, - 0x9d, 0x2a, 0x9d, 0x84, 0x9d, 0x2a, 0x9d, 0x84, 0x9d, 0x2a, 0x9e, 0x84, - 0x9e, 0x2a, 0x9e, 0x84, 0x9e, 0x2a, 0x9f, 0x84, 0x9f, 0x2a, 0x9f, 0x84, - 0x9e, 0x2a, 0x9f, 0x84, 0x9f, 0x2a, 0xa0, 0x84, 0x9e, 0x2a, 0xa0, 0x84, - 0x9f, 0x2a, 0xa1, 0x84, 0x9e, 0x2a, 0xa1, 0x84, 0x9f, 0x2a, 0xa1, 0x84, - 0x9e, 0x2a, 0xa2, 0x84, 0x9f, 0x2a, 0xa2, 0x84, 0x9e, 0x2a, 0xa3, 0x84, - 0x9f, 0x2a, 0xa3, 0x84, 0x9e, 0x2a, 0xa3, 0x84, 0x9f, 0x2a, 0xa4, 0x85, - 0xa2, 0x2a, 0xa4, 0x85, 0xa2, 0x2a, 0xa5, 0x85, 0xa2, 0x2a, 0xa5, 0x85, - 0xa2, 0x2a, 0xa5, 0x85, 0xa2, 0x2a, 0xa6, 0x85, 0xa2, 0x2a, 0xa6, 0x85, - 0xa2, 0x2a, 0xa6, 0x85, 0xa2, 0x2a, 0xa7, 0x85, 0xa2, 0x2a, 0xa7, 0x86, - 0xa6, 0x2a, 0xa8, 0x86, 0xa6, 0x2a, 0xa8, 0x86, 0xa6, 0x2a, 0xa8, 0x86, - 0xa6, 0x2a, 0xa9, 0x86, 0xa6, 0x2a, 0xa9, 0x86, 0xa6, 0x2a, 0xaa, 0x86, - 0xa6, 0x2a, 0xaa, 0x86, 0xa6, 0x2a, 0xaa, 0x86, 0xa6, 0x2a, 0xab, 0x86, - 0xa6, 0x2a, 0xab, 0x87, 0xaa, 0x2a, 0xab, 0x87, 0xa9, 0x2a, 0xac, 0x87, - 0xaa, 0x2a, 0xac, 0x87, 0xa9, 0x2a, 0xac, 0x87, 0xaa, 0x2a, 0xad, 0x87, - 0xa9, 0x2a, 0xad, 0x87, 0xaa, 0x2a, 0xae, 0x87, 0xa9, 0x2a, 0xae, 0x87, - 0xaa, 0x2a, 0xae, 0x88, 0xad, 0x2a, 0xaf, 0x88, 0xad, 0x2a, 0xaf, 0x88, - 0xad, 0x2a, 0xaf, 0x88, 0xad, 0x2a, 0xb0, 0x88, 0xad, 0x2a, 0xb0, 0x88, - 0xad, 0x2a, 0xb0, 0x88, 0xad, 0x2a, 0xb1, 0x88, 0xad, 0x2a, 0xb1, 0x88, - 0xad, 0x2a, 0xb2, 0x88, 0xad, 0x2a, 0xb2, 0x89, 0xb0, 0x2a, 0xb2, 0x88, - 0xad, 0x2a, 0xb3, 0x89, 0xb0, 0x2a, 0xb3, 0x89, 0xb0, 0x2a, 0xb3, 0x89, - 0xb0, 0x2a, 0xb4, 0x89, 0xb0, 0x2a, 0xb4, 0x89, 0xb0, 0x2a, 0xb4, 0x89, - 0xb2, 0x2a, 0xb5, 0x89, 0xb0, 0x2a, 0xb5, 0x89, 0xb2, 0x2a, 0xb5, 0x89, - 0xb2, 0x2a, 0xb6, 0x89, 0xb2, 0x2a, 0xb6, 0x89, 0xb2, 0x2a, 0xb6, 0x89, - 0xb2, 0x2a, 0xb7, 0x8a, 0xb3, 0x2a, 0xb7, 0x8a, 0xb4, 0x2a, 0xb7, 0x8a, - 0xb3, 0x2a, 0xb8, 0x8a, 0xb4, 0x2a, 0xb8, 0x8a, 0xb3, 0x2a, 0xb8, 0x8a, - 0xb4, 0x2a, 0xb9, 0x8b, 0xb7, 0x2a, 0xb9, 0x8b, 0xb7, 0x2a, 0xb9, 0x8b, - 0xb7, 0x2a, 0xba, 0x8b, 0xb7, 0x2a, 0xba, 0x8b, 0xb7, 0x2a, 0xba, 0x8b, - 0xb7, 0x2a, 0xbb, 0x8b, 0xb7, 0x2a, 0xbb, 0x8b, 0xb7, 0x2a, 0xbb, 0x8b, - 0xb7, 0x2a, 0xbc, 0x8b, 0xb7, 0x2a, 0xbc, 0x8c, 0xba, 0x2a, 0xbc, 0x8b, - 0xb7, 0x2a, 0xbd, 0x8c, 0xba, 0x2a, 0xbd, 0x8c, 0xba, 0x2a, 0xbd, 0x8c, - 0xba, 0x2a, 0xbe, 0x8c, 0xba, 0x2a, 0xbe, 0x8c, 0xba, 0x2a, 0xbe, 0x8c, - 0xba, 0x2a, 0xbf, 0x8c, 0xba, 0x2a, 0xbf, 0x8d, 0xbd, 0x2a, 0xbf, 0x8c, - 0xba, 0x2a, 0xc0, 0x8d, 0xbd, 0x2a, 0xc0, 0x8d, 0xbd, 0x2a, 0xc0, 0x8d, - 0xbd, 0x2a, 0xc1, 0x8d, 0xbd, 0x2a, 0xc1, 0x8d, 0xbd, 0x2a, 0xc1, 0x8d, - 0xbd, 0x2a, 0xc1, 0x8d, 0xbd, 0x2a, 0xc2, 0x8e, 0xc0, 0x2a, 0xc2, 0x8e, - 0xc0, 0x2a, 0xc2, 0x8e, 0xc0, 0x2a, 0xc3, 0x8e, 0xc0, 0x2a, 0xc3, 0x8e, - 0xc0, 0x2a, 0xc3, 0x8e, 0xc0, 0x2a, 0xc4, 0x8e, 0xc0, 0x2a, 0xc4, 0x8e, - 0xc0, 0x2a, 0xc4, 0x8e, 0xc0, 0x2a, 0xc5, 0x8e, 0xc0, 0x2a, 0xc5, 0x8e, - 0xc0, 0x2a, 0xc5, 0x8e, 0xc0, 0x2a, 0xc6, 0x8e, 0xc3, 0x2a, 0xc6, 0x8e, - 0xc3, 0x2a, 0xc6, 0x8e, 0xc3, 0x2a, 0xc6, 0x8e, 0xc3, 0x2a, 0xc7, 0x8e, - 0xc3, 0x2a, 0xc7, 0x8e, 0xc3, 0x2a, 0xc7, 0x8e, 0xc3, 0x2a, 0xc8, 0x8e, - 0xc3, 0x2a, 0xc8, 0x8e, 0xc3, 0x2a, 0xc8, 0x8f, 0xc6, 0x2a, 0xc9, 0x8e, - 0xc3, 0x2a, 0xc9, 0x8f, 0xc6, 0x2a, 0xc9, 0x8f, 0xc6, 0x2a, 0xc9, 0x8f, - 0xc6, 0x2a, 0xca, 0x8f, 0xc6, 0x2a, 0xca, 0x8f, 0xc6, 0x2a, 0xca, 0x8f, - 0xc6, 0x2a, 0xcb, 0x8f, 0xc6, 0x2a, 0xcb, 0x90, 0xc9, 0x2a, 0xcb, 0x90, - 0xc9, 0x2a, 0xcc, 0x90, 0xc9, 0x2a, 0xcc, 0x90, 0xc9, 0x2a, 0xcc, 0x90, - 0xc9, 0x2a, 0xcc, 0x90, 0xc9, 0x2a, 0xcd, 0x90, 0xc9, 0x2a, 0xcd, 0x90, - 0xc9, 0x2a, 0xcd, 0x90, 0xc9, 0x2a, 0xce, 0x90, 0xc9, 0x2a, 0xce, 0x91, - 0xcc, 0x2a, 0xce, 0x90, 0xc9, 0x2a, 0xce, 0x91, 0xcc, 0x2a, 0xcf, 0x91, - 0xcb, 0x2a, 0xcf, 0x91, 0xcc, 0x2a, 0xcf, 0x91, 0xcb, 0x2a, 0xd0, 0x91, - 0xcc, 0x2a, 0xd0, 0x91, 0xcb, 0x2a, 0xd0, 0x91, 0xcc, 0x2a, 0xd0, 0x92, - 0xce, 0x2a, 0xd1, 0x92, 0xce, 0x2a, 0xd1, 0x92, 0xce, 0x2a, 0xd1, 0x92, - 0xce, 0x2a, 0xd2, 0x92, 0xce, 0x2a, 0xd2, 0x92, 0xce, 0x2a, 0xd2, 0x92, - 0xce, 0x2a, 0xd2, 0x92, 0xce, 0x2a, 0xd3, 0x92, 0xce, 0x2a, 0xd3, 0x92, - 0xce, 0x2a, 0xd3, 0x93, 0xd1, 0x2a, 0xd4, 0x92, 0xce, 0x2a, 0xd4, 0x93, - 0xd1, 0x2a, 0xd4, 0x92, 0xce, 0x2a, 0xd4, 0x93, 0xd1, 0x2a, 0xd5, 0x93, - 0xd1, 0x2a, 0xd5, 0x93, 0xd1, 0x2a, 0xd5, 0x93, 0xd1, 0x2a, 0xd6, 0x93, - 0xd1, 0x2a, 0xd6, 0x93, 0xd1, 0x2a, 0xd6, 0x93, 0xd1, 0x2a, 0xd6, 0x94, - 0xd4, 0x2a, 0xd7, 0x93, 0xd1, 0x2a, 0xd7, 0x94, 0xd4, 0x2a, 0xd7, 0x94, - 0xd3, 0x2a, 0xd7, 0x94, 0xd4, 0x2a, 0xd8, 0x94, 0xd3, 0x2a, 0xd8, 0x94, - 0xd4, 0x2a, 0xd8, 0x94, 0xd3, 0x2a, 0xd9, 0x94, 0xd4, 0x2a, 0xd9, 0x95, - 0xd6, 0x2a, 0xd9, 0x95, 0xd6, 0x2a, 0xd9, 0x95, 0xd6, 0x2a, 0xda, 0x95, - 0xd6, 0x2a, 0xda, 0x95, 0xd6, 0x2a, 0xda, 0x95, 0xd6, 0x2a, 0xda, 0x95, - 0xd6, 0x2a, 0xdb, 0x95, 0xd6, 0x2a, 0xdb, 0x95, 0xd6, 0x2a, 0xdb, 0x95, - 0xd6, 0x2a, 0xdb, 0x96, 0xd9, 0x2a, 0xdc, 0x95, 0xd6, 0x2a, 0xdc, 0x96, - 0xd9, 0x2a, 0xdc, 0x96, 0xd9, 0x2a, 0xdd, 0x96, 0xd9, 0x2a, 0xdd, 0x96, - 0xd9, 0x2a, 0xdd, 0x96, 0xd9, 0x2a, 0xdd, 0x96, 0xd9, 0x2a, 0xde, 0x96, - 0xd9, 0x2a, 0xde, 0x97, 0xdb, 0x2a, 0xde, 0x96, 0xd9, 0x2a, 0xde, 0x97, - 0xdb, 0x2a, 0xdf, 0x96, 0xd9, 0x2a, 0xdf, 0x97, 0xdb, 0x2a, 0xdf, 0x97, - 0xdb, 0x2a, 0xdf, 0x97, 0xdb, 0x2a, 0xe0, 0x97, 0xdb, 0x2a, 0xe0, 0x97, - 0xdb, 0x2a, 0xe0, 0x97, 0xdb, 0x2a, 0xe1, 0x97, 0xdb, 0x2a, 0xe1, 0x98, - 0xde, 0x2a, 0xe1, 0x98, 0xde, 0x2a, 0xe1, 0x98, 0xde, 0x2a, 0xe2, 0x98, - 0xde, 0x2a, 0xe2, 0x98, 0xde, 0x2a, 0xe2, 0x98, 0xde, 0x2a, 0xe2, 0x98, - 0xde, 0x2a, 0xe3, 0x98, 0xde, 0x2a, 0xe3, 0x98, 0xde, 0x2a, 0xe3, 0x98, - 0xde, 0x2a, 0xe3, 0x98, 0xe0, 0x2a, 0xe4, 0x98, 0xde, 0x2a, 0xe4, 0x98, - 0xe0, 0x2a, 0xe4, 0x98, 0xe0, 0x2a, 0xe4, 0x98, 0xe0, 0x2a, 0xe5, 0x98, - 0xe0, 0x2a, 0xe5, 0x98, 0xe0, 0x2a, 0xe5, 0x98, 0xe0, 0x2a, 0xe5, 0x98, - 0xe0, 0x2a, 0xe6, 0x99, 0xe3, 0x2a, 0xe6, 0x98, 0xe0, 0x2a, 0xe6, 0x99, - 0xe3, 0x2a, 0xe6, 0x99, 0xe2, 0x2a, 0xe7, 0x99, 0xe3, 0x2a, 0xe7, 0x99, - 0xe2, 0x2a, 0xe7, 0x99, 0xe3, 0x2a, 0xe7, 0x99, 0xe2, 0x2a, 0xe8, 0x99, - 0xe3, 0x2a, 0xe8, 0x9a, 0xe5, 0x2a, 0xe8, 0x9a, 0xe5, 0x2a, 0xe8, 0x9a, - 0xe5, 0x2a, 0xe9, 0x9a, 0xe5, 0x2a, 0xe9, 0x9a, 0xe5, 0x2a, 0xe9, 0x9a, - 0xe5, 0x2a, 0xe9, 0x9a, 0xe5, 0x2a, 0xea, 0x9a, 0xe5, 0x2a, 0xea, 0x9a, - 0xe5, 0x2a, 0xea, 0x9a, 0xe5, 0x2a, 0xea, 0x9b, 0xe7, 0x2a, 0xeb, 0x9a, - 0xe5, 0x2a, 0xeb, 0x9b, 0xe7, 0x2a, 0xeb, 0x9a, 0xe5, 0x2a, 0xeb, 0x9b, - 0xe7, 0x2a, 0xec, 0x9b, 0xe7, 0x2a, 0xec, 0x9b, 0xe7, 0x2a, 0xec, 0x9b, - 0xe7, 0x2a, 0xec, 0x9b, 0xe7, 0x2a, 0xec, 0x9c, 0xea, 0x2a, 0xed, 0x9c, - 0xea, 0x2a, 0xed, 0x9c, 0xea, 0x2a, 0xed, 0x9c, 0xea, 0x2a, 0xed, 0x9c, - 0xea, 0x2a, 0xee, 0x9c, 0xea, 0x2a, 0xee, 0x9c, 0xea, 0x2a, 0xee, 0x9c, - 0xea, 0x2a, 0xee, 0x9c, 0xea, 0x2a, 0xef, 0x9c, 0xea, 0x2a, 0xef, 0x9c, - 0xea, 0x2a, 0xef, 0x9c, 0xea, 0x2a, 0xef, 0x9d, 0xec, 0x2a, 0xf0, 0x9c, - 0xea, 0x2a, 0xf0, 0x9d, 0xec, 0x2a, 0xf0, 0x9d, 0xec, 0x2a, 0xf0, 0x9d, - 0xec, 0x2a, 0xf1, 0x9d, 0xec, 0x2a, 0xf1, 0x9d, 0xec, 0x2a, 0xf1, 0x9d, - 0xec, 0x2a, 0xf1, 0x9d, 0xec, 0x2a, 0xf2, 0x9d, 0xee, 0x2a, 0xf2, 0x9d, - 0xec, 0x2a, 0xf2, 0x9d, 0xee, 0x2a, 0xf2, 0x9d, 0xec, 0x2a, 0xf2, 0x9d, - 0xee, 0x2a, 0xf3, 0x9d, 0xee, 0x2a, 0xf3, 0x9d, 0xee, 0x2a, 0xf3, 0x9d, - 0xee, 0x2a, 0xf3, 0x9d, 0xee, 0x2a, 0xf4, 0x9e, 0xf0, 0x2a, 0xf4, 0x9e, - 0xf1, 0x2a, 0xf4, 0x9e, 0xf0, 0x2a, 0xf4, 0x9e, 0xf1, 0x2a, 0xf5, 0x9e, - 0xf0, 0x2a, 0xf5, 0x9e, 0xf1, 0x2a, 0xf5, 0x9e, 0xf0, 0x2a, 0xf5, 0x9e, - 0xf1, 0x2a, 0xf5, 0x9e, 0xf0, 0x2a, 0xf6, 0x9e, 0xf1, 0x2a, 0xf6, 0x9f, - 0xf3, 0x2a, 0xf6, 0x9e, 0xf1, 0x2a, 0xf6, 0x9f, 0xf3, 0x2a, 0xf7, 0x9e, - 0xf1, 0x2a, 0xf7, 0x9f, 0xf3, 0x2a, 0xf7, 0x9f, 0xf2, 0x2a, 0xf7, 0x9f, - 0xf3, 0x2a, 0xf8, 0x9f, 0xf2, 0x2a, 0xf8, 0x9f, 0xf3, 0x2a, 0xf8, 0x9f, - 0xf2, 0x2a, 0xf8, 0x9f, 0xf3, 0x2a, 0xf8, 0xa0, 0xf5, 0x2a, 0xf9, 0x9f, - 0xf3, 0x2a, 0xf9, 0xa0, 0xf5, 0x2a, 0xf9, 0xa0, 0xf5, 0x2a, 0xf9, 0xa0, - 0xf5, 0x2a, 0xfa, 0xa0, 0xf5, 0x2a, 0xfa, 0xa0, 0xf5, 0x2a, 0xfa, 0xa0, - 0xf5, 0x2a, 0xfa, 0xa0, 0xf5, 0x2a, 0xfa, 0xa1, 0xf7, 0x2a, 0xfb, 0xa1, - 0xf7, 0x2a, 0xfb, 0xa1, 0xf7, 0x2a, 0xfb, 0xa1, 0xf7, 0x2a, 0xfb, 0xa1, - 0xf7, 0x2a, 0xfc, 0xa1, 0xf7, 0x2a, 0xfc, 0xa1, 0xf7, 0x2a, 0xfc, 0xa1, - 0xf7, 0x2a, 0xfc, 0xa1, 0xf7, 0x2a, 0xfc, 0xa1, 0xf7, 0x2a, 0xfd, 0xa1, - 0xf9, 0x2a, 0xfd, 0xa1, 0xf7, 0x2a, 0xfd, 0xa1, 0xf9, 0x2a, 0xfd, 0xa1, - 0xf7, 0x2a, 0xfe, 0xa1, 0xf9, 0x2a, 0xfe, 0xa1, 0xf9, 0x2a, 0xfe, 0xa1, - 0xf9, 0x2a, 0xfe, 0xa1, 0xf9, 0x2a, 0xfe, 0xa1, 0xf9, 0x2a, 0xff, 0xa2, - 0xfb, 0x2a, 0xff, 0xa1, 0xf9, 0x2a, 0x03, 0x83, 0x9b, 0x2a, 0x0a, 0x83, - 0x9b, 0x2a, 0x0f, 0x83, 0x9b, 0x2a, 0x14, 0x83, 0x9b, 0x2a, 0x17, 0x83, - 0x9b, 0x2a, 0x1b, 0x83, 0x9b, 0x2a, 0x1e, 0x83, 0x9b, 0x2a, 0x20, 0x86, - 0x9b, 0x2a, 0x23, 0x83, 0x9b, 0x2a, 0x25, 0x86, 0x9b, 0x2a, 0x27, 0x83, - 0x9b, 0x2a, 0x29, 0x86, 0x9b, 0x2a, 0x2b, 0x83, 0x9b, 0x2a, 0x2d, 0x86, - 0x9b, 0x2a, 0x2f, 0x83, 0x9b, 0x2a, 0x31, 0x86, 0x9b, 0x2a, 0x32, 0x83, - 0x9b, 0x2a, 0x34, 0x86, 0x9b, 0x2a, 0x35, 0x83, 0x9b, 0x2a, 0x37, 0x86, - 0x9b, 0x2a, 0x38, 0x83, 0x9b, 0x2a, 0x3a, 0x86, 0x9b, 0x2a, 0x3b, 0x83, - 0x9b, 0x2a, 0x3c, 0x86, 0x9b, 0x2a, 0x3e, 0x83, 0x9b, 0x2a, 0x3f, 0x86, - 0x9b, 0x2a, 0x40, 0x83, 0x9b, 0x2a, 0x42, 0x86, 0x9b, 0x2a, 0x43, 0x83, - 0x9b, 0x2a, 0x44, 0x86, 0x9b, 0x2a, 0x45, 0x83, 0x9b, 0x2a, 0x46, 0x86, - 0x9b, 0x2a, 0x47, 0x83, 0x9b, 0x2a, 0x48, 0x86, 0x9b, 0x2a, 0x49, 0x83, - 0x9b, 0x2a, 0x4a, 0x86, 0x9b, 0x2a, 0x4b, 0x83, 0x9b, 0x2a, 0x4c, 0x86, - 0x9b, 0x2a, 0x4d, 0x83, 0x9b, 0x2a, 0x4e, 0x86, 0x9b, 0x2a, 0x4f, 0x83, - 0x9b, 0x2a, 0x50, 0x86, 0x9b, 0x2a, 0x51, 0x83, 0x9b, 0x2a, 0x52, 0x86, - 0x9b, 0x2a, 0x53, 0x83, 0x9b, 0x2a, 0x54, 0x86, 0x9b, 0x2a, 0x55, 0x83, - 0x9b, 0x2a, 0x56, 0x86, 0x9b, 0x2a, 0x57, 0x83, 0x9b, 0x2a, 0x58, 0x86, - 0x9b, 0x2a, 0x58, 0x83, 0x9b, 0x2a, 0x59, 0x86, 0x9b, 0x2a, 0x5a, 0x83, - 0x9b, 0x2a, 0x5b, 0x86, 0x9b, 0x2a, 0x5c, 0x83, 0x9b, 0x2a, 0x5d, 0x86, - 0x9b, 0x2a, 0x5d, 0x83, 0x9b, 0x2a, 0x5e, 0x86, 0x9b, 0x2a, 0x5f, 0x83, - 0x9b, 0x2a, 0x60, 0x86, 0x9b, 0x2a, 0x60, 0x83, 0x9b, 0x2a, 0x61, 0x86, - 0x9b, 0x2a, 0x62, 0x83, 0x9b, 0x2a, 0x63, 0x86, 0x9b, 0x2a, 0x63, 0x83, - 0x9b, 0x2a, 0x64, 0x83, 0x9c, 0x2a, 0x65, 0x83, 0x9b, 0x2a, 0x66, 0x83, - 0x9c, 0x2a, 0x66, 0x83, 0x9b, 0x2a, 0x67, 0x83, 0x9c, 0x2a, 0x68, 0x83, - 0x9b, 0x2a, 0x68, 0x83, 0x9c, 0x2a, 0x69, 0x83, 0x9b, 0x2a, 0x6a, 0x83, - 0x9c, 0x2a, 0x6a, 0x83, 0x9b, 0x2a, 0x6b, 0x83, 0x9c, 0x2a, 0x6c, 0x83, - 0x9b, 0x2a, 0x6c, 0x83, 0x9c, 0x2a, 0x6d, 0x83, 0x9b, 0x2a, 0x6e, 0x83, - 0x9c, 0x2a, 0x6e, 0x83, 0x9b, 0x2a, 0x6f, 0x83, 0x9c, 0x2a, 0x70, 0x83, - 0x9b, 0x2a, 0x70, 0x83, 0x9c, 0x2a, 0x71, 0x83, 0x9b, 0x2a, 0x72, 0x83, - 0x9c, 0x2a, 0x72, 0x83, 0x9b, 0x2a, 0x73, 0x83, 0x9c, 0x2a, 0x73, 0x83, - 0x9b, 0x2a, 0x74, 0x83, 0x9c, 0x2a, 0x75, 0x83, 0x9b, 0x2a, 0x75, 0x83, - 0x9c, 0x2a, 0x76, 0x83, 0x9b, 0x2a, 0x76, 0x83, 0x9c, 0x2a, 0x77, 0x83, - 0x9b, 0x2a, 0x78, 0x83, 0x9c, 0x2a, 0x78, 0x83, 0x9b, 0x2a, 0x79, 0x83, - 0x9c, 0x2a, 0x79, 0x83, 0x9b, 0x2a, 0x7a, 0x83, 0x9c, 0x2a, 0x7a, 0x83, - 0x9b, 0x2a, 0x7b, 0x83, 0x9c, 0x2a, 0x7c, 0x83, 0x9b, 0x2a, 0x7c, 0x83, - 0x9c, 0x2a, 0x7d, 0x83, 0x9b, 0x2a, 0x7d, 0x83, 0x9c, 0x2a, 0x7e, 0x83, - 0x9b, 0x2a, 0x7e, 0x83, 0x9c, 0x2a, 0x7f, 0x83, 0x9b, 0x2a, 0x7f, 0x83, - 0x9c, 0x2a, 0x80, 0x83, 0x9b, 0x2a, 0x81, 0x83, 0x9c, 0x2a, 0x81, 0x83, - 0x9b, 0x2a, 0x82, 0x83, 0x9c, 0x2a, 0x82, 0x83, 0x9b, 0x2a, 0x83, 0x83, - 0x9c, 0x2a, 0x83, 0x83, 0x9b, 0x2a, 0x84, 0x83, 0x9c, 0x2a, 0x84, 0x83, - 0x9b, 0x2a, 0x85, 0x83, 0x9c, 0x2a, 0x85, 0x83, 0x9b, 0x2a, 0x86, 0x83, - 0x9c, 0x2a, 0x86, 0x83, 0x9b, 0x2a, 0x87, 0x83, 0x9c, 0x2a, 0x87, 0x83, - 0x9b, 0x2a, 0x88, 0x83, 0x9c, 0x2a, 0x88, 0x83, 0x9b, 0x2a, 0x89, 0x83, - 0x9c, 0x2a, 0x89, 0x83, 0x9b, 0x2a, 0x8a, 0x83, 0x9c, 0x2a, 0x8a, 0x83, - 0x9b, 0x2a, 0x8b, 0x83, 0x9c, 0x2a, 0x8b, 0x83, 0x9b, 0x2a, 0x8c, 0x83, - 0x9c, 0x2a, 0x8c, 0x83, 0x9b, 0x2a, 0x8d, 0x83, 0x9c, 0x2a, 0x8d, 0x83, - 0x9b, 0x2a, 0x8e, 0x83, 0x9c, 0x2a, 0x8e, 0x83, 0x9b, 0x2a, 0x8e, 0x83, - 0x9c, 0x2a, 0x8f, 0x83, 0x9b, 0x2a, 0x8f, 0x83, 0x9c, 0x2a, 0x90, 0x83, - 0x9b, 0x2a, 0x90, 0x83, 0x9c, 0x2a, 0x91, 0x83, 0x9b, 0x2a, 0x91, 0x83, - 0x9c, 0x2a, 0x92, 0x83, 0x9b, 0x2a, 0x92, 0x83, 0x9c, 0x2a, 0x93, 0x83, - 0x9b, 0x2a, 0x93, 0x83, 0x9c, 0x2a, 0x94, 0x83, 0x9b, 0x2a, 0x94, 0x83, - 0x9c, 0x2a, 0x94, 0x83, 0x9b, 0x2a, 0x95, 0x83, 0x9c, 0x2a, 0x95, 0x83, - 0x9b, 0x2a, 0x96, 0x83, 0x9c, 0x2a, 0x96, 0x83, 0x9b, 0x2a, 0x97, 0x83, - 0x9c, 0x2a, 0x97, 0x83, 0x9b, 0x2a, 0x98, 0x83, 0x9c, 0x2a, 0x98, 0x83, - 0x9b, 0x2a, 0x98, 0x83, 0x9c, 0x2a, 0x99, 0x83, 0x9b, 0x2a, 0x99, 0x83, - 0x9c, 0x2a, 0x9a, 0x83, 0x9b, 0x2a, 0x9a, 0x83, 0x9c, 0x2a, 0x9a, 0x83, - 0x9b, 0x2a, 0x9b, 0x83, 0x9c, 0x2a, 0x9b, 0x83, 0x9b, 0x2a, 0x9c, 0x83, - 0x9c, 0x2a, 0x9c, 0x83, 0x9c, 0x2a, 0x9d, 0x83, 0x9d, 0x2a, 0x9d, 0x83, - 0x9c, 0x2a, 0x9d, 0x83, 0x9d, 0x2a, 0x9e, 0x83, 0x9c, 0x2a, 0x9e, 0x83, - 0x9d, 0x2a, 0x9f, 0x83, 0x9c, 0x2a, 0x9f, 0x83, 0x9d, 0x2a, 0x9f, 0x83, - 0x9c, 0x2a, 0xa0, 0x83, 0x9d, 0x2a, 0xa0, 0x83, 0x9c, 0x2a, 0xa1, 0x83, - 0x9d, 0x2a, 0xa1, 0x84, 0xa0, 0x2a, 0xa1, 0x84, 0xa1, 0x2a, 0xa2, 0x84, - 0xa0, 0x2a, 0xa2, 0x84, 0xa1, 0x2a, 0xa3, 0x84, 0xa0, 0x2a, 0xa3, 0x84, - 0xa1, 0x2a, 0xa3, 0x84, 0xa0, 0x2a, 0xa4, 0x84, 0xa1, 0x2a, 0xa4, 0x84, - 0xa0, 0x2a, 0xa5, 0x84, 0xa1, 0x2a, 0xa5, 0x84, 0xa0, 0x2a, 0xa5, 0x84, - 0xa1, 0x2a, 0xa6, 0x85, 0xa4, 0x2a, 0xa6, 0x85, 0xa4, 0x2a, 0xa6, 0x85, - 0xa4, 0x2a, 0xa7, 0x85, 0xa4, 0x2a, 0xa7, 0x85, 0xa4, 0x2a, 0xa8, 0x85, - 0xa4, 0x2a, 0xa8, 0x85, 0xa4, 0x2a, 0xa8, 0x85, 0xa4, 0x2a, 0xa9, 0x85, - 0xa4, 0x2a, 0xa9, 0x86, 0xa8, 0x2a, 0xaa, 0x86, 0xa7, 0x2a, 0xaa, 0x86, - 0xa8, 0x2a, 0xaa, 0x86, 0xa7, 0x2a, 0xab, 0x86, 0xa8, 0x2a, 0xab, 0x86, - 0xa7, 0x2a, 0xab, 0x86, 0xa8, 0x2a, 0xac, 0x86, 0xa7, 0x2a, 0xac, 0x86, - 0xa8, 0x2a, 0xac, 0x87, 0xab, 0x2a, 0xad, 0x87, 0xab, 0x2a, 0xad, 0x87, - 0xab, 0x2a, 0xae, 0x87, 0xab, 0x2a, 0xae, 0x87, 0xab, 0x2a, 0xae, 0x87, - 0xab, 0x2a, 0xaf, 0x87, 0xab, 0x2a, 0xaf, 0x87, 0xab, 0x2a, 0xaf, 0x87, - 0xab, 0x2a, 0xb0, 0x87, 0xab, 0x2a, 0xb0, 0x88, 0xaf, 0x2a, 0xb0, 0x87, - 0xab, 0x2a, 0xb1, 0x88, 0xaf, 0x2a, 0xb1, 0x88, 0xae, 0x2a, 0xb2, 0x88, - 0xaf, 0x2a, 0xb2, 0x88, 0xae, 0x2a, 0xb2, 0x88, 0xaf, 0x2a, 0xb3, 0x88, - 0xae, 0x2a, 0xb3, 0x88, 0xaf, 0x2a, 0xb3, 0x89, 0xb2, 0x2a, 0xb4, 0x89, - 0xb2, 0x2a, 0xb4, 0x89, 0xb2, 0x2a, 0xb4, 0x89, 0xb2, 0x2a, 0xb5, 0x89, - 0xb2, 0x2a, 0xb5, 0x89, 0xb2, 0x2a, 0xb5, 0x89, 0xb2, 0x2a, 0xb6, 0x89, - 0xb2, 0x2a, 0xb6, 0x89, 0xb2, 0x2a, 0xb6, 0x89, 0xb2, 0x2a, 0xb7, 0x89, - 0xb2, 0x2a, 0xb7, 0x89, 0xb2, 0x2a, 0xb7, 0x8a, 0xb5, 0x2a, 0xb8, 0x8a, - 0xb5, 0x2a, 0xb8, 0x8a, 0xb5, 0x2a, 0xb8, 0x8a, 0xb5, 0x2a, 0xb9, 0x8a, - 0xb5, 0x2a, 0xb9, 0x8a, 0xb5, 0x2a, 0xb9, 0x8a, 0xb5, 0x2a, 0xba, 0x8a, - 0xb5, 0x2a, 0xba, 0x8a, 0xb5, 0x2a, 0xba, 0x8b, 0xb8, 0x2a, 0xbb, 0x8b, - 0xb8, 0x2a, 0xbb, 0x8b, 0xb8, 0x2a, 0xbb, 0x8b, 0xb8, 0x2a, 0xbc, 0x8b, - 0xb8, 0x2a, 0xbc, 0x8b, 0xb8, 0x2a, 0xbc, 0x8b, 0xb8, 0x2a, 0xbd, 0x8b, - 0xb8, 0x2a, 0xbd, 0x8b, 0xb8, 0x2a, 0xbd, 0x8c, 0xbb, 0x2a, 0xbe, 0x8c, - 0xbc, 0x2a, 0xbe, 0x8c, 0xbb, 0x2a, 0xbe, 0x8c, 0xbc, 0x2a, 0xbf, 0x8c, - 0xbb, 0x2a, 0xbf, 0x8c, 0xbc, 0x2a, 0xbf, 0x8c, 0xbb, 0x2a, 0xc0, 0x8c, - 0xbc, 0x2a, 0xc0, 0x8c, 0xbb, 0x2a, 0xc0, 0x8c, 0xbc, 0x2a, 0xc1, 0x8d, - 0xbf, 0x2a, 0xc1, 0x8c, 0xbc, 0x2a, 0xc1, 0x8d, 0xbf, 0x2a, 0xc1, 0x8d, - 0xbe, 0x2a, 0xc2, 0x8d, 0xbf, 0x2a, 0xc2, 0x8d, 0xbe, 0x2a, 0xc2, 0x8d, - 0xbf, 0x2a, 0xc3, 0x8d, 0xbe, 0x2a, 0xc3, 0x8d, 0xbf, 0x2a, 0xc3, 0x8e, - 0xc1, 0x2a, 0xc4, 0x8d, 0xbf, 0x2a, 0xc4, 0x8e, 0xc1, 0x2a, 0xc4, 0x8e, - 0xc1, 0x2a, 0xc5, 0x8e, 0xc1, 0x2a, 0xc5, 0x8e, 0xc1, 0x2a, 0xc5, 0x8e, - 0xc1, 0x2a, 0xc6, 0x8e, 0xc1, 0x2a, 0xc6, 0x8e, 0xc1, 0x2a, 0xc6, 0x8e, - 0xc1, 0x2a, 0xc6, 0x8e, 0xc1, 0x2a, 0xc7, 0x8f, 0xc4, 0x2a, 0xc7, 0x8f, - 0xc5, 0x2a, 0xc7, 0x8f, 0xc4, 0x2a, 0xc8, 0x8f, 0xc5, 0x2a, 0xc8, 0x8f, - 0xc4, 0x2a, 0xc8, 0x8f, 0xc5, 0x2a, 0xc9, 0x8f, 0xc4, 0x2a, 0xc9, 0x8f, - 0xc5, 0x2a, 0xc9, 0x8f, 0xc4, 0x2a, 0xc9, 0x8f, 0xc5, 0x2a, 0xca, 0x90, - 0xc7, 0x2a, 0xca, 0x8f, 0xc5, 0x2a, 0xca, 0x90, 0xc7, 0x2a, 0xcb, 0x90, - 0xc7, 0x2a, 0xcb, 0x90, 0xc7, 0x2a, 0xcb, 0x90, 0xc7, 0x2a, 0xcc, 0x90, - 0xc7, 0x2a, 0xcc, 0x90, 0xc7, 0x2a, 0xcc, 0x90, 0xc7, 0x2a, 0xcc, 0x91, - 0xca, 0x2a, 0xcd, 0x90, 0xc7, 0x2a, 0xcd, 0x91, 0xca, 0x2a, 0xcd, 0x91, - 0xca, 0x2a, 0xce, 0x91, 0xca, 0x2a, 0xce, 0x91, 0xca, 0x2a, 0xce, 0x91, - 0xca, 0x2a, 0xce, 0x91, 0xca, 0x2a, 0xcf, 0x91, 0xca, 0x2a, 0xcf, 0x92, - 0xcd, 0x2a, 0xcf, 0x92, 0xcd, 0x2a, 0xd0, 0x92, 0xcd, 0x2a, 0xd0, 0x92, - 0xcd, 0x2a, 0xd0, 0x92, 0xcd, 0x2a, 0xd0, 0x92, 0xcd, 0x2a, 0xd1, 0x92, - 0xcd, 0x2a, 0xd1, 0x92, 0xcd, 0x2a, 0xd1, 0x92, 0xcd, 0x2a, 0xd2, 0x92, - 0xcd, 0x2a, 0xd2, 0x93, 0xd0, 0x2a, 0xd2, 0x92, 0xcd, 0x2a, 0xd2, 0x93, - 0xd0, 0x2a, 0xd3, 0x93, 0xcf, 0x2a, 0xd3, 0x93, 0xd0, 0x2a, 0xd3, 0x93, - 0xcf, 0x2a, 0xd4, 0x93, 0xd0, 0x2a, 0xd4, 0x93, 0xcf, 0x2a, 0xd4, 0x93, - 0xd0, 0x2a, 0xd4, 0x94, 0xd2, 0x2a, 0xd5, 0x94, 0xd2, 0x2a, 0xd5, 0x94, - 0xd2, 0x2a, 0xd5, 0x94, 0xd2, 0x2a, 0xd6, 0x94, 0xd2, 0x2a, 0xd6, 0x94, - 0xd2, 0x2a, 0xd6, 0x94, 0xd2, 0x2a, 0xd6, 0x94, 0xd2, 0x2a, 0xd7, 0x94, - 0xd2, 0x2a, 0xd7, 0x94, 0xd2, 0x2a, 0xd7, 0x94, 0xd2, 0x2a, 0xd7, 0x94, - 0xd2, 0x2a, 0xd8, 0x94, 0xd5, 0x2a, 0xd8, 0x94, 0xd2, 0x2a, 0xd8, 0x94, - 0xd5, 0x2a, 0xd9, 0x94, 0xd5, 0x2a, 0xd9, 0x94, 0xd5, 0x2a, 0xd9, 0x94, - 0xd5, 0x2a, 0xd9, 0x94, 0xd5, 0x2a, 0xda, 0x94, 0xd5, 0x2a, 0xda, 0x94, - 0xd5, 0x2a, 0xda, 0x95, 0xd7, 0x2a, 0xda, 0x94, 0xd5, 0x2a, 0xdb, 0x95, - 0xd7, 0x2a, 0xdb, 0x95, 0xd7, 0x2a, 0xdb, 0x95, 0xd7, 0x2a, 0xdb, 0x95, - 0xd7, 0x2a, 0xdc, 0x95, 0xd7, 0x2a, 0xdc, 0x95, 0xd7, 0x2a, 0xdc, 0x95, - 0xd7, 0x2a, 0xdd, 0x96, 0xda, 0x2a, 0xdd, 0x96, 0xda, 0x2a, 0xdd, 0x96, - 0xda, 0x2a, 0xdd, 0x96, 0xda, 0x2a, 0xde, 0x96, 0xda, 0x2a, 0xde, 0x96, - 0xda, 0x2a, 0xde, 0x96, 0xda, 0x2a, 0xde, 0x96, 0xda, 0x2a, 0xdf, 0x96, - 0xda, 0x2a, 0xdf, 0x96, 0xda, 0x2a, 0xdf, 0x97, 0xdd, 0x2a, 0xdf, 0x96, - 0xda, 0x2a, 0xe0, 0x97, 0xdd, 0x2a, 0xe0, 0x96, 0xda, 0x2a, 0xe0, 0x97, - 0xdd, 0x2a, 0xe1, 0x97, 0xdc, 0x2a, 0xe1, 0x97, 0xdd, 0x2a, 0xe1, 0x97, - 0xdc, 0x2a, 0xe1, 0x97, 0xdd, 0x2a, 0xe2, 0x97, 0xdc, 0x2a, 0xe2, 0x97, - 0xdd, 0x2a, 0xe2, 0x98, 0xdf, 0x2a, 0xe2, 0x97, 0xdd, 0x2a, 0xe3, 0x98, - 0xdf, 0x2a, 0xe3, 0x98, 0xdf, 0x2a, 0xe3, 0x98, 0xdf, 0x2a, 0xe3, 0x98, - 0xdf, 0x2a, 0xe4, 0x98, 0xdf, 0x2a, 0xe4, 0x98, 0xdf, 0x2a, 0xe4, 0x98, - 0xdf, 0x2a, 0xe4, 0x99, 0xe1, 0x2a, 0xe5, 0x99, 0xe2, 0x2a, 0xe5, 0x99, - 0xe1, 0x2a, 0xe5, 0x99, 0xe2, 0x2a, 0xe5, 0x99, 0xe1, 0x2a, 0xe6, 0x99, - 0xe2, 0x2a, 0xe6, 0x99, 0xe1, 0x2a, 0xe6, 0x99, 0xe2, 0x2a, 0xe6, 0x99, - 0xe1, 0x2a, 0xe7, 0x99, 0xe2, 0x2a, 0xe7, 0x9a, 0xe4, 0x2a, 0xe7, 0x99, - 0xe2, 0x2a, 0xe7, 0x9a, 0xe4, 0x2a, 0xe8, 0x9a, 0xe4, 0x2a, 0xe8, 0x9a, - 0xe4, 0x2a, 0xe8, 0x9a, 0xe4, 0x2a, 0xe8, 0x9a, 0xe4, 0x2a, 0xe9, 0x9a, - 0xe4, 0x2a, 0xe9, 0x9a, 0xe4, 0x2a, 0xe9, 0x9a, 0xe6, 0x2a, 0xe9, 0x9a, - 0xe4, 0x2a, 0xea, 0x9a, 0xe6, 0x2a, 0xea, 0x9a, 0xe4, 0x2a, 0xea, 0x9a, - 0xe6, 0x2a, 0xea, 0x9a, 0xe6, 0x2a, 0xeb, 0x9a, 0xe6, 0x2a, 0xeb, 0x9a, - 0xe6, 0x2a, 0xeb, 0x9a, 0xe6, 0x2a, 0xeb, 0x9b, 0xe8, 0x2a, 0xec, 0x9b, - 0xe9, 0x2a, 0xec, 0x9b, 0xe8, 0x2a, 0xec, 0x9b, 0xe9, 0x2a, 0xec, 0x9b, - 0xe8, 0x2a, 0xec, 0x9b, 0xe9, 0x2a, 0xed, 0x9b, 0xe8, 0x2a, 0xed, 0x9b, - 0xe9, 0x2a, 0xed, 0x9b, 0xe8, 0x2a, 0xed, 0x9b, 0xe9, 0x2a, 0xee, 0x9c, - 0xeb, 0x2a, 0xee, 0x9b, 0xe9, 0x2a, 0xee, 0x9c, 0xeb, 0x2a, 0xee, 0x9b, - 0xe9, 0x2a, 0xef, 0x9c, 0xeb, 0x2a, 0xef, 0x9c, 0xeb, 0x2a, 0xef, 0x9c, - 0xeb, 0x2a, 0xef, 0x9c, 0xeb, 0x2a, 0xf0, 0x9c, 0xeb, 0x2a, 0xf0, 0x9c, - 0xeb, 0x2a, 0xf0, 0x9c, 0xeb, 0x2a, 0xf0, 0x9d, 0xed, 0x2a, 0xf1, 0x9d, - 0xed, 0x2a, 0xf1, 0x9d, 0xed, 0x2a, 0xf1, 0x9d, 0xed, 0x2a, 0xf1, 0x9d, - 0xed, 0x2a, 0xf2, 0x9d, 0xed, 0x2a, 0xf2, 0x9d, 0xed, 0x2a, 0xf2, 0x9d, - 0xed, 0x2a, 0xf2, 0x9d, 0xed, 0x2a, 0xf2, 0x9d, 0xed, 0x2a, 0xf3, 0x9e, - 0xef, 0x2a, 0xf3, 0x9d, 0xed, 0x2a, 0xf3, 0x9e, 0xef, 0x2a, 0xf3, 0x9d, - 0xed, 0x2a, 0xf4, 0x9e, 0xef, 0x2a, 0xf4, 0x9e, 0xef, 0x2a, 0xf4, 0x9e, - 0xef, 0x2a, 0xf4, 0x9e, 0xef, 0x2a, 0xf5, 0x9e, 0xef, 0x2a, 0xf5, 0x9f, - 0xf2, 0x2a, 0xf5, 0x9e, 0xef, 0x2a, 0xf5, 0x9f, 0xf2, 0x2a, 0xf5, 0x9e, - 0xef, 0x2a, 0xf6, 0x9f, 0xf2, 0x2a, 0xf6, 0x9f, 0xf1, 0x2a, 0xf6, 0x9f, - 0xf2, 0x2a, 0xf6, 0x9f, 0xf1, 0x2a, 0xf7, 0x9f, 0xf2, 0x2a, 0xf7, 0x9f, - 0xf4, 0x2a, 0xf7, 0x9f, 0xf4, 0x2a, 0xf7, 0x9f, 0xf4, 0x2a, 0xf8, 0x9f, - 0xf4, 0x2a, 0xf8, 0x9f, 0xf4, 0x2a, 0xf8, 0x9f, 0xf4, 0x2a, 0xf8, 0x9f, - 0xf4, 0x2a, 0xf8, 0x9f, 0xf4, 0x2a, 0xf9, 0x9f, 0xf4, 0x2a, 0xf9, 0x9f, - 0xf4, 0x2a, 0xf9, 0x9f, 0xf4, 0x2a, 0xf9, 0x9f, 0xf4, 0x2a, 0xfa, 0xa0, - 0xf6, 0x2a, 0xfa, 0x9f, 0xf4, 0x2a, 0xfa, 0xa0, 0xf6, 0x2a, 0xfa, 0xa0, - 0xf6, 0x2a, 0xfa, 0xa0, 0xf6, 0x2a, 0xfb, 0xa0, 0xf6, 0x2a, 0xfb, 0xa0, - 0xf6, 0x2a, 0xfb, 0xa0, 0xf6, 0x2a, 0xfb, 0xa0, 0xf6, 0x2a, 0xfc, 0xa1, - 0xf8, 0x2a, 0xfc, 0xa0, 0xf6, 0x2a, 0xfc, 0xa1, 0xf8, 0x2a, 0xfc, 0xa0, - 0xf6, 0x2a, 0xfc, 0xa1, 0xf8, 0x2a, 0xfd, 0xa1, 0xf8, 0x2a, 0xfd, 0xa1, - 0xf8, 0x2a, 0xfd, 0xa1, 0xf8, 0x2a, 0xfd, 0xa1, 0xf8, 0x2a, 0xfe, 0xa2, - 0xfa, 0x2a, 0xfe, 0xa2, 0xfa, 0x2a, 0xfe, 0xa2, 0xfa, 0x2a, 0xfe, 0xa2, - 0xfa, 0x2a, 0xfe, 0xa2, 0xfa, 0x2a, 0xff, 0xa2, 0xfa, 0x2a, 0xff, 0xa2, - 0xfa, 0x2a, 0x03, 0x84, 0x9b, 0x2b, 0x0a, 0x86, 0x9b, 0x2b, 0x0f, 0x84, - 0x9b, 0x2b, 0x14, 0x86, 0x9b, 0x2b, 0x17, 0x84, 0x9b, 0x2b, 0x1b, 0x86, - 0x9b, 0x2b, 0x1e, 0x84, 0x9b, 0x2b, 0x20, 0x86, 0x9b, 0x2b, 0x23, 0x84, - 0x9b, 0x2b, 0x25, 0x86, 0x9b, 0x2b, 0x27, 0x84, 0x9b, 0x2b, 0x29, 0x86, - 0x9b, 0x2b, 0x2b, 0x84, 0x9b, 0x2b, 0x2d, 0x86, 0x9b, 0x2b, 0x2f, 0x84, - 0x9b, 0x2b, 0x31, 0x86, 0x9b, 0x2b, 0x32, 0x84, 0x9b, 0x2b, 0x34, 0x86, - 0x9b, 0x2b, 0x35, 0x84, 0x9b, 0x2b, 0x37, 0x86, 0x9b, 0x2b, 0x38, 0x84, - 0x9b, 0x2b, 0x3a, 0x86, 0x9b, 0x2b, 0x3b, 0x84, 0x9b, 0x2b, 0x3c, 0x86, - 0x9b, 0x2b, 0x3e, 0x84, 0x9b, 0x2b, 0x3f, 0x86, 0x9b, 0x2b, 0x40, 0x84, - 0x9b, 0x2b, 0x42, 0x86, 0x9b, 0x2b, 0x43, 0x84, 0x9b, 0x2b, 0x44, 0x86, - 0x9b, 0x2b, 0x45, 0x84, 0x9b, 0x2b, 0x46, 0x86, 0x9b, 0x2b, 0x47, 0x84, - 0x9b, 0x2b, 0x48, 0x86, 0x9b, 0x2b, 0x49, 0x84, 0x9b, 0x2b, 0x4a, 0x86, - 0x9b, 0x2b, 0x4b, 0x84, 0x9b, 0x2b, 0x4c, 0x86, 0x9b, 0x2b, 0x4d, 0x84, - 0x9b, 0x2b, 0x4e, 0x86, 0x9b, 0x2b, 0x4f, 0x84, 0x9b, 0x2b, 0x50, 0x86, - 0x9b, 0x2b, 0x51, 0x84, 0x9b, 0x2b, 0x52, 0x86, 0x9b, 0x2b, 0x53, 0x84, - 0x9b, 0x2b, 0x54, 0x86, 0x9b, 0x2b, 0x55, 0x84, 0x9b, 0x2b, 0x56, 0x86, - 0x9b, 0x2b, 0x57, 0x84, 0x9b, 0x2b, 0x58, 0x86, 0x9b, 0x2b, 0x58, 0x84, - 0x9b, 0x2b, 0x59, 0x86, 0x9b, 0x2b, 0x5a, 0x84, 0x9b, 0x2b, 0x5b, 0x86, - 0x9b, 0x2b, 0x5c, 0x84, 0x9b, 0x2b, 0x5d, 0x86, 0x9b, 0x2b, 0x5d, 0x84, - 0x9b, 0x2b, 0x5e, 0x86, 0x9b, 0x2b, 0x5f, 0x84, 0x9b, 0x2b, 0x60, 0x86, - 0x9b, 0x2b, 0x60, 0x84, 0x9b, 0x2b, 0x61, 0x86, 0x9b, 0x2b, 0x62, 0x84, - 0x9b, 0x2b, 0x63, 0x86, 0x9b, 0x2b, 0x63, 0x84, 0x9b, 0x2b, 0x64, 0x86, - 0x9b, 0x2b, 0x65, 0x84, 0x9b, 0x2b, 0x66, 0x86, 0x9b, 0x2b, 0x66, 0x84, - 0x9b, 0x2b, 0x67, 0x86, 0x9b, 0x2b, 0x68, 0x84, 0x9b, 0x2b, 0x68, 0x86, - 0x9b, 0x2b, 0x69, 0x84, 0x9b, 0x2b, 0x6a, 0x86, 0x9b, 0x2b, 0x6a, 0x84, - 0x9b, 0x2b, 0x6b, 0x86, 0x9b, 0x2b, 0x6c, 0x84, 0x9b, 0x2b, 0x6c, 0x86, - 0x9b, 0x2b, 0x6d, 0x84, 0x9b, 0x2b, 0x6e, 0x86, 0x9b, 0x2b, 0x6e, 0x84, - 0x9b, 0x2b, 0x6f, 0x86, 0x9b, 0x2b, 0x70, 0x84, 0x9b, 0x2b, 0x70, 0x86, - 0x9b, 0x2b, 0x71, 0x84, 0x9b, 0x2b, 0x72, 0x86, 0x9b, 0x2b, 0x72, 0x84, - 0x9b, 0x2b, 0x73, 0x86, 0x9b, 0x2b, 0x73, 0x84, 0x9b, 0x2b, 0x74, 0x86, - 0x9b, 0x2b, 0x75, 0x84, 0x9b, 0x2b, 0x75, 0x86, 0x9b, 0x2b, 0x76, 0x84, - 0x9b, 0x2b, 0x76, 0x86, 0x9b, 0x2b, 0x77, 0x84, 0x9b, 0x2b, 0x78, 0x86, - 0x9b, 0x2b, 0x78, 0x84, 0x9b, 0x2b, 0x79, 0x86, 0x9b, 0x2b, 0x79, 0x84, - 0x9b, 0x2b, 0x7a, 0x86, 0x9b, 0x2b, 0x7a, 0x84, 0x9b, 0x2b, 0x7b, 0x84, - 0x9c, 0x2b, 0x7c, 0x84, 0x9b, 0x2b, 0x7c, 0x84, 0x9c, 0x2b, 0x7d, 0x84, - 0x9b, 0x2b, 0x7d, 0x84, 0x9c, 0x2b, 0x7e, 0x84, 0x9b, 0x2b, 0x7e, 0x84, - 0x9c, 0x2b, 0x7f, 0x84, 0x9b, 0x2b, 0x7f, 0x84, 0x9c, 0x2b, 0x80, 0x84, - 0x9b, 0x2b, 0x81, 0x84, 0x9c, 0x2b, 0x81, 0x84, 0x9b, 0x2b, 0x82, 0x84, - 0x9c, 0x2b, 0x82, 0x84, 0x9b, 0x2b, 0x83, 0x84, 0x9c, 0x2b, 0x83, 0x84, - 0x9b, 0x2b, 0x84, 0x84, 0x9c, 0x2b, 0x84, 0x84, 0x9b, 0x2b, 0x85, 0x84, - 0x9c, 0x2b, 0x85, 0x84, 0x9b, 0x2b, 0x86, 0x84, 0x9c, 0x2b, 0x86, 0x84, - 0x9b, 0x2b, 0x87, 0x84, 0x9c, 0x2b, 0x87, 0x84, 0x9b, 0x2b, 0x88, 0x84, - 0x9c, 0x2b, 0x88, 0x84, 0x9b, 0x2b, 0x89, 0x84, 0x9c, 0x2b, 0x89, 0x84, - 0x9b, 0x2b, 0x8a, 0x84, 0x9c, 0x2b, 0x8a, 0x84, 0x9b, 0x2b, 0x8b, 0x84, - 0x9c, 0x2b, 0x8b, 0x84, 0x9b, 0x2b, 0x8c, 0x84, 0x9c, 0x2b, 0x8c, 0x84, - 0x9b, 0x2b, 0x8d, 0x84, 0x9c, 0x2b, 0x8d, 0x84, 0x9b, 0x2b, 0x8e, 0x84, - 0x9c, 0x2b, 0x8e, 0x84, 0x9b, 0x2b, 0x8e, 0x84, 0x9c, 0x2b, 0x8f, 0x84, - 0x9b, 0x2b, 0x8f, 0x84, 0x9c, 0x2b, 0x90, 0x84, 0x9b, 0x2b, 0x90, 0x84, - 0x9c, 0x2b, 0x91, 0x84, 0x9b, 0x2b, 0x91, 0x84, 0x9c, 0x2b, 0x92, 0x84, - 0x9b, 0x2b, 0x92, 0x84, 0x9c, 0x2b, 0x93, 0x84, 0x9b, 0x2b, 0x93, 0x84, - 0x9c, 0x2b, 0x94, 0x84, 0x9b, 0x2b, 0x94, 0x84, 0x9c, 0x2b, 0x94, 0x84, - 0x9b, 0x2b, 0x95, 0x84, 0x9c, 0x2b, 0x95, 0x84, 0x9b, 0x2b, 0x96, 0x84, - 0x9c, 0x2b, 0x96, 0x84, 0x9b, 0x2b, 0x97, 0x84, 0x9c, 0x2b, 0x97, 0x84, - 0x9b, 0x2b, 0x98, 0x84, 0x9c, 0x2b, 0x98, 0x84, 0x9b, 0x2b, 0x98, 0x84, - 0x9c, 0x2b, 0x99, 0x84, 0x9b, 0x2b, 0x99, 0x84, 0x9c, 0x2b, 0x9a, 0x84, - 0x9b, 0x2b, 0x9a, 0x84, 0x9c, 0x2b, 0x9a, 0x84, 0x9b, 0x2b, 0x9b, 0x84, - 0x9c, 0x2b, 0x9b, 0x84, 0x9b, 0x2b, 0x9c, 0x84, 0x9c, 0x2b, 0x9c, 0x84, - 0x9c, 0x2b, 0x9d, 0x84, 0x9d, 0x2b, 0x9d, 0x84, 0x9d, 0x2b, 0x9d, 0x84, - 0x9d, 0x2b, 0x9e, 0x84, 0x9e, 0x2b, 0x9e, 0x84, 0x9e, 0x2b, 0x9f, 0x84, - 0x9f, 0x2b, 0x9f, 0x84, 0x9e, 0x2b, 0x9f, 0x84, 0x9f, 0x2b, 0xa0, 0x84, - 0x9e, 0x2b, 0xa0, 0x84, 0x9f, 0x2b, 0xa1, 0x84, 0x9e, 0x2b, 0xa1, 0x84, - 0x9f, 0x2b, 0xa1, 0x84, 0x9e, 0x2b, 0xa2, 0x84, 0x9f, 0x2b, 0xa2, 0x84, - 0x9e, 0x2b, 0xa3, 0x84, 0x9f, 0x2b, 0xa3, 0x85, 0xa2, 0x2b, 0xa3, 0x84, - 0x9f, 0x2b, 0xa4, 0x85, 0xa2, 0x2b, 0xa4, 0x85, 0xa2, 0x2b, 0xa5, 0x85, - 0xa2, 0x2b, 0xa5, 0x85, 0xa2, 0x2b, 0xa5, 0x85, 0xa2, 0x2b, 0xa6, 0x85, - 0xa2, 0x2b, 0xa6, 0x85, 0xa2, 0x2b, 0xa6, 0x85, 0xa2, 0x2b, 0xa7, 0x85, - 0xa2, 0x2b, 0xa7, 0x86, 0xa6, 0x2b, 0xa8, 0x86, 0xa6, 0x2b, 0xa8, 0x86, - 0xa6, 0x2b, 0xa8, 0x86, 0xa6, 0x2b, 0xa9, 0x86, 0xa6, 0x2b, 0xa9, 0x86, - 0xa6, 0x2b, 0xaa, 0x86, 0xa6, 0x2b, 0xaa, 0x86, 0xa6, 0x2b, 0xaa, 0x86, - 0xa6, 0x2b, 0xab, 0x86, 0xa6, 0x2b, 0xab, 0x87, 0xaa, 0x2b, 0xab, 0x87, - 0xa9, 0x2b, 0xac, 0x87, 0xaa, 0x2b, 0xac, 0x87, 0xa9, 0x2b, 0xac, 0x87, - 0xaa, 0x2b, 0xad, 0x87, 0xa9, 0x2b, 0xad, 0x87, 0xaa, 0x2b, 0xae, 0x87, - 0xa9, 0x2b, 0xae, 0x87, 0xaa, 0x2b, 0xae, 0x88, 0xad, 0x2b, 0xaf, 0x88, - 0xad, 0x2b, 0xaf, 0x88, 0xad, 0x2b, 0xaf, 0x88, 0xad, 0x2b, 0xb0, 0x88, - 0xad, 0x2b, 0xb0, 0x88, 0xad, 0x2b, 0xb0, 0x88, 0xad, 0x2b, 0xb1, 0x88, - 0xad, 0x2b, 0xb1, 0x88, 0xad, 0x2b, 0xb2, 0x88, 0xad, 0x2b, 0xb2, 0x89, - 0xb0, 0x2b, 0xb2, 0x88, 0xad, 0x2b, 0xb3, 0x89, 0xb0, 0x2b, 0xb3, 0x89, - 0xb0, 0x2b, 0xb3, 0x89, 0xb0, 0x2b, 0xb4, 0x89, 0xb0, 0x2b, 0xb4, 0x89, - 0xb0, 0x2b, 0xb4, 0x89, 0xb2, 0x2b, 0xb5, 0x89, 0xb0, 0x2b, 0xb5, 0x89, - 0xb2, 0x2b, 0xb5, 0x89, 0xb2, 0x2b, 0xb6, 0x89, 0xb2, 0x2b, 0xb6, 0x89, - 0xb2, 0x2b, 0xb6, 0x89, 0xb2, 0x2b, 0xb7, 0x8a, 0xb3, 0x2b, 0xb7, 0x8a, - 0xb4, 0x2b, 0xb7, 0x8a, 0xb3, 0x2b, 0xb8, 0x8a, 0xb4, 0x2b, 0xb8, 0x8b, - 0xb7, 0x2b, 0xb8, 0x8b, 0xb7, 0x2b, 0xb9, 0x8b, 0xb7, 0x2b, 0xb9, 0x8b, - 0xb7, 0x2b, 0xb9, 0x8b, 0xb7, 0x2b, 0xba, 0x8b, 0xb7, 0x2b, 0xba, 0x8b, - 0xb7, 0x2b, 0xba, 0x8b, 0xb7, 0x2b, 0xbb, 0x8b, 0xb7, 0x2b, 0xbb, 0x8b, - 0xb7, 0x2b, 0xbb, 0x8b, 0xb7, 0x2b, 0xbc, 0x8b, 0xb7, 0x2b, 0xbc, 0x8c, - 0xba, 0x2b, 0xbc, 0x8c, 0xba, 0x2b, 0xbd, 0x8c, 0xba, 0x2b, 0xbd, 0x8c, - 0xba, 0x2b, 0xbd, 0x8c, 0xba, 0x2b, 0xbe, 0x8c, 0xba, 0x2b, 0xbe, 0x8c, - 0xba, 0x2b, 0xbe, 0x8c, 0xba, 0x2b, 0xbf, 0x8c, 0xba, 0x2b, 0xbf, 0x8d, - 0xbd, 0x2b, 0xbf, 0x8c, 0xba, 0x2b, 0xc0, 0x8d, 0xbd, 0x2b, 0xc0, 0x8d, - 0xbd, 0x2b, 0xc0, 0x8d, 0xbd, 0x2b, 0xc1, 0x8d, 0xbd, 0x2b, 0xc1, 0x8d, - 0xbd, 0x2b, 0xc1, 0x8d, 0xbd, 0x2b, 0xc1, 0x8d, 0xbd, 0x2b, 0xc2, 0x8e, - 0xc0, 0x2b, 0xc2, 0x8e, 0xc0, 0x2b, 0xc2, 0x8e, 0xc0, 0x2b, 0xc3, 0x8e, - 0xc0, 0x2b, 0xc3, 0x8e, 0xc0, 0x2b, 0xc3, 0x8e, 0xc0, 0x2b, 0xc4, 0x8e, - 0xc0, 0x2b, 0xc4, 0x8e, 0xc0, 0x2b, 0xc4, 0x8e, 0xc0, 0x2b, 0xc5, 0x8e, - 0xc0, 0x2b, 0xc5, 0x8e, 0xc3, 0x2b, 0xc5, 0x8e, 0xc0, 0x2b, 0xc6, 0x8e, - 0xc3, 0x2b, 0xc6, 0x8e, 0xc3, 0x2b, 0xc6, 0x8e, 0xc3, 0x2b, 0xc6, 0x8e, - 0xc3, 0x2b, 0xc7, 0x8e, 0xc3, 0x2b, 0xc7, 0x8e, 0xc3, 0x2b, 0xc7, 0x8e, - 0xc3, 0x2b, 0xc8, 0x8e, 0xc3, 0x2b, 0xc8, 0x8e, 0xc3, 0x2b, 0xc8, 0x8f, - 0xc6, 0x2b, 0xc9, 0x8f, 0xc6, 0x2b, 0xc9, 0x8f, 0xc6, 0x2b, 0xc9, 0x8f, - 0xc6, 0x2b, 0xc9, 0x8f, 0xc6, 0x2b, 0xca, 0x8f, 0xc6, 0x2b, 0xca, 0x8f, - 0xc6, 0x2b, 0xca, 0x8f, 0xc6, 0x2b, 0xcb, 0x8f, 0xc6, 0x2b, 0xcb, 0x90, - 0xc9, 0x2b, 0xcb, 0x90, 0xc9, 0x2b, 0xcc, 0x90, 0xc9, 0x2b, 0xcc, 0x90, - 0xc9, 0x2b, 0xcc, 0x90, 0xc9, 0x2b, 0xcc, 0x90, 0xc9, 0x2b, 0xcd, 0x90, - 0xc9, 0x2b, 0xcd, 0x90, 0xc9, 0x2b, 0xcd, 0x90, 0xc9, 0x2b, 0xce, 0x90, - 0xc9, 0x2b, 0xce, 0x91, 0xcc, 0x2b, 0xce, 0x90, 0xc9, 0x2b, 0xce, 0x91, - 0xcc, 0x2b, 0xcf, 0x91, 0xcb, 0x2b, 0xcf, 0x91, 0xcc, 0x2b, 0xcf, 0x91, - 0xcb, 0x2b, 0xd0, 0x91, 0xcc, 0x2b, 0xd0, 0x91, 0xcb, 0x2b, 0xd0, 0x91, - 0xcc, 0x2b, 0xd0, 0x92, 0xce, 0x2b, 0xd1, 0x92, 0xce, 0x2b, 0xd1, 0x92, - 0xce, 0x2b, 0xd1, 0x92, 0xce, 0x2b, 0xd2, 0x92, 0xce, 0x2b, 0xd2, 0x92, - 0xce, 0x2b, 0xd2, 0x92, 0xce, 0x2b, 0xd2, 0x92, 0xce, 0x2b, 0xd3, 0x92, - 0xce, 0x2b, 0xd3, 0x92, 0xce, 0x2b, 0xd3, 0x93, 0xd1, 0x2b, 0xd4, 0x92, - 0xce, 0x2b, 0xd4, 0x93, 0xd1, 0x2b, 0xd4, 0x93, 0xd1, 0x2b, 0xd4, 0x93, - 0xd1, 0x2b, 0xd5, 0x93, 0xd1, 0x2b, 0xd5, 0x93, 0xd1, 0x2b, 0xd5, 0x93, - 0xd1, 0x2b, 0xd6, 0x93, 0xd1, 0x2b, 0xd6, 0x94, 0xd4, 0x2b, 0xd6, 0x93, - 0xd1, 0x2b, 0xd6, 0x94, 0xd4, 0x2b, 0xd7, 0x93, 0xd1, 0x2b, 0xd7, 0x94, - 0xd4, 0x2b, 0xd7, 0x94, 0xd3, 0x2b, 0xd7, 0x94, 0xd4, 0x2b, 0xd8, 0x94, - 0xd3, 0x2b, 0xd8, 0x94, 0xd4, 0x2b, 0xd8, 0x94, 0xd3, 0x2b, 0xd9, 0x94, - 0xd4, 0x2b, 0xd9, 0x95, 0xd6, 0x2b, 0xd9, 0x95, 0xd6, 0x2b, 0xd9, 0x95, - 0xd6, 0x2b, 0xda, 0x95, 0xd6, 0x2b, 0xda, 0x95, 0xd6, 0x2b, 0xda, 0x95, - 0xd6, 0x2b, 0xda, 0x95, 0xd6, 0x2b, 0xdb, 0x95, 0xd6, 0x2b, 0xdb, 0x95, - 0xd6, 0x2b, 0xdb, 0x95, 0xd6, 0x2b, 0xdb, 0x96, 0xd9, 0x2b, 0xdc, 0x95, - 0xd6, 0x2b, 0xdc, 0x96, 0xd9, 0x2b, 0xdc, 0x96, 0xd9, 0x2b, 0xdd, 0x96, - 0xd9, 0x2b, 0xdd, 0x96, 0xd9, 0x2b, 0xdd, 0x96, 0xd9, 0x2b, 0xdd, 0x96, - 0xd9, 0x2b, 0xde, 0x96, 0xd9, 0x2b, 0xde, 0x97, 0xdb, 0x2b, 0xde, 0x96, - 0xd9, 0x2b, 0xde, 0x97, 0xdb, 0x2b, 0xdf, 0x97, 0xdb, 0x2b, 0xdf, 0x97, - 0xdb, 0x2b, 0xdf, 0x97, 0xdb, 0x2b, 0xdf, 0x97, 0xdb, 0x2b, 0xe0, 0x97, - 0xdb, 0x2b, 0xe0, 0x97, 0xdb, 0x2b, 0xe0, 0x98, 0xde, 0x2b, 0xe1, 0x98, - 0xde, 0x2b, 0xe1, 0x98, 0xde, 0x2b, 0xe1, 0x98, 0xde, 0x2b, 0xe1, 0x98, - 0xde, 0x2b, 0xe2, 0x98, 0xde, 0x2b, 0xe2, 0x98, 0xde, 0x2b, 0xe2, 0x98, - 0xde, 0x2b, 0xe2, 0x98, 0xde, 0x2b, 0xe3, 0x98, 0xde, 0x2b, 0xe3, 0x98, - 0xde, 0x2b, 0xe3, 0x98, 0xde, 0x2b, 0xe3, 0x98, 0xe0, 0x2b, 0xe4, 0x98, - 0xde, 0x2b, 0xe4, 0x98, 0xe0, 0x2b, 0xe4, 0x98, 0xe0, 0x2b, 0xe4, 0x98, - 0xe0, 0x2b, 0xe5, 0x98, 0xe0, 0x2b, 0xe5, 0x98, 0xe0, 0x2b, 0xe5, 0x98, - 0xe0, 0x2b, 0xe5, 0x98, 0xe0, 0x2b, 0xe6, 0x99, 0xe3, 0x2b, 0xe6, 0x98, - 0xe0, 0x2b, 0xe6, 0x99, 0xe3, 0x2b, 0xe6, 0x99, 0xe2, 0x2b, 0xe7, 0x99, - 0xe3, 0x2b, 0xe7, 0x99, 0xe2, 0x2b, 0xe7, 0x99, 0xe3, 0x2b, 0xe7, 0x99, - 0xe2, 0x2b, 0xe8, 0x99, 0xe3, 0x2b, 0xe8, 0x9a, 0xe5, 0x2b, 0xe8, 0x9a, - 0xe5, 0x2b, 0xe8, 0x9a, 0xe5, 0x2b, 0xe9, 0x9a, 0xe5, 0x2b, 0xe9, 0x9a, - 0xe5, 0x2b, 0xe9, 0x9a, 0xe5, 0x2b, 0xe9, 0x9a, 0xe5, 0x2b, 0xea, 0x9a, - 0xe5, 0x2b, 0xea, 0x9a, 0xe5, 0x2b, 0xea, 0x9a, 0xe5, 0x2b, 0xea, 0x9b, - 0xe7, 0x2b, 0xeb, 0x9a, 0xe5, 0x2b, 0xeb, 0x9b, 0xe7, 0x2b, 0xeb, 0x9a, - 0xe5, 0x2b, 0xeb, 0x9b, 0xe7, 0x2b, 0xec, 0x9b, 0xe7, 0x2b, 0xec, 0x9b, - 0xe7, 0x2b, 0xec, 0x9b, 0xe7, 0x2b, 0xec, 0x9b, 0xe7, 0x2b, 0xec, 0x9c, - 0xea, 0x2b, 0xed, 0x9c, 0xea, 0x2b, 0xed, 0x9c, 0xea, 0x2b, 0xed, 0x9c, - 0xea, 0x2b, 0xed, 0x9c, 0xea, 0x2b, 0xee, 0x9c, 0xea, 0x2b, 0xee, 0x9c, - 0xea, 0x2b, 0xee, 0x9c, 0xea, 0x2b, 0xee, 0x9c, 0xea, 0x2b, 0xef, 0x9c, - 0xea, 0x2b, 0xef, 0x9d, 0xec, 0x2b, 0xef, 0x9c, 0xea, 0x2b, 0xef, 0x9d, - 0xec, 0x2b, 0xf0, 0x9c, 0xea, 0x2b, 0xf0, 0x9d, 0xec, 0x2b, 0xf0, 0x9d, - 0xec, 0x2b, 0xf0, 0x9d, 0xec, 0x2b, 0xf1, 0x9d, 0xec, 0x2b, 0xf1, 0x9d, - 0xec, 0x2b, 0xf1, 0x9d, 0xec, 0x2b, 0xf1, 0x9d, 0xec, 0x2b, 0xf2, 0x9d, - 0xee, 0x2b, 0xf2, 0x9d, 0xec, 0x2b, 0xf2, 0x9d, 0xee, 0x2b, 0xf2, 0x9d, - 0xee, 0x2b, 0xf2, 0x9d, 0xee, 0x2b, 0xf3, 0x9d, 0xee, 0x2b, 0xf3, 0x9d, - 0xee, 0x2b, 0xf3, 0x9d, 0xee, 0x2b, 0xf3, 0x9d, 0xee, 0x2b, 0xf4, 0x9e, - 0xf0, 0x2b, 0xf4, 0x9e, 0xf1, 0x2b, 0xf4, 0x9e, 0xf0, 0x2b, 0xf4, 0x9e, - 0xf1, 0x2b, 0xf5, 0x9e, 0xf0, 0x2b, 0xf5, 0x9e, 0xf1, 0x2b, 0xf5, 0x9e, - 0xf0, 0x2b, 0xf5, 0x9e, 0xf1, 0x2b, 0xf5, 0x9e, 0xf0, 0x2b, 0xf6, 0x9e, - 0xf1, 0x2b, 0xf6, 0x9f, 0xf3, 0x2b, 0xf6, 0x9e, 0xf1, 0x2b, 0xf6, 0x9f, - 0xf3, 0x2b, 0xf7, 0x9e, 0xf1, 0x2b, 0xf7, 0x9f, 0xf3, 0x2b, 0xf7, 0x9f, - 0xf2, 0x2b, 0xf7, 0x9f, 0xf3, 0x2b, 0xf8, 0x9f, 0xf2, 0x2b, 0xf8, 0x9f, - 0xf3, 0x2b, 0xf8, 0xa0, 0xf5, 0x2b, 0xf8, 0x9f, 0xf3, 0x2b, 0xf8, 0xa0, - 0xf5, 0x2b, 0xf9, 0x9f, 0xf3, 0x2b, 0xf9, 0xa0, 0xf5, 0x2b, 0xf9, 0xa0, - 0xf5, 0x2b, 0xf9, 0xa0, 0xf5, 0x2b, 0xfa, 0xa0, 0xf5, 0x2b, 0xfa, 0xa0, - 0xf5, 0x2b, 0xfa, 0xa0, 0xf5, 0x2b, 0xfa, 0xa0, 0xf5, 0x2b, 0xfa, 0xa1, - 0xf7, 0x2b, 0xfb, 0xa1, 0xf7, 0x2b, 0xfb, 0xa1, 0xf7, 0x2b, 0xfb, 0xa1, - 0xf7, 0x2b, 0xfb, 0xa1, 0xf7, 0x2b, 0xfc, 0xa1, 0xf7, 0x2b, 0xfc, 0xa1, - 0xf7, 0x2b, 0xfc, 0xa1, 0xf7, 0x2b, 0xfc, 0xa1, 0xf7, 0x2b, 0xfc, 0xa1, - 0xf7, 0x2b, 0xfd, 0xa1, 0xf9, 0x2b, 0xfd, 0xa1, 0xf7, 0x2b, 0xfd, 0xa1, - 0xf9, 0x2b, 0xfd, 0xa1, 0xf7, 0x2b, 0xfe, 0xa1, 0xf9, 0x2b, 0xfe, 0xa1, - 0xf9, 0x2b, 0xfe, 0xa1, 0xf9, 0x2b, 0xfe, 0xa1, 0xf9, 0x2b, 0xfe, 0xa1, - 0xf9, 0x2b, 0xff, 0xa2, 0xfb, 0x2b, 0xff, 0xa1, 0xf9, 0x2b, 0x03, 0x83, - 0x9b, 0x2b, 0x0a, 0x83, 0x9b, 0x2b, 0x0f, 0x83, 0x9b, 0x2b, 0x14, 0x83, - 0x9b, 0x2b, 0x17, 0x83, 0x9b, 0x2b, 0x1b, 0x83, 0x9b, 0x2b, 0x1e, 0x83, - 0x9b, 0x2b, 0x20, 0x86, 0x9b, 0x2b, 0x23, 0x83, 0x9b, 0x2b, 0x25, 0x86, - 0x9b, 0x2b, 0x27, 0x83, 0x9b, 0x2b, 0x29, 0x86, 0x9b, 0x2b, 0x2b, 0x83, - 0x9b, 0x2b, 0x2d, 0x86, 0x9b, 0x2b, 0x2f, 0x83, 0x9b, 0x2b, 0x31, 0x86, - 0x9b, 0x2b, 0x32, 0x83, 0x9b, 0x2b, 0x34, 0x86, 0x9b, 0x2b, 0x35, 0x83, - 0x9b, 0x2b, 0x37, 0x86, 0x9b, 0x2b, 0x38, 0x83, 0x9b, 0x2b, 0x3a, 0x86, - 0x9b, 0x2b, 0x3b, 0x83, 0x9b, 0x2b, 0x3c, 0x86, 0x9b, 0x2b, 0x3e, 0x83, - 0x9b, 0x2b, 0x3f, 0x86, 0x9b, 0x2b, 0x40, 0x83, 0x9b, 0x2b, 0x42, 0x86, - 0x9b, 0x2b, 0x43, 0x83, 0x9b, 0x2b, 0x44, 0x86, 0x9b, 0x2b, 0x45, 0x83, - 0x9b, 0x2b, 0x46, 0x86, 0x9b, 0x2b, 0x47, 0x83, 0x9b, 0x2b, 0x48, 0x86, - 0x9b, 0x2b, 0x49, 0x83, 0x9b, 0x2b, 0x4a, 0x86, 0x9b, 0x2b, 0x4b, 0x83, - 0x9b, 0x2b, 0x4c, 0x86, 0x9b, 0x2b, 0x4d, 0x83, 0x9b, 0x2b, 0x4e, 0x86, - 0x9b, 0x2b, 0x4f, 0x83, 0x9b, 0x2b, 0x50, 0x86, 0x9b, 0x2b, 0x51, 0x83, - 0x9b, 0x2b, 0x52, 0x86, 0x9b, 0x2b, 0x53, 0x83, 0x9b, 0x2b, 0x54, 0x86, - 0x9b, 0x2b, 0x55, 0x83, 0x9b, 0x2b, 0x56, 0x86, 0x9b, 0x2b, 0x57, 0x83, - 0x9b, 0x2b, 0x58, 0x86, 0x9b, 0x2b, 0x58, 0x83, 0x9b, 0x2b, 0x59, 0x86, - 0x9b, 0x2b, 0x5a, 0x83, 0x9b, 0x2b, 0x5b, 0x86, 0x9b, 0x2b, 0x5c, 0x83, - 0x9b, 0x2b, 0x5d, 0x86, 0x9b, 0x2b, 0x5d, 0x83, 0x9b, 0x2b, 0x5e, 0x86, - 0x9b, 0x2b, 0x5f, 0x83, 0x9b, 0x2b, 0x60, 0x86, 0x9b, 0x2b, 0x60, 0x83, - 0x9b, 0x2b, 0x61, 0x86, 0x9b, 0x2b, 0x62, 0x83, 0x9b, 0x2b, 0x63, 0x86, - 0x9b, 0x2b, 0x63, 0x83, 0x9b, 0x2b, 0x64, 0x86, 0x9b, 0x2b, 0x65, 0x83, - 0x9b, 0x2b, 0x66, 0x86, 0x9b, 0x2b, 0x66, 0x83, 0x9b, 0x2b, 0x67, 0x83, - 0x9c, 0x2b, 0x68, 0x83, 0x9b, 0x2b, 0x68, 0x83, 0x9c, 0x2b, 0x69, 0x83, - 0x9b, 0x2b, 0x6a, 0x83, 0x9c, 0x2b, 0x6a, 0x83, 0x9b, 0x2b, 0x6b, 0x83, - 0x9c, 0x2b, 0x6c, 0x83, 0x9b, 0x2b, 0x6c, 0x83, 0x9c, 0x2b, 0x6d, 0x83, - 0x9b, 0x2b, 0x6e, 0x83, 0x9c, 0x2b, 0x6e, 0x83, 0x9b, 0x2b, 0x6f, 0x83, - 0x9c, 0x2b, 0x70, 0x83, 0x9b, 0x2b, 0x70, 0x83, 0x9c, 0x2b, 0x71, 0x83, - 0x9b, 0x2b, 0x72, 0x83, 0x9c, 0x2b, 0x72, 0x83, 0x9b, 0x2b, 0x73, 0x83, - 0x9c, 0x2b, 0x73, 0x83, 0x9b, 0x2b, 0x74, 0x83, 0x9c, 0x2b, 0x75, 0x83, - 0x9b, 0x2b, 0x75, 0x83, 0x9c, 0x2b, 0x76, 0x83, 0x9b, 0x2b, 0x76, 0x83, - 0x9c, 0x2b, 0x77, 0x83, 0x9b, 0x2b, 0x78, 0x83, 0x9c, 0x2b, 0x78, 0x83, - 0x9b, 0x2b, 0x79, 0x83, 0x9c, 0x2b, 0x79, 0x83, 0x9b, 0x2b, 0x7a, 0x83, - 0x9c, 0x2b, 0x7a, 0x83, 0x9b, 0x2b, 0x7b, 0x83, 0x9c, 0x2b, 0x7c, 0x83, - 0x9b, 0x2b, 0x7c, 0x83, 0x9c, 0x2b, 0x7d, 0x83, 0x9b, 0x2b, 0x7d, 0x83, - 0x9c, 0x2b, 0x7e, 0x83, 0x9b, 0x2b, 0x7e, 0x83, 0x9c, 0x2b, 0x7f, 0x83, - 0x9b, 0x2b, 0x7f, 0x83, 0x9c, 0x2b, 0x80, 0x83, 0x9b, 0x2b, 0x81, 0x83, - 0x9c, 0x2b, 0x81, 0x83, 0x9b, 0x2b, 0x82, 0x83, 0x9c, 0x2b, 0x82, 0x83, - 0x9b, 0x2b, 0x83, 0x83, 0x9c, 0x2b, 0x83, 0x83, 0x9b, 0x2b, 0x84, 0x83, - 0x9c, 0x2b, 0x84, 0x83, 0x9b, 0x2b, 0x85, 0x83, 0x9c, 0x2b, 0x85, 0x83, - 0x9b, 0x2b, 0x86, 0x83, 0x9c, 0x2b, 0x86, 0x83, 0x9b, 0x2b, 0x87, 0x83, - 0x9c, 0x2b, 0x87, 0x83, 0x9b, 0x2b, 0x88, 0x83, 0x9c, 0x2b, 0x88, 0x83, - 0x9b, 0x2b, 0x89, 0x83, 0x9c, 0x2b, 0x89, 0x83, 0x9b, 0x2b, 0x8a, 0x83, - 0x9c, 0x2b, 0x8a, 0x83, 0x9b, 0x2b, 0x8b, 0x83, 0x9c, 0x2b, 0x8b, 0x83, - 0x9b, 0x2b, 0x8c, 0x83, 0x9c, 0x2b, 0x8c, 0x83, 0x9b, 0x2b, 0x8d, 0x83, - 0x9c, 0x2b, 0x8d, 0x83, 0x9b, 0x2b, 0x8e, 0x83, 0x9c, 0x2b, 0x8e, 0x83, - 0x9b, 0x2b, 0x8e, 0x83, 0x9c, 0x2b, 0x8f, 0x83, 0x9b, 0x2b, 0x8f, 0x83, - 0x9c, 0x2b, 0x90, 0x83, 0x9b, 0x2b, 0x90, 0x83, 0x9c, 0x2b, 0x91, 0x83, - 0x9b, 0x2b, 0x91, 0x83, 0x9c, 0x2b, 0x92, 0x83, 0x9b, 0x2b, 0x92, 0x83, - 0x9c, 0x2b, 0x93, 0x83, 0x9b, 0x2b, 0x93, 0x83, 0x9c, 0x2b, 0x94, 0x83, - 0x9b, 0x2b, 0x94, 0x83, 0x9c, 0x2b, 0x94, 0x83, 0x9b, 0x2b, 0x95, 0x83, - 0x9c, 0x2b, 0x95, 0x83, 0x9b, 0x2b, 0x96, 0x83, 0x9c, 0x2b, 0x96, 0x83, - 0x9b, 0x2b, 0x97, 0x83, 0x9c, 0x2b, 0x97, 0x83, 0x9b, 0x2b, 0x98, 0x83, - 0x9c, 0x2b, 0x98, 0x83, 0x9b, 0x2b, 0x98, 0x83, 0x9c, 0x2b, 0x99, 0x83, - 0x9b, 0x2b, 0x99, 0x83, 0x9c, 0x2b, 0x9a, 0x83, 0x9b, 0x2b, 0x9a, 0x83, - 0x9c, 0x2b, 0x9a, 0x83, 0x9b, 0x2b, 0x9b, 0x83, 0x9c, 0x2b, 0x9b, 0x83, - 0x9b, 0x2b, 0x9c, 0x83, 0x9c, 0x2b, 0x9c, 0x83, 0x9c, 0x2b, 0x9d, 0x83, - 0x9d, 0x2b, 0x9d, 0x83, 0x9c, 0x2b, 0x9d, 0x83, 0x9d, 0x2b, 0x9e, 0x83, - 0x9c, 0x2b, 0x9e, 0x83, 0x9d, 0x2b, 0x9f, 0x83, 0x9c, 0x2b, 0x9f, 0x83, - 0x9d, 0x2b, 0x9f, 0x83, 0x9c, 0x2b, 0xa0, 0x83, 0x9d, 0x2b, 0xa0, 0x83, - 0x9c, 0x2b, 0xa1, 0x83, 0x9d, 0x2b, 0xa1, 0x84, 0xa0, 0x2b, 0xa1, 0x84, - 0xa1, 0x2b, 0xa2, 0x84, 0xa0, 0x2b, 0xa2, 0x84, 0xa1, 0x2b, 0xa3, 0x84, - 0xa0, 0x2b, 0xa3, 0x84, 0xa1, 0x2b, 0xa3, 0x84, 0xa0, 0x2b, 0xa4, 0x84, - 0xa1, 0x2b, 0xa4, 0x84, 0xa0, 0x2b, 0xa5, 0x84, 0xa1, 0x2b, 0xa5, 0x85, - 0xa4, 0x2b, 0xa5, 0x84, 0xa1, 0x2b, 0xa6, 0x85, 0xa4, 0x2b, 0xa6, 0x85, - 0xa4, 0x2b, 0xa6, 0x85, 0xa4, 0x2b, 0xa7, 0x85, 0xa4, 0x2b, 0xa7, 0x85, - 0xa4, 0x2b, 0xa8, 0x85, 0xa4, 0x2b, 0xa8, 0x85, 0xa4, 0x2b, 0xa8, 0x85, - 0xa4, 0x2b, 0xa9, 0x85, 0xa4, 0x2b, 0xa9, 0x86, 0xa8, 0x2b, 0xaa, 0x86, - 0xa7, 0x2b, 0xaa, 0x86, 0xa8, 0x2b, 0xaa, 0x86, 0xa7, 0x2b, 0xab, 0x86, - 0xa8, 0x2b, 0xab, 0x86, 0xa7, 0x2b, 0xab, 0x86, 0xa8, 0x2b, 0xac, 0x86, - 0xa7, 0x2b, 0xac, 0x86, 0xa8, 0x2b, 0xac, 0x87, 0xab, 0x2b, 0xad, 0x87, - 0xab, 0x2b, 0xad, 0x87, 0xab, 0x2b, 0xae, 0x87, 0xab, 0x2b, 0xae, 0x87, - 0xab, 0x2b, 0xae, 0x87, 0xab, 0x2b, 0xaf, 0x87, 0xab, 0x2b, 0xaf, 0x87, - 0xab, 0x2b, 0xaf, 0x87, 0xab, 0x2b, 0xb0, 0x87, 0xab, 0x2b, 0xb0, 0x88, - 0xaf, 0x2b, 0xb0, 0x88, 0xae, 0x2b, 0xb1, 0x88, 0xaf, 0x2b, 0xb1, 0x88, - 0xae, 0x2b, 0xb2, 0x88, 0xaf, 0x2b, 0xb2, 0x88, 0xae, 0x2b, 0xb2, 0x88, - 0xaf, 0x2b, 0xb3, 0x88, 0xae, 0x2b, 0xb3, 0x88, 0xaf, 0x2b, 0xb3, 0x89, - 0xb2, 0x2b, 0xb4, 0x89, 0xb2, 0x2b, 0xb4, 0x89, 0xb2, 0x2b, 0xb4, 0x89, - 0xb2, 0x2b, 0xb5, 0x89, 0xb2, 0x2b, 0xb5, 0x89, 0xb2, 0x2b, 0xb5, 0x89, - 0xb2, 0x2b, 0xb6, 0x89, 0xb2, 0x2b, 0xb6, 0x89, 0xb2, 0x2b, 0xb6, 0x89, - 0xb2, 0x2b, 0xb7, 0x8a, 0xb5, 0x2b, 0xb7, 0x89, 0xb2, 0x2b, 0xb7, 0x8a, - 0xb5, 0x2b, 0xb8, 0x8a, 0xb5, 0x2b, 0xb8, 0x8a, 0xb5, 0x2b, 0xb8, 0x8a, - 0xb5, 0x2b, 0xb9, 0x8a, 0xb5, 0x2b, 0xb9, 0x8a, 0xb5, 0x2b, 0xb9, 0x8a, - 0xb5, 0x2b, 0xba, 0x8b, 0xb8, 0x2b, 0xba, 0x8a, 0xb5, 0x2b, 0xba, 0x8b, - 0xb8, 0x2b, 0xbb, 0x8b, 0xb8, 0x2b, 0xbb, 0x8b, 0xb8, 0x2b, 0xbb, 0x8b, - 0xb8, 0x2b, 0xbc, 0x8b, 0xb8, 0x2b, 0xbc, 0x8b, 0xb8, 0x2b, 0xbc, 0x8b, - 0xb8, 0x2b, 0xbd, 0x8b, 0xb8, 0x2b, 0xbd, 0x8b, 0xb8, 0x2b, 0xbd, 0x8c, - 0xbb, 0x2b, 0xbe, 0x8c, 0xbc, 0x2b, 0xbe, 0x8c, 0xbb, 0x2b, 0xbe, 0x8c, - 0xbc, 0x2b, 0xbf, 0x8c, 0xbb, 0x2b, 0xbf, 0x8c, 0xbc, 0x2b, 0xbf, 0x8c, - 0xbb, 0x2b, 0xc0, 0x8c, 0xbc, 0x2b, 0xc0, 0x8c, 0xbb, 0x2b, 0xc0, 0x8c, - 0xbc, 0x2b, 0xc1, 0x8d, 0xbf, 0x2b, 0xc1, 0x8c, 0xbc, 0x2b, 0xc1, 0x8d, - 0xbf, 0x2b, 0xc1, 0x8d, 0xbe, 0x2b, 0xc2, 0x8d, 0xbf, 0x2b, 0xc2, 0x8d, - 0xbe, 0x2b, 0xc2, 0x8d, 0xbf, 0x2b, 0xc3, 0x8d, 0xbe, 0x2b, 0xc3, 0x8d, - 0xbf, 0x2b, 0xc3, 0x8e, 0xc1, 0x2b, 0xc4, 0x8d, 0xbf, 0x2b, 0xc4, 0x8e, - 0xc1, 0x2b, 0xc4, 0x8e, 0xc1, 0x2b, 0xc5, 0x8e, 0xc1, 0x2b, 0xc5, 0x8e, - 0xc1, 0x2b, 0xc5, 0x8e, 0xc1, 0x2b, 0xc6, 0x8e, 0xc1, 0x2b, 0xc6, 0x8e, - 0xc1, 0x2b, 0xc6, 0x8f, 0xc4, 0x2b, 0xc6, 0x8f, 0xc5, 0x2b, 0xc7, 0x8f, - 0xc4, 0x2b, 0xc7, 0x8f, 0xc5, 0x2b, 0xc7, 0x8f, 0xc4, 0x2b, 0xc8, 0x8f, - 0xc5, 0x2b, 0xc8, 0x8f, 0xc4, 0x2b, 0xc8, 0x8f, 0xc5, 0x2b, 0xc9, 0x8f, - 0xc4, 0x2b, 0xc9, 0x8f, 0xc5, 0x2b, 0xc9, 0x8f, 0xc4, 0x2b, 0xc9, 0x8f, - 0xc5, 0x2b, 0xca, 0x90, 0xc7, 0x2b, 0xca, 0x90, 0xc7, 0x2b, 0xca, 0x90, - 0xc7, 0x2b, 0xcb, 0x90, 0xc7, 0x2b, 0xcb, 0x90, 0xc7, 0x2b, 0xcb, 0x90, - 0xc7, 0x2b, 0xcc, 0x90, 0xc7, 0x2b, 0xcc, 0x90, 0xc7, 0x2b, 0xcc, 0x90, - 0xc7, 0x2b, 0xcc, 0x91, 0xca, 0x2b, 0xcd, 0x90, 0xc7, 0x2b, 0xcd, 0x91, - 0xca, 0x2b, 0xcd, 0x91, 0xca, 0x2b, 0xce, 0x91, 0xca, 0x2b, 0xce, 0x91, - 0xca, 0x2b, 0xce, 0x91, 0xca, 0x2b, 0xce, 0x91, 0xca, 0x2b, 0xcf, 0x91, - 0xca, 0x2b, 0xcf, 0x92, 0xcd, 0x2b, 0xcf, 0x92, 0xcd, 0x2b, 0xd0, 0x92, - 0xcd, 0x2b, 0xd0, 0x92, 0xcd, 0x2b, 0xd0, 0x92, 0xcd, 0x2b, 0xd0, 0x92, - 0xcd, 0x2b, 0xd1, 0x92, 0xcd, 0x2b, 0xd1, 0x92, 0xcd, 0x2b, 0xd1, 0x92, - 0xcd, 0x2b, 0xd2, 0x92, 0xcd, 0x2b, 0xd2, 0x93, 0xd0, 0x2b, 0xd2, 0x92, - 0xcd, 0x2b, 0xd2, 0x93, 0xd0, 0x2b, 0xd3, 0x93, 0xcf, 0x2b, 0xd3, 0x93, - 0xd0, 0x2b, 0xd3, 0x93, 0xcf, 0x2b, 0xd4, 0x93, 0xd0, 0x2b, 0xd4, 0x93, - 0xcf, 0x2b, 0xd4, 0x93, 0xd0, 0x2b, 0xd4, 0x94, 0xd2, 0x2b, 0xd5, 0x94, - 0xd2, 0x2b, 0xd5, 0x94, 0xd2, 0x2b, 0xd5, 0x94, 0xd2, 0x2b, 0xd6, 0x94, - 0xd2, 0x2b, 0xd6, 0x94, 0xd2, 0x2b, 0xd6, 0x94, 0xd2, 0x2b, 0xd6, 0x94, - 0xd2, 0x2b, 0xd7, 0x94, 0xd2, 0x2b, 0xd7, 0x94, 0xd2, 0x2b, 0xd7, 0x94, - 0xd5, 0x2b, 0xd7, 0x94, 0xd2, 0x2b, 0xd8, 0x94, 0xd5, 0x2b, 0xd8, 0x94, - 0xd2, 0x2b, 0xd8, 0x94, 0xd5, 0x2b, 0xd9, 0x94, 0xd5, 0x2b, 0xd9, 0x94, - 0xd5, 0x2b, 0xd9, 0x94, 0xd5, 0x2b, 0xd9, 0x94, 0xd5, 0x2b, 0xda, 0x94, - 0xd5, 0x2b, 0xda, 0x94, 0xd5, 0x2b, 0xda, 0x95, 0xd7, 0x2b, 0xda, 0x94, - 0xd5, 0x2b, 0xdb, 0x95, 0xd7, 0x2b, 0xdb, 0x95, 0xd7, 0x2b, 0xdb, 0x95, - 0xd7, 0x2b, 0xdb, 0x95, 0xd7, 0x2b, 0xdc, 0x95, 0xd7, 0x2b, 0xdc, 0x95, - 0xd7, 0x2b, 0xdc, 0x95, 0xd7, 0x2b, 0xdd, 0x96, 0xda, 0x2b, 0xdd, 0x96, - 0xda, 0x2b, 0xdd, 0x96, 0xda, 0x2b, 0xdd, 0x96, 0xda, 0x2b, 0xde, 0x96, - 0xda, 0x2b, 0xde, 0x96, 0xda, 0x2b, 0xde, 0x96, 0xda, 0x2b, 0xde, 0x96, - 0xda, 0x2b, 0xdf, 0x96, 0xda, 0x2b, 0xdf, 0x96, 0xda, 0x2b, 0xdf, 0x97, - 0xdd, 0x2b, 0xdf, 0x96, 0xda, 0x2b, 0xe0, 0x97, 0xdd, 0x2b, 0xe0, 0x97, - 0xdc, 0x2b, 0xe0, 0x97, 0xdd, 0x2b, 0xe1, 0x97, 0xdc, 0x2b, 0xe1, 0x97, - 0xdd, 0x2b, 0xe1, 0x97, 0xdc, 0x2b, 0xe1, 0x97, 0xdd, 0x2b, 0xe2, 0x98, - 0xdf, 0x2b, 0xe2, 0x97, 0xdd, 0x2b, 0xe2, 0x98, 0xdf, 0x2b, 0xe2, 0x97, - 0xdd, 0x2b, 0xe3, 0x98, 0xdf, 0x2b, 0xe3, 0x98, 0xdf, 0x2b, 0xe3, 0x98, - 0xdf, 0x2b, 0xe3, 0x98, 0xdf, 0x2b, 0xe4, 0x98, 0xdf, 0x2b, 0xe4, 0x98, - 0xdf, 0x2b, 0xe4, 0x98, 0xdf, 0x2b, 0xe4, 0x99, 0xe1, 0x2b, 0xe5, 0x99, - 0xe2, 0x2b, 0xe5, 0x99, 0xe1, 0x2b, 0xe5, 0x99, 0xe2, 0x2b, 0xe5, 0x99, - 0xe1, 0x2b, 0xe6, 0x99, 0xe2, 0x2b, 0xe6, 0x99, 0xe1, 0x2b, 0xe6, 0x99, - 0xe2, 0x2b, 0xe6, 0x99, 0xe1, 0x2b, 0xe7, 0x99, 0xe2, 0x2b, 0xe7, 0x9a, - 0xe4, 0x2b, 0xe7, 0x99, 0xe2, 0x2b, 0xe7, 0x9a, 0xe4, 0x2b, 0xe8, 0x9a, - 0xe4, 0x2b, 0xe8, 0x9a, 0xe4, 0x2b, 0xe8, 0x9a, 0xe4, 0x2b, 0xe8, 0x9a, - 0xe4, 0x2b, 0xe9, 0x9a, 0xe4, 0x2b, 0xe9, 0x9a, 0xe4, 0x2b, 0xe9, 0x9a, - 0xe6, 0x2b, 0xe9, 0x9a, 0xe4, 0x2b, 0xea, 0x9a, 0xe6, 0x2b, 0xea, 0x9a, - 0xe6, 0x2b, 0xea, 0x9a, 0xe6, 0x2b, 0xea, 0x9a, 0xe6, 0x2b, 0xeb, 0x9a, - 0xe6, 0x2b, 0xeb, 0x9a, 0xe6, 0x2b, 0xeb, 0x9a, 0xe6, 0x2b, 0xeb, 0x9b, - 0xe8, 0x2b, 0xec, 0x9b, 0xe9, 0x2b, 0xec, 0x9b, 0xe8, 0x2b, 0xec, 0x9b, - 0xe9, 0x2b, 0xec, 0x9b, 0xe8, 0x2b, 0xec, 0x9b, 0xe9, 0x2b, 0xed, 0x9b, - 0xe8, 0x2b, 0xed, 0x9b, 0xe9, 0x2b, 0xed, 0x9b, 0xe8, 0x2b, 0xed, 0x9b, - 0xe9, 0x2b, 0xee, 0x9c, 0xeb, 0x2b, 0xee, 0x9b, 0xe9, 0x2b, 0xee, 0x9c, - 0xeb, 0x2b, 0xee, 0x9b, 0xe9, 0x2b, 0xef, 0x9c, 0xeb, 0x2b, 0xef, 0x9c, - 0xeb, 0x2b, 0xef, 0x9c, 0xeb, 0x2b, 0xef, 0x9c, 0xeb, 0x2b, 0xf0, 0x9c, - 0xeb, 0x2b, 0xf0, 0x9d, 0xed, 0x2b, 0xf0, 0x9d, 0xed, 0x2b, 0xf0, 0x9d, - 0xed, 0x2b, 0xf1, 0x9d, 0xed, 0x2b, 0xf1, 0x9d, 0xed, 0x2b, 0xf1, 0x9d, - 0xed, 0x2b, 0xf1, 0x9d, 0xed, 0x2b, 0xf2, 0x9d, 0xed, 0x2b, 0xf2, 0x9d, - 0xed, 0x2b, 0xf2, 0x9d, 0xed, 0x2b, 0xf2, 0x9d, 0xed, 0x2b, 0xf2, 0x9d, - 0xed, 0x2b, 0xf3, 0x9e, 0xef, 0x2b, 0xf3, 0x9d, 0xed, 0x2b, 0xf3, 0x9e, - 0xef, 0x2b, 0xf3, 0x9e, 0xef, 0x2b, 0xf4, 0x9e, 0xef, 0x2b, 0xf4, 0x9e, - 0xef, 0x2b, 0xf4, 0x9e, 0xef, 0x2b, 0xf4, 0x9e, 0xef, 0x2b, 0xf5, 0x9e, - 0xef, 0x2b, 0xf5, 0x9f, 0xf2, 0x2b, 0xf5, 0x9e, 0xef, 0x2b, 0xf5, 0x9f, - 0xf2, 0x2b, 0xf5, 0x9e, 0xef, 0x2b, 0xf6, 0x9f, 0xf2, 0x2b, 0xf6, 0x9f, - 0xf1, 0x2b, 0xf6, 0x9f, 0xf2, 0x2b, 0xf6, 0x9f, 0xf1, 0x2b, 0xf7, 0x9f, - 0xf2, 0x2b, 0xf7, 0x9f, 0xf4, 0x2b, 0xf7, 0x9f, 0xf4, 0x2b, 0xf7, 0x9f, - 0xf4, 0x2b, 0xf8, 0x9f, 0xf4, 0x2b, 0xf8, 0x9f, 0xf4, 0x2b, 0xf8, 0x9f, - 0xf4, 0x2b, 0xf8, 0x9f, 0xf4, 0x2b, 0xf8, 0x9f, 0xf4, 0x2b, 0xf9, 0x9f, - 0xf4, 0x2b, 0xf9, 0x9f, 0xf4, 0x2b, 0xf9, 0xa0, 0xf6, 0x2b, 0xf9, 0x9f, - 0xf4, 0x2b, 0xfa, 0xa0, 0xf6, 0x2b, 0xfa, 0x9f, 0xf4, 0x2b, 0xfa, 0xa0, - 0xf6, 0x2b, 0xfa, 0xa0, 0xf6, 0x2b, 0xfa, 0xa0, 0xf6, 0x2b, 0xfb, 0xa0, - 0xf6, 0x2b, 0xfb, 0xa0, 0xf6, 0x2b, 0xfb, 0xa0, 0xf6, 0x2b, 0xfb, 0xa0, - 0xf6, 0x2b, 0xfc, 0xa1, 0xf8, 0x2b, 0xfc, 0xa0, 0xf6, 0x2b, 0xfc, 0xa1, - 0xf8, 0x2b, 0xfc, 0xa1, 0xf8, 0x2b, 0xfc, 0xa1, 0xf8, 0x2b, 0xfd, 0xa1, - 0xf8, 0x2b, 0xfd, 0xa1, 0xf8, 0x2b, 0xfd, 0xa1, 0xf8, 0x2b, 0xfd, 0xa1, - 0xf8, 0x2b, 0xfe, 0xa2, 0xfa, 0x2b, 0xfe, 0xa2, 0xfa, 0x2b, 0xfe, 0xa2, - 0xfa, 0x2b, 0xfe, 0xa2, 0xfa, 0x2b, 0xfe, 0xa2, 0xfa, 0x2b, 0xff, 0xa2, - 0xfa, 0x2b, 0xff, 0xa2, 0xfa, 0x2b, 0x03, 0x84, 0x9b, 0x2c, 0x0a, 0x86, - 0x9b, 0x2c, 0x0f, 0x84, 0x9b, 0x2c, 0x14, 0x86, 0x9b, 0x2c, 0x17, 0x84, - 0x9b, 0x2c, 0x1b, 0x86, 0x9b, 0x2c, 0x1e, 0x84, 0x9b, 0x2c, 0x20, 0x86, - 0x9b, 0x2c, 0x23, 0x84, 0x9b, 0x2c, 0x25, 0x86, 0x9b, 0x2c, 0x27, 0x84, - 0x9b, 0x2c, 0x29, 0x86, 0x9b, 0x2c, 0x2b, 0x84, 0x9b, 0x2c, 0x2d, 0x86, - 0x9b, 0x2c, 0x2f, 0x84, 0x9b, 0x2c, 0x31, 0x86, 0x9b, 0x2c, 0x32, 0x84, - 0x9b, 0x2c, 0x34, 0x86, 0x9b, 0x2c, 0x35, 0x84, 0x9b, 0x2c, 0x37, 0x86, - 0x9b, 0x2c, 0x38, 0x84, 0x9b, 0x2c, 0x3a, 0x86, 0x9b, 0x2c, 0x3b, 0x84, - 0x9b, 0x2c, 0x3c, 0x86, 0x9b, 0x2c, 0x3e, 0x84, 0x9b, 0x2c, 0x3f, 0x86, - 0x9b, 0x2c, 0x40, 0x84, 0x9b, 0x2c, 0x42, 0x86, 0x9b, 0x2c, 0x43, 0x84, - 0x9b, 0x2c, 0x44, 0x86, 0x9b, 0x2c, 0x45, 0x84, 0x9b, 0x2c, 0x46, 0x86, - 0x9b, 0x2c, 0x47, 0x84, 0x9b, 0x2c, 0x48, 0x86, 0x9b, 0x2c, 0x49, 0x84, - 0x9b, 0x2c, 0x4a, 0x86, 0x9b, 0x2c, 0x4b, 0x84, 0x9b, 0x2c, 0x4c, 0x86, - 0x9b, 0x2c, 0x4d, 0x84, 0x9b, 0x2c, 0x4e, 0x86, 0x9b, 0x2c, 0x4f, 0x84, - 0x9b, 0x2c, 0x50, 0x86, 0x9b, 0x2c, 0x51, 0x84, 0x9b, 0x2c, 0x52, 0x86, - 0x9b, 0x2c, 0x53, 0x84, 0x9b, 0x2c, 0x54, 0x86, 0x9b, 0x2c, 0x55, 0x84, - 0x9b, 0x2c, 0x56, 0x86, 0x9b, 0x2c, 0x57, 0x84, 0x9b, 0x2c, 0x58, 0x86, - 0x9b, 0x2c, 0x58, 0x84, 0x9b, 0x2c, 0x59, 0x86, 0x9b, 0x2c, 0x5a, 0x84, - 0x9b, 0x2c, 0x5b, 0x86, 0x9b, 0x2c, 0x5c, 0x84, 0x9b, 0x2c, 0x5d, 0x86, - 0x9b, 0x2c, 0x5d, 0x84, 0x9b, 0x2c, 0x5e, 0x86, 0x9b, 0x2c, 0x5f, 0x84, - 0x9b, 0x2c, 0x60, 0x86, 0x9b, 0x2c, 0x60, 0x84, 0x9b, 0x2c, 0x61, 0x86, - 0x9b, 0x2c, 0x62, 0x84, 0x9b, 0x2c, 0x63, 0x86, 0x9b, 0x2c, 0x63, 0x84, - 0x9b, 0x2c, 0x64, 0x86, 0x9b, 0x2c, 0x65, 0x84, 0x9b, 0x2c, 0x66, 0x86, - 0x9b, 0x2c, 0x66, 0x84, 0x9b, 0x2c, 0x67, 0x86, 0x9b, 0x2c, 0x68, 0x84, - 0x9b, 0x2c, 0x68, 0x86, 0x9b, 0x2c, 0x69, 0x84, 0x9b, 0x2c, 0x6a, 0x86, - 0x9b, 0x2c, 0x6a, 0x84, 0x9b, 0x2c, 0x6b, 0x86, 0x9b, 0x2c, 0x6c, 0x84, - 0x9b, 0x2c, 0x6c, 0x86, 0x9b, 0x2c, 0x6d, 0x84, 0x9b, 0x2c, 0x6e, 0x86, - 0x9b, 0x2c, 0x6e, 0x84, 0x9b, 0x2c, 0x6f, 0x86, 0x9b, 0x2c, 0x70, 0x84, - 0x9b, 0x2c, 0x70, 0x86, 0x9b, 0x2c, 0x71, 0x84, 0x9b, 0x2c, 0x72, 0x86, - 0x9b, 0x2c, 0x72, 0x84, 0x9b, 0x2c, 0x73, 0x86, 0x9b, 0x2c, 0x73, 0x84, - 0x9b, 0x2c, 0x74, 0x86, 0x9b, 0x2c, 0x75, 0x84, 0x9b, 0x2c, 0x75, 0x86, - 0x9b, 0x2c, 0x76, 0x84, 0x9b, 0x2c, 0x76, 0x86, 0x9b, 0x2c, 0x77, 0x84, - 0x9b, 0x2c, 0x78, 0x86, 0x9b, 0x2c, 0x78, 0x84, 0x9b, 0x2c, 0x79, 0x86, - 0x9b, 0x2c, 0x79, 0x84, 0x9b, 0x2c, 0x7a, 0x86, 0x9b, 0x2c, 0x7a, 0x84, - 0x9b, 0x2c, 0x7b, 0x86, 0x9b, 0x2c, 0x7c, 0x84, 0x9b, 0x2c, 0x7c, 0x86, - 0x9b, 0x2c, 0x7d, 0x84, 0x9b, 0x2c, 0x7d, 0x84, 0x9c, 0x2c, 0x7e, 0x84, - 0x9b, 0x2c, 0x7e, 0x84, 0x9c, 0x2c, 0x7f, 0x84, 0x9b, 0x2c, 0x7f, 0x84, - 0x9c, 0x2c, 0x80, 0x84, 0x9b, 0x2c, 0x81, 0x84, 0x9c, 0x2c, 0x81, 0x84, - 0x9b, 0x2c, 0x82, 0x84, 0x9c, 0x2c, 0x82, 0x84, 0x9b, 0x2c, 0x83, 0x84, - 0x9c, 0x2c, 0x83, 0x84, 0x9b, 0x2c, 0x84, 0x84, 0x9c, 0x2c, 0x84, 0x84, - 0x9b, 0x2c, 0x85, 0x84, 0x9c, 0x2c, 0x85, 0x84, 0x9b, 0x2c, 0x86, 0x84, - 0x9c, 0x2c, 0x86, 0x84, 0x9b, 0x2c, 0x87, 0x84, 0x9c, 0x2c, 0x87, 0x84, - 0x9b, 0x2c, 0x88, 0x84, 0x9c, 0x2c, 0x88, 0x84, 0x9b, 0x2c, 0x89, 0x84, - 0x9c, 0x2c, 0x89, 0x84, 0x9b, 0x2c, 0x8a, 0x84, 0x9c, 0x2c, 0x8a, 0x84, - 0x9b, 0x2c, 0x8b, 0x84, 0x9c, 0x2c, 0x8b, 0x84, 0x9b, 0x2c, 0x8c, 0x84, - 0x9c, 0x2c, 0x8c, 0x84, 0x9b, 0x2c, 0x8d, 0x84, 0x9c, 0x2c, 0x8d, 0x84, - 0x9b, 0x2c, 0x8e, 0x84, 0x9c, 0x2c, 0x8e, 0x84, 0x9b, 0x2c, 0x8e, 0x84, - 0x9c, 0x2c, 0x8f, 0x84, 0x9b, 0x2c, 0x8f, 0x84, 0x9c, 0x2c, 0x90, 0x84, - 0x9b, 0x2c, 0x90, 0x84, 0x9c, 0x2c, 0x91, 0x84, 0x9b, 0x2c, 0x91, 0x84, - 0x9c, 0x2c, 0x92, 0x84, 0x9b, 0x2c, 0x92, 0x84, 0x9c, 0x2c, 0x93, 0x84, - 0x9b, 0x2c, 0x93, 0x84, 0x9c, 0x2c, 0x94, 0x84, 0x9b, 0x2c, 0x94, 0x84, - 0x9c, 0x2c, 0x94, 0x84, 0x9b, 0x2c, 0x95, 0x84, 0x9c, 0x2c, 0x95, 0x84, - 0x9b, 0x2c, 0x96, 0x84, 0x9c, 0x2c, 0x96, 0x84, 0x9b, 0x2c, 0x97, 0x84, - 0x9c, 0x2c, 0x97, 0x84, 0x9b, 0x2c, 0x98, 0x84, 0x9c, 0x2c, 0x98, 0x84, - 0x9b, 0x2c, 0x98, 0x84, 0x9c, 0x2c, 0x99, 0x84, 0x9b, 0x2c, 0x99, 0x84, - 0x9c, 0x2c, 0x9a, 0x84, 0x9b, 0x2c, 0x9a, 0x84, 0x9c, 0x2c, 0x9a, 0x84, - 0x9b, 0x2c, 0x9b, 0x84, 0x9c, 0x2c, 0x9b, 0x84, 0x9b, 0x2c, 0x9c, 0x84, - 0x9c, 0x2c, 0x9c, 0x84, 0x9c, 0x2c, 0x9d, 0x84, 0x9d, 0x2c, 0x9d, 0x84, - 0x9d, 0x2c, 0x9d, 0x84, 0x9d, 0x2c, 0x9e, 0x84, 0x9e, 0x2c, 0x9e, 0x84, - 0x9e, 0x2c, 0x9f, 0x84, 0x9f, 0x2c, 0x9f, 0x84, 0x9e, 0x2c, 0x9f, 0x84, - 0x9f, 0x2c, 0xa0, 0x84, 0x9e, 0x2c, 0xa0, 0x84, 0x9f, 0x2c, 0xa1, 0x84, - 0x9e, 0x2c, 0xa1, 0x84, 0x9f, 0x2c, 0xa1, 0x84, 0x9e, 0x2c, 0xa2, 0x84, - 0x9f, 0x2c, 0xa2, 0x84, 0x9e, 0x2c, 0xa3, 0x84, 0x9f, 0x2c, 0xa3, 0x85, - 0xa2, 0x2c, 0xa3, 0x85, 0xa2, 0x2c, 0xa4, 0x85, 0xa2, 0x2c, 0xa4, 0x85, - 0xa2, 0x2c, 0xa5, 0x85, 0xa2, 0x2c, 0xa5, 0x85, 0xa2, 0x2c, 0xa5, 0x85, - 0xa2, 0x2c, 0xa6, 0x85, 0xa2, 0x2c, 0xa6, 0x85, 0xa2, 0x2c, 0xa6, 0x86, - 0xa6, 0x2c, 0xa7, 0x86, 0xa6, 0x2c, 0xa7, 0x86, 0xa6, 0x2c, 0xa8, 0x86, - 0xa6, 0x2c, 0xa8, 0x86, 0xa6, 0x2c, 0xa8, 0x86, 0xa6, 0x2c, 0xa9, 0x86, - 0xa6, 0x2c, 0xa9, 0x86, 0xa6, 0x2c, 0xaa, 0x86, 0xa6, 0x2c, 0xaa, 0x86, - 0xa6, 0x2c, 0xaa, 0x86, 0xa6, 0x2c, 0xab, 0x86, 0xa6, 0x2c, 0xab, 0x87, - 0xaa, 0x2c, 0xab, 0x87, 0xa9, 0x2c, 0xac, 0x87, 0xaa, 0x2c, 0xac, 0x87, - 0xa9, 0x2c, 0xac, 0x87, 0xaa, 0x2c, 0xad, 0x87, 0xa9, 0x2c, 0xad, 0x87, - 0xaa, 0x2c, 0xae, 0x87, 0xa9, 0x2c, 0xae, 0x87, 0xaa, 0x2c, 0xae, 0x88, - 0xad, 0x2c, 0xaf, 0x88, 0xad, 0x2c, 0xaf, 0x88, 0xad, 0x2c, 0xaf, 0x88, - 0xad, 0x2c, 0xb0, 0x88, 0xad, 0x2c, 0xb0, 0x88, 0xad, 0x2c, 0xb0, 0x88, - 0xad, 0x2c, 0xb1, 0x88, 0xad, 0x2c, 0xb1, 0x88, 0xad, 0x2c, 0xb2, 0x88, - 0xad, 0x2c, 0xb2, 0x89, 0xb0, 0x2c, 0xb2, 0x89, 0xb0, 0x2c, 0xb3, 0x89, - 0xb0, 0x2c, 0xb3, 0x89, 0xb0, 0x2c, 0xb3, 0x89, 0xb0, 0x2c, 0xb4, 0x89, - 0xb2, 0x2c, 0xb4, 0x89, 0xb0, 0x2c, 0xb4, 0x89, 0xb2, 0x2c, 0xb5, 0x89, - 0xb0, 0x2c, 0xb5, 0x89, 0xb2, 0x2c, 0xb5, 0x89, 0xb2, 0x2c, 0xb6, 0x89, - 0xb2, 0x2c, 0xb6, 0x89, 0xb2, 0x2c, 0xb6, 0x89, 0xb2, 0x2c, 0xb7, 0x8a, - 0xb3, 0x2c, 0xb7, 0x8a, 0xb4, 0x2c, 0xb7, 0x8a, 0xb3, 0x2c, 0xb8, 0x8a, - 0xb4, 0x2c, 0xb8, 0x8b, 0xb7, 0x2c, 0xb8, 0x8b, 0xb7, 0x2c, 0xb9, 0x8b, - 0xb7, 0x2c, 0xb9, 0x8b, 0xb7, 0x2c, 0xb9, 0x8b, 0xb7, 0x2c, 0xba, 0x8b, - 0xb7, 0x2c, 0xba, 0x8b, 0xb7, 0x2c, 0xba, 0x8b, 0xb7, 0x2c, 0xbb, 0x8b, - 0xb7, 0x2c, 0xbb, 0x8b, 0xb7, 0x2c, 0xbb, 0x8c, 0xba, 0x2c, 0xbc, 0x8b, - 0xb7, 0x2c, 0xbc, 0x8c, 0xba, 0x2c, 0xbc, 0x8c, 0xba, 0x2c, 0xbd, 0x8c, - 0xba, 0x2c, 0xbd, 0x8c, 0xba, 0x2c, 0xbd, 0x8c, 0xba, 0x2c, 0xbe, 0x8c, - 0xba, 0x2c, 0xbe, 0x8c, 0xba, 0x2c, 0xbe, 0x8c, 0xba, 0x2c, 0xbf, 0x8c, - 0xba, 0x2c, 0xbf, 0x8d, 0xbd, 0x2c, 0xbf, 0x8d, 0xbd, 0x2c, 0xc0, 0x8d, - 0xbd, 0x2c, 0xc0, 0x8d, 0xbd, 0x2c, 0xc0, 0x8d, 0xbd, 0x2c, 0xc1, 0x8d, - 0xbd, 0x2c, 0xc1, 0x8d, 0xbd, 0x2c, 0xc1, 0x8d, 0xbd, 0x2c, 0xc1, 0x8d, - 0xbd, 0x2c, 0xc2, 0x8e, 0xc0, 0x2c, 0xc2, 0x8e, 0xc0, 0x2c, 0xc2, 0x8e, - 0xc0, 0x2c, 0xc3, 0x8e, 0xc0, 0x2c, 0xc3, 0x8e, 0xc0, 0x2c, 0xc3, 0x8e, - 0xc0, 0x2c, 0xc4, 0x8e, 0xc0, 0x2c, 0xc4, 0x8e, 0xc0, 0x2c, 0xc4, 0x8e, - 0xc0, 0x2c, 0xc5, 0x8e, 0xc0, 0x2c, 0xc5, 0x8e, 0xc3, 0x2c, 0xc5, 0x8e, - 0xc0, 0x2c, 0xc6, 0x8e, 0xc3, 0x2c, 0xc6, 0x8e, 0xc3, 0x2c, 0xc6, 0x8e, - 0xc3, 0x2c, 0xc6, 0x8e, 0xc3, 0x2c, 0xc7, 0x8e, 0xc3, 0x2c, 0xc7, 0x8e, - 0xc3, 0x2c, 0xc7, 0x8e, 0xc3, 0x2c, 0xc8, 0x8f, 0xc6, 0x2c, 0xc8, 0x8e, - 0xc3, 0x2c, 0xc8, 0x8f, 0xc6, 0x2c, 0xc9, 0x8f, 0xc6, 0x2c, 0xc9, 0x8f, - 0xc6, 0x2c, 0xc9, 0x8f, 0xc6, 0x2c, 0xc9, 0x8f, 0xc6, 0x2c, 0xca, 0x8f, - 0xc6, 0x2c, 0xca, 0x8f, 0xc6, 0x2c, 0xca, 0x8f, 0xc6, 0x2c, 0xcb, 0x8f, - 0xc6, 0x2c, 0xcb, 0x90, 0xc9, 0x2c, 0xcb, 0x90, 0xc9, 0x2c, 0xcc, 0x90, - 0xc9, 0x2c, 0xcc, 0x90, 0xc9, 0x2c, 0xcc, 0x90, 0xc9, 0x2c, 0xcc, 0x90, - 0xc9, 0x2c, 0xcd, 0x90, 0xc9, 0x2c, 0xcd, 0x90, 0xc9, 0x2c, 0xcd, 0x90, - 0xc9, 0x2c, 0xce, 0x90, 0xc9, 0x2c, 0xce, 0x91, 0xcc, 0x2c, 0xce, 0x90, - 0xc9, 0x2c, 0xce, 0x91, 0xcc, 0x2c, 0xcf, 0x91, 0xcb, 0x2c, 0xcf, 0x91, - 0xcc, 0x2c, 0xcf, 0x91, 0xcb, 0x2c, 0xd0, 0x91, 0xcc, 0x2c, 0xd0, 0x91, - 0xcb, 0x2c, 0xd0, 0x91, 0xcc, 0x2c, 0xd0, 0x92, 0xce, 0x2c, 0xd1, 0x92, - 0xce, 0x2c, 0xd1, 0x92, 0xce, 0x2c, 0xd1, 0x92, 0xce, 0x2c, 0xd2, 0x92, - 0xce, 0x2c, 0xd2, 0x92, 0xce, 0x2c, 0xd2, 0x92, 0xce, 0x2c, 0xd2, 0x92, - 0xce, 0x2c, 0xd3, 0x92, 0xce, 0x2c, 0xd3, 0x92, 0xce, 0x2c, 0xd3, 0x93, - 0xd1, 0x2c, 0xd4, 0x92, 0xce, 0x2c, 0xd4, 0x93, 0xd1, 0x2c, 0xd4, 0x93, - 0xd1, 0x2c, 0xd4, 0x93, 0xd1, 0x2c, 0xd5, 0x93, 0xd1, 0x2c, 0xd5, 0x93, - 0xd1, 0x2c, 0xd5, 0x93, 0xd1, 0x2c, 0xd6, 0x93, 0xd1, 0x2c, 0xd6, 0x94, - 0xd4, 0x2c, 0xd6, 0x93, 0xd1, 0x2c, 0xd6, 0x94, 0xd4, 0x2c, 0xd7, 0x94, - 0xd3, 0x2c, 0xd7, 0x94, 0xd4, 0x2c, 0xd7, 0x94, 0xd3, 0x2c, 0xd7, 0x94, - 0xd4, 0x2c, 0xd8, 0x94, 0xd3, 0x2c, 0xd8, 0x94, 0xd4, 0x2c, 0xd8, 0x95, - 0xd6, 0x2c, 0xd9, 0x95, 0xd6, 0x2c, 0xd9, 0x95, 0xd6, 0x2c, 0xd9, 0x95, - 0xd6, 0x2c, 0xd9, 0x95, 0xd6, 0x2c, 0xda, 0x95, 0xd6, 0x2c, 0xda, 0x95, - 0xd6, 0x2c, 0xda, 0x95, 0xd6, 0x2c, 0xda, 0x95, 0xd6, 0x2c, 0xdb, 0x95, - 0xd6, 0x2c, 0xdb, 0x95, 0xd6, 0x2c, 0xdb, 0x95, 0xd6, 0x2c, 0xdb, 0x96, - 0xd9, 0x2c, 0xdc, 0x95, 0xd6, 0x2c, 0xdc, 0x96, 0xd9, 0x2c, 0xdc, 0x96, - 0xd9, 0x2c, 0xdd, 0x96, 0xd9, 0x2c, 0xdd, 0x96, 0xd9, 0x2c, 0xdd, 0x96, - 0xd9, 0x2c, 0xdd, 0x96, 0xd9, 0x2c, 0xde, 0x96, 0xd9, 0x2c, 0xde, 0x97, - 0xdb, 0x2c, 0xde, 0x96, 0xd9, 0x2c, 0xde, 0x97, 0xdb, 0x2c, 0xdf, 0x97, - 0xdb, 0x2c, 0xdf, 0x97, 0xdb, 0x2c, 0xdf, 0x97, 0xdb, 0x2c, 0xdf, 0x97, - 0xdb, 0x2c, 0xe0, 0x97, 0xdb, 0x2c, 0xe0, 0x97, 0xdb, 0x2c, 0xe0, 0x98, - 0xde, 0x2c, 0xe1, 0x98, 0xde, 0x2c, 0xe1, 0x98, 0xde, 0x2c, 0xe1, 0x98, - 0xde, 0x2c, 0xe1, 0x98, 0xde, 0x2c, 0xe2, 0x98, 0xde, 0x2c, 0xe2, 0x98, - 0xde, 0x2c, 0xe2, 0x98, 0xde, 0x2c, 0xe2, 0x98, 0xde, 0x2c, 0xe3, 0x98, - 0xde, 0x2c, 0xe3, 0x98, 0xe0, 0x2c, 0xe3, 0x98, 0xde, 0x2c, 0xe3, 0x98, - 0xe0, 0x2c, 0xe4, 0x98, 0xde, 0x2c, 0xe4, 0x98, 0xe0, 0x2c, 0xe4, 0x98, - 0xe0, 0x2c, 0xe4, 0x98, 0xe0, 0x2c, 0xe5, 0x98, 0xe0, 0x2c, 0xe5, 0x98, - 0xe0, 0x2c, 0xe5, 0x98, 0xe0, 0x2c, 0xe5, 0x98, 0xe0, 0x2c, 0xe6, 0x99, - 0xe3, 0x2c, 0xe6, 0x98, 0xe0, 0x2c, 0xe6, 0x99, 0xe3, 0x2c, 0xe6, 0x99, - 0xe2, 0x2c, 0xe7, 0x99, 0xe3, 0x2c, 0xe7, 0x99, 0xe2, 0x2c, 0xe7, 0x99, - 0xe3, 0x2c, 0xe7, 0x99, 0xe2, 0x2c, 0xe8, 0x99, 0xe3, 0x2c, 0xe8, 0x9a, - 0xe5, 0x2c, 0xe8, 0x9a, 0xe5, 0x2c, 0xe8, 0x9a, 0xe5, 0x2c, 0xe9, 0x9a, - 0xe5, 0x2c, 0xe9, 0x9a, 0xe5, 0x2c, 0xe9, 0x9a, 0xe5, 0x2c, 0xe9, 0x9a, - 0xe5, 0x2c, 0xea, 0x9a, 0xe5, 0x2c, 0xea, 0x9a, 0xe5, 0x2c, 0xea, 0x9a, - 0xe5, 0x2c, 0xea, 0x9b, 0xe7, 0x2c, 0xeb, 0x9a, 0xe5, 0x2c, 0xeb, 0x9b, - 0xe7, 0x2c, 0xeb, 0x9b, 0xe7, 0x2c, 0xeb, 0x9b, 0xe7, 0x2c, 0xec, 0x9b, - 0xe7, 0x2c, 0xec, 0x9b, 0xe7, 0x2c, 0xec, 0x9b, 0xe7, 0x2c, 0xec, 0x9b, - 0xe7, 0x2c, 0xec, 0x9c, 0xea, 0x2c, 0xed, 0x9c, 0xea, 0x2c, 0xed, 0x9c, - 0xea, 0x2c, 0xed, 0x9c, 0xea, 0x2c, 0xed, 0x9c, 0xea, 0x2c, 0xee, 0x9c, - 0xea, 0x2c, 0xee, 0x9c, 0xea, 0x2c, 0xee, 0x9c, 0xea, 0x2c, 0xee, 0x9c, - 0xea, 0x2c, 0xef, 0x9c, 0xea, 0x2c, 0xef, 0x9d, 0xec, 0x2c, 0xef, 0x9c, - 0xea, 0x2c, 0xef, 0x9d, 0xec, 0x2c, 0xf0, 0x9c, 0xea, 0x2c, 0xf0, 0x9d, - 0xec, 0x2c, 0xf0, 0x9d, 0xec, 0x2c, 0xf0, 0x9d, 0xec, 0x2c, 0xf1, 0x9d, - 0xec, 0x2c, 0xf1, 0x9d, 0xec, 0x2c, 0xf1, 0x9d, 0xee, 0x2c, 0xf1, 0x9d, - 0xec, 0x2c, 0xf2, 0x9d, 0xee, 0x2c, 0xf2, 0x9d, 0xec, 0x2c, 0xf2, 0x9d, - 0xee, 0x2c, 0xf2, 0x9d, 0xee, 0x2c, 0xf2, 0x9d, 0xee, 0x2c, 0xf3, 0x9d, - 0xee, 0x2c, 0xf3, 0x9d, 0xee, 0x2c, 0xf3, 0x9d, 0xee, 0x2c, 0xf3, 0x9d, - 0xee, 0x2c, 0xf4, 0x9e, 0xf0, 0x2c, 0xf4, 0x9e, 0xf1, 0x2c, 0xf4, 0x9e, - 0xf0, 0x2c, 0xf4, 0x9e, 0xf1, 0x2c, 0xf5, 0x9e, 0xf0, 0x2c, 0xf5, 0x9e, - 0xf1, 0x2c, 0xf5, 0x9e, 0xf0, 0x2c, 0xf5, 0x9e, 0xf1, 0x2c, 0xf5, 0x9e, - 0xf0, 0x2c, 0xf6, 0x9e, 0xf1, 0x2c, 0xf6, 0x9f, 0xf3, 0x2c, 0xf6, 0x9e, - 0xf1, 0x2c, 0xf6, 0x9f, 0xf3, 0x2c, 0xf7, 0x9e, 0xf1, 0x2c, 0xf7, 0x9f, - 0xf3, 0x2c, 0xf7, 0x9f, 0xf2, 0x2c, 0xf7, 0x9f, 0xf3, 0x2c, 0xf8, 0x9f, - 0xf2, 0x2c, 0xf8, 0x9f, 0xf3, 0x2c, 0xf8, 0xa0, 0xf5, 0x2c, 0xf8, 0x9f, - 0xf3, 0x2c, 0xf8, 0xa0, 0xf5, 0x2c, 0xf9, 0x9f, 0xf3, 0x2c, 0xf9, 0xa0, - 0xf5, 0x2c, 0xf9, 0xa0, 0xf5, 0x2c, 0xf9, 0xa0, 0xf5, 0x2c, 0xfa, 0xa0, - 0xf5, 0x2c, 0xfa, 0xa0, 0xf5, 0x2c, 0xfa, 0xa1, 0xf7, 0x2c, 0xfa, 0xa1, - 0xf7, 0x2c, 0xfa, 0xa1, 0xf7, 0x2c, 0xfb, 0xa1, 0xf7, 0x2c, 0xfb, 0xa1, - 0xf7, 0x2c, 0xfb, 0xa1, 0xf7, 0x2c, 0xfb, 0xa1, 0xf7, 0x2c, 0xfc, 0xa1, - 0xf7, 0x2c, 0xfc, 0xa1, 0xf7, 0x2c, 0xfc, 0xa1, 0xf7, 0x2c, 0xfc, 0xa1, - 0xf7, 0x2c, 0xfc, 0xa1, 0xf7, 0x2c, 0xfd, 0xa1, 0xf9, 0x2c, 0xfd, 0xa1, - 0xf7, 0x2c, 0xfd, 0xa1, 0xf9, 0x2c, 0xfd, 0xa1, 0xf9, 0x2c, 0xfe, 0xa1, - 0xf9, 0x2c, 0xfe, 0xa1, 0xf9, 0x2c, 0xfe, 0xa1, 0xf9, 0x2c, 0xfe, 0xa1, - 0xf9, 0x2c, 0xfe, 0xa1, 0xf9, 0x2c, 0xff, 0xa2, 0xfb, 0x2c, 0xff, 0xa1, - 0xf9, 0x2c, 0x03, 0x83, 0x9b, 0x2c, 0x0a, 0x83, 0x9b, 0x2c, 0x0f, 0x83, - 0x9b, 0x2c, 0x14, 0x83, 0x9b, 0x2c, 0x17, 0x83, 0x9b, 0x2c, 0x1b, 0x83, - 0x9b, 0x2c, 0x1e, 0x83, 0x9b, 0x2c, 0x20, 0x86, 0x9b, 0x2c, 0x23, 0x83, - 0x9b, 0x2c, 0x25, 0x86, 0x9b, 0x2c, 0x27, 0x83, 0x9b, 0x2c, 0x29, 0x86, - 0x9b, 0x2c, 0x2b, 0x83, 0x9b, 0x2c, 0x2d, 0x86, 0x9b, 0x2c, 0x2f, 0x83, - 0x9b, 0x2c, 0x31, 0x86, 0x9b, 0x2c, 0x32, 0x83, 0x9b, 0x2c, 0x34, 0x86, - 0x9b, 0x2c, 0x35, 0x83, 0x9b, 0x2c, 0x37, 0x86, 0x9b, 0x2c, 0x38, 0x83, - 0x9b, 0x2c, 0x3a, 0x86, 0x9b, 0x2c, 0x3b, 0x83, 0x9b, 0x2c, 0x3c, 0x86, - 0x9b, 0x2c, 0x3e, 0x83, 0x9b, 0x2c, 0x3f, 0x86, 0x9b, 0x2c, 0x40, 0x83, - 0x9b, 0x2c, 0x42, 0x86, 0x9b, 0x2c, 0x43, 0x83, 0x9b, 0x2c, 0x44, 0x86, - 0x9b, 0x2c, 0x45, 0x83, 0x9b, 0x2c, 0x46, 0x86, 0x9b, 0x2c, 0x47, 0x83, - 0x9b, 0x2c, 0x48, 0x86, 0x9b, 0x2c, 0x49, 0x83, 0x9b, 0x2c, 0x4a, 0x86, - 0x9b, 0x2c, 0x4b, 0x83, 0x9b, 0x2c, 0x4c, 0x86, 0x9b, 0x2c, 0x4d, 0x83, - 0x9b, 0x2c, 0x4e, 0x86, 0x9b, 0x2c, 0x4f, 0x83, 0x9b, 0x2c, 0x50, 0x86, - 0x9b, 0x2c, 0x51, 0x83, 0x9b, 0x2c, 0x52, 0x86, 0x9b, 0x2c, 0x53, 0x83, - 0x9b, 0x2c, 0x54, 0x86, 0x9b, 0x2c, 0x55, 0x83, 0x9b, 0x2c, 0x56, 0x86, - 0x9b, 0x2c, 0x57, 0x83, 0x9b, 0x2c, 0x58, 0x86, 0x9b, 0x2c, 0x58, 0x83, - 0x9b, 0x2c, 0x59, 0x86, 0x9b, 0x2c, 0x5a, 0x83, 0x9b, 0x2c, 0x5b, 0x86, - 0x9b, 0x2c, 0x5c, 0x83, 0x9b, 0x2c, 0x5d, 0x86, 0x9b, 0x2c, 0x5d, 0x83, - 0x9b, 0x2c, 0x5e, 0x86, 0x9b, 0x2c, 0x5f, 0x83, 0x9b, 0x2c, 0x60, 0x86, - 0x9b, 0x2c, 0x60, 0x83, 0x9b, 0x2c, 0x61, 0x86, 0x9b, 0x2c, 0x62, 0x83, - 0x9b, 0x2c, 0x63, 0x86, 0x9b, 0x2c, 0x63, 0x83, 0x9b, 0x2c, 0x64, 0x86, - 0x9b, 0x2c, 0x65, 0x83, 0x9b, 0x2c, 0x66, 0x86, 0x9b, 0x2c, 0x66, 0x83, - 0x9b, 0x2c, 0x67, 0x86, 0x9b, 0x2c, 0x68, 0x83, 0x9b, 0x2c, 0x68, 0x86, - 0x9b, 0x2c, 0x69, 0x83, 0x9b, 0x2c, 0x6a, 0x86, 0x9b, 0x2c, 0x6a, 0x83, - 0x9b, 0x2c, 0x6b, 0x86, 0x9b, 0x2c, 0x6c, 0x83, 0x9b, 0x2c, 0x6c, 0x83, - 0x9c, 0x2c, 0x6d, 0x83, 0x9b, 0x2c, 0x6e, 0x83, 0x9c, 0x2c, 0x6e, 0x83, - 0x9b, 0x2c, 0x6f, 0x83, 0x9c, 0x2c, 0x70, 0x83, 0x9b, 0x2c, 0x70, 0x83, - 0x9c, 0x2c, 0x71, 0x83, 0x9b, 0x2c, 0x72, 0x83, 0x9c, 0x2c, 0x72, 0x83, - 0x9b, 0x2c, 0x73, 0x83, 0x9c, 0x2c, 0x73, 0x83, 0x9b, 0x2c, 0x74, 0x83, - 0x9c, 0x2c, 0x75, 0x83, 0x9b, 0x2c, 0x75, 0x83, 0x9c, 0x2c, 0x76, 0x83, - 0x9b, 0x2c, 0x76, 0x83, 0x9c, 0x2c, 0x77, 0x83, 0x9b, 0x2c, 0x78, 0x83, - 0x9c, 0x2c, 0x78, 0x83, 0x9b, 0x2c, 0x79, 0x83, 0x9c, 0x2c, 0x79, 0x83, - 0x9b, 0x2c, 0x7a, 0x83, 0x9c, 0x2c, 0x7a, 0x83, 0x9b, 0x2c, 0x7b, 0x83, - 0x9c, 0x2c, 0x7c, 0x83, 0x9b, 0x2c, 0x7c, 0x83, 0x9c, 0x2c, 0x7d, 0x83, - 0x9b, 0x2c, 0x7d, 0x83, 0x9c, 0x2c, 0x7e, 0x83, 0x9b, 0x2c, 0x7e, 0x83, - 0x9c, 0x2c, 0x7f, 0x83, 0x9b, 0x2c, 0x7f, 0x83, 0x9c, 0x2c, 0x80, 0x83, - 0x9b, 0x2c, 0x81, 0x83, 0x9c, 0x2c, 0x81, 0x83, 0x9b, 0x2c, 0x82, 0x83, - 0x9c, 0x2c, 0x82, 0x83, 0x9b, 0x2c, 0x83, 0x83, 0x9c, 0x2c, 0x83, 0x83, - 0x9b, 0x2c, 0x84, 0x83, 0x9c, 0x2c, 0x84, 0x83, 0x9b, 0x2c, 0x85, 0x83, - 0x9c, 0x2c, 0x85, 0x83, 0x9b, 0x2c, 0x86, 0x83, 0x9c, 0x2c, 0x86, 0x83, - 0x9b, 0x2c, 0x87, 0x83, 0x9c, 0x2c, 0x87, 0x83, 0x9b, 0x2c, 0x88, 0x83, - 0x9c, 0x2c, 0x88, 0x83, 0x9b, 0x2c, 0x89, 0x83, 0x9c, 0x2c, 0x89, 0x83, - 0x9b, 0x2c, 0x8a, 0x83, 0x9c, 0x2c, 0x8a, 0x83, 0x9b, 0x2c, 0x8b, 0x83, - 0x9c, 0x2c, 0x8b, 0x83, 0x9b, 0x2c, 0x8c, 0x83, 0x9c, 0x2c, 0x8c, 0x83, - 0x9b, 0x2c, 0x8d, 0x83, 0x9c, 0x2c, 0x8d, 0x83, 0x9b, 0x2c, 0x8e, 0x83, - 0x9c, 0x2c, 0x8e, 0x83, 0x9b, 0x2c, 0x8e, 0x83, 0x9c, 0x2c, 0x8f, 0x83, - 0x9b, 0x2c, 0x8f, 0x83, 0x9c, 0x2c, 0x90, 0x83, 0x9b, 0x2c, 0x90, 0x83, - 0x9c, 0x2c, 0x91, 0x83, 0x9b, 0x2c, 0x91, 0x83, 0x9c, 0x2c, 0x92, 0x83, - 0x9b, 0x2c, 0x92, 0x83, 0x9c, 0x2c, 0x93, 0x83, 0x9b, 0x2c, 0x93, 0x83, - 0x9c, 0x2c, 0x94, 0x83, 0x9b, 0x2c, 0x94, 0x83, 0x9c, 0x2c, 0x94, 0x83, - 0x9b, 0x2c, 0x95, 0x83, 0x9c, 0x2c, 0x95, 0x83, 0x9b, 0x2c, 0x96, 0x83, - 0x9c, 0x2c, 0x96, 0x83, 0x9b, 0x2c, 0x97, 0x83, 0x9c, 0x2c, 0x97, 0x83, - 0x9b, 0x2c, 0x98, 0x83, 0x9c, 0x2c, 0x98, 0x83, 0x9b, 0x2c, 0x98, 0x83, - 0x9c, 0x2c, 0x99, 0x83, 0x9b, 0x2c, 0x99, 0x83, 0x9c, 0x2c, 0x9a, 0x83, - 0x9b, 0x2c, 0x9a, 0x83, 0x9c, 0x2c, 0x9a, 0x83, 0x9b, 0x2c, 0x9b, 0x83, - 0x9c, 0x2c, 0x9b, 0x83, 0x9b, 0x2c, 0x9c, 0x83, 0x9c, 0x2c, 0x9c, 0x83, - 0x9c, 0x2c, 0x9d, 0x83, 0x9d, 0x2c, 0x9d, 0x83, 0x9c, 0x2c, 0x9d, 0x83, - 0x9d, 0x2c, 0x9e, 0x83, 0x9c, 0x2c, 0x9e, 0x83, 0x9d, 0x2c, 0x9f, 0x83, - 0x9c, 0x2c, 0x9f, 0x83, 0x9d, 0x2c, 0x9f, 0x83, 0x9c, 0x2c, 0xa0, 0x83, - 0x9d, 0x2c, 0xa0, 0x83, 0x9c, 0x2c, 0xa1, 0x83, 0x9d, 0x2c, 0xa1, 0x84, - 0xa0, 0x2c, 0xa1, 0x84, 0xa1, 0x2c, 0xa2, 0x84, 0xa0, 0x2c, 0xa2, 0x84, - 0xa1, 0x2c, 0xa3, 0x84, 0xa0, 0x2c, 0xa3, 0x84, 0xa1, 0x2c, 0xa3, 0x84, - 0xa0, 0x2c, 0xa4, 0x84, 0xa1, 0x2c, 0xa4, 0x84, 0xa0, 0x2c, 0xa5, 0x84, - 0xa1, 0x2c, 0xa5, 0x85, 0xa4, 0x2c, 0xa5, 0x85, 0xa4, 0x2c, 0xa6, 0x85, - 0xa4, 0x2c, 0xa6, 0x85, 0xa4, 0x2c, 0xa6, 0x85, 0xa4, 0x2c, 0xa7, 0x85, - 0xa4, 0x2c, 0xa7, 0x85, 0xa4, 0x2c, 0xa8, 0x85, 0xa4, 0x2c, 0xa8, 0x85, - 0xa4, 0x2c, 0xa8, 0x86, 0xa8, 0x2c, 0xa9, 0x85, 0xa4, 0x2c, 0xa9, 0x86, - 0xa8, 0x2c, 0xaa, 0x86, 0xa7, 0x2c, 0xaa, 0x86, 0xa8, 0x2c, 0xaa, 0x86, - 0xa7, 0x2c, 0xab, 0x86, 0xa8, 0x2c, 0xab, 0x86, 0xa7, 0x2c, 0xab, 0x86, - 0xa8, 0x2c, 0xac, 0x86, 0xa7, 0x2c, 0xac, 0x86, 0xa8, 0x2c, 0xac, 0x87, - 0xab, 0x2c, 0xad, 0x87, 0xab, 0x2c, 0xad, 0x87, 0xab, 0x2c, 0xae, 0x87, - 0xab, 0x2c, 0xae, 0x87, 0xab, 0x2c, 0xae, 0x87, 0xab, 0x2c, 0xaf, 0x87, - 0xab, 0x2c, 0xaf, 0x87, 0xab, 0x2c, 0xaf, 0x87, 0xab, 0x2c, 0xb0, 0x87, - 0xab, 0x2c, 0xb0, 0x88, 0xaf, 0x2c, 0xb0, 0x88, 0xae, 0x2c, 0xb1, 0x88, - 0xaf, 0x2c, 0xb1, 0x88, 0xae, 0x2c, 0xb2, 0x88, 0xaf, 0x2c, 0xb2, 0x88, - 0xae, 0x2c, 0xb2, 0x88, 0xaf, 0x2c, 0xb3, 0x88, 0xae, 0x2c, 0xb3, 0x88, - 0xaf, 0x2c, 0xb3, 0x89, 0xb2, 0x2c, 0xb4, 0x89, 0xb2, 0x2c, 0xb4, 0x89, - 0xb2, 0x2c, 0xb4, 0x89, 0xb2, 0x2c, 0xb5, 0x89, 0xb2, 0x2c, 0xb5, 0x89, - 0xb2, 0x2c, 0xb5, 0x89, 0xb2, 0x2c, 0xb6, 0x89, 0xb2, 0x2c, 0xb6, 0x89, - 0xb2, 0x2c, 0xb6, 0x89, 0xb2, 0x2c, 0xb7, 0x8a, 0xb5, 0x2c, 0xb7, 0x89, - 0xb2, 0x2c, 0xb7, 0x8a, 0xb5, 0x2c, 0xb8, 0x8a, 0xb5, 0x2c, 0xb8, 0x8a, - 0xb5, 0x2c, 0xb8, 0x8a, 0xb5, 0x2c, 0xb9, 0x8a, 0xb5, 0x2c, 0xb9, 0x8a, - 0xb5, 0x2c, 0xb9, 0x8a, 0xb5, 0x2c, 0xba, 0x8b, 0xb8, 0x2c, 0xba, 0x8a, - 0xb5, 0x2c, 0xba, 0x8b, 0xb8, 0x2c, 0xbb, 0x8b, 0xb8, 0x2c, 0xbb, 0x8b, - 0xb8, 0x2c, 0xbb, 0x8b, 0xb8, 0x2c, 0xbc, 0x8b, 0xb8, 0x2c, 0xbc, 0x8b, - 0xb8, 0x2c, 0xbc, 0x8b, 0xb8, 0x2c, 0xbd, 0x8c, 0xbb, 0x2c, 0xbd, 0x8c, - 0xbc, 0x2c, 0xbd, 0x8c, 0xbb, 0x2c, 0xbe, 0x8c, 0xbc, 0x2c, 0xbe, 0x8c, - 0xbb, 0x2c, 0xbe, 0x8c, 0xbc, 0x2c, 0xbf, 0x8c, 0xbb, 0x2c, 0xbf, 0x8c, - 0xbc, 0x2c, 0xbf, 0x8c, 0xbb, 0x2c, 0xc0, 0x8c, 0xbc, 0x2c, 0xc0, 0x8c, - 0xbb, 0x2c, 0xc0, 0x8c, 0xbc, 0x2c, 0xc1, 0x8d, 0xbf, 0x2c, 0xc1, 0x8d, - 0xbe, 0x2c, 0xc1, 0x8d, 0xbf, 0x2c, 0xc1, 0x8d, 0xbe, 0x2c, 0xc2, 0x8d, - 0xbf, 0x2c, 0xc2, 0x8d, 0xbe, 0x2c, 0xc2, 0x8d, 0xbf, 0x2c, 0xc3, 0x8d, - 0xbe, 0x2c, 0xc3, 0x8d, 0xbf, 0x2c, 0xc3, 0x8e, 0xc1, 0x2c, 0xc4, 0x8d, - 0xbf, 0x2c, 0xc4, 0x8e, 0xc1, 0x2c, 0xc4, 0x8e, 0xc1, 0x2c, 0xc5, 0x8e, - 0xc1, 0x2c, 0xc5, 0x8e, 0xc1, 0x2c, 0xc5, 0x8e, 0xc1, 0x2c, 0xc6, 0x8e, - 0xc1, 0x2c, 0xc6, 0x8e, 0xc1, 0x2c, 0xc6, 0x8f, 0xc4, 0x2c, 0xc6, 0x8f, - 0xc5, 0x2c, 0xc7, 0x8f, 0xc4, 0x2c, 0xc7, 0x8f, 0xc5, 0x2c, 0xc7, 0x8f, - 0xc4, 0x2c, 0xc8, 0x8f, 0xc5, 0x2c, 0xc8, 0x8f, 0xc4, 0x2c, 0xc8, 0x8f, - 0xc5, 0x2c, 0xc9, 0x8f, 0xc4, 0x2c, 0xc9, 0x8f, 0xc5, 0x2c, 0xc9, 0x90, - 0xc7, 0x2c, 0xc9, 0x8f, 0xc5, 0x2c, 0xca, 0x90, 0xc7, 0x2c, 0xca, 0x90, - 0xc7, 0x2c, 0xca, 0x90, 0xc7, 0x2c, 0xcb, 0x90, 0xc7, 0x2c, 0xcb, 0x90, - 0xc7, 0x2c, 0xcb, 0x90, 0xc7, 0x2c, 0xcc, 0x90, 0xc7, 0x2c, 0xcc, 0x90, - 0xc7, 0x2c, 0xcc, 0x90, 0xc7, 0x2c, 0xcc, 0x91, 0xca, 0x2c, 0xcd, 0x91, - 0xca, 0x2c, 0xcd, 0x91, 0xca, 0x2c, 0xcd, 0x91, 0xca, 0x2c, 0xce, 0x91, - 0xca, 0x2c, 0xce, 0x91, 0xca, 0x2c, 0xce, 0x91, 0xca, 0x2c, 0xce, 0x91, - 0xca, 0x2c, 0xcf, 0x91, 0xca, 0x2c, 0xcf, 0x92, 0xcd, 0x2c, 0xcf, 0x92, - 0xcd, 0x2c, 0xd0, 0x92, 0xcd, 0x2c, 0xd0, 0x92, 0xcd, 0x2c, 0xd0, 0x92, - 0xcd, 0x2c, 0xd0, 0x92, 0xcd, 0x2c, 0xd1, 0x92, 0xcd, 0x2c, 0xd1, 0x92, - 0xcd, 0x2c, 0xd1, 0x92, 0xcd, 0x2c, 0xd2, 0x92, 0xcd, 0x2c, 0xd2, 0x93, - 0xd0, 0x2c, 0xd2, 0x92, 0xcd, 0x2c, 0xd2, 0x93, 0xd0, 0x2c, 0xd3, 0x93, - 0xcf, 0x2c, 0xd3, 0x93, 0xd0, 0x2c, 0xd3, 0x93, 0xcf, 0x2c, 0xd4, 0x93, - 0xd0, 0x2c, 0xd4, 0x93, 0xcf, 0x2c, 0xd4, 0x93, 0xd0, 0x2c, 0xd4, 0x94, - 0xd2, 0x2c, 0xd5, 0x94, 0xd2, 0x2c, 0xd5, 0x94, 0xd2, 0x2c, 0xd5, 0x94, - 0xd2, 0x2c, 0xd6, 0x94, 0xd2, 0x2c, 0xd6, 0x94, 0xd2, 0x2c, 0xd6, 0x94, - 0xd2, 0x2c, 0xd6, 0x94, 0xd2, 0x2c, 0xd7, 0x94, 0xd2, 0x2c, 0xd7, 0x94, - 0xd2, 0x2c, 0xd7, 0x94, 0xd5, 0x2c, 0xd7, 0x94, 0xd2, 0x2c, 0xd8, 0x94, - 0xd5, 0x2c, 0xd8, 0x94, 0xd5, 0x2c, 0xd8, 0x94, 0xd5, 0x2c, 0xd9, 0x94, - 0xd5, 0x2c, 0xd9, 0x94, 0xd5, 0x2c, 0xd9, 0x94, 0xd5, 0x2c, 0xd9, 0x94, - 0xd5, 0x2c, 0xda, 0x95, 0xd7, 0x2c, 0xda, 0x94, 0xd5, 0x2c, 0xda, 0x95, - 0xd7, 0x2c, 0xda, 0x94, 0xd5, 0x2c, 0xdb, 0x95, 0xd7, 0x2c, 0xdb, 0x95, - 0xd7, 0x2c, 0xdb, 0x95, 0xd7, 0x2c, 0xdb, 0x95, 0xd7, 0x2c, 0xdc, 0x95, - 0xd7, 0x2c, 0xdc, 0x95, 0xd7, 0x2c, 0xdc, 0x95, 0xd7, 0x2c, 0xdd, 0x96, - 0xda, 0x2c, 0xdd, 0x96, 0xda, 0x2c, 0xdd, 0x96, 0xda, 0x2c, 0xdd, 0x96, - 0xda, 0x2c, 0xde, 0x96, 0xda, 0x2c, 0xde, 0x96, 0xda, 0x2c, 0xde, 0x96, - 0xda, 0x2c, 0xde, 0x96, 0xda, 0x2c, 0xdf, 0x96, 0xda, 0x2c, 0xdf, 0x96, - 0xda, 0x2c, 0xdf, 0x97, 0xdd, 0x2c, 0xdf, 0x96, 0xda, 0x2c, 0xe0, 0x97, - 0xdd, 0x2c, 0xe0, 0x97, 0xdc, 0x2c, 0xe0, 0x97, 0xdd, 0x2c, 0xe1, 0x97, - 0xdc, 0x2c, 0xe1, 0x97, 0xdd, 0x2c, 0xe1, 0x97, 0xdc, 0x2c, 0xe1, 0x97, - 0xdd, 0x2c, 0xe2, 0x98, 0xdf, 0x2c, 0xe2, 0x97, 0xdd, 0x2c, 0xe2, 0x98, - 0xdf, 0x2c, 0xe2, 0x98, 0xdf, 0x2c, 0xe3, 0x98, 0xdf, 0x2c, 0xe3, 0x98, - 0xdf, 0x2c, 0xe3, 0x98, 0xdf, 0x2c, 0xe3, 0x98, 0xdf, 0x2c, 0xe4, 0x98, - 0xdf, 0x2c, 0xe4, 0x99, 0xe1, 0x2c, 0xe4, 0x99, 0xe2, 0x2c, 0xe4, 0x99, - 0xe1, 0x2c, 0xe5, 0x99, 0xe2, 0x2c, 0xe5, 0x99, 0xe1, 0x2c, 0xe5, 0x99, - 0xe2, 0x2c, 0xe5, 0x99, 0xe1, 0x2c, 0xe6, 0x99, 0xe2, 0x2c, 0xe6, 0x99, - 0xe1, 0x2c, 0xe6, 0x99, 0xe2, 0x2c, 0xe6, 0x99, 0xe1, 0x2c, 0xe7, 0x99, - 0xe2, 0x2c, 0xe7, 0x9a, 0xe4, 0x2c, 0xe7, 0x99, 0xe2, 0x2c, 0xe7, 0x9a, - 0xe4, 0x2c, 0xe8, 0x9a, 0xe4, 0x2c, 0xe8, 0x9a, 0xe4, 0x2c, 0xe8, 0x9a, - 0xe4, 0x2c, 0xe8, 0x9a, 0xe4, 0x2c, 0xe9, 0x9a, 0xe4, 0x2c, 0xe9, 0x9a, - 0xe4, 0x2c, 0xe9, 0x9a, 0xe6, 0x2c, 0xe9, 0x9a, 0xe4, 0x2c, 0xea, 0x9a, - 0xe6, 0x2c, 0xea, 0x9a, 0xe6, 0x2c, 0xea, 0x9a, 0xe6, 0x2c, 0xea, 0x9a, - 0xe6, 0x2c, 0xeb, 0x9a, 0xe6, 0x2c, 0xeb, 0x9a, 0xe6, 0x2c, 0xeb, 0x9a, - 0xe6, 0x2c, 0xeb, 0x9b, 0xe8, 0x2c, 0xec, 0x9b, 0xe9, 0x2c, 0xec, 0x9b, - 0xe8, 0x2c, 0xec, 0x9b, 0xe9, 0x2c, 0xec, 0x9b, 0xe8, 0x2c, 0xec, 0x9b, - 0xe9, 0x2c, 0xed, 0x9b, 0xe8, 0x2c, 0xed, 0x9b, 0xe9, 0x2c, 0xed, 0x9b, - 0xe8, 0x2c, 0xed, 0x9b, 0xe9, 0x2c, 0xee, 0x9c, 0xeb, 0x2c, 0xee, 0x9b, - 0xe9, 0x2c, 0xee, 0x9c, 0xeb, 0x2c, 0xee, 0x9b, 0xe9, 0x2c, 0xef, 0x9c, - 0xeb, 0x2c, 0xef, 0x9c, 0xeb, 0x2c, 0xef, 0x9c, 0xeb, 0x2c, 0xef, 0x9c, - 0xeb, 0x2c, 0xf0, 0x9c, 0xeb, 0x2c, 0xf0, 0x9d, 0xed, 0x2c, 0xf0, 0x9d, - 0xed, 0x2c, 0xf0, 0x9d, 0xed, 0x2c, 0xf1, 0x9d, 0xed, 0x2c, 0xf1, 0x9d, - 0xed, 0x2c, 0xf1, 0x9d, 0xed, 0x2c, 0xf1, 0x9d, 0xed, 0x2c, 0xf2, 0x9d, - 0xed, 0x2c, 0xf2, 0x9d, 0xed, 0x2c, 0xf2, 0x9d, 0xed, 0x2c, 0xf2, 0x9e, - 0xef, 0x2c, 0xf2, 0x9d, 0xed, 0x2c, 0xf3, 0x9e, 0xef, 0x2c, 0xf3, 0x9d, - 0xed, 0x2c, 0xf3, 0x9e, 0xef, 0x2c, 0xf3, 0x9e, 0xef, 0x2c, 0xf4, 0x9e, - 0xef, 0x2c, 0xf4, 0x9e, 0xef, 0x2c, 0xf4, 0x9e, 0xef, 0x2c, 0xf4, 0x9e, - 0xef, 0x2c, 0xf5, 0x9e, 0xef, 0x2c, 0xf5, 0x9f, 0xf2, 0x2c, 0xf5, 0x9e, - 0xef, 0x2c, 0xf5, 0x9f, 0xf2, 0x2c, 0xf5, 0x9f, 0xf1, 0x2c, 0xf6, 0x9f, - 0xf2, 0x2c, 0xf6, 0x9f, 0xf1, 0x2c, 0xf6, 0x9f, 0xf2, 0x2c, 0xf6, 0x9f, - 0xf1, 0x2c, 0xf7, 0x9f, 0xf2, 0x2c, 0xf7, 0x9f, 0xf4, 0x2c, 0xf7, 0x9f, - 0xf4, 0x2c, 0xf7, 0x9f, 0xf4, 0x2c, 0xf8, 0x9f, 0xf4, 0x2c, 0xf8, 0x9f, - 0xf4, 0x2c, 0xf8, 0x9f, 0xf4, 0x2c, 0xf8, 0x9f, 0xf4, 0x2c, 0xf8, 0x9f, - 0xf4, 0x2c, 0xf9, 0x9f, 0xf4, 0x2c, 0xf9, 0x9f, 0xf4, 0x2c, 0xf9, 0xa0, - 0xf6, 0x2c, 0xf9, 0x9f, 0xf4, 0x2c, 0xfa, 0xa0, 0xf6, 0x2c, 0xfa, 0x9f, - 0xf4, 0x2c, 0xfa, 0xa0, 0xf6, 0x2c, 0xfa, 0xa0, 0xf6, 0x2c, 0xfa, 0xa0, - 0xf6, 0x2c, 0xfb, 0xa0, 0xf6, 0x2c, 0xfb, 0xa0, 0xf6, 0x2c, 0xfb, 0xa1, - 0xf8, 0x2c, 0xfb, 0xa0, 0xf6, 0x2c, 0xfc, 0xa1, 0xf8, 0x2c, 0xfc, 0xa0, - 0xf6, 0x2c, 0xfc, 0xa1, 0xf8, 0x2c, 0xfc, 0xa1, 0xf8, 0x2c, 0xfc, 0xa1, - 0xf8, 0x2c, 0xfd, 0xa1, 0xf8, 0x2c, 0xfd, 0xa1, 0xf8, 0x2c, 0xfd, 0xa1, - 0xf8, 0x2c, 0xfd, 0xa1, 0xf8, 0x2c, 0xfe, 0xa2, 0xfa, 0x2c, 0xfe, 0xa2, - 0xfa, 0x2c, 0xfe, 0xa2, 0xfa, 0x2c, 0xfe, 0xa2, 0xfa, 0x2c, 0xfe, 0xa2, - 0xfa, 0x2c, 0xff, 0xa2, 0xfa, 0x2c, 0xff, 0xa2, 0xfa, 0x2c, 0x03, 0x84, - 0x9b, 0x2d, 0x0a, 0x86, 0x9b, 0x2d, 0x0f, 0x84, 0x9b, 0x2d, 0x14, 0x86, - 0x9b, 0x2d, 0x17, 0x84, 0x9b, 0x2d, 0x1b, 0x86, 0x9b, 0x2d, 0x1e, 0x84, - 0x9b, 0x2d, 0x20, 0x86, 0x9b, 0x2d, 0x23, 0x84, 0x9b, 0x2d, 0x25, 0x86, - 0x9b, 0x2d, 0x27, 0x84, 0x9b, 0x2d, 0x29, 0x86, 0x9b, 0x2d, 0x2b, 0x84, - 0x9b, 0x2d, 0x2d, 0x86, 0x9b, 0x2d, 0x2f, 0x84, 0x9b, 0x2d, 0x31, 0x86, - 0x9b, 0x2d, 0x32, 0x84, 0x9b, 0x2d, 0x34, 0x86, 0x9b, 0x2d, 0x35, 0x84, - 0x9b, 0x2d, 0x37, 0x86, 0x9b, 0x2d, 0x38, 0x84, 0x9b, 0x2d, 0x3a, 0x86, - 0x9b, 0x2d, 0x3b, 0x84, 0x9b, 0x2d, 0x3c, 0x86, 0x9b, 0x2d, 0x3e, 0x84, - 0x9b, 0x2d, 0x3f, 0x86, 0x9b, 0x2d, 0x40, 0x84, 0x9b, 0x2d, 0x42, 0x86, - 0x9b, 0x2d, 0x43, 0x84, 0x9b, 0x2d, 0x44, 0x86, 0x9b, 0x2d, 0x45, 0x84, - 0x9b, 0x2d, 0x46, 0x86, 0x9b, 0x2d, 0x47, 0x84, 0x9b, 0x2d, 0x48, 0x86, - 0x9b, 0x2d, 0x49, 0x84, 0x9b, 0x2d, 0x4a, 0x86, 0x9b, 0x2d, 0x4b, 0x84, - 0x9b, 0x2d, 0x4c, 0x86, 0x9b, 0x2d, 0x4d, 0x84, 0x9b, 0x2d, 0x4e, 0x86, - 0x9b, 0x2d, 0x4f, 0x84, 0x9b, 0x2d, 0x50, 0x86, 0x9b, 0x2d, 0x51, 0x84, - 0x9b, 0x2d, 0x52, 0x86, 0x9b, 0x2d, 0x53, 0x84, 0x9b, 0x2d, 0x54, 0x86, - 0x9b, 0x2d, 0x55, 0x84, 0x9b, 0x2d, 0x56, 0x86, 0x9b, 0x2d, 0x57, 0x84, - 0x9b, 0x2d, 0x58, 0x86, 0x9b, 0x2d, 0x58, 0x84, 0x9b, 0x2d, 0x59, 0x86, - 0x9b, 0x2d, 0x5a, 0x84, 0x9b, 0x2d, 0x5b, 0x86, 0x9b, 0x2d, 0x5c, 0x84, - 0x9b, 0x2d, 0x5d, 0x86, 0x9b, 0x2d, 0x5d, 0x84, 0x9b, 0x2d, 0x5e, 0x86, - 0x9b, 0x2d, 0x5f, 0x84, 0x9b, 0x2d, 0x60, 0x86, 0x9b, 0x2d, 0x60, 0x84, - 0x9b, 0x2d, 0x61, 0x86, 0x9b, 0x2d, 0x62, 0x84, 0x9b, 0x2d, 0x63, 0x86, - 0x9b, 0x2d, 0x63, 0x84, 0x9b, 0x2d, 0x64, 0x86, 0x9b, 0x2d, 0x65, 0x84, - 0x9b, 0x2d, 0x66, 0x86, 0x9b, 0x2d, 0x66, 0x84, 0x9b, 0x2d, 0x67, 0x86, - 0x9b, 0x2d, 0x68, 0x84, 0x9b, 0x2d, 0x68, 0x86, 0x9b, 0x2d, 0x69, 0x84, - 0x9b, 0x2d, 0x6a, 0x86, 0x9b, 0x2d, 0x6a, 0x84, 0x9b, 0x2d, 0x6b, 0x86, - 0x9b, 0x2d, 0x6c, 0x84, 0x9b, 0x2d, 0x6c, 0x86, 0x9b, 0x2d, 0x6d, 0x84, - 0x9b, 0x2d, 0x6e, 0x86, 0x9b, 0x2d, 0x6e, 0x84, 0x9b, 0x2d, 0x6f, 0x86, - 0x9b, 0x2d, 0x70, 0x84, 0x9b, 0x2d, 0x70, 0x86, 0x9b, 0x2d, 0x71, 0x84, - 0x9b, 0x2d, 0x72, 0x86, 0x9b, 0x2d, 0x72, 0x84, 0x9b, 0x2d, 0x73, 0x86, - 0x9b, 0x2d, 0x73, 0x84, 0x9b, 0x2d, 0x74, 0x86, 0x9b, 0x2d, 0x75, 0x84, - 0x9b, 0x2d, 0x75, 0x86, 0x9b, 0x2d, 0x76, 0x84, 0x9b, 0x2d, 0x76, 0x86, - 0x9b, 0x2d, 0x77, 0x84, 0x9b, 0x2d, 0x78, 0x86, 0x9b, 0x2d, 0x78, 0x84, - 0x9b, 0x2d, 0x79, 0x86, 0x9b, 0x2d, 0x79, 0x84, 0x9b, 0x2d, 0x7a, 0x86, - 0x9b, 0x2d, 0x7a, 0x84, 0x9b, 0x2d, 0x7b, 0x86, 0x9b, 0x2d, 0x7c, 0x84, - 0x9b, 0x2d, 0x7c, 0x86, 0x9b, 0x2d, 0x7d, 0x84, 0x9b, 0x2d, 0x7d, 0x86, - 0x9b, 0x2d, 0x7e, 0x84, 0x9b, 0x2d, 0x7e, 0x86, 0x9b, 0x2d, 0x7f, 0x84, - 0x9b, 0x2d, 0x7f, 0x84, 0x9c, 0x2d, 0x80, 0x84, 0x9b, 0x2d, 0x81, 0x84, - 0x9c, 0x2d, 0x81, 0x84, 0x9b, 0x2d, 0x82, 0x84, 0x9c, 0x2d, 0x82, 0x84, - 0x9b, 0x2d, 0x83, 0x84, 0x9c, 0x2d, 0x83, 0x84, 0x9b, 0x2d, 0x84, 0x84, - 0x9c, 0x2d, 0x84, 0x84, 0x9b, 0x2d, 0x85, 0x84, 0x9c, 0x2d, 0x85, 0x84, - 0x9b, 0x2d, 0x86, 0x84, 0x9c, 0x2d, 0x86, 0x84, 0x9b, 0x2d, 0x87, 0x84, - 0x9c, 0x2d, 0x87, 0x84, 0x9b, 0x2d, 0x88, 0x84, 0x9c, 0x2d, 0x88, 0x84, - 0x9b, 0x2d, 0x89, 0x84, 0x9c, 0x2d, 0x89, 0x84, 0x9b, 0x2d, 0x8a, 0x84, - 0x9c, 0x2d, 0x8a, 0x84, 0x9b, 0x2d, 0x8b, 0x84, 0x9c, 0x2d, 0x8b, 0x84, - 0x9b, 0x2d, 0x8c, 0x84, 0x9c, 0x2d, 0x8c, 0x84, 0x9b, 0x2d, 0x8d, 0x84, - 0x9c, 0x2d, 0x8d, 0x84, 0x9b, 0x2d, 0x8e, 0x84, 0x9c, 0x2d, 0x8e, 0x84, - 0x9b, 0x2d, 0x8e, 0x84, 0x9c, 0x2d, 0x8f, 0x84, 0x9b, 0x2d, 0x8f, 0x84, - 0x9c, 0x2d, 0x90, 0x84, 0x9b, 0x2d, 0x90, 0x84, 0x9c, 0x2d, 0x91, 0x84, - 0x9b, 0x2d, 0x91, 0x84, 0x9c, 0x2d, 0x92, 0x84, 0x9b, 0x2d, 0x92, 0x84, - 0x9c, 0x2d, 0x93, 0x84, 0x9b, 0x2d, 0x93, 0x84, 0x9c, 0x2d, 0x94, 0x84, - 0x9b, 0x2d, 0x94, 0x84, 0x9c, 0x2d, 0x94, 0x84, 0x9b, 0x2d, 0x95, 0x84, - 0x9c, 0x2d, 0x95, 0x84, 0x9b, 0x2d, 0x96, 0x84, 0x9c, 0x2d, 0x96, 0x84, - 0x9b, 0x2d, 0x97, 0x84, 0x9c, 0x2d, 0x97, 0x84, 0x9b, 0x2d, 0x98, 0x84, - 0x9c, 0x2d, 0x98, 0x84, 0x9b, 0x2d, 0x98, 0x84, 0x9c, 0x2d, 0x99, 0x84, - 0x9b, 0x2d, 0x99, 0x84, 0x9c, 0x2d, 0x9a, 0x84, 0x9b, 0x2d, 0x9a, 0x84, - 0x9c, 0x2d, 0x9a, 0x84, 0x9b, 0x2d, 0x9b, 0x84, 0x9c, 0x2d, 0x9b, 0x84, - 0x9b, 0x2d, 0x9c, 0x84, 0x9c, 0x2d, 0x9c, 0x84, 0x9c, 0x2d, 0x9d, 0x84, - 0x9d, 0x2d, 0x9d, 0x84, 0x9d, 0x2d, 0x9d, 0x84, 0x9d, 0x2d, 0x9e, 0x84, - 0x9e, 0x2d, 0x9e, 0x84, 0x9e, 0x2d, 0x9f, 0x84, 0x9f, 0x2d, 0x9f, 0x84, - 0x9e, 0x2d, 0x9f, 0x84, 0x9f, 0x2d, 0xa0, 0x84, 0x9e, 0x2d, 0xa0, 0x84, - 0x9f, 0x2d, 0xa1, 0x84, 0x9e, 0x2d, 0xa1, 0x84, 0x9f, 0x2d, 0xa1, 0x84, - 0x9e, 0x2d, 0xa2, 0x84, 0x9f, 0x2d, 0xa2, 0x84, 0x9e, 0x2d, 0xa3, 0x84, - 0x9f, 0x2d, 0xa3, 0x85, 0xa2, 0x2d, 0xa3, 0x85, 0xa2, 0x2d, 0xa4, 0x85, - 0xa2, 0x2d, 0xa4, 0x85, 0xa2, 0x2d, 0xa5, 0x85, 0xa2, 0x2d, 0xa5, 0x85, - 0xa2, 0x2d, 0xa5, 0x85, 0xa2, 0x2d, 0xa6, 0x85, 0xa2, 0x2d, 0xa6, 0x85, - 0xa2, 0x2d, 0xa6, 0x86, 0xa6, 0x2d, 0xa7, 0x86, 0xa6, 0x2d, 0xa7, 0x86, - 0xa6, 0x2d, 0xa8, 0x86, 0xa6, 0x2d, 0xa8, 0x86, 0xa6, 0x2d, 0xa8, 0x86, - 0xa6, 0x2d, 0xa9, 0x86, 0xa6, 0x2d, 0xa9, 0x86, 0xa6, 0x2d, 0xaa, 0x86, - 0xa6, 0x2d, 0xaa, 0x86, 0xa6, 0x2d, 0xaa, 0x87, 0xaa, 0x2d, 0xab, 0x86, - 0xa6, 0x2d, 0xab, 0x87, 0xaa, 0x2d, 0xab, 0x87, 0xa9, 0x2d, 0xac, 0x87, - 0xaa, 0x2d, 0xac, 0x87, 0xa9, 0x2d, 0xac, 0x87, 0xaa, 0x2d, 0xad, 0x87, - 0xa9, 0x2d, 0xad, 0x87, 0xaa, 0x2d, 0xae, 0x87, 0xa9, 0x2d, 0xae, 0x87, - 0xaa, 0x2d, 0xae, 0x88, 0xad, 0x2d, 0xaf, 0x88, 0xad, 0x2d, 0xaf, 0x88, - 0xad, 0x2d, 0xaf, 0x88, 0xad, 0x2d, 0xb0, 0x88, 0xad, 0x2d, 0xb0, 0x88, - 0xad, 0x2d, 0xb0, 0x88, 0xad, 0x2d, 0xb1, 0x88, 0xad, 0x2d, 0xb1, 0x88, - 0xad, 0x2d, 0xb2, 0x88, 0xad, 0x2d, 0xb2, 0x89, 0xb0, 0x2d, 0xb2, 0x89, - 0xb0, 0x2d, 0xb3, 0x89, 0xb0, 0x2d, 0xb3, 0x89, 0xb0, 0x2d, 0xb3, 0x89, - 0xb0, 0x2d, 0xb4, 0x89, 0xb2, 0x2d, 0xb4, 0x89, 0xb0, 0x2d, 0xb4, 0x89, - 0xb2, 0x2d, 0xb5, 0x89, 0xb2, 0x2d, 0xb5, 0x89, 0xb2, 0x2d, 0xb5, 0x89, - 0xb2, 0x2d, 0xb6, 0x89, 0xb2, 0x2d, 0xb6, 0x8a, 0xb3, 0x2d, 0xb6, 0x8a, - 0xb4, 0x2d, 0xb7, 0x8a, 0xb3, 0x2d, 0xb7, 0x8a, 0xb4, 0x2d, 0xb7, 0x8a, - 0xb3, 0x2d, 0xb8, 0x8a, 0xb4, 0x2d, 0xb8, 0x8b, 0xb7, 0x2d, 0xb8, 0x8b, - 0xb7, 0x2d, 0xb9, 0x8b, 0xb7, 0x2d, 0xb9, 0x8b, 0xb7, 0x2d, 0xb9, 0x8b, - 0xb7, 0x2d, 0xba, 0x8b, 0xb7, 0x2d, 0xba, 0x8b, 0xb7, 0x2d, 0xba, 0x8b, - 0xb7, 0x2d, 0xbb, 0x8b, 0xb7, 0x2d, 0xbb, 0x8b, 0xb7, 0x2d, 0xbb, 0x8c, - 0xba, 0x2d, 0xbc, 0x8b, 0xb7, 0x2d, 0xbc, 0x8c, 0xba, 0x2d, 0xbc, 0x8c, - 0xba, 0x2d, 0xbd, 0x8c, 0xba, 0x2d, 0xbd, 0x8c, 0xba, 0x2d, 0xbd, 0x8c, - 0xba, 0x2d, 0xbe, 0x8c, 0xba, 0x2d, 0xbe, 0x8c, 0xba, 0x2d, 0xbe, 0x8d, - 0xbd, 0x2d, 0xbf, 0x8c, 0xba, 0x2d, 0xbf, 0x8d, 0xbd, 0x2d, 0xbf, 0x8d, - 0xbd, 0x2d, 0xc0, 0x8d, 0xbd, 0x2d, 0xc0, 0x8d, 0xbd, 0x2d, 0xc0, 0x8d, - 0xbd, 0x2d, 0xc1, 0x8d, 0xbd, 0x2d, 0xc1, 0x8d, 0xbd, 0x2d, 0xc1, 0x8d, - 0xbd, 0x2d, 0xc1, 0x8d, 0xbd, 0x2d, 0xc2, 0x8e, 0xc0, 0x2d, 0xc2, 0x8e, - 0xc0, 0x2d, 0xc2, 0x8e, 0xc0, 0x2d, 0xc3, 0x8e, 0xc0, 0x2d, 0xc3, 0x8e, - 0xc0, 0x2d, 0xc3, 0x8e, 0xc0, 0x2d, 0xc4, 0x8e, 0xc0, 0x2d, 0xc4, 0x8e, - 0xc0, 0x2d, 0xc4, 0x8e, 0xc0, 0x2d, 0xc5, 0x8e, 0xc0, 0x2d, 0xc5, 0x8e, - 0xc3, 0x2d, 0xc5, 0x8e, 0xc0, 0x2d, 0xc6, 0x8e, 0xc3, 0x2d, 0xc6, 0x8e, - 0xc3, 0x2d, 0xc6, 0x8e, 0xc3, 0x2d, 0xc6, 0x8e, 0xc3, 0x2d, 0xc7, 0x8e, - 0xc3, 0x2d, 0xc7, 0x8e, 0xc3, 0x2d, 0xc7, 0x8e, 0xc3, 0x2d, 0xc8, 0x8f, - 0xc6, 0x2d, 0xc8, 0x8e, 0xc3, 0x2d, 0xc8, 0x8f, 0xc6, 0x2d, 0xc9, 0x8f, - 0xc6, 0x2d, 0xc9, 0x8f, 0xc6, 0x2d, 0xc9, 0x8f, 0xc6, 0x2d, 0xc9, 0x8f, - 0xc6, 0x2d, 0xca, 0x8f, 0xc6, 0x2d, 0xca, 0x8f, 0xc6, 0x2d, 0xca, 0x90, - 0xc9, 0x2d, 0xcb, 0x90, 0xc9, 0x2d, 0xcb, 0x90, 0xc9, 0x2d, 0xcb, 0x90, - 0xc9, 0x2d, 0xcc, 0x90, 0xc9, 0x2d, 0xcc, 0x90, 0xc9, 0x2d, 0xcc, 0x90, - 0xc9, 0x2d, 0xcc, 0x90, 0xc9, 0x2d, 0xcd, 0x90, 0xc9, 0x2d, 0xcd, 0x90, - 0xc9, 0x2d, 0xcd, 0x90, 0xc9, 0x2d, 0xce, 0x90, 0xc9, 0x2d, 0xce, 0x91, - 0xcc, 0x2d, 0xce, 0x91, 0xcb, 0x2d, 0xce, 0x91, 0xcc, 0x2d, 0xcf, 0x91, - 0xcb, 0x2d, 0xcf, 0x91, 0xcc, 0x2d, 0xcf, 0x91, 0xcb, 0x2d, 0xd0, 0x91, - 0xcc, 0x2d, 0xd0, 0x91, 0xcb, 0x2d, 0xd0, 0x91, 0xcc, 0x2d, 0xd0, 0x92, - 0xce, 0x2d, 0xd1, 0x92, 0xce, 0x2d, 0xd1, 0x92, 0xce, 0x2d, 0xd1, 0x92, - 0xce, 0x2d, 0xd2, 0x92, 0xce, 0x2d, 0xd2, 0x92, 0xce, 0x2d, 0xd2, 0x92, - 0xce, 0x2d, 0xd2, 0x92, 0xce, 0x2d, 0xd3, 0x92, 0xce, 0x2d, 0xd3, 0x92, - 0xce, 0x2d, 0xd3, 0x93, 0xd1, 0x2d, 0xd4, 0x92, 0xce, 0x2d, 0xd4, 0x93, - 0xd1, 0x2d, 0xd4, 0x93, 0xd1, 0x2d, 0xd4, 0x93, 0xd1, 0x2d, 0xd5, 0x93, - 0xd1, 0x2d, 0xd5, 0x93, 0xd1, 0x2d, 0xd5, 0x93, 0xd1, 0x2d, 0xd6, 0x93, - 0xd1, 0x2d, 0xd6, 0x94, 0xd4, 0x2d, 0xd6, 0x93, 0xd1, 0x2d, 0xd6, 0x94, - 0xd4, 0x2d, 0xd7, 0x94, 0xd3, 0x2d, 0xd7, 0x94, 0xd4, 0x2d, 0xd7, 0x94, - 0xd3, 0x2d, 0xd7, 0x94, 0xd4, 0x2d, 0xd8, 0x94, 0xd3, 0x2d, 0xd8, 0x94, - 0xd4, 0x2d, 0xd8, 0x95, 0xd6, 0x2d, 0xd9, 0x95, 0xd6, 0x2d, 0xd9, 0x95, - 0xd6, 0x2d, 0xd9, 0x95, 0xd6, 0x2d, 0xd9, 0x95, 0xd6, 0x2d, 0xda, 0x95, - 0xd6, 0x2d, 0xda, 0x95, 0xd6, 0x2d, 0xda, 0x95, 0xd6, 0x2d, 0xda, 0x95, - 0xd6, 0x2d, 0xdb, 0x95, 0xd6, 0x2d, 0xdb, 0x96, 0xd9, 0x2d, 0xdb, 0x95, - 0xd6, 0x2d, 0xdb, 0x96, 0xd9, 0x2d, 0xdc, 0x95, 0xd6, 0x2d, 0xdc, 0x96, - 0xd9, 0x2d, 0xdc, 0x96, 0xd9, 0x2d, 0xdd, 0x96, 0xd9, 0x2d, 0xdd, 0x96, - 0xd9, 0x2d, 0xdd, 0x96, 0xd9, 0x2d, 0xdd, 0x96, 0xd9, 0x2d, 0xde, 0x96, - 0xd9, 0x2d, 0xde, 0x97, 0xdb, 0x2d, 0xde, 0x96, 0xd9, 0x2d, 0xde, 0x97, - 0xdb, 0x2d, 0xdf, 0x97, 0xdb, 0x2d, 0xdf, 0x97, 0xdb, 0x2d, 0xdf, 0x97, - 0xdb, 0x2d, 0xdf, 0x97, 0xdb, 0x2d, 0xe0, 0x97, 0xdb, 0x2d, 0xe0, 0x97, - 0xdb, 0x2d, 0xe0, 0x98, 0xde, 0x2d, 0xe1, 0x98, 0xde, 0x2d, 0xe1, 0x98, - 0xde, 0x2d, 0xe1, 0x98, 0xde, 0x2d, 0xe1, 0x98, 0xde, 0x2d, 0xe2, 0x98, - 0xde, 0x2d, 0xe2, 0x98, 0xde, 0x2d, 0xe2, 0x98, 0xde, 0x2d, 0xe2, 0x98, - 0xde, 0x2d, 0xe3, 0x98, 0xde, 0x2d, 0xe3, 0x98, 0xe0, 0x2d, 0xe3, 0x98, - 0xde, 0x2d, 0xe3, 0x98, 0xe0, 0x2d, 0xe4, 0x98, 0xe0, 0x2d, 0xe4, 0x98, - 0xe0, 0x2d, 0xe4, 0x98, 0xe0, 0x2d, 0xe4, 0x98, 0xe0, 0x2d, 0xe5, 0x98, - 0xe0, 0x2d, 0xe5, 0x98, 0xe0, 0x2d, 0xe5, 0x99, 0xe3, 0x2d, 0xe5, 0x98, - 0xe0, 0x2d, 0xe6, 0x99, 0xe3, 0x2d, 0xe6, 0x98, 0xe0, 0x2d, 0xe6, 0x99, - 0xe3, 0x2d, 0xe6, 0x99, 0xe2, 0x2d, 0xe7, 0x99, 0xe3, 0x2d, 0xe7, 0x99, - 0xe2, 0x2d, 0xe7, 0x99, 0xe3, 0x2d, 0xe7, 0x99, 0xe2, 0x2d, 0xe8, 0x99, - 0xe3, 0x2d, 0xe8, 0x9a, 0xe5, 0x2d, 0xe8, 0x9a, 0xe5, 0x2d, 0xe8, 0x9a, - 0xe5, 0x2d, 0xe9, 0x9a, 0xe5, 0x2d, 0xe9, 0x9a, 0xe5, 0x2d, 0xe9, 0x9a, - 0xe5, 0x2d, 0xe9, 0x9a, 0xe5, 0x2d, 0xea, 0x9a, 0xe5, 0x2d, 0xea, 0x9a, - 0xe5, 0x2d, 0xea, 0x9a, 0xe5, 0x2d, 0xea, 0x9b, 0xe7, 0x2d, 0xeb, 0x9a, - 0xe5, 0x2d, 0xeb, 0x9b, 0xe7, 0x2d, 0xeb, 0x9b, 0xe7, 0x2d, 0xeb, 0x9b, - 0xe7, 0x2d, 0xec, 0x9b, 0xe7, 0x2d, 0xec, 0x9b, 0xe7, 0x2d, 0xec, 0x9b, - 0xe7, 0x2d, 0xec, 0x9b, 0xe7, 0x2d, 0xec, 0x9c, 0xea, 0x2d, 0xed, 0x9c, - 0xea, 0x2d, 0xed, 0x9c, 0xea, 0x2d, 0xed, 0x9c, 0xea, 0x2d, 0xed, 0x9c, - 0xea, 0x2d, 0xee, 0x9c, 0xea, 0x2d, 0xee, 0x9c, 0xea, 0x2d, 0xee, 0x9c, - 0xea, 0x2d, 0xee, 0x9c, 0xea, 0x2d, 0xef, 0x9c, 0xea, 0x2d, 0xef, 0x9d, - 0xec, 0x2d, 0xef, 0x9c, 0xea, 0x2d, 0xef, 0x9d, 0xec, 0x2d, 0xf0, 0x9c, - 0xea, 0x2d, 0xf0, 0x9d, 0xec, 0x2d, 0xf0, 0x9d, 0xec, 0x2d, 0xf0, 0x9d, - 0xec, 0x2d, 0xf1, 0x9d, 0xec, 0x2d, 0xf1, 0x9d, 0xec, 0x2d, 0xf1, 0x9d, - 0xee, 0x2d, 0xf1, 0x9d, 0xec, 0x2d, 0xf2, 0x9d, 0xee, 0x2d, 0xf2, 0x9d, - 0xec, 0x2d, 0xf2, 0x9d, 0xee, 0x2d, 0xf2, 0x9d, 0xee, 0x2d, 0xf2, 0x9d, - 0xee, 0x2d, 0xf3, 0x9d, 0xee, 0x2d, 0xf3, 0x9d, 0xee, 0x2d, 0xf3, 0x9e, - 0xf0, 0x2d, 0xf3, 0x9e, 0xf1, 0x2d, 0xf4, 0x9e, 0xf0, 0x2d, 0xf4, 0x9e, - 0xf1, 0x2d, 0xf4, 0x9e, 0xf0, 0x2d, 0xf4, 0x9e, 0xf1, 0x2d, 0xf5, 0x9e, - 0xf0, 0x2d, 0xf5, 0x9e, 0xf1, 0x2d, 0xf5, 0x9e, 0xf0, 0x2d, 0xf5, 0x9e, - 0xf1, 0x2d, 0xf5, 0x9e, 0xf0, 0x2d, 0xf6, 0x9e, 0xf1, 0x2d, 0xf6, 0x9f, - 0xf3, 0x2d, 0xf6, 0x9e, 0xf1, 0x2d, 0xf6, 0x9f, 0xf3, 0x2d, 0xf7, 0x9f, - 0xf2, 0x2d, 0xf7, 0x9f, 0xf3, 0x2d, 0xf7, 0x9f, 0xf2, 0x2d, 0xf7, 0x9f, - 0xf3, 0x2d, 0xf8, 0x9f, 0xf2, 0x2d, 0xf8, 0x9f, 0xf3, 0x2d, 0xf8, 0xa0, - 0xf5, 0x2d, 0xf8, 0x9f, 0xf3, 0x2d, 0xf8, 0xa0, 0xf5, 0x2d, 0xf9, 0x9f, - 0xf3, 0x2d, 0xf9, 0xa0, 0xf5, 0x2d, 0xf9, 0xa0, 0xf5, 0x2d, 0xf9, 0xa0, - 0xf5, 0x2d, 0xfa, 0xa0, 0xf5, 0x2d, 0xfa, 0xa0, 0xf5, 0x2d, 0xfa, 0xa1, - 0xf7, 0x2d, 0xfa, 0xa1, 0xf7, 0x2d, 0xfa, 0xa1, 0xf7, 0x2d, 0xfb, 0xa1, - 0xf7, 0x2d, 0xfb, 0xa1, 0xf7, 0x2d, 0xfb, 0xa1, 0xf7, 0x2d, 0xfb, 0xa1, - 0xf7, 0x2d, 0xfc, 0xa1, 0xf7, 0x2d, 0xfc, 0xa1, 0xf7, 0x2d, 0xfc, 0xa1, - 0xf7, 0x2d, 0xfc, 0xa1, 0xf9, 0x2d, 0xfc, 0xa1, 0xf7, 0x2d, 0xfd, 0xa1, - 0xf9, 0x2d, 0xfd, 0xa1, 0xf7, 0x2d, 0xfd, 0xa1, 0xf9, 0x2d, 0xfd, 0xa1, - 0xf9, 0x2d, 0xfe, 0xa1, 0xf9, 0x2d, 0xfe, 0xa1, 0xf9, 0x2d, 0xfe, 0xa1, - 0xf9, 0x2d, 0xfe, 0xa1, 0xf9, 0x2d, 0xfe, 0xa1, 0xf9, 0x2d, 0xff, 0xa2, - 0xfb, 0x2d, 0xff, 0xa1, 0xf9, 0x2d, 0x03, 0x83, 0x9b, 0x2d, 0x0a, 0x83, - 0x9b, 0x2d, 0x0f, 0x83, 0x9b, 0x2d, 0x14, 0x83, 0x9b, 0x2d, 0x17, 0x83, - 0x9b, 0x2d, 0x1b, 0x83, 0x9b, 0x2d, 0x1e, 0x83, 0x9b, 0x2d, 0x20, 0x86, - 0x9b, 0x2d, 0x23, 0x83, 0x9b, 0x2d, 0x25, 0x86, 0x9b, 0x2d, 0x27, 0x83, - 0x9b, 0x2d, 0x29, 0x86, 0x9b, 0x2d, 0x2b, 0x83, 0x9b, 0x2d, 0x2d, 0x86, - 0x9b, 0x2d, 0x2f, 0x83, 0x9b, 0x2d, 0x31, 0x86, 0x9b, 0x2d, 0x32, 0x83, - 0x9b, 0x2d, 0x34, 0x86, 0x9b, 0x2d, 0x35, 0x83, 0x9b, 0x2d, 0x37, 0x86, - 0x9b, 0x2d, 0x38, 0x83, 0x9b, 0x2d, 0x3a, 0x86, 0x9b, 0x2d, 0x3b, 0x83, - 0x9b, 0x2d, 0x3c, 0x86, 0x9b, 0x2d, 0x3e, 0x83, 0x9b, 0x2d, 0x3f, 0x86, - 0x9b, 0x2d, 0x40, 0x83, 0x9b, 0x2d, 0x42, 0x86, 0x9b, 0x2d, 0x43, 0x83, - 0x9b, 0x2d, 0x44, 0x86, 0x9b, 0x2d, 0x45, 0x83, 0x9b, 0x2d, 0x46, 0x86, - 0x9b, 0x2d, 0x47, 0x83, 0x9b, 0x2d, 0x48, 0x86, 0x9b, 0x2d, 0x49, 0x83, - 0x9b, 0x2d, 0x4a, 0x86, 0x9b, 0x2d, 0x4b, 0x83, 0x9b, 0x2d, 0x4c, 0x86, - 0x9b, 0x2d, 0x4d, 0x83, 0x9b, 0x2d, 0x4e, 0x86, 0x9b, 0x2d, 0x4f, 0x83, - 0x9b, 0x2d, 0x50, 0x86, 0x9b, 0x2d, 0x51, 0x83, 0x9b, 0x2d, 0x52, 0x86, - 0x9b, 0x2d, 0x53, 0x83, 0x9b, 0x2d, 0x54, 0x86, 0x9b, 0x2d, 0x55, 0x83, - 0x9b, 0x2d, 0x56, 0x86, 0x9b, 0x2d, 0x57, 0x83, 0x9b, 0x2d, 0x58, 0x86, - 0x9b, 0x2d, 0x58, 0x83, 0x9b, 0x2d, 0x59, 0x86, 0x9b, 0x2d, 0x5a, 0x83, - 0x9b, 0x2d, 0x5b, 0x86, 0x9b, 0x2d, 0x5c, 0x83, 0x9b, 0x2d, 0x5d, 0x86, - 0x9b, 0x2d, 0x5d, 0x83, 0x9b, 0x2d, 0x5e, 0x86, 0x9b, 0x2d, 0x5f, 0x83, - 0x9b, 0x2d, 0x60, 0x86, 0x9b, 0x2d, 0x60, 0x83, 0x9b, 0x2d, 0x61, 0x86, - 0x9b, 0x2d, 0x62, 0x83, 0x9b, 0x2d, 0x63, 0x86, 0x9b, 0x2d, 0x63, 0x83, - 0x9b, 0x2d, 0x64, 0x86, 0x9b, 0x2d, 0x65, 0x83, 0x9b, 0x2d, 0x66, 0x86, - 0x9b, 0x2d, 0x66, 0x83, 0x9b, 0x2d, 0x67, 0x86, 0x9b, 0x2d, 0x68, 0x83, - 0x9b, 0x2d, 0x68, 0x86, 0x9b, 0x2d, 0x69, 0x83, 0x9b, 0x2d, 0x6a, 0x86, - 0x9b, 0x2d, 0x6a, 0x83, 0x9b, 0x2d, 0x6b, 0x86, 0x9b, 0x2d, 0x6c, 0x83, - 0x9b, 0x2d, 0x6c, 0x86, 0x9b, 0x2d, 0x6d, 0x83, 0x9b, 0x2d, 0x6e, 0x86, - 0x9b, 0x2d, 0x6e, 0x83, 0x9b, 0x2d, 0x6f, 0x83, 0x9c, 0x2d, 0x70, 0x83, - 0x9b, 0x2d, 0x70, 0x83, 0x9c, 0x2d, 0x71, 0x83, 0x9b, 0x2d, 0x72, 0x83, - 0x9c, 0x2d, 0x72, 0x83, 0x9b, 0x2d, 0x73, 0x83, 0x9c, 0x2d, 0x73, 0x83, - 0x9b, 0x2d, 0x74, 0x83, 0x9c, 0x2d, 0x75, 0x83, 0x9b, 0x2d, 0x75, 0x83, - 0x9c, 0x2d, 0x76, 0x83, 0x9b, 0x2d, 0x76, 0x83, 0x9c, 0x2d, 0x77, 0x83, - 0x9b, 0x2d, 0x78, 0x83, 0x9c, 0x2d, 0x78, 0x83, 0x9b, 0x2d, 0x79, 0x83, - 0x9c, 0x2d, 0x79, 0x83, 0x9b, 0x2d, 0x7a, 0x83, 0x9c, 0x2d, 0x7a, 0x83, - 0x9b, 0x2d, 0x7b, 0x83, 0x9c, 0x2d, 0x7c, 0x83, 0x9b, 0x2d, 0x7c, 0x83, - 0x9c, 0x2d, 0x7d, 0x83, 0x9b, 0x2d, 0x7d, 0x83, 0x9c, 0x2d, 0x7e, 0x83, - 0x9b, 0x2d, 0x7e, 0x83, 0x9c, 0x2d, 0x7f, 0x83, 0x9b, 0x2d, 0x7f, 0x83, - 0x9c, 0x2d, 0x80, 0x83, 0x9b, 0x2d, 0x81, 0x83, 0x9c, 0x2d, 0x81, 0x83, - 0x9b, 0x2d, 0x82, 0x83, 0x9c, 0x2d, 0x82, 0x83, 0x9b, 0x2d, 0x83, 0x83, - 0x9c, 0x2d, 0x83, 0x83, 0x9b, 0x2d, 0x84, 0x83, 0x9c, 0x2d, 0x84, 0x83, - 0x9b, 0x2d, 0x85, 0x83, 0x9c, 0x2d, 0x85, 0x83, 0x9b, 0x2d, 0x86, 0x83, - 0x9c, 0x2d, 0x86, 0x83, 0x9b, 0x2d, 0x87, 0x83, 0x9c, 0x2d, 0x87, 0x83, - 0x9b, 0x2d, 0x88, 0x83, 0x9c, 0x2d, 0x88, 0x83, 0x9b, 0x2d, 0x89, 0x83, - 0x9c, 0x2d, 0x89, 0x83, 0x9b, 0x2d, 0x8a, 0x83, 0x9c, 0x2d, 0x8a, 0x83, - 0x9b, 0x2d, 0x8b, 0x83, 0x9c, 0x2d, 0x8b, 0x83, 0x9b, 0x2d, 0x8c, 0x83, - 0x9c, 0x2d, 0x8c, 0x83, 0x9b, 0x2d, 0x8d, 0x83, 0x9c, 0x2d, 0x8d, 0x83, - 0x9b, 0x2d, 0x8e, 0x83, 0x9c, 0x2d, 0x8e, 0x83, 0x9b, 0x2d, 0x8e, 0x83, - 0x9c, 0x2d, 0x8f, 0x83, 0x9b, 0x2d, 0x8f, 0x83, 0x9c, 0x2d, 0x90, 0x83, - 0x9b, 0x2d, 0x90, 0x83, 0x9c, 0x2d, 0x91, 0x83, 0x9b, 0x2d, 0x91, 0x83, - 0x9c, 0x2d, 0x92, 0x83, 0x9b, 0x2d, 0x92, 0x83, 0x9c, 0x2d, 0x93, 0x83, - 0x9b, 0x2d, 0x93, 0x83, 0x9c, 0x2d, 0x94, 0x83, 0x9b, 0x2d, 0x94, 0x83, - 0x9c, 0x2d, 0x94, 0x83, 0x9b, 0x2d, 0x95, 0x83, 0x9c, 0x2d, 0x95, 0x83, - 0x9b, 0x2d, 0x96, 0x83, 0x9c, 0x2d, 0x96, 0x83, 0x9b, 0x2d, 0x97, 0x83, - 0x9c, 0x2d, 0x97, 0x83, 0x9b, 0x2d, 0x98, 0x83, 0x9c, 0x2d, 0x98, 0x83, - 0x9b, 0x2d, 0x98, 0x83, 0x9c, 0x2d, 0x99, 0x83, 0x9b, 0x2d, 0x99, 0x83, - 0x9c, 0x2d, 0x9a, 0x83, 0x9b, 0x2d, 0x9a, 0x83, 0x9c, 0x2d, 0x9a, 0x83, - 0x9b, 0x2d, 0x9b, 0x83, 0x9c, 0x2d, 0x9b, 0x83, 0x9b, 0x2d, 0x9c, 0x83, - 0x9c, 0x2d, 0x9c, 0x83, 0x9c, 0x2d, 0x9d, 0x83, 0x9d, 0x2d, 0x9d, 0x83, - 0x9c, 0x2d, 0x9d, 0x83, 0x9d, 0x2d, 0x9e, 0x83, 0x9c, 0x2d, 0x9e, 0x83, - 0x9d, 0x2d, 0x9f, 0x83, 0x9c, 0x2d, 0x9f, 0x83, 0x9d, 0x2d, 0x9f, 0x83, - 0x9c, 0x2d, 0xa0, 0x83, 0x9d, 0x2d, 0xa0, 0x83, 0x9c, 0x2d, 0xa1, 0x83, - 0x9d, 0x2d, 0xa1, 0x84, 0xa0, 0x2d, 0xa1, 0x84, 0xa1, 0x2d, 0xa2, 0x84, - 0xa0, 0x2d, 0xa2, 0x84, 0xa1, 0x2d, 0xa3, 0x84, 0xa0, 0x2d, 0xa3, 0x84, - 0xa1, 0x2d, 0xa3, 0x84, 0xa0, 0x2d, 0xa4, 0x84, 0xa1, 0x2d, 0xa4, 0x84, - 0xa0, 0x2d, 0xa5, 0x84, 0xa1, 0x2d, 0xa5, 0x85, 0xa4, 0x2d, 0xa5, 0x85, - 0xa4, 0x2d, 0xa6, 0x85, 0xa4, 0x2d, 0xa6, 0x85, 0xa4, 0x2d, 0xa6, 0x85, - 0xa4, 0x2d, 0xa7, 0x85, 0xa4, 0x2d, 0xa7, 0x85, 0xa4, 0x2d, 0xa8, 0x85, - 0xa4, 0x2d, 0xa8, 0x85, 0xa4, 0x2d, 0xa8, 0x86, 0xa8, 0x2d, 0xa9, 0x86, - 0xa7, 0x2d, 0xa9, 0x86, 0xa8, 0x2d, 0xaa, 0x86, 0xa7, 0x2d, 0xaa, 0x86, - 0xa8, 0x2d, 0xaa, 0x86, 0xa7, 0x2d, 0xab, 0x86, 0xa8, 0x2d, 0xab, 0x86, - 0xa7, 0x2d, 0xab, 0x86, 0xa8, 0x2d, 0xac, 0x87, 0xab, 0x2d, 0xac, 0x87, - 0xab, 0x2d, 0xac, 0x87, 0xab, 0x2d, 0xad, 0x87, 0xab, 0x2d, 0xad, 0x87, - 0xab, 0x2d, 0xae, 0x87, 0xab, 0x2d, 0xae, 0x87, 0xab, 0x2d, 0xae, 0x87, - 0xab, 0x2d, 0xaf, 0x87, 0xab, 0x2d, 0xaf, 0x87, 0xab, 0x2d, 0xaf, 0x87, - 0xab, 0x2d, 0xb0, 0x87, 0xab, 0x2d, 0xb0, 0x88, 0xaf, 0x2d, 0xb0, 0x88, - 0xae, 0x2d, 0xb1, 0x88, 0xaf, 0x2d, 0xb1, 0x88, 0xae, 0x2d, 0xb2, 0x88, - 0xaf, 0x2d, 0xb2, 0x88, 0xae, 0x2d, 0xb2, 0x88, 0xaf, 0x2d, 0xb3, 0x88, - 0xae, 0x2d, 0xb3, 0x88, 0xaf, 0x2d, 0xb3, 0x89, 0xb2, 0x2d, 0xb4, 0x89, - 0xb2, 0x2d, 0xb4, 0x89, 0xb2, 0x2d, 0xb4, 0x89, 0xb2, 0x2d, 0xb5, 0x89, - 0xb2, 0x2d, 0xb5, 0x89, 0xb2, 0x2d, 0xb5, 0x89, 0xb2, 0x2d, 0xb6, 0x89, - 0xb2, 0x2d, 0xb6, 0x89, 0xb2, 0x2d, 0xb6, 0x89, 0xb2, 0x2d, 0xb7, 0x8a, - 0xb5, 0x2d, 0xb7, 0x8a, 0xb5, 0x2d, 0xb7, 0x8a, 0xb5, 0x2d, 0xb8, 0x8a, - 0xb5, 0x2d, 0xb8, 0x8a, 0xb5, 0x2d, 0xb8, 0x8a, 0xb5, 0x2d, 0xb9, 0x8a, - 0xb5, 0x2d, 0xb9, 0x8a, 0xb5, 0x2d, 0xb9, 0x8a, 0xb5, 0x2d, 0xba, 0x8b, - 0xb8, 0x2d, 0xba, 0x8a, 0xb5, 0x2d, 0xba, 0x8b, 0xb8, 0x2d, 0xbb, 0x8b, - 0xb8, 0x2d, 0xbb, 0x8b, 0xb8, 0x2d, 0xbb, 0x8b, 0xb8, 0x2d, 0xbc, 0x8b, - 0xb8, 0x2d, 0xbc, 0x8b, 0xb8, 0x2d, 0xbc, 0x8b, 0xb8, 0x2d, 0xbd, 0x8c, - 0xbb, 0x2d, 0xbd, 0x8c, 0xbc, 0x2d, 0xbd, 0x8c, 0xbb, 0x2d, 0xbe, 0x8c, - 0xbc, 0x2d, 0xbe, 0x8c, 0xbb, 0x2d, 0xbe, 0x8c, 0xbc, 0x2d, 0xbf, 0x8c, - 0xbb, 0x2d, 0xbf, 0x8c, 0xbc, 0x2d, 0xbf, 0x8c, 0xbb, 0x2d, 0xc0, 0x8c, - 0xbc, 0x2d, 0xc0, 0x8d, 0xbf, 0x2d, 0xc0, 0x8c, 0xbc, 0x2d, 0xc1, 0x8d, - 0xbf, 0x2d, 0xc1, 0x8d, 0xbe, 0x2d, 0xc1, 0x8d, 0xbf, 0x2d, 0xc1, 0x8d, - 0xbe, 0x2d, 0xc2, 0x8d, 0xbf, 0x2d, 0xc2, 0x8d, 0xbe, 0x2d, 0xc2, 0x8d, - 0xbf, 0x2d, 0xc3, 0x8d, 0xbe, 0x2d, 0xc3, 0x8d, 0xbf, 0x2d, 0xc3, 0x8e, - 0xc1, 0x2d, 0xc4, 0x8e, 0xc1, 0x2d, 0xc4, 0x8e, 0xc1, 0x2d, 0xc4, 0x8e, - 0xc1, 0x2d, 0xc5, 0x8e, 0xc1, 0x2d, 0xc5, 0x8e, 0xc1, 0x2d, 0xc5, 0x8e, - 0xc1, 0x2d, 0xc6, 0x8e, 0xc1, 0x2d, 0xc6, 0x8e, 0xc1, 0x2d, 0xc6, 0x8f, - 0xc4, 0x2d, 0xc6, 0x8f, 0xc5, 0x2d, 0xc7, 0x8f, 0xc4, 0x2d, 0xc7, 0x8f, - 0xc5, 0x2d, 0xc7, 0x8f, 0xc4, 0x2d, 0xc8, 0x8f, 0xc5, 0x2d, 0xc8, 0x8f, - 0xc4, 0x2d, 0xc8, 0x8f, 0xc5, 0x2d, 0xc9, 0x8f, 0xc4, 0x2d, 0xc9, 0x8f, - 0xc5, 0x2d, 0xc9, 0x90, 0xc7, 0x2d, 0xc9, 0x8f, 0xc5, 0x2d, 0xca, 0x90, - 0xc7, 0x2d, 0xca, 0x90, 0xc7, 0x2d, 0xca, 0x90, 0xc7, 0x2d, 0xcb, 0x90, - 0xc7, 0x2d, 0xcb, 0x90, 0xc7, 0x2d, 0xcb, 0x90, 0xc7, 0x2d, 0xcc, 0x90, - 0xc7, 0x2d, 0xcc, 0x91, 0xca, 0x2d, 0xcc, 0x90, 0xc7, 0x2d, 0xcc, 0x91, - 0xca, 0x2d, 0xcd, 0x91, 0xca, 0x2d, 0xcd, 0x91, 0xca, 0x2d, 0xcd, 0x91, - 0xca, 0x2d, 0xce, 0x91, 0xca, 0x2d, 0xce, 0x91, 0xca, 0x2d, 0xce, 0x91, - 0xca, 0x2d, 0xce, 0x91, 0xca, 0x2d, 0xcf, 0x91, 0xca, 0x2d, 0xcf, 0x92, - 0xcd, 0x2d, 0xcf, 0x92, 0xcd, 0x2d, 0xd0, 0x92, 0xcd, 0x2d, 0xd0, 0x92, - 0xcd, 0x2d, 0xd0, 0x92, 0xcd, 0x2d, 0xd0, 0x92, 0xcd, 0x2d, 0xd1, 0x92, - 0xcd, 0x2d, 0xd1, 0x92, 0xcd, 0x2d, 0xd1, 0x92, 0xcd, 0x2d, 0xd2, 0x92, - 0xcd, 0x2d, 0xd2, 0x93, 0xd0, 0x2d, 0xd2, 0x92, 0xcd, 0x2d, 0xd2, 0x93, - 0xd0, 0x2d, 0xd3, 0x93, 0xcf, 0x2d, 0xd3, 0x93, 0xd0, 0x2d, 0xd3, 0x93, - 0xcf, 0x2d, 0xd4, 0x93, 0xd0, 0x2d, 0xd4, 0x93, 0xcf, 0x2d, 0xd4, 0x93, - 0xd0, 0x2d, 0xd4, 0x94, 0xd2, 0x2d, 0xd5, 0x94, 0xd2, 0x2d, 0xd5, 0x94, - 0xd2, 0x2d, 0xd5, 0x94, 0xd2, 0x2d, 0xd6, 0x94, 0xd2, 0x2d, 0xd6, 0x94, - 0xd2, 0x2d, 0xd6, 0x94, 0xd2, 0x2d, 0xd6, 0x94, 0xd2, 0x2d, 0xd7, 0x94, - 0xd2, 0x2d, 0xd7, 0x94, 0xd2, 0x2d, 0xd7, 0x94, 0xd5, 0x2d, 0xd7, 0x94, - 0xd2, 0x2d, 0xd8, 0x94, 0xd5, 0x2d, 0xd8, 0x94, 0xd5, 0x2d, 0xd8, 0x94, - 0xd5, 0x2d, 0xd9, 0x94, 0xd5, 0x2d, 0xd9, 0x94, 0xd5, 0x2d, 0xd9, 0x94, - 0xd5, 0x2d, 0xd9, 0x94, 0xd5, 0x2d, 0xda, 0x95, 0xd7, 0x2d, 0xda, 0x94, - 0xd5, 0x2d, 0xda, 0x95, 0xd7, 0x2d, 0xda, 0x95, 0xd7, 0x2d, 0xdb, 0x95, - 0xd7, 0x2d, 0xdb, 0x95, 0xd7, 0x2d, 0xdb, 0x95, 0xd7, 0x2d, 0xdb, 0x95, - 0xd7, 0x2d, 0xdc, 0x95, 0xd7, 0x2d, 0xdc, 0x96, 0xda, 0x2d, 0xdc, 0x96, - 0xda, 0x2d, 0xdd, 0x96, 0xda, 0x2d, 0xdd, 0x96, 0xda, 0x2d, 0xdd, 0x96, - 0xda, 0x2d, 0xdd, 0x96, 0xda, 0x2d, 0xde, 0x96, 0xda, 0x2d, 0xde, 0x96, - 0xda, 0x2d, 0xde, 0x96, 0xda, 0x2d, 0xde, 0x96, 0xda, 0x2d, 0xdf, 0x96, - 0xda, 0x2d, 0xdf, 0x96, 0xda, 0x2d, 0xdf, 0x97, 0xdd, 0x2d, 0xdf, 0x96, - 0xda, 0x2d, 0xe0, 0x97, 0xdd, 0x2d, 0xe0, 0x97, 0xdc, 0x2d, 0xe0, 0x97, - 0xdd, 0x2d, 0xe1, 0x97, 0xdc, 0x2d, 0xe1, 0x97, 0xdd, 0x2d, 0xe1, 0x97, - 0xdc, 0x2d, 0xe1, 0x97, 0xdd, 0x2d, 0xe2, 0x98, 0xdf, 0x2d, 0xe2, 0x97, - 0xdd, 0x2d, 0xe2, 0x98, 0xdf, 0x2d, 0xe2, 0x98, 0xdf, 0x2d, 0xe3, 0x98, - 0xdf, 0x2d, 0xe3, 0x98, 0xdf, 0x2d, 0xe3, 0x98, 0xdf, 0x2d, 0xe3, 0x98, - 0xdf, 0x2d, 0xe4, 0x98, 0xdf, 0x2d, 0xe4, 0x99, 0xe1, 0x2d, 0xe4, 0x99, - 0xe2, 0x2d, 0xe4, 0x99, 0xe1, 0x2d, 0xe5, 0x99, 0xe2, 0x2d, 0xe5, 0x99, - 0xe1, 0x2d, 0xe5, 0x99, 0xe2, 0x2d, 0xe5, 0x99, 0xe1, 0x2d, 0xe6, 0x99, - 0xe2, 0x2d, 0xe6, 0x99, 0xe1, 0x2d, 0xe6, 0x99, 0xe2, 0x2d, 0xe6, 0x9a, - 0xe4, 0x2d, 0xe7, 0x99, 0xe2, 0x2d, 0xe7, 0x9a, 0xe4, 0x2d, 0xe7, 0x99, - 0xe2, 0x2d, 0xe7, 0x9a, 0xe4, 0x2d, 0xe8, 0x9a, 0xe4, 0x2d, 0xe8, 0x9a, - 0xe4, 0x2d, 0xe8, 0x9a, 0xe4, 0x2d, 0xe8, 0x9a, 0xe4, 0x2d, 0xe9, 0x9a, - 0xe4, 0x2d, 0xe9, 0x9a, 0xe4, 0x2d, 0xe9, 0x9a, 0xe6, 0x2d, 0xe9, 0x9a, - 0xe4, 0x2d, 0xea, 0x9a, 0xe6, 0x2d, 0xea, 0x9a, 0xe6, 0x2d, 0xea, 0x9a, - 0xe6, 0x2d, 0xea, 0x9a, 0xe6, 0x2d, 0xeb, 0x9a, 0xe6, 0x2d, 0xeb, 0x9a, - 0xe6, 0x2d, 0xeb, 0x9a, 0xe6, 0x2d, 0xeb, 0x9b, 0xe8, 0x2d, 0xec, 0x9b, - 0xe9, 0x2d, 0xec, 0x9b, 0xe8, 0x2d, 0xec, 0x9b, 0xe9, 0x2d, 0xec, 0x9b, - 0xe8, 0x2d, 0xec, 0x9b, 0xe9, 0x2d, 0xed, 0x9b, 0xe8, 0x2d, 0xed, 0x9b, - 0xe9, 0x2d, 0xed, 0x9b, 0xe8, 0x2d, 0xed, 0x9b, 0xe9, 0x2d, 0xee, 0x9c, - 0xeb, 0x2d, 0xee, 0x9b, 0xe9, 0x2d, 0xee, 0x9c, 0xeb, 0x2d, 0xee, 0x9c, - 0xeb, 0x2d, 0xef, 0x9c, 0xeb, 0x2d, 0xef, 0x9c, 0xeb, 0x2d, 0xef, 0x9c, - 0xeb, 0x2d, 0xef, 0x9c, 0xeb, 0x2d, 0xf0, 0x9c, 0xeb, 0x2d, 0xf0, 0x9d, - 0xed, 0x2d, 0xf0, 0x9d, 0xed, 0x2d, 0xf0, 0x9d, 0xed, 0x2d, 0xf1, 0x9d, - 0xed, 0x2d, 0xf1, 0x9d, 0xed, 0x2d, 0xf1, 0x9d, 0xed, 0x2d, 0xf1, 0x9d, - 0xed, 0x2d, 0xf2, 0x9d, 0xed, 0x2d, 0xf2, 0x9d, 0xed, 0x2d, 0xf2, 0x9d, - 0xed, 0x2d, 0xf2, 0x9e, 0xef, 0x2d, 0xf2, 0x9d, 0xed, 0x2d, 0xf3, 0x9e, - 0xef, 0x2d, 0xf3, 0x9d, 0xed, 0x2d, 0xf3, 0x9e, 0xef, 0x2d, 0xf3, 0x9e, - 0xef, 0x2d, 0xf4, 0x9e, 0xef, 0x2d, 0xf4, 0x9e, 0xef, 0x2d, 0xf4, 0x9e, - 0xef, 0x2d, 0xf4, 0x9f, 0xf2, 0x2d, 0xf5, 0x9e, 0xef, 0x2d, 0xf5, 0x9f, - 0xf2, 0x2d, 0xf5, 0x9e, 0xef, 0x2d, 0xf5, 0x9f, 0xf2, 0x2d, 0xf5, 0x9f, - 0xf1, 0x2d, 0xf6, 0x9f, 0xf2, 0x2d, 0xf6, 0x9f, 0xf1, 0x2d, 0xf6, 0x9f, - 0xf2, 0x2d, 0xf6, 0x9f, 0xf1, 0x2d, 0xf7, 0x9f, 0xf2, 0x2d, 0xf7, 0x9f, - 0xf4, 0x2d, 0xf7, 0x9f, 0xf4, 0x2d, 0xf7, 0x9f, 0xf4, 0x2d, 0xf8, 0x9f, - 0xf4, 0x2d, 0xf8, 0x9f, 0xf4, 0x2d, 0xf8, 0x9f, 0xf4, 0x2d, 0xf8, 0x9f, - 0xf4, 0x2d, 0xf8, 0x9f, 0xf4, 0x2d, 0xf9, 0x9f, 0xf4, 0x2d, 0xf9, 0x9f, - 0xf4, 0x2d, 0xf9, 0xa0, 0xf6, 0x2d, 0xf9, 0x9f, 0xf4, 0x2d, 0xfa, 0xa0, - 0xf6, 0x2d, 0xfa, 0x9f, 0xf4, 0x2d, 0xfa, 0xa0, 0xf6, 0x2d, 0xfa, 0xa0, - 0xf6, 0x2d, 0xfa, 0xa0, 0xf6, 0x2d, 0xfb, 0xa0, 0xf6, 0x2d, 0xfb, 0xa0, - 0xf6, 0x2d, 0xfb, 0xa1, 0xf8, 0x2d, 0xfb, 0xa0, 0xf6, 0x2d, 0xfc, 0xa1, - 0xf8, 0x2d, 0xfc, 0xa0, 0xf6, 0x2d, 0xfc, 0xa1, 0xf8, 0x2d, 0xfc, 0xa1, - 0xf8, 0x2d, 0xfc, 0xa1, 0xf8, 0x2d, 0xfd, 0xa1, 0xf8, 0x2d, 0xfd, 0xa1, - 0xf8, 0x2d, 0xfd, 0xa2, 0xfa, 0x2d, 0xfd, 0xa2, 0xfa, 0x2d, 0xfe, 0xa2, - 0xfa, 0x2d, 0xfe, 0xa2, 0xfa, 0x2d, 0xfe, 0xa2, 0xfa, 0x2d, 0xfe, 0xa2, - 0xfa, 0x2d, 0xfe, 0xa2, 0xfa, 0x2d, 0xff, 0xa2, 0xfa, 0x2d, 0xff, 0xa2, - 0xfa, 0x2d, 0x03, 0x84, 0x9b, 0x2e, 0x0a, 0x86, 0x9b, 0x2e, 0x0f, 0x84, - 0x9b, 0x2e, 0x14, 0x86, 0x9b, 0x2e, 0x17, 0x84, 0x9b, 0x2e, 0x1b, 0x86, - 0x9b, 0x2e, 0x1e, 0x84, 0x9b, 0x2e, 0x20, 0x86, 0x9b, 0x2e, 0x23, 0x84, - 0x9b, 0x2e, 0x25, 0x86, 0x9b, 0x2e, 0x27, 0x84, 0x9b, 0x2e, 0x29, 0x86, - 0x9b, 0x2e, 0x2b, 0x84, 0x9b, 0x2e, 0x2d, 0x86, 0x9b, 0x2e, 0x2f, 0x84, - 0x9b, 0x2e, 0x31, 0x86, 0x9b, 0x2e, 0x32, 0x84, 0x9b, 0x2e, 0x34, 0x86, - 0x9b, 0x2e, 0x35, 0x84, 0x9b, 0x2e, 0x37, 0x86, 0x9b, 0x2e, 0x38, 0x84, - 0x9b, 0x2e, 0x3a, 0x86, 0x9b, 0x2e, 0x3b, 0x84, 0x9b, 0x2e, 0x3c, 0x86, - 0x9b, 0x2e, 0x3e, 0x84, 0x9b, 0x2e, 0x3f, 0x86, 0x9b, 0x2e, 0x40, 0x84, - 0x9b, 0x2e, 0x42, 0x86, 0x9b, 0x2e, 0x43, 0x84, 0x9b, 0x2e, 0x44, 0x86, - 0x9b, 0x2e, 0x45, 0x84, 0x9b, 0x2e, 0x46, 0x86, 0x9b, 0x2e, 0x47, 0x84, - 0x9b, 0x2e, 0x48, 0x86, 0x9b, 0x2e, 0x49, 0x84, 0x9b, 0x2e, 0x4a, 0x86, - 0x9b, 0x2e, 0x4b, 0x84, 0x9b, 0x2e, 0x4c, 0x86, 0x9b, 0x2e, 0x4d, 0x84, - 0x9b, 0x2e, 0x4e, 0x86, 0x9b, 0x2e, 0x4f, 0x84, 0x9b, 0x2e, 0x50, 0x86, - 0x9b, 0x2e, 0x51, 0x84, 0x9b, 0x2e, 0x52, 0x86, 0x9b, 0x2e, 0x53, 0x84, - 0x9b, 0x2e, 0x54, 0x86, 0x9b, 0x2e, 0x55, 0x84, 0x9b, 0x2e, 0x56, 0x86, - 0x9b, 0x2e, 0x57, 0x84, 0x9b, 0x2e, 0x58, 0x86, 0x9b, 0x2e, 0x58, 0x84, - 0x9b, 0x2e, 0x59, 0x86, 0x9b, 0x2e, 0x5a, 0x84, 0x9b, 0x2e, 0x5b, 0x86, - 0x9b, 0x2e, 0x5c, 0x84, 0x9b, 0x2e, 0x5d, 0x86, 0x9b, 0x2e, 0x5d, 0x84, - 0x9b, 0x2e, 0x5e, 0x86, 0x9b, 0x2e, 0x5f, 0x84, 0x9b, 0x2e, 0x60, 0x86, - 0x9b, 0x2e, 0x60, 0x84, 0x9b, 0x2e, 0x61, 0x86, 0x9b, 0x2e, 0x62, 0x84, - 0x9b, 0x2e, 0x63, 0x86, 0x9b, 0x2e, 0x63, 0x84, 0x9b, 0x2e, 0x64, 0x86, - 0x9b, 0x2e, 0x65, 0x84, 0x9b, 0x2e, 0x66, 0x86, 0x9b, 0x2e, 0x66, 0x84, - 0x9b, 0x2e, 0x67, 0x86, 0x9b, 0x2e, 0x68, 0x84, 0x9b, 0x2e, 0x68, 0x86, - 0x9b, 0x2e, 0x69, 0x84, 0x9b, 0x2e, 0x6a, 0x86, 0x9b, 0x2e, 0x6a, 0x84, - 0x9b, 0x2e, 0x6b, 0x86, 0x9b, 0x2e, 0x6c, 0x84, 0x9b, 0x2e, 0x6c, 0x86, - 0x9b, 0x2e, 0x6d, 0x84, 0x9b, 0x2e, 0x6e, 0x86, 0x9b, 0x2e, 0x6e, 0x84, - 0x9b, 0x2e, 0x6f, 0x86, 0x9b, 0x2e, 0x70, 0x84, 0x9b, 0x2e, 0x70, 0x86, - 0x9b, 0x2e, 0x71, 0x84, 0x9b, 0x2e, 0x72, 0x86, 0x9b, 0x2e, 0x72, 0x84, - 0x9b, 0x2e, 0x73, 0x86, 0x9b, 0x2e, 0x73, 0x84, 0x9b, 0x2e, 0x74, 0x86, - 0x9b, 0x2e, 0x75, 0x84, 0x9b, 0x2e, 0x75, 0x86, 0x9b, 0x2e, 0x76, 0x84, - 0x9b, 0x2e, 0x76, 0x86, 0x9b, 0x2e, 0x77, 0x84, 0x9b, 0x2e, 0x78, 0x86, - 0x9b, 0x2e, 0x78, 0x84, 0x9b, 0x2e, 0x79, 0x86, 0x9b, 0x2e, 0x79, 0x84, - 0x9b, 0x2e, 0x7a, 0x86, 0x9b, 0x2e, 0x7a, 0x84, 0x9b, 0x2e, 0x7b, 0x86, - 0x9b, 0x2e, 0x7c, 0x84, 0x9b, 0x2e, 0x7c, 0x86, 0x9b, 0x2e, 0x7d, 0x84, - 0x9b, 0x2e, 0x7d, 0x86, 0x9b, 0x2e, 0x7e, 0x84, 0x9b, 0x2e, 0x7e, 0x86, - 0x9b, 0x2e, 0x7f, 0x84, 0x9b, 0x2e, 0x7f, 0x86, 0x9b, 0x2e, 0x80, 0x84, - 0x9b, 0x2e, 0x81, 0x86, 0x9b, 0x2e, 0x81, 0x84, 0x9b, 0x2e, 0x82, 0x84, - 0x9c, 0x2e, 0x82, 0x84, 0x9b, 0x2e, 0x83, 0x84, 0x9c, 0x2e, 0x83, 0x84, - 0x9b, 0x2e, 0x84, 0x84, 0x9c, 0x2e, 0x84, 0x84, 0x9b, 0x2e, 0x85, 0x84, - 0x9c, 0x2e, 0x85, 0x84, 0x9b, 0x2e, 0x86, 0x84, 0x9c, 0x2e, 0x86, 0x84, - 0x9b, 0x2e, 0x87, 0x84, 0x9c, 0x2e, 0x87, 0x84, 0x9b, 0x2e, 0x88, 0x84, - 0x9c, 0x2e, 0x88, 0x84, 0x9b, 0x2e, 0x89, 0x84, 0x9c, 0x2e, 0x89, 0x84, - 0x9b, 0x2e, 0x8a, 0x84, 0x9c, 0x2e, 0x8a, 0x84, 0x9b, 0x2e, 0x8b, 0x84, - 0x9c, 0x2e, 0x8b, 0x84, 0x9b, 0x2e, 0x8c, 0x84, 0x9c, 0x2e, 0x8c, 0x84, - 0x9b, 0x2e, 0x8d, 0x84, 0x9c, 0x2e, 0x8d, 0x84, 0x9b, 0x2e, 0x8e, 0x84, - 0x9c, 0x2e, 0x8e, 0x84, 0x9b, 0x2e, 0x8e, 0x84, 0x9c, 0x2e, 0x8f, 0x84, - 0x9b, 0x2e, 0x8f, 0x84, 0x9c, 0x2e, 0x90, 0x84, 0x9b, 0x2e, 0x90, 0x84, - 0x9c, 0x2e, 0x91, 0x84, 0x9b, 0x2e, 0x91, 0x84, 0x9c, 0x2e, 0x92, 0x84, - 0x9b, 0x2e, 0x92, 0x84, 0x9c, 0x2e, 0x93, 0x84, 0x9b, 0x2e, 0x93, 0x84, - 0x9c, 0x2e, 0x94, 0x84, 0x9b, 0x2e, 0x94, 0x84, 0x9c, 0x2e, 0x94, 0x84, - 0x9b, 0x2e, 0x95, 0x84, 0x9c, 0x2e, 0x95, 0x84, 0x9b, 0x2e, 0x96, 0x84, - 0x9c, 0x2e, 0x96, 0x84, 0x9b, 0x2e, 0x97, 0x84, 0x9c, 0x2e, 0x97, 0x84, - 0x9b, 0x2e, 0x98, 0x84, 0x9c, 0x2e, 0x98, 0x84, 0x9b, 0x2e, 0x98, 0x84, - 0x9c, 0x2e, 0x99, 0x84, 0x9b, 0x2e, 0x99, 0x84, 0x9c, 0x2e, 0x9a, 0x84, - 0x9b, 0x2e, 0x9a, 0x84, 0x9c, 0x2e, 0x9a, 0x84, 0x9b, 0x2e, 0x9b, 0x84, - 0x9c, 0x2e, 0x9b, 0x84, 0x9b, 0x2e, 0x9c, 0x84, 0x9c, 0x2e, 0x9c, 0x84, - 0x9c, 0x2e, 0x9d, 0x84, 0x9d, 0x2e, 0x9d, 0x84, 0x9d, 0x2e, 0x9d, 0x84, - 0x9d, 0x2e, 0x9e, 0x84, 0x9e, 0x2e, 0x9e, 0x84, 0x9e, 0x2e, 0x9f, 0x84, - 0x9f, 0x2e, 0x9f, 0x84, 0x9e, 0x2e, 0x9f, 0x84, 0x9f, 0x2e, 0xa0, 0x84, - 0x9e, 0x2e, 0xa0, 0x84, 0x9f, 0x2e, 0xa1, 0x84, 0x9e, 0x2e, 0xa1, 0x84, - 0x9f, 0x2e, 0xa1, 0x84, 0x9e, 0x2e, 0xa2, 0x84, 0x9f, 0x2e, 0xa2, 0x84, - 0x9e, 0x2e, 0xa3, 0x84, 0x9f, 0x2e, 0xa3, 0x85, 0xa2, 0x2e, 0xa3, 0x85, - 0xa2, 0x2e, 0xa4, 0x85, 0xa2, 0x2e, 0xa4, 0x85, 0xa2, 0x2e, 0xa5, 0x85, - 0xa2, 0x2e, 0xa5, 0x85, 0xa2, 0x2e, 0xa5, 0x85, 0xa2, 0x2e, 0xa6, 0x85, - 0xa2, 0x2e, 0xa6, 0x85, 0xa2, 0x2e, 0xa6, 0x86, 0xa6, 0x2e, 0xa7, 0x86, - 0xa6, 0x2e, 0xa7, 0x86, 0xa6, 0x2e, 0xa8, 0x86, 0xa6, 0x2e, 0xa8, 0x86, - 0xa6, 0x2e, 0xa8, 0x86, 0xa6, 0x2e, 0xa9, 0x86, 0xa6, 0x2e, 0xa9, 0x86, - 0xa6, 0x2e, 0xaa, 0x86, 0xa6, 0x2e, 0xaa, 0x86, 0xa6, 0x2e, 0xaa, 0x87, - 0xaa, 0x2e, 0xab, 0x87, 0xa9, 0x2e, 0xab, 0x87, 0xaa, 0x2e, 0xab, 0x87, - 0xa9, 0x2e, 0xac, 0x87, 0xaa, 0x2e, 0xac, 0x87, 0xa9, 0x2e, 0xac, 0x87, - 0xaa, 0x2e, 0xad, 0x87, 0xa9, 0x2e, 0xad, 0x87, 0xaa, 0x2e, 0xae, 0x88, - 0xad, 0x2e, 0xae, 0x88, 0xad, 0x2e, 0xae, 0x88, 0xad, 0x2e, 0xaf, 0x88, - 0xad, 0x2e, 0xaf, 0x88, 0xad, 0x2e, 0xaf, 0x88, 0xad, 0x2e, 0xb0, 0x88, - 0xad, 0x2e, 0xb0, 0x88, 0xad, 0x2e, 0xb0, 0x88, 0xad, 0x2e, 0xb1, 0x88, - 0xad, 0x2e, 0xb1, 0x88, 0xad, 0x2e, 0xb2, 0x88, 0xad, 0x2e, 0xb2, 0x89, - 0xb0, 0x2e, 0xb2, 0x89, 0xb0, 0x2e, 0xb3, 0x89, 0xb0, 0x2e, 0xb3, 0x89, - 0xb0, 0x2e, 0xb3, 0x89, 0xb0, 0x2e, 0xb4, 0x89, 0xb2, 0x2e, 0xb4, 0x89, - 0xb0, 0x2e, 0xb4, 0x89, 0xb2, 0x2e, 0xb5, 0x89, 0xb2, 0x2e, 0xb5, 0x89, - 0xb2, 0x2e, 0xb5, 0x89, 0xb2, 0x2e, 0xb6, 0x89, 0xb2, 0x2e, 0xb6, 0x8a, - 0xb3, 0x2e, 0xb6, 0x8a, 0xb4, 0x2e, 0xb7, 0x8a, 0xb3, 0x2e, 0xb7, 0x8a, - 0xb4, 0x2e, 0xb7, 0x8a, 0xb3, 0x2e, 0xb8, 0x8a, 0xb4, 0x2e, 0xb8, 0x8b, - 0xb7, 0x2e, 0xb8, 0x8b, 0xb7, 0x2e, 0xb9, 0x8b, 0xb7, 0x2e, 0xb9, 0x8b, - 0xb7, 0x2e, 0xb9, 0x8b, 0xb7, 0x2e, 0xba, 0x8b, 0xb7, 0x2e, 0xba, 0x8b, - 0xb7, 0x2e, 0xba, 0x8b, 0xb7, 0x2e, 0xbb, 0x8b, 0xb7, 0x2e, 0xbb, 0x8b, - 0xb7, 0x2e, 0xbb, 0x8c, 0xba, 0x2e, 0xbc, 0x8b, 0xb7, 0x2e, 0xbc, 0x8c, - 0xba, 0x2e, 0xbc, 0x8c, 0xba, 0x2e, 0xbd, 0x8c, 0xba, 0x2e, 0xbd, 0x8c, - 0xba, 0x2e, 0xbd, 0x8c, 0xba, 0x2e, 0xbe, 0x8c, 0xba, 0x2e, 0xbe, 0x8c, - 0xba, 0x2e, 0xbe, 0x8d, 0xbd, 0x2e, 0xbf, 0x8c, 0xba, 0x2e, 0xbf, 0x8d, - 0xbd, 0x2e, 0xbf, 0x8d, 0xbd, 0x2e, 0xc0, 0x8d, 0xbd, 0x2e, 0xc0, 0x8d, - 0xbd, 0x2e, 0xc0, 0x8d, 0xbd, 0x2e, 0xc1, 0x8d, 0xbd, 0x2e, 0xc1, 0x8d, - 0xbd, 0x2e, 0xc1, 0x8e, 0xc0, 0x2e, 0xc1, 0x8e, 0xc0, 0x2e, 0xc2, 0x8e, - 0xc0, 0x2e, 0xc2, 0x8e, 0xc0, 0x2e, 0xc2, 0x8e, 0xc0, 0x2e, 0xc3, 0x8e, - 0xc0, 0x2e, 0xc3, 0x8e, 0xc0, 0x2e, 0xc3, 0x8e, 0xc0, 0x2e, 0xc4, 0x8e, - 0xc0, 0x2e, 0xc4, 0x8e, 0xc0, 0x2e, 0xc4, 0x8e, 0xc0, 0x2e, 0xc5, 0x8e, - 0xc0, 0x2e, 0xc5, 0x8e, 0xc3, 0x2e, 0xc5, 0x8e, 0xc3, 0x2e, 0xc6, 0x8e, - 0xc3, 0x2e, 0xc6, 0x8e, 0xc3, 0x2e, 0xc6, 0x8e, 0xc3, 0x2e, 0xc6, 0x8e, - 0xc3, 0x2e, 0xc7, 0x8e, 0xc3, 0x2e, 0xc7, 0x8e, 0xc3, 0x2e, 0xc7, 0x8e, - 0xc3, 0x2e, 0xc8, 0x8f, 0xc6, 0x2e, 0xc8, 0x8e, 0xc3, 0x2e, 0xc8, 0x8f, - 0xc6, 0x2e, 0xc9, 0x8f, 0xc6, 0x2e, 0xc9, 0x8f, 0xc6, 0x2e, 0xc9, 0x8f, - 0xc6, 0x2e, 0xc9, 0x8f, 0xc6, 0x2e, 0xca, 0x8f, 0xc6, 0x2e, 0xca, 0x8f, - 0xc6, 0x2e, 0xca, 0x90, 0xc9, 0x2e, 0xcb, 0x90, 0xc9, 0x2e, 0xcb, 0x90, - 0xc9, 0x2e, 0xcb, 0x90, 0xc9, 0x2e, 0xcc, 0x90, 0xc9, 0x2e, 0xcc, 0x90, - 0xc9, 0x2e, 0xcc, 0x90, 0xc9, 0x2e, 0xcc, 0x90, 0xc9, 0x2e, 0xcd, 0x90, - 0xc9, 0x2e, 0xcd, 0x90, 0xc9, 0x2e, 0xcd, 0x91, 0xcc, 0x2e, 0xce, 0x90, - 0xc9, 0x2e, 0xce, 0x91, 0xcc, 0x2e, 0xce, 0x91, 0xcb, 0x2e, 0xce, 0x91, - 0xcc, 0x2e, 0xcf, 0x91, 0xcb, 0x2e, 0xcf, 0x91, 0xcc, 0x2e, 0xcf, 0x91, - 0xcb, 0x2e, 0xd0, 0x91, 0xcc, 0x2e, 0xd0, 0x91, 0xcb, 0x2e, 0xd0, 0x91, - 0xcc, 0x2e, 0xd0, 0x92, 0xce, 0x2e, 0xd1, 0x92, 0xce, 0x2e, 0xd1, 0x92, - 0xce, 0x2e, 0xd1, 0x92, 0xce, 0x2e, 0xd2, 0x92, 0xce, 0x2e, 0xd2, 0x92, - 0xce, 0x2e, 0xd2, 0x92, 0xce, 0x2e, 0xd2, 0x92, 0xce, 0x2e, 0xd3, 0x92, - 0xce, 0x2e, 0xd3, 0x92, 0xce, 0x2e, 0xd3, 0x93, 0xd1, 0x2e, 0xd4, 0x92, - 0xce, 0x2e, 0xd4, 0x93, 0xd1, 0x2e, 0xd4, 0x93, 0xd1, 0x2e, 0xd4, 0x93, - 0xd1, 0x2e, 0xd5, 0x93, 0xd1, 0x2e, 0xd5, 0x93, 0xd1, 0x2e, 0xd5, 0x93, - 0xd1, 0x2e, 0xd6, 0x93, 0xd1, 0x2e, 0xd6, 0x94, 0xd4, 0x2e, 0xd6, 0x93, - 0xd1, 0x2e, 0xd6, 0x94, 0xd4, 0x2e, 0xd7, 0x94, 0xd3, 0x2e, 0xd7, 0x94, - 0xd4, 0x2e, 0xd7, 0x94, 0xd3, 0x2e, 0xd7, 0x94, 0xd4, 0x2e, 0xd8, 0x94, - 0xd3, 0x2e, 0xd8, 0x94, 0xd4, 0x2e, 0xd8, 0x95, 0xd6, 0x2e, 0xd9, 0x95, - 0xd6, 0x2e, 0xd9, 0x95, 0xd6, 0x2e, 0xd9, 0x95, 0xd6, 0x2e, 0xd9, 0x95, - 0xd6, 0x2e, 0xda, 0x95, 0xd6, 0x2e, 0xda, 0x95, 0xd6, 0x2e, 0xda, 0x95, - 0xd6, 0x2e, 0xda, 0x95, 0xd6, 0x2e, 0xdb, 0x95, 0xd6, 0x2e, 0xdb, 0x96, - 0xd9, 0x2e, 0xdb, 0x95, 0xd6, 0x2e, 0xdb, 0x96, 0xd9, 0x2e, 0xdc, 0x96, - 0xd9, 0x2e, 0xdc, 0x96, 0xd9, 0x2e, 0xdc, 0x96, 0xd9, 0x2e, 0xdd, 0x96, - 0xd9, 0x2e, 0xdd, 0x96, 0xd9, 0x2e, 0xdd, 0x96, 0xd9, 0x2e, 0xdd, 0x97, - 0xdb, 0x2e, 0xde, 0x96, 0xd9, 0x2e, 0xde, 0x97, 0xdb, 0x2e, 0xde, 0x96, - 0xd9, 0x2e, 0xde, 0x97, 0xdb, 0x2e, 0xdf, 0x97, 0xdb, 0x2e, 0xdf, 0x97, - 0xdb, 0x2e, 0xdf, 0x97, 0xdb, 0x2e, 0xdf, 0x97, 0xdb, 0x2e, 0xe0, 0x97, - 0xdb, 0x2e, 0xe0, 0x97, 0xdb, 0x2e, 0xe0, 0x98, 0xde, 0x2e, 0xe1, 0x98, - 0xde, 0x2e, 0xe1, 0x98, 0xde, 0x2e, 0xe1, 0x98, 0xde, 0x2e, 0xe1, 0x98, - 0xde, 0x2e, 0xe2, 0x98, 0xde, 0x2e, 0xe2, 0x98, 0xde, 0x2e, 0xe2, 0x98, - 0xde, 0x2e, 0xe2, 0x98, 0xde, 0x2e, 0xe3, 0x98, 0xde, 0x2e, 0xe3, 0x98, - 0xe0, 0x2e, 0xe3, 0x98, 0xde, 0x2e, 0xe3, 0x98, 0xe0, 0x2e, 0xe4, 0x98, - 0xe0, 0x2e, 0xe4, 0x98, 0xe0, 0x2e, 0xe4, 0x98, 0xe0, 0x2e, 0xe4, 0x98, - 0xe0, 0x2e, 0xe5, 0x98, 0xe0, 0x2e, 0xe5, 0x98, 0xe0, 0x2e, 0xe5, 0x99, - 0xe3, 0x2e, 0xe5, 0x98, 0xe0, 0x2e, 0xe6, 0x99, 0xe3, 0x2e, 0xe6, 0x99, - 0xe2, 0x2e, 0xe6, 0x99, 0xe3, 0x2e, 0xe6, 0x99, 0xe2, 0x2e, 0xe7, 0x99, - 0xe3, 0x2e, 0xe7, 0x99, 0xe2, 0x2e, 0xe7, 0x99, 0xe3, 0x2e, 0xe7, 0x9a, - 0xe5, 0x2e, 0xe8, 0x9a, 0xe5, 0x2e, 0xe8, 0x9a, 0xe5, 0x2e, 0xe8, 0x9a, - 0xe5, 0x2e, 0xe8, 0x9a, 0xe5, 0x2e, 0xe9, 0x9a, 0xe5, 0x2e, 0xe9, 0x9a, - 0xe5, 0x2e, 0xe9, 0x9a, 0xe5, 0x2e, 0xe9, 0x9a, 0xe5, 0x2e, 0xea, 0x9a, - 0xe5, 0x2e, 0xea, 0x9a, 0xe5, 0x2e, 0xea, 0x9a, 0xe5, 0x2e, 0xea, 0x9b, - 0xe7, 0x2e, 0xeb, 0x9a, 0xe5, 0x2e, 0xeb, 0x9b, 0xe7, 0x2e, 0xeb, 0x9b, - 0xe7, 0x2e, 0xeb, 0x9b, 0xe7, 0x2e, 0xec, 0x9b, 0xe7, 0x2e, 0xec, 0x9b, - 0xe7, 0x2e, 0xec, 0x9b, 0xe7, 0x2e, 0xec, 0x9b, 0xe7, 0x2e, 0xec, 0x9c, - 0xea, 0x2e, 0xed, 0x9c, 0xea, 0x2e, 0xed, 0x9c, 0xea, 0x2e, 0xed, 0x9c, - 0xea, 0x2e, 0xed, 0x9c, 0xea, 0x2e, 0xee, 0x9c, 0xea, 0x2e, 0xee, 0x9c, - 0xea, 0x2e, 0xee, 0x9c, 0xea, 0x2e, 0xee, 0x9c, 0xea, 0x2e, 0xef, 0x9c, - 0xea, 0x2e, 0xef, 0x9d, 0xec, 0x2e, 0xef, 0x9c, 0xea, 0x2e, 0xef, 0x9d, - 0xec, 0x2e, 0xf0, 0x9d, 0xec, 0x2e, 0xf0, 0x9d, 0xec, 0x2e, 0xf0, 0x9d, - 0xec, 0x2e, 0xf0, 0x9d, 0xec, 0x2e, 0xf1, 0x9d, 0xec, 0x2e, 0xf1, 0x9d, - 0xec, 0x2e, 0xf1, 0x9d, 0xee, 0x2e, 0xf1, 0x9d, 0xec, 0x2e, 0xf2, 0x9d, - 0xee, 0x2e, 0xf2, 0x9d, 0xec, 0x2e, 0xf2, 0x9d, 0xee, 0x2e, 0xf2, 0x9d, - 0xee, 0x2e, 0xf2, 0x9d, 0xee, 0x2e, 0xf3, 0x9d, 0xee, 0x2e, 0xf3, 0x9d, - 0xee, 0x2e, 0xf3, 0x9e, 0xf0, 0x2e, 0xf3, 0x9e, 0xf1, 0x2e, 0xf4, 0x9e, - 0xf0, 0x2e, 0xf4, 0x9e, 0xf1, 0x2e, 0xf4, 0x9e, 0xf0, 0x2e, 0xf4, 0x9e, - 0xf1, 0x2e, 0xf5, 0x9e, 0xf0, 0x2e, 0xf5, 0x9e, 0xf1, 0x2e, 0xf5, 0x9e, - 0xf0, 0x2e, 0xf5, 0x9e, 0xf1, 0x2e, 0xf5, 0x9f, 0xf3, 0x2e, 0xf6, 0x9e, - 0xf1, 0x2e, 0xf6, 0x9f, 0xf3, 0x2e, 0xf6, 0x9e, 0xf1, 0x2e, 0xf6, 0x9f, - 0xf3, 0x2e, 0xf7, 0x9f, 0xf2, 0x2e, 0xf7, 0x9f, 0xf3, 0x2e, 0xf7, 0x9f, - 0xf2, 0x2e, 0xf7, 0x9f, 0xf3, 0x2e, 0xf8, 0x9f, 0xf2, 0x2e, 0xf8, 0x9f, - 0xf3, 0x2e, 0xf8, 0xa0, 0xf5, 0x2e, 0xf8, 0x9f, 0xf3, 0x2e, 0xf8, 0xa0, - 0xf5, 0x2e, 0xf9, 0xa0, 0xf5, 0x2e, 0xf9, 0xa0, 0xf5, 0x2e, 0xf9, 0xa0, - 0xf5, 0x2e, 0xf9, 0xa0, 0xf5, 0x2e, 0xfa, 0xa0, 0xf5, 0x2e, 0xfa, 0xa0, - 0xf5, 0x2e, 0xfa, 0xa1, 0xf7, 0x2e, 0xfa, 0xa1, 0xf7, 0x2e, 0xfa, 0xa1, - 0xf7, 0x2e, 0xfb, 0xa1, 0xf7, 0x2e, 0xfb, 0xa1, 0xf7, 0x2e, 0xfb, 0xa1, - 0xf7, 0x2e, 0xfb, 0xa1, 0xf7, 0x2e, 0xfc, 0xa1, 0xf7, 0x2e, 0xfc, 0xa1, - 0xf7, 0x2e, 0xfc, 0xa1, 0xf7, 0x2e, 0xfc, 0xa1, 0xf9, 0x2e, 0xfc, 0xa1, - 0xf7, 0x2e, 0xfd, 0xa1, 0xf9, 0x2e, 0xfd, 0xa1, 0xf7, 0x2e, 0xfd, 0xa1, - 0xf9, 0x2e, 0xfd, 0xa1, 0xf9, 0x2e, 0xfe, 0xa1, 0xf9, 0x2e, 0xfe, 0xa1, - 0xf9, 0x2e, 0xfe, 0xa1, 0xf9, 0x2e, 0xfe, 0xa2, 0xfb, 0x2e, 0xfe, 0xa1, - 0xf9, 0x2e, 0xff, 0xa2, 0xfb, 0x2e, 0xff, 0xa1, 0xf9, 0x2e, 0x03, 0x83, - 0x9b, 0x2e, 0x0a, 0x86, 0x9b, 0x2e, 0x0f, 0x83, 0x9b, 0x2e, 0x14, 0x86, - 0x9b, 0x2e, 0x17, 0x83, 0x9b, 0x2e, 0x1b, 0x86, 0x9b, 0x2e, 0x1e, 0x83, - 0x9b, 0x2e, 0x20, 0x86, 0x9b, 0x2e, 0x23, 0x83, 0x9b, 0x2e, 0x25, 0x86, - 0x9b, 0x2e, 0x27, 0x83, 0x9b, 0x2e, 0x29, 0x86, 0x9b, 0x2e, 0x2b, 0x83, - 0x9b, 0x2e, 0x2d, 0x86, 0x9b, 0x2e, 0x2f, 0x83, 0x9b, 0x2e, 0x31, 0x86, - 0x9b, 0x2e, 0x32, 0x83, 0x9b, 0x2e, 0x34, 0x86, 0x9b, 0x2e, 0x35, 0x83, - 0x9b, 0x2e, 0x37, 0x86, 0x9b, 0x2e, 0x38, 0x83, 0x9b, 0x2e, 0x3a, 0x86, - 0x9b, 0x2e, 0x3b, 0x83, 0x9b, 0x2e, 0x3c, 0x86, 0x9b, 0x2e, 0x3e, 0x83, - 0x9b, 0x2e, 0x3f, 0x86, 0x9b, 0x2e, 0x40, 0x83, 0x9b, 0x2e, 0x42, 0x86, - 0x9b, 0x2e, 0x43, 0x83, 0x9b, 0x2e, 0x44, 0x86, 0x9b, 0x2e, 0x45, 0x83, - 0x9b, 0x2e, 0x46, 0x86, 0x9b, 0x2e, 0x47, 0x83, 0x9b, 0x2e, 0x48, 0x86, - 0x9b, 0x2e, 0x49, 0x83, 0x9b, 0x2e, 0x4a, 0x86, 0x9b, 0x2e, 0x4b, 0x83, - 0x9b, 0x2e, 0x4c, 0x86, 0x9b, 0x2e, 0x4d, 0x83, 0x9b, 0x2e, 0x4e, 0x86, - 0x9b, 0x2e, 0x4f, 0x83, 0x9b, 0x2e, 0x50, 0x86, 0x9b, 0x2e, 0x51, 0x83, - 0x9b, 0x2e, 0x52, 0x86, 0x9b, 0x2e, 0x53, 0x83, 0x9b, 0x2e, 0x54, 0x86, - 0x9b, 0x2e, 0x55, 0x83, 0x9b, 0x2e, 0x56, 0x86, 0x9b, 0x2e, 0x57, 0x83, - 0x9b, 0x2e, 0x58, 0x86, 0x9b, 0x2e, 0x58, 0x83, 0x9b, 0x2e, 0x59, 0x86, - 0x9b, 0x2e, 0x5a, 0x83, 0x9b, 0x2e, 0x5b, 0x86, 0x9b, 0x2e, 0x5c, 0x83, - 0x9b, 0x2e, 0x5d, 0x86, 0x9b, 0x2e, 0x5d, 0x83, 0x9b, 0x2e, 0x5e, 0x86, - 0x9b, 0x2e, 0x5f, 0x83, 0x9b, 0x2e, 0x60, 0x86, 0x9b, 0x2e, 0x60, 0x83, - 0x9b, 0x2e, 0x61, 0x86, 0x9b, 0x2e, 0x62, 0x83, 0x9b, 0x2e, 0x63, 0x86, - 0x9b, 0x2e, 0x63, 0x83, 0x9b, 0x2e, 0x64, 0x86, 0x9b, 0x2e, 0x65, 0x83, - 0x9b, 0x2e, 0x66, 0x86, 0x9b, 0x2e, 0x66, 0x83, 0x9b, 0x2e, 0x67, 0x86, - 0x9b, 0x2e, 0x68, 0x83, 0x9b, 0x2e, 0x68, 0x86, 0x9b, 0x2e, 0x69, 0x83, - 0x9b, 0x2e, 0x6a, 0x86, 0x9b, 0x2e, 0x6a, 0x83, 0x9b, 0x2e, 0x6b, 0x86, - 0x9b, 0x2e, 0x6c, 0x83, 0x9b, 0x2e, 0x6c, 0x86, 0x9b, 0x2e, 0x6d, 0x83, - 0x9b, 0x2e, 0x6e, 0x86, 0x9b, 0x2e, 0x6e, 0x83, 0x9b, 0x2e, 0x6f, 0x86, - 0x9b, 0x2e, 0x70, 0x83, 0x9b, 0x2e, 0x70, 0x86, 0x9b, 0x2e, 0x71, 0x83, - 0x9b, 0x2e, 0x72, 0x86, 0x9b, 0x2e, 0x72, 0x83, 0x9b, 0x2e, 0x73, 0x86, - 0x9b, 0x2e, 0x73, 0x83, 0x9b, 0x2e, 0x74, 0x83, 0x9c, 0x2e, 0x75, 0x83, - 0x9b, 0x2e, 0x75, 0x83, 0x9c, 0x2e, 0x76, 0x83, 0x9b, 0x2e, 0x76, 0x83, - 0x9c, 0x2e, 0x77, 0x83, 0x9b, 0x2e, 0x78, 0x83, 0x9c, 0x2e, 0x78, 0x83, - 0x9b, 0x2e, 0x79, 0x83, 0x9c, 0x2e, 0x79, 0x83, 0x9b, 0x2e, 0x7a, 0x83, - 0x9c, 0x2e, 0x7a, 0x83, 0x9b, 0x2e, 0x7b, 0x83, 0x9c, 0x2e, 0x7c, 0x83, - 0x9b, 0x2e, 0x7c, 0x83, 0x9c, 0x2e, 0x7d, 0x83, 0x9b, 0x2e, 0x7d, 0x83, - 0x9c, 0x2e, 0x7e, 0x83, 0x9b, 0x2e, 0x7e, 0x83, 0x9c, 0x2e, 0x7f, 0x83, - 0x9b, 0x2e, 0x7f, 0x83, 0x9c, 0x2e, 0x80, 0x83, 0x9b, 0x2e, 0x81, 0x83, - 0x9c, 0x2e, 0x81, 0x83, 0x9b, 0x2e, 0x82, 0x83, 0x9c, 0x2e, 0x82, 0x83, - 0x9b, 0x2e, 0x83, 0x83, 0x9c, 0x2e, 0x83, 0x83, 0x9b, 0x2e, 0x84, 0x83, - 0x9c, 0x2e, 0x84, 0x83, 0x9b, 0x2e, 0x85, 0x83, 0x9c, 0x2e, 0x85, 0x83, - 0x9b, 0x2e, 0x86, 0x83, 0x9c, 0x2e, 0x86, 0x83, 0x9b, 0x2e, 0x87, 0x83, - 0x9c, 0x2e, 0x87, 0x83, 0x9b, 0x2e, 0x88, 0x83, 0x9c, 0x2e, 0x88, 0x83, - 0x9b, 0x2e, 0x89, 0x83, 0x9c, 0x2e, 0x89, 0x83, 0x9b, 0x2e, 0x8a, 0x83, - 0x9c, 0x2e, 0x8a, 0x83, 0x9b, 0x2e, 0x8b, 0x83, 0x9c, 0x2e, 0x8b, 0x83, - 0x9b, 0x2e, 0x8c, 0x83, 0x9c, 0x2e, 0x8c, 0x83, 0x9b, 0x2e, 0x8d, 0x83, - 0x9c, 0x2e, 0x8d, 0x83, 0x9b, 0x2e, 0x8e, 0x83, 0x9c, 0x2e, 0x8e, 0x83, - 0x9b, 0x2e, 0x8e, 0x83, 0x9c, 0x2e, 0x8f, 0x83, 0x9b, 0x2e, 0x8f, 0x83, - 0x9c, 0x2e, 0x90, 0x83, 0x9b, 0x2e, 0x90, 0x83, 0x9c, 0x2e, 0x91, 0x83, - 0x9b, 0x2e, 0x91, 0x83, 0x9c, 0x2e, 0x92, 0x83, 0x9b, 0x2e, 0x92, 0x83, - 0x9c, 0x2e, 0x93, 0x83, 0x9b, 0x2e, 0x93, 0x83, 0x9c, 0x2e, 0x94, 0x83, - 0x9b, 0x2e, 0x94, 0x83, 0x9c, 0x2e, 0x94, 0x83, 0x9b, 0x2e, 0x95, 0x83, - 0x9c, 0x2e, 0x95, 0x83, 0x9b, 0x2e, 0x96, 0x83, 0x9c, 0x2e, 0x96, 0x83, - 0x9b, 0x2e, 0x97, 0x83, 0x9c, 0x2e, 0x97, 0x83, 0x9b, 0x2e, 0x98, 0x83, - 0x9c, 0x2e, 0x98, 0x83, 0x9b, 0x2e, 0x98, 0x83, 0x9c, 0x2e, 0x99, 0x83, - 0x9b, 0x2e, 0x99, 0x83, 0x9c, 0x2e, 0x9a, 0x83, 0x9b, 0x2e, 0x9a, 0x83, - 0x9c, 0x2e, 0x9a, 0x83, 0x9b, 0x2e, 0x9b, 0x83, 0x9c, 0x2e, 0x9b, 0x83, - 0x9b, 0x2e, 0x9c, 0x83, 0x9c, 0x2e, 0x9c, 0x83, 0x9c, 0x2e, 0x9d, 0x83, - 0x9d, 0x2e, 0x9d, 0x83, 0x9c, 0x2e, 0x9d, 0x83, 0x9d, 0x2e, 0x9e, 0x83, - 0x9c, 0x2e, 0x9e, 0x83, 0x9d, 0x2e, 0x9f, 0x83, 0x9c, 0x2e, 0x9f, 0x83, - 0x9d, 0x2e, 0x9f, 0x83, 0x9c, 0x2e, 0xa0, 0x83, 0x9d, 0x2e, 0xa0, 0x84, - 0xa0, 0x2e, 0xa1, 0x84, 0xa1, 0x2e, 0xa1, 0x84, 0xa0, 0x2e, 0xa1, 0x84, - 0xa1, 0x2e, 0xa2, 0x84, 0xa0, 0x2e, 0xa2, 0x84, 0xa1, 0x2e, 0xa3, 0x84, - 0xa0, 0x2e, 0xa3, 0x84, 0xa1, 0x2e, 0xa3, 0x84, 0xa0, 0x2e, 0xa4, 0x84, - 0xa1, 0x2e, 0xa4, 0x84, 0xa0, 0x2e, 0xa5, 0x84, 0xa1, 0x2e, 0xa5, 0x85, - 0xa4, 0x2e, 0xa5, 0x85, 0xa4, 0x2e, 0xa6, 0x85, 0xa4, 0x2e, 0xa6, 0x85, - 0xa4, 0x2e, 0xa6, 0x85, 0xa4, 0x2e, 0xa7, 0x85, 0xa4, 0x2e, 0xa7, 0x85, - 0xa4, 0x2e, 0xa8, 0x85, 0xa4, 0x2e, 0xa8, 0x85, 0xa4, 0x2e, 0xa8, 0x86, - 0xa8, 0x2e, 0xa9, 0x86, 0xa7, 0x2e, 0xa9, 0x86, 0xa8, 0x2e, 0xaa, 0x86, - 0xa7, 0x2e, 0xaa, 0x86, 0xa8, 0x2e, 0xaa, 0x86, 0xa7, 0x2e, 0xab, 0x86, - 0xa8, 0x2e, 0xab, 0x86, 0xa7, 0x2e, 0xab, 0x86, 0xa8, 0x2e, 0xac, 0x87, - 0xab, 0x2e, 0xac, 0x87, 0xab, 0x2e, 0xac, 0x87, 0xab, 0x2e, 0xad, 0x87, - 0xab, 0x2e, 0xad, 0x87, 0xab, 0x2e, 0xae, 0x87, 0xab, 0x2e, 0xae, 0x87, - 0xab, 0x2e, 0xae, 0x87, 0xab, 0x2e, 0xaf, 0x87, 0xab, 0x2e, 0xaf, 0x87, - 0xab, 0x2e, 0xaf, 0x88, 0xaf, 0x2e, 0xb0, 0x87, 0xab, 0x2e, 0xb0, 0x88, - 0xaf, 0x2e, 0xb0, 0x88, 0xae, 0x2e, 0xb1, 0x88, 0xaf, 0x2e, 0xb1, 0x88, - 0xae, 0x2e, 0xb2, 0x88, 0xaf, 0x2e, 0xb2, 0x88, 0xae, 0x2e, 0xb2, 0x88, - 0xaf, 0x2e, 0xb3, 0x88, 0xae, 0x2e, 0xb3, 0x88, 0xaf, 0x2e, 0xb3, 0x89, - 0xb2, 0x2e, 0xb4, 0x89, 0xb2, 0x2e, 0xb4, 0x89, 0xb2, 0x2e, 0xb4, 0x89, - 0xb2, 0x2e, 0xb5, 0x89, 0xb2, 0x2e, 0xb5, 0x89, 0xb2, 0x2e, 0xb5, 0x89, - 0xb2, 0x2e, 0xb6, 0x89, 0xb2, 0x2e, 0xb6, 0x89, 0xb2, 0x2e, 0xb6, 0x89, - 0xb2, 0x2e, 0xb7, 0x8a, 0xb5, 0x2e, 0xb7, 0x8a, 0xb5, 0x2e, 0xb7, 0x8a, - 0xb5, 0x2e, 0xb8, 0x8a, 0xb5, 0x2e, 0xb8, 0x8a, 0xb5, 0x2e, 0xb8, 0x8a, - 0xb5, 0x2e, 0xb9, 0x8a, 0xb5, 0x2e, 0xb9, 0x8a, 0xb5, 0x2e, 0xb9, 0x8a, - 0xb5, 0x2e, 0xba, 0x8b, 0xb8, 0x2e, 0xba, 0x8b, 0xb8, 0x2e, 0xba, 0x8b, - 0xb8, 0x2e, 0xbb, 0x8b, 0xb8, 0x2e, 0xbb, 0x8b, 0xb8, 0x2e, 0xbb, 0x8b, - 0xb8, 0x2e, 0xbc, 0x8b, 0xb8, 0x2e, 0xbc, 0x8b, 0xb8, 0x2e, 0xbc, 0x8b, - 0xb8, 0x2e, 0xbd, 0x8c, 0xbb, 0x2e, 0xbd, 0x8c, 0xbc, 0x2e, 0xbd, 0x8c, - 0xbb, 0x2e, 0xbe, 0x8c, 0xbc, 0x2e, 0xbe, 0x8c, 0xbb, 0x2e, 0xbe, 0x8c, - 0xbc, 0x2e, 0xbf, 0x8c, 0xbb, 0x2e, 0xbf, 0x8c, 0xbc, 0x2e, 0xbf, 0x8c, - 0xbb, 0x2e, 0xc0, 0x8c, 0xbc, 0x2e, 0xc0, 0x8d, 0xbf, 0x2e, 0xc0, 0x8c, - 0xbc, 0x2e, 0xc1, 0x8d, 0xbf, 0x2e, 0xc1, 0x8d, 0xbe, 0x2e, 0xc1, 0x8d, - 0xbf, 0x2e, 0xc1, 0x8d, 0xbe, 0x2e, 0xc2, 0x8d, 0xbf, 0x2e, 0xc2, 0x8d, - 0xbe, 0x2e, 0xc2, 0x8d, 0xbf, 0x2e, 0xc3, 0x8e, 0xc1, 0x2e, 0xc3, 0x8d, - 0xbf, 0x2e, 0xc3, 0x8e, 0xc1, 0x2e, 0xc4, 0x8e, 0xc1, 0x2e, 0xc4, 0x8e, - 0xc1, 0x2e, 0xc4, 0x8e, 0xc1, 0x2e, 0xc5, 0x8e, 0xc1, 0x2e, 0xc5, 0x8e, - 0xc1, 0x2e, 0xc5, 0x8e, 0xc1, 0x2e, 0xc6, 0x8e, 0xc1, 0x2e, 0xc6, 0x8e, - 0xc1, 0x2e, 0xc6, 0x8f, 0xc4, 0x2e, 0xc6, 0x8f, 0xc5, 0x2e, 0xc7, 0x8f, - 0xc4, 0x2e, 0xc7, 0x8f, 0xc5, 0x2e, 0xc7, 0x8f, 0xc4, 0x2e, 0xc8, 0x8f, - 0xc5, 0x2e, 0xc8, 0x8f, 0xc4, 0x2e, 0xc8, 0x8f, 0xc5, 0x2e, 0xc9, 0x8f, - 0xc4, 0x2e, 0xc9, 0x8f, 0xc5, 0x2e, 0xc9, 0x90, 0xc7, 0x2e, 0xc9, 0x8f, - 0xc5, 0x2e, 0xca, 0x90, 0xc7, 0x2e, 0xca, 0x90, 0xc7, 0x2e, 0xca, 0x90, - 0xc7, 0x2e, 0xcb, 0x90, 0xc7, 0x2e, 0xcb, 0x90, 0xc7, 0x2e, 0xcb, 0x90, - 0xc7, 0x2e, 0xcc, 0x90, 0xc7, 0x2e, 0xcc, 0x91, 0xca, 0x2e, 0xcc, 0x90, - 0xc7, 0x2e, 0xcc, 0x91, 0xca, 0x2e, 0xcd, 0x91, 0xca, 0x2e, 0xcd, 0x91, - 0xca, 0x2e, 0xcd, 0x91, 0xca, 0x2e, 0xce, 0x91, 0xca, 0x2e, 0xce, 0x91, - 0xca, 0x2e, 0xce, 0x91, 0xca, 0x2e, 0xce, 0x92, 0xcd, 0x2e, 0xcf, 0x92, - 0xcd, 0x2e, 0xcf, 0x92, 0xcd, 0x2e, 0xcf, 0x92, 0xcd, 0x2e, 0xd0, 0x92, - 0xcd, 0x2e, 0xd0, 0x92, 0xcd, 0x2e, 0xd0, 0x92, 0xcd, 0x2e, 0xd0, 0x92, - 0xcd, 0x2e, 0xd1, 0x92, 0xcd, 0x2e, 0xd1, 0x92, 0xcd, 0x2e, 0xd1, 0x92, - 0xcd, 0x2e, 0xd2, 0x92, 0xcd, 0x2e, 0xd2, 0x93, 0xd0, 0x2e, 0xd2, 0x93, - 0xcf, 0x2e, 0xd2, 0x93, 0xd0, 0x2e, 0xd3, 0x93, 0xcf, 0x2e, 0xd3, 0x93, - 0xd0, 0x2e, 0xd3, 0x93, 0xcf, 0x2e, 0xd4, 0x93, 0xd0, 0x2e, 0xd4, 0x93, - 0xcf, 0x2e, 0xd4, 0x93, 0xd0, 0x2e, 0xd4, 0x94, 0xd2, 0x2e, 0xd5, 0x94, - 0xd2, 0x2e, 0xd5, 0x94, 0xd2, 0x2e, 0xd5, 0x94, 0xd2, 0x2e, 0xd6, 0x94, - 0xd2, 0x2e, 0xd6, 0x94, 0xd2, 0x2e, 0xd6, 0x94, 0xd2, 0x2e, 0xd6, 0x94, - 0xd2, 0x2e, 0xd7, 0x94, 0xd2, 0x2e, 0xd7, 0x94, 0xd2, 0x2e, 0xd7, 0x94, - 0xd5, 0x2e, 0xd7, 0x94, 0xd2, 0x2e, 0xd8, 0x94, 0xd5, 0x2e, 0xd8, 0x94, - 0xd5, 0x2e, 0xd8, 0x94, 0xd5, 0x2e, 0xd9, 0x94, 0xd5, 0x2e, 0xd9, 0x94, - 0xd5, 0x2e, 0xd9, 0x94, 0xd5, 0x2e, 0xd9, 0x94, 0xd5, 0x2e, 0xda, 0x95, - 0xd7, 0x2e, 0xda, 0x94, 0xd5, 0x2e, 0xda, 0x95, 0xd7, 0x2e, 0xda, 0x95, - 0xd7, 0x2e, 0xdb, 0x95, 0xd7, 0x2e, 0xdb, 0x95, 0xd7, 0x2e, 0xdb, 0x95, - 0xd7, 0x2e, 0xdb, 0x95, 0xd7, 0x2e, 0xdc, 0x95, 0xd7, 0x2e, 0xdc, 0x96, - 0xda, 0x2e, 0xdc, 0x96, 0xda, 0x2e, 0xdd, 0x96, 0xda, 0x2e, 0xdd, 0x96, - 0xda, 0x2e, 0xdd, 0x96, 0xda, 0x2e, 0xdd, 0x96, 0xda, 0x2e, 0xde, 0x96, - 0xda, 0x2e, 0xde, 0x96, 0xda, 0x2e, 0xde, 0x96, 0xda, 0x2e, 0xde, 0x96, - 0xda, 0x2e, 0xdf, 0x97, 0xdd, 0x2e, 0xdf, 0x96, 0xda, 0x2e, 0xdf, 0x97, - 0xdd, 0x2e, 0xdf, 0x96, 0xda, 0x2e, 0xe0, 0x97, 0xdd, 0x2e, 0xe0, 0x97, - 0xdc, 0x2e, 0xe0, 0x97, 0xdd, 0x2e, 0xe1, 0x97, 0xdc, 0x2e, 0xe1, 0x97, - 0xdd, 0x2e, 0xe1, 0x97, 0xdc, 0x2e, 0xe1, 0x97, 0xdd, 0x2e, 0xe2, 0x98, - 0xdf, 0x2e, 0xe2, 0x97, 0xdd, 0x2e, 0xe2, 0x98, 0xdf, 0x2e, 0xe2, 0x98, - 0xdf, 0x2e, 0xe3, 0x98, 0xdf, 0x2e, 0xe3, 0x98, 0xdf, 0x2e, 0xe3, 0x98, - 0xdf, 0x2e, 0xe3, 0x98, 0xdf, 0x2e, 0xe4, 0x98, 0xdf, 0x2e, 0xe4, 0x99, - 0xe1, 0x2e, 0xe4, 0x99, 0xe2, 0x2e, 0xe4, 0x99, 0xe1, 0x2e, 0xe5, 0x99, - 0xe2, 0x2e, 0xe5, 0x99, 0xe1, 0x2e, 0xe5, 0x99, 0xe2, 0x2e, 0xe5, 0x99, - 0xe1, 0x2e, 0xe6, 0x99, 0xe2, 0x2e, 0xe6, 0x99, 0xe1, 0x2e, 0xe6, 0x99, - 0xe2, 0x2e, 0xe6, 0x9a, 0xe4, 0x2e, 0xe7, 0x99, 0xe2, 0x2e, 0xe7, 0x9a, - 0xe4, 0x2e, 0xe7, 0x9a, 0xe4, 0x2e, 0xe7, 0x9a, 0xe4, 0x2e, 0xe8, 0x9a, - 0xe4, 0x2e, 0xe8, 0x9a, 0xe4, 0x2e, 0xe8, 0x9a, 0xe4, 0x2e, 0xe8, 0x9a, - 0xe4, 0x2e, 0xe9, 0x9a, 0xe6, 0x2e, 0xe9, 0x9a, 0xe4, 0x2e, 0xe9, 0x9a, - 0xe6, 0x2e, 0xe9, 0x9a, 0xe4, 0x2e, 0xea, 0x9a, 0xe6, 0x2e, 0xea, 0x9a, - 0xe6, 0x2e, 0xea, 0x9a, 0xe6, 0x2e, 0xea, 0x9a, 0xe6, 0x2e, 0xeb, 0x9a, - 0xe6, 0x2e, 0xeb, 0x9a, 0xe6, 0x2e, 0xeb, 0x9a, 0xe6, 0x2e, 0xeb, 0x9b, - 0xe8, 0x2e, 0xec, 0x9b, 0xe9, 0x2e, 0xec, 0x9b, 0xe8, 0x2e, 0xec, 0x9b, - 0xe9, 0x2e, 0xec, 0x9b, 0xe8, 0x2e, 0xec, 0x9b, 0xe9, 0x2e, 0xed, 0x9b, - 0xe8, 0x2e, 0xed, 0x9b, 0xe9, 0x2e, 0xed, 0x9b, 0xe8, 0x2e, 0xed, 0x9b, - 0xe9, 0x2e, 0xee, 0x9c, 0xeb, 0x2e, 0xee, 0x9b, 0xe9, 0x2e, 0xee, 0x9c, - 0xeb, 0x2e, 0xee, 0x9c, 0xeb, 0x2e, 0xef, 0x9c, 0xeb, 0x2e, 0xef, 0x9c, - 0xeb, 0x2e, 0xef, 0x9c, 0xeb, 0x2e, 0xef, 0x9c, 0xeb, 0x2e, 0xf0, 0x9c, - 0xeb, 0x2e, 0xf0, 0x9d, 0xed, 0x2e, 0xf0, 0x9d, 0xed, 0x2e, 0xf0, 0x9d, - 0xed, 0x2e, 0xf1, 0x9d, 0xed, 0x2e, 0xf1, 0x9d, 0xed, 0x2e, 0xf1, 0x9d, - 0xed, 0x2e, 0xf1, 0x9d, 0xed, 0x2e, 0xf2, 0x9d, 0xed, 0x2e, 0xf2, 0x9d, - 0xed, 0x2e, 0xf2, 0x9d, 0xed, 0x2e, 0xf2, 0x9e, 0xef, 0x2e, 0xf2, 0x9d, - 0xed, 0x2e, 0xf3, 0x9e, 0xef, 0x2e, 0xf3, 0x9d, 0xed, 0x2e, 0xf3, 0x9e, - 0xef, 0x2e, 0xf3, 0x9e, 0xef, 0x2e, 0xf4, 0x9e, 0xef, 0x2e, 0xf4, 0x9e, - 0xef, 0x2e, 0xf4, 0x9e, 0xef, 0x2e, 0xf4, 0x9f, 0xf2, 0x2e, 0xf5, 0x9e, - 0xef, 0x2e, 0xf5, 0x9f, 0xf2, 0x2e, 0xf5, 0x9e, 0xef, 0x2e, 0xf5, 0x9f, - 0xf2, 0x2e, 0xf5, 0x9f, 0xf1, 0x2e, 0xf6, 0x9f, 0xf2, 0x2e, 0xf6, 0x9f, - 0xf1, 0x2e, 0xf6, 0x9f, 0xf2, 0x2e, 0xf6, 0x9f, 0xf4, 0x2e, 0xf7, 0x9f, - 0xf4, 0x2e, 0xf7, 0x9f, 0xf4, 0x2e, 0xf7, 0x9f, 0xf4, 0x2e, 0xf7, 0x9f, - 0xf4, 0x2e, 0xf8, 0x9f, 0xf4, 0x2e, 0xf8, 0x9f, 0xf4, 0x2e, 0xf8, 0x9f, - 0xf4, 0x2e, 0xf8, 0x9f, 0xf4, 0x2e, 0xf8, 0x9f, 0xf4, 0x2e, 0xf9, 0x9f, - 0xf4, 0x2e, 0xf9, 0x9f, 0xf4, 0x2e, 0xf9, 0xa0, 0xf6, 0x2e, 0xf9, 0x9f, - 0xf4, 0x2e, 0xfa, 0xa0, 0xf6, 0x2e, 0xfa, 0xa0, 0xf6, 0x2e, 0xfa, 0xa0, - 0xf6, 0x2e, 0xfa, 0xa0, 0xf6, 0x2e, 0xfa, 0xa0, 0xf6, 0x2e, 0xfb, 0xa0, - 0xf6, 0x2e, 0xfb, 0xa0, 0xf6, 0x2e, 0xfb, 0xa1, 0xf8, 0x2e, 0xfb, 0xa0, - 0xf6, 0x2e, 0xfc, 0xa1, 0xf8, 0x2e, 0xfc, 0xa0, 0xf6, 0x2e, 0xfc, 0xa1, - 0xf8, 0x2e, 0xfc, 0xa1, 0xf8, 0x2e, 0xfc, 0xa1, 0xf8, 0x2e, 0xfd, 0xa1, - 0xf8, 0x2e, 0xfd, 0xa1, 0xf8, 0x2e, 0xfd, 0xa2, 0xfa, 0x2e, 0xfd, 0xa2, - 0xfa, 0x2e, 0xfe, 0xa2, 0xfa, 0x2e, 0xfe, 0xa2, 0xfa, 0x2e, 0xfe, 0xa2, - 0xfa, 0x2e, 0xfe, 0xa2, 0xfa, 0x2e, 0xfe, 0xa2, 0xfa, 0x2e, 0xff, 0xa2, - 0xfa, 0x2e, 0xff, 0xa2, 0xfa, 0x2e, 0x03, 0x89, 0x9a, 0x2f, 0x0a, 0x86, - 0x9b, 0x2f, 0x0f, 0x89, 0x9a, 0x2f, 0x14, 0x86, 0x9b, 0x2f, 0x17, 0x89, - 0x9a, 0x2f, 0x1b, 0x86, 0x9b, 0x2f, 0x1e, 0x84, 0x9b, 0x2f, 0x20, 0x86, - 0x9b, 0x2f, 0x23, 0x84, 0x9b, 0x2f, 0x25, 0x86, 0x9b, 0x2f, 0x27, 0x84, - 0x9b, 0x2f, 0x29, 0x86, 0x9b, 0x2f, 0x2b, 0x84, 0x9b, 0x2f, 0x2d, 0x86, - 0x9b, 0x2f, 0x2f, 0x84, 0x9b, 0x2f, 0x31, 0x86, 0x9b, 0x2f, 0x32, 0x84, - 0x9b, 0x2f, 0x34, 0x86, 0x9b, 0x2f, 0x35, 0x84, 0x9b, 0x2f, 0x37, 0x86, - 0x9b, 0x2f, 0x38, 0x84, 0x9b, 0x2f, 0x3a, 0x86, 0x9b, 0x2f, 0x3b, 0x84, - 0x9b, 0x2f, 0x3c, 0x86, 0x9b, 0x2f, 0x3e, 0x84, 0x9b, 0x2f, 0x3f, 0x86, - 0x9b, 0x2f, 0x40, 0x84, 0x9b, 0x2f, 0x42, 0x86, 0x9b, 0x2f, 0x43, 0x84, - 0x9b, 0x2f, 0x44, 0x86, 0x9b, 0x2f, 0x45, 0x84, 0x9b, 0x2f, 0x46, 0x86, - 0x9b, 0x2f, 0x47, 0x84, 0x9b, 0x2f, 0x48, 0x86, 0x9b, 0x2f, 0x49, 0x84, - 0x9b, 0x2f, 0x4a, 0x86, 0x9b, 0x2f, 0x4b, 0x84, 0x9b, 0x2f, 0x4c, 0x86, - 0x9b, 0x2f, 0x4d, 0x84, 0x9b, 0x2f, 0x4e, 0x86, 0x9b, 0x2f, 0x4f, 0x84, - 0x9b, 0x2f, 0x50, 0x86, 0x9b, 0x2f, 0x51, 0x84, 0x9b, 0x2f, 0x52, 0x86, - 0x9b, 0x2f, 0x53, 0x84, 0x9b, 0x2f, 0x54, 0x86, 0x9b, 0x2f, 0x55, 0x84, - 0x9b, 0x2f, 0x56, 0x86, 0x9b, 0x2f, 0x57, 0x84, 0x9b, 0x2f, 0x58, 0x86, - 0x9b, 0x2f, 0x58, 0x84, 0x9b, 0x2f, 0x59, 0x86, 0x9b, 0x2f, 0x5a, 0x84, - 0x9b, 0x2f, 0x5b, 0x86, 0x9b, 0x2f, 0x5c, 0x84, 0x9b, 0x2f, 0x5d, 0x86, - 0x9b, 0x2f, 0x5d, 0x84, 0x9b, 0x2f, 0x5e, 0x86, 0x9b, 0x2f, 0x5f, 0x84, - 0x9b, 0x2f, 0x60, 0x86, 0x9b, 0x2f, 0x60, 0x84, 0x9b, 0x2f, 0x61, 0x86, - 0x9b, 0x2f, 0x62, 0x84, 0x9b, 0x2f, 0x63, 0x86, 0x9b, 0x2f, 0x63, 0x84, - 0x9b, 0x2f, 0x64, 0x86, 0x9b, 0x2f, 0x65, 0x84, 0x9b, 0x2f, 0x66, 0x86, - 0x9b, 0x2f, 0x66, 0x84, 0x9b, 0x2f, 0x67, 0x86, 0x9b, 0x2f, 0x68, 0x84, - 0x9b, 0x2f, 0x68, 0x86, 0x9b, 0x2f, 0x69, 0x84, 0x9b, 0x2f, 0x6a, 0x86, - 0x9b, 0x2f, 0x6a, 0x84, 0x9b, 0x2f, 0x6b, 0x86, 0x9b, 0x2f, 0x6c, 0x84, - 0x9b, 0x2f, 0x6c, 0x86, 0x9b, 0x2f, 0x6d, 0x84, 0x9b, 0x2f, 0x6e, 0x86, - 0x9b, 0x2f, 0x6e, 0x84, 0x9b, 0x2f, 0x6f, 0x86, 0x9b, 0x2f, 0x70, 0x84, - 0x9b, 0x2f, 0x70, 0x86, 0x9b, 0x2f, 0x71, 0x84, 0x9b, 0x2f, 0x72, 0x86, - 0x9b, 0x2f, 0x72, 0x84, 0x9b, 0x2f, 0x73, 0x86, 0x9b, 0x2f, 0x73, 0x84, - 0x9b, 0x2f, 0x74, 0x86, 0x9b, 0x2f, 0x75, 0x84, 0x9b, 0x2f, 0x75, 0x86, - 0x9b, 0x2f, 0x76, 0x84, 0x9b, 0x2f, 0x76, 0x86, 0x9b, 0x2f, 0x77, 0x84, - 0x9b, 0x2f, 0x78, 0x86, 0x9b, 0x2f, 0x78, 0x84, 0x9b, 0x2f, 0x79, 0x86, - 0x9b, 0x2f, 0x79, 0x84, 0x9b, 0x2f, 0x7a, 0x86, 0x9b, 0x2f, 0x7a, 0x84, - 0x9b, 0x2f, 0x7b, 0x86, 0x9b, 0x2f, 0x7c, 0x84, 0x9b, 0x2f, 0x7c, 0x86, - 0x9b, 0x2f, 0x7d, 0x84, 0x9b, 0x2f, 0x7d, 0x86, 0x9b, 0x2f, 0x7e, 0x84, - 0x9b, 0x2f, 0x7e, 0x86, 0x9b, 0x2f, 0x7f, 0x84, 0x9b, 0x2f, 0x7f, 0x86, - 0x9b, 0x2f, 0x80, 0x84, 0x9b, 0x2f, 0x81, 0x86, 0x9b, 0x2f, 0x81, 0x84, - 0x9b, 0x2f, 0x82, 0x86, 0x9b, 0x2f, 0x82, 0x84, 0x9b, 0x2f, 0x83, 0x86, - 0x9b, 0x2f, 0x83, 0x84, 0x9b, 0x2f, 0x84, 0x84, 0x9c, 0x2f, 0x84, 0x84, - 0x9b, 0x2f, 0x85, 0x84, 0x9c, 0x2f, 0x85, 0x84, 0x9b, 0x2f, 0x86, 0x84, - 0x9c, 0x2f, 0x86, 0x84, 0x9b, 0x2f, 0x87, 0x84, 0x9c, 0x2f, 0x87, 0x84, - 0x9b, 0x2f, 0x88, 0x84, 0x9c, 0x2f, 0x88, 0x84, 0x9b, 0x2f, 0x89, 0x84, - 0x9c, 0x2f, 0x89, 0x84, 0x9b, 0x2f, 0x8a, 0x84, 0x9c, 0x2f, 0x8a, 0x84, - 0x9b, 0x2f, 0x8b, 0x84, 0x9c, 0x2f, 0x8b, 0x84, 0x9b, 0x2f, 0x8c, 0x84, - 0x9c, 0x2f, 0x8c, 0x84, 0x9b, 0x2f, 0x8d, 0x84, 0x9c, 0x2f, 0x8d, 0x84, - 0x9b, 0x2f, 0x8e, 0x84, 0x9c, 0x2f, 0x8e, 0x84, 0x9b, 0x2f, 0x8e, 0x84, - 0x9c, 0x2f, 0x8f, 0x84, 0x9b, 0x2f, 0x8f, 0x84, 0x9c, 0x2f, 0x90, 0x84, - 0x9b, 0x2f, 0x90, 0x84, 0x9c, 0x2f, 0x91, 0x84, 0x9b, 0x2f, 0x91, 0x84, - 0x9c, 0x2f, 0x92, 0x84, 0x9b, 0x2f, 0x92, 0x84, 0x9c, 0x2f, 0x93, 0x84, - 0x9b, 0x2f, 0x93, 0x84, 0x9c, 0x2f, 0x94, 0x84, 0x9b, 0x2f, 0x94, 0x84, - 0x9c, 0x2f, 0x94, 0x84, 0x9b, 0x2f, 0x95, 0x84, 0x9c, 0x2f, 0x95, 0x84, - 0x9b, 0x2f, 0x96, 0x84, 0x9c, 0x2f, 0x96, 0x84, 0x9b, 0x2f, 0x97, 0x84, - 0x9c, 0x2f, 0x97, 0x84, 0x9b, 0x2f, 0x98, 0x84, 0x9c, 0x2f, 0x98, 0x84, - 0x9b, 0x2f, 0x98, 0x84, 0x9c, 0x2f, 0x99, 0x84, 0x9b, 0x2f, 0x99, 0x84, - 0x9c, 0x2f, 0x9a, 0x84, 0x9b, 0x2f, 0x9a, 0x84, 0x9c, 0x2f, 0x9a, 0x84, - 0x9b, 0x2f, 0x9b, 0x84, 0x9c, 0x2f, 0x9b, 0x84, 0x9b, 0x2f, 0x9c, 0x84, - 0x9c, 0x2f, 0x9c, 0x84, 0x9c, 0x2f, 0x9d, 0x84, 0x9d, 0x2f, 0x9d, 0x84, - 0x9d, 0x2f, 0x9d, 0x84, 0x9d, 0x2f, 0x9e, 0x84, 0x9e, 0x2f, 0x9e, 0x84, - 0x9e, 0x2f, 0x9f, 0x84, 0x9f, 0x2f, 0x9f, 0x84, 0x9e, 0x2f, 0x9f, 0x84, - 0x9f, 0x2f, 0xa0, 0x84, 0x9e, 0x2f, 0xa0, 0x84, 0x9f, 0x2f, 0xa1, 0x84, - 0x9e, 0x2f, 0xa1, 0x84, 0x9f, 0x2f, 0xa1, 0x84, 0x9e, 0x2f, 0xa2, 0x84, - 0x9f, 0x2f, 0xa2, 0x85, 0xa2, 0x2f, 0xa3, 0x84, 0x9f, 0x2f, 0xa3, 0x85, - 0xa2, 0x2f, 0xa3, 0x85, 0xa2, 0x2f, 0xa4, 0x85, 0xa2, 0x2f, 0xa4, 0x85, - 0xa2, 0x2f, 0xa5, 0x85, 0xa2, 0x2f, 0xa5, 0x85, 0xa2, 0x2f, 0xa5, 0x85, - 0xa2, 0x2f, 0xa6, 0x85, 0xa2, 0x2f, 0xa6, 0x85, 0xa2, 0x2f, 0xa6, 0x86, - 0xa6, 0x2f, 0xa7, 0x86, 0xa6, 0x2f, 0xa7, 0x86, 0xa6, 0x2f, 0xa8, 0x86, - 0xa6, 0x2f, 0xa8, 0x86, 0xa6, 0x2f, 0xa8, 0x86, 0xa6, 0x2f, 0xa9, 0x86, - 0xa6, 0x2f, 0xa9, 0x86, 0xa6, 0x2f, 0xaa, 0x86, 0xa6, 0x2f, 0xaa, 0x86, - 0xa6, 0x2f, 0xaa, 0x87, 0xaa, 0x2f, 0xab, 0x87, 0xa9, 0x2f, 0xab, 0x87, - 0xaa, 0x2f, 0xab, 0x87, 0xa9, 0x2f, 0xac, 0x87, 0xaa, 0x2f, 0xac, 0x87, - 0xa9, 0x2f, 0xac, 0x87, 0xaa, 0x2f, 0xad, 0x87, 0xa9, 0x2f, 0xad, 0x87, - 0xaa, 0x2f, 0xae, 0x88, 0xad, 0x2f, 0xae, 0x88, 0xad, 0x2f, 0xae, 0x88, - 0xad, 0x2f, 0xaf, 0x88, 0xad, 0x2f, 0xaf, 0x88, 0xad, 0x2f, 0xaf, 0x88, - 0xad, 0x2f, 0xb0, 0x88, 0xad, 0x2f, 0xb0, 0x88, 0xad, 0x2f, 0xb0, 0x88, - 0xad, 0x2f, 0xb1, 0x88, 0xad, 0x2f, 0xb1, 0x89, 0xb0, 0x2f, 0xb2, 0x88, - 0xad, 0x2f, 0xb2, 0x89, 0xb0, 0x2f, 0xb2, 0x89, 0xb0, 0x2f, 0xb3, 0x89, - 0xb0, 0x2f, 0xb3, 0x89, 0xb0, 0x2f, 0xb3, 0x89, 0xb0, 0x2f, 0xb4, 0x89, - 0xb2, 0x2f, 0xb4, 0x89, 0xb0, 0x2f, 0xb4, 0x89, 0xb2, 0x2f, 0xb5, 0x89, - 0xb2, 0x2f, 0xb5, 0x89, 0xb2, 0x2f, 0xb5, 0x89, 0xb2, 0x2f, 0xb6, 0x89, - 0xb2, 0x2f, 0xb6, 0x8a, 0xb3, 0x2f, 0xb6, 0x8a, 0xb4, 0x2f, 0xb7, 0x8a, - 0xb3, 0x2f, 0xb7, 0x8a, 0xb4, 0x2f, 0xb7, 0x8a, 0xb3, 0x2f, 0xb8, 0x8a, - 0xb4, 0x2f, 0xb8, 0x8b, 0xb7, 0x2f, 0xb8, 0x8b, 0xb7, 0x2f, 0xb9, 0x8b, - 0xb7, 0x2f, 0xb9, 0x8b, 0xb7, 0x2f, 0xb9, 0x8b, 0xb7, 0x2f, 0xba, 0x8b, - 0xb7, 0x2f, 0xba, 0x8b, 0xb7, 0x2f, 0xba, 0x8b, 0xb7, 0x2f, 0xbb, 0x8b, - 0xb7, 0x2f, 0xbb, 0x8b, 0xb7, 0x2f, 0xbb, 0x8c, 0xba, 0x2f, 0xbc, 0x8c, - 0xba, 0x2f, 0xbc, 0x8c, 0xba, 0x2f, 0xbc, 0x8c, 0xba, 0x2f, 0xbd, 0x8c, - 0xba, 0x2f, 0xbd, 0x8c, 0xba, 0x2f, 0xbd, 0x8c, 0xba, 0x2f, 0xbe, 0x8c, - 0xba, 0x2f, 0xbe, 0x8c, 0xba, 0x2f, 0xbe, 0x8d, 0xbd, 0x2f, 0xbf, 0x8c, - 0xba, 0x2f, 0xbf, 0x8d, 0xbd, 0x2f, 0xbf, 0x8d, 0xbd, 0x2f, 0xc0, 0x8d, - 0xbd, 0x2f, 0xc0, 0x8d, 0xbd, 0x2f, 0xc0, 0x8d, 0xbd, 0x2f, 0xc1, 0x8d, - 0xbd, 0x2f, 0xc1, 0x8d, 0xbd, 0x2f, 0xc1, 0x8e, 0xc0, 0x2f, 0xc1, 0x8e, - 0xc0, 0x2f, 0xc2, 0x8e, 0xc0, 0x2f, 0xc2, 0x8e, 0xc0, 0x2f, 0xc2, 0x8e, - 0xc0, 0x2f, 0xc3, 0x8e, 0xc0, 0x2f, 0xc3, 0x8e, 0xc0, 0x2f, 0xc3, 0x8e, - 0xc0, 0x2f, 0xc4, 0x8e, 0xc0, 0x2f, 0xc4, 0x8e, 0xc0, 0x2f, 0xc4, 0x8e, - 0xc3, 0x2f, 0xc5, 0x8e, 0xc0, 0x2f, 0xc5, 0x8e, 0xc3, 0x2f, 0xc5, 0x8e, - 0xc3, 0x2f, 0xc6, 0x8e, 0xc3, 0x2f, 0xc6, 0x8e, 0xc3, 0x2f, 0xc6, 0x8e, - 0xc3, 0x2f, 0xc6, 0x8e, 0xc3, 0x2f, 0xc7, 0x8e, 0xc3, 0x2f, 0xc7, 0x8e, - 0xc3, 0x2f, 0xc7, 0x8e, 0xc3, 0x2f, 0xc8, 0x8f, 0xc6, 0x2f, 0xc8, 0x8f, - 0xc6, 0x2f, 0xc8, 0x8f, 0xc6, 0x2f, 0xc9, 0x8f, 0xc6, 0x2f, 0xc9, 0x8f, - 0xc6, 0x2f, 0xc9, 0x8f, 0xc6, 0x2f, 0xc9, 0x8f, 0xc6, 0x2f, 0xca, 0x8f, - 0xc6, 0x2f, 0xca, 0x8f, 0xc6, 0x2f, 0xca, 0x90, 0xc9, 0x2f, 0xcb, 0x90, - 0xc9, 0x2f, 0xcb, 0x90, 0xc9, 0x2f, 0xcb, 0x90, 0xc9, 0x2f, 0xcc, 0x90, - 0xc9, 0x2f, 0xcc, 0x90, 0xc9, 0x2f, 0xcc, 0x90, 0xc9, 0x2f, 0xcc, 0x90, - 0xc9, 0x2f, 0xcd, 0x90, 0xc9, 0x2f, 0xcd, 0x90, 0xc9, 0x2f, 0xcd, 0x91, - 0xcc, 0x2f, 0xce, 0x90, 0xc9, 0x2f, 0xce, 0x91, 0xcc, 0x2f, 0xce, 0x91, - 0xcb, 0x2f, 0xce, 0x91, 0xcc, 0x2f, 0xcf, 0x91, 0xcb, 0x2f, 0xcf, 0x91, - 0xcc, 0x2f, 0xcf, 0x91, 0xcb, 0x2f, 0xd0, 0x91, 0xcc, 0x2f, 0xd0, 0x92, - 0xce, 0x2f, 0xd0, 0x92, 0xce, 0x2f, 0xd0, 0x92, 0xce, 0x2f, 0xd1, 0x92, - 0xce, 0x2f, 0xd1, 0x92, 0xce, 0x2f, 0xd1, 0x92, 0xce, 0x2f, 0xd2, 0x92, - 0xce, 0x2f, 0xd2, 0x92, 0xce, 0x2f, 0xd2, 0x92, 0xce, 0x2f, 0xd2, 0x92, - 0xce, 0x2f, 0xd3, 0x92, 0xce, 0x2f, 0xd3, 0x92, 0xce, 0x2f, 0xd3, 0x93, - 0xd1, 0x2f, 0xd4, 0x93, 0xd1, 0x2f, 0xd4, 0x93, 0xd1, 0x2f, 0xd4, 0x93, - 0xd1, 0x2f, 0xd4, 0x93, 0xd1, 0x2f, 0xd5, 0x93, 0xd1, 0x2f, 0xd5, 0x93, - 0xd1, 0x2f, 0xd5, 0x93, 0xd1, 0x2f, 0xd6, 0x93, 0xd1, 0x2f, 0xd6, 0x94, - 0xd4, 0x2f, 0xd6, 0x93, 0xd1, 0x2f, 0xd6, 0x94, 0xd4, 0x2f, 0xd7, 0x94, - 0xd3, 0x2f, 0xd7, 0x94, 0xd4, 0x2f, 0xd7, 0x94, 0xd3, 0x2f, 0xd7, 0x94, - 0xd4, 0x2f, 0xd8, 0x94, 0xd3, 0x2f, 0xd8, 0x94, 0xd4, 0x2f, 0xd8, 0x95, - 0xd6, 0x2f, 0xd9, 0x95, 0xd6, 0x2f, 0xd9, 0x95, 0xd6, 0x2f, 0xd9, 0x95, - 0xd6, 0x2f, 0xd9, 0x95, 0xd6, 0x2f, 0xda, 0x95, 0xd6, 0x2f, 0xda, 0x95, - 0xd6, 0x2f, 0xda, 0x95, 0xd6, 0x2f, 0xda, 0x95, 0xd6, 0x2f, 0xdb, 0x95, - 0xd6, 0x2f, 0xdb, 0x96, 0xd9, 0x2f, 0xdb, 0x95, 0xd6, 0x2f, 0xdb, 0x96, - 0xd9, 0x2f, 0xdc, 0x96, 0xd9, 0x2f, 0xdc, 0x96, 0xd9, 0x2f, 0xdc, 0x96, - 0xd9, 0x2f, 0xdd, 0x96, 0xd9, 0x2f, 0xdd, 0x96, 0xd9, 0x2f, 0xdd, 0x96, - 0xd9, 0x2f, 0xdd, 0x97, 0xdb, 0x2f, 0xde, 0x96, 0xd9, 0x2f, 0xde, 0x97, - 0xdb, 0x2f, 0xde, 0x97, 0xdb, 0x2f, 0xde, 0x97, 0xdb, 0x2f, 0xdf, 0x97, - 0xdb, 0x2f, 0xdf, 0x97, 0xdb, 0x2f, 0xdf, 0x97, 0xdb, 0x2f, 0xdf, 0x97, - 0xdb, 0x2f, 0xe0, 0x98, 0xde, 0x2f, 0xe0, 0x98, 0xde, 0x2f, 0xe0, 0x98, - 0xde, 0x2f, 0xe1, 0x98, 0xde, 0x2f, 0xe1, 0x98, 0xde, 0x2f, 0xe1, 0x98, - 0xde, 0x2f, 0xe1, 0x98, 0xde, 0x2f, 0xe2, 0x98, 0xde, 0x2f, 0xe2, 0x98, - 0xde, 0x2f, 0xe2, 0x98, 0xde, 0x2f, 0xe2, 0x98, 0xde, 0x2f, 0xe3, 0x98, - 0xde, 0x2f, 0xe3, 0x98, 0xe0, 0x2f, 0xe3, 0x98, 0xde, 0x2f, 0xe3, 0x98, - 0xe0, 0x2f, 0xe4, 0x98, 0xe0, 0x2f, 0xe4, 0x98, 0xe0, 0x2f, 0xe4, 0x98, - 0xe0, 0x2f, 0xe4, 0x98, 0xe0, 0x2f, 0xe5, 0x98, 0xe0, 0x2f, 0xe5, 0x98, - 0xe0, 0x2f, 0xe5, 0x99, 0xe3, 0x2f, 0xe5, 0x98, 0xe0, 0x2f, 0xe6, 0x99, - 0xe3, 0x2f, 0xe6, 0x99, 0xe2, 0x2f, 0xe6, 0x99, 0xe3, 0x2f, 0xe6, 0x99, - 0xe2, 0x2f, 0xe7, 0x99, 0xe3, 0x2f, 0xe7, 0x99, 0xe2, 0x2f, 0xe7, 0x99, - 0xe3, 0x2f, 0xe7, 0x9a, 0xe5, 0x2f, 0xe8, 0x9a, 0xe5, 0x2f, 0xe8, 0x9a, - 0xe5, 0x2f, 0xe8, 0x9a, 0xe5, 0x2f, 0xe8, 0x9a, 0xe5, 0x2f, 0xe9, 0x9a, - 0xe5, 0x2f, 0xe9, 0x9a, 0xe5, 0x2f, 0xe9, 0x9a, 0xe5, 0x2f, 0xe9, 0x9a, - 0xe5, 0x2f, 0xea, 0x9a, 0xe5, 0x2f, 0xea, 0x9b, 0xe7, 0x2f, 0xea, 0x9a, - 0xe5, 0x2f, 0xea, 0x9b, 0xe7, 0x2f, 0xeb, 0x9a, 0xe5, 0x2f, 0xeb, 0x9b, - 0xe7, 0x2f, 0xeb, 0x9b, 0xe7, 0x2f, 0xeb, 0x9b, 0xe7, 0x2f, 0xec, 0x9b, - 0xe7, 0x2f, 0xec, 0x9b, 0xe7, 0x2f, 0xec, 0x9b, 0xe7, 0x2f, 0xec, 0x9b, - 0xe7, 0x2f, 0xec, 0x9c, 0xea, 0x2f, 0xed, 0x9c, 0xea, 0x2f, 0xed, 0x9c, - 0xea, 0x2f, 0xed, 0x9c, 0xea, 0x2f, 0xed, 0x9c, 0xea, 0x2f, 0xee, 0x9c, - 0xea, 0x2f, 0xee, 0x9c, 0xea, 0x2f, 0xee, 0x9c, 0xea, 0x2f, 0xee, 0x9c, - 0xea, 0x2f, 0xef, 0x9c, 0xea, 0x2f, 0xef, 0x9d, 0xec, 0x2f, 0xef, 0x9c, - 0xea, 0x2f, 0xef, 0x9d, 0xec, 0x2f, 0xf0, 0x9d, 0xec, 0x2f, 0xf0, 0x9d, - 0xec, 0x2f, 0xf0, 0x9d, 0xec, 0x2f, 0xf0, 0x9d, 0xec, 0x2f, 0xf1, 0x9d, - 0xec, 0x2f, 0xf1, 0x9d, 0xec, 0x2f, 0xf1, 0x9d, 0xee, 0x2f, 0xf1, 0x9d, - 0xec, 0x2f, 0xf2, 0x9d, 0xee, 0x2f, 0xf2, 0x9d, 0xee, 0x2f, 0xf2, 0x9d, - 0xee, 0x2f, 0xf2, 0x9d, 0xee, 0x2f, 0xf2, 0x9d, 0xee, 0x2f, 0xf3, 0x9d, - 0xee, 0x2f, 0xf3, 0x9d, 0xee, 0x2f, 0xf3, 0x9e, 0xf0, 0x2f, 0xf3, 0x9e, - 0xf1, 0x2f, 0xf4, 0x9e, 0xf0, 0x2f, 0xf4, 0x9e, 0xf1, 0x2f, 0xf4, 0x9e, - 0xf0, 0x2f, 0xf4, 0x9e, 0xf1, 0x2f, 0xf5, 0x9e, 0xf0, 0x2f, 0xf5, 0x9e, - 0xf1, 0x2f, 0xf5, 0x9e, 0xf0, 0x2f, 0xf5, 0x9e, 0xf1, 0x2f, 0xf5, 0x9f, - 0xf3, 0x2f, 0xf6, 0x9e, 0xf1, 0x2f, 0xf6, 0x9f, 0xf3, 0x2f, 0xf6, 0x9e, - 0xf1, 0x2f, 0xf6, 0x9f, 0xf3, 0x2f, 0xf7, 0x9f, 0xf2, 0x2f, 0xf7, 0x9f, - 0xf3, 0x2f, 0xf7, 0x9f, 0xf2, 0x2f, 0xf7, 0x9f, 0xf3, 0x2f, 0xf8, 0xa0, - 0xf5, 0x2f, 0xf8, 0x9f, 0xf3, 0x2f, 0xf8, 0xa0, 0xf5, 0x2f, 0xf8, 0x9f, - 0xf3, 0x2f, 0xf8, 0xa0, 0xf5, 0x2f, 0xf9, 0xa0, 0xf5, 0x2f, 0xf9, 0xa0, - 0xf5, 0x2f, 0xf9, 0xa0, 0xf5, 0x2f, 0xf9, 0xa0, 0xf5, 0x2f, 0xfa, 0xa0, - 0xf5, 0x2f, 0xfa, 0xa0, 0xf5, 0x2f, 0xfa, 0xa1, 0xf7, 0x2f, 0xfa, 0xa1, - 0xf7, 0x2f, 0xfa, 0xa1, 0xf7, 0x2f, 0xfb, 0xa1, 0xf7, 0x2f, 0xfb, 0xa1, - 0xf7, 0x2f, 0xfb, 0xa1, 0xf7, 0x2f, 0xfb, 0xa1, 0xf7, 0x2f, 0xfc, 0xa1, - 0xf7, 0x2f, 0xfc, 0xa1, 0xf7, 0x2f, 0xfc, 0xa1, 0xf7, 0x2f, 0xfc, 0xa1, - 0xf9, 0x2f, 0xfc, 0xa1, 0xf7, 0x2f, 0xfd, 0xa1, 0xf9, 0x2f, 0xfd, 0xa1, - 0xf7, 0x2f, 0xfd, 0xa1, 0xf9, 0x2f, 0xfd, 0xa1, 0xf9, 0x2f, 0xfe, 0xa1, - 0xf9, 0x2f, 0xfe, 0xa1, 0xf9, 0x2f, 0xfe, 0xa1, 0xf9, 0x2f, 0xfe, 0xa2, - 0xfb, 0x2f, 0xfe, 0xa1, 0xf9, 0x2f, 0xff, 0xa2, 0xfb, 0x2f, 0xff, 0xa1, - 0xf9, 0x2f, 0x03, 0x83, 0x9b, 0x2f, 0x0a, 0x86, 0x9b, 0x2f, 0x0f, 0x83, - 0x9b, 0x2f, 0x14, 0x86, 0x9b, 0x2f, 0x17, 0x83, 0x9b, 0x2f, 0x1b, 0x86, - 0x9b, 0x2f, 0x1e, 0x83, 0x9b, 0x2f, 0x20, 0x86, 0x9b, 0x2f, 0x23, 0x83, - 0x9b, 0x2f, 0x25, 0x86, 0x9b, 0x2f, 0x27, 0x83, 0x9b, 0x2f, 0x29, 0x86, - 0x9b, 0x2f, 0x2b, 0x83, 0x9b, 0x2f, 0x2d, 0x86, 0x9b, 0x2f, 0x2f, 0x83, - 0x9b, 0x2f, 0x31, 0x86, 0x9b, 0x2f, 0x32, 0x83, 0x9b, 0x2f, 0x34, 0x86, - 0x9b, 0x2f, 0x35, 0x83, 0x9b, 0x2f, 0x37, 0x86, 0x9b, 0x2f, 0x38, 0x83, - 0x9b, 0x2f, 0x3a, 0x86, 0x9b, 0x2f, 0x3b, 0x83, 0x9b, 0x2f, 0x3c, 0x86, - 0x9b, 0x2f, 0x3e, 0x83, 0x9b, 0x2f, 0x3f, 0x86, 0x9b, 0x2f, 0x40, 0x83, - 0x9b, 0x2f, 0x42, 0x86, 0x9b, 0x2f, 0x43, 0x83, 0x9b, 0x2f, 0x44, 0x86, - 0x9b, 0x2f, 0x45, 0x83, 0x9b, 0x2f, 0x46, 0x86, 0x9b, 0x2f, 0x47, 0x83, - 0x9b, 0x2f, 0x48, 0x86, 0x9b, 0x2f, 0x49, 0x83, 0x9b, 0x2f, 0x4a, 0x86, - 0x9b, 0x2f, 0x4b, 0x83, 0x9b, 0x2f, 0x4c, 0x86, 0x9b, 0x2f, 0x4d, 0x83, - 0x9b, 0x2f, 0x4e, 0x86, 0x9b, 0x2f, 0x4f, 0x83, 0x9b, 0x2f, 0x50, 0x86, - 0x9b, 0x2f, 0x51, 0x83, 0x9b, 0x2f, 0x52, 0x86, 0x9b, 0x2f, 0x53, 0x83, - 0x9b, 0x2f, 0x54, 0x86, 0x9b, 0x2f, 0x55, 0x83, 0x9b, 0x2f, 0x56, 0x86, - 0x9b, 0x2f, 0x57, 0x83, 0x9b, 0x2f, 0x58, 0x86, 0x9b, 0x2f, 0x58, 0x83, - 0x9b, 0x2f, 0x59, 0x86, 0x9b, 0x2f, 0x5a, 0x83, 0x9b, 0x2f, 0x5b, 0x86, - 0x9b, 0x2f, 0x5c, 0x83, 0x9b, 0x2f, 0x5d, 0x86, 0x9b, 0x2f, 0x5d, 0x83, - 0x9b, 0x2f, 0x5e, 0x86, 0x9b, 0x2f, 0x5f, 0x83, 0x9b, 0x2f, 0x60, 0x86, - 0x9b, 0x2f, 0x60, 0x83, 0x9b, 0x2f, 0x61, 0x86, 0x9b, 0x2f, 0x62, 0x83, - 0x9b, 0x2f, 0x63, 0x86, 0x9b, 0x2f, 0x63, 0x83, 0x9b, 0x2f, 0x64, 0x86, - 0x9b, 0x2f, 0x65, 0x83, 0x9b, 0x2f, 0x66, 0x86, 0x9b, 0x2f, 0x66, 0x83, - 0x9b, 0x2f, 0x67, 0x86, 0x9b, 0x2f, 0x68, 0x83, 0x9b, 0x2f, 0x68, 0x86, - 0x9b, 0x2f, 0x69, 0x83, 0x9b, 0x2f, 0x6a, 0x86, 0x9b, 0x2f, 0x6a, 0x83, - 0x9b, 0x2f, 0x6b, 0x86, 0x9b, 0x2f, 0x6c, 0x83, 0x9b, 0x2f, 0x6c, 0x86, - 0x9b, 0x2f, 0x6d, 0x83, 0x9b, 0x2f, 0x6e, 0x86, 0x9b, 0x2f, 0x6e, 0x83, - 0x9b, 0x2f, 0x6f, 0x86, 0x9b, 0x2f, 0x70, 0x83, 0x9b, 0x2f, 0x70, 0x86, - 0x9b, 0x2f, 0x71, 0x83, 0x9b, 0x2f, 0x72, 0x86, 0x9b, 0x2f, 0x72, 0x83, - 0x9b, 0x2f, 0x73, 0x86, 0x9b, 0x2f, 0x73, 0x83, 0x9b, 0x2f, 0x74, 0x86, - 0x9b, 0x2f, 0x75, 0x83, 0x9b, 0x2f, 0x75, 0x86, 0x9b, 0x2f, 0x76, 0x83, - 0x9b, 0x2f, 0x76, 0x83, 0x9c, 0x2f, 0x77, 0x83, 0x9b, 0x2f, 0x78, 0x83, - 0x9c, 0x2f, 0x78, 0x83, 0x9b, 0x2f, 0x79, 0x83, 0x9c, 0x2f, 0x79, 0x83, - 0x9b, 0x2f, 0x7a, 0x83, 0x9c, 0x2f, 0x7a, 0x83, 0x9b, 0x2f, 0x7b, 0x83, - 0x9c, 0x2f, 0x7c, 0x83, 0x9b, 0x2f, 0x7c, 0x83, 0x9c, 0x2f, 0x7d, 0x83, - 0x9b, 0x2f, 0x7d, 0x83, 0x9c, 0x2f, 0x7e, 0x83, 0x9b, 0x2f, 0x7e, 0x83, - 0x9c, 0x2f, 0x7f, 0x83, 0x9b, 0x2f, 0x7f, 0x83, 0x9c, 0x2f, 0x80, 0x83, - 0x9b, 0x2f, 0x81, 0x83, 0x9c, 0x2f, 0x81, 0x83, 0x9b, 0x2f, 0x82, 0x83, - 0x9c, 0x2f, 0x82, 0x83, 0x9b, 0x2f, 0x83, 0x83, 0x9c, 0x2f, 0x83, 0x83, - 0x9b, 0x2f, 0x84, 0x83, 0x9c, 0x2f, 0x84, 0x83, 0x9b, 0x2f, 0x85, 0x83, - 0x9c, 0x2f, 0x85, 0x83, 0x9b, 0x2f, 0x86, 0x83, 0x9c, 0x2f, 0x86, 0x83, - 0x9b, 0x2f, 0x87, 0x83, 0x9c, 0x2f, 0x87, 0x83, 0x9b, 0x2f, 0x88, 0x83, - 0x9c, 0x2f, 0x88, 0x83, 0x9b, 0x2f, 0x89, 0x83, 0x9c, 0x2f, 0x89, 0x83, - 0x9b, 0x2f, 0x8a, 0x83, 0x9c, 0x2f, 0x8a, 0x83, 0x9b, 0x2f, 0x8b, 0x83, - 0x9c, 0x2f, 0x8b, 0x83, 0x9b, 0x2f, 0x8c, 0x83, 0x9c, 0x2f, 0x8c, 0x83, - 0x9b, 0x2f, 0x8d, 0x83, 0x9c, 0x2f, 0x8d, 0x83, 0x9b, 0x2f, 0x8e, 0x83, - 0x9c, 0x2f, 0x8e, 0x83, 0x9b, 0x2f, 0x8e, 0x83, 0x9c, 0x2f, 0x8f, 0x83, - 0x9b, 0x2f, 0x8f, 0x83, 0x9c, 0x2f, 0x90, 0x83, 0x9b, 0x2f, 0x90, 0x83, - 0x9c, 0x2f, 0x91, 0x83, 0x9b, 0x2f, 0x91, 0x83, 0x9c, 0x2f, 0x92, 0x83, - 0x9b, 0x2f, 0x92, 0x83, 0x9c, 0x2f, 0x93, 0x83, 0x9b, 0x2f, 0x93, 0x83, - 0x9c, 0x2f, 0x94, 0x83, 0x9b, 0x2f, 0x94, 0x83, 0x9c, 0x2f, 0x94, 0x83, - 0x9b, 0x2f, 0x95, 0x83, 0x9c, 0x2f, 0x95, 0x83, 0x9b, 0x2f, 0x96, 0x83, - 0x9c, 0x2f, 0x96, 0x83, 0x9b, 0x2f, 0x97, 0x83, 0x9c, 0x2f, 0x97, 0x83, - 0x9b, 0x2f, 0x98, 0x83, 0x9c, 0x2f, 0x98, 0x83, 0x9b, 0x2f, 0x98, 0x83, - 0x9c, 0x2f, 0x99, 0x83, 0x9b, 0x2f, 0x99, 0x83, 0x9c, 0x2f, 0x9a, 0x83, - 0x9b, 0x2f, 0x9a, 0x83, 0x9c, 0x2f, 0x9a, 0x83, 0x9b, 0x2f, 0x9b, 0x83, - 0x9c, 0x2f, 0x9b, 0x83, 0x9b, 0x2f, 0x9c, 0x83, 0x9c, 0x2f, 0x9c, 0x83, - 0x9c, 0x2f, 0x9d, 0x83, 0x9d, 0x2f, 0x9d, 0x83, 0x9c, 0x2f, 0x9d, 0x83, - 0x9d, 0x2f, 0x9e, 0x83, 0x9c, 0x2f, 0x9e, 0x83, 0x9d, 0x2f, 0x9f, 0x83, - 0x9c, 0x2f, 0x9f, 0x83, 0x9d, 0x2f, 0x9f, 0x83, 0x9c, 0x2f, 0xa0, 0x83, - 0x9d, 0x2f, 0xa0, 0x84, 0xa0, 0x2f, 0xa1, 0x84, 0xa1, 0x2f, 0xa1, 0x84, - 0xa0, 0x2f, 0xa1, 0x84, 0xa1, 0x2f, 0xa2, 0x84, 0xa0, 0x2f, 0xa2, 0x84, - 0xa1, 0x2f, 0xa3, 0x84, 0xa0, 0x2f, 0xa3, 0x84, 0xa1, 0x2f, 0xa3, 0x84, - 0xa0, 0x2f, 0xa4, 0x84, 0xa1, 0x2f, 0xa4, 0x85, 0xa4, 0x2f, 0xa5, 0x84, - 0xa1, 0x2f, 0xa5, 0x85, 0xa4, 0x2f, 0xa5, 0x85, 0xa4, 0x2f, 0xa6, 0x85, - 0xa4, 0x2f, 0xa6, 0x85, 0xa4, 0x2f, 0xa6, 0x85, 0xa4, 0x2f, 0xa7, 0x85, - 0xa4, 0x2f, 0xa7, 0x85, 0xa4, 0x2f, 0xa8, 0x85, 0xa4, 0x2f, 0xa8, 0x85, - 0xa4, 0x2f, 0xa8, 0x86, 0xa8, 0x2f, 0xa9, 0x86, 0xa7, 0x2f, 0xa9, 0x86, - 0xa8, 0x2f, 0xaa, 0x86, 0xa7, 0x2f, 0xaa, 0x86, 0xa8, 0x2f, 0xaa, 0x86, - 0xa7, 0x2f, 0xab, 0x86, 0xa8, 0x2f, 0xab, 0x86, 0xa7, 0x2f, 0xab, 0x86, - 0xa8, 0x2f, 0xac, 0x87, 0xab, 0x2f, 0xac, 0x87, 0xab, 0x2f, 0xac, 0x87, - 0xab, 0x2f, 0xad, 0x87, 0xab, 0x2f, 0xad, 0x87, 0xab, 0x2f, 0xae, 0x87, - 0xab, 0x2f, 0xae, 0x87, 0xab, 0x2f, 0xae, 0x87, 0xab, 0x2f, 0xaf, 0x87, - 0xab, 0x2f, 0xaf, 0x87, 0xab, 0x2f, 0xaf, 0x88, 0xaf, 0x2f, 0xb0, 0x88, - 0xae, 0x2f, 0xb0, 0x88, 0xaf, 0x2f, 0xb0, 0x88, 0xae, 0x2f, 0xb1, 0x88, - 0xaf, 0x2f, 0xb1, 0x88, 0xae, 0x2f, 0xb2, 0x88, 0xaf, 0x2f, 0xb2, 0x88, - 0xae, 0x2f, 0xb2, 0x88, 0xaf, 0x2f, 0xb3, 0x89, 0xb2, 0x2f, 0xb3, 0x89, - 0xb2, 0x2f, 0xb3, 0x89, 0xb2, 0x2f, 0xb4, 0x89, 0xb2, 0x2f, 0xb4, 0x89, - 0xb2, 0x2f, 0xb4, 0x89, 0xb2, 0x2f, 0xb5, 0x89, 0xb2, 0x2f, 0xb5, 0x89, - 0xb2, 0x2f, 0xb5, 0x89, 0xb2, 0x2f, 0xb6, 0x89, 0xb2, 0x2f, 0xb6, 0x89, - 0xb2, 0x2f, 0xb6, 0x89, 0xb2, 0x2f, 0xb7, 0x8a, 0xb5, 0x2f, 0xb7, 0x8a, - 0xb5, 0x2f, 0xb7, 0x8a, 0xb5, 0x2f, 0xb8, 0x8a, 0xb5, 0x2f, 0xb8, 0x8a, - 0xb5, 0x2f, 0xb8, 0x8a, 0xb5, 0x2f, 0xb9, 0x8a, 0xb5, 0x2f, 0xb9, 0x8a, - 0xb5, 0x2f, 0xb9, 0x8a, 0xb5, 0x2f, 0xba, 0x8b, 0xb8, 0x2f, 0xba, 0x8b, - 0xb8, 0x2f, 0xba, 0x8b, 0xb8, 0x2f, 0xbb, 0x8b, 0xb8, 0x2f, 0xbb, 0x8b, - 0xb8, 0x2f, 0xbb, 0x8b, 0xb8, 0x2f, 0xbc, 0x8b, 0xb8, 0x2f, 0xbc, 0x8b, - 0xb8, 0x2f, 0xbc, 0x8b, 0xb8, 0x2f, 0xbd, 0x8c, 0xbb, 0x2f, 0xbd, 0x8c, - 0xbc, 0x2f, 0xbd, 0x8c, 0xbb, 0x2f, 0xbe, 0x8c, 0xbc, 0x2f, 0xbe, 0x8c, - 0xbb, 0x2f, 0xbe, 0x8c, 0xbc, 0x2f, 0xbf, 0x8c, 0xbb, 0x2f, 0xbf, 0x8c, - 0xbc, 0x2f, 0xbf, 0x8c, 0xbb, 0x2f, 0xc0, 0x8c, 0xbc, 0x2f, 0xc0, 0x8d, - 0xbf, 0x2f, 0xc0, 0x8c, 0xbc, 0x2f, 0xc1, 0x8d, 0xbf, 0x2f, 0xc1, 0x8d, - 0xbe, 0x2f, 0xc1, 0x8d, 0xbf, 0x2f, 0xc1, 0x8d, 0xbe, 0x2f, 0xc2, 0x8d, - 0xbf, 0x2f, 0xc2, 0x8d, 0xbe, 0x2f, 0xc2, 0x8d, 0xbf, 0x2f, 0xc3, 0x8e, - 0xc1, 0x2f, 0xc3, 0x8d, 0xbf, 0x2f, 0xc3, 0x8e, 0xc1, 0x2f, 0xc4, 0x8e, - 0xc1, 0x2f, 0xc4, 0x8e, 0xc1, 0x2f, 0xc4, 0x8e, 0xc1, 0x2f, 0xc5, 0x8e, - 0xc1, 0x2f, 0xc5, 0x8e, 0xc1, 0x2f, 0xc5, 0x8e, 0xc1, 0x2f, 0xc6, 0x8f, - 0xc4, 0x2f, 0xc6, 0x8f, 0xc5, 0x2f, 0xc6, 0x8f, 0xc4, 0x2f, 0xc6, 0x8f, - 0xc5, 0x2f, 0xc7, 0x8f, 0xc4, 0x2f, 0xc7, 0x8f, 0xc5, 0x2f, 0xc7, 0x8f, - 0xc4, 0x2f, 0xc8, 0x8f, 0xc5, 0x2f, 0xc8, 0x8f, 0xc4, 0x2f, 0xc8, 0x8f, - 0xc5, 0x2f, 0xc9, 0x8f, 0xc4, 0x2f, 0xc9, 0x8f, 0xc5, 0x2f, 0xc9, 0x90, - 0xc7, 0x2f, 0xc9, 0x90, 0xc7, 0x2f, 0xca, 0x90, 0xc7, 0x2f, 0xca, 0x90, - 0xc7, 0x2f, 0xca, 0x90, 0xc7, 0x2f, 0xcb, 0x90, 0xc7, 0x2f, 0xcb, 0x90, - 0xc7, 0x2f, 0xcb, 0x90, 0xc7, 0x2f, 0xcc, 0x90, 0xc7, 0x2f, 0xcc, 0x91, - 0xca, 0x2f, 0xcc, 0x90, 0xc7, 0x2f, 0xcc, 0x91, 0xca, 0x2f, 0xcd, 0x91, - 0xca, 0x2f, 0xcd, 0x91, 0xca, 0x2f, 0xcd, 0x91, 0xca, 0x2f, 0xce, 0x91, - 0xca, 0x2f, 0xce, 0x91, 0xca, 0x2f, 0xce, 0x91, 0xca, 0x2f, 0xce, 0x92, - 0xcd, 0x2f, 0xcf, 0x92, 0xcd, 0x2f, 0xcf, 0x92, 0xcd, 0x2f, 0xcf, 0x92, - 0xcd, 0x2f, 0xd0, 0x92, 0xcd, 0x2f, 0xd0, 0x92, 0xcd, 0x2f, 0xd0, 0x92, - 0xcd, 0x2f, 0xd0, 0x92, 0xcd, 0x2f, 0xd1, 0x92, 0xcd, 0x2f, 0xd1, 0x92, - 0xcd, 0x2f, 0xd1, 0x93, 0xd0, 0x2f, 0xd2, 0x92, 0xcd, 0x2f, 0xd2, 0x93, - 0xd0, 0x2f, 0xd2, 0x93, 0xcf, 0x2f, 0xd2, 0x93, 0xd0, 0x2f, 0xd3, 0x93, - 0xcf, 0x2f, 0xd3, 0x93, 0xd0, 0x2f, 0xd3, 0x93, 0xcf, 0x2f, 0xd4, 0x93, - 0xd0, 0x2f, 0xd4, 0x93, 0xcf, 0x2f, 0xd4, 0x93, 0xd0, 0x2f, 0xd4, 0x94, - 0xd2, 0x2f, 0xd5, 0x94, 0xd2, 0x2f, 0xd5, 0x94, 0xd2, 0x2f, 0xd5, 0x94, - 0xd2, 0x2f, 0xd6, 0x94, 0xd2, 0x2f, 0xd6, 0x94, 0xd2, 0x2f, 0xd6, 0x94, - 0xd2, 0x2f, 0xd6, 0x94, 0xd2, 0x2f, 0xd7, 0x94, 0xd2, 0x2f, 0xd7, 0x94, - 0xd2, 0x2f, 0xd7, 0x94, 0xd5, 0x2f, 0xd7, 0x94, 0xd2, 0x2f, 0xd8, 0x94, - 0xd5, 0x2f, 0xd8, 0x94, 0xd5, 0x2f, 0xd8, 0x94, 0xd5, 0x2f, 0xd9, 0x94, - 0xd5, 0x2f, 0xd9, 0x94, 0xd5, 0x2f, 0xd9, 0x94, 0xd5, 0x2f, 0xd9, 0x94, - 0xd5, 0x2f, 0xda, 0x95, 0xd7, 0x2f, 0xda, 0x94, 0xd5, 0x2f, 0xda, 0x95, - 0xd7, 0x2f, 0xda, 0x95, 0xd7, 0x2f, 0xdb, 0x95, 0xd7, 0x2f, 0xdb, 0x95, - 0xd7, 0x2f, 0xdb, 0x95, 0xd7, 0x2f, 0xdb, 0x95, 0xd7, 0x2f, 0xdc, 0x95, - 0xd7, 0x2f, 0xdc, 0x96, 0xda, 0x2f, 0xdc, 0x96, 0xda, 0x2f, 0xdd, 0x96, - 0xda, 0x2f, 0xdd, 0x96, 0xda, 0x2f, 0xdd, 0x96, 0xda, 0x2f, 0xdd, 0x96, - 0xda, 0x2f, 0xde, 0x96, 0xda, 0x2f, 0xde, 0x96, 0xda, 0x2f, 0xde, 0x96, - 0xda, 0x2f, 0xde, 0x96, 0xda, 0x2f, 0xdf, 0x97, 0xdd, 0x2f, 0xdf, 0x96, - 0xda, 0x2f, 0xdf, 0x97, 0xdd, 0x2f, 0xdf, 0x97, 0xdc, 0x2f, 0xe0, 0x97, - 0xdd, 0x2f, 0xe0, 0x97, 0xdc, 0x2f, 0xe0, 0x97, 0xdd, 0x2f, 0xe1, 0x97, - 0xdc, 0x2f, 0xe1, 0x97, 0xdd, 0x2f, 0xe1, 0x98, 0xdf, 0x2f, 0xe1, 0x97, - 0xdd, 0x2f, 0xe2, 0x98, 0xdf, 0x2f, 0xe2, 0x97, 0xdd, 0x2f, 0xe2, 0x98, - 0xdf, 0x2f, 0xe2, 0x98, 0xdf, 0x2f, 0xe3, 0x98, 0xdf, 0x2f, 0xe3, 0x98, - 0xdf, 0x2f, 0xe3, 0x98, 0xdf, 0x2f, 0xe3, 0x98, 0xdf, 0x2f, 0xe4, 0x98, - 0xdf, 0x2f, 0xe4, 0x99, 0xe1, 0x2f, 0xe4, 0x99, 0xe2, 0x2f, 0xe4, 0x99, - 0xe1, 0x2f, 0xe5, 0x99, 0xe2, 0x2f, 0xe5, 0x99, 0xe1, 0x2f, 0xe5, 0x99, - 0xe2, 0x2f, 0xe5, 0x99, 0xe1, 0x2f, 0xe6, 0x99, 0xe2, 0x2f, 0xe6, 0x99, - 0xe1, 0x2f, 0xe6, 0x99, 0xe2, 0x2f, 0xe6, 0x9a, 0xe4, 0x2f, 0xe7, 0x99, - 0xe2, 0x2f, 0xe7, 0x9a, 0xe4, 0x2f, 0xe7, 0x9a, 0xe4, 0x2f, 0xe7, 0x9a, - 0xe4, 0x2f, 0xe8, 0x9a, 0xe4, 0x2f, 0xe8, 0x9a, 0xe4, 0x2f, 0xe8, 0x9a, - 0xe4, 0x2f, 0xe8, 0x9a, 0xe4, 0x2f, 0xe9, 0x9a, 0xe6, 0x2f, 0xe9, 0x9a, - 0xe4, 0x2f, 0xe9, 0x9a, 0xe6, 0x2f, 0xe9, 0x9a, 0xe6, 0x2f, 0xea, 0x9a, - 0xe6, 0x2f, 0xea, 0x9a, 0xe6, 0x2f, 0xea, 0x9a, 0xe6, 0x2f, 0xea, 0x9a, - 0xe6, 0x2f, 0xeb, 0x9a, 0xe6, 0x2f, 0xeb, 0x9b, 0xe8, 0x2f, 0xeb, 0x9b, - 0xe9, 0x2f, 0xeb, 0x9b, 0xe8, 0x2f, 0xec, 0x9b, 0xe9, 0x2f, 0xec, 0x9b, - 0xe8, 0x2f, 0xec, 0x9b, 0xe9, 0x2f, 0xec, 0x9b, 0xe8, 0x2f, 0xec, 0x9b, - 0xe9, 0x2f, 0xed, 0x9b, 0xe8, 0x2f, 0xed, 0x9b, 0xe9, 0x2f, 0xed, 0x9b, - 0xe8, 0x2f, 0xed, 0x9b, 0xe9, 0x2f, 0xee, 0x9c, 0xeb, 0x2f, 0xee, 0x9b, - 0xe9, 0x2f, 0xee, 0x9c, 0xeb, 0x2f, 0xee, 0x9c, 0xeb, 0x2f, 0xef, 0x9c, - 0xeb, 0x2f, 0xef, 0x9c, 0xeb, 0x2f, 0xef, 0x9c, 0xeb, 0x2f, 0xef, 0x9c, - 0xeb, 0x2f, 0xf0, 0x9c, 0xeb, 0x2f, 0xf0, 0x9d, 0xed, 0x2f, 0xf0, 0x9d, - 0xed, 0x2f, 0xf0, 0x9d, 0xed, 0x2f, 0xf1, 0x9d, 0xed, 0x2f, 0xf1, 0x9d, - 0xed, 0x2f, 0xf1, 0x9d, 0xed, 0x2f, 0xf1, 0x9d, 0xed, 0x2f, 0xf2, 0x9d, - 0xed, 0x2f, 0xf2, 0x9d, 0xed, 0x2f, 0xf2, 0x9d, 0xed, 0x2f, 0xf2, 0x9e, - 0xef, 0x2f, 0xf2, 0x9d, 0xed, 0x2f, 0xf3, 0x9e, 0xef, 0x2f, 0xf3, 0x9e, - 0xef, 0x2f, 0xf3, 0x9e, 0xef, 0x2f, 0xf3, 0x9e, 0xef, 0x2f, 0xf4, 0x9e, - 0xef, 0x2f, 0xf4, 0x9e, 0xef, 0x2f, 0xf4, 0x9e, 0xef, 0x2f, 0xf4, 0x9f, - 0xf2, 0x2f, 0xf5, 0x9e, 0xef, 0x2f, 0xf5, 0x9f, 0xf2, 0x2f, 0xf5, 0x9e, - 0xef, 0x2f, 0xf5, 0x9f, 0xf2, 0x2f, 0xf5, 0x9f, 0xf1, 0x2f, 0xf6, 0x9f, - 0xf2, 0x2f, 0xf6, 0x9f, 0xf1, 0x2f, 0xf6, 0x9f, 0xf2, 0x2f, 0xf6, 0x9f, - 0xf4, 0x2f, 0xf7, 0x9f, 0xf4, 0x2f, 0xf7, 0x9f, 0xf4, 0x2f, 0xf7, 0x9f, - 0xf4, 0x2f, 0xf7, 0x9f, 0xf4, 0x2f, 0xf8, 0x9f, 0xf4, 0x2f, 0xf8, 0x9f, - 0xf4, 0x2f, 0xf8, 0x9f, 0xf4, 0x2f, 0xf8, 0x9f, 0xf4, 0x2f, 0xf8, 0x9f, - 0xf4, 0x2f, 0xf9, 0xa0, 0xf6, 0x2f, 0xf9, 0x9f, 0xf4, 0x2f, 0xf9, 0xa0, - 0xf6, 0x2f, 0xf9, 0x9f, 0xf4, 0x2f, 0xfa, 0xa0, 0xf6, 0x2f, 0xfa, 0xa0, - 0xf6, 0x2f, 0xfa, 0xa0, 0xf6, 0x2f, 0xfa, 0xa0, 0xf6, 0x2f, 0xfa, 0xa0, - 0xf6, 0x2f, 0xfb, 0xa0, 0xf6, 0x2f, 0xfb, 0xa0, 0xf6, 0x2f, 0xfb, 0xa1, - 0xf8, 0x2f, 0xfb, 0xa0, 0xf6, 0x2f, 0xfc, 0xa1, 0xf8, 0x2f, 0xfc, 0xa1, - 0xf8, 0x2f, 0xfc, 0xa1, 0xf8, 0x2f, 0xfc, 0xa1, 0xf8, 0x2f, 0xfc, 0xa1, - 0xf8, 0x2f, 0xfd, 0xa1, 0xf8, 0x2f, 0xfd, 0xa1, 0xf8, 0x2f, 0xfd, 0xa2, - 0xfa, 0x2f, 0xfd, 0xa2, 0xfa, 0x2f, 0xfe, 0xa2, 0xfa, 0x2f, 0xfe, 0xa2, - 0xfa, 0x2f, 0xfe, 0xa2, 0xfa, 0x2f, 0xfe, 0xa2, 0xfa, 0x2f, 0xfe, 0xa2, - 0xfa, 0x2f, 0xff, 0xa2, 0xfa, 0x2f, 0xff, 0xa2, 0xfa, 0x2f, 0x03, 0x89, - 0x9a, 0x30, 0x0a, 0x86, 0x9b, 0x30, 0x0f, 0x89, 0x9a, 0x30, 0x14, 0x86, - 0x9b, 0x30, 0x17, 0x89, 0x9a, 0x30, 0x1b, 0x86, 0x9b, 0x30, 0x1e, 0x89, - 0x9a, 0x30, 0x20, 0x86, 0x9b, 0x30, 0x23, 0x89, 0x9a, 0x30, 0x25, 0x86, - 0x9b, 0x30, 0x27, 0x89, 0x9a, 0x30, 0x29, 0x86, 0x9b, 0x30, 0x2b, 0x89, - 0x9a, 0x30, 0x2d, 0x86, 0x9b, 0x30, 0x2f, 0x89, 0x9a, 0x30, 0x31, 0x86, - 0x9b, 0x30, 0x32, 0x84, 0x9b, 0x30, 0x34, 0x86, 0x9b, 0x30, 0x35, 0x84, - 0x9b, 0x30, 0x37, 0x86, 0x9b, 0x30, 0x38, 0x84, 0x9b, 0x30, 0x3a, 0x86, - 0x9b, 0x30, 0x3b, 0x84, 0x9b, 0x30, 0x3c, 0x86, 0x9b, 0x30, 0x3e, 0x84, - 0x9b, 0x30, 0x3f, 0x86, 0x9b, 0x30, 0x40, 0x84, 0x9b, 0x30, 0x42, 0x86, - 0x9b, 0x30, 0x43, 0x84, 0x9b, 0x30, 0x44, 0x86, 0x9b, 0x30, 0x45, 0x84, - 0x9b, 0x30, 0x46, 0x86, 0x9b, 0x30, 0x47, 0x84, 0x9b, 0x30, 0x48, 0x86, - 0x9b, 0x30, 0x49, 0x84, 0x9b, 0x30, 0x4a, 0x86, 0x9b, 0x30, 0x4b, 0x84, - 0x9b, 0x30, 0x4c, 0x86, 0x9b, 0x30, 0x4d, 0x84, 0x9b, 0x30, 0x4e, 0x86, - 0x9b, 0x30, 0x4f, 0x84, 0x9b, 0x30, 0x50, 0x86, 0x9b, 0x30, 0x51, 0x84, - 0x9b, 0x30, 0x52, 0x86, 0x9b, 0x30, 0x53, 0x84, 0x9b, 0x30, 0x54, 0x86, - 0x9b, 0x30, 0x55, 0x84, 0x9b, 0x30, 0x56, 0x86, 0x9b, 0x30, 0x57, 0x84, - 0x9b, 0x30, 0x58, 0x86, 0x9b, 0x30, 0x58, 0x84, 0x9b, 0x30, 0x59, 0x86, - 0x9b, 0x30, 0x5a, 0x84, 0x9b, 0x30, 0x5b, 0x86, 0x9b, 0x30, 0x5c, 0x84, - 0x9b, 0x30, 0x5d, 0x86, 0x9b, 0x30, 0x5d, 0x84, 0x9b, 0x30, 0x5e, 0x86, - 0x9b, 0x30, 0x5f, 0x84, 0x9b, 0x30, 0x60, 0x86, 0x9b, 0x30, 0x60, 0x84, - 0x9b, 0x30, 0x61, 0x86, 0x9b, 0x30, 0x62, 0x84, 0x9b, 0x30, 0x63, 0x86, - 0x9b, 0x30, 0x63, 0x84, 0x9b, 0x30, 0x64, 0x86, 0x9b, 0x30, 0x65, 0x84, - 0x9b, 0x30, 0x66, 0x86, 0x9b, 0x30, 0x66, 0x84, 0x9b, 0x30, 0x67, 0x86, - 0x9b, 0x30, 0x68, 0x84, 0x9b, 0x30, 0x68, 0x86, 0x9b, 0x30, 0x69, 0x84, - 0x9b, 0x30, 0x6a, 0x86, 0x9b, 0x30, 0x6a, 0x84, 0x9b, 0x30, 0x6b, 0x86, - 0x9b, 0x30, 0x6c, 0x84, 0x9b, 0x30, 0x6c, 0x86, 0x9b, 0x30, 0x6d, 0x84, - 0x9b, 0x30, 0x6e, 0x86, 0x9b, 0x30, 0x6e, 0x84, 0x9b, 0x30, 0x6f, 0x86, - 0x9b, 0x30, 0x70, 0x84, 0x9b, 0x30, 0x70, 0x86, 0x9b, 0x30, 0x71, 0x84, - 0x9b, 0x30, 0x72, 0x86, 0x9b, 0x30, 0x72, 0x84, 0x9b, 0x30, 0x73, 0x86, - 0x9b, 0x30, 0x73, 0x84, 0x9b, 0x30, 0x74, 0x86, 0x9b, 0x30, 0x75, 0x84, - 0x9b, 0x30, 0x75, 0x86, 0x9b, 0x30, 0x76, 0x84, 0x9b, 0x30, 0x76, 0x86, - 0x9b, 0x30, 0x77, 0x84, 0x9b, 0x30, 0x78, 0x86, 0x9b, 0x30, 0x78, 0x84, - 0x9b, 0x30, 0x79, 0x86, 0x9b, 0x30, 0x79, 0x84, 0x9b, 0x30, 0x7a, 0x86, - 0x9b, 0x30, 0x7a, 0x84, 0x9b, 0x30, 0x7b, 0x86, 0x9b, 0x30, 0x7c, 0x84, - 0x9b, 0x30, 0x7c, 0x86, 0x9b, 0x30, 0x7d, 0x84, 0x9b, 0x30, 0x7d, 0x86, - 0x9b, 0x30, 0x7e, 0x84, 0x9b, 0x30, 0x7e, 0x86, 0x9b, 0x30, 0x7f, 0x84, - 0x9b, 0x30, 0x7f, 0x86, 0x9b, 0x30, 0x80, 0x84, 0x9b, 0x30, 0x81, 0x86, - 0x9b, 0x30, 0x81, 0x84, 0x9b, 0x30, 0x82, 0x86, 0x9b, 0x30, 0x82, 0x84, - 0x9b, 0x30, 0x83, 0x86, 0x9b, 0x30, 0x83, 0x84, 0x9b, 0x30, 0x84, 0x86, - 0x9b, 0x30, 0x84, 0x84, 0x9b, 0x30, 0x85, 0x86, 0x9b, 0x30, 0x85, 0x84, - 0x9b, 0x30, 0x86, 0x84, 0x9c, 0x30, 0x86, 0x84, 0x9b, 0x30, 0x87, 0x84, - 0x9c, 0x30, 0x87, 0x84, 0x9b, 0x30, 0x88, 0x84, 0x9c, 0x30, 0x88, 0x84, - 0x9b, 0x30, 0x89, 0x84, 0x9c, 0x30, 0x89, 0x84, 0x9b, 0x30, 0x8a, 0x84, - 0x9c, 0x30, 0x8a, 0x84, 0x9b, 0x30, 0x8b, 0x84, 0x9c, 0x30, 0x8b, 0x84, - 0x9b, 0x30, 0x8c, 0x84, 0x9c, 0x30, 0x8c, 0x84, 0x9b, 0x30, 0x8d, 0x84, - 0x9c, 0x30, 0x8d, 0x84, 0x9b, 0x30, 0x8e, 0x84, 0x9c, 0x30, 0x8e, 0x84, - 0x9b, 0x30, 0x8e, 0x84, 0x9c, 0x30, 0x8f, 0x84, 0x9b, 0x30, 0x8f, 0x84, - 0x9c, 0x30, 0x90, 0x84, 0x9b, 0x30, 0x90, 0x84, 0x9c, 0x30, 0x91, 0x84, - 0x9b, 0x30, 0x91, 0x84, 0x9c, 0x30, 0x92, 0x84, 0x9b, 0x30, 0x92, 0x84, - 0x9c, 0x30, 0x93, 0x84, 0x9b, 0x30, 0x93, 0x84, 0x9c, 0x30, 0x94, 0x84, - 0x9b, 0x30, 0x94, 0x84, 0x9c, 0x30, 0x94, 0x84, 0x9b, 0x30, 0x95, 0x84, - 0x9c, 0x30, 0x95, 0x84, 0x9b, 0x30, 0x96, 0x84, 0x9c, 0x30, 0x96, 0x84, - 0x9b, 0x30, 0x97, 0x84, 0x9c, 0x30, 0x97, 0x84, 0x9b, 0x30, 0x98, 0x84, - 0x9c, 0x30, 0x98, 0x84, 0x9b, 0x30, 0x98, 0x84, 0x9c, 0x30, 0x99, 0x84, - 0x9b, 0x30, 0x99, 0x84, 0x9c, 0x30, 0x9a, 0x84, 0x9b, 0x30, 0x9a, 0x84, - 0x9c, 0x30, 0x9a, 0x84, 0x9b, 0x30, 0x9b, 0x84, 0x9c, 0x30, 0x9b, 0x84, - 0x9b, 0x30, 0x9c, 0x84, 0x9c, 0x30, 0x9c, 0x84, 0x9c, 0x30, 0x9d, 0x84, - 0x9d, 0x30, 0x9d, 0x84, 0x9d, 0x30, 0x9d, 0x84, 0x9d, 0x30, 0x9e, 0x84, - 0x9e, 0x30, 0x9e, 0x84, 0x9e, 0x30, 0x9f, 0x84, 0x9f, 0x30, 0x9f, 0x84, - 0x9e, 0x30, 0x9f, 0x84, 0x9f, 0x30, 0xa0, 0x84, 0x9e, 0x30, 0xa0, 0x84, - 0x9f, 0x30, 0xa1, 0x84, 0x9e, 0x30, 0xa1, 0x84, 0x9f, 0x30, 0xa1, 0x84, - 0x9e, 0x30, 0xa2, 0x84, 0x9f, 0x30, 0xa2, 0x85, 0xa2, 0x30, 0xa3, 0x85, - 0xa2, 0x30, 0xa3, 0x85, 0xa2, 0x30, 0xa3, 0x85, 0xa2, 0x30, 0xa4, 0x85, - 0xa2, 0x30, 0xa4, 0x85, 0xa2, 0x30, 0xa5, 0x85, 0xa2, 0x30, 0xa5, 0x85, - 0xa2, 0x30, 0xa5, 0x85, 0xa2, 0x30, 0xa6, 0x86, 0xa6, 0x30, 0xa6, 0x86, - 0xa6, 0x30, 0xa6, 0x86, 0xa6, 0x30, 0xa7, 0x86, 0xa6, 0x30, 0xa7, 0x86, - 0xa6, 0x30, 0xa8, 0x86, 0xa6, 0x30, 0xa8, 0x86, 0xa6, 0x30, 0xa8, 0x86, - 0xa6, 0x30, 0xa9, 0x86, 0xa6, 0x30, 0xa9, 0x86, 0xa6, 0x30, 0xaa, 0x86, - 0xa6, 0x30, 0xaa, 0x86, 0xa6, 0x30, 0xaa, 0x87, 0xaa, 0x30, 0xab, 0x87, - 0xa9, 0x30, 0xab, 0x87, 0xaa, 0x30, 0xab, 0x87, 0xa9, 0x30, 0xac, 0x87, - 0xaa, 0x30, 0xac, 0x87, 0xa9, 0x30, 0xac, 0x87, 0xaa, 0x30, 0xad, 0x87, - 0xa9, 0x30, 0xad, 0x87, 0xaa, 0x30, 0xae, 0x88, 0xad, 0x30, 0xae, 0x88, - 0xad, 0x30, 0xae, 0x88, 0xad, 0x30, 0xaf, 0x88, 0xad, 0x30, 0xaf, 0x88, - 0xad, 0x30, 0xaf, 0x88, 0xad, 0x30, 0xb0, 0x88, 0xad, 0x30, 0xb0, 0x88, - 0xad, 0x30, 0xb0, 0x88, 0xad, 0x30, 0xb1, 0x88, 0xad, 0x30, 0xb1, 0x89, - 0xb0, 0x30, 0xb2, 0x89, 0xb0, 0x30, 0xb2, 0x89, 0xb0, 0x30, 0xb2, 0x89, - 0xb0, 0x30, 0xb3, 0x89, 0xb0, 0x30, 0xb3, 0x89, 0xb0, 0x30, 0xb3, 0x89, - 0xb0, 0x30, 0xb4, 0x89, 0xb2, 0x30, 0xb4, 0x89, 0xb0, 0x30, 0xb4, 0x89, - 0xb2, 0x30, 0xb5, 0x89, 0xb2, 0x30, 0xb5, 0x89, 0xb2, 0x30, 0xb5, 0x89, - 0xb2, 0x30, 0xb6, 0x89, 0xb2, 0x30, 0xb6, 0x8a, 0xb3, 0x30, 0xb6, 0x8a, - 0xb4, 0x30, 0xb7, 0x8a, 0xb3, 0x30, 0xb7, 0x8a, 0xb4, 0x30, 0xb7, 0x8a, - 0xb3, 0x30, 0xb8, 0x8a, 0xb4, 0x30, 0xb8, 0x8b, 0xb7, 0x30, 0xb8, 0x8b, - 0xb7, 0x30, 0xb9, 0x8b, 0xb7, 0x30, 0xb9, 0x8b, 0xb7, 0x30, 0xb9, 0x8b, - 0xb7, 0x30, 0xba, 0x8b, 0xb7, 0x30, 0xba, 0x8b, 0xb7, 0x30, 0xba, 0x8b, - 0xb7, 0x30, 0xbb, 0x8b, 0xb7, 0x30, 0xbb, 0x8b, 0xb7, 0x30, 0xbb, 0x8c, - 0xba, 0x30, 0xbc, 0x8c, 0xba, 0x30, 0xbc, 0x8c, 0xba, 0x30, 0xbc, 0x8c, - 0xba, 0x30, 0xbd, 0x8c, 0xba, 0x30, 0xbd, 0x8c, 0xba, 0x30, 0xbd, 0x8c, - 0xba, 0x30, 0xbe, 0x8c, 0xba, 0x30, 0xbe, 0x8c, 0xba, 0x30, 0xbe, 0x8d, - 0xbd, 0x30, 0xbf, 0x8d, 0xbd, 0x30, 0xbf, 0x8d, 0xbd, 0x30, 0xbf, 0x8d, - 0xbd, 0x30, 0xc0, 0x8d, 0xbd, 0x30, 0xc0, 0x8d, 0xbd, 0x30, 0xc0, 0x8d, - 0xbd, 0x30, 0xc1, 0x8d, 0xbd, 0x30, 0xc1, 0x8d, 0xbd, 0x30, 0xc1, 0x8e, - 0xc0, 0x30, 0xc1, 0x8e, 0xc0, 0x30, 0xc2, 0x8e, 0xc0, 0x30, 0xc2, 0x8e, - 0xc0, 0x30, 0xc2, 0x8e, 0xc0, 0x30, 0xc3, 0x8e, 0xc0, 0x30, 0xc3, 0x8e, - 0xc0, 0x30, 0xc3, 0x8e, 0xc0, 0x30, 0xc4, 0x8e, 0xc0, 0x30, 0xc4, 0x8e, - 0xc0, 0x30, 0xc4, 0x8e, 0xc3, 0x30, 0xc5, 0x8e, 0xc0, 0x30, 0xc5, 0x8e, - 0xc3, 0x30, 0xc5, 0x8e, 0xc3, 0x30, 0xc6, 0x8e, 0xc3, 0x30, 0xc6, 0x8e, - 0xc3, 0x30, 0xc6, 0x8e, 0xc3, 0x30, 0xc6, 0x8e, 0xc3, 0x30, 0xc7, 0x8e, - 0xc3, 0x30, 0xc7, 0x8f, 0xc6, 0x30, 0xc7, 0x8e, 0xc3, 0x30, 0xc8, 0x8f, - 0xc6, 0x30, 0xc8, 0x8f, 0xc6, 0x30, 0xc8, 0x8f, 0xc6, 0x30, 0xc9, 0x8f, - 0xc6, 0x30, 0xc9, 0x8f, 0xc6, 0x30, 0xc9, 0x8f, 0xc6, 0x30, 0xc9, 0x8f, - 0xc6, 0x30, 0xca, 0x8f, 0xc6, 0x30, 0xca, 0x8f, 0xc6, 0x30, 0xca, 0x90, - 0xc9, 0x30, 0xcb, 0x90, 0xc9, 0x30, 0xcb, 0x90, 0xc9, 0x30, 0xcb, 0x90, - 0xc9, 0x30, 0xcc, 0x90, 0xc9, 0x30, 0xcc, 0x90, 0xc9, 0x30, 0xcc, 0x90, - 0xc9, 0x30, 0xcc, 0x90, 0xc9, 0x30, 0xcd, 0x90, 0xc9, 0x30, 0xcd, 0x90, - 0xc9, 0x30, 0xcd, 0x91, 0xcc, 0x30, 0xce, 0x90, 0xc9, 0x30, 0xce, 0x91, - 0xcc, 0x30, 0xce, 0x91, 0xcb, 0x30, 0xce, 0x91, 0xcc, 0x30, 0xcf, 0x91, - 0xcb, 0x30, 0xcf, 0x91, 0xcc, 0x30, 0xcf, 0x91, 0xcb, 0x30, 0xd0, 0x91, - 0xcc, 0x30, 0xd0, 0x92, 0xce, 0x30, 0xd0, 0x92, 0xce, 0x30, 0xd0, 0x92, - 0xce, 0x30, 0xd1, 0x92, 0xce, 0x30, 0xd1, 0x92, 0xce, 0x30, 0xd1, 0x92, - 0xce, 0x30, 0xd2, 0x92, 0xce, 0x30, 0xd2, 0x92, 0xce, 0x30, 0xd2, 0x92, - 0xce, 0x30, 0xd2, 0x92, 0xce, 0x30, 0xd3, 0x93, 0xd1, 0x30, 0xd3, 0x92, - 0xce, 0x30, 0xd3, 0x93, 0xd1, 0x30, 0xd4, 0x93, 0xd1, 0x30, 0xd4, 0x93, - 0xd1, 0x30, 0xd4, 0x93, 0xd1, 0x30, 0xd4, 0x93, 0xd1, 0x30, 0xd5, 0x93, - 0xd1, 0x30, 0xd5, 0x93, 0xd1, 0x30, 0xd5, 0x93, 0xd1, 0x30, 0xd6, 0x93, - 0xd1, 0x30, 0xd6, 0x94, 0xd4, 0x30, 0xd6, 0x94, 0xd3, 0x30, 0xd6, 0x94, - 0xd4, 0x30, 0xd7, 0x94, 0xd3, 0x30, 0xd7, 0x94, 0xd4, 0x30, 0xd7, 0x94, - 0xd3, 0x30, 0xd7, 0x94, 0xd4, 0x30, 0xd8, 0x94, 0xd3, 0x30, 0xd8, 0x94, - 0xd4, 0x30, 0xd8, 0x95, 0xd6, 0x30, 0xd9, 0x95, 0xd6, 0x30, 0xd9, 0x95, - 0xd6, 0x30, 0xd9, 0x95, 0xd6, 0x30, 0xd9, 0x95, 0xd6, 0x30, 0xda, 0x95, - 0xd6, 0x30, 0xda, 0x95, 0xd6, 0x30, 0xda, 0x95, 0xd6, 0x30, 0xda, 0x95, - 0xd6, 0x30, 0xdb, 0x95, 0xd6, 0x30, 0xdb, 0x96, 0xd9, 0x30, 0xdb, 0x95, - 0xd6, 0x30, 0xdb, 0x96, 0xd9, 0x30, 0xdc, 0x96, 0xd9, 0x30, 0xdc, 0x96, - 0xd9, 0x30, 0xdc, 0x96, 0xd9, 0x30, 0xdd, 0x96, 0xd9, 0x30, 0xdd, 0x96, - 0xd9, 0x30, 0xdd, 0x96, 0xd9, 0x30, 0xdd, 0x97, 0xdb, 0x30, 0xde, 0x96, - 0xd9, 0x30, 0xde, 0x97, 0xdb, 0x30, 0xde, 0x97, 0xdb, 0x30, 0xde, 0x97, - 0xdb, 0x30, 0xdf, 0x97, 0xdb, 0x30, 0xdf, 0x97, 0xdb, 0x30, 0xdf, 0x97, - 0xdb, 0x30, 0xdf, 0x97, 0xdb, 0x30, 0xe0, 0x98, 0xde, 0x30, 0xe0, 0x98, - 0xde, 0x30, 0xe0, 0x98, 0xde, 0x30, 0xe1, 0x98, 0xde, 0x30, 0xe1, 0x98, - 0xde, 0x30, 0xe1, 0x98, 0xde, 0x30, 0xe1, 0x98, 0xde, 0x30, 0xe2, 0x98, - 0xde, 0x30, 0xe2, 0x98, 0xde, 0x30, 0xe2, 0x98, 0xde, 0x30, 0xe2, 0x98, - 0xe0, 0x30, 0xe3, 0x98, 0xde, 0x30, 0xe3, 0x98, 0xe0, 0x30, 0xe3, 0x98, - 0xde, 0x30, 0xe3, 0x98, 0xe0, 0x30, 0xe4, 0x98, 0xe0, 0x30, 0xe4, 0x98, - 0xe0, 0x30, 0xe4, 0x98, 0xe0, 0x30, 0xe4, 0x98, 0xe0, 0x30, 0xe5, 0x98, - 0xe0, 0x30, 0xe5, 0x98, 0xe0, 0x30, 0xe5, 0x99, 0xe3, 0x30, 0xe5, 0x98, - 0xe0, 0x30, 0xe6, 0x99, 0xe3, 0x30, 0xe6, 0x99, 0xe2, 0x30, 0xe6, 0x99, - 0xe3, 0x30, 0xe6, 0x99, 0xe2, 0x30, 0xe7, 0x99, 0xe3, 0x30, 0xe7, 0x99, - 0xe2, 0x30, 0xe7, 0x99, 0xe3, 0x30, 0xe7, 0x9a, 0xe5, 0x30, 0xe8, 0x9a, - 0xe5, 0x30, 0xe8, 0x9a, 0xe5, 0x30, 0xe8, 0x9a, 0xe5, 0x30, 0xe8, 0x9a, - 0xe5, 0x30, 0xe9, 0x9a, 0xe5, 0x30, 0xe9, 0x9a, 0xe5, 0x30, 0xe9, 0x9a, - 0xe5, 0x30, 0xe9, 0x9a, 0xe5, 0x30, 0xea, 0x9a, 0xe5, 0x30, 0xea, 0x9b, - 0xe7, 0x30, 0xea, 0x9a, 0xe5, 0x30, 0xea, 0x9b, 0xe7, 0x30, 0xeb, 0x9b, - 0xe7, 0x30, 0xeb, 0x9b, 0xe7, 0x30, 0xeb, 0x9b, 0xe7, 0x30, 0xeb, 0x9b, - 0xe7, 0x30, 0xec, 0x9b, 0xe7, 0x30, 0xec, 0x9b, 0xe7, 0x30, 0xec, 0x9c, - 0xea, 0x30, 0xec, 0x9c, 0xea, 0x30, 0xec, 0x9c, 0xea, 0x30, 0xed, 0x9c, - 0xea, 0x30, 0xed, 0x9c, 0xea, 0x30, 0xed, 0x9c, 0xea, 0x30, 0xed, 0x9c, - 0xea, 0x30, 0xee, 0x9c, 0xea, 0x30, 0xee, 0x9c, 0xea, 0x30, 0xee, 0x9c, - 0xea, 0x30, 0xee, 0x9c, 0xea, 0x30, 0xef, 0x9c, 0xea, 0x30, 0xef, 0x9d, - 0xec, 0x30, 0xef, 0x9c, 0xea, 0x30, 0xef, 0x9d, 0xec, 0x30, 0xf0, 0x9d, - 0xec, 0x30, 0xf0, 0x9d, 0xec, 0x30, 0xf0, 0x9d, 0xec, 0x30, 0xf0, 0x9d, - 0xec, 0x30, 0xf1, 0x9d, 0xec, 0x30, 0xf1, 0x9d, 0xec, 0x30, 0xf1, 0x9d, - 0xee, 0x30, 0xf1, 0x9d, 0xec, 0x30, 0xf2, 0x9d, 0xee, 0x30, 0xf2, 0x9d, - 0xee, 0x30, 0xf2, 0x9d, 0xee, 0x30, 0xf2, 0x9d, 0xee, 0x30, 0xf2, 0x9d, - 0xee, 0x30, 0xf3, 0x9d, 0xee, 0x30, 0xf3, 0x9d, 0xee, 0x30, 0xf3, 0x9e, - 0xf0, 0x30, 0xf3, 0x9e, 0xf1, 0x30, 0xf4, 0x9e, 0xf0, 0x30, 0xf4, 0x9e, - 0xf1, 0x30, 0xf4, 0x9e, 0xf0, 0x30, 0xf4, 0x9e, 0xf1, 0x30, 0xf5, 0x9e, - 0xf0, 0x30, 0xf5, 0x9e, 0xf1, 0x30, 0xf5, 0x9e, 0xf0, 0x30, 0xf5, 0x9e, - 0xf1, 0x30, 0xf5, 0x9f, 0xf3, 0x30, 0xf6, 0x9e, 0xf1, 0x30, 0xf6, 0x9f, - 0xf3, 0x30, 0xf6, 0x9e, 0xf1, 0x30, 0xf6, 0x9f, 0xf3, 0x30, 0xf7, 0x9f, - 0xf2, 0x30, 0xf7, 0x9f, 0xf3, 0x30, 0xf7, 0x9f, 0xf2, 0x30, 0xf7, 0x9f, - 0xf3, 0x30, 0xf8, 0xa0, 0xf5, 0x30, 0xf8, 0x9f, 0xf3, 0x30, 0xf8, 0xa0, - 0xf5, 0x30, 0xf8, 0x9f, 0xf3, 0x30, 0xf8, 0xa0, 0xf5, 0x30, 0xf9, 0xa0, - 0xf5, 0x30, 0xf9, 0xa0, 0xf5, 0x30, 0xf9, 0xa0, 0xf5, 0x30, 0xf9, 0xa0, - 0xf5, 0x30, 0xfa, 0xa1, 0xf7, 0x30, 0xfa, 0xa1, 0xf7, 0x30, 0xfa, 0xa1, - 0xf7, 0x30, 0xfa, 0xa1, 0xf7, 0x30, 0xfa, 0xa1, 0xf7, 0x30, 0xfb, 0xa1, - 0xf7, 0x30, 0xfb, 0xa1, 0xf7, 0x30, 0xfb, 0xa1, 0xf7, 0x30, 0xfb, 0xa1, - 0xf7, 0x30, 0xfc, 0xa1, 0xf7, 0x30, 0xfc, 0xa1, 0xf7, 0x30, 0xfc, 0xa1, - 0xf7, 0x30, 0xfc, 0xa1, 0xf9, 0x30, 0xfc, 0xa1, 0xf7, 0x30, 0xfd, 0xa1, - 0xf9, 0x30, 0xfd, 0xa1, 0xf9, 0x30, 0xfd, 0xa1, 0xf9, 0x30, 0xfd, 0xa1, - 0xf9, 0x30, 0xfe, 0xa1, 0xf9, 0x30, 0xfe, 0xa1, 0xf9, 0x30, 0xfe, 0xa1, - 0xf9, 0x30, 0xfe, 0xa2, 0xfb, 0x30, 0xfe, 0xa1, 0xf9, 0x30, 0xff, 0xa2, - 0xfb, 0x30, 0xff, 0xa1, 0xf9, 0x30, 0x03, 0x89, 0x9a, 0x30, 0x0a, 0x86, - 0x9b, 0x30, 0x0f, 0x89, 0x9a, 0x30, 0x14, 0x86, 0x9b, 0x30, 0x17, 0x89, - 0x9a, 0x30, 0x1b, 0x86, 0x9b, 0x30, 0x1e, 0x89, 0x9a, 0x30, 0x20, 0x86, - 0x9b, 0x30, 0x23, 0x89, 0x9a, 0x30, 0x25, 0x86, 0x9b, 0x30, 0x27, 0x89, - 0x9a, 0x30, 0x29, 0x86, 0x9b, 0x30, 0x2b, 0x83, 0x9b, 0x30, 0x2d, 0x86, - 0x9b, 0x30, 0x2f, 0x83, 0x9b, 0x30, 0x31, 0x86, 0x9b, 0x30, 0x32, 0x83, - 0x9b, 0x30, 0x34, 0x86, 0x9b, 0x30, 0x35, 0x83, 0x9b, 0x30, 0x37, 0x86, - 0x9b, 0x30, 0x38, 0x83, 0x9b, 0x30, 0x3a, 0x86, 0x9b, 0x30, 0x3b, 0x83, - 0x9b, 0x30, 0x3c, 0x86, 0x9b, 0x30, 0x3e, 0x83, 0x9b, 0x30, 0x3f, 0x86, - 0x9b, 0x30, 0x40, 0x83, 0x9b, 0x30, 0x42, 0x86, 0x9b, 0x30, 0x43, 0x83, - 0x9b, 0x30, 0x44, 0x86, 0x9b, 0x30, 0x45, 0x83, 0x9b, 0x30, 0x46, 0x86, - 0x9b, 0x30, 0x47, 0x83, 0x9b, 0x30, 0x48, 0x86, 0x9b, 0x30, 0x49, 0x83, - 0x9b, 0x30, 0x4a, 0x86, 0x9b, 0x30, 0x4b, 0x83, 0x9b, 0x30, 0x4c, 0x86, - 0x9b, 0x30, 0x4d, 0x83, 0x9b, 0x30, 0x4e, 0x86, 0x9b, 0x30, 0x4f, 0x83, - 0x9b, 0x30, 0x50, 0x86, 0x9b, 0x30, 0x51, 0x83, 0x9b, 0x30, 0x52, 0x86, - 0x9b, 0x30, 0x53, 0x83, 0x9b, 0x30, 0x54, 0x86, 0x9b, 0x30, 0x55, 0x83, - 0x9b, 0x30, 0x56, 0x86, 0x9b, 0x30, 0x57, 0x83, 0x9b, 0x30, 0x58, 0x86, - 0x9b, 0x30, 0x58, 0x83, 0x9b, 0x30, 0x59, 0x86, 0x9b, 0x30, 0x5a, 0x83, - 0x9b, 0x30, 0x5b, 0x86, 0x9b, 0x30, 0x5c, 0x83, 0x9b, 0x30, 0x5d, 0x86, - 0x9b, 0x30, 0x5d, 0x83, 0x9b, 0x30, 0x5e, 0x86, 0x9b, 0x30, 0x5f, 0x83, - 0x9b, 0x30, 0x60, 0x86, 0x9b, 0x30, 0x60, 0x83, 0x9b, 0x30, 0x61, 0x86, - 0x9b, 0x30, 0x62, 0x83, 0x9b, 0x30, 0x63, 0x86, 0x9b, 0x30, 0x63, 0x83, - 0x9b, 0x30, 0x64, 0x86, 0x9b, 0x30, 0x65, 0x83, 0x9b, 0x30, 0x66, 0x86, - 0x9b, 0x30, 0x66, 0x83, 0x9b, 0x30, 0x67, 0x86, 0x9b, 0x30, 0x68, 0x83, - 0x9b, 0x30, 0x68, 0x86, 0x9b, 0x30, 0x69, 0x83, 0x9b, 0x30, 0x6a, 0x86, - 0x9b, 0x30, 0x6a, 0x83, 0x9b, 0x30, 0x6b, 0x86, 0x9b, 0x30, 0x6c, 0x83, - 0x9b, 0x30, 0x6c, 0x86, 0x9b, 0x30, 0x6d, 0x83, 0x9b, 0x30, 0x6e, 0x86, - 0x9b, 0x30, 0x6e, 0x83, 0x9b, 0x30, 0x6f, 0x86, 0x9b, 0x30, 0x70, 0x83, - 0x9b, 0x30, 0x70, 0x86, 0x9b, 0x30, 0x71, 0x83, 0x9b, 0x30, 0x72, 0x86, - 0x9b, 0x30, 0x72, 0x83, 0x9b, 0x30, 0x73, 0x86, 0x9b, 0x30, 0x73, 0x83, - 0x9b, 0x30, 0x74, 0x86, 0x9b, 0x30, 0x75, 0x83, 0x9b, 0x30, 0x75, 0x86, - 0x9b, 0x30, 0x76, 0x83, 0x9b, 0x30, 0x76, 0x86, 0x9b, 0x30, 0x77, 0x83, - 0x9b, 0x30, 0x78, 0x86, 0x9b, 0x30, 0x78, 0x83, 0x9b, 0x30, 0x79, 0x86, - 0x9b, 0x30, 0x79, 0x83, 0x9b, 0x30, 0x7a, 0x86, 0x9b, 0x30, 0x7a, 0x83, - 0x9b, 0x30, 0x7b, 0x83, 0x9c, 0x30, 0x7c, 0x83, 0x9b, 0x30, 0x7c, 0x83, - 0x9c, 0x30, 0x7d, 0x83, 0x9b, 0x30, 0x7d, 0x83, 0x9c, 0x30, 0x7e, 0x83, - 0x9b, 0x30, 0x7e, 0x83, 0x9c, 0x30, 0x7f, 0x83, 0x9b, 0x30, 0x7f, 0x83, - 0x9c, 0x30, 0x80, 0x83, 0x9b, 0x30, 0x81, 0x83, 0x9c, 0x30, 0x81, 0x83, - 0x9b, 0x30, 0x82, 0x83, 0x9c, 0x30, 0x82, 0x83, 0x9b, 0x30, 0x83, 0x83, - 0x9c, 0x30, 0x83, 0x83, 0x9b, 0x30, 0x84, 0x83, 0x9c, 0x30, 0x84, 0x83, - 0x9b, 0x30, 0x85, 0x83, 0x9c, 0x30, 0x85, 0x83, 0x9b, 0x30, 0x86, 0x83, - 0x9c, 0x30, 0x86, 0x83, 0x9b, 0x30, 0x87, 0x83, 0x9c, 0x30, 0x87, 0x83, - 0x9b, 0x30, 0x88, 0x83, 0x9c, 0x30, 0x88, 0x83, 0x9b, 0x30, 0x89, 0x83, - 0x9c, 0x30, 0x89, 0x83, 0x9b, 0x30, 0x8a, 0x83, 0x9c, 0x30, 0x8a, 0x83, - 0x9b, 0x30, 0x8b, 0x83, 0x9c, 0x30, 0x8b, 0x83, 0x9b, 0x30, 0x8c, 0x83, - 0x9c, 0x30, 0x8c, 0x83, 0x9b, 0x30, 0x8d, 0x83, 0x9c, 0x30, 0x8d, 0x83, - 0x9b, 0x30, 0x8e, 0x83, 0x9c, 0x30, 0x8e, 0x83, 0x9b, 0x30, 0x8e, 0x83, - 0x9c, 0x30, 0x8f, 0x83, 0x9b, 0x30, 0x8f, 0x83, 0x9c, 0x30, 0x90, 0x83, - 0x9b, 0x30, 0x90, 0x83, 0x9c, 0x30, 0x91, 0x83, 0x9b, 0x30, 0x91, 0x83, - 0x9c, 0x30, 0x92, 0x83, 0x9b, 0x30, 0x92, 0x83, 0x9c, 0x30, 0x93, 0x83, - 0x9b, 0x30, 0x93, 0x83, 0x9c, 0x30, 0x94, 0x83, 0x9b, 0x30, 0x94, 0x83, - 0x9c, 0x30, 0x94, 0x83, 0x9b, 0x30, 0x95, 0x83, 0x9c, 0x30, 0x95, 0x83, - 0x9b, 0x30, 0x96, 0x83, 0x9c, 0x30, 0x96, 0x83, 0x9b, 0x30, 0x97, 0x83, - 0x9c, 0x30, 0x97, 0x83, 0x9b, 0x30, 0x98, 0x83, 0x9c, 0x30, 0x98, 0x83, - 0x9b, 0x30, 0x98, 0x83, 0x9c, 0x30, 0x99, 0x83, 0x9b, 0x30, 0x99, 0x83, - 0x9c, 0x30, 0x9a, 0x83, 0x9b, 0x30, 0x9a, 0x83, 0x9c, 0x30, 0x9a, 0x83, - 0x9b, 0x30, 0x9b, 0x83, 0x9c, 0x30, 0x9b, 0x83, 0x9b, 0x30, 0x9c, 0x83, - 0x9c, 0x30, 0x9c, 0x83, 0x9c, 0x30, 0x9d, 0x83, 0x9d, 0x30, 0x9d, 0x83, - 0x9c, 0x30, 0x9d, 0x83, 0x9d, 0x30, 0x9e, 0x83, 0x9c, 0x30, 0x9e, 0x83, - 0x9d, 0x30, 0x9f, 0x83, 0x9c, 0x30, 0x9f, 0x83, 0x9d, 0x30, 0x9f, 0x83, - 0x9c, 0x30, 0xa0, 0x83, 0x9d, 0x30, 0xa0, 0x84, 0xa0, 0x30, 0xa1, 0x84, - 0xa1, 0x30, 0xa1, 0x84, 0xa0, 0x30, 0xa1, 0x84, 0xa1, 0x30, 0xa2, 0x84, - 0xa0, 0x30, 0xa2, 0x84, 0xa1, 0x30, 0xa3, 0x84, 0xa0, 0x30, 0xa3, 0x84, - 0xa1, 0x30, 0xa3, 0x84, 0xa0, 0x30, 0xa4, 0x84, 0xa1, 0x30, 0xa4, 0x85, - 0xa4, 0x30, 0xa5, 0x85, 0xa4, 0x30, 0xa5, 0x85, 0xa4, 0x30, 0xa5, 0x85, - 0xa4, 0x30, 0xa6, 0x85, 0xa4, 0x30, 0xa6, 0x85, 0xa4, 0x30, 0xa6, 0x85, - 0xa4, 0x30, 0xa7, 0x85, 0xa4, 0x30, 0xa7, 0x85, 0xa4, 0x30, 0xa8, 0x86, - 0xa8, 0x30, 0xa8, 0x85, 0xa4, 0x30, 0xa8, 0x86, 0xa8, 0x30, 0xa9, 0x86, - 0xa7, 0x30, 0xa9, 0x86, 0xa8, 0x30, 0xaa, 0x86, 0xa7, 0x30, 0xaa, 0x86, - 0xa8, 0x30, 0xaa, 0x86, 0xa7, 0x30, 0xab, 0x86, 0xa8, 0x30, 0xab, 0x86, - 0xa7, 0x30, 0xab, 0x86, 0xa8, 0x30, 0xac, 0x87, 0xab, 0x30, 0xac, 0x87, - 0xab, 0x30, 0xac, 0x87, 0xab, 0x30, 0xad, 0x87, 0xab, 0x30, 0xad, 0x87, - 0xab, 0x30, 0xae, 0x87, 0xab, 0x30, 0xae, 0x87, 0xab, 0x30, 0xae, 0x87, - 0xab, 0x30, 0xaf, 0x87, 0xab, 0x30, 0xaf, 0x87, 0xab, 0x30, 0xaf, 0x88, - 0xaf, 0x30, 0xb0, 0x88, 0xae, 0x30, 0xb0, 0x88, 0xaf, 0x30, 0xb0, 0x88, - 0xae, 0x30, 0xb1, 0x88, 0xaf, 0x30, 0xb1, 0x88, 0xae, 0x30, 0xb2, 0x88, - 0xaf, 0x30, 0xb2, 0x88, 0xae, 0x30, 0xb2, 0x88, 0xaf, 0x30, 0xb3, 0x89, - 0xb2, 0x30, 0xb3, 0x89, 0xb2, 0x30, 0xb3, 0x89, 0xb2, 0x30, 0xb4, 0x89, - 0xb2, 0x30, 0xb4, 0x89, 0xb2, 0x30, 0xb4, 0x89, 0xb2, 0x30, 0xb5, 0x89, - 0xb2, 0x30, 0xb5, 0x89, 0xb2, 0x30, 0xb5, 0x89, 0xb2, 0x30, 0xb6, 0x89, - 0xb2, 0x30, 0xb6, 0x8a, 0xb5, 0x30, 0xb6, 0x89, 0xb2, 0x30, 0xb7, 0x8a, - 0xb5, 0x30, 0xb7, 0x8a, 0xb5, 0x30, 0xb7, 0x8a, 0xb5, 0x30, 0xb8, 0x8a, - 0xb5, 0x30, 0xb8, 0x8a, 0xb5, 0x30, 0xb8, 0x8a, 0xb5, 0x30, 0xb9, 0x8a, - 0xb5, 0x30, 0xb9, 0x8a, 0xb5, 0x30, 0xb9, 0x8a, 0xb5, 0x30, 0xba, 0x8b, - 0xb8, 0x30, 0xba, 0x8b, 0xb8, 0x30, 0xba, 0x8b, 0xb8, 0x30, 0xbb, 0x8b, - 0xb8, 0x30, 0xbb, 0x8b, 0xb8, 0x30, 0xbb, 0x8b, 0xb8, 0x30, 0xbc, 0x8b, - 0xb8, 0x30, 0xbc, 0x8b, 0xb8, 0x30, 0xbc, 0x8b, 0xb8, 0x30, 0xbd, 0x8c, - 0xbb, 0x30, 0xbd, 0x8c, 0xbc, 0x30, 0xbd, 0x8c, 0xbb, 0x30, 0xbe, 0x8c, - 0xbc, 0x30, 0xbe, 0x8c, 0xbb, 0x30, 0xbe, 0x8c, 0xbc, 0x30, 0xbf, 0x8c, - 0xbb, 0x30, 0xbf, 0x8c, 0xbc, 0x30, 0xbf, 0x8c, 0xbb, 0x30, 0xc0, 0x8c, - 0xbc, 0x30, 0xc0, 0x8d, 0xbf, 0x30, 0xc0, 0x8d, 0xbe, 0x30, 0xc1, 0x8d, - 0xbf, 0x30, 0xc1, 0x8d, 0xbe, 0x30, 0xc1, 0x8d, 0xbf, 0x30, 0xc1, 0x8d, - 0xbe, 0x30, 0xc2, 0x8d, 0xbf, 0x30, 0xc2, 0x8d, 0xbe, 0x30, 0xc2, 0x8d, - 0xbf, 0x30, 0xc3, 0x8e, 0xc1, 0x30, 0xc3, 0x8d, 0xbf, 0x30, 0xc3, 0x8e, - 0xc1, 0x30, 0xc4, 0x8e, 0xc1, 0x30, 0xc4, 0x8e, 0xc1, 0x30, 0xc4, 0x8e, - 0xc1, 0x30, 0xc5, 0x8e, 0xc1, 0x30, 0xc5, 0x8e, 0xc1, 0x30, 0xc5, 0x8e, - 0xc1, 0x30, 0xc6, 0x8f, 0xc4, 0x30, 0xc6, 0x8f, 0xc5, 0x30, 0xc6, 0x8f, - 0xc4, 0x30, 0xc6, 0x8f, 0xc5, 0x30, 0xc7, 0x8f, 0xc4, 0x30, 0xc7, 0x8f, - 0xc5, 0x30, 0xc7, 0x8f, 0xc4, 0x30, 0xc8, 0x8f, 0xc5, 0x30, 0xc8, 0x8f, - 0xc4, 0x30, 0xc8, 0x8f, 0xc5, 0x30, 0xc9, 0x90, 0xc7, 0x30, 0xc9, 0x8f, - 0xc5, 0x30, 0xc9, 0x90, 0xc7, 0x30, 0xc9, 0x90, 0xc7, 0x30, 0xca, 0x90, - 0xc7, 0x30, 0xca, 0x90, 0xc7, 0x30, 0xca, 0x90, 0xc7, 0x30, 0xcb, 0x90, - 0xc7, 0x30, 0xcb, 0x90, 0xc7, 0x30, 0xcb, 0x90, 0xc7, 0x30, 0xcc, 0x90, - 0xc7, 0x30, 0xcc, 0x91, 0xca, 0x30, 0xcc, 0x91, 0xca, 0x30, 0xcc, 0x91, - 0xca, 0x30, 0xcd, 0x91, 0xca, 0x30, 0xcd, 0x91, 0xca, 0x30, 0xcd, 0x91, - 0xca, 0x30, 0xce, 0x91, 0xca, 0x30, 0xce, 0x91, 0xca, 0x30, 0xce, 0x91, - 0xca, 0x30, 0xce, 0x92, 0xcd, 0x30, 0xcf, 0x92, 0xcd, 0x30, 0xcf, 0x92, - 0xcd, 0x30, 0xcf, 0x92, 0xcd, 0x30, 0xd0, 0x92, 0xcd, 0x30, 0xd0, 0x92, - 0xcd, 0x30, 0xd0, 0x92, 0xcd, 0x30, 0xd0, 0x92, 0xcd, 0x30, 0xd1, 0x92, - 0xcd, 0x30, 0xd1, 0x92, 0xcd, 0x30, 0xd1, 0x93, 0xd0, 0x30, 0xd2, 0x92, - 0xcd, 0x30, 0xd2, 0x93, 0xd0, 0x30, 0xd2, 0x93, 0xcf, 0x30, 0xd2, 0x93, - 0xd0, 0x30, 0xd3, 0x93, 0xcf, 0x30, 0xd3, 0x93, 0xd0, 0x30, 0xd3, 0x93, - 0xcf, 0x30, 0xd4, 0x93, 0xd0, 0x30, 0xd4, 0x94, 0xd2, 0x30, 0xd4, 0x94, - 0xd2, 0x30, 0xd4, 0x94, 0xd2, 0x30, 0xd5, 0x94, 0xd2, 0x30, 0xd5, 0x94, - 0xd2, 0x30, 0xd5, 0x94, 0xd2, 0x30, 0xd6, 0x94, 0xd2, 0x30, 0xd6, 0x94, - 0xd2, 0x30, 0xd6, 0x94, 0xd2, 0x30, 0xd6, 0x94, 0xd2, 0x30, 0xd7, 0x94, - 0xd2, 0x30, 0xd7, 0x94, 0xd2, 0x30, 0xd7, 0x94, 0xd5, 0x30, 0xd7, 0x94, - 0xd5, 0x30, 0xd8, 0x94, 0xd5, 0x30, 0xd8, 0x94, 0xd5, 0x30, 0xd8, 0x94, - 0xd5, 0x30, 0xd9, 0x94, 0xd5, 0x30, 0xd9, 0x94, 0xd5, 0x30, 0xd9, 0x94, - 0xd5, 0x30, 0xd9, 0x94, 0xd5, 0x30, 0xda, 0x95, 0xd7, 0x30, 0xda, 0x94, - 0xd5, 0x30, 0xda, 0x95, 0xd7, 0x30, 0xda, 0x95, 0xd7, 0x30, 0xdb, 0x95, - 0xd7, 0x30, 0xdb, 0x95, 0xd7, 0x30, 0xdb, 0x95, 0xd7, 0x30, 0xdb, 0x95, - 0xd7, 0x30, 0xdc, 0x95, 0xd7, 0x30, 0xdc, 0x96, 0xda, 0x30, 0xdc, 0x96, - 0xda, 0x30, 0xdd, 0x96, 0xda, 0x30, 0xdd, 0x96, 0xda, 0x30, 0xdd, 0x96, - 0xda, 0x30, 0xdd, 0x96, 0xda, 0x30, 0xde, 0x96, 0xda, 0x30, 0xde, 0x96, - 0xda, 0x30, 0xde, 0x96, 0xda, 0x30, 0xde, 0x96, 0xda, 0x30, 0xdf, 0x97, - 0xdd, 0x30, 0xdf, 0x96, 0xda, 0x30, 0xdf, 0x97, 0xdd, 0x30, 0xdf, 0x97, - 0xdc, 0x30, 0xe0, 0x97, 0xdd, 0x30, 0xe0, 0x97, 0xdc, 0x30, 0xe0, 0x97, - 0xdd, 0x30, 0xe1, 0x97, 0xdc, 0x30, 0xe1, 0x97, 0xdd, 0x30, 0xe1, 0x98, - 0xdf, 0x30, 0xe1, 0x97, 0xdd, 0x30, 0xe2, 0x98, 0xdf, 0x30, 0xe2, 0x98, - 0xdf, 0x30, 0xe2, 0x98, 0xdf, 0x30, 0xe2, 0x98, 0xdf, 0x30, 0xe3, 0x98, - 0xdf, 0x30, 0xe3, 0x98, 0xdf, 0x30, 0xe3, 0x98, 0xdf, 0x30, 0xe3, 0x99, - 0xe1, 0x30, 0xe4, 0x99, 0xe2, 0x30, 0xe4, 0x99, 0xe1, 0x30, 0xe4, 0x99, - 0xe2, 0x30, 0xe4, 0x99, 0xe1, 0x30, 0xe5, 0x99, 0xe2, 0x30, 0xe5, 0x99, - 0xe1, 0x30, 0xe5, 0x99, 0xe2, 0x30, 0xe5, 0x99, 0xe1, 0x30, 0xe6, 0x99, - 0xe2, 0x30, 0xe6, 0x99, 0xe1, 0x30, 0xe6, 0x99, 0xe2, 0x30, 0xe6, 0x9a, - 0xe4, 0x30, 0xe7, 0x99, 0xe2, 0x30, 0xe7, 0x9a, 0xe4, 0x30, 0xe7, 0x9a, - 0xe4, 0x30, 0xe7, 0x9a, 0xe4, 0x30, 0xe8, 0x9a, 0xe4, 0x30, 0xe8, 0x9a, - 0xe4, 0x30, 0xe8, 0x9a, 0xe4, 0x30, 0xe8, 0x9a, 0xe4, 0x30, 0xe9, 0x9a, - 0xe6, 0x30, 0xe9, 0x9a, 0xe4, 0x30, 0xe9, 0x9a, 0xe6, 0x30, 0xe9, 0x9a, - 0xe6, 0x30, 0xea, 0x9a, 0xe6, 0x30, 0xea, 0x9a, 0xe6, 0x30, 0xea, 0x9a, - 0xe6, 0x30, 0xea, 0x9a, 0xe6, 0x30, 0xeb, 0x9a, 0xe6, 0x30, 0xeb, 0x9b, - 0xe8, 0x30, 0xeb, 0x9b, 0xe9, 0x30, 0xeb, 0x9b, 0xe8, 0x30, 0xec, 0x9b, - 0xe9, 0x30, 0xec, 0x9b, 0xe8, 0x30, 0xec, 0x9b, 0xe9, 0x30, 0xec, 0x9b, - 0xe8, 0x30, 0xec, 0x9b, 0xe9, 0x30, 0xed, 0x9b, 0xe8, 0x30, 0xed, 0x9b, - 0xe9, 0x30, 0xed, 0x9c, 0xeb, 0x30, 0xed, 0x9b, 0xe9, 0x30, 0xee, 0x9c, - 0xeb, 0x30, 0xee, 0x9b, 0xe9, 0x30, 0xee, 0x9c, 0xeb, 0x30, 0xee, 0x9c, - 0xeb, 0x30, 0xef, 0x9c, 0xeb, 0x30, 0xef, 0x9c, 0xeb, 0x30, 0xef, 0x9c, - 0xeb, 0x30, 0xef, 0x9c, 0xeb, 0x30, 0xf0, 0x9c, 0xeb, 0x30, 0xf0, 0x9d, - 0xed, 0x30, 0xf0, 0x9d, 0xed, 0x30, 0xf0, 0x9d, 0xed, 0x30, 0xf1, 0x9d, - 0xed, 0x30, 0xf1, 0x9d, 0xed, 0x30, 0xf1, 0x9d, 0xed, 0x30, 0xf1, 0x9d, - 0xed, 0x30, 0xf2, 0x9d, 0xed, 0x30, 0xf2, 0x9d, 0xed, 0x30, 0xf2, 0x9d, - 0xed, 0x30, 0xf2, 0x9e, 0xef, 0x30, 0xf2, 0x9d, 0xed, 0x30, 0xf3, 0x9e, - 0xef, 0x30, 0xf3, 0x9e, 0xef, 0x30, 0xf3, 0x9e, 0xef, 0x30, 0xf3, 0x9e, - 0xef, 0x30, 0xf4, 0x9e, 0xef, 0x30, 0xf4, 0x9e, 0xef, 0x30, 0xf4, 0x9e, - 0xef, 0x30, 0xf4, 0x9f, 0xf2, 0x30, 0xf5, 0x9e, 0xef, 0x30, 0xf5, 0x9f, - 0xf2, 0x30, 0xf5, 0x9f, 0xf1, 0x30, 0xf5, 0x9f, 0xf2, 0x30, 0xf5, 0x9f, - 0xf1, 0x30, 0xf6, 0x9f, 0xf2, 0x30, 0xf6, 0x9f, 0xf1, 0x30, 0xf6, 0x9f, - 0xf2, 0x30, 0xf6, 0x9f, 0xf4, 0x30, 0xf7, 0x9f, 0xf4, 0x30, 0xf7, 0x9f, - 0xf4, 0x30, 0xf7, 0x9f, 0xf4, 0x30, 0xf7, 0x9f, 0xf4, 0x30, 0xf8, 0x9f, - 0xf4, 0x30, 0xf8, 0x9f, 0xf4, 0x30, 0xf8, 0x9f, 0xf4, 0x30, 0xf8, 0x9f, - 0xf4, 0x30, 0xf8, 0x9f, 0xf4, 0x30, 0xf9, 0xa0, 0xf6, 0x30, 0xf9, 0x9f, - 0xf4, 0x30, 0xf9, 0xa0, 0xf6, 0x30, 0xf9, 0x9f, 0xf4, 0x30, 0xfa, 0xa0, - 0xf6, 0x30, 0xfa, 0xa0, 0xf6, 0x30, 0xfa, 0xa0, 0xf6, 0x30, 0xfa, 0xa0, - 0xf6, 0x30, 0xfa, 0xa0, 0xf6, 0x30, 0xfb, 0xa1, 0xf8, 0x30, 0xfb, 0xa0, - 0xf6, 0x30, 0xfb, 0xa1, 0xf8, 0x30, 0xfb, 0xa0, 0xf6, 0x30, 0xfc, 0xa1, - 0xf8, 0x30, 0xfc, 0xa1, 0xf8, 0x30, 0xfc, 0xa1, 0xf8, 0x30, 0xfc, 0xa1, - 0xf8, 0x30, 0xfc, 0xa1, 0xf8, 0x30, 0xfd, 0xa1, 0xf8, 0x30, 0xfd, 0xa1, - 0xf8, 0x30, 0xfd, 0xa2, 0xfa, 0x30, 0xfd, 0xa2, 0xfa, 0x30, 0xfe, 0xa2, - 0xfa, 0x30, 0xfe, 0xa2, 0xfa, 0x30, 0xfe, 0xa2, 0xfa, 0x30, 0xfe, 0xa2, - 0xfa, 0x30, 0xfe, 0xa2, 0xfa, 0x30, 0xff, 0xa2, 0xfa, 0x30, 0xff, 0xa2, - 0xfa, 0x30, 0x03, 0x89, 0x9a, 0x31, 0x0a, 0x86, 0x9b, 0x31, 0x0f, 0x89, - 0x9a, 0x31, 0x14, 0x86, 0x9b, 0x31, 0x17, 0x89, 0x9a, 0x31, 0x1b, 0x86, - 0x9b, 0x31, 0x1e, 0x89, 0x9a, 0x31, 0x20, 0x86, 0x9b, 0x31, 0x23, 0x89, - 0x9a, 0x31, 0x25, 0x86, 0x9b, 0x31, 0x27, 0x89, 0x9a, 0x31, 0x29, 0x86, - 0x9b, 0x31, 0x2b, 0x89, 0x9a, 0x31, 0x2d, 0x86, 0x9b, 0x31, 0x2f, 0x89, - 0x9a, 0x31, 0x31, 0x86, 0x9b, 0x31, 0x32, 0x89, 0x9a, 0x31, 0x34, 0x86, - 0x9b, 0x31, 0x35, 0x89, 0x9a, 0x31, 0x37, 0x86, 0x9b, 0x31, 0x38, 0x89, - 0x9a, 0x31, 0x3a, 0x86, 0x9b, 0x31, 0x3b, 0x89, 0x9a, 0x31, 0x3c, 0x86, - 0x9b, 0x31, 0x3e, 0x89, 0x9a, 0x31, 0x3f, 0x86, 0x9b, 0x31, 0x40, 0x89, - 0x9a, 0x31, 0x42, 0x86, 0x9b, 0x31, 0x43, 0x84, 0x9b, 0x31, 0x44, 0x86, - 0x9b, 0x31, 0x45, 0x84, 0x9b, 0x31, 0x46, 0x86, 0x9b, 0x31, 0x47, 0x84, - 0x9b, 0x31, 0x48, 0x86, 0x9b, 0x31, 0x49, 0x84, 0x9b, 0x31, 0x4a, 0x86, - 0x9b, 0x31, 0x4b, 0x84, 0x9b, 0x31, 0x4c, 0x86, 0x9b, 0x31, 0x4d, 0x84, - 0x9b, 0x31, 0x4e, 0x86, 0x9b, 0x31, 0x4f, 0x84, 0x9b, 0x31, 0x50, 0x86, - 0x9b, 0x31, 0x51, 0x84, 0x9b, 0x31, 0x52, 0x86, 0x9b, 0x31, 0x53, 0x84, - 0x9b, 0x31, 0x54, 0x86, 0x9b, 0x31, 0x55, 0x84, 0x9b, 0x31, 0x56, 0x86, - 0x9b, 0x31, 0x57, 0x84, 0x9b, 0x31, 0x58, 0x86, 0x9b, 0x31, 0x58, 0x84, - 0x9b, 0x31, 0x59, 0x86, 0x9b, 0x31, 0x5a, 0x84, 0x9b, 0x31, 0x5b, 0x86, - 0x9b, 0x31, 0x5c, 0x84, 0x9b, 0x31, 0x5d, 0x86, 0x9b, 0x31, 0x5d, 0x84, - 0x9b, 0x31, 0x5e, 0x86, 0x9b, 0x31, 0x5f, 0x84, 0x9b, 0x31, 0x60, 0x86, - 0x9b, 0x31, 0x60, 0x84, 0x9b, 0x31, 0x61, 0x86, 0x9b, 0x31, 0x62, 0x84, - 0x9b, 0x31, 0x63, 0x86, 0x9b, 0x31, 0x63, 0x84, 0x9b, 0x31, 0x64, 0x86, - 0x9b, 0x31, 0x65, 0x84, 0x9b, 0x31, 0x66, 0x86, 0x9b, 0x31, 0x66, 0x84, - 0x9b, 0x31, 0x67, 0x86, 0x9b, 0x31, 0x68, 0x84, 0x9b, 0x31, 0x68, 0x86, - 0x9b, 0x31, 0x69, 0x84, 0x9b, 0x31, 0x6a, 0x86, 0x9b, 0x31, 0x6a, 0x84, - 0x9b, 0x31, 0x6b, 0x86, 0x9b, 0x31, 0x6c, 0x84, 0x9b, 0x31, 0x6c, 0x86, - 0x9b, 0x31, 0x6d, 0x84, 0x9b, 0x31, 0x6e, 0x86, 0x9b, 0x31, 0x6e, 0x84, - 0x9b, 0x31, 0x6f, 0x86, 0x9b, 0x31, 0x70, 0x84, 0x9b, 0x31, 0x70, 0x86, - 0x9b, 0x31, 0x71, 0x84, 0x9b, 0x31, 0x72, 0x86, 0x9b, 0x31, 0x72, 0x84, - 0x9b, 0x31, 0x73, 0x86, 0x9b, 0x31, 0x73, 0x84, 0x9b, 0x31, 0x74, 0x86, - 0x9b, 0x31, 0x75, 0x84, 0x9b, 0x31, 0x75, 0x86, 0x9b, 0x31, 0x76, 0x84, - 0x9b, 0x31, 0x76, 0x86, 0x9b, 0x31, 0x77, 0x84, 0x9b, 0x31, 0x78, 0x86, - 0x9b, 0x31, 0x78, 0x84, 0x9b, 0x31, 0x79, 0x86, 0x9b, 0x31, 0x79, 0x84, - 0x9b, 0x31, 0x7a, 0x86, 0x9b, 0x31, 0x7a, 0x84, 0x9b, 0x31, 0x7b, 0x86, - 0x9b, 0x31, 0x7c, 0x84, 0x9b, 0x31, 0x7c, 0x86, 0x9b, 0x31, 0x7d, 0x84, - 0x9b, 0x31, 0x7d, 0x86, 0x9b, 0x31, 0x7e, 0x84, 0x9b, 0x31, 0x7e, 0x86, - 0x9b, 0x31, 0x7f, 0x84, 0x9b, 0x31, 0x7f, 0x86, 0x9b, 0x31, 0x80, 0x84, - 0x9b, 0x31, 0x81, 0x86, 0x9b, 0x31, 0x81, 0x84, 0x9b, 0x31, 0x82, 0x86, - 0x9b, 0x31, 0x82, 0x84, 0x9b, 0x31, 0x83, 0x86, 0x9b, 0x31, 0x83, 0x84, - 0x9b, 0x31, 0x84, 0x86, 0x9b, 0x31, 0x84, 0x84, 0x9b, 0x31, 0x85, 0x86, - 0x9b, 0x31, 0x85, 0x84, 0x9b, 0x31, 0x86, 0x86, 0x9b, 0x31, 0x86, 0x84, - 0x9b, 0x31, 0x87, 0x86, 0x9b, 0x31, 0x87, 0x84, 0x9b, 0x31, 0x88, 0x84, - 0x9c, 0x31, 0x88, 0x84, 0x9b, 0x31, 0x89, 0x84, 0x9c, 0x31, 0x89, 0x84, - 0x9b, 0x31, 0x8a, 0x84, 0x9c, 0x31, 0x8a, 0x84, 0x9b, 0x31, 0x8b, 0x84, - 0x9c, 0x31, 0x8b, 0x84, 0x9b, 0x31, 0x8c, 0x84, 0x9c, 0x31, 0x8c, 0x84, - 0x9b, 0x31, 0x8d, 0x84, 0x9c, 0x31, 0x8d, 0x84, 0x9b, 0x31, 0x8e, 0x84, - 0x9c, 0x31, 0x8e, 0x84, 0x9b, 0x31, 0x8e, 0x84, 0x9c, 0x31, 0x8f, 0x84, - 0x9b, 0x31, 0x8f, 0x84, 0x9c, 0x31, 0x90, 0x84, 0x9b, 0x31, 0x90, 0x84, - 0x9c, 0x31, 0x91, 0x84, 0x9b, 0x31, 0x91, 0x84, 0x9c, 0x31, 0x92, 0x84, - 0x9b, 0x31, 0x92, 0x84, 0x9c, 0x31, 0x93, 0x84, 0x9b, 0x31, 0x93, 0x84, - 0x9c, 0x31, 0x94, 0x84, 0x9b, 0x31, 0x94, 0x84, 0x9c, 0x31, 0x94, 0x84, - 0x9b, 0x31, 0x95, 0x84, 0x9c, 0x31, 0x95, 0x84, 0x9b, 0x31, 0x96, 0x84, - 0x9c, 0x31, 0x96, 0x84, 0x9b, 0x31, 0x97, 0x84, 0x9c, 0x31, 0x97, 0x84, - 0x9b, 0x31, 0x98, 0x84, 0x9c, 0x31, 0x98, 0x84, 0x9b, 0x31, 0x98, 0x84, - 0x9c, 0x31, 0x99, 0x84, 0x9b, 0x31, 0x99, 0x84, 0x9c, 0x31, 0x9a, 0x84, - 0x9b, 0x31, 0x9a, 0x84, 0x9c, 0x31, 0x9a, 0x84, 0x9b, 0x31, 0x9b, 0x84, - 0x9c, 0x31, 0x9b, 0x84, 0x9b, 0x31, 0x9c, 0x84, 0x9c, 0x31, 0x9c, 0x84, - 0x9c, 0x31, 0x9d, 0x84, 0x9d, 0x31, 0x9d, 0x84, 0x9d, 0x31, 0x9d, 0x84, - 0x9d, 0x31, 0x9e, 0x84, 0x9e, 0x31, 0x9e, 0x84, 0x9e, 0x31, 0x9f, 0x84, - 0x9f, 0x31, 0x9f, 0x84, 0x9e, 0x31, 0x9f, 0x84, 0x9f, 0x31, 0xa0, 0x84, - 0x9e, 0x31, 0xa0, 0x84, 0x9f, 0x31, 0xa1, 0x84, 0x9e, 0x31, 0xa1, 0x84, - 0x9f, 0x31, 0xa1, 0x84, 0x9e, 0x31, 0xa2, 0x84, 0x9f, 0x31, 0xa2, 0x85, - 0xa2, 0x31, 0xa3, 0x85, 0xa2, 0x31, 0xa3, 0x85, 0xa2, 0x31, 0xa3, 0x85, - 0xa2, 0x31, 0xa4, 0x85, 0xa2, 0x31, 0xa4, 0x85, 0xa2, 0x31, 0xa5, 0x85, - 0xa2, 0x31, 0xa5, 0x85, 0xa2, 0x31, 0xa5, 0x85, 0xa2, 0x31, 0xa6, 0x86, - 0xa6, 0x31, 0xa6, 0x86, 0xa6, 0x31, 0xa6, 0x86, 0xa6, 0x31, 0xa7, 0x86, - 0xa6, 0x31, 0xa7, 0x86, 0xa6, 0x31, 0xa8, 0x86, 0xa6, 0x31, 0xa8, 0x86, - 0xa6, 0x31, 0xa8, 0x86, 0xa6, 0x31, 0xa9, 0x86, 0xa6, 0x31, 0xa9, 0x86, - 0xa6, 0x31, 0xaa, 0x87, 0xaa, 0x31, 0xaa, 0x86, 0xa6, 0x31, 0xaa, 0x87, - 0xaa, 0x31, 0xab, 0x87, 0xa9, 0x31, 0xab, 0x87, 0xaa, 0x31, 0xab, 0x87, - 0xa9, 0x31, 0xac, 0x87, 0xaa, 0x31, 0xac, 0x87, 0xa9, 0x31, 0xac, 0x87, - 0xaa, 0x31, 0xad, 0x87, 0xa9, 0x31, 0xad, 0x87, 0xaa, 0x31, 0xae, 0x88, - 0xad, 0x31, 0xae, 0x88, 0xad, 0x31, 0xae, 0x88, 0xad, 0x31, 0xaf, 0x88, - 0xad, 0x31, 0xaf, 0x88, 0xad, 0x31, 0xaf, 0x88, 0xad, 0x31, 0xb0, 0x88, - 0xad, 0x31, 0xb0, 0x88, 0xad, 0x31, 0xb0, 0x88, 0xad, 0x31, 0xb1, 0x88, - 0xad, 0x31, 0xb1, 0x89, 0xb0, 0x31, 0xb2, 0x89, 0xb0, 0x31, 0xb2, 0x89, - 0xb0, 0x31, 0xb2, 0x89, 0xb0, 0x31, 0xb3, 0x89, 0xb0, 0x31, 0xb3, 0x89, - 0xb0, 0x31, 0xb3, 0x89, 0xb0, 0x31, 0xb4, 0x89, 0xb2, 0x31, 0xb4, 0x89, - 0xb2, 0x31, 0xb4, 0x89, 0xb2, 0x31, 0xb5, 0x89, 0xb2, 0x31, 0xb5, 0x89, - 0xb2, 0x31, 0xb5, 0x8a, 0xb3, 0x31, 0xb6, 0x8a, 0xb4, 0x31, 0xb6, 0x8a, - 0xb3, 0x31, 0xb6, 0x8a, 0xb4, 0x31, 0xb7, 0x8a, 0xb3, 0x31, 0xb7, 0x8a, - 0xb4, 0x31, 0xb7, 0x8b, 0xb7, 0x31, 0xb8, 0x8b, 0xb7, 0x31, 0xb8, 0x8b, - 0xb7, 0x31, 0xb8, 0x8b, 0xb7, 0x31, 0xb9, 0x8b, 0xb7, 0x31, 0xb9, 0x8b, - 0xb7, 0x31, 0xb9, 0x8b, 0xb7, 0x31, 0xba, 0x8b, 0xb7, 0x31, 0xba, 0x8b, - 0xb7, 0x31, 0xba, 0x8b, 0xb7, 0x31, 0xbb, 0x8b, 0xb7, 0x31, 0xbb, 0x8b, - 0xb7, 0x31, 0xbb, 0x8c, 0xba, 0x31, 0xbc, 0x8c, 0xba, 0x31, 0xbc, 0x8c, - 0xba, 0x31, 0xbc, 0x8c, 0xba, 0x31, 0xbd, 0x8c, 0xba, 0x31, 0xbd, 0x8c, - 0xba, 0x31, 0xbd, 0x8c, 0xba, 0x31, 0xbe, 0x8c, 0xba, 0x31, 0xbe, 0x8c, - 0xba, 0x31, 0xbe, 0x8d, 0xbd, 0x31, 0xbf, 0x8d, 0xbd, 0x31, 0xbf, 0x8d, - 0xbd, 0x31, 0xbf, 0x8d, 0xbd, 0x31, 0xc0, 0x8d, 0xbd, 0x31, 0xc0, 0x8d, - 0xbd, 0x31, 0xc0, 0x8d, 0xbd, 0x31, 0xc1, 0x8d, 0xbd, 0x31, 0xc1, 0x8d, - 0xbd, 0x31, 0xc1, 0x8e, 0xc0, 0x31, 0xc1, 0x8e, 0xc0, 0x31, 0xc2, 0x8e, - 0xc0, 0x31, 0xc2, 0x8e, 0xc0, 0x31, 0xc2, 0x8e, 0xc0, 0x31, 0xc3, 0x8e, - 0xc0, 0x31, 0xc3, 0x8e, 0xc0, 0x31, 0xc3, 0x8e, 0xc0, 0x31, 0xc4, 0x8e, - 0xc0, 0x31, 0xc4, 0x8e, 0xc0, 0x31, 0xc4, 0x8e, 0xc3, 0x31, 0xc5, 0x8e, - 0xc0, 0x31, 0xc5, 0x8e, 0xc3, 0x31, 0xc5, 0x8e, 0xc3, 0x31, 0xc6, 0x8e, - 0xc3, 0x31, 0xc6, 0x8e, 0xc3, 0x31, 0xc6, 0x8e, 0xc3, 0x31, 0xc6, 0x8e, - 0xc3, 0x31, 0xc7, 0x8e, 0xc3, 0x31, 0xc7, 0x8f, 0xc6, 0x31, 0xc7, 0x8e, - 0xc3, 0x31, 0xc8, 0x8f, 0xc6, 0x31, 0xc8, 0x8f, 0xc6, 0x31, 0xc8, 0x8f, - 0xc6, 0x31, 0xc9, 0x8f, 0xc6, 0x31, 0xc9, 0x8f, 0xc6, 0x31, 0xc9, 0x8f, - 0xc6, 0x31, 0xc9, 0x8f, 0xc6, 0x31, 0xca, 0x90, 0xc9, 0x31, 0xca, 0x90, - 0xc9, 0x31, 0xca, 0x90, 0xc9, 0x31, 0xcb, 0x90, 0xc9, 0x31, 0xcb, 0x90, - 0xc9, 0x31, 0xcb, 0x90, 0xc9, 0x31, 0xcc, 0x90, 0xc9, 0x31, 0xcc, 0x90, - 0xc9, 0x31, 0xcc, 0x90, 0xc9, 0x31, 0xcc, 0x90, 0xc9, 0x31, 0xcd, 0x90, - 0xc9, 0x31, 0xcd, 0x90, 0xc9, 0x31, 0xcd, 0x91, 0xcc, 0x31, 0xce, 0x91, - 0xcb, 0x31, 0xce, 0x91, 0xcc, 0x31, 0xce, 0x91, 0xcb, 0x31, 0xce, 0x91, - 0xcc, 0x31, 0xcf, 0x91, 0xcb, 0x31, 0xcf, 0x91, 0xcc, 0x31, 0xcf, 0x91, - 0xcb, 0x31, 0xd0, 0x91, 0xcc, 0x31, 0xd0, 0x92, 0xce, 0x31, 0xd0, 0x92, - 0xce, 0x31, 0xd0, 0x92, 0xce, 0x31, 0xd1, 0x92, 0xce, 0x31, 0xd1, 0x92, - 0xce, 0x31, 0xd1, 0x92, 0xce, 0x31, 0xd2, 0x92, 0xce, 0x31, 0xd2, 0x92, - 0xce, 0x31, 0xd2, 0x92, 0xce, 0x31, 0xd2, 0x92, 0xce, 0x31, 0xd3, 0x93, - 0xd1, 0x31, 0xd3, 0x92, 0xce, 0x31, 0xd3, 0x93, 0xd1, 0x31, 0xd4, 0x93, - 0xd1, 0x31, 0xd4, 0x93, 0xd1, 0x31, 0xd4, 0x93, 0xd1, 0x31, 0xd4, 0x93, - 0xd1, 0x31, 0xd5, 0x93, 0xd1, 0x31, 0xd5, 0x93, 0xd1, 0x31, 0xd5, 0x94, - 0xd4, 0x31, 0xd6, 0x93, 0xd1, 0x31, 0xd6, 0x94, 0xd4, 0x31, 0xd6, 0x94, - 0xd3, 0x31, 0xd6, 0x94, 0xd4, 0x31, 0xd7, 0x94, 0xd3, 0x31, 0xd7, 0x94, - 0xd4, 0x31, 0xd7, 0x94, 0xd3, 0x31, 0xd7, 0x94, 0xd4, 0x31, 0xd8, 0x94, - 0xd3, 0x31, 0xd8, 0x94, 0xd4, 0x31, 0xd8, 0x95, 0xd6, 0x31, 0xd9, 0x95, - 0xd6, 0x31, 0xd9, 0x95, 0xd6, 0x31, 0xd9, 0x95, 0xd6, 0x31, 0xd9, 0x95, - 0xd6, 0x31, 0xda, 0x95, 0xd6, 0x31, 0xda, 0x95, 0xd6, 0x31, 0xda, 0x95, - 0xd6, 0x31, 0xda, 0x95, 0xd6, 0x31, 0xdb, 0x95, 0xd6, 0x31, 0xdb, 0x96, - 0xd9, 0x31, 0xdb, 0x95, 0xd6, 0x31, 0xdb, 0x96, 0xd9, 0x31, 0xdc, 0x96, - 0xd9, 0x31, 0xdc, 0x96, 0xd9, 0x31, 0xdc, 0x96, 0xd9, 0x31, 0xdd, 0x96, - 0xd9, 0x31, 0xdd, 0x96, 0xd9, 0x31, 0xdd, 0x96, 0xd9, 0x31, 0xdd, 0x97, - 0xdb, 0x31, 0xde, 0x96, 0xd9, 0x31, 0xde, 0x97, 0xdb, 0x31, 0xde, 0x97, - 0xdb, 0x31, 0xde, 0x97, 0xdb, 0x31, 0xdf, 0x97, 0xdb, 0x31, 0xdf, 0x97, - 0xdb, 0x31, 0xdf, 0x97, 0xdb, 0x31, 0xdf, 0x97, 0xdb, 0x31, 0xe0, 0x98, - 0xde, 0x31, 0xe0, 0x98, 0xde, 0x31, 0xe0, 0x98, 0xde, 0x31, 0xe1, 0x98, - 0xde, 0x31, 0xe1, 0x98, 0xde, 0x31, 0xe1, 0x98, 0xde, 0x31, 0xe1, 0x98, - 0xde, 0x31, 0xe2, 0x98, 0xde, 0x31, 0xe2, 0x98, 0xde, 0x31, 0xe2, 0x98, - 0xde, 0x31, 0xe2, 0x98, 0xe0, 0x31, 0xe3, 0x98, 0xde, 0x31, 0xe3, 0x98, - 0xe0, 0x31, 0xe3, 0x98, 0xe0, 0x31, 0xe3, 0x98, 0xe0, 0x31, 0xe4, 0x98, - 0xe0, 0x31, 0xe4, 0x98, 0xe0, 0x31, 0xe4, 0x98, 0xe0, 0x31, 0xe4, 0x98, - 0xe0, 0x31, 0xe5, 0x99, 0xe3, 0x31, 0xe5, 0x98, 0xe0, 0x31, 0xe5, 0x99, - 0xe3, 0x31, 0xe5, 0x98, 0xe0, 0x31, 0xe6, 0x99, 0xe3, 0x31, 0xe6, 0x99, - 0xe2, 0x31, 0xe6, 0x99, 0xe3, 0x31, 0xe6, 0x99, 0xe2, 0x31, 0xe7, 0x99, - 0xe3, 0x31, 0xe7, 0x99, 0xe2, 0x31, 0xe7, 0x99, 0xe3, 0x31, 0xe7, 0x9a, - 0xe5, 0x31, 0xe8, 0x9a, 0xe5, 0x31, 0xe8, 0x9a, 0xe5, 0x31, 0xe8, 0x9a, - 0xe5, 0x31, 0xe8, 0x9a, 0xe5, 0x31, 0xe9, 0x9a, 0xe5, 0x31, 0xe9, 0x9a, - 0xe5, 0x31, 0xe9, 0x9a, 0xe5, 0x31, 0xe9, 0x9a, 0xe5, 0x31, 0xea, 0x9a, - 0xe5, 0x31, 0xea, 0x9b, 0xe7, 0x31, 0xea, 0x9a, 0xe5, 0x31, 0xea, 0x9b, - 0xe7, 0x31, 0xeb, 0x9b, 0xe7, 0x31, 0xeb, 0x9b, 0xe7, 0x31, 0xeb, 0x9b, - 0xe7, 0x31, 0xeb, 0x9b, 0xe7, 0x31, 0xec, 0x9b, 0xe7, 0x31, 0xec, 0x9b, - 0xe7, 0x31, 0xec, 0x9c, 0xea, 0x31, 0xec, 0x9c, 0xea, 0x31, 0xec, 0x9c, - 0xea, 0x31, 0xed, 0x9c, 0xea, 0x31, 0xed, 0x9c, 0xea, 0x31, 0xed, 0x9c, - 0xea, 0x31, 0xed, 0x9c, 0xea, 0x31, 0xee, 0x9c, 0xea, 0x31, 0xee, 0x9c, - 0xea, 0x31, 0xee, 0x9c, 0xea, 0x31, 0xee, 0x9d, 0xec, 0x31, 0xef, 0x9c, - 0xea, 0x31, 0xef, 0x9d, 0xec, 0x31, 0xef, 0x9c, 0xea, 0x31, 0xef, 0x9d, - 0xec, 0x31, 0xf0, 0x9d, 0xec, 0x31, 0xf0, 0x9d, 0xec, 0x31, 0xf0, 0x9d, - 0xec, 0x31, 0xf0, 0x9d, 0xec, 0x31, 0xf1, 0x9d, 0xec, 0x31, 0xf1, 0x9d, - 0xec, 0x31, 0xf1, 0x9d, 0xee, 0x31, 0xf1, 0x9d, 0xec, 0x31, 0xf2, 0x9d, - 0xee, 0x31, 0xf2, 0x9d, 0xee, 0x31, 0xf2, 0x9d, 0xee, 0x31, 0xf2, 0x9d, - 0xee, 0x31, 0xf2, 0x9d, 0xee, 0x31, 0xf3, 0x9d, 0xee, 0x31, 0xf3, 0x9d, - 0xee, 0x31, 0xf3, 0x9e, 0xf0, 0x31, 0xf3, 0x9e, 0xf1, 0x31, 0xf4, 0x9e, - 0xf0, 0x31, 0xf4, 0x9e, 0xf1, 0x31, 0xf4, 0x9e, 0xf0, 0x31, 0xf4, 0x9e, - 0xf1, 0x31, 0xf5, 0x9e, 0xf0, 0x31, 0xf5, 0x9e, 0xf1, 0x31, 0xf5, 0x9e, - 0xf0, 0x31, 0xf5, 0x9e, 0xf1, 0x31, 0xf5, 0x9f, 0xf3, 0x31, 0xf6, 0x9e, - 0xf1, 0x31, 0xf6, 0x9f, 0xf3, 0x31, 0xf6, 0x9f, 0xf2, 0x31, 0xf6, 0x9f, - 0xf3, 0x31, 0xf7, 0x9f, 0xf2, 0x31, 0xf7, 0x9f, 0xf3, 0x31, 0xf7, 0x9f, - 0xf2, 0x31, 0xf7, 0x9f, 0xf3, 0x31, 0xf8, 0xa0, 0xf5, 0x31, 0xf8, 0x9f, - 0xf3, 0x31, 0xf8, 0xa0, 0xf5, 0x31, 0xf8, 0x9f, 0xf3, 0x31, 0xf8, 0xa0, - 0xf5, 0x31, 0xf9, 0xa0, 0xf5, 0x31, 0xf9, 0xa0, 0xf5, 0x31, 0xf9, 0xa0, - 0xf5, 0x31, 0xf9, 0xa0, 0xf5, 0x31, 0xfa, 0xa1, 0xf7, 0x31, 0xfa, 0xa1, - 0xf7, 0x31, 0xfa, 0xa1, 0xf7, 0x31, 0xfa, 0xa1, 0xf7, 0x31, 0xfa, 0xa1, - 0xf7, 0x31, 0xfb, 0xa1, 0xf7, 0x31, 0xfb, 0xa1, 0xf7, 0x31, 0xfb, 0xa1, - 0xf7, 0x31, 0xfb, 0xa1, 0xf7, 0x31, 0xfc, 0xa1, 0xf7, 0x31, 0xfc, 0xa1, - 0xf9, 0x31, 0xfc, 0xa1, 0xf7, 0x31, 0xfc, 0xa1, 0xf9, 0x31, 0xfc, 0xa1, - 0xf7, 0x31, 0xfd, 0xa1, 0xf9, 0x31, 0xfd, 0xa1, 0xf9, 0x31, 0xfd, 0xa1, - 0xf9, 0x31, 0xfd, 0xa1, 0xf9, 0x31, 0xfe, 0xa1, 0xf9, 0x31, 0xfe, 0xa1, - 0xf9, 0x31, 0xfe, 0xa1, 0xf9, 0x31, 0xfe, 0xa2, 0xfb, 0x31, 0xfe, 0xa1, - 0xf9, 0x31, 0xff, 0xa2, 0xfb, 0x31, 0xff, 0xa2, 0xfb, 0x31, 0x03, 0x89, - 0x9a, 0x31, 0x0a, 0x86, 0x9b, 0x31, 0x0f, 0x89, 0x9a, 0x31, 0x14, 0x86, - 0x9b, 0x31, 0x17, 0x89, 0x9a, 0x31, 0x1b, 0x86, 0x9b, 0x31, 0x1e, 0x89, - 0x9a, 0x31, 0x20, 0x86, 0x9b, 0x31, 0x23, 0x89, 0x9a, 0x31, 0x25, 0x86, - 0x9b, 0x31, 0x27, 0x89, 0x9a, 0x31, 0x29, 0x86, 0x9b, 0x31, 0x2b, 0x89, - 0x9a, 0x31, 0x2d, 0x86, 0x9b, 0x31, 0x2f, 0x89, 0x9a, 0x31, 0x31, 0x86, - 0x9b, 0x31, 0x32, 0x89, 0x9a, 0x31, 0x34, 0x86, 0x9b, 0x31, 0x35, 0x89, - 0x9a, 0x31, 0x37, 0x86, 0x9b, 0x31, 0x38, 0x89, 0x9a, 0x31, 0x3a, 0x86, - 0x9b, 0x31, 0x3b, 0x89, 0x9a, 0x31, 0x3c, 0x86, 0x9b, 0x31, 0x3e, 0x83, - 0x9b, 0x31, 0x3f, 0x86, 0x9b, 0x31, 0x40, 0x83, 0x9b, 0x31, 0x42, 0x86, - 0x9b, 0x31, 0x43, 0x83, 0x9b, 0x31, 0x44, 0x86, 0x9b, 0x31, 0x45, 0x83, - 0x9b, 0x31, 0x46, 0x86, 0x9b, 0x31, 0x47, 0x83, 0x9b, 0x31, 0x48, 0x86, - 0x9b, 0x31, 0x49, 0x83, 0x9b, 0x31, 0x4a, 0x86, 0x9b, 0x31, 0x4b, 0x83, - 0x9b, 0x31, 0x4c, 0x86, 0x9b, 0x31, 0x4d, 0x83, 0x9b, 0x31, 0x4e, 0x86, - 0x9b, 0x31, 0x4f, 0x83, 0x9b, 0x31, 0x50, 0x86, 0x9b, 0x31, 0x51, 0x83, - 0x9b, 0x31, 0x52, 0x86, 0x9b, 0x31, 0x53, 0x83, 0x9b, 0x31, 0x54, 0x86, - 0x9b, 0x31, 0x55, 0x83, 0x9b, 0x31, 0x56, 0x86, 0x9b, 0x31, 0x57, 0x83, - 0x9b, 0x31, 0x58, 0x86, 0x9b, 0x31, 0x58, 0x83, 0x9b, 0x31, 0x59, 0x86, - 0x9b, 0x31, 0x5a, 0x83, 0x9b, 0x31, 0x5b, 0x86, 0x9b, 0x31, 0x5c, 0x83, - 0x9b, 0x31, 0x5d, 0x86, 0x9b, 0x31, 0x5d, 0x83, 0x9b, 0x31, 0x5e, 0x86, - 0x9b, 0x31, 0x5f, 0x83, 0x9b, 0x31, 0x60, 0x86, 0x9b, 0x31, 0x60, 0x83, - 0x9b, 0x31, 0x61, 0x86, 0x9b, 0x31, 0x62, 0x83, 0x9b, 0x31, 0x63, 0x86, - 0x9b, 0x31, 0x63, 0x83, 0x9b, 0x31, 0x64, 0x86, 0x9b, 0x31, 0x65, 0x83, - 0x9b, 0x31, 0x66, 0x86, 0x9b, 0x31, 0x66, 0x83, 0x9b, 0x31, 0x67, 0x86, - 0x9b, 0x31, 0x68, 0x83, 0x9b, 0x31, 0x68, 0x86, 0x9b, 0x31, 0x69, 0x83, - 0x9b, 0x31, 0x6a, 0x86, 0x9b, 0x31, 0x6a, 0x83, 0x9b, 0x31, 0x6b, 0x86, - 0x9b, 0x31, 0x6c, 0x83, 0x9b, 0x31, 0x6c, 0x86, 0x9b, 0x31, 0x6d, 0x83, - 0x9b, 0x31, 0x6e, 0x86, 0x9b, 0x31, 0x6e, 0x83, 0x9b, 0x31, 0x6f, 0x86, - 0x9b, 0x31, 0x70, 0x83, 0x9b, 0x31, 0x70, 0x86, 0x9b, 0x31, 0x71, 0x83, - 0x9b, 0x31, 0x72, 0x86, 0x9b, 0x31, 0x72, 0x83, 0x9b, 0x31, 0x73, 0x86, - 0x9b, 0x31, 0x73, 0x83, 0x9b, 0x31, 0x74, 0x86, 0x9b, 0x31, 0x75, 0x83, - 0x9b, 0x31, 0x75, 0x86, 0x9b, 0x31, 0x76, 0x83, 0x9b, 0x31, 0x76, 0x86, - 0x9b, 0x31, 0x77, 0x83, 0x9b, 0x31, 0x78, 0x86, 0x9b, 0x31, 0x78, 0x83, - 0x9b, 0x31, 0x79, 0x86, 0x9b, 0x31, 0x79, 0x83, 0x9b, 0x31, 0x7a, 0x86, - 0x9b, 0x31, 0x7a, 0x83, 0x9b, 0x31, 0x7b, 0x86, 0x9b, 0x31, 0x7c, 0x83, - 0x9b, 0x31, 0x7c, 0x86, 0x9b, 0x31, 0x7d, 0x83, 0x9b, 0x31, 0x7d, 0x83, - 0x9c, 0x31, 0x7e, 0x83, 0x9b, 0x31, 0x7e, 0x83, 0x9c, 0x31, 0x7f, 0x83, - 0x9b, 0x31, 0x7f, 0x83, 0x9c, 0x31, 0x80, 0x83, 0x9b, 0x31, 0x81, 0x83, - 0x9c, 0x31, 0x81, 0x83, 0x9b, 0x31, 0x82, 0x83, 0x9c, 0x31, 0x82, 0x83, - 0x9b, 0x31, 0x83, 0x83, 0x9c, 0x31, 0x83, 0x83, 0x9b, 0x31, 0x84, 0x83, - 0x9c, 0x31, 0x84, 0x83, 0x9b, 0x31, 0x85, 0x83, 0x9c, 0x31, 0x85, 0x83, - 0x9b, 0x31, 0x86, 0x83, 0x9c, 0x31, 0x86, 0x83, 0x9b, 0x31, 0x87, 0x83, - 0x9c, 0x31, 0x87, 0x83, 0x9b, 0x31, 0x88, 0x83, 0x9c, 0x31, 0x88, 0x83, - 0x9b, 0x31, 0x89, 0x83, 0x9c, 0x31, 0x89, 0x83, 0x9b, 0x31, 0x8a, 0x83, - 0x9c, 0x31, 0x8a, 0x83, 0x9b, 0x31, 0x8b, 0x83, 0x9c, 0x31, 0x8b, 0x83, - 0x9b, 0x31, 0x8c, 0x83, 0x9c, 0x31, 0x8c, 0x83, 0x9b, 0x31, 0x8d, 0x83, - 0x9c, 0x31, 0x8d, 0x83, 0x9b, 0x31, 0x8e, 0x83, 0x9c, 0x31, 0x8e, 0x83, - 0x9b, 0x31, 0x8e, 0x83, 0x9c, 0x31, 0x8f, 0x83, 0x9b, 0x31, 0x8f, 0x83, - 0x9c, 0x31, 0x90, 0x83, 0x9b, 0x31, 0x90, 0x83, 0x9c, 0x31, 0x91, 0x83, - 0x9b, 0x31, 0x91, 0x83, 0x9c, 0x31, 0x92, 0x83, 0x9b, 0x31, 0x92, 0x83, - 0x9c, 0x31, 0x93, 0x83, 0x9b, 0x31, 0x93, 0x83, 0x9c, 0x31, 0x94, 0x83, - 0x9b, 0x31, 0x94, 0x83, 0x9c, 0x31, 0x94, 0x83, 0x9b, 0x31, 0x95, 0x83, - 0x9c, 0x31, 0x95, 0x83, 0x9b, 0x31, 0x96, 0x83, 0x9c, 0x31, 0x96, 0x83, - 0x9b, 0x31, 0x97, 0x83, 0x9c, 0x31, 0x97, 0x83, 0x9b, 0x31, 0x98, 0x83, - 0x9c, 0x31, 0x98, 0x83, 0x9b, 0x31, 0x98, 0x83, 0x9c, 0x31, 0x99, 0x83, - 0x9b, 0x31, 0x99, 0x83, 0x9c, 0x31, 0x9a, 0x83, 0x9b, 0x31, 0x9a, 0x83, - 0x9c, 0x31, 0x9a, 0x83, 0x9b, 0x31, 0x9b, 0x83, 0x9c, 0x31, 0x9b, 0x83, - 0x9b, 0x31, 0x9c, 0x83, 0x9c, 0x31, 0x9c, 0x83, 0x9c, 0x31, 0x9d, 0x83, - 0x9d, 0x31, 0x9d, 0x83, 0x9c, 0x31, 0x9d, 0x83, 0x9d, 0x31, 0x9e, 0x83, - 0x9c, 0x31, 0x9e, 0x83, 0x9d, 0x31, 0x9f, 0x83, 0x9c, 0x31, 0x9f, 0x83, - 0x9d, 0x31, 0x9f, 0x83, 0x9c, 0x31, 0xa0, 0x83, 0x9d, 0x31, 0xa0, 0x84, - 0xa0, 0x31, 0xa1, 0x84, 0xa1, 0x31, 0xa1, 0x84, 0xa0, 0x31, 0xa1, 0x84, - 0xa1, 0x31, 0xa2, 0x84, 0xa0, 0x31, 0xa2, 0x84, 0xa1, 0x31, 0xa3, 0x84, - 0xa0, 0x31, 0xa3, 0x84, 0xa1, 0x31, 0xa3, 0x84, 0xa0, 0x31, 0xa4, 0x84, - 0xa1, 0x31, 0xa4, 0x85, 0xa4, 0x31, 0xa5, 0x85, 0xa4, 0x31, 0xa5, 0x85, - 0xa4, 0x31, 0xa5, 0x85, 0xa4, 0x31, 0xa6, 0x85, 0xa4, 0x31, 0xa6, 0x85, - 0xa4, 0x31, 0xa6, 0x85, 0xa4, 0x31, 0xa7, 0x85, 0xa4, 0x31, 0xa7, 0x85, - 0xa4, 0x31, 0xa8, 0x86, 0xa8, 0x31, 0xa8, 0x86, 0xa7, 0x31, 0xa8, 0x86, - 0xa8, 0x31, 0xa9, 0x86, 0xa7, 0x31, 0xa9, 0x86, 0xa8, 0x31, 0xaa, 0x86, - 0xa7, 0x31, 0xaa, 0x86, 0xa8, 0x31, 0xaa, 0x86, 0xa7, 0x31, 0xab, 0x86, - 0xa8, 0x31, 0xab, 0x87, 0xab, 0x31, 0xab, 0x87, 0xab, 0x31, 0xac, 0x87, - 0xab, 0x31, 0xac, 0x87, 0xab, 0x31, 0xac, 0x87, 0xab, 0x31, 0xad, 0x87, - 0xab, 0x31, 0xad, 0x87, 0xab, 0x31, 0xae, 0x87, 0xab, 0x31, 0xae, 0x87, - 0xab, 0x31, 0xae, 0x87, 0xab, 0x31, 0xaf, 0x87, 0xab, 0x31, 0xaf, 0x87, - 0xab, 0x31, 0xaf, 0x88, 0xaf, 0x31, 0xb0, 0x88, 0xae, 0x31, 0xb0, 0x88, - 0xaf, 0x31, 0xb0, 0x88, 0xae, 0x31, 0xb1, 0x88, 0xaf, 0x31, 0xb1, 0x88, - 0xae, 0x31, 0xb2, 0x88, 0xaf, 0x31, 0xb2, 0x88, 0xae, 0x31, 0xb2, 0x88, - 0xaf, 0x31, 0xb3, 0x89, 0xb2, 0x31, 0xb3, 0x89, 0xb2, 0x31, 0xb3, 0x89, - 0xb2, 0x31, 0xb4, 0x89, 0xb2, 0x31, 0xb4, 0x89, 0xb2, 0x31, 0xb4, 0x89, - 0xb2, 0x31, 0xb5, 0x89, 0xb2, 0x31, 0xb5, 0x89, 0xb2, 0x31, 0xb5, 0x89, - 0xb2, 0x31, 0xb6, 0x89, 0xb2, 0x31, 0xb6, 0x8a, 0xb5, 0x31, 0xb6, 0x8a, - 0xb5, 0x31, 0xb7, 0x8a, 0xb5, 0x31, 0xb7, 0x8a, 0xb5, 0x31, 0xb7, 0x8a, - 0xb5, 0x31, 0xb8, 0x8a, 0xb5, 0x31, 0xb8, 0x8a, 0xb5, 0x31, 0xb8, 0x8a, - 0xb5, 0x31, 0xb9, 0x8a, 0xb5, 0x31, 0xb9, 0x8b, 0xb8, 0x31, 0xb9, 0x8a, - 0xb5, 0x31, 0xba, 0x8b, 0xb8, 0x31, 0xba, 0x8b, 0xb8, 0x31, 0xba, 0x8b, - 0xb8, 0x31, 0xbb, 0x8b, 0xb8, 0x31, 0xbb, 0x8b, 0xb8, 0x31, 0xbb, 0x8b, - 0xb8, 0x31, 0xbc, 0x8b, 0xb8, 0x31, 0xbc, 0x8b, 0xb8, 0x31, 0xbc, 0x8b, - 0xb8, 0x31, 0xbd, 0x8c, 0xbb, 0x31, 0xbd, 0x8c, 0xbc, 0x31, 0xbd, 0x8c, - 0xbb, 0x31, 0xbe, 0x8c, 0xbc, 0x31, 0xbe, 0x8c, 0xbb, 0x31, 0xbe, 0x8c, - 0xbc, 0x31, 0xbf, 0x8c, 0xbb, 0x31, 0xbf, 0x8c, 0xbc, 0x31, 0xbf, 0x8c, - 0xbb, 0x31, 0xc0, 0x8c, 0xbc, 0x31, 0xc0, 0x8d, 0xbf, 0x31, 0xc0, 0x8d, - 0xbe, 0x31, 0xc1, 0x8d, 0xbf, 0x31, 0xc1, 0x8d, 0xbe, 0x31, 0xc1, 0x8d, - 0xbf, 0x31, 0xc1, 0x8d, 0xbe, 0x31, 0xc2, 0x8d, 0xbf, 0x31, 0xc2, 0x8d, - 0xbe, 0x31, 0xc2, 0x8d, 0xbf, 0x31, 0xc3, 0x8e, 0xc1, 0x31, 0xc3, 0x8e, - 0xc1, 0x31, 0xc3, 0x8e, 0xc1, 0x31, 0xc4, 0x8e, 0xc1, 0x31, 0xc4, 0x8e, - 0xc1, 0x31, 0xc4, 0x8e, 0xc1, 0x31, 0xc5, 0x8e, 0xc1, 0x31, 0xc5, 0x8e, - 0xc1, 0x31, 0xc5, 0x8e, 0xc1, 0x31, 0xc6, 0x8f, 0xc4, 0x31, 0xc6, 0x8f, - 0xc5, 0x31, 0xc6, 0x8f, 0xc4, 0x31, 0xc6, 0x8f, 0xc5, 0x31, 0xc7, 0x8f, - 0xc4, 0x31, 0xc7, 0x8f, 0xc5, 0x31, 0xc7, 0x8f, 0xc4, 0x31, 0xc8, 0x8f, - 0xc5, 0x31, 0xc8, 0x8f, 0xc4, 0x31, 0xc8, 0x8f, 0xc5, 0x31, 0xc9, 0x90, - 0xc7, 0x31, 0xc9, 0x8f, 0xc5, 0x31, 0xc9, 0x90, 0xc7, 0x31, 0xc9, 0x90, - 0xc7, 0x31, 0xca, 0x90, 0xc7, 0x31, 0xca, 0x90, 0xc7, 0x31, 0xca, 0x90, - 0xc7, 0x31, 0xcb, 0x90, 0xc7, 0x31, 0xcb, 0x90, 0xc7, 0x31, 0xcb, 0x91, - 0xca, 0x31, 0xcc, 0x90, 0xc7, 0x31, 0xcc, 0x91, 0xca, 0x31, 0xcc, 0x91, - 0xca, 0x31, 0xcc, 0x91, 0xca, 0x31, 0xcd, 0x91, 0xca, 0x31, 0xcd, 0x91, - 0xca, 0x31, 0xcd, 0x91, 0xca, 0x31, 0xce, 0x91, 0xca, 0x31, 0xce, 0x91, - 0xca, 0x31, 0xce, 0x91, 0xca, 0x31, 0xce, 0x92, 0xcd, 0x31, 0xcf, 0x92, - 0xcd, 0x31, 0xcf, 0x92, 0xcd, 0x31, 0xcf, 0x92, 0xcd, 0x31, 0xd0, 0x92, - 0xcd, 0x31, 0xd0, 0x92, 0xcd, 0x31, 0xd0, 0x92, 0xcd, 0x31, 0xd0, 0x92, - 0xcd, 0x31, 0xd1, 0x92, 0xcd, 0x31, 0xd1, 0x92, 0xcd, 0x31, 0xd1, 0x93, - 0xd0, 0x31, 0xd2, 0x92, 0xcd, 0x31, 0xd2, 0x93, 0xd0, 0x31, 0xd2, 0x93, - 0xcf, 0x31, 0xd2, 0x93, 0xd0, 0x31, 0xd3, 0x93, 0xcf, 0x31, 0xd3, 0x93, - 0xd0, 0x31, 0xd3, 0x93, 0xcf, 0x31, 0xd4, 0x93, 0xd0, 0x31, 0xd4, 0x94, - 0xd2, 0x31, 0xd4, 0x94, 0xd2, 0x31, 0xd4, 0x94, 0xd2, 0x31, 0xd5, 0x94, - 0xd2, 0x31, 0xd5, 0x94, 0xd2, 0x31, 0xd5, 0x94, 0xd2, 0x31, 0xd6, 0x94, - 0xd2, 0x31, 0xd6, 0x94, 0xd2, 0x31, 0xd6, 0x94, 0xd2, 0x31, 0xd6, 0x94, - 0xd2, 0x31, 0xd7, 0x94, 0xd5, 0x31, 0xd7, 0x94, 0xd2, 0x31, 0xd7, 0x94, - 0xd5, 0x31, 0xd7, 0x94, 0xd5, 0x31, 0xd8, 0x94, 0xd5, 0x31, 0xd8, 0x94, - 0xd5, 0x31, 0xd8, 0x94, 0xd5, 0x31, 0xd9, 0x94, 0xd5, 0x31, 0xd9, 0x94, - 0xd5, 0x31, 0xd9, 0x94, 0xd5, 0x31, 0xd9, 0x94, 0xd5, 0x31, 0xda, 0x95, - 0xd7, 0x31, 0xda, 0x95, 0xd7, 0x31, 0xda, 0x95, 0xd7, 0x31, 0xda, 0x95, - 0xd7, 0x31, 0xdb, 0x95, 0xd7, 0x31, 0xdb, 0x95, 0xd7, 0x31, 0xdb, 0x95, - 0xd7, 0x31, 0xdb, 0x95, 0xd7, 0x31, 0xdc, 0x95, 0xd7, 0x31, 0xdc, 0x96, - 0xda, 0x31, 0xdc, 0x96, 0xda, 0x31, 0xdd, 0x96, 0xda, 0x31, 0xdd, 0x96, - 0xda, 0x31, 0xdd, 0x96, 0xda, 0x31, 0xdd, 0x96, 0xda, 0x31, 0xde, 0x96, - 0xda, 0x31, 0xde, 0x96, 0xda, 0x31, 0xde, 0x96, 0xda, 0x31, 0xde, 0x96, - 0xda, 0x31, 0xdf, 0x97, 0xdd, 0x31, 0xdf, 0x96, 0xda, 0x31, 0xdf, 0x97, - 0xdd, 0x31, 0xdf, 0x97, 0xdc, 0x31, 0xe0, 0x97, 0xdd, 0x31, 0xe0, 0x97, - 0xdc, 0x31, 0xe0, 0x97, 0xdd, 0x31, 0xe1, 0x97, 0xdc, 0x31, 0xe1, 0x97, - 0xdd, 0x31, 0xe1, 0x98, 0xdf, 0x31, 0xe1, 0x97, 0xdd, 0x31, 0xe2, 0x98, - 0xdf, 0x31, 0xe2, 0x98, 0xdf, 0x31, 0xe2, 0x98, 0xdf, 0x31, 0xe2, 0x98, - 0xdf, 0x31, 0xe3, 0x98, 0xdf, 0x31, 0xe3, 0x98, 0xdf, 0x31, 0xe3, 0x98, - 0xdf, 0x31, 0xe3, 0x99, 0xe1, 0x31, 0xe4, 0x99, 0xe2, 0x31, 0xe4, 0x99, - 0xe1, 0x31, 0xe4, 0x99, 0xe2, 0x31, 0xe4, 0x99, 0xe1, 0x31, 0xe5, 0x99, - 0xe2, 0x31, 0xe5, 0x99, 0xe1, 0x31, 0xe5, 0x99, 0xe2, 0x31, 0xe5, 0x99, - 0xe1, 0x31, 0xe6, 0x99, 0xe2, 0x31, 0xe6, 0x9a, 0xe4, 0x31, 0xe6, 0x99, - 0xe2, 0x31, 0xe6, 0x9a, 0xe4, 0x31, 0xe7, 0x99, 0xe2, 0x31, 0xe7, 0x9a, - 0xe4, 0x31, 0xe7, 0x9a, 0xe4, 0x31, 0xe7, 0x9a, 0xe4, 0x31, 0xe8, 0x9a, - 0xe4, 0x31, 0xe8, 0x9a, 0xe4, 0x31, 0xe8, 0x9a, 0xe4, 0x31, 0xe8, 0x9a, - 0xe4, 0x31, 0xe9, 0x9a, 0xe6, 0x31, 0xe9, 0x9a, 0xe4, 0x31, 0xe9, 0x9a, - 0xe6, 0x31, 0xe9, 0x9a, 0xe6, 0x31, 0xea, 0x9a, 0xe6, 0x31, 0xea, 0x9a, - 0xe6, 0x31, 0xea, 0x9a, 0xe6, 0x31, 0xea, 0x9a, 0xe6, 0x31, 0xeb, 0x9a, - 0xe6, 0x31, 0xeb, 0x9b, 0xe8, 0x31, 0xeb, 0x9b, 0xe9, 0x31, 0xeb, 0x9b, - 0xe8, 0x31, 0xec, 0x9b, 0xe9, 0x31, 0xec, 0x9b, 0xe8, 0x31, 0xec, 0x9b, - 0xe9, 0x31, 0xec, 0x9b, 0xe8, 0x31, 0xec, 0x9b, 0xe9, 0x31, 0xed, 0x9b, - 0xe8, 0x31, 0xed, 0x9b, 0xe9, 0x31, 0xed, 0x9c, 0xeb, 0x31, 0xed, 0x9b, - 0xe9, 0x31, 0xee, 0x9c, 0xeb, 0x31, 0xee, 0x9c, 0xeb, 0x31, 0xee, 0x9c, - 0xeb, 0x31, 0xee, 0x9c, 0xeb, 0x31, 0xef, 0x9c, 0xeb, 0x31, 0xef, 0x9c, - 0xeb, 0x31, 0xef, 0x9c, 0xeb, 0x31, 0xef, 0x9d, 0xed, 0x31, 0xf0, 0x9d, - 0xed, 0x31, 0xf0, 0x9d, 0xed, 0x31, 0xf0, 0x9d, 0xed, 0x31, 0xf0, 0x9d, - 0xed, 0x31, 0xf1, 0x9d, 0xed, 0x31, 0xf1, 0x9d, 0xed, 0x31, 0xf1, 0x9d, - 0xed, 0x31, 0xf1, 0x9d, 0xed, 0x31, 0xf2, 0x9d, 0xed, 0x31, 0xf2, 0x9d, - 0xed, 0x31, 0xf2, 0x9d, 0xed, 0x31, 0xf2, 0x9e, 0xef, 0x31, 0xf2, 0x9d, - 0xed, 0x31, 0xf3, 0x9e, 0xef, 0x31, 0xf3, 0x9e, 0xef, 0x31, 0xf3, 0x9e, - 0xef, 0x31, 0xf3, 0x9e, 0xef, 0x31, 0xf4, 0x9e, 0xef, 0x31, 0xf4, 0x9e, - 0xef, 0x31, 0xf4, 0x9e, 0xef, 0x31, 0xf4, 0x9f, 0xf2, 0x31, 0xf5, 0x9e, - 0xef, 0x31, 0xf5, 0x9f, 0xf2, 0x31, 0xf5, 0x9f, 0xf1, 0x31, 0xf5, 0x9f, - 0xf2, 0x31, 0xf5, 0x9f, 0xf1, 0x31, 0xf6, 0x9f, 0xf2, 0x31, 0xf6, 0x9f, - 0xf1, 0x31, 0xf6, 0x9f, 0xf2, 0x31, 0xf6, 0x9f, 0xf4, 0x31, 0xf7, 0x9f, - 0xf4, 0x31, 0xf7, 0x9f, 0xf4, 0x31, 0xf7, 0x9f, 0xf4, 0x31, 0xf7, 0x9f, - 0xf4, 0x31, 0xf8, 0x9f, 0xf4, 0x31, 0xf8, 0x9f, 0xf4, 0x31, 0xf8, 0x9f, - 0xf4, 0x31, 0xf8, 0x9f, 0xf4, 0x31, 0xf8, 0x9f, 0xf4, 0x31, 0xf9, 0xa0, - 0xf6, 0x31, 0xf9, 0x9f, 0xf4, 0x31, 0xf9, 0xa0, 0xf6, 0x31, 0xf9, 0x9f, - 0xf4, 0x31, 0xfa, 0xa0, 0xf6, 0x31, 0xfa, 0xa0, 0xf6, 0x31, 0xfa, 0xa0, - 0xf6, 0x31, 0xfa, 0xa0, 0xf6, 0x31, 0xfa, 0xa0, 0xf6, 0x31, 0xfb, 0xa1, - 0xf8, 0x31, 0xfb, 0xa0, 0xf6, 0x31, 0xfb, 0xa1, 0xf8, 0x31, 0xfb, 0xa0, - 0xf6, 0x31, 0xfc, 0xa1, 0xf8, 0x31, 0xfc, 0xa1, 0xf8, 0x31, 0xfc, 0xa1, - 0xf8, 0x31, 0xfc, 0xa1, 0xf8, 0x31, 0xfc, 0xa1, 0xf8, 0x31, 0xfd, 0xa2, - 0xfa, 0x31, 0xfd, 0xa2, 0xfa, 0x31, 0xfd, 0xa2, 0xfa, 0x31, 0xfd, 0xa2, - 0xfa, 0x31, 0xfe, 0xa2, 0xfa, 0x31, 0xfe, 0xa2, 0xfa, 0x31, 0xfe, 0xa2, - 0xfa, 0x31, 0xfe, 0xa2, 0xfa, 0x31, 0xfe, 0xa2, 0xfa, 0x31, 0xff, 0xa2, - 0xfa, 0x31, 0xff, 0xa2, 0xfa, 0x31, 0x03, 0x89, 0x9a, 0x32, 0x0a, 0x86, - 0x9b, 0x32, 0x0f, 0x89, 0x9a, 0x32, 0x14, 0x86, 0x9b, 0x32, 0x17, 0x89, - 0x9a, 0x32, 0x1b, 0x86, 0x9b, 0x32, 0x1e, 0x89, 0x9a, 0x32, 0x20, 0x86, - 0x9b, 0x32, 0x23, 0x89, 0x9a, 0x32, 0x25, 0x86, 0x9b, 0x32, 0x27, 0x89, - 0x9a, 0x32, 0x29, 0x86, 0x9b, 0x32, 0x2b, 0x89, 0x9a, 0x32, 0x2d, 0x86, - 0x9b, 0x32, 0x2f, 0x89, 0x9a, 0x32, 0x31, 0x86, 0x9b, 0x32, 0x32, 0x89, - 0x9a, 0x32, 0x34, 0x86, 0x9b, 0x32, 0x35, 0x89, 0x9a, 0x32, 0x37, 0x86, - 0x9b, 0x32, 0x38, 0x89, 0x9a, 0x32, 0x3a, 0x86, 0x9b, 0x32, 0x3b, 0x89, - 0x9a, 0x32, 0x3c, 0x86, 0x9b, 0x32, 0x3e, 0x89, 0x9a, 0x32, 0x3f, 0x86, - 0x9b, 0x32, 0x40, 0x89, 0x9a, 0x32, 0x42, 0x86, 0x9b, 0x32, 0x43, 0x89, - 0x9a, 0x32, 0x44, 0x86, 0x9b, 0x32, 0x45, 0x89, 0x9a, 0x32, 0x46, 0x86, - 0x9b, 0x32, 0x47, 0x89, 0x9a, 0x32, 0x48, 0x86, 0x9b, 0x32, 0x49, 0x89, - 0x9a, 0x32, 0x4a, 0x86, 0x9b, 0x32, 0x4b, 0x89, 0x9a, 0x32, 0x4c, 0x86, - 0x9b, 0x32, 0x4d, 0x84, 0x9b, 0x32, 0x4e, 0x86, 0x9b, 0x32, 0x4f, 0x84, - 0x9b, 0x32, 0x50, 0x86, 0x9b, 0x32, 0x51, 0x84, 0x9b, 0x32, 0x52, 0x86, - 0x9b, 0x32, 0x53, 0x84, 0x9b, 0x32, 0x54, 0x86, 0x9b, 0x32, 0x55, 0x84, - 0x9b, 0x32, 0x56, 0x86, 0x9b, 0x32, 0x57, 0x84, 0x9b, 0x32, 0x58, 0x86, - 0x9b, 0x32, 0x58, 0x84, 0x9b, 0x32, 0x59, 0x86, 0x9b, 0x32, 0x5a, 0x84, - 0x9b, 0x32, 0x5b, 0x86, 0x9b, 0x32, 0x5c, 0x84, 0x9b, 0x32, 0x5d, 0x86, - 0x9b, 0x32, 0x5d, 0x84, 0x9b, 0x32, 0x5e, 0x86, 0x9b, 0x32, 0x5f, 0x84, - 0x9b, 0x32, 0x60, 0x86, 0x9b, 0x32, 0x60, 0x84, 0x9b, 0x32, 0x61, 0x86, - 0x9b, 0x32, 0x62, 0x84, 0x9b, 0x32, 0x63, 0x86, 0x9b, 0x32, 0x63, 0x84, - 0x9b, 0x32, 0x64, 0x86, 0x9b, 0x32, 0x65, 0x84, 0x9b, 0x32, 0x66, 0x86, - 0x9b, 0x32, 0x66, 0x84, 0x9b, 0x32, 0x67, 0x86, 0x9b, 0x32, 0x68, 0x84, - 0x9b, 0x32, 0x68, 0x86, 0x9b, 0x32, 0x69, 0x84, 0x9b, 0x32, 0x6a, 0x86, - 0x9b, 0x32, 0x6a, 0x84, 0x9b, 0x32, 0x6b, 0x86, 0x9b, 0x32, 0x6c, 0x84, - 0x9b, 0x32, 0x6c, 0x86, 0x9b, 0x32, 0x6d, 0x84, 0x9b, 0x32, 0x6e, 0x86, - 0x9b, 0x32, 0x6e, 0x84, 0x9b, 0x32, 0x6f, 0x86, 0x9b, 0x32, 0x70, 0x84, - 0x9b, 0x32, 0x70, 0x86, 0x9b, 0x32, 0x71, 0x84, 0x9b, 0x32, 0x72, 0x86, - 0x9b, 0x32, 0x72, 0x84, 0x9b, 0x32, 0x73, 0x86, 0x9b, 0x32, 0x73, 0x84, - 0x9b, 0x32, 0x74, 0x86, 0x9b, 0x32, 0x75, 0x84, 0x9b, 0x32, 0x75, 0x86, - 0x9b, 0x32, 0x76, 0x84, 0x9b, 0x32, 0x76, 0x86, 0x9b, 0x32, 0x77, 0x84, - 0x9b, 0x32, 0x78, 0x86, 0x9b, 0x32, 0x78, 0x84, 0x9b, 0x32, 0x79, 0x86, - 0x9b, 0x32, 0x79, 0x84, 0x9b, 0x32, 0x7a, 0x86, 0x9b, 0x32, 0x7a, 0x84, - 0x9b, 0x32, 0x7b, 0x86, 0x9b, 0x32, 0x7c, 0x84, 0x9b, 0x32, 0x7c, 0x86, - 0x9b, 0x32, 0x7d, 0x84, 0x9b, 0x32, 0x7d, 0x86, 0x9b, 0x32, 0x7e, 0x84, - 0x9b, 0x32, 0x7e, 0x86, 0x9b, 0x32, 0x7f, 0x84, 0x9b, 0x32, 0x7f, 0x86, - 0x9b, 0x32, 0x80, 0x84, 0x9b, 0x32, 0x81, 0x86, 0x9b, 0x32, 0x81, 0x84, - 0x9b, 0x32, 0x82, 0x86, 0x9b, 0x32, 0x82, 0x84, 0x9b, 0x32, 0x83, 0x86, - 0x9b, 0x32, 0x83, 0x84, 0x9b, 0x32, 0x84, 0x86, 0x9b, 0x32, 0x84, 0x84, - 0x9b, 0x32, 0x85, 0x86, 0x9b, 0x32, 0x85, 0x84, 0x9b, 0x32, 0x86, 0x86, - 0x9b, 0x32, 0x86, 0x84, 0x9b, 0x32, 0x87, 0x86, 0x9b, 0x32, 0x87, 0x84, - 0x9b, 0x32, 0x88, 0x86, 0x9b, 0x32, 0x88, 0x84, 0x9b, 0x32, 0x89, 0x86, - 0x9b, 0x32, 0x89, 0x84, 0x9b, 0x32, 0x8a, 0x84, 0x9c, 0x32, 0x8a, 0x84, - 0x9b, 0x32, 0x8b, 0x84, 0x9c, 0x32, 0x8b, 0x84, 0x9b, 0x32, 0x8c, 0x84, - 0x9c, 0x32, 0x8c, 0x84, 0x9b, 0x32, 0x8d, 0x84, 0x9c, 0x32, 0x8d, 0x84, - 0x9b, 0x32, 0x8e, 0x84, 0x9c, 0x32, 0x8e, 0x84, 0x9b, 0x32, 0x8e, 0x84, - 0x9c, 0x32, 0x8f, 0x84, 0x9b, 0x32, 0x8f, 0x84, 0x9c, 0x32, 0x90, 0x84, - 0x9b, 0x32, 0x90, 0x84, 0x9c, 0x32, 0x91, 0x84, 0x9b, 0x32, 0x91, 0x84, - 0x9c, 0x32, 0x92, 0x84, 0x9b, 0x32, 0x92, 0x84, 0x9c, 0x32, 0x93, 0x84, - 0x9b, 0x32, 0x93, 0x84, 0x9c, 0x32, 0x94, 0x84, 0x9b, 0x32, 0x94, 0x84, - 0x9c, 0x32, 0x94, 0x84, 0x9b, 0x32, 0x95, 0x84, 0x9c, 0x32, 0x95, 0x84, - 0x9b, 0x32, 0x96, 0x84, 0x9c, 0x32, 0x96, 0x84, 0x9b, 0x32, 0x97, 0x84, - 0x9c, 0x32, 0x97, 0x84, 0x9b, 0x32, 0x98, 0x84, 0x9c, 0x32, 0x98, 0x84, - 0x9b, 0x32, 0x98, 0x84, 0x9c, 0x32, 0x99, 0x84, 0x9b, 0x32, 0x99, 0x84, - 0x9c, 0x32, 0x9a, 0x84, 0x9b, 0x32, 0x9a, 0x84, 0x9c, 0x32, 0x9a, 0x84, - 0x9b, 0x32, 0x9b, 0x84, 0x9c, 0x32, 0x9b, 0x84, 0x9b, 0x32, 0x9c, 0x84, - 0x9c, 0x32, 0x9c, 0x84, 0x9c, 0x32, 0x9d, 0x84, 0x9d, 0x32, 0x9d, 0x84, - 0x9d, 0x32, 0x9d, 0x84, 0x9d, 0x32, 0x9e, 0x84, 0x9e, 0x32, 0x9e, 0x84, - 0x9e, 0x32, 0x9f, 0x84, 0x9f, 0x32, 0x9f, 0x84, 0x9e, 0x32, 0x9f, 0x84, - 0x9f, 0x32, 0xa0, 0x84, 0x9e, 0x32, 0xa0, 0x84, 0x9f, 0x32, 0xa1, 0x84, - 0x9e, 0x32, 0xa1, 0x84, 0x9f, 0x32, 0xa1, 0x84, 0x9e, 0x32, 0xa2, 0x84, - 0x9f, 0x32, 0xa2, 0x85, 0xa2, 0x32, 0xa3, 0x85, 0xa2, 0x32, 0xa3, 0x85, - 0xa2, 0x32, 0xa3, 0x85, 0xa2, 0x32, 0xa4, 0x85, 0xa2, 0x32, 0xa4, 0x85, - 0xa2, 0x32, 0xa5, 0x85, 0xa2, 0x32, 0xa5, 0x85, 0xa2, 0x32, 0xa5, 0x85, - 0xa2, 0x32, 0xa6, 0x86, 0xa6, 0x32, 0xa6, 0x86, 0xa6, 0x32, 0xa6, 0x86, - 0xa6, 0x32, 0xa7, 0x86, 0xa6, 0x32, 0xa7, 0x86, 0xa6, 0x32, 0xa8, 0x86, - 0xa6, 0x32, 0xa8, 0x86, 0xa6, 0x32, 0xa8, 0x86, 0xa6, 0x32, 0xa9, 0x86, - 0xa6, 0x32, 0xa9, 0x86, 0xa6, 0x32, 0xaa, 0x87, 0xaa, 0x32, 0xaa, 0x87, - 0xa9, 0x32, 0xaa, 0x87, 0xaa, 0x32, 0xab, 0x87, 0xa9, 0x32, 0xab, 0x87, - 0xaa, 0x32, 0xab, 0x87, 0xa9, 0x32, 0xac, 0x87, 0xaa, 0x32, 0xac, 0x87, - 0xa9, 0x32, 0xac, 0x87, 0xaa, 0x32, 0xad, 0x88, 0xad, 0x32, 0xad, 0x88, - 0xad, 0x32, 0xae, 0x88, 0xad, 0x32, 0xae, 0x88, 0xad, 0x32, 0xae, 0x88, - 0xad, 0x32, 0xaf, 0x88, 0xad, 0x32, 0xaf, 0x88, 0xad, 0x32, 0xaf, 0x88, - 0xad, 0x32, 0xb0, 0x88, 0xad, 0x32, 0xb0, 0x88, 0xad, 0x32, 0xb0, 0x88, - 0xad, 0x32, 0xb1, 0x88, 0xad, 0x32, 0xb1, 0x89, 0xb0, 0x32, 0xb2, 0x89, - 0xb0, 0x32, 0xb2, 0x89, 0xb0, 0x32, 0xb2, 0x89, 0xb0, 0x32, 0xb3, 0x89, - 0xb0, 0x32, 0xb3, 0x89, 0xb2, 0x32, 0xb3, 0x89, 0xb0, 0x32, 0xb4, 0x89, - 0xb2, 0x32, 0xb4, 0x89, 0xb2, 0x32, 0xb4, 0x89, 0xb2, 0x32, 0xb5, 0x89, - 0xb2, 0x32, 0xb5, 0x89, 0xb2, 0x32, 0xb5, 0x8a, 0xb3, 0x32, 0xb6, 0x8a, - 0xb4, 0x32, 0xb6, 0x8a, 0xb3, 0x32, 0xb6, 0x8a, 0xb4, 0x32, 0xb7, 0x8a, - 0xb3, 0x32, 0xb7, 0x8a, 0xb4, 0x32, 0xb7, 0x8b, 0xb7, 0x32, 0xb8, 0x8b, - 0xb7, 0x32, 0xb8, 0x8b, 0xb7, 0x32, 0xb8, 0x8b, 0xb7, 0x32, 0xb9, 0x8b, - 0xb7, 0x32, 0xb9, 0x8b, 0xb7, 0x32, 0xb9, 0x8b, 0xb7, 0x32, 0xba, 0x8b, - 0xb7, 0x32, 0xba, 0x8b, 0xb7, 0x32, 0xba, 0x8b, 0xb7, 0x32, 0xbb, 0x8c, - 0xba, 0x32, 0xbb, 0x8b, 0xb7, 0x32, 0xbb, 0x8c, 0xba, 0x32, 0xbc, 0x8c, - 0xba, 0x32, 0xbc, 0x8c, 0xba, 0x32, 0xbc, 0x8c, 0xba, 0x32, 0xbd, 0x8c, - 0xba, 0x32, 0xbd, 0x8c, 0xba, 0x32, 0xbd, 0x8c, 0xba, 0x32, 0xbe, 0x8c, - 0xba, 0x32, 0xbe, 0x8c, 0xba, 0x32, 0xbe, 0x8d, 0xbd, 0x32, 0xbf, 0x8d, - 0xbd, 0x32, 0xbf, 0x8d, 0xbd, 0x32, 0xbf, 0x8d, 0xbd, 0x32, 0xc0, 0x8d, - 0xbd, 0x32, 0xc0, 0x8d, 0xbd, 0x32, 0xc0, 0x8d, 0xbd, 0x32, 0xc1, 0x8d, - 0xbd, 0x32, 0xc1, 0x8d, 0xbd, 0x32, 0xc1, 0x8e, 0xc0, 0x32, 0xc1, 0x8e, - 0xc0, 0x32, 0xc2, 0x8e, 0xc0, 0x32, 0xc2, 0x8e, 0xc0, 0x32, 0xc2, 0x8e, - 0xc0, 0x32, 0xc3, 0x8e, 0xc0, 0x32, 0xc3, 0x8e, 0xc0, 0x32, 0xc3, 0x8e, - 0xc0, 0x32, 0xc4, 0x8e, 0xc0, 0x32, 0xc4, 0x8e, 0xc0, 0x32, 0xc4, 0x8e, - 0xc3, 0x32, 0xc5, 0x8e, 0xc3, 0x32, 0xc5, 0x8e, 0xc3, 0x32, 0xc5, 0x8e, - 0xc3, 0x32, 0xc6, 0x8e, 0xc3, 0x32, 0xc6, 0x8e, 0xc3, 0x32, 0xc6, 0x8e, - 0xc3, 0x32, 0xc6, 0x8e, 0xc3, 0x32, 0xc7, 0x8e, 0xc3, 0x32, 0xc7, 0x8f, - 0xc6, 0x32, 0xc7, 0x8e, 0xc3, 0x32, 0xc8, 0x8f, 0xc6, 0x32, 0xc8, 0x8f, - 0xc6, 0x32, 0xc8, 0x8f, 0xc6, 0x32, 0xc9, 0x8f, 0xc6, 0x32, 0xc9, 0x8f, - 0xc6, 0x32, 0xc9, 0x8f, 0xc6, 0x32, 0xc9, 0x8f, 0xc6, 0x32, 0xca, 0x90, - 0xc9, 0x32, 0xca, 0x90, 0xc9, 0x32, 0xca, 0x90, 0xc9, 0x32, 0xcb, 0x90, - 0xc9, 0x32, 0xcb, 0x90, 0xc9, 0x32, 0xcb, 0x90, 0xc9, 0x32, 0xcc, 0x90, - 0xc9, 0x32, 0xcc, 0x90, 0xc9, 0x32, 0xcc, 0x90, 0xc9, 0x32, 0xcc, 0x90, - 0xc9, 0x32, 0xcd, 0x91, 0xcc, 0x32, 0xcd, 0x90, 0xc9, 0x32, 0xcd, 0x91, - 0xcc, 0x32, 0xce, 0x91, 0xcb, 0x32, 0xce, 0x91, 0xcc, 0x32, 0xce, 0x91, - 0xcb, 0x32, 0xce, 0x91, 0xcc, 0x32, 0xcf, 0x91, 0xcb, 0x32, 0xcf, 0x91, - 0xcc, 0x32, 0xcf, 0x91, 0xcb, 0x32, 0xd0, 0x91, 0xcc, 0x32, 0xd0, 0x92, - 0xce, 0x32, 0xd0, 0x92, 0xce, 0x32, 0xd0, 0x92, 0xce, 0x32, 0xd1, 0x92, - 0xce, 0x32, 0xd1, 0x92, 0xce, 0x32, 0xd1, 0x92, 0xce, 0x32, 0xd2, 0x92, - 0xce, 0x32, 0xd2, 0x92, 0xce, 0x32, 0xd2, 0x92, 0xce, 0x32, 0xd2, 0x92, - 0xce, 0x32, 0xd3, 0x93, 0xd1, 0x32, 0xd3, 0x92, 0xce, 0x32, 0xd3, 0x93, - 0xd1, 0x32, 0xd4, 0x93, 0xd1, 0x32, 0xd4, 0x93, 0xd1, 0x32, 0xd4, 0x93, - 0xd1, 0x32, 0xd4, 0x93, 0xd1, 0x32, 0xd5, 0x93, 0xd1, 0x32, 0xd5, 0x93, - 0xd1, 0x32, 0xd5, 0x94, 0xd4, 0x32, 0xd6, 0x93, 0xd1, 0x32, 0xd6, 0x94, - 0xd4, 0x32, 0xd6, 0x94, 0xd3, 0x32, 0xd6, 0x94, 0xd4, 0x32, 0xd7, 0x94, - 0xd3, 0x32, 0xd7, 0x94, 0xd4, 0x32, 0xd7, 0x94, 0xd3, 0x32, 0xd7, 0x94, - 0xd4, 0x32, 0xd8, 0x95, 0xd6, 0x32, 0xd8, 0x95, 0xd6, 0x32, 0xd8, 0x95, - 0xd6, 0x32, 0xd9, 0x95, 0xd6, 0x32, 0xd9, 0x95, 0xd6, 0x32, 0xd9, 0x95, - 0xd6, 0x32, 0xd9, 0x95, 0xd6, 0x32, 0xda, 0x95, 0xd6, 0x32, 0xda, 0x95, - 0xd6, 0x32, 0xda, 0x95, 0xd6, 0x32, 0xda, 0x95, 0xd6, 0x32, 0xdb, 0x95, - 0xd6, 0x32, 0xdb, 0x96, 0xd9, 0x32, 0xdb, 0x96, 0xd9, 0x32, 0xdb, 0x96, - 0xd9, 0x32, 0xdc, 0x96, 0xd9, 0x32, 0xdc, 0x96, 0xd9, 0x32, 0xdc, 0x96, - 0xd9, 0x32, 0xdd, 0x96, 0xd9, 0x32, 0xdd, 0x96, 0xd9, 0x32, 0xdd, 0x96, - 0xd9, 0x32, 0xdd, 0x97, 0xdb, 0x32, 0xde, 0x96, 0xd9, 0x32, 0xde, 0x97, - 0xdb, 0x32, 0xde, 0x97, 0xdb, 0x32, 0xde, 0x97, 0xdb, 0x32, 0xdf, 0x97, - 0xdb, 0x32, 0xdf, 0x97, 0xdb, 0x32, 0xdf, 0x97, 0xdb, 0x32, 0xdf, 0x97, - 0xdb, 0x32, 0xe0, 0x98, 0xde, 0x32, 0xe0, 0x98, 0xde, 0x32, 0xe0, 0x98, - 0xde, 0x32, 0xe1, 0x98, 0xde, 0x32, 0xe1, 0x98, 0xde, 0x32, 0xe1, 0x98, - 0xde, 0x32, 0xe1, 0x98, 0xde, 0x32, 0xe2, 0x98, 0xde, 0x32, 0xe2, 0x98, - 0xde, 0x32, 0xe2, 0x98, 0xde, 0x32, 0xe2, 0x98, 0xe0, 0x32, 0xe3, 0x98, - 0xde, 0x32, 0xe3, 0x98, 0xe0, 0x32, 0xe3, 0x98, 0xe0, 0x32, 0xe3, 0x98, - 0xe0, 0x32, 0xe4, 0x98, 0xe0, 0x32, 0xe4, 0x98, 0xe0, 0x32, 0xe4, 0x98, - 0xe0, 0x32, 0xe4, 0x98, 0xe0, 0x32, 0xe5, 0x99, 0xe3, 0x32, 0xe5, 0x98, - 0xe0, 0x32, 0xe5, 0x99, 0xe3, 0x32, 0xe5, 0x99, 0xe2, 0x32, 0xe6, 0x99, - 0xe3, 0x32, 0xe6, 0x99, 0xe2, 0x32, 0xe6, 0x99, 0xe3, 0x32, 0xe6, 0x99, - 0xe2, 0x32, 0xe7, 0x99, 0xe3, 0x32, 0xe7, 0x9a, 0xe5, 0x32, 0xe7, 0x9a, - 0xe5, 0x32, 0xe7, 0x9a, 0xe5, 0x32, 0xe8, 0x9a, 0xe5, 0x32, 0xe8, 0x9a, - 0xe5, 0x32, 0xe8, 0x9a, 0xe5, 0x32, 0xe8, 0x9a, 0xe5, 0x32, 0xe9, 0x9a, - 0xe5, 0x32, 0xe9, 0x9a, 0xe5, 0x32, 0xe9, 0x9a, 0xe5, 0x32, 0xe9, 0x9a, - 0xe5, 0x32, 0xea, 0x9a, 0xe5, 0x32, 0xea, 0x9b, 0xe7, 0x32, 0xea, 0x9a, - 0xe5, 0x32, 0xea, 0x9b, 0xe7, 0x32, 0xeb, 0x9b, 0xe7, 0x32, 0xeb, 0x9b, - 0xe7, 0x32, 0xeb, 0x9b, 0xe7, 0x32, 0xeb, 0x9b, 0xe7, 0x32, 0xec, 0x9b, - 0xe7, 0x32, 0xec, 0x9b, 0xe7, 0x32, 0xec, 0x9c, 0xea, 0x32, 0xec, 0x9c, - 0xea, 0x32, 0xec, 0x9c, 0xea, 0x32, 0xed, 0x9c, 0xea, 0x32, 0xed, 0x9c, - 0xea, 0x32, 0xed, 0x9c, 0xea, 0x32, 0xed, 0x9c, 0xea, 0x32, 0xee, 0x9c, - 0xea, 0x32, 0xee, 0x9c, 0xea, 0x32, 0xee, 0x9c, 0xea, 0x32, 0xee, 0x9d, - 0xec, 0x32, 0xef, 0x9c, 0xea, 0x32, 0xef, 0x9d, 0xec, 0x32, 0xef, 0x9d, - 0xec, 0x32, 0xef, 0x9d, 0xec, 0x32, 0xf0, 0x9d, 0xec, 0x32, 0xf0, 0x9d, - 0xec, 0x32, 0xf0, 0x9d, 0xec, 0x32, 0xf0, 0x9d, 0xec, 0x32, 0xf1, 0x9d, - 0xee, 0x32, 0xf1, 0x9d, 0xec, 0x32, 0xf1, 0x9d, 0xee, 0x32, 0xf1, 0x9d, - 0xec, 0x32, 0xf2, 0x9d, 0xee, 0x32, 0xf2, 0x9d, 0xee, 0x32, 0xf2, 0x9d, - 0xee, 0x32, 0xf2, 0x9d, 0xee, 0x32, 0xf2, 0x9d, 0xee, 0x32, 0xf3, 0x9d, - 0xee, 0x32, 0xf3, 0x9d, 0xee, 0x32, 0xf3, 0x9e, 0xf0, 0x32, 0xf3, 0x9e, - 0xf1, 0x32, 0xf4, 0x9e, 0xf0, 0x32, 0xf4, 0x9e, 0xf1, 0x32, 0xf4, 0x9e, - 0xf0, 0x32, 0xf4, 0x9e, 0xf1, 0x32, 0xf5, 0x9e, 0xf0, 0x32, 0xf5, 0x9e, - 0xf1, 0x32, 0xf5, 0x9e, 0xf0, 0x32, 0xf5, 0x9e, 0xf1, 0x32, 0xf5, 0x9f, - 0xf3, 0x32, 0xf6, 0x9e, 0xf1, 0x32, 0xf6, 0x9f, 0xf3, 0x32, 0xf6, 0x9f, - 0xf2, 0x32, 0xf6, 0x9f, 0xf3, 0x32, 0xf7, 0x9f, 0xf2, 0x32, 0xf7, 0x9f, - 0xf3, 0x32, 0xf7, 0x9f, 0xf2, 0x32, 0xf7, 0x9f, 0xf3, 0x32, 0xf8, 0xa0, - 0xf5, 0x32, 0xf8, 0x9f, 0xf3, 0x32, 0xf8, 0xa0, 0xf5, 0x32, 0xf8, 0xa0, - 0xf5, 0x32, 0xf8, 0xa0, 0xf5, 0x32, 0xf9, 0xa0, 0xf5, 0x32, 0xf9, 0xa0, - 0xf5, 0x32, 0xf9, 0xa0, 0xf5, 0x32, 0xf9, 0xa0, 0xf5, 0x32, 0xfa, 0xa1, - 0xf7, 0x32, 0xfa, 0xa1, 0xf7, 0x32, 0xfa, 0xa1, 0xf7, 0x32, 0xfa, 0xa1, - 0xf7, 0x32, 0xfa, 0xa1, 0xf7, 0x32, 0xfb, 0xa1, 0xf7, 0x32, 0xfb, 0xa1, - 0xf7, 0x32, 0xfb, 0xa1, 0xf7, 0x32, 0xfb, 0xa1, 0xf7, 0x32, 0xfc, 0xa1, - 0xf7, 0x32, 0xfc, 0xa1, 0xf9, 0x32, 0xfc, 0xa1, 0xf7, 0x32, 0xfc, 0xa1, - 0xf9, 0x32, 0xfc, 0xa1, 0xf7, 0x32, 0xfd, 0xa1, 0xf9, 0x32, 0xfd, 0xa1, - 0xf9, 0x32, 0xfd, 0xa1, 0xf9, 0x32, 0xfd, 0xa1, 0xf9, 0x32, 0xfe, 0xa1, - 0xf9, 0x32, 0xfe, 0xa2, 0xfb, 0x32, 0xfe, 0xa1, 0xf9, 0x32, 0xfe, 0xa2, - 0xfb, 0x32, 0xfe, 0xa1, 0xf9, 0x32, 0xff, 0xa2, 0xfb, 0x32, 0xff, 0xa2, - 0xfb, 0x32, 0x03, 0x89, 0x9a, 0x32, 0x0a, 0x86, 0x9b, 0x32, 0x0f, 0x89, - 0x9a, 0x32, 0x14, 0x86, 0x9b, 0x32, 0x17, 0x89, 0x9a, 0x32, 0x1b, 0x86, - 0x9b, 0x32, 0x1e, 0x89, 0x9a, 0x32, 0x20, 0x86, 0x9b, 0x32, 0x23, 0x89, - 0x9a, 0x32, 0x25, 0x86, 0x9b, 0x32, 0x27, 0x89, 0x9a, 0x32, 0x29, 0x86, - 0x9b, 0x32, 0x2b, 0x89, 0x9a, 0x32, 0x2d, 0x86, 0x9b, 0x32, 0x2f, 0x89, - 0x9a, 0x32, 0x31, 0x86, 0x9b, 0x32, 0x32, 0x89, 0x9a, 0x32, 0x34, 0x86, - 0x9b, 0x32, 0x35, 0x89, 0x9a, 0x32, 0x37, 0x86, 0x9b, 0x32, 0x38, 0x89, - 0x9a, 0x32, 0x3a, 0x86, 0x9b, 0x32, 0x3b, 0x89, 0x9a, 0x32, 0x3c, 0x86, - 0x9b, 0x32, 0x3e, 0x89, 0x9a, 0x32, 0x3f, 0x86, 0x9b, 0x32, 0x40, 0x89, - 0x9a, 0x32, 0x42, 0x86, 0x9b, 0x32, 0x43, 0x89, 0x9a, 0x32, 0x44, 0x86, - 0x9b, 0x32, 0x45, 0x89, 0x9a, 0x32, 0x46, 0x86, 0x9b, 0x32, 0x47, 0x89, - 0x9a, 0x32, 0x48, 0x86, 0x9b, 0x32, 0x49, 0x89, 0x9a, 0x32, 0x4a, 0x86, - 0x9b, 0x32, 0x4b, 0x83, 0x9b, 0x32, 0x4c, 0x86, 0x9b, 0x32, 0x4d, 0x83, - 0x9b, 0x32, 0x4e, 0x86, 0x9b, 0x32, 0x4f, 0x83, 0x9b, 0x32, 0x50, 0x86, - 0x9b, 0x32, 0x51, 0x83, 0x9b, 0x32, 0x52, 0x86, 0x9b, 0x32, 0x53, 0x83, - 0x9b, 0x32, 0x54, 0x86, 0x9b, 0x32, 0x55, 0x83, 0x9b, 0x32, 0x56, 0x86, - 0x9b, 0x32, 0x57, 0x83, 0x9b, 0x32, 0x58, 0x86, 0x9b, 0x32, 0x58, 0x83, - 0x9b, 0x32, 0x59, 0x86, 0x9b, 0x32, 0x5a, 0x83, 0x9b, 0x32, 0x5b, 0x86, - 0x9b, 0x32, 0x5c, 0x83, 0x9b, 0x32, 0x5d, 0x86, 0x9b, 0x32, 0x5d, 0x83, - 0x9b, 0x32, 0x5e, 0x86, 0x9b, 0x32, 0x5f, 0x83, 0x9b, 0x32, 0x60, 0x86, - 0x9b, 0x32, 0x60, 0x83, 0x9b, 0x32, 0x61, 0x86, 0x9b, 0x32, 0x62, 0x83, - 0x9b, 0x32, 0x63, 0x86, 0x9b, 0x32, 0x63, 0x83, 0x9b, 0x32, 0x64, 0x86, - 0x9b, 0x32, 0x65, 0x83, 0x9b, 0x32, 0x66, 0x86, 0x9b, 0x32, 0x66, 0x83, - 0x9b, 0x32, 0x67, 0x86, 0x9b, 0x32, 0x68, 0x83, 0x9b, 0x32, 0x68, 0x86, - 0x9b, 0x32, 0x69, 0x83, 0x9b, 0x32, 0x6a, 0x86, 0x9b, 0x32, 0x6a, 0x83, - 0x9b, 0x32, 0x6b, 0x86, 0x9b, 0x32, 0x6c, 0x83, 0x9b, 0x32, 0x6c, 0x86, - 0x9b, 0x32, 0x6d, 0x83, 0x9b, 0x32, 0x6e, 0x86, 0x9b, 0x32, 0x6e, 0x83, - 0x9b, 0x32, 0x6f, 0x86, 0x9b, 0x32, 0x70, 0x83, 0x9b, 0x32, 0x70, 0x86, - 0x9b, 0x32, 0x71, 0x83, 0x9b, 0x32, 0x72, 0x86, 0x9b, 0x32, 0x72, 0x83, - 0x9b, 0x32, 0x73, 0x86, 0x9b, 0x32, 0x73, 0x83, 0x9b, 0x32, 0x74, 0x86, - 0x9b, 0x32, 0x75, 0x83, 0x9b, 0x32, 0x75, 0x86, 0x9b, 0x32, 0x76, 0x83, - 0x9b, 0x32, 0x76, 0x86, 0x9b, 0x32, 0x77, 0x83, 0x9b, 0x32, 0x78, 0x86, - 0x9b, 0x32, 0x78, 0x83, 0x9b, 0x32, 0x79, 0x86, 0x9b, 0x32, 0x79, 0x83, - 0x9b, 0x32, 0x7a, 0x86, 0x9b, 0x32, 0x7a, 0x83, 0x9b, 0x32, 0x7b, 0x86, - 0x9b, 0x32, 0x7c, 0x83, 0x9b, 0x32, 0x7c, 0x86, 0x9b, 0x32, 0x7d, 0x83, - 0x9b, 0x32, 0x7d, 0x86, 0x9b, 0x32, 0x7e, 0x83, 0x9b, 0x32, 0x7e, 0x86, - 0x9b, 0x32, 0x7f, 0x83, 0x9b, 0x32, 0x7f, 0x86, 0x9b, 0x32, 0x80, 0x83, - 0x9b, 0x32, 0x81, 0x86, 0x9b, 0x32, 0x81, 0x83, 0x9b, 0x32, 0x82, 0x83, - 0x9c, 0x32, 0x82, 0x83, 0x9b, 0x32, 0x83, 0x83, 0x9c, 0x32, 0x83, 0x83, - 0x9b, 0x32, 0x84, 0x83, 0x9c, 0x32, 0x84, 0x83, 0x9b, 0x32, 0x85, 0x83, - 0x9c, 0x32, 0x85, 0x83, 0x9b, 0x32, 0x86, 0x83, 0x9c, 0x32, 0x86, 0x83, - 0x9b, 0x32, 0x87, 0x83, 0x9c, 0x32, 0x87, 0x83, 0x9b, 0x32, 0x88, 0x83, - 0x9c, 0x32, 0x88, 0x83, 0x9b, 0x32, 0x89, 0x83, 0x9c, 0x32, 0x89, 0x83, - 0x9b, 0x32, 0x8a, 0x83, 0x9c, 0x32, 0x8a, 0x83, 0x9b, 0x32, 0x8b, 0x83, - 0x9c, 0x32, 0x8b, 0x83, 0x9b, 0x32, 0x8c, 0x83, 0x9c, 0x32, 0x8c, 0x83, - 0x9b, 0x32, 0x8d, 0x83, 0x9c, 0x32, 0x8d, 0x83, 0x9b, 0x32, 0x8e, 0x83, - 0x9c, 0x32, 0x8e, 0x83, 0x9b, 0x32, 0x8e, 0x83, 0x9c, 0x32, 0x8f, 0x83, - 0x9b, 0x32, 0x8f, 0x83, 0x9c, 0x32, 0x90, 0x83, 0x9b, 0x32, 0x90, 0x83, - 0x9c, 0x32, 0x91, 0x83, 0x9b, 0x32, 0x91, 0x83, 0x9c, 0x32, 0x92, 0x83, - 0x9b, 0x32, 0x92, 0x83, 0x9c, 0x32, 0x93, 0x83, 0x9b, 0x32, 0x93, 0x83, - 0x9c, 0x32, 0x94, 0x83, 0x9b, 0x32, 0x94, 0x83, 0x9c, 0x32, 0x94, 0x83, - 0x9b, 0x32, 0x95, 0x83, 0x9c, 0x32, 0x95, 0x83, 0x9b, 0x32, 0x96, 0x83, - 0x9c, 0x32, 0x96, 0x83, 0x9b, 0x32, 0x97, 0x83, 0x9c, 0x32, 0x97, 0x83, - 0x9b, 0x32, 0x98, 0x83, 0x9c, 0x32, 0x98, 0x83, 0x9b, 0x32, 0x98, 0x83, - 0x9c, 0x32, 0x99, 0x83, 0x9b, 0x32, 0x99, 0x83, 0x9c, 0x32, 0x9a, 0x83, - 0x9b, 0x32, 0x9a, 0x83, 0x9c, 0x32, 0x9a, 0x83, 0x9b, 0x32, 0x9b, 0x83, - 0x9c, 0x32, 0x9b, 0x83, 0x9b, 0x32, 0x9c, 0x83, 0x9c, 0x32, 0x9c, 0x83, - 0x9c, 0x32, 0x9d, 0x83, 0x9d, 0x32, 0x9d, 0x83, 0x9c, 0x32, 0x9d, 0x83, - 0x9d, 0x32, 0x9e, 0x83, 0x9c, 0x32, 0x9e, 0x83, 0x9d, 0x32, 0x9f, 0x83, - 0x9c, 0x32, 0x9f, 0x83, 0x9d, 0x32, 0x9f, 0x83, 0x9c, 0x32, 0xa0, 0x83, - 0x9d, 0x32, 0xa0, 0x84, 0xa0, 0x32, 0xa1, 0x84, 0xa1, 0x32, 0xa1, 0x84, - 0xa0, 0x32, 0xa1, 0x84, 0xa1, 0x32, 0xa2, 0x84, 0xa0, 0x32, 0xa2, 0x84, - 0xa1, 0x32, 0xa3, 0x84, 0xa0, 0x32, 0xa3, 0x84, 0xa1, 0x32, 0xa3, 0x84, - 0xa0, 0x32, 0xa4, 0x84, 0xa1, 0x32, 0xa4, 0x85, 0xa4, 0x32, 0xa5, 0x85, - 0xa4, 0x32, 0xa5, 0x85, 0xa4, 0x32, 0xa5, 0x85, 0xa4, 0x32, 0xa6, 0x85, - 0xa4, 0x32, 0xa6, 0x85, 0xa4, 0x32, 0xa6, 0x85, 0xa4, 0x32, 0xa7, 0x85, - 0xa4, 0x32, 0xa7, 0x85, 0xa4, 0x32, 0xa8, 0x86, 0xa8, 0x32, 0xa8, 0x86, - 0xa7, 0x32, 0xa8, 0x86, 0xa8, 0x32, 0xa9, 0x86, 0xa7, 0x32, 0xa9, 0x86, - 0xa8, 0x32, 0xaa, 0x86, 0xa7, 0x32, 0xaa, 0x86, 0xa8, 0x32, 0xaa, 0x86, - 0xa7, 0x32, 0xab, 0x86, 0xa8, 0x32, 0xab, 0x87, 0xab, 0x32, 0xab, 0x87, - 0xab, 0x32, 0xac, 0x87, 0xab, 0x32, 0xac, 0x87, 0xab, 0x32, 0xac, 0x87, - 0xab, 0x32, 0xad, 0x87, 0xab, 0x32, 0xad, 0x87, 0xab, 0x32, 0xae, 0x87, - 0xab, 0x32, 0xae, 0x87, 0xab, 0x32, 0xae, 0x87, 0xab, 0x32, 0xaf, 0x88, - 0xaf, 0x32, 0xaf, 0x87, 0xab, 0x32, 0xaf, 0x88, 0xaf, 0x32, 0xb0, 0x88, - 0xae, 0x32, 0xb0, 0x88, 0xaf, 0x32, 0xb0, 0x88, 0xae, 0x32, 0xb1, 0x88, - 0xaf, 0x32, 0xb1, 0x88, 0xae, 0x32, 0xb2, 0x88, 0xaf, 0x32, 0xb2, 0x88, - 0xae, 0x32, 0xb2, 0x88, 0xaf, 0x32, 0xb3, 0x89, 0xb2, 0x32, 0xb3, 0x89, - 0xb2, 0x32, 0xb3, 0x89, 0xb2, 0x32, 0xb4, 0x89, 0xb2, 0x32, 0xb4, 0x89, - 0xb2, 0x32, 0xb4, 0x89, 0xb2, 0x32, 0xb5, 0x89, 0xb2, 0x32, 0xb5, 0x89, - 0xb2, 0x32, 0xb5, 0x89, 0xb2, 0x32, 0xb6, 0x89, 0xb2, 0x32, 0xb6, 0x8a, - 0xb5, 0x32, 0xb6, 0x8a, 0xb5, 0x32, 0xb7, 0x8a, 0xb5, 0x32, 0xb7, 0x8a, - 0xb5, 0x32, 0xb7, 0x8a, 0xb5, 0x32, 0xb8, 0x8a, 0xb5, 0x32, 0xb8, 0x8a, - 0xb5, 0x32, 0xb8, 0x8a, 0xb5, 0x32, 0xb9, 0x8a, 0xb5, 0x32, 0xb9, 0x8b, - 0xb8, 0x32, 0xb9, 0x8b, 0xb8, 0x32, 0xba, 0x8b, 0xb8, 0x32, 0xba, 0x8b, - 0xb8, 0x32, 0xba, 0x8b, 0xb8, 0x32, 0xbb, 0x8b, 0xb8, 0x32, 0xbb, 0x8b, - 0xb8, 0x32, 0xbb, 0x8b, 0xb8, 0x32, 0xbc, 0x8b, 0xb8, 0x32, 0xbc, 0x8c, - 0xbb, 0x32, 0xbc, 0x8c, 0xbc, 0x32, 0xbd, 0x8c, 0xbb, 0x32, 0xbd, 0x8c, - 0xbc, 0x32, 0xbd, 0x8c, 0xbb, 0x32, 0xbe, 0x8c, 0xbc, 0x32, 0xbe, 0x8c, - 0xbb, 0x32, 0xbe, 0x8c, 0xbc, 0x32, 0xbf, 0x8c, 0xbb, 0x32, 0xbf, 0x8c, - 0xbc, 0x32, 0xbf, 0x8c, 0xbb, 0x32, 0xc0, 0x8c, 0xbc, 0x32, 0xc0, 0x8d, - 0xbf, 0x32, 0xc0, 0x8d, 0xbe, 0x32, 0xc1, 0x8d, 0xbf, 0x32, 0xc1, 0x8d, - 0xbe, 0x32, 0xc1, 0x8d, 0xbf, 0x32, 0xc1, 0x8d, 0xbe, 0x32, 0xc2, 0x8d, - 0xbf, 0x32, 0xc2, 0x8d, 0xbe, 0x32, 0xc2, 0x8d, 0xbf, 0x32, 0xc3, 0x8e, - 0xc1, 0x32, 0xc3, 0x8e, 0xc1, 0x32, 0xc3, 0x8e, 0xc1, 0x32, 0xc4, 0x8e, - 0xc1, 0x32, 0xc4, 0x8e, 0xc1, 0x32, 0xc4, 0x8e, 0xc1, 0x32, 0xc5, 0x8e, - 0xc1, 0x32, 0xc5, 0x8e, 0xc1, 0x32, 0xc5, 0x8e, 0xc1, 0x32, 0xc6, 0x8f, - 0xc4, 0x32, 0xc6, 0x8f, 0xc5, 0x32, 0xc6, 0x8f, 0xc4, 0x32, 0xc6, 0x8f, - 0xc5, 0x32, 0xc7, 0x8f, 0xc4, 0x32, 0xc7, 0x8f, 0xc5, 0x32, 0xc7, 0x8f, - 0xc4, 0x32, 0xc8, 0x8f, 0xc5, 0x32, 0xc8, 0x8f, 0xc4, 0x32, 0xc8, 0x8f, - 0xc5, 0x32, 0xc9, 0x90, 0xc7, 0x32, 0xc9, 0x8f, 0xc5, 0x32, 0xc9, 0x90, - 0xc7, 0x32, 0xc9, 0x90, 0xc7, 0x32, 0xca, 0x90, 0xc7, 0x32, 0xca, 0x90, - 0xc7, 0x32, 0xca, 0x90, 0xc7, 0x32, 0xcb, 0x90, 0xc7, 0x32, 0xcb, 0x90, - 0xc7, 0x32, 0xcb, 0x91, 0xca, 0x32, 0xcc, 0x90, 0xc7, 0x32, 0xcc, 0x91, - 0xca, 0x32, 0xcc, 0x91, 0xca, 0x32, 0xcc, 0x91, 0xca, 0x32, 0xcd, 0x91, - 0xca, 0x32, 0xcd, 0x91, 0xca, 0x32, 0xcd, 0x91, 0xca, 0x32, 0xce, 0x91, - 0xca, 0x32, 0xce, 0x92, 0xcd, 0x32, 0xce, 0x92, 0xcd, 0x32, 0xce, 0x92, - 0xcd, 0x32, 0xcf, 0x92, 0xcd, 0x32, 0xcf, 0x92, 0xcd, 0x32, 0xcf, 0x92, - 0xcd, 0x32, 0xd0, 0x92, 0xcd, 0x32, 0xd0, 0x92, 0xcd, 0x32, 0xd0, 0x92, - 0xcd, 0x32, 0xd0, 0x92, 0xcd, 0x32, 0xd1, 0x92, 0xcd, 0x32, 0xd1, 0x92, - 0xcd, 0x32, 0xd1, 0x93, 0xd0, 0x32, 0xd2, 0x93, 0xcf, 0x32, 0xd2, 0x93, - 0xd0, 0x32, 0xd2, 0x93, 0xcf, 0x32, 0xd2, 0x93, 0xd0, 0x32, 0xd3, 0x93, - 0xcf, 0x32, 0xd3, 0x93, 0xd0, 0x32, 0xd3, 0x93, 0xcf, 0x32, 0xd4, 0x93, - 0xd0, 0x32, 0xd4, 0x94, 0xd2, 0x32, 0xd4, 0x94, 0xd2, 0x32, 0xd4, 0x94, - 0xd2, 0x32, 0xd5, 0x94, 0xd2, 0x32, 0xd5, 0x94, 0xd2, 0x32, 0xd5, 0x94, - 0xd2, 0x32, 0xd6, 0x94, 0xd2, 0x32, 0xd6, 0x94, 0xd2, 0x32, 0xd6, 0x94, - 0xd2, 0x32, 0xd6, 0x94, 0xd2, 0x32, 0xd7, 0x94, 0xd5, 0x32, 0xd7, 0x94, - 0xd2, 0x32, 0xd7, 0x94, 0xd5, 0x32, 0xd7, 0x94, 0xd5, 0x32, 0xd8, 0x94, - 0xd5, 0x32, 0xd8, 0x94, 0xd5, 0x32, 0xd8, 0x94, 0xd5, 0x32, 0xd9, 0x94, - 0xd5, 0x32, 0xd9, 0x94, 0xd5, 0x32, 0xd9, 0x95, 0xd7, 0x32, 0xd9, 0x94, - 0xd5, 0x32, 0xda, 0x95, 0xd7, 0x32, 0xda, 0x95, 0xd7, 0x32, 0xda, 0x95, - 0xd7, 0x32, 0xda, 0x95, 0xd7, 0x32, 0xdb, 0x95, 0xd7, 0x32, 0xdb, 0x95, - 0xd7, 0x32, 0xdb, 0x95, 0xd7, 0x32, 0xdb, 0x95, 0xd7, 0x32, 0xdc, 0x95, - 0xd7, 0x32, 0xdc, 0x96, 0xda, 0x32, 0xdc, 0x96, 0xda, 0x32, 0xdd, 0x96, - 0xda, 0x32, 0xdd, 0x96, 0xda, 0x32, 0xdd, 0x96, 0xda, 0x32, 0xdd, 0x96, - 0xda, 0x32, 0xde, 0x96, 0xda, 0x32, 0xde, 0x96, 0xda, 0x32, 0xde, 0x96, - 0xda, 0x32, 0xde, 0x96, 0xda, 0x32, 0xdf, 0x97, 0xdd, 0x32, 0xdf, 0x96, - 0xda, 0x32, 0xdf, 0x97, 0xdd, 0x32, 0xdf, 0x97, 0xdc, 0x32, 0xe0, 0x97, - 0xdd, 0x32, 0xe0, 0x97, 0xdc, 0x32, 0xe0, 0x97, 0xdd, 0x32, 0xe1, 0x97, - 0xdc, 0x32, 0xe1, 0x97, 0xdd, 0x32, 0xe1, 0x98, 0xdf, 0x32, 0xe1, 0x97, - 0xdd, 0x32, 0xe2, 0x98, 0xdf, 0x32, 0xe2, 0x98, 0xdf, 0x32, 0xe2, 0x98, - 0xdf, 0x32, 0xe2, 0x98, 0xdf, 0x32, 0xe3, 0x98, 0xdf, 0x32, 0xe3, 0x98, - 0xdf, 0x32, 0xe3, 0x98, 0xdf, 0x32, 0xe3, 0x99, 0xe1, 0x32, 0xe4, 0x99, - 0xe2, 0x32, 0xe4, 0x99, 0xe1, 0x32, 0xe4, 0x99, 0xe2, 0x32, 0xe4, 0x99, - 0xe1, 0x32, 0xe5, 0x99, 0xe2, 0x32, 0xe5, 0x99, 0xe1, 0x32, 0xe5, 0x99, - 0xe2, 0x32, 0xe5, 0x99, 0xe1, 0x32, 0xe6, 0x99, 0xe2, 0x32, 0xe6, 0x9a, - 0xe4, 0x32, 0xe6, 0x99, 0xe2, 0x32, 0xe6, 0x9a, 0xe4, 0x32, 0xe7, 0x9a, - 0xe4, 0x32, 0xe7, 0x9a, 0xe4, 0x32, 0xe7, 0x9a, 0xe4, 0x32, 0xe7, 0x9a, - 0xe4, 0x32, 0xe8, 0x9a, 0xe4, 0x32, 0xe8, 0x9a, 0xe4, 0x32, 0xe8, 0x9a, - 0xe6, 0x32, 0xe8, 0x9a, 0xe4, 0x32, 0xe9, 0x9a, 0xe6, 0x32, 0xe9, 0x9a, - 0xe4, 0x32, 0xe9, 0x9a, 0xe6, 0x32, 0xe9, 0x9a, 0xe6, 0x32, 0xea, 0x9a, - 0xe6, 0x32, 0xea, 0x9a, 0xe6, 0x32, 0xea, 0x9a, 0xe6, 0x32, 0xea, 0x9a, - 0xe6, 0x32, 0xeb, 0x9a, 0xe6, 0x32, 0xeb, 0x9b, 0xe8, 0x32, 0xeb, 0x9b, - 0xe9, 0x32, 0xeb, 0x9b, 0xe8, 0x32, 0xec, 0x9b, 0xe9, 0x32, 0xec, 0x9b, - 0xe8, 0x32, 0xec, 0x9b, 0xe9, 0x32, 0xec, 0x9b, 0xe8, 0x32, 0xec, 0x9b, - 0xe9, 0x32, 0xed, 0x9b, 0xe8, 0x32, 0xed, 0x9b, 0xe9, 0x32, 0xed, 0x9c, - 0xeb, 0x32, 0xed, 0x9b, 0xe9, 0x32, 0xee, 0x9c, 0xeb, 0x32, 0xee, 0x9c, - 0xeb, 0x32, 0xee, 0x9c, 0xeb, 0x32, 0xee, 0x9c, 0xeb, 0x32, 0xef, 0x9c, - 0xeb, 0x32, 0xef, 0x9c, 0xeb, 0x32, 0xef, 0x9c, 0xeb, 0x32, 0xef, 0x9d, - 0xed, 0x32, 0xf0, 0x9d, 0xed, 0x32, 0xf0, 0x9d, 0xed, 0x32, 0xf0, 0x9d, - 0xed, 0x32, 0xf0, 0x9d, 0xed, 0x32, 0xf1, 0x9d, 0xed, 0x32, 0xf1, 0x9d, - 0xed, 0x32, 0xf1, 0x9d, 0xed, 0x32, 0xf1, 0x9d, 0xed, 0x32, 0xf2, 0x9d, - 0xed, 0x32, 0xf2, 0x9e, 0xef, 0x32, 0xf2, 0x9d, 0xed, 0x32, 0xf2, 0x9e, - 0xef, 0x32, 0xf2, 0x9d, 0xed, 0x32, 0xf3, 0x9e, 0xef, 0x32, 0xf3, 0x9e, - 0xef, 0x32, 0xf3, 0x9e, 0xef, 0x32, 0xf3, 0x9e, 0xef, 0x32, 0xf4, 0x9e, - 0xef, 0x32, 0xf4, 0x9e, 0xef, 0x32, 0xf4, 0x9e, 0xef, 0x32, 0xf4, 0x9f, - 0xf2, 0x32, 0xf5, 0x9e, 0xef, 0x32, 0xf5, 0x9f, 0xf2, 0x32, 0xf5, 0x9f, - 0xf1, 0x32, 0xf5, 0x9f, 0xf2, 0x32, 0xf5, 0x9f, 0xf1, 0x32, 0xf6, 0x9f, - 0xf2, 0x32, 0xf6, 0x9f, 0xf1, 0x32, 0xf6, 0x9f, 0xf2, 0x32, 0xf6, 0x9f, - 0xf4, 0x32, 0xf7, 0x9f, 0xf4, 0x32, 0xf7, 0x9f, 0xf4, 0x32, 0xf7, 0x9f, - 0xf4, 0x32, 0xf7, 0x9f, 0xf4, 0x32, 0xf8, 0x9f, 0xf4, 0x32, 0xf8, 0x9f, - 0xf4, 0x32, 0xf8, 0x9f, 0xf4, 0x32, 0xf8, 0x9f, 0xf4, 0x32, 0xf8, 0x9f, - 0xf4, 0x32, 0xf9, 0xa0, 0xf6, 0x32, 0xf9, 0x9f, 0xf4, 0x32, 0xf9, 0xa0, - 0xf6, 0x32, 0xf9, 0xa0, 0xf6, 0x32, 0xfa, 0xa0, 0xf6, 0x32, 0xfa, 0xa0, - 0xf6, 0x32, 0xfa, 0xa0, 0xf6, 0x32, 0xfa, 0xa0, 0xf6, 0x32, 0xfa, 0xa0, - 0xf6, 0x32, 0xfb, 0xa1, 0xf8, 0x32, 0xfb, 0xa0, 0xf6, 0x32, 0xfb, 0xa1, - 0xf8, 0x32, 0xfb, 0xa0, 0xf6, 0x32, 0xfc, 0xa1, 0xf8, 0x32, 0xfc, 0xa1, - 0xf8, 0x32, 0xfc, 0xa1, 0xf8, 0x32, 0xfc, 0xa1, 0xf8, 0x32, 0xfc, 0xa1, - 0xf8, 0x32, 0xfd, 0xa2, 0xfa, 0x32, 0xfd, 0xa2, 0xfa, 0x32, 0xfd, 0xa2, - 0xfa, 0x32, 0xfd, 0xa2, 0xfa, 0x32, 0xfe, 0xa2, 0xfa, 0x32, 0xfe, 0xa2, - 0xfa, 0x32, 0xfe, 0xa2, 0xfa, 0x32, 0xfe, 0xa2, 0xfa, 0x32, 0xfe, 0xa2, - 0xfa, 0x32, 0xff, 0xa2, 0xfa, 0x32, 0xff, 0xa2, 0xfa, 0x32, 0x03, 0x89, - 0x9a, 0x33, 0x0a, 0x86, 0x9b, 0x33, 0x0f, 0x89, 0x9a, 0x33, 0x14, 0x86, - 0x9b, 0x33, 0x17, 0x89, 0x9a, 0x33, 0x1b, 0x86, 0x9b, 0x33, 0x1e, 0x89, - 0x9a, 0x33, 0x20, 0x86, 0x9b, 0x33, 0x23, 0x89, 0x9a, 0x33, 0x25, 0x86, - 0x9b, 0x33, 0x27, 0x89, 0x9a, 0x33, 0x29, 0x86, 0x9b, 0x33, 0x2b, 0x89, - 0x9a, 0x33, 0x2d, 0x86, 0x9b, 0x33, 0x2f, 0x89, 0x9a, 0x33, 0x31, 0x86, - 0x9b, 0x33, 0x32, 0x89, 0x9a, 0x33, 0x34, 0x86, 0x9b, 0x33, 0x35, 0x89, - 0x9a, 0x33, 0x37, 0x86, 0x9b, 0x33, 0x38, 0x89, 0x9a, 0x33, 0x3a, 0x86, - 0x9b, 0x33, 0x3b, 0x89, 0x9a, 0x33, 0x3c, 0x86, 0x9b, 0x33, 0x3e, 0x89, - 0x9a, 0x33, 0x3f, 0x86, 0x9b, 0x33, 0x40, 0x89, 0x9a, 0x33, 0x42, 0x86, - 0x9b, 0x33, 0x43, 0x89, 0x9a, 0x33, 0x44, 0x86, 0x9b, 0x33, 0x45, 0x89, - 0x9a, 0x33, 0x46, 0x86, 0x9b, 0x33, 0x47, 0x89, 0x9a, 0x33, 0x48, 0x86, - 0x9b, 0x33, 0x49, 0x89, 0x9a, 0x33, 0x4a, 0x86, 0x9b, 0x33, 0x4b, 0x89, - 0x9a, 0x33, 0x4c, 0x86, 0x9b, 0x33, 0x4d, 0x89, 0x9a, 0x33, 0x4e, 0x86, - 0x9b, 0x33, 0x4f, 0x89, 0x9a, 0x33, 0x50, 0x86, 0x9b, 0x33, 0x51, 0x89, - 0x9a, 0x33, 0x52, 0x86, 0x9b, 0x33, 0x53, 0x89, 0x9a, 0x33, 0x54, 0x86, - 0x9b, 0x33, 0x55, 0x89, 0x9a, 0x33, 0x56, 0x86, 0x9b, 0x33, 0x57, 0x89, - 0x9a, 0x33, 0x58, 0x86, 0x9b, 0x33, 0x58, 0x84, 0x9b, 0x33, 0x59, 0x86, - 0x9b, 0x33, 0x5a, 0x84, 0x9b, 0x33, 0x5b, 0x86, 0x9b, 0x33, 0x5c, 0x84, - 0x9b, 0x33, 0x5d, 0x86, 0x9b, 0x33, 0x5d, 0x84, 0x9b, 0x33, 0x5e, 0x86, - 0x9b, 0x33, 0x5f, 0x84, 0x9b, 0x33, 0x60, 0x86, 0x9b, 0x33, 0x60, 0x84, - 0x9b, 0x33, 0x61, 0x86, 0x9b, 0x33, 0x62, 0x84, 0x9b, 0x33, 0x63, 0x86, - 0x9b, 0x33, 0x63, 0x84, 0x9b, 0x33, 0x64, 0x86, 0x9b, 0x33, 0x65, 0x84, - 0x9b, 0x33, 0x66, 0x86, 0x9b, 0x33, 0x66, 0x84, 0x9b, 0x33, 0x67, 0x86, - 0x9b, 0x33, 0x68, 0x84, 0x9b, 0x33, 0x68, 0x86, 0x9b, 0x33, 0x69, 0x84, - 0x9b, 0x33, 0x6a, 0x86, 0x9b, 0x33, 0x6a, 0x84, 0x9b, 0x33, 0x6b, 0x86, - 0x9b, 0x33, 0x6c, 0x84, 0x9b, 0x33, 0x6c, 0x86, 0x9b, 0x33, 0x6d, 0x84, - 0x9b, 0x33, 0x6e, 0x86, 0x9b, 0x33, 0x6e, 0x84, 0x9b, 0x33, 0x6f, 0x86, - 0x9b, 0x33, 0x70, 0x84, 0x9b, 0x33, 0x70, 0x86, 0x9b, 0x33, 0x71, 0x84, - 0x9b, 0x33, 0x72, 0x86, 0x9b, 0x33, 0x72, 0x84, 0x9b, 0x33, 0x73, 0x86, - 0x9b, 0x33, 0x73, 0x84, 0x9b, 0x33, 0x74, 0x86, 0x9b, 0x33, 0x75, 0x84, - 0x9b, 0x33, 0x75, 0x86, 0x9b, 0x33, 0x76, 0x84, 0x9b, 0x33, 0x76, 0x86, - 0x9b, 0x33, 0x77, 0x84, 0x9b, 0x33, 0x78, 0x86, 0x9b, 0x33, 0x78, 0x84, - 0x9b, 0x33, 0x79, 0x86, 0x9b, 0x33, 0x79, 0x84, 0x9b, 0x33, 0x7a, 0x86, - 0x9b, 0x33, 0x7a, 0x84, 0x9b, 0x33, 0x7b, 0x86, 0x9b, 0x33, 0x7c, 0x84, - 0x9b, 0x33, 0x7c, 0x86, 0x9b, 0x33, 0x7d, 0x84, 0x9b, 0x33, 0x7d, 0x86, - 0x9b, 0x33, 0x7e, 0x84, 0x9b, 0x33, 0x7e, 0x86, 0x9b, 0x33, 0x7f, 0x84, - 0x9b, 0x33, 0x7f, 0x86, 0x9b, 0x33, 0x80, 0x84, 0x9b, 0x33, 0x81, 0x86, - 0x9b, 0x33, 0x81, 0x84, 0x9b, 0x33, 0x82, 0x86, 0x9b, 0x33, 0x82, 0x84, - 0x9b, 0x33, 0x83, 0x86, 0x9b, 0x33, 0x83, 0x84, 0x9b, 0x33, 0x84, 0x86, - 0x9b, 0x33, 0x84, 0x84, 0x9b, 0x33, 0x85, 0x86, 0x9b, 0x33, 0x85, 0x84, - 0x9b, 0x33, 0x86, 0x86, 0x9b, 0x33, 0x86, 0x84, 0x9b, 0x33, 0x87, 0x86, - 0x9b, 0x33, 0x87, 0x84, 0x9b, 0x33, 0x88, 0x86, 0x9b, 0x33, 0x88, 0x84, - 0x9b, 0x33, 0x89, 0x86, 0x9b, 0x33, 0x89, 0x84, 0x9b, 0x33, 0x8a, 0x86, - 0x9b, 0x33, 0x8a, 0x84, 0x9b, 0x33, 0x8b, 0x86, 0x9b, 0x33, 0x8b, 0x84, - 0x9b, 0x33, 0x8c, 0x84, 0x9c, 0x33, 0x8c, 0x84, 0x9b, 0x33, 0x8d, 0x84, - 0x9c, 0x33, 0x8d, 0x84, 0x9b, 0x33, 0x8e, 0x84, 0x9c, 0x33, 0x8e, 0x84, - 0x9b, 0x33, 0x8e, 0x84, 0x9c, 0x33, 0x8f, 0x84, 0x9b, 0x33, 0x8f, 0x84, - 0x9c, 0x33, 0x90, 0x84, 0x9b, 0x33, 0x90, 0x84, 0x9c, 0x33, 0x91, 0x84, - 0x9b, 0x33, 0x91, 0x84, 0x9c, 0x33, 0x92, 0x84, 0x9b, 0x33, 0x92, 0x84, - 0x9c, 0x33, 0x93, 0x84, 0x9b, 0x33, 0x93, 0x84, 0x9c, 0x33, 0x94, 0x84, - 0x9b, 0x33, 0x94, 0x84, 0x9c, 0x33, 0x94, 0x84, 0x9b, 0x33, 0x95, 0x84, - 0x9c, 0x33, 0x95, 0x84, 0x9b, 0x33, 0x96, 0x84, 0x9c, 0x33, 0x96, 0x84, - 0x9b, 0x33, 0x97, 0x84, 0x9c, 0x33, 0x97, 0x84, 0x9b, 0x33, 0x98, 0x84, - 0x9c, 0x33, 0x98, 0x84, 0x9b, 0x33, 0x98, 0x84, 0x9c, 0x33, 0x99, 0x84, - 0x9b, 0x33, 0x99, 0x84, 0x9c, 0x33, 0x9a, 0x84, 0x9b, 0x33, 0x9a, 0x84, - 0x9c, 0x33, 0x9a, 0x84, 0x9b, 0x33, 0x9b, 0x84, 0x9c, 0x33, 0x9b, 0x84, - 0x9b, 0x33, 0x9c, 0x84, 0x9c, 0x33, 0x9c, 0x84, 0x9c, 0x33, 0x9d, 0x84, - 0x9d, 0x33, 0x9d, 0x84, 0x9d, 0x33, 0x9d, 0x84, 0x9d, 0x33, 0x9e, 0x84, - 0x9e, 0x33, 0x9e, 0x84, 0x9e, 0x33, 0x9f, 0x84, 0x9f, 0x33, 0x9f, 0x84, - 0x9e, 0x33, 0x9f, 0x84, 0x9f, 0x33, 0xa0, 0x84, 0x9e, 0x33, 0xa0, 0x84, - 0x9f, 0x33, 0xa1, 0x84, 0x9e, 0x33, 0xa1, 0x84, 0x9f, 0x33, 0xa1, 0x84, - 0x9e, 0x33, 0xa2, 0x84, 0x9f, 0x33, 0xa2, 0x85, 0xa2, 0x33, 0xa3, 0x85, - 0xa2, 0x33, 0xa3, 0x85, 0xa2, 0x33, 0xa3, 0x85, 0xa2, 0x33, 0xa4, 0x85, - 0xa2, 0x33, 0xa4, 0x85, 0xa2, 0x33, 0xa5, 0x85, 0xa2, 0x33, 0xa5, 0x85, - 0xa2, 0x33, 0xa5, 0x85, 0xa2, 0x33, 0xa6, 0x86, 0xa6, 0x33, 0xa6, 0x86, - 0xa6, 0x33, 0xa6, 0x86, 0xa6, 0x33, 0xa7, 0x86, 0xa6, 0x33, 0xa7, 0x86, - 0xa6, 0x33, 0xa8, 0x86, 0xa6, 0x33, 0xa8, 0x86, 0xa6, 0x33, 0xa8, 0x86, - 0xa6, 0x33, 0xa9, 0x86, 0xa6, 0x33, 0xa9, 0x86, 0xa6, 0x33, 0xaa, 0x87, - 0xaa, 0x33, 0xaa, 0x87, 0xa9, 0x33, 0xaa, 0x87, 0xaa, 0x33, 0xab, 0x87, - 0xa9, 0x33, 0xab, 0x87, 0xaa, 0x33, 0xab, 0x87, 0xa9, 0x33, 0xac, 0x87, - 0xaa, 0x33, 0xac, 0x87, 0xa9, 0x33, 0xac, 0x87, 0xaa, 0x33, 0xad, 0x88, - 0xad, 0x33, 0xad, 0x88, 0xad, 0x33, 0xae, 0x88, 0xad, 0x33, 0xae, 0x88, - 0xad, 0x33, 0xae, 0x88, 0xad, 0x33, 0xaf, 0x88, 0xad, 0x33, 0xaf, 0x88, - 0xad, 0x33, 0xaf, 0x88, 0xad, 0x33, 0xb0, 0x88, 0xad, 0x33, 0xb0, 0x88, - 0xad, 0x33, 0xb0, 0x89, 0xb0, 0x33, 0xb1, 0x88, 0xad, 0x33, 0xb1, 0x89, - 0xb0, 0x33, 0xb2, 0x89, 0xb0, 0x33, 0xb2, 0x89, 0xb0, 0x33, 0xb2, 0x89, - 0xb0, 0x33, 0xb3, 0x89, 0xb0, 0x33, 0xb3, 0x89, 0xb2, 0x33, 0xb3, 0x89, - 0xb0, 0x33, 0xb4, 0x89, 0xb2, 0x33, 0xb4, 0x89, 0xb2, 0x33, 0xb4, 0x89, - 0xb2, 0x33, 0xb5, 0x89, 0xb2, 0x33, 0xb5, 0x89, 0xb2, 0x33, 0xb5, 0x8a, - 0xb3, 0x33, 0xb6, 0x8a, 0xb4, 0x33, 0xb6, 0x8a, 0xb3, 0x33, 0xb6, 0x8a, - 0xb4, 0x33, 0xb7, 0x8a, 0xb3, 0x33, 0xb7, 0x8a, 0xb4, 0x33, 0xb7, 0x8b, - 0xb7, 0x33, 0xb8, 0x8b, 0xb7, 0x33, 0xb8, 0x8b, 0xb7, 0x33, 0xb8, 0x8b, - 0xb7, 0x33, 0xb9, 0x8b, 0xb7, 0x33, 0xb9, 0x8b, 0xb7, 0x33, 0xb9, 0x8b, - 0xb7, 0x33, 0xba, 0x8b, 0xb7, 0x33, 0xba, 0x8b, 0xb7, 0x33, 0xba, 0x8b, - 0xb7, 0x33, 0xbb, 0x8c, 0xba, 0x33, 0xbb, 0x8c, 0xba, 0x33, 0xbb, 0x8c, - 0xba, 0x33, 0xbc, 0x8c, 0xba, 0x33, 0xbc, 0x8c, 0xba, 0x33, 0xbc, 0x8c, - 0xba, 0x33, 0xbd, 0x8c, 0xba, 0x33, 0xbd, 0x8c, 0xba, 0x33, 0xbd, 0x8c, - 0xba, 0x33, 0xbe, 0x8d, 0xbd, 0x33, 0xbe, 0x8c, 0xba, 0x33, 0xbe, 0x8d, - 0xbd, 0x33, 0xbf, 0x8d, 0xbd, 0x33, 0xbf, 0x8d, 0xbd, 0x33, 0xbf, 0x8d, - 0xbd, 0x33, 0xc0, 0x8d, 0xbd, 0x33, 0xc0, 0x8d, 0xbd, 0x33, 0xc0, 0x8d, - 0xbd, 0x33, 0xc1, 0x8d, 0xbd, 0x33, 0xc1, 0x8d, 0xbd, 0x33, 0xc1, 0x8e, - 0xc0, 0x33, 0xc1, 0x8e, 0xc0, 0x33, 0xc2, 0x8e, 0xc0, 0x33, 0xc2, 0x8e, - 0xc0, 0x33, 0xc2, 0x8e, 0xc0, 0x33, 0xc3, 0x8e, 0xc0, 0x33, 0xc3, 0x8e, - 0xc0, 0x33, 0xc3, 0x8e, 0xc0, 0x33, 0xc4, 0x8e, 0xc0, 0x33, 0xc4, 0x8e, - 0xc0, 0x33, 0xc4, 0x8e, 0xc3, 0x33, 0xc5, 0x8e, 0xc3, 0x33, 0xc5, 0x8e, - 0xc3, 0x33, 0xc5, 0x8e, 0xc3, 0x33, 0xc6, 0x8e, 0xc3, 0x33, 0xc6, 0x8e, - 0xc3, 0x33, 0xc6, 0x8e, 0xc3, 0x33, 0xc6, 0x8e, 0xc3, 0x33, 0xc7, 0x8e, - 0xc3, 0x33, 0xc7, 0x8f, 0xc6, 0x33, 0xc7, 0x8f, 0xc6, 0x33, 0xc8, 0x8f, - 0xc6, 0x33, 0xc8, 0x8f, 0xc6, 0x33, 0xc8, 0x8f, 0xc6, 0x33, 0xc9, 0x8f, - 0xc6, 0x33, 0xc9, 0x8f, 0xc6, 0x33, 0xc9, 0x8f, 0xc6, 0x33, 0xc9, 0x8f, - 0xc6, 0x33, 0xca, 0x90, 0xc9, 0x33, 0xca, 0x90, 0xc9, 0x33, 0xca, 0x90, - 0xc9, 0x33, 0xcb, 0x90, 0xc9, 0x33, 0xcb, 0x90, 0xc9, 0x33, 0xcb, 0x90, - 0xc9, 0x33, 0xcc, 0x90, 0xc9, 0x33, 0xcc, 0x90, 0xc9, 0x33, 0xcc, 0x90, - 0xc9, 0x33, 0xcc, 0x90, 0xc9, 0x33, 0xcd, 0x91, 0xcc, 0x33, 0xcd, 0x90, - 0xc9, 0x33, 0xcd, 0x91, 0xcc, 0x33, 0xce, 0x91, 0xcb, 0x33, 0xce, 0x91, - 0xcc, 0x33, 0xce, 0x91, 0xcb, 0x33, 0xce, 0x91, 0xcc, 0x33, 0xcf, 0x91, - 0xcb, 0x33, 0xcf, 0x91, 0xcc, 0x33, 0xcf, 0x92, 0xce, 0x33, 0xd0, 0x92, - 0xce, 0x33, 0xd0, 0x92, 0xce, 0x33, 0xd0, 0x92, 0xce, 0x33, 0xd0, 0x92, - 0xce, 0x33, 0xd1, 0x92, 0xce, 0x33, 0xd1, 0x92, 0xce, 0x33, 0xd1, 0x92, - 0xce, 0x33, 0xd2, 0x92, 0xce, 0x33, 0xd2, 0x92, 0xce, 0x33, 0xd2, 0x92, - 0xce, 0x33, 0xd2, 0x92, 0xce, 0x33, 0xd3, 0x93, 0xd1, 0x33, 0xd3, 0x93, - 0xd1, 0x33, 0xd3, 0x93, 0xd1, 0x33, 0xd4, 0x93, 0xd1, 0x33, 0xd4, 0x93, - 0xd1, 0x33, 0xd4, 0x93, 0xd1, 0x33, 0xd4, 0x93, 0xd1, 0x33, 0xd5, 0x93, - 0xd1, 0x33, 0xd5, 0x93, 0xd1, 0x33, 0xd5, 0x94, 0xd4, 0x33, 0xd6, 0x93, - 0xd1, 0x33, 0xd6, 0x94, 0xd4, 0x33, 0xd6, 0x94, 0xd3, 0x33, 0xd6, 0x94, - 0xd4, 0x33, 0xd7, 0x94, 0xd3, 0x33, 0xd7, 0x94, 0xd4, 0x33, 0xd7, 0x94, - 0xd3, 0x33, 0xd7, 0x94, 0xd4, 0x33, 0xd8, 0x95, 0xd6, 0x33, 0xd8, 0x95, - 0xd6, 0x33, 0xd8, 0x95, 0xd6, 0x33, 0xd9, 0x95, 0xd6, 0x33, 0xd9, 0x95, - 0xd6, 0x33, 0xd9, 0x95, 0xd6, 0x33, 0xd9, 0x95, 0xd6, 0x33, 0xda, 0x95, - 0xd6, 0x33, 0xda, 0x95, 0xd6, 0x33, 0xda, 0x95, 0xd6, 0x33, 0xda, 0x96, - 0xd9, 0x33, 0xdb, 0x95, 0xd6, 0x33, 0xdb, 0x96, 0xd9, 0x33, 0xdb, 0x96, - 0xd9, 0x33, 0xdb, 0x96, 0xd9, 0x33, 0xdc, 0x96, 0xd9, 0x33, 0xdc, 0x96, - 0xd9, 0x33, 0xdc, 0x96, 0xd9, 0x33, 0xdd, 0x96, 0xd9, 0x33, 0xdd, 0x96, - 0xd9, 0x33, 0xdd, 0x96, 0xd9, 0x33, 0xdd, 0x97, 0xdb, 0x33, 0xde, 0x97, - 0xdb, 0x33, 0xde, 0x97, 0xdb, 0x33, 0xde, 0x97, 0xdb, 0x33, 0xde, 0x97, - 0xdb, 0x33, 0xdf, 0x97, 0xdb, 0x33, 0xdf, 0x97, 0xdb, 0x33, 0xdf, 0x97, - 0xdb, 0x33, 0xdf, 0x97, 0xdb, 0x33, 0xe0, 0x98, 0xde, 0x33, 0xe0, 0x98, - 0xde, 0x33, 0xe0, 0x98, 0xde, 0x33, 0xe1, 0x98, 0xde, 0x33, 0xe1, 0x98, - 0xde, 0x33, 0xe1, 0x98, 0xde, 0x33, 0xe1, 0x98, 0xde, 0x33, 0xe2, 0x98, - 0xde, 0x33, 0xe2, 0x98, 0xde, 0x33, 0xe2, 0x98, 0xde, 0x33, 0xe2, 0x98, - 0xe0, 0x33, 0xe3, 0x98, 0xde, 0x33, 0xe3, 0x98, 0xe0, 0x33, 0xe3, 0x98, - 0xe0, 0x33, 0xe3, 0x98, 0xe0, 0x33, 0xe4, 0x98, 0xe0, 0x33, 0xe4, 0x98, - 0xe0, 0x33, 0xe4, 0x98, 0xe0, 0x33, 0xe4, 0x98, 0xe0, 0x33, 0xe5, 0x99, - 0xe3, 0x33, 0xe5, 0x98, 0xe0, 0x33, 0xe5, 0x99, 0xe3, 0x33, 0xe5, 0x99, - 0xe2, 0x33, 0xe6, 0x99, 0xe3, 0x33, 0xe6, 0x99, 0xe2, 0x33, 0xe6, 0x99, - 0xe3, 0x33, 0xe6, 0x99, 0xe2, 0x33, 0xe7, 0x99, 0xe3, 0x33, 0xe7, 0x9a, - 0xe5, 0x33, 0xe7, 0x9a, 0xe5, 0x33, 0xe7, 0x9a, 0xe5, 0x33, 0xe8, 0x9a, - 0xe5, 0x33, 0xe8, 0x9a, 0xe5, 0x33, 0xe8, 0x9a, 0xe5, 0x33, 0xe8, 0x9a, - 0xe5, 0x33, 0xe9, 0x9a, 0xe5, 0x33, 0xe9, 0x9a, 0xe5, 0x33, 0xe9, 0x9a, - 0xe5, 0x33, 0xe9, 0x9b, 0xe7, 0x33, 0xea, 0x9a, 0xe5, 0x33, 0xea, 0x9b, - 0xe7, 0x33, 0xea, 0x9a, 0xe5, 0x33, 0xea, 0x9b, 0xe7, 0x33, 0xeb, 0x9b, - 0xe7, 0x33, 0xeb, 0x9b, 0xe7, 0x33, 0xeb, 0x9b, 0xe7, 0x33, 0xeb, 0x9b, - 0xe7, 0x33, 0xec, 0x9b, 0xe7, 0x33, 0xec, 0x9b, 0xe7, 0x33, 0xec, 0x9c, - 0xea, 0x33, 0xec, 0x9c, 0xea, 0x33, 0xec, 0x9c, 0xea, 0x33, 0xed, 0x9c, - 0xea, 0x33, 0xed, 0x9c, 0xea, 0x33, 0xed, 0x9c, 0xea, 0x33, 0xed, 0x9c, - 0xea, 0x33, 0xee, 0x9c, 0xea, 0x33, 0xee, 0x9c, 0xea, 0x33, 0xee, 0x9c, - 0xea, 0x33, 0xee, 0x9d, 0xec, 0x33, 0xef, 0x9c, 0xea, 0x33, 0xef, 0x9d, - 0xec, 0x33, 0xef, 0x9d, 0xec, 0x33, 0xef, 0x9d, 0xec, 0x33, 0xf0, 0x9d, - 0xec, 0x33, 0xf0, 0x9d, 0xec, 0x33, 0xf0, 0x9d, 0xec, 0x33, 0xf0, 0x9d, - 0xec, 0x33, 0xf1, 0x9d, 0xee, 0x33, 0xf1, 0x9d, 0xec, 0x33, 0xf1, 0x9d, - 0xee, 0x33, 0xf1, 0x9d, 0xee, 0x33, 0xf2, 0x9d, 0xee, 0x33, 0xf2, 0x9d, - 0xee, 0x33, 0xf2, 0x9d, 0xee, 0x33, 0xf2, 0x9d, 0xee, 0x33, 0xf2, 0x9d, - 0xee, 0x33, 0xf3, 0x9e, 0xf0, 0x33, 0xf3, 0x9e, 0xf1, 0x33, 0xf3, 0x9e, - 0xf0, 0x33, 0xf3, 0x9e, 0xf1, 0x33, 0xf4, 0x9e, 0xf0, 0x33, 0xf4, 0x9e, - 0xf1, 0x33, 0xf4, 0x9e, 0xf0, 0x33, 0xf4, 0x9e, 0xf1, 0x33, 0xf5, 0x9e, - 0xf0, 0x33, 0xf5, 0x9e, 0xf1, 0x33, 0xf5, 0x9e, 0xf0, 0x33, 0xf5, 0x9e, - 0xf1, 0x33, 0xf5, 0x9f, 0xf3, 0x33, 0xf6, 0x9e, 0xf1, 0x33, 0xf6, 0x9f, - 0xf3, 0x33, 0xf6, 0x9f, 0xf2, 0x33, 0xf6, 0x9f, 0xf3, 0x33, 0xf7, 0x9f, - 0xf2, 0x33, 0xf7, 0x9f, 0xf3, 0x33, 0xf7, 0x9f, 0xf2, 0x33, 0xf7, 0x9f, - 0xf3, 0x33, 0xf8, 0xa0, 0xf5, 0x33, 0xf8, 0x9f, 0xf3, 0x33, 0xf8, 0xa0, - 0xf5, 0x33, 0xf8, 0xa0, 0xf5, 0x33, 0xf8, 0xa0, 0xf5, 0x33, 0xf9, 0xa0, - 0xf5, 0x33, 0xf9, 0xa0, 0xf5, 0x33, 0xf9, 0xa0, 0xf5, 0x33, 0xf9, 0xa0, - 0xf5, 0x33, 0xfa, 0xa1, 0xf7, 0x33, 0xfa, 0xa1, 0xf7, 0x33, 0xfa, 0xa1, - 0xf7, 0x33, 0xfa, 0xa1, 0xf7, 0x33, 0xfa, 0xa1, 0xf7, 0x33, 0xfb, 0xa1, - 0xf7, 0x33, 0xfb, 0xa1, 0xf7, 0x33, 0xfb, 0xa1, 0xf7, 0x33, 0xfb, 0xa1, - 0xf7, 0x33, 0xfc, 0xa1, 0xf7, 0x33, 0xfc, 0xa1, 0xf9, 0x33, 0xfc, 0xa1, - 0xf7, 0x33, 0xfc, 0xa1, 0xf9, 0x33, 0xfc, 0xa1, 0xf7, 0x33, 0xfd, 0xa1, - 0xf9, 0x33, 0xfd, 0xa1, 0xf9, 0x33, 0xfd, 0xa1, 0xf9, 0x33, 0xfd, 0xa1, - 0xf9, 0x33, 0xfe, 0xa1, 0xf9, 0x33, 0xfe, 0xa2, 0xfb, 0x33, 0xfe, 0xa1, - 0xf9, 0x33, 0xfe, 0xa2, 0xfb, 0x33, 0xfe, 0xa1, 0xf9, 0x33, 0xff, 0xa2, - 0xfb, 0x33, 0xff, 0xa2, 0xfb, 0x33, 0x03, 0x89, 0x9a, 0x33, 0x0a, 0x8c, - 0x9a, 0x33, 0x0f, 0x89, 0x9a, 0x33, 0x14, 0x8c, 0x9a, 0x33, 0x17, 0x89, - 0x9a, 0x33, 0x1b, 0x8c, 0x9a, 0x33, 0x1e, 0x89, 0x9a, 0x33, 0x20, 0x8c, - 0x9a, 0x33, 0x23, 0x89, 0x9a, 0x33, 0x25, 0x8c, 0x9a, 0x33, 0x27, 0x89, - 0x9a, 0x33, 0x29, 0x86, 0x9b, 0x33, 0x2b, 0x89, 0x9a, 0x33, 0x2d, 0x86, - 0x9b, 0x33, 0x2f, 0x89, 0x9a, 0x33, 0x31, 0x86, 0x9b, 0x33, 0x32, 0x89, - 0x9a, 0x33, 0x34, 0x86, 0x9b, 0x33, 0x35, 0x89, 0x9a, 0x33, 0x37, 0x86, - 0x9b, 0x33, 0x38, 0x89, 0x9a, 0x33, 0x3a, 0x86, 0x9b, 0x33, 0x3b, 0x89, - 0x9a, 0x33, 0x3c, 0x86, 0x9b, 0x33, 0x3e, 0x89, 0x9a, 0x33, 0x3f, 0x86, - 0x9b, 0x33, 0x40, 0x89, 0x9a, 0x33, 0x42, 0x86, 0x9b, 0x33, 0x43, 0x89, - 0x9a, 0x33, 0x44, 0x86, 0x9b, 0x33, 0x45, 0x89, 0x9a, 0x33, 0x46, 0x86, - 0x9b, 0x33, 0x47, 0x89, 0x9a, 0x33, 0x48, 0x86, 0x9b, 0x33, 0x49, 0x89, - 0x9a, 0x33, 0x4a, 0x86, 0x9b, 0x33, 0x4b, 0x89, 0x9a, 0x33, 0x4c, 0x86, - 0x9b, 0x33, 0x4d, 0x89, 0x9a, 0x33, 0x4e, 0x86, 0x9b, 0x33, 0x4f, 0x89, - 0x9a, 0x33, 0x50, 0x86, 0x9b, 0x33, 0x51, 0x89, 0x9a, 0x33, 0x52, 0x86, - 0x9b, 0x33, 0x53, 0x89, 0x9a, 0x33, 0x54, 0x86, 0x9b, 0x33, 0x55, 0x89, - 0x9a, 0x33, 0x56, 0x86, 0x9b, 0x33, 0x57, 0x83, 0x9b, 0x33, 0x58, 0x86, - 0x9b, 0x33, 0x58, 0x83, 0x9b, 0x33, 0x59, 0x86, 0x9b, 0x33, 0x5a, 0x83, - 0x9b, 0x33, 0x5b, 0x86, 0x9b, 0x33, 0x5c, 0x83, 0x9b, 0x33, 0x5d, 0x86, - 0x9b, 0x33, 0x5d, 0x83, 0x9b, 0x33, 0x5e, 0x86, 0x9b, 0x33, 0x5f, 0x83, - 0x9b, 0x33, 0x60, 0x86, 0x9b, 0x33, 0x60, 0x83, 0x9b, 0x33, 0x61, 0x86, - 0x9b, 0x33, 0x62, 0x83, 0x9b, 0x33, 0x63, 0x86, 0x9b, 0x33, 0x63, 0x83, - 0x9b, 0x33, 0x64, 0x86, 0x9b, 0x33, 0x65, 0x83, 0x9b, 0x33, 0x66, 0x86, - 0x9b, 0x33, 0x66, 0x83, 0x9b, 0x33, 0x67, 0x86, 0x9b, 0x33, 0x68, 0x83, - 0x9b, 0x33, 0x68, 0x86, 0x9b, 0x33, 0x69, 0x83, 0x9b, 0x33, 0x6a, 0x86, - 0x9b, 0x33, 0x6a, 0x83, 0x9b, 0x33, 0x6b, 0x86, 0x9b, 0x33, 0x6c, 0x83, - 0x9b, 0x33, 0x6c, 0x86, 0x9b, 0x33, 0x6d, 0x83, 0x9b, 0x33, 0x6e, 0x86, - 0x9b, 0x33, 0x6e, 0x83, 0x9b, 0x33, 0x6f, 0x86, 0x9b, 0x33, 0x70, 0x83, - 0x9b, 0x33, 0x70, 0x86, 0x9b, 0x33, 0x71, 0x83, 0x9b, 0x33, 0x72, 0x86, - 0x9b, 0x33, 0x72, 0x83, 0x9b, 0x33, 0x73, 0x86, 0x9b, 0x33, 0x73, 0x83, - 0x9b, 0x33, 0x74, 0x86, 0x9b, 0x33, 0x75, 0x83, 0x9b, 0x33, 0x75, 0x86, - 0x9b, 0x33, 0x76, 0x83, 0x9b, 0x33, 0x76, 0x86, 0x9b, 0x33, 0x77, 0x83, - 0x9b, 0x33, 0x78, 0x86, 0x9b, 0x33, 0x78, 0x83, 0x9b, 0x33, 0x79, 0x86, - 0x9b, 0x33, 0x79, 0x83, 0x9b, 0x33, 0x7a, 0x86, 0x9b, 0x33, 0x7a, 0x83, - 0x9b, 0x33, 0x7b, 0x86, 0x9b, 0x33, 0x7c, 0x83, 0x9b, 0x33, 0x7c, 0x86, - 0x9b, 0x33, 0x7d, 0x83, 0x9b, 0x33, 0x7d, 0x86, 0x9b, 0x33, 0x7e, 0x83, - 0x9b, 0x33, 0x7e, 0x86, 0x9b, 0x33, 0x7f, 0x83, 0x9b, 0x33, 0x7f, 0x86, - 0x9b, 0x33, 0x80, 0x83, 0x9b, 0x33, 0x81, 0x86, 0x9b, 0x33, 0x81, 0x83, - 0x9b, 0x33, 0x82, 0x86, 0x9b, 0x33, 0x82, 0x83, 0x9b, 0x33, 0x83, 0x86, - 0x9b, 0x33, 0x83, 0x83, 0x9b, 0x33, 0x84, 0x83, 0x9c, 0x33, 0x84, 0x83, - 0x9b, 0x33, 0x85, 0x83, 0x9c, 0x33, 0x85, 0x83, 0x9b, 0x33, 0x86, 0x83, - 0x9c, 0x33, 0x86, 0x83, 0x9b, 0x33, 0x87, 0x83, 0x9c, 0x33, 0x87, 0x83, - 0x9b, 0x33, 0x88, 0x83, 0x9c, 0x33, 0x88, 0x83, 0x9b, 0x33, 0x89, 0x83, - 0x9c, 0x33, 0x89, 0x83, 0x9b, 0x33, 0x8a, 0x83, 0x9c, 0x33, 0x8a, 0x83, - 0x9b, 0x33, 0x8b, 0x83, 0x9c, 0x33, 0x8b, 0x83, 0x9b, 0x33, 0x8c, 0x83, - 0x9c, 0x33, 0x8c, 0x83, 0x9b, 0x33, 0x8d, 0x83, 0x9c, 0x33, 0x8d, 0x83, - 0x9b, 0x33, 0x8e, 0x83, 0x9c, 0x33, 0x8e, 0x83, 0x9b, 0x33, 0x8e, 0x83, - 0x9c, 0x33, 0x8f, 0x83, 0x9b, 0x33, 0x8f, 0x83, 0x9c, 0x33, 0x90, 0x83, - 0x9b, 0x33, 0x90, 0x83, 0x9c, 0x33, 0x91, 0x83, 0x9b, 0x33, 0x91, 0x83, - 0x9c, 0x33, 0x92, 0x83, 0x9b, 0x33, 0x92, 0x83, 0x9c, 0x33, 0x93, 0x83, - 0x9b, 0x33, 0x93, 0x83, 0x9c, 0x33, 0x94, 0x83, 0x9b, 0x33, 0x94, 0x83, - 0x9c, 0x33, 0x94, 0x83, 0x9b, 0x33, 0x95, 0x83, 0x9c, 0x33, 0x95, 0x83, - 0x9b, 0x33, 0x96, 0x83, 0x9c, 0x33, 0x96, 0x83, 0x9b, 0x33, 0x97, 0x83, - 0x9c, 0x33, 0x97, 0x83, 0x9b, 0x33, 0x98, 0x83, 0x9c, 0x33, 0x98, 0x83, - 0x9b, 0x33, 0x98, 0x83, 0x9c, 0x33, 0x99, 0x83, 0x9b, 0x33, 0x99, 0x83, - 0x9c, 0x33, 0x9a, 0x83, 0x9b, 0x33, 0x9a, 0x83, 0x9c, 0x33, 0x9a, 0x83, - 0x9b, 0x33, 0x9b, 0x83, 0x9c, 0x33, 0x9b, 0x83, 0x9b, 0x33, 0x9c, 0x83, - 0x9c, 0x33, 0x9c, 0x83, 0x9c, 0x33, 0x9d, 0x83, 0x9d, 0x33, 0x9d, 0x83, - 0x9c, 0x33, 0x9d, 0x83, 0x9d, 0x33, 0x9e, 0x83, 0x9c, 0x33, 0x9e, 0x83, - 0x9d, 0x33, 0x9f, 0x83, 0x9c, 0x33, 0x9f, 0x83, 0x9d, 0x33, 0x9f, 0x84, - 0x9f, 0x33, 0xa0, 0x84, 0xa0, 0x33, 0xa0, 0x84, 0xa0, 0x33, 0xa1, 0x84, - 0xa1, 0x33, 0xa1, 0x84, 0xa0, 0x33, 0xa1, 0x84, 0xa1, 0x33, 0xa2, 0x84, - 0xa0, 0x33, 0xa2, 0x84, 0xa1, 0x33, 0xa3, 0x84, 0xa0, 0x33, 0xa3, 0x84, - 0xa1, 0x33, 0xa3, 0x84, 0xa0, 0x33, 0xa4, 0x84, 0xa1, 0x33, 0xa4, 0x85, - 0xa4, 0x33, 0xa5, 0x85, 0xa4, 0x33, 0xa5, 0x85, 0xa4, 0x33, 0xa5, 0x85, - 0xa4, 0x33, 0xa6, 0x85, 0xa4, 0x33, 0xa6, 0x85, 0xa4, 0x33, 0xa6, 0x85, - 0xa4, 0x33, 0xa7, 0x85, 0xa4, 0x33, 0xa7, 0x85, 0xa4, 0x33, 0xa8, 0x86, - 0xa8, 0x33, 0xa8, 0x86, 0xa7, 0x33, 0xa8, 0x86, 0xa8, 0x33, 0xa9, 0x86, - 0xa7, 0x33, 0xa9, 0x86, 0xa8, 0x33, 0xaa, 0x86, 0xa7, 0x33, 0xaa, 0x86, - 0xa8, 0x33, 0xaa, 0x86, 0xa7, 0x33, 0xab, 0x86, 0xa8, 0x33, 0xab, 0x87, - 0xab, 0x33, 0xab, 0x87, 0xab, 0x33, 0xac, 0x87, 0xab, 0x33, 0xac, 0x87, - 0xab, 0x33, 0xac, 0x87, 0xab, 0x33, 0xad, 0x87, 0xab, 0x33, 0xad, 0x87, - 0xab, 0x33, 0xae, 0x87, 0xab, 0x33, 0xae, 0x87, 0xab, 0x33, 0xae, 0x87, - 0xab, 0x33, 0xaf, 0x88, 0xaf, 0x33, 0xaf, 0x88, 0xae, 0x33, 0xaf, 0x88, - 0xaf, 0x33, 0xb0, 0x88, 0xae, 0x33, 0xb0, 0x88, 0xaf, 0x33, 0xb0, 0x88, - 0xae, 0x33, 0xb1, 0x88, 0xaf, 0x33, 0xb1, 0x88, 0xae, 0x33, 0xb2, 0x88, - 0xaf, 0x33, 0xb2, 0x89, 0xb2, 0x33, 0xb2, 0x89, 0xb2, 0x33, 0xb3, 0x89, - 0xb2, 0x33, 0xb3, 0x89, 0xb2, 0x33, 0xb3, 0x89, 0xb2, 0x33, 0xb4, 0x89, - 0xb2, 0x33, 0xb4, 0x89, 0xb2, 0x33, 0xb4, 0x89, 0xb2, 0x33, 0xb5, 0x89, - 0xb2, 0x33, 0xb5, 0x89, 0xb2, 0x33, 0xb5, 0x89, 0xb2, 0x33, 0xb6, 0x89, - 0xb2, 0x33, 0xb6, 0x8a, 0xb5, 0x33, 0xb6, 0x8a, 0xb5, 0x33, 0xb7, 0x8a, - 0xb5, 0x33, 0xb7, 0x8a, 0xb5, 0x33, 0xb7, 0x8a, 0xb5, 0x33, 0xb8, 0x8a, - 0xb5, 0x33, 0xb8, 0x8a, 0xb5, 0x33, 0xb8, 0x8a, 0xb5, 0x33, 0xb9, 0x8a, - 0xb5, 0x33, 0xb9, 0x8b, 0xb8, 0x33, 0xb9, 0x8b, 0xb8, 0x33, 0xba, 0x8b, - 0xb8, 0x33, 0xba, 0x8b, 0xb8, 0x33, 0xba, 0x8b, 0xb8, 0x33, 0xbb, 0x8b, - 0xb8, 0x33, 0xbb, 0x8b, 0xb8, 0x33, 0xbb, 0x8b, 0xb8, 0x33, 0xbc, 0x8b, - 0xb8, 0x33, 0xbc, 0x8c, 0xbb, 0x33, 0xbc, 0x8c, 0xbc, 0x33, 0xbd, 0x8c, - 0xbb, 0x33, 0xbd, 0x8c, 0xbc, 0x33, 0xbd, 0x8c, 0xbb, 0x33, 0xbe, 0x8c, - 0xbc, 0x33, 0xbe, 0x8c, 0xbb, 0x33, 0xbe, 0x8c, 0xbc, 0x33, 0xbf, 0x8c, - 0xbb, 0x33, 0xbf, 0x8c, 0xbc, 0x33, 0xbf, 0x8d, 0xbf, 0x33, 0xc0, 0x8c, - 0xbc, 0x33, 0xc0, 0x8d, 0xbf, 0x33, 0xc0, 0x8d, 0xbe, 0x33, 0xc1, 0x8d, - 0xbf, 0x33, 0xc1, 0x8d, 0xbe, 0x33, 0xc1, 0x8d, 0xbf, 0x33, 0xc1, 0x8d, - 0xbe, 0x33, 0xc2, 0x8d, 0xbf, 0x33, 0xc2, 0x8d, 0xbe, 0x33, 0xc2, 0x8d, - 0xbf, 0x33, 0xc3, 0x8e, 0xc1, 0x33, 0xc3, 0x8e, 0xc1, 0x33, 0xc3, 0x8e, - 0xc1, 0x33, 0xc4, 0x8e, 0xc1, 0x33, 0xc4, 0x8e, 0xc1, 0x33, 0xc4, 0x8e, - 0xc1, 0x33, 0xc5, 0x8e, 0xc1, 0x33, 0xc5, 0x8e, 0xc1, 0x33, 0xc5, 0x8e, - 0xc1, 0x33, 0xc6, 0x8f, 0xc4, 0x33, 0xc6, 0x8f, 0xc5, 0x33, 0xc6, 0x8f, - 0xc4, 0x33, 0xc6, 0x8f, 0xc5, 0x33, 0xc7, 0x8f, 0xc4, 0x33, 0xc7, 0x8f, - 0xc5, 0x33, 0xc7, 0x8f, 0xc4, 0x33, 0xc8, 0x8f, 0xc5, 0x33, 0xc8, 0x8f, - 0xc4, 0x33, 0xc8, 0x8f, 0xc5, 0x33, 0xc9, 0x90, 0xc7, 0x33, 0xc9, 0x90, - 0xc7, 0x33, 0xc9, 0x90, 0xc7, 0x33, 0xc9, 0x90, 0xc7, 0x33, 0xca, 0x90, - 0xc7, 0x33, 0xca, 0x90, 0xc7, 0x33, 0xca, 0x90, 0xc7, 0x33, 0xcb, 0x90, - 0xc7, 0x33, 0xcb, 0x90, 0xc7, 0x33, 0xcb, 0x91, 0xca, 0x33, 0xcc, 0x90, - 0xc7, 0x33, 0xcc, 0x91, 0xca, 0x33, 0xcc, 0x91, 0xca, 0x33, 0xcc, 0x91, - 0xca, 0x33, 0xcd, 0x91, 0xca, 0x33, 0xcd, 0x91, 0xca, 0x33, 0xcd, 0x91, - 0xca, 0x33, 0xce, 0x91, 0xca, 0x33, 0xce, 0x92, 0xcd, 0x33, 0xce, 0x92, - 0xcd, 0x33, 0xce, 0x92, 0xcd, 0x33, 0xcf, 0x92, 0xcd, 0x33, 0xcf, 0x92, - 0xcd, 0x33, 0xcf, 0x92, 0xcd, 0x33, 0xd0, 0x92, 0xcd, 0x33, 0xd0, 0x92, - 0xcd, 0x33, 0xd0, 0x92, 0xcd, 0x33, 0xd0, 0x92, 0xcd, 0x33, 0xd1, 0x93, - 0xd0, 0x33, 0xd1, 0x92, 0xcd, 0x33, 0xd1, 0x93, 0xd0, 0x33, 0xd2, 0x93, - 0xcf, 0x33, 0xd2, 0x93, 0xd0, 0x33, 0xd2, 0x93, 0xcf, 0x33, 0xd2, 0x93, - 0xd0, 0x33, 0xd3, 0x93, 0xcf, 0x33, 0xd3, 0x93, 0xd0, 0x33, 0xd3, 0x93, - 0xcf, 0x33, 0xd4, 0x93, 0xd0, 0x33, 0xd4, 0x94, 0xd2, 0x33, 0xd4, 0x94, - 0xd2, 0x33, 0xd4, 0x94, 0xd2, 0x33, 0xd5, 0x94, 0xd2, 0x33, 0xd5, 0x94, - 0xd2, 0x33, 0xd5, 0x94, 0xd2, 0x33, 0xd6, 0x94, 0xd2, 0x33, 0xd6, 0x94, - 0xd2, 0x33, 0xd6, 0x94, 0xd2, 0x33, 0xd6, 0x94, 0xd2, 0x33, 0xd7, 0x94, - 0xd5, 0x33, 0xd7, 0x94, 0xd2, 0x33, 0xd7, 0x94, 0xd5, 0x33, 0xd7, 0x94, - 0xd5, 0x33, 0xd8, 0x94, 0xd5, 0x33, 0xd8, 0x94, 0xd5, 0x33, 0xd8, 0x94, - 0xd5, 0x33, 0xd9, 0x94, 0xd5, 0x33, 0xd9, 0x94, 0xd5, 0x33, 0xd9, 0x95, - 0xd7, 0x33, 0xd9, 0x94, 0xd5, 0x33, 0xda, 0x95, 0xd7, 0x33, 0xda, 0x95, - 0xd7, 0x33, 0xda, 0x95, 0xd7, 0x33, 0xda, 0x95, 0xd7, 0x33, 0xdb, 0x95, - 0xd7, 0x33, 0xdb, 0x95, 0xd7, 0x33, 0xdb, 0x95, 0xd7, 0x33, 0xdb, 0x96, - 0xda, 0x33, 0xdc, 0x96, 0xda, 0x33, 0xdc, 0x96, 0xda, 0x33, 0xdc, 0x96, - 0xda, 0x33, 0xdd, 0x96, 0xda, 0x33, 0xdd, 0x96, 0xda, 0x33, 0xdd, 0x96, - 0xda, 0x33, 0xdd, 0x96, 0xda, 0x33, 0xde, 0x96, 0xda, 0x33, 0xde, 0x96, - 0xda, 0x33, 0xde, 0x96, 0xda, 0x33, 0xde, 0x96, 0xda, 0x33, 0xdf, 0x97, - 0xdd, 0x33, 0xdf, 0x97, 0xdc, 0x33, 0xdf, 0x97, 0xdd, 0x33, 0xdf, 0x97, - 0xdc, 0x33, 0xe0, 0x97, 0xdd, 0x33, 0xe0, 0x97, 0xdc, 0x33, 0xe0, 0x97, - 0xdd, 0x33, 0xe1, 0x97, 0xdc, 0x33, 0xe1, 0x97, 0xdd, 0x33, 0xe1, 0x98, - 0xdf, 0x33, 0xe1, 0x97, 0xdd, 0x33, 0xe2, 0x98, 0xdf, 0x33, 0xe2, 0x98, - 0xdf, 0x33, 0xe2, 0x98, 0xdf, 0x33, 0xe2, 0x98, 0xdf, 0x33, 0xe3, 0x98, - 0xdf, 0x33, 0xe3, 0x98, 0xdf, 0x33, 0xe3, 0x98, 0xdf, 0x33, 0xe3, 0x99, - 0xe1, 0x33, 0xe4, 0x99, 0xe2, 0x33, 0xe4, 0x99, 0xe1, 0x33, 0xe4, 0x99, - 0xe2, 0x33, 0xe4, 0x99, 0xe1, 0x33, 0xe5, 0x99, 0xe2, 0x33, 0xe5, 0x99, - 0xe1, 0x33, 0xe5, 0x99, 0xe2, 0x33, 0xe5, 0x99, 0xe1, 0x33, 0xe6, 0x99, - 0xe2, 0x33, 0xe6, 0x9a, 0xe4, 0x33, 0xe6, 0x99, 0xe2, 0x33, 0xe6, 0x9a, - 0xe4, 0x33, 0xe7, 0x9a, 0xe4, 0x33, 0xe7, 0x9a, 0xe4, 0x33, 0xe7, 0x9a, - 0xe4, 0x33, 0xe7, 0x9a, 0xe4, 0x33, 0xe8, 0x9a, 0xe4, 0x33, 0xe8, 0x9a, - 0xe4, 0x33, 0xe8, 0x9a, 0xe6, 0x33, 0xe8, 0x9a, 0xe4, 0x33, 0xe9, 0x9a, - 0xe6, 0x33, 0xe9, 0x9a, 0xe6, 0x33, 0xe9, 0x9a, 0xe6, 0x33, 0xe9, 0x9a, - 0xe6, 0x33, 0xea, 0x9a, 0xe6, 0x33, 0xea, 0x9a, 0xe6, 0x33, 0xea, 0x9a, - 0xe6, 0x33, 0xea, 0x9b, 0xe8, 0x33, 0xeb, 0x9b, 0xe9, 0x33, 0xeb, 0x9b, - 0xe8, 0x33, 0xeb, 0x9b, 0xe9, 0x33, 0xeb, 0x9b, 0xe8, 0x33, 0xec, 0x9b, - 0xe9, 0x33, 0xec, 0x9b, 0xe8, 0x33, 0xec, 0x9b, 0xe9, 0x33, 0xec, 0x9b, - 0xe8, 0x33, 0xec, 0x9b, 0xe9, 0x33, 0xed, 0x9b, 0xe8, 0x33, 0xed, 0x9b, - 0xe9, 0x33, 0xed, 0x9c, 0xeb, 0x33, 0xed, 0x9b, 0xe9, 0x33, 0xee, 0x9c, - 0xeb, 0x33, 0xee, 0x9c, 0xeb, 0x33, 0xee, 0x9c, 0xeb, 0x33, 0xee, 0x9c, - 0xeb, 0x33, 0xef, 0x9c, 0xeb, 0x33, 0xef, 0x9c, 0xeb, 0x33, 0xef, 0x9c, - 0xeb, 0x33, 0xef, 0x9d, 0xed, 0x33, 0xf0, 0x9d, 0xed, 0x33, 0xf0, 0x9d, - 0xed, 0x33, 0xf0, 0x9d, 0xed, 0x33, 0xf0, 0x9d, 0xed, 0x33, 0xf1, 0x9d, - 0xed, 0x33, 0xf1, 0x9d, 0xed, 0x33, 0xf1, 0x9d, 0xed, 0x33, 0xf1, 0x9d, - 0xed, 0x33, 0xf2, 0x9d, 0xed, 0x33, 0xf2, 0x9e, 0xef, 0x33, 0xf2, 0x9d, - 0xed, 0x33, 0xf2, 0x9e, 0xef, 0x33, 0xf2, 0x9e, 0xef, 0x33, 0xf3, 0x9e, - 0xef, 0x33, 0xf3, 0x9e, 0xef, 0x33, 0xf3, 0x9e, 0xef, 0x33, 0xf3, 0x9e, - 0xef, 0x33, 0xf4, 0x9e, 0xef, 0x33, 0xf4, 0x9f, 0xf2, 0x33, 0xf4, 0x9e, - 0xef, 0x33, 0xf4, 0x9f, 0xf2, 0x33, 0xf5, 0x9e, 0xef, 0x33, 0xf5, 0x9f, - 0xf2, 0x33, 0xf5, 0x9f, 0xf1, 0x33, 0xf5, 0x9f, 0xf2, 0x33, 0xf5, 0x9f, - 0xf1, 0x33, 0xf6, 0x9f, 0xf2, 0x33, 0xf6, 0x9f, 0xf1, 0x33, 0xf6, 0x9f, - 0xf2, 0x33, 0xf6, 0x9f, 0xf4, 0x33, 0xf7, 0x9f, 0xf4, 0x33, 0xf7, 0x9f, - 0xf4, 0x33, 0xf7, 0x9f, 0xf4, 0x33, 0xf7, 0x9f, 0xf4, 0x33, 0xf8, 0x9f, - 0xf4, 0x33, 0xf8, 0x9f, 0xf4, 0x33, 0xf8, 0x9f, 0xf4, 0x33, 0xf8, 0x9f, - 0xf4, 0x33, 0xf8, 0x9f, 0xf4, 0x33, 0xf9, 0xa0, 0xf6, 0x33, 0xf9, 0x9f, - 0xf4, 0x33, 0xf9, 0xa0, 0xf6, 0x33, 0xf9, 0xa0, 0xf6, 0x33, 0xfa, 0xa0, - 0xf6, 0x33, 0xfa, 0xa0, 0xf6, 0x33, 0xfa, 0xa0, 0xf6, 0x33, 0xfa, 0xa0, - 0xf6, 0x33, 0xfa, 0xa0, 0xf6, 0x33, 0xfb, 0xa1, 0xf8, 0x33, 0xfb, 0xa0, - 0xf6, 0x33, 0xfb, 0xa1, 0xf8, 0x33, 0xfb, 0xa1, 0xf8, 0x33, 0xfc, 0xa1, - 0xf8, 0x33, 0xfc, 0xa1, 0xf8, 0x33, 0xfc, 0xa1, 0xf8, 0x33, 0xfc, 0xa1, - 0xf8, 0x33, 0xfc, 0xa1, 0xf8, 0x33, 0xfd, 0xa2, 0xfa, 0x33, 0xfd, 0xa2, - 0xfa, 0x33, 0xfd, 0xa2, 0xfa, 0x33, 0xfd, 0xa2, 0xfa, 0x33, 0xfe, 0xa2, - 0xfa, 0x33, 0xfe, 0xa2, 0xfa, 0x33, 0xfe, 0xa2, 0xfa, 0x33, 0xfe, 0xa2, - 0xfa, 0x33, 0xfe, 0xa2, 0xfa, 0x33, 0xff, 0xa2, 0xfa, 0x33, 0xff, 0xa2, - 0xfa, 0x33, 0x03, 0x89, 0x9a, 0x34, 0x0a, 0x86, 0x9b, 0x34, 0x0f, 0x89, - 0x9a, 0x34, 0x14, 0x86, 0x9b, 0x34, 0x17, 0x89, 0x9a, 0x34, 0x1b, 0x86, - 0x9b, 0x34, 0x1e, 0x89, 0x9a, 0x34, 0x20, 0x86, 0x9b, 0x34, 0x23, 0x89, - 0x9a, 0x34, 0x25, 0x86, 0x9b, 0x34, 0x27, 0x89, 0x9a, 0x34, 0x29, 0x86, - 0x9b, 0x34, 0x2b, 0x89, 0x9a, 0x34, 0x2d, 0x86, 0x9b, 0x34, 0x2f, 0x89, - 0x9a, 0x34, 0x31, 0x86, 0x9b, 0x34, 0x32, 0x89, 0x9a, 0x34, 0x34, 0x86, - 0x9b, 0x34, 0x35, 0x89, 0x9a, 0x34, 0x37, 0x86, 0x9b, 0x34, 0x38, 0x89, - 0x9a, 0x34, 0x3a, 0x86, 0x9b, 0x34, 0x3b, 0x89, 0x9a, 0x34, 0x3c, 0x86, - 0x9b, 0x34, 0x3e, 0x89, 0x9a, 0x34, 0x3f, 0x86, 0x9b, 0x34, 0x40, 0x89, - 0x9a, 0x34, 0x42, 0x86, 0x9b, 0x34, 0x43, 0x89, 0x9a, 0x34, 0x44, 0x86, - 0x9b, 0x34, 0x45, 0x89, 0x9a, 0x34, 0x46, 0x86, 0x9b, 0x34, 0x47, 0x89, - 0x9a, 0x34, 0x48, 0x86, 0x9b, 0x34, 0x49, 0x89, 0x9a, 0x34, 0x4a, 0x86, - 0x9b, 0x34, 0x4b, 0x89, 0x9a, 0x34, 0x4c, 0x86, 0x9b, 0x34, 0x4d, 0x89, - 0x9a, 0x34, 0x4e, 0x86, 0x9b, 0x34, 0x4f, 0x89, 0x9a, 0x34, 0x50, 0x86, - 0x9b, 0x34, 0x51, 0x89, 0x9a, 0x34, 0x52, 0x86, 0x9b, 0x34, 0x53, 0x89, - 0x9a, 0x34, 0x54, 0x86, 0x9b, 0x34, 0x55, 0x89, 0x9a, 0x34, 0x56, 0x86, - 0x9b, 0x34, 0x57, 0x89, 0x9a, 0x34, 0x58, 0x86, 0x9b, 0x34, 0x58, 0x89, - 0x9a, 0x34, 0x59, 0x86, 0x9b, 0x34, 0x5a, 0x89, 0x9a, 0x34, 0x5b, 0x86, - 0x9b, 0x34, 0x5c, 0x89, 0x9a, 0x34, 0x5d, 0x86, 0x9b, 0x34, 0x5d, 0x89, - 0x9a, 0x34, 0x5e, 0x86, 0x9b, 0x34, 0x5f, 0x89, 0x9a, 0x34, 0x60, 0x86, - 0x9b, 0x34, 0x60, 0x84, 0x9b, 0x34, 0x61, 0x86, 0x9b, 0x34, 0x62, 0x84, - 0x9b, 0x34, 0x63, 0x86, 0x9b, 0x34, 0x63, 0x84, 0x9b, 0x34, 0x64, 0x86, - 0x9b, 0x34, 0x65, 0x84, 0x9b, 0x34, 0x66, 0x86, 0x9b, 0x34, 0x66, 0x84, - 0x9b, 0x34, 0x67, 0x86, 0x9b, 0x34, 0x68, 0x84, 0x9b, 0x34, 0x68, 0x86, - 0x9b, 0x34, 0x69, 0x84, 0x9b, 0x34, 0x6a, 0x86, 0x9b, 0x34, 0x6a, 0x84, - 0x9b, 0x34, 0x6b, 0x86, 0x9b, 0x34, 0x6c, 0x84, 0x9b, 0x34, 0x6c, 0x86, - 0x9b, 0x34, 0x6d, 0x84, 0x9b, 0x34, 0x6e, 0x86, 0x9b, 0x34, 0x6e, 0x84, - 0x9b, 0x34, 0x6f, 0x86, 0x9b, 0x34, 0x70, 0x84, 0x9b, 0x34, 0x70, 0x86, - 0x9b, 0x34, 0x71, 0x84, 0x9b, 0x34, 0x72, 0x86, 0x9b, 0x34, 0x72, 0x84, - 0x9b, 0x34, 0x73, 0x86, 0x9b, 0x34, 0x73, 0x84, 0x9b, 0x34, 0x74, 0x86, - 0x9b, 0x34, 0x75, 0x84, 0x9b, 0x34, 0x75, 0x86, 0x9b, 0x34, 0x76, 0x84, - 0x9b, 0x34, 0x76, 0x86, 0x9b, 0x34, 0x77, 0x84, 0x9b, 0x34, 0x78, 0x86, - 0x9b, 0x34, 0x78, 0x84, 0x9b, 0x34, 0x79, 0x86, 0x9b, 0x34, 0x79, 0x84, - 0x9b, 0x34, 0x7a, 0x86, 0x9b, 0x34, 0x7a, 0x84, 0x9b, 0x34, 0x7b, 0x86, - 0x9b, 0x34, 0x7c, 0x84, 0x9b, 0x34, 0x7c, 0x86, 0x9b, 0x34, 0x7d, 0x84, - 0x9b, 0x34, 0x7d, 0x86, 0x9b, 0x34, 0x7e, 0x84, 0x9b, 0x34, 0x7e, 0x86, - 0x9b, 0x34, 0x7f, 0x84, 0x9b, 0x34, 0x7f, 0x86, 0x9b, 0x34, 0x80, 0x84, - 0x9b, 0x34, 0x81, 0x86, 0x9b, 0x34, 0x81, 0x84, 0x9b, 0x34, 0x82, 0x86, - 0x9b, 0x34, 0x82, 0x84, 0x9b, 0x34, 0x83, 0x86, 0x9b, 0x34, 0x83, 0x84, - 0x9b, 0x34, 0x84, 0x86, 0x9b, 0x34, 0x84, 0x84, 0x9b, 0x34, 0x85, 0x86, - 0x9b, 0x34, 0x85, 0x84, 0x9b, 0x34, 0x86, 0x86, 0x9b, 0x34, 0x86, 0x84, - 0x9b, 0x34, 0x87, 0x86, 0x9b, 0x34, 0x87, 0x84, 0x9b, 0x34, 0x88, 0x86, - 0x9b, 0x34, 0x88, 0x84, 0x9b, 0x34, 0x89, 0x86, 0x9b, 0x34, 0x89, 0x84, - 0x9b, 0x34, 0x8a, 0x86, 0x9b, 0x34, 0x8a, 0x84, 0x9b, 0x34, 0x8b, 0x86, - 0x9b, 0x34, 0x8b, 0x84, 0x9b, 0x34, 0x8c, 0x86, 0x9b, 0x34, 0x8c, 0x84, - 0x9b, 0x34, 0x8d, 0x86, 0x9b, 0x34, 0x8d, 0x84, 0x9b, 0x34, 0x8e, 0x84, - 0x9c, 0x34, 0x8e, 0x84, 0x9b, 0x34, 0x8e, 0x84, 0x9c, 0x34, 0x8f, 0x84, - 0x9b, 0x34, 0x8f, 0x84, 0x9c, 0x34, 0x90, 0x84, 0x9b, 0x34, 0x90, 0x84, - 0x9c, 0x34, 0x91, 0x84, 0x9b, 0x34, 0x91, 0x84, 0x9c, 0x34, 0x92, 0x84, - 0x9b, 0x34, 0x92, 0x84, 0x9c, 0x34, 0x93, 0x84, 0x9b, 0x34, 0x93, 0x84, - 0x9c, 0x34, 0x94, 0x84, 0x9b, 0x34, 0x94, 0x84, 0x9c, 0x34, 0x94, 0x84, - 0x9b, 0x34, 0x95, 0x84, 0x9c, 0x34, 0x95, 0x84, 0x9b, 0x34, 0x96, 0x84, - 0x9c, 0x34, 0x96, 0x84, 0x9b, 0x34, 0x97, 0x84, 0x9c, 0x34, 0x97, 0x84, - 0x9b, 0x34, 0x98, 0x84, 0x9c, 0x34, 0x98, 0x84, 0x9b, 0x34, 0x98, 0x84, - 0x9c, 0x34, 0x99, 0x84, 0x9b, 0x34, 0x99, 0x84, 0x9c, 0x34, 0x9a, 0x84, - 0x9b, 0x34, 0x9a, 0x84, 0x9c, 0x34, 0x9a, 0x84, 0x9b, 0x34, 0x9b, 0x84, - 0x9c, 0x34, 0x9b, 0x84, 0x9b, 0x34, 0x9c, 0x84, 0x9c, 0x34, 0x9c, 0x84, - 0x9c, 0x34, 0x9d, 0x84, 0x9d, 0x34, 0x9d, 0x84, 0x9d, 0x34, 0x9d, 0x84, - 0x9d, 0x34, 0x9e, 0x84, 0x9e, 0x34, 0x9e, 0x84, 0x9e, 0x34, 0x9f, 0x84, - 0x9f, 0x34, 0x9f, 0x84, 0x9e, 0x34, 0x9f, 0x84, 0x9f, 0x34, 0xa0, 0x84, - 0x9e, 0x34, 0xa0, 0x84, 0x9f, 0x34, 0xa1, 0x84, 0x9e, 0x34, 0xa1, 0x84, - 0x9f, 0x34, 0xa1, 0x85, 0xa1, 0x34, 0xa2, 0x85, 0xa2, 0x34, 0xa2, 0x85, - 0xa2, 0x34, 0xa3, 0x85, 0xa2, 0x34, 0xa3, 0x85, 0xa2, 0x34, 0xa3, 0x85, - 0xa2, 0x34, 0xa4, 0x85, 0xa2, 0x34, 0xa4, 0x85, 0xa2, 0x34, 0xa5, 0x85, - 0xa2, 0x34, 0xa5, 0x85, 0xa2, 0x34, 0xa5, 0x85, 0xa2, 0x34, 0xa6, 0x86, - 0xa6, 0x34, 0xa6, 0x86, 0xa6, 0x34, 0xa6, 0x86, 0xa6, 0x34, 0xa7, 0x86, - 0xa6, 0x34, 0xa7, 0x86, 0xa6, 0x34, 0xa8, 0x86, 0xa6, 0x34, 0xa8, 0x86, - 0xa6, 0x34, 0xa8, 0x86, 0xa6, 0x34, 0xa9, 0x86, 0xa6, 0x34, 0xa9, 0x86, - 0xa6, 0x34, 0xaa, 0x87, 0xaa, 0x34, 0xaa, 0x87, 0xa9, 0x34, 0xaa, 0x87, - 0xaa, 0x34, 0xab, 0x87, 0xa9, 0x34, 0xab, 0x87, 0xaa, 0x34, 0xab, 0x87, - 0xa9, 0x34, 0xac, 0x87, 0xaa, 0x34, 0xac, 0x87, 0xa9, 0x34, 0xac, 0x87, - 0xaa, 0x34, 0xad, 0x88, 0xad, 0x34, 0xad, 0x88, 0xad, 0x34, 0xae, 0x88, - 0xad, 0x34, 0xae, 0x88, 0xad, 0x34, 0xae, 0x88, 0xad, 0x34, 0xaf, 0x88, - 0xad, 0x34, 0xaf, 0x88, 0xad, 0x34, 0xaf, 0x88, 0xad, 0x34, 0xb0, 0x88, - 0xad, 0x34, 0xb0, 0x88, 0xad, 0x34, 0xb0, 0x89, 0xb0, 0x34, 0xb1, 0x89, - 0xb0, 0x34, 0xb1, 0x89, 0xb0, 0x34, 0xb2, 0x89, 0xb0, 0x34, 0xb2, 0x89, - 0xb0, 0x34, 0xb2, 0x89, 0xb0, 0x34, 0xb3, 0x89, 0xb0, 0x34, 0xb3, 0x89, - 0xb2, 0x34, 0xb3, 0x89, 0xb0, 0x34, 0xb4, 0x89, 0xb2, 0x34, 0xb4, 0x89, - 0xb2, 0x34, 0xb4, 0x89, 0xb2, 0x34, 0xb5, 0x89, 0xb2, 0x34, 0xb5, 0x89, - 0xb2, 0x34, 0xb5, 0x8a, 0xb3, 0x34, 0xb6, 0x8a, 0xb4, 0x34, 0xb6, 0x8a, - 0xb3, 0x34, 0xb6, 0x8a, 0xb4, 0x34, 0xb7, 0x8a, 0xb3, 0x34, 0xb7, 0x8a, - 0xb4, 0x34, 0xb7, 0x8b, 0xb7, 0x34, 0xb8, 0x8b, 0xb7, 0x34, 0xb8, 0x8b, - 0xb7, 0x34, 0xb8, 0x8b, 0xb7, 0x34, 0xb9, 0x8b, 0xb7, 0x34, 0xb9, 0x8b, - 0xb7, 0x34, 0xb9, 0x8b, 0xb7, 0x34, 0xba, 0x8b, 0xb7, 0x34, 0xba, 0x8b, - 0xb7, 0x34, 0xba, 0x8b, 0xb7, 0x34, 0xbb, 0x8c, 0xba, 0x34, 0xbb, 0x8c, - 0xba, 0x34, 0xbb, 0x8c, 0xba, 0x34, 0xbc, 0x8c, 0xba, 0x34, 0xbc, 0x8c, - 0xba, 0x34, 0xbc, 0x8c, 0xba, 0x34, 0xbd, 0x8c, 0xba, 0x34, 0xbd, 0x8c, - 0xba, 0x34, 0xbd, 0x8c, 0xba, 0x34, 0xbe, 0x8d, 0xbd, 0x34, 0xbe, 0x8d, - 0xbd, 0x34, 0xbe, 0x8d, 0xbd, 0x34, 0xbf, 0x8d, 0xbd, 0x34, 0xbf, 0x8d, - 0xbd, 0x34, 0xbf, 0x8d, 0xbd, 0x34, 0xc0, 0x8d, 0xbd, 0x34, 0xc0, 0x8d, - 0xbd, 0x34, 0xc0, 0x8d, 0xbd, 0x34, 0xc1, 0x8e, 0xc0, 0x34, 0xc1, 0x8e, - 0xc0, 0x34, 0xc1, 0x8e, 0xc0, 0x34, 0xc1, 0x8e, 0xc0, 0x34, 0xc2, 0x8e, - 0xc0, 0x34, 0xc2, 0x8e, 0xc0, 0x34, 0xc2, 0x8e, 0xc0, 0x34, 0xc3, 0x8e, - 0xc0, 0x34, 0xc3, 0x8e, 0xc0, 0x34, 0xc3, 0x8e, 0xc0, 0x34, 0xc4, 0x8e, - 0xc0, 0x34, 0xc4, 0x8e, 0xc0, 0x34, 0xc4, 0x8e, 0xc3, 0x34, 0xc5, 0x8e, - 0xc3, 0x34, 0xc5, 0x8e, 0xc3, 0x34, 0xc5, 0x8e, 0xc3, 0x34, 0xc6, 0x8e, - 0xc3, 0x34, 0xc6, 0x8e, 0xc3, 0x34, 0xc6, 0x8e, 0xc3, 0x34, 0xc6, 0x8e, - 0xc3, 0x34, 0xc7, 0x8e, 0xc3, 0x34, 0xc7, 0x8f, 0xc6, 0x34, 0xc7, 0x8f, - 0xc6, 0x34, 0xc8, 0x8f, 0xc6, 0x34, 0xc8, 0x8f, 0xc6, 0x34, 0xc8, 0x8f, - 0xc6, 0x34, 0xc9, 0x8f, 0xc6, 0x34, 0xc9, 0x8f, 0xc6, 0x34, 0xc9, 0x8f, - 0xc6, 0x34, 0xc9, 0x8f, 0xc6, 0x34, 0xca, 0x90, 0xc9, 0x34, 0xca, 0x90, - 0xc9, 0x34, 0xca, 0x90, 0xc9, 0x34, 0xcb, 0x90, 0xc9, 0x34, 0xcb, 0x90, - 0xc9, 0x34, 0xcb, 0x90, 0xc9, 0x34, 0xcc, 0x90, 0xc9, 0x34, 0xcc, 0x90, - 0xc9, 0x34, 0xcc, 0x90, 0xc9, 0x34, 0xcc, 0x90, 0xc9, 0x34, 0xcd, 0x91, - 0xcc, 0x34, 0xcd, 0x90, 0xc9, 0x34, 0xcd, 0x91, 0xcc, 0x34, 0xce, 0x91, - 0xcb, 0x34, 0xce, 0x91, 0xcc, 0x34, 0xce, 0x91, 0xcb, 0x34, 0xce, 0x91, - 0xcc, 0x34, 0xcf, 0x91, 0xcb, 0x34, 0xcf, 0x91, 0xcc, 0x34, 0xcf, 0x92, - 0xce, 0x34, 0xd0, 0x92, 0xce, 0x34, 0xd0, 0x92, 0xce, 0x34, 0xd0, 0x92, - 0xce, 0x34, 0xd0, 0x92, 0xce, 0x34, 0xd1, 0x92, 0xce, 0x34, 0xd1, 0x92, - 0xce, 0x34, 0xd1, 0x92, 0xce, 0x34, 0xd2, 0x92, 0xce, 0x34, 0xd2, 0x92, - 0xce, 0x34, 0xd2, 0x93, 0xd1, 0x34, 0xd2, 0x92, 0xce, 0x34, 0xd3, 0x93, - 0xd1, 0x34, 0xd3, 0x93, 0xd1, 0x34, 0xd3, 0x93, 0xd1, 0x34, 0xd4, 0x93, - 0xd1, 0x34, 0xd4, 0x93, 0xd1, 0x34, 0xd4, 0x93, 0xd1, 0x34, 0xd4, 0x93, - 0xd1, 0x34, 0xd5, 0x93, 0xd1, 0x34, 0xd5, 0x93, 0xd1, 0x34, 0xd5, 0x94, - 0xd4, 0x34, 0xd6, 0x94, 0xd3, 0x34, 0xd6, 0x94, 0xd4, 0x34, 0xd6, 0x94, - 0xd3, 0x34, 0xd6, 0x94, 0xd4, 0x34, 0xd7, 0x94, 0xd3, 0x34, 0xd7, 0x94, - 0xd4, 0x34, 0xd7, 0x94, 0xd3, 0x34, 0xd7, 0x94, 0xd4, 0x34, 0xd8, 0x95, - 0xd6, 0x34, 0xd8, 0x95, 0xd6, 0x34, 0xd8, 0x95, 0xd6, 0x34, 0xd9, 0x95, - 0xd6, 0x34, 0xd9, 0x95, 0xd6, 0x34, 0xd9, 0x95, 0xd6, 0x34, 0xd9, 0x95, - 0xd6, 0x34, 0xda, 0x95, 0xd6, 0x34, 0xda, 0x95, 0xd6, 0x34, 0xda, 0x95, - 0xd6, 0x34, 0xda, 0x96, 0xd9, 0x34, 0xdb, 0x95, 0xd6, 0x34, 0xdb, 0x96, - 0xd9, 0x34, 0xdb, 0x96, 0xd9, 0x34, 0xdb, 0x96, 0xd9, 0x34, 0xdc, 0x96, - 0xd9, 0x34, 0xdc, 0x96, 0xd9, 0x34, 0xdc, 0x96, 0xd9, 0x34, 0xdd, 0x96, - 0xd9, 0x34, 0xdd, 0x97, 0xdb, 0x34, 0xdd, 0x96, 0xd9, 0x34, 0xdd, 0x97, - 0xdb, 0x34, 0xde, 0x97, 0xdb, 0x34, 0xde, 0x97, 0xdb, 0x34, 0xde, 0x97, - 0xdb, 0x34, 0xde, 0x97, 0xdb, 0x34, 0xdf, 0x97, 0xdb, 0x34, 0xdf, 0x97, - 0xdb, 0x34, 0xdf, 0x97, 0xdb, 0x34, 0xdf, 0x97, 0xdb, 0x34, 0xe0, 0x98, - 0xde, 0x34, 0xe0, 0x98, 0xde, 0x34, 0xe0, 0x98, 0xde, 0x34, 0xe1, 0x98, - 0xde, 0x34, 0xe1, 0x98, 0xde, 0x34, 0xe1, 0x98, 0xde, 0x34, 0xe1, 0x98, - 0xde, 0x34, 0xe2, 0x98, 0xde, 0x34, 0xe2, 0x98, 0xde, 0x34, 0xe2, 0x98, - 0xde, 0x34, 0xe2, 0x98, 0xe0, 0x34, 0xe3, 0x98, 0xde, 0x34, 0xe3, 0x98, - 0xe0, 0x34, 0xe3, 0x98, 0xe0, 0x34, 0xe3, 0x98, 0xe0, 0x34, 0xe4, 0x98, - 0xe0, 0x34, 0xe4, 0x98, 0xe0, 0x34, 0xe4, 0x98, 0xe0, 0x34, 0xe4, 0x98, - 0xe0, 0x34, 0xe5, 0x99, 0xe3, 0x34, 0xe5, 0x98, 0xe0, 0x34, 0xe5, 0x99, - 0xe3, 0x34, 0xe5, 0x99, 0xe2, 0x34, 0xe6, 0x99, 0xe3, 0x34, 0xe6, 0x99, - 0xe2, 0x34, 0xe6, 0x99, 0xe3, 0x34, 0xe6, 0x99, 0xe2, 0x34, 0xe7, 0x99, - 0xe3, 0x34, 0xe7, 0x9a, 0xe5, 0x34, 0xe7, 0x9a, 0xe5, 0x34, 0xe7, 0x9a, - 0xe5, 0x34, 0xe8, 0x9a, 0xe5, 0x34, 0xe8, 0x9a, 0xe5, 0x34, 0xe8, 0x9a, - 0xe5, 0x34, 0xe8, 0x9a, 0xe5, 0x34, 0xe9, 0x9a, 0xe5, 0x34, 0xe9, 0x9a, - 0xe5, 0x34, 0xe9, 0x9a, 0xe5, 0x34, 0xe9, 0x9b, 0xe7, 0x34, 0xea, 0x9a, - 0xe5, 0x34, 0xea, 0x9b, 0xe7, 0x34, 0xea, 0x9b, 0xe7, 0x34, 0xea, 0x9b, - 0xe7, 0x34, 0xeb, 0x9b, 0xe7, 0x34, 0xeb, 0x9b, 0xe7, 0x34, 0xeb, 0x9b, - 0xe7, 0x34, 0xeb, 0x9b, 0xe7, 0x34, 0xec, 0x9c, 0xea, 0x34, 0xec, 0x9c, - 0xea, 0x34, 0xec, 0x9c, 0xea, 0x34, 0xec, 0x9c, 0xea, 0x34, 0xec, 0x9c, - 0xea, 0x34, 0xed, 0x9c, 0xea, 0x34, 0xed, 0x9c, 0xea, 0x34, 0xed, 0x9c, - 0xea, 0x34, 0xed, 0x9c, 0xea, 0x34, 0xee, 0x9c, 0xea, 0x34, 0xee, 0x9c, - 0xea, 0x34, 0xee, 0x9c, 0xea, 0x34, 0xee, 0x9d, 0xec, 0x34, 0xef, 0x9c, - 0xea, 0x34, 0xef, 0x9d, 0xec, 0x34, 0xef, 0x9d, 0xec, 0x34, 0xef, 0x9d, - 0xec, 0x34, 0xf0, 0x9d, 0xec, 0x34, 0xf0, 0x9d, 0xec, 0x34, 0xf0, 0x9d, - 0xec, 0x34, 0xf0, 0x9d, 0xec, 0x34, 0xf1, 0x9d, 0xee, 0x34, 0xf1, 0x9d, - 0xec, 0x34, 0xf1, 0x9d, 0xee, 0x34, 0xf1, 0x9d, 0xee, 0x34, 0xf2, 0x9d, - 0xee, 0x34, 0xf2, 0x9d, 0xee, 0x34, 0xf2, 0x9d, 0xee, 0x34, 0xf2, 0x9d, - 0xee, 0x34, 0xf2, 0x9d, 0xee, 0x34, 0xf3, 0x9e, 0xf0, 0x34, 0xf3, 0x9e, - 0xf1, 0x34, 0xf3, 0x9e, 0xf0, 0x34, 0xf3, 0x9e, 0xf1, 0x34, 0xf4, 0x9e, - 0xf0, 0x34, 0xf4, 0x9e, 0xf1, 0x34, 0xf4, 0x9e, 0xf0, 0x34, 0xf4, 0x9e, - 0xf1, 0x34, 0xf5, 0x9e, 0xf0, 0x34, 0xf5, 0x9e, 0xf1, 0x34, 0xf5, 0x9f, - 0xf3, 0x34, 0xf5, 0x9e, 0xf1, 0x34, 0xf5, 0x9f, 0xf3, 0x34, 0xf6, 0x9e, - 0xf1, 0x34, 0xf6, 0x9f, 0xf3, 0x34, 0xf6, 0x9f, 0xf2, 0x34, 0xf6, 0x9f, - 0xf3, 0x34, 0xf7, 0x9f, 0xf2, 0x34, 0xf7, 0x9f, 0xf3, 0x34, 0xf7, 0x9f, - 0xf2, 0x34, 0xf7, 0x9f, 0xf3, 0x34, 0xf8, 0xa0, 0xf5, 0x34, 0xf8, 0x9f, - 0xf3, 0x34, 0xf8, 0xa0, 0xf5, 0x34, 0xf8, 0xa0, 0xf5, 0x34, 0xf8, 0xa0, - 0xf5, 0x34, 0xf9, 0xa0, 0xf5, 0x34, 0xf9, 0xa0, 0xf5, 0x34, 0xf9, 0xa0, - 0xf5, 0x34, 0xf9, 0xa0, 0xf5, 0x34, 0xfa, 0xa1, 0xf7, 0x34, 0xfa, 0xa1, - 0xf7, 0x34, 0xfa, 0xa1, 0xf7, 0x34, 0xfa, 0xa1, 0xf7, 0x34, 0xfa, 0xa1, - 0xf7, 0x34, 0xfb, 0xa1, 0xf7, 0x34, 0xfb, 0xa1, 0xf7, 0x34, 0xfb, 0xa1, - 0xf7, 0x34, 0xfb, 0xa1, 0xf7, 0x34, 0xfc, 0xa1, 0xf7, 0x34, 0xfc, 0xa1, - 0xf9, 0x34, 0xfc, 0xa1, 0xf7, 0x34, 0xfc, 0xa1, 0xf9, 0x34, 0xfc, 0xa1, - 0xf9, 0x34, 0xfd, 0xa1, 0xf9, 0x34, 0xfd, 0xa1, 0xf9, 0x34, 0xfd, 0xa1, - 0xf9, 0x34, 0xfd, 0xa1, 0xf9, 0x34, 0xfe, 0xa1, 0xf9, 0x34, 0xfe, 0xa2, - 0xfb, 0x34, 0xfe, 0xa1, 0xf9, 0x34, 0xfe, 0xa2, 0xfb, 0x34, 0xfe, 0xa1, - 0xf9, 0x34, 0xff, 0xa2, 0xfb, 0x34, 0xff, 0xa2, 0xfb, 0x34, 0x03, 0x89, - 0x9a, 0x34, 0x0a, 0x8c, 0x9a, 0x34, 0x0f, 0x89, 0x9a, 0x34, 0x14, 0x8c, - 0x9a, 0x34, 0x17, 0x89, 0x9a, 0x34, 0x1b, 0x8c, 0x9a, 0x34, 0x1e, 0x89, - 0x9a, 0x34, 0x20, 0x8c, 0x9a, 0x34, 0x23, 0x89, 0x9a, 0x34, 0x25, 0x8c, - 0x9a, 0x34, 0x27, 0x89, 0x9a, 0x34, 0x29, 0x8c, 0x9a, 0x34, 0x2b, 0x89, - 0x9a, 0x34, 0x2d, 0x8c, 0x9a, 0x34, 0x2f, 0x89, 0x9a, 0x34, 0x31, 0x8c, - 0x9a, 0x34, 0x32, 0x89, 0x9a, 0x34, 0x34, 0x8c, 0x9a, 0x34, 0x35, 0x89, - 0x9a, 0x34, 0x37, 0x8c, 0x9a, 0x34, 0x38, 0x89, 0x9a, 0x34, 0x3a, 0x8c, - 0x9a, 0x34, 0x3b, 0x89, 0x9a, 0x34, 0x3c, 0x86, 0x9b, 0x34, 0x3e, 0x89, - 0x9a, 0x34, 0x3f, 0x86, 0x9b, 0x34, 0x40, 0x89, 0x9a, 0x34, 0x42, 0x86, - 0x9b, 0x34, 0x43, 0x89, 0x9a, 0x34, 0x44, 0x86, 0x9b, 0x34, 0x45, 0x89, - 0x9a, 0x34, 0x46, 0x86, 0x9b, 0x34, 0x47, 0x89, 0x9a, 0x34, 0x48, 0x86, - 0x9b, 0x34, 0x49, 0x89, 0x9a, 0x34, 0x4a, 0x86, 0x9b, 0x34, 0x4b, 0x89, - 0x9a, 0x34, 0x4c, 0x86, 0x9b, 0x34, 0x4d, 0x89, 0x9a, 0x34, 0x4e, 0x86, - 0x9b, 0x34, 0x4f, 0x89, 0x9a, 0x34, 0x50, 0x86, 0x9b, 0x34, 0x51, 0x89, - 0x9a, 0x34, 0x52, 0x86, 0x9b, 0x34, 0x53, 0x89, 0x9a, 0x34, 0x54, 0x86, - 0x9b, 0x34, 0x55, 0x89, 0x9a, 0x34, 0x56, 0x86, 0x9b, 0x34, 0x57, 0x89, - 0x9a, 0x34, 0x58, 0x86, 0x9b, 0x34, 0x58, 0x89, 0x9a, 0x34, 0x59, 0x86, - 0x9b, 0x34, 0x5a, 0x89, 0x9a, 0x34, 0x5b, 0x86, 0x9b, 0x34, 0x5c, 0x89, - 0x9a, 0x34, 0x5d, 0x86, 0x9b, 0x34, 0x5d, 0x89, 0x9a, 0x34, 0x5e, 0x86, - 0x9b, 0x34, 0x5f, 0x89, 0x9a, 0x34, 0x60, 0x86, 0x9b, 0x34, 0x60, 0x83, - 0x9b, 0x34, 0x61, 0x86, 0x9b, 0x34, 0x62, 0x83, 0x9b, 0x34, 0x63, 0x86, - 0x9b, 0x34, 0x63, 0x83, 0x9b, 0x34, 0x64, 0x86, 0x9b, 0x34, 0x65, 0x83, - 0x9b, 0x34, 0x66, 0x86, 0x9b, 0x34, 0x66, 0x83, 0x9b, 0x34, 0x67, 0x86, - 0x9b, 0x34, 0x68, 0x83, 0x9b, 0x34, 0x68, 0x86, 0x9b, 0x34, 0x69, 0x83, - 0x9b, 0x34, 0x6a, 0x86, 0x9b, 0x34, 0x6a, 0x83, 0x9b, 0x34, 0x6b, 0x86, - 0x9b, 0x34, 0x6c, 0x83, 0x9b, 0x34, 0x6c, 0x86, 0x9b, 0x34, 0x6d, 0x83, - 0x9b, 0x34, 0x6e, 0x86, 0x9b, 0x34, 0x6e, 0x83, 0x9b, 0x34, 0x6f, 0x86, - 0x9b, 0x34, 0x70, 0x83, 0x9b, 0x34, 0x70, 0x86, 0x9b, 0x34, 0x71, 0x83, - 0x9b, 0x34, 0x72, 0x86, 0x9b, 0x34, 0x72, 0x83, 0x9b, 0x34, 0x73, 0x86, - 0x9b, 0x34, 0x73, 0x83, 0x9b, 0x34, 0x74, 0x86, 0x9b, 0x34, 0x75, 0x83, - 0x9b, 0x34, 0x75, 0x86, 0x9b, 0x34, 0x76, 0x83, 0x9b, 0x34, 0x76, 0x86, - 0x9b, 0x34, 0x77, 0x83, 0x9b, 0x34, 0x78, 0x86, 0x9b, 0x34, 0x78, 0x83, - 0x9b, 0x34, 0x79, 0x86, 0x9b, 0x34, 0x79, 0x83, 0x9b, 0x34, 0x7a, 0x86, - 0x9b, 0x34, 0x7a, 0x83, 0x9b, 0x34, 0x7b, 0x86, 0x9b, 0x34, 0x7c, 0x83, - 0x9b, 0x34, 0x7c, 0x86, 0x9b, 0x34, 0x7d, 0x83, 0x9b, 0x34, 0x7d, 0x86, - 0x9b, 0x34, 0x7e, 0x83, 0x9b, 0x34, 0x7e, 0x86, 0x9b, 0x34, 0x7f, 0x83, - 0x9b, 0x34, 0x7f, 0x86, 0x9b, 0x34, 0x80, 0x83, 0x9b, 0x34, 0x81, 0x86, - 0x9b, 0x34, 0x81, 0x83, 0x9b, 0x34, 0x82, 0x86, 0x9b, 0x34, 0x82, 0x83, - 0x9b, 0x34, 0x83, 0x86, 0x9b, 0x34, 0x83, 0x83, 0x9b, 0x34, 0x84, 0x86, - 0x9b, 0x34, 0x84, 0x83, 0x9b, 0x34, 0x85, 0x86, 0x9b, 0x34, 0x85, 0x83, - 0x9b, 0x34, 0x86, 0x86, 0x9b, 0x34, 0x86, 0x83, 0x9b, 0x34, 0x87, 0x86, - 0x9b, 0x34, 0x87, 0x83, 0x9b, 0x34, 0x88, 0x83, 0x9c, 0x34, 0x88, 0x83, - 0x9b, 0x34, 0x89, 0x83, 0x9c, 0x34, 0x89, 0x83, 0x9b, 0x34, 0x8a, 0x83, - 0x9c, 0x34, 0x8a, 0x83, 0x9b, 0x34, 0x8b, 0x83, 0x9c, 0x34, 0x8b, 0x83, - 0x9b, 0x34, 0x8c, 0x83, 0x9c, 0x34, 0x8c, 0x83, 0x9b, 0x34, 0x8d, 0x83, - 0x9c, 0x34, 0x8d, 0x83, 0x9b, 0x34, 0x8e, 0x83, 0x9c, 0x34, 0x8e, 0x83, - 0x9b, 0x34, 0x8e, 0x83, 0x9c, 0x34, 0x8f, 0x83, 0x9b, 0x34, 0x8f, 0x83, - 0x9c, 0x34, 0x90, 0x83, 0x9b, 0x34, 0x90, 0x83, 0x9c, 0x34, 0x91, 0x83, - 0x9b, 0x34, 0x91, 0x83, 0x9c, 0x34, 0x92, 0x83, 0x9b, 0x34, 0x92, 0x83, - 0x9c, 0x34, 0x93, 0x83, 0x9b, 0x34, 0x93, 0x83, 0x9c, 0x34, 0x94, 0x83, - 0x9b, 0x34, 0x94, 0x83, 0x9c, 0x34, 0x94, 0x83, 0x9b, 0x34, 0x95, 0x83, - 0x9c, 0x34, 0x95, 0x83, 0x9b, 0x34, 0x96, 0x83, 0x9c, 0x34, 0x96, 0x83, - 0x9b, 0x34, 0x97, 0x83, 0x9c, 0x34, 0x97, 0x83, 0x9b, 0x34, 0x98, 0x83, - 0x9c, 0x34, 0x98, 0x83, 0x9b, 0x34, 0x98, 0x83, 0x9c, 0x34, 0x99, 0x83, - 0x9b, 0x34, 0x99, 0x83, 0x9c, 0x34, 0x9a, 0x83, 0x9b, 0x34, 0x9a, 0x83, - 0x9c, 0x34, 0x9a, 0x83, 0x9b, 0x34, 0x9b, 0x83, 0x9c, 0x34, 0x9b, 0x83, - 0x9b, 0x34, 0x9c, 0x83, 0x9c, 0x34, 0x9c, 0x83, 0x9c, 0x34, 0x9d, 0x83, - 0x9d, 0x34, 0x9d, 0x83, 0x9c, 0x34, 0x9d, 0x83, 0x9d, 0x34, 0x9e, 0x83, - 0x9c, 0x34, 0x9e, 0x83, 0x9d, 0x34, 0x9f, 0x83, 0x9c, 0x34, 0x9f, 0x83, - 0x9d, 0x34, 0x9f, 0x84, 0x9f, 0x34, 0xa0, 0x84, 0xa0, 0x34, 0xa0, 0x84, - 0xa0, 0x34, 0xa1, 0x84, 0xa1, 0x34, 0xa1, 0x84, 0xa0, 0x34, 0xa1, 0x84, - 0xa1, 0x34, 0xa2, 0x84, 0xa0, 0x34, 0xa2, 0x84, 0xa1, 0x34, 0xa3, 0x84, - 0xa0, 0x34, 0xa3, 0x84, 0xa1, 0x34, 0xa3, 0x85, 0xa3, 0x34, 0xa4, 0x85, - 0xa4, 0x34, 0xa4, 0x85, 0xa4, 0x34, 0xa5, 0x85, 0xa4, 0x34, 0xa5, 0x85, - 0xa4, 0x34, 0xa5, 0x85, 0xa4, 0x34, 0xa6, 0x85, 0xa4, 0x34, 0xa6, 0x85, - 0xa4, 0x34, 0xa6, 0x85, 0xa4, 0x34, 0xa7, 0x85, 0xa4, 0x34, 0xa7, 0x85, - 0xa4, 0x34, 0xa8, 0x86, 0xa8, 0x34, 0xa8, 0x86, 0xa7, 0x34, 0xa8, 0x86, - 0xa8, 0x34, 0xa9, 0x86, 0xa7, 0x34, 0xa9, 0x86, 0xa8, 0x34, 0xaa, 0x86, - 0xa7, 0x34, 0xaa, 0x86, 0xa8, 0x34, 0xaa, 0x86, 0xa7, 0x34, 0xab, 0x86, - 0xa8, 0x34, 0xab, 0x87, 0xab, 0x34, 0xab, 0x87, 0xab, 0x34, 0xac, 0x87, - 0xab, 0x34, 0xac, 0x87, 0xab, 0x34, 0xac, 0x87, 0xab, 0x34, 0xad, 0x87, - 0xab, 0x34, 0xad, 0x87, 0xab, 0x34, 0xae, 0x87, 0xab, 0x34, 0xae, 0x87, - 0xab, 0x34, 0xae, 0x87, 0xab, 0x34, 0xaf, 0x88, 0xaf, 0x34, 0xaf, 0x88, - 0xae, 0x34, 0xaf, 0x88, 0xaf, 0x34, 0xb0, 0x88, 0xae, 0x34, 0xb0, 0x88, - 0xaf, 0x34, 0xb0, 0x88, 0xae, 0x34, 0xb1, 0x88, 0xaf, 0x34, 0xb1, 0x88, - 0xae, 0x34, 0xb2, 0x88, 0xaf, 0x34, 0xb2, 0x89, 0xb2, 0x34, 0xb2, 0x89, - 0xb2, 0x34, 0xb3, 0x89, 0xb2, 0x34, 0xb3, 0x89, 0xb2, 0x34, 0xb3, 0x89, - 0xb2, 0x34, 0xb4, 0x89, 0xb2, 0x34, 0xb4, 0x89, 0xb2, 0x34, 0xb4, 0x89, - 0xb2, 0x34, 0xb5, 0x89, 0xb2, 0x34, 0xb5, 0x89, 0xb2, 0x34, 0xb5, 0x89, - 0xb2, 0x34, 0xb6, 0x89, 0xb2, 0x34, 0xb6, 0x8a, 0xb5, 0x34, 0xb6, 0x8a, - 0xb5, 0x34, 0xb7, 0x8a, 0xb5, 0x34, 0xb7, 0x8a, 0xb5, 0x34, 0xb7, 0x8a, - 0xb5, 0x34, 0xb8, 0x8a, 0xb5, 0x34, 0xb8, 0x8a, 0xb5, 0x34, 0xb8, 0x8a, - 0xb5, 0x34, 0xb9, 0x8a, 0xb5, 0x34, 0xb9, 0x8b, 0xb8, 0x34, 0xb9, 0x8b, - 0xb8, 0x34, 0xba, 0x8b, 0xb8, 0x34, 0xba, 0x8b, 0xb8, 0x34, 0xba, 0x8b, - 0xb8, 0x34, 0xbb, 0x8b, 0xb8, 0x34, 0xbb, 0x8b, 0xb8, 0x34, 0xbb, 0x8b, - 0xb8, 0x34, 0xbc, 0x8b, 0xb8, 0x34, 0xbc, 0x8c, 0xbb, 0x34, 0xbc, 0x8c, - 0xbc, 0x34, 0xbd, 0x8c, 0xbb, 0x34, 0xbd, 0x8c, 0xbc, 0x34, 0xbd, 0x8c, - 0xbb, 0x34, 0xbe, 0x8c, 0xbc, 0x34, 0xbe, 0x8c, 0xbb, 0x34, 0xbe, 0x8c, - 0xbc, 0x34, 0xbf, 0x8c, 0xbb, 0x34, 0xbf, 0x8c, 0xbc, 0x34, 0xbf, 0x8d, - 0xbf, 0x34, 0xc0, 0x8d, 0xbe, 0x34, 0xc0, 0x8d, 0xbf, 0x34, 0xc0, 0x8d, - 0xbe, 0x34, 0xc1, 0x8d, 0xbf, 0x34, 0xc1, 0x8d, 0xbe, 0x34, 0xc1, 0x8d, - 0xbf, 0x34, 0xc1, 0x8d, 0xbe, 0x34, 0xc2, 0x8d, 0xbf, 0x34, 0xc2, 0x8e, - 0xc1, 0x34, 0xc2, 0x8d, 0xbf, 0x34, 0xc3, 0x8e, 0xc1, 0x34, 0xc3, 0x8e, - 0xc1, 0x34, 0xc3, 0x8e, 0xc1, 0x34, 0xc4, 0x8e, 0xc1, 0x34, 0xc4, 0x8e, - 0xc1, 0x34, 0xc4, 0x8e, 0xc1, 0x34, 0xc5, 0x8e, 0xc1, 0x34, 0xc5, 0x8e, - 0xc1, 0x34, 0xc5, 0x8e, 0xc1, 0x34, 0xc6, 0x8f, 0xc4, 0x34, 0xc6, 0x8f, - 0xc5, 0x34, 0xc6, 0x8f, 0xc4, 0x34, 0xc6, 0x8f, 0xc5, 0x34, 0xc7, 0x8f, - 0xc4, 0x34, 0xc7, 0x8f, 0xc5, 0x34, 0xc7, 0x8f, 0xc4, 0x34, 0xc8, 0x8f, - 0xc5, 0x34, 0xc8, 0x8f, 0xc4, 0x34, 0xc8, 0x8f, 0xc5, 0x34, 0xc9, 0x90, - 0xc7, 0x34, 0xc9, 0x90, 0xc7, 0x34, 0xc9, 0x90, 0xc7, 0x34, 0xc9, 0x90, - 0xc7, 0x34, 0xca, 0x90, 0xc7, 0x34, 0xca, 0x90, 0xc7, 0x34, 0xca, 0x90, - 0xc7, 0x34, 0xcb, 0x90, 0xc7, 0x34, 0xcb, 0x90, 0xc7, 0x34, 0xcb, 0x91, - 0xca, 0x34, 0xcc, 0x91, 0xca, 0x34, 0xcc, 0x91, 0xca, 0x34, 0xcc, 0x91, - 0xca, 0x34, 0xcc, 0x91, 0xca, 0x34, 0xcd, 0x91, 0xca, 0x34, 0xcd, 0x91, - 0xca, 0x34, 0xcd, 0x91, 0xca, 0x34, 0xce, 0x91, 0xca, 0x34, 0xce, 0x92, - 0xcd, 0x34, 0xce, 0x92, 0xcd, 0x34, 0xce, 0x92, 0xcd, 0x34, 0xcf, 0x92, - 0xcd, 0x34, 0xcf, 0x92, 0xcd, 0x34, 0xcf, 0x92, 0xcd, 0x34, 0xd0, 0x92, - 0xcd, 0x34, 0xd0, 0x92, 0xcd, 0x34, 0xd0, 0x92, 0xcd, 0x34, 0xd0, 0x92, - 0xcd, 0x34, 0xd1, 0x93, 0xd0, 0x34, 0xd1, 0x92, 0xcd, 0x34, 0xd1, 0x93, - 0xd0, 0x34, 0xd2, 0x93, 0xcf, 0x34, 0xd2, 0x93, 0xd0, 0x34, 0xd2, 0x93, - 0xcf, 0x34, 0xd2, 0x93, 0xd0, 0x34, 0xd3, 0x93, 0xcf, 0x34, 0xd3, 0x93, - 0xd0, 0x34, 0xd3, 0x94, 0xd2, 0x34, 0xd4, 0x94, 0xd2, 0x34, 0xd4, 0x94, - 0xd2, 0x34, 0xd4, 0x94, 0xd2, 0x34, 0xd4, 0x94, 0xd2, 0x34, 0xd5, 0x94, - 0xd2, 0x34, 0xd5, 0x94, 0xd2, 0x34, 0xd5, 0x94, 0xd2, 0x34, 0xd6, 0x94, - 0xd2, 0x34, 0xd6, 0x94, 0xd2, 0x34, 0xd6, 0x94, 0xd2, 0x34, 0xd6, 0x94, - 0xd2, 0x34, 0xd7, 0x94, 0xd5, 0x34, 0xd7, 0x94, 0xd5, 0x34, 0xd7, 0x94, - 0xd5, 0x34, 0xd7, 0x94, 0xd5, 0x34, 0xd8, 0x94, 0xd5, 0x34, 0xd8, 0x94, - 0xd5, 0x34, 0xd8, 0x94, 0xd5, 0x34, 0xd9, 0x94, 0xd5, 0x34, 0xd9, 0x94, - 0xd5, 0x34, 0xd9, 0x95, 0xd7, 0x34, 0xd9, 0x94, 0xd5, 0x34, 0xda, 0x95, - 0xd7, 0x34, 0xda, 0x95, 0xd7, 0x34, 0xda, 0x95, 0xd7, 0x34, 0xda, 0x95, - 0xd7, 0x34, 0xdb, 0x95, 0xd7, 0x34, 0xdb, 0x95, 0xd7, 0x34, 0xdb, 0x95, - 0xd7, 0x34, 0xdb, 0x96, 0xda, 0x34, 0xdc, 0x96, 0xda, 0x34, 0xdc, 0x96, - 0xda, 0x34, 0xdc, 0x96, 0xda, 0x34, 0xdd, 0x96, 0xda, 0x34, 0xdd, 0x96, - 0xda, 0x34, 0xdd, 0x96, 0xda, 0x34, 0xdd, 0x96, 0xda, 0x34, 0xde, 0x96, - 0xda, 0x34, 0xde, 0x96, 0xda, 0x34, 0xde, 0x97, 0xdd, 0x34, 0xde, 0x96, - 0xda, 0x34, 0xdf, 0x97, 0xdd, 0x34, 0xdf, 0x97, 0xdc, 0x34, 0xdf, 0x97, - 0xdd, 0x34, 0xdf, 0x97, 0xdc, 0x34, 0xe0, 0x97, 0xdd, 0x34, 0xe0, 0x97, - 0xdc, 0x34, 0xe0, 0x97, 0xdd, 0x34, 0xe1, 0x97, 0xdc, 0x34, 0xe1, 0x97, - 0xdd, 0x34, 0xe1, 0x98, 0xdf, 0x34, 0xe1, 0x98, 0xdf, 0x34, 0xe2, 0x98, - 0xdf, 0x34, 0xe2, 0x98, 0xdf, 0x34, 0xe2, 0x98, 0xdf, 0x34, 0xe2, 0x98, - 0xdf, 0x34, 0xe3, 0x98, 0xdf, 0x34, 0xe3, 0x98, 0xdf, 0x34, 0xe3, 0x98, - 0xdf, 0x34, 0xe3, 0x99, 0xe1, 0x34, 0xe4, 0x99, 0xe2, 0x34, 0xe4, 0x99, - 0xe1, 0x34, 0xe4, 0x99, 0xe2, 0x34, 0xe4, 0x99, 0xe1, 0x34, 0xe5, 0x99, - 0xe2, 0x34, 0xe5, 0x99, 0xe1, 0x34, 0xe5, 0x99, 0xe2, 0x34, 0xe5, 0x99, - 0xe1, 0x34, 0xe6, 0x99, 0xe2, 0x34, 0xe6, 0x9a, 0xe4, 0x34, 0xe6, 0x99, - 0xe2, 0x34, 0xe6, 0x9a, 0xe4, 0x34, 0xe7, 0x9a, 0xe4, 0x34, 0xe7, 0x9a, - 0xe4, 0x34, 0xe7, 0x9a, 0xe4, 0x34, 0xe7, 0x9a, 0xe4, 0x34, 0xe8, 0x9a, - 0xe4, 0x34, 0xe8, 0x9a, 0xe4, 0x34, 0xe8, 0x9a, 0xe6, 0x34, 0xe8, 0x9a, - 0xe4, 0x34, 0xe9, 0x9a, 0xe6, 0x34, 0xe9, 0x9a, 0xe6, 0x34, 0xe9, 0x9a, - 0xe6, 0x34, 0xe9, 0x9a, 0xe6, 0x34, 0xea, 0x9a, 0xe6, 0x34, 0xea, 0x9a, - 0xe6, 0x34, 0xea, 0x9a, 0xe6, 0x34, 0xea, 0x9b, 0xe8, 0x34, 0xeb, 0x9b, - 0xe9, 0x34, 0xeb, 0x9b, 0xe8, 0x34, 0xeb, 0x9b, 0xe9, 0x34, 0xeb, 0x9b, - 0xe8, 0x34, 0xec, 0x9b, 0xe9, 0x34, 0xec, 0x9b, 0xe8, 0x34, 0xec, 0x9b, - 0xe9, 0x34, 0xec, 0x9b, 0xe8, 0x34, 0xec, 0x9b, 0xe9, 0x34, 0xed, 0x9c, - 0xeb, 0x34, 0xed, 0x9b, 0xe9, 0x34, 0xed, 0x9c, 0xeb, 0x34, 0xed, 0x9b, - 0xe9, 0x34, 0xee, 0x9c, 0xeb, 0x34, 0xee, 0x9c, 0xeb, 0x34, 0xee, 0x9c, - 0xeb, 0x34, 0xee, 0x9c, 0xeb, 0x34, 0xef, 0x9c, 0xeb, 0x34, 0xef, 0x9c, - 0xeb, 0x34, 0xef, 0x9c, 0xeb, 0x34, 0xef, 0x9d, 0xed, 0x34, 0xf0, 0x9d, - 0xed, 0x34, 0xf0, 0x9d, 0xed, 0x34, 0xf0, 0x9d, 0xed, 0x34, 0xf0, 0x9d, - 0xed, 0x34, 0xf1, 0x9d, 0xed, 0x34, 0xf1, 0x9d, 0xed, 0x34, 0xf1, 0x9d, - 0xed, 0x34, 0xf1, 0x9d, 0xed, 0x34, 0xf2, 0x9d, 0xed, 0x34, 0xf2, 0x9e, - 0xef, 0x34, 0xf2, 0x9d, 0xed, 0x34, 0xf2, 0x9e, 0xef, 0x34, 0xf2, 0x9e, - 0xef, 0x34, 0xf3, 0x9e, 0xef, 0x34, 0xf3, 0x9e, 0xef, 0x34, 0xf3, 0x9e, - 0xef, 0x34, 0xf3, 0x9e, 0xef, 0x34, 0xf4, 0x9e, 0xef, 0x34, 0xf4, 0x9f, - 0xf2, 0x34, 0xf4, 0x9e, 0xef, 0x34, 0xf4, 0x9f, 0xf2, 0x34, 0xf5, 0x9f, - 0xf1, 0x34, 0xf5, 0x9f, 0xf2, 0x34, 0xf5, 0x9f, 0xf1, 0x34, 0xf5, 0x9f, - 0xf2, 0x34, 0xf5, 0x9f, 0xf1, 0x34, 0xf6, 0x9f, 0xf2, 0x34, 0xf6, 0x9f, - 0xf4, 0x34, 0xf6, 0x9f, 0xf4, 0x34, 0xf6, 0x9f, 0xf4, 0x34, 0xf7, 0x9f, - 0xf4, 0x34, 0xf7, 0x9f, 0xf4, 0x34, 0xf7, 0x9f, 0xf4, 0x34, 0xf7, 0x9f, - 0xf4, 0x34, 0xf8, 0x9f, 0xf4, 0x34, 0xf8, 0x9f, 0xf4, 0x34, 0xf8, 0x9f, - 0xf4, 0x34, 0xf8, 0x9f, 0xf4, 0x34, 0xf8, 0x9f, 0xf4, 0x34, 0xf9, 0xa0, - 0xf6, 0x34, 0xf9, 0x9f, 0xf4, 0x34, 0xf9, 0xa0, 0xf6, 0x34, 0xf9, 0xa0, - 0xf6, 0x34, 0xfa, 0xa0, 0xf6, 0x34, 0xfa, 0xa0, 0xf6, 0x34, 0xfa, 0xa0, - 0xf6, 0x34, 0xfa, 0xa0, 0xf6, 0x34, 0xfa, 0xa0, 0xf6, 0x34, 0xfb, 0xa1, - 0xf8, 0x34, 0xfb, 0xa0, 0xf6, 0x34, 0xfb, 0xa1, 0xf8, 0x34, 0xfb, 0xa1, - 0xf8, 0x34, 0xfc, 0xa1, 0xf8, 0x34, 0xfc, 0xa1, 0xf8, 0x34, 0xfc, 0xa1, - 0xf8, 0x34, 0xfc, 0xa1, 0xf8, 0x34, 0xfc, 0xa1, 0xf8, 0x34, 0xfd, 0xa2, - 0xfa, 0x34, 0xfd, 0xa2, 0xfa, 0x34, 0xfd, 0xa2, 0xfa, 0x34, 0xfd, 0xa2, - 0xfa, 0x34, 0xfe, 0xa2, 0xfa, 0x34, 0xfe, 0xa2, 0xfa, 0x34, 0xfe, 0xa2, - 0xfa, 0x34, 0xfe, 0xa2, 0xfa, 0x34, 0xfe, 0xa2, 0xfa, 0x34, 0xff, 0xa2, - 0xfa, 0x34, 0xff, 0xa2, 0xfa, 0x34, 0x03, 0x89, 0x9a, 0x35, 0x0a, 0x8d, - 0x9a, 0x35, 0x0f, 0x89, 0x9a, 0x35, 0x14, 0x8d, 0x9a, 0x35, 0x17, 0x89, - 0x9a, 0x35, 0x1b, 0x8d, 0x9a, 0x35, 0x1e, 0x89, 0x9a, 0x35, 0x20, 0x86, - 0x9b, 0x35, 0x23, 0x89, 0x9a, 0x35, 0x25, 0x86, 0x9b, 0x35, 0x27, 0x89, - 0x9a, 0x35, 0x29, 0x86, 0x9b, 0x35, 0x2b, 0x89, 0x9a, 0x35, 0x2d, 0x86, - 0x9b, 0x35, 0x2f, 0x89, 0x9a, 0x35, 0x31, 0x86, 0x9b, 0x35, 0x32, 0x89, - 0x9a, 0x35, 0x34, 0x86, 0x9b, 0x35, 0x35, 0x89, 0x9a, 0x35, 0x37, 0x86, - 0x9b, 0x35, 0x38, 0x89, 0x9a, 0x35, 0x3a, 0x86, 0x9b, 0x35, 0x3b, 0x89, - 0x9a, 0x35, 0x3c, 0x86, 0x9b, 0x35, 0x3e, 0x89, 0x9a, 0x35, 0x3f, 0x86, - 0x9b, 0x35, 0x40, 0x89, 0x9a, 0x35, 0x42, 0x86, 0x9b, 0x35, 0x43, 0x89, - 0x9a, 0x35, 0x44, 0x86, 0x9b, 0x35, 0x45, 0x89, 0x9a, 0x35, 0x46, 0x86, - 0x9b, 0x35, 0x47, 0x89, 0x9a, 0x35, 0x48, 0x86, 0x9b, 0x35, 0x49, 0x89, - 0x9a, 0x35, 0x4a, 0x86, 0x9b, 0x35, 0x4b, 0x89, 0x9a, 0x35, 0x4c, 0x86, - 0x9b, 0x35, 0x4d, 0x89, 0x9a, 0x35, 0x4e, 0x86, 0x9b, 0x35, 0x4f, 0x89, - 0x9a, 0x35, 0x50, 0x86, 0x9b, 0x35, 0x51, 0x89, 0x9a, 0x35, 0x52, 0x86, - 0x9b, 0x35, 0x53, 0x89, 0x9a, 0x35, 0x54, 0x86, 0x9b, 0x35, 0x55, 0x89, - 0x9a, 0x35, 0x56, 0x86, 0x9b, 0x35, 0x57, 0x89, 0x9a, 0x35, 0x58, 0x86, - 0x9b, 0x35, 0x58, 0x89, 0x9a, 0x35, 0x59, 0x86, 0x9b, 0x35, 0x5a, 0x89, - 0x9a, 0x35, 0x5b, 0x86, 0x9b, 0x35, 0x5c, 0x89, 0x9a, 0x35, 0x5d, 0x86, - 0x9b, 0x35, 0x5d, 0x89, 0x9a, 0x35, 0x5e, 0x86, 0x9b, 0x35, 0x5f, 0x89, - 0x9a, 0x35, 0x60, 0x86, 0x9b, 0x35, 0x60, 0x89, 0x9a, 0x35, 0x61, 0x86, - 0x9b, 0x35, 0x62, 0x89, 0x9a, 0x35, 0x63, 0x86, 0x9b, 0x35, 0x63, 0x89, - 0x9a, 0x35, 0x64, 0x86, 0x9b, 0x35, 0x65, 0x89, 0x9a, 0x35, 0x66, 0x86, - 0x9b, 0x35, 0x66, 0x89, 0x9a, 0x35, 0x67, 0x86, 0x9b, 0x35, 0x68, 0x89, - 0x9a, 0x35, 0x68, 0x86, 0x9b, 0x35, 0x69, 0x84, 0x9b, 0x35, 0x6a, 0x86, - 0x9b, 0x35, 0x6a, 0x84, 0x9b, 0x35, 0x6b, 0x86, 0x9b, 0x35, 0x6c, 0x84, - 0x9b, 0x35, 0x6c, 0x86, 0x9b, 0x35, 0x6d, 0x84, 0x9b, 0x35, 0x6e, 0x86, - 0x9b, 0x35, 0x6e, 0x84, 0x9b, 0x35, 0x6f, 0x86, 0x9b, 0x35, 0x70, 0x84, - 0x9b, 0x35, 0x70, 0x86, 0x9b, 0x35, 0x71, 0x84, 0x9b, 0x35, 0x72, 0x86, - 0x9b, 0x35, 0x72, 0x84, 0x9b, 0x35, 0x73, 0x86, 0x9b, 0x35, 0x73, 0x84, - 0x9b, 0x35, 0x74, 0x86, 0x9b, 0x35, 0x75, 0x84, 0x9b, 0x35, 0x75, 0x86, - 0x9b, 0x35, 0x76, 0x84, 0x9b, 0x35, 0x76, 0x86, 0x9b, 0x35, 0x77, 0x84, - 0x9b, 0x35, 0x78, 0x86, 0x9b, 0x35, 0x78, 0x84, 0x9b, 0x35, 0x79, 0x86, - 0x9b, 0x35, 0x79, 0x84, 0x9b, 0x35, 0x7a, 0x86, 0x9b, 0x35, 0x7a, 0x84, - 0x9b, 0x35, 0x7b, 0x86, 0x9b, 0x35, 0x7c, 0x84, 0x9b, 0x35, 0x7c, 0x86, - 0x9b, 0x35, 0x7d, 0x84, 0x9b, 0x35, 0x7d, 0x86, 0x9b, 0x35, 0x7e, 0x84, - 0x9b, 0x35, 0x7e, 0x86, 0x9b, 0x35, 0x7f, 0x84, 0x9b, 0x35, 0x7f, 0x86, - 0x9b, 0x35, 0x80, 0x84, 0x9b, 0x35, 0x81, 0x86, 0x9b, 0x35, 0x81, 0x84, - 0x9b, 0x35, 0x82, 0x86, 0x9b, 0x35, 0x82, 0x84, 0x9b, 0x35, 0x83, 0x86, - 0x9b, 0x35, 0x83, 0x84, 0x9b, 0x35, 0x84, 0x86, 0x9b, 0x35, 0x84, 0x84, - 0x9b, 0x35, 0x85, 0x86, 0x9b, 0x35, 0x85, 0x84, 0x9b, 0x35, 0x86, 0x86, - 0x9b, 0x35, 0x86, 0x84, 0x9b, 0x35, 0x87, 0x86, 0x9b, 0x35, 0x87, 0x84, - 0x9b, 0x35, 0x88, 0x86, 0x9b, 0x35, 0x88, 0x84, 0x9b, 0x35, 0x89, 0x86, - 0x9b, 0x35, 0x89, 0x84, 0x9b, 0x35, 0x8a, 0x86, 0x9b, 0x35, 0x8a, 0x84, - 0x9b, 0x35, 0x8b, 0x86, 0x9b, 0x35, 0x8b, 0x84, 0x9b, 0x35, 0x8c, 0x86, - 0x9b, 0x35, 0x8c, 0x84, 0x9b, 0x35, 0x8d, 0x86, 0x9b, 0x35, 0x8d, 0x84, - 0x9b, 0x35, 0x8e, 0x86, 0x9b, 0x35, 0x8e, 0x84, 0x9b, 0x35, 0x8e, 0x86, - 0x9b, 0x35, 0x8f, 0x84, 0x9b, 0x35, 0x8f, 0x84, 0x9c, 0x35, 0x90, 0x84, - 0x9b, 0x35, 0x90, 0x84, 0x9c, 0x35, 0x91, 0x84, 0x9b, 0x35, 0x91, 0x84, - 0x9c, 0x35, 0x92, 0x84, 0x9b, 0x35, 0x92, 0x84, 0x9c, 0x35, 0x93, 0x84, - 0x9b, 0x35, 0x93, 0x84, 0x9c, 0x35, 0x94, 0x84, 0x9b, 0x35, 0x94, 0x84, - 0x9c, 0x35, 0x94, 0x84, 0x9b, 0x35, 0x95, 0x84, 0x9c, 0x35, 0x95, 0x84, - 0x9b, 0x35, 0x96, 0x84, 0x9c, 0x35, 0x96, 0x84, 0x9b, 0x35, 0x97, 0x84, - 0x9c, 0x35, 0x97, 0x84, 0x9b, 0x35, 0x98, 0x84, 0x9c, 0x35, 0x98, 0x84, - 0x9b, 0x35, 0x98, 0x84, 0x9c, 0x35, 0x99, 0x84, 0x9b, 0x35, 0x99, 0x84, - 0x9c, 0x35, 0x9a, 0x84, 0x9b, 0x35, 0x9a, 0x84, 0x9c, 0x35, 0x9a, 0x84, - 0x9b, 0x35, 0x9b, 0x84, 0x9c, 0x35, 0x9b, 0x84, 0x9b, 0x35, 0x9c, 0x84, - 0x9c, 0x35, 0x9c, 0x84, 0x9c, 0x35, 0x9d, 0x84, 0x9d, 0x35, 0x9d, 0x84, - 0x9d, 0x35, 0x9d, 0x84, 0x9d, 0x35, 0x9e, 0x84, 0x9e, 0x35, 0x9e, 0x84, - 0x9e, 0x35, 0x9f, 0x84, 0x9f, 0x35, 0x9f, 0x84, 0x9e, 0x35, 0x9f, 0x84, - 0x9f, 0x35, 0xa0, 0x84, 0x9e, 0x35, 0xa0, 0x84, 0x9f, 0x35, 0xa1, 0x84, - 0x9e, 0x35, 0xa1, 0x84, 0x9f, 0x35, 0xa1, 0x85, 0xa1, 0x35, 0xa2, 0x85, - 0xa2, 0x35, 0xa2, 0x85, 0xa2, 0x35, 0xa3, 0x85, 0xa2, 0x35, 0xa3, 0x85, - 0xa2, 0x35, 0xa3, 0x85, 0xa2, 0x35, 0xa4, 0x85, 0xa2, 0x35, 0xa4, 0x85, - 0xa2, 0x35, 0xa5, 0x85, 0xa2, 0x35, 0xa5, 0x86, 0xa5, 0x35, 0xa5, 0x86, - 0xa5, 0x35, 0xa6, 0x86, 0xa6, 0x35, 0xa6, 0x86, 0xa6, 0x35, 0xa6, 0x86, - 0xa6, 0x35, 0xa7, 0x86, 0xa6, 0x35, 0xa7, 0x86, 0xa6, 0x35, 0xa8, 0x86, - 0xa6, 0x35, 0xa8, 0x86, 0xa6, 0x35, 0xa8, 0x86, 0xa6, 0x35, 0xa9, 0x86, - 0xa6, 0x35, 0xa9, 0x86, 0xa6, 0x35, 0xaa, 0x87, 0xaa, 0x35, 0xaa, 0x87, - 0xa9, 0x35, 0xaa, 0x87, 0xaa, 0x35, 0xab, 0x87, 0xa9, 0x35, 0xab, 0x87, - 0xaa, 0x35, 0xab, 0x87, 0xa9, 0x35, 0xac, 0x87, 0xaa, 0x35, 0xac, 0x87, - 0xa9, 0x35, 0xac, 0x87, 0xaa, 0x35, 0xad, 0x88, 0xad, 0x35, 0xad, 0x88, - 0xad, 0x35, 0xae, 0x88, 0xad, 0x35, 0xae, 0x88, 0xad, 0x35, 0xae, 0x88, - 0xad, 0x35, 0xaf, 0x88, 0xad, 0x35, 0xaf, 0x88, 0xad, 0x35, 0xaf, 0x88, - 0xad, 0x35, 0xb0, 0x88, 0xad, 0x35, 0xb0, 0x88, 0xad, 0x35, 0xb0, 0x89, - 0xb0, 0x35, 0xb1, 0x89, 0xb0, 0x35, 0xb1, 0x89, 0xb0, 0x35, 0xb2, 0x89, - 0xb0, 0x35, 0xb2, 0x89, 0xb0, 0x35, 0xb2, 0x89, 0xb0, 0x35, 0xb3, 0x89, - 0xb0, 0x35, 0xb3, 0x89, 0xb2, 0x35, 0xb3, 0x89, 0xb2, 0x35, 0xb4, 0x89, - 0xb2, 0x35, 0xb4, 0x89, 0xb2, 0x35, 0xb4, 0x89, 0xb2, 0x35, 0xb5, 0x8a, - 0xb3, 0x35, 0xb5, 0x8a, 0xb4, 0x35, 0xb5, 0x8a, 0xb3, 0x35, 0xb6, 0x8a, - 0xb4, 0x35, 0xb6, 0x8a, 0xb3, 0x35, 0xb6, 0x8a, 0xb4, 0x35, 0xb7, 0x8b, - 0xb7, 0x35, 0xb7, 0x8b, 0xb7, 0x35, 0xb7, 0x8b, 0xb7, 0x35, 0xb8, 0x8b, - 0xb7, 0x35, 0xb8, 0x8b, 0xb7, 0x35, 0xb8, 0x8b, 0xb7, 0x35, 0xb9, 0x8b, - 0xb7, 0x35, 0xb9, 0x8b, 0xb7, 0x35, 0xb9, 0x8b, 0xb7, 0x35, 0xba, 0x8b, - 0xb7, 0x35, 0xba, 0x8b, 0xb7, 0x35, 0xba, 0x8b, 0xb7, 0x35, 0xbb, 0x8c, - 0xba, 0x35, 0xbb, 0x8c, 0xba, 0x35, 0xbb, 0x8c, 0xba, 0x35, 0xbc, 0x8c, - 0xba, 0x35, 0xbc, 0x8c, 0xba, 0x35, 0xbc, 0x8c, 0xba, 0x35, 0xbd, 0x8c, - 0xba, 0x35, 0xbd, 0x8c, 0xba, 0x35, 0xbd, 0x8c, 0xba, 0x35, 0xbe, 0x8d, - 0xbd, 0x35, 0xbe, 0x8d, 0xbd, 0x35, 0xbe, 0x8d, 0xbd, 0x35, 0xbf, 0x8d, - 0xbd, 0x35, 0xbf, 0x8d, 0xbd, 0x35, 0xbf, 0x8d, 0xbd, 0x35, 0xc0, 0x8d, - 0xbd, 0x35, 0xc0, 0x8d, 0xbd, 0x35, 0xc0, 0x8d, 0xbd, 0x35, 0xc1, 0x8e, - 0xc0, 0x35, 0xc1, 0x8e, 0xc0, 0x35, 0xc1, 0x8e, 0xc0, 0x35, 0xc1, 0x8e, - 0xc0, 0x35, 0xc2, 0x8e, 0xc0, 0x35, 0xc2, 0x8e, 0xc0, 0x35, 0xc2, 0x8e, - 0xc0, 0x35, 0xc3, 0x8e, 0xc0, 0x35, 0xc3, 0x8e, 0xc0, 0x35, 0xc3, 0x8e, - 0xc0, 0x35, 0xc4, 0x8e, 0xc3, 0x35, 0xc4, 0x8e, 0xc0, 0x35, 0xc4, 0x8e, - 0xc3, 0x35, 0xc5, 0x8e, 0xc3, 0x35, 0xc5, 0x8e, 0xc3, 0x35, 0xc5, 0x8e, - 0xc3, 0x35, 0xc6, 0x8e, 0xc3, 0x35, 0xc6, 0x8e, 0xc3, 0x35, 0xc6, 0x8e, - 0xc3, 0x35, 0xc6, 0x8e, 0xc3, 0x35, 0xc7, 0x8e, 0xc3, 0x35, 0xc7, 0x8f, - 0xc6, 0x35, 0xc7, 0x8f, 0xc6, 0x35, 0xc8, 0x8f, 0xc6, 0x35, 0xc8, 0x8f, - 0xc6, 0x35, 0xc8, 0x8f, 0xc6, 0x35, 0xc9, 0x8f, 0xc6, 0x35, 0xc9, 0x8f, - 0xc6, 0x35, 0xc9, 0x8f, 0xc6, 0x35, 0xc9, 0x8f, 0xc6, 0x35, 0xca, 0x90, - 0xc9, 0x35, 0xca, 0x90, 0xc9, 0x35, 0xca, 0x90, 0xc9, 0x35, 0xcb, 0x90, - 0xc9, 0x35, 0xcb, 0x90, 0xc9, 0x35, 0xcb, 0x90, 0xc9, 0x35, 0xcc, 0x90, - 0xc9, 0x35, 0xcc, 0x90, 0xc9, 0x35, 0xcc, 0x90, 0xc9, 0x35, 0xcc, 0x90, - 0xc9, 0x35, 0xcd, 0x91, 0xcc, 0x35, 0xcd, 0x91, 0xcb, 0x35, 0xcd, 0x91, - 0xcc, 0x35, 0xce, 0x91, 0xcb, 0x35, 0xce, 0x91, 0xcc, 0x35, 0xce, 0x91, - 0xcb, 0x35, 0xce, 0x91, 0xcc, 0x35, 0xcf, 0x91, 0xcb, 0x35, 0xcf, 0x91, - 0xcc, 0x35, 0xcf, 0x92, 0xce, 0x35, 0xd0, 0x92, 0xce, 0x35, 0xd0, 0x92, - 0xce, 0x35, 0xd0, 0x92, 0xce, 0x35, 0xd0, 0x92, 0xce, 0x35, 0xd1, 0x92, - 0xce, 0x35, 0xd1, 0x92, 0xce, 0x35, 0xd1, 0x92, 0xce, 0x35, 0xd2, 0x92, - 0xce, 0x35, 0xd2, 0x92, 0xce, 0x35, 0xd2, 0x93, 0xd1, 0x35, 0xd2, 0x92, - 0xce, 0x35, 0xd3, 0x93, 0xd1, 0x35, 0xd3, 0x93, 0xd1, 0x35, 0xd3, 0x93, - 0xd1, 0x35, 0xd4, 0x93, 0xd1, 0x35, 0xd4, 0x93, 0xd1, 0x35, 0xd4, 0x93, - 0xd1, 0x35, 0xd4, 0x93, 0xd1, 0x35, 0xd5, 0x94, 0xd4, 0x35, 0xd5, 0x93, - 0xd1, 0x35, 0xd5, 0x94, 0xd4, 0x35, 0xd6, 0x94, 0xd3, 0x35, 0xd6, 0x94, - 0xd4, 0x35, 0xd6, 0x94, 0xd3, 0x35, 0xd6, 0x94, 0xd4, 0x35, 0xd7, 0x94, - 0xd3, 0x35, 0xd7, 0x94, 0xd4, 0x35, 0xd7, 0x94, 0xd3, 0x35, 0xd7, 0x94, - 0xd4, 0x35, 0xd8, 0x95, 0xd6, 0x35, 0xd8, 0x95, 0xd6, 0x35, 0xd8, 0x95, - 0xd6, 0x35, 0xd9, 0x95, 0xd6, 0x35, 0xd9, 0x95, 0xd6, 0x35, 0xd9, 0x95, - 0xd6, 0x35, 0xd9, 0x95, 0xd6, 0x35, 0xda, 0x95, 0xd6, 0x35, 0xda, 0x95, - 0xd6, 0x35, 0xda, 0x95, 0xd6, 0x35, 0xda, 0x96, 0xd9, 0x35, 0xdb, 0x95, - 0xd6, 0x35, 0xdb, 0x96, 0xd9, 0x35, 0xdb, 0x96, 0xd9, 0x35, 0xdb, 0x96, - 0xd9, 0x35, 0xdc, 0x96, 0xd9, 0x35, 0xdc, 0x96, 0xd9, 0x35, 0xdc, 0x96, - 0xd9, 0x35, 0xdd, 0x96, 0xd9, 0x35, 0xdd, 0x97, 0xdb, 0x35, 0xdd, 0x96, - 0xd9, 0x35, 0xdd, 0x97, 0xdb, 0x35, 0xde, 0x97, 0xdb, 0x35, 0xde, 0x97, - 0xdb, 0x35, 0xde, 0x97, 0xdb, 0x35, 0xde, 0x97, 0xdb, 0x35, 0xdf, 0x97, - 0xdb, 0x35, 0xdf, 0x97, 0xdb, 0x35, 0xdf, 0x98, 0xde, 0x35, 0xdf, 0x98, - 0xde, 0x35, 0xe0, 0x98, 0xde, 0x35, 0xe0, 0x98, 0xde, 0x35, 0xe0, 0x98, - 0xde, 0x35, 0xe1, 0x98, 0xde, 0x35, 0xe1, 0x98, 0xde, 0x35, 0xe1, 0x98, - 0xde, 0x35, 0xe1, 0x98, 0xde, 0x35, 0xe2, 0x98, 0xde, 0x35, 0xe2, 0x98, - 0xde, 0x35, 0xe2, 0x98, 0xde, 0x35, 0xe2, 0x98, 0xe0, 0x35, 0xe3, 0x98, - 0xe0, 0x35, 0xe3, 0x98, 0xe0, 0x35, 0xe3, 0x98, 0xe0, 0x35, 0xe3, 0x98, - 0xe0, 0x35, 0xe4, 0x98, 0xe0, 0x35, 0xe4, 0x98, 0xe0, 0x35, 0xe4, 0x98, - 0xe0, 0x35, 0xe4, 0x98, 0xe0, 0x35, 0xe5, 0x99, 0xe3, 0x35, 0xe5, 0x98, - 0xe0, 0x35, 0xe5, 0x99, 0xe3, 0x35, 0xe5, 0x99, 0xe2, 0x35, 0xe6, 0x99, - 0xe3, 0x35, 0xe6, 0x99, 0xe2, 0x35, 0xe6, 0x99, 0xe3, 0x35, 0xe6, 0x99, - 0xe2, 0x35, 0xe7, 0x99, 0xe3, 0x35, 0xe7, 0x9a, 0xe5, 0x35, 0xe7, 0x9a, - 0xe5, 0x35, 0xe7, 0x9a, 0xe5, 0x35, 0xe8, 0x9a, 0xe5, 0x35, 0xe8, 0x9a, - 0xe5, 0x35, 0xe8, 0x9a, 0xe5, 0x35, 0xe8, 0x9a, 0xe5, 0x35, 0xe9, 0x9a, - 0xe5, 0x35, 0xe9, 0x9a, 0xe5, 0x35, 0xe9, 0x9a, 0xe5, 0x35, 0xe9, 0x9b, - 0xe7, 0x35, 0xea, 0x9a, 0xe5, 0x35, 0xea, 0x9b, 0xe7, 0x35, 0xea, 0x9b, - 0xe7, 0x35, 0xea, 0x9b, 0xe7, 0x35, 0xeb, 0x9b, 0xe7, 0x35, 0xeb, 0x9b, - 0xe7, 0x35, 0xeb, 0x9b, 0xe7, 0x35, 0xeb, 0x9b, 0xe7, 0x35, 0xec, 0x9c, - 0xea, 0x35, 0xec, 0x9c, 0xea, 0x35, 0xec, 0x9c, 0xea, 0x35, 0xec, 0x9c, - 0xea, 0x35, 0xec, 0x9c, 0xea, 0x35, 0xed, 0x9c, 0xea, 0x35, 0xed, 0x9c, - 0xea, 0x35, 0xed, 0x9c, 0xea, 0x35, 0xed, 0x9c, 0xea, 0x35, 0xee, 0x9c, - 0xea, 0x35, 0xee, 0x9d, 0xec, 0x35, 0xee, 0x9c, 0xea, 0x35, 0xee, 0x9d, - 0xec, 0x35, 0xef, 0x9c, 0xea, 0x35, 0xef, 0x9d, 0xec, 0x35, 0xef, 0x9d, - 0xec, 0x35, 0xef, 0x9d, 0xec, 0x35, 0xf0, 0x9d, 0xec, 0x35, 0xf0, 0x9d, - 0xec, 0x35, 0xf0, 0x9d, 0xec, 0x35, 0xf0, 0x9d, 0xec, 0x35, 0xf1, 0x9d, - 0xee, 0x35, 0xf1, 0x9d, 0xec, 0x35, 0xf1, 0x9d, 0xee, 0x35, 0xf1, 0x9d, - 0xee, 0x35, 0xf2, 0x9d, 0xee, 0x35, 0xf2, 0x9d, 0xee, 0x35, 0xf2, 0x9d, - 0xee, 0x35, 0xf2, 0x9d, 0xee, 0x35, 0xf2, 0x9d, 0xee, 0x35, 0xf3, 0x9e, - 0xf0, 0x35, 0xf3, 0x9e, 0xf1, 0x35, 0xf3, 0x9e, 0xf0, 0x35, 0xf3, 0x9e, - 0xf1, 0x35, 0xf4, 0x9e, 0xf0, 0x35, 0xf4, 0x9e, 0xf1, 0x35, 0xf4, 0x9e, - 0xf0, 0x35, 0xf4, 0x9e, 0xf1, 0x35, 0xf5, 0x9e, 0xf0, 0x35, 0xf5, 0x9e, - 0xf1, 0x35, 0xf5, 0x9f, 0xf3, 0x35, 0xf5, 0x9e, 0xf1, 0x35, 0xf5, 0x9f, - 0xf3, 0x35, 0xf6, 0x9f, 0xf2, 0x35, 0xf6, 0x9f, 0xf3, 0x35, 0xf6, 0x9f, - 0xf2, 0x35, 0xf6, 0x9f, 0xf3, 0x35, 0xf7, 0x9f, 0xf2, 0x35, 0xf7, 0x9f, - 0xf3, 0x35, 0xf7, 0xa0, 0xf5, 0x35, 0xf7, 0x9f, 0xf3, 0x35, 0xf8, 0xa0, - 0xf5, 0x35, 0xf8, 0x9f, 0xf3, 0x35, 0xf8, 0xa0, 0xf5, 0x35, 0xf8, 0xa0, - 0xf5, 0x35, 0xf8, 0xa0, 0xf5, 0x35, 0xf9, 0xa0, 0xf5, 0x35, 0xf9, 0xa0, - 0xf5, 0x35, 0xf9, 0xa0, 0xf5, 0x35, 0xf9, 0xa0, 0xf5, 0x35, 0xfa, 0xa1, - 0xf7, 0x35, 0xfa, 0xa1, 0xf7, 0x35, 0xfa, 0xa1, 0xf7, 0x35, 0xfa, 0xa1, - 0xf7, 0x35, 0xfa, 0xa1, 0xf7, 0x35, 0xfb, 0xa1, 0xf7, 0x35, 0xfb, 0xa1, - 0xf7, 0x35, 0xfb, 0xa1, 0xf7, 0x35, 0xfb, 0xa1, 0xf7, 0x35, 0xfc, 0xa1, - 0xf7, 0x35, 0xfc, 0xa1, 0xf9, 0x35, 0xfc, 0xa1, 0xf7, 0x35, 0xfc, 0xa1, - 0xf9, 0x35, 0xfc, 0xa1, 0xf9, 0x35, 0xfd, 0xa1, 0xf9, 0x35, 0xfd, 0xa1, - 0xf9, 0x35, 0xfd, 0xa1, 0xf9, 0x35, 0xfd, 0xa1, 0xf9, 0x35, 0xfe, 0xa1, - 0xf9, 0x35, 0xfe, 0xa2, 0xfb, 0x35, 0xfe, 0xa1, 0xf9, 0x35, 0xfe, 0xa2, - 0xfb, 0x35, 0xfe, 0xa2, 0xfb, 0x35, 0xff, 0xa2, 0xfb, 0x35, 0xff, 0xa2, - 0xfb, 0x35, 0x03, 0x89, 0x9a, 0x35, 0x0a, 0x8c, 0x9a, 0x35, 0x0f, 0x89, - 0x9a, 0x35, 0x14, 0x8c, 0x9a, 0x35, 0x17, 0x89, 0x9a, 0x35, 0x1b, 0x8c, - 0x9a, 0x35, 0x1e, 0x89, 0x9a, 0x35, 0x20, 0x8c, 0x9a, 0x35, 0x23, 0x89, - 0x9a, 0x35, 0x25, 0x8c, 0x9a, 0x35, 0x27, 0x89, 0x9a, 0x35, 0x29, 0x8c, - 0x9a, 0x35, 0x2b, 0x89, 0x9a, 0x35, 0x2d, 0x8c, 0x9a, 0x35, 0x2f, 0x89, - 0x9a, 0x35, 0x31, 0x8c, 0x9a, 0x35, 0x32, 0x89, 0x9a, 0x35, 0x34, 0x8c, - 0x9a, 0x35, 0x35, 0x89, 0x9a, 0x35, 0x37, 0x8c, 0x9a, 0x35, 0x38, 0x89, - 0x9a, 0x35, 0x3a, 0x8c, 0x9a, 0x35, 0x3b, 0x89, 0x9a, 0x35, 0x3c, 0x8c, - 0x9a, 0x35, 0x3e, 0x89, 0x9a, 0x35, 0x3f, 0x8c, 0x9a, 0x35, 0x40, 0x89, - 0x9a, 0x35, 0x42, 0x8c, 0x9a, 0x35, 0x43, 0x89, 0x9a, 0x35, 0x44, 0x8c, - 0x9a, 0x35, 0x45, 0x89, 0x9a, 0x35, 0x46, 0x8c, 0x9a, 0x35, 0x47, 0x89, - 0x9a, 0x35, 0x48, 0x8c, 0x9a, 0x35, 0x49, 0x89, 0x9a, 0x35, 0x4a, 0x86, - 0x9b, 0x35, 0x4b, 0x89, 0x9a, 0x35, 0x4c, 0x86, 0x9b, 0x35, 0x4d, 0x89, - 0x9a, 0x35, 0x4e, 0x86, 0x9b, 0x35, 0x4f, 0x89, 0x9a, 0x35, 0x50, 0x86, - 0x9b, 0x35, 0x51, 0x89, 0x9a, 0x35, 0x52, 0x86, 0x9b, 0x35, 0x53, 0x89, - 0x9a, 0x35, 0x54, 0x86, 0x9b, 0x35, 0x55, 0x89, 0x9a, 0x35, 0x56, 0x86, - 0x9b, 0x35, 0x57, 0x89, 0x9a, 0x35, 0x58, 0x86, 0x9b, 0x35, 0x58, 0x89, - 0x9a, 0x35, 0x59, 0x86, 0x9b, 0x35, 0x5a, 0x89, 0x9a, 0x35, 0x5b, 0x86, - 0x9b, 0x35, 0x5c, 0x89, 0x9a, 0x35, 0x5d, 0x86, 0x9b, 0x35, 0x5d, 0x89, - 0x9a, 0x35, 0x5e, 0x86, 0x9b, 0x35, 0x5f, 0x89, 0x9a, 0x35, 0x60, 0x86, - 0x9b, 0x35, 0x60, 0x89, 0x9a, 0x35, 0x61, 0x86, 0x9b, 0x35, 0x62, 0x89, - 0x9a, 0x35, 0x63, 0x86, 0x9b, 0x35, 0x63, 0x89, 0x9a, 0x35, 0x64, 0x86, - 0x9b, 0x35, 0x65, 0x89, 0x9a, 0x35, 0x66, 0x86, 0x9b, 0x35, 0x66, 0x89, - 0x9a, 0x35, 0x67, 0x86, 0x9b, 0x35, 0x68, 0x89, 0x9a, 0x35, 0x68, 0x86, - 0x9b, 0x35, 0x69, 0x83, 0x9b, 0x35, 0x6a, 0x86, 0x9b, 0x35, 0x6a, 0x83, - 0x9b, 0x35, 0x6b, 0x86, 0x9b, 0x35, 0x6c, 0x83, 0x9b, 0x35, 0x6c, 0x86, - 0x9b, 0x35, 0x6d, 0x83, 0x9b, 0x35, 0x6e, 0x86, 0x9b, 0x35, 0x6e, 0x83, - 0x9b, 0x35, 0x6f, 0x86, 0x9b, 0x35, 0x70, 0x83, 0x9b, 0x35, 0x70, 0x86, - 0x9b, 0x35, 0x71, 0x83, 0x9b, 0x35, 0x72, 0x86, 0x9b, 0x35, 0x72, 0x83, - 0x9b, 0x35, 0x73, 0x86, 0x9b, 0x35, 0x73, 0x83, 0x9b, 0x35, 0x74, 0x86, - 0x9b, 0x35, 0x75, 0x83, 0x9b, 0x35, 0x75, 0x86, 0x9b, 0x35, 0x76, 0x83, - 0x9b, 0x35, 0x76, 0x86, 0x9b, 0x35, 0x77, 0x83, 0x9b, 0x35, 0x78, 0x86, - 0x9b, 0x35, 0x78, 0x83, 0x9b, 0x35, 0x79, 0x86, 0x9b, 0x35, 0x79, 0x83, - 0x9b, 0x35, 0x7a, 0x86, 0x9b, 0x35, 0x7a, 0x83, 0x9b, 0x35, 0x7b, 0x86, - 0x9b, 0x35, 0x7c, 0x83, 0x9b, 0x35, 0x7c, 0x86, 0x9b, 0x35, 0x7d, 0x83, - 0x9b, 0x35, 0x7d, 0x86, 0x9b, 0x35, 0x7e, 0x83, 0x9b, 0x35, 0x7e, 0x86, - 0x9b, 0x35, 0x7f, 0x83, 0x9b, 0x35, 0x7f, 0x86, 0x9b, 0x35, 0x80, 0x83, - 0x9b, 0x35, 0x81, 0x86, 0x9b, 0x35, 0x81, 0x83, 0x9b, 0x35, 0x82, 0x86, - 0x9b, 0x35, 0x82, 0x83, 0x9b, 0x35, 0x83, 0x86, 0x9b, 0x35, 0x83, 0x83, - 0x9b, 0x35, 0x84, 0x86, 0x9b, 0x35, 0x84, 0x83, 0x9b, 0x35, 0x85, 0x86, - 0x9b, 0x35, 0x85, 0x83, 0x9b, 0x35, 0x86, 0x86, 0x9b, 0x35, 0x86, 0x83, - 0x9b, 0x35, 0x87, 0x86, 0x9b, 0x35, 0x87, 0x83, 0x9b, 0x35, 0x88, 0x86, - 0x9b, 0x35, 0x88, 0x83, 0x9b, 0x35, 0x89, 0x86, 0x9b, 0x35, 0x89, 0x83, - 0x9b, 0x35, 0x8a, 0x83, 0x9c, 0x35, 0x8a, 0x83, 0x9b, 0x35, 0x8b, 0x83, - 0x9c, 0x35, 0x8b, 0x83, 0x9b, 0x35, 0x8c, 0x83, 0x9c, 0x35, 0x8c, 0x83, - 0x9b, 0x35, 0x8d, 0x83, 0x9c, 0x35, 0x8d, 0x83, 0x9b, 0x35, 0x8e, 0x83, - 0x9c, 0x35, 0x8e, 0x83, 0x9b, 0x35, 0x8e, 0x83, 0x9c, 0x35, 0x8f, 0x83, - 0x9b, 0x35, 0x8f, 0x83, 0x9c, 0x35, 0x90, 0x83, 0x9b, 0x35, 0x90, 0x83, - 0x9c, 0x35, 0x91, 0x83, 0x9b, 0x35, 0x91, 0x83, 0x9c, 0x35, 0x92, 0x83, - 0x9b, 0x35, 0x92, 0x83, 0x9c, 0x35, 0x93, 0x83, 0x9b, 0x35, 0x93, 0x83, - 0x9c, 0x35, 0x94, 0x83, 0x9b, 0x35, 0x94, 0x83, 0x9c, 0x35, 0x94, 0x83, - 0x9b, 0x35, 0x95, 0x83, 0x9c, 0x35, 0x95, 0x83, 0x9b, 0x35, 0x96, 0x83, - 0x9c, 0x35, 0x96, 0x83, 0x9b, 0x35, 0x97, 0x83, 0x9c, 0x35, 0x97, 0x83, - 0x9b, 0x35, 0x98, 0x83, 0x9c, 0x35, 0x98, 0x83, 0x9b, 0x35, 0x98, 0x83, - 0x9c, 0x35, 0x99, 0x83, 0x9b, 0x35, 0x99, 0x83, 0x9c, 0x35, 0x9a, 0x83, - 0x9b, 0x35, 0x9a, 0x83, 0x9c, 0x35, 0x9a, 0x83, 0x9b, 0x35, 0x9b, 0x83, - 0x9c, 0x35, 0x9b, 0x83, 0x9b, 0x35, 0x9c, 0x83, 0x9c, 0x35, 0x9c, 0x83, - 0x9c, 0x35, 0x9d, 0x83, 0x9d, 0x35, 0x9d, 0x83, 0x9c, 0x35, 0x9d, 0x83, - 0x9d, 0x35, 0x9e, 0x83, 0x9c, 0x35, 0x9e, 0x83, 0x9d, 0x35, 0x9f, 0x83, - 0x9c, 0x35, 0x9f, 0x83, 0x9d, 0x35, 0x9f, 0x84, 0x9f, 0x35, 0xa0, 0x84, - 0xa0, 0x35, 0xa0, 0x84, 0xa0, 0x35, 0xa1, 0x84, 0xa1, 0x35, 0xa1, 0x84, - 0xa0, 0x35, 0xa1, 0x84, 0xa1, 0x35, 0xa2, 0x84, 0xa0, 0x35, 0xa2, 0x84, - 0xa1, 0x35, 0xa3, 0x84, 0xa0, 0x35, 0xa3, 0x84, 0xa1, 0x35, 0xa3, 0x85, - 0xa3, 0x35, 0xa4, 0x85, 0xa4, 0x35, 0xa4, 0x85, 0xa4, 0x35, 0xa5, 0x85, - 0xa4, 0x35, 0xa5, 0x85, 0xa4, 0x35, 0xa5, 0x85, 0xa4, 0x35, 0xa6, 0x85, - 0xa4, 0x35, 0xa6, 0x85, 0xa4, 0x35, 0xa6, 0x85, 0xa4, 0x35, 0xa7, 0x86, - 0xa7, 0x35, 0xa7, 0x86, 0xa7, 0x35, 0xa8, 0x86, 0xa8, 0x35, 0xa8, 0x86, - 0xa7, 0x35, 0xa8, 0x86, 0xa8, 0x35, 0xa9, 0x86, 0xa7, 0x35, 0xa9, 0x86, - 0xa8, 0x35, 0xaa, 0x86, 0xa7, 0x35, 0xaa, 0x86, 0xa8, 0x35, 0xaa, 0x86, - 0xa7, 0x35, 0xab, 0x86, 0xa8, 0x35, 0xab, 0x87, 0xab, 0x35, 0xab, 0x87, - 0xab, 0x35, 0xac, 0x87, 0xab, 0x35, 0xac, 0x87, 0xab, 0x35, 0xac, 0x87, - 0xab, 0x35, 0xad, 0x87, 0xab, 0x35, 0xad, 0x87, 0xab, 0x35, 0xae, 0x87, - 0xab, 0x35, 0xae, 0x87, 0xab, 0x35, 0xae, 0x87, 0xab, 0x35, 0xaf, 0x88, - 0xaf, 0x35, 0xaf, 0x88, 0xae, 0x35, 0xaf, 0x88, 0xaf, 0x35, 0xb0, 0x88, - 0xae, 0x35, 0xb0, 0x88, 0xaf, 0x35, 0xb0, 0x88, 0xae, 0x35, 0xb1, 0x88, - 0xaf, 0x35, 0xb1, 0x88, 0xae, 0x35, 0xb2, 0x88, 0xaf, 0x35, 0xb2, 0x89, - 0xb2, 0x35, 0xb2, 0x89, 0xb2, 0x35, 0xb3, 0x89, 0xb2, 0x35, 0xb3, 0x89, - 0xb2, 0x35, 0xb3, 0x89, 0xb2, 0x35, 0xb4, 0x89, 0xb2, 0x35, 0xb4, 0x89, - 0xb2, 0x35, 0xb4, 0x89, 0xb2, 0x35, 0xb5, 0x89, 0xb2, 0x35, 0xb5, 0x89, - 0xb2, 0x35, 0xb5, 0x8a, 0xb5, 0x35, 0xb6, 0x8a, 0xb5, 0x35, 0xb6, 0x8a, - 0xb5, 0x35, 0xb6, 0x8a, 0xb5, 0x35, 0xb7, 0x8a, 0xb5, 0x35, 0xb7, 0x8a, - 0xb5, 0x35, 0xb7, 0x8a, 0xb5, 0x35, 0xb8, 0x8a, 0xb5, 0x35, 0xb8, 0x8a, - 0xb5, 0x35, 0xb8, 0x8b, 0xb8, 0x35, 0xb9, 0x8a, 0xb5, 0x35, 0xb9, 0x8b, - 0xb8, 0x35, 0xb9, 0x8b, 0xb8, 0x35, 0xba, 0x8b, 0xb8, 0x35, 0xba, 0x8b, - 0xb8, 0x35, 0xba, 0x8b, 0xb8, 0x35, 0xbb, 0x8b, 0xb8, 0x35, 0xbb, 0x8b, - 0xb8, 0x35, 0xbb, 0x8b, 0xb8, 0x35, 0xbc, 0x8b, 0xb8, 0x35, 0xbc, 0x8c, - 0xbb, 0x35, 0xbc, 0x8c, 0xbc, 0x35, 0xbd, 0x8c, 0xbb, 0x35, 0xbd, 0x8c, - 0xbc, 0x35, 0xbd, 0x8c, 0xbb, 0x35, 0xbe, 0x8c, 0xbc, 0x35, 0xbe, 0x8c, - 0xbb, 0x35, 0xbe, 0x8c, 0xbc, 0x35, 0xbf, 0x8c, 0xbb, 0x35, 0xbf, 0x8c, - 0xbc, 0x35, 0xbf, 0x8d, 0xbf, 0x35, 0xc0, 0x8d, 0xbe, 0x35, 0xc0, 0x8d, - 0xbf, 0x35, 0xc0, 0x8d, 0xbe, 0x35, 0xc1, 0x8d, 0xbf, 0x35, 0xc1, 0x8d, - 0xbe, 0x35, 0xc1, 0x8d, 0xbf, 0x35, 0xc1, 0x8d, 0xbe, 0x35, 0xc2, 0x8d, - 0xbf, 0x35, 0xc2, 0x8e, 0xc1, 0x35, 0xc2, 0x8e, 0xc1, 0x35, 0xc3, 0x8e, - 0xc1, 0x35, 0xc3, 0x8e, 0xc1, 0x35, 0xc3, 0x8e, 0xc1, 0x35, 0xc4, 0x8e, - 0xc1, 0x35, 0xc4, 0x8e, 0xc1, 0x35, 0xc4, 0x8e, 0xc1, 0x35, 0xc5, 0x8e, - 0xc1, 0x35, 0xc5, 0x8f, 0xc4, 0x35, 0xc5, 0x8f, 0xc5, 0x35, 0xc6, 0x8f, - 0xc4, 0x35, 0xc6, 0x8f, 0xc5, 0x35, 0xc6, 0x8f, 0xc4, 0x35, 0xc6, 0x8f, - 0xc5, 0x35, 0xc7, 0x8f, 0xc4, 0x35, 0xc7, 0x8f, 0xc5, 0x35, 0xc7, 0x8f, - 0xc4, 0x35, 0xc8, 0x8f, 0xc5, 0x35, 0xc8, 0x8f, 0xc4, 0x35, 0xc8, 0x8f, - 0xc5, 0x35, 0xc9, 0x90, 0xc7, 0x35, 0xc9, 0x90, 0xc7, 0x35, 0xc9, 0x90, - 0xc7, 0x35, 0xc9, 0x90, 0xc7, 0x35, 0xca, 0x90, 0xc7, 0x35, 0xca, 0x90, - 0xc7, 0x35, 0xca, 0x90, 0xc7, 0x35, 0xcb, 0x90, 0xc7, 0x35, 0xcb, 0x90, - 0xc7, 0x35, 0xcb, 0x91, 0xca, 0x35, 0xcc, 0x91, 0xca, 0x35, 0xcc, 0x91, - 0xca, 0x35, 0xcc, 0x91, 0xca, 0x35, 0xcc, 0x91, 0xca, 0x35, 0xcd, 0x91, - 0xca, 0x35, 0xcd, 0x91, 0xca, 0x35, 0xcd, 0x91, 0xca, 0x35, 0xce, 0x91, - 0xca, 0x35, 0xce, 0x92, 0xcd, 0x35, 0xce, 0x92, 0xcd, 0x35, 0xce, 0x92, - 0xcd, 0x35, 0xcf, 0x92, 0xcd, 0x35, 0xcf, 0x92, 0xcd, 0x35, 0xcf, 0x92, - 0xcd, 0x35, 0xd0, 0x92, 0xcd, 0x35, 0xd0, 0x92, 0xcd, 0x35, 0xd0, 0x92, - 0xcd, 0x35, 0xd0, 0x92, 0xcd, 0x35, 0xd1, 0x93, 0xd0, 0x35, 0xd1, 0x92, - 0xcd, 0x35, 0xd1, 0x93, 0xd0, 0x35, 0xd2, 0x93, 0xcf, 0x35, 0xd2, 0x93, - 0xd0, 0x35, 0xd2, 0x93, 0xcf, 0x35, 0xd2, 0x93, 0xd0, 0x35, 0xd3, 0x93, - 0xcf, 0x35, 0xd3, 0x93, 0xd0, 0x35, 0xd3, 0x94, 0xd2, 0x35, 0xd4, 0x94, - 0xd2, 0x35, 0xd4, 0x94, 0xd2, 0x35, 0xd4, 0x94, 0xd2, 0x35, 0xd4, 0x94, - 0xd2, 0x35, 0xd5, 0x94, 0xd2, 0x35, 0xd5, 0x94, 0xd2, 0x35, 0xd5, 0x94, - 0xd2, 0x35, 0xd6, 0x94, 0xd2, 0x35, 0xd6, 0x94, 0xd2, 0x35, 0xd6, 0x94, - 0xd5, 0x35, 0xd6, 0x94, 0xd2, 0x35, 0xd7, 0x94, 0xd5, 0x35, 0xd7, 0x94, - 0xd5, 0x35, 0xd7, 0x94, 0xd5, 0x35, 0xd7, 0x94, 0xd5, 0x35, 0xd8, 0x94, - 0xd5, 0x35, 0xd8, 0x94, 0xd5, 0x35, 0xd8, 0x94, 0xd5, 0x35, 0xd9, 0x94, - 0xd5, 0x35, 0xd9, 0x94, 0xd5, 0x35, 0xd9, 0x95, 0xd7, 0x35, 0xd9, 0x95, - 0xd7, 0x35, 0xda, 0x95, 0xd7, 0x35, 0xda, 0x95, 0xd7, 0x35, 0xda, 0x95, - 0xd7, 0x35, 0xda, 0x95, 0xd7, 0x35, 0xdb, 0x95, 0xd7, 0x35, 0xdb, 0x95, - 0xd7, 0x35, 0xdb, 0x95, 0xd7, 0x35, 0xdb, 0x96, 0xda, 0x35, 0xdc, 0x96, - 0xda, 0x35, 0xdc, 0x96, 0xda, 0x35, 0xdc, 0x96, 0xda, 0x35, 0xdd, 0x96, - 0xda, 0x35, 0xdd, 0x96, 0xda, 0x35, 0xdd, 0x96, 0xda, 0x35, 0xdd, 0x96, - 0xda, 0x35, 0xde, 0x96, 0xda, 0x35, 0xde, 0x96, 0xda, 0x35, 0xde, 0x97, - 0xdd, 0x35, 0xde, 0x96, 0xda, 0x35, 0xdf, 0x97, 0xdd, 0x35, 0xdf, 0x97, - 0xdc, 0x35, 0xdf, 0x97, 0xdd, 0x35, 0xdf, 0x97, 0xdc, 0x35, 0xe0, 0x97, - 0xdd, 0x35, 0xe0, 0x97, 0xdc, 0x35, 0xe0, 0x97, 0xdd, 0x35, 0xe1, 0x98, - 0xdf, 0x35, 0xe1, 0x97, 0xdd, 0x35, 0xe1, 0x98, 0xdf, 0x35, 0xe1, 0x98, - 0xdf, 0x35, 0xe2, 0x98, 0xdf, 0x35, 0xe2, 0x98, 0xdf, 0x35, 0xe2, 0x98, - 0xdf, 0x35, 0xe2, 0x98, 0xdf, 0x35, 0xe3, 0x98, 0xdf, 0x35, 0xe3, 0x98, - 0xdf, 0x35, 0xe3, 0x98, 0xdf, 0x35, 0xe3, 0x99, 0xe1, 0x35, 0xe4, 0x99, - 0xe2, 0x35, 0xe4, 0x99, 0xe1, 0x35, 0xe4, 0x99, 0xe2, 0x35, 0xe4, 0x99, - 0xe1, 0x35, 0xe5, 0x99, 0xe2, 0x35, 0xe5, 0x99, 0xe1, 0x35, 0xe5, 0x99, - 0xe2, 0x35, 0xe5, 0x99, 0xe1, 0x35, 0xe6, 0x99, 0xe2, 0x35, 0xe6, 0x9a, - 0xe4, 0x35, 0xe6, 0x99, 0xe2, 0x35, 0xe6, 0x9a, 0xe4, 0x35, 0xe7, 0x9a, - 0xe4, 0x35, 0xe7, 0x9a, 0xe4, 0x35, 0xe7, 0x9a, 0xe4, 0x35, 0xe7, 0x9a, - 0xe4, 0x35, 0xe8, 0x9a, 0xe4, 0x35, 0xe8, 0x9a, 0xe4, 0x35, 0xe8, 0x9a, - 0xe6, 0x35, 0xe8, 0x9a, 0xe4, 0x35, 0xe9, 0x9a, 0xe6, 0x35, 0xe9, 0x9a, - 0xe6, 0x35, 0xe9, 0x9a, 0xe6, 0x35, 0xe9, 0x9a, 0xe6, 0x35, 0xea, 0x9a, - 0xe6, 0x35, 0xea, 0x9a, 0xe6, 0x35, 0xea, 0x9a, 0xe6, 0x35, 0xea, 0x9b, - 0xe8, 0x35, 0xeb, 0x9b, 0xe9, 0x35, 0xeb, 0x9b, 0xe8, 0x35, 0xeb, 0x9b, - 0xe9, 0x35, 0xeb, 0x9b, 0xe8, 0x35, 0xec, 0x9b, 0xe9, 0x35, 0xec, 0x9b, - 0xe8, 0x35, 0xec, 0x9b, 0xe9, 0x35, 0xec, 0x9b, 0xe8, 0x35, 0xec, 0x9b, - 0xe9, 0x35, 0xed, 0x9c, 0xeb, 0x35, 0xed, 0x9b, 0xe9, 0x35, 0xed, 0x9c, - 0xeb, 0x35, 0xed, 0x9c, 0xeb, 0x35, 0xee, 0x9c, 0xeb, 0x35, 0xee, 0x9c, - 0xeb, 0x35, 0xee, 0x9c, 0xeb, 0x35, 0xee, 0x9c, 0xeb, 0x35, 0xef, 0x9c, - 0xeb, 0x35, 0xef, 0x9d, 0xed, 0x35, 0xef, 0x9d, 0xed, 0x35, 0xef, 0x9d, - 0xed, 0x35, 0xf0, 0x9d, 0xed, 0x35, 0xf0, 0x9d, 0xed, 0x35, 0xf0, 0x9d, - 0xed, 0x35, 0xf0, 0x9d, 0xed, 0x35, 0xf1, 0x9d, 0xed, 0x35, 0xf1, 0x9d, - 0xed, 0x35, 0xf1, 0x9d, 0xed, 0x35, 0xf1, 0x9d, 0xed, 0x35, 0xf2, 0x9d, - 0xed, 0x35, 0xf2, 0x9e, 0xef, 0x35, 0xf2, 0x9d, 0xed, 0x35, 0xf2, 0x9e, - 0xef, 0x35, 0xf2, 0x9e, 0xef, 0x35, 0xf3, 0x9e, 0xef, 0x35, 0xf3, 0x9e, - 0xef, 0x35, 0xf3, 0x9e, 0xef, 0x35, 0xf3, 0x9e, 0xef, 0x35, 0xf4, 0x9e, - 0xef, 0x35, 0xf4, 0x9f, 0xf2, 0x35, 0xf4, 0x9e, 0xef, 0x35, 0xf4, 0x9f, - 0xf2, 0x35, 0xf5, 0x9f, 0xf1, 0x35, 0xf5, 0x9f, 0xf2, 0x35, 0xf5, 0x9f, - 0xf1, 0x35, 0xf5, 0x9f, 0xf2, 0x35, 0xf5, 0x9f, 0xf1, 0x35, 0xf6, 0x9f, - 0xf2, 0x35, 0xf6, 0x9f, 0xf4, 0x35, 0xf6, 0x9f, 0xf4, 0x35, 0xf6, 0x9f, - 0xf4, 0x35, 0xf7, 0x9f, 0xf4, 0x35, 0xf7, 0x9f, 0xf4, 0x35, 0xf7, 0x9f, - 0xf4, 0x35, 0xf7, 0x9f, 0xf4, 0x35, 0xf8, 0x9f, 0xf4, 0x35, 0xf8, 0x9f, - 0xf4, 0x35, 0xf8, 0x9f, 0xf4, 0x35, 0xf8, 0xa0, 0xf6, 0x35, 0xf8, 0x9f, - 0xf4, 0x35, 0xf9, 0xa0, 0xf6, 0x35, 0xf9, 0x9f, 0xf4, 0x35, 0xf9, 0xa0, - 0xf6, 0x35, 0xf9, 0xa0, 0xf6, 0x35, 0xfa, 0xa0, 0xf6, 0x35, 0xfa, 0xa0, - 0xf6, 0x35, 0xfa, 0xa0, 0xf6, 0x35, 0xfa, 0xa0, 0xf6, 0x35, 0xfa, 0xa0, - 0xf6, 0x35, 0xfb, 0xa1, 0xf8, 0x35, 0xfb, 0xa0, 0xf6, 0x35, 0xfb, 0xa1, - 0xf8, 0x35, 0xfb, 0xa1, 0xf8, 0x35, 0xfc, 0xa1, 0xf8, 0x35, 0xfc, 0xa1, - 0xf8, 0x35, 0xfc, 0xa1, 0xf8, 0x35, 0xfc, 0xa1, 0xf8, 0x35, 0xfc, 0xa1, - 0xf8, 0x35, 0xfd, 0xa2, 0xfa, 0x35, 0xfd, 0xa2, 0xfa, 0x35, 0xfd, 0xa2, - 0xfa, 0x35, 0xfd, 0xa2, 0xfa, 0x35, 0xfe, 0xa2, 0xfa, 0x35, 0xfe, 0xa2, - 0xfa, 0x35, 0xfe, 0xa2, 0xfa, 0x35, 0xfe, 0xa2, 0xfa, 0x35, 0xfe, 0xa2, - 0xfa, 0x35, 0xff, 0xa2, 0xfa, 0x35, 0xff, 0xa2, 0xfa, 0x35, 0x03, 0x89, - 0x9a, 0x36, 0x0a, 0x8d, 0x9a, 0x36, 0x0f, 0x89, 0x9a, 0x36, 0x14, 0x8d, - 0x9a, 0x36, 0x17, 0x89, 0x9a, 0x36, 0x1b, 0x8d, 0x9a, 0x36, 0x1e, 0x89, - 0x9a, 0x36, 0x20, 0x8d, 0x9a, 0x36, 0x23, 0x89, 0x9a, 0x36, 0x25, 0x8d, - 0x9a, 0x36, 0x27, 0x89, 0x9a, 0x36, 0x29, 0x8d, 0x9a, 0x36, 0x2b, 0x89, - 0x9a, 0x36, 0x2d, 0x8d, 0x9a, 0x36, 0x2f, 0x89, 0x9a, 0x36, 0x31, 0x8d, - 0x9a, 0x36, 0x32, 0x89, 0x9a, 0x36, 0x34, 0x8d, 0x9a, 0x36, 0x35, 0x89, - 0x9a, 0x36, 0x37, 0x86, 0x9b, 0x36, 0x38, 0x89, 0x9a, 0x36, 0x3a, 0x86, - 0x9b, 0x36, 0x3b, 0x89, 0x9a, 0x36, 0x3c, 0x86, 0x9b, 0x36, 0x3e, 0x89, - 0x9a, 0x36, 0x3f, 0x86, 0x9b, 0x36, 0x40, 0x89, 0x9a, 0x36, 0x42, 0x86, - 0x9b, 0x36, 0x43, 0x89, 0x9a, 0x36, 0x44, 0x86, 0x9b, 0x36, 0x45, 0x89, - 0x9a, 0x36, 0x46, 0x86, 0x9b, 0x36, 0x47, 0x89, 0x9a, 0x36, 0x48, 0x86, - 0x9b, 0x36, 0x49, 0x89, 0x9a, 0x36, 0x4a, 0x86, 0x9b, 0x36, 0x4b, 0x89, - 0x9a, 0x36, 0x4c, 0x86, 0x9b, 0x36, 0x4d, 0x89, 0x9a, 0x36, 0x4e, 0x86, - 0x9b, 0x36, 0x4f, 0x89, 0x9a, 0x36, 0x50, 0x86, 0x9b, 0x36, 0x51, 0x89, - 0x9a, 0x36, 0x52, 0x86, 0x9b, 0x36, 0x53, 0x89, 0x9a, 0x36, 0x54, 0x86, - 0x9b, 0x36, 0x55, 0x89, 0x9a, 0x36, 0x56, 0x86, 0x9b, 0x36, 0x57, 0x89, - 0x9a, 0x36, 0x58, 0x86, 0x9b, 0x36, 0x58, 0x89, 0x9a, 0x36, 0x59, 0x86, - 0x9b, 0x36, 0x5a, 0x89, 0x9a, 0x36, 0x5b, 0x86, 0x9b, 0x36, 0x5c, 0x89, - 0x9a, 0x36, 0x5d, 0x86, 0x9b, 0x36, 0x5d, 0x89, 0x9a, 0x36, 0x5e, 0x86, - 0x9b, 0x36, 0x5f, 0x89, 0x9a, 0x36, 0x60, 0x86, 0x9b, 0x36, 0x60, 0x89, - 0x9a, 0x36, 0x61, 0x86, 0x9b, 0x36, 0x62, 0x89, 0x9a, 0x36, 0x63, 0x86, - 0x9b, 0x36, 0x63, 0x89, 0x9a, 0x36, 0x64, 0x86, 0x9b, 0x36, 0x65, 0x89, - 0x9a, 0x36, 0x66, 0x86, 0x9b, 0x36, 0x66, 0x89, 0x9a, 0x36, 0x67, 0x86, - 0x9b, 0x36, 0x68, 0x89, 0x9a, 0x36, 0x68, 0x86, 0x9b, 0x36, 0x69, 0x89, - 0x9a, 0x36, 0x6a, 0x86, 0x9b, 0x36, 0x6a, 0x89, 0x9a, 0x36, 0x6b, 0x86, - 0x9b, 0x36, 0x6c, 0x89, 0x9a, 0x36, 0x6c, 0x86, 0x9b, 0x36, 0x6d, 0x89, - 0x9a, 0x36, 0x6e, 0x86, 0x9b, 0x36, 0x6e, 0x89, 0x9a, 0x36, 0x6f, 0x86, - 0x9b, 0x36, 0x70, 0x84, 0x9b, 0x36, 0x70, 0x86, 0x9b, 0x36, 0x71, 0x84, - 0x9b, 0x36, 0x72, 0x86, 0x9b, 0x36, 0x72, 0x84, 0x9b, 0x36, 0x73, 0x86, - 0x9b, 0x36, 0x73, 0x84, 0x9b, 0x36, 0x74, 0x86, 0x9b, 0x36, 0x75, 0x84, - 0x9b, 0x36, 0x75, 0x86, 0x9b, 0x36, 0x76, 0x84, 0x9b, 0x36, 0x76, 0x86, - 0x9b, 0x36, 0x77, 0x84, 0x9b, 0x36, 0x78, 0x86, 0x9b, 0x36, 0x78, 0x84, - 0x9b, 0x36, 0x79, 0x86, 0x9b, 0x36, 0x79, 0x84, 0x9b, 0x36, 0x7a, 0x86, - 0x9b, 0x36, 0x7a, 0x84, 0x9b, 0x36, 0x7b, 0x86, 0x9b, 0x36, 0x7c, 0x84, - 0x9b, 0x36, 0x7c, 0x86, 0x9b, 0x36, 0x7d, 0x84, 0x9b, 0x36, 0x7d, 0x86, - 0x9b, 0x36, 0x7e, 0x84, 0x9b, 0x36, 0x7e, 0x86, 0x9b, 0x36, 0x7f, 0x84, - 0x9b, 0x36, 0x7f, 0x86, 0x9b, 0x36, 0x80, 0x84, 0x9b, 0x36, 0x81, 0x86, - 0x9b, 0x36, 0x81, 0x84, 0x9b, 0x36, 0x82, 0x86, 0x9b, 0x36, 0x82, 0x84, - 0x9b, 0x36, 0x83, 0x86, 0x9b, 0x36, 0x83, 0x84, 0x9b, 0x36, 0x84, 0x86, - 0x9b, 0x36, 0x84, 0x84, 0x9b, 0x36, 0x85, 0x86, 0x9b, 0x36, 0x85, 0x84, - 0x9b, 0x36, 0x86, 0x86, 0x9b, 0x36, 0x86, 0x84, 0x9b, 0x36, 0x87, 0x86, - 0x9b, 0x36, 0x87, 0x84, 0x9b, 0x36, 0x88, 0x86, 0x9b, 0x36, 0x88, 0x84, - 0x9b, 0x36, 0x89, 0x86, 0x9b, 0x36, 0x89, 0x84, 0x9b, 0x36, 0x8a, 0x86, - 0x9b, 0x36, 0x8a, 0x84, 0x9b, 0x36, 0x8b, 0x86, 0x9b, 0x36, 0x8b, 0x84, - 0x9b, 0x36, 0x8c, 0x86, 0x9b, 0x36, 0x8c, 0x84, 0x9b, 0x36, 0x8d, 0x86, - 0x9b, 0x36, 0x8d, 0x84, 0x9b, 0x36, 0x8e, 0x86, 0x9b, 0x36, 0x8e, 0x84, - 0x9b, 0x36, 0x8e, 0x86, 0x9b, 0x36, 0x8f, 0x84, 0x9b, 0x36, 0x8f, 0x86, - 0x9b, 0x36, 0x90, 0x84, 0x9b, 0x36, 0x90, 0x86, 0x9b, 0x36, 0x91, 0x84, - 0x9b, 0x36, 0x91, 0x84, 0x9c, 0x36, 0x92, 0x84, 0x9b, 0x36, 0x92, 0x84, - 0x9c, 0x36, 0x93, 0x84, 0x9b, 0x36, 0x93, 0x84, 0x9c, 0x36, 0x94, 0x84, - 0x9b, 0x36, 0x94, 0x84, 0x9c, 0x36, 0x94, 0x84, 0x9b, 0x36, 0x95, 0x84, - 0x9c, 0x36, 0x95, 0x84, 0x9b, 0x36, 0x96, 0x84, 0x9c, 0x36, 0x96, 0x84, - 0x9b, 0x36, 0x97, 0x84, 0x9c, 0x36, 0x97, 0x84, 0x9b, 0x36, 0x98, 0x84, - 0x9c, 0x36, 0x98, 0x84, 0x9b, 0x36, 0x98, 0x84, 0x9c, 0x36, 0x99, 0x84, - 0x9b, 0x36, 0x99, 0x84, 0x9c, 0x36, 0x9a, 0x84, 0x9b, 0x36, 0x9a, 0x84, - 0x9c, 0x36, 0x9a, 0x84, 0x9b, 0x36, 0x9b, 0x84, 0x9c, 0x36, 0x9b, 0x84, - 0x9b, 0x36, 0x9c, 0x84, 0x9c, 0x36, 0x9c, 0x84, 0x9c, 0x36, 0x9d, 0x84, - 0x9d, 0x36, 0x9d, 0x84, 0x9d, 0x36, 0x9d, 0x84, 0x9d, 0x36, 0x9e, 0x84, - 0x9e, 0x36, 0x9e, 0x84, 0x9e, 0x36, 0x9f, 0x84, 0x9f, 0x36, 0x9f, 0x84, - 0x9e, 0x36, 0x9f, 0x84, 0x9f, 0x36, 0xa0, 0x84, 0x9e, 0x36, 0xa0, 0x84, - 0x9f, 0x36, 0xa1, 0x84, 0x9e, 0x36, 0xa1, 0x84, 0x9f, 0x36, 0xa1, 0x85, - 0xa1, 0x36, 0xa2, 0x85, 0xa2, 0x36, 0xa2, 0x85, 0xa2, 0x36, 0xa3, 0x85, - 0xa2, 0x36, 0xa3, 0x85, 0xa2, 0x36, 0xa3, 0x85, 0xa2, 0x36, 0xa4, 0x85, - 0xa2, 0x36, 0xa4, 0x85, 0xa2, 0x36, 0xa5, 0x85, 0xa2, 0x36, 0xa5, 0x86, - 0xa5, 0x36, 0xa5, 0x86, 0xa5, 0x36, 0xa6, 0x86, 0xa6, 0x36, 0xa6, 0x86, - 0xa6, 0x36, 0xa6, 0x86, 0xa6, 0x36, 0xa7, 0x86, 0xa6, 0x36, 0xa7, 0x86, - 0xa6, 0x36, 0xa8, 0x86, 0xa6, 0x36, 0xa8, 0x86, 0xa6, 0x36, 0xa8, 0x86, - 0xa6, 0x36, 0xa9, 0x87, 0xa9, 0x36, 0xa9, 0x87, 0xa9, 0x36, 0xaa, 0x87, - 0xaa, 0x36, 0xaa, 0x87, 0xa9, 0x36, 0xaa, 0x87, 0xaa, 0x36, 0xab, 0x87, - 0xa9, 0x36, 0xab, 0x87, 0xaa, 0x36, 0xab, 0x87, 0xa9, 0x36, 0xac, 0x87, - 0xaa, 0x36, 0xac, 0x87, 0xa9, 0x36, 0xac, 0x87, 0xaa, 0x36, 0xad, 0x88, - 0xad, 0x36, 0xad, 0x88, 0xad, 0x36, 0xae, 0x88, 0xad, 0x36, 0xae, 0x88, - 0xad, 0x36, 0xae, 0x88, 0xad, 0x36, 0xaf, 0x88, 0xad, 0x36, 0xaf, 0x88, - 0xad, 0x36, 0xaf, 0x88, 0xad, 0x36, 0xb0, 0x88, 0xad, 0x36, 0xb0, 0x88, - 0xad, 0x36, 0xb0, 0x89, 0xb0, 0x36, 0xb1, 0x89, 0xb0, 0x36, 0xb1, 0x89, - 0xb0, 0x36, 0xb2, 0x89, 0xb0, 0x36, 0xb2, 0x89, 0xb0, 0x36, 0xb2, 0x89, - 0xb0, 0x36, 0xb3, 0x89, 0xb0, 0x36, 0xb3, 0x89, 0xb2, 0x36, 0xb3, 0x89, - 0xb2, 0x36, 0xb4, 0x89, 0xb2, 0x36, 0xb4, 0x89, 0xb2, 0x36, 0xb4, 0x89, - 0xb2, 0x36, 0xb5, 0x8a, 0xb3, 0x36, 0xb5, 0x8a, 0xb4, 0x36, 0xb5, 0x8a, - 0xb3, 0x36, 0xb6, 0x8a, 0xb4, 0x36, 0xb6, 0x8a, 0xb3, 0x36, 0xb6, 0x8a, - 0xb4, 0x36, 0xb7, 0x8b, 0xb7, 0x36, 0xb7, 0x8b, 0xb7, 0x36, 0xb7, 0x8b, - 0xb7, 0x36, 0xb8, 0x8b, 0xb7, 0x36, 0xb8, 0x8b, 0xb7, 0x36, 0xb8, 0x8b, - 0xb7, 0x36, 0xb9, 0x8b, 0xb7, 0x36, 0xb9, 0x8b, 0xb7, 0x36, 0xb9, 0x8b, - 0xb7, 0x36, 0xba, 0x8b, 0xb7, 0x36, 0xba, 0x8c, 0xba, 0x36, 0xba, 0x8b, - 0xb7, 0x36, 0xbb, 0x8c, 0xba, 0x36, 0xbb, 0x8c, 0xba, 0x36, 0xbb, 0x8c, - 0xba, 0x36, 0xbc, 0x8c, 0xba, 0x36, 0xbc, 0x8c, 0xba, 0x36, 0xbc, 0x8c, - 0xba, 0x36, 0xbd, 0x8c, 0xba, 0x36, 0xbd, 0x8c, 0xba, 0x36, 0xbd, 0x8c, - 0xba, 0x36, 0xbe, 0x8d, 0xbd, 0x36, 0xbe, 0x8d, 0xbd, 0x36, 0xbe, 0x8d, - 0xbd, 0x36, 0xbf, 0x8d, 0xbd, 0x36, 0xbf, 0x8d, 0xbd, 0x36, 0xbf, 0x8d, - 0xbd, 0x36, 0xc0, 0x8d, 0xbd, 0x36, 0xc0, 0x8d, 0xbd, 0x36, 0xc0, 0x8d, - 0xbd, 0x36, 0xc1, 0x8e, 0xc0, 0x36, 0xc1, 0x8e, 0xc0, 0x36, 0xc1, 0x8e, - 0xc0, 0x36, 0xc1, 0x8e, 0xc0, 0x36, 0xc2, 0x8e, 0xc0, 0x36, 0xc2, 0x8e, - 0xc0, 0x36, 0xc2, 0x8e, 0xc0, 0x36, 0xc3, 0x8e, 0xc0, 0x36, 0xc3, 0x8e, - 0xc0, 0x36, 0xc3, 0x8e, 0xc0, 0x36, 0xc4, 0x8e, 0xc3, 0x36, 0xc4, 0x8e, - 0xc3, 0x36, 0xc4, 0x8e, 0xc3, 0x36, 0xc5, 0x8e, 0xc3, 0x36, 0xc5, 0x8e, - 0xc3, 0x36, 0xc5, 0x8e, 0xc3, 0x36, 0xc6, 0x8e, 0xc3, 0x36, 0xc6, 0x8e, - 0xc3, 0x36, 0xc6, 0x8e, 0xc3, 0x36, 0xc6, 0x8f, 0xc6, 0x36, 0xc7, 0x8e, - 0xc3, 0x36, 0xc7, 0x8f, 0xc6, 0x36, 0xc7, 0x8f, 0xc6, 0x36, 0xc8, 0x8f, - 0xc6, 0x36, 0xc8, 0x8f, 0xc6, 0x36, 0xc8, 0x8f, 0xc6, 0x36, 0xc9, 0x8f, - 0xc6, 0x36, 0xc9, 0x8f, 0xc6, 0x36, 0xc9, 0x8f, 0xc6, 0x36, 0xc9, 0x8f, - 0xc6, 0x36, 0xca, 0x90, 0xc9, 0x36, 0xca, 0x90, 0xc9, 0x36, 0xca, 0x90, - 0xc9, 0x36, 0xcb, 0x90, 0xc9, 0x36, 0xcb, 0x90, 0xc9, 0x36, 0xcb, 0x90, - 0xc9, 0x36, 0xcc, 0x90, 0xc9, 0x36, 0xcc, 0x90, 0xc9, 0x36, 0xcc, 0x90, - 0xc9, 0x36, 0xcc, 0x90, 0xc9, 0x36, 0xcd, 0x91, 0xcc, 0x36, 0xcd, 0x91, - 0xcb, 0x36, 0xcd, 0x91, 0xcc, 0x36, 0xce, 0x91, 0xcb, 0x36, 0xce, 0x91, - 0xcc, 0x36, 0xce, 0x91, 0xcb, 0x36, 0xce, 0x91, 0xcc, 0x36, 0xcf, 0x91, - 0xcb, 0x36, 0xcf, 0x91, 0xcc, 0x36, 0xcf, 0x92, 0xce, 0x36, 0xd0, 0x92, - 0xce, 0x36, 0xd0, 0x92, 0xce, 0x36, 0xd0, 0x92, 0xce, 0x36, 0xd0, 0x92, - 0xce, 0x36, 0xd1, 0x92, 0xce, 0x36, 0xd1, 0x92, 0xce, 0x36, 0xd1, 0x92, - 0xce, 0x36, 0xd2, 0x92, 0xce, 0x36, 0xd2, 0x92, 0xce, 0x36, 0xd2, 0x93, - 0xd1, 0x36, 0xd2, 0x92, 0xce, 0x36, 0xd3, 0x93, 0xd1, 0x36, 0xd3, 0x93, - 0xd1, 0x36, 0xd3, 0x93, 0xd1, 0x36, 0xd4, 0x93, 0xd1, 0x36, 0xd4, 0x93, - 0xd1, 0x36, 0xd4, 0x93, 0xd1, 0x36, 0xd4, 0x93, 0xd1, 0x36, 0xd5, 0x94, - 0xd4, 0x36, 0xd5, 0x93, 0xd1, 0x36, 0xd5, 0x94, 0xd4, 0x36, 0xd6, 0x94, - 0xd3, 0x36, 0xd6, 0x94, 0xd4, 0x36, 0xd6, 0x94, 0xd3, 0x36, 0xd6, 0x94, - 0xd4, 0x36, 0xd7, 0x94, 0xd3, 0x36, 0xd7, 0x94, 0xd4, 0x36, 0xd7, 0x95, - 0xd6, 0x36, 0xd7, 0x95, 0xd6, 0x36, 0xd8, 0x95, 0xd6, 0x36, 0xd8, 0x95, - 0xd6, 0x36, 0xd8, 0x95, 0xd6, 0x36, 0xd9, 0x95, 0xd6, 0x36, 0xd9, 0x95, - 0xd6, 0x36, 0xd9, 0x95, 0xd6, 0x36, 0xd9, 0x95, 0xd6, 0x36, 0xda, 0x95, - 0xd6, 0x36, 0xda, 0x95, 0xd6, 0x36, 0xda, 0x95, 0xd6, 0x36, 0xda, 0x96, - 0xd9, 0x36, 0xdb, 0x96, 0xd9, 0x36, 0xdb, 0x96, 0xd9, 0x36, 0xdb, 0x96, - 0xd9, 0x36, 0xdb, 0x96, 0xd9, 0x36, 0xdc, 0x96, 0xd9, 0x36, 0xdc, 0x96, - 0xd9, 0x36, 0xdc, 0x96, 0xd9, 0x36, 0xdd, 0x96, 0xd9, 0x36, 0xdd, 0x97, - 0xdb, 0x36, 0xdd, 0x96, 0xd9, 0x36, 0xdd, 0x97, 0xdb, 0x36, 0xde, 0x97, - 0xdb, 0x36, 0xde, 0x97, 0xdb, 0x36, 0xde, 0x97, 0xdb, 0x36, 0xde, 0x97, - 0xdb, 0x36, 0xdf, 0x97, 0xdb, 0x36, 0xdf, 0x97, 0xdb, 0x36, 0xdf, 0x98, - 0xde, 0x36, 0xdf, 0x98, 0xde, 0x36, 0xe0, 0x98, 0xde, 0x36, 0xe0, 0x98, - 0xde, 0x36, 0xe0, 0x98, 0xde, 0x36, 0xe1, 0x98, 0xde, 0x36, 0xe1, 0x98, - 0xde, 0x36, 0xe1, 0x98, 0xde, 0x36, 0xe1, 0x98, 0xde, 0x36, 0xe2, 0x98, - 0xde, 0x36, 0xe2, 0x98, 0xe0, 0x36, 0xe2, 0x98, 0xde, 0x36, 0xe2, 0x98, - 0xe0, 0x36, 0xe3, 0x98, 0xe0, 0x36, 0xe3, 0x98, 0xe0, 0x36, 0xe3, 0x98, - 0xe0, 0x36, 0xe3, 0x98, 0xe0, 0x36, 0xe4, 0x98, 0xe0, 0x36, 0xe4, 0x98, - 0xe0, 0x36, 0xe4, 0x98, 0xe0, 0x36, 0xe4, 0x98, 0xe0, 0x36, 0xe5, 0x99, - 0xe3, 0x36, 0xe5, 0x99, 0xe2, 0x36, 0xe5, 0x99, 0xe3, 0x36, 0xe5, 0x99, - 0xe2, 0x36, 0xe6, 0x99, 0xe3, 0x36, 0xe6, 0x99, 0xe2, 0x36, 0xe6, 0x99, - 0xe3, 0x36, 0xe6, 0x99, 0xe2, 0x36, 0xe7, 0x99, 0xe3, 0x36, 0xe7, 0x9a, - 0xe5, 0x36, 0xe7, 0x9a, 0xe5, 0x36, 0xe7, 0x9a, 0xe5, 0x36, 0xe8, 0x9a, - 0xe5, 0x36, 0xe8, 0x9a, 0xe5, 0x36, 0xe8, 0x9a, 0xe5, 0x36, 0xe8, 0x9a, - 0xe5, 0x36, 0xe9, 0x9a, 0xe5, 0x36, 0xe9, 0x9a, 0xe5, 0x36, 0xe9, 0x9a, - 0xe5, 0x36, 0xe9, 0x9b, 0xe7, 0x36, 0xea, 0x9a, 0xe5, 0x36, 0xea, 0x9b, - 0xe7, 0x36, 0xea, 0x9b, 0xe7, 0x36, 0xea, 0x9b, 0xe7, 0x36, 0xeb, 0x9b, - 0xe7, 0x36, 0xeb, 0x9b, 0xe7, 0x36, 0xeb, 0x9b, 0xe7, 0x36, 0xeb, 0x9b, - 0xe7, 0x36, 0xec, 0x9c, 0xea, 0x36, 0xec, 0x9c, 0xea, 0x36, 0xec, 0x9c, - 0xea, 0x36, 0xec, 0x9c, 0xea, 0x36, 0xec, 0x9c, 0xea, 0x36, 0xed, 0x9c, - 0xea, 0x36, 0xed, 0x9c, 0xea, 0x36, 0xed, 0x9c, 0xea, 0x36, 0xed, 0x9c, - 0xea, 0x36, 0xee, 0x9c, 0xea, 0x36, 0xee, 0x9d, 0xec, 0x36, 0xee, 0x9c, - 0xea, 0x36, 0xee, 0x9d, 0xec, 0x36, 0xef, 0x9d, 0xec, 0x36, 0xef, 0x9d, - 0xec, 0x36, 0xef, 0x9d, 0xec, 0x36, 0xef, 0x9d, 0xec, 0x36, 0xf0, 0x9d, - 0xec, 0x36, 0xf0, 0x9d, 0xec, 0x36, 0xf0, 0x9d, 0xee, 0x36, 0xf0, 0x9d, - 0xec, 0x36, 0xf1, 0x9d, 0xee, 0x36, 0xf1, 0x9d, 0xec, 0x36, 0xf1, 0x9d, - 0xee, 0x36, 0xf1, 0x9d, 0xee, 0x36, 0xf2, 0x9d, 0xee, 0x36, 0xf2, 0x9d, - 0xee, 0x36, 0xf2, 0x9d, 0xee, 0x36, 0xf2, 0x9d, 0xee, 0x36, 0xf2, 0x9d, - 0xee, 0x36, 0xf3, 0x9e, 0xf0, 0x36, 0xf3, 0x9e, 0xf1, 0x36, 0xf3, 0x9e, - 0xf0, 0x36, 0xf3, 0x9e, 0xf1, 0x36, 0xf4, 0x9e, 0xf0, 0x36, 0xf4, 0x9e, - 0xf1, 0x36, 0xf4, 0x9e, 0xf0, 0x36, 0xf4, 0x9e, 0xf1, 0x36, 0xf5, 0x9e, - 0xf0, 0x36, 0xf5, 0x9e, 0xf1, 0x36, 0xf5, 0x9f, 0xf3, 0x36, 0xf5, 0x9e, - 0xf1, 0x36, 0xf5, 0x9f, 0xf3, 0x36, 0xf6, 0x9f, 0xf2, 0x36, 0xf6, 0x9f, - 0xf3, 0x36, 0xf6, 0x9f, 0xf2, 0x36, 0xf6, 0x9f, 0xf3, 0x36, 0xf7, 0x9f, - 0xf2, 0x36, 0xf7, 0x9f, 0xf3, 0x36, 0xf7, 0xa0, 0xf5, 0x36, 0xf7, 0x9f, - 0xf3, 0x36, 0xf8, 0xa0, 0xf5, 0x36, 0xf8, 0xa0, 0xf5, 0x36, 0xf8, 0xa0, - 0xf5, 0x36, 0xf8, 0xa0, 0xf5, 0x36, 0xf8, 0xa0, 0xf5, 0x36, 0xf9, 0xa0, - 0xf5, 0x36, 0xf9, 0xa0, 0xf5, 0x36, 0xf9, 0xa1, 0xf7, 0x36, 0xf9, 0xa1, - 0xf7, 0x36, 0xfa, 0xa1, 0xf7, 0x36, 0xfa, 0xa1, 0xf7, 0x36, 0xfa, 0xa1, - 0xf7, 0x36, 0xfa, 0xa1, 0xf7, 0x36, 0xfa, 0xa1, 0xf7, 0x36, 0xfb, 0xa1, - 0xf7, 0x36, 0xfb, 0xa1, 0xf7, 0x36, 0xfb, 0xa1, 0xf7, 0x36, 0xfb, 0xa1, - 0xf7, 0x36, 0xfc, 0xa1, 0xf7, 0x36, 0xfc, 0xa1, 0xf9, 0x36, 0xfc, 0xa1, - 0xf7, 0x36, 0xfc, 0xa1, 0xf9, 0x36, 0xfc, 0xa1, 0xf9, 0x36, 0xfd, 0xa1, - 0xf9, 0x36, 0xfd, 0xa1, 0xf9, 0x36, 0xfd, 0xa1, 0xf9, 0x36, 0xfd, 0xa1, - 0xf9, 0x36, 0xfe, 0xa1, 0xf9, 0x36, 0xfe, 0xa2, 0xfb, 0x36, 0xfe, 0xa1, - 0xf9, 0x36, 0xfe, 0xa2, 0xfb, 0x36, 0xfe, 0xa2, 0xfb, 0x36, 0xff, 0xa2, - 0xfb, 0x36, 0xff, 0xa2, 0xfb, 0x36, 0x03, 0x89, 0x9a, 0x36, 0x0a, 0x8c, - 0x9a, 0x36, 0x0f, 0x89, 0x9a, 0x36, 0x14, 0x8c, 0x9a, 0x36, 0x17, 0x89, - 0x9a, 0x36, 0x1b, 0x8c, 0x9a, 0x36, 0x1e, 0x89, 0x9a, 0x36, 0x20, 0x8c, - 0x9a, 0x36, 0x23, 0x89, 0x9a, 0x36, 0x25, 0x8c, 0x9a, 0x36, 0x27, 0x89, - 0x9a, 0x36, 0x29, 0x8c, 0x9a, 0x36, 0x2b, 0x89, 0x9a, 0x36, 0x2d, 0x8c, - 0x9a, 0x36, 0x2f, 0x89, 0x9a, 0x36, 0x31, 0x8c, 0x9a, 0x36, 0x32, 0x89, - 0x9a, 0x36, 0x34, 0x8c, 0x9a, 0x36, 0x35, 0x89, 0x9a, 0x36, 0x37, 0x8c, - 0x9a, 0x36, 0x38, 0x89, 0x9a, 0x36, 0x3a, 0x8c, 0x9a, 0x36, 0x3b, 0x89, - 0x9a, 0x36, 0x3c, 0x8c, 0x9a, 0x36, 0x3e, 0x89, 0x9a, 0x36, 0x3f, 0x8c, - 0x9a, 0x36, 0x40, 0x89, 0x9a, 0x36, 0x42, 0x8c, 0x9a, 0x36, 0x43, 0x89, - 0x9a, 0x36, 0x44, 0x8c, 0x9a, 0x36, 0x45, 0x89, 0x9a, 0x36, 0x46, 0x8c, - 0x9a, 0x36, 0x47, 0x89, 0x9a, 0x36, 0x48, 0x8c, 0x9a, 0x36, 0x49, 0x89, - 0x9a, 0x36, 0x4a, 0x8c, 0x9a, 0x36, 0x4b, 0x89, 0x9a, 0x36, 0x4c, 0x8c, - 0x9a, 0x36, 0x4d, 0x89, 0x9a, 0x36, 0x4e, 0x8c, 0x9a, 0x36, 0x4f, 0x89, - 0x9a, 0x36, 0x50, 0x8c, 0x9a, 0x36, 0x51, 0x89, 0x9a, 0x36, 0x52, 0x8c, - 0x9a, 0x36, 0x53, 0x89, 0x9a, 0x36, 0x54, 0x8c, 0x9a, 0x36, 0x55, 0x89, - 0x9a, 0x36, 0x56, 0x86, 0x9b, 0x36, 0x57, 0x89, 0x9a, 0x36, 0x58, 0x86, - 0x9b, 0x36, 0x58, 0x89, 0x9a, 0x36, 0x59, 0x86, 0x9b, 0x36, 0x5a, 0x89, - 0x9a, 0x36, 0x5b, 0x86, 0x9b, 0x36, 0x5c, 0x89, 0x9a, 0x36, 0x5d, 0x86, - 0x9b, 0x36, 0x5d, 0x89, 0x9a, 0x36, 0x5e, 0x86, 0x9b, 0x36, 0x5f, 0x89, - 0x9a, 0x36, 0x60, 0x86, 0x9b, 0x36, 0x60, 0x89, 0x9a, 0x36, 0x61, 0x86, - 0x9b, 0x36, 0x62, 0x89, 0x9a, 0x36, 0x63, 0x86, 0x9b, 0x36, 0x63, 0x89, - 0x9a, 0x36, 0x64, 0x86, 0x9b, 0x36, 0x65, 0x89, 0x9a, 0x36, 0x66, 0x86, - 0x9b, 0x36, 0x66, 0x89, 0x9a, 0x36, 0x67, 0x86, 0x9b, 0x36, 0x68, 0x89, - 0x9a, 0x36, 0x68, 0x86, 0x9b, 0x36, 0x69, 0x89, 0x9a, 0x36, 0x6a, 0x86, - 0x9b, 0x36, 0x6a, 0x89, 0x9a, 0x36, 0x6b, 0x86, 0x9b, 0x36, 0x6c, 0x89, - 0x9a, 0x36, 0x6c, 0x86, 0x9b, 0x36, 0x6d, 0x89, 0x9a, 0x36, 0x6e, 0x86, - 0x9b, 0x36, 0x6e, 0x89, 0x9a, 0x36, 0x6f, 0x86, 0x9b, 0x36, 0x70, 0x89, - 0x9a, 0x36, 0x70, 0x86, 0x9b, 0x36, 0x71, 0x83, 0x9b, 0x36, 0x72, 0x86, - 0x9b, 0x36, 0x72, 0x83, 0x9b, 0x36, 0x73, 0x86, 0x9b, 0x36, 0x73, 0x83, - 0x9b, 0x36, 0x74, 0x86, 0x9b, 0x36, 0x75, 0x83, 0x9b, 0x36, 0x75, 0x86, - 0x9b, 0x36, 0x76, 0x83, 0x9b, 0x36, 0x76, 0x86, 0x9b, 0x36, 0x77, 0x83, - 0x9b, 0x36, 0x78, 0x86, 0x9b, 0x36, 0x78, 0x83, 0x9b, 0x36, 0x79, 0x86, - 0x9b, 0x36, 0x79, 0x83, 0x9b, 0x36, 0x7a, 0x86, 0x9b, 0x36, 0x7a, 0x83, - 0x9b, 0x36, 0x7b, 0x86, 0x9b, 0x36, 0x7c, 0x83, 0x9b, 0x36, 0x7c, 0x86, - 0x9b, 0x36, 0x7d, 0x83, 0x9b, 0x36, 0x7d, 0x86, 0x9b, 0x36, 0x7e, 0x83, - 0x9b, 0x36, 0x7e, 0x86, 0x9b, 0x36, 0x7f, 0x83, 0x9b, 0x36, 0x7f, 0x86, - 0x9b, 0x36, 0x80, 0x83, 0x9b, 0x36, 0x81, 0x86, 0x9b, 0x36, 0x81, 0x83, - 0x9b, 0x36, 0x82, 0x86, 0x9b, 0x36, 0x82, 0x83, 0x9b, 0x36, 0x83, 0x86, - 0x9b, 0x36, 0x83, 0x83, 0x9b, 0x36, 0x84, 0x86, 0x9b, 0x36, 0x84, 0x83, - 0x9b, 0x36, 0x85, 0x86, 0x9b, 0x36, 0x85, 0x83, 0x9b, 0x36, 0x86, 0x86, - 0x9b, 0x36, 0x86, 0x83, 0x9b, 0x36, 0x87, 0x86, 0x9b, 0x36, 0x87, 0x83, - 0x9b, 0x36, 0x88, 0x86, 0x9b, 0x36, 0x88, 0x83, 0x9b, 0x36, 0x89, 0x86, - 0x9b, 0x36, 0x89, 0x83, 0x9b, 0x36, 0x8a, 0x86, 0x9b, 0x36, 0x8a, 0x83, - 0x9b, 0x36, 0x8b, 0x86, 0x9b, 0x36, 0x8b, 0x83, 0x9b, 0x36, 0x8c, 0x86, - 0x9b, 0x36, 0x8c, 0x83, 0x9b, 0x36, 0x8d, 0x86, 0x9b, 0x36, 0x8d, 0x83, - 0x9b, 0x36, 0x8e, 0x83, 0x9c, 0x36, 0x8e, 0x83, 0x9b, 0x36, 0x8e, 0x83, - 0x9c, 0x36, 0x8f, 0x83, 0x9b, 0x36, 0x8f, 0x83, 0x9c, 0x36, 0x90, 0x83, - 0x9b, 0x36, 0x90, 0x83, 0x9c, 0x36, 0x91, 0x83, 0x9b, 0x36, 0x91, 0x83, - 0x9c, 0x36, 0x92, 0x83, 0x9b, 0x36, 0x92, 0x83, 0x9c, 0x36, 0x93, 0x83, - 0x9b, 0x36, 0x93, 0x83, 0x9c, 0x36, 0x94, 0x83, 0x9b, 0x36, 0x94, 0x83, - 0x9c, 0x36, 0x94, 0x83, 0x9b, 0x36, 0x95, 0x83, 0x9c, 0x36, 0x95, 0x83, - 0x9b, 0x36, 0x96, 0x83, 0x9c, 0x36, 0x96, 0x83, 0x9b, 0x36, 0x97, 0x83, - 0x9c, 0x36, 0x97, 0x83, 0x9b, 0x36, 0x98, 0x83, 0x9c, 0x36, 0x98, 0x83, - 0x9b, 0x36, 0x98, 0x83, 0x9c, 0x36, 0x99, 0x83, 0x9b, 0x36, 0x99, 0x83, - 0x9c, 0x36, 0x9a, 0x83, 0x9b, 0x36, 0x9a, 0x83, 0x9c, 0x36, 0x9a, 0x83, - 0x9b, 0x36, 0x9b, 0x83, 0x9c, 0x36, 0x9b, 0x83, 0x9b, 0x36, 0x9c, 0x83, - 0x9c, 0x36, 0x9c, 0x83, 0x9c, 0x36, 0x9d, 0x83, 0x9d, 0x36, 0x9d, 0x83, - 0x9c, 0x36, 0x9d, 0x83, 0x9d, 0x36, 0x9e, 0x83, 0x9c, 0x36, 0x9e, 0x83, - 0x9d, 0x36, 0x9f, 0x84, 0x9f, 0x36, 0x9f, 0x84, 0x9f, 0x36, 0x9f, 0x84, - 0x9f, 0x36, 0xa0, 0x84, 0xa0, 0x36, 0xa0, 0x84, 0xa0, 0x36, 0xa1, 0x84, - 0xa1, 0x36, 0xa1, 0x84, 0xa0, 0x36, 0xa1, 0x84, 0xa1, 0x36, 0xa2, 0x84, - 0xa0, 0x36, 0xa2, 0x84, 0xa1, 0x36, 0xa3, 0x84, 0xa0, 0x36, 0xa3, 0x84, - 0xa1, 0x36, 0xa3, 0x85, 0xa3, 0x36, 0xa4, 0x85, 0xa4, 0x36, 0xa4, 0x85, - 0xa4, 0x36, 0xa5, 0x85, 0xa4, 0x36, 0xa5, 0x85, 0xa4, 0x36, 0xa5, 0x85, - 0xa4, 0x36, 0xa6, 0x85, 0xa4, 0x36, 0xa6, 0x85, 0xa4, 0x36, 0xa6, 0x85, - 0xa4, 0x36, 0xa7, 0x86, 0xa7, 0x36, 0xa7, 0x86, 0xa7, 0x36, 0xa8, 0x86, - 0xa8, 0x36, 0xa8, 0x86, 0xa7, 0x36, 0xa8, 0x86, 0xa8, 0x36, 0xa9, 0x86, - 0xa7, 0x36, 0xa9, 0x86, 0xa8, 0x36, 0xaa, 0x86, 0xa7, 0x36, 0xaa, 0x86, - 0xa8, 0x36, 0xaa, 0x87, 0xaa, 0x36, 0xab, 0x87, 0xab, 0x36, 0xab, 0x87, - 0xab, 0x36, 0xab, 0x87, 0xab, 0x36, 0xac, 0x87, 0xab, 0x36, 0xac, 0x87, - 0xab, 0x36, 0xac, 0x87, 0xab, 0x36, 0xad, 0x87, 0xab, 0x36, 0xad, 0x87, - 0xab, 0x36, 0xae, 0x87, 0xab, 0x36, 0xae, 0x87, 0xab, 0x36, 0xae, 0x87, - 0xab, 0x36, 0xaf, 0x88, 0xaf, 0x36, 0xaf, 0x88, 0xae, 0x36, 0xaf, 0x88, - 0xaf, 0x36, 0xb0, 0x88, 0xae, 0x36, 0xb0, 0x88, 0xaf, 0x36, 0xb0, 0x88, - 0xae, 0x36, 0xb1, 0x88, 0xaf, 0x36, 0xb1, 0x88, 0xae, 0x36, 0xb2, 0x88, - 0xaf, 0x36, 0xb2, 0x89, 0xb2, 0x36, 0xb2, 0x89, 0xb2, 0x36, 0xb3, 0x89, - 0xb2, 0x36, 0xb3, 0x89, 0xb2, 0x36, 0xb3, 0x89, 0xb2, 0x36, 0xb4, 0x89, - 0xb2, 0x36, 0xb4, 0x89, 0xb2, 0x36, 0xb4, 0x89, 0xb2, 0x36, 0xb5, 0x89, - 0xb2, 0x36, 0xb5, 0x89, 0xb2, 0x36, 0xb5, 0x8a, 0xb5, 0x36, 0xb6, 0x8a, - 0xb5, 0x36, 0xb6, 0x8a, 0xb5, 0x36, 0xb6, 0x8a, 0xb5, 0x36, 0xb7, 0x8a, - 0xb5, 0x36, 0xb7, 0x8a, 0xb5, 0x36, 0xb7, 0x8a, 0xb5, 0x36, 0xb8, 0x8a, - 0xb5, 0x36, 0xb8, 0x8a, 0xb5, 0x36, 0xb8, 0x8b, 0xb8, 0x36, 0xb9, 0x8b, - 0xb8, 0x36, 0xb9, 0x8b, 0xb8, 0x36, 0xb9, 0x8b, 0xb8, 0x36, 0xba, 0x8b, - 0xb8, 0x36, 0xba, 0x8b, 0xb8, 0x36, 0xba, 0x8b, 0xb8, 0x36, 0xbb, 0x8b, - 0xb8, 0x36, 0xbb, 0x8b, 0xb8, 0x36, 0xbb, 0x8c, 0xbb, 0x36, 0xbc, 0x8c, - 0xbc, 0x36, 0xbc, 0x8c, 0xbb, 0x36, 0xbc, 0x8c, 0xbc, 0x36, 0xbd, 0x8c, - 0xbb, 0x36, 0xbd, 0x8c, 0xbc, 0x36, 0xbd, 0x8c, 0xbb, 0x36, 0xbe, 0x8c, - 0xbc, 0x36, 0xbe, 0x8c, 0xbb, 0x36, 0xbe, 0x8c, 0xbc, 0x36, 0xbf, 0x8c, - 0xbb, 0x36, 0xbf, 0x8c, 0xbc, 0x36, 0xbf, 0x8d, 0xbf, 0x36, 0xc0, 0x8d, - 0xbe, 0x36, 0xc0, 0x8d, 0xbf, 0x36, 0xc0, 0x8d, 0xbe, 0x36, 0xc1, 0x8d, - 0xbf, 0x36, 0xc1, 0x8d, 0xbe, 0x36, 0xc1, 0x8d, 0xbf, 0x36, 0xc1, 0x8d, - 0xbe, 0x36, 0xc2, 0x8d, 0xbf, 0x36, 0xc2, 0x8e, 0xc1, 0x36, 0xc2, 0x8e, - 0xc1, 0x36, 0xc3, 0x8e, 0xc1, 0x36, 0xc3, 0x8e, 0xc1, 0x36, 0xc3, 0x8e, - 0xc1, 0x36, 0xc4, 0x8e, 0xc1, 0x36, 0xc4, 0x8e, 0xc1, 0x36, 0xc4, 0x8e, - 0xc1, 0x36, 0xc5, 0x8e, 0xc1, 0x36, 0xc5, 0x8f, 0xc4, 0x36, 0xc5, 0x8f, - 0xc5, 0x36, 0xc6, 0x8f, 0xc4, 0x36, 0xc6, 0x8f, 0xc5, 0x36, 0xc6, 0x8f, - 0xc4, 0x36, 0xc6, 0x8f, 0xc5, 0x36, 0xc7, 0x8f, 0xc4, 0x36, 0xc7, 0x8f, - 0xc5, 0x36, 0xc7, 0x8f, 0xc4, 0x36, 0xc8, 0x8f, 0xc5, 0x36, 0xc8, 0x90, - 0xc7, 0x36, 0xc8, 0x8f, 0xc5, 0x36, 0xc9, 0x90, 0xc7, 0x36, 0xc9, 0x90, - 0xc7, 0x36, 0xc9, 0x90, 0xc7, 0x36, 0xc9, 0x90, 0xc7, 0x36, 0xca, 0x90, - 0xc7, 0x36, 0xca, 0x90, 0xc7, 0x36, 0xca, 0x90, 0xc7, 0x36, 0xcb, 0x90, - 0xc7, 0x36, 0xcb, 0x90, 0xc7, 0x36, 0xcb, 0x91, 0xca, 0x36, 0xcc, 0x91, - 0xca, 0x36, 0xcc, 0x91, 0xca, 0x36, 0xcc, 0x91, 0xca, 0x36, 0xcc, 0x91, - 0xca, 0x36, 0xcd, 0x91, 0xca, 0x36, 0xcd, 0x91, 0xca, 0x36, 0xcd, 0x91, - 0xca, 0x36, 0xce, 0x91, 0xca, 0x36, 0xce, 0x92, 0xcd, 0x36, 0xce, 0x92, - 0xcd, 0x36, 0xce, 0x92, 0xcd, 0x36, 0xcf, 0x92, 0xcd, 0x36, 0xcf, 0x92, - 0xcd, 0x36, 0xcf, 0x92, 0xcd, 0x36, 0xd0, 0x92, 0xcd, 0x36, 0xd0, 0x92, - 0xcd, 0x36, 0xd0, 0x92, 0xcd, 0x36, 0xd0, 0x92, 0xcd, 0x36, 0xd1, 0x93, - 0xd0, 0x36, 0xd1, 0x93, 0xcf, 0x36, 0xd1, 0x93, 0xd0, 0x36, 0xd2, 0x93, - 0xcf, 0x36, 0xd2, 0x93, 0xd0, 0x36, 0xd2, 0x93, 0xcf, 0x36, 0xd2, 0x93, - 0xd0, 0x36, 0xd3, 0x93, 0xcf, 0x36, 0xd3, 0x93, 0xd0, 0x36, 0xd3, 0x94, - 0xd2, 0x36, 0xd4, 0x94, 0xd2, 0x36, 0xd4, 0x94, 0xd2, 0x36, 0xd4, 0x94, - 0xd2, 0x36, 0xd4, 0x94, 0xd2, 0x36, 0xd5, 0x94, 0xd2, 0x36, 0xd5, 0x94, - 0xd2, 0x36, 0xd5, 0x94, 0xd2, 0x36, 0xd6, 0x94, 0xd2, 0x36, 0xd6, 0x94, - 0xd2, 0x36, 0xd6, 0x94, 0xd5, 0x36, 0xd6, 0x94, 0xd2, 0x36, 0xd7, 0x94, - 0xd5, 0x36, 0xd7, 0x94, 0xd5, 0x36, 0xd7, 0x94, 0xd5, 0x36, 0xd7, 0x94, - 0xd5, 0x36, 0xd8, 0x94, 0xd5, 0x36, 0xd8, 0x94, 0xd5, 0x36, 0xd8, 0x94, - 0xd5, 0x36, 0xd9, 0x95, 0xd7, 0x36, 0xd9, 0x94, 0xd5, 0x36, 0xd9, 0x95, - 0xd7, 0x36, 0xd9, 0x95, 0xd7, 0x36, 0xda, 0x95, 0xd7, 0x36, 0xda, 0x95, - 0xd7, 0x36, 0xda, 0x95, 0xd7, 0x36, 0xda, 0x95, 0xd7, 0x36, 0xdb, 0x95, - 0xd7, 0x36, 0xdb, 0x95, 0xd7, 0x36, 0xdb, 0x95, 0xd7, 0x36, 0xdb, 0x96, - 0xda, 0x36, 0xdc, 0x96, 0xda, 0x36, 0xdc, 0x96, 0xda, 0x36, 0xdc, 0x96, - 0xda, 0x36, 0xdd, 0x96, 0xda, 0x36, 0xdd, 0x96, 0xda, 0x36, 0xdd, 0x96, - 0xda, 0x36, 0xdd, 0x96, 0xda, 0x36, 0xde, 0x96, 0xda, 0x36, 0xde, 0x96, - 0xda, 0x36, 0xde, 0x97, 0xdd, 0x36, 0xde, 0x96, 0xda, 0x36, 0xdf, 0x97, - 0xdd, 0x36, 0xdf, 0x97, 0xdc, 0x36, 0xdf, 0x97, 0xdd, 0x36, 0xdf, 0x97, - 0xdc, 0x36, 0xe0, 0x97, 0xdd, 0x36, 0xe0, 0x97, 0xdc, 0x36, 0xe0, 0x97, - 0xdd, 0x36, 0xe1, 0x98, 0xdf, 0x36, 0xe1, 0x97, 0xdd, 0x36, 0xe1, 0x98, - 0xdf, 0x36, 0xe1, 0x98, 0xdf, 0x36, 0xe2, 0x98, 0xdf, 0x36, 0xe2, 0x98, - 0xdf, 0x36, 0xe2, 0x98, 0xdf, 0x36, 0xe2, 0x98, 0xdf, 0x36, 0xe3, 0x98, - 0xdf, 0x36, 0xe3, 0x99, 0xe1, 0x36, 0xe3, 0x99, 0xe2, 0x36, 0xe3, 0x99, - 0xe1, 0x36, 0xe4, 0x99, 0xe2, 0x36, 0xe4, 0x99, 0xe1, 0x36, 0xe4, 0x99, - 0xe2, 0x36, 0xe4, 0x99, 0xe1, 0x36, 0xe5, 0x99, 0xe2, 0x36, 0xe5, 0x99, - 0xe1, 0x36, 0xe5, 0x99, 0xe2, 0x36, 0xe5, 0x99, 0xe1, 0x36, 0xe6, 0x99, - 0xe2, 0x36, 0xe6, 0x9a, 0xe4, 0x36, 0xe6, 0x9a, 0xe4, 0x36, 0xe6, 0x9a, - 0xe4, 0x36, 0xe7, 0x9a, 0xe4, 0x36, 0xe7, 0x9a, 0xe4, 0x36, 0xe7, 0x9a, - 0xe4, 0x36, 0xe7, 0x9a, 0xe4, 0x36, 0xe8, 0x9a, 0xe4, 0x36, 0xe8, 0x9a, - 0xe4, 0x36, 0xe8, 0x9a, 0xe6, 0x36, 0xe8, 0x9a, 0xe4, 0x36, 0xe9, 0x9a, - 0xe6, 0x36, 0xe9, 0x9a, 0xe6, 0x36, 0xe9, 0x9a, 0xe6, 0x36, 0xe9, 0x9a, - 0xe6, 0x36, 0xea, 0x9a, 0xe6, 0x36, 0xea, 0x9a, 0xe6, 0x36, 0xea, 0x9a, - 0xe6, 0x36, 0xea, 0x9b, 0xe8, 0x36, 0xeb, 0x9b, 0xe9, 0x36, 0xeb, 0x9b, - 0xe8, 0x36, 0xeb, 0x9b, 0xe9, 0x36, 0xeb, 0x9b, 0xe8, 0x36, 0xec, 0x9b, - 0xe9, 0x36, 0xec, 0x9b, 0xe8, 0x36, 0xec, 0x9b, 0xe9, 0x36, 0xec, 0x9b, - 0xe8, 0x36, 0xec, 0x9b, 0xe9, 0x36, 0xed, 0x9c, 0xeb, 0x36, 0xed, 0x9b, - 0xe9, 0x36, 0xed, 0x9c, 0xeb, 0x36, 0xed, 0x9c, 0xeb, 0x36, 0xee, 0x9c, - 0xeb, 0x36, 0xee, 0x9c, 0xeb, 0x36, 0xee, 0x9c, 0xeb, 0x36, 0xee, 0x9c, - 0xeb, 0x36, 0xef, 0x9c, 0xeb, 0x36, 0xef, 0x9d, 0xed, 0x36, 0xef, 0x9d, - 0xed, 0x36, 0xef, 0x9d, 0xed, 0x36, 0xf0, 0x9d, 0xed, 0x36, 0xf0, 0x9d, - 0xed, 0x36, 0xf0, 0x9d, 0xed, 0x36, 0xf0, 0x9d, 0xed, 0x36, 0xf1, 0x9d, - 0xed, 0x36, 0xf1, 0x9d, 0xed, 0x36, 0xf1, 0x9d, 0xed, 0x36, 0xf1, 0x9e, - 0xef, 0x36, 0xf2, 0x9d, 0xed, 0x36, 0xf2, 0x9e, 0xef, 0x36, 0xf2, 0x9d, - 0xed, 0x36, 0xf2, 0x9e, 0xef, 0x36, 0xf2, 0x9e, 0xef, 0x36, 0xf3, 0x9e, - 0xef, 0x36, 0xf3, 0x9e, 0xef, 0x36, 0xf3, 0x9e, 0xef, 0x36, 0xf3, 0x9e, - 0xef, 0x36, 0xf4, 0x9e, 0xef, 0x36, 0xf4, 0x9f, 0xf2, 0x36, 0xf4, 0x9e, - 0xef, 0x36, 0xf4, 0x9f, 0xf2, 0x36, 0xf5, 0x9f, 0xf1, 0x36, 0xf5, 0x9f, - 0xf2, 0x36, 0xf5, 0x9f, 0xf1, 0x36, 0xf5, 0x9f, 0xf2, 0x36, 0xf5, 0x9f, - 0xf1, 0x36, 0xf6, 0x9f, 0xf2, 0x36, 0xf6, 0x9f, 0xf4, 0x36, 0xf6, 0x9f, - 0xf4, 0x36, 0xf6, 0x9f, 0xf4, 0x36, 0xf7, 0x9f, 0xf4, 0x36, 0xf7, 0x9f, - 0xf4, 0x36, 0xf7, 0x9f, 0xf4, 0x36, 0xf7, 0x9f, 0xf4, 0x36, 0xf8, 0x9f, - 0xf4, 0x36, 0xf8, 0x9f, 0xf4, 0x36, 0xf8, 0x9f, 0xf4, 0x36, 0xf8, 0xa0, - 0xf6, 0x36, 0xf8, 0x9f, 0xf4, 0x36, 0xf9, 0xa0, 0xf6, 0x36, 0xf9, 0xa0, - 0xf6, 0x36, 0xf9, 0xa0, 0xf6, 0x36, 0xf9, 0xa0, 0xf6, 0x36, 0xfa, 0xa0, - 0xf6, 0x36, 0xfa, 0xa0, 0xf6, 0x36, 0xfa, 0xa0, 0xf6, 0x36, 0xfa, 0xa1, - 0xf8, 0x36, 0xfa, 0xa0, 0xf6, 0x36, 0xfb, 0xa1, 0xf8, 0x36, 0xfb, 0xa0, - 0xf6, 0x36, 0xfb, 0xa1, 0xf8, 0x36, 0xfb, 0xa1, 0xf8, 0x36, 0xfc, 0xa1, - 0xf8, 0x36, 0xfc, 0xa1, 0xf8, 0x36, 0xfc, 0xa1, 0xf8, 0x36, 0xfc, 0xa1, - 0xf8, 0x36, 0xfc, 0xa1, 0xf8, 0x36, 0xfd, 0xa2, 0xfa, 0x36, 0xfd, 0xa2, - 0xfa, 0x36, 0xfd, 0xa2, 0xfa, 0x36, 0xfd, 0xa2, 0xfa, 0x36, 0xfe, 0xa2, - 0xfa, 0x36, 0xfe, 0xa2, 0xfa, 0x36, 0xfe, 0xa2, 0xfa, 0x36, 0xfe, 0xa2, - 0xfa, 0x36, 0xfe, 0xa2, 0xfa, 0x36, 0xff, 0xa2, 0xfa, 0x36, 0xff, 0xa2, - 0xfa, 0x36, 0x03, 0x89, 0x9a, 0x37, 0x0a, 0x8d, 0x9a, 0x37, 0x0f, 0x89, - 0x9a, 0x37, 0x14, 0x8d, 0x9a, 0x37, 0x17, 0x89, 0x9a, 0x37, 0x1b, 0x8d, - 0x9a, 0x37, 0x1e, 0x89, 0x9a, 0x37, 0x20, 0x8d, 0x9a, 0x37, 0x23, 0x89, - 0x9a, 0x37, 0x25, 0x8d, 0x9a, 0x37, 0x27, 0x89, 0x9a, 0x37, 0x29, 0x8d, - 0x9a, 0x37, 0x2b, 0x89, 0x9a, 0x37, 0x2d, 0x8d, 0x9a, 0x37, 0x2f, 0x89, - 0x9a, 0x37, 0x31, 0x8d, 0x9a, 0x37, 0x32, 0x89, 0x9a, 0x37, 0x34, 0x8d, - 0x9a, 0x37, 0x35, 0x89, 0x9a, 0x37, 0x37, 0x8d, 0x9a, 0x37, 0x38, 0x89, - 0x9a, 0x37, 0x3a, 0x8d, 0x9a, 0x37, 0x3b, 0x89, 0x9a, 0x37, 0x3c, 0x8d, - 0x9a, 0x37, 0x3e, 0x89, 0x9a, 0x37, 0x3f, 0x8d, 0x9a, 0x37, 0x40, 0x89, - 0x9a, 0x37, 0x42, 0x8d, 0x9a, 0x37, 0x43, 0x89, 0x9a, 0x37, 0x44, 0x8d, - 0x9a, 0x37, 0x45, 0x89, 0x9a, 0x37, 0x46, 0x8d, 0x9a, 0x37, 0x47, 0x89, - 0x9a, 0x37, 0x48, 0x8d, 0x9a, 0x37, 0x49, 0x89, 0x9a, 0x37, 0x4a, 0x86, - 0x9b, 0x37, 0x4b, 0x89, 0x9a, 0x37, 0x4c, 0x86, 0x9b, 0x37, 0x4d, 0x89, - 0x9a, 0x37, 0x4e, 0x86, 0x9b, 0x37, 0x4f, 0x89, 0x9a, 0x37, 0x50, 0x86, - 0x9b, 0x37, 0x51, 0x89, 0x9a, 0x37, 0x52, 0x86, 0x9b, 0x37, 0x53, 0x89, - 0x9a, 0x37, 0x54, 0x86, 0x9b, 0x37, 0x55, 0x89, 0x9a, 0x37, 0x56, 0x86, - 0x9b, 0x37, 0x57, 0x89, 0x9a, 0x37, 0x58, 0x86, 0x9b, 0x37, 0x58, 0x89, - 0x9a, 0x37, 0x59, 0x86, 0x9b, 0x37, 0x5a, 0x89, 0x9a, 0x37, 0x5b, 0x86, - 0x9b, 0x37, 0x5c, 0x89, 0x9a, 0x37, 0x5d, 0x86, 0x9b, 0x37, 0x5d, 0x89, - 0x9a, 0x37, 0x5e, 0x86, 0x9b, 0x37, 0x5f, 0x89, 0x9a, 0x37, 0x60, 0x86, - 0x9b, 0x37, 0x60, 0x89, 0x9a, 0x37, 0x61, 0x86, 0x9b, 0x37, 0x62, 0x89, - 0x9a, 0x37, 0x63, 0x86, 0x9b, 0x37, 0x63, 0x89, 0x9a, 0x37, 0x64, 0x86, - 0x9b, 0x37, 0x65, 0x89, 0x9a, 0x37, 0x66, 0x86, 0x9b, 0x37, 0x66, 0x89, - 0x9a, 0x37, 0x67, 0x86, 0x9b, 0x37, 0x68, 0x89, 0x9a, 0x37, 0x68, 0x86, - 0x9b, 0x37, 0x69, 0x89, 0x9a, 0x37, 0x6a, 0x86, 0x9b, 0x37, 0x6a, 0x89, - 0x9a, 0x37, 0x6b, 0x86, 0x9b, 0x37, 0x6c, 0x89, 0x9a, 0x37, 0x6c, 0x86, - 0x9b, 0x37, 0x6d, 0x89, 0x9a, 0x37, 0x6e, 0x86, 0x9b, 0x37, 0x6e, 0x89, - 0x9a, 0x37, 0x6f, 0x86, 0x9b, 0x37, 0x70, 0x89, 0x9a, 0x37, 0x70, 0x86, - 0x9b, 0x37, 0x71, 0x89, 0x9a, 0x37, 0x72, 0x86, 0x9b, 0x37, 0x72, 0x89, - 0x9a, 0x37, 0x73, 0x86, 0x9b, 0x37, 0x73, 0x89, 0x9a, 0x37, 0x74, 0x86, - 0x9b, 0x37, 0x75, 0x89, 0x9a, 0x37, 0x75, 0x86, 0x9b, 0x37, 0x76, 0x89, - 0x9a, 0x37, 0x76, 0x86, 0x9b, 0x37, 0x77, 0x84, 0x9b, 0x37, 0x78, 0x86, - 0x9b, 0x37, 0x78, 0x84, 0x9b, 0x37, 0x79, 0x86, 0x9b, 0x37, 0x79, 0x84, - 0x9b, 0x37, 0x7a, 0x86, 0x9b, 0x37, 0x7a, 0x84, 0x9b, 0x37, 0x7b, 0x86, - 0x9b, 0x37, 0x7c, 0x84, 0x9b, 0x37, 0x7c, 0x86, 0x9b, 0x37, 0x7d, 0x84, - 0x9b, 0x37, 0x7d, 0x86, 0x9b, 0x37, 0x7e, 0x84, 0x9b, 0x37, 0x7e, 0x86, - 0x9b, 0x37, 0x7f, 0x84, 0x9b, 0x37, 0x7f, 0x86, 0x9b, 0x37, 0x80, 0x84, - 0x9b, 0x37, 0x81, 0x86, 0x9b, 0x37, 0x81, 0x84, 0x9b, 0x37, 0x82, 0x86, - 0x9b, 0x37, 0x82, 0x84, 0x9b, 0x37, 0x83, 0x86, 0x9b, 0x37, 0x83, 0x84, - 0x9b, 0x37, 0x84, 0x86, 0x9b, 0x37, 0x84, 0x84, 0x9b, 0x37, 0x85, 0x86, - 0x9b, 0x37, 0x85, 0x84, 0x9b, 0x37, 0x86, 0x86, 0x9b, 0x37, 0x86, 0x84, - 0x9b, 0x37, 0x87, 0x86, 0x9b, 0x37, 0x87, 0x84, 0x9b, 0x37, 0x88, 0x86, - 0x9b, 0x37, 0x88, 0x84, 0x9b, 0x37, 0x89, 0x86, 0x9b, 0x37, 0x89, 0x84, - 0x9b, 0x37, 0x8a, 0x86, 0x9b, 0x37, 0x8a, 0x84, 0x9b, 0x37, 0x8b, 0x86, - 0x9b, 0x37, 0x8b, 0x84, 0x9b, 0x37, 0x8c, 0x86, 0x9b, 0x37, 0x8c, 0x84, - 0x9b, 0x37, 0x8d, 0x86, 0x9b, 0x37, 0x8d, 0x84, 0x9b, 0x37, 0x8e, 0x86, - 0x9b, 0x37, 0x8e, 0x84, 0x9b, 0x37, 0x8e, 0x86, 0x9b, 0x37, 0x8f, 0x84, - 0x9b, 0x37, 0x8f, 0x86, 0x9b, 0x37, 0x90, 0x84, 0x9b, 0x37, 0x90, 0x86, - 0x9b, 0x37, 0x91, 0x84, 0x9b, 0x37, 0x91, 0x86, 0x9b, 0x37, 0x92, 0x84, - 0x9b, 0x37, 0x92, 0x86, 0x9b, 0x37, 0x93, 0x84, 0x9b, 0x37, 0x93, 0x84, - 0x9c, 0x37, 0x94, 0x84, 0x9b, 0x37, 0x94, 0x84, 0x9c, 0x37, 0x94, 0x84, - 0x9b, 0x37, 0x95, 0x84, 0x9c, 0x37, 0x95, 0x84, 0x9b, 0x37, 0x96, 0x84, - 0x9c, 0x37, 0x96, 0x84, 0x9b, 0x37, 0x97, 0x84, 0x9c, 0x37, 0x97, 0x84, - 0x9b, 0x37, 0x98, 0x84, 0x9c, 0x37, 0x98, 0x84, 0x9b, 0x37, 0x98, 0x84, - 0x9c, 0x37, 0x99, 0x84, 0x9b, 0x37, 0x99, 0x84, 0x9c, 0x37, 0x9a, 0x84, - 0x9b, 0x37, 0x9a, 0x84, 0x9c, 0x37, 0x9a, 0x84, 0x9b, 0x37, 0x9b, 0x84, - 0x9c, 0x37, 0x9b, 0x84, 0x9b, 0x37, 0x9c, 0x84, 0x9c, 0x37, 0x9c, 0x84, - 0x9c, 0x37, 0x9d, 0x84, 0x9d, 0x37, 0x9d, 0x84, 0x9d, 0x37, 0x9d, 0x84, - 0x9d, 0x37, 0x9e, 0x84, 0x9e, 0x37, 0x9e, 0x84, 0x9e, 0x37, 0x9f, 0x84, - 0x9f, 0x37, 0x9f, 0x84, 0x9e, 0x37, 0x9f, 0x84, 0x9f, 0x37, 0xa0, 0x84, - 0x9e, 0x37, 0xa0, 0x84, 0x9f, 0x37, 0xa1, 0x85, 0xa1, 0x37, 0xa1, 0x85, - 0xa1, 0x37, 0xa1, 0x85, 0xa1, 0x37, 0xa2, 0x85, 0xa2, 0x37, 0xa2, 0x85, - 0xa2, 0x37, 0xa3, 0x85, 0xa2, 0x37, 0xa3, 0x85, 0xa2, 0x37, 0xa3, 0x85, - 0xa2, 0x37, 0xa4, 0x85, 0xa2, 0x37, 0xa4, 0x85, 0xa2, 0x37, 0xa5, 0x85, - 0xa2, 0x37, 0xa5, 0x86, 0xa5, 0x37, 0xa5, 0x86, 0xa5, 0x37, 0xa6, 0x86, - 0xa6, 0x37, 0xa6, 0x86, 0xa6, 0x37, 0xa6, 0x86, 0xa6, 0x37, 0xa7, 0x86, - 0xa6, 0x37, 0xa7, 0x86, 0xa6, 0x37, 0xa8, 0x86, 0xa6, 0x37, 0xa8, 0x86, - 0xa6, 0x37, 0xa8, 0x86, 0xa6, 0x37, 0xa9, 0x87, 0xa9, 0x37, 0xa9, 0x87, - 0xa9, 0x37, 0xaa, 0x87, 0xaa, 0x37, 0xaa, 0x87, 0xa9, 0x37, 0xaa, 0x87, - 0xaa, 0x37, 0xab, 0x87, 0xa9, 0x37, 0xab, 0x87, 0xaa, 0x37, 0xab, 0x87, - 0xa9, 0x37, 0xac, 0x87, 0xaa, 0x37, 0xac, 0x88, 0xac, 0x37, 0xac, 0x88, - 0xac, 0x37, 0xad, 0x88, 0xad, 0x37, 0xad, 0x88, 0xad, 0x37, 0xae, 0x88, - 0xad, 0x37, 0xae, 0x88, 0xad, 0x37, 0xae, 0x88, 0xad, 0x37, 0xaf, 0x88, - 0xad, 0x37, 0xaf, 0x88, 0xad, 0x37, 0xaf, 0x88, 0xad, 0x37, 0xb0, 0x88, - 0xad, 0x37, 0xb0, 0x88, 0xad, 0x37, 0xb0, 0x89, 0xb0, 0x37, 0xb1, 0x89, - 0xb0, 0x37, 0xb1, 0x89, 0xb0, 0x37, 0xb2, 0x89, 0xb0, 0x37, 0xb2, 0x89, - 0xb0, 0x37, 0xb2, 0x89, 0xb0, 0x37, 0xb3, 0x89, 0xb0, 0x37, 0xb3, 0x89, - 0xb2, 0x37, 0xb3, 0x89, 0xb2, 0x37, 0xb4, 0x89, 0xb2, 0x37, 0xb4, 0x89, - 0xb2, 0x37, 0xb4, 0x89, 0xb2, 0x37, 0xb5, 0x8a, 0xb3, 0x37, 0xb5, 0x8a, - 0xb4, 0x37, 0xb5, 0x8a, 0xb3, 0x37, 0xb6, 0x8a, 0xb4, 0x37, 0xb6, 0x8a, - 0xb3, 0x37, 0xb6, 0x8a, 0xb4, 0x37, 0xb7, 0x8b, 0xb7, 0x37, 0xb7, 0x8b, - 0xb7, 0x37, 0xb7, 0x8b, 0xb7, 0x37, 0xb8, 0x8b, 0xb7, 0x37, 0xb8, 0x8b, - 0xb7, 0x37, 0xb8, 0x8b, 0xb7, 0x37, 0xb9, 0x8b, 0xb7, 0x37, 0xb9, 0x8b, - 0xb7, 0x37, 0xb9, 0x8b, 0xb7, 0x37, 0xba, 0x8b, 0xb7, 0x37, 0xba, 0x8c, - 0xba, 0x37, 0xba, 0x8c, 0xba, 0x37, 0xbb, 0x8c, 0xba, 0x37, 0xbb, 0x8c, - 0xba, 0x37, 0xbb, 0x8c, 0xba, 0x37, 0xbc, 0x8c, 0xba, 0x37, 0xbc, 0x8c, - 0xba, 0x37, 0xbc, 0x8c, 0xba, 0x37, 0xbd, 0x8c, 0xba, 0x37, 0xbd, 0x8d, - 0xbd, 0x37, 0xbd, 0x8c, 0xba, 0x37, 0xbe, 0x8d, 0xbd, 0x37, 0xbe, 0x8d, - 0xbd, 0x37, 0xbe, 0x8d, 0xbd, 0x37, 0xbf, 0x8d, 0xbd, 0x37, 0xbf, 0x8d, - 0xbd, 0x37, 0xbf, 0x8d, 0xbd, 0x37, 0xc0, 0x8d, 0xbd, 0x37, 0xc0, 0x8d, - 0xbd, 0x37, 0xc0, 0x8d, 0xbd, 0x37, 0xc1, 0x8e, 0xc0, 0x37, 0xc1, 0x8e, - 0xc0, 0x37, 0xc1, 0x8e, 0xc0, 0x37, 0xc1, 0x8e, 0xc0, 0x37, 0xc2, 0x8e, - 0xc0, 0x37, 0xc2, 0x8e, 0xc0, 0x37, 0xc2, 0x8e, 0xc0, 0x37, 0xc3, 0x8e, - 0xc0, 0x37, 0xc3, 0x8e, 0xc0, 0x37, 0xc3, 0x8e, 0xc0, 0x37, 0xc4, 0x8e, - 0xc3, 0x37, 0xc4, 0x8e, 0xc3, 0x37, 0xc4, 0x8e, 0xc3, 0x37, 0xc5, 0x8e, - 0xc3, 0x37, 0xc5, 0x8e, 0xc3, 0x37, 0xc5, 0x8e, 0xc3, 0x37, 0xc6, 0x8e, - 0xc3, 0x37, 0xc6, 0x8e, 0xc3, 0x37, 0xc6, 0x8e, 0xc3, 0x37, 0xc6, 0x8f, - 0xc6, 0x37, 0xc7, 0x8f, 0xc6, 0x37, 0xc7, 0x8f, 0xc6, 0x37, 0xc7, 0x8f, - 0xc6, 0x37, 0xc8, 0x8f, 0xc6, 0x37, 0xc8, 0x8f, 0xc6, 0x37, 0xc8, 0x8f, - 0xc6, 0x37, 0xc9, 0x8f, 0xc6, 0x37, 0xc9, 0x8f, 0xc6, 0x37, 0xc9, 0x90, - 0xc9, 0x37, 0xc9, 0x90, 0xc9, 0x37, 0xca, 0x90, 0xc9, 0x37, 0xca, 0x90, - 0xc9, 0x37, 0xca, 0x90, 0xc9, 0x37, 0xcb, 0x90, 0xc9, 0x37, 0xcb, 0x90, - 0xc9, 0x37, 0xcb, 0x90, 0xc9, 0x37, 0xcc, 0x90, 0xc9, 0x37, 0xcc, 0x90, - 0xc9, 0x37, 0xcc, 0x90, 0xc9, 0x37, 0xcc, 0x90, 0xc9, 0x37, 0xcd, 0x91, - 0xcc, 0x37, 0xcd, 0x91, 0xcb, 0x37, 0xcd, 0x91, 0xcc, 0x37, 0xce, 0x91, - 0xcb, 0x37, 0xce, 0x91, 0xcc, 0x37, 0xce, 0x91, 0xcb, 0x37, 0xce, 0x91, - 0xcc, 0x37, 0xcf, 0x91, 0xcb, 0x37, 0xcf, 0x91, 0xcc, 0x37, 0xcf, 0x92, - 0xce, 0x37, 0xd0, 0x92, 0xce, 0x37, 0xd0, 0x92, 0xce, 0x37, 0xd0, 0x92, - 0xce, 0x37, 0xd0, 0x92, 0xce, 0x37, 0xd1, 0x92, 0xce, 0x37, 0xd1, 0x92, - 0xce, 0x37, 0xd1, 0x92, 0xce, 0x37, 0xd2, 0x92, 0xce, 0x37, 0xd2, 0x92, - 0xce, 0x37, 0xd2, 0x93, 0xd1, 0x37, 0xd2, 0x93, 0xd1, 0x37, 0xd3, 0x93, - 0xd1, 0x37, 0xd3, 0x93, 0xd1, 0x37, 0xd3, 0x93, 0xd1, 0x37, 0xd4, 0x93, - 0xd1, 0x37, 0xd4, 0x93, 0xd1, 0x37, 0xd4, 0x93, 0xd1, 0x37, 0xd4, 0x93, - 0xd1, 0x37, 0xd5, 0x94, 0xd4, 0x37, 0xd5, 0x93, 0xd1, 0x37, 0xd5, 0x94, - 0xd4, 0x37, 0xd6, 0x94, 0xd3, 0x37, 0xd6, 0x94, 0xd4, 0x37, 0xd6, 0x94, - 0xd3, 0x37, 0xd6, 0x94, 0xd4, 0x37, 0xd7, 0x94, 0xd3, 0x37, 0xd7, 0x94, - 0xd4, 0x37, 0xd7, 0x95, 0xd6, 0x37, 0xd7, 0x95, 0xd6, 0x37, 0xd8, 0x95, - 0xd6, 0x37, 0xd8, 0x95, 0xd6, 0x37, 0xd8, 0x95, 0xd6, 0x37, 0xd9, 0x95, - 0xd6, 0x37, 0xd9, 0x95, 0xd6, 0x37, 0xd9, 0x95, 0xd6, 0x37, 0xd9, 0x95, - 0xd6, 0x37, 0xda, 0x95, 0xd6, 0x37, 0xda, 0x96, 0xd9, 0x37, 0xda, 0x95, - 0xd6, 0x37, 0xda, 0x96, 0xd9, 0x37, 0xdb, 0x96, 0xd9, 0x37, 0xdb, 0x96, - 0xd9, 0x37, 0xdb, 0x96, 0xd9, 0x37, 0xdb, 0x96, 0xd9, 0x37, 0xdc, 0x96, - 0xd9, 0x37, 0xdc, 0x96, 0xd9, 0x37, 0xdc, 0x96, 0xd9, 0x37, 0xdd, 0x96, - 0xd9, 0x37, 0xdd, 0x97, 0xdb, 0x37, 0xdd, 0x97, 0xdb, 0x37, 0xdd, 0x97, - 0xdb, 0x37, 0xde, 0x97, 0xdb, 0x37, 0xde, 0x97, 0xdb, 0x37, 0xde, 0x97, - 0xdb, 0x37, 0xde, 0x97, 0xdb, 0x37, 0xdf, 0x97, 0xdb, 0x37, 0xdf, 0x97, - 0xdb, 0x37, 0xdf, 0x98, 0xde, 0x37, 0xdf, 0x98, 0xde, 0x37, 0xe0, 0x98, - 0xde, 0x37, 0xe0, 0x98, 0xde, 0x37, 0xe0, 0x98, 0xde, 0x37, 0xe1, 0x98, - 0xde, 0x37, 0xe1, 0x98, 0xde, 0x37, 0xe1, 0x98, 0xde, 0x37, 0xe1, 0x98, - 0xde, 0x37, 0xe2, 0x98, 0xde, 0x37, 0xe2, 0x98, 0xe0, 0x37, 0xe2, 0x98, - 0xde, 0x37, 0xe2, 0x98, 0xe0, 0x37, 0xe3, 0x98, 0xe0, 0x37, 0xe3, 0x98, - 0xe0, 0x37, 0xe3, 0x98, 0xe0, 0x37, 0xe3, 0x98, 0xe0, 0x37, 0xe4, 0x98, - 0xe0, 0x37, 0xe4, 0x98, 0xe0, 0x37, 0xe4, 0x99, 0xe3, 0x37, 0xe4, 0x98, - 0xe0, 0x37, 0xe5, 0x99, 0xe3, 0x37, 0xe5, 0x99, 0xe2, 0x37, 0xe5, 0x99, - 0xe3, 0x37, 0xe5, 0x99, 0xe2, 0x37, 0xe6, 0x99, 0xe3, 0x37, 0xe6, 0x99, - 0xe2, 0x37, 0xe6, 0x99, 0xe3, 0x37, 0xe6, 0x99, 0xe2, 0x37, 0xe7, 0x99, - 0xe3, 0x37, 0xe7, 0x9a, 0xe5, 0x37, 0xe7, 0x9a, 0xe5, 0x37, 0xe7, 0x9a, - 0xe5, 0x37, 0xe8, 0x9a, 0xe5, 0x37, 0xe8, 0x9a, 0xe5, 0x37, 0xe8, 0x9a, - 0xe5, 0x37, 0xe8, 0x9a, 0xe5, 0x37, 0xe9, 0x9a, 0xe5, 0x37, 0xe9, 0x9a, - 0xe5, 0x37, 0xe9, 0x9a, 0xe5, 0x37, 0xe9, 0x9b, 0xe7, 0x37, 0xea, 0x9a, - 0xe5, 0x37, 0xea, 0x9b, 0xe7, 0x37, 0xea, 0x9b, 0xe7, 0x37, 0xea, 0x9b, - 0xe7, 0x37, 0xeb, 0x9b, 0xe7, 0x37, 0xeb, 0x9b, 0xe7, 0x37, 0xeb, 0x9b, - 0xe7, 0x37, 0xeb, 0x9b, 0xe7, 0x37, 0xec, 0x9c, 0xea, 0x37, 0xec, 0x9c, - 0xea, 0x37, 0xec, 0x9c, 0xea, 0x37, 0xec, 0x9c, 0xea, 0x37, 0xec, 0x9c, - 0xea, 0x37, 0xed, 0x9c, 0xea, 0x37, 0xed, 0x9c, 0xea, 0x37, 0xed, 0x9c, - 0xea, 0x37, 0xed, 0x9c, 0xea, 0x37, 0xee, 0x9c, 0xea, 0x37, 0xee, 0x9d, - 0xec, 0x37, 0xee, 0x9c, 0xea, 0x37, 0xee, 0x9d, 0xec, 0x37, 0xef, 0x9d, - 0xec, 0x37, 0xef, 0x9d, 0xec, 0x37, 0xef, 0x9d, 0xec, 0x37, 0xef, 0x9d, - 0xec, 0x37, 0xf0, 0x9d, 0xec, 0x37, 0xf0, 0x9d, 0xec, 0x37, 0xf0, 0x9d, - 0xee, 0x37, 0xf0, 0x9d, 0xec, 0x37, 0xf1, 0x9d, 0xee, 0x37, 0xf1, 0x9d, - 0xee, 0x37, 0xf1, 0x9d, 0xee, 0x37, 0xf1, 0x9d, 0xee, 0x37, 0xf2, 0x9d, - 0xee, 0x37, 0xf2, 0x9d, 0xee, 0x37, 0xf2, 0x9d, 0xee, 0x37, 0xf2, 0x9e, - 0xf0, 0x37, 0xf2, 0x9e, 0xf1, 0x37, 0xf3, 0x9e, 0xf0, 0x37, 0xf3, 0x9e, - 0xf1, 0x37, 0xf3, 0x9e, 0xf0, 0x37, 0xf3, 0x9e, 0xf1, 0x37, 0xf4, 0x9e, - 0xf0, 0x37, 0xf4, 0x9e, 0xf1, 0x37, 0xf4, 0x9e, 0xf0, 0x37, 0xf4, 0x9e, - 0xf1, 0x37, 0xf5, 0x9e, 0xf0, 0x37, 0xf5, 0x9e, 0xf1, 0x37, 0xf5, 0x9f, - 0xf3, 0x37, 0xf5, 0x9e, 0xf1, 0x37, 0xf5, 0x9f, 0xf3, 0x37, 0xf6, 0x9f, - 0xf2, 0x37, 0xf6, 0x9f, 0xf3, 0x37, 0xf6, 0x9f, 0xf2, 0x37, 0xf6, 0x9f, - 0xf3, 0x37, 0xf7, 0x9f, 0xf2, 0x37, 0xf7, 0x9f, 0xf3, 0x37, 0xf7, 0xa0, - 0xf5, 0x37, 0xf7, 0x9f, 0xf3, 0x37, 0xf8, 0xa0, 0xf5, 0x37, 0xf8, 0xa0, - 0xf5, 0x37, 0xf8, 0xa0, 0xf5, 0x37, 0xf8, 0xa0, 0xf5, 0x37, 0xf8, 0xa0, - 0xf5, 0x37, 0xf9, 0xa0, 0xf5, 0x37, 0xf9, 0xa0, 0xf5, 0x37, 0xf9, 0xa1, - 0xf7, 0x37, 0xf9, 0xa1, 0xf7, 0x37, 0xfa, 0xa1, 0xf7, 0x37, 0xfa, 0xa1, - 0xf7, 0x37, 0xfa, 0xa1, 0xf7, 0x37, 0xfa, 0xa1, 0xf7, 0x37, 0xfa, 0xa1, - 0xf7, 0x37, 0xfb, 0xa1, 0xf7, 0x37, 0xfb, 0xa1, 0xf7, 0x37, 0xfb, 0xa1, - 0xf7, 0x37, 0xfb, 0xa1, 0xf9, 0x37, 0xfc, 0xa1, 0xf7, 0x37, 0xfc, 0xa1, - 0xf9, 0x37, 0xfc, 0xa1, 0xf7, 0x37, 0xfc, 0xa1, 0xf9, 0x37, 0xfc, 0xa1, - 0xf9, 0x37, 0xfd, 0xa1, 0xf9, 0x37, 0xfd, 0xa1, 0xf9, 0x37, 0xfd, 0xa1, - 0xf9, 0x37, 0xfd, 0xa1, 0xf9, 0x37, 0xfe, 0xa1, 0xf9, 0x37, 0xfe, 0xa2, - 0xfb, 0x37, 0xfe, 0xa1, 0xf9, 0x37, 0xfe, 0xa2, 0xfb, 0x37, 0xfe, 0xa2, - 0xfb, 0x37, 0xff, 0xa2, 0xfb, 0x37, 0xff, 0xa2, 0xfb, 0x37, 0x03, 0x89, - 0x9a, 0x37, 0x0a, 0x8c, 0x9a, 0x37, 0x0f, 0x89, 0x9a, 0x37, 0x14, 0x8c, - 0x9a, 0x37, 0x17, 0x89, 0x9a, 0x37, 0x1b, 0x8c, 0x9a, 0x37, 0x1e, 0x89, - 0x9a, 0x37, 0x20, 0x8c, 0x9a, 0x37, 0x23, 0x89, 0x9a, 0x37, 0x25, 0x8c, - 0x9a, 0x37, 0x27, 0x89, 0x9a, 0x37, 0x29, 0x8c, 0x9a, 0x37, 0x2b, 0x89, - 0x9a, 0x37, 0x2d, 0x8c, 0x9a, 0x37, 0x2f, 0x89, 0x9a, 0x37, 0x31, 0x8c, - 0x9a, 0x37, 0x32, 0x89, 0x9a, 0x37, 0x34, 0x8c, 0x9a, 0x37, 0x35, 0x89, - 0x9a, 0x37, 0x37, 0x8c, 0x9a, 0x37, 0x38, 0x89, 0x9a, 0x37, 0x3a, 0x8c, - 0x9a, 0x37, 0x3b, 0x89, 0x9a, 0x37, 0x3c, 0x8c, 0x9a, 0x37, 0x3e, 0x89, - 0x9a, 0x37, 0x3f, 0x8c, 0x9a, 0x37, 0x40, 0x89, 0x9a, 0x37, 0x42, 0x8c, - 0x9a, 0x37, 0x43, 0x89, 0x9a, 0x37, 0x44, 0x8c, 0x9a, 0x37, 0x45, 0x89, - 0x9a, 0x37, 0x46, 0x8c, 0x9a, 0x37, 0x47, 0x89, 0x9a, 0x37, 0x48, 0x8c, - 0x9a, 0x37, 0x49, 0x89, 0x9a, 0x37, 0x4a, 0x8c, 0x9a, 0x37, 0x4b, 0x89, - 0x9a, 0x37, 0x4c, 0x8c, 0x9a, 0x37, 0x4d, 0x89, 0x9a, 0x37, 0x4e, 0x8c, - 0x9a, 0x37, 0x4f, 0x89, 0x9a, 0x37, 0x50, 0x8c, 0x9a, 0x37, 0x51, 0x89, - 0x9a, 0x37, 0x52, 0x8c, 0x9a, 0x37, 0x53, 0x89, 0x9a, 0x37, 0x54, 0x8c, - 0x9a, 0x37, 0x55, 0x89, 0x9a, 0x37, 0x56, 0x8c, 0x9a, 0x37, 0x57, 0x89, - 0x9a, 0x37, 0x58, 0x8c, 0x9a, 0x37, 0x58, 0x89, 0x9a, 0x37, 0x59, 0x8c, - 0x9a, 0x37, 0x5a, 0x89, 0x9a, 0x37, 0x5b, 0x8c, 0x9a, 0x37, 0x5c, 0x89, - 0x9a, 0x37, 0x5d, 0x8c, 0x9a, 0x37, 0x5d, 0x89, 0x9a, 0x37, 0x5e, 0x8c, - 0x9a, 0x37, 0x5f, 0x89, 0x9a, 0x37, 0x60, 0x86, 0x9b, 0x37, 0x60, 0x89, - 0x9a, 0x37, 0x61, 0x86, 0x9b, 0x37, 0x62, 0x89, 0x9a, 0x37, 0x63, 0x86, - 0x9b, 0x37, 0x63, 0x89, 0x9a, 0x37, 0x64, 0x86, 0x9b, 0x37, 0x65, 0x89, - 0x9a, 0x37, 0x66, 0x86, 0x9b, 0x37, 0x66, 0x89, 0x9a, 0x37, 0x67, 0x86, - 0x9b, 0x37, 0x68, 0x89, 0x9a, 0x37, 0x68, 0x86, 0x9b, 0x37, 0x69, 0x89, - 0x9a, 0x37, 0x6a, 0x86, 0x9b, 0x37, 0x6a, 0x89, 0x9a, 0x37, 0x6b, 0x86, - 0x9b, 0x37, 0x6c, 0x89, 0x9a, 0x37, 0x6c, 0x86, 0x9b, 0x37, 0x6d, 0x89, - 0x9a, 0x37, 0x6e, 0x86, 0x9b, 0x37, 0x6e, 0x89, 0x9a, 0x37, 0x6f, 0x86, - 0x9b, 0x37, 0x70, 0x89, 0x9a, 0x37, 0x70, 0x86, 0x9b, 0x37, 0x71, 0x89, - 0x9a, 0x37, 0x72, 0x86, 0x9b, 0x37, 0x72, 0x89, 0x9a, 0x37, 0x73, 0x86, - 0x9b, 0x37, 0x73, 0x89, 0x9a, 0x37, 0x74, 0x86, 0x9b, 0x37, 0x75, 0x89, - 0x9a, 0x37, 0x75, 0x86, 0x9b, 0x37, 0x76, 0x89, 0x9a, 0x37, 0x76, 0x86, - 0x9b, 0x37, 0x77, 0x89, 0x9a, 0x37, 0x78, 0x86, 0x9b, 0x37, 0x78, 0x83, - 0x9b, 0x37, 0x79, 0x86, 0x9b, 0x37, 0x79, 0x83, 0x9b, 0x37, 0x7a, 0x86, - 0x9b, 0x37, 0x7a, 0x83, 0x9b, 0x37, 0x7b, 0x86, 0x9b, 0x37, 0x7c, 0x83, - 0x9b, 0x37, 0x7c, 0x86, 0x9b, 0x37, 0x7d, 0x83, 0x9b, 0x37, 0x7d, 0x86, - 0x9b, 0x37, 0x7e, 0x83, 0x9b, 0x37, 0x7e, 0x86, 0x9b, 0x37, 0x7f, 0x83, - 0x9b, 0x37, 0x7f, 0x86, 0x9b, 0x37, 0x80, 0x83, 0x9b, 0x37, 0x81, 0x86, - 0x9b, 0x37, 0x81, 0x83, 0x9b, 0x37, 0x82, 0x86, 0x9b, 0x37, 0x82, 0x83, - 0x9b, 0x37, 0x83, 0x86, 0x9b, 0x37, 0x83, 0x83, 0x9b, 0x37, 0x84, 0x86, - 0x9b, 0x37, 0x84, 0x83, 0x9b, 0x37, 0x85, 0x86, 0x9b, 0x37, 0x85, 0x83, - 0x9b, 0x37, 0x86, 0x86, 0x9b, 0x37, 0x86, 0x83, 0x9b, 0x37, 0x87, 0x86, - 0x9b, 0x37, 0x87, 0x83, 0x9b, 0x37, 0x88, 0x86, 0x9b, 0x37, 0x88, 0x83, - 0x9b, 0x37, 0x89, 0x86, 0x9b, 0x37, 0x89, 0x83, 0x9b, 0x37, 0x8a, 0x86, - 0x9b, 0x37, 0x8a, 0x83, 0x9b, 0x37, 0x8b, 0x86, 0x9b, 0x37, 0x8b, 0x83, - 0x9b, 0x37, 0x8c, 0x86, 0x9b, 0x37, 0x8c, 0x83, 0x9b, 0x37, 0x8d, 0x86, - 0x9b, 0x37, 0x8d, 0x83, 0x9b, 0x37, 0x8e, 0x86, 0x9b, 0x37, 0x8e, 0x83, - 0x9b, 0x37, 0x8e, 0x86, 0x9b, 0x37, 0x8f, 0x83, 0x9b, 0x37, 0x8f, 0x83, - 0x9c, 0x37, 0x90, 0x83, 0x9b, 0x37, 0x90, 0x83, 0x9c, 0x37, 0x91, 0x83, - 0x9b, 0x37, 0x91, 0x83, 0x9c, 0x37, 0x92, 0x83, 0x9b, 0x37, 0x92, 0x83, - 0x9c, 0x37, 0x93, 0x83, 0x9b, 0x37, 0x93, 0x83, 0x9c, 0x37, 0x94, 0x83, - 0x9b, 0x37, 0x94, 0x83, 0x9c, 0x37, 0x94, 0x83, 0x9b, 0x37, 0x95, 0x83, - 0x9c, 0x37, 0x95, 0x83, 0x9b, 0x37, 0x96, 0x83, 0x9c, 0x37, 0x96, 0x83, - 0x9b, 0x37, 0x97, 0x83, 0x9c, 0x37, 0x97, 0x83, 0x9b, 0x37, 0x98, 0x83, - 0x9c, 0x37, 0x98, 0x83, 0x9b, 0x37, 0x98, 0x83, 0x9c, 0x37, 0x99, 0x83, - 0x9b, 0x37, 0x99, 0x83, 0x9c, 0x37, 0x9a, 0x83, 0x9b, 0x37, 0x9a, 0x83, - 0x9c, 0x37, 0x9a, 0x83, 0x9b, 0x37, 0x9b, 0x83, 0x9c, 0x37, 0x9b, 0x83, - 0x9b, 0x37, 0x9c, 0x83, 0x9c, 0x37, 0x9c, 0x83, 0x9c, 0x37, 0x9d, 0x83, - 0x9d, 0x37, 0x9d, 0x83, 0x9c, 0x37, 0x9d, 0x83, 0x9d, 0x37, 0x9e, 0x83, - 0x9c, 0x37, 0x9e, 0x83, 0x9d, 0x37, 0x9f, 0x84, 0x9f, 0x37, 0x9f, 0x84, - 0x9f, 0x37, 0x9f, 0x84, 0x9f, 0x37, 0xa0, 0x84, 0xa0, 0x37, 0xa0, 0x84, - 0xa0, 0x37, 0xa1, 0x84, 0xa1, 0x37, 0xa1, 0x84, 0xa0, 0x37, 0xa1, 0x84, - 0xa1, 0x37, 0xa2, 0x84, 0xa0, 0x37, 0xa2, 0x84, 0xa1, 0x37, 0xa3, 0x85, - 0xa3, 0x37, 0xa3, 0x85, 0xa3, 0x37, 0xa3, 0x85, 0xa3, 0x37, 0xa4, 0x85, - 0xa4, 0x37, 0xa4, 0x85, 0xa4, 0x37, 0xa5, 0x85, 0xa4, 0x37, 0xa5, 0x85, - 0xa4, 0x37, 0xa5, 0x85, 0xa4, 0x37, 0xa6, 0x85, 0xa4, 0x37, 0xa6, 0x85, - 0xa4, 0x37, 0xa6, 0x85, 0xa4, 0x37, 0xa7, 0x86, 0xa7, 0x37, 0xa7, 0x86, - 0xa7, 0x37, 0xa8, 0x86, 0xa8, 0x37, 0xa8, 0x86, 0xa7, 0x37, 0xa8, 0x86, - 0xa8, 0x37, 0xa9, 0x86, 0xa7, 0x37, 0xa9, 0x86, 0xa8, 0x37, 0xaa, 0x86, - 0xa7, 0x37, 0xaa, 0x86, 0xa8, 0x37, 0xaa, 0x87, 0xaa, 0x37, 0xab, 0x87, - 0xab, 0x37, 0xab, 0x87, 0xab, 0x37, 0xab, 0x87, 0xab, 0x37, 0xac, 0x87, - 0xab, 0x37, 0xac, 0x87, 0xab, 0x37, 0xac, 0x87, 0xab, 0x37, 0xad, 0x87, - 0xab, 0x37, 0xad, 0x87, 0xab, 0x37, 0xae, 0x87, 0xab, 0x37, 0xae, 0x88, - 0xae, 0x37, 0xae, 0x88, 0xae, 0x37, 0xaf, 0x88, 0xaf, 0x37, 0xaf, 0x88, - 0xae, 0x37, 0xaf, 0x88, 0xaf, 0x37, 0xb0, 0x88, 0xae, 0x37, 0xb0, 0x88, - 0xaf, 0x37, 0xb0, 0x88, 0xae, 0x37, 0xb1, 0x88, 0xaf, 0x37, 0xb1, 0x88, - 0xae, 0x37, 0xb2, 0x88, 0xaf, 0x37, 0xb2, 0x89, 0xb2, 0x37, 0xb2, 0x89, - 0xb2, 0x37, 0xb3, 0x89, 0xb2, 0x37, 0xb3, 0x89, 0xb2, 0x37, 0xb3, 0x89, - 0xb2, 0x37, 0xb4, 0x89, 0xb2, 0x37, 0xb4, 0x89, 0xb2, 0x37, 0xb4, 0x89, - 0xb2, 0x37, 0xb5, 0x89, 0xb2, 0x37, 0xb5, 0x89, 0xb2, 0x37, 0xb5, 0x8a, - 0xb5, 0x37, 0xb6, 0x8a, 0xb5, 0x37, 0xb6, 0x8a, 0xb5, 0x37, 0xb6, 0x8a, - 0xb5, 0x37, 0xb7, 0x8a, 0xb5, 0x37, 0xb7, 0x8a, 0xb5, 0x37, 0xb7, 0x8a, - 0xb5, 0x37, 0xb8, 0x8a, 0xb5, 0x37, 0xb8, 0x8a, 0xb5, 0x37, 0xb8, 0x8b, - 0xb8, 0x37, 0xb9, 0x8b, 0xb8, 0x37, 0xb9, 0x8b, 0xb8, 0x37, 0xb9, 0x8b, - 0xb8, 0x37, 0xba, 0x8b, 0xb8, 0x37, 0xba, 0x8b, 0xb8, 0x37, 0xba, 0x8b, - 0xb8, 0x37, 0xbb, 0x8b, 0xb8, 0x37, 0xbb, 0x8b, 0xb8, 0x37, 0xbb, 0x8c, - 0xbb, 0x37, 0xbc, 0x8c, 0xbc, 0x37, 0xbc, 0x8c, 0xbb, 0x37, 0xbc, 0x8c, - 0xbc, 0x37, 0xbd, 0x8c, 0xbb, 0x37, 0xbd, 0x8c, 0xbc, 0x37, 0xbd, 0x8c, - 0xbb, 0x37, 0xbe, 0x8c, 0xbc, 0x37, 0xbe, 0x8c, 0xbb, 0x37, 0xbe, 0x8c, - 0xbc, 0x37, 0xbf, 0x8d, 0xbf, 0x37, 0xbf, 0x8c, 0xbc, 0x37, 0xbf, 0x8d, - 0xbf, 0x37, 0xc0, 0x8d, 0xbe, 0x37, 0xc0, 0x8d, 0xbf, 0x37, 0xc0, 0x8d, - 0xbe, 0x37, 0xc1, 0x8d, 0xbf, 0x37, 0xc1, 0x8d, 0xbe, 0x37, 0xc1, 0x8d, - 0xbf, 0x37, 0xc1, 0x8d, 0xbe, 0x37, 0xc2, 0x8d, 0xbf, 0x37, 0xc2, 0x8e, - 0xc1, 0x37, 0xc2, 0x8e, 0xc1, 0x37, 0xc3, 0x8e, 0xc1, 0x37, 0xc3, 0x8e, - 0xc1, 0x37, 0xc3, 0x8e, 0xc1, 0x37, 0xc4, 0x8e, 0xc1, 0x37, 0xc4, 0x8e, - 0xc1, 0x37, 0xc4, 0x8e, 0xc1, 0x37, 0xc5, 0x8e, 0xc1, 0x37, 0xc5, 0x8f, - 0xc4, 0x37, 0xc5, 0x8f, 0xc5, 0x37, 0xc6, 0x8f, 0xc4, 0x37, 0xc6, 0x8f, - 0xc5, 0x37, 0xc6, 0x8f, 0xc4, 0x37, 0xc6, 0x8f, 0xc5, 0x37, 0xc7, 0x8f, - 0xc4, 0x37, 0xc7, 0x8f, 0xc5, 0x37, 0xc7, 0x8f, 0xc4, 0x37, 0xc8, 0x8f, - 0xc5, 0x37, 0xc8, 0x90, 0xc7, 0x37, 0xc8, 0x90, 0xc7, 0x37, 0xc9, 0x90, - 0xc7, 0x37, 0xc9, 0x90, 0xc7, 0x37, 0xc9, 0x90, 0xc7, 0x37, 0xc9, 0x90, - 0xc7, 0x37, 0xca, 0x90, 0xc7, 0x37, 0xca, 0x90, 0xc7, 0x37, 0xca, 0x90, - 0xc7, 0x37, 0xcb, 0x91, 0xca, 0x37, 0xcb, 0x90, 0xc7, 0x37, 0xcb, 0x91, - 0xca, 0x37, 0xcc, 0x91, 0xca, 0x37, 0xcc, 0x91, 0xca, 0x37, 0xcc, 0x91, - 0xca, 0x37, 0xcc, 0x91, 0xca, 0x37, 0xcd, 0x91, 0xca, 0x37, 0xcd, 0x91, - 0xca, 0x37, 0xcd, 0x91, 0xca, 0x37, 0xce, 0x91, 0xca, 0x37, 0xce, 0x92, - 0xcd, 0x37, 0xce, 0x92, 0xcd, 0x37, 0xce, 0x92, 0xcd, 0x37, 0xcf, 0x92, - 0xcd, 0x37, 0xcf, 0x92, 0xcd, 0x37, 0xcf, 0x92, 0xcd, 0x37, 0xd0, 0x92, - 0xcd, 0x37, 0xd0, 0x92, 0xcd, 0x37, 0xd0, 0x92, 0xcd, 0x37, 0xd0, 0x92, - 0xcd, 0x37, 0xd1, 0x93, 0xd0, 0x37, 0xd1, 0x93, 0xcf, 0x37, 0xd1, 0x93, - 0xd0, 0x37, 0xd2, 0x93, 0xcf, 0x37, 0xd2, 0x93, 0xd0, 0x37, 0xd2, 0x93, - 0xcf, 0x37, 0xd2, 0x93, 0xd0, 0x37, 0xd3, 0x93, 0xcf, 0x37, 0xd3, 0x93, - 0xd0, 0x37, 0xd3, 0x94, 0xd2, 0x37, 0xd4, 0x94, 0xd2, 0x37, 0xd4, 0x94, - 0xd2, 0x37, 0xd4, 0x94, 0xd2, 0x37, 0xd4, 0x94, 0xd2, 0x37, 0xd5, 0x94, - 0xd2, 0x37, 0xd5, 0x94, 0xd2, 0x37, 0xd5, 0x94, 0xd2, 0x37, 0xd6, 0x94, - 0xd2, 0x37, 0xd6, 0x94, 0xd2, 0x37, 0xd6, 0x94, 0xd5, 0x37, 0xd6, 0x94, - 0xd2, 0x37, 0xd7, 0x94, 0xd5, 0x37, 0xd7, 0x94, 0xd5, 0x37, 0xd7, 0x94, - 0xd5, 0x37, 0xd7, 0x94, 0xd5, 0x37, 0xd8, 0x94, 0xd5, 0x37, 0xd8, 0x94, - 0xd5, 0x37, 0xd8, 0x94, 0xd5, 0x37, 0xd9, 0x95, 0xd7, 0x37, 0xd9, 0x94, - 0xd5, 0x37, 0xd9, 0x95, 0xd7, 0x37, 0xd9, 0x95, 0xd7, 0x37, 0xda, 0x95, - 0xd7, 0x37, 0xda, 0x95, 0xd7, 0x37, 0xda, 0x95, 0xd7, 0x37, 0xda, 0x95, - 0xd7, 0x37, 0xdb, 0x95, 0xd7, 0x37, 0xdb, 0x96, 0xda, 0x37, 0xdb, 0x96, - 0xda, 0x37, 0xdb, 0x96, 0xda, 0x37, 0xdc, 0x96, 0xda, 0x37, 0xdc, 0x96, - 0xda, 0x37, 0xdc, 0x96, 0xda, 0x37, 0xdd, 0x96, 0xda, 0x37, 0xdd, 0x96, - 0xda, 0x37, 0xdd, 0x96, 0xda, 0x37, 0xdd, 0x96, 0xda, 0x37, 0xde, 0x96, - 0xda, 0x37, 0xde, 0x96, 0xda, 0x37, 0xde, 0x97, 0xdd, 0x37, 0xde, 0x97, - 0xdc, 0x37, 0xdf, 0x97, 0xdd, 0x37, 0xdf, 0x97, 0xdc, 0x37, 0xdf, 0x97, - 0xdd, 0x37, 0xdf, 0x97, 0xdc, 0x37, 0xe0, 0x97, 0xdd, 0x37, 0xe0, 0x97, - 0xdc, 0x37, 0xe0, 0x97, 0xdd, 0x37, 0xe1, 0x98, 0xdf, 0x37, 0xe1, 0x97, - 0xdd, 0x37, 0xe1, 0x98, 0xdf, 0x37, 0xe1, 0x98, 0xdf, 0x37, 0xe2, 0x98, - 0xdf, 0x37, 0xe2, 0x98, 0xdf, 0x37, 0xe2, 0x98, 0xdf, 0x37, 0xe2, 0x98, - 0xdf, 0x37, 0xe3, 0x98, 0xdf, 0x37, 0xe3, 0x99, 0xe1, 0x37, 0xe3, 0x99, - 0xe2, 0x37, 0xe3, 0x99, 0xe1, 0x37, 0xe4, 0x99, 0xe2, 0x37, 0xe4, 0x99, - 0xe1, 0x37, 0xe4, 0x99, 0xe2, 0x37, 0xe4, 0x99, 0xe1, 0x37, 0xe5, 0x99, - 0xe2, 0x37, 0xe5, 0x99, 0xe1, 0x37, 0xe5, 0x99, 0xe2, 0x37, 0xe5, 0x9a, - 0xe4, 0x37, 0xe6, 0x99, 0xe2, 0x37, 0xe6, 0x9a, 0xe4, 0x37, 0xe6, 0x9a, - 0xe4, 0x37, 0xe6, 0x9a, 0xe4, 0x37, 0xe7, 0x9a, 0xe4, 0x37, 0xe7, 0x9a, - 0xe4, 0x37, 0xe7, 0x9a, 0xe4, 0x37, 0xe7, 0x9a, 0xe4, 0x37, 0xe8, 0x9a, - 0xe4, 0x37, 0xe8, 0x9a, 0xe4, 0x37, 0xe8, 0x9a, 0xe6, 0x37, 0xe8, 0x9a, - 0xe6, 0x37, 0xe9, 0x9a, 0xe6, 0x37, 0xe9, 0x9a, 0xe6, 0x37, 0xe9, 0x9a, - 0xe6, 0x37, 0xe9, 0x9a, 0xe6, 0x37, 0xea, 0x9a, 0xe6, 0x37, 0xea, 0x9a, - 0xe6, 0x37, 0xea, 0x9a, 0xe6, 0x37, 0xea, 0x9b, 0xe8, 0x37, 0xeb, 0x9b, - 0xe9, 0x37, 0xeb, 0x9b, 0xe8, 0x37, 0xeb, 0x9b, 0xe9, 0x37, 0xeb, 0x9b, - 0xe8, 0x37, 0xec, 0x9b, 0xe9, 0x37, 0xec, 0x9b, 0xe8, 0x37, 0xec, 0x9b, - 0xe9, 0x37, 0xec, 0x9b, 0xe8, 0x37, 0xec, 0x9b, 0xe9, 0x37, 0xed, 0x9c, - 0xeb, 0x37, 0xed, 0x9b, 0xe9, 0x37, 0xed, 0x9c, 0xeb, 0x37, 0xed, 0x9c, - 0xeb, 0x37, 0xee, 0x9c, 0xeb, 0x37, 0xee, 0x9c, 0xeb, 0x37, 0xee, 0x9c, - 0xeb, 0x37, 0xee, 0x9c, 0xeb, 0x37, 0xef, 0x9c, 0xeb, 0x37, 0xef, 0x9d, - 0xed, 0x37, 0xef, 0x9d, 0xed, 0x37, 0xef, 0x9d, 0xed, 0x37, 0xf0, 0x9d, - 0xed, 0x37, 0xf0, 0x9d, 0xed, 0x37, 0xf0, 0x9d, 0xed, 0x37, 0xf0, 0x9d, - 0xed, 0x37, 0xf1, 0x9d, 0xed, 0x37, 0xf1, 0x9d, 0xed, 0x37, 0xf1, 0x9d, - 0xed, 0x37, 0xf1, 0x9e, 0xef, 0x37, 0xf2, 0x9d, 0xed, 0x37, 0xf2, 0x9e, - 0xef, 0x37, 0xf2, 0x9e, 0xef, 0x37, 0xf2, 0x9e, 0xef, 0x37, 0xf2, 0x9e, - 0xef, 0x37, 0xf3, 0x9e, 0xef, 0x37, 0xf3, 0x9e, 0xef, 0x37, 0xf3, 0x9e, - 0xef, 0x37, 0xf3, 0x9f, 0xf2, 0x37, 0xf4, 0x9e, 0xef, 0x37, 0xf4, 0x9f, - 0xf2, 0x37, 0xf4, 0x9e, 0xef, 0x37, 0xf4, 0x9f, 0xf2, 0x37, 0xf5, 0x9f, - 0xf1, 0x37, 0xf5, 0x9f, 0xf2, 0x37, 0xf5, 0x9f, 0xf1, 0x37, 0xf5, 0x9f, - 0xf2, 0x37, 0xf5, 0x9f, 0xf1, 0x37, 0xf6, 0x9f, 0xf2, 0x37, 0xf6, 0x9f, - 0xf4, 0x37, 0xf6, 0x9f, 0xf4, 0x37, 0xf6, 0x9f, 0xf4, 0x37, 0xf7, 0x9f, - 0xf4, 0x37, 0xf7, 0x9f, 0xf4, 0x37, 0xf7, 0x9f, 0xf4, 0x37, 0xf7, 0x9f, - 0xf4, 0x37, 0xf8, 0x9f, 0xf4, 0x37, 0xf8, 0x9f, 0xf4, 0x37, 0xf8, 0x9f, - 0xf4, 0x37, 0xf8, 0xa0, 0xf6, 0x37, 0xf8, 0x9f, 0xf4, 0x37, 0xf9, 0xa0, - 0xf6, 0x37, 0xf9, 0xa0, 0xf6, 0x37, 0xf9, 0xa0, 0xf6, 0x37, 0xf9, 0xa0, - 0xf6, 0x37, 0xfa, 0xa0, 0xf6, 0x37, 0xfa, 0xa0, 0xf6, 0x37, 0xfa, 0xa0, - 0xf6, 0x37, 0xfa, 0xa1, 0xf8, 0x37, 0xfa, 0xa0, 0xf6, 0x37, 0xfb, 0xa1, - 0xf8, 0x37, 0xfb, 0xa1, 0xf8, 0x37, 0xfb, 0xa1, 0xf8, 0x37, 0xfb, 0xa1, - 0xf8, 0x37, 0xfc, 0xa1, 0xf8, 0x37, 0xfc, 0xa1, 0xf8, 0x37, 0xfc, 0xa1, - 0xf8, 0x37, 0xfc, 0xa2, 0xfa, 0x37, 0xfc, 0xa2, 0xfa, 0x37, 0xfd, 0xa2, - 0xfa, 0x37, 0xfd, 0xa2, 0xfa, 0x37, 0xfd, 0xa2, 0xfa, 0x37, 0xfd, 0xa2, - 0xfa, 0x37, 0xfe, 0xa2, 0xfa, 0x37, 0xfe, 0xa2, 0xfa, 0x37, 0xfe, 0xa2, - 0xfa, 0x37, 0xfe, 0xa2, 0xfa, 0x37, 0xfe, 0xa2, 0xfa, 0x37, 0xff, 0xa2, - 0xfa, 0x37, 0xff, 0xa2, 0xfa, 0x37, 0x03, 0x8f, 0x9a, 0x38, 0x0a, 0x8f, - 0x9a, 0x38, 0x0f, 0x8f, 0x9a, 0x38, 0x14, 0x8d, 0x9a, 0x38, 0x17, 0x8f, - 0x9a, 0x38, 0x1b, 0x8d, 0x9a, 0x38, 0x1e, 0x8f, 0x9a, 0x38, 0x20, 0x8d, - 0x9a, 0x38, 0x23, 0x8f, 0x9a, 0x38, 0x25, 0x8d, 0x9a, 0x38, 0x27, 0x8f, - 0x9a, 0x38, 0x29, 0x8d, 0x9a, 0x38, 0x2b, 0x8f, 0x9a, 0x38, 0x2d, 0x8d, - 0x9a, 0x38, 0x2f, 0x89, 0x9a, 0x38, 0x31, 0x8d, 0x9a, 0x38, 0x32, 0x89, - 0x9a, 0x38, 0x34, 0x8d, 0x9a, 0x38, 0x35, 0x89, 0x9a, 0x38, 0x37, 0x8d, - 0x9a, 0x38, 0x38, 0x89, 0x9a, 0x38, 0x3a, 0x8d, 0x9a, 0x38, 0x3b, 0x89, - 0x9a, 0x38, 0x3c, 0x8d, 0x9a, 0x38, 0x3e, 0x89, 0x9a, 0x38, 0x3f, 0x8d, - 0x9a, 0x38, 0x40, 0x89, 0x9a, 0x38, 0x42, 0x8d, 0x9a, 0x38, 0x43, 0x89, - 0x9a, 0x38, 0x44, 0x8d, 0x9a, 0x38, 0x45, 0x89, 0x9a, 0x38, 0x46, 0x8d, - 0x9a, 0x38, 0x47, 0x89, 0x9a, 0x38, 0x48, 0x8d, 0x9a, 0x38, 0x49, 0x89, - 0x9a, 0x38, 0x4a, 0x8d, 0x9a, 0x38, 0x4b, 0x89, 0x9a, 0x38, 0x4c, 0x8d, - 0x9a, 0x38, 0x4d, 0x89, 0x9a, 0x38, 0x4e, 0x8d, 0x9a, 0x38, 0x4f, 0x89, - 0x9a, 0x38, 0x50, 0x8d, 0x9a, 0x38, 0x51, 0x89, 0x9a, 0x38, 0x52, 0x8d, - 0x9a, 0x38, 0x53, 0x89, 0x9a, 0x38, 0x54, 0x8d, 0x9a, 0x38, 0x55, 0x89, - 0x9a, 0x38, 0x56, 0x86, 0x9b, 0x38, 0x57, 0x89, 0x9a, 0x38, 0x58, 0x86, - 0x9b, 0x38, 0x58, 0x89, 0x9a, 0x38, 0x59, 0x86, 0x9b, 0x38, 0x5a, 0x89, - 0x9a, 0x38, 0x5b, 0x86, 0x9b, 0x38, 0x5c, 0x89, 0x9a, 0x38, 0x5d, 0x86, - 0x9b, 0x38, 0x5d, 0x89, 0x9a, 0x38, 0x5e, 0x86, 0x9b, 0x38, 0x5f, 0x89, - 0x9a, 0x38, 0x60, 0x86, 0x9b, 0x38, 0x60, 0x89, 0x9a, 0x38, 0x61, 0x86, - 0x9b, 0x38, 0x62, 0x89, 0x9a, 0x38, 0x63, 0x86, 0x9b, 0x38, 0x63, 0x89, - 0x9a, 0x38, 0x64, 0x86, 0x9b, 0x38, 0x65, 0x89, 0x9a, 0x38, 0x66, 0x86, - 0x9b, 0x38, 0x66, 0x89, 0x9a, 0x38, 0x67, 0x86, 0x9b, 0x38, 0x68, 0x89, - 0x9a, 0x38, 0x68, 0x86, 0x9b, 0x38, 0x69, 0x89, 0x9a, 0x38, 0x6a, 0x86, - 0x9b, 0x38, 0x6a, 0x89, 0x9a, 0x38, 0x6b, 0x86, 0x9b, 0x38, 0x6c, 0x89, - 0x9a, 0x38, 0x6c, 0x86, 0x9b, 0x38, 0x6d, 0x89, 0x9a, 0x38, 0x6e, 0x86, - 0x9b, 0x38, 0x6e, 0x89, 0x9a, 0x38, 0x6f, 0x86, 0x9b, 0x38, 0x70, 0x89, - 0x9a, 0x38, 0x70, 0x86, 0x9b, 0x38, 0x71, 0x89, 0x9a, 0x38, 0x72, 0x86, - 0x9b, 0x38, 0x72, 0x89, 0x9a, 0x38, 0x73, 0x86, 0x9b, 0x38, 0x73, 0x89, - 0x9a, 0x38, 0x74, 0x86, 0x9b, 0x38, 0x75, 0x89, 0x9a, 0x38, 0x75, 0x86, - 0x9b, 0x38, 0x76, 0x89, 0x9a, 0x38, 0x76, 0x86, 0x9b, 0x38, 0x77, 0x89, - 0x9a, 0x38, 0x78, 0x86, 0x9b, 0x38, 0x78, 0x89, 0x9a, 0x38, 0x79, 0x86, - 0x9b, 0x38, 0x79, 0x89, 0x9a, 0x38, 0x7a, 0x86, 0x9b, 0x38, 0x7a, 0x89, - 0x9a, 0x38, 0x7b, 0x86, 0x9b, 0x38, 0x7c, 0x89, 0x9a, 0x38, 0x7c, 0x86, - 0x9b, 0x38, 0x7d, 0x84, 0x9b, 0x38, 0x7d, 0x86, 0x9b, 0x38, 0x7e, 0x84, - 0x9b, 0x38, 0x7e, 0x86, 0x9b, 0x38, 0x7f, 0x84, 0x9b, 0x38, 0x7f, 0x86, - 0x9b, 0x38, 0x80, 0x84, 0x9b, 0x38, 0x81, 0x86, 0x9b, 0x38, 0x81, 0x84, - 0x9b, 0x38, 0x82, 0x86, 0x9b, 0x38, 0x82, 0x84, 0x9b, 0x38, 0x83, 0x86, - 0x9b, 0x38, 0x83, 0x84, 0x9b, 0x38, 0x84, 0x86, 0x9b, 0x38, 0x84, 0x84, - 0x9b, 0x38, 0x85, 0x86, 0x9b, 0x38, 0x85, 0x84, 0x9b, 0x38, 0x86, 0x86, - 0x9b, 0x38, 0x86, 0x84, 0x9b, 0x38, 0x87, 0x86, 0x9b, 0x38, 0x87, 0x84, - 0x9b, 0x38, 0x88, 0x86, 0x9b, 0x38, 0x88, 0x84, 0x9b, 0x38, 0x89, 0x86, - 0x9b, 0x38, 0x89, 0x84, 0x9b, 0x38, 0x8a, 0x86, 0x9b, 0x38, 0x8a, 0x84, - 0x9b, 0x38, 0x8b, 0x86, 0x9b, 0x38, 0x8b, 0x84, 0x9b, 0x38, 0x8c, 0x86, - 0x9b, 0x38, 0x8c, 0x84, 0x9b, 0x38, 0x8d, 0x86, 0x9b, 0x38, 0x8d, 0x84, - 0x9b, 0x38, 0x8e, 0x86, 0x9b, 0x38, 0x8e, 0x84, 0x9b, 0x38, 0x8e, 0x86, - 0x9b, 0x38, 0x8f, 0x84, 0x9b, 0x38, 0x8f, 0x86, 0x9b, 0x38, 0x90, 0x84, - 0x9b, 0x38, 0x90, 0x86, 0x9b, 0x38, 0x91, 0x84, 0x9b, 0x38, 0x91, 0x86, - 0x9b, 0x38, 0x92, 0x84, 0x9b, 0x38, 0x92, 0x86, 0x9b, 0x38, 0x93, 0x84, - 0x9b, 0x38, 0x93, 0x86, 0x9b, 0x38, 0x94, 0x84, 0x9b, 0x38, 0x94, 0x86, - 0x9b, 0x38, 0x94, 0x84, 0x9b, 0x38, 0x95, 0x84, 0x9c, 0x38, 0x95, 0x84, - 0x9b, 0x38, 0x96, 0x84, 0x9c, 0x38, 0x96, 0x84, 0x9b, 0x38, 0x97, 0x84, - 0x9c, 0x38, 0x97, 0x84, 0x9b, 0x38, 0x98, 0x84, 0x9c, 0x38, 0x98, 0x84, - 0x9b, 0x38, 0x98, 0x84, 0x9c, 0x38, 0x99, 0x84, 0x9b, 0x38, 0x99, 0x84, - 0x9c, 0x38, 0x9a, 0x84, 0x9b, 0x38, 0x9a, 0x84, 0x9c, 0x38, 0x9a, 0x84, - 0x9b, 0x38, 0x9b, 0x84, 0x9c, 0x38, 0x9b, 0x84, 0x9b, 0x38, 0x9c, 0x84, - 0x9c, 0x38, 0x9c, 0x84, 0x9c, 0x38, 0x9d, 0x84, 0x9d, 0x38, 0x9d, 0x84, - 0x9d, 0x38, 0x9d, 0x84, 0x9d, 0x38, 0x9e, 0x84, 0x9e, 0x38, 0x9e, 0x84, - 0x9e, 0x38, 0x9f, 0x84, 0x9f, 0x38, 0x9f, 0x84, 0x9e, 0x38, 0x9f, 0x84, - 0x9f, 0x38, 0xa0, 0x84, 0x9e, 0x38, 0xa0, 0x84, 0x9f, 0x38, 0xa1, 0x85, - 0xa1, 0x38, 0xa1, 0x85, 0xa1, 0x38, 0xa1, 0x85, 0xa1, 0x38, 0xa2, 0x85, - 0xa2, 0x38, 0xa2, 0x85, 0xa2, 0x38, 0xa3, 0x85, 0xa2, 0x38, 0xa3, 0x85, - 0xa2, 0x38, 0xa3, 0x85, 0xa2, 0x38, 0xa4, 0x85, 0xa2, 0x38, 0xa4, 0x86, - 0xa4, 0x38, 0xa5, 0x86, 0xa5, 0x38, 0xa5, 0x86, 0xa5, 0x38, 0xa5, 0x86, - 0xa5, 0x38, 0xa6, 0x86, 0xa6, 0x38, 0xa6, 0x86, 0xa6, 0x38, 0xa6, 0x86, - 0xa6, 0x38, 0xa7, 0x86, 0xa6, 0x38, 0xa7, 0x86, 0xa6, 0x38, 0xa8, 0x86, - 0xa6, 0x38, 0xa8, 0x86, 0xa6, 0x38, 0xa8, 0x86, 0xa6, 0x38, 0xa9, 0x87, - 0xa9, 0x38, 0xa9, 0x87, 0xa9, 0x38, 0xaa, 0x87, 0xaa, 0x38, 0xaa, 0x87, - 0xa9, 0x38, 0xaa, 0x87, 0xaa, 0x38, 0xab, 0x87, 0xa9, 0x38, 0xab, 0x87, - 0xaa, 0x38, 0xab, 0x87, 0xa9, 0x38, 0xac, 0x87, 0xaa, 0x38, 0xac, 0x88, - 0xac, 0x38, 0xac, 0x88, 0xac, 0x38, 0xad, 0x88, 0xad, 0x38, 0xad, 0x88, - 0xad, 0x38, 0xae, 0x88, 0xad, 0x38, 0xae, 0x88, 0xad, 0x38, 0xae, 0x88, - 0xad, 0x38, 0xaf, 0x88, 0xad, 0x38, 0xaf, 0x88, 0xad, 0x38, 0xaf, 0x88, - 0xad, 0x38, 0xb0, 0x89, 0xb0, 0x38, 0xb0, 0x89, 0xb0, 0x38, 0xb0, 0x89, - 0xb0, 0x38, 0xb1, 0x89, 0xb0, 0x38, 0xb1, 0x89, 0xb0, 0x38, 0xb2, 0x89, - 0xb0, 0x38, 0xb2, 0x89, 0xb0, 0x38, 0xb2, 0x89, 0xb2, 0x38, 0xb3, 0x89, - 0xb0, 0x38, 0xb3, 0x89, 0xb2, 0x38, 0xb3, 0x89, 0xb2, 0x38, 0xb4, 0x89, - 0xb2, 0x38, 0xb4, 0x89, 0xb2, 0x38, 0xb4, 0x89, 0xb2, 0x38, 0xb5, 0x8a, - 0xb3, 0x38, 0xb5, 0x8a, 0xb4, 0x38, 0xb5, 0x8a, 0xb3, 0x38, 0xb6, 0x8a, - 0xb4, 0x38, 0xb6, 0x8a, 0xb3, 0x38, 0xb6, 0x8a, 0xb4, 0x38, 0xb7, 0x8b, - 0xb7, 0x38, 0xb7, 0x8b, 0xb7, 0x38, 0xb7, 0x8b, 0xb7, 0x38, 0xb8, 0x8b, - 0xb7, 0x38, 0xb8, 0x8b, 0xb7, 0x38, 0xb8, 0x8b, 0xb7, 0x38, 0xb9, 0x8b, - 0xb7, 0x38, 0xb9, 0x8b, 0xb7, 0x38, 0xb9, 0x8b, 0xb7, 0x38, 0xba, 0x8b, - 0xb7, 0x38, 0xba, 0x8c, 0xba, 0x38, 0xba, 0x8c, 0xba, 0x38, 0xbb, 0x8c, - 0xba, 0x38, 0xbb, 0x8c, 0xba, 0x38, 0xbb, 0x8c, 0xba, 0x38, 0xbc, 0x8c, - 0xba, 0x38, 0xbc, 0x8c, 0xba, 0x38, 0xbc, 0x8c, 0xba, 0x38, 0xbd, 0x8c, - 0xba, 0x38, 0xbd, 0x8d, 0xbd, 0x38, 0xbd, 0x8d, 0xbd, 0x38, 0xbe, 0x8d, - 0xbd, 0x38, 0xbe, 0x8d, 0xbd, 0x38, 0xbe, 0x8d, 0xbd, 0x38, 0xbf, 0x8d, - 0xbd, 0x38, 0xbf, 0x8d, 0xbd, 0x38, 0xbf, 0x8d, 0xbd, 0x38, 0xc0, 0x8d, - 0xbd, 0x38, 0xc0, 0x8e, 0xc0, 0x38, 0xc0, 0x8e, 0xc0, 0x38, 0xc1, 0x8e, - 0xc0, 0x38, 0xc1, 0x8e, 0xc0, 0x38, 0xc1, 0x8e, 0xc0, 0x38, 0xc1, 0x8e, - 0xc0, 0x38, 0xc2, 0x8e, 0xc0, 0x38, 0xc2, 0x8e, 0xc0, 0x38, 0xc2, 0x8e, - 0xc0, 0x38, 0xc3, 0x8e, 0xc0, 0x38, 0xc3, 0x8e, 0xc0, 0x38, 0xc3, 0x8e, - 0xc0, 0x38, 0xc4, 0x8e, 0xc3, 0x38, 0xc4, 0x8e, 0xc3, 0x38, 0xc4, 0x8e, - 0xc3, 0x38, 0xc5, 0x8e, 0xc3, 0x38, 0xc5, 0x8e, 0xc3, 0x38, 0xc5, 0x8e, - 0xc3, 0x38, 0xc6, 0x8e, 0xc3, 0x38, 0xc6, 0x8e, 0xc3, 0x38, 0xc6, 0x8e, - 0xc3, 0x38, 0xc6, 0x8f, 0xc6, 0x38, 0xc7, 0x8f, 0xc6, 0x38, 0xc7, 0x8f, - 0xc6, 0x38, 0xc7, 0x8f, 0xc6, 0x38, 0xc8, 0x8f, 0xc6, 0x38, 0xc8, 0x8f, - 0xc6, 0x38, 0xc8, 0x8f, 0xc6, 0x38, 0xc9, 0x8f, 0xc6, 0x38, 0xc9, 0x8f, - 0xc6, 0x38, 0xc9, 0x90, 0xc9, 0x38, 0xc9, 0x90, 0xc9, 0x38, 0xca, 0x90, - 0xc9, 0x38, 0xca, 0x90, 0xc9, 0x38, 0xca, 0x90, 0xc9, 0x38, 0xcb, 0x90, - 0xc9, 0x38, 0xcb, 0x90, 0xc9, 0x38, 0xcb, 0x90, 0xc9, 0x38, 0xcc, 0x90, - 0xc9, 0x38, 0xcc, 0x90, 0xc9, 0x38, 0xcc, 0x91, 0xcc, 0x38, 0xcc, 0x90, - 0xc9, 0x38, 0xcd, 0x91, 0xcc, 0x38, 0xcd, 0x91, 0xcb, 0x38, 0xcd, 0x91, - 0xcc, 0x38, 0xce, 0x91, 0xcb, 0x38, 0xce, 0x91, 0xcc, 0x38, 0xce, 0x91, - 0xcb, 0x38, 0xce, 0x91, 0xcc, 0x38, 0xcf, 0x91, 0xcb, 0x38, 0xcf, 0x91, - 0xcc, 0x38, 0xcf, 0x92, 0xce, 0x38, 0xd0, 0x92, 0xce, 0x38, 0xd0, 0x92, - 0xce, 0x38, 0xd0, 0x92, 0xce, 0x38, 0xd0, 0x92, 0xce, 0x38, 0xd1, 0x92, - 0xce, 0x38, 0xd1, 0x92, 0xce, 0x38, 0xd1, 0x92, 0xce, 0x38, 0xd2, 0x92, - 0xce, 0x38, 0xd2, 0x92, 0xce, 0x38, 0xd2, 0x93, 0xd1, 0x38, 0xd2, 0x93, - 0xd1, 0x38, 0xd3, 0x93, 0xd1, 0x38, 0xd3, 0x93, 0xd1, 0x38, 0xd3, 0x93, - 0xd1, 0x38, 0xd4, 0x93, 0xd1, 0x38, 0xd4, 0x93, 0xd1, 0x38, 0xd4, 0x93, - 0xd1, 0x38, 0xd4, 0x93, 0xd1, 0x38, 0xd5, 0x94, 0xd4, 0x38, 0xd5, 0x94, - 0xd3, 0x38, 0xd5, 0x94, 0xd4, 0x38, 0xd6, 0x94, 0xd3, 0x38, 0xd6, 0x94, - 0xd4, 0x38, 0xd6, 0x94, 0xd3, 0x38, 0xd6, 0x94, 0xd4, 0x38, 0xd7, 0x94, - 0xd3, 0x38, 0xd7, 0x94, 0xd4, 0x38, 0xd7, 0x95, 0xd6, 0x38, 0xd7, 0x95, - 0xd6, 0x38, 0xd8, 0x95, 0xd6, 0x38, 0xd8, 0x95, 0xd6, 0x38, 0xd8, 0x95, - 0xd6, 0x38, 0xd9, 0x95, 0xd6, 0x38, 0xd9, 0x95, 0xd6, 0x38, 0xd9, 0x95, - 0xd6, 0x38, 0xd9, 0x95, 0xd6, 0x38, 0xda, 0x95, 0xd6, 0x38, 0xda, 0x96, - 0xd9, 0x38, 0xda, 0x95, 0xd6, 0x38, 0xda, 0x96, 0xd9, 0x38, 0xdb, 0x96, - 0xd9, 0x38, 0xdb, 0x96, 0xd9, 0x38, 0xdb, 0x96, 0xd9, 0x38, 0xdb, 0x96, - 0xd9, 0x38, 0xdc, 0x96, 0xd9, 0x38, 0xdc, 0x96, 0xd9, 0x38, 0xdc, 0x97, - 0xdb, 0x38, 0xdd, 0x96, 0xd9, 0x38, 0xdd, 0x97, 0xdb, 0x38, 0xdd, 0x97, - 0xdb, 0x38, 0xdd, 0x97, 0xdb, 0x38, 0xde, 0x97, 0xdb, 0x38, 0xde, 0x97, - 0xdb, 0x38, 0xde, 0x97, 0xdb, 0x38, 0xde, 0x97, 0xdb, 0x38, 0xdf, 0x97, - 0xdb, 0x38, 0xdf, 0x97, 0xdb, 0x38, 0xdf, 0x98, 0xde, 0x38, 0xdf, 0x98, - 0xde, 0x38, 0xe0, 0x98, 0xde, 0x38, 0xe0, 0x98, 0xde, 0x38, 0xe0, 0x98, - 0xde, 0x38, 0xe1, 0x98, 0xde, 0x38, 0xe1, 0x98, 0xde, 0x38, 0xe1, 0x98, - 0xde, 0x38, 0xe1, 0x98, 0xde, 0x38, 0xe2, 0x98, 0xde, 0x38, 0xe2, 0x98, - 0xe0, 0x38, 0xe2, 0x98, 0xde, 0x38, 0xe2, 0x98, 0xe0, 0x38, 0xe3, 0x98, - 0xe0, 0x38, 0xe3, 0x98, 0xe0, 0x38, 0xe3, 0x98, 0xe0, 0x38, 0xe3, 0x98, - 0xe0, 0x38, 0xe4, 0x98, 0xe0, 0x38, 0xe4, 0x98, 0xe0, 0x38, 0xe4, 0x99, - 0xe3, 0x38, 0xe4, 0x98, 0xe0, 0x38, 0xe5, 0x99, 0xe3, 0x38, 0xe5, 0x99, - 0xe2, 0x38, 0xe5, 0x99, 0xe3, 0x38, 0xe5, 0x99, 0xe2, 0x38, 0xe6, 0x99, - 0xe3, 0x38, 0xe6, 0x99, 0xe2, 0x38, 0xe6, 0x99, 0xe3, 0x38, 0xe6, 0x9a, - 0xe5, 0x38, 0xe7, 0x9a, 0xe5, 0x38, 0xe7, 0x9a, 0xe5, 0x38, 0xe7, 0x9a, - 0xe5, 0x38, 0xe7, 0x9a, 0xe5, 0x38, 0xe8, 0x9a, 0xe5, 0x38, 0xe8, 0x9a, - 0xe5, 0x38, 0xe8, 0x9a, 0xe5, 0x38, 0xe8, 0x9a, 0xe5, 0x38, 0xe9, 0x9a, - 0xe5, 0x38, 0xe9, 0x9a, 0xe5, 0x38, 0xe9, 0x9a, 0xe5, 0x38, 0xe9, 0x9b, - 0xe7, 0x38, 0xea, 0x9b, 0xe7, 0x38, 0xea, 0x9b, 0xe7, 0x38, 0xea, 0x9b, - 0xe7, 0x38, 0xea, 0x9b, 0xe7, 0x38, 0xeb, 0x9b, 0xe7, 0x38, 0xeb, 0x9b, - 0xe7, 0x38, 0xeb, 0x9b, 0xe7, 0x38, 0xeb, 0x9b, 0xe7, 0x38, 0xec, 0x9c, - 0xea, 0x38, 0xec, 0x9c, 0xea, 0x38, 0xec, 0x9c, 0xea, 0x38, 0xec, 0x9c, - 0xea, 0x38, 0xec, 0x9c, 0xea, 0x38, 0xed, 0x9c, 0xea, 0x38, 0xed, 0x9c, - 0xea, 0x38, 0xed, 0x9c, 0xea, 0x38, 0xed, 0x9c, 0xea, 0x38, 0xee, 0x9c, - 0xea, 0x38, 0xee, 0x9d, 0xec, 0x38, 0xee, 0x9c, 0xea, 0x38, 0xee, 0x9d, - 0xec, 0x38, 0xef, 0x9d, 0xec, 0x38, 0xef, 0x9d, 0xec, 0x38, 0xef, 0x9d, - 0xec, 0x38, 0xef, 0x9d, 0xec, 0x38, 0xf0, 0x9d, 0xec, 0x38, 0xf0, 0x9d, - 0xec, 0x38, 0xf0, 0x9d, 0xee, 0x38, 0xf0, 0x9d, 0xec, 0x38, 0xf1, 0x9d, - 0xee, 0x38, 0xf1, 0x9d, 0xee, 0x38, 0xf1, 0x9d, 0xee, 0x38, 0xf1, 0x9d, - 0xee, 0x38, 0xf2, 0x9d, 0xee, 0x38, 0xf2, 0x9d, 0xee, 0x38, 0xf2, 0x9d, - 0xee, 0x38, 0xf2, 0x9e, 0xf0, 0x38, 0xf2, 0x9e, 0xf1, 0x38, 0xf3, 0x9e, - 0xf0, 0x38, 0xf3, 0x9e, 0xf1, 0x38, 0xf3, 0x9e, 0xf0, 0x38, 0xf3, 0x9e, - 0xf1, 0x38, 0xf4, 0x9e, 0xf0, 0x38, 0xf4, 0x9e, 0xf1, 0x38, 0xf4, 0x9e, - 0xf0, 0x38, 0xf4, 0x9e, 0xf1, 0x38, 0xf5, 0x9f, 0xf3, 0x38, 0xf5, 0x9e, - 0xf1, 0x38, 0xf5, 0x9f, 0xf3, 0x38, 0xf5, 0x9e, 0xf1, 0x38, 0xf5, 0x9f, - 0xf3, 0x38, 0xf6, 0x9f, 0xf2, 0x38, 0xf6, 0x9f, 0xf3, 0x38, 0xf6, 0x9f, - 0xf2, 0x38, 0xf6, 0x9f, 0xf3, 0x38, 0xf7, 0x9f, 0xf2, 0x38, 0xf7, 0x9f, - 0xf3, 0x38, 0xf7, 0xa0, 0xf5, 0x38, 0xf7, 0x9f, 0xf3, 0x38, 0xf8, 0xa0, - 0xf5, 0x38, 0xf8, 0xa0, 0xf5, 0x38, 0xf8, 0xa0, 0xf5, 0x38, 0xf8, 0xa0, - 0xf5, 0x38, 0xf8, 0xa0, 0xf5, 0x38, 0xf9, 0xa0, 0xf5, 0x38, 0xf9, 0xa0, - 0xf5, 0x38, 0xf9, 0xa1, 0xf7, 0x38, 0xf9, 0xa1, 0xf7, 0x38, 0xfa, 0xa1, - 0xf7, 0x38, 0xfa, 0xa1, 0xf7, 0x38, 0xfa, 0xa1, 0xf7, 0x38, 0xfa, 0xa1, - 0xf7, 0x38, 0xfa, 0xa1, 0xf7, 0x38, 0xfb, 0xa1, 0xf7, 0x38, 0xfb, 0xa1, - 0xf7, 0x38, 0xfb, 0xa1, 0xf7, 0x38, 0xfb, 0xa1, 0xf9, 0x38, 0xfc, 0xa1, - 0xf7, 0x38, 0xfc, 0xa1, 0xf9, 0x38, 0xfc, 0xa1, 0xf9, 0x38, 0xfc, 0xa1, - 0xf9, 0x38, 0xfc, 0xa1, 0xf9, 0x38, 0xfd, 0xa1, 0xf9, 0x38, 0xfd, 0xa1, - 0xf9, 0x38, 0xfd, 0xa1, 0xf9, 0x38, 0xfd, 0xa2, 0xfb, 0x38, 0xfe, 0xa1, - 0xf9, 0x38, 0xfe, 0xa2, 0xfb, 0x38, 0xfe, 0xa1, 0xf9, 0x38, 0xfe, 0xa2, - 0xfb, 0x38, 0xfe, 0xa2, 0xfb, 0x38, 0xff, 0xa2, 0xfb, 0x38, 0xff, 0xa2, - 0xfb, 0x38, 0x03, 0x90, 0x9a, 0x38, 0x0a, 0x8c, 0x9a, 0x38, 0x0f, 0x90, - 0x9a, 0x38, 0x14, 0x8c, 0x9a, 0x38, 0x17, 0x89, 0x9a, 0x38, 0x1b, 0x8c, - 0x9a, 0x38, 0x1e, 0x89, 0x9a, 0x38, 0x20, 0x8c, 0x9a, 0x38, 0x23, 0x89, - 0x9a, 0x38, 0x25, 0x8c, 0x9a, 0x38, 0x27, 0x89, 0x9a, 0x38, 0x29, 0x8c, - 0x9a, 0x38, 0x2b, 0x89, 0x9a, 0x38, 0x2d, 0x8c, 0x9a, 0x38, 0x2f, 0x89, - 0x9a, 0x38, 0x31, 0x8c, 0x9a, 0x38, 0x32, 0x89, 0x9a, 0x38, 0x34, 0x8c, - 0x9a, 0x38, 0x35, 0x89, 0x9a, 0x38, 0x37, 0x8c, 0x9a, 0x38, 0x38, 0x89, - 0x9a, 0x38, 0x3a, 0x8c, 0x9a, 0x38, 0x3b, 0x89, 0x9a, 0x38, 0x3c, 0x8c, - 0x9a, 0x38, 0x3e, 0x89, 0x9a, 0x38, 0x3f, 0x8c, 0x9a, 0x38, 0x40, 0x89, - 0x9a, 0x38, 0x42, 0x8c, 0x9a, 0x38, 0x43, 0x89, 0x9a, 0x38, 0x44, 0x8c, - 0x9a, 0x38, 0x45, 0x89, 0x9a, 0x38, 0x46, 0x8c, 0x9a, 0x38, 0x47, 0x89, - 0x9a, 0x38, 0x48, 0x8c, 0x9a, 0x38, 0x49, 0x89, 0x9a, 0x38, 0x4a, 0x8c, - 0x9a, 0x38, 0x4b, 0x89, 0x9a, 0x38, 0x4c, 0x8c, 0x9a, 0x38, 0x4d, 0x89, - 0x9a, 0x38, 0x4e, 0x8c, 0x9a, 0x38, 0x4f, 0x89, 0x9a, 0x38, 0x50, 0x8c, - 0x9a, 0x38, 0x51, 0x89, 0x9a, 0x38, 0x52, 0x8c, 0x9a, 0x38, 0x53, 0x89, - 0x9a, 0x38, 0x54, 0x8c, 0x9a, 0x38, 0x55, 0x89, 0x9a, 0x38, 0x56, 0x8c, - 0x9a, 0x38, 0x57, 0x89, 0x9a, 0x38, 0x58, 0x8c, 0x9a, 0x38, 0x58, 0x89, - 0x9a, 0x38, 0x59, 0x8c, 0x9a, 0x38, 0x5a, 0x89, 0x9a, 0x38, 0x5b, 0x8c, - 0x9a, 0x38, 0x5c, 0x89, 0x9a, 0x38, 0x5d, 0x8c, 0x9a, 0x38, 0x5d, 0x89, - 0x9a, 0x38, 0x5e, 0x8c, 0x9a, 0x38, 0x5f, 0x89, 0x9a, 0x38, 0x60, 0x8c, - 0x9a, 0x38, 0x60, 0x89, 0x9a, 0x38, 0x61, 0x8c, 0x9a, 0x38, 0x62, 0x89, - 0x9a, 0x38, 0x63, 0x8c, 0x9a, 0x38, 0x63, 0x89, 0x9a, 0x38, 0x64, 0x8c, - 0x9a, 0x38, 0x65, 0x89, 0x9a, 0x38, 0x66, 0x8c, 0x9a, 0x38, 0x66, 0x89, - 0x9a, 0x38, 0x67, 0x8c, 0x9a, 0x38, 0x68, 0x89, 0x9a, 0x38, 0x68, 0x86, - 0x9b, 0x38, 0x69, 0x89, 0x9a, 0x38, 0x6a, 0x86, 0x9b, 0x38, 0x6a, 0x89, - 0x9a, 0x38, 0x6b, 0x86, 0x9b, 0x38, 0x6c, 0x89, 0x9a, 0x38, 0x6c, 0x86, - 0x9b, 0x38, 0x6d, 0x89, 0x9a, 0x38, 0x6e, 0x86, 0x9b, 0x38, 0x6e, 0x89, - 0x9a, 0x38, 0x6f, 0x86, 0x9b, 0x38, 0x70, 0x89, 0x9a, 0x38, 0x70, 0x86, - 0x9b, 0x38, 0x71, 0x89, 0x9a, 0x38, 0x72, 0x86, 0x9b, 0x38, 0x72, 0x89, - 0x9a, 0x38, 0x73, 0x86, 0x9b, 0x38, 0x73, 0x89, 0x9a, 0x38, 0x74, 0x86, - 0x9b, 0x38, 0x75, 0x89, 0x9a, 0x38, 0x75, 0x86, 0x9b, 0x38, 0x76, 0x89, - 0x9a, 0x38, 0x76, 0x86, 0x9b, 0x38, 0x77, 0x89, 0x9a, 0x38, 0x78, 0x86, - 0x9b, 0x38, 0x78, 0x89, 0x9a, 0x38, 0x79, 0x86, 0x9b, 0x38, 0x79, 0x89, - 0x9a, 0x38, 0x7a, 0x86, 0x9b, 0x38, 0x7a, 0x89, 0x9a, 0x38, 0x7b, 0x86, - 0x9b, 0x38, 0x7c, 0x89, 0x9a, 0x38, 0x7c, 0x86, 0x9b, 0x38, 0x7d, 0x89, - 0x9a, 0x38, 0x7d, 0x86, 0x9b, 0x38, 0x7e, 0x89, 0x9a, 0x38, 0x7e, 0x86, - 0x9b, 0x38, 0x7f, 0x83, 0x9b, 0x38, 0x7f, 0x86, 0x9b, 0x38, 0x80, 0x83, - 0x9b, 0x38, 0x81, 0x86, 0x9b, 0x38, 0x81, 0x83, 0x9b, 0x38, 0x82, 0x86, - 0x9b, 0x38, 0x82, 0x83, 0x9b, 0x38, 0x83, 0x86, 0x9b, 0x38, 0x83, 0x83, - 0x9b, 0x38, 0x84, 0x86, 0x9b, 0x38, 0x84, 0x83, 0x9b, 0x38, 0x85, 0x86, - 0x9b, 0x38, 0x85, 0x83, 0x9b, 0x38, 0x86, 0x86, 0x9b, 0x38, 0x86, 0x83, - 0x9b, 0x38, 0x87, 0x86, 0x9b, 0x38, 0x87, 0x83, 0x9b, 0x38, 0x88, 0x86, - 0x9b, 0x38, 0x88, 0x83, 0x9b, 0x38, 0x89, 0x86, 0x9b, 0x38, 0x89, 0x83, - 0x9b, 0x38, 0x8a, 0x86, 0x9b, 0x38, 0x8a, 0x83, 0x9b, 0x38, 0x8b, 0x86, - 0x9b, 0x38, 0x8b, 0x83, 0x9b, 0x38, 0x8c, 0x86, 0x9b, 0x38, 0x8c, 0x83, - 0x9b, 0x38, 0x8d, 0x86, 0x9b, 0x38, 0x8d, 0x83, 0x9b, 0x38, 0x8e, 0x86, - 0x9b, 0x38, 0x8e, 0x83, 0x9b, 0x38, 0x8e, 0x86, 0x9b, 0x38, 0x8f, 0x83, - 0x9b, 0x38, 0x8f, 0x86, 0x9b, 0x38, 0x90, 0x83, 0x9b, 0x38, 0x90, 0x86, - 0x9b, 0x38, 0x91, 0x83, 0x9b, 0x38, 0x91, 0x86, 0x9b, 0x38, 0x92, 0x83, - 0x9b, 0x38, 0x92, 0x86, 0x9b, 0x38, 0x93, 0x83, 0x9b, 0x38, 0x93, 0x83, - 0x9c, 0x38, 0x94, 0x83, 0x9b, 0x38, 0x94, 0x83, 0x9c, 0x38, 0x94, 0x83, - 0x9b, 0x38, 0x95, 0x83, 0x9c, 0x38, 0x95, 0x83, 0x9b, 0x38, 0x96, 0x83, - 0x9c, 0x38, 0x96, 0x83, 0x9b, 0x38, 0x97, 0x83, 0x9c, 0x38, 0x97, 0x83, - 0x9b, 0x38, 0x98, 0x83, 0x9c, 0x38, 0x98, 0x83, 0x9b, 0x38, 0x98, 0x83, - 0x9c, 0x38, 0x99, 0x83, 0x9b, 0x38, 0x99, 0x83, 0x9c, 0x38, 0x9a, 0x83, - 0x9b, 0x38, 0x9a, 0x83, 0x9c, 0x38, 0x9a, 0x83, 0x9b, 0x38, 0x9b, 0x83, - 0x9c, 0x38, 0x9b, 0x83, 0x9b, 0x38, 0x9c, 0x83, 0x9c, 0x38, 0x9c, 0x83, - 0x9c, 0x38, 0x9d, 0x83, 0x9d, 0x38, 0x9d, 0x83, 0x9c, 0x38, 0x9d, 0x83, - 0x9d, 0x38, 0x9e, 0x83, 0x9c, 0x38, 0x9e, 0x83, 0x9d, 0x38, 0x9f, 0x84, - 0x9f, 0x38, 0x9f, 0x84, 0x9f, 0x38, 0x9f, 0x84, 0x9f, 0x38, 0xa0, 0x84, - 0xa0, 0x38, 0xa0, 0x84, 0xa0, 0x38, 0xa1, 0x84, 0xa1, 0x38, 0xa1, 0x84, - 0xa0, 0x38, 0xa1, 0x84, 0xa1, 0x38, 0xa2, 0x84, 0xa0, 0x38, 0xa2, 0x84, - 0xa1, 0x38, 0xa3, 0x85, 0xa3, 0x38, 0xa3, 0x85, 0xa3, 0x38, 0xa3, 0x85, - 0xa3, 0x38, 0xa4, 0x85, 0xa4, 0x38, 0xa4, 0x85, 0xa4, 0x38, 0xa5, 0x85, - 0xa4, 0x38, 0xa5, 0x85, 0xa4, 0x38, 0xa5, 0x85, 0xa4, 0x38, 0xa6, 0x85, - 0xa4, 0x38, 0xa6, 0x86, 0xa6, 0x38, 0xa6, 0x86, 0xa6, 0x38, 0xa7, 0x86, - 0xa7, 0x38, 0xa7, 0x86, 0xa7, 0x38, 0xa8, 0x86, 0xa8, 0x38, 0xa8, 0x86, - 0xa7, 0x38, 0xa8, 0x86, 0xa8, 0x38, 0xa9, 0x86, 0xa7, 0x38, 0xa9, 0x86, - 0xa8, 0x38, 0xaa, 0x86, 0xa7, 0x38, 0xaa, 0x86, 0xa8, 0x38, 0xaa, 0x87, - 0xaa, 0x38, 0xab, 0x87, 0xab, 0x38, 0xab, 0x87, 0xab, 0x38, 0xab, 0x87, - 0xab, 0x38, 0xac, 0x87, 0xab, 0x38, 0xac, 0x87, 0xab, 0x38, 0xac, 0x87, - 0xab, 0x38, 0xad, 0x87, 0xab, 0x38, 0xad, 0x87, 0xab, 0x38, 0xae, 0x87, - 0xab, 0x38, 0xae, 0x88, 0xae, 0x38, 0xae, 0x88, 0xae, 0x38, 0xaf, 0x88, - 0xaf, 0x38, 0xaf, 0x88, 0xae, 0x38, 0xaf, 0x88, 0xaf, 0x38, 0xb0, 0x88, - 0xae, 0x38, 0xb0, 0x88, 0xaf, 0x38, 0xb0, 0x88, 0xae, 0x38, 0xb1, 0x88, - 0xaf, 0x38, 0xb1, 0x89, 0xb1, 0x38, 0xb2, 0x89, 0xb2, 0x38, 0xb2, 0x89, - 0xb2, 0x38, 0xb2, 0x89, 0xb2, 0x38, 0xb3, 0x89, 0xb2, 0x38, 0xb3, 0x89, - 0xb2, 0x38, 0xb3, 0x89, 0xb2, 0x38, 0xb4, 0x89, 0xb2, 0x38, 0xb4, 0x89, - 0xb2, 0x38, 0xb4, 0x89, 0xb2, 0x38, 0xb5, 0x89, 0xb2, 0x38, 0xb5, 0x89, - 0xb2, 0x38, 0xb5, 0x8a, 0xb5, 0x38, 0xb6, 0x8a, 0xb5, 0x38, 0xb6, 0x8a, - 0xb5, 0x38, 0xb6, 0x8a, 0xb5, 0x38, 0xb7, 0x8a, 0xb5, 0x38, 0xb7, 0x8a, - 0xb5, 0x38, 0xb7, 0x8a, 0xb5, 0x38, 0xb8, 0x8a, 0xb5, 0x38, 0xb8, 0x8a, - 0xb5, 0x38, 0xb8, 0x8b, 0xb8, 0x38, 0xb9, 0x8b, 0xb8, 0x38, 0xb9, 0x8b, - 0xb8, 0x38, 0xb9, 0x8b, 0xb8, 0x38, 0xba, 0x8b, 0xb8, 0x38, 0xba, 0x8b, - 0xb8, 0x38, 0xba, 0x8b, 0xb8, 0x38, 0xbb, 0x8b, 0xb8, 0x38, 0xbb, 0x8b, - 0xb8, 0x38, 0xbb, 0x8c, 0xbb, 0x38, 0xbc, 0x8c, 0xbc, 0x38, 0xbc, 0x8c, - 0xbb, 0x38, 0xbc, 0x8c, 0xbc, 0x38, 0xbd, 0x8c, 0xbb, 0x38, 0xbd, 0x8c, - 0xbc, 0x38, 0xbd, 0x8c, 0xbb, 0x38, 0xbe, 0x8c, 0xbc, 0x38, 0xbe, 0x8c, - 0xbb, 0x38, 0xbe, 0x8c, 0xbc, 0x38, 0xbf, 0x8d, 0xbf, 0x38, 0xbf, 0x8d, - 0xbe, 0x38, 0xbf, 0x8d, 0xbf, 0x38, 0xc0, 0x8d, 0xbe, 0x38, 0xc0, 0x8d, - 0xbf, 0x38, 0xc0, 0x8d, 0xbe, 0x38, 0xc1, 0x8d, 0xbf, 0x38, 0xc1, 0x8d, - 0xbe, 0x38, 0xc1, 0x8d, 0xbf, 0x38, 0xc1, 0x8e, 0xc1, 0x38, 0xc2, 0x8d, - 0xbf, 0x38, 0xc2, 0x8e, 0xc1, 0x38, 0xc2, 0x8e, 0xc1, 0x38, 0xc3, 0x8e, - 0xc1, 0x38, 0xc3, 0x8e, 0xc1, 0x38, 0xc3, 0x8e, 0xc1, 0x38, 0xc4, 0x8e, - 0xc1, 0x38, 0xc4, 0x8e, 0xc1, 0x38, 0xc4, 0x8e, 0xc1, 0x38, 0xc5, 0x8e, - 0xc1, 0x38, 0xc5, 0x8f, 0xc4, 0x38, 0xc5, 0x8f, 0xc5, 0x38, 0xc6, 0x8f, - 0xc4, 0x38, 0xc6, 0x8f, 0xc5, 0x38, 0xc6, 0x8f, 0xc4, 0x38, 0xc6, 0x8f, - 0xc5, 0x38, 0xc7, 0x8f, 0xc4, 0x38, 0xc7, 0x8f, 0xc5, 0x38, 0xc7, 0x8f, - 0xc4, 0x38, 0xc8, 0x8f, 0xc5, 0x38, 0xc8, 0x90, 0xc7, 0x38, 0xc8, 0x90, - 0xc7, 0x38, 0xc9, 0x90, 0xc7, 0x38, 0xc9, 0x90, 0xc7, 0x38, 0xc9, 0x90, - 0xc7, 0x38, 0xc9, 0x90, 0xc7, 0x38, 0xca, 0x90, 0xc7, 0x38, 0xca, 0x90, - 0xc7, 0x38, 0xca, 0x90, 0xc7, 0x38, 0xcb, 0x91, 0xca, 0x38, 0xcb, 0x91, - 0xca, 0x38, 0xcb, 0x91, 0xca, 0x38, 0xcc, 0x91, 0xca, 0x38, 0xcc, 0x91, - 0xca, 0x38, 0xcc, 0x91, 0xca, 0x38, 0xcc, 0x91, 0xca, 0x38, 0xcd, 0x91, - 0xca, 0x38, 0xcd, 0x91, 0xca, 0x38, 0xcd, 0x92, 0xcd, 0x38, 0xce, 0x92, - 0xcd, 0x38, 0xce, 0x92, 0xcd, 0x38, 0xce, 0x92, 0xcd, 0x38, 0xce, 0x92, - 0xcd, 0x38, 0xcf, 0x92, 0xcd, 0x38, 0xcf, 0x92, 0xcd, 0x38, 0xcf, 0x92, - 0xcd, 0x38, 0xd0, 0x92, 0xcd, 0x38, 0xd0, 0x92, 0xcd, 0x38, 0xd0, 0x92, - 0xcd, 0x38, 0xd0, 0x92, 0xcd, 0x38, 0xd1, 0x93, 0xd0, 0x38, 0xd1, 0x93, - 0xcf, 0x38, 0xd1, 0x93, 0xd0, 0x38, 0xd2, 0x93, 0xcf, 0x38, 0xd2, 0x93, - 0xd0, 0x38, 0xd2, 0x93, 0xcf, 0x38, 0xd2, 0x93, 0xd0, 0x38, 0xd3, 0x93, - 0xcf, 0x38, 0xd3, 0x93, 0xd0, 0x38, 0xd3, 0x94, 0xd2, 0x38, 0xd4, 0x94, - 0xd2, 0x38, 0xd4, 0x94, 0xd2, 0x38, 0xd4, 0x94, 0xd2, 0x38, 0xd4, 0x94, - 0xd2, 0x38, 0xd5, 0x94, 0xd2, 0x38, 0xd5, 0x94, 0xd2, 0x38, 0xd5, 0x94, - 0xd2, 0x38, 0xd6, 0x94, 0xd2, 0x38, 0xd6, 0x94, 0xd2, 0x38, 0xd6, 0x94, - 0xd5, 0x38, 0xd6, 0x94, 0xd5, 0x38, 0xd7, 0x94, 0xd5, 0x38, 0xd7, 0x94, - 0xd5, 0x38, 0xd7, 0x94, 0xd5, 0x38, 0xd7, 0x94, 0xd5, 0x38, 0xd8, 0x94, - 0xd5, 0x38, 0xd8, 0x94, 0xd5, 0x38, 0xd8, 0x94, 0xd5, 0x38, 0xd9, 0x95, - 0xd7, 0x38, 0xd9, 0x94, 0xd5, 0x38, 0xd9, 0x95, 0xd7, 0x38, 0xd9, 0x95, - 0xd7, 0x38, 0xda, 0x95, 0xd7, 0x38, 0xda, 0x95, 0xd7, 0x38, 0xda, 0x95, - 0xd7, 0x38, 0xda, 0x95, 0xd7, 0x38, 0xdb, 0x95, 0xd7, 0x38, 0xdb, 0x96, - 0xda, 0x38, 0xdb, 0x96, 0xda, 0x38, 0xdb, 0x96, 0xda, 0x38, 0xdc, 0x96, - 0xda, 0x38, 0xdc, 0x96, 0xda, 0x38, 0xdc, 0x96, 0xda, 0x38, 0xdd, 0x96, - 0xda, 0x38, 0xdd, 0x96, 0xda, 0x38, 0xdd, 0x96, 0xda, 0x38, 0xdd, 0x96, - 0xda, 0x38, 0xde, 0x97, 0xdd, 0x38, 0xde, 0x96, 0xda, 0x38, 0xde, 0x97, - 0xdd, 0x38, 0xde, 0x97, 0xdc, 0x38, 0xdf, 0x97, 0xdd, 0x38, 0xdf, 0x97, - 0xdc, 0x38, 0xdf, 0x97, 0xdd, 0x38, 0xdf, 0x97, 0xdc, 0x38, 0xe0, 0x97, - 0xdd, 0x38, 0xe0, 0x97, 0xdc, 0x38, 0xe0, 0x97, 0xdd, 0x38, 0xe1, 0x98, - 0xdf, 0x38, 0xe1, 0x98, 0xdf, 0x38, 0xe1, 0x98, 0xdf, 0x38, 0xe1, 0x98, - 0xdf, 0x38, 0xe2, 0x98, 0xdf, 0x38, 0xe2, 0x98, 0xdf, 0x38, 0xe2, 0x98, - 0xdf, 0x38, 0xe2, 0x98, 0xdf, 0x38, 0xe3, 0x98, 0xdf, 0x38, 0xe3, 0x99, - 0xe1, 0x38, 0xe3, 0x99, 0xe2, 0x38, 0xe3, 0x99, 0xe1, 0x38, 0xe4, 0x99, - 0xe2, 0x38, 0xe4, 0x99, 0xe1, 0x38, 0xe4, 0x99, 0xe2, 0x38, 0xe4, 0x99, - 0xe1, 0x38, 0xe5, 0x99, 0xe2, 0x38, 0xe5, 0x99, 0xe1, 0x38, 0xe5, 0x99, - 0xe2, 0x38, 0xe5, 0x9a, 0xe4, 0x38, 0xe6, 0x99, 0xe2, 0x38, 0xe6, 0x9a, - 0xe4, 0x38, 0xe6, 0x9a, 0xe4, 0x38, 0xe6, 0x9a, 0xe4, 0x38, 0xe7, 0x9a, - 0xe4, 0x38, 0xe7, 0x9a, 0xe4, 0x38, 0xe7, 0x9a, 0xe4, 0x38, 0xe7, 0x9a, - 0xe4, 0x38, 0xe8, 0x9a, 0xe6, 0x38, 0xe8, 0x9a, 0xe4, 0x38, 0xe8, 0x9a, - 0xe6, 0x38, 0xe8, 0x9a, 0xe6, 0x38, 0xe9, 0x9a, 0xe6, 0x38, 0xe9, 0x9a, - 0xe6, 0x38, 0xe9, 0x9a, 0xe6, 0x38, 0xe9, 0x9a, 0xe6, 0x38, 0xea, 0x9a, - 0xe6, 0x38, 0xea, 0x9a, 0xe6, 0x38, 0xea, 0x9a, 0xe6, 0x38, 0xea, 0x9b, - 0xe8, 0x38, 0xeb, 0x9b, 0xe9, 0x38, 0xeb, 0x9b, 0xe8, 0x38, 0xeb, 0x9b, - 0xe9, 0x38, 0xeb, 0x9b, 0xe8, 0x38, 0xec, 0x9b, 0xe9, 0x38, 0xec, 0x9b, - 0xe8, 0x38, 0xec, 0x9b, 0xe9, 0x38, 0xec, 0x9b, 0xe8, 0x38, 0xec, 0x9b, - 0xe9, 0x38, 0xed, 0x9c, 0xeb, 0x38, 0xed, 0x9b, 0xe9, 0x38, 0xed, 0x9c, - 0xeb, 0x38, 0xed, 0x9c, 0xeb, 0x38, 0xee, 0x9c, 0xeb, 0x38, 0xee, 0x9c, - 0xeb, 0x38, 0xee, 0x9c, 0xeb, 0x38, 0xee, 0x9c, 0xeb, 0x38, 0xef, 0x9c, - 0xeb, 0x38, 0xef, 0x9d, 0xed, 0x38, 0xef, 0x9d, 0xed, 0x38, 0xef, 0x9d, - 0xed, 0x38, 0xf0, 0x9d, 0xed, 0x38, 0xf0, 0x9d, 0xed, 0x38, 0xf0, 0x9d, - 0xed, 0x38, 0xf0, 0x9d, 0xed, 0x38, 0xf1, 0x9d, 0xed, 0x38, 0xf1, 0x9d, - 0xed, 0x38, 0xf1, 0x9d, 0xed, 0x38, 0xf1, 0x9e, 0xef, 0x38, 0xf2, 0x9d, - 0xed, 0x38, 0xf2, 0x9e, 0xef, 0x38, 0xf2, 0x9e, 0xef, 0x38, 0xf2, 0x9e, - 0xef, 0x38, 0xf2, 0x9e, 0xef, 0x38, 0xf3, 0x9e, 0xef, 0x38, 0xf3, 0x9e, - 0xef, 0x38, 0xf3, 0x9e, 0xef, 0x38, 0xf3, 0x9f, 0xf2, 0x38, 0xf4, 0x9e, - 0xef, 0x38, 0xf4, 0x9f, 0xf2, 0x38, 0xf4, 0x9f, 0xf1, 0x38, 0xf4, 0x9f, - 0xf2, 0x38, 0xf5, 0x9f, 0xf1, 0x38, 0xf5, 0x9f, 0xf2, 0x38, 0xf5, 0x9f, - 0xf1, 0x38, 0xf5, 0x9f, 0xf2, 0x38, 0xf5, 0x9f, 0xf4, 0x38, 0xf6, 0x9f, - 0xf4, 0x38, 0xf6, 0x9f, 0xf4, 0x38, 0xf6, 0x9f, 0xf4, 0x38, 0xf6, 0x9f, - 0xf4, 0x38, 0xf7, 0x9f, 0xf4, 0x38, 0xf7, 0x9f, 0xf4, 0x38, 0xf7, 0x9f, - 0xf4, 0x38, 0xf7, 0x9f, 0xf4, 0x38, 0xf8, 0x9f, 0xf4, 0x38, 0xf8, 0x9f, - 0xf4, 0x38, 0xf8, 0x9f, 0xf4, 0x38, 0xf8, 0xa0, 0xf6, 0x38, 0xf8, 0x9f, - 0xf4, 0x38, 0xf9, 0xa0, 0xf6, 0x38, 0xf9, 0xa0, 0xf6, 0x38, 0xf9, 0xa0, - 0xf6, 0x38, 0xf9, 0xa0, 0xf6, 0x38, 0xfa, 0xa0, 0xf6, 0x38, 0xfa, 0xa0, - 0xf6, 0x38, 0xfa, 0xa0, 0xf6, 0x38, 0xfa, 0xa1, 0xf8, 0x38, 0xfa, 0xa0, - 0xf6, 0x38, 0xfb, 0xa1, 0xf8, 0x38, 0xfb, 0xa1, 0xf8, 0x38, 0xfb, 0xa1, - 0xf8, 0x38, 0xfb, 0xa1, 0xf8, 0x38, 0xfc, 0xa1, 0xf8, 0x38, 0xfc, 0xa1, - 0xf8, 0x38, 0xfc, 0xa1, 0xf8, 0x38, 0xfc, 0xa2, 0xfa, 0x38, 0xfc, 0xa2, - 0xfa, 0x38, 0xfd, 0xa2, 0xfa, 0x38, 0xfd, 0xa2, 0xfa, 0x38, 0xfd, 0xa2, - 0xfa, 0x38, 0xfd, 0xa2, 0xfa, 0x38, 0xfe, 0xa2, 0xfa, 0x38, 0xfe, 0xa2, - 0xfa, 0x38, 0xfe, 0xa2, 0xfa, 0x38, 0xfe, 0xa2, 0xfa, 0x38, 0xfe, 0xa2, - 0xfa, 0x38, 0xff, 0xa2, 0xfa, 0x38, 0xff, 0xa2, 0xfa, 0x38, 0x03, 0x8f, - 0x9a, 0x39, 0x0a, 0x8f, 0x9a, 0x39, 0x0f, 0x8f, 0x9a, 0x39, 0x14, 0x8d, - 0x9a, 0x39, 0x17, 0x8f, 0x9a, 0x39, 0x1b, 0x8d, 0x9a, 0x39, 0x1e, 0x8f, - 0x9a, 0x39, 0x20, 0x8d, 0x9a, 0x39, 0x23, 0x8f, 0x9a, 0x39, 0x25, 0x8d, - 0x9a, 0x39, 0x27, 0x8f, 0x9a, 0x39, 0x29, 0x8d, 0x9a, 0x39, 0x2b, 0x8f, - 0x9a, 0x39, 0x2d, 0x8d, 0x9a, 0x39, 0x2f, 0x8f, 0x9a, 0x39, 0x31, 0x8d, - 0x9a, 0x39, 0x32, 0x8f, 0x9a, 0x39, 0x34, 0x8d, 0x9a, 0x39, 0x35, 0x8f, - 0x9a, 0x39, 0x37, 0x8d, 0x9a, 0x39, 0x38, 0x8f, 0x9a, 0x39, 0x3a, 0x8d, - 0x9a, 0x39, 0x3b, 0x8f, 0x9a, 0x39, 0x3c, 0x8d, 0x9a, 0x39, 0x3e, 0x8f, - 0x9a, 0x39, 0x3f, 0x8d, 0x9a, 0x39, 0x40, 0x89, 0x9a, 0x39, 0x42, 0x8d, - 0x9a, 0x39, 0x43, 0x89, 0x9a, 0x39, 0x44, 0x8d, 0x9a, 0x39, 0x45, 0x89, - 0x9a, 0x39, 0x46, 0x8d, 0x9a, 0x39, 0x47, 0x89, 0x9a, 0x39, 0x48, 0x8d, - 0x9a, 0x39, 0x49, 0x89, 0x9a, 0x39, 0x4a, 0x8d, 0x9a, 0x39, 0x4b, 0x89, - 0x9a, 0x39, 0x4c, 0x8d, 0x9a, 0x39, 0x4d, 0x89, 0x9a, 0x39, 0x4e, 0x8d, - 0x9a, 0x39, 0x4f, 0x89, 0x9a, 0x39, 0x50, 0x8d, 0x9a, 0x39, 0x51, 0x89, - 0x9a, 0x39, 0x52, 0x8d, 0x9a, 0x39, 0x53, 0x89, 0x9a, 0x39, 0x54, 0x8d, - 0x9a, 0x39, 0x55, 0x89, 0x9a, 0x39, 0x56, 0x8d, 0x9a, 0x39, 0x57, 0x89, - 0x9a, 0x39, 0x58, 0x8d, 0x9a, 0x39, 0x58, 0x89, 0x9a, 0x39, 0x59, 0x8d, - 0x9a, 0x39, 0x5a, 0x89, 0x9a, 0x39, 0x5b, 0x8d, 0x9a, 0x39, 0x5c, 0x89, - 0x9a, 0x39, 0x5d, 0x8d, 0x9a, 0x39, 0x5d, 0x89, 0x9a, 0x39, 0x5e, 0x8d, - 0x9a, 0x39, 0x5f, 0x89, 0x9a, 0x39, 0x60, 0x8d, 0x9a, 0x39, 0x60, 0x89, - 0x9a, 0x39, 0x61, 0x8d, 0x9a, 0x39, 0x62, 0x89, 0x9a, 0x39, 0x63, 0x86, - 0x9b, 0x39, 0x63, 0x89, 0x9a, 0x39, 0x64, 0x86, 0x9b, 0x39, 0x65, 0x89, - 0x9a, 0x39, 0x66, 0x86, 0x9b, 0x39, 0x66, 0x89, 0x9a, 0x39, 0x67, 0x86, - 0x9b, 0x39, 0x68, 0x89, 0x9a, 0x39, 0x68, 0x86, 0x9b, 0x39, 0x69, 0x89, - 0x9a, 0x39, 0x6a, 0x86, 0x9b, 0x39, 0x6a, 0x89, 0x9a, 0x39, 0x6b, 0x86, - 0x9b, 0x39, 0x6c, 0x89, 0x9a, 0x39, 0x6c, 0x86, 0x9b, 0x39, 0x6d, 0x89, - 0x9a, 0x39, 0x6e, 0x86, 0x9b, 0x39, 0x6e, 0x89, 0x9a, 0x39, 0x6f, 0x86, - 0x9b, 0x39, 0x70, 0x89, 0x9a, 0x39, 0x70, 0x86, 0x9b, 0x39, 0x71, 0x89, - 0x9a, 0x39, 0x72, 0x86, 0x9b, 0x39, 0x72, 0x89, 0x9a, 0x39, 0x73, 0x86, - 0x9b, 0x39, 0x73, 0x89, 0x9a, 0x39, 0x74, 0x86, 0x9b, 0x39, 0x75, 0x89, - 0x9a, 0x39, 0x75, 0x86, 0x9b, 0x39, 0x76, 0x89, 0x9a, 0x39, 0x76, 0x86, - 0x9b, 0x39, 0x77, 0x89, 0x9a, 0x39, 0x78, 0x86, 0x9b, 0x39, 0x78, 0x89, - 0x9a, 0x39, 0x79, 0x86, 0x9b, 0x39, 0x79, 0x89, 0x9a, 0x39, 0x7a, 0x86, - 0x9b, 0x39, 0x7a, 0x89, 0x9a, 0x39, 0x7b, 0x86, 0x9b, 0x39, 0x7c, 0x89, - 0x9a, 0x39, 0x7c, 0x86, 0x9b, 0x39, 0x7d, 0x89, 0x9a, 0x39, 0x7d, 0x86, - 0x9b, 0x39, 0x7e, 0x89, 0x9a, 0x39, 0x7e, 0x86, 0x9b, 0x39, 0x7f, 0x89, - 0x9a, 0x39, 0x7f, 0x86, 0x9b, 0x39, 0x80, 0x89, 0x9a, 0x39, 0x81, 0x86, - 0x9b, 0x39, 0x81, 0x89, 0x9a, 0x39, 0x82, 0x86, 0x9b, 0x39, 0x82, 0x89, - 0x9a, 0x39, 0x83, 0x86, 0x9b, 0x39, 0x83, 0x84, 0x9b, 0x39, 0x84, 0x86, - 0x9b, 0x39, 0x84, 0x84, 0x9b, 0x39, 0x85, 0x86, 0x9b, 0x39, 0x85, 0x84, - 0x9b, 0x39, 0x86, 0x86, 0x9b, 0x39, 0x86, 0x84, 0x9b, 0x39, 0x87, 0x86, - 0x9b, 0x39, 0x87, 0x84, 0x9b, 0x39, 0x88, 0x86, 0x9b, 0x39, 0x88, 0x84, - 0x9b, 0x39, 0x89, 0x86, 0x9b, 0x39, 0x89, 0x84, 0x9b, 0x39, 0x8a, 0x86, - 0x9b, 0x39, 0x8a, 0x84, 0x9b, 0x39, 0x8b, 0x86, 0x9b, 0x39, 0x8b, 0x84, - 0x9b, 0x39, 0x8c, 0x86, 0x9b, 0x39, 0x8c, 0x84, 0x9b, 0x39, 0x8d, 0x86, - 0x9b, 0x39, 0x8d, 0x84, 0x9b, 0x39, 0x8e, 0x86, 0x9b, 0x39, 0x8e, 0x84, - 0x9b, 0x39, 0x8e, 0x86, 0x9b, 0x39, 0x8f, 0x84, 0x9b, 0x39, 0x8f, 0x86, - 0x9b, 0x39, 0x90, 0x84, 0x9b, 0x39, 0x90, 0x86, 0x9b, 0x39, 0x91, 0x84, - 0x9b, 0x39, 0x91, 0x86, 0x9b, 0x39, 0x92, 0x84, 0x9b, 0x39, 0x92, 0x86, - 0x9b, 0x39, 0x93, 0x84, 0x9b, 0x39, 0x93, 0x86, 0x9b, 0x39, 0x94, 0x84, - 0x9b, 0x39, 0x94, 0x86, 0x9b, 0x39, 0x94, 0x84, 0x9b, 0x39, 0x95, 0x86, - 0x9b, 0x39, 0x95, 0x84, 0x9b, 0x39, 0x96, 0x86, 0x9b, 0x39, 0x96, 0x84, - 0x9b, 0x39, 0x97, 0x84, 0x9c, 0x39, 0x97, 0x84, 0x9b, 0x39, 0x98, 0x84, - 0x9c, 0x39, 0x98, 0x84, 0x9b, 0x39, 0x98, 0x84, 0x9c, 0x39, 0x99, 0x84, - 0x9b, 0x39, 0x99, 0x84, 0x9c, 0x39, 0x9a, 0x84, 0x9b, 0x39, 0x9a, 0x84, - 0x9c, 0x39, 0x9a, 0x84, 0x9b, 0x39, 0x9b, 0x84, 0x9c, 0x39, 0x9b, 0x84, - 0x9b, 0x39, 0x9c, 0x84, 0x9c, 0x39, 0x9c, 0x84, 0x9c, 0x39, 0x9d, 0x84, - 0x9d, 0x39, 0x9d, 0x84, 0x9d, 0x39, 0x9d, 0x84, 0x9d, 0x39, 0x9e, 0x84, - 0x9e, 0x39, 0x9e, 0x84, 0x9e, 0x39, 0x9f, 0x84, 0x9f, 0x39, 0x9f, 0x84, - 0x9e, 0x39, 0x9f, 0x84, 0x9f, 0x39, 0xa0, 0x84, 0x9e, 0x39, 0xa0, 0x84, - 0x9f, 0x39, 0xa1, 0x85, 0xa1, 0x39, 0xa1, 0x85, 0xa1, 0x39, 0xa1, 0x85, - 0xa1, 0x39, 0xa2, 0x85, 0xa2, 0x39, 0xa2, 0x85, 0xa2, 0x39, 0xa3, 0x85, - 0xa2, 0x39, 0xa3, 0x85, 0xa2, 0x39, 0xa3, 0x85, 0xa2, 0x39, 0xa4, 0x85, - 0xa2, 0x39, 0xa4, 0x86, 0xa4, 0x39, 0xa5, 0x86, 0xa5, 0x39, 0xa5, 0x86, - 0xa5, 0x39, 0xa5, 0x86, 0xa5, 0x39, 0xa6, 0x86, 0xa6, 0x39, 0xa6, 0x86, - 0xa6, 0x39, 0xa6, 0x86, 0xa6, 0x39, 0xa7, 0x86, 0xa6, 0x39, 0xa7, 0x86, - 0xa6, 0x39, 0xa8, 0x86, 0xa6, 0x39, 0xa8, 0x87, 0xa8, 0x39, 0xa8, 0x87, - 0xa8, 0x39, 0xa9, 0x87, 0xa9, 0x39, 0xa9, 0x87, 0xa9, 0x39, 0xaa, 0x87, - 0xaa, 0x39, 0xaa, 0x87, 0xa9, 0x39, 0xaa, 0x87, 0xaa, 0x39, 0xab, 0x87, - 0xa9, 0x39, 0xab, 0x87, 0xaa, 0x39, 0xab, 0x87, 0xa9, 0x39, 0xac, 0x87, - 0xaa, 0x39, 0xac, 0x88, 0xac, 0x39, 0xac, 0x88, 0xac, 0x39, 0xad, 0x88, - 0xad, 0x39, 0xad, 0x88, 0xad, 0x39, 0xae, 0x88, 0xad, 0x39, 0xae, 0x88, - 0xad, 0x39, 0xae, 0x88, 0xad, 0x39, 0xaf, 0x88, 0xad, 0x39, 0xaf, 0x88, - 0xad, 0x39, 0xaf, 0x88, 0xad, 0x39, 0xb0, 0x89, 0xb0, 0x39, 0xb0, 0x89, - 0xb0, 0x39, 0xb0, 0x89, 0xb0, 0x39, 0xb1, 0x89, 0xb0, 0x39, 0xb1, 0x89, - 0xb0, 0x39, 0xb2, 0x89, 0xb0, 0x39, 0xb2, 0x89, 0xb0, 0x39, 0xb2, 0x89, - 0xb2, 0x39, 0xb3, 0x89, 0xb2, 0x39, 0xb3, 0x89, 0xb2, 0x39, 0xb3, 0x89, - 0xb2, 0x39, 0xb4, 0x89, 0xb2, 0x39, 0xb4, 0x8a, 0xb3, 0x39, 0xb4, 0x8a, - 0xb4, 0x39, 0xb5, 0x8a, 0xb3, 0x39, 0xb5, 0x8a, 0xb4, 0x39, 0xb5, 0x8a, - 0xb3, 0x39, 0xb6, 0x8a, 0xb4, 0x39, 0xb6, 0x8a, 0xb3, 0x39, 0xb6, 0x8a, - 0xb4, 0x39, 0xb7, 0x8b, 0xb7, 0x39, 0xb7, 0x8b, 0xb7, 0x39, 0xb7, 0x8b, - 0xb7, 0x39, 0xb8, 0x8b, 0xb7, 0x39, 0xb8, 0x8b, 0xb7, 0x39, 0xb8, 0x8b, - 0xb7, 0x39, 0xb9, 0x8b, 0xb7, 0x39, 0xb9, 0x8b, 0xb7, 0x39, 0xb9, 0x8b, - 0xb7, 0x39, 0xba, 0x8b, 0xb7, 0x39, 0xba, 0x8c, 0xba, 0x39, 0xba, 0x8c, - 0xba, 0x39, 0xbb, 0x8c, 0xba, 0x39, 0xbb, 0x8c, 0xba, 0x39, 0xbb, 0x8c, - 0xba, 0x39, 0xbc, 0x8c, 0xba, 0x39, 0xbc, 0x8c, 0xba, 0x39, 0xbc, 0x8c, - 0xba, 0x39, 0xbd, 0x8c, 0xba, 0x39, 0xbd, 0x8d, 0xbd, 0x39, 0xbd, 0x8d, - 0xbd, 0x39, 0xbe, 0x8d, 0xbd, 0x39, 0xbe, 0x8d, 0xbd, 0x39, 0xbe, 0x8d, - 0xbd, 0x39, 0xbf, 0x8d, 0xbd, 0x39, 0xbf, 0x8d, 0xbd, 0x39, 0xbf, 0x8d, - 0xbd, 0x39, 0xc0, 0x8d, 0xbd, 0x39, 0xc0, 0x8e, 0xc0, 0x39, 0xc0, 0x8e, - 0xc0, 0x39, 0xc1, 0x8e, 0xc0, 0x39, 0xc1, 0x8e, 0xc0, 0x39, 0xc1, 0x8e, - 0xc0, 0x39, 0xc1, 0x8e, 0xc0, 0x39, 0xc2, 0x8e, 0xc0, 0x39, 0xc2, 0x8e, - 0xc0, 0x39, 0xc2, 0x8e, 0xc0, 0x39, 0xc3, 0x8e, 0xc0, 0x39, 0xc3, 0x8e, - 0xc3, 0x39, 0xc3, 0x8e, 0xc0, 0x39, 0xc4, 0x8e, 0xc3, 0x39, 0xc4, 0x8e, - 0xc3, 0x39, 0xc4, 0x8e, 0xc3, 0x39, 0xc5, 0x8e, 0xc3, 0x39, 0xc5, 0x8e, - 0xc3, 0x39, 0xc5, 0x8e, 0xc3, 0x39, 0xc6, 0x8e, 0xc3, 0x39, 0xc6, 0x8e, - 0xc3, 0x39, 0xc6, 0x8e, 0xc3, 0x39, 0xc6, 0x8f, 0xc6, 0x39, 0xc7, 0x8f, - 0xc6, 0x39, 0xc7, 0x8f, 0xc6, 0x39, 0xc7, 0x8f, 0xc6, 0x39, 0xc8, 0x8f, - 0xc6, 0x39, 0xc8, 0x8f, 0xc6, 0x39, 0xc8, 0x8f, 0xc6, 0x39, 0xc9, 0x8f, - 0xc6, 0x39, 0xc9, 0x8f, 0xc6, 0x39, 0xc9, 0x90, 0xc9, 0x39, 0xc9, 0x90, - 0xc9, 0x39, 0xca, 0x90, 0xc9, 0x39, 0xca, 0x90, 0xc9, 0x39, 0xca, 0x90, - 0xc9, 0x39, 0xcb, 0x90, 0xc9, 0x39, 0xcb, 0x90, 0xc9, 0x39, 0xcb, 0x90, - 0xc9, 0x39, 0xcc, 0x90, 0xc9, 0x39, 0xcc, 0x90, 0xc9, 0x39, 0xcc, 0x91, - 0xcc, 0x39, 0xcc, 0x91, 0xcb, 0x39, 0xcd, 0x91, 0xcc, 0x39, 0xcd, 0x91, - 0xcb, 0x39, 0xcd, 0x91, 0xcc, 0x39, 0xce, 0x91, 0xcb, 0x39, 0xce, 0x91, - 0xcc, 0x39, 0xce, 0x91, 0xcb, 0x39, 0xce, 0x91, 0xcc, 0x39, 0xcf, 0x92, - 0xce, 0x39, 0xcf, 0x92, 0xce, 0x39, 0xcf, 0x92, 0xce, 0x39, 0xd0, 0x92, - 0xce, 0x39, 0xd0, 0x92, 0xce, 0x39, 0xd0, 0x92, 0xce, 0x39, 0xd0, 0x92, - 0xce, 0x39, 0xd1, 0x92, 0xce, 0x39, 0xd1, 0x92, 0xce, 0x39, 0xd1, 0x92, - 0xce, 0x39, 0xd2, 0x92, 0xce, 0x39, 0xd2, 0x92, 0xce, 0x39, 0xd2, 0x93, - 0xd1, 0x39, 0xd2, 0x93, 0xd1, 0x39, 0xd3, 0x93, 0xd1, 0x39, 0xd3, 0x93, - 0xd1, 0x39, 0xd3, 0x93, 0xd1, 0x39, 0xd4, 0x93, 0xd1, 0x39, 0xd4, 0x93, - 0xd1, 0x39, 0xd4, 0x93, 0xd1, 0x39, 0xd4, 0x93, 0xd1, 0x39, 0xd5, 0x94, - 0xd4, 0x39, 0xd5, 0x94, 0xd3, 0x39, 0xd5, 0x94, 0xd4, 0x39, 0xd6, 0x94, - 0xd3, 0x39, 0xd6, 0x94, 0xd4, 0x39, 0xd6, 0x94, 0xd3, 0x39, 0xd6, 0x94, - 0xd4, 0x39, 0xd7, 0x94, 0xd3, 0x39, 0xd7, 0x94, 0xd4, 0x39, 0xd7, 0x95, - 0xd6, 0x39, 0xd7, 0x95, 0xd6, 0x39, 0xd8, 0x95, 0xd6, 0x39, 0xd8, 0x95, - 0xd6, 0x39, 0xd8, 0x95, 0xd6, 0x39, 0xd9, 0x95, 0xd6, 0x39, 0xd9, 0x95, - 0xd6, 0x39, 0xd9, 0x95, 0xd6, 0x39, 0xd9, 0x95, 0xd6, 0x39, 0xda, 0x95, - 0xd6, 0x39, 0xda, 0x96, 0xd9, 0x39, 0xda, 0x95, 0xd6, 0x39, 0xda, 0x96, - 0xd9, 0x39, 0xdb, 0x96, 0xd9, 0x39, 0xdb, 0x96, 0xd9, 0x39, 0xdb, 0x96, - 0xd9, 0x39, 0xdb, 0x96, 0xd9, 0x39, 0xdc, 0x96, 0xd9, 0x39, 0xdc, 0x96, - 0xd9, 0x39, 0xdc, 0x97, 0xdb, 0x39, 0xdd, 0x96, 0xd9, 0x39, 0xdd, 0x97, - 0xdb, 0x39, 0xdd, 0x97, 0xdb, 0x39, 0xdd, 0x97, 0xdb, 0x39, 0xde, 0x97, - 0xdb, 0x39, 0xde, 0x97, 0xdb, 0x39, 0xde, 0x97, 0xdb, 0x39, 0xde, 0x97, - 0xdb, 0x39, 0xdf, 0x98, 0xde, 0x39, 0xdf, 0x98, 0xde, 0x39, 0xdf, 0x98, - 0xde, 0x39, 0xdf, 0x98, 0xde, 0x39, 0xe0, 0x98, 0xde, 0x39, 0xe0, 0x98, - 0xde, 0x39, 0xe0, 0x98, 0xde, 0x39, 0xe1, 0x98, 0xde, 0x39, 0xe1, 0x98, - 0xde, 0x39, 0xe1, 0x98, 0xde, 0x39, 0xe1, 0x98, 0xde, 0x39, 0xe2, 0x98, - 0xde, 0x39, 0xe2, 0x98, 0xe0, 0x39, 0xe2, 0x98, 0xe0, 0x39, 0xe2, 0x98, - 0xe0, 0x39, 0xe3, 0x98, 0xe0, 0x39, 0xe3, 0x98, 0xe0, 0x39, 0xe3, 0x98, - 0xe0, 0x39, 0xe3, 0x98, 0xe0, 0x39, 0xe4, 0x98, 0xe0, 0x39, 0xe4, 0x98, - 0xe0, 0x39, 0xe4, 0x99, 0xe3, 0x39, 0xe4, 0x98, 0xe0, 0x39, 0xe5, 0x99, - 0xe3, 0x39, 0xe5, 0x99, 0xe2, 0x39, 0xe5, 0x99, 0xe3, 0x39, 0xe5, 0x99, - 0xe2, 0x39, 0xe6, 0x99, 0xe3, 0x39, 0xe6, 0x99, 0xe2, 0x39, 0xe6, 0x99, - 0xe3, 0x39, 0xe6, 0x9a, 0xe5, 0x39, 0xe7, 0x9a, 0xe5, 0x39, 0xe7, 0x9a, - 0xe5, 0x39, 0xe7, 0x9a, 0xe5, 0x39, 0xe7, 0x9a, 0xe5, 0x39, 0xe8, 0x9a, - 0xe5, 0x39, 0xe8, 0x9a, 0xe5, 0x39, 0xe8, 0x9a, 0xe5, 0x39, 0xe8, 0x9a, - 0xe5, 0x39, 0xe9, 0x9a, 0xe5, 0x39, 0xe9, 0x9b, 0xe7, 0x39, 0xe9, 0x9a, - 0xe5, 0x39, 0xe9, 0x9b, 0xe7, 0x39, 0xea, 0x9b, 0xe7, 0x39, 0xea, 0x9b, - 0xe7, 0x39, 0xea, 0x9b, 0xe7, 0x39, 0xea, 0x9b, 0xe7, 0x39, 0xeb, 0x9b, - 0xe7, 0x39, 0xeb, 0x9b, 0xe7, 0x39, 0xeb, 0x9b, 0xe7, 0x39, 0xeb, 0x9b, - 0xe7, 0x39, 0xec, 0x9c, 0xea, 0x39, 0xec, 0x9c, 0xea, 0x39, 0xec, 0x9c, - 0xea, 0x39, 0xec, 0x9c, 0xea, 0x39, 0xec, 0x9c, 0xea, 0x39, 0xed, 0x9c, - 0xea, 0x39, 0xed, 0x9c, 0xea, 0x39, 0xed, 0x9c, 0xea, 0x39, 0xed, 0x9c, - 0xea, 0x39, 0xee, 0x9c, 0xea, 0x39, 0xee, 0x9d, 0xec, 0x39, 0xee, 0x9c, - 0xea, 0x39, 0xee, 0x9d, 0xec, 0x39, 0xef, 0x9d, 0xec, 0x39, 0xef, 0x9d, - 0xec, 0x39, 0xef, 0x9d, 0xec, 0x39, 0xef, 0x9d, 0xec, 0x39, 0xf0, 0x9d, - 0xec, 0x39, 0xf0, 0x9d, 0xec, 0x39, 0xf0, 0x9d, 0xee, 0x39, 0xf0, 0x9d, - 0xec, 0x39, 0xf1, 0x9d, 0xee, 0x39, 0xf1, 0x9d, 0xee, 0x39, 0xf1, 0x9d, - 0xee, 0x39, 0xf1, 0x9d, 0xee, 0x39, 0xf2, 0x9d, 0xee, 0x39, 0xf2, 0x9d, - 0xee, 0x39, 0xf2, 0x9d, 0xee, 0x39, 0xf2, 0x9e, 0xf0, 0x39, 0xf2, 0x9e, - 0xf1, 0x39, 0xf3, 0x9e, 0xf0, 0x39, 0xf3, 0x9e, 0xf1, 0x39, 0xf3, 0x9e, - 0xf0, 0x39, 0xf3, 0x9e, 0xf1, 0x39, 0xf4, 0x9e, 0xf0, 0x39, 0xf4, 0x9e, - 0xf1, 0x39, 0xf4, 0x9e, 0xf0, 0x39, 0xf4, 0x9e, 0xf1, 0x39, 0xf5, 0x9f, - 0xf3, 0x39, 0xf5, 0x9e, 0xf1, 0x39, 0xf5, 0x9f, 0xf3, 0x39, 0xf5, 0x9f, - 0xf2, 0x39, 0xf5, 0x9f, 0xf3, 0x39, 0xf6, 0x9f, 0xf2, 0x39, 0xf6, 0x9f, - 0xf3, 0x39, 0xf6, 0x9f, 0xf2, 0x39, 0xf6, 0x9f, 0xf3, 0x39, 0xf7, 0xa0, - 0xf5, 0x39, 0xf7, 0x9f, 0xf3, 0x39, 0xf7, 0xa0, 0xf5, 0x39, 0xf7, 0x9f, - 0xf3, 0x39, 0xf8, 0xa0, 0xf5, 0x39, 0xf8, 0xa0, 0xf5, 0x39, 0xf8, 0xa0, - 0xf5, 0x39, 0xf8, 0xa0, 0xf5, 0x39, 0xf8, 0xa0, 0xf5, 0x39, 0xf9, 0xa0, - 0xf5, 0x39, 0xf9, 0xa0, 0xf5, 0x39, 0xf9, 0xa1, 0xf7, 0x39, 0xf9, 0xa1, - 0xf7, 0x39, 0xfa, 0xa1, 0xf7, 0x39, 0xfa, 0xa1, 0xf7, 0x39, 0xfa, 0xa1, - 0xf7, 0x39, 0xfa, 0xa1, 0xf7, 0x39, 0xfa, 0xa1, 0xf7, 0x39, 0xfb, 0xa1, - 0xf7, 0x39, 0xfb, 0xa1, 0xf7, 0x39, 0xfb, 0xa1, 0xf7, 0x39, 0xfb, 0xa1, - 0xf9, 0x39, 0xfc, 0xa1, 0xf7, 0x39, 0xfc, 0xa1, 0xf9, 0x39, 0xfc, 0xa1, - 0xf9, 0x39, 0xfc, 0xa1, 0xf9, 0x39, 0xfc, 0xa1, 0xf9, 0x39, 0xfd, 0xa1, - 0xf9, 0x39, 0xfd, 0xa1, 0xf9, 0x39, 0xfd, 0xa1, 0xf9, 0x39, 0xfd, 0xa2, - 0xfb, 0x39, 0xfe, 0xa1, 0xf9, 0x39, 0xfe, 0xa2, 0xfb, 0x39, 0xfe, 0xa2, - 0xfb, 0x39, 0xfe, 0xa2, 0xfb, 0x39, 0xfe, 0xa2, 0xfb, 0x39, 0xff, 0xa2, - 0xfb, 0x39, 0xff, 0xa2, 0xfb, 0x39, 0x03, 0x90, 0x9a, 0x39, 0x0a, 0x8c, - 0x9a, 0x39, 0x0f, 0x90, 0x9a, 0x39, 0x14, 0x8c, 0x9a, 0x39, 0x17, 0x90, - 0x9a, 0x39, 0x1b, 0x8c, 0x9a, 0x39, 0x1e, 0x90, 0x9a, 0x39, 0x20, 0x8c, - 0x9a, 0x39, 0x23, 0x90, 0x9a, 0x39, 0x25, 0x8c, 0x9a, 0x39, 0x27, 0x90, - 0x9a, 0x39, 0x29, 0x8c, 0x9a, 0x39, 0x2b, 0x90, 0x9a, 0x39, 0x2d, 0x8c, - 0x9a, 0x39, 0x2f, 0x90, 0x9a, 0x39, 0x31, 0x8c, 0x9a, 0x39, 0x32, 0x90, - 0x9a, 0x39, 0x34, 0x8c, 0x9a, 0x39, 0x35, 0x89, 0x9a, 0x39, 0x37, 0x8c, - 0x9a, 0x39, 0x38, 0x89, 0x9a, 0x39, 0x3a, 0x8c, 0x9a, 0x39, 0x3b, 0x89, - 0x9a, 0x39, 0x3c, 0x8c, 0x9a, 0x39, 0x3e, 0x89, 0x9a, 0x39, 0x3f, 0x8c, - 0x9a, 0x39, 0x40, 0x89, 0x9a, 0x39, 0x42, 0x8c, 0x9a, 0x39, 0x43, 0x89, - 0x9a, 0x39, 0x44, 0x8c, 0x9a, 0x39, 0x45, 0x89, 0x9a, 0x39, 0x46, 0x8c, - 0x9a, 0x39, 0x47, 0x89, 0x9a, 0x39, 0x48, 0x8c, 0x9a, 0x39, 0x49, 0x89, - 0x9a, 0x39, 0x4a, 0x8c, 0x9a, 0x39, 0x4b, 0x89, 0x9a, 0x39, 0x4c, 0x8c, - 0x9a, 0x39, 0x4d, 0x89, 0x9a, 0x39, 0x4e, 0x8c, 0x9a, 0x39, 0x4f, 0x89, - 0x9a, 0x39, 0x50, 0x8c, 0x9a, 0x39, 0x51, 0x89, 0x9a, 0x39, 0x52, 0x8c, - 0x9a, 0x39, 0x53, 0x89, 0x9a, 0x39, 0x54, 0x8c, 0x9a, 0x39, 0x55, 0x89, - 0x9a, 0x39, 0x56, 0x8c, 0x9a, 0x39, 0x57, 0x89, 0x9a, 0x39, 0x58, 0x8c, - 0x9a, 0x39, 0x58, 0x89, 0x9a, 0x39, 0x59, 0x8c, 0x9a, 0x39, 0x5a, 0x89, - 0x9a, 0x39, 0x5b, 0x8c, 0x9a, 0x39, 0x5c, 0x89, 0x9a, 0x39, 0x5d, 0x8c, - 0x9a, 0x39, 0x5d, 0x89, 0x9a, 0x39, 0x5e, 0x8c, 0x9a, 0x39, 0x5f, 0x89, - 0x9a, 0x39, 0x60, 0x8c, 0x9a, 0x39, 0x60, 0x89, 0x9a, 0x39, 0x61, 0x8c, - 0x9a, 0x39, 0x62, 0x89, 0x9a, 0x39, 0x63, 0x8c, 0x9a, 0x39, 0x63, 0x89, - 0x9a, 0x39, 0x64, 0x8c, 0x9a, 0x39, 0x65, 0x89, 0x9a, 0x39, 0x66, 0x8c, - 0x9a, 0x39, 0x66, 0x89, 0x9a, 0x39, 0x67, 0x8c, 0x9a, 0x39, 0x68, 0x89, - 0x9a, 0x39, 0x68, 0x8c, 0x9a, 0x39, 0x69, 0x89, 0x9a, 0x39, 0x6a, 0x8c, - 0x9a, 0x39, 0x6a, 0x89, 0x9a, 0x39, 0x6b, 0x8c, 0x9a, 0x39, 0x6c, 0x89, - 0x9a, 0x39, 0x6c, 0x8c, 0x9a, 0x39, 0x6d, 0x89, 0x9a, 0x39, 0x6e, 0x8c, - 0x9a, 0x39, 0x6e, 0x89, 0x9a, 0x39, 0x6f, 0x8c, 0x9a, 0x39, 0x70, 0x89, - 0x9a, 0x39, 0x70, 0x86, 0x9b, 0x39, 0x71, 0x89, 0x9a, 0x39, 0x72, 0x86, - 0x9b, 0x39, 0x72, 0x89, 0x9a, 0x39, 0x73, 0x86, 0x9b, 0x39, 0x73, 0x89, - 0x9a, 0x39, 0x74, 0x86, 0x9b, 0x39, 0x75, 0x89, 0x9a, 0x39, 0x75, 0x86, - 0x9b, 0x39, 0x76, 0x89, 0x9a, 0x39, 0x76, 0x86, 0x9b, 0x39, 0x77, 0x89, - 0x9a, 0x39, 0x78, 0x86, 0x9b, 0x39, 0x78, 0x89, 0x9a, 0x39, 0x79, 0x86, - 0x9b, 0x39, 0x79, 0x89, 0x9a, 0x39, 0x7a, 0x86, 0x9b, 0x39, 0x7a, 0x89, - 0x9a, 0x39, 0x7b, 0x86, 0x9b, 0x39, 0x7c, 0x89, 0x9a, 0x39, 0x7c, 0x86, - 0x9b, 0x39, 0x7d, 0x89, 0x9a, 0x39, 0x7d, 0x86, 0x9b, 0x39, 0x7e, 0x89, - 0x9a, 0x39, 0x7e, 0x86, 0x9b, 0x39, 0x7f, 0x89, 0x9a, 0x39, 0x7f, 0x86, - 0x9b, 0x39, 0x80, 0x89, 0x9a, 0x39, 0x81, 0x86, 0x9b, 0x39, 0x81, 0x89, - 0x9a, 0x39, 0x82, 0x86, 0x9b, 0x39, 0x82, 0x89, 0x9a, 0x39, 0x83, 0x86, - 0x9b, 0x39, 0x83, 0x89, 0x9a, 0x39, 0x84, 0x86, 0x9b, 0x39, 0x84, 0x89, - 0x9a, 0x39, 0x85, 0x86, 0x9b, 0x39, 0x85, 0x83, 0x9b, 0x39, 0x86, 0x86, - 0x9b, 0x39, 0x86, 0x83, 0x9b, 0x39, 0x87, 0x86, 0x9b, 0x39, 0x87, 0x83, - 0x9b, 0x39, 0x88, 0x86, 0x9b, 0x39, 0x88, 0x83, 0x9b, 0x39, 0x89, 0x86, - 0x9b, 0x39, 0x89, 0x83, 0x9b, 0x39, 0x8a, 0x86, 0x9b, 0x39, 0x8a, 0x83, - 0x9b, 0x39, 0x8b, 0x86, 0x9b, 0x39, 0x8b, 0x83, 0x9b, 0x39, 0x8c, 0x86, - 0x9b, 0x39, 0x8c, 0x83, 0x9b, 0x39, 0x8d, 0x86, 0x9b, 0x39, 0x8d, 0x83, - 0x9b, 0x39, 0x8e, 0x86, 0x9b, 0x39, 0x8e, 0x83, 0x9b, 0x39, 0x8e, 0x86, - 0x9b, 0x39, 0x8f, 0x83, 0x9b, 0x39, 0x8f, 0x86, 0x9b, 0x39, 0x90, 0x83, - 0x9b, 0x39, 0x90, 0x86, 0x9b, 0x39, 0x91, 0x83, 0x9b, 0x39, 0x91, 0x86, - 0x9b, 0x39, 0x92, 0x83, 0x9b, 0x39, 0x92, 0x86, 0x9b, 0x39, 0x93, 0x83, - 0x9b, 0x39, 0x93, 0x86, 0x9b, 0x39, 0x94, 0x83, 0x9b, 0x39, 0x94, 0x86, - 0x9b, 0x39, 0x94, 0x83, 0x9b, 0x39, 0x95, 0x83, 0x9c, 0x39, 0x95, 0x83, - 0x9b, 0x39, 0x96, 0x83, 0x9c, 0x39, 0x96, 0x83, 0x9b, 0x39, 0x97, 0x83, - 0x9c, 0x39, 0x97, 0x83, 0x9b, 0x39, 0x98, 0x83, 0x9c, 0x39, 0x98, 0x83, - 0x9b, 0x39, 0x98, 0x83, 0x9c, 0x39, 0x99, 0x83, 0x9b, 0x39, 0x99, 0x83, - 0x9c, 0x39, 0x9a, 0x83, 0x9b, 0x39, 0x9a, 0x83, 0x9c, 0x39, 0x9a, 0x83, - 0x9b, 0x39, 0x9b, 0x83, 0x9c, 0x39, 0x9b, 0x83, 0x9b, 0x39, 0x9c, 0x83, - 0x9c, 0x39, 0x9c, 0x83, 0x9c, 0x39, 0x9d, 0x83, 0x9d, 0x39, 0x9d, 0x83, - 0x9c, 0x39, 0x9d, 0x83, 0x9d, 0x39, 0x9e, 0x84, 0x9e, 0x39, 0x9e, 0x84, - 0x9e, 0x39, 0x9f, 0x84, 0x9f, 0x39, 0x9f, 0x84, 0x9f, 0x39, 0x9f, 0x84, - 0x9f, 0x39, 0xa0, 0x84, 0xa0, 0x39, 0xa0, 0x84, 0xa0, 0x39, 0xa1, 0x84, - 0xa1, 0x39, 0xa1, 0x84, 0xa0, 0x39, 0xa1, 0x84, 0xa1, 0x39, 0xa2, 0x84, - 0xa0, 0x39, 0xa2, 0x84, 0xa1, 0x39, 0xa3, 0x85, 0xa3, 0x39, 0xa3, 0x85, - 0xa3, 0x39, 0xa3, 0x85, 0xa3, 0x39, 0xa4, 0x85, 0xa4, 0x39, 0xa4, 0x85, - 0xa4, 0x39, 0xa5, 0x85, 0xa4, 0x39, 0xa5, 0x85, 0xa4, 0x39, 0xa5, 0x85, - 0xa4, 0x39, 0xa6, 0x85, 0xa4, 0x39, 0xa6, 0x86, 0xa6, 0x39, 0xa6, 0x86, - 0xa6, 0x39, 0xa7, 0x86, 0xa7, 0x39, 0xa7, 0x86, 0xa7, 0x39, 0xa8, 0x86, - 0xa8, 0x39, 0xa8, 0x86, 0xa7, 0x39, 0xa8, 0x86, 0xa8, 0x39, 0xa9, 0x86, - 0xa7, 0x39, 0xa9, 0x86, 0xa8, 0x39, 0xaa, 0x87, 0xaa, 0x39, 0xaa, 0x87, - 0xaa, 0x39, 0xaa, 0x87, 0xaa, 0x39, 0xab, 0x87, 0xab, 0x39, 0xab, 0x87, - 0xab, 0x39, 0xab, 0x87, 0xab, 0x39, 0xac, 0x87, 0xab, 0x39, 0xac, 0x87, - 0xab, 0x39, 0xac, 0x87, 0xab, 0x39, 0xad, 0x87, 0xab, 0x39, 0xad, 0x87, - 0xab, 0x39, 0xae, 0x87, 0xab, 0x39, 0xae, 0x88, 0xae, 0x39, 0xae, 0x88, - 0xae, 0x39, 0xaf, 0x88, 0xaf, 0x39, 0xaf, 0x88, 0xae, 0x39, 0xaf, 0x88, - 0xaf, 0x39, 0xb0, 0x88, 0xae, 0x39, 0xb0, 0x88, 0xaf, 0x39, 0xb0, 0x88, - 0xae, 0x39, 0xb1, 0x88, 0xaf, 0x39, 0xb1, 0x89, 0xb1, 0x39, 0xb2, 0x89, - 0xb2, 0x39, 0xb2, 0x89, 0xb2, 0x39, 0xb2, 0x89, 0xb2, 0x39, 0xb3, 0x89, - 0xb2, 0x39, 0xb3, 0x89, 0xb2, 0x39, 0xb3, 0x89, 0xb2, 0x39, 0xb4, 0x89, - 0xb2, 0x39, 0xb4, 0x89, 0xb2, 0x39, 0xb4, 0x89, 0xb2, 0x39, 0xb5, 0x8a, - 0xb5, 0x39, 0xb5, 0x8a, 0xb5, 0x39, 0xb5, 0x8a, 0xb5, 0x39, 0xb6, 0x8a, - 0xb5, 0x39, 0xb6, 0x8a, 0xb5, 0x39, 0xb6, 0x8a, 0xb5, 0x39, 0xb7, 0x8a, - 0xb5, 0x39, 0xb7, 0x8a, 0xb5, 0x39, 0xb7, 0x8a, 0xb5, 0x39, 0xb8, 0x8a, - 0xb5, 0x39, 0xb8, 0x8a, 0xb5, 0x39, 0xb8, 0x8b, 0xb8, 0x39, 0xb9, 0x8b, - 0xb8, 0x39, 0xb9, 0x8b, 0xb8, 0x39, 0xb9, 0x8b, 0xb8, 0x39, 0xba, 0x8b, - 0xb8, 0x39, 0xba, 0x8b, 0xb8, 0x39, 0xba, 0x8b, 0xb8, 0x39, 0xbb, 0x8b, - 0xb8, 0x39, 0xbb, 0x8b, 0xb8, 0x39, 0xbb, 0x8c, 0xbb, 0x39, 0xbc, 0x8c, - 0xbc, 0x39, 0xbc, 0x8c, 0xbb, 0x39, 0xbc, 0x8c, 0xbc, 0x39, 0xbd, 0x8c, - 0xbb, 0x39, 0xbd, 0x8c, 0xbc, 0x39, 0xbd, 0x8c, 0xbb, 0x39, 0xbe, 0x8c, - 0xbc, 0x39, 0xbe, 0x8c, 0xbb, 0x39, 0xbe, 0x8c, 0xbc, 0x39, 0xbf, 0x8d, - 0xbf, 0x39, 0xbf, 0x8d, 0xbe, 0x39, 0xbf, 0x8d, 0xbf, 0x39, 0xc0, 0x8d, - 0xbe, 0x39, 0xc0, 0x8d, 0xbf, 0x39, 0xc0, 0x8d, 0xbe, 0x39, 0xc1, 0x8d, - 0xbf, 0x39, 0xc1, 0x8d, 0xbe, 0x39, 0xc1, 0x8d, 0xbf, 0x39, 0xc1, 0x8e, - 0xc1, 0x39, 0xc2, 0x8e, 0xc1, 0x39, 0xc2, 0x8e, 0xc1, 0x39, 0xc2, 0x8e, - 0xc1, 0x39, 0xc3, 0x8e, 0xc1, 0x39, 0xc3, 0x8e, 0xc1, 0x39, 0xc3, 0x8e, - 0xc1, 0x39, 0xc4, 0x8e, 0xc1, 0x39, 0xc4, 0x8e, 0xc1, 0x39, 0xc4, 0x8f, - 0xc4, 0x39, 0xc5, 0x8f, 0xc5, 0x39, 0xc5, 0x8f, 0xc4, 0x39, 0xc5, 0x8f, - 0xc5, 0x39, 0xc6, 0x8f, 0xc4, 0x39, 0xc6, 0x8f, 0xc5, 0x39, 0xc6, 0x8f, - 0xc4, 0x39, 0xc6, 0x8f, 0xc5, 0x39, 0xc7, 0x8f, 0xc4, 0x39, 0xc7, 0x8f, - 0xc5, 0x39, 0xc7, 0x8f, 0xc4, 0x39, 0xc8, 0x8f, 0xc5, 0x39, 0xc8, 0x90, - 0xc7, 0x39, 0xc8, 0x90, 0xc7, 0x39, 0xc9, 0x90, 0xc7, 0x39, 0xc9, 0x90, - 0xc7, 0x39, 0xc9, 0x90, 0xc7, 0x39, 0xc9, 0x90, 0xc7, 0x39, 0xca, 0x90, - 0xc7, 0x39, 0xca, 0x90, 0xc7, 0x39, 0xca, 0x90, 0xc7, 0x39, 0xcb, 0x91, - 0xca, 0x39, 0xcb, 0x91, 0xca, 0x39, 0xcb, 0x91, 0xca, 0x39, 0xcc, 0x91, - 0xca, 0x39, 0xcc, 0x91, 0xca, 0x39, 0xcc, 0x91, 0xca, 0x39, 0xcc, 0x91, - 0xca, 0x39, 0xcd, 0x91, 0xca, 0x39, 0xcd, 0x91, 0xca, 0x39, 0xcd, 0x92, - 0xcd, 0x39, 0xce, 0x92, 0xcd, 0x39, 0xce, 0x92, 0xcd, 0x39, 0xce, 0x92, - 0xcd, 0x39, 0xce, 0x92, 0xcd, 0x39, 0xcf, 0x92, 0xcd, 0x39, 0xcf, 0x92, - 0xcd, 0x39, 0xcf, 0x92, 0xcd, 0x39, 0xd0, 0x92, 0xcd, 0x39, 0xd0, 0x92, - 0xcd, 0x39, 0xd0, 0x93, 0xd0, 0x39, 0xd0, 0x92, 0xcd, 0x39, 0xd1, 0x93, - 0xd0, 0x39, 0xd1, 0x93, 0xcf, 0x39, 0xd1, 0x93, 0xd0, 0x39, 0xd2, 0x93, - 0xcf, 0x39, 0xd2, 0x93, 0xd0, 0x39, 0xd2, 0x93, 0xcf, 0x39, 0xd2, 0x93, - 0xd0, 0x39, 0xd3, 0x93, 0xcf, 0x39, 0xd3, 0x93, 0xd0, 0x39, 0xd3, 0x94, - 0xd2, 0x39, 0xd4, 0x94, 0xd2, 0x39, 0xd4, 0x94, 0xd2, 0x39, 0xd4, 0x94, - 0xd2, 0x39, 0xd4, 0x94, 0xd2, 0x39, 0xd5, 0x94, 0xd2, 0x39, 0xd5, 0x94, - 0xd2, 0x39, 0xd5, 0x94, 0xd2, 0x39, 0xd6, 0x94, 0xd2, 0x39, 0xd6, 0x94, - 0xd2, 0x39, 0xd6, 0x94, 0xd5, 0x39, 0xd6, 0x94, 0xd5, 0x39, 0xd7, 0x94, - 0xd5, 0x39, 0xd7, 0x94, 0xd5, 0x39, 0xd7, 0x94, 0xd5, 0x39, 0xd7, 0x94, - 0xd5, 0x39, 0xd8, 0x94, 0xd5, 0x39, 0xd8, 0x94, 0xd5, 0x39, 0xd8, 0x94, - 0xd5, 0x39, 0xd9, 0x95, 0xd7, 0x39, 0xd9, 0x95, 0xd7, 0x39, 0xd9, 0x95, - 0xd7, 0x39, 0xd9, 0x95, 0xd7, 0x39, 0xda, 0x95, 0xd7, 0x39, 0xda, 0x95, - 0xd7, 0x39, 0xda, 0x95, 0xd7, 0x39, 0xda, 0x95, 0xd7, 0x39, 0xdb, 0x95, - 0xd7, 0x39, 0xdb, 0x96, 0xda, 0x39, 0xdb, 0x96, 0xda, 0x39, 0xdb, 0x96, - 0xda, 0x39, 0xdc, 0x96, 0xda, 0x39, 0xdc, 0x96, 0xda, 0x39, 0xdc, 0x96, - 0xda, 0x39, 0xdd, 0x96, 0xda, 0x39, 0xdd, 0x96, 0xda, 0x39, 0xdd, 0x96, - 0xda, 0x39, 0xdd, 0x96, 0xda, 0x39, 0xde, 0x97, 0xdd, 0x39, 0xde, 0x96, - 0xda, 0x39, 0xde, 0x97, 0xdd, 0x39, 0xde, 0x97, 0xdc, 0x39, 0xdf, 0x97, - 0xdd, 0x39, 0xdf, 0x97, 0xdc, 0x39, 0xdf, 0x97, 0xdd, 0x39, 0xdf, 0x97, - 0xdc, 0x39, 0xe0, 0x97, 0xdd, 0x39, 0xe0, 0x98, 0xdf, 0x39, 0xe0, 0x97, - 0xdd, 0x39, 0xe1, 0x98, 0xdf, 0x39, 0xe1, 0x98, 0xdf, 0x39, 0xe1, 0x98, - 0xdf, 0x39, 0xe1, 0x98, 0xdf, 0x39, 0xe2, 0x98, 0xdf, 0x39, 0xe2, 0x98, - 0xdf, 0x39, 0xe2, 0x98, 0xdf, 0x39, 0xe2, 0x98, 0xdf, 0x39, 0xe3, 0x98, - 0xdf, 0x39, 0xe3, 0x99, 0xe1, 0x39, 0xe3, 0x99, 0xe2, 0x39, 0xe3, 0x99, - 0xe1, 0x39, 0xe4, 0x99, 0xe2, 0x39, 0xe4, 0x99, 0xe1, 0x39, 0xe4, 0x99, - 0xe2, 0x39, 0xe4, 0x99, 0xe1, 0x39, 0xe5, 0x99, 0xe2, 0x39, 0xe5, 0x99, - 0xe1, 0x39, 0xe5, 0x99, 0xe2, 0x39, 0xe5, 0x9a, 0xe4, 0x39, 0xe6, 0x99, - 0xe2, 0x39, 0xe6, 0x9a, 0xe4, 0x39, 0xe6, 0x9a, 0xe4, 0x39, 0xe6, 0x9a, - 0xe4, 0x39, 0xe7, 0x9a, 0xe4, 0x39, 0xe7, 0x9a, 0xe4, 0x39, 0xe7, 0x9a, - 0xe4, 0x39, 0xe7, 0x9a, 0xe4, 0x39, 0xe8, 0x9a, 0xe6, 0x39, 0xe8, 0x9a, - 0xe4, 0x39, 0xe8, 0x9a, 0xe6, 0x39, 0xe8, 0x9a, 0xe6, 0x39, 0xe9, 0x9a, - 0xe6, 0x39, 0xe9, 0x9a, 0xe6, 0x39, 0xe9, 0x9a, 0xe6, 0x39, 0xe9, 0x9a, - 0xe6, 0x39, 0xea, 0x9a, 0xe6, 0x39, 0xea, 0x9b, 0xe8, 0x39, 0xea, 0x9b, - 0xe9, 0x39, 0xea, 0x9b, 0xe8, 0x39, 0xeb, 0x9b, 0xe9, 0x39, 0xeb, 0x9b, - 0xe8, 0x39, 0xeb, 0x9b, 0xe9, 0x39, 0xeb, 0x9b, 0xe8, 0x39, 0xec, 0x9b, - 0xe9, 0x39, 0xec, 0x9b, 0xe8, 0x39, 0xec, 0x9b, 0xe9, 0x39, 0xec, 0x9b, - 0xe8, 0x39, 0xec, 0x9b, 0xe9, 0x39, 0xed, 0x9c, 0xeb, 0x39, 0xed, 0x9c, - 0xeb, 0x39, 0xed, 0x9c, 0xeb, 0x39, 0xed, 0x9c, 0xeb, 0x39, 0xee, 0x9c, - 0xeb, 0x39, 0xee, 0x9c, 0xeb, 0x39, 0xee, 0x9c, 0xeb, 0x39, 0xee, 0x9c, - 0xeb, 0x39, 0xef, 0x9c, 0xeb, 0x39, 0xef, 0x9d, 0xed, 0x39, 0xef, 0x9d, - 0xed, 0x39, 0xef, 0x9d, 0xed, 0x39, 0xf0, 0x9d, 0xed, 0x39, 0xf0, 0x9d, - 0xed, 0x39, 0xf0, 0x9d, 0xed, 0x39, 0xf0, 0x9d, 0xed, 0x39, 0xf1, 0x9d, - 0xed, 0x39, 0xf1, 0x9d, 0xed, 0x39, 0xf1, 0x9d, 0xed, 0x39, 0xf1, 0x9e, - 0xef, 0x39, 0xf2, 0x9d, 0xed, 0x39, 0xf2, 0x9e, 0xef, 0x39, 0xf2, 0x9e, - 0xef, 0x39, 0xf2, 0x9e, 0xef, 0x39, 0xf2, 0x9e, 0xef, 0x39, 0xf3, 0x9e, - 0xef, 0x39, 0xf3, 0x9e, 0xef, 0x39, 0xf3, 0x9e, 0xef, 0x39, 0xf3, 0x9f, - 0xf2, 0x39, 0xf4, 0x9e, 0xef, 0x39, 0xf4, 0x9f, 0xf2, 0x39, 0xf4, 0x9f, - 0xf1, 0x39, 0xf4, 0x9f, 0xf2, 0x39, 0xf5, 0x9f, 0xf1, 0x39, 0xf5, 0x9f, - 0xf2, 0x39, 0xf5, 0x9f, 0xf1, 0x39, 0xf5, 0x9f, 0xf2, 0x39, 0xf5, 0x9f, - 0xf4, 0x39, 0xf6, 0x9f, 0xf4, 0x39, 0xf6, 0x9f, 0xf4, 0x39, 0xf6, 0x9f, - 0xf4, 0x39, 0xf6, 0x9f, 0xf4, 0x39, 0xf7, 0x9f, 0xf4, 0x39, 0xf7, 0x9f, - 0xf4, 0x39, 0xf7, 0x9f, 0xf4, 0x39, 0xf7, 0x9f, 0xf4, 0x39, 0xf8, 0x9f, - 0xf4, 0x39, 0xf8, 0xa0, 0xf6, 0x39, 0xf8, 0x9f, 0xf4, 0x39, 0xf8, 0xa0, - 0xf6, 0x39, 0xf8, 0x9f, 0xf4, 0x39, 0xf9, 0xa0, 0xf6, 0x39, 0xf9, 0xa0, - 0xf6, 0x39, 0xf9, 0xa0, 0xf6, 0x39, 0xf9, 0xa0, 0xf6, 0x39, 0xfa, 0xa0, - 0xf6, 0x39, 0xfa, 0xa0, 0xf6, 0x39, 0xfa, 0xa0, 0xf6, 0x39, 0xfa, 0xa1, - 0xf8, 0x39, 0xfa, 0xa0, 0xf6, 0x39, 0xfb, 0xa1, 0xf8, 0x39, 0xfb, 0xa1, - 0xf8, 0x39, 0xfb, 0xa1, 0xf8, 0x39, 0xfb, 0xa1, 0xf8, 0x39, 0xfc, 0xa1, - 0xf8, 0x39, 0xfc, 0xa1, 0xf8, 0x39, 0xfc, 0xa1, 0xf8, 0x39, 0xfc, 0xa2, - 0xfa, 0x39, 0xfc, 0xa2, 0xfa, 0x39, 0xfd, 0xa2, 0xfa, 0x39, 0xfd, 0xa2, - 0xfa, 0x39, 0xfd, 0xa2, 0xfa, 0x39, 0xfd, 0xa2, 0xfa, 0x39, 0xfe, 0xa2, - 0xfa, 0x39, 0xfe, 0xa2, 0xfa, 0x39, 0xfe, 0xa2, 0xfa, 0x39, 0xfe, 0xa2, - 0xfa, 0x39, 0xfe, 0xa2, 0xfa, 0x39, 0xff, 0xa2, 0xfa, 0x39, 0xff, 0xa2, - 0xfa, 0x39, 0x03, 0x8f, 0x9a, 0x3a, 0x0a, 0x8f, 0x9a, 0x3a, 0x0f, 0x8f, - 0x9a, 0x3a, 0x14, 0x92, 0x99, 0x3a, 0x17, 0x8f, 0x9a, 0x3a, 0x1b, 0x92, - 0x99, 0x3a, 0x1e, 0x8f, 0x9a, 0x3a, 0x20, 0x92, 0x99, 0x3a, 0x23, 0x8f, - 0x9a, 0x3a, 0x25, 0x8d, 0x9a, 0x3a, 0x27, 0x8f, 0x9a, 0x3a, 0x29, 0x8d, - 0x9a, 0x3a, 0x2b, 0x8f, 0x9a, 0x3a, 0x2d, 0x8d, 0x9a, 0x3a, 0x2f, 0x8f, - 0x9a, 0x3a, 0x31, 0x8d, 0x9a, 0x3a, 0x32, 0x8f, 0x9a, 0x3a, 0x34, 0x8d, - 0x9a, 0x3a, 0x35, 0x8f, 0x9a, 0x3a, 0x37, 0x8d, 0x9a, 0x3a, 0x38, 0x8f, - 0x9a, 0x3a, 0x3a, 0x8d, 0x9a, 0x3a, 0x3b, 0x8f, 0x9a, 0x3a, 0x3c, 0x8d, - 0x9a, 0x3a, 0x3e, 0x8f, 0x9a, 0x3a, 0x3f, 0x8d, 0x9a, 0x3a, 0x40, 0x8f, - 0x9a, 0x3a, 0x42, 0x8d, 0x9a, 0x3a, 0x43, 0x8f, 0x9a, 0x3a, 0x44, 0x8d, - 0x9a, 0x3a, 0x45, 0x8f, 0x9a, 0x3a, 0x46, 0x8d, 0x9a, 0x3a, 0x47, 0x8f, - 0x9a, 0x3a, 0x48, 0x8d, 0x9a, 0x3a, 0x49, 0x8f, 0x9a, 0x3a, 0x4a, 0x8d, - 0x9a, 0x3a, 0x4b, 0x8f, 0x9a, 0x3a, 0x4c, 0x8d, 0x9a, 0x3a, 0x4d, 0x8f, - 0x9a, 0x3a, 0x4e, 0x8d, 0x9a, 0x3a, 0x4f, 0x89, 0x9a, 0x3a, 0x50, 0x8d, - 0x9a, 0x3a, 0x51, 0x89, 0x9a, 0x3a, 0x52, 0x8d, 0x9a, 0x3a, 0x53, 0x89, - 0x9a, 0x3a, 0x54, 0x8d, 0x9a, 0x3a, 0x55, 0x89, 0x9a, 0x3a, 0x56, 0x8d, - 0x9a, 0x3a, 0x57, 0x89, 0x9a, 0x3a, 0x58, 0x8d, 0x9a, 0x3a, 0x58, 0x89, - 0x9a, 0x3a, 0x59, 0x8d, 0x9a, 0x3a, 0x5a, 0x89, 0x9a, 0x3a, 0x5b, 0x8d, - 0x9a, 0x3a, 0x5c, 0x89, 0x9a, 0x3a, 0x5d, 0x8d, 0x9a, 0x3a, 0x5d, 0x89, - 0x9a, 0x3a, 0x5e, 0x8d, 0x9a, 0x3a, 0x5f, 0x89, 0x9a, 0x3a, 0x60, 0x8d, - 0x9a, 0x3a, 0x60, 0x89, 0x9a, 0x3a, 0x61, 0x8d, 0x9a, 0x3a, 0x62, 0x89, - 0x9a, 0x3a, 0x63, 0x8d, 0x9a, 0x3a, 0x63, 0x89, 0x9a, 0x3a, 0x64, 0x8d, - 0x9a, 0x3a, 0x65, 0x89, 0x9a, 0x3a, 0x66, 0x8d, 0x9a, 0x3a, 0x66, 0x89, - 0x9a, 0x3a, 0x67, 0x8d, 0x9a, 0x3a, 0x68, 0x89, 0x9a, 0x3a, 0x68, 0x8d, - 0x9a, 0x3a, 0x69, 0x89, 0x9a, 0x3a, 0x6a, 0x8d, 0x9a, 0x3a, 0x6a, 0x89, - 0x9a, 0x3a, 0x6b, 0x86, 0x9b, 0x3a, 0x6c, 0x89, 0x9a, 0x3a, 0x6c, 0x86, - 0x9b, 0x3a, 0x6d, 0x89, 0x9a, 0x3a, 0x6e, 0x86, 0x9b, 0x3a, 0x6e, 0x89, - 0x9a, 0x3a, 0x6f, 0x86, 0x9b, 0x3a, 0x70, 0x89, 0x9a, 0x3a, 0x70, 0x86, - 0x9b, 0x3a, 0x71, 0x89, 0x9a, 0x3a, 0x72, 0x86, 0x9b, 0x3a, 0x72, 0x89, - 0x9a, 0x3a, 0x73, 0x86, 0x9b, 0x3a, 0x73, 0x89, 0x9a, 0x3a, 0x74, 0x86, - 0x9b, 0x3a, 0x75, 0x89, 0x9a, 0x3a, 0x75, 0x86, 0x9b, 0x3a, 0x76, 0x89, - 0x9a, 0x3a, 0x76, 0x86, 0x9b, 0x3a, 0x77, 0x89, 0x9a, 0x3a, 0x78, 0x86, - 0x9b, 0x3a, 0x78, 0x89, 0x9a, 0x3a, 0x79, 0x86, 0x9b, 0x3a, 0x79, 0x89, - 0x9a, 0x3a, 0x7a, 0x86, 0x9b, 0x3a, 0x7a, 0x89, 0x9a, 0x3a, 0x7b, 0x86, - 0x9b, 0x3a, 0x7c, 0x89, 0x9a, 0x3a, 0x7c, 0x86, 0x9b, 0x3a, 0x7d, 0x89, - 0x9a, 0x3a, 0x7d, 0x86, 0x9b, 0x3a, 0x7e, 0x89, 0x9a, 0x3a, 0x7e, 0x86, - 0x9b, 0x3a, 0x7f, 0x89, 0x9a, 0x3a, 0x7f, 0x86, 0x9b, 0x3a, 0x80, 0x89, - 0x9a, 0x3a, 0x81, 0x86, 0x9b, 0x3a, 0x81, 0x89, 0x9a, 0x3a, 0x82, 0x86, - 0x9b, 0x3a, 0x82, 0x89, 0x9a, 0x3a, 0x83, 0x86, 0x9b, 0x3a, 0x83, 0x89, - 0x9a, 0x3a, 0x84, 0x86, 0x9b, 0x3a, 0x84, 0x89, 0x9a, 0x3a, 0x85, 0x86, - 0x9b, 0x3a, 0x85, 0x89, 0x9a, 0x3a, 0x86, 0x86, 0x9b, 0x3a, 0x86, 0x89, - 0x9a, 0x3a, 0x87, 0x86, 0x9b, 0x3a, 0x87, 0x89, 0x9a, 0x3a, 0x88, 0x86, - 0x9b, 0x3a, 0x88, 0x84, 0x9b, 0x3a, 0x89, 0x86, 0x9b, 0x3a, 0x89, 0x84, - 0x9b, 0x3a, 0x8a, 0x86, 0x9b, 0x3a, 0x8a, 0x84, 0x9b, 0x3a, 0x8b, 0x86, - 0x9b, 0x3a, 0x8b, 0x84, 0x9b, 0x3a, 0x8c, 0x86, 0x9b, 0x3a, 0x8c, 0x84, - 0x9b, 0x3a, 0x8d, 0x86, 0x9b, 0x3a, 0x8d, 0x84, 0x9b, 0x3a, 0x8e, 0x86, - 0x9b, 0x3a, 0x8e, 0x84, 0x9b, 0x3a, 0x8e, 0x86, 0x9b, 0x3a, 0x8f, 0x84, - 0x9b, 0x3a, 0x8f, 0x86, 0x9b, 0x3a, 0x90, 0x84, 0x9b, 0x3a, 0x90, 0x86, - 0x9b, 0x3a, 0x91, 0x84, 0x9b, 0x3a, 0x91, 0x86, 0x9b, 0x3a, 0x92, 0x84, - 0x9b, 0x3a, 0x92, 0x86, 0x9b, 0x3a, 0x93, 0x84, 0x9b, 0x3a, 0x93, 0x86, - 0x9b, 0x3a, 0x94, 0x84, 0x9b, 0x3a, 0x94, 0x86, 0x9b, 0x3a, 0x94, 0x84, - 0x9b, 0x3a, 0x95, 0x86, 0x9b, 0x3a, 0x95, 0x84, 0x9b, 0x3a, 0x96, 0x86, - 0x9b, 0x3a, 0x96, 0x84, 0x9b, 0x3a, 0x97, 0x86, 0x9b, 0x3a, 0x97, 0x84, - 0x9b, 0x3a, 0x98, 0x86, 0x9b, 0x3a, 0x98, 0x84, 0x9b, 0x3a, 0x98, 0x84, - 0x9c, 0x3a, 0x99, 0x84, 0x9b, 0x3a, 0x99, 0x84, 0x9c, 0x3a, 0x9a, 0x84, - 0x9b, 0x3a, 0x9a, 0x84, 0x9c, 0x3a, 0x9a, 0x84, 0x9b, 0x3a, 0x9b, 0x84, - 0x9c, 0x3a, 0x9b, 0x84, 0x9b, 0x3a, 0x9c, 0x84, 0x9c, 0x3a, 0x9c, 0x84, - 0x9c, 0x3a, 0x9d, 0x84, 0x9d, 0x3a, 0x9d, 0x84, 0x9d, 0x3a, 0x9d, 0x84, - 0x9d, 0x3a, 0x9e, 0x84, 0x9e, 0x3a, 0x9e, 0x84, 0x9e, 0x3a, 0x9f, 0x84, - 0x9f, 0x3a, 0x9f, 0x84, 0x9e, 0x3a, 0x9f, 0x84, 0x9f, 0x3a, 0xa0, 0x85, - 0xa0, 0x3a, 0xa0, 0x85, 0xa0, 0x3a, 0xa1, 0x85, 0xa1, 0x3a, 0xa1, 0x85, - 0xa1, 0x3a, 0xa1, 0x85, 0xa1, 0x3a, 0xa2, 0x85, 0xa2, 0x3a, 0xa2, 0x85, - 0xa2, 0x3a, 0xa3, 0x85, 0xa2, 0x3a, 0xa3, 0x85, 0xa2, 0x3a, 0xa3, 0x85, - 0xa2, 0x3a, 0xa4, 0x85, 0xa2, 0x3a, 0xa4, 0x86, 0xa4, 0x3a, 0xa5, 0x86, - 0xa5, 0x3a, 0xa5, 0x86, 0xa5, 0x3a, 0xa5, 0x86, 0xa5, 0x3a, 0xa6, 0x86, - 0xa6, 0x3a, 0xa6, 0x86, 0xa6, 0x3a, 0xa6, 0x86, 0xa6, 0x3a, 0xa7, 0x86, - 0xa6, 0x3a, 0xa7, 0x86, 0xa6, 0x3a, 0xa8, 0x86, 0xa6, 0x3a, 0xa8, 0x87, - 0xa8, 0x3a, 0xa8, 0x87, 0xa8, 0x3a, 0xa9, 0x87, 0xa9, 0x3a, 0xa9, 0x87, - 0xa9, 0x3a, 0xaa, 0x87, 0xaa, 0x3a, 0xaa, 0x87, 0xa9, 0x3a, 0xaa, 0x87, - 0xaa, 0x3a, 0xab, 0x87, 0xa9, 0x3a, 0xab, 0x87, 0xaa, 0x3a, 0xab, 0x88, - 0xab, 0x3a, 0xac, 0x88, 0xac, 0x3a, 0xac, 0x88, 0xac, 0x3a, 0xac, 0x88, - 0xac, 0x3a, 0xad, 0x88, 0xad, 0x3a, 0xad, 0x88, 0xad, 0x3a, 0xae, 0x88, - 0xad, 0x3a, 0xae, 0x88, 0xad, 0x3a, 0xae, 0x88, 0xad, 0x3a, 0xaf, 0x88, - 0xad, 0x3a, 0xaf, 0x88, 0xad, 0x3a, 0xaf, 0x88, 0xad, 0x3a, 0xb0, 0x89, - 0xb0, 0x3a, 0xb0, 0x89, 0xb0, 0x3a, 0xb0, 0x89, 0xb0, 0x3a, 0xb1, 0x89, - 0xb0, 0x3a, 0xb1, 0x89, 0xb0, 0x3a, 0xb2, 0x89, 0xb0, 0x3a, 0xb2, 0x89, - 0xb0, 0x3a, 0xb2, 0x89, 0xb2, 0x3a, 0xb3, 0x89, 0xb2, 0x3a, 0xb3, 0x89, - 0xb2, 0x3a, 0xb3, 0x89, 0xb2, 0x3a, 0xb4, 0x89, 0xb2, 0x3a, 0xb4, 0x8a, - 0xb3, 0x3a, 0xb4, 0x8a, 0xb4, 0x3a, 0xb5, 0x8a, 0xb3, 0x3a, 0xb5, 0x8a, - 0xb4, 0x3a, 0xb5, 0x8a, 0xb3, 0x3a, 0xb6, 0x8a, 0xb4, 0x3a, 0xb6, 0x8b, - 0xb6, 0x3a, 0xb6, 0x8b, 0xb6, 0x3a, 0xb7, 0x8b, 0xb7, 0x3a, 0xb7, 0x8b, - 0xb7, 0x3a, 0xb7, 0x8b, 0xb7, 0x3a, 0xb8, 0x8b, 0xb7, 0x3a, 0xb8, 0x8b, - 0xb7, 0x3a, 0xb8, 0x8b, 0xb7, 0x3a, 0xb9, 0x8b, 0xb7, 0x3a, 0xb9, 0x8b, - 0xb7, 0x3a, 0xb9, 0x8b, 0xb7, 0x3a, 0xba, 0x8b, 0xb7, 0x3a, 0xba, 0x8c, - 0xba, 0x3a, 0xba, 0x8c, 0xba, 0x3a, 0xbb, 0x8c, 0xba, 0x3a, 0xbb, 0x8c, - 0xba, 0x3a, 0xbb, 0x8c, 0xba, 0x3a, 0xbc, 0x8c, 0xba, 0x3a, 0xbc, 0x8c, - 0xba, 0x3a, 0xbc, 0x8c, 0xba, 0x3a, 0xbd, 0x8c, 0xba, 0x3a, 0xbd, 0x8d, - 0xbd, 0x3a, 0xbd, 0x8d, 0xbd, 0x3a, 0xbe, 0x8d, 0xbd, 0x3a, 0xbe, 0x8d, - 0xbd, 0x3a, 0xbe, 0x8d, 0xbd, 0x3a, 0xbf, 0x8d, 0xbd, 0x3a, 0xbf, 0x8d, - 0xbd, 0x3a, 0xbf, 0x8d, 0xbd, 0x3a, 0xc0, 0x8d, 0xbd, 0x3a, 0xc0, 0x8e, - 0xc0, 0x3a, 0xc0, 0x8e, 0xc0, 0x3a, 0xc1, 0x8e, 0xc0, 0x3a, 0xc1, 0x8e, - 0xc0, 0x3a, 0xc1, 0x8e, 0xc0, 0x3a, 0xc1, 0x8e, 0xc0, 0x3a, 0xc2, 0x8e, - 0xc0, 0x3a, 0xc2, 0x8e, 0xc0, 0x3a, 0xc2, 0x8e, 0xc0, 0x3a, 0xc3, 0x8e, - 0xc0, 0x3a, 0xc3, 0x8e, 0xc3, 0x3a, 0xc3, 0x8e, 0xc3, 0x3a, 0xc4, 0x8e, - 0xc3, 0x3a, 0xc4, 0x8e, 0xc3, 0x3a, 0xc4, 0x8e, 0xc3, 0x3a, 0xc5, 0x8e, - 0xc3, 0x3a, 0xc5, 0x8e, 0xc3, 0x3a, 0xc5, 0x8e, 0xc3, 0x3a, 0xc6, 0x8e, - 0xc3, 0x3a, 0xc6, 0x8f, 0xc6, 0x3a, 0xc6, 0x8e, 0xc3, 0x3a, 0xc6, 0x8f, - 0xc6, 0x3a, 0xc7, 0x8f, 0xc6, 0x3a, 0xc7, 0x8f, 0xc6, 0x3a, 0xc7, 0x8f, - 0xc6, 0x3a, 0xc8, 0x8f, 0xc6, 0x3a, 0xc8, 0x8f, 0xc6, 0x3a, 0xc8, 0x8f, - 0xc6, 0x3a, 0xc9, 0x8f, 0xc6, 0x3a, 0xc9, 0x8f, 0xc6, 0x3a, 0xc9, 0x90, - 0xc9, 0x3a, 0xc9, 0x90, 0xc9, 0x3a, 0xca, 0x90, 0xc9, 0x3a, 0xca, 0x90, - 0xc9, 0x3a, 0xca, 0x90, 0xc9, 0x3a, 0xcb, 0x90, 0xc9, 0x3a, 0xcb, 0x90, - 0xc9, 0x3a, 0xcb, 0x90, 0xc9, 0x3a, 0xcc, 0x90, 0xc9, 0x3a, 0xcc, 0x90, - 0xc9, 0x3a, 0xcc, 0x91, 0xcc, 0x3a, 0xcc, 0x91, 0xcb, 0x3a, 0xcd, 0x91, - 0xcc, 0x3a, 0xcd, 0x91, 0xcb, 0x3a, 0xcd, 0x91, 0xcc, 0x3a, 0xce, 0x91, - 0xcb, 0x3a, 0xce, 0x91, 0xcc, 0x3a, 0xce, 0x91, 0xcb, 0x3a, 0xce, 0x91, - 0xcc, 0x3a, 0xcf, 0x92, 0xce, 0x3a, 0xcf, 0x92, 0xce, 0x3a, 0xcf, 0x92, - 0xce, 0x3a, 0xd0, 0x92, 0xce, 0x3a, 0xd0, 0x92, 0xce, 0x3a, 0xd0, 0x92, - 0xce, 0x3a, 0xd0, 0x92, 0xce, 0x3a, 0xd1, 0x92, 0xce, 0x3a, 0xd1, 0x92, - 0xce, 0x3a, 0xd1, 0x92, 0xce, 0x3a, 0xd2, 0x93, 0xd1, 0x3a, 0xd2, 0x92, - 0xce, 0x3a, 0xd2, 0x93, 0xd1, 0x3a, 0xd2, 0x93, 0xd1, 0x3a, 0xd3, 0x93, - 0xd1, 0x3a, 0xd3, 0x93, 0xd1, 0x3a, 0xd3, 0x93, 0xd1, 0x3a, 0xd4, 0x93, - 0xd1, 0x3a, 0xd4, 0x93, 0xd1, 0x3a, 0xd4, 0x93, 0xd1, 0x3a, 0xd4, 0x93, - 0xd1, 0x3a, 0xd5, 0x94, 0xd4, 0x3a, 0xd5, 0x94, 0xd3, 0x3a, 0xd5, 0x94, - 0xd4, 0x3a, 0xd6, 0x94, 0xd3, 0x3a, 0xd6, 0x94, 0xd4, 0x3a, 0xd6, 0x94, - 0xd3, 0x3a, 0xd6, 0x94, 0xd4, 0x3a, 0xd7, 0x94, 0xd3, 0x3a, 0xd7, 0x94, - 0xd4, 0x3a, 0xd7, 0x95, 0xd6, 0x3a, 0xd7, 0x95, 0xd6, 0x3a, 0xd8, 0x95, - 0xd6, 0x3a, 0xd8, 0x95, 0xd6, 0x3a, 0xd8, 0x95, 0xd6, 0x3a, 0xd9, 0x95, - 0xd6, 0x3a, 0xd9, 0x95, 0xd6, 0x3a, 0xd9, 0x95, 0xd6, 0x3a, 0xd9, 0x95, - 0xd6, 0x3a, 0xda, 0x95, 0xd6, 0x3a, 0xda, 0x96, 0xd9, 0x3a, 0xda, 0x96, - 0xd9, 0x3a, 0xda, 0x96, 0xd9, 0x3a, 0xdb, 0x96, 0xd9, 0x3a, 0xdb, 0x96, - 0xd9, 0x3a, 0xdb, 0x96, 0xd9, 0x3a, 0xdb, 0x96, 0xd9, 0x3a, 0xdc, 0x96, - 0xd9, 0x3a, 0xdc, 0x96, 0xd9, 0x3a, 0xdc, 0x97, 0xdb, 0x3a, 0xdd, 0x96, - 0xd9, 0x3a, 0xdd, 0x97, 0xdb, 0x3a, 0xdd, 0x97, 0xdb, 0x3a, 0xdd, 0x97, - 0xdb, 0x3a, 0xde, 0x97, 0xdb, 0x3a, 0xde, 0x97, 0xdb, 0x3a, 0xde, 0x97, - 0xdb, 0x3a, 0xde, 0x97, 0xdb, 0x3a, 0xdf, 0x98, 0xde, 0x3a, 0xdf, 0x98, - 0xde, 0x3a, 0xdf, 0x98, 0xde, 0x3a, 0xdf, 0x98, 0xde, 0x3a, 0xe0, 0x98, - 0xde, 0x3a, 0xe0, 0x98, 0xde, 0x3a, 0xe0, 0x98, 0xde, 0x3a, 0xe1, 0x98, - 0xde, 0x3a, 0xe1, 0x98, 0xde, 0x3a, 0xe1, 0x98, 0xde, 0x3a, 0xe1, 0x98, - 0xe0, 0x3a, 0xe2, 0x98, 0xde, 0x3a, 0xe2, 0x98, 0xe0, 0x3a, 0xe2, 0x98, - 0xe0, 0x3a, 0xe2, 0x98, 0xe0, 0x3a, 0xe3, 0x98, 0xe0, 0x3a, 0xe3, 0x98, - 0xe0, 0x3a, 0xe3, 0x98, 0xe0, 0x3a, 0xe3, 0x98, 0xe0, 0x3a, 0xe4, 0x98, - 0xe0, 0x3a, 0xe4, 0x98, 0xe0, 0x3a, 0xe4, 0x99, 0xe3, 0x3a, 0xe4, 0x99, - 0xe2, 0x3a, 0xe5, 0x99, 0xe3, 0x3a, 0xe5, 0x99, 0xe2, 0x3a, 0xe5, 0x99, - 0xe3, 0x3a, 0xe5, 0x99, 0xe2, 0x3a, 0xe6, 0x99, 0xe3, 0x3a, 0xe6, 0x99, - 0xe2, 0x3a, 0xe6, 0x99, 0xe3, 0x3a, 0xe6, 0x9a, 0xe5, 0x3a, 0xe7, 0x9a, - 0xe5, 0x3a, 0xe7, 0x9a, 0xe5, 0x3a, 0xe7, 0x9a, 0xe5, 0x3a, 0xe7, 0x9a, - 0xe5, 0x3a, 0xe8, 0x9a, 0xe5, 0x3a, 0xe8, 0x9a, 0xe5, 0x3a, 0xe8, 0x9a, - 0xe5, 0x3a, 0xe8, 0x9a, 0xe5, 0x3a, 0xe9, 0x9a, 0xe5, 0x3a, 0xe9, 0x9b, - 0xe7, 0x3a, 0xe9, 0x9a, 0xe5, 0x3a, 0xe9, 0x9b, 0xe7, 0x3a, 0xea, 0x9b, - 0xe7, 0x3a, 0xea, 0x9b, 0xe7, 0x3a, 0xea, 0x9b, 0xe7, 0x3a, 0xea, 0x9b, - 0xe7, 0x3a, 0xeb, 0x9b, 0xe7, 0x3a, 0xeb, 0x9b, 0xe7, 0x3a, 0xeb, 0x9c, - 0xea, 0x3a, 0xeb, 0x9c, 0xea, 0x3a, 0xec, 0x9c, 0xea, 0x3a, 0xec, 0x9c, - 0xea, 0x3a, 0xec, 0x9c, 0xea, 0x3a, 0xec, 0x9c, 0xea, 0x3a, 0xec, 0x9c, - 0xea, 0x3a, 0xed, 0x9c, 0xea, 0x3a, 0xed, 0x9c, 0xea, 0x3a, 0xed, 0x9c, - 0xea, 0x3a, 0xed, 0x9c, 0xea, 0x3a, 0xee, 0x9c, 0xea, 0x3a, 0xee, 0x9d, - 0xec, 0x3a, 0xee, 0x9d, 0xec, 0x3a, 0xee, 0x9d, 0xec, 0x3a, 0xef, 0x9d, - 0xec, 0x3a, 0xef, 0x9d, 0xec, 0x3a, 0xef, 0x9d, 0xec, 0x3a, 0xef, 0x9d, - 0xec, 0x3a, 0xf0, 0x9d, 0xec, 0x3a, 0xf0, 0x9d, 0xec, 0x3a, 0xf0, 0x9d, - 0xee, 0x3a, 0xf0, 0x9d, 0xec, 0x3a, 0xf1, 0x9d, 0xee, 0x3a, 0xf1, 0x9d, - 0xee, 0x3a, 0xf1, 0x9d, 0xee, 0x3a, 0xf1, 0x9d, 0xee, 0x3a, 0xf2, 0x9d, - 0xee, 0x3a, 0xf2, 0x9d, 0xee, 0x3a, 0xf2, 0x9d, 0xee, 0x3a, 0xf2, 0x9e, - 0xf0, 0x3a, 0xf2, 0x9e, 0xf1, 0x3a, 0xf3, 0x9e, 0xf0, 0x3a, 0xf3, 0x9e, - 0xf1, 0x3a, 0xf3, 0x9e, 0xf0, 0x3a, 0xf3, 0x9e, 0xf1, 0x3a, 0xf4, 0x9e, - 0xf0, 0x3a, 0xf4, 0x9e, 0xf1, 0x3a, 0xf4, 0x9e, 0xf0, 0x3a, 0xf4, 0x9e, - 0xf1, 0x3a, 0xf5, 0x9f, 0xf3, 0x3a, 0xf5, 0x9e, 0xf1, 0x3a, 0xf5, 0x9f, - 0xf3, 0x3a, 0xf5, 0x9f, 0xf2, 0x3a, 0xf5, 0x9f, 0xf3, 0x3a, 0xf6, 0x9f, - 0xf2, 0x3a, 0xf6, 0x9f, 0xf3, 0x3a, 0xf6, 0x9f, 0xf2, 0x3a, 0xf6, 0x9f, - 0xf3, 0x3a, 0xf7, 0xa0, 0xf5, 0x3a, 0xf7, 0x9f, 0xf3, 0x3a, 0xf7, 0xa0, - 0xf5, 0x3a, 0xf7, 0xa0, 0xf5, 0x3a, 0xf8, 0xa0, 0xf5, 0x3a, 0xf8, 0xa0, - 0xf5, 0x3a, 0xf8, 0xa0, 0xf5, 0x3a, 0xf8, 0xa0, 0xf5, 0x3a, 0xf8, 0xa0, - 0xf5, 0x3a, 0xf9, 0xa1, 0xf7, 0x3a, 0xf9, 0xa1, 0xf7, 0x3a, 0xf9, 0xa1, - 0xf7, 0x3a, 0xf9, 0xa1, 0xf7, 0x3a, 0xfa, 0xa1, 0xf7, 0x3a, 0xfa, 0xa1, - 0xf7, 0x3a, 0xfa, 0xa1, 0xf7, 0x3a, 0xfa, 0xa1, 0xf7, 0x3a, 0xfa, 0xa1, - 0xf7, 0x3a, 0xfb, 0xa1, 0xf7, 0x3a, 0xfb, 0xa1, 0xf7, 0x3a, 0xfb, 0xa1, - 0xf7, 0x3a, 0xfb, 0xa1, 0xf9, 0x3a, 0xfc, 0xa1, 0xf7, 0x3a, 0xfc, 0xa1, - 0xf9, 0x3a, 0xfc, 0xa1, 0xf9, 0x3a, 0xfc, 0xa1, 0xf9, 0x3a, 0xfc, 0xa1, - 0xf9, 0x3a, 0xfd, 0xa1, 0xf9, 0x3a, 0xfd, 0xa1, 0xf9, 0x3a, 0xfd, 0xa1, - 0xf9, 0x3a, 0xfd, 0xa2, 0xfb, 0x3a, 0xfe, 0xa1, 0xf9, 0x3a, 0xfe, 0xa2, - 0xfb, 0x3a, 0xfe, 0xa2, 0xfb, 0x3a, 0xfe, 0xa2, 0xfb, 0x3a, 0xfe, 0xa2, - 0xfb, 0x3a, 0xff, 0xa2, 0xfb, 0x3a, 0xff, 0xa2, 0xfb, 0x3a, 0x03, 0x90, - 0x9a, 0x3a, 0x0a, 0x8c, 0x9a, 0x3a, 0x0f, 0x90, 0x9a, 0x3a, 0x14, 0x8c, - 0x9a, 0x3a, 0x17, 0x90, 0x9a, 0x3a, 0x1b, 0x8c, 0x9a, 0x3a, 0x1e, 0x90, - 0x9a, 0x3a, 0x20, 0x8c, 0x9a, 0x3a, 0x23, 0x90, 0x9a, 0x3a, 0x25, 0x8c, - 0x9a, 0x3a, 0x27, 0x90, 0x9a, 0x3a, 0x29, 0x8c, 0x9a, 0x3a, 0x2b, 0x90, - 0x9a, 0x3a, 0x2d, 0x8c, 0x9a, 0x3a, 0x2f, 0x90, 0x9a, 0x3a, 0x31, 0x8c, - 0x9a, 0x3a, 0x32, 0x90, 0x9a, 0x3a, 0x34, 0x8c, 0x9a, 0x3a, 0x35, 0x90, - 0x9a, 0x3a, 0x37, 0x8c, 0x9a, 0x3a, 0x38, 0x90, 0x9a, 0x3a, 0x3a, 0x8c, - 0x9a, 0x3a, 0x3b, 0x90, 0x9a, 0x3a, 0x3c, 0x8c, 0x9a, 0x3a, 0x3e, 0x90, - 0x9a, 0x3a, 0x3f, 0x8c, 0x9a, 0x3a, 0x40, 0x90, 0x9a, 0x3a, 0x42, 0x8c, - 0x9a, 0x3a, 0x43, 0x90, 0x9a, 0x3a, 0x44, 0x8c, 0x9a, 0x3a, 0x45, 0x90, - 0x9a, 0x3a, 0x46, 0x8c, 0x9a, 0x3a, 0x47, 0x89, 0x9a, 0x3a, 0x48, 0x8c, - 0x9a, 0x3a, 0x49, 0x89, 0x9a, 0x3a, 0x4a, 0x8c, 0x9a, 0x3a, 0x4b, 0x89, - 0x9a, 0x3a, 0x4c, 0x8c, 0x9a, 0x3a, 0x4d, 0x89, 0x9a, 0x3a, 0x4e, 0x8c, - 0x9a, 0x3a, 0x4f, 0x89, 0x9a, 0x3a, 0x50, 0x8c, 0x9a, 0x3a, 0x51, 0x89, - 0x9a, 0x3a, 0x52, 0x8c, 0x9a, 0x3a, 0x53, 0x89, 0x9a, 0x3a, 0x54, 0x8c, - 0x9a, 0x3a, 0x55, 0x89, 0x9a, 0x3a, 0x56, 0x8c, 0x9a, 0x3a, 0x57, 0x89, - 0x9a, 0x3a, 0x58, 0x8c, 0x9a, 0x3a, 0x58, 0x89, 0x9a, 0x3a, 0x59, 0x8c, - 0x9a, 0x3a, 0x5a, 0x89, 0x9a, 0x3a, 0x5b, 0x8c, 0x9a, 0x3a, 0x5c, 0x89, - 0x9a, 0x3a, 0x5d, 0x8c, 0x9a, 0x3a, 0x5d, 0x89, 0x9a, 0x3a, 0x5e, 0x8c, - 0x9a, 0x3a, 0x5f, 0x89, 0x9a, 0x3a, 0x60, 0x8c, 0x9a, 0x3a, 0x60, 0x89, - 0x9a, 0x3a, 0x61, 0x8c, 0x9a, 0x3a, 0x62, 0x89, 0x9a, 0x3a, 0x63, 0x8c, - 0x9a, 0x3a, 0x63, 0x89, 0x9a, 0x3a, 0x64, 0x8c, 0x9a, 0x3a, 0x65, 0x89, - 0x9a, 0x3a, 0x66, 0x8c, 0x9a, 0x3a, 0x66, 0x89, 0x9a, 0x3a, 0x67, 0x8c, - 0x9a, 0x3a, 0x68, 0x89, 0x9a, 0x3a, 0x68, 0x8c, 0x9a, 0x3a, 0x69, 0x89, - 0x9a, 0x3a, 0x6a, 0x8c, 0x9a, 0x3a, 0x6a, 0x89, 0x9a, 0x3a, 0x6b, 0x8c, - 0x9a, 0x3a, 0x6c, 0x89, 0x9a, 0x3a, 0x6c, 0x8c, 0x9a, 0x3a, 0x6d, 0x89, - 0x9a, 0x3a, 0x6e, 0x8c, 0x9a, 0x3a, 0x6e, 0x89, 0x9a, 0x3a, 0x6f, 0x8c, - 0x9a, 0x3a, 0x70, 0x89, 0x9a, 0x3a, 0x70, 0x8c, 0x9a, 0x3a, 0x71, 0x89, - 0x9a, 0x3a, 0x72, 0x8c, 0x9a, 0x3a, 0x72, 0x89, 0x9a, 0x3a, 0x73, 0x8c, - 0x9a, 0x3a, 0x73, 0x89, 0x9a, 0x3a, 0x74, 0x8c, 0x9a, 0x3a, 0x75, 0x89, - 0x9a, 0x3a, 0x75, 0x8c, 0x9a, 0x3a, 0x76, 0x89, 0x9a, 0x3a, 0x76, 0x8c, - 0x9a, 0x3a, 0x77, 0x89, 0x9a, 0x3a, 0x78, 0x86, 0x9b, 0x3a, 0x78, 0x89, - 0x9a, 0x3a, 0x79, 0x86, 0x9b, 0x3a, 0x79, 0x89, 0x9a, 0x3a, 0x7a, 0x86, - 0x9b, 0x3a, 0x7a, 0x89, 0x9a, 0x3a, 0x7b, 0x86, 0x9b, 0x3a, 0x7c, 0x89, - 0x9a, 0x3a, 0x7c, 0x86, 0x9b, 0x3a, 0x7d, 0x89, 0x9a, 0x3a, 0x7d, 0x86, - 0x9b, 0x3a, 0x7e, 0x89, 0x9a, 0x3a, 0x7e, 0x86, 0x9b, 0x3a, 0x7f, 0x89, - 0x9a, 0x3a, 0x7f, 0x86, 0x9b, 0x3a, 0x80, 0x89, 0x9a, 0x3a, 0x81, 0x86, - 0x9b, 0x3a, 0x81, 0x89, 0x9a, 0x3a, 0x82, 0x86, 0x9b, 0x3a, 0x82, 0x89, - 0x9a, 0x3a, 0x83, 0x86, 0x9b, 0x3a, 0x83, 0x89, 0x9a, 0x3a, 0x84, 0x86, - 0x9b, 0x3a, 0x84, 0x89, 0x9a, 0x3a, 0x85, 0x86, 0x9b, 0x3a, 0x85, 0x89, - 0x9a, 0x3a, 0x86, 0x86, 0x9b, 0x3a, 0x86, 0x89, 0x9a, 0x3a, 0x87, 0x86, - 0x9b, 0x3a, 0x87, 0x89, 0x9a, 0x3a, 0x88, 0x86, 0x9b, 0x3a, 0x88, 0x89, - 0x9a, 0x3a, 0x89, 0x86, 0x9b, 0x3a, 0x89, 0x89, 0x9a, 0x3a, 0x8a, 0x86, - 0x9b, 0x3a, 0x8a, 0x89, 0x9a, 0x3a, 0x8b, 0x86, 0x9b, 0x3a, 0x8b, 0x83, - 0x9b, 0x3a, 0x8c, 0x86, 0x9b, 0x3a, 0x8c, 0x83, 0x9b, 0x3a, 0x8d, 0x86, - 0x9b, 0x3a, 0x8d, 0x83, 0x9b, 0x3a, 0x8e, 0x86, 0x9b, 0x3a, 0x8e, 0x83, - 0x9b, 0x3a, 0x8e, 0x86, 0x9b, 0x3a, 0x8f, 0x83, 0x9b, 0x3a, 0x8f, 0x86, - 0x9b, 0x3a, 0x90, 0x83, 0x9b, 0x3a, 0x90, 0x86, 0x9b, 0x3a, 0x91, 0x83, - 0x9b, 0x3a, 0x91, 0x86, 0x9b, 0x3a, 0x92, 0x83, 0x9b, 0x3a, 0x92, 0x86, - 0x9b, 0x3a, 0x93, 0x83, 0x9b, 0x3a, 0x93, 0x86, 0x9b, 0x3a, 0x94, 0x83, - 0x9b, 0x3a, 0x94, 0x86, 0x9b, 0x3a, 0x94, 0x83, 0x9b, 0x3a, 0x95, 0x86, - 0x9b, 0x3a, 0x95, 0x83, 0x9b, 0x3a, 0x96, 0x86, 0x9b, 0x3a, 0x96, 0x83, - 0x9b, 0x3a, 0x97, 0x86, 0x9b, 0x3a, 0x97, 0x83, 0x9b, 0x3a, 0x98, 0x86, - 0x9b, 0x3a, 0x98, 0x83, 0x9b, 0x3a, 0x98, 0x83, 0x9c, 0x3a, 0x99, 0x83, - 0x9b, 0x3a, 0x99, 0x83, 0x9c, 0x3a, 0x9a, 0x83, 0x9b, 0x3a, 0x9a, 0x83, - 0x9c, 0x3a, 0x9a, 0x83, 0x9b, 0x3a, 0x9b, 0x83, 0x9c, 0x3a, 0x9b, 0x83, - 0x9b, 0x39, 0x9c, 0x83, 0x9c, 0x39, 0x9c, 0x83, 0x9c, 0x39, 0x9d, 0x83, - 0x9d, 0x39, 0x9d, 0x84, 0x9d, 0x3a, 0x9d, 0x84, 0x9d, 0x3a, 0x9e, 0x84, - 0x9e, 0x3a, 0x9e, 0x84, 0x9e, 0x3a, 0x9f, 0x84, 0x9f, 0x3a, 0x9f, 0x84, - 0x9f, 0x3a, 0x9f, 0x84, 0x9f, 0x3a, 0xa0, 0x84, 0xa0, 0x3a, 0xa0, 0x84, - 0xa0, 0x3a, 0xa1, 0x84, 0xa1, 0x3a, 0xa1, 0x84, 0xa0, 0x3a, 0xa1, 0x84, - 0xa1, 0x3a, 0xa2, 0x85, 0xa2, 0x3a, 0xa2, 0x85, 0xa2, 0x3a, 0xa3, 0x85, - 0xa3, 0x3a, 0xa3, 0x85, 0xa3, 0x3a, 0xa3, 0x85, 0xa3, 0x3a, 0xa4, 0x85, - 0xa4, 0x3a, 0xa4, 0x85, 0xa4, 0x3a, 0xa5, 0x85, 0xa4, 0x3a, 0xa5, 0x85, - 0xa4, 0x3a, 0xa5, 0x85, 0xa4, 0x3a, 0xa6, 0x85, 0xa4, 0x3a, 0xa6, 0x86, - 0xa6, 0x3a, 0xa6, 0x86, 0xa6, 0x3a, 0xa7, 0x86, 0xa7, 0x3a, 0xa7, 0x86, - 0xa7, 0x3a, 0xa8, 0x86, 0xa8, 0x3a, 0xa8, 0x86, 0xa7, 0x3a, 0xa8, 0x86, - 0xa8, 0x3a, 0xa9, 0x86, 0xa7, 0x3a, 0xa9, 0x86, 0xa8, 0x3a, 0xaa, 0x87, - 0xaa, 0x3a, 0xaa, 0x87, 0xaa, 0x3a, 0xaa, 0x87, 0xaa, 0x3a, 0xab, 0x87, - 0xab, 0x3a, 0xab, 0x87, 0xab, 0x3a, 0xab, 0x87, 0xab, 0x3a, 0xac, 0x87, - 0xab, 0x3a, 0xac, 0x87, 0xab, 0x3a, 0xac, 0x87, 0xab, 0x3a, 0xad, 0x87, - 0xab, 0x3a, 0xad, 0x88, 0xad, 0x3a, 0xae, 0x88, 0xae, 0x3a, 0xae, 0x88, - 0xae, 0x3a, 0xae, 0x88, 0xae, 0x3a, 0xaf, 0x88, 0xaf, 0x3a, 0xaf, 0x88, - 0xae, 0x3a, 0xaf, 0x88, 0xaf, 0x3a, 0xb0, 0x88, 0xae, 0x3a, 0xb0, 0x88, - 0xaf, 0x3a, 0xb0, 0x88, 0xae, 0x3a, 0xb1, 0x88, 0xaf, 0x3a, 0xb1, 0x89, - 0xb1, 0x3a, 0xb2, 0x89, 0xb2, 0x3a, 0xb2, 0x89, 0xb2, 0x3a, 0xb2, 0x89, - 0xb2, 0x3a, 0xb3, 0x89, 0xb2, 0x3a, 0xb3, 0x89, 0xb2, 0x3a, 0xb3, 0x89, - 0xb2, 0x3a, 0xb4, 0x89, 0xb2, 0x3a, 0xb4, 0x89, 0xb2, 0x3a, 0xb4, 0x89, - 0xb2, 0x3a, 0xb5, 0x8a, 0xb5, 0x3a, 0xb5, 0x8a, 0xb5, 0x3a, 0xb5, 0x8a, - 0xb5, 0x3a, 0xb6, 0x8a, 0xb5, 0x3a, 0xb6, 0x8a, 0xb5, 0x3a, 0xb6, 0x8a, - 0xb5, 0x3a, 0xb7, 0x8a, 0xb5, 0x3a, 0xb7, 0x8a, 0xb5, 0x3a, 0xb7, 0x8a, - 0xb5, 0x3a, 0xb8, 0x8b, 0xb8, 0x3a, 0xb8, 0x8b, 0xb8, 0x3a, 0xb8, 0x8b, - 0xb8, 0x3a, 0xb9, 0x8b, 0xb8, 0x3a, 0xb9, 0x8b, 0xb8, 0x3a, 0xb9, 0x8b, - 0xb8, 0x3a, 0xba, 0x8b, 0xb8, 0x3a, 0xba, 0x8b, 0xb8, 0x3a, 0xba, 0x8b, - 0xb8, 0x3a, 0xbb, 0x8b, 0xb8, 0x3a, 0xbb, 0x8b, 0xb8, 0x3a, 0xbb, 0x8c, - 0xbb, 0x3a, 0xbc, 0x8c, 0xbc, 0x3a, 0xbc, 0x8c, 0xbb, 0x3a, 0xbc, 0x8c, - 0xbc, 0x3a, 0xbd, 0x8c, 0xbb, 0x3a, 0xbd, 0x8c, 0xbc, 0x3a, 0xbd, 0x8c, - 0xbb, 0x3a, 0xbe, 0x8c, 0xbc, 0x3a, 0xbe, 0x8c, 0xbb, 0x3a, 0xbe, 0x8c, - 0xbc, 0x3a, 0xbf, 0x8d, 0xbf, 0x3a, 0xbf, 0x8d, 0xbe, 0x3a, 0xbf, 0x8d, - 0xbf, 0x3a, 0xc0, 0x8d, 0xbe, 0x3a, 0xc0, 0x8d, 0xbf, 0x3a, 0xc0, 0x8d, - 0xbe, 0x3a, 0xc1, 0x8d, 0xbf, 0x3a, 0xc1, 0x8d, 0xbe, 0x3a, 0xc1, 0x8d, - 0xbf, 0x3a, 0xc1, 0x8e, 0xc1, 0x3a, 0xc2, 0x8e, 0xc1, 0x3a, 0xc2, 0x8e, - 0xc1, 0x3a, 0xc2, 0x8e, 0xc1, 0x3a, 0xc3, 0x8e, 0xc1, 0x3a, 0xc3, 0x8e, - 0xc1, 0x3a, 0xc3, 0x8e, 0xc1, 0x3a, 0xc4, 0x8e, 0xc1, 0x3a, 0xc4, 0x8e, - 0xc1, 0x3a, 0xc4, 0x8f, 0xc4, 0x3a, 0xc5, 0x8f, 0xc5, 0x3a, 0xc5, 0x8f, - 0xc4, 0x3a, 0xc5, 0x8f, 0xc5, 0x3a, 0xc6, 0x8f, 0xc4, 0x3a, 0xc6, 0x8f, - 0xc5, 0x3a, 0xc6, 0x8f, 0xc4, 0x3a, 0xc6, 0x8f, 0xc5, 0x3a, 0xc7, 0x8f, - 0xc4, 0x3a, 0xc7, 0x8f, 0xc5, 0x3a, 0xc7, 0x90, 0xc7, 0x3a, 0xc8, 0x8f, - 0xc5, 0x3a, 0xc8, 0x90, 0xc7, 0x3a, 0xc8, 0x90, 0xc7, 0x3a, 0xc9, 0x90, - 0xc7, 0x3a, 0xc9, 0x90, 0xc7, 0x3a, 0xc9, 0x90, 0xc7, 0x3a, 0xc9, 0x90, - 0xc7, 0x3a, 0xca, 0x90, 0xc7, 0x3a, 0xca, 0x90, 0xc7, 0x3a, 0xca, 0x90, - 0xc7, 0x3a, 0xcb, 0x91, 0xca, 0x3a, 0xcb, 0x91, 0xca, 0x3a, 0xcb, 0x91, - 0xca, 0x3a, 0xcc, 0x91, 0xca, 0x3a, 0xcc, 0x91, 0xca, 0x3a, 0xcc, 0x91, - 0xca, 0x3a, 0xcc, 0x91, 0xca, 0x3a, 0xcd, 0x91, 0xca, 0x3a, 0xcd, 0x91, - 0xca, 0x3a, 0xcd, 0x92, 0xcd, 0x3a, 0xce, 0x92, 0xcd, 0x3a, 0xce, 0x92, - 0xcd, 0x3a, 0xce, 0x92, 0xcd, 0x3a, 0xce, 0x92, 0xcd, 0x3a, 0xcf, 0x92, - 0xcd, 0x3a, 0xcf, 0x92, 0xcd, 0x3a, 0xcf, 0x92, 0xcd, 0x3a, 0xd0, 0x92, - 0xcd, 0x3a, 0xd0, 0x92, 0xcd, 0x3a, 0xd0, 0x93, 0xd0, 0x3a, 0xd0, 0x93, - 0xcf, 0x3a, 0xd1, 0x93, 0xd0, 0x3a, 0xd1, 0x93, 0xcf, 0x3a, 0xd1, 0x93, - 0xd0, 0x3a, 0xd2, 0x93, 0xcf, 0x3a, 0xd2, 0x93, 0xd0, 0x3a, 0xd2, 0x93, - 0xcf, 0x3a, 0xd2, 0x93, 0xd0, 0x3a, 0xd3, 0x94, 0xd2, 0x3a, 0xd3, 0x94, - 0xd2, 0x3a, 0xd3, 0x94, 0xd2, 0x3a, 0xd4, 0x94, 0xd2, 0x3a, 0xd4, 0x94, - 0xd2, 0x3a, 0xd4, 0x94, 0xd2, 0x3a, 0xd4, 0x94, 0xd2, 0x3a, 0xd5, 0x94, - 0xd2, 0x3a, 0xd5, 0x94, 0xd2, 0x3a, 0xd5, 0x94, 0xd2, 0x3a, 0xd6, 0x94, - 0xd2, 0x3a, 0xd6, 0x94, 0xd2, 0x3a, 0xd6, 0x94, 0xd5, 0x3a, 0xd6, 0x94, - 0xd5, 0x3a, 0xd7, 0x94, 0xd5, 0x3a, 0xd7, 0x94, 0xd5, 0x3a, 0xd7, 0x94, - 0xd5, 0x3a, 0xd7, 0x94, 0xd5, 0x3a, 0xd8, 0x94, 0xd5, 0x3a, 0xd8, 0x94, - 0xd5, 0x3a, 0xd8, 0x94, 0xd5, 0x3a, 0xd9, 0x95, 0xd7, 0x3a, 0xd9, 0x95, - 0xd7, 0x3a, 0xd9, 0x95, 0xd7, 0x3a, 0xd9, 0x95, 0xd7, 0x3a, 0xda, 0x95, - 0xd7, 0x3a, 0xda, 0x95, 0xd7, 0x3a, 0xda, 0x95, 0xd7, 0x3a, 0xda, 0x95, - 0xd7, 0x3a, 0xdb, 0x95, 0xd7, 0x3a, 0xdb, 0x96, 0xda, 0x3a, 0xdb, 0x96, - 0xda, 0x3a, 0xdb, 0x96, 0xda, 0x3a, 0xdc, 0x96, 0xda, 0x3a, 0xdc, 0x96, - 0xda, 0x3a, 0xdc, 0x96, 0xda, 0x3a, 0xdd, 0x96, 0xda, 0x3a, 0xdd, 0x96, - 0xda, 0x3a, 0xdd, 0x96, 0xda, 0x3a, 0xdd, 0x96, 0xda, 0x3a, 0xde, 0x97, - 0xdd, 0x3a, 0xde, 0x96, 0xda, 0x3a, 0xde, 0x97, 0xdd, 0x3a, 0xde, 0x97, - 0xdc, 0x3a, 0xdf, 0x97, 0xdd, 0x3a, 0xdf, 0x97, 0xdc, 0x3a, 0xdf, 0x97, - 0xdd, 0x3a, 0xdf, 0x97, 0xdc, 0x3a, 0xe0, 0x97, 0xdd, 0x3a, 0xe0, 0x98, - 0xdf, 0x3a, 0xe0, 0x97, 0xdd, 0x3a, 0xe1, 0x98, 0xdf, 0x3a, 0xe1, 0x98, - 0xdf, 0x3a, 0xe1, 0x98, 0xdf, 0x3a, 0xe1, 0x98, 0xdf, 0x3a, 0xe2, 0x98, - 0xdf, 0x3a, 0xe2, 0x98, 0xdf, 0x3a, 0xe2, 0x98, 0xdf, 0x3a, 0xe2, 0x99, - 0xe1, 0x3a, 0xe3, 0x99, 0xe2, 0x3a, 0xe3, 0x99, 0xe1, 0x3a, 0xe3, 0x99, - 0xe2, 0x3a, 0xe3, 0x99, 0xe1, 0x3a, 0xe4, 0x99, 0xe2, 0x3a, 0xe4, 0x99, - 0xe1, 0x3a, 0xe4, 0x99, 0xe2, 0x3a, 0xe4, 0x99, 0xe1, 0x3a, 0xe5, 0x99, - 0xe2, 0x3a, 0xe5, 0x99, 0xe1, 0x3a, 0xe5, 0x99, 0xe2, 0x3a, 0xe5, 0x9a, - 0xe4, 0x3a, 0xe6, 0x9a, 0xe4, 0x3a, 0xe6, 0x9a, 0xe4, 0x3a, 0xe6, 0x9a, - 0xe4, 0x3a, 0xe6, 0x9a, 0xe4, 0x3a, 0xe7, 0x9a, 0xe4, 0x3a, 0xe7, 0x9a, - 0xe4, 0x3a, 0xe7, 0x9a, 0xe4, 0x3a, 0xe7, 0x9a, 0xe4, 0x3a, 0xe8, 0x9a, - 0xe6, 0x3a, 0xe8, 0x9a, 0xe4, 0x3a, 0xe8, 0x9a, 0xe6, 0x3a, 0xe8, 0x9a, - 0xe6, 0x3a, 0xe9, 0x9a, 0xe6, 0x3a, 0xe9, 0x9a, 0xe6, 0x3a, 0xe9, 0x9a, - 0xe6, 0x3a, 0xe9, 0x9a, 0xe6, 0x3a, 0xea, 0x9a, 0xe6, 0x3a, 0xea, 0x9b, - 0xe8, 0x3a, 0xea, 0x9b, 0xe9, 0x3a, 0xea, 0x9b, 0xe8, 0x3a, 0xeb, 0x9b, - 0xe9, 0x3a, 0xeb, 0x9b, 0xe8, 0x3a, 0xeb, 0x9b, 0xe9, 0x3a, 0xeb, 0x9b, - 0xe8, 0x3a, 0xec, 0x9b, 0xe9, 0x3a, 0xec, 0x9b, 0xe8, 0x3a, 0xec, 0x9b, - 0xe9, 0x3a, 0xec, 0x9c, 0xeb, 0x3a, 0xec, 0x9b, 0xe9, 0x3a, 0xed, 0x9c, - 0xeb, 0x3a, 0xed, 0x9c, 0xeb, 0x3a, 0xed, 0x9c, 0xeb, 0x3a, 0xed, 0x9c, - 0xeb, 0x3a, 0xee, 0x9c, 0xeb, 0x3a, 0xee, 0x9c, 0xeb, 0x3a, 0xee, 0x9c, - 0xeb, 0x3a, 0xee, 0x9c, 0xeb, 0x3a, 0xef, 0x9c, 0xeb, 0x3a, 0xef, 0x9d, - 0xed, 0x3a, 0xef, 0x9d, 0xed, 0x3a, 0xef, 0x9d, 0xed, 0x3a, 0xf0, 0x9d, - 0xed, 0x3a, 0xf0, 0x9d, 0xed, 0x3a, 0xf0, 0x9d, 0xed, 0x3a, 0xf0, 0x9d, - 0xed, 0x3a, 0xf1, 0x9d, 0xed, 0x3a, 0xf1, 0x9d, 0xed, 0x3a, 0xf1, 0x9d, - 0xed, 0x3a, 0xf1, 0x9e, 0xef, 0x3a, 0xf2, 0x9d, 0xed, 0x3a, 0xf2, 0x9e, - 0xef, 0x3a, 0xf2, 0x9e, 0xef, 0x3a, 0xf2, 0x9e, 0xef, 0x3a, 0xf2, 0x9e, - 0xef, 0x3a, 0xf3, 0x9e, 0xef, 0x3a, 0xf3, 0x9e, 0xef, 0x3a, 0xf3, 0x9e, - 0xef, 0x3a, 0xf3, 0x9f, 0xf2, 0x3a, 0xf4, 0x9e, 0xef, 0x3a, 0xf4, 0x9f, - 0xf2, 0x3a, 0xf4, 0x9f, 0xf1, 0x3a, 0xf4, 0x9f, 0xf2, 0x3a, 0xf5, 0x9f, - 0xf1, 0x3a, 0xf5, 0x9f, 0xf2, 0x3a, 0xf5, 0x9f, 0xf1, 0x3a, 0xf5, 0x9f, - 0xf2, 0x3a, 0xf5, 0x9f, 0xf4, 0x3a, 0xf6, 0x9f, 0xf4, 0x3a, 0xf6, 0x9f, - 0xf4, 0x3a, 0xf6, 0x9f, 0xf4, 0x3a, 0xf6, 0x9f, 0xf4, 0x3a, 0xf7, 0x9f, - 0xf4, 0x3a, 0xf7, 0x9f, 0xf4, 0x3a, 0xf7, 0x9f, 0xf4, 0x3a, 0xf7, 0x9f, - 0xf4, 0x3a, 0xf8, 0x9f, 0xf4, 0x3a, 0xf8, 0xa0, 0xf6, 0x3a, 0xf8, 0x9f, - 0xf4, 0x3a, 0xf8, 0xa0, 0xf6, 0x3a, 0xf8, 0xa0, 0xf6, 0x3a, 0xf9, 0xa0, - 0xf6, 0x3a, 0xf9, 0xa0, 0xf6, 0x3a, 0xf9, 0xa0, 0xf6, 0x3a, 0xf9, 0xa0, - 0xf6, 0x3a, 0xfa, 0xa0, 0xf6, 0x3a, 0xfa, 0xa1, 0xf8, 0x3a, 0xfa, 0xa0, - 0xf6, 0x3a, 0xfa, 0xa1, 0xf8, 0x3a, 0xfa, 0xa0, 0xf6, 0x3a, 0xfb, 0xa1, - 0xf8, 0x3a, 0xfb, 0xa1, 0xf8, 0x3a, 0xfb, 0xa1, 0xf8, 0x3a, 0xfb, 0xa1, - 0xf8, 0x3a, 0xfc, 0xa1, 0xf8, 0x3a, 0xfc, 0xa1, 0xf8, 0x3a, 0xfc, 0xa1, - 0xf8, 0x3a, 0xfc, 0xa2, 0xfa, 0x3a, 0xfc, 0xa2, 0xfa, 0x3a, 0xfd, 0xa2, - 0xfa, 0x3a, 0xfd, 0xa2, 0xfa, 0x3a, 0xfd, 0xa2, 0xfa, 0x3a, 0xfd, 0xa2, - 0xfa, 0x3a, 0xfe, 0xa2, 0xfa, 0x3a, 0xfe, 0xa2, 0xfa, 0x3a, 0xfe, 0xa2, - 0xfa, 0x3a, 0xfe, 0xa2, 0xfa, 0x3a, 0xfe, 0xa2, 0xfa, 0x3a, 0xff, 0xa2, - 0xfa, 0x3a, 0xff, 0xa2, 0xfa, 0x3a, 0x03, 0x8f, 0x9a, 0x3b, 0x0a, 0x92, - 0x99, 0x3b, 0x0f, 0x8f, 0x9a, 0x3b, 0x14, 0x92, 0x99, 0x3b, 0x17, 0x8f, - 0x9a, 0x3b, 0x1b, 0x92, 0x99, 0x3b, 0x1e, 0x8f, 0x9a, 0x3b, 0x20, 0x92, - 0x99, 0x3b, 0x23, 0x8f, 0x9a, 0x3b, 0x25, 0x92, 0x99, 0x3b, 0x27, 0x8f, - 0x9a, 0x3b, 0x29, 0x92, 0x99, 0x3b, 0x2b, 0x8f, 0x9a, 0x3b, 0x2d, 0x92, - 0x99, 0x3b, 0x2f, 0x8f, 0x9a, 0x3b, 0x31, 0x92, 0x99, 0x3b, 0x32, 0x8f, - 0x9a, 0x3b, 0x34, 0x92, 0x99, 0x3b, 0x35, 0x8f, 0x9a, 0x3b, 0x37, 0x92, - 0x99, 0x3b, 0x38, 0x8f, 0x9a, 0x3b, 0x3a, 0x8d, 0x9a, 0x3b, 0x3b, 0x8f, - 0x9a, 0x3b, 0x3c, 0x8d, 0x9a, 0x3b, 0x3e, 0x8f, 0x9a, 0x3b, 0x3f, 0x8d, - 0x9a, 0x3b, 0x40, 0x8f, 0x9a, 0x3b, 0x42, 0x8d, 0x9a, 0x3b, 0x43, 0x8f, - 0x9a, 0x3b, 0x44, 0x8d, 0x9a, 0x3b, 0x45, 0x8f, 0x9a, 0x3b, 0x46, 0x8d, - 0x9a, 0x3b, 0x47, 0x8f, 0x9a, 0x3b, 0x48, 0x8d, 0x9a, 0x3b, 0x49, 0x8f, - 0x9a, 0x3b, 0x4a, 0x8d, 0x9a, 0x3b, 0x4b, 0x8f, 0x9a, 0x3b, 0x4c, 0x8d, - 0x9a, 0x3b, 0x4d, 0x8f, 0x9a, 0x3b, 0x4e, 0x8d, 0x9a, 0x3b, 0x4f, 0x8f, - 0x9a, 0x3b, 0x50, 0x8d, 0x9a, 0x3b, 0x51, 0x8f, 0x9a, 0x3b, 0x52, 0x8d, - 0x9a, 0x3b, 0x53, 0x8f, 0x9a, 0x3b, 0x54, 0x8d, 0x9a, 0x3b, 0x55, 0x8f, - 0x9a, 0x3b, 0x56, 0x8d, 0x9a, 0x3b, 0x57, 0x8f, 0x9a, 0x3b, 0x58, 0x8d, - 0x9a, 0x3b, 0x58, 0x8f, 0x9a, 0x3b, 0x59, 0x8d, 0x9a, 0x3b, 0x5a, 0x89, - 0x9a, 0x3b, 0x5b, 0x8d, 0x9a, 0x3b, 0x5c, 0x89, 0x9a, 0x3b, 0x5d, 0x8d, - 0x9a, 0x3b, 0x5d, 0x89, 0x9a, 0x3b, 0x5e, 0x8d, 0x9a, 0x3b, 0x5f, 0x89, - 0x9a, 0x3b, 0x60, 0x8d, 0x9a, 0x3b, 0x60, 0x89, 0x9a, 0x3b, 0x61, 0x8d, - 0x9a, 0x3b, 0x62, 0x89, 0x9a, 0x3b, 0x63, 0x8d, 0x9a, 0x3b, 0x63, 0x89, - 0x9a, 0x3b, 0x64, 0x8d, 0x9a, 0x3b, 0x65, 0x89, 0x9a, 0x3b, 0x66, 0x8d, - 0x9a, 0x3b, 0x66, 0x89, 0x9a, 0x3b, 0x67, 0x8d, 0x9a, 0x3b, 0x68, 0x89, - 0x9a, 0x3b, 0x68, 0x8d, 0x9a, 0x3b, 0x69, 0x89, 0x9a, 0x3b, 0x6a, 0x8d, - 0x9a, 0x3b, 0x6a, 0x89, 0x9a, 0x3b, 0x6b, 0x8d, 0x9a, 0x3b, 0x6c, 0x89, - 0x9a, 0x3b, 0x6c, 0x8d, 0x9a, 0x3b, 0x6d, 0x89, 0x9a, 0x3b, 0x6e, 0x8d, - 0x9a, 0x3b, 0x6e, 0x89, 0x9a, 0x3b, 0x6f, 0x8d, 0x9a, 0x3b, 0x70, 0x89, - 0x9a, 0x3b, 0x70, 0x8d, 0x9a, 0x3b, 0x71, 0x89, 0x9a, 0x3b, 0x72, 0x8d, - 0x9a, 0x3b, 0x72, 0x89, 0x9a, 0x3b, 0x73, 0x8d, 0x9a, 0x3b, 0x73, 0x89, - 0x9a, 0x3b, 0x74, 0x8d, 0x9a, 0x3b, 0x75, 0x89, 0x9a, 0x3b, 0x75, 0x86, - 0x9b, 0x3b, 0x76, 0x89, 0x9a, 0x3b, 0x76, 0x86, 0x9b, 0x3b, 0x77, 0x89, - 0x9a, 0x3b, 0x78, 0x86, 0x9b, 0x3b, 0x78, 0x89, 0x9a, 0x3b, 0x79, 0x86, - 0x9b, 0x3b, 0x79, 0x89, 0x9a, 0x3b, 0x7a, 0x86, 0x9b, 0x3b, 0x7a, 0x89, - 0x9a, 0x3b, 0x7b, 0x86, 0x9b, 0x3b, 0x7c, 0x89, 0x9a, 0x3b, 0x7c, 0x86, - 0x9b, 0x3b, 0x7d, 0x89, 0x9a, 0x3b, 0x7d, 0x86, 0x9b, 0x3b, 0x7e, 0x89, - 0x9a, 0x3b, 0x7e, 0x86, 0x9b, 0x3b, 0x7f, 0x89, 0x9a, 0x3b, 0x7f, 0x86, - 0x9b, 0x3b, 0x80, 0x89, 0x9a, 0x3b, 0x81, 0x86, 0x9b, 0x3b, 0x81, 0x89, - 0x9a, 0x3b, 0x82, 0x86, 0x9b, 0x3b, 0x82, 0x89, 0x9a, 0x3b, 0x83, 0x86, - 0x9b, 0x3b, 0x83, 0x89, 0x9a, 0x3b, 0x84, 0x86, 0x9b, 0x3b, 0x84, 0x89, - 0x9a, 0x3b, 0x85, 0x86, 0x9b, 0x3b, 0x85, 0x89, 0x9a, 0x3b, 0x86, 0x86, - 0x9b, 0x3b, 0x86, 0x89, 0x9a, 0x3b, 0x87, 0x86, 0x9b, 0x3b, 0x87, 0x89, - 0x9a, 0x3b, 0x88, 0x86, 0x9b, 0x3b, 0x88, 0x89, 0x9a, 0x3b, 0x89, 0x86, - 0x9b, 0x3b, 0x89, 0x89, 0x9a, 0x3b, 0x8a, 0x86, 0x9b, 0x3b, 0x8a, 0x89, - 0x9a, 0x3b, 0x8b, 0x86, 0x9b, 0x3b, 0x8b, 0x89, 0x9a, 0x3b, 0x8c, 0x86, - 0x9b, 0x3b, 0x8c, 0x89, 0x9a, 0x3b, 0x8d, 0x86, 0x9b, 0x3b, 0x8d, 0x89, - 0x9a, 0x3b, 0x8e, 0x86, 0x9b, 0x3b, 0x8e, 0x84, 0x9b, 0x3b, 0x8e, 0x86, - 0x9b, 0x3b, 0x8f, 0x84, 0x9b, 0x3b, 0x8f, 0x86, 0x9b, 0x3b, 0x90, 0x84, - 0x9b, 0x3b, 0x90, 0x86, 0x9b, 0x3b, 0x91, 0x84, 0x9b, 0x3b, 0x91, 0x86, - 0x9b, 0x3b, 0x92, 0x84, 0x9b, 0x3b, 0x92, 0x86, 0x9b, 0x3b, 0x93, 0x84, - 0x9b, 0x3b, 0x93, 0x86, 0x9b, 0x3b, 0x94, 0x84, 0x9b, 0x3b, 0x94, 0x86, - 0x9b, 0x3b, 0x94, 0x84, 0x9b, 0x3b, 0x95, 0x86, 0x9b, 0x3b, 0x95, 0x84, - 0x9b, 0x3b, 0x96, 0x86, 0x9b, 0x3b, 0x96, 0x84, 0x9b, 0x3b, 0x97, 0x86, - 0x9b, 0x3b, 0x97, 0x84, 0x9b, 0x3b, 0x98, 0x86, 0x9b, 0x3b, 0x98, 0x84, - 0x9b, 0x3b, 0x98, 0x86, 0x9b, 0x3b, 0x99, 0x84, 0x9b, 0x3b, 0x99, 0x86, - 0x9b, 0x3b, 0x9a, 0x84, 0x9b, 0x3b, 0x9a, 0x84, 0x9c, 0x3b, 0x9a, 0x84, - 0x9b, 0x3b, 0x9b, 0x84, 0x9c, 0x3b, 0x9b, 0x84, 0x9b, 0x3a, 0x9c, 0x84, - 0x9c, 0x3a, 0x9c, 0x84, 0x9c, 0x3a, 0x9d, 0x84, 0x9d, 0x3a, 0x9d, 0x84, - 0x9d, 0x3a, 0x9d, 0x84, 0x9d, 0x3a, 0x9e, 0x84, 0x9e, 0x3a, 0x9e, 0x84, - 0x9e, 0x3a, 0x9f, 0x84, 0x9f, 0x3a, 0x9f, 0x85, 0x9f, 0x3b, 0x9f, 0x85, - 0x9f, 0x3b, 0xa0, 0x85, 0xa0, 0x3b, 0xa0, 0x85, 0xa0, 0x3b, 0xa1, 0x85, - 0xa1, 0x3b, 0xa1, 0x85, 0xa1, 0x3b, 0xa1, 0x85, 0xa1, 0x3b, 0xa2, 0x85, - 0xa2, 0x3b, 0xa2, 0x85, 0xa2, 0x3b, 0xa3, 0x85, 0xa2, 0x3b, 0xa3, 0x85, - 0xa2, 0x3b, 0xa3, 0x86, 0xa3, 0x3b, 0xa4, 0x86, 0xa4, 0x3b, 0xa4, 0x86, - 0xa4, 0x3b, 0xa5, 0x86, 0xa5, 0x3b, 0xa5, 0x86, 0xa5, 0x3b, 0xa5, 0x86, - 0xa5, 0x3b, 0xa6, 0x86, 0xa6, 0x3b, 0xa6, 0x86, 0xa6, 0x3b, 0xa6, 0x86, - 0xa6, 0x3b, 0xa7, 0x86, 0xa6, 0x3b, 0xa7, 0x86, 0xa6, 0x3b, 0xa8, 0x86, - 0xa6, 0x3b, 0xa8, 0x87, 0xa8, 0x3b, 0xa8, 0x87, 0xa8, 0x3b, 0xa9, 0x87, - 0xa9, 0x3b, 0xa9, 0x87, 0xa9, 0x3b, 0xaa, 0x87, 0xaa, 0x3b, 0xaa, 0x87, - 0xa9, 0x3b, 0xaa, 0x87, 0xaa, 0x3b, 0xab, 0x87, 0xa9, 0x3b, 0xab, 0x87, - 0xaa, 0x3b, 0xab, 0x88, 0xab, 0x3b, 0xac, 0x88, 0xac, 0x3b, 0xac, 0x88, - 0xac, 0x3b, 0xac, 0x88, 0xac, 0x3b, 0xad, 0x88, 0xad, 0x3b, 0xad, 0x88, - 0xad, 0x3b, 0xae, 0x88, 0xad, 0x3b, 0xae, 0x88, 0xad, 0x3b, 0xae, 0x88, - 0xad, 0x3b, 0xaf, 0x88, 0xad, 0x3b, 0xaf, 0x89, 0xaf, 0x3b, 0xaf, 0x89, - 0xaf, 0x3b, 0xb0, 0x89, 0xb0, 0x3b, 0xb0, 0x89, 0xb0, 0x3b, 0xb0, 0x89, - 0xb0, 0x3b, 0xb1, 0x89, 0xb0, 0x3b, 0xb1, 0x89, 0xb0, 0x3b, 0xb2, 0x89, - 0xb0, 0x3b, 0xb2, 0x89, 0xb0, 0x3b, 0xb2, 0x89, 0xb2, 0x3b, 0xb3, 0x89, - 0xb2, 0x3b, 0xb3, 0x89, 0xb2, 0x3b, 0xb3, 0x89, 0xb2, 0x3b, 0xb4, 0x89, - 0xb2, 0x3b, 0xb4, 0x8a, 0xb3, 0x3b, 0xb4, 0x8a, 0xb4, 0x3b, 0xb5, 0x8a, - 0xb3, 0x3b, 0xb5, 0x8a, 0xb4, 0x3b, 0xb5, 0x8a, 0xb3, 0x3b, 0xb6, 0x8a, - 0xb4, 0x3b, 0xb6, 0x8b, 0xb6, 0x3b, 0xb6, 0x8b, 0xb6, 0x3b, 0xb7, 0x8b, - 0xb7, 0x3b, 0xb7, 0x8b, 0xb7, 0x3b, 0xb7, 0x8b, 0xb7, 0x3b, 0xb8, 0x8b, - 0xb7, 0x3b, 0xb8, 0x8b, 0xb7, 0x3b, 0xb8, 0x8b, 0xb7, 0x3b, 0xb9, 0x8b, - 0xb7, 0x3b, 0xb9, 0x8b, 0xb7, 0x3b, 0xb9, 0x8c, 0xb9, 0x3b, 0xba, 0x8c, - 0xba, 0x3b, 0xba, 0x8c, 0xba, 0x3b, 0xba, 0x8c, 0xba, 0x3b, 0xbb, 0x8c, - 0xba, 0x3b, 0xbb, 0x8c, 0xba, 0x3b, 0xbb, 0x8c, 0xba, 0x3b, 0xbc, 0x8c, - 0xba, 0x3b, 0xbc, 0x8c, 0xba, 0x3b, 0xbc, 0x8c, 0xba, 0x3b, 0xbd, 0x8c, - 0xba, 0x3b, 0xbd, 0x8d, 0xbd, 0x3b, 0xbd, 0x8d, 0xbd, 0x3b, 0xbe, 0x8d, - 0xbd, 0x3b, 0xbe, 0x8d, 0xbd, 0x3b, 0xbe, 0x8d, 0xbd, 0x3b, 0xbf, 0x8d, - 0xbd, 0x3b, 0xbf, 0x8d, 0xbd, 0x3b, 0xbf, 0x8d, 0xbd, 0x3b, 0xc0, 0x8d, - 0xbd, 0x3b, 0xc0, 0x8e, 0xc0, 0x3b, 0xc0, 0x8e, 0xc0, 0x3b, 0xc1, 0x8e, - 0xc0, 0x3b, 0xc1, 0x8e, 0xc0, 0x3b, 0xc1, 0x8e, 0xc0, 0x3b, 0xc1, 0x8e, - 0xc0, 0x3b, 0xc2, 0x8e, 0xc0, 0x3b, 0xc2, 0x8e, 0xc0, 0x3b, 0xc2, 0x8e, - 0xc0, 0x3b, 0xc3, 0x8e, 0xc0, 0x3b, 0xc3, 0x8e, 0xc3, 0x3b, 0xc3, 0x8e, - 0xc3, 0x3b, 0xc4, 0x8e, 0xc3, 0x3b, 0xc4, 0x8e, 0xc3, 0x3b, 0xc4, 0x8e, - 0xc3, 0x3b, 0xc5, 0x8e, 0xc3, 0x3b, 0xc5, 0x8e, 0xc3, 0x3b, 0xc5, 0x8e, - 0xc3, 0x3b, 0xc6, 0x8e, 0xc3, 0x3b, 0xc6, 0x8f, 0xc6, 0x3b, 0xc6, 0x8f, - 0xc6, 0x3b, 0xc6, 0x8f, 0xc6, 0x3b, 0xc7, 0x8f, 0xc6, 0x3b, 0xc7, 0x8f, - 0xc6, 0x3b, 0xc7, 0x8f, 0xc6, 0x3b, 0xc8, 0x8f, 0xc6, 0x3b, 0xc8, 0x8f, - 0xc6, 0x3b, 0xc8, 0x8f, 0xc6, 0x3b, 0xc9, 0x90, 0xc9, 0x3b, 0xc9, 0x90, - 0xc9, 0x3b, 0xc9, 0x90, 0xc9, 0x3b, 0xc9, 0x90, 0xc9, 0x3b, 0xca, 0x90, - 0xc9, 0x3b, 0xca, 0x90, 0xc9, 0x3b, 0xca, 0x90, 0xc9, 0x3b, 0xcb, 0x90, - 0xc9, 0x3b, 0xcb, 0x90, 0xc9, 0x3b, 0xcb, 0x90, 0xc9, 0x3b, 0xcc, 0x90, - 0xc9, 0x3b, 0xcc, 0x90, 0xc9, 0x3b, 0xcc, 0x91, 0xcc, 0x3b, 0xcc, 0x91, - 0xcb, 0x3b, 0xcd, 0x91, 0xcc, 0x3b, 0xcd, 0x91, 0xcb, 0x3b, 0xcd, 0x91, - 0xcc, 0x3b, 0xce, 0x91, 0xcb, 0x3b, 0xce, 0x91, 0xcc, 0x3b, 0xce, 0x91, - 0xcb, 0x3b, 0xce, 0x91, 0xcc, 0x3b, 0xcf, 0x92, 0xce, 0x3b, 0xcf, 0x92, - 0xce, 0x3b, 0xcf, 0x92, 0xce, 0x3b, 0xd0, 0x92, 0xce, 0x3b, 0xd0, 0x92, - 0xce, 0x3b, 0xd0, 0x92, 0xce, 0x3b, 0xd0, 0x92, 0xce, 0x3b, 0xd1, 0x92, - 0xce, 0x3b, 0xd1, 0x92, 0xce, 0x3b, 0xd1, 0x92, 0xce, 0x3b, 0xd2, 0x93, - 0xd1, 0x3b, 0xd2, 0x93, 0xd1, 0x3b, 0xd2, 0x93, 0xd1, 0x3b, 0xd2, 0x93, - 0xd1, 0x3b, 0xd3, 0x93, 0xd1, 0x3b, 0xd3, 0x93, 0xd1, 0x3b, 0xd3, 0x93, - 0xd1, 0x3b, 0xd4, 0x93, 0xd1, 0x3b, 0xd4, 0x93, 0xd1, 0x3b, 0xd4, 0x94, - 0xd4, 0x3b, 0xd4, 0x93, 0xd1, 0x3b, 0xd5, 0x94, 0xd4, 0x3b, 0xd5, 0x94, - 0xd3, 0x3b, 0xd5, 0x94, 0xd4, 0x3b, 0xd6, 0x94, 0xd3, 0x3b, 0xd6, 0x94, - 0xd4, 0x3b, 0xd6, 0x94, 0xd3, 0x3b, 0xd6, 0x94, 0xd4, 0x3b, 0xd7, 0x94, - 0xd3, 0x3b, 0xd7, 0x94, 0xd4, 0x3b, 0xd7, 0x95, 0xd6, 0x3b, 0xd7, 0x95, - 0xd6, 0x3b, 0xd8, 0x95, 0xd6, 0x3b, 0xd8, 0x95, 0xd6, 0x3b, 0xd8, 0x95, - 0xd6, 0x3b, 0xd9, 0x95, 0xd6, 0x3b, 0xd9, 0x95, 0xd6, 0x3b, 0xd9, 0x95, - 0xd6, 0x3b, 0xd9, 0x95, 0xd6, 0x3b, 0xda, 0x95, 0xd6, 0x3b, 0xda, 0x96, - 0xd9, 0x3b, 0xda, 0x96, 0xd9, 0x3b, 0xda, 0x96, 0xd9, 0x3b, 0xdb, 0x96, - 0xd9, 0x3b, 0xdb, 0x96, 0xd9, 0x3b, 0xdb, 0x96, 0xd9, 0x3b, 0xdb, 0x96, - 0xd9, 0x3b, 0xdc, 0x96, 0xd9, 0x3b, 0xdc, 0x96, 0xd9, 0x3b, 0xdc, 0x97, - 0xdb, 0x3b, 0xdd, 0x97, 0xdb, 0x3b, 0xdd, 0x97, 0xdb, 0x3b, 0xdd, 0x97, - 0xdb, 0x3b, 0xdd, 0x97, 0xdb, 0x3b, 0xde, 0x97, 0xdb, 0x3b, 0xde, 0x97, - 0xdb, 0x3b, 0xde, 0x97, 0xdb, 0x3b, 0xde, 0x97, 0xdb, 0x3b, 0xdf, 0x98, - 0xde, 0x3b, 0xdf, 0x98, 0xde, 0x3b, 0xdf, 0x98, 0xde, 0x3b, 0xdf, 0x98, - 0xde, 0x3b, 0xe0, 0x98, 0xde, 0x3b, 0xe0, 0x98, 0xde, 0x3b, 0xe0, 0x98, - 0xde, 0x3b, 0xe1, 0x98, 0xde, 0x3b, 0xe1, 0x98, 0xde, 0x3b, 0xe1, 0x98, - 0xde, 0x3b, 0xe1, 0x98, 0xe0, 0x3b, 0xe2, 0x98, 0xde, 0x3b, 0xe2, 0x98, - 0xe0, 0x3b, 0xe2, 0x98, 0xe0, 0x3b, 0xe2, 0x98, 0xe0, 0x3b, 0xe3, 0x98, - 0xe0, 0x3b, 0xe3, 0x98, 0xe0, 0x3b, 0xe3, 0x98, 0xe0, 0x3b, 0xe3, 0x98, - 0xe0, 0x3b, 0xe4, 0x99, 0xe3, 0x3b, 0xe4, 0x98, 0xe0, 0x3b, 0xe4, 0x99, - 0xe3, 0x3b, 0xe4, 0x99, 0xe2, 0x3b, 0xe5, 0x99, 0xe3, 0x3b, 0xe5, 0x99, - 0xe2, 0x3b, 0xe5, 0x99, 0xe3, 0x3b, 0xe5, 0x99, 0xe2, 0x3b, 0xe6, 0x99, - 0xe3, 0x3b, 0xe6, 0x99, 0xe2, 0x3b, 0xe6, 0x99, 0xe3, 0x3b, 0xe6, 0x9a, - 0xe5, 0x3b, 0xe7, 0x9a, 0xe5, 0x3b, 0xe7, 0x9a, 0xe5, 0x3b, 0xe7, 0x9a, - 0xe5, 0x3b, 0xe7, 0x9a, 0xe5, 0x3b, 0xe8, 0x9a, 0xe5, 0x3b, 0xe8, 0x9a, - 0xe5, 0x3b, 0xe8, 0x9a, 0xe5, 0x3b, 0xe8, 0x9a, 0xe5, 0x3b, 0xe9, 0x9a, - 0xe5, 0x3b, 0xe9, 0x9b, 0xe7, 0x3b, 0xe9, 0x9a, 0xe5, 0x3b, 0xe9, 0x9b, - 0xe7, 0x3b, 0xea, 0x9b, 0xe7, 0x3b, 0xea, 0x9b, 0xe7, 0x3b, 0xea, 0x9b, - 0xe7, 0x3b, 0xea, 0x9b, 0xe7, 0x3b, 0xeb, 0x9b, 0xe7, 0x3b, 0xeb, 0x9b, - 0xe7, 0x3b, 0xeb, 0x9c, 0xea, 0x3b, 0xeb, 0x9c, 0xea, 0x3b, 0xec, 0x9c, - 0xea, 0x3b, 0xec, 0x9c, 0xea, 0x3b, 0xec, 0x9c, 0xea, 0x3b, 0xec, 0x9c, - 0xea, 0x3b, 0xec, 0x9c, 0xea, 0x3b, 0xed, 0x9c, 0xea, 0x3b, 0xed, 0x9c, - 0xea, 0x3b, 0xed, 0x9c, 0xea, 0x3b, 0xed, 0x9d, 0xec, 0x3b, 0xee, 0x9c, - 0xea, 0x3b, 0xee, 0x9d, 0xec, 0x3b, 0xee, 0x9d, 0xec, 0x3b, 0xee, 0x9d, - 0xec, 0x3b, 0xef, 0x9d, 0xec, 0x3b, 0xef, 0x9d, 0xec, 0x3b, 0xef, 0x9d, - 0xec, 0x3b, 0xef, 0x9d, 0xec, 0x3b, 0xf0, 0x9d, 0xec, 0x3b, 0xf0, 0x9d, - 0xec, 0x3b, 0xf0, 0x9d, 0xee, 0x3b, 0xf0, 0x9d, 0xee, 0x3b, 0xf1, 0x9d, - 0xee, 0x3b, 0xf1, 0x9d, 0xee, 0x3b, 0xf1, 0x9d, 0xee, 0x3b, 0xf1, 0x9d, - 0xee, 0x3b, 0xf2, 0x9d, 0xee, 0x3b, 0xf2, 0x9d, 0xee, 0x3b, 0xf2, 0x9d, - 0xee, 0x3b, 0xf2, 0x9e, 0xf0, 0x3b, 0xf2, 0x9e, 0xf1, 0x3b, 0xf3, 0x9e, - 0xf0, 0x3b, 0xf3, 0x9e, 0xf1, 0x3b, 0xf3, 0x9e, 0xf0, 0x3b, 0xf3, 0x9e, - 0xf1, 0x3b, 0xf4, 0x9e, 0xf0, 0x3b, 0xf4, 0x9e, 0xf1, 0x3b, 0xf4, 0x9e, - 0xf0, 0x3b, 0xf4, 0x9e, 0xf1, 0x3b, 0xf5, 0x9f, 0xf3, 0x3b, 0xf5, 0x9e, - 0xf1, 0x3b, 0xf5, 0x9f, 0xf3, 0x3b, 0xf5, 0x9f, 0xf2, 0x3b, 0xf5, 0x9f, - 0xf3, 0x3b, 0xf6, 0x9f, 0xf2, 0x3b, 0xf6, 0x9f, 0xf3, 0x3b, 0xf6, 0x9f, - 0xf2, 0x3b, 0xf6, 0x9f, 0xf3, 0x3b, 0xf7, 0xa0, 0xf5, 0x3b, 0xf7, 0x9f, - 0xf3, 0x3b, 0xf7, 0xa0, 0xf5, 0x3b, 0xf7, 0xa0, 0xf5, 0x3b, 0xf8, 0xa0, - 0xf5, 0x3b, 0xf8, 0xa0, 0xf5, 0x3b, 0xf8, 0xa0, 0xf5, 0x3b, 0xf8, 0xa0, - 0xf5, 0x3b, 0xf8, 0xa0, 0xf5, 0x3b, 0xf9, 0xa1, 0xf7, 0x3b, 0xf9, 0xa1, - 0xf7, 0x3b, 0xf9, 0xa1, 0xf7, 0x3b, 0xf9, 0xa1, 0xf7, 0x3b, 0xfa, 0xa1, - 0xf7, 0x3b, 0xfa, 0xa1, 0xf7, 0x3b, 0xfa, 0xa1, 0xf7, 0x3b, 0xfa, 0xa1, - 0xf7, 0x3b, 0xfa, 0xa1, 0xf7, 0x3b, 0xfb, 0xa1, 0xf7, 0x3b, 0xfb, 0xa1, - 0xf9, 0x3b, 0xfb, 0xa1, 0xf7, 0x3b, 0xfb, 0xa1, 0xf9, 0x3b, 0xfc, 0xa1, - 0xf7, 0x3b, 0xfc, 0xa1, 0xf9, 0x3b, 0xfc, 0xa1, 0xf9, 0x3b, 0xfc, 0xa1, - 0xf9, 0x3b, 0xfc, 0xa1, 0xf9, 0x3b, 0xfd, 0xa1, 0xf9, 0x3b, 0xfd, 0xa1, - 0xf9, 0x3b, 0xfd, 0xa1, 0xf9, 0x3b, 0xfd, 0xa2, 0xfb, 0x3b, 0xfe, 0xa1, - 0xf9, 0x3b, 0xfe, 0xa2, 0xfb, 0x3b, 0xfe, 0xa2, 0xfb, 0x3b, 0xfe, 0xa2, - 0xfb, 0x3b, 0xfe, 0xa2, 0xfb, 0x3b, 0xff, 0xa2, 0xfb, 0x3b, 0xff, 0xa2, - 0xfb, 0x3b, 0x03, 0x90, 0x9a, 0x3b, 0x0a, 0x93, 0x99, 0x3b, 0x0f, 0x90, - 0x9a, 0x3b, 0x14, 0x93, 0x99, 0x3b, 0x17, 0x90, 0x9a, 0x3b, 0x1b, 0x8c, - 0x9a, 0x3b, 0x1e, 0x90, 0x9a, 0x3b, 0x20, 0x8c, 0x9a, 0x3b, 0x23, 0x90, - 0x9a, 0x3b, 0x25, 0x8c, 0x9a, 0x3b, 0x27, 0x90, 0x9a, 0x3b, 0x29, 0x8c, - 0x9a, 0x3b, 0x2b, 0x90, 0x9a, 0x3b, 0x2d, 0x8c, 0x9a, 0x3b, 0x2f, 0x90, - 0x9a, 0x3b, 0x31, 0x8c, 0x9a, 0x3b, 0x32, 0x90, 0x9a, 0x3b, 0x34, 0x8c, - 0x9a, 0x3b, 0x35, 0x90, 0x9a, 0x3b, 0x37, 0x8c, 0x9a, 0x3b, 0x38, 0x90, - 0x9a, 0x3b, 0x3a, 0x8c, 0x9a, 0x3b, 0x3b, 0x90, 0x9a, 0x3b, 0x3c, 0x8c, - 0x9a, 0x3b, 0x3e, 0x90, 0x9a, 0x3b, 0x3f, 0x8c, 0x9a, 0x3b, 0x40, 0x90, - 0x9a, 0x3b, 0x42, 0x8c, 0x9a, 0x3b, 0x43, 0x90, 0x9a, 0x3b, 0x44, 0x8c, - 0x9a, 0x3b, 0x45, 0x90, 0x9a, 0x3b, 0x46, 0x8c, 0x9a, 0x3b, 0x47, 0x90, - 0x9a, 0x3b, 0x48, 0x8c, 0x9a, 0x3b, 0x49, 0x90, 0x9a, 0x3b, 0x4a, 0x8c, - 0x9a, 0x3b, 0x4b, 0x90, 0x9a, 0x3b, 0x4c, 0x8c, 0x9a, 0x3b, 0x4d, 0x90, - 0x9a, 0x3b, 0x4e, 0x8c, 0x9a, 0x3b, 0x4f, 0x90, 0x9a, 0x3b, 0x50, 0x8c, - 0x9a, 0x3b, 0x51, 0x90, 0x9a, 0x3b, 0x52, 0x8c, 0x9a, 0x3b, 0x53, 0x90, - 0x9a, 0x3b, 0x54, 0x8c, 0x9a, 0x3b, 0x55, 0x89, 0x9a, 0x3b, 0x56, 0x8c, - 0x9a, 0x3b, 0x57, 0x89, 0x9a, 0x3b, 0x58, 0x8c, 0x9a, 0x3b, 0x58, 0x89, - 0x9a, 0x3b, 0x59, 0x8c, 0x9a, 0x3b, 0x5a, 0x89, 0x9a, 0x3b, 0x5b, 0x8c, - 0x9a, 0x3b, 0x5c, 0x89, 0x9a, 0x3b, 0x5d, 0x8c, 0x9a, 0x3b, 0x5d, 0x89, - 0x9a, 0x3b, 0x5e, 0x8c, 0x9a, 0x3b, 0x5f, 0x89, 0x9a, 0x3b, 0x60, 0x8c, - 0x9a, 0x3b, 0x60, 0x89, 0x9a, 0x3b, 0x61, 0x8c, 0x9a, 0x3b, 0x62, 0x89, - 0x9a, 0x3b, 0x63, 0x8c, 0x9a, 0x3b, 0x63, 0x89, 0x9a, 0x3b, 0x64, 0x8c, - 0x9a, 0x3b, 0x65, 0x89, 0x9a, 0x3b, 0x66, 0x8c, 0x9a, 0x3b, 0x66, 0x89, - 0x9a, 0x3b, 0x67, 0x8c, 0x9a, 0x3b, 0x68, 0x89, 0x9a, 0x3b, 0x68, 0x8c, - 0x9a, 0x3b, 0x69, 0x89, 0x9a, 0x3b, 0x6a, 0x8c, 0x9a, 0x3b, 0x6a, 0x89, - 0x9a, 0x3b, 0x6b, 0x8c, 0x9a, 0x3b, 0x6c, 0x89, 0x9a, 0x3b, 0x6c, 0x8c, - 0x9a, 0x3b, 0x6d, 0x89, 0x9a, 0x3b, 0x6e, 0x8c, 0x9a, 0x3b, 0x6e, 0x89, - 0x9a, 0x3b, 0x6f, 0x8c, 0x9a, 0x3b, 0x70, 0x89, 0x9a, 0x3b, 0x70, 0x8c, - 0x9a, 0x3b, 0x71, 0x89, 0x9a, 0x3b, 0x72, 0x8c, 0x9a, 0x3b, 0x72, 0x89, - 0x9a, 0x3b, 0x73, 0x8c, 0x9a, 0x3b, 0x73, 0x89, 0x9a, 0x3b, 0x74, 0x8c, - 0x9a, 0x3b, 0x75, 0x89, 0x9a, 0x3b, 0x75, 0x8c, 0x9a, 0x3b, 0x76, 0x89, - 0x9a, 0x3b, 0x76, 0x8c, 0x9a, 0x3b, 0x77, 0x89, 0x9a, 0x3b, 0x78, 0x8c, - 0x9a, 0x3b, 0x78, 0x89, 0x9a, 0x3b, 0x79, 0x8c, 0x9a, 0x3b, 0x79, 0x89, - 0x9a, 0x3b, 0x7a, 0x8c, 0x9a, 0x3b, 0x7a, 0x89, 0x9a, 0x3b, 0x7b, 0x8c, - 0x9a, 0x3b, 0x7c, 0x89, 0x9a, 0x3b, 0x7c, 0x8c, 0x9a, 0x3b, 0x7d, 0x89, - 0x9a, 0x3b, 0x7d, 0x8c, 0x9a, 0x3b, 0x7e, 0x89, 0x9a, 0x3b, 0x7e, 0x86, - 0x9b, 0x3b, 0x7f, 0x89, 0x9a, 0x3b, 0x7f, 0x86, 0x9b, 0x3b, 0x80, 0x89, - 0x9a, 0x3b, 0x81, 0x86, 0x9b, 0x3b, 0x81, 0x89, 0x9a, 0x3b, 0x82, 0x86, - 0x9b, 0x3b, 0x82, 0x89, 0x9a, 0x3b, 0x83, 0x86, 0x9b, 0x3b, 0x83, 0x89, - 0x9a, 0x3b, 0x84, 0x86, 0x9b, 0x3b, 0x84, 0x89, 0x9a, 0x3b, 0x85, 0x86, - 0x9b, 0x3b, 0x85, 0x89, 0x9a, 0x3b, 0x86, 0x86, 0x9b, 0x3b, 0x86, 0x89, - 0x9a, 0x3b, 0x87, 0x86, 0x9b, 0x3b, 0x87, 0x89, 0x9a, 0x3b, 0x88, 0x86, - 0x9b, 0x3b, 0x88, 0x89, 0x9a, 0x3b, 0x89, 0x86, 0x9b, 0x3b, 0x89, 0x89, - 0x9a, 0x3b, 0x8a, 0x86, 0x9b, 0x3b, 0x8a, 0x89, 0x9a, 0x3b, 0x8b, 0x86, - 0x9b, 0x3b, 0x8b, 0x89, 0x9a, 0x3b, 0x8c, 0x86, 0x9b, 0x3b, 0x8c, 0x89, - 0x9a, 0x3b, 0x8d, 0x86, 0x9b, 0x3b, 0x8d, 0x89, 0x9a, 0x3b, 0x8e, 0x86, - 0x9b, 0x3b, 0x8e, 0x89, 0x9a, 0x3b, 0x8e, 0x86, 0x9b, 0x3b, 0x8f, 0x89, - 0x9a, 0x3b, 0x8f, 0x86, 0x9b, 0x3b, 0x90, 0x89, 0x9a, 0x3b, 0x90, 0x86, - 0x9b, 0x3b, 0x91, 0x84, 0x9b, 0x3b, 0x91, 0x86, 0x9b, 0x3b, 0x92, 0x84, - 0x9b, 0x3b, 0x92, 0x86, 0x9b, 0x3b, 0x93, 0x84, 0x9b, 0x3b, 0x93, 0x86, - 0x9b, 0x3b, 0x94, 0x84, 0x9b, 0x3b, 0x94, 0x86, 0x9b, 0x3b, 0x94, 0x84, - 0x9b, 0x3b, 0x95, 0x86, 0x9b, 0x3b, 0x95, 0x84, 0x9b, 0x3b, 0x96, 0x86, - 0x9b, 0x3b, 0x96, 0x84, 0x9b, 0x3b, 0x97, 0x86, 0x9b, 0x3b, 0x97, 0x84, - 0x9b, 0x3b, 0x98, 0x86, 0x9b, 0x3b, 0x98, 0x84, 0x9b, 0x3b, 0x98, 0x86, - 0x9b, 0x3b, 0x99, 0x84, 0x9b, 0x3b, 0x99, 0x86, 0x9b, 0x3b, 0x9a, 0x84, - 0x9b, 0x3b, 0x9a, 0x84, 0x9c, 0x3b, 0x9a, 0x84, 0x9b, 0x3b, 0x9b, 0x84, - 0x9c, 0x3b, 0x9a, 0x84, 0x9b, 0x3b, 0x9b, 0x84, 0x9c, 0x3b, 0x9d, 0x84, - 0x9c, 0x3a, 0x9d, 0x84, 0x9d, 0x3a, 0x9d, 0x84, 0x9d, 0x3a, 0x9d, 0x84, - 0x9d, 0x3a, 0x9e, 0x84, 0x9e, 0x3a, 0x9e, 0x84, 0x9e, 0x3a, 0x9f, 0x84, - 0x9f, 0x3a, 0x9f, 0x84, 0x9f, 0x3a, 0x9f, 0x84, 0x9f, 0x3a, 0xa0, 0x84, - 0xa0, 0x3a, 0xa0, 0x84, 0xa0, 0x3a, 0xa1, 0x84, 0xa1, 0x3a, 0xa1, 0x85, - 0xa1, 0x3b, 0xa1, 0x85, 0xa1, 0x3b, 0xa2, 0x85, 0xa2, 0x3b, 0xa2, 0x85, - 0xa2, 0x3b, 0xa3, 0x85, 0xa3, 0x3b, 0xa3, 0x85, 0xa3, 0x3b, 0xa3, 0x85, - 0xa3, 0x3b, 0xa4, 0x85, 0xa4, 0x3b, 0xa4, 0x85, 0xa4, 0x3b, 0xa5, 0x85, - 0xa4, 0x3b, 0xa5, 0x85, 0xa4, 0x3b, 0xa5, 0x86, 0xa5, 0x3b, 0xa6, 0x86, - 0xa6, 0x3b, 0xa6, 0x86, 0xa6, 0x3b, 0xa6, 0x86, 0xa6, 0x3b, 0xa7, 0x86, - 0xa7, 0x3b, 0xa7, 0x86, 0xa7, 0x3b, 0xa8, 0x86, 0xa8, 0x3b, 0xa8, 0x86, - 0xa7, 0x3b, 0xa8, 0x86, 0xa8, 0x3b, 0xa9, 0x86, 0xa7, 0x3b, 0xa9, 0x86, - 0xa8, 0x3b, 0xaa, 0x87, 0xaa, 0x3b, 0xaa, 0x87, 0xaa, 0x3b, 0xaa, 0x87, - 0xaa, 0x3b, 0xab, 0x87, 0xab, 0x3b, 0xab, 0x87, 0xab, 0x3b, 0xab, 0x87, - 0xab, 0x3b, 0xac, 0x87, 0xab, 0x3b, 0xac, 0x87, 0xab, 0x3b, 0xac, 0x87, - 0xab, 0x3b, 0xad, 0x87, 0xab, 0x3b, 0xad, 0x88, 0xad, 0x3b, 0xae, 0x88, - 0xae, 0x3b, 0xae, 0x88, 0xae, 0x3b, 0xae, 0x88, 0xae, 0x3b, 0xaf, 0x88, - 0xaf, 0x3b, 0xaf, 0x88, 0xae, 0x3b, 0xaf, 0x88, 0xaf, 0x3b, 0xb0, 0x88, - 0xae, 0x3b, 0xb0, 0x88, 0xaf, 0x3b, 0xb0, 0x89, 0xb0, 0x3b, 0xb1, 0x89, - 0xb1, 0x3b, 0xb1, 0x89, 0xb1, 0x3b, 0xb2, 0x89, 0xb2, 0x3b, 0xb2, 0x89, - 0xb2, 0x3b, 0xb2, 0x89, 0xb2, 0x3b, 0xb3, 0x89, 0xb2, 0x3b, 0xb3, 0x89, - 0xb2, 0x3b, 0xb3, 0x89, 0xb2, 0x3b, 0xb4, 0x89, 0xb2, 0x3b, 0xb4, 0x89, - 0xb2, 0x3b, 0xb4, 0x89, 0xb2, 0x3b, 0xb5, 0x8a, 0xb5, 0x3b, 0xb5, 0x8a, - 0xb5, 0x3b, 0xb5, 0x8a, 0xb5, 0x3b, 0xb6, 0x8a, 0xb5, 0x3b, 0xb6, 0x8a, - 0xb5, 0x3b, 0xb6, 0x8a, 0xb5, 0x3b, 0xb7, 0x8a, 0xb5, 0x3b, 0xb7, 0x8a, - 0xb5, 0x3b, 0xb7, 0x8a, 0xb5, 0x3b, 0xb8, 0x8b, 0xb8, 0x3b, 0xb8, 0x8b, - 0xb8, 0x3b, 0xb8, 0x8b, 0xb8, 0x3b, 0xb9, 0x8b, 0xb8, 0x3b, 0xb9, 0x8b, - 0xb8, 0x3b, 0xb9, 0x8b, 0xb8, 0x3b, 0xba, 0x8b, 0xb8, 0x3b, 0xba, 0x8b, - 0xb8, 0x3b, 0xba, 0x8b, 0xb8, 0x3b, 0xbb, 0x8c, 0xbb, 0x3b, 0xbb, 0x8c, - 0xbb, 0x3b, 0xbb, 0x8c, 0xbb, 0x3b, 0xbc, 0x8c, 0xbc, 0x3b, 0xbc, 0x8c, - 0xbb, 0x3b, 0xbc, 0x8c, 0xbc, 0x3b, 0xbd, 0x8c, 0xbb, 0x3b, 0xbd, 0x8c, - 0xbc, 0x3b, 0xbd, 0x8c, 0xbb, 0x3b, 0xbe, 0x8c, 0xbc, 0x3b, 0xbe, 0x8c, - 0xbb, 0x3b, 0xbe, 0x8c, 0xbc, 0x3b, 0xbf, 0x8d, 0xbf, 0x3b, 0xbf, 0x8d, - 0xbe, 0x3b, 0xbf, 0x8d, 0xbf, 0x3b, 0xc0, 0x8d, 0xbe, 0x3b, 0xc0, 0x8d, - 0xbf, 0x3b, 0xc0, 0x8d, 0xbe, 0x3b, 0xc1, 0x8d, 0xbf, 0x3b, 0xc1, 0x8d, - 0xbe, 0x3b, 0xc1, 0x8d, 0xbf, 0x3b, 0xc1, 0x8e, 0xc1, 0x3b, 0xc2, 0x8e, - 0xc1, 0x3b, 0xc2, 0x8e, 0xc1, 0x3b, 0xc2, 0x8e, 0xc1, 0x3b, 0xc3, 0x8e, - 0xc1, 0x3b, 0xc3, 0x8e, 0xc1, 0x3b, 0xc3, 0x8e, 0xc1, 0x3b, 0xc4, 0x8e, - 0xc1, 0x3b, 0xc4, 0x8e, 0xc1, 0x3b, 0xc4, 0x8f, 0xc4, 0x3b, 0xc5, 0x8f, - 0xc5, 0x3b, 0xc5, 0x8f, 0xc4, 0x3b, 0xc5, 0x8f, 0xc5, 0x3b, 0xc6, 0x8f, - 0xc4, 0x3b, 0xc6, 0x8f, 0xc5, 0x3b, 0xc6, 0x8f, 0xc4, 0x3b, 0xc6, 0x8f, - 0xc5, 0x3b, 0xc7, 0x8f, 0xc4, 0x3b, 0xc7, 0x8f, 0xc5, 0x3b, 0xc7, 0x90, - 0xc7, 0x3b, 0xc8, 0x90, 0xc7, 0x3b, 0xc8, 0x90, 0xc7, 0x3b, 0xc8, 0x90, - 0xc7, 0x3b, 0xc9, 0x90, 0xc7, 0x3b, 0xc9, 0x90, 0xc7, 0x3b, 0xc9, 0x90, - 0xc7, 0x3b, 0xc9, 0x90, 0xc7, 0x3b, 0xca, 0x90, 0xc7, 0x3b, 0xca, 0x91, - 0xca, 0x3b, 0xca, 0x90, 0xc7, 0x3b, 0xcb, 0x91, 0xca, 0x3b, 0xcb, 0x91, - 0xca, 0x3b, 0xcb, 0x91, 0xca, 0x3b, 0xcc, 0x91, 0xca, 0x3b, 0xcc, 0x91, - 0xca, 0x3b, 0xcc, 0x91, 0xca, 0x3b, 0xcc, 0x91, 0xca, 0x3b, 0xcd, 0x91, - 0xca, 0x3b, 0xcd, 0x91, 0xca, 0x3b, 0xcd, 0x92, 0xcd, 0x3b, 0xce, 0x92, - 0xcd, 0x3b, 0xce, 0x92, 0xcd, 0x3b, 0xce, 0x92, 0xcd, 0x3b, 0xce, 0x92, - 0xcd, 0x3b, 0xcf, 0x92, 0xcd, 0x3b, 0xcf, 0x92, 0xcd, 0x3b, 0xcf, 0x92, - 0xcd, 0x3b, 0xd0, 0x92, 0xcd, 0x3b, 0xd0, 0x92, 0xcd, 0x3b, 0xd0, 0x93, - 0xd0, 0x3b, 0xd0, 0x93, 0xcf, 0x3b, 0xd1, 0x93, 0xd0, 0x3b, 0xd1, 0x93, - 0xcf, 0x3b, 0xd1, 0x93, 0xd0, 0x3b, 0xd2, 0x93, 0xcf, 0x3b, 0xd2, 0x93, - 0xd0, 0x3b, 0xd2, 0x93, 0xcf, 0x3b, 0xd2, 0x93, 0xd0, 0x3b, 0xd3, 0x94, - 0xd2, 0x3b, 0xd3, 0x94, 0xd2, 0x3b, 0xd3, 0x94, 0xd2, 0x3b, 0xd4, 0x94, - 0xd2, 0x3b, 0xd4, 0x94, 0xd2, 0x3b, 0xd4, 0x94, 0xd2, 0x3b, 0xd4, 0x94, - 0xd2, 0x3b, 0xd5, 0x94, 0xd2, 0x3b, 0xd5, 0x94, 0xd2, 0x3b, 0xd5, 0x94, - 0xd2, 0x3b, 0xd6, 0x94, 0xd5, 0x3b, 0xd6, 0x94, 0xd2, 0x3b, 0xd6, 0x94, - 0xd5, 0x3b, 0xd6, 0x94, 0xd5, 0x3b, 0xd7, 0x94, 0xd5, 0x3b, 0xd7, 0x94, - 0xd5, 0x3b, 0xd7, 0x94, 0xd5, 0x3b, 0xd7, 0x94, 0xd5, 0x3b, 0xd8, 0x94, - 0xd5, 0x3b, 0xd8, 0x94, 0xd5, 0x3b, 0xd8, 0x94, 0xd5, 0x3b, 0xd9, 0x95, - 0xd7, 0x3b, 0xd9, 0x95, 0xd7, 0x3b, 0xd9, 0x95, 0xd7, 0x3b, 0xd9, 0x95, - 0xd7, 0x3b, 0xda, 0x95, 0xd7, 0x3b, 0xda, 0x95, 0xd7, 0x3b, 0xda, 0x95, - 0xd7, 0x3b, 0xda, 0x95, 0xd7, 0x3b, 0xdb, 0x95, 0xd7, 0x3b, 0xdb, 0x96, - 0xda, 0x3b, 0xdb, 0x96, 0xda, 0x3b, 0xdb, 0x96, 0xda, 0x3b, 0xdc, 0x96, - 0xda, 0x3b, 0xdc, 0x96, 0xda, 0x3b, 0xdc, 0x96, 0xda, 0x3b, 0xdd, 0x96, - 0xda, 0x3b, 0xdd, 0x96, 0xda, 0x3b, 0xdd, 0x96, 0xda, 0x3b, 0xdd, 0x96, - 0xda, 0x3b, 0xde, 0x97, 0xdd, 0x3b, 0xde, 0x97, 0xdc, 0x3b, 0xde, 0x97, - 0xdd, 0x3b, 0xde, 0x97, 0xdc, 0x3b, 0xdf, 0x97, 0xdd, 0x3b, 0xdf, 0x97, - 0xdc, 0x3b, 0xdf, 0x97, 0xdd, 0x3b, 0xdf, 0x97, 0xdc, 0x3b, 0xe0, 0x97, - 0xdd, 0x3b, 0xe0, 0x98, 0xdf, 0x3b, 0xe0, 0x97, 0xdd, 0x3b, 0xe1, 0x98, - 0xdf, 0x3b, 0xe1, 0x98, 0xdf, 0x3b, 0xe1, 0x98, 0xdf, 0x3b, 0xe1, 0x98, - 0xdf, 0x3b, 0xe2, 0x98, 0xdf, 0x3b, 0xe2, 0x98, 0xdf, 0x3b, 0xe2, 0x98, - 0xdf, 0x3b, 0xe2, 0x99, 0xe1, 0x3b, 0xe3, 0x99, 0xe2, 0x3b, 0xe3, 0x99, - 0xe1, 0x3b, 0xe3, 0x99, 0xe2, 0x3b, 0xe3, 0x99, 0xe1, 0x3b, 0xe4, 0x99, - 0xe2, 0x3b, 0xe4, 0x99, 0xe1, 0x3b, 0xe4, 0x99, 0xe2, 0x3b, 0xe4, 0x99, - 0xe1, 0x3b, 0xe5, 0x99, 0xe2, 0x3b, 0xe5, 0x9a, 0xe4, 0x3b, 0xe5, 0x99, - 0xe2, 0x3b, 0xe5, 0x9a, 0xe4, 0x3b, 0xe6, 0x9a, 0xe4, 0x3b, 0xe6, 0x9a, - 0xe4, 0x3b, 0xe6, 0x9a, 0xe4, 0x3b, 0xe6, 0x9a, 0xe4, 0x3b, 0xe7, 0x9a, - 0xe4, 0x3b, 0xe7, 0x9a, 0xe4, 0x3b, 0xe7, 0x9a, 0xe4, 0x3b, 0xe7, 0x9a, - 0xe4, 0x3b, 0xe8, 0x9a, 0xe6, 0x3b, 0xe8, 0x9a, 0xe6, 0x3b, 0xe8, 0x9a, - 0xe6, 0x3b, 0xe8, 0x9a, 0xe6, 0x3b, 0xe9, 0x9a, 0xe6, 0x3b, 0xe9, 0x9a, - 0xe6, 0x3b, 0xe9, 0x9a, 0xe6, 0x3b, 0xe9, 0x9a, 0xe6, 0x3b, 0xea, 0x9a, - 0xe6, 0x3b, 0xea, 0x9b, 0xe8, 0x3b, 0xea, 0x9b, 0xe9, 0x3b, 0xea, 0x9b, - 0xe8, 0x3b, 0xeb, 0x9b, 0xe9, 0x3b, 0xeb, 0x9b, 0xe8, 0x3b, 0xeb, 0x9b, - 0xe9, 0x3b, 0xeb, 0x9b, 0xe8, 0x3b, 0xec, 0x9b, 0xe9, 0x3b, 0xec, 0x9b, - 0xe8, 0x3b, 0xec, 0x9b, 0xe9, 0x3b, 0xec, 0x9c, 0xeb, 0x3b, 0xec, 0x9b, - 0xe9, 0x3b, 0xed, 0x9c, 0xeb, 0x3b, 0xed, 0x9c, 0xeb, 0x3b, 0xed, 0x9c, - 0xeb, 0x3b, 0xed, 0x9c, 0xeb, 0x3b, 0xee, 0x9c, 0xeb, 0x3b, 0xee, 0x9c, - 0xeb, 0x3b, 0xee, 0x9c, 0xeb, 0x3b, 0xee, 0x9d, 0xed, 0x3b, 0xef, 0x9d, - 0xed, 0x3b, 0xef, 0x9d, 0xed, 0x3b, 0xef, 0x9d, 0xed, 0x3b, 0xef, 0x9d, - 0xed, 0x3b, 0xf0, 0x9d, 0xed, 0x3b, 0xf0, 0x9d, 0xed, 0x3b, 0xf0, 0x9d, - 0xed, 0x3b, 0xf0, 0x9d, 0xed, 0x3b, 0xf1, 0x9d, 0xed, 0x3b, 0xf1, 0x9d, - 0xed, 0x3b, 0xf1, 0x9d, 0xed, 0x3b, 0xf1, 0x9e, 0xef, 0x3b, 0xf2, 0x9e, - 0xef, 0x3b, 0xf2, 0x9e, 0xef, 0x3b, 0xf2, 0x9e, 0xef, 0x3b, 0xf2, 0x9e, - 0xef, 0x3b, 0xf2, 0x9e, 0xef, 0x3b, 0xf3, 0x9e, 0xef, 0x3b, 0xf3, 0x9e, - 0xef, 0x3b, 0xf3, 0x9e, 0xef, 0x3b, 0xf3, 0x9f, 0xf2, 0x3b, 0xf4, 0x9e, - 0xef, 0x3b, 0xf4, 0x9f, 0xf2, 0x3b, 0xf4, 0x9f, 0xf1, 0x3b, 0xf4, 0x9f, - 0xf2, 0x3b, 0xf5, 0x9f, 0xf1, 0x3b, 0xf5, 0x9f, 0xf2, 0x3b, 0xf5, 0x9f, - 0xf1, 0x3b, 0xf5, 0x9f, 0xf2, 0x3b, 0xf5, 0x9f, 0xf4, 0x3b, 0xf6, 0x9f, - 0xf4, 0x3b, 0xf6, 0x9f, 0xf4, 0x3b, 0xf6, 0x9f, 0xf4, 0x3b, 0xf6, 0x9f, - 0xf4, 0x3b, 0xf7, 0x9f, 0xf4, 0x3b, 0xf7, 0x9f, 0xf4, 0x3b, 0xf7, 0x9f, - 0xf4, 0x3b, 0xf7, 0x9f, 0xf4, 0x3b, 0xf8, 0x9f, 0xf4, 0x3b, 0xf8, 0xa0, - 0xf6, 0x3b, 0xf8, 0x9f, 0xf4, 0x3b, 0xf8, 0xa0, 0xf6, 0x3b, 0xf8, 0xa0, - 0xf6, 0x3b, 0xf9, 0xa0, 0xf6, 0x3b, 0xf9, 0xa0, 0xf6, 0x3b, 0xf9, 0xa0, - 0xf6, 0x3b, 0xf9, 0xa0, 0xf6, 0x3b, 0xfa, 0xa0, 0xf6, 0x3b, 0xfa, 0xa1, - 0xf8, 0x3b, 0xfa, 0xa0, 0xf6, 0x3b, 0xfa, 0xa1, 0xf8, 0x3b, 0xfa, 0xa1, - 0xf8, 0x3b, 0xfb, 0xa1, 0xf8, 0x3b, 0xfb, 0xa1, 0xf8, 0x3b, 0xfb, 0xa1, - 0xf8, 0x3b, 0xfb, 0xa1, 0xf8, 0x3b, 0xfc, 0xa1, 0xf8, 0x3b, 0xfc, 0xa2, - 0xfa, 0x3b, 0xfc, 0xa2, 0xfa, 0x3b, 0xfc, 0xa2, 0xfa, 0x3b, 0xfc, 0xa2, - 0xfa, 0x3b, 0xfd, 0xa2, 0xfa, 0x3b, 0xfd, 0xa2, 0xfa, 0x3b, 0xfd, 0xa2, - 0xfa, 0x3b, 0xfd, 0xa2, 0xfa, 0x3b, 0xfe, 0xa2, 0xfa, 0x3b, 0xfe, 0xa2, - 0xfa, 0x3b, 0xfe, 0xa2, 0xfa, 0x3b, 0xfe, 0xa2, 0xfa, 0x3b, 0xfe, 0xa2, - 0xfa, 0x3b, 0xff, 0xa2, 0xfa, 0x3b, 0xff, 0xa2, 0xfa, 0x3b, 0x03, 0x8f, - 0x9a, 0x3c, 0x0a, 0x92, 0x99, 0x3c, 0x0f, 0x8f, 0x9a, 0x3c, 0x14, 0x92, - 0x99, 0x3c, 0x17, 0x8f, 0x9a, 0x3c, 0x1b, 0x92, 0x99, 0x3c, 0x1e, 0x8f, - 0x9a, 0x3c, 0x20, 0x92, 0x99, 0x3c, 0x23, 0x8f, 0x9a, 0x3c, 0x25, 0x92, - 0x99, 0x3c, 0x27, 0x8f, 0x9a, 0x3c, 0x29, 0x92, 0x99, 0x3c, 0x2b, 0x8f, - 0x9a, 0x3c, 0x2d, 0x92, 0x99, 0x3c, 0x2f, 0x8f, 0x9a, 0x3c, 0x31, 0x92, - 0x99, 0x3c, 0x32, 0x8f, 0x9a, 0x3c, 0x34, 0x92, 0x99, 0x3c, 0x35, 0x8f, - 0x9a, 0x3c, 0x37, 0x92, 0x99, 0x3c, 0x38, 0x8f, 0x9a, 0x3c, 0x3a, 0x92, - 0x99, 0x3c, 0x3b, 0x8f, 0x9a, 0x3c, 0x3c, 0x92, 0x99, 0x3c, 0x3e, 0x8f, - 0x9a, 0x3c, 0x3f, 0x92, 0x99, 0x3c, 0x40, 0x8f, 0x9a, 0x3c, 0x42, 0x92, - 0x99, 0x3c, 0x43, 0x8f, 0x9a, 0x3c, 0x44, 0x92, 0x99, 0x3c, 0x45, 0x8f, - 0x9a, 0x3c, 0x46, 0x92, 0x99, 0x3c, 0x47, 0x8f, 0x9a, 0x3c, 0x48, 0x8d, - 0x9a, 0x3c, 0x49, 0x8f, 0x9a, 0x3c, 0x4a, 0x8d, 0x9a, 0x3c, 0x4b, 0x8f, - 0x9a, 0x3c, 0x4c, 0x8d, 0x9a, 0x3c, 0x4d, 0x8f, 0x9a, 0x3c, 0x4e, 0x8d, - 0x9a, 0x3c, 0x4f, 0x8f, 0x9a, 0x3c, 0x50, 0x8d, 0x9a, 0x3c, 0x51, 0x8f, - 0x9a, 0x3c, 0x52, 0x8d, 0x9a, 0x3c, 0x53, 0x8f, 0x9a, 0x3c, 0x54, 0x8d, - 0x9a, 0x3c, 0x55, 0x8f, 0x9a, 0x3c, 0x56, 0x8d, 0x9a, 0x3c, 0x57, 0x8f, - 0x9a, 0x3c, 0x58, 0x8d, 0x9a, 0x3c, 0x58, 0x8f, 0x9a, 0x3c, 0x59, 0x8d, - 0x9a, 0x3c, 0x5a, 0x8f, 0x9a, 0x3c, 0x5b, 0x8d, 0x9a, 0x3c, 0x5c, 0x8f, - 0x9a, 0x3c, 0x5d, 0x8d, 0x9a, 0x3c, 0x5d, 0x8f, 0x9a, 0x3c, 0x5e, 0x8d, - 0x9a, 0x3c, 0x5f, 0x8f, 0x9a, 0x3c, 0x60, 0x8d, 0x9a, 0x3c, 0x60, 0x8f, - 0x9a, 0x3c, 0x61, 0x8d, 0x9a, 0x3c, 0x62, 0x8f, 0x9a, 0x3c, 0x63, 0x8d, - 0x9a, 0x3c, 0x63, 0x8f, 0x9a, 0x3c, 0x64, 0x8d, 0x9a, 0x3c, 0x65, 0x89, - 0x9a, 0x3c, 0x66, 0x8d, 0x9a, 0x3c, 0x66, 0x89, 0x9a, 0x3c, 0x67, 0x8d, - 0x9a, 0x3c, 0x68, 0x89, 0x9a, 0x3c, 0x68, 0x8d, 0x9a, 0x3c, 0x69, 0x89, - 0x9a, 0x3c, 0x6a, 0x8d, 0x9a, 0x3c, 0x6a, 0x89, 0x9a, 0x3c, 0x6b, 0x8d, - 0x9a, 0x3c, 0x6c, 0x89, 0x9a, 0x3c, 0x6c, 0x8d, 0x9a, 0x3c, 0x6d, 0x89, - 0x9a, 0x3c, 0x6e, 0x8d, 0x9a, 0x3c, 0x6e, 0x89, 0x9a, 0x3c, 0x6f, 0x8d, - 0x9a, 0x3c, 0x70, 0x89, 0x9a, 0x3c, 0x70, 0x8d, 0x9a, 0x3c, 0x71, 0x89, - 0x9a, 0x3c, 0x72, 0x8d, 0x9a, 0x3c, 0x72, 0x89, 0x9a, 0x3c, 0x73, 0x8d, - 0x9a, 0x3c, 0x73, 0x89, 0x9a, 0x3c, 0x74, 0x8d, 0x9a, 0x3c, 0x75, 0x89, - 0x9a, 0x3c, 0x75, 0x8d, 0x9a, 0x3c, 0x76, 0x89, 0x9a, 0x3c, 0x76, 0x8d, - 0x9a, 0x3c, 0x77, 0x89, 0x9a, 0x3c, 0x78, 0x8d, 0x9a, 0x3c, 0x78, 0x89, - 0x9a, 0x3c, 0x79, 0x8d, 0x9a, 0x3c, 0x79, 0x89, 0x9a, 0x3c, 0x7a, 0x8d, - 0x9a, 0x3c, 0x7a, 0x89, 0x9a, 0x3c, 0x7b, 0x8d, 0x9a, 0x3c, 0x7c, 0x89, - 0x9a, 0x3c, 0x7c, 0x86, 0x9b, 0x3c, 0x7d, 0x89, 0x9a, 0x3c, 0x7d, 0x86, - 0x9b, 0x3c, 0x7e, 0x89, 0x9a, 0x3c, 0x7e, 0x86, 0x9b, 0x3c, 0x7f, 0x89, - 0x9a, 0x3c, 0x7f, 0x86, 0x9b, 0x3c, 0x80, 0x89, 0x9a, 0x3c, 0x81, 0x86, - 0x9b, 0x3c, 0x81, 0x89, 0x9a, 0x3c, 0x82, 0x86, 0x9b, 0x3c, 0x82, 0x89, - 0x9a, 0x3c, 0x83, 0x86, 0x9b, 0x3c, 0x83, 0x89, 0x9a, 0x3c, 0x84, 0x86, - 0x9b, 0x3c, 0x84, 0x89, 0x9a, 0x3c, 0x85, 0x86, 0x9b, 0x3c, 0x85, 0x89, - 0x9a, 0x3c, 0x86, 0x86, 0x9b, 0x3c, 0x86, 0x89, 0x9a, 0x3c, 0x87, 0x86, - 0x9b, 0x3c, 0x87, 0x89, 0x9a, 0x3c, 0x88, 0x86, 0x9b, 0x3c, 0x88, 0x89, - 0x9a, 0x3c, 0x89, 0x86, 0x9b, 0x3c, 0x89, 0x89, 0x9a, 0x3c, 0x8a, 0x86, - 0x9b, 0x3c, 0x8a, 0x89, 0x9a, 0x3c, 0x8b, 0x86, 0x9b, 0x3c, 0x8b, 0x89, - 0x9a, 0x3c, 0x8c, 0x86, 0x9b, 0x3c, 0x8c, 0x89, 0x9a, 0x3c, 0x8d, 0x86, - 0x9b, 0x3c, 0x8d, 0x89, 0x9a, 0x3c, 0x8e, 0x86, 0x9b, 0x3c, 0x8e, 0x89, - 0x9a, 0x3c, 0x8e, 0x86, 0x9b, 0x3c, 0x8f, 0x89, 0x9a, 0x3c, 0x8f, 0x86, - 0x9b, 0x3c, 0x90, 0x89, 0x9a, 0x3c, 0x90, 0x86, 0x9b, 0x3c, 0x91, 0x89, - 0x9a, 0x3c, 0x91, 0x86, 0x9b, 0x3c, 0x92, 0x89, 0x9a, 0x3c, 0x92, 0x86, - 0x9b, 0x3c, 0x93, 0x85, 0x9b, 0x3c, 0x93, 0x86, 0x9b, 0x3c, 0x94, 0x85, - 0x9b, 0x3c, 0x94, 0x86, 0x9b, 0x3c, 0x94, 0x85, 0x9b, 0x3c, 0x95, 0x86, - 0x9b, 0x3c, 0x95, 0x85, 0x9b, 0x3c, 0x96, 0x86, 0x9b, 0x3c, 0x96, 0x85, - 0x9b, 0x3c, 0x97, 0x86, 0x9b, 0x3c, 0x97, 0x85, 0x9b, 0x3c, 0x98, 0x86, - 0x9b, 0x3c, 0x98, 0x85, 0x9b, 0x3c, 0x98, 0x86, 0x9b, 0x3c, 0x99, 0x85, - 0x9b, 0x3c, 0x99, 0x86, 0x9b, 0x3c, 0x9a, 0x85, 0x9b, 0x3c, 0x9a, 0x86, - 0x9b, 0x3c, 0x9a, 0x85, 0x9b, 0x3c, 0x9b, 0x86, 0x9b, 0x3c, 0x9a, 0x85, - 0x9b, 0x3c, 0x9b, 0x85, 0x9c, 0x3c, 0x9c, 0x85, 0x9c, 0x3a, 0x9d, 0x85, - 0x9d, 0x3a, 0x9d, 0x85, 0x9d, 0x3a, 0x9d, 0x85, 0x9d, 0x3a, 0x9e, 0x85, - 0x9e, 0x3a, 0x9f, 0x85, 0x9e, 0x3b, 0x9f, 0x85, 0x9f, 0x3b, 0x9f, 0x85, - 0x9f, 0x3b, 0x9f, 0x85, 0x9f, 0x3b, 0xa0, 0x85, 0xa0, 0x3b, 0xa0, 0x85, - 0xa0, 0x3b, 0xa1, 0x85, 0xa1, 0x3b, 0xa1, 0x85, 0xa1, 0x3b, 0xa1, 0x85, - 0xa1, 0x3b, 0xa2, 0x85, 0xa2, 0x3b, 0xa2, 0x85, 0xa2, 0x3b, 0xa3, 0x86, - 0xa3, 0x3c, 0xa3, 0x86, 0xa3, 0x3c, 0xa3, 0x86, 0xa3, 0x3c, 0xa4, 0x86, - 0xa4, 0x3c, 0xa4, 0x86, 0xa4, 0x3c, 0xa5, 0x86, 0xa5, 0x3c, 0xa5, 0x86, - 0xa5, 0x3c, 0xa5, 0x86, 0xa5, 0x3c, 0xa6, 0x86, 0xa6, 0x3c, 0xa6, 0x86, - 0xa6, 0x3c, 0xa6, 0x86, 0xa6, 0x3c, 0xa7, 0x86, 0xa6, 0x3c, 0xa7, 0x87, - 0xa7, 0x3c, 0xa8, 0x87, 0xa8, 0x3c, 0xa8, 0x87, 0xa8, 0x3c, 0xa8, 0x87, - 0xa8, 0x3c, 0xa9, 0x87, 0xa9, 0x3c, 0xa9, 0x87, 0xa9, 0x3c, 0xaa, 0x87, - 0xaa, 0x3c, 0xaa, 0x87, 0xa9, 0x3c, 0xaa, 0x87, 0xaa, 0x3c, 0xab, 0x87, - 0xa9, 0x3c, 0xab, 0x87, 0xaa, 0x3c, 0xab, 0x88, 0xab, 0x3c, 0xac, 0x88, - 0xac, 0x3c, 0xac, 0x88, 0xac, 0x3c, 0xac, 0x88, 0xac, 0x3c, 0xad, 0x88, - 0xad, 0x3c, 0xad, 0x88, 0xad, 0x3c, 0xae, 0x88, 0xad, 0x3c, 0xae, 0x88, - 0xad, 0x3c, 0xae, 0x88, 0xad, 0x3c, 0xaf, 0x88, 0xad, 0x3c, 0xaf, 0x89, - 0xaf, 0x3c, 0xaf, 0x89, 0xaf, 0x3c, 0xb0, 0x89, 0xb0, 0x3c, 0xb0, 0x89, - 0xb0, 0x3c, 0xb0, 0x89, 0xb0, 0x3c, 0xb1, 0x89, 0xb0, 0x3c, 0xb1, 0x89, - 0xb0, 0x3c, 0xb2, 0x89, 0xb0, 0x3c, 0xb2, 0x89, 0xb0, 0x3c, 0xb2, 0x89, - 0xb2, 0x3c, 0xb3, 0x89, 0xb2, 0x3c, 0xb3, 0x89, 0xb2, 0x3c, 0xb3, 0x89, - 0xb2, 0x3c, 0xb4, 0x89, 0xb2, 0x3c, 0xb4, 0x8a, 0xb3, 0x3c, 0xb4, 0x8a, - 0xb4, 0x3c, 0xb5, 0x8a, 0xb3, 0x3c, 0xb5, 0x8a, 0xb4, 0x3c, 0xb5, 0x8a, - 0xb3, 0x3c, 0xb6, 0x8a, 0xb4, 0x3c, 0xb6, 0x8b, 0xb6, 0x3c, 0xb6, 0x8b, - 0xb6, 0x3c, 0xb7, 0x8b, 0xb7, 0x3c, 0xb7, 0x8b, 0xb7, 0x3c, 0xb7, 0x8b, - 0xb7, 0x3c, 0xb8, 0x8b, 0xb7, 0x3c, 0xb8, 0x8b, 0xb7, 0x3c, 0xb8, 0x8b, - 0xb7, 0x3c, 0xb9, 0x8b, 0xb7, 0x3c, 0xb9, 0x8b, 0xb7, 0x3c, 0xb9, 0x8c, - 0xb9, 0x3c, 0xba, 0x8c, 0xba, 0x3c, 0xba, 0x8c, 0xba, 0x3c, 0xba, 0x8c, - 0xba, 0x3c, 0xbb, 0x8c, 0xba, 0x3c, 0xbb, 0x8c, 0xba, 0x3c, 0xbb, 0x8c, - 0xba, 0x3c, 0xbc, 0x8c, 0xba, 0x3c, 0xbc, 0x8c, 0xba, 0x3c, 0xbc, 0x8d, - 0xbc, 0x3c, 0xbd, 0x8d, 0xbd, 0x3c, 0xbd, 0x8d, 0xbd, 0x3c, 0xbd, 0x8d, - 0xbd, 0x3c, 0xbe, 0x8d, 0xbd, 0x3c, 0xbe, 0x8d, 0xbd, 0x3c, 0xbe, 0x8d, - 0xbd, 0x3c, 0xbf, 0x8d, 0xbd, 0x3c, 0xbf, 0x8d, 0xbd, 0x3c, 0xbf, 0x8d, - 0xbd, 0x3c, 0xc0, 0x8d, 0xbd, 0x3c, 0xc0, 0x8e, 0xc0, 0x3c, 0xc0, 0x8e, - 0xc0, 0x3c, 0xc1, 0x8e, 0xc0, 0x3c, 0xc1, 0x8e, 0xc0, 0x3c, 0xc1, 0x8e, - 0xc0, 0x3c, 0xc1, 0x8e, 0xc0, 0x3c, 0xc2, 0x8e, 0xc0, 0x3c, 0xc2, 0x8e, - 0xc0, 0x3c, 0xc2, 0x8e, 0xc0, 0x3c, 0xc3, 0x8e, 0xc0, 0x3c, 0xc3, 0x8e, - 0xc3, 0x3c, 0xc3, 0x8e, 0xc3, 0x3c, 0xc4, 0x8e, 0xc3, 0x3c, 0xc4, 0x8e, - 0xc3, 0x3c, 0xc4, 0x8e, 0xc3, 0x3c, 0xc5, 0x8e, 0xc3, 0x3c, 0xc5, 0x8e, - 0xc3, 0x3c, 0xc5, 0x8e, 0xc3, 0x3c, 0xc6, 0x8e, 0xc3, 0x3c, 0xc6, 0x8f, - 0xc6, 0x3c, 0xc6, 0x8f, 0xc6, 0x3c, 0xc6, 0x8f, 0xc6, 0x3c, 0xc7, 0x8f, - 0xc6, 0x3c, 0xc7, 0x8f, 0xc6, 0x3c, 0xc7, 0x8f, 0xc6, 0x3c, 0xc8, 0x8f, - 0xc6, 0x3c, 0xc8, 0x8f, 0xc6, 0x3c, 0xc8, 0x8f, 0xc6, 0x3c, 0xc9, 0x90, - 0xc9, 0x3c, 0xc9, 0x90, 0xc9, 0x3c, 0xc9, 0x90, 0xc9, 0x3c, 0xc9, 0x90, - 0xc9, 0x3c, 0xca, 0x90, 0xc9, 0x3c, 0xca, 0x90, 0xc9, 0x3c, 0xca, 0x90, - 0xc9, 0x3c, 0xcb, 0x90, 0xc9, 0x3c, 0xcb, 0x90, 0xc9, 0x3c, 0xcb, 0x90, - 0xc9, 0x3c, 0xcc, 0x91, 0xcc, 0x3c, 0xcc, 0x90, 0xc9, 0x3c, 0xcc, 0x91, - 0xcc, 0x3c, 0xcc, 0x91, 0xcb, 0x3c, 0xcd, 0x91, 0xcc, 0x3c, 0xcd, 0x91, - 0xcb, 0x3c, 0xcd, 0x91, 0xcc, 0x3c, 0xce, 0x91, 0xcb, 0x3c, 0xce, 0x91, - 0xcc, 0x3c, 0xce, 0x91, 0xcb, 0x3c, 0xce, 0x91, 0xcc, 0x3c, 0xcf, 0x92, - 0xce, 0x3c, 0xcf, 0x92, 0xce, 0x3c, 0xcf, 0x92, 0xce, 0x3c, 0xd0, 0x92, - 0xce, 0x3c, 0xd0, 0x92, 0xce, 0x3c, 0xd0, 0x92, 0xce, 0x3c, 0xd0, 0x92, - 0xce, 0x3c, 0xd1, 0x92, 0xce, 0x3c, 0xd1, 0x92, 0xce, 0x3c, 0xd1, 0x92, - 0xce, 0x3c, 0xd2, 0x93, 0xd1, 0x3c, 0xd2, 0x93, 0xd1, 0x3c, 0xd2, 0x93, - 0xd1, 0x3c, 0xd2, 0x93, 0xd1, 0x3c, 0xd3, 0x93, 0xd1, 0x3c, 0xd3, 0x93, - 0xd1, 0x3c, 0xd3, 0x93, 0xd1, 0x3c, 0xd4, 0x93, 0xd1, 0x3c, 0xd4, 0x93, - 0xd1, 0x3c, 0xd4, 0x94, 0xd4, 0x3c, 0xd4, 0x94, 0xd3, 0x3c, 0xd5, 0x94, - 0xd4, 0x3c, 0xd5, 0x94, 0xd3, 0x3c, 0xd5, 0x94, 0xd4, 0x3c, 0xd6, 0x94, - 0xd3, 0x3c, 0xd6, 0x94, 0xd4, 0x3c, 0xd6, 0x94, 0xd3, 0x3c, 0xd6, 0x94, - 0xd4, 0x3c, 0xd7, 0x95, 0xd6, 0x3c, 0xd7, 0x95, 0xd6, 0x3c, 0xd7, 0x95, - 0xd6, 0x3c, 0xd7, 0x95, 0xd6, 0x3c, 0xd8, 0x95, 0xd6, 0x3c, 0xd8, 0x95, - 0xd6, 0x3c, 0xd8, 0x95, 0xd6, 0x3c, 0xd9, 0x95, 0xd6, 0x3c, 0xd9, 0x95, - 0xd6, 0x3c, 0xd9, 0x95, 0xd6, 0x3c, 0xd9, 0x95, 0xd6, 0x3c, 0xda, 0x95, - 0xd6, 0x3c, 0xda, 0x96, 0xd9, 0x3c, 0xda, 0x96, 0xd9, 0x3c, 0xda, 0x96, - 0xd9, 0x3c, 0xdb, 0x96, 0xd9, 0x3c, 0xdb, 0x96, 0xd9, 0x3c, 0xdb, 0x96, - 0xd9, 0x3c, 0xdb, 0x96, 0xd9, 0x3c, 0xdc, 0x96, 0xd9, 0x3c, 0xdc, 0x96, - 0xd9, 0x3c, 0xdc, 0x97, 0xdb, 0x3c, 0xdd, 0x97, 0xdb, 0x3c, 0xdd, 0x97, - 0xdb, 0x3c, 0xdd, 0x97, 0xdb, 0x3c, 0xdd, 0x97, 0xdb, 0x3c, 0xde, 0x97, - 0xdb, 0x3c, 0xde, 0x97, 0xdb, 0x3c, 0xde, 0x97, 0xdb, 0x3c, 0xde, 0x97, - 0xdb, 0x3c, 0xdf, 0x98, 0xde, 0x3c, 0xdf, 0x98, 0xde, 0x3c, 0xdf, 0x98, - 0xde, 0x3c, 0xdf, 0x98, 0xde, 0x3c, 0xe0, 0x98, 0xde, 0x3c, 0xe0, 0x98, - 0xde, 0x3c, 0xe0, 0x98, 0xde, 0x3c, 0xe1, 0x98, 0xde, 0x3c, 0xe1, 0x98, - 0xde, 0x3c, 0xe1, 0x98, 0xde, 0x3c, 0xe1, 0x98, 0xe0, 0x3c, 0xe2, 0x98, - 0xde, 0x3c, 0xe2, 0x98, 0xe0, 0x3c, 0xe2, 0x98, 0xe0, 0x3c, 0xe2, 0x98, - 0xe0, 0x3c, 0xe3, 0x98, 0xe0, 0x3c, 0xe3, 0x98, 0xe0, 0x3c, 0xe3, 0x98, - 0xe0, 0x3c, 0xe3, 0x98, 0xe0, 0x3c, 0xe4, 0x99, 0xe3, 0x3c, 0xe4, 0x98, - 0xe0, 0x3c, 0xe4, 0x99, 0xe3, 0x3c, 0xe4, 0x99, 0xe2, 0x3c, 0xe5, 0x99, - 0xe3, 0x3c, 0xe5, 0x99, 0xe2, 0x3c, 0xe5, 0x99, 0xe3, 0x3c, 0xe5, 0x99, - 0xe2, 0x3c, 0xe6, 0x99, 0xe3, 0x3c, 0xe6, 0x9a, 0xe5, 0x3c, 0xe6, 0x9a, - 0xe5, 0x3c, 0xe6, 0x9a, 0xe5, 0x3c, 0xe7, 0x9a, 0xe5, 0x3c, 0xe7, 0x9a, - 0xe5, 0x3c, 0xe7, 0x9a, 0xe5, 0x3c, 0xe7, 0x9a, 0xe5, 0x3c, 0xe8, 0x9a, - 0xe5, 0x3c, 0xe8, 0x9a, 0xe5, 0x3c, 0xe8, 0x9a, 0xe5, 0x3c, 0xe8, 0x9a, - 0xe5, 0x3c, 0xe9, 0x9a, 0xe5, 0x3c, 0xe9, 0x9b, 0xe7, 0x3c, 0xe9, 0x9b, - 0xe7, 0x3c, 0xe9, 0x9b, 0xe7, 0x3c, 0xea, 0x9b, 0xe7, 0x3c, 0xea, 0x9b, - 0xe7, 0x3c, 0xea, 0x9b, 0xe7, 0x3c, 0xea, 0x9b, 0xe7, 0x3c, 0xeb, 0x9b, - 0xe7, 0x3c, 0xeb, 0x9b, 0xe7, 0x3c, 0xeb, 0x9c, 0xea, 0x3c, 0xeb, 0x9c, - 0xea, 0x3c, 0xec, 0x9c, 0xea, 0x3c, 0xec, 0x9c, 0xea, 0x3c, 0xec, 0x9c, - 0xea, 0x3c, 0xec, 0x9c, 0xea, 0x3c, 0xec, 0x9c, 0xea, 0x3c, 0xed, 0x9c, - 0xea, 0x3c, 0xed, 0x9c, 0xea, 0x3c, 0xed, 0x9c, 0xea, 0x3c, 0xed, 0x9d, - 0xec, 0x3c, 0xee, 0x9c, 0xea, 0x3c, 0xee, 0x9d, 0xec, 0x3c, 0xee, 0x9d, - 0xec, 0x3c, 0xee, 0x9d, 0xec, 0x3c, 0xef, 0x9d, 0xec, 0x3c, 0xef, 0x9d, - 0xec, 0x3c, 0xef, 0x9d, 0xec, 0x3c, 0xef, 0x9d, 0xec, 0x3c, 0xf0, 0x9d, - 0xee, 0x3c, 0xf0, 0x9d, 0xec, 0x3c, 0xf0, 0x9d, 0xee, 0x3c, 0xf0, 0x9d, - 0xee, 0x3c, 0xf1, 0x9d, 0xee, 0x3c, 0xf1, 0x9d, 0xee, 0x3c, 0xf1, 0x9d, - 0xee, 0x3c, 0xf1, 0x9d, 0xee, 0x3c, 0xf2, 0x9d, 0xee, 0x3c, 0xf2, 0x9d, - 0xee, 0x3c, 0xf2, 0x9d, 0xee, 0x3c, 0xf2, 0x9e, 0xf0, 0x3c, 0xf2, 0x9e, - 0xf1, 0x3c, 0xf3, 0x9e, 0xf0, 0x3c, 0xf3, 0x9e, 0xf1, 0x3c, 0xf3, 0x9e, - 0xf0, 0x3c, 0xf3, 0x9e, 0xf1, 0x3c, 0xf4, 0x9e, 0xf0, 0x3c, 0xf4, 0x9e, - 0xf1, 0x3c, 0xf4, 0x9e, 0xf0, 0x3c, 0xf4, 0x9e, 0xf1, 0x3c, 0xf5, 0x9f, - 0xf3, 0x3c, 0xf5, 0x9e, 0xf1, 0x3c, 0xf5, 0x9f, 0xf3, 0x3c, 0xf5, 0x9f, - 0xf2, 0x3c, 0xf5, 0x9f, 0xf3, 0x3c, 0xf6, 0x9f, 0xf2, 0x3c, 0xf6, 0x9f, - 0xf3, 0x3c, 0xf6, 0x9f, 0xf2, 0x3c, 0xf6, 0x9f, 0xf3, 0x3c, 0xf7, 0xa0, - 0xf5, 0x3c, 0xf7, 0x9f, 0xf3, 0x3c, 0xf7, 0xa0, 0xf5, 0x3c, 0xf7, 0xa0, - 0xf5, 0x3c, 0xf8, 0xa0, 0xf5, 0x3c, 0xf8, 0xa0, 0xf5, 0x3c, 0xf8, 0xa0, - 0xf5, 0x3c, 0xf8, 0xa0, 0xf5, 0x3c, 0xf8, 0xa0, 0xf5, 0x3c, 0xf9, 0xa1, - 0xf7, 0x3c, 0xf9, 0xa1, 0xf7, 0x3c, 0xf9, 0xa1, 0xf7, 0x3c, 0xf9, 0xa1, - 0xf7, 0x3c, 0xfa, 0xa1, 0xf7, 0x3c, 0xfa, 0xa1, 0xf7, 0x3c, 0xfa, 0xa1, - 0xf7, 0x3c, 0xfa, 0xa1, 0xf7, 0x3c, 0xfa, 0xa1, 0xf7, 0x3c, 0xfb, 0xa1, - 0xf7, 0x3c, 0xfb, 0xa1, 0xf9, 0x3c, 0xfb, 0xa1, 0xf7, 0x3c, 0xfb, 0xa1, - 0xf9, 0x3c, 0xfc, 0xa1, 0xf9, 0x3c, 0xfc, 0xa1, 0xf9, 0x3c, 0xfc, 0xa1, - 0xf9, 0x3c, 0xfc, 0xa1, 0xf9, 0x3c, 0xfc, 0xa1, 0xf9, 0x3c, 0xfd, 0xa1, - 0xf9, 0x3c, 0xfd, 0xa2, 0xfb, 0x3c, 0xfd, 0xa1, 0xf9, 0x3c, 0xfd, 0xa2, - 0xfb, 0x3c, 0xfe, 0xa1, 0xf9, 0x3c, 0xfe, 0xa2, 0xfb, 0x3c, 0xfe, 0xa2, - 0xfb, 0x3c, 0xfe, 0xa2, 0xfb, 0x3c, 0xfe, 0xa2, 0xfb, 0x3c, 0xff, 0xa2, - 0xfb, 0x3c, 0xff, 0xa2, 0xfb, 0x3c, 0x03, 0x90, 0x9a, 0x3c, 0x0a, 0x93, - 0x99, 0x3c, 0x0f, 0x90, 0x9a, 0x3c, 0x14, 0x93, 0x99, 0x3c, 0x17, 0x90, - 0x9a, 0x3c, 0x1b, 0x93, 0x99, 0x3c, 0x1e, 0x90, 0x9a, 0x3c, 0x20, 0x93, - 0x99, 0x3c, 0x23, 0x90, 0x9a, 0x3c, 0x25, 0x93, 0x99, 0x3c, 0x27, 0x90, - 0x9a, 0x3c, 0x29, 0x93, 0x99, 0x3c, 0x2b, 0x90, 0x9a, 0x3c, 0x2d, 0x93, - 0x99, 0x3c, 0x2f, 0x90, 0x9a, 0x3c, 0x31, 0x93, 0x99, 0x3c, 0x32, 0x90, - 0x9a, 0x3c, 0x34, 0x8c, 0x9a, 0x3c, 0x35, 0x90, 0x9a, 0x3c, 0x37, 0x8c, - 0x9a, 0x3c, 0x38, 0x90, 0x9a, 0x3c, 0x3a, 0x8c, 0x9a, 0x3c, 0x3b, 0x90, - 0x9a, 0x3c, 0x3c, 0x8c, 0x9a, 0x3c, 0x3e, 0x90, 0x9a, 0x3c, 0x3f, 0x8c, - 0x9a, 0x3c, 0x40, 0x90, 0x9a, 0x3c, 0x42, 0x8c, 0x9a, 0x3c, 0x43, 0x90, - 0x9a, 0x3c, 0x44, 0x8c, 0x9a, 0x3c, 0x45, 0x90, 0x9a, 0x3c, 0x46, 0x8c, - 0x9a, 0x3c, 0x47, 0x90, 0x9a, 0x3c, 0x48, 0x8c, 0x9a, 0x3c, 0x49, 0x90, - 0x9a, 0x3c, 0x4a, 0x8c, 0x9a, 0x3c, 0x4b, 0x90, 0x9a, 0x3c, 0x4c, 0x8c, - 0x9a, 0x3c, 0x4d, 0x90, 0x9a, 0x3c, 0x4e, 0x8c, 0x9a, 0x3c, 0x4f, 0x90, - 0x9a, 0x3c, 0x50, 0x8c, 0x9a, 0x3c, 0x51, 0x90, 0x9a, 0x3c, 0x52, 0x8c, - 0x9a, 0x3c, 0x53, 0x90, 0x9a, 0x3c, 0x54, 0x8c, 0x9a, 0x3c, 0x55, 0x90, - 0x9a, 0x3c, 0x56, 0x8c, 0x9a, 0x3c, 0x57, 0x90, 0x9a, 0x3c, 0x58, 0x8c, - 0x9a, 0x3c, 0x58, 0x90, 0x9a, 0x3c, 0x59, 0x8c, 0x9a, 0x3c, 0x5a, 0x90, - 0x9a, 0x3c, 0x5b, 0x8c, 0x9a, 0x3c, 0x5c, 0x90, 0x9a, 0x3c, 0x5d, 0x8c, - 0x9a, 0x3c, 0x5d, 0x90, 0x9a, 0x3c, 0x5e, 0x8c, 0x9a, 0x3c, 0x5f, 0x90, - 0x9a, 0x3c, 0x60, 0x8c, 0x9a, 0x3c, 0x60, 0x89, 0x9a, 0x3c, 0x61, 0x8c, - 0x9a, 0x3c, 0x62, 0x89, 0x9a, 0x3c, 0x63, 0x8c, 0x9a, 0x3c, 0x63, 0x89, - 0x9a, 0x3c, 0x64, 0x8c, 0x9a, 0x3c, 0x65, 0x89, 0x9a, 0x3c, 0x66, 0x8c, - 0x9a, 0x3c, 0x66, 0x89, 0x9a, 0x3c, 0x67, 0x8c, 0x9a, 0x3c, 0x68, 0x89, - 0x9a, 0x3c, 0x68, 0x8c, 0x9a, 0x3c, 0x69, 0x89, 0x9a, 0x3c, 0x6a, 0x8c, - 0x9a, 0x3c, 0x6a, 0x89, 0x9a, 0x3c, 0x6b, 0x8c, 0x9a, 0x3c, 0x6c, 0x89, - 0x9a, 0x3c, 0x6c, 0x8c, 0x9a, 0x3c, 0x6d, 0x89, 0x9a, 0x3c, 0x6e, 0x8c, - 0x9a, 0x3c, 0x6e, 0x89, 0x9a, 0x3c, 0x6f, 0x8c, 0x9a, 0x3c, 0x70, 0x89, - 0x9a, 0x3c, 0x70, 0x8c, 0x9a, 0x3c, 0x71, 0x89, 0x9a, 0x3c, 0x72, 0x8c, - 0x9a, 0x3c, 0x72, 0x89, 0x9a, 0x3c, 0x73, 0x8c, 0x9a, 0x3c, 0x73, 0x89, - 0x9a, 0x3c, 0x74, 0x8c, 0x9a, 0x3c, 0x75, 0x89, 0x9a, 0x3c, 0x75, 0x8c, - 0x9a, 0x3c, 0x76, 0x89, 0x9a, 0x3c, 0x76, 0x8c, 0x9a, 0x3c, 0x77, 0x89, - 0x9a, 0x3c, 0x78, 0x8c, 0x9a, 0x3c, 0x78, 0x89, 0x9a, 0x3c, 0x79, 0x8c, - 0x9a, 0x3c, 0x79, 0x89, 0x9a, 0x3c, 0x7a, 0x8c, 0x9a, 0x3c, 0x7a, 0x89, - 0x9a, 0x3c, 0x7b, 0x8c, 0x9a, 0x3c, 0x7c, 0x89, 0x9a, 0x3c, 0x7c, 0x8c, - 0x9a, 0x3c, 0x7d, 0x89, 0x9a, 0x3c, 0x7d, 0x8c, 0x9a, 0x3c, 0x7e, 0x89, - 0x9a, 0x3c, 0x7e, 0x8c, 0x9a, 0x3c, 0x7f, 0x89, 0x9a, 0x3c, 0x7f, 0x8c, - 0x9a, 0x3c, 0x80, 0x89, 0x9a, 0x3c, 0x81, 0x8c, 0x9a, 0x3c, 0x81, 0x89, - 0x9a, 0x3c, 0x82, 0x8c, 0x9a, 0x3c, 0x82, 0x89, 0x9a, 0x3c, 0x83, 0x8c, - 0x9a, 0x3c, 0x83, 0x89, 0x9a, 0x3c, 0x84, 0x8c, 0x9a, 0x3c, 0x84, 0x89, - 0x9a, 0x3c, 0x85, 0x86, 0x9b, 0x3c, 0x85, 0x89, 0x9a, 0x3c, 0x86, 0x86, - 0x9b, 0x3c, 0x86, 0x89, 0x9a, 0x3c, 0x87, 0x86, 0x9b, 0x3c, 0x87, 0x89, - 0x9a, 0x3c, 0x88, 0x86, 0x9b, 0x3c, 0x88, 0x89, 0x9a, 0x3c, 0x89, 0x86, - 0x9b, 0x3c, 0x89, 0x89, 0x9a, 0x3c, 0x8a, 0x86, 0x9b, 0x3c, 0x8a, 0x89, - 0x9a, 0x3c, 0x8b, 0x86, 0x9b, 0x3c, 0x8b, 0x89, 0x9a, 0x3c, 0x8c, 0x86, - 0x9b, 0x3c, 0x8c, 0x89, 0x9a, 0x3c, 0x8d, 0x86, 0x9b, 0x3c, 0x8d, 0x89, - 0x9a, 0x3c, 0x8e, 0x86, 0x9b, 0x3c, 0x8e, 0x89, 0x9a, 0x3c, 0x8e, 0x86, - 0x9b, 0x3c, 0x8f, 0x89, 0x9a, 0x3c, 0x8f, 0x86, 0x9b, 0x3c, 0x90, 0x89, - 0x9a, 0x3c, 0x90, 0x86, 0x9b, 0x3c, 0x91, 0x89, 0x9a, 0x3c, 0x91, 0x86, - 0x9b, 0x3c, 0x92, 0x89, 0x9a, 0x3c, 0x92, 0x86, 0x9b, 0x3c, 0x93, 0x89, - 0x9a, 0x3c, 0x93, 0x86, 0x9b, 0x3c, 0x94, 0x89, 0x9a, 0x3c, 0x94, 0x86, - 0x9b, 0x3c, 0x94, 0x85, 0x9b, 0x3c, 0x95, 0x86, 0x9b, 0x3c, 0x95, 0x85, - 0x9b, 0x3c, 0x96, 0x86, 0x9b, 0x3c, 0x96, 0x85, 0x9b, 0x3c, 0x97, 0x86, - 0x9b, 0x3c, 0x97, 0x85, 0x9b, 0x3c, 0x98, 0x86, 0x9b, 0x3c, 0x98, 0x85, - 0x9b, 0x3c, 0x98, 0x86, 0x9b, 0x3c, 0x99, 0x85, 0x9b, 0x3c, 0x99, 0x86, - 0x9b, 0x3c, 0x9a, 0x85, 0x9b, 0x3c, 0x9a, 0x86, 0x9b, 0x3c, 0x9a, 0x85, - 0x9b, 0x3c, 0x9b, 0x86, 0x9b, 0x3c, 0x9a, 0x85, 0x9b, 0x3c, 0x9b, 0x85, - 0x9c, 0x3c, 0x9a, 0x85, 0x9c, 0x3c, 0x9b, 0x85, 0x9d, 0x3c, 0x9d, 0x85, - 0x9d, 0x3a, 0x9d, 0x85, 0x9d, 0x3a, 0x9e, 0x85, 0x9e, 0x3a, 0x9e, 0x85, - 0x9e, 0x3a, 0x9f, 0x85, 0x9f, 0x3a, 0x9f, 0x85, 0x9f, 0x3a, 0x9f, 0x85, - 0x9f, 0x3a, 0xa0, 0x85, 0xa0, 0x3a, 0xa1, 0x85, 0xa0, 0x3b, 0xa1, 0x85, - 0xa1, 0x3b, 0xa1, 0x85, 0xa1, 0x3b, 0xa1, 0x85, 0xa1, 0x3b, 0xa2, 0x85, - 0xa2, 0x3b, 0xa2, 0x85, 0xa2, 0x3b, 0xa3, 0x85, 0xa3, 0x3b, 0xa3, 0x85, - 0xa3, 0x3b, 0xa3, 0x85, 0xa3, 0x3b, 0xa4, 0x85, 0xa4, 0x3b, 0xa4, 0x85, - 0xa4, 0x3b, 0xa5, 0x86, 0xa5, 0x3c, 0xa5, 0x86, 0xa5, 0x3c, 0xa5, 0x86, - 0xa5, 0x3c, 0xa6, 0x86, 0xa6, 0x3c, 0xa6, 0x86, 0xa6, 0x3c, 0xa6, 0x86, - 0xa6, 0x3c, 0xa7, 0x86, 0xa7, 0x3c, 0xa7, 0x86, 0xa7, 0x3c, 0xa8, 0x86, - 0xa8, 0x3c, 0xa8, 0x86, 0xa7, 0x3c, 0xa8, 0x86, 0xa8, 0x3c, 0xa9, 0x87, - 0xa9, 0x3c, 0xa9, 0x87, 0xa9, 0x3c, 0xaa, 0x87, 0xaa, 0x3c, 0xaa, 0x87, - 0xaa, 0x3c, 0xaa, 0x87, 0xaa, 0x3c, 0xab, 0x87, 0xab, 0x3c, 0xab, 0x87, - 0xab, 0x3c, 0xab, 0x87, 0xab, 0x3c, 0xac, 0x87, 0xab, 0x3c, 0xac, 0x87, - 0xab, 0x3c, 0xac, 0x87, 0xab, 0x3c, 0xad, 0x87, 0xab, 0x3c, 0xad, 0x88, - 0xad, 0x3c, 0xae, 0x88, 0xae, 0x3c, 0xae, 0x88, 0xae, 0x3c, 0xae, 0x88, - 0xae, 0x3c, 0xaf, 0x88, 0xaf, 0x3c, 0xaf, 0x88, 0xae, 0x3c, 0xaf, 0x88, - 0xaf, 0x3c, 0xb0, 0x88, 0xae, 0x3c, 0xb0, 0x88, 0xaf, 0x3c, 0xb0, 0x89, - 0xb0, 0x3c, 0xb1, 0x89, 0xb1, 0x3c, 0xb1, 0x89, 0xb1, 0x3c, 0xb2, 0x89, - 0xb2, 0x3c, 0xb2, 0x89, 0xb2, 0x3c, 0xb2, 0x89, 0xb2, 0x3c, 0xb3, 0x89, - 0xb2, 0x3c, 0xb3, 0x89, 0xb2, 0x3c, 0xb3, 0x89, 0xb2, 0x3c, 0xb4, 0x89, - 0xb2, 0x3c, 0xb4, 0x89, 0xb2, 0x3c, 0xb4, 0x89, 0xb2, 0x3c, 0xb5, 0x8a, - 0xb5, 0x3c, 0xb5, 0x8a, 0xb5, 0x3c, 0xb5, 0x8a, 0xb5, 0x3c, 0xb6, 0x8a, - 0xb5, 0x3c, 0xb6, 0x8a, 0xb5, 0x3c, 0xb6, 0x8a, 0xb5, 0x3c, 0xb7, 0x8a, - 0xb5, 0x3c, 0xb7, 0x8a, 0xb5, 0x3c, 0xb7, 0x8a, 0xb5, 0x3c, 0xb8, 0x8b, - 0xb8, 0x3c, 0xb8, 0x8b, 0xb8, 0x3c, 0xb8, 0x8b, 0xb8, 0x3c, 0xb9, 0x8b, - 0xb8, 0x3c, 0xb9, 0x8b, 0xb8, 0x3c, 0xb9, 0x8b, 0xb8, 0x3c, 0xba, 0x8b, - 0xb8, 0x3c, 0xba, 0x8b, 0xb8, 0x3c, 0xba, 0x8b, 0xb8, 0x3c, 0xbb, 0x8c, - 0xbb, 0x3c, 0xbb, 0x8c, 0xbb, 0x3c, 0xbb, 0x8c, 0xbb, 0x3c, 0xbc, 0x8c, - 0xbc, 0x3c, 0xbc, 0x8c, 0xbb, 0x3c, 0xbc, 0x8c, 0xbc, 0x3c, 0xbd, 0x8c, - 0xbb, 0x3c, 0xbd, 0x8c, 0xbc, 0x3c, 0xbd, 0x8c, 0xbb, 0x3c, 0xbe, 0x8c, - 0xbc, 0x3c, 0xbe, 0x8d, 0xbe, 0x3c, 0xbe, 0x8d, 0xbe, 0x3c, 0xbf, 0x8d, - 0xbf, 0x3c, 0xbf, 0x8d, 0xbe, 0x3c, 0xbf, 0x8d, 0xbf, 0x3c, 0xc0, 0x8d, - 0xbe, 0x3c, 0xc0, 0x8d, 0xbf, 0x3c, 0xc0, 0x8d, 0xbe, 0x3c, 0xc1, 0x8d, - 0xbf, 0x3c, 0xc1, 0x8d, 0xbe, 0x3c, 0xc1, 0x8d, 0xbf, 0x3c, 0xc1, 0x8e, - 0xc1, 0x3c, 0xc2, 0x8e, 0xc1, 0x3c, 0xc2, 0x8e, 0xc1, 0x3c, 0xc2, 0x8e, - 0xc1, 0x3c, 0xc3, 0x8e, 0xc1, 0x3c, 0xc3, 0x8e, 0xc1, 0x3c, 0xc3, 0x8e, - 0xc1, 0x3c, 0xc4, 0x8e, 0xc1, 0x3c, 0xc4, 0x8e, 0xc1, 0x3c, 0xc4, 0x8f, - 0xc4, 0x3c, 0xc5, 0x8f, 0xc5, 0x3c, 0xc5, 0x8f, 0xc4, 0x3c, 0xc5, 0x8f, - 0xc5, 0x3c, 0xc6, 0x8f, 0xc4, 0x3c, 0xc6, 0x8f, 0xc5, 0x3c, 0xc6, 0x8f, - 0xc4, 0x3c, 0xc6, 0x8f, 0xc5, 0x3c, 0xc7, 0x8f, 0xc4, 0x3c, 0xc7, 0x8f, - 0xc5, 0x3c, 0xc7, 0x90, 0xc7, 0x3c, 0xc8, 0x90, 0xc7, 0x3c, 0xc8, 0x90, - 0xc7, 0x3c, 0xc8, 0x90, 0xc7, 0x3c, 0xc9, 0x90, 0xc7, 0x3c, 0xc9, 0x90, - 0xc7, 0x3c, 0xc9, 0x90, 0xc7, 0x3c, 0xc9, 0x90, 0xc7, 0x3c, 0xca, 0x90, - 0xc7, 0x3c, 0xca, 0x91, 0xca, 0x3c, 0xca, 0x91, 0xca, 0x3c, 0xcb, 0x91, - 0xca, 0x3c, 0xcb, 0x91, 0xca, 0x3c, 0xcb, 0x91, 0xca, 0x3c, 0xcc, 0x91, - 0xca, 0x3c, 0xcc, 0x91, 0xca, 0x3c, 0xcc, 0x91, 0xca, 0x3c, 0xcc, 0x91, - 0xca, 0x3c, 0xcd, 0x92, 0xcd, 0x3c, 0xcd, 0x92, 0xcd, 0x3c, 0xcd, 0x92, - 0xcd, 0x3c, 0xce, 0x92, 0xcd, 0x3c, 0xce, 0x92, 0xcd, 0x3c, 0xce, 0x92, - 0xcd, 0x3c, 0xce, 0x92, 0xcd, 0x3c, 0xcf, 0x92, 0xcd, 0x3c, 0xcf, 0x92, - 0xcd, 0x3c, 0xcf, 0x92, 0xcd, 0x3c, 0xd0, 0x92, 0xcd, 0x3c, 0xd0, 0x92, - 0xcd, 0x3c, 0xd0, 0x93, 0xd0, 0x3c, 0xd0, 0x93, 0xcf, 0x3c, 0xd1, 0x93, - 0xd0, 0x3c, 0xd1, 0x93, 0xcf, 0x3c, 0xd1, 0x93, 0xd0, 0x3c, 0xd2, 0x93, - 0xcf, 0x3c, 0xd2, 0x93, 0xd0, 0x3c, 0xd2, 0x93, 0xcf, 0x3c, 0xd2, 0x93, - 0xd0, 0x3c, 0xd3, 0x94, 0xd2, 0x3c, 0xd3, 0x94, 0xd2, 0x3c, 0xd3, 0x94, - 0xd2, 0x3c, 0xd4, 0x94, 0xd2, 0x3c, 0xd4, 0x94, 0xd2, 0x3c, 0xd4, 0x94, - 0xd2, 0x3c, 0xd4, 0x94, 0xd2, 0x3c, 0xd5, 0x94, 0xd2, 0x3c, 0xd5, 0x94, - 0xd2, 0x3c, 0xd5, 0x94, 0xd2, 0x3c, 0xd6, 0x94, 0xd5, 0x3c, 0xd6, 0x94, - 0xd5, 0x3c, 0xd6, 0x94, 0xd5, 0x3c, 0xd6, 0x94, 0xd5, 0x3c, 0xd7, 0x94, - 0xd5, 0x3c, 0xd7, 0x94, 0xd5, 0x3c, 0xd7, 0x94, 0xd5, 0x3c, 0xd7, 0x94, - 0xd5, 0x3c, 0xd8, 0x94, 0xd5, 0x3c, 0xd8, 0x95, 0xd7, 0x3c, 0xd8, 0x94, - 0xd5, 0x3c, 0xd9, 0x95, 0xd7, 0x3c, 0xd9, 0x95, 0xd7, 0x3c, 0xd9, 0x95, - 0xd7, 0x3c, 0xd9, 0x95, 0xd7, 0x3c, 0xda, 0x95, 0xd7, 0x3c, 0xda, 0x95, - 0xd7, 0x3c, 0xda, 0x95, 0xd7, 0x3c, 0xda, 0x95, 0xd7, 0x3c, 0xdb, 0x95, - 0xd7, 0x3c, 0xdb, 0x96, 0xda, 0x3c, 0xdb, 0x96, 0xda, 0x3c, 0xdb, 0x96, - 0xda, 0x3c, 0xdc, 0x96, 0xda, 0x3c, 0xdc, 0x96, 0xda, 0x3c, 0xdc, 0x96, - 0xda, 0x3c, 0xdd, 0x96, 0xda, 0x3c, 0xdd, 0x96, 0xda, 0x3c, 0xdd, 0x96, - 0xda, 0x3c, 0xdd, 0x96, 0xda, 0x3c, 0xde, 0x97, 0xdd, 0x3c, 0xde, 0x97, - 0xdc, 0x3c, 0xde, 0x97, 0xdd, 0x3c, 0xde, 0x97, 0xdc, 0x3c, 0xdf, 0x97, - 0xdd, 0x3c, 0xdf, 0x97, 0xdc, 0x3c, 0xdf, 0x97, 0xdd, 0x3c, 0xdf, 0x97, - 0xdc, 0x3c, 0xe0, 0x97, 0xdd, 0x3c, 0xe0, 0x98, 0xdf, 0x3c, 0xe0, 0x98, - 0xdf, 0x3c, 0xe1, 0x98, 0xdf, 0x3c, 0xe1, 0x98, 0xdf, 0x3c, 0xe1, 0x98, - 0xdf, 0x3c, 0xe1, 0x98, 0xdf, 0x3c, 0xe2, 0x98, 0xdf, 0x3c, 0xe2, 0x98, - 0xdf, 0x3c, 0xe2, 0x98, 0xdf, 0x3c, 0xe2, 0x99, 0xe1, 0x3c, 0xe3, 0x99, - 0xe2, 0x3c, 0xe3, 0x99, 0xe1, 0x3c, 0xe3, 0x99, 0xe2, 0x3c, 0xe3, 0x99, - 0xe1, 0x3c, 0xe4, 0x99, 0xe2, 0x3c, 0xe4, 0x99, 0xe1, 0x3c, 0xe4, 0x99, - 0xe2, 0x3c, 0xe4, 0x99, 0xe1, 0x3c, 0xe5, 0x99, 0xe2, 0x3c, 0xe5, 0x9a, - 0xe4, 0x3c, 0xe5, 0x99, 0xe2, 0x3c, 0xe5, 0x9a, 0xe4, 0x3c, 0xe6, 0x9a, - 0xe4, 0x3c, 0xe6, 0x9a, 0xe4, 0x3c, 0xe6, 0x9a, 0xe4, 0x3c, 0xe6, 0x9a, - 0xe4, 0x3c, 0xe7, 0x9a, 0xe4, 0x3c, 0xe7, 0x9a, 0xe4, 0x3c, 0xe7, 0x9a, - 0xe6, 0x3c, 0xe7, 0x9a, 0xe4, 0x3c, 0xe8, 0x9a, 0xe6, 0x3c, 0xe8, 0x9a, - 0xe6, 0x3c, 0xe8, 0x9a, 0xe6, 0x3c, 0xe8, 0x9a, 0xe6, 0x3c, 0xe9, 0x9a, - 0xe6, 0x3c, 0xe9, 0x9a, 0xe6, 0x3c, 0xe9, 0x9a, 0xe6, 0x3c, 0xe9, 0x9a, - 0xe6, 0x3c, 0xea, 0x9a, 0xe6, 0x3c, 0xea, 0x9b, 0xe8, 0x3c, 0xea, 0x9b, - 0xe9, 0x3c, 0xea, 0x9b, 0xe8, 0x3c, 0xeb, 0x9b, 0xe9, 0x3c, 0xeb, 0x9b, - 0xe8, 0x3c, 0xeb, 0x9b, 0xe9, 0x3c, 0xeb, 0x9b, 0xe8, 0x3c, 0xec, 0x9b, - 0xe9, 0x3c, 0xec, 0x9b, 0xe8, 0x3c, 0xec, 0x9b, 0xe9, 0x3c, 0xec, 0x9c, - 0xeb, 0x3c, 0xec, 0x9b, 0xe9, 0x3c, 0xed, 0x9c, 0xeb, 0x3c, 0xed, 0x9c, - 0xeb, 0x3c, 0xed, 0x9c, 0xeb, 0x3c, 0xed, 0x9c, 0xeb, 0x3c, 0xee, 0x9c, - 0xeb, 0x3c, 0xee, 0x9c, 0xeb, 0x3c, 0xee, 0x9c, 0xeb, 0x3c, 0xee, 0x9d, - 0xed, 0x3c, 0xef, 0x9d, 0xed, 0x3c, 0xef, 0x9d, 0xed, 0x3c, 0xef, 0x9d, - 0xed, 0x3c, 0xef, 0x9d, 0xed, 0x3c, 0xf0, 0x9d, 0xed, 0x3c, 0xf0, 0x9d, - 0xed, 0x3c, 0xf0, 0x9d, 0xed, 0x3c, 0xf0, 0x9d, 0xed, 0x3c, 0xf1, 0x9d, - 0xed, 0x3c, 0xf1, 0x9e, 0xef, 0x3c, 0xf1, 0x9d, 0xed, 0x3c, 0xf1, 0x9e, - 0xef, 0x3c, 0xf2, 0x9e, 0xef, 0x3c, 0xf2, 0x9e, 0xef, 0x3c, 0xf2, 0x9e, - 0xef, 0x3c, 0xf2, 0x9e, 0xef, 0x3c, 0xf2, 0x9e, 0xef, 0x3c, 0xf3, 0x9e, - 0xef, 0x3c, 0xf3, 0x9e, 0xef, 0x3c, 0xf3, 0x9e, 0xef, 0x3c, 0xf3, 0x9f, - 0xf2, 0x3c, 0xf4, 0x9f, 0xf1, 0x3c, 0xf4, 0x9f, 0xf2, 0x3c, 0xf4, 0x9f, - 0xf1, 0x3c, 0xf4, 0x9f, 0xf2, 0x3c, 0xf5, 0x9f, 0xf1, 0x3c, 0xf5, 0x9f, - 0xf2, 0x3c, 0xf5, 0x9f, 0xf1, 0x3c, 0xf5, 0x9f, 0xf2, 0x3c, 0xf5, 0x9f, - 0xf4, 0x3c, 0xf6, 0x9f, 0xf4, 0x3c, 0xf6, 0x9f, 0xf4, 0x3c, 0xf6, 0x9f, - 0xf4, 0x3c, 0xf6, 0x9f, 0xf4, 0x3c, 0xf7, 0x9f, 0xf4, 0x3c, 0xf7, 0x9f, - 0xf4, 0x3c, 0xf7, 0x9f, 0xf4, 0x3c, 0xf7, 0x9f, 0xf4, 0x3c, 0xf8, 0x9f, - 0xf4, 0x3c, 0xf8, 0xa0, 0xf6, 0x3c, 0xf8, 0x9f, 0xf4, 0x3c, 0xf8, 0xa0, - 0xf6, 0x3c, 0xf8, 0xa0, 0xf6, 0x3c, 0xf9, 0xa0, 0xf6, 0x3c, 0xf9, 0xa0, - 0xf6, 0x3c, 0xf9, 0xa0, 0xf6, 0x3c, 0xf9, 0xa0, 0xf6, 0x3c, 0xfa, 0xa0, - 0xf6, 0x3c, 0xfa, 0xa1, 0xf8, 0x3c, 0xfa, 0xa0, 0xf6, 0x3c, 0xfa, 0xa1, - 0xf8, 0x3c, 0xfa, 0xa1, 0xf8, 0x3c, 0xfb, 0xa1, 0xf8, 0x3c, 0xfb, 0xa1, - 0xf8, 0x3c, 0xfb, 0xa1, 0xf8, 0x3c, 0xfb, 0xa1, 0xf8, 0x3c, 0xfc, 0xa1, - 0xf8, 0x3c, 0xfc, 0xa2, 0xfa, 0x3c, 0xfc, 0xa2, 0xfa, 0x3c, 0xfc, 0xa2, - 0xfa, 0x3c, 0xfc, 0xa2, 0xfa, 0x3c, 0xfd, 0xa2, 0xfa, 0x3c, 0xfd, 0xa2, - 0xfa, 0x3c, 0xfd, 0xa2, 0xfa, 0x3c, 0xfd, 0xa2, 0xfa, 0x3c, 0xfe, 0xa2, - 0xfa, 0x3c, 0xfe, 0xa2, 0xfa, 0x3c, 0xfe, 0xa2, 0xfa, 0x3c, 0xfe, 0xa2, - 0xfa, 0x3c, 0xfe, 0xa2, 0xfa, 0x3c, 0xff, 0xa2, 0xfa, 0x3c, 0xff, 0xa2, - 0xfa, 0x3c, 0x03, 0x8f, 0x9a, 0x3d, 0x0a, 0x92, 0x99, 0x3d, 0x0f, 0x8f, - 0x9a, 0x3d, 0x14, 0x92, 0x99, 0x3d, 0x17, 0x8f, 0x9a, 0x3d, 0x1b, 0x92, - 0x99, 0x3d, 0x1e, 0x8f, 0x9a, 0x3d, 0x20, 0x92, 0x99, 0x3d, 0x23, 0x8f, - 0x9a, 0x3d, 0x25, 0x92, 0x99, 0x3d, 0x27, 0x8f, 0x9a, 0x3d, 0x29, 0x92, - 0x99, 0x3d, 0x2b, 0x8f, 0x9a, 0x3d, 0x2d, 0x92, 0x99, 0x3d, 0x2f, 0x8f, - 0x9a, 0x3d, 0x31, 0x92, 0x99, 0x3d, 0x32, 0x8f, 0x9a, 0x3d, 0x34, 0x92, - 0x99, 0x3d, 0x35, 0x8f, 0x9a, 0x3d, 0x37, 0x92, 0x99, 0x3d, 0x38, 0x8f, - 0x9a, 0x3d, 0x3a, 0x92, 0x99, 0x3d, 0x3b, 0x8f, 0x9a, 0x3d, 0x3c, 0x92, - 0x99, 0x3d, 0x3e, 0x8f, 0x9a, 0x3d, 0x3f, 0x92, 0x99, 0x3d, 0x40, 0x8f, - 0x9a, 0x3d, 0x42, 0x92, 0x99, 0x3d, 0x43, 0x8f, 0x9a, 0x3d, 0x44, 0x92, - 0x99, 0x3d, 0x45, 0x8f, 0x9a, 0x3d, 0x46, 0x92, 0x99, 0x3d, 0x47, 0x8f, - 0x9a, 0x3d, 0x48, 0x92, 0x99, 0x3d, 0x49, 0x8f, 0x9a, 0x3d, 0x4a, 0x92, - 0x99, 0x3d, 0x4b, 0x8f, 0x9a, 0x3d, 0x4c, 0x92, 0x99, 0x3d, 0x4d, 0x8f, - 0x9a, 0x3d, 0x4e, 0x92, 0x99, 0x3d, 0x4f, 0x8f, 0x9a, 0x3d, 0x50, 0x92, - 0x99, 0x3d, 0x51, 0x8f, 0x9a, 0x3d, 0x52, 0x92, 0x99, 0x3d, 0x53, 0x8f, - 0x9a, 0x3d, 0x54, 0x8d, 0x9a, 0x3d, 0x55, 0x8f, 0x9a, 0x3d, 0x56, 0x8d, - 0x9a, 0x3d, 0x57, 0x8f, 0x9a, 0x3d, 0x58, 0x8d, 0x9a, 0x3d, 0x58, 0x8f, - 0x9a, 0x3d, 0x59, 0x8d, 0x9a, 0x3d, 0x5a, 0x8f, 0x9a, 0x3d, 0x5b, 0x8d, - 0x9a, 0x3d, 0x5c, 0x8f, 0x9a, 0x3d, 0x5d, 0x8d, 0x9a, 0x3d, 0x5d, 0x8f, - 0x9a, 0x3d, 0x5e, 0x8d, 0x9a, 0x3d, 0x5f, 0x8f, 0x9a, 0x3d, 0x60, 0x8d, - 0x9a, 0x3d, 0x60, 0x8f, 0x9a, 0x3d, 0x61, 0x8d, 0x9a, 0x3d, 0x62, 0x8f, - 0x9a, 0x3d, 0x63, 0x8d, 0x9a, 0x3d, 0x63, 0x8f, 0x9a, 0x3d, 0x64, 0x8d, - 0x9a, 0x3d, 0x65, 0x8f, 0x9a, 0x3d, 0x66, 0x8d, 0x9a, 0x3d, 0x66, 0x8f, - 0x9a, 0x3d, 0x67, 0x8d, 0x9a, 0x3d, 0x68, 0x8f, 0x9a, 0x3d, 0x68, 0x8d, - 0x9a, 0x3d, 0x69, 0x8f, 0x9a, 0x3d, 0x6a, 0x8d, 0x9a, 0x3d, 0x6a, 0x8f, - 0x9a, 0x3d, 0x6b, 0x8d, 0x9a, 0x3d, 0x6c, 0x8f, 0x9a, 0x3d, 0x6c, 0x8d, - 0x9a, 0x3d, 0x6d, 0x89, 0x9a, 0x3d, 0x6e, 0x8d, 0x9a, 0x3d, 0x6e, 0x89, - 0x9a, 0x3d, 0x6f, 0x8d, 0x9a, 0x3d, 0x70, 0x89, 0x9a, 0x3d, 0x70, 0x8d, - 0x9a, 0x3d, 0x71, 0x89, 0x9a, 0x3d, 0x72, 0x8d, 0x9a, 0x3d, 0x72, 0x89, - 0x9a, 0x3d, 0x73, 0x8d, 0x9a, 0x3d, 0x73, 0x89, 0x9a, 0x3d, 0x74, 0x8d, - 0x9a, 0x3d, 0x75, 0x89, 0x9a, 0x3d, 0x75, 0x8d, 0x9a, 0x3d, 0x76, 0x89, - 0x9a, 0x3d, 0x76, 0x8d, 0x9a, 0x3d, 0x77, 0x89, 0x9a, 0x3d, 0x78, 0x8d, - 0x9a, 0x3d, 0x78, 0x89, 0x9a, 0x3d, 0x79, 0x8d, 0x9a, 0x3d, 0x79, 0x89, - 0x9a, 0x3d, 0x7a, 0x8d, 0x9a, 0x3d, 0x7a, 0x89, 0x9a, 0x3d, 0x7b, 0x8d, - 0x9a, 0x3d, 0x7c, 0x89, 0x9a, 0x3d, 0x7c, 0x8d, 0x9a, 0x3d, 0x7d, 0x89, - 0x9a, 0x3d, 0x7d, 0x8d, 0x9a, 0x3d, 0x7e, 0x89, 0x9a, 0x3d, 0x7e, 0x8d, - 0x9a, 0x3d, 0x7f, 0x89, 0x9a, 0x3d, 0x7f, 0x8d, 0x9a, 0x3d, 0x80, 0x89, - 0x9a, 0x3d, 0x81, 0x8d, 0x9a, 0x3d, 0x81, 0x89, 0x9a, 0x3d, 0x82, 0x8d, - 0x9a, 0x3d, 0x82, 0x89, 0x9a, 0x3d, 0x83, 0x8d, 0x9a, 0x3d, 0x83, 0x89, - 0x9a, 0x3d, 0x84, 0x8d, 0x9a, 0x3d, 0x84, 0x89, 0x9a, 0x3d, 0x85, 0x86, - 0x9b, 0x3d, 0x85, 0x89, 0x9a, 0x3d, 0x86, 0x86, 0x9b, 0x3d, 0x86, 0x89, - 0x9a, 0x3d, 0x87, 0x86, 0x9b, 0x3d, 0x87, 0x89, 0x9a, 0x3d, 0x88, 0x86, - 0x9b, 0x3d, 0x88, 0x89, 0x9a, 0x3d, 0x89, 0x86, 0x9b, 0x3d, 0x89, 0x89, - 0x9a, 0x3d, 0x8a, 0x86, 0x9b, 0x3d, 0x8a, 0x89, 0x9a, 0x3d, 0x8b, 0x86, - 0x9b, 0x3d, 0x8b, 0x89, 0x9a, 0x3d, 0x8c, 0x86, 0x9b, 0x3d, 0x8c, 0x89, - 0x9a, 0x3d, 0x8d, 0x86, 0x9b, 0x3d, 0x8d, 0x89, 0x9a, 0x3d, 0x8e, 0x86, - 0x9b, 0x3d, 0x8e, 0x89, 0x9a, 0x3d, 0x8e, 0x86, 0x9b, 0x3d, 0x8f, 0x89, - 0x9a, 0x3d, 0x8f, 0x86, 0x9b, 0x3d, 0x90, 0x89, 0x9a, 0x3d, 0x90, 0x86, - 0x9b, 0x3d, 0x91, 0x89, 0x9a, 0x3d, 0x91, 0x86, 0x9b, 0x3d, 0x92, 0x89, - 0x9a, 0x3d, 0x92, 0x86, 0x9b, 0x3d, 0x93, 0x89, 0x9a, 0x3d, 0x93, 0x86, - 0x9b, 0x3d, 0x94, 0x89, 0x9a, 0x3d, 0x94, 0x86, 0x9b, 0x3d, 0x94, 0x89, - 0x9a, 0x3d, 0x95, 0x86, 0x9b, 0x3d, 0x95, 0x89, 0x9a, 0x3d, 0x96, 0x86, - 0x9b, 0x3d, 0x96, 0x86, 0x9b, 0x3d, 0x97, 0x86, 0x9b, 0x3d, 0x97, 0x86, - 0x9b, 0x3d, 0x98, 0x86, 0x9b, 0x3d, 0x98, 0x86, 0x9b, 0x3d, 0x98, 0x86, - 0x9b, 0x3d, 0x99, 0x86, 0x9b, 0x3d, 0x99, 0x86, 0x9b, 0x3d, 0x9a, 0x86, - 0x9b, 0x3d, 0x9a, 0x86, 0x9b, 0x3d, 0x9a, 0x86, 0x9b, 0x3d, 0x9b, 0x86, - 0x9b, 0x3c, 0x9a, 0x86, 0x9b, 0x3d, 0x9b, 0x86, 0x9c, 0x3c, 0x9a, 0x86, - 0x9c, 0x3d, 0x9b, 0x86, 0x9d, 0x3c, 0x9d, 0x86, 0x9d, 0x3a, 0x9f, 0x86, - 0x9d, 0x3b, 0x9f, 0x86, 0x9e, 0x3b, 0x9f, 0x86, 0x9e, 0x3b, 0x9f, 0x86, - 0x9f, 0x3b, 0x9f, 0x86, 0x9f, 0x3b, 0x9f, 0x86, 0x9f, 0x3b, 0xa0, 0x86, - 0xa0, 0x3b, 0xa0, 0x86, 0xa0, 0x3b, 0xa1, 0x86, 0xa1, 0x3b, 0xa1, 0x86, - 0xa1, 0x3b, 0xa1, 0x86, 0xa1, 0x3b, 0xa3, 0x86, 0xa2, 0x3c, 0xa3, 0x86, - 0xa2, 0x3c, 0xa3, 0x86, 0xa3, 0x3c, 0xa3, 0x86, 0xa3, 0x3c, 0xa3, 0x86, - 0xa3, 0x3c, 0xa4, 0x86, 0xa4, 0x3c, 0xa4, 0x86, 0xa4, 0x3c, 0xa5, 0x86, - 0xa5, 0x3c, 0xa5, 0x86, 0xa5, 0x3c, 0xa5, 0x86, 0xa5, 0x3c, 0xa6, 0x86, - 0xa6, 0x3c, 0xa6, 0x86, 0xa6, 0x3c, 0xa6, 0x87, 0xa6, 0x3d, 0xa7, 0x87, - 0xa7, 0x3d, 0xa7, 0x87, 0xa7, 0x3d, 0xa8, 0x87, 0xa8, 0x3d, 0xa8, 0x87, - 0xa8, 0x3d, 0xa8, 0x87, 0xa8, 0x3d, 0xa9, 0x87, 0xa9, 0x3d, 0xa9, 0x87, - 0xa9, 0x3d, 0xaa, 0x87, 0xaa, 0x3d, 0xaa, 0x87, 0xa9, 0x3d, 0xaa, 0x87, - 0xaa, 0x3d, 0xab, 0x88, 0xab, 0x3d, 0xab, 0x88, 0xab, 0x3d, 0xab, 0x88, - 0xab, 0x3d, 0xac, 0x88, 0xac, 0x3d, 0xac, 0x88, 0xac, 0x3d, 0xac, 0x88, - 0xac, 0x3d, 0xad, 0x88, 0xad, 0x3d, 0xad, 0x88, 0xad, 0x3d, 0xae, 0x88, - 0xad, 0x3d, 0xae, 0x88, 0xad, 0x3d, 0xae, 0x88, 0xad, 0x3d, 0xaf, 0x88, - 0xad, 0x3d, 0xaf, 0x89, 0xaf, 0x3d, 0xaf, 0x89, 0xaf, 0x3d, 0xb0, 0x89, - 0xb0, 0x3d, 0xb0, 0x89, 0xb0, 0x3d, 0xb0, 0x89, 0xb0, 0x3d, 0xb1, 0x89, - 0xb0, 0x3d, 0xb1, 0x89, 0xb0, 0x3d, 0xb2, 0x89, 0xb2, 0x3d, 0xb2, 0x89, - 0xb2, 0x3d, 0xb2, 0x89, 0xb2, 0x3d, 0xb3, 0x89, 0xb2, 0x3d, 0xb3, 0x89, - 0xb2, 0x3d, 0xb3, 0x8a, 0xb3, 0x3d, 0xb4, 0x8a, 0xb4, 0x3d, 0xb4, 0x8a, - 0xb3, 0x3d, 0xb4, 0x8a, 0xb4, 0x3d, 0xb5, 0x8a, 0xb3, 0x3d, 0xb5, 0x8a, - 0xb4, 0x3d, 0xb5, 0x8b, 0xb5, 0x3d, 0xb6, 0x8b, 0xb6, 0x3d, 0xb6, 0x8b, - 0xb6, 0x3d, 0xb6, 0x8b, 0xb6, 0x3d, 0xb7, 0x8b, 0xb7, 0x3d, 0xb7, 0x8b, - 0xb7, 0x3d, 0xb7, 0x8b, 0xb7, 0x3d, 0xb8, 0x8b, 0xb7, 0x3d, 0xb8, 0x8b, - 0xb7, 0x3d, 0xb8, 0x8b, 0xb7, 0x3d, 0xb9, 0x8b, 0xb7, 0x3d, 0xb9, 0x8b, - 0xb7, 0x3d, 0xb9, 0x8c, 0xb9, 0x3d, 0xba, 0x8c, 0xba, 0x3d, 0xba, 0x8c, - 0xba, 0x3d, 0xba, 0x8c, 0xba, 0x3d, 0xbb, 0x8c, 0xba, 0x3d, 0xbb, 0x8c, - 0xba, 0x3d, 0xbb, 0x8c, 0xba, 0x3d, 0xbc, 0x8c, 0xba, 0x3d, 0xbc, 0x8c, - 0xba, 0x3d, 0xbc, 0x8d, 0xbc, 0x3d, 0xbd, 0x8d, 0xbd, 0x3d, 0xbd, 0x8d, - 0xbd, 0x3d, 0xbd, 0x8d, 0xbd, 0x3d, 0xbe, 0x8d, 0xbd, 0x3d, 0xbe, 0x8d, - 0xbd, 0x3d, 0xbe, 0x8d, 0xbd, 0x3d, 0xbf, 0x8d, 0xbd, 0x3d, 0xbf, 0x8d, - 0xbd, 0x3d, 0xbf, 0x8e, 0xbf, 0x3d, 0xc0, 0x8e, 0xc0, 0x3d, 0xc0, 0x8e, - 0xc0, 0x3d, 0xc0, 0x8e, 0xc0, 0x3d, 0xc1, 0x8e, 0xc0, 0x3d, 0xc1, 0x8e, - 0xc0, 0x3d, 0xc1, 0x8e, 0xc0, 0x3d, 0xc1, 0x8e, 0xc0, 0x3d, 0xc2, 0x8e, - 0xc0, 0x3d, 0xc2, 0x8e, 0xc0, 0x3d, 0xc2, 0x8e, 0xc0, 0x3d, 0xc3, 0x8e, - 0xc0, 0x3d, 0xc3, 0x8e, 0xc3, 0x3d, 0xc3, 0x8e, 0xc3, 0x3d, 0xc4, 0x8e, - 0xc3, 0x3d, 0xc4, 0x8e, 0xc3, 0x3d, 0xc4, 0x8e, 0xc3, 0x3d, 0xc5, 0x8e, - 0xc3, 0x3d, 0xc5, 0x8e, 0xc3, 0x3d, 0xc5, 0x8e, 0xc3, 0x3d, 0xc6, 0x8e, - 0xc3, 0x3d, 0xc6, 0x8f, 0xc6, 0x3d, 0xc6, 0x8f, 0xc6, 0x3d, 0xc6, 0x8f, - 0xc6, 0x3d, 0xc7, 0x8f, 0xc6, 0x3d, 0xc7, 0x8f, 0xc6, 0x3d, 0xc7, 0x8f, - 0xc6, 0x3d, 0xc8, 0x8f, 0xc6, 0x3d, 0xc8, 0x8f, 0xc6, 0x3d, 0xc8, 0x8f, - 0xc6, 0x3d, 0xc9, 0x90, 0xc9, 0x3d, 0xc9, 0x90, 0xc9, 0x3d, 0xc9, 0x90, - 0xc9, 0x3d, 0xc9, 0x90, 0xc9, 0x3d, 0xca, 0x90, 0xc9, 0x3d, 0xca, 0x90, - 0xc9, 0x3d, 0xca, 0x90, 0xc9, 0x3d, 0xcb, 0x90, 0xc9, 0x3d, 0xcb, 0x90, - 0xc9, 0x3d, 0xcb, 0x90, 0xc9, 0x3d, 0xcc, 0x91, 0xcc, 0x3d, 0xcc, 0x91, - 0xcb, 0x3d, 0xcc, 0x91, 0xcc, 0x3d, 0xcc, 0x91, 0xcb, 0x3d, 0xcd, 0x91, - 0xcc, 0x3d, 0xcd, 0x91, 0xcb, 0x3d, 0xcd, 0x91, 0xcc, 0x3d, 0xce, 0x91, - 0xcb, 0x3d, 0xce, 0x91, 0xcc, 0x3d, 0xce, 0x92, 0xce, 0x3d, 0xce, 0x92, - 0xce, 0x3d, 0xcf, 0x92, 0xce, 0x3d, 0xcf, 0x92, 0xce, 0x3d, 0xcf, 0x92, - 0xce, 0x3d, 0xd0, 0x92, 0xce, 0x3d, 0xd0, 0x92, 0xce, 0x3d, 0xd0, 0x92, - 0xce, 0x3d, 0xd0, 0x92, 0xce, 0x3d, 0xd1, 0x92, 0xce, 0x3d, 0xd1, 0x92, - 0xce, 0x3d, 0xd1, 0x92, 0xce, 0x3d, 0xd2, 0x93, 0xd1, 0x3d, 0xd2, 0x93, - 0xd1, 0x3d, 0xd2, 0x93, 0xd1, 0x3d, 0xd2, 0x93, 0xd1, 0x3d, 0xd3, 0x93, - 0xd1, 0x3d, 0xd3, 0x93, 0xd1, 0x3d, 0xd3, 0x93, 0xd1, 0x3d, 0xd4, 0x93, - 0xd1, 0x3d, 0xd4, 0x93, 0xd1, 0x3d, 0xd4, 0x94, 0xd4, 0x3d, 0xd4, 0x94, - 0xd3, 0x3d, 0xd5, 0x94, 0xd4, 0x3d, 0xd5, 0x94, 0xd3, 0x3d, 0xd5, 0x94, - 0xd4, 0x3d, 0xd6, 0x94, 0xd3, 0x3d, 0xd6, 0x94, 0xd4, 0x3d, 0xd6, 0x94, - 0xd3, 0x3d, 0xd6, 0x94, 0xd4, 0x3d, 0xd7, 0x95, 0xd6, 0x3d, 0xd7, 0x95, - 0xd6, 0x3d, 0xd7, 0x95, 0xd6, 0x3d, 0xd7, 0x95, 0xd6, 0x3d, 0xd8, 0x95, - 0xd6, 0x3d, 0xd8, 0x95, 0xd6, 0x3d, 0xd8, 0x95, 0xd6, 0x3d, 0xd9, 0x95, - 0xd6, 0x3d, 0xd9, 0x95, 0xd6, 0x3d, 0xd9, 0x95, 0xd6, 0x3d, 0xd9, 0x96, - 0xd9, 0x3d, 0xda, 0x95, 0xd6, 0x3d, 0xda, 0x96, 0xd9, 0x3d, 0xda, 0x96, - 0xd9, 0x3d, 0xda, 0x96, 0xd9, 0x3d, 0xdb, 0x96, 0xd9, 0x3d, 0xdb, 0x96, - 0xd9, 0x3d, 0xdb, 0x96, 0xd9, 0x3d, 0xdb, 0x96, 0xd9, 0x3d, 0xdc, 0x96, - 0xd9, 0x3d, 0xdc, 0x96, 0xd9, 0x3d, 0xdc, 0x97, 0xdb, 0x3d, 0xdd, 0x97, - 0xdb, 0x3d, 0xdd, 0x97, 0xdb, 0x3d, 0xdd, 0x97, 0xdb, 0x3d, 0xdd, 0x97, - 0xdb, 0x3d, 0xde, 0x97, 0xdb, 0x3d, 0xde, 0x97, 0xdb, 0x3d, 0xde, 0x97, - 0xdb, 0x3d, 0xde, 0x97, 0xdb, 0x3d, 0xdf, 0x98, 0xde, 0x3d, 0xdf, 0x98, - 0xde, 0x3d, 0xdf, 0x98, 0xde, 0x3d, 0xdf, 0x98, 0xde, 0x3d, 0xe0, 0x98, - 0xde, 0x3d, 0xe0, 0x98, 0xde, 0x3d, 0xe0, 0x98, 0xde, 0x3d, 0xe1, 0x98, - 0xde, 0x3d, 0xe1, 0x98, 0xde, 0x3d, 0xe1, 0x98, 0xde, 0x3d, 0xe1, 0x98, - 0xe0, 0x3d, 0xe2, 0x98, 0xe0, 0x3d, 0xe2, 0x98, 0xe0, 0x3d, 0xe2, 0x98, - 0xe0, 0x3d, 0xe2, 0x98, 0xe0, 0x3d, 0xe3, 0x98, 0xe0, 0x3d, 0xe3, 0x98, - 0xe0, 0x3d, 0xe3, 0x98, 0xe0, 0x3d, 0xe3, 0x98, 0xe0, 0x3d, 0xe4, 0x99, - 0xe3, 0x3d, 0xe4, 0x98, 0xe0, 0x3d, 0xe4, 0x99, 0xe3, 0x3d, 0xe4, 0x99, - 0xe2, 0x3d, 0xe5, 0x99, 0xe3, 0x3d, 0xe5, 0x99, 0xe2, 0x3d, 0xe5, 0x99, - 0xe3, 0x3d, 0xe5, 0x99, 0xe2, 0x3d, 0xe6, 0x99, 0xe3, 0x3d, 0xe6, 0x9a, - 0xe5, 0x3d, 0xe6, 0x9a, 0xe5, 0x3d, 0xe6, 0x9a, 0xe5, 0x3d, 0xe7, 0x9a, - 0xe5, 0x3d, 0xe7, 0x9a, 0xe5, 0x3d, 0xe7, 0x9a, 0xe5, 0x3d, 0xe7, 0x9a, - 0xe5, 0x3d, 0xe8, 0x9a, 0xe5, 0x3d, 0xe8, 0x9a, 0xe5, 0x3d, 0xe8, 0x9a, - 0xe5, 0x3d, 0xe8, 0x9b, 0xe7, 0x3d, 0xe9, 0x9a, 0xe5, 0x3d, 0xe9, 0x9b, - 0xe7, 0x3d, 0xe9, 0x9b, 0xe7, 0x3d, 0xe9, 0x9b, 0xe7, 0x3d, 0xea, 0x9b, - 0xe7, 0x3d, 0xea, 0x9b, 0xe7, 0x3d, 0xea, 0x9b, 0xe7, 0x3d, 0xea, 0x9b, - 0xe7, 0x3d, 0xeb, 0x9b, 0xe7, 0x3d, 0xeb, 0x9b, 0xe7, 0x3d, 0xeb, 0x9c, - 0xea, 0x3d, 0xeb, 0x9c, 0xea, 0x3d, 0xec, 0x9c, 0xea, 0x3d, 0xec, 0x9c, - 0xea, 0x3d, 0xec, 0x9c, 0xea, 0x3d, 0xec, 0x9c, 0xea, 0x3d, 0xec, 0x9c, - 0xea, 0x3d, 0xed, 0x9c, 0xea, 0x3d, 0xed, 0x9c, 0xea, 0x3d, 0xed, 0x9c, - 0xea, 0x3d, 0xed, 0x9d, 0xec, 0x3d, 0xee, 0x9c, 0xea, 0x3d, 0xee, 0x9d, - 0xec, 0x3d, 0xee, 0x9d, 0xec, 0x3d, 0xee, 0x9d, 0xec, 0x3d, 0xef, 0x9d, - 0xec, 0x3d, 0xef, 0x9d, 0xec, 0x3d, 0xef, 0x9d, 0xec, 0x3d, 0xef, 0x9d, - 0xec, 0x3d, 0xf0, 0x9d, 0xee, 0x3d, 0xf0, 0x9d, 0xec, 0x3d, 0xf0, 0x9d, - 0xee, 0x3d, 0xf0, 0x9d, 0xee, 0x3d, 0xf1, 0x9d, 0xee, 0x3d, 0xf1, 0x9d, - 0xee, 0x3d, 0xf1, 0x9d, 0xee, 0x3d, 0xf1, 0x9d, 0xee, 0x3d, 0xf2, 0x9d, - 0xee, 0x3d, 0xf2, 0x9e, 0xf0, 0x3d, 0xf2, 0x9e, 0xf1, 0x3d, 0xf2, 0x9e, - 0xf0, 0x3d, 0xf2, 0x9e, 0xf1, 0x3d, 0xf3, 0x9e, 0xf0, 0x3d, 0xf3, 0x9e, - 0xf1, 0x3d, 0xf3, 0x9e, 0xf0, 0x3d, 0xf3, 0x9e, 0xf1, 0x3d, 0xf4, 0x9e, - 0xf0, 0x3d, 0xf4, 0x9e, 0xf1, 0x3d, 0xf4, 0x9e, 0xf0, 0x3d, 0xf4, 0x9e, - 0xf1, 0x3d, 0xf5, 0x9f, 0xf3, 0x3d, 0xf5, 0x9f, 0xf2, 0x3d, 0xf5, 0x9f, - 0xf3, 0x3d, 0xf5, 0x9f, 0xf2, 0x3d, 0xf5, 0x9f, 0xf3, 0x3d, 0xf6, 0x9f, - 0xf2, 0x3d, 0xf6, 0x9f, 0xf3, 0x3d, 0xf6, 0x9f, 0xf2, 0x3d, 0xf6, 0x9f, - 0xf3, 0x3d, 0xf7, 0xa0, 0xf5, 0x3d, 0xf7, 0x9f, 0xf3, 0x3d, 0xf7, 0xa0, - 0xf5, 0x3d, 0xf7, 0xa0, 0xf5, 0x3d, 0xf8, 0xa0, 0xf5, 0x3d, 0xf8, 0xa0, - 0xf5, 0x3d, 0xf8, 0xa0, 0xf5, 0x3d, 0xf8, 0xa0, 0xf5, 0x3d, 0xf8, 0xa0, - 0xf5, 0x3d, 0xf9, 0xa1, 0xf7, 0x3d, 0xf9, 0xa1, 0xf7, 0x3d, 0xf9, 0xa1, - 0xf7, 0x3d, 0xf9, 0xa1, 0xf7, 0x3d, 0xfa, 0xa1, 0xf7, 0x3d, 0xfa, 0xa1, - 0xf7, 0x3d, 0xfa, 0xa1, 0xf7, 0x3d, 0xfa, 0xa1, 0xf7, 0x3d, 0xfa, 0xa1, - 0xf7, 0x3d, 0xfb, 0xa1, 0xf7, 0x3d, 0xfb, 0xa1, 0xf9, 0x3d, 0xfb, 0xa1, - 0xf7, 0x3d, 0xfb, 0xa1, 0xf9, 0x3d, 0xfc, 0xa1, 0xf9, 0x3d, 0xfc, 0xa1, - 0xf9, 0x3d, 0xfc, 0xa1, 0xf9, 0x3d, 0xfc, 0xa1, 0xf9, 0x3d, 0xfc, 0xa1, - 0xf9, 0x3d, 0xfd, 0xa1, 0xf9, 0x3d, 0xfd, 0xa2, 0xfb, 0x3d, 0xfd, 0xa1, - 0xf9, 0x3d, 0xfd, 0xa2, 0xfb, 0x3d, 0xfe, 0xa2, 0xfb, 0x3d, 0xfe, 0xa2, - 0xfb, 0x3d, 0xfe, 0xa2, 0xfb, 0x3d, 0xfe, 0xa2, 0xfb, 0x3d, 0xfe, 0xa2, - 0xfb, 0x3d, 0xff, 0xa2, 0xfb, 0x3d, 0xff, 0xa2, 0xfb, 0x3d, 0x03, 0x95, - 0x99, 0x3d, 0x0a, 0x93, 0x99, 0x3d, 0x0f, 0x95, 0x99, 0x3d, 0x14, 0x93, - 0x99, 0x3d, 0x17, 0x95, 0x99, 0x3d, 0x1b, 0x93, 0x99, 0x3d, 0x1e, 0x95, - 0x99, 0x3d, 0x20, 0x93, 0x99, 0x3d, 0x23, 0x90, 0x9a, 0x3d, 0x25, 0x93, - 0x99, 0x3d, 0x27, 0x90, 0x9a, 0x3d, 0x29, 0x93, 0x99, 0x3d, 0x2b, 0x90, - 0x9a, 0x3d, 0x2d, 0x93, 0x99, 0x3d, 0x2f, 0x90, 0x9a, 0x3d, 0x31, 0x93, - 0x99, 0x3d, 0x32, 0x90, 0x9a, 0x3d, 0x34, 0x93, 0x99, 0x3d, 0x35, 0x90, - 0x9a, 0x3d, 0x37, 0x93, 0x99, 0x3d, 0x38, 0x90, 0x9a, 0x3d, 0x3a, 0x93, - 0x99, 0x3d, 0x3b, 0x90, 0x9a, 0x3d, 0x3c, 0x93, 0x99, 0x3d, 0x3e, 0x90, - 0x9a, 0x3d, 0x3f, 0x93, 0x99, 0x3d, 0x40, 0x90, 0x9a, 0x3d, 0x42, 0x93, - 0x99, 0x3d, 0x43, 0x90, 0x9a, 0x3d, 0x44, 0x93, 0x99, 0x3d, 0x45, 0x90, - 0x9a, 0x3d, 0x46, 0x93, 0x99, 0x3d, 0x47, 0x90, 0x9a, 0x3d, 0x48, 0x8c, - 0x9a, 0x3d, 0x49, 0x90, 0x9a, 0x3d, 0x4a, 0x8c, 0x9a, 0x3d, 0x4b, 0x90, - 0x9a, 0x3d, 0x4c, 0x8c, 0x9a, 0x3d, 0x4d, 0x90, 0x9a, 0x3d, 0x4e, 0x8c, - 0x9a, 0x3d, 0x4f, 0x90, 0x9a, 0x3d, 0x50, 0x8c, 0x9a, 0x3d, 0x51, 0x90, - 0x9a, 0x3d, 0x52, 0x8c, 0x9a, 0x3d, 0x53, 0x90, 0x9a, 0x3d, 0x54, 0x8c, - 0x9a, 0x3d, 0x55, 0x90, 0x9a, 0x3d, 0x56, 0x8c, 0x9a, 0x3d, 0x57, 0x90, - 0x9a, 0x3d, 0x58, 0x8c, 0x9a, 0x3d, 0x58, 0x90, 0x9a, 0x3d, 0x59, 0x8c, - 0x9a, 0x3d, 0x5a, 0x90, 0x9a, 0x3d, 0x5b, 0x8c, 0x9a, 0x3d, 0x5c, 0x90, - 0x9a, 0x3d, 0x5d, 0x8c, 0x9a, 0x3d, 0x5d, 0x90, 0x9a, 0x3d, 0x5e, 0x8c, - 0x9a, 0x3d, 0x5f, 0x90, 0x9a, 0x3d, 0x60, 0x8c, 0x9a, 0x3d, 0x60, 0x90, - 0x9a, 0x3d, 0x61, 0x8c, 0x9a, 0x3d, 0x62, 0x90, 0x9a, 0x3d, 0x63, 0x8c, - 0x9a, 0x3d, 0x63, 0x90, 0x9a, 0x3d, 0x64, 0x8c, 0x9a, 0x3d, 0x65, 0x90, - 0x9a, 0x3d, 0x66, 0x8c, 0x9a, 0x3d, 0x66, 0x90, 0x9a, 0x3d, 0x67, 0x8c, - 0x9a, 0x3d, 0x68, 0x90, 0x9a, 0x3d, 0x68, 0x8c, 0x9a, 0x3d, 0x69, 0x90, - 0x9a, 0x3d, 0x6a, 0x8c, 0x9a, 0x3d, 0x6a, 0x89, 0x9a, 0x3d, 0x6b, 0x8c, - 0x9a, 0x3d, 0x6c, 0x89, 0x9a, 0x3d, 0x6c, 0x8c, 0x9a, 0x3d, 0x6d, 0x89, - 0x9a, 0x3d, 0x6e, 0x8c, 0x9a, 0x3d, 0x6e, 0x89, 0x9a, 0x3d, 0x6f, 0x8c, - 0x9a, 0x3d, 0x70, 0x89, 0x9a, 0x3d, 0x70, 0x8c, 0x9a, 0x3d, 0x71, 0x89, - 0x9a, 0x3d, 0x72, 0x8c, 0x9a, 0x3d, 0x72, 0x89, 0x9a, 0x3d, 0x73, 0x8c, - 0x9a, 0x3d, 0x73, 0x89, 0x9a, 0x3d, 0x74, 0x8c, 0x9a, 0x3d, 0x75, 0x89, - 0x9a, 0x3d, 0x75, 0x8c, 0x9a, 0x3d, 0x76, 0x89, 0x9a, 0x3d, 0x76, 0x8c, - 0x9a, 0x3d, 0x77, 0x89, 0x9a, 0x3d, 0x78, 0x8c, 0x9a, 0x3d, 0x78, 0x89, - 0x9a, 0x3d, 0x79, 0x8c, 0x9a, 0x3d, 0x79, 0x89, 0x9a, 0x3d, 0x7a, 0x8c, - 0x9a, 0x3d, 0x7a, 0x89, 0x9a, 0x3d, 0x7b, 0x8c, 0x9a, 0x3d, 0x7c, 0x89, - 0x9a, 0x3d, 0x7c, 0x8c, 0x9a, 0x3d, 0x7d, 0x89, 0x9a, 0x3d, 0x7d, 0x8c, - 0x9a, 0x3d, 0x7e, 0x89, 0x9a, 0x3d, 0x7e, 0x8c, 0x9a, 0x3d, 0x7f, 0x89, - 0x9a, 0x3d, 0x7f, 0x8c, 0x9a, 0x3d, 0x80, 0x89, 0x9a, 0x3d, 0x81, 0x8c, - 0x9a, 0x3d, 0x81, 0x89, 0x9a, 0x3d, 0x82, 0x8c, 0x9a, 0x3d, 0x82, 0x89, - 0x9a, 0x3d, 0x83, 0x8c, 0x9a, 0x3d, 0x83, 0x89, 0x9a, 0x3d, 0x84, 0x8c, - 0x9a, 0x3d, 0x84, 0x89, 0x9a, 0x3d, 0x85, 0x8c, 0x9a, 0x3d, 0x85, 0x89, - 0x9a, 0x3d, 0x86, 0x8c, 0x9a, 0x3d, 0x86, 0x89, 0x9a, 0x3d, 0x87, 0x8c, - 0x9a, 0x3d, 0x87, 0x89, 0x9a, 0x3d, 0x88, 0x8c, 0x9a, 0x3d, 0x88, 0x89, - 0x9a, 0x3d, 0x89, 0x8c, 0x9a, 0x3d, 0x89, 0x89, 0x9a, 0x3d, 0x8a, 0x8c, - 0x9a, 0x3d, 0x8a, 0x89, 0x9a, 0x3d, 0x8b, 0x86, 0x9b, 0x3d, 0x8b, 0x89, - 0x9a, 0x3d, 0x8c, 0x86, 0x9b, 0x3d, 0x8c, 0x89, 0x9a, 0x3d, 0x8d, 0x86, - 0x9b, 0x3d, 0x8d, 0x89, 0x9a, 0x3d, 0x8e, 0x86, 0x9b, 0x3d, 0x8e, 0x89, - 0x9a, 0x3d, 0x8e, 0x86, 0x9b, 0x3d, 0x8f, 0x89, 0x9a, 0x3d, 0x8f, 0x86, - 0x9b, 0x3d, 0x90, 0x89, 0x9a, 0x3d, 0x90, 0x86, 0x9b, 0x3d, 0x91, 0x89, - 0x9a, 0x3d, 0x91, 0x86, 0x9b, 0x3d, 0x92, 0x89, 0x9a, 0x3d, 0x92, 0x86, - 0x9b, 0x3d, 0x93, 0x89, 0x9a, 0x3d, 0x93, 0x86, 0x9b, 0x3d, 0x94, 0x89, - 0x9a, 0x3d, 0x94, 0x86, 0x9b, 0x3d, 0x94, 0x89, 0x9a, 0x3d, 0x95, 0x86, - 0x9b, 0x3d, 0x95, 0x89, 0x9a, 0x3d, 0x96, 0x86, 0x9b, 0x3d, 0x96, 0x89, - 0x9a, 0x3d, 0x97, 0x86, 0x9b, 0x3d, 0x97, 0x89, 0x9a, 0x3d, 0x98, 0x86, - 0x9b, 0x3d, 0x98, 0x86, 0x9b, 0x3d, 0x98, 0x86, 0x9b, 0x3d, 0x99, 0x86, - 0x9b, 0x3d, 0x99, 0x86, 0x9b, 0x3d, 0x9a, 0x86, 0x9b, 0x3d, 0x9a, 0x86, - 0x9b, 0x3d, 0x9a, 0x86, 0x9b, 0x3d, 0x9b, 0x86, 0x9b, 0x3c, 0x9a, 0x86, - 0x9b, 0x3d, 0x9b, 0x86, 0x9c, 0x3c, 0x9a, 0x86, 0x9c, 0x3d, 0x9b, 0x86, - 0x9d, 0x3c, 0x9d, 0x86, 0x9d, 0x3a, 0x9d, 0x86, 0x9d, 0x3a, 0x9e, 0x86, - 0x9e, 0x3a, 0x9e, 0x86, 0x9e, 0x3a, 0x9f, 0x86, 0x9f, 0x3a, 0x9f, 0x86, - 0x9f, 0x3a, 0xa1, 0x86, 0x9f, 0x3b, 0xa1, 0x86, 0xa0, 0x3b, 0xa1, 0x86, - 0xa0, 0x3b, 0xa1, 0x86, 0xa1, 0x3b, 0xa1, 0x86, 0xa1, 0x3b, 0xa1, 0x86, - 0xa1, 0x3b, 0xa2, 0x86, 0xa2, 0x3b, 0xa2, 0x86, 0xa2, 0x3b, 0xa3, 0x86, - 0xa3, 0x3b, 0xa3, 0x86, 0xa3, 0x3b, 0xa3, 0x86, 0xa3, 0x3b, 0xa5, 0x86, - 0xa4, 0x3c, 0xa5, 0x86, 0xa4, 0x3c, 0xa5, 0x86, 0xa5, 0x3c, 0xa5, 0x86, - 0xa5, 0x3c, 0xa5, 0x86, 0xa5, 0x3c, 0xa6, 0x86, 0xa6, 0x3c, 0xa6, 0x86, - 0xa6, 0x3c, 0xa6, 0x86, 0xa6, 0x3c, 0xa7, 0x86, 0xa7, 0x3c, 0xa7, 0x86, - 0xa7, 0x3c, 0xa8, 0x86, 0xa8, 0x3c, 0xa8, 0x87, 0xa8, 0x3d, 0xa8, 0x87, - 0xa8, 0x3d, 0xa9, 0x87, 0xa9, 0x3d, 0xa9, 0x87, 0xa9, 0x3d, 0xaa, 0x87, - 0xaa, 0x3d, 0xaa, 0x87, 0xaa, 0x3d, 0xaa, 0x87, 0xaa, 0x3d, 0xab, 0x87, - 0xab, 0x3d, 0xab, 0x87, 0xab, 0x3d, 0xab, 0x87, 0xab, 0x3d, 0xac, 0x87, - 0xab, 0x3d, 0xac, 0x87, 0xab, 0x3d, 0xac, 0x88, 0xac, 0x3d, 0xad, 0x88, - 0xad, 0x3d, 0xad, 0x88, 0xad, 0x3d, 0xae, 0x88, 0xae, 0x3d, 0xae, 0x88, - 0xae, 0x3d, 0xae, 0x88, 0xae, 0x3d, 0xaf, 0x88, 0xaf, 0x3d, 0xaf, 0x88, - 0xae, 0x3d, 0xaf, 0x88, 0xaf, 0x3d, 0xb0, 0x88, 0xae, 0x3d, 0xb0, 0x88, - 0xaf, 0x3d, 0xb0, 0x89, 0xb0, 0x3d, 0xb1, 0x89, 0xb1, 0x3d, 0xb1, 0x89, - 0xb1, 0x3d, 0xb2, 0x89, 0xb2, 0x3d, 0xb2, 0x89, 0xb2, 0x3d, 0xb2, 0x89, - 0xb2, 0x3d, 0xb3, 0x89, 0xb2, 0x3d, 0xb3, 0x89, 0xb2, 0x3d, 0xb3, 0x89, - 0xb2, 0x3d, 0xb4, 0x89, 0xb2, 0x3d, 0xb4, 0x8a, 0xb4, 0x3d, 0xb4, 0x8a, - 0xb4, 0x3d, 0xb5, 0x8a, 0xb5, 0x3d, 0xb5, 0x8a, 0xb5, 0x3d, 0xb5, 0x8a, - 0xb5, 0x3d, 0xb6, 0x8a, 0xb5, 0x3d, 0xb6, 0x8a, 0xb5, 0x3d, 0xb6, 0x8a, - 0xb5, 0x3d, 0xb7, 0x8a, 0xb5, 0x3d, 0xb7, 0x8b, 0xb7, 0x3d, 0xb7, 0x8b, - 0xb7, 0x3d, 0xb8, 0x8b, 0xb8, 0x3d, 0xb8, 0x8b, 0xb8, 0x3d, 0xb8, 0x8b, - 0xb8, 0x3d, 0xb9, 0x8b, 0xb8, 0x3d, 0xb9, 0x8b, 0xb8, 0x3d, 0xb9, 0x8b, - 0xb8, 0x3d, 0xba, 0x8b, 0xb8, 0x3d, 0xba, 0x8b, 0xb8, 0x3d, 0xba, 0x8b, - 0xb8, 0x3d, 0xbb, 0x8c, 0xbb, 0x3d, 0xbb, 0x8c, 0xbb, 0x3d, 0xbb, 0x8c, - 0xbb, 0x3d, 0xbc, 0x8c, 0xbc, 0x3d, 0xbc, 0x8c, 0xbb, 0x3d, 0xbc, 0x8c, - 0xbc, 0x3d, 0xbd, 0x8c, 0xbb, 0x3d, 0xbd, 0x8c, 0xbc, 0x3d, 0xbd, 0x8c, - 0xbb, 0x3d, 0xbe, 0x8c, 0xbc, 0x3d, 0xbe, 0x8d, 0xbe, 0x3d, 0xbe, 0x8d, - 0xbe, 0x3d, 0xbf, 0x8d, 0xbf, 0x3d, 0xbf, 0x8d, 0xbe, 0x3d, 0xbf, 0x8d, - 0xbf, 0x3d, 0xc0, 0x8d, 0xbe, 0x3d, 0xc0, 0x8d, 0xbf, 0x3d, 0xc0, 0x8d, - 0xbe, 0x3d, 0xc1, 0x8d, 0xbf, 0x3d, 0xc1, 0x8e, 0xc1, 0x3d, 0xc1, 0x8e, - 0xc1, 0x3d, 0xc1, 0x8e, 0xc1, 0x3d, 0xc2, 0x8e, 0xc1, 0x3d, 0xc2, 0x8e, - 0xc1, 0x3d, 0xc2, 0x8e, 0xc1, 0x3d, 0xc3, 0x8e, 0xc1, 0x3d, 0xc3, 0x8e, - 0xc1, 0x3d, 0xc3, 0x8e, 0xc1, 0x3d, 0xc4, 0x8e, 0xc1, 0x3d, 0xc4, 0x8e, - 0xc1, 0x3d, 0xc4, 0x8f, 0xc4, 0x3d, 0xc5, 0x8f, 0xc5, 0x3d, 0xc5, 0x8f, - 0xc4, 0x3d, 0xc5, 0x8f, 0xc5, 0x3d, 0xc6, 0x8f, 0xc4, 0x3d, 0xc6, 0x8f, - 0xc5, 0x3d, 0xc6, 0x8f, 0xc4, 0x3d, 0xc6, 0x8f, 0xc5, 0x3d, 0xc7, 0x8f, - 0xc4, 0x3d, 0xc7, 0x8f, 0xc5, 0x3d, 0xc7, 0x90, 0xc7, 0x3d, 0xc8, 0x90, - 0xc7, 0x3d, 0xc8, 0x90, 0xc7, 0x3d, 0xc8, 0x90, 0xc7, 0x3d, 0xc9, 0x90, - 0xc7, 0x3d, 0xc9, 0x90, 0xc7, 0x3d, 0xc9, 0x90, 0xc7, 0x3d, 0xc9, 0x90, - 0xc7, 0x3d, 0xca, 0x90, 0xc7, 0x3d, 0xca, 0x91, 0xca, 0x3d, 0xca, 0x91, - 0xca, 0x3d, 0xcb, 0x91, 0xca, 0x3d, 0xcb, 0x91, 0xca, 0x3d, 0xcb, 0x91, - 0xca, 0x3d, 0xcc, 0x91, 0xca, 0x3d, 0xcc, 0x91, 0xca, 0x3d, 0xcc, 0x91, - 0xca, 0x3d, 0xcc, 0x91, 0xca, 0x3d, 0xcd, 0x92, 0xcd, 0x3d, 0xcd, 0x92, - 0xcd, 0x3d, 0xcd, 0x92, 0xcd, 0x3d, 0xce, 0x92, 0xcd, 0x3d, 0xce, 0x92, - 0xcd, 0x3d, 0xce, 0x92, 0xcd, 0x3d, 0xce, 0x92, 0xcd, 0x3d, 0xcf, 0x92, - 0xcd, 0x3d, 0xcf, 0x92, 0xcd, 0x3d, 0xcf, 0x92, 0xcd, 0x3d, 0xd0, 0x93, - 0xd0, 0x3d, 0xd0, 0x92, 0xcd, 0x3d, 0xd0, 0x93, 0xd0, 0x3d, 0xd0, 0x93, - 0xcf, 0x3d, 0xd1, 0x93, 0xd0, 0x3d, 0xd1, 0x93, 0xcf, 0x3d, 0xd1, 0x93, - 0xd0, 0x3d, 0xd2, 0x93, 0xcf, 0x3d, 0xd2, 0x93, 0xd0, 0x3d, 0xd2, 0x93, - 0xcf, 0x3d, 0xd2, 0x93, 0xd0, 0x3d, 0xd3, 0x94, 0xd2, 0x3d, 0xd3, 0x94, - 0xd2, 0x3d, 0xd3, 0x94, 0xd2, 0x3d, 0xd4, 0x94, 0xd2, 0x3d, 0xd4, 0x94, - 0xd2, 0x3d, 0xd4, 0x94, 0xd2, 0x3d, 0xd4, 0x94, 0xd2, 0x3d, 0xd5, 0x94, - 0xd2, 0x3d, 0xd5, 0x94, 0xd2, 0x3d, 0xd5, 0x94, 0xd2, 0x3d, 0xd6, 0x94, - 0xd5, 0x3d, 0xd6, 0x94, 0xd5, 0x3d, 0xd6, 0x94, 0xd5, 0x3d, 0xd6, 0x94, - 0xd5, 0x3d, 0xd7, 0x94, 0xd5, 0x3d, 0xd7, 0x94, 0xd5, 0x3d, 0xd7, 0x94, - 0xd5, 0x3d, 0xd7, 0x94, 0xd5, 0x3d, 0xd8, 0x94, 0xd5, 0x3d, 0xd8, 0x95, - 0xd7, 0x3d, 0xd8, 0x95, 0xd7, 0x3d, 0xd9, 0x95, 0xd7, 0x3d, 0xd9, 0x95, - 0xd7, 0x3d, 0xd9, 0x95, 0xd7, 0x3d, 0xd9, 0x95, 0xd7, 0x3d, 0xda, 0x95, - 0xd7, 0x3d, 0xda, 0x95, 0xd7, 0x3d, 0xda, 0x95, 0xd7, 0x3d, 0xda, 0x96, - 0xda, 0x3d, 0xdb, 0x96, 0xda, 0x3d, 0xdb, 0x96, 0xda, 0x3d, 0xdb, 0x96, - 0xda, 0x3d, 0xdb, 0x96, 0xda, 0x3d, 0xdc, 0x96, 0xda, 0x3d, 0xdc, 0x96, - 0xda, 0x3d, 0xdc, 0x96, 0xda, 0x3d, 0xdd, 0x96, 0xda, 0x3d, 0xdd, 0x96, - 0xda, 0x3d, 0xdd, 0x96, 0xda, 0x3d, 0xdd, 0x96, 0xda, 0x3d, 0xde, 0x97, - 0xdd, 0x3d, 0xde, 0x97, 0xdc, 0x3d, 0xde, 0x97, 0xdd, 0x3d, 0xde, 0x97, - 0xdc, 0x3d, 0xdf, 0x97, 0xdd, 0x3d, 0xdf, 0x97, 0xdc, 0x3d, 0xdf, 0x97, - 0xdd, 0x3d, 0xdf, 0x97, 0xdc, 0x3d, 0xe0, 0x97, 0xdd, 0x3d, 0xe0, 0x98, - 0xdf, 0x3d, 0xe0, 0x98, 0xdf, 0x3d, 0xe1, 0x98, 0xdf, 0x3d, 0xe1, 0x98, - 0xdf, 0x3d, 0xe1, 0x98, 0xdf, 0x3d, 0xe1, 0x98, 0xdf, 0x3d, 0xe2, 0x98, - 0xdf, 0x3d, 0xe2, 0x98, 0xdf, 0x3d, 0xe2, 0x98, 0xdf, 0x3d, 0xe2, 0x99, - 0xe1, 0x3d, 0xe3, 0x99, 0xe2, 0x3d, 0xe3, 0x99, 0xe1, 0x3d, 0xe3, 0x99, - 0xe2, 0x3d, 0xe3, 0x99, 0xe1, 0x3d, 0xe4, 0x99, 0xe2, 0x3d, 0xe4, 0x99, - 0xe1, 0x3d, 0xe4, 0x99, 0xe2, 0x3d, 0xe4, 0x99, 0xe1, 0x3d, 0xe5, 0x99, - 0xe2, 0x3d, 0xe5, 0x9a, 0xe4, 0x3d, 0xe5, 0x99, 0xe2, 0x3d, 0xe5, 0x9a, - 0xe4, 0x3d, 0xe6, 0x9a, 0xe4, 0x3d, 0xe6, 0x9a, 0xe4, 0x3d, 0xe6, 0x9a, - 0xe4, 0x3d, 0xe6, 0x9a, 0xe4, 0x3d, 0xe7, 0x9a, 0xe4, 0x3d, 0xe7, 0x9a, - 0xe4, 0x3d, 0xe7, 0x9a, 0xe6, 0x3d, 0xe7, 0x9a, 0xe4, 0x3d, 0xe8, 0x9a, - 0xe6, 0x3d, 0xe8, 0x9a, 0xe6, 0x3d, 0xe8, 0x9a, 0xe6, 0x3d, 0xe8, 0x9a, - 0xe6, 0x3d, 0xe9, 0x9a, 0xe6, 0x3d, 0xe9, 0x9a, 0xe6, 0x3d, 0xe9, 0x9a, - 0xe6, 0x3d, 0xe9, 0x9b, 0xe8, 0x3d, 0xea, 0x9b, 0xe9, 0x3d, 0xea, 0x9b, - 0xe8, 0x3d, 0xea, 0x9b, 0xe9, 0x3d, 0xea, 0x9b, 0xe8, 0x3d, 0xeb, 0x9b, - 0xe9, 0x3d, 0xeb, 0x9b, 0xe8, 0x3d, 0xeb, 0x9b, 0xe9, 0x3d, 0xeb, 0x9b, - 0xe8, 0x3d, 0xec, 0x9b, 0xe9, 0x3d, 0xec, 0x9b, 0xe8, 0x3d, 0xec, 0x9b, - 0xe9, 0x3d, 0xec, 0x9c, 0xeb, 0x3d, 0xec, 0x9c, 0xeb, 0x3d, 0xed, 0x9c, - 0xeb, 0x3d, 0xed, 0x9c, 0xeb, 0x3d, 0xed, 0x9c, 0xeb, 0x3d, 0xed, 0x9c, - 0xeb, 0x3d, 0xee, 0x9c, 0xeb, 0x3d, 0xee, 0x9c, 0xeb, 0x3d, 0xee, 0x9c, - 0xeb, 0x3d, 0xee, 0x9d, 0xed, 0x3d, 0xef, 0x9d, 0xed, 0x3d, 0xef, 0x9d, - 0xed, 0x3d, 0xef, 0x9d, 0xed, 0x3d, 0xef, 0x9d, 0xed, 0x3d, 0xf0, 0x9d, - 0xed, 0x3d, 0xf0, 0x9d, 0xed, 0x3d, 0xf0, 0x9d, 0xed, 0x3d, 0xf0, 0x9d, - 0xed, 0x3d, 0xf1, 0x9d, 0xed, 0x3d, 0xf1, 0x9e, 0xef, 0x3d, 0xf1, 0x9d, - 0xed, 0x3d, 0xf1, 0x9e, 0xef, 0x3d, 0xf2, 0x9e, 0xef, 0x3d, 0xf2, 0x9e, - 0xef, 0x3d, 0xf2, 0x9e, 0xef, 0x3d, 0xf2, 0x9e, 0xef, 0x3d, 0xf2, 0x9e, - 0xef, 0x3d, 0xf3, 0x9e, 0xef, 0x3d, 0xf3, 0x9f, 0xf2, 0x3d, 0xf3, 0x9e, - 0xef, 0x3d, 0xf3, 0x9f, 0xf2, 0x3d, 0xf4, 0x9f, 0xf1, 0x3d, 0xf4, 0x9f, - 0xf2, 0x3d, 0xf4, 0x9f, 0xf1, 0x3d, 0xf4, 0x9f, 0xf2, 0x3d, 0xf5, 0x9f, - 0xf1, 0x3d, 0xf5, 0x9f, 0xf2, 0x3d, 0xf5, 0x9f, 0xf1, 0x3d, 0xf5, 0x9f, - 0xf2, 0x3d, 0xf5, 0x9f, 0xf4, 0x3d, 0xf6, 0x9f, 0xf4, 0x3d, 0xf6, 0x9f, - 0xf4, 0x3d, 0xf6, 0x9f, 0xf4, 0x3d, 0xf6, 0x9f, 0xf4, 0x3d, 0xf7, 0x9f, - 0xf4, 0x3d, 0xf7, 0x9f, 0xf4, 0x3d, 0xf7, 0x9f, 0xf4, 0x3d, 0xf7, 0x9f, - 0xf4, 0x3d, 0xf8, 0x9f, 0xf4, 0x3d, 0xf8, 0xa0, 0xf6, 0x3d, 0xf8, 0x9f, - 0xf4, 0x3d, 0xf8, 0xa0, 0xf6, 0x3d, 0xf8, 0xa0, 0xf6, 0x3d, 0xf9, 0xa0, - 0xf6, 0x3d, 0xf9, 0xa0, 0xf6, 0x3d, 0xf9, 0xa0, 0xf6, 0x3d, 0xf9, 0xa0, - 0xf6, 0x3d, 0xfa, 0xa0, 0xf6, 0x3d, 0xfa, 0xa1, 0xf8, 0x3d, 0xfa, 0xa0, - 0xf6, 0x3d, 0xfa, 0xa1, 0xf8, 0x3d, 0xfa, 0xa1, 0xf8, 0x3d, 0xfb, 0xa1, - 0xf8, 0x3d, 0xfb, 0xa1, 0xf8, 0x3d, 0xfb, 0xa1, 0xf8, 0x3d, 0xfb, 0xa1, - 0xf8, 0x3d, 0xfc, 0xa1, 0xf8, 0x3d, 0xfc, 0xa2, 0xfa, 0x3d, 0xfc, 0xa2, - 0xfa, 0x3d, 0xfc, 0xa2, 0xfa, 0x3d, 0xfc, 0xa2, 0xfa, 0x3d, 0xfd, 0xa2, - 0xfa, 0x3d, 0xfd, 0xa2, 0xfa, 0x3d, 0xfd, 0xa2, 0xfa, 0x3d, 0xfd, 0xa2, - 0xfa, 0x3d, 0xfe, 0xa2, 0xfa, 0x3d, 0xfe, 0xa2, 0xfa, 0x3d, 0xfe, 0xa2, - 0xfa, 0x3d, 0xfe, 0xa2, 0xfa, 0x3d, 0xfe, 0xa2, 0xfa, 0x3d, 0xff, 0xa2, - 0xfa, 0x3d, 0xff, 0xa2, 0xfa, 0x3d, 0x03, 0x8f, 0x9a, 0x3e, 0x0a, 0x92, - 0x99, 0x3e, 0x0f, 0x8f, 0x9a, 0x3e, 0x14, 0x92, 0x99, 0x3e, 0x17, 0x8f, - 0x9a, 0x3e, 0x1b, 0x92, 0x99, 0x3e, 0x1e, 0x8f, 0x9a, 0x3e, 0x20, 0x92, - 0x99, 0x3e, 0x23, 0x8f, 0x9a, 0x3e, 0x25, 0x92, 0x99, 0x3e, 0x27, 0x8f, - 0x9a, 0x3e, 0x29, 0x92, 0x99, 0x3e, 0x2b, 0x8f, 0x9a, 0x3e, 0x2d, 0x92, - 0x99, 0x3e, 0x2f, 0x8f, 0x9a, 0x3e, 0x31, 0x92, 0x99, 0x3e, 0x32, 0x8f, - 0x9a, 0x3e, 0x34, 0x92, 0x99, 0x3e, 0x35, 0x8f, 0x9a, 0x3e, 0x37, 0x92, - 0x99, 0x3e, 0x38, 0x8f, 0x9a, 0x3e, 0x3a, 0x92, 0x99, 0x3e, 0x3b, 0x8f, - 0x9a, 0x3e, 0x3c, 0x92, 0x99, 0x3e, 0x3e, 0x8f, 0x9a, 0x3e, 0x3f, 0x92, - 0x99, 0x3e, 0x40, 0x8f, 0x9a, 0x3e, 0x42, 0x92, 0x99, 0x3e, 0x43, 0x8f, - 0x9a, 0x3e, 0x44, 0x92, 0x99, 0x3e, 0x45, 0x8f, 0x9a, 0x3e, 0x46, 0x92, - 0x99, 0x3e, 0x47, 0x8f, 0x9a, 0x3e, 0x48, 0x92, 0x99, 0x3e, 0x49, 0x8f, - 0x9a, 0x3e, 0x4a, 0x92, 0x99, 0x3e, 0x4b, 0x8f, 0x9a, 0x3e, 0x4c, 0x92, - 0x99, 0x3e, 0x4d, 0x8f, 0x9a, 0x3e, 0x4e, 0x92, 0x99, 0x3e, 0x4f, 0x8f, - 0x9a, 0x3e, 0x50, 0x92, 0x99, 0x3e, 0x51, 0x8f, 0x9a, 0x3e, 0x52, 0x92, - 0x99, 0x3e, 0x53, 0x8f, 0x9a, 0x3e, 0x54, 0x92, 0x99, 0x3e, 0x55, 0x8f, - 0x9a, 0x3e, 0x56, 0x92, 0x99, 0x3e, 0x57, 0x8f, 0x9a, 0x3e, 0x58, 0x92, - 0x99, 0x3e, 0x58, 0x8f, 0x9a, 0x3e, 0x59, 0x92, 0x99, 0x3e, 0x5a, 0x8f, - 0x9a, 0x3e, 0x5b, 0x92, 0x99, 0x3e, 0x5c, 0x8f, 0x9a, 0x3e, 0x5d, 0x92, - 0x99, 0x3e, 0x5d, 0x8f, 0x9a, 0x3e, 0x5e, 0x8d, 0x9a, 0x3e, 0x5f, 0x8f, - 0x9a, 0x3e, 0x60, 0x8d, 0x9a, 0x3e, 0x60, 0x8f, 0x9a, 0x3e, 0x61, 0x8d, - 0x9a, 0x3e, 0x62, 0x8f, 0x9a, 0x3e, 0x63, 0x8d, 0x9a, 0x3e, 0x63, 0x8f, - 0x9a, 0x3e, 0x64, 0x8d, 0x9a, 0x3e, 0x65, 0x8f, 0x9a, 0x3e, 0x66, 0x8d, - 0x9a, 0x3e, 0x66, 0x8f, 0x9a, 0x3e, 0x67, 0x8d, 0x9a, 0x3e, 0x68, 0x8f, - 0x9a, 0x3e, 0x68, 0x8d, 0x9a, 0x3e, 0x69, 0x8f, 0x9a, 0x3e, 0x6a, 0x8d, - 0x9a, 0x3e, 0x6a, 0x8f, 0x9a, 0x3e, 0x6b, 0x8d, 0x9a, 0x3e, 0x6c, 0x8f, - 0x9a, 0x3e, 0x6c, 0x8d, 0x9a, 0x3e, 0x6d, 0x8f, 0x9a, 0x3e, 0x6e, 0x8d, - 0x9a, 0x3e, 0x6e, 0x8f, 0x9a, 0x3e, 0x6f, 0x8d, 0x9a, 0x3e, 0x70, 0x8f, - 0x9a, 0x3e, 0x70, 0x8d, 0x9a, 0x3e, 0x71, 0x8f, 0x9a, 0x3e, 0x72, 0x8d, - 0x9a, 0x3e, 0x72, 0x8f, 0x9a, 0x3e, 0x73, 0x8d, 0x9a, 0x3e, 0x73, 0x8f, - 0x9a, 0x3e, 0x74, 0x8d, 0x9a, 0x3e, 0x75, 0x8f, 0x9a, 0x3e, 0x75, 0x8d, - 0x9a, 0x3e, 0x76, 0x89, 0x9a, 0x3e, 0x76, 0x8d, 0x9a, 0x3e, 0x77, 0x89, - 0x9a, 0x3e, 0x78, 0x8d, 0x9a, 0x3e, 0x78, 0x89, 0x9a, 0x3e, 0x79, 0x8d, - 0x9a, 0x3e, 0x79, 0x89, 0x9a, 0x3e, 0x7a, 0x8d, 0x9a, 0x3e, 0x7a, 0x89, - 0x9a, 0x3e, 0x7b, 0x8d, 0x9a, 0x3e, 0x7c, 0x89, 0x9a, 0x3e, 0x7c, 0x8d, - 0x9a, 0x3e, 0x7d, 0x89, 0x9a, 0x3e, 0x7d, 0x8d, 0x9a, 0x3e, 0x7e, 0x89, - 0x9a, 0x3e, 0x7e, 0x8d, 0x9a, 0x3e, 0x7f, 0x89, 0x9a, 0x3e, 0x7f, 0x8d, - 0x9a, 0x3e, 0x80, 0x89, 0x9a, 0x3e, 0x81, 0x8d, 0x9a, 0x3e, 0x81, 0x89, - 0x9a, 0x3e, 0x82, 0x8d, 0x9a, 0x3e, 0x82, 0x89, 0x9a, 0x3e, 0x83, 0x8d, - 0x9a, 0x3e, 0x83, 0x89, 0x9a, 0x3e, 0x84, 0x8d, 0x9a, 0x3e, 0x84, 0x89, - 0x9a, 0x3e, 0x85, 0x8d, 0x9a, 0x3e, 0x85, 0x89, 0x9a, 0x3e, 0x86, 0x8d, - 0x9a, 0x3e, 0x86, 0x89, 0x9a, 0x3e, 0x87, 0x8d, 0x9a, 0x3e, 0x87, 0x89, - 0x9a, 0x3e, 0x88, 0x8d, 0x9a, 0x3e, 0x88, 0x89, 0x9a, 0x3e, 0x89, 0x8d, - 0x9a, 0x3e, 0x89, 0x89, 0x9a, 0x3e, 0x8a, 0x8d, 0x9a, 0x3e, 0x8a, 0x89, - 0x9a, 0x3e, 0x8b, 0x87, 0x9b, 0x3e, 0x8b, 0x89, 0x9a, 0x3e, 0x8c, 0x87, - 0x9b, 0x3e, 0x8c, 0x89, 0x9a, 0x3e, 0x8d, 0x87, 0x9b, 0x3e, 0x8d, 0x89, - 0x9a, 0x3e, 0x8e, 0x87, 0x9b, 0x3e, 0x8e, 0x89, 0x9a, 0x3e, 0x8e, 0x87, - 0x9b, 0x3e, 0x8f, 0x89, 0x9a, 0x3e, 0x8f, 0x87, 0x9b, 0x3e, 0x90, 0x89, - 0x9a, 0x3e, 0x90, 0x87, 0x9b, 0x3e, 0x91, 0x89, 0x9a, 0x3e, 0x91, 0x87, - 0x9b, 0x3e, 0x92, 0x89, 0x9a, 0x3e, 0x92, 0x87, 0x9b, 0x3e, 0x93, 0x89, - 0x9a, 0x3e, 0x93, 0x87, 0x9b, 0x3e, 0x94, 0x89, 0x9a, 0x3e, 0x94, 0x87, - 0x9b, 0x3e, 0x94, 0x89, 0x9a, 0x3e, 0x95, 0x87, 0x9b, 0x3e, 0x95, 0x89, - 0x9a, 0x3e, 0x96, 0x87, 0x9b, 0x3e, 0x96, 0x89, 0x9a, 0x3e, 0x97, 0x87, - 0x9b, 0x3e, 0x97, 0x89, 0x9a, 0x3e, 0x98, 0x87, 0x9b, 0x3e, 0x98, 0x89, - 0x9a, 0x3e, 0x98, 0x87, 0x9b, 0x3e, 0x99, 0x87, 0x9b, 0x3e, 0x99, 0x87, - 0x9b, 0x3e, 0x9a, 0x87, 0x9b, 0x3e, 0x9a, 0x87, 0x9b, 0x3e, 0x9a, 0x87, - 0x9b, 0x3e, 0x9a, 0x87, 0x9b, 0x3e, 0x9a, 0x87, 0x9b, 0x3e, 0x9a, 0x87, - 0x9c, 0x3e, 0x9a, 0x87, 0x9c, 0x3e, 0x9b, 0x87, 0x9d, 0x3c, 0x9a, 0x87, - 0x9d, 0x3e, 0x9f, 0x87, 0x9d, 0x3b, 0x9f, 0x87, 0x9e, 0x3b, 0x9f, 0x87, - 0x9e, 0x3b, 0x9f, 0x87, 0x9f, 0x3b, 0x9f, 0x87, 0x9f, 0x3b, 0x9f, 0x87, - 0x9f, 0x3b, 0xa0, 0x87, 0xa0, 0x3b, 0xa0, 0x87, 0xa0, 0x3b, 0xa1, 0x87, - 0xa1, 0x3b, 0xa3, 0x87, 0xa1, 0x3c, 0xa3, 0x87, 0xa1, 0x3c, 0xa3, 0x87, - 0xa2, 0x3c, 0xa3, 0x87, 0xa2, 0x3c, 0xa3, 0x87, 0xa3, 0x3c, 0xa3, 0x87, - 0xa3, 0x3c, 0xa3, 0x87, 0xa3, 0x3c, 0xa4, 0x87, 0xa4, 0x3c, 0xa4, 0x87, - 0xa4, 0x3c, 0xa5, 0x87, 0xa5, 0x3c, 0xa5, 0x87, 0xa5, 0x3c, 0xa5, 0x87, - 0xa5, 0x3c, 0xa6, 0x87, 0xa6, 0x3d, 0xa7, 0x87, 0xa6, 0x3d, 0xa6, 0x87, - 0xa6, 0x3d, 0xa7, 0x87, 0xa7, 0x3d, 0xa7, 0x87, 0xa7, 0x3d, 0xa8, 0x87, - 0xa8, 0x3d, 0xa8, 0x87, 0xa8, 0x3d, 0xa8, 0x87, 0xa8, 0x3d, 0xa9, 0x87, - 0xa9, 0x3d, 0xa9, 0x87, 0xa9, 0x3d, 0xaa, 0x87, 0xaa, 0x3d, 0xaa, 0x88, - 0xaa, 0x3e, 0xaa, 0x88, 0xaa, 0x3e, 0xab, 0x88, 0xab, 0x3e, 0xab, 0x88, - 0xab, 0x3e, 0xab, 0x88, 0xab, 0x3e, 0xac, 0x88, 0xac, 0x3e, 0xac, 0x88, - 0xac, 0x3e, 0xac, 0x88, 0xac, 0x3e, 0xad, 0x88, 0xad, 0x3e, 0xad, 0x88, - 0xad, 0x3e, 0xae, 0x88, 0xad, 0x3e, 0xae, 0x88, 0xad, 0x3e, 0xae, 0x89, - 0xae, 0x3e, 0xaf, 0x89, 0xaf, 0x3e, 0xaf, 0x89, 0xaf, 0x3e, 0xaf, 0x89, - 0xaf, 0x3e, 0xb0, 0x89, 0xb0, 0x3e, 0xb0, 0x89, 0xb0, 0x3e, 0xb0, 0x89, - 0xb0, 0x3e, 0xb1, 0x89, 0xb0, 0x3e, 0xb1, 0x89, 0xb0, 0x3e, 0xb2, 0x89, - 0xb2, 0x3e, 0xb2, 0x89, 0xb2, 0x3e, 0xb2, 0x89, 0xb2, 0x3e, 0xb3, 0x89, - 0xb2, 0x3e, 0xb3, 0x89, 0xb2, 0x3e, 0xb3, 0x8a, 0xb3, 0x3e, 0xb4, 0x8a, - 0xb4, 0x3e, 0xb4, 0x8a, 0xb3, 0x3e, 0xb4, 0x8a, 0xb4, 0x3e, 0xb5, 0x8a, - 0xb3, 0x3e, 0xb5, 0x8a, 0xb4, 0x3e, 0xb5, 0x8b, 0xb5, 0x3e, 0xb6, 0x8b, - 0xb6, 0x3e, 0xb6, 0x8b, 0xb6, 0x3e, 0xb6, 0x8b, 0xb6, 0x3e, 0xb7, 0x8b, - 0xb7, 0x3e, 0xb7, 0x8b, 0xb7, 0x3e, 0xb7, 0x8b, 0xb7, 0x3e, 0xb8, 0x8b, - 0xb7, 0x3e, 0xb8, 0x8b, 0xb7, 0x3e, 0xb8, 0x8b, 0xb7, 0x3e, 0xb9, 0x8c, - 0xb9, 0x3e, 0xb9, 0x8c, 0xb9, 0x3e, 0xb9, 0x8c, 0xb9, 0x3e, 0xba, 0x8c, - 0xba, 0x3e, 0xba, 0x8c, 0xba, 0x3e, 0xba, 0x8c, 0xba, 0x3e, 0xbb, 0x8c, - 0xba, 0x3e, 0xbb, 0x8c, 0xba, 0x3e, 0xbb, 0x8c, 0xba, 0x3e, 0xbc, 0x8c, - 0xba, 0x3e, 0xbc, 0x8c, 0xba, 0x3e, 0xbc, 0x8d, 0xbc, 0x3e, 0xbd, 0x8d, - 0xbd, 0x3e, 0xbd, 0x8d, 0xbd, 0x3e, 0xbd, 0x8d, 0xbd, 0x3e, 0xbe, 0x8d, - 0xbd, 0x3e, 0xbe, 0x8d, 0xbd, 0x3e, 0xbe, 0x8d, 0xbd, 0x3e, 0xbf, 0x8d, - 0xbd, 0x3e, 0xbf, 0x8d, 0xbd, 0x3e, 0xbf, 0x8e, 0xbf, 0x3e, 0xc0, 0x8e, - 0xc0, 0x3e, 0xc0, 0x8e, 0xc0, 0x3e, 0xc0, 0x8e, 0xc0, 0x3e, 0xc1, 0x8e, - 0xc0, 0x3e, 0xc1, 0x8e, 0xc0, 0x3e, 0xc1, 0x8e, 0xc0, 0x3e, 0xc1, 0x8e, - 0xc0, 0x3e, 0xc2, 0x8e, 0xc0, 0x3e, 0xc2, 0x8e, 0xc0, 0x3e, 0xc2, 0x8e, - 0xc2, 0x3e, 0xc3, 0x8e, 0xc3, 0x3e, 0xc3, 0x8e, 0xc3, 0x3e, 0xc3, 0x8e, - 0xc3, 0x3e, 0xc4, 0x8e, 0xc3, 0x3e, 0xc4, 0x8e, 0xc3, 0x3e, 0xc4, 0x8e, - 0xc3, 0x3e, 0xc5, 0x8e, 0xc3, 0x3e, 0xc5, 0x8e, 0xc3, 0x3e, 0xc5, 0x8e, - 0xc3, 0x3e, 0xc6, 0x8e, 0xc3, 0x3e, 0xc6, 0x8f, 0xc6, 0x3e, 0xc6, 0x8f, - 0xc6, 0x3e, 0xc6, 0x8f, 0xc6, 0x3e, 0xc7, 0x8f, 0xc6, 0x3e, 0xc7, 0x8f, - 0xc6, 0x3e, 0xc7, 0x8f, 0xc6, 0x3e, 0xc8, 0x8f, 0xc6, 0x3e, 0xc8, 0x8f, - 0xc6, 0x3e, 0xc8, 0x8f, 0xc6, 0x3e, 0xc9, 0x90, 0xc9, 0x3e, 0xc9, 0x90, - 0xc9, 0x3e, 0xc9, 0x90, 0xc9, 0x3e, 0xc9, 0x90, 0xc9, 0x3e, 0xca, 0x90, - 0xc9, 0x3e, 0xca, 0x90, 0xc9, 0x3e, 0xca, 0x90, 0xc9, 0x3e, 0xcb, 0x90, - 0xc9, 0x3e, 0xcb, 0x90, 0xc9, 0x3e, 0xcb, 0x90, 0xc9, 0x3e, 0xcc, 0x91, - 0xcc, 0x3e, 0xcc, 0x91, 0xcb, 0x3e, 0xcc, 0x91, 0xcc, 0x3e, 0xcc, 0x91, - 0xcb, 0x3e, 0xcd, 0x91, 0xcc, 0x3e, 0xcd, 0x91, 0xcb, 0x3e, 0xcd, 0x91, - 0xcc, 0x3e, 0xce, 0x91, 0xcb, 0x3e, 0xce, 0x91, 0xcc, 0x3e, 0xce, 0x92, - 0xce, 0x3e, 0xce, 0x92, 0xce, 0x3e, 0xcf, 0x92, 0xce, 0x3e, 0xcf, 0x92, - 0xce, 0x3e, 0xcf, 0x92, 0xce, 0x3e, 0xd0, 0x92, 0xce, 0x3e, 0xd0, 0x92, - 0xce, 0x3e, 0xd0, 0x92, 0xce, 0x3e, 0xd0, 0x92, 0xce, 0x3e, 0xd1, 0x92, - 0xce, 0x3e, 0xd1, 0x93, 0xd1, 0x3e, 0xd1, 0x92, 0xce, 0x3e, 0xd2, 0x93, - 0xd1, 0x3e, 0xd2, 0x93, 0xd1, 0x3e, 0xd2, 0x93, 0xd1, 0x3e, 0xd2, 0x93, - 0xd1, 0x3e, 0xd3, 0x93, 0xd1, 0x3e, 0xd3, 0x93, 0xd1, 0x3e, 0xd3, 0x93, - 0xd1, 0x3e, 0xd4, 0x93, 0xd1, 0x3e, 0xd4, 0x93, 0xd1, 0x3e, 0xd4, 0x94, - 0xd4, 0x3e, 0xd4, 0x94, 0xd3, 0x3e, 0xd5, 0x94, 0xd4, 0x3e, 0xd5, 0x94, - 0xd3, 0x3e, 0xd5, 0x94, 0xd4, 0x3e, 0xd6, 0x94, 0xd3, 0x3e, 0xd6, 0x94, - 0xd4, 0x3e, 0xd6, 0x94, 0xd3, 0x3e, 0xd6, 0x94, 0xd4, 0x3e, 0xd7, 0x95, - 0xd6, 0x3e, 0xd7, 0x95, 0xd6, 0x3e, 0xd7, 0x95, 0xd6, 0x3e, 0xd7, 0x95, - 0xd6, 0x3e, 0xd8, 0x95, 0xd6, 0x3e, 0xd8, 0x95, 0xd6, 0x3e, 0xd8, 0x95, - 0xd6, 0x3e, 0xd9, 0x95, 0xd6, 0x3e, 0xd9, 0x95, 0xd6, 0x3e, 0xd9, 0x95, - 0xd6, 0x3e, 0xd9, 0x96, 0xd9, 0x3e, 0xda, 0x96, 0xd9, 0x3e, 0xda, 0x96, - 0xd9, 0x3e, 0xda, 0x96, 0xd9, 0x3e, 0xda, 0x96, 0xd9, 0x3e, 0xdb, 0x96, - 0xd9, 0x3e, 0xdb, 0x96, 0xd9, 0x3e, 0xdb, 0x96, 0xd9, 0x3e, 0xdb, 0x96, - 0xd9, 0x3e, 0xdc, 0x97, 0xdb, 0x3e, 0xdc, 0x96, 0xd9, 0x3e, 0xdc, 0x97, - 0xdb, 0x3e, 0xdd, 0x97, 0xdb, 0x3e, 0xdd, 0x97, 0xdb, 0x3e, 0xdd, 0x97, - 0xdb, 0x3e, 0xdd, 0x97, 0xdb, 0x3e, 0xde, 0x97, 0xdb, 0x3e, 0xde, 0x97, - 0xdb, 0x3e, 0xde, 0x97, 0xdb, 0x3e, 0xde, 0x97, 0xdb, 0x3e, 0xdf, 0x98, - 0xde, 0x3e, 0xdf, 0x98, 0xde, 0x3e, 0xdf, 0x98, 0xde, 0x3e, 0xdf, 0x98, - 0xde, 0x3e, 0xe0, 0x98, 0xde, 0x3e, 0xe0, 0x98, 0xde, 0x3e, 0xe0, 0x98, - 0xde, 0x3e, 0xe1, 0x98, 0xde, 0x3e, 0xe1, 0x98, 0xde, 0x3e, 0xe1, 0x98, - 0xde, 0x3e, 0xe1, 0x98, 0xe0, 0x3e, 0xe2, 0x98, 0xe0, 0x3e, 0xe2, 0x98, - 0xe0, 0x3e, 0xe2, 0x98, 0xe0, 0x3e, 0xe2, 0x98, 0xe0, 0x3e, 0xe3, 0x98, - 0xe0, 0x3e, 0xe3, 0x98, 0xe0, 0x3e, 0xe3, 0x98, 0xe0, 0x3e, 0xe3, 0x98, - 0xe0, 0x3e, 0xe4, 0x99, 0xe3, 0x3e, 0xe4, 0x99, 0xe2, 0x3e, 0xe4, 0x99, - 0xe3, 0x3e, 0xe4, 0x99, 0xe2, 0x3e, 0xe5, 0x99, 0xe3, 0x3e, 0xe5, 0x99, - 0xe2, 0x3e, 0xe5, 0x99, 0xe3, 0x3e, 0xe5, 0x99, 0xe2, 0x3e, 0xe6, 0x99, - 0xe3, 0x3e, 0xe6, 0x9a, 0xe5, 0x3e, 0xe6, 0x9a, 0xe5, 0x3e, 0xe6, 0x9a, - 0xe5, 0x3e, 0xe7, 0x9a, 0xe5, 0x3e, 0xe7, 0x9a, 0xe5, 0x3e, 0xe7, 0x9a, - 0xe5, 0x3e, 0xe7, 0x9a, 0xe5, 0x3e, 0xe8, 0x9a, 0xe5, 0x3e, 0xe8, 0x9a, - 0xe5, 0x3e, 0xe8, 0x9a, 0xe5, 0x3e, 0xe8, 0x9b, 0xe7, 0x3e, 0xe9, 0x9a, - 0xe5, 0x3e, 0xe9, 0x9b, 0xe7, 0x3e, 0xe9, 0x9b, 0xe7, 0x3e, 0xe9, 0x9b, - 0xe7, 0x3e, 0xea, 0x9b, 0xe7, 0x3e, 0xea, 0x9b, 0xe7, 0x3e, 0xea, 0x9b, - 0xe7, 0x3e, 0xea, 0x9b, 0xe7, 0x3e, 0xeb, 0x9c, 0xea, 0x3e, 0xeb, 0x9c, - 0xea, 0x3e, 0xeb, 0x9c, 0xea, 0x3e, 0xeb, 0x9c, 0xea, 0x3e, 0xec, 0x9c, - 0xea, 0x3e, 0xec, 0x9c, 0xea, 0x3e, 0xec, 0x9c, 0xea, 0x3e, 0xec, 0x9c, - 0xea, 0x3e, 0xec, 0x9c, 0xea, 0x3e, 0xed, 0x9c, 0xea, 0x3e, 0xed, 0x9c, - 0xea, 0x3e, 0xed, 0x9c, 0xea, 0x3e, 0xed, 0x9d, 0xec, 0x3e, 0xee, 0x9d, - 0xec, 0x3e, 0xee, 0x9d, 0xec, 0x3e, 0xee, 0x9d, 0xec, 0x3e, 0xee, 0x9d, - 0xec, 0x3e, 0xef, 0x9d, 0xec, 0x3e, 0xef, 0x9d, 0xec, 0x3e, 0xef, 0x9d, - 0xec, 0x3e, 0xef, 0x9d, 0xec, 0x3e, 0xf0, 0x9d, 0xee, 0x3e, 0xf0, 0x9d, - 0xec, 0x3e, 0xf0, 0x9d, 0xee, 0x3e, 0xf0, 0x9d, 0xee, 0x3e, 0xf1, 0x9d, - 0xee, 0x3e, 0xf1, 0x9d, 0xee, 0x3e, 0xf1, 0x9d, 0xee, 0x3e, 0xf1, 0x9d, - 0xee, 0x3e, 0xf2, 0x9d, 0xee, 0x3e, 0xf2, 0x9e, 0xf0, 0x3e, 0xf2, 0x9e, - 0xf1, 0x3e, 0xf2, 0x9e, 0xf0, 0x3e, 0xf2, 0x9e, 0xf1, 0x3e, 0xf3, 0x9e, - 0xf0, 0x3e, 0xf3, 0x9e, 0xf1, 0x3e, 0xf3, 0x9e, 0xf0, 0x3e, 0xf3, 0x9e, - 0xf1, 0x3e, 0xf4, 0x9e, 0xf0, 0x3e, 0xf4, 0x9e, 0xf1, 0x3e, 0xf4, 0x9f, - 0xf3, 0x3e, 0xf4, 0x9e, 0xf1, 0x3e, 0xf5, 0x9f, 0xf3, 0x3e, 0xf5, 0x9f, - 0xf2, 0x3e, 0xf5, 0x9f, 0xf3, 0x3e, 0xf5, 0x9f, 0xf2, 0x3e, 0xf5, 0x9f, - 0xf3, 0x3e, 0xf6, 0x9f, 0xf2, 0x3e, 0xf6, 0x9f, 0xf3, 0x3e, 0xf6, 0x9f, - 0xf2, 0x3e, 0xf6, 0x9f, 0xf3, 0x3e, 0xf7, 0xa0, 0xf5, 0x3e, 0xf7, 0xa0, - 0xf5, 0x3e, 0xf7, 0xa0, 0xf5, 0x3e, 0xf7, 0xa0, 0xf5, 0x3e, 0xf8, 0xa0, - 0xf5, 0x3e, 0xf8, 0xa0, 0xf5, 0x3e, 0xf8, 0xa0, 0xf5, 0x3e, 0xf8, 0xa0, - 0xf5, 0x3e, 0xf8, 0xa0, 0xf5, 0x3e, 0xf9, 0xa1, 0xf7, 0x3e, 0xf9, 0xa1, - 0xf7, 0x3e, 0xf9, 0xa1, 0xf7, 0x3e, 0xf9, 0xa1, 0xf7, 0x3e, 0xfa, 0xa1, - 0xf7, 0x3e, 0xfa, 0xa1, 0xf7, 0x3e, 0xfa, 0xa1, 0xf7, 0x3e, 0xfa, 0xa1, - 0xf7, 0x3e, 0xfa, 0xa1, 0xf7, 0x3e, 0xfb, 0xa1, 0xf7, 0x3e, 0xfb, 0xa1, - 0xf9, 0x3e, 0xfb, 0xa1, 0xf7, 0x3e, 0xfb, 0xa1, 0xf9, 0x3e, 0xfc, 0xa1, - 0xf9, 0x3e, 0xfc, 0xa1, 0xf9, 0x3e, 0xfc, 0xa1, 0xf9, 0x3e, 0xfc, 0xa1, - 0xf9, 0x3e, 0xfc, 0xa1, 0xf9, 0x3e, 0xfd, 0xa1, 0xf9, 0x3e, 0xfd, 0xa2, - 0xfb, 0x3e, 0xfd, 0xa1, 0xf9, 0x3e, 0xfd, 0xa2, 0xfb, 0x3e, 0xfe, 0xa2, - 0xfb, 0x3e, 0xfe, 0xa2, 0xfb, 0x3e, 0xfe, 0xa2, 0xfb, 0x3e, 0xfe, 0xa2, - 0xfb, 0x3e, 0xfe, 0xa2, 0xfb, 0x3e, 0xff, 0xa2, 0xfb, 0x3e, 0xff, 0xa2, - 0xfb, 0x3e, 0x03, 0x95, 0x99, 0x3e, 0x0a, 0x93, 0x99, 0x3e, 0x0f, 0x95, - 0x99, 0x3e, 0x14, 0x93, 0x99, 0x3e, 0x17, 0x95, 0x99, 0x3e, 0x1b, 0x93, - 0x99, 0x3e, 0x1e, 0x95, 0x99, 0x3e, 0x20, 0x93, 0x99, 0x3e, 0x23, 0x95, - 0x99, 0x3e, 0x25, 0x93, 0x99, 0x3e, 0x27, 0x95, 0x99, 0x3e, 0x29, 0x93, - 0x99, 0x3e, 0x2b, 0x95, 0x99, 0x3e, 0x2d, 0x93, 0x99, 0x3e, 0x2f, 0x95, - 0x99, 0x3e, 0x31, 0x93, 0x99, 0x3e, 0x32, 0x95, 0x99, 0x3e, 0x34, 0x93, - 0x99, 0x3e, 0x35, 0x95, 0x99, 0x3e, 0x37, 0x93, 0x99, 0x3e, 0x38, 0x90, - 0x9a, 0x3e, 0x3a, 0x93, 0x99, 0x3e, 0x3b, 0x90, 0x9a, 0x3e, 0x3c, 0x93, - 0x99, 0x3e, 0x3e, 0x90, 0x9a, 0x3e, 0x3f, 0x93, 0x99, 0x3e, 0x40, 0x90, - 0x9a, 0x3e, 0x42, 0x93, 0x99, 0x3e, 0x43, 0x90, 0x9a, 0x3e, 0x44, 0x93, - 0x99, 0x3e, 0x45, 0x90, 0x9a, 0x3e, 0x46, 0x93, 0x99, 0x3e, 0x47, 0x90, - 0x9a, 0x3e, 0x48, 0x93, 0x99, 0x3e, 0x49, 0x90, 0x9a, 0x3e, 0x4a, 0x93, - 0x99, 0x3e, 0x4b, 0x90, 0x9a, 0x3e, 0x4c, 0x93, 0x99, 0x3e, 0x4d, 0x90, - 0x9a, 0x3e, 0x4e, 0x93, 0x99, 0x3e, 0x4f, 0x90, 0x9a, 0x3e, 0x50, 0x93, - 0x99, 0x3e, 0x51, 0x90, 0x9a, 0x3e, 0x52, 0x93, 0x99, 0x3e, 0x53, 0x90, - 0x9a, 0x3e, 0x54, 0x8c, 0x9a, 0x3e, 0x55, 0x90, 0x9a, 0x3e, 0x56, 0x8c, - 0x9a, 0x3e, 0x57, 0x90, 0x9a, 0x3e, 0x58, 0x8c, 0x9a, 0x3e, 0x58, 0x90, - 0x9a, 0x3e, 0x59, 0x8c, 0x9a, 0x3e, 0x5a, 0x90, 0x9a, 0x3e, 0x5b, 0x8c, - 0x9a, 0x3e, 0x5c, 0x90, 0x9a, 0x3e, 0x5d, 0x8c, 0x9a, 0x3e, 0x5d, 0x90, - 0x9a, 0x3e, 0x5e, 0x8c, 0x9a, 0x3e, 0x5f, 0x90, 0x9a, 0x3e, 0x60, 0x8c, - 0x9a, 0x3e, 0x60, 0x90, 0x9a, 0x3e, 0x61, 0x8c, 0x9a, 0x3e, 0x62, 0x90, - 0x9a, 0x3e, 0x63, 0x8c, 0x9a, 0x3e, 0x63, 0x90, 0x9a, 0x3e, 0x64, 0x8c, - 0x9a, 0x3e, 0x65, 0x90, 0x9a, 0x3e, 0x66, 0x8c, 0x9a, 0x3e, 0x66, 0x90, - 0x9a, 0x3e, 0x67, 0x8c, 0x9a, 0x3e, 0x68, 0x90, 0x9a, 0x3e, 0x68, 0x8c, - 0x9a, 0x3e, 0x69, 0x90, 0x9a, 0x3e, 0x6a, 0x8c, 0x9a, 0x3e, 0x6a, 0x90, - 0x9a, 0x3e, 0x6b, 0x8c, 0x9a, 0x3e, 0x6c, 0x90, 0x9a, 0x3e, 0x6c, 0x8c, - 0x9a, 0x3e, 0x6d, 0x90, 0x9a, 0x3e, 0x6e, 0x8c, 0x9a, 0x3e, 0x6e, 0x90, - 0x9a, 0x3e, 0x6f, 0x8c, 0x9a, 0x3e, 0x70, 0x90, 0x9a, 0x3e, 0x70, 0x8c, - 0x9a, 0x3e, 0x71, 0x90, 0x9a, 0x3e, 0x72, 0x8c, 0x9a, 0x3e, 0x72, 0x90, - 0x9a, 0x3e, 0x73, 0x8c, 0x9a, 0x3e, 0x73, 0x89, 0x9a, 0x3e, 0x74, 0x8c, - 0x9a, 0x3e, 0x75, 0x89, 0x9a, 0x3e, 0x75, 0x8c, 0x9a, 0x3e, 0x76, 0x89, - 0x9a, 0x3e, 0x76, 0x8c, 0x9a, 0x3e, 0x77, 0x89, 0x9a, 0x3e, 0x78, 0x8c, - 0x9a, 0x3e, 0x78, 0x89, 0x9a, 0x3e, 0x79, 0x8c, 0x9a, 0x3e, 0x79, 0x89, - 0x9a, 0x3e, 0x7a, 0x8c, 0x9a, 0x3e, 0x7a, 0x89, 0x9a, 0x3e, 0x7b, 0x8c, - 0x9a, 0x3e, 0x7c, 0x89, 0x9a, 0x3e, 0x7c, 0x8c, 0x9a, 0x3e, 0x7d, 0x89, - 0x9a, 0x3e, 0x7d, 0x8c, 0x9a, 0x3e, 0x7e, 0x89, 0x9a, 0x3e, 0x7e, 0x8c, - 0x9a, 0x3e, 0x7f, 0x89, 0x9a, 0x3e, 0x7f, 0x8c, 0x9a, 0x3e, 0x80, 0x89, - 0x9a, 0x3e, 0x81, 0x8c, 0x9a, 0x3e, 0x81, 0x89, 0x9a, 0x3e, 0x82, 0x8c, - 0x9a, 0x3e, 0x82, 0x89, 0x9a, 0x3e, 0x83, 0x8c, 0x9a, 0x3e, 0x83, 0x89, - 0x9a, 0x3e, 0x84, 0x8c, 0x9a, 0x3e, 0x84, 0x89, 0x9a, 0x3e, 0x85, 0x8c, - 0x9a, 0x3e, 0x85, 0x89, 0x9a, 0x3e, 0x86, 0x8c, 0x9a, 0x3e, 0x86, 0x89, - 0x9a, 0x3e, 0x87, 0x8c, 0x9a, 0x3e, 0x87, 0x89, 0x9a, 0x3e, 0x88, 0x8c, - 0x9a, 0x3e, 0x88, 0x89, 0x9a, 0x3e, 0x89, 0x8c, 0x9a, 0x3e, 0x89, 0x89, - 0x9a, 0x3e, 0x8a, 0x8c, 0x9a, 0x3e, 0x8a, 0x89, 0x9a, 0x3e, 0x8b, 0x8c, - 0x9a, 0x3e, 0x8b, 0x89, 0x9a, 0x3e, 0x8c, 0x8c, 0x9a, 0x3e, 0x8c, 0x89, - 0x9a, 0x3e, 0x8d, 0x8c, 0x9a, 0x3e, 0x8d, 0x89, 0x9a, 0x3e, 0x8e, 0x8c, - 0x9a, 0x3e, 0x8e, 0x89, 0x9a, 0x3e, 0x8e, 0x8c, 0x9a, 0x3e, 0x8f, 0x89, - 0x9a, 0x3e, 0x8f, 0x8c, 0x9a, 0x3e, 0x90, 0x89, 0x9a, 0x3e, 0x90, 0x87, - 0x9b, 0x3e, 0x91, 0x89, 0x9a, 0x3e, 0x91, 0x87, 0x9b, 0x3e, 0x92, 0x89, - 0x9a, 0x3e, 0x92, 0x87, 0x9b, 0x3e, 0x93, 0x89, 0x9a, 0x3e, 0x93, 0x87, - 0x9b, 0x3e, 0x94, 0x89, 0x9a, 0x3e, 0x94, 0x87, 0x9b, 0x3e, 0x94, 0x89, - 0x9a, 0x3e, 0x95, 0x87, 0x9b, 0x3e, 0x95, 0x89, 0x9a, 0x3e, 0x96, 0x87, - 0x9b, 0x3e, 0x96, 0x89, 0x9a, 0x3e, 0x97, 0x87, 0x9b, 0x3e, 0x97, 0x89, - 0x9a, 0x3e, 0x98, 0x87, 0x9b, 0x3e, 0x98, 0x89, 0x9a, 0x3e, 0x98, 0x87, - 0x9b, 0x3e, 0x99, 0x89, 0x9a, 0x3e, 0x99, 0x87, 0x9b, 0x3e, 0x9a, 0x87, - 0x9b, 0x3e, 0x9a, 0x87, 0x9b, 0x3e, 0x9a, 0x87, 0x9b, 0x3e, 0x9a, 0x87, - 0x9b, 0x3e, 0x9a, 0x87, 0x9b, 0x3e, 0x9a, 0x87, 0x9c, 0x3e, 0x9a, 0x87, - 0x9c, 0x3e, 0x9b, 0x87, 0x9d, 0x3c, 0x9a, 0x87, 0x9d, 0x3e, 0x9b, 0x87, - 0x9d, 0x3c, 0x9e, 0x87, 0x9e, 0x3a, 0x9e, 0x87, 0x9e, 0x3a, 0x9f, 0x87, - 0x9f, 0x3a, 0x9f, 0x87, 0x9f, 0x3a, 0xa1, 0x87, 0x9f, 0x3b, 0xa1, 0x87, - 0xa0, 0x3b, 0xa1, 0x87, 0xa0, 0x3b, 0xa1, 0x87, 0xa1, 0x3b, 0xa1, 0x87, - 0xa1, 0x3b, 0xa1, 0x87, 0xa1, 0x3b, 0xa2, 0x87, 0xa2, 0x3b, 0xa2, 0x87, - 0xa2, 0x3b, 0xa3, 0x87, 0xa3, 0x3b, 0xa5, 0x87, 0xa3, 0x3c, 0xa5, 0x87, - 0xa3, 0x3c, 0xa5, 0x87, 0xa4, 0x3c, 0xa5, 0x87, 0xa4, 0x3c, 0xa5, 0x87, - 0xa5, 0x3c, 0xa5, 0x87, 0xa5, 0x3c, 0xa5, 0x87, 0xa5, 0x3c, 0xa6, 0x87, - 0xa6, 0x3c, 0xa6, 0x87, 0xa6, 0x3c, 0xa6, 0x87, 0xa6, 0x3c, 0xa7, 0x87, - 0xa7, 0x3c, 0xa8, 0x87, 0xa7, 0x3d, 0xa8, 0x87, 0xa8, 0x3d, 0xa8, 0x87, - 0xa8, 0x3d, 0xa8, 0x87, 0xa8, 0x3d, 0xa9, 0x87, 0xa9, 0x3d, 0xa9, 0x87, - 0xa9, 0x3d, 0xaa, 0x87, 0xaa, 0x3d, 0xaa, 0x87, 0xaa, 0x3d, 0xaa, 0x87, - 0xaa, 0x3d, 0xab, 0x87, 0xab, 0x3d, 0xab, 0x87, 0xab, 0x3d, 0xab, 0x87, - 0xab, 0x3d, 0xac, 0x88, 0xac, 0x3e, 0xac, 0x88, 0xac, 0x3e, 0xac, 0x88, - 0xac, 0x3e, 0xad, 0x88, 0xad, 0x3e, 0xad, 0x88, 0xad, 0x3e, 0xae, 0x88, - 0xae, 0x3e, 0xae, 0x88, 0xae, 0x3e, 0xae, 0x88, 0xae, 0x3e, 0xaf, 0x88, - 0xaf, 0x3e, 0xaf, 0x88, 0xae, 0x3e, 0xaf, 0x88, 0xaf, 0x3e, 0xb0, 0x89, - 0xb0, 0x3e, 0xb0, 0x89, 0xb0, 0x3e, 0xb0, 0x89, 0xb0, 0x3e, 0xb1, 0x89, - 0xb1, 0x3e, 0xb1, 0x89, 0xb1, 0x3e, 0xb2, 0x89, 0xb2, 0x3e, 0xb2, 0x89, - 0xb2, 0x3e, 0xb2, 0x89, 0xb2, 0x3e, 0xb3, 0x89, 0xb2, 0x3e, 0xb3, 0x89, - 0xb2, 0x3e, 0xb3, 0x89, 0xb2, 0x3e, 0xb4, 0x89, 0xb2, 0x3e, 0xb4, 0x8a, - 0xb4, 0x3e, 0xb4, 0x8a, 0xb4, 0x3e, 0xb5, 0x8a, 0xb5, 0x3e, 0xb5, 0x8a, - 0xb5, 0x3e, 0xb5, 0x8a, 0xb5, 0x3e, 0xb6, 0x8a, 0xb5, 0x3e, 0xb6, 0x8a, - 0xb5, 0x3e, 0xb6, 0x8a, 0xb5, 0x3e, 0xb7, 0x8a, 0xb5, 0x3e, 0xb7, 0x8b, - 0xb7, 0x3e, 0xb7, 0x8b, 0xb7, 0x3e, 0xb8, 0x8b, 0xb8, 0x3e, 0xb8, 0x8b, - 0xb8, 0x3e, 0xb8, 0x8b, 0xb8, 0x3e, 0xb9, 0x8b, 0xb8, 0x3e, 0xb9, 0x8b, - 0xb8, 0x3e, 0xb9, 0x8b, 0xb8, 0x3e, 0xba, 0x8b, 0xb8, 0x3e, 0xba, 0x8c, - 0xba, 0x3e, 0xba, 0x8c, 0xba, 0x3e, 0xbb, 0x8c, 0xbb, 0x3e, 0xbb, 0x8c, - 0xbb, 0x3e, 0xbb, 0x8c, 0xbb, 0x3e, 0xbc, 0x8c, 0xbc, 0x3e, 0xbc, 0x8c, - 0xbb, 0x3e, 0xbc, 0x8c, 0xbc, 0x3e, 0xbd, 0x8c, 0xbb, 0x3e, 0xbd, 0x8c, - 0xbc, 0x3e, 0xbd, 0x8c, 0xbb, 0x3e, 0xbe, 0x8c, 0xbc, 0x3e, 0xbe, 0x8d, - 0xbe, 0x3e, 0xbe, 0x8d, 0xbe, 0x3e, 0xbf, 0x8d, 0xbf, 0x3e, 0xbf, 0x8d, - 0xbe, 0x3e, 0xbf, 0x8d, 0xbf, 0x3e, 0xc0, 0x8d, 0xbe, 0x3e, 0xc0, 0x8d, - 0xbf, 0x3e, 0xc0, 0x8d, 0xbe, 0x3e, 0xc1, 0x8d, 0xbf, 0x3e, 0xc1, 0x8e, - 0xc1, 0x3e, 0xc1, 0x8e, 0xc1, 0x3e, 0xc1, 0x8e, 0xc1, 0x3e, 0xc2, 0x8e, - 0xc1, 0x3e, 0xc2, 0x8e, 0xc1, 0x3e, 0xc2, 0x8e, 0xc1, 0x3e, 0xc3, 0x8e, - 0xc1, 0x3e, 0xc3, 0x8e, 0xc1, 0x3e, 0xc3, 0x8e, 0xc1, 0x3e, 0xc4, 0x8f, - 0xc4, 0x3e, 0xc4, 0x8f, 0xc4, 0x3e, 0xc4, 0x8f, 0xc4, 0x3e, 0xc5, 0x8f, - 0xc5, 0x3e, 0xc5, 0x8f, 0xc4, 0x3e, 0xc5, 0x8f, 0xc5, 0x3e, 0xc6, 0x8f, - 0xc4, 0x3e, 0xc6, 0x8f, 0xc5, 0x3e, 0xc6, 0x8f, 0xc4, 0x3e, 0xc6, 0x8f, - 0xc5, 0x3e, 0xc7, 0x8f, 0xc4, 0x3e, 0xc7, 0x8f, 0xc5, 0x3e, 0xc7, 0x90, - 0xc7, 0x3e, 0xc8, 0x90, 0xc7, 0x3e, 0xc8, 0x90, 0xc7, 0x3e, 0xc8, 0x90, - 0xc7, 0x3e, 0xc9, 0x90, 0xc7, 0x3e, 0xc9, 0x90, 0xc7, 0x3e, 0xc9, 0x90, - 0xc7, 0x3e, 0xc9, 0x90, 0xc7, 0x3e, 0xca, 0x90, 0xc7, 0x3e, 0xca, 0x91, - 0xca, 0x3e, 0xca, 0x91, 0xca, 0x3e, 0xcb, 0x91, 0xca, 0x3e, 0xcb, 0x91, - 0xca, 0x3e, 0xcb, 0x91, 0xca, 0x3e, 0xcc, 0x91, 0xca, 0x3e, 0xcc, 0x91, - 0xca, 0x3e, 0xcc, 0x91, 0xca, 0x3e, 0xcc, 0x91, 0xca, 0x3e, 0xcd, 0x92, - 0xcd, 0x3e, 0xcd, 0x92, 0xcd, 0x3e, 0xcd, 0x92, 0xcd, 0x3e, 0xce, 0x92, - 0xcd, 0x3e, 0xce, 0x92, 0xcd, 0x3e, 0xce, 0x92, 0xcd, 0x3e, 0xce, 0x92, - 0xcd, 0x3e, 0xcf, 0x92, 0xcd, 0x3e, 0xcf, 0x92, 0xcd, 0x3e, 0xcf, 0x92, - 0xcd, 0x3e, 0xd0, 0x93, 0xd0, 0x3e, 0xd0, 0x93, 0xcf, 0x3e, 0xd0, 0x93, - 0xd0, 0x3e, 0xd0, 0x93, 0xcf, 0x3e, 0xd1, 0x93, 0xd0, 0x3e, 0xd1, 0x93, - 0xcf, 0x3e, 0xd1, 0x93, 0xd0, 0x3e, 0xd2, 0x93, 0xcf, 0x3e, 0xd2, 0x93, - 0xd0, 0x3e, 0xd2, 0x94, 0xd2, 0x3e, 0xd2, 0x94, 0xd2, 0x3e, 0xd3, 0x94, - 0xd2, 0x3e, 0xd3, 0x94, 0xd2, 0x3e, 0xd3, 0x94, 0xd2, 0x3e, 0xd4, 0x94, - 0xd2, 0x3e, 0xd4, 0x94, 0xd2, 0x3e, 0xd4, 0x94, 0xd2, 0x3e, 0xd4, 0x94, - 0xd2, 0x3e, 0xd5, 0x94, 0xd2, 0x3e, 0xd5, 0x94, 0xd2, 0x3e, 0xd5, 0x94, - 0xd2, 0x3e, 0xd6, 0x94, 0xd5, 0x3e, 0xd6, 0x94, 0xd5, 0x3e, 0xd6, 0x94, - 0xd5, 0x3e, 0xd6, 0x94, 0xd5, 0x3e, 0xd7, 0x94, 0xd5, 0x3e, 0xd7, 0x94, - 0xd5, 0x3e, 0xd7, 0x94, 0xd5, 0x3e, 0xd7, 0x94, 0xd5, 0x3e, 0xd8, 0x94, - 0xd5, 0x3e, 0xd8, 0x95, 0xd7, 0x3e, 0xd8, 0x95, 0xd7, 0x3e, 0xd9, 0x95, - 0xd7, 0x3e, 0xd9, 0x95, 0xd7, 0x3e, 0xd9, 0x95, 0xd7, 0x3e, 0xd9, 0x95, - 0xd7, 0x3e, 0xda, 0x95, 0xd7, 0x3e, 0xda, 0x95, 0xd7, 0x3e, 0xda, 0x95, - 0xd7, 0x3e, 0xda, 0x96, 0xda, 0x3e, 0xdb, 0x96, 0xda, 0x3e, 0xdb, 0x96, - 0xda, 0x3e, 0xdb, 0x96, 0xda, 0x3e, 0xdb, 0x96, 0xda, 0x3e, 0xdc, 0x96, - 0xda, 0x3e, 0xdc, 0x96, 0xda, 0x3e, 0xdc, 0x96, 0xda, 0x3e, 0xdd, 0x96, - 0xda, 0x3e, 0xdd, 0x96, 0xda, 0x3e, 0xdd, 0x97, 0xdd, 0x3e, 0xdd, 0x96, - 0xda, 0x3e, 0xde, 0x97, 0xdd, 0x3e, 0xde, 0x97, 0xdc, 0x3e, 0xde, 0x97, - 0xdd, 0x3e, 0xde, 0x97, 0xdc, 0x3e, 0xdf, 0x97, 0xdd, 0x3e, 0xdf, 0x97, - 0xdc, 0x3e, 0xdf, 0x97, 0xdd, 0x3e, 0xdf, 0x97, 0xdc, 0x3e, 0xe0, 0x97, - 0xdd, 0x3e, 0xe0, 0x98, 0xdf, 0x3e, 0xe0, 0x98, 0xdf, 0x3e, 0xe1, 0x98, - 0xdf, 0x3e, 0xe1, 0x98, 0xdf, 0x3e, 0xe1, 0x98, 0xdf, 0x3e, 0xe1, 0x98, - 0xdf, 0x3e, 0xe2, 0x98, 0xdf, 0x3e, 0xe2, 0x98, 0xdf, 0x3e, 0xe2, 0x98, - 0xdf, 0x3e, 0xe2, 0x99, 0xe1, 0x3e, 0xe3, 0x99, 0xe2, 0x3e, 0xe3, 0x99, - 0xe1, 0x3e, 0xe3, 0x99, 0xe2, 0x3e, 0xe3, 0x99, 0xe1, 0x3e, 0xe4, 0x99, - 0xe2, 0x3e, 0xe4, 0x99, 0xe1, 0x3e, 0xe4, 0x99, 0xe2, 0x3e, 0xe4, 0x99, - 0xe1, 0x3e, 0xe5, 0x99, 0xe2, 0x3e, 0xe5, 0x9a, 0xe4, 0x3e, 0xe5, 0x9a, - 0xe4, 0x3e, 0xe5, 0x9a, 0xe4, 0x3e, 0xe6, 0x9a, 0xe4, 0x3e, 0xe6, 0x9a, - 0xe4, 0x3e, 0xe6, 0x9a, 0xe4, 0x3e, 0xe6, 0x9a, 0xe4, 0x3e, 0xe7, 0x9a, - 0xe4, 0x3e, 0xe7, 0x9a, 0xe4, 0x3e, 0xe7, 0x9a, 0xe6, 0x3e, 0xe7, 0x9a, - 0xe4, 0x3e, 0xe8, 0x9a, 0xe6, 0x3e, 0xe8, 0x9a, 0xe6, 0x3e, 0xe8, 0x9a, - 0xe6, 0x3e, 0xe8, 0x9a, 0xe6, 0x3e, 0xe9, 0x9a, 0xe6, 0x3e, 0xe9, 0x9a, - 0xe6, 0x3e, 0xe9, 0x9a, 0xe6, 0x3e, 0xe9, 0x9b, 0xe8, 0x3e, 0xea, 0x9b, - 0xe9, 0x3e, 0xea, 0x9b, 0xe8, 0x3e, 0xea, 0x9b, 0xe9, 0x3e, 0xea, 0x9b, - 0xe8, 0x3e, 0xeb, 0x9b, 0xe9, 0x3e, 0xeb, 0x9b, 0xe8, 0x3e, 0xeb, 0x9b, - 0xe9, 0x3e, 0xeb, 0x9b, 0xe8, 0x3e, 0xec, 0x9b, 0xe9, 0x3e, 0xec, 0x9c, - 0xeb, 0x3e, 0xec, 0x9b, 0xe9, 0x3e, 0xec, 0x9c, 0xeb, 0x3e, 0xec, 0x9c, - 0xeb, 0x3e, 0xed, 0x9c, 0xeb, 0x3e, 0xed, 0x9c, 0xeb, 0x3e, 0xed, 0x9c, - 0xeb, 0x3e, 0xed, 0x9c, 0xeb, 0x3e, 0xee, 0x9c, 0xeb, 0x3e, 0xee, 0x9c, - 0xeb, 0x3e, 0xee, 0x9c, 0xeb, 0x3e, 0xee, 0x9d, 0xed, 0x3e, 0xef, 0x9d, - 0xed, 0x3e, 0xef, 0x9d, 0xed, 0x3e, 0xef, 0x9d, 0xed, 0x3e, 0xef, 0x9d, - 0xed, 0x3e, 0xf0, 0x9d, 0xed, 0x3e, 0xf0, 0x9d, 0xed, 0x3e, 0xf0, 0x9d, - 0xed, 0x3e, 0xf0, 0x9d, 0xed, 0x3e, 0xf1, 0x9d, 0xed, 0x3e, 0xf1, 0x9e, - 0xef, 0x3e, 0xf1, 0x9d, 0xed, 0x3e, 0xf1, 0x9e, 0xef, 0x3e, 0xf2, 0x9e, - 0xef, 0x3e, 0xf2, 0x9e, 0xef, 0x3e, 0xf2, 0x9e, 0xef, 0x3e, 0xf2, 0x9e, - 0xef, 0x3e, 0xf2, 0x9e, 0xef, 0x3e, 0xf3, 0x9e, 0xef, 0x3e, 0xf3, 0x9f, - 0xf2, 0x3e, 0xf3, 0x9e, 0xef, 0x3e, 0xf3, 0x9f, 0xf2, 0x3e, 0xf4, 0x9f, - 0xf1, 0x3e, 0xf4, 0x9f, 0xf2, 0x3e, 0xf4, 0x9f, 0xf1, 0x3e, 0xf4, 0x9f, - 0xf2, 0x3e, 0xf5, 0x9f, 0xf1, 0x3e, 0xf5, 0x9f, 0xf2, 0x3e, 0xf5, 0x9f, - 0xf4, 0x3e, 0xf5, 0x9f, 0xf4, 0x3e, 0xf5, 0x9f, 0xf4, 0x3e, 0xf6, 0x9f, - 0xf4, 0x3e, 0xf6, 0x9f, 0xf4, 0x3e, 0xf6, 0x9f, 0xf4, 0x3e, 0xf6, 0x9f, - 0xf4, 0x3e, 0xf7, 0x9f, 0xf4, 0x3e, 0xf7, 0x9f, 0xf4, 0x3e, 0xf7, 0x9f, - 0xf4, 0x3e, 0xf7, 0x9f, 0xf4, 0x3e, 0xf8, 0x9f, 0xf4, 0x3e, 0xf8, 0xa0, - 0xf6, 0x3e, 0xf8, 0xa0, 0xf6, 0x3e, 0xf8, 0xa0, 0xf6, 0x3e, 0xf8, 0xa0, - 0xf6, 0x3e, 0xf9, 0xa0, 0xf6, 0x3e, 0xf9, 0xa0, 0xf6, 0x3e, 0xf9, 0xa0, - 0xf6, 0x3e, 0xf9, 0xa0, 0xf6, 0x3e, 0xfa, 0xa0, 0xf6, 0x3e, 0xfa, 0xa1, - 0xf8, 0x3e, 0xfa, 0xa0, 0xf6, 0x3e, 0xfa, 0xa1, 0xf8, 0x3e, 0xfa, 0xa1, - 0xf8, 0x3e, 0xfb, 0xa1, 0xf8, 0x3e, 0xfb, 0xa1, 0xf8, 0x3e, 0xfb, 0xa1, - 0xf8, 0x3e, 0xfb, 0xa1, 0xf8, 0x3e, 0xfc, 0xa1, 0xf8, 0x3e, 0xfc, 0xa2, - 0xfa, 0x3e, 0xfc, 0xa2, 0xfa, 0x3e, 0xfc, 0xa2, 0xfa, 0x3e, 0xfc, 0xa2, - 0xfa, 0x3e, 0xfd, 0xa2, 0xfa, 0x3e, 0xfd, 0xa2, 0xfa, 0x3e, 0xfd, 0xa2, - 0xfa, 0x3e, 0xfd, 0xa2, 0xfa, 0x3e, 0xfe, 0xa2, 0xfa, 0x3e, 0xfe, 0xa2, - 0xfa, 0x3e, 0xfe, 0xa2, 0xfa, 0x3e, 0xfe, 0xa2, 0xfa, 0x3e, 0xfe, 0xa2, - 0xfa, 0x3e, 0xff, 0xa2, 0xfa, 0x3e, 0xff, 0xa2, 0xfa, 0x3e, 0x03, 0x96, - 0x99, 0x3f, 0x0a, 0x92, 0x99, 0x3f, 0x0f, 0x96, 0x99, 0x3f, 0x14, 0x92, - 0x99, 0x3f, 0x17, 0x8f, 0x9a, 0x3f, 0x1b, 0x92, 0x99, 0x3f, 0x1e, 0x8f, - 0x9a, 0x3f, 0x20, 0x92, 0x99, 0x3f, 0x23, 0x8f, 0x9a, 0x3f, 0x25, 0x92, - 0x99, 0x3f, 0x27, 0x8f, 0x9a, 0x3f, 0x29, 0x92, 0x99, 0x3f, 0x2b, 0x8f, - 0x9a, 0x3f, 0x2d, 0x92, 0x99, 0x3f, 0x2f, 0x8f, 0x9a, 0x3f, 0x31, 0x92, - 0x99, 0x3f, 0x32, 0x8f, 0x9a, 0x3f, 0x34, 0x92, 0x99, 0x3f, 0x35, 0x8f, - 0x9a, 0x3f, 0x37, 0x92, 0x99, 0x3f, 0x38, 0x8f, 0x9a, 0x3f, 0x3a, 0x92, - 0x99, 0x3f, 0x3b, 0x8f, 0x9a, 0x3f, 0x3c, 0x92, 0x99, 0x3f, 0x3e, 0x8f, - 0x9a, 0x3f, 0x3f, 0x92, 0x99, 0x3f, 0x40, 0x8f, 0x9a, 0x3f, 0x42, 0x92, - 0x99, 0x3f, 0x43, 0x8f, 0x9a, 0x3f, 0x44, 0x92, 0x99, 0x3f, 0x45, 0x8f, - 0x9a, 0x3f, 0x46, 0x92, 0x99, 0x3f, 0x47, 0x8f, 0x9a, 0x3f, 0x48, 0x92, - 0x99, 0x3f, 0x49, 0x8f, 0x9a, 0x3f, 0x4a, 0x92, 0x99, 0x3f, 0x4b, 0x8f, - 0x9a, 0x3f, 0x4c, 0x92, 0x99, 0x3f, 0x4d, 0x8f, 0x9a, 0x3f, 0x4e, 0x92, - 0x99, 0x3f, 0x4f, 0x8f, 0x9a, 0x3f, 0x50, 0x92, 0x99, 0x3f, 0x51, 0x8f, - 0x9a, 0x3f, 0x52, 0x92, 0x99, 0x3f, 0x53, 0x8f, 0x9a, 0x3f, 0x54, 0x92, - 0x99, 0x3f, 0x55, 0x8f, 0x9a, 0x3f, 0x56, 0x92, 0x99, 0x3f, 0x57, 0x8f, - 0x9a, 0x3f, 0x58, 0x92, 0x99, 0x3f, 0x58, 0x8f, 0x9a, 0x3f, 0x59, 0x92, - 0x99, 0x3f, 0x5a, 0x8f, 0x9a, 0x3f, 0x5b, 0x92, 0x99, 0x3f, 0x5c, 0x8f, - 0x9a, 0x3f, 0x5d, 0x92, 0x99, 0x3f, 0x5d, 0x8f, 0x9a, 0x3f, 0x5e, 0x92, - 0x99, 0x3f, 0x5f, 0x8f, 0x9a, 0x3f, 0x60, 0x92, 0x99, 0x3f, 0x60, 0x8f, - 0x9a, 0x3f, 0x61, 0x92, 0x99, 0x3f, 0x62, 0x8f, 0x9a, 0x3f, 0x63, 0x92, - 0x99, 0x3f, 0x63, 0x8f, 0x9a, 0x3f, 0x64, 0x92, 0x99, 0x3f, 0x65, 0x8f, - 0x9a, 0x3f, 0x66, 0x92, 0x99, 0x3f, 0x66, 0x8f, 0x9a, 0x3f, 0x67, 0x8d, - 0x9a, 0x3f, 0x68, 0x8f, 0x9a, 0x3f, 0x68, 0x8d, 0x9a, 0x3f, 0x69, 0x8f, - 0x9a, 0x3f, 0x6a, 0x8d, 0x9a, 0x3f, 0x6a, 0x8f, 0x9a, 0x3f, 0x6b, 0x8d, - 0x9a, 0x3f, 0x6c, 0x8f, 0x9a, 0x3f, 0x6c, 0x8d, 0x9a, 0x3f, 0x6d, 0x8f, - 0x9a, 0x3f, 0x6e, 0x8d, 0x9a, 0x3f, 0x6e, 0x8f, 0x9a, 0x3f, 0x6f, 0x8d, - 0x9a, 0x3f, 0x70, 0x8f, 0x9a, 0x3f, 0x70, 0x8d, 0x9a, 0x3f, 0x71, 0x8f, - 0x9a, 0x3f, 0x72, 0x8d, 0x9a, 0x3f, 0x72, 0x8f, 0x9a, 0x3f, 0x73, 0x8d, - 0x9a, 0x3f, 0x73, 0x8f, 0x9a, 0x3f, 0x74, 0x8d, 0x9a, 0x3f, 0x75, 0x8f, - 0x9a, 0x3f, 0x75, 0x8d, 0x9a, 0x3f, 0x76, 0x8f, 0x9a, 0x3f, 0x76, 0x8d, - 0x9a, 0x3f, 0x77, 0x8f, 0x9a, 0x3f, 0x78, 0x8d, 0x9a, 0x3f, 0x78, 0x8f, - 0x9a, 0x3f, 0x79, 0x8d, 0x9a, 0x3f, 0x79, 0x8f, 0x9a, 0x3f, 0x7a, 0x8d, - 0x9a, 0x3f, 0x7a, 0x8f, 0x9a, 0x3f, 0x7b, 0x8d, 0x9a, 0x3f, 0x7c, 0x8f, - 0x9a, 0x3f, 0x7c, 0x8d, 0x9a, 0x3f, 0x7d, 0x89, 0x9a, 0x3f, 0x7d, 0x8d, - 0x9a, 0x3f, 0x7e, 0x89, 0x9a, 0x3f, 0x7e, 0x8d, 0x9a, 0x3f, 0x7f, 0x89, - 0x9a, 0x3f, 0x7f, 0x8d, 0x9a, 0x3f, 0x80, 0x89, 0x9a, 0x3f, 0x81, 0x8d, - 0x9a, 0x3f, 0x81, 0x89, 0x9a, 0x3f, 0x82, 0x8d, 0x9a, 0x3f, 0x82, 0x89, - 0x9a, 0x3f, 0x83, 0x8d, 0x9a, 0x3f, 0x83, 0x89, 0x9a, 0x3f, 0x84, 0x8d, - 0x9a, 0x3f, 0x84, 0x89, 0x9a, 0x3f, 0x85, 0x8d, 0x9a, 0x3f, 0x85, 0x89, - 0x9a, 0x3f, 0x86, 0x8d, 0x9a, 0x3f, 0x86, 0x89, 0x9a, 0x3f, 0x87, 0x8d, - 0x9a, 0x3f, 0x87, 0x89, 0x9a, 0x3f, 0x88, 0x8d, 0x9a, 0x3f, 0x88, 0x89, - 0x9a, 0x3f, 0x89, 0x8d, 0x9a, 0x3f, 0x89, 0x89, 0x9a, 0x3f, 0x8a, 0x8d, - 0x9a, 0x3f, 0x8a, 0x89, 0x9a, 0x3f, 0x8b, 0x8d, 0x9a, 0x3f, 0x8b, 0x89, - 0x9a, 0x3f, 0x8c, 0x8d, 0x9a, 0x3f, 0x8c, 0x89, 0x9a, 0x3f, 0x8d, 0x8d, - 0x9a, 0x3f, 0x8d, 0x89, 0x9a, 0x3f, 0x8e, 0x8d, 0x9a, 0x3f, 0x8e, 0x89, - 0x9a, 0x3f, 0x8e, 0x8d, 0x9a, 0x3f, 0x8f, 0x89, 0x9a, 0x3f, 0x8f, 0x8d, - 0x9a, 0x3f, 0x90, 0x89, 0x9a, 0x3f, 0x90, 0x88, 0x9b, 0x3f, 0x91, 0x89, - 0x9a, 0x3f, 0x91, 0x88, 0x9b, 0x3f, 0x92, 0x89, 0x9a, 0x3f, 0x92, 0x88, - 0x9b, 0x3f, 0x93, 0x89, 0x9a, 0x3f, 0x93, 0x88, 0x9b, 0x3f, 0x94, 0x89, - 0x9a, 0x3f, 0x94, 0x88, 0x9b, 0x3f, 0x94, 0x89, 0x9a, 0x3f, 0x95, 0x88, - 0x9b, 0x3f, 0x95, 0x89, 0x9a, 0x3f, 0x96, 0x88, 0x9b, 0x3f, 0x96, 0x89, - 0x9a, 0x3f, 0x97, 0x88, 0x9b, 0x3f, 0x97, 0x89, 0x9a, 0x3f, 0x98, 0x88, - 0x9b, 0x3f, 0x98, 0x89, 0x9a, 0x3f, 0x98, 0x88, 0x9b, 0x3f, 0x99, 0x89, - 0x9a, 0x3f, 0x99, 0x88, 0x9b, 0x3f, 0x9a, 0x89, 0x9a, 0x3f, 0x9a, 0x88, - 0x9b, 0x3f, 0x9a, 0x88, 0x9b, 0x3f, 0x9a, 0x88, 0x9b, 0x3f, 0x9a, 0x88, - 0x9b, 0x3f, 0x9a, 0x88, 0x9c, 0x3f, 0x9a, 0x88, 0x9c, 0x3f, 0x9a, 0x88, - 0x9d, 0x3f, 0x9a, 0x88, 0x9d, 0x3f, 0x9a, 0x88, 0x9d, 0x3f, 0x9a, 0x88, - 0x9e, 0x3f, 0x9f, 0x88, 0x9e, 0x3b, 0x9f, 0x88, 0x9f, 0x3b, 0x9f, 0x88, - 0x9f, 0x3b, 0x9f, 0x88, 0x9f, 0x3b, 0xa0, 0x88, 0xa0, 0x3b, 0xa0, 0x88, - 0xa0, 0x3b, 0xa1, 0x88, 0xa1, 0x3b, 0xa3, 0x88, 0xa1, 0x3c, 0xa3, 0x88, - 0xa1, 0x3c, 0xa3, 0x88, 0xa2, 0x3c, 0xa3, 0x88, 0xa2, 0x3c, 0xa3, 0x88, - 0xa3, 0x3c, 0xa3, 0x88, 0xa3, 0x3c, 0xa3, 0x88, 0xa3, 0x3c, 0xa4, 0x88, - 0xa4, 0x3c, 0xa4, 0x88, 0xa4, 0x3c, 0xa5, 0x88, 0xa5, 0x3c, 0xa6, 0x88, - 0xa5, 0x3d, 0xa7, 0x88, 0xa5, 0x3d, 0xa6, 0x88, 0xa6, 0x3d, 0xa7, 0x88, - 0xa6, 0x3d, 0xa6, 0x88, 0xa6, 0x3d, 0xa7, 0x88, 0xa7, 0x3d, 0xa7, 0x88, - 0xa7, 0x3d, 0xa8, 0x88, 0xa8, 0x3d, 0xa8, 0x88, 0xa8, 0x3d, 0xa8, 0x88, - 0xa8, 0x3d, 0xa9, 0x88, 0xa9, 0x3d, 0xaa, 0x88, 0xa9, 0x3e, 0xaa, 0x88, - 0xaa, 0x3e, 0xaa, 0x88, 0xaa, 0x3e, 0xaa, 0x88, 0xaa, 0x3e, 0xab, 0x88, - 0xab, 0x3e, 0xab, 0x88, 0xab, 0x3e, 0xab, 0x88, 0xab, 0x3e, 0xac, 0x88, - 0xac, 0x3e, 0xac, 0x88, 0xac, 0x3e, 0xac, 0x88, 0xac, 0x3e, 0xad, 0x88, - 0xad, 0x3e, 0xad, 0x88, 0xad, 0x3e, 0xae, 0x89, 0xae, 0x3f, 0xae, 0x89, - 0xae, 0x3f, 0xae, 0x89, 0xae, 0x3f, 0xaf, 0x89, 0xaf, 0x3f, 0xaf, 0x89, - 0xaf, 0x3f, 0xaf, 0x89, 0xaf, 0x3f, 0xb0, 0x89, 0xb0, 0x3f, 0xb0, 0x89, - 0xb0, 0x3f, 0xb0, 0x89, 0xb0, 0x3f, 0xb1, 0x89, 0xb0, 0x3f, 0xb1, 0x89, - 0xb0, 0x3f, 0xb2, 0x89, 0xb2, 0x3f, 0xb2, 0x89, 0xb2, 0x3f, 0xb2, 0x89, - 0xb2, 0x3f, 0xb3, 0x89, 0xb2, 0x3f, 0xb3, 0x89, 0xb2, 0x3f, 0xb3, 0x8a, - 0xb3, 0x3f, 0xb4, 0x8a, 0xb4, 0x3f, 0xb4, 0x8a, 0xb3, 0x3f, 0xb4, 0x8a, - 0xb4, 0x3f, 0xb5, 0x8a, 0xb3, 0x3f, 0xb5, 0x8a, 0xb4, 0x3f, 0xb5, 0x8b, - 0xb5, 0x3f, 0xb6, 0x8b, 0xb6, 0x3f, 0xb6, 0x8b, 0xb6, 0x3f, 0xb6, 0x8b, - 0xb6, 0x3f, 0xb7, 0x8b, 0xb7, 0x3f, 0xb7, 0x8b, 0xb7, 0x3f, 0xb7, 0x8b, - 0xb7, 0x3f, 0xb8, 0x8b, 0xb7, 0x3f, 0xb8, 0x8b, 0xb7, 0x3f, 0xb8, 0x8b, - 0xb7, 0x3f, 0xb9, 0x8c, 0xb9, 0x3f, 0xb9, 0x8c, 0xb9, 0x3f, 0xb9, 0x8c, - 0xb9, 0x3f, 0xba, 0x8c, 0xba, 0x3f, 0xba, 0x8c, 0xba, 0x3f, 0xba, 0x8c, - 0xba, 0x3f, 0xbb, 0x8c, 0xba, 0x3f, 0xbb, 0x8c, 0xba, 0x3f, 0xbb, 0x8c, - 0xba, 0x3f, 0xbc, 0x8d, 0xbc, 0x3f, 0xbc, 0x8d, 0xbc, 0x3f, 0xbc, 0x8d, - 0xbc, 0x3f, 0xbd, 0x8d, 0xbd, 0x3f, 0xbd, 0x8d, 0xbd, 0x3f, 0xbd, 0x8d, - 0xbd, 0x3f, 0xbe, 0x8d, 0xbd, 0x3f, 0xbe, 0x8d, 0xbd, 0x3f, 0xbe, 0x8d, - 0xbd, 0x3f, 0xbf, 0x8d, 0xbd, 0x3f, 0xbf, 0x8d, 0xbd, 0x3f, 0xbf, 0x8e, - 0xbf, 0x3f, 0xc0, 0x8e, 0xc0, 0x3f, 0xc0, 0x8e, 0xc0, 0x3f, 0xc0, 0x8e, - 0xc0, 0x3f, 0xc1, 0x8e, 0xc0, 0x3f, 0xc1, 0x8e, 0xc0, 0x3f, 0xc1, 0x8e, - 0xc0, 0x3f, 0xc1, 0x8e, 0xc0, 0x3f, 0xc2, 0x8e, 0xc0, 0x3f, 0xc2, 0x8e, - 0xc0, 0x3f, 0xc2, 0x8e, 0xc2, 0x3f, 0xc3, 0x8e, 0xc3, 0x3f, 0xc3, 0x8e, - 0xc3, 0x3f, 0xc3, 0x8e, 0xc3, 0x3f, 0xc4, 0x8e, 0xc3, 0x3f, 0xc4, 0x8e, - 0xc3, 0x3f, 0xc4, 0x8e, 0xc3, 0x3f, 0xc5, 0x8e, 0xc3, 0x3f, 0xc5, 0x8e, - 0xc3, 0x3f, 0xc5, 0x8f, 0xc5, 0x3f, 0xc6, 0x8f, 0xc6, 0x3f, 0xc6, 0x8f, - 0xc6, 0x3f, 0xc6, 0x8f, 0xc6, 0x3f, 0xc6, 0x8f, 0xc6, 0x3f, 0xc7, 0x8f, - 0xc6, 0x3f, 0xc7, 0x8f, 0xc6, 0x3f, 0xc7, 0x8f, 0xc6, 0x3f, 0xc8, 0x8f, - 0xc6, 0x3f, 0xc8, 0x8f, 0xc6, 0x3f, 0xc8, 0x8f, 0xc6, 0x3f, 0xc9, 0x90, - 0xc9, 0x3f, 0xc9, 0x90, 0xc9, 0x3f, 0xc9, 0x90, 0xc9, 0x3f, 0xc9, 0x90, - 0xc9, 0x3f, 0xca, 0x90, 0xc9, 0x3f, 0xca, 0x90, 0xc9, 0x3f, 0xca, 0x90, - 0xc9, 0x3f, 0xcb, 0x90, 0xc9, 0x3f, 0xcb, 0x90, 0xc9, 0x3f, 0xcb, 0x90, - 0xc9, 0x3f, 0xcc, 0x91, 0xcc, 0x3f, 0xcc, 0x91, 0xcb, 0x3f, 0xcc, 0x91, - 0xcc, 0x3f, 0xcc, 0x91, 0xcb, 0x3f, 0xcd, 0x91, 0xcc, 0x3f, 0xcd, 0x91, - 0xcb, 0x3f, 0xcd, 0x91, 0xcc, 0x3f, 0xce, 0x91, 0xcb, 0x3f, 0xce, 0x91, - 0xcc, 0x3f, 0xce, 0x92, 0xce, 0x3f, 0xce, 0x92, 0xce, 0x3f, 0xcf, 0x92, - 0xce, 0x3f, 0xcf, 0x92, 0xce, 0x3f, 0xcf, 0x92, 0xce, 0x3f, 0xd0, 0x92, - 0xce, 0x3f, 0xd0, 0x92, 0xce, 0x3f, 0xd0, 0x92, 0xce, 0x3f, 0xd0, 0x92, - 0xce, 0x3f, 0xd1, 0x92, 0xce, 0x3f, 0xd1, 0x93, 0xd1, 0x3f, 0xd1, 0x93, - 0xd1, 0x3f, 0xd2, 0x93, 0xd1, 0x3f, 0xd2, 0x93, 0xd1, 0x3f, 0xd2, 0x93, - 0xd1, 0x3f, 0xd2, 0x93, 0xd1, 0x3f, 0xd3, 0x93, 0xd1, 0x3f, 0xd3, 0x93, - 0xd1, 0x3f, 0xd3, 0x93, 0xd1, 0x3f, 0xd4, 0x94, 0xd4, 0x3f, 0xd4, 0x93, - 0xd1, 0x3f, 0xd4, 0x94, 0xd4, 0x3f, 0xd4, 0x94, 0xd3, 0x3f, 0xd5, 0x94, - 0xd4, 0x3f, 0xd5, 0x94, 0xd3, 0x3f, 0xd5, 0x94, 0xd4, 0x3f, 0xd6, 0x94, - 0xd3, 0x3f, 0xd6, 0x94, 0xd4, 0x3f, 0xd6, 0x94, 0xd3, 0x3f, 0xd6, 0x94, - 0xd4, 0x3f, 0xd7, 0x95, 0xd6, 0x3f, 0xd7, 0x95, 0xd6, 0x3f, 0xd7, 0x95, - 0xd6, 0x3f, 0xd7, 0x95, 0xd6, 0x3f, 0xd8, 0x95, 0xd6, 0x3f, 0xd8, 0x95, - 0xd6, 0x3f, 0xd8, 0x95, 0xd6, 0x3f, 0xd9, 0x95, 0xd6, 0x3f, 0xd9, 0x95, - 0xd6, 0x3f, 0xd9, 0x95, 0xd6, 0x3f, 0xd9, 0x96, 0xd9, 0x3f, 0xda, 0x96, - 0xd9, 0x3f, 0xda, 0x96, 0xd9, 0x3f, 0xda, 0x96, 0xd9, 0x3f, 0xda, 0x96, - 0xd9, 0x3f, 0xdb, 0x96, 0xd9, 0x3f, 0xdb, 0x96, 0xd9, 0x3f, 0xdb, 0x96, - 0xd9, 0x3f, 0xdb, 0x96, 0xd9, 0x3f, 0xdc, 0x97, 0xdb, 0x3f, 0xdc, 0x97, - 0xdb, 0x3f, 0xdc, 0x97, 0xdb, 0x3f, 0xdd, 0x97, 0xdb, 0x3f, 0xdd, 0x97, - 0xdb, 0x3f, 0xdd, 0x97, 0xdb, 0x3f, 0xdd, 0x97, 0xdb, 0x3f, 0xde, 0x97, - 0xdb, 0x3f, 0xde, 0x97, 0xdb, 0x3f, 0xde, 0x98, 0xde, 0x3f, 0xde, 0x98, - 0xde, 0x3f, 0xdf, 0x98, 0xde, 0x3f, 0xdf, 0x98, 0xde, 0x3f, 0xdf, 0x98, - 0xde, 0x3f, 0xdf, 0x98, 0xde, 0x3f, 0xe0, 0x98, 0xde, 0x3f, 0xe0, 0x98, - 0xde, 0x3f, 0xe0, 0x98, 0xde, 0x3f, 0xe1, 0x98, 0xde, 0x3f, 0xe1, 0x98, - 0xde, 0x3f, 0xe1, 0x98, 0xde, 0x3f, 0xe1, 0x98, 0xe0, 0x3f, 0xe2, 0x98, - 0xe0, 0x3f, 0xe2, 0x98, 0xe0, 0x3f, 0xe2, 0x98, 0xe0, 0x3f, 0xe2, 0x98, - 0xe0, 0x3f, 0xe3, 0x98, 0xe0, 0x3f, 0xe3, 0x98, 0xe0, 0x3f, 0xe3, 0x98, - 0xe0, 0x3f, 0xe3, 0x98, 0xe0, 0x3f, 0xe4, 0x99, 0xe3, 0x3f, 0xe4, 0x99, - 0xe2, 0x3f, 0xe4, 0x99, 0xe3, 0x3f, 0xe4, 0x99, 0xe2, 0x3f, 0xe5, 0x99, - 0xe3, 0x3f, 0xe5, 0x99, 0xe2, 0x3f, 0xe5, 0x99, 0xe3, 0x3f, 0xe5, 0x99, - 0xe2, 0x3f, 0xe6, 0x99, 0xe3, 0x3f, 0xe6, 0x9a, 0xe5, 0x3f, 0xe6, 0x9a, - 0xe5, 0x3f, 0xe6, 0x9a, 0xe5, 0x3f, 0xe7, 0x9a, 0xe5, 0x3f, 0xe7, 0x9a, - 0xe5, 0x3f, 0xe7, 0x9a, 0xe5, 0x3f, 0xe7, 0x9a, 0xe5, 0x3f, 0xe8, 0x9a, - 0xe5, 0x3f, 0xe8, 0x9a, 0xe5, 0x3f, 0xe8, 0x9a, 0xe5, 0x3f, 0xe8, 0x9b, - 0xe7, 0x3f, 0xe9, 0x9a, 0xe5, 0x3f, 0xe9, 0x9b, 0xe7, 0x3f, 0xe9, 0x9b, - 0xe7, 0x3f, 0xe9, 0x9b, 0xe7, 0x3f, 0xea, 0x9b, 0xe7, 0x3f, 0xea, 0x9b, - 0xe7, 0x3f, 0xea, 0x9b, 0xe7, 0x3f, 0xea, 0x9b, 0xe7, 0x3f, 0xeb, 0x9c, - 0xea, 0x3f, 0xeb, 0x9c, 0xea, 0x3f, 0xeb, 0x9c, 0xea, 0x3f, 0xeb, 0x9c, - 0xea, 0x3f, 0xec, 0x9c, 0xea, 0x3f, 0xec, 0x9c, 0xea, 0x3f, 0xec, 0x9c, - 0xea, 0x3f, 0xec, 0x9c, 0xea, 0x3f, 0xec, 0x9c, 0xea, 0x3f, 0xed, 0x9c, - 0xea, 0x3f, 0xed, 0x9d, 0xec, 0x3f, 0xed, 0x9c, 0xea, 0x3f, 0xed, 0x9d, - 0xec, 0x3f, 0xee, 0x9d, 0xec, 0x3f, 0xee, 0x9d, 0xec, 0x3f, 0xee, 0x9d, - 0xec, 0x3f, 0xee, 0x9d, 0xec, 0x3f, 0xef, 0x9d, 0xec, 0x3f, 0xef, 0x9d, - 0xec, 0x3f, 0xef, 0x9d, 0xec, 0x3f, 0xef, 0x9d, 0xec, 0x3f, 0xf0, 0x9d, - 0xee, 0x3f, 0xf0, 0x9d, 0xee, 0x3f, 0xf0, 0x9d, 0xee, 0x3f, 0xf0, 0x9d, - 0xee, 0x3f, 0xf1, 0x9d, 0xee, 0x3f, 0xf1, 0x9d, 0xee, 0x3f, 0xf1, 0x9d, - 0xee, 0x3f, 0xf1, 0x9d, 0xee, 0x3f, 0xf2, 0x9d, 0xee, 0x3f, 0xf2, 0x9e, - 0xf0, 0x3f, 0xf2, 0x9e, 0xf1, 0x3f, 0xf2, 0x9e, 0xf0, 0x3f, 0xf2, 0x9e, - 0xf1, 0x3f, 0xf3, 0x9e, 0xf0, 0x3f, 0xf3, 0x9e, 0xf1, 0x3f, 0xf3, 0x9e, - 0xf0, 0x3f, 0xf3, 0x9e, 0xf1, 0x3f, 0xf4, 0x9e, 0xf0, 0x3f, 0xf4, 0x9e, - 0xf1, 0x3f, 0xf4, 0x9f, 0xf3, 0x3f, 0xf4, 0x9e, 0xf1, 0x3f, 0xf5, 0x9f, - 0xf3, 0x3f, 0xf5, 0x9f, 0xf2, 0x3f, 0xf5, 0x9f, 0xf3, 0x3f, 0xf5, 0x9f, - 0xf2, 0x3f, 0xf5, 0x9f, 0xf3, 0x3f, 0xf6, 0x9f, 0xf2, 0x3f, 0xf6, 0x9f, - 0xf3, 0x3f, 0xf6, 0xa0, 0xf5, 0x3f, 0xf6, 0x9f, 0xf3, 0x3f, 0xf7, 0xa0, - 0xf5, 0x3f, 0xf7, 0xa0, 0xf5, 0x3f, 0xf7, 0xa0, 0xf5, 0x3f, 0xf7, 0xa0, - 0xf5, 0x3f, 0xf8, 0xa0, 0xf5, 0x3f, 0xf8, 0xa0, 0xf5, 0x3f, 0xf8, 0xa0, - 0xf5, 0x3f, 0xf8, 0xa0, 0xf5, 0x3f, 0xf8, 0xa0, 0xf5, 0x3f, 0xf9, 0xa1, - 0xf7, 0x3f, 0xf9, 0xa1, 0xf7, 0x3f, 0xf9, 0xa1, 0xf7, 0x3f, 0xf9, 0xa1, - 0xf7, 0x3f, 0xfa, 0xa1, 0xf7, 0x3f, 0xfa, 0xa1, 0xf7, 0x3f, 0xfa, 0xa1, - 0xf7, 0x3f, 0xfa, 0xa1, 0xf7, 0x3f, 0xfa, 0xa1, 0xf7, 0x3f, 0xfb, 0xa1, - 0xf7, 0x3f, 0xfb, 0xa1, 0xf9, 0x3f, 0xfb, 0xa1, 0xf7, 0x3f, 0xfb, 0xa1, - 0xf9, 0x3f, 0xfc, 0xa1, 0xf9, 0x3f, 0xfc, 0xa1, 0xf9, 0x3f, 0xfc, 0xa1, - 0xf9, 0x3f, 0xfc, 0xa1, 0xf9, 0x3f, 0xfc, 0xa1, 0xf9, 0x3f, 0xfd, 0xa1, - 0xf9, 0x3f, 0xfd, 0xa2, 0xfb, 0x3f, 0xfd, 0xa1, 0xf9, 0x3f, 0xfd, 0xa2, - 0xfb, 0x3f, 0xfe, 0xa2, 0xfb, 0x3f, 0xfe, 0xa2, 0xfb, 0x3f, 0xfe, 0xa2, - 0xfb, 0x3f, 0xfe, 0xa2, 0xfb, 0x3f, 0xfe, 0xa2, 0xfb, 0x3f, 0xff, 0xa2, - 0xfb, 0x3f, 0xff, 0xa2, 0xfb, 0x3f, 0x03, 0x95, 0x99, 0x3f, 0x0a, 0x93, - 0x99, 0x3f, 0x0f, 0x95, 0x99, 0x3f, 0x14, 0x93, 0x99, 0x3f, 0x17, 0x95, - 0x99, 0x3f, 0x1b, 0x93, 0x99, 0x3f, 0x1e, 0x95, 0x99, 0x3f, 0x20, 0x93, - 0x99, 0x3f, 0x23, 0x95, 0x99, 0x3f, 0x25, 0x93, 0x99, 0x3f, 0x27, 0x95, - 0x99, 0x3f, 0x29, 0x93, 0x99, 0x3f, 0x2b, 0x95, 0x99, 0x3f, 0x2d, 0x93, - 0x99, 0x3f, 0x2f, 0x95, 0x99, 0x3f, 0x31, 0x93, 0x99, 0x3f, 0x32, 0x95, - 0x99, 0x3f, 0x34, 0x93, 0x99, 0x3f, 0x35, 0x95, 0x99, 0x3f, 0x37, 0x93, - 0x99, 0x3f, 0x38, 0x95, 0x99, 0x3f, 0x3a, 0x93, 0x99, 0x3f, 0x3b, 0x95, - 0x99, 0x3f, 0x3c, 0x93, 0x99, 0x3f, 0x3e, 0x95, 0x99, 0x3f, 0x3f, 0x93, - 0x99, 0x3f, 0x40, 0x95, 0x99, 0x3f, 0x42, 0x93, 0x99, 0x3f, 0x43, 0x95, - 0x99, 0x3f, 0x44, 0x93, 0x99, 0x3f, 0x45, 0x95, 0x99, 0x3f, 0x46, 0x93, - 0x99, 0x3f, 0x47, 0x90, 0x9a, 0x3f, 0x48, 0x93, 0x99, 0x3f, 0x49, 0x90, - 0x9a, 0x3f, 0x4a, 0x93, 0x99, 0x3f, 0x4b, 0x90, 0x9a, 0x3f, 0x4c, 0x93, - 0x99, 0x3f, 0x4d, 0x90, 0x9a, 0x3f, 0x4e, 0x93, 0x99, 0x3f, 0x4f, 0x90, - 0x9a, 0x3f, 0x50, 0x93, 0x99, 0x3f, 0x51, 0x90, 0x9a, 0x3f, 0x52, 0x93, - 0x99, 0x3f, 0x53, 0x90, 0x9a, 0x3f, 0x54, 0x93, 0x99, 0x3f, 0x55, 0x90, - 0x9a, 0x3f, 0x56, 0x93, 0x99, 0x3f, 0x57, 0x90, 0x9a, 0x3f, 0x58, 0x93, - 0x99, 0x3f, 0x58, 0x90, 0x9a, 0x3f, 0x59, 0x93, 0x99, 0x3f, 0x5a, 0x90, - 0x9a, 0x3f, 0x5b, 0x93, 0x99, 0x3f, 0x5c, 0x90, 0x9a, 0x3f, 0x5d, 0x93, - 0x99, 0x3f, 0x5d, 0x90, 0x9a, 0x3f, 0x5e, 0x93, 0x99, 0x3f, 0x5f, 0x90, - 0x9a, 0x3f, 0x60, 0x93, 0x99, 0x3f, 0x60, 0x90, 0x9a, 0x3f, 0x61, 0x8c, - 0x9a, 0x3f, 0x62, 0x90, 0x9a, 0x3f, 0x63, 0x8c, 0x9a, 0x3f, 0x63, 0x90, - 0x9a, 0x3f, 0x64, 0x8c, 0x9a, 0x3f, 0x65, 0x90, 0x9a, 0x3f, 0x66, 0x8c, - 0x9a, 0x3f, 0x66, 0x90, 0x9a, 0x3f, 0x67, 0x8c, 0x9a, 0x3f, 0x68, 0x90, - 0x9a, 0x3f, 0x68, 0x8c, 0x9a, 0x3f, 0x69, 0x90, 0x9a, 0x3f, 0x6a, 0x8c, - 0x9a, 0x3f, 0x6a, 0x90, 0x9a, 0x3f, 0x6b, 0x8c, 0x9a, 0x3f, 0x6c, 0x90, - 0x9a, 0x3f, 0x6c, 0x8c, 0x9a, 0x3f, 0x6d, 0x90, 0x9a, 0x3f, 0x6e, 0x8c, - 0x9a, 0x3f, 0x6e, 0x90, 0x9a, 0x3f, 0x6f, 0x8c, 0x9a, 0x3f, 0x70, 0x90, - 0x9a, 0x3f, 0x70, 0x8c, 0x9a, 0x3f, 0x71, 0x90, 0x9a, 0x3f, 0x72, 0x8c, - 0x9a, 0x3f, 0x72, 0x90, 0x9a, 0x3f, 0x73, 0x8c, 0x9a, 0x3f, 0x73, 0x90, - 0x9a, 0x3f, 0x74, 0x8c, 0x9a, 0x3f, 0x75, 0x90, 0x9a, 0x3f, 0x75, 0x8c, - 0x9a, 0x3f, 0x76, 0x90, 0x9a, 0x3f, 0x76, 0x8c, 0x9a, 0x3f, 0x77, 0x90, - 0x9a, 0x3f, 0x78, 0x8c, 0x9a, 0x3f, 0x78, 0x90, 0x9a, 0x3f, 0x79, 0x8c, - 0x9a, 0x3f, 0x79, 0x90, 0x9a, 0x3f, 0x7a, 0x8c, 0x9a, 0x3f, 0x7a, 0x90, - 0x9a, 0x3f, 0x7b, 0x8c, 0x9a, 0x3f, 0x7c, 0x89, 0x9a, 0x3f, 0x7c, 0x8c, - 0x9a, 0x3f, 0x7d, 0x89, 0x9a, 0x3f, 0x7d, 0x8c, 0x9a, 0x3f, 0x7e, 0x89, - 0x9a, 0x3f, 0x7e, 0x8c, 0x9a, 0x3f, 0x7f, 0x89, 0x9a, 0x3f, 0x7f, 0x8c, - 0x9a, 0x3f, 0x80, 0x89, 0x9a, 0x3f, 0x81, 0x8c, 0x9a, 0x3f, 0x81, 0x89, - 0x9a, 0x3f, 0x82, 0x8c, 0x9a, 0x3f, 0x82, 0x89, 0x9a, 0x3f, 0x83, 0x8c, - 0x9a, 0x3f, 0x83, 0x89, 0x9a, 0x3f, 0x84, 0x8c, 0x9a, 0x3f, 0x84, 0x89, - 0x9a, 0x3f, 0x85, 0x8c, 0x9a, 0x3f, 0x85, 0x89, 0x9a, 0x3f, 0x86, 0x8c, - 0x9a, 0x3f, 0x86, 0x89, 0x9a, 0x3f, 0x87, 0x8c, 0x9a, 0x3f, 0x87, 0x89, - 0x9a, 0x3f, 0x88, 0x8c, 0x9a, 0x3f, 0x88, 0x89, 0x9a, 0x3f, 0x89, 0x8c, - 0x9a, 0x3f, 0x89, 0x89, 0x9a, 0x3f, 0x8a, 0x8c, 0x9a, 0x3f, 0x8a, 0x89, - 0x9a, 0x3f, 0x8b, 0x8c, 0x9a, 0x3f, 0x8b, 0x89, 0x9a, 0x3f, 0x8c, 0x8c, - 0x9a, 0x3f, 0x8c, 0x89, 0x9a, 0x3f, 0x8d, 0x8c, 0x9a, 0x3f, 0x8d, 0x89, - 0x9a, 0x3f, 0x8e, 0x8c, 0x9a, 0x3f, 0x8e, 0x89, 0x9a, 0x3f, 0x8e, 0x8c, - 0x9a, 0x3f, 0x8f, 0x89, 0x9a, 0x3f, 0x8f, 0x8c, 0x9a, 0x3f, 0x90, 0x89, - 0x9a, 0x3f, 0x90, 0x8c, 0x9a, 0x3f, 0x91, 0x89, 0x9a, 0x3f, 0x91, 0x8c, - 0x9a, 0x3f, 0x92, 0x89, 0x9a, 0x3f, 0x92, 0x8c, 0x9a, 0x3f, 0x93, 0x89, - 0x9a, 0x3f, 0x93, 0x8c, 0x9a, 0x3f, 0x94, 0x89, 0x9a, 0x3f, 0x94, 0x88, - 0x9b, 0x3f, 0x94, 0x89, 0x9a, 0x3f, 0x95, 0x88, 0x9b, 0x3f, 0x95, 0x89, - 0x9a, 0x3f, 0x96, 0x88, 0x9b, 0x3f, 0x96, 0x89, 0x9a, 0x3f, 0x97, 0x88, - 0x9b, 0x3f, 0x97, 0x89, 0x9a, 0x3f, 0x98, 0x88, 0x9b, 0x3f, 0x98, 0x89, - 0x9a, 0x3f, 0x98, 0x88, 0x9b, 0x3f, 0x99, 0x89, 0x9a, 0x3f, 0x99, 0x88, - 0x9b, 0x3f, 0x9a, 0x89, 0x9a, 0x3f, 0x9a, 0x88, 0x9b, 0x3f, 0x9a, 0x89, - 0x9a, 0x3f, 0x9a, 0x88, 0x9b, 0x3f, 0x9a, 0x88, 0x9b, 0x3f, 0x9a, 0x88, - 0x9c, 0x3f, 0x9a, 0x88, 0x9c, 0x3f, 0x9a, 0x88, 0x9d, 0x3f, 0x9a, 0x88, - 0x9d, 0x3f, 0x9a, 0x88, 0x9d, 0x3f, 0x9a, 0x88, 0x9e, 0x3f, 0x9e, 0x88, - 0x9e, 0x3a, 0x9f, 0x88, 0x9f, 0x3a, 0x9f, 0x88, 0x9f, 0x3a, 0xa1, 0x88, - 0x9f, 0x3b, 0xa1, 0x88, 0xa0, 0x3b, 0xa1, 0x88, 0xa0, 0x3b, 0xa1, 0x88, - 0xa1, 0x3b, 0xa1, 0x88, 0xa1, 0x3b, 0xa1, 0x88, 0xa1, 0x3b, 0xa2, 0x88, - 0xa2, 0x3b, 0xa2, 0x88, 0xa2, 0x3b, 0xa3, 0x88, 0xa3, 0x3b, 0xa5, 0x88, - 0xa3, 0x3c, 0xa5, 0x88, 0xa3, 0x3c, 0xa5, 0x88, 0xa4, 0x3c, 0xa5, 0x88, - 0xa4, 0x3c, 0xa5, 0x88, 0xa5, 0x3c, 0xa5, 0x88, 0xa5, 0x3c, 0xa5, 0x88, - 0xa5, 0x3c, 0xa6, 0x88, 0xa6, 0x3c, 0xa6, 0x88, 0xa6, 0x3c, 0xa8, 0x88, - 0xa6, 0x3d, 0xa8, 0x88, 0xa7, 0x3d, 0xa8, 0x88, 0xa7, 0x3d, 0xa8, 0x88, - 0xa8, 0x3d, 0xa8, 0x88, 0xa8, 0x3d, 0xa8, 0x88, 0xa8, 0x3d, 0xa9, 0x88, - 0xa9, 0x3d, 0xa9, 0x88, 0xa9, 0x3d, 0xaa, 0x88, 0xaa, 0x3d, 0xaa, 0x88, - 0xaa, 0x3d, 0xaa, 0x88, 0xaa, 0x3d, 0xab, 0x88, 0xab, 0x3d, 0xac, 0x88, - 0xab, 0x3e, 0xac, 0x88, 0xab, 0x3e, 0xac, 0x88, 0xac, 0x3e, 0xac, 0x88, - 0xac, 0x3e, 0xac, 0x88, 0xac, 0x3e, 0xad, 0x88, 0xad, 0x3e, 0xad, 0x88, - 0xad, 0x3e, 0xae, 0x88, 0xae, 0x3e, 0xae, 0x88, 0xae, 0x3e, 0xae, 0x88, - 0xae, 0x3e, 0xaf, 0x88, 0xaf, 0x3e, 0xaf, 0x89, 0xaf, 0x3f, 0xaf, 0x89, - 0xaf, 0x3f, 0xb0, 0x89, 0xb0, 0x3f, 0xb0, 0x89, 0xb0, 0x3f, 0xb0, 0x89, - 0xb0, 0x3f, 0xb1, 0x89, 0xb1, 0x3f, 0xb1, 0x89, 0xb1, 0x3f, 0xb2, 0x89, - 0xb2, 0x3f, 0xb2, 0x89, 0xb2, 0x3f, 0xb2, 0x89, 0xb2, 0x3f, 0xb3, 0x89, - 0xb2, 0x3f, 0xb3, 0x89, 0xb2, 0x3f, 0xb3, 0x8a, 0xb3, 0x3f, 0xb4, 0x8a, - 0xb4, 0x3f, 0xb4, 0x8a, 0xb4, 0x3f, 0xb4, 0x8a, 0xb4, 0x3f, 0xb5, 0x8a, - 0xb5, 0x3f, 0xb5, 0x8a, 0xb5, 0x3f, 0xb5, 0x8a, 0xb5, 0x3f, 0xb6, 0x8a, - 0xb5, 0x3f, 0xb6, 0x8a, 0xb5, 0x3f, 0xb6, 0x8a, 0xb5, 0x3f, 0xb7, 0x8a, - 0xb5, 0x3f, 0xb7, 0x8b, 0xb7, 0x3f, 0xb7, 0x8b, 0xb7, 0x3f, 0xb8, 0x8b, - 0xb8, 0x3f, 0xb8, 0x8b, 0xb8, 0x3f, 0xb8, 0x8b, 0xb8, 0x3f, 0xb9, 0x8b, - 0xb8, 0x3f, 0xb9, 0x8b, 0xb8, 0x3f, 0xb9, 0x8b, 0xb8, 0x3f, 0xba, 0x8b, - 0xb8, 0x3f, 0xba, 0x8c, 0xba, 0x3f, 0xba, 0x8c, 0xba, 0x3f, 0xbb, 0x8c, - 0xbb, 0x3f, 0xbb, 0x8c, 0xbb, 0x3f, 0xbb, 0x8c, 0xbb, 0x3f, 0xbc, 0x8c, - 0xbc, 0x3f, 0xbc, 0x8c, 0xbb, 0x3f, 0xbc, 0x8c, 0xbc, 0x3f, 0xbd, 0x8c, - 0xbb, 0x3f, 0xbd, 0x8c, 0xbc, 0x3f, 0xbd, 0x8d, 0xbd, 0x3f, 0xbe, 0x8d, - 0xbe, 0x3f, 0xbe, 0x8d, 0xbe, 0x3f, 0xbe, 0x8d, 0xbe, 0x3f, 0xbf, 0x8d, - 0xbf, 0x3f, 0xbf, 0x8d, 0xbe, 0x3f, 0xbf, 0x8d, 0xbf, 0x3f, 0xc0, 0x8d, - 0xbe, 0x3f, 0xc0, 0x8d, 0xbf, 0x3f, 0xc0, 0x8d, 0xbe, 0x3f, 0xc1, 0x8d, - 0xbf, 0x3f, 0xc1, 0x8e, 0xc1, 0x3f, 0xc1, 0x8e, 0xc1, 0x3f, 0xc1, 0x8e, - 0xc1, 0x3f, 0xc2, 0x8e, 0xc1, 0x3f, 0xc2, 0x8e, 0xc1, 0x3f, 0xc2, 0x8e, - 0xc1, 0x3f, 0xc3, 0x8e, 0xc1, 0x3f, 0xc3, 0x8e, 0xc1, 0x3f, 0xc3, 0x8e, - 0xc1, 0x3f, 0xc4, 0x8f, 0xc4, 0x3f, 0xc4, 0x8f, 0xc4, 0x3f, 0xc4, 0x8f, - 0xc4, 0x3f, 0xc5, 0x8f, 0xc5, 0x3f, 0xc5, 0x8f, 0xc4, 0x3f, 0xc5, 0x8f, - 0xc5, 0x3f, 0xc6, 0x8f, 0xc4, 0x3f, 0xc6, 0x8f, 0xc5, 0x3f, 0xc6, 0x8f, - 0xc4, 0x3f, 0xc6, 0x8f, 0xc5, 0x3f, 0xc7, 0x90, 0xc7, 0x3f, 0xc7, 0x90, - 0xc7, 0x3f, 0xc7, 0x90, 0xc7, 0x3f, 0xc8, 0x90, 0xc7, 0x3f, 0xc8, 0x90, - 0xc7, 0x3f, 0xc8, 0x90, 0xc7, 0x3f, 0xc9, 0x90, 0xc7, 0x3f, 0xc9, 0x90, - 0xc7, 0x3f, 0xc9, 0x90, 0xc7, 0x3f, 0xc9, 0x90, 0xc7, 0x3f, 0xca, 0x90, - 0xc7, 0x3f, 0xca, 0x91, 0xca, 0x3f, 0xca, 0x91, 0xca, 0x3f, 0xcb, 0x91, - 0xca, 0x3f, 0xcb, 0x91, 0xca, 0x3f, 0xcb, 0x91, 0xca, 0x3f, 0xcc, 0x91, - 0xca, 0x3f, 0xcc, 0x91, 0xca, 0x3f, 0xcc, 0x91, 0xca, 0x3f, 0xcc, 0x91, - 0xca, 0x3f, 0xcd, 0x92, 0xcd, 0x3f, 0xcd, 0x92, 0xcd, 0x3f, 0xcd, 0x92, - 0xcd, 0x3f, 0xce, 0x92, 0xcd, 0x3f, 0xce, 0x92, 0xcd, 0x3f, 0xce, 0x92, - 0xcd, 0x3f, 0xce, 0x92, 0xcd, 0x3f, 0xcf, 0x92, 0xcd, 0x3f, 0xcf, 0x92, - 0xcd, 0x3f, 0xcf, 0x92, 0xcd, 0x3f, 0xd0, 0x93, 0xd0, 0x3f, 0xd0, 0x93, - 0xcf, 0x3f, 0xd0, 0x93, 0xd0, 0x3f, 0xd0, 0x93, 0xcf, 0x3f, 0xd1, 0x93, - 0xd0, 0x3f, 0xd1, 0x93, 0xcf, 0x3f, 0xd1, 0x93, 0xd0, 0x3f, 0xd2, 0x93, - 0xcf, 0x3f, 0xd2, 0x93, 0xd0, 0x3f, 0xd2, 0x94, 0xd2, 0x3f, 0xd2, 0x94, - 0xd2, 0x3f, 0xd3, 0x94, 0xd2, 0x3f, 0xd3, 0x94, 0xd2, 0x3f, 0xd3, 0x94, - 0xd2, 0x3f, 0xd4, 0x94, 0xd2, 0x3f, 0xd4, 0x94, 0xd2, 0x3f, 0xd4, 0x94, - 0xd2, 0x3f, 0xd4, 0x94, 0xd2, 0x3f, 0xd5, 0x94, 0xd2, 0x3f, 0xd5, 0x94, - 0xd5, 0x3f, 0xd5, 0x94, 0xd2, 0x3f, 0xd6, 0x94, 0xd5, 0x3f, 0xd6, 0x94, - 0xd5, 0x3f, 0xd6, 0x94, 0xd5, 0x3f, 0xd6, 0x94, 0xd5, 0x3f, 0xd7, 0x94, - 0xd5, 0x3f, 0xd7, 0x94, 0xd5, 0x3f, 0xd7, 0x94, 0xd5, 0x3f, 0xd7, 0x94, - 0xd5, 0x3f, 0xd8, 0x94, 0xd5, 0x3f, 0xd8, 0x95, 0xd7, 0x3f, 0xd8, 0x95, - 0xd7, 0x3f, 0xd9, 0x95, 0xd7, 0x3f, 0xd9, 0x95, 0xd7, 0x3f, 0xd9, 0x95, - 0xd7, 0x3f, 0xd9, 0x95, 0xd7, 0x3f, 0xda, 0x95, 0xd7, 0x3f, 0xda, 0x95, - 0xd7, 0x3f, 0xda, 0x95, 0xd7, 0x3f, 0xda, 0x96, 0xda, 0x3f, 0xdb, 0x96, - 0xda, 0x3f, 0xdb, 0x96, 0xda, 0x3f, 0xdb, 0x96, 0xda, 0x3f, 0xdb, 0x96, - 0xda, 0x3f, 0xdc, 0x96, 0xda, 0x3f, 0xdc, 0x96, 0xda, 0x3f, 0xdc, 0x96, - 0xda, 0x3f, 0xdd, 0x96, 0xda, 0x3f, 0xdd, 0x96, 0xda, 0x3f, 0xdd, 0x97, - 0xdd, 0x3f, 0xdd, 0x97, 0xdc, 0x3f, 0xde, 0x97, 0xdd, 0x3f, 0xde, 0x97, - 0xdc, 0x3f, 0xde, 0x97, 0xdd, 0x3f, 0xde, 0x97, 0xdc, 0x3f, 0xdf, 0x97, - 0xdd, 0x3f, 0xdf, 0x97, 0xdc, 0x3f, 0xdf, 0x97, 0xdd, 0x3f, 0xdf, 0x98, - 0xdf, 0x3f, 0xe0, 0x97, 0xdd, 0x3f, 0xe0, 0x98, 0xdf, 0x3f, 0xe0, 0x98, - 0xdf, 0x3f, 0xe1, 0x98, 0xdf, 0x3f, 0xe1, 0x98, 0xdf, 0x3f, 0xe1, 0x98, - 0xdf, 0x3f, 0xe1, 0x98, 0xdf, 0x3f, 0xe2, 0x98, 0xdf, 0x3f, 0xe2, 0x98, - 0xdf, 0x3f, 0xe2, 0x98, 0xdf, 0x3f, 0xe2, 0x99, 0xe1, 0x3f, 0xe3, 0x99, - 0xe2, 0x3f, 0xe3, 0x99, 0xe1, 0x3f, 0xe3, 0x99, 0xe2, 0x3f, 0xe3, 0x99, - 0xe1, 0x3f, 0xe4, 0x99, 0xe2, 0x3f, 0xe4, 0x99, 0xe1, 0x3f, 0xe4, 0x99, - 0xe2, 0x3f, 0xe4, 0x99, 0xe1, 0x3f, 0xe5, 0x99, 0xe2, 0x3f, 0xe5, 0x9a, - 0xe4, 0x3f, 0xe5, 0x9a, 0xe4, 0x3f, 0xe5, 0x9a, 0xe4, 0x3f, 0xe6, 0x9a, - 0xe4, 0x3f, 0xe6, 0x9a, 0xe4, 0x3f, 0xe6, 0x9a, 0xe4, 0x3f, 0xe6, 0x9a, - 0xe4, 0x3f, 0xe7, 0x9a, 0xe4, 0x3f, 0xe7, 0x9a, 0xe4, 0x3f, 0xe7, 0x9a, - 0xe6, 0x3f, 0xe7, 0x9a, 0xe6, 0x3f, 0xe8, 0x9a, 0xe6, 0x3f, 0xe8, 0x9a, - 0xe6, 0x3f, 0xe8, 0x9a, 0xe6, 0x3f, 0xe8, 0x9a, 0xe6, 0x3f, 0xe9, 0x9a, - 0xe6, 0x3f, 0xe9, 0x9a, 0xe6, 0x3f, 0xe9, 0x9a, 0xe6, 0x3f, 0xe9, 0x9b, - 0xe8, 0x3f, 0xea, 0x9b, 0xe9, 0x3f, 0xea, 0x9b, 0xe8, 0x3f, 0xea, 0x9b, - 0xe9, 0x3f, 0xea, 0x9b, 0xe8, 0x3f, 0xeb, 0x9b, 0xe9, 0x3f, 0xeb, 0x9b, - 0xe8, 0x3f, 0xeb, 0x9b, 0xe9, 0x3f, 0xeb, 0x9b, 0xe8, 0x3f, 0xec, 0x9b, - 0xe9, 0x3f, 0xec, 0x9c, 0xeb, 0x3f, 0xec, 0x9b, 0xe9, 0x3f, 0xec, 0x9c, - 0xeb, 0x3f, 0xec, 0x9c, 0xeb, 0x3f, 0xed, 0x9c, 0xeb, 0x3f, 0xed, 0x9c, - 0xeb, 0x3f, 0xed, 0x9c, 0xeb, 0x3f, 0xed, 0x9c, 0xeb, 0x3f, 0xee, 0x9c, - 0xeb, 0x3f, 0xee, 0x9d, 0xed, 0x3f, 0xee, 0x9d, 0xed, 0x3f, 0xee, 0x9d, - 0xed, 0x3f, 0xef, 0x9d, 0xed, 0x3f, 0xef, 0x9d, 0xed, 0x3f, 0xef, 0x9d, - 0xed, 0x3f, 0xef, 0x9d, 0xed, 0x3f, 0xf0, 0x9d, 0xed, 0x3f, 0xf0, 0x9d, - 0xed, 0x3f, 0xf0, 0x9d, 0xed, 0x3f, 0xf0, 0x9d, 0xed, 0x3f, 0xf1, 0x9d, - 0xed, 0x3f, 0xf1, 0x9e, 0xef, 0x3f, 0xf1, 0x9e, 0xef, 0x3f, 0xf1, 0x9e, - 0xef, 0x3f, 0xf2, 0x9e, 0xef, 0x3f, 0xf2, 0x9e, 0xef, 0x3f, 0xf2, 0x9e, - 0xef, 0x3f, 0xf2, 0x9e, 0xef, 0x3f, 0xf2, 0x9e, 0xef, 0x3f, 0xf3, 0x9e, - 0xef, 0x3f, 0xf3, 0x9f, 0xf2, 0x3f, 0xf3, 0x9e, 0xef, 0x3f, 0xf3, 0x9f, - 0xf2, 0x3f, 0xf4, 0x9f, 0xf1, 0x3f, 0xf4, 0x9f, 0xf2, 0x3f, 0xf4, 0x9f, - 0xf1, 0x3f, 0xf4, 0x9f, 0xf2, 0x3f, 0xf5, 0x9f, 0xf1, 0x3f, 0xf5, 0x9f, - 0xf2, 0x3f, 0xf5, 0x9f, 0xf4, 0x3f, 0xf5, 0x9f, 0xf4, 0x3f, 0xf5, 0x9f, - 0xf4, 0x3f, 0xf6, 0x9f, 0xf4, 0x3f, 0xf6, 0x9f, 0xf4, 0x3f, 0xf6, 0x9f, - 0xf4, 0x3f, 0xf6, 0x9f, 0xf4, 0x3f, 0xf7, 0x9f, 0xf4, 0x3f, 0xf7, 0x9f, - 0xf4, 0x3f, 0xf7, 0x9f, 0xf4, 0x3f, 0xf7, 0xa0, 0xf6, 0x3f, 0xf8, 0x9f, - 0xf4, 0x3f, 0xf8, 0xa0, 0xf6, 0x3f, 0xf8, 0xa0, 0xf6, 0x3f, 0xf8, 0xa0, - 0xf6, 0x3f, 0xf8, 0xa0, 0xf6, 0x3f, 0xf9, 0xa0, 0xf6, 0x3f, 0xf9, 0xa0, - 0xf6, 0x3f, 0xf9, 0xa0, 0xf6, 0x3f, 0xf9, 0xa0, 0xf6, 0x3f, 0xfa, 0xa0, - 0xf6, 0x3f, 0xfa, 0xa1, 0xf8, 0x3f, 0xfa, 0xa1, 0xf8, 0x3f, 0xfa, 0xa1, - 0xf8, 0x3f, 0xfa, 0xa1, 0xf8, 0x3f, 0xfb, 0xa1, 0xf8, 0x3f, 0xfb, 0xa1, - 0xf8, 0x3f, 0xfb, 0xa1, 0xf8, 0x3f, 0xfb, 0xa1, 0xf8, 0x3f, 0xfc, 0xa1, - 0xf8, 0x3f, 0xfc, 0xa2, 0xfa, 0x3f, 0xfc, 0xa2, 0xfa, 0x3f, 0xfc, 0xa2, - 0xfa, 0x3f, 0xfc, 0xa2, 0xfa, 0x3f, 0xfd, 0xa2, 0xfa, 0x3f, 0xfd, 0xa2, - 0xfa, 0x3f, 0xfd, 0xa2, 0xfa, 0x3f, 0xfd, 0xa2, 0xfa, 0x3f, 0xfe, 0xa2, - 0xfa, 0x3f, 0xfe, 0xa2, 0xfa, 0x3f, 0xfe, 0xa2, 0xfa, 0x3f, 0xfe, 0xa2, - 0xfa, 0x3f, 0xfe, 0xa2, 0xfa, 0x3f, 0xff, 0xa2, 0xfa, 0x3f, 0xff, 0xa2, - 0xfa, 0x3f, 0x03, 0x96, 0x99, 0x40, 0x0a, 0x92, 0x99, 0x40, 0x0f, 0x96, - 0x99, 0x40, 0x14, 0x92, 0x99, 0x40, 0x17, 0x96, 0x99, 0x40, 0x1b, 0x92, - 0x99, 0x40, 0x1e, 0x96, 0x99, 0x40, 0x20, 0x92, 0x99, 0x40, 0x23, 0x96, - 0x99, 0x40, 0x25, 0x92, 0x99, 0x40, 0x27, 0x96, 0x99, 0x40, 0x29, 0x92, - 0x99, 0x40, 0x2b, 0x96, 0x99, 0x40, 0x2d, 0x92, 0x99, 0x40, 0x2f, 0x96, - 0x99, 0x40, 0x31, 0x92, 0x99, 0x40, 0x32, 0x8f, 0x9a, 0x40, 0x34, 0x92, - 0x99, 0x40, 0x35, 0x8f, 0x9a, 0x40, 0x37, 0x92, 0x99, 0x40, 0x38, 0x8f, - 0x9a, 0x40, 0x3a, 0x92, 0x99, 0x40, 0x3b, 0x8f, 0x9a, 0x40, 0x3c, 0x92, - 0x99, 0x40, 0x3e, 0x8f, 0x9a, 0x40, 0x3f, 0x92, 0x99, 0x40, 0x40, 0x8f, - 0x9a, 0x40, 0x42, 0x92, 0x99, 0x40, 0x43, 0x8f, 0x9a, 0x40, 0x44, 0x92, - 0x99, 0x40, 0x45, 0x8f, 0x9a, 0x40, 0x46, 0x92, 0x99, 0x40, 0x47, 0x8f, - 0x9a, 0x40, 0x48, 0x92, 0x99, 0x40, 0x49, 0x8f, 0x9a, 0x40, 0x4a, 0x92, - 0x99, 0x40, 0x4b, 0x8f, 0x9a, 0x40, 0x4c, 0x92, 0x99, 0x40, 0x4d, 0x8f, - 0x9a, 0x40, 0x4e, 0x92, 0x99, 0x40, 0x4f, 0x8f, 0x9a, 0x40, 0x50, 0x92, - 0x99, 0x40, 0x51, 0x8f, 0x9a, 0x40, 0x52, 0x92, 0x99, 0x40, 0x53, 0x8f, - 0x9a, 0x40, 0x54, 0x92, 0x99, 0x40, 0x55, 0x8f, 0x9a, 0x40, 0x56, 0x92, - 0x99, 0x40, 0x57, 0x8f, 0x9a, 0x40, 0x58, 0x92, 0x99, 0x40, 0x58, 0x8f, - 0x9a, 0x40, 0x59, 0x92, 0x99, 0x40, 0x5a, 0x8f, 0x9a, 0x40, 0x5b, 0x92, - 0x99, 0x40, 0x5c, 0x8f, 0x9a, 0x40, 0x5d, 0x92, 0x99, 0x40, 0x5d, 0x8f, - 0x9a, 0x40, 0x5e, 0x92, 0x99, 0x40, 0x5f, 0x8f, 0x9a, 0x40, 0x60, 0x92, - 0x99, 0x40, 0x60, 0x8f, 0x9a, 0x40, 0x61, 0x92, 0x99, 0x40, 0x62, 0x8f, - 0x9a, 0x40, 0x63, 0x92, 0x99, 0x40, 0x63, 0x8f, 0x9a, 0x40, 0x64, 0x92, - 0x99, 0x40, 0x65, 0x8f, 0x9a, 0x40, 0x66, 0x92, 0x99, 0x40, 0x66, 0x8f, - 0x9a, 0x40, 0x67, 0x92, 0x99, 0x40, 0x68, 0x8f, 0x9a, 0x40, 0x68, 0x92, - 0x99, 0x40, 0x69, 0x8f, 0x9a, 0x40, 0x6a, 0x92, 0x99, 0x40, 0x6a, 0x8f, - 0x9a, 0x40, 0x6b, 0x92, 0x99, 0x40, 0x6c, 0x8f, 0x9a, 0x40, 0x6c, 0x92, - 0x99, 0x40, 0x6d, 0x8f, 0x9a, 0x40, 0x6e, 0x92, 0x99, 0x40, 0x6e, 0x8f, - 0x9a, 0x40, 0x6f, 0x8d, 0x9a, 0x40, 0x70, 0x8f, 0x9a, 0x40, 0x70, 0x8d, - 0x9a, 0x40, 0x71, 0x8f, 0x9a, 0x40, 0x72, 0x8d, 0x9a, 0x40, 0x72, 0x8f, - 0x9a, 0x40, 0x73, 0x8d, 0x9a, 0x40, 0x73, 0x8f, 0x9a, 0x40, 0x74, 0x8d, - 0x9a, 0x40, 0x75, 0x8f, 0x9a, 0x40, 0x75, 0x8d, 0x9a, 0x40, 0x76, 0x8f, - 0x9a, 0x40, 0x76, 0x8d, 0x9a, 0x40, 0x77, 0x8f, 0x9a, 0x40, 0x78, 0x8d, - 0x9a, 0x40, 0x78, 0x8f, 0x9a, 0x40, 0x79, 0x8d, 0x9a, 0x40, 0x79, 0x8f, - 0x9a, 0x40, 0x7a, 0x8d, 0x9a, 0x40, 0x7a, 0x8f, 0x9a, 0x40, 0x7b, 0x8d, - 0x9a, 0x40, 0x7c, 0x8f, 0x9a, 0x40, 0x7c, 0x8d, 0x9a, 0x40, 0x7d, 0x8f, - 0x9a, 0x40, 0x7d, 0x8d, 0x9a, 0x40, 0x7e, 0x8f, 0x9a, 0x40, 0x7e, 0x8d, - 0x9a, 0x40, 0x7f, 0x8f, 0x9a, 0x40, 0x7f, 0x8d, 0x9a, 0x40, 0x80, 0x8f, - 0x9a, 0x40, 0x81, 0x8d, 0x9a, 0x40, 0x81, 0x8f, 0x9a, 0x40, 0x82, 0x8d, - 0x9a, 0x40, 0x82, 0x8f, 0x9a, 0x40, 0x83, 0x8d, 0x9a, 0x40, 0x83, 0x8f, - 0x9a, 0x40, 0x84, 0x8d, 0x9a, 0x40, 0x84, 0x8a, 0x9a, 0x40, 0x85, 0x8d, - 0x9a, 0x40, 0x85, 0x8a, 0x9a, 0x40, 0x86, 0x8d, 0x9a, 0x40, 0x86, 0x8a, - 0x9a, 0x40, 0x87, 0x8d, 0x9a, 0x40, 0x87, 0x8a, 0x9a, 0x40, 0x88, 0x8d, - 0x9a, 0x40, 0x88, 0x8a, 0x9a, 0x40, 0x89, 0x8d, 0x9a, 0x40, 0x89, 0x8a, - 0x9a, 0x40, 0x8a, 0x8d, 0x9a, 0x40, 0x8a, 0x8a, 0x9a, 0x40, 0x8b, 0x8d, - 0x9a, 0x40, 0x8b, 0x8a, 0x9a, 0x40, 0x8c, 0x8d, 0x9a, 0x40, 0x8c, 0x8a, - 0x9a, 0x40, 0x8d, 0x8d, 0x9a, 0x40, 0x8d, 0x8a, 0x9a, 0x40, 0x8e, 0x8d, - 0x9a, 0x40, 0x8e, 0x8a, 0x9a, 0x40, 0x8e, 0x8d, 0x9a, 0x40, 0x8f, 0x8a, - 0x9a, 0x40, 0x8f, 0x8d, 0x9a, 0x40, 0x90, 0x8a, 0x9a, 0x40, 0x90, 0x8d, - 0x9a, 0x40, 0x91, 0x8a, 0x9a, 0x40, 0x91, 0x8d, 0x9a, 0x40, 0x92, 0x8a, - 0x9a, 0x40, 0x92, 0x8d, 0x9a, 0x40, 0x93, 0x8a, 0x9a, 0x40, 0x93, 0x8d, - 0x9a, 0x40, 0x94, 0x8a, 0x9a, 0x40, 0x94, 0x89, 0x9b, 0x40, 0x94, 0x8a, - 0x9a, 0x40, 0x95, 0x89, 0x9b, 0x40, 0x95, 0x8a, 0x9a, 0x40, 0x96, 0x89, - 0x9b, 0x40, 0x96, 0x8a, 0x9a, 0x40, 0x97, 0x89, 0x9b, 0x40, 0x97, 0x8a, - 0x9a, 0x40, 0x98, 0x89, 0x9b, 0x40, 0x98, 0x8a, 0x9a, 0x40, 0x98, 0x89, - 0x9b, 0x40, 0x99, 0x8a, 0x9a, 0x40, 0x99, 0x89, 0x9b, 0x40, 0x9a, 0x8a, - 0x9a, 0x40, 0x9a, 0x89, 0x9b, 0x40, 0x9a, 0x8a, 0x9a, 0x40, 0x9a, 0x89, - 0x9b, 0x40, 0x9a, 0x89, 0x9b, 0x40, 0x9a, 0x89, 0x9c, 0x40, 0x9a, 0x89, - 0x9c, 0x40, 0x9a, 0x89, 0x9d, 0x40, 0x9a, 0x89, 0x9d, 0x40, 0x9a, 0x89, - 0x9d, 0x40, 0x9a, 0x89, 0x9e, 0x40, 0x9a, 0x89, 0x9e, 0x40, 0x9a, 0x89, - 0x9f, 0x40, 0x9f, 0x89, 0x9f, 0x3b, 0x9f, 0x89, 0x9f, 0x3b, 0xa0, 0x89, - 0xa0, 0x3b, 0xa0, 0x89, 0xa0, 0x3b, 0xa1, 0x89, 0xa1, 0x3b, 0xa3, 0x89, - 0xa1, 0x3c, 0xa3, 0x89, 0xa1, 0x3c, 0xa3, 0x89, 0xa2, 0x3c, 0xa3, 0x89, - 0xa2, 0x3c, 0xa3, 0x89, 0xa3, 0x3c, 0xa3, 0x89, 0xa3, 0x3c, 0xa3, 0x89, - 0xa3, 0x3c, 0xa4, 0x89, 0xa4, 0x3c, 0xa4, 0x89, 0xa4, 0x3c, 0xa5, 0x89, - 0xa5, 0x3c, 0xa6, 0x89, 0xa5, 0x3d, 0xa7, 0x89, 0xa5, 0x3d, 0xa6, 0x89, - 0xa6, 0x3d, 0xa7, 0x89, 0xa6, 0x3d, 0xa6, 0x89, 0xa6, 0x3d, 0xa7, 0x89, - 0xa7, 0x3d, 0xa7, 0x89, 0xa7, 0x3d, 0xa8, 0x89, 0xa8, 0x3d, 0xa8, 0x89, - 0xa8, 0x3d, 0xaa, 0x89, 0xa8, 0x3e, 0xaa, 0x89, 0xa9, 0x3e, 0xaa, 0x89, - 0xa9, 0x3e, 0xaa, 0x89, 0xaa, 0x3e, 0xaa, 0x89, 0xaa, 0x3e, 0xaa, 0x89, - 0xaa, 0x3e, 0xab, 0x89, 0xab, 0x3e, 0xab, 0x89, 0xab, 0x3e, 0xab, 0x89, - 0xab, 0x3e, 0xac, 0x89, 0xac, 0x3e, 0xac, 0x89, 0xac, 0x3e, 0xac, 0x89, - 0xac, 0x3e, 0xae, 0x89, 0xad, 0x3f, 0xae, 0x89, 0xad, 0x3f, 0xae, 0x89, - 0xae, 0x3f, 0xae, 0x89, 0xae, 0x3f, 0xae, 0x89, 0xae, 0x3f, 0xaf, 0x89, - 0xaf, 0x3f, 0xaf, 0x89, 0xaf, 0x3f, 0xaf, 0x89, 0xaf, 0x3f, 0xb0, 0x89, - 0xb0, 0x3f, 0xb0, 0x89, 0xb0, 0x3f, 0xb0, 0x89, 0xb0, 0x3f, 0xb1, 0x8a, - 0xb1, 0x40, 0xb1, 0x8a, 0xb1, 0x40, 0xb2, 0x8a, 0xb2, 0x40, 0xb2, 0x8a, - 0xb2, 0x40, 0xb2, 0x8a, 0xb2, 0x40, 0xb3, 0x8a, 0xb3, 0x40, 0xb3, 0x8a, - 0xb3, 0x40, 0xb3, 0x8a, 0xb3, 0x40, 0xb4, 0x8a, 0xb4, 0x40, 0xb4, 0x8a, - 0xb3, 0x40, 0xb4, 0x8a, 0xb4, 0x40, 0xb5, 0x8b, 0xb5, 0x40, 0xb5, 0x8b, - 0xb5, 0x40, 0xb5, 0x8b, 0xb5, 0x40, 0xb6, 0x8b, 0xb6, 0x40, 0xb6, 0x8b, - 0xb6, 0x40, 0xb6, 0x8b, 0xb6, 0x40, 0xb7, 0x8b, 0xb7, 0x40, 0xb7, 0x8b, - 0xb7, 0x40, 0xb7, 0x8b, 0xb7, 0x40, 0xb8, 0x8b, 0xb7, 0x40, 0xb8, 0x8b, - 0xb7, 0x40, 0xb8, 0x8b, 0xb7, 0x40, 0xb9, 0x8c, 0xb9, 0x40, 0xb9, 0x8c, - 0xb9, 0x40, 0xb9, 0x8c, 0xb9, 0x40, 0xba, 0x8c, 0xba, 0x40, 0xba, 0x8c, - 0xba, 0x40, 0xba, 0x8c, 0xba, 0x40, 0xbb, 0x8c, 0xba, 0x40, 0xbb, 0x8c, - 0xba, 0x40, 0xbb, 0x8c, 0xba, 0x40, 0xbc, 0x8d, 0xbc, 0x40, 0xbc, 0x8d, - 0xbc, 0x40, 0xbc, 0x8d, 0xbc, 0x40, 0xbd, 0x8d, 0xbd, 0x40, 0xbd, 0x8d, - 0xbd, 0x40, 0xbd, 0x8d, 0xbd, 0x40, 0xbe, 0x8d, 0xbd, 0x40, 0xbe, 0x8d, - 0xbd, 0x40, 0xbe, 0x8d, 0xbd, 0x40, 0xbf, 0x8e, 0xbf, 0x40, 0xbf, 0x8e, - 0xbf, 0x40, 0xbf, 0x8e, 0xbf, 0x40, 0xc0, 0x8e, 0xc0, 0x40, 0xc0, 0x8e, - 0xc0, 0x40, 0xc0, 0x8e, 0xc0, 0x40, 0xc1, 0x8e, 0xc0, 0x40, 0xc1, 0x8e, - 0xc0, 0x40, 0xc1, 0x8e, 0xc0, 0x40, 0xc1, 0x8e, 0xc0, 0x40, 0xc2, 0x8e, - 0xc0, 0x40, 0xc2, 0x8e, 0xc0, 0x40, 0xc2, 0x8e, 0xc2, 0x40, 0xc3, 0x8e, - 0xc3, 0x40, 0xc3, 0x8e, 0xc3, 0x40, 0xc3, 0x8e, 0xc3, 0x40, 0xc4, 0x8e, - 0xc3, 0x40, 0xc4, 0x8e, 0xc3, 0x40, 0xc4, 0x8e, 0xc3, 0x40, 0xc5, 0x8e, - 0xc3, 0x40, 0xc5, 0x8e, 0xc3, 0x40, 0xc5, 0x8f, 0xc5, 0x40, 0xc6, 0x8f, - 0xc6, 0x40, 0xc6, 0x8f, 0xc6, 0x40, 0xc6, 0x8f, 0xc6, 0x40, 0xc6, 0x8f, - 0xc6, 0x40, 0xc7, 0x8f, 0xc6, 0x40, 0xc7, 0x8f, 0xc6, 0x40, 0xc7, 0x8f, - 0xc6, 0x40, 0xc8, 0x8f, 0xc6, 0x40, 0xc8, 0x90, 0xc8, 0x40, 0xc8, 0x90, - 0xc8, 0x40, 0xc9, 0x90, 0xc9, 0x40, 0xc9, 0x90, 0xc9, 0x40, 0xc9, 0x90, - 0xc9, 0x40, 0xc9, 0x90, 0xc9, 0x40, 0xca, 0x90, 0xc9, 0x40, 0xca, 0x90, - 0xc9, 0x40, 0xca, 0x90, 0xc9, 0x40, 0xcb, 0x90, 0xc9, 0x40, 0xcb, 0x90, - 0xc9, 0x40, 0xcb, 0x90, 0xc9, 0x40, 0xcc, 0x91, 0xcc, 0x40, 0xcc, 0x91, - 0xcb, 0x40, 0xcc, 0x91, 0xcc, 0x40, 0xcc, 0x91, 0xcb, 0x40, 0xcd, 0x91, - 0xcc, 0x40, 0xcd, 0x91, 0xcb, 0x40, 0xcd, 0x91, 0xcc, 0x40, 0xce, 0x91, - 0xcb, 0x40, 0xce, 0x91, 0xcc, 0x40, 0xce, 0x92, 0xce, 0x40, 0xce, 0x92, - 0xce, 0x40, 0xcf, 0x92, 0xce, 0x40, 0xcf, 0x92, 0xce, 0x40, 0xcf, 0x92, - 0xce, 0x40, 0xd0, 0x92, 0xce, 0x40, 0xd0, 0x92, 0xce, 0x40, 0xd0, 0x92, - 0xce, 0x40, 0xd0, 0x92, 0xce, 0x40, 0xd1, 0x92, 0xce, 0x40, 0xd1, 0x93, - 0xd1, 0x40, 0xd1, 0x93, 0xd1, 0x40, 0xd2, 0x93, 0xd1, 0x40, 0xd2, 0x93, - 0xd1, 0x40, 0xd2, 0x93, 0xd1, 0x40, 0xd2, 0x93, 0xd1, 0x40, 0xd3, 0x93, - 0xd1, 0x40, 0xd3, 0x93, 0xd1, 0x40, 0xd3, 0x93, 0xd1, 0x40, 0xd4, 0x94, - 0xd4, 0x40, 0xd4, 0x94, 0xd3, 0x40, 0xd4, 0x94, 0xd4, 0x40, 0xd4, 0x94, - 0xd3, 0x40, 0xd5, 0x94, 0xd4, 0x40, 0xd5, 0x94, 0xd3, 0x40, 0xd5, 0x94, - 0xd4, 0x40, 0xd6, 0x94, 0xd3, 0x40, 0xd6, 0x94, 0xd4, 0x40, 0xd6, 0x95, - 0xd6, 0x40, 0xd6, 0x95, 0xd6, 0x40, 0xd7, 0x95, 0xd6, 0x40, 0xd7, 0x95, - 0xd6, 0x40, 0xd7, 0x95, 0xd6, 0x40, 0xd7, 0x95, 0xd6, 0x40, 0xd8, 0x95, - 0xd6, 0x40, 0xd8, 0x95, 0xd6, 0x40, 0xd8, 0x95, 0xd6, 0x40, 0xd9, 0x95, - 0xd6, 0x40, 0xd9, 0x95, 0xd6, 0x40, 0xd9, 0x95, 0xd6, 0x40, 0xd9, 0x96, - 0xd9, 0x40, 0xda, 0x96, 0xd9, 0x40, 0xda, 0x96, 0xd9, 0x40, 0xda, 0x96, - 0xd9, 0x40, 0xda, 0x96, 0xd9, 0x40, 0xdb, 0x96, 0xd9, 0x40, 0xdb, 0x96, - 0xd9, 0x40, 0xdb, 0x96, 0xd9, 0x40, 0xdb, 0x96, 0xd9, 0x40, 0xdc, 0x97, - 0xdb, 0x40, 0xdc, 0x97, 0xdb, 0x40, 0xdc, 0x97, 0xdb, 0x40, 0xdd, 0x97, - 0xdb, 0x40, 0xdd, 0x97, 0xdb, 0x40, 0xdd, 0x97, 0xdb, 0x40, 0xdd, 0x97, - 0xdb, 0x40, 0xde, 0x97, 0xdb, 0x40, 0xde, 0x97, 0xdb, 0x40, 0xde, 0x98, - 0xde, 0x40, 0xde, 0x98, 0xde, 0x40, 0xdf, 0x98, 0xde, 0x40, 0xdf, 0x98, - 0xde, 0x40, 0xdf, 0x98, 0xde, 0x40, 0xdf, 0x98, 0xde, 0x40, 0xe0, 0x98, - 0xde, 0x40, 0xe0, 0x98, 0xde, 0x40, 0xe0, 0x98, 0xde, 0x40, 0xe1, 0x98, - 0xde, 0x40, 0xe1, 0x98, 0xe0, 0x40, 0xe1, 0x98, 0xde, 0x40, 0xe1, 0x98, - 0xe0, 0x40, 0xe2, 0x98, 0xe0, 0x40, 0xe2, 0x98, 0xe0, 0x40, 0xe2, 0x98, - 0xe0, 0x40, 0xe2, 0x98, 0xe0, 0x40, 0xe3, 0x98, 0xe0, 0x40, 0xe3, 0x98, - 0xe0, 0x40, 0xe3, 0x98, 0xe0, 0x40, 0xe3, 0x98, 0xe0, 0x40, 0xe4, 0x99, - 0xe3, 0x40, 0xe4, 0x99, 0xe2, 0x40, 0xe4, 0x99, 0xe3, 0x40, 0xe4, 0x99, - 0xe2, 0x40, 0xe5, 0x99, 0xe3, 0x40, 0xe5, 0x99, 0xe2, 0x40, 0xe5, 0x99, - 0xe3, 0x40, 0xe5, 0x99, 0xe2, 0x40, 0xe6, 0x99, 0xe3, 0x40, 0xe6, 0x9a, - 0xe5, 0x40, 0xe6, 0x9a, 0xe5, 0x40, 0xe6, 0x9a, 0xe5, 0x40, 0xe7, 0x9a, - 0xe5, 0x40, 0xe7, 0x9a, 0xe5, 0x40, 0xe7, 0x9a, 0xe5, 0x40, 0xe7, 0x9a, - 0xe5, 0x40, 0xe8, 0x9a, 0xe5, 0x40, 0xe8, 0x9a, 0xe5, 0x40, 0xe8, 0x9a, - 0xe5, 0x40, 0xe8, 0x9b, 0xe7, 0x40, 0xe9, 0x9b, 0xe7, 0x40, 0xe9, 0x9b, - 0xe7, 0x40, 0xe9, 0x9b, 0xe7, 0x40, 0xe9, 0x9b, 0xe7, 0x40, 0xea, 0x9b, - 0xe7, 0x40, 0xea, 0x9b, 0xe7, 0x40, 0xea, 0x9b, 0xe7, 0x40, 0xea, 0x9b, - 0xe7, 0x40, 0xeb, 0x9c, 0xea, 0x40, 0xeb, 0x9c, 0xea, 0x40, 0xeb, 0x9c, - 0xea, 0x40, 0xeb, 0x9c, 0xea, 0x40, 0xec, 0x9c, 0xea, 0x40, 0xec, 0x9c, - 0xea, 0x40, 0xec, 0x9c, 0xea, 0x40, 0xec, 0x9c, 0xea, 0x40, 0xec, 0x9c, - 0xea, 0x40, 0xed, 0x9c, 0xea, 0x40, 0xed, 0x9d, 0xec, 0x40, 0xed, 0x9c, - 0xea, 0x40, 0xed, 0x9d, 0xec, 0x40, 0xee, 0x9d, 0xec, 0x40, 0xee, 0x9d, - 0xec, 0x40, 0xee, 0x9d, 0xec, 0x40, 0xee, 0x9d, 0xec, 0x40, 0xef, 0x9d, - 0xec, 0x40, 0xef, 0x9d, 0xec, 0x40, 0xef, 0x9d, 0xee, 0x40, 0xef, 0x9d, - 0xec, 0x40, 0xf0, 0x9d, 0xee, 0x40, 0xf0, 0x9d, 0xee, 0x40, 0xf0, 0x9d, - 0xee, 0x40, 0xf0, 0x9d, 0xee, 0x40, 0xf1, 0x9d, 0xee, 0x40, 0xf1, 0x9d, - 0xee, 0x40, 0xf1, 0x9d, 0xee, 0x40, 0xf1, 0x9d, 0xee, 0x40, 0xf2, 0x9d, - 0xee, 0x40, 0xf2, 0x9e, 0xf0, 0x40, 0xf2, 0x9e, 0xf1, 0x40, 0xf2, 0x9e, - 0xf0, 0x40, 0xf2, 0x9e, 0xf1, 0x40, 0xf3, 0x9e, 0xf0, 0x40, 0xf3, 0x9e, - 0xf1, 0x40, 0xf3, 0x9e, 0xf0, 0x40, 0xf3, 0x9e, 0xf1, 0x40, 0xf4, 0x9e, - 0xf0, 0x40, 0xf4, 0x9e, 0xf1, 0x40, 0xf4, 0x9f, 0xf3, 0x40, 0xf4, 0x9e, - 0xf1, 0x40, 0xf5, 0x9f, 0xf3, 0x40, 0xf5, 0x9f, 0xf2, 0x40, 0xf5, 0x9f, - 0xf3, 0x40, 0xf5, 0x9f, 0xf2, 0x40, 0xf5, 0x9f, 0xf3, 0x40, 0xf6, 0x9f, - 0xf2, 0x40, 0xf6, 0x9f, 0xf3, 0x40, 0xf6, 0xa0, 0xf5, 0x40, 0xf6, 0x9f, - 0xf3, 0x40, 0xf7, 0xa0, 0xf5, 0x40, 0xf7, 0xa0, 0xf5, 0x40, 0xf7, 0xa0, - 0xf5, 0x40, 0xf7, 0xa0, 0xf5, 0x40, 0xf8, 0xa0, 0xf5, 0x40, 0xf8, 0xa0, - 0xf5, 0x40, 0xf8, 0xa0, 0xf5, 0x40, 0xf8, 0xa1, 0xf7, 0x40, 0xf8, 0xa1, - 0xf7, 0x40, 0xf9, 0xa1, 0xf7, 0x40, 0xf9, 0xa1, 0xf7, 0x40, 0xf9, 0xa1, - 0xf7, 0x40, 0xf9, 0xa1, 0xf7, 0x40, 0xfa, 0xa1, 0xf7, 0x40, 0xfa, 0xa1, - 0xf7, 0x40, 0xfa, 0xa1, 0xf7, 0x40, 0xfa, 0xa1, 0xf7, 0x40, 0xfa, 0xa1, - 0xf7, 0x40, 0xfb, 0xa1, 0xf7, 0x40, 0xfb, 0xa1, 0xf9, 0x40, 0xfb, 0xa1, - 0xf9, 0x40, 0xfb, 0xa1, 0xf9, 0x40, 0xfc, 0xa1, 0xf9, 0x40, 0xfc, 0xa1, - 0xf9, 0x40, 0xfc, 0xa1, 0xf9, 0x40, 0xfc, 0xa1, 0xf9, 0x40, 0xfc, 0xa1, - 0xf9, 0x40, 0xfd, 0xa1, 0xf9, 0x40, 0xfd, 0xa2, 0xfb, 0x40, 0xfd, 0xa1, - 0xf9, 0x40, 0xfd, 0xa2, 0xfb, 0x40, 0xfe, 0xa2, 0xfb, 0x40, 0xfe, 0xa2, - 0xfb, 0x40, 0xfe, 0xa2, 0xfb, 0x40, 0xfe, 0xa2, 0xfb, 0x40, 0xfe, 0xa2, - 0xfb, 0x40, 0xff, 0xa2, 0xfb, 0x40, 0xff, 0xa2, 0xfb, 0x40, 0x03, 0x95, - 0x99, 0x40, 0x0a, 0x98, 0x98, 0x40, 0x0f, 0x95, 0x99, 0x40, 0x14, 0x98, - 0x98, 0x40, 0x17, 0x95, 0x99, 0x40, 0x1b, 0x98, 0x98, 0x40, 0x1e, 0x95, - 0x99, 0x40, 0x20, 0x93, 0x99, 0x40, 0x23, 0x95, 0x99, 0x40, 0x25, 0x93, - 0x99, 0x40, 0x27, 0x95, 0x99, 0x40, 0x29, 0x93, 0x99, 0x40, 0x2b, 0x95, - 0x99, 0x40, 0x2d, 0x93, 0x99, 0x40, 0x2f, 0x95, 0x99, 0x40, 0x31, 0x93, - 0x99, 0x40, 0x32, 0x95, 0x99, 0x40, 0x34, 0x93, 0x99, 0x40, 0x35, 0x95, - 0x99, 0x40, 0x37, 0x93, 0x99, 0x40, 0x38, 0x95, 0x99, 0x40, 0x3a, 0x93, - 0x99, 0x40, 0x3b, 0x95, 0x99, 0x40, 0x3c, 0x93, 0x99, 0x40, 0x3e, 0x95, - 0x99, 0x40, 0x3f, 0x93, 0x99, 0x40, 0x40, 0x95, 0x99, 0x40, 0x42, 0x93, - 0x99, 0x40, 0x43, 0x95, 0x99, 0x40, 0x44, 0x93, 0x99, 0x40, 0x45, 0x95, - 0x99, 0x40, 0x46, 0x93, 0x99, 0x40, 0x47, 0x95, 0x99, 0x40, 0x48, 0x93, - 0x99, 0x40, 0x49, 0x95, 0x99, 0x40, 0x4a, 0x93, 0x99, 0x40, 0x4b, 0x95, - 0x99, 0x40, 0x4c, 0x93, 0x99, 0x40, 0x4d, 0x95, 0x99, 0x40, 0x4e, 0x93, - 0x99, 0x40, 0x4f, 0x95, 0x99, 0x40, 0x50, 0x93, 0x99, 0x40, 0x51, 0x95, - 0x99, 0x40, 0x52, 0x93, 0x99, 0x40, 0x53, 0x90, 0x9a, 0x40, 0x54, 0x93, - 0x99, 0x40, 0x55, 0x90, 0x9a, 0x40, 0x56, 0x93, 0x99, 0x40, 0x57, 0x90, - 0x9a, 0x40, 0x58, 0x93, 0x99, 0x40, 0x58, 0x90, 0x9a, 0x40, 0x59, 0x93, - 0x99, 0x40, 0x5a, 0x90, 0x9a, 0x40, 0x5b, 0x93, 0x99, 0x40, 0x5c, 0x90, - 0x9a, 0x40, 0x5d, 0x93, 0x99, 0x40, 0x5d, 0x90, 0x9a, 0x40, 0x5e, 0x93, - 0x99, 0x40, 0x5f, 0x90, 0x9a, 0x40, 0x60, 0x93, 0x99, 0x40, 0x60, 0x90, - 0x9a, 0x40, 0x61, 0x93, 0x99, 0x40, 0x62, 0x90, 0x9a, 0x40, 0x63, 0x93, - 0x99, 0x40, 0x63, 0x90, 0x9a, 0x40, 0x64, 0x93, 0x99, 0x40, 0x65, 0x90, - 0x9a, 0x40, 0x66, 0x93, 0x99, 0x40, 0x66, 0x90, 0x9a, 0x40, 0x67, 0x93, - 0x99, 0x40, 0x68, 0x90, 0x9a, 0x40, 0x68, 0x93, 0x99, 0x40, 0x69, 0x90, - 0x9a, 0x40, 0x6a, 0x8c, 0x9a, 0x40, 0x6a, 0x90, 0x9a, 0x40, 0x6b, 0x8c, - 0x9a, 0x40, 0x6c, 0x90, 0x9a, 0x40, 0x6c, 0x8c, 0x9a, 0x40, 0x6d, 0x90, - 0x9a, 0x40, 0x6e, 0x8c, 0x9a, 0x40, 0x6e, 0x90, 0x9a, 0x40, 0x6f, 0x8c, - 0x9a, 0x40, 0x70, 0x90, 0x9a, 0x40, 0x70, 0x8c, 0x9a, 0x40, 0x71, 0x90, - 0x9a, 0x40, 0x72, 0x8c, 0x9a, 0x40, 0x72, 0x90, 0x9a, 0x40, 0x73, 0x8c, - 0x9a, 0x40, 0x73, 0x90, 0x9a, 0x40, 0x74, 0x8c, 0x9a, 0x40, 0x75, 0x90, - 0x9a, 0x40, 0x75, 0x8c, 0x9a, 0x40, 0x76, 0x90, 0x9a, 0x40, 0x76, 0x8c, - 0x9a, 0x40, 0x77, 0x90, 0x9a, 0x40, 0x78, 0x8c, 0x9a, 0x40, 0x78, 0x90, - 0x9a, 0x40, 0x79, 0x8c, 0x9a, 0x40, 0x79, 0x90, 0x9a, 0x40, 0x7a, 0x8c, - 0x9a, 0x40, 0x7a, 0x90, 0x9a, 0x40, 0x7b, 0x8c, 0x9a, 0x40, 0x7c, 0x90, - 0x9a, 0x40, 0x7c, 0x8c, 0x9a, 0x40, 0x7d, 0x90, 0x9a, 0x40, 0x7d, 0x8c, - 0x9a, 0x40, 0x7e, 0x90, 0x9a, 0x40, 0x7e, 0x8c, 0x9a, 0x40, 0x7f, 0x90, - 0x9a, 0x40, 0x7f, 0x8c, 0x9a, 0x40, 0x80, 0x90, 0x9a, 0x40, 0x81, 0x8c, - 0x9a, 0x40, 0x81, 0x90, 0x9a, 0x40, 0x82, 0x8c, 0x9a, 0x40, 0x82, 0x90, - 0x9a, 0x40, 0x83, 0x8c, 0x9a, 0x40, 0x83, 0x90, 0x9a, 0x40, 0x84, 0x8c, - 0x9a, 0x40, 0x84, 0x89, 0x9a, 0x40, 0x85, 0x8c, 0x9a, 0x40, 0x85, 0x89, - 0x9a, 0x40, 0x86, 0x8c, 0x9a, 0x40, 0x86, 0x89, 0x9a, 0x40, 0x87, 0x8c, - 0x9a, 0x40, 0x87, 0x89, 0x9a, 0x40, 0x88, 0x8c, 0x9a, 0x40, 0x88, 0x89, - 0x9a, 0x40, 0x89, 0x8c, 0x9a, 0x40, 0x89, 0x89, 0x9a, 0x40, 0x8a, 0x8c, - 0x9a, 0x40, 0x8a, 0x89, 0x9a, 0x40, 0x8b, 0x8c, 0x9a, 0x40, 0x8b, 0x89, - 0x9a, 0x40, 0x8c, 0x8c, 0x9a, 0x40, 0x8c, 0x89, 0x9a, 0x40, 0x8d, 0x8c, - 0x9a, 0x40, 0x8d, 0x89, 0x9a, 0x40, 0x8e, 0x8c, 0x9a, 0x40, 0x8e, 0x89, - 0x9a, 0x40, 0x8e, 0x8c, 0x9a, 0x40, 0x8f, 0x89, 0x9a, 0x40, 0x8f, 0x8c, - 0x9a, 0x40, 0x90, 0x89, 0x9a, 0x40, 0x90, 0x8c, 0x9a, 0x40, 0x91, 0x89, - 0x9a, 0x40, 0x91, 0x8c, 0x9a, 0x40, 0x92, 0x89, 0x9a, 0x40, 0x92, 0x8c, - 0x9a, 0x40, 0x93, 0x89, 0x9a, 0x40, 0x93, 0x8c, 0x9a, 0x40, 0x94, 0x89, - 0x9a, 0x40, 0x94, 0x8c, 0x9a, 0x40, 0x94, 0x89, 0x9a, 0x40, 0x95, 0x8c, - 0x9a, 0x40, 0x95, 0x89, 0x9a, 0x40, 0x96, 0x8c, 0x9a, 0x40, 0x96, 0x89, - 0x9a, 0x40, 0x97, 0x8c, 0x9a, 0x40, 0x97, 0x89, 0x9a, 0x40, 0x98, 0x89, - 0x9b, 0x40, 0x98, 0x89, 0x9a, 0x40, 0x98, 0x89, 0x9b, 0x40, 0x99, 0x89, - 0x9a, 0x40, 0x99, 0x89, 0x9b, 0x40, 0x9a, 0x89, 0x9a, 0x40, 0x9a, 0x89, - 0x9b, 0x40, 0x9a, 0x89, 0x9a, 0x3f, 0x9a, 0x89, 0x9b, 0x40, 0x9a, 0x89, - 0x9b, 0x3f, 0x9a, 0x89, 0x9c, 0x40, 0x9a, 0x89, 0x9c, 0x3f, 0x9a, 0x89, - 0x9d, 0x40, 0x9a, 0x89, 0x9d, 0x3f, 0x9a, 0x89, 0x9d, 0x40, 0x9a, 0x89, - 0x9e, 0x3f, 0x9a, 0x89, 0x9e, 0x40, 0x9f, 0x89, 0x9f, 0x45, 0x9f, 0x89, - 0x9f, 0x45, 0x9f, 0x89, 0x9f, 0x45, 0xa0, 0x89, 0xa0, 0x45, 0xa0, 0x89, - 0xa0, 0x45, 0xa1, 0x89, 0xa1, 0x45, 0xa1, 0x89, 0xa1, 0x3b, 0xa1, 0x89, - 0xa1, 0x3b, 0xa2, 0x89, 0xa2, 0x3b, 0xa2, 0x89, 0xa2, 0x3b, 0xa3, 0x89, - 0xa3, 0x3b, 0xa5, 0x89, 0xa3, 0x3c, 0xa5, 0x89, 0xa3, 0x3c, 0xa5, 0x89, - 0xa4, 0x3c, 0xa5, 0x89, 0xa4, 0x3c, 0xa5, 0x89, 0xa5, 0x3c, 0xa5, 0x89, - 0xa5, 0x3c, 0xa5, 0x89, 0xa5, 0x3c, 0xa6, 0x89, 0xa6, 0x3c, 0xa6, 0x89, - 0xa6, 0x3c, 0xa8, 0x89, 0xa6, 0x3d, 0xa8, 0x89, 0xa7, 0x3d, 0xa8, 0x89, - 0xa7, 0x3d, 0xa8, 0x89, 0xa8, 0x3d, 0xa8, 0x89, 0xa8, 0x3d, 0xa8, 0x89, - 0xa8, 0x3d, 0xa9, 0x89, 0xa9, 0x3d, 0xa9, 0x89, 0xa9, 0x3d, 0xaa, 0x89, - 0xaa, 0x3d, 0xaa, 0x89, 0xaa, 0x3d, 0xac, 0x89, 0xaa, 0x3e, 0xac, 0x89, - 0xab, 0x3e, 0xac, 0x89, 0xab, 0x3e, 0xac, 0x89, 0xab, 0x3e, 0xac, 0x89, - 0xac, 0x3e, 0xac, 0x89, 0xac, 0x3e, 0xac, 0x89, 0xac, 0x3e, 0xad, 0x89, - 0xad, 0x3e, 0xad, 0x89, 0xad, 0x3e, 0xae, 0x89, 0xae, 0x3e, 0xae, 0x89, - 0xae, 0x3e, 0xaf, 0x89, 0xae, 0x3f, 0xaf, 0x89, 0xaf, 0x3f, 0xaf, 0x89, - 0xaf, 0x3f, 0xaf, 0x89, 0xaf, 0x3f, 0xb0, 0x89, 0xb0, 0x3f, 0xb0, 0x89, - 0xb0, 0x3f, 0xb0, 0x89, 0xb0, 0x3f, 0xb1, 0x89, 0xb1, 0x3f, 0xb1, 0x89, - 0xb1, 0x3f, 0xb2, 0x89, 0xb2, 0x3f, 0xb2, 0x89, 0xb2, 0x3f, 0xb2, 0x89, - 0xb2, 0x3f, 0xb3, 0x8a, 0xb3, 0x40, 0xb3, 0x8a, 0xb3, 0x40, 0xb3, 0x8a, - 0xb3, 0x40, 0xb4, 0x8a, 0xb4, 0x40, 0xb4, 0x8a, 0xb4, 0x40, 0xb4, 0x8a, - 0xb4, 0x40, 0xb5, 0x8a, 0xb5, 0x40, 0xb5, 0x8a, 0xb5, 0x40, 0xb5, 0x8a, - 0xb5, 0x40, 0xb6, 0x8a, 0xb5, 0x40, 0xb6, 0x8a, 0xb5, 0x40, 0xb6, 0x8b, - 0xb6, 0x40, 0xb7, 0x8b, 0xb7, 0x40, 0xb7, 0x8b, 0xb7, 0x40, 0xb7, 0x8b, - 0xb7, 0x40, 0xb8, 0x8b, 0xb8, 0x40, 0xb8, 0x8b, 0xb8, 0x40, 0xb8, 0x8b, - 0xb8, 0x40, 0xb9, 0x8b, 0xb8, 0x40, 0xb9, 0x8b, 0xb8, 0x40, 0xb9, 0x8b, - 0xb8, 0x40, 0xba, 0x8b, 0xb8, 0x40, 0xba, 0x8c, 0xba, 0x40, 0xba, 0x8c, - 0xba, 0x40, 0xbb, 0x8c, 0xbb, 0x40, 0xbb, 0x8c, 0xbb, 0x40, 0xbb, 0x8c, - 0xbb, 0x40, 0xbc, 0x8c, 0xbc, 0x40, 0xbc, 0x8c, 0xbb, 0x40, 0xbc, 0x8c, - 0xbc, 0x40, 0xbd, 0x8c, 0xbb, 0x40, 0xbd, 0x8c, 0xbc, 0x40, 0xbd, 0x8d, - 0xbd, 0x40, 0xbe, 0x8d, 0xbe, 0x40, 0xbe, 0x8d, 0xbe, 0x40, 0xbe, 0x8d, - 0xbe, 0x40, 0xbf, 0x8d, 0xbf, 0x40, 0xbf, 0x8d, 0xbe, 0x40, 0xbf, 0x8d, - 0xbf, 0x40, 0xc0, 0x8d, 0xbe, 0x40, 0xc0, 0x8d, 0xbf, 0x40, 0xc0, 0x8e, - 0xc0, 0x40, 0xc1, 0x8e, 0xc1, 0x40, 0xc1, 0x8e, 0xc1, 0x40, 0xc1, 0x8e, - 0xc1, 0x40, 0xc1, 0x8e, 0xc1, 0x40, 0xc2, 0x8e, 0xc1, 0x40, 0xc2, 0x8e, - 0xc1, 0x40, 0xc2, 0x8e, 0xc1, 0x40, 0xc3, 0x8e, 0xc1, 0x40, 0xc3, 0x8e, - 0xc1, 0x40, 0xc3, 0x8e, 0xc1, 0x40, 0xc4, 0x8f, 0xc4, 0x40, 0xc4, 0x8f, - 0xc4, 0x40, 0xc4, 0x8f, 0xc4, 0x40, 0xc5, 0x8f, 0xc5, 0x40, 0xc5, 0x8f, - 0xc4, 0x40, 0xc5, 0x8f, 0xc5, 0x40, 0xc6, 0x8f, 0xc4, 0x40, 0xc6, 0x8f, - 0xc5, 0x40, 0xc6, 0x8f, 0xc4, 0x40, 0xc6, 0x8f, 0xc5, 0x40, 0xc7, 0x90, - 0xc7, 0x40, 0xc7, 0x90, 0xc7, 0x40, 0xc7, 0x90, 0xc7, 0x40, 0xc8, 0x90, - 0xc7, 0x40, 0xc8, 0x90, 0xc7, 0x40, 0xc8, 0x90, 0xc7, 0x40, 0xc9, 0x90, - 0xc7, 0x40, 0xc9, 0x90, 0xc7, 0x40, 0xc9, 0x90, 0xc7, 0x40, 0xc9, 0x91, - 0xc9, 0x40, 0xca, 0x91, 0xca, 0x40, 0xca, 0x91, 0xca, 0x40, 0xca, 0x91, - 0xca, 0x40, 0xcb, 0x91, 0xca, 0x40, 0xcb, 0x91, 0xca, 0x40, 0xcb, 0x91, - 0xca, 0x40, 0xcc, 0x91, 0xca, 0x40, 0xcc, 0x91, 0xca, 0x40, 0xcc, 0x91, - 0xca, 0x40, 0xcc, 0x91, 0xca, 0x40, 0xcd, 0x92, 0xcd, 0x40, 0xcd, 0x92, - 0xcd, 0x40, 0xcd, 0x92, 0xcd, 0x40, 0xce, 0x92, 0xcd, 0x40, 0xce, 0x92, - 0xcd, 0x40, 0xce, 0x92, 0xcd, 0x40, 0xce, 0x92, 0xcd, 0x40, 0xcf, 0x92, - 0xcd, 0x40, 0xcf, 0x92, 0xcd, 0x40, 0xcf, 0x92, 0xcd, 0x40, 0xd0, 0x93, - 0xd0, 0x40, 0xd0, 0x93, 0xcf, 0x40, 0xd0, 0x93, 0xd0, 0x40, 0xd0, 0x93, - 0xcf, 0x40, 0xd1, 0x93, 0xd0, 0x40, 0xd1, 0x93, 0xcf, 0x40, 0xd1, 0x93, - 0xd0, 0x40, 0xd2, 0x93, 0xcf, 0x40, 0xd2, 0x93, 0xd0, 0x40, 0xd2, 0x94, - 0xd2, 0x40, 0xd2, 0x94, 0xd2, 0x40, 0xd3, 0x94, 0xd2, 0x40, 0xd3, 0x94, - 0xd2, 0x40, 0xd3, 0x94, 0xd2, 0x40, 0xd4, 0x94, 0xd2, 0x40, 0xd4, 0x94, - 0xd2, 0x40, 0xd4, 0x94, 0xd2, 0x40, 0xd4, 0x94, 0xd2, 0x40, 0xd5, 0x94, - 0xd2, 0x40, 0xd5, 0x94, 0xd5, 0x40, 0xd5, 0x94, 0xd5, 0x40, 0xd6, 0x94, - 0xd5, 0x40, 0xd6, 0x94, 0xd5, 0x40, 0xd6, 0x94, 0xd5, 0x40, 0xd6, 0x94, - 0xd5, 0x40, 0xd7, 0x94, 0xd5, 0x40, 0xd7, 0x94, 0xd5, 0x40, 0xd7, 0x94, - 0xd5, 0x40, 0xd7, 0x95, 0xd7, 0x40, 0xd8, 0x94, 0xd5, 0x40, 0xd8, 0x95, - 0xd7, 0x40, 0xd8, 0x95, 0xd7, 0x40, 0xd9, 0x95, 0xd7, 0x40, 0xd9, 0x95, - 0xd7, 0x40, 0xd9, 0x95, 0xd7, 0x40, 0xd9, 0x95, 0xd7, 0x40, 0xda, 0x95, - 0xd7, 0x40, 0xda, 0x95, 0xd7, 0x40, 0xda, 0x95, 0xd7, 0x40, 0xda, 0x96, - 0xda, 0x40, 0xdb, 0x96, 0xda, 0x40, 0xdb, 0x96, 0xda, 0x40, 0xdb, 0x96, - 0xda, 0x40, 0xdb, 0x96, 0xda, 0x40, 0xdc, 0x96, 0xda, 0x40, 0xdc, 0x96, - 0xda, 0x40, 0xdc, 0x96, 0xda, 0x40, 0xdd, 0x96, 0xda, 0x40, 0xdd, 0x96, - 0xda, 0x40, 0xdd, 0x97, 0xdd, 0x40, 0xdd, 0x97, 0xdc, 0x40, 0xde, 0x97, - 0xdd, 0x40, 0xde, 0x97, 0xdc, 0x40, 0xde, 0x97, 0xdd, 0x40, 0xde, 0x97, - 0xdc, 0x40, 0xdf, 0x97, 0xdd, 0x40, 0xdf, 0x97, 0xdc, 0x40, 0xdf, 0x97, - 0xdd, 0x40, 0xdf, 0x98, 0xdf, 0x40, 0xe0, 0x98, 0xdf, 0x40, 0xe0, 0x98, - 0xdf, 0x40, 0xe0, 0x98, 0xdf, 0x40, 0xe1, 0x98, 0xdf, 0x40, 0xe1, 0x98, - 0xdf, 0x40, 0xe1, 0x98, 0xdf, 0x40, 0xe1, 0x98, 0xdf, 0x40, 0xe2, 0x98, - 0xdf, 0x40, 0xe2, 0x99, 0xe1, 0x40, 0xe2, 0x99, 0xe2, 0x40, 0xe2, 0x99, - 0xe1, 0x40, 0xe3, 0x99, 0xe2, 0x40, 0xe3, 0x99, 0xe1, 0x40, 0xe3, 0x99, - 0xe2, 0x40, 0xe3, 0x99, 0xe1, 0x40, 0xe4, 0x99, 0xe2, 0x40, 0xe4, 0x99, - 0xe1, 0x40, 0xe4, 0x99, 0xe2, 0x40, 0xe4, 0x99, 0xe1, 0x40, 0xe5, 0x99, - 0xe2, 0x40, 0xe5, 0x9a, 0xe4, 0x40, 0xe5, 0x9a, 0xe4, 0x40, 0xe5, 0x9a, - 0xe4, 0x40, 0xe6, 0x9a, 0xe4, 0x40, 0xe6, 0x9a, 0xe4, 0x40, 0xe6, 0x9a, - 0xe4, 0x40, 0xe6, 0x9a, 0xe4, 0x40, 0xe7, 0x9a, 0xe4, 0x40, 0xe7, 0x9a, - 0xe4, 0x40, 0xe7, 0x9a, 0xe6, 0x40, 0xe7, 0x9a, 0xe6, 0x40, 0xe8, 0x9a, - 0xe6, 0x40, 0xe8, 0x9a, 0xe6, 0x40, 0xe8, 0x9a, 0xe6, 0x40, 0xe8, 0x9a, - 0xe6, 0x40, 0xe9, 0x9a, 0xe6, 0x40, 0xe9, 0x9a, 0xe6, 0x40, 0xe9, 0x9a, - 0xe6, 0x40, 0xe9, 0x9b, 0xe8, 0x40, 0xea, 0x9b, 0xe9, 0x40, 0xea, 0x9b, - 0xe8, 0x40, 0xea, 0x9b, 0xe9, 0x40, 0xea, 0x9b, 0xe8, 0x40, 0xeb, 0x9b, - 0xe9, 0x40, 0xeb, 0x9b, 0xe8, 0x40, 0xeb, 0x9b, 0xe9, 0x40, 0xeb, 0x9b, - 0xe8, 0x40, 0xec, 0x9b, 0xe9, 0x40, 0xec, 0x9c, 0xeb, 0x40, 0xec, 0x9b, - 0xe9, 0x40, 0xec, 0x9c, 0xeb, 0x40, 0xec, 0x9c, 0xeb, 0x40, 0xed, 0x9c, - 0xeb, 0x40, 0xed, 0x9c, 0xeb, 0x40, 0xed, 0x9c, 0xeb, 0x40, 0xed, 0x9c, - 0xeb, 0x40, 0xee, 0x9c, 0xeb, 0x40, 0xee, 0x9d, 0xed, 0x40, 0xee, 0x9d, - 0xed, 0x40, 0xee, 0x9d, 0xed, 0x40, 0xef, 0x9d, 0xed, 0x40, 0xef, 0x9d, - 0xed, 0x40, 0xef, 0x9d, 0xed, 0x40, 0xef, 0x9d, 0xed, 0x40, 0xf0, 0x9d, - 0xed, 0x40, 0xf0, 0x9d, 0xed, 0x40, 0xf0, 0x9d, 0xed, 0x40, 0xf0, 0x9e, - 0xef, 0x40, 0xf1, 0x9d, 0xed, 0x40, 0xf1, 0x9e, 0xef, 0x40, 0xf1, 0x9e, - 0xef, 0x40, 0xf1, 0x9e, 0xef, 0x40, 0xf2, 0x9e, 0xef, 0x40, 0xf2, 0x9e, - 0xef, 0x40, 0xf2, 0x9e, 0xef, 0x40, 0xf2, 0x9e, 0xef, 0x40, 0xf2, 0x9e, - 0xef, 0x40, 0xf3, 0x9e, 0xef, 0x40, 0xf3, 0x9f, 0xf2, 0x40, 0xf3, 0x9f, - 0xf1, 0x40, 0xf3, 0x9f, 0xf2, 0x40, 0xf4, 0x9f, 0xf1, 0x40, 0xf4, 0x9f, - 0xf2, 0x40, 0xf4, 0x9f, 0xf1, 0x40, 0xf4, 0x9f, 0xf2, 0x40, 0xf5, 0x9f, - 0xf1, 0x40, 0xf5, 0x9f, 0xf2, 0x40, 0xf5, 0x9f, 0xf4, 0x40, 0xf5, 0x9f, - 0xf4, 0x40, 0xf5, 0x9f, 0xf4, 0x40, 0xf6, 0x9f, 0xf4, 0x40, 0xf6, 0x9f, - 0xf4, 0x40, 0xf6, 0x9f, 0xf4, 0x40, 0xf6, 0x9f, 0xf4, 0x40, 0xf7, 0x9f, - 0xf4, 0x40, 0xf7, 0x9f, 0xf4, 0x40, 0xf7, 0x9f, 0xf4, 0x40, 0xf7, 0xa0, - 0xf6, 0x40, 0xf8, 0x9f, 0xf4, 0x40, 0xf8, 0xa0, 0xf6, 0x40, 0xf8, 0xa0, - 0xf6, 0x40, 0xf8, 0xa0, 0xf6, 0x40, 0xf8, 0xa0, 0xf6, 0x40, 0xf9, 0xa0, - 0xf6, 0x40, 0xf9, 0xa0, 0xf6, 0x40, 0xf9, 0xa0, 0xf6, 0x40, 0xf9, 0xa1, - 0xf8, 0x40, 0xfa, 0xa0, 0xf6, 0x40, 0xfa, 0xa1, 0xf8, 0x40, 0xfa, 0xa1, - 0xf8, 0x40, 0xfa, 0xa1, 0xf8, 0x40, 0xfa, 0xa1, 0xf8, 0x40, 0xfb, 0xa1, - 0xf8, 0x40, 0xfb, 0xa1, 0xf8, 0x40, 0xfb, 0xa1, 0xf8, 0x40, 0xfb, 0xa1, - 0xf8, 0x40, 0xfc, 0xa1, 0xf8, 0x40, 0xfc, 0xa2, 0xfa, 0x40, 0xfc, 0xa2, - 0xfa, 0x40, 0xfc, 0xa2, 0xfa, 0x40, 0xfc, 0xa2, 0xfa, 0x40, 0xfd, 0xa2, - 0xfa, 0x40, 0xfd, 0xa2, 0xfa, 0x40, 0xfd, 0xa2, 0xfa, 0x40, 0xfd, 0xa2, - 0xfa, 0x40, 0xfe, 0xa2, 0xfa, 0x40, 0xfe, 0xa2, 0xfa, 0x40, 0xfe, 0xa2, - 0xfa, 0x40, 0xfe, 0xa2, 0xfa, 0x40, 0xfe, 0xa2, 0xfa, 0x40, 0xff, 0xa2, - 0xfa, 0x40, 0xff, 0xa3, 0xfb, 0x40, 0x03, 0x96, 0x99, 0x40, 0x0a, 0x92, - 0x99, 0x40, 0x0f, 0x96, 0x99, 0x40, 0x14, 0x92, 0x99, 0x40, 0x17, 0x96, - 0x99, 0x40, 0x1b, 0x92, 0x99, 0x40, 0x1e, 0x96, 0x99, 0x40, 0x20, 0x92, - 0x99, 0x40, 0x23, 0x96, 0x99, 0x40, 0x25, 0x92, 0x99, 0x40, 0x27, 0x96, - 0x99, 0x40, 0x29, 0x92, 0x99, 0x40, 0x2b, 0x96, 0x99, 0x40, 0x2d, 0x92, - 0x99, 0x40, 0x2f, 0x96, 0x99, 0x40, 0x31, 0x92, 0x99, 0x40, 0x32, 0x96, - 0x99, 0x40, 0x34, 0x92, 0x99, 0x40, 0x35, 0x96, 0x99, 0x40, 0x37, 0x92, - 0x99, 0x40, 0x38, 0x96, 0x99, 0x40, 0x3a, 0x92, 0x99, 0x40, 0x3b, 0x96, - 0x99, 0x40, 0x3c, 0x92, 0x99, 0x40, 0x3e, 0x96, 0x99, 0x40, 0x3f, 0x92, - 0x99, 0x40, 0x40, 0x96, 0x99, 0x40, 0x42, 0x92, 0x99, 0x40, 0x43, 0x96, - 0x99, 0x40, 0x44, 0x92, 0x99, 0x40, 0x45, 0x96, 0x99, 0x40, 0x46, 0x92, - 0x99, 0x40, 0x47, 0x8f, 0x9a, 0x40, 0x48, 0x92, 0x99, 0x40, 0x49, 0x8f, - 0x9a, 0x40, 0x4a, 0x92, 0x99, 0x40, 0x4b, 0x8f, 0x9a, 0x40, 0x4c, 0x92, - 0x99, 0x40, 0x4d, 0x8f, 0x9a, 0x40, 0x4e, 0x92, 0x99, 0x40, 0x4f, 0x8f, - 0x9a, 0x40, 0x50, 0x92, 0x99, 0x40, 0x51, 0x8f, 0x9a, 0x40, 0x52, 0x92, - 0x99, 0x40, 0x53, 0x8f, 0x9a, 0x40, 0x54, 0x92, 0x99, 0x40, 0x55, 0x8f, - 0x9a, 0x40, 0x56, 0x92, 0x99, 0x40, 0x57, 0x8f, 0x9a, 0x40, 0x58, 0x92, - 0x99, 0x40, 0x58, 0x8f, 0x9a, 0x40, 0x59, 0x92, 0x99, 0x40, 0x5a, 0x8f, - 0x9a, 0x40, 0x5b, 0x92, 0x99, 0x40, 0x5c, 0x8f, 0x9a, 0x40, 0x5d, 0x92, - 0x99, 0x40, 0x5d, 0x8f, 0x9a, 0x40, 0x5e, 0x92, 0x99, 0x40, 0x5f, 0x8f, - 0x9a, 0x40, 0x60, 0x92, 0x99, 0x40, 0x60, 0x8f, 0x9a, 0x40, 0x61, 0x92, - 0x99, 0x40, 0x62, 0x8f, 0x9a, 0x40, 0x63, 0x92, 0x99, 0x40, 0x63, 0x8f, - 0x9a, 0x40, 0x64, 0x92, 0x99, 0x40, 0x65, 0x8f, 0x9a, 0x40, 0x66, 0x92, - 0x99, 0x40, 0x66, 0x8f, 0x9a, 0x40, 0x67, 0x92, 0x99, 0x40, 0x68, 0x8f, - 0x9a, 0x40, 0x68, 0x92, 0x99, 0x40, 0x69, 0x8f, 0x9a, 0x40, 0x6a, 0x92, - 0x99, 0x40, 0x6a, 0x8f, 0x9a, 0x40, 0x6b, 0x92, 0x99, 0x40, 0x6c, 0x8f, - 0x9a, 0x40, 0x6c, 0x92, 0x99, 0x40, 0x6d, 0x8f, 0x9a, 0x40, 0x6e, 0x92, - 0x99, 0x40, 0x6e, 0x8f, 0x9a, 0x40, 0x6f, 0x92, 0x99, 0x40, 0x70, 0x8f, - 0x9a, 0x40, 0x70, 0x92, 0x99, 0x40, 0x71, 0x8f, 0x9a, 0x40, 0x72, 0x92, - 0x99, 0x40, 0x72, 0x8f, 0x9a, 0x40, 0x73, 0x92, 0x99, 0x40, 0x73, 0x8f, - 0x9a, 0x40, 0x74, 0x92, 0x99, 0x40, 0x75, 0x8f, 0x9a, 0x40, 0x75, 0x92, - 0x99, 0x40, 0x76, 0x8f, 0x9a, 0x40, 0x76, 0x8d, 0x9a, 0x40, 0x77, 0x8f, - 0x9a, 0x40, 0x78, 0x8d, 0x9a, 0x40, 0x78, 0x8f, 0x9a, 0x40, 0x79, 0x8d, - 0x9a, 0x40, 0x79, 0x8f, 0x9a, 0x40, 0x7a, 0x8d, 0x9a, 0x40, 0x7a, 0x8f, - 0x9a, 0x40, 0x7b, 0x8d, 0x9a, 0x40, 0x7c, 0x8f, 0x9a, 0x40, 0x7c, 0x8d, - 0x9a, 0x40, 0x7d, 0x8f, 0x9a, 0x40, 0x7d, 0x8d, 0x9a, 0x40, 0x7e, 0x8f, - 0x9a, 0x40, 0x7e, 0x8d, 0x9a, 0x40, 0x7f, 0x8f, 0x9a, 0x40, 0x7f, 0x8d, - 0x9a, 0x40, 0x80, 0x8f, 0x9a, 0x40, 0x81, 0x8d, 0x9a, 0x40, 0x81, 0x8f, - 0x9a, 0x40, 0x82, 0x8d, 0x9a, 0x40, 0x82, 0x8f, 0x9a, 0x40, 0x83, 0x8d, - 0x9a, 0x40, 0x83, 0x8f, 0x9a, 0x40, 0x84, 0x8d, 0x9a, 0x40, 0x84, 0x8f, - 0x9a, 0x40, 0x85, 0x8d, 0x9a, 0x40, 0x85, 0x8f, 0x9a, 0x40, 0x86, 0x8d, - 0x9a, 0x40, 0x86, 0x8f, 0x9a, 0x40, 0x87, 0x8d, 0x9a, 0x40, 0x87, 0x8f, - 0x9a, 0x40, 0x88, 0x8d, 0x9a, 0x40, 0x88, 0x8f, 0x9a, 0x40, 0x89, 0x8d, - 0x9a, 0x40, 0x89, 0x8f, 0x9a, 0x40, 0x8a, 0x8d, 0x9a, 0x40, 0x8a, 0x8a, - 0x9a, 0x40, 0x8b, 0x8d, 0x9a, 0x40, 0x8b, 0x8a, 0x9a, 0x40, 0x8c, 0x8d, - 0x9a, 0x40, 0x8c, 0x8a, 0x9a, 0x40, 0x8d, 0x8d, 0x9a, 0x40, 0x8d, 0x8a, - 0x9a, 0x40, 0x8e, 0x8d, 0x9a, 0x40, 0x8e, 0x8a, 0x9a, 0x40, 0x8e, 0x8d, - 0x9a, 0x40, 0x8f, 0x8a, 0x9a, 0x40, 0x8f, 0x8d, 0x9a, 0x40, 0x90, 0x8a, - 0x9a, 0x40, 0x90, 0x8d, 0x9a, 0x40, 0x91, 0x8a, 0x9a, 0x40, 0x91, 0x8d, - 0x9a, 0x40, 0x92, 0x8a, 0x9a, 0x40, 0x92, 0x8d, 0x9a, 0x40, 0x93, 0x8a, - 0x9a, 0x40, 0x93, 0x8d, 0x9a, 0x40, 0x94, 0x8a, 0x9a, 0x40, 0x94, 0x8d, - 0x9a, 0x40, 0x94, 0x8a, 0x9a, 0x40, 0x95, 0x8d, 0x9a, 0x40, 0x95, 0x8a, - 0x9a, 0x40, 0x96, 0x8d, 0x9a, 0x40, 0x96, 0x8a, 0x9a, 0x40, 0x97, 0x8d, - 0x9a, 0x40, 0x97, 0x8a, 0x9a, 0x40, 0x98, 0x8a, 0x9b, 0x40, 0x98, 0x8a, - 0x9a, 0x40, 0x98, 0x8a, 0x9b, 0x40, 0x99, 0x8a, 0x9a, 0x40, 0x99, 0x8a, - 0x9b, 0x40, 0x9a, 0x8a, 0x9a, 0x40, 0x9a, 0x8a, 0x9b, 0x40, 0x9a, 0x8a, - 0x9a, 0x40, 0x9a, 0x8a, 0x9b, 0x40, 0x9a, 0x8a, 0x9b, 0x40, 0x9a, 0x8a, - 0x9c, 0x40, 0x9a, 0x8a, 0x9c, 0x40, 0x9a, 0x8a, 0x9d, 0x40, 0x9a, 0x8a, - 0x9d, 0x40, 0x9a, 0x8a, 0x9d, 0x40, 0x9a, 0x8a, 0x9e, 0x40, 0x9e, 0x8a, - 0x9e, 0x44, 0x9f, 0x8a, 0x9f, 0x44, 0x9f, 0x8a, 0x9f, 0x44, 0x9f, 0x8a, - 0x9f, 0x44, 0x9f, 0x8a, 0xa0, 0x44, 0x9f, 0x8a, 0xa0, 0x44, 0x9f, 0x8a, - 0xa1, 0x44, 0x9f, 0x8a, 0xa1, 0x44, 0x9f, 0x8a, 0xa1, 0x44, 0xa2, 0x8a, - 0xa2, 0x45, 0xa2, 0x8a, 0xa2, 0x45, 0xa3, 0x8a, 0xa3, 0x3c, 0xa3, 0x8a, - 0xa3, 0x3c, 0xa3, 0x8a, 0xa3, 0x3c, 0xa4, 0x8a, 0xa4, 0x3c, 0xa4, 0x8a, - 0xa4, 0x3c, 0xa5, 0x8a, 0xa5, 0x3c, 0xa6, 0x8a, 0xa5, 0x3d, 0xa7, 0x8a, - 0xa5, 0x3d, 0xa6, 0x8a, 0xa6, 0x3d, 0xa7, 0x8a, 0xa6, 0x3d, 0xa6, 0x8a, - 0xa6, 0x3d, 0xa7, 0x8a, 0xa7, 0x3d, 0xa7, 0x8a, 0xa7, 0x3d, 0xa8, 0x8a, - 0xa8, 0x3d, 0xa8, 0x8a, 0xa8, 0x3d, 0xaa, 0x8a, 0xa8, 0x3e, 0xaa, 0x8a, - 0xa9, 0x3e, 0xaa, 0x8a, 0xa9, 0x3e, 0xaa, 0x8a, 0xaa, 0x3e, 0xaa, 0x8a, - 0xaa, 0x3e, 0xaa, 0x8a, 0xaa, 0x3e, 0xab, 0x8a, 0xab, 0x3e, 0xab, 0x8a, - 0xab, 0x3e, 0xab, 0x8a, 0xab, 0x3e, 0xac, 0x8a, 0xac, 0x3e, 0xae, 0x8a, - 0xac, 0x3f, 0xae, 0x8a, 0xac, 0x3f, 0xae, 0x8a, 0xad, 0x3f, 0xae, 0x8a, - 0xad, 0x3f, 0xae, 0x8a, 0xae, 0x3f, 0xae, 0x8a, 0xae, 0x3f, 0xae, 0x8a, - 0xae, 0x3f, 0xaf, 0x8a, 0xaf, 0x3f, 0xaf, 0x8a, 0xaf, 0x3f, 0xaf, 0x8a, - 0xaf, 0x3f, 0xb0, 0x8a, 0xb0, 0x3f, 0xb1, 0x8a, 0xb0, 0x40, 0xb1, 0x8a, - 0xb0, 0x40, 0xb1, 0x8a, 0xb1, 0x40, 0xb1, 0x8a, 0xb1, 0x40, 0xb2, 0x8a, - 0xb2, 0x40, 0xb2, 0x8a, 0xb2, 0x40, 0xb2, 0x8a, 0xb2, 0x40, 0xb3, 0x8a, - 0xb3, 0x40, 0xb3, 0x8a, 0xb3, 0x40, 0xb3, 0x8a, 0xb3, 0x40, 0xb4, 0x8a, - 0xb4, 0x40, 0xb4, 0x8b, 0xb4, 0x40, 0xb4, 0x8b, 0xb4, 0x40, 0xb5, 0x8b, - 0xb5, 0x40, 0xb5, 0x8b, 0xb5, 0x40, 0xb5, 0x8b, 0xb5, 0x40, 0xb6, 0x8b, - 0xb6, 0x40, 0xb6, 0x8b, 0xb6, 0x40, 0xb6, 0x8b, 0xb6, 0x40, 0xb7, 0x8b, - 0xb7, 0x40, 0xb7, 0x8b, 0xb7, 0x40, 0xb7, 0x8b, 0xb7, 0x40, 0xb8, 0x8b, - 0xb7, 0x40, 0xb8, 0x8c, 0xb8, 0x40, 0xb8, 0x8c, 0xb8, 0x40, 0xb9, 0x8c, - 0xb9, 0x40, 0xb9, 0x8c, 0xb9, 0x40, 0xb9, 0x8c, 0xb9, 0x40, 0xba, 0x8c, - 0xba, 0x40, 0xba, 0x8c, 0xba, 0x40, 0xba, 0x8c, 0xba, 0x40, 0xbb, 0x8c, - 0xba, 0x40, 0xbb, 0x8c, 0xba, 0x40, 0xbb, 0x8c, 0xba, 0x40, 0xbc, 0x8d, - 0xbc, 0x40, 0xbc, 0x8d, 0xbc, 0x40, 0xbc, 0x8d, 0xbc, 0x40, 0xbd, 0x8d, - 0xbd, 0x40, 0xbd, 0x8d, 0xbd, 0x40, 0xbd, 0x8d, 0xbd, 0x40, 0xbe, 0x8d, - 0xbd, 0x40, 0xbe, 0x8d, 0xbd, 0x40, 0xbe, 0x8d, 0xbd, 0x40, 0xbf, 0x8e, - 0xbf, 0x40, 0xbf, 0x8e, 0xbf, 0x40, 0xbf, 0x8e, 0xbf, 0x40, 0xc0, 0x8e, - 0xc0, 0x40, 0xc0, 0x8e, 0xc0, 0x40, 0xc0, 0x8e, 0xc0, 0x40, 0xc1, 0x8e, - 0xc0, 0x40, 0xc1, 0x8e, 0xc0, 0x40, 0xc1, 0x8e, 0xc0, 0x40, 0xc1, 0x8e, - 0xc0, 0x40, 0xc2, 0x8e, 0xc2, 0x40, 0xc2, 0x8e, 0xc2, 0x40, 0xc2, 0x8e, - 0xc2, 0x40, 0xc3, 0x8e, 0xc3, 0x40, 0xc3, 0x8e, 0xc3, 0x40, 0xc3, 0x8e, - 0xc3, 0x40, 0xc4, 0x8e, 0xc3, 0x40, 0xc4, 0x8e, 0xc3, 0x40, 0xc4, 0x8e, - 0xc3, 0x40, 0xc5, 0x8e, 0xc3, 0x40, 0xc5, 0x8e, 0xc3, 0x40, 0xc5, 0x8f, - 0xc5, 0x40, 0xc6, 0x8f, 0xc6, 0x40, 0xc6, 0x8f, 0xc6, 0x40, 0xc6, 0x8f, - 0xc6, 0x40, 0xc6, 0x8f, 0xc6, 0x40, 0xc7, 0x8f, 0xc6, 0x40, 0xc7, 0x8f, - 0xc6, 0x40, 0xc7, 0x8f, 0xc6, 0x40, 0xc8, 0x8f, 0xc6, 0x40, 0xc8, 0x90, - 0xc8, 0x40, 0xc8, 0x90, 0xc8, 0x40, 0xc9, 0x90, 0xc9, 0x40, 0xc9, 0x90, - 0xc9, 0x40, 0xc9, 0x90, 0xc9, 0x40, 0xc9, 0x90, 0xc9, 0x40, 0xca, 0x90, - 0xc9, 0x40, 0xca, 0x90, 0xc9, 0x40, 0xca, 0x90, 0xc9, 0x40, 0xcb, 0x90, - 0xc9, 0x40, 0xcb, 0x91, 0xcb, 0x40, 0xcb, 0x91, 0xcb, 0x40, 0xcc, 0x91, - 0xcc, 0x40, 0xcc, 0x91, 0xcb, 0x40, 0xcc, 0x91, 0xcc, 0x40, 0xcc, 0x91, - 0xcb, 0x40, 0xcd, 0x91, 0xcc, 0x40, 0xcd, 0x91, 0xcb, 0x40, 0xcd, 0x91, - 0xcc, 0x40, 0xce, 0x91, 0xcb, 0x40, 0xce, 0x91, 0xcc, 0x40, 0xce, 0x92, - 0xce, 0x40, 0xce, 0x92, 0xce, 0x40, 0xcf, 0x92, 0xce, 0x40, 0xcf, 0x92, - 0xce, 0x40, 0xcf, 0x92, 0xce, 0x40, 0xd0, 0x92, 0xce, 0x40, 0xd0, 0x92, - 0xce, 0x40, 0xd0, 0x92, 0xce, 0x40, 0xd0, 0x92, 0xce, 0x40, 0xd1, 0x92, - 0xce, 0x40, 0xd1, 0x93, 0xd1, 0x40, 0xd1, 0x93, 0xd1, 0x40, 0xd2, 0x93, - 0xd1, 0x40, 0xd2, 0x93, 0xd1, 0x40, 0xd2, 0x93, 0xd1, 0x40, 0xd2, 0x93, - 0xd1, 0x40, 0xd3, 0x93, 0xd1, 0x40, 0xd3, 0x93, 0xd1, 0x40, 0xd3, 0x93, - 0xd1, 0x40, 0xd4, 0x94, 0xd4, 0x40, 0xd4, 0x94, 0xd3, 0x40, 0xd4, 0x94, - 0xd4, 0x40, 0xd4, 0x94, 0xd3, 0x40, 0xd5, 0x94, 0xd4, 0x40, 0xd5, 0x94, - 0xd3, 0x40, 0xd5, 0x94, 0xd4, 0x40, 0xd6, 0x94, 0xd3, 0x40, 0xd6, 0x94, - 0xd4, 0x40, 0xd6, 0x95, 0xd6, 0x40, 0xd6, 0x95, 0xd6, 0x40, 0xd7, 0x95, - 0xd6, 0x40, 0xd7, 0x95, 0xd6, 0x40, 0xd7, 0x95, 0xd6, 0x40, 0xd7, 0x95, - 0xd6, 0x40, 0xd8, 0x95, 0xd6, 0x40, 0xd8, 0x95, 0xd6, 0x40, 0xd8, 0x95, - 0xd6, 0x40, 0xd9, 0x95, 0xd6, 0x40, 0xd9, 0x96, 0xd9, 0x40, 0xd9, 0x95, - 0xd6, 0x40, 0xd9, 0x96, 0xd9, 0x40, 0xda, 0x96, 0xd9, 0x40, 0xda, 0x96, - 0xd9, 0x40, 0xda, 0x96, 0xd9, 0x40, 0xda, 0x96, 0xd9, 0x40, 0xdb, 0x96, - 0xd9, 0x40, 0xdb, 0x96, 0xd9, 0x40, 0xdb, 0x96, 0xd9, 0x40, 0xdb, 0x96, - 0xd9, 0x40, 0xdc, 0x97, 0xdb, 0x40, 0xdc, 0x97, 0xdb, 0x40, 0xdc, 0x97, - 0xdb, 0x40, 0xdd, 0x97, 0xdb, 0x40, 0xdd, 0x97, 0xdb, 0x40, 0xdd, 0x97, - 0xdb, 0x40, 0xdd, 0x97, 0xdb, 0x40, 0xde, 0x97, 0xdb, 0x40, 0xde, 0x97, - 0xdb, 0x40, 0xde, 0x98, 0xde, 0x40, 0xde, 0x98, 0xde, 0x40, 0xdf, 0x98, - 0xde, 0x40, 0xdf, 0x98, 0xde, 0x40, 0xdf, 0x98, 0xde, 0x40, 0xdf, 0x98, - 0xde, 0x40, 0xe0, 0x98, 0xde, 0x40, 0xe0, 0x98, 0xde, 0x40, 0xe0, 0x98, - 0xde, 0x40, 0xe1, 0x98, 0xde, 0x40, 0xe1, 0x98, 0xe0, 0x40, 0xe1, 0x98, - 0xe0, 0x40, 0xe1, 0x98, 0xe0, 0x40, 0xe2, 0x98, 0xe0, 0x40, 0xe2, 0x98, - 0xe0, 0x40, 0xe2, 0x98, 0xe0, 0x40, 0xe2, 0x98, 0xe0, 0x40, 0xe3, 0x98, - 0xe0, 0x40, 0xe3, 0x98, 0xe0, 0x40, 0xe3, 0x99, 0xe3, 0x40, 0xe3, 0x98, - 0xe0, 0x40, 0xe4, 0x99, 0xe3, 0x40, 0xe4, 0x99, 0xe2, 0x40, 0xe4, 0x99, - 0xe3, 0x40, 0xe4, 0x99, 0xe2, 0x40, 0xe5, 0x99, 0xe3, 0x40, 0xe5, 0x99, - 0xe2, 0x40, 0xe5, 0x99, 0xe3, 0x40, 0xe5, 0x99, 0xe2, 0x40, 0xe6, 0x99, - 0xe3, 0x40, 0xe6, 0x9a, 0xe5, 0x40, 0xe6, 0x9a, 0xe5, 0x40, 0xe6, 0x9a, - 0xe5, 0x40, 0xe7, 0x9a, 0xe5, 0x40, 0xe7, 0x9a, 0xe5, 0x40, 0xe7, 0x9a, - 0xe5, 0x40, 0xe7, 0x9a, 0xe5, 0x40, 0xe8, 0x9a, 0xe5, 0x40, 0xe8, 0x9a, - 0xe5, 0x40, 0xe8, 0x9a, 0xe5, 0x40, 0xe8, 0x9b, 0xe7, 0x40, 0xe9, 0x9b, - 0xe7, 0x40, 0xe9, 0x9b, 0xe7, 0x40, 0xe9, 0x9b, 0xe7, 0x40, 0xe9, 0x9b, - 0xe7, 0x40, 0xea, 0x9b, 0xe7, 0x40, 0xea, 0x9b, 0xe7, 0x40, 0xea, 0x9b, - 0xe7, 0x40, 0xea, 0x9b, 0xe7, 0x40, 0xeb, 0x9c, 0xea, 0x40, 0xeb, 0x9c, - 0xea, 0x40, 0xeb, 0x9c, 0xea, 0x40, 0xeb, 0x9c, 0xea, 0x40, 0xec, 0x9c, - 0xea, 0x40, 0xec, 0x9c, 0xea, 0x40, 0xec, 0x9c, 0xea, 0x40, 0xec, 0x9c, - 0xea, 0x40, 0xec, 0x9c, 0xea, 0x40, 0xed, 0x9c, 0xea, 0x40, 0xed, 0x9d, - 0xec, 0x40, 0xed, 0x9c, 0xea, 0x40, 0xed, 0x9d, 0xec, 0x40, 0xee, 0x9d, - 0xec, 0x40, 0xee, 0x9d, 0xec, 0x40, 0xee, 0x9d, 0xec, 0x40, 0xee, 0x9d, - 0xec, 0x40, 0xef, 0x9d, 0xec, 0x40, 0xef, 0x9d, 0xec, 0x40, 0xef, 0x9d, - 0xee, 0x40, 0xef, 0x9d, 0xec, 0x40, 0xf0, 0x9d, 0xee, 0x40, 0xf0, 0x9d, - 0xee, 0x40, 0xf0, 0x9d, 0xee, 0x40, 0xf0, 0x9d, 0xee, 0x40, 0xf1, 0x9d, - 0xee, 0x40, 0xf1, 0x9d, 0xee, 0x40, 0xf1, 0x9d, 0xee, 0x40, 0xf1, 0x9e, - 0xf0, 0x40, 0xf2, 0x9e, 0xf1, 0x40, 0xf2, 0x9e, 0xf0, 0x40, 0xf2, 0x9e, - 0xf1, 0x40, 0xf2, 0x9e, 0xf0, 0x40, 0xf2, 0x9e, 0xf1, 0x40, 0xf3, 0x9e, - 0xf0, 0x40, 0xf3, 0x9e, 0xf1, 0x40, 0xf3, 0x9e, 0xf0, 0x40, 0xf3, 0x9e, - 0xf1, 0x40, 0xf4, 0x9e, 0xf0, 0x40, 0xf4, 0x9e, 0xf1, 0x40, 0xf4, 0x9f, - 0xf3, 0x40, 0xf4, 0x9f, 0xf2, 0x40, 0xf5, 0x9f, 0xf3, 0x40, 0xf5, 0x9f, - 0xf2, 0x40, 0xf5, 0x9f, 0xf3, 0x40, 0xf5, 0x9f, 0xf2, 0x40, 0xf5, 0x9f, - 0xf3, 0x40, 0xf6, 0x9f, 0xf2, 0x40, 0xf6, 0x9f, 0xf3, 0x40, 0xf6, 0xa0, - 0xf5, 0x40, 0xf6, 0x9f, 0xf3, 0x40, 0xf7, 0xa0, 0xf5, 0x40, 0xf7, 0xa0, - 0xf5, 0x40, 0xf7, 0xa0, 0xf5, 0x40, 0xf7, 0xa0, 0xf5, 0x40, 0xf8, 0xa0, - 0xf5, 0x40, 0xf8, 0xa0, 0xf5, 0x40, 0xf8, 0xa0, 0xf5, 0x40, 0xf8, 0xa1, - 0xf7, 0x40, 0xf8, 0xa1, 0xf7, 0x40, 0xf9, 0xa1, 0xf7, 0x40, 0xf9, 0xa1, - 0xf7, 0x40, 0xf9, 0xa1, 0xf7, 0x40, 0xf9, 0xa1, 0xf7, 0x40, 0xfa, 0xa1, - 0xf7, 0x40, 0xfa, 0xa1, 0xf7, 0x40, 0xfa, 0xa1, 0xf7, 0x40, 0xfa, 0xa1, - 0xf7, 0x40, 0xfa, 0xa1, 0xf9, 0x40, 0xfb, 0xa1, 0xf7, 0x40, 0xfb, 0xa1, - 0xf9, 0x40, 0xfb, 0xa1, 0xf9, 0x40, 0xfb, 0xa1, 0xf9, 0x40, 0xfc, 0xa1, - 0xf9, 0x40, 0xfc, 0xa1, 0xf9, 0x40, 0xfc, 0xa1, 0xf9, 0x40, 0xfc, 0xa1, - 0xf9, 0x40, 0xfc, 0xa1, 0xf9, 0x40, 0xfd, 0xa1, 0xf9, 0x40, 0xfd, 0xa2, - 0xfb, 0x40, 0xfd, 0xa2, 0xfb, 0x40, 0xfd, 0xa2, 0xfb, 0x40, 0xfe, 0xa2, - 0xfb, 0x40, 0xfe, 0xa2, 0xfb, 0x40, 0xfe, 0xa2, 0xfb, 0x40, 0xfe, 0xa2, - 0xfb, 0x40, 0xfe, 0xa2, 0xfb, 0x40, 0xff, 0xa2, 0xfb, 0x40, 0xff, 0xa2, - 0xfb, 0x40, 0x03, 0x95, 0x99, 0x41, 0x0a, 0x98, 0x98, 0x41, 0x0f, 0x95, - 0x99, 0x41, 0x14, 0x98, 0x98, 0x41, 0x17, 0x95, 0x99, 0x41, 0x1b, 0x98, - 0x98, 0x41, 0x1e, 0x95, 0x99, 0x41, 0x20, 0x98, 0x98, 0x41, 0x23, 0x95, - 0x99, 0x41, 0x25, 0x98, 0x98, 0x41, 0x27, 0x95, 0x99, 0x41, 0x29, 0x98, - 0x98, 0x41, 0x2b, 0x95, 0x99, 0x41, 0x2d, 0x98, 0x98, 0x41, 0x2f, 0x95, - 0x99, 0x41, 0x31, 0x98, 0x98, 0x41, 0x32, 0x95, 0x99, 0x41, 0x34, 0x98, - 0x98, 0x41, 0x35, 0x95, 0x99, 0x41, 0x37, 0x93, 0x99, 0x41, 0x38, 0x95, - 0x99, 0x41, 0x3a, 0x93, 0x99, 0x41, 0x3b, 0x95, 0x99, 0x41, 0x3c, 0x93, - 0x99, 0x41, 0x3e, 0x95, 0x99, 0x41, 0x3f, 0x93, 0x99, 0x41, 0x40, 0x95, - 0x99, 0x41, 0x42, 0x93, 0x99, 0x41, 0x43, 0x95, 0x99, 0x41, 0x44, 0x93, - 0x99, 0x41, 0x45, 0x95, 0x99, 0x41, 0x46, 0x93, 0x99, 0x41, 0x47, 0x95, - 0x99, 0x41, 0x48, 0x93, 0x99, 0x41, 0x49, 0x95, 0x99, 0x41, 0x4a, 0x93, - 0x99, 0x41, 0x4b, 0x95, 0x99, 0x41, 0x4c, 0x93, 0x99, 0x41, 0x4d, 0x95, - 0x99, 0x41, 0x4e, 0x93, 0x99, 0x41, 0x4f, 0x95, 0x99, 0x41, 0x50, 0x93, - 0x99, 0x41, 0x51, 0x95, 0x99, 0x41, 0x52, 0x93, 0x99, 0x41, 0x53, 0x95, - 0x99, 0x41, 0x54, 0x93, 0x99, 0x41, 0x55, 0x95, 0x99, 0x41, 0x56, 0x93, - 0x99, 0x41, 0x57, 0x95, 0x99, 0x41, 0x58, 0x93, 0x99, 0x41, 0x58, 0x95, - 0x99, 0x41, 0x59, 0x93, 0x99, 0x41, 0x5a, 0x95, 0x99, 0x41, 0x5b, 0x93, - 0x99, 0x41, 0x5c, 0x95, 0x99, 0x41, 0x5d, 0x93, 0x99, 0x41, 0x5d, 0x90, - 0x9a, 0x41, 0x5e, 0x93, 0x99, 0x41, 0x5f, 0x90, 0x9a, 0x41, 0x60, 0x93, - 0x99, 0x41, 0x60, 0x90, 0x9a, 0x41, 0x61, 0x93, 0x99, 0x41, 0x62, 0x90, - 0x9a, 0x41, 0x63, 0x93, 0x99, 0x41, 0x63, 0x90, 0x9a, 0x41, 0x64, 0x93, - 0x99, 0x41, 0x65, 0x90, 0x9a, 0x41, 0x66, 0x93, 0x99, 0x41, 0x66, 0x90, - 0x9a, 0x41, 0x67, 0x93, 0x99, 0x41, 0x68, 0x90, 0x9a, 0x41, 0x68, 0x93, - 0x99, 0x41, 0x69, 0x90, 0x9a, 0x41, 0x6a, 0x93, 0x99, 0x41, 0x6a, 0x90, - 0x9a, 0x41, 0x6b, 0x93, 0x99, 0x41, 0x6c, 0x90, 0x9a, 0x41, 0x6c, 0x93, - 0x99, 0x41, 0x6d, 0x90, 0x9a, 0x41, 0x6e, 0x93, 0x99, 0x41, 0x6e, 0x90, - 0x9a, 0x41, 0x6f, 0x93, 0x99, 0x41, 0x70, 0x90, 0x9a, 0x41, 0x70, 0x93, - 0x99, 0x41, 0x71, 0x90, 0x9a, 0x41, 0x72, 0x93, 0x99, 0x41, 0x72, 0x90, - 0x9a, 0x41, 0x73, 0x93, 0x99, 0x41, 0x73, 0x90, 0x9a, 0x41, 0x74, 0x8c, - 0x9a, 0x41, 0x75, 0x90, 0x9a, 0x41, 0x75, 0x8c, 0x9a, 0x41, 0x76, 0x90, - 0x9a, 0x41, 0x76, 0x8c, 0x9a, 0x41, 0x77, 0x90, 0x9a, 0x41, 0x78, 0x8c, - 0x9a, 0x41, 0x78, 0x90, 0x9a, 0x41, 0x79, 0x8c, 0x9a, 0x41, 0x79, 0x90, - 0x9a, 0x41, 0x7a, 0x8c, 0x9a, 0x41, 0x7a, 0x90, 0x9a, 0x41, 0x7b, 0x8c, - 0x9a, 0x41, 0x7c, 0x90, 0x9a, 0x41, 0x7c, 0x8c, 0x9a, 0x41, 0x7d, 0x90, - 0x9a, 0x41, 0x7d, 0x8c, 0x9a, 0x41, 0x7e, 0x90, 0x9a, 0x41, 0x7e, 0x8c, - 0x9a, 0x41, 0x7f, 0x90, 0x9a, 0x41, 0x7f, 0x8c, 0x9a, 0x41, 0x80, 0x90, - 0x9a, 0x41, 0x81, 0x8c, 0x9a, 0x41, 0x81, 0x90, 0x9a, 0x41, 0x82, 0x8c, - 0x9a, 0x41, 0x82, 0x90, 0x9a, 0x41, 0x83, 0x8c, 0x9a, 0x41, 0x83, 0x90, - 0x9a, 0x41, 0x84, 0x8c, 0x9a, 0x41, 0x84, 0x90, 0x9a, 0x41, 0x85, 0x8c, - 0x9a, 0x41, 0x85, 0x90, 0x9a, 0x41, 0x86, 0x8c, 0x9a, 0x41, 0x86, 0x90, - 0x9a, 0x41, 0x87, 0x8c, 0x9a, 0x41, 0x87, 0x90, 0x9a, 0x41, 0x88, 0x8c, - 0x9a, 0x41, 0x88, 0x90, 0x9a, 0x41, 0x89, 0x8c, 0x9a, 0x41, 0x89, 0x90, - 0x9a, 0x41, 0x8a, 0x8c, 0x9a, 0x41, 0x8a, 0x8a, 0x9a, 0x41, 0x8b, 0x8c, - 0x9a, 0x41, 0x8b, 0x8a, 0x9a, 0x41, 0x8c, 0x8c, 0x9a, 0x41, 0x8c, 0x8a, - 0x9a, 0x41, 0x8d, 0x8c, 0x9a, 0x41, 0x8d, 0x8a, 0x9a, 0x41, 0x8e, 0x8c, - 0x9a, 0x41, 0x8e, 0x8a, 0x9a, 0x41, 0x8e, 0x8c, 0x9a, 0x41, 0x8f, 0x8a, - 0x9a, 0x41, 0x8f, 0x8c, 0x9a, 0x41, 0x90, 0x8a, 0x9a, 0x41, 0x90, 0x8c, - 0x9a, 0x41, 0x91, 0x8a, 0x9a, 0x41, 0x91, 0x8c, 0x9a, 0x41, 0x92, 0x8a, - 0x9a, 0x41, 0x92, 0x8c, 0x9a, 0x41, 0x93, 0x8a, 0x9a, 0x41, 0x93, 0x8c, - 0x9a, 0x41, 0x94, 0x8a, 0x9a, 0x41, 0x94, 0x8c, 0x9a, 0x41, 0x94, 0x8a, - 0x9a, 0x41, 0x95, 0x8c, 0x9a, 0x41, 0x95, 0x8a, 0x9a, 0x41, 0x96, 0x8c, - 0x9a, 0x41, 0x96, 0x8a, 0x9a, 0x41, 0x97, 0x8c, 0x9a, 0x41, 0x97, 0x8a, - 0x9a, 0x41, 0x98, 0x8c, 0x9a, 0x41, 0x98, 0x8a, 0x9a, 0x41, 0x98, 0x8c, - 0x9a, 0x41, 0x99, 0x8a, 0x9a, 0x41, 0x99, 0x8a, 0x9b, 0x41, 0x9a, 0x8a, - 0x9a, 0x41, 0x9a, 0x8a, 0x9b, 0x41, 0x9a, 0x8a, 0x9a, 0x41, 0x9a, 0x8a, - 0x9b, 0x41, 0x9a, 0x8a, 0x9b, 0x41, 0x9a, 0x8a, 0x9c, 0x41, 0x9a, 0x8a, - 0x9c, 0x3f, 0x9a, 0x8a, 0x9d, 0x41, 0x9a, 0x8a, 0x9d, 0x3f, 0x9a, 0x8a, - 0x9d, 0x41, 0x9f, 0x8a, 0x9e, 0x45, 0x9e, 0x8a, 0x9e, 0x45, 0x9f, 0x8a, - 0x9f, 0x45, 0x9f, 0x8a, 0x9f, 0x45, 0x9f, 0x8a, 0x9f, 0x45, 0xa0, 0x8a, - 0xa0, 0x45, 0xa0, 0x8a, 0xa0, 0x45, 0xa1, 0x8a, 0xa1, 0x45, 0xa1, 0x8a, - 0xa1, 0x45, 0xa1, 0x8a, 0xa1, 0x45, 0xa1, 0x8a, 0xa2, 0x45, 0xa1, 0x8a, - 0xa2, 0x45, 0xa1, 0x8a, 0xa3, 0x45, 0xa1, 0x8a, 0xa3, 0x45, 0xa1, 0x8a, - 0xa3, 0x45, 0xa1, 0x8a, 0xa4, 0x45, 0xa4, 0x8a, 0xa4, 0x46, 0xa5, 0x8a, - 0xa5, 0x3c, 0xa5, 0x8a, 0xa5, 0x3c, 0xa5, 0x8a, 0xa5, 0x3c, 0xa6, 0x8a, - 0xa6, 0x3c, 0xa6, 0x8a, 0xa6, 0x3c, 0xa8, 0x8a, 0xa6, 0x3d, 0xa8, 0x8a, - 0xa7, 0x3d, 0xa8, 0x8a, 0xa7, 0x3d, 0xa8, 0x8a, 0xa8, 0x3d, 0xa8, 0x8a, - 0xa8, 0x3d, 0xa8, 0x8a, 0xa8, 0x3d, 0xa9, 0x8a, 0xa9, 0x3d, 0xa9, 0x8a, - 0xa9, 0x3d, 0xaa, 0x8a, 0xaa, 0x3d, 0xaa, 0x8a, 0xaa, 0x3d, 0xac, 0x8a, - 0xaa, 0x3e, 0xac, 0x8a, 0xab, 0x3e, 0xac, 0x8a, 0xab, 0x3e, 0xac, 0x8a, - 0xab, 0x3e, 0xac, 0x8a, 0xac, 0x3e, 0xac, 0x8a, 0xac, 0x3e, 0xac, 0x8a, - 0xac, 0x3e, 0xad, 0x8a, 0xad, 0x3e, 0xad, 0x8a, 0xad, 0x3e, 0xaf, 0x8a, - 0xae, 0x3f, 0xaf, 0x8a, 0xae, 0x3f, 0xaf, 0x8a, 0xae, 0x3f, 0xaf, 0x8a, - 0xaf, 0x3f, 0xaf, 0x8a, 0xaf, 0x3f, 0xaf, 0x8a, 0xaf, 0x3f, 0xb0, 0x8a, - 0xb0, 0x3f, 0xb0, 0x8a, 0xb0, 0x3f, 0xb0, 0x8a, 0xb0, 0x3f, 0xb1, 0x8a, - 0xb1, 0x3f, 0xb1, 0x8a, 0xb1, 0x3f, 0xb2, 0x8a, 0xb2, 0x3f, 0xb3, 0x8a, - 0xb2, 0x40, 0xb3, 0x8a, 0xb2, 0x40, 0xb3, 0x8a, 0xb3, 0x40, 0xb3, 0x8a, - 0xb3, 0x40, 0xb3, 0x8a, 0xb3, 0x40, 0xb4, 0x8a, 0xb4, 0x40, 0xb4, 0x8a, - 0xb4, 0x40, 0xb4, 0x8a, 0xb4, 0x40, 0xb5, 0x8a, 0xb5, 0x40, 0xb5, 0x8a, - 0xb5, 0x40, 0xb5, 0x8a, 0xb5, 0x40, 0xb6, 0x8b, 0xb6, 0x41, 0xb6, 0x8b, - 0xb6, 0x41, 0xb6, 0x8b, 0xb6, 0x41, 0xb7, 0x8b, 0xb7, 0x41, 0xb7, 0x8b, - 0xb7, 0x41, 0xb7, 0x8b, 0xb7, 0x41, 0xb8, 0x8b, 0xb8, 0x41, 0xb8, 0x8b, - 0xb8, 0x41, 0xb8, 0x8b, 0xb8, 0x41, 0xb9, 0x8b, 0xb8, 0x41, 0xb9, 0x8b, - 0xb8, 0x41, 0xb9, 0x8c, 0xb9, 0x41, 0xba, 0x8c, 0xba, 0x41, 0xba, 0x8c, - 0xba, 0x41, 0xba, 0x8c, 0xba, 0x41, 0xbb, 0x8c, 0xbb, 0x41, 0xbb, 0x8c, - 0xbb, 0x41, 0xbb, 0x8c, 0xbb, 0x41, 0xbc, 0x8c, 0xbc, 0x41, 0xbc, 0x8c, - 0xbb, 0x41, 0xbc, 0x8c, 0xbc, 0x41, 0xbd, 0x8c, 0xbb, 0x41, 0xbd, 0x8c, - 0xbc, 0x41, 0xbd, 0x8d, 0xbd, 0x41, 0xbe, 0x8d, 0xbe, 0x41, 0xbe, 0x8d, - 0xbe, 0x41, 0xbe, 0x8d, 0xbe, 0x41, 0xbf, 0x8d, 0xbf, 0x41, 0xbf, 0x8d, - 0xbe, 0x41, 0xbf, 0x8d, 0xbf, 0x41, 0xc0, 0x8d, 0xbe, 0x41, 0xc0, 0x8d, - 0xbf, 0x41, 0xc0, 0x8e, 0xc0, 0x41, 0xc1, 0x8e, 0xc1, 0x41, 0xc1, 0x8e, - 0xc1, 0x41, 0xc1, 0x8e, 0xc1, 0x41, 0xc1, 0x8e, 0xc1, 0x41, 0xc2, 0x8e, - 0xc1, 0x41, 0xc2, 0x8e, 0xc1, 0x41, 0xc2, 0x8e, 0xc1, 0x41, 0xc3, 0x8e, - 0xc1, 0x41, 0xc3, 0x8f, 0xc3, 0x41, 0xc3, 0x8f, 0xc3, 0x41, 0xc4, 0x8f, - 0xc4, 0x41, 0xc4, 0x8f, 0xc4, 0x41, 0xc4, 0x8f, 0xc4, 0x41, 0xc5, 0x8f, - 0xc5, 0x41, 0xc5, 0x8f, 0xc4, 0x41, 0xc5, 0x8f, 0xc5, 0x41, 0xc6, 0x8f, - 0xc4, 0x41, 0xc6, 0x8f, 0xc5, 0x41, 0xc6, 0x8f, 0xc4, 0x41, 0xc6, 0x8f, - 0xc5, 0x41, 0xc7, 0x90, 0xc7, 0x41, 0xc7, 0x90, 0xc7, 0x41, 0xc7, 0x90, - 0xc7, 0x41, 0xc8, 0x90, 0xc7, 0x41, 0xc8, 0x90, 0xc7, 0x41, 0xc8, 0x90, - 0xc7, 0x41, 0xc9, 0x90, 0xc7, 0x41, 0xc9, 0x90, 0xc7, 0x41, 0xc9, 0x90, - 0xc7, 0x41, 0xc9, 0x91, 0xc9, 0x41, 0xca, 0x91, 0xca, 0x41, 0xca, 0x91, - 0xca, 0x41, 0xca, 0x91, 0xca, 0x41, 0xcb, 0x91, 0xca, 0x41, 0xcb, 0x91, - 0xca, 0x41, 0xcb, 0x91, 0xca, 0x41, 0xcc, 0x91, 0xca, 0x41, 0xcc, 0x91, - 0xca, 0x41, 0xcc, 0x92, 0xcc, 0x41, 0xcc, 0x92, 0xcc, 0x41, 0xcd, 0x92, - 0xcd, 0x41, 0xcd, 0x92, 0xcd, 0x41, 0xcd, 0x92, 0xcd, 0x41, 0xce, 0x92, - 0xcd, 0x41, 0xce, 0x92, 0xcd, 0x41, 0xce, 0x92, 0xcd, 0x41, 0xce, 0x92, - 0xcd, 0x41, 0xcf, 0x92, 0xcd, 0x41, 0xcf, 0x92, 0xcd, 0x41, 0xcf, 0x92, - 0xcd, 0x41, 0xd0, 0x93, 0xd0, 0x41, 0xd0, 0x93, 0xcf, 0x41, 0xd0, 0x93, - 0xd0, 0x41, 0xd0, 0x93, 0xcf, 0x41, 0xd1, 0x93, 0xd0, 0x41, 0xd1, 0x93, - 0xcf, 0x41, 0xd1, 0x93, 0xd0, 0x41, 0xd2, 0x93, 0xcf, 0x41, 0xd2, 0x93, - 0xd0, 0x41, 0xd2, 0x94, 0xd2, 0x41, 0xd2, 0x94, 0xd2, 0x41, 0xd3, 0x94, - 0xd2, 0x41, 0xd3, 0x94, 0xd2, 0x41, 0xd3, 0x94, 0xd2, 0x41, 0xd4, 0x94, - 0xd2, 0x41, 0xd4, 0x94, 0xd2, 0x41, 0xd4, 0x94, 0xd2, 0x41, 0xd4, 0x94, - 0xd2, 0x41, 0xd5, 0x94, 0xd2, 0x41, 0xd5, 0x94, 0xd5, 0x41, 0xd5, 0x94, - 0xd5, 0x41, 0xd6, 0x94, 0xd5, 0x41, 0xd6, 0x94, 0xd5, 0x41, 0xd6, 0x94, - 0xd5, 0x41, 0xd6, 0x94, 0xd5, 0x41, 0xd7, 0x94, 0xd5, 0x41, 0xd7, 0x94, - 0xd5, 0x41, 0xd7, 0x94, 0xd5, 0x41, 0xd7, 0x95, 0xd7, 0x41, 0xd8, 0x95, - 0xd7, 0x41, 0xd8, 0x95, 0xd7, 0x41, 0xd8, 0x95, 0xd7, 0x41, 0xd9, 0x95, - 0xd7, 0x41, 0xd9, 0x95, 0xd7, 0x41, 0xd9, 0x95, 0xd7, 0x41, 0xd9, 0x95, - 0xd7, 0x41, 0xda, 0x95, 0xd7, 0x41, 0xda, 0x96, 0xda, 0x41, 0xda, 0x96, - 0xda, 0x41, 0xda, 0x96, 0xda, 0x41, 0xdb, 0x96, 0xda, 0x41, 0xdb, 0x96, - 0xda, 0x41, 0xdb, 0x96, 0xda, 0x41, 0xdb, 0x96, 0xda, 0x41, 0xdc, 0x96, - 0xda, 0x41, 0xdc, 0x96, 0xda, 0x41, 0xdc, 0x96, 0xda, 0x41, 0xdd, 0x96, - 0xda, 0x41, 0xdd, 0x96, 0xda, 0x41, 0xdd, 0x97, 0xdd, 0x41, 0xdd, 0x97, - 0xdc, 0x41, 0xde, 0x97, 0xdd, 0x41, 0xde, 0x97, 0xdc, 0x41, 0xde, 0x97, - 0xdd, 0x41, 0xde, 0x97, 0xdc, 0x41, 0xdf, 0x97, 0xdd, 0x41, 0xdf, 0x97, - 0xdc, 0x41, 0xdf, 0x97, 0xdd, 0x41, 0xdf, 0x98, 0xdf, 0x41, 0xe0, 0x98, - 0xdf, 0x41, 0xe0, 0x98, 0xdf, 0x41, 0xe0, 0x98, 0xdf, 0x41, 0xe1, 0x98, - 0xdf, 0x41, 0xe1, 0x98, 0xdf, 0x41, 0xe1, 0x98, 0xdf, 0x41, 0xe1, 0x98, - 0xdf, 0x41, 0xe2, 0x98, 0xdf, 0x41, 0xe2, 0x99, 0xe1, 0x41, 0xe2, 0x99, - 0xe2, 0x41, 0xe2, 0x99, 0xe1, 0x41, 0xe3, 0x99, 0xe2, 0x41, 0xe3, 0x99, - 0xe1, 0x41, 0xe3, 0x99, 0xe2, 0x41, 0xe3, 0x99, 0xe1, 0x41, 0xe4, 0x99, - 0xe2, 0x41, 0xe4, 0x99, 0xe1, 0x41, 0xe4, 0x99, 0xe2, 0x41, 0xe4, 0x9a, - 0xe4, 0x41, 0xe5, 0x99, 0xe2, 0x41, 0xe5, 0x9a, 0xe4, 0x41, 0xe5, 0x9a, - 0xe4, 0x41, 0xe5, 0x9a, 0xe4, 0x41, 0xe6, 0x9a, 0xe4, 0x41, 0xe6, 0x9a, - 0xe4, 0x41, 0xe6, 0x9a, 0xe4, 0x41, 0xe6, 0x9a, 0xe4, 0x41, 0xe7, 0x9a, - 0xe4, 0x41, 0xe7, 0x9a, 0xe4, 0x41, 0xe7, 0x9a, 0xe6, 0x41, 0xe7, 0x9a, - 0xe6, 0x41, 0xe8, 0x9a, 0xe6, 0x41, 0xe8, 0x9a, 0xe6, 0x41, 0xe8, 0x9a, - 0xe6, 0x41, 0xe8, 0x9a, 0xe6, 0x41, 0xe9, 0x9a, 0xe6, 0x41, 0xe9, 0x9a, - 0xe6, 0x41, 0xe9, 0x9a, 0xe6, 0x41, 0xe9, 0x9b, 0xe8, 0x41, 0xea, 0x9b, - 0xe9, 0x41, 0xea, 0x9b, 0xe8, 0x41, 0xea, 0x9b, 0xe9, 0x41, 0xea, 0x9b, - 0xe8, 0x41, 0xeb, 0x9b, 0xe9, 0x41, 0xeb, 0x9b, 0xe8, 0x41, 0xeb, 0x9b, - 0xe9, 0x41, 0xeb, 0x9b, 0xe8, 0x41, 0xec, 0x9b, 0xe9, 0x41, 0xec, 0x9c, - 0xeb, 0x41, 0xec, 0x9c, 0xeb, 0x41, 0xec, 0x9c, 0xeb, 0x41, 0xec, 0x9c, - 0xeb, 0x41, 0xed, 0x9c, 0xeb, 0x41, 0xed, 0x9c, 0xeb, 0x41, 0xed, 0x9c, - 0xeb, 0x41, 0xed, 0x9c, 0xeb, 0x41, 0xee, 0x9c, 0xeb, 0x41, 0xee, 0x9d, - 0xed, 0x41, 0xee, 0x9d, 0xed, 0x41, 0xee, 0x9d, 0xed, 0x41, 0xef, 0x9d, - 0xed, 0x41, 0xef, 0x9d, 0xed, 0x41, 0xef, 0x9d, 0xed, 0x41, 0xef, 0x9d, - 0xed, 0x41, 0xf0, 0x9d, 0xed, 0x41, 0xf0, 0x9d, 0xed, 0x41, 0xf0, 0x9d, - 0xed, 0x41, 0xf0, 0x9e, 0xef, 0x41, 0xf1, 0x9d, 0xed, 0x41, 0xf1, 0x9e, - 0xef, 0x41, 0xf1, 0x9e, 0xef, 0x41, 0xf1, 0x9e, 0xef, 0x41, 0xf2, 0x9e, - 0xef, 0x41, 0xf2, 0x9e, 0xef, 0x41, 0xf2, 0x9e, 0xef, 0x41, 0xf2, 0x9e, - 0xef, 0x41, 0xf2, 0x9f, 0xf2, 0x41, 0xf3, 0x9e, 0xef, 0x41, 0xf3, 0x9f, - 0xf2, 0x41, 0xf3, 0x9f, 0xf1, 0x41, 0xf3, 0x9f, 0xf2, 0x41, 0xf4, 0x9f, - 0xf1, 0x41, 0xf4, 0x9f, 0xf2, 0x41, 0xf4, 0x9f, 0xf1, 0x41, 0xf4, 0x9f, - 0xf2, 0x41, 0xf5, 0x9f, 0xf1, 0x41, 0xf5, 0x9f, 0xf2, 0x41, 0xf5, 0x9f, - 0xf4, 0x41, 0xf5, 0x9f, 0xf4, 0x41, 0xf5, 0x9f, 0xf4, 0x41, 0xf6, 0x9f, - 0xf4, 0x41, 0xf6, 0x9f, 0xf4, 0x41, 0xf6, 0x9f, 0xf4, 0x41, 0xf6, 0x9f, - 0xf4, 0x41, 0xf7, 0x9f, 0xf4, 0x41, 0xf7, 0x9f, 0xf4, 0x41, 0xf7, 0x9f, - 0xf4, 0x41, 0xf7, 0xa0, 0xf6, 0x41, 0xf8, 0x9f, 0xf4, 0x41, 0xf8, 0xa0, - 0xf6, 0x41, 0xf8, 0xa0, 0xf6, 0x41, 0xf8, 0xa0, 0xf6, 0x41, 0xf8, 0xa0, - 0xf6, 0x41, 0xf9, 0xa0, 0xf6, 0x41, 0xf9, 0xa0, 0xf6, 0x41, 0xf9, 0xa0, - 0xf6, 0x41, 0xf9, 0xa1, 0xf8, 0x41, 0xfa, 0xa0, 0xf6, 0x41, 0xfa, 0xa1, - 0xf8, 0x41, 0xfa, 0xa1, 0xf8, 0x41, 0xfa, 0xa1, 0xf8, 0x41, 0xfa, 0xa1, - 0xf8, 0x41, 0xfb, 0xa1, 0xf8, 0x41, 0xfb, 0xa1, 0xf8, 0x41, 0xfb, 0xa1, - 0xf8, 0x41, 0xfb, 0xa2, 0xfa, 0x41, 0xfc, 0xa2, 0xfa, 0x41, 0xfc, 0xa2, - 0xfa, 0x41, 0xfc, 0xa2, 0xfa, 0x41, 0xfc, 0xa2, 0xfa, 0x41, 0xfc, 0xa2, - 0xfa, 0x41, 0xfd, 0xa2, 0xfa, 0x41, 0xfd, 0xa2, 0xfa, 0x41, 0xfd, 0xa2, - 0xfa, 0x41, 0xfd, 0xa2, 0xfa, 0x41, 0xfe, 0xa2, 0xfa, 0x41, 0xfe, 0xa2, - 0xfa, 0x41, 0xfe, 0xa2, 0xfa, 0x41, 0xfe, 0xa2, 0xfa, 0x41, 0xfe, 0xa2, - 0xfa, 0x41, 0xff, 0xa2, 0xfa, 0x41, 0xff, 0xa3, 0xfb, 0x41, 0x03, 0x96, - 0x99, 0x41, 0x0a, 0x98, 0x98, 0x41, 0x0f, 0x96, 0x99, 0x41, 0x14, 0x92, - 0x99, 0x41, 0x17, 0x96, 0x99, 0x41, 0x1b, 0x92, 0x99, 0x41, 0x1e, 0x96, - 0x99, 0x41, 0x20, 0x92, 0x99, 0x41, 0x23, 0x96, 0x99, 0x41, 0x25, 0x92, - 0x99, 0x41, 0x27, 0x96, 0x99, 0x41, 0x29, 0x92, 0x99, 0x41, 0x2b, 0x96, - 0x99, 0x41, 0x2d, 0x92, 0x99, 0x41, 0x2f, 0x96, 0x99, 0x41, 0x31, 0x92, - 0x99, 0x41, 0x32, 0x96, 0x99, 0x41, 0x34, 0x92, 0x99, 0x41, 0x35, 0x96, - 0x99, 0x41, 0x37, 0x92, 0x99, 0x41, 0x38, 0x96, 0x99, 0x41, 0x3a, 0x92, - 0x99, 0x41, 0x3b, 0x96, 0x99, 0x41, 0x3c, 0x92, 0x99, 0x41, 0x3e, 0x96, - 0x99, 0x41, 0x3f, 0x92, 0x99, 0x41, 0x40, 0x96, 0x99, 0x41, 0x42, 0x92, - 0x99, 0x41, 0x43, 0x96, 0x99, 0x41, 0x44, 0x92, 0x99, 0x41, 0x45, 0x96, - 0x99, 0x41, 0x46, 0x92, 0x99, 0x41, 0x47, 0x96, 0x99, 0x41, 0x48, 0x92, - 0x99, 0x41, 0x49, 0x96, 0x99, 0x41, 0x4a, 0x92, 0x99, 0x41, 0x4b, 0x96, - 0x99, 0x41, 0x4c, 0x92, 0x99, 0x41, 0x4d, 0x96, 0x99, 0x41, 0x4e, 0x92, - 0x99, 0x41, 0x4f, 0x96, 0x99, 0x41, 0x50, 0x92, 0x99, 0x41, 0x51, 0x96, - 0x99, 0x41, 0x52, 0x92, 0x99, 0x41, 0x53, 0x8f, 0x9a, 0x41, 0x54, 0x92, - 0x99, 0x41, 0x55, 0x8f, 0x9a, 0x41, 0x56, 0x92, 0x99, 0x41, 0x57, 0x8f, - 0x9a, 0x41, 0x58, 0x92, 0x99, 0x41, 0x58, 0x8f, 0x9a, 0x41, 0x59, 0x92, - 0x99, 0x41, 0x5a, 0x8f, 0x9a, 0x41, 0x5b, 0x92, 0x99, 0x41, 0x5c, 0x8f, - 0x9a, 0x41, 0x5d, 0x92, 0x99, 0x41, 0x5d, 0x8f, 0x9a, 0x41, 0x5e, 0x92, - 0x99, 0x41, 0x5f, 0x8f, 0x9a, 0x41, 0x60, 0x92, 0x99, 0x41, 0x60, 0x8f, - 0x9a, 0x41, 0x61, 0x92, 0x99, 0x41, 0x62, 0x8f, 0x9a, 0x41, 0x63, 0x92, - 0x99, 0x41, 0x63, 0x8f, 0x9a, 0x41, 0x64, 0x92, 0x99, 0x41, 0x65, 0x8f, - 0x9a, 0x41, 0x66, 0x92, 0x99, 0x41, 0x66, 0x8f, 0x9a, 0x41, 0x67, 0x92, - 0x99, 0x41, 0x68, 0x8f, 0x9a, 0x41, 0x68, 0x92, 0x99, 0x41, 0x69, 0x8f, - 0x9a, 0x41, 0x6a, 0x92, 0x99, 0x41, 0x6a, 0x8f, 0x9a, 0x41, 0x6b, 0x92, - 0x99, 0x41, 0x6c, 0x8f, 0x9a, 0x41, 0x6c, 0x92, 0x99, 0x41, 0x6d, 0x8f, - 0x9a, 0x41, 0x6e, 0x92, 0x99, 0x41, 0x6e, 0x8f, 0x9a, 0x41, 0x6f, 0x92, - 0x99, 0x41, 0x70, 0x8f, 0x9a, 0x41, 0x70, 0x92, 0x99, 0x41, 0x71, 0x8f, - 0x9a, 0x41, 0x72, 0x92, 0x99, 0x41, 0x72, 0x8f, 0x9a, 0x41, 0x73, 0x92, - 0x99, 0x41, 0x73, 0x8f, 0x9a, 0x41, 0x74, 0x92, 0x99, 0x41, 0x75, 0x8f, - 0x9a, 0x41, 0x75, 0x92, 0x99, 0x41, 0x76, 0x8f, 0x9a, 0x41, 0x76, 0x92, - 0x99, 0x41, 0x77, 0x8f, 0x9a, 0x41, 0x78, 0x92, 0x99, 0x41, 0x78, 0x8f, - 0x9a, 0x41, 0x79, 0x92, 0x99, 0x41, 0x79, 0x8f, 0x9a, 0x41, 0x7a, 0x92, - 0x99, 0x41, 0x7a, 0x8f, 0x9a, 0x41, 0x7b, 0x92, 0x99, 0x41, 0x7c, 0x8f, - 0x9a, 0x41, 0x7c, 0x92, 0x99, 0x41, 0x7d, 0x8f, 0x9a, 0x41, 0x7d, 0x8d, - 0x9a, 0x41, 0x7e, 0x8f, 0x9a, 0x41, 0x7e, 0x8d, 0x9a, 0x41, 0x7f, 0x8f, - 0x9a, 0x41, 0x7f, 0x8d, 0x9a, 0x41, 0x80, 0x8f, 0x9a, 0x41, 0x81, 0x8d, - 0x9a, 0x41, 0x81, 0x8f, 0x9a, 0x41, 0x82, 0x8d, 0x9a, 0x41, 0x82, 0x8f, - 0x9a, 0x41, 0x83, 0x8d, 0x9a, 0x41, 0x83, 0x8f, 0x9a, 0x41, 0x84, 0x8d, - 0x9a, 0x41, 0x84, 0x8f, 0x9a, 0x41, 0x85, 0x8d, 0x9a, 0x41, 0x85, 0x8f, - 0x9a, 0x41, 0x86, 0x8d, 0x9a, 0x41, 0x86, 0x8f, 0x9a, 0x41, 0x87, 0x8d, - 0x9a, 0x41, 0x87, 0x8f, 0x9a, 0x41, 0x88, 0x8d, 0x9a, 0x41, 0x88, 0x8f, - 0x9a, 0x41, 0x89, 0x8d, 0x9a, 0x41, 0x89, 0x8f, 0x9a, 0x41, 0x8a, 0x8d, - 0x9a, 0x41, 0x8a, 0x8f, 0x9a, 0x41, 0x8b, 0x8d, 0x9a, 0x41, 0x8b, 0x8f, - 0x9a, 0x41, 0x8c, 0x8d, 0x9a, 0x41, 0x8c, 0x8f, 0x9a, 0x41, 0x8d, 0x8d, - 0x9a, 0x41, 0x8d, 0x8f, 0x9a, 0x41, 0x8e, 0x8d, 0x9a, 0x41, 0x8e, 0x8f, - 0x9a, 0x41, 0x8e, 0x8d, 0x9a, 0x41, 0x8f, 0x8f, 0x9a, 0x41, 0x8f, 0x8d, - 0x9a, 0x41, 0x90, 0x8b, 0x9a, 0x41, 0x90, 0x8d, 0x9a, 0x41, 0x91, 0x8b, - 0x9a, 0x41, 0x91, 0x8d, 0x9a, 0x41, 0x92, 0x8b, 0x9a, 0x41, 0x92, 0x8d, - 0x9a, 0x41, 0x93, 0x8b, 0x9a, 0x41, 0x93, 0x8d, 0x9a, 0x41, 0x94, 0x8b, - 0x9a, 0x41, 0x94, 0x8d, 0x9a, 0x41, 0x94, 0x8b, 0x9a, 0x41, 0x95, 0x8d, - 0x9a, 0x41, 0x95, 0x8b, 0x9a, 0x41, 0x96, 0x8d, 0x9a, 0x41, 0x96, 0x8b, - 0x9a, 0x41, 0x97, 0x8d, 0x9a, 0x41, 0x97, 0x8b, 0x9a, 0x41, 0x98, 0x8d, - 0x9a, 0x41, 0x98, 0x8b, 0x9a, 0x41, 0x98, 0x8d, 0x9a, 0x41, 0x99, 0x8b, - 0x9a, 0x41, 0x99, 0x8b, 0x9b, 0x41, 0x9a, 0x8b, 0x9a, 0x41, 0x9a, 0x8b, - 0x9b, 0x41, 0x9a, 0x8b, 0x9a, 0x41, 0x9a, 0x8b, 0x9b, 0x41, 0x9a, 0x8b, - 0x9b, 0x41, 0x9a, 0x8b, 0x9c, 0x41, 0x9a, 0x8b, 0x9c, 0x40, 0x9a, 0x8b, - 0x9d, 0x41, 0x9a, 0x8b, 0x9d, 0x40, 0x9e, 0x8b, 0x9d, 0x44, 0x9f, 0x8b, - 0x9e, 0x44, 0x9e, 0x8b, 0x9e, 0x44, 0x9f, 0x8b, 0x9f, 0x44, 0x9f, 0x8b, - 0x9f, 0x44, 0x9f, 0x8b, 0x9f, 0x44, 0x9f, 0x8b, 0xa0, 0x44, 0x9f, 0x8b, - 0xa0, 0x44, 0x9f, 0x8b, 0xa1, 0x44, 0xa1, 0x8b, 0xa1, 0x45, 0xa1, 0x8b, - 0xa1, 0x45, 0xa2, 0x8b, 0xa2, 0x45, 0xa2, 0x8b, 0xa2, 0x45, 0xa3, 0x8b, - 0xa3, 0x45, 0xa3, 0x8b, 0xa3, 0x45, 0xa3, 0x8b, 0xa3, 0x45, 0xa3, 0x8b, - 0xa4, 0x45, 0xa3, 0x8b, 0xa4, 0x45, 0xa3, 0x8b, 0xa5, 0x45, 0xa3, 0x8b, - 0xa5, 0x45, 0xa3, 0x8b, 0xa5, 0x45, 0xa3, 0x8b, 0xa6, 0x45, 0xa6, 0x8b, - 0xa6, 0x46, 0xa6, 0x8b, 0xa6, 0x3d, 0xa7, 0x8b, 0xa7, 0x3d, 0xa7, 0x8b, - 0xa7, 0x3d, 0xa8, 0x8b, 0xa8, 0x3d, 0xa8, 0x8b, 0xa8, 0x3d, 0xaa, 0x8b, - 0xa8, 0x3e, 0xaa, 0x8b, 0xa9, 0x3e, 0xaa, 0x8b, 0xa9, 0x3e, 0xaa, 0x8b, - 0xaa, 0x3e, 0xaa, 0x8b, 0xaa, 0x3e, 0xaa, 0x8b, 0xaa, 0x3e, 0xab, 0x8b, - 0xab, 0x3e, 0xab, 0x8b, 0xab, 0x3e, 0xab, 0x8b, 0xab, 0x3e, 0xac, 0x8b, - 0xac, 0x3e, 0xae, 0x8b, 0xac, 0x3f, 0xae, 0x8b, 0xac, 0x3f, 0xae, 0x8b, - 0xad, 0x3f, 0xae, 0x8b, 0xad, 0x3f, 0xae, 0x8b, 0xae, 0x3f, 0xae, 0x8b, - 0xae, 0x3f, 0xae, 0x8b, 0xae, 0x3f, 0xaf, 0x8b, 0xaf, 0x3f, 0xaf, 0x8b, - 0xaf, 0x3f, 0xb1, 0x8b, 0xaf, 0x40, 0xb1, 0x8b, 0xb0, 0x40, 0xb1, 0x8b, - 0xb0, 0x40, 0xb1, 0x8b, 0xb0, 0x40, 0xb1, 0x8b, 0xb1, 0x40, 0xb1, 0x8b, - 0xb1, 0x40, 0xb2, 0x8b, 0xb2, 0x40, 0xb2, 0x8b, 0xb2, 0x40, 0xb2, 0x8b, - 0xb2, 0x40, 0xb3, 0x8b, 0xb3, 0x40, 0xb3, 0x8b, 0xb3, 0x40, 0xb4, 0x8b, - 0xb3, 0x40, 0xb4, 0x8b, 0xb4, 0x40, 0xb4, 0x8b, 0xb4, 0x40, 0xb4, 0x8b, - 0xb4, 0x40, 0xb5, 0x8b, 0xb5, 0x40, 0xb5, 0x8b, 0xb5, 0x40, 0xb5, 0x8b, - 0xb5, 0x40, 0xb6, 0x8b, 0xb6, 0x40, 0xb6, 0x8b, 0xb6, 0x40, 0xb6, 0x8b, - 0xb6, 0x40, 0xb7, 0x8b, 0xb7, 0x40, 0xb7, 0x8b, 0xb7, 0x40, 0xb7, 0x8c, - 0xb7, 0x41, 0xb8, 0x8c, 0xb8, 0x41, 0xb8, 0x8c, 0xb8, 0x41, 0xb8, 0x8c, - 0xb8, 0x41, 0xb9, 0x8c, 0xb9, 0x41, 0xb9, 0x8c, 0xb9, 0x41, 0xb9, 0x8c, - 0xb9, 0x41, 0xba, 0x8c, 0xba, 0x41, 0xba, 0x8c, 0xba, 0x41, 0xba, 0x8c, - 0xba, 0x41, 0xbb, 0x8c, 0xba, 0x41, 0xbb, 0x8d, 0xbb, 0x41, 0xbb, 0x8d, - 0xbb, 0x41, 0xbc, 0x8d, 0xbc, 0x41, 0xbc, 0x8d, 0xbc, 0x41, 0xbc, 0x8d, - 0xbc, 0x41, 0xbd, 0x8d, 0xbd, 0x41, 0xbd, 0x8d, 0xbd, 0x41, 0xbd, 0x8d, - 0xbd, 0x41, 0xbe, 0x8d, 0xbd, 0x41, 0xbe, 0x8d, 0xbd, 0x41, 0xbe, 0x8d, - 0xbd, 0x41, 0xbf, 0x8e, 0xbf, 0x41, 0xbf, 0x8e, 0xbf, 0x41, 0xbf, 0x8e, - 0xbf, 0x41, 0xc0, 0x8e, 0xc0, 0x41, 0xc0, 0x8e, 0xc0, 0x41, 0xc0, 0x8e, - 0xc0, 0x41, 0xc1, 0x8e, 0xc0, 0x41, 0xc1, 0x8e, 0xc0, 0x41, 0xc1, 0x8e, - 0xc0, 0x41, 0xc1, 0x8e, 0xc0, 0x41, 0xc2, 0x8e, 0xc2, 0x41, 0xc2, 0x8e, - 0xc2, 0x41, 0xc2, 0x8e, 0xc2, 0x41, 0xc3, 0x8e, 0xc3, 0x41, 0xc3, 0x8e, - 0xc3, 0x41, 0xc3, 0x8e, 0xc3, 0x41, 0xc4, 0x8e, 0xc3, 0x41, 0xc4, 0x8e, - 0xc3, 0x41, 0xc4, 0x8e, 0xc3, 0x41, 0xc5, 0x8f, 0xc5, 0x41, 0xc5, 0x8f, - 0xc5, 0x41, 0xc5, 0x8f, 0xc5, 0x41, 0xc6, 0x8f, 0xc6, 0x41, 0xc6, 0x8f, - 0xc6, 0x41, 0xc6, 0x8f, 0xc6, 0x41, 0xc6, 0x8f, 0xc6, 0x41, 0xc7, 0x8f, - 0xc6, 0x41, 0xc7, 0x8f, 0xc6, 0x41, 0xc7, 0x8f, 0xc6, 0x41, 0xc8, 0x8f, - 0xc6, 0x41, 0xc8, 0x90, 0xc8, 0x41, 0xc8, 0x90, 0xc8, 0x41, 0xc9, 0x90, - 0xc9, 0x41, 0xc9, 0x90, 0xc9, 0x41, 0xc9, 0x90, 0xc9, 0x41, 0xc9, 0x90, - 0xc9, 0x41, 0xca, 0x90, 0xc9, 0x41, 0xca, 0x90, 0xc9, 0x41, 0xca, 0x90, - 0xc9, 0x41, 0xcb, 0x90, 0xc9, 0x41, 0xcb, 0x91, 0xcb, 0x41, 0xcb, 0x91, - 0xcb, 0x41, 0xcc, 0x91, 0xcc, 0x41, 0xcc, 0x91, 0xcb, 0x41, 0xcc, 0x91, - 0xcc, 0x41, 0xcc, 0x91, 0xcb, 0x41, 0xcd, 0x91, 0xcc, 0x41, 0xcd, 0x91, - 0xcb, 0x41, 0xcd, 0x91, 0xcc, 0x41, 0xce, 0x92, 0xce, 0x41, 0xce, 0x92, - 0xce, 0x41, 0xce, 0x92, 0xce, 0x41, 0xce, 0x92, 0xce, 0x41, 0xcf, 0x92, - 0xce, 0x41, 0xcf, 0x92, 0xce, 0x41, 0xcf, 0x92, 0xce, 0x41, 0xd0, 0x92, - 0xce, 0x41, 0xd0, 0x92, 0xce, 0x41, 0xd0, 0x92, 0xce, 0x41, 0xd0, 0x92, - 0xce, 0x41, 0xd1, 0x92, 0xce, 0x41, 0xd1, 0x93, 0xd1, 0x41, 0xd1, 0x93, - 0xd1, 0x41, 0xd2, 0x93, 0xd1, 0x41, 0xd2, 0x93, 0xd1, 0x41, 0xd2, 0x93, - 0xd1, 0x41, 0xd2, 0x93, 0xd1, 0x41, 0xd3, 0x93, 0xd1, 0x41, 0xd3, 0x93, - 0xd1, 0x41, 0xd3, 0x93, 0xd1, 0x41, 0xd4, 0x94, 0xd4, 0x41, 0xd4, 0x94, - 0xd3, 0x41, 0xd4, 0x94, 0xd4, 0x41, 0xd4, 0x94, 0xd3, 0x41, 0xd5, 0x94, - 0xd4, 0x41, 0xd5, 0x94, 0xd3, 0x41, 0xd5, 0x94, 0xd4, 0x41, 0xd6, 0x94, - 0xd3, 0x41, 0xd6, 0x94, 0xd4, 0x41, 0xd6, 0x95, 0xd6, 0x41, 0xd6, 0x95, - 0xd6, 0x41, 0xd7, 0x95, 0xd6, 0x41, 0xd7, 0x95, 0xd6, 0x41, 0xd7, 0x95, - 0xd6, 0x41, 0xd7, 0x95, 0xd6, 0x41, 0xd8, 0x95, 0xd6, 0x41, 0xd8, 0x95, - 0xd6, 0x41, 0xd8, 0x95, 0xd6, 0x41, 0xd9, 0x95, 0xd6, 0x41, 0xd9, 0x96, - 0xd9, 0x41, 0xd9, 0x96, 0xd9, 0x41, 0xd9, 0x96, 0xd9, 0x41, 0xda, 0x96, - 0xd9, 0x41, 0xda, 0x96, 0xd9, 0x41, 0xda, 0x96, 0xd9, 0x41, 0xda, 0x96, - 0xd9, 0x41, 0xdb, 0x96, 0xd9, 0x41, 0xdb, 0x96, 0xd9, 0x41, 0xdb, 0x97, - 0xdb, 0x41, 0xdb, 0x96, 0xd9, 0x41, 0xdc, 0x97, 0xdb, 0x41, 0xdc, 0x97, - 0xdb, 0x41, 0xdc, 0x97, 0xdb, 0x41, 0xdd, 0x97, 0xdb, 0x41, 0xdd, 0x97, - 0xdb, 0x41, 0xdd, 0x97, 0xdb, 0x41, 0xdd, 0x97, 0xdb, 0x41, 0xde, 0x97, - 0xdb, 0x41, 0xde, 0x97, 0xdb, 0x41, 0xde, 0x98, 0xde, 0x41, 0xde, 0x98, - 0xde, 0x41, 0xdf, 0x98, 0xde, 0x41, 0xdf, 0x98, 0xde, 0x41, 0xdf, 0x98, - 0xde, 0x41, 0xdf, 0x98, 0xde, 0x41, 0xe0, 0x98, 0xde, 0x41, 0xe0, 0x98, - 0xde, 0x41, 0xe0, 0x98, 0xde, 0x41, 0xe1, 0x98, 0xde, 0x41, 0xe1, 0x98, - 0xe0, 0x41, 0xe1, 0x98, 0xe0, 0x41, 0xe1, 0x98, 0xe0, 0x41, 0xe2, 0x98, - 0xe0, 0x41, 0xe2, 0x98, 0xe0, 0x41, 0xe2, 0x98, 0xe0, 0x41, 0xe2, 0x98, - 0xe0, 0x41, 0xe3, 0x98, 0xe0, 0x41, 0xe3, 0x98, 0xe0, 0x41, 0xe3, 0x99, - 0xe3, 0x41, 0xe3, 0x99, 0xe2, 0x41, 0xe4, 0x99, 0xe3, 0x41, 0xe4, 0x99, - 0xe2, 0x41, 0xe4, 0x99, 0xe3, 0x41, 0xe4, 0x99, 0xe2, 0x41, 0xe5, 0x99, - 0xe3, 0x41, 0xe5, 0x99, 0xe2, 0x41, 0xe5, 0x99, 0xe3, 0x41, 0xe5, 0x9a, - 0xe5, 0x41, 0xe6, 0x9a, 0xe5, 0x41, 0xe6, 0x9a, 0xe5, 0x41, 0xe6, 0x9a, - 0xe5, 0x41, 0xe6, 0x9a, 0xe5, 0x41, 0xe7, 0x9a, 0xe5, 0x41, 0xe7, 0x9a, - 0xe5, 0x41, 0xe7, 0x9a, 0xe5, 0x41, 0xe7, 0x9a, 0xe5, 0x41, 0xe8, 0x9a, - 0xe5, 0x41, 0xe8, 0x9a, 0xe5, 0x41, 0xe8, 0x9a, 0xe5, 0x41, 0xe8, 0x9b, - 0xe7, 0x41, 0xe9, 0x9b, 0xe7, 0x41, 0xe9, 0x9b, 0xe7, 0x41, 0xe9, 0x9b, - 0xe7, 0x41, 0xe9, 0x9b, 0xe7, 0x41, 0xea, 0x9b, 0xe7, 0x41, 0xea, 0x9b, - 0xe7, 0x41, 0xea, 0x9b, 0xe7, 0x41, 0xea, 0x9b, 0xe7, 0x41, 0xeb, 0x9c, - 0xea, 0x41, 0xeb, 0x9c, 0xea, 0x41, 0xeb, 0x9c, 0xea, 0x41, 0xeb, 0x9c, - 0xea, 0x41, 0xec, 0x9c, 0xea, 0x41, 0xec, 0x9c, 0xea, 0x41, 0xec, 0x9c, - 0xea, 0x41, 0xec, 0x9c, 0xea, 0x41, 0xec, 0x9c, 0xea, 0x41, 0xed, 0x9c, - 0xea, 0x41, 0xed, 0x9d, 0xec, 0x41, 0xed, 0x9d, 0xec, 0x41, 0xed, 0x9d, - 0xec, 0x41, 0xee, 0x9d, 0xec, 0x41, 0xee, 0x9d, 0xec, 0x41, 0xee, 0x9d, - 0xec, 0x41, 0xee, 0x9d, 0xec, 0x41, 0xef, 0x9d, 0xec, 0x41, 0xef, 0x9d, - 0xec, 0x41, 0xef, 0x9d, 0xee, 0x41, 0xef, 0x9d, 0xec, 0x41, 0xf0, 0x9d, - 0xee, 0x41, 0xf0, 0x9d, 0xee, 0x41, 0xf0, 0x9d, 0xee, 0x41, 0xf0, 0x9d, - 0xee, 0x41, 0xf1, 0x9d, 0xee, 0x41, 0xf1, 0x9d, 0xee, 0x41, 0xf1, 0x9d, - 0xee, 0x41, 0xf1, 0x9e, 0xf0, 0x41, 0xf2, 0x9e, 0xf1, 0x41, 0xf2, 0x9e, - 0xf0, 0x41, 0xf2, 0x9e, 0xf1, 0x41, 0xf2, 0x9e, 0xf0, 0x41, 0xf2, 0x9e, - 0xf1, 0x41, 0xf3, 0x9e, 0xf0, 0x41, 0xf3, 0x9e, 0xf1, 0x41, 0xf3, 0x9e, - 0xf0, 0x41, 0xf3, 0x9e, 0xf1, 0x41, 0xf4, 0x9f, 0xf3, 0x41, 0xf4, 0x9e, - 0xf1, 0x41, 0xf4, 0x9f, 0xf3, 0x41, 0xf4, 0x9f, 0xf2, 0x41, 0xf5, 0x9f, - 0xf3, 0x41, 0xf5, 0x9f, 0xf2, 0x41, 0xf5, 0x9f, 0xf3, 0x41, 0xf5, 0x9f, - 0xf2, 0x41, 0xf5, 0x9f, 0xf3, 0x41, 0xf6, 0x9f, 0xf2, 0x41, 0xf6, 0x9f, - 0xf3, 0x41, 0xf6, 0xa0, 0xf5, 0x41, 0xf6, 0xa0, 0xf5, 0x41, 0xf7, 0xa0, - 0xf5, 0x41, 0xf7, 0xa0, 0xf5, 0x41, 0xf7, 0xa0, 0xf5, 0x41, 0xf7, 0xa0, - 0xf5, 0x41, 0xf8, 0xa0, 0xf5, 0x41, 0xf8, 0xa0, 0xf5, 0x41, 0xf8, 0xa0, - 0xf5, 0x41, 0xf8, 0xa1, 0xf7, 0x41, 0xf8, 0xa1, 0xf7, 0x41, 0xf9, 0xa1, - 0xf7, 0x41, 0xf9, 0xa1, 0xf7, 0x41, 0xf9, 0xa1, 0xf7, 0x41, 0xf9, 0xa1, - 0xf7, 0x41, 0xfa, 0xa1, 0xf7, 0x41, 0xfa, 0xa1, 0xf7, 0x41, 0xfa, 0xa1, - 0xf7, 0x41, 0xfa, 0xa1, 0xf7, 0x41, 0xfa, 0xa1, 0xf9, 0x41, 0xfb, 0xa1, - 0xf7, 0x41, 0xfb, 0xa1, 0xf9, 0x41, 0xfb, 0xa1, 0xf9, 0x41, 0xfb, 0xa1, - 0xf9, 0x41, 0xfc, 0xa1, 0xf9, 0x41, 0xfc, 0xa1, 0xf9, 0x41, 0xfc, 0xa1, - 0xf9, 0x41, 0xfc, 0xa1, 0xf9, 0x41, 0xfc, 0xa2, 0xfb, 0x41, 0xfd, 0xa1, - 0xf9, 0x41, 0xfd, 0xa2, 0xfb, 0x41, 0xfd, 0xa2, 0xfb, 0x41, 0xfd, 0xa2, - 0xfb, 0x41, 0xfe, 0xa2, 0xfb, 0x41, 0xfe, 0xa2, 0xfb, 0x41, 0xfe, 0xa2, - 0xfb, 0x41, 0xfe, 0xa2, 0xfb, 0x41, 0xfe, 0xa2, 0xfb, 0x41, 0xff, 0xa2, - 0xfb, 0x41, 0xff, 0xa2, 0xfb, 0x41, 0x03, 0x95, 0x99, 0x42, 0x0a, 0x98, - 0x98, 0x42, 0x0f, 0x95, 0x99, 0x42, 0x14, 0x98, 0x98, 0x42, 0x17, 0x95, - 0x99, 0x42, 0x1b, 0x98, 0x98, 0x42, 0x1e, 0x95, 0x99, 0x42, 0x20, 0x98, - 0x98, 0x42, 0x23, 0x95, 0x99, 0x42, 0x25, 0x98, 0x98, 0x42, 0x27, 0x95, - 0x99, 0x42, 0x29, 0x98, 0x98, 0x42, 0x2b, 0x95, 0x99, 0x42, 0x2d, 0x98, - 0x98, 0x42, 0x2f, 0x95, 0x99, 0x42, 0x31, 0x98, 0x98, 0x42, 0x32, 0x95, - 0x99, 0x42, 0x34, 0x98, 0x98, 0x42, 0x35, 0x95, 0x99, 0x42, 0x37, 0x98, - 0x98, 0x42, 0x38, 0x95, 0x99, 0x42, 0x3a, 0x98, 0x98, 0x42, 0x3b, 0x95, - 0x99, 0x42, 0x3c, 0x98, 0x98, 0x42, 0x3e, 0x95, 0x99, 0x42, 0x3f, 0x98, - 0x98, 0x42, 0x40, 0x95, 0x99, 0x42, 0x42, 0x98, 0x98, 0x42, 0x43, 0x95, - 0x99, 0x42, 0x44, 0x98, 0x98, 0x42, 0x45, 0x95, 0x99, 0x42, 0x46, 0x93, - 0x99, 0x42, 0x47, 0x95, 0x99, 0x42, 0x48, 0x93, 0x99, 0x42, 0x49, 0x95, - 0x99, 0x42, 0x4a, 0x93, 0x99, 0x42, 0x4b, 0x95, 0x99, 0x42, 0x4c, 0x93, - 0x99, 0x42, 0x4d, 0x95, 0x99, 0x42, 0x4e, 0x93, 0x99, 0x42, 0x4f, 0x95, - 0x99, 0x42, 0x50, 0x93, 0x99, 0x42, 0x51, 0x95, 0x99, 0x42, 0x52, 0x93, - 0x99, 0x42, 0x53, 0x95, 0x99, 0x42, 0x54, 0x93, 0x99, 0x42, 0x55, 0x95, - 0x99, 0x42, 0x56, 0x93, 0x99, 0x42, 0x57, 0x95, 0x99, 0x42, 0x58, 0x93, - 0x99, 0x42, 0x58, 0x95, 0x99, 0x42, 0x59, 0x93, 0x99, 0x42, 0x5a, 0x95, - 0x99, 0x42, 0x5b, 0x93, 0x99, 0x42, 0x5c, 0x95, 0x99, 0x42, 0x5d, 0x93, - 0x99, 0x42, 0x5d, 0x95, 0x99, 0x42, 0x5e, 0x93, 0x99, 0x42, 0x5f, 0x95, - 0x99, 0x42, 0x60, 0x93, 0x99, 0x42, 0x60, 0x95, 0x99, 0x42, 0x61, 0x93, - 0x99, 0x42, 0x62, 0x95, 0x99, 0x42, 0x63, 0x93, 0x99, 0x42, 0x63, 0x95, - 0x99, 0x42, 0x64, 0x93, 0x99, 0x42, 0x65, 0x95, 0x99, 0x42, 0x66, 0x93, - 0x99, 0x42, 0x66, 0x90, 0x9a, 0x42, 0x67, 0x93, 0x99, 0x42, 0x68, 0x90, - 0x9a, 0x42, 0x68, 0x93, 0x99, 0x42, 0x69, 0x90, 0x9a, 0x42, 0x6a, 0x93, - 0x99, 0x42, 0x6a, 0x90, 0x9a, 0x42, 0x6b, 0x93, 0x99, 0x42, 0x6c, 0x90, - 0x9a, 0x42, 0x6c, 0x93, 0x99, 0x42, 0x6d, 0x90, 0x9a, 0x42, 0x6e, 0x93, - 0x99, 0x42, 0x6e, 0x90, 0x9a, 0x42, 0x6f, 0x93, 0x99, 0x42, 0x70, 0x90, - 0x9a, 0x42, 0x70, 0x93, 0x99, 0x42, 0x71, 0x90, 0x9a, 0x42, 0x72, 0x93, - 0x99, 0x42, 0x72, 0x90, 0x9a, 0x42, 0x73, 0x93, 0x99, 0x42, 0x73, 0x90, - 0x9a, 0x42, 0x74, 0x93, 0x99, 0x42, 0x75, 0x90, 0x9a, 0x42, 0x75, 0x93, - 0x99, 0x42, 0x76, 0x90, 0x9a, 0x42, 0x76, 0x93, 0x99, 0x42, 0x77, 0x90, - 0x9a, 0x42, 0x78, 0x93, 0x99, 0x42, 0x78, 0x90, 0x9a, 0x42, 0x79, 0x93, - 0x99, 0x42, 0x79, 0x90, 0x9a, 0x42, 0x7a, 0x93, 0x99, 0x42, 0x7a, 0x90, - 0x9a, 0x42, 0x7b, 0x8c, 0x9a, 0x42, 0x7c, 0x90, 0x9a, 0x42, 0x7c, 0x8c, - 0x9a, 0x42, 0x7d, 0x90, 0x9a, 0x42, 0x7d, 0x8c, 0x9a, 0x42, 0x7e, 0x90, - 0x9a, 0x42, 0x7e, 0x8c, 0x9a, 0x42, 0x7f, 0x90, 0x9a, 0x42, 0x7f, 0x8c, - 0x9a, 0x42, 0x80, 0x90, 0x9a, 0x42, 0x81, 0x8c, 0x9a, 0x42, 0x81, 0x90, - 0x9a, 0x42, 0x82, 0x8c, 0x9a, 0x42, 0x82, 0x90, 0x9a, 0x42, 0x83, 0x8c, - 0x9a, 0x42, 0x83, 0x90, 0x9a, 0x42, 0x84, 0x8c, 0x9a, 0x42, 0x84, 0x90, - 0x9a, 0x42, 0x85, 0x8c, 0x9a, 0x42, 0x85, 0x90, 0x9a, 0x42, 0x86, 0x8c, - 0x9a, 0x42, 0x86, 0x90, 0x9a, 0x42, 0x87, 0x8c, 0x9a, 0x42, 0x87, 0x90, - 0x9a, 0x42, 0x88, 0x8c, 0x9a, 0x42, 0x88, 0x90, 0x9a, 0x42, 0x89, 0x8c, - 0x9a, 0x42, 0x89, 0x90, 0x9a, 0x42, 0x8a, 0x8c, 0x9a, 0x42, 0x8a, 0x90, - 0x9a, 0x42, 0x8b, 0x8c, 0x9a, 0x42, 0x8b, 0x90, 0x9a, 0x42, 0x8c, 0x8c, - 0x9a, 0x42, 0x8c, 0x90, 0x9a, 0x42, 0x8d, 0x8c, 0x9a, 0x42, 0x8d, 0x90, - 0x9a, 0x42, 0x8e, 0x8c, 0x9a, 0x42, 0x8e, 0x90, 0x9a, 0x42, 0x8e, 0x8c, - 0x9a, 0x42, 0x8f, 0x90, 0x9a, 0x42, 0x8f, 0x8c, 0x9a, 0x42, 0x90, 0x8b, - 0x9a, 0x42, 0x90, 0x8c, 0x9a, 0x42, 0x91, 0x8b, 0x9a, 0x42, 0x91, 0x8c, - 0x9a, 0x42, 0x92, 0x8b, 0x9a, 0x42, 0x92, 0x8c, 0x9a, 0x42, 0x93, 0x8b, - 0x9a, 0x42, 0x93, 0x8c, 0x9a, 0x42, 0x94, 0x8b, 0x9a, 0x42, 0x94, 0x8c, - 0x9a, 0x42, 0x94, 0x8b, 0x9a, 0x42, 0x95, 0x8c, 0x9a, 0x42, 0x95, 0x8b, - 0x9a, 0x42, 0x96, 0x8c, 0x9a, 0x42, 0x96, 0x8b, 0x9a, 0x42, 0x97, 0x8c, - 0x9a, 0x42, 0x97, 0x8b, 0x9a, 0x42, 0x98, 0x8c, 0x9a, 0x42, 0x98, 0x8b, - 0x9a, 0x42, 0x98, 0x8c, 0x9a, 0x42, 0x99, 0x8b, 0x9a, 0x42, 0x99, 0x8c, - 0x9a, 0x42, 0x9a, 0x8b, 0x9a, 0x42, 0x9a, 0x8c, 0x9a, 0x42, 0x9a, 0x8b, - 0x9a, 0x42, 0x9a, 0x8b, 0x9b, 0x42, 0x9a, 0x8b, 0x9b, 0x42, 0x9a, 0x8b, - 0x9c, 0x42, 0x9a, 0x8b, 0x9c, 0x42, 0x9a, 0x8b, 0x9d, 0x42, 0x9f, 0x8b, - 0x9d, 0x45, 0x9e, 0x8b, 0x9d, 0x45, 0x9f, 0x8b, 0x9e, 0x45, 0x9e, 0x8b, - 0x9e, 0x45, 0x9f, 0x8b, 0x9f, 0x45, 0x9f, 0x8b, 0x9f, 0x45, 0x9f, 0x8b, - 0x9f, 0x45, 0xa0, 0x8b, 0xa0, 0x45, 0xa0, 0x8b, 0xa0, 0x45, 0xa1, 0x8b, - 0xa1, 0x45, 0xa1, 0x8b, 0xa1, 0x45, 0xa1, 0x8b, 0xa1, 0x45, 0xa1, 0x8b, - 0xa2, 0x45, 0xa1, 0x8b, 0xa2, 0x45, 0xa1, 0x8b, 0xa3, 0x45, 0xa1, 0x8b, - 0xa3, 0x45, 0xa3, 0x8b, 0xa3, 0x46, 0xa4, 0x8b, 0xa4, 0x46, 0xa4, 0x8b, - 0xa4, 0x46, 0xa5, 0x8b, 0xa5, 0x46, 0xa5, 0x8b, 0xa5, 0x46, 0xa5, 0x8b, - 0xa5, 0x46, 0xa6, 0x8b, 0xa6, 0x46, 0xa5, 0x8b, 0xa6, 0x46, 0xa6, 0x8b, - 0xa6, 0x46, 0xa5, 0x8b, 0xa7, 0x46, 0xa6, 0x8b, 0xa7, 0x46, 0xa5, 0x8b, - 0xa8, 0x46, 0xa8, 0x8b, 0xa8, 0x3d, 0xa8, 0x8b, 0xa8, 0x3d, 0xa9, 0x8b, - 0xa9, 0x3d, 0xa9, 0x8b, 0xa9, 0x3d, 0xaa, 0x8b, 0xaa, 0x3d, 0xaa, 0x8b, - 0xaa, 0x3d, 0xac, 0x8b, 0xaa, 0x3e, 0xac, 0x8b, 0xab, 0x3e, 0xac, 0x8b, - 0xab, 0x3e, 0xac, 0x8b, 0xab, 0x3e, 0xac, 0x8b, 0xac, 0x3e, 0xac, 0x8b, - 0xac, 0x3e, 0xac, 0x8b, 0xac, 0x3e, 0xad, 0x8b, 0xad, 0x3e, 0xad, 0x8b, - 0xad, 0x3e, 0xaf, 0x8b, 0xae, 0x3f, 0xaf, 0x8b, 0xae, 0x3f, 0xaf, 0x8b, - 0xae, 0x3f, 0xaf, 0x8b, 0xaf, 0x3f, 0xaf, 0x8b, 0xaf, 0x3f, 0xaf, 0x8b, - 0xaf, 0x3f, 0xb0, 0x8b, 0xb0, 0x3f, 0xb0, 0x8b, 0xb0, 0x3f, 0xb0, 0x8b, - 0xb0, 0x3f, 0xb1, 0x8b, 0xb1, 0x3f, 0xb3, 0x8b, 0xb1, 0x40, 0xb3, 0x8b, - 0xb2, 0x40, 0xb3, 0x8b, 0xb2, 0x40, 0xb3, 0x8b, 0xb2, 0x40, 0xb3, 0x8b, - 0xb3, 0x40, 0xb3, 0x8b, 0xb3, 0x40, 0xb3, 0x8b, 0xb3, 0x40, 0xb4, 0x8b, - 0xb4, 0x40, 0xb4, 0x8b, 0xb4, 0x40, 0xb4, 0x8b, 0xb4, 0x40, 0xb5, 0x8b, - 0xb5, 0x40, 0xb6, 0x8b, 0xb5, 0x41, 0xb6, 0x8b, 0xb5, 0x41, 0xb6, 0x8b, - 0xb6, 0x41, 0xb6, 0x8b, 0xb6, 0x41, 0xb6, 0x8b, 0xb6, 0x41, 0xb7, 0x8b, - 0xb7, 0x41, 0xb7, 0x8b, 0xb7, 0x41, 0xb7, 0x8b, 0xb7, 0x41, 0xb8, 0x8b, - 0xb8, 0x41, 0xb8, 0x8b, 0xb8, 0x41, 0xb8, 0x8b, 0xb8, 0x41, 0xb9, 0x8c, - 0xb9, 0x42, 0xb9, 0x8c, 0xb9, 0x42, 0xb9, 0x8c, 0xb9, 0x42, 0xba, 0x8c, - 0xba, 0x42, 0xba, 0x8c, 0xba, 0x42, 0xba, 0x8c, 0xba, 0x42, 0xbb, 0x8c, - 0xbb, 0x42, 0xbb, 0x8c, 0xbb, 0x42, 0xbb, 0x8c, 0xbb, 0x42, 0xbc, 0x8c, - 0xbc, 0x42, 0xbc, 0x8c, 0xbb, 0x42, 0xbc, 0x8c, 0xbc, 0x42, 0xbd, 0x8d, - 0xbd, 0x42, 0xbd, 0x8d, 0xbd, 0x42, 0xbd, 0x8d, 0xbd, 0x42, 0xbe, 0x8d, - 0xbe, 0x42, 0xbe, 0x8d, 0xbe, 0x42, 0xbe, 0x8d, 0xbe, 0x42, 0xbf, 0x8d, - 0xbf, 0x42, 0xbf, 0x8d, 0xbe, 0x42, 0xbf, 0x8d, 0xbf, 0x42, 0xc0, 0x8d, - 0xbe, 0x42, 0xc0, 0x8d, 0xbf, 0x42, 0xc0, 0x8e, 0xc0, 0x42, 0xc1, 0x8e, - 0xc1, 0x42, 0xc1, 0x8e, 0xc1, 0x42, 0xc1, 0x8e, 0xc1, 0x42, 0xc1, 0x8e, - 0xc1, 0x42, 0xc2, 0x8e, 0xc1, 0x42, 0xc2, 0x8e, 0xc1, 0x42, 0xc2, 0x8e, - 0xc1, 0x42, 0xc3, 0x8e, 0xc1, 0x42, 0xc3, 0x8f, 0xc3, 0x42, 0xc3, 0x8f, - 0xc3, 0x42, 0xc4, 0x8f, 0xc4, 0x42, 0xc4, 0x8f, 0xc4, 0x42, 0xc4, 0x8f, - 0xc4, 0x42, 0xc5, 0x8f, 0xc5, 0x42, 0xc5, 0x8f, 0xc4, 0x42, 0xc5, 0x8f, - 0xc5, 0x42, 0xc6, 0x8f, 0xc4, 0x42, 0xc6, 0x8f, 0xc5, 0x42, 0xc6, 0x90, - 0xc6, 0x42, 0xc6, 0x90, 0xc6, 0x42, 0xc7, 0x90, 0xc7, 0x42, 0xc7, 0x90, - 0xc7, 0x42, 0xc7, 0x90, 0xc7, 0x42, 0xc8, 0x90, 0xc7, 0x42, 0xc8, 0x90, - 0xc7, 0x42, 0xc8, 0x90, 0xc7, 0x42, 0xc9, 0x90, 0xc7, 0x42, 0xc9, 0x90, - 0xc7, 0x42, 0xc9, 0x90, 0xc7, 0x42, 0xc9, 0x91, 0xc9, 0x42, 0xca, 0x91, - 0xca, 0x42, 0xca, 0x91, 0xca, 0x42, 0xca, 0x91, 0xca, 0x42, 0xcb, 0x91, - 0xca, 0x42, 0xcb, 0x91, 0xca, 0x42, 0xcb, 0x91, 0xca, 0x42, 0xcc, 0x91, - 0xca, 0x42, 0xcc, 0x91, 0xca, 0x42, 0xcc, 0x92, 0xcc, 0x42, 0xcc, 0x92, - 0xcc, 0x42, 0xcd, 0x92, 0xcd, 0x42, 0xcd, 0x92, 0xcd, 0x42, 0xcd, 0x92, - 0xcd, 0x42, 0xce, 0x92, 0xcd, 0x42, 0xce, 0x92, 0xcd, 0x42, 0xce, 0x92, - 0xcd, 0x42, 0xce, 0x92, 0xcd, 0x42, 0xcf, 0x92, 0xcd, 0x42, 0xcf, 0x93, - 0xcf, 0x42, 0xcf, 0x93, 0xcf, 0x42, 0xd0, 0x93, 0xd0, 0x42, 0xd0, 0x93, - 0xcf, 0x42, 0xd0, 0x93, 0xd0, 0x42, 0xd0, 0x93, 0xcf, 0x42, 0xd1, 0x93, - 0xd0, 0x42, 0xd1, 0x93, 0xcf, 0x42, 0xd1, 0x93, 0xd0, 0x42, 0xd2, 0x93, - 0xcf, 0x42, 0xd2, 0x93, 0xd0, 0x42, 0xd2, 0x94, 0xd2, 0x42, 0xd2, 0x94, - 0xd2, 0x42, 0xd3, 0x94, 0xd2, 0x42, 0xd3, 0x94, 0xd2, 0x42, 0xd3, 0x94, - 0xd2, 0x42, 0xd4, 0x94, 0xd2, 0x42, 0xd4, 0x94, 0xd2, 0x42, 0xd4, 0x94, - 0xd2, 0x42, 0xd4, 0x94, 0xd2, 0x42, 0xd5, 0x94, 0xd2, 0x42, 0xd5, 0x94, - 0xd5, 0x42, 0xd5, 0x94, 0xd5, 0x42, 0xd6, 0x94, 0xd5, 0x42, 0xd6, 0x94, - 0xd5, 0x42, 0xd6, 0x94, 0xd5, 0x42, 0xd6, 0x94, 0xd5, 0x42, 0xd7, 0x94, - 0xd5, 0x42, 0xd7, 0x94, 0xd5, 0x42, 0xd7, 0x94, 0xd5, 0x42, 0xd7, 0x95, - 0xd7, 0x42, 0xd8, 0x95, 0xd7, 0x42, 0xd8, 0x95, 0xd7, 0x42, 0xd8, 0x95, - 0xd7, 0x42, 0xd9, 0x95, 0xd7, 0x42, 0xd9, 0x95, 0xd7, 0x42, 0xd9, 0x95, - 0xd7, 0x42, 0xd9, 0x95, 0xd7, 0x42, 0xda, 0x95, 0xd7, 0x42, 0xda, 0x96, - 0xda, 0x42, 0xda, 0x96, 0xda, 0x42, 0xda, 0x96, 0xda, 0x42, 0xdb, 0x96, - 0xda, 0x42, 0xdb, 0x96, 0xda, 0x42, 0xdb, 0x96, 0xda, 0x42, 0xdb, 0x96, - 0xda, 0x42, 0xdc, 0x96, 0xda, 0x42, 0xdc, 0x96, 0xda, 0x42, 0xdc, 0x96, - 0xda, 0x42, 0xdd, 0x97, 0xdd, 0x42, 0xdd, 0x96, 0xda, 0x42, 0xdd, 0x97, - 0xdd, 0x42, 0xdd, 0x97, 0xdc, 0x42, 0xde, 0x97, 0xdd, 0x42, 0xde, 0x97, - 0xdc, 0x42, 0xde, 0x97, 0xdd, 0x42, 0xde, 0x97, 0xdc, 0x42, 0xdf, 0x97, - 0xdd, 0x42, 0xdf, 0x97, 0xdc, 0x42, 0xdf, 0x97, 0xdd, 0x42, 0xdf, 0x98, - 0xdf, 0x42, 0xe0, 0x98, 0xdf, 0x42, 0xe0, 0x98, 0xdf, 0x42, 0xe0, 0x98, - 0xdf, 0x42, 0xe1, 0x98, 0xdf, 0x42, 0xe1, 0x98, 0xdf, 0x42, 0xe1, 0x98, - 0xdf, 0x42, 0xe1, 0x98, 0xdf, 0x42, 0xe2, 0x98, 0xdf, 0x42, 0xe2, 0x99, - 0xe1, 0x42, 0xe2, 0x99, 0xe2, 0x42, 0xe2, 0x99, 0xe1, 0x42, 0xe3, 0x99, - 0xe2, 0x42, 0xe3, 0x99, 0xe1, 0x42, 0xe3, 0x99, 0xe2, 0x42, 0xe3, 0x99, - 0xe1, 0x42, 0xe4, 0x99, 0xe2, 0x42, 0xe4, 0x99, 0xe1, 0x42, 0xe4, 0x99, - 0xe2, 0x42, 0xe4, 0x9a, 0xe4, 0x42, 0xe5, 0x9a, 0xe4, 0x42, 0xe5, 0x9a, - 0xe4, 0x42, 0xe5, 0x9a, 0xe4, 0x42, 0xe5, 0x9a, 0xe4, 0x42, 0xe6, 0x9a, - 0xe4, 0x42, 0xe6, 0x9a, 0xe4, 0x42, 0xe6, 0x9a, 0xe4, 0x42, 0xe6, 0x9a, - 0xe4, 0x42, 0xe7, 0x9a, 0xe6, 0x42, 0xe7, 0x9a, 0xe4, 0x42, 0xe7, 0x9a, - 0xe6, 0x42, 0xe7, 0x9a, 0xe6, 0x42, 0xe8, 0x9a, 0xe6, 0x42, 0xe8, 0x9a, - 0xe6, 0x42, 0xe8, 0x9a, 0xe6, 0x42, 0xe8, 0x9a, 0xe6, 0x42, 0xe9, 0x9a, - 0xe6, 0x42, 0xe9, 0x9a, 0xe6, 0x42, 0xe9, 0x9a, 0xe6, 0x42, 0xe9, 0x9b, - 0xe8, 0x42, 0xea, 0x9b, 0xe9, 0x42, 0xea, 0x9b, 0xe8, 0x42, 0xea, 0x9b, - 0xe9, 0x42, 0xea, 0x9b, 0xe8, 0x42, 0xeb, 0x9b, 0xe9, 0x42, 0xeb, 0x9b, - 0xe8, 0x42, 0xeb, 0x9b, 0xe9, 0x42, 0xeb, 0x9b, 0xe8, 0x42, 0xec, 0x9b, - 0xe9, 0x42, 0xec, 0x9c, 0xeb, 0x42, 0xec, 0x9c, 0xeb, 0x42, 0xec, 0x9c, - 0xeb, 0x42, 0xec, 0x9c, 0xeb, 0x42, 0xed, 0x9c, 0xeb, 0x42, 0xed, 0x9c, - 0xeb, 0x42, 0xed, 0x9c, 0xeb, 0x42, 0xed, 0x9c, 0xeb, 0x42, 0xee, 0x9c, - 0xeb, 0x42, 0xee, 0x9d, 0xed, 0x42, 0xee, 0x9d, 0xed, 0x42, 0xee, 0x9d, - 0xed, 0x42, 0xef, 0x9d, 0xed, 0x42, 0xef, 0x9d, 0xed, 0x42, 0xef, 0x9d, - 0xed, 0x42, 0xef, 0x9d, 0xed, 0x42, 0xf0, 0x9d, 0xed, 0x42, 0xf0, 0x9d, - 0xed, 0x42, 0xf0, 0x9d, 0xed, 0x42, 0xf0, 0x9e, 0xef, 0x42, 0xf1, 0x9d, - 0xed, 0x42, 0xf1, 0x9e, 0xef, 0x42, 0xf1, 0x9e, 0xef, 0x42, 0xf1, 0x9e, - 0xef, 0x42, 0xf2, 0x9e, 0xef, 0x42, 0xf2, 0x9e, 0xef, 0x42, 0xf2, 0x9e, - 0xef, 0x42, 0xf2, 0x9e, 0xef, 0x42, 0xf2, 0x9f, 0xf2, 0x42, 0xf3, 0x9e, - 0xef, 0x42, 0xf3, 0x9f, 0xf2, 0x42, 0xf3, 0x9f, 0xf1, 0x42, 0xf3, 0x9f, - 0xf2, 0x42, 0xf4, 0x9f, 0xf1, 0x42, 0xf4, 0x9f, 0xf2, 0x42, 0xf4, 0x9f, - 0xf1, 0x42, 0xf4, 0x9f, 0xf2, 0x42, 0xf5, 0x9f, 0xf4, 0x42, 0xf5, 0x9f, - 0xf4, 0x42, 0xf5, 0x9f, 0xf4, 0x42, 0xf5, 0x9f, 0xf4, 0x42, 0xf5, 0x9f, - 0xf4, 0x42, 0xf6, 0x9f, 0xf4, 0x42, 0xf6, 0x9f, 0xf4, 0x42, 0xf6, 0x9f, - 0xf4, 0x42, 0xf6, 0x9f, 0xf4, 0x42, 0xf7, 0x9f, 0xf4, 0x42, 0xf7, 0x9f, - 0xf4, 0x42, 0xf7, 0x9f, 0xf4, 0x42, 0xf7, 0xa0, 0xf6, 0x42, 0xf8, 0xa0, - 0xf6, 0x42, 0xf8, 0xa0, 0xf6, 0x42, 0xf8, 0xa0, 0xf6, 0x42, 0xf8, 0xa0, - 0xf6, 0x42, 0xf8, 0xa0, 0xf6, 0x42, 0xf9, 0xa0, 0xf6, 0x42, 0xf9, 0xa0, - 0xf6, 0x42, 0xf9, 0xa0, 0xf6, 0x42, 0xf9, 0xa1, 0xf8, 0x42, 0xfa, 0xa0, - 0xf6, 0x42, 0xfa, 0xa1, 0xf8, 0x42, 0xfa, 0xa1, 0xf8, 0x42, 0xfa, 0xa1, - 0xf8, 0x42, 0xfa, 0xa1, 0xf8, 0x42, 0xfb, 0xa1, 0xf8, 0x42, 0xfb, 0xa1, - 0xf8, 0x42, 0xfb, 0xa1, 0xf8, 0x42, 0xfb, 0xa2, 0xfa, 0x42, 0xfc, 0xa2, - 0xfa, 0x42, 0xfc, 0xa2, 0xfa, 0x42, 0xfc, 0xa2, 0xfa, 0x42, 0xfc, 0xa2, - 0xfa, 0x42, 0xfc, 0xa2, 0xfa, 0x42, 0xfd, 0xa2, 0xfa, 0x42, 0xfd, 0xa2, - 0xfa, 0x42, 0xfd, 0xa2, 0xfa, 0x42, 0xfd, 0xa2, 0xfa, 0x42, 0xfe, 0xa2, - 0xfa, 0x42, 0xfe, 0xa2, 0xfa, 0x42, 0xfe, 0xa2, 0xfa, 0x42, 0xfe, 0xa2, - 0xfa, 0x42, 0xfe, 0xa2, 0xfa, 0x42, 0xff, 0xa2, 0xfa, 0x42, 0xff, 0xa3, - 0xfb, 0x42, 0x03, 0x96, 0x99, 0x42, 0x0a, 0x98, 0x98, 0x42, 0x0f, 0x96, - 0x99, 0x42, 0x14, 0x98, 0x98, 0x42, 0x17, 0x96, 0x99, 0x42, 0x1b, 0x98, - 0x98, 0x42, 0x1e, 0x96, 0x99, 0x42, 0x20, 0x98, 0x98, 0x42, 0x23, 0x96, - 0x99, 0x42, 0x25, 0x98, 0x98, 0x42, 0x27, 0x96, 0x99, 0x42, 0x29, 0x98, - 0x98, 0x42, 0x2b, 0x96, 0x99, 0x42, 0x2d, 0x98, 0x98, 0x42, 0x2f, 0x96, - 0x99, 0x42, 0x31, 0x92, 0x99, 0x42, 0x32, 0x96, 0x99, 0x42, 0x34, 0x92, - 0x99, 0x42, 0x35, 0x96, 0x99, 0x42, 0x37, 0x92, 0x99, 0x42, 0x38, 0x96, - 0x99, 0x42, 0x3a, 0x92, 0x99, 0x42, 0x3b, 0x96, 0x99, 0x42, 0x3c, 0x92, - 0x99, 0x42, 0x3e, 0x96, 0x99, 0x42, 0x3f, 0x92, 0x99, 0x42, 0x40, 0x96, - 0x99, 0x42, 0x42, 0x92, 0x99, 0x42, 0x43, 0x96, 0x99, 0x42, 0x44, 0x92, - 0x99, 0x42, 0x45, 0x96, 0x99, 0x42, 0x46, 0x92, 0x99, 0x42, 0x47, 0x96, - 0x99, 0x42, 0x48, 0x92, 0x99, 0x42, 0x49, 0x96, 0x99, 0x42, 0x4a, 0x92, - 0x99, 0x42, 0x4b, 0x96, 0x99, 0x42, 0x4c, 0x92, 0x99, 0x42, 0x4d, 0x96, - 0x99, 0x42, 0x4e, 0x92, 0x99, 0x42, 0x4f, 0x96, 0x99, 0x42, 0x50, 0x92, - 0x99, 0x42, 0x51, 0x96, 0x99, 0x42, 0x52, 0x92, 0x99, 0x42, 0x53, 0x96, - 0x99, 0x42, 0x54, 0x92, 0x99, 0x42, 0x55, 0x96, 0x99, 0x42, 0x56, 0x92, - 0x99, 0x42, 0x57, 0x96, 0x99, 0x42, 0x58, 0x92, 0x99, 0x42, 0x58, 0x96, - 0x99, 0x42, 0x59, 0x92, 0x99, 0x42, 0x5a, 0x96, 0x99, 0x42, 0x5b, 0x92, - 0x99, 0x42, 0x5c, 0x96, 0x99, 0x42, 0x5d, 0x92, 0x99, 0x42, 0x5d, 0x96, - 0x99, 0x42, 0x5e, 0x92, 0x99, 0x42, 0x5f, 0x96, 0x99, 0x42, 0x60, 0x92, - 0x99, 0x42, 0x60, 0x8f, 0x9a, 0x42, 0x61, 0x92, 0x99, 0x42, 0x62, 0x8f, - 0x9a, 0x42, 0x63, 0x92, 0x99, 0x42, 0x63, 0x8f, 0x9a, 0x42, 0x64, 0x92, - 0x99, 0x42, 0x65, 0x8f, 0x9a, 0x42, 0x66, 0x92, 0x99, 0x42, 0x66, 0x8f, - 0x9a, 0x42, 0x67, 0x92, 0x99, 0x42, 0x68, 0x8f, 0x9a, 0x42, 0x68, 0x92, - 0x99, 0x42, 0x69, 0x8f, 0x9a, 0x42, 0x6a, 0x92, 0x99, 0x42, 0x6a, 0x8f, - 0x9a, 0x42, 0x6b, 0x92, 0x99, 0x42, 0x6c, 0x8f, 0x9a, 0x42, 0x6c, 0x92, - 0x99, 0x42, 0x6d, 0x8f, 0x9a, 0x42, 0x6e, 0x92, 0x99, 0x42, 0x6e, 0x8f, - 0x9a, 0x42, 0x6f, 0x92, 0x99, 0x42, 0x70, 0x8f, 0x9a, 0x42, 0x70, 0x92, - 0x99, 0x42, 0x71, 0x8f, 0x9a, 0x42, 0x72, 0x92, 0x99, 0x42, 0x72, 0x8f, - 0x9a, 0x42, 0x73, 0x92, 0x99, 0x42, 0x73, 0x8f, 0x9a, 0x42, 0x74, 0x92, - 0x99, 0x42, 0x75, 0x8f, 0x9a, 0x42, 0x75, 0x92, 0x99, 0x42, 0x76, 0x8f, - 0x9a, 0x42, 0x76, 0x92, 0x99, 0x42, 0x77, 0x8f, 0x9a, 0x42, 0x78, 0x92, - 0x99, 0x42, 0x78, 0x8f, 0x9a, 0x42, 0x79, 0x92, 0x99, 0x42, 0x79, 0x8f, - 0x9a, 0x42, 0x7a, 0x92, 0x99, 0x42, 0x7a, 0x8f, 0x9a, 0x42, 0x7b, 0x92, - 0x99, 0x42, 0x7c, 0x8f, 0x9a, 0x42, 0x7c, 0x92, 0x99, 0x42, 0x7d, 0x8f, - 0x9a, 0x42, 0x7d, 0x92, 0x99, 0x42, 0x7e, 0x8f, 0x9a, 0x42, 0x7e, 0x92, - 0x99, 0x42, 0x7f, 0x8f, 0x9a, 0x42, 0x7f, 0x92, 0x99, 0x42, 0x80, 0x8f, - 0x9a, 0x42, 0x81, 0x92, 0x99, 0x42, 0x81, 0x8f, 0x9a, 0x42, 0x82, 0x92, - 0x99, 0x42, 0x82, 0x8f, 0x9a, 0x42, 0x83, 0x92, 0x99, 0x42, 0x83, 0x8f, - 0x9a, 0x42, 0x84, 0x8d, 0x9a, 0x42, 0x84, 0x8f, 0x9a, 0x42, 0x85, 0x8d, - 0x9a, 0x42, 0x85, 0x8f, 0x9a, 0x42, 0x86, 0x8d, 0x9a, 0x42, 0x86, 0x8f, - 0x9a, 0x42, 0x87, 0x8d, 0x9a, 0x42, 0x87, 0x8f, 0x9a, 0x42, 0x88, 0x8d, - 0x9a, 0x42, 0x88, 0x8f, 0x9a, 0x42, 0x89, 0x8d, 0x9a, 0x42, 0x89, 0x8f, - 0x9a, 0x42, 0x8a, 0x8d, 0x9a, 0x42, 0x8a, 0x8f, 0x9a, 0x42, 0x8b, 0x8d, - 0x9a, 0x42, 0x8b, 0x8f, 0x9a, 0x42, 0x8c, 0x8d, 0x9a, 0x42, 0x8c, 0x8f, - 0x9a, 0x42, 0x8d, 0x8d, 0x9a, 0x42, 0x8d, 0x8f, 0x9a, 0x42, 0x8e, 0x8d, - 0x9a, 0x42, 0x8e, 0x8f, 0x9a, 0x42, 0x8e, 0x8d, 0x9a, 0x42, 0x8f, 0x8f, - 0x9a, 0x42, 0x8f, 0x8d, 0x9a, 0x42, 0x90, 0x8f, 0x9a, 0x42, 0x90, 0x8d, - 0x9a, 0x42, 0x91, 0x8f, 0x9a, 0x42, 0x91, 0x8d, 0x9a, 0x42, 0x92, 0x8f, - 0x9a, 0x42, 0x92, 0x8d, 0x9a, 0x42, 0x93, 0x8f, 0x9a, 0x42, 0x93, 0x8d, - 0x9a, 0x42, 0x94, 0x8c, 0x9a, 0x42, 0x94, 0x8d, 0x9a, 0x42, 0x94, 0x8c, - 0x9a, 0x42, 0x95, 0x8d, 0x9a, 0x42, 0x95, 0x8c, 0x9a, 0x42, 0x96, 0x8d, - 0x9a, 0x42, 0x96, 0x8c, 0x9a, 0x42, 0x97, 0x8d, 0x9a, 0x42, 0x97, 0x8c, - 0x9a, 0x42, 0x98, 0x8d, 0x9a, 0x42, 0x98, 0x8c, 0x9a, 0x42, 0x98, 0x8d, - 0x9a, 0x42, 0x99, 0x8c, 0x9a, 0x42, 0x99, 0x8d, 0x9a, 0x42, 0x9a, 0x8c, - 0x9a, 0x42, 0x9a, 0x8d, 0x9a, 0x42, 0x9a, 0x8c, 0x9a, 0x42, 0x9a, 0x8c, - 0x9b, 0x42, 0x9a, 0x8c, 0x9b, 0x42, 0x9a, 0x8c, 0x9c, 0x42, 0x9a, 0x8c, - 0x9c, 0x42, 0x9e, 0x8c, 0x9d, 0x44, 0x9f, 0x8c, 0x9d, 0x44, 0x9e, 0x8c, - 0x9d, 0x44, 0x9f, 0x8c, 0x9e, 0x44, 0x9e, 0x8c, 0x9e, 0x44, 0x9f, 0x8c, - 0x9f, 0x44, 0x9f, 0x8c, 0x9f, 0x44, 0x9f, 0x8c, 0x9f, 0x44, 0x9f, 0x8c, - 0xa0, 0x44, 0x9f, 0x8c, 0xa0, 0x44, 0x9f, 0x8c, 0xa1, 0x44, 0xa1, 0x8c, - 0xa1, 0x45, 0xa1, 0x8c, 0xa1, 0x45, 0xa2, 0x8c, 0xa2, 0x45, 0xa2, 0x8c, - 0xa2, 0x45, 0xa3, 0x8c, 0xa3, 0x45, 0xa3, 0x8c, 0xa3, 0x45, 0xa3, 0x8c, - 0xa3, 0x45, 0xa3, 0x8c, 0xa4, 0x45, 0xa3, 0x8c, 0xa4, 0x45, 0xa3, 0x8c, - 0xa5, 0x45, 0xa3, 0x8c, 0xa5, 0x45, 0xa5, 0x8c, 0xa5, 0x46, 0xa6, 0x8c, - 0xa6, 0x46, 0xa6, 0x8c, 0xa6, 0x46, 0xa6, 0x8c, 0xa6, 0x46, 0xa7, 0x8c, - 0xa7, 0x46, 0xa7, 0x8c, 0xa7, 0x46, 0xa8, 0x8c, 0xa8, 0x46, 0xa7, 0x8c, - 0xa8, 0x46, 0xa8, 0x8c, 0xa8, 0x46, 0xa7, 0x8c, 0xa9, 0x46, 0xa8, 0x8c, - 0xa9, 0x46, 0xa7, 0x8c, 0xaa, 0x46, 0xaa, 0x8c, 0xaa, 0x3e, 0xaa, 0x8c, - 0xaa, 0x3e, 0xab, 0x8c, 0xab, 0x3e, 0xab, 0x8c, 0xab, 0x3e, 0xab, 0x8c, - 0xab, 0x3e, 0xac, 0x8c, 0xac, 0x3e, 0xae, 0x8c, 0xac, 0x3f, 0xae, 0x8c, - 0xac, 0x3f, 0xae, 0x8c, 0xad, 0x3f, 0xae, 0x8c, 0xad, 0x3f, 0xae, 0x8c, - 0xae, 0x3f, 0xae, 0x8c, 0xae, 0x3f, 0xae, 0x8c, 0xae, 0x3f, 0xaf, 0x8c, - 0xaf, 0x3f, 0xaf, 0x8c, 0xaf, 0x3f, 0xb1, 0x8c, 0xaf, 0x40, 0xb1, 0x8c, - 0xb0, 0x40, 0xb1, 0x8c, 0xb0, 0x40, 0xb1, 0x8c, 0xb0, 0x40, 0xb1, 0x8c, - 0xb1, 0x40, 0xb1, 0x8c, 0xb1, 0x40, 0xb2, 0x8c, 0xb2, 0x40, 0xb2, 0x8c, - 0xb2, 0x40, 0xb2, 0x8c, 0xb2, 0x40, 0xb4, 0x8c, 0xb3, 0x40, 0xb4, 0x8c, - 0xb3, 0x40, 0xb4, 0x8c, 0xb3, 0x40, 0xb4, 0x8c, 0xb4, 0x40, 0xb4, 0x8c, - 0xb4, 0x40, 0xb4, 0x8c, 0xb4, 0x40, 0xb5, 0x8c, 0xb5, 0x40, 0xb5, 0x8c, - 0xb5, 0x40, 0xb5, 0x8c, 0xb5, 0x40, 0xb6, 0x8c, 0xb6, 0x40, 0xb6, 0x8c, - 0xb6, 0x40, 0xb6, 0x8c, 0xb6, 0x40, 0xb7, 0x8c, 0xb7, 0x41, 0xb8, 0x8c, - 0xb7, 0x41, 0xb7, 0x8c, 0xb7, 0x41, 0xb8, 0x8c, 0xb8, 0x41, 0xb8, 0x8c, - 0xb8, 0x41, 0xb8, 0x8c, 0xb8, 0x41, 0xb9, 0x8c, 0xb9, 0x41, 0xb9, 0x8c, - 0xb9, 0x41, 0xb9, 0x8c, 0xb9, 0x41, 0xba, 0x8c, 0xba, 0x41, 0xba, 0x8c, - 0xba, 0x41, 0xba, 0x8d, 0xba, 0x42, 0xbb, 0x8d, 0xbb, 0x42, 0xbb, 0x8d, - 0xbb, 0x42, 0xbb, 0x8d, 0xbb, 0x42, 0xbc, 0x8d, 0xbc, 0x42, 0xbc, 0x8d, - 0xbc, 0x42, 0xbc, 0x8d, 0xbc, 0x42, 0xbd, 0x8d, 0xbd, 0x42, 0xbd, 0x8d, - 0xbd, 0x42, 0xbd, 0x8d, 0xbd, 0x42, 0xbe, 0x8d, 0xbd, 0x42, 0xbe, 0x8e, - 0xbe, 0x42, 0xbe, 0x8e, 0xbe, 0x42, 0xbf, 0x8e, 0xbf, 0x42, 0xbf, 0x8e, - 0xbf, 0x42, 0xbf, 0x8e, 0xbf, 0x42, 0xc0, 0x8e, 0xc0, 0x42, 0xc0, 0x8e, - 0xc0, 0x42, 0xc0, 0x8e, 0xc0, 0x42, 0xc1, 0x8e, 0xc0, 0x42, 0xc1, 0x8e, - 0xc0, 0x42, 0xc1, 0x8e, 0xc0, 0x42, 0xc1, 0x8e, 0xc0, 0x42, 0xc2, 0x8e, - 0xc2, 0x42, 0xc2, 0x8e, 0xc2, 0x42, 0xc2, 0x8e, 0xc2, 0x42, 0xc3, 0x8e, - 0xc3, 0x42, 0xc3, 0x8e, 0xc3, 0x42, 0xc3, 0x8e, 0xc3, 0x42, 0xc4, 0x8e, - 0xc3, 0x42, 0xc4, 0x8e, 0xc3, 0x42, 0xc4, 0x8e, 0xc3, 0x42, 0xc5, 0x8f, - 0xc5, 0x42, 0xc5, 0x8f, 0xc5, 0x42, 0xc5, 0x8f, 0xc5, 0x42, 0xc6, 0x8f, - 0xc6, 0x42, 0xc6, 0x8f, 0xc6, 0x42, 0xc6, 0x8f, 0xc6, 0x42, 0xc6, 0x8f, - 0xc6, 0x42, 0xc7, 0x8f, 0xc6, 0x42, 0xc7, 0x8f, 0xc6, 0x42, 0xc7, 0x90, - 0xc7, 0x42, 0xc8, 0x90, 0xc8, 0x42, 0xc8, 0x90, 0xc8, 0x42, 0xc8, 0x90, - 0xc8, 0x42, 0xc9, 0x90, 0xc9, 0x42, 0xc9, 0x90, 0xc9, 0x42, 0xc9, 0x90, - 0xc9, 0x42, 0xc9, 0x90, 0xc9, 0x42, 0xca, 0x90, 0xc9, 0x42, 0xca, 0x90, - 0xc9, 0x42, 0xca, 0x90, 0xc9, 0x42, 0xcb, 0x90, 0xc9, 0x42, 0xcb, 0x91, - 0xcb, 0x42, 0xcb, 0x91, 0xcb, 0x42, 0xcc, 0x91, 0xcc, 0x42, 0xcc, 0x91, - 0xcb, 0x42, 0xcc, 0x91, 0xcc, 0x42, 0xcc, 0x91, 0xcb, 0x42, 0xcd, 0x91, - 0xcc, 0x42, 0xcd, 0x91, 0xcb, 0x42, 0xcd, 0x91, 0xcc, 0x42, 0xce, 0x92, - 0xce, 0x42, 0xce, 0x92, 0xce, 0x42, 0xce, 0x92, 0xce, 0x42, 0xce, 0x92, - 0xce, 0x42, 0xcf, 0x92, 0xce, 0x42, 0xcf, 0x92, 0xce, 0x42, 0xcf, 0x92, - 0xce, 0x42, 0xd0, 0x92, 0xce, 0x42, 0xd0, 0x92, 0xce, 0x42, 0xd0, 0x92, - 0xce, 0x42, 0xd0, 0x93, 0xd0, 0x42, 0xd1, 0x93, 0xd1, 0x42, 0xd1, 0x93, - 0xd1, 0x42, 0xd1, 0x93, 0xd1, 0x42, 0xd2, 0x93, 0xd1, 0x42, 0xd2, 0x93, - 0xd1, 0x42, 0xd2, 0x93, 0xd1, 0x42, 0xd2, 0x93, 0xd1, 0x42, 0xd3, 0x93, - 0xd1, 0x42, 0xd3, 0x93, 0xd1, 0x42, 0xd3, 0x93, 0xd1, 0x42, 0xd4, 0x94, - 0xd4, 0x42, 0xd4, 0x94, 0xd3, 0x42, 0xd4, 0x94, 0xd4, 0x42, 0xd4, 0x94, - 0xd3, 0x42, 0xd5, 0x94, 0xd4, 0x42, 0xd5, 0x94, 0xd3, 0x42, 0xd5, 0x94, - 0xd4, 0x42, 0xd6, 0x94, 0xd3, 0x42, 0xd6, 0x94, 0xd4, 0x42, 0xd6, 0x95, - 0xd6, 0x42, 0xd6, 0x95, 0xd6, 0x42, 0xd7, 0x95, 0xd6, 0x42, 0xd7, 0x95, - 0xd6, 0x42, 0xd7, 0x95, 0xd6, 0x42, 0xd7, 0x95, 0xd6, 0x42, 0xd8, 0x95, - 0xd6, 0x42, 0xd8, 0x95, 0xd6, 0x42, 0xd8, 0x95, 0xd6, 0x42, 0xd9, 0x95, - 0xd6, 0x42, 0xd9, 0x96, 0xd9, 0x42, 0xd9, 0x96, 0xd9, 0x42, 0xd9, 0x96, - 0xd9, 0x42, 0xda, 0x96, 0xd9, 0x42, 0xda, 0x96, 0xd9, 0x42, 0xda, 0x96, - 0xd9, 0x42, 0xda, 0x96, 0xd9, 0x42, 0xdb, 0x96, 0xd9, 0x42, 0xdb, 0x96, - 0xd9, 0x42, 0xdb, 0x97, 0xdb, 0x42, 0xdb, 0x97, 0xdb, 0x42, 0xdc, 0x97, - 0xdb, 0x42, 0xdc, 0x97, 0xdb, 0x42, 0xdc, 0x97, 0xdb, 0x42, 0xdd, 0x97, - 0xdb, 0x42, 0xdd, 0x97, 0xdb, 0x42, 0xdd, 0x97, 0xdb, 0x42, 0xdd, 0x97, - 0xdb, 0x42, 0xde, 0x98, 0xde, 0x42, 0xde, 0x98, 0xde, 0x42, 0xde, 0x98, - 0xde, 0x42, 0xde, 0x98, 0xde, 0x42, 0xdf, 0x98, 0xde, 0x42, 0xdf, 0x98, - 0xde, 0x42, 0xdf, 0x98, 0xde, 0x42, 0xdf, 0x98, 0xde, 0x42, 0xe0, 0x98, - 0xde, 0x42, 0xe0, 0x98, 0xde, 0x42, 0xe0, 0x98, 0xde, 0x42, 0xe1, 0x98, - 0xde, 0x42, 0xe1, 0x98, 0xe0, 0x42, 0xe1, 0x98, 0xe0, 0x42, 0xe1, 0x98, - 0xe0, 0x42, 0xe2, 0x98, 0xe0, 0x42, 0xe2, 0x98, 0xe0, 0x42, 0xe2, 0x98, - 0xe0, 0x42, 0xe2, 0x98, 0xe0, 0x42, 0xe3, 0x98, 0xe0, 0x42, 0xe3, 0x98, - 0xe0, 0x42, 0xe3, 0x99, 0xe3, 0x42, 0xe3, 0x99, 0xe2, 0x42, 0xe4, 0x99, - 0xe3, 0x42, 0xe4, 0x99, 0xe2, 0x42, 0xe4, 0x99, 0xe3, 0x42, 0xe4, 0x99, - 0xe2, 0x42, 0xe5, 0x99, 0xe3, 0x42, 0xe5, 0x99, 0xe2, 0x42, 0xe5, 0x99, - 0xe3, 0x42, 0xe5, 0x9a, 0xe5, 0x42, 0xe6, 0x9a, 0xe5, 0x42, 0xe6, 0x9a, - 0xe5, 0x42, 0xe6, 0x9a, 0xe5, 0x42, 0xe6, 0x9a, 0xe5, 0x42, 0xe7, 0x9a, - 0xe5, 0x42, 0xe7, 0x9a, 0xe5, 0x42, 0xe7, 0x9a, 0xe5, 0x42, 0xe7, 0x9a, - 0xe5, 0x42, 0xe8, 0x9a, 0xe5, 0x42, 0xe8, 0x9b, 0xe7, 0x42, 0xe8, 0x9a, - 0xe5, 0x42, 0xe8, 0x9b, 0xe7, 0x42, 0xe9, 0x9b, 0xe7, 0x42, 0xe9, 0x9b, - 0xe7, 0x42, 0xe9, 0x9b, 0xe7, 0x42, 0xe9, 0x9b, 0xe7, 0x42, 0xea, 0x9b, - 0xe7, 0x42, 0xea, 0x9b, 0xe7, 0x42, 0xea, 0x9b, 0xe7, 0x42, 0xea, 0x9b, - 0xe7, 0x42, 0xeb, 0x9c, 0xea, 0x42, 0xeb, 0x9c, 0xea, 0x42, 0xeb, 0x9c, - 0xea, 0x42, 0xeb, 0x9c, 0xea, 0x42, 0xec, 0x9c, 0xea, 0x42, 0xec, 0x9c, - 0xea, 0x42, 0xec, 0x9c, 0xea, 0x42, 0xec, 0x9c, 0xea, 0x42, 0xec, 0x9c, - 0xea, 0x42, 0xed, 0x9c, 0xea, 0x42, 0xed, 0x9d, 0xec, 0x42, 0xed, 0x9d, - 0xec, 0x42, 0xed, 0x9d, 0xec, 0x42, 0xee, 0x9d, 0xec, 0x42, 0xee, 0x9d, - 0xec, 0x42, 0xee, 0x9d, 0xec, 0x42, 0xee, 0x9d, 0xec, 0x42, 0xef, 0x9d, - 0xec, 0x42, 0xef, 0x9d, 0xec, 0x42, 0xef, 0x9d, 0xee, 0x42, 0xef, 0x9d, - 0xee, 0x42, 0xf0, 0x9d, 0xee, 0x42, 0xf0, 0x9d, 0xee, 0x42, 0xf0, 0x9d, - 0xee, 0x42, 0xf0, 0x9d, 0xee, 0x42, 0xf1, 0x9d, 0xee, 0x42, 0xf1, 0x9d, - 0xee, 0x42, 0xf1, 0x9d, 0xee, 0x42, 0xf1, 0x9e, 0xf0, 0x42, 0xf2, 0x9e, - 0xf1, 0x42, 0xf2, 0x9e, 0xf0, 0x42, 0xf2, 0x9e, 0xf1, 0x42, 0xf2, 0x9e, - 0xf0, 0x42, 0xf2, 0x9e, 0xf1, 0x42, 0xf3, 0x9e, 0xf0, 0x42, 0xf3, 0x9e, - 0xf1, 0x42, 0xf3, 0x9e, 0xf0, 0x42, 0xf3, 0x9e, 0xf1, 0x42, 0xf4, 0x9f, - 0xf3, 0x42, 0xf4, 0x9e, 0xf1, 0x42, 0xf4, 0x9f, 0xf3, 0x42, 0xf4, 0x9f, - 0xf2, 0x42, 0xf5, 0x9f, 0xf3, 0x42, 0xf5, 0x9f, 0xf2, 0x42, 0xf5, 0x9f, - 0xf3, 0x42, 0xf5, 0x9f, 0xf2, 0x42, 0xf5, 0x9f, 0xf3, 0x42, 0xf6, 0xa0, - 0xf5, 0x42, 0xf6, 0x9f, 0xf3, 0x42, 0xf6, 0xa0, 0xf5, 0x42, 0xf6, 0xa0, - 0xf5, 0x42, 0xf7, 0xa0, 0xf5, 0x42, 0xf7, 0xa0, 0xf5, 0x42, 0xf7, 0xa0, - 0xf5, 0x42, 0xf7, 0xa0, 0xf5, 0x42, 0xf8, 0xa0, 0xf5, 0x42, 0xf8, 0xa0, - 0xf5, 0x42, 0xf8, 0xa0, 0xf5, 0x42, 0xf8, 0xa1, 0xf7, 0x42, 0xf8, 0xa1, - 0xf7, 0x42, 0xf9, 0xa1, 0xf7, 0x42, 0xf9, 0xa1, 0xf7, 0x42, 0xf9, 0xa1, - 0xf7, 0x42, 0xf9, 0xa1, 0xf7, 0x42, 0xfa, 0xa1, 0xf7, 0x42, 0xfa, 0xa1, - 0xf7, 0x42, 0xfa, 0xa1, 0xf7, 0x42, 0xfa, 0xa1, 0xf7, 0x42, 0xfa, 0xa1, - 0xf9, 0x42, 0xfb, 0xa1, 0xf7, 0x42, 0xfb, 0xa1, 0xf9, 0x42, 0xfb, 0xa1, - 0xf9, 0x42, 0xfb, 0xa1, 0xf9, 0x42, 0xfc, 0xa1, 0xf9, 0x42, 0xfc, 0xa1, - 0xf9, 0x42, 0xfc, 0xa1, 0xf9, 0x42, 0xfc, 0xa1, 0xf9, 0x42, 0xfc, 0xa2, - 0xfb, 0x42, 0xfd, 0xa1, 0xf9, 0x42, 0xfd, 0xa2, 0xfb, 0x42, 0xfd, 0xa2, - 0xfb, 0x42, 0xfd, 0xa2, 0xfb, 0x42, 0xfe, 0xa2, 0xfb, 0x42, 0xfe, 0xa2, - 0xfb, 0x42, 0xfe, 0xa2, 0xfb, 0x42, 0xfe, 0xa2, 0xfb, 0x42, 0xfe, 0xa2, - 0xfb, 0x42, 0xff, 0xa2, 0xfb, 0x42, 0xff, 0xa2, 0xfb, 0x42, 0x03, 0x95, - 0x99, 0x43, 0x0a, 0x98, 0x98, 0x43, 0x0f, 0x95, 0x99, 0x43, 0x14, 0x98, - 0x98, 0x43, 0x17, 0x95, 0x99, 0x43, 0x1b, 0x98, 0x98, 0x43, 0x1e, 0x95, - 0x99, 0x43, 0x20, 0x98, 0x98, 0x43, 0x23, 0x95, 0x99, 0x43, 0x25, 0x98, - 0x98, 0x43, 0x27, 0x95, 0x99, 0x43, 0x29, 0x98, 0x98, 0x43, 0x2b, 0x95, - 0x99, 0x43, 0x2d, 0x98, 0x98, 0x43, 0x2f, 0x95, 0x99, 0x43, 0x31, 0x98, - 0x98, 0x43, 0x32, 0x95, 0x99, 0x43, 0x34, 0x98, 0x98, 0x43, 0x35, 0x95, - 0x99, 0x43, 0x37, 0x98, 0x98, 0x43, 0x38, 0x95, 0x99, 0x43, 0x3a, 0x98, - 0x98, 0x43, 0x3b, 0x95, 0x99, 0x43, 0x3c, 0x98, 0x98, 0x43, 0x3e, 0x95, - 0x99, 0x43, 0x3f, 0x98, 0x98, 0x43, 0x40, 0x95, 0x99, 0x43, 0x42, 0x98, - 0x98, 0x43, 0x43, 0x95, 0x99, 0x43, 0x44, 0x98, 0x98, 0x43, 0x45, 0x95, - 0x99, 0x43, 0x46, 0x98, 0x98, 0x43, 0x47, 0x95, 0x99, 0x43, 0x48, 0x98, - 0x98, 0x43, 0x49, 0x95, 0x99, 0x43, 0x4a, 0x98, 0x98, 0x43, 0x4b, 0x95, - 0x99, 0x43, 0x4c, 0x98, 0x98, 0x43, 0x4d, 0x95, 0x99, 0x43, 0x4e, 0x98, - 0x98, 0x43, 0x4f, 0x95, 0x99, 0x43, 0x50, 0x98, 0x98, 0x43, 0x51, 0x95, - 0x99, 0x43, 0x52, 0x93, 0x99, 0x43, 0x53, 0x95, 0x99, 0x43, 0x54, 0x93, - 0x99, 0x43, 0x55, 0x95, 0x99, 0x43, 0x56, 0x93, 0x99, 0x43, 0x57, 0x95, - 0x99, 0x43, 0x58, 0x93, 0x99, 0x43, 0x58, 0x95, 0x99, 0x43, 0x59, 0x93, - 0x99, 0x43, 0x5a, 0x95, 0x99, 0x43, 0x5b, 0x93, 0x99, 0x43, 0x5c, 0x95, - 0x99, 0x43, 0x5d, 0x93, 0x99, 0x43, 0x5d, 0x95, 0x99, 0x43, 0x5e, 0x93, - 0x99, 0x43, 0x5f, 0x95, 0x99, 0x43, 0x60, 0x93, 0x99, 0x43, 0x60, 0x95, - 0x99, 0x43, 0x61, 0x93, 0x99, 0x43, 0x62, 0x95, 0x99, 0x43, 0x63, 0x93, - 0x99, 0x43, 0x63, 0x95, 0x99, 0x43, 0x64, 0x93, 0x99, 0x43, 0x65, 0x95, - 0x99, 0x43, 0x66, 0x93, 0x99, 0x43, 0x66, 0x95, 0x99, 0x43, 0x67, 0x93, - 0x99, 0x43, 0x68, 0x95, 0x99, 0x43, 0x68, 0x93, 0x99, 0x43, 0x69, 0x95, - 0x99, 0x43, 0x6a, 0x93, 0x99, 0x43, 0x6a, 0x95, 0x99, 0x43, 0x6b, 0x93, - 0x99, 0x43, 0x6c, 0x95, 0x99, 0x43, 0x6c, 0x93, 0x99, 0x43, 0x6d, 0x95, - 0x99, 0x43, 0x6e, 0x93, 0x99, 0x43, 0x6e, 0x90, 0x9a, 0x43, 0x6f, 0x93, - 0x99, 0x43, 0x70, 0x90, 0x9a, 0x43, 0x70, 0x93, 0x99, 0x43, 0x71, 0x90, - 0x9a, 0x43, 0x72, 0x93, 0x99, 0x43, 0x72, 0x90, 0x9a, 0x43, 0x73, 0x93, - 0x99, 0x43, 0x73, 0x90, 0x9a, 0x43, 0x74, 0x93, 0x99, 0x43, 0x75, 0x90, - 0x9a, 0x43, 0x75, 0x93, 0x99, 0x43, 0x76, 0x90, 0x9a, 0x43, 0x76, 0x93, - 0x99, 0x43, 0x77, 0x90, 0x9a, 0x43, 0x78, 0x93, 0x99, 0x43, 0x78, 0x90, - 0x9a, 0x43, 0x79, 0x93, 0x99, 0x43, 0x79, 0x90, 0x9a, 0x43, 0x7a, 0x93, - 0x99, 0x43, 0x7a, 0x90, 0x9a, 0x43, 0x7b, 0x93, 0x99, 0x43, 0x7c, 0x90, - 0x9a, 0x43, 0x7c, 0x93, 0x99, 0x43, 0x7d, 0x90, 0x9a, 0x43, 0x7d, 0x93, - 0x99, 0x43, 0x7e, 0x90, 0x9a, 0x43, 0x7e, 0x93, 0x99, 0x43, 0x7f, 0x90, - 0x9a, 0x43, 0x7f, 0x93, 0x99, 0x43, 0x80, 0x90, 0x9a, 0x43, 0x81, 0x93, - 0x99, 0x43, 0x81, 0x90, 0x9a, 0x43, 0x82, 0x93, 0x99, 0x43, 0x82, 0x90, - 0x9a, 0x43, 0x83, 0x93, 0x99, 0x43, 0x83, 0x90, 0x9a, 0x43, 0x84, 0x8c, - 0x9a, 0x43, 0x84, 0x90, 0x9a, 0x43, 0x85, 0x8c, 0x9a, 0x43, 0x85, 0x90, - 0x9a, 0x43, 0x86, 0x8c, 0x9a, 0x43, 0x86, 0x90, 0x9a, 0x43, 0x87, 0x8c, - 0x9a, 0x43, 0x87, 0x90, 0x9a, 0x43, 0x88, 0x8c, 0x9a, 0x43, 0x88, 0x90, - 0x9a, 0x43, 0x89, 0x8c, 0x9a, 0x43, 0x89, 0x90, 0x9a, 0x43, 0x8a, 0x8c, - 0x9a, 0x43, 0x8a, 0x90, 0x9a, 0x43, 0x8b, 0x8c, 0x9a, 0x43, 0x8b, 0x90, - 0x9a, 0x43, 0x8c, 0x8c, 0x9a, 0x43, 0x8c, 0x90, 0x9a, 0x43, 0x8d, 0x8c, - 0x9a, 0x43, 0x8d, 0x90, 0x9a, 0x43, 0x8e, 0x8c, 0x9a, 0x43, 0x8e, 0x90, - 0x9a, 0x43, 0x8e, 0x8c, 0x9a, 0x43, 0x8f, 0x90, 0x9a, 0x43, 0x8f, 0x8c, - 0x9a, 0x43, 0x90, 0x90, 0x9a, 0x43, 0x90, 0x8c, 0x9a, 0x43, 0x91, 0x90, - 0x9a, 0x43, 0x91, 0x8c, 0x9a, 0x43, 0x92, 0x90, 0x9a, 0x43, 0x92, 0x8c, - 0x9a, 0x43, 0x93, 0x90, 0x9a, 0x43, 0x93, 0x8c, 0x9a, 0x43, 0x94, 0x8c, - 0x9a, 0x43, 0x94, 0x8c, 0x9a, 0x43, 0x94, 0x8c, 0x9a, 0x43, 0x95, 0x8c, - 0x9a, 0x43, 0x95, 0x8c, 0x9a, 0x43, 0x96, 0x8c, 0x9a, 0x43, 0x96, 0x8c, - 0x9a, 0x43, 0x97, 0x8c, 0x9a, 0x43, 0x97, 0x8c, 0x9a, 0x43, 0x98, 0x8c, - 0x9a, 0x43, 0x98, 0x8c, 0x9a, 0x43, 0x98, 0x8c, 0x9a, 0x43, 0x99, 0x8c, - 0x9a, 0x43, 0x99, 0x8c, 0x9a, 0x43, 0x9a, 0x8c, 0x9a, 0x43, 0x9a, 0x8c, - 0x9a, 0x42, 0x9a, 0x8c, 0x9a, 0x43, 0x9a, 0x8c, 0x9b, 0x42, 0x9a, 0x8c, - 0x9b, 0x43, 0x9a, 0x8c, 0x9c, 0x42, 0x9a, 0x8c, 0x9c, 0x43, 0x9e, 0x8c, - 0x9d, 0x45, 0x9f, 0x8c, 0x9d, 0x45, 0x9e, 0x8c, 0x9d, 0x45, 0x9f, 0x8c, - 0x9e, 0x45, 0x9e, 0x8c, 0x9e, 0x45, 0x9f, 0x8c, 0x9f, 0x45, 0x9f, 0x8c, - 0x9f, 0x45, 0x9f, 0x8c, 0x9f, 0x45, 0xa0, 0x8c, 0xa0, 0x45, 0xa0, 0x8c, - 0xa0, 0x45, 0xa1, 0x8c, 0xa1, 0x45, 0xa1, 0x8c, 0xa1, 0x45, 0xa1, 0x8c, - 0xa1, 0x45, 0xa1, 0x8c, 0xa2, 0x45, 0xa1, 0x8c, 0xa2, 0x45, 0xa1, 0x8c, - 0xa3, 0x45, 0xa1, 0x8c, 0xa3, 0x45, 0xa3, 0x8c, 0xa3, 0x46, 0xa4, 0x8c, - 0xa4, 0x46, 0xa4, 0x8c, 0xa4, 0x46, 0xa5, 0x8c, 0xa5, 0x46, 0xa5, 0x8c, - 0xa5, 0x46, 0xa5, 0x8c, 0xa5, 0x46, 0xa6, 0x8c, 0xa6, 0x46, 0xa5, 0x8c, - 0xa6, 0x46, 0xa6, 0x8c, 0xa6, 0x46, 0xa5, 0x8c, 0xa7, 0x46, 0xa6, 0x8c, - 0xa7, 0x46, 0xa8, 0x8c, 0xa8, 0x47, 0xa8, 0x8c, 0xa8, 0x47, 0xa8, 0x8c, - 0xa8, 0x47, 0xa9, 0x8c, 0xa9, 0x47, 0xa9, 0x8c, 0xa9, 0x47, 0xaa, 0x8c, - 0xaa, 0x47, 0xaa, 0x8c, 0xaa, 0x47, 0xaa, 0x8c, 0xaa, 0x47, 0xaa, 0x8c, - 0xab, 0x47, 0xaa, 0x8c, 0xab, 0x47, 0xaa, 0x8c, 0xab, 0x47, 0xac, 0x8c, - 0xac, 0x3e, 0xac, 0x8c, 0xac, 0x3e, 0xac, 0x8c, 0xac, 0x3e, 0xad, 0x8c, - 0xad, 0x3e, 0xad, 0x8c, 0xad, 0x3e, 0xaf, 0x8c, 0xae, 0x3f, 0xaf, 0x8c, - 0xae, 0x3f, 0xaf, 0x8c, 0xae, 0x3f, 0xaf, 0x8c, 0xaf, 0x3f, 0xaf, 0x8c, - 0xaf, 0x3f, 0xaf, 0x8c, 0xaf, 0x3f, 0xb0, 0x8c, 0xb0, 0x3f, 0xb0, 0x8c, - 0xb0, 0x3f, 0xb0, 0x8c, 0xb0, 0x3f, 0xb1, 0x8c, 0xb1, 0x3f, 0xb3, 0x8c, - 0xb1, 0x40, 0xb3, 0x8c, 0xb2, 0x40, 0xb3, 0x8c, 0xb2, 0x40, 0xb3, 0x8c, - 0xb2, 0x40, 0xb3, 0x8c, 0xb3, 0x40, 0xb3, 0x8c, 0xb3, 0x40, 0xb3, 0x8c, - 0xb3, 0x40, 0xb4, 0x8c, 0xb4, 0x40, 0xb4, 0x8c, 0xb4, 0x40, 0xb6, 0x8c, - 0xb4, 0x41, 0xb6, 0x8c, 0xb5, 0x41, 0xb6, 0x8c, 0xb5, 0x41, 0xb6, 0x8c, - 0xb5, 0x41, 0xb6, 0x8c, 0xb6, 0x41, 0xb6, 0x8c, 0xb6, 0x41, 0xb6, 0x8c, - 0xb6, 0x41, 0xb7, 0x8c, 0xb7, 0x41, 0xb7, 0x8c, 0xb7, 0x41, 0xb7, 0x8c, - 0xb7, 0x41, 0xb8, 0x8c, 0xb8, 0x41, 0xb9, 0x8c, 0xb8, 0x42, 0xb9, 0x8c, - 0xb8, 0x42, 0xb9, 0x8c, 0xb9, 0x42, 0xb9, 0x8c, 0xb9, 0x42, 0xb9, 0x8c, - 0xb9, 0x42, 0xba, 0x8c, 0xba, 0x42, 0xba, 0x8c, 0xba, 0x42, 0xba, 0x8c, - 0xba, 0x42, 0xbb, 0x8c, 0xbb, 0x42, 0xbb, 0x8c, 0xbb, 0x42, 0xbb, 0x8c, - 0xbb, 0x42, 0xbc, 0x8c, 0xbc, 0x42, 0xbc, 0x8d, 0xbc, 0x43, 0xbc, 0x8d, - 0xbc, 0x43, 0xbd, 0x8d, 0xbd, 0x43, 0xbd, 0x8d, 0xbd, 0x43, 0xbd, 0x8d, - 0xbd, 0x43, 0xbe, 0x8d, 0xbe, 0x43, 0xbe, 0x8d, 0xbe, 0x43, 0xbe, 0x8d, - 0xbe, 0x43, 0xbf, 0x8d, 0xbf, 0x43, 0xbf, 0x8d, 0xbe, 0x43, 0xbf, 0x8d, - 0xbf, 0x43, 0xc0, 0x8e, 0xc0, 0x43, 0xc0, 0x8e, 0xc0, 0x43, 0xc0, 0x8e, - 0xc0, 0x43, 0xc1, 0x8e, 0xc1, 0x43, 0xc1, 0x8e, 0xc1, 0x43, 0xc1, 0x8e, - 0xc1, 0x43, 0xc1, 0x8e, 0xc1, 0x43, 0xc2, 0x8e, 0xc1, 0x43, 0xc2, 0x8e, - 0xc1, 0x43, 0xc2, 0x8e, 0xc1, 0x43, 0xc3, 0x8e, 0xc1, 0x43, 0xc3, 0x8f, - 0xc3, 0x43, 0xc3, 0x8f, 0xc3, 0x43, 0xc4, 0x8f, 0xc4, 0x43, 0xc4, 0x8f, - 0xc4, 0x43, 0xc4, 0x8f, 0xc4, 0x43, 0xc5, 0x8f, 0xc5, 0x43, 0xc5, 0x8f, - 0xc4, 0x43, 0xc5, 0x8f, 0xc5, 0x43, 0xc6, 0x8f, 0xc4, 0x43, 0xc6, 0x8f, - 0xc5, 0x43, 0xc6, 0x90, 0xc6, 0x43, 0xc6, 0x90, 0xc6, 0x43, 0xc7, 0x90, - 0xc7, 0x43, 0xc7, 0x90, 0xc7, 0x43, 0xc7, 0x90, 0xc7, 0x43, 0xc8, 0x90, - 0xc7, 0x43, 0xc8, 0x90, 0xc7, 0x43, 0xc8, 0x90, 0xc7, 0x43, 0xc9, 0x90, - 0xc7, 0x43, 0xc9, 0x91, 0xc9, 0x43, 0xc9, 0x91, 0xc9, 0x43, 0xc9, 0x91, - 0xc9, 0x43, 0xca, 0x91, 0xca, 0x43, 0xca, 0x91, 0xca, 0x43, 0xca, 0x91, - 0xca, 0x43, 0xcb, 0x91, 0xca, 0x43, 0xcb, 0x91, 0xca, 0x43, 0xcb, 0x91, - 0xca, 0x43, 0xcc, 0x91, 0xca, 0x43, 0xcc, 0x91, 0xca, 0x43, 0xcc, 0x92, - 0xcc, 0x43, 0xcc, 0x92, 0xcc, 0x43, 0xcd, 0x92, 0xcd, 0x43, 0xcd, 0x92, - 0xcd, 0x43, 0xcd, 0x92, 0xcd, 0x43, 0xce, 0x92, 0xcd, 0x43, 0xce, 0x92, - 0xcd, 0x43, 0xce, 0x92, 0xcd, 0x43, 0xce, 0x92, 0xcd, 0x43, 0xcf, 0x92, - 0xcd, 0x43, 0xcf, 0x93, 0xcf, 0x43, 0xcf, 0x93, 0xcf, 0x43, 0xd0, 0x93, - 0xd0, 0x43, 0xd0, 0x93, 0xcf, 0x43, 0xd0, 0x93, 0xd0, 0x43, 0xd0, 0x93, - 0xcf, 0x43, 0xd1, 0x93, 0xd0, 0x43, 0xd1, 0x93, 0xcf, 0x43, 0xd1, 0x93, - 0xd0, 0x43, 0xd2, 0x94, 0xd2, 0x43, 0xd2, 0x94, 0xd2, 0x43, 0xd2, 0x94, - 0xd2, 0x43, 0xd2, 0x94, 0xd2, 0x43, 0xd3, 0x94, 0xd2, 0x43, 0xd3, 0x94, - 0xd2, 0x43, 0xd3, 0x94, 0xd2, 0x43, 0xd4, 0x94, 0xd2, 0x43, 0xd4, 0x94, - 0xd2, 0x43, 0xd4, 0x94, 0xd2, 0x43, 0xd4, 0x94, 0xd2, 0x43, 0xd5, 0x94, - 0xd2, 0x43, 0xd5, 0x94, 0xd5, 0x43, 0xd5, 0x94, 0xd5, 0x43, 0xd6, 0x94, - 0xd5, 0x43, 0xd6, 0x94, 0xd5, 0x43, 0xd6, 0x94, 0xd5, 0x43, 0xd6, 0x94, - 0xd5, 0x43, 0xd7, 0x94, 0xd5, 0x43, 0xd7, 0x94, 0xd5, 0x43, 0xd7, 0x94, - 0xd5, 0x43, 0xd7, 0x95, 0xd7, 0x43, 0xd8, 0x95, 0xd7, 0x43, 0xd8, 0x95, - 0xd7, 0x43, 0xd8, 0x95, 0xd7, 0x43, 0xd9, 0x95, 0xd7, 0x43, 0xd9, 0x95, - 0xd7, 0x43, 0xd9, 0x95, 0xd7, 0x43, 0xd9, 0x95, 0xd7, 0x43, 0xda, 0x95, - 0xd7, 0x43, 0xda, 0x96, 0xda, 0x43, 0xda, 0x96, 0xda, 0x43, 0xda, 0x96, - 0xda, 0x43, 0xdb, 0x96, 0xda, 0x43, 0xdb, 0x96, 0xda, 0x43, 0xdb, 0x96, - 0xda, 0x43, 0xdb, 0x96, 0xda, 0x43, 0xdc, 0x96, 0xda, 0x43, 0xdc, 0x96, - 0xda, 0x43, 0xdc, 0x96, 0xda, 0x43, 0xdd, 0x97, 0xdd, 0x43, 0xdd, 0x97, - 0xdc, 0x43, 0xdd, 0x97, 0xdd, 0x43, 0xdd, 0x97, 0xdc, 0x43, 0xde, 0x97, - 0xdd, 0x43, 0xde, 0x97, 0xdc, 0x43, 0xde, 0x97, 0xdd, 0x43, 0xde, 0x97, - 0xdc, 0x43, 0xdf, 0x97, 0xdd, 0x43, 0xdf, 0x98, 0xdf, 0x43, 0xdf, 0x97, - 0xdd, 0x43, 0xdf, 0x98, 0xdf, 0x43, 0xe0, 0x98, 0xdf, 0x43, 0xe0, 0x98, - 0xdf, 0x43, 0xe0, 0x98, 0xdf, 0x43, 0xe1, 0x98, 0xdf, 0x43, 0xe1, 0x98, - 0xdf, 0x43, 0xe1, 0x98, 0xdf, 0x43, 0xe1, 0x98, 0xdf, 0x43, 0xe2, 0x98, - 0xdf, 0x43, 0xe2, 0x99, 0xe1, 0x43, 0xe2, 0x99, 0xe2, 0x43, 0xe2, 0x99, - 0xe1, 0x43, 0xe3, 0x99, 0xe2, 0x43, 0xe3, 0x99, 0xe1, 0x43, 0xe3, 0x99, - 0xe2, 0x43, 0xe3, 0x99, 0xe1, 0x43, 0xe4, 0x99, 0xe2, 0x43, 0xe4, 0x99, - 0xe1, 0x43, 0xe4, 0x99, 0xe2, 0x43, 0xe4, 0x9a, 0xe4, 0x43, 0xe5, 0x9a, - 0xe4, 0x43, 0xe5, 0x9a, 0xe4, 0x43, 0xe5, 0x9a, 0xe4, 0x43, 0xe5, 0x9a, - 0xe4, 0x43, 0xe6, 0x9a, 0xe4, 0x43, 0xe6, 0x9a, 0xe4, 0x43, 0xe6, 0x9a, - 0xe4, 0x43, 0xe6, 0x9a, 0xe4, 0x43, 0xe7, 0x9a, 0xe6, 0x43, 0xe7, 0x9a, - 0xe6, 0x43, 0xe7, 0x9a, 0xe6, 0x43, 0xe7, 0x9a, 0xe6, 0x43, 0xe8, 0x9a, - 0xe6, 0x43, 0xe8, 0x9a, 0xe6, 0x43, 0xe8, 0x9a, 0xe6, 0x43, 0xe8, 0x9a, - 0xe6, 0x43, 0xe9, 0x9a, 0xe6, 0x43, 0xe9, 0x9b, 0xe8, 0x43, 0xe9, 0x9b, - 0xe9, 0x43, 0xe9, 0x9b, 0xe8, 0x43, 0xea, 0x9b, 0xe9, 0x43, 0xea, 0x9b, - 0xe8, 0x43, 0xea, 0x9b, 0xe9, 0x43, 0xea, 0x9b, 0xe8, 0x43, 0xeb, 0x9b, - 0xe9, 0x43, 0xeb, 0x9b, 0xe8, 0x43, 0xeb, 0x9b, 0xe9, 0x43, 0xeb, 0x9b, - 0xe8, 0x43, 0xec, 0x9b, 0xe9, 0x43, 0xec, 0x9c, 0xeb, 0x43, 0xec, 0x9c, - 0xeb, 0x43, 0xec, 0x9c, 0xeb, 0x43, 0xec, 0x9c, 0xeb, 0x43, 0xed, 0x9c, - 0xeb, 0x43, 0xed, 0x9c, 0xeb, 0x43, 0xed, 0x9c, 0xeb, 0x43, 0xed, 0x9c, - 0xeb, 0x43, 0xee, 0x9c, 0xeb, 0x43, 0xee, 0x9d, 0xed, 0x43, 0xee, 0x9d, - 0xed, 0x43, 0xee, 0x9d, 0xed, 0x43, 0xef, 0x9d, 0xed, 0x43, 0xef, 0x9d, - 0xed, 0x43, 0xef, 0x9d, 0xed, 0x43, 0xef, 0x9d, 0xed, 0x43, 0xf0, 0x9d, - 0xed, 0x43, 0xf0, 0x9d, 0xed, 0x43, 0xf0, 0x9d, 0xed, 0x43, 0xf0, 0x9e, - 0xef, 0x43, 0xf1, 0x9e, 0xef, 0x43, 0xf1, 0x9e, 0xef, 0x43, 0xf1, 0x9e, - 0xef, 0x43, 0xf1, 0x9e, 0xef, 0x43, 0xf2, 0x9e, 0xef, 0x43, 0xf2, 0x9e, - 0xef, 0x43, 0xf2, 0x9e, 0xef, 0x43, 0xf2, 0x9e, 0xef, 0x43, 0xf2, 0x9f, - 0xf2, 0x43, 0xf3, 0x9e, 0xef, 0x43, 0xf3, 0x9f, 0xf2, 0x43, 0xf3, 0x9f, - 0xf1, 0x43, 0xf3, 0x9f, 0xf2, 0x43, 0xf4, 0x9f, 0xf1, 0x43, 0xf4, 0x9f, - 0xf2, 0x43, 0xf4, 0x9f, 0xf1, 0x43, 0xf4, 0x9f, 0xf2, 0x43, 0xf5, 0x9f, - 0xf4, 0x43, 0xf5, 0x9f, 0xf4, 0x43, 0xf5, 0x9f, 0xf4, 0x43, 0xf5, 0x9f, - 0xf4, 0x43, 0xf5, 0x9f, 0xf4, 0x43, 0xf6, 0x9f, 0xf4, 0x43, 0xf6, 0x9f, - 0xf4, 0x43, 0xf6, 0x9f, 0xf4, 0x43, 0xf6, 0x9f, 0xf4, 0x43, 0xf7, 0x9f, - 0xf4, 0x43, 0xf7, 0xa0, 0xf6, 0x43, 0xf7, 0x9f, 0xf4, 0x43, 0xf7, 0xa0, - 0xf6, 0x43, 0xf8, 0xa0, 0xf6, 0x43, 0xf8, 0xa0, 0xf6, 0x43, 0xf8, 0xa0, - 0xf6, 0x43, 0xf8, 0xa0, 0xf6, 0x43, 0xf8, 0xa0, 0xf6, 0x43, 0xf9, 0xa0, - 0xf6, 0x43, 0xf9, 0xa0, 0xf6, 0x43, 0xf9, 0xa0, 0xf6, 0x43, 0xf9, 0xa1, - 0xf8, 0x43, 0xfa, 0xa1, 0xf8, 0x43, 0xfa, 0xa1, 0xf8, 0x43, 0xfa, 0xa1, - 0xf8, 0x43, 0xfa, 0xa1, 0xf8, 0x43, 0xfa, 0xa1, 0xf8, 0x43, 0xfb, 0xa1, - 0xf8, 0x43, 0xfb, 0xa1, 0xf8, 0x43, 0xfb, 0xa1, 0xf8, 0x43, 0xfb, 0xa2, - 0xfa, 0x43, 0xfc, 0xa2, 0xfa, 0x43, 0xfc, 0xa2, 0xfa, 0x43, 0xfc, 0xa2, - 0xfa, 0x43, 0xfc, 0xa2, 0xfa, 0x43, 0xfc, 0xa2, 0xfa, 0x43, 0xfd, 0xa2, - 0xfa, 0x43, 0xfd, 0xa2, 0xfa, 0x43, 0xfd, 0xa2, 0xfa, 0x43, 0xfd, 0xa2, - 0xfa, 0x43, 0xfe, 0xa2, 0xfa, 0x43, 0xfe, 0xa2, 0xfa, 0x43, 0xfe, 0xa2, - 0xfa, 0x43, 0xfe, 0xa2, 0xfa, 0x43, 0xfe, 0xa2, 0xfa, 0x43, 0xff, 0xa2, - 0xfa, 0x43, 0xff, 0xa3, 0xfb, 0x43, 0x03, 0x9b, 0x98, 0x43, 0x0a, 0x98, - 0x98, 0x43, 0x0f, 0x9b, 0x98, 0x43, 0x14, 0x98, 0x98, 0x43, 0x17, 0x9b, - 0x98, 0x43, 0x1b, 0x98, 0x98, 0x43, 0x1e, 0x96, 0x99, 0x43, 0x20, 0x98, - 0x98, 0x43, 0x23, 0x96, 0x99, 0x43, 0x25, 0x98, 0x98, 0x43, 0x27, 0x96, - 0x99, 0x43, 0x29, 0x98, 0x98, 0x43, 0x2b, 0x96, 0x99, 0x43, 0x2d, 0x98, - 0x98, 0x43, 0x2f, 0x96, 0x99, 0x43, 0x31, 0x98, 0x98, 0x43, 0x32, 0x96, - 0x99, 0x43, 0x34, 0x98, 0x98, 0x43, 0x35, 0x96, 0x99, 0x43, 0x37, 0x98, - 0x98, 0x43, 0x38, 0x96, 0x99, 0x43, 0x3a, 0x98, 0x98, 0x43, 0x3b, 0x96, - 0x99, 0x43, 0x3c, 0x98, 0x98, 0x43, 0x3e, 0x96, 0x99, 0x43, 0x3f, 0x98, - 0x98, 0x43, 0x40, 0x96, 0x99, 0x43, 0x42, 0x98, 0x98, 0x43, 0x43, 0x96, - 0x99, 0x43, 0x44, 0x98, 0x98, 0x43, 0x45, 0x96, 0x99, 0x43, 0x46, 0x92, - 0x99, 0x43, 0x47, 0x96, 0x99, 0x43, 0x48, 0x92, 0x99, 0x43, 0x49, 0x96, - 0x99, 0x43, 0x4a, 0x92, 0x99, 0x43, 0x4b, 0x96, 0x99, 0x43, 0x4c, 0x92, - 0x99, 0x43, 0x4d, 0x96, 0x99, 0x43, 0x4e, 0x92, 0x99, 0x43, 0x4f, 0x96, - 0x99, 0x43, 0x50, 0x92, 0x99, 0x43, 0x51, 0x96, 0x99, 0x43, 0x52, 0x92, - 0x99, 0x43, 0x53, 0x96, 0x99, 0x43, 0x54, 0x92, 0x99, 0x43, 0x55, 0x96, - 0x99, 0x43, 0x56, 0x92, 0x99, 0x43, 0x57, 0x96, 0x99, 0x43, 0x58, 0x92, - 0x99, 0x43, 0x58, 0x96, 0x99, 0x43, 0x59, 0x92, 0x99, 0x43, 0x5a, 0x96, - 0x99, 0x43, 0x5b, 0x92, 0x99, 0x43, 0x5c, 0x96, 0x99, 0x43, 0x5d, 0x92, - 0x99, 0x43, 0x5d, 0x96, 0x99, 0x43, 0x5e, 0x92, 0x99, 0x43, 0x5f, 0x96, - 0x99, 0x43, 0x60, 0x92, 0x99, 0x43, 0x60, 0x96, 0x99, 0x43, 0x61, 0x92, - 0x99, 0x43, 0x62, 0x96, 0x99, 0x43, 0x63, 0x92, 0x99, 0x43, 0x63, 0x96, - 0x99, 0x43, 0x64, 0x92, 0x99, 0x43, 0x65, 0x96, 0x99, 0x43, 0x66, 0x92, - 0x99, 0x43, 0x66, 0x96, 0x99, 0x43, 0x67, 0x92, 0x99, 0x43, 0x68, 0x96, - 0x99, 0x43, 0x68, 0x92, 0x99, 0x43, 0x69, 0x8f, 0x9a, 0x43, 0x6a, 0x92, - 0x99, 0x43, 0x6a, 0x8f, 0x9a, 0x43, 0x6b, 0x92, 0x99, 0x43, 0x6c, 0x8f, - 0x9a, 0x43, 0x6c, 0x92, 0x99, 0x43, 0x6d, 0x8f, 0x9a, 0x43, 0x6e, 0x92, - 0x99, 0x43, 0x6e, 0x8f, 0x9a, 0x43, 0x6f, 0x92, 0x99, 0x43, 0x70, 0x8f, - 0x9a, 0x43, 0x70, 0x92, 0x99, 0x43, 0x71, 0x8f, 0x9a, 0x43, 0x72, 0x92, - 0x99, 0x43, 0x72, 0x8f, 0x9a, 0x43, 0x73, 0x92, 0x99, 0x43, 0x73, 0x8f, - 0x9a, 0x43, 0x74, 0x92, 0x99, 0x43, 0x75, 0x8f, 0x9a, 0x43, 0x75, 0x92, - 0x99, 0x43, 0x76, 0x8f, 0x9a, 0x43, 0x76, 0x92, 0x99, 0x43, 0x77, 0x8f, - 0x9a, 0x43, 0x78, 0x92, 0x99, 0x43, 0x78, 0x8f, 0x9a, 0x43, 0x79, 0x92, - 0x99, 0x43, 0x79, 0x8f, 0x9a, 0x43, 0x7a, 0x92, 0x99, 0x43, 0x7a, 0x8f, - 0x9a, 0x43, 0x7b, 0x92, 0x99, 0x43, 0x7c, 0x8f, 0x9a, 0x43, 0x7c, 0x92, - 0x99, 0x43, 0x7d, 0x8f, 0x9a, 0x43, 0x7d, 0x92, 0x99, 0x43, 0x7e, 0x8f, - 0x9a, 0x43, 0x7e, 0x92, 0x99, 0x43, 0x7f, 0x8f, 0x9a, 0x43, 0x7f, 0x92, - 0x99, 0x43, 0x80, 0x8f, 0x9a, 0x43, 0x81, 0x92, 0x99, 0x43, 0x81, 0x8f, - 0x9a, 0x43, 0x82, 0x92, 0x99, 0x43, 0x82, 0x8f, 0x9a, 0x43, 0x83, 0x92, - 0x99, 0x43, 0x83, 0x8f, 0x9a, 0x43, 0x84, 0x92, 0x99, 0x43, 0x84, 0x8f, - 0x9a, 0x43, 0x85, 0x92, 0x99, 0x43, 0x85, 0x8f, 0x9a, 0x43, 0x86, 0x92, - 0x99, 0x43, 0x86, 0x8f, 0x9a, 0x43, 0x87, 0x92, 0x99, 0x43, 0x87, 0x8f, - 0x9a, 0x43, 0x88, 0x92, 0x99, 0x43, 0x88, 0x8f, 0x9a, 0x43, 0x89, 0x92, - 0x99, 0x43, 0x89, 0x8f, 0x9a, 0x43, 0x8a, 0x8d, 0x9a, 0x43, 0x8a, 0x8f, - 0x9a, 0x43, 0x8b, 0x8d, 0x9a, 0x43, 0x8b, 0x8f, 0x9a, 0x43, 0x8c, 0x8d, - 0x9a, 0x43, 0x8c, 0x8f, 0x9a, 0x43, 0x8d, 0x8d, 0x9a, 0x43, 0x8d, 0x8f, - 0x9a, 0x43, 0x8e, 0x8d, 0x9a, 0x43, 0x8e, 0x8f, 0x9a, 0x43, 0x8e, 0x8d, - 0x9a, 0x43, 0x8f, 0x8f, 0x9a, 0x43, 0x8f, 0x8d, 0x9a, 0x43, 0x90, 0x8f, - 0x9a, 0x43, 0x90, 0x8d, 0x9a, 0x43, 0x91, 0x8f, 0x9a, 0x43, 0x91, 0x8d, - 0x9a, 0x43, 0x92, 0x8f, 0x9a, 0x43, 0x92, 0x8d, 0x9a, 0x43, 0x93, 0x8f, - 0x9a, 0x43, 0x93, 0x8d, 0x9a, 0x43, 0x94, 0x8f, 0x9a, 0x43, 0x94, 0x8d, - 0x9a, 0x43, 0x94, 0x8f, 0x9a, 0x43, 0x95, 0x8d, 0x9a, 0x43, 0x95, 0x8f, - 0x9a, 0x43, 0x96, 0x8d, 0x9a, 0x43, 0x96, 0x8f, 0x9a, 0x43, 0x97, 0x8d, - 0x9a, 0x43, 0x97, 0x8d, 0x9a, 0x43, 0x98, 0x8d, 0x9a, 0x43, 0x98, 0x8d, - 0x9a, 0x43, 0x98, 0x8d, 0x9a, 0x43, 0x99, 0x8d, 0x9a, 0x43, 0x99, 0x8d, - 0x9a, 0x43, 0x9a, 0x8d, 0x9a, 0x43, 0x9a, 0x8d, 0x9a, 0x42, 0x9a, 0x8d, - 0x9a, 0x43, 0x9a, 0x8d, 0x9b, 0x42, 0x9a, 0x8d, 0x9b, 0x43, 0x9a, 0x8d, - 0x9c, 0x42, 0x9e, 0x8d, 0x9c, 0x45, 0x9e, 0x8d, 0x9d, 0x44, 0x9f, 0x8d, - 0x9d, 0x44, 0x9e, 0x8d, 0x9d, 0x44, 0x9f, 0x8d, 0x9e, 0x44, 0x9e, 0x8d, - 0x9e, 0x44, 0x9f, 0x8d, 0x9f, 0x44, 0x9f, 0x8d, 0x9f, 0x44, 0x9f, 0x8d, - 0x9f, 0x44, 0x9f, 0x8d, 0xa0, 0x44, 0xa0, 0x8d, 0xa0, 0x45, 0xa1, 0x8d, - 0xa1, 0x45, 0xa1, 0x8d, 0xa1, 0x45, 0xa1, 0x8d, 0xa1, 0x45, 0xa2, 0x8d, - 0xa2, 0x45, 0xa2, 0x8d, 0xa2, 0x45, 0xa3, 0x8d, 0xa3, 0x45, 0xa3, 0x8d, - 0xa3, 0x45, 0xa3, 0x8d, 0xa3, 0x45, 0xa3, 0x8d, 0xa4, 0x45, 0xa3, 0x8d, - 0xa4, 0x45, 0xa3, 0x8d, 0xa5, 0x45, 0xa3, 0x8d, 0xa5, 0x45, 0xa5, 0x8d, - 0xa5, 0x46, 0xa6, 0x8d, 0xa6, 0x46, 0xa6, 0x8d, 0xa6, 0x46, 0xa6, 0x8d, - 0xa6, 0x46, 0xa7, 0x8d, 0xa7, 0x46, 0xa7, 0x8d, 0xa7, 0x46, 0xa8, 0x8d, - 0xa8, 0x46, 0xa7, 0x8d, 0xa8, 0x46, 0xa8, 0x8d, 0xa8, 0x46, 0xa7, 0x8d, - 0xa9, 0x46, 0xa8, 0x8d, 0xa9, 0x46, 0xaa, 0x8d, 0xaa, 0x47, 0xaa, 0x8d, - 0xaa, 0x47, 0xaa, 0x8d, 0xaa, 0x47, 0xab, 0x8d, 0xab, 0x47, 0xab, 0x8d, - 0xab, 0x47, 0xab, 0x8d, 0xab, 0x47, 0xac, 0x8d, 0xac, 0x47, 0xac, 0x8d, - 0xac, 0x47, 0xac, 0x8d, 0xac, 0x47, 0xac, 0x8d, 0xad, 0x47, 0xac, 0x8d, - 0xad, 0x47, 0xac, 0x8d, 0xae, 0x47, 0xae, 0x8d, 0xae, 0x3f, 0xae, 0x8d, - 0xae, 0x3f, 0xaf, 0x8d, 0xaf, 0x3f, 0xaf, 0x8d, 0xaf, 0x3f, 0xb1, 0x8d, - 0xaf, 0x40, 0xb1, 0x8d, 0xb0, 0x40, 0xb1, 0x8d, 0xb0, 0x40, 0xb1, 0x8d, - 0xb0, 0x40, 0xb1, 0x8d, 0xb1, 0x40, 0xb1, 0x8d, 0xb1, 0x40, 0xb2, 0x8d, - 0xb2, 0x40, 0xb2, 0x8d, 0xb2, 0x40, 0xb2, 0x8d, 0xb2, 0x40, 0xb4, 0x8d, - 0xb3, 0x40, 0xb4, 0x8d, 0xb3, 0x40, 0xb4, 0x8d, 0xb3, 0x40, 0xb4, 0x8d, - 0xb4, 0x40, 0xb4, 0x8d, 0xb4, 0x40, 0xb4, 0x8d, 0xb4, 0x40, 0xb5, 0x8d, - 0xb5, 0x40, 0xb5, 0x8d, 0xb5, 0x40, 0xb5, 0x8d, 0xb5, 0x40, 0xb6, 0x8d, - 0xb6, 0x40, 0xb7, 0x8d, 0xb6, 0x41, 0xb8, 0x8d, 0xb6, 0x41, 0xb7, 0x8d, - 0xb7, 0x41, 0xb8, 0x8d, 0xb7, 0x41, 0xb7, 0x8d, 0xb7, 0x41, 0xb8, 0x8d, - 0xb8, 0x41, 0xb8, 0x8d, 0xb8, 0x41, 0xb8, 0x8d, 0xb8, 0x41, 0xb9, 0x8d, - 0xb9, 0x41, 0xb9, 0x8d, 0xb9, 0x41, 0xb9, 0x8d, 0xb9, 0x41, 0xba, 0x8d, - 0xba, 0x42, 0xbb, 0x8d, 0xba, 0x42, 0xba, 0x8d, 0xba, 0x42, 0xbb, 0x8d, - 0xbb, 0x42, 0xbb, 0x8d, 0xbb, 0x42, 0xbb, 0x8d, 0xbb, 0x42, 0xbc, 0x8d, - 0xbc, 0x42, 0xbc, 0x8d, 0xbc, 0x42, 0xbc, 0x8d, 0xbc, 0x42, 0xbd, 0x8d, - 0xbd, 0x42, 0xbd, 0x8d, 0xbd, 0x42, 0xbd, 0x8e, 0xbd, 0x43, 0xbe, 0x8e, - 0xbe, 0x43, 0xbe, 0x8e, 0xbe, 0x43, 0xbe, 0x8e, 0xbe, 0x43, 0xbf, 0x8e, - 0xbf, 0x43, 0xbf, 0x8e, 0xbf, 0x43, 0xbf, 0x8e, 0xbf, 0x43, 0xc0, 0x8e, - 0xc0, 0x43, 0xc0, 0x8e, 0xc0, 0x43, 0xc0, 0x8e, 0xc0, 0x43, 0xc1, 0x8e, - 0xc0, 0x43, 0xc1, 0x8e, 0xc0, 0x43, 0xc1, 0x8e, 0xc1, 0x43, 0xc1, 0x8e, - 0xc1, 0x43, 0xc2, 0x8e, 0xc2, 0x43, 0xc2, 0x8e, 0xc2, 0x43, 0xc2, 0x8e, - 0xc2, 0x43, 0xc3, 0x8e, 0xc3, 0x43, 0xc3, 0x8e, 0xc3, 0x43, 0xc3, 0x8e, - 0xc3, 0x43, 0xc4, 0x8e, 0xc3, 0x43, 0xc4, 0x8e, 0xc3, 0x43, 0xc4, 0x8e, - 0xc3, 0x43, 0xc5, 0x8f, 0xc5, 0x43, 0xc5, 0x8f, 0xc5, 0x43, 0xc5, 0x8f, - 0xc5, 0x43, 0xc6, 0x8f, 0xc6, 0x43, 0xc6, 0x8f, 0xc6, 0x43, 0xc6, 0x8f, - 0xc6, 0x43, 0xc6, 0x8f, 0xc6, 0x43, 0xc7, 0x8f, 0xc6, 0x43, 0xc7, 0x8f, - 0xc6, 0x43, 0xc7, 0x90, 0xc7, 0x43, 0xc8, 0x90, 0xc8, 0x43, 0xc8, 0x90, - 0xc8, 0x43, 0xc8, 0x90, 0xc8, 0x43, 0xc9, 0x90, 0xc9, 0x43, 0xc9, 0x90, - 0xc9, 0x43, 0xc9, 0x90, 0xc9, 0x43, 0xc9, 0x90, 0xc9, 0x43, 0xca, 0x90, - 0xc9, 0x43, 0xca, 0x90, 0xc9, 0x43, 0xca, 0x91, 0xca, 0x43, 0xcb, 0x91, - 0xcb, 0x43, 0xcb, 0x91, 0xcb, 0x43, 0xcb, 0x91, 0xcb, 0x43, 0xcc, 0x91, - 0xcc, 0x43, 0xcc, 0x91, 0xcb, 0x43, 0xcc, 0x91, 0xcc, 0x43, 0xcc, 0x91, - 0xcb, 0x43, 0xcd, 0x91, 0xcc, 0x43, 0xcd, 0x91, 0xcb, 0x43, 0xcd, 0x91, - 0xcc, 0x43, 0xce, 0x92, 0xce, 0x43, 0xce, 0x92, 0xce, 0x43, 0xce, 0x92, - 0xce, 0x43, 0xce, 0x92, 0xce, 0x43, 0xcf, 0x92, 0xce, 0x43, 0xcf, 0x92, - 0xce, 0x43, 0xcf, 0x92, 0xce, 0x43, 0xd0, 0x92, 0xce, 0x43, 0xd0, 0x92, - 0xce, 0x43, 0xd0, 0x92, 0xce, 0x43, 0xd0, 0x93, 0xd0, 0x43, 0xd1, 0x93, - 0xd1, 0x43, 0xd1, 0x93, 0xd1, 0x43, 0xd1, 0x93, 0xd1, 0x43, 0xd2, 0x93, - 0xd1, 0x43, 0xd2, 0x93, 0xd1, 0x43, 0xd2, 0x93, 0xd1, 0x43, 0xd2, 0x93, - 0xd1, 0x43, 0xd3, 0x93, 0xd1, 0x43, 0xd3, 0x94, 0xd3, 0x43, 0xd3, 0x94, - 0xd3, 0x43, 0xd4, 0x94, 0xd4, 0x43, 0xd4, 0x94, 0xd3, 0x43, 0xd4, 0x94, - 0xd4, 0x43, 0xd4, 0x94, 0xd3, 0x43, 0xd5, 0x94, 0xd4, 0x43, 0xd5, 0x94, - 0xd3, 0x43, 0xd5, 0x94, 0xd4, 0x43, 0xd6, 0x94, 0xd3, 0x43, 0xd6, 0x94, - 0xd4, 0x43, 0xd6, 0x95, 0xd6, 0x43, 0xd6, 0x95, 0xd6, 0x43, 0xd7, 0x95, - 0xd6, 0x43, 0xd7, 0x95, 0xd6, 0x43, 0xd7, 0x95, 0xd6, 0x43, 0xd7, 0x95, - 0xd6, 0x43, 0xd8, 0x95, 0xd6, 0x43, 0xd8, 0x95, 0xd6, 0x43, 0xd8, 0x95, - 0xd6, 0x43, 0xd9, 0x95, 0xd6, 0x43, 0xd9, 0x96, 0xd9, 0x43, 0xd9, 0x96, - 0xd9, 0x43, 0xd9, 0x96, 0xd9, 0x43, 0xda, 0x96, 0xd9, 0x43, 0xda, 0x96, - 0xd9, 0x43, 0xda, 0x96, 0xd9, 0x43, 0xda, 0x96, 0xd9, 0x43, 0xdb, 0x96, - 0xd9, 0x43, 0xdb, 0x96, 0xd9, 0x43, 0xdb, 0x97, 0xdb, 0x43, 0xdb, 0x97, - 0xdb, 0x43, 0xdc, 0x97, 0xdb, 0x43, 0xdc, 0x97, 0xdb, 0x43, 0xdc, 0x97, - 0xdb, 0x43, 0xdd, 0x97, 0xdb, 0x43, 0xdd, 0x97, 0xdb, 0x43, 0xdd, 0x97, - 0xdb, 0x43, 0xdd, 0x97, 0xdb, 0x43, 0xde, 0x98, 0xde, 0x43, 0xde, 0x98, - 0xde, 0x43, 0xde, 0x98, 0xde, 0x43, 0xde, 0x98, 0xde, 0x43, 0xdf, 0x98, - 0xde, 0x43, 0xdf, 0x98, 0xde, 0x43, 0xdf, 0x98, 0xde, 0x43, 0xdf, 0x98, - 0xde, 0x43, 0xe0, 0x98, 0xde, 0x43, 0xe0, 0x98, 0xde, 0x43, 0xe0, 0x98, - 0xe0, 0x43, 0xe1, 0x98, 0xde, 0x43, 0xe1, 0x98, 0xe0, 0x43, 0xe1, 0x98, - 0xe0, 0x43, 0xe1, 0x98, 0xe0, 0x43, 0xe2, 0x98, 0xe0, 0x43, 0xe2, 0x98, - 0xe0, 0x43, 0xe2, 0x98, 0xe0, 0x43, 0xe2, 0x98, 0xe0, 0x43, 0xe3, 0x98, - 0xe0, 0x43, 0xe3, 0x98, 0xe0, 0x43, 0xe3, 0x99, 0xe3, 0x43, 0xe3, 0x99, - 0xe2, 0x43, 0xe4, 0x99, 0xe3, 0x43, 0xe4, 0x99, 0xe2, 0x43, 0xe4, 0x99, - 0xe3, 0x43, 0xe4, 0x99, 0xe2, 0x43, 0xe5, 0x99, 0xe3, 0x43, 0xe5, 0x99, - 0xe2, 0x43, 0xe5, 0x99, 0xe3, 0x43, 0xe5, 0x9a, 0xe5, 0x43, 0xe6, 0x9a, - 0xe5, 0x43, 0xe6, 0x9a, 0xe5, 0x43, 0xe6, 0x9a, 0xe5, 0x43, 0xe6, 0x9a, - 0xe5, 0x43, 0xe7, 0x9a, 0xe5, 0x43, 0xe7, 0x9a, 0xe5, 0x43, 0xe7, 0x9a, - 0xe5, 0x43, 0xe7, 0x9a, 0xe5, 0x43, 0xe8, 0x9a, 0xe5, 0x43, 0xe8, 0x9b, - 0xe7, 0x43, 0xe8, 0x9b, 0xe7, 0x43, 0xe8, 0x9b, 0xe7, 0x43, 0xe9, 0x9b, - 0xe7, 0x43, 0xe9, 0x9b, 0xe7, 0x43, 0xe9, 0x9b, 0xe7, 0x43, 0xe9, 0x9b, - 0xe7, 0x43, 0xea, 0x9b, 0xe7, 0x43, 0xea, 0x9b, 0xe7, 0x43, 0xea, 0x9c, - 0xea, 0x43, 0xea, 0x9c, 0xea, 0x43, 0xeb, 0x9c, 0xea, 0x43, 0xeb, 0x9c, - 0xea, 0x43, 0xeb, 0x9c, 0xea, 0x43, 0xeb, 0x9c, 0xea, 0x43, 0xec, 0x9c, - 0xea, 0x43, 0xec, 0x9c, 0xea, 0x43, 0xec, 0x9c, 0xea, 0x43, 0xec, 0x9c, - 0xea, 0x43, 0xec, 0x9c, 0xea, 0x43, 0xed, 0x9c, 0xea, 0x43, 0xed, 0x9d, - 0xec, 0x43, 0xed, 0x9d, 0xec, 0x43, 0xed, 0x9d, 0xec, 0x43, 0xee, 0x9d, - 0xec, 0x43, 0xee, 0x9d, 0xec, 0x43, 0xee, 0x9d, 0xec, 0x43, 0xee, 0x9d, - 0xec, 0x43, 0xef, 0x9d, 0xec, 0x43, 0xef, 0x9d, 0xec, 0x43, 0xef, 0x9d, - 0xee, 0x43, 0xef, 0x9d, 0xee, 0x43, 0xf0, 0x9d, 0xee, 0x43, 0xf0, 0x9d, - 0xee, 0x43, 0xf0, 0x9d, 0xee, 0x43, 0xf0, 0x9d, 0xee, 0x43, 0xf1, 0x9d, - 0xee, 0x43, 0xf1, 0x9d, 0xee, 0x43, 0xf1, 0x9d, 0xee, 0x43, 0xf1, 0x9e, - 0xf0, 0x43, 0xf2, 0x9e, 0xf1, 0x43, 0xf2, 0x9e, 0xf0, 0x43, 0xf2, 0x9e, - 0xf1, 0x43, 0xf2, 0x9e, 0xf0, 0x43, 0xf2, 0x9e, 0xf1, 0x43, 0xf3, 0x9e, - 0xf0, 0x43, 0xf3, 0x9e, 0xf1, 0x43, 0xf3, 0x9e, 0xf0, 0x43, 0xf3, 0x9e, - 0xf1, 0x43, 0xf4, 0x9f, 0xf3, 0x43, 0xf4, 0x9e, 0xf1, 0x43, 0xf4, 0x9f, - 0xf3, 0x43, 0xf4, 0x9f, 0xf2, 0x43, 0xf5, 0x9f, 0xf3, 0x43, 0xf5, 0x9f, - 0xf2, 0x43, 0xf5, 0x9f, 0xf3, 0x43, 0xf5, 0x9f, 0xf2, 0x43, 0xf5, 0x9f, - 0xf3, 0x43, 0xf6, 0xa0, 0xf5, 0x43, 0xf6, 0x9f, 0xf3, 0x43, 0xf6, 0xa0, - 0xf5, 0x43, 0xf6, 0xa0, 0xf5, 0x43, 0xf7, 0xa0, 0xf5, 0x43, 0xf7, 0xa0, - 0xf5, 0x43, 0xf7, 0xa0, 0xf5, 0x43, 0xf7, 0xa0, 0xf5, 0x43, 0xf8, 0xa0, - 0xf5, 0x43, 0xf8, 0xa1, 0xf7, 0x43, 0xf8, 0xa1, 0xf7, 0x43, 0xf8, 0xa1, - 0xf7, 0x43, 0xf8, 0xa1, 0xf7, 0x43, 0xf9, 0xa1, 0xf7, 0x43, 0xf9, 0xa1, - 0xf7, 0x43, 0xf9, 0xa1, 0xf7, 0x43, 0xf9, 0xa1, 0xf7, 0x43, 0xfa, 0xa1, - 0xf7, 0x43, 0xfa, 0xa1, 0xf7, 0x43, 0xfa, 0xa1, 0xf7, 0x43, 0xfa, 0xa1, - 0xf7, 0x43, 0xfa, 0xa1, 0xf9, 0x43, 0xfb, 0xa1, 0xf9, 0x43, 0xfb, 0xa1, - 0xf9, 0x43, 0xfb, 0xa1, 0xf9, 0x43, 0xfb, 0xa1, 0xf9, 0x43, 0xfc, 0xa1, - 0xf9, 0x43, 0xfc, 0xa1, 0xf9, 0x43, 0xfc, 0xa1, 0xf9, 0x43, 0xfc, 0xa1, - 0xf9, 0x43, 0xfc, 0xa2, 0xfb, 0x43, 0xfd, 0xa1, 0xf9, 0x43, 0xfd, 0xa2, - 0xfb, 0x43, 0xfd, 0xa2, 0xfb, 0x43, 0xfd, 0xa2, 0xfb, 0x43, 0xfe, 0xa2, - 0xfb, 0x43, 0xfe, 0xa2, 0xfb, 0x43, 0xfe, 0xa2, 0xfb, 0x43, 0xfe, 0xa2, - 0xfb, 0x43, 0xfe, 0xa2, 0xfb, 0x43, 0xff, 0xa2, 0xfb, 0x43, 0xff, 0xa2, - 0xfb, 0x43, 0x03, 0x95, 0x99, 0x44, 0x0a, 0x98, 0x98, 0x44, 0x0f, 0x95, - 0x99, 0x44, 0x14, 0x98, 0x98, 0x44, 0x17, 0x95, 0x99, 0x44, 0x1b, 0x98, - 0x98, 0x44, 0x1e, 0x95, 0x99, 0x44, 0x20, 0x98, 0x98, 0x44, 0x23, 0x95, - 0x99, 0x44, 0x25, 0x98, 0x98, 0x44, 0x27, 0x95, 0x99, 0x44, 0x29, 0x98, - 0x98, 0x44, 0x2b, 0x95, 0x99, 0x44, 0x2d, 0x98, 0x98, 0x44, 0x2f, 0x95, - 0x99, 0x44, 0x31, 0x98, 0x98, 0x44, 0x32, 0x95, 0x99, 0x44, 0x34, 0x98, - 0x98, 0x44, 0x35, 0x95, 0x99, 0x44, 0x37, 0x98, 0x98, 0x44, 0x38, 0x95, - 0x99, 0x44, 0x3a, 0x98, 0x98, 0x44, 0x3b, 0x95, 0x99, 0x44, 0x3c, 0x98, - 0x98, 0x44, 0x3e, 0x95, 0x99, 0x44, 0x3f, 0x98, 0x98, 0x44, 0x40, 0x95, - 0x99, 0x44, 0x42, 0x98, 0x98, 0x44, 0x43, 0x95, 0x99, 0x44, 0x44, 0x98, - 0x98, 0x44, 0x45, 0x95, 0x99, 0x44, 0x46, 0x98, 0x98, 0x44, 0x47, 0x95, - 0x99, 0x44, 0x48, 0x98, 0x98, 0x44, 0x49, 0x95, 0x99, 0x44, 0x4a, 0x98, - 0x98, 0x44, 0x4b, 0x95, 0x99, 0x44, 0x4c, 0x98, 0x98, 0x44, 0x4d, 0x95, - 0x99, 0x44, 0x4e, 0x98, 0x98, 0x44, 0x4f, 0x95, 0x99, 0x44, 0x50, 0x98, - 0x98, 0x44, 0x51, 0x95, 0x99, 0x44, 0x52, 0x98, 0x98, 0x44, 0x53, 0x95, - 0x99, 0x44, 0x54, 0x98, 0x98, 0x44, 0x55, 0x95, 0x99, 0x44, 0x56, 0x98, - 0x98, 0x44, 0x57, 0x95, 0x99, 0x44, 0x58, 0x98, 0x98, 0x44, 0x58, 0x95, - 0x99, 0x44, 0x59, 0x98, 0x98, 0x44, 0x5a, 0x95, 0x99, 0x44, 0x5b, 0x98, - 0x98, 0x44, 0x5c, 0x95, 0x99, 0x44, 0x5d, 0x93, 0x99, 0x44, 0x5d, 0x95, - 0x99, 0x44, 0x5e, 0x93, 0x99, 0x44, 0x5f, 0x95, 0x99, 0x44, 0x60, 0x93, - 0x99, 0x44, 0x60, 0x95, 0x99, 0x44, 0x61, 0x93, 0x99, 0x44, 0x62, 0x95, - 0x99, 0x44, 0x63, 0x93, 0x99, 0x44, 0x63, 0x95, 0x99, 0x44, 0x64, 0x93, - 0x99, 0x44, 0x65, 0x95, 0x99, 0x44, 0x66, 0x93, 0x99, 0x44, 0x66, 0x95, - 0x99, 0x44, 0x67, 0x93, 0x99, 0x44, 0x68, 0x95, 0x99, 0x44, 0x68, 0x93, - 0x99, 0x44, 0x69, 0x95, 0x99, 0x44, 0x6a, 0x93, 0x99, 0x44, 0x6a, 0x95, - 0x99, 0x44, 0x6b, 0x93, 0x99, 0x44, 0x6c, 0x95, 0x99, 0x44, 0x6c, 0x93, - 0x99, 0x44, 0x6d, 0x95, 0x99, 0x44, 0x6e, 0x93, 0x99, 0x44, 0x6e, 0x95, - 0x99, 0x44, 0x6f, 0x93, 0x99, 0x44, 0x70, 0x95, 0x99, 0x44, 0x70, 0x93, - 0x99, 0x44, 0x71, 0x95, 0x99, 0x44, 0x72, 0x93, 0x99, 0x44, 0x72, 0x95, - 0x99, 0x44, 0x73, 0x93, 0x99, 0x44, 0x73, 0x95, 0x99, 0x44, 0x74, 0x93, - 0x99, 0x44, 0x75, 0x95, 0x99, 0x44, 0x75, 0x93, 0x99, 0x44, 0x76, 0x90, - 0x9a, 0x44, 0x76, 0x93, 0x99, 0x44, 0x77, 0x90, 0x9a, 0x44, 0x78, 0x93, - 0x99, 0x44, 0x78, 0x90, 0x9a, 0x44, 0x79, 0x93, 0x99, 0x44, 0x79, 0x90, - 0x9a, 0x44, 0x7a, 0x93, 0x99, 0x44, 0x7a, 0x90, 0x9a, 0x44, 0x7b, 0x93, - 0x99, 0x44, 0x7c, 0x90, 0x9a, 0x44, 0x7c, 0x93, 0x99, 0x44, 0x7d, 0x90, - 0x9a, 0x44, 0x7d, 0x93, 0x99, 0x44, 0x7e, 0x90, 0x9a, 0x44, 0x7e, 0x93, - 0x99, 0x44, 0x7f, 0x90, 0x9a, 0x44, 0x7f, 0x93, 0x99, 0x44, 0x80, 0x90, - 0x9a, 0x44, 0x81, 0x93, 0x99, 0x44, 0x81, 0x90, 0x9a, 0x44, 0x82, 0x93, - 0x99, 0x44, 0x82, 0x90, 0x9a, 0x44, 0x83, 0x93, 0x99, 0x44, 0x83, 0x90, - 0x9a, 0x44, 0x84, 0x93, 0x99, 0x44, 0x84, 0x90, 0x9a, 0x44, 0x85, 0x93, - 0x99, 0x44, 0x85, 0x90, 0x9a, 0x44, 0x86, 0x93, 0x99, 0x44, 0x86, 0x90, - 0x9a, 0x44, 0x87, 0x93, 0x99, 0x44, 0x87, 0x90, 0x9a, 0x44, 0x88, 0x93, - 0x99, 0x44, 0x88, 0x90, 0x9a, 0x44, 0x89, 0x93, 0x99, 0x44, 0x89, 0x90, - 0x9a, 0x44, 0x8a, 0x8d, 0x9a, 0x44, 0x8a, 0x90, 0x9a, 0x44, 0x8b, 0x8d, - 0x9a, 0x44, 0x8b, 0x90, 0x9a, 0x44, 0x8c, 0x8d, 0x9a, 0x44, 0x8c, 0x90, - 0x9a, 0x44, 0x8d, 0x8d, 0x9a, 0x44, 0x8d, 0x90, 0x9a, 0x44, 0x8e, 0x8d, - 0x9a, 0x44, 0x8e, 0x90, 0x9a, 0x44, 0x8e, 0x8d, 0x9a, 0x44, 0x8f, 0x90, - 0x9a, 0x44, 0x8f, 0x8d, 0x9a, 0x44, 0x90, 0x90, 0x9a, 0x44, 0x90, 0x8d, - 0x9a, 0x44, 0x91, 0x90, 0x9a, 0x44, 0x91, 0x8d, 0x9a, 0x44, 0x92, 0x90, - 0x9a, 0x44, 0x92, 0x8d, 0x9a, 0x44, 0x93, 0x90, 0x9a, 0x44, 0x93, 0x8d, - 0x9a, 0x44, 0x94, 0x90, 0x9a, 0x44, 0x94, 0x8d, 0x9a, 0x44, 0x94, 0x90, - 0x9a, 0x44, 0x95, 0x8d, 0x9a, 0x44, 0x95, 0x90, 0x9a, 0x44, 0x96, 0x8d, - 0x9a, 0x44, 0x96, 0x90, 0x9a, 0x44, 0x97, 0x8d, 0x9a, 0x44, 0x97, 0x8d, - 0x9a, 0x44, 0x98, 0x8d, 0x9a, 0x44, 0x98, 0x8d, 0x9a, 0x44, 0x98, 0x8d, - 0x9a, 0x44, 0x99, 0x8d, 0x9a, 0x44, 0x99, 0x8d, 0x9a, 0x44, 0x9a, 0x8d, - 0x9a, 0x44, 0x99, 0x8d, 0x9a, 0x44, 0x9a, 0x8d, 0x9a, 0x44, 0x99, 0x8d, - 0x9b, 0x44, 0x9a, 0x8d, 0x9b, 0x44, 0x9a, 0x8d, 0x9c, 0x42, 0x9e, 0x8d, - 0x9c, 0x46, 0x9e, 0x8d, 0x9d, 0x45, 0x9f, 0x8d, 0x9d, 0x45, 0x9e, 0x8d, - 0x9d, 0x45, 0x9f, 0x8d, 0x9e, 0x45, 0x9e, 0x8d, 0x9e, 0x45, 0x9f, 0x8d, - 0x9f, 0x45, 0x9f, 0x8d, 0x9f, 0x45, 0x9f, 0x8d, 0x9f, 0x45, 0xa0, 0x8d, - 0xa0, 0x45, 0xa0, 0x8d, 0xa0, 0x45, 0xa1, 0x8d, 0xa1, 0x45, 0xa1, 0x8d, - 0xa1, 0x45, 0xa1, 0x8d, 0xa1, 0x45, 0xa1, 0x8d, 0xa2, 0x45, 0xa1, 0x8d, - 0xa2, 0x45, 0xa3, 0x8d, 0xa3, 0x46, 0xa3, 0x8d, 0xa3, 0x46, 0xa3, 0x8d, - 0xa3, 0x46, 0xa4, 0x8d, 0xa4, 0x46, 0xa4, 0x8d, 0xa4, 0x46, 0xa5, 0x8d, - 0xa5, 0x46, 0xa5, 0x8d, 0xa5, 0x46, 0xa5, 0x8d, 0xa5, 0x46, 0xa6, 0x8d, - 0xa6, 0x46, 0xa5, 0x8d, 0xa6, 0x46, 0xa6, 0x8d, 0xa6, 0x46, 0xa5, 0x8d, - 0xa7, 0x46, 0xa6, 0x8d, 0xa7, 0x46, 0xa8, 0x8d, 0xa8, 0x47, 0xa8, 0x8d, - 0xa8, 0x47, 0xa8, 0x8d, 0xa8, 0x47, 0xa9, 0x8d, 0xa9, 0x47, 0xa9, 0x8d, - 0xa9, 0x47, 0xaa, 0x8d, 0xaa, 0x47, 0xaa, 0x8d, 0xaa, 0x47, 0xaa, 0x8d, - 0xaa, 0x47, 0xaa, 0x8d, 0xab, 0x47, 0xaa, 0x8d, 0xab, 0x47, 0xaa, 0x8d, - 0xab, 0x47, 0xac, 0x8d, 0xac, 0x48, 0xac, 0x8d, 0xac, 0x48, 0xac, 0x8d, - 0xac, 0x48, 0xad, 0x8d, 0xad, 0x48, 0xad, 0x8d, 0xad, 0x48, 0xae, 0x8d, - 0xae, 0x48, 0xae, 0x8d, 0xae, 0x48, 0xae, 0x8d, 0xae, 0x48, 0xae, 0x8d, - 0xaf, 0x48, 0xae, 0x8d, 0xaf, 0x48, 0xae, 0x8d, 0xaf, 0x48, 0xb0, 0x8d, - 0xb0, 0x3f, 0xb0, 0x8d, 0xb0, 0x3f, 0xb0, 0x8d, 0xb0, 0x3f, 0xb1, 0x8d, - 0xb1, 0x3f, 0xb3, 0x8d, 0xb1, 0x40, 0xb3, 0x8d, 0xb2, 0x40, 0xb3, 0x8d, - 0xb2, 0x40, 0xb3, 0x8d, 0xb2, 0x40, 0xb3, 0x8d, 0xb3, 0x40, 0xb3, 0x8d, - 0xb3, 0x40, 0xb3, 0x8d, 0xb3, 0x40, 0xb4, 0x8d, 0xb4, 0x40, 0xb4, 0x8d, - 0xb4, 0x40, 0xb6, 0x8d, 0xb4, 0x41, 0xb6, 0x8d, 0xb5, 0x41, 0xb6, 0x8d, - 0xb5, 0x41, 0xb6, 0x8d, 0xb5, 0x41, 0xb6, 0x8d, 0xb6, 0x41, 0xb6, 0x8d, - 0xb6, 0x41, 0xb6, 0x8d, 0xb6, 0x41, 0xb7, 0x8d, 0xb7, 0x41, 0xb7, 0x8d, - 0xb7, 0x41, 0xb9, 0x8d, 0xb7, 0x42, 0xb9, 0x8d, 0xb8, 0x42, 0xb9, 0x8d, - 0xb8, 0x42, 0xb9, 0x8d, 0xb8, 0x42, 0xb9, 0x8d, 0xb9, 0x42, 0xb9, 0x8d, - 0xb9, 0x42, 0xb9, 0x8d, 0xb9, 0x42, 0xba, 0x8d, 0xba, 0x42, 0xba, 0x8d, - 0xba, 0x42, 0xba, 0x8d, 0xba, 0x42, 0xbb, 0x8d, 0xbb, 0x42, 0xbb, 0x8d, - 0xbb, 0x42, 0xbc, 0x8d, 0xbb, 0x43, 0xbc, 0x8d, 0xbc, 0x43, 0xbc, 0x8d, - 0xbc, 0x43, 0xbc, 0x8d, 0xbc, 0x43, 0xbd, 0x8d, 0xbd, 0x43, 0xbd, 0x8d, - 0xbd, 0x43, 0xbd, 0x8d, 0xbd, 0x43, 0xbe, 0x8d, 0xbe, 0x43, 0xbe, 0x8d, - 0xbe, 0x43, 0xbe, 0x8d, 0xbe, 0x43, 0xbf, 0x8d, 0xbf, 0x43, 0xbf, 0x8e, - 0xbf, 0x44, 0xbf, 0x8e, 0xbf, 0x44, 0xc0, 0x8e, 0xc0, 0x44, 0xc0, 0x8e, - 0xc0, 0x44, 0xc0, 0x8e, 0xc0, 0x44, 0xc1, 0x8e, 0xc1, 0x44, 0xc1, 0x8e, - 0xc1, 0x44, 0xc1, 0x8e, 0xc1, 0x44, 0xc1, 0x8e, 0xc1, 0x44, 0xc2, 0x8e, - 0xc1, 0x44, 0xc2, 0x8e, 0xc1, 0x44, 0xc2, 0x8f, 0xc2, 0x44, 0xc3, 0x8f, - 0xc3, 0x44, 0xc3, 0x8f, 0xc3, 0x44, 0xc3, 0x8f, 0xc3, 0x44, 0xc4, 0x8f, - 0xc4, 0x44, 0xc4, 0x8f, 0xc4, 0x44, 0xc4, 0x8f, 0xc4, 0x44, 0xc5, 0x8f, - 0xc5, 0x44, 0xc5, 0x8f, 0xc4, 0x44, 0xc5, 0x8f, 0xc5, 0x44, 0xc6, 0x8f, - 0xc4, 0x44, 0xc6, 0x8f, 0xc5, 0x44, 0xc6, 0x90, 0xc6, 0x44, 0xc6, 0x90, - 0xc6, 0x44, 0xc7, 0x90, 0xc7, 0x44, 0xc7, 0x90, 0xc7, 0x44, 0xc7, 0x90, - 0xc7, 0x44, 0xc8, 0x90, 0xc7, 0x44, 0xc8, 0x90, 0xc7, 0x44, 0xc8, 0x90, - 0xc7, 0x44, 0xc9, 0x90, 0xc7, 0x44, 0xc9, 0x91, 0xc9, 0x44, 0xc9, 0x91, - 0xc9, 0x44, 0xc9, 0x91, 0xc9, 0x44, 0xca, 0x91, 0xca, 0x44, 0xca, 0x91, - 0xca, 0x44, 0xca, 0x91, 0xca, 0x44, 0xcb, 0x91, 0xca, 0x44, 0xcb, 0x91, - 0xca, 0x44, 0xcb, 0x91, 0xca, 0x44, 0xcc, 0x92, 0xcc, 0x44, 0xcc, 0x92, - 0xcc, 0x44, 0xcc, 0x92, 0xcc, 0x44, 0xcc, 0x92, 0xcc, 0x44, 0xcd, 0x92, - 0xcd, 0x44, 0xcd, 0x92, 0xcd, 0x44, 0xcd, 0x92, 0xcd, 0x44, 0xce, 0x92, - 0xcd, 0x44, 0xce, 0x92, 0xcd, 0x44, 0xce, 0x92, 0xcd, 0x44, 0xce, 0x92, - 0xcd, 0x44, 0xcf, 0x92, 0xcd, 0x44, 0xcf, 0x93, 0xcf, 0x44, 0xcf, 0x93, - 0xcf, 0x44, 0xd0, 0x93, 0xd0, 0x44, 0xd0, 0x93, 0xcf, 0x44, 0xd0, 0x93, - 0xd0, 0x44, 0xd0, 0x93, 0xcf, 0x44, 0xd1, 0x93, 0xd0, 0x44, 0xd1, 0x93, - 0xcf, 0x44, 0xd1, 0x93, 0xd0, 0x44, 0xd2, 0x94, 0xd2, 0x44, 0xd2, 0x94, - 0xd2, 0x44, 0xd2, 0x94, 0xd2, 0x44, 0xd2, 0x94, 0xd2, 0x44, 0xd3, 0x94, - 0xd2, 0x44, 0xd3, 0x94, 0xd2, 0x44, 0xd3, 0x94, 0xd2, 0x44, 0xd4, 0x94, - 0xd2, 0x44, 0xd4, 0x94, 0xd2, 0x44, 0xd4, 0x94, 0xd2, 0x44, 0xd4, 0x94, - 0xd4, 0x44, 0xd5, 0x94, 0xd5, 0x44, 0xd5, 0x94, 0xd5, 0x44, 0xd5, 0x94, - 0xd5, 0x44, 0xd6, 0x94, 0xd5, 0x44, 0xd6, 0x94, 0xd5, 0x44, 0xd6, 0x94, - 0xd5, 0x44, 0xd6, 0x94, 0xd5, 0x44, 0xd7, 0x94, 0xd5, 0x44, 0xd7, 0x94, - 0xd5, 0x44, 0xd7, 0x94, 0xd5, 0x44, 0xd7, 0x95, 0xd7, 0x44, 0xd8, 0x95, - 0xd7, 0x44, 0xd8, 0x95, 0xd7, 0x44, 0xd8, 0x95, 0xd7, 0x44, 0xd9, 0x95, - 0xd7, 0x44, 0xd9, 0x95, 0xd7, 0x44, 0xd9, 0x95, 0xd7, 0x44, 0xd9, 0x95, - 0xd7, 0x44, 0xda, 0x95, 0xd7, 0x44, 0xda, 0x96, 0xda, 0x44, 0xda, 0x96, - 0xda, 0x44, 0xda, 0x96, 0xda, 0x44, 0xdb, 0x96, 0xda, 0x44, 0xdb, 0x96, - 0xda, 0x44, 0xdb, 0x96, 0xda, 0x44, 0xdb, 0x96, 0xda, 0x44, 0xdc, 0x96, - 0xda, 0x44, 0xdc, 0x96, 0xda, 0x44, 0xdc, 0x96, 0xda, 0x44, 0xdd, 0x97, - 0xdd, 0x44, 0xdd, 0x97, 0xdc, 0x44, 0xdd, 0x97, 0xdd, 0x44, 0xdd, 0x97, - 0xdc, 0x44, 0xde, 0x97, 0xdd, 0x44, 0xde, 0x97, 0xdc, 0x44, 0xde, 0x97, - 0xdd, 0x44, 0xde, 0x97, 0xdc, 0x44, 0xdf, 0x97, 0xdd, 0x44, 0xdf, 0x98, - 0xdf, 0x44, 0xdf, 0x98, 0xdf, 0x44, 0xdf, 0x98, 0xdf, 0x44, 0xe0, 0x98, - 0xdf, 0x44, 0xe0, 0x98, 0xdf, 0x44, 0xe0, 0x98, 0xdf, 0x44, 0xe1, 0x98, - 0xdf, 0x44, 0xe1, 0x98, 0xdf, 0x44, 0xe1, 0x98, 0xdf, 0x44, 0xe1, 0x99, - 0xe1, 0x44, 0xe2, 0x99, 0xe2, 0x44, 0xe2, 0x99, 0xe1, 0x44, 0xe2, 0x99, - 0xe2, 0x44, 0xe2, 0x99, 0xe1, 0x44, 0xe3, 0x99, 0xe2, 0x44, 0xe3, 0x99, - 0xe1, 0x44, 0xe3, 0x99, 0xe2, 0x44, 0xe3, 0x99, 0xe1, 0x44, 0xe4, 0x99, - 0xe2, 0x44, 0xe4, 0x99, 0xe1, 0x44, 0xe4, 0x99, 0xe2, 0x44, 0xe4, 0x9a, - 0xe4, 0x44, 0xe5, 0x9a, 0xe4, 0x44, 0xe5, 0x9a, 0xe4, 0x44, 0xe5, 0x9a, - 0xe4, 0x44, 0xe5, 0x9a, 0xe4, 0x44, 0xe6, 0x9a, 0xe4, 0x44, 0xe6, 0x9a, - 0xe4, 0x44, 0xe6, 0x9a, 0xe4, 0x44, 0xe6, 0x9a, 0xe4, 0x44, 0xe7, 0x9a, - 0xe6, 0x44, 0xe7, 0x9a, 0xe6, 0x44, 0xe7, 0x9a, 0xe6, 0x44, 0xe7, 0x9a, - 0xe6, 0x44, 0xe8, 0x9a, 0xe6, 0x44, 0xe8, 0x9a, 0xe6, 0x44, 0xe8, 0x9a, - 0xe6, 0x44, 0xe8, 0x9a, 0xe6, 0x44, 0xe9, 0x9a, 0xe6, 0x44, 0xe9, 0x9b, - 0xe8, 0x44, 0xe9, 0x9b, 0xe9, 0x44, 0xe9, 0x9b, 0xe8, 0x44, 0xea, 0x9b, - 0xe9, 0x44, 0xea, 0x9b, 0xe8, 0x44, 0xea, 0x9b, 0xe9, 0x44, 0xea, 0x9b, - 0xe8, 0x44, 0xeb, 0x9b, 0xe9, 0x44, 0xeb, 0x9b, 0xe8, 0x44, 0xeb, 0x9b, - 0xe9, 0x44, 0xeb, 0x9c, 0xeb, 0x44, 0xec, 0x9b, 0xe9, 0x44, 0xec, 0x9c, - 0xeb, 0x44, 0xec, 0x9c, 0xeb, 0x44, 0xec, 0x9c, 0xeb, 0x44, 0xec, 0x9c, - 0xeb, 0x44, 0xed, 0x9c, 0xeb, 0x44, 0xed, 0x9c, 0xeb, 0x44, 0xed, 0x9c, - 0xeb, 0x44, 0xed, 0x9c, 0xeb, 0x44, 0xee, 0x9c, 0xeb, 0x44, 0xee, 0x9d, - 0xed, 0x44, 0xee, 0x9d, 0xed, 0x44, 0xee, 0x9d, 0xed, 0x44, 0xef, 0x9d, - 0xed, 0x44, 0xef, 0x9d, 0xed, 0x44, 0xef, 0x9d, 0xed, 0x44, 0xef, 0x9d, - 0xed, 0x44, 0xf0, 0x9d, 0xed, 0x44, 0xf0, 0x9d, 0xed, 0x44, 0xf0, 0x9d, - 0xed, 0x44, 0xf0, 0x9e, 0xef, 0x44, 0xf1, 0x9e, 0xef, 0x44, 0xf1, 0x9e, - 0xef, 0x44, 0xf1, 0x9e, 0xef, 0x44, 0xf1, 0x9e, 0xef, 0x44, 0xf2, 0x9e, - 0xef, 0x44, 0xf2, 0x9e, 0xef, 0x44, 0xf2, 0x9e, 0xef, 0x44, 0xf2, 0x9e, - 0xef, 0x44, 0xf2, 0x9f, 0xf2, 0x44, 0xf3, 0x9f, 0xf1, 0x44, 0xf3, 0x9f, - 0xf2, 0x44, 0xf3, 0x9f, 0xf1, 0x44, 0xf3, 0x9f, 0xf2, 0x44, 0xf4, 0x9f, - 0xf1, 0x44, 0xf4, 0x9f, 0xf2, 0x44, 0xf4, 0x9f, 0xf1, 0x44, 0xf4, 0x9f, - 0xf2, 0x44, 0xf5, 0x9f, 0xf4, 0x44, 0xf5, 0x9f, 0xf4, 0x44, 0xf5, 0x9f, - 0xf4, 0x44, 0xf5, 0x9f, 0xf4, 0x44, 0xf5, 0x9f, 0xf4, 0x44, 0xf6, 0x9f, - 0xf4, 0x44, 0xf6, 0x9f, 0xf4, 0x44, 0xf6, 0x9f, 0xf4, 0x44, 0xf6, 0x9f, - 0xf4, 0x44, 0xf7, 0x9f, 0xf4, 0x44, 0xf7, 0xa0, 0xf6, 0x44, 0xf7, 0x9f, - 0xf4, 0x44, 0xf7, 0xa0, 0xf6, 0x44, 0xf8, 0xa0, 0xf6, 0x44, 0xf8, 0xa0, - 0xf6, 0x44, 0xf8, 0xa0, 0xf6, 0x44, 0xf8, 0xa0, 0xf6, 0x44, 0xf8, 0xa0, - 0xf6, 0x44, 0xf9, 0xa0, 0xf6, 0x44, 0xf9, 0xa1, 0xf8, 0x44, 0xf9, 0xa0, - 0xf6, 0x44, 0xf9, 0xa1, 0xf8, 0x44, 0xfa, 0xa1, 0xf8, 0x44, 0xfa, 0xa1, - 0xf8, 0x44, 0xfa, 0xa1, 0xf8, 0x44, 0xfa, 0xa1, 0xf8, 0x44, 0xfa, 0xa1, - 0xf8, 0x44, 0xfb, 0xa1, 0xf8, 0x44, 0xfb, 0xa1, 0xf8, 0x44, 0xfb, 0xa1, - 0xf8, 0x44, 0xfb, 0xa2, 0xfa, 0x44, 0xfc, 0xa2, 0xfa, 0x44, 0xfc, 0xa2, - 0xfa, 0x44, 0xfc, 0xa2, 0xfa, 0x44, 0xfc, 0xa2, 0xfa, 0x44, 0xfc, 0xa2, - 0xfa, 0x44, 0xfd, 0xa2, 0xfa, 0x44, 0xfd, 0xa2, 0xfa, 0x44, 0xfd, 0xa2, - 0xfa, 0x44, 0xfd, 0xa2, 0xfa, 0x44, 0xfe, 0xa2, 0xfa, 0x44, 0xfe, 0xa2, - 0xfa, 0x44, 0xfe, 0xa2, 0xfa, 0x44, 0xfe, 0xa2, 0xfa, 0x44, 0xfe, 0xa3, - 0xfb, 0x44, 0xff, 0xa3, 0xfc, 0x44, 0xff, 0xa3, 0xfb, 0x44, 0x03, 0x9b, - 0x98, 0x44, 0x0a, 0x98, 0x98, 0x44, 0x0f, 0x9b, 0x98, 0x44, 0x14, 0x98, - 0x98, 0x44, 0x17, 0x9b, 0x98, 0x44, 0x1b, 0x98, 0x98, 0x44, 0x1e, 0x9b, - 0x98, 0x44, 0x20, 0x98, 0x98, 0x44, 0x23, 0x9b, 0x98, 0x44, 0x25, 0x98, - 0x98, 0x44, 0x27, 0x9b, 0x98, 0x44, 0x29, 0x98, 0x98, 0x44, 0x2b, 0x9b, - 0x98, 0x44, 0x2d, 0x98, 0x98, 0x44, 0x2f, 0x9b, 0x98, 0x44, 0x31, 0x98, - 0x98, 0x44, 0x32, 0x9b, 0x98, 0x44, 0x34, 0x98, 0x98, 0x44, 0x35, 0x96, - 0x99, 0x44, 0x37, 0x98, 0x98, 0x44, 0x38, 0x96, 0x99, 0x44, 0x3a, 0x98, - 0x98, 0x44, 0x3b, 0x96, 0x99, 0x44, 0x3c, 0x98, 0x98, 0x44, 0x3e, 0x96, - 0x99, 0x44, 0x3f, 0x98, 0x98, 0x44, 0x40, 0x96, 0x99, 0x44, 0x42, 0x98, - 0x98, 0x44, 0x43, 0x96, 0x99, 0x44, 0x44, 0x98, 0x98, 0x44, 0x45, 0x96, - 0x99, 0x44, 0x46, 0x98, 0x98, 0x44, 0x47, 0x96, 0x99, 0x44, 0x48, 0x98, - 0x98, 0x44, 0x49, 0x96, 0x99, 0x44, 0x4a, 0x98, 0x98, 0x44, 0x4b, 0x96, - 0x99, 0x44, 0x4c, 0x98, 0x98, 0x44, 0x4d, 0x96, 0x99, 0x44, 0x4e, 0x98, - 0x98, 0x44, 0x4f, 0x96, 0x99, 0x44, 0x50, 0x98, 0x98, 0x44, 0x51, 0x96, - 0x99, 0x44, 0x52, 0x92, 0x99, 0x44, 0x53, 0x96, 0x99, 0x44, 0x54, 0x92, - 0x99, 0x44, 0x55, 0x96, 0x99, 0x44, 0x56, 0x92, 0x99, 0x44, 0x57, 0x96, - 0x99, 0x44, 0x58, 0x92, 0x99, 0x44, 0x58, 0x96, 0x99, 0x44, 0x59, 0x92, - 0x99, 0x44, 0x5a, 0x96, 0x99, 0x44, 0x5b, 0x92, 0x99, 0x44, 0x5c, 0x96, - 0x99, 0x44, 0x5d, 0x92, 0x99, 0x44, 0x5d, 0x96, 0x99, 0x44, 0x5e, 0x92, - 0x99, 0x44, 0x5f, 0x96, 0x99, 0x44, 0x60, 0x92, 0x99, 0x44, 0x60, 0x96, - 0x99, 0x44, 0x61, 0x92, 0x99, 0x44, 0x62, 0x96, 0x99, 0x44, 0x63, 0x92, - 0x99, 0x44, 0x63, 0x96, 0x99, 0x44, 0x64, 0x92, 0x99, 0x44, 0x65, 0x96, - 0x99, 0x44, 0x66, 0x92, 0x99, 0x44, 0x66, 0x96, 0x99, 0x44, 0x67, 0x92, - 0x99, 0x44, 0x68, 0x96, 0x99, 0x44, 0x68, 0x92, 0x99, 0x44, 0x69, 0x96, - 0x99, 0x44, 0x6a, 0x92, 0x99, 0x44, 0x6a, 0x96, 0x99, 0x44, 0x6b, 0x92, - 0x99, 0x44, 0x6c, 0x96, 0x99, 0x44, 0x6c, 0x92, 0x99, 0x44, 0x6d, 0x96, - 0x99, 0x44, 0x6e, 0x92, 0x99, 0x44, 0x6e, 0x96, 0x99, 0x44, 0x6f, 0x92, - 0x99, 0x44, 0x70, 0x96, 0x99, 0x44, 0x70, 0x92, 0x99, 0x44, 0x71, 0x96, - 0x99, 0x44, 0x72, 0x92, 0x99, 0x44, 0x72, 0x96, 0x99, 0x44, 0x73, 0x92, - 0x99, 0x44, 0x73, 0x8f, 0x9a, 0x44, 0x74, 0x92, 0x99, 0x44, 0x75, 0x8f, - 0x9a, 0x44, 0x75, 0x92, 0x99, 0x44, 0x76, 0x8f, 0x9a, 0x44, 0x76, 0x92, - 0x99, 0x44, 0x77, 0x8f, 0x9a, 0x44, 0x78, 0x92, 0x99, 0x44, 0x78, 0x8f, - 0x9a, 0x44, 0x79, 0x92, 0x99, 0x44, 0x79, 0x8f, 0x9a, 0x44, 0x7a, 0x92, - 0x99, 0x44, 0x7a, 0x8f, 0x9a, 0x44, 0x7b, 0x92, 0x99, 0x44, 0x7c, 0x8f, - 0x9a, 0x44, 0x7c, 0x92, 0x99, 0x44, 0x7d, 0x8f, 0x9a, 0x44, 0x7d, 0x92, - 0x99, 0x44, 0x7e, 0x8f, 0x9a, 0x44, 0x7e, 0x92, 0x99, 0x44, 0x7f, 0x8f, - 0x9a, 0x44, 0x7f, 0x92, 0x99, 0x44, 0x80, 0x8f, 0x9a, 0x44, 0x81, 0x92, - 0x99, 0x44, 0x81, 0x8f, 0x9a, 0x44, 0x82, 0x92, 0x99, 0x44, 0x82, 0x8f, - 0x9a, 0x44, 0x83, 0x92, 0x99, 0x44, 0x83, 0x8f, 0x9a, 0x44, 0x84, 0x92, - 0x99, 0x44, 0x84, 0x8f, 0x9a, 0x44, 0x85, 0x92, 0x99, 0x44, 0x85, 0x8f, - 0x9a, 0x44, 0x86, 0x92, 0x99, 0x44, 0x86, 0x8f, 0x9a, 0x44, 0x87, 0x92, - 0x99, 0x44, 0x87, 0x8f, 0x9a, 0x44, 0x88, 0x92, 0x99, 0x44, 0x88, 0x8f, - 0x9a, 0x44, 0x89, 0x92, 0x99, 0x44, 0x89, 0x8f, 0x9a, 0x44, 0x8a, 0x92, - 0x99, 0x44, 0x8a, 0x8f, 0x9a, 0x44, 0x8b, 0x92, 0x99, 0x44, 0x8b, 0x8f, - 0x9a, 0x44, 0x8c, 0x92, 0x99, 0x44, 0x8c, 0x8f, 0x9a, 0x44, 0x8d, 0x92, - 0x99, 0x44, 0x8d, 0x8f, 0x9a, 0x44, 0x8e, 0x92, 0x99, 0x44, 0x8e, 0x8f, - 0x9a, 0x44, 0x8e, 0x92, 0x99, 0x44, 0x8f, 0x8f, 0x9a, 0x44, 0x8f, 0x8e, - 0x9a, 0x44, 0x90, 0x8f, 0x9a, 0x44, 0x90, 0x8e, 0x9a, 0x44, 0x91, 0x8f, - 0x9a, 0x44, 0x91, 0x8e, 0x9a, 0x44, 0x92, 0x8f, 0x9a, 0x44, 0x92, 0x8e, - 0x9a, 0x44, 0x93, 0x8f, 0x9a, 0x44, 0x93, 0x8e, 0x9a, 0x44, 0x94, 0x8f, - 0x9a, 0x44, 0x94, 0x8e, 0x9a, 0x44, 0x94, 0x8f, 0x9a, 0x44, 0x95, 0x8e, - 0x9a, 0x44, 0x95, 0x8f, 0x9a, 0x44, 0x96, 0x8e, 0x9a, 0x44, 0x96, 0x8f, - 0x9a, 0x44, 0x97, 0x8e, 0x9a, 0x44, 0x97, 0x8f, 0x9a, 0x44, 0x98, 0x8e, - 0x9a, 0x44, 0x98, 0x8f, 0x9a, 0x44, 0x98, 0x8e, 0x9a, 0x44, 0x99, 0x8e, - 0x9a, 0x44, 0x99, 0x8e, 0x9a, 0x44, 0x9a, 0x8e, 0x9a, 0x44, 0x99, 0x8e, - 0x9a, 0x44, 0x9a, 0x8e, 0x9a, 0x44, 0x99, 0x8e, 0x9b, 0x44, 0x9a, 0x8e, - 0x9b, 0x44, 0x9a, 0x8e, 0x9c, 0x42, 0x9e, 0x8e, 0x9c, 0x45, 0x9e, 0x8e, - 0x9d, 0x44, 0x9e, 0x8e, 0x9d, 0x45, 0x9e, 0x8e, 0x9d, 0x44, 0x9e, 0x8e, - 0x9e, 0x45, 0x9e, 0x8d, 0x9e, 0x44, 0x9f, 0x8d, 0x9f, 0x44, 0x9f, 0x8d, - 0x9f, 0x44, 0x9f, 0x8e, 0x9f, 0x45, 0xa0, 0x8e, 0xa0, 0x45, 0xa0, 0x8e, - 0xa0, 0x45, 0xa1, 0x8e, 0xa1, 0x45, 0xa1, 0x8e, 0xa1, 0x45, 0xa1, 0x8e, - 0xa1, 0x45, 0xa2, 0x8e, 0xa2, 0x45, 0xa2, 0x8e, 0xa2, 0x45, 0xa3, 0x8e, - 0xa3, 0x45, 0xa3, 0x8e, 0xa3, 0x45, 0xa3, 0x8e, 0xa3, 0x45, 0xa3, 0x8e, - 0xa4, 0x45, 0xa3, 0x8e, 0xa4, 0x45, 0xa5, 0x8e, 0xa5, 0x46, 0xa5, 0x8e, - 0xa5, 0x46, 0xa5, 0x8e, 0xa5, 0x46, 0xa6, 0x8e, 0xa6, 0x46, 0xa6, 0x8e, - 0xa6, 0x46, 0xa6, 0x8e, 0xa6, 0x46, 0xa7, 0x8e, 0xa7, 0x46, 0xa7, 0x8e, - 0xa7, 0x46, 0xa8, 0x8e, 0xa8, 0x46, 0xa7, 0x8e, 0xa8, 0x46, 0xa8, 0x8e, - 0xa8, 0x46, 0xa7, 0x8e, 0xa9, 0x46, 0xa8, 0x8e, 0xa9, 0x46, 0xaa, 0x8e, - 0xaa, 0x47, 0xaa, 0x8e, 0xaa, 0x47, 0xaa, 0x8e, 0xaa, 0x47, 0xab, 0x8e, - 0xab, 0x47, 0xab, 0x8e, 0xab, 0x47, 0xab, 0x8e, 0xab, 0x47, 0xac, 0x8e, - 0xac, 0x47, 0xac, 0x8e, 0xac, 0x47, 0xac, 0x8e, 0xac, 0x47, 0xac, 0x8e, - 0xad, 0x47, 0xac, 0x8e, 0xad, 0x47, 0xac, 0x8e, 0xae, 0x47, 0xae, 0x8e, - 0xae, 0x48, 0xae, 0x8e, 0xae, 0x48, 0xaf, 0x8e, 0xaf, 0x48, 0xaf, 0x8e, - 0xaf, 0x48, 0xaf, 0x8e, 0xaf, 0x48, 0xb0, 0x8e, 0xb0, 0x48, 0xb0, 0x8e, - 0xb0, 0x48, 0xb0, 0x8e, 0xb0, 0x48, 0xb0, 0x8e, 0xb1, 0x48, 0xb0, 0x8e, - 0xb1, 0x48, 0xb0, 0x8e, 0xb2, 0x48, 0xb2, 0x8e, 0xb2, 0x40, 0xb2, 0x8e, - 0xb2, 0x40, 0xb4, 0x8e, 0xb3, 0x40, 0xb4, 0x8e, 0xb3, 0x40, 0xb4, 0x8e, - 0xb3, 0x40, 0xb4, 0x8e, 0xb4, 0x40, 0xb4, 0x8e, 0xb4, 0x40, 0xb4, 0x8e, - 0xb4, 0x40, 0xb5, 0x8e, 0xb5, 0x40, 0xb5, 0x8e, 0xb5, 0x40, 0xb5, 0x8e, - 0xb5, 0x40, 0xb6, 0x8e, 0xb6, 0x40, 0xb7, 0x8e, 0xb6, 0x41, 0xb8, 0x8e, - 0xb6, 0x41, 0xb7, 0x8e, 0xb7, 0x41, 0xb8, 0x8e, 0xb7, 0x41, 0xb7, 0x8e, - 0xb7, 0x41, 0xb8, 0x8e, 0xb8, 0x41, 0xb8, 0x8e, 0xb8, 0x41, 0xb8, 0x8e, - 0xb8, 0x41, 0xb9, 0x8e, 0xb9, 0x41, 0xba, 0x8e, 0xb9, 0x42, 0xbb, 0x8e, - 0xb9, 0x42, 0xba, 0x8e, 0xba, 0x42, 0xbb, 0x8e, 0xba, 0x42, 0xba, 0x8e, - 0xba, 0x42, 0xbb, 0x8e, 0xbb, 0x42, 0xbb, 0x8e, 0xbb, 0x42, 0xbb, 0x8e, - 0xbb, 0x42, 0xbc, 0x8e, 0xbc, 0x42, 0xbc, 0x8e, 0xbc, 0x42, 0xbc, 0x8e, - 0xbc, 0x42, 0xbd, 0x8e, 0xbd, 0x43, 0xbe, 0x8e, 0xbd, 0x43, 0xbd, 0x8e, - 0xbd, 0x43, 0xbe, 0x8e, 0xbe, 0x43, 0xbe, 0x8e, 0xbe, 0x43, 0xbe, 0x8e, - 0xbe, 0x43, 0xbf, 0x8e, 0xbf, 0x43, 0xbf, 0x8e, 0xbf, 0x43, 0xbf, 0x8e, - 0xbf, 0x43, 0xc0, 0x8e, 0xc0, 0x43, 0xc0, 0x8e, 0xc0, 0x43, 0xc0, 0x8e, - 0xc0, 0x43, 0xc1, 0x8e, 0xc1, 0x44, 0xc1, 0x8e, 0xc1, 0x44, 0xc1, 0x8e, - 0xc1, 0x44, 0xc1, 0x8e, 0xc1, 0x44, 0xc2, 0x8e, 0xc2, 0x44, 0xc2, 0x8e, - 0xc2, 0x44, 0xc2, 0x8e, 0xc2, 0x44, 0xc3, 0x8e, 0xc3, 0x44, 0xc3, 0x8e, - 0xc3, 0x44, 0xc3, 0x8e, 0xc3, 0x44, 0xc4, 0x8e, 0xc3, 0x44, 0xc4, 0x8f, - 0xc4, 0x44, 0xc4, 0x8f, 0xc4, 0x44, 0xc5, 0x8f, 0xc5, 0x44, 0xc5, 0x8f, - 0xc5, 0x44, 0xc5, 0x8f, 0xc5, 0x44, 0xc6, 0x8f, 0xc6, 0x44, 0xc6, 0x8f, - 0xc6, 0x44, 0xc6, 0x8f, 0xc6, 0x44, 0xc6, 0x8f, 0xc6, 0x44, 0xc7, 0x8f, - 0xc6, 0x44, 0xc7, 0x8f, 0xc6, 0x44, 0xc7, 0x90, 0xc7, 0x44, 0xc8, 0x90, - 0xc8, 0x44, 0xc8, 0x90, 0xc8, 0x44, 0xc8, 0x90, 0xc8, 0x44, 0xc9, 0x90, - 0xc9, 0x44, 0xc9, 0x90, 0xc9, 0x44, 0xc9, 0x90, 0xc9, 0x44, 0xc9, 0x90, - 0xc9, 0x44, 0xca, 0x90, 0xc9, 0x44, 0xca, 0x90, 0xc9, 0x44, 0xca, 0x91, - 0xca, 0x44, 0xcb, 0x91, 0xcb, 0x44, 0xcb, 0x91, 0xcb, 0x44, 0xcb, 0x91, - 0xcb, 0x44, 0xcc, 0x91, 0xcc, 0x44, 0xcc, 0x91, 0xcb, 0x44, 0xcc, 0x91, - 0xcc, 0x44, 0xcc, 0x91, 0xcb, 0x44, 0xcd, 0x91, 0xcc, 0x44, 0xcd, 0x92, - 0xcd, 0x44, 0xcd, 0x92, 0xcd, 0x44, 0xce, 0x92, 0xce, 0x44, 0xce, 0x92, - 0xce, 0x44, 0xce, 0x92, 0xce, 0x44, 0xce, 0x92, 0xce, 0x44, 0xcf, 0x92, - 0xce, 0x44, 0xcf, 0x92, 0xce, 0x44, 0xcf, 0x92, 0xce, 0x44, 0xd0, 0x92, - 0xce, 0x44, 0xd0, 0x92, 0xce, 0x44, 0xd0, 0x92, 0xce, 0x44, 0xd0, 0x93, - 0xd0, 0x44, 0xd1, 0x93, 0xd1, 0x44, 0xd1, 0x93, 0xd1, 0x44, 0xd1, 0x93, - 0xd1, 0x44, 0xd2, 0x93, 0xd1, 0x44, 0xd2, 0x93, 0xd1, 0x44, 0xd2, 0x93, - 0xd1, 0x44, 0xd2, 0x93, 0xd1, 0x44, 0xd3, 0x93, 0xd1, 0x44, 0xd3, 0x94, - 0xd3, 0x44, 0xd3, 0x94, 0xd3, 0x44, 0xd4, 0x94, 0xd4, 0x44, 0xd4, 0x94, - 0xd3, 0x44, 0xd4, 0x94, 0xd4, 0x44, 0xd4, 0x94, 0xd3, 0x44, 0xd5, 0x94, - 0xd4, 0x44, 0xd5, 0x94, 0xd3, 0x44, 0xd5, 0x94, 0xd4, 0x44, 0xd6, 0x95, - 0xd6, 0x44, 0xd6, 0x95, 0xd6, 0x44, 0xd6, 0x95, 0xd6, 0x44, 0xd6, 0x95, - 0xd6, 0x44, 0xd7, 0x95, 0xd6, 0x44, 0xd7, 0x95, 0xd6, 0x44, 0xd7, 0x95, - 0xd6, 0x44, 0xd7, 0x95, 0xd6, 0x44, 0xd8, 0x95, 0xd6, 0x44, 0xd8, 0x95, - 0xd6, 0x44, 0xd8, 0x95, 0xd6, 0x44, 0xd9, 0x95, 0xd6, 0x44, 0xd9, 0x96, - 0xd9, 0x44, 0xd9, 0x96, 0xd9, 0x44, 0xd9, 0x96, 0xd9, 0x44, 0xda, 0x96, - 0xd9, 0x44, 0xda, 0x96, 0xd9, 0x44, 0xda, 0x96, 0xd9, 0x44, 0xda, 0x96, - 0xd9, 0x44, 0xdb, 0x96, 0xd9, 0x44, 0xdb, 0x96, 0xd9, 0x44, 0xdb, 0x97, - 0xdb, 0x44, 0xdb, 0x97, 0xdb, 0x44, 0xdc, 0x97, 0xdb, 0x44, 0xdc, 0x97, - 0xdb, 0x44, 0xdc, 0x97, 0xdb, 0x44, 0xdd, 0x97, 0xdb, 0x44, 0xdd, 0x97, - 0xdb, 0x44, 0xdd, 0x97, 0xdb, 0x44, 0xdd, 0x97, 0xdb, 0x44, 0xde, 0x98, - 0xde, 0x44, 0xde, 0x98, 0xde, 0x44, 0xde, 0x98, 0xde, 0x44, 0xde, 0x98, - 0xde, 0x44, 0xdf, 0x98, 0xde, 0x44, 0xdf, 0x98, 0xde, 0x44, 0xdf, 0x98, - 0xde, 0x44, 0xdf, 0x98, 0xde, 0x44, 0xe0, 0x98, 0xde, 0x44, 0xe0, 0x98, - 0xde, 0x44, 0xe0, 0x98, 0xe0, 0x44, 0xe1, 0x98, 0xe0, 0x44, 0xe1, 0x98, - 0xe0, 0x44, 0xe1, 0x98, 0xe0, 0x44, 0xe1, 0x98, 0xe0, 0x44, 0xe2, 0x98, - 0xe0, 0x44, 0xe2, 0x98, 0xe0, 0x44, 0xe2, 0x98, 0xe0, 0x44, 0xe2, 0x98, - 0xe0, 0x44, 0xe3, 0x99, 0xe3, 0x44, 0xe3, 0x98, 0xe0, 0x44, 0xe3, 0x99, - 0xe3, 0x44, 0xe3, 0x99, 0xe2, 0x44, 0xe4, 0x99, 0xe3, 0x44, 0xe4, 0x99, - 0xe2, 0x44, 0xe4, 0x99, 0xe3, 0x44, 0xe4, 0x99, 0xe2, 0x44, 0xe5, 0x99, - 0xe3, 0x44, 0xe5, 0x99, 0xe2, 0x44, 0xe5, 0x99, 0xe3, 0x44, 0xe5, 0x9a, - 0xe5, 0x44, 0xe6, 0x9a, 0xe5, 0x44, 0xe6, 0x9a, 0xe5, 0x44, 0xe6, 0x9a, - 0xe5, 0x44, 0xe6, 0x9a, 0xe5, 0x44, 0xe7, 0x9a, 0xe5, 0x44, 0xe7, 0x9a, - 0xe5, 0x44, 0xe7, 0x9a, 0xe5, 0x44, 0xe7, 0x9a, 0xe5, 0x44, 0xe8, 0x9a, - 0xe5, 0x44, 0xe8, 0x9b, 0xe7, 0x44, 0xe8, 0x9b, 0xe7, 0x44, 0xe8, 0x9b, - 0xe7, 0x44, 0xe9, 0x9b, 0xe7, 0x44, 0xe9, 0x9b, 0xe7, 0x44, 0xe9, 0x9b, - 0xe7, 0x44, 0xe9, 0x9b, 0xe7, 0x44, 0xea, 0x9b, 0xe7, 0x44, 0xea, 0x9b, - 0xe7, 0x44, 0xea, 0x9c, 0xea, 0x44, 0xea, 0x9c, 0xea, 0x44, 0xeb, 0x9c, - 0xea, 0x44, 0xeb, 0x9c, 0xea, 0x44, 0xeb, 0x9c, 0xea, 0x44, 0xeb, 0x9c, - 0xea, 0x44, 0xec, 0x9c, 0xea, 0x44, 0xec, 0x9c, 0xea, 0x44, 0xec, 0x9c, - 0xea, 0x44, 0xec, 0x9c, 0xea, 0x44, 0xec, 0x9d, 0xec, 0x44, 0xed, 0x9c, - 0xea, 0x44, 0xed, 0x9d, 0xec, 0x44, 0xed, 0x9d, 0xec, 0x44, 0xed, 0x9d, - 0xec, 0x44, 0xee, 0x9d, 0xec, 0x44, 0xee, 0x9d, 0xec, 0x44, 0xee, 0x9d, - 0xec, 0x44, 0xee, 0x9d, 0xec, 0x44, 0xef, 0x9d, 0xec, 0x44, 0xef, 0x9d, - 0xec, 0x44, 0xef, 0x9d, 0xee, 0x44, 0xef, 0x9d, 0xee, 0x44, 0xf0, 0x9d, - 0xee, 0x44, 0xf0, 0x9d, 0xee, 0x44, 0xf0, 0x9d, 0xee, 0x44, 0xf0, 0x9d, - 0xee, 0x44, 0xf1, 0x9d, 0xee, 0x44, 0xf1, 0x9d, 0xee, 0x44, 0xf1, 0x9d, - 0xee, 0x44, 0xf1, 0x9e, 0xf0, 0x44, 0xf2, 0x9e, 0xf1, 0x44, 0xf2, 0x9e, - 0xf0, 0x44, 0xf2, 0x9e, 0xf1, 0x44, 0xf2, 0x9e, 0xf0, 0x44, 0xf2, 0x9e, - 0xf1, 0x44, 0xf3, 0x9e, 0xf0, 0x44, 0xf3, 0x9e, 0xf1, 0x44, 0xf3, 0x9e, - 0xf0, 0x44, 0xf3, 0x9e, 0xf1, 0x44, 0xf4, 0x9f, 0xf3, 0x44, 0xf4, 0x9f, - 0xf2, 0x44, 0xf4, 0x9f, 0xf3, 0x44, 0xf4, 0x9f, 0xf2, 0x44, 0xf5, 0x9f, - 0xf3, 0x44, 0xf5, 0x9f, 0xf2, 0x44, 0xf5, 0x9f, 0xf3, 0x44, 0xf5, 0x9f, - 0xf2, 0x44, 0xf5, 0x9f, 0xf3, 0x44, 0xf6, 0xa0, 0xf5, 0x44, 0xf6, 0x9f, - 0xf3, 0x44, 0xf6, 0xa0, 0xf5, 0x44, 0xf6, 0xa0, 0xf5, 0x44, 0xf7, 0xa0, - 0xf5, 0x44, 0xf7, 0xa0, 0xf5, 0x44, 0xf7, 0xa0, 0xf5, 0x44, 0xf7, 0xa0, - 0xf5, 0x44, 0xf8, 0xa0, 0xf5, 0x44, 0xf8, 0xa1, 0xf7, 0x44, 0xf8, 0xa1, - 0xf7, 0x44, 0xf8, 0xa1, 0xf7, 0x44, 0xf8, 0xa1, 0xf7, 0x44, 0xf9, 0xa1, - 0xf7, 0x44, 0xf9, 0xa1, 0xf7, 0x44, 0xf9, 0xa1, 0xf7, 0x44, 0xf9, 0xa1, - 0xf7, 0x44, 0xfa, 0xa1, 0xf7, 0x44, 0xfa, 0xa1, 0xf7, 0x44, 0xfa, 0xa1, - 0xf9, 0x44, 0xfa, 0xa1, 0xf7, 0x44, 0xfa, 0xa1, 0xf9, 0x44, 0xfb, 0xa1, - 0xf9, 0x44, 0xfb, 0xa1, 0xf9, 0x44, 0xfb, 0xa1, 0xf9, 0x44, 0xfb, 0xa1, - 0xf9, 0x44, 0xfc, 0xa1, 0xf9, 0x44, 0xfc, 0xa1, 0xf9, 0x44, 0xfc, 0xa1, - 0xf9, 0x44, 0xfc, 0xa1, 0xf9, 0x44, 0xfc, 0xa2, 0xfb, 0x44, 0xfd, 0xa2, - 0xfb, 0x44, 0xfd, 0xa2, 0xfb, 0x44, 0xfd, 0xa2, 0xfb, 0x44, 0xfd, 0xa2, - 0xfb, 0x44, 0xfe, 0xa2, 0xfb, 0x44, 0xfe, 0xa2, 0xfb, 0x44, 0xfe, 0xa2, - 0xfb, 0x44, 0xfe, 0xa2, 0xfb, 0x44, 0xfe, 0xa2, 0xfb, 0x44, 0xff, 0xa2, - 0xfb, 0x44, 0xff, 0xa2, 0xfb, 0x44, 0x03, 0x9b, 0x98, 0x45, 0x0a, 0x98, - 0x98, 0x45, 0x0f, 0x95, 0x99, 0x45, 0x14, 0x98, 0x98, 0x45, 0x17, 0x95, - 0x99, 0x45, 0x1b, 0x98, 0x98, 0x45, 0x1e, 0x95, 0x99, 0x45, 0x20, 0x98, - 0x98, 0x45, 0x23, 0x95, 0x99, 0x45, 0x25, 0x98, 0x98, 0x45, 0x27, 0x95, - 0x99, 0x45, 0x29, 0x98, 0x98, 0x45, 0x2b, 0x95, 0x99, 0x45, 0x2d, 0x98, - 0x98, 0x45, 0x2f, 0x95, 0x99, 0x45, 0x31, 0x98, 0x98, 0x45, 0x32, 0x95, - 0x99, 0x45, 0x34, 0x98, 0x98, 0x45, 0x35, 0x95, 0x99, 0x45, 0x37, 0x98, - 0x98, 0x45, 0x38, 0x95, 0x99, 0x45, 0x3a, 0x98, 0x98, 0x45, 0x3b, 0x95, - 0x99, 0x45, 0x3c, 0x98, 0x98, 0x45, 0x3e, 0x95, 0x99, 0x45, 0x3f, 0x98, - 0x98, 0x45, 0x40, 0x95, 0x99, 0x45, 0x42, 0x98, 0x98, 0x45, 0x43, 0x95, - 0x99, 0x45, 0x44, 0x98, 0x98, 0x45, 0x45, 0x95, 0x99, 0x45, 0x46, 0x98, - 0x98, 0x45, 0x47, 0x95, 0x99, 0x45, 0x48, 0x98, 0x98, 0x45, 0x49, 0x95, - 0x99, 0x45, 0x4a, 0x98, 0x98, 0x45, 0x4b, 0x95, 0x99, 0x45, 0x4c, 0x98, - 0x98, 0x45, 0x4d, 0x95, 0x99, 0x45, 0x4e, 0x98, 0x98, 0x45, 0x4f, 0x95, - 0x99, 0x45, 0x50, 0x98, 0x98, 0x45, 0x51, 0x95, 0x99, 0x45, 0x52, 0x98, - 0x98, 0x45, 0x53, 0x95, 0x99, 0x45, 0x54, 0x98, 0x98, 0x45, 0x55, 0x95, - 0x99, 0x45, 0x56, 0x98, 0x98, 0x45, 0x57, 0x95, 0x99, 0x45, 0x58, 0x98, - 0x98, 0x45, 0x58, 0x95, 0x99, 0x45, 0x59, 0x98, 0x98, 0x45, 0x5a, 0x95, - 0x99, 0x45, 0x5b, 0x98, 0x98, 0x45, 0x5c, 0x95, 0x99, 0x45, 0x5d, 0x98, - 0x98, 0x45, 0x5d, 0x95, 0x99, 0x45, 0x5e, 0x98, 0x98, 0x45, 0x5f, 0x95, - 0x99, 0x45, 0x60, 0x98, 0x98, 0x45, 0x60, 0x95, 0x99, 0x45, 0x61, 0x98, - 0x98, 0x45, 0x62, 0x95, 0x99, 0x45, 0x63, 0x98, 0x98, 0x45, 0x63, 0x95, - 0x99, 0x45, 0x64, 0x98, 0x98, 0x45, 0x65, 0x95, 0x99, 0x45, 0x66, 0x93, - 0x99, 0x45, 0x66, 0x95, 0x99, 0x45, 0x67, 0x93, 0x99, 0x45, 0x68, 0x95, - 0x99, 0x45, 0x68, 0x93, 0x99, 0x45, 0x69, 0x95, 0x99, 0x45, 0x6a, 0x93, - 0x99, 0x45, 0x6a, 0x95, 0x99, 0x45, 0x6b, 0x93, 0x99, 0x45, 0x6c, 0x95, - 0x99, 0x45, 0x6c, 0x93, 0x99, 0x45, 0x6d, 0x95, 0x99, 0x45, 0x6e, 0x93, - 0x99, 0x45, 0x6e, 0x95, 0x99, 0x45, 0x6f, 0x93, 0x99, 0x45, 0x70, 0x95, - 0x99, 0x45, 0x70, 0x93, 0x99, 0x45, 0x71, 0x95, 0x99, 0x45, 0x72, 0x93, - 0x99, 0x45, 0x72, 0x95, 0x99, 0x45, 0x73, 0x93, 0x99, 0x45, 0x73, 0x95, - 0x99, 0x45, 0x74, 0x93, 0x99, 0x45, 0x75, 0x95, 0x99, 0x45, 0x75, 0x93, - 0x99, 0x45, 0x76, 0x95, 0x99, 0x45, 0x76, 0x93, 0x99, 0x45, 0x77, 0x95, - 0x99, 0x45, 0x78, 0x93, 0x99, 0x45, 0x78, 0x95, 0x99, 0x45, 0x79, 0x93, - 0x99, 0x45, 0x79, 0x95, 0x99, 0x45, 0x7a, 0x93, 0x99, 0x45, 0x7a, 0x95, - 0x99, 0x45, 0x7b, 0x93, 0x99, 0x45, 0x7c, 0x95, 0x99, 0x45, 0x7c, 0x93, - 0x99, 0x45, 0x7d, 0x90, 0x9a, 0x45, 0x7d, 0x93, 0x99, 0x45, 0x7e, 0x90, - 0x9a, 0x45, 0x7e, 0x93, 0x99, 0x45, 0x7f, 0x90, 0x9a, 0x45, 0x7f, 0x93, - 0x99, 0x45, 0x80, 0x90, 0x9a, 0x45, 0x81, 0x93, 0x99, 0x45, 0x81, 0x90, - 0x9a, 0x45, 0x82, 0x93, 0x99, 0x45, 0x82, 0x90, 0x9a, 0x45, 0x83, 0x93, - 0x99, 0x45, 0x83, 0x90, 0x9a, 0x45, 0x84, 0x93, 0x99, 0x45, 0x84, 0x90, - 0x9a, 0x45, 0x85, 0x93, 0x99, 0x45, 0x85, 0x90, 0x9a, 0x45, 0x86, 0x93, - 0x99, 0x45, 0x86, 0x90, 0x9a, 0x45, 0x87, 0x93, 0x99, 0x45, 0x87, 0x90, - 0x9a, 0x45, 0x88, 0x93, 0x99, 0x45, 0x88, 0x90, 0x9a, 0x45, 0x89, 0x93, - 0x99, 0x45, 0x89, 0x90, 0x9a, 0x45, 0x8a, 0x93, 0x99, 0x45, 0x8a, 0x90, - 0x9a, 0x45, 0x8b, 0x93, 0x99, 0x45, 0x8b, 0x90, 0x9a, 0x45, 0x8c, 0x93, - 0x99, 0x45, 0x8c, 0x90, 0x9a, 0x45, 0x8d, 0x93, 0x99, 0x45, 0x8d, 0x90, - 0x9a, 0x45, 0x8e, 0x93, 0x99, 0x45, 0x8e, 0x90, 0x9a, 0x45, 0x8e, 0x93, - 0x99, 0x45, 0x8f, 0x90, 0x9a, 0x45, 0x8f, 0x8e, 0x9a, 0x45, 0x90, 0x90, - 0x9a, 0x45, 0x90, 0x8e, 0x9a, 0x45, 0x91, 0x90, 0x9a, 0x45, 0x91, 0x8e, - 0x9a, 0x45, 0x92, 0x90, 0x9a, 0x45, 0x92, 0x8e, 0x9a, 0x45, 0x93, 0x90, - 0x9a, 0x45, 0x93, 0x8e, 0x9a, 0x45, 0x94, 0x90, 0x9a, 0x45, 0x94, 0x8e, - 0x9a, 0x45, 0x94, 0x90, 0x9a, 0x45, 0x95, 0x8e, 0x9a, 0x45, 0x95, 0x90, - 0x9a, 0x45, 0x96, 0x8e, 0x9a, 0x45, 0x96, 0x90, 0x9a, 0x45, 0x97, 0x8e, - 0x9a, 0x45, 0x97, 0x90, 0x9a, 0x45, 0x98, 0x8e, 0x9a, 0x45, 0x98, 0x90, - 0x9a, 0x45, 0x98, 0x8e, 0x9a, 0x45, 0x99, 0x8e, 0x9a, 0x45, 0x99, 0x8e, - 0x9a, 0x45, 0x9a, 0x8e, 0x9a, 0x45, 0x99, 0x8e, 0x9a, 0x45, 0x9a, 0x8e, - 0x9a, 0x45, 0x99, 0x8e, 0x9b, 0x45, 0x9a, 0x8e, 0x9b, 0x45, 0x99, 0x8e, - 0x9c, 0x45, 0x9e, 0x8e, 0x9c, 0x46, 0x9e, 0x8e, 0x9d, 0x45, 0x9e, 0x8e, - 0x9d, 0x46, 0x9e, 0x8e, 0x9d, 0x45, 0x9e, 0x8e, 0x9e, 0x46, 0x9e, 0x8d, - 0x9e, 0x45, 0x9f, 0x8d, 0x9f, 0x45, 0x9f, 0x8d, 0x9f, 0x45, 0x9f, 0x8d, - 0x9f, 0x45, 0xa0, 0x8d, 0xa0, 0x45, 0xa0, 0x8d, 0xa0, 0x45, 0xa1, 0x8d, - 0xa1, 0x45, 0xa1, 0x8d, 0xa1, 0x45, 0xa1, 0x8d, 0xa1, 0x45, 0xa2, 0x8e, - 0xa2, 0x46, 0xa2, 0x8e, 0xa2, 0x46, 0xa3, 0x8e, 0xa3, 0x46, 0xa3, 0x8e, - 0xa3, 0x46, 0xa3, 0x8e, 0xa3, 0x46, 0xa4, 0x8e, 0xa4, 0x46, 0xa4, 0x8e, - 0xa4, 0x46, 0xa5, 0x8e, 0xa5, 0x46, 0xa5, 0x8e, 0xa5, 0x46, 0xa5, 0x8e, - 0xa5, 0x46, 0xa6, 0x8e, 0xa6, 0x46, 0xa5, 0x8e, 0xa6, 0x46, 0xa6, 0x8e, - 0xa6, 0x46, 0xa7, 0x8e, 0xa7, 0x47, 0xa7, 0x8e, 0xa7, 0x47, 0xa8, 0x8e, - 0xa8, 0x47, 0xa8, 0x8e, 0xa8, 0x47, 0xa8, 0x8e, 0xa8, 0x47, 0xa9, 0x8e, - 0xa9, 0x47, 0xa9, 0x8e, 0xa9, 0x47, 0xaa, 0x8e, 0xaa, 0x47, 0xaa, 0x8e, - 0xaa, 0x47, 0xaa, 0x8e, 0xaa, 0x47, 0xaa, 0x8e, 0xab, 0x47, 0xaa, 0x8e, - 0xab, 0x47, 0xaa, 0x8e, 0xab, 0x47, 0xac, 0x8e, 0xac, 0x48, 0xac, 0x8e, - 0xac, 0x48, 0xac, 0x8e, 0xac, 0x48, 0xad, 0x8e, 0xad, 0x48, 0xad, 0x8e, - 0xad, 0x48, 0xae, 0x8e, 0xae, 0x48, 0xae, 0x8e, 0xae, 0x48, 0xae, 0x8e, - 0xae, 0x48, 0xae, 0x8e, 0xaf, 0x48, 0xae, 0x8e, 0xaf, 0x48, 0xae, 0x8e, - 0xaf, 0x48, 0xb0, 0x8e, 0xb0, 0x49, 0xb0, 0x8e, 0xb0, 0x49, 0xb0, 0x8e, - 0xb0, 0x49, 0xb1, 0x8e, 0xb1, 0x49, 0xb1, 0x8e, 0xb1, 0x49, 0xb2, 0x8e, - 0xb2, 0x49, 0xb2, 0x8e, 0xb2, 0x49, 0xb2, 0x8e, 0xb2, 0x49, 0xb2, 0x8e, - 0xb3, 0x49, 0xb2, 0x8e, 0xb3, 0x49, 0xb2, 0x8e, 0xb3, 0x49, 0xb4, 0x8e, - 0xb4, 0x40, 0xb4, 0x8e, 0xb4, 0x40, 0xb6, 0x8e, 0xb4, 0x41, 0xb6, 0x8e, - 0xb5, 0x41, 0xb6, 0x8e, 0xb5, 0x41, 0xb6, 0x8e, 0xb5, 0x41, 0xb6, 0x8e, - 0xb6, 0x41, 0xb6, 0x8e, 0xb6, 0x41, 0xb6, 0x8e, 0xb6, 0x41, 0xb7, 0x8e, - 0xb7, 0x41, 0xb7, 0x8e, 0xb7, 0x41, 0xb9, 0x8e, 0xb7, 0x42, 0xb9, 0x8e, - 0xb8, 0x42, 0xb9, 0x8e, 0xb8, 0x42, 0xb9, 0x8e, 0xb8, 0x42, 0xb9, 0x8e, - 0xb9, 0x42, 0xb9, 0x8e, 0xb9, 0x42, 0xb9, 0x8e, 0xb9, 0x42, 0xba, 0x8e, - 0xba, 0x42, 0xba, 0x8e, 0xba, 0x42, 0xba, 0x8e, 0xba, 0x42, 0xbc, 0x8e, - 0xbb, 0x43, 0xbc, 0x8e, 0xbb, 0x43, 0xbc, 0x8e, 0xbb, 0x43, 0xbc, 0x8e, - 0xbc, 0x43, 0xbc, 0x8e, 0xbc, 0x43, 0xbc, 0x8e, 0xbc, 0x43, 0xbd, 0x8e, - 0xbd, 0x43, 0xbd, 0x8e, 0xbd, 0x43, 0xbd, 0x8e, 0xbd, 0x43, 0xbe, 0x8e, - 0xbe, 0x43, 0xbe, 0x8e, 0xbe, 0x43, 0xbf, 0x8e, 0xbe, 0x44, 0xbf, 0x8e, - 0xbf, 0x44, 0xbf, 0x8e, 0xbf, 0x44, 0xbf, 0x8e, 0xbf, 0x44, 0xc0, 0x8e, - 0xc0, 0x44, 0xc0, 0x8e, 0xc0, 0x44, 0xc0, 0x8e, 0xc0, 0x44, 0xc1, 0x8e, - 0xc1, 0x44, 0xc1, 0x8e, 0xc1, 0x44, 0xc1, 0x8e, 0xc1, 0x44, 0xc1, 0x8e, - 0xc1, 0x44, 0xc2, 0x8f, 0xc2, 0x45, 0xc2, 0x8f, 0xc2, 0x45, 0xc2, 0x8f, - 0xc2, 0x45, 0xc3, 0x8f, 0xc3, 0x45, 0xc3, 0x8f, 0xc3, 0x45, 0xc3, 0x8f, - 0xc3, 0x45, 0xc4, 0x8f, 0xc4, 0x45, 0xc4, 0x8f, 0xc4, 0x45, 0xc4, 0x8f, - 0xc4, 0x45, 0xc5, 0x8f, 0xc5, 0x45, 0xc5, 0x8f, 0xc4, 0x45, 0xc5, 0x8f, - 0xc5, 0x45, 0xc6, 0x90, 0xc6, 0x45, 0xc6, 0x90, 0xc6, 0x45, 0xc6, 0x90, - 0xc6, 0x45, 0xc6, 0x90, 0xc6, 0x45, 0xc7, 0x90, 0xc7, 0x45, 0xc7, 0x90, - 0xc7, 0x45, 0xc7, 0x90, 0xc7, 0x45, 0xc8, 0x90, 0xc7, 0x45, 0xc8, 0x90, - 0xc7, 0x45, 0xc8, 0x90, 0xc7, 0x45, 0xc9, 0x90, 0xc7, 0x45, 0xc9, 0x91, - 0xc9, 0x45, 0xc9, 0x91, 0xc9, 0x45, 0xc9, 0x91, 0xc9, 0x45, 0xca, 0x91, - 0xca, 0x45, 0xca, 0x91, 0xca, 0x45, 0xca, 0x91, 0xca, 0x45, 0xcb, 0x91, - 0xca, 0x45, 0xcb, 0x91, 0xca, 0x45, 0xcb, 0x91, 0xca, 0x45, 0xcc, 0x92, - 0xcc, 0x45, 0xcc, 0x92, 0xcc, 0x45, 0xcc, 0x92, 0xcc, 0x45, 0xcc, 0x92, - 0xcc, 0x45, 0xcd, 0x92, 0xcd, 0x45, 0xcd, 0x92, 0xcd, 0x45, 0xcd, 0x92, - 0xcd, 0x45, 0xce, 0x92, 0xcd, 0x45, 0xce, 0x92, 0xcd, 0x45, 0xce, 0x92, - 0xcd, 0x45, 0xce, 0x93, 0xce, 0x45, 0xcf, 0x93, 0xcf, 0x45, 0xcf, 0x93, - 0xcf, 0x45, 0xcf, 0x93, 0xcf, 0x45, 0xd0, 0x93, 0xd0, 0x45, 0xd0, 0x93, - 0xcf, 0x45, 0xd0, 0x93, 0xd0, 0x45, 0xd0, 0x93, 0xcf, 0x45, 0xd1, 0x93, - 0xd0, 0x45, 0xd1, 0x93, 0xcf, 0x45, 0xd1, 0x93, 0xd0, 0x45, 0xd2, 0x94, - 0xd2, 0x45, 0xd2, 0x94, 0xd2, 0x45, 0xd2, 0x94, 0xd2, 0x45, 0xd2, 0x94, - 0xd2, 0x45, 0xd3, 0x94, 0xd2, 0x45, 0xd3, 0x94, 0xd2, 0x45, 0xd3, 0x94, - 0xd2, 0x45, 0xd4, 0x94, 0xd2, 0x45, 0xd4, 0x94, 0xd2, 0x45, 0xd4, 0x94, - 0xd2, 0x45, 0xd4, 0x94, 0xd4, 0x45, 0xd5, 0x94, 0xd5, 0x45, 0xd5, 0x94, - 0xd5, 0x45, 0xd5, 0x94, 0xd5, 0x45, 0xd6, 0x94, 0xd5, 0x45, 0xd6, 0x94, - 0xd5, 0x45, 0xd6, 0x94, 0xd5, 0x45, 0xd6, 0x94, 0xd5, 0x45, 0xd7, 0x94, - 0xd5, 0x45, 0xd7, 0x95, 0xd7, 0x45, 0xd7, 0x95, 0xd7, 0x45, 0xd7, 0x95, - 0xd7, 0x45, 0xd8, 0x95, 0xd7, 0x45, 0xd8, 0x95, 0xd7, 0x45, 0xd8, 0x95, - 0xd7, 0x45, 0xd9, 0x95, 0xd7, 0x45, 0xd9, 0x95, 0xd7, 0x45, 0xd9, 0x95, - 0xd7, 0x45, 0xd9, 0x95, 0xd7, 0x45, 0xda, 0x95, 0xd7, 0x45, 0xda, 0x96, - 0xda, 0x45, 0xda, 0x96, 0xda, 0x45, 0xda, 0x96, 0xda, 0x45, 0xdb, 0x96, - 0xda, 0x45, 0xdb, 0x96, 0xda, 0x45, 0xdb, 0x96, 0xda, 0x45, 0xdb, 0x96, - 0xda, 0x45, 0xdc, 0x96, 0xda, 0x45, 0xdc, 0x96, 0xda, 0x45, 0xdc, 0x96, - 0xda, 0x45, 0xdd, 0x97, 0xdd, 0x45, 0xdd, 0x97, 0xdc, 0x45, 0xdd, 0x97, - 0xdd, 0x45, 0xdd, 0x97, 0xdc, 0x45, 0xde, 0x97, 0xdd, 0x45, 0xde, 0x97, - 0xdc, 0x45, 0xde, 0x97, 0xdd, 0x45, 0xde, 0x97, 0xdc, 0x45, 0xdf, 0x97, - 0xdd, 0x45, 0xdf, 0x98, 0xdf, 0x45, 0xdf, 0x98, 0xdf, 0x45, 0xdf, 0x98, - 0xdf, 0x45, 0xe0, 0x98, 0xdf, 0x45, 0xe0, 0x98, 0xdf, 0x45, 0xe0, 0x98, - 0xdf, 0x45, 0xe1, 0x98, 0xdf, 0x45, 0xe1, 0x98, 0xdf, 0x45, 0xe1, 0x98, - 0xdf, 0x45, 0xe1, 0x99, 0xe1, 0x45, 0xe2, 0x99, 0xe2, 0x45, 0xe2, 0x99, - 0xe1, 0x45, 0xe2, 0x99, 0xe2, 0x45, 0xe2, 0x99, 0xe1, 0x45, 0xe3, 0x99, - 0xe2, 0x45, 0xe3, 0x99, 0xe1, 0x45, 0xe3, 0x99, 0xe2, 0x45, 0xe3, 0x99, - 0xe1, 0x45, 0xe4, 0x99, 0xe2, 0x45, 0xe4, 0x9a, 0xe4, 0x45, 0xe4, 0x99, - 0xe2, 0x45, 0xe4, 0x9a, 0xe4, 0x45, 0xe5, 0x9a, 0xe4, 0x45, 0xe5, 0x9a, - 0xe4, 0x45, 0xe5, 0x9a, 0xe4, 0x45, 0xe5, 0x9a, 0xe4, 0x45, 0xe6, 0x9a, - 0xe4, 0x45, 0xe6, 0x9a, 0xe4, 0x45, 0xe6, 0x9a, 0xe4, 0x45, 0xe6, 0x9a, - 0xe4, 0x45, 0xe7, 0x9a, 0xe6, 0x45, 0xe7, 0x9a, 0xe6, 0x45, 0xe7, 0x9a, - 0xe6, 0x45, 0xe7, 0x9a, 0xe6, 0x45, 0xe8, 0x9a, 0xe6, 0x45, 0xe8, 0x9a, - 0xe6, 0x45, 0xe8, 0x9a, 0xe6, 0x45, 0xe8, 0x9a, 0xe6, 0x45, 0xe9, 0x9a, - 0xe6, 0x45, 0xe9, 0x9b, 0xe8, 0x45, 0xe9, 0x9b, 0xe9, 0x45, 0xe9, 0x9b, - 0xe8, 0x45, 0xea, 0x9b, 0xe9, 0x45, 0xea, 0x9b, 0xe8, 0x45, 0xea, 0x9b, - 0xe9, 0x45, 0xea, 0x9b, 0xe8, 0x45, 0xeb, 0x9b, 0xe9, 0x45, 0xeb, 0x9b, - 0xe8, 0x45, 0xeb, 0x9b, 0xe9, 0x45, 0xeb, 0x9c, 0xeb, 0x45, 0xec, 0x9c, - 0xeb, 0x45, 0xec, 0x9c, 0xeb, 0x45, 0xec, 0x9c, 0xeb, 0x45, 0xec, 0x9c, - 0xeb, 0x45, 0xec, 0x9c, 0xeb, 0x45, 0xed, 0x9c, 0xeb, 0x45, 0xed, 0x9c, - 0xeb, 0x45, 0xed, 0x9c, 0xeb, 0x45, 0xed, 0x9d, 0xed, 0x45, 0xee, 0x9d, - 0xed, 0x45, 0xee, 0x9d, 0xed, 0x45, 0xee, 0x9d, 0xed, 0x45, 0xee, 0x9d, - 0xed, 0x45, 0xef, 0x9d, 0xed, 0x45, 0xef, 0x9d, 0xed, 0x45, 0xef, 0x9d, - 0xed, 0x45, 0xef, 0x9d, 0xed, 0x45, 0xf0, 0x9d, 0xed, 0x45, 0xf0, 0x9d, - 0xed, 0x45, 0xf0, 0x9d, 0xed, 0x45, 0xf0, 0x9e, 0xef, 0x45, 0xf1, 0x9e, - 0xef, 0x45, 0xf1, 0x9e, 0xef, 0x45, 0xf1, 0x9e, 0xef, 0x45, 0xf1, 0x9e, - 0xef, 0x45, 0xf2, 0x9e, 0xef, 0x45, 0xf2, 0x9e, 0xef, 0x45, 0xf2, 0x9e, - 0xef, 0x45, 0xf2, 0x9e, 0xef, 0x45, 0xf2, 0x9f, 0xf2, 0x45, 0xf3, 0x9f, - 0xf1, 0x45, 0xf3, 0x9f, 0xf2, 0x45, 0xf3, 0x9f, 0xf1, 0x45, 0xf3, 0x9f, - 0xf2, 0x45, 0xf4, 0x9f, 0xf1, 0x45, 0xf4, 0x9f, 0xf2, 0x45, 0xf4, 0x9f, - 0xf1, 0x45, 0xf4, 0x9f, 0xf2, 0x45, 0xf5, 0x9f, 0xf4, 0x45, 0xf5, 0x9f, - 0xf4, 0x45, 0xf5, 0x9f, 0xf4, 0x45, 0xf5, 0x9f, 0xf4, 0x45, 0xf5, 0x9f, - 0xf4, 0x45, 0xf6, 0x9f, 0xf4, 0x45, 0xf6, 0x9f, 0xf4, 0x45, 0xf6, 0x9f, - 0xf4, 0x45, 0xf6, 0x9f, 0xf4, 0x45, 0xf7, 0x9f, 0xf4, 0x45, 0xf7, 0xa0, - 0xf6, 0x45, 0xf7, 0x9f, 0xf4, 0x45, 0xf7, 0xa0, 0xf6, 0x45, 0xf8, 0xa0, - 0xf6, 0x45, 0xf8, 0xa0, 0xf6, 0x45, 0xf8, 0xa0, 0xf6, 0x45, 0xf8, 0xa0, - 0xf6, 0x45, 0xf8, 0xa0, 0xf6, 0x45, 0xf9, 0xa0, 0xf6, 0x45, 0xf9, 0xa1, - 0xf8, 0x45, 0xf9, 0xa0, 0xf6, 0x45, 0xf9, 0xa1, 0xf8, 0x45, 0xfa, 0xa1, - 0xf8, 0x45, 0xfa, 0xa1, 0xf8, 0x45, 0xfa, 0xa1, 0xf8, 0x45, 0xfa, 0xa1, - 0xf8, 0x45, 0xfa, 0xa1, 0xf8, 0x45, 0xfb, 0xa1, 0xf8, 0x45, 0xfb, 0xa2, - 0xfa, 0x45, 0xfb, 0xa2, 0xfa, 0x45, 0xfb, 0xa2, 0xfa, 0x45, 0xfc, 0xa2, - 0xfa, 0x45, 0xfc, 0xa2, 0xfa, 0x45, 0xfc, 0xa2, 0xfa, 0x45, 0xfc, 0xa2, - 0xfa, 0x45, 0xfc, 0xa2, 0xfa, 0x45, 0xfd, 0xa2, 0xfa, 0x45, 0xfd, 0xa2, - 0xfa, 0x45, 0xfd, 0xa2, 0xfa, 0x45, 0xfd, 0xa2, 0xfa, 0x45, 0xfe, 0xa2, - 0xfa, 0x45, 0xfe, 0xa2, 0xfa, 0x45, 0xfe, 0xa2, 0xfa, 0x45, 0xfe, 0xa2, - 0xfa, 0x45, 0xfe, 0xa3, 0xfb, 0x45, 0xff, 0xa3, 0xfc, 0x45, 0xff, 0xa3, - 0xfb, 0x45, 0x03, 0x9b, 0x98, 0x45, 0x0a, 0x9b, 0x98, 0x45, 0x0f, 0x9b, - 0x98, 0x45, 0x14, 0x9b, 0x98, 0x45, 0x17, 0x9b, 0x98, 0x45, 0x1b, 0x9b, - 0x98, 0x45, 0x1e, 0x9b, 0x98, 0x45, 0x20, 0x9b, 0x98, 0x45, 0x23, 0x9b, - 0x98, 0x45, 0x25, 0x9b, 0x98, 0x45, 0x27, 0x9b, 0x98, 0x45, 0x29, 0x98, - 0x98, 0x45, 0x2b, 0x9b, 0x98, 0x45, 0x2d, 0x98, 0x98, 0x45, 0x2f, 0x9b, - 0x98, 0x45, 0x31, 0x98, 0x98, 0x45, 0x32, 0x9b, 0x98, 0x45, 0x34, 0x98, - 0x98, 0x45, 0x35, 0x9b, 0x98, 0x45, 0x37, 0x98, 0x98, 0x45, 0x38, 0x9b, - 0x98, 0x45, 0x3a, 0x98, 0x98, 0x45, 0x3b, 0x9b, 0x98, 0x45, 0x3c, 0x98, - 0x98, 0x45, 0x3e, 0x9b, 0x98, 0x45, 0x3f, 0x98, 0x98, 0x45, 0x40, 0x9b, - 0x98, 0x45, 0x42, 0x98, 0x98, 0x45, 0x43, 0x9b, 0x98, 0x45, 0x44, 0x98, - 0x98, 0x45, 0x45, 0x96, 0x99, 0x45, 0x46, 0x98, 0x98, 0x45, 0x47, 0x96, - 0x99, 0x45, 0x48, 0x98, 0x98, 0x45, 0x49, 0x96, 0x99, 0x45, 0x4a, 0x98, - 0x98, 0x45, 0x4b, 0x96, 0x99, 0x45, 0x4c, 0x98, 0x98, 0x45, 0x4d, 0x96, - 0x99, 0x45, 0x4e, 0x98, 0x98, 0x45, 0x4f, 0x96, 0x99, 0x45, 0x50, 0x98, - 0x98, 0x45, 0x51, 0x96, 0x99, 0x45, 0x52, 0x98, 0x98, 0x45, 0x53, 0x96, - 0x99, 0x45, 0x54, 0x98, 0x98, 0x45, 0x55, 0x96, 0x99, 0x45, 0x56, 0x98, - 0x98, 0x45, 0x57, 0x96, 0x99, 0x45, 0x58, 0x98, 0x98, 0x45, 0x58, 0x96, - 0x99, 0x45, 0x59, 0x98, 0x98, 0x45, 0x5a, 0x96, 0x99, 0x45, 0x5b, 0x98, - 0x98, 0x45, 0x5c, 0x96, 0x99, 0x45, 0x5d, 0x98, 0x98, 0x45, 0x5d, 0x96, - 0x99, 0x45, 0x5e, 0x98, 0x98, 0x45, 0x5f, 0x96, 0x99, 0x45, 0x60, 0x92, - 0x99, 0x45, 0x60, 0x96, 0x99, 0x45, 0x61, 0x92, 0x99, 0x45, 0x62, 0x96, - 0x99, 0x45, 0x63, 0x92, 0x99, 0x45, 0x63, 0x96, 0x99, 0x45, 0x64, 0x92, - 0x99, 0x45, 0x65, 0x96, 0x99, 0x45, 0x66, 0x92, 0x99, 0x45, 0x66, 0x96, - 0x99, 0x45, 0x67, 0x92, 0x99, 0x45, 0x68, 0x96, 0x99, 0x45, 0x68, 0x92, - 0x99, 0x45, 0x69, 0x96, 0x99, 0x45, 0x6a, 0x92, 0x99, 0x45, 0x6a, 0x96, - 0x99, 0x45, 0x6b, 0x92, 0x99, 0x45, 0x6c, 0x96, 0x99, 0x45, 0x6c, 0x92, - 0x99, 0x45, 0x6d, 0x96, 0x99, 0x45, 0x6e, 0x92, 0x99, 0x45, 0x6e, 0x96, - 0x99, 0x45, 0x6f, 0x92, 0x99, 0x45, 0x70, 0x96, 0x99, 0x45, 0x70, 0x92, - 0x99, 0x45, 0x71, 0x96, 0x99, 0x45, 0x72, 0x92, 0x99, 0x45, 0x72, 0x96, - 0x99, 0x45, 0x73, 0x92, 0x99, 0x45, 0x73, 0x96, 0x99, 0x45, 0x74, 0x92, - 0x99, 0x45, 0x75, 0x96, 0x99, 0x45, 0x75, 0x92, 0x99, 0x45, 0x76, 0x96, - 0x99, 0x45, 0x76, 0x92, 0x99, 0x45, 0x77, 0x96, 0x99, 0x45, 0x78, 0x92, - 0x99, 0x45, 0x78, 0x96, 0x99, 0x45, 0x79, 0x92, 0x99, 0x45, 0x79, 0x96, - 0x99, 0x45, 0x7a, 0x92, 0x99, 0x45, 0x7a, 0x8f, 0x9a, 0x45, 0x7b, 0x92, - 0x99, 0x45, 0x7c, 0x8f, 0x9a, 0x45, 0x7c, 0x92, 0x99, 0x45, 0x7d, 0x8f, - 0x9a, 0x45, 0x7d, 0x92, 0x99, 0x45, 0x7e, 0x8f, 0x9a, 0x45, 0x7e, 0x92, - 0x99, 0x45, 0x7f, 0x8f, 0x9a, 0x45, 0x7f, 0x92, 0x99, 0x45, 0x80, 0x8f, - 0x9a, 0x45, 0x81, 0x92, 0x99, 0x45, 0x81, 0x8f, 0x9a, 0x45, 0x82, 0x92, - 0x99, 0x45, 0x82, 0x8f, 0x9a, 0x45, 0x83, 0x92, 0x99, 0x45, 0x83, 0x8f, - 0x9a, 0x45, 0x84, 0x92, 0x99, 0x45, 0x84, 0x8f, 0x9a, 0x45, 0x85, 0x92, - 0x99, 0x45, 0x85, 0x8f, 0x9a, 0x45, 0x86, 0x92, 0x99, 0x45, 0x86, 0x8f, - 0x9a, 0x45, 0x87, 0x92, 0x99, 0x45, 0x87, 0x8f, 0x9a, 0x45, 0x88, 0x92, - 0x99, 0x45, 0x88, 0x8f, 0x9a, 0x45, 0x89, 0x92, 0x99, 0x45, 0x89, 0x8f, - 0x9a, 0x45, 0x8a, 0x92, 0x99, 0x45, 0x8a, 0x8f, 0x9a, 0x45, 0x8b, 0x92, - 0x99, 0x45, 0x8b, 0x8f, 0x9a, 0x45, 0x8c, 0x92, 0x99, 0x45, 0x8c, 0x8f, - 0x9a, 0x45, 0x8d, 0x92, 0x99, 0x45, 0x8d, 0x8f, 0x9a, 0x45, 0x8e, 0x92, - 0x99, 0x45, 0x8e, 0x8f, 0x9a, 0x45, 0x8e, 0x92, 0x99, 0x45, 0x8f, 0x8f, - 0x9a, 0x45, 0x8f, 0x92, 0x99, 0x45, 0x90, 0x8f, 0x9a, 0x45, 0x90, 0x92, - 0x99, 0x45, 0x91, 0x8f, 0x9a, 0x45, 0x91, 0x92, 0x99, 0x45, 0x92, 0x8f, - 0x9a, 0x45, 0x92, 0x92, 0x99, 0x45, 0x93, 0x8f, 0x9a, 0x45, 0x93, 0x8e, - 0x9a, 0x45, 0x94, 0x8f, 0x9a, 0x45, 0x94, 0x8e, 0x9a, 0x45, 0x94, 0x8f, - 0x9a, 0x45, 0x95, 0x8e, 0x9a, 0x45, 0x95, 0x8f, 0x9a, 0x45, 0x96, 0x8e, - 0x9a, 0x45, 0x96, 0x8f, 0x9a, 0x45, 0x97, 0x8e, 0x9a, 0x45, 0x97, 0x8f, - 0x9a, 0x45, 0x98, 0x8e, 0x9a, 0x45, 0x98, 0x8f, 0x9a, 0x45, 0x98, 0x8e, - 0x9a, 0x45, 0x99, 0x8f, 0x9a, 0x45, 0x99, 0x8e, 0x9a, 0x45, 0x9a, 0x8f, - 0x9a, 0x45, 0x99, 0x8e, 0x9a, 0x45, 0x9a, 0x8e, 0x9a, 0x45, 0x99, 0x8e, - 0x9b, 0x45, 0x9a, 0x8e, 0x9b, 0x45, 0x99, 0x8e, 0x9c, 0x45, 0x9e, 0x8e, - 0x9c, 0x45, 0x9e, 0x8e, 0x9d, 0x45, 0x9e, 0x8e, 0x9d, 0x45, 0x9e, 0x8e, - 0x9d, 0x45, 0x9e, 0x8e, 0x9e, 0x45, 0x9e, 0x8e, 0x9d, 0x45, 0x9f, 0x8e, - 0x9e, 0x45, 0x9f, 0x8e, 0xa0, 0x45, 0x9f, 0x8e, 0x9f, 0x45, 0xa0, 0x8e, - 0xa0, 0x45, 0xa0, 0x8e, 0xa0, 0x45, 0xa1, 0x8e, 0xa1, 0x45, 0xa1, 0x8e, - 0xa1, 0x45, 0xa1, 0x8e, 0xa1, 0x45, 0xa2, 0x8e, 0xa2, 0x45, 0xa2, 0x8e, - 0xa2, 0x45, 0xa3, 0x8e, 0xa3, 0x45, 0xa3, 0x8e, 0xa3, 0x45, 0xa3, 0x8e, - 0xa3, 0x45, 0xa4, 0x8e, 0xa4, 0x46, 0xa4, 0x8e, 0xa4, 0x46, 0xa5, 0x8e, - 0xa5, 0x46, 0xa5, 0x8e, 0xa5, 0x46, 0xa5, 0x8e, 0xa5, 0x46, 0xa6, 0x8e, - 0xa6, 0x46, 0xa6, 0x8e, 0xa6, 0x46, 0xa6, 0x8e, 0xa6, 0x46, 0xa7, 0x8e, - 0xa7, 0x46, 0xa7, 0x8e, 0xa7, 0x46, 0xa8, 0x8e, 0xa8, 0x46, 0xa7, 0x8e, - 0xa8, 0x46, 0xa8, 0x8e, 0xa8, 0x46, 0xa9, 0x8e, 0xa9, 0x47, 0xa9, 0x8e, - 0xa9, 0x47, 0xaa, 0x8e, 0xaa, 0x47, 0xaa, 0x8e, 0xaa, 0x47, 0xaa, 0x8e, - 0xaa, 0x47, 0xab, 0x8e, 0xab, 0x47, 0xab, 0x8e, 0xab, 0x47, 0xab, 0x8e, - 0xab, 0x47, 0xac, 0x8e, 0xac, 0x47, 0xac, 0x8e, 0xac, 0x47, 0xac, 0x8e, - 0xac, 0x47, 0xac, 0x8e, 0xad, 0x47, 0xac, 0x8e, 0xad, 0x47, 0xac, 0x8e, - 0xae, 0x47, 0xae, 0x8e, 0xae, 0x48, 0xae, 0x8e, 0xae, 0x48, 0xaf, 0x8e, - 0xaf, 0x48, 0xaf, 0x8e, 0xaf, 0x48, 0xaf, 0x8e, 0xaf, 0x48, 0xb0, 0x8e, - 0xb0, 0x48, 0xb0, 0x8e, 0xb0, 0x48, 0xb0, 0x8e, 0xb0, 0x48, 0xb0, 0x8e, - 0xb1, 0x48, 0xb0, 0x8e, 0xb1, 0x48, 0xb0, 0x8e, 0xb2, 0x48, 0xb2, 0x8e, - 0xb2, 0x49, 0xb2, 0x8e, 0xb2, 0x49, 0xb3, 0x8e, 0xb3, 0x49, 0xb3, 0x8e, - 0xb3, 0x49, 0xb3, 0x8e, 0xb3, 0x49, 0xb4, 0x8e, 0xb4, 0x49, 0xb4, 0x8e, - 0xb4, 0x49, 0xb4, 0x8e, 0xb4, 0x49, 0xb4, 0x8e, 0xb5, 0x49, 0xb4, 0x8e, - 0xb5, 0x49, 0xb4, 0x8e, 0xb5, 0x49, 0xb6, 0x8e, 0xb6, 0x40, 0xb7, 0x8e, - 0xb6, 0x41, 0xb8, 0x8e, 0xb6, 0x41, 0xb7, 0x8e, 0xb7, 0x41, 0xb8, 0x8e, - 0xb7, 0x41, 0xb7, 0x8e, 0xb7, 0x41, 0xb8, 0x8e, 0xb8, 0x41, 0xb8, 0x8e, - 0xb8, 0x41, 0xb8, 0x8e, 0xb8, 0x41, 0xb9, 0x8e, 0xb9, 0x41, 0xba, 0x8e, - 0xb9, 0x42, 0xbb, 0x8e, 0xb9, 0x42, 0xba, 0x8e, 0xba, 0x42, 0xbb, 0x8e, - 0xba, 0x42, 0xba, 0x8e, 0xba, 0x42, 0xbb, 0x8e, 0xbb, 0x42, 0xbb, 0x8e, - 0xbb, 0x42, 0xbb, 0x8e, 0xbb, 0x42, 0xbc, 0x8e, 0xbc, 0x42, 0xbd, 0x8e, - 0xbc, 0x43, 0xbe, 0x8e, 0xbc, 0x43, 0xbd, 0x8e, 0xbd, 0x43, 0xbe, 0x8e, - 0xbd, 0x43, 0xbd, 0x8e, 0xbd, 0x43, 0xbe, 0x8e, 0xbe, 0x43, 0xbe, 0x8e, - 0xbe, 0x43, 0xbe, 0x8e, 0xbe, 0x43, 0xbf, 0x8e, 0xbf, 0x43, 0xbf, 0x8e, - 0xbf, 0x43, 0xbf, 0x8e, 0xbf, 0x43, 0xc0, 0x8e, 0xc0, 0x43, 0xc1, 0x8e, - 0xc0, 0x44, 0xc1, 0x8e, 0xc0, 0x44, 0xc1, 0x8e, 0xc1, 0x44, 0xc1, 0x8e, - 0xc1, 0x44, 0xc1, 0x8e, 0xc1, 0x44, 0xc1, 0x8e, 0xc1, 0x44, 0xc2, 0x8e, - 0xc2, 0x44, 0xc2, 0x8e, 0xc2, 0x44, 0xc2, 0x8e, 0xc2, 0x44, 0xc3, 0x8e, - 0xc3, 0x44, 0xc3, 0x8e, 0xc3, 0x44, 0xc3, 0x8f, 0xc3, 0x45, 0xc4, 0x8f, - 0xc4, 0x45, 0xc4, 0x8f, 0xc4, 0x45, 0xc4, 0x8f, 0xc4, 0x45, 0xc5, 0x8f, - 0xc5, 0x45, 0xc5, 0x8f, 0xc5, 0x45, 0xc5, 0x8f, 0xc5, 0x45, 0xc6, 0x8f, - 0xc6, 0x45, 0xc6, 0x8f, 0xc6, 0x45, 0xc6, 0x8f, 0xc6, 0x45, 0xc6, 0x8f, - 0xc6, 0x45, 0xc7, 0x90, 0xc7, 0x45, 0xc7, 0x90, 0xc7, 0x45, 0xc7, 0x90, - 0xc7, 0x45, 0xc8, 0x90, 0xc8, 0x45, 0xc8, 0x90, 0xc8, 0x45, 0xc8, 0x90, - 0xc8, 0x45, 0xc9, 0x90, 0xc9, 0x45, 0xc9, 0x90, 0xc9, 0x45, 0xc9, 0x90, - 0xc9, 0x45, 0xc9, 0x90, 0xc9, 0x45, 0xca, 0x90, 0xc9, 0x45, 0xca, 0x90, - 0xc9, 0x45, 0xca, 0x91, 0xca, 0x45, 0xcb, 0x91, 0xcb, 0x45, 0xcb, 0x91, - 0xcb, 0x45, 0xcb, 0x91, 0xcb, 0x45, 0xcc, 0x91, 0xcc, 0x45, 0xcc, 0x91, - 0xcb, 0x45, 0xcc, 0x91, 0xcc, 0x45, 0xcc, 0x91, 0xcb, 0x45, 0xcd, 0x91, - 0xcc, 0x45, 0xcd, 0x92, 0xcd, 0x45, 0xcd, 0x92, 0xcd, 0x45, 0xce, 0x92, - 0xce, 0x45, 0xce, 0x92, 0xce, 0x45, 0xce, 0x92, 0xce, 0x45, 0xce, 0x92, - 0xce, 0x45, 0xcf, 0x92, 0xce, 0x45, 0xcf, 0x92, 0xce, 0x45, 0xcf, 0x92, - 0xce, 0x45, 0xd0, 0x92, 0xce, 0x45, 0xd0, 0x93, 0xd0, 0x45, 0xd0, 0x93, - 0xd0, 0x45, 0xd0, 0x93, 0xd0, 0x45, 0xd1, 0x93, 0xd1, 0x45, 0xd1, 0x93, - 0xd1, 0x45, 0xd1, 0x93, 0xd1, 0x45, 0xd2, 0x93, 0xd1, 0x45, 0xd2, 0x93, - 0xd1, 0x45, 0xd2, 0x93, 0xd1, 0x45, 0xd2, 0x93, 0xd1, 0x45, 0xd3, 0x93, - 0xd1, 0x45, 0xd3, 0x94, 0xd3, 0x45, 0xd3, 0x94, 0xd3, 0x45, 0xd4, 0x94, - 0xd4, 0x45, 0xd4, 0x94, 0xd3, 0x45, 0xd4, 0x94, 0xd4, 0x45, 0xd4, 0x94, - 0xd3, 0x45, 0xd5, 0x94, 0xd4, 0x45, 0xd5, 0x94, 0xd3, 0x45, 0xd5, 0x94, - 0xd4, 0x45, 0xd6, 0x95, 0xd6, 0x45, 0xd6, 0x95, 0xd6, 0x45, 0xd6, 0x95, - 0xd6, 0x45, 0xd6, 0x95, 0xd6, 0x45, 0xd7, 0x95, 0xd6, 0x45, 0xd7, 0x95, - 0xd6, 0x45, 0xd7, 0x95, 0xd6, 0x45, 0xd7, 0x95, 0xd6, 0x45, 0xd8, 0x95, - 0xd6, 0x45, 0xd8, 0x95, 0xd6, 0x45, 0xd8, 0x96, 0xd8, 0x45, 0xd9, 0x96, - 0xd9, 0x45, 0xd9, 0x96, 0xd9, 0x45, 0xd9, 0x96, 0xd9, 0x45, 0xd9, 0x96, - 0xd9, 0x45, 0xda, 0x96, 0xd9, 0x45, 0xda, 0x96, 0xd9, 0x45, 0xda, 0x96, - 0xd9, 0x45, 0xda, 0x96, 0xd9, 0x45, 0xdb, 0x96, 0xd9, 0x45, 0xdb, 0x96, - 0xd9, 0x45, 0xdb, 0x97, 0xdb, 0x45, 0xdb, 0x97, 0xdb, 0x45, 0xdc, 0x97, - 0xdb, 0x45, 0xdc, 0x97, 0xdb, 0x45, 0xdc, 0x97, 0xdb, 0x45, 0xdd, 0x97, - 0xdb, 0x45, 0xdd, 0x97, 0xdb, 0x45, 0xdd, 0x97, 0xdb, 0x45, 0xdd, 0x97, - 0xdb, 0x45, 0xde, 0x98, 0xde, 0x45, 0xde, 0x98, 0xde, 0x45, 0xde, 0x98, - 0xde, 0x45, 0xde, 0x98, 0xde, 0x45, 0xdf, 0x98, 0xde, 0x45, 0xdf, 0x98, - 0xde, 0x45, 0xdf, 0x98, 0xde, 0x45, 0xdf, 0x98, 0xde, 0x45, 0xe0, 0x98, - 0xde, 0x45, 0xe0, 0x98, 0xde, 0x45, 0xe0, 0x98, 0xe0, 0x45, 0xe1, 0x98, - 0xe0, 0x45, 0xe1, 0x98, 0xe0, 0x45, 0xe1, 0x98, 0xe0, 0x45, 0xe1, 0x98, - 0xe0, 0x45, 0xe2, 0x98, 0xe0, 0x45, 0xe2, 0x98, 0xe0, 0x45, 0xe2, 0x98, - 0xe0, 0x45, 0xe2, 0x98, 0xe0, 0x45, 0xe3, 0x99, 0xe3, 0x45, 0xe3, 0x99, - 0xe2, 0x45, 0xe3, 0x99, 0xe3, 0x45, 0xe3, 0x99, 0xe2, 0x45, 0xe4, 0x99, - 0xe3, 0x45, 0xe4, 0x99, 0xe2, 0x45, 0xe4, 0x99, 0xe3, 0x45, 0xe4, 0x99, - 0xe2, 0x45, 0xe5, 0x99, 0xe3, 0x45, 0xe5, 0x9a, 0xe5, 0x45, 0xe5, 0x9a, - 0xe5, 0x45, 0xe5, 0x9a, 0xe5, 0x45, 0xe6, 0x9a, 0xe5, 0x45, 0xe6, 0x9a, - 0xe5, 0x45, 0xe6, 0x9a, 0xe5, 0x45, 0xe6, 0x9a, 0xe5, 0x45, 0xe7, 0x9a, - 0xe5, 0x45, 0xe7, 0x9a, 0xe5, 0x45, 0xe7, 0x9a, 0xe5, 0x45, 0xe7, 0x9a, - 0xe5, 0x45, 0xe8, 0x9a, 0xe5, 0x45, 0xe8, 0x9b, 0xe7, 0x45, 0xe8, 0x9b, - 0xe7, 0x45, 0xe8, 0x9b, 0xe7, 0x45, 0xe9, 0x9b, 0xe7, 0x45, 0xe9, 0x9b, - 0xe7, 0x45, 0xe9, 0x9b, 0xe7, 0x45, 0xe9, 0x9b, 0xe7, 0x45, 0xea, 0x9b, - 0xe7, 0x45, 0xea, 0x9b, 0xe7, 0x45, 0xea, 0x9c, 0xea, 0x45, 0xea, 0x9c, - 0xea, 0x45, 0xeb, 0x9c, 0xea, 0x45, 0xeb, 0x9c, 0xea, 0x45, 0xeb, 0x9c, - 0xea, 0x45, 0xeb, 0x9c, 0xea, 0x45, 0xec, 0x9c, 0xea, 0x45, 0xec, 0x9c, - 0xea, 0x45, 0xec, 0x9c, 0xea, 0x45, 0xec, 0x9c, 0xea, 0x45, 0xec, 0x9d, - 0xec, 0x45, 0xed, 0x9d, 0xec, 0x45, 0xed, 0x9d, 0xec, 0x45, 0xed, 0x9d, - 0xec, 0x45, 0xed, 0x9d, 0xec, 0x45, 0xee, 0x9d, 0xec, 0x45, 0xee, 0x9d, - 0xec, 0x45, 0xee, 0x9d, 0xec, 0x45, 0xee, 0x9d, 0xec, 0x45, 0xef, 0x9d, - 0xee, 0x45, 0xef, 0x9d, 0xec, 0x45, 0xef, 0x9d, 0xee, 0x45, 0xef, 0x9d, - 0xee, 0x45, 0xf0, 0x9d, 0xee, 0x45, 0xf0, 0x9d, 0xee, 0x45, 0xf0, 0x9d, - 0xee, 0x45, 0xf0, 0x9d, 0xee, 0x45, 0xf1, 0x9d, 0xee, 0x45, 0xf1, 0x9d, - 0xee, 0x45, 0xf1, 0x9d, 0xee, 0x45, 0xf1, 0x9e, 0xf0, 0x45, 0xf2, 0x9e, - 0xf1, 0x45, 0xf2, 0x9e, 0xf0, 0x45, 0xf2, 0x9e, 0xf1, 0x45, 0xf2, 0x9e, - 0xf0, 0x45, 0xf2, 0x9e, 0xf1, 0x45, 0xf3, 0x9e, 0xf0, 0x45, 0xf3, 0x9e, - 0xf1, 0x45, 0xf3, 0x9e, 0xf0, 0x45, 0xf3, 0x9e, 0xf1, 0x45, 0xf4, 0x9f, - 0xf3, 0x45, 0xf4, 0x9f, 0xf2, 0x45, 0xf4, 0x9f, 0xf3, 0x45, 0xf4, 0x9f, - 0xf2, 0x45, 0xf5, 0x9f, 0xf3, 0x45, 0xf5, 0x9f, 0xf2, 0x45, 0xf5, 0x9f, - 0xf3, 0x45, 0xf5, 0x9f, 0xf2, 0x45, 0xf5, 0x9f, 0xf3, 0x45, 0xf6, 0xa0, - 0xf5, 0x45, 0xf6, 0xa0, 0xf5, 0x45, 0xf6, 0xa0, 0xf5, 0x45, 0xf6, 0xa0, - 0xf5, 0x45, 0xf7, 0xa0, 0xf5, 0x45, 0xf7, 0xa0, 0xf5, 0x45, 0xf7, 0xa0, - 0xf5, 0x45, 0xf7, 0xa0, 0xf5, 0x45, 0xf8, 0xa0, 0xf5, 0x45, 0xf8, 0xa1, - 0xf7, 0x45, 0xf8, 0xa1, 0xf7, 0x45, 0xf8, 0xa1, 0xf7, 0x45, 0xf8, 0xa1, - 0xf7, 0x45, 0xf9, 0xa1, 0xf7, 0x45, 0xf9, 0xa1, 0xf7, 0x45, 0xf9, 0xa1, - 0xf7, 0x45, 0xf9, 0xa1, 0xf7, 0x45, 0xfa, 0xa1, 0xf7, 0x45, 0xfa, 0xa1, - 0xf7, 0x45, 0xfa, 0xa1, 0xf9, 0x45, 0xfa, 0xa1, 0xf7, 0x45, 0xfa, 0xa1, - 0xf9, 0x45, 0xfb, 0xa1, 0xf9, 0x45, 0xfb, 0xa1, 0xf9, 0x45, 0xfb, 0xa1, - 0xf9, 0x45, 0xfb, 0xa1, 0xf9, 0x45, 0xfc, 0xa1, 0xf9, 0x45, 0xfc, 0xa1, - 0xf9, 0x45, 0xfc, 0xa2, 0xfb, 0x45, 0xfc, 0xa1, 0xf9, 0x45, 0xfc, 0xa2, - 0xfb, 0x45, 0xfd, 0xa2, 0xfb, 0x45, 0xfd, 0xa2, 0xfb, 0x45, 0xfd, 0xa2, - 0xfb, 0x45, 0xfd, 0xa2, 0xfb, 0x45, 0xfe, 0xa2, 0xfb, 0x45, 0xfe, 0xa2, - 0xfb, 0x45, 0xfe, 0xa2, 0xfb, 0x45, 0xfe, 0xa2, 0xfb, 0x45, 0xfe, 0xa2, - 0xfb, 0x45, 0xff, 0xa2, 0xfb, 0x45, 0xff, 0xa2, 0xfb, 0x45, 0x03, 0x9b, - 0x98, 0x46, 0x0a, 0x98, 0x98, 0x46, 0x0f, 0x9b, 0x98, 0x46, 0x14, 0x98, - 0x98, 0x46, 0x17, 0x9b, 0x98, 0x46, 0x1b, 0x98, 0x98, 0x46, 0x1e, 0x9b, - 0x98, 0x46, 0x20, 0x98, 0x98, 0x46, 0x23, 0x9b, 0x98, 0x46, 0x25, 0x98, - 0x98, 0x46, 0x27, 0x9b, 0x98, 0x46, 0x29, 0x98, 0x98, 0x46, 0x2b, 0x9b, - 0x98, 0x46, 0x2d, 0x98, 0x98, 0x46, 0x2f, 0x95, 0x99, 0x46, 0x31, 0x98, - 0x98, 0x46, 0x32, 0x95, 0x99, 0x46, 0x34, 0x98, 0x98, 0x46, 0x35, 0x95, - 0x99, 0x46, 0x37, 0x98, 0x98, 0x46, 0x38, 0x95, 0x99, 0x46, 0x3a, 0x98, - 0x98, 0x46, 0x3b, 0x95, 0x99, 0x46, 0x3c, 0x98, 0x98, 0x46, 0x3e, 0x95, - 0x99, 0x46, 0x3f, 0x98, 0x98, 0x46, 0x40, 0x95, 0x99, 0x46, 0x42, 0x98, - 0x98, 0x46, 0x43, 0x95, 0x99, 0x46, 0x44, 0x98, 0x98, 0x46, 0x45, 0x95, - 0x99, 0x46, 0x46, 0x98, 0x98, 0x46, 0x47, 0x95, 0x99, 0x46, 0x48, 0x98, - 0x98, 0x46, 0x49, 0x95, 0x99, 0x46, 0x4a, 0x98, 0x98, 0x46, 0x4b, 0x95, - 0x99, 0x46, 0x4c, 0x98, 0x98, 0x46, 0x4d, 0x95, 0x99, 0x46, 0x4e, 0x98, - 0x98, 0x46, 0x4f, 0x95, 0x99, 0x46, 0x50, 0x98, 0x98, 0x46, 0x51, 0x95, - 0x99, 0x46, 0x52, 0x98, 0x98, 0x46, 0x53, 0x95, 0x99, 0x46, 0x54, 0x98, - 0x98, 0x46, 0x55, 0x95, 0x99, 0x46, 0x56, 0x98, 0x98, 0x46, 0x57, 0x95, - 0x99, 0x46, 0x58, 0x98, 0x98, 0x46, 0x58, 0x95, 0x99, 0x46, 0x59, 0x98, - 0x98, 0x46, 0x5a, 0x95, 0x99, 0x46, 0x5b, 0x98, 0x98, 0x46, 0x5c, 0x95, - 0x99, 0x46, 0x5d, 0x98, 0x98, 0x46, 0x5d, 0x95, 0x99, 0x46, 0x5e, 0x98, - 0x98, 0x46, 0x5f, 0x95, 0x99, 0x46, 0x60, 0x98, 0x98, 0x46, 0x60, 0x95, - 0x99, 0x46, 0x61, 0x98, 0x98, 0x46, 0x62, 0x95, 0x99, 0x46, 0x63, 0x98, - 0x98, 0x46, 0x63, 0x95, 0x99, 0x46, 0x64, 0x98, 0x98, 0x46, 0x65, 0x95, - 0x99, 0x46, 0x66, 0x98, 0x98, 0x46, 0x66, 0x95, 0x99, 0x46, 0x67, 0x98, - 0x98, 0x46, 0x68, 0x95, 0x99, 0x46, 0x68, 0x98, 0x98, 0x46, 0x69, 0x95, - 0x99, 0x46, 0x6a, 0x98, 0x98, 0x46, 0x6a, 0x95, 0x99, 0x46, 0x6b, 0x98, - 0x98, 0x46, 0x6c, 0x95, 0x99, 0x46, 0x6c, 0x98, 0x98, 0x46, 0x6d, 0x95, - 0x99, 0x46, 0x6e, 0x93, 0x99, 0x46, 0x6e, 0x95, 0x99, 0x46, 0x6f, 0x93, - 0x99, 0x46, 0x70, 0x95, 0x99, 0x46, 0x70, 0x93, 0x99, 0x46, 0x71, 0x95, - 0x99, 0x46, 0x72, 0x93, 0x99, 0x46, 0x72, 0x95, 0x99, 0x46, 0x73, 0x93, - 0x99, 0x46, 0x73, 0x95, 0x99, 0x46, 0x74, 0x93, 0x99, 0x46, 0x75, 0x95, - 0x99, 0x46, 0x75, 0x93, 0x99, 0x46, 0x76, 0x95, 0x99, 0x46, 0x76, 0x93, - 0x99, 0x46, 0x77, 0x95, 0x99, 0x46, 0x78, 0x93, 0x99, 0x46, 0x78, 0x95, - 0x99, 0x46, 0x79, 0x93, 0x99, 0x46, 0x79, 0x95, 0x99, 0x46, 0x7a, 0x93, - 0x99, 0x46, 0x7a, 0x95, 0x99, 0x46, 0x7b, 0x93, 0x99, 0x46, 0x7c, 0x95, - 0x99, 0x46, 0x7c, 0x93, 0x99, 0x46, 0x7d, 0x95, 0x99, 0x46, 0x7d, 0x93, - 0x99, 0x46, 0x7e, 0x95, 0x99, 0x46, 0x7e, 0x93, 0x99, 0x46, 0x7f, 0x95, - 0x99, 0x46, 0x7f, 0x93, 0x99, 0x46, 0x80, 0x95, 0x99, 0x46, 0x81, 0x93, - 0x99, 0x46, 0x81, 0x95, 0x99, 0x46, 0x82, 0x93, 0x99, 0x46, 0x82, 0x95, - 0x99, 0x46, 0x83, 0x93, 0x99, 0x46, 0x83, 0x90, 0x9a, 0x46, 0x84, 0x93, - 0x99, 0x46, 0x84, 0x90, 0x9a, 0x46, 0x85, 0x93, 0x99, 0x46, 0x85, 0x90, - 0x9a, 0x46, 0x86, 0x93, 0x99, 0x46, 0x86, 0x90, 0x9a, 0x46, 0x87, 0x93, - 0x99, 0x46, 0x87, 0x90, 0x9a, 0x46, 0x88, 0x93, 0x99, 0x46, 0x88, 0x90, - 0x9a, 0x46, 0x89, 0x93, 0x99, 0x46, 0x89, 0x90, 0x9a, 0x46, 0x8a, 0x93, - 0x99, 0x46, 0x8a, 0x90, 0x9a, 0x46, 0x8b, 0x93, 0x99, 0x46, 0x8b, 0x90, - 0x9a, 0x46, 0x8c, 0x93, 0x99, 0x46, 0x8c, 0x90, 0x9a, 0x46, 0x8d, 0x93, - 0x99, 0x46, 0x8d, 0x90, 0x9a, 0x46, 0x8e, 0x93, 0x99, 0x46, 0x8e, 0x90, - 0x9a, 0x46, 0x8e, 0x93, 0x99, 0x46, 0x8f, 0x90, 0x9a, 0x46, 0x8f, 0x93, - 0x99, 0x46, 0x90, 0x90, 0x9a, 0x46, 0x90, 0x93, 0x99, 0x46, 0x91, 0x90, - 0x9a, 0x46, 0x91, 0x93, 0x99, 0x46, 0x92, 0x90, 0x9a, 0x46, 0x92, 0x93, - 0x99, 0x46, 0x93, 0x90, 0x9a, 0x46, 0x93, 0x8f, 0x9a, 0x46, 0x94, 0x90, - 0x9a, 0x46, 0x94, 0x8f, 0x9a, 0x46, 0x94, 0x90, 0x9a, 0x46, 0x95, 0x8f, - 0x9a, 0x46, 0x95, 0x90, 0x9a, 0x46, 0x96, 0x8f, 0x9a, 0x46, 0x96, 0x90, - 0x9a, 0x46, 0x97, 0x8f, 0x9a, 0x46, 0x97, 0x90, 0x9a, 0x46, 0x98, 0x8f, - 0x9a, 0x46, 0x98, 0x90, 0x9a, 0x46, 0x98, 0x8f, 0x9a, 0x46, 0x99, 0x90, - 0x9a, 0x46, 0x99, 0x8f, 0x9a, 0x46, 0x9a, 0x90, 0x9a, 0x46, 0x99, 0x8f, - 0x9a, 0x46, 0x9a, 0x8f, 0x9a, 0x46, 0x99, 0x8f, 0x9b, 0x46, 0x9a, 0x8f, - 0x9b, 0x46, 0x99, 0x8f, 0x9c, 0x46, 0x9e, 0x8f, 0x9c, 0x46, 0x9e, 0x8f, - 0x9d, 0x46, 0x9e, 0x8f, 0x9d, 0x46, 0x9e, 0x8f, 0x9d, 0x46, 0x9e, 0x8e, - 0x9e, 0x46, 0x9e, 0x8f, 0x9d, 0x46, 0x9f, 0x8e, 0x9e, 0x46, 0x9f, 0x8d, - 0x9f, 0x46, 0x9f, 0x8d, 0x9f, 0x46, 0xa0, 0x8d, 0xa0, 0x46, 0xa0, 0x8d, - 0xa0, 0x46, 0xa1, 0x8d, 0xa1, 0x46, 0xa1, 0x8e, 0xa2, 0x46, 0xa1, 0x8e, - 0xa2, 0x46, 0xa2, 0x8e, 0xa2, 0x46, 0xa2, 0x8e, 0xa2, 0x46, 0xa3, 0x8e, - 0xa3, 0x46, 0xa3, 0x8e, 0xa3, 0x46, 0xa3, 0x8e, 0xa3, 0x46, 0xa4, 0x8e, - 0xa4, 0x46, 0xa4, 0x8e, 0xa4, 0x46, 0xa5, 0x8e, 0xa5, 0x46, 0xa5, 0x8e, - 0xa5, 0x46, 0xa5, 0x8e, 0xa5, 0x46, 0xa6, 0x8e, 0xa6, 0x46, 0xa6, 0x8f, - 0xa6, 0x47, 0xa6, 0x8f, 0xa6, 0x47, 0xa7, 0x8f, 0xa7, 0x47, 0xa7, 0x8f, - 0xa7, 0x47, 0xa8, 0x8f, 0xa8, 0x47, 0xa8, 0x8f, 0xa8, 0x47, 0xa8, 0x8f, - 0xa8, 0x47, 0xa9, 0x8f, 0xa9, 0x47, 0xa9, 0x8f, 0xa9, 0x47, 0xaa, 0x8f, - 0xaa, 0x47, 0xaa, 0x8f, 0xaa, 0x47, 0xaa, 0x8f, 0xaa, 0x47, 0xaa, 0x8f, - 0xab, 0x47, 0xab, 0x8f, 0xab, 0x48, 0xab, 0x8f, 0xab, 0x48, 0xac, 0x8f, - 0xac, 0x48, 0xac, 0x8f, 0xac, 0x48, 0xac, 0x8f, 0xac, 0x48, 0xad, 0x8f, - 0xad, 0x48, 0xad, 0x8f, 0xad, 0x48, 0xae, 0x8f, 0xae, 0x48, 0xae, 0x8f, - 0xae, 0x48, 0xae, 0x8f, 0xae, 0x48, 0xae, 0x8f, 0xaf, 0x48, 0xae, 0x8f, - 0xaf, 0x48, 0xae, 0x8f, 0xaf, 0x48, 0xb0, 0x8f, 0xb0, 0x49, 0xb0, 0x8f, - 0xb0, 0x49, 0xb0, 0x8f, 0xb0, 0x49, 0xb1, 0x8f, 0xb1, 0x49, 0xb1, 0x8f, - 0xb1, 0x49, 0xb2, 0x8f, 0xb2, 0x49, 0xb2, 0x8f, 0xb2, 0x49, 0xb2, 0x8f, - 0xb2, 0x49, 0xb2, 0x8f, 0xb3, 0x49, 0xb2, 0x8f, 0xb3, 0x49, 0xb2, 0x8f, - 0xb3, 0x49, 0xb4, 0x8f, 0xb4, 0x4a, 0xb4, 0x8f, 0xb4, 0x4a, 0xb4, 0x8f, - 0xb4, 0x4a, 0xb5, 0x8f, 0xb5, 0x4a, 0xb5, 0x8f, 0xb5, 0x4a, 0xb5, 0x8f, - 0xb5, 0x4a, 0xb6, 0x8f, 0xb6, 0x4a, 0xb5, 0x8f, 0xb6, 0x4a, 0xb6, 0x8f, - 0xb6, 0x4a, 0xb5, 0x8f, 0xb7, 0x4a, 0xb6, 0x8f, 0xb7, 0x4a, 0xb9, 0x8f, - 0xb7, 0x42, 0xb9, 0x8f, 0xb8, 0x42, 0xb9, 0x8f, 0xb8, 0x42, 0xb9, 0x8f, - 0xb8, 0x42, 0xb9, 0x8f, 0xb9, 0x42, 0xb9, 0x8f, 0xb9, 0x42, 0xb9, 0x8f, - 0xb9, 0x42, 0xba, 0x8f, 0xba, 0x42, 0xba, 0x8f, 0xba, 0x42, 0xba, 0x8f, - 0xba, 0x42, 0xbc, 0x8f, 0xbb, 0x43, 0xbc, 0x8f, 0xbb, 0x43, 0xbc, 0x8f, - 0xbb, 0x43, 0xbc, 0x8f, 0xbc, 0x43, 0xbc, 0x8f, 0xbc, 0x43, 0xbc, 0x8f, - 0xbc, 0x43, 0xbd, 0x8f, 0xbd, 0x43, 0xbd, 0x8f, 0xbd, 0x43, 0xbd, 0x8f, - 0xbd, 0x43, 0xbf, 0x8f, 0xbe, 0x44, 0xbf, 0x8f, 0xbe, 0x44, 0xbf, 0x8f, - 0xbe, 0x44, 0xbf, 0x8f, 0xbf, 0x44, 0xbf, 0x8f, 0xbf, 0x44, 0xbf, 0x8f, - 0xbf, 0x44, 0xc0, 0x8f, 0xc0, 0x44, 0xc0, 0x8f, 0xc0, 0x44, 0xc0, 0x8f, - 0xc0, 0x44, 0xc1, 0x8f, 0xc1, 0x44, 0xc1, 0x8f, 0xc1, 0x44, 0xc2, 0x8f, - 0xc1, 0x45, 0xc2, 0x8f, 0xc1, 0x45, 0xc2, 0x8f, 0xc2, 0x45, 0xc2, 0x8f, - 0xc2, 0x45, 0xc2, 0x8f, 0xc2, 0x45, 0xc3, 0x8f, 0xc3, 0x45, 0xc3, 0x8f, - 0xc3, 0x45, 0xc3, 0x8f, 0xc3, 0x45, 0xc4, 0x8f, 0xc4, 0x45, 0xc4, 0x8f, - 0xc4, 0x45, 0xc4, 0x8f, 0xc4, 0x45, 0xc5, 0x8f, 0xc5, 0x45, 0xc5, 0x90, - 0xc5, 0x46, 0xc5, 0x90, 0xc5, 0x46, 0xc6, 0x90, 0xc6, 0x46, 0xc6, 0x90, - 0xc6, 0x46, 0xc6, 0x90, 0xc6, 0x46, 0xc6, 0x90, 0xc6, 0x46, 0xc7, 0x90, - 0xc7, 0x46, 0xc7, 0x90, 0xc7, 0x46, 0xc7, 0x90, 0xc7, 0x46, 0xc8, 0x90, - 0xc7, 0x46, 0xc8, 0x90, 0xc7, 0x46, 0xc8, 0x91, 0xc8, 0x46, 0xc9, 0x91, - 0xc9, 0x46, 0xc9, 0x91, 0xc9, 0x46, 0xc9, 0x91, 0xc9, 0x46, 0xc9, 0x91, - 0xc9, 0x46, 0xca, 0x91, 0xca, 0x46, 0xca, 0x91, 0xca, 0x46, 0xca, 0x91, - 0xca, 0x46, 0xcb, 0x91, 0xca, 0x46, 0xcb, 0x91, 0xca, 0x46, 0xcb, 0x91, - 0xca, 0x46, 0xcc, 0x92, 0xcc, 0x46, 0xcc, 0x92, 0xcc, 0x46, 0xcc, 0x92, - 0xcc, 0x46, 0xcc, 0x92, 0xcc, 0x46, 0xcd, 0x92, 0xcd, 0x46, 0xcd, 0x92, - 0xcd, 0x46, 0xcd, 0x92, 0xcd, 0x46, 0xce, 0x92, 0xcd, 0x46, 0xce, 0x92, - 0xcd, 0x46, 0xce, 0x92, 0xcd, 0x46, 0xce, 0x93, 0xce, 0x46, 0xcf, 0x93, - 0xcf, 0x46, 0xcf, 0x93, 0xcf, 0x46, 0xcf, 0x93, 0xcf, 0x46, 0xd0, 0x93, - 0xd0, 0x46, 0xd0, 0x93, 0xcf, 0x46, 0xd0, 0x93, 0xd0, 0x46, 0xd0, 0x93, - 0xcf, 0x46, 0xd1, 0x93, 0xd0, 0x46, 0xd1, 0x94, 0xd1, 0x46, 0xd1, 0x94, - 0xd1, 0x46, 0xd2, 0x94, 0xd2, 0x46, 0xd2, 0x94, 0xd2, 0x46, 0xd2, 0x94, - 0xd2, 0x46, 0xd2, 0x94, 0xd2, 0x46, 0xd3, 0x94, 0xd2, 0x46, 0xd3, 0x94, - 0xd2, 0x46, 0xd3, 0x94, 0xd2, 0x46, 0xd4, 0x94, 0xd2, 0x46, 0xd4, 0x94, - 0xd2, 0x46, 0xd4, 0x94, 0xd2, 0x46, 0xd4, 0x94, 0xd4, 0x46, 0xd5, 0x94, - 0xd5, 0x46, 0xd5, 0x94, 0xd5, 0x46, 0xd5, 0x94, 0xd5, 0x46, 0xd6, 0x94, - 0xd5, 0x46, 0xd6, 0x94, 0xd5, 0x46, 0xd6, 0x94, 0xd5, 0x46, 0xd6, 0x94, - 0xd5, 0x46, 0xd7, 0x94, 0xd5, 0x46, 0xd7, 0x95, 0xd7, 0x46, 0xd7, 0x95, - 0xd7, 0x46, 0xd7, 0x95, 0xd7, 0x46, 0xd8, 0x95, 0xd7, 0x46, 0xd8, 0x95, - 0xd7, 0x46, 0xd8, 0x95, 0xd7, 0x46, 0xd9, 0x95, 0xd7, 0x46, 0xd9, 0x95, - 0xd7, 0x46, 0xd9, 0x95, 0xd7, 0x46, 0xd9, 0x96, 0xd9, 0x46, 0xda, 0x96, - 0xda, 0x46, 0xda, 0x96, 0xda, 0x46, 0xda, 0x96, 0xda, 0x46, 0xda, 0x96, - 0xda, 0x46, 0xdb, 0x96, 0xda, 0x46, 0xdb, 0x96, 0xda, 0x46, 0xdb, 0x96, - 0xda, 0x46, 0xdb, 0x96, 0xda, 0x46, 0xdc, 0x96, 0xda, 0x46, 0xdc, 0x96, - 0xda, 0x46, 0xdc, 0x96, 0xda, 0x46, 0xdd, 0x97, 0xdd, 0x46, 0xdd, 0x97, - 0xdc, 0x46, 0xdd, 0x97, 0xdd, 0x46, 0xdd, 0x97, 0xdc, 0x46, 0xde, 0x97, - 0xdd, 0x46, 0xde, 0x97, 0xdc, 0x46, 0xde, 0x97, 0xdd, 0x46, 0xde, 0x97, - 0xdc, 0x46, 0xdf, 0x97, 0xdd, 0x46, 0xdf, 0x98, 0xdf, 0x46, 0xdf, 0x98, - 0xdf, 0x46, 0xdf, 0x98, 0xdf, 0x46, 0xe0, 0x98, 0xdf, 0x46, 0xe0, 0x98, - 0xdf, 0x46, 0xe0, 0x98, 0xdf, 0x46, 0xe1, 0x98, 0xdf, 0x46, 0xe1, 0x98, - 0xdf, 0x46, 0xe1, 0x98, 0xdf, 0x46, 0xe1, 0x99, 0xe1, 0x46, 0xe2, 0x99, - 0xe2, 0x46, 0xe2, 0x99, 0xe1, 0x46, 0xe2, 0x99, 0xe2, 0x46, 0xe2, 0x99, - 0xe1, 0x46, 0xe3, 0x99, 0xe2, 0x46, 0xe3, 0x99, 0xe1, 0x46, 0xe3, 0x99, - 0xe2, 0x46, 0xe3, 0x99, 0xe1, 0x46, 0xe4, 0x99, 0xe2, 0x46, 0xe4, 0x9a, - 0xe4, 0x46, 0xe4, 0x9a, 0xe4, 0x46, 0xe4, 0x9a, 0xe4, 0x46, 0xe5, 0x9a, - 0xe4, 0x46, 0xe5, 0x9a, 0xe4, 0x46, 0xe5, 0x9a, 0xe4, 0x46, 0xe5, 0x9a, - 0xe4, 0x46, 0xe6, 0x9a, 0xe4, 0x46, 0xe6, 0x9a, 0xe4, 0x46, 0xe6, 0x9a, - 0xe6, 0x46, 0xe6, 0x9a, 0xe4, 0x46, 0xe7, 0x9a, 0xe6, 0x46, 0xe7, 0x9a, - 0xe6, 0x46, 0xe7, 0x9a, 0xe6, 0x46, 0xe7, 0x9a, 0xe6, 0x46, 0xe8, 0x9a, - 0xe6, 0x46, 0xe8, 0x9a, 0xe6, 0x46, 0xe8, 0x9a, 0xe6, 0x46, 0xe8, 0x9a, - 0xe6, 0x46, 0xe9, 0x9a, 0xe6, 0x46, 0xe9, 0x9b, 0xe8, 0x46, 0xe9, 0x9b, - 0xe9, 0x46, 0xe9, 0x9b, 0xe8, 0x46, 0xea, 0x9b, 0xe9, 0x46, 0xea, 0x9b, - 0xe8, 0x46, 0xea, 0x9b, 0xe9, 0x46, 0xea, 0x9b, 0xe8, 0x46, 0xeb, 0x9b, - 0xe9, 0x46, 0xeb, 0x9b, 0xe8, 0x46, 0xeb, 0x9b, 0xe9, 0x46, 0xeb, 0x9c, - 0xeb, 0x46, 0xec, 0x9c, 0xeb, 0x46, 0xec, 0x9c, 0xeb, 0x46, 0xec, 0x9c, - 0xeb, 0x46, 0xec, 0x9c, 0xeb, 0x46, 0xec, 0x9c, 0xeb, 0x46, 0xed, 0x9c, - 0xeb, 0x46, 0xed, 0x9c, 0xeb, 0x46, 0xed, 0x9c, 0xeb, 0x46, 0xed, 0x9d, - 0xed, 0x46, 0xee, 0x9d, 0xed, 0x46, 0xee, 0x9d, 0xed, 0x46, 0xee, 0x9d, - 0xed, 0x46, 0xee, 0x9d, 0xed, 0x46, 0xef, 0x9d, 0xed, 0x46, 0xef, 0x9d, - 0xed, 0x46, 0xef, 0x9d, 0xed, 0x46, 0xef, 0x9d, 0xed, 0x46, 0xf0, 0x9d, - 0xed, 0x46, 0xf0, 0x9e, 0xef, 0x46, 0xf0, 0x9d, 0xed, 0x46, 0xf0, 0x9e, - 0xef, 0x46, 0xf1, 0x9e, 0xef, 0x46, 0xf1, 0x9e, 0xef, 0x46, 0xf1, 0x9e, - 0xef, 0x46, 0xf1, 0x9e, 0xef, 0x46, 0xf2, 0x9e, 0xef, 0x46, 0xf2, 0x9e, - 0xef, 0x46, 0xf2, 0x9e, 0xef, 0x46, 0xf2, 0x9e, 0xef, 0x46, 0xf2, 0x9f, - 0xf2, 0x46, 0xf3, 0x9f, 0xf1, 0x46, 0xf3, 0x9f, 0xf2, 0x46, 0xf3, 0x9f, - 0xf1, 0x46, 0xf3, 0x9f, 0xf2, 0x46, 0xf4, 0x9f, 0xf1, 0x46, 0xf4, 0x9f, - 0xf2, 0x46, 0xf4, 0x9f, 0xf1, 0x46, 0xf4, 0x9f, 0xf2, 0x46, 0xf5, 0x9f, - 0xf4, 0x46, 0xf5, 0x9f, 0xf4, 0x46, 0xf5, 0x9f, 0xf4, 0x46, 0xf5, 0x9f, - 0xf4, 0x46, 0xf5, 0x9f, 0xf4, 0x46, 0xf6, 0x9f, 0xf4, 0x46, 0xf6, 0x9f, - 0xf4, 0x46, 0xf6, 0x9f, 0xf4, 0x46, 0xf6, 0x9f, 0xf4, 0x46, 0xf7, 0x9f, - 0xf4, 0x46, 0xf7, 0xa0, 0xf6, 0x46, 0xf7, 0xa0, 0xf6, 0x46, 0xf7, 0xa0, - 0xf6, 0x46, 0xf8, 0xa0, 0xf6, 0x46, 0xf8, 0xa0, 0xf6, 0x46, 0xf8, 0xa0, - 0xf6, 0x46, 0xf8, 0xa0, 0xf6, 0x46, 0xf8, 0xa0, 0xf6, 0x46, 0xf9, 0xa0, - 0xf6, 0x46, 0xf9, 0xa1, 0xf8, 0x46, 0xf9, 0xa0, 0xf6, 0x46, 0xf9, 0xa1, - 0xf8, 0x46, 0xfa, 0xa1, 0xf8, 0x46, 0xfa, 0xa1, 0xf8, 0x46, 0xfa, 0xa1, - 0xf8, 0x46, 0xfa, 0xa1, 0xf8, 0x46, 0xfa, 0xa1, 0xf8, 0x46, 0xfb, 0xa1, - 0xf8, 0x46, 0xfb, 0xa2, 0xfa, 0x46, 0xfb, 0xa2, 0xfa, 0x46, 0xfb, 0xa2, - 0xfa, 0x46, 0xfc, 0xa2, 0xfa, 0x46, 0xfc, 0xa2, 0xfa, 0x46, 0xfc, 0xa2, - 0xfa, 0x46, 0xfc, 0xa2, 0xfa, 0x46, 0xfc, 0xa2, 0xfa, 0x46, 0xfd, 0xa2, - 0xfa, 0x46, 0xfd, 0xa2, 0xfa, 0x46, 0xfd, 0xa2, 0xfa, 0x46, 0xfd, 0xa2, - 0xfa, 0x46, 0xfe, 0xa2, 0xfa, 0x46, 0xfe, 0xa2, 0xfa, 0x46, 0xfe, 0xa3, - 0xfb, 0x46, 0xfe, 0xa3, 0xfc, 0x46, 0xfe, 0xa3, 0xfb, 0x46, 0xff, 0xa3, - 0xfc, 0x46, 0xff, 0xa3, 0xfb, 0x46, 0x03, 0x9b, 0x98, 0x46, 0x0a, 0x9b, - 0x98, 0x46, 0x0f, 0x9b, 0x98, 0x46, 0x14, 0x9b, 0x98, 0x46, 0x17, 0x9b, - 0x98, 0x46, 0x1b, 0x9b, 0x98, 0x46, 0x1e, 0x9b, 0x98, 0x46, 0x20, 0x9b, - 0x98, 0x46, 0x23, 0x9b, 0x98, 0x46, 0x25, 0x9b, 0x98, 0x46, 0x27, 0x9b, - 0x98, 0x46, 0x29, 0x9b, 0x98, 0x46, 0x2b, 0x9b, 0x98, 0x46, 0x2d, 0x9b, - 0x98, 0x46, 0x2f, 0x9b, 0x98, 0x46, 0x31, 0x9b, 0x98, 0x46, 0x32, 0x9b, - 0x98, 0x46, 0x34, 0x9b, 0x98, 0x46, 0x35, 0x9b, 0x98, 0x46, 0x37, 0x9b, - 0x98, 0x46, 0x38, 0x9b, 0x98, 0x46, 0x3a, 0x9b, 0x98, 0x46, 0x3b, 0x9b, - 0x98, 0x46, 0x3c, 0x98, 0x98, 0x46, 0x3e, 0x9b, 0x98, 0x46, 0x3f, 0x98, - 0x98, 0x46, 0x40, 0x9b, 0x98, 0x46, 0x42, 0x98, 0x98, 0x46, 0x43, 0x9b, - 0x98, 0x46, 0x44, 0x98, 0x98, 0x46, 0x45, 0x9b, 0x98, 0x46, 0x46, 0x98, - 0x98, 0x46, 0x47, 0x9b, 0x98, 0x46, 0x48, 0x98, 0x98, 0x46, 0x49, 0x9b, - 0x98, 0x46, 0x4a, 0x98, 0x98, 0x46, 0x4b, 0x9b, 0x98, 0x46, 0x4c, 0x98, - 0x98, 0x46, 0x4d, 0x9b, 0x98, 0x46, 0x4e, 0x98, 0x98, 0x46, 0x4f, 0x9b, - 0x98, 0x46, 0x50, 0x98, 0x98, 0x46, 0x51, 0x96, 0x99, 0x46, 0x52, 0x98, - 0x98, 0x46, 0x53, 0x96, 0x99, 0x46, 0x54, 0x98, 0x98, 0x46, 0x55, 0x96, - 0x99, 0x46, 0x56, 0x98, 0x98, 0x46, 0x57, 0x96, 0x99, 0x46, 0x58, 0x98, - 0x98, 0x46, 0x58, 0x96, 0x99, 0x46, 0x59, 0x98, 0x98, 0x46, 0x5a, 0x96, - 0x99, 0x46, 0x5b, 0x98, 0x98, 0x46, 0x5c, 0x96, 0x99, 0x46, 0x5d, 0x98, - 0x98, 0x46, 0x5d, 0x96, 0x99, 0x46, 0x5e, 0x98, 0x98, 0x46, 0x5f, 0x96, - 0x99, 0x46, 0x60, 0x98, 0x98, 0x46, 0x60, 0x96, 0x99, 0x46, 0x61, 0x98, - 0x98, 0x46, 0x62, 0x96, 0x99, 0x46, 0x63, 0x98, 0x98, 0x46, 0x63, 0x96, - 0x99, 0x46, 0x64, 0x98, 0x98, 0x46, 0x65, 0x96, 0x99, 0x46, 0x66, 0x98, - 0x98, 0x46, 0x66, 0x96, 0x99, 0x46, 0x67, 0x98, 0x98, 0x46, 0x68, 0x96, - 0x99, 0x46, 0x68, 0x92, 0x99, 0x46, 0x69, 0x96, 0x99, 0x46, 0x6a, 0x92, - 0x99, 0x46, 0x6a, 0x96, 0x99, 0x46, 0x6b, 0x92, 0x99, 0x46, 0x6c, 0x96, - 0x99, 0x46, 0x6c, 0x92, 0x99, 0x46, 0x6d, 0x96, 0x99, 0x46, 0x6e, 0x92, - 0x99, 0x46, 0x6e, 0x96, 0x99, 0x46, 0x6f, 0x92, 0x99, 0x46, 0x70, 0x96, - 0x99, 0x46, 0x70, 0x92, 0x99, 0x46, 0x71, 0x96, 0x99, 0x46, 0x72, 0x92, - 0x99, 0x46, 0x72, 0x96, 0x99, 0x46, 0x73, 0x92, 0x99, 0x46, 0x73, 0x96, - 0x99, 0x46, 0x74, 0x92, 0x99, 0x46, 0x75, 0x96, 0x99, 0x46, 0x75, 0x92, - 0x99, 0x46, 0x76, 0x96, 0x99, 0x46, 0x76, 0x92, 0x99, 0x46, 0x77, 0x96, - 0x99, 0x46, 0x78, 0x92, 0x99, 0x46, 0x78, 0x96, 0x99, 0x46, 0x79, 0x92, - 0x99, 0x46, 0x79, 0x96, 0x99, 0x46, 0x7a, 0x92, 0x99, 0x46, 0x7a, 0x96, - 0x99, 0x46, 0x7b, 0x92, 0x99, 0x46, 0x7c, 0x96, 0x99, 0x46, 0x7c, 0x92, - 0x99, 0x46, 0x7d, 0x96, 0x99, 0x46, 0x7d, 0x92, 0x99, 0x46, 0x7e, 0x96, - 0x99, 0x46, 0x7e, 0x92, 0x99, 0x46, 0x7f, 0x96, 0x99, 0x46, 0x7f, 0x92, - 0x99, 0x46, 0x80, 0x96, 0x99, 0x46, 0x81, 0x92, 0x99, 0x46, 0x81, 0x96, - 0x99, 0x46, 0x82, 0x92, 0x99, 0x46, 0x82, 0x96, 0x99, 0x46, 0x83, 0x92, - 0x99, 0x46, 0x83, 0x8f, 0x9a, 0x46, 0x84, 0x92, 0x99, 0x46, 0x84, 0x8f, - 0x9a, 0x46, 0x85, 0x92, 0x99, 0x46, 0x85, 0x8f, 0x9a, 0x46, 0x86, 0x92, - 0x99, 0x46, 0x86, 0x8f, 0x9a, 0x46, 0x87, 0x92, 0x99, 0x46, 0x87, 0x8f, - 0x9a, 0x46, 0x88, 0x92, 0x99, 0x46, 0x88, 0x8f, 0x9a, 0x46, 0x89, 0x92, - 0x99, 0x46, 0x89, 0x8f, 0x9a, 0x46, 0x8a, 0x92, 0x99, 0x46, 0x8a, 0x8f, - 0x9a, 0x46, 0x8b, 0x92, 0x99, 0x46, 0x8b, 0x8f, 0x9a, 0x46, 0x8c, 0x92, - 0x99, 0x46, 0x8c, 0x8f, 0x9a, 0x46, 0x8d, 0x92, 0x99, 0x46, 0x8d, 0x8f, - 0x9a, 0x46, 0x8e, 0x92, 0x99, 0x46, 0x8e, 0x8f, 0x9a, 0x46, 0x8e, 0x92, - 0x99, 0x46, 0x8f, 0x8f, 0x9a, 0x46, 0x8f, 0x92, 0x99, 0x46, 0x90, 0x8f, - 0x9a, 0x46, 0x90, 0x92, 0x99, 0x46, 0x91, 0x8f, 0x9a, 0x46, 0x91, 0x92, - 0x99, 0x46, 0x92, 0x8f, 0x9a, 0x46, 0x92, 0x92, 0x99, 0x46, 0x93, 0x8f, - 0x9a, 0x46, 0x93, 0x92, 0x99, 0x46, 0x94, 0x8f, 0x9a, 0x46, 0x94, 0x92, - 0x99, 0x46, 0x94, 0x8f, 0x9a, 0x46, 0x95, 0x92, 0x99, 0x46, 0x95, 0x8f, - 0x9a, 0x46, 0x96, 0x92, 0x99, 0x46, 0x96, 0x8f, 0x9a, 0x46, 0x97, 0x8f, - 0x9a, 0x46, 0x97, 0x8f, 0x9a, 0x46, 0x98, 0x8f, 0x9a, 0x46, 0x98, 0x8f, - 0x9a, 0x46, 0x98, 0x8f, 0x9a, 0x46, 0x99, 0x8f, 0x9a, 0x46, 0x99, 0x8f, - 0x9a, 0x46, 0x9a, 0x8f, 0x9a, 0x45, 0x99, 0x8f, 0x9a, 0x46, 0x9a, 0x8f, - 0x9a, 0x45, 0x99, 0x8f, 0x9b, 0x46, 0x9a, 0x8f, 0x9b, 0x45, 0x9d, 0x8f, - 0x9c, 0x48, 0x9e, 0x8f, 0x9c, 0x46, 0x9e, 0x8f, 0x9d, 0x46, 0x9e, 0x8f, - 0x9d, 0x46, 0x9e, 0x8f, 0x9d, 0x46, 0x9e, 0x8f, 0x9d, 0x46, 0x9e, 0x8f, - 0x9d, 0x46, 0x9f, 0x8f, 0x9d, 0x46, 0x9f, 0x8f, 0x9d, 0x46, 0x9f, 0x8e, - 0x9f, 0x46, 0xa0, 0x8e, 0xa0, 0x46, 0xa0, 0x8e, 0xa0, 0x46, 0xa1, 0x8e, - 0xa1, 0x46, 0xa1, 0x8e, 0xa1, 0x46, 0xa1, 0x8e, 0xa1, 0x46, 0xa2, 0x8e, - 0xa2, 0x46, 0xa2, 0x8e, 0xa2, 0x46, 0xa3, 0x8e, 0xa3, 0x46, 0xa3, 0x8e, - 0xa4, 0x46, 0xa3, 0x8e, 0xa4, 0x46, 0xa4, 0x8e, 0xa4, 0x46, 0xa4, 0x8e, - 0xa4, 0x46, 0xa5, 0x8e, 0xa5, 0x46, 0xa5, 0x8e, 0xa5, 0x46, 0xa5, 0x8e, - 0xa5, 0x46, 0xa6, 0x8e, 0xa6, 0x46, 0xa6, 0x8e, 0xa6, 0x46, 0xa6, 0x8e, - 0xa6, 0x46, 0xa7, 0x8e, 0xa7, 0x46, 0xa7, 0x8e, 0xa7, 0x46, 0xa8, 0x8e, - 0xa8, 0x46, 0xa8, 0x8f, 0xa8, 0x47, 0xa8, 0x8f, 0xa8, 0x47, 0xa9, 0x8f, - 0xa9, 0x47, 0xa9, 0x8f, 0xa9, 0x47, 0xaa, 0x8f, 0xaa, 0x47, 0xaa, 0x8f, - 0xaa, 0x47, 0xaa, 0x8f, 0xaa, 0x47, 0xab, 0x8f, 0xab, 0x47, 0xab, 0x8f, - 0xab, 0x47, 0xab, 0x8f, 0xab, 0x47, 0xac, 0x8f, 0xac, 0x47, 0xac, 0x8f, - 0xac, 0x47, 0xac, 0x8f, 0xac, 0x47, 0xac, 0x8f, 0xad, 0x47, 0xad, 0x8f, - 0xad, 0x48, 0xae, 0x8f, 0xae, 0x48, 0xae, 0x8f, 0xae, 0x48, 0xae, 0x8f, - 0xae, 0x48, 0xaf, 0x8f, 0xaf, 0x48, 0xaf, 0x8f, 0xaf, 0x48, 0xaf, 0x8f, - 0xaf, 0x48, 0xb0, 0x8f, 0xb0, 0x48, 0xb0, 0x8f, 0xb0, 0x48, 0xb0, 0x8f, - 0xb0, 0x48, 0xb0, 0x8f, 0xb1, 0x48, 0xb0, 0x8f, 0xb1, 0x48, 0xb0, 0x8f, - 0xb2, 0x48, 0xb2, 0x8f, 0xb2, 0x49, 0xb2, 0x8f, 0xb2, 0x49, 0xb3, 0x8f, - 0xb3, 0x49, 0xb3, 0x8f, 0xb3, 0x49, 0xb3, 0x8f, 0xb3, 0x49, 0xb4, 0x8f, - 0xb4, 0x49, 0xb4, 0x8f, 0xb4, 0x49, 0xb4, 0x8f, 0xb4, 0x49, 0xb4, 0x8f, - 0xb5, 0x49, 0xb4, 0x8f, 0xb5, 0x49, 0xb4, 0x8f, 0xb5, 0x49, 0xb6, 0x8f, - 0xb6, 0x4a, 0xb6, 0x8f, 0xb6, 0x4a, 0xb6, 0x8f, 0xb6, 0x4a, 0xb7, 0x8f, - 0xb7, 0x4a, 0xb7, 0x8f, 0xb7, 0x4a, 0xb7, 0x8f, 0xb7, 0x4a, 0xb8, 0x8f, - 0xb8, 0x4a, 0xb7, 0x8f, 0xb8, 0x4a, 0xb8, 0x8f, 0xb8, 0x4a, 0xb7, 0x8f, - 0xb9, 0x4a, 0xb8, 0x8f, 0xb9, 0x4a, 0xbb, 0x8f, 0xb9, 0x42, 0xba, 0x8f, - 0xba, 0x42, 0xbb, 0x8f, 0xba, 0x42, 0xba, 0x8f, 0xba, 0x42, 0xbb, 0x8f, - 0xbb, 0x42, 0xbb, 0x8f, 0xbb, 0x42, 0xbb, 0x8f, 0xbb, 0x42, 0xbc, 0x8f, - 0xbc, 0x42, 0xbd, 0x8f, 0xbc, 0x43, 0xbe, 0x8f, 0xbc, 0x43, 0xbd, 0x8f, - 0xbd, 0x43, 0xbe, 0x8f, 0xbd, 0x43, 0xbd, 0x8f, 0xbd, 0x43, 0xbe, 0x8f, - 0xbe, 0x43, 0xbe, 0x8f, 0xbe, 0x43, 0xbe, 0x8f, 0xbe, 0x43, 0xbf, 0x8f, - 0xbf, 0x43, 0xbf, 0x8f, 0xbf, 0x43, 0xc1, 0x8f, 0xbf, 0x44, 0xc1, 0x8f, - 0xc0, 0x44, 0xc1, 0x8f, 0xc0, 0x44, 0xc1, 0x8f, 0xc0, 0x44, 0xc1, 0x8f, - 0xc1, 0x44, 0xc1, 0x8f, 0xc1, 0x44, 0xc1, 0x8f, 0xc1, 0x44, 0xc1, 0x8f, - 0xc1, 0x44, 0xc2, 0x8f, 0xc2, 0x44, 0xc2, 0x8f, 0xc2, 0x44, 0xc2, 0x8f, - 0xc2, 0x44, 0xc3, 0x8f, 0xc3, 0x45, 0xc4, 0x8f, 0xc3, 0x45, 0xc3, 0x8f, - 0xc3, 0x45, 0xc4, 0x8f, 0xc4, 0x45, 0xc4, 0x8f, 0xc4, 0x45, 0xc4, 0x8f, - 0xc4, 0x45, 0xc5, 0x8f, 0xc5, 0x45, 0xc5, 0x8f, 0xc5, 0x45, 0xc5, 0x8f, - 0xc5, 0x45, 0xc6, 0x8f, 0xc6, 0x45, 0xc6, 0x8f, 0xc6, 0x45, 0xc6, 0x90, - 0xc6, 0x46, 0xc6, 0x90, 0xc6, 0x46, 0xc7, 0x90, 0xc7, 0x46, 0xc7, 0x90, - 0xc7, 0x46, 0xc7, 0x90, 0xc7, 0x46, 0xc8, 0x90, 0xc8, 0x46, 0xc8, 0x90, - 0xc8, 0x46, 0xc8, 0x90, 0xc8, 0x46, 0xc9, 0x90, 0xc9, 0x46, 0xc9, 0x90, - 0xc9, 0x46, 0xc9, 0x90, 0xc9, 0x46, 0xc9, 0x90, 0xc9, 0x46, 0xca, 0x91, - 0xca, 0x46, 0xca, 0x91, 0xca, 0x46, 0xca, 0x91, 0xca, 0x46, 0xcb, 0x91, - 0xcb, 0x46, 0xcb, 0x91, 0xcb, 0x46, 0xcb, 0x91, 0xcb, 0x46, 0xcc, 0x91, - 0xcc, 0x46, 0xcc, 0x91, 0xcb, 0x46, 0xcc, 0x91, 0xcc, 0x46, 0xcc, 0x91, - 0xcb, 0x46, 0xcd, 0x91, 0xcc, 0x46, 0xcd, 0x92, 0xcd, 0x46, 0xcd, 0x92, - 0xcd, 0x46, 0xce, 0x92, 0xce, 0x46, 0xce, 0x92, 0xce, 0x46, 0xce, 0x92, - 0xce, 0x46, 0xce, 0x92, 0xce, 0x46, 0xcf, 0x92, 0xce, 0x46, 0xcf, 0x92, - 0xce, 0x46, 0xcf, 0x92, 0xce, 0x46, 0xd0, 0x92, 0xce, 0x46, 0xd0, 0x93, - 0xd0, 0x46, 0xd0, 0x93, 0xd0, 0x46, 0xd0, 0x93, 0xd0, 0x46, 0xd1, 0x93, - 0xd1, 0x46, 0xd1, 0x93, 0xd1, 0x46, 0xd1, 0x93, 0xd1, 0x46, 0xd2, 0x93, - 0xd1, 0x46, 0xd2, 0x93, 0xd1, 0x46, 0xd2, 0x93, 0xd1, 0x46, 0xd2, 0x94, - 0xd2, 0x46, 0xd3, 0x94, 0xd3, 0x46, 0xd3, 0x94, 0xd3, 0x46, 0xd3, 0x94, - 0xd3, 0x46, 0xd4, 0x94, 0xd4, 0x46, 0xd4, 0x94, 0xd3, 0x46, 0xd4, 0x94, - 0xd4, 0x46, 0xd4, 0x94, 0xd3, 0x46, 0xd5, 0x94, 0xd4, 0x46, 0xd5, 0x94, - 0xd3, 0x46, 0xd5, 0x94, 0xd4, 0x46, 0xd6, 0x95, 0xd6, 0x46, 0xd6, 0x95, - 0xd6, 0x46, 0xd6, 0x95, 0xd6, 0x46, 0xd6, 0x95, 0xd6, 0x46, 0xd7, 0x95, - 0xd6, 0x46, 0xd7, 0x95, 0xd6, 0x46, 0xd7, 0x95, 0xd6, 0x46, 0xd7, 0x95, - 0xd6, 0x46, 0xd8, 0x95, 0xd6, 0x46, 0xd8, 0x95, 0xd6, 0x46, 0xd8, 0x96, - 0xd8, 0x46, 0xd9, 0x96, 0xd9, 0x46, 0xd9, 0x96, 0xd9, 0x46, 0xd9, 0x96, - 0xd9, 0x46, 0xd9, 0x96, 0xd9, 0x46, 0xda, 0x96, 0xd9, 0x46, 0xda, 0x96, - 0xd9, 0x46, 0xda, 0x96, 0xd9, 0x46, 0xda, 0x96, 0xd9, 0x46, 0xdb, 0x97, - 0xdb, 0x46, 0xdb, 0x97, 0xdb, 0x46, 0xdb, 0x97, 0xdb, 0x46, 0xdb, 0x97, - 0xdb, 0x46, 0xdc, 0x97, 0xdb, 0x46, 0xdc, 0x97, 0xdb, 0x46, 0xdc, 0x97, - 0xdb, 0x46, 0xdd, 0x97, 0xdb, 0x46, 0xdd, 0x97, 0xdb, 0x46, 0xdd, 0x97, - 0xdb, 0x46, 0xdd, 0x97, 0xdb, 0x46, 0xde, 0x98, 0xde, 0x46, 0xde, 0x98, - 0xde, 0x46, 0xde, 0x98, 0xde, 0x46, 0xde, 0x98, 0xde, 0x46, 0xdf, 0x98, - 0xde, 0x46, 0xdf, 0x98, 0xde, 0x46, 0xdf, 0x98, 0xde, 0x46, 0xdf, 0x98, - 0xde, 0x46, 0xe0, 0x98, 0xde, 0x46, 0xe0, 0x98, 0xde, 0x46, 0xe0, 0x98, - 0xe0, 0x46, 0xe1, 0x98, 0xe0, 0x46, 0xe1, 0x98, 0xe0, 0x46, 0xe1, 0x98, - 0xe0, 0x46, 0xe1, 0x98, 0xe0, 0x46, 0xe2, 0x98, 0xe0, 0x46, 0xe2, 0x98, - 0xe0, 0x46, 0xe2, 0x98, 0xe0, 0x46, 0xe2, 0x98, 0xe0, 0x46, 0xe3, 0x99, - 0xe3, 0x46, 0xe3, 0x99, 0xe2, 0x46, 0xe3, 0x99, 0xe3, 0x46, 0xe3, 0x99, - 0xe2, 0x46, 0xe4, 0x99, 0xe3, 0x46, 0xe4, 0x99, 0xe2, 0x46, 0xe4, 0x99, - 0xe3, 0x46, 0xe4, 0x99, 0xe2, 0x46, 0xe5, 0x99, 0xe3, 0x46, 0xe5, 0x9a, - 0xe5, 0x46, 0xe5, 0x9a, 0xe5, 0x46, 0xe5, 0x9a, 0xe5, 0x46, 0xe6, 0x9a, - 0xe5, 0x46, 0xe6, 0x9a, 0xe5, 0x46, 0xe6, 0x9a, 0xe5, 0x46, 0xe6, 0x9a, - 0xe5, 0x46, 0xe7, 0x9a, 0xe5, 0x46, 0xe7, 0x9a, 0xe5, 0x46, 0xe7, 0x9a, - 0xe5, 0x46, 0xe7, 0x9b, 0xe7, 0x46, 0xe8, 0x9a, 0xe5, 0x46, 0xe8, 0x9b, - 0xe7, 0x46, 0xe8, 0x9b, 0xe7, 0x46, 0xe8, 0x9b, 0xe7, 0x46, 0xe9, 0x9b, - 0xe7, 0x46, 0xe9, 0x9b, 0xe7, 0x46, 0xe9, 0x9b, 0xe7, 0x46, 0xe9, 0x9b, - 0xe7, 0x46, 0xea, 0x9b, 0xe7, 0x46, 0xea, 0x9b, 0xe7, 0x46, 0xea, 0x9c, - 0xea, 0x46, 0xea, 0x9c, 0xea, 0x46, 0xeb, 0x9c, 0xea, 0x46, 0xeb, 0x9c, - 0xea, 0x46, 0xeb, 0x9c, 0xea, 0x46, 0xeb, 0x9c, 0xea, 0x46, 0xec, 0x9c, - 0xea, 0x46, 0xec, 0x9c, 0xea, 0x46, 0xec, 0x9c, 0xea, 0x46, 0xec, 0x9c, - 0xea, 0x46, 0xec, 0x9d, 0xec, 0x46, 0xed, 0x9d, 0xec, 0x46, 0xed, 0x9d, - 0xec, 0x46, 0xed, 0x9d, 0xec, 0x46, 0xed, 0x9d, 0xec, 0x46, 0xee, 0x9d, - 0xec, 0x46, 0xee, 0x9d, 0xec, 0x46, 0xee, 0x9d, 0xec, 0x46, 0xee, 0x9d, - 0xec, 0x46, 0xef, 0x9d, 0xee, 0x46, 0xef, 0x9d, 0xee, 0x46, 0xef, 0x9d, - 0xee, 0x46, 0xef, 0x9d, 0xee, 0x46, 0xf0, 0x9d, 0xee, 0x46, 0xf0, 0x9d, - 0xee, 0x46, 0xf0, 0x9d, 0xee, 0x46, 0xf0, 0x9d, 0xee, 0x46, 0xf1, 0x9d, - 0xee, 0x46, 0xf1, 0x9e, 0xf0, 0x46, 0xf1, 0x9e, 0xf1, 0x46, 0xf1, 0x9e, - 0xf0, 0x46, 0xf2, 0x9e, 0xf1, 0x46, 0xf2, 0x9e, 0xf0, 0x46, 0xf2, 0x9e, - 0xf1, 0x46, 0xf2, 0x9e, 0xf0, 0x46, 0xf2, 0x9e, 0xf1, 0x46, 0xf3, 0x9e, - 0xf0, 0x46, 0xf3, 0x9e, 0xf1, 0x46, 0xf3, 0x9e, 0xf0, 0x46, 0xf3, 0x9e, - 0xf1, 0x46, 0xf4, 0x9f, 0xf3, 0x46, 0xf4, 0x9f, 0xf2, 0x46, 0xf4, 0x9f, - 0xf3, 0x46, 0xf4, 0x9f, 0xf2, 0x46, 0xf5, 0x9f, 0xf3, 0x46, 0xf5, 0x9f, - 0xf2, 0x46, 0xf5, 0x9f, 0xf3, 0x46, 0xf5, 0x9f, 0xf2, 0x46, 0xf5, 0x9f, - 0xf3, 0x46, 0xf6, 0xa0, 0xf5, 0x46, 0xf6, 0xa0, 0xf5, 0x46, 0xf6, 0xa0, - 0xf5, 0x46, 0xf6, 0xa0, 0xf5, 0x46, 0xf7, 0xa0, 0xf5, 0x46, 0xf7, 0xa0, - 0xf5, 0x46, 0xf7, 0xa0, 0xf5, 0x46, 0xf7, 0xa0, 0xf5, 0x46, 0xf8, 0xa0, - 0xf5, 0x46, 0xf8, 0xa1, 0xf7, 0x46, 0xf8, 0xa1, 0xf7, 0x46, 0xf8, 0xa1, - 0xf7, 0x46, 0xf8, 0xa1, 0xf7, 0x46, 0xf9, 0xa1, 0xf7, 0x46, 0xf9, 0xa1, - 0xf7, 0x46, 0xf9, 0xa1, 0xf7, 0x46, 0xf9, 0xa1, 0xf7, 0x46, 0xfa, 0xa1, - 0xf7, 0x46, 0xfa, 0xa1, 0xf7, 0x46, 0xfa, 0xa1, 0xf9, 0x46, 0xfa, 0xa1, - 0xf7, 0x46, 0xfa, 0xa1, 0xf9, 0x46, 0xfb, 0xa1, 0xf9, 0x46, 0xfb, 0xa1, - 0xf9, 0x46, 0xfb, 0xa1, 0xf9, 0x46, 0xfb, 0xa1, 0xf9, 0x46, 0xfc, 0xa1, - 0xf9, 0x46, 0xfc, 0xa1, 0xf9, 0x46, 0xfc, 0xa2, 0xfb, 0x46, 0xfc, 0xa1, - 0xf9, 0x46, 0xfc, 0xa2, 0xfb, 0x46, 0xfd, 0xa2, 0xfb, 0x46, 0xfd, 0xa2, - 0xfb, 0x46, 0xfd, 0xa2, 0xfb, 0x46, 0xfd, 0xa2, 0xfb, 0x46, 0xfe, 0xa2, - 0xfb, 0x46, 0xfe, 0xa2, 0xfb, 0x46, 0xfe, 0xa2, 0xfb, 0x46, 0xfe, 0xa2, - 0xfb, 0x46, 0xfe, 0xa2, 0xfb, 0x46, 0xff, 0xa2, 0xfb, 0x46, 0xff, 0xa2, - 0xfb, 0x46, 0x03, 0x9b, 0x98, 0x47, 0x0a, 0x98, 0x98, 0x47, 0x0f, 0x9b, - 0x98, 0x47, 0x14, 0x98, 0x98, 0x47, 0x17, 0x9b, 0x98, 0x47, 0x1b, 0x98, - 0x98, 0x47, 0x1e, 0x9b, 0x98, 0x47, 0x20, 0x98, 0x98, 0x47, 0x23, 0x9b, - 0x98, 0x47, 0x25, 0x98, 0x98, 0x47, 0x27, 0x9b, 0x98, 0x47, 0x29, 0x98, - 0x98, 0x47, 0x2b, 0x9b, 0x98, 0x47, 0x2d, 0x98, 0x98, 0x47, 0x2f, 0x9b, - 0x98, 0x47, 0x31, 0x98, 0x98, 0x47, 0x32, 0x9b, 0x98, 0x47, 0x34, 0x98, - 0x98, 0x47, 0x35, 0x9b, 0x98, 0x47, 0x37, 0x98, 0x98, 0x47, 0x38, 0x9b, - 0x98, 0x47, 0x3a, 0x98, 0x98, 0x47, 0x3b, 0x9b, 0x98, 0x47, 0x3c, 0x98, - 0x98, 0x47, 0x3e, 0x9b, 0x98, 0x47, 0x3f, 0x98, 0x98, 0x47, 0x40, 0x9b, - 0x98, 0x47, 0x42, 0x98, 0x98, 0x47, 0x43, 0x9b, 0x98, 0x47, 0x44, 0x98, - 0x98, 0x47, 0x45, 0x95, 0x99, 0x47, 0x46, 0x98, 0x98, 0x47, 0x47, 0x95, - 0x99, 0x47, 0x48, 0x98, 0x98, 0x47, 0x49, 0x95, 0x99, 0x47, 0x4a, 0x98, - 0x98, 0x47, 0x4b, 0x95, 0x99, 0x47, 0x4c, 0x98, 0x98, 0x47, 0x4d, 0x95, - 0x99, 0x47, 0x4e, 0x98, 0x98, 0x47, 0x4f, 0x95, 0x99, 0x47, 0x50, 0x98, - 0x98, 0x47, 0x51, 0x95, 0x99, 0x47, 0x52, 0x98, 0x98, 0x47, 0x53, 0x95, - 0x99, 0x47, 0x54, 0x98, 0x98, 0x47, 0x55, 0x95, 0x99, 0x47, 0x56, 0x98, - 0x98, 0x47, 0x57, 0x95, 0x99, 0x47, 0x58, 0x98, 0x98, 0x47, 0x58, 0x95, - 0x99, 0x47, 0x59, 0x98, 0x98, 0x47, 0x5a, 0x95, 0x99, 0x47, 0x5b, 0x98, - 0x98, 0x47, 0x5c, 0x95, 0x99, 0x47, 0x5d, 0x98, 0x98, 0x47, 0x5d, 0x95, - 0x99, 0x47, 0x5e, 0x98, 0x98, 0x47, 0x5f, 0x95, 0x99, 0x47, 0x60, 0x98, - 0x98, 0x47, 0x60, 0x95, 0x99, 0x47, 0x61, 0x98, 0x98, 0x47, 0x62, 0x95, - 0x99, 0x47, 0x63, 0x98, 0x98, 0x47, 0x63, 0x95, 0x99, 0x47, 0x64, 0x98, - 0x98, 0x47, 0x65, 0x95, 0x99, 0x47, 0x66, 0x98, 0x98, 0x47, 0x66, 0x95, - 0x99, 0x47, 0x67, 0x98, 0x98, 0x47, 0x68, 0x95, 0x99, 0x47, 0x68, 0x98, - 0x98, 0x47, 0x69, 0x95, 0x99, 0x47, 0x6a, 0x98, 0x98, 0x47, 0x6a, 0x95, - 0x99, 0x47, 0x6b, 0x98, 0x98, 0x47, 0x6c, 0x95, 0x99, 0x47, 0x6c, 0x98, - 0x98, 0x47, 0x6d, 0x95, 0x99, 0x47, 0x6e, 0x98, 0x98, 0x47, 0x6e, 0x95, - 0x99, 0x47, 0x6f, 0x98, 0x98, 0x47, 0x70, 0x95, 0x99, 0x47, 0x70, 0x98, - 0x98, 0x47, 0x71, 0x95, 0x99, 0x47, 0x72, 0x98, 0x98, 0x47, 0x72, 0x95, - 0x99, 0x47, 0x73, 0x98, 0x98, 0x47, 0x73, 0x95, 0x99, 0x47, 0x74, 0x98, - 0x98, 0x47, 0x75, 0x95, 0x99, 0x47, 0x75, 0x93, 0x99, 0x47, 0x76, 0x95, - 0x99, 0x47, 0x76, 0x93, 0x99, 0x47, 0x77, 0x95, 0x99, 0x47, 0x78, 0x93, - 0x99, 0x47, 0x78, 0x95, 0x99, 0x47, 0x79, 0x93, 0x99, 0x47, 0x79, 0x95, - 0x99, 0x47, 0x7a, 0x93, 0x99, 0x47, 0x7a, 0x95, 0x99, 0x47, 0x7b, 0x93, - 0x99, 0x47, 0x7c, 0x95, 0x99, 0x47, 0x7c, 0x93, 0x99, 0x47, 0x7d, 0x95, - 0x99, 0x47, 0x7d, 0x93, 0x99, 0x47, 0x7e, 0x95, 0x99, 0x47, 0x7e, 0x93, - 0x99, 0x47, 0x7f, 0x95, 0x99, 0x47, 0x7f, 0x93, 0x99, 0x47, 0x80, 0x95, - 0x99, 0x47, 0x81, 0x93, 0x99, 0x47, 0x81, 0x95, 0x99, 0x47, 0x82, 0x93, - 0x99, 0x47, 0x82, 0x95, 0x99, 0x47, 0x83, 0x93, 0x99, 0x47, 0x83, 0x95, - 0x99, 0x47, 0x84, 0x93, 0x99, 0x47, 0x84, 0x95, 0x99, 0x47, 0x85, 0x93, - 0x99, 0x47, 0x85, 0x95, 0x99, 0x47, 0x86, 0x93, 0x99, 0x47, 0x86, 0x95, - 0x99, 0x47, 0x87, 0x93, 0x99, 0x47, 0x87, 0x95, 0x99, 0x47, 0x88, 0x93, - 0x99, 0x47, 0x88, 0x95, 0x99, 0x47, 0x89, 0x93, 0x99, 0x47, 0x89, 0x90, - 0x9a, 0x47, 0x8a, 0x93, 0x99, 0x47, 0x8a, 0x90, 0x9a, 0x47, 0x8b, 0x93, - 0x99, 0x47, 0x8b, 0x90, 0x9a, 0x47, 0x8c, 0x93, 0x99, 0x47, 0x8c, 0x90, - 0x9a, 0x47, 0x8d, 0x93, 0x99, 0x47, 0x8d, 0x90, 0x9a, 0x47, 0x8e, 0x93, - 0x99, 0x47, 0x8e, 0x90, 0x9a, 0x47, 0x8e, 0x93, 0x99, 0x47, 0x8f, 0x90, - 0x9a, 0x47, 0x8f, 0x93, 0x99, 0x47, 0x90, 0x90, 0x9a, 0x47, 0x90, 0x93, - 0x99, 0x47, 0x91, 0x90, 0x9a, 0x47, 0x91, 0x93, 0x99, 0x47, 0x92, 0x90, - 0x9a, 0x47, 0x92, 0x93, 0x99, 0x47, 0x93, 0x90, 0x9a, 0x47, 0x93, 0x93, - 0x99, 0x47, 0x94, 0x90, 0x9a, 0x47, 0x94, 0x93, 0x99, 0x47, 0x94, 0x90, - 0x9a, 0x47, 0x95, 0x93, 0x99, 0x47, 0x95, 0x90, 0x9a, 0x47, 0x96, 0x93, - 0x99, 0x47, 0x96, 0x90, 0x9a, 0x47, 0x97, 0x90, 0x9a, 0x47, 0x97, 0x90, - 0x9a, 0x47, 0x98, 0x90, 0x9a, 0x47, 0x98, 0x90, 0x9a, 0x47, 0x98, 0x90, - 0x9a, 0x47, 0x99, 0x90, 0x9a, 0x47, 0x99, 0x90, 0x9a, 0x47, 0x9a, 0x90, - 0x9a, 0x46, 0x99, 0x90, 0x9a, 0x47, 0x9a, 0x90, 0x9a, 0x46, 0x99, 0x90, - 0x9b, 0x47, 0x9a, 0x90, 0x9b, 0x46, 0x9d, 0x90, 0x9c, 0x49, 0x9e, 0x90, - 0x9c, 0x47, 0x9e, 0x90, 0x9d, 0x47, 0x9e, 0x90, 0x9d, 0x47, 0x9e, 0x90, - 0x9d, 0x47, 0x9e, 0x90, 0x9d, 0x47, 0x9e, 0x90, 0x9d, 0x47, 0x9f, 0x90, - 0x9d, 0x47, 0x9f, 0x90, 0x9d, 0x47, 0x9f, 0x8e, 0x9e, 0x47, 0xa0, 0x8d, - 0xa0, 0x47, 0xa0, 0x8e, 0xa2, 0x47, 0xa1, 0x8e, 0xa2, 0x47, 0xa1, 0x8e, - 0xa2, 0x47, 0xa1, 0x8e, 0xa2, 0x47, 0xa2, 0x8e, 0xa2, 0x47, 0xa2, 0x8e, - 0xa2, 0x47, 0xa3, 0x8e, 0xa3, 0x47, 0xa3, 0x8e, 0xa3, 0x47, 0xa3, 0x8e, - 0xa3, 0x47, 0xa4, 0x8e, 0xa4, 0x47, 0xa4, 0x8e, 0xa4, 0x47, 0xa5, 0x8e, - 0xa5, 0x47, 0xa5, 0x8e, 0xa5, 0x47, 0xa5, 0x8f, 0xa6, 0x47, 0xa6, 0x8f, - 0xa6, 0x47, 0xa6, 0x8f, 0xa6, 0x47, 0xa6, 0x8f, 0xa6, 0x47, 0xa7, 0x8f, - 0xa7, 0x47, 0xa7, 0x8f, 0xa7, 0x47, 0xa8, 0x8f, 0xa8, 0x47, 0xa8, 0x8f, - 0xa8, 0x47, 0xa8, 0x8f, 0xa8, 0x47, 0xa9, 0x8f, 0xa9, 0x47, 0xa9, 0x8f, - 0xa9, 0x47, 0xaa, 0x8f, 0xaa, 0x47, 0xaa, 0x8f, 0xaa, 0x47, 0xaa, 0x90, - 0xaa, 0x48, 0xab, 0x90, 0xab, 0x48, 0xab, 0x90, 0xab, 0x48, 0xab, 0x90, - 0xab, 0x48, 0xac, 0x90, 0xac, 0x48, 0xac, 0x90, 0xac, 0x48, 0xac, 0x90, - 0xac, 0x48, 0xad, 0x90, 0xad, 0x48, 0xad, 0x90, 0xad, 0x48, 0xae, 0x90, - 0xae, 0x48, 0xae, 0x90, 0xae, 0x48, 0xae, 0x90, 0xae, 0x48, 0xae, 0x90, - 0xaf, 0x48, 0xaf, 0x90, 0xaf, 0x49, 0xaf, 0x90, 0xaf, 0x49, 0xb0, 0x90, - 0xb0, 0x49, 0xb0, 0x90, 0xb0, 0x49, 0xb0, 0x90, 0xb0, 0x49, 0xb1, 0x90, - 0xb1, 0x49, 0xb1, 0x90, 0xb1, 0x49, 0xb2, 0x90, 0xb2, 0x49, 0xb2, 0x90, - 0xb2, 0x49, 0xb2, 0x90, 0xb2, 0x49, 0xb2, 0x90, 0xb3, 0x49, 0xb2, 0x90, - 0xb3, 0x49, 0xb2, 0x90, 0xb3, 0x49, 0xb4, 0x90, 0xb4, 0x4a, 0xb4, 0x90, - 0xb4, 0x4a, 0xb4, 0x90, 0xb4, 0x4a, 0xb5, 0x90, 0xb5, 0x4a, 0xb5, 0x90, - 0xb5, 0x4a, 0xb5, 0x90, 0xb5, 0x4a, 0xb6, 0x90, 0xb6, 0x4a, 0xb5, 0x90, - 0xb6, 0x4a, 0xb6, 0x90, 0xb6, 0x4a, 0xb5, 0x90, 0xb7, 0x4a, 0xb6, 0x90, - 0xb7, 0x4a, 0xb7, 0x90, 0xb7, 0x4b, 0xb8, 0x90, 0xb8, 0x4b, 0xb8, 0x90, - 0xb8, 0x4b, 0xb8, 0x90, 0xb8, 0x4b, 0xb9, 0x90, 0xb9, 0x4b, 0xb9, 0x90, - 0xb9, 0x4b, 0xb9, 0x90, 0xb9, 0x4b, 0xba, 0x90, 0xba, 0x4b, 0xb9, 0x90, - 0xba, 0x4b, 0xba, 0x90, 0xba, 0x4b, 0xb9, 0x90, 0xbb, 0x4b, 0xba, 0x90, - 0xbb, 0x4b, 0xbc, 0x90, 0xbb, 0x43, 0xbc, 0x90, 0xbc, 0x43, 0xbc, 0x90, - 0xbc, 0x43, 0xbc, 0x90, 0xbc, 0x43, 0xbd, 0x90, 0xbd, 0x43, 0xbd, 0x90, - 0xbd, 0x43, 0xbd, 0x90, 0xbd, 0x43, 0xbf, 0x90, 0xbe, 0x44, 0xbf, 0x90, - 0xbe, 0x44, 0xbf, 0x90, 0xbe, 0x44, 0xbf, 0x90, 0xbf, 0x44, 0xbf, 0x90, - 0xbf, 0x44, 0xbf, 0x90, 0xbf, 0x44, 0xc0, 0x90, 0xc0, 0x44, 0xc0, 0x90, - 0xc0, 0x44, 0xc0, 0x90, 0xc0, 0x44, 0xc2, 0x90, 0xc1, 0x45, 0xc2, 0x90, - 0xc1, 0x45, 0xc2, 0x90, 0xc1, 0x45, 0xc2, 0x90, 0xc1, 0x45, 0xc2, 0x90, - 0xc2, 0x45, 0xc2, 0x90, 0xc2, 0x45, 0xc2, 0x90, 0xc2, 0x45, 0xc3, 0x90, - 0xc3, 0x45, 0xc3, 0x90, 0xc3, 0x45, 0xc3, 0x90, 0xc3, 0x45, 0xc4, 0x90, - 0xc4, 0x45, 0xc4, 0x90, 0xc4, 0x45, 0xc5, 0x90, 0xc4, 0x46, 0xc5, 0x90, - 0xc5, 0x46, 0xc5, 0x90, 0xc5, 0x46, 0xc5, 0x90, 0xc5, 0x46, 0xc6, 0x90, - 0xc6, 0x46, 0xc6, 0x90, 0xc6, 0x46, 0xc6, 0x90, 0xc6, 0x46, 0xc6, 0x90, - 0xc6, 0x46, 0xc7, 0x90, 0xc7, 0x46, 0xc7, 0x90, 0xc7, 0x46, 0xc7, 0x90, - 0xc7, 0x46, 0xc8, 0x91, 0xc8, 0x47, 0xc8, 0x91, 0xc8, 0x47, 0xc8, 0x91, - 0xc8, 0x47, 0xc9, 0x91, 0xc9, 0x47, 0xc9, 0x91, 0xc9, 0x47, 0xc9, 0x91, - 0xc9, 0x47, 0xc9, 0x91, 0xc9, 0x47, 0xca, 0x91, 0xca, 0x47, 0xca, 0x91, - 0xca, 0x47, 0xca, 0x91, 0xca, 0x47, 0xcb, 0x91, 0xca, 0x47, 0xcb, 0x92, - 0xcb, 0x47, 0xcb, 0x92, 0xcb, 0x47, 0xcc, 0x92, 0xcc, 0x47, 0xcc, 0x92, - 0xcc, 0x47, 0xcc, 0x92, 0xcc, 0x47, 0xcc, 0x92, 0xcc, 0x47, 0xcd, 0x92, - 0xcd, 0x47, 0xcd, 0x92, 0xcd, 0x47, 0xcd, 0x92, 0xcd, 0x47, 0xce, 0x92, - 0xcd, 0x47, 0xce, 0x92, 0xcd, 0x47, 0xce, 0x92, 0xcd, 0x47, 0xce, 0x93, - 0xce, 0x47, 0xcf, 0x93, 0xcf, 0x47, 0xcf, 0x93, 0xcf, 0x47, 0xcf, 0x93, - 0xcf, 0x47, 0xd0, 0x93, 0xd0, 0x47, 0xd0, 0x93, 0xcf, 0x47, 0xd0, 0x93, - 0xd0, 0x47, 0xd0, 0x93, 0xcf, 0x47, 0xd1, 0x93, 0xd0, 0x47, 0xd1, 0x94, - 0xd1, 0x47, 0xd1, 0x94, 0xd1, 0x47, 0xd2, 0x94, 0xd2, 0x47, 0xd2, 0x94, - 0xd2, 0x47, 0xd2, 0x94, 0xd2, 0x47, 0xd2, 0x94, 0xd2, 0x47, 0xd3, 0x94, - 0xd2, 0x47, 0xd3, 0x94, 0xd2, 0x47, 0xd3, 0x94, 0xd2, 0x47, 0xd4, 0x94, - 0xd2, 0x47, 0xd4, 0x94, 0xd4, 0x47, 0xd4, 0x94, 0xd4, 0x47, 0xd4, 0x94, - 0xd4, 0x47, 0xd5, 0x94, 0xd5, 0x47, 0xd5, 0x94, 0xd5, 0x47, 0xd5, 0x94, - 0xd5, 0x47, 0xd6, 0x94, 0xd5, 0x47, 0xd6, 0x94, 0xd5, 0x47, 0xd6, 0x94, - 0xd5, 0x47, 0xd6, 0x94, 0xd5, 0x47, 0xd7, 0x94, 0xd5, 0x47, 0xd7, 0x95, - 0xd7, 0x47, 0xd7, 0x95, 0xd7, 0x47, 0xd7, 0x95, 0xd7, 0x47, 0xd8, 0x95, - 0xd7, 0x47, 0xd8, 0x95, 0xd7, 0x47, 0xd8, 0x95, 0xd7, 0x47, 0xd9, 0x95, - 0xd7, 0x47, 0xd9, 0x95, 0xd7, 0x47, 0xd9, 0x95, 0xd7, 0x47, 0xd9, 0x96, - 0xd9, 0x47, 0xda, 0x96, 0xda, 0x47, 0xda, 0x96, 0xda, 0x47, 0xda, 0x96, - 0xda, 0x47, 0xda, 0x96, 0xda, 0x47, 0xdb, 0x96, 0xda, 0x47, 0xdb, 0x96, - 0xda, 0x47, 0xdb, 0x96, 0xda, 0x47, 0xdb, 0x96, 0xda, 0x47, 0xdc, 0x96, - 0xda, 0x47, 0xdc, 0x97, 0xdc, 0x47, 0xdc, 0x97, 0xdc, 0x47, 0xdd, 0x97, - 0xdd, 0x47, 0xdd, 0x97, 0xdc, 0x47, 0xdd, 0x97, 0xdd, 0x47, 0xdd, 0x97, - 0xdc, 0x47, 0xde, 0x97, 0xdd, 0x47, 0xde, 0x97, 0xdc, 0x47, 0xde, 0x97, - 0xdd, 0x47, 0xde, 0x97, 0xdc, 0x47, 0xdf, 0x97, 0xdd, 0x47, 0xdf, 0x98, - 0xdf, 0x47, 0xdf, 0x98, 0xdf, 0x47, 0xdf, 0x98, 0xdf, 0x47, 0xe0, 0x98, - 0xdf, 0x47, 0xe0, 0x98, 0xdf, 0x47, 0xe0, 0x98, 0xdf, 0x47, 0xe1, 0x98, - 0xdf, 0x47, 0xe1, 0x98, 0xdf, 0x47, 0xe1, 0x98, 0xdf, 0x47, 0xe1, 0x99, - 0xe1, 0x47, 0xe2, 0x99, 0xe2, 0x47, 0xe2, 0x99, 0xe1, 0x47, 0xe2, 0x99, - 0xe2, 0x47, 0xe2, 0x99, 0xe1, 0x47, 0xe3, 0x99, 0xe2, 0x47, 0xe3, 0x99, - 0xe1, 0x47, 0xe3, 0x99, 0xe2, 0x47, 0xe3, 0x99, 0xe1, 0x47, 0xe4, 0x99, - 0xe2, 0x47, 0xe4, 0x9a, 0xe4, 0x47, 0xe4, 0x9a, 0xe4, 0x47, 0xe4, 0x9a, - 0xe4, 0x47, 0xe5, 0x9a, 0xe4, 0x47, 0xe5, 0x9a, 0xe4, 0x47, 0xe5, 0x9a, - 0xe4, 0x47, 0xe5, 0x9a, 0xe4, 0x47, 0xe6, 0x9a, 0xe4, 0x47, 0xe6, 0x9a, - 0xe4, 0x47, 0xe6, 0x9a, 0xe6, 0x47, 0xe6, 0x9a, 0xe6, 0x47, 0xe7, 0x9a, - 0xe6, 0x47, 0xe7, 0x9a, 0xe6, 0x47, 0xe7, 0x9a, 0xe6, 0x47, 0xe7, 0x9a, - 0xe6, 0x47, 0xe8, 0x9a, 0xe6, 0x47, 0xe8, 0x9a, 0xe6, 0x47, 0xe8, 0x9a, - 0xe6, 0x47, 0xe8, 0x9b, 0xe8, 0x47, 0xe9, 0x9b, 0xe9, 0x47, 0xe9, 0x9b, - 0xe8, 0x47, 0xe9, 0x9b, 0xe9, 0x47, 0xe9, 0x9b, 0xe8, 0x47, 0xea, 0x9b, - 0xe9, 0x47, 0xea, 0x9b, 0xe8, 0x47, 0xea, 0x9b, 0xe9, 0x47, 0xea, 0x9b, - 0xe8, 0x47, 0xeb, 0x9b, 0xe9, 0x47, 0xeb, 0x9b, 0xe8, 0x47, 0xeb, 0x9b, - 0xe9, 0x47, 0xeb, 0x9c, 0xeb, 0x47, 0xec, 0x9c, 0xeb, 0x47, 0xec, 0x9c, - 0xeb, 0x47, 0xec, 0x9c, 0xeb, 0x47, 0xec, 0x9c, 0xeb, 0x47, 0xec, 0x9c, - 0xeb, 0x47, 0xed, 0x9c, 0xeb, 0x47, 0xed, 0x9c, 0xeb, 0x47, 0xed, 0x9c, - 0xeb, 0x47, 0xed, 0x9d, 0xed, 0x47, 0xee, 0x9d, 0xed, 0x47, 0xee, 0x9d, - 0xed, 0x47, 0xee, 0x9d, 0xed, 0x47, 0xee, 0x9d, 0xed, 0x47, 0xef, 0x9d, - 0xed, 0x47, 0xef, 0x9d, 0xed, 0x47, 0xef, 0x9d, 0xed, 0x47, 0xef, 0x9d, - 0xed, 0x47, 0xf0, 0x9d, 0xed, 0x47, 0xf0, 0x9e, 0xef, 0x47, 0xf0, 0x9e, - 0xef, 0x47, 0xf0, 0x9e, 0xef, 0x47, 0xf1, 0x9e, 0xef, 0x47, 0xf1, 0x9e, - 0xef, 0x47, 0xf1, 0x9e, 0xef, 0x47, 0xf1, 0x9e, 0xef, 0x47, 0xf2, 0x9e, - 0xef, 0x47, 0xf2, 0x9e, 0xef, 0x47, 0xf2, 0x9f, 0xf2, 0x47, 0xf2, 0x9e, - 0xef, 0x47, 0xf2, 0x9f, 0xf2, 0x47, 0xf3, 0x9f, 0xf1, 0x47, 0xf3, 0x9f, - 0xf2, 0x47, 0xf3, 0x9f, 0xf1, 0x47, 0xf3, 0x9f, 0xf2, 0x47, 0xf4, 0x9f, - 0xf1, 0x47, 0xf4, 0x9f, 0xf2, 0x47, 0xf4, 0x9f, 0xf1, 0x47, 0xf4, 0x9f, - 0xf2, 0x47, 0xf5, 0x9f, 0xf4, 0x47, 0xf5, 0x9f, 0xf4, 0x47, 0xf5, 0x9f, - 0xf4, 0x47, 0xf5, 0x9f, 0xf4, 0x47, 0xf5, 0x9f, 0xf4, 0x47, 0xf6, 0x9f, - 0xf4, 0x47, 0xf6, 0x9f, 0xf4, 0x47, 0xf6, 0x9f, 0xf4, 0x47, 0xf6, 0x9f, - 0xf4, 0x47, 0xf7, 0x9f, 0xf4, 0x47, 0xf7, 0xa0, 0xf6, 0x47, 0xf7, 0xa0, - 0xf6, 0x47, 0xf7, 0xa0, 0xf6, 0x47, 0xf8, 0xa0, 0xf6, 0x47, 0xf8, 0xa0, - 0xf6, 0x47, 0xf8, 0xa0, 0xf6, 0x47, 0xf8, 0xa0, 0xf6, 0x47, 0xf8, 0xa0, - 0xf6, 0x47, 0xf9, 0xa0, 0xf6, 0x47, 0xf9, 0xa1, 0xf8, 0x47, 0xf9, 0xa1, - 0xf8, 0x47, 0xf9, 0xa1, 0xf8, 0x47, 0xfa, 0xa1, 0xf8, 0x47, 0xfa, 0xa1, - 0xf8, 0x47, 0xfa, 0xa1, 0xf8, 0x47, 0xfa, 0xa1, 0xf8, 0x47, 0xfa, 0xa1, - 0xf8, 0x47, 0xfb, 0xa1, 0xf8, 0x47, 0xfb, 0xa2, 0xfa, 0x47, 0xfb, 0xa2, - 0xfa, 0x47, 0xfb, 0xa2, 0xfa, 0x47, 0xfc, 0xa2, 0xfa, 0x47, 0xfc, 0xa2, - 0xfa, 0x47, 0xfc, 0xa2, 0xfa, 0x47, 0xfc, 0xa2, 0xfa, 0x47, 0xfc, 0xa2, - 0xfa, 0x47, 0xfd, 0xa2, 0xfa, 0x47, 0xfd, 0xa2, 0xfa, 0x47, 0xfd, 0xa2, - 0xfa, 0x47, 0xfd, 0xa2, 0xfa, 0x47, 0xfe, 0xa2, 0xfa, 0x47, 0xfe, 0xa2, - 0xfa, 0x47, 0xfe, 0xa3, 0xfb, 0x47, 0xfe, 0xa3, 0xfc, 0x47, 0xfe, 0xa3, - 0xfb, 0x47, 0xff, 0xa3, 0xfc, 0x47, 0xff, 0xa3, 0xfb, 0x47, 0x03, 0x9b, - 0x98, 0x47, 0x0a, 0x9b, 0x98, 0x47, 0x0f, 0x9b, 0x98, 0x47, 0x14, 0x9b, - 0x98, 0x47, 0x17, 0x9b, 0x98, 0x47, 0x1b, 0x9b, 0x98, 0x47, 0x1e, 0x9b, - 0x98, 0x47, 0x20, 0x9b, 0x98, 0x47, 0x23, 0x9b, 0x98, 0x47, 0x25, 0x9b, - 0x98, 0x47, 0x27, 0x9b, 0x98, 0x47, 0x29, 0x9b, 0x98, 0x47, 0x2b, 0x9b, - 0x98, 0x47, 0x2d, 0x9b, 0x98, 0x47, 0x2f, 0x9b, 0x98, 0x47, 0x31, 0x9b, - 0x98, 0x47, 0x32, 0x9b, 0x98, 0x47, 0x34, 0x9b, 0x98, 0x47, 0x35, 0x9b, - 0x98, 0x47, 0x37, 0x9b, 0x98, 0x47, 0x38, 0x9b, 0x98, 0x47, 0x3a, 0x9b, - 0x98, 0x47, 0x3b, 0x9b, 0x98, 0x47, 0x3c, 0x9b, 0x98, 0x47, 0x3e, 0x9b, - 0x98, 0x47, 0x3f, 0x9b, 0x98, 0x47, 0x40, 0x9b, 0x98, 0x47, 0x42, 0x9b, - 0x98, 0x47, 0x43, 0x9b, 0x98, 0x47, 0x44, 0x9b, 0x98, 0x47, 0x45, 0x9b, - 0x98, 0x47, 0x46, 0x98, 0x98, 0x47, 0x47, 0x9b, 0x98, 0x47, 0x48, 0x98, - 0x98, 0x47, 0x49, 0x9b, 0x98, 0x47, 0x4a, 0x98, 0x98, 0x47, 0x4b, 0x9b, - 0x98, 0x47, 0x4c, 0x98, 0x98, 0x47, 0x4d, 0x9b, 0x98, 0x47, 0x4e, 0x98, - 0x98, 0x47, 0x4f, 0x9b, 0x98, 0x47, 0x50, 0x98, 0x98, 0x47, 0x51, 0x9b, - 0x98, 0x47, 0x52, 0x98, 0x98, 0x47, 0x53, 0x9b, 0x98, 0x47, 0x54, 0x98, - 0x98, 0x47, 0x55, 0x9b, 0x98, 0x47, 0x56, 0x98, 0x98, 0x47, 0x57, 0x9b, - 0x98, 0x47, 0x58, 0x98, 0x98, 0x47, 0x58, 0x9b, 0x98, 0x47, 0x59, 0x98, - 0x98, 0x47, 0x5a, 0x9b, 0x98, 0x47, 0x5b, 0x98, 0x98, 0x47, 0x5c, 0x96, - 0x99, 0x47, 0x5d, 0x98, 0x98, 0x47, 0x5d, 0x96, 0x99, 0x47, 0x5e, 0x98, - 0x98, 0x47, 0x5f, 0x96, 0x99, 0x47, 0x60, 0x98, 0x98, 0x47, 0x60, 0x96, - 0x99, 0x47, 0x61, 0x98, 0x98, 0x47, 0x62, 0x96, 0x99, 0x47, 0x63, 0x98, - 0x98, 0x47, 0x63, 0x96, 0x99, 0x47, 0x64, 0x98, 0x98, 0x47, 0x65, 0x96, - 0x99, 0x47, 0x66, 0x98, 0x98, 0x47, 0x66, 0x96, 0x99, 0x47, 0x67, 0x98, - 0x98, 0x47, 0x68, 0x96, 0x99, 0x47, 0x68, 0x98, 0x98, 0x47, 0x69, 0x96, - 0x99, 0x47, 0x6a, 0x98, 0x98, 0x47, 0x6a, 0x96, 0x99, 0x47, 0x6b, 0x98, - 0x98, 0x47, 0x6c, 0x96, 0x99, 0x47, 0x6c, 0x98, 0x98, 0x47, 0x6d, 0x96, - 0x99, 0x47, 0x6e, 0x98, 0x98, 0x47, 0x6e, 0x96, 0x99, 0x47, 0x6f, 0x98, - 0x98, 0x47, 0x70, 0x96, 0x99, 0x47, 0x70, 0x98, 0x98, 0x47, 0x71, 0x96, - 0x99, 0x47, 0x72, 0x98, 0x98, 0x47, 0x72, 0x96, 0x99, 0x47, 0x73, 0x92, - 0x99, 0x47, 0x73, 0x96, 0x99, 0x47, 0x74, 0x92, 0x99, 0x47, 0x75, 0x96, - 0x99, 0x47, 0x75, 0x92, 0x99, 0x47, 0x76, 0x96, 0x99, 0x47, 0x76, 0x92, - 0x99, 0x47, 0x77, 0x96, 0x99, 0x47, 0x78, 0x92, 0x99, 0x47, 0x78, 0x96, - 0x99, 0x47, 0x79, 0x92, 0x99, 0x47, 0x79, 0x96, 0x99, 0x47, 0x7a, 0x92, - 0x99, 0x47, 0x7a, 0x96, 0x99, 0x47, 0x7b, 0x92, 0x99, 0x47, 0x7c, 0x96, - 0x99, 0x47, 0x7c, 0x92, 0x99, 0x47, 0x7d, 0x96, 0x99, 0x47, 0x7d, 0x92, - 0x99, 0x47, 0x7e, 0x96, 0x99, 0x47, 0x7e, 0x92, 0x99, 0x47, 0x7f, 0x96, - 0x99, 0x47, 0x7f, 0x92, 0x99, 0x47, 0x80, 0x96, 0x99, 0x47, 0x81, 0x92, - 0x99, 0x47, 0x81, 0x96, 0x99, 0x47, 0x82, 0x92, 0x99, 0x47, 0x82, 0x96, - 0x99, 0x47, 0x83, 0x92, 0x99, 0x47, 0x83, 0x96, 0x99, 0x47, 0x84, 0x92, - 0x99, 0x47, 0x84, 0x96, 0x99, 0x47, 0x85, 0x92, 0x99, 0x47, 0x85, 0x96, - 0x99, 0x47, 0x86, 0x92, 0x99, 0x47, 0x86, 0x96, 0x99, 0x47, 0x87, 0x92, - 0x99, 0x47, 0x87, 0x96, 0x99, 0x47, 0x88, 0x92, 0x99, 0x47, 0x88, 0x96, - 0x99, 0x47, 0x89, 0x92, 0x99, 0x47, 0x89, 0x90, 0x9a, 0x47, 0x8a, 0x92, - 0x99, 0x47, 0x8a, 0x90, 0x9a, 0x47, 0x8b, 0x92, 0x99, 0x47, 0x8b, 0x90, - 0x9a, 0x47, 0x8c, 0x92, 0x99, 0x47, 0x8c, 0x90, 0x9a, 0x47, 0x8d, 0x92, - 0x99, 0x47, 0x8d, 0x90, 0x9a, 0x47, 0x8e, 0x92, 0x99, 0x47, 0x8e, 0x90, - 0x9a, 0x47, 0x8e, 0x92, 0x99, 0x47, 0x8f, 0x90, 0x9a, 0x47, 0x8f, 0x92, - 0x99, 0x47, 0x90, 0x90, 0x9a, 0x47, 0x90, 0x92, 0x99, 0x47, 0x91, 0x90, - 0x9a, 0x47, 0x91, 0x92, 0x99, 0x47, 0x92, 0x90, 0x9a, 0x47, 0x92, 0x92, - 0x99, 0x47, 0x93, 0x90, 0x9a, 0x47, 0x93, 0x92, 0x99, 0x47, 0x94, 0x90, - 0x9a, 0x47, 0x94, 0x92, 0x99, 0x47, 0x94, 0x90, 0x9a, 0x47, 0x95, 0x92, - 0x99, 0x47, 0x95, 0x90, 0x9a, 0x47, 0x96, 0x92, 0x99, 0x47, 0x96, 0x90, - 0x9a, 0x47, 0x97, 0x92, 0x99, 0x47, 0x97, 0x90, 0x9a, 0x47, 0x98, 0x92, - 0x99, 0x47, 0x98, 0x90, 0x9a, 0x47, 0x98, 0x90, 0x9a, 0x47, 0x99, 0x90, - 0x9a, 0x47, 0x99, 0x90, 0x9a, 0x47, 0x99, 0x90, 0x9a, 0x47, 0x99, 0x90, - 0x9a, 0x47, 0x99, 0x90, 0x9a, 0x47, 0x99, 0x90, 0x9b, 0x47, 0x9a, 0x90, - 0x9b, 0x45, 0x9d, 0x90, 0x9c, 0x48, 0x9e, 0x90, 0x9c, 0x47, 0x9d, 0x90, - 0x9d, 0x48, 0x9e, 0x90, 0x9d, 0x47, 0x9d, 0x90, 0x9d, 0x48, 0x9e, 0x90, - 0x9d, 0x47, 0x9e, 0x90, 0x9d, 0x47, 0x9f, 0x90, 0x9d, 0x47, 0x9f, 0x90, - 0x9d, 0x47, 0x9f, 0x8e, 0x9f, 0x47, 0xa0, 0x8e, 0xa0, 0x47, 0xa0, 0x8e, - 0xa0, 0x47, 0xa1, 0x8e, 0xa1, 0x47, 0xa1, 0x8e, 0xa1, 0x47, 0xa1, 0x8e, - 0xa1, 0x47, 0xa2, 0x8e, 0xa2, 0x47, 0xa2, 0x8e, 0xa4, 0x47, 0xa3, 0x8e, - 0xa4, 0x47, 0xa3, 0x8e, 0xa4, 0x47, 0xa3, 0x8e, 0xa4, 0x47, 0xa4, 0x8e, - 0xa4, 0x47, 0xa4, 0x8e, 0xa4, 0x47, 0xa5, 0x8e, 0xa5, 0x47, 0xa5, 0x8e, - 0xa5, 0x47, 0xa5, 0x8e, 0xa5, 0x47, 0xa6, 0x8e, 0xa6, 0x47, 0xa6, 0x8e, - 0xa6, 0x47, 0xa6, 0x8e, 0xa6, 0x47, 0xa7, 0x8e, 0xa7, 0x47, 0xa7, 0x8f, - 0xa8, 0x47, 0xa8, 0x8f, 0xa8, 0x47, 0xa8, 0x8f, 0xa8, 0x47, 0xa8, 0x8f, - 0xa8, 0x47, 0xa9, 0x8f, 0xa9, 0x47, 0xa9, 0x8f, 0xa9, 0x47, 0xaa, 0x8f, - 0xaa, 0x47, 0xaa, 0x8f, 0xaa, 0x47, 0xaa, 0x8f, 0xaa, 0x47, 0xab, 0x8f, - 0xab, 0x47, 0xab, 0x8f, 0xab, 0x47, 0xab, 0x8f, 0xab, 0x47, 0xac, 0x8f, - 0xac, 0x47, 0xac, 0x8f, 0xac, 0x47, 0xac, 0x90, 0xac, 0x48, 0xad, 0x90, - 0xad, 0x48, 0xad, 0x90, 0xad, 0x48, 0xae, 0x90, 0xae, 0x48, 0xae, 0x90, - 0xae, 0x48, 0xae, 0x90, 0xae, 0x48, 0xaf, 0x90, 0xaf, 0x48, 0xaf, 0x90, - 0xaf, 0x48, 0xaf, 0x90, 0xaf, 0x48, 0xb0, 0x90, 0xb0, 0x48, 0xb0, 0x90, - 0xb0, 0x48, 0xb0, 0x90, 0xb0, 0x48, 0xb0, 0x90, 0xb1, 0x48, 0xb1, 0x90, - 0xb1, 0x49, 0xb2, 0x90, 0xb2, 0x49, 0xb2, 0x90, 0xb2, 0x49, 0xb2, 0x90, - 0xb2, 0x49, 0xb3, 0x90, 0xb3, 0x49, 0xb3, 0x90, 0xb3, 0x49, 0xb3, 0x90, - 0xb3, 0x49, 0xb4, 0x90, 0xb4, 0x49, 0xb4, 0x90, 0xb4, 0x49, 0xb4, 0x90, - 0xb4, 0x49, 0xb4, 0x90, 0xb5, 0x49, 0xb4, 0x90, 0xb5, 0x49, 0xb4, 0x90, - 0xb5, 0x49, 0xb6, 0x90, 0xb6, 0x4a, 0xb6, 0x90, 0xb6, 0x4a, 0xb6, 0x90, - 0xb6, 0x4a, 0xb7, 0x90, 0xb7, 0x4a, 0xb7, 0x90, 0xb7, 0x4a, 0xb7, 0x90, - 0xb7, 0x4a, 0xb8, 0x90, 0xb8, 0x4a, 0xb7, 0x90, 0xb8, 0x4a, 0xb8, 0x90, - 0xb8, 0x4a, 0xb7, 0x90, 0xb9, 0x4a, 0xb8, 0x90, 0xb9, 0x4a, 0xb9, 0x90, - 0xb9, 0x4b, 0xba, 0x90, 0xba, 0x4b, 0xba, 0x90, 0xba, 0x4b, 0xba, 0x90, - 0xba, 0x4b, 0xbb, 0x90, 0xbb, 0x4b, 0xbb, 0x90, 0xbb, 0x4b, 0xbb, 0x90, - 0xbb, 0x4b, 0xbb, 0x90, 0xbc, 0x4b, 0xbb, 0x90, 0xbc, 0x4b, 0xbb, 0x90, - 0xbc, 0x4b, 0xbd, 0x90, 0xbd, 0x43, 0xbe, 0x90, 0xbd, 0x43, 0xbd, 0x90, - 0xbd, 0x43, 0xbe, 0x90, 0xbe, 0x43, 0xbe, 0x90, 0xbe, 0x43, 0xbe, 0x90, - 0xbe, 0x43, 0xbf, 0x90, 0xbf, 0x43, 0xbf, 0x90, 0xbf, 0x43, 0xc1, 0x90, - 0xbf, 0x44, 0xc1, 0x90, 0xc0, 0x44, 0xc1, 0x90, 0xc0, 0x44, 0xc1, 0x90, - 0xc0, 0x44, 0xc1, 0x90, 0xc1, 0x44, 0xc1, 0x90, 0xc1, 0x44, 0xc1, 0x90, - 0xc1, 0x44, 0xc1, 0x90, 0xc1, 0x44, 0xc2, 0x90, 0xc2, 0x44, 0xc3, 0x90, - 0xc2, 0x45, 0xc4, 0x90, 0xc2, 0x45, 0xc3, 0x90, 0xc3, 0x45, 0xc4, 0x90, - 0xc3, 0x45, 0xc3, 0x90, 0xc3, 0x45, 0xc4, 0x90, 0xc4, 0x45, 0xc4, 0x90, - 0xc4, 0x45, 0xc4, 0x90, 0xc4, 0x45, 0xc5, 0x90, 0xc5, 0x45, 0xc5, 0x90, - 0xc5, 0x45, 0xc5, 0x90, 0xc5, 0x45, 0xc6, 0x90, 0xc6, 0x46, 0xc6, 0x90, - 0xc6, 0x46, 0xc6, 0x90, 0xc6, 0x46, 0xc6, 0x90, 0xc6, 0x46, 0xc7, 0x90, - 0xc7, 0x46, 0xc7, 0x90, 0xc7, 0x46, 0xc7, 0x90, 0xc7, 0x46, 0xc8, 0x90, - 0xc8, 0x46, 0xc8, 0x90, 0xc8, 0x46, 0xc8, 0x90, 0xc8, 0x46, 0xc9, 0x90, - 0xc9, 0x46, 0xc9, 0x90, 0xc9, 0x46, 0xc9, 0x91, 0xc9, 0x47, 0xc9, 0x91, - 0xc9, 0x47, 0xca, 0x91, 0xca, 0x47, 0xca, 0x91, 0xca, 0x47, 0xca, 0x91, - 0xca, 0x47, 0xcb, 0x91, 0xcb, 0x47, 0xcb, 0x91, 0xcb, 0x47, 0xcb, 0x91, - 0xcb, 0x47, 0xcc, 0x91, 0xcc, 0x47, 0xcc, 0x91, 0xcb, 0x47, 0xcc, 0x91, - 0xcc, 0x47, 0xcc, 0x92, 0xcc, 0x47, 0xcd, 0x92, 0xcd, 0x47, 0xcd, 0x92, - 0xcd, 0x47, 0xcd, 0x92, 0xcd, 0x47, 0xce, 0x92, 0xce, 0x47, 0xce, 0x92, - 0xce, 0x47, 0xce, 0x92, 0xce, 0x47, 0xce, 0x92, 0xce, 0x47, 0xcf, 0x92, - 0xce, 0x47, 0xcf, 0x92, 0xce, 0x47, 0xcf, 0x92, 0xce, 0x47, 0xd0, 0x92, - 0xce, 0x47, 0xd0, 0x93, 0xd0, 0x47, 0xd0, 0x93, 0xd0, 0x47, 0xd0, 0x93, - 0xd0, 0x47, 0xd1, 0x93, 0xd1, 0x47, 0xd1, 0x93, 0xd1, 0x47, 0xd1, 0x93, - 0xd1, 0x47, 0xd2, 0x93, 0xd1, 0x47, 0xd2, 0x93, 0xd1, 0x47, 0xd2, 0x93, - 0xd1, 0x47, 0xd2, 0x94, 0xd2, 0x47, 0xd3, 0x94, 0xd3, 0x47, 0xd3, 0x94, - 0xd3, 0x47, 0xd3, 0x94, 0xd3, 0x47, 0xd4, 0x94, 0xd4, 0x47, 0xd4, 0x94, - 0xd3, 0x47, 0xd4, 0x94, 0xd4, 0x47, 0xd4, 0x94, 0xd3, 0x47, 0xd5, 0x94, - 0xd4, 0x47, 0xd5, 0x95, 0xd5, 0x47, 0xd5, 0x95, 0xd5, 0x47, 0xd6, 0x95, - 0xd6, 0x47, 0xd6, 0x95, 0xd6, 0x47, 0xd6, 0x95, 0xd6, 0x47, 0xd6, 0x95, - 0xd6, 0x47, 0xd7, 0x95, 0xd6, 0x47, 0xd7, 0x95, 0xd6, 0x47, 0xd7, 0x95, - 0xd6, 0x47, 0xd7, 0x95, 0xd6, 0x47, 0xd8, 0x95, 0xd6, 0x47, 0xd8, 0x95, - 0xd6, 0x47, 0xd8, 0x96, 0xd8, 0x47, 0xd9, 0x96, 0xd9, 0x47, 0xd9, 0x96, - 0xd9, 0x47, 0xd9, 0x96, 0xd9, 0x47, 0xd9, 0x96, 0xd9, 0x47, 0xda, 0x96, - 0xd9, 0x47, 0xda, 0x96, 0xd9, 0x47, 0xda, 0x96, 0xd9, 0x47, 0xda, 0x96, - 0xd9, 0x47, 0xdb, 0x97, 0xdb, 0x47, 0xdb, 0x97, 0xdb, 0x47, 0xdb, 0x97, - 0xdb, 0x47, 0xdb, 0x97, 0xdb, 0x47, 0xdc, 0x97, 0xdb, 0x47, 0xdc, 0x97, - 0xdb, 0x47, 0xdc, 0x97, 0xdb, 0x47, 0xdd, 0x97, 0xdb, 0x47, 0xdd, 0x97, - 0xdb, 0x47, 0xdd, 0x98, 0xdd, 0x47, 0xdd, 0x98, 0xdd, 0x47, 0xde, 0x98, - 0xde, 0x47, 0xde, 0x98, 0xde, 0x47, 0xde, 0x98, 0xde, 0x47, 0xde, 0x98, - 0xde, 0x47, 0xdf, 0x98, 0xde, 0x47, 0xdf, 0x98, 0xde, 0x47, 0xdf, 0x98, - 0xde, 0x47, 0xdf, 0x98, 0xde, 0x47, 0xe0, 0x98, 0xde, 0x47, 0xe0, 0x98, - 0xde, 0x47, 0xe0, 0x98, 0xe0, 0x47, 0xe1, 0x98, 0xe0, 0x47, 0xe1, 0x98, - 0xe0, 0x47, 0xe1, 0x98, 0xe0, 0x47, 0xe1, 0x98, 0xe0, 0x47, 0xe2, 0x98, - 0xe0, 0x47, 0xe2, 0x98, 0xe0, 0x47, 0xe2, 0x98, 0xe0, 0x47, 0xe2, 0x98, - 0xe0, 0x47, 0xe3, 0x99, 0xe3, 0x47, 0xe3, 0x99, 0xe2, 0x47, 0xe3, 0x99, - 0xe3, 0x47, 0xe3, 0x99, 0xe2, 0x47, 0xe4, 0x99, 0xe3, 0x47, 0xe4, 0x99, - 0xe2, 0x47, 0xe4, 0x99, 0xe3, 0x47, 0xe4, 0x99, 0xe2, 0x47, 0xe5, 0x99, - 0xe3, 0x47, 0xe5, 0x9a, 0xe5, 0x47, 0xe5, 0x9a, 0xe5, 0x47, 0xe5, 0x9a, - 0xe5, 0x47, 0xe6, 0x9a, 0xe5, 0x47, 0xe6, 0x9a, 0xe5, 0x47, 0xe6, 0x9a, - 0xe5, 0x47, 0xe6, 0x9a, 0xe5, 0x47, 0xe7, 0x9a, 0xe5, 0x47, 0xe7, 0x9a, - 0xe5, 0x47, 0xe7, 0x9a, 0xe5, 0x47, 0xe7, 0x9b, 0xe7, 0x47, 0xe8, 0x9b, - 0xe7, 0x47, 0xe8, 0x9b, 0xe7, 0x47, 0xe8, 0x9b, 0xe7, 0x47, 0xe8, 0x9b, - 0xe7, 0x47, 0xe9, 0x9b, 0xe7, 0x47, 0xe9, 0x9b, 0xe7, 0x47, 0xe9, 0x9b, - 0xe7, 0x47, 0xe9, 0x9b, 0xe7, 0x47, 0xea, 0x9c, 0xea, 0x47, 0xea, 0x9c, - 0xea, 0x47, 0xea, 0x9c, 0xea, 0x47, 0xea, 0x9c, 0xea, 0x47, 0xeb, 0x9c, - 0xea, 0x47, 0xeb, 0x9c, 0xea, 0x47, 0xeb, 0x9c, 0xea, 0x47, 0xeb, 0x9c, - 0xea, 0x47, 0xec, 0x9c, 0xea, 0x47, 0xec, 0x9c, 0xea, 0x47, 0xec, 0x9c, - 0xea, 0x47, 0xec, 0x9c, 0xea, 0x47, 0xec, 0x9d, 0xec, 0x47, 0xed, 0x9d, - 0xec, 0x47, 0xed, 0x9d, 0xec, 0x47, 0xed, 0x9d, 0xec, 0x47, 0xed, 0x9d, - 0xec, 0x47, 0xee, 0x9d, 0xec, 0x47, 0xee, 0x9d, 0xec, 0x47, 0xee, 0x9d, - 0xec, 0x47, 0xee, 0x9d, 0xec, 0x47, 0xef, 0x9d, 0xee, 0x47, 0xef, 0x9d, - 0xee, 0x47, 0xef, 0x9d, 0xee, 0x47, 0xef, 0x9d, 0xee, 0x47, 0xf0, 0x9d, - 0xee, 0x47, 0xf0, 0x9d, 0xee, 0x47, 0xf0, 0x9d, 0xee, 0x47, 0xf0, 0x9d, - 0xee, 0x47, 0xf1, 0x9d, 0xee, 0x47, 0xf1, 0x9e, 0xf0, 0x47, 0xf1, 0x9e, - 0xf1, 0x47, 0xf1, 0x9e, 0xf0, 0x47, 0xf2, 0x9e, 0xf1, 0x47, 0xf2, 0x9e, - 0xf0, 0x47, 0xf2, 0x9e, 0xf1, 0x47, 0xf2, 0x9e, 0xf0, 0x47, 0xf2, 0x9e, - 0xf1, 0x47, 0xf3, 0x9e, 0xf0, 0x47, 0xf3, 0x9e, 0xf1, 0x47, 0xf3, 0x9f, - 0xf3, 0x47, 0xf3, 0x9e, 0xf1, 0x47, 0xf4, 0x9f, 0xf3, 0x47, 0xf4, 0x9f, - 0xf2, 0x47, 0xf4, 0x9f, 0xf3, 0x47, 0xf4, 0x9f, 0xf2, 0x47, 0xf5, 0x9f, - 0xf3, 0x47, 0xf5, 0x9f, 0xf2, 0x47, 0xf5, 0x9f, 0xf3, 0x47, 0xf5, 0x9f, - 0xf2, 0x47, 0xf5, 0x9f, 0xf3, 0x47, 0xf6, 0xa0, 0xf5, 0x47, 0xf6, 0xa0, - 0xf5, 0x47, 0xf6, 0xa0, 0xf5, 0x47, 0xf6, 0xa0, 0xf5, 0x47, 0xf7, 0xa0, - 0xf5, 0x47, 0xf7, 0xa0, 0xf5, 0x47, 0xf7, 0xa0, 0xf5, 0x47, 0xf7, 0xa0, - 0xf5, 0x47, 0xf8, 0xa0, 0xf5, 0x47, 0xf8, 0xa1, 0xf7, 0x47, 0xf8, 0xa1, - 0xf7, 0x47, 0xf8, 0xa1, 0xf7, 0x47, 0xf8, 0xa1, 0xf7, 0x47, 0xf9, 0xa1, - 0xf7, 0x47, 0xf9, 0xa1, 0xf7, 0x47, 0xf9, 0xa1, 0xf7, 0x47, 0xf9, 0xa1, - 0xf7, 0x47, 0xfa, 0xa1, 0xf7, 0x47, 0xfa, 0xa1, 0xf7, 0x47, 0xfa, 0xa1, - 0xf9, 0x47, 0xfa, 0xa1, 0xf9, 0x47, 0xfa, 0xa1, 0xf9, 0x47, 0xfb, 0xa1, - 0xf9, 0x47, 0xfb, 0xa1, 0xf9, 0x47, 0xfb, 0xa1, 0xf9, 0x47, 0xfb, 0xa1, - 0xf9, 0x47, 0xfc, 0xa1, 0xf9, 0x47, 0xfc, 0xa1, 0xf9, 0x47, 0xfc, 0xa2, - 0xfb, 0x47, 0xfc, 0xa1, 0xf9, 0x47, 0xfc, 0xa2, 0xfb, 0x47, 0xfd, 0xa2, - 0xfb, 0x47, 0xfd, 0xa2, 0xfb, 0x47, 0xfd, 0xa2, 0xfb, 0x47, 0xfd, 0xa2, - 0xfb, 0x47, 0xfe, 0xa2, 0xfb, 0x47, 0xfe, 0xa2, 0xfb, 0x47, 0xfe, 0xa2, - 0xfb, 0x47, 0xfe, 0xa2, 0xfb, 0x47, 0xfe, 0xa2, 0xfb, 0x47, 0xff, 0xa2, - 0xfb, 0x47, 0xff, 0xa2, 0xfb, 0x47, 0x03, 0x9b, 0x98, 0x48, 0x0a, 0x98, - 0x98, 0x48, 0x0f, 0x9b, 0x98, 0x48, 0x14, 0x98, 0x98, 0x48, 0x17, 0x9b, - 0x98, 0x48, 0x1b, 0x98, 0x98, 0x48, 0x1e, 0x9b, 0x98, 0x48, 0x20, 0x98, - 0x98, 0x48, 0x23, 0x9b, 0x98, 0x48, 0x25, 0x98, 0x98, 0x48, 0x27, 0x9b, - 0x98, 0x48, 0x29, 0x98, 0x98, 0x48, 0x2b, 0x9b, 0x98, 0x48, 0x2d, 0x98, - 0x98, 0x48, 0x2f, 0x9b, 0x98, 0x48, 0x31, 0x98, 0x98, 0x48, 0x32, 0x9b, - 0x98, 0x48, 0x34, 0x98, 0x98, 0x48, 0x35, 0x9b, 0x98, 0x48, 0x37, 0x98, - 0x98, 0x48, 0x38, 0x9b, 0x98, 0x48, 0x3a, 0x98, 0x98, 0x48, 0x3b, 0x9b, - 0x98, 0x48, 0x3c, 0x98, 0x98, 0x48, 0x3e, 0x9b, 0x98, 0x48, 0x3f, 0x98, - 0x98, 0x48, 0x40, 0x9b, 0x98, 0x48, 0x42, 0x98, 0x98, 0x48, 0x43, 0x9b, - 0x98, 0x48, 0x44, 0x98, 0x98, 0x48, 0x45, 0x9b, 0x98, 0x48, 0x46, 0x98, - 0x98, 0x48, 0x47, 0x9b, 0x98, 0x48, 0x48, 0x98, 0x98, 0x48, 0x49, 0x9b, - 0x98, 0x48, 0x4a, 0x98, 0x98, 0x48, 0x4b, 0x9b, 0x98, 0x48, 0x4c, 0x98, - 0x98, 0x48, 0x4d, 0x9b, 0x98, 0x48, 0x4e, 0x98, 0x98, 0x48, 0x4f, 0x9b, - 0x98, 0x48, 0x50, 0x98, 0x98, 0x48, 0x51, 0x95, 0x99, 0x48, 0x52, 0x98, - 0x98, 0x48, 0x53, 0x95, 0x99, 0x48, 0x54, 0x98, 0x98, 0x48, 0x55, 0x95, - 0x99, 0x48, 0x56, 0x98, 0x98, 0x48, 0x57, 0x95, 0x99, 0x48, 0x58, 0x98, - 0x98, 0x48, 0x58, 0x95, 0x99, 0x48, 0x59, 0x98, 0x98, 0x48, 0x5a, 0x95, - 0x99, 0x48, 0x5b, 0x98, 0x98, 0x48, 0x5c, 0x95, 0x99, 0x48, 0x5d, 0x98, - 0x98, 0x48, 0x5d, 0x95, 0x99, 0x48, 0x5e, 0x98, 0x98, 0x48, 0x5f, 0x95, - 0x99, 0x48, 0x60, 0x98, 0x98, 0x48, 0x60, 0x95, 0x99, 0x48, 0x61, 0x98, - 0x98, 0x48, 0x62, 0x95, 0x99, 0x48, 0x63, 0x98, 0x98, 0x48, 0x63, 0x95, - 0x99, 0x48, 0x64, 0x98, 0x98, 0x48, 0x65, 0x95, 0x99, 0x48, 0x66, 0x98, - 0x98, 0x48, 0x66, 0x95, 0x99, 0x48, 0x67, 0x98, 0x98, 0x48, 0x68, 0x95, - 0x99, 0x48, 0x68, 0x98, 0x98, 0x48, 0x69, 0x95, 0x99, 0x48, 0x6a, 0x98, - 0x98, 0x48, 0x6a, 0x95, 0x99, 0x48, 0x6b, 0x98, 0x98, 0x48, 0x6c, 0x95, - 0x99, 0x48, 0x6c, 0x98, 0x98, 0x48, 0x6d, 0x95, 0x99, 0x48, 0x6e, 0x98, - 0x98, 0x48, 0x6e, 0x95, 0x99, 0x48, 0x6f, 0x98, 0x98, 0x48, 0x70, 0x95, - 0x99, 0x48, 0x70, 0x98, 0x98, 0x48, 0x71, 0x95, 0x99, 0x48, 0x72, 0x98, - 0x98, 0x48, 0x72, 0x95, 0x99, 0x48, 0x73, 0x98, 0x98, 0x48, 0x73, 0x95, - 0x99, 0x48, 0x74, 0x98, 0x98, 0x48, 0x75, 0x95, 0x99, 0x48, 0x75, 0x98, - 0x98, 0x48, 0x76, 0x95, 0x99, 0x48, 0x76, 0x98, 0x98, 0x48, 0x77, 0x95, - 0x99, 0x48, 0x78, 0x98, 0x98, 0x48, 0x78, 0x95, 0x99, 0x48, 0x79, 0x98, - 0x98, 0x48, 0x79, 0x95, 0x99, 0x48, 0x7a, 0x98, 0x98, 0x48, 0x7a, 0x95, - 0x99, 0x48, 0x7b, 0x98, 0x98, 0x48, 0x7c, 0x95, 0x99, 0x48, 0x7c, 0x93, - 0x99, 0x48, 0x7d, 0x95, 0x99, 0x48, 0x7d, 0x93, 0x99, 0x48, 0x7e, 0x95, - 0x99, 0x48, 0x7e, 0x93, 0x99, 0x48, 0x7f, 0x95, 0x99, 0x48, 0x7f, 0x93, - 0x99, 0x48, 0x80, 0x95, 0x99, 0x48, 0x81, 0x93, 0x99, 0x48, 0x81, 0x95, - 0x99, 0x48, 0x82, 0x93, 0x99, 0x48, 0x82, 0x95, 0x99, 0x48, 0x83, 0x93, - 0x99, 0x48, 0x83, 0x95, 0x99, 0x48, 0x84, 0x93, 0x99, 0x48, 0x84, 0x95, - 0x99, 0x48, 0x85, 0x93, 0x99, 0x48, 0x85, 0x95, 0x99, 0x48, 0x86, 0x93, - 0x99, 0x48, 0x86, 0x95, 0x99, 0x48, 0x87, 0x93, 0x99, 0x48, 0x87, 0x95, - 0x99, 0x48, 0x88, 0x93, 0x99, 0x48, 0x88, 0x95, 0x99, 0x48, 0x89, 0x93, - 0x99, 0x48, 0x89, 0x95, 0x99, 0x48, 0x8a, 0x93, 0x99, 0x48, 0x8a, 0x95, - 0x99, 0x48, 0x8b, 0x93, 0x99, 0x48, 0x8b, 0x95, 0x99, 0x48, 0x8c, 0x93, - 0x99, 0x48, 0x8c, 0x95, 0x99, 0x48, 0x8d, 0x93, 0x99, 0x48, 0x8d, 0x95, - 0x99, 0x48, 0x8e, 0x93, 0x99, 0x48, 0x8e, 0x95, 0x99, 0x48, 0x8e, 0x93, - 0x99, 0x48, 0x8f, 0x91, 0x9a, 0x48, 0x8f, 0x93, 0x99, 0x48, 0x90, 0x91, - 0x9a, 0x48, 0x90, 0x93, 0x99, 0x48, 0x91, 0x91, 0x9a, 0x48, 0x91, 0x93, - 0x99, 0x48, 0x92, 0x91, 0x9a, 0x48, 0x92, 0x93, 0x99, 0x48, 0x93, 0x91, - 0x9a, 0x48, 0x93, 0x93, 0x99, 0x48, 0x94, 0x91, 0x9a, 0x48, 0x94, 0x93, - 0x99, 0x48, 0x94, 0x91, 0x9a, 0x48, 0x95, 0x93, 0x99, 0x48, 0x95, 0x91, - 0x9a, 0x48, 0x96, 0x93, 0x99, 0x48, 0x96, 0x91, 0x9a, 0x48, 0x97, 0x93, - 0x99, 0x48, 0x97, 0x91, 0x9a, 0x48, 0x98, 0x93, 0x99, 0x48, 0x98, 0x91, - 0x9a, 0x48, 0x98, 0x91, 0x9a, 0x48, 0x99, 0x91, 0x9a, 0x48, 0x99, 0x91, - 0x9a, 0x48, 0x99, 0x91, 0x9a, 0x48, 0x99, 0x91, 0x9a, 0x48, 0x99, 0x91, - 0x9a, 0x48, 0x99, 0x91, 0x9b, 0x48, 0x9a, 0x91, 0x9b, 0x46, 0x9d, 0x91, - 0x9c, 0x49, 0x9e, 0x91, 0x9c, 0x48, 0x9d, 0x91, 0x9d, 0x49, 0x9e, 0x91, - 0x9d, 0x48, 0x9e, 0x91, 0x9d, 0x48, 0x9e, 0x91, 0x9d, 0x48, 0x9e, 0x91, - 0x9d, 0x48, 0x9f, 0x91, 0x9d, 0x48, 0x9f, 0x91, 0x9d, 0x48, 0x9f, 0x91, - 0x9d, 0x48, 0xa0, 0x91, 0x9d, 0x48, 0xa0, 0x8e, 0xa2, 0x48, 0xa1, 0x8e, - 0xa2, 0x48, 0xa1, 0x8e, 0xa2, 0x48, 0xa1, 0x8e, 0xa2, 0x48, 0xa2, 0x8e, - 0xa2, 0x48, 0xa2, 0x8e, 0xa2, 0x48, 0xa3, 0x8e, 0xa3, 0x48, 0xa3, 0x8e, - 0xa3, 0x48, 0xa3, 0x8e, 0xa3, 0x48, 0xa4, 0x8e, 0xa4, 0x48, 0xa4, 0x8e, - 0xa4, 0x48, 0xa5, 0x8f, 0xa6, 0x48, 0xa5, 0x8f, 0xa6, 0x48, 0xa5, 0x8f, - 0xa6, 0x48, 0xa6, 0x8f, 0xa6, 0x48, 0xa6, 0x8f, 0xa6, 0x48, 0xa6, 0x8f, - 0xa6, 0x48, 0xa7, 0x8f, 0xa7, 0x48, 0xa7, 0x8f, 0xa7, 0x48, 0xa8, 0x8f, - 0xa8, 0x48, 0xa8, 0x8f, 0xa8, 0x48, 0xa8, 0x8f, 0xa8, 0x48, 0xa9, 0x8f, - 0xa9, 0x48, 0xa9, 0x8f, 0xa9, 0x48, 0xaa, 0x90, 0xaa, 0x48, 0xaa, 0x90, - 0xab, 0x48, 0xaa, 0x90, 0xaa, 0x48, 0xab, 0x90, 0xab, 0x48, 0xab, 0x90, - 0xab, 0x48, 0xab, 0x90, 0xab, 0x48, 0xac, 0x90, 0xac, 0x48, 0xac, 0x90, - 0xac, 0x48, 0xac, 0x90, 0xac, 0x48, 0xad, 0x90, 0xad, 0x48, 0xad, 0x90, - 0xad, 0x48, 0xae, 0x90, 0xae, 0x48, 0xae, 0x90, 0xae, 0x48, 0xae, 0x91, - 0xae, 0x49, 0xaf, 0x91, 0xaf, 0x49, 0xaf, 0x91, 0xaf, 0x49, 0xaf, 0x91, - 0xaf, 0x49, 0xb0, 0x91, 0xb0, 0x49, 0xb0, 0x91, 0xb0, 0x49, 0xb0, 0x91, - 0xb0, 0x49, 0xb1, 0x91, 0xb1, 0x49, 0xb1, 0x91, 0xb1, 0x49, 0xb2, 0x91, - 0xb2, 0x49, 0xb2, 0x91, 0xb2, 0x49, 0xb2, 0x91, 0xb2, 0x49, 0xb2, 0x91, - 0xb3, 0x49, 0xb3, 0x91, 0xb3, 0x4a, 0xb3, 0x91, 0xb3, 0x4a, 0xb4, 0x91, - 0xb4, 0x4a, 0xb4, 0x91, 0xb4, 0x4a, 0xb4, 0x91, 0xb4, 0x4a, 0xb5, 0x91, - 0xb5, 0x4a, 0xb5, 0x91, 0xb5, 0x4a, 0xb5, 0x91, 0xb5, 0x4a, 0xb6, 0x91, - 0xb6, 0x4a, 0xb5, 0x91, 0xb6, 0x4a, 0xb6, 0x91, 0xb6, 0x4a, 0xb5, 0x91, - 0xb7, 0x4a, 0xb6, 0x91, 0xb7, 0x4a, 0xb7, 0x91, 0xb7, 0x4b, 0xb8, 0x91, - 0xb8, 0x4b, 0xb8, 0x91, 0xb8, 0x4b, 0xb8, 0x91, 0xb8, 0x4b, 0xb9, 0x91, - 0xb9, 0x4b, 0xb9, 0x91, 0xb9, 0x4b, 0xb9, 0x91, 0xb9, 0x4b, 0xba, 0x91, - 0xba, 0x4b, 0xb9, 0x91, 0xba, 0x4b, 0xba, 0x91, 0xba, 0x4b, 0xb9, 0x91, - 0xbb, 0x4b, 0xba, 0x91, 0xbb, 0x4b, 0xbb, 0x91, 0xbb, 0x4c, 0xbc, 0x91, - 0xbc, 0x4c, 0xbc, 0x91, 0xbc, 0x4c, 0xbc, 0x91, 0xbc, 0x4c, 0xbd, 0x91, - 0xbd, 0x4c, 0xbd, 0x91, 0xbd, 0x4c, 0xbd, 0x91, 0xbd, 0x4c, 0xbd, 0x91, - 0xbe, 0x4c, 0xbd, 0x91, 0xbe, 0x4c, 0xbf, 0x91, 0xbe, 0x44, 0xbf, 0x91, - 0xbf, 0x44, 0xbf, 0x91, 0xbf, 0x44, 0xbf, 0x91, 0xbf, 0x44, 0xc0, 0x91, - 0xc0, 0x44, 0xc0, 0x91, 0xc0, 0x44, 0xc0, 0x91, 0xc0, 0x44, 0xc2, 0x91, - 0xc1, 0x45, 0xc2, 0x91, 0xc1, 0x45, 0xc2, 0x91, 0xc1, 0x45, 0xc2, 0x91, - 0xc1, 0x45, 0xc2, 0x91, 0xc2, 0x45, 0xc2, 0x91, 0xc2, 0x45, 0xc2, 0x91, - 0xc2, 0x45, 0xc3, 0x91, 0xc3, 0x45, 0xc3, 0x91, 0xc3, 0x45, 0xc3, 0x91, - 0xc3, 0x45, 0xc5, 0x91, 0xc4, 0x46, 0xc5, 0x91, 0xc4, 0x46, 0xc5, 0x91, - 0xc4, 0x46, 0xc5, 0x91, 0xc5, 0x46, 0xc5, 0x91, 0xc5, 0x46, 0xc5, 0x91, - 0xc5, 0x46, 0xc6, 0x91, 0xc6, 0x46, 0xc6, 0x91, 0xc6, 0x46, 0xc6, 0x91, - 0xc6, 0x46, 0xc6, 0x91, 0xc6, 0x46, 0xc7, 0x91, 0xc7, 0x46, 0xc8, 0x91, - 0xc7, 0x47, 0xc8, 0x91, 0xc7, 0x47, 0xc8, 0x91, 0xc8, 0x47, 0xc8, 0x91, - 0xc8, 0x47, 0xc8, 0x91, 0xc8, 0x47, 0xc9, 0x91, 0xc9, 0x47, 0xc9, 0x91, - 0xc9, 0x47, 0xc9, 0x91, 0xc9, 0x47, 0xc9, 0x91, 0xc9, 0x47, 0xca, 0x91, - 0xca, 0x47, 0xca, 0x91, 0xca, 0x47, 0xca, 0x92, 0xca, 0x48, 0xcb, 0x92, - 0xcb, 0x48, 0xcb, 0x92, 0xcb, 0x48, 0xcb, 0x92, 0xcb, 0x48, 0xcc, 0x92, - 0xcc, 0x48, 0xcc, 0x92, 0xcc, 0x48, 0xcc, 0x92, 0xcc, 0x48, 0xcc, 0x92, - 0xcc, 0x48, 0xcd, 0x92, 0xcd, 0x48, 0xcd, 0x92, 0xcd, 0x48, 0xcd, 0x92, - 0xcd, 0x48, 0xce, 0x92, 0xcd, 0x48, 0xce, 0x93, 0xce, 0x48, 0xce, 0x93, - 0xce, 0x48, 0xce, 0x93, 0xce, 0x48, 0xcf, 0x93, 0xcf, 0x48, 0xcf, 0x93, - 0xcf, 0x48, 0xcf, 0x93, 0xcf, 0x48, 0xd0, 0x93, 0xd0, 0x48, 0xd0, 0x93, - 0xcf, 0x48, 0xd0, 0x93, 0xd0, 0x48, 0xd0, 0x93, 0xcf, 0x48, 0xd1, 0x93, - 0xd0, 0x48, 0xd1, 0x94, 0xd1, 0x48, 0xd1, 0x94, 0xd1, 0x48, 0xd2, 0x94, - 0xd2, 0x48, 0xd2, 0x94, 0xd2, 0x48, 0xd2, 0x94, 0xd2, 0x48, 0xd2, 0x94, - 0xd2, 0x48, 0xd3, 0x94, 0xd2, 0x48, 0xd3, 0x94, 0xd2, 0x48, 0xd3, 0x94, - 0xd2, 0x48, 0xd4, 0x94, 0xd2, 0x48, 0xd4, 0x94, 0xd4, 0x48, 0xd4, 0x94, - 0xd4, 0x48, 0xd4, 0x94, 0xd4, 0x48, 0xd5, 0x94, 0xd5, 0x48, 0xd5, 0x94, - 0xd5, 0x48, 0xd5, 0x94, 0xd5, 0x48, 0xd6, 0x94, 0xd5, 0x48, 0xd6, 0x94, - 0xd5, 0x48, 0xd6, 0x94, 0xd5, 0x48, 0xd6, 0x95, 0xd6, 0x48, 0xd7, 0x95, - 0xd7, 0x48, 0xd7, 0x95, 0xd7, 0x48, 0xd7, 0x95, 0xd7, 0x48, 0xd7, 0x95, - 0xd7, 0x48, 0xd8, 0x95, 0xd7, 0x48, 0xd8, 0x95, 0xd7, 0x48, 0xd8, 0x95, - 0xd7, 0x48, 0xd9, 0x95, 0xd7, 0x48, 0xd9, 0x95, 0xd7, 0x48, 0xd9, 0x95, - 0xd7, 0x48, 0xd9, 0x96, 0xd9, 0x48, 0xda, 0x96, 0xda, 0x48, 0xda, 0x96, - 0xda, 0x48, 0xda, 0x96, 0xda, 0x48, 0xda, 0x96, 0xda, 0x48, 0xdb, 0x96, - 0xda, 0x48, 0xdb, 0x96, 0xda, 0x48, 0xdb, 0x96, 0xda, 0x48, 0xdb, 0x96, - 0xda, 0x48, 0xdc, 0x96, 0xda, 0x48, 0xdc, 0x97, 0xdc, 0x48, 0xdc, 0x97, - 0xdc, 0x48, 0xdd, 0x97, 0xdd, 0x48, 0xdd, 0x97, 0xdc, 0x48, 0xdd, 0x97, - 0xdd, 0x48, 0xdd, 0x97, 0xdc, 0x48, 0xde, 0x97, 0xdd, 0x48, 0xde, 0x97, - 0xdc, 0x48, 0xde, 0x97, 0xdd, 0x48, 0xde, 0x98, 0xde, 0x48, 0xdf, 0x98, - 0xdf, 0x48, 0xdf, 0x98, 0xdf, 0x48, 0xdf, 0x98, 0xdf, 0x48, 0xdf, 0x98, - 0xdf, 0x48, 0xe0, 0x98, 0xdf, 0x48, 0xe0, 0x98, 0xdf, 0x48, 0xe0, 0x98, - 0xdf, 0x48, 0xe1, 0x98, 0xdf, 0x48, 0xe1, 0x98, 0xdf, 0x48, 0xe1, 0x98, - 0xdf, 0x48, 0xe1, 0x99, 0xe1, 0x48, 0xe2, 0x99, 0xe2, 0x48, 0xe2, 0x99, - 0xe1, 0x48, 0xe2, 0x99, 0xe2, 0x48, 0xe2, 0x99, 0xe1, 0x48, 0xe3, 0x99, - 0xe2, 0x48, 0xe3, 0x99, 0xe1, 0x48, 0xe3, 0x99, 0xe2, 0x48, 0xe3, 0x99, - 0xe1, 0x48, 0xe4, 0x99, 0xe2, 0x48, 0xe4, 0x9a, 0xe4, 0x48, 0xe4, 0x9a, - 0xe4, 0x48, 0xe4, 0x9a, 0xe4, 0x48, 0xe5, 0x9a, 0xe4, 0x48, 0xe5, 0x9a, - 0xe4, 0x48, 0xe5, 0x9a, 0xe4, 0x48, 0xe5, 0x9a, 0xe4, 0x48, 0xe6, 0x9a, - 0xe4, 0x48, 0xe6, 0x9a, 0xe4, 0x48, 0xe6, 0x9a, 0xe6, 0x48, 0xe6, 0x9a, - 0xe6, 0x48, 0xe7, 0x9a, 0xe6, 0x48, 0xe7, 0x9a, 0xe6, 0x48, 0xe7, 0x9a, - 0xe6, 0x48, 0xe7, 0x9a, 0xe6, 0x48, 0xe8, 0x9a, 0xe6, 0x48, 0xe8, 0x9a, - 0xe6, 0x48, 0xe8, 0x9a, 0xe6, 0x48, 0xe8, 0x9b, 0xe8, 0x48, 0xe9, 0x9b, - 0xe9, 0x48, 0xe9, 0x9b, 0xe8, 0x48, 0xe9, 0x9b, 0xe9, 0x48, 0xe9, 0x9b, - 0xe8, 0x48, 0xea, 0x9b, 0xe9, 0x48, 0xea, 0x9b, 0xe8, 0x48, 0xea, 0x9b, - 0xe9, 0x48, 0xea, 0x9b, 0xe8, 0x48, 0xeb, 0x9b, 0xe9, 0x48, 0xeb, 0x9c, - 0xeb, 0x48, 0xeb, 0x9b, 0xe9, 0x48, 0xeb, 0x9c, 0xeb, 0x48, 0xec, 0x9c, - 0xeb, 0x48, 0xec, 0x9c, 0xeb, 0x48, 0xec, 0x9c, 0xeb, 0x48, 0xec, 0x9c, - 0xeb, 0x48, 0xec, 0x9c, 0xeb, 0x48, 0xed, 0x9c, 0xeb, 0x48, 0xed, 0x9c, - 0xeb, 0x48, 0xed, 0x9c, 0xeb, 0x48, 0xed, 0x9d, 0xed, 0x48, 0xee, 0x9d, - 0xed, 0x48, 0xee, 0x9d, 0xed, 0x48, 0xee, 0x9d, 0xed, 0x48, 0xee, 0x9d, - 0xed, 0x48, 0xef, 0x9d, 0xed, 0x48, 0xef, 0x9d, 0xed, 0x48, 0xef, 0x9d, - 0xed, 0x48, 0xef, 0x9d, 0xed, 0x48, 0xf0, 0x9d, 0xed, 0x48, 0xf0, 0x9e, - 0xef, 0x48, 0xf0, 0x9e, 0xef, 0x48, 0xf0, 0x9e, 0xef, 0x48, 0xf1, 0x9e, - 0xef, 0x48, 0xf1, 0x9e, 0xef, 0x48, 0xf1, 0x9e, 0xef, 0x48, 0xf1, 0x9e, - 0xef, 0x48, 0xf2, 0x9e, 0xef, 0x48, 0xf2, 0x9e, 0xef, 0x48, 0xf2, 0x9f, - 0xf2, 0x48, 0xf2, 0x9f, 0xf1, 0x48, 0xf2, 0x9f, 0xf2, 0x48, 0xf3, 0x9f, - 0xf1, 0x48, 0xf3, 0x9f, 0xf2, 0x48, 0xf3, 0x9f, 0xf1, 0x48, 0xf3, 0x9f, - 0xf2, 0x48, 0xf4, 0x9f, 0xf1, 0x48, 0xf4, 0x9f, 0xf2, 0x48, 0xf4, 0x9f, - 0xf4, 0x48, 0xf4, 0x9f, 0xf4, 0x48, 0xf5, 0x9f, 0xf4, 0x48, 0xf5, 0x9f, - 0xf4, 0x48, 0xf5, 0x9f, 0xf4, 0x48, 0xf5, 0x9f, 0xf4, 0x48, 0xf5, 0x9f, - 0xf4, 0x48, 0xf6, 0x9f, 0xf4, 0x48, 0xf6, 0x9f, 0xf4, 0x48, 0xf6, 0x9f, - 0xf4, 0x48, 0xf6, 0x9f, 0xf4, 0x48, 0xf7, 0x9f, 0xf4, 0x48, 0xf7, 0xa0, - 0xf6, 0x48, 0xf7, 0xa0, 0xf6, 0x48, 0xf7, 0xa0, 0xf6, 0x48, 0xf8, 0xa0, - 0xf6, 0x48, 0xf8, 0xa0, 0xf6, 0x48, 0xf8, 0xa0, 0xf6, 0x48, 0xf8, 0xa0, - 0xf6, 0x48, 0xf8, 0xa0, 0xf6, 0x48, 0xf9, 0xa0, 0xf6, 0x48, 0xf9, 0xa1, - 0xf8, 0x48, 0xf9, 0xa1, 0xf8, 0x48, 0xf9, 0xa1, 0xf8, 0x48, 0xfa, 0xa1, - 0xf8, 0x48, 0xfa, 0xa1, 0xf8, 0x48, 0xfa, 0xa1, 0xf8, 0x48, 0xfa, 0xa1, - 0xf8, 0x48, 0xfa, 0xa1, 0xf8, 0x48, 0xfb, 0xa1, 0xf8, 0x48, 0xfb, 0xa2, - 0xfa, 0x48, 0xfb, 0xa2, 0xfa, 0x48, 0xfb, 0xa2, 0xfa, 0x48, 0xfc, 0xa2, - 0xfa, 0x48, 0xfc, 0xa2, 0xfa, 0x48, 0xfc, 0xa2, 0xfa, 0x48, 0xfc, 0xa2, - 0xfa, 0x48, 0xfc, 0xa2, 0xfa, 0x48, 0xfd, 0xa2, 0xfa, 0x48, 0xfd, 0xa2, - 0xfa, 0x48, 0xfd, 0xa2, 0xfa, 0x48, 0xfd, 0xa2, 0xfa, 0x48, 0xfe, 0xa2, - 0xfa, 0x48, 0xfe, 0xa2, 0xfa, 0x48, 0xfe, 0xa3, 0xfb, 0x48, 0xfe, 0xa3, - 0xfc, 0x48, 0xfe, 0xa3, 0xfb, 0x48, 0xff, 0xa3, 0xfc, 0x48, 0xff, 0xa3, - 0xfb, 0x48, 0x03, 0x9b, 0x98, 0x48, 0x0a, 0x9d, 0x98, 0x48, 0x0f, 0x9b, - 0x98, 0x48, 0x14, 0x9d, 0x98, 0x48, 0x17, 0x9b, 0x98, 0x48, 0x1b, 0x9d, - 0x98, 0x48, 0x1e, 0x9b, 0x98, 0x48, 0x20, 0x9d, 0x98, 0x48, 0x23, 0x9b, - 0x98, 0x48, 0x25, 0x9d, 0x98, 0x48, 0x27, 0x9b, 0x98, 0x48, 0x29, 0x9b, - 0x98, 0x48, 0x2b, 0x9b, 0x98, 0x48, 0x2d, 0x9b, 0x98, 0x48, 0x2f, 0x9b, - 0x98, 0x48, 0x31, 0x9b, 0x98, 0x48, 0x32, 0x9b, 0x98, 0x48, 0x34, 0x9b, - 0x98, 0x48, 0x35, 0x9b, 0x98, 0x48, 0x37, 0x9b, 0x98, 0x48, 0x38, 0x9b, - 0x98, 0x48, 0x3a, 0x9b, 0x98, 0x48, 0x3b, 0x9b, 0x98, 0x48, 0x3c, 0x9b, - 0x98, 0x48, 0x3e, 0x9b, 0x98, 0x48, 0x3f, 0x9b, 0x98, 0x48, 0x40, 0x9b, - 0x98, 0x48, 0x42, 0x9b, 0x98, 0x48, 0x43, 0x9b, 0x98, 0x48, 0x44, 0x9b, - 0x98, 0x48, 0x45, 0x9b, 0x98, 0x48, 0x46, 0x98, 0x98, 0x48, 0x47, 0x9b, - 0x98, 0x48, 0x48, 0x98, 0x98, 0x48, 0x49, 0x9b, 0x98, 0x48, 0x4a, 0x98, - 0x98, 0x48, 0x4b, 0x9b, 0x98, 0x48, 0x4c, 0x98, 0x98, 0x48, 0x4d, 0x9b, - 0x98, 0x48, 0x4e, 0x98, 0x98, 0x48, 0x4f, 0x9b, 0x98, 0x48, 0x50, 0x98, - 0x98, 0x48, 0x51, 0x9b, 0x98, 0x48, 0x52, 0x98, 0x98, 0x48, 0x53, 0x9b, - 0x98, 0x48, 0x54, 0x98, 0x98, 0x48, 0x55, 0x9b, 0x98, 0x48, 0x56, 0x98, - 0x98, 0x48, 0x57, 0x9b, 0x98, 0x48, 0x58, 0x98, 0x98, 0x48, 0x58, 0x9b, - 0x98, 0x48, 0x59, 0x98, 0x98, 0x48, 0x5a, 0x9b, 0x98, 0x48, 0x5b, 0x98, - 0x98, 0x48, 0x5c, 0x9b, 0x98, 0x48, 0x5d, 0x98, 0x98, 0x48, 0x5d, 0x9b, - 0x98, 0x48, 0x5e, 0x98, 0x98, 0x48, 0x5f, 0x9b, 0x98, 0x48, 0x60, 0x98, - 0x98, 0x48, 0x60, 0x9b, 0x98, 0x48, 0x61, 0x98, 0x98, 0x48, 0x62, 0x9b, - 0x98, 0x48, 0x63, 0x98, 0x98, 0x48, 0x63, 0x9b, 0x98, 0x48, 0x64, 0x98, - 0x98, 0x48, 0x65, 0x96, 0x99, 0x48, 0x66, 0x98, 0x98, 0x48, 0x66, 0x96, - 0x99, 0x48, 0x67, 0x98, 0x98, 0x48, 0x68, 0x96, 0x99, 0x48, 0x68, 0x98, - 0x98, 0x48, 0x69, 0x96, 0x99, 0x48, 0x6a, 0x98, 0x98, 0x48, 0x6a, 0x96, - 0x99, 0x48, 0x6b, 0x98, 0x98, 0x48, 0x6c, 0x96, 0x99, 0x48, 0x6c, 0x98, - 0x98, 0x48, 0x6d, 0x96, 0x99, 0x48, 0x6e, 0x98, 0x98, 0x48, 0x6e, 0x96, - 0x99, 0x48, 0x6f, 0x98, 0x98, 0x48, 0x70, 0x96, 0x99, 0x48, 0x70, 0x98, - 0x98, 0x48, 0x71, 0x96, 0x99, 0x48, 0x72, 0x98, 0x98, 0x48, 0x72, 0x96, - 0x99, 0x48, 0x73, 0x98, 0x98, 0x48, 0x73, 0x96, 0x99, 0x48, 0x74, 0x98, - 0x98, 0x48, 0x75, 0x96, 0x99, 0x48, 0x75, 0x98, 0x98, 0x48, 0x76, 0x96, - 0x99, 0x48, 0x76, 0x98, 0x98, 0x48, 0x77, 0x96, 0x99, 0x48, 0x78, 0x98, - 0x98, 0x48, 0x78, 0x96, 0x99, 0x48, 0x79, 0x98, 0x98, 0x48, 0x79, 0x96, - 0x99, 0x48, 0x7a, 0x92, 0x99, 0x48, 0x7a, 0x96, 0x99, 0x48, 0x7b, 0x92, - 0x99, 0x48, 0x7c, 0x96, 0x99, 0x48, 0x7c, 0x92, 0x99, 0x48, 0x7d, 0x96, - 0x99, 0x48, 0x7d, 0x92, 0x99, 0x48, 0x7e, 0x96, 0x99, 0x48, 0x7e, 0x92, - 0x99, 0x48, 0x7f, 0x96, 0x99, 0x48, 0x7f, 0x92, 0x99, 0x48, 0x80, 0x96, - 0x99, 0x48, 0x81, 0x92, 0x99, 0x48, 0x81, 0x96, 0x99, 0x48, 0x82, 0x92, - 0x99, 0x48, 0x82, 0x96, 0x99, 0x48, 0x83, 0x92, 0x99, 0x48, 0x83, 0x96, - 0x99, 0x48, 0x84, 0x92, 0x99, 0x48, 0x84, 0x96, 0x99, 0x48, 0x85, 0x92, - 0x99, 0x48, 0x85, 0x96, 0x99, 0x48, 0x86, 0x92, 0x99, 0x48, 0x86, 0x96, - 0x99, 0x48, 0x87, 0x92, 0x99, 0x48, 0x87, 0x96, 0x99, 0x48, 0x88, 0x92, - 0x99, 0x48, 0x88, 0x96, 0x99, 0x48, 0x89, 0x92, 0x99, 0x48, 0x89, 0x96, - 0x99, 0x48, 0x8a, 0x92, 0x99, 0x48, 0x8a, 0x96, 0x99, 0x48, 0x8b, 0x92, - 0x99, 0x48, 0x8b, 0x96, 0x99, 0x48, 0x8c, 0x92, 0x99, 0x48, 0x8c, 0x96, - 0x99, 0x48, 0x8d, 0x92, 0x99, 0x48, 0x8d, 0x96, 0x99, 0x48, 0x8e, 0x92, - 0x99, 0x48, 0x8e, 0x96, 0x99, 0x48, 0x8e, 0x92, 0x99, 0x48, 0x8f, 0x91, - 0x9a, 0x48, 0x8f, 0x92, 0x99, 0x48, 0x90, 0x91, 0x9a, 0x48, 0x90, 0x92, - 0x99, 0x48, 0x91, 0x91, 0x9a, 0x48, 0x91, 0x92, 0x99, 0x48, 0x92, 0x91, - 0x9a, 0x48, 0x92, 0x92, 0x99, 0x48, 0x93, 0x91, 0x9a, 0x48, 0x93, 0x92, - 0x99, 0x48, 0x94, 0x91, 0x9a, 0x48, 0x94, 0x92, 0x99, 0x48, 0x94, 0x91, - 0x9a, 0x48, 0x95, 0x92, 0x99, 0x48, 0x95, 0x91, 0x9a, 0x48, 0x96, 0x92, - 0x99, 0x48, 0x96, 0x91, 0x9a, 0x48, 0x97, 0x92, 0x99, 0x48, 0x97, 0x91, - 0x9a, 0x48, 0x98, 0x92, 0x99, 0x48, 0x98, 0x91, 0x9a, 0x48, 0x98, 0x92, - 0x99, 0x48, 0x99, 0x91, 0x9a, 0x48, 0x99, 0x92, 0x99, 0x48, 0x99, 0x91, - 0x9a, 0x48, 0x99, 0x91, 0x9a, 0x48, 0x99, 0x91, 0x9a, 0x48, 0x99, 0x91, - 0x9b, 0x48, 0x99, 0x91, 0x9b, 0x48, 0x9d, 0x91, 0x9c, 0x48, 0x9e, 0x91, - 0x9c, 0x48, 0x9d, 0x91, 0x9d, 0x48, 0x9e, 0x91, 0x9d, 0x48, 0x9d, 0x90, - 0x9d, 0x48, 0x9e, 0x91, 0x9d, 0x48, 0x9e, 0x90, 0x9d, 0x48, 0x9f, 0x91, - 0x9d, 0x48, 0x9f, 0x90, 0x9d, 0x48, 0x9f, 0x91, 0x9d, 0x48, 0xa0, 0x90, - 0x9d, 0x48, 0xa0, 0x8e, 0xa0, 0x48, 0xa1, 0x8e, 0xa1, 0x48, 0xa1, 0x8e, - 0xa1, 0x48, 0xa1, 0x8e, 0xa1, 0x48, 0xa2, 0x8e, 0xa2, 0x48, 0xa2, 0x8e, - 0xa4, 0x48, 0xa3, 0x8e, 0xa4, 0x48, 0xa3, 0x8e, 0xa4, 0x48, 0xa3, 0x8e, - 0xa4, 0x48, 0xa4, 0x8e, 0xa4, 0x48, 0xa4, 0x8e, 0xa4, 0x48, 0xa5, 0x8e, - 0xa5, 0x48, 0xa5, 0x8e, 0xa5, 0x48, 0xa5, 0x8e, 0xa5, 0x48, 0xa6, 0x8e, - 0xa6, 0x48, 0xa6, 0x8e, 0xa6, 0x48, 0xa6, 0x8f, 0xa8, 0x48, 0xa7, 0x8f, - 0xa8, 0x48, 0xa7, 0x8f, 0xa8, 0x48, 0xa8, 0x8f, 0xa8, 0x48, 0xa8, 0x8f, - 0xa8, 0x48, 0xa8, 0x8f, 0xa8, 0x48, 0xa9, 0x8f, 0xa9, 0x48, 0xa9, 0x8f, - 0xa9, 0x48, 0xaa, 0x8f, 0xaa, 0x48, 0xaa, 0x8f, 0xaa, 0x48, 0xaa, 0x8f, - 0xaa, 0x48, 0xab, 0x8f, 0xab, 0x48, 0xab, 0x8f, 0xab, 0x48, 0xab, 0x8f, - 0xab, 0x48, 0xac, 0x90, 0xac, 0x48, 0xac, 0x90, 0xad, 0x48, 0xac, 0x90, - 0xac, 0x48, 0xad, 0x90, 0xad, 0x48, 0xad, 0x90, 0xad, 0x48, 0xae, 0x90, - 0xae, 0x48, 0xae, 0x90, 0xae, 0x48, 0xae, 0x90, 0xae, 0x48, 0xaf, 0x90, - 0xaf, 0x48, 0xaf, 0x90, 0xaf, 0x48, 0xaf, 0x90, 0xaf, 0x48, 0xb0, 0x90, - 0xb0, 0x48, 0xb0, 0x90, 0xb0, 0x48, 0xb0, 0x91, 0xb0, 0x49, 0xb1, 0x91, - 0xb1, 0x49, 0xb1, 0x91, 0xb1, 0x49, 0xb2, 0x91, 0xb2, 0x49, 0xb2, 0x91, - 0xb2, 0x49, 0xb2, 0x91, 0xb2, 0x49, 0xb3, 0x91, 0xb3, 0x49, 0xb3, 0x91, - 0xb3, 0x49, 0xb3, 0x91, 0xb3, 0x49, 0xb4, 0x91, 0xb4, 0x49, 0xb4, 0x91, - 0xb4, 0x49, 0xb4, 0x91, 0xb4, 0x49, 0xb4, 0x91, 0xb5, 0x49, 0xb5, 0x91, - 0xb5, 0x4a, 0xb5, 0x91, 0xb5, 0x4a, 0xb6, 0x91, 0xb6, 0x4a, 0xb6, 0x91, - 0xb6, 0x4a, 0xb6, 0x91, 0xb6, 0x4a, 0xb7, 0x91, 0xb7, 0x4a, 0xb7, 0x91, - 0xb7, 0x4a, 0xb7, 0x91, 0xb7, 0x4a, 0xb8, 0x91, 0xb8, 0x4a, 0xb7, 0x91, - 0xb8, 0x4a, 0xb8, 0x91, 0xb8, 0x4a, 0xb7, 0x91, 0xb9, 0x4a, 0xb8, 0x91, - 0xb9, 0x4a, 0xb9, 0x91, 0xb9, 0x4b, 0xba, 0x91, 0xba, 0x4b, 0xba, 0x91, - 0xba, 0x4b, 0xba, 0x91, 0xba, 0x4b, 0xbb, 0x91, 0xbb, 0x4b, 0xbb, 0x91, - 0xbb, 0x4b, 0xbb, 0x91, 0xbb, 0x4b, 0xbb, 0x91, 0xbc, 0x4b, 0xbb, 0x91, - 0xbc, 0x4b, 0xbb, 0x91, 0xbc, 0x4b, 0xbb, 0x91, 0xbd, 0x4b, 0xbd, 0x91, - 0xbd, 0x4c, 0xbd, 0x91, 0xbd, 0x4c, 0xbe, 0x91, 0xbe, 0x4c, 0xbe, 0x91, - 0xbe, 0x4c, 0xbe, 0x91, 0xbe, 0x4c, 0xbf, 0x91, 0xbf, 0x4c, 0xbf, 0x91, - 0xbf, 0x4c, 0xbf, 0x91, 0xbf, 0x4c, 0xbf, 0x91, 0xc0, 0x4c, 0xc1, 0x91, - 0xc0, 0x44, 0xc1, 0x91, 0xc0, 0x44, 0xc1, 0x91, 0xc1, 0x44, 0xc1, 0x91, - 0xc1, 0x44, 0xc1, 0x91, 0xc1, 0x44, 0xc1, 0x91, 0xc1, 0x44, 0xc2, 0x91, - 0xc2, 0x44, 0xc3, 0x91, 0xc2, 0x45, 0xc4, 0x91, 0xc2, 0x45, 0xc3, 0x91, - 0xc3, 0x45, 0xc4, 0x91, 0xc3, 0x45, 0xc3, 0x91, 0xc3, 0x45, 0xc4, 0x91, - 0xc4, 0x45, 0xc4, 0x91, 0xc4, 0x45, 0xc4, 0x91, 0xc4, 0x45, 0xc5, 0x91, - 0xc5, 0x45, 0xc6, 0x91, 0xc5, 0x46, 0xc6, 0x91, 0xc5, 0x46, 0xc6, 0x91, - 0xc6, 0x46, 0xc6, 0x91, 0xc6, 0x46, 0xc6, 0x91, 0xc6, 0x46, 0xc6, 0x91, - 0xc6, 0x46, 0xc7, 0x91, 0xc7, 0x46, 0xc7, 0x91, 0xc7, 0x46, 0xc7, 0x91, - 0xc7, 0x46, 0xc8, 0x91, 0xc8, 0x46, 0xc8, 0x91, 0xc8, 0x46, 0xc8, 0x91, - 0xc8, 0x46, 0xc9, 0x91, 0xc9, 0x47, 0xc9, 0x91, 0xc9, 0x47, 0xc9, 0x91, - 0xc9, 0x47, 0xc9, 0x91, 0xc9, 0x47, 0xca, 0x91, 0xca, 0x47, 0xca, 0x91, - 0xca, 0x47, 0xca, 0x91, 0xca, 0x47, 0xcb, 0x91, 0xcb, 0x47, 0xcb, 0x91, - 0xcb, 0x47, 0xcb, 0x91, 0xcb, 0x47, 0xcc, 0x91, 0xcc, 0x47, 0xcc, 0x92, - 0xcc, 0x48, 0xcc, 0x92, 0xcc, 0x48, 0xcc, 0x92, 0xcc, 0x48, 0xcd, 0x92, - 0xcd, 0x48, 0xcd, 0x92, 0xcd, 0x48, 0xcd, 0x92, 0xcd, 0x48, 0xce, 0x92, - 0xce, 0x48, 0xce, 0x92, 0xce, 0x48, 0xce, 0x92, 0xce, 0x48, 0xce, 0x92, - 0xce, 0x48, 0xcf, 0x92, 0xce, 0x48, 0xcf, 0x92, 0xce, 0x48, 0xcf, 0x93, - 0xcf, 0x48, 0xd0, 0x93, 0xd0, 0x48, 0xd0, 0x93, 0xd0, 0x48, 0xd0, 0x93, - 0xd0, 0x48, 0xd0, 0x93, 0xd0, 0x48, 0xd1, 0x93, 0xd1, 0x48, 0xd1, 0x93, - 0xd1, 0x48, 0xd1, 0x93, 0xd1, 0x48, 0xd2, 0x93, 0xd1, 0x48, 0xd2, 0x93, - 0xd1, 0x48, 0xd2, 0x93, 0xd1, 0x48, 0xd2, 0x94, 0xd2, 0x48, 0xd3, 0x94, - 0xd3, 0x48, 0xd3, 0x94, 0xd3, 0x48, 0xd3, 0x94, 0xd3, 0x48, 0xd4, 0x94, - 0xd4, 0x48, 0xd4, 0x94, 0xd3, 0x48, 0xd4, 0x94, 0xd4, 0x48, 0xd4, 0x94, - 0xd3, 0x48, 0xd5, 0x94, 0xd4, 0x48, 0xd5, 0x95, 0xd5, 0x48, 0xd5, 0x95, - 0xd5, 0x48, 0xd6, 0x95, 0xd6, 0x48, 0xd6, 0x95, 0xd6, 0x48, 0xd6, 0x95, - 0xd6, 0x48, 0xd6, 0x95, 0xd6, 0x48, 0xd7, 0x95, 0xd6, 0x48, 0xd7, 0x95, - 0xd6, 0x48, 0xd7, 0x95, 0xd6, 0x48, 0xd7, 0x95, 0xd6, 0x48, 0xd8, 0x96, - 0xd8, 0x48, 0xd8, 0x96, 0xd8, 0x48, 0xd8, 0x96, 0xd8, 0x48, 0xd9, 0x96, - 0xd9, 0x48, 0xd9, 0x96, 0xd9, 0x48, 0xd9, 0x96, 0xd9, 0x48, 0xd9, 0x96, - 0xd9, 0x48, 0xda, 0x96, 0xd9, 0x48, 0xda, 0x96, 0xd9, 0x48, 0xda, 0x96, - 0xd9, 0x48, 0xda, 0x96, 0xd9, 0x48, 0xdb, 0x97, 0xdb, 0x48, 0xdb, 0x97, - 0xdb, 0x48, 0xdb, 0x97, 0xdb, 0x48, 0xdb, 0x97, 0xdb, 0x48, 0xdc, 0x97, - 0xdb, 0x48, 0xdc, 0x97, 0xdb, 0x48, 0xdc, 0x97, 0xdb, 0x48, 0xdd, 0x97, - 0xdb, 0x48, 0xdd, 0x97, 0xdb, 0x48, 0xdd, 0x98, 0xdd, 0x48, 0xdd, 0x98, - 0xdd, 0x48, 0xde, 0x98, 0xde, 0x48, 0xde, 0x98, 0xde, 0x48, 0xde, 0x98, - 0xde, 0x48, 0xde, 0x98, 0xde, 0x48, 0xdf, 0x98, 0xde, 0x48, 0xdf, 0x98, - 0xde, 0x48, 0xdf, 0x98, 0xde, 0x48, 0xdf, 0x98, 0xde, 0x48, 0xe0, 0x98, - 0xe0, 0x48, 0xe0, 0x98, 0xe0, 0x48, 0xe0, 0x98, 0xe0, 0x48, 0xe1, 0x98, - 0xe0, 0x48, 0xe1, 0x98, 0xe0, 0x48, 0xe1, 0x98, 0xe0, 0x48, 0xe1, 0x98, - 0xe0, 0x48, 0xe2, 0x98, 0xe0, 0x48, 0xe2, 0x98, 0xe0, 0x48, 0xe2, 0x98, - 0xe0, 0x48, 0xe2, 0x98, 0xe0, 0x48, 0xe3, 0x99, 0xe3, 0x48, 0xe3, 0x99, - 0xe2, 0x48, 0xe3, 0x99, 0xe3, 0x48, 0xe3, 0x99, 0xe2, 0x48, 0xe4, 0x99, - 0xe3, 0x48, 0xe4, 0x99, 0xe2, 0x48, 0xe4, 0x99, 0xe3, 0x48, 0xe4, 0x99, - 0xe2, 0x48, 0xe5, 0x99, 0xe3, 0x48, 0xe5, 0x9a, 0xe5, 0x48, 0xe5, 0x9a, - 0xe5, 0x48, 0xe5, 0x9a, 0xe5, 0x48, 0xe6, 0x9a, 0xe5, 0x48, 0xe6, 0x9a, - 0xe5, 0x48, 0xe6, 0x9a, 0xe5, 0x48, 0xe6, 0x9a, 0xe5, 0x48, 0xe7, 0x9a, - 0xe5, 0x48, 0xe7, 0x9a, 0xe5, 0x48, 0xe7, 0x9a, 0xe5, 0x48, 0xe7, 0x9b, - 0xe7, 0x48, 0xe8, 0x9b, 0xe7, 0x48, 0xe8, 0x9b, 0xe7, 0x48, 0xe8, 0x9b, - 0xe7, 0x48, 0xe8, 0x9b, 0xe7, 0x48, 0xe9, 0x9b, 0xe7, 0x48, 0xe9, 0x9b, - 0xe7, 0x48, 0xe9, 0x9b, 0xe7, 0x48, 0xe9, 0x9b, 0xe7, 0x48, 0xea, 0x9c, - 0xea, 0x48, 0xea, 0x9c, 0xea, 0x48, 0xea, 0x9c, 0xea, 0x48, 0xea, 0x9c, - 0xea, 0x48, 0xeb, 0x9c, 0xea, 0x48, 0xeb, 0x9c, 0xea, 0x48, 0xeb, 0x9c, - 0xea, 0x48, 0xeb, 0x9c, 0xea, 0x48, 0xec, 0x9c, 0xea, 0x48, 0xec, 0x9c, - 0xea, 0x48, 0xec, 0x9d, 0xec, 0x48, 0xec, 0x9c, 0xea, 0x48, 0xec, 0x9d, - 0xec, 0x48, 0xed, 0x9d, 0xec, 0x48, 0xed, 0x9d, 0xec, 0x48, 0xed, 0x9d, - 0xec, 0x48, 0xed, 0x9d, 0xec, 0x48, 0xee, 0x9d, 0xec, 0x48, 0xee, 0x9d, - 0xec, 0x48, 0xee, 0x9d, 0xec, 0x48, 0xee, 0x9d, 0xec, 0x48, 0xef, 0x9d, - 0xee, 0x48, 0xef, 0x9d, 0xee, 0x48, 0xef, 0x9d, 0xee, 0x48, 0xef, 0x9d, - 0xee, 0x48, 0xf0, 0x9d, 0xee, 0x48, 0xf0, 0x9d, 0xee, 0x48, 0xf0, 0x9d, - 0xee, 0x48, 0xf0, 0x9d, 0xee, 0x48, 0xf1, 0x9d, 0xee, 0x48, 0xf1, 0x9e, - 0xf0, 0x48, 0xf1, 0x9e, 0xf1, 0x48, 0xf1, 0x9e, 0xf0, 0x48, 0xf2, 0x9e, - 0xf1, 0x48, 0xf2, 0x9e, 0xf0, 0x48, 0xf2, 0x9e, 0xf1, 0x48, 0xf2, 0x9e, - 0xf0, 0x48, 0xf2, 0x9e, 0xf1, 0x48, 0xf3, 0x9e, 0xf0, 0x48, 0xf3, 0x9e, - 0xf1, 0x48, 0xf3, 0x9f, 0xf3, 0x48, 0xf3, 0x9f, 0xf2, 0x48, 0xf4, 0x9f, - 0xf3, 0x48, 0xf4, 0x9f, 0xf2, 0x48, 0xf4, 0x9f, 0xf3, 0x48, 0xf4, 0x9f, - 0xf2, 0x48, 0xf5, 0x9f, 0xf3, 0x48, 0xf5, 0x9f, 0xf2, 0x48, 0xf5, 0x9f, - 0xf3, 0x48, 0xf5, 0xa0, 0xf5, 0x48, 0xf5, 0x9f, 0xf3, 0x48, 0xf6, 0xa0, - 0xf5, 0x48, 0xf6, 0xa0, 0xf5, 0x48, 0xf6, 0xa0, 0xf5, 0x48, 0xf6, 0xa0, - 0xf5, 0x48, 0xf7, 0xa0, 0xf5, 0x48, 0xf7, 0xa0, 0xf5, 0x48, 0xf7, 0xa0, - 0xf5, 0x48, 0xf7, 0xa0, 0xf5, 0x48, 0xf8, 0xa0, 0xf5, 0x48, 0xf8, 0xa1, - 0xf7, 0x48, 0xf8, 0xa1, 0xf7, 0x48, 0xf8, 0xa1, 0xf7, 0x48, 0xf8, 0xa1, - 0xf7, 0x48, 0xf9, 0xa1, 0xf7, 0x48, 0xf9, 0xa1, 0xf7, 0x48, 0xf9, 0xa1, - 0xf7, 0x48, 0xf9, 0xa1, 0xf7, 0x48, 0xfa, 0xa1, 0xf7, 0x48, 0xfa, 0xa1, - 0xf7, 0x48, 0xfa, 0xa1, 0xf9, 0x48, 0xfa, 0xa1, 0xf9, 0x48, 0xfa, 0xa1, - 0xf9, 0x48, 0xfb, 0xa1, 0xf9, 0x48, 0xfb, 0xa1, 0xf9, 0x48, 0xfb, 0xa1, - 0xf9, 0x48, 0xfb, 0xa1, 0xf9, 0x48, 0xfc, 0xa1, 0xf9, 0x48, 0xfc, 0xa1, - 0xf9, 0x48, 0xfc, 0xa2, 0xfb, 0x48, 0xfc, 0xa2, 0xfb, 0x48, 0xfc, 0xa2, - 0xfb, 0x48, 0xfd, 0xa2, 0xfb, 0x48, 0xfd, 0xa2, 0xfb, 0x48, 0xfd, 0xa2, - 0xfb, 0x48, 0xfd, 0xa2, 0xfb, 0x48, 0xfe, 0xa2, 0xfb, 0x48, 0xfe, 0xa2, - 0xfb, 0x48, 0xfe, 0xa2, 0xfb, 0x48, 0xfe, 0xa2, 0xfb, 0x48, 0xfe, 0xa2, - 0xfb, 0x48, 0xff, 0xa2, 0xfb, 0x48, 0xff, 0xa2, 0xfb, 0x48, 0x03, 0x9b, - 0x98, 0x49, 0x0a, 0x9e, 0x98, 0x49, 0x0f, 0x9b, 0x98, 0x49, 0x14, 0x9e, - 0x98, 0x49, 0x17, 0x9b, 0x98, 0x49, 0x1b, 0x9e, 0x98, 0x49, 0x1e, 0x9b, - 0x98, 0x49, 0x20, 0x9e, 0x98, 0x49, 0x23, 0x9b, 0x98, 0x49, 0x25, 0x9e, - 0x98, 0x49, 0x27, 0x9b, 0x98, 0x49, 0x29, 0x9b, 0x98, 0x49, 0x2b, 0x9b, - 0x98, 0x49, 0x2d, 0x9b, 0x98, 0x49, 0x2f, 0x9b, 0x98, 0x49, 0x31, 0x9b, - 0x98, 0x49, 0x32, 0x9b, 0x98, 0x49, 0x34, 0x98, 0x98, 0x49, 0x35, 0x9b, - 0x98, 0x49, 0x37, 0x98, 0x98, 0x49, 0x38, 0x9b, 0x98, 0x49, 0x3a, 0x98, - 0x98, 0x49, 0x3b, 0x9b, 0x98, 0x49, 0x3c, 0x98, 0x98, 0x49, 0x3e, 0x9b, - 0x98, 0x49, 0x3f, 0x98, 0x98, 0x49, 0x40, 0x9b, 0x98, 0x49, 0x42, 0x98, - 0x98, 0x49, 0x43, 0x9b, 0x98, 0x49, 0x44, 0x98, 0x98, 0x49, 0x45, 0x9b, - 0x98, 0x49, 0x46, 0x98, 0x98, 0x49, 0x47, 0x9b, 0x98, 0x49, 0x48, 0x98, - 0x98, 0x49, 0x49, 0x9b, 0x98, 0x49, 0x4a, 0x98, 0x98, 0x49, 0x4b, 0x9b, - 0x98, 0x49, 0x4c, 0x98, 0x98, 0x49, 0x4d, 0x9b, 0x98, 0x49, 0x4e, 0x98, - 0x98, 0x49, 0x4f, 0x9b, 0x98, 0x49, 0x50, 0x98, 0x98, 0x49, 0x51, 0x9b, - 0x98, 0x49, 0x52, 0x98, 0x98, 0x49, 0x53, 0x9b, 0x98, 0x49, 0x54, 0x98, - 0x98, 0x49, 0x55, 0x9b, 0x98, 0x49, 0x56, 0x98, 0x98, 0x49, 0x57, 0x9b, - 0x98, 0x49, 0x58, 0x98, 0x98, 0x49, 0x58, 0x9b, 0x98, 0x49, 0x59, 0x98, - 0x98, 0x49, 0x5a, 0x9b, 0x98, 0x49, 0x5b, 0x98, 0x98, 0x49, 0x5c, 0x9b, - 0x98, 0x49, 0x5d, 0x98, 0x98, 0x49, 0x5d, 0x9b, 0x98, 0x49, 0x5e, 0x98, - 0x98, 0x49, 0x5f, 0x95, 0x99, 0x49, 0x60, 0x98, 0x98, 0x49, 0x60, 0x95, - 0x99, 0x49, 0x61, 0x98, 0x98, 0x49, 0x62, 0x95, 0x99, 0x49, 0x63, 0x98, - 0x98, 0x49, 0x63, 0x95, 0x99, 0x49, 0x64, 0x98, 0x98, 0x49, 0x65, 0x95, - 0x99, 0x49, 0x66, 0x98, 0x98, 0x49, 0x66, 0x95, 0x99, 0x49, 0x67, 0x98, - 0x98, 0x49, 0x68, 0x95, 0x99, 0x49, 0x68, 0x98, 0x98, 0x49, 0x69, 0x95, - 0x99, 0x49, 0x6a, 0x98, 0x98, 0x49, 0x6a, 0x95, 0x99, 0x49, 0x6b, 0x98, - 0x98, 0x49, 0x6c, 0x95, 0x99, 0x49, 0x6c, 0x98, 0x98, 0x49, 0x6d, 0x95, - 0x99, 0x49, 0x6e, 0x98, 0x98, 0x49, 0x6e, 0x95, 0x99, 0x49, 0x6f, 0x98, - 0x98, 0x49, 0x70, 0x95, 0x99, 0x49, 0x70, 0x98, 0x98, 0x49, 0x71, 0x95, - 0x99, 0x49, 0x72, 0x98, 0x98, 0x49, 0x72, 0x95, 0x99, 0x49, 0x73, 0x98, - 0x98, 0x49, 0x73, 0x95, 0x99, 0x49, 0x74, 0x98, 0x98, 0x49, 0x75, 0x95, - 0x99, 0x49, 0x75, 0x98, 0x98, 0x49, 0x76, 0x95, 0x99, 0x49, 0x76, 0x98, - 0x98, 0x49, 0x77, 0x95, 0x99, 0x49, 0x78, 0x98, 0x98, 0x49, 0x78, 0x95, - 0x99, 0x49, 0x79, 0x98, 0x98, 0x49, 0x79, 0x95, 0x99, 0x49, 0x7a, 0x98, - 0x98, 0x49, 0x7a, 0x95, 0x99, 0x49, 0x7b, 0x98, 0x98, 0x49, 0x7c, 0x95, - 0x99, 0x49, 0x7c, 0x98, 0x98, 0x49, 0x7d, 0x95, 0x99, 0x49, 0x7d, 0x98, - 0x98, 0x49, 0x7e, 0x95, 0x99, 0x49, 0x7e, 0x98, 0x98, 0x49, 0x7f, 0x95, - 0x99, 0x49, 0x7f, 0x98, 0x98, 0x49, 0x80, 0x95, 0x99, 0x49, 0x81, 0x98, - 0x98, 0x49, 0x81, 0x95, 0x99, 0x49, 0x82, 0x98, 0x98, 0x49, 0x82, 0x95, - 0x99, 0x49, 0x83, 0x93, 0x99, 0x49, 0x83, 0x95, 0x99, 0x49, 0x84, 0x93, - 0x99, 0x49, 0x84, 0x95, 0x99, 0x49, 0x85, 0x93, 0x99, 0x49, 0x85, 0x95, - 0x99, 0x49, 0x86, 0x93, 0x99, 0x49, 0x86, 0x95, 0x99, 0x49, 0x87, 0x93, - 0x99, 0x49, 0x87, 0x95, 0x99, 0x49, 0x88, 0x93, 0x99, 0x49, 0x88, 0x95, - 0x99, 0x49, 0x89, 0x93, 0x99, 0x49, 0x89, 0x95, 0x99, 0x49, 0x8a, 0x93, - 0x99, 0x49, 0x8a, 0x95, 0x99, 0x49, 0x8b, 0x93, 0x99, 0x49, 0x8b, 0x95, - 0x99, 0x49, 0x8c, 0x93, 0x99, 0x49, 0x8c, 0x95, 0x99, 0x49, 0x8d, 0x93, - 0x99, 0x49, 0x8d, 0x95, 0x99, 0x49, 0x8e, 0x93, 0x99, 0x49, 0x8e, 0x95, - 0x99, 0x49, 0x8e, 0x93, 0x99, 0x49, 0x8f, 0x95, 0x99, 0x49, 0x8f, 0x93, - 0x99, 0x49, 0x90, 0x95, 0x99, 0x49, 0x90, 0x93, 0x99, 0x49, 0x91, 0x95, - 0x99, 0x49, 0x91, 0x93, 0x99, 0x49, 0x92, 0x95, 0x99, 0x49, 0x92, 0x93, - 0x99, 0x49, 0x93, 0x92, 0x9a, 0x49, 0x93, 0x93, 0x99, 0x49, 0x94, 0x92, - 0x9a, 0x49, 0x94, 0x93, 0x99, 0x49, 0x94, 0x92, 0x9a, 0x49, 0x95, 0x93, - 0x99, 0x49, 0x95, 0x92, 0x9a, 0x49, 0x96, 0x93, 0x99, 0x49, 0x96, 0x92, - 0x9a, 0x49, 0x97, 0x93, 0x99, 0x49, 0x97, 0x92, 0x9a, 0x49, 0x98, 0x93, - 0x99, 0x49, 0x98, 0x92, 0x9a, 0x49, 0x98, 0x93, 0x99, 0x49, 0x99, 0x92, - 0x9a, 0x49, 0x99, 0x93, 0x99, 0x49, 0x99, 0x92, 0x9a, 0x49, 0x99, 0x92, - 0x9a, 0x49, 0x99, 0x92, 0x9a, 0x49, 0x99, 0x92, 0x9b, 0x49, 0x9d, 0x92, - 0x9b, 0x4b, 0x9d, 0x92, 0x9c, 0x49, 0x9e, 0x92, 0x9c, 0x49, 0x9d, 0x92, - 0x9d, 0x49, 0x9e, 0x92, 0x9d, 0x49, 0x9d, 0x91, 0x9d, 0x49, 0x9e, 0x92, - 0x9d, 0x49, 0x9e, 0x91, 0x9d, 0x49, 0x9f, 0x92, 0x9d, 0x49, 0x9f, 0x91, - 0x9d, 0x49, 0x9f, 0x92, 0x9d, 0x49, 0xa0, 0x91, 0x9d, 0x49, 0xa0, 0x92, - 0x9d, 0x49, 0xa1, 0x91, 0x9d, 0x49, 0xa1, 0x8e, 0xa2, 0x49, 0xa1, 0x8e, - 0xa2, 0x49, 0xa2, 0x8e, 0xa2, 0x49, 0xa2, 0x8e, 0xa2, 0x49, 0xa3, 0x8e, - 0xa3, 0x49, 0xa3, 0x8e, 0xa3, 0x49, 0xa3, 0x8e, 0xa3, 0x49, 0xa4, 0x8e, - 0xa4, 0x49, 0xa4, 0x8e, 0xa4, 0x49, 0xa5, 0x8f, 0xa6, 0x49, 0xa5, 0x8f, - 0xa6, 0x49, 0xa5, 0x8f, 0xa6, 0x49, 0xa6, 0x8f, 0xa6, 0x49, 0xa6, 0x8f, - 0xa6, 0x49, 0xa6, 0x8f, 0xa6, 0x49, 0xa7, 0x8f, 0xa7, 0x49, 0xa7, 0x8f, - 0xa7, 0x49, 0xa8, 0x8f, 0xa8, 0x49, 0xa8, 0x8f, 0xa8, 0x49, 0xa8, 0x8f, - 0xa8, 0x49, 0xa9, 0x90, 0xaa, 0x49, 0xa9, 0x90, 0xab, 0x49, 0xaa, 0x90, - 0xaa, 0x49, 0xaa, 0x90, 0xab, 0x49, 0xaa, 0x90, 0xaa, 0x49, 0xab, 0x90, - 0xab, 0x49, 0xab, 0x90, 0xab, 0x49, 0xab, 0x90, 0xab, 0x49, 0xac, 0x90, - 0xac, 0x49, 0xac, 0x90, 0xac, 0x49, 0xac, 0x90, 0xac, 0x49, 0xad, 0x90, - 0xad, 0x49, 0xad, 0x90, 0xad, 0x49, 0xae, 0x91, 0xae, 0x49, 0xae, 0x91, - 0xaf, 0x49, 0xae, 0x91, 0xae, 0x49, 0xaf, 0x91, 0xaf, 0x49, 0xaf, 0x91, - 0xaf, 0x49, 0xaf, 0x91, 0xaf, 0x49, 0xb0, 0x91, 0xb0, 0x49, 0xb0, 0x91, - 0xb0, 0x49, 0xb0, 0x91, 0xb0, 0x49, 0xb1, 0x91, 0xb1, 0x49, 0xb1, 0x91, - 0xb1, 0x49, 0xb2, 0x91, 0xb2, 0x49, 0xb2, 0x91, 0xb2, 0x49, 0xb2, 0x92, - 0xb2, 0x4a, 0xb3, 0x92, 0xb3, 0x4a, 0xb3, 0x92, 0xb3, 0x4a, 0xb3, 0x92, - 0xb3, 0x4a, 0xb4, 0x92, 0xb4, 0x4a, 0xb4, 0x92, 0xb4, 0x4a, 0xb4, 0x92, - 0xb4, 0x4a, 0xb5, 0x92, 0xb5, 0x4a, 0xb5, 0x92, 0xb5, 0x4a, 0xb5, 0x92, - 0xb5, 0x4a, 0xb6, 0x92, 0xb6, 0x4a, 0xb5, 0x92, 0xb6, 0x4a, 0xb6, 0x92, - 0xb6, 0x4a, 0xb7, 0x92, 0xb7, 0x4b, 0xb7, 0x92, 0xb7, 0x4b, 0xb7, 0x92, - 0xb7, 0x4b, 0xb8, 0x92, 0xb8, 0x4b, 0xb8, 0x92, 0xb8, 0x4b, 0xb8, 0x92, - 0xb8, 0x4b, 0xb9, 0x92, 0xb9, 0x4b, 0xb9, 0x92, 0xb9, 0x4b, 0xb9, 0x92, - 0xb9, 0x4b, 0xba, 0x92, 0xba, 0x4b, 0xb9, 0x92, 0xba, 0x4b, 0xba, 0x92, - 0xba, 0x4b, 0xb9, 0x92, 0xbb, 0x4b, 0xba, 0x92, 0xbb, 0x4b, 0xbb, 0x92, - 0xbb, 0x4c, 0xbc, 0x92, 0xbc, 0x4c, 0xbc, 0x92, 0xbc, 0x4c, 0xbc, 0x92, - 0xbc, 0x4c, 0xbd, 0x92, 0xbd, 0x4c, 0xbd, 0x92, 0xbd, 0x4c, 0xbd, 0x92, - 0xbd, 0x4c, 0xbd, 0x92, 0xbe, 0x4c, 0xbd, 0x92, 0xbe, 0x4c, 0xbd, 0x92, - 0xbe, 0x4c, 0xbd, 0x92, 0xbf, 0x4c, 0xbf, 0x92, 0xbf, 0x4d, 0xbf, 0x92, - 0xbf, 0x4d, 0xc0, 0x92, 0xc0, 0x4d, 0xc0, 0x92, 0xc0, 0x4d, 0xc0, 0x92, - 0xc0, 0x4d, 0xc1, 0x92, 0xc1, 0x4d, 0xc1, 0x92, 0xc1, 0x4d, 0xc1, 0x92, - 0xc1, 0x4d, 0xc1, 0x92, 0xc1, 0x4d, 0xc2, 0x92, 0xc2, 0x45, 0xc2, 0x92, - 0xc2, 0x45, 0xc2, 0x92, 0xc2, 0x45, 0xc3, 0x92, 0xc3, 0x45, 0xc3, 0x92, - 0xc3, 0x45, 0xc3, 0x92, 0xc3, 0x45, 0xc5, 0x92, 0xc4, 0x46, 0xc5, 0x92, - 0xc4, 0x46, 0xc5, 0x92, 0xc4, 0x46, 0xc5, 0x92, 0xc5, 0x46, 0xc5, 0x92, - 0xc5, 0x46, 0xc5, 0x92, 0xc5, 0x46, 0xc6, 0x92, 0xc6, 0x46, 0xc6, 0x92, - 0xc6, 0x46, 0xc6, 0x92, 0xc6, 0x46, 0xc8, 0x92, 0xc6, 0x47, 0xc8, 0x92, - 0xc7, 0x47, 0xc8, 0x92, 0xc7, 0x47, 0xc8, 0x92, 0xc7, 0x47, 0xc8, 0x92, - 0xc8, 0x47, 0xc8, 0x92, 0xc8, 0x47, 0xc8, 0x92, 0xc8, 0x47, 0xc9, 0x92, - 0xc9, 0x47, 0xc9, 0x92, 0xc9, 0x47, 0xc9, 0x92, 0xc9, 0x47, 0xc9, 0x92, - 0xc9, 0x47, 0xca, 0x92, 0xca, 0x48, 0xcb, 0x92, 0xca, 0x48, 0xca, 0x92, - 0xca, 0x48, 0xcb, 0x92, 0xcb, 0x48, 0xcb, 0x92, 0xcb, 0x48, 0xcb, 0x92, - 0xcb, 0x48, 0xcc, 0x92, 0xcc, 0x48, 0xcc, 0x92, 0xcc, 0x48, 0xcc, 0x92, - 0xcc, 0x48, 0xcc, 0x92, 0xcc, 0x48, 0xcd, 0x92, 0xcd, 0x48, 0xcd, 0x92, - 0xcd, 0x48, 0xcd, 0x93, 0xcd, 0x49, 0xce, 0x93, 0xce, 0x49, 0xce, 0x93, - 0xce, 0x49, 0xce, 0x93, 0xce, 0x49, 0xce, 0x93, 0xce, 0x49, 0xcf, 0x93, - 0xcf, 0x49, 0xcf, 0x93, 0xcf, 0x49, 0xcf, 0x93, 0xcf, 0x49, 0xd0, 0x93, - 0xd0, 0x49, 0xd0, 0x93, 0xcf, 0x49, 0xd0, 0x93, 0xd0, 0x49, 0xd0, 0x94, - 0xd0, 0x49, 0xd1, 0x94, 0xd1, 0x49, 0xd1, 0x94, 0xd1, 0x49, 0xd1, 0x94, - 0xd1, 0x49, 0xd2, 0x94, 0xd2, 0x49, 0xd2, 0x94, 0xd2, 0x49, 0xd2, 0x94, - 0xd2, 0x49, 0xd2, 0x94, 0xd2, 0x49, 0xd3, 0x94, 0xd2, 0x49, 0xd3, 0x94, - 0xd2, 0x49, 0xd3, 0x94, 0xd2, 0x49, 0xd4, 0x94, 0xd2, 0x49, 0xd4, 0x94, - 0xd4, 0x49, 0xd4, 0x94, 0xd4, 0x49, 0xd4, 0x94, 0xd4, 0x49, 0xd5, 0x94, - 0xd5, 0x49, 0xd5, 0x94, 0xd5, 0x49, 0xd5, 0x94, 0xd5, 0x49, 0xd6, 0x94, - 0xd5, 0x49, 0xd6, 0x94, 0xd5, 0x49, 0xd6, 0x94, 0xd5, 0x49, 0xd6, 0x95, - 0xd6, 0x49, 0xd7, 0x95, 0xd7, 0x49, 0xd7, 0x95, 0xd7, 0x49, 0xd7, 0x95, - 0xd7, 0x49, 0xd7, 0x95, 0xd7, 0x49, 0xd8, 0x95, 0xd7, 0x49, 0xd8, 0x95, - 0xd7, 0x49, 0xd8, 0x95, 0xd7, 0x49, 0xd9, 0x95, 0xd7, 0x49, 0xd9, 0x96, - 0xd9, 0x49, 0xd9, 0x96, 0xd9, 0x49, 0xd9, 0x96, 0xd9, 0x49, 0xda, 0x96, - 0xda, 0x49, 0xda, 0x96, 0xda, 0x49, 0xda, 0x96, 0xda, 0x49, 0xda, 0x96, - 0xda, 0x49, 0xdb, 0x96, 0xda, 0x49, 0xdb, 0x96, 0xda, 0x49, 0xdb, 0x96, - 0xda, 0x49, 0xdb, 0x96, 0xda, 0x49, 0xdc, 0x96, 0xda, 0x49, 0xdc, 0x97, - 0xdc, 0x49, 0xdc, 0x97, 0xdc, 0x49, 0xdd, 0x97, 0xdd, 0x49, 0xdd, 0x97, - 0xdc, 0x49, 0xdd, 0x97, 0xdd, 0x49, 0xdd, 0x97, 0xdc, 0x49, 0xde, 0x97, - 0xdd, 0x49, 0xde, 0x97, 0xdc, 0x49, 0xde, 0x97, 0xdd, 0x49, 0xde, 0x98, - 0xde, 0x49, 0xdf, 0x98, 0xdf, 0x49, 0xdf, 0x98, 0xdf, 0x49, 0xdf, 0x98, - 0xdf, 0x49, 0xdf, 0x98, 0xdf, 0x49, 0xe0, 0x98, 0xdf, 0x49, 0xe0, 0x98, - 0xdf, 0x49, 0xe0, 0x98, 0xdf, 0x49, 0xe1, 0x98, 0xdf, 0x49, 0xe1, 0x99, - 0xe1, 0x49, 0xe1, 0x99, 0xe1, 0x49, 0xe1, 0x99, 0xe1, 0x49, 0xe2, 0x99, - 0xe2, 0x49, 0xe2, 0x99, 0xe1, 0x49, 0xe2, 0x99, 0xe2, 0x49, 0xe2, 0x99, - 0xe1, 0x49, 0xe3, 0x99, 0xe2, 0x49, 0xe3, 0x99, 0xe1, 0x49, 0xe3, 0x99, - 0xe2, 0x49, 0xe3, 0x99, 0xe1, 0x49, 0xe4, 0x99, 0xe2, 0x49, 0xe4, 0x9a, - 0xe4, 0x49, 0xe4, 0x9a, 0xe4, 0x49, 0xe4, 0x9a, 0xe4, 0x49, 0xe5, 0x9a, - 0xe4, 0x49, 0xe5, 0x9a, 0xe4, 0x49, 0xe5, 0x9a, 0xe4, 0x49, 0xe5, 0x9a, - 0xe4, 0x49, 0xe6, 0x9a, 0xe4, 0x49, 0xe6, 0x9a, 0xe4, 0x49, 0xe6, 0x9a, - 0xe6, 0x49, 0xe6, 0x9a, 0xe6, 0x49, 0xe7, 0x9a, 0xe6, 0x49, 0xe7, 0x9a, - 0xe6, 0x49, 0xe7, 0x9a, 0xe6, 0x49, 0xe7, 0x9a, 0xe6, 0x49, 0xe8, 0x9a, - 0xe6, 0x49, 0xe8, 0x9a, 0xe6, 0x49, 0xe8, 0x9a, 0xe6, 0x49, 0xe8, 0x9b, - 0xe8, 0x49, 0xe9, 0x9b, 0xe9, 0x49, 0xe9, 0x9b, 0xe8, 0x49, 0xe9, 0x9b, - 0xe9, 0x49, 0xe9, 0x9b, 0xe8, 0x49, 0xea, 0x9b, 0xe9, 0x49, 0xea, 0x9b, - 0xe8, 0x49, 0xea, 0x9b, 0xe9, 0x49, 0xea, 0x9b, 0xe8, 0x49, 0xeb, 0x9b, - 0xe9, 0x49, 0xeb, 0x9c, 0xeb, 0x49, 0xeb, 0x9c, 0xeb, 0x49, 0xeb, 0x9c, - 0xeb, 0x49, 0xec, 0x9c, 0xeb, 0x49, 0xec, 0x9c, 0xeb, 0x49, 0xec, 0x9c, - 0xeb, 0x49, 0xec, 0x9c, 0xeb, 0x49, 0xec, 0x9c, 0xeb, 0x49, 0xed, 0x9c, - 0xeb, 0x49, 0xed, 0x9d, 0xed, 0x49, 0xed, 0x9d, 0xed, 0x49, 0xed, 0x9d, - 0xed, 0x49, 0xee, 0x9d, 0xed, 0x49, 0xee, 0x9d, 0xed, 0x49, 0xee, 0x9d, - 0xed, 0x49, 0xee, 0x9d, 0xed, 0x49, 0xef, 0x9d, 0xed, 0x49, 0xef, 0x9d, - 0xed, 0x49, 0xef, 0x9d, 0xed, 0x49, 0xef, 0x9d, 0xed, 0x49, 0xf0, 0x9d, - 0xed, 0x49, 0xf0, 0x9e, 0xef, 0x49, 0xf0, 0x9e, 0xef, 0x49, 0xf0, 0x9e, - 0xef, 0x49, 0xf1, 0x9e, 0xef, 0x49, 0xf1, 0x9e, 0xef, 0x49, 0xf1, 0x9e, - 0xef, 0x49, 0xf1, 0x9e, 0xef, 0x49, 0xf2, 0x9e, 0xef, 0x49, 0xf2, 0x9e, - 0xef, 0x49, 0xf2, 0x9f, 0xf2, 0x49, 0xf2, 0x9f, 0xf1, 0x49, 0xf2, 0x9f, - 0xf2, 0x49, 0xf3, 0x9f, 0xf1, 0x49, 0xf3, 0x9f, 0xf2, 0x49, 0xf3, 0x9f, - 0xf1, 0x49, 0xf3, 0x9f, 0xf2, 0x49, 0xf4, 0x9f, 0xf1, 0x49, 0xf4, 0x9f, - 0xf2, 0x49, 0xf4, 0x9f, 0xf4, 0x49, 0xf4, 0x9f, 0xf4, 0x49, 0xf5, 0x9f, - 0xf4, 0x49, 0xf5, 0x9f, 0xf4, 0x49, 0xf5, 0x9f, 0xf4, 0x49, 0xf5, 0x9f, - 0xf4, 0x49, 0xf5, 0x9f, 0xf4, 0x49, 0xf6, 0x9f, 0xf4, 0x49, 0xf6, 0x9f, - 0xf4, 0x49, 0xf6, 0x9f, 0xf4, 0x49, 0xf6, 0xa0, 0xf6, 0x49, 0xf7, 0x9f, - 0xf4, 0x49, 0xf7, 0xa0, 0xf6, 0x49, 0xf7, 0xa0, 0xf6, 0x49, 0xf7, 0xa0, - 0xf6, 0x49, 0xf8, 0xa0, 0xf6, 0x49, 0xf8, 0xa0, 0xf6, 0x49, 0xf8, 0xa0, - 0xf6, 0x49, 0xf8, 0xa0, 0xf6, 0x49, 0xf8, 0xa0, 0xf6, 0x49, 0xf9, 0xa0, - 0xf6, 0x49, 0xf9, 0xa1, 0xf8, 0x49, 0xf9, 0xa1, 0xf8, 0x49, 0xf9, 0xa1, - 0xf8, 0x49, 0xfa, 0xa1, 0xf8, 0x49, 0xfa, 0xa1, 0xf8, 0x49, 0xfa, 0xa1, - 0xf8, 0x49, 0xfa, 0xa1, 0xf8, 0x49, 0xfa, 0xa1, 0xf8, 0x49, 0xfb, 0xa1, - 0xf8, 0x49, 0xfb, 0xa2, 0xfa, 0x49, 0xfb, 0xa2, 0xfa, 0x49, 0xfb, 0xa2, - 0xfa, 0x49, 0xfc, 0xa2, 0xfa, 0x49, 0xfc, 0xa2, 0xfa, 0x49, 0xfc, 0xa2, - 0xfa, 0x49, 0xfc, 0xa2, 0xfa, 0x49, 0xfc, 0xa2, 0xfa, 0x49, 0xfd, 0xa2, - 0xfa, 0x49, 0xfd, 0xa2, 0xfa, 0x49, 0xfd, 0xa2, 0xfa, 0x49, 0xfd, 0xa2, - 0xfa, 0x49, 0xfe, 0xa2, 0xfa, 0x49, 0xfe, 0xa2, 0xfa, 0x49, 0xfe, 0xa3, - 0xfb, 0x49, 0xfe, 0xa3, 0xfc, 0x49, 0xfe, 0xa3, 0xfb, 0x49, 0xff, 0xa3, - 0xfc, 0x49, 0xff, 0xa3, 0xfb, 0x49, 0x03, 0x9b, 0x98, 0x49, 0x0a, 0x9d, - 0x98, 0x49, 0x0f, 0x9b, 0x98, 0x49, 0x14, 0x9d, 0x98, 0x49, 0x17, 0x9b, - 0x98, 0x49, 0x1b, 0x9d, 0x98, 0x49, 0x1e, 0x9b, 0x98, 0x49, 0x20, 0x9d, - 0x98, 0x49, 0x23, 0x9b, 0x98, 0x49, 0x25, 0x9d, 0x98, 0x49, 0x27, 0x9b, - 0x98, 0x49, 0x29, 0x9d, 0x98, 0x49, 0x2b, 0x9b, 0x98, 0x49, 0x2d, 0x9d, - 0x98, 0x49, 0x2f, 0x9b, 0x98, 0x49, 0x31, 0x9d, 0x98, 0x49, 0x32, 0x9b, - 0x98, 0x49, 0x34, 0x9d, 0x98, 0x49, 0x35, 0x9b, 0x98, 0x49, 0x37, 0x9d, - 0x98, 0x49, 0x38, 0x9b, 0x98, 0x49, 0x3a, 0x9d, 0x98, 0x49, 0x3b, 0x9b, - 0x98, 0x49, 0x3c, 0x9b, 0x98, 0x49, 0x3e, 0x9b, 0x98, 0x49, 0x3f, 0x9b, - 0x98, 0x49, 0x40, 0x9b, 0x98, 0x49, 0x42, 0x9b, 0x98, 0x49, 0x43, 0x9b, - 0x98, 0x49, 0x44, 0x9b, 0x98, 0x49, 0x45, 0x9b, 0x98, 0x49, 0x46, 0x9d, - 0x98, 0x49, 0x47, 0x9b, 0x98, 0x49, 0x48, 0x9d, 0x98, 0x49, 0x49, 0x9b, - 0x98, 0x49, 0x4a, 0x9d, 0x98, 0x49, 0x4b, 0x9b, 0x98, 0x49, 0x4c, 0x9d, - 0x98, 0x49, 0x4d, 0x9b, 0x98, 0x49, 0x4e, 0x9d, 0x98, 0x49, 0x4f, 0x9b, - 0x98, 0x49, 0x50, 0x98, 0x98, 0x49, 0x51, 0x9b, 0x98, 0x49, 0x52, 0x98, - 0x98, 0x49, 0x53, 0x9b, 0x98, 0x49, 0x54, 0x98, 0x98, 0x49, 0x55, 0x9b, - 0x98, 0x49, 0x56, 0x98, 0x98, 0x49, 0x57, 0x9b, 0x98, 0x49, 0x58, 0x98, - 0x98, 0x49, 0x58, 0x9b, 0x98, 0x49, 0x59, 0x98, 0x98, 0x49, 0x5a, 0x9b, - 0x98, 0x49, 0x5b, 0x98, 0x98, 0x49, 0x5c, 0x9b, 0x98, 0x49, 0x5d, 0x98, - 0x98, 0x49, 0x5d, 0x9b, 0x98, 0x49, 0x5e, 0x98, 0x98, 0x49, 0x5f, 0x9b, - 0x98, 0x49, 0x60, 0x98, 0x98, 0x49, 0x60, 0x9b, 0x98, 0x49, 0x61, 0x98, - 0x98, 0x49, 0x62, 0x9b, 0x98, 0x49, 0x63, 0x98, 0x98, 0x49, 0x63, 0x9b, - 0x98, 0x49, 0x64, 0x98, 0x98, 0x49, 0x65, 0x9b, 0x98, 0x49, 0x66, 0x98, - 0x98, 0x49, 0x66, 0x9b, 0x98, 0x49, 0x67, 0x98, 0x98, 0x49, 0x68, 0x9b, - 0x98, 0x49, 0x68, 0x98, 0x98, 0x49, 0x69, 0x9b, 0x98, 0x49, 0x6a, 0x98, - 0x98, 0x49, 0x6a, 0x9b, 0x98, 0x49, 0x6b, 0x98, 0x98, 0x49, 0x6c, 0x9b, - 0x98, 0x49, 0x6c, 0x98, 0x98, 0x49, 0x6d, 0x96, 0x99, 0x49, 0x6e, 0x98, - 0x98, 0x49, 0x6e, 0x96, 0x99, 0x49, 0x6f, 0x98, 0x98, 0x49, 0x70, 0x96, - 0x99, 0x49, 0x70, 0x98, 0x98, 0x49, 0x71, 0x96, 0x99, 0x49, 0x72, 0x98, - 0x98, 0x49, 0x72, 0x96, 0x99, 0x49, 0x73, 0x98, 0x98, 0x49, 0x73, 0x96, - 0x99, 0x49, 0x74, 0x98, 0x98, 0x49, 0x75, 0x96, 0x99, 0x49, 0x75, 0x98, - 0x98, 0x49, 0x76, 0x96, 0x99, 0x49, 0x76, 0x98, 0x98, 0x49, 0x77, 0x96, - 0x99, 0x49, 0x78, 0x98, 0x98, 0x49, 0x78, 0x96, 0x99, 0x49, 0x79, 0x98, - 0x98, 0x49, 0x79, 0x96, 0x99, 0x49, 0x7a, 0x98, 0x98, 0x49, 0x7a, 0x96, - 0x99, 0x49, 0x7b, 0x98, 0x98, 0x49, 0x7c, 0x96, 0x99, 0x49, 0x7c, 0x98, - 0x98, 0x49, 0x7d, 0x96, 0x99, 0x49, 0x7d, 0x98, 0x98, 0x49, 0x7e, 0x96, - 0x99, 0x49, 0x7e, 0x98, 0x98, 0x49, 0x7f, 0x96, 0x99, 0x49, 0x7f, 0x98, - 0x98, 0x49, 0x80, 0x96, 0x99, 0x49, 0x81, 0x98, 0x98, 0x49, 0x81, 0x96, - 0x99, 0x49, 0x82, 0x98, 0x98, 0x49, 0x82, 0x96, 0x99, 0x49, 0x83, 0x92, - 0x99, 0x49, 0x83, 0x96, 0x99, 0x49, 0x84, 0x92, 0x99, 0x49, 0x84, 0x96, - 0x99, 0x49, 0x85, 0x92, 0x99, 0x49, 0x85, 0x96, 0x99, 0x49, 0x86, 0x92, - 0x99, 0x49, 0x86, 0x96, 0x99, 0x49, 0x87, 0x92, 0x99, 0x49, 0x87, 0x96, - 0x99, 0x49, 0x88, 0x92, 0x99, 0x49, 0x88, 0x96, 0x99, 0x49, 0x89, 0x92, - 0x99, 0x49, 0x89, 0x96, 0x99, 0x49, 0x8a, 0x92, 0x99, 0x49, 0x8a, 0x96, - 0x99, 0x49, 0x8b, 0x92, 0x99, 0x49, 0x8b, 0x96, 0x99, 0x49, 0x8c, 0x92, - 0x99, 0x49, 0x8c, 0x96, 0x99, 0x49, 0x8d, 0x92, 0x99, 0x49, 0x8d, 0x96, - 0x99, 0x49, 0x8e, 0x92, 0x99, 0x49, 0x8e, 0x96, 0x99, 0x49, 0x8e, 0x92, - 0x99, 0x49, 0x8f, 0x96, 0x99, 0x49, 0x8f, 0x92, 0x99, 0x49, 0x90, 0x96, - 0x99, 0x49, 0x90, 0x92, 0x99, 0x49, 0x91, 0x96, 0x99, 0x49, 0x91, 0x92, - 0x99, 0x49, 0x92, 0x96, 0x99, 0x49, 0x92, 0x92, 0x99, 0x49, 0x93, 0x92, - 0x9a, 0x49, 0x93, 0x92, 0x99, 0x49, 0x94, 0x92, 0x9a, 0x49, 0x94, 0x92, - 0x99, 0x49, 0x94, 0x92, 0x9a, 0x49, 0x95, 0x92, 0x99, 0x49, 0x95, 0x92, - 0x9a, 0x49, 0x96, 0x92, 0x99, 0x49, 0x96, 0x92, 0x9a, 0x49, 0x97, 0x92, - 0x99, 0x49, 0x97, 0x92, 0x9a, 0x49, 0x98, 0x92, 0x99, 0x49, 0x98, 0x92, - 0x9a, 0x49, 0x98, 0x92, 0x99, 0x49, 0x99, 0x92, 0x9a, 0x49, 0x99, 0x92, - 0x99, 0x48, 0x99, 0x92, 0x9a, 0x49, 0x99, 0x92, 0x9a, 0x48, 0x99, 0x92, - 0x9a, 0x49, 0x99, 0x92, 0x9b, 0x48, 0x9d, 0x92, 0x9b, 0x4b, 0x9d, 0x92, - 0x9c, 0x49, 0x9e, 0x92, 0x9c, 0x49, 0x9d, 0x92, 0x9d, 0x49, 0x9e, 0x92, - 0x9d, 0x49, 0x9d, 0x92, 0x9d, 0x49, 0x9e, 0x92, 0x9d, 0x49, 0x9e, 0x92, - 0x9d, 0x49, 0x9f, 0x92, 0x9d, 0x49, 0x9f, 0x90, 0x9d, 0x49, 0x9f, 0x92, - 0x9d, 0x49, 0xa0, 0x90, 0x9d, 0x49, 0xa0, 0x92, 0x9d, 0x49, 0xa1, 0x90, - 0x9d, 0x49, 0xa1, 0x8e, 0xa1, 0x49, 0xa1, 0x8e, 0xa1, 0x49, 0xa2, 0x8e, - 0xa2, 0x49, 0xa2, 0x8e, 0xa4, 0x49, 0xa3, 0x8e, 0xa4, 0x49, 0xa3, 0x8e, - 0xa4, 0x49, 0xa3, 0x8e, 0xa4, 0x49, 0xa4, 0x8e, 0xa4, 0x49, 0xa4, 0x8e, - 0xa4, 0x49, 0xa5, 0x8e, 0xa5, 0x49, 0xa5, 0x8e, 0xa5, 0x49, 0xa5, 0x8e, - 0xa5, 0x49, 0xa6, 0x8e, 0xa6, 0x49, 0xa6, 0x8e, 0xa6, 0x49, 0xa6, 0x8f, - 0xa8, 0x49, 0xa7, 0x8f, 0xa8, 0x49, 0xa7, 0x8f, 0xa8, 0x49, 0xa8, 0x8f, - 0xa8, 0x49, 0xa8, 0x8f, 0xa8, 0x49, 0xa8, 0x8f, 0xa8, 0x49, 0xa9, 0x8f, - 0xa9, 0x49, 0xa9, 0x8f, 0xa9, 0x49, 0xaa, 0x8f, 0xaa, 0x49, 0xaa, 0x8f, - 0xaa, 0x49, 0xaa, 0x8f, 0xaa, 0x49, 0xab, 0x8f, 0xab, 0x49, 0xab, 0x90, - 0xac, 0x49, 0xab, 0x90, 0xad, 0x49, 0xac, 0x90, 0xac, 0x49, 0xac, 0x90, - 0xad, 0x49, 0xac, 0x90, 0xac, 0x49, 0xad, 0x90, 0xad, 0x49, 0xad, 0x90, - 0xad, 0x49, 0xae, 0x90, 0xae, 0x49, 0xae, 0x90, 0xae, 0x49, 0xae, 0x90, - 0xae, 0x49, 0xaf, 0x90, 0xaf, 0x49, 0xaf, 0x90, 0xaf, 0x49, 0xaf, 0x90, - 0xaf, 0x49, 0xb0, 0x91, 0xb0, 0x49, 0xb0, 0x91, 0xb1, 0x49, 0xb0, 0x91, - 0xb0, 0x49, 0xb1, 0x91, 0xb1, 0x49, 0xb1, 0x91, 0xb1, 0x49, 0xb2, 0x91, - 0xb2, 0x49, 0xb2, 0x91, 0xb2, 0x49, 0xb2, 0x91, 0xb2, 0x49, 0xb3, 0x91, - 0xb3, 0x49, 0xb3, 0x91, 0xb3, 0x49, 0xb3, 0x91, 0xb3, 0x49, 0xb4, 0x91, - 0xb4, 0x49, 0xb4, 0x91, 0xb4, 0x49, 0xb4, 0x92, 0xb4, 0x4a, 0xb5, 0x92, - 0xb5, 0x4a, 0xb5, 0x92, 0xb5, 0x4a, 0xb5, 0x92, 0xb5, 0x4a, 0xb6, 0x92, - 0xb6, 0x4a, 0xb6, 0x92, 0xb6, 0x4a, 0xb6, 0x92, 0xb6, 0x4a, 0xb7, 0x92, - 0xb7, 0x4a, 0xb7, 0x92, 0xb7, 0x4a, 0xb7, 0x92, 0xb7, 0x4a, 0xb8, 0x92, - 0xb8, 0x4a, 0xb7, 0x92, 0xb8, 0x4a, 0xb8, 0x92, 0xb8, 0x4a, 0xb9, 0x92, - 0xb9, 0x4b, 0xb9, 0x92, 0xb9, 0x4b, 0xb9, 0x92, 0xb9, 0x4b, 0xba, 0x92, - 0xba, 0x4b, 0xba, 0x92, 0xba, 0x4b, 0xba, 0x92, 0xba, 0x4b, 0xbb, 0x92, - 0xbb, 0x4b, 0xbb, 0x92, 0xbb, 0x4b, 0xbb, 0x92, 0xbb, 0x4b, 0xbb, 0x92, - 0xbc, 0x4b, 0xbb, 0x92, 0xbc, 0x4b, 0xbb, 0x92, 0xbc, 0x4b, 0xbb, 0x92, - 0xbd, 0x4b, 0xbd, 0x92, 0xbd, 0x4c, 0xbd, 0x92, 0xbd, 0x4c, 0xbe, 0x92, - 0xbe, 0x4c, 0xbe, 0x92, 0xbe, 0x4c, 0xbe, 0x92, 0xbe, 0x4c, 0xbf, 0x92, - 0xbf, 0x4c, 0xbf, 0x92, 0xbf, 0x4c, 0xbf, 0x92, 0xbf, 0x4c, 0xbf, 0x92, - 0xc0, 0x4c, 0xbf, 0x92, 0xc0, 0x4c, 0xbf, 0x92, 0xc0, 0x4c, 0xc1, 0x92, - 0xc1, 0x4d, 0xc1, 0x92, 0xc1, 0x4d, 0xc1, 0x92, 0xc1, 0x4d, 0xc1, 0x92, - 0xc1, 0x4d, 0xc2, 0x92, 0xc2, 0x4d, 0xc2, 0x92, 0xc2, 0x4d, 0xc2, 0x92, - 0xc2, 0x4d, 0xc2, 0x92, 0xc3, 0x4d, 0xc2, 0x92, 0xc3, 0x4d, 0xc3, 0x92, - 0xc3, 0x45, 0xc4, 0x92, 0xc4, 0x45, 0xc4, 0x92, 0xc4, 0x45, 0xc4, 0x92, - 0xc4, 0x45, 0xc5, 0x92, 0xc5, 0x45, 0xc6, 0x92, 0xc5, 0x46, 0xc6, 0x92, - 0xc5, 0x46, 0xc6, 0x92, 0xc6, 0x46, 0xc6, 0x92, 0xc6, 0x46, 0xc6, 0x92, - 0xc6, 0x46, 0xc6, 0x92, 0xc6, 0x46, 0xc7, 0x92, 0xc7, 0x46, 0xc7, 0x92, - 0xc7, 0x46, 0xc7, 0x92, 0xc7, 0x46, 0xc8, 0x92, 0xc8, 0x46, 0xc9, 0x92, - 0xc8, 0x47, 0xc9, 0x92, 0xc8, 0x47, 0xc9, 0x92, 0xc9, 0x47, 0xc9, 0x92, - 0xc9, 0x47, 0xc9, 0x92, 0xc9, 0x47, 0xc9, 0x92, 0xc9, 0x47, 0xca, 0x92, - 0xca, 0x47, 0xca, 0x92, 0xca, 0x47, 0xca, 0x92, 0xca, 0x47, 0xcb, 0x92, - 0xcb, 0x47, 0xcb, 0x92, 0xcb, 0x47, 0xcc, 0x92, 0xcb, 0x48, 0xcc, 0x92, - 0xcc, 0x48, 0xcc, 0x92, 0xcc, 0x48, 0xcc, 0x92, 0xcc, 0x48, 0xcc, 0x92, - 0xcc, 0x48, 0xcd, 0x92, 0xcd, 0x48, 0xcd, 0x92, 0xcd, 0x48, 0xcd, 0x92, - 0xcd, 0x48, 0xce, 0x92, 0xce, 0x48, 0xce, 0x92, 0xce, 0x48, 0xce, 0x92, - 0xce, 0x48, 0xce, 0x92, 0xce, 0x48, 0xcf, 0x93, 0xcf, 0x49, 0xcf, 0x93, - 0xcf, 0x49, 0xcf, 0x93, 0xcf, 0x49, 0xd0, 0x93, 0xd0, 0x49, 0xd0, 0x93, - 0xd0, 0x49, 0xd0, 0x93, 0xd0, 0x49, 0xd0, 0x93, 0xd0, 0x49, 0xd1, 0x93, - 0xd1, 0x49, 0xd1, 0x93, 0xd1, 0x49, 0xd1, 0x93, 0xd1, 0x49, 0xd2, 0x93, - 0xd1, 0x49, 0xd2, 0x94, 0xd2, 0x49, 0xd2, 0x94, 0xd2, 0x49, 0xd2, 0x94, - 0xd2, 0x49, 0xd3, 0x94, 0xd3, 0x49, 0xd3, 0x94, 0xd3, 0x49, 0xd3, 0x94, - 0xd3, 0x49, 0xd4, 0x94, 0xd4, 0x49, 0xd4, 0x94, 0xd3, 0x49, 0xd4, 0x94, - 0xd4, 0x49, 0xd4, 0x94, 0xd3, 0x49, 0xd5, 0x94, 0xd4, 0x49, 0xd5, 0x95, - 0xd5, 0x49, 0xd5, 0x95, 0xd5, 0x49, 0xd6, 0x95, 0xd6, 0x49, 0xd6, 0x95, - 0xd6, 0x49, 0xd6, 0x95, 0xd6, 0x49, 0xd6, 0x95, 0xd6, 0x49, 0xd7, 0x95, - 0xd6, 0x49, 0xd7, 0x95, 0xd6, 0x49, 0xd7, 0x95, 0xd6, 0x49, 0xd7, 0x95, - 0xd6, 0x49, 0xd8, 0x96, 0xd8, 0x49, 0xd8, 0x96, 0xd8, 0x49, 0xd8, 0x96, - 0xd8, 0x49, 0xd9, 0x96, 0xd9, 0x49, 0xd9, 0x96, 0xd9, 0x49, 0xd9, 0x96, - 0xd9, 0x49, 0xd9, 0x96, 0xd9, 0x49, 0xda, 0x96, 0xd9, 0x49, 0xda, 0x96, - 0xd9, 0x49, 0xda, 0x97, 0xda, 0x49, 0xda, 0x97, 0xda, 0x49, 0xdb, 0x97, - 0xdb, 0x49, 0xdb, 0x97, 0xdb, 0x49, 0xdb, 0x97, 0xdb, 0x49, 0xdb, 0x97, - 0xdb, 0x49, 0xdc, 0x97, 0xdb, 0x49, 0xdc, 0x97, 0xdb, 0x49, 0xdc, 0x97, - 0xdb, 0x49, 0xdd, 0x97, 0xdb, 0x49, 0xdd, 0x97, 0xdb, 0x49, 0xdd, 0x98, - 0xdd, 0x49, 0xdd, 0x98, 0xdd, 0x49, 0xde, 0x98, 0xde, 0x49, 0xde, 0x98, - 0xde, 0x49, 0xde, 0x98, 0xde, 0x49, 0xde, 0x98, 0xde, 0x49, 0xdf, 0x98, - 0xde, 0x49, 0xdf, 0x98, 0xde, 0x49, 0xdf, 0x98, 0xde, 0x49, 0xdf, 0x98, - 0xde, 0x49, 0xe0, 0x98, 0xe0, 0x49, 0xe0, 0x98, 0xe0, 0x49, 0xe0, 0x98, - 0xe0, 0x49, 0xe1, 0x98, 0xe0, 0x49, 0xe1, 0x98, 0xe0, 0x49, 0xe1, 0x98, - 0xe0, 0x49, 0xe1, 0x98, 0xe0, 0x49, 0xe2, 0x98, 0xe0, 0x49, 0xe2, 0x98, - 0xe0, 0x49, 0xe2, 0x99, 0xe2, 0x49, 0xe2, 0x99, 0xe2, 0x49, 0xe3, 0x99, - 0xe3, 0x49, 0xe3, 0x99, 0xe2, 0x49, 0xe3, 0x99, 0xe3, 0x49, 0xe3, 0x99, - 0xe2, 0x49, 0xe4, 0x99, 0xe3, 0x49, 0xe4, 0x99, 0xe2, 0x49, 0xe4, 0x99, - 0xe3, 0x49, 0xe4, 0x99, 0xe2, 0x49, 0xe5, 0x99, 0xe3, 0x49, 0xe5, 0x9a, - 0xe5, 0x49, 0xe5, 0x9a, 0xe5, 0x49, 0xe5, 0x9a, 0xe5, 0x49, 0xe6, 0x9a, - 0xe5, 0x49, 0xe6, 0x9a, 0xe5, 0x49, 0xe6, 0x9a, 0xe5, 0x49, 0xe6, 0x9a, - 0xe5, 0x49, 0xe7, 0x9a, 0xe5, 0x49, 0xe7, 0x9a, 0xe5, 0x49, 0xe7, 0x9a, - 0xe5, 0x49, 0xe7, 0x9b, 0xe7, 0x49, 0xe8, 0x9b, 0xe7, 0x49, 0xe8, 0x9b, - 0xe7, 0x49, 0xe8, 0x9b, 0xe7, 0x49, 0xe8, 0x9b, 0xe7, 0x49, 0xe9, 0x9b, - 0xe7, 0x49, 0xe9, 0x9b, 0xe7, 0x49, 0xe9, 0x9b, 0xe7, 0x49, 0xe9, 0x9b, - 0xe7, 0x49, 0xea, 0x9c, 0xea, 0x49, 0xea, 0x9c, 0xea, 0x49, 0xea, 0x9c, - 0xea, 0x49, 0xea, 0x9c, 0xea, 0x49, 0xeb, 0x9c, 0xea, 0x49, 0xeb, 0x9c, - 0xea, 0x49, 0xeb, 0x9c, 0xea, 0x49, 0xeb, 0x9c, 0xea, 0x49, 0xec, 0x9c, - 0xea, 0x49, 0xec, 0x9c, 0xea, 0x49, 0xec, 0x9d, 0xec, 0x49, 0xec, 0x9d, - 0xec, 0x49, 0xec, 0x9d, 0xec, 0x49, 0xed, 0x9d, 0xec, 0x49, 0xed, 0x9d, - 0xec, 0x49, 0xed, 0x9d, 0xec, 0x49, 0xed, 0x9d, 0xec, 0x49, 0xee, 0x9d, - 0xec, 0x49, 0xee, 0x9d, 0xec, 0x49, 0xee, 0x9d, 0xee, 0x49, 0xee, 0x9d, - 0xec, 0x49, 0xef, 0x9d, 0xee, 0x49, 0xef, 0x9d, 0xee, 0x49, 0xef, 0x9d, - 0xee, 0x49, 0xef, 0x9d, 0xee, 0x49, 0xf0, 0x9d, 0xee, 0x49, 0xf0, 0x9d, - 0xee, 0x49, 0xf0, 0x9d, 0xee, 0x49, 0xf0, 0x9d, 0xee, 0x49, 0xf1, 0x9d, - 0xee, 0x49, 0xf1, 0x9e, 0xf0, 0x49, 0xf1, 0x9e, 0xf1, 0x49, 0xf1, 0x9e, - 0xf0, 0x49, 0xf2, 0x9e, 0xf1, 0x49, 0xf2, 0x9e, 0xf0, 0x49, 0xf2, 0x9e, - 0xf1, 0x49, 0xf2, 0x9e, 0xf0, 0x49, 0xf2, 0x9e, 0xf1, 0x49, 0xf3, 0x9e, - 0xf0, 0x49, 0xf3, 0x9e, 0xf1, 0x49, 0xf3, 0x9f, 0xf3, 0x49, 0xf3, 0x9f, - 0xf2, 0x49, 0xf4, 0x9f, 0xf3, 0x49, 0xf4, 0x9f, 0xf2, 0x49, 0xf4, 0x9f, - 0xf3, 0x49, 0xf4, 0x9f, 0xf2, 0x49, 0xf5, 0x9f, 0xf3, 0x49, 0xf5, 0x9f, - 0xf2, 0x49, 0xf5, 0x9f, 0xf3, 0x49, 0xf5, 0xa0, 0xf5, 0x49, 0xf5, 0xa0, - 0xf5, 0x49, 0xf6, 0xa0, 0xf5, 0x49, 0xf6, 0xa0, 0xf5, 0x49, 0xf6, 0xa0, - 0xf5, 0x49, 0xf6, 0xa0, 0xf5, 0x49, 0xf7, 0xa0, 0xf5, 0x49, 0xf7, 0xa0, - 0xf5, 0x49, 0xf7, 0xa0, 0xf5, 0x49, 0xf7, 0xa1, 0xf7, 0x49, 0xf8, 0xa1, - 0xf7, 0x49, 0xf8, 0xa1, 0xf7, 0x49, 0xf8, 0xa1, 0xf7, 0x49, 0xf8, 0xa1, - 0xf7, 0x49, 0xf8, 0xa1, 0xf7, 0x49, 0xf9, 0xa1, 0xf7, 0x49, 0xf9, 0xa1, - 0xf7, 0x49, 0xf9, 0xa1, 0xf7, 0x49, 0xf9, 0xa1, 0xf7, 0x49, 0xfa, 0xa1, - 0xf7, 0x49, 0xfa, 0xa1, 0xf7, 0x49, 0xfa, 0xa1, 0xf9, 0x49, 0xfa, 0xa1, - 0xf9, 0x49, 0xfa, 0xa1, 0xf9, 0x49, 0xfb, 0xa1, 0xf9, 0x49, 0xfb, 0xa1, - 0xf9, 0x49, 0xfb, 0xa1, 0xf9, 0x49, 0xfb, 0xa1, 0xf9, 0x49, 0xfc, 0xa1, - 0xf9, 0x49, 0xfc, 0xa1, 0xf9, 0x49, 0xfc, 0xa2, 0xfb, 0x49, 0xfc, 0xa2, - 0xfb, 0x49, 0xfc, 0xa2, 0xfb, 0x49, 0xfd, 0xa2, 0xfb, 0x49, 0xfd, 0xa2, - 0xfb, 0x49, 0xfd, 0xa2, 0xfb, 0x49, 0xfd, 0xa2, 0xfb, 0x49, 0xfe, 0xa2, - 0xfb, 0x49, 0xfe, 0xa2, 0xfb, 0x49, 0xfe, 0xa2, 0xfb, 0x49, 0xfe, 0xa2, - 0xfb, 0x49, 0xfe, 0xa2, 0xfb, 0x49, 0xff, 0xa2, 0xfb, 0x49, 0xff, 0xa2, - 0xfb, 0x49, 0x03, 0xa0, 0x97, 0x4a, 0x0a, 0x9e, 0x98, 0x4a, 0x0f, 0xa0, - 0x97, 0x4a, 0x14, 0x9e, 0x98, 0x4a, 0x17, 0x9b, 0x98, 0x4a, 0x1b, 0x9e, - 0x98, 0x4a, 0x1e, 0x9b, 0x98, 0x4a, 0x20, 0x9e, 0x98, 0x4a, 0x23, 0x9b, - 0x98, 0x4a, 0x25, 0x9e, 0x98, 0x4a, 0x27, 0x9b, 0x98, 0x4a, 0x29, 0x9e, - 0x98, 0x4a, 0x2b, 0x9b, 0x98, 0x4a, 0x2d, 0x9e, 0x98, 0x4a, 0x2f, 0x9b, - 0x98, 0x4a, 0x31, 0x9e, 0x98, 0x4a, 0x32, 0x9b, 0x98, 0x4a, 0x34, 0x9e, - 0x98, 0x4a, 0x35, 0x9b, 0x98, 0x4a, 0x37, 0x9e, 0x98, 0x4a, 0x38, 0x9b, - 0x98, 0x4a, 0x3a, 0x9e, 0x98, 0x4a, 0x3b, 0x9b, 0x98, 0x4a, 0x3c, 0x9b, - 0x98, 0x4a, 0x3e, 0x9b, 0x98, 0x4a, 0x3f, 0x9b, 0x98, 0x4a, 0x40, 0x9b, - 0x98, 0x4a, 0x42, 0x9b, 0x98, 0x4a, 0x43, 0x9b, 0x98, 0x4a, 0x44, 0x9b, - 0x98, 0x4a, 0x45, 0x9b, 0x98, 0x4a, 0x46, 0x98, 0x98, 0x4a, 0x47, 0x9b, - 0x98, 0x4a, 0x48, 0x98, 0x98, 0x4a, 0x49, 0x9b, 0x98, 0x4a, 0x4a, 0x98, - 0x98, 0x4a, 0x4b, 0x9b, 0x98, 0x4a, 0x4c, 0x98, 0x98, 0x4a, 0x4d, 0x9b, - 0x98, 0x4a, 0x4e, 0x98, 0x98, 0x4a, 0x4f, 0x9b, 0x98, 0x4a, 0x50, 0x98, - 0x98, 0x4a, 0x51, 0x9b, 0x98, 0x4a, 0x52, 0x98, 0x98, 0x4a, 0x53, 0x9b, - 0x98, 0x4a, 0x54, 0x98, 0x98, 0x4a, 0x55, 0x9b, 0x98, 0x4a, 0x56, 0x98, - 0x98, 0x4a, 0x57, 0x9b, 0x98, 0x4a, 0x58, 0x98, 0x98, 0x4a, 0x58, 0x9b, - 0x98, 0x4a, 0x59, 0x98, 0x98, 0x4a, 0x5a, 0x9b, 0x98, 0x4a, 0x5b, 0x98, - 0x98, 0x4a, 0x5c, 0x9b, 0x98, 0x4a, 0x5d, 0x98, 0x98, 0x4a, 0x5d, 0x9b, - 0x98, 0x4a, 0x5e, 0x98, 0x98, 0x4a, 0x5f, 0x9b, 0x98, 0x4a, 0x60, 0x98, - 0x98, 0x4a, 0x60, 0x9b, 0x98, 0x4a, 0x61, 0x98, 0x98, 0x4a, 0x62, 0x9b, - 0x98, 0x4a, 0x63, 0x98, 0x98, 0x4a, 0x63, 0x9b, 0x98, 0x4a, 0x64, 0x98, - 0x98, 0x4a, 0x65, 0x9b, 0x98, 0x4a, 0x66, 0x98, 0x98, 0x4a, 0x66, 0x9b, - 0x98, 0x4a, 0x67, 0x98, 0x98, 0x4a, 0x68, 0x95, 0x99, 0x4a, 0x68, 0x98, - 0x98, 0x4a, 0x69, 0x95, 0x99, 0x4a, 0x6a, 0x98, 0x98, 0x4a, 0x6a, 0x95, - 0x99, 0x4a, 0x6b, 0x98, 0x98, 0x4a, 0x6c, 0x95, 0x99, 0x4a, 0x6c, 0x98, - 0x98, 0x4a, 0x6d, 0x95, 0x99, 0x4a, 0x6e, 0x98, 0x98, 0x4a, 0x6e, 0x95, - 0x99, 0x4a, 0x6f, 0x98, 0x98, 0x4a, 0x70, 0x95, 0x99, 0x4a, 0x70, 0x98, - 0x98, 0x4a, 0x71, 0x95, 0x99, 0x4a, 0x72, 0x98, 0x98, 0x4a, 0x72, 0x95, - 0x99, 0x4a, 0x73, 0x98, 0x98, 0x4a, 0x73, 0x95, 0x99, 0x4a, 0x74, 0x98, - 0x98, 0x4a, 0x75, 0x95, 0x99, 0x4a, 0x75, 0x98, 0x98, 0x4a, 0x76, 0x95, - 0x99, 0x4a, 0x76, 0x98, 0x98, 0x4a, 0x77, 0x95, 0x99, 0x4a, 0x78, 0x98, - 0x98, 0x4a, 0x78, 0x95, 0x99, 0x4a, 0x79, 0x98, 0x98, 0x4a, 0x79, 0x95, - 0x99, 0x4a, 0x7a, 0x98, 0x98, 0x4a, 0x7a, 0x95, 0x99, 0x4a, 0x7b, 0x98, - 0x98, 0x4a, 0x7c, 0x95, 0x99, 0x4a, 0x7c, 0x98, 0x98, 0x4a, 0x7d, 0x95, - 0x99, 0x4a, 0x7d, 0x98, 0x98, 0x4a, 0x7e, 0x95, 0x99, 0x4a, 0x7e, 0x98, - 0x98, 0x4a, 0x7f, 0x95, 0x99, 0x4a, 0x7f, 0x98, 0x98, 0x4a, 0x80, 0x95, - 0x99, 0x4a, 0x81, 0x98, 0x98, 0x4a, 0x81, 0x95, 0x99, 0x4a, 0x82, 0x98, - 0x98, 0x4a, 0x82, 0x95, 0x99, 0x4a, 0x83, 0x98, 0x98, 0x4a, 0x83, 0x95, - 0x99, 0x4a, 0x84, 0x98, 0x98, 0x4a, 0x84, 0x95, 0x99, 0x4a, 0x85, 0x98, - 0x98, 0x4a, 0x85, 0x95, 0x99, 0x4a, 0x86, 0x98, 0x98, 0x4a, 0x86, 0x95, - 0x99, 0x4a, 0x87, 0x98, 0x98, 0x4a, 0x87, 0x95, 0x99, 0x4a, 0x88, 0x98, - 0x98, 0x4a, 0x88, 0x95, 0x99, 0x4a, 0x89, 0x93, 0x99, 0x4a, 0x89, 0x95, - 0x99, 0x4a, 0x8a, 0x93, 0x99, 0x4a, 0x8a, 0x95, 0x99, 0x4a, 0x8b, 0x93, - 0x99, 0x4a, 0x8b, 0x95, 0x99, 0x4a, 0x8c, 0x93, 0x99, 0x4a, 0x8c, 0x95, - 0x99, 0x4a, 0x8d, 0x93, 0x99, 0x4a, 0x8d, 0x95, 0x99, 0x4a, 0x8e, 0x93, - 0x99, 0x4a, 0x8e, 0x95, 0x99, 0x4a, 0x8e, 0x93, 0x99, 0x4a, 0x8f, 0x95, - 0x99, 0x4a, 0x8f, 0x93, 0x99, 0x4a, 0x90, 0x95, 0x99, 0x4a, 0x90, 0x93, - 0x99, 0x4a, 0x91, 0x95, 0x99, 0x4a, 0x91, 0x93, 0x99, 0x4a, 0x92, 0x95, - 0x99, 0x4a, 0x92, 0x93, 0x99, 0x4a, 0x93, 0x95, 0x99, 0x4a, 0x93, 0x93, - 0x99, 0x4a, 0x94, 0x95, 0x99, 0x4a, 0x94, 0x93, 0x99, 0x4a, 0x94, 0x95, - 0x99, 0x4a, 0x95, 0x93, 0x99, 0x4a, 0x95, 0x95, 0x99, 0x4a, 0x96, 0x93, - 0x99, 0x4a, 0x96, 0x93, 0x9a, 0x4a, 0x97, 0x93, 0x99, 0x4a, 0x97, 0x93, - 0x9a, 0x4a, 0x98, 0x93, 0x99, 0x4a, 0x98, 0x93, 0x9a, 0x4a, 0x98, 0x93, - 0x99, 0x4a, 0x99, 0x93, 0x9a, 0x4a, 0x99, 0x93, 0x99, 0x49, 0x99, 0x93, - 0x9a, 0x4a, 0x99, 0x93, 0x9a, 0x49, 0x99, 0x93, 0x9a, 0x4a, 0x99, 0x93, - 0x9b, 0x49, 0x9d, 0x93, 0x9b, 0x4b, 0x9d, 0x93, 0x9c, 0x4a, 0x9d, 0x93, - 0x9c, 0x4b, 0x9d, 0x93, 0x9d, 0x4a, 0x9e, 0x93, 0x9d, 0x4a, 0x9d, 0x93, - 0x9d, 0x4a, 0x9e, 0x93, 0x9d, 0x4a, 0x9e, 0x93, 0x9d, 0x4a, 0x9f, 0x93, - 0x9d, 0x4a, 0x9f, 0x91, 0x9d, 0x4a, 0x9f, 0x93, 0x9d, 0x4a, 0xa0, 0x91, - 0x9d, 0x4a, 0xa0, 0x93, 0x9d, 0x4a, 0xa1, 0x91, 0x9d, 0x4a, 0xa1, 0x93, - 0x9d, 0x4a, 0xa1, 0x8e, 0xa2, 0x4a, 0xa2, 0x8e, 0xa2, 0x4a, 0xa2, 0x8e, - 0xa2, 0x4a, 0xa3, 0x8e, 0xa3, 0x4a, 0xa3, 0x8e, 0xa3, 0x4a, 0xa3, 0x8e, - 0xa3, 0x4a, 0xa4, 0x8e, 0xa4, 0x4a, 0xa4, 0x8e, 0xa4, 0x4a, 0xa5, 0x8f, - 0xa6, 0x4a, 0xa5, 0x8f, 0xa6, 0x4a, 0xa5, 0x8f, 0xa6, 0x4a, 0xa6, 0x8f, - 0xa6, 0x4a, 0xa6, 0x8f, 0xa6, 0x4a, 0xa6, 0x8f, 0xa6, 0x4a, 0xa7, 0x8f, - 0xa7, 0x4a, 0xa7, 0x8f, 0xa7, 0x4a, 0xa8, 0x8f, 0xa8, 0x4a, 0xa8, 0x8f, - 0xa8, 0x4a, 0xa8, 0x8f, 0xa8, 0x4a, 0xa9, 0x90, 0xaa, 0x4a, 0xa9, 0x90, - 0xab, 0x4a, 0xaa, 0x90, 0xaa, 0x4a, 0xaa, 0x90, 0xab, 0x4a, 0xaa, 0x90, - 0xaa, 0x4a, 0xab, 0x90, 0xab, 0x4a, 0xab, 0x90, 0xab, 0x4a, 0xab, 0x90, - 0xab, 0x4a, 0xac, 0x90, 0xac, 0x4a, 0xac, 0x90, 0xac, 0x4a, 0xac, 0x90, - 0xac, 0x4a, 0xad, 0x91, 0xae, 0x4a, 0xad, 0x91, 0xaf, 0x4a, 0xae, 0x91, - 0xae, 0x4a, 0xae, 0x91, 0xaf, 0x4a, 0xae, 0x91, 0xae, 0x4a, 0xaf, 0x91, - 0xaf, 0x4a, 0xaf, 0x91, 0xaf, 0x4a, 0xaf, 0x91, 0xaf, 0x4a, 0xb0, 0x91, - 0xb0, 0x4a, 0xb0, 0x91, 0xb0, 0x4a, 0xb0, 0x91, 0xb0, 0x4a, 0xb1, 0x91, - 0xb1, 0x4a, 0xb1, 0x91, 0xb1, 0x4a, 0xb2, 0x92, 0xb2, 0x4a, 0xb2, 0x92, - 0xb3, 0x4a, 0xb2, 0x92, 0xb2, 0x4a, 0xb3, 0x92, 0xb3, 0x4a, 0xb3, 0x92, - 0xb3, 0x4a, 0xb3, 0x92, 0xb3, 0x4a, 0xb4, 0x92, 0xb4, 0x4a, 0xb4, 0x92, - 0xb4, 0x4a, 0xb4, 0x92, 0xb4, 0x4a, 0xb5, 0x92, 0xb5, 0x4a, 0xb5, 0x92, - 0xb5, 0x4a, 0xb5, 0x92, 0xb5, 0x4a, 0xb6, 0x92, 0xb6, 0x4a, 0xb6, 0x93, - 0xb6, 0x4b, 0xb6, 0x93, 0xb6, 0x4b, 0xb7, 0x93, 0xb7, 0x4b, 0xb7, 0x93, - 0xb7, 0x4b, 0xb7, 0x93, 0xb7, 0x4b, 0xb8, 0x93, 0xb8, 0x4b, 0xb8, 0x93, - 0xb8, 0x4b, 0xb8, 0x93, 0xb8, 0x4b, 0xb9, 0x93, 0xb9, 0x4b, 0xb9, 0x93, - 0xb9, 0x4b, 0xb9, 0x93, 0xb9, 0x4b, 0xba, 0x93, 0xba, 0x4b, 0xb9, 0x93, - 0xba, 0x4b, 0xba, 0x93, 0xba, 0x4b, 0xbb, 0x93, 0xbb, 0x4c, 0xbb, 0x93, - 0xbb, 0x4c, 0xbb, 0x93, 0xbb, 0x4c, 0xbc, 0x93, 0xbc, 0x4c, 0xbc, 0x93, - 0xbc, 0x4c, 0xbc, 0x93, 0xbc, 0x4c, 0xbd, 0x93, 0xbd, 0x4c, 0xbd, 0x93, - 0xbd, 0x4c, 0xbd, 0x93, 0xbd, 0x4c, 0xbd, 0x93, 0xbe, 0x4c, 0xbd, 0x93, - 0xbe, 0x4c, 0xbd, 0x93, 0xbe, 0x4c, 0xbd, 0x93, 0xbf, 0x4c, 0xbf, 0x93, - 0xbf, 0x4d, 0xbf, 0x93, 0xbf, 0x4d, 0xc0, 0x93, 0xc0, 0x4d, 0xc0, 0x93, - 0xc0, 0x4d, 0xc0, 0x93, 0xc0, 0x4d, 0xc1, 0x93, 0xc1, 0x4d, 0xc1, 0x93, - 0xc1, 0x4d, 0xc1, 0x93, 0xc1, 0x4d, 0xc1, 0x93, 0xc1, 0x4d, 0xc1, 0x93, - 0xc2, 0x4d, 0xc1, 0x93, 0xc2, 0x4d, 0xc2, 0x93, 0xc2, 0x4e, 0xc3, 0x93, - 0xc3, 0x4e, 0xc3, 0x93, 0xc3, 0x4e, 0xc3, 0x93, 0xc3, 0x4e, 0xc4, 0x93, - 0xc4, 0x4e, 0xc4, 0x93, 0xc4, 0x4e, 0xc4, 0x93, 0xc4, 0x4e, 0xc4, 0x93, - 0xc5, 0x4e, 0xc5, 0x93, 0xc5, 0x46, 0xc5, 0x93, 0xc5, 0x46, 0xc6, 0x93, - 0xc6, 0x46, 0xc6, 0x93, 0xc6, 0x46, 0xc6, 0x93, 0xc6, 0x46, 0xc8, 0x93, - 0xc6, 0x47, 0xc8, 0x93, 0xc7, 0x47, 0xc8, 0x93, 0xc7, 0x47, 0xc8, 0x93, - 0xc7, 0x47, 0xc8, 0x93, 0xc8, 0x47, 0xc8, 0x93, 0xc8, 0x47, 0xc8, 0x93, - 0xc8, 0x47, 0xc9, 0x93, 0xc9, 0x47, 0xc9, 0x93, 0xc9, 0x47, 0xca, 0x93, - 0xc9, 0x48, 0xcb, 0x93, 0xc9, 0x48, 0xca, 0x93, 0xca, 0x48, 0xcb, 0x93, - 0xca, 0x48, 0xca, 0x93, 0xca, 0x48, 0xcb, 0x93, 0xcb, 0x48, 0xcb, 0x93, - 0xcb, 0x48, 0xcb, 0x93, 0xcb, 0x48, 0xcc, 0x93, 0xcc, 0x48, 0xcc, 0x93, - 0xcc, 0x48, 0xcc, 0x93, 0xcc, 0x48, 0xcc, 0x93, 0xcc, 0x48, 0xcd, 0x93, - 0xcd, 0x49, 0xce, 0x93, 0xcd, 0x49, 0xcd, 0x93, 0xcd, 0x49, 0xce, 0x93, - 0xce, 0x49, 0xce, 0x93, 0xce, 0x49, 0xce, 0x93, 0xce, 0x49, 0xce, 0x93, - 0xce, 0x49, 0xcf, 0x93, 0xcf, 0x49, 0xcf, 0x93, 0xcf, 0x49, 0xcf, 0x93, - 0xcf, 0x49, 0xd0, 0x93, 0xd0, 0x49, 0xd0, 0x94, 0xd0, 0x4a, 0xd0, 0x94, - 0xd0, 0x4a, 0xd0, 0x94, 0xd0, 0x4a, 0xd1, 0x94, 0xd1, 0x4a, 0xd1, 0x94, - 0xd1, 0x4a, 0xd1, 0x94, 0xd1, 0x4a, 0xd2, 0x94, 0xd2, 0x4a, 0xd2, 0x94, - 0xd2, 0x4a, 0xd2, 0x94, 0xd2, 0x4a, 0xd2, 0x94, 0xd2, 0x4a, 0xd3, 0x94, - 0xd2, 0x4a, 0xd3, 0x94, 0xd2, 0x4a, 0xd3, 0x94, 0xd3, 0x4a, 0xd4, 0x94, - 0xd4, 0x4a, 0xd4, 0x94, 0xd4, 0x4a, 0xd4, 0x94, 0xd4, 0x4a, 0xd4, 0x94, - 0xd4, 0x4a, 0xd5, 0x94, 0xd5, 0x4a, 0xd5, 0x94, 0xd5, 0x4a, 0xd5, 0x94, - 0xd5, 0x4a, 0xd6, 0x94, 0xd5, 0x4a, 0xd6, 0x94, 0xd5, 0x4a, 0xd6, 0x94, - 0xd5, 0x4a, 0xd6, 0x95, 0xd6, 0x4a, 0xd7, 0x95, 0xd7, 0x4a, 0xd7, 0x95, - 0xd7, 0x4a, 0xd7, 0x95, 0xd7, 0x4a, 0xd7, 0x95, 0xd7, 0x4a, 0xd8, 0x95, - 0xd7, 0x4a, 0xd8, 0x95, 0xd7, 0x4a, 0xd8, 0x95, 0xd7, 0x4a, 0xd9, 0x95, - 0xd7, 0x4a, 0xd9, 0x96, 0xd9, 0x4a, 0xd9, 0x96, 0xd9, 0x4a, 0xd9, 0x96, - 0xd9, 0x4a, 0xda, 0x96, 0xda, 0x4a, 0xda, 0x96, 0xda, 0x4a, 0xda, 0x96, - 0xda, 0x4a, 0xda, 0x96, 0xda, 0x4a, 0xdb, 0x96, 0xda, 0x4a, 0xdb, 0x96, - 0xda, 0x4a, 0xdb, 0x96, 0xda, 0x4a, 0xdb, 0x97, 0xdb, 0x4a, 0xdc, 0x97, - 0xdc, 0x4a, 0xdc, 0x97, 0xdc, 0x4a, 0xdc, 0x97, 0xdc, 0x4a, 0xdd, 0x97, - 0xdd, 0x4a, 0xdd, 0x97, 0xdc, 0x4a, 0xdd, 0x97, 0xdd, 0x4a, 0xdd, 0x97, - 0xdc, 0x4a, 0xde, 0x97, 0xdd, 0x4a, 0xde, 0x97, 0xdc, 0x4a, 0xde, 0x97, - 0xdd, 0x4a, 0xde, 0x98, 0xde, 0x4a, 0xdf, 0x98, 0xdf, 0x4a, 0xdf, 0x98, - 0xdf, 0x4a, 0xdf, 0x98, 0xdf, 0x4a, 0xdf, 0x98, 0xdf, 0x4a, 0xe0, 0x98, - 0xdf, 0x4a, 0xe0, 0x98, 0xdf, 0x4a, 0xe0, 0x98, 0xdf, 0x4a, 0xe1, 0x98, - 0xdf, 0x4a, 0xe1, 0x99, 0xe1, 0x4a, 0xe1, 0x99, 0xe1, 0x4a, 0xe1, 0x99, - 0xe1, 0x4a, 0xe2, 0x99, 0xe2, 0x4a, 0xe2, 0x99, 0xe1, 0x4a, 0xe2, 0x99, - 0xe2, 0x4a, 0xe2, 0x99, 0xe1, 0x4a, 0xe3, 0x99, 0xe2, 0x4a, 0xe3, 0x99, - 0xe1, 0x4a, 0xe3, 0x99, 0xe2, 0x4a, 0xe3, 0x9a, 0xe3, 0x4a, 0xe4, 0x9a, - 0xe4, 0x4a, 0xe4, 0x9a, 0xe4, 0x4a, 0xe4, 0x9a, 0xe4, 0x4a, 0xe4, 0x9a, - 0xe4, 0x4a, 0xe5, 0x9a, 0xe4, 0x4a, 0xe5, 0x9a, 0xe4, 0x4a, 0xe5, 0x9a, - 0xe4, 0x4a, 0xe5, 0x9a, 0xe4, 0x4a, 0xe6, 0x9a, 0xe4, 0x4a, 0xe6, 0x9a, - 0xe4, 0x4a, 0xe6, 0x9a, 0xe6, 0x4a, 0xe6, 0x9a, 0xe6, 0x4a, 0xe7, 0x9a, - 0xe6, 0x4a, 0xe7, 0x9a, 0xe6, 0x4a, 0xe7, 0x9a, 0xe6, 0x4a, 0xe7, 0x9a, - 0xe6, 0x4a, 0xe8, 0x9a, 0xe6, 0x4a, 0xe8, 0x9a, 0xe6, 0x4a, 0xe8, 0x9a, - 0xe6, 0x4a, 0xe8, 0x9b, 0xe8, 0x4a, 0xe9, 0x9b, 0xe9, 0x4a, 0xe9, 0x9b, - 0xe8, 0x4a, 0xe9, 0x9b, 0xe9, 0x4a, 0xe9, 0x9b, 0xe8, 0x4a, 0xea, 0x9b, - 0xe9, 0x4a, 0xea, 0x9b, 0xe8, 0x4a, 0xea, 0x9b, 0xe9, 0x4a, 0xea, 0x9b, - 0xe8, 0x4a, 0xeb, 0x9b, 0xe9, 0x4a, 0xeb, 0x9c, 0xeb, 0x4a, 0xeb, 0x9c, - 0xeb, 0x4a, 0xeb, 0x9c, 0xeb, 0x4a, 0xec, 0x9c, 0xeb, 0x4a, 0xec, 0x9c, - 0xeb, 0x4a, 0xec, 0x9c, 0xeb, 0x4a, 0xec, 0x9c, 0xeb, 0x4a, 0xec, 0x9c, - 0xeb, 0x4a, 0xed, 0x9c, 0xeb, 0x4a, 0xed, 0x9d, 0xed, 0x4a, 0xed, 0x9d, - 0xed, 0x4a, 0xed, 0x9d, 0xed, 0x4a, 0xee, 0x9d, 0xed, 0x4a, 0xee, 0x9d, - 0xed, 0x4a, 0xee, 0x9d, 0xed, 0x4a, 0xee, 0x9d, 0xed, 0x4a, 0xef, 0x9d, - 0xed, 0x4a, 0xef, 0x9d, 0xed, 0x4a, 0xef, 0x9d, 0xed, 0x4a, 0xef, 0x9e, - 0xef, 0x4a, 0xf0, 0x9d, 0xed, 0x4a, 0xf0, 0x9e, 0xef, 0x4a, 0xf0, 0x9e, - 0xef, 0x4a, 0xf0, 0x9e, 0xef, 0x4a, 0xf1, 0x9e, 0xef, 0x4a, 0xf1, 0x9e, - 0xef, 0x4a, 0xf1, 0x9e, 0xef, 0x4a, 0xf1, 0x9e, 0xef, 0x4a, 0xf2, 0x9e, - 0xef, 0x4a, 0xf2, 0x9e, 0xef, 0x4a, 0xf2, 0x9f, 0xf2, 0x4a, 0xf2, 0x9f, - 0xf1, 0x4a, 0xf2, 0x9f, 0xf2, 0x4a, 0xf3, 0x9f, 0xf1, 0x4a, 0xf3, 0x9f, - 0xf2, 0x4a, 0xf3, 0x9f, 0xf1, 0x4a, 0xf3, 0x9f, 0xf2, 0x4a, 0xf4, 0x9f, - 0xf1, 0x4a, 0xf4, 0x9f, 0xf2, 0x4a, 0xf4, 0x9f, 0xf4, 0x4a, 0xf4, 0x9f, - 0xf4, 0x4a, 0xf5, 0x9f, 0xf4, 0x4a, 0xf5, 0x9f, 0xf4, 0x4a, 0xf5, 0x9f, - 0xf4, 0x4a, 0xf5, 0x9f, 0xf4, 0x4a, 0xf5, 0x9f, 0xf4, 0x4a, 0xf6, 0x9f, - 0xf4, 0x4a, 0xf6, 0x9f, 0xf4, 0x4a, 0xf6, 0x9f, 0xf4, 0x4a, 0xf6, 0xa0, - 0xf6, 0x4a, 0xf7, 0xa0, 0xf6, 0x4a, 0xf7, 0xa0, 0xf6, 0x4a, 0xf7, 0xa0, - 0xf6, 0x4a, 0xf7, 0xa0, 0xf6, 0x4a, 0xf8, 0xa0, 0xf6, 0x4a, 0xf8, 0xa0, - 0xf6, 0x4a, 0xf8, 0xa0, 0xf6, 0x4a, 0xf8, 0xa0, 0xf6, 0x4a, 0xf8, 0xa1, - 0xf8, 0x4a, 0xf9, 0xa0, 0xf6, 0x4a, 0xf9, 0xa1, 0xf8, 0x4a, 0xf9, 0xa1, - 0xf8, 0x4a, 0xf9, 0xa1, 0xf8, 0x4a, 0xfa, 0xa1, 0xf8, 0x4a, 0xfa, 0xa1, - 0xf8, 0x4a, 0xfa, 0xa1, 0xf8, 0x4a, 0xfa, 0xa1, 0xf8, 0x4a, 0xfa, 0xa1, - 0xf8, 0x4a, 0xfb, 0xa1, 0xf8, 0x4a, 0xfb, 0xa2, 0xfa, 0x4a, 0xfb, 0xa2, - 0xfa, 0x4a, 0xfb, 0xa2, 0xfa, 0x4a, 0xfc, 0xa2, 0xfa, 0x4a, 0xfc, 0xa2, - 0xfa, 0x4a, 0xfc, 0xa2, 0xfa, 0x4a, 0xfc, 0xa2, 0xfa, 0x4a, 0xfc, 0xa2, - 0xfa, 0x4a, 0xfd, 0xa2, 0xfa, 0x4a, 0xfd, 0xa2, 0xfa, 0x4a, 0xfd, 0xa2, - 0xfa, 0x4a, 0xfd, 0xa2, 0xfa, 0x4a, 0xfe, 0xa3, 0xfb, 0x4a, 0xfe, 0xa3, - 0xfc, 0x4a, 0xfe, 0xa3, 0xfb, 0x4a, 0xfe, 0xa3, 0xfc, 0x4a, 0xfe, 0xa3, - 0xfb, 0x4a, 0xff, 0xa3, 0xfc, 0x4a, 0xff, 0xa3, 0xfb, 0x4a, 0x03, 0x9b, - 0x98, 0x4a, 0x0a, 0x9d, 0x98, 0x4a, 0x0f, 0x9b, 0x98, 0x4a, 0x14, 0x9d, - 0x98, 0x4a, 0x17, 0x9b, 0x98, 0x4a, 0x1b, 0x9d, 0x98, 0x4a, 0x1e, 0x9b, - 0x98, 0x4a, 0x20, 0x9d, 0x98, 0x4a, 0x23, 0x9b, 0x98, 0x4a, 0x25, 0x9d, - 0x98, 0x4a, 0x27, 0x9b, 0x98, 0x4a, 0x29, 0x9d, 0x98, 0x4a, 0x2b, 0x9b, - 0x98, 0x4a, 0x2d, 0x9d, 0x98, 0x4a, 0x2f, 0x9b, 0x98, 0x4a, 0x31, 0x9d, - 0x98, 0x4a, 0x32, 0x9b, 0x98, 0x4a, 0x34, 0x9d, 0x98, 0x4a, 0x35, 0x9b, - 0x98, 0x4a, 0x37, 0x9d, 0x98, 0x4a, 0x38, 0x9b, 0x98, 0x4a, 0x3a, 0x9d, - 0x98, 0x4a, 0x3b, 0x9b, 0x98, 0x4a, 0x3c, 0x9d, 0x98, 0x4a, 0x3e, 0x9b, - 0x98, 0x4a, 0x3f, 0x9d, 0x98, 0x4a, 0x40, 0x9b, 0x98, 0x4a, 0x42, 0x9d, - 0x98, 0x4a, 0x43, 0x9b, 0x98, 0x4a, 0x44, 0x9d, 0x98, 0x4a, 0x45, 0x9b, - 0x98, 0x4a, 0x46, 0x9d, 0x98, 0x4a, 0x47, 0x9b, 0x98, 0x4a, 0x48, 0x9d, - 0x98, 0x4a, 0x49, 0x9b, 0x98, 0x4a, 0x4a, 0x9d, 0x98, 0x4a, 0x4b, 0x9b, - 0x98, 0x4a, 0x4c, 0x9d, 0x98, 0x4a, 0x4d, 0x9b, 0x98, 0x4a, 0x4e, 0x9d, - 0x98, 0x4a, 0x4f, 0x9b, 0x98, 0x4a, 0x50, 0x9d, 0x98, 0x4a, 0x51, 0x9b, - 0x98, 0x4a, 0x52, 0x9d, 0x98, 0x4a, 0x53, 0x9b, 0x98, 0x4a, 0x54, 0x9d, - 0x98, 0x4a, 0x55, 0x9b, 0x98, 0x4a, 0x56, 0x9d, 0x98, 0x4a, 0x57, 0x9b, - 0x98, 0x4a, 0x58, 0x9d, 0x98, 0x4a, 0x58, 0x9b, 0x98, 0x4a, 0x59, 0x9d, - 0x98, 0x4a, 0x5a, 0x9b, 0x98, 0x4a, 0x5b, 0x98, 0x98, 0x4a, 0x5c, 0x9b, - 0x98, 0x4a, 0x5d, 0x98, 0x98, 0x4a, 0x5d, 0x9b, 0x98, 0x4a, 0x5e, 0x98, - 0x98, 0x4a, 0x5f, 0x9b, 0x98, 0x4a, 0x60, 0x98, 0x98, 0x4a, 0x60, 0x9b, - 0x98, 0x4a, 0x61, 0x98, 0x98, 0x4a, 0x62, 0x9b, 0x98, 0x4a, 0x63, 0x98, - 0x98, 0x4a, 0x63, 0x9b, 0x98, 0x4a, 0x64, 0x98, 0x98, 0x4a, 0x65, 0x9b, - 0x98, 0x4a, 0x66, 0x98, 0x98, 0x4a, 0x66, 0x9b, 0x98, 0x4a, 0x67, 0x98, - 0x98, 0x4a, 0x68, 0x9b, 0x98, 0x4a, 0x68, 0x98, 0x98, 0x4a, 0x69, 0x9b, - 0x98, 0x4a, 0x6a, 0x98, 0x98, 0x4a, 0x6a, 0x9b, 0x98, 0x4a, 0x6b, 0x98, - 0x98, 0x4a, 0x6c, 0x9b, 0x98, 0x4a, 0x6c, 0x98, 0x98, 0x4a, 0x6d, 0x9b, - 0x98, 0x4a, 0x6e, 0x98, 0x98, 0x4a, 0x6e, 0x9b, 0x98, 0x4a, 0x6f, 0x98, - 0x98, 0x4a, 0x70, 0x9b, 0x98, 0x4a, 0x70, 0x98, 0x98, 0x4a, 0x71, 0x9b, - 0x98, 0x4a, 0x72, 0x98, 0x98, 0x4a, 0x72, 0x9b, 0x98, 0x4a, 0x73, 0x98, - 0x98, 0x4a, 0x73, 0x9b, 0x98, 0x4a, 0x74, 0x98, 0x98, 0x4a, 0x75, 0x96, - 0x99, 0x4a, 0x75, 0x98, 0x98, 0x4a, 0x76, 0x96, 0x99, 0x4a, 0x76, 0x98, - 0x98, 0x4a, 0x77, 0x96, 0x99, 0x4a, 0x78, 0x98, 0x98, 0x4a, 0x78, 0x96, - 0x99, 0x4a, 0x79, 0x98, 0x98, 0x4a, 0x79, 0x96, 0x99, 0x4a, 0x7a, 0x98, - 0x98, 0x4a, 0x7a, 0x96, 0x99, 0x4a, 0x7b, 0x98, 0x98, 0x4a, 0x7c, 0x96, - 0x99, 0x4a, 0x7c, 0x98, 0x98, 0x4a, 0x7d, 0x96, 0x99, 0x4a, 0x7d, 0x98, - 0x98, 0x4a, 0x7e, 0x96, 0x99, 0x4a, 0x7e, 0x98, 0x98, 0x4a, 0x7f, 0x96, - 0x99, 0x4a, 0x7f, 0x98, 0x98, 0x4a, 0x80, 0x96, 0x99, 0x4a, 0x81, 0x98, - 0x98, 0x4a, 0x81, 0x96, 0x99, 0x4a, 0x82, 0x98, 0x98, 0x4a, 0x82, 0x96, - 0x99, 0x4a, 0x83, 0x98, 0x98, 0x4a, 0x83, 0x96, 0x99, 0x4a, 0x84, 0x98, - 0x98, 0x4a, 0x84, 0x96, 0x99, 0x4a, 0x85, 0x98, 0x98, 0x4a, 0x85, 0x96, - 0x99, 0x4a, 0x86, 0x98, 0x98, 0x4a, 0x86, 0x96, 0x99, 0x4a, 0x87, 0x98, - 0x98, 0x4a, 0x87, 0x96, 0x99, 0x4a, 0x88, 0x98, 0x98, 0x4a, 0x88, 0x96, - 0x99, 0x4a, 0x89, 0x93, 0x99, 0x4a, 0x89, 0x96, 0x99, 0x4a, 0x8a, 0x93, - 0x99, 0x4a, 0x8a, 0x96, 0x99, 0x4a, 0x8b, 0x93, 0x99, 0x4a, 0x8b, 0x96, - 0x99, 0x4a, 0x8c, 0x93, 0x99, 0x4a, 0x8c, 0x96, 0x99, 0x4a, 0x8d, 0x93, - 0x99, 0x4a, 0x8d, 0x96, 0x99, 0x4a, 0x8e, 0x93, 0x99, 0x4a, 0x8e, 0x96, - 0x99, 0x4a, 0x8e, 0x93, 0x99, 0x4a, 0x8f, 0x96, 0x99, 0x4a, 0x8f, 0x93, - 0x99, 0x4a, 0x90, 0x96, 0x99, 0x4a, 0x90, 0x93, 0x99, 0x4a, 0x91, 0x96, - 0x99, 0x4a, 0x91, 0x93, 0x99, 0x4a, 0x92, 0x96, 0x99, 0x4a, 0x92, 0x93, - 0x99, 0x4a, 0x93, 0x96, 0x99, 0x4a, 0x93, 0x93, 0x99, 0x4a, 0x94, 0x96, - 0x99, 0x4a, 0x94, 0x93, 0x99, 0x4a, 0x94, 0x96, 0x99, 0x4a, 0x95, 0x93, - 0x99, 0x4a, 0x95, 0x96, 0x99, 0x4a, 0x96, 0x93, 0x99, 0x4a, 0x96, 0x93, - 0x9a, 0x4a, 0x97, 0x93, 0x99, 0x4a, 0x97, 0x93, 0x9a, 0x4a, 0x98, 0x93, - 0x99, 0x4a, 0x98, 0x93, 0x9a, 0x4a, 0x98, 0x93, 0x99, 0x4a, 0x99, 0x93, - 0x9a, 0x4a, 0x98, 0x93, 0x99, 0x4a, 0x99, 0x93, 0x9a, 0x4a, 0x98, 0x93, - 0x9a, 0x4a, 0x99, 0x93, 0x9a, 0x4a, 0x99, 0x93, 0x9b, 0x48, 0x9d, 0x93, - 0x9b, 0x4b, 0x9d, 0x93, 0x9c, 0x4a, 0x9d, 0x93, 0x9c, 0x4b, 0x9d, 0x93, - 0x9d, 0x4a, 0x9e, 0x93, 0x9d, 0x4a, 0x9d, 0x93, 0x9d, 0x4a, 0x9e, 0x93, - 0x9d, 0x4a, 0x9e, 0x93, 0x9d, 0x4a, 0x9f, 0x93, 0x9d, 0x4a, 0x9f, 0x93, - 0x9d, 0x4a, 0x9f, 0x93, 0x9d, 0x4a, 0xa0, 0x93, 0x9d, 0x4a, 0xa0, 0x93, - 0x9d, 0x4a, 0xa1, 0x90, 0x9d, 0x4a, 0xa1, 0x93, 0x9d, 0x4a, 0xa1, 0x90, - 0x9d, 0x4a, 0xa2, 0x8e, 0xa4, 0x4a, 0xa2, 0x8e, 0xa4, 0x4a, 0xa3, 0x8e, - 0xa4, 0x4a, 0xa3, 0x8e, 0xa4, 0x4a, 0xa3, 0x8e, 0xa4, 0x4a, 0xa4, 0x8e, - 0xa4, 0x4a, 0xa4, 0x8e, 0xa4, 0x4a, 0xa5, 0x8e, 0xa5, 0x4a, 0xa5, 0x8e, - 0xa5, 0x4a, 0xa5, 0x8e, 0xa5, 0x4a, 0xa6, 0x8e, 0xa6, 0x4a, 0xa6, 0x8e, - 0xa6, 0x4a, 0xa6, 0x8f, 0xa8, 0x4a, 0xa7, 0x8f, 0xa8, 0x4a, 0xa7, 0x8f, - 0xa8, 0x4a, 0xa8, 0x8f, 0xa8, 0x4a, 0xa8, 0x8f, 0xa8, 0x4a, 0xa8, 0x8f, - 0xa8, 0x4a, 0xa9, 0x8f, 0xa9, 0x4a, 0xa9, 0x8f, 0xa9, 0x4a, 0xaa, 0x8f, - 0xaa, 0x4a, 0xaa, 0x8f, 0xaa, 0x4a, 0xaa, 0x8f, 0xaa, 0x4a, 0xab, 0x8f, - 0xab, 0x4a, 0xab, 0x90, 0xac, 0x4a, 0xab, 0x90, 0xad, 0x4a, 0xac, 0x90, - 0xac, 0x4a, 0xac, 0x90, 0xad, 0x4a, 0xac, 0x90, 0xac, 0x4a, 0xad, 0x90, - 0xad, 0x4a, 0xad, 0x90, 0xad, 0x4a, 0xae, 0x90, 0xae, 0x4a, 0xae, 0x90, - 0xae, 0x4a, 0xae, 0x90, 0xae, 0x4a, 0xaf, 0x90, 0xaf, 0x4a, 0xaf, 0x91, - 0xb0, 0x4a, 0xaf, 0x91, 0xb1, 0x4a, 0xb0, 0x91, 0xb0, 0x4a, 0xb0, 0x91, - 0xb1, 0x4a, 0xb0, 0x91, 0xb0, 0x4a, 0xb1, 0x91, 0xb1, 0x4a, 0xb1, 0x91, - 0xb1, 0x4a, 0xb2, 0x91, 0xb2, 0x4a, 0xb2, 0x91, 0xb2, 0x4a, 0xb2, 0x91, - 0xb2, 0x4a, 0xb3, 0x91, 0xb3, 0x4a, 0xb3, 0x91, 0xb3, 0x4a, 0xb3, 0x91, - 0xb3, 0x4a, 0xb4, 0x92, 0xb4, 0x4a, 0xb4, 0x92, 0xb5, 0x4a, 0xb4, 0x92, - 0xb4, 0x4a, 0xb5, 0x92, 0xb5, 0x4a, 0xb5, 0x92, 0xb5, 0x4a, 0xb5, 0x92, - 0xb5, 0x4a, 0xb6, 0x92, 0xb6, 0x4a, 0xb6, 0x92, 0xb6, 0x4a, 0xb6, 0x92, - 0xb6, 0x4a, 0xb7, 0x92, 0xb7, 0x4a, 0xb7, 0x92, 0xb7, 0x4a, 0xb7, 0x92, - 0xb7, 0x4a, 0xb8, 0x92, 0xb8, 0x4a, 0xb8, 0x93, 0xb8, 0x4b, 0xb8, 0x93, - 0xb8, 0x4b, 0xb9, 0x93, 0xb9, 0x4b, 0xb9, 0x93, 0xb9, 0x4b, 0xb9, 0x93, - 0xb9, 0x4b, 0xba, 0x93, 0xba, 0x4b, 0xba, 0x93, 0xba, 0x4b, 0xba, 0x93, - 0xba, 0x4b, 0xbb, 0x93, 0xbb, 0x4b, 0xbb, 0x93, 0xbb, 0x4b, 0xbb, 0x93, - 0xbb, 0x4b, 0xbb, 0x93, 0xbc, 0x4b, 0xbb, 0x93, 0xbc, 0x4b, 0xbc, 0x93, - 0xbc, 0x4c, 0xbd, 0x93, 0xbd, 0x4c, 0xbd, 0x93, 0xbd, 0x4c, 0xbd, 0x93, - 0xbd, 0x4c, 0xbe, 0x93, 0xbe, 0x4c, 0xbe, 0x93, 0xbe, 0x4c, 0xbe, 0x93, - 0xbe, 0x4c, 0xbf, 0x93, 0xbf, 0x4c, 0xbf, 0x93, 0xbf, 0x4c, 0xbf, 0x93, - 0xbf, 0x4c, 0xbf, 0x93, 0xc0, 0x4c, 0xbf, 0x93, 0xc0, 0x4c, 0xbf, 0x93, - 0xc0, 0x4c, 0xc1, 0x93, 0xc1, 0x4d, 0xc1, 0x93, 0xc1, 0x4d, 0xc1, 0x93, - 0xc1, 0x4d, 0xc1, 0x93, 0xc1, 0x4d, 0xc2, 0x93, 0xc2, 0x4d, 0xc2, 0x93, - 0xc2, 0x4d, 0xc2, 0x93, 0xc2, 0x4d, 0xc2, 0x93, 0xc3, 0x4d, 0xc2, 0x93, - 0xc3, 0x4d, 0xc2, 0x93, 0xc3, 0x4d, 0xc2, 0x93, 0xc4, 0x4d, 0xc4, 0x93, - 0xc4, 0x4e, 0xc4, 0x93, 0xc4, 0x4e, 0xc5, 0x93, 0xc5, 0x4e, 0xc5, 0x93, - 0xc5, 0x4e, 0xc5, 0x93, 0xc5, 0x4e, 0xc6, 0x93, 0xc6, 0x4e, 0xc6, 0x93, - 0xc6, 0x4e, 0xc6, 0x93, 0xc6, 0x46, 0xc6, 0x93, 0xc6, 0x46, 0xc7, 0x93, - 0xc7, 0x46, 0xc7, 0x93, 0xc7, 0x46, 0xc7, 0x93, 0xc7, 0x46, 0xc8, 0x93, - 0xc8, 0x46, 0xc9, 0x93, 0xc8, 0x47, 0xc9, 0x93, 0xc8, 0x47, 0xc9, 0x93, - 0xc9, 0x47, 0xc9, 0x93, 0xc9, 0x47, 0xc9, 0x93, 0xc9, 0x47, 0xc9, 0x93, - 0xc9, 0x47, 0xca, 0x93, 0xca, 0x47, 0xca, 0x93, 0xca, 0x47, 0xca, 0x93, - 0xca, 0x47, 0xcc, 0x93, 0xcb, 0x48, 0xcc, 0x93, 0xcb, 0x48, 0xcc, 0x93, - 0xcb, 0x48, 0xcc, 0x93, 0xcc, 0x48, 0xcc, 0x93, 0xcc, 0x48, 0xcc, 0x93, - 0xcc, 0x48, 0xcc, 0x93, 0xcc, 0x48, 0xcd, 0x93, 0xcd, 0x48, 0xcd, 0x93, - 0xcd, 0x48, 0xcd, 0x93, 0xcd, 0x48, 0xce, 0x93, 0xce, 0x48, 0xce, 0x93, - 0xce, 0x48, 0xcf, 0x93, 0xce, 0x49, 0xcf, 0x93, 0xce, 0x49, 0xcf, 0x93, - 0xcf, 0x49, 0xcf, 0x93, 0xcf, 0x49, 0xcf, 0x93, 0xcf, 0x49, 0xd0, 0x93, - 0xd0, 0x49, 0xd0, 0x93, 0xd0, 0x49, 0xd0, 0x93, 0xd0, 0x49, 0xd0, 0x93, - 0xd0, 0x49, 0xd1, 0x93, 0xd1, 0x49, 0xd1, 0x93, 0xd1, 0x49, 0xd1, 0x94, - 0xd1, 0x4a, 0xd2, 0x94, 0xd2, 0x4a, 0xd2, 0x94, 0xd2, 0x4a, 0xd2, 0x94, - 0xd2, 0x4a, 0xd2, 0x94, 0xd2, 0x4a, 0xd3, 0x94, 0xd3, 0x4a, 0xd3, 0x94, - 0xd3, 0x4a, 0xd3, 0x94, 0xd3, 0x4a, 0xd4, 0x94, 0xd4, 0x4a, 0xd4, 0x94, - 0xd3, 0x4a, 0xd4, 0x94, 0xd4, 0x4a, 0xd4, 0x95, 0xd4, 0x4a, 0xd5, 0x95, - 0xd5, 0x4a, 0xd5, 0x95, 0xd5, 0x4a, 0xd5, 0x95, 0xd5, 0x4a, 0xd6, 0x95, - 0xd6, 0x4a, 0xd6, 0x95, 0xd6, 0x4a, 0xd6, 0x95, 0xd6, 0x4a, 0xd6, 0x95, - 0xd6, 0x4a, 0xd7, 0x95, 0xd6, 0x4a, 0xd7, 0x95, 0xd6, 0x4a, 0xd7, 0x95, - 0xd6, 0x4a, 0xd7, 0x95, 0xd6, 0x4a, 0xd8, 0x96, 0xd8, 0x4a, 0xd8, 0x96, - 0xd8, 0x4a, 0xd8, 0x96, 0xd8, 0x4a, 0xd9, 0x96, 0xd9, 0x4a, 0xd9, 0x96, - 0xd9, 0x4a, 0xd9, 0x96, 0xd9, 0x4a, 0xd9, 0x96, 0xd9, 0x4a, 0xda, 0x96, - 0xd9, 0x4a, 0xda, 0x96, 0xd9, 0x4a, 0xda, 0x97, 0xda, 0x4a, 0xda, 0x97, - 0xda, 0x4a, 0xdb, 0x97, 0xdb, 0x4a, 0xdb, 0x97, 0xdb, 0x4a, 0xdb, 0x97, - 0xdb, 0x4a, 0xdb, 0x97, 0xdb, 0x4a, 0xdc, 0x97, 0xdb, 0x4a, 0xdc, 0x97, - 0xdb, 0x4a, 0xdc, 0x97, 0xdb, 0x4a, 0xdd, 0x98, 0xdd, 0x4a, 0xdd, 0x98, - 0xdd, 0x4a, 0xdd, 0x98, 0xdd, 0x4a, 0xdd, 0x98, 0xdd, 0x4a, 0xde, 0x98, - 0xde, 0x4a, 0xde, 0x98, 0xde, 0x4a, 0xde, 0x98, 0xde, 0x4a, 0xde, 0x98, - 0xde, 0x4a, 0xdf, 0x98, 0xde, 0x4a, 0xdf, 0x98, 0xde, 0x4a, 0xdf, 0x98, - 0xde, 0x4a, 0xdf, 0x98, 0xde, 0x4a, 0xe0, 0x98, 0xe0, 0x4a, 0xe0, 0x98, - 0xe0, 0x4a, 0xe0, 0x98, 0xe0, 0x4a, 0xe1, 0x98, 0xe0, 0x4a, 0xe1, 0x98, - 0xe0, 0x4a, 0xe1, 0x98, 0xe0, 0x4a, 0xe1, 0x98, 0xe0, 0x4a, 0xe2, 0x98, - 0xe0, 0x4a, 0xe2, 0x98, 0xe0, 0x4a, 0xe2, 0x99, 0xe2, 0x4a, 0xe2, 0x99, - 0xe2, 0x4a, 0xe3, 0x99, 0xe3, 0x4a, 0xe3, 0x99, 0xe2, 0x4a, 0xe3, 0x99, - 0xe3, 0x4a, 0xe3, 0x99, 0xe2, 0x4a, 0xe4, 0x99, 0xe3, 0x4a, 0xe4, 0x99, - 0xe2, 0x4a, 0xe4, 0x99, 0xe3, 0x4a, 0xe4, 0x9a, 0xe4, 0x4a, 0xe5, 0x9a, - 0xe5, 0x4a, 0xe5, 0x9a, 0xe5, 0x4a, 0xe5, 0x9a, 0xe5, 0x4a, 0xe5, 0x9a, - 0xe5, 0x4a, 0xe6, 0x9a, 0xe5, 0x4a, 0xe6, 0x9a, 0xe5, 0x4a, 0xe6, 0x9a, - 0xe5, 0x4a, 0xe6, 0x9a, 0xe5, 0x4a, 0xe7, 0x9a, 0xe5, 0x4a, 0xe7, 0x9a, - 0xe5, 0x4a, 0xe7, 0x9a, 0xe5, 0x4a, 0xe7, 0x9b, 0xe7, 0x4a, 0xe8, 0x9b, - 0xe7, 0x4a, 0xe8, 0x9b, 0xe7, 0x4a, 0xe8, 0x9b, 0xe7, 0x4a, 0xe8, 0x9b, - 0xe7, 0x4a, 0xe9, 0x9b, 0xe7, 0x4a, 0xe9, 0x9b, 0xe7, 0x4a, 0xe9, 0x9b, - 0xe7, 0x4a, 0xe9, 0x9b, 0xe7, 0x4a, 0xea, 0x9c, 0xea, 0x4a, 0xea, 0x9c, - 0xea, 0x4a, 0xea, 0x9c, 0xea, 0x4a, 0xea, 0x9c, 0xea, 0x4a, 0xeb, 0x9c, - 0xea, 0x4a, 0xeb, 0x9c, 0xea, 0x4a, 0xeb, 0x9c, 0xea, 0x4a, 0xeb, 0x9c, - 0xea, 0x4a, 0xec, 0x9c, 0xea, 0x4a, 0xec, 0x9c, 0xea, 0x4a, 0xec, 0x9d, - 0xec, 0x4a, 0xec, 0x9d, 0xec, 0x4a, 0xec, 0x9d, 0xec, 0x4a, 0xed, 0x9d, - 0xec, 0x4a, 0xed, 0x9d, 0xec, 0x4a, 0xed, 0x9d, 0xec, 0x4a, 0xed, 0x9d, - 0xec, 0x4a, 0xee, 0x9d, 0xec, 0x4a, 0xee, 0x9d, 0xec, 0x4a, 0xee, 0x9d, - 0xee, 0x4a, 0xee, 0x9d, 0xee, 0x4a, 0xef, 0x9d, 0xee, 0x4a, 0xef, 0x9d, - 0xee, 0x4a, 0xef, 0x9d, 0xee, 0x4a, 0xef, 0x9d, 0xee, 0x4a, 0xf0, 0x9d, - 0xee, 0x4a, 0xf0, 0x9d, 0xee, 0x4a, 0xf0, 0x9d, 0xee, 0x4a, 0xf0, 0x9e, - 0xf0, 0x4a, 0xf1, 0x9e, 0xf1, 0x4a, 0xf1, 0x9e, 0xf0, 0x4a, 0xf1, 0x9e, - 0xf1, 0x4a, 0xf1, 0x9e, 0xf0, 0x4a, 0xf2, 0x9e, 0xf1, 0x4a, 0xf2, 0x9e, - 0xf0, 0x4a, 0xf2, 0x9e, 0xf1, 0x4a, 0xf2, 0x9e, 0xf0, 0x4a, 0xf2, 0x9e, - 0xf1, 0x4a, 0xf3, 0x9e, 0xf0, 0x4a, 0xf3, 0x9e, 0xf1, 0x4a, 0xf3, 0x9f, - 0xf3, 0x4a, 0xf3, 0x9f, 0xf2, 0x4a, 0xf4, 0x9f, 0xf3, 0x4a, 0xf4, 0x9f, - 0xf2, 0x4a, 0xf4, 0x9f, 0xf3, 0x4a, 0xf4, 0x9f, 0xf2, 0x4a, 0xf5, 0x9f, - 0xf3, 0x4a, 0xf5, 0x9f, 0xf2, 0x4a, 0xf5, 0x9f, 0xf3, 0x4a, 0xf5, 0xa0, - 0xf5, 0x4a, 0xf5, 0xa0, 0xf5, 0x4a, 0xf6, 0xa0, 0xf5, 0x4a, 0xf6, 0xa0, - 0xf5, 0x4a, 0xf6, 0xa0, 0xf5, 0x4a, 0xf6, 0xa0, 0xf5, 0x4a, 0xf7, 0xa0, - 0xf5, 0x4a, 0xf7, 0xa0, 0xf5, 0x4a, 0xf7, 0xa0, 0xf5, 0x4a, 0xf7, 0xa1, - 0xf7, 0x4a, 0xf8, 0xa1, 0xf7, 0x4a, 0xf8, 0xa1, 0xf7, 0x4a, 0xf8, 0xa1, - 0xf7, 0x4a, 0xf8, 0xa1, 0xf7, 0x4a, 0xf8, 0xa1, 0xf7, 0x4a, 0xf9, 0xa1, - 0xf7, 0x4a, 0xf9, 0xa1, 0xf7, 0x4a, 0xf9, 0xa1, 0xf7, 0x4a, 0xf9, 0xa1, - 0xf7, 0x4a, 0xfa, 0xa1, 0xf9, 0x4a, 0xfa, 0xa1, 0xf7, 0x4a, 0xfa, 0xa1, - 0xf9, 0x4a, 0xfa, 0xa1, 0xf9, 0x4a, 0xfa, 0xa1, 0xf9, 0x4a, 0xfb, 0xa1, - 0xf9, 0x4a, 0xfb, 0xa1, 0xf9, 0x4a, 0xfb, 0xa1, 0xf9, 0x4a, 0xfb, 0xa1, - 0xf9, 0x4a, 0xfc, 0xa1, 0xf9, 0x4a, 0xfc, 0xa1, 0xf9, 0x4a, 0xfc, 0xa2, - 0xfb, 0x4a, 0xfc, 0xa2, 0xfb, 0x4a, 0xfc, 0xa2, 0xfb, 0x4a, 0xfd, 0xa2, - 0xfb, 0x4a, 0xfd, 0xa2, 0xfb, 0x4a, 0xfd, 0xa2, 0xfb, 0x4a, 0xfd, 0xa2, - 0xfb, 0x4a, 0xfe, 0xa2, 0xfb, 0x4a, 0xfe, 0xa2, 0xfb, 0x4a, 0xfe, 0xa2, - 0xfb, 0x4a, 0xfe, 0xa2, 0xfb, 0x4a, 0xfe, 0xa2, 0xfb, 0x4a, 0xff, 0xa2, - 0xfb, 0x4a, 0xff, 0xa2, 0xfb, 0x4a, 0x03, 0xa0, 0x97, 0x4b, 0x0a, 0x9e, - 0x98, 0x4b, 0x0f, 0xa0, 0x97, 0x4b, 0x14, 0x9e, 0x98, 0x4b, 0x17, 0xa0, - 0x97, 0x4b, 0x1b, 0x9e, 0x98, 0x4b, 0x1e, 0xa0, 0x97, 0x4b, 0x20, 0x9e, - 0x98, 0x4b, 0x23, 0xa0, 0x97, 0x4b, 0x25, 0x9e, 0x98, 0x4b, 0x27, 0xa0, - 0x97, 0x4b, 0x29, 0x9e, 0x98, 0x4b, 0x2b, 0xa0, 0x97, 0x4b, 0x2d, 0x9e, - 0x98, 0x4b, 0x2f, 0xa0, 0x97, 0x4b, 0x31, 0x9e, 0x98, 0x4b, 0x32, 0x9b, - 0x98, 0x4b, 0x34, 0x9e, 0x98, 0x4b, 0x35, 0x9b, 0x98, 0x4b, 0x37, 0x9e, - 0x98, 0x4b, 0x38, 0x9b, 0x98, 0x4b, 0x3a, 0x9e, 0x98, 0x4b, 0x3b, 0x9b, - 0x98, 0x4b, 0x3c, 0x9e, 0x98, 0x4b, 0x3e, 0x9b, 0x98, 0x4b, 0x3f, 0x9e, - 0x98, 0x4b, 0x40, 0x9b, 0x98, 0x4b, 0x42, 0x9e, 0x98, 0x4b, 0x43, 0x9b, - 0x98, 0x4b, 0x44, 0x9e, 0x98, 0x4b, 0x45, 0x9b, 0x98, 0x4b, 0x46, 0x9e, - 0x98, 0x4b, 0x47, 0x9b, 0x98, 0x4b, 0x48, 0x9e, 0x98, 0x4b, 0x49, 0x9b, - 0x98, 0x4b, 0x4a, 0x9e, 0x98, 0x4b, 0x4b, 0x9b, 0x98, 0x4b, 0x4c, 0x9e, - 0x98, 0x4b, 0x4d, 0x9b, 0x98, 0x4b, 0x4e, 0x9e, 0x98, 0x4b, 0x4f, 0x9b, - 0x98, 0x4b, 0x50, 0x98, 0x98, 0x4b, 0x51, 0x9b, 0x98, 0x4b, 0x52, 0x98, - 0x98, 0x4b, 0x53, 0x9b, 0x98, 0x4b, 0x54, 0x98, 0x98, 0x4b, 0x55, 0x9b, - 0x98, 0x4b, 0x56, 0x98, 0x98, 0x4b, 0x57, 0x9b, 0x98, 0x4b, 0x58, 0x98, - 0x98, 0x4b, 0x58, 0x9b, 0x98, 0x4b, 0x59, 0x98, 0x98, 0x4b, 0x5a, 0x9b, - 0x98, 0x4b, 0x5b, 0x98, 0x98, 0x4b, 0x5c, 0x9b, 0x98, 0x4b, 0x5d, 0x98, - 0x98, 0x4b, 0x5d, 0x9b, 0x98, 0x4b, 0x5e, 0x98, 0x98, 0x4b, 0x5f, 0x9b, - 0x98, 0x4b, 0x60, 0x98, 0x98, 0x4b, 0x60, 0x9b, 0x98, 0x4b, 0x61, 0x98, - 0x98, 0x4b, 0x62, 0x9b, 0x98, 0x4b, 0x63, 0x98, 0x98, 0x4b, 0x63, 0x9b, - 0x98, 0x4b, 0x64, 0x98, 0x98, 0x4b, 0x65, 0x9b, 0x98, 0x4b, 0x66, 0x98, - 0x98, 0x4b, 0x66, 0x9b, 0x98, 0x4b, 0x67, 0x98, 0x98, 0x4b, 0x68, 0x9b, - 0x98, 0x4b, 0x68, 0x98, 0x98, 0x4b, 0x69, 0x9b, 0x98, 0x4b, 0x6a, 0x98, - 0x98, 0x4b, 0x6a, 0x9b, 0x98, 0x4b, 0x6b, 0x98, 0x98, 0x4b, 0x6c, 0x9b, - 0x98, 0x4b, 0x6c, 0x98, 0x98, 0x4b, 0x6d, 0x9b, 0x98, 0x4b, 0x6e, 0x98, - 0x98, 0x4b, 0x6e, 0x9b, 0x98, 0x4b, 0x6f, 0x98, 0x98, 0x4b, 0x70, 0x9b, - 0x98, 0x4b, 0x70, 0x98, 0x98, 0x4b, 0x71, 0x9b, 0x98, 0x4b, 0x72, 0x98, - 0x98, 0x4b, 0x72, 0x95, 0x99, 0x4b, 0x73, 0x98, 0x98, 0x4b, 0x73, 0x95, - 0x99, 0x4b, 0x74, 0x98, 0x98, 0x4b, 0x75, 0x95, 0x99, 0x4b, 0x75, 0x98, - 0x98, 0x4b, 0x76, 0x95, 0x99, 0x4b, 0x76, 0x98, 0x98, 0x4b, 0x77, 0x95, - 0x99, 0x4b, 0x78, 0x98, 0x98, 0x4b, 0x78, 0x95, 0x99, 0x4b, 0x79, 0x98, - 0x98, 0x4b, 0x79, 0x95, 0x99, 0x4b, 0x7a, 0x98, 0x98, 0x4b, 0x7a, 0x95, - 0x99, 0x4b, 0x7b, 0x98, 0x98, 0x4b, 0x7c, 0x95, 0x99, 0x4b, 0x7c, 0x98, - 0x98, 0x4b, 0x7d, 0x95, 0x99, 0x4b, 0x7d, 0x98, 0x98, 0x4b, 0x7e, 0x95, - 0x99, 0x4b, 0x7e, 0x98, 0x98, 0x4b, 0x7f, 0x95, 0x99, 0x4b, 0x7f, 0x98, - 0x98, 0x4b, 0x80, 0x95, 0x99, 0x4b, 0x81, 0x98, 0x98, 0x4b, 0x81, 0x95, - 0x99, 0x4b, 0x82, 0x98, 0x98, 0x4b, 0x82, 0x95, 0x99, 0x4b, 0x83, 0x98, - 0x98, 0x4b, 0x83, 0x95, 0x99, 0x4b, 0x84, 0x98, 0x98, 0x4b, 0x84, 0x95, - 0x99, 0x4b, 0x85, 0x98, 0x98, 0x4b, 0x85, 0x95, 0x99, 0x4b, 0x86, 0x98, - 0x98, 0x4b, 0x86, 0x95, 0x99, 0x4b, 0x87, 0x98, 0x98, 0x4b, 0x87, 0x95, - 0x99, 0x4b, 0x88, 0x98, 0x98, 0x4b, 0x88, 0x95, 0x99, 0x4b, 0x89, 0x98, - 0x98, 0x4b, 0x89, 0x95, 0x99, 0x4b, 0x8a, 0x98, 0x98, 0x4b, 0x8a, 0x95, - 0x99, 0x4b, 0x8b, 0x98, 0x98, 0x4b, 0x8b, 0x95, 0x99, 0x4b, 0x8c, 0x98, - 0x98, 0x4b, 0x8c, 0x95, 0x99, 0x4b, 0x8d, 0x98, 0x98, 0x4b, 0x8d, 0x95, - 0x99, 0x4b, 0x8e, 0x98, 0x98, 0x4b, 0x8e, 0x95, 0x99, 0x4b, 0x8e, 0x94, - 0x99, 0x4b, 0x8f, 0x95, 0x99, 0x4b, 0x8f, 0x94, 0x99, 0x4b, 0x90, 0x95, - 0x99, 0x4b, 0x90, 0x94, 0x99, 0x4b, 0x91, 0x95, 0x99, 0x4b, 0x91, 0x94, - 0x99, 0x4b, 0x92, 0x95, 0x99, 0x4b, 0x92, 0x94, 0x99, 0x4b, 0x93, 0x95, - 0x99, 0x4b, 0x93, 0x94, 0x99, 0x4b, 0x94, 0x95, 0x99, 0x4b, 0x94, 0x94, - 0x99, 0x4b, 0x94, 0x95, 0x99, 0x4b, 0x95, 0x94, 0x99, 0x4b, 0x95, 0x95, - 0x99, 0x4b, 0x96, 0x94, 0x99, 0x4b, 0x96, 0x95, 0x99, 0x4b, 0x97, 0x94, - 0x99, 0x4b, 0x97, 0x95, 0x99, 0x4b, 0x98, 0x94, 0x99, 0x4b, 0x98, 0x94, - 0x9a, 0x4b, 0x98, 0x94, 0x99, 0x4b, 0x99, 0x94, 0x9a, 0x4b, 0x98, 0x94, - 0x99, 0x4b, 0x99, 0x94, 0x9a, 0x4b, 0x98, 0x94, 0x9a, 0x4b, 0x99, 0x94, - 0x9a, 0x4b, 0x99, 0x94, 0x9b, 0x49, 0x9d, 0x94, 0x9b, 0x4b, 0x9d, 0x94, - 0x9c, 0x4b, 0x9d, 0x94, 0x9c, 0x4b, 0x9d, 0x94, 0x9d, 0x4b, 0x9d, 0x93, - 0x9d, 0x4b, 0x9d, 0x94, 0x9d, 0x4b, 0x9e, 0x93, 0x9d, 0x4b, 0x9e, 0x94, - 0x9d, 0x4b, 0x9f, 0x93, 0x9d, 0x4b, 0x9f, 0x94, 0x9d, 0x4b, 0x9f, 0x93, - 0x9d, 0x4b, 0xa0, 0x94, 0x9d, 0x4b, 0xa0, 0x93, 0x9d, 0x4b, 0xa1, 0x91, - 0x9d, 0x4b, 0xa1, 0x93, 0x9d, 0x4b, 0xa1, 0x91, 0x9d, 0x4b, 0xa2, 0x8e, - 0xa2, 0x4b, 0xa2, 0x8e, 0xa2, 0x4b, 0xa3, 0x8e, 0xa3, 0x4b, 0xa3, 0x8e, - 0xa3, 0x4b, 0xa3, 0x8e, 0xa3, 0x4b, 0xa4, 0x8f, 0xa6, 0x4b, 0xa4, 0x8f, - 0xa6, 0x4b, 0xa5, 0x8f, 0xa6, 0x4b, 0xa5, 0x8f, 0xa6, 0x4b, 0xa5, 0x8f, - 0xa6, 0x4b, 0xa6, 0x8f, 0xa6, 0x4b, 0xa6, 0x8f, 0xa6, 0x4b, 0xa6, 0x8f, - 0xa6, 0x4b, 0xa7, 0x8f, 0xa7, 0x4b, 0xa7, 0x8f, 0xa7, 0x4b, 0xa8, 0x8f, - 0xa8, 0x4b, 0xa8, 0x8f, 0xa8, 0x4b, 0xa8, 0x8f, 0xa8, 0x4b, 0xa9, 0x90, - 0xaa, 0x4b, 0xa9, 0x90, 0xab, 0x4b, 0xaa, 0x90, 0xaa, 0x4b, 0xaa, 0x90, - 0xab, 0x4b, 0xaa, 0x90, 0xaa, 0x4b, 0xab, 0x90, 0xab, 0x4b, 0xab, 0x90, - 0xab, 0x4b, 0xab, 0x90, 0xab, 0x4b, 0xac, 0x90, 0xac, 0x4b, 0xac, 0x90, - 0xac, 0x4b, 0xac, 0x90, 0xac, 0x4b, 0xad, 0x91, 0xae, 0x4b, 0xad, 0x91, - 0xaf, 0x4b, 0xae, 0x91, 0xae, 0x4b, 0xae, 0x91, 0xaf, 0x4b, 0xae, 0x91, - 0xae, 0x4b, 0xaf, 0x91, 0xaf, 0x4b, 0xaf, 0x91, 0xaf, 0x4b, 0xaf, 0x91, - 0xaf, 0x4b, 0xb0, 0x91, 0xb0, 0x4b, 0xb0, 0x91, 0xb0, 0x4b, 0xb0, 0x91, - 0xb0, 0x4b, 0xb1, 0x92, 0xb2, 0x4b, 0xb1, 0x92, 0xb3, 0x4b, 0xb2, 0x92, - 0xb2, 0x4b, 0xb2, 0x92, 0xb3, 0x4b, 0xb2, 0x92, 0xb2, 0x4b, 0xb3, 0x92, - 0xb3, 0x4b, 0xb3, 0x92, 0xb3, 0x4b, 0xb3, 0x92, 0xb3, 0x4b, 0xb4, 0x92, - 0xb4, 0x4b, 0xb4, 0x92, 0xb4, 0x4b, 0xb4, 0x92, 0xb4, 0x4b, 0xb5, 0x92, - 0xb5, 0x4b, 0xb5, 0x92, 0xb5, 0x4b, 0xb5, 0x93, 0xb6, 0x4b, 0xb6, 0x93, - 0xb6, 0x4b, 0xb6, 0x93, 0xb6, 0x4b, 0xb6, 0x93, 0xb6, 0x4b, 0xb7, 0x93, - 0xb7, 0x4b, 0xb7, 0x93, 0xb7, 0x4b, 0xb7, 0x93, 0xb7, 0x4b, 0xb8, 0x93, - 0xb8, 0x4b, 0xb8, 0x93, 0xb8, 0x4b, 0xb8, 0x93, 0xb8, 0x4b, 0xb9, 0x93, - 0xb9, 0x4b, 0xb9, 0x93, 0xb9, 0x4b, 0xb9, 0x93, 0xb9, 0x4b, 0xba, 0x93, - 0xba, 0x4b, 0xba, 0x94, 0xba, 0x4c, 0xba, 0x94, 0xba, 0x4c, 0xbb, 0x94, - 0xbb, 0x4c, 0xbb, 0x94, 0xbb, 0x4c, 0xbb, 0x94, 0xbb, 0x4c, 0xbc, 0x94, - 0xbc, 0x4c, 0xbc, 0x94, 0xbc, 0x4c, 0xbc, 0x94, 0xbc, 0x4c, 0xbd, 0x94, - 0xbd, 0x4c, 0xbd, 0x94, 0xbd, 0x4c, 0xbd, 0x94, 0xbd, 0x4c, 0xbd, 0x94, - 0xbe, 0x4c, 0xbd, 0x94, 0xbe, 0x4c, 0xbe, 0x94, 0xbe, 0x4d, 0xbf, 0x94, - 0xbf, 0x4d, 0xbf, 0x94, 0xbf, 0x4d, 0xbf, 0x94, 0xbf, 0x4d, 0xc0, 0x94, - 0xc0, 0x4d, 0xc0, 0x94, 0xc0, 0x4d, 0xc0, 0x94, 0xc0, 0x4d, 0xc1, 0x94, - 0xc1, 0x4d, 0xc1, 0x94, 0xc1, 0x4d, 0xc1, 0x94, 0xc1, 0x4d, 0xc1, 0x94, - 0xc1, 0x4d, 0xc1, 0x94, 0xc2, 0x4d, 0xc1, 0x94, 0xc2, 0x4d, 0xc2, 0x94, - 0xc2, 0x4e, 0xc3, 0x94, 0xc3, 0x4e, 0xc3, 0x94, 0xc3, 0x4e, 0xc3, 0x94, - 0xc3, 0x4e, 0xc4, 0x94, 0xc4, 0x4e, 0xc4, 0x94, 0xc4, 0x4e, 0xc4, 0x94, - 0xc4, 0x4e, 0xc4, 0x94, 0xc5, 0x4e, 0xc4, 0x94, 0xc5, 0x4e, 0xc4, 0x94, - 0xc5, 0x4e, 0xc4, 0x94, 0xc6, 0x4e, 0xc6, 0x94, 0xc6, 0x4f, 0xc6, 0x94, - 0xc6, 0x4f, 0xc6, 0x94, 0xc6, 0x4f, 0xc7, 0x94, 0xc7, 0x4f, 0xc7, 0x94, - 0xc7, 0x4f, 0xc7, 0x94, 0xc7, 0x4f, 0xc8, 0x94, 0xc8, 0x47, 0xc8, 0x94, - 0xc8, 0x47, 0xc8, 0x94, 0xc8, 0x47, 0xc9, 0x94, 0xc9, 0x47, 0xc9, 0x94, - 0xc9, 0x47, 0xca, 0x94, 0xc9, 0x48, 0xcb, 0x94, 0xc9, 0x48, 0xca, 0x94, - 0xca, 0x48, 0xcb, 0x94, 0xca, 0x48, 0xca, 0x94, 0xca, 0x48, 0xcb, 0x94, - 0xcb, 0x48, 0xcb, 0x94, 0xcb, 0x48, 0xcb, 0x94, 0xcb, 0x48, 0xcc, 0x94, - 0xcc, 0x48, 0xcc, 0x94, 0xcc, 0x48, 0xcd, 0x94, 0xcc, 0x49, 0xce, 0x94, - 0xcc, 0x49, 0xcd, 0x94, 0xcd, 0x49, 0xce, 0x94, 0xcd, 0x49, 0xcd, 0x94, - 0xcd, 0x49, 0xce, 0x94, 0xce, 0x49, 0xce, 0x94, 0xce, 0x49, 0xce, 0x94, - 0xce, 0x49, 0xce, 0x94, 0xce, 0x49, 0xcf, 0x94, 0xcf, 0x49, 0xcf, 0x94, - 0xcf, 0x49, 0xd0, 0x94, 0xcf, 0x4a, 0xd0, 0x94, 0xd0, 0x4a, 0xd0, 0x94, - 0xd0, 0x4a, 0xd0, 0x94, 0xd0, 0x4a, 0xd0, 0x94, 0xd0, 0x4a, 0xd1, 0x94, - 0xd1, 0x4a, 0xd1, 0x94, 0xd1, 0x4a, 0xd1, 0x94, 0xd1, 0x4a, 0xd2, 0x94, - 0xd2, 0x4a, 0xd2, 0x94, 0xd2, 0x4a, 0xd2, 0x94, 0xd2, 0x4a, 0xd2, 0x94, - 0xd2, 0x4a, 0xd3, 0x94, 0xd3, 0x4b, 0xd3, 0x94, 0xd3, 0x4b, 0xd3, 0x94, - 0xd3, 0x4b, 0xd4, 0x94, 0xd4, 0x4b, 0xd4, 0x94, 0xd4, 0x4b, 0xd4, 0x94, - 0xd4, 0x4b, 0xd4, 0x94, 0xd4, 0x4b, 0xd5, 0x94, 0xd5, 0x4b, 0xd5, 0x94, - 0xd5, 0x4b, 0xd5, 0x94, 0xd5, 0x4b, 0xd6, 0x94, 0xd5, 0x4b, 0xd6, 0x95, - 0xd6, 0x4b, 0xd6, 0x95, 0xd6, 0x4b, 0xd6, 0x95, 0xd6, 0x4b, 0xd7, 0x95, - 0xd7, 0x4b, 0xd7, 0x95, 0xd7, 0x4b, 0xd7, 0x95, 0xd7, 0x4b, 0xd7, 0x95, - 0xd7, 0x4b, 0xd8, 0x95, 0xd7, 0x4b, 0xd8, 0x95, 0xd7, 0x4b, 0xd8, 0x95, - 0xd7, 0x4b, 0xd9, 0x95, 0xd7, 0x4b, 0xd9, 0x96, 0xd9, 0x4b, 0xd9, 0x96, - 0xd9, 0x4b, 0xd9, 0x96, 0xd9, 0x4b, 0xda, 0x96, 0xda, 0x4b, 0xda, 0x96, - 0xda, 0x4b, 0xda, 0x96, 0xda, 0x4b, 0xda, 0x96, 0xda, 0x4b, 0xdb, 0x96, - 0xda, 0x4b, 0xdb, 0x96, 0xda, 0x4b, 0xdb, 0x96, 0xda, 0x4b, 0xdb, 0x97, - 0xdb, 0x4b, 0xdc, 0x97, 0xdc, 0x4b, 0xdc, 0x97, 0xdc, 0x4b, 0xdc, 0x97, - 0xdc, 0x4b, 0xdd, 0x97, 0xdd, 0x4b, 0xdd, 0x97, 0xdc, 0x4b, 0xdd, 0x97, - 0xdd, 0x4b, 0xdd, 0x97, 0xdc, 0x4b, 0xde, 0x97, 0xdd, 0x4b, 0xde, 0x98, - 0xde, 0x4b, 0xde, 0x98, 0xde, 0x4b, 0xde, 0x98, 0xde, 0x4b, 0xdf, 0x98, - 0xdf, 0x4b, 0xdf, 0x98, 0xdf, 0x4b, 0xdf, 0x98, 0xdf, 0x4b, 0xdf, 0x98, - 0xdf, 0x4b, 0xe0, 0x98, 0xdf, 0x4b, 0xe0, 0x98, 0xdf, 0x4b, 0xe0, 0x98, - 0xdf, 0x4b, 0xe1, 0x98, 0xdf, 0x4b, 0xe1, 0x99, 0xe1, 0x4b, 0xe1, 0x99, - 0xe1, 0x4b, 0xe1, 0x99, 0xe1, 0x4b, 0xe2, 0x99, 0xe2, 0x4b, 0xe2, 0x99, - 0xe1, 0x4b, 0xe2, 0x99, 0xe2, 0x4b, 0xe2, 0x99, 0xe1, 0x4b, 0xe3, 0x99, - 0xe2, 0x4b, 0xe3, 0x99, 0xe1, 0x4b, 0xe3, 0x99, 0xe2, 0x4b, 0xe3, 0x9a, - 0xe3, 0x4b, 0xe4, 0x9a, 0xe4, 0x4b, 0xe4, 0x9a, 0xe4, 0x4b, 0xe4, 0x9a, - 0xe4, 0x4b, 0xe4, 0x9a, 0xe4, 0x4b, 0xe5, 0x9a, 0xe4, 0x4b, 0xe5, 0x9a, - 0xe4, 0x4b, 0xe5, 0x9a, 0xe4, 0x4b, 0xe5, 0x9a, 0xe4, 0x4b, 0xe6, 0x9a, - 0xe6, 0x4b, 0xe6, 0x9a, 0xe6, 0x4b, 0xe6, 0x9a, 0xe6, 0x4b, 0xe6, 0x9a, - 0xe6, 0x4b, 0xe7, 0x9a, 0xe6, 0x4b, 0xe7, 0x9a, 0xe6, 0x4b, 0xe7, 0x9a, - 0xe6, 0x4b, 0xe7, 0x9a, 0xe6, 0x4b, 0xe8, 0x9a, 0xe6, 0x4b, 0xe8, 0x9a, - 0xe6, 0x4b, 0xe8, 0x9a, 0xe6, 0x4b, 0xe8, 0x9b, 0xe8, 0x4b, 0xe9, 0x9b, - 0xe9, 0x4b, 0xe9, 0x9b, 0xe8, 0x4b, 0xe9, 0x9b, 0xe9, 0x4b, 0xe9, 0x9b, - 0xe8, 0x4b, 0xea, 0x9b, 0xe9, 0x4b, 0xea, 0x9b, 0xe8, 0x4b, 0xea, 0x9b, - 0xe9, 0x4b, 0xea, 0x9b, 0xe8, 0x4b, 0xeb, 0x9b, 0xe9, 0x4b, 0xeb, 0x9c, - 0xeb, 0x4b, 0xeb, 0x9c, 0xeb, 0x4b, 0xeb, 0x9c, 0xeb, 0x4b, 0xec, 0x9c, - 0xeb, 0x4b, 0xec, 0x9c, 0xeb, 0x4b, 0xec, 0x9c, 0xeb, 0x4b, 0xec, 0x9c, - 0xeb, 0x4b, 0xec, 0x9c, 0xeb, 0x4b, 0xed, 0x9c, 0xeb, 0x4b, 0xed, 0x9d, - 0xed, 0x4b, 0xed, 0x9d, 0xed, 0x4b, 0xed, 0x9d, 0xed, 0x4b, 0xee, 0x9d, - 0xed, 0x4b, 0xee, 0x9d, 0xed, 0x4b, 0xee, 0x9d, 0xed, 0x4b, 0xee, 0x9d, - 0xed, 0x4b, 0xef, 0x9d, 0xed, 0x4b, 0xef, 0x9d, 0xed, 0x4b, 0xef, 0x9d, - 0xed, 0x4b, 0xef, 0x9e, 0xef, 0x4b, 0xf0, 0x9e, 0xef, 0x4b, 0xf0, 0x9e, - 0xef, 0x4b, 0xf0, 0x9e, 0xef, 0x4b, 0xf0, 0x9e, 0xef, 0x4b, 0xf1, 0x9e, - 0xef, 0x4b, 0xf1, 0x9e, 0xef, 0x4b, 0xf1, 0x9e, 0xef, 0x4b, 0xf1, 0x9e, - 0xef, 0x4b, 0xf2, 0x9f, 0xf2, 0x4b, 0xf2, 0x9e, 0xef, 0x4b, 0xf2, 0x9f, - 0xf2, 0x4b, 0xf2, 0x9f, 0xf1, 0x4b, 0xf2, 0x9f, 0xf2, 0x4b, 0xf3, 0x9f, - 0xf1, 0x4b, 0xf3, 0x9f, 0xf2, 0x4b, 0xf3, 0x9f, 0xf1, 0x4b, 0xf3, 0x9f, - 0xf2, 0x4b, 0xf4, 0x9f, 0xf1, 0x4b, 0xf4, 0x9f, 0xf2, 0x4b, 0xf4, 0x9f, - 0xf4, 0x4b, 0xf4, 0x9f, 0xf4, 0x4b, 0xf5, 0x9f, 0xf4, 0x4b, 0xf5, 0x9f, - 0xf4, 0x4b, 0xf5, 0x9f, 0xf4, 0x4b, 0xf5, 0x9f, 0xf4, 0x4b, 0xf5, 0x9f, - 0xf4, 0x4b, 0xf6, 0x9f, 0xf4, 0x4b, 0xf6, 0x9f, 0xf4, 0x4b, 0xf6, 0x9f, - 0xf4, 0x4b, 0xf6, 0xa0, 0xf6, 0x4b, 0xf7, 0xa0, 0xf6, 0x4b, 0xf7, 0xa0, - 0xf6, 0x4b, 0xf7, 0xa0, 0xf6, 0x4b, 0xf7, 0xa0, 0xf6, 0x4b, 0xf8, 0xa0, - 0xf6, 0x4b, 0xf8, 0xa0, 0xf6, 0x4b, 0xf8, 0xa0, 0xf6, 0x4b, 0xf8, 0xa0, - 0xf6, 0x4b, 0xf8, 0xa1, 0xf8, 0x4b, 0xf9, 0xa1, 0xf8, 0x4b, 0xf9, 0xa1, - 0xf8, 0x4b, 0xf9, 0xa1, 0xf8, 0x4b, 0xf9, 0xa1, 0xf8, 0x4b, 0xfa, 0xa1, - 0xf8, 0x4b, 0xfa, 0xa1, 0xf8, 0x4b, 0xfa, 0xa1, 0xf8, 0x4b, 0xfa, 0xa1, - 0xf8, 0x4b, 0xfa, 0xa2, 0xfa, 0x4b, 0xfb, 0xa2, 0xfa, 0x4b, 0xfb, 0xa2, - 0xfa, 0x4b, 0xfb, 0xa2, 0xfa, 0x4b, 0xfb, 0xa2, 0xfa, 0x4b, 0xfc, 0xa2, - 0xfa, 0x4b, 0xfc, 0xa2, 0xfa, 0x4b, 0xfc, 0xa2, 0xfa, 0x4b, 0xfc, 0xa2, - 0xfa, 0x4b, 0xfc, 0xa2, 0xfa, 0x4b, 0xfd, 0xa2, 0xfa, 0x4b, 0xfd, 0xa2, - 0xfa, 0x4b, 0xfd, 0xa2, 0xfa, 0x4b, 0xfd, 0xa2, 0xfa, 0x4b, 0xfe, 0xa3, - 0xfb, 0x4b, 0xfe, 0xa3, 0xfc, 0x4b, 0xfe, 0xa3, 0xfb, 0x4b, 0xfe, 0xa3, - 0xfc, 0x4b, 0xfe, 0xa3, 0xfb, 0x4b, 0xff, 0xa3, 0xfc, 0x4b, 0xff, 0xa3, - 0xfb, 0x4b, 0x03, 0x9b, 0x98, 0x4b, 0x0a, 0x9d, 0x98, 0x4b, 0x0f, 0x9b, - 0x98, 0x4b, 0x14, 0x9d, 0x98, 0x4b, 0x17, 0x9b, 0x98, 0x4b, 0x1b, 0x9d, - 0x98, 0x4b, 0x1e, 0x9b, 0x98, 0x4b, 0x20, 0x9d, 0x98, 0x4b, 0x23, 0x9b, - 0x98, 0x4b, 0x25, 0x9d, 0x98, 0x4b, 0x27, 0x9b, 0x98, 0x4b, 0x29, 0x9d, - 0x98, 0x4b, 0x2b, 0x9b, 0x98, 0x4b, 0x2d, 0x9d, 0x98, 0x4b, 0x2f, 0x9b, - 0x98, 0x4b, 0x31, 0x9d, 0x98, 0x4b, 0x32, 0x9b, 0x98, 0x4b, 0x34, 0x9d, - 0x98, 0x4b, 0x35, 0x9b, 0x98, 0x4b, 0x37, 0x9d, 0x98, 0x4b, 0x38, 0x9b, - 0x98, 0x4b, 0x3a, 0x9d, 0x98, 0x4b, 0x3b, 0x9b, 0x98, 0x4b, 0x3c, 0x9d, - 0x98, 0x4b, 0x3e, 0x9b, 0x98, 0x4b, 0x3f, 0x9d, 0x98, 0x4b, 0x40, 0x9b, - 0x98, 0x4b, 0x42, 0x9d, 0x98, 0x4b, 0x43, 0x9b, 0x98, 0x4b, 0x44, 0x9d, - 0x98, 0x4b, 0x45, 0x9b, 0x98, 0x4b, 0x46, 0x9d, 0x98, 0x4b, 0x47, 0x9b, - 0x98, 0x4b, 0x48, 0x9d, 0x98, 0x4b, 0x49, 0x9b, 0x98, 0x4b, 0x4a, 0x9d, - 0x98, 0x4b, 0x4b, 0x9b, 0x98, 0x4b, 0x4c, 0x9d, 0x98, 0x4b, 0x4d, 0x9b, - 0x98, 0x4b, 0x4e, 0x9d, 0x98, 0x4b, 0x4f, 0x9b, 0x98, 0x4b, 0x50, 0x9d, - 0x98, 0x4b, 0x51, 0x9b, 0x98, 0x4b, 0x52, 0x9d, 0x98, 0x4b, 0x53, 0x9b, - 0x98, 0x4b, 0x54, 0x9d, 0x98, 0x4b, 0x55, 0x9b, 0x98, 0x4b, 0x56, 0x9d, - 0x98, 0x4b, 0x57, 0x9b, 0x98, 0x4b, 0x58, 0x9d, 0x98, 0x4b, 0x58, 0x9b, - 0x98, 0x4b, 0x59, 0x9d, 0x98, 0x4b, 0x5a, 0x9b, 0x98, 0x4b, 0x5b, 0x9d, - 0x98, 0x4b, 0x5c, 0x9b, 0x98, 0x4b, 0x5d, 0x9d, 0x98, 0x4b, 0x5d, 0x9b, - 0x98, 0x4b, 0x5e, 0x9d, 0x98, 0x4b, 0x5f, 0x9b, 0x98, 0x4b, 0x60, 0x9d, - 0x98, 0x4b, 0x60, 0x9b, 0x98, 0x4b, 0x61, 0x9d, 0x98, 0x4b, 0x62, 0x9b, - 0x98, 0x4b, 0x63, 0x9d, 0x98, 0x4b, 0x63, 0x9b, 0x98, 0x4b, 0x64, 0x98, - 0x98, 0x4b, 0x65, 0x9b, 0x98, 0x4b, 0x66, 0x98, 0x98, 0x4b, 0x66, 0x9b, - 0x98, 0x4b, 0x67, 0x98, 0x98, 0x4b, 0x68, 0x9b, 0x98, 0x4b, 0x68, 0x98, - 0x98, 0x4b, 0x69, 0x9b, 0x98, 0x4b, 0x6a, 0x98, 0x98, 0x4b, 0x6a, 0x9b, - 0x98, 0x4b, 0x6b, 0x98, 0x98, 0x4b, 0x6c, 0x9b, 0x98, 0x4b, 0x6c, 0x98, - 0x98, 0x4b, 0x6d, 0x9b, 0x98, 0x4b, 0x6e, 0x98, 0x98, 0x4b, 0x6e, 0x9b, - 0x98, 0x4b, 0x6f, 0x98, 0x98, 0x4b, 0x70, 0x9b, 0x98, 0x4b, 0x70, 0x98, - 0x98, 0x4b, 0x71, 0x9b, 0x98, 0x4b, 0x72, 0x98, 0x98, 0x4b, 0x72, 0x9b, - 0x98, 0x4b, 0x73, 0x98, 0x98, 0x4b, 0x73, 0x9b, 0x98, 0x4b, 0x74, 0x98, - 0x98, 0x4b, 0x75, 0x9b, 0x98, 0x4b, 0x75, 0x98, 0x98, 0x4b, 0x76, 0x9b, - 0x98, 0x4b, 0x76, 0x98, 0x98, 0x4b, 0x77, 0x9b, 0x98, 0x4b, 0x78, 0x98, - 0x98, 0x4b, 0x78, 0x9b, 0x98, 0x4b, 0x79, 0x98, 0x98, 0x4b, 0x79, 0x9b, - 0x98, 0x4b, 0x7a, 0x98, 0x98, 0x4b, 0x7a, 0x9b, 0x98, 0x4b, 0x7b, 0x98, - 0x98, 0x4b, 0x7c, 0x96, 0x99, 0x4b, 0x7c, 0x98, 0x98, 0x4b, 0x7d, 0x96, - 0x99, 0x4b, 0x7d, 0x98, 0x98, 0x4b, 0x7e, 0x96, 0x99, 0x4b, 0x7e, 0x98, - 0x98, 0x4b, 0x7f, 0x96, 0x99, 0x4b, 0x7f, 0x98, 0x98, 0x4b, 0x80, 0x96, - 0x99, 0x4b, 0x81, 0x98, 0x98, 0x4b, 0x81, 0x96, 0x99, 0x4b, 0x82, 0x98, - 0x98, 0x4b, 0x82, 0x96, 0x99, 0x4b, 0x83, 0x98, 0x98, 0x4b, 0x83, 0x96, - 0x99, 0x4b, 0x84, 0x98, 0x98, 0x4b, 0x84, 0x96, 0x99, 0x4b, 0x85, 0x98, - 0x98, 0x4b, 0x85, 0x96, 0x99, 0x4b, 0x86, 0x98, 0x98, 0x4b, 0x86, 0x96, - 0x99, 0x4b, 0x87, 0x98, 0x98, 0x4b, 0x87, 0x96, 0x99, 0x4b, 0x88, 0x98, - 0x98, 0x4b, 0x88, 0x96, 0x99, 0x4b, 0x89, 0x98, 0x98, 0x4b, 0x89, 0x96, - 0x99, 0x4b, 0x8a, 0x98, 0x98, 0x4b, 0x8a, 0x96, 0x99, 0x4b, 0x8b, 0x98, - 0x98, 0x4b, 0x8b, 0x96, 0x99, 0x4b, 0x8c, 0x98, 0x98, 0x4b, 0x8c, 0x96, - 0x99, 0x4b, 0x8d, 0x98, 0x98, 0x4b, 0x8d, 0x96, 0x99, 0x4b, 0x8e, 0x98, - 0x98, 0x4b, 0x8e, 0x96, 0x99, 0x4b, 0x8e, 0x94, 0x99, 0x4b, 0x8f, 0x96, - 0x99, 0x4b, 0x8f, 0x94, 0x99, 0x4b, 0x90, 0x96, 0x99, 0x4b, 0x90, 0x94, - 0x99, 0x4b, 0x91, 0x96, 0x99, 0x4b, 0x91, 0x94, 0x99, 0x4b, 0x92, 0x96, - 0x99, 0x4b, 0x92, 0x94, 0x99, 0x4b, 0x93, 0x96, 0x99, 0x4b, 0x93, 0x94, - 0x99, 0x4b, 0x94, 0x96, 0x99, 0x4b, 0x94, 0x94, 0x99, 0x4b, 0x94, 0x96, - 0x99, 0x4b, 0x95, 0x94, 0x99, 0x4b, 0x95, 0x96, 0x99, 0x4b, 0x96, 0x94, - 0x99, 0x4b, 0x96, 0x96, 0x99, 0x4b, 0x97, 0x94, 0x99, 0x4b, 0x97, 0x96, - 0x99, 0x4b, 0x98, 0x94, 0x99, 0x4b, 0x98, 0x94, 0x9a, 0x4b, 0x98, 0x94, - 0x99, 0x4b, 0x99, 0x94, 0x9a, 0x4b, 0x98, 0x94, 0x99, 0x4b, 0x99, 0x94, - 0x9a, 0x4b, 0x98, 0x94, 0x9a, 0x4b, 0x99, 0x94, 0x9a, 0x4b, 0x98, 0x94, - 0x9b, 0x4b, 0x9d, 0x94, 0x9b, 0x4b, 0x9d, 0x94, 0x9c, 0x4b, 0x9d, 0x94, - 0x9c, 0x4b, 0x9d, 0x94, 0x9d, 0x4b, 0x9d, 0x93, 0x9d, 0x4b, 0x9d, 0x94, - 0x9d, 0x4b, 0x9e, 0x93, 0x9d, 0x4b, 0x9e, 0x94, 0x9d, 0x4b, 0x9f, 0x93, - 0x9d, 0x4b, 0x9f, 0x94, 0x9d, 0x4b, 0x9f, 0x93, 0x9d, 0x4b, 0xa0, 0x94, - 0x9d, 0x4b, 0xa0, 0x93, 0x9d, 0x4b, 0xa1, 0x94, 0x9d, 0x4b, 0xa1, 0x93, - 0x9d, 0x4b, 0xa1, 0x94, 0x9d, 0x4b, 0xa2, 0x93, 0x9d, 0x4b, 0xa2, 0x8e, - 0xa4, 0x4b, 0xa3, 0x8e, 0xa4, 0x4b, 0xa3, 0x8e, 0xa4, 0x4b, 0xa3, 0x8e, - 0xa4, 0x4b, 0xa4, 0x8e, 0xa4, 0x4b, 0xa4, 0x8e, 0xa4, 0x4b, 0xa5, 0x8e, - 0xa5, 0x4b, 0xa5, 0x8e, 0xa5, 0x4b, 0xa5, 0x8e, 0xa5, 0x4b, 0xa6, 0x8f, - 0xa8, 0x4b, 0xa6, 0x8f, 0xa8, 0x4b, 0xa6, 0x8f, 0xa8, 0x4b, 0xa7, 0x8f, - 0xa8, 0x4b, 0xa7, 0x8f, 0xa8, 0x4b, 0xa8, 0x8f, 0xa8, 0x4b, 0xa8, 0x8f, - 0xa8, 0x4b, 0xa8, 0x8f, 0xa8, 0x4b, 0xa9, 0x8f, 0xa9, 0x4b, 0xa9, 0x8f, - 0xa9, 0x4b, 0xaa, 0x8f, 0xaa, 0x4b, 0xaa, 0x8f, 0xaa, 0x4b, 0xaa, 0x8f, - 0xaa, 0x4b, 0xab, 0x8f, 0xab, 0x4b, 0xab, 0x90, 0xac, 0x4b, 0xab, 0x90, - 0xad, 0x4b, 0xac, 0x90, 0xac, 0x4b, 0xac, 0x90, 0xad, 0x4b, 0xac, 0x90, - 0xac, 0x4b, 0xad, 0x90, 0xad, 0x4b, 0xad, 0x90, 0xad, 0x4b, 0xae, 0x90, - 0xae, 0x4b, 0xae, 0x90, 0xae, 0x4b, 0xae, 0x90, 0xae, 0x4b, 0xaf, 0x90, - 0xaf, 0x4b, 0xaf, 0x91, 0xb0, 0x4b, 0xaf, 0x91, 0xb1, 0x4b, 0xb0, 0x91, - 0xb0, 0x4b, 0xb0, 0x91, 0xb1, 0x4b, 0xb0, 0x91, 0xb0, 0x4b, 0xb1, 0x91, - 0xb1, 0x4b, 0xb1, 0x91, 0xb1, 0x4b, 0xb2, 0x91, 0xb2, 0x4b, 0xb2, 0x91, - 0xb2, 0x4b, 0xb2, 0x91, 0xb2, 0x4b, 0xb3, 0x91, 0xb3, 0x4b, 0xb3, 0x92, - 0xb4, 0x4b, 0xb3, 0x92, 0xb5, 0x4b, 0xb4, 0x92, 0xb4, 0x4b, 0xb4, 0x92, - 0xb5, 0x4b, 0xb4, 0x92, 0xb4, 0x4b, 0xb5, 0x92, 0xb5, 0x4b, 0xb5, 0x92, - 0xb5, 0x4b, 0xb5, 0x92, 0xb5, 0x4b, 0xb6, 0x92, 0xb6, 0x4b, 0xb6, 0x92, - 0xb6, 0x4b, 0xb6, 0x92, 0xb6, 0x4b, 0xb7, 0x92, 0xb7, 0x4b, 0xb7, 0x92, - 0xb7, 0x4b, 0xb7, 0x93, 0xb8, 0x4b, 0xb8, 0x93, 0xb8, 0x4b, 0xb8, 0x93, - 0xb8, 0x4b, 0xb8, 0x93, 0xb8, 0x4b, 0xb9, 0x93, 0xb9, 0x4b, 0xb9, 0x93, - 0xb9, 0x4b, 0xb9, 0x93, 0xb9, 0x4b, 0xba, 0x93, 0xba, 0x4b, 0xba, 0x93, - 0xba, 0x4b, 0xba, 0x93, 0xba, 0x4b, 0xbb, 0x93, 0xbb, 0x4b, 0xbb, 0x93, - 0xbb, 0x4b, 0xbb, 0x93, 0xbb, 0x4b, 0xbc, 0x94, 0xbc, 0x4c, 0xbc, 0x94, - 0xbc, 0x4c, 0xbc, 0x94, 0xbc, 0x4c, 0xbd, 0x94, 0xbd, 0x4c, 0xbd, 0x94, - 0xbd, 0x4c, 0xbd, 0x94, 0xbd, 0x4c, 0xbe, 0x94, 0xbe, 0x4c, 0xbe, 0x94, - 0xbe, 0x4c, 0xbe, 0x94, 0xbe, 0x4c, 0xbf, 0x94, 0xbf, 0x4c, 0xbf, 0x94, - 0xbf, 0x4c, 0xbf, 0x94, 0xbf, 0x4c, 0xbf, 0x94, 0xc0, 0x4c, 0xc0, 0x94, - 0xc0, 0x4d, 0xc0, 0x94, 0xc0, 0x4d, 0xc1, 0x94, 0xc1, 0x4d, 0xc1, 0x94, - 0xc1, 0x4d, 0xc1, 0x94, 0xc1, 0x4d, 0xc1, 0x94, 0xc1, 0x4d, 0xc2, 0x94, - 0xc2, 0x4d, 0xc2, 0x94, 0xc2, 0x4d, 0xc2, 0x94, 0xc2, 0x4d, 0xc2, 0x94, - 0xc3, 0x4d, 0xc2, 0x94, 0xc3, 0x4d, 0xc2, 0x94, 0xc3, 0x4d, 0xc2, 0x94, - 0xc4, 0x4d, 0xc4, 0x94, 0xc4, 0x4e, 0xc4, 0x94, 0xc4, 0x4e, 0xc5, 0x94, - 0xc5, 0x4e, 0xc5, 0x94, 0xc5, 0x4e, 0xc5, 0x94, 0xc5, 0x4e, 0xc6, 0x94, - 0xc6, 0x4e, 0xc6, 0x94, 0xc6, 0x4e, 0xc6, 0x94, 0xc6, 0x4e, 0xc6, 0x94, - 0xc6, 0x4e, 0xc6, 0x94, 0xc7, 0x4e, 0xc6, 0x94, 0xc7, 0x4e, 0xc6, 0x94, - 0xc7, 0x4e, 0xc8, 0x94, 0xc8, 0x4f, 0xc8, 0x94, 0xc8, 0x4f, 0xc8, 0x94, - 0xc8, 0x4f, 0xc9, 0x94, 0xc9, 0x4f, 0xc9, 0x94, 0xc9, 0x4f, 0xc9, 0x94, - 0xc9, 0x47, 0xc9, 0x94, 0xc9, 0x47, 0xca, 0x94, 0xca, 0x47, 0xca, 0x94, - 0xca, 0x47, 0xca, 0x94, 0xca, 0x47, 0xcc, 0x94, 0xcb, 0x48, 0xcc, 0x94, - 0xcb, 0x48, 0xcc, 0x94, 0xcb, 0x48, 0xcc, 0x94, 0xcc, 0x48, 0xcc, 0x94, - 0xcc, 0x48, 0xcc, 0x94, 0xcc, 0x48, 0xcc, 0x94, 0xcc, 0x48, 0xcd, 0x94, - 0xcd, 0x48, 0xcd, 0x94, 0xcd, 0x48, 0xcd, 0x94, 0xcd, 0x48, 0xcf, 0x94, - 0xce, 0x49, 0xcf, 0x94, 0xce, 0x49, 0xcf, 0x94, 0xce, 0x49, 0xcf, 0x94, - 0xce, 0x49, 0xcf, 0x94, 0xcf, 0x49, 0xcf, 0x94, 0xcf, 0x49, 0xcf, 0x94, - 0xcf, 0x49, 0xd0, 0x94, 0xd0, 0x49, 0xd0, 0x94, 0xd0, 0x49, 0xd0, 0x94, - 0xd0, 0x49, 0xd0, 0x94, 0xd0, 0x49, 0xd1, 0x94, 0xd1, 0x4a, 0xd2, 0x94, - 0xd1, 0x4a, 0xd1, 0x94, 0xd1, 0x4a, 0xd2, 0x94, 0xd2, 0x4a, 0xd2, 0x94, - 0xd2, 0x4a, 0xd2, 0x94, 0xd2, 0x4a, 0xd2, 0x94, 0xd2, 0x4a, 0xd3, 0x94, - 0xd3, 0x4a, 0xd3, 0x94, 0xd3, 0x4a, 0xd3, 0x94, 0xd3, 0x4a, 0xd4, 0x94, - 0xd4, 0x4a, 0xd4, 0x95, 0xd4, 0x4b, 0xd4, 0x95, 0xd4, 0x4b, 0xd4, 0x95, - 0xd4, 0x4b, 0xd5, 0x95, 0xd5, 0x4b, 0xd5, 0x95, 0xd5, 0x4b, 0xd5, 0x95, - 0xd5, 0x4b, 0xd6, 0x95, 0xd6, 0x4b, 0xd6, 0x95, 0xd6, 0x4b, 0xd6, 0x95, - 0xd6, 0x4b, 0xd6, 0x95, 0xd6, 0x4b, 0xd7, 0x95, 0xd6, 0x4b, 0xd7, 0x95, - 0xd6, 0x4b, 0xd7, 0x96, 0xd7, 0x4b, 0xd7, 0x96, 0xd7, 0x4b, 0xd8, 0x96, - 0xd8, 0x4b, 0xd8, 0x96, 0xd8, 0x4b, 0xd8, 0x96, 0xd8, 0x4b, 0xd9, 0x96, - 0xd9, 0x4b, 0xd9, 0x96, 0xd9, 0x4b, 0xd9, 0x96, 0xd9, 0x4b, 0xd9, 0x96, - 0xd9, 0x4b, 0xda, 0x96, 0xd9, 0x4b, 0xda, 0x96, 0xd9, 0x4b, 0xda, 0x97, - 0xda, 0x4b, 0xda, 0x97, 0xda, 0x4b, 0xdb, 0x97, 0xdb, 0x4b, 0xdb, 0x97, - 0xdb, 0x4b, 0xdb, 0x97, 0xdb, 0x4b, 0xdb, 0x97, 0xdb, 0x4b, 0xdc, 0x97, - 0xdb, 0x4b, 0xdc, 0x97, 0xdb, 0x4b, 0xdc, 0x97, 0xdb, 0x4b, 0xdd, 0x98, - 0xdd, 0x4b, 0xdd, 0x98, 0xdd, 0x4b, 0xdd, 0x98, 0xdd, 0x4b, 0xdd, 0x98, - 0xdd, 0x4b, 0xde, 0x98, 0xde, 0x4b, 0xde, 0x98, 0xde, 0x4b, 0xde, 0x98, - 0xde, 0x4b, 0xde, 0x98, 0xde, 0x4b, 0xdf, 0x98, 0xde, 0x4b, 0xdf, 0x98, - 0xde, 0x4b, 0xdf, 0x98, 0xdf, 0x4b, 0xdf, 0x98, 0xdf, 0x4b, 0xe0, 0x98, - 0xe0, 0x4b, 0xe0, 0x98, 0xe0, 0x4b, 0xe0, 0x98, 0xe0, 0x4b, 0xe1, 0x98, - 0xe0, 0x4b, 0xe1, 0x98, 0xe0, 0x4b, 0xe1, 0x98, 0xe0, 0x4b, 0xe1, 0x98, - 0xe0, 0x4b, 0xe2, 0x98, 0xe0, 0x4b, 0xe2, 0x98, 0xe0, 0x4b, 0xe2, 0x99, - 0xe2, 0x4b, 0xe2, 0x99, 0xe2, 0x4b, 0xe3, 0x99, 0xe3, 0x4b, 0xe3, 0x99, - 0xe2, 0x4b, 0xe3, 0x99, 0xe3, 0x4b, 0xe3, 0x99, 0xe2, 0x4b, 0xe4, 0x99, - 0xe3, 0x4b, 0xe4, 0x99, 0xe2, 0x4b, 0xe4, 0x99, 0xe3, 0x4b, 0xe4, 0x9a, - 0xe4, 0x4b, 0xe5, 0x9a, 0xe5, 0x4b, 0xe5, 0x9a, 0xe5, 0x4b, 0xe5, 0x9a, - 0xe5, 0x4b, 0xe5, 0x9a, 0xe5, 0x4b, 0xe6, 0x9a, 0xe5, 0x4b, 0xe6, 0x9a, - 0xe5, 0x4b, 0xe6, 0x9a, 0xe5, 0x4b, 0xe6, 0x9a, 0xe5, 0x4b, 0xe7, 0x9a, - 0xe5, 0x4b, 0xe7, 0x9b, 0xe7, 0x4b, 0xe7, 0x9b, 0xe7, 0x4b, 0xe7, 0x9b, - 0xe7, 0x4b, 0xe8, 0x9b, 0xe7, 0x4b, 0xe8, 0x9b, 0xe7, 0x4b, 0xe8, 0x9b, - 0xe7, 0x4b, 0xe8, 0x9b, 0xe7, 0x4b, 0xe9, 0x9b, 0xe7, 0x4b, 0xe9, 0x9b, - 0xe7, 0x4b, 0xe9, 0x9b, 0xe7, 0x4b, 0xe9, 0x9b, 0xe7, 0x4b, 0xea, 0x9c, - 0xea, 0x4b, 0xea, 0x9c, 0xea, 0x4b, 0xea, 0x9c, 0xea, 0x4b, 0xea, 0x9c, - 0xea, 0x4b, 0xeb, 0x9c, 0xea, 0x4b, 0xeb, 0x9c, 0xea, 0x4b, 0xeb, 0x9c, - 0xea, 0x4b, 0xeb, 0x9c, 0xea, 0x4b, 0xec, 0x9c, 0xea, 0x4b, 0xec, 0x9c, - 0xea, 0x4b, 0xec, 0x9d, 0xec, 0x4b, 0xec, 0x9d, 0xec, 0x4b, 0xec, 0x9d, - 0xec, 0x4b, 0xed, 0x9d, 0xec, 0x4b, 0xed, 0x9d, 0xec, 0x4b, 0xed, 0x9d, - 0xec, 0x4b, 0xed, 0x9d, 0xec, 0x4b, 0xee, 0x9d, 0xec, 0x4b, 0xee, 0x9d, - 0xec, 0x4b, 0xee, 0x9d, 0xee, 0x4b, 0xee, 0x9d, 0xee, 0x4b, 0xef, 0x9d, - 0xee, 0x4b, 0xef, 0x9d, 0xee, 0x4b, 0xef, 0x9d, 0xee, 0x4b, 0xef, 0x9d, - 0xee, 0x4b, 0xf0, 0x9d, 0xee, 0x4b, 0xf0, 0x9d, 0xee, 0x4b, 0xf0, 0x9d, - 0xee, 0x4b, 0xf0, 0x9e, 0xf0, 0x4b, 0xf1, 0x9e, 0xf1, 0x4b, 0xf1, 0x9e, - 0xf0, 0x4b, 0xf1, 0x9e, 0xf1, 0x4b, 0xf1, 0x9e, 0xf0, 0x4b, 0xf2, 0x9e, - 0xf1, 0x4b, 0xf2, 0x9e, 0xf0, 0x4b, 0xf2, 0x9e, 0xf1, 0x4b, 0xf2, 0x9e, - 0xf0, 0x4b, 0xf2, 0x9e, 0xf1, 0x4b, 0xf3, 0x9f, 0xf3, 0x4b, 0xf3, 0x9e, - 0xf1, 0x4b, 0xf3, 0x9f, 0xf3, 0x4b, 0xf3, 0x9f, 0xf2, 0x4b, 0xf4, 0x9f, - 0xf3, 0x4b, 0xf4, 0x9f, 0xf2, 0x4b, 0xf4, 0x9f, 0xf3, 0x4b, 0xf4, 0x9f, - 0xf2, 0x4b, 0xf5, 0x9f, 0xf3, 0x4b, 0xf5, 0x9f, 0xf2, 0x4b, 0xf5, 0x9f, - 0xf3, 0x4b, 0xf5, 0xa0, 0xf5, 0x4b, 0xf5, 0xa0, 0xf5, 0x4b, 0xf6, 0xa0, - 0xf5, 0x4b, 0xf6, 0xa0, 0xf5, 0x4b, 0xf6, 0xa0, 0xf5, 0x4b, 0xf6, 0xa0, - 0xf5, 0x4b, 0xf7, 0xa0, 0xf5, 0x4b, 0xf7, 0xa0, 0xf5, 0x4b, 0xf7, 0xa0, - 0xf5, 0x4b, 0xf7, 0xa1, 0xf7, 0x4b, 0xf8, 0xa1, 0xf7, 0x4b, 0xf8, 0xa1, - 0xf7, 0x4b, 0xf8, 0xa1, 0xf7, 0x4b, 0xf8, 0xa1, 0xf7, 0x4b, 0xf8, 0xa1, - 0xf7, 0x4b, 0xf9, 0xa1, 0xf7, 0x4b, 0xf9, 0xa1, 0xf7, 0x4b, 0xf9, 0xa1, - 0xf7, 0x4b, 0xf9, 0xa1, 0xf7, 0x4b, 0xfa, 0xa1, 0xf9, 0x4b, 0xfa, 0xa1, - 0xf9, 0x4b, 0xfa, 0xa1, 0xf9, 0x4b, 0xfa, 0xa1, 0xf9, 0x4b, 0xfa, 0xa1, - 0xf9, 0x4b, 0xfb, 0xa1, 0xf9, 0x4b, 0xfb, 0xa1, 0xf9, 0x4b, 0xfb, 0xa1, - 0xf9, 0x4b, 0xfb, 0xa1, 0xf9, 0x4b, 0xfc, 0xa2, 0xfb, 0x4b, 0xfc, 0xa1, - 0xf9, 0x4b, 0xfc, 0xa2, 0xfb, 0x4b, 0xfc, 0xa2, 0xfb, 0x4b, 0xfc, 0xa2, - 0xfb, 0x4b, 0xfd, 0xa2, 0xfb, 0x4b, 0xfd, 0xa2, 0xfb, 0x4b, 0xfd, 0xa2, - 0xfb, 0x4b, 0xfd, 0xa2, 0xfb, 0x4b, 0xfe, 0xa2, 0xfb, 0x4b, 0xfe, 0xa2, - 0xfb, 0x4b, 0xfe, 0xa2, 0xfb, 0x4b, 0xfe, 0xa2, 0xfb, 0x4b, 0xfe, 0xa2, - 0xfb, 0x4b, 0xff, 0xa2, 0xfb, 0x4b, 0xff, 0xa2, 0xfb, 0x4b, 0x03, 0xa0, - 0x97, 0x4c, 0x0a, 0x9e, 0x98, 0x4c, 0x0f, 0xa0, 0x97, 0x4c, 0x14, 0x9e, - 0x98, 0x4c, 0x17, 0xa0, 0x97, 0x4c, 0x1b, 0x9e, 0x98, 0x4c, 0x1e, 0xa0, - 0x97, 0x4c, 0x20, 0x9e, 0x98, 0x4c, 0x23, 0xa0, 0x97, 0x4c, 0x25, 0x9e, - 0x98, 0x4c, 0x27, 0xa0, 0x97, 0x4c, 0x29, 0x9e, 0x98, 0x4c, 0x2b, 0xa0, - 0x97, 0x4c, 0x2d, 0x9e, 0x98, 0x4c, 0x2f, 0xa0, 0x97, 0x4c, 0x31, 0x9e, - 0x98, 0x4c, 0x32, 0xa0, 0x97, 0x4c, 0x34, 0x9e, 0x98, 0x4c, 0x35, 0xa0, - 0x97, 0x4c, 0x37, 0x9e, 0x98, 0x4c, 0x38, 0xa0, 0x97, 0x4c, 0x3a, 0x9e, - 0x98, 0x4c, 0x3b, 0xa0, 0x97, 0x4c, 0x3c, 0x9e, 0x98, 0x4c, 0x3e, 0xa0, - 0x97, 0x4c, 0x3f, 0x9e, 0x98, 0x4c, 0x40, 0xa0, 0x97, 0x4c, 0x42, 0x9e, - 0x98, 0x4c, 0x43, 0x9b, 0x98, 0x4c, 0x44, 0x9e, 0x98, 0x4c, 0x45, 0x9b, - 0x98, 0x4c, 0x46, 0x9e, 0x98, 0x4c, 0x47, 0x9b, 0x98, 0x4c, 0x48, 0x9e, - 0x98, 0x4c, 0x49, 0x9b, 0x98, 0x4c, 0x4a, 0x9e, 0x98, 0x4c, 0x4b, 0x9b, - 0x98, 0x4c, 0x4c, 0x9e, 0x98, 0x4c, 0x4d, 0x9b, 0x98, 0x4c, 0x4e, 0x9e, - 0x98, 0x4c, 0x4f, 0x9b, 0x98, 0x4c, 0x50, 0x9e, 0x98, 0x4c, 0x51, 0x9b, - 0x98, 0x4c, 0x52, 0x9e, 0x98, 0x4c, 0x53, 0x9b, 0x98, 0x4c, 0x54, 0x9e, - 0x98, 0x4c, 0x55, 0x9b, 0x98, 0x4c, 0x56, 0x9e, 0x98, 0x4c, 0x57, 0x9b, - 0x98, 0x4c, 0x58, 0x9e, 0x98, 0x4c, 0x58, 0x9b, 0x98, 0x4c, 0x59, 0x9e, - 0x98, 0x4c, 0x5a, 0x9b, 0x98, 0x4c, 0x5b, 0x9e, 0x98, 0x4c, 0x5c, 0x9b, - 0x98, 0x4c, 0x5d, 0x9e, 0x98, 0x4c, 0x5d, 0x9b, 0x98, 0x4c, 0x5e, 0x98, - 0x98, 0x4c, 0x5f, 0x9b, 0x98, 0x4c, 0x60, 0x98, 0x98, 0x4c, 0x60, 0x9b, - 0x98, 0x4c, 0x61, 0x98, 0x98, 0x4c, 0x62, 0x9b, 0x98, 0x4c, 0x63, 0x98, - 0x98, 0x4c, 0x63, 0x9b, 0x98, 0x4c, 0x64, 0x98, 0x98, 0x4c, 0x65, 0x9b, - 0x98, 0x4c, 0x66, 0x98, 0x98, 0x4c, 0x66, 0x9b, 0x98, 0x4c, 0x67, 0x98, - 0x98, 0x4c, 0x68, 0x9b, 0x98, 0x4c, 0x68, 0x98, 0x98, 0x4c, 0x69, 0x9b, - 0x98, 0x4c, 0x6a, 0x98, 0x98, 0x4c, 0x6a, 0x9b, 0x98, 0x4c, 0x6b, 0x98, - 0x98, 0x4c, 0x6c, 0x9b, 0x98, 0x4c, 0x6c, 0x98, 0x98, 0x4c, 0x6d, 0x9b, - 0x98, 0x4c, 0x6e, 0x98, 0x98, 0x4c, 0x6e, 0x9b, 0x98, 0x4c, 0x6f, 0x98, - 0x98, 0x4c, 0x70, 0x9b, 0x98, 0x4c, 0x70, 0x98, 0x98, 0x4c, 0x71, 0x9b, - 0x98, 0x4c, 0x72, 0x98, 0x98, 0x4c, 0x72, 0x9b, 0x98, 0x4c, 0x73, 0x98, - 0x98, 0x4c, 0x73, 0x9b, 0x98, 0x4c, 0x74, 0x98, 0x98, 0x4c, 0x75, 0x9b, - 0x98, 0x4c, 0x75, 0x98, 0x98, 0x4c, 0x76, 0x9b, 0x98, 0x4c, 0x76, 0x98, - 0x98, 0x4c, 0x77, 0x9b, 0x98, 0x4c, 0x78, 0x98, 0x98, 0x4c, 0x78, 0x9b, - 0x98, 0x4c, 0x79, 0x98, 0x98, 0x4c, 0x79, 0x95, 0x99, 0x4c, 0x7a, 0x98, - 0x98, 0x4c, 0x7a, 0x95, 0x99, 0x4c, 0x7b, 0x98, 0x98, 0x4c, 0x7c, 0x95, - 0x99, 0x4c, 0x7c, 0x98, 0x98, 0x4c, 0x7d, 0x95, 0x99, 0x4c, 0x7d, 0x98, - 0x98, 0x4c, 0x7e, 0x95, 0x99, 0x4c, 0x7e, 0x98, 0x98, 0x4c, 0x7f, 0x95, - 0x99, 0x4c, 0x7f, 0x98, 0x98, 0x4c, 0x80, 0x95, 0x99, 0x4c, 0x81, 0x98, - 0x98, 0x4c, 0x81, 0x95, 0x99, 0x4c, 0x82, 0x98, 0x98, 0x4c, 0x82, 0x95, - 0x99, 0x4c, 0x83, 0x98, 0x98, 0x4c, 0x83, 0x95, 0x99, 0x4c, 0x84, 0x98, - 0x98, 0x4c, 0x84, 0x95, 0x99, 0x4c, 0x85, 0x98, 0x98, 0x4c, 0x85, 0x95, - 0x99, 0x4c, 0x86, 0x98, 0x98, 0x4c, 0x86, 0x95, 0x99, 0x4c, 0x87, 0x98, - 0x98, 0x4c, 0x87, 0x95, 0x99, 0x4c, 0x88, 0x98, 0x98, 0x4c, 0x88, 0x95, - 0x99, 0x4c, 0x89, 0x98, 0x98, 0x4c, 0x89, 0x95, 0x99, 0x4c, 0x8a, 0x98, - 0x98, 0x4c, 0x8a, 0x95, 0x99, 0x4c, 0x8b, 0x98, 0x98, 0x4c, 0x8b, 0x95, - 0x99, 0x4c, 0x8c, 0x98, 0x98, 0x4c, 0x8c, 0x95, 0x99, 0x4c, 0x8d, 0x98, - 0x98, 0x4c, 0x8d, 0x95, 0x99, 0x4c, 0x8e, 0x98, 0x98, 0x4c, 0x8e, 0x95, - 0x99, 0x4c, 0x8e, 0x98, 0x98, 0x4c, 0x8f, 0x95, 0x99, 0x4c, 0x8f, 0x98, - 0x98, 0x4c, 0x90, 0x95, 0x99, 0x4c, 0x90, 0x98, 0x98, 0x4c, 0x91, 0x95, - 0x99, 0x4c, 0x91, 0x98, 0x98, 0x4c, 0x92, 0x95, 0x99, 0x4c, 0x92, 0x94, - 0x99, 0x4c, 0x93, 0x95, 0x99, 0x4c, 0x93, 0x94, 0x99, 0x4c, 0x94, 0x95, - 0x99, 0x4c, 0x94, 0x94, 0x99, 0x4c, 0x94, 0x95, 0x99, 0x4c, 0x95, 0x94, - 0x99, 0x4c, 0x95, 0x95, 0x99, 0x4c, 0x96, 0x94, 0x99, 0x4c, 0x96, 0x95, - 0x99, 0x4c, 0x97, 0x94, 0x99, 0x4c, 0x97, 0x95, 0x99, 0x4c, 0x98, 0x94, - 0x99, 0x4c, 0x98, 0x95, 0x99, 0x4c, 0x98, 0x94, 0x99, 0x4c, 0x99, 0x95, - 0x99, 0x4c, 0x98, 0x94, 0x99, 0x4c, 0x99, 0x94, 0x9a, 0x4c, 0x98, 0x94, - 0x9a, 0x4c, 0x99, 0x94, 0x9a, 0x4c, 0x9d, 0x94, 0x9b, 0x4e, 0x9d, 0x94, - 0x9b, 0x4c, 0x9d, 0x94, 0x9c, 0x4c, 0x9d, 0x94, 0x9c, 0x4c, 0x9d, 0x94, - 0x9d, 0x4c, 0x9d, 0x94, 0x9c, 0x4c, 0x9d, 0x94, 0x9d, 0x4c, 0x9e, 0x94, - 0x9c, 0x4c, 0x9e, 0x94, 0x9d, 0x4c, 0x9f, 0x93, 0x9d, 0x4c, 0x9f, 0x94, - 0x9d, 0x4c, 0x9f, 0x93, 0x9d, 0x4c, 0xa0, 0x94, 0x9d, 0x4c, 0xa0, 0x93, - 0x9d, 0x4c, 0xa1, 0x94, 0x9d, 0x4c, 0xa1, 0x93, 0x9d, 0x4c, 0xa1, 0x94, - 0x9d, 0x4c, 0xa2, 0x93, 0x9d, 0x4c, 0xa2, 0x8e, 0xa2, 0x4c, 0xa3, 0x8e, - 0xa3, 0x4c, 0xa3, 0x8e, 0xa3, 0x4c, 0xa3, 0x8e, 0xa3, 0x4c, 0xa4, 0x8f, - 0xa6, 0x4c, 0xa4, 0x8f, 0xa6, 0x4c, 0xa5, 0x8f, 0xa6, 0x4c, 0xa5, 0x8f, - 0xa6, 0x4c, 0xa5, 0x8f, 0xa6, 0x4c, 0xa6, 0x8f, 0xa6, 0x4c, 0xa6, 0x8f, - 0xa6, 0x4c, 0xa6, 0x8f, 0xa6, 0x4c, 0xa7, 0x8f, 0xa7, 0x4c, 0xa7, 0x8f, - 0xa7, 0x4c, 0xa8, 0x8f, 0xa8, 0x4c, 0xa8, 0x90, 0xaa, 0x4c, 0xa8, 0x90, - 0xab, 0x4c, 0xa9, 0x90, 0xaa, 0x4c, 0xa9, 0x90, 0xab, 0x4c, 0xaa, 0x90, - 0xaa, 0x4c, 0xaa, 0x90, 0xab, 0x4c, 0xaa, 0x90, 0xaa, 0x4c, 0xab, 0x90, - 0xab, 0x4c, 0xab, 0x90, 0xab, 0x4c, 0xab, 0x90, 0xab, 0x4c, 0xac, 0x90, - 0xac, 0x4c, 0xac, 0x90, 0xac, 0x4c, 0xac, 0x90, 0xac, 0x4c, 0xad, 0x91, - 0xae, 0x4c, 0xad, 0x91, 0xaf, 0x4c, 0xae, 0x91, 0xae, 0x4c, 0xae, 0x91, - 0xaf, 0x4c, 0xae, 0x91, 0xae, 0x4c, 0xaf, 0x91, 0xaf, 0x4c, 0xaf, 0x91, - 0xaf, 0x4c, 0xaf, 0x91, 0xaf, 0x4c, 0xb0, 0x91, 0xb0, 0x4c, 0xb0, 0x91, - 0xb0, 0x4c, 0xb0, 0x91, 0xb0, 0x4c, 0xb1, 0x92, 0xb2, 0x4c, 0xb1, 0x92, - 0xb3, 0x4c, 0xb2, 0x92, 0xb2, 0x4c, 0xb2, 0x92, 0xb3, 0x4c, 0xb2, 0x92, - 0xb2, 0x4c, 0xb3, 0x92, 0xb3, 0x4c, 0xb3, 0x92, 0xb3, 0x4c, 0xb3, 0x92, - 0xb3, 0x4c, 0xb4, 0x92, 0xb4, 0x4c, 0xb4, 0x92, 0xb4, 0x4c, 0xb4, 0x92, - 0xb4, 0x4c, 0xb5, 0x93, 0xb6, 0x4c, 0xb5, 0x93, 0xb6, 0x4c, 0xb5, 0x93, - 0xb6, 0x4c, 0xb6, 0x93, 0xb6, 0x4c, 0xb6, 0x93, 0xb6, 0x4c, 0xb6, 0x93, - 0xb6, 0x4c, 0xb7, 0x93, 0xb7, 0x4c, 0xb7, 0x93, 0xb7, 0x4c, 0xb7, 0x93, - 0xb7, 0x4c, 0xb8, 0x93, 0xb8, 0x4c, 0xb8, 0x93, 0xb8, 0x4c, 0xb8, 0x93, - 0xb8, 0x4c, 0xb9, 0x93, 0xb9, 0x4c, 0xb9, 0x93, 0xb9, 0x4c, 0xb9, 0x94, - 0xba, 0x4c, 0xba, 0x94, 0xba, 0x4c, 0xba, 0x94, 0xba, 0x4c, 0xba, 0x94, - 0xba, 0x4c, 0xbb, 0x94, 0xbb, 0x4c, 0xbb, 0x94, 0xbb, 0x4c, 0xbb, 0x94, - 0xbb, 0x4c, 0xbc, 0x94, 0xbc, 0x4c, 0xbc, 0x94, 0xbc, 0x4c, 0xbc, 0x94, - 0xbc, 0x4c, 0xbd, 0x94, 0xbd, 0x4c, 0xbd, 0x94, 0xbd, 0x4c, 0xbd, 0x94, - 0xbd, 0x4c, 0xbe, 0x94, 0xbe, 0x4d, 0xbe, 0x94, 0xbe, 0x4d, 0xbe, 0x94, - 0xbe, 0x4d, 0xbf, 0x94, 0xbf, 0x4d, 0xbf, 0x94, 0xbf, 0x4d, 0xbf, 0x94, - 0xbf, 0x4d, 0xc0, 0x94, 0xc0, 0x4d, 0xc0, 0x94, 0xc0, 0x4d, 0xc0, 0x94, - 0xc0, 0x4d, 0xc1, 0x94, 0xc1, 0x4d, 0xc1, 0x94, 0xc1, 0x4d, 0xc1, 0x94, - 0xc1, 0x4d, 0xc1, 0x94, 0xc1, 0x4d, 0xc2, 0x94, 0xc2, 0x4e, 0xc2, 0x94, - 0xc2, 0x4e, 0xc2, 0x94, 0xc2, 0x4e, 0xc3, 0x94, 0xc3, 0x4e, 0xc3, 0x94, - 0xc3, 0x4e, 0xc3, 0x94, 0xc3, 0x4e, 0xc4, 0x94, 0xc4, 0x4e, 0xc4, 0x94, - 0xc4, 0x4e, 0xc4, 0x94, 0xc4, 0x4e, 0xc4, 0x94, 0xc5, 0x4e, 0xc4, 0x94, - 0xc5, 0x4e, 0xc4, 0x94, 0xc5, 0x4e, 0xc4, 0x94, 0xc6, 0x4e, 0xc6, 0x94, - 0xc6, 0x4f, 0xc6, 0x94, 0xc6, 0x4f, 0xc6, 0x94, 0xc6, 0x4f, 0xc7, 0x94, - 0xc7, 0x4f, 0xc7, 0x94, 0xc7, 0x4f, 0xc7, 0x94, 0xc7, 0x4f, 0xc8, 0x94, - 0xc8, 0x4f, 0xc7, 0x94, 0xc8, 0x4f, 0xc8, 0x94, 0xc8, 0x4f, 0xc7, 0x94, - 0xc9, 0x4f, 0xc8, 0x94, 0xc9, 0x4f, 0xc9, 0x94, 0xc9, 0x50, 0xc9, 0x94, - 0xc9, 0x50, 0xca, 0x94, 0xca, 0x50, 0xca, 0x94, 0xca, 0x50, 0xca, 0x94, - 0xca, 0x48, 0xcb, 0x94, 0xcb, 0x48, 0xcb, 0x94, 0xcb, 0x48, 0xcb, 0x94, - 0xcb, 0x48, 0xcc, 0x94, 0xcc, 0x48, 0xcc, 0x94, 0xcc, 0x48, 0xcd, 0x94, - 0xcc, 0x49, 0xce, 0x94, 0xcc, 0x49, 0xcd, 0x94, 0xcd, 0x49, 0xce, 0x94, - 0xcd, 0x49, 0xcd, 0x94, 0xcd, 0x49, 0xce, 0x94, 0xce, 0x49, 0xce, 0x94, - 0xce, 0x49, 0xce, 0x94, 0xce, 0x49, 0xce, 0x94, 0xce, 0x49, 0xd0, 0x94, - 0xcf, 0x4a, 0xd0, 0x94, 0xcf, 0x4a, 0xd0, 0x94, 0xcf, 0x4a, 0xd0, 0x94, - 0xd0, 0x4a, 0xd0, 0x94, 0xd0, 0x4a, 0xd0, 0x94, 0xd0, 0x4a, 0xd0, 0x94, - 0xd0, 0x4a, 0xd1, 0x94, 0xd1, 0x4a, 0xd1, 0x94, 0xd1, 0x4a, 0xd1, 0x94, - 0xd1, 0x4a, 0xd2, 0x94, 0xd2, 0x4a, 0xd2, 0x94, 0xd2, 0x4a, 0xd3, 0x94, - 0xd2, 0x4b, 0xd3, 0x94, 0xd2, 0x4b, 0xd3, 0x94, 0xd3, 0x4b, 0xd3, 0x94, - 0xd3, 0x4b, 0xd3, 0x94, 0xd3, 0x4b, 0xd4, 0x94, 0xd4, 0x4b, 0xd4, 0x94, - 0xd4, 0x4b, 0xd4, 0x94, 0xd4, 0x4b, 0xd4, 0x94, 0xd4, 0x4b, 0xd5, 0x94, - 0xd5, 0x4b, 0xd5, 0x94, 0xd5, 0x4b, 0xd5, 0x95, 0xd5, 0x4c, 0xd6, 0x95, - 0xd6, 0x4c, 0xd6, 0x95, 0xd6, 0x4c, 0xd6, 0x95, 0xd6, 0x4c, 0xd6, 0x95, - 0xd6, 0x4c, 0xd7, 0x95, 0xd7, 0x4c, 0xd7, 0x95, 0xd7, 0x4c, 0xd7, 0x95, - 0xd7, 0x4c, 0xd7, 0x95, 0xd7, 0x4c, 0xd8, 0x95, 0xd7, 0x4c, 0xd8, 0x95, - 0xd7, 0x4c, 0xd8, 0x96, 0xd8, 0x4c, 0xd9, 0x96, 0xd9, 0x4c, 0xd9, 0x96, - 0xd9, 0x4c, 0xd9, 0x96, 0xd9, 0x4c, 0xd9, 0x96, 0xd9, 0x4c, 0xda, 0x96, - 0xda, 0x4c, 0xda, 0x96, 0xda, 0x4c, 0xda, 0x96, 0xda, 0x4c, 0xda, 0x96, - 0xda, 0x4c, 0xdb, 0x96, 0xda, 0x4c, 0xdb, 0x96, 0xda, 0x4c, 0xdb, 0x96, - 0xda, 0x4c, 0xdb, 0x97, 0xdb, 0x4c, 0xdc, 0x97, 0xdc, 0x4c, 0xdc, 0x97, - 0xdc, 0x4c, 0xdc, 0x97, 0xdc, 0x4c, 0xdd, 0x97, 0xdd, 0x4c, 0xdd, 0x97, - 0xdc, 0x4c, 0xdd, 0x97, 0xdd, 0x4c, 0xdd, 0x97, 0xdc, 0x4c, 0xde, 0x97, - 0xdd, 0x4c, 0xde, 0x98, 0xde, 0x4c, 0xde, 0x98, 0xde, 0x4c, 0xde, 0x98, - 0xde, 0x4c, 0xdf, 0x98, 0xdf, 0x4c, 0xdf, 0x98, 0xdf, 0x4c, 0xdf, 0x98, - 0xdf, 0x4c, 0xdf, 0x98, 0xdf, 0x4c, 0xe0, 0x98, 0xdf, 0x4c, 0xe0, 0x98, - 0xdf, 0x4c, 0xe0, 0x99, 0xe0, 0x4c, 0xe1, 0x99, 0xe1, 0x4c, 0xe1, 0x99, - 0xe1, 0x4c, 0xe1, 0x99, 0xe1, 0x4c, 0xe1, 0x99, 0xe1, 0x4c, 0xe2, 0x99, - 0xe2, 0x4c, 0xe2, 0x99, 0xe1, 0x4c, 0xe2, 0x99, 0xe2, 0x4c, 0xe2, 0x99, - 0xe1, 0x4c, 0xe3, 0x99, 0xe2, 0x4c, 0xe3, 0x99, 0xe1, 0x4c, 0xe3, 0x99, - 0xe2, 0x4c, 0xe3, 0x9a, 0xe3, 0x4c, 0xe4, 0x9a, 0xe4, 0x4c, 0xe4, 0x9a, - 0xe4, 0x4c, 0xe4, 0x9a, 0xe4, 0x4c, 0xe4, 0x9a, 0xe4, 0x4c, 0xe5, 0x9a, - 0xe4, 0x4c, 0xe5, 0x9a, 0xe4, 0x4c, 0xe5, 0x9a, 0xe4, 0x4c, 0xe5, 0x9a, - 0xe4, 0x4c, 0xe6, 0x9a, 0xe6, 0x4c, 0xe6, 0x9a, 0xe6, 0x4c, 0xe6, 0x9a, - 0xe6, 0x4c, 0xe6, 0x9a, 0xe6, 0x4c, 0xe7, 0x9a, 0xe6, 0x4c, 0xe7, 0x9a, - 0xe6, 0x4c, 0xe7, 0x9a, 0xe6, 0x4c, 0xe7, 0x9a, 0xe6, 0x4c, 0xe8, 0x9a, - 0xe6, 0x4c, 0xe8, 0x9b, 0xe8, 0x4c, 0xe8, 0x9b, 0xe8, 0x4c, 0xe8, 0x9b, - 0xe8, 0x4c, 0xe9, 0x9b, 0xe9, 0x4c, 0xe9, 0x9b, 0xe8, 0x4c, 0xe9, 0x9b, - 0xe9, 0x4c, 0xe9, 0x9b, 0xe8, 0x4c, 0xea, 0x9b, 0xe9, 0x4c, 0xea, 0x9b, - 0xe8, 0x4c, 0xea, 0x9b, 0xe9, 0x4c, 0xea, 0x9b, 0xe8, 0x4c, 0xeb, 0x9b, - 0xe9, 0x4c, 0xeb, 0x9c, 0xeb, 0x4c, 0xeb, 0x9c, 0xeb, 0x4c, 0xeb, 0x9c, - 0xeb, 0x4c, 0xec, 0x9c, 0xeb, 0x4c, 0xec, 0x9c, 0xeb, 0x4c, 0xec, 0x9c, - 0xeb, 0x4c, 0xec, 0x9c, 0xeb, 0x4c, 0xec, 0x9c, 0xeb, 0x4c, 0xed, 0x9c, - 0xeb, 0x4c, 0xed, 0x9d, 0xed, 0x4c, 0xed, 0x9d, 0xed, 0x4c, 0xed, 0x9d, - 0xed, 0x4c, 0xee, 0x9d, 0xed, 0x4c, 0xee, 0x9d, 0xed, 0x4c, 0xee, 0x9d, - 0xed, 0x4c, 0xee, 0x9d, 0xed, 0x4c, 0xef, 0x9d, 0xed, 0x4c, 0xef, 0x9d, - 0xed, 0x4c, 0xef, 0x9d, 0xed, 0x4c, 0xef, 0x9e, 0xef, 0x4c, 0xf0, 0x9e, - 0xef, 0x4c, 0xf0, 0x9e, 0xef, 0x4c, 0xf0, 0x9e, 0xef, 0x4c, 0xf0, 0x9e, - 0xef, 0x4c, 0xf1, 0x9e, 0xef, 0x4c, 0xf1, 0x9e, 0xef, 0x4c, 0xf1, 0x9e, - 0xef, 0x4c, 0xf1, 0x9e, 0xef, 0x4c, 0xf2, 0x9f, 0xf2, 0x4c, 0xf2, 0x9f, - 0xf1, 0x4c, 0xf2, 0x9f, 0xf2, 0x4c, 0xf2, 0x9f, 0xf1, 0x4c, 0xf2, 0x9f, - 0xf2, 0x4c, 0xf3, 0x9f, 0xf1, 0x4c, 0xf3, 0x9f, 0xf2, 0x4c, 0xf3, 0x9f, - 0xf1, 0x4c, 0xf3, 0x9f, 0xf2, 0x4c, 0xf4, 0x9f, 0xf4, 0x4c, 0xf4, 0x9f, - 0xf4, 0x4c, 0xf4, 0x9f, 0xf4, 0x4c, 0xf4, 0x9f, 0xf4, 0x4c, 0xf5, 0x9f, - 0xf4, 0x4c, 0xf5, 0x9f, 0xf4, 0x4c, 0xf5, 0x9f, 0xf4, 0x4c, 0xf5, 0x9f, - 0xf4, 0x4c, 0xf5, 0x9f, 0xf4, 0x4c, 0xf6, 0x9f, 0xf4, 0x4c, 0xf6, 0x9f, - 0xf4, 0x4c, 0xf6, 0x9f, 0xf4, 0x4c, 0xf6, 0xa0, 0xf6, 0x4c, 0xf7, 0xa0, - 0xf6, 0x4c, 0xf7, 0xa0, 0xf6, 0x4c, 0xf7, 0xa0, 0xf6, 0x4c, 0xf7, 0xa0, - 0xf6, 0x4c, 0xf8, 0xa0, 0xf6, 0x4c, 0xf8, 0xa0, 0xf6, 0x4c, 0xf8, 0xa0, - 0xf6, 0x4c, 0xf8, 0xa0, 0xf6, 0x4c, 0xf8, 0xa1, 0xf8, 0x4c, 0xf9, 0xa1, - 0xf8, 0x4c, 0xf9, 0xa1, 0xf8, 0x4c, 0xf9, 0xa1, 0xf8, 0x4c, 0xf9, 0xa1, - 0xf8, 0x4c, 0xfa, 0xa1, 0xf8, 0x4c, 0xfa, 0xa1, 0xf8, 0x4c, 0xfa, 0xa1, - 0xf8, 0x4c, 0xfa, 0xa1, 0xf8, 0x4c, 0xfa, 0xa2, 0xfa, 0x4c, 0xfb, 0xa2, - 0xfa, 0x4c, 0xfb, 0xa2, 0xfa, 0x4c, 0xfb, 0xa2, 0xfa, 0x4c, 0xfb, 0xa2, - 0xfa, 0x4c, 0xfc, 0xa2, 0xfa, 0x4c, 0xfc, 0xa2, 0xfa, 0x4c, 0xfc, 0xa2, - 0xfa, 0x4c, 0xfc, 0xa2, 0xfa, 0x4c, 0xfc, 0xa2, 0xfa, 0x4c, 0xfd, 0xa2, - 0xfa, 0x4c, 0xfd, 0xa2, 0xfa, 0x4c, 0xfd, 0xa3, 0xfb, 0x4c, 0xfd, 0xa3, - 0xfc, 0x4c, 0xfe, 0xa3, 0xfb, 0x4c, 0xfe, 0xa3, 0xfc, 0x4c, 0xfe, 0xa3, - 0xfb, 0x4c, 0xfe, 0xa3, 0xfc, 0x4c, 0xfe, 0xa3, 0xfb, 0x4c, 0xff, 0xa3, - 0xfc, 0x4c, 0xff, 0xa3, 0xfb, 0x4c, 0x03, 0xa1, 0x97, 0x4c, 0x0a, 0x9d, - 0x98, 0x4c, 0x0f, 0xa1, 0x97, 0x4c, 0x14, 0x9d, 0x98, 0x4c, 0x17, 0xa1, - 0x97, 0x4c, 0x1b, 0x9d, 0x98, 0x4c, 0x1e, 0xa1, 0x97, 0x4c, 0x20, 0x9d, - 0x98, 0x4c, 0x23, 0xa1, 0x97, 0x4c, 0x25, 0x9d, 0x98, 0x4c, 0x27, 0xa1, - 0x97, 0x4c, 0x29, 0x9d, 0x98, 0x4c, 0x2b, 0x9b, 0x98, 0x4c, 0x2d, 0x9d, - 0x98, 0x4c, 0x2f, 0x9b, 0x98, 0x4c, 0x31, 0x9d, 0x98, 0x4c, 0x32, 0x9b, - 0x98, 0x4c, 0x34, 0x9d, 0x98, 0x4c, 0x35, 0x9b, 0x98, 0x4c, 0x37, 0x9d, - 0x98, 0x4c, 0x38, 0x9b, 0x98, 0x4c, 0x3a, 0x9d, 0x98, 0x4c, 0x3b, 0x9b, - 0x98, 0x4c, 0x3c, 0x9d, 0x98, 0x4c, 0x3e, 0x9b, 0x98, 0x4c, 0x3f, 0x9d, - 0x98, 0x4c, 0x40, 0x9b, 0x98, 0x4c, 0x42, 0x9d, 0x98, 0x4c, 0x43, 0x9b, - 0x98, 0x4c, 0x44, 0x9d, 0x98, 0x4c, 0x45, 0x9b, 0x98, 0x4c, 0x46, 0x9d, - 0x98, 0x4c, 0x47, 0x9b, 0x98, 0x4c, 0x48, 0x9d, 0x98, 0x4c, 0x49, 0x9b, - 0x98, 0x4c, 0x4a, 0x9d, 0x98, 0x4c, 0x4b, 0x9b, 0x98, 0x4c, 0x4c, 0x9d, - 0x98, 0x4c, 0x4d, 0x9b, 0x98, 0x4c, 0x4e, 0x9d, 0x98, 0x4c, 0x4f, 0x9b, - 0x98, 0x4c, 0x50, 0x9d, 0x98, 0x4c, 0x51, 0x9b, 0x98, 0x4c, 0x52, 0x9d, - 0x98, 0x4c, 0x53, 0x9b, 0x98, 0x4c, 0x54, 0x9d, 0x98, 0x4c, 0x55, 0x9b, - 0x98, 0x4c, 0x56, 0x9d, 0x98, 0x4c, 0x57, 0x9b, 0x98, 0x4c, 0x58, 0x9d, - 0x98, 0x4c, 0x58, 0x9b, 0x98, 0x4c, 0x59, 0x9d, 0x98, 0x4c, 0x5a, 0x9b, - 0x98, 0x4c, 0x5b, 0x9d, 0x98, 0x4c, 0x5c, 0x9b, 0x98, 0x4c, 0x5d, 0x9d, - 0x98, 0x4c, 0x5d, 0x9b, 0x98, 0x4c, 0x5e, 0x9d, 0x98, 0x4c, 0x5f, 0x9b, - 0x98, 0x4c, 0x60, 0x9d, 0x98, 0x4c, 0x60, 0x9b, 0x98, 0x4c, 0x61, 0x9d, - 0x98, 0x4c, 0x62, 0x9b, 0x98, 0x4c, 0x63, 0x9d, 0x98, 0x4c, 0x63, 0x9b, - 0x98, 0x4c, 0x64, 0x9d, 0x98, 0x4c, 0x65, 0x9b, 0x98, 0x4c, 0x66, 0x9d, - 0x98, 0x4c, 0x66, 0x9b, 0x98, 0x4c, 0x67, 0x9d, 0x98, 0x4c, 0x68, 0x9b, - 0x98, 0x4c, 0x68, 0x9d, 0x98, 0x4c, 0x69, 0x9b, 0x98, 0x4c, 0x6a, 0x9d, - 0x98, 0x4c, 0x6a, 0x9b, 0x98, 0x4c, 0x6b, 0x9d, 0x98, 0x4c, 0x6c, 0x9b, - 0x98, 0x4c, 0x6c, 0x98, 0x98, 0x4c, 0x6d, 0x9b, 0x98, 0x4c, 0x6e, 0x98, - 0x98, 0x4c, 0x6e, 0x9b, 0x98, 0x4c, 0x6f, 0x98, 0x98, 0x4c, 0x70, 0x9b, - 0x98, 0x4c, 0x70, 0x98, 0x98, 0x4c, 0x71, 0x9b, 0x98, 0x4c, 0x72, 0x98, - 0x98, 0x4c, 0x72, 0x9b, 0x98, 0x4c, 0x73, 0x98, 0x98, 0x4c, 0x73, 0x9b, - 0x98, 0x4c, 0x74, 0x98, 0x98, 0x4c, 0x75, 0x9b, 0x98, 0x4c, 0x75, 0x98, - 0x98, 0x4c, 0x76, 0x9b, 0x98, 0x4c, 0x76, 0x98, 0x98, 0x4c, 0x77, 0x9b, - 0x98, 0x4c, 0x78, 0x98, 0x98, 0x4c, 0x78, 0x9b, 0x98, 0x4c, 0x79, 0x98, - 0x98, 0x4c, 0x79, 0x9b, 0x98, 0x4c, 0x7a, 0x98, 0x98, 0x4c, 0x7a, 0x9b, - 0x98, 0x4c, 0x7b, 0x98, 0x98, 0x4c, 0x7c, 0x9b, 0x98, 0x4c, 0x7c, 0x98, - 0x98, 0x4c, 0x7d, 0x9b, 0x98, 0x4c, 0x7d, 0x98, 0x98, 0x4c, 0x7e, 0x9b, - 0x98, 0x4c, 0x7e, 0x98, 0x98, 0x4c, 0x7f, 0x9b, 0x98, 0x4c, 0x7f, 0x98, - 0x98, 0x4c, 0x80, 0x9b, 0x98, 0x4c, 0x81, 0x98, 0x98, 0x4c, 0x81, 0x9b, - 0x98, 0x4c, 0x82, 0x98, 0x98, 0x4c, 0x82, 0x96, 0x99, 0x4c, 0x83, 0x98, - 0x98, 0x4c, 0x83, 0x96, 0x99, 0x4c, 0x84, 0x98, 0x98, 0x4c, 0x84, 0x96, - 0x99, 0x4c, 0x85, 0x98, 0x98, 0x4c, 0x85, 0x96, 0x99, 0x4c, 0x86, 0x98, - 0x98, 0x4c, 0x86, 0x96, 0x99, 0x4c, 0x87, 0x98, 0x98, 0x4c, 0x87, 0x96, - 0x99, 0x4c, 0x88, 0x98, 0x98, 0x4c, 0x88, 0x96, 0x99, 0x4c, 0x89, 0x98, - 0x98, 0x4c, 0x89, 0x96, 0x99, 0x4c, 0x8a, 0x98, 0x98, 0x4c, 0x8a, 0x96, - 0x99, 0x4c, 0x8b, 0x98, 0x98, 0x4c, 0x8b, 0x96, 0x99, 0x4c, 0x8c, 0x98, - 0x98, 0x4c, 0x8c, 0x96, 0x99, 0x4c, 0x8d, 0x98, 0x98, 0x4c, 0x8d, 0x96, - 0x99, 0x4c, 0x8e, 0x98, 0x98, 0x4c, 0x8e, 0x96, 0x99, 0x4c, 0x8e, 0x98, - 0x98, 0x4c, 0x8f, 0x96, 0x99, 0x4c, 0x8f, 0x98, 0x98, 0x4c, 0x90, 0x96, - 0x99, 0x4c, 0x90, 0x98, 0x98, 0x4c, 0x91, 0x96, 0x99, 0x4c, 0x91, 0x98, - 0x98, 0x4c, 0x92, 0x96, 0x99, 0x4c, 0x92, 0x95, 0x99, 0x4c, 0x93, 0x96, - 0x99, 0x4c, 0x93, 0x95, 0x99, 0x4c, 0x94, 0x96, 0x99, 0x4c, 0x94, 0x95, - 0x99, 0x4c, 0x94, 0x96, 0x99, 0x4c, 0x95, 0x95, 0x99, 0x4c, 0x95, 0x96, - 0x99, 0x4c, 0x96, 0x95, 0x99, 0x4c, 0x96, 0x96, 0x99, 0x4c, 0x97, 0x95, - 0x99, 0x4c, 0x97, 0x96, 0x99, 0x4c, 0x98, 0x95, 0x99, 0x4c, 0x98, 0x96, - 0x99, 0x4c, 0x98, 0x95, 0x99, 0x4c, 0x99, 0x96, 0x99, 0x4c, 0x98, 0x95, - 0x99, 0x4c, 0x99, 0x95, 0x9a, 0x4c, 0x98, 0x95, 0x9a, 0x4c, 0x99, 0x95, - 0x9a, 0x4c, 0x9d, 0x95, 0x9b, 0x4e, 0x9d, 0x95, 0x9b, 0x4c, 0x9d, 0x95, - 0x9c, 0x4c, 0x9d, 0x95, 0x9c, 0x4c, 0x9d, 0x95, 0x9d, 0x4c, 0x9d, 0x95, - 0x9c, 0x4c, 0x9d, 0x95, 0x9d, 0x4c, 0x9e, 0x95, 0x9c, 0x4c, 0x9e, 0x95, - 0x9d, 0x4c, 0x9f, 0x93, 0x9d, 0x4c, 0x9f, 0x95, 0x9d, 0x4c, 0x9f, 0x93, - 0x9d, 0x4c, 0xa0, 0x95, 0x9d, 0x4c, 0xa0, 0x93, 0x9d, 0x4c, 0xa1, 0x95, - 0x9d, 0x4c, 0xa1, 0x93, 0x9d, 0x4c, 0xa1, 0x95, 0x9d, 0x4c, 0xa2, 0x93, - 0x9d, 0x4c, 0xa2, 0x95, 0x9d, 0x4c, 0xa3, 0x8e, 0xa4, 0x4c, 0xa3, 0x8e, - 0xa4, 0x4c, 0xa3, 0x8e, 0xa4, 0x4c, 0xa4, 0x8e, 0xa4, 0x4c, 0xa4, 0x8e, - 0xa4, 0x4c, 0xa5, 0x8e, 0xa5, 0x4c, 0xa5, 0x8e, 0xa5, 0x4c, 0xa5, 0x8e, - 0xa5, 0x4c, 0xa6, 0x8f, 0xa8, 0x4c, 0xa6, 0x8f, 0xa8, 0x4c, 0xa6, 0x8f, - 0xa8, 0x4c, 0xa7, 0x8f, 0xa8, 0x4c, 0xa7, 0x8f, 0xa8, 0x4c, 0xa8, 0x8f, - 0xa8, 0x4c, 0xa8, 0x8f, 0xa8, 0x4c, 0xa8, 0x8f, 0xa8, 0x4c, 0xa9, 0x8f, - 0xa9, 0x4c, 0xa9, 0x8f, 0xa9, 0x4c, 0xaa, 0x8f, 0xaa, 0x4c, 0xaa, 0x8f, - 0xaa, 0x4c, 0xaa, 0x90, 0xac, 0x4c, 0xab, 0x90, 0xad, 0x4c, 0xab, 0x90, - 0xac, 0x4c, 0xab, 0x90, 0xad, 0x4c, 0xac, 0x90, 0xac, 0x4c, 0xac, 0x90, - 0xad, 0x4c, 0xac, 0x90, 0xac, 0x4c, 0xad, 0x90, 0xad, 0x4c, 0xad, 0x90, - 0xad, 0x4c, 0xae, 0x90, 0xae, 0x4c, 0xae, 0x90, 0xae, 0x4c, 0xae, 0x90, - 0xae, 0x4c, 0xaf, 0x90, 0xaf, 0x4c, 0xaf, 0x91, 0xb0, 0x4c, 0xaf, 0x91, - 0xb1, 0x4c, 0xb0, 0x91, 0xb0, 0x4c, 0xb0, 0x91, 0xb1, 0x4c, 0xb0, 0x91, - 0xb0, 0x4c, 0xb1, 0x91, 0xb1, 0x4c, 0xb1, 0x91, 0xb1, 0x4c, 0xb2, 0x91, - 0xb2, 0x4c, 0xb2, 0x91, 0xb2, 0x4c, 0xb2, 0x91, 0xb2, 0x4c, 0xb3, 0x91, - 0xb3, 0x4c, 0xb3, 0x92, 0xb4, 0x4c, 0xb3, 0x92, 0xb5, 0x4c, 0xb4, 0x92, - 0xb4, 0x4c, 0xb4, 0x92, 0xb5, 0x4c, 0xb4, 0x92, 0xb4, 0x4c, 0xb5, 0x92, - 0xb5, 0x4c, 0xb5, 0x92, 0xb5, 0x4c, 0xb5, 0x92, 0xb5, 0x4c, 0xb6, 0x92, - 0xb6, 0x4c, 0xb6, 0x92, 0xb6, 0x4c, 0xb6, 0x92, 0xb6, 0x4c, 0xb7, 0x93, - 0xb8, 0x4c, 0xb7, 0x93, 0xb8, 0x4c, 0xb7, 0x93, 0xb8, 0x4c, 0xb8, 0x93, - 0xb8, 0x4c, 0xb8, 0x93, 0xb8, 0x4c, 0xb8, 0x93, 0xb8, 0x4c, 0xb9, 0x93, - 0xb9, 0x4c, 0xb9, 0x93, 0xb9, 0x4c, 0xb9, 0x93, 0xb9, 0x4c, 0xba, 0x93, - 0xba, 0x4c, 0xba, 0x93, 0xba, 0x4c, 0xba, 0x93, 0xba, 0x4c, 0xbb, 0x94, - 0xbc, 0x4c, 0xbb, 0x94, 0xbc, 0x4c, 0xbb, 0x94, 0xbc, 0x4c, 0xbc, 0x94, - 0xbc, 0x4c, 0xbc, 0x94, 0xbc, 0x4c, 0xbc, 0x94, 0xbc, 0x4c, 0xbd, 0x94, - 0xbd, 0x4c, 0xbd, 0x94, 0xbd, 0x4c, 0xbd, 0x94, 0xbd, 0x4c, 0xbe, 0x94, - 0xbe, 0x4c, 0xbe, 0x94, 0xbe, 0x4c, 0xbe, 0x94, 0xbe, 0x4c, 0xbf, 0x94, - 0xbf, 0x4c, 0xbf, 0x94, 0xbf, 0x4c, 0xbf, 0x95, 0xbf, 0x4d, 0xc0, 0x95, - 0xc0, 0x4d, 0xc0, 0x95, 0xc0, 0x4d, 0xc0, 0x95, 0xc0, 0x4d, 0xc1, 0x95, - 0xc1, 0x4d, 0xc1, 0x95, 0xc1, 0x4d, 0xc1, 0x95, 0xc1, 0x4d, 0xc1, 0x95, - 0xc1, 0x4d, 0xc2, 0x95, 0xc2, 0x4d, 0xc2, 0x95, 0xc2, 0x4d, 0xc2, 0x95, - 0xc2, 0x4d, 0xc2, 0x95, 0xc3, 0x4d, 0xc2, 0x95, 0xc3, 0x4d, 0xc3, 0x95, - 0xc3, 0x4e, 0xc4, 0x95, 0xc4, 0x4e, 0xc4, 0x95, 0xc4, 0x4e, 0xc4, 0x95, - 0xc4, 0x4e, 0xc5, 0x95, 0xc5, 0x4e, 0xc5, 0x95, 0xc5, 0x4e, 0xc5, 0x95, - 0xc5, 0x4e, 0xc6, 0x95, 0xc6, 0x4e, 0xc6, 0x95, 0xc6, 0x4e, 0xc6, 0x95, - 0xc6, 0x4e, 0xc6, 0x95, 0xc6, 0x4e, 0xc6, 0x95, 0xc7, 0x4e, 0xc6, 0x95, - 0xc7, 0x4e, 0xc6, 0x95, 0xc7, 0x4e, 0xc8, 0x95, 0xc8, 0x4f, 0xc8, 0x95, - 0xc8, 0x4f, 0xc8, 0x95, 0xc8, 0x4f, 0xc9, 0x95, 0xc9, 0x4f, 0xc9, 0x95, - 0xc9, 0x4f, 0xc9, 0x95, 0xc9, 0x4f, 0xc9, 0x95, 0xc9, 0x4f, 0xc9, 0x95, - 0xca, 0x4f, 0xc9, 0x95, 0xca, 0x4f, 0xc9, 0x95, 0xca, 0x4f, 0xc9, 0x95, - 0xcb, 0x4f, 0xcb, 0x95, 0xcb, 0x50, 0xcb, 0x95, 0xcb, 0x50, 0xcc, 0x95, - 0xcc, 0x50, 0xcc, 0x95, 0xcc, 0x48, 0xcc, 0x95, 0xcc, 0x48, 0xcc, 0x95, - 0xcc, 0x48, 0xcd, 0x95, 0xcd, 0x48, 0xcd, 0x95, 0xcd, 0x48, 0xcd, 0x95, - 0xcd, 0x48, 0xcf, 0x95, 0xce, 0x49, 0xcf, 0x95, 0xce, 0x49, 0xcf, 0x95, - 0xce, 0x49, 0xcf, 0x95, 0xce, 0x49, 0xcf, 0x95, 0xcf, 0x49, 0xcf, 0x95, - 0xcf, 0x49, 0xcf, 0x95, 0xcf, 0x49, 0xd0, 0x95, 0xd0, 0x49, 0xd0, 0x95, - 0xd0, 0x49, 0xd1, 0x95, 0xd0, 0x4a, 0xd2, 0x95, 0xd0, 0x4a, 0xd1, 0x95, - 0xd1, 0x4a, 0xd2, 0x95, 0xd1, 0x4a, 0xd1, 0x95, 0xd1, 0x4a, 0xd2, 0x95, - 0xd2, 0x4a, 0xd2, 0x95, 0xd2, 0x4a, 0xd2, 0x95, 0xd2, 0x4a, 0xd2, 0x95, - 0xd2, 0x4a, 0xd3, 0x95, 0xd3, 0x4a, 0xd3, 0x95, 0xd3, 0x4a, 0xd4, 0x95, - 0xd3, 0x4b, 0xd4, 0x95, 0xd4, 0x4b, 0xd4, 0x95, 0xd4, 0x4b, 0xd4, 0x95, - 0xd4, 0x4b, 0xd4, 0x95, 0xd4, 0x4b, 0xd5, 0x95, 0xd5, 0x4b, 0xd5, 0x95, - 0xd5, 0x4b, 0xd5, 0x95, 0xd5, 0x4b, 0xd6, 0x95, 0xd6, 0x4b, 0xd6, 0x95, - 0xd6, 0x4b, 0xd6, 0x95, 0xd6, 0x4b, 0xd6, 0x95, 0xd6, 0x4b, 0xd7, 0x96, - 0xd7, 0x4c, 0xd7, 0x96, 0xd7, 0x4c, 0xd7, 0x96, 0xd7, 0x4c, 0xd7, 0x96, - 0xd7, 0x4c, 0xd8, 0x96, 0xd8, 0x4c, 0xd8, 0x96, 0xd8, 0x4c, 0xd8, 0x96, - 0xd8, 0x4c, 0xd9, 0x96, 0xd9, 0x4c, 0xd9, 0x96, 0xd9, 0x4c, 0xd9, 0x96, - 0xd9, 0x4c, 0xd9, 0x96, 0xd9, 0x4c, 0xda, 0x97, 0xda, 0x4c, 0xda, 0x97, - 0xda, 0x4c, 0xda, 0x97, 0xda, 0x4c, 0xda, 0x97, 0xda, 0x4c, 0xdb, 0x97, - 0xdb, 0x4c, 0xdb, 0x97, 0xdb, 0x4c, 0xdb, 0x97, 0xdb, 0x4c, 0xdb, 0x97, - 0xdb, 0x4c, 0xdc, 0x97, 0xdb, 0x4c, 0xdc, 0x97, 0xdb, 0x4c, 0xdc, 0x97, - 0xdb, 0x4c, 0xdd, 0x98, 0xdd, 0x4c, 0xdd, 0x98, 0xdd, 0x4c, 0xdd, 0x98, - 0xdd, 0x4c, 0xdd, 0x98, 0xdd, 0x4c, 0xde, 0x98, 0xde, 0x4c, 0xde, 0x98, - 0xde, 0x4c, 0xde, 0x98, 0xde, 0x4c, 0xde, 0x98, 0xde, 0x4c, 0xdf, 0x98, - 0xde, 0x4c, 0xdf, 0x98, 0xde, 0x4c, 0xdf, 0x98, 0xdf, 0x4c, 0xdf, 0x98, - 0xdf, 0x4c, 0xe0, 0x98, 0xe0, 0x4c, 0xe0, 0x98, 0xe0, 0x4c, 0xe0, 0x98, - 0xe0, 0x4c, 0xe1, 0x98, 0xe0, 0x4c, 0xe1, 0x98, 0xe0, 0x4c, 0xe1, 0x98, - 0xe0, 0x4c, 0xe1, 0x98, 0xe0, 0x4c, 0xe2, 0x99, 0xe2, 0x4c, 0xe2, 0x99, - 0xe2, 0x4c, 0xe2, 0x99, 0xe2, 0x4c, 0xe2, 0x99, 0xe2, 0x4c, 0xe3, 0x99, - 0xe3, 0x4c, 0xe3, 0x99, 0xe2, 0x4c, 0xe3, 0x99, 0xe3, 0x4c, 0xe3, 0x99, - 0xe2, 0x4c, 0xe4, 0x99, 0xe3, 0x4c, 0xe4, 0x99, 0xe2, 0x4c, 0xe4, 0x99, - 0xe3, 0x4c, 0xe4, 0x9a, 0xe4, 0x4c, 0xe5, 0x9a, 0xe5, 0x4c, 0xe5, 0x9a, - 0xe5, 0x4c, 0xe5, 0x9a, 0xe5, 0x4c, 0xe5, 0x9a, 0xe5, 0x4c, 0xe6, 0x9a, - 0xe5, 0x4c, 0xe6, 0x9a, 0xe5, 0x4c, 0xe6, 0x9a, 0xe5, 0x4c, 0xe6, 0x9a, - 0xe5, 0x4c, 0xe7, 0x9a, 0xe5, 0x4c, 0xe7, 0x9b, 0xe7, 0x4c, 0xe7, 0x9b, - 0xe7, 0x4c, 0xe7, 0x9b, 0xe7, 0x4c, 0xe8, 0x9b, 0xe7, 0x4c, 0xe8, 0x9b, - 0xe7, 0x4c, 0xe8, 0x9b, 0xe7, 0x4c, 0xe8, 0x9b, 0xe7, 0x4c, 0xe9, 0x9b, - 0xe7, 0x4c, 0xe9, 0x9b, 0xe7, 0x4c, 0xe9, 0x9c, 0xe9, 0x4c, 0xe9, 0x9c, - 0xe9, 0x4c, 0xea, 0x9c, 0xea, 0x4c, 0xea, 0x9c, 0xea, 0x4c, 0xea, 0x9c, - 0xea, 0x4c, 0xea, 0x9c, 0xea, 0x4c, 0xeb, 0x9c, 0xea, 0x4c, 0xeb, 0x9c, - 0xea, 0x4c, 0xeb, 0x9c, 0xea, 0x4c, 0xeb, 0x9c, 0xea, 0x4c, 0xec, 0x9c, - 0xea, 0x4c, 0xec, 0x9c, 0xea, 0x4c, 0xec, 0x9d, 0xec, 0x4c, 0xec, 0x9d, - 0xec, 0x4c, 0xec, 0x9d, 0xec, 0x4c, 0xed, 0x9d, 0xec, 0x4c, 0xed, 0x9d, - 0xec, 0x4c, 0xed, 0x9d, 0xec, 0x4c, 0xed, 0x9d, 0xec, 0x4c, 0xee, 0x9d, - 0xec, 0x4c, 0xee, 0x9d, 0xec, 0x4c, 0xee, 0x9d, 0xee, 0x4c, 0xee, 0x9d, - 0xee, 0x4c, 0xef, 0x9d, 0xee, 0x4c, 0xef, 0x9d, 0xee, 0x4c, 0xef, 0x9d, - 0xee, 0x4c, 0xef, 0x9d, 0xee, 0x4c, 0xf0, 0x9d, 0xee, 0x4c, 0xf0, 0x9d, - 0xee, 0x4c, 0xf0, 0x9d, 0xee, 0x4c, 0xf0, 0x9e, 0xf0, 0x4c, 0xf1, 0x9e, - 0xf1, 0x4c, 0xf1, 0x9e, 0xf0, 0x4c, 0xf1, 0x9e, 0xf1, 0x4c, 0xf1, 0x9e, - 0xf0, 0x4c, 0xf2, 0x9e, 0xf1, 0x4c, 0xf2, 0x9e, 0xf0, 0x4c, 0xf2, 0x9e, - 0xf1, 0x4c, 0xf2, 0x9e, 0xf0, 0x4c, 0xf2, 0x9e, 0xf1, 0x4c, 0xf3, 0x9f, - 0xf3, 0x4c, 0xf3, 0x9f, 0xf2, 0x4c, 0xf3, 0x9f, 0xf3, 0x4c, 0xf3, 0x9f, - 0xf2, 0x4c, 0xf4, 0x9f, 0xf3, 0x4c, 0xf4, 0x9f, 0xf2, 0x4c, 0xf4, 0x9f, - 0xf3, 0x4c, 0xf4, 0x9f, 0xf2, 0x4c, 0xf5, 0x9f, 0xf3, 0x4c, 0xf5, 0xa0, - 0xf5, 0x4c, 0xf5, 0x9f, 0xf3, 0x4c, 0xf5, 0xa0, 0xf5, 0x4c, 0xf5, 0xa0, - 0xf5, 0x4c, 0xf6, 0xa0, 0xf5, 0x4c, 0xf6, 0xa0, 0xf5, 0x4c, 0xf6, 0xa0, - 0xf5, 0x4c, 0xf6, 0xa0, 0xf5, 0x4c, 0xf7, 0xa0, 0xf5, 0x4c, 0xf7, 0xa0, - 0xf5, 0x4c, 0xf7, 0xa0, 0xf5, 0x4c, 0xf7, 0xa1, 0xf7, 0x4c, 0xf8, 0xa1, - 0xf7, 0x4c, 0xf8, 0xa1, 0xf7, 0x4c, 0xf8, 0xa1, 0xf7, 0x4c, 0xf8, 0xa1, - 0xf7, 0x4c, 0xf8, 0xa1, 0xf7, 0x4c, 0xf9, 0xa1, 0xf7, 0x4c, 0xf9, 0xa1, - 0xf7, 0x4c, 0xf9, 0xa1, 0xf7, 0x4c, 0xf9, 0xa1, 0xf7, 0x4c, 0xfa, 0xa1, - 0xf9, 0x4c, 0xfa, 0xa1, 0xf9, 0x4c, 0xfa, 0xa1, 0xf9, 0x4c, 0xfa, 0xa1, - 0xf9, 0x4c, 0xfa, 0xa1, 0xf9, 0x4c, 0xfb, 0xa1, 0xf9, 0x4c, 0xfb, 0xa1, - 0xf9, 0x4c, 0xfb, 0xa1, 0xf9, 0x4c, 0xfb, 0xa1, 0xf9, 0x4c, 0xfc, 0xa2, - 0xfb, 0x4c, 0xfc, 0xa2, 0xfb, 0x4c, 0xfc, 0xa2, 0xfb, 0x4c, 0xfc, 0xa2, - 0xfb, 0x4c, 0xfc, 0xa2, 0xfb, 0x4c, 0xfd, 0xa2, 0xfb, 0x4c, 0xfd, 0xa2, - 0xfb, 0x4c, 0xfd, 0xa2, 0xfb, 0x4c, 0xfd, 0xa2, 0xfb, 0x4c, 0xfe, 0xa2, - 0xfb, 0x4c, 0xfe, 0xa2, 0xfb, 0x4c, 0xfe, 0xa2, 0xfb, 0x4c, 0xfe, 0xa2, - 0xfb, 0x4c, 0xfe, 0xa2, 0xfb, 0x4c, 0xff, 0xa2, 0xfb, 0x4c, 0xff, 0xa2, - 0xfb, 0x4c, 0x03, 0xa0, 0x97, 0x4d, 0x0a, 0x9e, 0x98, 0x4d, 0x0f, 0xa0, - 0x97, 0x4d, 0x14, 0x9e, 0x98, 0x4d, 0x17, 0xa0, 0x97, 0x4d, 0x1b, 0x9e, - 0x98, 0x4d, 0x1e, 0xa0, 0x97, 0x4d, 0x20, 0x9e, 0x98, 0x4d, 0x23, 0xa0, - 0x97, 0x4d, 0x25, 0x9e, 0x98, 0x4d, 0x27, 0xa0, 0x97, 0x4d, 0x29, 0x9e, - 0x98, 0x4d, 0x2b, 0xa0, 0x97, 0x4d, 0x2d, 0x9e, 0x98, 0x4d, 0x2f, 0xa0, - 0x97, 0x4d, 0x31, 0x9e, 0x98, 0x4d, 0x32, 0xa0, 0x97, 0x4d, 0x34, 0x9e, - 0x98, 0x4d, 0x35, 0xa0, 0x97, 0x4d, 0x37, 0x9e, 0x98, 0x4d, 0x38, 0xa0, - 0x97, 0x4d, 0x3a, 0x9e, 0x98, 0x4d, 0x3b, 0xa0, 0x97, 0x4d, 0x3c, 0x9e, - 0x98, 0x4d, 0x3e, 0xa0, 0x97, 0x4d, 0x3f, 0x9e, 0x98, 0x4d, 0x40, 0xa0, - 0x97, 0x4d, 0x42, 0x9e, 0x98, 0x4d, 0x43, 0xa0, 0x97, 0x4d, 0x44, 0x9e, - 0x98, 0x4d, 0x45, 0xa0, 0x97, 0x4d, 0x46, 0x9e, 0x98, 0x4d, 0x47, 0xa0, - 0x97, 0x4d, 0x48, 0x9e, 0x98, 0x4d, 0x49, 0xa0, 0x97, 0x4d, 0x4a, 0x9e, - 0x98, 0x4d, 0x4b, 0xa0, 0x97, 0x4d, 0x4c, 0x9e, 0x98, 0x4d, 0x4d, 0xa0, - 0x97, 0x4d, 0x4e, 0x9e, 0x98, 0x4d, 0x4f, 0x9b, 0x98, 0x4d, 0x50, 0x9e, - 0x98, 0x4d, 0x51, 0x9b, 0x98, 0x4d, 0x52, 0x9e, 0x98, 0x4d, 0x53, 0x9b, - 0x98, 0x4d, 0x54, 0x9e, 0x98, 0x4d, 0x55, 0x9b, 0x98, 0x4d, 0x56, 0x9e, - 0x98, 0x4d, 0x57, 0x9b, 0x98, 0x4d, 0x58, 0x9e, 0x98, 0x4d, 0x58, 0x9b, - 0x98, 0x4d, 0x59, 0x9e, 0x98, 0x4d, 0x5a, 0x9b, 0x98, 0x4d, 0x5b, 0x9e, - 0x98, 0x4d, 0x5c, 0x9b, 0x98, 0x4d, 0x5d, 0x9e, 0x98, 0x4d, 0x5d, 0x9b, - 0x98, 0x4d, 0x5e, 0x9e, 0x98, 0x4d, 0x5f, 0x9b, 0x98, 0x4d, 0x60, 0x9e, - 0x98, 0x4d, 0x60, 0x9b, 0x98, 0x4d, 0x61, 0x9e, 0x98, 0x4d, 0x62, 0x9b, - 0x98, 0x4d, 0x63, 0x9e, 0x98, 0x4d, 0x63, 0x9b, 0x98, 0x4d, 0x64, 0x9e, - 0x98, 0x4d, 0x65, 0x9b, 0x98, 0x4d, 0x66, 0x9e, 0x98, 0x4d, 0x66, 0x9b, - 0x98, 0x4d, 0x67, 0x98, 0x98, 0x4d, 0x68, 0x9b, 0x98, 0x4d, 0x68, 0x98, - 0x98, 0x4d, 0x69, 0x9b, 0x98, 0x4d, 0x6a, 0x98, 0x98, 0x4d, 0x6a, 0x9b, - 0x98, 0x4d, 0x6b, 0x98, 0x98, 0x4d, 0x6c, 0x9b, 0x98, 0x4d, 0x6c, 0x98, - 0x98, 0x4d, 0x6d, 0x9b, 0x98, 0x4d, 0x6e, 0x98, 0x98, 0x4d, 0x6e, 0x9b, - 0x98, 0x4d, 0x6f, 0x98, 0x98, 0x4d, 0x70, 0x9b, 0x98, 0x4d, 0x70, 0x98, - 0x98, 0x4d, 0x71, 0x9b, 0x98, 0x4d, 0x72, 0x98, 0x98, 0x4d, 0x72, 0x9b, - 0x98, 0x4d, 0x73, 0x98, 0x98, 0x4d, 0x73, 0x9b, 0x98, 0x4d, 0x74, 0x98, - 0x98, 0x4d, 0x75, 0x9b, 0x98, 0x4d, 0x75, 0x98, 0x98, 0x4d, 0x76, 0x9b, - 0x98, 0x4d, 0x76, 0x98, 0x98, 0x4d, 0x77, 0x9b, 0x98, 0x4d, 0x78, 0x98, - 0x98, 0x4d, 0x78, 0x9b, 0x98, 0x4d, 0x79, 0x98, 0x98, 0x4d, 0x79, 0x9b, - 0x98, 0x4d, 0x7a, 0x98, 0x98, 0x4d, 0x7a, 0x9b, 0x98, 0x4d, 0x7b, 0x98, - 0x98, 0x4d, 0x7c, 0x9b, 0x98, 0x4d, 0x7c, 0x98, 0x98, 0x4d, 0x7d, 0x9b, - 0x98, 0x4d, 0x7d, 0x98, 0x98, 0x4d, 0x7e, 0x9b, 0x98, 0x4d, 0x7e, 0x98, - 0x98, 0x4d, 0x7f, 0x9b, 0x98, 0x4d, 0x7f, 0x98, 0x98, 0x4d, 0x80, 0x9b, - 0x98, 0x4d, 0x81, 0x98, 0x98, 0x4d, 0x81, 0x9b, 0x98, 0x4d, 0x82, 0x98, - 0x98, 0x4d, 0x82, 0x95, 0x99, 0x4d, 0x83, 0x98, 0x98, 0x4d, 0x83, 0x95, - 0x99, 0x4d, 0x84, 0x98, 0x98, 0x4d, 0x84, 0x95, 0x99, 0x4d, 0x85, 0x98, - 0x98, 0x4d, 0x85, 0x95, 0x99, 0x4d, 0x86, 0x98, 0x98, 0x4d, 0x86, 0x95, - 0x99, 0x4d, 0x87, 0x98, 0x98, 0x4d, 0x87, 0x95, 0x99, 0x4d, 0x88, 0x98, - 0x98, 0x4d, 0x88, 0x95, 0x99, 0x4d, 0x89, 0x98, 0x98, 0x4d, 0x89, 0x95, - 0x99, 0x4d, 0x8a, 0x98, 0x98, 0x4d, 0x8a, 0x95, 0x99, 0x4d, 0x8b, 0x98, - 0x98, 0x4d, 0x8b, 0x95, 0x99, 0x4d, 0x8c, 0x98, 0x98, 0x4d, 0x8c, 0x95, - 0x99, 0x4d, 0x8d, 0x98, 0x98, 0x4d, 0x8d, 0x95, 0x99, 0x4d, 0x8e, 0x98, - 0x98, 0x4d, 0x8e, 0x95, 0x99, 0x4d, 0x8e, 0x98, 0x98, 0x4d, 0x8f, 0x95, - 0x99, 0x4d, 0x8f, 0x98, 0x98, 0x4d, 0x90, 0x95, 0x99, 0x4d, 0x90, 0x98, - 0x98, 0x4d, 0x91, 0x95, 0x99, 0x4d, 0x91, 0x98, 0x98, 0x4d, 0x92, 0x95, - 0x99, 0x4d, 0x92, 0x98, 0x98, 0x4d, 0x93, 0x95, 0x99, 0x4d, 0x93, 0x98, - 0x98, 0x4d, 0x94, 0x95, 0x99, 0x4d, 0x94, 0x98, 0x98, 0x4d, 0x94, 0x95, - 0x99, 0x4d, 0x95, 0x98, 0x98, 0x4d, 0x95, 0x95, 0x99, 0x4d, 0x96, 0x95, - 0x99, 0x4d, 0x96, 0x95, 0x99, 0x4d, 0x97, 0x95, 0x99, 0x4d, 0x97, 0x95, - 0x99, 0x4d, 0x98, 0x95, 0x99, 0x4d, 0x98, 0x95, 0x99, 0x4d, 0x98, 0x95, - 0x99, 0x4d, 0x99, 0x95, 0x99, 0x4c, 0x98, 0x95, 0x99, 0x4d, 0x99, 0x95, - 0x9a, 0x4c, 0x98, 0x95, 0x9a, 0x4d, 0x99, 0x95, 0x9a, 0x4c, 0x9d, 0x95, - 0x9b, 0x4e, 0x9d, 0x95, 0x9b, 0x4d, 0x9d, 0x95, 0x9c, 0x4e, 0x9d, 0x95, - 0x9c, 0x4d, 0x9d, 0x95, 0x9d, 0x4d, 0x9d, 0x95, 0x9c, 0x4d, 0x9d, 0x95, - 0x9d, 0x4d, 0x9e, 0x95, 0x9c, 0x4d, 0x9e, 0x95, 0x9d, 0x4d, 0x9f, 0x95, - 0x9c, 0x4d, 0x9f, 0x95, 0x9d, 0x4d, 0x9f, 0x95, 0x9c, 0x4d, 0xa0, 0x95, - 0x9d, 0x4d, 0xa0, 0x93, 0x9d, 0x4d, 0xa1, 0x95, 0x9d, 0x4d, 0xa1, 0x93, - 0x9d, 0x4d, 0xa1, 0x95, 0x9d, 0x4d, 0xa2, 0x93, 0x9d, 0x4d, 0xa2, 0x95, - 0x9d, 0x4d, 0xa3, 0x93, 0x9d, 0x4d, 0xa3, 0x8e, 0xa3, 0x4d, 0xa3, 0x8e, - 0xa3, 0x4d, 0xa4, 0x8f, 0xa6, 0x4d, 0xa4, 0x8f, 0xa6, 0x4d, 0xa5, 0x8f, - 0xa6, 0x4d, 0xa5, 0x8f, 0xa6, 0x4d, 0xa5, 0x8f, 0xa6, 0x4d, 0xa6, 0x8f, - 0xa6, 0x4d, 0xa6, 0x8f, 0xa6, 0x4d, 0xa6, 0x8f, 0xa6, 0x4d, 0xa7, 0x8f, - 0xa7, 0x4d, 0xa7, 0x8f, 0xa7, 0x4d, 0xa8, 0x8f, 0xa8, 0x4d, 0xa8, 0x90, - 0xaa, 0x4d, 0xa8, 0x90, 0xab, 0x4d, 0xa9, 0x90, 0xaa, 0x4d, 0xa9, 0x90, - 0xab, 0x4d, 0xaa, 0x90, 0xaa, 0x4d, 0xaa, 0x90, 0xab, 0x4d, 0xaa, 0x90, - 0xaa, 0x4d, 0xab, 0x90, 0xab, 0x4d, 0xab, 0x90, 0xab, 0x4d, 0xab, 0x90, - 0xab, 0x4d, 0xac, 0x90, 0xac, 0x4d, 0xac, 0x91, 0xae, 0x4d, 0xac, 0x91, - 0xaf, 0x4d, 0xad, 0x91, 0xae, 0x4d, 0xad, 0x91, 0xaf, 0x4d, 0xae, 0x91, - 0xae, 0x4d, 0xae, 0x91, 0xaf, 0x4d, 0xae, 0x91, 0xae, 0x4d, 0xaf, 0x91, - 0xaf, 0x4d, 0xaf, 0x91, 0xaf, 0x4d, 0xaf, 0x91, 0xaf, 0x4d, 0xb0, 0x91, - 0xb0, 0x4d, 0xb0, 0x91, 0xb0, 0x4d, 0xb0, 0x91, 0xb0, 0x4d, 0xb1, 0x92, - 0xb2, 0x4d, 0xb1, 0x92, 0xb3, 0x4d, 0xb2, 0x92, 0xb2, 0x4d, 0xb2, 0x92, - 0xb3, 0x4d, 0xb2, 0x92, 0xb2, 0x4d, 0xb3, 0x92, 0xb3, 0x4d, 0xb3, 0x92, - 0xb3, 0x4d, 0xb3, 0x92, 0xb3, 0x4d, 0xb4, 0x92, 0xb4, 0x4d, 0xb4, 0x92, - 0xb4, 0x4d, 0xb4, 0x92, 0xb4, 0x4d, 0xb5, 0x93, 0xb6, 0x4d, 0xb5, 0x93, - 0xb6, 0x4d, 0xb5, 0x93, 0xb6, 0x4d, 0xb6, 0x93, 0xb6, 0x4d, 0xb6, 0x93, - 0xb6, 0x4d, 0xb6, 0x93, 0xb6, 0x4d, 0xb7, 0x93, 0xb7, 0x4d, 0xb7, 0x93, - 0xb7, 0x4d, 0xb7, 0x93, 0xb7, 0x4d, 0xb8, 0x93, 0xb8, 0x4d, 0xb8, 0x93, - 0xb8, 0x4d, 0xb8, 0x93, 0xb8, 0x4d, 0xb9, 0x94, 0xba, 0x4d, 0xb9, 0x94, - 0xba, 0x4d, 0xb9, 0x94, 0xba, 0x4d, 0xba, 0x94, 0xba, 0x4d, 0xba, 0x94, - 0xba, 0x4d, 0xba, 0x94, 0xba, 0x4d, 0xbb, 0x94, 0xbb, 0x4d, 0xbb, 0x94, - 0xbb, 0x4d, 0xbb, 0x94, 0xbb, 0x4d, 0xbc, 0x94, 0xbc, 0x4d, 0xbc, 0x94, - 0xbc, 0x4d, 0xbc, 0x94, 0xbc, 0x4d, 0xbd, 0x94, 0xbd, 0x4d, 0xbd, 0x94, - 0xbe, 0x4d, 0xbd, 0x94, 0xbe, 0x4d, 0xbe, 0x94, 0xbe, 0x4d, 0xbe, 0x94, - 0xbe, 0x4d, 0xbe, 0x94, 0xbe, 0x4d, 0xbf, 0x94, 0xbf, 0x4d, 0xbf, 0x94, - 0xbf, 0x4d, 0xbf, 0x94, 0xbf, 0x4d, 0xc0, 0x94, 0xc0, 0x4d, 0xc0, 0x94, - 0xc0, 0x4d, 0xc0, 0x94, 0xc0, 0x4d, 0xc1, 0x94, 0xc1, 0x4d, 0xc1, 0x94, - 0xc1, 0x4d, 0xc1, 0x95, 0xc1, 0x4e, 0xc1, 0x95, 0xc1, 0x4e, 0xc2, 0x95, - 0xc2, 0x4e, 0xc2, 0x95, 0xc2, 0x4e, 0xc2, 0x95, 0xc2, 0x4e, 0xc3, 0x95, - 0xc3, 0x4e, 0xc3, 0x95, 0xc3, 0x4e, 0xc3, 0x95, 0xc3, 0x4e, 0xc4, 0x95, - 0xc4, 0x4e, 0xc4, 0x95, 0xc4, 0x4e, 0xc4, 0x95, 0xc4, 0x4e, 0xc4, 0x95, - 0xc5, 0x4e, 0xc4, 0x95, 0xc5, 0x4e, 0xc5, 0x95, 0xc5, 0x4f, 0xc6, 0x95, - 0xc6, 0x4f, 0xc6, 0x95, 0xc6, 0x4f, 0xc6, 0x95, 0xc6, 0x4f, 0xc6, 0x95, - 0xc6, 0x4f, 0xc7, 0x95, 0xc7, 0x4f, 0xc7, 0x95, 0xc7, 0x4f, 0xc7, 0x95, - 0xc7, 0x4f, 0xc8, 0x95, 0xc8, 0x4f, 0xc7, 0x95, 0xc8, 0x4f, 0xc8, 0x95, - 0xc8, 0x4f, 0xc7, 0x95, 0xc9, 0x4f, 0xc8, 0x95, 0xc9, 0x4f, 0xc9, 0x95, - 0xc9, 0x50, 0xc9, 0x95, 0xc9, 0x50, 0xca, 0x95, 0xca, 0x50, 0xca, 0x95, - 0xca, 0x50, 0xca, 0x95, 0xca, 0x50, 0xcb, 0x95, 0xcb, 0x50, 0xcb, 0x95, - 0xcb, 0x50, 0xcb, 0x95, 0xcb, 0x50, 0xcb, 0x95, 0xcc, 0x50, 0xcb, 0x95, - 0xcc, 0x50, 0xcb, 0x95, 0xcc, 0x50, 0xcc, 0x95, 0xcc, 0x51, 0xcd, 0x95, - 0xcd, 0x51, 0xcd, 0x95, 0xcd, 0x51, 0xcd, 0x95, 0xcd, 0x49, 0xce, 0x95, - 0xce, 0x49, 0xce, 0x95, 0xce, 0x49, 0xce, 0x95, 0xce, 0x49, 0xce, 0x95, - 0xce, 0x49, 0xd0, 0x95, 0xcf, 0x4a, 0xd0, 0x95, 0xcf, 0x4a, 0xd0, 0x95, - 0xcf, 0x4a, 0xd0, 0x95, 0xd0, 0x4a, 0xd0, 0x95, 0xd0, 0x4a, 0xd0, 0x95, - 0xd0, 0x4a, 0xd0, 0x95, 0xd0, 0x4a, 0xd1, 0x95, 0xd1, 0x4a, 0xd1, 0x95, - 0xd1, 0x4a, 0xd1, 0x95, 0xd1, 0x4a, 0xd3, 0x95, 0xd2, 0x4b, 0xd3, 0x95, - 0xd2, 0x4b, 0xd3, 0x95, 0xd2, 0x4b, 0xd3, 0x95, 0xd2, 0x4b, 0xd3, 0x95, - 0xd3, 0x4b, 0xd3, 0x95, 0xd3, 0x4b, 0xd3, 0x95, 0xd3, 0x4b, 0xd4, 0x95, - 0xd4, 0x4b, 0xd4, 0x95, 0xd4, 0x4b, 0xd4, 0x95, 0xd4, 0x4b, 0xd4, 0x95, - 0xd4, 0x4b, 0xd5, 0x95, 0xd5, 0x4c, 0xd6, 0x95, 0xd5, 0x4c, 0xd5, 0x95, - 0xd5, 0x4c, 0xd6, 0x95, 0xd6, 0x4c, 0xd6, 0x95, 0xd6, 0x4c, 0xd6, 0x95, - 0xd6, 0x4c, 0xd6, 0x95, 0xd6, 0x4c, 0xd7, 0x95, 0xd7, 0x4c, 0xd7, 0x95, - 0xd7, 0x4c, 0xd7, 0x95, 0xd7, 0x4c, 0xd7, 0x95, 0xd7, 0x4c, 0xd8, 0x96, - 0xd8, 0x4d, 0xd8, 0x96, 0xd8, 0x4d, 0xd8, 0x96, 0xd8, 0x4d, 0xd9, 0x96, - 0xd9, 0x4d, 0xd9, 0x96, 0xd9, 0x4d, 0xd9, 0x96, 0xd9, 0x4d, 0xd9, 0x96, - 0xd9, 0x4d, 0xda, 0x96, 0xda, 0x4d, 0xda, 0x96, 0xda, 0x4d, 0xda, 0x96, - 0xda, 0x4d, 0xda, 0x96, 0xda, 0x4d, 0xdb, 0x96, 0xda, 0x4d, 0xdb, 0x97, - 0xdb, 0x4d, 0xdb, 0x97, 0xdb, 0x4d, 0xdb, 0x97, 0xdb, 0x4d, 0xdc, 0x97, - 0xdc, 0x4d, 0xdc, 0x97, 0xdc, 0x4d, 0xdc, 0x97, 0xdc, 0x4d, 0xdd, 0x97, - 0xdd, 0x4d, 0xdd, 0x97, 0xdc, 0x4d, 0xdd, 0x97, 0xdd, 0x4d, 0xdd, 0x97, - 0xdc, 0x4d, 0xde, 0x97, 0xdd, 0x4d, 0xde, 0x98, 0xde, 0x4d, 0xde, 0x98, - 0xde, 0x4d, 0xde, 0x98, 0xde, 0x4d, 0xdf, 0x98, 0xdf, 0x4d, 0xdf, 0x98, - 0xdf, 0x4d, 0xdf, 0x98, 0xdf, 0x4d, 0xdf, 0x98, 0xdf, 0x4d, 0xe0, 0x98, - 0xdf, 0x4d, 0xe0, 0x98, 0xdf, 0x4d, 0xe0, 0x99, 0xe0, 0x4d, 0xe1, 0x99, - 0xe1, 0x4d, 0xe1, 0x99, 0xe1, 0x4d, 0xe1, 0x99, 0xe1, 0x4d, 0xe1, 0x99, - 0xe1, 0x4d, 0xe2, 0x99, 0xe2, 0x4d, 0xe2, 0x99, 0xe1, 0x4d, 0xe2, 0x99, - 0xe2, 0x4d, 0xe2, 0x99, 0xe1, 0x4d, 0xe3, 0x99, 0xe2, 0x4d, 0xe3, 0x9a, - 0xe3, 0x4d, 0xe3, 0x9a, 0xe3, 0x4d, 0xe3, 0x9a, 0xe3, 0x4d, 0xe4, 0x9a, - 0xe4, 0x4d, 0xe4, 0x9a, 0xe4, 0x4d, 0xe4, 0x9a, 0xe4, 0x4d, 0xe4, 0x9a, - 0xe4, 0x4d, 0xe5, 0x9a, 0xe4, 0x4d, 0xe5, 0x9a, 0xe4, 0x4d, 0xe5, 0x9a, - 0xe4, 0x4d, 0xe5, 0x9a, 0xe4, 0x4d, 0xe6, 0x9a, 0xe6, 0x4d, 0xe6, 0x9a, - 0xe6, 0x4d, 0xe6, 0x9a, 0xe6, 0x4d, 0xe6, 0x9a, 0xe6, 0x4d, 0xe7, 0x9a, - 0xe6, 0x4d, 0xe7, 0x9a, 0xe6, 0x4d, 0xe7, 0x9a, 0xe6, 0x4d, 0xe7, 0x9a, - 0xe6, 0x4d, 0xe8, 0x9a, 0xe6, 0x4d, 0xe8, 0x9b, 0xe8, 0x4d, 0xe8, 0x9b, - 0xe8, 0x4d, 0xe8, 0x9b, 0xe8, 0x4d, 0xe9, 0x9b, 0xe9, 0x4d, 0xe9, 0x9b, - 0xe8, 0x4d, 0xe9, 0x9b, 0xe9, 0x4d, 0xe9, 0x9b, 0xe8, 0x4d, 0xea, 0x9b, - 0xe9, 0x4d, 0xea, 0x9b, 0xe8, 0x4d, 0xea, 0x9b, 0xe9, 0x4d, 0xea, 0x9c, - 0xea, 0x4d, 0xeb, 0x9c, 0xeb, 0x4d, 0xeb, 0x9c, 0xeb, 0x4d, 0xeb, 0x9c, - 0xeb, 0x4d, 0xeb, 0x9c, 0xeb, 0x4d, 0xec, 0x9c, 0xeb, 0x4d, 0xec, 0x9c, - 0xeb, 0x4d, 0xec, 0x9c, 0xeb, 0x4d, 0xec, 0x9c, 0xeb, 0x4d, 0xec, 0x9c, - 0xeb, 0x4d, 0xed, 0x9c, 0xeb, 0x4d, 0xed, 0x9d, 0xed, 0x4d, 0xed, 0x9d, - 0xed, 0x4d, 0xed, 0x9d, 0xed, 0x4d, 0xee, 0x9d, 0xed, 0x4d, 0xee, 0x9d, - 0xed, 0x4d, 0xee, 0x9d, 0xed, 0x4d, 0xee, 0x9d, 0xed, 0x4d, 0xef, 0x9d, - 0xed, 0x4d, 0xef, 0x9d, 0xed, 0x4d, 0xef, 0x9d, 0xed, 0x4d, 0xef, 0x9e, - 0xef, 0x4d, 0xf0, 0x9e, 0xef, 0x4d, 0xf0, 0x9e, 0xef, 0x4d, 0xf0, 0x9e, - 0xef, 0x4d, 0xf0, 0x9e, 0xef, 0x4d, 0xf1, 0x9e, 0xef, 0x4d, 0xf1, 0x9e, - 0xef, 0x4d, 0xf1, 0x9e, 0xef, 0x4d, 0xf1, 0x9e, 0xef, 0x4d, 0xf2, 0x9f, - 0xf2, 0x4d, 0xf2, 0x9f, 0xf1, 0x4d, 0xf2, 0x9f, 0xf2, 0x4d, 0xf2, 0x9f, - 0xf1, 0x4d, 0xf2, 0x9f, 0xf2, 0x4d, 0xf3, 0x9f, 0xf1, 0x4d, 0xf3, 0x9f, - 0xf2, 0x4d, 0xf3, 0x9f, 0xf1, 0x4d, 0xf3, 0x9f, 0xf2, 0x4d, 0xf4, 0x9f, - 0xf4, 0x4d, 0xf4, 0x9f, 0xf4, 0x4d, 0xf4, 0x9f, 0xf4, 0x4d, 0xf4, 0x9f, - 0xf4, 0x4d, 0xf5, 0x9f, 0xf4, 0x4d, 0xf5, 0x9f, 0xf4, 0x4d, 0xf5, 0x9f, - 0xf4, 0x4d, 0xf5, 0x9f, 0xf4, 0x4d, 0xf5, 0x9f, 0xf4, 0x4d, 0xf6, 0x9f, - 0xf4, 0x4d, 0xf6, 0xa0, 0xf6, 0x4d, 0xf6, 0x9f, 0xf4, 0x4d, 0xf6, 0xa0, - 0xf6, 0x4d, 0xf7, 0xa0, 0xf6, 0x4d, 0xf7, 0xa0, 0xf6, 0x4d, 0xf7, 0xa0, - 0xf6, 0x4d, 0xf7, 0xa0, 0xf6, 0x4d, 0xf8, 0xa0, 0xf6, 0x4d, 0xf8, 0xa0, - 0xf6, 0x4d, 0xf8, 0xa0, 0xf6, 0x4d, 0xf8, 0xa0, 0xf6, 0x4d, 0xf8, 0xa1, - 0xf8, 0x4d, 0xf9, 0xa1, 0xf8, 0x4d, 0xf9, 0xa1, 0xf8, 0x4d, 0xf9, 0xa1, - 0xf8, 0x4d, 0xf9, 0xa1, 0xf8, 0x4d, 0xfa, 0xa1, 0xf8, 0x4d, 0xfa, 0xa1, - 0xf8, 0x4d, 0xfa, 0xa1, 0xf8, 0x4d, 0xfa, 0xa1, 0xf8, 0x4d, 0xfa, 0xa2, - 0xfa, 0x4d, 0xfb, 0xa2, 0xfa, 0x4d, 0xfb, 0xa2, 0xfa, 0x4d, 0xfb, 0xa2, - 0xfa, 0x4d, 0xfb, 0xa2, 0xfa, 0x4d, 0xfc, 0xa2, 0xfa, 0x4d, 0xfc, 0xa2, - 0xfa, 0x4d, 0xfc, 0xa2, 0xfa, 0x4d, 0xfc, 0xa2, 0xfa, 0x4d, 0xfc, 0xa2, - 0xfa, 0x4d, 0xfd, 0xa2, 0xfa, 0x4d, 0xfd, 0xa2, 0xfa, 0x4d, 0xfd, 0xa3, - 0xfb, 0x4d, 0xfd, 0xa3, 0xfc, 0x4d, 0xfe, 0xa3, 0xfb, 0x4d, 0xfe, 0xa3, - 0xfc, 0x4d, 0xfe, 0xa3, 0xfb, 0x4d, 0xfe, 0xa3, 0xfc, 0x4d, 0xfe, 0xa3, - 0xfb, 0x4d, 0xff, 0xa3, 0xfc, 0x4d, 0xff, 0xa3, 0xfb, 0x4d, 0x03, 0xa1, - 0x97, 0x4d, 0x0a, 0x9d, 0x98, 0x4d, 0x0f, 0xa1, 0x97, 0x4d, 0x14, 0x9d, - 0x98, 0x4d, 0x17, 0xa1, 0x97, 0x4d, 0x1b, 0x9d, 0x98, 0x4d, 0x1e, 0xa1, - 0x97, 0x4d, 0x20, 0x9d, 0x98, 0x4d, 0x23, 0xa1, 0x97, 0x4d, 0x25, 0x9d, - 0x98, 0x4d, 0x27, 0xa1, 0x97, 0x4d, 0x29, 0x9d, 0x98, 0x4d, 0x2b, 0xa1, - 0x97, 0x4d, 0x2d, 0x9d, 0x98, 0x4d, 0x2f, 0xa1, 0x97, 0x4d, 0x31, 0x9d, - 0x98, 0x4d, 0x32, 0xa1, 0x97, 0x4d, 0x34, 0x9d, 0x98, 0x4d, 0x35, 0xa1, - 0x97, 0x4d, 0x37, 0x9d, 0x98, 0x4d, 0x38, 0xa1, 0x97, 0x4d, 0x3a, 0x9d, - 0x98, 0x4d, 0x3b, 0xa1, 0x97, 0x4d, 0x3c, 0x9d, 0x98, 0x4d, 0x3e, 0xa1, - 0x97, 0x4d, 0x3f, 0x9d, 0x98, 0x4d, 0x40, 0xa1, 0x97, 0x4d, 0x42, 0x9d, - 0x98, 0x4d, 0x43, 0x9b, 0x98, 0x4d, 0x44, 0x9d, 0x98, 0x4d, 0x45, 0x9b, - 0x98, 0x4d, 0x46, 0x9d, 0x98, 0x4d, 0x47, 0x9b, 0x98, 0x4d, 0x48, 0x9d, - 0x98, 0x4d, 0x49, 0x9b, 0x98, 0x4d, 0x4a, 0x9d, 0x98, 0x4d, 0x4b, 0x9b, - 0x98, 0x4d, 0x4c, 0x9d, 0x98, 0x4d, 0x4d, 0x9b, 0x98, 0x4d, 0x4e, 0x9d, - 0x98, 0x4d, 0x4f, 0x9b, 0x98, 0x4d, 0x50, 0x9d, 0x98, 0x4d, 0x51, 0x9b, - 0x98, 0x4d, 0x52, 0x9d, 0x98, 0x4d, 0x53, 0x9b, 0x98, 0x4d, 0x54, 0x9d, - 0x98, 0x4d, 0x55, 0x9b, 0x98, 0x4d, 0x56, 0x9d, 0x98, 0x4d, 0x57, 0x9b, - 0x98, 0x4d, 0x58, 0x9d, 0x98, 0x4d, 0x58, 0x9b, 0x98, 0x4d, 0x59, 0x9d, - 0x98, 0x4d, 0x5a, 0x9b, 0x98, 0x4d, 0x5b, 0x9d, 0x98, 0x4d, 0x5c, 0x9b, - 0x98, 0x4d, 0x5d, 0x9d, 0x98, 0x4d, 0x5d, 0x9b, 0x98, 0x4d, 0x5e, 0x9d, - 0x98, 0x4d, 0x5f, 0x9b, 0x98, 0x4d, 0x60, 0x9d, 0x98, 0x4d, 0x60, 0x9b, - 0x98, 0x4d, 0x61, 0x9d, 0x98, 0x4d, 0x62, 0x9b, 0x98, 0x4d, 0x63, 0x9d, - 0x98, 0x4d, 0x63, 0x9b, 0x98, 0x4d, 0x64, 0x9d, 0x98, 0x4d, 0x65, 0x9b, - 0x98, 0x4d, 0x66, 0x9d, 0x98, 0x4d, 0x66, 0x9b, 0x98, 0x4d, 0x67, 0x9d, - 0x98, 0x4d, 0x68, 0x9b, 0x98, 0x4d, 0x68, 0x9d, 0x98, 0x4d, 0x69, 0x9b, - 0x98, 0x4d, 0x6a, 0x9d, 0x98, 0x4d, 0x6a, 0x9b, 0x98, 0x4d, 0x6b, 0x9d, - 0x98, 0x4d, 0x6c, 0x9b, 0x98, 0x4d, 0x6c, 0x9d, 0x98, 0x4d, 0x6d, 0x9b, - 0x98, 0x4d, 0x6e, 0x9d, 0x98, 0x4d, 0x6e, 0x9b, 0x98, 0x4d, 0x6f, 0x9d, - 0x98, 0x4d, 0x70, 0x9b, 0x98, 0x4d, 0x70, 0x9d, 0x98, 0x4d, 0x71, 0x9b, - 0x98, 0x4d, 0x72, 0x9d, 0x98, 0x4d, 0x72, 0x9b, 0x98, 0x4d, 0x73, 0x9d, - 0x98, 0x4d, 0x73, 0x9b, 0x98, 0x4d, 0x74, 0x98, 0x98, 0x4d, 0x75, 0x9b, - 0x98, 0x4d, 0x75, 0x98, 0x98, 0x4d, 0x76, 0x9b, 0x98, 0x4d, 0x76, 0x98, - 0x98, 0x4d, 0x77, 0x9b, 0x98, 0x4d, 0x78, 0x98, 0x98, 0x4d, 0x78, 0x9b, - 0x98, 0x4d, 0x79, 0x98, 0x98, 0x4d, 0x79, 0x9b, 0x98, 0x4d, 0x7a, 0x98, - 0x98, 0x4d, 0x7a, 0x9b, 0x98, 0x4d, 0x7b, 0x98, 0x98, 0x4d, 0x7c, 0x9b, - 0x98, 0x4d, 0x7c, 0x98, 0x98, 0x4d, 0x7d, 0x9b, 0x98, 0x4d, 0x7d, 0x98, - 0x98, 0x4d, 0x7e, 0x9b, 0x98, 0x4d, 0x7e, 0x98, 0x98, 0x4d, 0x7f, 0x9b, - 0x98, 0x4d, 0x7f, 0x98, 0x98, 0x4d, 0x80, 0x9b, 0x98, 0x4d, 0x81, 0x98, - 0x98, 0x4d, 0x81, 0x9b, 0x98, 0x4d, 0x82, 0x98, 0x98, 0x4d, 0x82, 0x9b, - 0x98, 0x4d, 0x83, 0x98, 0x98, 0x4d, 0x83, 0x9b, 0x98, 0x4d, 0x84, 0x98, - 0x98, 0x4d, 0x84, 0x9b, 0x98, 0x4d, 0x85, 0x98, 0x98, 0x4d, 0x85, 0x9b, - 0x98, 0x4d, 0x86, 0x98, 0x98, 0x4d, 0x86, 0x9b, 0x98, 0x4d, 0x87, 0x98, - 0x98, 0x4d, 0x87, 0x9b, 0x98, 0x4d, 0x88, 0x98, 0x98, 0x4d, 0x88, 0x96, - 0x99, 0x4d, 0x89, 0x98, 0x98, 0x4d, 0x89, 0x96, 0x99, 0x4d, 0x8a, 0x98, - 0x98, 0x4d, 0x8a, 0x96, 0x99, 0x4d, 0x8b, 0x98, 0x98, 0x4d, 0x8b, 0x96, - 0x99, 0x4d, 0x8c, 0x98, 0x98, 0x4d, 0x8c, 0x96, 0x99, 0x4d, 0x8d, 0x98, - 0x98, 0x4d, 0x8d, 0x96, 0x99, 0x4d, 0x8e, 0x98, 0x98, 0x4d, 0x8e, 0x96, - 0x99, 0x4d, 0x8e, 0x98, 0x98, 0x4d, 0x8f, 0x96, 0x99, 0x4d, 0x8f, 0x98, - 0x98, 0x4d, 0x90, 0x96, 0x99, 0x4d, 0x90, 0x98, 0x98, 0x4d, 0x91, 0x96, - 0x99, 0x4d, 0x91, 0x98, 0x98, 0x4d, 0x92, 0x96, 0x99, 0x4d, 0x92, 0x98, - 0x98, 0x4d, 0x93, 0x96, 0x99, 0x4d, 0x93, 0x98, 0x98, 0x4d, 0x94, 0x96, - 0x99, 0x4d, 0x94, 0x98, 0x98, 0x4d, 0x94, 0x96, 0x99, 0x4d, 0x95, 0x98, - 0x98, 0x4d, 0x95, 0x96, 0x99, 0x4d, 0x96, 0x96, 0x99, 0x4d, 0x96, 0x96, - 0x99, 0x4d, 0x97, 0x96, 0x99, 0x4d, 0x97, 0x96, 0x99, 0x4d, 0x98, 0x96, - 0x99, 0x4d, 0x98, 0x96, 0x99, 0x4d, 0x98, 0x96, 0x99, 0x4d, 0x99, 0x96, - 0x99, 0x4c, 0x98, 0x96, 0x99, 0x4d, 0x99, 0x96, 0x9a, 0x4c, 0x98, 0x96, - 0x9a, 0x4d, 0x99, 0x96, 0x9a, 0x4c, 0x9d, 0x96, 0x9b, 0x4e, 0x9d, 0x96, - 0x9b, 0x4d, 0x9d, 0x96, 0x9c, 0x4e, 0x9d, 0x96, 0x9c, 0x4d, 0x9d, 0x96, - 0x9d, 0x4d, 0x9d, 0x96, 0x9c, 0x4d, 0x9d, 0x96, 0x9d, 0x4d, 0x9e, 0x96, - 0x9c, 0x4d, 0x9e, 0x96, 0x9d, 0x4d, 0x9f, 0x96, 0x9c, 0x4d, 0x9f, 0x96, - 0x9d, 0x4d, 0x9f, 0x96, 0x9c, 0x4d, 0xa0, 0x96, 0x9d, 0x4d, 0xa0, 0x93, - 0x9d, 0x4d, 0xa1, 0x96, 0x9d, 0x4d, 0xa1, 0x93, 0x9d, 0x4d, 0xa1, 0x96, - 0x9d, 0x4d, 0xa2, 0x93, 0x9d, 0x4d, 0xa2, 0x96, 0x9d, 0x4d, 0xa3, 0x93, - 0x9d, 0x4d, 0xa3, 0x96, 0x9d, 0x4d, 0xa3, 0x8e, 0xa4, 0x4d, 0xa4, 0x8e, - 0xa4, 0x4d, 0xa4, 0x8e, 0xa4, 0x4d, 0xa5, 0x8e, 0xa5, 0x4d, 0xa5, 0x8e, - 0xa5, 0x4d, 0xa5, 0x8e, 0xa5, 0x4d, 0xa6, 0x8f, 0xa8, 0x4d, 0xa6, 0x8f, - 0xa8, 0x4d, 0xa6, 0x8f, 0xa8, 0x4d, 0xa7, 0x8f, 0xa8, 0x4d, 0xa7, 0x8f, - 0xa8, 0x4d, 0xa8, 0x8f, 0xa8, 0x4d, 0xa8, 0x8f, 0xa8, 0x4d, 0xa8, 0x8f, - 0xa8, 0x4d, 0xa9, 0x8f, 0xa9, 0x4d, 0xa9, 0x8f, 0xa9, 0x4d, 0xaa, 0x8f, - 0xaa, 0x4d, 0xaa, 0x8f, 0xaa, 0x4d, 0xaa, 0x90, 0xac, 0x4d, 0xab, 0x90, - 0xad, 0x4d, 0xab, 0x90, 0xac, 0x4d, 0xab, 0x90, 0xad, 0x4d, 0xac, 0x90, - 0xac, 0x4d, 0xac, 0x90, 0xad, 0x4d, 0xac, 0x90, 0xac, 0x4d, 0xad, 0x90, - 0xad, 0x4d, 0xad, 0x90, 0xad, 0x4d, 0xae, 0x90, 0xae, 0x4d, 0xae, 0x90, - 0xae, 0x4d, 0xae, 0x91, 0xb0, 0x4d, 0xaf, 0x91, 0xb1, 0x4d, 0xaf, 0x91, - 0xb0, 0x4d, 0xaf, 0x91, 0xb1, 0x4d, 0xb0, 0x91, 0xb0, 0x4d, 0xb0, 0x91, - 0xb1, 0x4d, 0xb0, 0x91, 0xb0, 0x4d, 0xb1, 0x91, 0xb1, 0x4d, 0xb1, 0x91, - 0xb1, 0x4d, 0xb2, 0x91, 0xb2, 0x4d, 0xb2, 0x91, 0xb2, 0x4d, 0xb2, 0x91, - 0xb2, 0x4d, 0xb3, 0x91, 0xb3, 0x4d, 0xb3, 0x92, 0xb4, 0x4d, 0xb3, 0x92, - 0xb5, 0x4d, 0xb4, 0x92, 0xb4, 0x4d, 0xb4, 0x92, 0xb5, 0x4d, 0xb4, 0x92, - 0xb4, 0x4d, 0xb5, 0x92, 0xb5, 0x4d, 0xb5, 0x92, 0xb5, 0x4d, 0xb5, 0x92, - 0xb5, 0x4d, 0xb6, 0x92, 0xb6, 0x4d, 0xb6, 0x92, 0xb6, 0x4d, 0xb6, 0x92, - 0xb6, 0x4d, 0xb7, 0x93, 0xb8, 0x4d, 0xb7, 0x93, 0xb8, 0x4d, 0xb7, 0x93, - 0xb8, 0x4d, 0xb8, 0x93, 0xb8, 0x4d, 0xb8, 0x93, 0xb8, 0x4d, 0xb8, 0x93, - 0xb8, 0x4d, 0xb9, 0x93, 0xb9, 0x4d, 0xb9, 0x93, 0xb9, 0x4d, 0xb9, 0x93, - 0xb9, 0x4d, 0xba, 0x93, 0xba, 0x4d, 0xba, 0x93, 0xba, 0x4d, 0xba, 0x94, - 0xbc, 0x4d, 0xbb, 0x94, 0xbc, 0x4d, 0xbb, 0x94, 0xbc, 0x4d, 0xbb, 0x94, - 0xbc, 0x4d, 0xbc, 0x94, 0xbc, 0x4d, 0xbc, 0x94, 0xbc, 0x4d, 0xbc, 0x94, - 0xbc, 0x4d, 0xbd, 0x94, 0xbd, 0x4d, 0xbd, 0x94, 0xbd, 0x4d, 0xbd, 0x94, - 0xbd, 0x4d, 0xbe, 0x94, 0xbe, 0x4d, 0xbe, 0x94, 0xbe, 0x4d, 0xbe, 0x94, - 0xbe, 0x4d, 0xbf, 0x95, 0xbf, 0x4d, 0xbf, 0x95, 0xc0, 0x4d, 0xbf, 0x95, - 0xbf, 0x4d, 0xc0, 0x95, 0xc0, 0x4d, 0xc0, 0x95, 0xc0, 0x4d, 0xc0, 0x95, - 0xc0, 0x4d, 0xc1, 0x95, 0xc1, 0x4d, 0xc1, 0x95, 0xc1, 0x4d, 0xc1, 0x95, - 0xc1, 0x4d, 0xc1, 0x95, 0xc1, 0x4d, 0xc2, 0x95, 0xc2, 0x4d, 0xc2, 0x95, - 0xc2, 0x4d, 0xc2, 0x95, 0xc2, 0x4d, 0xc3, 0x96, 0xc3, 0x4e, 0xc3, 0x96, - 0xc3, 0x4e, 0xc3, 0x96, 0xc3, 0x4e, 0xc4, 0x96, 0xc4, 0x4e, 0xc4, 0x96, - 0xc4, 0x4e, 0xc4, 0x96, 0xc4, 0x4e, 0xc5, 0x96, 0xc5, 0x4e, 0xc5, 0x96, - 0xc5, 0x4e, 0xc5, 0x96, 0xc5, 0x4e, 0xc6, 0x96, 0xc6, 0x4e, 0xc6, 0x96, - 0xc6, 0x4e, 0xc6, 0x96, 0xc6, 0x4e, 0xc6, 0x96, 0xc6, 0x4e, 0xc6, 0x96, - 0xc7, 0x4e, 0xc7, 0x96, 0xc7, 0x4f, 0xc7, 0x96, 0xc7, 0x4f, 0xc8, 0x96, - 0xc8, 0x4f, 0xc8, 0x96, 0xc8, 0x4f, 0xc8, 0x96, 0xc8, 0x4f, 0xc9, 0x96, - 0xc9, 0x4f, 0xc9, 0x96, 0xc9, 0x4f, 0xc9, 0x96, 0xc9, 0x4f, 0xc9, 0x96, - 0xc9, 0x4f, 0xc9, 0x96, 0xca, 0x4f, 0xc9, 0x96, 0xca, 0x4f, 0xc9, 0x96, - 0xca, 0x4f, 0xc9, 0x96, 0xcb, 0x4f, 0xcb, 0x96, 0xcb, 0x50, 0xcb, 0x96, - 0xcb, 0x50, 0xcc, 0x96, 0xcc, 0x50, 0xcc, 0x96, 0xcc, 0x50, 0xcc, 0x96, - 0xcc, 0x50, 0xcc, 0x96, 0xcc, 0x50, 0xcd, 0x96, 0xcd, 0x50, 0xcc, 0x96, - 0xcd, 0x50, 0xcd, 0x96, 0xcd, 0x50, 0xcc, 0x96, 0xce, 0x50, 0xcd, 0x96, - 0xce, 0x50, 0xce, 0x96, 0xce, 0x51, 0xce, 0x96, 0xce, 0x51, 0xcf, 0x96, - 0xcf, 0x49, 0xcf, 0x96, 0xcf, 0x49, 0xcf, 0x96, 0xcf, 0x49, 0xd0, 0x96, - 0xd0, 0x49, 0xd0, 0x96, 0xd0, 0x49, 0xd1, 0x96, 0xd0, 0x4a, 0xd2, 0x96, - 0xd0, 0x4a, 0xd1, 0x96, 0xd1, 0x4a, 0xd2, 0x96, 0xd1, 0x4a, 0xd1, 0x96, - 0xd1, 0x4a, 0xd2, 0x96, 0xd2, 0x4a, 0xd2, 0x96, 0xd2, 0x4a, 0xd2, 0x96, - 0xd2, 0x4a, 0xd2, 0x96, 0xd2, 0x4a, 0xd4, 0x96, 0xd3, 0x4b, 0xd4, 0x96, - 0xd3, 0x4b, 0xd4, 0x96, 0xd3, 0x4b, 0xd4, 0x96, 0xd4, 0x4b, 0xd4, 0x96, - 0xd4, 0x4b, 0xd4, 0x96, 0xd4, 0x4b, 0xd4, 0x96, 0xd4, 0x4b, 0xd5, 0x96, - 0xd5, 0x4b, 0xd5, 0x96, 0xd5, 0x4b, 0xd5, 0x96, 0xd5, 0x4b, 0xd6, 0x96, - 0xd6, 0x4b, 0xd6, 0x96, 0xd6, 0x4b, 0xd7, 0x96, 0xd6, 0x4c, 0xd7, 0x96, - 0xd6, 0x4c, 0xd7, 0x96, 0xd7, 0x4c, 0xd7, 0x96, 0xd7, 0x4c, 0xd7, 0x96, - 0xd7, 0x4c, 0xd7, 0x96, 0xd7, 0x4c, 0xd8, 0x96, 0xd8, 0x4c, 0xd8, 0x96, - 0xd8, 0x4c, 0xd8, 0x96, 0xd8, 0x4c, 0xd9, 0x96, 0xd9, 0x4c, 0xd9, 0x96, - 0xd9, 0x4c, 0xd9, 0x97, 0xd9, 0x4d, 0xd9, 0x97, 0xd9, 0x4d, 0xda, 0x97, - 0xda, 0x4d, 0xda, 0x97, 0xda, 0x4d, 0xda, 0x97, 0xda, 0x4d, 0xda, 0x97, - 0xda, 0x4d, 0xdb, 0x97, 0xdb, 0x4d, 0xdb, 0x97, 0xdb, 0x4d, 0xdb, 0x97, - 0xdb, 0x4d, 0xdb, 0x97, 0xdb, 0x4d, 0xdc, 0x97, 0xdb, 0x4d, 0xdc, 0x98, - 0xdc, 0x4d, 0xdc, 0x98, 0xdc, 0x4d, 0xdd, 0x98, 0xdd, 0x4d, 0xdd, 0x98, - 0xdd, 0x4d, 0xdd, 0x98, 0xdd, 0x4d, 0xdd, 0x98, 0xdd, 0x4d, 0xde, 0x98, - 0xde, 0x4d, 0xde, 0x98, 0xde, 0x4d, 0xde, 0x98, 0xde, 0x4d, 0xde, 0x98, - 0xde, 0x4d, 0xdf, 0x98, 0xde, 0x4d, 0xdf, 0x98, 0xde, 0x4d, 0xdf, 0x98, - 0xdf, 0x4d, 0xdf, 0x98, 0xdf, 0x4d, 0xe0, 0x98, 0xe0, 0x4d, 0xe0, 0x98, - 0xe0, 0x4d, 0xe0, 0x98, 0xe0, 0x4d, 0xe1, 0x98, 0xe0, 0x4d, 0xe1, 0x98, - 0xe0, 0x4d, 0xe1, 0x98, 0xe0, 0x4d, 0xe1, 0x98, 0xe0, 0x4d, 0xe2, 0x99, - 0xe2, 0x4d, 0xe2, 0x99, 0xe2, 0x4d, 0xe2, 0x99, 0xe2, 0x4d, 0xe2, 0x99, - 0xe2, 0x4d, 0xe3, 0x99, 0xe3, 0x4d, 0xe3, 0x99, 0xe2, 0x4d, 0xe3, 0x99, - 0xe3, 0x4d, 0xe3, 0x99, 0xe2, 0x4d, 0xe4, 0x99, 0xe3, 0x4d, 0xe4, 0x9a, - 0xe4, 0x4d, 0xe4, 0x9a, 0xe4, 0x4d, 0xe4, 0x9a, 0xe4, 0x4d, 0xe5, 0x9a, - 0xe5, 0x4d, 0xe5, 0x9a, 0xe5, 0x4d, 0xe5, 0x9a, 0xe5, 0x4d, 0xe5, 0x9a, - 0xe5, 0x4d, 0xe6, 0x9a, 0xe5, 0x4d, 0xe6, 0x9a, 0xe5, 0x4d, 0xe6, 0x9a, - 0xe5, 0x4d, 0xe6, 0x9a, 0xe5, 0x4d, 0xe7, 0x9a, 0xe5, 0x4d, 0xe7, 0x9b, - 0xe7, 0x4d, 0xe7, 0x9b, 0xe7, 0x4d, 0xe7, 0x9b, 0xe7, 0x4d, 0xe8, 0x9b, - 0xe7, 0x4d, 0xe8, 0x9b, 0xe7, 0x4d, 0xe8, 0x9b, 0xe7, 0x4d, 0xe8, 0x9b, - 0xe7, 0x4d, 0xe9, 0x9b, 0xe7, 0x4d, 0xe9, 0x9b, 0xe7, 0x4d, 0xe9, 0x9c, - 0xe9, 0x4d, 0xe9, 0x9c, 0xe9, 0x4d, 0xea, 0x9c, 0xea, 0x4d, 0xea, 0x9c, - 0xea, 0x4d, 0xea, 0x9c, 0xea, 0x4d, 0xea, 0x9c, 0xea, 0x4d, 0xeb, 0x9c, - 0xea, 0x4d, 0xeb, 0x9c, 0xea, 0x4d, 0xeb, 0x9c, 0xea, 0x4d, 0xeb, 0x9c, - 0xea, 0x4d, 0xec, 0x9d, 0xec, 0x4d, 0xec, 0x9d, 0xec, 0x4d, 0xec, 0x9d, - 0xec, 0x4d, 0xec, 0x9d, 0xec, 0x4d, 0xec, 0x9d, 0xec, 0x4d, 0xed, 0x9d, - 0xec, 0x4d, 0xed, 0x9d, 0xec, 0x4d, 0xed, 0x9d, 0xec, 0x4d, 0xed, 0x9d, - 0xec, 0x4d, 0xee, 0x9d, 0xec, 0x4d, 0xee, 0x9d, 0xec, 0x4d, 0xee, 0x9d, - 0xee, 0x4d, 0xee, 0x9d, 0xee, 0x4d, 0xef, 0x9d, 0xee, 0x4d, 0xef, 0x9d, - 0xee, 0x4d, 0xef, 0x9d, 0xee, 0x4d, 0xef, 0x9d, 0xee, 0x4d, 0xf0, 0x9d, - 0xee, 0x4d, 0xf0, 0x9d, 0xee, 0x4d, 0xf0, 0x9d, 0xee, 0x4d, 0xf0, 0x9e, - 0xf0, 0x4d, 0xf1, 0x9e, 0xf1, 0x4d, 0xf1, 0x9e, 0xf0, 0x4d, 0xf1, 0x9e, - 0xf1, 0x4d, 0xf1, 0x9e, 0xf0, 0x4d, 0xf2, 0x9e, 0xf1, 0x4d, 0xf2, 0x9e, - 0xf0, 0x4d, 0xf2, 0x9e, 0xf1, 0x4d, 0xf2, 0x9e, 0xf0, 0x4d, 0xf2, 0x9e, - 0xf1, 0x4d, 0xf3, 0x9f, 0xf3, 0x4d, 0xf3, 0x9f, 0xf2, 0x4d, 0xf3, 0x9f, - 0xf3, 0x4d, 0xf3, 0x9f, 0xf2, 0x4d, 0xf4, 0x9f, 0xf3, 0x4d, 0xf4, 0x9f, - 0xf2, 0x4d, 0xf4, 0x9f, 0xf3, 0x4d, 0xf4, 0x9f, 0xf2, 0x4d, 0xf5, 0x9f, - 0xf3, 0x4d, 0xf5, 0xa0, 0xf5, 0x4d, 0xf5, 0xa0, 0xf5, 0x4d, 0xf5, 0xa0, - 0xf5, 0x4d, 0xf5, 0xa0, 0xf5, 0x4d, 0xf6, 0xa0, 0xf5, 0x4d, 0xf6, 0xa0, - 0xf5, 0x4d, 0xf6, 0xa0, 0xf5, 0x4d, 0xf6, 0xa0, 0xf5, 0x4d, 0xf7, 0xa0, - 0xf5, 0x4d, 0xf7, 0xa1, 0xf7, 0x4d, 0xf7, 0xa1, 0xf7, 0x4d, 0xf7, 0xa1, - 0xf7, 0x4d, 0xf8, 0xa1, 0xf7, 0x4d, 0xf8, 0xa1, 0xf7, 0x4d, 0xf8, 0xa1, - 0xf7, 0x4d, 0xf8, 0xa1, 0xf7, 0x4d, 0xf8, 0xa1, 0xf7, 0x4d, 0xf9, 0xa1, - 0xf7, 0x4d, 0xf9, 0xa1, 0xf7, 0x4d, 0xf9, 0xa1, 0xf7, 0x4d, 0xf9, 0xa1, - 0xf7, 0x4d, 0xfa, 0xa1, 0xf9, 0x4d, 0xfa, 0xa1, 0xf9, 0x4d, 0xfa, 0xa1, - 0xf9, 0x4d, 0xfa, 0xa1, 0xf9, 0x4d, 0xfa, 0xa1, 0xf9, 0x4d, 0xfb, 0xa1, - 0xf9, 0x4d, 0xfb, 0xa1, 0xf9, 0x4d, 0xfb, 0xa1, 0xf9, 0x4d, 0xfb, 0xa1, - 0xf9, 0x4d, 0xfc, 0xa2, 0xfb, 0x4d, 0xfc, 0xa2, 0xfb, 0x4d, 0xfc, 0xa2, - 0xfb, 0x4d, 0xfc, 0xa2, 0xfb, 0x4d, 0xfc, 0xa2, 0xfb, 0x4d, 0xfd, 0xa2, - 0xfb, 0x4d, 0xfd, 0xa2, 0xfb, 0x4d, 0xfd, 0xa2, 0xfb, 0x4d, 0xfd, 0xa2, - 0xfb, 0x4d, 0xfe, 0xa2, 0xfb, 0x4d, 0xfe, 0xa2, 0xfb, 0x4d, 0xfe, 0xa2, - 0xfb, 0x4d, 0xfe, 0xa2, 0xfb, 0x4d, 0xfe, 0xa2, 0xfb, 0x4d, 0xff, 0xa2, - 0xfb, 0x4d, 0xff, 0xa2, 0xfb, 0x4d, 0x03, 0xa0, 0x97, 0x4e, 0x0a, 0x9e, - 0x98, 0x4e, 0x0f, 0xa0, 0x97, 0x4e, 0x14, 0x9e, 0x98, 0x4e, 0x17, 0xa0, - 0x97, 0x4e, 0x1b, 0x9e, 0x98, 0x4e, 0x1e, 0xa0, 0x97, 0x4e, 0x20, 0x9e, - 0x98, 0x4e, 0x23, 0xa0, 0x97, 0x4e, 0x25, 0x9e, 0x98, 0x4e, 0x27, 0xa0, - 0x97, 0x4e, 0x29, 0x9e, 0x98, 0x4e, 0x2b, 0xa0, 0x97, 0x4e, 0x2d, 0x9e, - 0x98, 0x4e, 0x2f, 0xa0, 0x97, 0x4e, 0x31, 0x9e, 0x98, 0x4e, 0x32, 0xa0, - 0x97, 0x4e, 0x34, 0x9e, 0x98, 0x4e, 0x35, 0xa0, 0x97, 0x4e, 0x37, 0x9e, - 0x98, 0x4e, 0x38, 0xa0, 0x97, 0x4e, 0x3a, 0x9e, 0x98, 0x4e, 0x3b, 0xa0, - 0x97, 0x4e, 0x3c, 0x9e, 0x98, 0x4e, 0x3e, 0xa0, 0x97, 0x4e, 0x3f, 0x9e, - 0x98, 0x4e, 0x40, 0xa0, 0x97, 0x4e, 0x42, 0x9e, 0x98, 0x4e, 0x43, 0xa0, - 0x97, 0x4e, 0x44, 0x9e, 0x98, 0x4e, 0x45, 0xa0, 0x97, 0x4e, 0x46, 0x9e, - 0x98, 0x4e, 0x47, 0xa0, 0x97, 0x4e, 0x48, 0x9e, 0x98, 0x4e, 0x49, 0xa0, - 0x97, 0x4e, 0x4a, 0x9e, 0x98, 0x4e, 0x4b, 0xa0, 0x97, 0x4e, 0x4c, 0x9e, - 0x98, 0x4e, 0x4d, 0xa0, 0x97, 0x4e, 0x4e, 0x9e, 0x98, 0x4e, 0x4f, 0xa0, - 0x97, 0x4e, 0x50, 0x9e, 0x98, 0x4e, 0x51, 0xa0, 0x97, 0x4e, 0x52, 0x9e, - 0x98, 0x4e, 0x53, 0xa0, 0x97, 0x4e, 0x54, 0x9e, 0x98, 0x4e, 0x55, 0xa0, - 0x97, 0x4e, 0x56, 0x9e, 0x98, 0x4e, 0x57, 0xa0, 0x97, 0x4e, 0x58, 0x9e, - 0x98, 0x4e, 0x58, 0xa0, 0x97, 0x4e, 0x59, 0x9e, 0x98, 0x4e, 0x5a, 0x9b, - 0x98, 0x4e, 0x5b, 0x9e, 0x98, 0x4e, 0x5c, 0x9b, 0x98, 0x4e, 0x5d, 0x9e, - 0x98, 0x4e, 0x5d, 0x9b, 0x98, 0x4e, 0x5e, 0x9e, 0x98, 0x4e, 0x5f, 0x9b, - 0x98, 0x4e, 0x60, 0x9e, 0x98, 0x4e, 0x60, 0x9b, 0x98, 0x4e, 0x61, 0x9e, - 0x98, 0x4e, 0x62, 0x9b, 0x98, 0x4e, 0x63, 0x9e, 0x98, 0x4e, 0x63, 0x9b, - 0x98, 0x4e, 0x64, 0x9e, 0x98, 0x4e, 0x65, 0x9b, 0x98, 0x4e, 0x66, 0x9e, - 0x98, 0x4e, 0x66, 0x9b, 0x98, 0x4e, 0x67, 0x9e, 0x98, 0x4e, 0x68, 0x9b, - 0x98, 0x4e, 0x68, 0x9e, 0x98, 0x4e, 0x69, 0x9b, 0x98, 0x4e, 0x6a, 0x9e, - 0x98, 0x4e, 0x6a, 0x9b, 0x98, 0x4e, 0x6b, 0x9e, 0x98, 0x4e, 0x6c, 0x9b, - 0x98, 0x4e, 0x6c, 0x9e, 0x98, 0x4e, 0x6d, 0x9b, 0x98, 0x4e, 0x6e, 0x9e, - 0x98, 0x4e, 0x6e, 0x9b, 0x98, 0x4e, 0x6f, 0x9e, 0x98, 0x4e, 0x70, 0x9b, - 0x98, 0x4e, 0x70, 0x9e, 0x98, 0x4e, 0x71, 0x9b, 0x98, 0x4e, 0x72, 0x98, - 0x98, 0x4e, 0x72, 0x9b, 0x98, 0x4e, 0x73, 0x98, 0x98, 0x4e, 0x73, 0x9b, - 0x98, 0x4e, 0x74, 0x98, 0x98, 0x4e, 0x75, 0x9b, 0x98, 0x4e, 0x75, 0x98, - 0x98, 0x4e, 0x76, 0x9b, 0x98, 0x4e, 0x76, 0x98, 0x98, 0x4e, 0x77, 0x9b, - 0x98, 0x4e, 0x78, 0x98, 0x98, 0x4e, 0x78, 0x9b, 0x98, 0x4e, 0x79, 0x98, - 0x98, 0x4e, 0x79, 0x9b, 0x98, 0x4e, 0x7a, 0x98, 0x98, 0x4e, 0x7a, 0x9b, - 0x98, 0x4e, 0x7b, 0x98, 0x98, 0x4e, 0x7c, 0x9b, 0x98, 0x4e, 0x7c, 0x98, - 0x98, 0x4e, 0x7d, 0x9b, 0x98, 0x4e, 0x7d, 0x98, 0x98, 0x4e, 0x7e, 0x9b, - 0x98, 0x4e, 0x7e, 0x98, 0x98, 0x4e, 0x7f, 0x9b, 0x98, 0x4e, 0x7f, 0x98, - 0x98, 0x4e, 0x80, 0x9b, 0x98, 0x4e, 0x81, 0x98, 0x98, 0x4e, 0x81, 0x9b, - 0x98, 0x4e, 0x82, 0x98, 0x98, 0x4e, 0x82, 0x9b, 0x98, 0x4e, 0x83, 0x98, - 0x98, 0x4e, 0x83, 0x9b, 0x98, 0x4e, 0x84, 0x98, 0x98, 0x4e, 0x84, 0x9b, - 0x98, 0x4e, 0x85, 0x98, 0x98, 0x4e, 0x85, 0x9b, 0x98, 0x4e, 0x86, 0x98, - 0x98, 0x4e, 0x86, 0x9b, 0x98, 0x4e, 0x87, 0x98, 0x98, 0x4e, 0x87, 0x9b, - 0x98, 0x4e, 0x88, 0x98, 0x98, 0x4e, 0x88, 0x96, 0x99, 0x4e, 0x89, 0x98, - 0x98, 0x4e, 0x89, 0x96, 0x99, 0x4e, 0x8a, 0x98, 0x98, 0x4e, 0x8a, 0x96, - 0x99, 0x4e, 0x8b, 0x98, 0x98, 0x4e, 0x8b, 0x96, 0x99, 0x4e, 0x8c, 0x98, - 0x98, 0x4e, 0x8c, 0x96, 0x99, 0x4e, 0x8d, 0x98, 0x98, 0x4e, 0x8d, 0x96, - 0x99, 0x4e, 0x8e, 0x98, 0x98, 0x4e, 0x8e, 0x96, 0x99, 0x4e, 0x8e, 0x98, - 0x98, 0x4e, 0x8f, 0x96, 0x99, 0x4e, 0x8f, 0x98, 0x98, 0x4e, 0x90, 0x96, - 0x99, 0x4e, 0x90, 0x98, 0x98, 0x4e, 0x91, 0x96, 0x99, 0x4e, 0x91, 0x98, - 0x98, 0x4e, 0x92, 0x96, 0x99, 0x4e, 0x92, 0x98, 0x98, 0x4e, 0x93, 0x96, - 0x99, 0x4e, 0x93, 0x98, 0x98, 0x4e, 0x94, 0x96, 0x99, 0x4e, 0x94, 0x98, - 0x98, 0x4e, 0x94, 0x96, 0x99, 0x4e, 0x95, 0x98, 0x98, 0x4e, 0x95, 0x96, - 0x99, 0x4e, 0x96, 0x98, 0x98, 0x4e, 0x96, 0x96, 0x99, 0x4e, 0x97, 0x98, - 0x98, 0x4e, 0x97, 0x96, 0x99, 0x4e, 0x98, 0x96, 0x99, 0x4e, 0x98, 0x96, - 0x99, 0x4e, 0x98, 0x96, 0x99, 0x4e, 0x98, 0x96, 0x99, 0x4e, 0x98, 0x96, - 0x99, 0x4e, 0x98, 0x96, 0x9a, 0x4e, 0x98, 0x96, 0x9a, 0x4e, 0x99, 0x96, - 0x9a, 0x4c, 0x9d, 0x96, 0x9b, 0x4e, 0x9d, 0x96, 0x9b, 0x4e, 0x9d, 0x96, - 0x9c, 0x4e, 0x9d, 0x96, 0x9c, 0x4e, 0x9d, 0x95, 0x9d, 0x4e, 0x9d, 0x96, - 0x9c, 0x4e, 0x9d, 0x95, 0x9d, 0x4e, 0x9e, 0x96, 0x9c, 0x4e, 0x9e, 0x95, - 0x9d, 0x4e, 0x9f, 0x96, 0x9c, 0x4e, 0x9f, 0x95, 0x9d, 0x4e, 0x9f, 0x96, - 0x9c, 0x4e, 0xa0, 0x95, 0x9d, 0x4e, 0xa0, 0x96, 0x9c, 0x4e, 0xa1, 0x95, - 0x9d, 0x4e, 0xa1, 0x96, 0x9c, 0x4e, 0xa1, 0x95, 0x9d, 0x4e, 0xa2, 0x96, - 0x9c, 0x4e, 0xa2, 0x95, 0x9d, 0x4e, 0xa3, 0x96, 0x9c, 0x4e, 0xa3, 0x95, - 0x9d, 0x4e, 0xa3, 0x8f, 0xa6, 0x4e, 0xa4, 0x8f, 0xa6, 0x4e, 0xa4, 0x8f, - 0xa6, 0x4e, 0xa5, 0x8f, 0xa6, 0x4e, 0xa5, 0x8f, 0xa6, 0x4e, 0xa5, 0x8f, - 0xa6, 0x4e, 0xa6, 0x8f, 0xa6, 0x4e, 0xa6, 0x8f, 0xa6, 0x4e, 0xa6, 0x8f, - 0xa6, 0x4e, 0xa7, 0x8f, 0xa7, 0x4e, 0xa7, 0x8f, 0xa7, 0x4e, 0xa8, 0x8f, - 0xa8, 0x4e, 0xa8, 0x90, 0xaa, 0x4e, 0xa8, 0x90, 0xab, 0x4e, 0xa9, 0x90, - 0xaa, 0x4e, 0xa9, 0x90, 0xab, 0x4e, 0xaa, 0x90, 0xaa, 0x4e, 0xaa, 0x90, - 0xab, 0x4e, 0xaa, 0x90, 0xaa, 0x4e, 0xab, 0x90, 0xab, 0x4e, 0xab, 0x90, - 0xab, 0x4e, 0xab, 0x90, 0xab, 0x4e, 0xac, 0x90, 0xac, 0x4e, 0xac, 0x91, - 0xae, 0x4e, 0xac, 0x91, 0xaf, 0x4e, 0xad, 0x91, 0xae, 0x4e, 0xad, 0x91, - 0xaf, 0x4e, 0xae, 0x91, 0xae, 0x4e, 0xae, 0x91, 0xaf, 0x4e, 0xae, 0x91, - 0xae, 0x4e, 0xaf, 0x91, 0xaf, 0x4e, 0xaf, 0x91, 0xaf, 0x4e, 0xaf, 0x91, - 0xaf, 0x4e, 0xb0, 0x91, 0xb0, 0x4e, 0xb0, 0x92, 0xb2, 0x4e, 0xb0, 0x92, - 0xb3, 0x4e, 0xb1, 0x92, 0xb2, 0x4e, 0xb1, 0x92, 0xb3, 0x4e, 0xb2, 0x92, - 0xb2, 0x4e, 0xb2, 0x92, 0xb3, 0x4e, 0xb2, 0x92, 0xb2, 0x4e, 0xb3, 0x92, - 0xb3, 0x4e, 0xb3, 0x92, 0xb3, 0x4e, 0xb3, 0x92, 0xb3, 0x4e, 0xb4, 0x92, - 0xb4, 0x4e, 0xb4, 0x92, 0xb4, 0x4e, 0xb4, 0x92, 0xb4, 0x4e, 0xb5, 0x93, - 0xb6, 0x4e, 0xb5, 0x93, 0xb6, 0x4e, 0xb5, 0x93, 0xb6, 0x4e, 0xb6, 0x93, - 0xb6, 0x4e, 0xb6, 0x93, 0xb6, 0x4e, 0xb6, 0x93, 0xb6, 0x4e, 0xb7, 0x93, - 0xb7, 0x4e, 0xb7, 0x93, 0xb7, 0x4e, 0xb7, 0x93, 0xb7, 0x4e, 0xb8, 0x93, - 0xb8, 0x4e, 0xb8, 0x93, 0xb8, 0x4e, 0xb8, 0x93, 0xb8, 0x4e, 0xb9, 0x94, - 0xba, 0x4e, 0xb9, 0x94, 0xba, 0x4e, 0xb9, 0x94, 0xba, 0x4e, 0xba, 0x94, - 0xba, 0x4e, 0xba, 0x94, 0xba, 0x4e, 0xba, 0x94, 0xba, 0x4e, 0xbb, 0x94, - 0xbb, 0x4e, 0xbb, 0x94, 0xbb, 0x4e, 0xbb, 0x94, 0xbb, 0x4e, 0xbc, 0x94, - 0xbc, 0x4e, 0xbc, 0x94, 0xbc, 0x4e, 0xbc, 0x94, 0xbe, 0x4e, 0xbd, 0x94, - 0xbe, 0x4e, 0xbd, 0x94, 0xbe, 0x4e, 0xbd, 0x94, 0xbe, 0x4e, 0xbe, 0x94, - 0xbe, 0x4e, 0xbe, 0x94, 0xbe, 0x4e, 0xbe, 0x94, 0xbe, 0x4e, 0xbf, 0x94, - 0xbf, 0x4e, 0xbf, 0x94, 0xbf, 0x4e, 0xbf, 0x94, 0xbf, 0x4e, 0xc0, 0x94, - 0xc0, 0x4e, 0xc0, 0x94, 0xc0, 0x4e, 0xc0, 0x94, 0xc0, 0x4e, 0xc1, 0x95, - 0xc1, 0x4e, 0xc1, 0x95, 0xc1, 0x4e, 0xc1, 0x95, 0xc1, 0x4e, 0xc1, 0x95, - 0xc1, 0x4e, 0xc2, 0x95, 0xc2, 0x4e, 0xc2, 0x95, 0xc2, 0x4e, 0xc2, 0x95, - 0xc2, 0x4e, 0xc3, 0x95, 0xc3, 0x4e, 0xc3, 0x95, 0xc3, 0x4e, 0xc3, 0x95, - 0xc3, 0x4e, 0xc4, 0x95, 0xc4, 0x4e, 0xc4, 0x95, 0xc4, 0x4e, 0xc4, 0x95, - 0xc4, 0x4e, 0xc5, 0x96, 0xc5, 0x4f, 0xc5, 0x96, 0xc5, 0x4f, 0xc5, 0x96, - 0xc5, 0x4f, 0xc6, 0x96, 0xc6, 0x4f, 0xc6, 0x96, 0xc6, 0x4f, 0xc6, 0x96, - 0xc6, 0x4f, 0xc6, 0x96, 0xc6, 0x4f, 0xc7, 0x96, 0xc7, 0x4f, 0xc7, 0x96, - 0xc7, 0x4f, 0xc7, 0x96, 0xc7, 0x4f, 0xc8, 0x96, 0xc8, 0x4f, 0xc7, 0x96, - 0xc8, 0x4f, 0xc8, 0x96, 0xc8, 0x4f, 0xc9, 0x96, 0xc9, 0x50, 0xc9, 0x96, - 0xc9, 0x50, 0xc9, 0x96, 0xc9, 0x50, 0xc9, 0x96, 0xc9, 0x50, 0xca, 0x96, - 0xca, 0x50, 0xca, 0x96, 0xca, 0x50, 0xca, 0x96, 0xca, 0x50, 0xcb, 0x96, - 0xcb, 0x50, 0xcb, 0x96, 0xcb, 0x50, 0xcb, 0x96, 0xcb, 0x50, 0xcb, 0x96, - 0xcc, 0x50, 0xcb, 0x96, 0xcc, 0x50, 0xcb, 0x96, 0xcc, 0x50, 0xcc, 0x96, - 0xcc, 0x51, 0xcd, 0x96, 0xcd, 0x51, 0xcd, 0x96, 0xcd, 0x51, 0xcd, 0x96, - 0xcd, 0x51, 0xce, 0x96, 0xce, 0x51, 0xce, 0x96, 0xce, 0x51, 0xce, 0x96, - 0xce, 0x51, 0xce, 0x96, 0xce, 0x51, 0xce, 0x96, 0xcf, 0x51, 0xce, 0x96, - 0xcf, 0x51, 0xce, 0x96, 0xcf, 0x51, 0xd0, 0x96, 0xd0, 0x52, 0xd0, 0x96, - 0xd0, 0x4a, 0xd0, 0x96, 0xd0, 0x4a, 0xd0, 0x96, 0xd0, 0x4a, 0xd1, 0x96, - 0xd1, 0x4a, 0xd1, 0x96, 0xd1, 0x4a, 0xd1, 0x96, 0xd1, 0x4a, 0xd3, 0x96, - 0xd2, 0x4b, 0xd3, 0x96, 0xd2, 0x4b, 0xd3, 0x96, 0xd2, 0x4b, 0xd3, 0x96, - 0xd2, 0x4b, 0xd3, 0x96, 0xd3, 0x4b, 0xd3, 0x96, 0xd3, 0x4b, 0xd3, 0x96, - 0xd3, 0x4b, 0xd4, 0x96, 0xd4, 0x4b, 0xd4, 0x96, 0xd4, 0x4b, 0xd5, 0x96, - 0xd4, 0x4c, 0xd6, 0x96, 0xd4, 0x4c, 0xd5, 0x96, 0xd5, 0x4c, 0xd6, 0x96, - 0xd5, 0x4c, 0xd5, 0x96, 0xd5, 0x4c, 0xd6, 0x96, 0xd6, 0x4c, 0xd6, 0x96, - 0xd6, 0x4c, 0xd6, 0x96, 0xd6, 0x4c, 0xd6, 0x96, 0xd6, 0x4c, 0xd7, 0x96, - 0xd7, 0x4c, 0xd7, 0x96, 0xd7, 0x4c, 0xd8, 0x96, 0xd7, 0x4d, 0xd8, 0x96, - 0xd7, 0x4d, 0xd8, 0x96, 0xd8, 0x4d, 0xd8, 0x96, 0xd8, 0x4d, 0xd8, 0x96, - 0xd8, 0x4d, 0xd9, 0x96, 0xd9, 0x4d, 0xd9, 0x96, 0xd9, 0x4d, 0xd9, 0x96, - 0xd9, 0x4d, 0xd9, 0x96, 0xd9, 0x4d, 0xda, 0x96, 0xda, 0x4d, 0xda, 0x96, - 0xda, 0x4d, 0xda, 0x96, 0xda, 0x4d, 0xda, 0x97, 0xda, 0x4e, 0xdb, 0x97, - 0xdb, 0x4e, 0xdb, 0x97, 0xdb, 0x4e, 0xdb, 0x97, 0xdb, 0x4e, 0xdb, 0x97, - 0xdb, 0x4e, 0xdc, 0x97, 0xdc, 0x4e, 0xdc, 0x97, 0xdc, 0x4e, 0xdc, 0x97, - 0xdc, 0x4e, 0xdd, 0x97, 0xdd, 0x4e, 0xdd, 0x97, 0xdc, 0x4e, 0xdd, 0x97, - 0xdd, 0x4e, 0xdd, 0x98, 0xdd, 0x4e, 0xde, 0x98, 0xde, 0x4e, 0xde, 0x98, - 0xde, 0x4e, 0xde, 0x98, 0xde, 0x4e, 0xde, 0x98, 0xde, 0x4e, 0xdf, 0x98, - 0xdf, 0x4e, 0xdf, 0x98, 0xdf, 0x4e, 0xdf, 0x98, 0xdf, 0x4e, 0xdf, 0x98, - 0xdf, 0x4e, 0xe0, 0x98, 0xdf, 0x4e, 0xe0, 0x98, 0xdf, 0x4e, 0xe0, 0x99, - 0xe0, 0x4e, 0xe1, 0x99, 0xe1, 0x4e, 0xe1, 0x99, 0xe1, 0x4e, 0xe1, 0x99, - 0xe1, 0x4e, 0xe1, 0x99, 0xe1, 0x4e, 0xe2, 0x99, 0xe2, 0x4e, 0xe2, 0x99, - 0xe1, 0x4e, 0xe2, 0x99, 0xe2, 0x4e, 0xe2, 0x99, 0xe1, 0x4e, 0xe3, 0x99, - 0xe2, 0x4e, 0xe3, 0x9a, 0xe3, 0x4e, 0xe3, 0x9a, 0xe3, 0x4e, 0xe3, 0x9a, - 0xe3, 0x4e, 0xe4, 0x9a, 0xe4, 0x4e, 0xe4, 0x9a, 0xe4, 0x4e, 0xe4, 0x9a, - 0xe4, 0x4e, 0xe4, 0x9a, 0xe4, 0x4e, 0xe5, 0x9a, 0xe4, 0x4e, 0xe5, 0x9a, - 0xe4, 0x4e, 0xe5, 0x9a, 0xe5, 0x4e, 0xe5, 0x9a, 0xe5, 0x4e, 0xe6, 0x9a, - 0xe6, 0x4e, 0xe6, 0x9a, 0xe6, 0x4e, 0xe6, 0x9a, 0xe6, 0x4e, 0xe6, 0x9a, - 0xe6, 0x4e, 0xe7, 0x9a, 0xe6, 0x4e, 0xe7, 0x9a, 0xe6, 0x4e, 0xe7, 0x9a, - 0xe6, 0x4e, 0xe7, 0x9a, 0xe6, 0x4e, 0xe8, 0x9a, 0xe6, 0x4e, 0xe8, 0x9b, - 0xe8, 0x4e, 0xe8, 0x9b, 0xe8, 0x4e, 0xe8, 0x9b, 0xe8, 0x4e, 0xe9, 0x9b, - 0xe9, 0x4e, 0xe9, 0x9b, 0xe8, 0x4e, 0xe9, 0x9b, 0xe9, 0x4e, 0xe9, 0x9b, - 0xe8, 0x4e, 0xea, 0x9b, 0xe9, 0x4e, 0xea, 0x9b, 0xe8, 0x4e, 0xea, 0x9b, - 0xe9, 0x4e, 0xea, 0x9c, 0xea, 0x4e, 0xeb, 0x9c, 0xeb, 0x4e, 0xeb, 0x9c, - 0xeb, 0x4e, 0xeb, 0x9c, 0xeb, 0x4e, 0xeb, 0x9c, 0xeb, 0x4e, 0xec, 0x9c, - 0xeb, 0x4e, 0xec, 0x9c, 0xeb, 0x4e, 0xec, 0x9c, 0xeb, 0x4e, 0xec, 0x9c, - 0xeb, 0x4e, 0xec, 0x9d, 0xec, 0x4e, 0xed, 0x9d, 0xed, 0x4e, 0xed, 0x9d, - 0xed, 0x4e, 0xed, 0x9d, 0xed, 0x4e, 0xed, 0x9d, 0xed, 0x4e, 0xee, 0x9d, - 0xed, 0x4e, 0xee, 0x9d, 0xed, 0x4e, 0xee, 0x9d, 0xed, 0x4e, 0xee, 0x9d, - 0xed, 0x4e, 0xef, 0x9d, 0xed, 0x4e, 0xef, 0x9d, 0xed, 0x4e, 0xef, 0x9d, - 0xed, 0x4e, 0xef, 0x9e, 0xef, 0x4e, 0xf0, 0x9e, 0xef, 0x4e, 0xf0, 0x9e, - 0xef, 0x4e, 0xf0, 0x9e, 0xef, 0x4e, 0xf0, 0x9e, 0xef, 0x4e, 0xf1, 0x9e, - 0xef, 0x4e, 0xf1, 0x9e, 0xef, 0x4e, 0xf1, 0x9e, 0xef, 0x4e, 0xf1, 0x9e, - 0xef, 0x4e, 0xf2, 0x9f, 0xf2, 0x4e, 0xf2, 0x9f, 0xf1, 0x4e, 0xf2, 0x9f, - 0xf2, 0x4e, 0xf2, 0x9f, 0xf1, 0x4e, 0xf2, 0x9f, 0xf2, 0x4e, 0xf3, 0x9f, - 0xf1, 0x4e, 0xf3, 0x9f, 0xf2, 0x4e, 0xf3, 0x9f, 0xf1, 0x4e, 0xf3, 0x9f, - 0xf2, 0x4e, 0xf4, 0x9f, 0xf4, 0x4e, 0xf4, 0x9f, 0xf4, 0x4e, 0xf4, 0x9f, - 0xf4, 0x4e, 0xf4, 0x9f, 0xf4, 0x4e, 0xf5, 0x9f, 0xf4, 0x4e, 0xf5, 0x9f, - 0xf4, 0x4e, 0xf5, 0x9f, 0xf4, 0x4e, 0xf5, 0x9f, 0xf4, 0x4e, 0xf5, 0x9f, - 0xf4, 0x4e, 0xf6, 0x9f, 0xf4, 0x4e, 0xf6, 0xa0, 0xf6, 0x4e, 0xf6, 0xa0, - 0xf6, 0x4e, 0xf6, 0xa0, 0xf6, 0x4e, 0xf7, 0xa0, 0xf6, 0x4e, 0xf7, 0xa0, - 0xf6, 0x4e, 0xf7, 0xa0, 0xf6, 0x4e, 0xf7, 0xa0, 0xf6, 0x4e, 0xf8, 0xa0, - 0xf6, 0x4e, 0xf8, 0xa0, 0xf6, 0x4e, 0xf8, 0xa1, 0xf8, 0x4e, 0xf8, 0xa0, - 0xf6, 0x4e, 0xf8, 0xa1, 0xf8, 0x4e, 0xf9, 0xa1, 0xf8, 0x4e, 0xf9, 0xa1, - 0xf8, 0x4e, 0xf9, 0xa1, 0xf8, 0x4e, 0xf9, 0xa1, 0xf8, 0x4e, 0xfa, 0xa1, - 0xf8, 0x4e, 0xfa, 0xa1, 0xf8, 0x4e, 0xfa, 0xa1, 0xf8, 0x4e, 0xfa, 0xa1, - 0xf8, 0x4e, 0xfa, 0xa2, 0xfa, 0x4e, 0xfb, 0xa2, 0xfa, 0x4e, 0xfb, 0xa2, - 0xfa, 0x4e, 0xfb, 0xa2, 0xfa, 0x4e, 0xfb, 0xa2, 0xfa, 0x4e, 0xfc, 0xa2, - 0xfa, 0x4e, 0xfc, 0xa2, 0xfa, 0x4e, 0xfc, 0xa2, 0xfa, 0x4e, 0xfc, 0xa2, - 0xfa, 0x4e, 0xfc, 0xa2, 0xfa, 0x4e, 0xfd, 0xa2, 0xfa, 0x4e, 0xfd, 0xa2, - 0xfa, 0x4e, 0xfd, 0xa3, 0xfb, 0x4e, 0xfd, 0xa3, 0xfc, 0x4e, 0xfe, 0xa3, - 0xfb, 0x4e, 0xfe, 0xa3, 0xfc, 0x4e, 0xfe, 0xa3, 0xfb, 0x4e, 0xfe, 0xa3, - 0xfc, 0x4e, 0xfe, 0xa3, 0xfb, 0x4e, 0xff, 0xa3, 0xfc, 0x4e, 0xff, 0xa3, - 0xfb, 0x4e, 0x03, 0xa1, 0x97, 0x4e, 0x0a, 0x9d, 0x98, 0x4e, 0x0f, 0xa1, - 0x97, 0x4e, 0x14, 0x9d, 0x98, 0x4e, 0x17, 0xa1, 0x97, 0x4e, 0x1b, 0x9d, - 0x98, 0x4e, 0x1e, 0xa1, 0x97, 0x4e, 0x20, 0x9d, 0x98, 0x4e, 0x23, 0xa1, - 0x97, 0x4e, 0x25, 0x9d, 0x98, 0x4e, 0x27, 0xa1, 0x97, 0x4e, 0x29, 0x9d, - 0x98, 0x4e, 0x2b, 0xa1, 0x97, 0x4e, 0x2d, 0x9d, 0x98, 0x4e, 0x2f, 0xa1, - 0x97, 0x4e, 0x31, 0x9d, 0x98, 0x4e, 0x32, 0xa1, 0x97, 0x4e, 0x34, 0x9d, - 0x98, 0x4e, 0x35, 0xa1, 0x97, 0x4e, 0x37, 0x9d, 0x98, 0x4e, 0x38, 0xa1, - 0x97, 0x4e, 0x3a, 0x9d, 0x98, 0x4e, 0x3b, 0xa1, 0x97, 0x4e, 0x3c, 0x9d, - 0x98, 0x4e, 0x3e, 0xa1, 0x97, 0x4e, 0x3f, 0x9d, 0x98, 0x4e, 0x40, 0xa1, - 0x97, 0x4e, 0x42, 0x9d, 0x98, 0x4e, 0x43, 0xa1, 0x97, 0x4e, 0x44, 0x9d, - 0x98, 0x4e, 0x45, 0xa1, 0x97, 0x4e, 0x46, 0x9d, 0x98, 0x4e, 0x47, 0xa1, - 0x97, 0x4e, 0x48, 0x9d, 0x98, 0x4e, 0x49, 0xa1, 0x97, 0x4e, 0x4a, 0x9d, - 0x98, 0x4e, 0x4b, 0xa1, 0x97, 0x4e, 0x4c, 0x9d, 0x98, 0x4e, 0x4d, 0xa1, - 0x97, 0x4e, 0x4e, 0x9d, 0x98, 0x4e, 0x4f, 0x9b, 0x98, 0x4e, 0x50, 0x9d, - 0x98, 0x4e, 0x51, 0x9b, 0x98, 0x4e, 0x52, 0x9d, 0x98, 0x4e, 0x53, 0x9b, - 0x98, 0x4e, 0x54, 0x9d, 0x98, 0x4e, 0x55, 0x9b, 0x98, 0x4e, 0x56, 0x9d, - 0x98, 0x4e, 0x57, 0x9b, 0x98, 0x4e, 0x58, 0x9d, 0x98, 0x4e, 0x58, 0x9b, - 0x98, 0x4e, 0x59, 0x9d, 0x98, 0x4e, 0x5a, 0x9b, 0x98, 0x4e, 0x5b, 0x9d, - 0x98, 0x4e, 0x5c, 0x9b, 0x98, 0x4e, 0x5d, 0x9d, 0x98, 0x4e, 0x5d, 0x9b, - 0x98, 0x4e, 0x5e, 0x9d, 0x98, 0x4e, 0x5f, 0x9b, 0x98, 0x4e, 0x60, 0x9d, - 0x98, 0x4e, 0x60, 0x9b, 0x98, 0x4e, 0x61, 0x9d, 0x98, 0x4e, 0x62, 0x9b, - 0x98, 0x4e, 0x63, 0x9d, 0x98, 0x4e, 0x63, 0x9b, 0x98, 0x4e, 0x64, 0x9d, - 0x98, 0x4e, 0x65, 0x9b, 0x98, 0x4e, 0x66, 0x9d, 0x98, 0x4e, 0x66, 0x9b, - 0x98, 0x4e, 0x67, 0x9d, 0x98, 0x4e, 0x68, 0x9b, 0x98, 0x4e, 0x68, 0x9d, - 0x98, 0x4e, 0x69, 0x9b, 0x98, 0x4e, 0x6a, 0x9d, 0x98, 0x4e, 0x6a, 0x9b, - 0x98, 0x4e, 0x6b, 0x9d, 0x98, 0x4e, 0x6c, 0x9b, 0x98, 0x4e, 0x6c, 0x9d, - 0x98, 0x4e, 0x6d, 0x9b, 0x98, 0x4e, 0x6e, 0x9d, 0x98, 0x4e, 0x6e, 0x9b, - 0x98, 0x4e, 0x6f, 0x9d, 0x98, 0x4e, 0x70, 0x9b, 0x98, 0x4e, 0x70, 0x9d, - 0x98, 0x4e, 0x71, 0x9b, 0x98, 0x4e, 0x72, 0x9d, 0x98, 0x4e, 0x72, 0x9b, - 0x98, 0x4e, 0x73, 0x9d, 0x98, 0x4e, 0x73, 0x9b, 0x98, 0x4e, 0x74, 0x9d, - 0x98, 0x4e, 0x75, 0x9b, 0x98, 0x4e, 0x75, 0x9d, 0x98, 0x4e, 0x76, 0x9b, - 0x98, 0x4e, 0x76, 0x9d, 0x98, 0x4e, 0x77, 0x9b, 0x98, 0x4e, 0x78, 0x9d, - 0x98, 0x4e, 0x78, 0x9b, 0x98, 0x4e, 0x79, 0x9d, 0x98, 0x4e, 0x79, 0x9b, - 0x98, 0x4e, 0x7a, 0x9d, 0x98, 0x4e, 0x7a, 0x9b, 0x98, 0x4e, 0x7b, 0x98, - 0x98, 0x4e, 0x7c, 0x9b, 0x98, 0x4e, 0x7c, 0x98, 0x98, 0x4e, 0x7d, 0x9b, - 0x98, 0x4e, 0x7d, 0x98, 0x98, 0x4e, 0x7e, 0x9b, 0x98, 0x4e, 0x7e, 0x98, - 0x98, 0x4e, 0x7f, 0x9b, 0x98, 0x4e, 0x7f, 0x98, 0x98, 0x4e, 0x80, 0x9b, - 0x98, 0x4e, 0x81, 0x98, 0x98, 0x4e, 0x81, 0x9b, 0x98, 0x4e, 0x82, 0x98, - 0x98, 0x4e, 0x82, 0x9b, 0x98, 0x4e, 0x83, 0x98, 0x98, 0x4e, 0x83, 0x9b, - 0x98, 0x4e, 0x84, 0x98, 0x98, 0x4e, 0x84, 0x9b, 0x98, 0x4e, 0x85, 0x98, - 0x98, 0x4e, 0x85, 0x9b, 0x98, 0x4e, 0x86, 0x98, 0x98, 0x4e, 0x86, 0x9b, - 0x98, 0x4e, 0x87, 0x98, 0x98, 0x4e, 0x87, 0x9b, 0x98, 0x4e, 0x88, 0x98, - 0x98, 0x4e, 0x88, 0x9b, 0x98, 0x4e, 0x89, 0x98, 0x98, 0x4e, 0x89, 0x9b, - 0x98, 0x4e, 0x8a, 0x98, 0x98, 0x4e, 0x8a, 0x9b, 0x98, 0x4e, 0x8b, 0x98, - 0x98, 0x4e, 0x8b, 0x9b, 0x98, 0x4e, 0x8c, 0x98, 0x98, 0x4e, 0x8c, 0x9b, - 0x98, 0x4e, 0x8d, 0x98, 0x98, 0x4e, 0x8d, 0x9b, 0x98, 0x4e, 0x8e, 0x98, - 0x98, 0x4e, 0x8e, 0x97, 0x99, 0x4e, 0x8e, 0x98, 0x98, 0x4e, 0x8f, 0x97, - 0x99, 0x4e, 0x8f, 0x98, 0x98, 0x4e, 0x90, 0x97, 0x99, 0x4e, 0x90, 0x98, - 0x98, 0x4e, 0x91, 0x97, 0x99, 0x4e, 0x91, 0x98, 0x98, 0x4e, 0x92, 0x97, - 0x99, 0x4e, 0x92, 0x98, 0x98, 0x4e, 0x93, 0x97, 0x99, 0x4e, 0x93, 0x98, - 0x98, 0x4e, 0x94, 0x97, 0x99, 0x4e, 0x94, 0x98, 0x98, 0x4e, 0x94, 0x97, - 0x99, 0x4e, 0x95, 0x98, 0x98, 0x4e, 0x95, 0x97, 0x99, 0x4e, 0x96, 0x98, - 0x98, 0x4e, 0x96, 0x97, 0x99, 0x4e, 0x97, 0x98, 0x98, 0x4e, 0x97, 0x97, - 0x99, 0x4e, 0x98, 0x97, 0x99, 0x4e, 0x98, 0x97, 0x99, 0x4e, 0x98, 0x97, - 0x99, 0x4e, 0x98, 0x97, 0x99, 0x4e, 0x98, 0x97, 0x99, 0x4e, 0x98, 0x97, - 0x9a, 0x4e, 0x98, 0x97, 0x9a, 0x4e, 0x99, 0x97, 0x9a, 0x4c, 0x9d, 0x97, - 0x9b, 0x4e, 0x9d, 0x97, 0x9b, 0x4e, 0x9d, 0x97, 0x9c, 0x4e, 0x9d, 0x97, - 0x9c, 0x4e, 0x9d, 0x96, 0x9d, 0x4e, 0x9d, 0x97, 0x9c, 0x4e, 0x9d, 0x96, - 0x9d, 0x4e, 0x9e, 0x97, 0x9c, 0x4e, 0x9e, 0x96, 0x9d, 0x4e, 0x9f, 0x97, - 0x9c, 0x4e, 0x9f, 0x96, 0x9d, 0x4e, 0x9f, 0x97, 0x9c, 0x4e, 0xa0, 0x96, - 0x9d, 0x4e, 0xa0, 0x97, 0x9c, 0x4e, 0xa1, 0x96, 0x9d, 0x4e, 0xa1, 0x97, - 0x9c, 0x4e, 0xa1, 0x96, 0x9d, 0x4e, 0xa2, 0x97, 0x9c, 0x4e, 0xa2, 0x96, - 0x9d, 0x4e, 0xa3, 0x97, 0x9c, 0x4e, 0xa3, 0x96, 0x9d, 0x4e, 0xa3, 0x93, - 0x9d, 0x4e, 0xa4, 0x8e, 0xa4, 0x4e, 0xa4, 0x8e, 0xa4, 0x4e, 0xa5, 0x8e, - 0xa5, 0x4e, 0xa5, 0x8f, 0xa8, 0x4e, 0xa5, 0x8f, 0xa8, 0x4e, 0xa6, 0x8f, - 0xa8, 0x4e, 0xa6, 0x8f, 0xa8, 0x4e, 0xa6, 0x8f, 0xa8, 0x4e, 0xa7, 0x8f, - 0xa8, 0x4e, 0xa7, 0x8f, 0xa8, 0x4e, 0xa8, 0x8f, 0xa8, 0x4e, 0xa8, 0x8f, - 0xa8, 0x4e, 0xa8, 0x8f, 0xa8, 0x4e, 0xa9, 0x8f, 0xa9, 0x4e, 0xa9, 0x8f, - 0xa9, 0x4e, 0xaa, 0x8f, 0xaa, 0x4e, 0xaa, 0x8f, 0xaa, 0x4e, 0xaa, 0x90, - 0xac, 0x4e, 0xab, 0x90, 0xad, 0x4e, 0xab, 0x90, 0xac, 0x4e, 0xab, 0x90, - 0xad, 0x4e, 0xac, 0x90, 0xac, 0x4e, 0xac, 0x90, 0xad, 0x4e, 0xac, 0x90, - 0xac, 0x4e, 0xad, 0x90, 0xad, 0x4e, 0xad, 0x90, 0xad, 0x4e, 0xae, 0x90, - 0xae, 0x4e, 0xae, 0x90, 0xae, 0x4e, 0xae, 0x91, 0xb0, 0x4e, 0xaf, 0x91, - 0xb1, 0x4e, 0xaf, 0x91, 0xb0, 0x4e, 0xaf, 0x91, 0xb1, 0x4e, 0xb0, 0x91, - 0xb0, 0x4e, 0xb0, 0x91, 0xb1, 0x4e, 0xb0, 0x91, 0xb0, 0x4e, 0xb1, 0x91, - 0xb1, 0x4e, 0xb1, 0x91, 0xb1, 0x4e, 0xb2, 0x91, 0xb2, 0x4e, 0xb2, 0x91, - 0xb2, 0x4e, 0xb2, 0x92, 0xb4, 0x4e, 0xb3, 0x92, 0xb5, 0x4e, 0xb3, 0x92, - 0xb4, 0x4e, 0xb3, 0x92, 0xb5, 0x4e, 0xb4, 0x92, 0xb4, 0x4e, 0xb4, 0x92, - 0xb5, 0x4e, 0xb4, 0x92, 0xb4, 0x4e, 0xb5, 0x92, 0xb5, 0x4e, 0xb5, 0x92, - 0xb5, 0x4e, 0xb5, 0x92, 0xb5, 0x4e, 0xb6, 0x92, 0xb6, 0x4e, 0xb6, 0x92, - 0xb6, 0x4e, 0xb6, 0x92, 0xb6, 0x4e, 0xb7, 0x93, 0xb8, 0x4e, 0xb7, 0x93, - 0xb8, 0x4e, 0xb7, 0x93, 0xb8, 0x4e, 0xb8, 0x93, 0xb8, 0x4e, 0xb8, 0x93, - 0xb8, 0x4e, 0xb8, 0x93, 0xb8, 0x4e, 0xb9, 0x93, 0xb9, 0x4e, 0xb9, 0x93, - 0xb9, 0x4e, 0xb9, 0x93, 0xb9, 0x4e, 0xba, 0x93, 0xba, 0x4e, 0xba, 0x94, - 0xbc, 0x4e, 0xba, 0x94, 0xbc, 0x4e, 0xbb, 0x94, 0xbc, 0x4e, 0xbb, 0x94, - 0xbc, 0x4e, 0xbb, 0x94, 0xbc, 0x4e, 0xbc, 0x94, 0xbc, 0x4e, 0xbc, 0x94, - 0xbc, 0x4e, 0xbc, 0x94, 0xbc, 0x4e, 0xbd, 0x94, 0xbd, 0x4e, 0xbd, 0x94, - 0xbd, 0x4e, 0xbd, 0x94, 0xbd, 0x4e, 0xbe, 0x94, 0xbe, 0x4e, 0xbe, 0x95, - 0xbf, 0x4e, 0xbe, 0x95, 0xc0, 0x4e, 0xbf, 0x95, 0xbf, 0x4e, 0xbf, 0x95, - 0xc0, 0x4e, 0xbf, 0x95, 0xbf, 0x4e, 0xc0, 0x95, 0xc0, 0x4e, 0xc0, 0x95, - 0xc0, 0x4e, 0xc0, 0x95, 0xc0, 0x4e, 0xc1, 0x95, 0xc1, 0x4e, 0xc1, 0x95, - 0xc1, 0x4e, 0xc1, 0x95, 0xc1, 0x4e, 0xc1, 0x95, 0xc1, 0x4e, 0xc2, 0x95, - 0xc2, 0x4e, 0xc2, 0x96, 0xc3, 0x4e, 0xc2, 0x96, 0xc3, 0x4e, 0xc3, 0x96, - 0xc3, 0x4e, 0xc3, 0x96, 0xc3, 0x4e, 0xc3, 0x96, 0xc3, 0x4e, 0xc4, 0x96, - 0xc4, 0x4e, 0xc4, 0x96, 0xc4, 0x4e, 0xc4, 0x96, 0xc4, 0x4e, 0xc5, 0x96, - 0xc5, 0x4e, 0xc5, 0x96, 0xc5, 0x4e, 0xc5, 0x96, 0xc5, 0x4e, 0xc6, 0x96, - 0xc6, 0x4e, 0xc6, 0x96, 0xc6, 0x4e, 0xc6, 0x96, 0xc6, 0x4e, 0xc6, 0x97, - 0xc6, 0x4f, 0xc7, 0x97, 0xc7, 0x4f, 0xc7, 0x97, 0xc7, 0x4f, 0xc7, 0x97, - 0xc7, 0x4f, 0xc8, 0x97, 0xc8, 0x4f, 0xc8, 0x97, 0xc8, 0x4f, 0xc8, 0x97, - 0xc8, 0x4f, 0xc9, 0x97, 0xc9, 0x4f, 0xc9, 0x97, 0xc9, 0x4f, 0xc9, 0x97, - 0xc9, 0x4f, 0xc9, 0x97, 0xc9, 0x4f, 0xc9, 0x97, 0xca, 0x4f, 0xc9, 0x97, - 0xca, 0x4f, 0xca, 0x97, 0xca, 0x50, 0xcb, 0x97, 0xcb, 0x50, 0xcb, 0x97, - 0xcb, 0x50, 0xcb, 0x97, 0xcb, 0x50, 0xcc, 0x97, 0xcc, 0x50, 0xcc, 0x97, - 0xcc, 0x50, 0xcc, 0x97, 0xcc, 0x50, 0xcc, 0x97, 0xcc, 0x50, 0xcd, 0x97, - 0xcd, 0x50, 0xcc, 0x97, 0xcd, 0x50, 0xcd, 0x97, 0xcd, 0x50, 0xcc, 0x97, - 0xce, 0x50, 0xcd, 0x97, 0xce, 0x50, 0xce, 0x97, 0xce, 0x51, 0xce, 0x97, - 0xce, 0x51, 0xcf, 0x97, 0xcf, 0x51, 0xcf, 0x97, 0xcf, 0x51, 0xcf, 0x97, - 0xcf, 0x51, 0xd0, 0x97, 0xd0, 0x51, 0xd0, 0x97, 0xd0, 0x51, 0xd0, 0x97, - 0xd0, 0x51, 0xd0, 0x97, 0xd0, 0x51, 0xd0, 0x97, 0xd1, 0x51, 0xd0, 0x97, - 0xd1, 0x51, 0xd1, 0x97, 0xd1, 0x4a, 0xd2, 0x97, 0xd2, 0x4a, 0xd2, 0x97, - 0xd2, 0x4a, 0xd2, 0x97, 0xd2, 0x4a, 0xd2, 0x97, 0xd2, 0x4a, 0xd4, 0x97, - 0xd3, 0x4b, 0xd4, 0x97, 0xd3, 0x4b, 0xd4, 0x97, 0xd3, 0x4b, 0xd4, 0x97, - 0xd4, 0x4b, 0xd4, 0x97, 0xd4, 0x4b, 0xd4, 0x97, 0xd4, 0x4b, 0xd4, 0x97, - 0xd4, 0x4b, 0xd5, 0x97, 0xd5, 0x4b, 0xd5, 0x97, 0xd5, 0x4b, 0xd5, 0x97, - 0xd5, 0x4b, 0xd7, 0x97, 0xd6, 0x4c, 0xd7, 0x97, 0xd6, 0x4c, 0xd7, 0x97, - 0xd6, 0x4c, 0xd7, 0x97, 0xd6, 0x4c, 0xd7, 0x97, 0xd7, 0x4c, 0xd7, 0x97, - 0xd7, 0x4c, 0xd7, 0x97, 0xd7, 0x4c, 0xd7, 0x97, 0xd7, 0x4c, 0xd8, 0x97, - 0xd8, 0x4c, 0xd8, 0x97, 0xd8, 0x4c, 0xd8, 0x97, 0xd8, 0x4c, 0xd9, 0x97, - 0xd9, 0x4d, 0xd9, 0x97, 0xd9, 0x4d, 0xd9, 0x97, 0xd9, 0x4d, 0xd9, 0x97, - 0xd9, 0x4d, 0xda, 0x97, 0xda, 0x4d, 0xda, 0x97, 0xda, 0x4d, 0xda, 0x97, - 0xda, 0x4d, 0xda, 0x97, 0xda, 0x4d, 0xdb, 0x97, 0xdb, 0x4d, 0xdb, 0x97, - 0xdb, 0x4d, 0xdb, 0x97, 0xdb, 0x4d, 0xdb, 0x98, 0xdb, 0x4e, 0xdc, 0x98, - 0xdc, 0x4e, 0xdc, 0x98, 0xdc, 0x4e, 0xdc, 0x98, 0xdc, 0x4e, 0xdd, 0x98, - 0xdd, 0x4e, 0xdd, 0x98, 0xdd, 0x4e, 0xdd, 0x98, 0xdd, 0x4e, 0xdd, 0x98, - 0xdd, 0x4e, 0xde, 0x98, 0xde, 0x4e, 0xde, 0x98, 0xde, 0x4e, 0xde, 0x98, - 0xde, 0x4e, 0xde, 0x98, 0xde, 0x4e, 0xdf, 0x98, 0xdf, 0x4e, 0xdf, 0x98, - 0xdf, 0x4e, 0xdf, 0x98, 0xdf, 0x4e, 0xdf, 0x98, 0xdf, 0x4e, 0xe0, 0x98, - 0xe0, 0x4e, 0xe0, 0x98, 0xe0, 0x4e, 0xe0, 0x98, 0xe0, 0x4e, 0xe1, 0x98, - 0xe0, 0x4e, 0xe1, 0x98, 0xe0, 0x4e, 0xe1, 0x98, 0xe0, 0x4e, 0xe1, 0x98, - 0xe0, 0x4e, 0xe2, 0x99, 0xe2, 0x4e, 0xe2, 0x99, 0xe2, 0x4e, 0xe2, 0x99, - 0xe2, 0x4e, 0xe2, 0x99, 0xe2, 0x4e, 0xe3, 0x99, 0xe3, 0x4e, 0xe3, 0x99, - 0xe2, 0x4e, 0xe3, 0x99, 0xe3, 0x4e, 0xe3, 0x99, 0xe2, 0x4e, 0xe4, 0x99, - 0xe3, 0x4e, 0xe4, 0x9a, 0xe4, 0x4e, 0xe4, 0x9a, 0xe4, 0x4e, 0xe4, 0x9a, - 0xe4, 0x4e, 0xe5, 0x9a, 0xe5, 0x4e, 0xe5, 0x9a, 0xe5, 0x4e, 0xe5, 0x9a, - 0xe5, 0x4e, 0xe5, 0x9a, 0xe5, 0x4e, 0xe6, 0x9a, 0xe5, 0x4e, 0xe6, 0x9a, - 0xe5, 0x4e, 0xe6, 0x9a, 0xe5, 0x4e, 0xe6, 0x9b, 0xe6, 0x4e, 0xe7, 0x9b, - 0xe7, 0x4e, 0xe7, 0x9b, 0xe7, 0x4e, 0xe7, 0x9b, 0xe7, 0x4e, 0xe7, 0x9b, - 0xe7, 0x4e, 0xe8, 0x9b, 0xe7, 0x4e, 0xe8, 0x9b, 0xe7, 0x4e, 0xe8, 0x9b, - 0xe7, 0x4e, 0xe8, 0x9b, 0xe7, 0x4e, 0xe9, 0x9b, 0xe7, 0x4e, 0xe9, 0x9b, - 0xe7, 0x4e, 0xe9, 0x9c, 0xe9, 0x4e, 0xe9, 0x9c, 0xe9, 0x4e, 0xea, 0x9c, - 0xea, 0x4e, 0xea, 0x9c, 0xea, 0x4e, 0xea, 0x9c, 0xea, 0x4e, 0xea, 0x9c, - 0xea, 0x4e, 0xeb, 0x9c, 0xea, 0x4e, 0xeb, 0x9c, 0xea, 0x4e, 0xeb, 0x9c, - 0xea, 0x4e, 0xeb, 0x9c, 0xea, 0x4e, 0xec, 0x9d, 0xec, 0x4e, 0xec, 0x9d, - 0xec, 0x4e, 0xec, 0x9d, 0xec, 0x4e, 0xec, 0x9d, 0xec, 0x4e, 0xec, 0x9d, - 0xec, 0x4e, 0xed, 0x9d, 0xec, 0x4e, 0xed, 0x9d, 0xec, 0x4e, 0xed, 0x9d, - 0xec, 0x4e, 0xed, 0x9d, 0xec, 0x4e, 0xee, 0x9d, 0xee, 0x4e, 0xee, 0x9d, - 0xee, 0x4e, 0xee, 0x9d, 0xee, 0x4e, 0xee, 0x9d, 0xee, 0x4e, 0xef, 0x9d, - 0xee, 0x4e, 0xef, 0x9d, 0xee, 0x4e, 0xef, 0x9d, 0xee, 0x4e, 0xef, 0x9d, - 0xee, 0x4e, 0xf0, 0x9d, 0xee, 0x4e, 0xf0, 0x9d, 0xee, 0x4e, 0xf0, 0x9d, - 0xee, 0x4e, 0xf0, 0x9e, 0xf0, 0x4e, 0xf1, 0x9e, 0xf1, 0x4e, 0xf1, 0x9e, - 0xf0, 0x4e, 0xf1, 0x9e, 0xf1, 0x4e, 0xf1, 0x9e, 0xf0, 0x4e, 0xf2, 0x9e, - 0xf1, 0x4e, 0xf2, 0x9e, 0xf0, 0x4e, 0xf2, 0x9e, 0xf1, 0x4e, 0xf2, 0x9e, - 0xf0, 0x4e, 0xf2, 0x9e, 0xf1, 0x4e, 0xf3, 0x9f, 0xf3, 0x4e, 0xf3, 0x9f, - 0xf2, 0x4e, 0xf3, 0x9f, 0xf3, 0x4e, 0xf3, 0x9f, 0xf2, 0x4e, 0xf4, 0x9f, - 0xf3, 0x4e, 0xf4, 0x9f, 0xf2, 0x4e, 0xf4, 0x9f, 0xf3, 0x4e, 0xf4, 0x9f, - 0xf2, 0x4e, 0xf5, 0x9f, 0xf3, 0x4e, 0xf5, 0xa0, 0xf5, 0x4e, 0xf5, 0xa0, - 0xf5, 0x4e, 0xf5, 0xa0, 0xf5, 0x4e, 0xf5, 0xa0, 0xf5, 0x4e, 0xf6, 0xa0, - 0xf5, 0x4e, 0xf6, 0xa0, 0xf5, 0x4e, 0xf6, 0xa0, 0xf5, 0x4e, 0xf6, 0xa0, - 0xf5, 0x4e, 0xf7, 0xa0, 0xf5, 0x4e, 0xf7, 0xa1, 0xf7, 0x4e, 0xf7, 0xa1, - 0xf7, 0x4e, 0xf7, 0xa1, 0xf7, 0x4e, 0xf8, 0xa1, 0xf7, 0x4e, 0xf8, 0xa1, - 0xf7, 0x4e, 0xf8, 0xa1, 0xf7, 0x4e, 0xf8, 0xa1, 0xf7, 0x4e, 0xf8, 0xa1, - 0xf7, 0x4e, 0xf9, 0xa1, 0xf7, 0x4e, 0xf9, 0xa1, 0xf7, 0x4e, 0xf9, 0xa1, - 0xf9, 0x4e, 0xf9, 0xa1, 0xf7, 0x4e, 0xfa, 0xa1, 0xf9, 0x4e, 0xfa, 0xa1, - 0xf9, 0x4e, 0xfa, 0xa1, 0xf9, 0x4e, 0xfa, 0xa1, 0xf9, 0x4e, 0xfa, 0xa1, - 0xf9, 0x4e, 0xfb, 0xa1, 0xf9, 0x4e, 0xfb, 0xa1, 0xf9, 0x4e, 0xfb, 0xa1, - 0xf9, 0x4e, 0xfb, 0xa1, 0xf9, 0x4e, 0xfc, 0xa2, 0xfb, 0x4e, 0xfc, 0xa2, - 0xfb, 0x4e, 0xfc, 0xa2, 0xfb, 0x4e, 0xfc, 0xa2, 0xfb, 0x4e, 0xfc, 0xa2, - 0xfb, 0x4e, 0xfd, 0xa2, 0xfb, 0x4e, 0xfd, 0xa2, 0xfb, 0x4e, 0xfd, 0xa2, - 0xfb, 0x4e, 0xfd, 0xa2, 0xfb, 0x4e, 0xfe, 0xa2, 0xfb, 0x4e, 0xfe, 0xa2, - 0xfb, 0x4e, 0xfe, 0xa2, 0xfb, 0x4e, 0xfe, 0xa2, 0xfb, 0x4e, 0xfe, 0xa2, - 0xfb, 0x4e, 0xff, 0xa2, 0xfb, 0x4e, 0xff, 0xa2, 0xfb, 0x4e, 0x03, 0xa0, - 0x97, 0x4f, 0x0a, 0x9e, 0x98, 0x4f, 0x0f, 0xa0, 0x97, 0x4f, 0x14, 0x9e, - 0x98, 0x4f, 0x17, 0xa0, 0x97, 0x4f, 0x1b, 0x9e, 0x98, 0x4f, 0x1e, 0xa0, - 0x97, 0x4f, 0x20, 0x9e, 0x98, 0x4f, 0x23, 0xa0, 0x97, 0x4f, 0x25, 0x9e, - 0x98, 0x4f, 0x27, 0xa0, 0x97, 0x4f, 0x29, 0x9e, 0x98, 0x4f, 0x2b, 0xa0, - 0x97, 0x4f, 0x2d, 0x9e, 0x98, 0x4f, 0x2f, 0xa0, 0x97, 0x4f, 0x31, 0x9e, - 0x98, 0x4f, 0x32, 0xa0, 0x97, 0x4f, 0x34, 0x9e, 0x98, 0x4f, 0x35, 0xa0, - 0x97, 0x4f, 0x37, 0x9e, 0x98, 0x4f, 0x38, 0xa0, 0x97, 0x4f, 0x3a, 0x9e, - 0x98, 0x4f, 0x3b, 0xa0, 0x97, 0x4f, 0x3c, 0x9e, 0x98, 0x4f, 0x3e, 0xa0, - 0x97, 0x4f, 0x3f, 0x9e, 0x98, 0x4f, 0x40, 0xa0, 0x97, 0x4f, 0x42, 0x9e, - 0x98, 0x4f, 0x43, 0xa0, 0x97, 0x4f, 0x44, 0x9e, 0x98, 0x4f, 0x45, 0xa0, - 0x97, 0x4f, 0x46, 0x9e, 0x98, 0x4f, 0x47, 0xa0, 0x97, 0x4f, 0x48, 0x9e, - 0x98, 0x4f, 0x49, 0xa0, 0x97, 0x4f, 0x4a, 0x9e, 0x98, 0x4f, 0x4b, 0xa0, - 0x97, 0x4f, 0x4c, 0x9e, 0x98, 0x4f, 0x4d, 0xa0, 0x97, 0x4f, 0x4e, 0x9e, - 0x98, 0x4f, 0x4f, 0xa0, 0x97, 0x4f, 0x50, 0x9e, 0x98, 0x4f, 0x51, 0xa0, - 0x97, 0x4f, 0x52, 0x9e, 0x98, 0x4f, 0x53, 0xa0, 0x97, 0x4f, 0x54, 0x9e, - 0x98, 0x4f, 0x55, 0xa0, 0x97, 0x4f, 0x56, 0x9e, 0x98, 0x4f, 0x57, 0xa0, - 0x97, 0x4f, 0x58, 0x9e, 0x98, 0x4f, 0x58, 0xa0, 0x97, 0x4f, 0x59, 0x9e, - 0x98, 0x4f, 0x5a, 0xa0, 0x97, 0x4f, 0x5b, 0x9e, 0x98, 0x4f, 0x5c, 0xa0, - 0x97, 0x4f, 0x5d, 0x9e, 0x98, 0x4f, 0x5d, 0xa0, 0x97, 0x4f, 0x5e, 0x9e, - 0x98, 0x4f, 0x5f, 0xa0, 0x97, 0x4f, 0x60, 0x9e, 0x98, 0x4f, 0x60, 0xa0, - 0x97, 0x4f, 0x61, 0x9e, 0x98, 0x4f, 0x62, 0xa0, 0x97, 0x4f, 0x63, 0x9e, - 0x98, 0x4f, 0x63, 0x9b, 0x98, 0x4f, 0x64, 0x9e, 0x98, 0x4f, 0x65, 0x9b, - 0x98, 0x4f, 0x66, 0x9e, 0x98, 0x4f, 0x66, 0x9b, 0x98, 0x4f, 0x67, 0x9e, - 0x98, 0x4f, 0x68, 0x9b, 0x98, 0x4f, 0x68, 0x9e, 0x98, 0x4f, 0x69, 0x9b, - 0x98, 0x4f, 0x6a, 0x9e, 0x98, 0x4f, 0x6a, 0x9b, 0x98, 0x4f, 0x6b, 0x9e, - 0x98, 0x4f, 0x6c, 0x9b, 0x98, 0x4f, 0x6c, 0x9e, 0x98, 0x4f, 0x6d, 0x9b, - 0x98, 0x4f, 0x6e, 0x9e, 0x98, 0x4f, 0x6e, 0x9b, 0x98, 0x4f, 0x6f, 0x9e, - 0x98, 0x4f, 0x70, 0x9b, 0x98, 0x4f, 0x70, 0x9e, 0x98, 0x4f, 0x71, 0x9b, - 0x98, 0x4f, 0x72, 0x9e, 0x98, 0x4f, 0x72, 0x9b, 0x98, 0x4f, 0x73, 0x9e, - 0x98, 0x4f, 0x73, 0x9b, 0x98, 0x4f, 0x74, 0x9e, 0x98, 0x4f, 0x75, 0x9b, - 0x98, 0x4f, 0x75, 0x9e, 0x98, 0x4f, 0x76, 0x9b, 0x98, 0x4f, 0x76, 0x9e, - 0x98, 0x4f, 0x77, 0x9b, 0x98, 0x4f, 0x78, 0x9e, 0x98, 0x4f, 0x78, 0x9b, - 0x98, 0x4f, 0x79, 0x98, 0x98, 0x4f, 0x79, 0x9b, 0x98, 0x4f, 0x7a, 0x98, - 0x98, 0x4f, 0x7a, 0x9b, 0x98, 0x4f, 0x7b, 0x98, 0x98, 0x4f, 0x7c, 0x9b, - 0x98, 0x4f, 0x7c, 0x98, 0x98, 0x4f, 0x7d, 0x9b, 0x98, 0x4f, 0x7d, 0x98, - 0x98, 0x4f, 0x7e, 0x9b, 0x98, 0x4f, 0x7e, 0x98, 0x98, 0x4f, 0x7f, 0x9b, - 0x98, 0x4f, 0x7f, 0x98, 0x98, 0x4f, 0x80, 0x9b, 0x98, 0x4f, 0x81, 0x98, - 0x98, 0x4f, 0x81, 0x9b, 0x98, 0x4f, 0x82, 0x98, 0x98, 0x4f, 0x82, 0x9b, - 0x98, 0x4f, 0x83, 0x98, 0x98, 0x4f, 0x83, 0x9b, 0x98, 0x4f, 0x84, 0x98, - 0x98, 0x4f, 0x84, 0x9b, 0x98, 0x4f, 0x85, 0x98, 0x98, 0x4f, 0x85, 0x9b, - 0x98, 0x4f, 0x86, 0x98, 0x98, 0x4f, 0x86, 0x9b, 0x98, 0x4f, 0x87, 0x98, - 0x98, 0x4f, 0x87, 0x9b, 0x98, 0x4f, 0x88, 0x98, 0x98, 0x4f, 0x88, 0x9b, - 0x98, 0x4f, 0x89, 0x98, 0x98, 0x4f, 0x89, 0x9b, 0x98, 0x4f, 0x8a, 0x98, - 0x98, 0x4f, 0x8a, 0x9b, 0x98, 0x4f, 0x8b, 0x98, 0x98, 0x4f, 0x8b, 0x9b, - 0x98, 0x4f, 0x8c, 0x98, 0x98, 0x4f, 0x8c, 0x9b, 0x98, 0x4f, 0x8d, 0x98, - 0x98, 0x4f, 0x8d, 0x9b, 0x98, 0x4f, 0x8e, 0x98, 0x98, 0x4f, 0x8e, 0x97, - 0x99, 0x4f, 0x8e, 0x98, 0x98, 0x4f, 0x8f, 0x97, 0x99, 0x4f, 0x8f, 0x98, - 0x98, 0x4f, 0x90, 0x97, 0x99, 0x4f, 0x90, 0x98, 0x98, 0x4f, 0x91, 0x97, - 0x99, 0x4f, 0x91, 0x98, 0x98, 0x4f, 0x92, 0x97, 0x99, 0x4f, 0x92, 0x98, - 0x98, 0x4f, 0x93, 0x97, 0x99, 0x4f, 0x93, 0x98, 0x98, 0x4f, 0x94, 0x97, - 0x99, 0x4f, 0x94, 0x98, 0x98, 0x4f, 0x94, 0x97, 0x99, 0x4f, 0x95, 0x98, - 0x98, 0x4f, 0x95, 0x97, 0x99, 0x4f, 0x96, 0x98, 0x98, 0x4f, 0x96, 0x97, - 0x99, 0x4f, 0x97, 0x98, 0x98, 0x4f, 0x97, 0x97, 0x99, 0x4f, 0x98, 0x98, - 0x98, 0x4f, 0x98, 0x97, 0x99, 0x4f, 0x98, 0x98, 0x98, 0x4f, 0x98, 0x97, - 0x99, 0x4f, 0x98, 0x97, 0x99, 0x4f, 0x98, 0x97, 0x9a, 0x4f, 0x98, 0x97, - 0x9a, 0x4f, 0x9c, 0x97, 0x9a, 0x51, 0x9d, 0x97, 0x9b, 0x4f, 0x9d, 0x97, - 0x9b, 0x4f, 0x9d, 0x97, 0x9c, 0x4f, 0x9d, 0x97, 0x9c, 0x4f, 0x9d, 0x97, - 0x9c, 0x4f, 0x9d, 0x97, 0x9c, 0x4f, 0x9d, 0x97, 0x9c, 0x4f, 0x9e, 0x97, - 0x9c, 0x4f, 0x9e, 0x95, 0x9d, 0x4f, 0x9f, 0x97, 0x9c, 0x4f, 0x9f, 0x95, - 0x9d, 0x4f, 0x9f, 0x97, 0x9c, 0x4f, 0xa0, 0x95, 0x9d, 0x4f, 0xa0, 0x97, - 0x9c, 0x4f, 0xa1, 0x95, 0x9d, 0x4f, 0xa1, 0x97, 0x9c, 0x4f, 0xa1, 0x95, - 0x9d, 0x4f, 0xa2, 0x97, 0x9c, 0x4f, 0xa2, 0x95, 0x9d, 0x4f, 0xa3, 0x97, - 0x9c, 0x4f, 0xa3, 0x95, 0x9d, 0x4f, 0xa3, 0x97, 0x9c, 0x4f, 0xa4, 0x95, - 0x9d, 0x4f, 0xa4, 0x8f, 0xa6, 0x4f, 0xa5, 0x8f, 0xa6, 0x4f, 0xa5, 0x8f, - 0xa6, 0x4f, 0xa5, 0x8f, 0xa6, 0x4f, 0xa6, 0x8f, 0xa6, 0x4f, 0xa6, 0x8f, - 0xa6, 0x4f, 0xa6, 0x8f, 0xa6, 0x4f, 0xa7, 0x8f, 0xa7, 0x4f, 0xa7, 0x90, - 0xaa, 0x4f, 0xa8, 0x90, 0xab, 0x4f, 0xa8, 0x90, 0xaa, 0x4f, 0xa8, 0x90, - 0xab, 0x4f, 0xa9, 0x90, 0xaa, 0x4f, 0xa9, 0x90, 0xab, 0x4f, 0xaa, 0x90, - 0xaa, 0x4f, 0xaa, 0x90, 0xab, 0x4f, 0xaa, 0x90, 0xaa, 0x4f, 0xab, 0x90, - 0xab, 0x4f, 0xab, 0x90, 0xab, 0x4f, 0xab, 0x90, 0xab, 0x4f, 0xac, 0x90, - 0xac, 0x4f, 0xac, 0x91, 0xae, 0x4f, 0xac, 0x91, 0xaf, 0x4f, 0xad, 0x91, - 0xae, 0x4f, 0xad, 0x91, 0xaf, 0x4f, 0xae, 0x91, 0xae, 0x4f, 0xae, 0x91, - 0xaf, 0x4f, 0xae, 0x91, 0xae, 0x4f, 0xaf, 0x91, 0xaf, 0x4f, 0xaf, 0x91, - 0xaf, 0x4f, 0xaf, 0x91, 0xaf, 0x4f, 0xb0, 0x91, 0xb0, 0x4f, 0xb0, 0x92, - 0xb2, 0x4f, 0xb0, 0x92, 0xb3, 0x4f, 0xb1, 0x92, 0xb2, 0x4f, 0xb1, 0x92, - 0xb3, 0x4f, 0xb2, 0x92, 0xb2, 0x4f, 0xb2, 0x92, 0xb3, 0x4f, 0xb2, 0x92, - 0xb2, 0x4f, 0xb3, 0x92, 0xb3, 0x4f, 0xb3, 0x92, 0xb3, 0x4f, 0xb3, 0x92, - 0xb3, 0x4f, 0xb4, 0x92, 0xb4, 0x4f, 0xb4, 0x93, 0xb6, 0x4f, 0xb4, 0x93, - 0xb6, 0x4f, 0xb5, 0x93, 0xb6, 0x4f, 0xb5, 0x93, 0xb6, 0x4f, 0xb5, 0x93, - 0xb6, 0x4f, 0xb6, 0x93, 0xb6, 0x4f, 0xb6, 0x93, 0xb6, 0x4f, 0xb6, 0x93, - 0xb6, 0x4f, 0xb7, 0x93, 0xb7, 0x4f, 0xb7, 0x93, 0xb7, 0x4f, 0xb7, 0x93, - 0xb7, 0x4f, 0xb8, 0x93, 0xb8, 0x4f, 0xb8, 0x93, 0xb8, 0x4f, 0xb8, 0x93, - 0xb8, 0x4f, 0xb9, 0x94, 0xba, 0x4f, 0xb9, 0x94, 0xba, 0x4f, 0xb9, 0x94, - 0xba, 0x4f, 0xba, 0x94, 0xba, 0x4f, 0xba, 0x94, 0xba, 0x4f, 0xba, 0x94, - 0xba, 0x4f, 0xbb, 0x94, 0xbb, 0x4f, 0xbb, 0x94, 0xbb, 0x4f, 0xbb, 0x94, - 0xbb, 0x4f, 0xbc, 0x94, 0xbc, 0x4f, 0xbc, 0x94, 0xbc, 0x4f, 0xbc, 0x94, - 0xbe, 0x4f, 0xbd, 0x94, 0xbe, 0x4f, 0xbd, 0x94, 0xbe, 0x4f, 0xbd, 0x94, - 0xbe, 0x4f, 0xbe, 0x94, 0xbe, 0x4f, 0xbe, 0x94, 0xbe, 0x4f, 0xbe, 0x94, - 0xbe, 0x4f, 0xbf, 0x94, 0xbf, 0x4f, 0xbf, 0x94, 0xbf, 0x4f, 0xbf, 0x94, - 0xbf, 0x4f, 0xc0, 0x94, 0xc0, 0x4f, 0xc0, 0x95, 0xc1, 0x4f, 0xc0, 0x95, - 0xc1, 0x4f, 0xc1, 0x95, 0xc1, 0x4f, 0xc1, 0x95, 0xc1, 0x4f, 0xc1, 0x95, - 0xc1, 0x4f, 0xc1, 0x95, 0xc1, 0x4f, 0xc2, 0x95, 0xc2, 0x4f, 0xc2, 0x95, - 0xc2, 0x4f, 0xc2, 0x95, 0xc2, 0x4f, 0xc3, 0x95, 0xc3, 0x4f, 0xc3, 0x95, - 0xc3, 0x4f, 0xc3, 0x95, 0xc3, 0x4f, 0xc4, 0x95, 0xc4, 0x4f, 0xc4, 0x96, - 0xc5, 0x4f, 0xc4, 0x96, 0xc5, 0x4f, 0xc5, 0x96, 0xc5, 0x4f, 0xc5, 0x96, - 0xc5, 0x4f, 0xc5, 0x96, 0xc5, 0x4f, 0xc6, 0x96, 0xc6, 0x4f, 0xc6, 0x96, - 0xc6, 0x4f, 0xc6, 0x96, 0xc6, 0x4f, 0xc6, 0x96, 0xc6, 0x4f, 0xc7, 0x96, - 0xc7, 0x4f, 0xc7, 0x96, 0xc7, 0x4f, 0xc7, 0x96, 0xc7, 0x4f, 0xc8, 0x96, - 0xc8, 0x4f, 0xc8, 0x97, 0xc8, 0x50, 0xc8, 0x97, 0xc8, 0x50, 0xc9, 0x97, - 0xc9, 0x50, 0xc9, 0x97, 0xc9, 0x50, 0xc9, 0x97, 0xc9, 0x50, 0xc9, 0x97, - 0xc9, 0x50, 0xca, 0x97, 0xca, 0x50, 0xca, 0x97, 0xca, 0x50, 0xca, 0x97, - 0xca, 0x50, 0xcb, 0x97, 0xcb, 0x50, 0xcb, 0x97, 0xcb, 0x50, 0xcb, 0x97, - 0xcb, 0x50, 0xcb, 0x97, 0xcc, 0x50, 0xcc, 0x97, 0xcc, 0x51, 0xcc, 0x97, - 0xcc, 0x51, 0xcc, 0x97, 0xcc, 0x51, 0xcd, 0x97, 0xcd, 0x51, 0xcd, 0x97, - 0xcd, 0x51, 0xcd, 0x97, 0xcd, 0x51, 0xce, 0x97, 0xce, 0x51, 0xce, 0x97, - 0xce, 0x51, 0xce, 0x97, 0xce, 0x51, 0xce, 0x97, 0xce, 0x51, 0xce, 0x97, - 0xcf, 0x51, 0xce, 0x97, 0xcf, 0x51, 0xce, 0x97, 0xcf, 0x51, 0xd0, 0x97, - 0xd0, 0x52, 0xd0, 0x97, 0xd0, 0x52, 0xd0, 0x97, 0xd0, 0x52, 0xd0, 0x97, - 0xd0, 0x52, 0xd1, 0x97, 0xd1, 0x52, 0xd1, 0x97, 0xd1, 0x52, 0xd1, 0x97, - 0xd1, 0x52, 0xd1, 0x97, 0xd2, 0x52, 0xd1, 0x97, 0xd2, 0x52, 0xd1, 0x97, - 0xd2, 0x52, 0xd1, 0x97, 0xd2, 0x52, 0xd3, 0x97, 0xd3, 0x4b, 0xd3, 0x97, - 0xd3, 0x4b, 0xd3, 0x97, 0xd3, 0x4b, 0xd4, 0x97, 0xd4, 0x4b, 0xd4, 0x97, - 0xd4, 0x4b, 0xd5, 0x97, 0xd4, 0x4c, 0xd6, 0x97, 0xd4, 0x4c, 0xd5, 0x97, - 0xd5, 0x4c, 0xd6, 0x97, 0xd5, 0x4c, 0xd5, 0x97, 0xd5, 0x4c, 0xd6, 0x97, - 0xd6, 0x4c, 0xd6, 0x97, 0xd6, 0x4c, 0xd6, 0x97, 0xd6, 0x4c, 0xd6, 0x97, - 0xd6, 0x4c, 0xd8, 0x97, 0xd7, 0x4d, 0xd8, 0x97, 0xd7, 0x4d, 0xd8, 0x97, - 0xd7, 0x4d, 0xd8, 0x97, 0xd7, 0x4d, 0xd8, 0x97, 0xd8, 0x4d, 0xd8, 0x97, - 0xd8, 0x4d, 0xd8, 0x97, 0xd8, 0x4d, 0xd9, 0x97, 0xd9, 0x4d, 0xd9, 0x97, - 0xd9, 0x4d, 0xd9, 0x97, 0xd9, 0x4d, 0xd9, 0x97, 0xd9, 0x4d, 0xda, 0x97, - 0xda, 0x4d, 0xda, 0x97, 0xda, 0x4e, 0xdb, 0x97, 0xda, 0x4e, 0xda, 0x97, - 0xda, 0x4e, 0xdb, 0x97, 0xdb, 0x4e, 0xdb, 0x97, 0xdb, 0x4e, 0xdb, 0x97, - 0xdb, 0x4e, 0xdb, 0x97, 0xdb, 0x4e, 0xdc, 0x97, 0xdc, 0x4e, 0xdc, 0x97, - 0xdc, 0x4e, 0xdc, 0x97, 0xdc, 0x4e, 0xdd, 0x97, 0xdd, 0x4e, 0xdd, 0x98, - 0xdd, 0x4f, 0xdd, 0x98, 0xdd, 0x4f, 0xdd, 0x98, 0xdd, 0x4f, 0xde, 0x98, - 0xde, 0x4f, 0xde, 0x98, 0xde, 0x4f, 0xde, 0x98, 0xde, 0x4f, 0xde, 0x98, - 0xde, 0x4f, 0xdf, 0x98, 0xdf, 0x4f, 0xdf, 0x98, 0xdf, 0x4f, 0xdf, 0x98, - 0xdf, 0x4f, 0xdf, 0x98, 0xdf, 0x4f, 0xe0, 0x99, 0xe0, 0x4f, 0xe0, 0x99, - 0xe0, 0x4f, 0xe0, 0x99, 0xe0, 0x4f, 0xe1, 0x99, 0xe1, 0x4f, 0xe1, 0x99, - 0xe1, 0x4f, 0xe1, 0x99, 0xe1, 0x4f, 0xe1, 0x99, 0xe1, 0x4f, 0xe2, 0x99, - 0xe2, 0x4f, 0xe2, 0x99, 0xe1, 0x4f, 0xe2, 0x99, 0xe2, 0x4f, 0xe2, 0x99, - 0xe1, 0x4f, 0xe3, 0x99, 0xe2, 0x4f, 0xe3, 0x9a, 0xe3, 0x4f, 0xe3, 0x9a, - 0xe3, 0x4f, 0xe3, 0x9a, 0xe3, 0x4f, 0xe4, 0x9a, 0xe4, 0x4f, 0xe4, 0x9a, - 0xe4, 0x4f, 0xe4, 0x9a, 0xe4, 0x4f, 0xe4, 0x9a, 0xe4, 0x4f, 0xe5, 0x9a, - 0xe4, 0x4f, 0xe5, 0x9a, 0xe4, 0x4f, 0xe5, 0x9a, 0xe5, 0x4f, 0xe5, 0x9a, - 0xe5, 0x4f, 0xe6, 0x9a, 0xe6, 0x4f, 0xe6, 0x9a, 0xe6, 0x4f, 0xe6, 0x9a, - 0xe6, 0x4f, 0xe6, 0x9a, 0xe6, 0x4f, 0xe7, 0x9a, 0xe6, 0x4f, 0xe7, 0x9a, - 0xe6, 0x4f, 0xe7, 0x9a, 0xe6, 0x4f, 0xe7, 0x9b, 0xe7, 0x4f, 0xe8, 0x9b, - 0xe8, 0x4f, 0xe8, 0x9b, 0xe8, 0x4f, 0xe8, 0x9b, 0xe8, 0x4f, 0xe8, 0x9b, - 0xe8, 0x4f, 0xe9, 0x9b, 0xe9, 0x4f, 0xe9, 0x9b, 0xe8, 0x4f, 0xe9, 0x9b, - 0xe9, 0x4f, 0xe9, 0x9b, 0xe8, 0x4f, 0xea, 0x9b, 0xe9, 0x4f, 0xea, 0x9b, - 0xe8, 0x4f, 0xea, 0x9b, 0xe9, 0x4f, 0xea, 0x9c, 0xea, 0x4f, 0xeb, 0x9c, - 0xeb, 0x4f, 0xeb, 0x9c, 0xeb, 0x4f, 0xeb, 0x9c, 0xeb, 0x4f, 0xeb, 0x9c, - 0xeb, 0x4f, 0xec, 0x9c, 0xeb, 0x4f, 0xec, 0x9c, 0xeb, 0x4f, 0xec, 0x9c, - 0xeb, 0x4f, 0xec, 0x9c, 0xeb, 0x4f, 0xec, 0x9d, 0xec, 0x4f, 0xed, 0x9d, - 0xed, 0x4f, 0xed, 0x9d, 0xed, 0x4f, 0xed, 0x9d, 0xed, 0x4f, 0xed, 0x9d, - 0xed, 0x4f, 0xee, 0x9d, 0xed, 0x4f, 0xee, 0x9d, 0xed, 0x4f, 0xee, 0x9d, - 0xed, 0x4f, 0xee, 0x9d, 0xed, 0x4f, 0xef, 0x9d, 0xed, 0x4f, 0xef, 0x9e, - 0xef, 0x4f, 0xef, 0x9e, 0xef, 0x4f, 0xef, 0x9e, 0xef, 0x4f, 0xf0, 0x9e, - 0xef, 0x4f, 0xf0, 0x9e, 0xef, 0x4f, 0xf0, 0x9e, 0xef, 0x4f, 0xf0, 0x9e, - 0xef, 0x4f, 0xf1, 0x9e, 0xef, 0x4f, 0xf1, 0x9e, 0xef, 0x4f, 0xf1, 0x9e, - 0xef, 0x4f, 0xf1, 0x9e, 0xef, 0x4f, 0xf2, 0x9f, 0xf2, 0x4f, 0xf2, 0x9f, - 0xf1, 0x4f, 0xf2, 0x9f, 0xf2, 0x4f, 0xf2, 0x9f, 0xf1, 0x4f, 0xf2, 0x9f, - 0xf2, 0x4f, 0xf3, 0x9f, 0xf1, 0x4f, 0xf3, 0x9f, 0xf2, 0x4f, 0xf3, 0x9f, - 0xf1, 0x4f, 0xf3, 0x9f, 0xf2, 0x4f, 0xf4, 0x9f, 0xf4, 0x4f, 0xf4, 0x9f, - 0xf4, 0x4f, 0xf4, 0x9f, 0xf4, 0x4f, 0xf4, 0x9f, 0xf4, 0x4f, 0xf5, 0x9f, - 0xf4, 0x4f, 0xf5, 0x9f, 0xf4, 0x4f, 0xf5, 0x9f, 0xf4, 0x4f, 0xf5, 0x9f, - 0xf4, 0x4f, 0xf5, 0x9f, 0xf4, 0x4f, 0xf6, 0x9f, 0xf4, 0x4f, 0xf6, 0xa0, - 0xf6, 0x4f, 0xf6, 0xa0, 0xf6, 0x4f, 0xf6, 0xa0, 0xf6, 0x4f, 0xf7, 0xa0, - 0xf6, 0x4f, 0xf7, 0xa0, 0xf6, 0x4f, 0xf7, 0xa0, 0xf6, 0x4f, 0xf7, 0xa0, - 0xf6, 0x4f, 0xf8, 0xa0, 0xf6, 0x4f, 0xf8, 0xa0, 0xf6, 0x4f, 0xf8, 0xa1, - 0xf8, 0x4f, 0xf8, 0xa1, 0xf8, 0x4f, 0xf8, 0xa1, 0xf8, 0x4f, 0xf9, 0xa1, - 0xf8, 0x4f, 0xf9, 0xa1, 0xf8, 0x4f, 0xf9, 0xa1, 0xf8, 0x4f, 0xf9, 0xa1, - 0xf8, 0x4f, 0xfa, 0xa1, 0xf8, 0x4f, 0xfa, 0xa1, 0xf8, 0x4f, 0xfa, 0xa2, - 0xfa, 0x4f, 0xfa, 0xa2, 0xfa, 0x4f, 0xfa, 0xa2, 0xfa, 0x4f, 0xfb, 0xa2, - 0xfa, 0x4f, 0xfb, 0xa2, 0xfa, 0x4f, 0xfb, 0xa2, 0xfa, 0x4f, 0xfb, 0xa2, - 0xfa, 0x4f, 0xfc, 0xa2, 0xfa, 0x4f, 0xfc, 0xa2, 0xfa, 0x4f, 0xfc, 0xa2, - 0xfa, 0x4f, 0xfc, 0xa2, 0xfa, 0x4f, 0xfc, 0xa2, 0xfa, 0x4f, 0xfd, 0xa2, - 0xfa, 0x4f, 0xfd, 0xa2, 0xfa, 0x4f, 0xfd, 0xa3, 0xfb, 0x4f, 0xfd, 0xa3, - 0xfc, 0x4f, 0xfe, 0xa3, 0xfb, 0x4f, 0xfe, 0xa3, 0xfc, 0x4f, 0xfe, 0xa3, - 0xfb, 0x4f, 0xfe, 0xa3, 0xfc, 0x4f, 0xfe, 0xa3, 0xfb, 0x4f, 0xff, 0xa3, - 0xfc, 0x4f, 0xff, 0xa3, 0xfb, 0x4f, 0x03, 0xa1, 0x97, 0x4f, 0x0a, 0xa3, - 0x97, 0x4f, 0x0f, 0xa1, 0x97, 0x4f, 0x14, 0xa3, 0x97, 0x4f, 0x17, 0xa1, - 0x97, 0x4f, 0x1b, 0xa3, 0x97, 0x4f, 0x1e, 0xa1, 0x97, 0x4f, 0x20, 0xa3, - 0x97, 0x4f, 0x23, 0xa1, 0x97, 0x4f, 0x25, 0xa3, 0x97, 0x4f, 0x27, 0xa1, - 0x97, 0x4f, 0x29, 0x9d, 0x98, 0x4f, 0x2b, 0xa1, 0x97, 0x4f, 0x2d, 0x9d, - 0x98, 0x4f, 0x2f, 0xa1, 0x97, 0x4f, 0x31, 0x9d, 0x98, 0x4f, 0x32, 0xa1, - 0x97, 0x4f, 0x34, 0x9d, 0x98, 0x4f, 0x35, 0xa1, 0x97, 0x4f, 0x37, 0x9d, - 0x98, 0x4f, 0x38, 0xa1, 0x97, 0x4f, 0x3a, 0x9d, 0x98, 0x4f, 0x3b, 0xa1, - 0x97, 0x4f, 0x3c, 0x9d, 0x98, 0x4f, 0x3e, 0xa1, 0x97, 0x4f, 0x3f, 0x9d, - 0x98, 0x4f, 0x40, 0xa1, 0x97, 0x4f, 0x42, 0x9d, 0x98, 0x4f, 0x43, 0xa1, - 0x97, 0x4f, 0x44, 0x9d, 0x98, 0x4f, 0x45, 0xa1, 0x97, 0x4f, 0x46, 0x9d, - 0x98, 0x4f, 0x47, 0xa1, 0x97, 0x4f, 0x48, 0x9d, 0x98, 0x4f, 0x49, 0xa1, - 0x97, 0x4f, 0x4a, 0x9d, 0x98, 0x4f, 0x4b, 0xa1, 0x97, 0x4f, 0x4c, 0x9d, - 0x98, 0x4f, 0x4d, 0xa1, 0x97, 0x4f, 0x4e, 0x9d, 0x98, 0x4f, 0x4f, 0xa1, - 0x97, 0x4f, 0x50, 0x9d, 0x98, 0x4f, 0x51, 0xa1, 0x97, 0x4f, 0x52, 0x9d, - 0x98, 0x4f, 0x53, 0xa1, 0x97, 0x4f, 0x54, 0x9d, 0x98, 0x4f, 0x55, 0xa1, - 0x97, 0x4f, 0x56, 0x9d, 0x98, 0x4f, 0x57, 0xa1, 0x97, 0x4f, 0x58, 0x9d, - 0x98, 0x4f, 0x58, 0xa1, 0x97, 0x4f, 0x59, 0x9d, 0x98, 0x4f, 0x5a, 0xa1, - 0x97, 0x4f, 0x5b, 0x9d, 0x98, 0x4f, 0x5c, 0xa1, 0x97, 0x4f, 0x5d, 0x9d, - 0x98, 0x4f, 0x5d, 0x9b, 0x98, 0x4f, 0x5e, 0x9d, 0x98, 0x4f, 0x5f, 0x9b, - 0x98, 0x4f, 0x60, 0x9d, 0x98, 0x4f, 0x60, 0x9b, 0x98, 0x4f, 0x61, 0x9d, - 0x98, 0x4f, 0x62, 0x9b, 0x98, 0x4f, 0x63, 0x9d, 0x98, 0x4f, 0x63, 0x9b, - 0x98, 0x4f, 0x64, 0x9d, 0x98, 0x4f, 0x65, 0x9b, 0x98, 0x4f, 0x66, 0x9d, - 0x98, 0x4f, 0x66, 0x9b, 0x98, 0x4f, 0x67, 0x9d, 0x98, 0x4f, 0x68, 0x9b, - 0x98, 0x4f, 0x68, 0x9d, 0x98, 0x4f, 0x69, 0x9b, 0x98, 0x4f, 0x6a, 0x9d, - 0x98, 0x4f, 0x6a, 0x9b, 0x98, 0x4f, 0x6b, 0x9d, 0x98, 0x4f, 0x6c, 0x9b, - 0x98, 0x4f, 0x6c, 0x9d, 0x98, 0x4f, 0x6d, 0x9b, 0x98, 0x4f, 0x6e, 0x9d, - 0x98, 0x4f, 0x6e, 0x9b, 0x98, 0x4f, 0x6f, 0x9d, 0x98, 0x4f, 0x70, 0x9b, - 0x98, 0x4f, 0x70, 0x9d, 0x98, 0x4f, 0x71, 0x9b, 0x98, 0x4f, 0x72, 0x9d, - 0x98, 0x4f, 0x72, 0x9b, 0x98, 0x4f, 0x73, 0x9d, 0x98, 0x4f, 0x73, 0x9b, - 0x98, 0x4f, 0x74, 0x9d, 0x98, 0x4f, 0x75, 0x9b, 0x98, 0x4f, 0x75, 0x9d, - 0x98, 0x4f, 0x76, 0x9b, 0x98, 0x4f, 0x76, 0x9d, 0x98, 0x4f, 0x77, 0x9b, - 0x98, 0x4f, 0x78, 0x9d, 0x98, 0x4f, 0x78, 0x9b, 0x98, 0x4f, 0x79, 0x9d, - 0x98, 0x4f, 0x79, 0x9b, 0x98, 0x4f, 0x7a, 0x9d, 0x98, 0x4f, 0x7a, 0x9b, - 0x98, 0x4f, 0x7b, 0x9d, 0x98, 0x4f, 0x7c, 0x9b, 0x98, 0x4f, 0x7c, 0x9d, - 0x98, 0x4f, 0x7d, 0x9b, 0x98, 0x4f, 0x7d, 0x9d, 0x98, 0x4f, 0x7e, 0x9b, - 0x98, 0x4f, 0x7e, 0x9d, 0x98, 0x4f, 0x7f, 0x9b, 0x98, 0x4f, 0x7f, 0x9d, - 0x98, 0x4f, 0x80, 0x9b, 0x98, 0x4f, 0x81, 0x9d, 0x98, 0x4f, 0x81, 0x9b, - 0x98, 0x4f, 0x82, 0x98, 0x98, 0x4f, 0x82, 0x9b, 0x98, 0x4f, 0x83, 0x98, - 0x98, 0x4f, 0x83, 0x9b, 0x98, 0x4f, 0x84, 0x98, 0x98, 0x4f, 0x84, 0x9b, - 0x98, 0x4f, 0x85, 0x98, 0x98, 0x4f, 0x85, 0x9b, 0x98, 0x4f, 0x86, 0x98, - 0x98, 0x4f, 0x86, 0x9b, 0x98, 0x4f, 0x87, 0x98, 0x98, 0x4f, 0x87, 0x9b, - 0x98, 0x4f, 0x88, 0x98, 0x98, 0x4f, 0x88, 0x9b, 0x98, 0x4f, 0x89, 0x98, - 0x98, 0x4f, 0x89, 0x9b, 0x98, 0x4f, 0x8a, 0x98, 0x98, 0x4f, 0x8a, 0x9b, - 0x98, 0x4f, 0x8b, 0x98, 0x98, 0x4f, 0x8b, 0x9b, 0x98, 0x4f, 0x8c, 0x98, - 0x98, 0x4f, 0x8c, 0x9b, 0x98, 0x4f, 0x8d, 0x98, 0x98, 0x4f, 0x8d, 0x9b, - 0x98, 0x4f, 0x8e, 0x98, 0x98, 0x4f, 0x8e, 0x9b, 0x98, 0x4f, 0x8e, 0x98, - 0x98, 0x4f, 0x8f, 0x9b, 0x98, 0x4f, 0x8f, 0x98, 0x98, 0x4f, 0x90, 0x9b, - 0x98, 0x4f, 0x90, 0x98, 0x98, 0x4f, 0x91, 0x9b, 0x98, 0x4f, 0x91, 0x98, - 0x98, 0x4f, 0x92, 0x98, 0x99, 0x4f, 0x92, 0x98, 0x98, 0x4f, 0x93, 0x98, - 0x99, 0x4f, 0x93, 0x98, 0x98, 0x4f, 0x94, 0x98, 0x99, 0x4f, 0x94, 0x98, - 0x98, 0x4f, 0x94, 0x98, 0x99, 0x4f, 0x95, 0x98, 0x98, 0x4f, 0x95, 0x98, - 0x99, 0x4f, 0x96, 0x98, 0x98, 0x4f, 0x96, 0x98, 0x99, 0x4f, 0x97, 0x98, - 0x98, 0x4f, 0x97, 0x98, 0x99, 0x4f, 0x98, 0x98, 0x98, 0x4f, 0x98, 0x98, - 0x99, 0x4f, 0x98, 0x98, 0x98, 0x4f, 0x98, 0x98, 0x99, 0x4f, 0x98, 0x98, - 0x99, 0x4f, 0x98, 0x98, 0x9a, 0x4f, 0x98, 0x98, 0x9a, 0x4f, 0x9c, 0x98, - 0x9a, 0x51, 0x9d, 0x98, 0x9b, 0x4f, 0x9d, 0x98, 0x9b, 0x4f, 0x9d, 0x98, - 0x9c, 0x4f, 0x9d, 0x98, 0x9c, 0x4f, 0x9d, 0x98, 0x9c, 0x4f, 0x9d, 0x98, - 0x9c, 0x4f, 0x9d, 0x98, 0x9c, 0x4f, 0x9e, 0x98, 0x9c, 0x4f, 0x9e, 0x96, - 0x9d, 0x4f, 0x9f, 0x98, 0x9c, 0x4f, 0x9f, 0x96, 0x9d, 0x4f, 0x9f, 0x98, - 0x9c, 0x4f, 0xa0, 0x96, 0x9d, 0x4f, 0xa0, 0x98, 0x9c, 0x4f, 0xa1, 0x96, - 0x9d, 0x4f, 0xa1, 0x98, 0x9c, 0x4f, 0xa1, 0x96, 0x9d, 0x4f, 0xa2, 0x98, - 0x9c, 0x4f, 0xa2, 0x96, 0x9d, 0x4f, 0xa3, 0x98, 0x9c, 0x4f, 0xa3, 0x96, - 0x9d, 0x4f, 0xa3, 0x98, 0x9c, 0x4f, 0xa4, 0x96, 0x9d, 0x4f, 0xa4, 0x8e, - 0xa4, 0x4f, 0xa5, 0x8e, 0xa5, 0x4f, 0xa5, 0x8f, 0xa8, 0x4f, 0xa5, 0x8f, - 0xa8, 0x4f, 0xa6, 0x8f, 0xa8, 0x4f, 0xa6, 0x8f, 0xa8, 0x4f, 0xa6, 0x8f, - 0xa8, 0x4f, 0xa7, 0x8f, 0xa8, 0x4f, 0xa7, 0x8f, 0xa8, 0x4f, 0xa8, 0x8f, - 0xa8, 0x4f, 0xa8, 0x8f, 0xa8, 0x4f, 0xa8, 0x8f, 0xa8, 0x4f, 0xa9, 0x8f, - 0xa9, 0x4f, 0xa9, 0x8f, 0xa9, 0x4f, 0xaa, 0x90, 0xac, 0x4f, 0xaa, 0x90, - 0xad, 0x4f, 0xaa, 0x90, 0xac, 0x4f, 0xab, 0x90, 0xad, 0x4f, 0xab, 0x90, - 0xac, 0x4f, 0xab, 0x90, 0xad, 0x4f, 0xac, 0x90, 0xac, 0x4f, 0xac, 0x90, - 0xad, 0x4f, 0xac, 0x90, 0xac, 0x4f, 0xad, 0x90, 0xad, 0x4f, 0xad, 0x90, - 0xad, 0x4f, 0xae, 0x90, 0xae, 0x4f, 0xae, 0x90, 0xae, 0x4f, 0xae, 0x91, - 0xb0, 0x4f, 0xaf, 0x91, 0xb1, 0x4f, 0xaf, 0x91, 0xb0, 0x4f, 0xaf, 0x91, - 0xb1, 0x4f, 0xb0, 0x91, 0xb0, 0x4f, 0xb0, 0x91, 0xb1, 0x4f, 0xb0, 0x91, - 0xb0, 0x4f, 0xb1, 0x91, 0xb1, 0x4f, 0xb1, 0x91, 0xb1, 0x4f, 0xb2, 0x91, - 0xb2, 0x4f, 0xb2, 0x91, 0xb2, 0x4f, 0xb2, 0x92, 0xb4, 0x4f, 0xb3, 0x92, - 0xb5, 0x4f, 0xb3, 0x92, 0xb4, 0x4f, 0xb3, 0x92, 0xb5, 0x4f, 0xb4, 0x92, - 0xb4, 0x4f, 0xb4, 0x92, 0xb5, 0x4f, 0xb4, 0x92, 0xb4, 0x4f, 0xb5, 0x92, - 0xb5, 0x4f, 0xb5, 0x92, 0xb5, 0x4f, 0xb5, 0x92, 0xb5, 0x4f, 0xb6, 0x92, - 0xb6, 0x4f, 0xb6, 0x93, 0xb8, 0x4f, 0xb6, 0x93, 0xb8, 0x4f, 0xb7, 0x93, - 0xb8, 0x4f, 0xb7, 0x93, 0xb8, 0x4f, 0xb7, 0x93, 0xb8, 0x4f, 0xb8, 0x93, - 0xb8, 0x4f, 0xb8, 0x93, 0xb8, 0x4f, 0xb8, 0x93, 0xb8, 0x4f, 0xb9, 0x93, - 0xb9, 0x4f, 0xb9, 0x93, 0xb9, 0x4f, 0xb9, 0x93, 0xb9, 0x4f, 0xba, 0x93, - 0xba, 0x4f, 0xba, 0x94, 0xbc, 0x4f, 0xba, 0x94, 0xbc, 0x4f, 0xbb, 0x94, - 0xbc, 0x4f, 0xbb, 0x94, 0xbc, 0x4f, 0xbb, 0x94, 0xbc, 0x4f, 0xbc, 0x94, - 0xbc, 0x4f, 0xbc, 0x94, 0xbc, 0x4f, 0xbc, 0x94, 0xbc, 0x4f, 0xbd, 0x94, - 0xbd, 0x4f, 0xbd, 0x94, 0xbd, 0x4f, 0xbd, 0x94, 0xbd, 0x4f, 0xbe, 0x94, - 0xbe, 0x4f, 0xbe, 0x95, 0xbf, 0x4f, 0xbe, 0x95, 0xc0, 0x4f, 0xbf, 0x95, - 0xbf, 0x4f, 0xbf, 0x95, 0xc0, 0x4f, 0xbf, 0x95, 0xbf, 0x4f, 0xc0, 0x95, - 0xc0, 0x4f, 0xc0, 0x95, 0xc0, 0x4f, 0xc0, 0x95, 0xc0, 0x4f, 0xc1, 0x95, - 0xc1, 0x4f, 0xc1, 0x95, 0xc1, 0x4f, 0xc1, 0x95, 0xc1, 0x4f, 0xc1, 0x96, - 0xc3, 0x4f, 0xc2, 0x96, 0xc3, 0x4f, 0xc2, 0x96, 0xc3, 0x4f, 0xc2, 0x96, - 0xc3, 0x4f, 0xc3, 0x96, 0xc3, 0x4f, 0xc3, 0x96, 0xc3, 0x4f, 0xc3, 0x96, - 0xc3, 0x4f, 0xc4, 0x96, 0xc4, 0x4f, 0xc4, 0x96, 0xc4, 0x4f, 0xc4, 0x96, - 0xc4, 0x4f, 0xc5, 0x96, 0xc5, 0x4f, 0xc5, 0x96, 0xc5, 0x4f, 0xc5, 0x96, - 0xc5, 0x4f, 0xc6, 0x96, 0xc6, 0x4f, 0xc6, 0x97, 0xc6, 0x4f, 0xc6, 0x97, - 0xc7, 0x4f, 0xc6, 0x97, 0xc6, 0x4f, 0xc7, 0x97, 0xc7, 0x4f, 0xc7, 0x97, - 0xc7, 0x4f, 0xc7, 0x97, 0xc7, 0x4f, 0xc8, 0x97, 0xc8, 0x4f, 0xc8, 0x97, - 0xc8, 0x4f, 0xc8, 0x97, 0xc8, 0x4f, 0xc9, 0x97, 0xc9, 0x4f, 0xc9, 0x97, - 0xc9, 0x4f, 0xc9, 0x97, 0xc9, 0x4f, 0xc9, 0x97, 0xc9, 0x4f, 0xca, 0x98, - 0xca, 0x50, 0xca, 0x98, 0xca, 0x50, 0xca, 0x98, 0xca, 0x50, 0xcb, 0x98, - 0xcb, 0x50, 0xcb, 0x98, 0xcb, 0x50, 0xcb, 0x98, 0xcb, 0x50, 0xcc, 0x98, - 0xcc, 0x50, 0xcc, 0x98, 0xcc, 0x50, 0xcc, 0x98, 0xcc, 0x50, 0xcc, 0x98, - 0xcc, 0x50, 0xcd, 0x98, 0xcd, 0x50, 0xcc, 0x98, 0xcd, 0x50, 0xcd, 0x98, - 0xcd, 0x50, 0xce, 0x98, 0xce, 0x51, 0xce, 0x98, 0xce, 0x51, 0xce, 0x98, - 0xce, 0x51, 0xce, 0x98, 0xce, 0x51, 0xcf, 0x98, 0xcf, 0x51, 0xcf, 0x98, - 0xcf, 0x51, 0xcf, 0x98, 0xcf, 0x51, 0xd0, 0x98, 0xd0, 0x51, 0xd0, 0x98, - 0xd0, 0x51, 0xd0, 0x98, 0xd0, 0x51, 0xd0, 0x98, 0xd0, 0x51, 0xd0, 0x98, - 0xd1, 0x51, 0xd0, 0x98, 0xd1, 0x51, 0xd1, 0x98, 0xd1, 0x52, 0xd2, 0x98, - 0xd2, 0x52, 0xd2, 0x98, 0xd2, 0x52, 0xd2, 0x98, 0xd2, 0x52, 0xd2, 0x98, - 0xd2, 0x52, 0xd2, 0x98, 0xd3, 0x52, 0xd2, 0x98, 0xd3, 0x52, 0xd2, 0x98, - 0xd3, 0x52, 0xd4, 0x98, 0xd4, 0x4b, 0xd4, 0x98, 0xd4, 0x4b, 0xd4, 0x98, - 0xd4, 0x4b, 0xd4, 0x98, 0xd4, 0x4b, 0xd5, 0x98, 0xd5, 0x4b, 0xd5, 0x98, - 0xd5, 0x4b, 0xd5, 0x98, 0xd5, 0x4b, 0xd7, 0x98, 0xd6, 0x4c, 0xd7, 0x98, - 0xd6, 0x4c, 0xd7, 0x98, 0xd6, 0x4c, 0xd7, 0x98, 0xd6, 0x4c, 0xd7, 0x98, - 0xd7, 0x4c, 0xd7, 0x98, 0xd7, 0x4c, 0xd7, 0x98, 0xd7, 0x4c, 0xd7, 0x98, - 0xd7, 0x4c, 0xd8, 0x98, 0xd8, 0x4c, 0xd9, 0x98, 0xd8, 0x4d, 0xd9, 0x98, - 0xd8, 0x4d, 0xd9, 0x98, 0xd9, 0x4d, 0xd9, 0x98, 0xd9, 0x4d, 0xd9, 0x98, - 0xd9, 0x4d, 0xd9, 0x98, 0xd9, 0x4d, 0xda, 0x98, 0xda, 0x4d, 0xda, 0x98, - 0xda, 0x4d, 0xda, 0x98, 0xda, 0x4d, 0xda, 0x98, 0xda, 0x4d, 0xdb, 0x98, - 0xdb, 0x4d, 0xdb, 0x98, 0xdb, 0x4e, 0xdc, 0x98, 0xdb, 0x4e, 0xdb, 0x98, - 0xdb, 0x4e, 0xdc, 0x98, 0xdc, 0x4e, 0xdc, 0x98, 0xdc, 0x4e, 0xdc, 0x98, - 0xdc, 0x4e, 0xdd, 0x98, 0xdd, 0x4e, 0xdd, 0x98, 0xdd, 0x4e, 0xdd, 0x98, - 0xdd, 0x4e, 0xdd, 0x98, 0xdd, 0x4e, 0xde, 0x98, 0xde, 0x4e, 0xde, 0x98, - 0xde, 0x4e, 0xde, 0x98, 0xde, 0x4f, 0xde, 0x98, 0xde, 0x4f, 0xdf, 0x98, - 0xdf, 0x4f, 0xdf, 0x98, 0xdf, 0x4f, 0xdf, 0x98, 0xdf, 0x4f, 0xdf, 0x98, - 0xdf, 0x4f, 0xe0, 0x98, 0xe0, 0x4f, 0xe0, 0x98, 0xe0, 0x4f, 0xe0, 0x98, - 0xe0, 0x4f, 0xe1, 0x98, 0xe0, 0x4f, 0xe1, 0x98, 0xe0, 0x4f, 0xe1, 0x99, - 0xe1, 0x4f, 0xe1, 0x99, 0xe1, 0x4f, 0xe2, 0x99, 0xe2, 0x4f, 0xe2, 0x99, - 0xe2, 0x4f, 0xe2, 0x99, 0xe2, 0x4f, 0xe2, 0x99, 0xe2, 0x4f, 0xe3, 0x99, - 0xe3, 0x4f, 0xe3, 0x99, 0xe2, 0x4f, 0xe3, 0x99, 0xe3, 0x4f, 0xe3, 0x99, - 0xe2, 0x4f, 0xe4, 0x99, 0xe3, 0x4f, 0xe4, 0x9a, 0xe4, 0x4f, 0xe4, 0x9a, - 0xe4, 0x4f, 0xe4, 0x9a, 0xe4, 0x4f, 0xe5, 0x9a, 0xe5, 0x4f, 0xe5, 0x9a, - 0xe5, 0x4f, 0xe5, 0x9a, 0xe5, 0x4f, 0xe5, 0x9a, 0xe5, 0x4f, 0xe6, 0x9a, - 0xe5, 0x4f, 0xe6, 0x9a, 0xe5, 0x4f, 0xe6, 0x9a, 0xe5, 0x4f, 0xe6, 0x9b, - 0xe6, 0x4f, 0xe7, 0x9b, 0xe7, 0x4f, 0xe7, 0x9b, 0xe7, 0x4f, 0xe7, 0x9b, - 0xe7, 0x4f, 0xe7, 0x9b, 0xe7, 0x4f, 0xe8, 0x9b, 0xe7, 0x4f, 0xe8, 0x9b, - 0xe7, 0x4f, 0xe8, 0x9b, 0xe7, 0x4f, 0xe8, 0x9b, 0xe7, 0x4f, 0xe9, 0x9c, - 0xe9, 0x4f, 0xe9, 0x9c, 0xe9, 0x4f, 0xe9, 0x9c, 0xe9, 0x4f, 0xe9, 0x9c, - 0xe9, 0x4f, 0xea, 0x9c, 0xea, 0x4f, 0xea, 0x9c, 0xea, 0x4f, 0xea, 0x9c, - 0xea, 0x4f, 0xea, 0x9c, 0xea, 0x4f, 0xeb, 0x9c, 0xea, 0x4f, 0xeb, 0x9c, - 0xea, 0x4f, 0xeb, 0x9c, 0xea, 0x4f, 0xeb, 0x9c, 0xea, 0x4f, 0xec, 0x9d, - 0xec, 0x4f, 0xec, 0x9d, 0xec, 0x4f, 0xec, 0x9d, 0xec, 0x4f, 0xec, 0x9d, - 0xec, 0x4f, 0xec, 0x9d, 0xec, 0x4f, 0xed, 0x9d, 0xec, 0x4f, 0xed, 0x9d, - 0xec, 0x4f, 0xed, 0x9d, 0xec, 0x4f, 0xed, 0x9d, 0xec, 0x4f, 0xee, 0x9d, - 0xee, 0x4f, 0xee, 0x9d, 0xee, 0x4f, 0xee, 0x9d, 0xee, 0x4f, 0xee, 0x9d, - 0xee, 0x4f, 0xef, 0x9d, 0xee, 0x4f, 0xef, 0x9d, 0xee, 0x4f, 0xef, 0x9d, - 0xee, 0x4f, 0xef, 0x9d, 0xee, 0x4f, 0xf0, 0x9d, 0xee, 0x4f, 0xf0, 0x9e, - 0xf0, 0x4f, 0xf0, 0x9e, 0xf0, 0x4f, 0xf0, 0x9e, 0xf0, 0x4f, 0xf1, 0x9e, - 0xf1, 0x4f, 0xf1, 0x9e, 0xf0, 0x4f, 0xf1, 0x9e, 0xf1, 0x4f, 0xf1, 0x9e, - 0xf0, 0x4f, 0xf2, 0x9e, 0xf1, 0x4f, 0xf2, 0x9e, 0xf0, 0x4f, 0xf2, 0x9e, - 0xf1, 0x4f, 0xf2, 0x9e, 0xf0, 0x4f, 0xf2, 0x9e, 0xf1, 0x4f, 0xf3, 0x9f, - 0xf3, 0x4f, 0xf3, 0x9f, 0xf2, 0x4f, 0xf3, 0x9f, 0xf3, 0x4f, 0xf3, 0x9f, - 0xf2, 0x4f, 0xf4, 0x9f, 0xf3, 0x4f, 0xf4, 0x9f, 0xf2, 0x4f, 0xf4, 0x9f, - 0xf3, 0x4f, 0xf4, 0x9f, 0xf2, 0x4f, 0xf5, 0x9f, 0xf3, 0x4f, 0xf5, 0xa0, - 0xf5, 0x4f, 0xf5, 0xa0, 0xf5, 0x4f, 0xf5, 0xa0, 0xf5, 0x4f, 0xf5, 0xa0, - 0xf5, 0x4f, 0xf6, 0xa0, 0xf5, 0x4f, 0xf6, 0xa0, 0xf5, 0x4f, 0xf6, 0xa0, - 0xf5, 0x4f, 0xf6, 0xa0, 0xf5, 0x4f, 0xf7, 0xa0, 0xf5, 0x4f, 0xf7, 0xa1, - 0xf7, 0x4f, 0xf7, 0xa1, 0xf7, 0x4f, 0xf7, 0xa1, 0xf7, 0x4f, 0xf8, 0xa1, - 0xf7, 0x4f, 0xf8, 0xa1, 0xf7, 0x4f, 0xf8, 0xa1, 0xf7, 0x4f, 0xf8, 0xa1, - 0xf7, 0x4f, 0xf8, 0xa1, 0xf7, 0x4f, 0xf9, 0xa1, 0xf7, 0x4f, 0xf9, 0xa1, - 0xf7, 0x4f, 0xf9, 0xa1, 0xf9, 0x4f, 0xf9, 0xa1, 0xf9, 0x4f, 0xfa, 0xa1, - 0xf9, 0x4f, 0xfa, 0xa1, 0xf9, 0x4f, 0xfa, 0xa1, 0xf9, 0x4f, 0xfa, 0xa1, - 0xf9, 0x4f, 0xfa, 0xa1, 0xf9, 0x4f, 0xfb, 0xa1, 0xf9, 0x4f, 0xfb, 0xa1, - 0xf9, 0x4f, 0xfb, 0xa2, 0xfb, 0x4f, 0xfb, 0xa1, 0xf9, 0x4f, 0xfc, 0xa2, - 0xfb, 0x4f, 0xfc, 0xa2, 0xfb, 0x4f, 0xfc, 0xa2, 0xfb, 0x4f, 0xfc, 0xa2, - 0xfb, 0x4f, 0xfc, 0xa2, 0xfb, 0x4f, 0xfd, 0xa2, 0xfb, 0x4f, 0xfd, 0xa2, - 0xfb, 0x4f, 0xfd, 0xa2, 0xfb, 0x4f, 0xfd, 0xa2, 0xfb, 0x4f, 0xfe, 0xa2, - 0xfb, 0x4f, 0xfe, 0xa2, 0xfb, 0x4f, 0xfe, 0xa2, 0xfb, 0x4f, 0xfe, 0xa2, - 0xfb, 0x4f, 0xfe, 0xa2, 0xfb, 0x4f, 0xff, 0xa2, 0xfb, 0x4f, 0xff, 0xa2, - 0xfb, 0x4f, 0x03, 0xa0, 0x97, 0x50, 0x0a, 0xa3, 0x97, 0x50, 0x0f, 0xa0, - 0x97, 0x50, 0x14, 0xa3, 0x97, 0x50, 0x17, 0xa0, 0x97, 0x50, 0x1b, 0xa3, - 0x97, 0x50, 0x1e, 0xa0, 0x97, 0x50, 0x20, 0xa3, 0x97, 0x50, 0x23, 0xa0, - 0x97, 0x50, 0x25, 0xa3, 0x97, 0x50, 0x27, 0xa0, 0x97, 0x50, 0x29, 0x9e, - 0x98, 0x50, 0x2b, 0xa0, 0x97, 0x50, 0x2d, 0x9e, 0x98, 0x50, 0x2f, 0xa0, - 0x97, 0x50, 0x31, 0x9e, 0x98, 0x50, 0x32, 0xa0, 0x97, 0x50, 0x34, 0x9e, - 0x98, 0x50, 0x35, 0xa0, 0x97, 0x50, 0x37, 0x9e, 0x98, 0x50, 0x38, 0xa0, - 0x97, 0x50, 0x3a, 0x9e, 0x98, 0x50, 0x3b, 0xa0, 0x97, 0x50, 0x3c, 0x9e, - 0x98, 0x50, 0x3e, 0xa0, 0x97, 0x50, 0x3f, 0x9e, 0x98, 0x50, 0x40, 0xa0, - 0x97, 0x50, 0x42, 0x9e, 0x98, 0x50, 0x43, 0xa0, 0x97, 0x50, 0x44, 0x9e, - 0x98, 0x50, 0x45, 0xa0, 0x97, 0x50, 0x46, 0x9e, 0x98, 0x50, 0x47, 0xa0, - 0x97, 0x50, 0x48, 0x9e, 0x98, 0x50, 0x49, 0xa0, 0x97, 0x50, 0x4a, 0x9e, - 0x98, 0x50, 0x4b, 0xa0, 0x97, 0x50, 0x4c, 0x9e, 0x98, 0x50, 0x4d, 0xa0, - 0x97, 0x50, 0x4e, 0x9e, 0x98, 0x50, 0x4f, 0xa0, 0x97, 0x50, 0x50, 0x9e, - 0x98, 0x50, 0x51, 0xa0, 0x97, 0x50, 0x52, 0x9e, 0x98, 0x50, 0x53, 0xa0, - 0x97, 0x50, 0x54, 0x9e, 0x98, 0x50, 0x55, 0xa0, 0x97, 0x50, 0x56, 0x9e, - 0x98, 0x50, 0x57, 0xa0, 0x97, 0x50, 0x58, 0x9e, 0x98, 0x50, 0x58, 0xa0, - 0x97, 0x50, 0x59, 0x9e, 0x98, 0x50, 0x5a, 0xa0, 0x97, 0x50, 0x5b, 0x9e, - 0x98, 0x50, 0x5c, 0xa0, 0x97, 0x50, 0x5d, 0x9e, 0x98, 0x50, 0x5d, 0xa0, - 0x97, 0x50, 0x5e, 0x9e, 0x98, 0x50, 0x5f, 0xa0, 0x97, 0x50, 0x60, 0x9e, - 0x98, 0x50, 0x60, 0xa0, 0x97, 0x50, 0x61, 0x9e, 0x98, 0x50, 0x62, 0xa0, - 0x97, 0x50, 0x63, 0x9e, 0x98, 0x50, 0x63, 0xa0, 0x97, 0x50, 0x64, 0x9e, - 0x98, 0x50, 0x65, 0xa0, 0x97, 0x50, 0x66, 0x9e, 0x98, 0x50, 0x66, 0xa0, - 0x97, 0x50, 0x67, 0x9e, 0x98, 0x50, 0x68, 0xa0, 0x97, 0x50, 0x68, 0x9e, - 0x98, 0x50, 0x69, 0xa0, 0x97, 0x50, 0x6a, 0x9e, 0x98, 0x50, 0x6a, 0xa0, - 0x97, 0x50, 0x6b, 0x9e, 0x98, 0x50, 0x6c, 0x9b, 0x98, 0x50, 0x6c, 0x9e, - 0x98, 0x50, 0x6d, 0x9b, 0x98, 0x50, 0x6e, 0x9e, 0x98, 0x50, 0x6e, 0x9b, - 0x98, 0x50, 0x6f, 0x9e, 0x98, 0x50, 0x70, 0x9b, 0x98, 0x50, 0x70, 0x9e, - 0x98, 0x50, 0x71, 0x9b, 0x98, 0x50, 0x72, 0x9e, 0x98, 0x50, 0x72, 0x9b, - 0x98, 0x50, 0x73, 0x9e, 0x98, 0x50, 0x73, 0x9b, 0x98, 0x50, 0x74, 0x9e, - 0x98, 0x50, 0x75, 0x9b, 0x98, 0x50, 0x75, 0x9e, 0x98, 0x50, 0x76, 0x9b, - 0x98, 0x50, 0x76, 0x9e, 0x98, 0x50, 0x77, 0x9b, 0x98, 0x50, 0x78, 0x9e, - 0x98, 0x50, 0x78, 0x9b, 0x98, 0x50, 0x79, 0x9e, 0x98, 0x50, 0x79, 0x9b, - 0x98, 0x50, 0x7a, 0x9e, 0x98, 0x50, 0x7a, 0x9b, 0x98, 0x50, 0x7b, 0x9e, - 0x98, 0x50, 0x7c, 0x9b, 0x98, 0x50, 0x7c, 0x9e, 0x98, 0x50, 0x7d, 0x9b, - 0x98, 0x50, 0x7d, 0x9e, 0x98, 0x50, 0x7e, 0x9b, 0x98, 0x50, 0x7e, 0x9e, - 0x98, 0x50, 0x7f, 0x9b, 0x98, 0x50, 0x7f, 0x9e, 0x98, 0x50, 0x80, 0x9b, - 0x98, 0x50, 0x81, 0x9e, 0x98, 0x50, 0x81, 0x9b, 0x98, 0x50, 0x82, 0x98, - 0x98, 0x50, 0x82, 0x9b, 0x98, 0x50, 0x83, 0x98, 0x98, 0x50, 0x83, 0x9b, - 0x98, 0x50, 0x84, 0x98, 0x98, 0x50, 0x84, 0x9b, 0x98, 0x50, 0x85, 0x98, - 0x98, 0x50, 0x85, 0x9b, 0x98, 0x50, 0x86, 0x98, 0x98, 0x50, 0x86, 0x9b, - 0x98, 0x50, 0x87, 0x98, 0x98, 0x50, 0x87, 0x9b, 0x98, 0x50, 0x88, 0x98, - 0x98, 0x50, 0x88, 0x9b, 0x98, 0x50, 0x89, 0x98, 0x98, 0x50, 0x89, 0x9b, - 0x98, 0x50, 0x8a, 0x98, 0x98, 0x50, 0x8a, 0x9b, 0x98, 0x50, 0x8b, 0x98, - 0x98, 0x50, 0x8b, 0x9b, 0x98, 0x50, 0x8c, 0x98, 0x98, 0x50, 0x8c, 0x9b, - 0x98, 0x50, 0x8d, 0x98, 0x98, 0x50, 0x8d, 0x9b, 0x98, 0x50, 0x8e, 0x98, - 0x98, 0x50, 0x8e, 0x9b, 0x98, 0x50, 0x8e, 0x98, 0x98, 0x50, 0x8f, 0x9b, - 0x98, 0x50, 0x8f, 0x98, 0x98, 0x50, 0x90, 0x9b, 0x98, 0x50, 0x90, 0x98, - 0x98, 0x50, 0x91, 0x9b, 0x98, 0x50, 0x91, 0x98, 0x98, 0x50, 0x92, 0x98, - 0x99, 0x50, 0x92, 0x98, 0x98, 0x50, 0x93, 0x98, 0x99, 0x50, 0x93, 0x98, - 0x98, 0x50, 0x94, 0x98, 0x99, 0x50, 0x94, 0x98, 0x98, 0x50, 0x94, 0x98, - 0x99, 0x50, 0x95, 0x98, 0x98, 0x50, 0x95, 0x98, 0x99, 0x50, 0x96, 0x98, - 0x98, 0x50, 0x96, 0x98, 0x99, 0x50, 0x97, 0x98, 0x98, 0x50, 0x97, 0x98, - 0x99, 0x50, 0x98, 0x98, 0x98, 0x50, 0x98, 0x98, 0x99, 0x50, 0x98, 0x98, - 0x98, 0x4f, 0x98, 0x98, 0x99, 0x50, 0x98, 0x98, 0x99, 0x4f, 0x98, 0x98, - 0x9a, 0x50, 0x98, 0x98, 0x9a, 0x4f, 0x9c, 0x98, 0x9a, 0x51, 0x9d, 0x98, - 0x9b, 0x50, 0x9c, 0x98, 0x9b, 0x51, 0x9d, 0x98, 0x9c, 0x50, 0x9d, 0x98, - 0x9c, 0x50, 0x9d, 0x98, 0x9c, 0x50, 0x9d, 0x98, 0x9c, 0x50, 0x9d, 0x98, - 0x9c, 0x50, 0x9e, 0x98, 0x9c, 0x50, 0x9e, 0x98, 0x9c, 0x50, 0x9f, 0x98, - 0x9c, 0x50, 0x9f, 0x98, 0x9c, 0x50, 0x9f, 0x98, 0x9c, 0x50, 0xa0, 0x95, - 0x9d, 0x50, 0xa0, 0x98, 0x9c, 0x50, 0xa1, 0x95, 0x9d, 0x50, 0xa1, 0x98, - 0x9c, 0x50, 0xa1, 0x95, 0x9d, 0x50, 0xa2, 0x98, 0x9c, 0x50, 0xa2, 0x95, - 0x9d, 0x50, 0xa3, 0x98, 0x9c, 0x50, 0xa3, 0x95, 0x9d, 0x50, 0xa3, 0x98, - 0x9c, 0x50, 0xa4, 0x95, 0x9d, 0x50, 0xa4, 0x98, 0x9c, 0x50, 0xa5, 0x8f, - 0xa6, 0x50, 0xa5, 0x8f, 0xa6, 0x50, 0xa5, 0x8f, 0xa6, 0x50, 0xa6, 0x8f, - 0xa6, 0x50, 0xa6, 0x8f, 0xa6, 0x50, 0xa6, 0x8f, 0xa6, 0x50, 0xa7, 0x8f, - 0xa7, 0x50, 0xa7, 0x90, 0xaa, 0x50, 0xa8, 0x90, 0xab, 0x50, 0xa8, 0x90, - 0xaa, 0x50, 0xa8, 0x90, 0xab, 0x50, 0xa9, 0x90, 0xaa, 0x50, 0xa9, 0x90, - 0xab, 0x50, 0xaa, 0x90, 0xaa, 0x50, 0xaa, 0x90, 0xab, 0x50, 0xaa, 0x90, - 0xaa, 0x50, 0xab, 0x90, 0xab, 0x50, 0xab, 0x90, 0xab, 0x50, 0xab, 0x91, - 0xae, 0x50, 0xac, 0x91, 0xaf, 0x50, 0xac, 0x91, 0xae, 0x50, 0xac, 0x91, - 0xaf, 0x50, 0xad, 0x91, 0xae, 0x50, 0xad, 0x91, 0xaf, 0x50, 0xae, 0x91, - 0xae, 0x50, 0xae, 0x91, 0xaf, 0x50, 0xae, 0x91, 0xae, 0x50, 0xaf, 0x91, - 0xaf, 0x50, 0xaf, 0x91, 0xaf, 0x50, 0xaf, 0x91, 0xaf, 0x50, 0xb0, 0x91, - 0xb0, 0x50, 0xb0, 0x92, 0xb2, 0x50, 0xb0, 0x92, 0xb3, 0x50, 0xb1, 0x92, - 0xb2, 0x50, 0xb1, 0x92, 0xb3, 0x50, 0xb2, 0x92, 0xb2, 0x50, 0xb2, 0x92, - 0xb3, 0x50, 0xb2, 0x92, 0xb2, 0x50, 0xb3, 0x92, 0xb3, 0x50, 0xb3, 0x92, - 0xb3, 0x50, 0xb3, 0x92, 0xb3, 0x50, 0xb4, 0x92, 0xb4, 0x50, 0xb4, 0x93, - 0xb6, 0x50, 0xb4, 0x93, 0xb6, 0x50, 0xb5, 0x93, 0xb6, 0x50, 0xb5, 0x93, - 0xb6, 0x50, 0xb5, 0x93, 0xb6, 0x50, 0xb6, 0x93, 0xb6, 0x50, 0xb6, 0x93, - 0xb6, 0x50, 0xb6, 0x93, 0xb6, 0x50, 0xb7, 0x93, 0xb7, 0x50, 0xb7, 0x93, - 0xb7, 0x50, 0xb7, 0x93, 0xb7, 0x50, 0xb8, 0x93, 0xb8, 0x50, 0xb8, 0x94, - 0xba, 0x50, 0xb8, 0x94, 0xba, 0x50, 0xb9, 0x94, 0xba, 0x50, 0xb9, 0x94, - 0xba, 0x50, 0xb9, 0x94, 0xba, 0x50, 0xba, 0x94, 0xba, 0x50, 0xba, 0x94, - 0xba, 0x50, 0xba, 0x94, 0xba, 0x50, 0xbb, 0x94, 0xbb, 0x50, 0xbb, 0x94, - 0xbb, 0x50, 0xbb, 0x94, 0xbb, 0x50, 0xbc, 0x94, 0xbc, 0x50, 0xbc, 0x94, - 0xbc, 0x50, 0xbc, 0x94, 0xbe, 0x50, 0xbd, 0x94, 0xbe, 0x50, 0xbd, 0x94, - 0xbe, 0x50, 0xbd, 0x94, 0xbe, 0x50, 0xbe, 0x94, 0xbe, 0x50, 0xbe, 0x94, - 0xbe, 0x50, 0xbe, 0x94, 0xbe, 0x50, 0xbf, 0x94, 0xbf, 0x50, 0xbf, 0x94, - 0xbf, 0x50, 0xbf, 0x94, 0xbf, 0x50, 0xc0, 0x94, 0xc0, 0x50, 0xc0, 0x95, - 0xc1, 0x50, 0xc0, 0x95, 0xc1, 0x50, 0xc1, 0x95, 0xc1, 0x50, 0xc1, 0x95, - 0xc1, 0x50, 0xc1, 0x95, 0xc1, 0x50, 0xc1, 0x95, 0xc1, 0x50, 0xc2, 0x95, - 0xc2, 0x50, 0xc2, 0x95, 0xc2, 0x50, 0xc2, 0x95, 0xc2, 0x50, 0xc3, 0x95, - 0xc3, 0x50, 0xc3, 0x95, 0xc3, 0x50, 0xc3, 0x96, 0xc5, 0x50, 0xc4, 0x96, - 0xc5, 0x50, 0xc4, 0x96, 0xc5, 0x50, 0xc4, 0x96, 0xc5, 0x50, 0xc5, 0x96, - 0xc5, 0x50, 0xc5, 0x96, 0xc5, 0x50, 0xc5, 0x96, 0xc5, 0x50, 0xc6, 0x96, - 0xc6, 0x50, 0xc6, 0x96, 0xc6, 0x50, 0xc6, 0x96, 0xc6, 0x50, 0xc6, 0x96, - 0xc6, 0x50, 0xc7, 0x96, 0xc7, 0x50, 0xc7, 0x96, 0xc7, 0x50, 0xc7, 0x97, - 0xc8, 0x50, 0xc8, 0x97, 0xc8, 0x50, 0xc8, 0x97, 0xc8, 0x50, 0xc8, 0x97, - 0xc8, 0x50, 0xc9, 0x97, 0xc9, 0x50, 0xc9, 0x97, 0xc9, 0x50, 0xc9, 0x97, - 0xc9, 0x50, 0xc9, 0x97, 0xc9, 0x50, 0xca, 0x97, 0xca, 0x50, 0xca, 0x97, - 0xca, 0x50, 0xca, 0x97, 0xca, 0x50, 0xcb, 0x97, 0xcb, 0x50, 0xcb, 0x97, - 0xcb, 0x50, 0xcb, 0x98, 0xcb, 0x51, 0xcc, 0x98, 0xcc, 0x51, 0xcc, 0x98, - 0xcc, 0x51, 0xcc, 0x98, 0xcc, 0x51, 0xcc, 0x98, 0xcc, 0x51, 0xcd, 0x98, - 0xcd, 0x51, 0xcd, 0x98, 0xcd, 0x51, 0xcd, 0x98, 0xcd, 0x51, 0xce, 0x98, - 0xce, 0x51, 0xce, 0x98, 0xce, 0x51, 0xce, 0x98, 0xce, 0x51, 0xce, 0x98, - 0xce, 0x51, 0xce, 0x98, 0xcf, 0x51, 0xcf, 0x98, 0xcf, 0x52, 0xcf, 0x98, - 0xcf, 0x52, 0xd0, 0x98, 0xd0, 0x52, 0xd0, 0x98, 0xd0, 0x52, 0xd0, 0x98, - 0xd0, 0x52, 0xd0, 0x98, 0xd0, 0x52, 0xd1, 0x98, 0xd1, 0x52, 0xd1, 0x98, - 0xd1, 0x52, 0xd1, 0x98, 0xd1, 0x52, 0xd1, 0x98, 0xd2, 0x52, 0xd1, 0x98, - 0xd2, 0x52, 0xd1, 0x98, 0xd2, 0x52, 0xd1, 0x98, 0xd2, 0x52, 0xd2, 0x98, - 0xd3, 0x53, 0xd1, 0x98, 0xd3, 0x52, 0xd2, 0x98, 0xd3, 0x53, 0xd2, 0x98, - 0xd4, 0x53, 0xd2, 0x98, 0xd4, 0x53, 0xd5, 0x98, 0xd4, 0x4c, 0xd6, 0x98, - 0xd4, 0x4c, 0xd5, 0x98, 0xd5, 0x4c, 0xd6, 0x98, 0xd5, 0x4c, 0xd5, 0x98, - 0xd5, 0x4c, 0xd6, 0x98, 0xd6, 0x4c, 0xd6, 0x98, 0xd6, 0x4c, 0xd6, 0x98, - 0xd6, 0x4c, 0xd6, 0x98, 0xd6, 0x4c, 0xd8, 0x98, 0xd7, 0x4d, 0xd8, 0x98, - 0xd7, 0x4d, 0xd8, 0x98, 0xd7, 0x4d, 0xd8, 0x98, 0xd7, 0x4d, 0xd8, 0x98, - 0xd8, 0x4d, 0xd8, 0x98, 0xd8, 0x4d, 0xd8, 0x98, 0xd8, 0x4d, 0xd9, 0x98, - 0xd9, 0x4d, 0xd9, 0x98, 0xd9, 0x4d, 0xd9, 0x98, 0xd9, 0x4d, 0xda, 0x98, - 0xd9, 0x4e, 0xdb, 0x98, 0xda, 0x4e, 0xda, 0x98, 0xda, 0x4e, 0xdb, 0x98, - 0xda, 0x4e, 0xda, 0x98, 0xda, 0x4e, 0xdb, 0x98, 0xdb, 0x4e, 0xdb, 0x98, - 0xdb, 0x4e, 0xdb, 0x98, 0xdb, 0x4e, 0xdb, 0x98, 0xdb, 0x4e, 0xdc, 0x98, - 0xdc, 0x4e, 0xdc, 0x98, 0xdc, 0x4e, 0xdd, 0x98, 0xdc, 0x4f, 0xdd, 0x98, - 0xdd, 0x4f, 0xdd, 0x98, 0xdd, 0x4f, 0xdd, 0x98, 0xdd, 0x4f, 0xdd, 0x98, - 0xdd, 0x4f, 0xde, 0x98, 0xde, 0x4f, 0xde, 0x98, 0xde, 0x4f, 0xde, 0x98, - 0xde, 0x4f, 0xde, 0x98, 0xde, 0x4f, 0xdf, 0x98, 0xdf, 0x4f, 0xdf, 0x98, - 0xdf, 0x4f, 0xdf, 0x99, 0xdf, 0x50, 0xdf, 0x99, 0xdf, 0x50, 0xe0, 0x99, - 0xe0, 0x50, 0xe0, 0x99, 0xe0, 0x50, 0xe0, 0x99, 0xe0, 0x50, 0xe1, 0x99, - 0xe1, 0x50, 0xe1, 0x99, 0xe1, 0x50, 0xe1, 0x99, 0xe1, 0x50, 0xe1, 0x99, - 0xe1, 0x50, 0xe2, 0x99, 0xe2, 0x50, 0xe2, 0x99, 0xe1, 0x50, 0xe2, 0x99, - 0xe2, 0x50, 0xe2, 0x9a, 0xe2, 0x50, 0xe3, 0x9a, 0xe3, 0x50, 0xe3, 0x9a, - 0xe3, 0x50, 0xe3, 0x9a, 0xe3, 0x50, 0xe3, 0x9a, 0xe3, 0x50, 0xe4, 0x9a, - 0xe4, 0x50, 0xe4, 0x9a, 0xe4, 0x50, 0xe4, 0x9a, 0xe4, 0x50, 0xe4, 0x9a, - 0xe4, 0x50, 0xe5, 0x9a, 0xe4, 0x50, 0xe5, 0x9a, 0xe4, 0x50, 0xe5, 0x9a, - 0xe5, 0x50, 0xe5, 0x9a, 0xe5, 0x50, 0xe6, 0x9a, 0xe6, 0x50, 0xe6, 0x9a, - 0xe6, 0x50, 0xe6, 0x9a, 0xe6, 0x50, 0xe6, 0x9a, 0xe6, 0x50, 0xe7, 0x9a, - 0xe6, 0x50, 0xe7, 0x9a, 0xe6, 0x50, 0xe7, 0x9a, 0xe6, 0x50, 0xe7, 0x9b, - 0xe7, 0x50, 0xe8, 0x9b, 0xe8, 0x50, 0xe8, 0x9b, 0xe8, 0x50, 0xe8, 0x9b, - 0xe8, 0x50, 0xe8, 0x9b, 0xe8, 0x50, 0xe9, 0x9b, 0xe9, 0x50, 0xe9, 0x9b, - 0xe8, 0x50, 0xe9, 0x9b, 0xe9, 0x50, 0xe9, 0x9b, 0xe8, 0x50, 0xea, 0x9b, - 0xe9, 0x50, 0xea, 0x9c, 0xea, 0x50, 0xea, 0x9c, 0xea, 0x50, 0xea, 0x9c, - 0xea, 0x50, 0xeb, 0x9c, 0xeb, 0x50, 0xeb, 0x9c, 0xeb, 0x50, 0xeb, 0x9c, - 0xeb, 0x50, 0xeb, 0x9c, 0xeb, 0x50, 0xec, 0x9c, 0xeb, 0x50, 0xec, 0x9c, - 0xeb, 0x50, 0xec, 0x9c, 0xeb, 0x50, 0xec, 0x9c, 0xeb, 0x50, 0xec, 0x9d, - 0xec, 0x50, 0xed, 0x9d, 0xed, 0x50, 0xed, 0x9d, 0xed, 0x50, 0xed, 0x9d, - 0xed, 0x50, 0xed, 0x9d, 0xed, 0x50, 0xee, 0x9d, 0xed, 0x50, 0xee, 0x9d, - 0xed, 0x50, 0xee, 0x9d, 0xed, 0x50, 0xee, 0x9d, 0xed, 0x50, 0xef, 0x9d, - 0xed, 0x50, 0xef, 0x9e, 0xef, 0x50, 0xef, 0x9e, 0xef, 0x50, 0xef, 0x9e, - 0xef, 0x50, 0xf0, 0x9e, 0xef, 0x50, 0xf0, 0x9e, 0xef, 0x50, 0xf0, 0x9e, - 0xef, 0x50, 0xf0, 0x9e, 0xef, 0x50, 0xf1, 0x9e, 0xef, 0x50, 0xf1, 0x9e, - 0xef, 0x50, 0xf1, 0x9f, 0xf1, 0x50, 0xf1, 0x9f, 0xf1, 0x50, 0xf2, 0x9f, - 0xf2, 0x50, 0xf2, 0x9f, 0xf1, 0x50, 0xf2, 0x9f, 0xf2, 0x50, 0xf2, 0x9f, - 0xf1, 0x50, 0xf2, 0x9f, 0xf2, 0x50, 0xf3, 0x9f, 0xf1, 0x50, 0xf3, 0x9f, - 0xf2, 0x50, 0xf3, 0x9f, 0xf1, 0x50, 0xf3, 0x9f, 0xf2, 0x50, 0xf4, 0x9f, - 0xf4, 0x50, 0xf4, 0x9f, 0xf4, 0x50, 0xf4, 0x9f, 0xf4, 0x50, 0xf4, 0x9f, - 0xf4, 0x50, 0xf5, 0x9f, 0xf4, 0x50, 0xf5, 0x9f, 0xf4, 0x50, 0xf5, 0x9f, - 0xf4, 0x50, 0xf5, 0x9f, 0xf4, 0x50, 0xf5, 0x9f, 0xf4, 0x50, 0xf6, 0x9f, - 0xf4, 0x50, 0xf6, 0xa0, 0xf6, 0x50, 0xf6, 0xa0, 0xf6, 0x50, 0xf6, 0xa0, - 0xf6, 0x50, 0xf7, 0xa0, 0xf6, 0x50, 0xf7, 0xa0, 0xf6, 0x50, 0xf7, 0xa0, - 0xf6, 0x50, 0xf7, 0xa0, 0xf6, 0x50, 0xf8, 0xa0, 0xf6, 0x50, 0xf8, 0xa0, - 0xf6, 0x50, 0xf8, 0xa1, 0xf8, 0x50, 0xf8, 0xa1, 0xf8, 0x50, 0xf8, 0xa1, - 0xf8, 0x50, 0xf9, 0xa1, 0xf8, 0x50, 0xf9, 0xa1, 0xf8, 0x50, 0xf9, 0xa1, - 0xf8, 0x50, 0xf9, 0xa1, 0xf8, 0x50, 0xfa, 0xa1, 0xf8, 0x50, 0xfa, 0xa1, - 0xf8, 0x50, 0xfa, 0xa2, 0xfa, 0x50, 0xfa, 0xa2, 0xfa, 0x50, 0xfa, 0xa2, - 0xfa, 0x50, 0xfb, 0xa2, 0xfa, 0x50, 0xfb, 0xa2, 0xfa, 0x50, 0xfb, 0xa2, - 0xfa, 0x50, 0xfb, 0xa2, 0xfa, 0x50, 0xfc, 0xa2, 0xfa, 0x50, 0xfc, 0xa2, - 0xfa, 0x50, 0xfc, 0xa2, 0xfa, 0x50, 0xfc, 0xa2, 0xfa, 0x50, 0xfc, 0xa2, - 0xfa, 0x50, 0xfd, 0xa3, 0xfb, 0x50, 0xfd, 0xa3, 0xfc, 0x50, 0xfd, 0xa3, - 0xfb, 0x50, 0xfd, 0xa3, 0xfc, 0x50, 0xfe, 0xa3, 0xfb, 0x50, 0xfe, 0xa3, - 0xfc, 0x50, 0xfe, 0xa3, 0xfb, 0x50, 0xfe, 0xa3, 0xfc, 0x50, 0xfe, 0xa3, - 0xfb, 0x50, 0xff, 0xa3, 0xfc, 0x50, 0xff, 0xa3, 0xfb, 0x50, 0x03, 0xa5, - 0x96, 0x50, 0x0a, 0xa3, 0x97, 0x50, 0x0f, 0xa1, 0x97, 0x50, 0x14, 0xa3, - 0x97, 0x50, 0x17, 0xa1, 0x97, 0x50, 0x1b, 0xa3, 0x97, 0x50, 0x1e, 0xa1, - 0x97, 0x50, 0x20, 0xa3, 0x97, 0x50, 0x23, 0xa1, 0x97, 0x50, 0x25, 0xa3, - 0x97, 0x50, 0x27, 0xa1, 0x97, 0x50, 0x29, 0xa3, 0x97, 0x50, 0x2b, 0xa1, - 0x97, 0x50, 0x2d, 0xa3, 0x97, 0x50, 0x2f, 0xa1, 0x97, 0x50, 0x31, 0xa3, - 0x97, 0x50, 0x32, 0xa1, 0x97, 0x50, 0x34, 0xa3, 0x97, 0x50, 0x35, 0xa1, - 0x97, 0x50, 0x37, 0xa3, 0x97, 0x50, 0x38, 0xa1, 0x97, 0x50, 0x3a, 0xa3, - 0x97, 0x50, 0x3b, 0xa1, 0x97, 0x50, 0x3c, 0xa3, 0x97, 0x50, 0x3e, 0xa1, - 0x97, 0x50, 0x3f, 0xa3, 0x97, 0x50, 0x40, 0xa1, 0x97, 0x50, 0x42, 0x9d, - 0x98, 0x50, 0x43, 0xa1, 0x97, 0x50, 0x44, 0x9d, 0x98, 0x50, 0x45, 0xa1, - 0x97, 0x50, 0x46, 0x9d, 0x98, 0x50, 0x47, 0xa1, 0x97, 0x50, 0x48, 0x9d, - 0x98, 0x50, 0x49, 0xa1, 0x97, 0x50, 0x4a, 0x9d, 0x98, 0x50, 0x4b, 0xa1, - 0x97, 0x50, 0x4c, 0x9d, 0x98, 0x50, 0x4d, 0xa1, 0x97, 0x50, 0x4e, 0x9d, - 0x98, 0x50, 0x4f, 0xa1, 0x97, 0x50, 0x50, 0x9d, 0x98, 0x50, 0x51, 0xa1, - 0x97, 0x50, 0x52, 0x9d, 0x98, 0x50, 0x53, 0xa1, 0x97, 0x50, 0x54, 0x9d, - 0x98, 0x50, 0x55, 0xa1, 0x97, 0x50, 0x56, 0x9d, 0x98, 0x50, 0x57, 0xa1, - 0x97, 0x50, 0x58, 0x9d, 0x98, 0x50, 0x58, 0xa1, 0x97, 0x50, 0x59, 0x9d, - 0x98, 0x50, 0x5a, 0xa1, 0x97, 0x50, 0x5b, 0x9d, 0x98, 0x50, 0x5c, 0xa1, - 0x97, 0x50, 0x5d, 0x9d, 0x98, 0x50, 0x5d, 0xa1, 0x97, 0x50, 0x5e, 0x9d, - 0x98, 0x50, 0x5f, 0xa1, 0x97, 0x50, 0x60, 0x9d, 0x98, 0x50, 0x60, 0xa1, - 0x97, 0x50, 0x61, 0x9d, 0x98, 0x50, 0x62, 0xa1, 0x97, 0x50, 0x63, 0x9d, - 0x98, 0x50, 0x63, 0xa1, 0x97, 0x50, 0x64, 0x9d, 0x98, 0x50, 0x65, 0xa1, - 0x97, 0x50, 0x66, 0x9d, 0x98, 0x50, 0x66, 0x9b, 0x98, 0x50, 0x67, 0x9d, - 0x98, 0x50, 0x68, 0x9b, 0x98, 0x50, 0x68, 0x9d, 0x98, 0x50, 0x69, 0x9b, - 0x98, 0x50, 0x6a, 0x9d, 0x98, 0x50, 0x6a, 0x9b, 0x98, 0x50, 0x6b, 0x9d, - 0x98, 0x50, 0x6c, 0x9b, 0x98, 0x50, 0x6c, 0x9d, 0x98, 0x50, 0x6d, 0x9b, - 0x98, 0x50, 0x6e, 0x9d, 0x98, 0x50, 0x6e, 0x9b, 0x98, 0x50, 0x6f, 0x9d, - 0x98, 0x50, 0x70, 0x9b, 0x98, 0x50, 0x70, 0x9d, 0x98, 0x50, 0x71, 0x9b, - 0x98, 0x50, 0x72, 0x9d, 0x98, 0x50, 0x72, 0x9b, 0x98, 0x50, 0x73, 0x9d, - 0x98, 0x50, 0x73, 0x9b, 0x98, 0x50, 0x74, 0x9d, 0x98, 0x50, 0x75, 0x9b, - 0x98, 0x50, 0x75, 0x9d, 0x98, 0x50, 0x76, 0x9b, 0x98, 0x50, 0x76, 0x9d, - 0x98, 0x50, 0x77, 0x9b, 0x98, 0x50, 0x78, 0x9d, 0x98, 0x50, 0x78, 0x9b, - 0x98, 0x50, 0x79, 0x9d, 0x98, 0x50, 0x79, 0x9b, 0x98, 0x50, 0x7a, 0x9d, - 0x98, 0x50, 0x7a, 0x9b, 0x98, 0x50, 0x7b, 0x9d, 0x98, 0x50, 0x7c, 0x9b, - 0x98, 0x50, 0x7c, 0x9d, 0x98, 0x50, 0x7d, 0x9b, 0x98, 0x50, 0x7d, 0x9d, - 0x98, 0x50, 0x7e, 0x9b, 0x98, 0x50, 0x7e, 0x9d, 0x98, 0x50, 0x7f, 0x9b, - 0x98, 0x50, 0x7f, 0x9d, 0x98, 0x50, 0x80, 0x9b, 0x98, 0x50, 0x81, 0x9d, - 0x98, 0x50, 0x81, 0x9b, 0x98, 0x50, 0x82, 0x9d, 0x98, 0x50, 0x82, 0x9b, - 0x98, 0x50, 0x83, 0x9d, 0x98, 0x50, 0x83, 0x9b, 0x98, 0x50, 0x84, 0x9d, - 0x98, 0x50, 0x84, 0x9b, 0x98, 0x50, 0x85, 0x9d, 0x98, 0x50, 0x85, 0x9b, - 0x98, 0x50, 0x86, 0x9d, 0x98, 0x50, 0x86, 0x9b, 0x98, 0x50, 0x87, 0x9d, - 0x98, 0x50, 0x87, 0x9b, 0x98, 0x50, 0x88, 0x98, 0x98, 0x50, 0x88, 0x9b, - 0x98, 0x50, 0x89, 0x98, 0x98, 0x50, 0x89, 0x9b, 0x98, 0x50, 0x8a, 0x98, - 0x98, 0x50, 0x8a, 0x9b, 0x98, 0x50, 0x8b, 0x98, 0x98, 0x50, 0x8b, 0x9b, - 0x98, 0x50, 0x8c, 0x98, 0x98, 0x50, 0x8c, 0x9b, 0x98, 0x50, 0x8d, 0x98, - 0x98, 0x50, 0x8d, 0x9b, 0x98, 0x50, 0x8e, 0x98, 0x98, 0x50, 0x8e, 0x9b, - 0x98, 0x50, 0x8e, 0x98, 0x98, 0x50, 0x8f, 0x9b, 0x98, 0x50, 0x8f, 0x98, - 0x98, 0x50, 0x90, 0x9b, 0x98, 0x50, 0x90, 0x98, 0x98, 0x50, 0x91, 0x9b, - 0x98, 0x50, 0x91, 0x98, 0x98, 0x50, 0x92, 0x9b, 0x98, 0x50, 0x92, 0x98, - 0x98, 0x50, 0x93, 0x9b, 0x98, 0x50, 0x93, 0x98, 0x98, 0x50, 0x94, 0x9b, - 0x98, 0x50, 0x94, 0x98, 0x98, 0x50, 0x94, 0x9b, 0x98, 0x50, 0x95, 0x98, - 0x98, 0x50, 0x95, 0x98, 0x99, 0x50, 0x96, 0x98, 0x98, 0x50, 0x96, 0x98, - 0x99, 0x50, 0x97, 0x98, 0x98, 0x50, 0x97, 0x98, 0x99, 0x50, 0x98, 0x98, - 0x98, 0x50, 0x98, 0x98, 0x99, 0x50, 0x98, 0x98, 0x98, 0x4f, 0x98, 0x98, - 0x99, 0x50, 0x98, 0x98, 0x99, 0x4f, 0x98, 0x98, 0x9a, 0x50, 0x98, 0x98, - 0x9a, 0x4f, 0x9c, 0x98, 0x9a, 0x51, 0x9d, 0x98, 0x9b, 0x50, 0x9c, 0x98, - 0x9b, 0x51, 0x9d, 0x98, 0x9c, 0x50, 0x9d, 0x98, 0x9c, 0x50, 0x9d, 0x98, - 0x9c, 0x50, 0x9d, 0x98, 0x9c, 0x50, 0x9d, 0x98, 0x9c, 0x50, 0x9e, 0x98, - 0x9c, 0x50, 0x9e, 0x98, 0x9c, 0x50, 0x9f, 0x98, 0x9c, 0x50, 0x9f, 0x98, - 0x9c, 0x50, 0x9f, 0x98, 0x9c, 0x50, 0xa0, 0x96, 0x9d, 0x50, 0xa0, 0x98, - 0x9c, 0x50, 0xa1, 0x96, 0x9d, 0x50, 0xa1, 0x98, 0x9c, 0x50, 0xa1, 0x96, - 0x9d, 0x50, 0xa2, 0x98, 0x9c, 0x50, 0xa2, 0x96, 0x9d, 0x50, 0xa3, 0x98, - 0x9c, 0x50, 0xa3, 0x96, 0x9d, 0x50, 0xa3, 0x98, 0x9c, 0x50, 0xa4, 0x96, - 0x9d, 0x50, 0xa4, 0x98, 0x9c, 0x50, 0xa5, 0x96, 0x9d, 0x50, 0xa5, 0x8f, - 0xa8, 0x50, 0xa5, 0x8f, 0xa8, 0x50, 0xa6, 0x8f, 0xa8, 0x50, 0xa6, 0x8f, - 0xa8, 0x50, 0xa6, 0x8f, 0xa8, 0x50, 0xa7, 0x8f, 0xa8, 0x50, 0xa7, 0x8f, - 0xa8, 0x50, 0xa8, 0x8f, 0xa8, 0x50, 0xa8, 0x8f, 0xa8, 0x50, 0xa8, 0x8f, - 0xa8, 0x50, 0xa9, 0x8f, 0xa9, 0x50, 0xa9, 0x8f, 0xa9, 0x50, 0xaa, 0x90, - 0xac, 0x50, 0xaa, 0x90, 0xad, 0x50, 0xaa, 0x90, 0xac, 0x50, 0xab, 0x90, - 0xad, 0x50, 0xab, 0x90, 0xac, 0x50, 0xab, 0x90, 0xad, 0x50, 0xac, 0x90, - 0xac, 0x50, 0xac, 0x90, 0xad, 0x50, 0xac, 0x90, 0xac, 0x50, 0xad, 0x90, - 0xad, 0x50, 0xad, 0x90, 0xad, 0x50, 0xae, 0x91, 0xb0, 0x50, 0xae, 0x91, - 0xb1, 0x50, 0xae, 0x91, 0xb0, 0x50, 0xaf, 0x91, 0xb1, 0x50, 0xaf, 0x91, - 0xb0, 0x50, 0xaf, 0x91, 0xb1, 0x50, 0xb0, 0x91, 0xb0, 0x50, 0xb0, 0x91, - 0xb1, 0x50, 0xb0, 0x91, 0xb0, 0x50, 0xb1, 0x91, 0xb1, 0x50, 0xb1, 0x91, - 0xb1, 0x50, 0xb2, 0x91, 0xb2, 0x50, 0xb2, 0x91, 0xb2, 0x50, 0xb2, 0x92, - 0xb4, 0x50, 0xb3, 0x92, 0xb5, 0x50, 0xb3, 0x92, 0xb4, 0x50, 0xb3, 0x92, - 0xb5, 0x50, 0xb4, 0x92, 0xb4, 0x50, 0xb4, 0x92, 0xb5, 0x50, 0xb4, 0x92, - 0xb4, 0x50, 0xb5, 0x92, 0xb5, 0x50, 0xb5, 0x92, 0xb5, 0x50, 0xb5, 0x92, - 0xb5, 0x50, 0xb6, 0x92, 0xb6, 0x50, 0xb6, 0x93, 0xb8, 0x50, 0xb6, 0x93, - 0xb8, 0x50, 0xb7, 0x93, 0xb8, 0x50, 0xb7, 0x93, 0xb8, 0x50, 0xb7, 0x93, - 0xb8, 0x50, 0xb8, 0x93, 0xb8, 0x50, 0xb8, 0x93, 0xb8, 0x50, 0xb8, 0x93, - 0xb8, 0x50, 0xb9, 0x93, 0xb9, 0x50, 0xb9, 0x93, 0xb9, 0x50, 0xb9, 0x93, - 0xb9, 0x50, 0xba, 0x94, 0xbc, 0x50, 0xba, 0x94, 0xbc, 0x50, 0xba, 0x94, - 0xbc, 0x50, 0xbb, 0x94, 0xbc, 0x50, 0xbb, 0x94, 0xbc, 0x50, 0xbb, 0x94, - 0xbc, 0x50, 0xbc, 0x94, 0xbc, 0x50, 0xbc, 0x94, 0xbc, 0x50, 0xbc, 0x94, - 0xbc, 0x50, 0xbd, 0x94, 0xbd, 0x50, 0xbd, 0x94, 0xbd, 0x50, 0xbd, 0x94, - 0xbd, 0x50, 0xbe, 0x94, 0xbe, 0x50, 0xbe, 0x95, 0xbf, 0x50, 0xbe, 0x95, - 0xc0, 0x50, 0xbf, 0x95, 0xbf, 0x50, 0xbf, 0x95, 0xc0, 0x50, 0xbf, 0x95, - 0xbf, 0x50, 0xc0, 0x95, 0xc0, 0x50, 0xc0, 0x95, 0xc0, 0x50, 0xc0, 0x95, - 0xc0, 0x50, 0xc1, 0x95, 0xc1, 0x50, 0xc1, 0x95, 0xc1, 0x50, 0xc1, 0x95, - 0xc1, 0x50, 0xc1, 0x96, 0xc3, 0x50, 0xc2, 0x96, 0xc3, 0x50, 0xc2, 0x96, - 0xc3, 0x50, 0xc2, 0x96, 0xc3, 0x50, 0xc3, 0x96, 0xc3, 0x50, 0xc3, 0x96, - 0xc3, 0x50, 0xc3, 0x96, 0xc3, 0x50, 0xc4, 0x96, 0xc4, 0x50, 0xc4, 0x96, - 0xc4, 0x50, 0xc4, 0x96, 0xc4, 0x50, 0xc5, 0x96, 0xc5, 0x50, 0xc5, 0x96, - 0xc5, 0x50, 0xc5, 0x97, 0xc6, 0x50, 0xc6, 0x97, 0xc7, 0x50, 0xc6, 0x97, - 0xc6, 0x50, 0xc6, 0x97, 0xc7, 0x50, 0xc6, 0x97, 0xc6, 0x50, 0xc7, 0x97, - 0xc7, 0x50, 0xc7, 0x97, 0xc7, 0x50, 0xc7, 0x97, 0xc7, 0x50, 0xc8, 0x97, - 0xc8, 0x50, 0xc8, 0x97, 0xc8, 0x50, 0xc8, 0x97, 0xc8, 0x50, 0xc9, 0x97, - 0xc9, 0x50, 0xc9, 0x97, 0xc9, 0x50, 0xc9, 0x98, 0xca, 0x50, 0xc9, 0x98, - 0xca, 0x50, 0xca, 0x98, 0xca, 0x50, 0xca, 0x98, 0xca, 0x50, 0xca, 0x98, - 0xca, 0x50, 0xcb, 0x98, 0xcb, 0x50, 0xcb, 0x98, 0xcb, 0x50, 0xcb, 0x98, - 0xcb, 0x50, 0xcc, 0x98, 0xcc, 0x50, 0xcc, 0x98, 0xcc, 0x50, 0xcc, 0x98, - 0xcc, 0x50, 0xcc, 0x98, 0xcc, 0x50, 0xcd, 0x98, 0xcd, 0x50, 0xcd, 0x98, - 0xcd, 0x51, 0xcd, 0x98, 0xcd, 0x51, 0xce, 0x98, 0xce, 0x51, 0xce, 0x98, - 0xce, 0x51, 0xce, 0x98, 0xce, 0x51, 0xce, 0x98, 0xce, 0x51, 0xcf, 0x98, - 0xcf, 0x51, 0xcf, 0x98, 0xcf, 0x51, 0xcf, 0x98, 0xcf, 0x51, 0xd0, 0x98, - 0xd0, 0x51, 0xd0, 0x98, 0xd0, 0x51, 0xd0, 0x98, 0xd0, 0x51, 0xd0, 0x98, - 0xd0, 0x51, 0xd1, 0x98, 0xd1, 0x52, 0xd1, 0x98, 0xd1, 0x52, 0xd1, 0x98, - 0xd1, 0x52, 0xd2, 0x98, 0xd2, 0x52, 0xd2, 0x98, 0xd2, 0x52, 0xd2, 0x98, - 0xd2, 0x52, 0xd2, 0x98, 0xd2, 0x52, 0xd2, 0x98, 0xd3, 0x52, 0xd2, 0x98, - 0xd3, 0x52, 0xd2, 0x98, 0xd3, 0x52, 0xd2, 0x98, 0xd4, 0x52, 0xd2, 0x98, - 0xd4, 0x52, 0xd2, 0x98, 0xd4, 0x52, 0xd2, 0x98, 0xd4, 0x52, 0xd5, 0x98, - 0xd5, 0x4b, 0xd5, 0x98, 0xd5, 0x4b, 0xd5, 0x98, 0xd5, 0x4b, 0xd7, 0x98, - 0xd6, 0x4c, 0xd7, 0x98, 0xd6, 0x4c, 0xd7, 0x98, 0xd6, 0x4c, 0xd7, 0x98, - 0xd6, 0x4c, 0xd7, 0x98, 0xd7, 0x4c, 0xd7, 0x98, 0xd7, 0x4c, 0xd7, 0x98, - 0xd7, 0x4c, 0xd7, 0x98, 0xd7, 0x4c, 0xd8, 0x98, 0xd8, 0x4c, 0xd9, 0x98, - 0xd8, 0x4d, 0xd9, 0x98, 0xd8, 0x4d, 0xd9, 0x98, 0xd9, 0x4d, 0xd9, 0x98, - 0xd9, 0x4d, 0xd9, 0x98, 0xd9, 0x4d, 0xd9, 0x98, 0xd9, 0x4d, 0xda, 0x98, - 0xda, 0x4d, 0xda, 0x98, 0xda, 0x4d, 0xda, 0x98, 0xda, 0x4d, 0xdb, 0x98, - 0xda, 0x4e, 0xdc, 0x98, 0xdb, 0x4e, 0xdb, 0x98, 0xdb, 0x4e, 0xdc, 0x98, - 0xdb, 0x4e, 0xdb, 0x98, 0xdb, 0x4e, 0xdc, 0x98, 0xdc, 0x4e, 0xdc, 0x98, - 0xdc, 0x4e, 0xdc, 0x98, 0xdc, 0x4e, 0xdd, 0x98, 0xdd, 0x4e, 0xdd, 0x98, - 0xdd, 0x4e, 0xdd, 0x98, 0xdd, 0x4e, 0xdd, 0x98, 0xdd, 0x4e, 0xde, 0x98, - 0xde, 0x4f, 0xde, 0x98, 0xde, 0x4f, 0xde, 0x98, 0xde, 0x4f, 0xde, 0x98, - 0xde, 0x4f, 0xdf, 0x98, 0xdf, 0x4f, 0xdf, 0x98, 0xdf, 0x4f, 0xdf, 0x98, - 0xdf, 0x4f, 0xdf, 0x98, 0xdf, 0x4f, 0xe0, 0x98, 0xe0, 0x4f, 0xe0, 0x98, - 0xe0, 0x4f, 0xe0, 0x98, 0xe0, 0x4f, 0xe1, 0x99, 0xe1, 0x50, 0xe1, 0x99, - 0xe1, 0x50, 0xe1, 0x99, 0xe1, 0x50, 0xe1, 0x99, 0xe1, 0x50, 0xe2, 0x99, - 0xe2, 0x50, 0xe2, 0x99, 0xe2, 0x50, 0xe2, 0x99, 0xe2, 0x50, 0xe2, 0x99, - 0xe2, 0x50, 0xe3, 0x99, 0xe3, 0x50, 0xe3, 0x99, 0xe2, 0x50, 0xe3, 0x99, - 0xe3, 0x50, 0xe3, 0x9a, 0xe3, 0x50, 0xe4, 0x9a, 0xe4, 0x50, 0xe4, 0x9a, - 0xe4, 0x50, 0xe4, 0x9a, 0xe4, 0x50, 0xe4, 0x9a, 0xe4, 0x50, 0xe5, 0x9a, - 0xe5, 0x50, 0xe5, 0x9a, 0xe5, 0x50, 0xe5, 0x9a, 0xe5, 0x50, 0xe5, 0x9a, - 0xe5, 0x50, 0xe6, 0x9a, 0xe5, 0x50, 0xe6, 0x9a, 0xe5, 0x50, 0xe6, 0x9a, - 0xe5, 0x50, 0xe6, 0x9b, 0xe6, 0x50, 0xe7, 0x9b, 0xe7, 0x50, 0xe7, 0x9b, - 0xe7, 0x50, 0xe7, 0x9b, 0xe7, 0x50, 0xe7, 0x9b, 0xe7, 0x50, 0xe8, 0x9b, - 0xe7, 0x50, 0xe8, 0x9b, 0xe7, 0x50, 0xe8, 0x9b, 0xe7, 0x50, 0xe8, 0x9b, - 0xe7, 0x50, 0xe9, 0x9c, 0xe9, 0x50, 0xe9, 0x9c, 0xe9, 0x50, 0xe9, 0x9c, - 0xe9, 0x50, 0xe9, 0x9c, 0xe9, 0x50, 0xea, 0x9c, 0xea, 0x50, 0xea, 0x9c, - 0xea, 0x50, 0xea, 0x9c, 0xea, 0x50, 0xea, 0x9c, 0xea, 0x50, 0xeb, 0x9c, - 0xea, 0x50, 0xeb, 0x9c, 0xea, 0x50, 0xeb, 0x9d, 0xeb, 0x50, 0xeb, 0x9d, - 0xeb, 0x50, 0xec, 0x9d, 0xec, 0x50, 0xec, 0x9d, 0xec, 0x50, 0xec, 0x9d, - 0xec, 0x50, 0xec, 0x9d, 0xec, 0x50, 0xec, 0x9d, 0xec, 0x50, 0xed, 0x9d, - 0xec, 0x50, 0xed, 0x9d, 0xec, 0x50, 0xed, 0x9d, 0xec, 0x50, 0xed, 0x9d, - 0xec, 0x50, 0xee, 0x9d, 0xee, 0x50, 0xee, 0x9d, 0xee, 0x50, 0xee, 0x9d, - 0xee, 0x50, 0xee, 0x9d, 0xee, 0x50, 0xef, 0x9d, 0xee, 0x50, 0xef, 0x9d, - 0xee, 0x50, 0xef, 0x9d, 0xee, 0x50, 0xef, 0x9d, 0xee, 0x50, 0xf0, 0x9d, - 0xee, 0x50, 0xf0, 0x9e, 0xf0, 0x50, 0xf0, 0x9e, 0xf0, 0x50, 0xf0, 0x9e, - 0xf0, 0x50, 0xf1, 0x9e, 0xf1, 0x50, 0xf1, 0x9e, 0xf0, 0x50, 0xf1, 0x9e, - 0xf1, 0x50, 0xf1, 0x9e, 0xf0, 0x50, 0xf2, 0x9e, 0xf1, 0x50, 0xf2, 0x9e, - 0xf0, 0x50, 0xf2, 0x9e, 0xf1, 0x50, 0xf2, 0x9f, 0xf2, 0x50, 0xf2, 0x9f, - 0xf2, 0x50, 0xf3, 0x9f, 0xf3, 0x50, 0xf3, 0x9f, 0xf2, 0x50, 0xf3, 0x9f, - 0xf3, 0x50, 0xf3, 0x9f, 0xf2, 0x50, 0xf4, 0x9f, 0xf3, 0x50, 0xf4, 0x9f, - 0xf2, 0x50, 0xf4, 0x9f, 0xf3, 0x50, 0xf4, 0x9f, 0xf2, 0x50, 0xf5, 0x9f, - 0xf3, 0x50, 0xf5, 0xa0, 0xf5, 0x50, 0xf5, 0xa0, 0xf5, 0x50, 0xf5, 0xa0, - 0xf5, 0x50, 0xf5, 0xa0, 0xf5, 0x50, 0xf6, 0xa0, 0xf5, 0x50, 0xf6, 0xa0, - 0xf5, 0x50, 0xf6, 0xa0, 0xf5, 0x50, 0xf6, 0xa0, 0xf5, 0x50, 0xf7, 0xa0, - 0xf5, 0x50, 0xf7, 0xa1, 0xf7, 0x50, 0xf7, 0xa1, 0xf7, 0x50, 0xf7, 0xa1, - 0xf7, 0x50, 0xf8, 0xa1, 0xf7, 0x50, 0xf8, 0xa1, 0xf7, 0x50, 0xf8, 0xa1, - 0xf7, 0x50, 0xf8, 0xa1, 0xf7, 0x50, 0xf8, 0xa1, 0xf7, 0x50, 0xf9, 0xa1, - 0xf7, 0x50, 0xf9, 0xa1, 0xf7, 0x50, 0xf9, 0xa1, 0xf9, 0x50, 0xf9, 0xa1, - 0xf9, 0x50, 0xfa, 0xa1, 0xf9, 0x50, 0xfa, 0xa1, 0xf9, 0x50, 0xfa, 0xa1, - 0xf9, 0x50, 0xfa, 0xa1, 0xf9, 0x50, 0xfa, 0xa1, 0xf9, 0x50, 0xfb, 0xa1, - 0xf9, 0x50, 0xfb, 0xa1, 0xf9, 0x50, 0xfb, 0xa2, 0xfb, 0x50, 0xfb, 0xa2, - 0xfb, 0x50, 0xfc, 0xa2, 0xfb, 0x50, 0xfc, 0xa2, 0xfb, 0x50, 0xfc, 0xa2, - 0xfb, 0x50, 0xfc, 0xa2, 0xfb, 0x50, 0xfc, 0xa2, 0xfb, 0x50, 0xfd, 0xa2, - 0xfb, 0x50, 0xfd, 0xa2, 0xfb, 0x50, 0xfd, 0xa2, 0xfb, 0x50, 0xfd, 0xa2, - 0xfb, 0x50, 0xfe, 0xa2, 0xfb, 0x50, 0xfe, 0xa2, 0xfb, 0x50, 0xfe, 0xa2, - 0xfb, 0x50, 0xfe, 0xa2, 0xfb, 0x50, 0xfe, 0xa2, 0xfb, 0x50, 0xff, 0xa2, - 0xfb, 0x50, 0xff, 0xa2, 0xfb, 0x50, 0x03, 0xa0, 0x97, 0x51, 0x0a, 0xa3, - 0x97, 0x51, 0x0f, 0xa0, 0x97, 0x51, 0x14, 0xa3, 0x97, 0x51, 0x17, 0xa0, - 0x97, 0x51, 0x1b, 0xa3, 0x97, 0x51, 0x1e, 0xa0, 0x97, 0x51, 0x20, 0xa3, - 0x97, 0x51, 0x23, 0xa0, 0x97, 0x51, 0x25, 0xa3, 0x97, 0x51, 0x27, 0xa0, - 0x97, 0x51, 0x29, 0xa3, 0x97, 0x51, 0x2b, 0xa0, 0x97, 0x51, 0x2d, 0xa3, - 0x97, 0x51, 0x2f, 0xa0, 0x97, 0x51, 0x31, 0xa3, 0x97, 0x51, 0x32, 0xa0, - 0x97, 0x51, 0x34, 0xa3, 0x97, 0x51, 0x35, 0xa0, 0x97, 0x51, 0x37, 0xa3, - 0x97, 0x51, 0x38, 0xa0, 0x97, 0x51, 0x3a, 0xa3, 0x97, 0x51, 0x3b, 0xa0, - 0x97, 0x51, 0x3c, 0xa3, 0x97, 0x51, 0x3e, 0xa0, 0x97, 0x51, 0x3f, 0xa3, - 0x97, 0x51, 0x40, 0xa0, 0x97, 0x51, 0x42, 0x9e, 0x98, 0x51, 0x43, 0xa0, - 0x97, 0x51, 0x44, 0x9e, 0x98, 0x51, 0x45, 0xa0, 0x97, 0x51, 0x46, 0x9e, - 0x98, 0x51, 0x47, 0xa0, 0x97, 0x51, 0x48, 0x9e, 0x98, 0x51, 0x49, 0xa0, - 0x97, 0x51, 0x4a, 0x9e, 0x98, 0x51, 0x4b, 0xa0, 0x97, 0x51, 0x4c, 0x9e, - 0x98, 0x51, 0x4d, 0xa0, 0x97, 0x51, 0x4e, 0x9e, 0x98, 0x51, 0x4f, 0xa0, - 0x97, 0x51, 0x50, 0x9e, 0x98, 0x51, 0x51, 0xa0, 0x97, 0x51, 0x52, 0x9e, - 0x98, 0x51, 0x53, 0xa0, 0x97, 0x51, 0x54, 0x9e, 0x98, 0x51, 0x55, 0xa0, - 0x97, 0x51, 0x56, 0x9e, 0x98, 0x51, 0x57, 0xa0, 0x97, 0x51, 0x58, 0x9e, - 0x98, 0x51, 0x58, 0xa0, 0x97, 0x51, 0x59, 0x9e, 0x98, 0x51, 0x5a, 0xa0, - 0x97, 0x51, 0x5b, 0x9e, 0x98, 0x51, 0x5c, 0xa0, 0x97, 0x51, 0x5d, 0x9e, - 0x98, 0x51, 0x5d, 0xa0, 0x97, 0x51, 0x5e, 0x9e, 0x98, 0x51, 0x5f, 0xa0, - 0x97, 0x51, 0x60, 0x9e, 0x98, 0x51, 0x60, 0xa0, 0x97, 0x51, 0x61, 0x9e, - 0x98, 0x51, 0x62, 0xa0, 0x97, 0x51, 0x63, 0x9e, 0x98, 0x51, 0x63, 0xa0, - 0x97, 0x51, 0x64, 0x9e, 0x98, 0x51, 0x65, 0xa0, 0x97, 0x51, 0x66, 0x9e, - 0x98, 0x51, 0x66, 0xa0, 0x97, 0x51, 0x67, 0x9e, 0x98, 0x51, 0x68, 0xa0, - 0x97, 0x51, 0x68, 0x9e, 0x98, 0x51, 0x69, 0xa0, 0x97, 0x51, 0x6a, 0x9e, - 0x98, 0x51, 0x6a, 0xa0, 0x97, 0x51, 0x6b, 0x9e, 0x98, 0x51, 0x6c, 0xa0, - 0x97, 0x51, 0x6c, 0x9e, 0x98, 0x51, 0x6d, 0xa0, 0x97, 0x51, 0x6e, 0x9e, - 0x98, 0x51, 0x6e, 0xa0, 0x97, 0x51, 0x6f, 0x9e, 0x98, 0x51, 0x70, 0xa0, - 0x97, 0x51, 0x70, 0x9e, 0x98, 0x51, 0x71, 0xa0, 0x97, 0x51, 0x72, 0x9e, - 0x98, 0x51, 0x72, 0xa0, 0x97, 0x51, 0x73, 0x9e, 0x98, 0x51, 0x73, 0x9b, - 0x98, 0x51, 0x74, 0x9e, 0x98, 0x51, 0x75, 0x9b, 0x98, 0x51, 0x75, 0x9e, - 0x98, 0x51, 0x76, 0x9b, 0x98, 0x51, 0x76, 0x9e, 0x98, 0x51, 0x77, 0x9b, - 0x98, 0x51, 0x78, 0x9e, 0x98, 0x51, 0x78, 0x9b, 0x98, 0x51, 0x79, 0x9e, - 0x98, 0x51, 0x79, 0x9b, 0x98, 0x51, 0x7a, 0x9e, 0x98, 0x51, 0x7a, 0x9b, - 0x98, 0x51, 0x7b, 0x9e, 0x98, 0x51, 0x7c, 0x9b, 0x98, 0x51, 0x7c, 0x9e, - 0x98, 0x51, 0x7d, 0x9b, 0x98, 0x51, 0x7d, 0x9e, 0x98, 0x51, 0x7e, 0x9b, - 0x98, 0x51, 0x7e, 0x9e, 0x98, 0x51, 0x7f, 0x9b, 0x98, 0x51, 0x7f, 0x9e, - 0x98, 0x51, 0x80, 0x9b, 0x98, 0x51, 0x81, 0x9e, 0x98, 0x51, 0x81, 0x9b, - 0x98, 0x51, 0x82, 0x9e, 0x98, 0x51, 0x82, 0x9b, 0x98, 0x51, 0x83, 0x9e, - 0x98, 0x51, 0x83, 0x9b, 0x98, 0x51, 0x84, 0x9e, 0x98, 0x51, 0x84, 0x9b, - 0x98, 0x51, 0x85, 0x9e, 0x98, 0x51, 0x85, 0x9b, 0x98, 0x51, 0x86, 0x9e, - 0x98, 0x51, 0x86, 0x9b, 0x98, 0x51, 0x87, 0x9e, 0x98, 0x51, 0x87, 0x9b, - 0x98, 0x51, 0x88, 0x99, 0x98, 0x51, 0x88, 0x9b, 0x98, 0x51, 0x89, 0x99, - 0x98, 0x51, 0x89, 0x9b, 0x98, 0x51, 0x8a, 0x99, 0x98, 0x51, 0x8a, 0x9b, - 0x98, 0x51, 0x8b, 0x99, 0x98, 0x51, 0x8b, 0x9b, 0x98, 0x51, 0x8c, 0x99, - 0x98, 0x51, 0x8c, 0x9b, 0x98, 0x51, 0x8d, 0x99, 0x98, 0x51, 0x8d, 0x9b, - 0x98, 0x51, 0x8e, 0x99, 0x98, 0x51, 0x8e, 0x9b, 0x98, 0x51, 0x8e, 0x99, - 0x98, 0x51, 0x8f, 0x9b, 0x98, 0x51, 0x8f, 0x99, 0x98, 0x51, 0x90, 0x9b, - 0x98, 0x51, 0x90, 0x99, 0x98, 0x51, 0x91, 0x9b, 0x98, 0x51, 0x91, 0x99, - 0x98, 0x51, 0x92, 0x9b, 0x98, 0x51, 0x92, 0x99, 0x98, 0x51, 0x93, 0x9b, - 0x98, 0x51, 0x93, 0x99, 0x98, 0x51, 0x94, 0x9b, 0x98, 0x51, 0x94, 0x99, - 0x98, 0x51, 0x94, 0x9b, 0x98, 0x51, 0x95, 0x99, 0x98, 0x51, 0x95, 0x99, - 0x99, 0x51, 0x96, 0x99, 0x98, 0x51, 0x96, 0x99, 0x99, 0x51, 0x97, 0x99, - 0x98, 0x51, 0x97, 0x99, 0x99, 0x51, 0x98, 0x99, 0x98, 0x51, 0x98, 0x99, - 0x99, 0x51, 0x98, 0x99, 0x98, 0x51, 0x98, 0x99, 0x99, 0x51, 0x98, 0x99, - 0x99, 0x51, 0x98, 0x99, 0x9a, 0x51, 0x98, 0x99, 0x9a, 0x4f, 0x9c, 0x99, - 0x9a, 0x51, 0x9d, 0x99, 0x9b, 0x51, 0x9c, 0x99, 0x9b, 0x51, 0x9d, 0x99, - 0x9c, 0x51, 0x9c, 0x98, 0x9c, 0x51, 0x9d, 0x99, 0x9c, 0x51, 0x9d, 0x98, - 0x9c, 0x51, 0x9d, 0x99, 0x9c, 0x51, 0x9e, 0x98, 0x9c, 0x51, 0x9e, 0x99, - 0x9c, 0x51, 0x9f, 0x98, 0x9c, 0x51, 0x9f, 0x99, 0x9c, 0x51, 0x9f, 0x98, - 0x9c, 0x51, 0xa0, 0x99, 0x9c, 0x51, 0xa0, 0x98, 0x9c, 0x51, 0xa1, 0x99, - 0x9c, 0x51, 0xa1, 0x98, 0x9c, 0x51, 0xa1, 0x99, 0x9c, 0x51, 0xa2, 0x98, - 0x9c, 0x51, 0xa2, 0x99, 0x9c, 0x51, 0xa3, 0x98, 0x9c, 0x51, 0xa3, 0x95, - 0x9d, 0x51, 0xa3, 0x98, 0x9c, 0x51, 0xa4, 0x95, 0x9d, 0x51, 0xa4, 0x98, - 0x9c, 0x51, 0xa5, 0x95, 0x9d, 0x51, 0xa5, 0x98, 0x9c, 0x51, 0xa5, 0x8f, - 0xa6, 0x51, 0xa6, 0x8f, 0xa6, 0x51, 0xa6, 0x8f, 0xa6, 0x51, 0xa6, 0x8f, - 0xa6, 0x51, 0xa7, 0x8f, 0xa7, 0x51, 0xa7, 0x90, 0xaa, 0x51, 0xa8, 0x90, - 0xab, 0x51, 0xa8, 0x90, 0xaa, 0x51, 0xa8, 0x90, 0xab, 0x51, 0xa9, 0x90, - 0xaa, 0x51, 0xa9, 0x90, 0xab, 0x51, 0xaa, 0x90, 0xaa, 0x51, 0xaa, 0x90, - 0xab, 0x51, 0xaa, 0x90, 0xaa, 0x51, 0xab, 0x90, 0xab, 0x51, 0xab, 0x90, - 0xab, 0x51, 0xab, 0x91, 0xae, 0x51, 0xac, 0x91, 0xaf, 0x51, 0xac, 0x91, - 0xae, 0x51, 0xac, 0x91, 0xaf, 0x51, 0xad, 0x91, 0xae, 0x51, 0xad, 0x91, - 0xaf, 0x51, 0xae, 0x91, 0xae, 0x51, 0xae, 0x91, 0xaf, 0x51, 0xae, 0x91, - 0xae, 0x51, 0xaf, 0x91, 0xaf, 0x51, 0xaf, 0x91, 0xaf, 0x51, 0xaf, 0x92, - 0xb2, 0x51, 0xb0, 0x92, 0xb3, 0x51, 0xb0, 0x92, 0xb2, 0x51, 0xb0, 0x92, - 0xb3, 0x51, 0xb1, 0x92, 0xb2, 0x51, 0xb1, 0x92, 0xb3, 0x51, 0xb2, 0x92, - 0xb2, 0x51, 0xb2, 0x92, 0xb3, 0x51, 0xb2, 0x92, 0xb2, 0x51, 0xb3, 0x92, - 0xb3, 0x51, 0xb3, 0x92, 0xb3, 0x51, 0xb3, 0x92, 0xb3, 0x51, 0xb4, 0x92, - 0xb4, 0x51, 0xb4, 0x93, 0xb6, 0x51, 0xb4, 0x93, 0xb6, 0x51, 0xb5, 0x93, - 0xb6, 0x51, 0xb5, 0x93, 0xb6, 0x51, 0xb5, 0x93, 0xb6, 0x51, 0xb6, 0x93, - 0xb6, 0x51, 0xb6, 0x93, 0xb6, 0x51, 0xb6, 0x93, 0xb6, 0x51, 0xb7, 0x93, - 0xb7, 0x51, 0xb7, 0x93, 0xb7, 0x51, 0xb7, 0x93, 0xb7, 0x51, 0xb8, 0x93, - 0xb8, 0x51, 0xb8, 0x94, 0xba, 0x51, 0xb8, 0x94, 0xba, 0x51, 0xb9, 0x94, - 0xba, 0x51, 0xb9, 0x94, 0xba, 0x51, 0xb9, 0x94, 0xba, 0x51, 0xba, 0x94, - 0xba, 0x51, 0xba, 0x94, 0xba, 0x51, 0xba, 0x94, 0xba, 0x51, 0xbb, 0x94, - 0xbb, 0x51, 0xbb, 0x94, 0xbb, 0x51, 0xbb, 0x94, 0xbb, 0x51, 0xbc, 0x94, - 0xbe, 0x51, 0xbc, 0x94, 0xbe, 0x51, 0xbc, 0x94, 0xbe, 0x51, 0xbd, 0x94, - 0xbe, 0x51, 0xbd, 0x94, 0xbe, 0x51, 0xbd, 0x94, 0xbe, 0x51, 0xbe, 0x94, - 0xbe, 0x51, 0xbe, 0x94, 0xbe, 0x51, 0xbe, 0x94, 0xbe, 0x51, 0xbf, 0x94, - 0xbf, 0x51, 0xbf, 0x94, 0xbf, 0x51, 0xbf, 0x94, 0xbf, 0x51, 0xc0, 0x94, - 0xc0, 0x51, 0xc0, 0x95, 0xc1, 0x51, 0xc0, 0x95, 0xc1, 0x51, 0xc1, 0x95, - 0xc1, 0x51, 0xc1, 0x95, 0xc1, 0x51, 0xc1, 0x95, 0xc1, 0x51, 0xc1, 0x95, - 0xc1, 0x51, 0xc2, 0x95, 0xc2, 0x51, 0xc2, 0x95, 0xc2, 0x51, 0xc2, 0x95, - 0xc2, 0x51, 0xc3, 0x95, 0xc3, 0x51, 0xc3, 0x95, 0xc3, 0x51, 0xc3, 0x96, - 0xc5, 0x51, 0xc4, 0x96, 0xc5, 0x51, 0xc4, 0x96, 0xc5, 0x51, 0xc4, 0x96, - 0xc5, 0x51, 0xc5, 0x96, 0xc5, 0x51, 0xc5, 0x96, 0xc5, 0x51, 0xc5, 0x96, - 0xc5, 0x51, 0xc6, 0x96, 0xc6, 0x51, 0xc6, 0x96, 0xc6, 0x51, 0xc6, 0x96, - 0xc6, 0x51, 0xc6, 0x96, 0xc6, 0x51, 0xc7, 0x97, 0xc8, 0x51, 0xc7, 0x97, - 0xc8, 0x51, 0xc7, 0x97, 0xc8, 0x51, 0xc8, 0x97, 0xc8, 0x51, 0xc8, 0x97, - 0xc8, 0x51, 0xc8, 0x97, 0xc8, 0x51, 0xc9, 0x97, 0xc9, 0x51, 0xc9, 0x97, - 0xc9, 0x51, 0xc9, 0x97, 0xc9, 0x51, 0xc9, 0x97, 0xc9, 0x51, 0xca, 0x97, - 0xca, 0x51, 0xca, 0x97, 0xca, 0x51, 0xca, 0x97, 0xca, 0x51, 0xcb, 0x98, - 0xcb, 0x51, 0xcb, 0x98, 0xcc, 0x51, 0xcb, 0x98, 0xcb, 0x51, 0xcc, 0x98, - 0xcc, 0x51, 0xcc, 0x98, 0xcc, 0x51, 0xcc, 0x98, 0xcc, 0x51, 0xcc, 0x98, - 0xcc, 0x51, 0xcd, 0x98, 0xcd, 0x51, 0xcd, 0x98, 0xcd, 0x51, 0xcd, 0x98, - 0xcd, 0x51, 0xce, 0x98, 0xce, 0x51, 0xce, 0x98, 0xce, 0x51, 0xce, 0x98, - 0xce, 0x51, 0xce, 0x99, 0xce, 0x52, 0xcf, 0x99, 0xcf, 0x52, 0xcf, 0x99, - 0xcf, 0x52, 0xcf, 0x99, 0xcf, 0x52, 0xd0, 0x99, 0xd0, 0x52, 0xd0, 0x99, - 0xd0, 0x52, 0xd0, 0x99, 0xd0, 0x52, 0xd0, 0x99, 0xd0, 0x52, 0xd1, 0x99, - 0xd1, 0x52, 0xd1, 0x99, 0xd1, 0x52, 0xd1, 0x99, 0xd1, 0x52, 0xd1, 0x99, - 0xd2, 0x52, 0xd1, 0x99, 0xd2, 0x52, 0xd2, 0x99, 0xd2, 0x53, 0xd1, 0x99, - 0xd2, 0x52, 0xd2, 0x99, 0xd3, 0x53, 0xd2, 0x99, 0xd3, 0x53, 0xd2, 0x99, - 0xd3, 0x53, 0xd2, 0x99, 0xd4, 0x53, 0xd2, 0x99, 0xd4, 0x53, 0xd2, 0x99, - 0xd4, 0x53, 0xd2, 0x99, 0xd4, 0x53, 0xd5, 0x99, 0xd5, 0x4c, 0xd6, 0x99, - 0xd5, 0x4c, 0xd5, 0x99, 0xd5, 0x4c, 0xd6, 0x99, 0xd6, 0x4c, 0xd6, 0x99, - 0xd6, 0x4c, 0xd6, 0x99, 0xd6, 0x4c, 0xd6, 0x99, 0xd6, 0x4c, 0xd8, 0x99, - 0xd7, 0x4d, 0xd8, 0x99, 0xd7, 0x4d, 0xd8, 0x99, 0xd7, 0x4d, 0xd8, 0x99, - 0xd7, 0x4d, 0xd8, 0x99, 0xd8, 0x4d, 0xd8, 0x99, 0xd8, 0x4d, 0xd8, 0x99, - 0xd8, 0x4d, 0xd9, 0x99, 0xd9, 0x4d, 0xd9, 0x99, 0xd9, 0x4d, 0xd9, 0x99, - 0xd9, 0x4d, 0xda, 0x99, 0xd9, 0x4e, 0xdb, 0x99, 0xda, 0x4e, 0xda, 0x99, - 0xda, 0x4e, 0xdb, 0x99, 0xda, 0x4e, 0xda, 0x99, 0xda, 0x4e, 0xdb, 0x99, - 0xdb, 0x4e, 0xdb, 0x99, 0xdb, 0x4e, 0xdb, 0x99, 0xdb, 0x4e, 0xdb, 0x99, - 0xdb, 0x4e, 0xdd, 0x99, 0xdc, 0x4f, 0xdd, 0x99, 0xdc, 0x4f, 0xdd, 0x99, - 0xdc, 0x4f, 0xdd, 0x99, 0xdd, 0x4f, 0xdd, 0x99, 0xdd, 0x4f, 0xdd, 0x99, - 0xdd, 0x4f, 0xdd, 0x99, 0xdd, 0x4f, 0xde, 0x99, 0xde, 0x4f, 0xde, 0x99, - 0xde, 0x4f, 0xde, 0x99, 0xde, 0x4f, 0xde, 0x99, 0xde, 0x4f, 0xdf, 0x99, - 0xdf, 0x50, 0xdf, 0x99, 0xdf, 0x50, 0xdf, 0x99, 0xdf, 0x50, 0xdf, 0x99, - 0xdf, 0x50, 0xe0, 0x99, 0xe0, 0x50, 0xe0, 0x99, 0xe0, 0x50, 0xe0, 0x99, - 0xe0, 0x50, 0xe1, 0x99, 0xe1, 0x50, 0xe1, 0x99, 0xe1, 0x50, 0xe1, 0x99, - 0xe1, 0x50, 0xe1, 0x99, 0xe1, 0x50, 0xe2, 0x99, 0xe2, 0x50, 0xe2, 0x9a, - 0xe2, 0x51, 0xe2, 0x9a, 0xe2, 0x51, 0xe2, 0x9a, 0xe2, 0x51, 0xe3, 0x9a, - 0xe3, 0x51, 0xe3, 0x9a, 0xe3, 0x51, 0xe3, 0x9a, 0xe3, 0x51, 0xe3, 0x9a, - 0xe3, 0x51, 0xe4, 0x9a, 0xe4, 0x51, 0xe4, 0x9a, 0xe4, 0x51, 0xe4, 0x9a, - 0xe4, 0x51, 0xe4, 0x9a, 0xe4, 0x51, 0xe5, 0x9a, 0xe5, 0x51, 0xe5, 0x9a, - 0xe5, 0x51, 0xe5, 0x9a, 0xe5, 0x51, 0xe5, 0x9a, 0xe5, 0x51, 0xe6, 0x9a, - 0xe6, 0x51, 0xe6, 0x9a, 0xe6, 0x51, 0xe6, 0x9a, 0xe6, 0x51, 0xe6, 0x9a, - 0xe6, 0x51, 0xe7, 0x9a, 0xe6, 0x51, 0xe7, 0x9a, 0xe6, 0x51, 0xe7, 0x9a, - 0xe6, 0x51, 0xe7, 0x9b, 0xe7, 0x51, 0xe8, 0x9b, 0xe8, 0x51, 0xe8, 0x9b, - 0xe8, 0x51, 0xe8, 0x9b, 0xe8, 0x51, 0xe8, 0x9b, 0xe8, 0x51, 0xe9, 0x9b, - 0xe9, 0x51, 0xe9, 0x9b, 0xe8, 0x51, 0xe9, 0x9b, 0xe9, 0x51, 0xe9, 0x9b, - 0xe8, 0x51, 0xea, 0x9b, 0xe9, 0x51, 0xea, 0x9c, 0xea, 0x51, 0xea, 0x9c, - 0xea, 0x51, 0xea, 0x9c, 0xea, 0x51, 0xeb, 0x9c, 0xeb, 0x51, 0xeb, 0x9c, - 0xeb, 0x51, 0xeb, 0x9c, 0xeb, 0x51, 0xeb, 0x9c, 0xeb, 0x51, 0xec, 0x9c, - 0xeb, 0x51, 0xec, 0x9c, 0xeb, 0x51, 0xec, 0x9d, 0xec, 0x51, 0xec, 0x9d, - 0xec, 0x51, 0xec, 0x9d, 0xec, 0x51, 0xed, 0x9d, 0xed, 0x51, 0xed, 0x9d, - 0xed, 0x51, 0xed, 0x9d, 0xed, 0x51, 0xed, 0x9d, 0xed, 0x51, 0xee, 0x9d, - 0xed, 0x51, 0xee, 0x9d, 0xed, 0x51, 0xee, 0x9d, 0xed, 0x51, 0xee, 0x9d, - 0xed, 0x51, 0xef, 0x9d, 0xed, 0x51, 0xef, 0x9e, 0xef, 0x51, 0xef, 0x9e, - 0xef, 0x51, 0xef, 0x9e, 0xef, 0x51, 0xf0, 0x9e, 0xef, 0x51, 0xf0, 0x9e, - 0xef, 0x51, 0xf0, 0x9e, 0xef, 0x51, 0xf0, 0x9e, 0xef, 0x51, 0xf1, 0x9e, - 0xef, 0x51, 0xf1, 0x9e, 0xef, 0x51, 0xf1, 0x9f, 0xf1, 0x51, 0xf1, 0x9f, - 0xf1, 0x51, 0xf2, 0x9f, 0xf2, 0x51, 0xf2, 0x9f, 0xf1, 0x51, 0xf2, 0x9f, - 0xf2, 0x51, 0xf2, 0x9f, 0xf1, 0x51, 0xf2, 0x9f, 0xf2, 0x51, 0xf3, 0x9f, - 0xf1, 0x51, 0xf3, 0x9f, 0xf2, 0x51, 0xf3, 0x9f, 0xf3, 0x51, 0xf3, 0x9f, - 0xf3, 0x51, 0xf4, 0x9f, 0xf4, 0x51, 0xf4, 0x9f, 0xf4, 0x51, 0xf4, 0x9f, - 0xf4, 0x51, 0xf4, 0x9f, 0xf4, 0x51, 0xf5, 0x9f, 0xf4, 0x51, 0xf5, 0x9f, - 0xf4, 0x51, 0xf5, 0x9f, 0xf4, 0x51, 0xf5, 0x9f, 0xf4, 0x51, 0xf5, 0x9f, - 0xf4, 0x51, 0xf6, 0x9f, 0xf4, 0x51, 0xf6, 0xa0, 0xf6, 0x51, 0xf6, 0xa0, - 0xf6, 0x51, 0xf6, 0xa0, 0xf6, 0x51, 0xf7, 0xa0, 0xf6, 0x51, 0xf7, 0xa0, - 0xf6, 0x51, 0xf7, 0xa0, 0xf6, 0x51, 0xf7, 0xa0, 0xf6, 0x51, 0xf8, 0xa0, - 0xf6, 0x51, 0xf8, 0xa0, 0xf6, 0x51, 0xf8, 0xa1, 0xf8, 0x51, 0xf8, 0xa1, - 0xf8, 0x51, 0xf8, 0xa1, 0xf8, 0x51, 0xf9, 0xa1, 0xf8, 0x51, 0xf9, 0xa1, - 0xf8, 0x51, 0xf9, 0xa1, 0xf8, 0x51, 0xf9, 0xa1, 0xf8, 0x51, 0xfa, 0xa1, - 0xf8, 0x51, 0xfa, 0xa1, 0xf8, 0x51, 0xfa, 0xa2, 0xfa, 0x51, 0xfa, 0xa2, - 0xfa, 0x51, 0xfa, 0xa2, 0xfa, 0x51, 0xfb, 0xa2, 0xfa, 0x51, 0xfb, 0xa2, - 0xfa, 0x51, 0xfb, 0xa2, 0xfa, 0x51, 0xfb, 0xa2, 0xfa, 0x51, 0xfc, 0xa2, - 0xfa, 0x51, 0xfc, 0xa2, 0xfa, 0x51, 0xfc, 0xa2, 0xfa, 0x51, 0xfc, 0xa2, - 0xfa, 0x51, 0xfc, 0xa2, 0xfa, 0x51, 0xfd, 0xa3, 0xfb, 0x51, 0xfd, 0xa3, - 0xfc, 0x51, 0xfd, 0xa3, 0xfb, 0x51, 0xfd, 0xa3, 0xfc, 0x51, 0xfe, 0xa3, - 0xfb, 0x51, 0xfe, 0xa3, 0xfc, 0x51, 0xfe, 0xa3, 0xfb, 0x51, 0xfe, 0xa3, - 0xfc, 0x51, 0xfe, 0xa3, 0xfb, 0x51, 0xff, 0xa3, 0xfc, 0x51, 0xff, 0xa3, - 0xfb, 0x51, 0x03, 0xa5, 0x96, 0x51, 0x0a, 0xa3, 0x97, 0x51, 0x0f, 0xa5, - 0x96, 0x51, 0x14, 0xa3, 0x97, 0x51, 0x17, 0xa5, 0x96, 0x51, 0x1b, 0xa3, - 0x97, 0x51, 0x1e, 0xa5, 0x96, 0x51, 0x20, 0xa3, 0x97, 0x51, 0x23, 0xa5, - 0x96, 0x51, 0x25, 0xa3, 0x97, 0x51, 0x27, 0xa5, 0x96, 0x51, 0x29, 0xa3, - 0x97, 0x51, 0x2b, 0xa5, 0x96, 0x51, 0x2d, 0xa3, 0x97, 0x51, 0x2f, 0xa1, - 0x97, 0x51, 0x31, 0xa3, 0x97, 0x51, 0x32, 0xa1, 0x97, 0x51, 0x34, 0xa3, - 0x97, 0x51, 0x35, 0xa1, 0x97, 0x51, 0x37, 0xa3, 0x97, 0x51, 0x38, 0xa1, - 0x97, 0x51, 0x3a, 0xa3, 0x97, 0x51, 0x3b, 0xa1, 0x97, 0x51, 0x3c, 0xa3, - 0x97, 0x51, 0x3e, 0xa1, 0x97, 0x51, 0x3f, 0xa3, 0x97, 0x51, 0x40, 0xa1, - 0x97, 0x51, 0x42, 0xa3, 0x97, 0x51, 0x43, 0xa1, 0x97, 0x51, 0x44, 0xa3, - 0x97, 0x51, 0x45, 0xa1, 0x97, 0x51, 0x46, 0xa3, 0x97, 0x51, 0x47, 0xa1, - 0x97, 0x51, 0x48, 0xa3, 0x97, 0x51, 0x49, 0xa1, 0x97, 0x51, 0x4a, 0xa3, - 0x97, 0x51, 0x4b, 0xa1, 0x97, 0x51, 0x4c, 0xa3, 0x97, 0x51, 0x4d, 0xa1, - 0x97, 0x51, 0x4e, 0x9d, 0x98, 0x51, 0x4f, 0xa1, 0x97, 0x51, 0x50, 0x9d, - 0x98, 0x51, 0x51, 0xa1, 0x97, 0x51, 0x52, 0x9d, 0x98, 0x51, 0x53, 0xa1, - 0x97, 0x51, 0x54, 0x9d, 0x98, 0x51, 0x55, 0xa1, 0x97, 0x51, 0x56, 0x9d, - 0x98, 0x51, 0x57, 0xa1, 0x97, 0x51, 0x58, 0x9d, 0x98, 0x51, 0x58, 0xa1, - 0x97, 0x51, 0x59, 0x9d, 0x98, 0x51, 0x5a, 0xa1, 0x97, 0x51, 0x5b, 0x9d, - 0x98, 0x51, 0x5c, 0xa1, 0x97, 0x51, 0x5d, 0x9d, 0x98, 0x51, 0x5d, 0xa1, - 0x97, 0x51, 0x5e, 0x9d, 0x98, 0x51, 0x5f, 0xa1, 0x97, 0x51, 0x60, 0x9d, - 0x98, 0x51, 0x60, 0xa1, 0x97, 0x51, 0x61, 0x9d, 0x98, 0x51, 0x62, 0xa1, - 0x97, 0x51, 0x63, 0x9d, 0x98, 0x51, 0x63, 0xa1, 0x97, 0x51, 0x64, 0x9d, - 0x98, 0x51, 0x65, 0xa1, 0x97, 0x51, 0x66, 0x9d, 0x98, 0x51, 0x66, 0xa1, - 0x97, 0x51, 0x67, 0x9d, 0x98, 0x51, 0x68, 0xa1, 0x97, 0x51, 0x68, 0x9d, - 0x98, 0x51, 0x69, 0xa1, 0x97, 0x51, 0x6a, 0x9d, 0x98, 0x51, 0x6a, 0xa1, - 0x97, 0x51, 0x6b, 0x9d, 0x98, 0x51, 0x6c, 0xa1, 0x97, 0x51, 0x6c, 0x9d, - 0x98, 0x51, 0x6d, 0xa1, 0x97, 0x51, 0x6e, 0x9d, 0x98, 0x51, 0x6e, 0xa1, - 0x97, 0x51, 0x6f, 0x9d, 0x98, 0x51, 0x70, 0xa1, 0x97, 0x51, 0x70, 0x9d, - 0x98, 0x51, 0x71, 0x9b, 0x98, 0x51, 0x72, 0x9d, 0x98, 0x51, 0x72, 0x9b, - 0x98, 0x51, 0x73, 0x9d, 0x98, 0x51, 0x73, 0x9b, 0x98, 0x51, 0x74, 0x9d, - 0x98, 0x51, 0x75, 0x9b, 0x98, 0x51, 0x75, 0x9d, 0x98, 0x51, 0x76, 0x9b, - 0x98, 0x51, 0x76, 0x9d, 0x98, 0x51, 0x77, 0x9b, 0x98, 0x51, 0x78, 0x9d, - 0x98, 0x51, 0x78, 0x9b, 0x98, 0x51, 0x79, 0x9d, 0x98, 0x51, 0x79, 0x9b, - 0x98, 0x51, 0x7a, 0x9d, 0x98, 0x51, 0x7a, 0x9b, 0x98, 0x51, 0x7b, 0x9d, - 0x98, 0x51, 0x7c, 0x9b, 0x98, 0x51, 0x7c, 0x9d, 0x98, 0x51, 0x7d, 0x9b, - 0x98, 0x51, 0x7d, 0x9d, 0x98, 0x51, 0x7e, 0x9b, 0x98, 0x51, 0x7e, 0x9d, - 0x98, 0x51, 0x7f, 0x9b, 0x98, 0x51, 0x7f, 0x9d, 0x98, 0x51, 0x80, 0x9b, - 0x98, 0x51, 0x81, 0x9d, 0x98, 0x51, 0x81, 0x9b, 0x98, 0x51, 0x82, 0x9d, - 0x98, 0x51, 0x82, 0x9b, 0x98, 0x51, 0x83, 0x9d, 0x98, 0x51, 0x83, 0x9b, - 0x98, 0x51, 0x84, 0x9d, 0x98, 0x51, 0x84, 0x9b, 0x98, 0x51, 0x85, 0x9d, - 0x98, 0x51, 0x85, 0x9b, 0x98, 0x51, 0x86, 0x9d, 0x98, 0x51, 0x86, 0x9b, - 0x98, 0x51, 0x87, 0x9d, 0x98, 0x51, 0x87, 0x9b, 0x98, 0x51, 0x88, 0x9d, - 0x98, 0x51, 0x88, 0x9b, 0x98, 0x51, 0x89, 0x9d, 0x98, 0x51, 0x89, 0x9b, - 0x98, 0x51, 0x8a, 0x9d, 0x98, 0x51, 0x8a, 0x9b, 0x98, 0x51, 0x8b, 0x9d, - 0x98, 0x51, 0x8b, 0x9b, 0x98, 0x51, 0x8c, 0x9d, 0x98, 0x51, 0x8c, 0x9b, - 0x98, 0x51, 0x8d, 0x9d, 0x98, 0x51, 0x8d, 0x9b, 0x98, 0x51, 0x8e, 0x99, - 0x98, 0x51, 0x8e, 0x9b, 0x98, 0x51, 0x8e, 0x99, 0x98, 0x51, 0x8f, 0x9b, - 0x98, 0x51, 0x8f, 0x99, 0x98, 0x51, 0x90, 0x9b, 0x98, 0x51, 0x90, 0x99, - 0x98, 0x51, 0x91, 0x9b, 0x98, 0x51, 0x91, 0x99, 0x98, 0x51, 0x92, 0x9b, - 0x98, 0x51, 0x92, 0x99, 0x98, 0x51, 0x93, 0x9b, 0x98, 0x51, 0x93, 0x99, - 0x98, 0x51, 0x94, 0x9b, 0x98, 0x51, 0x94, 0x99, 0x98, 0x51, 0x94, 0x9b, - 0x98, 0x51, 0x95, 0x99, 0x98, 0x51, 0x95, 0x9b, 0x98, 0x51, 0x96, 0x99, - 0x98, 0x51, 0x96, 0x9b, 0x98, 0x51, 0x97, 0x99, 0x98, 0x51, 0x97, 0x99, - 0x99, 0x51, 0x98, 0x99, 0x98, 0x51, 0x98, 0x99, 0x99, 0x51, 0x98, 0x99, - 0x98, 0x51, 0x98, 0x99, 0x99, 0x51, 0x98, 0x99, 0x99, 0x51, 0x98, 0x99, - 0x9a, 0x51, 0x98, 0x99, 0x9a, 0x4f, 0x9c, 0x99, 0x9a, 0x51, 0x9d, 0x99, - 0x9b, 0x51, 0x9c, 0x99, 0x9b, 0x51, 0x9d, 0x99, 0x9c, 0x51, 0x9c, 0x98, - 0x9c, 0x51, 0x9d, 0x99, 0x9c, 0x51, 0x9d, 0x98, 0x9c, 0x51, 0x9d, 0x99, - 0x9c, 0x51, 0x9e, 0x98, 0x9c, 0x51, 0x9e, 0x99, 0x9c, 0x51, 0x9f, 0x98, - 0x9c, 0x51, 0x9f, 0x99, 0x9c, 0x51, 0x9f, 0x98, 0x9c, 0x51, 0xa0, 0x99, - 0x9c, 0x51, 0xa0, 0x98, 0x9c, 0x51, 0xa1, 0x99, 0x9c, 0x51, 0xa1, 0x98, - 0x9c, 0x51, 0xa1, 0x99, 0x9c, 0x51, 0xa2, 0x98, 0x9c, 0x51, 0xa2, 0x99, - 0x9c, 0x51, 0xa3, 0x98, 0x9c, 0x51, 0xa3, 0x96, 0x9d, 0x51, 0xa3, 0x98, - 0x9c, 0x51, 0xa4, 0x96, 0x9d, 0x51, 0xa4, 0x98, 0x9c, 0x51, 0xa5, 0x96, - 0x9d, 0x51, 0xa5, 0x98, 0x9c, 0x51, 0xa5, 0x8f, 0xa8, 0x51, 0xa6, 0x8f, - 0xa8, 0x51, 0xa6, 0x8f, 0xa8, 0x51, 0xa6, 0x8f, 0xa8, 0x51, 0xa7, 0x8f, - 0xa8, 0x51, 0xa7, 0x8f, 0xa8, 0x51, 0xa8, 0x8f, 0xa8, 0x51, 0xa8, 0x8f, - 0xa8, 0x51, 0xa8, 0x8f, 0xa8, 0x51, 0xa9, 0x8f, 0xa9, 0x51, 0xa9, 0x8f, - 0xa9, 0x51, 0xaa, 0x90, 0xac, 0x51, 0xaa, 0x90, 0xad, 0x51, 0xaa, 0x90, - 0xac, 0x51, 0xab, 0x90, 0xad, 0x51, 0xab, 0x90, 0xac, 0x51, 0xab, 0x90, - 0xad, 0x51, 0xac, 0x90, 0xac, 0x51, 0xac, 0x90, 0xad, 0x51, 0xac, 0x90, - 0xac, 0x51, 0xad, 0x90, 0xad, 0x51, 0xad, 0x90, 0xad, 0x51, 0xae, 0x91, - 0xb0, 0x51, 0xae, 0x91, 0xb1, 0x51, 0xae, 0x91, 0xb0, 0x51, 0xaf, 0x91, - 0xb1, 0x51, 0xaf, 0x91, 0xb0, 0x51, 0xaf, 0x91, 0xb1, 0x51, 0xb0, 0x91, - 0xb0, 0x51, 0xb0, 0x91, 0xb1, 0x51, 0xb0, 0x91, 0xb0, 0x51, 0xb1, 0x91, - 0xb1, 0x51, 0xb1, 0x91, 0xb1, 0x51, 0xb2, 0x92, 0xb4, 0x51, 0xb2, 0x92, - 0xb5, 0x51, 0xb2, 0x92, 0xb4, 0x51, 0xb3, 0x92, 0xb5, 0x51, 0xb3, 0x92, - 0xb4, 0x51, 0xb3, 0x92, 0xb5, 0x51, 0xb4, 0x92, 0xb4, 0x51, 0xb4, 0x92, - 0xb5, 0x51, 0xb4, 0x92, 0xb4, 0x51, 0xb5, 0x92, 0xb5, 0x51, 0xb5, 0x92, - 0xb5, 0x51, 0xb5, 0x92, 0xb5, 0x51, 0xb6, 0x92, 0xb6, 0x51, 0xb6, 0x93, - 0xb8, 0x51, 0xb6, 0x93, 0xb8, 0x51, 0xb7, 0x93, 0xb8, 0x51, 0xb7, 0x93, - 0xb8, 0x51, 0xb7, 0x93, 0xb8, 0x51, 0xb8, 0x93, 0xb8, 0x51, 0xb8, 0x93, - 0xb8, 0x51, 0xb8, 0x93, 0xb8, 0x51, 0xb9, 0x93, 0xb9, 0x51, 0xb9, 0x93, - 0xb9, 0x51, 0xb9, 0x94, 0xbc, 0x51, 0xba, 0x94, 0xbc, 0x51, 0xba, 0x94, - 0xbc, 0x51, 0xba, 0x94, 0xbc, 0x51, 0xbb, 0x94, 0xbc, 0x51, 0xbb, 0x94, - 0xbc, 0x51, 0xbb, 0x94, 0xbc, 0x51, 0xbc, 0x94, 0xbc, 0x51, 0xbc, 0x94, - 0xbc, 0x51, 0xbc, 0x94, 0xbc, 0x51, 0xbd, 0x94, 0xbd, 0x51, 0xbd, 0x94, - 0xbd, 0x51, 0xbd, 0x95, 0xbf, 0x51, 0xbe, 0x95, 0xc0, 0x51, 0xbe, 0x95, - 0xbf, 0x51, 0xbe, 0x95, 0xc0, 0x51, 0xbf, 0x95, 0xbf, 0x51, 0xbf, 0x95, - 0xc0, 0x51, 0xbf, 0x95, 0xbf, 0x51, 0xc0, 0x95, 0xc0, 0x51, 0xc0, 0x95, - 0xc0, 0x51, 0xc0, 0x95, 0xc0, 0x51, 0xc1, 0x95, 0xc1, 0x51, 0xc1, 0x95, - 0xc1, 0x51, 0xc1, 0x95, 0xc1, 0x51, 0xc1, 0x96, 0xc3, 0x51, 0xc2, 0x96, - 0xc3, 0x51, 0xc2, 0x96, 0xc3, 0x51, 0xc2, 0x96, 0xc3, 0x51, 0xc3, 0x96, - 0xc3, 0x51, 0xc3, 0x96, 0xc3, 0x51, 0xc3, 0x96, 0xc3, 0x51, 0xc4, 0x96, - 0xc4, 0x51, 0xc4, 0x96, 0xc4, 0x51, 0xc4, 0x96, 0xc4, 0x51, 0xc5, 0x96, - 0xc5, 0x51, 0xc5, 0x96, 0xc5, 0x51, 0xc5, 0x97, 0xc6, 0x51, 0xc6, 0x97, - 0xc7, 0x51, 0xc6, 0x97, 0xc6, 0x51, 0xc6, 0x97, 0xc7, 0x51, 0xc6, 0x97, - 0xc6, 0x51, 0xc7, 0x97, 0xc7, 0x51, 0xc7, 0x97, 0xc7, 0x51, 0xc7, 0x97, - 0xc7, 0x51, 0xc8, 0x97, 0xc8, 0x51, 0xc8, 0x97, 0xc8, 0x51, 0xc8, 0x97, - 0xc8, 0x51, 0xc9, 0x98, 0xca, 0x51, 0xc9, 0x98, 0xca, 0x51, 0xc9, 0x98, - 0xca, 0x51, 0xc9, 0x98, 0xca, 0x51, 0xca, 0x98, 0xca, 0x51, 0xca, 0x98, - 0xca, 0x51, 0xca, 0x98, 0xca, 0x51, 0xcb, 0x98, 0xcb, 0x51, 0xcb, 0x98, - 0xcb, 0x51, 0xcb, 0x98, 0xcb, 0x51, 0xcc, 0x98, 0xcc, 0x51, 0xcc, 0x98, - 0xcc, 0x51, 0xcc, 0x98, 0xcc, 0x51, 0xcc, 0x98, 0xcd, 0x51, 0xcd, 0x98, - 0xcd, 0x51, 0xcd, 0x98, 0xcd, 0x51, 0xcd, 0x98, 0xcd, 0x51, 0xce, 0x98, - 0xce, 0x51, 0xce, 0x98, 0xce, 0x51, 0xce, 0x98, 0xce, 0x51, 0xce, 0x98, - 0xce, 0x51, 0xcf, 0x98, 0xcf, 0x51, 0xcf, 0x98, 0xcf, 0x51, 0xcf, 0x98, - 0xcf, 0x51, 0xd0, 0x98, 0xd0, 0x51, 0xd0, 0x98, 0xd0, 0x51, 0xd0, 0x99, - 0xd0, 0x52, 0xd0, 0x99, 0xd0, 0x52, 0xd1, 0x99, 0xd1, 0x52, 0xd1, 0x99, - 0xd1, 0x52, 0xd1, 0x99, 0xd1, 0x52, 0xd2, 0x99, 0xd2, 0x52, 0xd2, 0x99, - 0xd2, 0x52, 0xd2, 0x99, 0xd2, 0x52, 0xd2, 0x99, 0xd2, 0x52, 0xd2, 0x99, - 0xd3, 0x52, 0xd2, 0x99, 0xd3, 0x52, 0xd2, 0x99, 0xd3, 0x52, 0xd2, 0x99, - 0xd4, 0x52, 0xd2, 0x99, 0xd4, 0x52, 0xd2, 0x99, 0xd4, 0x52, 0xd2, 0x99, - 0xd4, 0x52, 0xd2, 0x99, 0xd5, 0x52, 0xd2, 0x99, 0xd5, 0x52, 0xd7, 0x99, - 0xd5, 0x4c, 0xd7, 0x99, 0xd6, 0x4c, 0xd7, 0x99, 0xd6, 0x4c, 0xd7, 0x99, - 0xd6, 0x4c, 0xd7, 0x99, 0xd6, 0x4c, 0xd7, 0x99, 0xd7, 0x4c, 0xd7, 0x99, - 0xd7, 0x4c, 0xd7, 0x99, 0xd7, 0x4c, 0xd7, 0x99, 0xd7, 0x4c, 0xd8, 0x99, - 0xd8, 0x4c, 0xd9, 0x99, 0xd8, 0x4d, 0xd9, 0x99, 0xd8, 0x4d, 0xd9, 0x99, - 0xd9, 0x4d, 0xd9, 0x99, 0xd9, 0x4d, 0xd9, 0x99, 0xd9, 0x4d, 0xd9, 0x99, - 0xd9, 0x4d, 0xda, 0x99, 0xda, 0x4d, 0xda, 0x99, 0xda, 0x4d, 0xda, 0x99, - 0xda, 0x4d, 0xdb, 0x99, 0xda, 0x4e, 0xdc, 0x99, 0xdb, 0x4e, 0xdb, 0x99, - 0xdb, 0x4e, 0xdc, 0x99, 0xdb, 0x4e, 0xdb, 0x99, 0xdb, 0x4e, 0xdc, 0x99, - 0xdc, 0x4e, 0xdc, 0x99, 0xdc, 0x4e, 0xdc, 0x99, 0xdc, 0x4e, 0xdd, 0x99, - 0xdd, 0x4e, 0xdd, 0x99, 0xdd, 0x4e, 0xde, 0x99, 0xdd, 0x4f, 0xde, 0x99, - 0xdd, 0x4f, 0xde, 0x99, 0xde, 0x4f, 0xde, 0x99, 0xde, 0x4f, 0xde, 0x99, - 0xde, 0x4f, 0xde, 0x99, 0xde, 0x4f, 0xdf, 0x99, 0xdf, 0x4f, 0xdf, 0x99, - 0xdf, 0x4f, 0xdf, 0x99, 0xdf, 0x4f, 0xdf, 0x99, 0xdf, 0x4f, 0xe0, 0x99, - 0xe0, 0x4f, 0xe1, 0x99, 0xe0, 0x50, 0xe1, 0x99, 0xe0, 0x50, 0xe1, 0x99, - 0xe1, 0x50, 0xe1, 0x99, 0xe1, 0x50, 0xe1, 0x99, 0xe1, 0x50, 0xe1, 0x99, - 0xe1, 0x50, 0xe2, 0x99, 0xe2, 0x50, 0xe2, 0x99, 0xe2, 0x50, 0xe2, 0x99, - 0xe2, 0x50, 0xe2, 0x99, 0xe2, 0x50, 0xe3, 0x99, 0xe3, 0x50, 0xe3, 0x9a, - 0xe3, 0x51, 0xe3, 0x9a, 0xe3, 0x51, 0xe3, 0x9a, 0xe3, 0x51, 0xe4, 0x9a, - 0xe4, 0x51, 0xe4, 0x9a, 0xe4, 0x51, 0xe4, 0x9a, 0xe4, 0x51, 0xe4, 0x9a, - 0xe4, 0x51, 0xe5, 0x9a, 0xe5, 0x51, 0xe5, 0x9a, 0xe5, 0x51, 0xe5, 0x9a, - 0xe5, 0x51, 0xe5, 0x9a, 0xe5, 0x51, 0xe6, 0x9a, 0xe5, 0x51, 0xe6, 0x9b, - 0xe6, 0x51, 0xe6, 0x9b, 0xe6, 0x51, 0xe6, 0x9b, 0xe6, 0x51, 0xe7, 0x9b, - 0xe7, 0x51, 0xe7, 0x9b, 0xe7, 0x51, 0xe7, 0x9b, 0xe7, 0x51, 0xe7, 0x9b, - 0xe7, 0x51, 0xe8, 0x9b, 0xe7, 0x51, 0xe8, 0x9b, 0xe7, 0x51, 0xe8, 0x9b, - 0xe7, 0x51, 0xe8, 0x9b, 0xe7, 0x51, 0xe9, 0x9c, 0xe9, 0x51, 0xe9, 0x9c, - 0xe9, 0x51, 0xe9, 0x9c, 0xe9, 0x51, 0xe9, 0x9c, 0xe9, 0x51, 0xea, 0x9c, - 0xea, 0x51, 0xea, 0x9c, 0xea, 0x51, 0xea, 0x9c, 0xea, 0x51, 0xea, 0x9c, - 0xea, 0x51, 0xeb, 0x9c, 0xea, 0x51, 0xeb, 0x9c, 0xea, 0x51, 0xeb, 0x9d, - 0xeb, 0x51, 0xeb, 0x9d, 0xeb, 0x51, 0xec, 0x9d, 0xec, 0x51, 0xec, 0x9d, - 0xec, 0x51, 0xec, 0x9d, 0xec, 0x51, 0xec, 0x9d, 0xec, 0x51, 0xec, 0x9d, - 0xec, 0x51, 0xed, 0x9d, 0xec, 0x51, 0xed, 0x9d, 0xec, 0x51, 0xed, 0x9d, - 0xed, 0x51, 0xed, 0x9d, 0xed, 0x51, 0xee, 0x9d, 0xee, 0x51, 0xee, 0x9d, - 0xee, 0x51, 0xee, 0x9d, 0xee, 0x51, 0xee, 0x9d, 0xee, 0x51, 0xef, 0x9d, - 0xee, 0x51, 0xef, 0x9d, 0xee, 0x51, 0xef, 0x9d, 0xee, 0x51, 0xef, 0x9d, - 0xee, 0x51, 0xf0, 0x9d, 0xee, 0x51, 0xf0, 0x9e, 0xf0, 0x51, 0xf0, 0x9e, - 0xf0, 0x51, 0xf0, 0x9e, 0xf0, 0x51, 0xf1, 0x9e, 0xf1, 0x51, 0xf1, 0x9e, - 0xf0, 0x51, 0xf1, 0x9e, 0xf1, 0x51, 0xf1, 0x9e, 0xf0, 0x51, 0xf2, 0x9e, - 0xf1, 0x51, 0xf2, 0x9e, 0xf0, 0x51, 0xf2, 0x9e, 0xf1, 0x51, 0xf2, 0x9f, - 0xf2, 0x51, 0xf2, 0x9f, 0xf2, 0x51, 0xf3, 0x9f, 0xf3, 0x51, 0xf3, 0x9f, - 0xf2, 0x51, 0xf3, 0x9f, 0xf3, 0x51, 0xf3, 0x9f, 0xf2, 0x51, 0xf4, 0x9f, - 0xf3, 0x51, 0xf4, 0x9f, 0xf2, 0x51, 0xf4, 0x9f, 0xf3, 0x51, 0xf4, 0xa0, - 0xf4, 0x51, 0xf5, 0xa0, 0xf5, 0x51, 0xf5, 0xa0, 0xf5, 0x51, 0xf5, 0xa0, - 0xf5, 0x51, 0xf5, 0xa0, 0xf5, 0x51, 0xf5, 0xa0, 0xf5, 0x51, 0xf6, 0xa0, - 0xf5, 0x51, 0xf6, 0xa0, 0xf5, 0x51, 0xf6, 0xa0, 0xf5, 0x51, 0xf6, 0xa0, - 0xf5, 0x51, 0xf7, 0xa0, 0xf5, 0x51, 0xf7, 0xa1, 0xf7, 0x51, 0xf7, 0xa1, - 0xf7, 0x51, 0xf7, 0xa1, 0xf7, 0x51, 0xf8, 0xa1, 0xf7, 0x51, 0xf8, 0xa1, - 0xf7, 0x51, 0xf8, 0xa1, 0xf7, 0x51, 0xf8, 0xa1, 0xf7, 0x51, 0xf8, 0xa1, - 0xf7, 0x51, 0xf9, 0xa1, 0xf7, 0x51, 0xf9, 0xa1, 0xf7, 0x51, 0xf9, 0xa1, - 0xf9, 0x51, 0xf9, 0xa1, 0xf9, 0x51, 0xfa, 0xa1, 0xf9, 0x51, 0xfa, 0xa1, - 0xf9, 0x51, 0xfa, 0xa1, 0xf9, 0x51, 0xfa, 0xa1, 0xf9, 0x51, 0xfa, 0xa1, - 0xf9, 0x51, 0xfb, 0xa1, 0xf9, 0x51, 0xfb, 0xa1, 0xf9, 0x51, 0xfb, 0xa2, - 0xfb, 0x51, 0xfb, 0xa2, 0xfb, 0x51, 0xfc, 0xa2, 0xfb, 0x51, 0xfc, 0xa2, - 0xfb, 0x51, 0xfc, 0xa2, 0xfb, 0x51, 0xfc, 0xa2, 0xfb, 0x51, 0xfc, 0xa2, - 0xfb, 0x51, 0xfd, 0xa2, 0xfb, 0x51, 0xfd, 0xa2, 0xfb, 0x51, 0xfd, 0xa2, - 0xfb, 0x51, 0xfd, 0xa2, 0xfb, 0x51, 0xfe, 0xa2, 0xfb, 0x51, 0xfe, 0xa2, - 0xfb, 0x51, 0xfe, 0xa2, 0xfb, 0x51, 0xfe, 0xa2, 0xfb, 0x51, 0xfe, 0xa2, - 0xfb, 0x51, 0xff, 0xa2, 0xfb, 0x51, 0xff, 0xa2, 0xfb, 0x51, 0x03, 0xa0, - 0x97, 0x52, 0x0a, 0xa3, 0x97, 0x52, 0x0f, 0xa0, 0x97, 0x52, 0x14, 0xa3, - 0x97, 0x52, 0x17, 0xa0, 0x97, 0x52, 0x1b, 0xa3, 0x97, 0x52, 0x1e, 0xa0, - 0x97, 0x52, 0x20, 0xa3, 0x97, 0x52, 0x23, 0xa0, 0x97, 0x52, 0x25, 0xa3, - 0x97, 0x52, 0x27, 0xa0, 0x97, 0x52, 0x29, 0xa3, 0x97, 0x52, 0x2b, 0xa0, - 0x97, 0x52, 0x2d, 0xa3, 0x97, 0x52, 0x2f, 0xa0, 0x97, 0x52, 0x31, 0xa3, - 0x97, 0x52, 0x32, 0xa0, 0x97, 0x52, 0x34, 0xa3, 0x97, 0x52, 0x35, 0xa0, - 0x97, 0x52, 0x37, 0xa3, 0x97, 0x52, 0x38, 0xa0, 0x97, 0x52, 0x3a, 0xa3, - 0x97, 0x52, 0x3b, 0xa0, 0x97, 0x52, 0x3c, 0xa3, 0x97, 0x52, 0x3e, 0xa0, - 0x97, 0x52, 0x3f, 0xa3, 0x97, 0x52, 0x40, 0xa0, 0x97, 0x52, 0x42, 0xa3, - 0x97, 0x52, 0x43, 0xa0, 0x97, 0x52, 0x44, 0xa3, 0x97, 0x52, 0x45, 0xa0, - 0x97, 0x52, 0x46, 0xa3, 0x97, 0x52, 0x47, 0xa0, 0x97, 0x52, 0x48, 0xa3, - 0x97, 0x52, 0x49, 0xa0, 0x97, 0x52, 0x4a, 0xa3, 0x97, 0x52, 0x4b, 0xa0, - 0x97, 0x52, 0x4c, 0xa3, 0x97, 0x52, 0x4d, 0xa0, 0x97, 0x52, 0x4e, 0x9e, - 0x98, 0x52, 0x4f, 0xa0, 0x97, 0x52, 0x50, 0x9e, 0x98, 0x52, 0x51, 0xa0, - 0x97, 0x52, 0x52, 0x9e, 0x98, 0x52, 0x53, 0xa0, 0x97, 0x52, 0x54, 0x9e, - 0x98, 0x52, 0x55, 0xa0, 0x97, 0x52, 0x56, 0x9e, 0x98, 0x52, 0x57, 0xa0, - 0x97, 0x52, 0x58, 0x9e, 0x98, 0x52, 0x58, 0xa0, 0x97, 0x52, 0x59, 0x9e, - 0x98, 0x52, 0x5a, 0xa0, 0x97, 0x52, 0x5b, 0x9e, 0x98, 0x52, 0x5c, 0xa0, - 0x97, 0x52, 0x5d, 0x9e, 0x98, 0x52, 0x5d, 0xa0, 0x97, 0x52, 0x5e, 0x9e, - 0x98, 0x52, 0x5f, 0xa0, 0x97, 0x52, 0x60, 0x9e, 0x98, 0x52, 0x60, 0xa0, - 0x97, 0x52, 0x61, 0x9e, 0x98, 0x52, 0x62, 0xa0, 0x97, 0x52, 0x63, 0x9e, - 0x98, 0x52, 0x63, 0xa0, 0x97, 0x52, 0x64, 0x9e, 0x98, 0x52, 0x65, 0xa0, - 0x97, 0x52, 0x66, 0x9e, 0x98, 0x52, 0x66, 0xa0, 0x97, 0x52, 0x67, 0x9e, - 0x98, 0x52, 0x68, 0xa0, 0x97, 0x52, 0x68, 0x9e, 0x98, 0x52, 0x69, 0xa0, - 0x97, 0x52, 0x6a, 0x9e, 0x98, 0x52, 0x6a, 0xa0, 0x97, 0x52, 0x6b, 0x9e, - 0x98, 0x52, 0x6c, 0xa0, 0x97, 0x52, 0x6c, 0x9e, 0x98, 0x52, 0x6d, 0xa0, - 0x97, 0x52, 0x6e, 0x9e, 0x98, 0x52, 0x6e, 0xa0, 0x97, 0x52, 0x6f, 0x9e, - 0x98, 0x52, 0x70, 0xa0, 0x97, 0x52, 0x70, 0x9e, 0x98, 0x52, 0x71, 0xa0, - 0x97, 0x52, 0x72, 0x9e, 0x98, 0x52, 0x72, 0xa0, 0x97, 0x52, 0x73, 0x9e, - 0x98, 0x52, 0x73, 0xa0, 0x97, 0x52, 0x74, 0x9e, 0x98, 0x52, 0x75, 0xa0, - 0x97, 0x52, 0x75, 0x9e, 0x98, 0x52, 0x76, 0xa0, 0x97, 0x52, 0x76, 0x9e, - 0x98, 0x52, 0x77, 0xa0, 0x97, 0x52, 0x78, 0x9e, 0x98, 0x52, 0x78, 0xa0, - 0x97, 0x52, 0x79, 0x9e, 0x98, 0x52, 0x79, 0xa0, 0x97, 0x52, 0x7a, 0x9e, - 0x98, 0x52, 0x7a, 0x9b, 0x98, 0x52, 0x7b, 0x9e, 0x98, 0x52, 0x7c, 0x9b, - 0x98, 0x52, 0x7c, 0x9e, 0x98, 0x52, 0x7d, 0x9b, 0x98, 0x52, 0x7d, 0x9e, - 0x98, 0x52, 0x7e, 0x9b, 0x98, 0x52, 0x7e, 0x9e, 0x98, 0x52, 0x7f, 0x9b, - 0x98, 0x52, 0x7f, 0x9e, 0x98, 0x52, 0x80, 0x9b, 0x98, 0x52, 0x81, 0x9e, - 0x98, 0x52, 0x81, 0x9b, 0x98, 0x52, 0x82, 0x9e, 0x98, 0x52, 0x82, 0x9b, - 0x98, 0x52, 0x83, 0x9e, 0x98, 0x52, 0x83, 0x9b, 0x98, 0x52, 0x84, 0x9e, - 0x98, 0x52, 0x84, 0x9b, 0x98, 0x52, 0x85, 0x9e, 0x98, 0x52, 0x85, 0x9b, - 0x98, 0x52, 0x86, 0x9e, 0x98, 0x52, 0x86, 0x9b, 0x98, 0x52, 0x87, 0x9e, - 0x98, 0x52, 0x87, 0x9b, 0x98, 0x52, 0x88, 0x9e, 0x98, 0x52, 0x88, 0x9b, - 0x98, 0x52, 0x89, 0x9e, 0x98, 0x52, 0x89, 0x9b, 0x98, 0x52, 0x8a, 0x9e, - 0x98, 0x52, 0x8a, 0x9b, 0x98, 0x52, 0x8b, 0x9e, 0x98, 0x52, 0x8b, 0x9b, - 0x98, 0x52, 0x8c, 0x9e, 0x98, 0x52, 0x8c, 0x9b, 0x98, 0x52, 0x8d, 0x9e, - 0x98, 0x52, 0x8d, 0x9b, 0x98, 0x52, 0x8e, 0x9a, 0x98, 0x52, 0x8e, 0x9b, - 0x98, 0x52, 0x8e, 0x9a, 0x98, 0x52, 0x8f, 0x9b, 0x98, 0x52, 0x8f, 0x9a, - 0x98, 0x52, 0x90, 0x9b, 0x98, 0x52, 0x90, 0x9a, 0x98, 0x52, 0x91, 0x9b, - 0x98, 0x52, 0x91, 0x9a, 0x98, 0x52, 0x92, 0x9b, 0x98, 0x52, 0x92, 0x9a, - 0x98, 0x52, 0x93, 0x9b, 0x98, 0x52, 0x93, 0x9a, 0x98, 0x52, 0x94, 0x9b, - 0x98, 0x52, 0x94, 0x9a, 0x98, 0x52, 0x94, 0x9b, 0x98, 0x52, 0x95, 0x9a, - 0x98, 0x52, 0x95, 0x9b, 0x98, 0x52, 0x96, 0x9a, 0x98, 0x52, 0x96, 0x9b, - 0x98, 0x52, 0x97, 0x9a, 0x98, 0x52, 0x97, 0x9a, 0x99, 0x52, 0x98, 0x9a, - 0x98, 0x52, 0x98, 0x9a, 0x99, 0x52, 0x98, 0x9a, 0x98, 0x52, 0x98, 0x9a, - 0x99, 0x52, 0x98, 0x9a, 0x99, 0x52, 0x98, 0x9a, 0x9a, 0x52, 0x9c, 0x9a, - 0x9a, 0x54, 0x9c, 0x9a, 0x9a, 0x52, 0x9d, 0x9a, 0x9b, 0x52, 0x9c, 0x9a, - 0x9b, 0x52, 0x9d, 0x9a, 0x9c, 0x52, 0x9c, 0x9a, 0x9b, 0x52, 0x9d, 0x9a, - 0x9c, 0x52, 0x9d, 0x9a, 0x9b, 0x52, 0x9d, 0x9a, 0x9c, 0x52, 0x9e, 0x98, - 0x9c, 0x52, 0x9e, 0x9a, 0x9c, 0x52, 0x9f, 0x98, 0x9c, 0x52, 0x9f, 0x9a, - 0x9c, 0x52, 0x9f, 0x98, 0x9c, 0x52, 0xa0, 0x9a, 0x9c, 0x52, 0xa0, 0x98, - 0x9c, 0x52, 0xa1, 0x9a, 0x9c, 0x52, 0xa1, 0x98, 0x9c, 0x52, 0xa1, 0x9a, - 0x9c, 0x52, 0xa2, 0x98, 0x9c, 0x52, 0xa2, 0x9a, 0x9c, 0x52, 0xa3, 0x98, - 0x9c, 0x52, 0xa3, 0x9a, 0x9c, 0x52, 0xa3, 0x98, 0x9c, 0x52, 0xa4, 0x9a, - 0x9c, 0x52, 0xa4, 0x98, 0x9c, 0x52, 0xa5, 0x9a, 0x9c, 0x52, 0xa5, 0x98, - 0x9c, 0x52, 0xa5, 0x9a, 0x9c, 0x52, 0xa6, 0x8f, 0xa6, 0x52, 0xa6, 0x8f, - 0xa6, 0x52, 0xa6, 0x8f, 0xa6, 0x52, 0xa7, 0x8f, 0xa7, 0x52, 0xa7, 0x90, - 0xaa, 0x52, 0xa8, 0x90, 0xab, 0x52, 0xa8, 0x90, 0xaa, 0x52, 0xa8, 0x90, - 0xab, 0x52, 0xa9, 0x90, 0xaa, 0x52, 0xa9, 0x90, 0xab, 0x52, 0xaa, 0x90, - 0xaa, 0x52, 0xaa, 0x90, 0xab, 0x52, 0xaa, 0x90, 0xaa, 0x52, 0xab, 0x90, - 0xab, 0x52, 0xab, 0x90, 0xab, 0x52, 0xab, 0x91, 0xae, 0x52, 0xac, 0x91, - 0xaf, 0x52, 0xac, 0x91, 0xae, 0x52, 0xac, 0x91, 0xaf, 0x52, 0xad, 0x91, - 0xae, 0x52, 0xad, 0x91, 0xaf, 0x52, 0xae, 0x91, 0xae, 0x52, 0xae, 0x91, - 0xaf, 0x52, 0xae, 0x91, 0xae, 0x52, 0xaf, 0x91, 0xaf, 0x52, 0xaf, 0x91, - 0xaf, 0x52, 0xaf, 0x92, 0xb2, 0x52, 0xb0, 0x92, 0xb3, 0x52, 0xb0, 0x92, - 0xb2, 0x52, 0xb0, 0x92, 0xb3, 0x52, 0xb1, 0x92, 0xb2, 0x52, 0xb1, 0x92, - 0xb3, 0x52, 0xb2, 0x92, 0xb2, 0x52, 0xb2, 0x92, 0xb3, 0x52, 0xb2, 0x92, - 0xb2, 0x52, 0xb3, 0x92, 0xb3, 0x52, 0xb3, 0x92, 0xb3, 0x52, 0xb3, 0x93, - 0xb6, 0x52, 0xb4, 0x93, 0xb6, 0x52, 0xb4, 0x93, 0xb6, 0x52, 0xb4, 0x93, - 0xb6, 0x52, 0xb5, 0x93, 0xb6, 0x52, 0xb5, 0x93, 0xb6, 0x52, 0xb5, 0x93, - 0xb6, 0x52, 0xb6, 0x93, 0xb6, 0x52, 0xb6, 0x93, 0xb6, 0x52, 0xb6, 0x93, - 0xb6, 0x52, 0xb7, 0x93, 0xb7, 0x52, 0xb7, 0x93, 0xb7, 0x52, 0xb7, 0x93, - 0xb7, 0x52, 0xb8, 0x93, 0xb8, 0x52, 0xb8, 0x94, 0xba, 0x52, 0xb8, 0x94, - 0xba, 0x52, 0xb9, 0x94, 0xba, 0x52, 0xb9, 0x94, 0xba, 0x52, 0xb9, 0x94, - 0xba, 0x52, 0xba, 0x94, 0xba, 0x52, 0xba, 0x94, 0xba, 0x52, 0xba, 0x94, - 0xba, 0x52, 0xbb, 0x94, 0xbb, 0x52, 0xbb, 0x94, 0xbb, 0x52, 0xbb, 0x94, - 0xbb, 0x52, 0xbc, 0x94, 0xbe, 0x52, 0xbc, 0x94, 0xbe, 0x52, 0xbc, 0x94, - 0xbe, 0x52, 0xbd, 0x94, 0xbe, 0x52, 0xbd, 0x94, 0xbe, 0x52, 0xbd, 0x94, - 0xbe, 0x52, 0xbe, 0x94, 0xbe, 0x52, 0xbe, 0x94, 0xbe, 0x52, 0xbe, 0x94, - 0xbe, 0x52, 0xbf, 0x94, 0xbf, 0x52, 0xbf, 0x94, 0xbf, 0x52, 0xbf, 0x95, - 0xc1, 0x52, 0xc0, 0x95, 0xc1, 0x52, 0xc0, 0x95, 0xc1, 0x52, 0xc0, 0x95, - 0xc1, 0x52, 0xc1, 0x95, 0xc1, 0x52, 0xc1, 0x95, 0xc1, 0x52, 0xc1, 0x95, - 0xc1, 0x52, 0xc1, 0x95, 0xc1, 0x52, 0xc2, 0x95, 0xc2, 0x52, 0xc2, 0x95, - 0xc2, 0x52, 0xc2, 0x95, 0xc2, 0x52, 0xc3, 0x95, 0xc3, 0x52, 0xc3, 0x95, - 0xc3, 0x52, 0xc3, 0x96, 0xc5, 0x52, 0xc4, 0x96, 0xc5, 0x52, 0xc4, 0x96, - 0xc5, 0x52, 0xc4, 0x96, 0xc5, 0x52, 0xc5, 0x96, 0xc5, 0x52, 0xc5, 0x96, - 0xc5, 0x52, 0xc5, 0x96, 0xc5, 0x52, 0xc6, 0x96, 0xc6, 0x52, 0xc6, 0x96, - 0xc6, 0x52, 0xc6, 0x96, 0xc6, 0x52, 0xc6, 0x96, 0xc6, 0x52, 0xc7, 0x97, - 0xc8, 0x52, 0xc7, 0x97, 0xc8, 0x52, 0xc7, 0x97, 0xc8, 0x52, 0xc8, 0x97, - 0xc8, 0x52, 0xc8, 0x97, 0xc8, 0x52, 0xc8, 0x97, 0xc8, 0x52, 0xc9, 0x97, - 0xc9, 0x52, 0xc9, 0x97, 0xc9, 0x52, 0xc9, 0x97, 0xc9, 0x52, 0xc9, 0x97, - 0xc9, 0x52, 0xca, 0x97, 0xca, 0x52, 0xca, 0x98, 0xcb, 0x52, 0xca, 0x98, - 0xcc, 0x52, 0xcb, 0x98, 0xcb, 0x52, 0xcb, 0x98, 0xcc, 0x52, 0xcb, 0x98, - 0xcb, 0x52, 0xcc, 0x98, 0xcc, 0x52, 0xcc, 0x98, 0xcc, 0x52, 0xcc, 0x98, - 0xcc, 0x52, 0xcc, 0x98, 0xcc, 0x52, 0xcd, 0x98, 0xcd, 0x52, 0xcd, 0x98, - 0xcd, 0x52, 0xcd, 0x98, 0xcd, 0x52, 0xce, 0x98, 0xce, 0x52, 0xce, 0x99, - 0xce, 0x52, 0xce, 0x99, 0xcf, 0x52, 0xce, 0x99, 0xce, 0x52, 0xcf, 0x99, - 0xcf, 0x52, 0xcf, 0x99, 0xcf, 0x52, 0xcf, 0x99, 0xcf, 0x52, 0xd0, 0x99, - 0xd0, 0x52, 0xd0, 0x99, 0xd0, 0x52, 0xd0, 0x99, 0xd0, 0x52, 0xd0, 0x99, - 0xd0, 0x52, 0xd1, 0x99, 0xd1, 0x52, 0xd1, 0x99, 0xd1, 0x52, 0xd1, 0x99, - 0xd1, 0x52, 0xd2, 0x9a, 0xd2, 0x53, 0xd2, 0x9a, 0xd2, 0x53, 0xd2, 0x9a, - 0xd2, 0x53, 0xd2, 0x9a, 0xd2, 0x53, 0xd2, 0x9a, 0xd3, 0x53, 0xd2, 0x9a, - 0xd3, 0x53, 0xd2, 0x9a, 0xd3, 0x53, 0xd2, 0x9a, 0xd4, 0x53, 0xd2, 0x9a, - 0xd4, 0x53, 0xd2, 0x9a, 0xd4, 0x53, 0xd2, 0x9a, 0xd4, 0x53, 0xd2, 0x9a, - 0xd5, 0x53, 0xd2, 0x9a, 0xd5, 0x53, 0xd5, 0x9a, 0xd5, 0x4c, 0xd6, 0x9a, - 0xd6, 0x4c, 0xd6, 0x9a, 0xd6, 0x4c, 0xd8, 0x9a, 0xd6, 0x4d, 0xd8, 0x9a, - 0xd6, 0x4d, 0xd8, 0x9a, 0xd7, 0x4d, 0xd8, 0x9a, 0xd7, 0x4d, 0xd8, 0x9a, - 0xd7, 0x4d, 0xd8, 0x9a, 0xd7, 0x4d, 0xd8, 0x9a, 0xd8, 0x4d, 0xd8, 0x9a, - 0xd8, 0x4d, 0xd8, 0x9a, 0xd8, 0x4d, 0xd9, 0x9a, 0xd9, 0x4d, 0xd9, 0x9a, - 0xd9, 0x4d, 0xd9, 0x9a, 0xd9, 0x4d, 0xda, 0x9a, 0xd9, 0x4e, 0xdb, 0x9a, - 0xda, 0x4e, 0xda, 0x9a, 0xda, 0x4e, 0xdb, 0x9a, 0xda, 0x4e, 0xda, 0x9a, - 0xda, 0x4e, 0xdb, 0x9a, 0xdb, 0x4e, 0xdb, 0x9a, 0xdb, 0x4e, 0xdb, 0x9a, - 0xdb, 0x4e, 0xdb, 0x9a, 0xdb, 0x4e, 0xdd, 0x9a, 0xdc, 0x4f, 0xdd, 0x9a, - 0xdc, 0x4f, 0xdd, 0x9a, 0xdc, 0x4f, 0xdd, 0x9a, 0xdd, 0x4f, 0xdd, 0x9a, - 0xdd, 0x4f, 0xdd, 0x9a, 0xdd, 0x4f, 0xdd, 0x9a, 0xdd, 0x4f, 0xde, 0x9a, - 0xde, 0x4f, 0xde, 0x9a, 0xde, 0x4f, 0xdf, 0x9a, 0xde, 0x50, 0xdf, 0x9a, - 0xde, 0x50, 0xdf, 0x9a, 0xdf, 0x50, 0xdf, 0x9a, 0xdf, 0x50, 0xdf, 0x9a, - 0xdf, 0x50, 0xdf, 0x9a, 0xdf, 0x50, 0xe0, 0x9a, 0xe0, 0x50, 0xe0, 0x9a, - 0xe0, 0x50, 0xe0, 0x9a, 0xe0, 0x50, 0xe1, 0x9a, 0xe1, 0x50, 0xe1, 0x9a, - 0xe1, 0x50, 0xe1, 0x9a, 0xe1, 0x50, 0xe2, 0x9a, 0xe1, 0x51, 0xe2, 0x9a, - 0xe2, 0x51, 0xe2, 0x9a, 0xe2, 0x51, 0xe2, 0x9a, 0xe2, 0x51, 0xe2, 0x9a, - 0xe2, 0x51, 0xe3, 0x9a, 0xe3, 0x51, 0xe3, 0x9a, 0xe3, 0x51, 0xe3, 0x9a, - 0xe3, 0x51, 0xe3, 0x9a, 0xe3, 0x51, 0xe4, 0x9a, 0xe4, 0x51, 0xe4, 0x9a, - 0xe4, 0x51, 0xe4, 0x9a, 0xe4, 0x52, 0xe4, 0x9a, 0xe4, 0x52, 0xe5, 0x9a, - 0xe5, 0x52, 0xe5, 0x9a, 0xe5, 0x52, 0xe5, 0x9a, 0xe5, 0x52, 0xe5, 0x9a, - 0xe5, 0x52, 0xe6, 0x9a, 0xe6, 0x52, 0xe6, 0x9a, 0xe6, 0x52, 0xe6, 0x9a, - 0xe6, 0x52, 0xe6, 0x9a, 0xe6, 0x52, 0xe7, 0x9a, 0xe6, 0x52, 0xe7, 0x9b, - 0xe7, 0x52, 0xe7, 0x9b, 0xe7, 0x52, 0xe7, 0x9b, 0xe7, 0x52, 0xe8, 0x9b, - 0xe8, 0x52, 0xe8, 0x9b, 0xe8, 0x52, 0xe8, 0x9b, 0xe8, 0x52, 0xe8, 0x9b, - 0xe8, 0x52, 0xe9, 0x9b, 0xe9, 0x52, 0xe9, 0x9b, 0xe8, 0x52, 0xe9, 0x9b, - 0xe9, 0x52, 0xe9, 0x9b, 0xe8, 0x52, 0xea, 0x9b, 0xe9, 0x52, 0xea, 0x9c, - 0xea, 0x52, 0xea, 0x9c, 0xea, 0x52, 0xea, 0x9c, 0xea, 0x52, 0xeb, 0x9c, - 0xeb, 0x52, 0xeb, 0x9c, 0xeb, 0x52, 0xeb, 0x9c, 0xeb, 0x52, 0xeb, 0x9c, - 0xeb, 0x52, 0xec, 0x9c, 0xeb, 0x52, 0xec, 0x9c, 0xeb, 0x52, 0xec, 0x9d, - 0xec, 0x52, 0xec, 0x9d, 0xec, 0x52, 0xec, 0x9d, 0xec, 0x52, 0xed, 0x9d, - 0xed, 0x52, 0xed, 0x9d, 0xed, 0x52, 0xed, 0x9d, 0xed, 0x52, 0xed, 0x9d, - 0xed, 0x52, 0xee, 0x9d, 0xed, 0x52, 0xee, 0x9d, 0xed, 0x52, 0xee, 0x9d, - 0xed, 0x52, 0xee, 0x9e, 0xee, 0x52, 0xef, 0x9e, 0xef, 0x52, 0xef, 0x9e, - 0xef, 0x52, 0xef, 0x9e, 0xef, 0x52, 0xef, 0x9e, 0xef, 0x52, 0xf0, 0x9e, - 0xef, 0x52, 0xf0, 0x9e, 0xef, 0x52, 0xf0, 0x9e, 0xef, 0x52, 0xf0, 0x9e, - 0xef, 0x52, 0xf1, 0x9e, 0xef, 0x52, 0xf1, 0x9e, 0xef, 0x52, 0xf1, 0x9f, - 0xf1, 0x52, 0xf1, 0x9f, 0xf1, 0x52, 0xf2, 0x9f, 0xf2, 0x52, 0xf2, 0x9f, - 0xf1, 0x52, 0xf2, 0x9f, 0xf2, 0x52, 0xf2, 0x9f, 0xf1, 0x52, 0xf2, 0x9f, - 0xf2, 0x52, 0xf3, 0x9f, 0xf1, 0x52, 0xf3, 0x9f, 0xf2, 0x52, 0xf3, 0x9f, - 0xf3, 0x52, 0xf3, 0x9f, 0xf3, 0x52, 0xf4, 0x9f, 0xf4, 0x52, 0xf4, 0x9f, - 0xf4, 0x52, 0xf4, 0x9f, 0xf4, 0x52, 0xf4, 0x9f, 0xf4, 0x52, 0xf5, 0x9f, - 0xf4, 0x52, 0xf5, 0x9f, 0xf4, 0x52, 0xf5, 0x9f, 0xf4, 0x52, 0xf5, 0x9f, - 0xf4, 0x52, 0xf5, 0xa0, 0xf5, 0x52, 0xf6, 0xa0, 0xf6, 0x52, 0xf6, 0xa0, - 0xf6, 0x52, 0xf6, 0xa0, 0xf6, 0x52, 0xf6, 0xa0, 0xf6, 0x52, 0xf7, 0xa0, - 0xf6, 0x52, 0xf7, 0xa0, 0xf6, 0x52, 0xf7, 0xa0, 0xf6, 0x52, 0xf7, 0xa0, - 0xf6, 0x52, 0xf8, 0xa0, 0xf6, 0x52, 0xf8, 0xa0, 0xf6, 0x52, 0xf8, 0xa1, - 0xf8, 0x52, 0xf8, 0xa1, 0xf8, 0x52, 0xf8, 0xa1, 0xf8, 0x52, 0xf9, 0xa1, - 0xf8, 0x52, 0xf9, 0xa1, 0xf8, 0x52, 0xf9, 0xa1, 0xf8, 0x52, 0xf9, 0xa1, - 0xf8, 0x52, 0xfa, 0xa1, 0xf8, 0x52, 0xfa, 0xa1, 0xf8, 0x52, 0xfa, 0xa2, - 0xfa, 0x52, 0xfa, 0xa2, 0xfa, 0x52, 0xfa, 0xa2, 0xfa, 0x52, 0xfb, 0xa2, - 0xfa, 0x52, 0xfb, 0xa2, 0xfa, 0x52, 0xfb, 0xa2, 0xfa, 0x52, 0xfb, 0xa2, - 0xfa, 0x52, 0xfc, 0xa2, 0xfa, 0x52, 0xfc, 0xa2, 0xfa, 0x52, 0xfc, 0xa2, - 0xfa, 0x52, 0xfc, 0xa3, 0xfb, 0x52, 0xfc, 0xa3, 0xfc, 0x52, 0xfd, 0xa3, - 0xfb, 0x52, 0xfd, 0xa3, 0xfc, 0x52, 0xfd, 0xa3, 0xfb, 0x52, 0xfd, 0xa3, - 0xfc, 0x52, 0xfe, 0xa3, 0xfb, 0x52, 0xfe, 0xa3, 0xfc, 0x52, 0xfe, 0xa3, - 0xfb, 0x52, 0xfe, 0xa3, 0xfc, 0x52, 0xfe, 0xa3, 0xfb, 0x52, 0xff, 0xa3, - 0xfc, 0x52, 0xff, 0xa3, 0xfb, 0x52, 0x03, 0xa5, 0x96, 0x52, 0x0a, 0xa5, - 0x96, 0x52, 0x0f, 0xa5, 0x96, 0x52, 0x14, 0xa3, 0x97, 0x52, 0x17, 0xa5, - 0x96, 0x52, 0x1b, 0xa3, 0x97, 0x52, 0x1e, 0xa5, 0x96, 0x52, 0x20, 0xa3, - 0x97, 0x52, 0x23, 0xa5, 0x96, 0x52, 0x25, 0xa3, 0x97, 0x52, 0x27, 0xa5, - 0x96, 0x52, 0x29, 0xa3, 0x97, 0x52, 0x2b, 0xa5, 0x96, 0x52, 0x2d, 0xa3, - 0x97, 0x52, 0x2f, 0xa5, 0x96, 0x52, 0x31, 0xa3, 0x97, 0x52, 0x32, 0xa5, - 0x96, 0x52, 0x34, 0xa3, 0x97, 0x52, 0x35, 0xa5, 0x96, 0x52, 0x37, 0xa3, - 0x97, 0x52, 0x38, 0xa5, 0x96, 0x52, 0x3a, 0xa3, 0x97, 0x52, 0x3b, 0xa5, - 0x96, 0x52, 0x3c, 0xa3, 0x97, 0x52, 0x3e, 0xa5, 0x96, 0x52, 0x3f, 0xa3, - 0x97, 0x52, 0x40, 0xa1, 0x97, 0x52, 0x42, 0xa3, 0x97, 0x52, 0x43, 0xa1, - 0x97, 0x52, 0x44, 0xa3, 0x97, 0x52, 0x45, 0xa1, 0x97, 0x52, 0x46, 0xa3, - 0x97, 0x52, 0x47, 0xa1, 0x97, 0x52, 0x48, 0xa3, 0x97, 0x52, 0x49, 0xa1, - 0x97, 0x52, 0x4a, 0xa3, 0x97, 0x52, 0x4b, 0xa1, 0x97, 0x52, 0x4c, 0xa3, - 0x97, 0x52, 0x4d, 0xa1, 0x97, 0x52, 0x4e, 0xa3, 0x97, 0x52, 0x4f, 0xa1, - 0x97, 0x52, 0x50, 0xa3, 0x97, 0x52, 0x51, 0xa1, 0x97, 0x52, 0x52, 0xa3, - 0x97, 0x52, 0x53, 0xa1, 0x97, 0x52, 0x54, 0xa3, 0x97, 0x52, 0x55, 0xa1, - 0x97, 0x52, 0x56, 0xa3, 0x97, 0x52, 0x57, 0xa1, 0x97, 0x52, 0x58, 0xa3, - 0x97, 0x52, 0x58, 0xa1, 0x97, 0x52, 0x59, 0xa3, 0x97, 0x52, 0x5a, 0xa1, - 0x97, 0x52, 0x5b, 0xa3, 0x97, 0x52, 0x5c, 0xa1, 0x97, 0x52, 0x5d, 0x9d, - 0x98, 0x52, 0x5d, 0xa1, 0x97, 0x52, 0x5e, 0x9d, 0x98, 0x52, 0x5f, 0xa1, - 0x97, 0x52, 0x60, 0x9d, 0x98, 0x52, 0x60, 0xa1, 0x97, 0x52, 0x61, 0x9d, - 0x98, 0x52, 0x62, 0xa1, 0x97, 0x52, 0x63, 0x9d, 0x98, 0x52, 0x63, 0xa1, - 0x97, 0x52, 0x64, 0x9d, 0x98, 0x52, 0x65, 0xa1, 0x97, 0x52, 0x66, 0x9d, - 0x98, 0x52, 0x66, 0xa1, 0x97, 0x52, 0x67, 0x9d, 0x98, 0x52, 0x68, 0xa1, - 0x97, 0x52, 0x68, 0x9d, 0x98, 0x52, 0x69, 0xa1, 0x97, 0x52, 0x6a, 0x9d, - 0x98, 0x52, 0x6a, 0xa1, 0x97, 0x52, 0x6b, 0x9d, 0x98, 0x52, 0x6c, 0xa1, - 0x97, 0x52, 0x6c, 0x9d, 0x98, 0x52, 0x6d, 0xa1, 0x97, 0x52, 0x6e, 0x9d, - 0x98, 0x52, 0x6e, 0xa1, 0x97, 0x52, 0x6f, 0x9d, 0x98, 0x52, 0x70, 0xa1, - 0x97, 0x52, 0x70, 0x9d, 0x98, 0x52, 0x71, 0xa1, 0x97, 0x52, 0x72, 0x9d, - 0x98, 0x52, 0x72, 0xa1, 0x97, 0x52, 0x73, 0x9d, 0x98, 0x52, 0x73, 0xa1, - 0x97, 0x52, 0x74, 0x9d, 0x98, 0x52, 0x75, 0xa1, 0x97, 0x52, 0x75, 0x9d, - 0x98, 0x52, 0x76, 0xa1, 0x97, 0x52, 0x76, 0x9d, 0x98, 0x52, 0x77, 0xa1, - 0x97, 0x52, 0x78, 0x9d, 0x98, 0x52, 0x78, 0x9b, 0x98, 0x52, 0x79, 0x9d, - 0x98, 0x52, 0x79, 0x9b, 0x98, 0x52, 0x7a, 0x9d, 0x98, 0x52, 0x7a, 0x9b, - 0x98, 0x52, 0x7b, 0x9d, 0x98, 0x52, 0x7c, 0x9b, 0x98, 0x52, 0x7c, 0x9d, - 0x98, 0x52, 0x7d, 0x9b, 0x98, 0x52, 0x7d, 0x9d, 0x98, 0x52, 0x7e, 0x9b, - 0x98, 0x52, 0x7e, 0x9d, 0x98, 0x52, 0x7f, 0x9b, 0x98, 0x52, 0x7f, 0x9d, - 0x98, 0x52, 0x80, 0x9b, 0x98, 0x52, 0x81, 0x9d, 0x98, 0x52, 0x81, 0x9b, - 0x98, 0x52, 0x82, 0x9d, 0x98, 0x52, 0x82, 0x9b, 0x98, 0x52, 0x83, 0x9d, - 0x98, 0x52, 0x83, 0x9b, 0x98, 0x52, 0x84, 0x9d, 0x98, 0x52, 0x84, 0x9b, - 0x98, 0x52, 0x85, 0x9d, 0x98, 0x52, 0x85, 0x9b, 0x98, 0x52, 0x86, 0x9d, - 0x98, 0x52, 0x86, 0x9b, 0x98, 0x52, 0x87, 0x9d, 0x98, 0x52, 0x87, 0x9b, - 0x98, 0x52, 0x88, 0x9d, 0x98, 0x52, 0x88, 0x9b, 0x98, 0x52, 0x89, 0x9d, - 0x98, 0x52, 0x89, 0x9b, 0x98, 0x52, 0x8a, 0x9d, 0x98, 0x52, 0x8a, 0x9b, - 0x98, 0x52, 0x8b, 0x9d, 0x98, 0x52, 0x8b, 0x9b, 0x98, 0x52, 0x8c, 0x9d, - 0x98, 0x52, 0x8c, 0x9b, 0x98, 0x52, 0x8d, 0x9d, 0x98, 0x52, 0x8d, 0x9b, - 0x98, 0x52, 0x8e, 0x9d, 0x98, 0x52, 0x8e, 0x9b, 0x98, 0x52, 0x8e, 0x9d, - 0x98, 0x52, 0x8f, 0x9b, 0x98, 0x52, 0x8f, 0x9d, 0x98, 0x52, 0x90, 0x9b, - 0x98, 0x52, 0x90, 0x9d, 0x98, 0x52, 0x91, 0x9b, 0x98, 0x52, 0x91, 0x9a, - 0x98, 0x52, 0x92, 0x9b, 0x98, 0x52, 0x92, 0x9a, 0x98, 0x52, 0x93, 0x9b, - 0x98, 0x52, 0x93, 0x9a, 0x98, 0x52, 0x94, 0x9b, 0x98, 0x52, 0x94, 0x9a, - 0x98, 0x52, 0x94, 0x9b, 0x98, 0x52, 0x95, 0x9a, 0x98, 0x52, 0x95, 0x9b, - 0x98, 0x52, 0x96, 0x9a, 0x98, 0x52, 0x96, 0x9b, 0x98, 0x52, 0x97, 0x9a, - 0x98, 0x52, 0x97, 0x9b, 0x98, 0x52, 0x98, 0x9a, 0x98, 0x52, 0x98, 0x9b, - 0x98, 0x52, 0x98, 0x9a, 0x98, 0x52, 0x98, 0x9a, 0x99, 0x52, 0x98, 0x9a, - 0x99, 0x52, 0x98, 0x9a, 0x9a, 0x52, 0x9c, 0x9a, 0x9a, 0x53, 0x9c, 0x9a, - 0x9a, 0x52, 0x9c, 0x9a, 0x9b, 0x53, 0x9c, 0x9a, 0x9b, 0x52, 0x9d, 0x9a, - 0x9c, 0x52, 0x9c, 0x9a, 0x9b, 0x52, 0x9d, 0x9a, 0x9c, 0x52, 0x9d, 0x9a, - 0x9b, 0x52, 0x9d, 0x9a, 0x9c, 0x52, 0x9e, 0x98, 0x9c, 0x52, 0x9e, 0x9a, - 0x9c, 0x52, 0x9f, 0x98, 0x9c, 0x52, 0x9f, 0x9a, 0x9c, 0x52, 0x9f, 0x98, - 0x9c, 0x52, 0xa0, 0x9a, 0x9c, 0x52, 0xa0, 0x98, 0x9c, 0x52, 0xa1, 0x9a, - 0x9c, 0x52, 0xa1, 0x98, 0x9c, 0x52, 0xa1, 0x9a, 0x9c, 0x52, 0xa2, 0x98, - 0x9c, 0x52, 0xa2, 0x9a, 0x9c, 0x52, 0xa3, 0x98, 0x9c, 0x52, 0xa3, 0x9a, - 0x9c, 0x52, 0xa3, 0x98, 0x9c, 0x52, 0xa4, 0x9a, 0x9c, 0x52, 0xa4, 0x98, - 0x9c, 0x52, 0xa5, 0x9a, 0x9c, 0x52, 0xa5, 0x98, 0x9c, 0x52, 0xa5, 0x9a, - 0x9c, 0x52, 0xa6, 0x98, 0x9c, 0x52, 0xa6, 0x8f, 0xa8, 0x52, 0xa6, 0x8f, - 0xa8, 0x52, 0xa7, 0x8f, 0xa8, 0x52, 0xa7, 0x8f, 0xa8, 0x52, 0xa8, 0x8f, - 0xa8, 0x52, 0xa8, 0x8f, 0xa8, 0x52, 0xa8, 0x8f, 0xa8, 0x52, 0xa9, 0x8f, - 0xa9, 0x52, 0xa9, 0x8f, 0xa9, 0x52, 0xaa, 0x90, 0xac, 0x52, 0xaa, 0x90, - 0xad, 0x52, 0xaa, 0x90, 0xac, 0x52, 0xab, 0x90, 0xad, 0x52, 0xab, 0x90, - 0xac, 0x52, 0xab, 0x90, 0xad, 0x52, 0xac, 0x90, 0xac, 0x52, 0xac, 0x90, - 0xad, 0x52, 0xac, 0x90, 0xac, 0x52, 0xad, 0x90, 0xad, 0x52, 0xad, 0x90, - 0xad, 0x52, 0xae, 0x91, 0xb0, 0x52, 0xae, 0x91, 0xb1, 0x52, 0xae, 0x91, - 0xb0, 0x52, 0xaf, 0x91, 0xb1, 0x52, 0xaf, 0x91, 0xb0, 0x52, 0xaf, 0x91, - 0xb1, 0x52, 0xb0, 0x91, 0xb0, 0x52, 0xb0, 0x91, 0xb1, 0x52, 0xb0, 0x91, - 0xb0, 0x52, 0xb1, 0x91, 0xb1, 0x52, 0xb1, 0x91, 0xb1, 0x52, 0xb2, 0x92, - 0xb4, 0x52, 0xb2, 0x92, 0xb5, 0x52, 0xb2, 0x92, 0xb4, 0x52, 0xb3, 0x92, - 0xb5, 0x52, 0xb3, 0x92, 0xb4, 0x52, 0xb3, 0x92, 0xb5, 0x52, 0xb4, 0x92, - 0xb4, 0x52, 0xb4, 0x92, 0xb5, 0x52, 0xb4, 0x92, 0xb4, 0x52, 0xb5, 0x92, - 0xb5, 0x52, 0xb5, 0x92, 0xb5, 0x52, 0xb5, 0x93, 0xb8, 0x52, 0xb6, 0x93, - 0xb8, 0x52, 0xb6, 0x93, 0xb8, 0x52, 0xb6, 0x93, 0xb8, 0x52, 0xb7, 0x93, - 0xb8, 0x52, 0xb7, 0x93, 0xb8, 0x52, 0xb7, 0x93, 0xb8, 0x52, 0xb8, 0x93, - 0xb8, 0x52, 0xb8, 0x93, 0xb8, 0x52, 0xb8, 0x93, 0xb8, 0x52, 0xb9, 0x93, - 0xb9, 0x52, 0xb9, 0x93, 0xb9, 0x52, 0xb9, 0x94, 0xbc, 0x52, 0xba, 0x94, - 0xbc, 0x52, 0xba, 0x94, 0xbc, 0x52, 0xba, 0x94, 0xbc, 0x52, 0xbb, 0x94, - 0xbc, 0x52, 0xbb, 0x94, 0xbc, 0x52, 0xbb, 0x94, 0xbc, 0x52, 0xbc, 0x94, - 0xbc, 0x52, 0xbc, 0x94, 0xbc, 0x52, 0xbc, 0x94, 0xbc, 0x52, 0xbd, 0x94, - 0xbd, 0x52, 0xbd, 0x94, 0xbd, 0x52, 0xbd, 0x95, 0xbf, 0x52, 0xbe, 0x95, - 0xc0, 0x52, 0xbe, 0x95, 0xbf, 0x52, 0xbe, 0x95, 0xc0, 0x52, 0xbf, 0x95, - 0xbf, 0x52, 0xbf, 0x95, 0xc0, 0x52, 0xbf, 0x95, 0xbf, 0x52, 0xc0, 0x95, - 0xc0, 0x52, 0xc0, 0x95, 0xc0, 0x52, 0xc0, 0x95, 0xc0, 0x52, 0xc1, 0x95, - 0xc1, 0x52, 0xc1, 0x96, 0xc3, 0x52, 0xc1, 0x96, 0xc3, 0x52, 0xc1, 0x96, - 0xc3, 0x52, 0xc2, 0x96, 0xc3, 0x52, 0xc2, 0x96, 0xc3, 0x52, 0xc2, 0x96, - 0xc3, 0x52, 0xc3, 0x96, 0xc3, 0x52, 0xc3, 0x96, 0xc3, 0x52, 0xc3, 0x96, - 0xc3, 0x52, 0xc4, 0x96, 0xc4, 0x52, 0xc4, 0x96, 0xc4, 0x52, 0xc4, 0x96, - 0xc4, 0x52, 0xc5, 0x96, 0xc5, 0x52, 0xc5, 0x96, 0xc5, 0x52, 0xc5, 0x97, - 0xc6, 0x52, 0xc6, 0x97, 0xc7, 0x52, 0xc6, 0x97, 0xc6, 0x52, 0xc6, 0x97, - 0xc7, 0x52, 0xc6, 0x97, 0xc6, 0x52, 0xc7, 0x97, 0xc7, 0x52, 0xc7, 0x97, - 0xc7, 0x52, 0xc7, 0x97, 0xc7, 0x52, 0xc8, 0x97, 0xc8, 0x52, 0xc8, 0x97, - 0xc8, 0x52, 0xc8, 0x97, 0xc8, 0x52, 0xc9, 0x98, 0xca, 0x52, 0xc9, 0x98, - 0xca, 0x52, 0xc9, 0x98, 0xca, 0x52, 0xc9, 0x98, 0xca, 0x52, 0xca, 0x98, - 0xca, 0x52, 0xca, 0x98, 0xca, 0x52, 0xca, 0x98, 0xca, 0x52, 0xcb, 0x98, - 0xcb, 0x52, 0xcb, 0x98, 0xcb, 0x52, 0xcb, 0x98, 0xcb, 0x52, 0xcc, 0x98, - 0xcc, 0x52, 0xcc, 0x98, 0xcd, 0x52, 0xcc, 0x98, 0xcd, 0x52, 0xcc, 0x98, - 0xcd, 0x52, 0xcd, 0x98, 0xcd, 0x52, 0xcd, 0x98, 0xcd, 0x52, 0xcd, 0x98, - 0xcd, 0x52, 0xce, 0x98, 0xce, 0x52, 0xce, 0x98, 0xce, 0x52, 0xce, 0x98, - 0xce, 0x52, 0xce, 0x98, 0xce, 0x52, 0xcf, 0x98, 0xcf, 0x52, 0xcf, 0x98, - 0xcf, 0x52, 0xcf, 0x98, 0xcf, 0x52, 0xd0, 0x99, 0xd0, 0x52, 0xd0, 0x99, - 0xd0, 0x52, 0xd0, 0x99, 0xd0, 0x52, 0xd0, 0x99, 0xd0, 0x52, 0xd1, 0x99, - 0xd1, 0x52, 0xd1, 0x99, 0xd1, 0x52, 0xd1, 0x99, 0xd1, 0x52, 0xd2, 0x99, - 0xd2, 0x52, 0xd2, 0x99, 0xd2, 0x52, 0xd2, 0x99, 0xd2, 0x52, 0xd2, 0x9a, - 0xd2, 0x52, 0xd2, 0x9a, 0xd3, 0x52, 0xd2, 0x9a, 0xd3, 0x52, 0xd2, 0x9a, - 0xd3, 0x52, 0xd2, 0x9a, 0xd4, 0x52, 0xd2, 0x9a, 0xd4, 0x52, 0xd2, 0x9a, - 0xd4, 0x52, 0xd2, 0x9a, 0xd4, 0x52, 0xd2, 0x9a, 0xd5, 0x52, 0xd2, 0x9a, - 0xd5, 0x52, 0xd2, 0x9a, 0xd5, 0x52, 0xd2, 0x9a, 0xd6, 0x52, 0xd7, 0x9a, - 0xd6, 0x4c, 0xd7, 0x9a, 0xd6, 0x4c, 0xd7, 0x9a, 0xd6, 0x4c, 0xd7, 0x9a, - 0xd7, 0x4c, 0xd7, 0x9a, 0xd7, 0x4c, 0xd7, 0x9a, 0xd7, 0x4c, 0xd9, 0x9a, - 0xd7, 0x4d, 0xd9, 0x9a, 0xd8, 0x4d, 0xd9, 0x9a, 0xd8, 0x4d, 0xd9, 0x9a, - 0xd8, 0x4d, 0xd9, 0x9a, 0xd9, 0x4d, 0xd9, 0x9a, 0xd9, 0x4d, 0xd9, 0x9a, - 0xd9, 0x4d, 0xd9, 0x9a, 0xd9, 0x4d, 0xda, 0x9a, 0xda, 0x4d, 0xda, 0x9a, - 0xda, 0x4d, 0xda, 0x9a, 0xda, 0x4d, 0xdb, 0x9a, 0xda, 0x4e, 0xdc, 0x9a, - 0xdb, 0x4e, 0xdb, 0x9a, 0xdb, 0x4e, 0xdc, 0x9a, 0xdb, 0x4e, 0xdb, 0x9a, - 0xdb, 0x4e, 0xdc, 0x9a, 0xdc, 0x4e, 0xdc, 0x9a, 0xdc, 0x4e, 0xdc, 0x9a, - 0xdc, 0x4e, 0xdd, 0x9a, 0xdd, 0x4e, 0xdd, 0x9a, 0xdd, 0x4e, 0xde, 0x9a, - 0xdd, 0x4f, 0xde, 0x9a, 0xdd, 0x4f, 0xde, 0x9a, 0xde, 0x4f, 0xde, 0x9a, - 0xde, 0x4f, 0xde, 0x9a, 0xde, 0x4f, 0xde, 0x9a, 0xde, 0x4f, 0xdf, 0x9a, - 0xdf, 0x4f, 0xdf, 0x9a, 0xdf, 0x4f, 0xdf, 0x9a, 0xdf, 0x4f, 0xe1, 0x9a, - 0xdf, 0x50, 0xe1, 0x9a, 0xe0, 0x50, 0xe1, 0x9a, 0xe0, 0x50, 0xe1, 0x9a, - 0xe0, 0x50, 0xe1, 0x9a, 0xe1, 0x50, 0xe1, 0x9a, 0xe1, 0x50, 0xe1, 0x9a, - 0xe1, 0x50, 0xe1, 0x9a, 0xe1, 0x50, 0xe2, 0x9a, 0xe2, 0x50, 0xe2, 0x9a, - 0xe2, 0x50, 0xe2, 0x9a, 0xe2, 0x50, 0xe3, 0x9a, 0xe2, 0x51, 0xe3, 0x9a, - 0xe3, 0x51, 0xe3, 0x9a, 0xe3, 0x51, 0xe3, 0x9a, 0xe3, 0x51, 0xe3, 0x9a, - 0xe3, 0x51, 0xe4, 0x9a, 0xe4, 0x51, 0xe4, 0x9a, 0xe4, 0x51, 0xe4, 0x9a, - 0xe4, 0x51, 0xe4, 0x9a, 0xe4, 0x51, 0xe5, 0x9a, 0xe5, 0x51, 0xe5, 0x9a, - 0xe5, 0x51, 0xe5, 0x9a, 0xe5, 0x51, 0xe5, 0x9b, 0xe5, 0x52, 0xe6, 0x9b, - 0xe6, 0x52, 0xe6, 0x9b, 0xe6, 0x52, 0xe6, 0x9b, 0xe6, 0x52, 0xe6, 0x9b, - 0xe6, 0x52, 0xe7, 0x9b, 0xe7, 0x52, 0xe7, 0x9b, 0xe7, 0x52, 0xe7, 0x9b, - 0xe7, 0x52, 0xe7, 0x9b, 0xe7, 0x52, 0xe8, 0x9b, 0xe7, 0x52, 0xe8, 0x9b, - 0xe7, 0x52, 0xe8, 0x9c, 0xe8, 0x52, 0xe8, 0x9c, 0xe8, 0x52, 0xe9, 0x9c, - 0xe9, 0x52, 0xe9, 0x9c, 0xe9, 0x52, 0xe9, 0x9c, 0xe9, 0x52, 0xe9, 0x9c, - 0xe9, 0x52, 0xea, 0x9c, 0xea, 0x52, 0xea, 0x9c, 0xea, 0x52, 0xea, 0x9c, - 0xea, 0x52, 0xea, 0x9c, 0xea, 0x52, 0xeb, 0x9c, 0xea, 0x52, 0xeb, 0x9c, - 0xea, 0x52, 0xeb, 0x9d, 0xeb, 0x52, 0xeb, 0x9d, 0xeb, 0x52, 0xec, 0x9d, - 0xec, 0x52, 0xec, 0x9d, 0xec, 0x52, 0xec, 0x9d, 0xec, 0x52, 0xec, 0x9d, - 0xec, 0x52, 0xec, 0x9d, 0xec, 0x52, 0xed, 0x9d, 0xec, 0x52, 0xed, 0x9d, - 0xec, 0x52, 0xed, 0x9d, 0xed, 0x52, 0xed, 0x9d, 0xed, 0x52, 0xee, 0x9d, - 0xee, 0x52, 0xee, 0x9d, 0xee, 0x52, 0xee, 0x9d, 0xee, 0x52, 0xee, 0x9d, - 0xee, 0x52, 0xef, 0x9d, 0xee, 0x52, 0xef, 0x9d, 0xee, 0x52, 0xef, 0x9d, - 0xee, 0x52, 0xef, 0x9e, 0xef, 0x52, 0xf0, 0x9e, 0xf0, 0x52, 0xf0, 0x9e, - 0xf0, 0x52, 0xf0, 0x9e, 0xf0, 0x52, 0xf0, 0x9e, 0xf0, 0x52, 0xf1, 0x9e, - 0xf1, 0x52, 0xf1, 0x9e, 0xf0, 0x52, 0xf1, 0x9e, 0xf1, 0x52, 0xf1, 0x9e, - 0xf0, 0x52, 0xf2, 0x9e, 0xf1, 0x52, 0xf2, 0x9e, 0xf0, 0x52, 0xf2, 0x9e, - 0xf1, 0x52, 0xf2, 0x9f, 0xf2, 0x52, 0xf2, 0x9f, 0xf2, 0x52, 0xf3, 0x9f, - 0xf3, 0x52, 0xf3, 0x9f, 0xf2, 0x52, 0xf3, 0x9f, 0xf3, 0x52, 0xf3, 0x9f, - 0xf2, 0x52, 0xf4, 0x9f, 0xf3, 0x52, 0xf4, 0x9f, 0xf2, 0x52, 0xf4, 0x9f, - 0xf3, 0x52, 0xf4, 0xa0, 0xf4, 0x52, 0xf5, 0xa0, 0xf5, 0x52, 0xf5, 0xa0, - 0xf5, 0x52, 0xf5, 0xa0, 0xf5, 0x52, 0xf5, 0xa0, 0xf5, 0x52, 0xf5, 0xa0, - 0xf5, 0x52, 0xf6, 0xa0, 0xf5, 0x52, 0xf6, 0xa0, 0xf5, 0x52, 0xf6, 0xa0, - 0xf5, 0x52, 0xf6, 0xa1, 0xf6, 0x52, 0xf7, 0xa1, 0xf7, 0x52, 0xf7, 0xa1, - 0xf7, 0x52, 0xf7, 0xa1, 0xf7, 0x52, 0xf7, 0xa1, 0xf7, 0x52, 0xf8, 0xa1, - 0xf7, 0x52, 0xf8, 0xa1, 0xf7, 0x52, 0xf8, 0xa1, 0xf7, 0x52, 0xf8, 0xa1, - 0xf7, 0x52, 0xf8, 0xa1, 0xf7, 0x52, 0xf9, 0xa1, 0xf7, 0x52, 0xf9, 0xa1, - 0xf7, 0x52, 0xf9, 0xa1, 0xf9, 0x52, 0xf9, 0xa1, 0xf9, 0x52, 0xfa, 0xa1, - 0xf9, 0x52, 0xfa, 0xa1, 0xf9, 0x52, 0xfa, 0xa1, 0xf9, 0x52, 0xfa, 0xa1, - 0xf9, 0x52, 0xfa, 0xa1, 0xf9, 0x52, 0xfb, 0xa1, 0xf9, 0x52, 0xfb, 0xa1, - 0xf9, 0x52, 0xfb, 0xa2, 0xfb, 0x52, 0xfb, 0xa2, 0xfb, 0x52, 0xfc, 0xa2, - 0xfb, 0x52, 0xfc, 0xa2, 0xfb, 0x52, 0xfc, 0xa2, 0xfb, 0x52, 0xfc, 0xa2, - 0xfb, 0x52, 0xfc, 0xa2, 0xfb, 0x52, 0xfd, 0xa2, 0xfb, 0x52, 0xfd, 0xa2, - 0xfb, 0x52, 0xfd, 0xa2, 0xfb, 0x52, 0xfd, 0xa2, 0xfb, 0x52, 0xfe, 0xa2, - 0xfb, 0x52, 0xfe, 0xa2, 0xfb, 0x52, 0xfe, 0xa2, 0xfb, 0x52, 0xfe, 0xa2, - 0xfb, 0x52, 0xfe, 0xa2, 0xfb, 0x52, 0xff, 0xa2, 0xfb, 0x52, 0xff, 0xa2, - 0xfb, 0x52, 0x03, 0xa6, 0x96, 0x53, 0x0a, 0xa6, 0x96, 0x53, 0x0f, 0xa6, - 0x96, 0x53, 0x14, 0xa3, 0x97, 0x53, 0x17, 0xa6, 0x96, 0x53, 0x1b, 0xa3, - 0x97, 0x53, 0x1e, 0xa6, 0x96, 0x53, 0x20, 0xa3, 0x97, 0x53, 0x23, 0xa6, - 0x96, 0x53, 0x25, 0xa3, 0x97, 0x53, 0x27, 0xa0, 0x97, 0x53, 0x29, 0xa3, - 0x97, 0x53, 0x2b, 0xa0, 0x97, 0x53, 0x2d, 0xa3, 0x97, 0x53, 0x2f, 0xa0, - 0x97, 0x53, 0x31, 0xa3, 0x97, 0x53, 0x32, 0xa0, 0x97, 0x53, 0x34, 0xa3, - 0x97, 0x53, 0x35, 0xa0, 0x97, 0x53, 0x37, 0xa3, 0x97, 0x53, 0x38, 0xa0, - 0x97, 0x53, 0x3a, 0xa3, 0x97, 0x53, 0x3b, 0xa0, 0x97, 0x53, 0x3c, 0xa3, - 0x97, 0x53, 0x3e, 0xa0, 0x97, 0x53, 0x3f, 0xa3, 0x97, 0x53, 0x40, 0xa0, - 0x97, 0x53, 0x42, 0xa3, 0x97, 0x53, 0x43, 0xa0, 0x97, 0x53, 0x44, 0xa3, - 0x97, 0x53, 0x45, 0xa0, 0x97, 0x53, 0x46, 0xa3, 0x97, 0x53, 0x47, 0xa0, - 0x97, 0x53, 0x48, 0xa3, 0x97, 0x53, 0x49, 0xa0, 0x97, 0x53, 0x4a, 0xa3, - 0x97, 0x53, 0x4b, 0xa0, 0x97, 0x53, 0x4c, 0xa3, 0x97, 0x53, 0x4d, 0xa0, - 0x97, 0x53, 0x4e, 0xa3, 0x97, 0x53, 0x4f, 0xa0, 0x97, 0x53, 0x50, 0xa3, - 0x97, 0x53, 0x51, 0xa0, 0x97, 0x53, 0x52, 0xa3, 0x97, 0x53, 0x53, 0xa0, - 0x97, 0x53, 0x54, 0xa3, 0x97, 0x53, 0x55, 0xa0, 0x97, 0x53, 0x56, 0xa3, - 0x97, 0x53, 0x57, 0xa0, 0x97, 0x53, 0x58, 0xa3, 0x97, 0x53, 0x58, 0xa0, - 0x97, 0x53, 0x59, 0xa3, 0x97, 0x53, 0x5a, 0xa0, 0x97, 0x53, 0x5b, 0xa3, - 0x97, 0x53, 0x5c, 0xa0, 0x97, 0x53, 0x5d, 0x9e, 0x98, 0x53, 0x5d, 0xa0, - 0x97, 0x53, 0x5e, 0x9e, 0x98, 0x53, 0x5f, 0xa0, 0x97, 0x53, 0x60, 0x9e, - 0x98, 0x53, 0x60, 0xa0, 0x97, 0x53, 0x61, 0x9e, 0x98, 0x53, 0x62, 0xa0, - 0x97, 0x53, 0x63, 0x9e, 0x98, 0x53, 0x63, 0xa0, 0x97, 0x53, 0x64, 0x9e, - 0x98, 0x53, 0x65, 0xa0, 0x97, 0x53, 0x66, 0x9e, 0x98, 0x53, 0x66, 0xa0, - 0x97, 0x53, 0x67, 0x9e, 0x98, 0x53, 0x68, 0xa0, 0x97, 0x53, 0x68, 0x9e, - 0x98, 0x53, 0x69, 0xa0, 0x97, 0x53, 0x6a, 0x9e, 0x98, 0x53, 0x6a, 0xa0, - 0x97, 0x53, 0x6b, 0x9e, 0x98, 0x53, 0x6c, 0xa0, 0x97, 0x53, 0x6c, 0x9e, - 0x98, 0x53, 0x6d, 0xa0, 0x97, 0x53, 0x6e, 0x9e, 0x98, 0x53, 0x6e, 0xa0, - 0x97, 0x53, 0x6f, 0x9e, 0x98, 0x53, 0x70, 0xa0, 0x97, 0x53, 0x70, 0x9e, - 0x98, 0x53, 0x71, 0xa0, 0x97, 0x53, 0x72, 0x9e, 0x98, 0x53, 0x72, 0xa0, - 0x97, 0x53, 0x73, 0x9e, 0x98, 0x53, 0x73, 0xa0, 0x97, 0x53, 0x74, 0x9e, - 0x98, 0x53, 0x75, 0xa0, 0x97, 0x53, 0x75, 0x9e, 0x98, 0x53, 0x76, 0xa0, - 0x97, 0x53, 0x76, 0x9e, 0x98, 0x53, 0x77, 0xa0, 0x97, 0x53, 0x78, 0x9e, - 0x98, 0x53, 0x78, 0xa0, 0x97, 0x53, 0x79, 0x9e, 0x98, 0x53, 0x79, 0xa0, - 0x97, 0x53, 0x7a, 0x9e, 0x98, 0x53, 0x7a, 0xa0, 0x97, 0x53, 0x7b, 0x9e, - 0x98, 0x53, 0x7c, 0xa0, 0x97, 0x53, 0x7c, 0x9e, 0x98, 0x53, 0x7d, 0xa0, - 0x97, 0x53, 0x7d, 0x9e, 0x98, 0x53, 0x7e, 0xa0, 0x97, 0x53, 0x7e, 0x9e, - 0x98, 0x53, 0x7f, 0xa0, 0x97, 0x53, 0x7f, 0x9e, 0x98, 0x53, 0x80, 0xa0, - 0x97, 0x53, 0x81, 0x9e, 0x98, 0x53, 0x81, 0x9b, 0x98, 0x53, 0x82, 0x9e, - 0x98, 0x53, 0x82, 0x9b, 0x98, 0x53, 0x83, 0x9e, 0x98, 0x53, 0x83, 0x9b, - 0x98, 0x53, 0x84, 0x9e, 0x98, 0x53, 0x84, 0x9b, 0x98, 0x53, 0x85, 0x9e, - 0x98, 0x53, 0x85, 0x9b, 0x98, 0x53, 0x86, 0x9e, 0x98, 0x53, 0x86, 0x9b, - 0x98, 0x53, 0x87, 0x9e, 0x98, 0x53, 0x87, 0x9b, 0x98, 0x53, 0x88, 0x9e, - 0x98, 0x53, 0x88, 0x9b, 0x98, 0x53, 0x89, 0x9e, 0x98, 0x53, 0x89, 0x9b, - 0x98, 0x53, 0x8a, 0x9e, 0x98, 0x53, 0x8a, 0x9b, 0x98, 0x53, 0x8b, 0x9e, - 0x98, 0x53, 0x8b, 0x9b, 0x98, 0x53, 0x8c, 0x9e, 0x98, 0x53, 0x8c, 0x9b, - 0x98, 0x53, 0x8d, 0x9e, 0x98, 0x53, 0x8d, 0x9b, 0x98, 0x53, 0x8e, 0x9e, - 0x98, 0x53, 0x8e, 0x9b, 0x98, 0x53, 0x8e, 0x9e, 0x98, 0x53, 0x8f, 0x9b, - 0x98, 0x53, 0x8f, 0x9e, 0x98, 0x53, 0x90, 0x9b, 0x98, 0x53, 0x90, 0x9e, - 0x98, 0x53, 0x91, 0x9b, 0x98, 0x53, 0x91, 0x9a, 0x98, 0x53, 0x92, 0x9b, - 0x98, 0x53, 0x92, 0x9a, 0x98, 0x53, 0x93, 0x9b, 0x98, 0x53, 0x93, 0x9a, - 0x98, 0x53, 0x94, 0x9b, 0x98, 0x53, 0x94, 0x9a, 0x98, 0x53, 0x94, 0x9b, - 0x98, 0x53, 0x95, 0x9a, 0x98, 0x53, 0x95, 0x9b, 0x98, 0x53, 0x96, 0x9a, - 0x98, 0x53, 0x96, 0x9b, 0x98, 0x53, 0x97, 0x9a, 0x98, 0x53, 0x97, 0x9b, - 0x98, 0x53, 0x98, 0x9a, 0x98, 0x53, 0x98, 0x9b, 0x98, 0x53, 0x98, 0x9a, - 0x98, 0x53, 0x98, 0x9a, 0x99, 0x53, 0x98, 0x9a, 0x99, 0x53, 0x98, 0x9a, - 0x9a, 0x53, 0x9c, 0x9a, 0x9a, 0x54, 0x9c, 0x9a, 0x9a, 0x53, 0x9c, 0x9a, - 0x9b, 0x54, 0x9c, 0x9a, 0x9b, 0x53, 0x9d, 0x9a, 0x9c, 0x53, 0x9c, 0x9a, - 0x9b, 0x53, 0x9d, 0x9a, 0x9c, 0x53, 0x9d, 0x9a, 0x9b, 0x53, 0x9d, 0x9a, - 0x9c, 0x53, 0x9e, 0x9a, 0x9b, 0x53, 0x9e, 0x9a, 0x9c, 0x53, 0x9f, 0x9a, - 0x9b, 0x53, 0x9f, 0x9a, 0x9c, 0x53, 0x9f, 0x98, 0x9c, 0x53, 0xa0, 0x9a, - 0x9c, 0x53, 0xa0, 0x98, 0x9c, 0x53, 0xa1, 0x9a, 0x9c, 0x53, 0xa1, 0x98, - 0x9c, 0x53, 0xa1, 0x9a, 0x9c, 0x53, 0xa2, 0x98, 0x9c, 0x53, 0xa2, 0x9a, - 0x9c, 0x53, 0xa3, 0x98, 0x9c, 0x53, 0xa3, 0x9a, 0x9c, 0x53, 0xa3, 0x98, - 0x9c, 0x53, 0xa4, 0x9a, 0x9c, 0x53, 0xa4, 0x98, 0x9c, 0x53, 0xa5, 0x9a, - 0x9c, 0x53, 0xa5, 0x98, 0x9c, 0x53, 0xa5, 0x9a, 0x9c, 0x53, 0xa6, 0x98, - 0x9c, 0x53, 0xa6, 0x8f, 0xa6, 0x53, 0xa6, 0x8f, 0xa6, 0x53, 0xa7, 0x8f, - 0xa7, 0x53, 0xa7, 0x90, 0xaa, 0x53, 0xa8, 0x90, 0xab, 0x53, 0xa8, 0x90, - 0xaa, 0x53, 0xa8, 0x90, 0xab, 0x53, 0xa9, 0x90, 0xaa, 0x53, 0xa9, 0x90, - 0xab, 0x53, 0xaa, 0x90, 0xaa, 0x53, 0xaa, 0x90, 0xab, 0x53, 0xaa, 0x90, - 0xaa, 0x53, 0xab, 0x90, 0xab, 0x53, 0xab, 0x90, 0xab, 0x53, 0xab, 0x91, - 0xae, 0x53, 0xac, 0x91, 0xaf, 0x53, 0xac, 0x91, 0xae, 0x53, 0xac, 0x91, - 0xaf, 0x53, 0xad, 0x91, 0xae, 0x53, 0xad, 0x91, 0xaf, 0x53, 0xae, 0x91, - 0xae, 0x53, 0xae, 0x91, 0xaf, 0x53, 0xae, 0x91, 0xae, 0x53, 0xaf, 0x91, - 0xaf, 0x53, 0xaf, 0x91, 0xaf, 0x53, 0xaf, 0x92, 0xb2, 0x53, 0xb0, 0x92, - 0xb3, 0x53, 0xb0, 0x92, 0xb2, 0x53, 0xb0, 0x92, 0xb3, 0x53, 0xb1, 0x92, - 0xb2, 0x53, 0xb1, 0x92, 0xb3, 0x53, 0xb2, 0x92, 0xb2, 0x53, 0xb2, 0x92, - 0xb3, 0x53, 0xb2, 0x92, 0xb2, 0x53, 0xb3, 0x92, 0xb3, 0x53, 0xb3, 0x92, - 0xb3, 0x53, 0xb3, 0x93, 0xb6, 0x53, 0xb4, 0x93, 0xb6, 0x53, 0xb4, 0x93, - 0xb6, 0x53, 0xb4, 0x93, 0xb6, 0x53, 0xb5, 0x93, 0xb6, 0x53, 0xb5, 0x93, - 0xb6, 0x53, 0xb5, 0x93, 0xb6, 0x53, 0xb6, 0x93, 0xb6, 0x53, 0xb6, 0x93, - 0xb6, 0x53, 0xb6, 0x93, 0xb6, 0x53, 0xb7, 0x93, 0xb7, 0x53, 0xb7, 0x93, - 0xb7, 0x53, 0xb7, 0x94, 0xba, 0x53, 0xb8, 0x94, 0xba, 0x53, 0xb8, 0x94, - 0xba, 0x53, 0xb8, 0x94, 0xba, 0x53, 0xb9, 0x94, 0xba, 0x53, 0xb9, 0x94, - 0xba, 0x53, 0xb9, 0x94, 0xba, 0x53, 0xba, 0x94, 0xba, 0x53, 0xba, 0x94, - 0xba, 0x53, 0xba, 0x94, 0xba, 0x53, 0xbb, 0x94, 0xbb, 0x53, 0xbb, 0x94, - 0xbb, 0x53, 0xbb, 0x94, 0xbb, 0x53, 0xbc, 0x94, 0xbe, 0x53, 0xbc, 0x94, - 0xbe, 0x53, 0xbc, 0x94, 0xbe, 0x53, 0xbd, 0x94, 0xbe, 0x53, 0xbd, 0x94, - 0xbe, 0x53, 0xbd, 0x94, 0xbe, 0x53, 0xbe, 0x94, 0xbe, 0x53, 0xbe, 0x94, - 0xbe, 0x53, 0xbe, 0x94, 0xbe, 0x53, 0xbf, 0x94, 0xbf, 0x53, 0xbf, 0x94, - 0xbf, 0x53, 0xbf, 0x95, 0xc1, 0x53, 0xc0, 0x95, 0xc1, 0x53, 0xc0, 0x95, - 0xc1, 0x53, 0xc0, 0x95, 0xc1, 0x53, 0xc1, 0x95, 0xc1, 0x53, 0xc1, 0x95, - 0xc1, 0x53, 0xc1, 0x95, 0xc1, 0x53, 0xc1, 0x95, 0xc1, 0x53, 0xc2, 0x95, - 0xc2, 0x53, 0xc2, 0x95, 0xc2, 0x53, 0xc2, 0x95, 0xc2, 0x53, 0xc3, 0x96, - 0xc5, 0x53, 0xc3, 0x96, 0xc5, 0x53, 0xc3, 0x96, 0xc5, 0x53, 0xc4, 0x96, - 0xc5, 0x53, 0xc4, 0x96, 0xc5, 0x53, 0xc4, 0x96, 0xc5, 0x53, 0xc5, 0x96, - 0xc5, 0x53, 0xc5, 0x96, 0xc5, 0x53, 0xc5, 0x96, 0xc5, 0x53, 0xc6, 0x96, - 0xc6, 0x53, 0xc6, 0x96, 0xc6, 0x53, 0xc6, 0x96, 0xc6, 0x53, 0xc6, 0x96, - 0xc6, 0x53, 0xc7, 0x97, 0xc8, 0x53, 0xc7, 0x97, 0xc8, 0x53, 0xc7, 0x97, - 0xc8, 0x53, 0xc8, 0x97, 0xc8, 0x53, 0xc8, 0x97, 0xc8, 0x53, 0xc8, 0x97, - 0xc8, 0x53, 0xc9, 0x97, 0xc9, 0x53, 0xc9, 0x97, 0xc9, 0x53, 0xc9, 0x97, - 0xc9, 0x53, 0xc9, 0x97, 0xc9, 0x53, 0xca, 0x97, 0xca, 0x53, 0xca, 0x98, - 0xcb, 0x53, 0xca, 0x98, 0xcc, 0x53, 0xcb, 0x98, 0xcb, 0x53, 0xcb, 0x98, - 0xcc, 0x53, 0xcb, 0x98, 0xcb, 0x53, 0xcc, 0x98, 0xcc, 0x53, 0xcc, 0x98, - 0xcc, 0x53, 0xcc, 0x98, 0xcc, 0x53, 0xcc, 0x98, 0xcc, 0x53, 0xcd, 0x98, - 0xcd, 0x53, 0xcd, 0x98, 0xcd, 0x53, 0xcd, 0x99, 0xce, 0x53, 0xce, 0x99, - 0xcf, 0x53, 0xce, 0x99, 0xce, 0x53, 0xce, 0x99, 0xcf, 0x53, 0xce, 0x99, - 0xce, 0x53, 0xcf, 0x99, 0xcf, 0x53, 0xcf, 0x99, 0xcf, 0x53, 0xcf, 0x99, - 0xcf, 0x53, 0xd0, 0x99, 0xd0, 0x53, 0xd0, 0x99, 0xd0, 0x53, 0xd0, 0x99, - 0xd0, 0x53, 0xd0, 0x99, 0xd0, 0x53, 0xd1, 0x99, 0xd1, 0x53, 0xd1, 0x9a, - 0xd2, 0x53, 0xd1, 0x9a, 0xd2, 0x53, 0xd2, 0x9a, 0xd2, 0x53, 0xd2, 0x9a, - 0xd2, 0x53, 0xd2, 0x9a, 0xd2, 0x53, 0xd2, 0x9a, 0xd2, 0x53, 0xd2, 0x9a, - 0xd3, 0x53, 0xd2, 0x9a, 0xd3, 0x53, 0xd2, 0x9a, 0xd3, 0x53, 0xd2, 0x9a, - 0xd4, 0x53, 0xd2, 0x9a, 0xd4, 0x53, 0xd2, 0x9a, 0xd4, 0x53, 0xd2, 0x9a, - 0xd4, 0x53, 0xd2, 0x9a, 0xd5, 0x53, 0xd2, 0x9a, 0xd5, 0x53, 0xd2, 0x9a, - 0xd5, 0x53, 0xd2, 0x9a, 0xd6, 0x53, 0xd6, 0x9a, 0xd6, 0x4c, 0xd8, 0x9a, - 0xd6, 0x4d, 0xd8, 0x9a, 0xd6, 0x4d, 0xd8, 0x9a, 0xd7, 0x4d, 0xd8, 0x9a, - 0xd7, 0x4d, 0xd8, 0x9a, 0xd7, 0x4d, 0xd8, 0x9a, 0xd7, 0x4d, 0xd8, 0x9a, - 0xd8, 0x4d, 0xd8, 0x9a, 0xd8, 0x4d, 0xd8, 0x9a, 0xd8, 0x4d, 0xd9, 0x9a, - 0xd9, 0x4d, 0xda, 0x9a, 0xd9, 0x4e, 0xdb, 0x9a, 0xd9, 0x4e, 0xda, 0x9a, - 0xd9, 0x4e, 0xdb, 0x9a, 0xda, 0x4e, 0xda, 0x9a, 0xda, 0x4e, 0xdb, 0x9a, - 0xda, 0x4e, 0xda, 0x9a, 0xda, 0x4e, 0xdb, 0x9a, 0xdb, 0x4e, 0xdb, 0x9a, - 0xdb, 0x4e, 0xdb, 0x9a, 0xdb, 0x4e, 0xdb, 0x9a, 0xdb, 0x4e, 0xdd, 0x9a, - 0xdc, 0x4f, 0xdd, 0x9a, 0xdc, 0x4f, 0xdd, 0x9a, 0xdc, 0x4f, 0xdd, 0x9a, - 0xdd, 0x4f, 0xdd, 0x9a, 0xdd, 0x4f, 0xdd, 0x9a, 0xdd, 0x4f, 0xdd, 0x9a, - 0xdd, 0x4f, 0xde, 0x9a, 0xde, 0x4f, 0xde, 0x9a, 0xde, 0x4f, 0xdf, 0x9a, - 0xde, 0x50, 0xdf, 0x9a, 0xde, 0x50, 0xdf, 0x9a, 0xdf, 0x50, 0xdf, 0x9a, - 0xdf, 0x50, 0xdf, 0x9a, 0xdf, 0x50, 0xdf, 0x9a, 0xdf, 0x50, 0xe0, 0x9a, - 0xe0, 0x50, 0xe0, 0x9a, 0xe0, 0x50, 0xe0, 0x9a, 0xe0, 0x50, 0xe1, 0x9a, - 0xe1, 0x50, 0xe2, 0x9a, 0xe1, 0x51, 0xe2, 0x9a, 0xe1, 0x51, 0xe2, 0x9a, - 0xe1, 0x51, 0xe2, 0x9a, 0xe2, 0x51, 0xe2, 0x9a, 0xe2, 0x51, 0xe2, 0x9a, - 0xe2, 0x51, 0xe2, 0x9a, 0xe2, 0x51, 0xe3, 0x9a, 0xe3, 0x51, 0xe3, 0x9a, - 0xe3, 0x51, 0xe3, 0x9a, 0xe3, 0x51, 0xe3, 0x9a, 0xe3, 0x51, 0xe4, 0x9a, - 0xe4, 0x52, 0xe4, 0x9a, 0xe4, 0x52, 0xe4, 0x9a, 0xe4, 0x52, 0xe4, 0x9a, - 0xe4, 0x52, 0xe5, 0x9a, 0xe5, 0x52, 0xe5, 0x9a, 0xe5, 0x52, 0xe5, 0x9a, - 0xe5, 0x52, 0xe5, 0x9a, 0xe5, 0x52, 0xe6, 0x9a, 0xe6, 0x52, 0xe6, 0x9a, - 0xe6, 0x52, 0xe6, 0x9a, 0xe6, 0x52, 0xe6, 0x9b, 0xe6, 0x53, 0xe7, 0x9b, - 0xe7, 0x53, 0xe7, 0x9b, 0xe7, 0x53, 0xe7, 0x9b, 0xe7, 0x53, 0xe7, 0x9b, - 0xe7, 0x53, 0xe8, 0x9b, 0xe8, 0x53, 0xe8, 0x9b, 0xe8, 0x53, 0xe8, 0x9b, - 0xe8, 0x53, 0xe8, 0x9b, 0xe8, 0x53, 0xe9, 0x9b, 0xe9, 0x53, 0xe9, 0x9b, - 0xe8, 0x53, 0xe9, 0x9b, 0xe9, 0x53, 0xe9, 0x9c, 0xe9, 0x53, 0xea, 0x9c, - 0xea, 0x53, 0xea, 0x9c, 0xea, 0x53, 0xea, 0x9c, 0xea, 0x53, 0xea, 0x9c, - 0xea, 0x53, 0xeb, 0x9c, 0xeb, 0x53, 0xeb, 0x9c, 0xeb, 0x53, 0xeb, 0x9c, - 0xeb, 0x53, 0xeb, 0x9c, 0xeb, 0x53, 0xec, 0x9c, 0xeb, 0x53, 0xec, 0x9c, - 0xeb, 0x53, 0xec, 0x9d, 0xec, 0x53, 0xec, 0x9d, 0xec, 0x53, 0xec, 0x9d, - 0xec, 0x53, 0xed, 0x9d, 0xed, 0x53, 0xed, 0x9d, 0xed, 0x53, 0xed, 0x9d, - 0xed, 0x53, 0xed, 0x9d, 0xed, 0x53, 0xee, 0x9d, 0xed, 0x53, 0xee, 0x9d, - 0xed, 0x53, 0xee, 0x9d, 0xed, 0x53, 0xee, 0x9e, 0xee, 0x53, 0xef, 0x9e, - 0xef, 0x53, 0xef, 0x9e, 0xef, 0x53, 0xef, 0x9e, 0xef, 0x53, 0xef, 0x9e, - 0xef, 0x53, 0xf0, 0x9e, 0xef, 0x53, 0xf0, 0x9e, 0xef, 0x53, 0xf0, 0x9e, - 0xef, 0x53, 0xf0, 0x9e, 0xef, 0x53, 0xf1, 0x9f, 0xf1, 0x53, 0xf1, 0x9f, - 0xf1, 0x53, 0xf1, 0x9f, 0xf1, 0x53, 0xf1, 0x9f, 0xf1, 0x53, 0xf2, 0x9f, - 0xf2, 0x53, 0xf2, 0x9f, 0xf1, 0x53, 0xf2, 0x9f, 0xf2, 0x53, 0xf2, 0x9f, - 0xf1, 0x53, 0xf2, 0x9f, 0xf2, 0x53, 0xf3, 0x9f, 0xf1, 0x53, 0xf3, 0x9f, - 0xf2, 0x53, 0xf3, 0x9f, 0xf3, 0x53, 0xf3, 0x9f, 0xf3, 0x53, 0xf4, 0x9f, - 0xf4, 0x53, 0xf4, 0x9f, 0xf4, 0x53, 0xf4, 0x9f, 0xf4, 0x53, 0xf4, 0x9f, - 0xf4, 0x53, 0xf5, 0x9f, 0xf4, 0x53, 0xf5, 0x9f, 0xf4, 0x53, 0xf5, 0x9f, - 0xf4, 0x53, 0xf5, 0x9f, 0xf4, 0x53, 0xf5, 0xa0, 0xf5, 0x53, 0xf6, 0xa0, - 0xf6, 0x53, 0xf6, 0xa0, 0xf6, 0x53, 0xf6, 0xa0, 0xf6, 0x53, 0xf6, 0xa0, - 0xf6, 0x53, 0xf7, 0xa0, 0xf6, 0x53, 0xf7, 0xa0, 0xf6, 0x53, 0xf7, 0xa0, - 0xf6, 0x53, 0xf7, 0xa0, 0xf6, 0x53, 0xf8, 0xa1, 0xf8, 0x53, 0xf8, 0xa1, - 0xf8, 0x53, 0xf8, 0xa1, 0xf8, 0x53, 0xf8, 0xa1, 0xf8, 0x53, 0xf8, 0xa1, - 0xf8, 0x53, 0xf9, 0xa1, 0xf8, 0x53, 0xf9, 0xa1, 0xf8, 0x53, 0xf9, 0xa1, - 0xf8, 0x53, 0xf9, 0xa1, 0xf8, 0x53, 0xfa, 0xa1, 0xf8, 0x53, 0xfa, 0xa1, - 0xf8, 0x53, 0xfa, 0xa2, 0xfa, 0x53, 0xfa, 0xa2, 0xfa, 0x53, 0xfa, 0xa2, - 0xfa, 0x53, 0xfb, 0xa2, 0xfa, 0x53, 0xfb, 0xa2, 0xfa, 0x53, 0xfb, 0xa2, - 0xfa, 0x53, 0xfb, 0xa2, 0xfa, 0x53, 0xfc, 0xa2, 0xfa, 0x53, 0xfc, 0xa2, - 0xfa, 0x53, 0xfc, 0xa2, 0xfa, 0x53, 0xfc, 0xa3, 0xfb, 0x53, 0xfc, 0xa3, - 0xfc, 0x53, 0xfd, 0xa3, 0xfb, 0x53, 0xfd, 0xa3, 0xfc, 0x53, 0xfd, 0xa3, - 0xfb, 0x53, 0xfd, 0xa3, 0xfc, 0x53, 0xfe, 0xa3, 0xfb, 0x53, 0xfe, 0xa3, - 0xfc, 0x53, 0xfe, 0xa3, 0xfb, 0x53, 0xfe, 0xa3, 0xfc, 0x53, 0xfe, 0xa3, - 0xfb, 0x53, 0xff, 0xa3, 0xfc, 0x53, 0xff, 0xa3, 0xfb, 0x53, 0x03, 0xa5, - 0x96, 0x53, 0x0a, 0xa5, 0x96, 0x53, 0x0f, 0xa5, 0x96, 0x53, 0x14, 0xa3, - 0x97, 0x53, 0x17, 0xa5, 0x96, 0x53, 0x1b, 0xa3, 0x97, 0x53, 0x1e, 0xa5, - 0x96, 0x53, 0x20, 0xa3, 0x97, 0x53, 0x23, 0xa5, 0x96, 0x53, 0x25, 0xa3, - 0x97, 0x53, 0x27, 0xa5, 0x96, 0x53, 0x29, 0xa3, 0x97, 0x53, 0x2b, 0xa5, - 0x96, 0x53, 0x2d, 0xa3, 0x97, 0x53, 0x2f, 0xa5, 0x96, 0x53, 0x31, 0xa3, - 0x97, 0x53, 0x32, 0xa5, 0x96, 0x53, 0x34, 0xa3, 0x97, 0x53, 0x35, 0xa5, - 0x96, 0x53, 0x37, 0xa3, 0x97, 0x53, 0x38, 0xa5, 0x96, 0x53, 0x3a, 0xa3, - 0x97, 0x53, 0x3b, 0xa5, 0x96, 0x53, 0x3c, 0xa3, 0x97, 0x53, 0x3e, 0xa5, - 0x96, 0x53, 0x3f, 0xa3, 0x97, 0x53, 0x40, 0xa5, 0x96, 0x53, 0x42, 0xa3, - 0x97, 0x53, 0x43, 0xa5, 0x96, 0x53, 0x44, 0xa3, 0x97, 0x53, 0x45, 0xa5, - 0x96, 0x53, 0x46, 0xa3, 0x97, 0x53, 0x47, 0xa5, 0x96, 0x53, 0x48, 0xa3, - 0x97, 0x53, 0x49, 0xa5, 0x96, 0x53, 0x4a, 0xa3, 0x97, 0x53, 0x4b, 0xa5, - 0x96, 0x53, 0x4c, 0xa3, 0x97, 0x53, 0x4d, 0xa1, 0x97, 0x53, 0x4e, 0xa3, - 0x97, 0x53, 0x4f, 0xa1, 0x97, 0x53, 0x50, 0xa3, 0x97, 0x53, 0x51, 0xa1, - 0x97, 0x53, 0x52, 0xa3, 0x97, 0x53, 0x53, 0xa1, 0x97, 0x53, 0x54, 0xa3, - 0x97, 0x53, 0x55, 0xa1, 0x97, 0x53, 0x56, 0xa3, 0x97, 0x53, 0x57, 0xa1, - 0x97, 0x53, 0x58, 0xa3, 0x97, 0x53, 0x58, 0xa1, 0x97, 0x53, 0x59, 0xa3, - 0x97, 0x53, 0x5a, 0xa1, 0x97, 0x53, 0x5b, 0xa3, 0x97, 0x53, 0x5c, 0xa1, - 0x97, 0x53, 0x5d, 0xa3, 0x97, 0x53, 0x5d, 0xa1, 0x97, 0x53, 0x5e, 0xa3, - 0x97, 0x53, 0x5f, 0xa1, 0x97, 0x53, 0x60, 0xa3, 0x97, 0x53, 0x60, 0xa1, - 0x97, 0x53, 0x61, 0xa3, 0x97, 0x53, 0x62, 0xa1, 0x97, 0x53, 0x63, 0xa3, - 0x97, 0x53, 0x63, 0xa1, 0x97, 0x53, 0x64, 0xa3, 0x97, 0x53, 0x65, 0xa1, - 0x97, 0x53, 0x66, 0x9d, 0x98, 0x53, 0x66, 0xa1, 0x97, 0x53, 0x67, 0x9d, - 0x98, 0x53, 0x68, 0xa1, 0x97, 0x53, 0x68, 0x9d, 0x98, 0x53, 0x69, 0xa1, - 0x97, 0x53, 0x6a, 0x9d, 0x98, 0x53, 0x6a, 0xa1, 0x97, 0x53, 0x6b, 0x9d, - 0x98, 0x53, 0x6c, 0xa1, 0x97, 0x53, 0x6c, 0x9d, 0x98, 0x53, 0x6d, 0xa1, - 0x97, 0x53, 0x6e, 0x9d, 0x98, 0x53, 0x6e, 0xa1, 0x97, 0x53, 0x6f, 0x9d, - 0x98, 0x53, 0x70, 0xa1, 0x97, 0x53, 0x70, 0x9d, 0x98, 0x53, 0x71, 0xa1, - 0x97, 0x53, 0x72, 0x9d, 0x98, 0x53, 0x72, 0xa1, 0x97, 0x53, 0x73, 0x9d, - 0x98, 0x53, 0x73, 0xa1, 0x97, 0x53, 0x74, 0x9d, 0x98, 0x53, 0x75, 0xa1, - 0x97, 0x53, 0x75, 0x9d, 0x98, 0x53, 0x76, 0xa1, 0x97, 0x53, 0x76, 0x9d, - 0x98, 0x53, 0x77, 0xa1, 0x97, 0x53, 0x78, 0x9d, 0x98, 0x53, 0x78, 0xa1, - 0x97, 0x53, 0x79, 0x9d, 0x98, 0x53, 0x79, 0xa1, 0x97, 0x53, 0x7a, 0x9d, - 0x98, 0x53, 0x7a, 0xa1, 0x97, 0x53, 0x7b, 0x9d, 0x98, 0x53, 0x7c, 0xa1, - 0x97, 0x53, 0x7c, 0x9d, 0x98, 0x53, 0x7d, 0xa1, 0x97, 0x53, 0x7d, 0x9d, - 0x98, 0x53, 0x7e, 0xa1, 0x97, 0x53, 0x7e, 0x9d, 0x98, 0x53, 0x7f, 0xa1, - 0x97, 0x53, 0x7f, 0x9d, 0x98, 0x53, 0x80, 0xa1, 0x97, 0x53, 0x81, 0x9d, - 0x98, 0x53, 0x81, 0x9b, 0x98, 0x53, 0x82, 0x9d, 0x98, 0x53, 0x82, 0x9b, - 0x98, 0x53, 0x83, 0x9d, 0x98, 0x53, 0x83, 0x9b, 0x98, 0x53, 0x84, 0x9d, - 0x98, 0x53, 0x84, 0x9b, 0x98, 0x53, 0x85, 0x9d, 0x98, 0x53, 0x85, 0x9b, - 0x98, 0x53, 0x86, 0x9d, 0x98, 0x53, 0x86, 0x9b, 0x98, 0x53, 0x87, 0x9d, - 0x98, 0x53, 0x87, 0x9b, 0x98, 0x53, 0x88, 0x9d, 0x98, 0x53, 0x88, 0x9b, - 0x98, 0x53, 0x89, 0x9d, 0x98, 0x53, 0x89, 0x9b, 0x98, 0x53, 0x8a, 0x9d, - 0x98, 0x53, 0x8a, 0x9b, 0x98, 0x53, 0x8b, 0x9d, 0x98, 0x53, 0x8b, 0x9b, - 0x98, 0x53, 0x8c, 0x9d, 0x98, 0x53, 0x8c, 0x9b, 0x98, 0x53, 0x8d, 0x9d, - 0x98, 0x53, 0x8d, 0x9b, 0x98, 0x53, 0x8e, 0x9d, 0x98, 0x53, 0x8e, 0x9b, - 0x98, 0x53, 0x8e, 0x9d, 0x98, 0x53, 0x8f, 0x9b, 0x98, 0x53, 0x8f, 0x9d, - 0x98, 0x53, 0x90, 0x9b, 0x98, 0x53, 0x90, 0x9d, 0x98, 0x53, 0x91, 0x9b, - 0x98, 0x53, 0x91, 0x9d, 0x98, 0x53, 0x92, 0x9b, 0x98, 0x53, 0x92, 0x9d, - 0x98, 0x53, 0x93, 0x9b, 0x98, 0x53, 0x93, 0x9d, 0x98, 0x53, 0x94, 0x9b, - 0x98, 0x53, 0x94, 0x9d, 0x98, 0x53, 0x94, 0x9b, 0x98, 0x53, 0x95, 0x9b, - 0x98, 0x53, 0x95, 0x9b, 0x98, 0x53, 0x96, 0x9b, 0x98, 0x53, 0x96, 0x9b, - 0x98, 0x53, 0x97, 0x9b, 0x98, 0x53, 0x97, 0x9b, 0x98, 0x53, 0x98, 0x9b, - 0x98, 0x53, 0x98, 0x9b, 0x98, 0x52, 0x98, 0x9b, 0x98, 0x53, 0x98, 0x9b, - 0x99, 0x52, 0x98, 0x9b, 0x99, 0x53, 0x98, 0x9b, 0x9a, 0x52, 0x9c, 0x9b, - 0x9a, 0x53, 0x9c, 0x9b, 0x9a, 0x53, 0x9c, 0x9b, 0x9b, 0x53, 0x9c, 0x9b, - 0x9b, 0x53, 0x9c, 0x9a, 0x9c, 0x53, 0x9c, 0x9b, 0x9b, 0x53, 0x9d, 0x9a, - 0x9c, 0x53, 0x9d, 0x9b, 0x9b, 0x53, 0x9d, 0x9a, 0x9c, 0x53, 0x9e, 0x9b, - 0x9b, 0x53, 0x9e, 0x9a, 0x9c, 0x53, 0x9f, 0x9b, 0x9b, 0x53, 0x9f, 0x9a, - 0x9c, 0x53, 0x9f, 0x98, 0x9c, 0x53, 0xa0, 0x9a, 0x9c, 0x53, 0xa0, 0x98, - 0x9c, 0x53, 0xa1, 0x9a, 0x9c, 0x53, 0xa1, 0x98, 0x9c, 0x53, 0xa1, 0x9a, - 0x9c, 0x53, 0xa2, 0x98, 0x9c, 0x53, 0xa2, 0x9a, 0x9c, 0x53, 0xa3, 0x98, - 0x9c, 0x53, 0xa3, 0x9a, 0x9c, 0x53, 0xa3, 0x98, 0x9c, 0x53, 0xa4, 0x9a, - 0x9c, 0x53, 0xa4, 0x98, 0x9c, 0x53, 0xa5, 0x9a, 0x9c, 0x53, 0xa5, 0x98, - 0x9c, 0x53, 0xa5, 0x9a, 0x9c, 0x53, 0xa6, 0x98, 0x9c, 0x53, 0xa6, 0x9a, - 0x9c, 0x53, 0xa6, 0x8f, 0xa8, 0x53, 0xa7, 0x8f, 0xa8, 0x53, 0xa7, 0x8f, - 0xa8, 0x53, 0xa8, 0x8f, 0xa8, 0x53, 0xa8, 0x8f, 0xa8, 0x53, 0xa8, 0x8f, - 0xa8, 0x53, 0xa9, 0x8f, 0xa9, 0x53, 0xa9, 0x8f, 0xa9, 0x53, 0xaa, 0x90, - 0xac, 0x53, 0xaa, 0x90, 0xad, 0x53, 0xaa, 0x90, 0xac, 0x53, 0xab, 0x90, - 0xad, 0x53, 0xab, 0x90, 0xac, 0x53, 0xab, 0x90, 0xad, 0x53, 0xac, 0x90, - 0xac, 0x53, 0xac, 0x90, 0xad, 0x53, 0xac, 0x90, 0xac, 0x53, 0xad, 0x90, - 0xad, 0x53, 0xad, 0x90, 0xad, 0x53, 0xae, 0x91, 0xb0, 0x53, 0xae, 0x91, - 0xb1, 0x53, 0xae, 0x91, 0xb0, 0x53, 0xaf, 0x91, 0xb1, 0x53, 0xaf, 0x91, - 0xb0, 0x53, 0xaf, 0x91, 0xb1, 0x53, 0xb0, 0x91, 0xb0, 0x53, 0xb0, 0x91, - 0xb1, 0x53, 0xb0, 0x91, 0xb0, 0x53, 0xb1, 0x91, 0xb1, 0x53, 0xb1, 0x91, - 0xb1, 0x53, 0xb2, 0x92, 0xb4, 0x53, 0xb2, 0x92, 0xb5, 0x53, 0xb2, 0x92, - 0xb4, 0x53, 0xb3, 0x92, 0xb5, 0x53, 0xb3, 0x92, 0xb4, 0x53, 0xb3, 0x92, - 0xb5, 0x53, 0xb4, 0x92, 0xb4, 0x53, 0xb4, 0x92, 0xb5, 0x53, 0xb4, 0x92, - 0xb4, 0x53, 0xb5, 0x92, 0xb5, 0x53, 0xb5, 0x92, 0xb5, 0x53, 0xb5, 0x93, - 0xb8, 0x53, 0xb6, 0x93, 0xb8, 0x53, 0xb6, 0x93, 0xb8, 0x53, 0xb6, 0x93, - 0xb8, 0x53, 0xb7, 0x93, 0xb8, 0x53, 0xb7, 0x93, 0xb8, 0x53, 0xb7, 0x93, - 0xb8, 0x53, 0xb8, 0x93, 0xb8, 0x53, 0xb8, 0x93, 0xb8, 0x53, 0xb8, 0x93, - 0xb8, 0x53, 0xb9, 0x93, 0xb9, 0x53, 0xb9, 0x94, 0xbc, 0x53, 0xb9, 0x94, - 0xbc, 0x53, 0xba, 0x94, 0xbc, 0x53, 0xba, 0x94, 0xbc, 0x53, 0xba, 0x94, - 0xbc, 0x53, 0xbb, 0x94, 0xbc, 0x53, 0xbb, 0x94, 0xbc, 0x53, 0xbb, 0x94, - 0xbc, 0x53, 0xbc, 0x94, 0xbc, 0x53, 0xbc, 0x94, 0xbc, 0x53, 0xbc, 0x94, - 0xbc, 0x53, 0xbd, 0x94, 0xbd, 0x53, 0xbd, 0x94, 0xbd, 0x53, 0xbd, 0x95, - 0xbf, 0x53, 0xbe, 0x95, 0xc0, 0x53, 0xbe, 0x95, 0xbf, 0x53, 0xbe, 0x95, - 0xc0, 0x53, 0xbf, 0x95, 0xbf, 0x53, 0xbf, 0x95, 0xc0, 0x53, 0xbf, 0x95, - 0xbf, 0x53, 0xc0, 0x95, 0xc0, 0x53, 0xc0, 0x95, 0xc0, 0x53, 0xc0, 0x95, - 0xc0, 0x53, 0xc1, 0x95, 0xc1, 0x53, 0xc1, 0x96, 0xc3, 0x53, 0xc1, 0x96, - 0xc3, 0x53, 0xc1, 0x96, 0xc3, 0x53, 0xc2, 0x96, 0xc3, 0x53, 0xc2, 0x96, - 0xc3, 0x53, 0xc2, 0x96, 0xc3, 0x53, 0xc3, 0x96, 0xc3, 0x53, 0xc3, 0x96, - 0xc3, 0x53, 0xc3, 0x96, 0xc3, 0x53, 0xc4, 0x96, 0xc4, 0x53, 0xc4, 0x96, - 0xc4, 0x53, 0xc4, 0x96, 0xc4, 0x53, 0xc5, 0x97, 0xc6, 0x53, 0xc5, 0x97, - 0xc7, 0x53, 0xc5, 0x97, 0xc6, 0x53, 0xc6, 0x97, 0xc7, 0x53, 0xc6, 0x97, - 0xc6, 0x53, 0xc6, 0x97, 0xc7, 0x53, 0xc6, 0x97, 0xc6, 0x53, 0xc7, 0x97, - 0xc7, 0x53, 0xc7, 0x97, 0xc7, 0x53, 0xc7, 0x97, 0xc7, 0x53, 0xc8, 0x97, - 0xc8, 0x53, 0xc8, 0x97, 0xc8, 0x53, 0xc8, 0x97, 0xc8, 0x53, 0xc9, 0x98, - 0xca, 0x53, 0xc9, 0x98, 0xca, 0x53, 0xc9, 0x98, 0xca, 0x53, 0xc9, 0x98, - 0xca, 0x53, 0xca, 0x98, 0xca, 0x53, 0xca, 0x98, 0xca, 0x53, 0xca, 0x98, - 0xca, 0x53, 0xcb, 0x98, 0xcb, 0x53, 0xcb, 0x98, 0xcb, 0x53, 0xcb, 0x98, - 0xcb, 0x53, 0xcc, 0x98, 0xcc, 0x53, 0xcc, 0x98, 0xcd, 0x53, 0xcc, 0x98, - 0xcd, 0x53, 0xcc, 0x98, 0xcd, 0x53, 0xcd, 0x98, 0xcd, 0x53, 0xcd, 0x98, - 0xcd, 0x53, 0xcd, 0x98, 0xcd, 0x53, 0xce, 0x98, 0xce, 0x53, 0xce, 0x98, - 0xce, 0x53, 0xce, 0x98, 0xce, 0x53, 0xce, 0x98, 0xce, 0x53, 0xcf, 0x98, - 0xcf, 0x53, 0xcf, 0x99, 0xd0, 0x53, 0xcf, 0x99, 0xd0, 0x53, 0xd0, 0x99, - 0xd0, 0x53, 0xd0, 0x99, 0xd0, 0x53, 0xd0, 0x99, 0xd0, 0x53, 0xd0, 0x99, - 0xd0, 0x53, 0xd1, 0x99, 0xd1, 0x53, 0xd1, 0x99, 0xd1, 0x53, 0xd1, 0x99, - 0xd1, 0x53, 0xd2, 0x9c, 0xd2, 0x53, 0xd2, 0x9b, 0xd2, 0x53, 0xd2, 0x9b, - 0xd3, 0x53, 0xd2, 0x9b, 0xd2, 0x53, 0xd2, 0x9b, 0xd3, 0x53, 0xd2, 0x9b, - 0xd3, 0x53, 0xd2, 0x9b, 0xd3, 0x53, 0xd2, 0x9b, 0xd4, 0x53, 0xd2, 0x9b, - 0xd4, 0x53, 0xd2, 0x9b, 0xd4, 0x53, 0xd2, 0x9b, 0xd4, 0x53, 0xd2, 0x9b, - 0xd5, 0x53, 0xd2, 0x9b, 0xd5, 0x53, 0xd2, 0x9b, 0xd5, 0x53, 0xd2, 0x9b, - 0xd6, 0x53, 0xd2, 0x9b, 0xd6, 0x53, 0xd2, 0x9b, 0xd6, 0x53, 0xd7, 0x9b, - 0xd6, 0x4c, 0xd7, 0x9b, 0xd7, 0x4c, 0xd7, 0x9b, 0xd7, 0x4c, 0xd7, 0x9b, - 0xd7, 0x4c, 0xd9, 0x9b, 0xd7, 0x4d, 0xd9, 0x9b, 0xd8, 0x4d, 0xd9, 0x9b, - 0xd8, 0x4d, 0xd9, 0x9b, 0xd8, 0x4d, 0xd9, 0x9b, 0xd9, 0x4d, 0xd9, 0x9b, - 0xd9, 0x4d, 0xd9, 0x9b, 0xd9, 0x4d, 0xd9, 0x9b, 0xd9, 0x4d, 0xda, 0x9b, - 0xda, 0x4d, 0xdb, 0x9b, 0xda, 0x4e, 0xdc, 0x9b, 0xda, 0x4e, 0xdb, 0x9b, - 0xda, 0x4e, 0xdc, 0x9b, 0xdb, 0x4e, 0xdb, 0x9b, 0xdb, 0x4e, 0xdc, 0x9b, - 0xdb, 0x4e, 0xdb, 0x9b, 0xdb, 0x4e, 0xdc, 0x9b, 0xdc, 0x4e, 0xdc, 0x9b, - 0xdc, 0x4e, 0xdc, 0x9b, 0xdc, 0x4e, 0xdd, 0x9b, 0xdd, 0x4e, 0xdd, 0x9b, - 0xdd, 0x4e, 0xde, 0x9b, 0xdd, 0x4f, 0xde, 0x9b, 0xdd, 0x4f, 0xde, 0x9b, - 0xde, 0x4f, 0xde, 0x9b, 0xde, 0x4f, 0xde, 0x9b, 0xde, 0x4f, 0xde, 0x9b, - 0xde, 0x4f, 0xdf, 0x9b, 0xdf, 0x4f, 0xdf, 0x9b, 0xdf, 0x4f, 0xdf, 0x9b, - 0xdf, 0x4f, 0xe1, 0x9b, 0xdf, 0x50, 0xe1, 0x9b, 0xe0, 0x50, 0xe1, 0x9b, - 0xe0, 0x50, 0xe1, 0x9b, 0xe0, 0x50, 0xe1, 0x9b, 0xe1, 0x50, 0xe1, 0x9b, - 0xe1, 0x50, 0xe1, 0x9b, 0xe1, 0x50, 0xe1, 0x9b, 0xe1, 0x50, 0xe2, 0x9b, - 0xe2, 0x50, 0xe3, 0x9b, 0xe2, 0x51, 0xe3, 0x9b, 0xe2, 0x51, 0xe3, 0x9b, - 0xe2, 0x51, 0xe3, 0x9b, 0xe3, 0x51, 0xe3, 0x9b, 0xe3, 0x51, 0xe3, 0x9b, - 0xe3, 0x51, 0xe3, 0x9b, 0xe3, 0x51, 0xe4, 0x9b, 0xe4, 0x51, 0xe4, 0x9b, - 0xe4, 0x51, 0xe4, 0x9b, 0xe4, 0x51, 0xe4, 0x9b, 0xe4, 0x51, 0xe5, 0x9b, - 0xe5, 0x51, 0xe5, 0x9b, 0xe5, 0x52, 0xe6, 0x9b, 0xe5, 0x52, 0xe5, 0x9b, - 0xe5, 0x52, 0xe6, 0x9b, 0xe6, 0x52, 0xe6, 0x9b, 0xe6, 0x52, 0xe6, 0x9b, - 0xe6, 0x52, 0xe6, 0x9b, 0xe6, 0x52, 0xe7, 0x9b, 0xe7, 0x52, 0xe7, 0x9b, - 0xe7, 0x52, 0xe7, 0x9b, 0xe7, 0x52, 0xe7, 0x9b, 0xe7, 0x52, 0xe8, 0x9c, - 0xe8, 0x53, 0xe8, 0x9c, 0xe8, 0x53, 0xe8, 0x9c, 0xe8, 0x53, 0xe8, 0x9c, - 0xe8, 0x53, 0xe9, 0x9c, 0xe9, 0x53, 0xe9, 0x9c, 0xe9, 0x53, 0xe9, 0x9c, - 0xe9, 0x53, 0xe9, 0x9c, 0xe9, 0x53, 0xea, 0x9c, 0xea, 0x53, 0xea, 0x9c, - 0xea, 0x53, 0xea, 0x9c, 0xea, 0x53, 0xea, 0x9c, 0xea, 0x53, 0xeb, 0x9d, - 0xeb, 0x53, 0xeb, 0x9d, 0xeb, 0x53, 0xeb, 0x9d, 0xeb, 0x53, 0xeb, 0x9d, - 0xeb, 0x53, 0xec, 0x9d, 0xec, 0x53, 0xec, 0x9d, 0xec, 0x53, 0xec, 0x9d, - 0xec, 0x53, 0xec, 0x9d, 0xec, 0x53, 0xec, 0x9d, 0xec, 0x53, 0xed, 0x9d, - 0xec, 0x53, 0xed, 0x9d, 0xec, 0x53, 0xed, 0x9d, 0xed, 0x53, 0xed, 0x9d, - 0xed, 0x53, 0xee, 0x9d, 0xee, 0x53, 0xee, 0x9d, 0xee, 0x53, 0xee, 0x9d, - 0xee, 0x53, 0xee, 0x9d, 0xee, 0x53, 0xef, 0x9d, 0xee, 0x53, 0xef, 0x9d, - 0xee, 0x53, 0xef, 0x9d, 0xee, 0x53, 0xef, 0x9e, 0xef, 0x53, 0xf0, 0x9e, - 0xf0, 0x53, 0xf0, 0x9e, 0xf0, 0x53, 0xf0, 0x9e, 0xf0, 0x53, 0xf0, 0x9e, - 0xf0, 0x53, 0xf1, 0x9e, 0xf1, 0x53, 0xf1, 0x9e, 0xf0, 0x53, 0xf1, 0x9e, - 0xf1, 0x53, 0xf1, 0x9e, 0xf0, 0x53, 0xf2, 0x9e, 0xf1, 0x53, 0xf2, 0x9f, - 0xf2, 0x53, 0xf2, 0x9f, 0xf2, 0x53, 0xf2, 0x9f, 0xf2, 0x53, 0xf2, 0x9f, - 0xf2, 0x53, 0xf3, 0x9f, 0xf3, 0x53, 0xf3, 0x9f, 0xf2, 0x53, 0xf3, 0x9f, - 0xf3, 0x53, 0xf3, 0x9f, 0xf2, 0x53, 0xf4, 0x9f, 0xf3, 0x53, 0xf4, 0x9f, - 0xf2, 0x53, 0xf4, 0x9f, 0xf3, 0x53, 0xf4, 0xa0, 0xf4, 0x53, 0xf5, 0xa0, - 0xf5, 0x53, 0xf5, 0xa0, 0xf5, 0x53, 0xf5, 0xa0, 0xf5, 0x53, 0xf5, 0xa0, - 0xf5, 0x53, 0xf5, 0xa0, 0xf5, 0x53, 0xf6, 0xa0, 0xf5, 0x53, 0xf6, 0xa0, - 0xf5, 0x53, 0xf6, 0xa0, 0xf5, 0x53, 0xf6, 0xa1, 0xf6, 0x53, 0xf7, 0xa1, - 0xf7, 0x53, 0xf7, 0xa1, 0xf7, 0x53, 0xf7, 0xa1, 0xf7, 0x53, 0xf7, 0xa1, - 0xf7, 0x53, 0xf8, 0xa1, 0xf7, 0x53, 0xf8, 0xa1, 0xf7, 0x53, 0xf8, 0xa1, - 0xf7, 0x53, 0xf8, 0xa1, 0xf7, 0x53, 0xf8, 0xa1, 0xf7, 0x53, 0xf9, 0xa1, - 0xf9, 0x53, 0xf9, 0xa1, 0xf9, 0x53, 0xf9, 0xa1, 0xf9, 0x53, 0xf9, 0xa1, - 0xf9, 0x53, 0xfa, 0xa1, 0xf9, 0x53, 0xfa, 0xa1, 0xf9, 0x53, 0xfa, 0xa1, - 0xf9, 0x53, 0xfa, 0xa1, 0xf9, 0x53, 0xfa, 0xa1, 0xf9, 0x53, 0xfb, 0xa1, - 0xf9, 0x53, 0xfb, 0xa1, 0xf9, 0x53, 0xfb, 0xa2, 0xfb, 0x53, 0xfb, 0xa2, - 0xfb, 0x53, 0xfc, 0xa2, 0xfb, 0x53, 0xfc, 0xa2, 0xfb, 0x53, 0xfc, 0xa2, - 0xfb, 0x53, 0xfc, 0xa2, 0xfb, 0x53, 0xfc, 0xa2, 0xfb, 0x53, 0xfd, 0xa2, - 0xfb, 0x53, 0xfd, 0xa2, 0xfb, 0x53, 0xfd, 0xa2, 0xfb, 0x53, 0xfd, 0xa2, - 0xfb, 0x53, 0xfe, 0xa2, 0xfb, 0x53, 0xfe, 0xa2, 0xfb, 0x53, 0xfe, 0xa2, - 0xfb, 0x53, 0xfe, 0xa2, 0xfb, 0x53, 0xfe, 0xa2, 0xfb, 0x53, 0xff, 0xa2, - 0xfb, 0x53, 0xff, 0xa2, 0xfb, 0x53, 0x03, 0xa6, 0x96, 0x54, 0x0a, 0xa6, - 0x96, 0x54, 0x0f, 0xa6, 0x96, 0x54, 0x14, 0xa3, 0x97, 0x54, 0x17, 0xa6, - 0x96, 0x54, 0x1b, 0xa3, 0x97, 0x54, 0x1e, 0xa6, 0x96, 0x54, 0x20, 0xa3, - 0x97, 0x54, 0x23, 0xa6, 0x96, 0x54, 0x25, 0xa3, 0x97, 0x54, 0x27, 0xa6, - 0x96, 0x54, 0x29, 0xa3, 0x97, 0x54, 0x2b, 0xa6, 0x96, 0x54, 0x2d, 0xa3, - 0x97, 0x54, 0x2f, 0xa6, 0x96, 0x54, 0x31, 0xa3, 0x97, 0x54, 0x32, 0xa6, - 0x96, 0x54, 0x34, 0xa3, 0x97, 0x54, 0x35, 0xa6, 0x96, 0x54, 0x37, 0xa3, - 0x97, 0x54, 0x38, 0xa6, 0x96, 0x54, 0x3a, 0xa3, 0x97, 0x54, 0x3b, 0xa6, - 0x96, 0x54, 0x3c, 0xa3, 0x97, 0x54, 0x3e, 0xa6, 0x96, 0x54, 0x3f, 0xa3, - 0x97, 0x54, 0x40, 0xa0, 0x97, 0x54, 0x42, 0xa3, 0x97, 0x54, 0x43, 0xa0, - 0x97, 0x54, 0x44, 0xa3, 0x97, 0x54, 0x45, 0xa0, 0x97, 0x54, 0x46, 0xa3, - 0x97, 0x54, 0x47, 0xa0, 0x97, 0x54, 0x48, 0xa3, 0x97, 0x54, 0x49, 0xa0, - 0x97, 0x54, 0x4a, 0xa3, 0x97, 0x54, 0x4b, 0xa0, 0x97, 0x54, 0x4c, 0xa3, - 0x97, 0x54, 0x4d, 0xa0, 0x97, 0x54, 0x4e, 0xa3, 0x97, 0x54, 0x4f, 0xa0, - 0x97, 0x54, 0x50, 0xa3, 0x97, 0x54, 0x51, 0xa0, 0x97, 0x54, 0x52, 0xa3, - 0x97, 0x54, 0x53, 0xa0, 0x97, 0x54, 0x54, 0xa3, 0x97, 0x54, 0x55, 0xa0, - 0x97, 0x54, 0x56, 0xa3, 0x97, 0x54, 0x57, 0xa0, 0x97, 0x54, 0x58, 0xa3, - 0x97, 0x54, 0x58, 0xa0, 0x97, 0x54, 0x59, 0xa3, 0x97, 0x54, 0x5a, 0xa0, - 0x97, 0x54, 0x5b, 0xa3, 0x97, 0x54, 0x5c, 0xa0, 0x97, 0x54, 0x5d, 0xa3, - 0x97, 0x54, 0x5d, 0xa0, 0x97, 0x54, 0x5e, 0xa3, 0x97, 0x54, 0x5f, 0xa0, - 0x97, 0x54, 0x60, 0xa3, 0x97, 0x54, 0x60, 0xa0, 0x97, 0x54, 0x61, 0xa3, - 0x97, 0x54, 0x62, 0xa0, 0x97, 0x54, 0x63, 0xa3, 0x97, 0x54, 0x63, 0xa0, - 0x97, 0x54, 0x64, 0xa3, 0x97, 0x54, 0x65, 0xa0, 0x97, 0x54, 0x66, 0x9e, - 0x98, 0x54, 0x66, 0xa0, 0x97, 0x54, 0x67, 0x9e, 0x98, 0x54, 0x68, 0xa0, - 0x97, 0x54, 0x68, 0x9e, 0x98, 0x54, 0x69, 0xa0, 0x97, 0x54, 0x6a, 0x9e, - 0x98, 0x54, 0x6a, 0xa0, 0x97, 0x54, 0x6b, 0x9e, 0x98, 0x54, 0x6c, 0xa0, - 0x97, 0x54, 0x6c, 0x9e, 0x98, 0x54, 0x6d, 0xa0, 0x97, 0x54, 0x6e, 0x9e, - 0x98, 0x54, 0x6e, 0xa0, 0x97, 0x54, 0x6f, 0x9e, 0x98, 0x54, 0x70, 0xa0, - 0x97, 0x54, 0x70, 0x9e, 0x98, 0x54, 0x71, 0xa0, 0x97, 0x54, 0x72, 0x9e, - 0x98, 0x54, 0x72, 0xa0, 0x97, 0x54, 0x73, 0x9e, 0x98, 0x54, 0x73, 0xa0, - 0x97, 0x54, 0x74, 0x9e, 0x98, 0x54, 0x75, 0xa0, 0x97, 0x54, 0x75, 0x9e, - 0x98, 0x54, 0x76, 0xa0, 0x97, 0x54, 0x76, 0x9e, 0x98, 0x54, 0x77, 0xa0, - 0x97, 0x54, 0x78, 0x9e, 0x98, 0x54, 0x78, 0xa0, 0x97, 0x54, 0x79, 0x9e, - 0x98, 0x54, 0x79, 0xa0, 0x97, 0x54, 0x7a, 0x9e, 0x98, 0x54, 0x7a, 0xa0, - 0x97, 0x54, 0x7b, 0x9e, 0x98, 0x54, 0x7c, 0xa0, 0x97, 0x54, 0x7c, 0x9e, - 0x98, 0x54, 0x7d, 0xa0, 0x97, 0x54, 0x7d, 0x9e, 0x98, 0x54, 0x7e, 0xa0, - 0x97, 0x54, 0x7e, 0x9e, 0x98, 0x54, 0x7f, 0xa0, 0x97, 0x54, 0x7f, 0x9e, - 0x98, 0x54, 0x80, 0xa0, 0x97, 0x54, 0x81, 0x9e, 0x98, 0x54, 0x81, 0xa0, - 0x97, 0x54, 0x82, 0x9e, 0x98, 0x54, 0x82, 0xa0, 0x97, 0x54, 0x83, 0x9e, - 0x98, 0x54, 0x83, 0xa0, 0x97, 0x54, 0x84, 0x9e, 0x98, 0x54, 0x84, 0xa0, - 0x97, 0x54, 0x85, 0x9e, 0x98, 0x54, 0x85, 0xa0, 0x97, 0x54, 0x86, 0x9e, - 0x98, 0x54, 0x86, 0xa0, 0x97, 0x54, 0x87, 0x9e, 0x98, 0x54, 0x87, 0x9b, - 0x98, 0x54, 0x88, 0x9e, 0x98, 0x54, 0x88, 0x9b, 0x98, 0x54, 0x89, 0x9e, - 0x98, 0x54, 0x89, 0x9b, 0x98, 0x54, 0x8a, 0x9e, 0x98, 0x54, 0x8a, 0x9b, - 0x98, 0x54, 0x8b, 0x9e, 0x98, 0x54, 0x8b, 0x9b, 0x98, 0x54, 0x8c, 0x9e, - 0x98, 0x54, 0x8c, 0x9b, 0x98, 0x54, 0x8d, 0x9e, 0x98, 0x54, 0x8d, 0x9b, - 0x98, 0x54, 0x8e, 0x9e, 0x98, 0x54, 0x8e, 0x9b, 0x98, 0x54, 0x8e, 0x9e, - 0x98, 0x54, 0x8f, 0x9b, 0x98, 0x54, 0x8f, 0x9e, 0x98, 0x54, 0x90, 0x9b, - 0x98, 0x54, 0x90, 0x9e, 0x98, 0x54, 0x91, 0x9b, 0x98, 0x54, 0x91, 0x9e, - 0x98, 0x54, 0x92, 0x9b, 0x98, 0x54, 0x92, 0x9e, 0x98, 0x54, 0x93, 0x9b, - 0x98, 0x54, 0x93, 0x9e, 0x98, 0x54, 0x94, 0x9b, 0x98, 0x54, 0x94, 0x9e, - 0x98, 0x54, 0x94, 0x9b, 0x98, 0x54, 0x95, 0x9b, 0x98, 0x54, 0x95, 0x9b, - 0x98, 0x54, 0x96, 0x9b, 0x98, 0x54, 0x96, 0x9b, 0x98, 0x54, 0x97, 0x9b, - 0x98, 0x54, 0x97, 0x9b, 0x98, 0x54, 0x98, 0x9b, 0x98, 0x54, 0x98, 0x9b, - 0x98, 0x53, 0x98, 0x9b, 0x98, 0x54, 0x98, 0x9b, 0x99, 0x53, 0x98, 0x9b, - 0x99, 0x54, 0x98, 0x9b, 0x9a, 0x53, 0x9c, 0x9b, 0x9a, 0x54, 0x9c, 0x9b, - 0x9a, 0x54, 0x9c, 0x9b, 0x9b, 0x54, 0x9c, 0x9b, 0x9b, 0x54, 0x9c, 0x9a, - 0x9c, 0x54, 0x9c, 0x9b, 0x9b, 0x54, 0x9d, 0x9a, 0x9c, 0x54, 0x9d, 0x9b, - 0x9b, 0x54, 0x9d, 0x9a, 0x9c, 0x54, 0x9e, 0x9b, 0x9b, 0x54, 0x9e, 0x9a, - 0x9c, 0x54, 0x9f, 0x9b, 0x9b, 0x54, 0x9f, 0x9a, 0x9c, 0x54, 0x9f, 0x9b, - 0x9b, 0x54, 0xa0, 0x9a, 0x9c, 0x54, 0xa0, 0x9b, 0x9b, 0x54, 0xa1, 0x9a, - 0x9c, 0x54, 0xa1, 0x9b, 0x9b, 0x54, 0xa1, 0x9a, 0x9c, 0x54, 0xa2, 0x9b, - 0x9b, 0x54, 0xa2, 0x9a, 0x9c, 0x54, 0xa3, 0x98, 0x9c, 0x54, 0xa3, 0x9a, - 0x9c, 0x54, 0xa3, 0x98, 0x9c, 0x54, 0xa4, 0x9a, 0x9c, 0x54, 0xa4, 0x98, - 0x9c, 0x54, 0xa5, 0x9a, 0x9c, 0x54, 0xa5, 0x98, 0x9c, 0x54, 0xa5, 0x9a, - 0x9c, 0x54, 0xa6, 0x98, 0x9c, 0x54, 0xa6, 0x9a, 0x9c, 0x54, 0xa6, 0x98, - 0x9c, 0x54, 0xa7, 0x90, 0xab, 0x54, 0xa7, 0x90, 0xaa, 0x54, 0xa8, 0x90, - 0xab, 0x54, 0xa8, 0x90, 0xaa, 0x54, 0xa8, 0x90, 0xab, 0x54, 0xa9, 0x90, - 0xaa, 0x54, 0xa9, 0x90, 0xab, 0x54, 0xaa, 0x90, 0xaa, 0x54, 0xaa, 0x90, - 0xab, 0x54, 0xaa, 0x90, 0xaa, 0x54, 0xab, 0x90, 0xab, 0x54, 0xab, 0x90, - 0xab, 0x54, 0xab, 0x91, 0xae, 0x54, 0xac, 0x91, 0xaf, 0x54, 0xac, 0x91, - 0xae, 0x54, 0xac, 0x91, 0xaf, 0x54, 0xad, 0x91, 0xae, 0x54, 0xad, 0x91, - 0xaf, 0x54, 0xae, 0x91, 0xae, 0x54, 0xae, 0x91, 0xaf, 0x54, 0xae, 0x91, - 0xae, 0x54, 0xaf, 0x91, 0xaf, 0x54, 0xaf, 0x91, 0xaf, 0x54, 0xaf, 0x92, - 0xb2, 0x54, 0xb0, 0x92, 0xb3, 0x54, 0xb0, 0x92, 0xb2, 0x54, 0xb0, 0x92, - 0xb3, 0x54, 0xb1, 0x92, 0xb2, 0x54, 0xb1, 0x92, 0xb3, 0x54, 0xb2, 0x92, - 0xb2, 0x54, 0xb2, 0x92, 0xb3, 0x54, 0xb2, 0x92, 0xb2, 0x54, 0xb3, 0x92, - 0xb3, 0x54, 0xb3, 0x92, 0xb3, 0x54, 0xb3, 0x93, 0xb6, 0x54, 0xb4, 0x93, - 0xb6, 0x54, 0xb4, 0x93, 0xb6, 0x54, 0xb4, 0x93, 0xb6, 0x54, 0xb5, 0x93, - 0xb6, 0x54, 0xb5, 0x93, 0xb6, 0x54, 0xb5, 0x93, 0xb6, 0x54, 0xb6, 0x93, - 0xb6, 0x54, 0xb6, 0x93, 0xb6, 0x54, 0xb6, 0x93, 0xb6, 0x54, 0xb7, 0x93, - 0xb7, 0x54, 0xb7, 0x93, 0xb7, 0x54, 0xb7, 0x94, 0xba, 0x54, 0xb8, 0x94, - 0xba, 0x54, 0xb8, 0x94, 0xba, 0x54, 0xb8, 0x94, 0xba, 0x54, 0xb9, 0x94, - 0xba, 0x54, 0xb9, 0x94, 0xba, 0x54, 0xb9, 0x94, 0xba, 0x54, 0xba, 0x94, - 0xba, 0x54, 0xba, 0x94, 0xba, 0x54, 0xba, 0x94, 0xba, 0x54, 0xbb, 0x94, - 0xbb, 0x54, 0xbb, 0x94, 0xbe, 0x54, 0xbb, 0x94, 0xbe, 0x54, 0xbc, 0x94, - 0xbe, 0x54, 0xbc, 0x94, 0xbe, 0x54, 0xbc, 0x94, 0xbe, 0x54, 0xbd, 0x94, - 0xbe, 0x54, 0xbd, 0x94, 0xbe, 0x54, 0xbd, 0x94, 0xbe, 0x54, 0xbe, 0x94, - 0xbe, 0x54, 0xbe, 0x94, 0xbe, 0x54, 0xbe, 0x94, 0xbe, 0x54, 0xbf, 0x94, - 0xbf, 0x54, 0xbf, 0x94, 0xbf, 0x54, 0xbf, 0x95, 0xc1, 0x54, 0xc0, 0x95, - 0xc1, 0x54, 0xc0, 0x95, 0xc1, 0x54, 0xc0, 0x95, 0xc1, 0x54, 0xc1, 0x95, - 0xc1, 0x54, 0xc1, 0x95, 0xc1, 0x54, 0xc1, 0x95, 0xc1, 0x54, 0xc1, 0x95, - 0xc1, 0x54, 0xc2, 0x95, 0xc2, 0x54, 0xc2, 0x95, 0xc2, 0x54, 0xc2, 0x95, - 0xc2, 0x54, 0xc3, 0x96, 0xc5, 0x54, 0xc3, 0x96, 0xc5, 0x54, 0xc3, 0x96, - 0xc5, 0x54, 0xc4, 0x96, 0xc5, 0x54, 0xc4, 0x96, 0xc5, 0x54, 0xc4, 0x96, - 0xc5, 0x54, 0xc5, 0x96, 0xc5, 0x54, 0xc5, 0x96, 0xc5, 0x54, 0xc5, 0x96, - 0xc5, 0x54, 0xc6, 0x96, 0xc6, 0x54, 0xc6, 0x96, 0xc6, 0x54, 0xc6, 0x97, - 0xc8, 0x54, 0xc6, 0x97, 0xc8, 0x54, 0xc7, 0x97, 0xc8, 0x54, 0xc7, 0x97, - 0xc8, 0x54, 0xc7, 0x97, 0xc8, 0x54, 0xc8, 0x97, 0xc8, 0x54, 0xc8, 0x97, - 0xc8, 0x54, 0xc8, 0x97, 0xc8, 0x54, 0xc9, 0x97, 0xc9, 0x54, 0xc9, 0x97, - 0xc9, 0x54, 0xc9, 0x97, 0xc9, 0x54, 0xc9, 0x97, 0xc9, 0x54, 0xca, 0x97, - 0xca, 0x54, 0xca, 0x98, 0xcb, 0x54, 0xca, 0x98, 0xcc, 0x54, 0xcb, 0x98, - 0xcb, 0x54, 0xcb, 0x98, 0xcc, 0x54, 0xcb, 0x98, 0xcb, 0x54, 0xcc, 0x98, - 0xcc, 0x54, 0xcc, 0x98, 0xcc, 0x54, 0xcc, 0x98, 0xcc, 0x54, 0xcc, 0x98, - 0xcc, 0x54, 0xcd, 0x98, 0xcd, 0x54, 0xcd, 0x98, 0xcd, 0x54, 0xcd, 0x99, - 0xce, 0x54, 0xce, 0x99, 0xcf, 0x54, 0xce, 0x99, 0xce, 0x54, 0xce, 0x99, - 0xcf, 0x54, 0xce, 0x99, 0xce, 0x54, 0xcf, 0x99, 0xcf, 0x54, 0xcf, 0x99, - 0xcf, 0x54, 0xcf, 0x99, 0xcf, 0x54, 0xd0, 0x99, 0xd0, 0x54, 0xd0, 0x99, - 0xd0, 0x54, 0xd0, 0x99, 0xd0, 0x54, 0xd0, 0x9a, 0xd2, 0x54, 0xd1, 0x9a, - 0xd2, 0x54, 0xd1, 0x9a, 0xd2, 0x54, 0xd1, 0x9b, 0xd2, 0x54, 0xd2, 0x9c, - 0xd2, 0x54, 0xd2, 0x9b, 0xd2, 0x54, 0xd2, 0x9b, 0xd3, 0x54, 0xd2, 0x9b, - 0xd2, 0x54, 0xd2, 0x9b, 0xd3, 0x54, 0xd2, 0x9b, 0xd3, 0x54, 0xd2, 0x9b, - 0xd3, 0x54, 0xd2, 0x9b, 0xd4, 0x54, 0xd2, 0x9b, 0xd4, 0x54, 0xd2, 0x9b, - 0xd4, 0x54, 0xd2, 0x9b, 0xd4, 0x54, 0xd2, 0x9b, 0xd5, 0x54, 0xd2, 0x9b, - 0xd5, 0x54, 0xd2, 0x9b, 0xd5, 0x54, 0xd2, 0x9b, 0xd6, 0x54, 0xd2, 0x9b, - 0xd6, 0x54, 0xd2, 0x9b, 0xd6, 0x54, 0xd8, 0x9b, 0xd6, 0x4d, 0xd8, 0x9b, - 0xd7, 0x4d, 0xd8, 0x9b, 0xd7, 0x4d, 0xd8, 0x9b, 0xd7, 0x4d, 0xd8, 0x9b, - 0xd7, 0x4d, 0xd8, 0x9b, 0xd8, 0x4d, 0xd8, 0x9b, 0xd8, 0x4d, 0xd8, 0x9b, - 0xd8, 0x4d, 0xd9, 0x9b, 0xd9, 0x4d, 0xda, 0x9b, 0xd9, 0x4e, 0xdb, 0x9b, - 0xd9, 0x4e, 0xda, 0x9b, 0xd9, 0x4e, 0xdb, 0x9b, 0xda, 0x4e, 0xda, 0x9b, - 0xda, 0x4e, 0xdb, 0x9b, 0xda, 0x4e, 0xda, 0x9b, 0xda, 0x4e, 0xdb, 0x9b, - 0xdb, 0x4e, 0xdb, 0x9b, 0xdb, 0x4e, 0xdd, 0x9b, 0xdb, 0x4f, 0xdd, 0x9b, - 0xdb, 0x4f, 0xdd, 0x9b, 0xdc, 0x4f, 0xdd, 0x9b, 0xdc, 0x4f, 0xdd, 0x9b, - 0xdc, 0x4f, 0xdd, 0x9b, 0xdd, 0x4f, 0xdd, 0x9b, 0xdd, 0x4f, 0xdd, 0x9b, - 0xdd, 0x4f, 0xdd, 0x9b, 0xdd, 0x4f, 0xde, 0x9b, 0xde, 0x4f, 0xde, 0x9b, - 0xde, 0x4f, 0xdf, 0x9b, 0xde, 0x50, 0xdf, 0x9b, 0xde, 0x50, 0xdf, 0x9b, - 0xdf, 0x50, 0xdf, 0x9b, 0xdf, 0x50, 0xdf, 0x9b, 0xdf, 0x50, 0xdf, 0x9b, - 0xdf, 0x50, 0xe0, 0x9b, 0xe0, 0x50, 0xe0, 0x9b, 0xe0, 0x50, 0xe0, 0x9b, - 0xe0, 0x50, 0xe1, 0x9b, 0xe1, 0x50, 0xe2, 0x9b, 0xe1, 0x51, 0xe2, 0x9b, - 0xe1, 0x51, 0xe2, 0x9b, 0xe1, 0x51, 0xe2, 0x9b, 0xe2, 0x51, 0xe2, 0x9b, - 0xe2, 0x51, 0xe2, 0x9b, 0xe2, 0x51, 0xe2, 0x9b, 0xe2, 0x51, 0xe3, 0x9b, - 0xe3, 0x51, 0xe3, 0x9b, 0xe3, 0x51, 0xe4, 0x9b, 0xe3, 0x52, 0xe4, 0x9b, - 0xe3, 0x52, 0xe4, 0x9b, 0xe4, 0x52, 0xe4, 0x9b, 0xe4, 0x52, 0xe4, 0x9b, - 0xe4, 0x52, 0xe4, 0x9b, 0xe4, 0x52, 0xe5, 0x9b, 0xe5, 0x52, 0xe5, 0x9b, - 0xe5, 0x52, 0xe5, 0x9b, 0xe5, 0x52, 0xe5, 0x9b, 0xe5, 0x52, 0xe6, 0x9b, - 0xe6, 0x52, 0xe6, 0x9b, 0xe6, 0x53, 0xe7, 0x9b, 0xe6, 0x53, 0xe6, 0x9b, - 0xe6, 0x53, 0xe7, 0x9b, 0xe7, 0x53, 0xe7, 0x9b, 0xe7, 0x53, 0xe7, 0x9b, - 0xe7, 0x53, 0xe7, 0x9b, 0xe7, 0x53, 0xe8, 0x9b, 0xe8, 0x53, 0xe8, 0x9b, - 0xe8, 0x53, 0xe8, 0x9b, 0xe8, 0x53, 0xe8, 0x9b, 0xe8, 0x53, 0xe9, 0x9b, - 0xe9, 0x53, 0xe9, 0x9c, 0xe9, 0x54, 0xe9, 0x9c, 0xe9, 0x54, 0xe9, 0x9c, - 0xe9, 0x54, 0xea, 0x9c, 0xea, 0x54, 0xea, 0x9c, 0xea, 0x54, 0xea, 0x9c, - 0xea, 0x54, 0xea, 0x9c, 0xea, 0x54, 0xeb, 0x9c, 0xeb, 0x54, 0xeb, 0x9c, - 0xeb, 0x54, 0xeb, 0x9c, 0xeb, 0x54, 0xeb, 0x9c, 0xeb, 0x54, 0xec, 0x9d, - 0xec, 0x54, 0xec, 0x9d, 0xec, 0x54, 0xec, 0x9d, 0xec, 0x54, 0xec, 0x9d, - 0xec, 0x54, 0xec, 0x9d, 0xec, 0x54, 0xed, 0x9d, 0xed, 0x54, 0xed, 0x9d, - 0xed, 0x54, 0xed, 0x9d, 0xed, 0x54, 0xed, 0x9d, 0xed, 0x54, 0xee, 0x9d, - 0xed, 0x54, 0xee, 0x9d, 0xed, 0x54, 0xee, 0x9d, 0xed, 0x54, 0xee, 0x9e, - 0xee, 0x54, 0xef, 0x9e, 0xef, 0x54, 0xef, 0x9e, 0xef, 0x54, 0xef, 0x9e, - 0xef, 0x54, 0xef, 0x9e, 0xef, 0x54, 0xf0, 0x9e, 0xef, 0x54, 0xf0, 0x9e, - 0xef, 0x54, 0xf0, 0x9e, 0xef, 0x54, 0xf0, 0x9e, 0xef, 0x54, 0xf1, 0x9f, - 0xf1, 0x54, 0xf1, 0x9f, 0xf1, 0x54, 0xf1, 0x9f, 0xf1, 0x54, 0xf1, 0x9f, - 0xf1, 0x54, 0xf2, 0x9f, 0xf2, 0x54, 0xf2, 0x9f, 0xf1, 0x54, 0xf2, 0x9f, - 0xf2, 0x54, 0xf2, 0x9f, 0xf1, 0x54, 0xf2, 0x9f, 0xf2, 0x54, 0xf3, 0x9f, - 0xf3, 0x54, 0xf3, 0x9f, 0xf3, 0x54, 0xf3, 0x9f, 0xf3, 0x54, 0xf3, 0x9f, - 0xf3, 0x54, 0xf4, 0x9f, 0xf4, 0x54, 0xf4, 0x9f, 0xf4, 0x54, 0xf4, 0x9f, - 0xf4, 0x54, 0xf4, 0x9f, 0xf4, 0x54, 0xf5, 0x9f, 0xf4, 0x54, 0xf5, 0x9f, - 0xf4, 0x54, 0xf5, 0x9f, 0xf4, 0x54, 0xf5, 0x9f, 0xf4, 0x54, 0xf5, 0xa0, - 0xf5, 0x54, 0xf6, 0xa0, 0xf6, 0x54, 0xf6, 0xa0, 0xf6, 0x54, 0xf6, 0xa0, - 0xf6, 0x54, 0xf6, 0xa0, 0xf6, 0x54, 0xf7, 0xa0, 0xf6, 0x54, 0xf7, 0xa0, - 0xf6, 0x54, 0xf7, 0xa0, 0xf6, 0x54, 0xf7, 0xa0, 0xf6, 0x54, 0xf8, 0xa1, - 0xf8, 0x54, 0xf8, 0xa1, 0xf8, 0x54, 0xf8, 0xa1, 0xf8, 0x54, 0xf8, 0xa1, - 0xf8, 0x54, 0xf8, 0xa1, 0xf8, 0x54, 0xf9, 0xa1, 0xf8, 0x54, 0xf9, 0xa1, - 0xf8, 0x54, 0xf9, 0xa1, 0xf8, 0x54, 0xf9, 0xa1, 0xf8, 0x54, 0xfa, 0xa2, - 0xfa, 0x54, 0xfa, 0xa2, 0xfa, 0x54, 0xfa, 0xa2, 0xfa, 0x54, 0xfa, 0xa2, - 0xfa, 0x54, 0xfa, 0xa2, 0xfa, 0x54, 0xfb, 0xa2, 0xfa, 0x54, 0xfb, 0xa2, - 0xfa, 0x54, 0xfb, 0xa2, 0xfa, 0x54, 0xfb, 0xa2, 0xfa, 0x54, 0xfc, 0xa2, - 0xfa, 0x54, 0xfc, 0xa2, 0xfa, 0x54, 0xfc, 0xa2, 0xfa, 0x54, 0xfc, 0xa3, - 0xfb, 0x54, 0xfc, 0xa3, 0xfc, 0x54, 0xfd, 0xa3, 0xfb, 0x54, 0xfd, 0xa3, - 0xfc, 0x54, 0xfd, 0xa3, 0xfb, 0x54, 0xfd, 0xa3, 0xfc, 0x54, 0xfe, 0xa3, - 0xfb, 0x54, 0xfe, 0xa3, 0xfc, 0x54, 0xfe, 0xa3, 0xfb, 0x54, 0xfe, 0xa3, - 0xfc, 0x54, 0xfe, 0xa3, 0xfb, 0x54, 0xff, 0xa3, 0xfc, 0x54, 0xff, 0xa3, - 0xfb, 0x54, 0x03, 0xa5, 0x96, 0x54, 0x0a, 0xa5, 0x96, 0x54, 0x0f, 0xa5, - 0x96, 0x54, 0x14, 0xa3, 0x97, 0x54, 0x17, 0xa5, 0x96, 0x54, 0x1b, 0xa3, - 0x97, 0x54, 0x1e, 0xa5, 0x96, 0x54, 0x20, 0xa3, 0x97, 0x54, 0x23, 0xa5, - 0x96, 0x54, 0x25, 0xa3, 0x97, 0x54, 0x27, 0xa5, 0x96, 0x54, 0x29, 0xa3, - 0x97, 0x54, 0x2b, 0xa5, 0x96, 0x54, 0x2d, 0xa3, 0x97, 0x54, 0x2f, 0xa5, - 0x96, 0x54, 0x31, 0xa3, 0x97, 0x54, 0x32, 0xa5, 0x96, 0x54, 0x34, 0xa3, - 0x97, 0x54, 0x35, 0xa5, 0x96, 0x54, 0x37, 0xa3, 0x97, 0x54, 0x38, 0xa5, - 0x96, 0x54, 0x3a, 0xa3, 0x97, 0x54, 0x3b, 0xa5, 0x96, 0x54, 0x3c, 0xa3, - 0x97, 0x54, 0x3e, 0xa5, 0x96, 0x54, 0x3f, 0xa3, 0x97, 0x54, 0x40, 0xa5, - 0x96, 0x54, 0x42, 0xa3, 0x97, 0x54, 0x43, 0xa5, 0x96, 0x54, 0x44, 0xa3, - 0x97, 0x54, 0x45, 0xa5, 0x96, 0x54, 0x46, 0xa3, 0x97, 0x54, 0x47, 0xa5, - 0x96, 0x54, 0x48, 0xa3, 0x97, 0x54, 0x49, 0xa5, 0x96, 0x54, 0x4a, 0xa3, - 0x97, 0x54, 0x4b, 0xa5, 0x96, 0x54, 0x4c, 0xa3, 0x97, 0x54, 0x4d, 0xa5, - 0x96, 0x54, 0x4e, 0xa3, 0x97, 0x54, 0x4f, 0xa5, 0x96, 0x54, 0x50, 0xa3, - 0x97, 0x54, 0x51, 0xa5, 0x96, 0x54, 0x52, 0xa3, 0x97, 0x54, 0x53, 0xa5, - 0x96, 0x54, 0x54, 0xa3, 0x97, 0x54, 0x55, 0xa5, 0x96, 0x54, 0x56, 0xa3, - 0x97, 0x54, 0x57, 0xa5, 0x96, 0x54, 0x58, 0xa3, 0x97, 0x54, 0x58, 0xa1, - 0x97, 0x54, 0x59, 0xa3, 0x97, 0x54, 0x5a, 0xa1, 0x97, 0x54, 0x5b, 0xa3, - 0x97, 0x54, 0x5c, 0xa1, 0x97, 0x54, 0x5d, 0xa3, 0x97, 0x54, 0x5d, 0xa1, - 0x97, 0x54, 0x5e, 0xa3, 0x97, 0x54, 0x5f, 0xa1, 0x97, 0x54, 0x60, 0xa3, - 0x97, 0x54, 0x60, 0xa1, 0x97, 0x54, 0x61, 0xa3, 0x97, 0x54, 0x62, 0xa1, - 0x97, 0x54, 0x63, 0xa3, 0x97, 0x54, 0x63, 0xa1, 0x97, 0x54, 0x64, 0xa3, - 0x97, 0x54, 0x65, 0xa1, 0x97, 0x54, 0x66, 0xa3, 0x97, 0x54, 0x66, 0xa1, - 0x97, 0x54, 0x67, 0xa3, 0x97, 0x54, 0x68, 0xa1, 0x97, 0x54, 0x68, 0xa3, - 0x97, 0x54, 0x69, 0xa1, 0x97, 0x54, 0x6a, 0xa3, 0x97, 0x54, 0x6a, 0xa1, - 0x97, 0x54, 0x6b, 0xa3, 0x97, 0x54, 0x6c, 0xa1, 0x97, 0x54, 0x6c, 0xa3, - 0x97, 0x54, 0x6d, 0xa1, 0x97, 0x54, 0x6e, 0xa3, 0x97, 0x54, 0x6e, 0xa1, - 0x97, 0x54, 0x6f, 0xa3, 0x97, 0x54, 0x70, 0xa1, 0x97, 0x54, 0x70, 0x9d, - 0x98, 0x54, 0x71, 0xa1, 0x97, 0x54, 0x72, 0x9d, 0x98, 0x54, 0x72, 0xa1, - 0x97, 0x54, 0x73, 0x9d, 0x98, 0x54, 0x73, 0xa1, 0x97, 0x54, 0x74, 0x9d, - 0x98, 0x54, 0x75, 0xa1, 0x97, 0x54, 0x75, 0x9d, 0x98, 0x54, 0x76, 0xa1, - 0x97, 0x54, 0x76, 0x9d, 0x98, 0x54, 0x77, 0xa1, 0x97, 0x54, 0x78, 0x9d, - 0x98, 0x54, 0x78, 0xa1, 0x97, 0x54, 0x79, 0x9d, 0x98, 0x54, 0x79, 0xa1, - 0x97, 0x54, 0x7a, 0x9d, 0x98, 0x54, 0x7a, 0xa1, 0x97, 0x54, 0x7b, 0x9d, - 0x98, 0x54, 0x7c, 0xa1, 0x97, 0x54, 0x7c, 0x9d, 0x98, 0x54, 0x7d, 0xa1, - 0x97, 0x54, 0x7d, 0x9d, 0x98, 0x54, 0x7e, 0xa1, 0x97, 0x54, 0x7e, 0x9d, - 0x98, 0x54, 0x7f, 0xa1, 0x97, 0x54, 0x7f, 0x9d, 0x98, 0x54, 0x80, 0xa1, - 0x97, 0x54, 0x81, 0x9d, 0x98, 0x54, 0x81, 0xa1, 0x97, 0x54, 0x82, 0x9d, - 0x98, 0x54, 0x82, 0xa1, 0x97, 0x54, 0x83, 0x9d, 0x98, 0x54, 0x83, 0xa1, - 0x97, 0x54, 0x84, 0x9d, 0x98, 0x54, 0x84, 0xa1, 0x97, 0x54, 0x85, 0x9d, - 0x98, 0x54, 0x85, 0xa1, 0x97, 0x54, 0x86, 0x9d, 0x98, 0x54, 0x86, 0xa1, - 0x97, 0x54, 0x87, 0x9d, 0x98, 0x54, 0x87, 0x9c, 0x98, 0x54, 0x88, 0x9d, - 0x98, 0x54, 0x88, 0x9c, 0x98, 0x54, 0x89, 0x9d, 0x98, 0x54, 0x89, 0x9c, - 0x98, 0x54, 0x8a, 0x9d, 0x98, 0x54, 0x8a, 0x9c, 0x98, 0x54, 0x8b, 0x9d, - 0x98, 0x54, 0x8b, 0x9c, 0x98, 0x54, 0x8c, 0x9d, 0x98, 0x54, 0x8c, 0x9c, - 0x98, 0x54, 0x8d, 0x9d, 0x98, 0x54, 0x8d, 0x9c, 0x98, 0x54, 0x8e, 0x9d, - 0x98, 0x54, 0x8e, 0x9c, 0x98, 0x54, 0x8e, 0x9d, 0x98, 0x54, 0x8f, 0x9c, - 0x98, 0x54, 0x8f, 0x9d, 0x98, 0x54, 0x90, 0x9c, 0x98, 0x54, 0x90, 0x9d, - 0x98, 0x54, 0x91, 0x9c, 0x98, 0x54, 0x91, 0x9d, 0x98, 0x54, 0x92, 0x9c, - 0x98, 0x54, 0x92, 0x9d, 0x98, 0x54, 0x93, 0x9c, 0x98, 0x54, 0x93, 0x9d, - 0x98, 0x54, 0x94, 0x9c, 0x98, 0x54, 0x94, 0x9d, 0x98, 0x54, 0x94, 0x9c, - 0x98, 0x54, 0x95, 0x9d, 0x98, 0x54, 0x95, 0x9c, 0x98, 0x54, 0x96, 0x9d, - 0x98, 0x54, 0x96, 0x9c, 0x98, 0x54, 0x97, 0x9c, 0x98, 0x54, 0x97, 0x9c, - 0x98, 0x54, 0x98, 0x9c, 0x98, 0x54, 0x97, 0x9c, 0x98, 0x54, 0x98, 0x9c, - 0x98, 0x54, 0x97, 0x9c, 0x99, 0x54, 0x98, 0x9c, 0x99, 0x54, 0x98, 0x9c, - 0x9a, 0x52, 0x9c, 0x9c, 0x9a, 0x54, 0x9c, 0x9c, 0x9a, 0x54, 0x9c, 0x9c, - 0x9b, 0x54, 0x9c, 0x9c, 0x9b, 0x54, 0x9c, 0x9c, 0x9b, 0x54, 0x9c, 0x9c, - 0x9b, 0x54, 0x9d, 0x9c, 0x9b, 0x54, 0x9d, 0x9c, 0x9b, 0x54, 0x9d, 0x9a, - 0x9c, 0x54, 0x9e, 0x9c, 0x9b, 0x54, 0x9e, 0x9a, 0x9c, 0x54, 0x9f, 0x9c, - 0x9b, 0x54, 0x9f, 0x9a, 0x9c, 0x54, 0x9f, 0x9c, 0x9b, 0x54, 0xa0, 0x9a, - 0x9c, 0x54, 0xa0, 0x9c, 0x9b, 0x54, 0xa1, 0x9a, 0x9c, 0x54, 0xa1, 0x9c, - 0x9b, 0x54, 0xa1, 0x9a, 0x9c, 0x54, 0xa2, 0x9c, 0x9b, 0x54, 0xa2, 0x9a, - 0x9c, 0x54, 0xa3, 0x98, 0x9c, 0x54, 0xa3, 0x9a, 0x9c, 0x54, 0xa3, 0x98, - 0x9c, 0x54, 0xa4, 0x9a, 0x9c, 0x54, 0xa4, 0x98, 0x9c, 0x54, 0xa5, 0x9a, - 0x9c, 0x54, 0xa5, 0x98, 0x9c, 0x54, 0xa5, 0x9a, 0x9c, 0x54, 0xa6, 0x98, - 0x9c, 0x54, 0xa6, 0x9a, 0x9c, 0x54, 0xa6, 0x98, 0x9c, 0x54, 0xa7, 0x9a, - 0x9c, 0x54, 0xa7, 0x8f, 0xa8, 0x54, 0xa8, 0x8f, 0xa8, 0x54, 0xa8, 0x8f, - 0xa8, 0x54, 0xa8, 0x8f, 0xa8, 0x54, 0xa9, 0x90, 0xac, 0x54, 0xa9, 0x90, - 0xad, 0x54, 0xaa, 0x90, 0xac, 0x54, 0xaa, 0x90, 0xad, 0x54, 0xaa, 0x90, - 0xac, 0x54, 0xab, 0x90, 0xad, 0x54, 0xab, 0x90, 0xac, 0x54, 0xab, 0x90, - 0xad, 0x54, 0xac, 0x90, 0xac, 0x54, 0xac, 0x90, 0xad, 0x54, 0xac, 0x90, - 0xac, 0x54, 0xad, 0x90, 0xad, 0x54, 0xad, 0x90, 0xad, 0x54, 0xae, 0x91, - 0xb0, 0x54, 0xae, 0x91, 0xb1, 0x54, 0xae, 0x91, 0xb0, 0x54, 0xaf, 0x91, - 0xb1, 0x54, 0xaf, 0x91, 0xb0, 0x54, 0xaf, 0x91, 0xb1, 0x54, 0xb0, 0x91, - 0xb0, 0x54, 0xb0, 0x91, 0xb1, 0x54, 0xb0, 0x91, 0xb0, 0x54, 0xb1, 0x91, - 0xb1, 0x54, 0xb1, 0x91, 0xb1, 0x54, 0xb2, 0x92, 0xb4, 0x54, 0xb2, 0x92, - 0xb5, 0x54, 0xb2, 0x92, 0xb4, 0x54, 0xb3, 0x92, 0xb5, 0x54, 0xb3, 0x92, - 0xb4, 0x54, 0xb3, 0x92, 0xb5, 0x54, 0xb4, 0x92, 0xb4, 0x54, 0xb4, 0x92, - 0xb5, 0x54, 0xb4, 0x92, 0xb4, 0x54, 0xb5, 0x92, 0xb5, 0x54, 0xb5, 0x92, - 0xb5, 0x54, 0xb5, 0x93, 0xb8, 0x54, 0xb6, 0x93, 0xb8, 0x54, 0xb6, 0x93, - 0xb8, 0x54, 0xb6, 0x93, 0xb8, 0x54, 0xb7, 0x93, 0xb8, 0x54, 0xb7, 0x93, - 0xb8, 0x54, 0xb7, 0x93, 0xb8, 0x54, 0xb8, 0x93, 0xb8, 0x54, 0xb8, 0x93, - 0xb8, 0x54, 0xb8, 0x93, 0xb8, 0x54, 0xb9, 0x93, 0xb9, 0x54, 0xb9, 0x94, - 0xbc, 0x54, 0xb9, 0x94, 0xbc, 0x54, 0xba, 0x94, 0xbc, 0x54, 0xba, 0x94, - 0xbc, 0x54, 0xba, 0x94, 0xbc, 0x54, 0xbb, 0x94, 0xbc, 0x54, 0xbb, 0x94, - 0xbc, 0x54, 0xbb, 0x94, 0xbc, 0x54, 0xbc, 0x94, 0xbc, 0x54, 0xbc, 0x94, - 0xbc, 0x54, 0xbc, 0x94, 0xbc, 0x54, 0xbd, 0x95, 0xbf, 0x54, 0xbd, 0x95, - 0xc0, 0x54, 0xbd, 0x95, 0xbf, 0x54, 0xbe, 0x95, 0xc0, 0x54, 0xbe, 0x95, - 0xbf, 0x54, 0xbe, 0x95, 0xc0, 0x54, 0xbf, 0x95, 0xbf, 0x54, 0xbf, 0x95, - 0xc0, 0x54, 0xbf, 0x95, 0xbf, 0x54, 0xc0, 0x95, 0xc0, 0x54, 0xc0, 0x95, - 0xc0, 0x54, 0xc0, 0x95, 0xc0, 0x54, 0xc1, 0x95, 0xc1, 0x54, 0xc1, 0x96, - 0xc3, 0x54, 0xc1, 0x96, 0xc3, 0x54, 0xc1, 0x96, 0xc3, 0x54, 0xc2, 0x96, - 0xc3, 0x54, 0xc2, 0x96, 0xc3, 0x54, 0xc2, 0x96, 0xc3, 0x54, 0xc3, 0x96, - 0xc3, 0x54, 0xc3, 0x96, 0xc3, 0x54, 0xc3, 0x96, 0xc3, 0x54, 0xc4, 0x96, - 0xc4, 0x54, 0xc4, 0x96, 0xc4, 0x54, 0xc4, 0x96, 0xc4, 0x54, 0xc5, 0x97, - 0xc6, 0x54, 0xc5, 0x97, 0xc7, 0x54, 0xc5, 0x97, 0xc6, 0x54, 0xc6, 0x97, - 0xc7, 0x54, 0xc6, 0x97, 0xc6, 0x54, 0xc6, 0x97, 0xc7, 0x54, 0xc6, 0x97, - 0xc6, 0x54, 0xc7, 0x97, 0xc7, 0x54, 0xc7, 0x97, 0xc7, 0x54, 0xc7, 0x97, - 0xc7, 0x54, 0xc8, 0x97, 0xc8, 0x54, 0xc8, 0x98, 0xca, 0x54, 0xc8, 0x98, - 0xca, 0x54, 0xc9, 0x98, 0xca, 0x54, 0xc9, 0x98, 0xca, 0x54, 0xc9, 0x98, - 0xca, 0x54, 0xc9, 0x98, 0xca, 0x54, 0xca, 0x98, 0xca, 0x54, 0xca, 0x98, - 0xca, 0x54, 0xca, 0x98, 0xca, 0x54, 0xcb, 0x98, 0xcb, 0x54, 0xcb, 0x98, - 0xcb, 0x54, 0xcb, 0x98, 0xcb, 0x54, 0xcc, 0x98, 0xcc, 0x54, 0xcc, 0x98, - 0xcd, 0x54, 0xcc, 0x98, 0xcd, 0x54, 0xcc, 0x98, 0xcd, 0x54, 0xcd, 0x98, - 0xcd, 0x54, 0xcd, 0x98, 0xcd, 0x54, 0xcd, 0x98, 0xcd, 0x54, 0xce, 0x98, - 0xce, 0x54, 0xce, 0x98, 0xce, 0x54, 0xce, 0x98, 0xce, 0x54, 0xce, 0x98, - 0xce, 0x54, 0xcf, 0x98, 0xcf, 0x54, 0xcf, 0x99, 0xd0, 0x54, 0xcf, 0x99, - 0xd0, 0x54, 0xd0, 0x99, 0xd0, 0x54, 0xd0, 0x99, 0xd0, 0x54, 0xd0, 0x99, - 0xd0, 0x54, 0xd0, 0x99, 0xd0, 0x54, 0xd1, 0x99, 0xd1, 0x54, 0xd1, 0x9c, - 0xd2, 0x54, 0xd1, 0x9c, 0xd2, 0x54, 0xd2, 0x9c, 0xd2, 0x54, 0xd2, 0x9c, - 0xd2, 0x54, 0xd2, 0x9c, 0xd2, 0x53, 0xd2, 0x9c, 0xd2, 0x54, 0xd2, 0x9c, - 0xd3, 0x53, 0xd2, 0x9c, 0xd3, 0x54, 0xd2, 0x9c, 0xd3, 0x53, 0xd2, 0x9c, - 0xd4, 0x54, 0xd2, 0x9c, 0xd4, 0x53, 0xd2, 0x9c, 0xd4, 0x54, 0xd2, 0x9c, - 0xd4, 0x53, 0xd2, 0x9c, 0xd5, 0x54, 0xd2, 0x9c, 0xd5, 0x53, 0xd2, 0x9c, - 0xd5, 0x54, 0xd2, 0x9c, 0xd6, 0x53, 0xd2, 0x9c, 0xd6, 0x54, 0xd2, 0x9c, - 0xd6, 0x53, 0xd2, 0x9c, 0xd6, 0x54, 0xd7, 0x9c, 0xd7, 0x4c, 0xd7, 0x9c, - 0xd7, 0x4c, 0xd7, 0x9c, 0xd7, 0x4c, 0xd9, 0x9c, 0xd7, 0x4d, 0xd9, 0x9c, - 0xd8, 0x4d, 0xd9, 0x9c, 0xd8, 0x4d, 0xd9, 0x9c, 0xd8, 0x4d, 0xd9, 0x9c, - 0xd9, 0x4d, 0xd9, 0x9c, 0xd9, 0x4d, 0xd9, 0x9c, 0xd9, 0x4d, 0xd9, 0x9c, - 0xd9, 0x4d, 0xda, 0x9c, 0xda, 0x4d, 0xdb, 0x9c, 0xda, 0x4e, 0xdc, 0x9c, - 0xda, 0x4e, 0xdb, 0x9c, 0xda, 0x4e, 0xdc, 0x9c, 0xdb, 0x4e, 0xdb, 0x9c, - 0xdb, 0x4e, 0xdc, 0x9c, 0xdb, 0x4e, 0xdb, 0x9c, 0xdb, 0x4e, 0xdc, 0x9c, - 0xdc, 0x4e, 0xdc, 0x9c, 0xdc, 0x4e, 0xdc, 0x9c, 0xdc, 0x4e, 0xde, 0x9c, - 0xdd, 0x4f, 0xde, 0x9c, 0xdd, 0x4f, 0xde, 0x9c, 0xdd, 0x4f, 0xde, 0x9c, - 0xdd, 0x4f, 0xde, 0x9c, 0xde, 0x4f, 0xde, 0x9c, 0xde, 0x4f, 0xde, 0x9c, - 0xde, 0x4f, 0xde, 0x9c, 0xde, 0x4f, 0xdf, 0x9c, 0xdf, 0x4f, 0xdf, 0x9c, - 0xdf, 0x4f, 0xdf, 0x9c, 0xdf, 0x4f, 0xe1, 0x9c, 0xdf, 0x50, 0xe1, 0x9c, - 0xe0, 0x50, 0xe1, 0x9c, 0xe0, 0x50, 0xe1, 0x9c, 0xe0, 0x50, 0xe1, 0x9c, - 0xe1, 0x50, 0xe1, 0x9c, 0xe1, 0x50, 0xe1, 0x9c, 0xe1, 0x50, 0xe1, 0x9c, - 0xe1, 0x50, 0xe2, 0x9c, 0xe2, 0x50, 0xe3, 0x9c, 0xe2, 0x51, 0xe3, 0x9c, - 0xe2, 0x51, 0xe3, 0x9c, 0xe2, 0x51, 0xe3, 0x9c, 0xe3, 0x51, 0xe3, 0x9c, - 0xe3, 0x51, 0xe3, 0x9c, 0xe3, 0x51, 0xe3, 0x9c, 0xe3, 0x51, 0xe4, 0x9c, - 0xe4, 0x51, 0xe4, 0x9c, 0xe4, 0x51, 0xe4, 0x9c, 0xe4, 0x51, 0xe5, 0x9c, - 0xe4, 0x52, 0xe6, 0x9c, 0xe5, 0x52, 0xe5, 0x9c, 0xe5, 0x52, 0xe6, 0x9c, - 0xe5, 0x52, 0xe5, 0x9c, 0xe5, 0x52, 0xe6, 0x9c, 0xe6, 0x52, 0xe6, 0x9c, - 0xe6, 0x52, 0xe6, 0x9c, 0xe6, 0x52, 0xe6, 0x9c, 0xe6, 0x52, 0xe7, 0x9c, - 0xe7, 0x52, 0xe7, 0x9c, 0xe7, 0x52, 0xe8, 0x9c, 0xe7, 0x53, 0xe8, 0x9c, - 0xe7, 0x53, 0xe8, 0x9c, 0xe8, 0x53, 0xe8, 0x9c, 0xe8, 0x53, 0xe8, 0x9c, - 0xe8, 0x53, 0xe8, 0x9c, 0xe8, 0x53, 0xe9, 0x9c, 0xe9, 0x53, 0xe9, 0x9c, - 0xe9, 0x53, 0xe9, 0x9c, 0xe9, 0x53, 0xe9, 0x9c, 0xe9, 0x53, 0xea, 0x9c, - 0xea, 0x53, 0xea, 0x9c, 0xea, 0x53, 0xea, 0x9d, 0xea, 0x54, 0xea, 0x9d, - 0xea, 0x54, 0xeb, 0x9d, 0xeb, 0x54, 0xeb, 0x9d, 0xeb, 0x54, 0xeb, 0x9d, - 0xeb, 0x54, 0xeb, 0x9d, 0xeb, 0x54, 0xec, 0x9d, 0xec, 0x54, 0xec, 0x9d, - 0xec, 0x54, 0xec, 0x9d, 0xec, 0x54, 0xec, 0x9d, 0xec, 0x54, 0xec, 0x9d, - 0xec, 0x54, 0xed, 0x9d, 0xed, 0x54, 0xed, 0x9d, 0xed, 0x54, 0xed, 0x9d, - 0xed, 0x54, 0xed, 0x9d, 0xed, 0x54, 0xee, 0x9d, 0xee, 0x54, 0xee, 0x9d, - 0xee, 0x54, 0xee, 0x9d, 0xee, 0x54, 0xee, 0x9d, 0xee, 0x54, 0xef, 0x9d, - 0xee, 0x54, 0xef, 0x9d, 0xee, 0x54, 0xef, 0x9d, 0xee, 0x54, 0xef, 0x9e, - 0xef, 0x54, 0xf0, 0x9e, 0xf0, 0x54, 0xf0, 0x9e, 0xf0, 0x54, 0xf0, 0x9e, - 0xf0, 0x54, 0xf0, 0x9e, 0xf0, 0x54, 0xf1, 0x9e, 0xf1, 0x54, 0xf1, 0x9e, - 0xf0, 0x54, 0xf1, 0x9e, 0xf1, 0x54, 0xf1, 0x9e, 0xf0, 0x54, 0xf2, 0x9e, - 0xf1, 0x54, 0xf2, 0x9f, 0xf2, 0x54, 0xf2, 0x9f, 0xf2, 0x54, 0xf2, 0x9f, - 0xf2, 0x54, 0xf2, 0x9f, 0xf2, 0x54, 0xf3, 0x9f, 0xf3, 0x54, 0xf3, 0x9f, - 0xf2, 0x54, 0xf3, 0x9f, 0xf3, 0x54, 0xf3, 0x9f, 0xf2, 0x54, 0xf4, 0x9f, - 0xf3, 0x54, 0xf4, 0xa0, 0xf4, 0x54, 0xf4, 0xa0, 0xf4, 0x54, 0xf4, 0xa0, - 0xf4, 0x54, 0xf5, 0xa0, 0xf5, 0x54, 0xf5, 0xa0, 0xf5, 0x54, 0xf5, 0xa0, - 0xf5, 0x54, 0xf5, 0xa0, 0xf5, 0x54, 0xf5, 0xa0, 0xf5, 0x54, 0xf6, 0xa0, - 0xf5, 0x54, 0xf6, 0xa0, 0xf5, 0x54, 0xf6, 0xa0, 0xf5, 0x54, 0xf6, 0xa1, - 0xf6, 0x54, 0xf7, 0xa1, 0xf7, 0x54, 0xf7, 0xa1, 0xf7, 0x54, 0xf7, 0xa1, - 0xf7, 0x54, 0xf7, 0xa1, 0xf7, 0x54, 0xf8, 0xa1, 0xf7, 0x54, 0xf8, 0xa1, - 0xf7, 0x54, 0xf8, 0xa1, 0xf7, 0x54, 0xf8, 0xa1, 0xf7, 0x54, 0xf8, 0xa1, - 0xf7, 0x54, 0xf9, 0xa1, 0xf9, 0x54, 0xf9, 0xa1, 0xf9, 0x54, 0xf9, 0xa1, - 0xf9, 0x54, 0xf9, 0xa1, 0xf9, 0x54, 0xfa, 0xa1, 0xf9, 0x54, 0xfa, 0xa1, - 0xf9, 0x54, 0xfa, 0xa1, 0xf9, 0x54, 0xfa, 0xa1, 0xf9, 0x54, 0xfa, 0xa1, - 0xf9, 0x54, 0xfb, 0xa2, 0xfb, 0x54, 0xfb, 0xa2, 0xfb, 0x54, 0xfb, 0xa2, - 0xfb, 0x54, 0xfb, 0xa2, 0xfb, 0x54, 0xfc, 0xa2, 0xfb, 0x54, 0xfc, 0xa2, - 0xfb, 0x54, 0xfc, 0xa2, 0xfb, 0x54, 0xfc, 0xa2, 0xfb, 0x54, 0xfc, 0xa2, - 0xfb, 0x54, 0xfd, 0xa2, 0xfb, 0x54, 0xfd, 0xa2, 0xfb, 0x54, 0xfd, 0xa2, - 0xfb, 0x54, 0xfd, 0xa2, 0xfb, 0x54, 0xfe, 0xa2, 0xfb, 0x54, 0xfe, 0xa2, - 0xfb, 0x54, 0xfe, 0xa2, 0xfb, 0x54, 0xfe, 0xa2, 0xfb, 0x54, 0xfe, 0xa2, - 0xfb, 0x54, 0xff, 0xa2, 0xfb, 0x54, 0xff, 0xa3, 0xfb, 0x54, 0x03, 0xa6, - 0x96, 0x55, 0x0a, 0xa6, 0x96, 0x55, 0x0f, 0xa6, 0x96, 0x55, 0x14, 0xa8, - 0x96, 0x55, 0x17, 0xa6, 0x96, 0x55, 0x1b, 0xa8, 0x96, 0x55, 0x1e, 0xa6, - 0x96, 0x55, 0x20, 0xa8, 0x96, 0x55, 0x23, 0xa6, 0x96, 0x55, 0x25, 0xa8, - 0x96, 0x55, 0x27, 0xa6, 0x96, 0x55, 0x29, 0xa8, 0x96, 0x55, 0x2b, 0xa6, - 0x96, 0x55, 0x2d, 0xa3, 0x97, 0x55, 0x2f, 0xa6, 0x96, 0x55, 0x31, 0xa3, - 0x97, 0x55, 0x32, 0xa6, 0x96, 0x55, 0x34, 0xa3, 0x97, 0x55, 0x35, 0xa6, - 0x96, 0x55, 0x37, 0xa3, 0x97, 0x55, 0x38, 0xa6, 0x96, 0x55, 0x3a, 0xa3, - 0x97, 0x55, 0x3b, 0xa6, 0x96, 0x55, 0x3c, 0xa3, 0x97, 0x55, 0x3e, 0xa6, - 0x96, 0x55, 0x3f, 0xa3, 0x97, 0x55, 0x40, 0xa6, 0x96, 0x55, 0x42, 0xa3, - 0x97, 0x55, 0x43, 0xa6, 0x96, 0x55, 0x44, 0xa3, 0x97, 0x55, 0x45, 0xa6, - 0x96, 0x55, 0x46, 0xa3, 0x97, 0x55, 0x47, 0xa6, 0x96, 0x55, 0x48, 0xa3, - 0x97, 0x55, 0x49, 0xa6, 0x96, 0x55, 0x4a, 0xa3, 0x97, 0x55, 0x4b, 0xa6, - 0x96, 0x55, 0x4c, 0xa3, 0x97, 0x55, 0x4d, 0xa0, 0x97, 0x55, 0x4e, 0xa3, - 0x97, 0x55, 0x4f, 0xa0, 0x97, 0x55, 0x50, 0xa3, 0x97, 0x55, 0x51, 0xa0, - 0x97, 0x55, 0x52, 0xa3, 0x97, 0x55, 0x53, 0xa0, 0x97, 0x55, 0x54, 0xa3, - 0x97, 0x55, 0x55, 0xa0, 0x97, 0x55, 0x56, 0xa3, 0x97, 0x55, 0x57, 0xa0, - 0x97, 0x55, 0x58, 0xa3, 0x97, 0x55, 0x58, 0xa0, 0x97, 0x55, 0x59, 0xa3, - 0x97, 0x55, 0x5a, 0xa0, 0x97, 0x55, 0x5b, 0xa3, 0x97, 0x55, 0x5c, 0xa0, - 0x97, 0x55, 0x5d, 0xa3, 0x97, 0x55, 0x5d, 0xa0, 0x97, 0x55, 0x5e, 0xa3, - 0x97, 0x55, 0x5f, 0xa0, 0x97, 0x55, 0x60, 0xa3, 0x97, 0x55, 0x60, 0xa0, - 0x97, 0x55, 0x61, 0xa3, 0x97, 0x55, 0x62, 0xa0, 0x97, 0x55, 0x63, 0xa3, - 0x97, 0x55, 0x63, 0xa0, 0x97, 0x55, 0x64, 0xa3, 0x97, 0x55, 0x65, 0xa0, - 0x97, 0x55, 0x66, 0xa3, 0x97, 0x55, 0x66, 0xa0, 0x97, 0x55, 0x67, 0xa3, - 0x97, 0x55, 0x68, 0xa0, 0x97, 0x55, 0x68, 0xa3, 0x97, 0x55, 0x69, 0xa0, - 0x97, 0x55, 0x6a, 0xa3, 0x97, 0x55, 0x6a, 0xa0, 0x97, 0x55, 0x6b, 0xa3, - 0x97, 0x55, 0x6c, 0xa0, 0x97, 0x55, 0x6c, 0xa3, 0x97, 0x55, 0x6d, 0xa0, - 0x97, 0x55, 0x6e, 0xa3, 0x97, 0x55, 0x6e, 0xa0, 0x97, 0x55, 0x6f, 0xa3, - 0x97, 0x55, 0x70, 0xa0, 0x97, 0x55, 0x70, 0x9e, 0x98, 0x55, 0x71, 0xa0, - 0x97, 0x55, 0x72, 0x9e, 0x98, 0x55, 0x72, 0xa0, 0x97, 0x55, 0x73, 0x9e, - 0x98, 0x55, 0x73, 0xa0, 0x97, 0x55, 0x74, 0x9e, 0x98, 0x55, 0x75, 0xa0, - 0x97, 0x55, 0x75, 0x9e, 0x98, 0x55, 0x76, 0xa0, 0x97, 0x55, 0x76, 0x9e, - 0x98, 0x55, 0x77, 0xa0, 0x97, 0x55, 0x78, 0x9e, 0x98, 0x55, 0x78, 0xa0, - 0x97, 0x55, 0x79, 0x9e, 0x98, 0x55, 0x79, 0xa0, 0x97, 0x55, 0x7a, 0x9e, - 0x98, 0x55, 0x7a, 0xa0, 0x97, 0x55, 0x7b, 0x9e, 0x98, 0x55, 0x7c, 0xa0, - 0x97, 0x55, 0x7c, 0x9e, 0x98, 0x55, 0x7d, 0xa0, 0x97, 0x55, 0x7d, 0x9e, - 0x98, 0x55, 0x7e, 0xa0, 0x97, 0x55, 0x7e, 0x9e, 0x98, 0x55, 0x7f, 0xa0, - 0x97, 0x55, 0x7f, 0x9e, 0x98, 0x55, 0x80, 0xa0, 0x97, 0x55, 0x81, 0x9e, - 0x98, 0x55, 0x81, 0xa0, 0x97, 0x55, 0x82, 0x9e, 0x98, 0x55, 0x82, 0xa0, - 0x97, 0x55, 0x83, 0x9e, 0x98, 0x55, 0x83, 0xa0, 0x97, 0x55, 0x84, 0x9e, - 0x98, 0x55, 0x84, 0xa0, 0x97, 0x55, 0x85, 0x9e, 0x98, 0x55, 0x85, 0xa0, - 0x97, 0x55, 0x86, 0x9e, 0x98, 0x55, 0x86, 0xa0, 0x97, 0x55, 0x87, 0x9e, - 0x98, 0x55, 0x87, 0xa0, 0x97, 0x55, 0x88, 0x9e, 0x98, 0x55, 0x88, 0xa0, - 0x97, 0x55, 0x89, 0x9e, 0x98, 0x55, 0x89, 0xa0, 0x97, 0x55, 0x8a, 0x9e, - 0x98, 0x55, 0x8a, 0xa0, 0x97, 0x55, 0x8b, 0x9e, 0x98, 0x55, 0x8b, 0xa0, - 0x97, 0x55, 0x8c, 0x9e, 0x98, 0x55, 0x8c, 0xa0, 0x97, 0x55, 0x8d, 0x9e, - 0x98, 0x55, 0x8d, 0x9c, 0x98, 0x55, 0x8e, 0x9e, 0x98, 0x55, 0x8e, 0x9c, - 0x98, 0x55, 0x8e, 0x9e, 0x98, 0x55, 0x8f, 0x9c, 0x98, 0x55, 0x8f, 0x9e, - 0x98, 0x55, 0x90, 0x9c, 0x98, 0x55, 0x90, 0x9e, 0x98, 0x55, 0x91, 0x9c, - 0x98, 0x55, 0x91, 0x9e, 0x98, 0x55, 0x92, 0x9c, 0x98, 0x55, 0x92, 0x9e, - 0x98, 0x55, 0x93, 0x9c, 0x98, 0x55, 0x93, 0x9e, 0x98, 0x55, 0x94, 0x9c, - 0x98, 0x55, 0x94, 0x9e, 0x98, 0x55, 0x94, 0x9c, 0x98, 0x55, 0x95, 0x9e, - 0x98, 0x55, 0x95, 0x9c, 0x98, 0x55, 0x96, 0x9e, 0x98, 0x55, 0x96, 0x9c, - 0x98, 0x55, 0x97, 0x9c, 0x98, 0x55, 0x97, 0x9c, 0x98, 0x55, 0x98, 0x9c, - 0x98, 0x55, 0x97, 0x9c, 0x98, 0x55, 0x98, 0x9c, 0x98, 0x55, 0x97, 0x9c, - 0x99, 0x55, 0x98, 0x9c, 0x99, 0x55, 0x98, 0x9c, 0x9a, 0x53, 0x9c, 0x9c, - 0x9a, 0x55, 0x9c, 0x9c, 0x9a, 0x55, 0x9c, 0x9c, 0x9b, 0x55, 0x9c, 0x9c, - 0x9b, 0x55, 0x9c, 0x9c, 0x9b, 0x55, 0x9c, 0x9c, 0x9b, 0x55, 0x9d, 0x9c, - 0x9b, 0x55, 0x9d, 0x9c, 0x9b, 0x55, 0x9d, 0x9a, 0x9c, 0x55, 0x9e, 0x9c, - 0x9b, 0x55, 0x9e, 0x9a, 0x9c, 0x55, 0x9f, 0x9c, 0x9b, 0x55, 0x9f, 0x9a, - 0x9c, 0x55, 0x9f, 0x9c, 0x9b, 0x55, 0xa0, 0x9a, 0x9c, 0x55, 0xa0, 0x9c, - 0x9b, 0x55, 0xa1, 0x9a, 0x9c, 0x55, 0xa1, 0x9c, 0x9b, 0x55, 0xa1, 0x9a, - 0x9c, 0x55, 0xa2, 0x9c, 0x9b, 0x55, 0xa2, 0x9a, 0x9c, 0x55, 0xa3, 0x9c, - 0x9b, 0x55, 0xa3, 0x9a, 0x9c, 0x55, 0xa3, 0x9c, 0x9b, 0x55, 0xa4, 0x9a, - 0x9c, 0x55, 0xa4, 0x9c, 0x9b, 0x55, 0xa5, 0x9a, 0x9c, 0x55, 0xa5, 0x9c, - 0x9b, 0x55, 0xa5, 0x9a, 0x9c, 0x55, 0xa6, 0x98, 0x9c, 0x55, 0xa6, 0x9a, - 0x9c, 0x55, 0xa6, 0x98, 0x9c, 0x55, 0xa7, 0x9a, 0x9c, 0x55, 0xa7, 0x90, - 0xaa, 0x55, 0xa8, 0x90, 0xab, 0x55, 0xa8, 0x90, 0xaa, 0x55, 0xa8, 0x90, - 0xab, 0x55, 0xa9, 0x90, 0xaa, 0x55, 0xa9, 0x90, 0xab, 0x55, 0xaa, 0x90, - 0xaa, 0x55, 0xaa, 0x90, 0xab, 0x55, 0xaa, 0x90, 0xaa, 0x55, 0xab, 0x91, - 0xae, 0x55, 0xab, 0x91, 0xaf, 0x55, 0xab, 0x91, 0xae, 0x55, 0xac, 0x91, - 0xaf, 0x55, 0xac, 0x91, 0xae, 0x55, 0xac, 0x91, 0xaf, 0x55, 0xad, 0x91, - 0xae, 0x55, 0xad, 0x91, 0xaf, 0x55, 0xae, 0x91, 0xae, 0x55, 0xae, 0x91, - 0xaf, 0x55, 0xae, 0x91, 0xae, 0x55, 0xaf, 0x91, 0xaf, 0x55, 0xaf, 0x91, - 0xaf, 0x55, 0xaf, 0x92, 0xb2, 0x55, 0xb0, 0x92, 0xb3, 0x55, 0xb0, 0x92, - 0xb2, 0x55, 0xb0, 0x92, 0xb3, 0x55, 0xb1, 0x92, 0xb2, 0x55, 0xb1, 0x92, - 0xb3, 0x55, 0xb2, 0x92, 0xb2, 0x55, 0xb2, 0x92, 0xb3, 0x55, 0xb2, 0x92, - 0xb2, 0x55, 0xb3, 0x92, 0xb3, 0x55, 0xb3, 0x92, 0xb3, 0x55, 0xb3, 0x93, - 0xb6, 0x55, 0xb4, 0x93, 0xb6, 0x55, 0xb4, 0x93, 0xb6, 0x55, 0xb4, 0x93, - 0xb6, 0x55, 0xb5, 0x93, 0xb6, 0x55, 0xb5, 0x93, 0xb6, 0x55, 0xb5, 0x93, - 0xb6, 0x55, 0xb6, 0x93, 0xb6, 0x55, 0xb6, 0x93, 0xb6, 0x55, 0xb6, 0x93, - 0xb6, 0x55, 0xb7, 0x93, 0xb7, 0x55, 0xb7, 0x93, 0xb7, 0x55, 0xb7, 0x94, - 0xba, 0x55, 0xb8, 0x94, 0xba, 0x55, 0xb8, 0x94, 0xba, 0x55, 0xb8, 0x94, - 0xba, 0x55, 0xb9, 0x94, 0xba, 0x55, 0xb9, 0x94, 0xba, 0x55, 0xb9, 0x94, - 0xba, 0x55, 0xba, 0x94, 0xba, 0x55, 0xba, 0x94, 0xba, 0x55, 0xba, 0x94, - 0xba, 0x55, 0xbb, 0x94, 0xbb, 0x55, 0xbb, 0x94, 0xbe, 0x55, 0xbb, 0x94, - 0xbe, 0x55, 0xbc, 0x94, 0xbe, 0x55, 0xbc, 0x94, 0xbe, 0x55, 0xbc, 0x94, - 0xbe, 0x55, 0xbd, 0x94, 0xbe, 0x55, 0xbd, 0x94, 0xbe, 0x55, 0xbd, 0x94, - 0xbe, 0x55, 0xbe, 0x94, 0xbe, 0x55, 0xbe, 0x94, 0xbe, 0x55, 0xbe, 0x94, - 0xbe, 0x55, 0xbf, 0x95, 0xc1, 0x55, 0xbf, 0x95, 0xc1, 0x55, 0xbf, 0x95, - 0xc1, 0x55, 0xc0, 0x95, 0xc1, 0x55, 0xc0, 0x95, 0xc1, 0x55, 0xc0, 0x95, - 0xc1, 0x55, 0xc1, 0x95, 0xc1, 0x55, 0xc1, 0x95, 0xc1, 0x55, 0xc1, 0x95, - 0xc1, 0x55, 0xc1, 0x95, 0xc1, 0x55, 0xc2, 0x95, 0xc2, 0x55, 0xc2, 0x95, - 0xc2, 0x55, 0xc2, 0x95, 0xc2, 0x55, 0xc3, 0x96, 0xc5, 0x55, 0xc3, 0x96, - 0xc5, 0x55, 0xc3, 0x96, 0xc5, 0x55, 0xc4, 0x96, 0xc5, 0x55, 0xc4, 0x96, - 0xc5, 0x55, 0xc4, 0x96, 0xc5, 0x55, 0xc5, 0x96, 0xc5, 0x55, 0xc5, 0x96, - 0xc5, 0x55, 0xc5, 0x96, 0xc5, 0x55, 0xc6, 0x96, 0xc6, 0x55, 0xc6, 0x96, - 0xc6, 0x55, 0xc6, 0x97, 0xc8, 0x55, 0xc6, 0x97, 0xc8, 0x55, 0xc7, 0x97, - 0xc8, 0x55, 0xc7, 0x97, 0xc8, 0x55, 0xc7, 0x97, 0xc8, 0x55, 0xc8, 0x97, - 0xc8, 0x55, 0xc8, 0x97, 0xc8, 0x55, 0xc8, 0x97, 0xc8, 0x55, 0xc9, 0x97, - 0xc9, 0x55, 0xc9, 0x97, 0xc9, 0x55, 0xc9, 0x97, 0xc9, 0x55, 0xc9, 0x98, - 0xcb, 0x55, 0xca, 0x98, 0xcc, 0x55, 0xca, 0x98, 0xcb, 0x55, 0xca, 0x98, - 0xcc, 0x55, 0xcb, 0x98, 0xcb, 0x55, 0xcb, 0x98, 0xcc, 0x55, 0xcb, 0x98, - 0xcb, 0x55, 0xcc, 0x98, 0xcc, 0x55, 0xcc, 0x98, 0xcc, 0x55, 0xcc, 0x98, - 0xcc, 0x55, 0xcc, 0x98, 0xcc, 0x55, 0xcd, 0x98, 0xcd, 0x55, 0xcd, 0x98, - 0xcd, 0x55, 0xcd, 0x99, 0xce, 0x55, 0xce, 0x99, 0xcf, 0x55, 0xce, 0x99, - 0xce, 0x55, 0xce, 0x99, 0xcf, 0x55, 0xce, 0x99, 0xce, 0x55, 0xcf, 0x99, - 0xcf, 0x55, 0xcf, 0x99, 0xcf, 0x55, 0xcf, 0x99, 0xcf, 0x55, 0xd0, 0x99, - 0xd0, 0x55, 0xd0, 0x99, 0xd0, 0x55, 0xd0, 0x99, 0xd0, 0x55, 0xd0, 0x9c, - 0xd2, 0x55, 0xd1, 0x9c, 0xd2, 0x55, 0xd1, 0x9c, 0xd2, 0x55, 0xd1, 0x9c, - 0xd2, 0x55, 0xd2, 0x9c, 0xd2, 0x55, 0xd2, 0x9c, 0xd2, 0x55, 0xd2, 0x9c, - 0xd2, 0x54, 0xd2, 0x9c, 0xd2, 0x55, 0xd2, 0x9c, 0xd3, 0x54, 0xd2, 0x9c, - 0xd3, 0x55, 0xd2, 0x9c, 0xd3, 0x54, 0xd2, 0x9c, 0xd4, 0x55, 0xd2, 0x9c, - 0xd4, 0x54, 0xd2, 0x9c, 0xd4, 0x55, 0xd2, 0x9c, 0xd4, 0x54, 0xd2, 0x9c, - 0xd5, 0x55, 0xd2, 0x9c, 0xd5, 0x54, 0xd2, 0x9c, 0xd5, 0x55, 0xd2, 0x9c, - 0xd6, 0x54, 0xd2, 0x9c, 0xd6, 0x55, 0xd2, 0x9c, 0xd6, 0x54, 0xd2, 0x9c, - 0xd6, 0x55, 0xd2, 0x9c, 0xd7, 0x54, 0xd8, 0x9c, 0xd7, 0x4d, 0xd8, 0x9c, - 0xd7, 0x4d, 0xd8, 0x9c, 0xd7, 0x4d, 0xd8, 0x9c, 0xd8, 0x4d, 0xd8, 0x9c, - 0xd8, 0x4d, 0xd8, 0x9c, 0xd8, 0x4d, 0xd9, 0x9c, 0xd9, 0x4d, 0xda, 0x9c, - 0xd9, 0x4e, 0xdb, 0x9c, 0xd9, 0x4e, 0xda, 0x9c, 0xd9, 0x4e, 0xdb, 0x9c, - 0xda, 0x4e, 0xda, 0x9c, 0xda, 0x4e, 0xdb, 0x9c, 0xda, 0x4e, 0xda, 0x9c, - 0xda, 0x4e, 0xdb, 0x9c, 0xdb, 0x4e, 0xdb, 0x9c, 0xdb, 0x4e, 0xdd, 0x9c, - 0xdb, 0x4f, 0xdd, 0x9c, 0xdb, 0x4f, 0xdd, 0x9c, 0xdc, 0x4f, 0xdd, 0x9c, - 0xdc, 0x4f, 0xdd, 0x9c, 0xdc, 0x4f, 0xdd, 0x9c, 0xdd, 0x4f, 0xdd, 0x9c, - 0xdd, 0x4f, 0xdd, 0x9c, 0xdd, 0x4f, 0xdd, 0x9c, 0xdd, 0x4f, 0xdf, 0x9c, - 0xde, 0x50, 0xdf, 0x9c, 0xde, 0x50, 0xdf, 0x9c, 0xde, 0x50, 0xdf, 0x9c, - 0xde, 0x50, 0xdf, 0x9c, 0xdf, 0x50, 0xdf, 0x9c, 0xdf, 0x50, 0xdf, 0x9c, - 0xdf, 0x50, 0xdf, 0x9c, 0xdf, 0x50, 0xe0, 0x9c, 0xe0, 0x50, 0xe0, 0x9c, - 0xe0, 0x50, 0xe0, 0x9c, 0xe0, 0x50, 0xe1, 0x9c, 0xe1, 0x50, 0xe2, 0x9c, - 0xe1, 0x51, 0xe2, 0x9c, 0xe1, 0x51, 0xe2, 0x9c, 0xe1, 0x51, 0xe2, 0x9c, - 0xe2, 0x51, 0xe2, 0x9c, 0xe2, 0x51, 0xe2, 0x9c, 0xe2, 0x51, 0xe2, 0x9c, - 0xe2, 0x51, 0xe3, 0x9c, 0xe3, 0x51, 0xe3, 0x9c, 0xe3, 0x51, 0xe4, 0x9c, - 0xe3, 0x52, 0xe4, 0x9c, 0xe3, 0x52, 0xe4, 0x9c, 0xe4, 0x52, 0xe4, 0x9c, - 0xe4, 0x52, 0xe4, 0x9c, 0xe4, 0x52, 0xe4, 0x9c, 0xe4, 0x52, 0xe5, 0x9c, - 0xe5, 0x52, 0xe5, 0x9c, 0xe5, 0x52, 0xe5, 0x9c, 0xe5, 0x52, 0xe6, 0x9c, - 0xe5, 0x53, 0xe7, 0x9c, 0xe6, 0x53, 0xe6, 0x9c, 0xe6, 0x53, 0xe7, 0x9c, - 0xe6, 0x53, 0xe6, 0x9c, 0xe6, 0x53, 0xe7, 0x9c, 0xe7, 0x53, 0xe7, 0x9c, - 0xe7, 0x53, 0xe7, 0x9c, 0xe7, 0x53, 0xe7, 0x9c, 0xe7, 0x53, 0xe8, 0x9c, - 0xe8, 0x53, 0xe8, 0x9c, 0xe8, 0x53, 0xe8, 0x9c, 0xe8, 0x53, 0xe9, 0x9c, - 0xe8, 0x54, 0xe9, 0x9c, 0xe9, 0x54, 0xe9, 0x9c, 0xe9, 0x54, 0xe9, 0x9c, - 0xe9, 0x54, 0xe9, 0x9c, 0xe9, 0x54, 0xea, 0x9c, 0xea, 0x54, 0xea, 0x9c, - 0xea, 0x54, 0xea, 0x9c, 0xea, 0x54, 0xea, 0x9c, 0xea, 0x54, 0xeb, 0x9c, - 0xeb, 0x54, 0xeb, 0x9c, 0xeb, 0x54, 0xeb, 0x9d, 0xeb, 0x55, 0xeb, 0x9d, - 0xeb, 0x55, 0xec, 0x9d, 0xec, 0x55, 0xec, 0x9d, 0xec, 0x55, 0xec, 0x9d, - 0xec, 0x55, 0xec, 0x9d, 0xec, 0x55, 0xec, 0x9d, 0xec, 0x55, 0xed, 0x9d, - 0xed, 0x55, 0xed, 0x9d, 0xed, 0x55, 0xed, 0x9d, 0xed, 0x55, 0xed, 0x9d, - 0xed, 0x55, 0xee, 0x9d, 0xed, 0x55, 0xee, 0x9e, 0xee, 0x55, 0xee, 0x9e, - 0xee, 0x55, 0xee, 0x9e, 0xee, 0x55, 0xef, 0x9e, 0xef, 0x55, 0xef, 0x9e, - 0xef, 0x55, 0xef, 0x9e, 0xef, 0x55, 0xef, 0x9e, 0xef, 0x55, 0xf0, 0x9e, - 0xef, 0x55, 0xf0, 0x9e, 0xef, 0x55, 0xf0, 0x9e, 0xef, 0x55, 0xf0, 0x9e, - 0xef, 0x55, 0xf1, 0x9f, 0xf1, 0x55, 0xf1, 0x9f, 0xf1, 0x55, 0xf1, 0x9f, - 0xf1, 0x55, 0xf1, 0x9f, 0xf1, 0x55, 0xf2, 0x9f, 0xf2, 0x55, 0xf2, 0x9f, - 0xf1, 0x55, 0xf2, 0x9f, 0xf2, 0x55, 0xf2, 0x9f, 0xf1, 0x55, 0xf2, 0x9f, - 0xf2, 0x55, 0xf3, 0x9f, 0xf3, 0x55, 0xf3, 0x9f, 0xf3, 0x55, 0xf3, 0x9f, - 0xf3, 0x55, 0xf3, 0x9f, 0xf3, 0x55, 0xf4, 0x9f, 0xf4, 0x55, 0xf4, 0x9f, - 0xf4, 0x55, 0xf4, 0x9f, 0xf4, 0x55, 0xf4, 0x9f, 0xf4, 0x55, 0xf5, 0x9f, - 0xf4, 0x55, 0xf5, 0x9f, 0xf4, 0x55, 0xf5, 0xa0, 0xf5, 0x55, 0xf5, 0xa0, - 0xf5, 0x55, 0xf5, 0xa0, 0xf5, 0x55, 0xf6, 0xa0, 0xf6, 0x55, 0xf6, 0xa0, - 0xf6, 0x55, 0xf6, 0xa0, 0xf6, 0x55, 0xf6, 0xa0, 0xf6, 0x55, 0xf7, 0xa0, - 0xf6, 0x55, 0xf7, 0xa0, 0xf6, 0x55, 0xf7, 0xa0, 0xf6, 0x55, 0xf7, 0xa0, - 0xf6, 0x55, 0xf8, 0xa1, 0xf8, 0x55, 0xf8, 0xa1, 0xf8, 0x55, 0xf8, 0xa1, - 0xf8, 0x55, 0xf8, 0xa1, 0xf8, 0x55, 0xf8, 0xa1, 0xf8, 0x55, 0xf9, 0xa1, - 0xf8, 0x55, 0xf9, 0xa1, 0xf8, 0x55, 0xf9, 0xa1, 0xf8, 0x55, 0xf9, 0xa1, - 0xf8, 0x55, 0xfa, 0xa2, 0xfa, 0x55, 0xfa, 0xa2, 0xfa, 0x55, 0xfa, 0xa2, - 0xfa, 0x55, 0xfa, 0xa2, 0xfa, 0x55, 0xfa, 0xa2, 0xfa, 0x55, 0xfb, 0xa2, - 0xfa, 0x55, 0xfb, 0xa2, 0xfa, 0x55, 0xfb, 0xa2, 0xfa, 0x55, 0xfb, 0xa2, - 0xfa, 0x55, 0xfc, 0xa2, 0xfa, 0x55, 0xfc, 0xa2, 0xfa, 0x55, 0xfc, 0xa2, - 0xfa, 0x55, 0xfc, 0xa3, 0xfb, 0x55, 0xfc, 0xa3, 0xfc, 0x55, 0xfd, 0xa3, - 0xfb, 0x55, 0xfd, 0xa3, 0xfc, 0x55, 0xfd, 0xa3, 0xfb, 0x55, 0xfd, 0xa3, - 0xfc, 0x55, 0xfe, 0xa3, 0xfb, 0x55, 0xfe, 0xa3, 0xfc, 0x55, 0xfe, 0xa3, - 0xfb, 0x55, 0xfe, 0xa3, 0xfc, 0x55, 0xfe, 0xa3, 0xfb, 0x55, 0xff, 0xa3, - 0xfc, 0x55, 0xff, 0xa3, 0xfb, 0x55, 0x03, 0xa5, 0x96, 0x55, 0x0a, 0xa5, - 0x96, 0x55, 0x0f, 0xa5, 0x96, 0x55, 0x14, 0xa3, 0x97, 0x55, 0x17, 0xa5, - 0x96, 0x55, 0x1b, 0xa3, 0x97, 0x55, 0x1e, 0xa5, 0x96, 0x55, 0x20, 0xa3, - 0x97, 0x55, 0x23, 0xa5, 0x96, 0x55, 0x25, 0xa3, 0x97, 0x55, 0x27, 0xa5, - 0x96, 0x55, 0x29, 0xa3, 0x97, 0x55, 0x2b, 0xa5, 0x96, 0x55, 0x2d, 0xa3, - 0x97, 0x55, 0x2f, 0xa5, 0x96, 0x55, 0x31, 0xa3, 0x97, 0x55, 0x32, 0xa5, - 0x96, 0x55, 0x34, 0xa3, 0x97, 0x55, 0x35, 0xa5, 0x96, 0x55, 0x37, 0xa3, - 0x97, 0x55, 0x38, 0xa5, 0x96, 0x55, 0x3a, 0xa3, 0x97, 0x55, 0x3b, 0xa5, - 0x96, 0x55, 0x3c, 0xa3, 0x97, 0x55, 0x3e, 0xa5, 0x96, 0x55, 0x3f, 0xa3, - 0x97, 0x55, 0x40, 0xa5, 0x96, 0x55, 0x42, 0xa3, 0x97, 0x55, 0x43, 0xa5, - 0x96, 0x55, 0x44, 0xa3, 0x97, 0x55, 0x45, 0xa5, 0x96, 0x55, 0x46, 0xa3, - 0x97, 0x55, 0x47, 0xa5, 0x96, 0x55, 0x48, 0xa3, 0x97, 0x55, 0x49, 0xa5, - 0x96, 0x55, 0x4a, 0xa3, 0x97, 0x55, 0x4b, 0xa5, 0x96, 0x55, 0x4c, 0xa3, - 0x97, 0x55, 0x4d, 0xa5, 0x96, 0x55, 0x4e, 0xa3, 0x97, 0x55, 0x4f, 0xa5, - 0x96, 0x55, 0x50, 0xa3, 0x97, 0x55, 0x51, 0xa5, 0x96, 0x55, 0x52, 0xa3, - 0x97, 0x55, 0x53, 0xa5, 0x96, 0x55, 0x54, 0xa3, 0x97, 0x55, 0x55, 0xa5, - 0x96, 0x55, 0x56, 0xa3, 0x97, 0x55, 0x57, 0xa5, 0x96, 0x55, 0x58, 0xa3, - 0x97, 0x55, 0x58, 0xa5, 0x96, 0x55, 0x59, 0xa3, 0x97, 0x55, 0x5a, 0xa5, - 0x96, 0x55, 0x5b, 0xa3, 0x97, 0x55, 0x5c, 0xa5, 0x96, 0x55, 0x5d, 0xa3, - 0x97, 0x55, 0x5d, 0xa5, 0x96, 0x55, 0x5e, 0xa3, 0x97, 0x55, 0x5f, 0xa5, - 0x96, 0x55, 0x60, 0xa3, 0x97, 0x55, 0x60, 0xa5, 0x96, 0x55, 0x61, 0xa3, - 0x97, 0x55, 0x62, 0xa1, 0x97, 0x55, 0x63, 0xa3, 0x97, 0x55, 0x63, 0xa1, - 0x97, 0x55, 0x64, 0xa3, 0x97, 0x55, 0x65, 0xa1, 0x97, 0x55, 0x66, 0xa3, - 0x97, 0x55, 0x66, 0xa1, 0x97, 0x55, 0x67, 0xa3, 0x97, 0x55, 0x68, 0xa1, - 0x97, 0x55, 0x68, 0xa3, 0x97, 0x55, 0x69, 0xa1, 0x97, 0x55, 0x6a, 0xa3, - 0x97, 0x55, 0x6a, 0xa1, 0x97, 0x55, 0x6b, 0xa3, 0x97, 0x55, 0x6c, 0xa1, - 0x97, 0x55, 0x6c, 0xa3, 0x97, 0x55, 0x6d, 0xa1, 0x97, 0x55, 0x6e, 0xa3, - 0x97, 0x55, 0x6e, 0xa1, 0x97, 0x55, 0x6f, 0xa3, 0x97, 0x55, 0x70, 0xa1, - 0x97, 0x55, 0x70, 0xa3, 0x97, 0x55, 0x71, 0xa1, 0x97, 0x55, 0x72, 0xa3, - 0x97, 0x55, 0x72, 0xa1, 0x97, 0x55, 0x73, 0xa3, 0x97, 0x55, 0x73, 0xa1, - 0x97, 0x55, 0x74, 0xa3, 0x97, 0x55, 0x75, 0xa1, 0x97, 0x55, 0x75, 0xa3, - 0x97, 0x55, 0x76, 0xa1, 0x97, 0x55, 0x76, 0xa3, 0x97, 0x55, 0x77, 0xa1, - 0x97, 0x55, 0x78, 0x9d, 0x98, 0x55, 0x78, 0xa1, 0x97, 0x55, 0x79, 0x9d, - 0x98, 0x55, 0x79, 0xa1, 0x97, 0x55, 0x7a, 0x9d, 0x98, 0x55, 0x7a, 0xa1, - 0x97, 0x55, 0x7b, 0x9d, 0x98, 0x55, 0x7c, 0xa1, 0x97, 0x55, 0x7c, 0x9d, - 0x98, 0x55, 0x7d, 0xa1, 0x97, 0x55, 0x7d, 0x9d, 0x98, 0x55, 0x7e, 0xa1, - 0x97, 0x55, 0x7e, 0x9d, 0x98, 0x55, 0x7f, 0xa1, 0x97, 0x55, 0x7f, 0x9d, - 0x98, 0x55, 0x80, 0xa1, 0x97, 0x55, 0x81, 0x9d, 0x98, 0x55, 0x81, 0xa1, - 0x97, 0x55, 0x82, 0x9d, 0x98, 0x55, 0x82, 0xa1, 0x97, 0x55, 0x83, 0x9d, - 0x98, 0x55, 0x83, 0xa1, 0x97, 0x55, 0x84, 0x9d, 0x98, 0x55, 0x84, 0xa1, - 0x97, 0x55, 0x85, 0x9d, 0x98, 0x55, 0x85, 0xa1, 0x97, 0x55, 0x86, 0x9d, - 0x98, 0x55, 0x86, 0xa1, 0x97, 0x55, 0x87, 0x9d, 0x98, 0x55, 0x87, 0xa1, - 0x97, 0x55, 0x88, 0x9d, 0x98, 0x55, 0x88, 0xa1, 0x97, 0x55, 0x89, 0x9d, - 0x98, 0x55, 0x89, 0xa1, 0x97, 0x55, 0x8a, 0x9d, 0x98, 0x55, 0x8a, 0xa1, - 0x97, 0x55, 0x8b, 0x9d, 0x98, 0x55, 0x8b, 0xa1, 0x97, 0x55, 0x8c, 0x9d, - 0x98, 0x55, 0x8c, 0xa1, 0x97, 0x55, 0x8d, 0x9d, 0x98, 0x55, 0x8d, 0x9d, - 0x98, 0x55, 0x8e, 0x9d, 0x98, 0x55, 0x8e, 0x9d, 0x98, 0x55, 0x8e, 0x9d, - 0x98, 0x55, 0x8f, 0x9d, 0x98, 0x55, 0x8f, 0x9d, 0x98, 0x55, 0x90, 0x9d, - 0x98, 0x55, 0x90, 0x9d, 0x98, 0x55, 0x91, 0x9d, 0x98, 0x55, 0x91, 0x9d, - 0x98, 0x55, 0x92, 0x9d, 0x98, 0x55, 0x92, 0x9d, 0x98, 0x55, 0x93, 0x9d, - 0x98, 0x55, 0x93, 0x9d, 0x98, 0x55, 0x94, 0x9d, 0x98, 0x55, 0x94, 0x9d, - 0x98, 0x55, 0x94, 0x9d, 0x98, 0x55, 0x95, 0x9d, 0x98, 0x55, 0x95, 0x9d, - 0x98, 0x55, 0x96, 0x9d, 0x98, 0x55, 0x96, 0x9d, 0x98, 0x55, 0x97, 0x9d, - 0x98, 0x55, 0x97, 0x9d, 0x98, 0x55, 0x98, 0x9d, 0x98, 0x55, 0x97, 0x9d, - 0x98, 0x55, 0x98, 0x9d, 0x98, 0x55, 0x97, 0x9d, 0x99, 0x55, 0x98, 0x9d, - 0x99, 0x55, 0x9b, 0x9d, 0x9a, 0x56, 0x9c, 0x9d, 0x9a, 0x55, 0x9b, 0x9d, - 0x9a, 0x56, 0x9c, 0x9d, 0x9b, 0x55, 0x9c, 0x9d, 0x9b, 0x55, 0x9c, 0x9d, - 0x9b, 0x55, 0x9c, 0x9d, 0x9b, 0x55, 0x9d, 0x9d, 0x9b, 0x55, 0x9d, 0x9d, - 0x9b, 0x55, 0x9d, 0x9d, 0x9b, 0x55, 0x9e, 0x9d, 0x9b, 0x55, 0x9e, 0x9d, - 0x9b, 0x55, 0x9f, 0x9d, 0x9b, 0x55, 0x9f, 0x9a, 0x9c, 0x55, 0x9f, 0x9d, - 0x9b, 0x55, 0xa0, 0x9a, 0x9c, 0x55, 0xa0, 0x9d, 0x9b, 0x55, 0xa1, 0x9a, - 0x9c, 0x55, 0xa1, 0x9d, 0x9b, 0x55, 0xa1, 0x9a, 0x9c, 0x55, 0xa2, 0x9d, - 0x9b, 0x55, 0xa2, 0x9a, 0x9c, 0x55, 0xa3, 0x9d, 0x9b, 0x55, 0xa3, 0x9a, - 0x9c, 0x55, 0xa3, 0x9d, 0x9b, 0x55, 0xa4, 0x9a, 0x9c, 0x55, 0xa4, 0x9d, - 0x9b, 0x55, 0xa5, 0x9a, 0x9c, 0x55, 0xa5, 0x9d, 0x9b, 0x55, 0xa5, 0x9a, - 0x9c, 0x55, 0xa6, 0x98, 0x9c, 0x55, 0xa6, 0x9a, 0x9c, 0x55, 0xa6, 0x98, - 0x9c, 0x55, 0xa7, 0x9a, 0x9c, 0x55, 0xa7, 0x98, 0x9c, 0x55, 0xa8, 0x8f, - 0xa8, 0x55, 0xa8, 0x8f, 0xa8, 0x55, 0xa8, 0x8f, 0xa8, 0x55, 0xa9, 0x90, - 0xac, 0x55, 0xa9, 0x90, 0xad, 0x55, 0xaa, 0x90, 0xac, 0x55, 0xaa, 0x90, - 0xad, 0x55, 0xaa, 0x90, 0xac, 0x55, 0xab, 0x90, 0xad, 0x55, 0xab, 0x90, - 0xac, 0x55, 0xab, 0x90, 0xad, 0x55, 0xac, 0x90, 0xac, 0x55, 0xac, 0x90, - 0xad, 0x55, 0xac, 0x90, 0xac, 0x55, 0xad, 0x91, 0xb0, 0x55, 0xad, 0x91, - 0xb1, 0x55, 0xae, 0x91, 0xb0, 0x55, 0xae, 0x91, 0xb1, 0x55, 0xae, 0x91, - 0xb0, 0x55, 0xaf, 0x91, 0xb1, 0x55, 0xaf, 0x91, 0xb0, 0x55, 0xaf, 0x91, - 0xb1, 0x55, 0xb0, 0x91, 0xb0, 0x55, 0xb0, 0x91, 0xb1, 0x55, 0xb0, 0x91, - 0xb0, 0x55, 0xb1, 0x91, 0xb1, 0x55, 0xb1, 0x91, 0xb1, 0x55, 0xb2, 0x92, - 0xb4, 0x55, 0xb2, 0x92, 0xb5, 0x55, 0xb2, 0x92, 0xb4, 0x55, 0xb3, 0x92, - 0xb5, 0x55, 0xb3, 0x92, 0xb4, 0x55, 0xb3, 0x92, 0xb5, 0x55, 0xb4, 0x92, - 0xb4, 0x55, 0xb4, 0x92, 0xb5, 0x55, 0xb4, 0x92, 0xb4, 0x55, 0xb5, 0x92, - 0xb5, 0x55, 0xb5, 0x92, 0xb5, 0x55, 0xb5, 0x93, 0xb8, 0x55, 0xb6, 0x93, - 0xb8, 0x55, 0xb6, 0x93, 0xb8, 0x55, 0xb6, 0x93, 0xb8, 0x55, 0xb7, 0x93, - 0xb8, 0x55, 0xb7, 0x93, 0xb8, 0x55, 0xb7, 0x93, 0xb8, 0x55, 0xb8, 0x93, - 0xb8, 0x55, 0xb8, 0x93, 0xb8, 0x55, 0xb8, 0x93, 0xb8, 0x55, 0xb9, 0x94, - 0xbc, 0x55, 0xb9, 0x94, 0xbc, 0x55, 0xb9, 0x94, 0xbc, 0x55, 0xba, 0x94, - 0xbc, 0x55, 0xba, 0x94, 0xbc, 0x55, 0xba, 0x94, 0xbc, 0x55, 0xbb, 0x94, - 0xbc, 0x55, 0xbb, 0x94, 0xbc, 0x55, 0xbb, 0x94, 0xbc, 0x55, 0xbc, 0x94, - 0xbc, 0x55, 0xbc, 0x94, 0xbc, 0x55, 0xbc, 0x94, 0xbc, 0x55, 0xbd, 0x95, - 0xbf, 0x55, 0xbd, 0x95, 0xc0, 0x55, 0xbd, 0x95, 0xbf, 0x55, 0xbe, 0x95, - 0xc0, 0x55, 0xbe, 0x95, 0xbf, 0x55, 0xbe, 0x95, 0xc0, 0x55, 0xbf, 0x95, - 0xbf, 0x55, 0xbf, 0x95, 0xc0, 0x55, 0xbf, 0x95, 0xbf, 0x55, 0xc0, 0x95, - 0xc0, 0x55, 0xc0, 0x95, 0xc0, 0x55, 0xc0, 0x96, 0xc3, 0x55, 0xc1, 0x96, - 0xc3, 0x55, 0xc1, 0x96, 0xc3, 0x55, 0xc1, 0x96, 0xc3, 0x55, 0xc1, 0x96, - 0xc3, 0x55, 0xc2, 0x96, 0xc3, 0x55, 0xc2, 0x96, 0xc3, 0x55, 0xc2, 0x96, - 0xc3, 0x55, 0xc3, 0x96, 0xc3, 0x55, 0xc3, 0x96, 0xc3, 0x55, 0xc3, 0x96, - 0xc3, 0x55, 0xc4, 0x96, 0xc4, 0x55, 0xc4, 0x96, 0xc4, 0x55, 0xc4, 0x96, - 0xc4, 0x55, 0xc5, 0x97, 0xc6, 0x55, 0xc5, 0x97, 0xc7, 0x55, 0xc5, 0x97, - 0xc6, 0x55, 0xc6, 0x97, 0xc7, 0x55, 0xc6, 0x97, 0xc6, 0x55, 0xc6, 0x97, - 0xc7, 0x55, 0xc6, 0x97, 0xc6, 0x55, 0xc7, 0x97, 0xc7, 0x55, 0xc7, 0x97, - 0xc7, 0x55, 0xc7, 0x97, 0xc7, 0x55, 0xc8, 0x97, 0xc8, 0x55, 0xc8, 0x98, - 0xca, 0x55, 0xc8, 0x98, 0xca, 0x55, 0xc9, 0x98, 0xca, 0x55, 0xc9, 0x98, - 0xca, 0x55, 0xc9, 0x98, 0xca, 0x55, 0xc9, 0x98, 0xca, 0x55, 0xca, 0x98, - 0xca, 0x55, 0xca, 0x98, 0xca, 0x55, 0xca, 0x98, 0xca, 0x55, 0xcb, 0x98, - 0xcb, 0x55, 0xcb, 0x98, 0xcb, 0x55, 0xcb, 0x98, 0xcd, 0x55, 0xcc, 0x98, - 0xcd, 0x55, 0xcc, 0x98, 0xcd, 0x55, 0xcc, 0x98, 0xcd, 0x55, 0xcc, 0x98, - 0xcd, 0x55, 0xcd, 0x98, 0xcd, 0x55, 0xcd, 0x98, 0xcd, 0x55, 0xcd, 0x98, - 0xcd, 0x55, 0xce, 0x98, 0xce, 0x55, 0xce, 0x98, 0xce, 0x55, 0xce, 0x98, - 0xce, 0x55, 0xce, 0x98, 0xce, 0x55, 0xcf, 0x98, 0xcf, 0x55, 0xcf, 0x99, - 0xd0, 0x55, 0xcf, 0x99, 0xd0, 0x55, 0xd0, 0x99, 0xd0, 0x55, 0xd0, 0x9d, - 0xd2, 0x55, 0xd0, 0x9e, 0xd2, 0x55, 0xd0, 0x9d, 0xd2, 0x55, 0xd1, 0x9e, - 0xd2, 0x55, 0xd1, 0x9d, 0xd2, 0x55, 0xd1, 0x9d, 0xd2, 0x55, 0xd2, 0x9d, - 0xd2, 0x55, 0xd2, 0x9d, 0xd2, 0x55, 0xd2, 0x9d, 0xd2, 0x55, 0xd2, 0x9d, - 0xd2, 0x55, 0xd2, 0x9d, 0xd3, 0x55, 0xd2, 0x9d, 0xd3, 0x55, 0xd2, 0x9d, - 0xd3, 0x53, 0xd2, 0x9d, 0xd4, 0x55, 0xd2, 0x9d, 0xd4, 0x53, 0xd2, 0x9d, - 0xd4, 0x55, 0xd2, 0x9d, 0xd4, 0x53, 0xd2, 0x9d, 0xd5, 0x55, 0xd2, 0x9d, - 0xd5, 0x53, 0xd2, 0x9d, 0xd5, 0x55, 0xd2, 0x9d, 0xd6, 0x53, 0xd2, 0x9d, - 0xd6, 0x55, 0xd2, 0x9d, 0xd6, 0x53, 0xd2, 0x9d, 0xd6, 0x55, 0xd2, 0x9d, - 0xd7, 0x53, 0xd9, 0x9d, 0xd7, 0x4d, 0xd9, 0x9d, 0xd7, 0x4d, 0xd9, 0x9d, - 0xd7, 0x4d, 0xd9, 0x9d, 0xd8, 0x4d, 0xd9, 0x9d, 0xd8, 0x4d, 0xd9, 0x9d, - 0xd8, 0x4d, 0xd9, 0x9d, 0xd9, 0x4d, 0xd9, 0x9d, 0xd9, 0x4d, 0xd9, 0x9d, - 0xd9, 0x4d, 0xd9, 0x9d, 0xd9, 0x4d, 0xda, 0x9d, 0xda, 0x4d, 0xdb, 0x9d, - 0xda, 0x4e, 0xdc, 0x9d, 0xda, 0x4e, 0xdb, 0x9d, 0xda, 0x4e, 0xdc, 0x9d, - 0xdb, 0x4e, 0xdb, 0x9d, 0xdb, 0x4e, 0xdc, 0x9d, 0xdb, 0x4e, 0xdb, 0x9d, - 0xdb, 0x4e, 0xdc, 0x9d, 0xdc, 0x4e, 0xdc, 0x9d, 0xdc, 0x4e, 0xdc, 0x9d, - 0xdc, 0x4e, 0xde, 0x9d, 0xdd, 0x4f, 0xde, 0x9d, 0xdd, 0x4f, 0xde, 0x9d, - 0xdd, 0x4f, 0xde, 0x9d, 0xdd, 0x4f, 0xde, 0x9d, 0xde, 0x4f, 0xde, 0x9d, - 0xde, 0x4f, 0xde, 0x9d, 0xde, 0x4f, 0xde, 0x9d, 0xde, 0x4f, 0xdf, 0x9d, - 0xdf, 0x4f, 0xe1, 0x9d, 0xdf, 0x50, 0xe1, 0x9d, 0xdf, 0x50, 0xe1, 0x9d, - 0xdf, 0x50, 0xe1, 0x9d, 0xe0, 0x50, 0xe1, 0x9d, 0xe0, 0x50, 0xe1, 0x9d, - 0xe0, 0x50, 0xe1, 0x9d, 0xe1, 0x50, 0xe1, 0x9d, 0xe1, 0x50, 0xe1, 0x9d, - 0xe1, 0x50, 0xe1, 0x9d, 0xe1, 0x50, 0xe2, 0x9d, 0xe2, 0x50, 0xe3, 0x9d, - 0xe2, 0x51, 0xe3, 0x9d, 0xe2, 0x51, 0xe3, 0x9d, 0xe2, 0x51, 0xe3, 0x9d, - 0xe3, 0x51, 0xe3, 0x9d, 0xe3, 0x51, 0xe3, 0x9d, 0xe3, 0x51, 0xe3, 0x9d, - 0xe3, 0x51, 0xe4, 0x9d, 0xe4, 0x51, 0xe4, 0x9d, 0xe4, 0x51, 0xe4, 0x9d, - 0xe4, 0x51, 0xe5, 0x9d, 0xe4, 0x52, 0xe6, 0x9d, 0xe5, 0x52, 0xe5, 0x9d, - 0xe5, 0x52, 0xe6, 0x9d, 0xe5, 0x52, 0xe5, 0x9d, 0xe5, 0x52, 0xe6, 0x9d, - 0xe6, 0x52, 0xe6, 0x9d, 0xe6, 0x52, 0xe6, 0x9d, 0xe6, 0x52, 0xe6, 0x9d, - 0xe6, 0x52, 0xe8, 0x9d, 0xe7, 0x53, 0xe8, 0x9d, 0xe7, 0x53, 0xe8, 0x9d, - 0xe7, 0x53, 0xe8, 0x9d, 0xe7, 0x53, 0xe8, 0x9d, 0xe8, 0x53, 0xe8, 0x9d, - 0xe8, 0x53, 0xe8, 0x9d, 0xe8, 0x53, 0xe8, 0x9d, 0xe8, 0x53, 0xe9, 0x9d, - 0xe9, 0x53, 0xe9, 0x9d, 0xe9, 0x53, 0xe9, 0x9d, 0xe9, 0x53, 0xe9, 0x9d, - 0xe9, 0x53, 0xea, 0x9d, 0xea, 0x54, 0xea, 0x9d, 0xea, 0x54, 0xea, 0x9d, - 0xea, 0x54, 0xea, 0x9d, 0xea, 0x54, 0xeb, 0x9d, 0xeb, 0x54, 0xeb, 0x9d, - 0xeb, 0x54, 0xeb, 0x9d, 0xeb, 0x54, 0xeb, 0x9d, 0xeb, 0x54, 0xec, 0x9d, - 0xec, 0x54, 0xec, 0x9d, 0xec, 0x54, 0xec, 0x9d, 0xec, 0x54, 0xec, 0x9d, - 0xec, 0x55, 0xec, 0x9d, 0xec, 0x55, 0xed, 0x9d, 0xed, 0x55, 0xed, 0x9d, - 0xed, 0x55, 0xed, 0x9d, 0xed, 0x55, 0xed, 0x9d, 0xed, 0x55, 0xee, 0x9d, - 0xee, 0x55, 0xee, 0x9d, 0xee, 0x55, 0xee, 0x9d, 0xee, 0x55, 0xee, 0x9d, - 0xee, 0x55, 0xef, 0x9d, 0xee, 0x55, 0xef, 0x9e, 0xef, 0x55, 0xef, 0x9e, - 0xef, 0x55, 0xef, 0x9e, 0xef, 0x55, 0xf0, 0x9e, 0xf0, 0x55, 0xf0, 0x9e, - 0xf0, 0x55, 0xf0, 0x9e, 0xf0, 0x55, 0xf0, 0x9e, 0xf0, 0x55, 0xf1, 0x9e, - 0xf1, 0x55, 0xf1, 0x9e, 0xf0, 0x55, 0xf1, 0x9e, 0xf1, 0x55, 0xf1, 0x9e, - 0xf0, 0x55, 0xf2, 0x9e, 0xf1, 0x55, 0xf2, 0x9f, 0xf2, 0x55, 0xf2, 0x9f, - 0xf2, 0x55, 0xf2, 0x9f, 0xf2, 0x55, 0xf2, 0x9f, 0xf2, 0x55, 0xf3, 0x9f, - 0xf3, 0x55, 0xf3, 0x9f, 0xf2, 0x55, 0xf3, 0x9f, 0xf3, 0x55, 0xf3, 0x9f, - 0xf2, 0x55, 0xf4, 0x9f, 0xf3, 0x55, 0xf4, 0xa0, 0xf4, 0x55, 0xf4, 0xa0, - 0xf4, 0x55, 0xf4, 0xa0, 0xf4, 0x55, 0xf5, 0xa0, 0xf5, 0x55, 0xf5, 0xa0, - 0xf5, 0x55, 0xf5, 0xa0, 0xf5, 0x55, 0xf5, 0xa0, 0xf5, 0x55, 0xf5, 0xa0, - 0xf5, 0x55, 0xf6, 0xa0, 0xf5, 0x55, 0xf6, 0xa1, 0xf6, 0x55, 0xf6, 0xa1, - 0xf6, 0x55, 0xf6, 0xa1, 0xf6, 0x55, 0xf7, 0xa1, 0xf7, 0x55, 0xf7, 0xa1, - 0xf7, 0x55, 0xf7, 0xa1, 0xf7, 0x55, 0xf7, 0xa1, 0xf7, 0x55, 0xf8, 0xa1, - 0xf7, 0x55, 0xf8, 0xa1, 0xf7, 0x55, 0xf8, 0xa1, 0xf7, 0x55, 0xf8, 0xa1, - 0xf7, 0x55, 0xf8, 0xa1, 0xf7, 0x55, 0xf9, 0xa1, 0xf9, 0x55, 0xf9, 0xa1, - 0xf9, 0x55, 0xf9, 0xa1, 0xf9, 0x55, 0xf9, 0xa1, 0xf9, 0x55, 0xfa, 0xa1, - 0xf9, 0x55, 0xfa, 0xa1, 0xf9, 0x55, 0xfa, 0xa1, 0xf9, 0x55, 0xfa, 0xa1, - 0xf9, 0x55, 0xfa, 0xa1, 0xf9, 0x55, 0xfb, 0xa2, 0xfb, 0x55, 0xfb, 0xa2, - 0xfb, 0x55, 0xfb, 0xa2, 0xfb, 0x55, 0xfb, 0xa2, 0xfb, 0x55, 0xfc, 0xa2, - 0xfb, 0x55, 0xfc, 0xa2, 0xfb, 0x55, 0xfc, 0xa2, 0xfb, 0x55, 0xfc, 0xa2, - 0xfb, 0x55, 0xfc, 0xa2, 0xfb, 0x55, 0xfd, 0xa2, 0xfb, 0x55, 0xfd, 0xa2, - 0xfb, 0x55, 0xfd, 0xa2, 0xfb, 0x55, 0xfd, 0xa2, 0xfb, 0x55, 0xfe, 0xa2, - 0xfb, 0x55, 0xfe, 0xa2, 0xfb, 0x55, 0xfe, 0xa2, 0xfb, 0x55, 0xfe, 0xa2, - 0xfb, 0x55, 0xfe, 0xa2, 0xfb, 0x55, 0xff, 0xa2, 0xfb, 0x55, 0xff, 0xa3, - 0xfb, 0x55, 0x03, 0xa6, 0x96, 0x56, 0x0a, 0xa8, 0x96, 0x56, 0x0f, 0xa6, - 0x96, 0x56, 0x14, 0xa8, 0x96, 0x56, 0x17, 0xa6, 0x96, 0x56, 0x1b, 0xa8, - 0x96, 0x56, 0x1e, 0xa6, 0x96, 0x56, 0x20, 0xa8, 0x96, 0x56, 0x23, 0xa6, - 0x96, 0x56, 0x25, 0xa8, 0x96, 0x56, 0x27, 0xa6, 0x96, 0x56, 0x29, 0xa8, - 0x96, 0x56, 0x2b, 0xa6, 0x96, 0x56, 0x2d, 0xa8, 0x96, 0x56, 0x2f, 0xa6, - 0x96, 0x56, 0x31, 0xa8, 0x96, 0x56, 0x32, 0xa6, 0x96, 0x56, 0x34, 0xa8, - 0x96, 0x56, 0x35, 0xa6, 0x96, 0x56, 0x37, 0xa8, 0x96, 0x56, 0x38, 0xa6, - 0x96, 0x56, 0x3a, 0xa8, 0x96, 0x56, 0x3b, 0xa6, 0x96, 0x56, 0x3c, 0xa8, - 0x96, 0x56, 0x3e, 0xa6, 0x96, 0x56, 0x3f, 0xa3, 0x97, 0x56, 0x40, 0xa6, - 0x96, 0x56, 0x42, 0xa3, 0x97, 0x56, 0x43, 0xa6, 0x96, 0x56, 0x44, 0xa3, - 0x97, 0x56, 0x45, 0xa6, 0x96, 0x56, 0x46, 0xa3, 0x97, 0x56, 0x47, 0xa6, - 0x96, 0x56, 0x48, 0xa3, 0x97, 0x56, 0x49, 0xa6, 0x96, 0x56, 0x4a, 0xa3, - 0x97, 0x56, 0x4b, 0xa6, 0x96, 0x56, 0x4c, 0xa3, 0x97, 0x56, 0x4d, 0xa6, - 0x96, 0x56, 0x4e, 0xa3, 0x97, 0x56, 0x4f, 0xa6, 0x96, 0x56, 0x50, 0xa3, - 0x97, 0x56, 0x51, 0xa6, 0x96, 0x56, 0x52, 0xa3, 0x97, 0x56, 0x53, 0xa6, - 0x96, 0x56, 0x54, 0xa3, 0x97, 0x56, 0x55, 0xa6, 0x96, 0x56, 0x56, 0xa3, - 0x97, 0x56, 0x57, 0xa6, 0x96, 0x56, 0x58, 0xa3, 0x97, 0x56, 0x58, 0xa6, - 0x96, 0x56, 0x59, 0xa3, 0x97, 0x56, 0x5a, 0xa6, 0x96, 0x56, 0x5b, 0xa3, - 0x97, 0x56, 0x5c, 0xa0, 0x97, 0x56, 0x5d, 0xa3, 0x97, 0x56, 0x5d, 0xa0, - 0x97, 0x56, 0x5e, 0xa3, 0x97, 0x56, 0x5f, 0xa0, 0x97, 0x56, 0x60, 0xa3, - 0x97, 0x56, 0x60, 0xa0, 0x97, 0x56, 0x61, 0xa3, 0x97, 0x56, 0x62, 0xa0, - 0x97, 0x56, 0x63, 0xa3, 0x97, 0x56, 0x63, 0xa0, 0x97, 0x56, 0x64, 0xa3, - 0x97, 0x56, 0x65, 0xa0, 0x97, 0x56, 0x66, 0xa3, 0x97, 0x56, 0x66, 0xa0, - 0x97, 0x56, 0x67, 0xa3, 0x97, 0x56, 0x68, 0xa0, 0x97, 0x56, 0x68, 0xa3, - 0x97, 0x56, 0x69, 0xa0, 0x97, 0x56, 0x6a, 0xa3, 0x97, 0x56, 0x6a, 0xa0, - 0x97, 0x56, 0x6b, 0xa3, 0x97, 0x56, 0x6c, 0xa0, 0x97, 0x56, 0x6c, 0xa3, - 0x97, 0x56, 0x6d, 0xa0, 0x97, 0x56, 0x6e, 0xa3, 0x97, 0x56, 0x6e, 0xa0, - 0x97, 0x56, 0x6f, 0xa3, 0x97, 0x56, 0x70, 0xa0, 0x97, 0x56, 0x70, 0xa3, - 0x97, 0x56, 0x71, 0xa0, 0x97, 0x56, 0x72, 0xa3, 0x97, 0x56, 0x72, 0xa0, - 0x97, 0x56, 0x73, 0xa3, 0x97, 0x56, 0x73, 0xa0, 0x97, 0x56, 0x74, 0xa3, - 0x97, 0x56, 0x75, 0xa0, 0x97, 0x56, 0x75, 0xa3, 0x97, 0x56, 0x76, 0xa0, - 0x97, 0x56, 0x76, 0xa3, 0x97, 0x56, 0x77, 0xa0, 0x97, 0x56, 0x78, 0x9e, - 0x98, 0x56, 0x78, 0xa0, 0x97, 0x56, 0x79, 0x9e, 0x98, 0x56, 0x79, 0xa0, - 0x97, 0x56, 0x7a, 0x9e, 0x98, 0x56, 0x7a, 0xa0, 0x97, 0x56, 0x7b, 0x9e, - 0x98, 0x56, 0x7c, 0xa0, 0x97, 0x56, 0x7c, 0x9e, 0x98, 0x56, 0x7d, 0xa0, - 0x97, 0x56, 0x7d, 0x9e, 0x98, 0x56, 0x7e, 0xa0, 0x97, 0x56, 0x7e, 0x9e, - 0x98, 0x56, 0x7f, 0xa0, 0x97, 0x56, 0x7f, 0x9e, 0x98, 0x56, 0x80, 0xa0, - 0x97, 0x56, 0x81, 0x9e, 0x98, 0x56, 0x81, 0xa0, 0x97, 0x56, 0x82, 0x9e, - 0x98, 0x56, 0x82, 0xa0, 0x97, 0x56, 0x83, 0x9e, 0x98, 0x56, 0x83, 0xa0, - 0x97, 0x56, 0x84, 0x9e, 0x98, 0x56, 0x84, 0xa0, 0x97, 0x56, 0x85, 0x9e, - 0x98, 0x56, 0x85, 0xa0, 0x97, 0x56, 0x86, 0x9e, 0x98, 0x56, 0x86, 0xa0, - 0x97, 0x56, 0x87, 0x9e, 0x98, 0x56, 0x87, 0xa0, 0x97, 0x56, 0x88, 0x9e, - 0x98, 0x56, 0x88, 0xa0, 0x97, 0x56, 0x89, 0x9e, 0x98, 0x56, 0x89, 0xa0, - 0x97, 0x56, 0x8a, 0x9e, 0x98, 0x56, 0x8a, 0xa0, 0x97, 0x56, 0x8b, 0x9e, - 0x98, 0x56, 0x8b, 0xa0, 0x97, 0x56, 0x8c, 0x9e, 0x98, 0x56, 0x8c, 0xa0, - 0x97, 0x56, 0x8d, 0x9e, 0x98, 0x56, 0x8d, 0xa0, 0x97, 0x56, 0x8e, 0x9e, - 0x98, 0x56, 0x8e, 0xa0, 0x97, 0x56, 0x8e, 0x9e, 0x98, 0x56, 0x8f, 0xa0, - 0x97, 0x56, 0x8f, 0x9e, 0x98, 0x56, 0x90, 0xa0, 0x97, 0x56, 0x90, 0x9e, - 0x98, 0x56, 0x91, 0x9d, 0x98, 0x56, 0x91, 0x9e, 0x98, 0x56, 0x92, 0x9d, - 0x98, 0x56, 0x92, 0x9e, 0x98, 0x56, 0x93, 0x9d, 0x98, 0x56, 0x93, 0x9e, - 0x98, 0x56, 0x94, 0x9d, 0x98, 0x56, 0x94, 0x9e, 0x98, 0x56, 0x94, 0x9d, - 0x98, 0x56, 0x95, 0x9e, 0x98, 0x56, 0x95, 0x9d, 0x98, 0x56, 0x96, 0x9e, - 0x98, 0x56, 0x96, 0x9d, 0x98, 0x56, 0x97, 0x9e, 0x98, 0x56, 0x97, 0x9d, - 0x98, 0x56, 0x98, 0x9e, 0x98, 0x56, 0x97, 0x9d, 0x98, 0x56, 0x98, 0x9d, - 0x98, 0x56, 0x97, 0x9d, 0x99, 0x56, 0x98, 0x9d, 0x99, 0x56, 0x9b, 0x9d, - 0x9a, 0x57, 0x9c, 0x9d, 0x9a, 0x56, 0x9b, 0x9d, 0x9a, 0x57, 0x9c, 0x9d, - 0x9b, 0x56, 0x9c, 0x9d, 0x9b, 0x56, 0x9c, 0x9d, 0x9b, 0x56, 0x9c, 0x9d, - 0x9b, 0x56, 0x9d, 0x9d, 0x9b, 0x56, 0x9d, 0x9d, 0x9b, 0x56, 0x9d, 0x9d, - 0x9b, 0x56, 0x9e, 0x9d, 0x9b, 0x56, 0x9e, 0x9d, 0x9b, 0x56, 0x9f, 0x9d, - 0x9b, 0x56, 0x9f, 0x9a, 0x9c, 0x56, 0x9f, 0x9d, 0x9b, 0x56, 0xa0, 0x9a, - 0x9c, 0x56, 0xa0, 0x9d, 0x9b, 0x56, 0xa1, 0x9a, 0x9c, 0x56, 0xa1, 0x9d, - 0x9b, 0x56, 0xa1, 0x9a, 0x9c, 0x56, 0xa2, 0x9d, 0x9b, 0x56, 0xa2, 0x9a, - 0x9c, 0x56, 0xa3, 0x9d, 0x9b, 0x56, 0xa3, 0x9a, 0x9c, 0x56, 0xa3, 0x9d, - 0x9b, 0x56, 0xa4, 0x9a, 0x9c, 0x56, 0xa4, 0x9d, 0x9b, 0x56, 0xa5, 0x9a, - 0x9c, 0x56, 0xa5, 0x9d, 0x9b, 0x56, 0xa5, 0x9a, 0x9c, 0x56, 0xa6, 0x9d, - 0x9b, 0x56, 0xa6, 0x9a, 0x9c, 0x56, 0xa6, 0x9d, 0x9b, 0x56, 0xa7, 0x9a, - 0x9c, 0x56, 0xa7, 0x9d, 0x9b, 0x56, 0xa8, 0x9a, 0x9c, 0x56, 0xa8, 0x90, - 0xaa, 0x56, 0xa8, 0x90, 0xab, 0x56, 0xa9, 0x90, 0xaa, 0x56, 0xa9, 0x90, - 0xab, 0x56, 0xaa, 0x90, 0xaa, 0x56, 0xaa, 0x90, 0xab, 0x56, 0xaa, 0x90, - 0xaa, 0x56, 0xab, 0x91, 0xae, 0x56, 0xab, 0x91, 0xaf, 0x56, 0xab, 0x91, - 0xae, 0x56, 0xac, 0x91, 0xaf, 0x56, 0xac, 0x91, 0xae, 0x56, 0xac, 0x91, - 0xaf, 0x56, 0xad, 0x91, 0xae, 0x56, 0xad, 0x91, 0xaf, 0x56, 0xae, 0x91, - 0xae, 0x56, 0xae, 0x91, 0xaf, 0x56, 0xae, 0x91, 0xae, 0x56, 0xaf, 0x92, - 0xb2, 0x56, 0xaf, 0x92, 0xb3, 0x56, 0xaf, 0x92, 0xb2, 0x56, 0xb0, 0x92, - 0xb3, 0x56, 0xb0, 0x92, 0xb2, 0x56, 0xb0, 0x92, 0xb3, 0x56, 0xb1, 0x92, - 0xb2, 0x56, 0xb1, 0x92, 0xb3, 0x56, 0xb2, 0x92, 0xb2, 0x56, 0xb2, 0x92, - 0xb3, 0x56, 0xb2, 0x92, 0xb2, 0x56, 0xb3, 0x92, 0xb3, 0x56, 0xb3, 0x92, - 0xb3, 0x56, 0xb3, 0x93, 0xb6, 0x56, 0xb4, 0x93, 0xb6, 0x56, 0xb4, 0x93, - 0xb6, 0x56, 0xb4, 0x93, 0xb6, 0x56, 0xb5, 0x93, 0xb6, 0x56, 0xb5, 0x93, - 0xb6, 0x56, 0xb5, 0x93, 0xb6, 0x56, 0xb6, 0x93, 0xb6, 0x56, 0xb6, 0x93, - 0xb6, 0x56, 0xb6, 0x93, 0xb6, 0x56, 0xb7, 0x93, 0xb7, 0x56, 0xb7, 0x93, - 0xb7, 0x56, 0xb7, 0x94, 0xba, 0x56, 0xb8, 0x94, 0xba, 0x56, 0xb8, 0x94, - 0xba, 0x56, 0xb8, 0x94, 0xba, 0x56, 0xb9, 0x94, 0xba, 0x56, 0xb9, 0x94, - 0xba, 0x56, 0xb9, 0x94, 0xba, 0x56, 0xba, 0x94, 0xba, 0x56, 0xba, 0x94, - 0xba, 0x56, 0xba, 0x94, 0xba, 0x56, 0xbb, 0x94, 0xbb, 0x56, 0xbb, 0x94, - 0xbe, 0x56, 0xbb, 0x94, 0xbe, 0x56, 0xbc, 0x94, 0xbe, 0x56, 0xbc, 0x94, - 0xbe, 0x56, 0xbc, 0x94, 0xbe, 0x56, 0xbd, 0x94, 0xbe, 0x56, 0xbd, 0x94, - 0xbe, 0x56, 0xbd, 0x94, 0xbe, 0x56, 0xbe, 0x94, 0xbe, 0x56, 0xbe, 0x94, - 0xbe, 0x56, 0xbe, 0x94, 0xbe, 0x56, 0xbf, 0x95, 0xc1, 0x56, 0xbf, 0x95, - 0xc1, 0x56, 0xbf, 0x95, 0xc1, 0x56, 0xc0, 0x95, 0xc1, 0x56, 0xc0, 0x95, - 0xc1, 0x56, 0xc0, 0x95, 0xc1, 0x56, 0xc1, 0x95, 0xc1, 0x56, 0xc1, 0x95, - 0xc1, 0x56, 0xc1, 0x95, 0xc1, 0x56, 0xc1, 0x95, 0xc1, 0x56, 0xc2, 0x95, - 0xc2, 0x56, 0xc2, 0x96, 0xc5, 0x56, 0xc2, 0x96, 0xc5, 0x56, 0xc3, 0x96, - 0xc5, 0x56, 0xc3, 0x96, 0xc5, 0x56, 0xc3, 0x96, 0xc5, 0x56, 0xc4, 0x96, - 0xc5, 0x56, 0xc4, 0x96, 0xc5, 0x56, 0xc4, 0x96, 0xc5, 0x56, 0xc5, 0x96, - 0xc5, 0x56, 0xc5, 0x96, 0xc5, 0x56, 0xc5, 0x96, 0xc5, 0x56, 0xc6, 0x96, - 0xc6, 0x56, 0xc6, 0x96, 0xc6, 0x56, 0xc6, 0x97, 0xc8, 0x56, 0xc6, 0x97, - 0xc8, 0x56, 0xc7, 0x97, 0xc8, 0x56, 0xc7, 0x97, 0xc8, 0x56, 0xc7, 0x97, - 0xc8, 0x56, 0xc8, 0x97, 0xc8, 0x56, 0xc8, 0x97, 0xc8, 0x56, 0xc8, 0x97, - 0xc8, 0x56, 0xc9, 0x97, 0xc9, 0x56, 0xc9, 0x97, 0xc9, 0x56, 0xc9, 0x97, - 0xc9, 0x56, 0xc9, 0x98, 0xcb, 0x56, 0xca, 0x98, 0xcc, 0x56, 0xca, 0x98, - 0xcb, 0x56, 0xca, 0x98, 0xcc, 0x56, 0xcb, 0x98, 0xcb, 0x56, 0xcb, 0x98, - 0xcc, 0x56, 0xcb, 0x98, 0xcb, 0x56, 0xcc, 0x98, 0xcc, 0x56, 0xcc, 0x98, - 0xcc, 0x56, 0xcc, 0x98, 0xcc, 0x56, 0xcc, 0x98, 0xcc, 0x56, 0xcd, 0x99, - 0xce, 0x56, 0xcd, 0x99, 0xcf, 0x56, 0xcd, 0x99, 0xce, 0x56, 0xce, 0x99, - 0xcf, 0x56, 0xce, 0x99, 0xce, 0x56, 0xce, 0x99, 0xcf, 0x56, 0xce, 0x99, - 0xce, 0x56, 0xcf, 0x99, 0xcf, 0x56, 0xcf, 0x99, 0xcf, 0x56, 0xcf, 0x99, - 0xcf, 0x56, 0xd0, 0x9f, 0xd2, 0x56, 0xd0, 0x9d, 0xd2, 0x56, 0xd0, 0x9f, - 0xd2, 0x56, 0xd0, 0x9d, 0xd2, 0x56, 0xd1, 0x9f, 0xd2, 0x56, 0xd1, 0x9d, - 0xd2, 0x56, 0xd1, 0x9d, 0xd2, 0x56, 0xd2, 0x9d, 0xd2, 0x56, 0xd2, 0x9d, - 0xd2, 0x56, 0xd2, 0x9d, 0xd2, 0x56, 0xd2, 0x9d, 0xd2, 0x56, 0xd2, 0x9d, - 0xd3, 0x56, 0xd2, 0x9d, 0xd3, 0x56, 0xd2, 0x9d, 0xd3, 0x54, 0xd2, 0x9d, - 0xd4, 0x56, 0xd2, 0x9d, 0xd4, 0x54, 0xd2, 0x9d, 0xd4, 0x56, 0xd2, 0x9d, - 0xd4, 0x54, 0xd2, 0x9d, 0xd5, 0x56, 0xd2, 0x9d, 0xd5, 0x54, 0xd2, 0x9d, - 0xd5, 0x56, 0xd2, 0x9d, 0xd6, 0x54, 0xd2, 0x9d, 0xd6, 0x56, 0xd2, 0x9d, - 0xd6, 0x54, 0xd2, 0x9d, 0xd6, 0x56, 0xd2, 0x9d, 0xd7, 0x54, 0xd2, 0x9d, - 0xd7, 0x56, 0xd8, 0x9d, 0xd7, 0x4d, 0xd8, 0x9d, 0xd7, 0x4d, 0xd8, 0x9d, - 0xd8, 0x4d, 0xd8, 0x9d, 0xd8, 0x4d, 0xda, 0x9d, 0xd8, 0x4e, 0xdb, 0x9d, - 0xd9, 0x4e, 0xda, 0x9d, 0xd9, 0x4e, 0xdb, 0x9d, 0xd9, 0x4e, 0xda, 0x9d, - 0xd9, 0x4e, 0xdb, 0x9d, 0xda, 0x4e, 0xda, 0x9d, 0xda, 0x4e, 0xdb, 0x9d, - 0xda, 0x4e, 0xda, 0x9d, 0xda, 0x4e, 0xdb, 0x9d, 0xdb, 0x4e, 0xdb, 0x9d, - 0xdb, 0x4e, 0xdd, 0x9d, 0xdb, 0x4f, 0xdd, 0x9d, 0xdb, 0x4f, 0xdd, 0x9d, - 0xdc, 0x4f, 0xdd, 0x9d, 0xdc, 0x4f, 0xdd, 0x9d, 0xdc, 0x4f, 0xdd, 0x9d, - 0xdd, 0x4f, 0xdd, 0x9d, 0xdd, 0x4f, 0xdd, 0x9d, 0xdd, 0x4f, 0xdd, 0x9d, - 0xdd, 0x4f, 0xdf, 0x9d, 0xde, 0x50, 0xdf, 0x9d, 0xde, 0x50, 0xdf, 0x9d, - 0xde, 0x50, 0xdf, 0x9d, 0xde, 0x50, 0xdf, 0x9d, 0xdf, 0x50, 0xdf, 0x9d, - 0xdf, 0x50, 0xdf, 0x9d, 0xdf, 0x50, 0xdf, 0x9d, 0xdf, 0x50, 0xe0, 0x9d, - 0xe0, 0x50, 0xe0, 0x9d, 0xe0, 0x50, 0xe2, 0x9d, 0xe0, 0x51, 0xe2, 0x9d, - 0xe1, 0x51, 0xe2, 0x9d, 0xe1, 0x51, 0xe2, 0x9d, 0xe1, 0x51, 0xe2, 0x9d, - 0xe1, 0x51, 0xe2, 0x9d, 0xe2, 0x51, 0xe2, 0x9d, 0xe2, 0x51, 0xe2, 0x9d, - 0xe2, 0x51, 0xe2, 0x9d, 0xe2, 0x51, 0xe3, 0x9d, 0xe3, 0x51, 0xe3, 0x9d, - 0xe3, 0x51, 0xe4, 0x9d, 0xe3, 0x52, 0xe4, 0x9d, 0xe3, 0x52, 0xe4, 0x9d, - 0xe4, 0x52, 0xe4, 0x9d, 0xe4, 0x52, 0xe4, 0x9d, 0xe4, 0x52, 0xe4, 0x9d, - 0xe4, 0x52, 0xe5, 0x9d, 0xe5, 0x52, 0xe5, 0x9d, 0xe5, 0x52, 0xe5, 0x9d, - 0xe5, 0x52, 0xe6, 0x9d, 0xe5, 0x53, 0xe7, 0x9d, 0xe6, 0x53, 0xe6, 0x9d, - 0xe6, 0x53, 0xe7, 0x9d, 0xe6, 0x53, 0xe6, 0x9d, 0xe6, 0x53, 0xe7, 0x9d, - 0xe7, 0x53, 0xe7, 0x9d, 0xe7, 0x53, 0xe7, 0x9d, 0xe7, 0x53, 0xe7, 0x9d, - 0xe7, 0x53, 0xe8, 0x9d, 0xe8, 0x53, 0xe9, 0x9d, 0xe8, 0x54, 0xe9, 0x9d, - 0xe8, 0x54, 0xe9, 0x9d, 0xe8, 0x54, 0xe9, 0x9d, 0xe9, 0x54, 0xe9, 0x9d, - 0xe9, 0x54, 0xe9, 0x9d, 0xe9, 0x54, 0xe9, 0x9d, 0xe9, 0x54, 0xea, 0x9d, - 0xea, 0x54, 0xea, 0x9d, 0xea, 0x54, 0xea, 0x9d, 0xea, 0x54, 0xea, 0x9d, - 0xea, 0x54, 0xeb, 0x9d, 0xeb, 0x55, 0xeb, 0x9d, 0xeb, 0x55, 0xeb, 0x9d, - 0xeb, 0x55, 0xeb, 0x9d, 0xeb, 0x55, 0xec, 0x9d, 0xec, 0x55, 0xec, 0x9d, - 0xec, 0x55, 0xec, 0x9d, 0xec, 0x55, 0xec, 0x9d, 0xec, 0x55, 0xec, 0x9d, - 0xec, 0x55, 0xed, 0x9d, 0xed, 0x55, 0xed, 0x9d, 0xed, 0x55, 0xed, 0x9d, - 0xed, 0x55, 0xed, 0x9e, 0xed, 0x56, 0xee, 0x9e, 0xee, 0x56, 0xee, 0x9e, - 0xee, 0x56, 0xee, 0x9e, 0xee, 0x56, 0xee, 0x9e, 0xee, 0x56, 0xef, 0x9e, - 0xef, 0x56, 0xef, 0x9e, 0xef, 0x56, 0xef, 0x9e, 0xef, 0x56, 0xef, 0x9e, - 0xef, 0x56, 0xf0, 0x9e, 0xef, 0x56, 0xf0, 0x9e, 0xef, 0x56, 0xf0, 0x9f, - 0xf0, 0x56, 0xf0, 0x9f, 0xf0, 0x56, 0xf1, 0x9f, 0xf1, 0x56, 0xf1, 0x9f, - 0xf1, 0x56, 0xf1, 0x9f, 0xf1, 0x56, 0xf1, 0x9f, 0xf1, 0x56, 0xf2, 0x9f, - 0xf2, 0x56, 0xf2, 0x9f, 0xf1, 0x56, 0xf2, 0x9f, 0xf2, 0x56, 0xf2, 0x9f, - 0xf1, 0x56, 0xf2, 0x9f, 0xf2, 0x56, 0xf3, 0x9f, 0xf3, 0x56, 0xf3, 0x9f, - 0xf3, 0x56, 0xf3, 0x9f, 0xf3, 0x56, 0xf3, 0x9f, 0xf3, 0x56, 0xf4, 0x9f, - 0xf4, 0x56, 0xf4, 0x9f, 0xf4, 0x56, 0xf4, 0x9f, 0xf4, 0x56, 0xf4, 0x9f, - 0xf4, 0x56, 0xf5, 0x9f, 0xf4, 0x56, 0xf5, 0x9f, 0xf4, 0x56, 0xf5, 0xa0, - 0xf5, 0x56, 0xf5, 0xa0, 0xf5, 0x56, 0xf5, 0xa0, 0xf5, 0x56, 0xf6, 0xa0, - 0xf6, 0x56, 0xf6, 0xa0, 0xf6, 0x56, 0xf6, 0xa0, 0xf6, 0x56, 0xf6, 0xa0, - 0xf6, 0x56, 0xf7, 0xa0, 0xf6, 0x56, 0xf7, 0xa0, 0xf6, 0x56, 0xf7, 0xa1, - 0xf7, 0x56, 0xf7, 0xa1, 0xf7, 0x56, 0xf8, 0xa1, 0xf8, 0x56, 0xf8, 0xa1, - 0xf8, 0x56, 0xf8, 0xa1, 0xf8, 0x56, 0xf8, 0xa1, 0xf8, 0x56, 0xf8, 0xa1, - 0xf8, 0x56, 0xf9, 0xa1, 0xf8, 0x56, 0xf9, 0xa1, 0xf8, 0x56, 0xf9, 0xa1, - 0xf8, 0x56, 0xf9, 0xa1, 0xf8, 0x56, 0xfa, 0xa2, 0xfa, 0x56, 0xfa, 0xa2, - 0xfa, 0x56, 0xfa, 0xa2, 0xfa, 0x56, 0xfa, 0xa2, 0xfa, 0x56, 0xfa, 0xa2, - 0xfa, 0x56, 0xfb, 0xa2, 0xfa, 0x56, 0xfb, 0xa2, 0xfa, 0x56, 0xfb, 0xa2, - 0xfa, 0x56, 0xfb, 0xa2, 0xfa, 0x56, 0xfc, 0xa2, 0xfa, 0x56, 0xfc, 0xa3, - 0xfb, 0x56, 0xfc, 0xa3, 0xfc, 0x56, 0xfc, 0xa3, 0xfb, 0x56, 0xfc, 0xa3, - 0xfc, 0x56, 0xfd, 0xa3, 0xfb, 0x56, 0xfd, 0xa3, 0xfc, 0x56, 0xfd, 0xa3, - 0xfb, 0x56, 0xfd, 0xa3, 0xfc, 0x56, 0xfe, 0xa3, 0xfb, 0x56, 0xfe, 0xa3, - 0xfc, 0x56, 0xfe, 0xa3, 0xfb, 0x56, 0xfe, 0xa3, 0xfc, 0x56, 0xfe, 0xa3, - 0xfb, 0x56, 0xff, 0xa3, 0xfc, 0x56, 0xff, 0xa3, 0xfb, 0x56, 0x03, 0xa5, - 0x96, 0x56, 0x0a, 0xa5, 0x96, 0x56, 0x0f, 0xa5, 0x96, 0x56, 0x14, 0xa8, - 0x96, 0x56, 0x17, 0xa5, 0x96, 0x56, 0x1b, 0xa8, 0x96, 0x56, 0x1e, 0xa5, - 0x96, 0x56, 0x20, 0xa8, 0x96, 0x56, 0x23, 0xa5, 0x96, 0x56, 0x25, 0xa3, - 0x97, 0x56, 0x27, 0xa5, 0x96, 0x56, 0x29, 0xa3, 0x97, 0x56, 0x2b, 0xa5, - 0x96, 0x56, 0x2d, 0xa3, 0x97, 0x56, 0x2f, 0xa5, 0x96, 0x56, 0x31, 0xa3, - 0x97, 0x56, 0x32, 0xa5, 0x96, 0x56, 0x34, 0xa3, 0x97, 0x56, 0x35, 0xa5, - 0x96, 0x56, 0x37, 0xa3, 0x97, 0x56, 0x38, 0xa5, 0x96, 0x56, 0x3a, 0xa3, - 0x97, 0x56, 0x3b, 0xa5, 0x96, 0x56, 0x3c, 0xa3, 0x97, 0x56, 0x3e, 0xa5, - 0x96, 0x56, 0x3f, 0xa3, 0x97, 0x56, 0x40, 0xa5, 0x96, 0x56, 0x42, 0xa3, - 0x97, 0x56, 0x43, 0xa5, 0x96, 0x56, 0x44, 0xa3, 0x97, 0x56, 0x45, 0xa5, - 0x96, 0x56, 0x46, 0xa3, 0x97, 0x56, 0x47, 0xa5, 0x96, 0x56, 0x48, 0xa3, - 0x97, 0x56, 0x49, 0xa5, 0x96, 0x56, 0x4a, 0xa3, 0x97, 0x56, 0x4b, 0xa5, - 0x96, 0x56, 0x4c, 0xa3, 0x97, 0x56, 0x4d, 0xa5, 0x96, 0x56, 0x4e, 0xa3, - 0x97, 0x56, 0x4f, 0xa5, 0x96, 0x56, 0x50, 0xa3, 0x97, 0x56, 0x51, 0xa5, - 0x96, 0x56, 0x52, 0xa3, 0x97, 0x56, 0x53, 0xa5, 0x96, 0x56, 0x54, 0xa3, - 0x97, 0x56, 0x55, 0xa5, 0x96, 0x56, 0x56, 0xa3, 0x97, 0x56, 0x57, 0xa5, - 0x96, 0x56, 0x58, 0xa3, 0x97, 0x56, 0x58, 0xa5, 0x96, 0x56, 0x59, 0xa3, - 0x97, 0x56, 0x5a, 0xa5, 0x96, 0x56, 0x5b, 0xa3, 0x97, 0x56, 0x5c, 0xa5, - 0x96, 0x56, 0x5d, 0xa3, 0x97, 0x56, 0x5d, 0xa5, 0x96, 0x56, 0x5e, 0xa3, - 0x97, 0x56, 0x5f, 0xa5, 0x96, 0x56, 0x60, 0xa3, 0x97, 0x56, 0x60, 0xa5, - 0x96, 0x56, 0x61, 0xa3, 0x97, 0x56, 0x62, 0xa5, 0x96, 0x56, 0x63, 0xa3, - 0x97, 0x56, 0x63, 0xa5, 0x96, 0x56, 0x64, 0xa3, 0x97, 0x56, 0x65, 0xa5, - 0x96, 0x56, 0x66, 0xa3, 0x97, 0x56, 0x66, 0xa5, 0x96, 0x56, 0x67, 0xa3, - 0x97, 0x56, 0x68, 0xa5, 0x96, 0x56, 0x68, 0xa3, 0x97, 0x56, 0x69, 0xa5, - 0x96, 0x56, 0x6a, 0xa3, 0x97, 0x56, 0x6a, 0xa1, 0x97, 0x56, 0x6b, 0xa3, - 0x97, 0x56, 0x6c, 0xa1, 0x97, 0x56, 0x6c, 0xa3, 0x97, 0x56, 0x6d, 0xa1, - 0x97, 0x56, 0x6e, 0xa3, 0x97, 0x56, 0x6e, 0xa1, 0x97, 0x56, 0x6f, 0xa3, - 0x97, 0x56, 0x70, 0xa1, 0x97, 0x56, 0x70, 0xa3, 0x97, 0x56, 0x71, 0xa1, - 0x97, 0x56, 0x72, 0xa3, 0x97, 0x56, 0x72, 0xa1, 0x97, 0x56, 0x73, 0xa3, - 0x97, 0x56, 0x73, 0xa1, 0x97, 0x56, 0x74, 0xa3, 0x97, 0x56, 0x75, 0xa1, - 0x97, 0x56, 0x75, 0xa3, 0x97, 0x56, 0x76, 0xa1, 0x97, 0x56, 0x76, 0xa3, - 0x97, 0x56, 0x77, 0xa1, 0x97, 0x56, 0x78, 0xa3, 0x97, 0x56, 0x78, 0xa1, - 0x97, 0x56, 0x79, 0xa3, 0x97, 0x56, 0x79, 0xa1, 0x97, 0x56, 0x7a, 0xa3, - 0x97, 0x56, 0x7a, 0xa1, 0x97, 0x56, 0x7b, 0xa3, 0x97, 0x56, 0x7c, 0xa1, - 0x97, 0x56, 0x7c, 0xa3, 0x97, 0x56, 0x7d, 0xa1, 0x97, 0x56, 0x7d, 0xa3, - 0x97, 0x56, 0x7e, 0xa1, 0x97, 0x56, 0x7e, 0xa3, 0x97, 0x56, 0x7f, 0xa1, - 0x97, 0x56, 0x7f, 0xa3, 0x97, 0x56, 0x80, 0xa1, 0x97, 0x56, 0x81, 0x9d, - 0x98, 0x56, 0x81, 0xa1, 0x97, 0x56, 0x82, 0x9d, 0x98, 0x56, 0x82, 0xa1, - 0x97, 0x56, 0x83, 0x9d, 0x98, 0x56, 0x83, 0xa1, 0x97, 0x56, 0x84, 0x9d, - 0x98, 0x56, 0x84, 0xa1, 0x97, 0x56, 0x85, 0x9d, 0x98, 0x56, 0x85, 0xa1, - 0x97, 0x56, 0x86, 0x9d, 0x98, 0x56, 0x86, 0xa1, 0x97, 0x56, 0x87, 0x9d, - 0x98, 0x56, 0x87, 0xa1, 0x97, 0x56, 0x88, 0x9d, 0x98, 0x56, 0x88, 0xa1, - 0x97, 0x56, 0x89, 0x9d, 0x98, 0x56, 0x89, 0xa1, 0x97, 0x56, 0x8a, 0x9d, - 0x98, 0x56, 0x8a, 0xa1, 0x97, 0x56, 0x8b, 0x9d, 0x98, 0x56, 0x8b, 0xa1, - 0x97, 0x56, 0x8c, 0x9d, 0x98, 0x56, 0x8c, 0xa1, 0x97, 0x56, 0x8d, 0x9d, - 0x98, 0x56, 0x8d, 0xa1, 0x97, 0x56, 0x8e, 0x9d, 0x98, 0x56, 0x8e, 0xa1, - 0x97, 0x56, 0x8e, 0x9d, 0x98, 0x56, 0x8f, 0xa1, 0x97, 0x56, 0x8f, 0x9d, - 0x98, 0x56, 0x90, 0xa1, 0x97, 0x56, 0x90, 0x9d, 0x98, 0x56, 0x91, 0x9d, - 0x98, 0x56, 0x91, 0x9d, 0x98, 0x56, 0x92, 0x9d, 0x98, 0x56, 0x92, 0x9d, - 0x98, 0x56, 0x93, 0x9d, 0x98, 0x56, 0x93, 0x9d, 0x98, 0x56, 0x94, 0x9d, - 0x98, 0x56, 0x94, 0x9d, 0x98, 0x56, 0x94, 0x9d, 0x98, 0x56, 0x95, 0x9d, - 0x98, 0x56, 0x95, 0x9d, 0x98, 0x56, 0x96, 0x9d, 0x98, 0x56, 0x96, 0x9d, - 0x98, 0x56, 0x97, 0x9d, 0x98, 0x56, 0x97, 0x9d, 0x98, 0x56, 0x98, 0x9d, - 0x98, 0x55, 0x97, 0x9d, 0x98, 0x56, 0x98, 0x9d, 0x98, 0x55, 0x97, 0x9d, - 0x99, 0x56, 0x98, 0x9d, 0x99, 0x55, 0x9b, 0x9d, 0x9a, 0x56, 0x9c, 0x9d, - 0x9a, 0x56, 0x9b, 0x9d, 0x9a, 0x56, 0x9c, 0x9d, 0x9b, 0x56, 0x9b, 0x9d, - 0x9b, 0x56, 0x9c, 0x9d, 0x9b, 0x56, 0x9c, 0x9d, 0x9b, 0x56, 0x9d, 0x9d, - 0x9b, 0x56, 0x9d, 0x9d, 0x9b, 0x56, 0x9d, 0x9d, 0x9b, 0x56, 0x9e, 0x9d, - 0x9b, 0x56, 0x9e, 0x9d, 0x9b, 0x56, 0x9f, 0x9d, 0x9b, 0x56, 0x9f, 0x9d, - 0x9b, 0x56, 0x9f, 0x9d, 0x9b, 0x56, 0xa0, 0x9d, 0x9b, 0x56, 0xa0, 0x9d, - 0x9b, 0x56, 0xa1, 0x9d, 0x9b, 0x56, 0xa1, 0x9d, 0x9b, 0x56, 0xa1, 0x9d, - 0x9b, 0x56, 0xa2, 0x9d, 0x9b, 0x56, 0xa2, 0x9a, 0x9c, 0x56, 0xa3, 0x9d, - 0x9b, 0x56, 0xa3, 0x9a, 0x9c, 0x56, 0xa3, 0x9d, 0x9b, 0x56, 0xa4, 0x9a, - 0x9c, 0x56, 0xa4, 0x9d, 0x9b, 0x56, 0xa5, 0x9a, 0x9c, 0x56, 0xa5, 0x9d, - 0x9b, 0x56, 0xa5, 0x9a, 0x9c, 0x56, 0xa6, 0x9d, 0x9b, 0x56, 0xa6, 0x9a, - 0x9c, 0x56, 0xa6, 0x9d, 0x9b, 0x56, 0xa7, 0x9a, 0x9c, 0x56, 0xa7, 0x9d, - 0x9b, 0x56, 0xa8, 0x9a, 0x9c, 0x56, 0xa8, 0x8f, 0xa8, 0x56, 0xa8, 0x8f, - 0xa8, 0x56, 0xa9, 0x90, 0xac, 0x56, 0xa9, 0x90, 0xad, 0x56, 0xaa, 0x90, - 0xac, 0x56, 0xaa, 0x90, 0xad, 0x56, 0xaa, 0x90, 0xac, 0x56, 0xab, 0x90, - 0xad, 0x56, 0xab, 0x90, 0xac, 0x56, 0xab, 0x90, 0xad, 0x56, 0xac, 0x90, - 0xac, 0x56, 0xac, 0x90, 0xad, 0x56, 0xac, 0x90, 0xac, 0x56, 0xad, 0x91, - 0xb0, 0x56, 0xad, 0x91, 0xb1, 0x56, 0xae, 0x91, 0xb0, 0x56, 0xae, 0x91, - 0xb1, 0x56, 0xae, 0x91, 0xb0, 0x56, 0xaf, 0x91, 0xb1, 0x56, 0xaf, 0x91, - 0xb0, 0x56, 0xaf, 0x91, 0xb1, 0x56, 0xb0, 0x91, 0xb0, 0x56, 0xb0, 0x91, - 0xb1, 0x56, 0xb0, 0x91, 0xb0, 0x56, 0xb1, 0x92, 0xb4, 0x56, 0xb1, 0x92, - 0xb5, 0x56, 0xb2, 0x92, 0xb4, 0x56, 0xb2, 0x92, 0xb5, 0x56, 0xb2, 0x92, - 0xb4, 0x56, 0xb3, 0x92, 0xb5, 0x56, 0xb3, 0x92, 0xb4, 0x56, 0xb3, 0x92, - 0xb5, 0x56, 0xb4, 0x92, 0xb4, 0x56, 0xb4, 0x92, 0xb5, 0x56, 0xb4, 0x92, - 0xb4, 0x56, 0xb5, 0x92, 0xb5, 0x56, 0xb5, 0x92, 0xb5, 0x56, 0xb5, 0x93, - 0xb8, 0x56, 0xb6, 0x93, 0xb8, 0x56, 0xb6, 0x93, 0xb8, 0x56, 0xb6, 0x93, - 0xb8, 0x56, 0xb7, 0x93, 0xb8, 0x56, 0xb7, 0x93, 0xb8, 0x56, 0xb7, 0x93, - 0xb8, 0x56, 0xb8, 0x93, 0xb8, 0x56, 0xb8, 0x93, 0xb8, 0x56, 0xb8, 0x93, - 0xb8, 0x56, 0xb9, 0x94, 0xbc, 0x56, 0xb9, 0x94, 0xbc, 0x56, 0xb9, 0x94, - 0xbc, 0x56, 0xba, 0x94, 0xbc, 0x56, 0xba, 0x94, 0xbc, 0x56, 0xba, 0x94, - 0xbc, 0x56, 0xbb, 0x94, 0xbc, 0x56, 0xbb, 0x94, 0xbc, 0x56, 0xbb, 0x94, - 0xbc, 0x56, 0xbc, 0x94, 0xbc, 0x56, 0xbc, 0x94, 0xbc, 0x56, 0xbc, 0x94, - 0xbc, 0x56, 0xbd, 0x95, 0xbf, 0x56, 0xbd, 0x95, 0xc0, 0x56, 0xbd, 0x95, - 0xbf, 0x56, 0xbe, 0x95, 0xc0, 0x56, 0xbe, 0x95, 0xbf, 0x56, 0xbe, 0x95, - 0xc0, 0x56, 0xbf, 0x95, 0xbf, 0x56, 0xbf, 0x95, 0xc0, 0x56, 0xbf, 0x95, - 0xbf, 0x56, 0xc0, 0x95, 0xc0, 0x56, 0xc0, 0x95, 0xc0, 0x56, 0xc0, 0x96, - 0xc3, 0x56, 0xc1, 0x96, 0xc3, 0x56, 0xc1, 0x96, 0xc3, 0x56, 0xc1, 0x96, - 0xc3, 0x56, 0xc1, 0x96, 0xc3, 0x56, 0xc2, 0x96, 0xc3, 0x56, 0xc2, 0x96, - 0xc3, 0x56, 0xc2, 0x96, 0xc3, 0x56, 0xc3, 0x96, 0xc3, 0x56, 0xc3, 0x96, - 0xc3, 0x56, 0xc3, 0x96, 0xc3, 0x56, 0xc4, 0x96, 0xc4, 0x56, 0xc4, 0x97, - 0xc6, 0x56, 0xc4, 0x97, 0xc7, 0x56, 0xc5, 0x97, 0xc6, 0x56, 0xc5, 0x97, - 0xc7, 0x56, 0xc5, 0x97, 0xc6, 0x56, 0xc6, 0x97, 0xc7, 0x56, 0xc6, 0x97, - 0xc6, 0x56, 0xc6, 0x97, 0xc7, 0x56, 0xc6, 0x97, 0xc6, 0x56, 0xc7, 0x97, - 0xc7, 0x56, 0xc7, 0x97, 0xc7, 0x56, 0xc7, 0x97, 0xc7, 0x56, 0xc8, 0x97, - 0xc8, 0x56, 0xc8, 0x98, 0xca, 0x56, 0xc8, 0x98, 0xca, 0x56, 0xc9, 0x98, - 0xca, 0x56, 0xc9, 0x98, 0xca, 0x56, 0xc9, 0x98, 0xca, 0x56, 0xc9, 0x98, - 0xca, 0x56, 0xca, 0x98, 0xca, 0x56, 0xca, 0x98, 0xca, 0x56, 0xca, 0x98, - 0xca, 0x56, 0xcb, 0x98, 0xcb, 0x56, 0xcb, 0x98, 0xcb, 0x56, 0xcb, 0x98, - 0xcd, 0x56, 0xcc, 0x98, 0xcd, 0x56, 0xcc, 0x98, 0xcd, 0x56, 0xcc, 0x98, - 0xcd, 0x56, 0xcc, 0x98, 0xcd, 0x56, 0xcd, 0x98, 0xcd, 0x56, 0xcd, 0x98, - 0xcd, 0x56, 0xcd, 0x98, 0xcd, 0x56, 0xce, 0x98, 0xce, 0x56, 0xce, 0x98, - 0xce, 0x56, 0xce, 0x98, 0xce, 0x56, 0xce, 0x99, 0xd0, 0x56, 0xcf, 0x99, - 0xd0, 0x56, 0xcf, 0x9e, 0xd2, 0x56, 0xcf, 0x9d, 0xd2, 0x56, 0xd0, 0x9e, - 0xd2, 0x56, 0xd0, 0x9d, 0xd2, 0x56, 0xd0, 0x9e, 0xd2, 0x56, 0xd0, 0x9d, - 0xd2, 0x56, 0xd1, 0x9e, 0xd2, 0x56, 0xd1, 0x9d, 0xd2, 0x56, 0xd1, 0x9e, - 0xd2, 0x56, 0xd2, 0x9d, 0xd2, 0x56, 0xd2, 0x9d, 0xd2, 0x56, 0xd2, 0x9d, - 0xd2, 0x56, 0xd2, 0x9d, 0xd2, 0x56, 0xd2, 0x9d, 0xd3, 0x56, 0xd2, 0x9d, - 0xd3, 0x56, 0xd2, 0x9d, 0xd3, 0x56, 0xd2, 0x9d, 0xd4, 0x56, 0xd2, 0x9d, - 0xd4, 0x56, 0xd2, 0x9d, 0xd4, 0x56, 0xd2, 0x9d, 0xd4, 0x53, 0xd2, 0x9d, - 0xd5, 0x56, 0xd2, 0x9d, 0xd5, 0x53, 0xd2, 0x9d, 0xd5, 0x56, 0xd2, 0x9d, - 0xd6, 0x53, 0xd2, 0x9d, 0xd6, 0x56, 0xd2, 0x9d, 0xd6, 0x53, 0xd2, 0x9d, - 0xd6, 0x56, 0xd2, 0x9d, 0xd7, 0x53, 0xd2, 0x9d, 0xd7, 0x56, 0xd2, 0x9d, - 0xd7, 0x53, 0xd9, 0x9d, 0xd7, 0x4d, 0xd9, 0x9d, 0xd8, 0x4d, 0xd9, 0x9d, - 0xd8, 0x4d, 0xd9, 0x9d, 0xd8, 0x4d, 0xd9, 0x9d, 0xd9, 0x4d, 0xd9, 0x9d, - 0xd9, 0x4d, 0xd9, 0x9d, 0xd9, 0x4d, 0xdb, 0x9d, 0xd9, 0x4e, 0xdc, 0x9d, - 0xda, 0x4e, 0xdb, 0x9d, 0xda, 0x4e, 0xdc, 0x9d, 0xda, 0x4e, 0xdb, 0x9d, - 0xda, 0x4e, 0xdc, 0x9d, 0xdb, 0x4e, 0xdb, 0x9d, 0xdb, 0x4e, 0xdc, 0x9d, - 0xdb, 0x4e, 0xdb, 0x9d, 0xdb, 0x4e, 0xdc, 0x9d, 0xdc, 0x4e, 0xdc, 0x9d, - 0xdc, 0x4e, 0xdc, 0x9d, 0xdc, 0x4e, 0xde, 0x9d, 0xdd, 0x4f, 0xde, 0x9d, - 0xdd, 0x4f, 0xde, 0x9d, 0xdd, 0x4f, 0xde, 0x9d, 0xdd, 0x4f, 0xde, 0x9d, - 0xde, 0x4f, 0xde, 0x9d, 0xde, 0x4f, 0xde, 0x9d, 0xde, 0x4f, 0xde, 0x9d, - 0xde, 0x4f, 0xdf, 0x9d, 0xdf, 0x4f, 0xe1, 0x9d, 0xdf, 0x50, 0xe1, 0x9d, - 0xdf, 0x50, 0xe1, 0x9d, 0xdf, 0x50, 0xe1, 0x9d, 0xe0, 0x50, 0xe1, 0x9d, - 0xe0, 0x50, 0xe1, 0x9d, 0xe0, 0x50, 0xe1, 0x9d, 0xe1, 0x50, 0xe1, 0x9d, - 0xe1, 0x50, 0xe1, 0x9d, 0xe1, 0x50, 0xe3, 0x9d, 0xe1, 0x51, 0xe3, 0x9d, - 0xe2, 0x51, 0xe3, 0x9d, 0xe2, 0x51, 0xe3, 0x9d, 0xe2, 0x51, 0xe3, 0x9d, - 0xe2, 0x51, 0xe3, 0x9d, 0xe3, 0x51, 0xe3, 0x9d, 0xe3, 0x51, 0xe3, 0x9d, - 0xe3, 0x51, 0xe3, 0x9d, 0xe3, 0x51, 0xe4, 0x9d, 0xe4, 0x51, 0xe4, 0x9d, - 0xe4, 0x51, 0xe4, 0x9d, 0xe4, 0x51, 0xe5, 0x9d, 0xe4, 0x52, 0xe6, 0x9d, - 0xe5, 0x52, 0xe5, 0x9d, 0xe5, 0x52, 0xe6, 0x9d, 0xe5, 0x52, 0xe5, 0x9d, - 0xe5, 0x52, 0xe6, 0x9d, 0xe6, 0x52, 0xe6, 0x9d, 0xe6, 0x52, 0xe6, 0x9d, - 0xe6, 0x52, 0xe6, 0x9d, 0xe6, 0x52, 0xe8, 0x9d, 0xe7, 0x53, 0xe8, 0x9d, - 0xe7, 0x53, 0xe8, 0x9d, 0xe7, 0x53, 0xe8, 0x9d, 0xe7, 0x53, 0xe8, 0x9d, - 0xe8, 0x53, 0xe8, 0x9d, 0xe8, 0x53, 0xe8, 0x9d, 0xe8, 0x53, 0xe8, 0x9d, - 0xe8, 0x53, 0xe9, 0x9d, 0xe9, 0x53, 0xe9, 0x9d, 0xe9, 0x53, 0xea, 0x9d, - 0xe9, 0x54, 0xea, 0x9d, 0xe9, 0x54, 0xea, 0x9d, 0xea, 0x54, 0xea, 0x9d, - 0xea, 0x54, 0xea, 0x9d, 0xea, 0x54, 0xea, 0x9d, 0xea, 0x54, 0xeb, 0x9d, - 0xeb, 0x54, 0xeb, 0x9d, 0xeb, 0x54, 0xeb, 0x9d, 0xeb, 0x54, 0xeb, 0x9d, - 0xeb, 0x54, 0xec, 0x9d, 0xec, 0x54, 0xec, 0x9d, 0xec, 0x55, 0xec, 0x9d, - 0xec, 0x55, 0xec, 0x9d, 0xec, 0x55, 0xec, 0x9d, 0xec, 0x55, 0xed, 0x9d, - 0xed, 0x55, 0xed, 0x9d, 0xed, 0x55, 0xed, 0x9d, 0xed, 0x55, 0xed, 0x9d, - 0xed, 0x55, 0xee, 0x9d, 0xee, 0x55, 0xee, 0x9d, 0xee, 0x55, 0xee, 0x9d, - 0xee, 0x55, 0xee, 0x9e, 0xee, 0x56, 0xef, 0x9e, 0xef, 0x56, 0xef, 0x9e, - 0xef, 0x56, 0xef, 0x9e, 0xef, 0x56, 0xef, 0x9e, 0xef, 0x56, 0xf0, 0x9e, - 0xf0, 0x56, 0xf0, 0x9e, 0xf0, 0x56, 0xf0, 0x9e, 0xf0, 0x56, 0xf0, 0x9e, - 0xf0, 0x56, 0xf1, 0x9e, 0xf1, 0x56, 0xf1, 0x9e, 0xf0, 0x56, 0xf1, 0x9e, - 0xf1, 0x56, 0xf1, 0x9f, 0xf1, 0x56, 0xf2, 0x9f, 0xf2, 0x56, 0xf2, 0x9f, - 0xf2, 0x56, 0xf2, 0x9f, 0xf2, 0x56, 0xf2, 0x9f, 0xf2, 0x56, 0xf2, 0x9f, - 0xf2, 0x56, 0xf3, 0x9f, 0xf3, 0x56, 0xf3, 0x9f, 0xf2, 0x56, 0xf3, 0x9f, - 0xf3, 0x56, 0xf3, 0x9f, 0xf2, 0x56, 0xf4, 0x9f, 0xf3, 0x56, 0xf4, 0xa0, - 0xf4, 0x56, 0xf4, 0xa0, 0xf4, 0x56, 0xf4, 0xa0, 0xf4, 0x56, 0xf5, 0xa0, - 0xf5, 0x56, 0xf5, 0xa0, 0xf5, 0x56, 0xf5, 0xa0, 0xf5, 0x56, 0xf5, 0xa0, - 0xf5, 0x56, 0xf5, 0xa0, 0xf5, 0x56, 0xf6, 0xa0, 0xf5, 0x56, 0xf6, 0xa1, - 0xf6, 0x56, 0xf6, 0xa1, 0xf6, 0x56, 0xf6, 0xa1, 0xf6, 0x56, 0xf7, 0xa1, - 0xf7, 0x56, 0xf7, 0xa1, 0xf7, 0x56, 0xf7, 0xa1, 0xf7, 0x56, 0xf7, 0xa1, - 0xf7, 0x56, 0xf8, 0xa1, 0xf7, 0x56, 0xf8, 0xa1, 0xf7, 0x56, 0xf8, 0xa1, - 0xf7, 0x56, 0xf8, 0xa1, 0xf8, 0x56, 0xf8, 0xa1, 0xf8, 0x56, 0xf9, 0xa1, - 0xf9, 0x56, 0xf9, 0xa1, 0xf9, 0x56, 0xf9, 0xa1, 0xf9, 0x56, 0xf9, 0xa1, - 0xf9, 0x56, 0xfa, 0xa1, 0xf9, 0x56, 0xfa, 0xa1, 0xf9, 0x56, 0xfa, 0xa1, - 0xf9, 0x56, 0xfa, 0xa1, 0xf9, 0x56, 0xfa, 0xa1, 0xf9, 0x56, 0xfb, 0xa2, - 0xfb, 0x56, 0xfb, 0xa2, 0xfb, 0x56, 0xfb, 0xa2, 0xfb, 0x56, 0xfb, 0xa2, - 0xfb, 0x56, 0xfc, 0xa2, 0xfb, 0x56, 0xfc, 0xa2, 0xfb, 0x56, 0xfc, 0xa2, - 0xfb, 0x56, 0xfc, 0xa2, 0xfb, 0x56, 0xfc, 0xa2, 0xfb, 0x56, 0xfd, 0xa2, - 0xfb, 0x56, 0xfd, 0xa2, 0xfb, 0x56, 0xfd, 0xa2, 0xfb, 0x56, 0xfd, 0xa2, - 0xfb, 0x56, 0xfe, 0xa2, 0xfb, 0x56, 0xfe, 0xa2, 0xfb, 0x56, 0xfe, 0xa3, - 0xfb, 0x56, 0xfe, 0xa3, 0xfc, 0x56, 0xfe, 0xa3, 0xfb, 0x56, 0xff, 0xa3, - 0xfc, 0x56, 0xff, 0xa3, 0xfb, 0x56, 0x03, 0xa6, 0x96, 0x57, 0x0a, 0xa8, - 0x96, 0x57, 0x0f, 0xa6, 0x96, 0x57, 0x14, 0xa8, 0x96, 0x57, 0x17, 0xa6, - 0x96, 0x57, 0x1b, 0xa8, 0x96, 0x57, 0x1e, 0xa6, 0x96, 0x57, 0x20, 0xa8, - 0x96, 0x57, 0x23, 0xa6, 0x96, 0x57, 0x25, 0xa8, 0x96, 0x57, 0x27, 0xa6, - 0x96, 0x57, 0x29, 0xa8, 0x96, 0x57, 0x2b, 0xa6, 0x96, 0x57, 0x2d, 0xa8, - 0x96, 0x57, 0x2f, 0xa6, 0x96, 0x57, 0x31, 0xa8, 0x96, 0x57, 0x32, 0xa6, - 0x96, 0x57, 0x34, 0xa8, 0x96, 0x57, 0x35, 0xa6, 0x96, 0x57, 0x37, 0xa8, - 0x96, 0x57, 0x38, 0xa6, 0x96, 0x57, 0x3a, 0xa8, 0x96, 0x57, 0x3b, 0xa6, - 0x96, 0x57, 0x3c, 0xa8, 0x96, 0x57, 0x3e, 0xa6, 0x96, 0x57, 0x3f, 0xa8, - 0x96, 0x57, 0x40, 0xa6, 0x96, 0x57, 0x42, 0xa8, 0x96, 0x57, 0x43, 0xa6, - 0x96, 0x57, 0x44, 0xa8, 0x96, 0x57, 0x45, 0xa6, 0x96, 0x57, 0x46, 0xa8, - 0x96, 0x57, 0x47, 0xa6, 0x96, 0x57, 0x48, 0xa8, 0x96, 0x57, 0x49, 0xa6, - 0x96, 0x57, 0x4a, 0xa8, 0x96, 0x57, 0x4b, 0xa6, 0x96, 0x57, 0x4c, 0xa3, - 0x97, 0x57, 0x4d, 0xa6, 0x96, 0x57, 0x4e, 0xa3, 0x97, 0x57, 0x4f, 0xa6, - 0x96, 0x57, 0x50, 0xa3, 0x97, 0x57, 0x51, 0xa6, 0x96, 0x57, 0x52, 0xa3, - 0x97, 0x57, 0x53, 0xa6, 0x96, 0x57, 0x54, 0xa3, 0x97, 0x57, 0x55, 0xa6, - 0x96, 0x57, 0x56, 0xa3, 0x97, 0x57, 0x57, 0xa6, 0x96, 0x57, 0x58, 0xa3, - 0x97, 0x57, 0x58, 0xa6, 0x96, 0x57, 0x59, 0xa3, 0x97, 0x57, 0x5a, 0xa6, - 0x96, 0x57, 0x5b, 0xa3, 0x97, 0x57, 0x5c, 0xa6, 0x96, 0x57, 0x5d, 0xa3, - 0x97, 0x57, 0x5d, 0xa6, 0x96, 0x57, 0x5e, 0xa3, 0x97, 0x57, 0x5f, 0xa6, - 0x96, 0x57, 0x60, 0xa3, 0x97, 0x57, 0x60, 0xa6, 0x96, 0x57, 0x61, 0xa3, - 0x97, 0x57, 0x62, 0xa6, 0x96, 0x57, 0x63, 0xa3, 0x97, 0x57, 0x63, 0xa6, - 0x96, 0x57, 0x64, 0xa3, 0x97, 0x57, 0x65, 0xa0, 0x97, 0x57, 0x66, 0xa3, - 0x97, 0x57, 0x66, 0xa0, 0x97, 0x57, 0x67, 0xa3, 0x97, 0x57, 0x68, 0xa0, - 0x97, 0x57, 0x68, 0xa3, 0x97, 0x57, 0x69, 0xa0, 0x97, 0x57, 0x6a, 0xa3, - 0x97, 0x57, 0x6a, 0xa0, 0x97, 0x57, 0x6b, 0xa3, 0x97, 0x57, 0x6c, 0xa0, - 0x97, 0x57, 0x6c, 0xa3, 0x97, 0x57, 0x6d, 0xa0, 0x97, 0x57, 0x6e, 0xa3, - 0x97, 0x57, 0x6e, 0xa0, 0x97, 0x57, 0x6f, 0xa3, 0x97, 0x57, 0x70, 0xa0, - 0x97, 0x57, 0x70, 0xa3, 0x97, 0x57, 0x71, 0xa0, 0x97, 0x57, 0x72, 0xa3, - 0x97, 0x57, 0x72, 0xa0, 0x97, 0x57, 0x73, 0xa3, 0x97, 0x57, 0x73, 0xa0, - 0x97, 0x57, 0x74, 0xa3, 0x97, 0x57, 0x75, 0xa0, 0x97, 0x57, 0x75, 0xa3, - 0x97, 0x57, 0x76, 0xa0, 0x97, 0x57, 0x76, 0xa3, 0x97, 0x57, 0x77, 0xa0, - 0x97, 0x57, 0x78, 0xa3, 0x97, 0x57, 0x78, 0xa0, 0x97, 0x57, 0x79, 0xa3, - 0x97, 0x57, 0x79, 0xa0, 0x97, 0x57, 0x7a, 0xa3, 0x97, 0x57, 0x7a, 0xa0, - 0x97, 0x57, 0x7b, 0xa3, 0x97, 0x57, 0x7c, 0xa0, 0x97, 0x57, 0x7c, 0xa3, - 0x97, 0x57, 0x7d, 0xa0, 0x97, 0x57, 0x7d, 0xa3, 0x97, 0x57, 0x7e, 0xa0, - 0x97, 0x57, 0x7e, 0xa3, 0x97, 0x57, 0x7f, 0xa0, 0x97, 0x57, 0x7f, 0xa3, - 0x97, 0x57, 0x80, 0xa0, 0x97, 0x57, 0x81, 0x9e, 0x98, 0x57, 0x81, 0xa0, - 0x97, 0x57, 0x82, 0x9e, 0x98, 0x57, 0x82, 0xa0, 0x97, 0x57, 0x83, 0x9e, - 0x98, 0x57, 0x83, 0xa0, 0x97, 0x57, 0x84, 0x9e, 0x98, 0x57, 0x84, 0xa0, - 0x97, 0x57, 0x85, 0x9e, 0x98, 0x57, 0x85, 0xa0, 0x97, 0x57, 0x86, 0x9e, - 0x98, 0x57, 0x86, 0xa0, 0x97, 0x57, 0x87, 0x9e, 0x98, 0x57, 0x87, 0xa0, - 0x97, 0x57, 0x88, 0x9e, 0x98, 0x57, 0x88, 0xa0, 0x97, 0x57, 0x89, 0x9e, - 0x98, 0x57, 0x89, 0xa0, 0x97, 0x57, 0x8a, 0x9e, 0x98, 0x57, 0x8a, 0xa0, - 0x97, 0x57, 0x8b, 0x9e, 0x98, 0x57, 0x8b, 0xa0, 0x97, 0x57, 0x8c, 0x9e, - 0x98, 0x57, 0x8c, 0xa0, 0x97, 0x57, 0x8d, 0x9e, 0x98, 0x57, 0x8d, 0xa0, - 0x97, 0x57, 0x8e, 0x9e, 0x98, 0x57, 0x8e, 0xa0, 0x97, 0x57, 0x8e, 0x9e, - 0x98, 0x57, 0x8f, 0xa0, 0x97, 0x57, 0x8f, 0x9e, 0x98, 0x57, 0x90, 0xa0, - 0x97, 0x57, 0x90, 0x9e, 0x98, 0x57, 0x91, 0xa0, 0x97, 0x57, 0x91, 0x9e, - 0x98, 0x57, 0x92, 0xa0, 0x97, 0x57, 0x92, 0x9e, 0x98, 0x57, 0x93, 0xa0, - 0x97, 0x57, 0x93, 0x9e, 0x98, 0x57, 0x94, 0xa0, 0x97, 0x57, 0x94, 0x9e, - 0x98, 0x57, 0x94, 0x9e, 0x98, 0x57, 0x95, 0x9e, 0x98, 0x57, 0x95, 0x9e, - 0x98, 0x57, 0x96, 0x9e, 0x98, 0x57, 0x96, 0x9e, 0x98, 0x57, 0x97, 0x9e, - 0x98, 0x57, 0x97, 0x9e, 0x98, 0x57, 0x98, 0x9e, 0x98, 0x56, 0x97, 0x9e, - 0x98, 0x57, 0x98, 0x9e, 0x98, 0x56, 0x97, 0x9e, 0x99, 0x57, 0x98, 0x9e, - 0x99, 0x56, 0x9b, 0x9e, 0x9a, 0x57, 0x9c, 0x9e, 0x9a, 0x57, 0x9b, 0x9e, - 0x9a, 0x57, 0x9c, 0x9e, 0x9b, 0x57, 0x9b, 0x9d, 0x9b, 0x57, 0x9c, 0x9e, - 0x9b, 0x57, 0x9c, 0x9d, 0x9b, 0x57, 0x9d, 0x9e, 0x9b, 0x57, 0x9d, 0x9d, - 0x9b, 0x57, 0x9d, 0x9e, 0x9b, 0x57, 0x9e, 0x9d, 0x9b, 0x57, 0x9e, 0x9e, - 0x9b, 0x57, 0x9f, 0x9d, 0x9b, 0x57, 0x9f, 0x9e, 0x9b, 0x57, 0x9f, 0x9d, - 0x9b, 0x57, 0xa0, 0x9e, 0x9b, 0x57, 0xa0, 0x9d, 0x9b, 0x57, 0xa1, 0x9e, - 0x9b, 0x57, 0xa1, 0x9d, 0x9b, 0x57, 0xa1, 0x9e, 0x9b, 0x57, 0xa2, 0x9d, - 0x9b, 0x57, 0xa2, 0x9a, 0x9c, 0x57, 0xa3, 0x9d, 0x9b, 0x57, 0xa3, 0x9a, - 0x9c, 0x57, 0xa3, 0x9d, 0x9b, 0x57, 0xa4, 0x9a, 0x9c, 0x57, 0xa4, 0x9d, - 0x9b, 0x57, 0xa5, 0x9a, 0x9c, 0x57, 0xa5, 0x9d, 0x9b, 0x57, 0xa5, 0x9a, - 0x9c, 0x57, 0xa6, 0x9d, 0x9b, 0x57, 0xa6, 0x9a, 0x9c, 0x57, 0xa6, 0x9d, - 0x9b, 0x57, 0xa7, 0x9a, 0x9c, 0x57, 0xa7, 0x9d, 0x9b, 0x57, 0xa8, 0x9a, - 0x9c, 0x57, 0xa8, 0x9d, 0x9b, 0x57, 0xa8, 0x90, 0xab, 0x57, 0xa9, 0x90, - 0xaa, 0x57, 0xa9, 0x90, 0xab, 0x57, 0xaa, 0x90, 0xaa, 0x57, 0xaa, 0x90, - 0xab, 0x57, 0xaa, 0x90, 0xaa, 0x57, 0xab, 0x91, 0xae, 0x57, 0xab, 0x91, - 0xaf, 0x57, 0xab, 0x91, 0xae, 0x57, 0xac, 0x91, 0xaf, 0x57, 0xac, 0x91, - 0xae, 0x57, 0xac, 0x91, 0xaf, 0x57, 0xad, 0x91, 0xae, 0x57, 0xad, 0x91, - 0xaf, 0x57, 0xae, 0x91, 0xae, 0x57, 0xae, 0x91, 0xaf, 0x57, 0xae, 0x91, - 0xae, 0x57, 0xaf, 0x92, 0xb2, 0x57, 0xaf, 0x92, 0xb3, 0x57, 0xaf, 0x92, - 0xb2, 0x57, 0xb0, 0x92, 0xb3, 0x57, 0xb0, 0x92, 0xb2, 0x57, 0xb0, 0x92, - 0xb3, 0x57, 0xb1, 0x92, 0xb2, 0x57, 0xb1, 0x92, 0xb3, 0x57, 0xb2, 0x92, - 0xb2, 0x57, 0xb2, 0x92, 0xb3, 0x57, 0xb2, 0x92, 0xb2, 0x57, 0xb3, 0x93, - 0xb6, 0x57, 0xb3, 0x93, 0xb6, 0x57, 0xb3, 0x93, 0xb6, 0x57, 0xb4, 0x93, - 0xb6, 0x57, 0xb4, 0x93, 0xb6, 0x57, 0xb4, 0x93, 0xb6, 0x57, 0xb5, 0x93, - 0xb6, 0x57, 0xb5, 0x93, 0xb6, 0x57, 0xb5, 0x93, 0xb6, 0x57, 0xb6, 0x93, - 0xb6, 0x57, 0xb6, 0x93, 0xb6, 0x57, 0xb6, 0x93, 0xb6, 0x57, 0xb7, 0x93, - 0xb7, 0x57, 0xb7, 0x93, 0xb7, 0x57, 0xb7, 0x94, 0xba, 0x57, 0xb8, 0x94, - 0xba, 0x57, 0xb8, 0x94, 0xba, 0x57, 0xb8, 0x94, 0xba, 0x57, 0xb9, 0x94, - 0xba, 0x57, 0xb9, 0x94, 0xba, 0x57, 0xb9, 0x94, 0xba, 0x57, 0xba, 0x94, - 0xba, 0x57, 0xba, 0x94, 0xba, 0x57, 0xba, 0x94, 0xba, 0x57, 0xbb, 0x94, - 0xbb, 0x57, 0xbb, 0x94, 0xbe, 0x57, 0xbb, 0x94, 0xbe, 0x57, 0xbc, 0x94, - 0xbe, 0x57, 0xbc, 0x94, 0xbe, 0x57, 0xbc, 0x94, 0xbe, 0x57, 0xbd, 0x94, - 0xbe, 0x57, 0xbd, 0x94, 0xbe, 0x57, 0xbd, 0x94, 0xbe, 0x57, 0xbe, 0x94, - 0xbe, 0x57, 0xbe, 0x94, 0xbe, 0x57, 0xbe, 0x94, 0xbe, 0x57, 0xbf, 0x95, - 0xc1, 0x57, 0xbf, 0x95, 0xc1, 0x57, 0xbf, 0x95, 0xc1, 0x57, 0xc0, 0x95, - 0xc1, 0x57, 0xc0, 0x95, 0xc1, 0x57, 0xc0, 0x95, 0xc1, 0x57, 0xc1, 0x95, - 0xc1, 0x57, 0xc1, 0x95, 0xc1, 0x57, 0xc1, 0x95, 0xc1, 0x57, 0xc1, 0x95, - 0xc1, 0x57, 0xc2, 0x95, 0xc2, 0x57, 0xc2, 0x96, 0xc5, 0x57, 0xc2, 0x96, - 0xc5, 0x57, 0xc3, 0x96, 0xc5, 0x57, 0xc3, 0x96, 0xc5, 0x57, 0xc3, 0x96, - 0xc5, 0x57, 0xc4, 0x96, 0xc5, 0x57, 0xc4, 0x96, 0xc5, 0x57, 0xc4, 0x96, - 0xc5, 0x57, 0xc5, 0x96, 0xc5, 0x57, 0xc5, 0x96, 0xc5, 0x57, 0xc5, 0x96, - 0xc5, 0x57, 0xc6, 0x97, 0xc8, 0x57, 0xc6, 0x97, 0xc8, 0x57, 0xc6, 0x97, - 0xc8, 0x57, 0xc6, 0x97, 0xc8, 0x57, 0xc7, 0x97, 0xc8, 0x57, 0xc7, 0x97, - 0xc8, 0x57, 0xc7, 0x97, 0xc8, 0x57, 0xc8, 0x97, 0xc8, 0x57, 0xc8, 0x97, - 0xc8, 0x57, 0xc8, 0x97, 0xc8, 0x57, 0xc9, 0x97, 0xc9, 0x57, 0xc9, 0x97, - 0xc9, 0x57, 0xc9, 0x97, 0xc9, 0x57, 0xc9, 0x98, 0xcb, 0x57, 0xca, 0x98, - 0xcc, 0x57, 0xca, 0x98, 0xcb, 0x57, 0xca, 0x98, 0xcc, 0x57, 0xcb, 0x98, - 0xcb, 0x57, 0xcb, 0x98, 0xcc, 0x57, 0xcb, 0x98, 0xcb, 0x57, 0xcc, 0x98, - 0xcc, 0x57, 0xcc, 0x98, 0xcc, 0x57, 0xcc, 0x98, 0xcc, 0x57, 0xcc, 0x98, - 0xcc, 0x57, 0xcd, 0x99, 0xce, 0x57, 0xcd, 0x99, 0xcf, 0x57, 0xcd, 0x99, - 0xce, 0x57, 0xce, 0x99, 0xcf, 0x57, 0xce, 0x99, 0xce, 0x57, 0xce, 0x99, - 0xcf, 0x57, 0xce, 0x99, 0xce, 0x57, 0xcf, 0xa0, 0xd2, 0x57, 0xcf, 0x9f, - 0xd2, 0x57, 0xcf, 0x9e, 0xd2, 0x57, 0xd0, 0x9f, 0xd2, 0x57, 0xd0, 0x9e, - 0xd2, 0x57, 0xd0, 0x9f, 0xd2, 0x57, 0xd0, 0x9e, 0xd2, 0x57, 0xd1, 0x9f, - 0xd2, 0x57, 0xd1, 0x9e, 0xd2, 0x57, 0xd1, 0x9f, 0xd2, 0x57, 0xd2, 0x9e, - 0xd2, 0x57, 0xd2, 0x9e, 0xd2, 0x57, 0xd2, 0x9e, 0xd2, 0x57, 0xd2, 0x9e, - 0xd2, 0x57, 0xd2, 0x9e, 0xd3, 0x57, 0xd2, 0x9e, 0xd3, 0x57, 0xd2, 0x9e, - 0xd3, 0x57, 0xd2, 0x9e, 0xd4, 0x57, 0xd2, 0x9e, 0xd4, 0x57, 0xd2, 0x9e, - 0xd4, 0x57, 0xd2, 0x9e, 0xd4, 0x54, 0xd2, 0x9e, 0xd5, 0x57, 0xd2, 0x9e, - 0xd5, 0x54, 0xd2, 0x9e, 0xd5, 0x57, 0xd2, 0x9e, 0xd6, 0x54, 0xd2, 0x9e, - 0xd6, 0x57, 0xd2, 0x9e, 0xd6, 0x54, 0xd2, 0x9e, 0xd6, 0x57, 0xd2, 0x9e, - 0xd7, 0x54, 0xd2, 0x9e, 0xd7, 0x57, 0xd2, 0x9e, 0xd7, 0x54, 0xd2, 0x9e, - 0xd7, 0x57, 0xd8, 0x9e, 0xd8, 0x4d, 0xd8, 0x9e, 0xd8, 0x4d, 0xda, 0x9e, - 0xd8, 0x4e, 0xdb, 0x9e, 0xd9, 0x4e, 0xda, 0x9e, 0xd9, 0x4e, 0xdb, 0x9e, - 0xd9, 0x4e, 0xda, 0x9e, 0xd9, 0x4e, 0xdb, 0x9e, 0xda, 0x4e, 0xda, 0x9e, - 0xda, 0x4e, 0xdb, 0x9e, 0xda, 0x4e, 0xda, 0x9e, 0xda, 0x4e, 0xdd, 0x9e, - 0xdb, 0x4f, 0xdd, 0x9e, 0xdb, 0x4f, 0xdd, 0x9e, 0xdb, 0x4f, 0xdd, 0x9e, - 0xdb, 0x4f, 0xdd, 0x9e, 0xdc, 0x4f, 0xdd, 0x9e, 0xdc, 0x4f, 0xdd, 0x9e, - 0xdc, 0x4f, 0xdd, 0x9e, 0xdd, 0x4f, 0xdd, 0x9e, 0xdd, 0x4f, 0xdd, 0x9e, - 0xdd, 0x4f, 0xdd, 0x9e, 0xdd, 0x4f, 0xdf, 0x9e, 0xde, 0x50, 0xdf, 0x9e, - 0xde, 0x50, 0xdf, 0x9e, 0xde, 0x50, 0xdf, 0x9e, 0xde, 0x50, 0xdf, 0x9e, - 0xdf, 0x50, 0xdf, 0x9e, 0xdf, 0x50, 0xdf, 0x9e, 0xdf, 0x50, 0xdf, 0x9e, - 0xdf, 0x50, 0xe0, 0x9e, 0xe0, 0x50, 0xe0, 0x9e, 0xe0, 0x50, 0xe2, 0x9e, - 0xe0, 0x51, 0xe2, 0x9e, 0xe1, 0x51, 0xe2, 0x9e, 0xe1, 0x51, 0xe2, 0x9e, - 0xe1, 0x51, 0xe2, 0x9e, 0xe1, 0x51, 0xe2, 0x9e, 0xe2, 0x51, 0xe2, 0x9e, - 0xe2, 0x51, 0xe2, 0x9e, 0xe2, 0x51, 0xe2, 0x9e, 0xe2, 0x51, 0xe4, 0x9e, - 0xe3, 0x52, 0xe4, 0x9e, 0xe3, 0x52, 0xe4, 0x9e, 0xe3, 0x52, 0xe4, 0x9e, - 0xe3, 0x52, 0xe4, 0x9e, 0xe4, 0x52, 0xe4, 0x9e, 0xe4, 0x52, 0xe4, 0x9e, - 0xe4, 0x52, 0xe4, 0x9e, 0xe4, 0x52, 0xe5, 0x9e, 0xe5, 0x52, 0xe5, 0x9e, - 0xe5, 0x52, 0xe5, 0x9e, 0xe5, 0x52, 0xe6, 0x9e, 0xe5, 0x53, 0xe7, 0x9e, - 0xe6, 0x53, 0xe6, 0x9e, 0xe6, 0x53, 0xe7, 0x9e, 0xe6, 0x53, 0xe6, 0x9e, - 0xe6, 0x53, 0xe7, 0x9e, 0xe7, 0x53, 0xe7, 0x9e, 0xe7, 0x53, 0xe7, 0x9e, - 0xe7, 0x53, 0xe7, 0x9e, 0xe7, 0x53, 0xe8, 0x9e, 0xe8, 0x53, 0xe9, 0x9e, - 0xe8, 0x54, 0xe9, 0x9e, 0xe8, 0x54, 0xe9, 0x9e, 0xe8, 0x54, 0xe9, 0x9e, - 0xe9, 0x54, 0xe9, 0x9e, 0xe9, 0x54, 0xe9, 0x9e, 0xe9, 0x54, 0xe9, 0x9e, - 0xe9, 0x54, 0xea, 0x9e, 0xea, 0x54, 0xea, 0x9e, 0xea, 0x54, 0xeb, 0x9e, - 0xea, 0x55, 0xeb, 0x9e, 0xea, 0x55, 0xeb, 0x9e, 0xeb, 0x55, 0xeb, 0x9e, - 0xeb, 0x55, 0xeb, 0x9e, 0xeb, 0x55, 0xeb, 0x9e, 0xeb, 0x55, 0xec, 0x9e, - 0xec, 0x55, 0xec, 0x9e, 0xec, 0x55, 0xec, 0x9e, 0xec, 0x55, 0xec, 0x9e, - 0xec, 0x55, 0xec, 0x9e, 0xec, 0x55, 0xed, 0x9e, 0xed, 0x55, 0xed, 0x9e, - 0xed, 0x56, 0xee, 0x9e, 0xed, 0x56, 0xed, 0x9e, 0xed, 0x56, 0xee, 0x9e, - 0xee, 0x56, 0xee, 0x9e, 0xee, 0x56, 0xee, 0x9e, 0xee, 0x56, 0xee, 0x9e, - 0xee, 0x56, 0xef, 0x9e, 0xef, 0x56, 0xef, 0x9e, 0xef, 0x56, 0xef, 0x9e, - 0xef, 0x56, 0xef, 0x9e, 0xef, 0x56, 0xf0, 0x9f, 0xf0, 0x57, 0xf0, 0x9f, - 0xf0, 0x57, 0xf0, 0x9f, 0xf0, 0x57, 0xf0, 0x9f, 0xf0, 0x57, 0xf1, 0x9f, - 0xf1, 0x57, 0xf1, 0x9f, 0xf1, 0x57, 0xf1, 0x9f, 0xf1, 0x57, 0xf1, 0x9f, - 0xf1, 0x57, 0xf2, 0x9f, 0xf2, 0x57, 0xf2, 0x9f, 0xf1, 0x57, 0xf2, 0x9f, - 0xf2, 0x57, 0xf2, 0x9f, 0xf2, 0x57, 0xf2, 0x9f, 0xf2, 0x57, 0xf3, 0x9f, - 0xf3, 0x57, 0xf3, 0x9f, 0xf3, 0x57, 0xf3, 0x9f, 0xf3, 0x57, 0xf3, 0x9f, - 0xf3, 0x57, 0xf4, 0x9f, 0xf4, 0x57, 0xf4, 0x9f, 0xf4, 0x57, 0xf4, 0x9f, - 0xf4, 0x57, 0xf4, 0x9f, 0xf4, 0x57, 0xf5, 0x9f, 0xf4, 0x57, 0xf5, 0x9f, - 0xf4, 0x57, 0xf5, 0xa0, 0xf5, 0x57, 0xf5, 0xa0, 0xf5, 0x57, 0xf5, 0xa0, - 0xf5, 0x57, 0xf6, 0xa0, 0xf6, 0x57, 0xf6, 0xa0, 0xf6, 0x57, 0xf6, 0xa0, - 0xf6, 0x57, 0xf6, 0xa0, 0xf6, 0x57, 0xf7, 0xa0, 0xf6, 0x57, 0xf7, 0xa0, - 0xf6, 0x57, 0xf7, 0xa1, 0xf7, 0x57, 0xf7, 0xa1, 0xf7, 0x57, 0xf8, 0xa1, - 0xf8, 0x57, 0xf8, 0xa1, 0xf8, 0x57, 0xf8, 0xa1, 0xf8, 0x57, 0xf8, 0xa1, - 0xf8, 0x57, 0xf8, 0xa1, 0xf8, 0x57, 0xf9, 0xa1, 0xf8, 0x57, 0xf9, 0xa1, - 0xf8, 0x57, 0xf9, 0xa2, 0xf9, 0x57, 0xf9, 0xa2, 0xf9, 0x57, 0xfa, 0xa2, - 0xfa, 0x57, 0xfa, 0xa2, 0xfa, 0x57, 0xfa, 0xa2, 0xfa, 0x57, 0xfa, 0xa2, - 0xfa, 0x57, 0xfa, 0xa2, 0xfa, 0x57, 0xfb, 0xa2, 0xfa, 0x57, 0xfb, 0xa2, - 0xfa, 0x57, 0xfb, 0xa2, 0xfa, 0x57, 0xfb, 0xa2, 0xfa, 0x57, 0xfc, 0xa2, - 0xfa, 0x57, 0xfc, 0xa3, 0xfb, 0x57, 0xfc, 0xa3, 0xfc, 0x57, 0xfc, 0xa3, - 0xfb, 0x57, 0xfc, 0xa3, 0xfc, 0x57, 0xfd, 0xa3, 0xfb, 0x57, 0xfd, 0xa3, - 0xfc, 0x57, 0xfd, 0xa3, 0xfb, 0x57, 0xfd, 0xa3, 0xfc, 0x57, 0xfe, 0xa3, - 0xfb, 0x57, 0xfe, 0xa3, 0xfc, 0x57, 0xfe, 0xa3, 0xfb, 0x57, 0xfe, 0xa3, - 0xfc, 0x57, 0xfe, 0xa3, 0xfb, 0x57, 0xff, 0xa3, 0xfc, 0x57, 0xff, 0xa3, - 0xfb, 0x57, 0x03, 0xa5, 0x96, 0x57, 0x0a, 0xa5, 0x96, 0x57, 0x0f, 0xa5, - 0x96, 0x57, 0x14, 0xa8, 0x96, 0x57, 0x17, 0xa5, 0x96, 0x57, 0x1b, 0xa8, - 0x96, 0x57, 0x1e, 0xa5, 0x96, 0x57, 0x20, 0xa8, 0x96, 0x57, 0x23, 0xa5, - 0x96, 0x57, 0x25, 0xa8, 0x96, 0x57, 0x27, 0xa5, 0x96, 0x57, 0x29, 0xa8, - 0x96, 0x57, 0x2b, 0xa5, 0x96, 0x57, 0x2d, 0xa8, 0x96, 0x57, 0x2f, 0xa5, - 0x96, 0x57, 0x31, 0xa8, 0x96, 0x57, 0x32, 0xa5, 0x96, 0x57, 0x34, 0xa8, - 0x96, 0x57, 0x35, 0xa5, 0x96, 0x57, 0x37, 0xa8, 0x96, 0x57, 0x38, 0xa5, - 0x96, 0x57, 0x3a, 0xa8, 0x96, 0x57, 0x3b, 0xa5, 0x96, 0x57, 0x3c, 0xa8, - 0x96, 0x57, 0x3e, 0xa5, 0x96, 0x57, 0x3f, 0xa3, 0x97, 0x57, 0x40, 0xa5, - 0x96, 0x57, 0x42, 0xa3, 0x97, 0x57, 0x43, 0xa5, 0x96, 0x57, 0x44, 0xa3, - 0x97, 0x57, 0x45, 0xa5, 0x96, 0x57, 0x46, 0xa3, 0x97, 0x57, 0x47, 0xa5, - 0x96, 0x57, 0x48, 0xa3, 0x97, 0x57, 0x49, 0xa5, 0x96, 0x57, 0x4a, 0xa3, - 0x97, 0x57, 0x4b, 0xa5, 0x96, 0x57, 0x4c, 0xa3, 0x97, 0x57, 0x4d, 0xa5, - 0x96, 0x57, 0x4e, 0xa3, 0x97, 0x57, 0x4f, 0xa5, 0x96, 0x57, 0x50, 0xa3, - 0x97, 0x57, 0x51, 0xa5, 0x96, 0x57, 0x52, 0xa3, 0x97, 0x57, 0x53, 0xa5, - 0x96, 0x57, 0x54, 0xa3, 0x97, 0x57, 0x55, 0xa5, 0x96, 0x57, 0x56, 0xa3, - 0x97, 0x57, 0x57, 0xa5, 0x96, 0x57, 0x58, 0xa3, 0x97, 0x57, 0x58, 0xa5, - 0x96, 0x57, 0x59, 0xa3, 0x97, 0x57, 0x5a, 0xa5, 0x96, 0x57, 0x5b, 0xa3, - 0x97, 0x57, 0x5c, 0xa5, 0x96, 0x57, 0x5d, 0xa3, 0x97, 0x57, 0x5d, 0xa5, - 0x96, 0x57, 0x5e, 0xa3, 0x97, 0x57, 0x5f, 0xa5, 0x96, 0x57, 0x60, 0xa3, - 0x97, 0x57, 0x60, 0xa5, 0x96, 0x57, 0x61, 0xa3, 0x97, 0x57, 0x62, 0xa5, - 0x96, 0x57, 0x63, 0xa3, 0x97, 0x57, 0x63, 0xa5, 0x96, 0x57, 0x64, 0xa3, - 0x97, 0x57, 0x65, 0xa5, 0x96, 0x57, 0x66, 0xa3, 0x97, 0x57, 0x66, 0xa5, - 0x96, 0x57, 0x67, 0xa3, 0x97, 0x57, 0x68, 0xa5, 0x96, 0x57, 0x68, 0xa3, - 0x97, 0x57, 0x69, 0xa5, 0x96, 0x57, 0x6a, 0xa3, 0x97, 0x57, 0x6a, 0xa5, - 0x96, 0x57, 0x6b, 0xa3, 0x97, 0x57, 0x6c, 0xa5, 0x96, 0x57, 0x6c, 0xa3, - 0x97, 0x57, 0x6d, 0xa5, 0x96, 0x57, 0x6e, 0xa3, 0x97, 0x57, 0x6e, 0xa5, - 0x96, 0x57, 0x6f, 0xa3, 0x97, 0x57, 0x70, 0xa5, 0x96, 0x57, 0x70, 0xa3, - 0x97, 0x57, 0x71, 0xa5, 0x96, 0x57, 0x72, 0xa3, 0x97, 0x57, 0x72, 0xa1, - 0x97, 0x57, 0x73, 0xa3, 0x97, 0x57, 0x73, 0xa1, 0x97, 0x57, 0x74, 0xa3, - 0x97, 0x57, 0x75, 0xa1, 0x97, 0x57, 0x75, 0xa3, 0x97, 0x57, 0x76, 0xa1, - 0x97, 0x57, 0x76, 0xa3, 0x97, 0x57, 0x77, 0xa1, 0x97, 0x57, 0x78, 0xa3, - 0x97, 0x57, 0x78, 0xa1, 0x97, 0x57, 0x79, 0xa3, 0x97, 0x57, 0x79, 0xa1, - 0x97, 0x57, 0x7a, 0xa3, 0x97, 0x57, 0x7a, 0xa1, 0x97, 0x57, 0x7b, 0xa3, - 0x97, 0x57, 0x7c, 0xa1, 0x97, 0x57, 0x7c, 0xa3, 0x97, 0x57, 0x7d, 0xa1, - 0x97, 0x57, 0x7d, 0xa3, 0x97, 0x57, 0x7e, 0xa1, 0x97, 0x57, 0x7e, 0xa3, - 0x97, 0x57, 0x7f, 0xa1, 0x97, 0x57, 0x7f, 0xa3, 0x97, 0x57, 0x80, 0xa1, - 0x97, 0x57, 0x81, 0xa3, 0x97, 0x57, 0x81, 0xa1, 0x97, 0x57, 0x82, 0xa3, - 0x97, 0x57, 0x82, 0xa1, 0x97, 0x57, 0x83, 0xa3, 0x97, 0x57, 0x83, 0xa1, - 0x97, 0x57, 0x84, 0xa3, 0x97, 0x57, 0x84, 0xa1, 0x97, 0x57, 0x85, 0xa3, - 0x97, 0x57, 0x85, 0xa1, 0x97, 0x57, 0x86, 0xa3, 0x97, 0x57, 0x86, 0xa1, - 0x97, 0x57, 0x87, 0x9e, 0x98, 0x57, 0x87, 0xa1, 0x97, 0x57, 0x88, 0x9e, - 0x98, 0x57, 0x88, 0xa1, 0x97, 0x57, 0x89, 0x9e, 0x98, 0x57, 0x89, 0xa1, - 0x97, 0x57, 0x8a, 0x9e, 0x98, 0x57, 0x8a, 0xa1, 0x97, 0x57, 0x8b, 0x9e, - 0x98, 0x57, 0x8b, 0xa1, 0x97, 0x57, 0x8c, 0x9e, 0x98, 0x57, 0x8c, 0xa1, - 0x97, 0x57, 0x8d, 0x9e, 0x98, 0x57, 0x8d, 0xa1, 0x97, 0x57, 0x8e, 0x9e, - 0x98, 0x57, 0x8e, 0xa1, 0x97, 0x57, 0x8e, 0x9e, 0x98, 0x57, 0x8f, 0xa1, - 0x97, 0x57, 0x8f, 0x9e, 0x98, 0x57, 0x90, 0xa1, 0x97, 0x57, 0x90, 0x9e, - 0x98, 0x57, 0x91, 0xa1, 0x97, 0x57, 0x91, 0x9e, 0x98, 0x57, 0x92, 0xa1, - 0x97, 0x57, 0x92, 0x9e, 0x98, 0x57, 0x93, 0xa1, 0x97, 0x57, 0x93, 0x9e, - 0x98, 0x57, 0x94, 0xa1, 0x97, 0x57, 0x94, 0x9e, 0x98, 0x57, 0x94, 0x9e, - 0x98, 0x57, 0x95, 0x9e, 0x98, 0x57, 0x95, 0x9e, 0x98, 0x57, 0x96, 0x9e, - 0x98, 0x57, 0x96, 0x9e, 0x98, 0x57, 0x97, 0x9e, 0x98, 0x57, 0x97, 0x9e, - 0x98, 0x57, 0x97, 0x9e, 0x98, 0x57, 0x97, 0x9e, 0x98, 0x57, 0x97, 0x9e, - 0x98, 0x57, 0x97, 0x9e, 0x99, 0x57, 0x98, 0x9e, 0x99, 0x55, 0x9b, 0x9e, - 0x9a, 0x57, 0x9c, 0x9e, 0x9a, 0x57, 0x9b, 0x9e, 0x9a, 0x57, 0x9c, 0x9e, - 0x9b, 0x57, 0x9b, 0x9e, 0x9a, 0x57, 0x9c, 0x9e, 0x9b, 0x57, 0x9c, 0x9e, - 0x9a, 0x57, 0x9d, 0x9e, 0x9b, 0x57, 0x9d, 0x9d, 0x9b, 0x57, 0x9d, 0x9e, - 0x9b, 0x57, 0x9e, 0x9d, 0x9b, 0x57, 0x9e, 0x9e, 0x9b, 0x57, 0x9f, 0x9d, - 0x9b, 0x57, 0x9f, 0x9e, 0x9b, 0x57, 0x9f, 0x9d, 0x9b, 0x57, 0xa0, 0x9e, - 0x9b, 0x57, 0xa0, 0x9d, 0x9b, 0x57, 0xa1, 0x9e, 0x9b, 0x57, 0xa1, 0x9d, - 0x9b, 0x57, 0xa1, 0x9e, 0x9b, 0x57, 0xa2, 0x9d, 0x9b, 0x57, 0xa2, 0x9e, - 0x9b, 0x57, 0xa3, 0x9d, 0x9b, 0x57, 0xa3, 0x9e, 0x9b, 0x57, 0xa3, 0x9d, - 0x9b, 0x57, 0xa4, 0x9e, 0x9b, 0x57, 0xa4, 0x9d, 0x9b, 0x57, 0xa5, 0x9e, - 0x9b, 0x57, 0xa5, 0x9d, 0x9b, 0x57, 0xa5, 0x9a, 0x9c, 0x57, 0xa6, 0x9d, - 0x9b, 0x57, 0xa6, 0x9a, 0x9c, 0x57, 0xa6, 0x9d, 0x9b, 0x57, 0xa7, 0x9a, - 0x9c, 0x57, 0xa7, 0x9d, 0x9b, 0x57, 0xa8, 0x9a, 0x9c, 0x57, 0xa8, 0x9c, - 0x9b, 0x57, 0xa8, 0x9a, 0x9c, 0x57, 0xa9, 0x90, 0xac, 0x57, 0xa9, 0x90, - 0xad, 0x57, 0xaa, 0x90, 0xac, 0x57, 0xaa, 0x90, 0xad, 0x57, 0xaa, 0x90, - 0xac, 0x57, 0xab, 0x90, 0xad, 0x57, 0xab, 0x90, 0xac, 0x57, 0xab, 0x90, - 0xad, 0x57, 0xac, 0x90, 0xac, 0x57, 0xac, 0x90, 0xad, 0x57, 0xac, 0x90, - 0xac, 0x57, 0xad, 0x91, 0xb0, 0x57, 0xad, 0x91, 0xb1, 0x57, 0xae, 0x91, - 0xb0, 0x57, 0xae, 0x91, 0xb1, 0x57, 0xae, 0x91, 0xb0, 0x57, 0xaf, 0x91, - 0xb1, 0x57, 0xaf, 0x91, 0xb0, 0x57, 0xaf, 0x91, 0xb1, 0x57, 0xb0, 0x91, - 0xb0, 0x57, 0xb0, 0x91, 0xb1, 0x57, 0xb0, 0x91, 0xb0, 0x57, 0xb1, 0x92, - 0xb4, 0x57, 0xb1, 0x92, 0xb5, 0x57, 0xb2, 0x92, 0xb4, 0x57, 0xb2, 0x92, - 0xb5, 0x57, 0xb2, 0x92, 0xb4, 0x57, 0xb3, 0x92, 0xb5, 0x57, 0xb3, 0x92, - 0xb4, 0x57, 0xb3, 0x92, 0xb5, 0x57, 0xb4, 0x92, 0xb4, 0x57, 0xb4, 0x92, - 0xb5, 0x57, 0xb4, 0x92, 0xb4, 0x57, 0xb5, 0x93, 0xb8, 0x57, 0xb5, 0x93, - 0xb8, 0x57, 0xb5, 0x93, 0xb8, 0x57, 0xb6, 0x93, 0xb8, 0x57, 0xb6, 0x93, - 0xb8, 0x57, 0xb6, 0x93, 0xb8, 0x57, 0xb7, 0x93, 0xb8, 0x57, 0xb7, 0x93, - 0xb8, 0x57, 0xb7, 0x93, 0xb8, 0x57, 0xb8, 0x93, 0xb8, 0x57, 0xb8, 0x93, - 0xb8, 0x57, 0xb8, 0x93, 0xb8, 0x57, 0xb9, 0x94, 0xbc, 0x57, 0xb9, 0x94, - 0xbc, 0x57, 0xb9, 0x94, 0xbc, 0x57, 0xba, 0x94, 0xbc, 0x57, 0xba, 0x94, - 0xbc, 0x57, 0xba, 0x94, 0xbc, 0x57, 0xbb, 0x94, 0xbc, 0x57, 0xbb, 0x94, - 0xbc, 0x57, 0xbb, 0x94, 0xbc, 0x57, 0xbc, 0x94, 0xbc, 0x57, 0xbc, 0x94, - 0xbc, 0x57, 0xbc, 0x94, 0xbc, 0x57, 0xbd, 0x95, 0xbf, 0x57, 0xbd, 0x95, - 0xc0, 0x57, 0xbd, 0x95, 0xbf, 0x57, 0xbe, 0x95, 0xc0, 0x57, 0xbe, 0x95, - 0xbf, 0x57, 0xbe, 0x95, 0xc0, 0x57, 0xbf, 0x95, 0xbf, 0x57, 0xbf, 0x95, - 0xc0, 0x57, 0xbf, 0x95, 0xbf, 0x57, 0xc0, 0x95, 0xc0, 0x57, 0xc0, 0x95, - 0xc0, 0x57, 0xc0, 0x96, 0xc3, 0x57, 0xc1, 0x96, 0xc3, 0x57, 0xc1, 0x96, - 0xc3, 0x57, 0xc1, 0x96, 0xc3, 0x57, 0xc1, 0x96, 0xc3, 0x57, 0xc2, 0x96, - 0xc3, 0x57, 0xc2, 0x96, 0xc3, 0x57, 0xc2, 0x96, 0xc3, 0x57, 0xc3, 0x96, - 0xc3, 0x57, 0xc3, 0x96, 0xc3, 0x57, 0xc3, 0x96, 0xc3, 0x57, 0xc4, 0x96, - 0xc4, 0x57, 0xc4, 0x97, 0xc6, 0x57, 0xc4, 0x97, 0xc7, 0x57, 0xc5, 0x97, - 0xc6, 0x57, 0xc5, 0x97, 0xc7, 0x57, 0xc5, 0x97, 0xc6, 0x57, 0xc6, 0x97, - 0xc7, 0x57, 0xc6, 0x97, 0xc6, 0x57, 0xc6, 0x97, 0xc7, 0x57, 0xc6, 0x97, - 0xc6, 0x57, 0xc7, 0x97, 0xc7, 0x57, 0xc7, 0x97, 0xc7, 0x57, 0xc7, 0x98, - 0xca, 0x57, 0xc8, 0x98, 0xca, 0x57, 0xc8, 0x98, 0xca, 0x57, 0xc8, 0x98, - 0xca, 0x57, 0xc9, 0x98, 0xca, 0x57, 0xc9, 0x98, 0xca, 0x57, 0xc9, 0x98, - 0xca, 0x57, 0xc9, 0x98, 0xca, 0x57, 0xca, 0x98, 0xca, 0x57, 0xca, 0x98, - 0xca, 0x57, 0xca, 0x98, 0xca, 0x57, 0xcb, 0x98, 0xcb, 0x57, 0xcb, 0x98, - 0xcb, 0x57, 0xcb, 0x98, 0xcd, 0x57, 0xcc, 0x98, 0xcd, 0x57, 0xcc, 0x98, - 0xcd, 0x57, 0xcc, 0x98, 0xcd, 0x57, 0xcc, 0x98, 0xcd, 0x57, 0xcd, 0x98, - 0xcd, 0x57, 0xcd, 0x98, 0xcd, 0x57, 0xcd, 0x98, 0xcd, 0x57, 0xce, 0x98, - 0xce, 0x57, 0xce, 0x98, 0xce, 0x57, 0xce, 0xa1, 0xd2, 0x57, 0xce, 0x9e, - 0xd2, 0x57, 0xcf, 0xa1, 0xd2, 0x57, 0xcf, 0x9e, 0xd2, 0x57, 0xcf, 0xa1, - 0xd2, 0x57, 0xd0, 0x9e, 0xd2, 0x57, 0xd0, 0x9e, 0xd2, 0x57, 0xd0, 0x9e, - 0xd2, 0x57, 0xd0, 0x9e, 0xd2, 0x57, 0xd1, 0x9e, 0xd2, 0x57, 0xd1, 0x9e, - 0xd2, 0x57, 0xd1, 0x9e, 0xd2, 0x57, 0xd2, 0x9e, 0xd2, 0x57, 0xd2, 0x9e, - 0xd2, 0x56, 0xd2, 0x9e, 0xd2, 0x57, 0xd2, 0x9e, 0xd2, 0x56, 0xd2, 0x9e, - 0xd3, 0x57, 0xd2, 0x9e, 0xd3, 0x56, 0xd2, 0x9e, 0xd3, 0x57, 0xd2, 0x9e, - 0xd4, 0x56, 0xd2, 0x9e, 0xd4, 0x57, 0xd2, 0x9e, 0xd4, 0x56, 0xd2, 0x9e, - 0xd4, 0x57, 0xd2, 0x9e, 0xd5, 0x56, 0xd2, 0x9e, 0xd5, 0x57, 0xd2, 0x9e, - 0xd5, 0x56, 0xd2, 0x9e, 0xd6, 0x57, 0xd2, 0x9e, 0xd6, 0x56, 0xd2, 0x9e, - 0xd6, 0x57, 0xd2, 0x9e, 0xd6, 0x56, 0xd2, 0x9e, 0xd7, 0x53, 0xd2, 0x9e, - 0xd7, 0x56, 0xd2, 0x9e, 0xd7, 0x53, 0xd2, 0x9e, 0xd7, 0x56, 0xd9, 0x9e, - 0xd8, 0x4d, 0xd9, 0x9e, 0xd8, 0x4d, 0xd9, 0x9e, 0xd8, 0x4d, 0xd9, 0x9e, - 0xd9, 0x4d, 0xd9, 0x9e, 0xd9, 0x4d, 0xd9, 0x9e, 0xd9, 0x4d, 0xdb, 0x9e, - 0xd9, 0x4e, 0xdc, 0x9e, 0xda, 0x4e, 0xdb, 0x9e, 0xda, 0x4e, 0xdc, 0x9e, - 0xda, 0x4e, 0xdb, 0x9e, 0xda, 0x4e, 0xdc, 0x9e, 0xdb, 0x4e, 0xdb, 0x9e, - 0xdb, 0x4e, 0xdc, 0x9e, 0xdb, 0x4e, 0xdb, 0x9e, 0xdb, 0x4e, 0xdc, 0x9e, - 0xdc, 0x4e, 0xde, 0x9e, 0xdc, 0x4f, 0xde, 0x9e, 0xdc, 0x4f, 0xde, 0x9e, - 0xdd, 0x4f, 0xde, 0x9e, 0xdd, 0x4f, 0xde, 0x9e, 0xdd, 0x4f, 0xde, 0x9e, - 0xdd, 0x4f, 0xde, 0x9e, 0xde, 0x4f, 0xde, 0x9e, 0xde, 0x4f, 0xde, 0x9e, - 0xde, 0x4f, 0xde, 0x9e, 0xde, 0x4f, 0xdf, 0x9e, 0xdf, 0x4f, 0xe1, 0x9e, - 0xdf, 0x50, 0xe1, 0x9e, 0xdf, 0x50, 0xe1, 0x9e, 0xdf, 0x50, 0xe1, 0x9e, - 0xe0, 0x50, 0xe1, 0x9e, 0xe0, 0x50, 0xe1, 0x9e, 0xe0, 0x50, 0xe1, 0x9e, - 0xe1, 0x50, 0xe1, 0x9e, 0xe1, 0x50, 0xe1, 0x9e, 0xe1, 0x50, 0xe3, 0x9e, - 0xe1, 0x51, 0xe3, 0x9e, 0xe2, 0x51, 0xe3, 0x9e, 0xe2, 0x51, 0xe3, 0x9e, - 0xe2, 0x51, 0xe3, 0x9e, 0xe2, 0x51, 0xe3, 0x9e, 0xe3, 0x51, 0xe3, 0x9e, - 0xe3, 0x51, 0xe3, 0x9e, 0xe3, 0x51, 0xe3, 0x9e, 0xe3, 0x51, 0xe4, 0x9e, - 0xe4, 0x51, 0xe5, 0x9e, 0xe4, 0x52, 0xe6, 0x9e, 0xe4, 0x52, 0xe5, 0x9e, - 0xe4, 0x52, 0xe6, 0x9e, 0xe5, 0x52, 0xe5, 0x9e, 0xe5, 0x52, 0xe6, 0x9e, - 0xe5, 0x52, 0xe5, 0x9e, 0xe5, 0x52, 0xe6, 0x9e, 0xe6, 0x52, 0xe6, 0x9e, - 0xe6, 0x52, 0xe6, 0x9e, 0xe6, 0x52, 0xe6, 0x9e, 0xe6, 0x52, 0xe8, 0x9e, - 0xe7, 0x53, 0xe8, 0x9e, 0xe7, 0x53, 0xe8, 0x9e, 0xe7, 0x53, 0xe8, 0x9e, - 0xe7, 0x53, 0xe8, 0x9e, 0xe8, 0x53, 0xe8, 0x9e, 0xe8, 0x53, 0xe8, 0x9e, - 0xe8, 0x53, 0xe8, 0x9e, 0xe8, 0x53, 0xe9, 0x9e, 0xe9, 0x53, 0xe9, 0x9e, - 0xe9, 0x53, 0xea, 0x9e, 0xe9, 0x54, 0xea, 0x9e, 0xe9, 0x54, 0xea, 0x9e, - 0xea, 0x54, 0xea, 0x9e, 0xea, 0x54, 0xea, 0x9e, 0xea, 0x54, 0xea, 0x9e, - 0xea, 0x54, 0xeb, 0x9e, 0xeb, 0x54, 0xeb, 0x9e, 0xeb, 0x54, 0xeb, 0x9e, - 0xeb, 0x54, 0xec, 0x9e, 0xeb, 0x55, 0xec, 0x9e, 0xec, 0x55, 0xec, 0x9e, - 0xec, 0x55, 0xec, 0x9e, 0xec, 0x55, 0xec, 0x9e, 0xec, 0x55, 0xec, 0x9e, - 0xec, 0x55, 0xed, 0x9e, 0xed, 0x55, 0xed, 0x9e, 0xed, 0x55, 0xed, 0x9e, - 0xed, 0x55, 0xed, 0x9e, 0xed, 0x55, 0xee, 0x9e, 0xee, 0x55, 0xee, 0x9e, - 0xee, 0x56, 0xef, 0x9e, 0xee, 0x56, 0xee, 0x9e, 0xee, 0x56, 0xef, 0x9e, - 0xef, 0x56, 0xef, 0x9e, 0xef, 0x56, 0xef, 0x9e, 0xef, 0x56, 0xef, 0x9e, - 0xef, 0x56, 0xf0, 0x9e, 0xf0, 0x56, 0xf0, 0x9e, 0xf0, 0x56, 0xf0, 0x9e, - 0xf0, 0x56, 0xf0, 0x9e, 0xf0, 0x56, 0xf1, 0x9e, 0xf1, 0x56, 0xf1, 0x9f, - 0xf1, 0x57, 0xf1, 0x9f, 0xf1, 0x57, 0xf1, 0x9f, 0xf1, 0x57, 0xf2, 0x9f, - 0xf2, 0x57, 0xf2, 0x9f, 0xf2, 0x57, 0xf2, 0x9f, 0xf2, 0x57, 0xf2, 0x9f, - 0xf2, 0x57, 0xf2, 0x9f, 0xf2, 0x57, 0xf3, 0x9f, 0xf3, 0x57, 0xf3, 0x9f, - 0xf2, 0x57, 0xf3, 0x9f, 0xf3, 0x57, 0xf3, 0xa0, 0xf3, 0x57, 0xf4, 0xa0, - 0xf4, 0x57, 0xf4, 0xa0, 0xf4, 0x57, 0xf4, 0xa0, 0xf4, 0x57, 0xf4, 0xa0, - 0xf4, 0x57, 0xf5, 0xa0, 0xf5, 0x57, 0xf5, 0xa0, 0xf5, 0x57, 0xf5, 0xa0, - 0xf5, 0x57, 0xf5, 0xa0, 0xf5, 0x57, 0xf5, 0xa0, 0xf5, 0x57, 0xf6, 0xa0, - 0xf5, 0x57, 0xf6, 0xa1, 0xf6, 0x57, 0xf6, 0xa1, 0xf6, 0x57, 0xf6, 0xa1, - 0xf6, 0x57, 0xf7, 0xa1, 0xf7, 0x57, 0xf7, 0xa1, 0xf7, 0x57, 0xf7, 0xa1, - 0xf7, 0x57, 0xf7, 0xa1, 0xf7, 0x57, 0xf8, 0xa1, 0xf7, 0x57, 0xf8, 0xa1, - 0xf7, 0x57, 0xf8, 0xa1, 0xf7, 0x57, 0xf8, 0xa1, 0xf8, 0x57, 0xf8, 0xa1, - 0xf8, 0x57, 0xf9, 0xa1, 0xf9, 0x57, 0xf9, 0xa1, 0xf9, 0x57, 0xf9, 0xa1, - 0xf9, 0x57, 0xf9, 0xa1, 0xf9, 0x57, 0xfa, 0xa1, 0xf9, 0x57, 0xfa, 0xa1, - 0xf9, 0x57, 0xfa, 0xa1, 0xf9, 0x57, 0xfa, 0xa2, 0xfa, 0x57, 0xfa, 0xa2, - 0xfa, 0x57, 0xfb, 0xa2, 0xfb, 0x57, 0xfb, 0xa2, 0xfb, 0x57, 0xfb, 0xa2, - 0xfb, 0x57, 0xfb, 0xa2, 0xfb, 0x57, 0xfc, 0xa2, 0xfb, 0x57, 0xfc, 0xa2, - 0xfb, 0x57, 0xfc, 0xa2, 0xfb, 0x57, 0xfc, 0xa2, 0xfb, 0x57, 0xfc, 0xa2, - 0xfb, 0x57, 0xfd, 0xa2, 0xfb, 0x57, 0xfd, 0xa2, 0xfb, 0x57, 0xfd, 0xa2, - 0xfb, 0x57, 0xfd, 0xa2, 0xfb, 0x57, 0xfe, 0xa2, 0xfb, 0x57, 0xfe, 0xa2, - 0xfb, 0x57, 0xfe, 0xa3, 0xfb, 0x57, 0xfe, 0xa3, 0xfc, 0x57, 0xfe, 0xa3, - 0xfb, 0x57, 0xff, 0xa3, 0xfc, 0x57, 0xff, 0xa3, 0xfb, 0x57, 0x03, 0xaa, - 0x95, 0x58, 0x0a, 0xa8, 0x96, 0x58, 0x0f, 0xaa, 0x95, 0x58, 0x14, 0xa8, - 0x96, 0x58, 0x17, 0xaa, 0x95, 0x58, 0x1b, 0xa8, 0x96, 0x58, 0x1e, 0xaa, - 0x95, 0x58, 0x20, 0xa8, 0x96, 0x58, 0x23, 0xaa, 0x95, 0x58, 0x25, 0xa8, - 0x96, 0x58, 0x27, 0xaa, 0x95, 0x58, 0x29, 0xa8, 0x96, 0x58, 0x2b, 0xa6, - 0x96, 0x58, 0x2d, 0xa8, 0x96, 0x58, 0x2f, 0xa6, 0x96, 0x58, 0x31, 0xa8, - 0x96, 0x58, 0x32, 0xa6, 0x96, 0x58, 0x34, 0xa8, 0x96, 0x58, 0x35, 0xa6, - 0x96, 0x58, 0x37, 0xa8, 0x96, 0x58, 0x38, 0xa6, 0x96, 0x58, 0x3a, 0xa8, - 0x96, 0x58, 0x3b, 0xa6, 0x96, 0x58, 0x3c, 0xa8, 0x96, 0x58, 0x3e, 0xa6, - 0x96, 0x58, 0x3f, 0xa8, 0x96, 0x58, 0x40, 0xa6, 0x96, 0x58, 0x42, 0xa8, - 0x96, 0x58, 0x43, 0xa6, 0x96, 0x58, 0x44, 0xa8, 0x96, 0x58, 0x45, 0xa6, - 0x96, 0x58, 0x46, 0xa8, 0x96, 0x58, 0x47, 0xa6, 0x96, 0x58, 0x48, 0xa8, - 0x96, 0x58, 0x49, 0xa6, 0x96, 0x58, 0x4a, 0xa8, 0x96, 0x58, 0x4b, 0xa6, - 0x96, 0x58, 0x4c, 0xa8, 0x96, 0x58, 0x4d, 0xa6, 0x96, 0x58, 0x4e, 0xa8, - 0x96, 0x58, 0x4f, 0xa6, 0x96, 0x58, 0x50, 0xa8, 0x96, 0x58, 0x51, 0xa6, - 0x96, 0x58, 0x52, 0xa8, 0x96, 0x58, 0x53, 0xa6, 0x96, 0x58, 0x54, 0xa8, - 0x96, 0x58, 0x55, 0xa6, 0x96, 0x58, 0x56, 0xa8, 0x96, 0x58, 0x57, 0xa6, - 0x96, 0x58, 0x58, 0xa3, 0x97, 0x58, 0x58, 0xa6, 0x96, 0x58, 0x59, 0xa3, - 0x97, 0x58, 0x5a, 0xa6, 0x96, 0x58, 0x5b, 0xa3, 0x97, 0x58, 0x5c, 0xa6, - 0x96, 0x58, 0x5d, 0xa3, 0x97, 0x58, 0x5d, 0xa6, 0x96, 0x58, 0x5e, 0xa3, - 0x97, 0x58, 0x5f, 0xa6, 0x96, 0x58, 0x60, 0xa3, 0x97, 0x58, 0x60, 0xa6, - 0x96, 0x58, 0x61, 0xa3, 0x97, 0x58, 0x62, 0xa6, 0x96, 0x58, 0x63, 0xa3, - 0x97, 0x58, 0x63, 0xa6, 0x96, 0x58, 0x64, 0xa3, 0x97, 0x58, 0x65, 0xa6, - 0x96, 0x58, 0x66, 0xa3, 0x97, 0x58, 0x66, 0xa6, 0x96, 0x58, 0x67, 0xa3, - 0x97, 0x58, 0x68, 0xa6, 0x96, 0x58, 0x68, 0xa3, 0x97, 0x58, 0x69, 0xa6, - 0x96, 0x58, 0x6a, 0xa3, 0x97, 0x58, 0x6a, 0xa6, 0x96, 0x58, 0x6b, 0xa3, - 0x97, 0x58, 0x6c, 0xa6, 0x96, 0x58, 0x6c, 0xa3, 0x97, 0x58, 0x6d, 0xa6, - 0x96, 0x58, 0x6e, 0xa3, 0x97, 0x58, 0x6e, 0xa6, 0x96, 0x58, 0x6f, 0xa3, - 0x97, 0x58, 0x70, 0xa0, 0x97, 0x58, 0x70, 0xa3, 0x97, 0x58, 0x71, 0xa0, - 0x97, 0x58, 0x72, 0xa3, 0x97, 0x58, 0x72, 0xa0, 0x97, 0x58, 0x73, 0xa3, - 0x97, 0x58, 0x73, 0xa0, 0x97, 0x58, 0x74, 0xa3, 0x97, 0x58, 0x75, 0xa0, - 0x97, 0x58, 0x75, 0xa3, 0x97, 0x58, 0x76, 0xa0, 0x97, 0x58, 0x76, 0xa3, - 0x97, 0x58, 0x77, 0xa0, 0x97, 0x58, 0x78, 0xa3, 0x97, 0x58, 0x78, 0xa0, - 0x97, 0x58, 0x79, 0xa3, 0x97, 0x58, 0x79, 0xa0, 0x97, 0x58, 0x7a, 0xa3, - 0x97, 0x58, 0x7a, 0xa0, 0x97, 0x58, 0x7b, 0xa3, 0x97, 0x58, 0x7c, 0xa0, - 0x97, 0x58, 0x7c, 0xa3, 0x97, 0x58, 0x7d, 0xa0, 0x97, 0x58, 0x7d, 0xa3, - 0x97, 0x58, 0x7e, 0xa0, 0x97, 0x58, 0x7e, 0xa3, 0x97, 0x58, 0x7f, 0xa0, - 0x97, 0x58, 0x7f, 0xa3, 0x97, 0x58, 0x80, 0xa0, 0x97, 0x58, 0x81, 0xa3, - 0x97, 0x58, 0x81, 0xa0, 0x97, 0x58, 0x82, 0xa3, 0x97, 0x58, 0x82, 0xa0, - 0x97, 0x58, 0x83, 0xa3, 0x97, 0x58, 0x83, 0xa0, 0x97, 0x58, 0x84, 0xa3, - 0x97, 0x58, 0x84, 0xa0, 0x97, 0x58, 0x85, 0xa3, 0x97, 0x58, 0x85, 0xa0, - 0x97, 0x58, 0x86, 0xa3, 0x97, 0x58, 0x86, 0xa0, 0x97, 0x58, 0x87, 0x9f, - 0x98, 0x58, 0x87, 0xa0, 0x97, 0x58, 0x88, 0x9f, 0x98, 0x58, 0x88, 0xa0, - 0x97, 0x58, 0x89, 0x9f, 0x98, 0x58, 0x89, 0xa0, 0x97, 0x58, 0x8a, 0x9f, - 0x98, 0x58, 0x8a, 0xa0, 0x97, 0x58, 0x8b, 0x9f, 0x98, 0x58, 0x8b, 0xa0, - 0x97, 0x58, 0x8c, 0x9f, 0x98, 0x58, 0x8c, 0xa0, 0x97, 0x58, 0x8d, 0x9f, - 0x98, 0x58, 0x8d, 0xa0, 0x97, 0x58, 0x8e, 0x9f, 0x98, 0x58, 0x8e, 0xa0, - 0x97, 0x58, 0x8e, 0x9f, 0x98, 0x58, 0x8f, 0xa0, 0x97, 0x58, 0x8f, 0x9f, - 0x98, 0x58, 0x90, 0xa0, 0x97, 0x58, 0x90, 0x9f, 0x98, 0x58, 0x91, 0xa0, - 0x97, 0x58, 0x91, 0x9f, 0x98, 0x58, 0x92, 0xa0, 0x97, 0x58, 0x92, 0x9f, - 0x98, 0x58, 0x93, 0xa0, 0x97, 0x58, 0x93, 0x9f, 0x98, 0x58, 0x94, 0xa0, - 0x97, 0x58, 0x94, 0x9f, 0x98, 0x58, 0x94, 0xa0, 0x97, 0x58, 0x95, 0x9f, - 0x98, 0x58, 0x95, 0xa0, 0x97, 0x58, 0x96, 0x9f, 0x98, 0x58, 0x96, 0x9f, - 0x98, 0x58, 0x97, 0x9f, 0x98, 0x58, 0x97, 0x9f, 0x98, 0x58, 0x97, 0x9f, - 0x98, 0x58, 0x97, 0x9f, 0x98, 0x58, 0x97, 0x9f, 0x98, 0x58, 0x97, 0x9f, - 0x99, 0x58, 0x9b, 0x9f, 0x99, 0x59, 0x9b, 0x9f, 0x9a, 0x58, 0x9b, 0x9f, - 0x9a, 0x59, 0x9b, 0x9f, 0x9a, 0x58, 0x9c, 0x9f, 0x9b, 0x58, 0x9b, 0x9f, - 0x9a, 0x58, 0x9c, 0x9f, 0x9b, 0x58, 0x9c, 0x9f, 0x9a, 0x58, 0x9d, 0x9f, - 0x9b, 0x58, 0x9d, 0x9d, 0x9b, 0x58, 0x9d, 0x9f, 0x9b, 0x58, 0x9e, 0x9d, - 0x9b, 0x58, 0x9e, 0x9f, 0x9b, 0x58, 0x9f, 0x9d, 0x9b, 0x58, 0x9f, 0x9f, - 0x9b, 0x58, 0x9f, 0x9d, 0x9b, 0x58, 0xa0, 0x9f, 0x9b, 0x58, 0xa0, 0x9d, - 0x9b, 0x58, 0xa1, 0x9f, 0x9b, 0x58, 0xa1, 0x9d, 0x9b, 0x58, 0xa1, 0x9f, - 0x9b, 0x58, 0xa2, 0x9d, 0x9b, 0x58, 0xa2, 0x9f, 0x9b, 0x58, 0xa3, 0x9d, - 0x9b, 0x58, 0xa3, 0x9f, 0x9b, 0x58, 0xa3, 0x9d, 0x9b, 0x58, 0xa4, 0x9f, - 0x9b, 0x58, 0xa4, 0x9d, 0x9b, 0x58, 0xa5, 0x9f, 0x9b, 0x58, 0xa5, 0x9d, - 0x9b, 0x58, 0xa5, 0x9a, 0x9c, 0x58, 0xa6, 0x9d, 0x9b, 0x58, 0xa6, 0x9a, - 0x9c, 0x58, 0xa6, 0x9d, 0x9b, 0x58, 0xa7, 0x9a, 0x9c, 0x58, 0xa7, 0x9d, - 0x9b, 0x58, 0xa8, 0x9a, 0x9c, 0x58, 0xa8, 0x9d, 0x9b, 0x58, 0xa8, 0x9a, - 0x9c, 0x58, 0xa9, 0x90, 0xaa, 0x58, 0xa9, 0x90, 0xab, 0x58, 0xaa, 0x90, - 0xaa, 0x58, 0xaa, 0x90, 0xab, 0x58, 0xaa, 0x90, 0xaa, 0x58, 0xab, 0x91, - 0xae, 0x58, 0xab, 0x91, 0xaf, 0x58, 0xab, 0x91, 0xae, 0x58, 0xac, 0x91, - 0xaf, 0x58, 0xac, 0x91, 0xae, 0x58, 0xac, 0x91, 0xaf, 0x58, 0xad, 0x91, - 0xae, 0x58, 0xad, 0x91, 0xaf, 0x58, 0xae, 0x91, 0xae, 0x58, 0xae, 0x91, - 0xaf, 0x58, 0xae, 0x91, 0xae, 0x58, 0xaf, 0x92, 0xb2, 0x58, 0xaf, 0x92, - 0xb3, 0x58, 0xaf, 0x92, 0xb2, 0x58, 0xb0, 0x92, 0xb3, 0x58, 0xb0, 0x92, - 0xb2, 0x58, 0xb0, 0x92, 0xb3, 0x58, 0xb1, 0x92, 0xb2, 0x58, 0xb1, 0x92, - 0xb3, 0x58, 0xb2, 0x92, 0xb2, 0x58, 0xb2, 0x92, 0xb3, 0x58, 0xb2, 0x92, - 0xb2, 0x58, 0xb3, 0x93, 0xb6, 0x58, 0xb3, 0x93, 0xb6, 0x58, 0xb3, 0x93, - 0xb6, 0x58, 0xb4, 0x93, 0xb6, 0x58, 0xb4, 0x93, 0xb6, 0x58, 0xb4, 0x93, - 0xb6, 0x58, 0xb5, 0x93, 0xb6, 0x58, 0xb5, 0x93, 0xb6, 0x58, 0xb5, 0x93, - 0xb6, 0x58, 0xb6, 0x93, 0xb6, 0x58, 0xb6, 0x93, 0xb6, 0x58, 0xb6, 0x93, - 0xb6, 0x58, 0xb7, 0x94, 0xba, 0x58, 0xb7, 0x94, 0xba, 0x58, 0xb7, 0x94, - 0xba, 0x58, 0xb8, 0x94, 0xba, 0x58, 0xb8, 0x94, 0xba, 0x58, 0xb8, 0x94, - 0xba, 0x58, 0xb9, 0x94, 0xba, 0x58, 0xb9, 0x94, 0xba, 0x58, 0xb9, 0x94, - 0xba, 0x58, 0xba, 0x94, 0xba, 0x58, 0xba, 0x94, 0xba, 0x58, 0xba, 0x94, - 0xba, 0x58, 0xbb, 0x94, 0xbb, 0x58, 0xbb, 0x94, 0xbe, 0x58, 0xbb, 0x94, - 0xbe, 0x58, 0xbc, 0x94, 0xbe, 0x58, 0xbc, 0x94, 0xbe, 0x58, 0xbc, 0x94, - 0xbe, 0x58, 0xbd, 0x94, 0xbe, 0x58, 0xbd, 0x94, 0xbe, 0x58, 0xbd, 0x94, - 0xbe, 0x58, 0xbe, 0x94, 0xbe, 0x58, 0xbe, 0x94, 0xbe, 0x58, 0xbe, 0x94, - 0xbe, 0x58, 0xbf, 0x95, 0xc1, 0x58, 0xbf, 0x95, 0xc1, 0x58, 0xbf, 0x95, - 0xc1, 0x58, 0xc0, 0x95, 0xc1, 0x58, 0xc0, 0x95, 0xc1, 0x58, 0xc0, 0x95, - 0xc1, 0x58, 0xc1, 0x95, 0xc1, 0x58, 0xc1, 0x95, 0xc1, 0x58, 0xc1, 0x95, - 0xc1, 0x58, 0xc1, 0x95, 0xc1, 0x58, 0xc2, 0x95, 0xc2, 0x58, 0xc2, 0x96, - 0xc5, 0x58, 0xc2, 0x96, 0xc5, 0x58, 0xc3, 0x96, 0xc5, 0x58, 0xc3, 0x96, - 0xc5, 0x58, 0xc3, 0x96, 0xc5, 0x58, 0xc4, 0x96, 0xc5, 0x58, 0xc4, 0x96, - 0xc5, 0x58, 0xc4, 0x96, 0xc5, 0x58, 0xc5, 0x96, 0xc5, 0x58, 0xc5, 0x96, - 0xc5, 0x58, 0xc5, 0x96, 0xc5, 0x58, 0xc6, 0x97, 0xc8, 0x58, 0xc6, 0x97, - 0xc8, 0x58, 0xc6, 0x97, 0xc8, 0x58, 0xc6, 0x97, 0xc8, 0x58, 0xc7, 0x97, - 0xc8, 0x58, 0xc7, 0x97, 0xc8, 0x58, 0xc7, 0x97, 0xc8, 0x58, 0xc8, 0x97, - 0xc8, 0x58, 0xc8, 0x97, 0xc8, 0x58, 0xc8, 0x97, 0xc8, 0x58, 0xc9, 0x97, - 0xc9, 0x58, 0xc9, 0x98, 0xcb, 0x58, 0xc9, 0x98, 0xcc, 0x58, 0xc9, 0x98, - 0xcb, 0x58, 0xca, 0x98, 0xcc, 0x58, 0xca, 0x98, 0xcb, 0x58, 0xca, 0x98, - 0xcc, 0x58, 0xcb, 0x98, 0xcb, 0x58, 0xcb, 0x98, 0xcc, 0x58, 0xcb, 0x98, - 0xcb, 0x58, 0xcc, 0x98, 0xcc, 0x58, 0xcc, 0x98, 0xcc, 0x58, 0xcc, 0x98, - 0xcc, 0x58, 0xcc, 0x98, 0xcc, 0x58, 0xcd, 0x99, 0xce, 0x58, 0xcd, 0x99, - 0xcf, 0x58, 0xcd, 0x99, 0xce, 0x58, 0xce, 0x99, 0xcf, 0x58, 0xce, 0x9f, - 0xd2, 0x58, 0xce, 0xa0, 0xd2, 0x58, 0xce, 0x9f, 0xd2, 0x58, 0xcf, 0xa0, - 0xd2, 0x58, 0xcf, 0x9f, 0xd2, 0x58, 0xcf, 0xa0, 0xd2, 0x58, 0xd0, 0x9f, - 0xd2, 0x58, 0xd0, 0xa0, 0xd2, 0x58, 0xd0, 0x9f, 0xd2, 0x58, 0xd0, 0xa0, - 0xd2, 0x58, 0xd1, 0x9f, 0xd2, 0x58, 0xd1, 0x9f, 0xd2, 0x58, 0xd1, 0x9f, - 0xd2, 0x58, 0xd2, 0x9f, 0xd2, 0x58, 0xd2, 0x9f, 0xd2, 0x57, 0xd2, 0x9f, - 0xd2, 0x58, 0xd2, 0x9f, 0xd2, 0x57, 0xd2, 0x9f, 0xd3, 0x58, 0xd2, 0x9f, - 0xd3, 0x57, 0xd2, 0x9f, 0xd3, 0x58, 0xd2, 0x9f, 0xd4, 0x57, 0xd2, 0x9f, - 0xd4, 0x58, 0xd2, 0x9f, 0xd4, 0x57, 0xd2, 0x9f, 0xd4, 0x58, 0xd2, 0x9f, - 0xd5, 0x57, 0xd2, 0x9f, 0xd5, 0x58, 0xd2, 0x9f, 0xd5, 0x57, 0xd2, 0x9f, - 0xd6, 0x58, 0xd2, 0x9f, 0xd6, 0x57, 0xd2, 0x9f, 0xd6, 0x58, 0xd2, 0x9f, - 0xd6, 0x57, 0xd2, 0x9f, 0xd7, 0x54, 0xd2, 0x9f, 0xd7, 0x57, 0xd2, 0x9f, - 0xd7, 0x54, 0xd2, 0x9f, 0xd7, 0x57, 0xd2, 0x9f, 0xd8, 0x54, 0xd8, 0x9f, - 0xd8, 0x4d, 0xda, 0x9f, 0xd8, 0x4e, 0xdb, 0x9f, 0xd9, 0x4e, 0xda, 0x9f, - 0xd9, 0x4e, 0xdb, 0x9f, 0xd9, 0x4e, 0xda, 0x9f, 0xd9, 0x4e, 0xdb, 0x9f, - 0xda, 0x4e, 0xda, 0x9f, 0xda, 0x4e, 0xdb, 0x9f, 0xda, 0x4e, 0xda, 0x9f, - 0xda, 0x4e, 0xdd, 0x9f, 0xdb, 0x4f, 0xdd, 0x9f, 0xdb, 0x4f, 0xdd, 0x9f, - 0xdb, 0x4f, 0xdd, 0x9f, 0xdb, 0x4f, 0xdd, 0x9f, 0xdc, 0x4f, 0xdd, 0x9f, - 0xdc, 0x4f, 0xdd, 0x9f, 0xdc, 0x4f, 0xdd, 0x9f, 0xdd, 0x4f, 0xdd, 0x9f, - 0xdd, 0x4f, 0xdf, 0x9f, 0xdd, 0x50, 0xdf, 0x9f, 0xdd, 0x50, 0xdf, 0x9f, - 0xde, 0x50, 0xdf, 0x9f, 0xde, 0x50, 0xdf, 0x9f, 0xde, 0x50, 0xdf, 0x9f, - 0xde, 0x50, 0xdf, 0x9f, 0xdf, 0x50, 0xdf, 0x9f, 0xdf, 0x50, 0xdf, 0x9f, - 0xdf, 0x50, 0xdf, 0x9f, 0xdf, 0x50, 0xe0, 0x9f, 0xe0, 0x50, 0xe0, 0x9f, - 0xe0, 0x50, 0xe2, 0x9f, 0xe0, 0x51, 0xe2, 0x9f, 0xe1, 0x51, 0xe2, 0x9f, - 0xe1, 0x51, 0xe2, 0x9f, 0xe1, 0x51, 0xe2, 0x9f, 0xe1, 0x51, 0xe2, 0x9f, - 0xe2, 0x51, 0xe2, 0x9f, 0xe2, 0x51, 0xe2, 0x9f, 0xe2, 0x51, 0xe2, 0x9f, - 0xe2, 0x51, 0xe4, 0x9f, 0xe3, 0x52, 0xe4, 0x9f, 0xe3, 0x52, 0xe4, 0x9f, - 0xe3, 0x52, 0xe4, 0x9f, 0xe3, 0x52, 0xe4, 0x9f, 0xe4, 0x52, 0xe4, 0x9f, - 0xe4, 0x52, 0xe4, 0x9f, 0xe4, 0x52, 0xe4, 0x9f, 0xe4, 0x52, 0xe5, 0x9f, - 0xe5, 0x52, 0xe6, 0x9f, 0xe5, 0x53, 0xe7, 0x9f, 0xe5, 0x53, 0xe6, 0x9f, - 0xe5, 0x53, 0xe7, 0x9f, 0xe6, 0x53, 0xe6, 0x9f, 0xe6, 0x53, 0xe7, 0x9f, - 0xe6, 0x53, 0xe6, 0x9f, 0xe6, 0x53, 0xe7, 0x9f, 0xe7, 0x53, 0xe7, 0x9f, - 0xe7, 0x53, 0xe7, 0x9f, 0xe7, 0x53, 0xe7, 0x9f, 0xe7, 0x53, 0xe8, 0x9f, - 0xe8, 0x53, 0xe9, 0x9f, 0xe8, 0x54, 0xe9, 0x9f, 0xe8, 0x54, 0xe9, 0x9f, - 0xe8, 0x54, 0xe9, 0x9f, 0xe9, 0x54, 0xe9, 0x9f, 0xe9, 0x54, 0xe9, 0x9f, - 0xe9, 0x54, 0xe9, 0x9f, 0xe9, 0x54, 0xea, 0x9f, 0xea, 0x54, 0xea, 0x9f, - 0xea, 0x54, 0xeb, 0x9f, 0xea, 0x55, 0xeb, 0x9f, 0xea, 0x55, 0xeb, 0x9f, - 0xeb, 0x55, 0xeb, 0x9f, 0xeb, 0x55, 0xeb, 0x9f, 0xeb, 0x55, 0xeb, 0x9f, - 0xeb, 0x55, 0xec, 0x9f, 0xec, 0x55, 0xec, 0x9f, 0xec, 0x55, 0xec, 0x9f, - 0xec, 0x55, 0xec, 0x9f, 0xec, 0x55, 0xed, 0x9f, 0xec, 0x56, 0xee, 0x9f, - 0xed, 0x56, 0xed, 0x9f, 0xed, 0x56, 0xee, 0x9f, 0xed, 0x56, 0xed, 0x9f, - 0xed, 0x56, 0xee, 0x9f, 0xee, 0x56, 0xee, 0x9f, 0xee, 0x56, 0xee, 0x9f, - 0xee, 0x56, 0xee, 0x9f, 0xee, 0x56, 0xef, 0x9f, 0xef, 0x56, 0xef, 0x9f, - 0xef, 0x56, 0xf0, 0x9f, 0xef, 0x57, 0xf0, 0x9f, 0xef, 0x57, 0xf0, 0x9f, - 0xf0, 0x57, 0xf0, 0x9f, 0xf0, 0x57, 0xf0, 0x9f, 0xf0, 0x57, 0xf0, 0x9f, - 0xf0, 0x57, 0xf1, 0x9f, 0xf1, 0x57, 0xf1, 0x9f, 0xf1, 0x57, 0xf1, 0x9f, - 0xf1, 0x57, 0xf1, 0x9f, 0xf1, 0x57, 0xf2, 0x9f, 0xf2, 0x57, 0xf2, 0x9f, - 0xf2, 0x58, 0xf2, 0x9f, 0xf2, 0x58, 0xf2, 0x9f, 0xf2, 0x58, 0xf2, 0x9f, - 0xf2, 0x58, 0xf3, 0x9f, 0xf3, 0x58, 0xf3, 0x9f, 0xf3, 0x58, 0xf3, 0x9f, - 0xf3, 0x58, 0xf3, 0x9f, 0xf3, 0x58, 0xf4, 0x9f, 0xf4, 0x58, 0xf4, 0x9f, - 0xf4, 0x58, 0xf4, 0x9f, 0xf4, 0x58, 0xf4, 0x9f, 0xf4, 0x58, 0xf5, 0xa0, - 0xf5, 0x58, 0xf5, 0xa0, 0xf5, 0x58, 0xf5, 0xa0, 0xf5, 0x58, 0xf5, 0xa0, - 0xf5, 0x58, 0xf5, 0xa0, 0xf5, 0x58, 0xf6, 0xa0, 0xf6, 0x58, 0xf6, 0xa0, - 0xf6, 0x58, 0xf6, 0xa0, 0xf6, 0x58, 0xf6, 0xa0, 0xf6, 0x58, 0xf7, 0xa0, - 0xf6, 0x58, 0xf7, 0xa0, 0xf6, 0x58, 0xf7, 0xa1, 0xf7, 0x58, 0xf7, 0xa1, - 0xf7, 0x58, 0xf8, 0xa1, 0xf8, 0x58, 0xf8, 0xa1, 0xf8, 0x58, 0xf8, 0xa1, - 0xf8, 0x58, 0xf8, 0xa1, 0xf8, 0x58, 0xf8, 0xa1, 0xf8, 0x58, 0xf9, 0xa1, - 0xf8, 0x58, 0xf9, 0xa1, 0xf8, 0x58, 0xf9, 0xa2, 0xf9, 0x58, 0xf9, 0xa2, - 0xf9, 0x58, 0xfa, 0xa2, 0xfa, 0x58, 0xfa, 0xa2, 0xfa, 0x58, 0xfa, 0xa2, - 0xfa, 0x58, 0xfa, 0xa2, 0xfa, 0x58, 0xfa, 0xa2, 0xfa, 0x58, 0xfb, 0xa2, - 0xfa, 0x58, 0xfb, 0xa2, 0xfa, 0x58, 0xfb, 0xa2, 0xfa, 0x58, 0xfb, 0xa3, - 0xfb, 0x58, 0xfc, 0xa3, 0xfc, 0x58, 0xfc, 0xa3, 0xfb, 0x58, 0xfc, 0xa3, - 0xfc, 0x58, 0xfc, 0xa3, 0xfb, 0x58, 0xfc, 0xa3, 0xfc, 0x58, 0xfd, 0xa3, - 0xfb, 0x58, 0xfd, 0xa3, 0xfc, 0x58, 0xfd, 0xa3, 0xfb, 0x58, 0xfd, 0xa3, - 0xfc, 0x58, 0xfe, 0xa3, 0xfb, 0x58, 0xfe, 0xa3, 0xfc, 0x58, 0xfe, 0xa3, - 0xfb, 0x58, 0xfe, 0xa3, 0xfc, 0x58, 0xfe, 0xa3, 0xfb, 0x58, 0xff, 0xa3, - 0xfc, 0x58, 0xff, 0xa3, 0xfb, 0x58, 0x03, 0xa5, 0x96, 0x58, 0x0a, 0xa5, - 0x96, 0x58, 0x0f, 0xa5, 0x96, 0x58, 0x14, 0xa8, 0x96, 0x58, 0x17, 0xa5, - 0x96, 0x58, 0x1b, 0xa8, 0x96, 0x58, 0x1e, 0xa5, 0x96, 0x58, 0x20, 0xa8, - 0x96, 0x58, 0x23, 0xa5, 0x96, 0x58, 0x25, 0xa8, 0x96, 0x58, 0x27, 0xa5, - 0x96, 0x58, 0x29, 0xa8, 0x96, 0x58, 0x2b, 0xa5, 0x96, 0x58, 0x2d, 0xa8, - 0x96, 0x58, 0x2f, 0xa5, 0x96, 0x58, 0x31, 0xa8, 0x96, 0x58, 0x32, 0xa5, - 0x96, 0x58, 0x34, 0xa8, 0x96, 0x58, 0x35, 0xa5, 0x96, 0x58, 0x37, 0xa8, - 0x96, 0x58, 0x38, 0xa5, 0x96, 0x58, 0x3a, 0xa8, 0x96, 0x58, 0x3b, 0xa5, - 0x96, 0x58, 0x3c, 0xa8, 0x96, 0x58, 0x3e, 0xa5, 0x96, 0x58, 0x3f, 0xa8, - 0x96, 0x58, 0x40, 0xa5, 0x96, 0x58, 0x42, 0xa8, 0x96, 0x58, 0x43, 0xa5, - 0x96, 0x58, 0x44, 0xa8, 0x96, 0x58, 0x45, 0xa5, 0x96, 0x58, 0x46, 0xa8, - 0x96, 0x58, 0x47, 0xa5, 0x96, 0x58, 0x48, 0xa8, 0x96, 0x58, 0x49, 0xa5, - 0x96, 0x58, 0x4a, 0xa8, 0x96, 0x58, 0x4b, 0xa5, 0x96, 0x58, 0x4c, 0xa3, - 0x97, 0x58, 0x4d, 0xa5, 0x96, 0x58, 0x4e, 0xa3, 0x97, 0x58, 0x4f, 0xa5, - 0x96, 0x58, 0x50, 0xa3, 0x97, 0x58, 0x51, 0xa5, 0x96, 0x58, 0x52, 0xa3, - 0x97, 0x58, 0x53, 0xa5, 0x96, 0x58, 0x54, 0xa3, 0x97, 0x58, 0x55, 0xa5, - 0x96, 0x58, 0x56, 0xa3, 0x97, 0x58, 0x57, 0xa5, 0x96, 0x58, 0x58, 0xa3, - 0x97, 0x58, 0x58, 0xa5, 0x96, 0x58, 0x59, 0xa3, 0x97, 0x58, 0x5a, 0xa5, - 0x96, 0x58, 0x5b, 0xa3, 0x97, 0x58, 0x5c, 0xa5, 0x96, 0x58, 0x5d, 0xa3, - 0x97, 0x58, 0x5d, 0xa5, 0x96, 0x58, 0x5e, 0xa3, 0x97, 0x58, 0x5f, 0xa5, - 0x96, 0x58, 0x60, 0xa3, 0x97, 0x58, 0x60, 0xa5, 0x96, 0x58, 0x61, 0xa3, - 0x97, 0x58, 0x62, 0xa5, 0x96, 0x58, 0x63, 0xa3, 0x97, 0x58, 0x63, 0xa5, - 0x96, 0x58, 0x64, 0xa3, 0x97, 0x58, 0x65, 0xa5, 0x96, 0x58, 0x66, 0xa3, - 0x97, 0x58, 0x66, 0xa5, 0x96, 0x58, 0x67, 0xa3, 0x97, 0x58, 0x68, 0xa5, - 0x96, 0x58, 0x68, 0xa3, 0x97, 0x58, 0x69, 0xa5, 0x96, 0x58, 0x6a, 0xa3, - 0x97, 0x58, 0x6a, 0xa5, 0x96, 0x58, 0x6b, 0xa3, 0x97, 0x58, 0x6c, 0xa5, - 0x96, 0x58, 0x6c, 0xa3, 0x97, 0x58, 0x6d, 0xa5, 0x96, 0x58, 0x6e, 0xa3, - 0x97, 0x58, 0x6e, 0xa5, 0x96, 0x58, 0x6f, 0xa3, 0x97, 0x58, 0x70, 0xa5, - 0x96, 0x58, 0x70, 0xa3, 0x97, 0x58, 0x71, 0xa5, 0x96, 0x58, 0x72, 0xa3, - 0x97, 0x58, 0x72, 0xa5, 0x96, 0x58, 0x73, 0xa3, 0x97, 0x58, 0x73, 0xa5, - 0x96, 0x58, 0x74, 0xa3, 0x97, 0x58, 0x75, 0xa5, 0x96, 0x58, 0x75, 0xa3, - 0x97, 0x58, 0x76, 0xa5, 0x96, 0x58, 0x76, 0xa3, 0x97, 0x58, 0x77, 0xa5, - 0x96, 0x58, 0x78, 0xa3, 0x97, 0x58, 0x78, 0xa5, 0x96, 0x58, 0x79, 0xa3, - 0x97, 0x58, 0x79, 0xa1, 0x97, 0x58, 0x7a, 0xa3, 0x97, 0x58, 0x7a, 0xa1, - 0x97, 0x58, 0x7b, 0xa3, 0x97, 0x58, 0x7c, 0xa1, 0x97, 0x58, 0x7c, 0xa3, - 0x97, 0x58, 0x7d, 0xa1, 0x97, 0x58, 0x7d, 0xa3, 0x97, 0x58, 0x7e, 0xa1, - 0x97, 0x58, 0x7e, 0xa3, 0x97, 0x58, 0x7f, 0xa1, 0x97, 0x58, 0x7f, 0xa3, - 0x97, 0x58, 0x80, 0xa1, 0x97, 0x58, 0x81, 0xa3, 0x97, 0x58, 0x81, 0xa1, - 0x97, 0x58, 0x82, 0xa3, 0x97, 0x58, 0x82, 0xa1, 0x97, 0x58, 0x83, 0xa3, - 0x97, 0x58, 0x83, 0xa1, 0x97, 0x58, 0x84, 0xa3, 0x97, 0x58, 0x84, 0xa1, - 0x97, 0x58, 0x85, 0xa3, 0x97, 0x58, 0x85, 0xa1, 0x97, 0x58, 0x86, 0xa3, - 0x97, 0x58, 0x86, 0xa1, 0x97, 0x58, 0x87, 0xa3, 0x97, 0x58, 0x87, 0xa1, - 0x97, 0x58, 0x88, 0xa3, 0x97, 0x58, 0x88, 0xa1, 0x97, 0x58, 0x89, 0xa3, - 0x97, 0x58, 0x89, 0xa1, 0x97, 0x58, 0x8a, 0xa3, 0x97, 0x58, 0x8a, 0xa1, - 0x97, 0x58, 0x8b, 0xa3, 0x97, 0x58, 0x8b, 0xa1, 0x97, 0x58, 0x8c, 0xa3, - 0x97, 0x58, 0x8c, 0xa1, 0x97, 0x58, 0x8d, 0x9f, 0x98, 0x58, 0x8d, 0xa1, - 0x97, 0x58, 0x8e, 0x9f, 0x98, 0x58, 0x8e, 0xa1, 0x97, 0x58, 0x8e, 0x9f, - 0x98, 0x58, 0x8f, 0xa1, 0x97, 0x58, 0x8f, 0x9f, 0x98, 0x58, 0x90, 0xa1, - 0x97, 0x58, 0x90, 0x9f, 0x98, 0x58, 0x91, 0xa1, 0x97, 0x58, 0x91, 0x9f, - 0x98, 0x58, 0x92, 0xa1, 0x97, 0x58, 0x92, 0x9f, 0x98, 0x58, 0x93, 0xa1, - 0x97, 0x58, 0x93, 0x9f, 0x98, 0x58, 0x94, 0xa1, 0x97, 0x58, 0x94, 0x9f, - 0x98, 0x58, 0x94, 0xa1, 0x97, 0x58, 0x95, 0x9f, 0x98, 0x58, 0x95, 0xa1, - 0x97, 0x58, 0x96, 0x9f, 0x98, 0x58, 0x96, 0x9f, 0x98, 0x58, 0x97, 0x9f, - 0x98, 0x58, 0x97, 0x9f, 0x98, 0x58, 0x97, 0x9f, 0x98, 0x58, 0x97, 0x9f, - 0x98, 0x58, 0x97, 0x9f, 0x98, 0x58, 0x97, 0x9f, 0x99, 0x58, 0x9b, 0x9f, - 0x99, 0x59, 0x9b, 0x9f, 0x9a, 0x58, 0x9b, 0x9f, 0x9a, 0x59, 0x9b, 0x9f, - 0x9a, 0x58, 0x9c, 0x9f, 0x9b, 0x58, 0x9b, 0x9f, 0x9a, 0x58, 0x9c, 0x9f, - 0x9b, 0x58, 0x9c, 0x9f, 0x9a, 0x58, 0x9d, 0x9f, 0x9b, 0x58, 0x9d, 0x9f, - 0x9a, 0x58, 0x9d, 0x9f, 0x9b, 0x58, 0x9e, 0x9f, 0x9a, 0x58, 0x9e, 0x9f, - 0x9b, 0x58, 0x9f, 0x9d, 0x9b, 0x58, 0x9f, 0x9f, 0x9b, 0x58, 0x9f, 0x9d, - 0x9b, 0x58, 0xa0, 0x9f, 0x9b, 0x58, 0xa0, 0x9d, 0x9b, 0x58, 0xa1, 0x9f, - 0x9b, 0x58, 0xa1, 0x9d, 0x9b, 0x58, 0xa1, 0x9f, 0x9b, 0x58, 0xa2, 0x9d, - 0x9b, 0x58, 0xa2, 0x9f, 0x9b, 0x58, 0xa3, 0x9d, 0x9b, 0x58, 0xa3, 0x9f, - 0x9b, 0x58, 0xa3, 0x9d, 0x9b, 0x58, 0xa4, 0x9f, 0x9b, 0x58, 0xa4, 0x9d, - 0x9b, 0x58, 0xa5, 0x9f, 0x9b, 0x58, 0xa5, 0x9d, 0x9b, 0x58, 0xa5, 0x9f, - 0x9b, 0x58, 0xa6, 0x9d, 0x9b, 0x58, 0xa6, 0x9f, 0x9b, 0x58, 0xa6, 0x9d, - 0x9b, 0x58, 0xa7, 0x9f, 0x9b, 0x58, 0xa7, 0x9d, 0x9b, 0x58, 0xa8, 0x9f, - 0x9b, 0x58, 0xa8, 0x9c, 0x9b, 0x58, 0xa8, 0x9f, 0x9b, 0x58, 0xa9, 0x9c, - 0x9b, 0x58, 0xa9, 0x90, 0xad, 0x58, 0xaa, 0x90, 0xac, 0x58, 0xaa, 0x90, - 0xad, 0x58, 0xaa, 0x90, 0xac, 0x58, 0xab, 0x90, 0xad, 0x58, 0xab, 0x90, - 0xac, 0x58, 0xab, 0x90, 0xad, 0x58, 0xac, 0x90, 0xac, 0x58, 0xac, 0x90, - 0xad, 0x58, 0xac, 0x90, 0xac, 0x58, 0xad, 0x91, 0xb0, 0x58, 0xad, 0x91, - 0xb1, 0x58, 0xae, 0x91, 0xb0, 0x58, 0xae, 0x91, 0xb1, 0x58, 0xae, 0x91, - 0xb0, 0x58, 0xaf, 0x91, 0xb1, 0x58, 0xaf, 0x91, 0xb0, 0x58, 0xaf, 0x91, - 0xb1, 0x58, 0xb0, 0x91, 0xb0, 0x58, 0xb0, 0x91, 0xb1, 0x58, 0xb0, 0x91, - 0xb0, 0x58, 0xb1, 0x92, 0xb4, 0x58, 0xb1, 0x92, 0xb5, 0x58, 0xb2, 0x92, - 0xb4, 0x58, 0xb2, 0x92, 0xb5, 0x58, 0xb2, 0x92, 0xb4, 0x58, 0xb3, 0x92, - 0xb5, 0x58, 0xb3, 0x92, 0xb4, 0x58, 0xb3, 0x92, 0xb5, 0x58, 0xb4, 0x92, - 0xb4, 0x58, 0xb4, 0x92, 0xb5, 0x58, 0xb4, 0x92, 0xb4, 0x58, 0xb5, 0x93, - 0xb8, 0x58, 0xb5, 0x93, 0xb8, 0x58, 0xb5, 0x93, 0xb8, 0x58, 0xb6, 0x93, - 0xb8, 0x58, 0xb6, 0x93, 0xb8, 0x58, 0xb6, 0x93, 0xb8, 0x58, 0xb7, 0x93, - 0xb8, 0x58, 0xb7, 0x93, 0xb8, 0x58, 0xb7, 0x93, 0xb8, 0x58, 0xb8, 0x93, - 0xb8, 0x58, 0xb8, 0x93, 0xb8, 0x58, 0xb8, 0x94, 0xbc, 0x58, 0xb9, 0x94, - 0xbc, 0x58, 0xb9, 0x94, 0xbc, 0x58, 0xb9, 0x94, 0xbc, 0x58, 0xba, 0x94, - 0xbc, 0x58, 0xba, 0x94, 0xbc, 0x58, 0xba, 0x94, 0xbc, 0x58, 0xbb, 0x94, - 0xbc, 0x58, 0xbb, 0x94, 0xbc, 0x58, 0xbb, 0x94, 0xbc, 0x58, 0xbc, 0x94, - 0xbc, 0x58, 0xbc, 0x94, 0xbc, 0x58, 0xbc, 0x94, 0xbc, 0x58, 0xbd, 0x95, - 0xbf, 0x58, 0xbd, 0x95, 0xc0, 0x58, 0xbd, 0x95, 0xbf, 0x58, 0xbe, 0x95, - 0xc0, 0x58, 0xbe, 0x95, 0xbf, 0x58, 0xbe, 0x95, 0xc0, 0x58, 0xbf, 0x95, - 0xbf, 0x58, 0xbf, 0x95, 0xc0, 0x58, 0xbf, 0x95, 0xbf, 0x58, 0xc0, 0x95, - 0xc0, 0x58, 0xc0, 0x95, 0xc0, 0x58, 0xc0, 0x96, 0xc3, 0x58, 0xc1, 0x96, - 0xc3, 0x58, 0xc1, 0x96, 0xc3, 0x58, 0xc1, 0x96, 0xc3, 0x58, 0xc1, 0x96, - 0xc3, 0x58, 0xc2, 0x96, 0xc3, 0x58, 0xc2, 0x96, 0xc3, 0x58, 0xc2, 0x96, - 0xc3, 0x58, 0xc3, 0x96, 0xc3, 0x58, 0xc3, 0x96, 0xc3, 0x58, 0xc3, 0x96, - 0xc3, 0x58, 0xc4, 0x96, 0xc4, 0x58, 0xc4, 0x97, 0xc6, 0x58, 0xc4, 0x97, - 0xc7, 0x58, 0xc5, 0x97, 0xc6, 0x58, 0xc5, 0x97, 0xc7, 0x58, 0xc5, 0x97, - 0xc6, 0x58, 0xc6, 0x97, 0xc7, 0x58, 0xc6, 0x97, 0xc6, 0x58, 0xc6, 0x97, - 0xc7, 0x58, 0xc6, 0x97, 0xc6, 0x58, 0xc7, 0x97, 0xc7, 0x58, 0xc7, 0x97, - 0xc7, 0x58, 0xc7, 0x98, 0xca, 0x58, 0xc8, 0x98, 0xca, 0x58, 0xc8, 0x98, - 0xca, 0x58, 0xc8, 0x98, 0xca, 0x58, 0xc9, 0x98, 0xca, 0x58, 0xc9, 0x98, - 0xca, 0x58, 0xc9, 0x98, 0xca, 0x58, 0xc9, 0x98, 0xca, 0x58, 0xca, 0x98, - 0xca, 0x58, 0xca, 0x98, 0xca, 0x58, 0xca, 0x98, 0xca, 0x58, 0xcb, 0x98, - 0xcd, 0x58, 0xcb, 0x98, 0xcd, 0x58, 0xcb, 0x98, 0xcd, 0x58, 0xcc, 0x98, - 0xcd, 0x58, 0xcc, 0x98, 0xcd, 0x58, 0xcc, 0x98, 0xcd, 0x58, 0xcc, 0x98, - 0xcd, 0x58, 0xcd, 0x98, 0xcd, 0x58, 0xcd, 0x98, 0xcd, 0x58, 0xcd, 0x98, - 0xcd, 0x58, 0xce, 0xa1, 0xd2, 0x58, 0xce, 0x9f, 0xd2, 0x58, 0xce, 0xa1, - 0xd2, 0x58, 0xce, 0x9f, 0xd2, 0x58, 0xcf, 0xa1, 0xd2, 0x58, 0xcf, 0x9f, - 0xd2, 0x58, 0xcf, 0xa1, 0xd2, 0x58, 0xd0, 0x9f, 0xd2, 0x58, 0xd0, 0xa1, - 0xd2, 0x58, 0xd0, 0x9f, 0xd2, 0x58, 0xd0, 0xa1, 0xd2, 0x58, 0xd1, 0x9f, - 0xd2, 0x58, 0xd1, 0x9f, 0xd2, 0x58, 0xd1, 0x9f, 0xd2, 0x58, 0xd2, 0x9f, - 0xd2, 0x58, 0xd1, 0x9f, 0xd2, 0x58, 0xd2, 0x9f, 0xd2, 0x58, 0xd1, 0x9f, - 0xd2, 0x58, 0xd2, 0x9f, 0xd3, 0x58, 0xd2, 0x9f, 0xd3, 0x56, 0xd2, 0x9f, - 0xd3, 0x58, 0xd2, 0x9f, 0xd4, 0x56, 0xd2, 0x9f, 0xd4, 0x58, 0xd2, 0x9f, - 0xd4, 0x56, 0xd2, 0x9f, 0xd4, 0x58, 0xd2, 0x9f, 0xd5, 0x56, 0xd2, 0x9f, - 0xd5, 0x58, 0xd2, 0x9f, 0xd5, 0x56, 0xd2, 0x9f, 0xd6, 0x58, 0xd2, 0x9f, - 0xd6, 0x56, 0xd2, 0x9f, 0xd6, 0x58, 0xd2, 0x9f, 0xd6, 0x56, 0xd2, 0x9f, - 0xd7, 0x58, 0xd2, 0x9f, 0xd7, 0x56, 0xd2, 0x9f, 0xd7, 0x58, 0xd2, 0x9f, - 0xd7, 0x56, 0xd2, 0x9f, 0xd8, 0x58, 0xd9, 0x9f, 0xd8, 0x4d, 0xd9, 0x9f, - 0xd8, 0x4d, 0xd9, 0x9f, 0xd9, 0x4d, 0xd9, 0x9f, 0xd9, 0x4d, 0xd9, 0x9f, - 0xd9, 0x4d, 0xdb, 0x9f, 0xd9, 0x4e, 0xdc, 0x9f, 0xda, 0x4e, 0xdb, 0x9f, - 0xda, 0x4e, 0xdc, 0x9f, 0xda, 0x4e, 0xdb, 0x9f, 0xda, 0x4e, 0xdc, 0x9f, - 0xdb, 0x4e, 0xdb, 0x9f, 0xdb, 0x4e, 0xdc, 0x9f, 0xdb, 0x4e, 0xdb, 0x9f, - 0xdb, 0x4e, 0xdc, 0x9f, 0xdc, 0x4e, 0xde, 0x9f, 0xdc, 0x4f, 0xde, 0x9f, - 0xdc, 0x4f, 0xde, 0x9f, 0xdd, 0x4f, 0xde, 0x9f, 0xdd, 0x4f, 0xde, 0x9f, - 0xdd, 0x4f, 0xde, 0x9f, 0xdd, 0x4f, 0xde, 0x9f, 0xde, 0x4f, 0xde, 0x9f, - 0xde, 0x4f, 0xde, 0x9f, 0xde, 0x4f, 0xe1, 0x9f, 0xde, 0x50, 0xe1, 0x9f, - 0xdf, 0x50, 0xe1, 0x9f, 0xdf, 0x50, 0xe1, 0x9f, 0xdf, 0x50, 0xe1, 0x9f, - 0xdf, 0x50, 0xe1, 0x9f, 0xe0, 0x50, 0xe1, 0x9f, 0xe0, 0x50, 0xe1, 0x9f, - 0xe0, 0x50, 0xe1, 0x9f, 0xe1, 0x50, 0xe1, 0x9f, 0xe1, 0x50, 0xe1, 0x9f, - 0xe1, 0x50, 0xe3, 0x9f, 0xe1, 0x51, 0xe3, 0x9f, 0xe2, 0x51, 0xe3, 0x9f, - 0xe2, 0x51, 0xe3, 0x9f, 0xe2, 0x51, 0xe3, 0x9f, 0xe2, 0x51, 0xe3, 0x9f, - 0xe3, 0x51, 0xe3, 0x9f, 0xe3, 0x51, 0xe3, 0x9f, 0xe3, 0x51, 0xe3, 0x9f, - 0xe3, 0x51, 0xe4, 0x9f, 0xe4, 0x51, 0xe5, 0x9f, 0xe4, 0x52, 0xe6, 0x9f, - 0xe4, 0x52, 0xe5, 0x9f, 0xe4, 0x52, 0xe6, 0x9f, 0xe5, 0x52, 0xe5, 0x9f, - 0xe5, 0x52, 0xe6, 0x9f, 0xe5, 0x52, 0xe5, 0x9f, 0xe5, 0x52, 0xe6, 0x9f, - 0xe6, 0x52, 0xe6, 0x9f, 0xe6, 0x52, 0xe8, 0x9f, 0xe6, 0x53, 0xe8, 0x9f, - 0xe6, 0x53, 0xe8, 0x9f, 0xe7, 0x53, 0xe8, 0x9f, 0xe7, 0x53, 0xe8, 0x9f, - 0xe7, 0x53, 0xe8, 0x9f, 0xe7, 0x53, 0xe8, 0x9f, 0xe8, 0x53, 0xe8, 0x9f, - 0xe8, 0x53, 0xe8, 0x9f, 0xe8, 0x53, 0xe8, 0x9f, 0xe8, 0x53, 0xe9, 0x9f, - 0xe9, 0x53, 0xe9, 0x9f, 0xe9, 0x53, 0xea, 0x9f, 0xe9, 0x54, 0xea, 0x9f, - 0xe9, 0x54, 0xea, 0x9f, 0xea, 0x54, 0xea, 0x9f, 0xea, 0x54, 0xea, 0x9f, - 0xea, 0x54, 0xea, 0x9f, 0xea, 0x54, 0xeb, 0x9f, 0xeb, 0x54, 0xeb, 0x9f, - 0xeb, 0x54, 0xeb, 0x9f, 0xeb, 0x54, 0xec, 0x9f, 0xeb, 0x55, 0xec, 0x9f, - 0xec, 0x55, 0xec, 0x9f, 0xec, 0x55, 0xec, 0x9f, 0xec, 0x55, 0xec, 0x9f, - 0xec, 0x55, 0xec, 0x9f, 0xec, 0x55, 0xed, 0x9f, 0xed, 0x55, 0xed, 0x9f, - 0xed, 0x55, 0xed, 0x9f, 0xed, 0x55, 0xee, 0x9f, 0xed, 0x56, 0xef, 0x9f, - 0xee, 0x56, 0xee, 0x9f, 0xee, 0x56, 0xef, 0x9f, 0xee, 0x56, 0xee, 0x9f, - 0xee, 0x56, 0xef, 0x9f, 0xef, 0x56, 0xef, 0x9f, 0xef, 0x56, 0xef, 0x9f, - 0xef, 0x56, 0xef, 0x9f, 0xef, 0x56, 0xf0, 0x9f, 0xf0, 0x56, 0xf0, 0x9f, - 0xf0, 0x56, 0xf0, 0x9f, 0xf0, 0x56, 0xf1, 0x9f, 0xf0, 0x57, 0xf1, 0x9f, - 0xf1, 0x57, 0xf1, 0x9f, 0xf1, 0x57, 0xf1, 0x9f, 0xf1, 0x57, 0xf1, 0x9f, - 0xf1, 0x57, 0xf2, 0x9f, 0xf2, 0x57, 0xf2, 0x9f, 0xf2, 0x57, 0xf2, 0x9f, - 0xf2, 0x57, 0xf2, 0x9f, 0xf2, 0x57, 0xf2, 0x9f, 0xf2, 0x57, 0xf3, 0x9f, - 0xf3, 0x57, 0xf3, 0xa0, 0xf3, 0x58, 0xf3, 0xa0, 0xf3, 0x58, 0xf3, 0xa0, - 0xf3, 0x58, 0xf4, 0xa0, 0xf4, 0x58, 0xf4, 0xa0, 0xf4, 0x58, 0xf4, 0xa0, - 0xf4, 0x58, 0xf4, 0xa0, 0xf4, 0x58, 0xf5, 0xa0, 0xf5, 0x58, 0xf5, 0xa0, - 0xf5, 0x58, 0xf5, 0xa0, 0xf5, 0x58, 0xf5, 0xa0, 0xf5, 0x58, 0xf5, 0xa1, - 0xf5, 0x58, 0xf6, 0xa1, 0xf6, 0x58, 0xf6, 0xa1, 0xf6, 0x58, 0xf6, 0xa1, - 0xf6, 0x58, 0xf6, 0xa1, 0xf6, 0x58, 0xf7, 0xa1, 0xf7, 0x58, 0xf7, 0xa1, - 0xf7, 0x58, 0xf7, 0xa1, 0xf7, 0x58, 0xf7, 0xa1, 0xf7, 0x58, 0xf8, 0xa1, - 0xf7, 0x58, 0xf8, 0xa1, 0xf7, 0x58, 0xf8, 0xa1, 0xf7, 0x58, 0xf8, 0xa1, - 0xf8, 0x58, 0xf8, 0xa1, 0xf8, 0x58, 0xf9, 0xa1, 0xf9, 0x58, 0xf9, 0xa1, - 0xf9, 0x58, 0xf9, 0xa1, 0xf9, 0x58, 0xf9, 0xa1, 0xf9, 0x58, 0xfa, 0xa1, - 0xf9, 0x58, 0xfa, 0xa1, 0xf9, 0x58, 0xfa, 0xa1, 0xf9, 0x58, 0xfa, 0xa2, - 0xfa, 0x58, 0xfa, 0xa2, 0xfa, 0x58, 0xfb, 0xa2, 0xfb, 0x58, 0xfb, 0xa2, - 0xfb, 0x58, 0xfb, 0xa2, 0xfb, 0x58, 0xfb, 0xa2, 0xfb, 0x58, 0xfc, 0xa2, - 0xfb, 0x58, 0xfc, 0xa2, 0xfb, 0x58, 0xfc, 0xa2, 0xfb, 0x58, 0xfc, 0xa2, - 0xfb, 0x58, 0xfc, 0xa2, 0xfb, 0x58, 0xfd, 0xa2, 0xfb, 0x58, 0xfd, 0xa2, - 0xfb, 0x58, 0xfd, 0xa3, 0xfb, 0x58, 0xfd, 0xa3, 0xfc, 0x58, 0xfe, 0xa3, - 0xfb, 0x58, 0xfe, 0xa3, 0xfc, 0x58, 0xfe, 0xa3, 0xfb, 0x58, 0xfe, 0xa3, - 0xfc, 0x58, 0xfe, 0xa3, 0xfb, 0x58, 0xff, 0xa3, 0xfc, 0x58, 0xff, 0xa3, - 0xfb, 0x58, 0x03, 0xaa, 0x95, 0x59, 0x0a, 0xa8, 0x96, 0x59, 0x0f, 0xaa, - 0x95, 0x59, 0x14, 0xa8, 0x96, 0x59, 0x17, 0xaa, 0x95, 0x59, 0x1b, 0xa8, - 0x96, 0x59, 0x1e, 0xaa, 0x95, 0x59, 0x20, 0xa8, 0x96, 0x59, 0x23, 0xaa, - 0x95, 0x59, 0x25, 0xa8, 0x96, 0x59, 0x27, 0xaa, 0x95, 0x59, 0x29, 0xa8, - 0x96, 0x59, 0x2b, 0xaa, 0x95, 0x59, 0x2d, 0xa8, 0x96, 0x59, 0x2f, 0xaa, - 0x95, 0x59, 0x31, 0xa8, 0x96, 0x59, 0x32, 0xaa, 0x95, 0x59, 0x34, 0xa8, - 0x96, 0x59, 0x35, 0xaa, 0x95, 0x59, 0x37, 0xa8, 0x96, 0x59, 0x38, 0xaa, - 0x95, 0x59, 0x3a, 0xa8, 0x96, 0x59, 0x3b, 0xaa, 0x95, 0x59, 0x3c, 0xa8, - 0x96, 0x59, 0x3e, 0xa6, 0x96, 0x59, 0x3f, 0xa8, 0x96, 0x59, 0x40, 0xa6, - 0x96, 0x59, 0x42, 0xa8, 0x96, 0x59, 0x43, 0xa6, 0x96, 0x59, 0x44, 0xa8, - 0x96, 0x59, 0x45, 0xa6, 0x96, 0x59, 0x46, 0xa8, 0x96, 0x59, 0x47, 0xa6, - 0x96, 0x59, 0x48, 0xa8, 0x96, 0x59, 0x49, 0xa6, 0x96, 0x59, 0x4a, 0xa8, - 0x96, 0x59, 0x4b, 0xa6, 0x96, 0x59, 0x4c, 0xa8, 0x96, 0x59, 0x4d, 0xa6, - 0x96, 0x59, 0x4e, 0xa8, 0x96, 0x59, 0x4f, 0xa6, 0x96, 0x59, 0x50, 0xa8, - 0x96, 0x59, 0x51, 0xa6, 0x96, 0x59, 0x52, 0xa8, 0x96, 0x59, 0x53, 0xa6, - 0x96, 0x59, 0x54, 0xa8, 0x96, 0x59, 0x55, 0xa6, 0x96, 0x59, 0x56, 0xa8, - 0x96, 0x59, 0x57, 0xa6, 0x96, 0x59, 0x58, 0xa8, 0x96, 0x59, 0x58, 0xa6, - 0x96, 0x59, 0x59, 0xa8, 0x96, 0x59, 0x5a, 0xa6, 0x96, 0x59, 0x5b, 0xa8, - 0x96, 0x59, 0x5c, 0xa6, 0x96, 0x59, 0x5d, 0xa8, 0x96, 0x59, 0x5d, 0xa6, - 0x96, 0x59, 0x5e, 0xa8, 0x96, 0x59, 0x5f, 0xa6, 0x96, 0x59, 0x60, 0xa8, - 0x96, 0x59, 0x60, 0xa6, 0x96, 0x59, 0x61, 0xa3, 0x97, 0x59, 0x62, 0xa6, - 0x96, 0x59, 0x63, 0xa3, 0x97, 0x59, 0x63, 0xa6, 0x96, 0x59, 0x64, 0xa3, - 0x97, 0x59, 0x65, 0xa6, 0x96, 0x59, 0x66, 0xa3, 0x97, 0x59, 0x66, 0xa6, - 0x96, 0x59, 0x67, 0xa3, 0x97, 0x59, 0x68, 0xa6, 0x96, 0x59, 0x68, 0xa3, - 0x97, 0x59, 0x69, 0xa6, 0x96, 0x59, 0x6a, 0xa3, 0x97, 0x59, 0x6a, 0xa6, - 0x96, 0x59, 0x6b, 0xa3, 0x97, 0x59, 0x6c, 0xa6, 0x96, 0x59, 0x6c, 0xa3, - 0x97, 0x59, 0x6d, 0xa6, 0x96, 0x59, 0x6e, 0xa3, 0x97, 0x59, 0x6e, 0xa6, - 0x96, 0x59, 0x6f, 0xa3, 0x97, 0x59, 0x70, 0xa6, 0x96, 0x59, 0x70, 0xa3, - 0x97, 0x59, 0x71, 0xa6, 0x96, 0x59, 0x72, 0xa3, 0x97, 0x59, 0x72, 0xa6, - 0x96, 0x59, 0x73, 0xa3, 0x97, 0x59, 0x73, 0xa6, 0x96, 0x59, 0x74, 0xa3, - 0x97, 0x59, 0x75, 0xa6, 0x96, 0x59, 0x75, 0xa3, 0x97, 0x59, 0x76, 0xa6, - 0x96, 0x59, 0x76, 0xa3, 0x97, 0x59, 0x77, 0xa0, 0x97, 0x59, 0x78, 0xa3, - 0x97, 0x59, 0x78, 0xa0, 0x97, 0x59, 0x79, 0xa3, 0x97, 0x59, 0x79, 0xa0, - 0x97, 0x59, 0x7a, 0xa3, 0x97, 0x59, 0x7a, 0xa0, 0x97, 0x59, 0x7b, 0xa3, - 0x97, 0x59, 0x7c, 0xa0, 0x97, 0x59, 0x7c, 0xa3, 0x97, 0x59, 0x7d, 0xa0, - 0x97, 0x59, 0x7d, 0xa3, 0x97, 0x59, 0x7e, 0xa0, 0x97, 0x59, 0x7e, 0xa3, - 0x97, 0x59, 0x7f, 0xa0, 0x97, 0x59, 0x7f, 0xa3, 0x97, 0x59, 0x80, 0xa0, - 0x97, 0x59, 0x81, 0xa3, 0x97, 0x59, 0x81, 0xa0, 0x97, 0x59, 0x82, 0xa3, - 0x97, 0x59, 0x82, 0xa0, 0x97, 0x59, 0x83, 0xa3, 0x97, 0x59, 0x83, 0xa0, - 0x97, 0x59, 0x84, 0xa3, 0x97, 0x59, 0x84, 0xa0, 0x97, 0x59, 0x85, 0xa3, - 0x97, 0x59, 0x85, 0xa0, 0x97, 0x59, 0x86, 0xa3, 0x97, 0x59, 0x86, 0xa0, - 0x97, 0x59, 0x87, 0xa3, 0x97, 0x59, 0x87, 0xa0, 0x97, 0x59, 0x88, 0xa3, - 0x97, 0x59, 0x88, 0xa0, 0x97, 0x59, 0x89, 0xa3, 0x97, 0x59, 0x89, 0xa0, - 0x97, 0x59, 0x8a, 0xa3, 0x97, 0x59, 0x8a, 0xa0, 0x97, 0x59, 0x8b, 0xa3, - 0x97, 0x59, 0x8b, 0xa0, 0x97, 0x59, 0x8c, 0xa3, 0x97, 0x59, 0x8c, 0xa0, - 0x97, 0x59, 0x8d, 0x9f, 0x98, 0x59, 0x8d, 0xa0, 0x97, 0x59, 0x8e, 0x9f, - 0x98, 0x59, 0x8e, 0xa0, 0x97, 0x59, 0x8e, 0x9f, 0x98, 0x59, 0x8f, 0xa0, - 0x97, 0x59, 0x8f, 0x9f, 0x98, 0x59, 0x90, 0xa0, 0x97, 0x59, 0x90, 0x9f, - 0x98, 0x59, 0x91, 0xa0, 0x97, 0x59, 0x91, 0x9f, 0x98, 0x59, 0x92, 0xa0, - 0x97, 0x59, 0x92, 0x9f, 0x98, 0x59, 0x93, 0xa0, 0x97, 0x59, 0x93, 0x9f, - 0x98, 0x59, 0x94, 0xa0, 0x97, 0x59, 0x94, 0x9f, 0x98, 0x59, 0x94, 0xa0, - 0x97, 0x59, 0x95, 0x9f, 0x98, 0x59, 0x95, 0xa0, 0x97, 0x59, 0x96, 0x9f, - 0x98, 0x59, 0x96, 0xa0, 0x97, 0x59, 0x97, 0x9f, 0x98, 0x59, 0x97, 0xa0, - 0x97, 0x59, 0x97, 0x9f, 0x98, 0x59, 0x97, 0x9f, 0x98, 0x59, 0x97, 0x9f, - 0x98, 0x59, 0x97, 0x9f, 0x99, 0x59, 0x9b, 0x9f, 0x99, 0x59, 0x9b, 0x9f, - 0x9a, 0x59, 0x9b, 0x9f, 0x9a, 0x59, 0x9b, 0x9f, 0x9a, 0x59, 0x9b, 0x9f, - 0x9b, 0x59, 0x9b, 0x9f, 0x9a, 0x59, 0x9c, 0x9f, 0x9b, 0x59, 0x9c, 0x9f, - 0x9a, 0x59, 0x9d, 0x9f, 0x9b, 0x59, 0x9d, 0x9f, 0x9a, 0x59, 0x9d, 0x9f, - 0x9b, 0x59, 0x9e, 0x9f, 0x9a, 0x59, 0x9e, 0x9f, 0x9b, 0x59, 0x9f, 0x9d, - 0x9b, 0x59, 0x9f, 0x9f, 0x9b, 0x59, 0x9f, 0x9d, 0x9b, 0x59, 0xa0, 0x9f, - 0x9b, 0x59, 0xa0, 0x9d, 0x9b, 0x59, 0xa1, 0x9f, 0x9b, 0x59, 0xa1, 0x9d, - 0x9b, 0x59, 0xa1, 0x9f, 0x9b, 0x59, 0xa2, 0x9d, 0x9b, 0x59, 0xa2, 0x9f, - 0x9b, 0x59, 0xa3, 0x9d, 0x9b, 0x59, 0xa3, 0x9f, 0x9b, 0x59, 0xa3, 0x9d, - 0x9b, 0x59, 0xa4, 0x9f, 0x9b, 0x59, 0xa4, 0x9d, 0x9b, 0x59, 0xa5, 0x9f, - 0x9b, 0x59, 0xa5, 0x9d, 0x9b, 0x59, 0xa5, 0x9f, 0x9b, 0x59, 0xa6, 0x9d, - 0x9b, 0x59, 0xa6, 0x9f, 0x9b, 0x59, 0xa6, 0x9d, 0x9b, 0x59, 0xa7, 0x9f, - 0x9b, 0x59, 0xa7, 0x9d, 0x9b, 0x59, 0xa8, 0x9f, 0x9b, 0x59, 0xa8, 0x9d, - 0x9b, 0x59, 0xa8, 0x9f, 0x9b, 0x59, 0xa9, 0x9d, 0x9b, 0x59, 0xa9, 0x9a, - 0x9c, 0x59, 0xaa, 0x90, 0xaa, 0x59, 0xaa, 0x91, 0xae, 0x59, 0xaa, 0x90, - 0xaa, 0x59, 0xab, 0x91, 0xae, 0x59, 0xab, 0x91, 0xaf, 0x59, 0xab, 0x91, - 0xae, 0x59, 0xac, 0x91, 0xaf, 0x59, 0xac, 0x91, 0xae, 0x59, 0xac, 0x91, - 0xaf, 0x59, 0xad, 0x91, 0xae, 0x59, 0xad, 0x91, 0xaf, 0x59, 0xae, 0x91, - 0xae, 0x59, 0xae, 0x91, 0xaf, 0x59, 0xae, 0x91, 0xae, 0x59, 0xaf, 0x92, - 0xb2, 0x59, 0xaf, 0x92, 0xb3, 0x59, 0xaf, 0x92, 0xb2, 0x59, 0xb0, 0x92, - 0xb3, 0x59, 0xb0, 0x92, 0xb2, 0x59, 0xb0, 0x92, 0xb3, 0x59, 0xb1, 0x92, - 0xb2, 0x59, 0xb1, 0x92, 0xb3, 0x59, 0xb2, 0x92, 0xb2, 0x59, 0xb2, 0x92, - 0xb3, 0x59, 0xb2, 0x92, 0xb2, 0x59, 0xb3, 0x93, 0xb6, 0x59, 0xb3, 0x93, - 0xb6, 0x59, 0xb3, 0x93, 0xb6, 0x59, 0xb4, 0x93, 0xb6, 0x59, 0xb4, 0x93, - 0xb6, 0x59, 0xb4, 0x93, 0xb6, 0x59, 0xb5, 0x93, 0xb6, 0x59, 0xb5, 0x93, - 0xb6, 0x59, 0xb5, 0x93, 0xb6, 0x59, 0xb6, 0x93, 0xb6, 0x59, 0xb6, 0x93, - 0xb6, 0x59, 0xb6, 0x93, 0xb6, 0x59, 0xb7, 0x94, 0xba, 0x59, 0xb7, 0x94, - 0xba, 0x59, 0xb7, 0x94, 0xba, 0x59, 0xb8, 0x94, 0xba, 0x59, 0xb8, 0x94, - 0xba, 0x59, 0xb8, 0x94, 0xba, 0x59, 0xb9, 0x94, 0xba, 0x59, 0xb9, 0x94, - 0xba, 0x59, 0xb9, 0x94, 0xba, 0x59, 0xba, 0x94, 0xba, 0x59, 0xba, 0x94, - 0xba, 0x59, 0xba, 0x94, 0xbe, 0x59, 0xbb, 0x94, 0xbe, 0x59, 0xbb, 0x94, - 0xbe, 0x59, 0xbb, 0x94, 0xbe, 0x59, 0xbc, 0x94, 0xbe, 0x59, 0xbc, 0x94, - 0xbe, 0x59, 0xbc, 0x94, 0xbe, 0x59, 0xbd, 0x94, 0xbe, 0x59, 0xbd, 0x94, - 0xbe, 0x59, 0xbd, 0x94, 0xbe, 0x59, 0xbe, 0x94, 0xbe, 0x59, 0xbe, 0x94, - 0xbe, 0x59, 0xbe, 0x94, 0xbe, 0x59, 0xbf, 0x95, 0xc1, 0x59, 0xbf, 0x95, - 0xc1, 0x59, 0xbf, 0x95, 0xc1, 0x59, 0xc0, 0x95, 0xc1, 0x59, 0xc0, 0x95, - 0xc1, 0x59, 0xc0, 0x95, 0xc1, 0x59, 0xc1, 0x95, 0xc1, 0x59, 0xc1, 0x95, - 0xc1, 0x59, 0xc1, 0x95, 0xc1, 0x59, 0xc1, 0x95, 0xc1, 0x59, 0xc2, 0x95, - 0xc2, 0x59, 0xc2, 0x96, 0xc5, 0x59, 0xc2, 0x96, 0xc5, 0x59, 0xc3, 0x96, - 0xc5, 0x59, 0xc3, 0x96, 0xc5, 0x59, 0xc3, 0x96, 0xc5, 0x59, 0xc4, 0x96, - 0xc5, 0x59, 0xc4, 0x96, 0xc5, 0x59, 0xc4, 0x96, 0xc5, 0x59, 0xc5, 0x96, - 0xc5, 0x59, 0xc5, 0x96, 0xc5, 0x59, 0xc5, 0x96, 0xc5, 0x59, 0xc6, 0x97, - 0xc8, 0x59, 0xc6, 0x97, 0xc8, 0x59, 0xc6, 0x97, 0xc8, 0x59, 0xc6, 0x97, - 0xc8, 0x59, 0xc7, 0x97, 0xc8, 0x59, 0xc7, 0x97, 0xc8, 0x59, 0xc7, 0x97, - 0xc8, 0x59, 0xc8, 0x97, 0xc8, 0x59, 0xc8, 0x97, 0xc8, 0x59, 0xc8, 0x97, - 0xc8, 0x59, 0xc9, 0x97, 0xc9, 0x59, 0xc9, 0x98, 0xcb, 0x59, 0xc9, 0x98, - 0xcc, 0x59, 0xc9, 0x98, 0xcb, 0x59, 0xca, 0x98, 0xcc, 0x59, 0xca, 0x98, - 0xcb, 0x59, 0xca, 0x98, 0xcc, 0x59, 0xcb, 0x98, 0xcb, 0x59, 0xcb, 0x98, - 0xcc, 0x59, 0xcb, 0x98, 0xcb, 0x59, 0xcc, 0x98, 0xcc, 0x59, 0xcc, 0x98, - 0xcc, 0x59, 0xcc, 0x99, 0xce, 0x59, 0xcc, 0x99, 0xcf, 0x59, 0xcd, 0x99, - 0xce, 0x59, 0xcd, 0xa0, 0xd2, 0x59, 0xcd, 0x9f, 0xd2, 0x59, 0xce, 0xa0, - 0xd2, 0x59, 0xce, 0x9f, 0xd2, 0x59, 0xce, 0xa0, 0xd2, 0x59, 0xce, 0x9f, - 0xd2, 0x59, 0xcf, 0xa0, 0xd2, 0x59, 0xcf, 0x9f, 0xd2, 0x59, 0xcf, 0xa0, - 0xd2, 0x59, 0xd0, 0x9f, 0xd2, 0x59, 0xd0, 0xa0, 0xd2, 0x59, 0xd0, 0x9f, - 0xd2, 0x59, 0xd0, 0xa0, 0xd2, 0x59, 0xd1, 0x9f, 0xd2, 0x59, 0xd1, 0xa0, - 0xd2, 0x59, 0xd1, 0x9f, 0xd2, 0x59, 0xd2, 0x9f, 0xd2, 0x59, 0xd1, 0x9f, - 0xd2, 0x59, 0xd2, 0x9f, 0xd2, 0x59, 0xd1, 0x9f, 0xd2, 0x59, 0xd2, 0x9f, - 0xd3, 0x59, 0xd2, 0x9f, 0xd3, 0x57, 0xd2, 0x9f, 0xd3, 0x59, 0xd2, 0x9f, - 0xd4, 0x57, 0xd2, 0x9f, 0xd4, 0x59, 0xd2, 0x9f, 0xd4, 0x57, 0xd2, 0x9f, - 0xd4, 0x59, 0xd2, 0x9f, 0xd5, 0x57, 0xd2, 0x9f, 0xd5, 0x59, 0xd2, 0x9f, - 0xd5, 0x57, 0xd2, 0x9f, 0xd6, 0x59, 0xd2, 0x9f, 0xd6, 0x57, 0xd2, 0x9f, - 0xd6, 0x59, 0xd2, 0x9f, 0xd6, 0x57, 0xd2, 0x9f, 0xd7, 0x59, 0xd2, 0x9f, - 0xd7, 0x57, 0xd2, 0x9f, 0xd7, 0x59, 0xd2, 0x9f, 0xd7, 0x57, 0xd2, 0x9f, - 0xd8, 0x59, 0xd2, 0x9f, 0xd8, 0x57, 0xda, 0x9f, 0xd8, 0x4e, 0xdb, 0x9f, - 0xd9, 0x4e, 0xda, 0x9f, 0xd9, 0x4e, 0xdb, 0x9f, 0xd9, 0x4e, 0xda, 0x9f, - 0xd9, 0x4e, 0xdb, 0x9f, 0xda, 0x4e, 0xda, 0x9f, 0xda, 0x4e, 0xdb, 0x9f, - 0xda, 0x4e, 0xda, 0x9f, 0xda, 0x4e, 0xdd, 0x9f, 0xdb, 0x4f, 0xdd, 0x9f, - 0xdb, 0x4f, 0xdd, 0x9f, 0xdb, 0x4f, 0xdd, 0x9f, 0xdb, 0x4f, 0xdd, 0x9f, - 0xdc, 0x4f, 0xdd, 0x9f, 0xdc, 0x4f, 0xdd, 0x9f, 0xdc, 0x4f, 0xdd, 0x9f, - 0xdd, 0x4f, 0xdd, 0x9f, 0xdd, 0x4f, 0xdf, 0x9f, 0xdd, 0x50, 0xdf, 0x9f, - 0xdd, 0x50, 0xdf, 0x9f, 0xde, 0x50, 0xdf, 0x9f, 0xde, 0x50, 0xdf, 0x9f, - 0xde, 0x50, 0xdf, 0x9f, 0xde, 0x50, 0xdf, 0x9f, 0xdf, 0x50, 0xdf, 0x9f, - 0xdf, 0x50, 0xdf, 0x9f, 0xdf, 0x50, 0xdf, 0x9f, 0xdf, 0x50, 0xe2, 0x9f, - 0xe0, 0x51, 0xe2, 0x9f, 0xe0, 0x51, 0xe2, 0x9f, 0xe0, 0x51, 0xe2, 0x9f, - 0xe1, 0x51, 0xe2, 0x9f, 0xe1, 0x51, 0xe2, 0x9f, 0xe1, 0x51, 0xe2, 0x9f, - 0xe1, 0x51, 0xe2, 0x9f, 0xe2, 0x51, 0xe2, 0x9f, 0xe2, 0x51, 0xe2, 0x9f, - 0xe2, 0x51, 0xe2, 0x9f, 0xe2, 0x51, 0xe4, 0x9f, 0xe3, 0x52, 0xe4, 0x9f, - 0xe3, 0x52, 0xe4, 0x9f, 0xe3, 0x52, 0xe4, 0x9f, 0xe3, 0x52, 0xe4, 0x9f, - 0xe4, 0x52, 0xe4, 0x9f, 0xe4, 0x52, 0xe4, 0x9f, 0xe4, 0x52, 0xe4, 0x9f, - 0xe4, 0x52, 0xe5, 0x9f, 0xe5, 0x52, 0xe6, 0x9f, 0xe5, 0x53, 0xe7, 0x9f, - 0xe5, 0x53, 0xe6, 0x9f, 0xe5, 0x53, 0xe7, 0x9f, 0xe6, 0x53, 0xe6, 0x9f, - 0xe6, 0x53, 0xe7, 0x9f, 0xe6, 0x53, 0xe6, 0x9f, 0xe6, 0x53, 0xe7, 0x9f, - 0xe7, 0x53, 0xe7, 0x9f, 0xe7, 0x53, 0xe7, 0x9f, 0xe7, 0x53, 0xe9, 0x9f, - 0xe7, 0x54, 0xe9, 0x9f, 0xe8, 0x54, 0xe9, 0x9f, 0xe8, 0x54, 0xe9, 0x9f, - 0xe8, 0x54, 0xe9, 0x9f, 0xe8, 0x54, 0xe9, 0x9f, 0xe9, 0x54, 0xe9, 0x9f, - 0xe9, 0x54, 0xe9, 0x9f, 0xe9, 0x54, 0xe9, 0x9f, 0xe9, 0x54, 0xea, 0x9f, - 0xea, 0x54, 0xea, 0x9f, 0xea, 0x54, 0xeb, 0x9f, 0xea, 0x55, 0xeb, 0x9f, - 0xea, 0x55, 0xeb, 0x9f, 0xeb, 0x55, 0xeb, 0x9f, 0xeb, 0x55, 0xeb, 0x9f, - 0xeb, 0x55, 0xeb, 0x9f, 0xeb, 0x55, 0xec, 0x9f, 0xec, 0x55, 0xec, 0x9f, - 0xec, 0x55, 0xec, 0x9f, 0xec, 0x55, 0xec, 0x9f, 0xec, 0x55, 0xed, 0x9f, - 0xec, 0x56, 0xee, 0x9f, 0xed, 0x56, 0xed, 0x9f, 0xed, 0x56, 0xee, 0x9f, - 0xed, 0x56, 0xed, 0x9f, 0xed, 0x56, 0xee, 0x9f, 0xee, 0x56, 0xee, 0x9f, - 0xee, 0x56, 0xee, 0x9f, 0xee, 0x56, 0xee, 0x9f, 0xee, 0x56, 0xf0, 0x9f, - 0xef, 0x57, 0xf0, 0x9f, 0xef, 0x57, 0xf0, 0x9f, 0xef, 0x57, 0xf0, 0x9f, - 0xef, 0x57, 0xf0, 0x9f, 0xf0, 0x57, 0xf0, 0x9f, 0xf0, 0x57, 0xf0, 0x9f, - 0xf0, 0x57, 0xf0, 0x9f, 0xf0, 0x57, 0xf1, 0x9f, 0xf1, 0x57, 0xf1, 0x9f, - 0xf1, 0x57, 0xf1, 0x9f, 0xf1, 0x57, 0xf2, 0x9f, 0xf1, 0x58, 0xf2, 0x9f, - 0xf2, 0x58, 0xf2, 0x9f, 0xf2, 0x58, 0xf2, 0x9f, 0xf2, 0x58, 0xf2, 0x9f, - 0xf2, 0x58, 0xf2, 0x9f, 0xf2, 0x58, 0xf3, 0x9f, 0xf3, 0x58, 0xf3, 0x9f, - 0xf3, 0x58, 0xf3, 0x9f, 0xf3, 0x58, 0xf3, 0x9f, 0xf3, 0x58, 0xf4, 0x9f, - 0xf4, 0x58, 0xf4, 0x9f, 0xf4, 0x58, 0xf4, 0xa0, 0xf4, 0x59, 0xf4, 0xa0, - 0xf4, 0x59, 0xf5, 0xa0, 0xf5, 0x59, 0xf5, 0xa0, 0xf5, 0x59, 0xf5, 0xa0, - 0xf5, 0x59, 0xf5, 0xa0, 0xf5, 0x59, 0xf5, 0xa0, 0xf5, 0x59, 0xf6, 0xa0, - 0xf6, 0x59, 0xf6, 0xa0, 0xf6, 0x59, 0xf6, 0xa0, 0xf6, 0x59, 0xf6, 0xa0, - 0xf6, 0x59, 0xf7, 0xa1, 0xf7, 0x59, 0xf7, 0xa1, 0xf7, 0x59, 0xf7, 0xa1, - 0xf7, 0x59, 0xf7, 0xa1, 0xf7, 0x59, 0xf8, 0xa1, 0xf8, 0x59, 0xf8, 0xa1, - 0xf8, 0x59, 0xf8, 0xa1, 0xf8, 0x59, 0xf8, 0xa1, 0xf8, 0x59, 0xf8, 0xa1, - 0xf8, 0x59, 0xf9, 0xa1, 0xf8, 0x59, 0xf9, 0xa1, 0xf8, 0x59, 0xf9, 0xa2, - 0xf9, 0x59, 0xf9, 0xa2, 0xf9, 0x59, 0xfa, 0xa2, 0xfa, 0x59, 0xfa, 0xa2, - 0xfa, 0x59, 0xfa, 0xa2, 0xfa, 0x59, 0xfa, 0xa2, 0xfa, 0x59, 0xfa, 0xa2, - 0xfa, 0x59, 0xfb, 0xa2, 0xfa, 0x59, 0xfb, 0xa2, 0xfa, 0x59, 0xfb, 0xa2, - 0xfa, 0x59, 0xfb, 0xa3, 0xfb, 0x59, 0xfc, 0xa3, 0xfc, 0x59, 0xfc, 0xa3, - 0xfb, 0x59, 0xfc, 0xa3, 0xfc, 0x59, 0xfc, 0xa3, 0xfb, 0x59, 0xfc, 0xa3, - 0xfc, 0x59, 0xfd, 0xa3, 0xfb, 0x59, 0xfd, 0xa3, 0xfc, 0x59, 0xfd, 0xa3, - 0xfb, 0x59, 0xfd, 0xa3, 0xfc, 0x59, 0xfe, 0xa3, 0xfb, 0x59, 0xfe, 0xa3, - 0xfc, 0x59, 0xfe, 0xa3, 0xfb, 0x59, 0xfe, 0xa3, 0xfc, 0x59, 0xfe, 0xa3, - 0xfb, 0x59, 0xff, 0xa3, 0xfc, 0x59, 0xff, 0xa3, 0xfb, 0x59, 0x03, 0xab, - 0x95, 0x59, 0x0a, 0xa8, 0x96, 0x59, 0x0f, 0xab, 0x95, 0x59, 0x14, 0xa8, - 0x96, 0x59, 0x17, 0xab, 0x95, 0x59, 0x1b, 0xa8, 0x96, 0x59, 0x1e, 0xab, - 0x95, 0x59, 0x20, 0xa8, 0x96, 0x59, 0x23, 0xa5, 0x96, 0x59, 0x25, 0xa8, - 0x96, 0x59, 0x27, 0xa5, 0x96, 0x59, 0x29, 0xa8, 0x96, 0x59, 0x2b, 0xa5, - 0x96, 0x59, 0x2d, 0xa8, 0x96, 0x59, 0x2f, 0xa5, 0x96, 0x59, 0x31, 0xa8, - 0x96, 0x59, 0x32, 0xa5, 0x96, 0x59, 0x34, 0xa8, 0x96, 0x59, 0x35, 0xa5, - 0x96, 0x59, 0x37, 0xa8, 0x96, 0x59, 0x38, 0xa5, 0x96, 0x59, 0x3a, 0xa8, - 0x96, 0x59, 0x3b, 0xa5, 0x96, 0x59, 0x3c, 0xa8, 0x96, 0x59, 0x3e, 0xa5, - 0x96, 0x59, 0x3f, 0xa8, 0x96, 0x59, 0x40, 0xa5, 0x96, 0x59, 0x42, 0xa8, - 0x96, 0x59, 0x43, 0xa5, 0x96, 0x59, 0x44, 0xa8, 0x96, 0x59, 0x45, 0xa5, - 0x96, 0x59, 0x46, 0xa8, 0x96, 0x59, 0x47, 0xa5, 0x96, 0x59, 0x48, 0xa8, - 0x96, 0x59, 0x49, 0xa5, 0x96, 0x59, 0x4a, 0xa8, 0x96, 0x59, 0x4b, 0xa5, - 0x96, 0x59, 0x4c, 0xa8, 0x96, 0x59, 0x4d, 0xa5, 0x96, 0x59, 0x4e, 0xa8, - 0x96, 0x59, 0x4f, 0xa5, 0x96, 0x59, 0x50, 0xa8, 0x96, 0x59, 0x51, 0xa5, - 0x96, 0x59, 0x52, 0xa8, 0x96, 0x59, 0x53, 0xa5, 0x96, 0x59, 0x54, 0xa8, - 0x96, 0x59, 0x55, 0xa5, 0x96, 0x59, 0x56, 0xa8, 0x96, 0x59, 0x57, 0xa5, - 0x96, 0x59, 0x58, 0xa8, 0x96, 0x59, 0x58, 0xa5, 0x96, 0x59, 0x59, 0xa8, - 0x96, 0x59, 0x5a, 0xa5, 0x96, 0x59, 0x5b, 0xa3, 0x97, 0x59, 0x5c, 0xa5, - 0x96, 0x59, 0x5d, 0xa3, 0x97, 0x59, 0x5d, 0xa5, 0x96, 0x59, 0x5e, 0xa3, - 0x97, 0x59, 0x5f, 0xa5, 0x96, 0x59, 0x60, 0xa3, 0x97, 0x59, 0x60, 0xa5, - 0x96, 0x59, 0x61, 0xa3, 0x97, 0x59, 0x62, 0xa5, 0x96, 0x59, 0x63, 0xa3, - 0x97, 0x59, 0x63, 0xa5, 0x96, 0x59, 0x64, 0xa3, 0x97, 0x59, 0x65, 0xa5, - 0x96, 0x59, 0x66, 0xa3, 0x97, 0x59, 0x66, 0xa5, 0x96, 0x59, 0x67, 0xa3, - 0x97, 0x59, 0x68, 0xa5, 0x96, 0x59, 0x68, 0xa3, 0x97, 0x59, 0x69, 0xa5, - 0x96, 0x59, 0x6a, 0xa3, 0x97, 0x59, 0x6a, 0xa5, 0x96, 0x59, 0x6b, 0xa3, - 0x97, 0x59, 0x6c, 0xa5, 0x96, 0x59, 0x6c, 0xa3, 0x97, 0x59, 0x6d, 0xa5, - 0x96, 0x59, 0x6e, 0xa3, 0x97, 0x59, 0x6e, 0xa5, 0x96, 0x59, 0x6f, 0xa3, - 0x97, 0x59, 0x70, 0xa5, 0x96, 0x59, 0x70, 0xa3, 0x97, 0x59, 0x71, 0xa5, - 0x96, 0x59, 0x72, 0xa3, 0x97, 0x59, 0x72, 0xa5, 0x96, 0x59, 0x73, 0xa3, - 0x97, 0x59, 0x73, 0xa5, 0x96, 0x59, 0x74, 0xa3, 0x97, 0x59, 0x75, 0xa5, - 0x96, 0x59, 0x75, 0xa3, 0x97, 0x59, 0x76, 0xa5, 0x96, 0x59, 0x76, 0xa3, - 0x97, 0x59, 0x77, 0xa5, 0x96, 0x59, 0x78, 0xa3, 0x97, 0x59, 0x78, 0xa5, - 0x96, 0x59, 0x79, 0xa3, 0x97, 0x59, 0x79, 0xa5, 0x96, 0x59, 0x7a, 0xa3, - 0x97, 0x59, 0x7a, 0xa5, 0x96, 0x59, 0x7b, 0xa3, 0x97, 0x59, 0x7c, 0xa5, - 0x96, 0x59, 0x7c, 0xa3, 0x97, 0x59, 0x7d, 0xa5, 0x96, 0x59, 0x7d, 0xa3, - 0x97, 0x59, 0x7e, 0xa5, 0x96, 0x59, 0x7e, 0xa3, 0x97, 0x59, 0x7f, 0xa5, - 0x96, 0x59, 0x7f, 0xa3, 0x97, 0x59, 0x80, 0xa1, 0x97, 0x59, 0x81, 0xa3, - 0x97, 0x59, 0x81, 0xa1, 0x97, 0x59, 0x82, 0xa3, 0x97, 0x59, 0x82, 0xa1, - 0x97, 0x59, 0x83, 0xa3, 0x97, 0x59, 0x83, 0xa1, 0x97, 0x59, 0x84, 0xa3, - 0x97, 0x59, 0x84, 0xa1, 0x97, 0x59, 0x85, 0xa3, 0x97, 0x59, 0x85, 0xa1, - 0x97, 0x59, 0x86, 0xa3, 0x97, 0x59, 0x86, 0xa1, 0x97, 0x59, 0x87, 0xa3, - 0x97, 0x59, 0x87, 0xa1, 0x97, 0x59, 0x88, 0xa3, 0x97, 0x59, 0x88, 0xa1, - 0x97, 0x59, 0x89, 0xa3, 0x97, 0x59, 0x89, 0xa1, 0x97, 0x59, 0x8a, 0xa3, - 0x97, 0x59, 0x8a, 0xa1, 0x97, 0x59, 0x8b, 0xa3, 0x97, 0x59, 0x8b, 0xa1, - 0x97, 0x59, 0x8c, 0xa3, 0x97, 0x59, 0x8c, 0xa1, 0x97, 0x59, 0x8d, 0xa3, - 0x97, 0x59, 0x8d, 0xa1, 0x97, 0x59, 0x8e, 0xa3, 0x97, 0x59, 0x8e, 0xa1, - 0x97, 0x59, 0x8e, 0xa3, 0x97, 0x59, 0x8f, 0xa1, 0x97, 0x59, 0x8f, 0xa3, - 0x97, 0x59, 0x90, 0xa1, 0x97, 0x59, 0x90, 0xa0, 0x98, 0x59, 0x91, 0xa1, - 0x97, 0x59, 0x91, 0xa0, 0x98, 0x59, 0x92, 0xa1, 0x97, 0x59, 0x92, 0xa0, - 0x98, 0x59, 0x93, 0xa1, 0x97, 0x59, 0x93, 0xa0, 0x98, 0x59, 0x94, 0xa1, - 0x97, 0x59, 0x94, 0xa0, 0x98, 0x59, 0x94, 0xa1, 0x97, 0x59, 0x95, 0xa0, - 0x98, 0x59, 0x95, 0xa1, 0x97, 0x59, 0x96, 0xa0, 0x98, 0x59, 0x96, 0xa1, - 0x97, 0x59, 0x97, 0xa0, 0x98, 0x59, 0x97, 0xa1, 0x97, 0x59, 0x97, 0xa0, - 0x98, 0x59, 0x97, 0xa0, 0x98, 0x59, 0x97, 0xa0, 0x98, 0x59, 0x97, 0xa0, - 0x99, 0x59, 0x9b, 0xa0, 0x99, 0x59, 0x9b, 0xa0, 0x9a, 0x59, 0x9b, 0xa0, - 0x9a, 0x59, 0x9b, 0xa0, 0x9a, 0x59, 0x9b, 0x9f, 0x9b, 0x59, 0x9b, 0xa0, - 0x9a, 0x59, 0x9c, 0x9f, 0x9b, 0x59, 0x9c, 0xa0, 0x9a, 0x59, 0x9d, 0x9f, - 0x9b, 0x59, 0x9d, 0xa0, 0x9a, 0x59, 0x9d, 0x9f, 0x9b, 0x59, 0x9e, 0xa0, - 0x9a, 0x59, 0x9e, 0x9f, 0x9b, 0x59, 0x9f, 0xa0, 0x9a, 0x59, 0x9f, 0x9f, - 0x9b, 0x59, 0x9f, 0xa0, 0x9a, 0x59, 0xa0, 0x9f, 0x9b, 0x59, 0xa0, 0xa0, - 0x9a, 0x59, 0xa1, 0x9f, 0x9b, 0x59, 0xa1, 0xa0, 0x9a, 0x59, 0xa1, 0x9f, - 0x9b, 0x59, 0xa2, 0x9d, 0x9b, 0x59, 0xa2, 0x9f, 0x9b, 0x59, 0xa3, 0x9d, - 0x9b, 0x59, 0xa3, 0x9f, 0x9b, 0x59, 0xa3, 0x9d, 0x9b, 0x59, 0xa4, 0x9f, - 0x9b, 0x59, 0xa4, 0x9d, 0x9b, 0x59, 0xa5, 0x9f, 0x9b, 0x59, 0xa5, 0x9d, - 0x9b, 0x59, 0xa5, 0x9f, 0x9b, 0x59, 0xa6, 0x9d, 0x9b, 0x59, 0xa6, 0x9f, - 0x9b, 0x59, 0xa6, 0x9d, 0x9b, 0x59, 0xa7, 0x9f, 0x9b, 0x59, 0xa7, 0x9d, - 0x9b, 0x59, 0xa8, 0x9f, 0x9b, 0x59, 0xa8, 0x9c, 0x9b, 0x59, 0xa8, 0x9f, - 0x9b, 0x59, 0xa9, 0x9c, 0x9b, 0x59, 0xa9, 0x9f, 0x9b, 0x59, 0xaa, 0x90, - 0xac, 0x59, 0xaa, 0x90, 0xad, 0x59, 0xaa, 0x90, 0xac, 0x59, 0xab, 0x90, - 0xad, 0x59, 0xab, 0x90, 0xac, 0x59, 0xab, 0x90, 0xad, 0x59, 0xac, 0x90, - 0xac, 0x59, 0xac, 0x91, 0xb0, 0x59, 0xac, 0x90, 0xac, 0x59, 0xad, 0x91, - 0xb0, 0x59, 0xad, 0x91, 0xb1, 0x59, 0xae, 0x91, 0xb0, 0x59, 0xae, 0x91, - 0xb1, 0x59, 0xae, 0x91, 0xb0, 0x59, 0xaf, 0x91, 0xb1, 0x59, 0xaf, 0x91, - 0xb0, 0x59, 0xaf, 0x91, 0xb1, 0x59, 0xb0, 0x91, 0xb0, 0x59, 0xb0, 0x91, - 0xb1, 0x59, 0xb0, 0x91, 0xb0, 0x59, 0xb1, 0x92, 0xb4, 0x59, 0xb1, 0x92, - 0xb5, 0x59, 0xb2, 0x92, 0xb4, 0x59, 0xb2, 0x92, 0xb5, 0x59, 0xb2, 0x92, - 0xb4, 0x59, 0xb3, 0x92, 0xb5, 0x59, 0xb3, 0x92, 0xb4, 0x59, 0xb3, 0x92, - 0xb5, 0x59, 0xb4, 0x92, 0xb4, 0x59, 0xb4, 0x92, 0xb5, 0x59, 0xb4, 0x92, - 0xb4, 0x59, 0xb5, 0x93, 0xb8, 0x59, 0xb5, 0x93, 0xb8, 0x59, 0xb5, 0x93, - 0xb8, 0x59, 0xb6, 0x93, 0xb8, 0x59, 0xb6, 0x93, 0xb8, 0x59, 0xb6, 0x93, - 0xb8, 0x59, 0xb7, 0x93, 0xb8, 0x59, 0xb7, 0x93, 0xb8, 0x59, 0xb7, 0x93, - 0xb8, 0x59, 0xb8, 0x93, 0xb8, 0x59, 0xb8, 0x93, 0xb8, 0x59, 0xb8, 0x94, - 0xbc, 0x59, 0xb9, 0x94, 0xbc, 0x59, 0xb9, 0x94, 0xbc, 0x59, 0xb9, 0x94, - 0xbc, 0x59, 0xba, 0x94, 0xbc, 0x59, 0xba, 0x94, 0xbc, 0x59, 0xba, 0x94, - 0xbc, 0x59, 0xbb, 0x94, 0xbc, 0x59, 0xbb, 0x94, 0xbc, 0x59, 0xbb, 0x94, - 0xbc, 0x59, 0xbc, 0x94, 0xbc, 0x59, 0xbc, 0x95, 0xbf, 0x59, 0xbc, 0x95, - 0xc0, 0x59, 0xbd, 0x95, 0xbf, 0x59, 0xbd, 0x95, 0xc0, 0x59, 0xbd, 0x95, - 0xbf, 0x59, 0xbe, 0x95, 0xc0, 0x59, 0xbe, 0x95, 0xbf, 0x59, 0xbe, 0x95, - 0xc0, 0x59, 0xbf, 0x95, 0xbf, 0x59, 0xbf, 0x95, 0xc0, 0x59, 0xbf, 0x95, - 0xbf, 0x59, 0xc0, 0x95, 0xc0, 0x59, 0xc0, 0x95, 0xc0, 0x59, 0xc0, 0x96, - 0xc3, 0x59, 0xc1, 0x96, 0xc3, 0x59, 0xc1, 0x96, 0xc3, 0x59, 0xc1, 0x96, - 0xc3, 0x59, 0xc1, 0x96, 0xc3, 0x59, 0xc2, 0x96, 0xc3, 0x59, 0xc2, 0x96, - 0xc3, 0x59, 0xc2, 0x96, 0xc3, 0x59, 0xc3, 0x96, 0xc3, 0x59, 0xc3, 0x96, - 0xc3, 0x59, 0xc3, 0x96, 0xc3, 0x59, 0xc4, 0x96, 0xc4, 0x59, 0xc4, 0x97, - 0xc6, 0x59, 0xc4, 0x97, 0xc7, 0x59, 0xc5, 0x97, 0xc6, 0x59, 0xc5, 0x97, - 0xc7, 0x59, 0xc5, 0x97, 0xc6, 0x59, 0xc6, 0x97, 0xc7, 0x59, 0xc6, 0x97, - 0xc6, 0x59, 0xc6, 0x97, 0xc7, 0x59, 0xc6, 0x97, 0xc6, 0x59, 0xc7, 0x97, - 0xc7, 0x59, 0xc7, 0x97, 0xc7, 0x59, 0xc7, 0x98, 0xca, 0x59, 0xc8, 0x98, - 0xca, 0x59, 0xc8, 0x98, 0xca, 0x59, 0xc8, 0x98, 0xca, 0x59, 0xc9, 0x98, - 0xca, 0x59, 0xc9, 0x98, 0xca, 0x59, 0xc9, 0x98, 0xca, 0x59, 0xc9, 0x98, - 0xca, 0x59, 0xca, 0x98, 0xca, 0x59, 0xca, 0x98, 0xca, 0x59, 0xca, 0x98, - 0xca, 0x59, 0xcb, 0x98, 0xcd, 0x59, 0xcb, 0x98, 0xcd, 0x59, 0xcb, 0x98, - 0xcd, 0x59, 0xcc, 0x98, 0xcd, 0x59, 0xcc, 0x98, 0xcd, 0x59, 0xcc, 0x98, - 0xcd, 0x59, 0xcc, 0x98, 0xcd, 0x59, 0xcd, 0xa3, 0xd1, 0x59, 0xcd, 0xa1, - 0xd2, 0x59, 0xcd, 0xa0, 0xd2, 0x59, 0xce, 0xa1, 0xd2, 0x59, 0xce, 0xa0, - 0xd2, 0x59, 0xce, 0xa1, 0xd2, 0x59, 0xce, 0xa0, 0xd2, 0x59, 0xcf, 0xa1, - 0xd2, 0x59, 0xcf, 0xa0, 0xd2, 0x59, 0xcf, 0xa1, 0xd2, 0x59, 0xd0, 0xa0, - 0xd2, 0x59, 0xd0, 0xa1, 0xd2, 0x59, 0xd0, 0xa0, 0xd2, 0x59, 0xd0, 0xa1, - 0xd2, 0x59, 0xd1, 0xa0, 0xd2, 0x59, 0xd1, 0xa1, 0xd2, 0x59, 0xd1, 0xa0, - 0xd2, 0x59, 0xd2, 0xa1, 0xd2, 0x59, 0xd1, 0xa0, 0xd2, 0x59, 0xd2, 0xa0, - 0xd2, 0x59, 0xd1, 0xa0, 0xd2, 0x59, 0xd2, 0xa0, 0xd3, 0x59, 0xd1, 0xa0, - 0xd3, 0x59, 0xd2, 0xa0, 0xd3, 0x59, 0xd1, 0xa0, 0xd4, 0x59, 0xd2, 0xa0, - 0xd4, 0x59, 0xd2, 0xa0, 0xd4, 0x56, 0xd2, 0xa0, 0xd4, 0x59, 0xd2, 0xa0, - 0xd5, 0x56, 0xd2, 0xa0, 0xd5, 0x59, 0xd2, 0xa0, 0xd5, 0x56, 0xd2, 0xa0, - 0xd6, 0x59, 0xd2, 0xa0, 0xd6, 0x56, 0xd2, 0xa0, 0xd6, 0x59, 0xd2, 0xa0, - 0xd6, 0x56, 0xd2, 0xa0, 0xd7, 0x59, 0xd2, 0xa0, 0xd7, 0x56, 0xd2, 0xa0, - 0xd7, 0x59, 0xd2, 0xa0, 0xd7, 0x56, 0xd2, 0xa0, 0xd8, 0x59, 0xd2, 0xa0, - 0xd8, 0x56, 0xd2, 0xa0, 0xd8, 0x59, 0xd9, 0xa0, 0xd9, 0x4d, 0xd9, 0xa0, - 0xd9, 0x4d, 0xd9, 0xa0, 0xd9, 0x4d, 0xdb, 0xa0, 0xd9, 0x4e, 0xdc, 0xa0, - 0xda, 0x4e, 0xdb, 0xa0, 0xda, 0x4e, 0xdc, 0xa0, 0xda, 0x4e, 0xdb, 0xa0, - 0xda, 0x4e, 0xdc, 0xa0, 0xdb, 0x4e, 0xdb, 0xa0, 0xdb, 0x4e, 0xdc, 0xa0, - 0xdb, 0x4e, 0xdb, 0xa0, 0xdb, 0x4e, 0xdc, 0xa0, 0xdc, 0x4e, 0xde, 0xa0, - 0xdc, 0x4f, 0xde, 0xa0, 0xdc, 0x4f, 0xde, 0xa0, 0xdd, 0x4f, 0xde, 0xa0, - 0xdd, 0x4f, 0xde, 0xa0, 0xdd, 0x4f, 0xde, 0xa0, 0xdd, 0x4f, 0xde, 0xa0, - 0xde, 0x4f, 0xde, 0xa0, 0xde, 0x4f, 0xde, 0xa0, 0xde, 0x4f, 0xe1, 0xa0, - 0xde, 0x50, 0xe1, 0xa0, 0xdf, 0x50, 0xe1, 0xa0, 0xdf, 0x50, 0xe1, 0xa0, - 0xdf, 0x50, 0xe1, 0xa0, 0xdf, 0x50, 0xe1, 0xa0, 0xe0, 0x50, 0xe1, 0xa0, - 0xe0, 0x50, 0xe1, 0xa0, 0xe0, 0x50, 0xe1, 0xa0, 0xe1, 0x50, 0xe3, 0xa0, - 0xe1, 0x51, 0xe3, 0xa0, 0xe1, 0x51, 0xe3, 0xa0, 0xe1, 0x51, 0xe3, 0xa0, - 0xe2, 0x51, 0xe3, 0xa0, 0xe2, 0x51, 0xe3, 0xa0, 0xe2, 0x51, 0xe3, 0xa0, - 0xe2, 0x51, 0xe3, 0xa0, 0xe3, 0x51, 0xe3, 0xa0, 0xe3, 0x51, 0xe3, 0xa0, - 0xe3, 0x51, 0xe3, 0xa0, 0xe3, 0x51, 0xe4, 0xa0, 0xe4, 0x51, 0xe5, 0xa0, - 0xe4, 0x52, 0xe6, 0xa0, 0xe4, 0x52, 0xe5, 0xa0, 0xe4, 0x52, 0xe6, 0xa0, - 0xe5, 0x52, 0xe5, 0xa0, 0xe5, 0x52, 0xe6, 0xa0, 0xe5, 0x52, 0xe5, 0xa0, - 0xe5, 0x52, 0xe6, 0xa0, 0xe6, 0x52, 0xe6, 0xa0, 0xe6, 0x52, 0xe8, 0xa0, - 0xe6, 0x53, 0xe8, 0xa0, 0xe6, 0x53, 0xe8, 0xa0, 0xe7, 0x53, 0xe8, 0xa0, - 0xe7, 0x53, 0xe8, 0xa0, 0xe7, 0x53, 0xe8, 0xa0, 0xe7, 0x53, 0xe8, 0xa0, - 0xe8, 0x53, 0xe8, 0xa0, 0xe8, 0x53, 0xe8, 0xa0, 0xe8, 0x53, 0xe8, 0xa0, - 0xe8, 0x53, 0xea, 0xa0, 0xe9, 0x54, 0xea, 0xa0, 0xe9, 0x54, 0xea, 0xa0, - 0xe9, 0x54, 0xea, 0xa0, 0xe9, 0x54, 0xea, 0xa0, 0xea, 0x54, 0xea, 0xa0, - 0xea, 0x54, 0xea, 0xa0, 0xea, 0x54, 0xea, 0xa0, 0xea, 0x54, 0xeb, 0xa0, - 0xeb, 0x54, 0xeb, 0xa0, 0xeb, 0x54, 0xeb, 0xa0, 0xeb, 0x54, 0xec, 0xa0, - 0xeb, 0x55, 0xec, 0xa0, 0xec, 0x55, 0xec, 0xa0, 0xec, 0x55, 0xec, 0xa0, - 0xec, 0x55, 0xec, 0xa0, 0xec, 0x55, 0xec, 0xa0, 0xec, 0x55, 0xed, 0xa0, - 0xed, 0x55, 0xed, 0xa0, 0xed, 0x55, 0xed, 0xa0, 0xed, 0x55, 0xee, 0xa0, - 0xed, 0x56, 0xef, 0xa0, 0xee, 0x56, 0xee, 0xa0, 0xee, 0x56, 0xef, 0xa0, - 0xee, 0x56, 0xee, 0xa0, 0xee, 0x56, 0xef, 0xa0, 0xef, 0x56, 0xef, 0xa0, - 0xef, 0x56, 0xef, 0xa0, 0xef, 0x56, 0xef, 0xa0, 0xef, 0x56, 0xf0, 0xa0, - 0xf0, 0x56, 0xf1, 0xa0, 0xf0, 0x57, 0xf1, 0xa0, 0xf0, 0x57, 0xf1, 0xa0, - 0xf0, 0x57, 0xf1, 0xa0, 0xf1, 0x57, 0xf1, 0xa0, 0xf1, 0x57, 0xf1, 0xa0, - 0xf1, 0x57, 0xf1, 0xa0, 0xf1, 0x57, 0xf2, 0xa0, 0xf2, 0x57, 0xf2, 0xa0, - 0xf2, 0x57, 0xf2, 0xa0, 0xf2, 0x57, 0xf2, 0xa0, 0xf2, 0x57, 0xf3, 0xa0, - 0xf2, 0x58, 0xf3, 0xa0, 0xf3, 0x58, 0xf3, 0xa0, 0xf3, 0x58, 0xf3, 0xa0, - 0xf3, 0x58, 0xf3, 0xa0, 0xf3, 0x58, 0xf4, 0xa0, 0xf4, 0x58, 0xf4, 0xa0, - 0xf4, 0x58, 0xf4, 0xa0, 0xf4, 0x58, 0xf4, 0xa0, 0xf4, 0x58, 0xf5, 0xa0, - 0xf5, 0x58, 0xf5, 0xa0, 0xf5, 0x58, 0xf5, 0xa1, 0xf5, 0x59, 0xf5, 0xa1, - 0xf5, 0x59, 0xf5, 0xa1, 0xf5, 0x59, 0xf6, 0xa1, 0xf6, 0x59, 0xf6, 0xa1, - 0xf6, 0x59, 0xf6, 0xa1, 0xf6, 0x59, 0xf6, 0xa1, 0xf6, 0x59, 0xf7, 0xa1, - 0xf7, 0x59, 0xf7, 0xa1, 0xf7, 0x59, 0xf7, 0xa1, 0xf7, 0x59, 0xf7, 0xa1, - 0xf7, 0x59, 0xf8, 0xa1, 0xf7, 0x59, 0xf8, 0xa1, 0xf8, 0x59, 0xf8, 0xa1, - 0xf8, 0x59, 0xf8, 0xa1, 0xf8, 0x59, 0xf8, 0xa1, 0xf8, 0x59, 0xf9, 0xa1, - 0xf9, 0x59, 0xf9, 0xa1, 0xf9, 0x59, 0xf9, 0xa1, 0xf9, 0x59, 0xf9, 0xa1, - 0xf9, 0x59, 0xfa, 0xa1, 0xf9, 0x59, 0xfa, 0xa1, 0xf9, 0x59, 0xfa, 0xa1, - 0xf9, 0x59, 0xfa, 0xa2, 0xfa, 0x59, 0xfa, 0xa2, 0xfa, 0x59, 0xfb, 0xa2, - 0xfb, 0x59, 0xfb, 0xa2, 0xfb, 0x59, 0xfb, 0xa2, 0xfb, 0x59, 0xfb, 0xa2, - 0xfb, 0x59, 0xfc, 0xa2, 0xfb, 0x59, 0xfc, 0xa2, 0xfb, 0x59, 0xfc, 0xa2, - 0xfb, 0x59, 0xfc, 0xa2, 0xfb, 0x59, 0xfc, 0xa2, 0xfb, 0x59, 0xfd, 0xa2, - 0xfb, 0x59, 0xfd, 0xa2, 0xfb, 0x59, 0xfd, 0xa3, 0xfb, 0x59, 0xfd, 0xa3, - 0xfc, 0x59, 0xfe, 0xa3, 0xfb, 0x59, 0xfe, 0xa3, 0xfc, 0x59, 0xfe, 0xa3, - 0xfb, 0x59, 0xfe, 0xa3, 0xfc, 0x59, 0xfe, 0xa3, 0xfb, 0x59, 0xff, 0xa3, - 0xfc, 0x59, 0xff, 0xa3, 0xfb, 0x59, 0x03, 0xaa, 0x95, 0x5a, 0x0a, 0xa8, - 0x96, 0x5a, 0x0f, 0xaa, 0x95, 0x5a, 0x14, 0xa8, 0x96, 0x5a, 0x17, 0xaa, - 0x95, 0x5a, 0x1b, 0xa8, 0x96, 0x5a, 0x1e, 0xaa, 0x95, 0x5a, 0x20, 0xa8, - 0x96, 0x5a, 0x23, 0xaa, 0x95, 0x5a, 0x25, 0xa8, 0x96, 0x5a, 0x27, 0xaa, - 0x95, 0x5a, 0x29, 0xa8, 0x96, 0x5a, 0x2b, 0xaa, 0x95, 0x5a, 0x2d, 0xa8, - 0x96, 0x5a, 0x2f, 0xaa, 0x95, 0x5a, 0x31, 0xa8, 0x96, 0x5a, 0x32, 0xaa, - 0x95, 0x5a, 0x34, 0xa8, 0x96, 0x5a, 0x35, 0xaa, 0x95, 0x5a, 0x37, 0xa8, - 0x96, 0x5a, 0x38, 0xaa, 0x95, 0x5a, 0x3a, 0xa8, 0x96, 0x5a, 0x3b, 0xaa, - 0x95, 0x5a, 0x3c, 0xa8, 0x96, 0x5a, 0x3e, 0xaa, 0x95, 0x5a, 0x3f, 0xa8, - 0x96, 0x5a, 0x40, 0xaa, 0x95, 0x5a, 0x42, 0xa8, 0x96, 0x5a, 0x43, 0xaa, - 0x95, 0x5a, 0x44, 0xa8, 0x96, 0x5a, 0x45, 0xaa, 0x95, 0x5a, 0x46, 0xa8, - 0x96, 0x5a, 0x47, 0xaa, 0x95, 0x5a, 0x48, 0xa8, 0x96, 0x5a, 0x49, 0xaa, - 0x95, 0x5a, 0x4a, 0xa8, 0x96, 0x5a, 0x4b, 0xa6, 0x96, 0x5a, 0x4c, 0xa8, - 0x96, 0x5a, 0x4d, 0xa6, 0x96, 0x5a, 0x4e, 0xa8, 0x96, 0x5a, 0x4f, 0xa6, - 0x96, 0x5a, 0x50, 0xa8, 0x96, 0x5a, 0x51, 0xa6, 0x96, 0x5a, 0x52, 0xa8, - 0x96, 0x5a, 0x53, 0xa6, 0x96, 0x5a, 0x54, 0xa8, 0x96, 0x5a, 0x55, 0xa6, - 0x96, 0x5a, 0x56, 0xa8, 0x96, 0x5a, 0x57, 0xa6, 0x96, 0x5a, 0x58, 0xa8, - 0x96, 0x5a, 0x58, 0xa6, 0x96, 0x5a, 0x59, 0xa8, 0x96, 0x5a, 0x5a, 0xa6, - 0x96, 0x5a, 0x5b, 0xa8, 0x96, 0x5a, 0x5c, 0xa6, 0x96, 0x5a, 0x5d, 0xa8, - 0x96, 0x5a, 0x5d, 0xa6, 0x96, 0x5a, 0x5e, 0xa8, 0x96, 0x5a, 0x5f, 0xa6, - 0x96, 0x5a, 0x60, 0xa8, 0x96, 0x5a, 0x60, 0xa6, 0x96, 0x5a, 0x61, 0xa8, - 0x96, 0x5a, 0x62, 0xa6, 0x96, 0x5a, 0x63, 0xa8, 0x96, 0x5a, 0x63, 0xa6, - 0x96, 0x5a, 0x64, 0xa8, 0x96, 0x5a, 0x65, 0xa6, 0x96, 0x5a, 0x66, 0xa8, - 0x96, 0x5a, 0x66, 0xa6, 0x96, 0x5a, 0x67, 0xa8, 0x96, 0x5a, 0x68, 0xa6, - 0x96, 0x5a, 0x68, 0xa8, 0x96, 0x5a, 0x69, 0xa6, 0x96, 0x5a, 0x6a, 0xa3, - 0x97, 0x5a, 0x6a, 0xa6, 0x96, 0x5a, 0x6b, 0xa3, 0x97, 0x5a, 0x6c, 0xa6, - 0x96, 0x5a, 0x6c, 0xa3, 0x97, 0x5a, 0x6d, 0xa6, 0x96, 0x5a, 0x6e, 0xa3, - 0x97, 0x5a, 0x6e, 0xa6, 0x96, 0x5a, 0x6f, 0xa3, 0x97, 0x5a, 0x70, 0xa6, - 0x96, 0x5a, 0x70, 0xa3, 0x97, 0x5a, 0x71, 0xa6, 0x96, 0x5a, 0x72, 0xa3, - 0x97, 0x5a, 0x72, 0xa6, 0x96, 0x5a, 0x73, 0xa3, 0x97, 0x5a, 0x73, 0xa6, - 0x96, 0x5a, 0x74, 0xa3, 0x97, 0x5a, 0x75, 0xa6, 0x96, 0x5a, 0x75, 0xa3, - 0x97, 0x5a, 0x76, 0xa6, 0x96, 0x5a, 0x76, 0xa3, 0x97, 0x5a, 0x77, 0xa6, - 0x96, 0x5a, 0x78, 0xa3, 0x97, 0x5a, 0x78, 0xa6, 0x96, 0x5a, 0x79, 0xa3, - 0x97, 0x5a, 0x79, 0xa6, 0x96, 0x5a, 0x7a, 0xa3, 0x97, 0x5a, 0x7a, 0xa6, - 0x96, 0x5a, 0x7b, 0xa3, 0x97, 0x5a, 0x7c, 0xa6, 0x96, 0x5a, 0x7c, 0xa3, - 0x97, 0x5a, 0x7d, 0xa6, 0x96, 0x5a, 0x7d, 0xa3, 0x97, 0x5a, 0x7e, 0xa6, - 0x96, 0x5a, 0x7e, 0xa3, 0x97, 0x5a, 0x7f, 0xa6, 0x96, 0x5a, 0x7f, 0xa3, - 0x97, 0x5a, 0x80, 0xa0, 0x97, 0x5a, 0x81, 0xa3, 0x97, 0x5a, 0x81, 0xa0, - 0x97, 0x5a, 0x82, 0xa3, 0x97, 0x5a, 0x82, 0xa0, 0x97, 0x5a, 0x83, 0xa3, - 0x97, 0x5a, 0x83, 0xa0, 0x97, 0x5a, 0x84, 0xa3, 0x97, 0x5a, 0x84, 0xa0, - 0x97, 0x5a, 0x85, 0xa3, 0x97, 0x5a, 0x85, 0xa0, 0x97, 0x5a, 0x86, 0xa3, - 0x97, 0x5a, 0x86, 0xa0, 0x97, 0x5a, 0x87, 0xa3, 0x97, 0x5a, 0x87, 0xa0, - 0x97, 0x5a, 0x88, 0xa3, 0x97, 0x5a, 0x88, 0xa0, 0x97, 0x5a, 0x89, 0xa3, - 0x97, 0x5a, 0x89, 0xa0, 0x97, 0x5a, 0x8a, 0xa3, 0x97, 0x5a, 0x8a, 0xa0, - 0x97, 0x5a, 0x8b, 0xa3, 0x97, 0x5a, 0x8b, 0xa0, 0x97, 0x5a, 0x8c, 0xa3, - 0x97, 0x5a, 0x8c, 0xa0, 0x97, 0x5a, 0x8d, 0xa3, 0x97, 0x5a, 0x8d, 0xa0, - 0x97, 0x5a, 0x8e, 0xa3, 0x97, 0x5a, 0x8e, 0xa0, 0x97, 0x5a, 0x8e, 0xa3, - 0x97, 0x5a, 0x8f, 0xa0, 0x97, 0x5a, 0x8f, 0xa3, 0x97, 0x5a, 0x90, 0xa0, - 0x97, 0x5a, 0x90, 0xa0, 0x98, 0x5a, 0x91, 0xa0, 0x97, 0x5a, 0x91, 0xa0, - 0x98, 0x5a, 0x92, 0xa0, 0x97, 0x5a, 0x92, 0xa0, 0x98, 0x5a, 0x93, 0xa0, - 0x97, 0x5a, 0x93, 0xa0, 0x98, 0x5a, 0x94, 0xa0, 0x97, 0x5a, 0x94, 0xa0, - 0x98, 0x5a, 0x94, 0xa0, 0x97, 0x5a, 0x95, 0xa0, 0x98, 0x5a, 0x95, 0xa0, - 0x97, 0x5a, 0x96, 0xa0, 0x98, 0x5a, 0x96, 0xa0, 0x97, 0x5a, 0x97, 0xa0, - 0x98, 0x5a, 0x97, 0xa0, 0x97, 0x59, 0x97, 0xa0, 0x98, 0x5a, 0x97, 0xa0, - 0x98, 0x59, 0x97, 0xa0, 0x98, 0x5a, 0x97, 0xa0, 0x99, 0x59, 0x9b, 0xa0, - 0x99, 0x5a, 0x9b, 0xa0, 0x9a, 0x5a, 0x9b, 0xa0, 0x9a, 0x5a, 0x9b, 0xa0, - 0x9a, 0x5a, 0x9b, 0xa0, 0x9a, 0x5a, 0x9b, 0xa0, 0x9a, 0x5a, 0x9c, 0xa0, - 0x9a, 0x5a, 0x9c, 0xa0, 0x9a, 0x5a, 0x9d, 0x9f, 0x9b, 0x5a, 0x9d, 0xa0, - 0x9a, 0x5a, 0x9d, 0x9f, 0x9b, 0x5a, 0x9e, 0xa0, 0x9a, 0x5a, 0x9e, 0x9f, - 0x9b, 0x5a, 0x9f, 0xa0, 0x9a, 0x5a, 0x9f, 0x9f, 0x9b, 0x5a, 0x9f, 0xa0, - 0x9a, 0x5a, 0xa0, 0x9f, 0x9b, 0x5a, 0xa0, 0xa0, 0x9a, 0x5a, 0xa1, 0x9f, - 0x9b, 0x5a, 0xa1, 0xa0, 0x9a, 0x5a, 0xa1, 0x9f, 0x9b, 0x5a, 0xa2, 0x9d, - 0x9b, 0x5a, 0xa2, 0x9f, 0x9b, 0x5a, 0xa3, 0x9d, 0x9b, 0x5a, 0xa3, 0x9f, - 0x9b, 0x5a, 0xa3, 0x9d, 0x9b, 0x5a, 0xa4, 0x9f, 0x9b, 0x5a, 0xa4, 0x9d, - 0x9b, 0x5a, 0xa5, 0x9f, 0x9b, 0x5a, 0xa5, 0x9d, 0x9b, 0x5a, 0xa5, 0x9f, - 0x9b, 0x5a, 0xa6, 0x9d, 0x9b, 0x5a, 0xa6, 0x9f, 0x9b, 0x5a, 0xa6, 0x9d, - 0x9b, 0x5a, 0xa7, 0x9f, 0x9b, 0x5a, 0xa7, 0x9d, 0x9b, 0x5a, 0xa8, 0x9f, - 0x9b, 0x5a, 0xa8, 0x9d, 0x9b, 0x5a, 0xa8, 0x9f, 0x9b, 0x5a, 0xa9, 0x9d, - 0x9b, 0x5a, 0xa9, 0x9f, 0x9b, 0x5a, 0xaa, 0x9d, 0x9b, 0x5a, 0xaa, 0x91, - 0xae, 0x5a, 0xaa, 0x91, 0xaf, 0x5a, 0xab, 0x91, 0xae, 0x5a, 0xab, 0x91, - 0xaf, 0x5a, 0xab, 0x91, 0xae, 0x5a, 0xac, 0x91, 0xaf, 0x5a, 0xac, 0x91, - 0xae, 0x5a, 0xac, 0x91, 0xaf, 0x5a, 0xad, 0x91, 0xae, 0x5a, 0xad, 0x91, - 0xaf, 0x5a, 0xae, 0x91, 0xae, 0x5a, 0xae, 0x92, 0xb2, 0x5a, 0xae, 0x91, - 0xae, 0x5a, 0xaf, 0x92, 0xb2, 0x5a, 0xaf, 0x92, 0xb3, 0x5a, 0xaf, 0x92, - 0xb2, 0x5a, 0xb0, 0x92, 0xb3, 0x5a, 0xb0, 0x92, 0xb2, 0x5a, 0xb0, 0x92, - 0xb3, 0x5a, 0xb1, 0x92, 0xb2, 0x5a, 0xb1, 0x92, 0xb3, 0x5a, 0xb2, 0x92, - 0xb2, 0x5a, 0xb2, 0x92, 0xb3, 0x5a, 0xb2, 0x92, 0xb2, 0x5a, 0xb3, 0x93, - 0xb6, 0x5a, 0xb3, 0x93, 0xb6, 0x5a, 0xb3, 0x93, 0xb6, 0x5a, 0xb4, 0x93, - 0xb6, 0x5a, 0xb4, 0x93, 0xb6, 0x5a, 0xb4, 0x93, 0xb6, 0x5a, 0xb5, 0x93, - 0xb6, 0x5a, 0xb5, 0x93, 0xb6, 0x5a, 0xb5, 0x93, 0xb6, 0x5a, 0xb6, 0x93, - 0xb6, 0x5a, 0xb6, 0x93, 0xb6, 0x5a, 0xb6, 0x93, 0xb6, 0x5a, 0xb7, 0x94, - 0xba, 0x5a, 0xb7, 0x94, 0xba, 0x5a, 0xb7, 0x94, 0xba, 0x5a, 0xb8, 0x94, - 0xba, 0x5a, 0xb8, 0x94, 0xba, 0x5a, 0xb8, 0x94, 0xba, 0x5a, 0xb9, 0x94, - 0xba, 0x5a, 0xb9, 0x94, 0xba, 0x5a, 0xb9, 0x94, 0xba, 0x5a, 0xba, 0x94, - 0xba, 0x5a, 0xba, 0x94, 0xba, 0x5a, 0xba, 0x94, 0xbe, 0x5a, 0xbb, 0x94, - 0xbe, 0x5a, 0xbb, 0x94, 0xbe, 0x5a, 0xbb, 0x94, 0xbe, 0x5a, 0xbc, 0x94, - 0xbe, 0x5a, 0xbc, 0x94, 0xbe, 0x5a, 0xbc, 0x94, 0xbe, 0x5a, 0xbd, 0x94, - 0xbe, 0x5a, 0xbd, 0x94, 0xbe, 0x5a, 0xbd, 0x94, 0xbe, 0x5a, 0xbe, 0x94, - 0xbe, 0x5a, 0xbe, 0x95, 0xc1, 0x5a, 0xbe, 0x95, 0xc1, 0x5a, 0xbf, 0x95, - 0xc1, 0x5a, 0xbf, 0x95, 0xc1, 0x5a, 0xbf, 0x95, 0xc1, 0x5a, 0xc0, 0x95, - 0xc1, 0x5a, 0xc0, 0x95, 0xc1, 0x5a, 0xc0, 0x95, 0xc1, 0x5a, 0xc1, 0x95, - 0xc1, 0x5a, 0xc1, 0x95, 0xc1, 0x5a, 0xc1, 0x95, 0xc1, 0x5a, 0xc1, 0x95, - 0xc1, 0x5a, 0xc2, 0x95, 0xc2, 0x5a, 0xc2, 0x96, 0xc5, 0x5a, 0xc2, 0x96, - 0xc5, 0x5a, 0xc3, 0x96, 0xc5, 0x5a, 0xc3, 0x96, 0xc5, 0x5a, 0xc3, 0x96, - 0xc5, 0x5a, 0xc4, 0x96, 0xc5, 0x5a, 0xc4, 0x96, 0xc5, 0x5a, 0xc4, 0x96, - 0xc5, 0x5a, 0xc5, 0x96, 0xc5, 0x5a, 0xc5, 0x96, 0xc5, 0x5a, 0xc5, 0x96, - 0xc5, 0x5a, 0xc6, 0x97, 0xc8, 0x5a, 0xc6, 0x97, 0xc8, 0x5a, 0xc6, 0x97, - 0xc8, 0x5a, 0xc6, 0x97, 0xc8, 0x5a, 0xc7, 0x97, 0xc8, 0x5a, 0xc7, 0x97, - 0xc8, 0x5a, 0xc7, 0x97, 0xc8, 0x5a, 0xc8, 0x97, 0xc8, 0x5a, 0xc8, 0x97, - 0xc8, 0x5a, 0xc8, 0x97, 0xc8, 0x5a, 0xc9, 0x97, 0xc9, 0x5a, 0xc9, 0x98, - 0xcb, 0x5a, 0xc9, 0x98, 0xcc, 0x5a, 0xc9, 0x98, 0xcb, 0x5a, 0xca, 0x98, - 0xcc, 0x5a, 0xca, 0x98, 0xcb, 0x5a, 0xca, 0x98, 0xcc, 0x5a, 0xcb, 0x98, - 0xcb, 0x5a, 0xcb, 0x98, 0xcc, 0x5a, 0xcb, 0x98, 0xcb, 0x5a, 0xcc, 0x98, - 0xcc, 0x5a, 0xcc, 0x98, 0xcc, 0x5a, 0xcc, 0xa3, 0xd1, 0x5a, 0xcc, 0xa0, - 0xd2, 0x5a, 0xcd, 0xa3, 0xd1, 0x5a, 0xcd, 0xa0, 0xd2, 0x5a, 0xcd, 0xa3, - 0xd1, 0x5a, 0xce, 0xa0, 0xd2, 0x5a, 0xce, 0xa3, 0xd1, 0x5a, 0xce, 0xa0, - 0xd2, 0x5a, 0xce, 0xa3, 0xd1, 0x5a, 0xcf, 0xa0, 0xd2, 0x5a, 0xcf, 0xa3, - 0xd1, 0x5a, 0xcf, 0xa0, 0xd2, 0x5a, 0xd0, 0xa0, 0xd2, 0x5a, 0xd0, 0xa0, - 0xd2, 0x5a, 0xd0, 0xa0, 0xd2, 0x5a, 0xd0, 0xa0, 0xd2, 0x5a, 0xd1, 0xa0, - 0xd2, 0x5a, 0xd1, 0xa0, 0xd2, 0x5a, 0xd1, 0xa0, 0xd2, 0x5a, 0xd2, 0xa0, - 0xd2, 0x59, 0xd1, 0xa0, 0xd2, 0x5a, 0xd2, 0xa0, 0xd2, 0x59, 0xd1, 0xa0, - 0xd2, 0x5a, 0xd2, 0xa0, 0xd3, 0x59, 0xd1, 0xa0, 0xd3, 0x5a, 0xd2, 0xa0, - 0xd3, 0x59, 0xd1, 0xa0, 0xd4, 0x5a, 0xd2, 0xa0, 0xd4, 0x59, 0xd2, 0xa0, - 0xd4, 0x57, 0xd2, 0xa0, 0xd4, 0x59, 0xd2, 0xa0, 0xd5, 0x57, 0xd2, 0xa0, - 0xd5, 0x59, 0xd2, 0xa0, 0xd5, 0x57, 0xd2, 0xa0, 0xd6, 0x59, 0xd2, 0xa0, - 0xd6, 0x57, 0xd2, 0xa0, 0xd6, 0x59, 0xd2, 0xa0, 0xd6, 0x57, 0xd2, 0xa0, - 0xd7, 0x59, 0xd2, 0xa0, 0xd7, 0x57, 0xd2, 0xa0, 0xd7, 0x59, 0xd2, 0xa0, - 0xd7, 0x57, 0xd2, 0xa0, 0xd8, 0x59, 0xd2, 0xa0, 0xd8, 0x57, 0xd2, 0xa0, - 0xd8, 0x59, 0xd2, 0xa0, 0xd9, 0x57, 0xda, 0xa0, 0xd9, 0x4e, 0xdb, 0xa0, - 0xd9, 0x4e, 0xda, 0xa0, 0xd9, 0x4e, 0xdb, 0xa0, 0xda, 0x4e, 0xda, 0xa0, - 0xda, 0x4e, 0xdb, 0xa0, 0xda, 0x4e, 0xda, 0xa0, 0xda, 0x4e, 0xdd, 0xa0, - 0xdb, 0x4f, 0xdd, 0xa0, 0xdb, 0x4f, 0xdd, 0xa0, 0xdb, 0x4f, 0xdd, 0xa0, - 0xdb, 0x4f, 0xdd, 0xa0, 0xdc, 0x4f, 0xdd, 0xa0, 0xdc, 0x4f, 0xdd, 0xa0, - 0xdc, 0x4f, 0xdd, 0xa0, 0xdd, 0x4f, 0xdd, 0xa0, 0xdd, 0x4f, 0xdf, 0xa0, - 0xdd, 0x50, 0xdf, 0xa0, 0xdd, 0x50, 0xdf, 0xa0, 0xde, 0x50, 0xdf, 0xa0, - 0xde, 0x50, 0xdf, 0xa0, 0xde, 0x50, 0xdf, 0xa0, 0xde, 0x50, 0xdf, 0xa0, - 0xdf, 0x50, 0xdf, 0xa0, 0xdf, 0x50, 0xdf, 0xa0, 0xdf, 0x50, 0xdf, 0xa0, - 0xdf, 0x50, 0xe2, 0xa0, 0xe0, 0x51, 0xe2, 0xa0, 0xe0, 0x51, 0xe2, 0xa0, - 0xe0, 0x51, 0xe2, 0xa0, 0xe1, 0x51, 0xe2, 0xa0, 0xe1, 0x51, 0xe2, 0xa0, - 0xe1, 0x51, 0xe2, 0xa0, 0xe1, 0x51, 0xe2, 0xa0, 0xe2, 0x51, 0xe2, 0xa0, - 0xe2, 0x51, 0xe4, 0xa0, 0xe2, 0x52, 0xe4, 0xa0, 0xe2, 0x52, 0xe4, 0xa0, - 0xe3, 0x52, 0xe4, 0xa0, 0xe3, 0x52, 0xe4, 0xa0, 0xe3, 0x52, 0xe4, 0xa0, - 0xe3, 0x52, 0xe4, 0xa0, 0xe4, 0x52, 0xe4, 0xa0, 0xe4, 0x52, 0xe4, 0xa0, - 0xe4, 0x52, 0xe4, 0xa0, 0xe4, 0x52, 0xe5, 0xa0, 0xe5, 0x52, 0xe6, 0xa0, - 0xe5, 0x53, 0xe7, 0xa0, 0xe5, 0x53, 0xe6, 0xa0, 0xe5, 0x53, 0xe7, 0xa0, - 0xe6, 0x53, 0xe6, 0xa0, 0xe6, 0x53, 0xe7, 0xa0, 0xe6, 0x53, 0xe6, 0xa0, - 0xe6, 0x53, 0xe7, 0xa0, 0xe7, 0x53, 0xe7, 0xa0, 0xe7, 0x53, 0xe7, 0xa0, - 0xe7, 0x53, 0xe9, 0xa0, 0xe7, 0x54, 0xe9, 0xa0, 0xe8, 0x54, 0xe9, 0xa0, - 0xe8, 0x54, 0xe9, 0xa0, 0xe8, 0x54, 0xe9, 0xa0, 0xe8, 0x54, 0xe9, 0xa0, - 0xe9, 0x54, 0xe9, 0xa0, 0xe9, 0x54, 0xe9, 0xa0, 0xe9, 0x54, 0xe9, 0xa0, - 0xe9, 0x54, 0xeb, 0xa0, 0xea, 0x55, 0xeb, 0xa0, 0xea, 0x55, 0xeb, 0xa0, - 0xea, 0x55, 0xeb, 0xa0, 0xea, 0x55, 0xeb, 0xa0, 0xeb, 0x55, 0xeb, 0xa0, - 0xeb, 0x55, 0xeb, 0xa0, 0xeb, 0x55, 0xeb, 0xa0, 0xeb, 0x55, 0xec, 0xa0, - 0xec, 0x55, 0xec, 0xa0, 0xec, 0x55, 0xec, 0xa0, 0xec, 0x55, 0xec, 0xa0, - 0xec, 0x55, 0xed, 0xa0, 0xec, 0x56, 0xee, 0xa0, 0xed, 0x56, 0xed, 0xa0, - 0xed, 0x56, 0xee, 0xa0, 0xed, 0x56, 0xed, 0xa0, 0xed, 0x56, 0xee, 0xa0, - 0xee, 0x56, 0xee, 0xa0, 0xee, 0x56, 0xee, 0xa0, 0xee, 0x56, 0xee, 0xa0, - 0xee, 0x56, 0xf0, 0xa0, 0xef, 0x57, 0xf0, 0xa0, 0xef, 0x57, 0xf0, 0xa0, - 0xef, 0x57, 0xf0, 0xa0, 0xef, 0x57, 0xf0, 0xa0, 0xf0, 0x57, 0xf0, 0xa0, - 0xf0, 0x57, 0xf0, 0xa0, 0xf0, 0x57, 0xf0, 0xa0, 0xf0, 0x57, 0xf1, 0xa0, - 0xf1, 0x57, 0xf2, 0xa0, 0xf1, 0x58, 0xf2, 0xa0, 0xf1, 0x58, 0xf2, 0xa0, - 0xf1, 0x58, 0xf2, 0xa0, 0xf2, 0x58, 0xf2, 0xa0, 0xf2, 0x58, 0xf2, 0xa0, - 0xf2, 0x58, 0xf2, 0xa0, 0xf2, 0x58, 0xf2, 0xa0, 0xf2, 0x58, 0xf3, 0xa0, - 0xf3, 0x58, 0xf3, 0xa0, 0xf3, 0x58, 0xf3, 0xa0, 0xf3, 0x58, 0xf3, 0xa0, - 0xf3, 0x58, 0xf4, 0xa0, 0xf4, 0x59, 0xf4, 0xa0, 0xf4, 0x59, 0xf4, 0xa0, - 0xf4, 0x59, 0xf4, 0xa0, 0xf4, 0x59, 0xf5, 0xa0, 0xf5, 0x59, 0xf5, 0xa0, - 0xf5, 0x59, 0xf5, 0xa0, 0xf5, 0x59, 0xf5, 0xa0, 0xf5, 0x59, 0xf5, 0xa0, - 0xf5, 0x59, 0xf6, 0xa0, 0xf6, 0x59, 0xf6, 0xa0, 0xf6, 0x59, 0xf6, 0xa1, - 0xf6, 0x5a, 0xf6, 0xa1, 0xf6, 0x5a, 0xf7, 0xa1, 0xf7, 0x5a, 0xf7, 0xa1, - 0xf7, 0x5a, 0xf7, 0xa1, 0xf7, 0x5a, 0xf7, 0xa1, 0xf7, 0x5a, 0xf8, 0xa1, - 0xf8, 0x5a, 0xf8, 0xa1, 0xf8, 0x5a, 0xf8, 0xa1, 0xf8, 0x5a, 0xf8, 0xa1, - 0xf8, 0x5a, 0xf8, 0xa1, 0xf8, 0x5a, 0xf9, 0xa2, 0xf9, 0x5a, 0xf9, 0xa2, - 0xf9, 0x5a, 0xf9, 0xa2, 0xf9, 0x5a, 0xf9, 0xa2, 0xf9, 0x5a, 0xfa, 0xa2, - 0xfa, 0x5a, 0xfa, 0xa2, 0xfa, 0x5a, 0xfa, 0xa2, 0xfa, 0x5a, 0xfa, 0xa2, - 0xfa, 0x5a, 0xfa, 0xa2, 0xfa, 0x5a, 0xfb, 0xa2, 0xfa, 0x5a, 0xfb, 0xa2, - 0xfa, 0x5a, 0xfb, 0xa2, 0xfa, 0x5a, 0xfb, 0xa3, 0xfb, 0x5a, 0xfc, 0xa3, - 0xfc, 0x5a, 0xfc, 0xa3, 0xfb, 0x5a, 0xfc, 0xa3, 0xfc, 0x5a, 0xfc, 0xa3, - 0xfb, 0x5a, 0xfc, 0xa3, 0xfc, 0x5a, 0xfd, 0xa3, 0xfb, 0x5a, 0xfd, 0xa3, - 0xfc, 0x5a, 0xfd, 0xa3, 0xfb, 0x5a, 0xfd, 0xa3, 0xfc, 0x5a, 0xfe, 0xa3, - 0xfb, 0x5a, 0xfe, 0xa3, 0xfc, 0x5a, 0xfe, 0xa3, 0xfb, 0x5a, 0xfe, 0xa3, - 0xfc, 0x5a, 0xfe, 0xa3, 0xfb, 0x5a, 0xff, 0xa3, 0xfc, 0x5a, 0xff, 0xa3, - 0xfb, 0x5a, 0x03, 0xab, 0x95, 0x5a, 0x0a, 0xa8, 0x96, 0x5a, 0x0f, 0xab, - 0x95, 0x5a, 0x14, 0xa8, 0x96, 0x5a, 0x17, 0xab, 0x95, 0x5a, 0x1b, 0xa8, - 0x96, 0x5a, 0x1e, 0xab, 0x95, 0x5a, 0x20, 0xa8, 0x96, 0x5a, 0x23, 0xab, - 0x95, 0x5a, 0x25, 0xa8, 0x96, 0x5a, 0x27, 0xab, 0x95, 0x5a, 0x29, 0xa8, - 0x96, 0x5a, 0x2b, 0xab, 0x95, 0x5a, 0x2d, 0xa8, 0x96, 0x5a, 0x2f, 0xab, - 0x95, 0x5a, 0x31, 0xa8, 0x96, 0x5a, 0x32, 0xab, 0x95, 0x5a, 0x34, 0xa8, - 0x96, 0x5a, 0x35, 0xab, 0x95, 0x5a, 0x37, 0xa8, 0x96, 0x5a, 0x38, 0xab, - 0x95, 0x5a, 0x3a, 0xa8, 0x96, 0x5a, 0x3b, 0xab, 0x95, 0x5a, 0x3c, 0xa8, - 0x96, 0x5a, 0x3e, 0xa5, 0x96, 0x5a, 0x3f, 0xa8, 0x96, 0x5a, 0x40, 0xa5, - 0x96, 0x5a, 0x42, 0xa8, 0x96, 0x5a, 0x43, 0xa5, 0x96, 0x5a, 0x44, 0xa8, - 0x96, 0x5a, 0x45, 0xa5, 0x96, 0x5a, 0x46, 0xa8, 0x96, 0x5a, 0x47, 0xa5, - 0x96, 0x5a, 0x48, 0xa8, 0x96, 0x5a, 0x49, 0xa5, 0x96, 0x5a, 0x4a, 0xa8, - 0x96, 0x5a, 0x4b, 0xa5, 0x96, 0x5a, 0x4c, 0xa8, 0x96, 0x5a, 0x4d, 0xa5, - 0x96, 0x5a, 0x4e, 0xa8, 0x96, 0x5a, 0x4f, 0xa5, 0x96, 0x5a, 0x50, 0xa8, - 0x96, 0x5a, 0x51, 0xa5, 0x96, 0x5a, 0x52, 0xa8, 0x96, 0x5a, 0x53, 0xa5, - 0x96, 0x5a, 0x54, 0xa8, 0x96, 0x5a, 0x55, 0xa5, 0x96, 0x5a, 0x56, 0xa8, - 0x96, 0x5a, 0x57, 0xa5, 0x96, 0x5a, 0x58, 0xa8, 0x96, 0x5a, 0x58, 0xa5, - 0x96, 0x5a, 0x59, 0xa8, 0x96, 0x5a, 0x5a, 0xa5, 0x96, 0x5a, 0x5b, 0xa8, - 0x96, 0x5a, 0x5c, 0xa5, 0x96, 0x5a, 0x5d, 0xa8, 0x96, 0x5a, 0x5d, 0xa5, - 0x96, 0x5a, 0x5e, 0xa8, 0x96, 0x5a, 0x5f, 0xa5, 0x96, 0x5a, 0x60, 0xa8, - 0x96, 0x5a, 0x60, 0xa5, 0x96, 0x5a, 0x61, 0xa8, 0x96, 0x5a, 0x62, 0xa5, - 0x96, 0x5a, 0x63, 0xa8, 0x96, 0x5a, 0x63, 0xa5, 0x96, 0x5a, 0x64, 0xa3, - 0x97, 0x5a, 0x65, 0xa5, 0x96, 0x5a, 0x66, 0xa3, 0x97, 0x5a, 0x66, 0xa5, - 0x96, 0x5a, 0x67, 0xa3, 0x97, 0x5a, 0x68, 0xa5, 0x96, 0x5a, 0x68, 0xa3, - 0x97, 0x5a, 0x69, 0xa5, 0x96, 0x5a, 0x6a, 0xa3, 0x97, 0x5a, 0x6a, 0xa5, - 0x96, 0x5a, 0x6b, 0xa3, 0x97, 0x5a, 0x6c, 0xa5, 0x96, 0x5a, 0x6c, 0xa3, - 0x97, 0x5a, 0x6d, 0xa5, 0x96, 0x5a, 0x6e, 0xa3, 0x97, 0x5a, 0x6e, 0xa5, - 0x96, 0x5a, 0x6f, 0xa3, 0x97, 0x5a, 0x70, 0xa5, 0x96, 0x5a, 0x70, 0xa3, - 0x97, 0x5a, 0x71, 0xa5, 0x96, 0x5a, 0x72, 0xa3, 0x97, 0x5a, 0x72, 0xa5, - 0x96, 0x5a, 0x73, 0xa3, 0x97, 0x5a, 0x73, 0xa5, 0x96, 0x5a, 0x74, 0xa3, - 0x97, 0x5a, 0x75, 0xa5, 0x96, 0x5a, 0x75, 0xa3, 0x97, 0x5a, 0x76, 0xa5, - 0x96, 0x5a, 0x76, 0xa3, 0x97, 0x5a, 0x77, 0xa5, 0x96, 0x5a, 0x78, 0xa3, - 0x97, 0x5a, 0x78, 0xa5, 0x96, 0x5a, 0x79, 0xa3, 0x97, 0x5a, 0x79, 0xa5, - 0x96, 0x5a, 0x7a, 0xa3, 0x97, 0x5a, 0x7a, 0xa5, 0x96, 0x5a, 0x7b, 0xa3, - 0x97, 0x5a, 0x7c, 0xa5, 0x96, 0x5a, 0x7c, 0xa3, 0x97, 0x5a, 0x7d, 0xa5, - 0x96, 0x5a, 0x7d, 0xa3, 0x97, 0x5a, 0x7e, 0xa5, 0x96, 0x5a, 0x7e, 0xa3, - 0x97, 0x5a, 0x7f, 0xa5, 0x96, 0x5a, 0x7f, 0xa3, 0x97, 0x5a, 0x80, 0xa5, - 0x96, 0x5a, 0x81, 0xa3, 0x97, 0x5a, 0x81, 0xa5, 0x96, 0x5a, 0x82, 0xa3, - 0x97, 0x5a, 0x82, 0xa5, 0x96, 0x5a, 0x83, 0xa3, 0x97, 0x5a, 0x83, 0xa5, - 0x96, 0x5a, 0x84, 0xa3, 0x97, 0x5a, 0x84, 0xa5, 0x96, 0x5a, 0x85, 0xa3, - 0x97, 0x5a, 0x85, 0xa5, 0x96, 0x5a, 0x86, 0xa3, 0x97, 0x5a, 0x86, 0xa1, - 0x97, 0x5a, 0x87, 0xa3, 0x97, 0x5a, 0x87, 0xa1, 0x97, 0x5a, 0x88, 0xa3, - 0x97, 0x5a, 0x88, 0xa1, 0x97, 0x5a, 0x89, 0xa3, 0x97, 0x5a, 0x89, 0xa1, - 0x97, 0x5a, 0x8a, 0xa3, 0x97, 0x5a, 0x8a, 0xa1, 0x97, 0x5a, 0x8b, 0xa3, - 0x97, 0x5a, 0x8b, 0xa1, 0x97, 0x5a, 0x8c, 0xa3, 0x97, 0x5a, 0x8c, 0xa1, - 0x97, 0x5a, 0x8d, 0xa3, 0x97, 0x5a, 0x8d, 0xa1, 0x97, 0x5a, 0x8e, 0xa3, - 0x97, 0x5a, 0x8e, 0xa1, 0x97, 0x5a, 0x8e, 0xa3, 0x97, 0x5a, 0x8f, 0xa1, - 0x97, 0x5a, 0x8f, 0xa3, 0x97, 0x5a, 0x90, 0xa1, 0x97, 0x5a, 0x90, 0xa3, - 0x97, 0x5a, 0x91, 0xa1, 0x97, 0x5a, 0x91, 0xa3, 0x97, 0x5a, 0x92, 0xa1, - 0x97, 0x5a, 0x92, 0xa3, 0x97, 0x5a, 0x93, 0xa1, 0x97, 0x5a, 0x93, 0xa3, - 0x97, 0x5a, 0x94, 0xa1, 0x97, 0x5a, 0x94, 0xa1, 0x98, 0x5a, 0x94, 0xa1, - 0x97, 0x5a, 0x95, 0xa1, 0x98, 0x5a, 0x95, 0xa1, 0x97, 0x5a, 0x96, 0xa1, - 0x98, 0x5a, 0x96, 0xa1, 0x97, 0x5a, 0x97, 0xa1, 0x98, 0x5a, 0x97, 0xa1, - 0x97, 0x59, 0x97, 0xa1, 0x98, 0x5a, 0x97, 0xa1, 0x98, 0x59, 0x97, 0xa1, - 0x98, 0x5a, 0x97, 0xa1, 0x99, 0x59, 0x9b, 0xa1, 0x99, 0x5a, 0x9b, 0xa1, - 0x9a, 0x5a, 0x9b, 0xa1, 0x9a, 0x5a, 0x9b, 0xa1, 0x9a, 0x5a, 0x9b, 0xa1, - 0x9a, 0x5a, 0x9b, 0xa1, 0x9a, 0x5a, 0x9c, 0xa1, 0x9a, 0x5a, 0x9c, 0xa1, - 0x9a, 0x5a, 0x9d, 0x9f, 0x9b, 0x5a, 0x9d, 0xa1, 0x9a, 0x5a, 0x9d, 0x9f, - 0x9b, 0x5a, 0x9e, 0xa1, 0x9a, 0x5a, 0x9e, 0x9f, 0x9b, 0x5a, 0x9f, 0xa1, - 0x9a, 0x5a, 0x9f, 0x9f, 0x9b, 0x5a, 0x9f, 0xa1, 0x9a, 0x5a, 0xa0, 0x9f, - 0x9b, 0x5a, 0xa0, 0xa1, 0x9a, 0x5a, 0xa1, 0x9f, 0x9b, 0x5a, 0xa1, 0xa1, - 0x9a, 0x5a, 0xa1, 0x9f, 0x9b, 0x5a, 0xa2, 0xa1, 0x9a, 0x5a, 0xa2, 0x9f, - 0x9b, 0x5a, 0xa3, 0xa1, 0x9a, 0x5a, 0xa3, 0x9f, 0x9b, 0x5a, 0xa3, 0xa1, - 0x9a, 0x5a, 0xa4, 0x9f, 0x9b, 0x5a, 0xa4, 0xa1, 0x9a, 0x5a, 0xa5, 0x9f, - 0x9b, 0x5a, 0xa5, 0x9d, 0x9b, 0x5a, 0xa5, 0x9f, 0x9b, 0x5a, 0xa6, 0x9d, - 0x9b, 0x5a, 0xa6, 0x9f, 0x9b, 0x5a, 0xa6, 0x9d, 0x9b, 0x5a, 0xa7, 0x9f, - 0x9b, 0x5a, 0xa7, 0x9d, 0x9b, 0x5a, 0xa8, 0x9f, 0x9b, 0x5a, 0xa8, 0xa1, - 0x9a, 0x5a, 0xa8, 0x9f, 0x9b, 0x5a, 0xa9, 0xa1, 0x9a, 0x5a, 0xa9, 0x9f, - 0x9b, 0x5a, 0xaa, 0x9c, 0x9b, 0x5a, 0xaa, 0x9f, 0x9b, 0x5a, 0xaa, 0x90, - 0xac, 0x5a, 0xab, 0x90, 0xad, 0x5a, 0xab, 0x90, 0xac, 0x5a, 0xab, 0x90, - 0xad, 0x5a, 0xac, 0x90, 0xac, 0x5a, 0xac, 0x91, 0xb0, 0x5a, 0xac, 0x91, - 0xb1, 0x5a, 0xad, 0x91, 0xb0, 0x5a, 0xad, 0x91, 0xb1, 0x5a, 0xae, 0x91, - 0xb0, 0x5a, 0xae, 0x91, 0xb1, 0x5a, 0xae, 0x91, 0xb0, 0x5a, 0xaf, 0x91, - 0xb1, 0x5a, 0xaf, 0x91, 0xb0, 0x5a, 0xaf, 0x91, 0xb1, 0x5a, 0xb0, 0x91, - 0xb0, 0x5a, 0xb0, 0x92, 0xb4, 0x5a, 0xb0, 0x91, 0xb0, 0x5a, 0xb1, 0x92, - 0xb4, 0x5a, 0xb1, 0x92, 0xb5, 0x5a, 0xb2, 0x92, 0xb4, 0x5a, 0xb2, 0x92, - 0xb5, 0x5a, 0xb2, 0x92, 0xb4, 0x5a, 0xb3, 0x92, 0xb5, 0x5a, 0xb3, 0x92, - 0xb4, 0x5a, 0xb3, 0x92, 0xb5, 0x5a, 0xb4, 0x92, 0xb4, 0x5a, 0xb4, 0x92, - 0xb5, 0x5a, 0xb4, 0x92, 0xb4, 0x5a, 0xb5, 0x93, 0xb8, 0x5a, 0xb5, 0x93, - 0xb8, 0x5a, 0xb5, 0x93, 0xb8, 0x5a, 0xb6, 0x93, 0xb8, 0x5a, 0xb6, 0x93, - 0xb8, 0x5a, 0xb6, 0x93, 0xb8, 0x5a, 0xb7, 0x93, 0xb8, 0x5a, 0xb7, 0x93, - 0xb8, 0x5a, 0xb7, 0x93, 0xb8, 0x5a, 0xb8, 0x93, 0xb8, 0x5a, 0xb8, 0x94, - 0xbc, 0x5a, 0xb8, 0x94, 0xbc, 0x5a, 0xb9, 0x94, 0xbc, 0x5a, 0xb9, 0x94, - 0xbc, 0x5a, 0xb9, 0x94, 0xbc, 0x5a, 0xba, 0x94, 0xbc, 0x5a, 0xba, 0x94, - 0xbc, 0x5a, 0xba, 0x94, 0xbc, 0x5a, 0xbb, 0x94, 0xbc, 0x5a, 0xbb, 0x94, - 0xbc, 0x5a, 0xbb, 0x94, 0xbc, 0x5a, 0xbc, 0x94, 0xbc, 0x5a, 0xbc, 0x95, - 0xbf, 0x5a, 0xbc, 0x95, 0xc0, 0x5a, 0xbd, 0x95, 0xbf, 0x5a, 0xbd, 0x95, - 0xc0, 0x5a, 0xbd, 0x95, 0xbf, 0x5a, 0xbe, 0x95, 0xc0, 0x5a, 0xbe, 0x95, - 0xbf, 0x5a, 0xbe, 0x95, 0xc0, 0x5a, 0xbf, 0x95, 0xbf, 0x5a, 0xbf, 0x95, - 0xc0, 0x5a, 0xbf, 0x95, 0xbf, 0x5a, 0xc0, 0x96, 0xc3, 0x5a, 0xc0, 0x96, - 0xc3, 0x5a, 0xc0, 0x96, 0xc3, 0x5a, 0xc1, 0x96, 0xc3, 0x5a, 0xc1, 0x96, - 0xc3, 0x5a, 0xc1, 0x96, 0xc3, 0x5a, 0xc1, 0x96, 0xc3, 0x5a, 0xc2, 0x96, - 0xc3, 0x5a, 0xc2, 0x96, 0xc3, 0x5a, 0xc2, 0x96, 0xc3, 0x5a, 0xc3, 0x96, - 0xc3, 0x5a, 0xc3, 0x96, 0xc3, 0x5a, 0xc3, 0x96, 0xc3, 0x5a, 0xc4, 0x96, - 0xc4, 0x5a, 0xc4, 0x97, 0xc6, 0x5a, 0xc4, 0x97, 0xc7, 0x5a, 0xc5, 0x97, - 0xc6, 0x5a, 0xc5, 0x97, 0xc7, 0x5a, 0xc5, 0x97, 0xc6, 0x5a, 0xc6, 0x97, - 0xc7, 0x5a, 0xc6, 0x97, 0xc6, 0x5a, 0xc6, 0x97, 0xc7, 0x5a, 0xc6, 0x97, - 0xc6, 0x5a, 0xc7, 0x97, 0xc7, 0x5a, 0xc7, 0x97, 0xc7, 0x5a, 0xc7, 0x98, - 0xca, 0x5a, 0xc8, 0x98, 0xca, 0x5a, 0xc8, 0x98, 0xca, 0x5a, 0xc8, 0x98, - 0xca, 0x5a, 0xc9, 0x98, 0xca, 0x5a, 0xc9, 0x98, 0xca, 0x5a, 0xc9, 0x98, - 0xca, 0x5a, 0xc9, 0x98, 0xca, 0x5a, 0xca, 0x98, 0xca, 0x5a, 0xca, 0x98, - 0xca, 0x5a, 0xca, 0x98, 0xca, 0x5a, 0xcb, 0x98, 0xcd, 0x5a, 0xcb, 0x98, - 0xcd, 0x5a, 0xcb, 0x98, 0xcd, 0x5a, 0xcc, 0x98, 0xcd, 0x5a, 0xcc, 0xa1, - 0xd2, 0x5a, 0xcc, 0xa3, 0xd1, 0x5a, 0xcc, 0xa1, 0xd2, 0x5a, 0xcd, 0xa3, - 0xd1, 0x5a, 0xcd, 0xa1, 0xd2, 0x5a, 0xcd, 0xa3, 0xd1, 0x5a, 0xce, 0xa1, - 0xd2, 0x5a, 0xce, 0xa3, 0xd1, 0x5a, 0xce, 0xa1, 0xd2, 0x5a, 0xce, 0xa3, - 0xd1, 0x5a, 0xcf, 0xa1, 0xd2, 0x5a, 0xcf, 0xa3, 0xd1, 0x5a, 0xcf, 0xa1, - 0xd2, 0x5a, 0xd0, 0xa1, 0xd2, 0x5a, 0xd0, 0xa1, 0xd2, 0x5a, 0xd0, 0xa1, - 0xd2, 0x5a, 0xd0, 0xa1, 0xd2, 0x5a, 0xd1, 0xa1, 0xd2, 0x5a, 0xd1, 0xa1, - 0xd2, 0x5a, 0xd1, 0xa1, 0xd2, 0x5a, 0xd2, 0xa1, 0xd2, 0x59, 0xd1, 0xa1, - 0xd2, 0x5a, 0xd2, 0xa1, 0xd2, 0x59, 0xd1, 0xa1, 0xd2, 0x5a, 0xd2, 0xa1, - 0xd3, 0x59, 0xd1, 0xa1, 0xd3, 0x5a, 0xd2, 0xa1, 0xd3, 0x59, 0xd1, 0xa1, - 0xd4, 0x5a, 0xd2, 0xa1, 0xd4, 0x59, 0xd1, 0xa1, 0xd4, 0x5a, 0xd2, 0xa1, - 0xd4, 0x59, 0xd1, 0xa1, 0xd5, 0x5a, 0xd2, 0xa1, 0xd5, 0x59, 0xd1, 0xa1, - 0xd5, 0x5a, 0xd2, 0xa1, 0xd6, 0x59, 0xd1, 0xa1, 0xd6, 0x5a, 0xd2, 0xa1, - 0xd6, 0x59, 0xd2, 0xa1, 0xd6, 0x56, 0xd2, 0xa1, 0xd7, 0x59, 0xd2, 0xa1, - 0xd7, 0x56, 0xd2, 0xa1, 0xd7, 0x59, 0xd2, 0xa1, 0xd7, 0x56, 0xd2, 0xa1, - 0xd8, 0x59, 0xd2, 0xa1, 0xd8, 0x56, 0xd2, 0xa1, 0xd8, 0x59, 0xd2, 0xa1, - 0xd9, 0x56, 0xdb, 0xa1, 0xd9, 0x4e, 0xd9, 0xa1, 0xd9, 0x4d, 0xdb, 0xa1, - 0xd9, 0x4e, 0xdc, 0xa1, 0xda, 0x4e, 0xdb, 0xa1, 0xda, 0x4e, 0xdc, 0xa1, - 0xda, 0x4e, 0xdb, 0xa1, 0xda, 0x4e, 0xdc, 0xa1, 0xdb, 0x4e, 0xdb, 0xa1, - 0xdb, 0x4e, 0xdc, 0xa1, 0xdb, 0x4e, 0xdb, 0xa1, 0xdb, 0x4e, 0xdc, 0xa1, - 0xdc, 0x4e, 0xde, 0xa1, 0xdc, 0x4f, 0xde, 0xa1, 0xdc, 0x4f, 0xde, 0xa1, - 0xdd, 0x4f, 0xde, 0xa1, 0xdd, 0x4f, 0xde, 0xa1, 0xdd, 0x4f, 0xde, 0xa1, - 0xdd, 0x4f, 0xde, 0xa1, 0xde, 0x4f, 0xde, 0xa1, 0xde, 0x4f, 0xde, 0xa1, - 0xde, 0x4f, 0xe1, 0xa1, 0xde, 0x50, 0xe1, 0xa1, 0xdf, 0x50, 0xe1, 0xa1, - 0xdf, 0x50, 0xe1, 0xa1, 0xdf, 0x50, 0xe1, 0xa1, 0xdf, 0x50, 0xe1, 0xa1, - 0xe0, 0x50, 0xe1, 0xa1, 0xe0, 0x50, 0xe1, 0xa1, 0xe0, 0x50, 0xe1, 0xa1, - 0xe1, 0x50, 0xe3, 0xa1, 0xe1, 0x51, 0xe3, 0xa1, 0xe1, 0x51, 0xe3, 0xa1, - 0xe1, 0x51, 0xe3, 0xa1, 0xe2, 0x51, 0xe3, 0xa1, 0xe2, 0x51, 0xe3, 0xa1, - 0xe2, 0x51, 0xe3, 0xa1, 0xe2, 0x51, 0xe3, 0xa1, 0xe3, 0x51, 0xe3, 0xa1, - 0xe3, 0x51, 0xe3, 0xa1, 0xe3, 0x51, 0xe5, 0xa1, 0xe3, 0x52, 0xe6, 0xa1, - 0xe4, 0x52, 0xe5, 0xa1, 0xe4, 0x52, 0xe6, 0xa1, 0xe4, 0x52, 0xe5, 0xa1, - 0xe4, 0x52, 0xe6, 0xa1, 0xe5, 0x52, 0xe5, 0xa1, 0xe5, 0x52, 0xe6, 0xa1, - 0xe5, 0x52, 0xe5, 0xa1, 0xe5, 0x52, 0xe6, 0xa1, 0xe6, 0x52, 0xe6, 0xa1, - 0xe6, 0x52, 0xe8, 0xa1, 0xe6, 0x53, 0xe8, 0xa1, 0xe6, 0x53, 0xe8, 0xa1, - 0xe7, 0x53, 0xe8, 0xa1, 0xe7, 0x53, 0xe8, 0xa1, 0xe7, 0x53, 0xe8, 0xa1, - 0xe7, 0x53, 0xe8, 0xa1, 0xe8, 0x53, 0xe8, 0xa1, 0xe8, 0x53, 0xe8, 0xa1, - 0xe8, 0x53, 0xe8, 0xa1, 0xe8, 0x53, 0xea, 0xa1, 0xe9, 0x54, 0xea, 0xa1, - 0xe9, 0x54, 0xea, 0xa1, 0xe9, 0x54, 0xea, 0xa1, 0xe9, 0x54, 0xea, 0xa1, - 0xea, 0x54, 0xea, 0xa1, 0xea, 0x54, 0xea, 0xa1, 0xea, 0x54, 0xea, 0xa1, - 0xea, 0x54, 0xeb, 0xa1, 0xeb, 0x54, 0xec, 0xa1, 0xeb, 0x55, 0xec, 0xa1, - 0xeb, 0x55, 0xec, 0xa1, 0xeb, 0x55, 0xec, 0xa1, 0xec, 0x55, 0xec, 0xa1, - 0xec, 0x55, 0xec, 0xa1, 0xec, 0x55, 0xec, 0xa1, 0xec, 0x55, 0xec, 0xa1, - 0xec, 0x55, 0xed, 0xa1, 0xed, 0x55, 0xed, 0xa1, 0xed, 0x55, 0xed, 0xa1, - 0xed, 0x55, 0xee, 0xa1, 0xed, 0x56, 0xef, 0xa1, 0xee, 0x56, 0xee, 0xa1, - 0xee, 0x56, 0xef, 0xa1, 0xee, 0x56, 0xee, 0xa1, 0xee, 0x56, 0xef, 0xa1, - 0xef, 0x56, 0xef, 0xa1, 0xef, 0x56, 0xef, 0xa1, 0xef, 0x56, 0xef, 0xa1, - 0xef, 0x56, 0xf0, 0xa1, 0xf0, 0x56, 0xf1, 0xa1, 0xf0, 0x57, 0xf1, 0xa1, - 0xf0, 0x57, 0xf1, 0xa1, 0xf0, 0x57, 0xf1, 0xa1, 0xf1, 0x57, 0xf1, 0xa1, - 0xf1, 0x57, 0xf1, 0xa1, 0xf1, 0x57, 0xf1, 0xa1, 0xf1, 0x57, 0xf2, 0xa1, - 0xf2, 0x57, 0xf2, 0xa1, 0xf2, 0x57, 0xf3, 0xa1, 0xf2, 0x58, 0xf3, 0xa1, - 0xf2, 0x58, 0xf3, 0xa1, 0xf2, 0x58, 0xf3, 0xa1, 0xf3, 0x58, 0xf3, 0xa1, - 0xf3, 0x58, 0xf3, 0xa1, 0xf3, 0x58, 0xf3, 0xa1, 0xf3, 0x58, 0xf4, 0xa1, - 0xf4, 0x58, 0xf4, 0xa1, 0xf4, 0x58, 0xf4, 0xa1, 0xf4, 0x58, 0xf4, 0xa1, - 0xf4, 0x58, 0xf5, 0xa1, 0xf5, 0x59, 0xf5, 0xa1, 0xf5, 0x59, 0xf5, 0xa1, - 0xf5, 0x59, 0xf5, 0xa1, 0xf5, 0x59, 0xf5, 0xa1, 0xf5, 0x59, 0xf6, 0xa1, - 0xf6, 0x59, 0xf6, 0xa1, 0xf6, 0x59, 0xf6, 0xa1, 0xf6, 0x59, 0xf6, 0xa1, - 0xf6, 0x59, 0xf7, 0xa1, 0xf7, 0x59, 0xf7, 0xa1, 0xf7, 0x59, 0xf7, 0xa1, - 0xf7, 0x59, 0xf7, 0xa1, 0xf7, 0x5a, 0xf8, 0xa1, 0xf8, 0x5a, 0xf8, 0xa1, - 0xf8, 0x5a, 0xf8, 0xa1, 0xf8, 0x5a, 0xf8, 0xa1, 0xf8, 0x5a, 0xf8, 0xa1, - 0xf8, 0x5a, 0xf9, 0xa1, 0xf9, 0x5a, 0xf9, 0xa1, 0xf9, 0x5a, 0xf9, 0xa1, - 0xf9, 0x5a, 0xf9, 0xa1, 0xf9, 0x5a, 0xfa, 0xa1, 0xf9, 0x5a, 0xfa, 0xa2, - 0xfa, 0x5a, 0xfa, 0xa2, 0xfa, 0x5a, 0xfa, 0xa2, 0xfa, 0x5a, 0xfa, 0xa2, - 0xfa, 0x5a, 0xfb, 0xa2, 0xfb, 0x5a, 0xfb, 0xa2, 0xfb, 0x5a, 0xfb, 0xa2, - 0xfb, 0x5a, 0xfb, 0xa2, 0xfb, 0x5a, 0xfc, 0xa2, 0xfb, 0x5a, 0xfc, 0xa2, - 0xfb, 0x5a, 0xfc, 0xa2, 0xfb, 0x5a, 0xfc, 0xa3, 0xfb, 0x5a, 0xfc, 0xa3, - 0xfc, 0x5a, 0xfd, 0xa3, 0xfb, 0x5a, 0xfd, 0xa3, 0xfc, 0x5a, 0xfd, 0xa3, - 0xfb, 0x5a, 0xfd, 0xa3, 0xfc, 0x5a, 0xfe, 0xa3, 0xfb, 0x5a, 0xfe, 0xa3, - 0xfc, 0x5a, 0xfe, 0xa3, 0xfb, 0x5a, 0xfe, 0xa3, 0xfc, 0x5a, 0xfe, 0xa3, - 0xfb, 0x5a, 0xff, 0xa3, 0xfc, 0x5a, 0xff, 0xa3, 0xfb, 0x5a, 0x03, 0xaa, - 0x95, 0x5b, 0x0a, 0xa8, 0x96, 0x5b, 0x0f, 0xaa, 0x95, 0x5b, 0x14, 0xa8, - 0x96, 0x5b, 0x17, 0xaa, 0x95, 0x5b, 0x1b, 0xa8, 0x96, 0x5b, 0x1e, 0xaa, - 0x95, 0x5b, 0x20, 0xa8, 0x96, 0x5b, 0x23, 0xaa, 0x95, 0x5b, 0x25, 0xa8, - 0x96, 0x5b, 0x27, 0xaa, 0x95, 0x5b, 0x29, 0xa8, 0x96, 0x5b, 0x2b, 0xaa, - 0x95, 0x5b, 0x2d, 0xa8, 0x96, 0x5b, 0x2f, 0xaa, 0x95, 0x5b, 0x31, 0xa8, - 0x96, 0x5b, 0x32, 0xaa, 0x95, 0x5b, 0x34, 0xa8, 0x96, 0x5b, 0x35, 0xaa, - 0x95, 0x5b, 0x37, 0xa8, 0x96, 0x5b, 0x38, 0xaa, 0x95, 0x5b, 0x3a, 0xa8, - 0x96, 0x5b, 0x3b, 0xaa, 0x95, 0x5b, 0x3c, 0xa8, 0x96, 0x5b, 0x3e, 0xaa, - 0x95, 0x5b, 0x3f, 0xa8, 0x96, 0x5b, 0x40, 0xaa, 0x95, 0x5b, 0x42, 0xa8, - 0x96, 0x5b, 0x43, 0xaa, 0x95, 0x5b, 0x44, 0xa8, 0x96, 0x5b, 0x45, 0xaa, - 0x95, 0x5b, 0x46, 0xa8, 0x96, 0x5b, 0x47, 0xaa, 0x95, 0x5b, 0x48, 0xa8, - 0x96, 0x5b, 0x49, 0xaa, 0x95, 0x5b, 0x4a, 0xa8, 0x96, 0x5b, 0x4b, 0xaa, - 0x95, 0x5b, 0x4c, 0xa8, 0x96, 0x5b, 0x4d, 0xaa, 0x95, 0x5b, 0x4e, 0xa8, - 0x96, 0x5b, 0x4f, 0xaa, 0x95, 0x5b, 0x50, 0xa8, 0x96, 0x5b, 0x51, 0xaa, - 0x95, 0x5b, 0x52, 0xa8, 0x96, 0x5b, 0x53, 0xaa, 0x95, 0x5b, 0x54, 0xa8, - 0x96, 0x5b, 0x55, 0xaa, 0x95, 0x5b, 0x56, 0xa8, 0x96, 0x5b, 0x57, 0xa6, - 0x96, 0x5b, 0x58, 0xa8, 0x96, 0x5b, 0x58, 0xa6, 0x96, 0x5b, 0x59, 0xa8, - 0x96, 0x5b, 0x5a, 0xa6, 0x96, 0x5b, 0x5b, 0xa8, 0x96, 0x5b, 0x5c, 0xa6, - 0x96, 0x5b, 0x5d, 0xa8, 0x96, 0x5b, 0x5d, 0xa6, 0x96, 0x5b, 0x5e, 0xa8, - 0x96, 0x5b, 0x5f, 0xa6, 0x96, 0x5b, 0x60, 0xa8, 0x96, 0x5b, 0x60, 0xa6, - 0x96, 0x5b, 0x61, 0xa8, 0x96, 0x5b, 0x62, 0xa6, 0x96, 0x5b, 0x63, 0xa8, - 0x96, 0x5b, 0x63, 0xa6, 0x96, 0x5b, 0x64, 0xa8, 0x96, 0x5b, 0x65, 0xa6, - 0x96, 0x5b, 0x66, 0xa8, 0x96, 0x5b, 0x66, 0xa6, 0x96, 0x5b, 0x67, 0xa8, - 0x96, 0x5b, 0x68, 0xa6, 0x96, 0x5b, 0x68, 0xa8, 0x96, 0x5b, 0x69, 0xa6, - 0x96, 0x5b, 0x6a, 0xa8, 0x96, 0x5b, 0x6a, 0xa6, 0x96, 0x5b, 0x6b, 0xa8, - 0x96, 0x5b, 0x6c, 0xa6, 0x96, 0x5b, 0x6c, 0xa8, 0x96, 0x5b, 0x6d, 0xa6, - 0x96, 0x5b, 0x6e, 0xa8, 0x96, 0x5b, 0x6e, 0xa6, 0x96, 0x5b, 0x6f, 0xa8, - 0x96, 0x5b, 0x70, 0xa6, 0x96, 0x5b, 0x70, 0xa8, 0x96, 0x5b, 0x71, 0xa6, - 0x96, 0x5b, 0x72, 0xa3, 0x97, 0x5b, 0x72, 0xa6, 0x96, 0x5b, 0x73, 0xa3, - 0x97, 0x5b, 0x73, 0xa6, 0x96, 0x5b, 0x74, 0xa3, 0x97, 0x5b, 0x75, 0xa6, - 0x96, 0x5b, 0x75, 0xa3, 0x97, 0x5b, 0x76, 0xa6, 0x96, 0x5b, 0x76, 0xa3, - 0x97, 0x5b, 0x77, 0xa6, 0x96, 0x5b, 0x78, 0xa3, 0x97, 0x5b, 0x78, 0xa6, - 0x96, 0x5b, 0x79, 0xa3, 0x97, 0x5b, 0x79, 0xa6, 0x96, 0x5b, 0x7a, 0xa3, - 0x97, 0x5b, 0x7a, 0xa6, 0x96, 0x5b, 0x7b, 0xa3, 0x97, 0x5b, 0x7c, 0xa6, - 0x96, 0x5b, 0x7c, 0xa3, 0x97, 0x5b, 0x7d, 0xa6, 0x96, 0x5b, 0x7d, 0xa3, - 0x97, 0x5b, 0x7e, 0xa6, 0x96, 0x5b, 0x7e, 0xa3, 0x97, 0x5b, 0x7f, 0xa6, - 0x96, 0x5b, 0x7f, 0xa3, 0x97, 0x5b, 0x80, 0xa6, 0x96, 0x5b, 0x81, 0xa3, - 0x97, 0x5b, 0x81, 0xa6, 0x96, 0x5b, 0x82, 0xa3, 0x97, 0x5b, 0x82, 0xa6, - 0x96, 0x5b, 0x83, 0xa3, 0x97, 0x5b, 0x83, 0xa6, 0x96, 0x5b, 0x84, 0xa3, - 0x97, 0x5b, 0x84, 0xa6, 0x96, 0x5b, 0x85, 0xa3, 0x97, 0x5b, 0x85, 0xa6, - 0x96, 0x5b, 0x86, 0xa3, 0x97, 0x5b, 0x86, 0xa1, 0x97, 0x5b, 0x87, 0xa3, - 0x97, 0x5b, 0x87, 0xa1, 0x97, 0x5b, 0x88, 0xa3, 0x97, 0x5b, 0x88, 0xa1, - 0x97, 0x5b, 0x89, 0xa3, 0x97, 0x5b, 0x89, 0xa1, 0x97, 0x5b, 0x8a, 0xa3, - 0x97, 0x5b, 0x8a, 0xa1, 0x97, 0x5b, 0x8b, 0xa3, 0x97, 0x5b, 0x8b, 0xa1, - 0x97, 0x5b, 0x8c, 0xa3, 0x97, 0x5b, 0x8c, 0xa1, 0x97, 0x5b, 0x8d, 0xa3, - 0x97, 0x5b, 0x8d, 0xa1, 0x97, 0x5b, 0x8e, 0xa3, 0x97, 0x5b, 0x8e, 0xa1, - 0x97, 0x5b, 0x8e, 0xa3, 0x97, 0x5b, 0x8f, 0xa1, 0x97, 0x5b, 0x8f, 0xa3, - 0x97, 0x5b, 0x90, 0xa1, 0x97, 0x5b, 0x90, 0xa3, 0x97, 0x5b, 0x91, 0xa1, - 0x97, 0x5b, 0x91, 0xa3, 0x97, 0x5b, 0x92, 0xa1, 0x97, 0x5b, 0x92, 0xa3, - 0x97, 0x5b, 0x93, 0xa1, 0x97, 0x5b, 0x93, 0xa3, 0x97, 0x5b, 0x94, 0xa1, - 0x97, 0x5b, 0x94, 0xa1, 0x98, 0x5b, 0x94, 0xa1, 0x97, 0x5b, 0x95, 0xa1, - 0x98, 0x5b, 0x95, 0xa1, 0x97, 0x5b, 0x96, 0xa1, 0x98, 0x5b, 0x96, 0xa1, - 0x97, 0x5b, 0x97, 0xa1, 0x98, 0x5b, 0x96, 0xa1, 0x97, 0x5b, 0x97, 0xa1, - 0x98, 0x5b, 0x96, 0xa1, 0x98, 0x5b, 0x97, 0xa1, 0x98, 0x5b, 0x9a, 0xa1, - 0x99, 0x5c, 0x9b, 0xa1, 0x99, 0x5b, 0x9a, 0xa1, 0x9a, 0x5c, 0x9b, 0xa1, - 0x9a, 0x5b, 0x9b, 0xa1, 0x9a, 0x5b, 0x9b, 0xa1, 0x9a, 0x5b, 0x9b, 0xa1, - 0x9a, 0x5b, 0x9c, 0xa1, 0x9a, 0x5b, 0x9c, 0xa1, 0x9a, 0x5b, 0x9d, 0xa1, - 0x9a, 0x5b, 0x9d, 0xa1, 0x9a, 0x5b, 0x9d, 0xa1, 0x9a, 0x5b, 0x9e, 0xa1, - 0x9a, 0x5b, 0x9e, 0x9f, 0x9b, 0x5b, 0x9f, 0xa1, 0x9a, 0x5b, 0x9f, 0x9f, - 0x9b, 0x5b, 0x9f, 0xa1, 0x9a, 0x5b, 0xa0, 0x9f, 0x9b, 0x5b, 0xa0, 0xa1, - 0x9a, 0x5b, 0xa1, 0x9f, 0x9b, 0x5b, 0xa1, 0xa1, 0x9a, 0x5b, 0xa1, 0x9f, - 0x9b, 0x5b, 0xa2, 0xa1, 0x9a, 0x5b, 0xa2, 0x9f, 0x9b, 0x5b, 0xa3, 0xa1, - 0x9a, 0x5b, 0xa3, 0x9f, 0x9b, 0x5b, 0xa3, 0xa1, 0x9a, 0x5b, 0xa4, 0x9f, - 0x9b, 0x5b, 0xa4, 0xa1, 0x9a, 0x5b, 0xa5, 0x9f, 0x9b, 0x5b, 0xa5, 0x9d, - 0x9b, 0x5b, 0xa5, 0x9f, 0x9b, 0x5b, 0xa6, 0x9d, 0x9b, 0x5b, 0xa6, 0x9f, - 0x9b, 0x5b, 0xa6, 0x9d, 0x9b, 0x5b, 0xa7, 0x9f, 0x9b, 0x5b, 0xa7, 0x9d, - 0x9b, 0x5b, 0xa8, 0x9f, 0x9b, 0x5b, 0xa8, 0x9d, 0x9b, 0x5b, 0xa8, 0x9f, - 0x9b, 0x5b, 0xa9, 0x9d, 0x9b, 0x5b, 0xa9, 0x9f, 0x9b, 0x5b, 0xaa, 0x9d, - 0x9b, 0x5b, 0xaa, 0x9f, 0x9b, 0x5b, 0xaa, 0xaf, 0xa7, 0x5b, 0xab, 0xaf, - 0xa8, 0x5b, 0xab, 0x91, 0xaf, 0x5b, 0xab, 0x91, 0xae, 0x5b, 0xac, 0x91, - 0xaf, 0x5b, 0xac, 0x91, 0xae, 0x5b, 0xac, 0x91, 0xaf, 0x5b, 0xad, 0x91, - 0xae, 0x5b, 0xad, 0x91, 0xaf, 0x5b, 0xae, 0x91, 0xae, 0x5b, 0xae, 0x92, - 0xb2, 0x5b, 0xae, 0x92, 0xb3, 0x5b, 0xaf, 0x92, 0xb2, 0x5b, 0xaf, 0x92, - 0xb3, 0x5b, 0xaf, 0x92, 0xb2, 0x5b, 0xb0, 0x92, 0xb3, 0x5b, 0xb0, 0x92, - 0xb2, 0x5b, 0xb0, 0x92, 0xb3, 0x5b, 0xb1, 0x92, 0xb2, 0x5b, 0xb1, 0x92, - 0xb3, 0x5b, 0xb2, 0x92, 0xb2, 0x5b, 0xb2, 0x93, 0xb6, 0x5b, 0xb2, 0x92, - 0xb2, 0x5b, 0xb3, 0x93, 0xb6, 0x5b, 0xb3, 0x93, 0xb6, 0x5b, 0xb3, 0x93, - 0xb6, 0x5b, 0xb4, 0x93, 0xb6, 0x5b, 0xb4, 0x93, 0xb6, 0x5b, 0xb4, 0x93, - 0xb6, 0x5b, 0xb5, 0x93, 0xb6, 0x5b, 0xb5, 0x93, 0xb6, 0x5b, 0xb5, 0x93, - 0xb6, 0x5b, 0xb6, 0x93, 0xb6, 0x5b, 0xb6, 0x93, 0xb6, 0x5b, 0xb6, 0x93, - 0xb6, 0x5b, 0xb7, 0x94, 0xba, 0x5b, 0xb7, 0x94, 0xba, 0x5b, 0xb7, 0x94, - 0xba, 0x5b, 0xb8, 0x94, 0xba, 0x5b, 0xb8, 0x94, 0xba, 0x5b, 0xb8, 0x94, - 0xba, 0x5b, 0xb9, 0x94, 0xba, 0x5b, 0xb9, 0x94, 0xba, 0x5b, 0xb9, 0x94, - 0xba, 0x5b, 0xba, 0x94, 0xba, 0x5b, 0xba, 0x94, 0xba, 0x5b, 0xba, 0x94, - 0xbe, 0x5b, 0xbb, 0x94, 0xbe, 0x5b, 0xbb, 0x94, 0xbe, 0x5b, 0xbb, 0x94, - 0xbe, 0x5b, 0xbc, 0x94, 0xbe, 0x5b, 0xbc, 0x94, 0xbe, 0x5b, 0xbc, 0x94, - 0xbe, 0x5b, 0xbd, 0x94, 0xbe, 0x5b, 0xbd, 0x94, 0xbe, 0x5b, 0xbd, 0x94, - 0xbe, 0x5b, 0xbe, 0x94, 0xbe, 0x5b, 0xbe, 0x95, 0xc1, 0x5b, 0xbe, 0x95, - 0xc1, 0x5b, 0xbf, 0x95, 0xc1, 0x5b, 0xbf, 0x95, 0xc1, 0x5b, 0xbf, 0x95, - 0xc1, 0x5b, 0xc0, 0x95, 0xc1, 0x5b, 0xc0, 0x95, 0xc1, 0x5b, 0xc0, 0x95, - 0xc1, 0x5b, 0xc1, 0x95, 0xc1, 0x5b, 0xc1, 0x95, 0xc1, 0x5b, 0xc1, 0x95, - 0xc1, 0x5b, 0xc1, 0x96, 0xc5, 0x5b, 0xc2, 0x96, 0xc5, 0x5b, 0xc2, 0x96, - 0xc5, 0x5b, 0xc2, 0x96, 0xc5, 0x5b, 0xc3, 0x96, 0xc5, 0x5b, 0xc3, 0x96, - 0xc5, 0x5b, 0xc3, 0x96, 0xc5, 0x5b, 0xc4, 0x96, 0xc5, 0x5b, 0xc4, 0x96, - 0xc5, 0x5b, 0xc4, 0x96, 0xc5, 0x5b, 0xc5, 0x96, 0xc5, 0x5b, 0xc5, 0x96, - 0xc5, 0x5b, 0xc5, 0x96, 0xc5, 0x5b, 0xc6, 0x97, 0xc8, 0x5b, 0xc6, 0x97, - 0xc8, 0x5b, 0xc6, 0x97, 0xc8, 0x5b, 0xc6, 0x97, 0xc8, 0x5b, 0xc7, 0x97, - 0xc8, 0x5b, 0xc7, 0x97, 0xc8, 0x5b, 0xc7, 0x97, 0xc8, 0x5b, 0xc8, 0x97, - 0xc8, 0x5b, 0xc8, 0x97, 0xc8, 0x5b, 0xc8, 0x97, 0xc8, 0x5b, 0xc9, 0x97, - 0xc9, 0x5b, 0xc9, 0x98, 0xcb, 0x5b, 0xc9, 0x98, 0xcc, 0x5b, 0xc9, 0x98, - 0xcb, 0x5b, 0xca, 0x98, 0xcc, 0x5b, 0xca, 0x98, 0xcb, 0x5b, 0xca, 0x98, - 0xcc, 0x5b, 0xcb, 0x98, 0xcb, 0x5b, 0xcb, 0x98, 0xcc, 0x5b, 0xcb, 0x98, - 0xcb, 0x5b, 0xcc, 0xa3, 0xd1, 0x5b, 0xcc, 0xa1, 0xd2, 0x5b, 0xcc, 0xa3, - 0xd1, 0x5b, 0xcc, 0xa1, 0xd2, 0x5b, 0xcd, 0xa3, 0xd1, 0x5b, 0xcd, 0xa1, - 0xd2, 0x5b, 0xcd, 0xa3, 0xd1, 0x5b, 0xce, 0xa1, 0xd2, 0x5b, 0xce, 0xa3, - 0xd1, 0x5b, 0xce, 0xa1, 0xd2, 0x5b, 0xce, 0xa3, 0xd1, 0x5b, 0xcf, 0xa1, - 0xd2, 0x5b, 0xcf, 0xa3, 0xd1, 0x5b, 0xcf, 0xa1, 0xd2, 0x5b, 0xd0, 0xa3, - 0xd1, 0x5b, 0xd0, 0xa1, 0xd2, 0x5b, 0xd0, 0xa3, 0xd1, 0x5b, 0xd0, 0xa1, - 0xd2, 0x5b, 0xd1, 0xa1, 0xd2, 0x5b, 0xd1, 0xa1, 0xd2, 0x5b, 0xd1, 0xa1, - 0xd2, 0x5b, 0xd1, 0xa1, 0xd2, 0x5b, 0xd1, 0xa1, 0xd2, 0x5b, 0xd1, 0xa1, - 0xd2, 0x5b, 0xd1, 0xa1, 0xd2, 0x5b, 0xd2, 0xa1, 0xd3, 0x59, 0xd1, 0xa1, - 0xd3, 0x5b, 0xd2, 0xa1, 0xd3, 0x59, 0xd1, 0xa1, 0xd4, 0x5b, 0xd2, 0xa1, - 0xd4, 0x59, 0xd1, 0xa1, 0xd4, 0x5b, 0xd2, 0xa1, 0xd4, 0x59, 0xd1, 0xa1, - 0xd5, 0x5b, 0xd2, 0xa1, 0xd5, 0x59, 0xd1, 0xa1, 0xd5, 0x5b, 0xd2, 0xa1, - 0xd6, 0x59, 0xd1, 0xa1, 0xd6, 0x5b, 0xd2, 0xa1, 0xd6, 0x59, 0xd2, 0xa1, - 0xd6, 0x57, 0xd2, 0xa1, 0xd7, 0x59, 0xd2, 0xa1, 0xd7, 0x57, 0xd2, 0xa1, - 0xd7, 0x59, 0xd2, 0xa1, 0xd7, 0x57, 0xd2, 0xa1, 0xd8, 0x59, 0xd2, 0xa1, - 0xd8, 0x57, 0xd2, 0xa1, 0xd8, 0x59, 0xd2, 0xa1, 0xd9, 0x57, 0xd2, 0xa1, - 0xd9, 0x59, 0xdb, 0xa1, 0xd9, 0x4e, 0xda, 0xa1, 0xd9, 0x4e, 0xdb, 0xa1, - 0xda, 0x4e, 0xda, 0xa1, 0xda, 0x4e, 0xdd, 0xa1, 0xda, 0x4f, 0xda, 0xa1, - 0xda, 0x4e, 0xdd, 0xa1, 0xdb, 0x4f, 0xdd, 0xa1, 0xdb, 0x4f, 0xdd, 0xa1, - 0xdb, 0x4f, 0xdd, 0xa1, 0xdb, 0x4f, 0xdd, 0xa1, 0xdc, 0x4f, 0xdd, 0xa1, - 0xdc, 0x4f, 0xdd, 0xa1, 0xdc, 0x4f, 0xdd, 0xa1, 0xdd, 0x4f, 0xdd, 0xa1, - 0xdd, 0x4f, 0xdf, 0xa1, 0xdd, 0x50, 0xdf, 0xa1, 0xdd, 0x50, 0xdf, 0xa1, - 0xde, 0x50, 0xdf, 0xa1, 0xde, 0x50, 0xdf, 0xa1, 0xde, 0x50, 0xdf, 0xa1, - 0xde, 0x50, 0xdf, 0xa1, 0xdf, 0x50, 0xdf, 0xa1, 0xdf, 0x50, 0xdf, 0xa1, - 0xdf, 0x50, 0xdf, 0xa1, 0xdf, 0x50, 0xe2, 0xa1, 0xe0, 0x51, 0xe2, 0xa1, - 0xe0, 0x51, 0xe2, 0xa1, 0xe0, 0x51, 0xe2, 0xa1, 0xe1, 0x51, 0xe2, 0xa1, - 0xe1, 0x51, 0xe2, 0xa1, 0xe1, 0x51, 0xe2, 0xa1, 0xe1, 0x51, 0xe2, 0xa1, - 0xe2, 0x51, 0xe2, 0xa1, 0xe2, 0x51, 0xe4, 0xa1, 0xe2, 0x52, 0xe4, 0xa1, - 0xe2, 0x52, 0xe4, 0xa1, 0xe3, 0x52, 0xe4, 0xa1, 0xe3, 0x52, 0xe4, 0xa1, - 0xe3, 0x52, 0xe4, 0xa1, 0xe3, 0x52, 0xe4, 0xa1, 0xe4, 0x52, 0xe4, 0xa1, - 0xe4, 0x52, 0xe4, 0xa1, 0xe4, 0x52, 0xe6, 0xa1, 0xe4, 0x53, 0xe7, 0xa1, - 0xe5, 0x53, 0xe6, 0xa1, 0xe5, 0x53, 0xe7, 0xa1, 0xe5, 0x53, 0xe6, 0xa1, - 0xe5, 0x53, 0xe7, 0xa1, 0xe6, 0x53, 0xe6, 0xa1, 0xe6, 0x53, 0xe7, 0xa1, - 0xe6, 0x53, 0xe6, 0xa1, 0xe6, 0x53, 0xe7, 0xa1, 0xe7, 0x53, 0xe7, 0xa1, - 0xe7, 0x53, 0xe7, 0xa1, 0xe7, 0x53, 0xe9, 0xa1, 0xe7, 0x54, 0xe9, 0xa1, - 0xe8, 0x54, 0xe9, 0xa1, 0xe8, 0x54, 0xe9, 0xa1, 0xe8, 0x54, 0xe9, 0xa1, - 0xe8, 0x54, 0xe9, 0xa1, 0xe9, 0x54, 0xe9, 0xa1, 0xe9, 0x54, 0xe9, 0xa1, - 0xe9, 0x54, 0xe9, 0xa1, 0xe9, 0x54, 0xeb, 0xa1, 0xea, 0x55, 0xeb, 0xa1, - 0xea, 0x55, 0xeb, 0xa1, 0xea, 0x55, 0xeb, 0xa1, 0xea, 0x55, 0xeb, 0xa1, - 0xeb, 0x55, 0xeb, 0xa1, 0xeb, 0x55, 0xeb, 0xa1, 0xeb, 0x55, 0xeb, 0xa1, - 0xeb, 0x55, 0xec, 0xa1, 0xec, 0x55, 0xec, 0xa1, 0xec, 0x55, 0xed, 0xa1, - 0xec, 0x56, 0xee, 0xa1, 0xec, 0x56, 0xed, 0xa1, 0xec, 0x56, 0xee, 0xa1, - 0xed, 0x56, 0xed, 0xa1, 0xed, 0x56, 0xee, 0xa1, 0xed, 0x56, 0xed, 0xa1, - 0xed, 0x56, 0xee, 0xa1, 0xee, 0x56, 0xee, 0xa1, 0xee, 0x56, 0xee, 0xa1, - 0xee, 0x56, 0xee, 0xa1, 0xee, 0x56, 0xf0, 0xa1, 0xef, 0x57, 0xf0, 0xa1, - 0xef, 0x57, 0xf0, 0xa1, 0xef, 0x57, 0xf0, 0xa1, 0xef, 0x57, 0xf0, 0xa1, - 0xf0, 0x57, 0xf0, 0xa1, 0xf0, 0x57, 0xf0, 0xa1, 0xf0, 0x57, 0xf0, 0xa1, - 0xf0, 0x57, 0xf1, 0xa1, 0xf1, 0x57, 0xf2, 0xa1, 0xf1, 0x58, 0xf2, 0xa1, - 0xf1, 0x58, 0xf2, 0xa1, 0xf1, 0x58, 0xf2, 0xa1, 0xf2, 0x58, 0xf2, 0xa1, - 0xf2, 0x58, 0xf2, 0xa1, 0xf2, 0x58, 0xf2, 0xa1, 0xf2, 0x58, 0xf2, 0xa1, - 0xf2, 0x58, 0xf3, 0xa1, 0xf3, 0x58, 0xf3, 0xa1, 0xf3, 0x58, 0xf4, 0xa1, - 0xf3, 0x59, 0xf4, 0xa1, 0xf3, 0x59, 0xf4, 0xa1, 0xf4, 0x59, 0xf4, 0xa1, - 0xf4, 0x59, 0xf4, 0xa1, 0xf4, 0x59, 0xf4, 0xa1, 0xf4, 0x59, 0xf5, 0xa1, - 0xf5, 0x59, 0xf5, 0xa1, 0xf5, 0x59, 0xf5, 0xa1, 0xf5, 0x59, 0xf5, 0xa1, - 0xf5, 0x59, 0xf5, 0xa1, 0xf5, 0x59, 0xf6, 0xa1, 0xf6, 0x5a, 0xf6, 0xa1, - 0xf6, 0x5a, 0xf6, 0xa1, 0xf6, 0x5a, 0xf6, 0xa1, 0xf6, 0x5a, 0xf7, 0xa1, - 0xf7, 0x5a, 0xf7, 0xa1, 0xf7, 0x5a, 0xf7, 0xa1, 0xf7, 0x5a, 0xf7, 0xa1, - 0xf7, 0x5a, 0xf8, 0xa1, 0xf8, 0x5a, 0xf8, 0xa1, 0xf8, 0x5a, 0xf8, 0xa1, - 0xf8, 0x5a, 0xf8, 0xa2, 0xf8, 0x5b, 0xf8, 0xa2, 0xf8, 0x5b, 0xf9, 0xa2, - 0xf9, 0x5b, 0xf9, 0xa2, 0xf9, 0x5b, 0xf9, 0xa2, 0xf9, 0x5b, 0xf9, 0xa2, - 0xf9, 0x5b, 0xfa, 0xa2, 0xfa, 0x5b, 0xfa, 0xa2, 0xfa, 0x5b, 0xfa, 0xa2, - 0xfa, 0x5b, 0xfa, 0xa2, 0xfa, 0x5b, 0xfa, 0xa2, 0xfa, 0x5b, 0xfb, 0xa2, - 0xfa, 0x5b, 0xfb, 0xa3, 0xfb, 0x5b, 0xfb, 0xa3, 0xfb, 0x5b, 0xfb, 0xa3, - 0xfb, 0x5b, 0xfc, 0xa3, 0xfc, 0x5b, 0xfc, 0xa3, 0xfb, 0x5b, 0xfc, 0xa3, - 0xfc, 0x5b, 0xfc, 0xa3, 0xfb, 0x5b, 0xfc, 0xa3, 0xfc, 0x5b, 0xfd, 0xa3, - 0xfb, 0x5b, 0xfd, 0xa3, 0xfc, 0x5b, 0xfd, 0xa3, 0xfb, 0x5b, 0xfd, 0xa3, - 0xfc, 0x5b, 0xfe, 0xa3, 0xfb, 0x5b, 0xfe, 0xa3, 0xfc, 0x5b, 0xfe, 0xa3, - 0xfb, 0x5b, 0xfe, 0xa3, 0xfc, 0x5b, 0xfe, 0xa3, 0xfb, 0x5b, 0xff, 0xa3, - 0xfc, 0x5b, 0xff, 0xa3, 0xfb, 0x5b, 0x03, 0xab, 0x95, 0x5b, 0x0a, 0xad, - 0x95, 0x5b, 0x0f, 0xab, 0x95, 0x5b, 0x14, 0xad, 0x95, 0x5b, 0x17, 0xab, - 0x95, 0x5b, 0x1b, 0xad, 0x95, 0x5b, 0x1e, 0xab, 0x95, 0x5b, 0x20, 0xad, - 0x95, 0x5b, 0x23, 0xab, 0x95, 0x5b, 0x25, 0xad, 0x95, 0x5b, 0x27, 0xab, - 0x95, 0x5b, 0x29, 0xa8, 0x96, 0x5b, 0x2b, 0xab, 0x95, 0x5b, 0x2d, 0xa8, - 0x96, 0x5b, 0x2f, 0xab, 0x95, 0x5b, 0x31, 0xa8, 0x96, 0x5b, 0x32, 0xab, - 0x95, 0x5b, 0x34, 0xa8, 0x96, 0x5b, 0x35, 0xab, 0x95, 0x5b, 0x37, 0xa8, - 0x96, 0x5b, 0x38, 0xab, 0x95, 0x5b, 0x3a, 0xa8, 0x96, 0x5b, 0x3b, 0xab, - 0x95, 0x5b, 0x3c, 0xa8, 0x96, 0x5b, 0x3e, 0xab, 0x95, 0x5b, 0x3f, 0xa8, - 0x96, 0x5b, 0x40, 0xab, 0x95, 0x5b, 0x42, 0xa8, 0x96, 0x5b, 0x43, 0xab, - 0x95, 0x5b, 0x44, 0xa8, 0x96, 0x5b, 0x45, 0xab, 0x95, 0x5b, 0x46, 0xa8, - 0x96, 0x5b, 0x47, 0xab, 0x95, 0x5b, 0x48, 0xa8, 0x96, 0x5b, 0x49, 0xab, - 0x95, 0x5b, 0x4a, 0xa8, 0x96, 0x5b, 0x4b, 0xa5, 0x96, 0x5b, 0x4c, 0xa8, - 0x96, 0x5b, 0x4d, 0xa5, 0x96, 0x5b, 0x4e, 0xa8, 0x96, 0x5b, 0x4f, 0xa5, - 0x96, 0x5b, 0x50, 0xa8, 0x96, 0x5b, 0x51, 0xa5, 0x96, 0x5b, 0x52, 0xa8, - 0x96, 0x5b, 0x53, 0xa5, 0x96, 0x5b, 0x54, 0xa8, 0x96, 0x5b, 0x55, 0xa5, - 0x96, 0x5b, 0x56, 0xa8, 0x96, 0x5b, 0x57, 0xa5, 0x96, 0x5b, 0x58, 0xa8, - 0x96, 0x5b, 0x58, 0xa5, 0x96, 0x5b, 0x59, 0xa8, 0x96, 0x5b, 0x5a, 0xa5, - 0x96, 0x5b, 0x5b, 0xa8, 0x96, 0x5b, 0x5c, 0xa5, 0x96, 0x5b, 0x5d, 0xa8, - 0x96, 0x5b, 0x5d, 0xa5, 0x96, 0x5b, 0x5e, 0xa8, 0x96, 0x5b, 0x5f, 0xa5, - 0x96, 0x5b, 0x60, 0xa8, 0x96, 0x5b, 0x60, 0xa5, 0x96, 0x5b, 0x61, 0xa8, - 0x96, 0x5b, 0x62, 0xa5, 0x96, 0x5b, 0x63, 0xa8, 0x96, 0x5b, 0x63, 0xa5, - 0x96, 0x5b, 0x64, 0xa8, 0x96, 0x5b, 0x65, 0xa5, 0x96, 0x5b, 0x66, 0xa8, - 0x96, 0x5b, 0x66, 0xa5, 0x96, 0x5b, 0x67, 0xa8, 0x96, 0x5b, 0x68, 0xa5, - 0x96, 0x5b, 0x68, 0xa8, 0x96, 0x5b, 0x69, 0xa5, 0x96, 0x5b, 0x6a, 0xa8, - 0x96, 0x5b, 0x6a, 0xa5, 0x96, 0x5b, 0x6b, 0xa8, 0x96, 0x5b, 0x6c, 0xa5, - 0x96, 0x5b, 0x6c, 0xa8, 0x96, 0x5b, 0x6d, 0xa5, 0x96, 0x5b, 0x6e, 0xa8, - 0x96, 0x5b, 0x6e, 0xa5, 0x96, 0x5b, 0x6f, 0xa3, 0x97, 0x5b, 0x70, 0xa5, - 0x96, 0x5b, 0x70, 0xa3, 0x97, 0x5b, 0x71, 0xa5, 0x96, 0x5b, 0x72, 0xa3, - 0x97, 0x5b, 0x72, 0xa5, 0x96, 0x5b, 0x73, 0xa3, 0x97, 0x5b, 0x73, 0xa5, - 0x96, 0x5b, 0x74, 0xa3, 0x97, 0x5b, 0x75, 0xa5, 0x96, 0x5b, 0x75, 0xa3, - 0x97, 0x5b, 0x76, 0xa5, 0x96, 0x5b, 0x76, 0xa3, 0x97, 0x5b, 0x77, 0xa5, - 0x96, 0x5b, 0x78, 0xa3, 0x97, 0x5b, 0x78, 0xa5, 0x96, 0x5b, 0x79, 0xa3, - 0x97, 0x5b, 0x79, 0xa5, 0x96, 0x5b, 0x7a, 0xa3, 0x97, 0x5b, 0x7a, 0xa5, - 0x96, 0x5b, 0x7b, 0xa3, 0x97, 0x5b, 0x7c, 0xa5, 0x96, 0x5b, 0x7c, 0xa3, - 0x97, 0x5b, 0x7d, 0xa5, 0x96, 0x5b, 0x7d, 0xa3, 0x97, 0x5b, 0x7e, 0xa5, - 0x96, 0x5b, 0x7e, 0xa3, 0x97, 0x5b, 0x7f, 0xa5, 0x96, 0x5b, 0x7f, 0xa3, - 0x97, 0x5b, 0x80, 0xa5, 0x96, 0x5b, 0x81, 0xa3, 0x97, 0x5b, 0x81, 0xa5, - 0x96, 0x5b, 0x82, 0xa3, 0x97, 0x5b, 0x82, 0xa5, 0x96, 0x5b, 0x83, 0xa3, - 0x97, 0x5b, 0x83, 0xa5, 0x96, 0x5b, 0x84, 0xa3, 0x97, 0x5b, 0x84, 0xa5, - 0x96, 0x5b, 0x85, 0xa3, 0x97, 0x5b, 0x85, 0xa5, 0x96, 0x5b, 0x86, 0xa3, - 0x97, 0x5b, 0x86, 0xa5, 0x96, 0x5b, 0x87, 0xa3, 0x97, 0x5b, 0x87, 0xa5, - 0x96, 0x5b, 0x88, 0xa3, 0x97, 0x5b, 0x88, 0xa5, 0x96, 0x5b, 0x89, 0xa3, - 0x97, 0x5b, 0x89, 0xa5, 0x96, 0x5b, 0x8a, 0xa3, 0x97, 0x5b, 0x8a, 0xa5, - 0x96, 0x5b, 0x8b, 0xa3, 0x97, 0x5b, 0x8b, 0xa5, 0x96, 0x5b, 0x8c, 0xa3, - 0x97, 0x5b, 0x8c, 0xa1, 0x97, 0x5b, 0x8d, 0xa3, 0x97, 0x5b, 0x8d, 0xa1, - 0x97, 0x5b, 0x8e, 0xa3, 0x97, 0x5b, 0x8e, 0xa1, 0x97, 0x5b, 0x8e, 0xa3, - 0x97, 0x5b, 0x8f, 0xa1, 0x97, 0x5b, 0x8f, 0xa3, 0x97, 0x5b, 0x90, 0xa1, - 0x97, 0x5b, 0x90, 0xa3, 0x97, 0x5b, 0x91, 0xa1, 0x97, 0x5b, 0x91, 0xa3, - 0x97, 0x5b, 0x92, 0xa1, 0x97, 0x5b, 0x92, 0xa3, 0x97, 0x5b, 0x93, 0xa1, - 0x97, 0x5b, 0x93, 0xa3, 0x97, 0x5b, 0x94, 0xa1, 0x97, 0x5b, 0x94, 0xa3, - 0x97, 0x5b, 0x94, 0xa1, 0x97, 0x5b, 0x95, 0xa3, 0x97, 0x5b, 0x95, 0xa1, - 0x97, 0x5b, 0x96, 0xa1, 0x98, 0x5b, 0x96, 0xa1, 0x97, 0x5b, 0x97, 0xa1, - 0x98, 0x5b, 0x96, 0xa1, 0x97, 0x5b, 0x97, 0xa1, 0x98, 0x5b, 0x96, 0xa1, - 0x98, 0x5b, 0x97, 0xa1, 0x98, 0x5b, 0x9a, 0xa1, 0x99, 0x5c, 0x9b, 0xa1, - 0x99, 0x5b, 0x9a, 0xa1, 0x9a, 0x5c, 0x9b, 0xa1, 0x9a, 0x5b, 0x9b, 0xa1, - 0x9a, 0x5b, 0x9b, 0xa1, 0x9a, 0x5b, 0x9b, 0xa1, 0x9a, 0x5b, 0x9c, 0xa1, - 0x9a, 0x5b, 0x9c, 0xa1, 0x9a, 0x5b, 0x9d, 0xa1, 0x9a, 0x5b, 0x9d, 0xa1, - 0x9a, 0x5b, 0x9d, 0xa1, 0x9a, 0x5b, 0x9e, 0xa1, 0x9a, 0x5b, 0x9e, 0x9f, - 0x9b, 0x5b, 0x9f, 0xa1, 0x9a, 0x5b, 0x9f, 0x9f, 0x9b, 0x5b, 0x9f, 0xa1, - 0x9a, 0x5b, 0xa0, 0x9f, 0x9b, 0x5b, 0xa0, 0xa1, 0x9a, 0x5b, 0xa1, 0x9f, - 0x9b, 0x5b, 0xa1, 0xa1, 0x9a, 0x5b, 0xa1, 0x9f, 0x9b, 0x5b, 0xa2, 0xa1, - 0x9a, 0x5b, 0xa2, 0x9f, 0x9b, 0x5b, 0xa3, 0xa1, 0x9a, 0x5b, 0xa3, 0x9f, - 0x9b, 0x5b, 0xa3, 0xa1, 0x9a, 0x5b, 0xa4, 0x9f, 0x9b, 0x5b, 0xa4, 0xa1, - 0x9a, 0x5b, 0xa5, 0x9f, 0x9b, 0x5b, 0xa5, 0xa1, 0x9a, 0x5b, 0xa5, 0x9f, - 0x9b, 0x5b, 0xa6, 0xa1, 0x9a, 0x5b, 0xa6, 0x9f, 0x9b, 0x5b, 0xa6, 0xa1, - 0x9a, 0x5b, 0xa7, 0x9f, 0x9b, 0x5b, 0xa7, 0xa1, 0x9a, 0x5b, 0xa8, 0x9f, - 0x9b, 0x5b, 0xa8, 0xa1, 0x9a, 0x5b, 0xa8, 0x9f, 0x9b, 0x5b, 0xa9, 0xa1, - 0x9a, 0x5b, 0xa9, 0x9f, 0x9b, 0x5b, 0xaa, 0xaf, 0xa5, 0x5b, 0xaa, 0xaf, - 0xa5, 0x5b, 0xaa, 0xb0, 0xaa, 0x5b, 0xab, 0xb0, 0xa9, 0x5b, 0xab, 0xb0, - 0xaa, 0x5b, 0xab, 0xb0, 0xa9, 0x5b, 0xac, 0xb0, 0xaa, 0x5b, 0xac, 0xb0, - 0xa9, 0x5b, 0xac, 0xb0, 0xaa, 0x5b, 0xad, 0x91, 0xb0, 0x5b, 0xad, 0x91, - 0xb1, 0x5b, 0xae, 0x91, 0xb0, 0x5b, 0xae, 0x91, 0xb1, 0x5b, 0xae, 0x91, - 0xb0, 0x5b, 0xaf, 0x91, 0xb1, 0x5b, 0xaf, 0x91, 0xb0, 0x5b, 0xaf, 0x91, - 0xb1, 0x5b, 0xb0, 0x91, 0xb0, 0x5b, 0xb0, 0x92, 0xb4, 0x5b, 0xb0, 0x92, - 0xb5, 0x5b, 0xb1, 0x92, 0xb4, 0x5b, 0xb1, 0x92, 0xb5, 0x5b, 0xb2, 0x92, - 0xb4, 0x5b, 0xb2, 0x92, 0xb5, 0x5b, 0xb2, 0x92, 0xb4, 0x5b, 0xb3, 0x92, - 0xb5, 0x5b, 0xb3, 0x92, 0xb4, 0x5b, 0xb3, 0x92, 0xb5, 0x5b, 0xb4, 0x92, - 0xb4, 0x5b, 0xb4, 0x93, 0xb8, 0x5b, 0xb4, 0x92, 0xb4, 0x5b, 0xb5, 0x93, - 0xb8, 0x5b, 0xb5, 0x93, 0xb8, 0x5b, 0xb5, 0x93, 0xb8, 0x5b, 0xb6, 0x93, - 0xb8, 0x5b, 0xb6, 0x93, 0xb8, 0x5b, 0xb6, 0x93, 0xb8, 0x5b, 0xb7, 0x93, - 0xb8, 0x5b, 0xb7, 0x93, 0xb8, 0x5b, 0xb7, 0x93, 0xb8, 0x5b, 0xb8, 0x93, - 0xb8, 0x5b, 0xb8, 0x94, 0xbc, 0x5b, 0xb8, 0x94, 0xbc, 0x5b, 0xb9, 0x94, - 0xbc, 0x5b, 0xb9, 0x94, 0xbc, 0x5b, 0xb9, 0x94, 0xbc, 0x5b, 0xba, 0x94, - 0xbc, 0x5b, 0xba, 0x94, 0xbc, 0x5b, 0xba, 0x94, 0xbc, 0x5b, 0xbb, 0x94, - 0xbc, 0x5b, 0xbb, 0x94, 0xbc, 0x5b, 0xbb, 0x94, 0xbc, 0x5b, 0xbc, 0x94, - 0xbc, 0x5b, 0xbc, 0x95, 0xbf, 0x5b, 0xbc, 0x95, 0xc0, 0x5b, 0xbd, 0x95, - 0xbf, 0x5b, 0xbd, 0x95, 0xc0, 0x5b, 0xbd, 0x95, 0xbf, 0x5b, 0xbe, 0x95, - 0xc0, 0x5b, 0xbe, 0x95, 0xbf, 0x5b, 0xbe, 0x95, 0xc0, 0x5b, 0xbf, 0x95, - 0xbf, 0x5b, 0xbf, 0x95, 0xc0, 0x5b, 0xbf, 0x95, 0xbf, 0x5b, 0xc0, 0x96, - 0xc3, 0x5b, 0xc0, 0x96, 0xc3, 0x5b, 0xc0, 0x96, 0xc3, 0x5b, 0xc1, 0x96, - 0xc3, 0x5b, 0xc1, 0x96, 0xc3, 0x5b, 0xc1, 0x96, 0xc3, 0x5b, 0xc1, 0x96, - 0xc3, 0x5b, 0xc2, 0x96, 0xc3, 0x5b, 0xc2, 0x96, 0xc3, 0x5b, 0xc2, 0x96, - 0xc3, 0x5b, 0xc3, 0x96, 0xc3, 0x5b, 0xc3, 0x96, 0xc3, 0x5b, 0xc3, 0x97, - 0xc6, 0x5b, 0xc4, 0x97, 0xc7, 0x5b, 0xc4, 0x97, 0xc6, 0x5b, 0xc4, 0x97, - 0xc7, 0x5b, 0xc5, 0x97, 0xc6, 0x5b, 0xc5, 0x97, 0xc7, 0x5b, 0xc5, 0x97, - 0xc6, 0x5b, 0xc6, 0x97, 0xc7, 0x5b, 0xc6, 0x97, 0xc6, 0x5b, 0xc6, 0x97, - 0xc7, 0x5b, 0xc6, 0x97, 0xc6, 0x5b, 0xc7, 0x97, 0xc7, 0x5b, 0xc7, 0x97, - 0xc7, 0x5b, 0xc7, 0x98, 0xca, 0x5b, 0xc8, 0x98, 0xca, 0x5b, 0xc8, 0x98, - 0xca, 0x5b, 0xc8, 0x98, 0xca, 0x5b, 0xc9, 0x98, 0xca, 0x5b, 0xc9, 0x98, - 0xca, 0x5b, 0xc9, 0x98, 0xca, 0x5b, 0xc9, 0x98, 0xca, 0x5b, 0xca, 0x98, - 0xca, 0x5b, 0xca, 0x98, 0xca, 0x5b, 0xca, 0x98, 0xca, 0x5b, 0xcb, 0x98, - 0xcd, 0x5b, 0xcb, 0xa3, 0xd1, 0x5b, 0xcb, 0xa1, 0xd2, 0x5b, 0xcc, 0xa3, - 0xd1, 0x5b, 0xcc, 0xa1, 0xd2, 0x5b, 0xcc, 0xa3, 0xd1, 0x5b, 0xcc, 0xa1, - 0xd2, 0x5b, 0xcd, 0xa3, 0xd1, 0x5b, 0xcd, 0xa1, 0xd2, 0x5b, 0xcd, 0xa3, - 0xd1, 0x5b, 0xce, 0xa1, 0xd2, 0x5b, 0xce, 0xa3, 0xd1, 0x5b, 0xce, 0xa1, - 0xd2, 0x5b, 0xce, 0xa3, 0xd1, 0x5b, 0xcf, 0xa1, 0xd2, 0x5b, 0xcf, 0xa3, - 0xd1, 0x5b, 0xcf, 0xa1, 0xd2, 0x5b, 0xd0, 0xa3, 0xd1, 0x5b, 0xd0, 0xa1, - 0xd2, 0x5b, 0xd0, 0xa3, 0xd1, 0x5b, 0xd0, 0xa1, 0xd2, 0x5b, 0xd1, 0xa1, - 0xd2, 0x5b, 0xd1, 0xa1, 0xd2, 0x5b, 0xd1, 0xa1, 0xd2, 0x5b, 0xd1, 0xa1, - 0xd2, 0x5b, 0xd1, 0xa1, 0xd2, 0x5b, 0xd1, 0xa1, 0xd2, 0x5b, 0xd1, 0xa1, - 0xd2, 0x5b, 0xd2, 0xa1, 0xd3, 0x59, 0xd1, 0xa1, 0xd3, 0x5b, 0xd2, 0xa1, - 0xd3, 0x59, 0xd1, 0xa1, 0xd4, 0x5b, 0xd2, 0xa1, 0xd4, 0x59, 0xd1, 0xa1, - 0xd4, 0x5b, 0xd2, 0xa1, 0xd4, 0x59, 0xd1, 0xa1, 0xd5, 0x5b, 0xd2, 0xa1, - 0xd5, 0x59, 0xd1, 0xa1, 0xd5, 0x5b, 0xd2, 0xa1, 0xd6, 0x59, 0xd1, 0xa1, - 0xd6, 0x5b, 0xd2, 0xa1, 0xd6, 0x59, 0xd1, 0xa1, 0xd6, 0x5b, 0xd2, 0xa1, - 0xd7, 0x59, 0xd1, 0xa1, 0xd7, 0x5b, 0xd2, 0xa1, 0xd7, 0x59, 0xd1, 0xa1, - 0xd7, 0x5b, 0xd2, 0xa1, 0xd8, 0x59, 0xd1, 0xa1, 0xd8, 0x5b, 0xd2, 0xa1, - 0xd8, 0x59, 0xd2, 0xa1, 0xd9, 0x56, 0xd2, 0xa1, 0xd9, 0x59, 0xd2, 0xa1, - 0xd9, 0x56, 0xdb, 0xa1, 0xd9, 0x4e, 0xdc, 0xa1, 0xda, 0x4e, 0xdb, 0xa1, - 0xda, 0x4e, 0xdc, 0xa1, 0xda, 0x4e, 0xdb, 0xa1, 0xda, 0x4e, 0xdc, 0xa1, - 0xdb, 0x4e, 0xdb, 0xa1, 0xdb, 0x4e, 0xdc, 0xa1, 0xdb, 0x4e, 0xdb, 0xa1, - 0xdb, 0x4e, 0xdc, 0xa1, 0xdc, 0x4e, 0xde, 0xa1, 0xdc, 0x4f, 0xde, 0xa1, - 0xdc, 0x4f, 0xde, 0xa1, 0xdd, 0x4f, 0xde, 0xa1, 0xdd, 0x4f, 0xde, 0xa1, - 0xdd, 0x4f, 0xde, 0xa1, 0xdd, 0x4f, 0xde, 0xa1, 0xde, 0x4f, 0xde, 0xa1, - 0xde, 0x4f, 0xde, 0xa1, 0xde, 0x4f, 0xe1, 0xa1, 0xde, 0x50, 0xe1, 0xa1, - 0xdf, 0x50, 0xe1, 0xa1, 0xdf, 0x50, 0xe1, 0xa1, 0xdf, 0x50, 0xe1, 0xa1, - 0xdf, 0x50, 0xe1, 0xa1, 0xe0, 0x50, 0xe1, 0xa1, 0xe0, 0x50, 0xe1, 0xa1, - 0xe0, 0x50, 0xe1, 0xa1, 0xe1, 0x50, 0xe3, 0xa1, 0xe1, 0x51, 0xe3, 0xa1, - 0xe1, 0x51, 0xe3, 0xa1, 0xe1, 0x51, 0xe3, 0xa1, 0xe2, 0x51, 0xe3, 0xa1, - 0xe2, 0x51, 0xe3, 0xa1, 0xe2, 0x51, 0xe3, 0xa1, 0xe2, 0x51, 0xe3, 0xa1, - 0xe3, 0x51, 0xe3, 0xa1, 0xe3, 0x51, 0xe3, 0xa1, 0xe3, 0x51, 0xe5, 0xa1, - 0xe3, 0x52, 0xe6, 0xa1, 0xe4, 0x52, 0xe5, 0xa1, 0xe4, 0x52, 0xe6, 0xa1, - 0xe4, 0x52, 0xe5, 0xa1, 0xe4, 0x52, 0xe6, 0xa1, 0xe5, 0x52, 0xe5, 0xa1, - 0xe5, 0x52, 0xe6, 0xa1, 0xe5, 0x52, 0xe5, 0xa1, 0xe5, 0x52, 0xe8, 0xa1, - 0xe6, 0x53, 0xe8, 0xa1, 0xe6, 0x53, 0xe8, 0xa1, 0xe6, 0x53, 0xe8, 0xa1, - 0xe6, 0x53, 0xe8, 0xa1, 0xe7, 0x53, 0xe8, 0xa1, 0xe7, 0x53, 0xe8, 0xa1, - 0xe7, 0x53, 0xe8, 0xa1, 0xe7, 0x53, 0xe8, 0xa1, 0xe8, 0x53, 0xe8, 0xa1, - 0xe8, 0x53, 0xe8, 0xa1, 0xe8, 0x53, 0xe8, 0xa1, 0xe8, 0x53, 0xea, 0xa1, - 0xe9, 0x54, 0xea, 0xa1, 0xe9, 0x54, 0xea, 0xa1, 0xe9, 0x54, 0xea, 0xa1, - 0xe9, 0x54, 0xea, 0xa1, 0xea, 0x54, 0xea, 0xa1, 0xea, 0x54, 0xea, 0xa1, - 0xea, 0x54, 0xea, 0xa1, 0xea, 0x54, 0xeb, 0xa1, 0xeb, 0x54, 0xec, 0xa1, - 0xeb, 0x55, 0xec, 0xa1, 0xeb, 0x55, 0xec, 0xa1, 0xeb, 0x55, 0xec, 0xa1, - 0xec, 0x55, 0xec, 0xa1, 0xec, 0x55, 0xec, 0xa1, 0xec, 0x55, 0xec, 0xa1, - 0xec, 0x55, 0xec, 0xa1, 0xec, 0x55, 0xed, 0xa1, 0xed, 0x55, 0xee, 0xa1, - 0xed, 0x56, 0xef, 0xa1, 0xed, 0x56, 0xee, 0xa1, 0xed, 0x56, 0xef, 0xa1, - 0xee, 0x56, 0xee, 0xa1, 0xee, 0x56, 0xef, 0xa1, 0xee, 0x56, 0xee, 0xa1, - 0xee, 0x56, 0xef, 0xa1, 0xef, 0x56, 0xef, 0xa1, 0xef, 0x56, 0xef, 0xa1, - 0xef, 0x56, 0xef, 0xa1, 0xef, 0x56, 0xf0, 0xa1, 0xf0, 0x56, 0xf1, 0xa1, - 0xf0, 0x57, 0xf1, 0xa1, 0xf0, 0x57, 0xf1, 0xa1, 0xf0, 0x57, 0xf1, 0xa1, - 0xf1, 0x57, 0xf1, 0xa1, 0xf1, 0x57, 0xf1, 0xa1, 0xf1, 0x57, 0xf1, 0xa1, - 0xf1, 0x57, 0xf2, 0xa1, 0xf2, 0x57, 0xf2, 0xa1, 0xf2, 0x57, 0xf3, 0xa1, - 0xf2, 0x58, 0xf3, 0xa1, 0xf2, 0x58, 0xf3, 0xa1, 0xf2, 0x58, 0xf3, 0xa1, - 0xf3, 0x58, 0xf3, 0xa1, 0xf3, 0x58, 0xf3, 0xa1, 0xf3, 0x58, 0xf3, 0xa1, - 0xf3, 0x58, 0xf4, 0xa1, 0xf4, 0x58, 0xf4, 0xa1, 0xf4, 0x58, 0xf5, 0xa1, - 0xf4, 0x59, 0xf5, 0xa1, 0xf4, 0x59, 0xf5, 0xa1, 0xf5, 0x59, 0xf5, 0xa1, - 0xf5, 0x59, 0xf5, 0xa1, 0xf5, 0x59, 0xf5, 0xa1, 0xf5, 0x59, 0xf5, 0xa1, - 0xf5, 0x59, 0xf6, 0xa1, 0xf6, 0x59, 0xf6, 0xa1, 0xf6, 0x59, 0xf6, 0xa1, - 0xf6, 0x59, 0xf6, 0xa1, 0xf6, 0x59, 0xf7, 0xa1, 0xf7, 0x59, 0xf7, 0xa1, - 0xf7, 0x5a, 0xf8, 0xa1, 0xf7, 0x5a, 0xf7, 0xa1, 0xf7, 0x5a, 0xf8, 0xa1, - 0xf8, 0x5a, 0xf8, 0xa1, 0xf8, 0x5a, 0xf8, 0xa1, 0xf8, 0x5a, 0xf8, 0xa1, - 0xf8, 0x5a, 0xf8, 0xa1, 0xf8, 0x5a, 0xf9, 0xa1, 0xf9, 0x5a, 0xf9, 0xa1, - 0xf9, 0x5a, 0xf9, 0xa1, 0xf9, 0x5a, 0xf9, 0xa2, 0xf9, 0x5b, 0xfa, 0xa2, - 0xfa, 0x5b, 0xfa, 0xa2, 0xfa, 0x5b, 0xfa, 0xa2, 0xfa, 0x5b, 0xfa, 0xa2, - 0xfa, 0x5b, 0xfa, 0xa2, 0xfa, 0x5b, 0xfb, 0xa2, 0xfb, 0x5b, 0xfb, 0xa2, - 0xfb, 0x5b, 0xfb, 0xa2, 0xfb, 0x5b, 0xfb, 0xa2, 0xfb, 0x5b, 0xfc, 0xa2, - 0xfb, 0x5b, 0xfc, 0xa2, 0xfb, 0x5b, 0xfc, 0xa2, 0xfb, 0x5b, 0xfc, 0xa3, - 0xfb, 0x5b, 0xfc, 0xa3, 0xfc, 0x5b, 0xfd, 0xa3, 0xfb, 0x5b, 0xfd, 0xa3, - 0xfc, 0x5b, 0xfd, 0xa3, 0xfb, 0x5b, 0xfd, 0xa3, 0xfc, 0x5b, 0xfe, 0xa3, - 0xfb, 0x5b, 0xfe, 0xa3, 0xfc, 0x5b, 0xfe, 0xa3, 0xfb, 0x5b, 0xfe, 0xa3, - 0xfc, 0x5b, 0xfe, 0xa3, 0xfb, 0x5b, 0xff, 0xa3, 0xfc, 0x5b, 0xff, 0xa3, - 0xfb, 0x5b, 0x03, 0xaa, 0x95, 0x5c, 0x0a, 0xa8, 0x96, 0x5c, 0x0f, 0xaa, - 0x95, 0x5c, 0x14, 0xa8, 0x96, 0x5c, 0x17, 0xaa, 0x95, 0x5c, 0x1b, 0xa8, - 0x96, 0x5c, 0x1e, 0xaa, 0x95, 0x5c, 0x20, 0xa8, 0x96, 0x5c, 0x23, 0xaa, - 0x95, 0x5c, 0x25, 0xa8, 0x96, 0x5c, 0x27, 0xaa, 0x95, 0x5c, 0x29, 0xa8, - 0x96, 0x5c, 0x2b, 0xaa, 0x95, 0x5c, 0x2d, 0xa8, 0x96, 0x5c, 0x2f, 0xaa, - 0x95, 0x5c, 0x31, 0xa8, 0x96, 0x5c, 0x32, 0xaa, 0x95, 0x5c, 0x34, 0xa8, - 0x96, 0x5c, 0x35, 0xaa, 0x95, 0x5c, 0x37, 0xa8, 0x96, 0x5c, 0x38, 0xaa, - 0x95, 0x5c, 0x3a, 0xa8, 0x96, 0x5c, 0x3b, 0xaa, 0x95, 0x5c, 0x3c, 0xa8, - 0x96, 0x5c, 0x3e, 0xaa, 0x95, 0x5c, 0x3f, 0xa8, 0x96, 0x5c, 0x40, 0xaa, - 0x95, 0x5c, 0x42, 0xa8, 0x96, 0x5c, 0x43, 0xaa, 0x95, 0x5c, 0x44, 0xa8, - 0x96, 0x5c, 0x45, 0xaa, 0x95, 0x5c, 0x46, 0xa8, 0x96, 0x5c, 0x47, 0xaa, - 0x95, 0x5c, 0x48, 0xa8, 0x96, 0x5c, 0x49, 0xaa, 0x95, 0x5c, 0x4a, 0xa8, - 0x96, 0x5c, 0x4b, 0xaa, 0x95, 0x5c, 0x4c, 0xa8, 0x96, 0x5c, 0x4d, 0xaa, - 0x95, 0x5c, 0x4e, 0xa8, 0x96, 0x5c, 0x4f, 0xaa, 0x95, 0x5c, 0x50, 0xa8, - 0x96, 0x5c, 0x51, 0xaa, 0x95, 0x5c, 0x52, 0xa8, 0x96, 0x5c, 0x53, 0xaa, - 0x95, 0x5c, 0x54, 0xa8, 0x96, 0x5c, 0x55, 0xaa, 0x95, 0x5c, 0x56, 0xa8, - 0x96, 0x5c, 0x57, 0xaa, 0x95, 0x5c, 0x58, 0xa8, 0x96, 0x5c, 0x58, 0xaa, - 0x95, 0x5c, 0x59, 0xa8, 0x96, 0x5c, 0x5a, 0xaa, 0x95, 0x5c, 0x5b, 0xa8, - 0x96, 0x5c, 0x5c, 0xaa, 0x95, 0x5c, 0x5d, 0xa8, 0x96, 0x5c, 0x5d, 0xaa, - 0x95, 0x5c, 0x5e, 0xa8, 0x96, 0x5c, 0x5f, 0xaa, 0x95, 0x5c, 0x60, 0xa8, - 0x96, 0x5c, 0x60, 0xa6, 0x96, 0x5c, 0x61, 0xa8, 0x96, 0x5c, 0x62, 0xa6, - 0x96, 0x5c, 0x63, 0xa8, 0x96, 0x5c, 0x63, 0xa6, 0x96, 0x5c, 0x64, 0xa8, - 0x96, 0x5c, 0x65, 0xa6, 0x96, 0x5c, 0x66, 0xa8, 0x96, 0x5c, 0x66, 0xa6, - 0x96, 0x5c, 0x67, 0xa8, 0x96, 0x5c, 0x68, 0xa6, 0x96, 0x5c, 0x68, 0xa8, - 0x96, 0x5c, 0x69, 0xa6, 0x96, 0x5c, 0x6a, 0xa8, 0x96, 0x5c, 0x6a, 0xa6, - 0x96, 0x5c, 0x6b, 0xa8, 0x96, 0x5c, 0x6c, 0xa6, 0x96, 0x5c, 0x6c, 0xa8, - 0x96, 0x5c, 0x6d, 0xa6, 0x96, 0x5c, 0x6e, 0xa8, 0x96, 0x5c, 0x6e, 0xa6, - 0x96, 0x5c, 0x6f, 0xa8, 0x96, 0x5c, 0x70, 0xa6, 0x96, 0x5c, 0x70, 0xa8, - 0x96, 0x5c, 0x71, 0xa6, 0x96, 0x5c, 0x72, 0xa8, 0x96, 0x5c, 0x72, 0xa6, - 0x96, 0x5c, 0x73, 0xa8, 0x96, 0x5c, 0x73, 0xa6, 0x96, 0x5c, 0x74, 0xa8, - 0x96, 0x5c, 0x75, 0xa6, 0x96, 0x5c, 0x75, 0xa8, 0x96, 0x5c, 0x76, 0xa6, - 0x96, 0x5c, 0x76, 0xa8, 0x96, 0x5c, 0x77, 0xa6, 0x96, 0x5c, 0x78, 0xa8, - 0x96, 0x5c, 0x78, 0xa6, 0x96, 0x5c, 0x79, 0xa3, 0x97, 0x5c, 0x79, 0xa6, - 0x96, 0x5c, 0x7a, 0xa3, 0x97, 0x5c, 0x7a, 0xa6, 0x96, 0x5c, 0x7b, 0xa3, - 0x97, 0x5c, 0x7c, 0xa6, 0x96, 0x5c, 0x7c, 0xa3, 0x97, 0x5c, 0x7d, 0xa6, - 0x96, 0x5c, 0x7d, 0xa3, 0x97, 0x5c, 0x7e, 0xa6, 0x96, 0x5c, 0x7e, 0xa3, - 0x97, 0x5c, 0x7f, 0xa6, 0x96, 0x5c, 0x7f, 0xa3, 0x97, 0x5c, 0x80, 0xa6, - 0x96, 0x5c, 0x81, 0xa3, 0x97, 0x5c, 0x81, 0xa6, 0x96, 0x5c, 0x82, 0xa3, - 0x97, 0x5c, 0x82, 0xa6, 0x96, 0x5c, 0x83, 0xa3, 0x97, 0x5c, 0x83, 0xa6, - 0x96, 0x5c, 0x84, 0xa3, 0x97, 0x5c, 0x84, 0xa6, 0x96, 0x5c, 0x85, 0xa3, - 0x97, 0x5c, 0x85, 0xa6, 0x96, 0x5c, 0x86, 0xa3, 0x97, 0x5c, 0x86, 0xa6, - 0x96, 0x5c, 0x87, 0xa3, 0x97, 0x5c, 0x87, 0xa6, 0x96, 0x5c, 0x88, 0xa3, - 0x97, 0x5c, 0x88, 0xa6, 0x96, 0x5c, 0x89, 0xa3, 0x97, 0x5c, 0x89, 0xa6, - 0x96, 0x5c, 0x8a, 0xa3, 0x97, 0x5c, 0x8a, 0xa6, 0x96, 0x5c, 0x8b, 0xa3, - 0x97, 0x5c, 0x8b, 0xa6, 0x96, 0x5c, 0x8c, 0xa3, 0x97, 0x5c, 0x8c, 0xa2, - 0x97, 0x5c, 0x8d, 0xa3, 0x97, 0x5c, 0x8d, 0xa2, 0x97, 0x5c, 0x8e, 0xa3, - 0x97, 0x5c, 0x8e, 0xa2, 0x97, 0x5c, 0x8e, 0xa3, 0x97, 0x5c, 0x8f, 0xa2, - 0x97, 0x5c, 0x8f, 0xa3, 0x97, 0x5c, 0x90, 0xa2, 0x97, 0x5c, 0x90, 0xa3, - 0x97, 0x5c, 0x91, 0xa2, 0x97, 0x5c, 0x91, 0xa3, 0x97, 0x5c, 0x92, 0xa2, - 0x97, 0x5c, 0x92, 0xa3, 0x97, 0x5c, 0x93, 0xa2, 0x97, 0x5c, 0x93, 0xa3, - 0x97, 0x5c, 0x94, 0xa2, 0x97, 0x5c, 0x94, 0xa3, 0x97, 0x5c, 0x94, 0xa2, - 0x97, 0x5c, 0x95, 0xa3, 0x97, 0x5c, 0x95, 0xa2, 0x97, 0x5c, 0x96, 0xa2, - 0x98, 0x5c, 0x96, 0xa2, 0x97, 0x5c, 0x97, 0xa2, 0x98, 0x5c, 0x96, 0xa2, - 0x97, 0x5c, 0x97, 0xa2, 0x98, 0x5c, 0x96, 0xa2, 0x98, 0x5c, 0x97, 0xa2, - 0x98, 0x5c, 0x9a, 0xa2, 0x99, 0x5c, 0x9b, 0xa2, 0x99, 0x5c, 0x9a, 0xa2, - 0x9a, 0x5c, 0x9b, 0xa2, 0x9a, 0x5c, 0x9a, 0xa1, 0x9a, 0x5c, 0x9b, 0xa2, - 0x9a, 0x5c, 0x9b, 0xa1, 0x9a, 0x5c, 0x9c, 0xa2, 0x9a, 0x5c, 0x9c, 0xa1, - 0x9a, 0x5c, 0x9d, 0xa2, 0x9a, 0x5c, 0x9d, 0xa1, 0x9a, 0x5c, 0x9d, 0xa2, - 0x9a, 0x5c, 0x9e, 0xa1, 0x9a, 0x5c, 0x9e, 0xa2, 0x9a, 0x5c, 0x9f, 0xa1, - 0x9a, 0x5c, 0x9f, 0xa2, 0x9a, 0x5c, 0x9f, 0xa1, 0x9a, 0x5c, 0xa0, 0xa2, - 0x9a, 0x5c, 0xa0, 0xa1, 0x9a, 0x5c, 0xa1, 0xa2, 0x9a, 0x5c, 0xa1, 0xa1, - 0x9a, 0x5c, 0xa1, 0x9f, 0x9b, 0x5c, 0xa2, 0xa1, 0x9a, 0x5c, 0xa2, 0x9f, - 0x9b, 0x5c, 0xa3, 0xa1, 0x9a, 0x5c, 0xa3, 0x9f, 0x9b, 0x5c, 0xa3, 0xa1, - 0x9a, 0x5c, 0xa4, 0x9f, 0x9b, 0x5c, 0xa4, 0xa1, 0x9a, 0x5c, 0xa5, 0x9f, - 0x9b, 0x5c, 0xa5, 0xa1, 0x9a, 0x5c, 0xa5, 0x9f, 0x9b, 0x5c, 0xa6, 0xa1, - 0x9a, 0x5c, 0xa6, 0x9f, 0x9b, 0x5c, 0xa6, 0xa1, 0x9a, 0x5c, 0xa7, 0x9f, - 0x9b, 0x5c, 0xa7, 0xa1, 0x9a, 0x5c, 0xa8, 0x9f, 0x9b, 0x5c, 0xa8, 0xa1, - 0x9a, 0x5c, 0xa8, 0x9f, 0x9b, 0x5c, 0xa9, 0xa1, 0x9a, 0x5c, 0xa9, 0xaf, - 0xa8, 0x5c, 0xaa, 0xaf, 0xa7, 0x5c, 0xaa, 0xaf, 0xa8, 0x5c, 0xaa, 0xaf, - 0xa7, 0x5c, 0xab, 0xaf, 0xa8, 0x5c, 0xab, 0xaf, 0xa7, 0x5c, 0xab, 0xaf, - 0xa8, 0x5c, 0xac, 0xaf, 0xa7, 0x5c, 0xac, 0xaf, 0xa8, 0x5c, 0xac, 0xb0, - 0xac, 0x5c, 0xad, 0xb0, 0xab, 0x5c, 0xad, 0xb0, 0xac, 0x5c, 0xae, 0xb0, - 0xab, 0x5c, 0xae, 0xb0, 0xac, 0x5c, 0xae, 0xb0, 0xab, 0x5c, 0xaf, 0xb0, - 0xac, 0x5c, 0xaf, 0x92, 0xb3, 0x5c, 0xaf, 0x92, 0xb2, 0x5c, 0xb0, 0x92, - 0xb3, 0x5c, 0xb0, 0x92, 0xb2, 0x5c, 0xb0, 0x92, 0xb3, 0x5c, 0xb1, 0x92, - 0xb2, 0x5c, 0xb1, 0x92, 0xb3, 0x5c, 0xb2, 0x92, 0xb2, 0x5c, 0xb2, 0x93, - 0xb6, 0x5c, 0xb2, 0x93, 0xb6, 0x5c, 0xb3, 0x93, 0xb6, 0x5c, 0xb3, 0x93, - 0xb6, 0x5c, 0xb3, 0x93, 0xb6, 0x5c, 0xb4, 0x93, 0xb6, 0x5c, 0xb4, 0x93, - 0xb6, 0x5c, 0xb4, 0x93, 0xb6, 0x5c, 0xb5, 0x93, 0xb6, 0x5c, 0xb5, 0x93, - 0xb6, 0x5c, 0xb5, 0x93, 0xb6, 0x5c, 0xb6, 0x93, 0xb6, 0x5c, 0xb6, 0x93, - 0xb6, 0x5c, 0xb6, 0x93, 0xb6, 0x5c, 0xb7, 0x94, 0xba, 0x5c, 0xb7, 0x94, - 0xba, 0x5c, 0xb7, 0x94, 0xba, 0x5c, 0xb8, 0x94, 0xba, 0x5c, 0xb8, 0x94, - 0xba, 0x5c, 0xb8, 0x94, 0xba, 0x5c, 0xb9, 0x94, 0xba, 0x5c, 0xb9, 0x94, - 0xba, 0x5c, 0xb9, 0x94, 0xba, 0x5c, 0xba, 0x94, 0xba, 0x5c, 0xba, 0x94, - 0xba, 0x5c, 0xba, 0x94, 0xbe, 0x5c, 0xbb, 0x94, 0xbe, 0x5c, 0xbb, 0x94, - 0xbe, 0x5c, 0xbb, 0x94, 0xbe, 0x5c, 0xbc, 0x94, 0xbe, 0x5c, 0xbc, 0x94, - 0xbe, 0x5c, 0xbc, 0x94, 0xbe, 0x5c, 0xbd, 0x94, 0xbe, 0x5c, 0xbd, 0x94, - 0xbe, 0x5c, 0xbd, 0x94, 0xbe, 0x5c, 0xbe, 0x94, 0xbe, 0x5c, 0xbe, 0x95, - 0xc1, 0x5c, 0xbe, 0x95, 0xc1, 0x5c, 0xbf, 0x95, 0xc1, 0x5c, 0xbf, 0x95, - 0xc1, 0x5c, 0xbf, 0x95, 0xc1, 0x5c, 0xc0, 0x95, 0xc1, 0x5c, 0xc0, 0x95, - 0xc1, 0x5c, 0xc0, 0x95, 0xc1, 0x5c, 0xc1, 0x95, 0xc1, 0x5c, 0xc1, 0x95, - 0xc1, 0x5c, 0xc1, 0x95, 0xc1, 0x5c, 0xc1, 0x96, 0xc5, 0x5c, 0xc2, 0x96, - 0xc5, 0x5c, 0xc2, 0x96, 0xc5, 0x5c, 0xc2, 0x96, 0xc5, 0x5c, 0xc3, 0x96, - 0xc5, 0x5c, 0xc3, 0x96, 0xc5, 0x5c, 0xc3, 0x96, 0xc5, 0x5c, 0xc4, 0x96, - 0xc5, 0x5c, 0xc4, 0x96, 0xc5, 0x5c, 0xc4, 0x96, 0xc5, 0x5c, 0xc5, 0x96, - 0xc5, 0x5c, 0xc5, 0x97, 0xc8, 0x5c, 0xc5, 0x97, 0xc8, 0x5c, 0xc6, 0x97, - 0xc8, 0x5c, 0xc6, 0x97, 0xc8, 0x5c, 0xc6, 0x97, 0xc8, 0x5c, 0xc6, 0x97, - 0xc8, 0x5c, 0xc7, 0x97, 0xc8, 0x5c, 0xc7, 0x97, 0xc8, 0x5c, 0xc7, 0x97, - 0xc8, 0x5c, 0xc8, 0x97, 0xc8, 0x5c, 0xc8, 0x97, 0xc8, 0x5c, 0xc8, 0x97, - 0xc8, 0x5c, 0xc9, 0x97, 0xc9, 0x5c, 0xc9, 0x98, 0xcb, 0x5c, 0xc9, 0x98, - 0xcc, 0x5c, 0xc9, 0x98, 0xcb, 0x5c, 0xca, 0x98, 0xcc, 0x5c, 0xca, 0x98, - 0xcb, 0x5c, 0xca, 0xa3, 0xd1, 0x5c, 0xcb, 0xa5, 0xd1, 0x5c, 0xcb, 0xa3, - 0xd1, 0x5c, 0xcb, 0xa5, 0xd1, 0x5c, 0xcc, 0xa3, 0xd1, 0x5c, 0xcc, 0xa5, - 0xd1, 0x5c, 0xcc, 0xa3, 0xd1, 0x5c, 0xcc, 0xa5, 0xd1, 0x5c, 0xcd, 0xa3, - 0xd1, 0x5c, 0xcd, 0xa2, 0xd2, 0x5c, 0xcd, 0xa3, 0xd1, 0x5c, 0xce, 0xa2, - 0xd2, 0x5c, 0xce, 0xa3, 0xd1, 0x5c, 0xce, 0xa2, 0xd2, 0x5c, 0xce, 0xa3, - 0xd1, 0x5c, 0xcf, 0xa2, 0xd2, 0x5c, 0xcf, 0xa3, 0xd1, 0x5c, 0xcf, 0xa2, - 0xd2, 0x5c, 0xd0, 0xa3, 0xd1, 0x5c, 0xd0, 0xa2, 0xd2, 0x5c, 0xd0, 0xa3, - 0xd1, 0x5c, 0xd0, 0xa2, 0xd2, 0x5c, 0xd1, 0xa3, 0xd1, 0x5c, 0xd1, 0xa2, - 0xd2, 0x5c, 0xd1, 0xa2, 0xd2, 0x5c, 0xd1, 0xa2, 0xd2, 0x5c, 0xd1, 0xa2, - 0xd2, 0x5c, 0xd1, 0xa2, 0xd2, 0x5c, 0xd1, 0xa2, 0xd2, 0x5c, 0xd1, 0xa2, - 0xd3, 0x5c, 0xd1, 0xa2, 0xd3, 0x5c, 0xd1, 0xa2, 0xd3, 0x5c, 0xd1, 0xa2, - 0xd4, 0x5c, 0xd2, 0xa2, 0xd4, 0x59, 0xd1, 0xa2, 0xd4, 0x5c, 0xd2, 0xa2, - 0xd4, 0x59, 0xd1, 0xa2, 0xd5, 0x5c, 0xd2, 0xa2, 0xd5, 0x59, 0xd1, 0xa2, - 0xd5, 0x5c, 0xd2, 0xa2, 0xd6, 0x59, 0xd1, 0xa2, 0xd6, 0x5c, 0xd2, 0xa2, - 0xd6, 0x59, 0xd1, 0xa2, 0xd6, 0x5c, 0xd2, 0xa2, 0xd7, 0x59, 0xd1, 0xa2, - 0xd7, 0x5c, 0xd2, 0xa2, 0xd7, 0x59, 0xd1, 0xa2, 0xd7, 0x5c, 0xd2, 0xa2, - 0xd8, 0x59, 0xd1, 0xa2, 0xd8, 0x5c, 0xd2, 0xa2, 0xd8, 0x59, 0xd2, 0xa2, - 0xd9, 0x57, 0xd2, 0xa2, 0xd9, 0x59, 0xd2, 0xa2, 0xd9, 0x57, 0xda, 0xa2, - 0xd9, 0x4e, 0xdb, 0xa2, 0xda, 0x4e, 0xda, 0xa2, 0xda, 0x4e, 0xdd, 0xa2, - 0xda, 0x4f, 0xdd, 0xa2, 0xda, 0x4f, 0xdd, 0xa2, 0xdb, 0x4f, 0xdd, 0xa2, - 0xdb, 0x4f, 0xdd, 0xa2, 0xdb, 0x4f, 0xdd, 0xa2, 0xdb, 0x4f, 0xdd, 0xa2, - 0xdc, 0x4f, 0xdd, 0xa2, 0xdc, 0x4f, 0xdd, 0xa2, 0xdc, 0x4f, 0xdf, 0xa2, - 0xdd, 0x50, 0xdd, 0xa2, 0xdd, 0x4f, 0xdf, 0xa2, 0xdd, 0x50, 0xdf, 0xa2, - 0xdd, 0x50, 0xdf, 0xa2, 0xde, 0x50, 0xdf, 0xa2, 0xde, 0x50, 0xdf, 0xa2, - 0xde, 0x50, 0xdf, 0xa2, 0xde, 0x50, 0xdf, 0xa2, 0xdf, 0x50, 0xdf, 0xa2, - 0xdf, 0x50, 0xdf, 0xa2, 0xdf, 0x50, 0xdf, 0xa2, 0xdf, 0x50, 0xe2, 0xa2, - 0xe0, 0x51, 0xe2, 0xa2, 0xe0, 0x51, 0xe2, 0xa2, 0xe0, 0x51, 0xe2, 0xa2, - 0xe1, 0x51, 0xe2, 0xa2, 0xe1, 0x51, 0xe2, 0xa2, 0xe1, 0x51, 0xe2, 0xa2, - 0xe1, 0x51, 0xe2, 0xa2, 0xe2, 0x51, 0xe2, 0xa2, 0xe2, 0x51, 0xe4, 0xa2, - 0xe2, 0x52, 0xe4, 0xa2, 0xe2, 0x52, 0xe4, 0xa2, 0xe3, 0x52, 0xe4, 0xa2, - 0xe3, 0x52, 0xe4, 0xa2, 0xe3, 0x52, 0xe4, 0xa2, 0xe3, 0x52, 0xe4, 0xa2, - 0xe4, 0x52, 0xe4, 0xa2, 0xe4, 0x52, 0xe4, 0xa2, 0xe4, 0x52, 0xe6, 0xa2, - 0xe4, 0x53, 0xe7, 0xa2, 0xe5, 0x53, 0xe6, 0xa2, 0xe5, 0x53, 0xe7, 0xa2, - 0xe5, 0x53, 0xe6, 0xa2, 0xe5, 0x53, 0xe7, 0xa2, 0xe6, 0x53, 0xe6, 0xa2, - 0xe6, 0x53, 0xe7, 0xa2, 0xe6, 0x53, 0xe6, 0xa2, 0xe6, 0x53, 0xe7, 0xa2, - 0xe7, 0x53, 0xe9, 0xa2, 0xe7, 0x54, 0xe9, 0xa2, 0xe7, 0x54, 0xe9, 0xa2, - 0xe7, 0x54, 0xe9, 0xa2, 0xe8, 0x54, 0xe9, 0xa2, 0xe8, 0x54, 0xe9, 0xa2, - 0xe8, 0x54, 0xe9, 0xa2, 0xe8, 0x54, 0xe9, 0xa2, 0xe9, 0x54, 0xe9, 0xa2, - 0xe9, 0x54, 0xe9, 0xa2, 0xe9, 0x54, 0xe9, 0xa2, 0xe9, 0x54, 0xeb, 0xa2, - 0xea, 0x55, 0xeb, 0xa2, 0xea, 0x55, 0xeb, 0xa2, 0xea, 0x55, 0xeb, 0xa2, - 0xea, 0x55, 0xeb, 0xa2, 0xeb, 0x55, 0xeb, 0xa2, 0xeb, 0x55, 0xeb, 0xa2, - 0xeb, 0x55, 0xeb, 0xa2, 0xeb, 0x55, 0xec, 0xa2, 0xec, 0x55, 0xec, 0xa2, - 0xec, 0x55, 0xed, 0xa2, 0xec, 0x56, 0xee, 0xa2, 0xec, 0x56, 0xed, 0xa2, - 0xec, 0x56, 0xee, 0xa2, 0xed, 0x56, 0xed, 0xa2, 0xed, 0x56, 0xee, 0xa2, - 0xed, 0x56, 0xed, 0xa2, 0xed, 0x56, 0xee, 0xa2, 0xee, 0x56, 0xee, 0xa2, - 0xee, 0x56, 0xf0, 0xa2, 0xee, 0x57, 0xf0, 0xa2, 0xee, 0x57, 0xf0, 0xa2, - 0xef, 0x57, 0xf0, 0xa2, 0xef, 0x57, 0xf0, 0xa2, 0xef, 0x57, 0xf0, 0xa2, - 0xef, 0x57, 0xf0, 0xa2, 0xf0, 0x57, 0xf0, 0xa2, 0xf0, 0x57, 0xf0, 0xa2, - 0xf0, 0x57, 0xf0, 0xa2, 0xf0, 0x57, 0xf1, 0xa2, 0xf1, 0x57, 0xf2, 0xa2, - 0xf1, 0x58, 0xf2, 0xa2, 0xf1, 0x58, 0xf2, 0xa2, 0xf1, 0x58, 0xf2, 0xa2, - 0xf2, 0x58, 0xf2, 0xa2, 0xf2, 0x58, 0xf2, 0xa2, 0xf2, 0x58, 0xf2, 0xa2, - 0xf2, 0x58, 0xf2, 0xa2, 0xf2, 0x58, 0xf3, 0xa2, 0xf3, 0x58, 0xf3, 0xa2, - 0xf3, 0x58, 0xf4, 0xa2, 0xf3, 0x59, 0xf4, 0xa2, 0xf3, 0x59, 0xf4, 0xa2, - 0xf4, 0x59, 0xf4, 0xa2, 0xf4, 0x59, 0xf4, 0xa2, 0xf4, 0x59, 0xf4, 0xa2, - 0xf4, 0x59, 0xf5, 0xa2, 0xf5, 0x59, 0xf5, 0xa2, 0xf5, 0x59, 0xf5, 0xa2, - 0xf5, 0x59, 0xf6, 0xa2, 0xf5, 0x5a, 0xf6, 0xa2, 0xf5, 0x5a, 0xf6, 0xa2, - 0xf6, 0x5a, 0xf6, 0xa2, 0xf6, 0x5a, 0xf6, 0xa2, 0xf6, 0x5a, 0xf6, 0xa2, - 0xf6, 0x5a, 0xf7, 0xa2, 0xf7, 0x5a, 0xf7, 0xa2, 0xf7, 0x5a, 0xf7, 0xa2, - 0xf7, 0x5a, 0xf7, 0xa2, 0xf7, 0x5a, 0xf8, 0xa2, 0xf8, 0x5a, 0xf8, 0xa2, - 0xf8, 0x5b, 0xf8, 0xa2, 0xf8, 0x5b, 0xf8, 0xa2, 0xf8, 0x5b, 0xf8, 0xa2, - 0xf8, 0x5b, 0xf9, 0xa2, 0xf9, 0x5b, 0xf9, 0xa2, 0xf9, 0x5b, 0xf9, 0xa2, - 0xf9, 0x5b, 0xf9, 0xa2, 0xf9, 0x5b, 0xfa, 0xa2, 0xfa, 0x5b, 0xfa, 0xa2, - 0xfa, 0x5b, 0xfa, 0xa2, 0xfa, 0x5b, 0xfa, 0xa2, 0xfa, 0x5b, 0xfa, 0xa3, - 0xfa, 0x5c, 0xfb, 0xa3, 0xfb, 0x5c, 0xfb, 0xa3, 0xfb, 0x5c, 0xfb, 0xa3, - 0xfb, 0x5c, 0xfb, 0xa3, 0xfb, 0x5c, 0xfc, 0xa3, 0xfc, 0x5c, 0xfc, 0xa3, - 0xfb, 0x5c, 0xfc, 0xa3, 0xfc, 0x5c, 0xfc, 0xa3, 0xfb, 0x5c, 0xfc, 0xa3, - 0xfc, 0x5c, 0xfd, 0xa3, 0xfb, 0x5c, 0xfd, 0xa3, 0xfc, 0x5c, 0xfd, 0xa3, - 0xfb, 0x5c, 0xfd, 0xa3, 0xfc, 0x5c, 0xfe, 0xa3, 0xfb, 0x5c, 0xfe, 0xa3, - 0xfc, 0x5c, 0xfe, 0xa3, 0xfb, 0x5c, 0xfe, 0xa3, 0xfc, 0x5c, 0xfe, 0xa3, - 0xfb, 0x5c, 0xff, 0xa3, 0xfc, 0x5c, 0xff, 0xa3, 0xfb, 0x5c, 0x03, 0xab, - 0x95, 0x5c, 0x0a, 0xad, 0x95, 0x5c, 0x0f, 0xab, 0x95, 0x5c, 0x14, 0xad, - 0x95, 0x5c, 0x17, 0xab, 0x95, 0x5c, 0x1b, 0xad, 0x95, 0x5c, 0x1e, 0xab, - 0x95, 0x5c, 0x20, 0xad, 0x95, 0x5c, 0x23, 0xab, 0x95, 0x5c, 0x25, 0xad, - 0x95, 0x5c, 0x27, 0xab, 0x95, 0x5c, 0x29, 0xad, 0x95, 0x5c, 0x2b, 0xab, - 0x95, 0x5c, 0x2d, 0xad, 0x95, 0x5c, 0x2f, 0xab, 0x95, 0x5c, 0x31, 0xad, - 0x95, 0x5c, 0x32, 0xab, 0x95, 0x5c, 0x34, 0xad, 0x95, 0x5c, 0x35, 0xab, - 0x95, 0x5c, 0x37, 0xad, 0x95, 0x5c, 0x38, 0xab, 0x95, 0x5c, 0x3a, 0xad, - 0x95, 0x5c, 0x3b, 0xab, 0x95, 0x5c, 0x3c, 0xa8, 0x96, 0x5c, 0x3e, 0xab, - 0x95, 0x5c, 0x3f, 0xa8, 0x96, 0x5c, 0x40, 0xab, 0x95, 0x5c, 0x42, 0xa8, - 0x96, 0x5c, 0x43, 0xab, 0x95, 0x5c, 0x44, 0xa8, 0x96, 0x5c, 0x45, 0xab, - 0x95, 0x5c, 0x46, 0xa8, 0x96, 0x5c, 0x47, 0xab, 0x95, 0x5c, 0x48, 0xa8, - 0x96, 0x5c, 0x49, 0xab, 0x95, 0x5c, 0x4a, 0xa8, 0x96, 0x5c, 0x4b, 0xab, - 0x95, 0x5c, 0x4c, 0xa8, 0x96, 0x5c, 0x4d, 0xab, 0x95, 0x5c, 0x4e, 0xa8, - 0x96, 0x5c, 0x4f, 0xab, 0x95, 0x5c, 0x50, 0xa8, 0x96, 0x5c, 0x51, 0xab, - 0x95, 0x5c, 0x52, 0xa8, 0x96, 0x5c, 0x53, 0xab, 0x95, 0x5c, 0x54, 0xa8, - 0x96, 0x5c, 0x55, 0xab, 0x95, 0x5c, 0x56, 0xa8, 0x96, 0x5c, 0x57, 0xab, - 0x95, 0x5c, 0x58, 0xa8, 0x96, 0x5c, 0x58, 0xab, 0x95, 0x5c, 0x59, 0xa8, - 0x96, 0x5c, 0x5a, 0xa5, 0x96, 0x5c, 0x5b, 0xa8, 0x96, 0x5c, 0x5c, 0xa5, - 0x96, 0x5c, 0x5d, 0xa8, 0x96, 0x5c, 0x5d, 0xa5, 0x96, 0x5c, 0x5e, 0xa8, - 0x96, 0x5c, 0x5f, 0xa5, 0x96, 0x5c, 0x60, 0xa8, 0x96, 0x5c, 0x60, 0xa5, - 0x96, 0x5c, 0x61, 0xa8, 0x96, 0x5c, 0x62, 0xa5, 0x96, 0x5c, 0x63, 0xa8, - 0x96, 0x5c, 0x63, 0xa5, 0x96, 0x5c, 0x64, 0xa8, 0x96, 0x5c, 0x65, 0xa5, - 0x96, 0x5c, 0x66, 0xa8, 0x96, 0x5c, 0x66, 0xa5, 0x96, 0x5c, 0x67, 0xa8, - 0x96, 0x5c, 0x68, 0xa5, 0x96, 0x5c, 0x68, 0xa8, 0x96, 0x5c, 0x69, 0xa5, - 0x96, 0x5c, 0x6a, 0xa8, 0x96, 0x5c, 0x6a, 0xa5, 0x96, 0x5c, 0x6b, 0xa8, - 0x96, 0x5c, 0x6c, 0xa5, 0x96, 0x5c, 0x6c, 0xa8, 0x96, 0x5c, 0x6d, 0xa5, - 0x96, 0x5c, 0x6e, 0xa8, 0x96, 0x5c, 0x6e, 0xa5, 0x96, 0x5c, 0x6f, 0xa8, - 0x96, 0x5c, 0x70, 0xa5, 0x96, 0x5c, 0x70, 0xa8, 0x96, 0x5c, 0x71, 0xa5, - 0x96, 0x5c, 0x72, 0xa8, 0x96, 0x5c, 0x72, 0xa5, 0x96, 0x5c, 0x73, 0xa8, - 0x96, 0x5c, 0x73, 0xa5, 0x96, 0x5c, 0x74, 0xa8, 0x96, 0x5c, 0x75, 0xa5, - 0x96, 0x5c, 0x75, 0xa8, 0x96, 0x5c, 0x76, 0xa5, 0x96, 0x5c, 0x76, 0xa3, - 0x97, 0x5c, 0x77, 0xa5, 0x96, 0x5c, 0x78, 0xa3, 0x97, 0x5c, 0x78, 0xa5, - 0x96, 0x5c, 0x79, 0xa3, 0x97, 0x5c, 0x79, 0xa5, 0x96, 0x5c, 0x7a, 0xa3, - 0x97, 0x5c, 0x7a, 0xa5, 0x96, 0x5c, 0x7b, 0xa3, 0x97, 0x5c, 0x7c, 0xa5, - 0x96, 0x5c, 0x7c, 0xa3, 0x97, 0x5c, 0x7d, 0xa5, 0x96, 0x5c, 0x7d, 0xa3, - 0x97, 0x5c, 0x7e, 0xa5, 0x96, 0x5c, 0x7e, 0xa3, 0x97, 0x5c, 0x7f, 0xa5, - 0x96, 0x5c, 0x7f, 0xa3, 0x97, 0x5c, 0x80, 0xa5, 0x96, 0x5c, 0x81, 0xa3, - 0x97, 0x5c, 0x81, 0xa5, 0x96, 0x5c, 0x82, 0xa3, 0x97, 0x5c, 0x82, 0xa5, - 0x96, 0x5c, 0x83, 0xa3, 0x97, 0x5c, 0x83, 0xa5, 0x96, 0x5c, 0x84, 0xa3, - 0x97, 0x5c, 0x84, 0xa5, 0x96, 0x5c, 0x85, 0xa3, 0x97, 0x5c, 0x85, 0xa5, - 0x96, 0x5c, 0x86, 0xa3, 0x97, 0x5c, 0x86, 0xa5, 0x96, 0x5c, 0x87, 0xa3, - 0x97, 0x5c, 0x87, 0xa5, 0x96, 0x5c, 0x88, 0xa3, 0x97, 0x5c, 0x88, 0xa5, - 0x96, 0x5c, 0x89, 0xa3, 0x97, 0x5c, 0x89, 0xa5, 0x96, 0x5c, 0x8a, 0xa3, - 0x97, 0x5c, 0x8a, 0xa5, 0x96, 0x5c, 0x8b, 0xa3, 0x97, 0x5c, 0x8b, 0xa5, - 0x96, 0x5c, 0x8c, 0xa3, 0x97, 0x5c, 0x8c, 0xa5, 0x96, 0x5c, 0x8d, 0xa3, - 0x97, 0x5c, 0x8d, 0xa5, 0x96, 0x5c, 0x8e, 0xa3, 0x97, 0x5c, 0x8e, 0xa5, - 0x96, 0x5c, 0x8e, 0xa3, 0x97, 0x5c, 0x8f, 0xa5, 0x96, 0x5c, 0x8f, 0xa3, - 0x97, 0x5c, 0x90, 0xa2, 0x97, 0x5c, 0x90, 0xa3, 0x97, 0x5c, 0x91, 0xa2, - 0x97, 0x5c, 0x91, 0xa3, 0x97, 0x5c, 0x92, 0xa2, 0x97, 0x5c, 0x92, 0xa3, - 0x97, 0x5c, 0x93, 0xa2, 0x97, 0x5c, 0x93, 0xa3, 0x97, 0x5c, 0x94, 0xa2, - 0x97, 0x5c, 0x94, 0xa3, 0x97, 0x5c, 0x94, 0xa2, 0x97, 0x5c, 0x95, 0xa3, - 0x97, 0x5c, 0x95, 0xa2, 0x97, 0x5c, 0x96, 0xa3, 0x97, 0x5c, 0x96, 0xa2, - 0x97, 0x5c, 0x97, 0xa3, 0x97, 0x5c, 0x96, 0xa2, 0x97, 0x5c, 0x97, 0xa2, - 0x98, 0x5c, 0x96, 0xa2, 0x98, 0x5c, 0x97, 0xa2, 0x98, 0x5c, 0x9a, 0xa2, - 0x99, 0x5c, 0x9b, 0xa2, 0x99, 0x5c, 0x9a, 0xa2, 0x9a, 0x5c, 0x9b, 0xa2, - 0x9a, 0x5c, 0x9a, 0xa1, 0x9a, 0x5c, 0x9b, 0xa2, 0x9a, 0x5c, 0x9b, 0xa1, - 0x9a, 0x5c, 0x9c, 0xa2, 0x9a, 0x5c, 0x9c, 0xa1, 0x9a, 0x5c, 0x9d, 0xa2, - 0x9a, 0x5c, 0x9d, 0xa1, 0x9a, 0x5c, 0x9d, 0xa2, 0x9a, 0x5c, 0x9e, 0xa1, - 0x9a, 0x5c, 0x9e, 0xa2, 0x9a, 0x5c, 0x9f, 0xa1, 0x9a, 0x5c, 0x9f, 0xa2, - 0x9a, 0x5c, 0x9f, 0xa1, 0x9a, 0x5c, 0xa0, 0xa2, 0x9a, 0x5c, 0xa0, 0xa1, - 0x9a, 0x5c, 0xa1, 0xa2, 0x9a, 0x5c, 0xa1, 0xa1, 0x9a, 0x5c, 0xa1, 0x9f, - 0x9b, 0x5c, 0xa2, 0xa1, 0x9a, 0x5c, 0xa2, 0x9f, 0x9b, 0x5c, 0xa3, 0xa1, - 0x9a, 0x5c, 0xa3, 0x9f, 0x9b, 0x5c, 0xa3, 0xa1, 0x9a, 0x5c, 0xa4, 0x9f, - 0x9b, 0x5c, 0xa4, 0xa1, 0x9a, 0x5c, 0xa5, 0x9f, 0x9b, 0x5c, 0xa5, 0xa1, - 0x9a, 0x5c, 0xa5, 0x9f, 0x9b, 0x5c, 0xa6, 0xa1, 0x9a, 0x5c, 0xa6, 0x9f, - 0x9b, 0x5c, 0xa6, 0xa1, 0x9a, 0x5c, 0xa7, 0x9f, 0x9b, 0x5c, 0xa7, 0xa1, - 0x9a, 0x5c, 0xa8, 0x9f, 0x9b, 0x5c, 0xa8, 0xa1, 0x9a, 0x5c, 0xa8, 0x9f, - 0x9b, 0x5c, 0xa9, 0xaf, 0xa5, 0x5c, 0xa9, 0xaf, 0xa5, 0x5c, 0xaa, 0xb0, - 0xaa, 0x5c, 0xaa, 0xaf, 0xa5, 0x5c, 0xaa, 0xb0, 0xaa, 0x5c, 0xab, 0xb0, - 0xa9, 0x5c, 0xab, 0xb0, 0xaa, 0x5c, 0xab, 0xb0, 0xa9, 0x5c, 0xac, 0xb0, - 0xaa, 0x5c, 0xac, 0xb0, 0xa9, 0x5c, 0xac, 0xb0, 0xaa, 0x5c, 0xad, 0xb0, - 0xa9, 0x5c, 0xad, 0xb0, 0xaa, 0x5c, 0xae, 0xb0, 0xa9, 0x5c, 0xae, 0xb0, - 0xaa, 0x5c, 0xae, 0xb0, 0xae, 0x5c, 0xaf, 0xb0, 0xad, 0x5c, 0xaf, 0xb0, - 0xae, 0x5c, 0xaf, 0xb0, 0xad, 0x5c, 0xb0, 0xb0, 0xae, 0x5c, 0xb0, 0xb0, - 0xad, 0x5c, 0xb0, 0xb0, 0xae, 0x5c, 0xb1, 0x92, 0xb4, 0x5c, 0xb1, 0x92, - 0xb5, 0x5c, 0xb2, 0x92, 0xb4, 0x5c, 0xb2, 0x92, 0xb5, 0x5c, 0xb2, 0x92, - 0xb4, 0x5c, 0xb3, 0x92, 0xb5, 0x5c, 0xb3, 0x92, 0xb4, 0x5c, 0xb3, 0x92, - 0xb5, 0x5c, 0xb4, 0x92, 0xb4, 0x5c, 0xb4, 0x93, 0xb8, 0x5c, 0xb4, 0x93, - 0xb8, 0x5c, 0xb5, 0x93, 0xb8, 0x5c, 0xb5, 0x93, 0xb8, 0x5c, 0xb5, 0x93, - 0xb8, 0x5c, 0xb6, 0x93, 0xb8, 0x5c, 0xb6, 0x93, 0xb8, 0x5c, 0xb6, 0x93, - 0xb8, 0x5c, 0xb7, 0x93, 0xb8, 0x5c, 0xb7, 0x93, 0xb8, 0x5c, 0xb7, 0x93, - 0xb8, 0x5c, 0xb8, 0x94, 0xbc, 0x5c, 0xb8, 0x94, 0xbc, 0x5c, 0xb8, 0x94, - 0xbc, 0x5c, 0xb9, 0x94, 0xbc, 0x5c, 0xb9, 0x94, 0xbc, 0x5c, 0xb9, 0x94, - 0xbc, 0x5c, 0xba, 0x94, 0xbc, 0x5c, 0xba, 0x94, 0xbc, 0x5c, 0xba, 0x94, - 0xbc, 0x5c, 0xbb, 0x94, 0xbc, 0x5c, 0xbb, 0x94, 0xbc, 0x5c, 0xbb, 0x94, - 0xbc, 0x5c, 0xbc, 0x94, 0xbc, 0x5c, 0xbc, 0x95, 0xbf, 0x5c, 0xbc, 0x95, - 0xc0, 0x5c, 0xbd, 0x95, 0xbf, 0x5c, 0xbd, 0x95, 0xc0, 0x5c, 0xbd, 0x95, - 0xbf, 0x5c, 0xbe, 0x95, 0xc0, 0x5c, 0xbe, 0x95, 0xbf, 0x5c, 0xbe, 0x95, - 0xc0, 0x5c, 0xbf, 0x95, 0xbf, 0x5c, 0xbf, 0x95, 0xc0, 0x5c, 0xbf, 0x95, - 0xbf, 0x5c, 0xc0, 0x96, 0xc3, 0x5c, 0xc0, 0x96, 0xc3, 0x5c, 0xc0, 0x96, - 0xc3, 0x5c, 0xc1, 0x96, 0xc3, 0x5c, 0xc1, 0x96, 0xc3, 0x5c, 0xc1, 0x96, - 0xc3, 0x5c, 0xc1, 0x96, 0xc3, 0x5c, 0xc2, 0x96, 0xc3, 0x5c, 0xc2, 0x96, - 0xc3, 0x5c, 0xc2, 0x96, 0xc3, 0x5c, 0xc3, 0x96, 0xc3, 0x5c, 0xc3, 0x96, - 0xc3, 0x5c, 0xc3, 0x97, 0xc6, 0x5c, 0xc4, 0x97, 0xc7, 0x5c, 0xc4, 0x97, - 0xc6, 0x5c, 0xc4, 0x97, 0xc7, 0x5c, 0xc5, 0x97, 0xc6, 0x5c, 0xc5, 0x97, - 0xc7, 0x5c, 0xc5, 0x97, 0xc6, 0x5c, 0xc6, 0x97, 0xc7, 0x5c, 0xc6, 0x97, - 0xc6, 0x5c, 0xc6, 0x97, 0xc7, 0x5c, 0xc6, 0x97, 0xc6, 0x5c, 0xc7, 0x98, - 0xca, 0x5c, 0xc7, 0x98, 0xca, 0x5c, 0xc7, 0x98, 0xca, 0x5c, 0xc8, 0x98, - 0xca, 0x5c, 0xc8, 0x98, 0xca, 0x5c, 0xc8, 0x98, 0xca, 0x5c, 0xc9, 0x98, - 0xca, 0x5c, 0xc9, 0x98, 0xca, 0x5c, 0xc9, 0x98, 0xca, 0x5c, 0xc9, 0x98, - 0xca, 0x5c, 0xca, 0x98, 0xca, 0x5c, 0xca, 0xa5, 0xd1, 0x5c, 0xca, 0xa3, - 0xd1, 0x5c, 0xcb, 0xa5, 0xd1, 0x5c, 0xcb, 0xa3, 0xd1, 0x5c, 0xcb, 0xa5, - 0xd1, 0x5c, 0xcc, 0xa3, 0xd1, 0x5c, 0xcc, 0xa5, 0xd1, 0x5c, 0xcc, 0xa3, - 0xd1, 0x5c, 0xcc, 0xa5, 0xd1, 0x5c, 0xcd, 0xa3, 0xd1, 0x5c, 0xcd, 0xa2, - 0xd2, 0x5c, 0xcd, 0xa3, 0xd1, 0x5c, 0xce, 0xa2, 0xd2, 0x5c, 0xce, 0xa3, - 0xd1, 0x5c, 0xce, 0xa2, 0xd2, 0x5c, 0xce, 0xa3, 0xd1, 0x5c, 0xcf, 0xa2, - 0xd2, 0x5c, 0xcf, 0xa3, 0xd1, 0x5c, 0xcf, 0xa2, 0xd2, 0x5c, 0xd0, 0xa3, - 0xd1, 0x5c, 0xd0, 0xa2, 0xd2, 0x5c, 0xd0, 0xa3, 0xd1, 0x5c, 0xd0, 0xa2, - 0xd2, 0x5c, 0xd1, 0xa3, 0xd1, 0x5c, 0xd1, 0xa2, 0xd2, 0x5c, 0xd1, 0xa2, - 0xd2, 0x5c, 0xd1, 0xa2, 0xd2, 0x5c, 0xd1, 0xa2, 0xd2, 0x5c, 0xd1, 0xa2, - 0xd2, 0x5c, 0xd1, 0xa2, 0xd2, 0x5c, 0xd1, 0xa2, 0xd3, 0x5c, 0xd1, 0xa2, - 0xd3, 0x5c, 0xd1, 0xa2, 0xd3, 0x5c, 0xd1, 0xa2, 0xd4, 0x5c, 0xd2, 0xa2, - 0xd4, 0x59, 0xd1, 0xa2, 0xd4, 0x5c, 0xd2, 0xa2, 0xd4, 0x59, 0xd1, 0xa2, - 0xd5, 0x5c, 0xd2, 0xa2, 0xd5, 0x59, 0xd1, 0xa2, 0xd5, 0x5c, 0xd2, 0xa2, - 0xd6, 0x59, 0xd1, 0xa2, 0xd6, 0x5c, 0xd2, 0xa2, 0xd6, 0x59, 0xd1, 0xa2, - 0xd6, 0x5c, 0xd2, 0xa2, 0xd7, 0x59, 0xd1, 0xa2, 0xd7, 0x5c, 0xd2, 0xa2, - 0xd7, 0x59, 0xd1, 0xa2, 0xd7, 0x5c, 0xd2, 0xa2, 0xd8, 0x59, 0xd1, 0xa2, - 0xd8, 0x5c, 0xd2, 0xa2, 0xd8, 0x59, 0xd1, 0xa2, 0xd9, 0x5c, 0xd2, 0xa2, - 0xd9, 0x59, 0xd1, 0xa2, 0xd9, 0x5c, 0xd2, 0xa2, 0xd9, 0x59, 0xdc, 0xa2, - 0xda, 0x4e, 0xdb, 0xa2, 0xda, 0x4e, 0xdc, 0xa2, 0xda, 0x4e, 0xdb, 0xa2, - 0xda, 0x4e, 0xdc, 0xa2, 0xdb, 0x4e, 0xdb, 0xa2, 0xdb, 0x4e, 0xdc, 0xa2, - 0xdb, 0x4e, 0xde, 0xa2, 0xdb, 0x4f, 0xde, 0xa2, 0xdc, 0x4f, 0xde, 0xa2, - 0xdc, 0x4f, 0xde, 0xa2, 0xdc, 0x4f, 0xde, 0xa2, 0xdd, 0x4f, 0xde, 0xa2, - 0xdd, 0x4f, 0xde, 0xa2, 0xdd, 0x4f, 0xde, 0xa2, 0xdd, 0x4f, 0xde, 0xa2, - 0xde, 0x4f, 0xe1, 0xa2, 0xde, 0x50, 0xde, 0xa2, 0xde, 0x4f, 0xe1, 0xa2, - 0xde, 0x50, 0xe1, 0xa2, 0xdf, 0x50, 0xe1, 0xa2, 0xdf, 0x50, 0xe1, 0xa2, - 0xdf, 0x50, 0xe1, 0xa2, 0xdf, 0x50, 0xe1, 0xa2, 0xe0, 0x50, 0xe1, 0xa2, - 0xe0, 0x50, 0xe1, 0xa2, 0xe0, 0x50, 0xe1, 0xa2, 0xe1, 0x50, 0xe3, 0xa2, - 0xe1, 0x51, 0xe3, 0xa2, 0xe1, 0x51, 0xe3, 0xa2, 0xe1, 0x51, 0xe3, 0xa2, - 0xe2, 0x51, 0xe3, 0xa2, 0xe2, 0x51, 0xe3, 0xa2, 0xe2, 0x51, 0xe3, 0xa2, - 0xe2, 0x51, 0xe3, 0xa2, 0xe3, 0x51, 0xe3, 0xa2, 0xe3, 0x51, 0xe3, 0xa2, - 0xe3, 0x51, 0xe5, 0xa2, 0xe3, 0x52, 0xe6, 0xa2, 0xe4, 0x52, 0xe5, 0xa2, - 0xe4, 0x52, 0xe6, 0xa2, 0xe4, 0x52, 0xe5, 0xa2, 0xe4, 0x52, 0xe6, 0xa2, - 0xe5, 0x52, 0xe5, 0xa2, 0xe5, 0x52, 0xe6, 0xa2, 0xe5, 0x52, 0xe5, 0xa2, - 0xe5, 0x52, 0xe8, 0xa2, 0xe6, 0x53, 0xe8, 0xa2, 0xe6, 0x53, 0xe8, 0xa2, - 0xe6, 0x53, 0xe8, 0xa2, 0xe6, 0x53, 0xe8, 0xa2, 0xe7, 0x53, 0xe8, 0xa2, - 0xe7, 0x53, 0xe8, 0xa2, 0xe7, 0x53, 0xe8, 0xa2, 0xe7, 0x53, 0xe8, 0xa2, - 0xe8, 0x53, 0xe8, 0xa2, 0xe8, 0x53, 0xea, 0xa2, 0xe8, 0x54, 0xea, 0xa2, - 0xe8, 0x54, 0xea, 0xa2, 0xe9, 0x54, 0xea, 0xa2, 0xe9, 0x54, 0xea, 0xa2, - 0xe9, 0x54, 0xea, 0xa2, 0xe9, 0x54, 0xea, 0xa2, 0xea, 0x54, 0xea, 0xa2, - 0xea, 0x54, 0xea, 0xa2, 0xea, 0x54, 0xea, 0xa2, 0xea, 0x54, 0xeb, 0xa2, - 0xeb, 0x54, 0xec, 0xa2, 0xeb, 0x55, 0xec, 0xa2, 0xeb, 0x55, 0xec, 0xa2, - 0xeb, 0x55, 0xec, 0xa2, 0xec, 0x55, 0xec, 0xa2, 0xec, 0x55, 0xec, 0xa2, - 0xec, 0x55, 0xec, 0xa2, 0xec, 0x55, 0xec, 0xa2, 0xec, 0x55, 0xed, 0xa2, - 0xed, 0x55, 0xee, 0xa2, 0xed, 0x56, 0xef, 0xa2, 0xed, 0x56, 0xee, 0xa2, - 0xed, 0x56, 0xef, 0xa2, 0xee, 0x56, 0xee, 0xa2, 0xee, 0x56, 0xef, 0xa2, - 0xee, 0x56, 0xee, 0xa2, 0xee, 0x56, 0xef, 0xa2, 0xef, 0x56, 0xef, 0xa2, - 0xef, 0x56, 0xef, 0xa2, 0xef, 0x56, 0xf1, 0xa2, 0xef, 0x57, 0xf1, 0xa2, - 0xf0, 0x57, 0xf1, 0xa2, 0xf0, 0x57, 0xf1, 0xa2, 0xf0, 0x57, 0xf1, 0xa2, - 0xf0, 0x57, 0xf1, 0xa2, 0xf1, 0x57, 0xf1, 0xa2, 0xf1, 0x57, 0xf1, 0xa2, - 0xf1, 0x57, 0xf1, 0xa2, 0xf1, 0x57, 0xf2, 0xa2, 0xf2, 0x57, 0xf2, 0xa2, - 0xf2, 0x57, 0xf3, 0xa2, 0xf2, 0x58, 0xf3, 0xa2, 0xf2, 0x58, 0xf3, 0xa2, - 0xf2, 0x58, 0xf3, 0xa2, 0xf3, 0x58, 0xf3, 0xa2, 0xf3, 0x58, 0xf3, 0xa2, - 0xf3, 0x58, 0xf3, 0xa2, 0xf3, 0x58, 0xf4, 0xa2, 0xf4, 0x58, 0xf4, 0xa2, - 0xf4, 0x58, 0xf5, 0xa2, 0xf4, 0x59, 0xf5, 0xa2, 0xf4, 0x59, 0xf5, 0xa2, - 0xf5, 0x59, 0xf5, 0xa2, 0xf5, 0x59, 0xf5, 0xa2, 0xf5, 0x59, 0xf5, 0xa2, - 0xf5, 0x59, 0xf5, 0xa2, 0xf5, 0x59, 0xf6, 0xa2, 0xf6, 0x59, 0xf6, 0xa2, - 0xf6, 0x59, 0xf6, 0xa2, 0xf6, 0x59, 0xf7, 0xa2, 0xf6, 0x5a, 0xf8, 0xa2, - 0xf7, 0x5a, 0xf7, 0xa2, 0xf7, 0x5a, 0xf8, 0xa2, 0xf7, 0x5a, 0xf7, 0xa2, - 0xf7, 0x5a, 0xf8, 0xa2, 0xf8, 0x5a, 0xf8, 0xa2, 0xf8, 0x5a, 0xf8, 0xa2, - 0xf8, 0x5a, 0xf8, 0xa2, 0xf8, 0x5a, 0xf8, 0xa2, 0xf8, 0x5a, 0xf9, 0xa2, - 0xf9, 0x5a, 0xf9, 0xa2, 0xf9, 0x5b, 0xfa, 0xa2, 0xf9, 0x5b, 0xf9, 0xa2, - 0xf9, 0x5b, 0xfa, 0xa2, 0xfa, 0x5b, 0xfa, 0xa2, 0xfa, 0x5b, 0xfa, 0xa2, - 0xfa, 0x5b, 0xfa, 0xa2, 0xfa, 0x5b, 0xfa, 0xa2, 0xfa, 0x5b, 0xfb, 0xa2, - 0xfb, 0x5b, 0xfb, 0xa2, 0xfb, 0x5b, 0xfb, 0xa2, 0xfb, 0x5b, 0xfb, 0xa3, - 0xfb, 0x5c, 0xfc, 0xa3, 0xfc, 0x5c, 0xfc, 0xa3, 0xfb, 0x5c, 0xfc, 0xa3, - 0xfc, 0x5c, 0xfc, 0xa3, 0xfb, 0x5c, 0xfc, 0xa3, 0xfc, 0x5c, 0xfd, 0xa3, - 0xfb, 0x5c, 0xfd, 0xa3, 0xfc, 0x5c, 0xfd, 0xa3, 0xfb, 0x5c, 0xfd, 0xa3, - 0xfc, 0x5c, 0xfe, 0xa3, 0xfb, 0x5c, 0xfe, 0xa3, 0xfc, 0x5c, 0xfe, 0xa3, - 0xfb, 0x5c, 0xfe, 0xa3, 0xfc, 0x5c, 0xfe, 0xa3, 0xfb, 0x5c, 0xff, 0xa3, - 0xfc, 0x5c, 0xff, 0xa3, 0xfb, 0x5c, 0x03, 0xaa, 0x95, 0x5d, 0x0a, 0xad, - 0x95, 0x5d, 0x0f, 0xaa, 0x95, 0x5d, 0x14, 0xad, 0x95, 0x5d, 0x17, 0xaa, - 0x95, 0x5d, 0x1b, 0xad, 0x95, 0x5d, 0x1e, 0xaa, 0x95, 0x5d, 0x20, 0xa8, - 0x96, 0x5d, 0x23, 0xaa, 0x95, 0x5d, 0x25, 0xa8, 0x96, 0x5d, 0x27, 0xaa, - 0x95, 0x5d, 0x29, 0xa8, 0x96, 0x5d, 0x2b, 0xaa, 0x95, 0x5d, 0x2d, 0xa8, - 0x96, 0x5d, 0x2f, 0xaa, 0x95, 0x5d, 0x31, 0xa8, 0x96, 0x5d, 0x32, 0xaa, - 0x95, 0x5d, 0x34, 0xa8, 0x96, 0x5d, 0x35, 0xaa, 0x95, 0x5d, 0x37, 0xa8, - 0x96, 0x5d, 0x38, 0xaa, 0x95, 0x5d, 0x3a, 0xa8, 0x96, 0x5d, 0x3b, 0xaa, - 0x95, 0x5d, 0x3c, 0xa8, 0x96, 0x5d, 0x3e, 0xaa, 0x95, 0x5d, 0x3f, 0xa8, - 0x96, 0x5d, 0x40, 0xaa, 0x95, 0x5d, 0x42, 0xa8, 0x96, 0x5d, 0x43, 0xaa, - 0x95, 0x5d, 0x44, 0xa8, 0x96, 0x5d, 0x45, 0xaa, 0x95, 0x5d, 0x46, 0xa8, - 0x96, 0x5d, 0x47, 0xaa, 0x95, 0x5d, 0x48, 0xa8, 0x96, 0x5d, 0x49, 0xaa, - 0x95, 0x5d, 0x4a, 0xa8, 0x96, 0x5d, 0x4b, 0xaa, 0x95, 0x5d, 0x4c, 0xa8, - 0x96, 0x5d, 0x4d, 0xaa, 0x95, 0x5d, 0x4e, 0xa8, 0x96, 0x5d, 0x4f, 0xaa, - 0x95, 0x5d, 0x50, 0xa8, 0x96, 0x5d, 0x51, 0xaa, 0x95, 0x5d, 0x52, 0xa8, - 0x96, 0x5d, 0x53, 0xaa, 0x95, 0x5d, 0x54, 0xa8, 0x96, 0x5d, 0x55, 0xaa, - 0x95, 0x5d, 0x56, 0xa8, 0x96, 0x5d, 0x57, 0xaa, 0x95, 0x5d, 0x58, 0xa8, - 0x96, 0x5d, 0x58, 0xaa, 0x95, 0x5d, 0x59, 0xa8, 0x96, 0x5d, 0x5a, 0xaa, - 0x95, 0x5d, 0x5b, 0xa8, 0x96, 0x5d, 0x5c, 0xaa, 0x95, 0x5d, 0x5d, 0xa8, - 0x96, 0x5d, 0x5d, 0xaa, 0x95, 0x5d, 0x5e, 0xa8, 0x96, 0x5d, 0x5f, 0xaa, - 0x95, 0x5d, 0x60, 0xa8, 0x96, 0x5d, 0x60, 0xaa, 0x95, 0x5d, 0x61, 0xa8, - 0x96, 0x5d, 0x62, 0xaa, 0x95, 0x5d, 0x63, 0xa8, 0x96, 0x5d, 0x63, 0xaa, - 0x95, 0x5d, 0x64, 0xa8, 0x96, 0x5d, 0x65, 0xaa, 0x95, 0x5d, 0x66, 0xa8, - 0x96, 0x5d, 0x66, 0xaa, 0x95, 0x5d, 0x67, 0xa8, 0x96, 0x5d, 0x68, 0xaa, - 0x95, 0x5d, 0x68, 0xa8, 0x96, 0x5d, 0x69, 0xa6, 0x96, 0x5d, 0x6a, 0xa8, - 0x96, 0x5d, 0x6a, 0xa6, 0x96, 0x5d, 0x6b, 0xa8, 0x96, 0x5d, 0x6c, 0xa6, - 0x96, 0x5d, 0x6c, 0xa8, 0x96, 0x5d, 0x6d, 0xa6, 0x96, 0x5d, 0x6e, 0xa8, - 0x96, 0x5d, 0x6e, 0xa6, 0x96, 0x5d, 0x6f, 0xa8, 0x96, 0x5d, 0x70, 0xa6, - 0x96, 0x5d, 0x70, 0xa8, 0x96, 0x5d, 0x71, 0xa6, 0x96, 0x5d, 0x72, 0xa8, - 0x96, 0x5d, 0x72, 0xa6, 0x96, 0x5d, 0x73, 0xa8, 0x96, 0x5d, 0x73, 0xa6, - 0x96, 0x5d, 0x74, 0xa8, 0x96, 0x5d, 0x75, 0xa6, 0x96, 0x5d, 0x75, 0xa8, - 0x96, 0x5d, 0x76, 0xa6, 0x96, 0x5d, 0x76, 0xa8, 0x96, 0x5d, 0x77, 0xa6, - 0x96, 0x5d, 0x78, 0xa8, 0x96, 0x5d, 0x78, 0xa6, 0x96, 0x5d, 0x79, 0xa8, - 0x96, 0x5d, 0x79, 0xa6, 0x96, 0x5d, 0x7a, 0xa8, 0x96, 0x5d, 0x7a, 0xa6, - 0x96, 0x5d, 0x7b, 0xa8, 0x96, 0x5d, 0x7c, 0xa6, 0x96, 0x5d, 0x7c, 0xa8, - 0x96, 0x5d, 0x7d, 0xa6, 0x96, 0x5d, 0x7d, 0xa8, 0x96, 0x5d, 0x7e, 0xa6, - 0x96, 0x5d, 0x7e, 0xa8, 0x96, 0x5d, 0x7f, 0xa6, 0x96, 0x5d, 0x7f, 0xa3, - 0x97, 0x5d, 0x80, 0xa6, 0x96, 0x5d, 0x81, 0xa3, 0x97, 0x5d, 0x81, 0xa6, - 0x96, 0x5d, 0x82, 0xa3, 0x97, 0x5d, 0x82, 0xa6, 0x96, 0x5d, 0x83, 0xa3, - 0x97, 0x5d, 0x83, 0xa6, 0x96, 0x5d, 0x84, 0xa3, 0x97, 0x5d, 0x84, 0xa6, - 0x96, 0x5d, 0x85, 0xa3, 0x97, 0x5d, 0x85, 0xa6, 0x96, 0x5d, 0x86, 0xa3, - 0x97, 0x5d, 0x86, 0xa6, 0x96, 0x5d, 0x87, 0xa3, 0x97, 0x5d, 0x87, 0xa6, - 0x96, 0x5d, 0x88, 0xa3, 0x97, 0x5d, 0x88, 0xa6, 0x96, 0x5d, 0x89, 0xa3, - 0x97, 0x5d, 0x89, 0xa6, 0x96, 0x5d, 0x8a, 0xa3, 0x97, 0x5d, 0x8a, 0xa6, - 0x96, 0x5d, 0x8b, 0xa3, 0x97, 0x5d, 0x8b, 0xa6, 0x96, 0x5d, 0x8c, 0xa3, - 0x97, 0x5d, 0x8c, 0xa6, 0x96, 0x5d, 0x8d, 0xa3, 0x97, 0x5d, 0x8d, 0xa6, - 0x96, 0x5d, 0x8e, 0xa3, 0x97, 0x5d, 0x8e, 0xa6, 0x96, 0x5d, 0x8e, 0xa3, - 0x97, 0x5d, 0x8f, 0xa6, 0x96, 0x5d, 0x8f, 0xa3, 0x97, 0x5d, 0x90, 0xa3, - 0x97, 0x5d, 0x90, 0xa3, 0x97, 0x5d, 0x91, 0xa3, 0x97, 0x5d, 0x91, 0xa3, - 0x97, 0x5d, 0x92, 0xa3, 0x97, 0x5d, 0x92, 0xa3, 0x97, 0x5d, 0x93, 0xa3, - 0x97, 0x5d, 0x93, 0xa3, 0x97, 0x5d, 0x94, 0xa3, 0x97, 0x5d, 0x94, 0xa3, - 0x97, 0x5d, 0x94, 0xa3, 0x97, 0x5d, 0x95, 0xa3, 0x97, 0x5d, 0x95, 0xa3, - 0x97, 0x5d, 0x96, 0xa3, 0x97, 0x5d, 0x96, 0xa3, 0x97, 0x5d, 0x97, 0xa3, - 0x97, 0x5d, 0x96, 0xa3, 0x97, 0x5d, 0x97, 0xa3, 0x98, 0x5d, 0x96, 0xa3, - 0x98, 0x5d, 0x97, 0xa3, 0x98, 0x5d, 0x9a, 0xa3, 0x99, 0x5d, 0x9b, 0xa3, - 0x99, 0x5d, 0x9a, 0xa3, 0x9a, 0x5d, 0x9b, 0xa3, 0x9a, 0x5d, 0x9a, 0xa3, - 0x9a, 0x5d, 0x9b, 0xa3, 0x9a, 0x5d, 0x9b, 0xa3, 0x9a, 0x5d, 0x9c, 0xa3, - 0x9a, 0x5d, 0x9c, 0xa1, 0x9a, 0x5d, 0x9d, 0xa3, 0x9a, 0x5d, 0x9d, 0xa1, - 0x9a, 0x5d, 0x9d, 0xa3, 0x9a, 0x5d, 0x9e, 0xa1, 0x9a, 0x5d, 0x9e, 0xa3, - 0x9a, 0x5d, 0x9f, 0xa1, 0x9a, 0x5d, 0x9f, 0xa3, 0x9a, 0x5d, 0x9f, 0xa1, - 0x9a, 0x5d, 0xa0, 0xa3, 0x9a, 0x5d, 0xa0, 0xa1, 0x9a, 0x5d, 0xa1, 0xa3, - 0x9a, 0x5d, 0xa1, 0xa1, 0x9a, 0x5d, 0xa1, 0xa3, 0x9a, 0x5d, 0xa2, 0xa1, - 0x9a, 0x5d, 0xa2, 0xa3, 0x9a, 0x5d, 0xa3, 0xa1, 0x9a, 0x5d, 0xa3, 0xa3, - 0x9a, 0x5d, 0xa3, 0xa1, 0x9a, 0x5d, 0xa4, 0xa3, 0x9a, 0x5d, 0xa4, 0xa1, - 0x9a, 0x5d, 0xa5, 0x9f, 0x9b, 0x5d, 0xa5, 0xa1, 0x9a, 0x5d, 0xa5, 0x9f, - 0x9b, 0x5d, 0xa6, 0xa1, 0x9a, 0x5d, 0xa6, 0x9f, 0x9b, 0x5d, 0xa6, 0xa1, - 0x9a, 0x5d, 0xa7, 0x9f, 0x9b, 0x5d, 0xa7, 0xa1, 0x9a, 0x5d, 0xa8, 0x9f, - 0x9b, 0x5d, 0xa8, 0xaf, 0xa7, 0x5d, 0xa8, 0xaf, 0xa8, 0x5d, 0xa9, 0xaf, - 0xa7, 0x5d, 0xa9, 0xaf, 0xa8, 0x5d, 0xaa, 0xaf, 0xa7, 0x5d, 0xaa, 0xaf, - 0xa8, 0x5d, 0xaa, 0xaf, 0xa7, 0x5d, 0xab, 0xaf, 0xa8, 0x5d, 0xab, 0xaf, - 0xa7, 0x5d, 0xab, 0xaf, 0xa8, 0x5d, 0xac, 0xb0, 0xac, 0x5d, 0xac, 0xaf, - 0xa8, 0x5d, 0xac, 0xb0, 0xac, 0x5d, 0xad, 0xb0, 0xab, 0x5d, 0xad, 0xb0, - 0xac, 0x5d, 0xae, 0xb0, 0xab, 0x5d, 0xae, 0xb0, 0xac, 0x5d, 0xae, 0xb0, - 0xab, 0x5d, 0xaf, 0xb0, 0xac, 0x5d, 0xaf, 0xb0, 0xab, 0x5d, 0xaf, 0xb0, - 0xac, 0x5d, 0xb0, 0xb0, 0xab, 0x5d, 0xb0, 0xb0, 0xac, 0x5d, 0xb0, 0xb1, - 0xb0, 0x5d, 0xb1, 0xb1, 0xaf, 0x5d, 0xb1, 0xb1, 0xb0, 0x5d, 0xb2, 0xb1, - 0xaf, 0x5d, 0xb2, 0xb1, 0xb0, 0x5d, 0xb2, 0xb1, 0xaf, 0x5d, 0xb3, 0xb1, - 0xb0, 0x5d, 0xb3, 0x93, 0xb6, 0x5d, 0xb3, 0x93, 0xb6, 0x5d, 0xb4, 0x93, - 0xb6, 0x5d, 0xb4, 0x93, 0xb6, 0x5d, 0xb4, 0x93, 0xb6, 0x5d, 0xb5, 0x93, - 0xb6, 0x5d, 0xb5, 0x93, 0xb6, 0x5d, 0xb5, 0x93, 0xb6, 0x5d, 0xb6, 0x93, - 0xb6, 0x5d, 0xb6, 0x94, 0xba, 0x5d, 0xb6, 0x94, 0xba, 0x5d, 0xb7, 0x94, - 0xba, 0x5d, 0xb7, 0x94, 0xba, 0x5d, 0xb7, 0x94, 0xba, 0x5d, 0xb8, 0x94, - 0xba, 0x5d, 0xb8, 0x94, 0xba, 0x5d, 0xb8, 0x94, 0xba, 0x5d, 0xb9, 0x94, - 0xba, 0x5d, 0xb9, 0x94, 0xba, 0x5d, 0xb9, 0x94, 0xba, 0x5d, 0xba, 0x94, - 0xbe, 0x5d, 0xba, 0x94, 0xba, 0x5d, 0xba, 0x94, 0xbe, 0x5d, 0xbb, 0x94, - 0xbe, 0x5d, 0xbb, 0x94, 0xbe, 0x5d, 0xbb, 0x94, 0xbe, 0x5d, 0xbc, 0x94, - 0xbe, 0x5d, 0xbc, 0x94, 0xbe, 0x5d, 0xbc, 0x94, 0xbe, 0x5d, 0xbd, 0x94, - 0xbe, 0x5d, 0xbd, 0x94, 0xbe, 0x5d, 0xbd, 0x94, 0xbe, 0x5d, 0xbe, 0x94, - 0xbe, 0x5d, 0xbe, 0x95, 0xc1, 0x5d, 0xbe, 0x95, 0xc1, 0x5d, 0xbf, 0x95, - 0xc1, 0x5d, 0xbf, 0x95, 0xc1, 0x5d, 0xbf, 0x95, 0xc1, 0x5d, 0xc0, 0x95, - 0xc1, 0x5d, 0xc0, 0x95, 0xc1, 0x5d, 0xc0, 0x95, 0xc1, 0x5d, 0xc1, 0x95, - 0xc1, 0x5d, 0xc1, 0x95, 0xc1, 0x5d, 0xc1, 0x95, 0xc1, 0x5d, 0xc1, 0x96, - 0xc5, 0x5d, 0xc2, 0x96, 0xc5, 0x5d, 0xc2, 0x96, 0xc5, 0x5d, 0xc2, 0x96, - 0xc5, 0x5d, 0xc3, 0x96, 0xc5, 0x5d, 0xc3, 0x96, 0xc5, 0x5d, 0xc3, 0x96, - 0xc5, 0x5d, 0xc4, 0x96, 0xc5, 0x5d, 0xc4, 0x96, 0xc5, 0x5d, 0xc4, 0x96, - 0xc5, 0x5d, 0xc5, 0x96, 0xc5, 0x5d, 0xc5, 0x97, 0xc8, 0x5d, 0xc5, 0x97, - 0xc8, 0x5d, 0xc6, 0x97, 0xc8, 0x5d, 0xc6, 0x97, 0xc8, 0x5d, 0xc6, 0x97, - 0xc8, 0x5d, 0xc6, 0x97, 0xc8, 0x5d, 0xc7, 0x97, 0xc8, 0x5d, 0xc7, 0x97, - 0xc8, 0x5d, 0xc7, 0x97, 0xc8, 0x5d, 0xc8, 0x97, 0xc8, 0x5d, 0xc8, 0x97, - 0xc8, 0x5d, 0xc8, 0x98, 0xcb, 0x5d, 0xc9, 0x98, 0xcc, 0x5d, 0xc9, 0x98, - 0xcb, 0x5d, 0xc9, 0x98, 0xcc, 0x5d, 0xc9, 0x98, 0xcb, 0x5d, 0xca, 0xa3, - 0xd1, 0x5d, 0xca, 0xa5, 0xd1, 0x5d, 0xca, 0xa3, 0xd1, 0x5d, 0xcb, 0xa5, - 0xd1, 0x5d, 0xcb, 0xa3, 0xd1, 0x5d, 0xcb, 0xa5, 0xd1, 0x5d, 0xcc, 0xa3, - 0xd1, 0x5d, 0xcc, 0xa5, 0xd1, 0x5d, 0xcc, 0xa3, 0xd1, 0x5d, 0xcc, 0xa5, - 0xd1, 0x5d, 0xcd, 0xa3, 0xd1, 0x5d, 0xcd, 0xa5, 0xd1, 0x5d, 0xcd, 0xa3, - 0xd1, 0x5d, 0xce, 0xa5, 0xd1, 0x5d, 0xce, 0xa3, 0xd1, 0x5d, 0xce, 0xa5, - 0xd1, 0x5d, 0xce, 0xa3, 0xd1, 0x5d, 0xcf, 0xa5, 0xd1, 0x5d, 0xcf, 0xa3, - 0xd1, 0x5d, 0xcf, 0xa3, 0xd2, 0x5d, 0xd0, 0xa3, 0xd1, 0x5d, 0xd0, 0xa3, - 0xd2, 0x5d, 0xd0, 0xa3, 0xd1, 0x5d, 0xd0, 0xa3, 0xd2, 0x5d, 0xd1, 0xa3, - 0xd1, 0x5d, 0xd1, 0xa3, 0xd2, 0x5d, 0xd1, 0xa3, 0xd1, 0x5c, 0xd1, 0xa3, - 0xd2, 0x5d, 0xd1, 0xa3, 0xd2, 0x5c, 0xd1, 0xa3, 0xd2, 0x5d, 0xd1, 0xa3, - 0xd2, 0x5c, 0xd1, 0xa3, 0xd3, 0x5d, 0xd1, 0xa3, 0xd3, 0x5c, 0xd1, 0xa3, - 0xd3, 0x5d, 0xd1, 0xa3, 0xd4, 0x5c, 0xd1, 0xa3, 0xd4, 0x5d, 0xd1, 0xa3, - 0xd4, 0x5c, 0xd1, 0xa3, 0xd4, 0x5d, 0xd1, 0xa3, 0xd5, 0x5c, 0xd1, 0xa3, - 0xd5, 0x5d, 0xd1, 0xa3, 0xd5, 0x5c, 0xd1, 0xa3, 0xd6, 0x5d, 0xd1, 0xa3, - 0xd6, 0x5c, 0xd2, 0xa3, 0xd6, 0x59, 0xd1, 0xa3, 0xd6, 0x5c, 0xd2, 0xa3, - 0xd7, 0x59, 0xd1, 0xa3, 0xd7, 0x5c, 0xd2, 0xa3, 0xd7, 0x59, 0xd1, 0xa3, - 0xd7, 0x5c, 0xd2, 0xa3, 0xd8, 0x59, 0xd1, 0xa3, 0xd8, 0x5c, 0xd2, 0xa3, - 0xd8, 0x59, 0xd1, 0xa3, 0xd9, 0x5c, 0xd2, 0xa3, 0xd9, 0x59, 0xd1, 0xa3, - 0xd9, 0x5c, 0xd2, 0xa3, 0xd9, 0x59, 0xd1, 0xa3, 0xda, 0x5c, 0xda, 0xa3, - 0xda, 0x4e, 0xdd, 0xa3, 0xda, 0x4f, 0xdd, 0xa3, 0xda, 0x4f, 0xdd, 0xa3, - 0xdb, 0x4f, 0xdd, 0xa3, 0xdb, 0x4f, 0xdd, 0xa3, 0xdb, 0x4f, 0xdd, 0xa3, - 0xdb, 0x4f, 0xdd, 0xa3, 0xdc, 0x4f, 0xdd, 0xa3, 0xdc, 0x4f, 0xdd, 0xa3, - 0xdc, 0x4f, 0xdf, 0xa3, 0xdd, 0x50, 0xdf, 0xa3, 0xdd, 0x50, 0xdf, 0xa3, - 0xdd, 0x50, 0xdf, 0xa3, 0xdd, 0x50, 0xdf, 0xa3, 0xde, 0x50, 0xdf, 0xa3, - 0xde, 0x50, 0xdf, 0xa3, 0xde, 0x50, 0xdf, 0xa3, 0xde, 0x50, 0xdf, 0xa3, - 0xdf, 0x50, 0xdf, 0xa3, 0xdf, 0x50, 0xdf, 0xa3, 0xdf, 0x50, 0xdf, 0xa3, - 0xdf, 0x50, 0xe2, 0xa3, 0xe0, 0x51, 0xe2, 0xa3, 0xe0, 0x51, 0xe2, 0xa3, - 0xe0, 0x51, 0xe2, 0xa3, 0xe1, 0x51, 0xe2, 0xa3, 0xe1, 0x51, 0xe2, 0xa3, - 0xe1, 0x51, 0xe2, 0xa3, 0xe1, 0x51, 0xe2, 0xa3, 0xe2, 0x51, 0xe2, 0xa3, - 0xe2, 0x51, 0xe4, 0xa3, 0xe2, 0x52, 0xe4, 0xa3, 0xe2, 0x52, 0xe4, 0xa3, - 0xe3, 0x52, 0xe4, 0xa3, 0xe3, 0x52, 0xe4, 0xa3, 0xe3, 0x52, 0xe4, 0xa3, - 0xe3, 0x52, 0xe4, 0xa3, 0xe4, 0x52, 0xe4, 0xa3, 0xe4, 0x52, 0xe4, 0xa3, - 0xe4, 0x52, 0xe6, 0xa3, 0xe4, 0x53, 0xe7, 0xa3, 0xe5, 0x53, 0xe6, 0xa3, - 0xe5, 0x53, 0xe7, 0xa3, 0xe5, 0x53, 0xe6, 0xa3, 0xe5, 0x53, 0xe7, 0xa3, - 0xe6, 0x53, 0xe6, 0xa3, 0xe6, 0x53, 0xe7, 0xa3, 0xe6, 0x53, 0xe6, 0xa3, - 0xe6, 0x53, 0xe7, 0xa3, 0xe7, 0x53, 0xe9, 0xa3, 0xe7, 0x54, 0xe9, 0xa3, - 0xe7, 0x54, 0xe9, 0xa3, 0xe7, 0x54, 0xe9, 0xa3, 0xe8, 0x54, 0xe9, 0xa3, - 0xe8, 0x54, 0xe9, 0xa3, 0xe8, 0x54, 0xe9, 0xa3, 0xe8, 0x54, 0xe9, 0xa3, - 0xe9, 0x54, 0xe9, 0xa3, 0xe9, 0x54, 0xeb, 0xa3, 0xe9, 0x55, 0xeb, 0xa3, - 0xe9, 0x55, 0xeb, 0xa3, 0xea, 0x55, 0xeb, 0xa3, 0xea, 0x55, 0xeb, 0xa3, - 0xea, 0x55, 0xeb, 0xa3, 0xea, 0x55, 0xeb, 0xa3, 0xeb, 0x55, 0xeb, 0xa3, - 0xeb, 0x55, 0xeb, 0xa3, 0xeb, 0x55, 0xeb, 0xa3, 0xeb, 0x55, 0xec, 0xa3, - 0xec, 0x55, 0xec, 0xa3, 0xec, 0x55, 0xed, 0xa3, 0xec, 0x56, 0xee, 0xa3, - 0xec, 0x56, 0xed, 0xa3, 0xec, 0x56, 0xee, 0xa3, 0xed, 0x56, 0xed, 0xa3, - 0xed, 0x56, 0xee, 0xa3, 0xed, 0x56, 0xed, 0xa3, 0xed, 0x56, 0xee, 0xa3, - 0xee, 0x56, 0xee, 0xa3, 0xee, 0x56, 0xf0, 0xa3, 0xee, 0x57, 0xf0, 0xa3, - 0xee, 0x57, 0xf0, 0xa3, 0xef, 0x57, 0xf0, 0xa3, 0xef, 0x57, 0xf0, 0xa3, - 0xef, 0x57, 0xf0, 0xa3, 0xef, 0x57, 0xf0, 0xa3, 0xf0, 0x57, 0xf0, 0xa3, - 0xf0, 0x57, 0xf0, 0xa3, 0xf0, 0x57, 0xf2, 0xa3, 0xf0, 0x58, 0xf2, 0xa3, - 0xf1, 0x58, 0xf2, 0xa3, 0xf1, 0x58, 0xf2, 0xa3, 0xf1, 0x58, 0xf2, 0xa3, - 0xf1, 0x58, 0xf2, 0xa3, 0xf2, 0x58, 0xf2, 0xa3, 0xf2, 0x58, 0xf2, 0xa3, - 0xf2, 0x58, 0xf2, 0xa3, 0xf2, 0x58, 0xf2, 0xa3, 0xf2, 0x58, 0xf3, 0xa3, - 0xf3, 0x58, 0xf3, 0xa3, 0xf3, 0x58, 0xf4, 0xa3, 0xf3, 0x59, 0xf4, 0xa3, - 0xf3, 0x59, 0xf4, 0xa3, 0xf4, 0x59, 0xf4, 0xa3, 0xf4, 0x59, 0xf4, 0xa3, - 0xf4, 0x59, 0xf4, 0xa3, 0xf4, 0x59, 0xf5, 0xa3, 0xf5, 0x59, 0xf5, 0xa3, - 0xf5, 0x59, 0xf5, 0xa3, 0xf5, 0x59, 0xf6, 0xa3, 0xf5, 0x5a, 0xf6, 0xa3, - 0xf5, 0x5a, 0xf6, 0xa3, 0xf6, 0x5a, 0xf6, 0xa3, 0xf6, 0x5a, 0xf6, 0xa3, - 0xf6, 0x5a, 0xf6, 0xa3, 0xf6, 0x5a, 0xf7, 0xa3, 0xf7, 0x5a, 0xf7, 0xa3, - 0xf7, 0x5a, 0xf7, 0xa3, 0xf7, 0x5a, 0xf8, 0xa3, 0xf7, 0x5b, 0xf8, 0xa3, - 0xf8, 0x5b, 0xf8, 0xa3, 0xf8, 0x5b, 0xf8, 0xa3, 0xf8, 0x5b, 0xf8, 0xa3, - 0xf8, 0x5b, 0xf8, 0xa3, 0xf8, 0x5b, 0xf9, 0xa3, 0xf9, 0x5b, 0xf9, 0xa3, - 0xf9, 0x5b, 0xf9, 0xa3, 0xf9, 0x5b, 0xf9, 0xa3, 0xf9, 0x5b, 0xfa, 0xa3, - 0xfa, 0x5b, 0xfa, 0xa3, 0xfa, 0x5b, 0xfa, 0xa3, 0xfa, 0x5c, 0xfb, 0xa3, - 0xfa, 0x5c, 0xfa, 0xa3, 0xfa, 0x5c, 0xfb, 0xa3, 0xfb, 0x5c, 0xfb, 0xa3, - 0xfb, 0x5c, 0xfb, 0xa3, 0xfb, 0x5c, 0xfb, 0xa3, 0xfb, 0x5c, 0xfc, 0xa3, - 0xfc, 0x5c, 0xfc, 0xa3, 0xfb, 0x5d, 0xfc, 0xa3, 0xfc, 0x5d, 0xfc, 0xa3, - 0xfb, 0x5d, 0xfc, 0xa3, 0xfc, 0x5d, 0xfd, 0xa3, 0xfb, 0x5d, 0xfd, 0xa3, - 0xfc, 0x5d, 0xfd, 0xa3, 0xfb, 0x5d, 0xfd, 0xa3, 0xfc, 0x5d, 0xfe, 0xa3, - 0xfb, 0x5d, 0xfe, 0xa3, 0xfc, 0x5d, 0xfe, 0xa3, 0xfb, 0x5d, 0xfe, 0xa3, - 0xfc, 0x5d, 0xfe, 0xa3, 0xfb, 0x5d, 0xff, 0xa3, 0xfc, 0x5d, 0xff, 0xa3, - 0xfb, 0x5d, 0x03, 0xab, 0x95, 0x5d, 0x0a, 0xad, 0x95, 0x5d, 0x0f, 0xab, - 0x95, 0x5d, 0x14, 0xad, 0x95, 0x5d, 0x17, 0xab, 0x95, 0x5d, 0x1b, 0xad, - 0x95, 0x5d, 0x1e, 0xab, 0x95, 0x5d, 0x20, 0xad, 0x95, 0x5d, 0x23, 0xab, - 0x95, 0x5d, 0x25, 0xad, 0x95, 0x5d, 0x27, 0xab, 0x95, 0x5d, 0x29, 0xad, - 0x95, 0x5d, 0x2b, 0xab, 0x95, 0x5d, 0x2d, 0xad, 0x95, 0x5d, 0x2f, 0xab, - 0x95, 0x5d, 0x31, 0xad, 0x95, 0x5d, 0x32, 0xab, 0x95, 0x5d, 0x34, 0xad, - 0x95, 0x5d, 0x35, 0xab, 0x95, 0x5d, 0x37, 0xad, 0x95, 0x5d, 0x38, 0xab, - 0x95, 0x5d, 0x3a, 0xad, 0x95, 0x5d, 0x3b, 0xab, 0x95, 0x5d, 0x3c, 0xad, - 0x95, 0x5d, 0x3e, 0xab, 0x95, 0x5d, 0x3f, 0xad, 0x95, 0x5d, 0x40, 0xab, - 0x95, 0x5d, 0x42, 0xad, 0x95, 0x5d, 0x43, 0xab, 0x95, 0x5d, 0x44, 0xad, - 0x95, 0x5d, 0x45, 0xab, 0x95, 0x5d, 0x46, 0xad, 0x95, 0x5d, 0x47, 0xab, - 0x95, 0x5d, 0x48, 0xad, 0x95, 0x5d, 0x49, 0xab, 0x95, 0x5d, 0x4a, 0xa8, - 0x96, 0x5d, 0x4b, 0xab, 0x95, 0x5d, 0x4c, 0xa8, 0x96, 0x5d, 0x4d, 0xab, - 0x95, 0x5d, 0x4e, 0xa8, 0x96, 0x5d, 0x4f, 0xab, 0x95, 0x5d, 0x50, 0xa8, - 0x96, 0x5d, 0x51, 0xab, 0x95, 0x5d, 0x52, 0xa8, 0x96, 0x5d, 0x53, 0xab, - 0x95, 0x5d, 0x54, 0xa8, 0x96, 0x5d, 0x55, 0xab, 0x95, 0x5d, 0x56, 0xa8, - 0x96, 0x5d, 0x57, 0xab, 0x95, 0x5d, 0x58, 0xa8, 0x96, 0x5d, 0x58, 0xab, - 0x95, 0x5d, 0x59, 0xa8, 0x96, 0x5d, 0x5a, 0xab, 0x95, 0x5d, 0x5b, 0xa8, - 0x96, 0x5d, 0x5c, 0xab, 0x95, 0x5d, 0x5d, 0xa8, 0x96, 0x5d, 0x5d, 0xab, - 0x95, 0x5d, 0x5e, 0xa8, 0x96, 0x5d, 0x5f, 0xab, 0x95, 0x5d, 0x60, 0xa8, - 0x96, 0x5d, 0x60, 0xab, 0x95, 0x5d, 0x61, 0xa8, 0x96, 0x5d, 0x62, 0xab, - 0x95, 0x5d, 0x63, 0xa8, 0x96, 0x5d, 0x63, 0xa5, 0x96, 0x5d, 0x64, 0xa8, - 0x96, 0x5d, 0x65, 0xa5, 0x96, 0x5d, 0x66, 0xa8, 0x96, 0x5d, 0x66, 0xa5, - 0x96, 0x5d, 0x67, 0xa8, 0x96, 0x5d, 0x68, 0xa5, 0x96, 0x5d, 0x68, 0xa8, - 0x96, 0x5d, 0x69, 0xa5, 0x96, 0x5d, 0x6a, 0xa8, 0x96, 0x5d, 0x6a, 0xa5, - 0x96, 0x5d, 0x6b, 0xa8, 0x96, 0x5d, 0x6c, 0xa5, 0x96, 0x5d, 0x6c, 0xa8, - 0x96, 0x5d, 0x6d, 0xa5, 0x96, 0x5d, 0x6e, 0xa8, 0x96, 0x5d, 0x6e, 0xa5, - 0x96, 0x5d, 0x6f, 0xa8, 0x96, 0x5d, 0x70, 0xa5, 0x96, 0x5d, 0x70, 0xa8, - 0x96, 0x5d, 0x71, 0xa5, 0x96, 0x5d, 0x72, 0xa8, 0x96, 0x5d, 0x72, 0xa5, - 0x96, 0x5d, 0x73, 0xa8, 0x96, 0x5d, 0x73, 0xa5, 0x96, 0x5d, 0x74, 0xa8, - 0x96, 0x5d, 0x75, 0xa5, 0x96, 0x5d, 0x75, 0xa8, 0x96, 0x5d, 0x76, 0xa5, - 0x96, 0x5d, 0x76, 0xa8, 0x96, 0x5d, 0x77, 0xa5, 0x96, 0x5d, 0x78, 0xa8, - 0x96, 0x5d, 0x78, 0xa5, 0x96, 0x5d, 0x79, 0xa8, 0x96, 0x5d, 0x79, 0xa5, - 0x96, 0x5d, 0x7a, 0xa8, 0x96, 0x5d, 0x7a, 0xa5, 0x96, 0x5d, 0x7b, 0xa8, - 0x96, 0x5d, 0x7c, 0xa5, 0x96, 0x5d, 0x7c, 0xa8, 0x96, 0x5d, 0x7d, 0xa5, - 0x96, 0x5d, 0x7d, 0xa8, 0x96, 0x5d, 0x7e, 0xa5, 0x96, 0x5d, 0x7e, 0xa8, - 0x96, 0x5d, 0x7f, 0xa5, 0x96, 0x5d, 0x7f, 0xa3, 0x97, 0x5d, 0x80, 0xa5, - 0x96, 0x5d, 0x81, 0xa3, 0x97, 0x5d, 0x81, 0xa5, 0x96, 0x5d, 0x82, 0xa3, - 0x97, 0x5d, 0x82, 0xa5, 0x96, 0x5d, 0x83, 0xa3, 0x97, 0x5d, 0x83, 0xa5, - 0x96, 0x5d, 0x84, 0xa3, 0x97, 0x5d, 0x84, 0xa5, 0x96, 0x5d, 0x85, 0xa3, - 0x97, 0x5d, 0x85, 0xa5, 0x96, 0x5d, 0x86, 0xa3, 0x97, 0x5d, 0x86, 0xa5, - 0x96, 0x5d, 0x87, 0xa3, 0x97, 0x5d, 0x87, 0xa5, 0x96, 0x5d, 0x88, 0xa3, - 0x97, 0x5d, 0x88, 0xa5, 0x96, 0x5d, 0x89, 0xa3, 0x97, 0x5d, 0x89, 0xa5, - 0x96, 0x5d, 0x8a, 0xa3, 0x97, 0x5d, 0x8a, 0xa5, 0x96, 0x5d, 0x8b, 0xa3, - 0x97, 0x5d, 0x8b, 0xa5, 0x96, 0x5d, 0x8c, 0xa3, 0x97, 0x5d, 0x8c, 0xa5, - 0x96, 0x5d, 0x8d, 0xa3, 0x97, 0x5d, 0x8d, 0xa5, 0x96, 0x5d, 0x8e, 0xa3, - 0x97, 0x5d, 0x8e, 0xa5, 0x96, 0x5d, 0x8e, 0xa3, 0x97, 0x5d, 0x8f, 0xa5, - 0x96, 0x5d, 0x8f, 0xa3, 0x97, 0x5d, 0x90, 0xa5, 0x96, 0x5d, 0x90, 0xa3, - 0x97, 0x5d, 0x91, 0xa5, 0x96, 0x5d, 0x91, 0xa3, 0x97, 0x5d, 0x92, 0xa5, - 0x96, 0x5d, 0x92, 0xa3, 0x97, 0x5d, 0x93, 0xa5, 0x96, 0x5d, 0x93, 0xa3, - 0x97, 0x5d, 0x94, 0xa3, 0x97, 0x5d, 0x94, 0xa3, 0x97, 0x5d, 0x94, 0xa3, - 0x97, 0x5d, 0x95, 0xa3, 0x97, 0x5d, 0x95, 0xa3, 0x97, 0x5d, 0x96, 0xa3, - 0x97, 0x5d, 0x96, 0xa3, 0x97, 0x5d, 0x97, 0xa3, 0x97, 0x5c, 0x96, 0xa3, - 0x97, 0x5d, 0x97, 0xa3, 0x98, 0x5c, 0x96, 0xa3, 0x98, 0x5d, 0x97, 0xa3, - 0x98, 0x5c, 0x9a, 0xa3, 0x99, 0x5d, 0x9a, 0xa3, 0x99, 0x5e, 0x9a, 0xa3, - 0x9a, 0x5d, 0x9b, 0xa3, 0x9a, 0x5d, 0x9a, 0xa3, 0x9a, 0x5d, 0x9b, 0xa3, - 0x9a, 0x5d, 0x9b, 0xa3, 0x9a, 0x5d, 0x9c, 0xa3, 0x9a, 0x5d, 0x9c, 0xa1, - 0x9a, 0x5d, 0x9d, 0xa3, 0x9a, 0x5d, 0x9d, 0xa1, 0x9a, 0x5d, 0x9d, 0xa3, - 0x9a, 0x5d, 0x9e, 0xa1, 0x9a, 0x5d, 0x9e, 0xa3, 0x9a, 0x5d, 0x9f, 0xa1, - 0x9a, 0x5d, 0x9f, 0xa3, 0x9a, 0x5d, 0x9f, 0xa1, 0x9a, 0x5d, 0xa0, 0xa3, - 0x9a, 0x5d, 0xa0, 0xa1, 0x9a, 0x5d, 0xa1, 0xa3, 0x9a, 0x5d, 0xa1, 0xa1, - 0x9a, 0x5d, 0xa1, 0xa3, 0x9a, 0x5d, 0xa2, 0xa1, 0x9a, 0x5d, 0xa2, 0xa3, - 0x9a, 0x5d, 0xa3, 0xa1, 0x9a, 0x5d, 0xa3, 0xa3, 0x9a, 0x5d, 0xa3, 0xa1, - 0x9a, 0x5d, 0xa4, 0xa3, 0x9a, 0x5d, 0xa4, 0xa1, 0x9a, 0x5d, 0xa5, 0x9f, - 0x9b, 0x5d, 0xa5, 0xa1, 0x9a, 0x5d, 0xa5, 0x9f, 0x9b, 0x5d, 0xa6, 0xa1, - 0x9a, 0x5d, 0xa6, 0x9f, 0x9b, 0x5d, 0xa6, 0xa1, 0x9a, 0x5d, 0xa7, 0x9f, - 0x9b, 0x5d, 0xa7, 0xa1, 0x9a, 0x5d, 0xa8, 0xaf, 0xa5, 0x5d, 0xa8, 0xaf, - 0xa5, 0x5d, 0xa8, 0xaf, 0xa5, 0x5d, 0xa9, 0xaf, 0xa5, 0x5d, 0xa9, 0xaf, - 0xa5, 0x5d, 0xaa, 0xb0, 0xaa, 0x5d, 0xaa, 0xb0, 0xa9, 0x5d, 0xaa, 0xb0, - 0xaa, 0x5d, 0xab, 0xb0, 0xa9, 0x5d, 0xab, 0xb0, 0xaa, 0x5d, 0xab, 0xb0, - 0xa9, 0x5d, 0xac, 0xb0, 0xaa, 0x5d, 0xac, 0xb0, 0xa9, 0x5d, 0xac, 0xb0, - 0xaa, 0x5d, 0xad, 0xb0, 0xa9, 0x5d, 0xad, 0xb0, 0xaa, 0x5d, 0xae, 0xb0, - 0xae, 0x5d, 0xae, 0xb0, 0xaa, 0x5d, 0xae, 0xb0, 0xae, 0x5d, 0xaf, 0xb0, - 0xad, 0x5d, 0xaf, 0xb0, 0xae, 0x5d, 0xaf, 0xb0, 0xad, 0x5d, 0xb0, 0xb0, - 0xae, 0x5d, 0xb0, 0xb0, 0xad, 0x5d, 0xb0, 0xb0, 0xae, 0x5d, 0xb1, 0xb0, - 0xad, 0x5d, 0xb1, 0xb0, 0xae, 0x5d, 0xb2, 0xb0, 0xad, 0x5d, 0xb2, 0xb0, - 0xae, 0x5d, 0xb2, 0xb1, 0xb2, 0x5d, 0xb3, 0xb1, 0xb1, 0x5d, 0xb3, 0xb1, - 0xb2, 0x5d, 0xb3, 0xb1, 0xb1, 0x5d, 0xb4, 0xb1, 0xb2, 0x5d, 0xb4, 0xb1, - 0xb1, 0x5d, 0xb4, 0xb1, 0xb2, 0x5d, 0xb5, 0x93, 0xb8, 0x5d, 0xb5, 0x93, - 0xb8, 0x5d, 0xb5, 0x93, 0xb8, 0x5d, 0xb6, 0x93, 0xb8, 0x5d, 0xb6, 0x93, - 0xb8, 0x5d, 0xb6, 0x93, 0xb8, 0x5d, 0xb7, 0x93, 0xb8, 0x5d, 0xb7, 0x93, - 0xb8, 0x5d, 0xb7, 0x93, 0xb8, 0x5d, 0xb8, 0x94, 0xbc, 0x5d, 0xb8, 0x94, - 0xbc, 0x5d, 0xb8, 0x94, 0xbc, 0x5d, 0xb9, 0x94, 0xbc, 0x5d, 0xb9, 0x94, - 0xbc, 0x5d, 0xb9, 0x94, 0xbc, 0x5d, 0xba, 0x94, 0xbc, 0x5d, 0xba, 0x94, - 0xbc, 0x5d, 0xba, 0x94, 0xbc, 0x5d, 0xbb, 0x94, 0xbc, 0x5d, 0xbb, 0x94, - 0xbc, 0x5d, 0xbb, 0x95, 0xbf, 0x5d, 0xbc, 0x94, 0xbc, 0x5d, 0xbc, 0x95, - 0xbf, 0x5d, 0xbc, 0x95, 0xc0, 0x5d, 0xbd, 0x95, 0xbf, 0x5d, 0xbd, 0x95, - 0xc0, 0x5d, 0xbd, 0x95, 0xbf, 0x5d, 0xbe, 0x95, 0xc0, 0x5d, 0xbe, 0x95, - 0xbf, 0x5d, 0xbe, 0x95, 0xc0, 0x5d, 0xbf, 0x95, 0xbf, 0x5d, 0xbf, 0x95, - 0xc0, 0x5d, 0xbf, 0x95, 0xbf, 0x5d, 0xc0, 0x96, 0xc3, 0x5d, 0xc0, 0x96, - 0xc3, 0x5d, 0xc0, 0x96, 0xc3, 0x5d, 0xc1, 0x96, 0xc3, 0x5d, 0xc1, 0x96, - 0xc3, 0x5d, 0xc1, 0x96, 0xc3, 0x5d, 0xc1, 0x96, 0xc3, 0x5d, 0xc2, 0x96, - 0xc3, 0x5d, 0xc2, 0x96, 0xc3, 0x5d, 0xc2, 0x96, 0xc3, 0x5d, 0xc3, 0x96, - 0xc3, 0x5d, 0xc3, 0x96, 0xc3, 0x5d, 0xc3, 0x97, 0xc6, 0x5d, 0xc4, 0x97, - 0xc7, 0x5d, 0xc4, 0x97, 0xc6, 0x5d, 0xc4, 0x97, 0xc7, 0x5d, 0xc5, 0x97, - 0xc6, 0x5d, 0xc5, 0x97, 0xc7, 0x5d, 0xc5, 0x97, 0xc6, 0x5d, 0xc6, 0x97, - 0xc7, 0x5d, 0xc6, 0x97, 0xc6, 0x5d, 0xc6, 0x97, 0xc7, 0x5d, 0xc6, 0x97, - 0xc6, 0x5d, 0xc7, 0x98, 0xca, 0x5d, 0xc7, 0x98, 0xca, 0x5d, 0xc7, 0x98, - 0xca, 0x5d, 0xc8, 0x98, 0xca, 0x5d, 0xc8, 0x98, 0xca, 0x5d, 0xc8, 0x98, - 0xca, 0x5d, 0xc9, 0x98, 0xca, 0x5d, 0xc9, 0x98, 0xca, 0x5d, 0xc9, 0xa7, - 0xd1, 0x5d, 0xc9, 0xa5, 0xd1, 0x5d, 0xca, 0xa3, 0xd1, 0x5d, 0xca, 0xa5, - 0xd1, 0x5d, 0xca, 0xa3, 0xd1, 0x5d, 0xcb, 0xa5, 0xd1, 0x5d, 0xcb, 0xa3, - 0xd1, 0x5d, 0xcb, 0xa5, 0xd1, 0x5d, 0xcc, 0xa3, 0xd1, 0x5d, 0xcc, 0xa5, - 0xd1, 0x5d, 0xcc, 0xa3, 0xd1, 0x5d, 0xcc, 0xa5, 0xd1, 0x5d, 0xcd, 0xa3, - 0xd1, 0x5d, 0xcd, 0xa5, 0xd1, 0x5d, 0xcd, 0xa3, 0xd1, 0x5d, 0xce, 0xa5, - 0xd1, 0x5d, 0xce, 0xa3, 0xd1, 0x5d, 0xce, 0xa5, 0xd1, 0x5d, 0xce, 0xa3, - 0xd1, 0x5d, 0xcf, 0xa5, 0xd1, 0x5d, 0xcf, 0xa3, 0xd1, 0x5d, 0xcf, 0xa3, - 0xd2, 0x5d, 0xd0, 0xa3, 0xd1, 0x5d, 0xd0, 0xa3, 0xd2, 0x5d, 0xd0, 0xa3, - 0xd1, 0x5d, 0xd0, 0xa3, 0xd2, 0x5d, 0xd1, 0xa3, 0xd1, 0x5d, 0xd1, 0xa3, - 0xd2, 0x5d, 0xd1, 0xa3, 0xd1, 0x5c, 0xd1, 0xa3, 0xd2, 0x5d, 0xd1, 0xa3, - 0xd2, 0x5c, 0xd1, 0xa3, 0xd2, 0x5d, 0xd1, 0xa3, 0xd2, 0x5c, 0xd1, 0xa3, - 0xd3, 0x5d, 0xd1, 0xa3, 0xd3, 0x5c, 0xd1, 0xa3, 0xd3, 0x5d, 0xd1, 0xa3, - 0xd4, 0x5c, 0xd1, 0xa3, 0xd4, 0x5d, 0xd1, 0xa3, 0xd4, 0x5c, 0xd1, 0xa3, - 0xd4, 0x5d, 0xd1, 0xa3, 0xd5, 0x5c, 0xd1, 0xa3, 0xd5, 0x5d, 0xd1, 0xa3, - 0xd5, 0x5c, 0xd1, 0xa3, 0xd6, 0x5d, 0xd1, 0xa3, 0xd6, 0x5c, 0xd2, 0xa3, - 0xd6, 0x59, 0xd1, 0xa3, 0xd6, 0x5c, 0xd2, 0xa3, 0xd7, 0x59, 0xd1, 0xa3, - 0xd7, 0x5c, 0xd2, 0xa3, 0xd7, 0x59, 0xd1, 0xa3, 0xd7, 0x5c, 0xd2, 0xa3, - 0xd8, 0x59, 0xd1, 0xa3, 0xd8, 0x5c, 0xd2, 0xa3, 0xd8, 0x59, 0xd1, 0xa3, - 0xd9, 0x5c, 0xd2, 0xa3, 0xd9, 0x59, 0xd1, 0xa3, 0xd9, 0x5c, 0xd2, 0xa3, - 0xd9, 0x59, 0xd1, 0xa3, 0xda, 0x5c, 0xdb, 0xa3, 0xda, 0x4e, 0xdc, 0xa3, - 0xda, 0x4e, 0xdb, 0xa3, 0xda, 0x4e, 0xdc, 0xa3, 0xdb, 0x4e, 0xdb, 0xa3, - 0xdb, 0x4e, 0xdc, 0xa3, 0xdb, 0x4e, 0xde, 0xa3, 0xdb, 0x4f, 0xde, 0xa3, - 0xdc, 0x4f, 0xde, 0xa3, 0xdc, 0x4f, 0xde, 0xa3, 0xdc, 0x4f, 0xde, 0xa3, - 0xdd, 0x4f, 0xde, 0xa3, 0xdd, 0x4f, 0xde, 0xa3, 0xdd, 0x4f, 0xde, 0xa3, - 0xdd, 0x4f, 0xde, 0xa3, 0xde, 0x4f, 0xe1, 0xa3, 0xde, 0x50, 0xe1, 0xa3, - 0xde, 0x50, 0xe1, 0xa3, 0xde, 0x50, 0xe1, 0xa3, 0xdf, 0x50, 0xe1, 0xa3, - 0xdf, 0x50, 0xe1, 0xa3, 0xdf, 0x50, 0xe1, 0xa3, 0xdf, 0x50, 0xe1, 0xa3, - 0xe0, 0x50, 0xe1, 0xa3, 0xe0, 0x50, 0xe3, 0xa3, 0xe0, 0x51, 0xe1, 0xa3, - 0xe1, 0x50, 0xe3, 0xa3, 0xe1, 0x51, 0xe3, 0xa3, 0xe1, 0x51, 0xe3, 0xa3, - 0xe1, 0x51, 0xe3, 0xa3, 0xe2, 0x51, 0xe3, 0xa3, 0xe2, 0x51, 0xe3, 0xa3, - 0xe2, 0x51, 0xe3, 0xa3, 0xe2, 0x51, 0xe3, 0xa3, 0xe3, 0x51, 0xe3, 0xa3, - 0xe3, 0x51, 0xe3, 0xa3, 0xe3, 0x51, 0xe5, 0xa3, 0xe3, 0x52, 0xe6, 0xa3, - 0xe4, 0x52, 0xe5, 0xa3, 0xe4, 0x52, 0xe6, 0xa3, 0xe4, 0x52, 0xe5, 0xa3, - 0xe4, 0x52, 0xe6, 0xa3, 0xe5, 0x52, 0xe5, 0xa3, 0xe5, 0x52, 0xe6, 0xa3, - 0xe5, 0x52, 0xe5, 0xa3, 0xe5, 0x52, 0xe8, 0xa3, 0xe6, 0x53, 0xe8, 0xa3, - 0xe6, 0x53, 0xe8, 0xa3, 0xe6, 0x53, 0xe8, 0xa3, 0xe6, 0x53, 0xe8, 0xa3, - 0xe7, 0x53, 0xe8, 0xa3, 0xe7, 0x53, 0xe8, 0xa3, 0xe7, 0x53, 0xe8, 0xa3, - 0xe7, 0x53, 0xe8, 0xa3, 0xe8, 0x53, 0xe8, 0xa3, 0xe8, 0x53, 0xea, 0xa3, - 0xe8, 0x54, 0xea, 0xa3, 0xe8, 0x54, 0xea, 0xa3, 0xe9, 0x54, 0xea, 0xa3, - 0xe9, 0x54, 0xea, 0xa3, 0xe9, 0x54, 0xea, 0xa3, 0xe9, 0x54, 0xea, 0xa3, - 0xea, 0x54, 0xea, 0xa3, 0xea, 0x54, 0xec, 0xa3, 0xea, 0x65, 0xec, 0xa3, - 0xea, 0x55, 0xec, 0xa3, 0xeb, 0x65, 0xec, 0xa3, 0xeb, 0x55, 0xec, 0xa3, - 0xeb, 0x65, 0xec, 0xa3, 0xeb, 0x55, 0xec, 0xa3, 0xec, 0x65, 0xec, 0xa3, - 0xec, 0x55, 0xec, 0xa3, 0xec, 0x65, 0xec, 0xa3, 0xec, 0x55, 0xec, 0xa3, - 0xec, 0x55, 0xed, 0xa3, 0xed, 0x55, 0xee, 0xa3, 0xed, 0x56, 0xef, 0xa3, - 0xed, 0x56, 0xee, 0xa3, 0xed, 0x56, 0xef, 0xa3, 0xee, 0x56, 0xee, 0xa3, - 0xee, 0x56, 0xef, 0xa3, 0xee, 0x56, 0xee, 0xa3, 0xee, 0x56, 0xef, 0xa3, - 0xef, 0x56, 0xef, 0xa3, 0xef, 0x56, 0xef, 0xa3, 0xef, 0x56, 0xf1, 0xa3, - 0xef, 0x57, 0xf1, 0xa3, 0xf0, 0x57, 0xf1, 0xa3, 0xf0, 0x57, 0xf1, 0xa3, - 0xf0, 0x57, 0xf1, 0xa3, 0xf0, 0x57, 0xf1, 0xa3, 0xf1, 0x57, 0xf1, 0xa3, - 0xf1, 0x57, 0xf1, 0xa3, 0xf1, 0x57, 0xf1, 0xa3, 0xf1, 0x57, 0xf3, 0xa3, - 0xf2, 0x58, 0xf3, 0xa3, 0xf2, 0x58, 0xf3, 0xa3, 0xf2, 0x58, 0xf3, 0xa3, - 0xf2, 0x58, 0xf3, 0xa3, 0xf2, 0x58, 0xf3, 0xa3, 0xf3, 0x58, 0xf3, 0xa3, - 0xf3, 0x58, 0xf3, 0xa3, 0xf3, 0x58, 0xf3, 0xa3, 0xf3, 0x58, 0xf4, 0xa3, - 0xf4, 0x58, 0xf4, 0xa3, 0xf4, 0x58, 0xf5, 0xa3, 0xf4, 0x59, 0xf5, 0xa3, - 0xf4, 0x59, 0xf5, 0xa3, 0xf5, 0x59, 0xf5, 0xa3, 0xf5, 0x59, 0xf5, 0xa3, - 0xf5, 0x59, 0xf5, 0xa3, 0xf5, 0x59, 0xf5, 0xa3, 0xf5, 0x59, 0xf6, 0xa3, - 0xf6, 0x59, 0xf6, 0xa3, 0xf6, 0x59, 0xf6, 0xa3, 0xf6, 0x59, 0xf7, 0xa3, - 0xf6, 0x5a, 0xf8, 0xa3, 0xf7, 0x5a, 0xf7, 0xa3, 0xf7, 0x5a, 0xf8, 0xa3, - 0xf7, 0x5a, 0xf7, 0xa3, 0xf7, 0x5a, 0xf8, 0xa3, 0xf8, 0x5a, 0xf8, 0xa3, - 0xf8, 0x5a, 0xf8, 0xa3, 0xf8, 0x5a, 0xf8, 0xa3, 0xf8, 0x5a, 0xf9, 0xa3, - 0xf8, 0x5b, 0xfa, 0xa3, 0xf9, 0x5b, 0xf9, 0xa3, 0xf9, 0x5b, 0xfa, 0xa3, - 0xf9, 0x5b, 0xf9, 0xa3, 0xf9, 0x5b, 0xfa, 0xa3, 0xfa, 0x5b, 0xfa, 0xa3, - 0xfa, 0x5b, 0xfa, 0xa3, 0xfa, 0x5b, 0xfa, 0xa3, 0xfa, 0x5b, 0xfa, 0xa3, - 0xfa, 0x5b, 0xfb, 0xa3, 0xfb, 0x5b, 0xfb, 0xa3, 0xfb, 0x5c, 0xfc, 0xa3, - 0xfb, 0x5c, 0xfb, 0xa3, 0xfb, 0x5c, 0xfc, 0xa3, 0xfc, 0x5c, 0xfc, 0xa3, - 0xfb, 0x5d, 0xfc, 0xa3, 0xfc, 0x5d, 0xfc, 0xa3, 0xfb, 0x5d, 0xfc, 0xa3, - 0xfc, 0x5d, 0xfd, 0xa3, 0xfb, 0x5d, 0xfd, 0xa3, 0xfc, 0x5d, 0xfd, 0xa3, - 0xfb, 0x5d, 0xfd, 0xa3, 0xfc, 0x5d, 0xfe, 0xa3, 0xfb, 0x5d, 0xfe, 0xa3, - 0xfc, 0x5d, 0xfe, 0xa3, 0xfb, 0x5d, 0xfe, 0xa3, 0xfc, 0x5d, 0xfe, 0xa3, - 0xfb, 0x5d, 0xff, 0xa3, 0xfc, 0x5d, 0xff, 0xa3, 0xfb, 0x5d, 0x03, 0xaa, - 0x95, 0x5e, 0x0a, 0xad, 0x95, 0x5e, 0x0f, 0xaa, 0x95, 0x5e, 0x14, 0xad, - 0x95, 0x5e, 0x17, 0xaa, 0x95, 0x5e, 0x1b, 0xad, 0x95, 0x5e, 0x1e, 0xaa, - 0x95, 0x5e, 0x20, 0xad, 0x95, 0x5e, 0x23, 0xaa, 0x95, 0x5e, 0x25, 0xad, - 0x95, 0x5e, 0x27, 0xaa, 0x95, 0x5e, 0x29, 0xad, 0x95, 0x5e, 0x2b, 0xaa, - 0x95, 0x5e, 0x2d, 0xad, 0x95, 0x5e, 0x2f, 0xaa, 0x95, 0x5e, 0x31, 0xad, - 0x95, 0x5e, 0x32, 0xaa, 0x95, 0x5e, 0x34, 0xad, 0x95, 0x5e, 0x35, 0xaa, - 0x95, 0x5e, 0x37, 0xad, 0x95, 0x5e, 0x38, 0xaa, 0x95, 0x5e, 0x3a, 0xad, - 0x95, 0x5e, 0x3b, 0xaa, 0x95, 0x5e, 0x3c, 0xa8, 0x96, 0x5e, 0x3e, 0xaa, - 0x95, 0x5e, 0x3f, 0xa8, 0x96, 0x5e, 0x40, 0xaa, 0x95, 0x5e, 0x42, 0xa8, - 0x96, 0x5e, 0x43, 0xaa, 0x95, 0x5e, 0x44, 0xa8, 0x96, 0x5e, 0x45, 0xaa, - 0x95, 0x5e, 0x46, 0xa8, 0x96, 0x5e, 0x47, 0xaa, 0x95, 0x5e, 0x48, 0xa8, - 0x96, 0x5e, 0x49, 0xaa, 0x95, 0x5e, 0x4a, 0xa8, 0x96, 0x5e, 0x4b, 0xaa, - 0x95, 0x5e, 0x4c, 0xa8, 0x96, 0x5e, 0x4d, 0xaa, 0x95, 0x5e, 0x4e, 0xa8, - 0x96, 0x5e, 0x4f, 0xaa, 0x95, 0x5e, 0x50, 0xa8, 0x96, 0x5e, 0x51, 0xaa, - 0x95, 0x5e, 0x52, 0xa8, 0x96, 0x5e, 0x53, 0xaa, 0x95, 0x5e, 0x54, 0xa8, - 0x96, 0x5e, 0x55, 0xaa, 0x95, 0x5e, 0x56, 0xa8, 0x96, 0x5e, 0x57, 0xaa, - 0x95, 0x5e, 0x58, 0xa8, 0x96, 0x5e, 0x58, 0xaa, 0x95, 0x5e, 0x59, 0xa8, - 0x96, 0x5e, 0x5a, 0xaa, 0x95, 0x5e, 0x5b, 0xa8, 0x96, 0x5e, 0x5c, 0xaa, - 0x95, 0x5e, 0x5d, 0xa8, 0x96, 0x5e, 0x5d, 0xaa, 0x95, 0x5e, 0x5e, 0xa8, - 0x96, 0x5e, 0x5f, 0xaa, 0x95, 0x5e, 0x60, 0xa8, 0x96, 0x5e, 0x60, 0xaa, - 0x95, 0x5e, 0x61, 0xa8, 0x96, 0x5e, 0x62, 0xaa, 0x95, 0x5e, 0x63, 0xa8, - 0x96, 0x5e, 0x63, 0xaa, 0x95, 0x5e, 0x64, 0xa8, 0x96, 0x5e, 0x65, 0xaa, - 0x95, 0x5e, 0x66, 0xa8, 0x96, 0x5e, 0x66, 0xaa, 0x95, 0x5e, 0x67, 0xa8, - 0x96, 0x5e, 0x68, 0xaa, 0x95, 0x5e, 0x68, 0xa8, 0x96, 0x5e, 0x69, 0xaa, - 0x95, 0x5e, 0x6a, 0xa8, 0x96, 0x5e, 0x6a, 0xaa, 0x95, 0x5e, 0x6b, 0xa8, - 0x96, 0x5e, 0x6c, 0xaa, 0x95, 0x5e, 0x6c, 0xa8, 0x96, 0x5e, 0x6d, 0xaa, - 0x95, 0x5e, 0x6e, 0xa8, 0x96, 0x5e, 0x6e, 0xaa, 0x95, 0x5e, 0x6f, 0xa8, - 0x96, 0x5e, 0x70, 0xaa, 0x95, 0x5e, 0x70, 0xa8, 0x96, 0x5e, 0x71, 0xa6, - 0x96, 0x5e, 0x72, 0xa8, 0x96, 0x5e, 0x72, 0xa6, 0x96, 0x5e, 0x73, 0xa8, - 0x96, 0x5e, 0x73, 0xa6, 0x96, 0x5e, 0x74, 0xa8, 0x96, 0x5e, 0x75, 0xa6, - 0x96, 0x5e, 0x75, 0xa8, 0x96, 0x5e, 0x76, 0xa6, 0x96, 0x5e, 0x76, 0xa8, - 0x96, 0x5e, 0x77, 0xa6, 0x96, 0x5e, 0x78, 0xa8, 0x96, 0x5e, 0x78, 0xa6, - 0x96, 0x5e, 0x79, 0xa8, 0x96, 0x5e, 0x79, 0xa6, 0x96, 0x5e, 0x7a, 0xa8, - 0x96, 0x5e, 0x7a, 0xa6, 0x96, 0x5e, 0x7b, 0xa8, 0x96, 0x5e, 0x7c, 0xa6, - 0x96, 0x5e, 0x7c, 0xa8, 0x96, 0x5e, 0x7d, 0xa6, 0x96, 0x5e, 0x7d, 0xa8, - 0x96, 0x5e, 0x7e, 0xa6, 0x96, 0x5e, 0x7e, 0xa8, 0x96, 0x5e, 0x7f, 0xa6, - 0x96, 0x5e, 0x7f, 0xa8, 0x96, 0x5e, 0x80, 0xa6, 0x96, 0x5e, 0x81, 0xa8, - 0x96, 0x5e, 0x81, 0xa6, 0x96, 0x5e, 0x82, 0xa8, 0x96, 0x5e, 0x82, 0xa6, - 0x96, 0x5e, 0x83, 0xa8, 0x96, 0x5e, 0x83, 0xa6, 0x96, 0x5e, 0x84, 0xa8, - 0x96, 0x5e, 0x84, 0xa6, 0x96, 0x5e, 0x85, 0xa8, 0x96, 0x5e, 0x85, 0xa6, - 0x96, 0x5e, 0x86, 0xa3, 0x97, 0x5e, 0x86, 0xa6, 0x96, 0x5e, 0x87, 0xa3, - 0x97, 0x5e, 0x87, 0xa6, 0x96, 0x5e, 0x88, 0xa3, 0x97, 0x5e, 0x88, 0xa6, - 0x96, 0x5e, 0x89, 0xa3, 0x97, 0x5e, 0x89, 0xa6, 0x96, 0x5e, 0x8a, 0xa3, - 0x97, 0x5e, 0x8a, 0xa6, 0x96, 0x5e, 0x8b, 0xa3, 0x97, 0x5e, 0x8b, 0xa6, - 0x96, 0x5e, 0x8c, 0xa3, 0x97, 0x5e, 0x8c, 0xa6, 0x96, 0x5e, 0x8d, 0xa3, - 0x97, 0x5e, 0x8d, 0xa6, 0x96, 0x5e, 0x8e, 0xa3, 0x97, 0x5e, 0x8e, 0xa6, - 0x96, 0x5e, 0x8e, 0xa3, 0x97, 0x5e, 0x8f, 0xa6, 0x96, 0x5e, 0x8f, 0xa3, - 0x97, 0x5e, 0x90, 0xa6, 0x96, 0x5e, 0x90, 0xa3, 0x97, 0x5e, 0x91, 0xa6, - 0x96, 0x5e, 0x91, 0xa3, 0x97, 0x5e, 0x92, 0xa6, 0x96, 0x5e, 0x92, 0xa3, - 0x97, 0x5e, 0x93, 0xa6, 0x96, 0x5e, 0x93, 0xa3, 0x97, 0x5e, 0x94, 0xa3, - 0x97, 0x5e, 0x94, 0xa3, 0x97, 0x5e, 0x94, 0xa3, 0x97, 0x5e, 0x95, 0xa3, - 0x97, 0x5e, 0x95, 0xa3, 0x97, 0x5e, 0x96, 0xa3, 0x97, 0x5e, 0x96, 0xa3, - 0x97, 0x5e, 0x97, 0xa3, 0x97, 0x5d, 0x96, 0xa3, 0x97, 0x5e, 0x97, 0xa3, - 0x98, 0x5d, 0x96, 0xa3, 0x98, 0x5e, 0x97, 0xa3, 0x98, 0x5d, 0x9a, 0xa3, - 0x99, 0x5e, 0x9a, 0xa3, 0x99, 0x5f, 0x9a, 0xa3, 0x9a, 0x5e, 0x9b, 0xa3, - 0x9a, 0x5e, 0x9a, 0xa3, 0x9a, 0x5e, 0x9b, 0xa3, 0x9a, 0x5e, 0x9b, 0xa3, - 0x9a, 0x5e, 0x9c, 0xa3, 0x9a, 0x5e, 0x9c, 0xa3, 0x9a, 0x5e, 0x9d, 0xa3, - 0x9a, 0x5e, 0x9d, 0xa3, 0x9a, 0x5e, 0x9d, 0xa3, 0x9a, 0x5e, 0x9e, 0xa1, - 0x9a, 0x5e, 0x9e, 0xa3, 0x9a, 0x5e, 0x9f, 0xa1, 0x9a, 0x5e, 0x9f, 0xa3, - 0x9a, 0x5e, 0x9f, 0xa1, 0x9a, 0x5e, 0xa0, 0xa3, 0x9a, 0x5e, 0xa0, 0xa1, - 0x9a, 0x5e, 0xa1, 0xa3, 0x9a, 0x5e, 0xa1, 0xa1, 0x9a, 0x5e, 0xa1, 0xa3, - 0x9a, 0x5e, 0xa2, 0xa1, 0x9a, 0x5e, 0xa2, 0xa3, 0x9a, 0x5e, 0xa3, 0xa1, - 0x9a, 0x5e, 0xa3, 0xa3, 0x9a, 0x5e, 0xa3, 0xa1, 0x9a, 0x5e, 0xa4, 0xa3, - 0x9a, 0x5e, 0xa4, 0xa1, 0x9a, 0x5e, 0xa5, 0xa3, 0x9a, 0x5e, 0xa5, 0xa1, - 0x9a, 0x5e, 0xa5, 0xa3, 0x9a, 0x5e, 0xa6, 0xa1, 0x9a, 0x5e, 0xa6, 0xa3, - 0x9a, 0x5e, 0xa6, 0xa1, 0x9a, 0x5e, 0xa7, 0xaf, 0xa3, 0x5e, 0xa7, 0xaf, - 0xa7, 0x5e, 0xa8, 0xaf, 0xa8, 0x5e, 0xa8, 0xaf, 0xa7, 0x5e, 0xa8, 0xaf, - 0xa8, 0x5e, 0xa9, 0xaf, 0xa7, 0x5e, 0xa9, 0xaf, 0xa8, 0x5e, 0xaa, 0xaf, - 0xa7, 0x5e, 0xaa, 0xaf, 0xa8, 0x5e, 0xaa, 0xaf, 0xa7, 0x5e, 0xab, 0xaf, - 0xa8, 0x5e, 0xab, 0xaf, 0xa7, 0x5e, 0xab, 0xaf, 0xa8, 0x5e, 0xac, 0xb0, - 0xac, 0x5e, 0xac, 0xb0, 0xab, 0x5e, 0xac, 0xb0, 0xac, 0x5e, 0xad, 0xb0, - 0xab, 0x5e, 0xad, 0xb0, 0xac, 0x5e, 0xae, 0xb0, 0xab, 0x5e, 0xae, 0xb0, - 0xac, 0x5e, 0xae, 0xb0, 0xab, 0x5e, 0xaf, 0xb0, 0xac, 0x5e, 0xaf, 0xb0, - 0xab, 0x5e, 0xaf, 0xb0, 0xac, 0x5e, 0xb0, 0xb1, 0xb0, 0x5e, 0xb0, 0xb0, - 0xac, 0x5e, 0xb0, 0xb1, 0xb0, 0x5e, 0xb1, 0xb1, 0xaf, 0x5e, 0xb1, 0xb1, - 0xb0, 0x5e, 0xb2, 0xb1, 0xaf, 0x5e, 0xb2, 0xb1, 0xb0, 0x5e, 0xb2, 0xb1, - 0xaf, 0x5e, 0xb3, 0xb1, 0xb0, 0x5e, 0xb3, 0xb1, 0xaf, 0x5e, 0xb3, 0xb1, - 0xb0, 0x5e, 0xb4, 0xb1, 0xaf, 0x5e, 0xb4, 0xb1, 0xb0, 0x5e, 0xb4, 0xb2, - 0xb4, 0x5e, 0xb5, 0xb2, 0xb3, 0x5e, 0xb5, 0xb2, 0xb4, 0x5e, 0xb5, 0xb2, - 0xb3, 0x5e, 0xb6, 0xb2, 0xb4, 0x5e, 0xb6, 0xb2, 0xb3, 0x5e, 0xb6, 0xb2, - 0xb4, 0x5e, 0xb7, 0x94, 0xba, 0x5e, 0xb7, 0x94, 0xba, 0x5e, 0xb7, 0x94, - 0xba, 0x5e, 0xb8, 0x94, 0xba, 0x5e, 0xb8, 0x94, 0xba, 0x5e, 0xb8, 0x94, - 0xba, 0x5e, 0xb9, 0x94, 0xba, 0x5e, 0xb9, 0x94, 0xba, 0x5e, 0xb9, 0x94, - 0xba, 0x5e, 0xba, 0x94, 0xbe, 0x5e, 0xba, 0x94, 0xbe, 0x5e, 0xba, 0x94, - 0xbe, 0x5e, 0xbb, 0x94, 0xbe, 0x5e, 0xbb, 0x94, 0xbe, 0x5e, 0xbb, 0x94, - 0xbe, 0x5e, 0xbc, 0x94, 0xbe, 0x5e, 0xbc, 0x94, 0xbe, 0x5e, 0xbc, 0x94, - 0xbe, 0x5e, 0xbd, 0x94, 0xbe, 0x5e, 0xbd, 0x94, 0xbe, 0x5e, 0xbd, 0x95, - 0xc1, 0x5e, 0xbe, 0x94, 0xbe, 0x5e, 0xbe, 0x95, 0xc1, 0x5e, 0xbe, 0x95, - 0xc1, 0x5e, 0xbf, 0x95, 0xc1, 0x5e, 0xbf, 0x95, 0xc1, 0x5e, 0xbf, 0x95, - 0xc1, 0x5e, 0xc0, 0x95, 0xc1, 0x5e, 0xc0, 0x95, 0xc1, 0x5e, 0xc0, 0x95, - 0xc1, 0x5e, 0xc1, 0x95, 0xc1, 0x5e, 0xc1, 0x95, 0xc1, 0x5e, 0xc1, 0x95, - 0xc1, 0x5e, 0xc1, 0x96, 0xc5, 0x5e, 0xc2, 0x96, 0xc5, 0x5e, 0xc2, 0x96, - 0xc5, 0x5e, 0xc2, 0x96, 0xc5, 0x5e, 0xc3, 0x96, 0xc5, 0x5e, 0xc3, 0x96, - 0xc5, 0x5e, 0xc3, 0x96, 0xc5, 0x5e, 0xc4, 0x96, 0xc5, 0x5e, 0xc4, 0x96, - 0xc5, 0x5e, 0xc4, 0x96, 0xc5, 0x5e, 0xc5, 0x96, 0xc5, 0x5e, 0xc5, 0x97, - 0xc8, 0x5e, 0xc5, 0x97, 0xc8, 0x5e, 0xc6, 0x97, 0xc8, 0x5e, 0xc6, 0x97, - 0xc8, 0x5e, 0xc6, 0x97, 0xc8, 0x5e, 0xc6, 0x97, 0xc8, 0x5e, 0xc7, 0x97, - 0xc8, 0x5e, 0xc7, 0x97, 0xc8, 0x5e, 0xc7, 0x97, 0xc8, 0x5e, 0xc8, 0x97, - 0xc8, 0x5e, 0xc8, 0x97, 0xc8, 0x5e, 0xc8, 0x98, 0xcb, 0x5e, 0xc9, 0x98, - 0xcc, 0x5e, 0xc9, 0xa5, 0xd1, 0x5e, 0xc9, 0xa7, 0xd1, 0x5e, 0xc9, 0xa5, - 0xd1, 0x5e, 0xca, 0xa7, 0xd1, 0x5e, 0xca, 0xa5, 0xd1, 0x5e, 0xca, 0xa3, - 0xd1, 0x5e, 0xcb, 0xa5, 0xd1, 0x5e, 0xcb, 0xa3, 0xd1, 0x5e, 0xcb, 0xa5, - 0xd1, 0x5e, 0xcc, 0xa3, 0xd1, 0x5e, 0xcc, 0xa5, 0xd1, 0x5e, 0xcc, 0xa3, - 0xd1, 0x5e, 0xcc, 0xa5, 0xd1, 0x5e, 0xcd, 0xa3, 0xd1, 0x5e, 0xcd, 0xa5, - 0xd1, 0x5e, 0xcd, 0xa3, 0xd1, 0x5e, 0xce, 0xa5, 0xd1, 0x5e, 0xce, 0xa3, - 0xd1, 0x5e, 0xce, 0xa5, 0xd1, 0x5e, 0xce, 0xa3, 0xd1, 0x5e, 0xcf, 0xa5, - 0xd1, 0x5e, 0xcf, 0xa3, 0xd1, 0x5e, 0xcf, 0xa5, 0xd1, 0x5e, 0xd0, 0xa3, - 0xd1, 0x5e, 0xd0, 0xa5, 0xd1, 0x5e, 0xd0, 0xa3, 0xd1, 0x5e, 0xd0, 0xa3, - 0xd2, 0x5e, 0xd1, 0xa3, 0xd1, 0x5e, 0xd1, 0xa3, 0xd2, 0x5e, 0xd1, 0xa3, - 0xd1, 0x5e, 0xd1, 0xa3, 0xd2, 0x5e, 0xd1, 0xa3, 0xd2, 0x5e, 0xd1, 0xa3, - 0xd2, 0x5e, 0xd1, 0xa3, 0xd2, 0x5c, 0xd1, 0xa3, 0xd3, 0x5e, 0xd1, 0xa3, - 0xd3, 0x5c, 0xd1, 0xa3, 0xd3, 0x5e, 0xd1, 0xa3, 0xd4, 0x5c, 0xd1, 0xa3, - 0xd4, 0x5e, 0xd1, 0xa3, 0xd4, 0x5c, 0xd1, 0xa3, 0xd4, 0x5e, 0xd1, 0xa3, - 0xd5, 0x5c, 0xd1, 0xa3, 0xd5, 0x5e, 0xd1, 0xa3, 0xd5, 0x5c, 0xd1, 0xa3, - 0xd6, 0x5e, 0xd1, 0xa3, 0xd6, 0x5c, 0xd1, 0xa3, 0xd6, 0x5e, 0xd1, 0xa3, - 0xd6, 0x5c, 0xd1, 0xa3, 0xd7, 0x5e, 0xd1, 0xa3, 0xd7, 0x5c, 0xd1, 0xa3, - 0xd7, 0x5e, 0xd1, 0xa3, 0xd7, 0x5c, 0xd1, 0xa3, 0xd8, 0x5e, 0xd1, 0xa3, - 0xd8, 0x5c, 0xd2, 0xa3, 0xd8, 0x59, 0xd1, 0xa3, 0xd9, 0x5c, 0xd2, 0xa3, - 0xd9, 0x59, 0xd1, 0xa3, 0xd9, 0x5c, 0xd2, 0xa3, 0xd9, 0x59, 0xd1, 0xa3, - 0xda, 0x5c, 0xd2, 0xa3, 0xda, 0x59, 0xdd, 0xa3, 0xda, 0x4f, 0xdd, 0xa3, - 0xda, 0x4f, 0xdd, 0xa3, 0xdb, 0x4f, 0xdd, 0xa3, 0xdb, 0x4f, 0xdd, 0xa3, - 0xdb, 0x4f, 0xdd, 0xa3, 0xdb, 0x4f, 0xdd, 0xa3, 0xdc, 0x4f, 0xdd, 0xa3, - 0xdc, 0x4f, 0xdd, 0xa3, 0xdc, 0x4f, 0xdf, 0xa3, 0xdd, 0x50, 0xdf, 0xa3, - 0xdd, 0x50, 0xdf, 0xa3, 0xdd, 0x50, 0xdf, 0xa3, 0xdd, 0x50, 0xdf, 0xa3, - 0xde, 0x50, 0xdf, 0xa3, 0xde, 0x50, 0xdf, 0xa3, 0xde, 0x50, 0xdf, 0xa3, - 0xde, 0x50, 0xdf, 0xa3, 0xdf, 0x50, 0xdf, 0xa3, 0xdf, 0x50, 0xe2, 0xa3, - 0xdf, 0x51, 0xe2, 0xa3, 0xdf, 0x51, 0xe2, 0xa3, 0xe0, 0x51, 0xe2, 0xa3, - 0xe0, 0x51, 0xe2, 0xa3, 0xe0, 0x51, 0xe2, 0xa3, 0xe1, 0x51, 0xe2, 0xa3, - 0xe1, 0x51, 0xe2, 0xa3, 0xe1, 0x51, 0xe2, 0xa3, 0xe1, 0x51, 0xe4, 0xa3, - 0xe2, 0x52, 0xe2, 0xa3, 0xe2, 0x51, 0xe4, 0xa3, 0xe2, 0x52, 0xe4, 0xa3, - 0xe2, 0x52, 0xe4, 0xa3, 0xe3, 0x52, 0xe4, 0xa3, 0xe3, 0x52, 0xe4, 0xa3, - 0xe3, 0x52, 0xe4, 0xa3, 0xe3, 0x52, 0xe4, 0xa3, 0xe4, 0x52, 0xe4, 0xa3, - 0xe4, 0x52, 0xe4, 0xa3, 0xe4, 0x52, 0xe6, 0xa3, 0xe4, 0x53, 0xe7, 0xa3, - 0xe5, 0x53, 0xe6, 0xa3, 0xe5, 0x53, 0xe7, 0xa3, 0xe5, 0x53, 0xe6, 0xa3, - 0xe5, 0x53, 0xe7, 0xa3, 0xe6, 0x53, 0xe6, 0xa3, 0xe6, 0x53, 0xe7, 0xa3, - 0xe6, 0x53, 0xe6, 0xa3, 0xe6, 0x53, 0xe7, 0xa3, 0xe7, 0x53, 0xe9, 0xa3, - 0xe7, 0x54, 0xe9, 0xa3, 0xe7, 0x54, 0xe9, 0xa3, 0xe7, 0x54, 0xe9, 0xa3, - 0xe8, 0x54, 0xe9, 0xa3, 0xe8, 0x54, 0xe9, 0xa3, 0xe8, 0x54, 0xe9, 0xa3, - 0xe8, 0x54, 0xe9, 0xa3, 0xe9, 0x54, 0xe9, 0xa3, 0xe9, 0x54, 0xeb, 0xa3, - 0xe9, 0x55, 0xeb, 0xa3, 0xe9, 0x55, 0xec, 0xa3, 0xea, 0x66, 0xec, 0xa3, - 0xea, 0x66, 0xec, 0xa3, 0xea, 0x66, 0xec, 0xa3, 0xea, 0x66, 0xec, 0xa3, - 0xeb, 0x66, 0xec, 0xa3, 0xeb, 0x66, 0xec, 0xa3, 0xeb, 0x66, 0xec, 0xa3, - 0xeb, 0x66, 0xec, 0xa3, 0xec, 0x66, 0xec, 0xa3, 0xec, 0x66, 0xec, 0xa3, - 0xec, 0x66, 0xec, 0xa3, 0xec, 0x66, 0xec, 0xa3, 0xec, 0x66, 0xed, 0xa3, - 0xed, 0x66, 0xed, 0xa3, 0xed, 0x66, 0xed, 0xa3, 0xed, 0x66, 0xed, 0xa3, - 0xed, 0x56, 0xee, 0xa3, 0xee, 0x56, 0xee, 0xa3, 0xee, 0x56, 0xf0, 0xa3, - 0xee, 0x57, 0xf0, 0xa3, 0xee, 0x57, 0xf0, 0xa3, 0xef, 0x57, 0xf0, 0xa3, - 0xef, 0x57, 0xf0, 0xa3, 0xef, 0x57, 0xf0, 0xa3, 0xef, 0x57, 0xf0, 0xa3, - 0xf0, 0x57, 0xf0, 0xa3, 0xf0, 0x57, 0xf0, 0xa3, 0xf0, 0x57, 0xf2, 0xa3, - 0xf0, 0x58, 0xf2, 0xa3, 0xf1, 0x58, 0xf2, 0xa3, 0xf1, 0x58, 0xf2, 0xa3, - 0xf1, 0x58, 0xf2, 0xa3, 0xf1, 0x58, 0xf2, 0xa3, 0xf2, 0x58, 0xf2, 0xa3, - 0xf2, 0x58, 0xf2, 0xa3, 0xf2, 0x58, 0xf2, 0xa3, 0xf2, 0x58, 0xf2, 0xa3, - 0xf2, 0x58, 0xf4, 0xa3, 0xf3, 0x59, 0xf4, 0xa3, 0xf3, 0x59, 0xf4, 0xa3, - 0xf3, 0x59, 0xf4, 0xa3, 0xf3, 0x59, 0xf4, 0xa3, 0xf4, 0x59, 0xf4, 0xa3, - 0xf4, 0x59, 0xf4, 0xa3, 0xf4, 0x59, 0xf4, 0xa3, 0xf4, 0x59, 0xf5, 0xa3, - 0xf5, 0x59, 0xf5, 0xa3, 0xf5, 0x59, 0xf5, 0xa3, 0xf5, 0x59, 0xf6, 0xa3, - 0xf5, 0x5a, 0xf6, 0xa3, 0xf5, 0x5a, 0xf6, 0xa3, 0xf6, 0x5a, 0xf6, 0xa3, - 0xf6, 0x5a, 0xf6, 0xa3, 0xf6, 0x5a, 0xf6, 0xa3, 0xf6, 0x5a, 0xf7, 0xa3, - 0xf7, 0x5a, 0xf7, 0xa3, 0xf7, 0x5a, 0xf7, 0xa3, 0xf7, 0x5a, 0xf8, 0xa3, - 0xf7, 0x5b, 0xf8, 0xa3, 0xf8, 0x5b, 0xf8, 0xa3, 0xf8, 0x5b, 0xf8, 0xa3, - 0xf8, 0x5b, 0xf8, 0xa3, 0xf8, 0x5b, 0xf8, 0xa3, 0xf8, 0x5b, 0xf9, 0xa3, - 0xf9, 0x5b, 0xf9, 0xa3, 0xf9, 0x5b, 0xf9, 0xa3, 0xf9, 0x5b, 0xf9, 0xa3, - 0xf9, 0x5b, 0xfa, 0xa3, 0xfa, 0x5c, 0xfb, 0xa3, 0xfa, 0x5c, 0xfa, 0xa3, - 0xfa, 0x5c, 0xfb, 0xa3, 0xfa, 0x5c, 0xfa, 0xa3, 0xfa, 0x5c, 0xfb, 0xa3, - 0xfb, 0x5c, 0xfb, 0xa3, 0xfb, 0x5c, 0xfc, 0xa3, 0xfb, 0x5f, 0xfc, 0xa3, - 0xfb, 0x5e, 0xfc, 0xa3, 0xfc, 0x5e, 0xfc, 0xa3, 0xfb, 0x5e, 0xfc, 0xa3, - 0xfc, 0x5e, 0xfc, 0xa3, 0xfb, 0x5e, 0xfc, 0xa3, 0xfc, 0x5e, 0xfd, 0xa3, - 0xfb, 0x5e, 0xfd, 0xa3, 0xfc, 0x5e, 0xfd, 0xa3, 0xfb, 0x5e, 0xfd, 0xa3, - 0xfc, 0x5e, 0xfe, 0xa3, 0xfb, 0x5e, 0xfe, 0xa3, 0xfc, 0x5e, 0xfe, 0xa3, - 0xfb, 0x5e, 0xfe, 0xa3, 0xfc, 0x5e, 0xfe, 0xa3, 0xfb, 0x5e, 0xff, 0xa3, - 0xfc, 0x5e, 0xff, 0xa3, 0xfb, 0x5e, 0x03, 0xaf, 0x94, 0x5e, 0x0a, 0xad, - 0x95, 0x5e, 0x0f, 0xaf, 0x94, 0x5e, 0x14, 0xad, 0x95, 0x5e, 0x17, 0xaf, - 0x94, 0x5e, 0x1b, 0xad, 0x95, 0x5e, 0x1e, 0xaf, 0x94, 0x5e, 0x20, 0xad, - 0x95, 0x5e, 0x23, 0xaf, 0x94, 0x5e, 0x25, 0xad, 0x95, 0x5e, 0x27, 0xab, - 0x95, 0x5e, 0x29, 0xad, 0x95, 0x5e, 0x2b, 0xab, 0x95, 0x5e, 0x2d, 0xad, - 0x95, 0x5e, 0x2f, 0xab, 0x95, 0x5e, 0x31, 0xad, 0x95, 0x5e, 0x32, 0xab, - 0x95, 0x5e, 0x34, 0xad, 0x95, 0x5e, 0x35, 0xab, 0x95, 0x5e, 0x37, 0xad, - 0x95, 0x5e, 0x38, 0xab, 0x95, 0x5e, 0x3a, 0xad, 0x95, 0x5e, 0x3b, 0xab, - 0x95, 0x5e, 0x3c, 0xad, 0x95, 0x5e, 0x3e, 0xab, 0x95, 0x5e, 0x3f, 0xad, - 0x95, 0x5e, 0x40, 0xab, 0x95, 0x5e, 0x42, 0xad, 0x95, 0x5e, 0x43, 0xab, - 0x95, 0x5e, 0x44, 0xad, 0x95, 0x5e, 0x45, 0xab, 0x95, 0x5e, 0x46, 0xad, - 0x95, 0x5e, 0x47, 0xab, 0x95, 0x5e, 0x48, 0xad, 0x95, 0x5e, 0x49, 0xab, - 0x95, 0x5e, 0x4a, 0xad, 0x95, 0x5e, 0x4b, 0xab, 0x95, 0x5e, 0x4c, 0xad, - 0x95, 0x5e, 0x4d, 0xab, 0x95, 0x5e, 0x4e, 0xad, 0x95, 0x5e, 0x4f, 0xab, - 0x95, 0x5e, 0x50, 0xad, 0x95, 0x5e, 0x51, 0xab, 0x95, 0x5e, 0x52, 0xad, - 0x95, 0x5e, 0x53, 0xab, 0x95, 0x5e, 0x54, 0xad, 0x95, 0x5e, 0x55, 0xab, - 0x95, 0x5e, 0x56, 0xa8, 0x96, 0x5e, 0x57, 0xab, 0x95, 0x5e, 0x58, 0xa8, - 0x96, 0x5e, 0x58, 0xab, 0x95, 0x5e, 0x59, 0xa8, 0x96, 0x5e, 0x5a, 0xab, - 0x95, 0x5e, 0x5b, 0xa8, 0x96, 0x5e, 0x5c, 0xab, 0x95, 0x5e, 0x5d, 0xa8, - 0x96, 0x5e, 0x5d, 0xab, 0x95, 0x5e, 0x5e, 0xa8, 0x96, 0x5e, 0x5f, 0xab, - 0x95, 0x5e, 0x60, 0xa8, 0x96, 0x5e, 0x60, 0xab, 0x95, 0x5e, 0x61, 0xa8, - 0x96, 0x5e, 0x62, 0xab, 0x95, 0x5e, 0x63, 0xa8, 0x96, 0x5e, 0x63, 0xab, - 0x95, 0x5e, 0x64, 0xa8, 0x96, 0x5e, 0x65, 0xab, 0x95, 0x5e, 0x66, 0xa8, - 0x96, 0x5e, 0x66, 0xab, 0x95, 0x5e, 0x67, 0xa8, 0x96, 0x5e, 0x68, 0xab, - 0x95, 0x5e, 0x68, 0xa8, 0x96, 0x5e, 0x69, 0xab, 0x95, 0x5e, 0x6a, 0xa8, - 0x96, 0x5e, 0x6a, 0xab, 0x95, 0x5e, 0x6b, 0xa8, 0x96, 0x5e, 0x6c, 0xab, - 0x95, 0x5e, 0x6c, 0xa8, 0x96, 0x5e, 0x6d, 0xab, 0x95, 0x5e, 0x6e, 0xa8, - 0x96, 0x5e, 0x6e, 0xa5, 0x96, 0x5e, 0x6f, 0xa8, 0x96, 0x5e, 0x70, 0xa5, - 0x96, 0x5e, 0x70, 0xa8, 0x96, 0x5e, 0x71, 0xa5, 0x96, 0x5e, 0x72, 0xa8, - 0x96, 0x5e, 0x72, 0xa5, 0x96, 0x5e, 0x73, 0xa8, 0x96, 0x5e, 0x73, 0xa5, - 0x96, 0x5e, 0x74, 0xa8, 0x96, 0x5e, 0x75, 0xa5, 0x96, 0x5e, 0x75, 0xa8, - 0x96, 0x5e, 0x76, 0xa5, 0x96, 0x5e, 0x76, 0xa8, 0x96, 0x5e, 0x77, 0xa5, - 0x96, 0x5e, 0x78, 0xa8, 0x96, 0x5e, 0x78, 0xa5, 0x96, 0x5e, 0x79, 0xa8, - 0x96, 0x5e, 0x79, 0xa5, 0x96, 0x5e, 0x7a, 0xa8, 0x96, 0x5e, 0x7a, 0xa5, - 0x96, 0x5e, 0x7b, 0xa8, 0x96, 0x5e, 0x7c, 0xa5, 0x96, 0x5e, 0x7c, 0xa8, - 0x96, 0x5e, 0x7d, 0xa5, 0x96, 0x5e, 0x7d, 0xa8, 0x96, 0x5e, 0x7e, 0xa5, - 0x96, 0x5e, 0x7e, 0xa8, 0x96, 0x5e, 0x7f, 0xa5, 0x96, 0x5e, 0x7f, 0xa8, - 0x96, 0x5e, 0x80, 0xa5, 0x96, 0x5e, 0x81, 0xa8, 0x96, 0x5e, 0x81, 0xa5, - 0x96, 0x5e, 0x82, 0xa8, 0x96, 0x5e, 0x82, 0xa5, 0x96, 0x5e, 0x83, 0xa8, - 0x96, 0x5e, 0x83, 0xa5, 0x96, 0x5e, 0x84, 0xa8, 0x96, 0x5e, 0x84, 0xa5, - 0x96, 0x5e, 0x85, 0xa8, 0x96, 0x5e, 0x85, 0xa5, 0x96, 0x5e, 0x86, 0xa4, - 0x97, 0x5e, 0x86, 0xa5, 0x96, 0x5e, 0x87, 0xa4, 0x97, 0x5e, 0x87, 0xa5, - 0x96, 0x5e, 0x88, 0xa4, 0x97, 0x5e, 0x88, 0xa5, 0x96, 0x5e, 0x89, 0xa4, - 0x97, 0x5e, 0x89, 0xa5, 0x96, 0x5e, 0x8a, 0xa4, 0x97, 0x5e, 0x8a, 0xa5, - 0x96, 0x5e, 0x8b, 0xa4, 0x97, 0x5e, 0x8b, 0xa5, 0x96, 0x5e, 0x8c, 0xa4, - 0x97, 0x5e, 0x8c, 0xa5, 0x96, 0x5e, 0x8d, 0xa4, 0x97, 0x5e, 0x8d, 0xa5, - 0x96, 0x5e, 0x8e, 0xa4, 0x97, 0x5e, 0x8e, 0xa5, 0x96, 0x5e, 0x8e, 0xa4, - 0x97, 0x5e, 0x8f, 0xa5, 0x96, 0x5e, 0x8f, 0xa4, 0x97, 0x5e, 0x90, 0xa5, - 0x96, 0x5e, 0x90, 0xa4, 0x97, 0x5e, 0x91, 0xa5, 0x96, 0x5e, 0x91, 0xa4, - 0x97, 0x5e, 0x92, 0xa5, 0x96, 0x5e, 0x92, 0xa4, 0x97, 0x5e, 0x93, 0xa5, - 0x96, 0x5e, 0x93, 0xa4, 0x97, 0x5e, 0x94, 0xa5, 0x96, 0x5e, 0x94, 0xa4, - 0x97, 0x5e, 0x94, 0xa5, 0x96, 0x5e, 0x95, 0xa4, 0x97, 0x5e, 0x95, 0xa4, - 0x97, 0x5e, 0x96, 0xa4, 0x97, 0x5e, 0x96, 0xa4, 0x97, 0x5e, 0x96, 0xa4, - 0x97, 0x5e, 0x96, 0xa4, 0x97, 0x5e, 0x96, 0xa4, 0x98, 0x5e, 0x96, 0xa4, - 0x98, 0x5e, 0x9a, 0xa4, 0x98, 0x5e, 0x9a, 0xa4, 0x99, 0x5e, 0x9a, 0xa4, - 0x99, 0x5e, 0x9a, 0xa4, 0x9a, 0x5e, 0x9a, 0xa3, 0x9a, 0x5e, 0x9a, 0xa4, - 0x9a, 0x5e, 0x9b, 0xa3, 0x9a, 0x5e, 0x9b, 0xa4, 0x9a, 0x5e, 0x9c, 0xa3, - 0x9a, 0x5e, 0x9c, 0xa4, 0x9a, 0x5e, 0x9d, 0xa3, 0x9a, 0x5e, 0x9d, 0xa4, - 0x9a, 0x5e, 0x9d, 0xa3, 0x9a, 0x5e, 0x9e, 0xa1, 0x9a, 0x5e, 0x9e, 0xa3, - 0x9a, 0x5e, 0x9f, 0xa1, 0x9a, 0x5e, 0x9f, 0xa3, 0x9a, 0x5e, 0x9f, 0xa1, - 0x9a, 0x5e, 0xa0, 0xa3, 0x9a, 0x5e, 0xa0, 0xa1, 0x9a, 0x5e, 0xa1, 0xa3, - 0x9a, 0x5e, 0xa1, 0xa1, 0x9a, 0x5e, 0xa1, 0xa3, 0x9a, 0x5e, 0xa2, 0xa1, - 0x9a, 0x5e, 0xa2, 0xa3, 0x9a, 0x5e, 0xa3, 0xa1, 0x9a, 0x5e, 0xa3, 0xa3, - 0x9a, 0x5e, 0xa3, 0xa1, 0x9a, 0x5e, 0xa4, 0xa3, 0x9a, 0x5e, 0xa4, 0xa1, - 0x9a, 0x5e, 0xa5, 0xa3, 0x9a, 0x5e, 0xa5, 0xa1, 0x9a, 0x5e, 0xa5, 0xa3, - 0x9a, 0x5e, 0xa6, 0xa1, 0x9a, 0x5e, 0xa6, 0xa3, 0x9a, 0x5e, 0xa6, 0xaf, - 0xa5, 0x5e, 0xa7, 0xaf, 0xa5, 0x5e, 0xa7, 0xaf, 0xa5, 0x5e, 0xa8, 0xaf, - 0xa5, 0x5e, 0xa8, 0xaf, 0xa5, 0x5e, 0xa8, 0xaf, 0xa5, 0x5e, 0xa9, 0xaf, - 0xa5, 0x5e, 0xa9, 0xaf, 0xa5, 0x5e, 0xaa, 0xb0, 0xaa, 0x5e, 0xaa, 0xb0, - 0xa9, 0x5e, 0xaa, 0xb0, 0xaa, 0x5e, 0xab, 0xb0, 0xa9, 0x5e, 0xab, 0xb0, - 0xaa, 0x5e, 0xab, 0xb0, 0xa9, 0x5e, 0xac, 0xb0, 0xaa, 0x5e, 0xac, 0xb0, - 0xa9, 0x5e, 0xac, 0xb0, 0xaa, 0x5e, 0xad, 0xb0, 0xa9, 0x5e, 0xad, 0xb0, - 0xaa, 0x5e, 0xae, 0xb0, 0xae, 0x5e, 0xae, 0xb0, 0xad, 0x5e, 0xae, 0xb0, - 0xae, 0x5e, 0xaf, 0xb0, 0xad, 0x5e, 0xaf, 0xb0, 0xae, 0x5e, 0xaf, 0xb0, - 0xad, 0x5e, 0xb0, 0xb0, 0xae, 0x5e, 0xb0, 0xb0, 0xad, 0x5e, 0xb0, 0xb0, - 0xae, 0x5e, 0xb1, 0xb0, 0xad, 0x5e, 0xb1, 0xb0, 0xae, 0x5e, 0xb2, 0xb1, - 0xb2, 0x5e, 0xb2, 0xb0, 0xae, 0x5e, 0xb2, 0xb1, 0xb2, 0x5e, 0xb3, 0xb1, - 0xb1, 0x5e, 0xb3, 0xb1, 0xb2, 0x5e, 0xb3, 0xb1, 0xb1, 0x5e, 0xb4, 0xb1, - 0xb2, 0x5e, 0xb4, 0xb1, 0xb1, 0x5e, 0xb4, 0xb1, 0xb2, 0x5e, 0xb5, 0xb1, - 0xb1, 0x5e, 0xb5, 0xb1, 0xb2, 0x5e, 0xb5, 0xb1, 0xb1, 0x5e, 0xb6, 0xb1, - 0xb2, 0x5e, 0xb6, 0xb2, 0xb5, 0x5e, 0xb6, 0xb2, 0xb5, 0x5e, 0xb7, 0xb2, - 0xb5, 0x5e, 0xb7, 0xb2, 0xb5, 0x5e, 0xb7, 0xb2, 0xb5, 0x5e, 0xb8, 0xb2, - 0xb5, 0x5e, 0xb8, 0xb2, 0xb5, 0x5e, 0xb8, 0x94, 0xbc, 0x5e, 0xb9, 0x94, - 0xbc, 0x5e, 0xb9, 0x94, 0xbc, 0x5e, 0xb9, 0x94, 0xbc, 0x5e, 0xba, 0x94, - 0xbc, 0x5e, 0xba, 0x94, 0xbc, 0x5e, 0xba, 0x94, 0xbc, 0x5e, 0xbb, 0x94, - 0xbc, 0x5e, 0xbb, 0x94, 0xbc, 0x5e, 0xbb, 0x95, 0xbf, 0x5e, 0xbc, 0x95, - 0xc0, 0x5e, 0xbc, 0x95, 0xbf, 0x5e, 0xbc, 0x95, 0xc0, 0x5e, 0xbd, 0x95, - 0xbf, 0x5e, 0xbd, 0x95, 0xc0, 0x5e, 0xbd, 0x95, 0xbf, 0x5e, 0xbe, 0x95, - 0xc0, 0x5e, 0xbe, 0x95, 0xbf, 0x5e, 0xbe, 0x95, 0xc0, 0x5e, 0xbf, 0x95, - 0xbf, 0x5e, 0xbf, 0x96, 0xc3, 0x5e, 0xbf, 0x95, 0xbf, 0x5e, 0xc0, 0x96, - 0xc3, 0x5e, 0xc0, 0x96, 0xc3, 0x5e, 0xc0, 0x96, 0xc3, 0x5e, 0xc1, 0x96, - 0xc3, 0x5e, 0xc1, 0x96, 0xc3, 0x5e, 0xc1, 0x96, 0xc3, 0x5e, 0xc1, 0x96, - 0xc3, 0x5e, 0xc2, 0x96, 0xc3, 0x5e, 0xc2, 0x96, 0xc3, 0x5e, 0xc2, 0x96, - 0xc3, 0x5e, 0xc3, 0x96, 0xc3, 0x5e, 0xc3, 0x96, 0xc3, 0x5e, 0xc3, 0x97, - 0xc6, 0x5e, 0xc4, 0x97, 0xc7, 0x5e, 0xc4, 0x97, 0xc6, 0x5e, 0xc4, 0x97, - 0xc7, 0x5e, 0xc5, 0x97, 0xc6, 0x5e, 0xc5, 0x97, 0xc7, 0x5e, 0xc5, 0x97, - 0xc6, 0x5e, 0xc6, 0x97, 0xc7, 0x5e, 0xc6, 0x97, 0xc6, 0x5e, 0xc6, 0x97, - 0xc7, 0x5e, 0xc6, 0x97, 0xc6, 0x5e, 0xc7, 0x98, 0xca, 0x5e, 0xc7, 0x98, - 0xca, 0x5e, 0xc7, 0x98, 0xca, 0x5e, 0xc8, 0x98, 0xca, 0x5e, 0xc8, 0x98, - 0xca, 0x5e, 0xc8, 0xa5, 0xd1, 0x5e, 0xc9, 0xa7, 0xd1, 0x5e, 0xc9, 0xa5, - 0xd1, 0x5e, 0xc9, 0xa7, 0xd1, 0x5e, 0xc9, 0xa5, 0xd1, 0x5e, 0xca, 0xa7, - 0xd1, 0x5e, 0xca, 0xa5, 0xd1, 0x5e, 0xca, 0xa7, 0xd1, 0x5e, 0xcb, 0xa5, - 0xd1, 0x5e, 0xcb, 0xa7, 0xd1, 0x5e, 0xcb, 0xa5, 0xd1, 0x5e, 0xcc, 0xa7, - 0xd1, 0x5e, 0xcc, 0xa5, 0xd1, 0x5e, 0xcc, 0xa7, 0xd1, 0x5e, 0xcc, 0xa5, - 0xd1, 0x5e, 0xcd, 0xa4, 0xd1, 0x5e, 0xcd, 0xa5, 0xd1, 0x5e, 0xcd, 0xa4, - 0xd1, 0x5e, 0xce, 0xa5, 0xd1, 0x5e, 0xce, 0xa4, 0xd1, 0x5e, 0xce, 0xa5, - 0xd1, 0x5e, 0xce, 0xa4, 0xd1, 0x5e, 0xcf, 0xa5, 0xd1, 0x5e, 0xcf, 0xa4, - 0xd1, 0x5e, 0xcf, 0xa5, 0xd1, 0x5e, 0xd0, 0xa4, 0xd1, 0x5e, 0xd0, 0xa5, - 0xd1, 0x5e, 0xd0, 0xa4, 0xd1, 0x5e, 0xd0, 0xa4, 0xd2, 0x5e, 0xd1, 0xa4, - 0xd1, 0x5e, 0xd1, 0xa4, 0xd2, 0x5e, 0xd1, 0xa4, 0xd1, 0x5e, 0xd1, 0xa4, - 0xd2, 0x5e, 0xd1, 0xa4, 0xd2, 0x5e, 0xd1, 0xa4, 0xd2, 0x5e, 0xd1, 0xa4, - 0xd2, 0x5c, 0xd1, 0xa4, 0xd3, 0x5e, 0xd1, 0xa4, 0xd3, 0x5c, 0xd1, 0xa4, - 0xd3, 0x5e, 0xd1, 0xa4, 0xd4, 0x5c, 0xd1, 0xa4, 0xd4, 0x5e, 0xd1, 0xa4, - 0xd4, 0x5c, 0xd1, 0xa4, 0xd4, 0x5e, 0xd1, 0xa4, 0xd5, 0x5c, 0xd1, 0xa4, - 0xd5, 0x5e, 0xd1, 0xa4, 0xd5, 0x5c, 0xd1, 0xa4, 0xd6, 0x5e, 0xd1, 0xa4, - 0xd6, 0x5c, 0xd1, 0xa4, 0xd6, 0x5e, 0xd1, 0xa4, 0xd6, 0x5c, 0xd1, 0xa4, - 0xd7, 0x5e, 0xd1, 0xa4, 0xd7, 0x5c, 0xd1, 0xa4, 0xd7, 0x5e, 0xd1, 0xa4, - 0xd7, 0x5c, 0xd1, 0xa4, 0xd8, 0x5e, 0xd1, 0xa4, 0xd8, 0x5c, 0xd2, 0xa4, - 0xd8, 0x59, 0xd1, 0xa4, 0xd9, 0x5c, 0xd2, 0xa4, 0xd9, 0x59, 0xd1, 0xa4, - 0xd9, 0x5c, 0xd2, 0xa4, 0xd9, 0x59, 0xd1, 0xa4, 0xda, 0x5c, 0xd2, 0xa4, - 0xda, 0x59, 0xd1, 0xa4, 0xda, 0x5c, 0xdb, 0xa4, 0xda, 0x4e, 0xdc, 0xa4, - 0xdb, 0x4e, 0xdb, 0xa4, 0xdb, 0x4e, 0xdc, 0xa4, 0xdb, 0x4e, 0xde, 0xa4, - 0xdb, 0x4f, 0xde, 0xa4, 0xdc, 0x4f, 0xde, 0xa4, 0xdc, 0x4f, 0xde, 0xa4, - 0xdc, 0x4f, 0xde, 0xa4, 0xdd, 0x4f, 0xde, 0xa4, 0xdd, 0x4f, 0xde, 0xa4, - 0xdd, 0x4f, 0xde, 0xa4, 0xdd, 0x4f, 0xde, 0xa4, 0xde, 0x4f, 0xe1, 0xa4, - 0xde, 0x50, 0xe1, 0xa4, 0xde, 0x50, 0xe1, 0xa4, 0xde, 0x50, 0xe1, 0xa4, - 0xdf, 0x50, 0xe1, 0xa4, 0xdf, 0x50, 0xe1, 0xa4, 0xdf, 0x50, 0xe1, 0xa4, - 0xdf, 0x50, 0xe1, 0xa4, 0xe0, 0x50, 0xe1, 0xa4, 0xe0, 0x50, 0xe3, 0xa4, - 0xe0, 0x51, 0xe3, 0xa4, 0xe1, 0x51, 0xe3, 0xa4, 0xe1, 0x51, 0xe3, 0xa4, - 0xe1, 0x51, 0xe3, 0xa4, 0xe1, 0x51, 0xe3, 0xa4, 0xe2, 0x51, 0xe3, 0xa4, - 0xe2, 0x51, 0xe3, 0xa4, 0xe2, 0x51, 0xe3, 0xa4, 0xe2, 0x51, 0xe3, 0xa4, - 0xe3, 0x51, 0xe3, 0xa4, 0xe3, 0x51, 0xe3, 0xa4, 0xe3, 0x51, 0xe5, 0xa4, - 0xe3, 0x52, 0xe6, 0xa4, 0xe4, 0x52, 0xe5, 0xa4, 0xe4, 0x52, 0xe6, 0xa4, - 0xe4, 0x52, 0xe5, 0xa4, 0xe4, 0x52, 0xe6, 0xa4, 0xe5, 0x52, 0xe5, 0xa4, - 0xe5, 0x52, 0xe6, 0xa4, 0xe5, 0x52, 0xe5, 0xa4, 0xe5, 0x52, 0xe8, 0xa4, - 0xe6, 0x53, 0xe8, 0xa4, 0xe6, 0x53, 0xe8, 0xa4, 0xe6, 0x53, 0xe8, 0xa4, - 0xe6, 0x53, 0xe8, 0xa4, 0xe7, 0x53, 0xe8, 0xa4, 0xe7, 0x53, 0xe8, 0xa4, - 0xe7, 0x53, 0xe8, 0xa4, 0xe7, 0x53, 0xe8, 0xa4, 0xe8, 0x53, 0xe8, 0xa4, - 0xe8, 0x53, 0xec, 0xa4, 0xe8, 0x65, 0xec, 0xa4, 0xe8, 0x65, 0xec, 0xa4, - 0xe9, 0x65, 0xec, 0xa4, 0xe9, 0x65, 0xec, 0xa4, 0xe9, 0x65, 0xec, 0xa4, - 0xe9, 0x65, 0xec, 0xa4, 0xea, 0x65, 0xec, 0xa4, 0xea, 0x65, 0xec, 0xa4, - 0xea, 0x65, 0xec, 0xa4, 0xea, 0x65, 0xec, 0xa4, 0xeb, 0x65, 0xec, 0xa4, - 0xeb, 0x65, 0xec, 0xa4, 0xeb, 0x65, 0xec, 0xa4, 0xeb, 0x65, 0xec, 0xa4, - 0xec, 0x65, 0xec, 0xa4, 0xec, 0x65, 0xec, 0xa4, 0xec, 0x65, 0xec, 0xa4, - 0xec, 0x65, 0xec, 0xa4, 0xec, 0x65, 0xed, 0xa4, 0xed, 0x65, 0xed, 0xa4, - 0xed, 0x65, 0xed, 0xa4, 0xed, 0x65, 0xed, 0xa4, 0xed, 0x65, 0xed, 0xa4, - 0xee, 0x65, 0xed, 0xa4, 0xee, 0x65, 0xed, 0xa4, 0xee, 0x65, 0xed, 0xa4, - 0xee, 0x65, 0xed, 0xa4, 0xef, 0x65, 0xef, 0xa4, 0xef, 0x56, 0xef, 0xa4, - 0xef, 0x56, 0xf1, 0xa4, 0xef, 0x57, 0xf1, 0xa4, 0xf0, 0x57, 0xf1, 0xa4, - 0xf0, 0x57, 0xf1, 0xa4, 0xf0, 0x57, 0xf1, 0xa4, 0xf0, 0x57, 0xf1, 0xa4, - 0xf1, 0x57, 0xf1, 0xa4, 0xf1, 0x57, 0xf1, 0xa4, 0xf1, 0x57, 0xf1, 0xa4, - 0xf1, 0x57, 0xf3, 0xa4, 0xf2, 0x58, 0xf3, 0xa4, 0xf2, 0x58, 0xf3, 0xa4, - 0xf2, 0x58, 0xf3, 0xa4, 0xf2, 0x58, 0xf3, 0xa4, 0xf2, 0x58, 0xf3, 0xa4, - 0xf3, 0x58, 0xf3, 0xa4, 0xf3, 0x58, 0xf3, 0xa4, 0xf3, 0x58, 0xf3, 0xa4, - 0xf3, 0x58, 0xf5, 0xa4, 0xf4, 0x59, 0xf5, 0xa4, 0xf4, 0x59, 0xf5, 0xa4, - 0xf4, 0x59, 0xf5, 0xa4, 0xf4, 0x59, 0xf5, 0xa4, 0xf5, 0x59, 0xf5, 0xa4, - 0xf5, 0x59, 0xf5, 0xa4, 0xf5, 0x59, 0xf5, 0xa4, 0xf5, 0x59, 0xf5, 0xa4, - 0xf5, 0x59, 0xf6, 0xa4, 0xf6, 0x59, 0xf6, 0xa4, 0xf6, 0x59, 0xf6, 0xa4, - 0xf6, 0x59, 0xf7, 0xa4, 0xf6, 0x5a, 0xf8, 0xa4, 0xf7, 0x5a, 0xf7, 0xa4, - 0xf7, 0x5a, 0xf8, 0xa4, 0xf7, 0x5a, 0xf7, 0xa4, 0xf7, 0x5a, 0xf8, 0xa4, - 0xf8, 0x5a, 0xf8, 0xa4, 0xf8, 0x5a, 0xf8, 0xa4, 0xf8, 0x5a, 0xf8, 0xa4, - 0xf8, 0x5a, 0xf9, 0xa4, 0xf8, 0x5b, 0xfa, 0xa4, 0xf9, 0x5b, 0xf9, 0xa4, - 0xf9, 0x5b, 0xfa, 0xa4, 0xf9, 0x5b, 0xf9, 0xa4, 0xf9, 0x5b, 0xfa, 0xa4, - 0xfa, 0x5b, 0xfa, 0xa4, 0xfa, 0x5b, 0xfa, 0xa4, 0xfa, 0x5b, 0xfa, 0xa4, - 0xfa, 0x5b, 0xfb, 0xa4, 0xfa, 0x5c, 0xfc, 0xa4, 0xfb, 0x5e, 0xfc, 0xa4, - 0xfb, 0x5e, 0xfc, 0xa4, 0xfb, 0x5e, 0xfc, 0xa4, 0xfb, 0x5e, 0xfc, 0xa3, - 0xfc, 0x5e, 0xfc, 0xa4, 0xfb, 0x5e, 0xfc, 0xa3, 0xfc, 0x5e, 0xfc, 0xa4, - 0xfb, 0x5e, 0xfc, 0xa3, 0xfc, 0x5e, 0xfd, 0xa4, 0xfb, 0x5e, 0xfd, 0xa3, - 0xfc, 0x5e, 0xfd, 0xa4, 0xfb, 0x5e, 0xfd, 0xa3, 0xfc, 0x5e, 0xfe, 0xa4, - 0xfb, 0x5e, 0xfe, 0xa3, 0xfc, 0x5e, 0xfe, 0xa4, 0xfb, 0x5e, 0xfe, 0xa3, - 0xfc, 0x5e, 0xfe, 0xa4, 0xfb, 0x5e, 0xff, 0xa3, 0xfc, 0x5e, 0xff, 0xa4, - 0xfb, 0x5e, 0x03, 0xaa, 0x95, 0x5f, 0x0a, 0xad, 0x95, 0x5f, 0x0f, 0xaa, - 0x95, 0x5f, 0x14, 0xad, 0x95, 0x5f, 0x17, 0xaa, 0x95, 0x5f, 0x1b, 0xad, - 0x95, 0x5f, 0x1e, 0xaa, 0x95, 0x5f, 0x20, 0xad, 0x95, 0x5f, 0x23, 0xaa, - 0x95, 0x5f, 0x25, 0xad, 0x95, 0x5f, 0x27, 0xaa, 0x95, 0x5f, 0x29, 0xad, - 0x95, 0x5f, 0x2b, 0xaa, 0x95, 0x5f, 0x2d, 0xad, 0x95, 0x5f, 0x2f, 0xaa, - 0x95, 0x5f, 0x31, 0xad, 0x95, 0x5f, 0x32, 0xaa, 0x95, 0x5f, 0x34, 0xad, - 0x95, 0x5f, 0x35, 0xaa, 0x95, 0x5f, 0x37, 0xad, 0x95, 0x5f, 0x38, 0xaa, - 0x95, 0x5f, 0x3a, 0xad, 0x95, 0x5f, 0x3b, 0xaa, 0x95, 0x5f, 0x3c, 0xad, - 0x95, 0x5f, 0x3e, 0xaa, 0x95, 0x5f, 0x3f, 0xad, 0x95, 0x5f, 0x40, 0xaa, - 0x95, 0x5f, 0x42, 0xad, 0x95, 0x5f, 0x43, 0xaa, 0x95, 0x5f, 0x44, 0xad, - 0x95, 0x5f, 0x45, 0xaa, 0x95, 0x5f, 0x46, 0xad, 0x95, 0x5f, 0x47, 0xaa, - 0x95, 0x5f, 0x48, 0xad, 0x95, 0x5f, 0x49, 0xaa, 0x95, 0x5f, 0x4a, 0xa8, - 0x96, 0x5f, 0x4b, 0xaa, 0x95, 0x5f, 0x4c, 0xa8, 0x96, 0x5f, 0x4d, 0xaa, - 0x95, 0x5f, 0x4e, 0xa8, 0x96, 0x5f, 0x4f, 0xaa, 0x95, 0x5f, 0x50, 0xa8, - 0x96, 0x5f, 0x51, 0xaa, 0x95, 0x5f, 0x52, 0xa8, 0x96, 0x5f, 0x53, 0xaa, - 0x95, 0x5f, 0x54, 0xa8, 0x96, 0x5f, 0x55, 0xaa, 0x95, 0x5f, 0x56, 0xa8, - 0x96, 0x5f, 0x57, 0xaa, 0x95, 0x5f, 0x58, 0xa8, 0x96, 0x5f, 0x58, 0xaa, - 0x95, 0x5f, 0x59, 0xa8, 0x96, 0x5f, 0x5a, 0xaa, 0x95, 0x5f, 0x5b, 0xa8, - 0x96, 0x5f, 0x5c, 0xaa, 0x95, 0x5f, 0x5d, 0xa8, 0x96, 0x5f, 0x5d, 0xaa, - 0x95, 0x5f, 0x5e, 0xa8, 0x96, 0x5f, 0x5f, 0xaa, 0x95, 0x5f, 0x60, 0xa8, - 0x96, 0x5f, 0x60, 0xaa, 0x95, 0x5f, 0x61, 0xa8, 0x96, 0x5f, 0x62, 0xaa, - 0x95, 0x5f, 0x63, 0xa8, 0x96, 0x5f, 0x63, 0xaa, 0x95, 0x5f, 0x64, 0xa8, - 0x96, 0x5f, 0x65, 0xaa, 0x95, 0x5f, 0x66, 0xa8, 0x96, 0x5f, 0x66, 0xaa, - 0x95, 0x5f, 0x67, 0xa8, 0x96, 0x5f, 0x68, 0xaa, 0x95, 0x5f, 0x68, 0xa8, - 0x96, 0x5f, 0x69, 0xaa, 0x95, 0x5f, 0x6a, 0xa8, 0x96, 0x5f, 0x6a, 0xaa, - 0x95, 0x5f, 0x6b, 0xa8, 0x96, 0x5f, 0x6c, 0xaa, 0x95, 0x5f, 0x6c, 0xa8, - 0x96, 0x5f, 0x6d, 0xaa, 0x95, 0x5f, 0x6e, 0xa8, 0x96, 0x5f, 0x6e, 0xaa, - 0x95, 0x5f, 0x6f, 0xa8, 0x96, 0x5f, 0x70, 0xaa, 0x95, 0x5f, 0x70, 0xa8, - 0x96, 0x5f, 0x71, 0xaa, 0x95, 0x5f, 0x72, 0xa8, 0x96, 0x5f, 0x72, 0xaa, - 0x95, 0x5f, 0x73, 0xa8, 0x96, 0x5f, 0x73, 0xaa, 0x95, 0x5f, 0x74, 0xa8, - 0x96, 0x5f, 0x75, 0xaa, 0x95, 0x5f, 0x75, 0xa8, 0x96, 0x5f, 0x76, 0xaa, - 0x95, 0x5f, 0x76, 0xa8, 0x96, 0x5f, 0x77, 0xaa, 0x95, 0x5f, 0x78, 0xa8, - 0x96, 0x5f, 0x78, 0xa6, 0x96, 0x5f, 0x79, 0xa8, 0x96, 0x5f, 0x79, 0xa6, - 0x96, 0x5f, 0x7a, 0xa8, 0x96, 0x5f, 0x7a, 0xa6, 0x96, 0x5f, 0x7b, 0xa8, - 0x96, 0x5f, 0x7c, 0xa6, 0x96, 0x5f, 0x7c, 0xa8, 0x96, 0x5f, 0x7d, 0xa6, - 0x96, 0x5f, 0x7d, 0xa8, 0x96, 0x5f, 0x7e, 0xa6, 0x96, 0x5f, 0x7e, 0xa8, - 0x96, 0x5f, 0x7f, 0xa6, 0x96, 0x5f, 0x7f, 0xa8, 0x96, 0x5f, 0x80, 0xa6, - 0x96, 0x5f, 0x81, 0xa8, 0x96, 0x5f, 0x81, 0xa6, 0x96, 0x5f, 0x82, 0xa8, - 0x96, 0x5f, 0x82, 0xa6, 0x96, 0x5f, 0x83, 0xa8, 0x96, 0x5f, 0x83, 0xa6, - 0x96, 0x5f, 0x84, 0xa8, 0x96, 0x5f, 0x84, 0xa6, 0x96, 0x5f, 0x85, 0xa8, - 0x96, 0x5f, 0x85, 0xa6, 0x96, 0x5f, 0x86, 0xa8, 0x96, 0x5f, 0x86, 0xa6, - 0x96, 0x5f, 0x87, 0xa8, 0x96, 0x5f, 0x87, 0xa6, 0x96, 0x5f, 0x88, 0xa8, - 0x96, 0x5f, 0x88, 0xa6, 0x96, 0x5f, 0x89, 0xa8, 0x96, 0x5f, 0x89, 0xa6, - 0x96, 0x5f, 0x8a, 0xa8, 0x96, 0x5f, 0x8a, 0xa6, 0x96, 0x5f, 0x8b, 0xa8, - 0x96, 0x5f, 0x8b, 0xa6, 0x96, 0x5f, 0x8c, 0xa4, 0x97, 0x5f, 0x8c, 0xa6, - 0x96, 0x5f, 0x8d, 0xa4, 0x97, 0x5f, 0x8d, 0xa6, 0x96, 0x5f, 0x8e, 0xa4, - 0x97, 0x5f, 0x8e, 0xa6, 0x96, 0x5f, 0x8e, 0xa4, 0x97, 0x5f, 0x8f, 0xa6, - 0x96, 0x5f, 0x8f, 0xa4, 0x97, 0x5f, 0x90, 0xa6, 0x96, 0x5f, 0x90, 0xa4, - 0x97, 0x5f, 0x91, 0xa6, 0x96, 0x5f, 0x91, 0xa4, 0x97, 0x5f, 0x92, 0xa6, - 0x96, 0x5f, 0x92, 0xa4, 0x97, 0x5f, 0x93, 0xa6, 0x96, 0x5f, 0x93, 0xa4, - 0x97, 0x5f, 0x94, 0xa6, 0x96, 0x5f, 0x94, 0xa4, 0x97, 0x5f, 0x94, 0xa6, - 0x96, 0x5f, 0x95, 0xa4, 0x97, 0x5f, 0x95, 0xa4, 0x97, 0x5f, 0x96, 0xa4, - 0x97, 0x5f, 0x96, 0xa4, 0x97, 0x5f, 0x96, 0xa4, 0x97, 0x5f, 0x96, 0xa4, - 0x97, 0x5f, 0x96, 0xa4, 0x98, 0x5f, 0x96, 0xa4, 0x98, 0x5f, 0x9a, 0xa4, - 0x98, 0x5f, 0x9a, 0xa4, 0x99, 0x5f, 0x9a, 0xa4, 0x99, 0x5f, 0x9a, 0xa4, - 0x9a, 0x5f, 0x9a, 0xa3, 0x9a, 0x5f, 0x9a, 0xa4, 0x9a, 0x5f, 0x9b, 0xa3, - 0x9a, 0x5f, 0x9b, 0xa4, 0x9a, 0x5f, 0x9c, 0xa3, 0x9a, 0x5f, 0x9c, 0xa4, - 0x9a, 0x5f, 0x9d, 0xa3, 0x9a, 0x5f, 0x9d, 0xa4, 0x9a, 0x5f, 0x9d, 0xa3, - 0x9a, 0x5f, 0x9e, 0xa4, 0x9a, 0x5f, 0x9e, 0xa3, 0x9a, 0x5f, 0x9f, 0xa4, - 0x9a, 0x5f, 0x9f, 0xa3, 0x9a, 0x5f, 0x9f, 0xa4, 0x9a, 0x5f, 0xa0, 0xa3, - 0x9a, 0x5f, 0xa0, 0xa4, 0x9a, 0x5f, 0xa1, 0xa3, 0x9a, 0x5f, 0xa1, 0xa1, - 0x9a, 0x5f, 0xa1, 0xa3, 0x9a, 0x5f, 0xa2, 0xa1, 0x9a, 0x5f, 0xa2, 0xa3, - 0x9a, 0x5f, 0xa3, 0xa1, 0x9a, 0x5f, 0xa3, 0xa3, 0x9a, 0x5f, 0xa3, 0xa1, - 0x9a, 0x5f, 0xa4, 0xa3, 0x9a, 0x5f, 0xa4, 0xa1, 0x9a, 0x5f, 0xa5, 0xa3, - 0x9a, 0x5f, 0xa5, 0xa1, 0x9a, 0x5f, 0xa5, 0xa3, 0x9a, 0x5f, 0xa6, 0xa1, - 0x9a, 0x5f, 0xa6, 0xaf, 0xa3, 0x5f, 0xa6, 0xaf, 0xa3, 0x5f, 0xa7, 0xaf, - 0xa3, 0x5f, 0xa7, 0xaf, 0xa7, 0x5f, 0xa8, 0xaf, 0xa8, 0x5f, 0xa8, 0xaf, - 0xa7, 0x5f, 0xa8, 0xaf, 0xa8, 0x5f, 0xa9, 0xaf, 0xa7, 0x5f, 0xa9, 0xaf, - 0xa8, 0x5f, 0xaa, 0xaf, 0xa7, 0x5f, 0xaa, 0xaf, 0xa8, 0x5f, 0xaa, 0xaf, - 0xa7, 0x5f, 0xab, 0xaf, 0xa8, 0x5f, 0xab, 0xaf, 0xa7, 0x5f, 0xab, 0xaf, - 0xa8, 0x5f, 0xac, 0xb0, 0xac, 0x5f, 0xac, 0xb0, 0xab, 0x5f, 0xac, 0xb0, - 0xac, 0x5f, 0xad, 0xb0, 0xab, 0x5f, 0xad, 0xb0, 0xac, 0x5f, 0xae, 0xb0, - 0xab, 0x5f, 0xae, 0xb0, 0xac, 0x5f, 0xae, 0xb0, 0xab, 0x5f, 0xaf, 0xb0, - 0xac, 0x5f, 0xaf, 0xb0, 0xab, 0x5f, 0xaf, 0xb0, 0xac, 0x5f, 0xb0, 0xb1, - 0xb0, 0x5f, 0xb0, 0xb1, 0xaf, 0x5f, 0xb0, 0xb1, 0xb0, 0x5f, 0xb1, 0xb1, - 0xaf, 0x5f, 0xb1, 0xb1, 0xb0, 0x5f, 0xb2, 0xb1, 0xaf, 0x5f, 0xb2, 0xb1, - 0xb0, 0x5f, 0xb2, 0xb1, 0xaf, 0x5f, 0xb3, 0xb1, 0xb0, 0x5f, 0xb3, 0xb1, - 0xaf, 0x5f, 0xb3, 0xb1, 0xb0, 0x5f, 0xb4, 0xb2, 0xb4, 0x5f, 0xb4, 0xb1, - 0xb0, 0x5f, 0xb4, 0xb2, 0xb4, 0x5f, 0xb5, 0xb2, 0xb3, 0x5f, 0xb5, 0xb2, - 0xb4, 0x5f, 0xb5, 0xb2, 0xb3, 0x5f, 0xb6, 0xb2, 0xb4, 0x5f, 0xb6, 0xb2, - 0xb3, 0x5f, 0xb6, 0xb2, 0xb4, 0x5f, 0xb7, 0xb2, 0xb3, 0x5f, 0xb7, 0xb2, - 0xb4, 0x5f, 0xb7, 0xb2, 0xb3, 0x5f, 0xb8, 0xb2, 0xb4, 0x5f, 0xb8, 0xb2, - 0xb7, 0x5f, 0xb8, 0xb2, 0xb7, 0x5f, 0xb9, 0xb2, 0xb7, 0x5f, 0xb9, 0xb2, - 0xb7, 0x5f, 0xb9, 0xb2, 0xb7, 0x5f, 0xba, 0xb2, 0xb7, 0x5f, 0xba, 0xb2, - 0xb7, 0x5f, 0xba, 0x94, 0xbe, 0x5f, 0xbb, 0x94, 0xbe, 0x5f, 0xbb, 0x94, - 0xbe, 0x5f, 0xbb, 0x94, 0xbe, 0x5f, 0xbc, 0x94, 0xbe, 0x5f, 0xbc, 0x94, - 0xbe, 0x5f, 0xbc, 0x94, 0xbe, 0x5f, 0xbd, 0x94, 0xbe, 0x5f, 0xbd, 0x94, - 0xbe, 0x5f, 0xbd, 0x95, 0xc1, 0x5f, 0xbe, 0x95, 0xc1, 0x5f, 0xbe, 0x95, - 0xc1, 0x5f, 0xbe, 0x95, 0xc1, 0x5f, 0xbf, 0x95, 0xc1, 0x5f, 0xbf, 0x95, - 0xc1, 0x5f, 0xbf, 0x95, 0xc1, 0x5f, 0xc0, 0x95, 0xc1, 0x5f, 0xc0, 0x95, - 0xc1, 0x5f, 0xc0, 0x95, 0xc1, 0x5f, 0xc1, 0x95, 0xc1, 0x5f, 0xc1, 0x96, - 0xc5, 0x5f, 0xc1, 0x95, 0xc1, 0x5f, 0xc1, 0x96, 0xc5, 0x5f, 0xc2, 0x96, - 0xc5, 0x5f, 0xc2, 0x96, 0xc5, 0x5f, 0xc2, 0x96, 0xc5, 0x5f, 0xc3, 0x96, - 0xc5, 0x5f, 0xc3, 0x96, 0xc5, 0x5f, 0xc3, 0x96, 0xc5, 0x5f, 0xc4, 0x96, - 0xc5, 0x5f, 0xc4, 0x96, 0xc5, 0x5f, 0xc4, 0x96, 0xc5, 0x5f, 0xc5, 0x96, - 0xc5, 0x5f, 0xc5, 0x97, 0xc8, 0x5f, 0xc5, 0x97, 0xc8, 0x5f, 0xc6, 0x97, - 0xc8, 0x5f, 0xc6, 0x97, 0xc8, 0x5f, 0xc6, 0x97, 0xc8, 0x5f, 0xc6, 0x97, - 0xc8, 0x5f, 0xc7, 0x97, 0xc8, 0x5f, 0xc7, 0x97, 0xc8, 0x5f, 0xc7, 0x97, - 0xc8, 0x5f, 0xc8, 0x97, 0xc8, 0x5f, 0xc8, 0xa7, 0xd1, 0x5f, 0xc8, 0xa5, - 0xd1, 0x5f, 0xc9, 0xa7, 0xd1, 0x5f, 0xc9, 0xa5, 0xd1, 0x5f, 0xc9, 0xa7, - 0xd1, 0x5f, 0xc9, 0xa5, 0xd1, 0x5f, 0xca, 0xa7, 0xd1, 0x5f, 0xca, 0xa5, - 0xd1, 0x5f, 0xca, 0xa7, 0xd1, 0x5f, 0xcb, 0xa5, 0xd1, 0x5f, 0xcb, 0xa7, - 0xd1, 0x5f, 0xcb, 0xa5, 0xd1, 0x5f, 0xcc, 0xa7, 0xd1, 0x5f, 0xcc, 0xa5, - 0xd1, 0x5f, 0xcc, 0xa7, 0xd1, 0x5f, 0xcc, 0xa5, 0xd1, 0x5f, 0xcd, 0xa4, - 0xd1, 0x5f, 0xcd, 0xa5, 0xd1, 0x5f, 0xcd, 0xa4, 0xd1, 0x5f, 0xce, 0xa5, - 0xd1, 0x5f, 0xce, 0xa4, 0xd1, 0x5f, 0xce, 0xa5, 0xd1, 0x5f, 0xce, 0xa4, - 0xd1, 0x5f, 0xcf, 0xa5, 0xd1, 0x5f, 0xcf, 0xa4, 0xd1, 0x5f, 0xcf, 0xa5, - 0xd1, 0x5f, 0xd0, 0xa4, 0xd1, 0x5f, 0xd0, 0xa5, 0xd1, 0x5f, 0xd0, 0xa4, - 0xd1, 0x5f, 0xd0, 0xa5, 0xd1, 0x5f, 0xd1, 0xa4, 0xd1, 0x5f, 0xd1, 0xa4, - 0xd2, 0x5f, 0xd1, 0xa4, 0xd1, 0x5f, 0xd1, 0xa4, 0xd2, 0x5f, 0xd1, 0xa4, - 0xd2, 0x5f, 0xd1, 0xa4, 0xd2, 0x5f, 0xd1, 0xa4, 0xd2, 0x5f, 0xd1, 0xa4, - 0xd3, 0x5f, 0xd1, 0xa4, 0xd3, 0x5f, 0xd1, 0xa4, 0xd3, 0x5f, 0xd1, 0xa4, - 0xd4, 0x5c, 0xd1, 0xa4, 0xd4, 0x5f, 0xd1, 0xa4, 0xd4, 0x5c, 0xd1, 0xa4, - 0xd4, 0x5f, 0xd1, 0xa4, 0xd5, 0x5c, 0xd1, 0xa4, 0xd5, 0x5f, 0xd1, 0xa4, - 0xd5, 0x5c, 0xd1, 0xa4, 0xd6, 0x5f, 0xd1, 0xa4, 0xd6, 0x5c, 0xd1, 0xa4, - 0xd6, 0x5f, 0xd1, 0xa4, 0xd6, 0x5c, 0xd1, 0xa4, 0xd7, 0x5f, 0xd1, 0xa4, - 0xd7, 0x5c, 0xd1, 0xa4, 0xd7, 0x5f, 0xd1, 0xa4, 0xd7, 0x5c, 0xd1, 0xa4, - 0xd8, 0x5f, 0xd1, 0xa4, 0xd8, 0x5c, 0xd1, 0xa4, 0xd8, 0x5f, 0xd1, 0xa4, - 0xd9, 0x5c, 0xd1, 0xa4, 0xd9, 0x5f, 0xd1, 0xa4, 0xd9, 0x5c, 0xd1, 0xa4, - 0xd9, 0x5f, 0xd1, 0xa4, 0xda, 0x5c, 0xd1, 0xa4, 0xda, 0x5f, 0xd1, 0xa4, - 0xda, 0x5c, 0xdd, 0xa4, 0xda, 0x4f, 0xdd, 0xa4, 0xdb, 0x4f, 0xdd, 0xa4, - 0xdb, 0x4f, 0xdd, 0xa4, 0xdb, 0x4f, 0xdd, 0xa4, 0xdb, 0x4f, 0xdd, 0xa4, - 0xdc, 0x4f, 0xdd, 0xa4, 0xdc, 0x4f, 0xdd, 0xa4, 0xdc, 0x4f, 0xdf, 0xa4, - 0xdd, 0x50, 0xdf, 0xa4, 0xdd, 0x50, 0xdf, 0xa4, 0xdd, 0x50, 0xdf, 0xa4, - 0xdd, 0x50, 0xdf, 0xa4, 0xde, 0x50, 0xdf, 0xa4, 0xde, 0x50, 0xdf, 0xa4, - 0xde, 0x50, 0xdf, 0xa4, 0xde, 0x50, 0xdf, 0xa4, 0xdf, 0x50, 0xdf, 0xa4, - 0xdf, 0x50, 0xe2, 0xa4, 0xdf, 0x51, 0xe2, 0xa4, 0xdf, 0x51, 0xe2, 0xa4, - 0xe0, 0x51, 0xe2, 0xa4, 0xe0, 0x51, 0xe2, 0xa4, 0xe0, 0x51, 0xe2, 0xa4, - 0xe1, 0x51, 0xe2, 0xa4, 0xe1, 0x51, 0xe2, 0xa4, 0xe1, 0x51, 0xe2, 0xa4, - 0xe1, 0x51, 0xe4, 0xa4, 0xe2, 0x52, 0xe4, 0xa4, 0xe2, 0x52, 0xe4, 0xa4, - 0xe2, 0x52, 0xe4, 0xa4, 0xe2, 0x52, 0xe4, 0xa4, 0xe3, 0x52, 0xe4, 0xa4, - 0xe3, 0x52, 0xe4, 0xa4, 0xe3, 0x52, 0xe4, 0xa4, 0xe3, 0x52, 0xe4, 0xa4, - 0xe4, 0x52, 0xe6, 0xa4, 0xe4, 0x53, 0xe4, 0xa4, 0xe4, 0x52, 0xe6, 0xa4, - 0xe4, 0x53, 0xe7, 0xa4, 0xe5, 0x53, 0xe6, 0xa4, 0xe5, 0x53, 0xe7, 0xa4, - 0xe5, 0x53, 0xe6, 0xa4, 0xe5, 0x53, 0xe7, 0xa4, 0xe6, 0x53, 0xe6, 0xa4, - 0xe6, 0x53, 0xe7, 0xa4, 0xe6, 0x53, 0xe6, 0xa4, 0xe6, 0x53, 0xe7, 0xa4, - 0xe7, 0x53, 0xe9, 0xa4, 0xe7, 0x54, 0xe9, 0xa4, 0xe7, 0x54, 0xe9, 0xa4, - 0xe7, 0x54, 0xe9, 0xa4, 0xe8, 0x54, 0xe9, 0xa4, 0xe8, 0x54, 0xec, 0xa4, - 0xe8, 0x66, 0xec, 0xa4, 0xe8, 0x67, 0xec, 0xa4, 0xe9, 0x66, 0xec, 0xa4, - 0xe9, 0x66, 0xec, 0xa4, 0xe9, 0x66, 0xec, 0xa4, 0xe9, 0x66, 0xec, 0xa4, - 0xea, 0x66, 0xec, 0xa4, 0xea, 0x66, 0xec, 0xa4, 0xea, 0x66, 0xec, 0xa4, - 0xea, 0x66, 0xec, 0xa4, 0xeb, 0x66, 0xec, 0xa4, 0xeb, 0x66, 0xec, 0xa4, - 0xeb, 0x66, 0xec, 0xa4, 0xeb, 0x66, 0xec, 0xa4, 0xec, 0x66, 0xec, 0xa4, - 0xec, 0x66, 0xec, 0xa4, 0xec, 0x66, 0xec, 0xa4, 0xec, 0x66, 0xec, 0xa4, - 0xec, 0x66, 0xed, 0xa4, 0xed, 0x66, 0xed, 0xa4, 0xed, 0x66, 0xed, 0xa4, - 0xed, 0x66, 0xed, 0xa4, 0xed, 0x66, 0xee, 0xa4, 0xee, 0x66, 0xee, 0xa4, - 0xee, 0x66, 0xee, 0xa4, 0xee, 0x66, 0xee, 0xa4, 0xee, 0x66, 0xef, 0xa4, - 0xef, 0x66, 0xef, 0xa4, 0xef, 0x66, 0xef, 0xa4, 0xef, 0x66, 0xef, 0xa4, - 0xef, 0x66, 0xef, 0xa4, 0xf0, 0x66, 0xef, 0xa4, 0xf0, 0x66, 0xef, 0xa4, - 0xf0, 0x66, 0xf2, 0xa4, 0xf0, 0x58, 0xf2, 0xa4, 0xf1, 0x58, 0xf2, 0xa4, - 0xf1, 0x58, 0xf2, 0xa4, 0xf1, 0x58, 0xf2, 0xa4, 0xf1, 0x58, 0xf2, 0xa4, - 0xf2, 0x58, 0xf2, 0xa4, 0xf2, 0x58, 0xf2, 0xa4, 0xf2, 0x58, 0xf2, 0xa4, - 0xf2, 0x58, 0xf2, 0xa4, 0xf2, 0x58, 0xf4, 0xa4, 0xf3, 0x59, 0xf4, 0xa4, - 0xf3, 0x59, 0xf4, 0xa4, 0xf3, 0x59, 0xf4, 0xa4, 0xf3, 0x59, 0xf4, 0xa4, - 0xf4, 0x59, 0xf4, 0xa4, 0xf4, 0x59, 0xf4, 0xa4, 0xf4, 0x59, 0xf4, 0xa4, - 0xf4, 0x59, 0xf5, 0xa4, 0xf5, 0x59, 0xf6, 0xa4, 0xf5, 0x5a, 0xf6, 0xa4, - 0xf5, 0x5a, 0xf6, 0xa4, 0xf5, 0x5a, 0xf6, 0xa4, 0xf5, 0x5a, 0xf6, 0xa4, - 0xf6, 0x5a, 0xf6, 0xa4, 0xf6, 0x5a, 0xf6, 0xa4, 0xf6, 0x5a, 0xf6, 0xa4, - 0xf6, 0x5a, 0xf7, 0xa4, 0xf7, 0x5a, 0xf7, 0xa4, 0xf7, 0x5a, 0xf7, 0xa4, - 0xf7, 0x5a, 0xf8, 0xa4, 0xf7, 0x5b, 0xf8, 0xa4, 0xf8, 0x5b, 0xf8, 0xa4, - 0xf8, 0x5b, 0xf8, 0xa4, 0xf8, 0x5b, 0xf8, 0xa4, 0xf8, 0x5b, 0xf8, 0xa4, - 0xf8, 0x5b, 0xf9, 0xa4, 0xf9, 0x5b, 0xf9, 0xa4, 0xf9, 0x5b, 0xf9, 0xa4, - 0xf9, 0x5b, 0xf9, 0xa4, 0xf9, 0x5b, 0xfa, 0xa4, 0xfa, 0x5c, 0xfb, 0xa4, - 0xfa, 0x5c, 0xfa, 0xa4, 0xfa, 0x5c, 0xfc, 0xa4, 0xfa, 0x5f, 0xfb, 0xa4, - 0xfa, 0x61, 0xfc, 0xa4, 0xfb, 0x5f, 0xfc, 0xa4, 0xfb, 0x5f, 0xfc, 0xa4, - 0xfb, 0x5f, 0xfc, 0xa4, 0xfb, 0x5f, 0xfc, 0xa3, 0xfc, 0x5f, 0xfc, 0xa4, - 0xfb, 0x5f, 0xfc, 0xa3, 0xfc, 0x5f, 0xfc, 0xa4, 0xfb, 0x5f, 0xfc, 0xa3, - 0xfc, 0x5f, 0xfd, 0xa4, 0xfb, 0x5f, 0xfd, 0xa3, 0xfc, 0x5f, 0xfd, 0xa4, - 0xfb, 0x5f, 0xfd, 0xa3, 0xfc, 0x5f, 0xfe, 0xa4, 0xfb, 0x5f, 0xfe, 0xa3, - 0xfc, 0x5f, 0xfe, 0xa4, 0xfb, 0x5f, 0xfe, 0xa3, 0xfc, 0x5f, 0xfe, 0xa4, - 0xfb, 0x5f, 0xff, 0xa3, 0xfc, 0x5f, 0xff, 0xa4, 0xfb, 0x5f, 0x03, 0xaf, - 0x94, 0x5f, 0x0a, 0xaf, 0x94, 0x5f, 0x0f, 0xaf, 0x94, 0x5f, 0x14, 0xad, - 0x95, 0x5f, 0x17, 0xaf, 0x94, 0x5f, 0x1b, 0xad, 0x95, 0x5f, 0x1e, 0xaf, - 0x94, 0x5f, 0x20, 0xad, 0x95, 0x5f, 0x23, 0xaf, 0x94, 0x5f, 0x25, 0xad, - 0x95, 0x5f, 0x27, 0xaf, 0x94, 0x5f, 0x29, 0xad, 0x95, 0x5f, 0x2b, 0xaf, - 0x94, 0x5f, 0x2d, 0xad, 0x95, 0x5f, 0x2f, 0xaf, 0x94, 0x5f, 0x31, 0xad, - 0x95, 0x5f, 0x32, 0xaf, 0x94, 0x5f, 0x34, 0xad, 0x95, 0x5f, 0x35, 0xaf, - 0x94, 0x5f, 0x37, 0xad, 0x95, 0x5f, 0x38, 0xaf, 0x94, 0x5f, 0x3a, 0xad, - 0x95, 0x5f, 0x3b, 0xab, 0x95, 0x5f, 0x3c, 0xad, 0x95, 0x5f, 0x3e, 0xab, - 0x95, 0x5f, 0x3f, 0xad, 0x95, 0x5f, 0x40, 0xab, 0x95, 0x5f, 0x42, 0xad, - 0x95, 0x5f, 0x43, 0xab, 0x95, 0x5f, 0x44, 0xad, 0x95, 0x5f, 0x45, 0xab, - 0x95, 0x5f, 0x46, 0xad, 0x95, 0x5f, 0x47, 0xab, 0x95, 0x5f, 0x48, 0xad, - 0x95, 0x5f, 0x49, 0xab, 0x95, 0x5f, 0x4a, 0xad, 0x95, 0x5f, 0x4b, 0xab, - 0x95, 0x5f, 0x4c, 0xad, 0x95, 0x5f, 0x4d, 0xab, 0x95, 0x5f, 0x4e, 0xad, - 0x95, 0x5f, 0x4f, 0xab, 0x95, 0x5f, 0x50, 0xad, 0x95, 0x5f, 0x51, 0xab, - 0x95, 0x5f, 0x52, 0xad, 0x95, 0x5f, 0x53, 0xab, 0x95, 0x5f, 0x54, 0xad, - 0x95, 0x5f, 0x55, 0xab, 0x95, 0x5f, 0x56, 0xad, 0x95, 0x5f, 0x57, 0xab, - 0x95, 0x5f, 0x58, 0xad, 0x95, 0x5f, 0x58, 0xab, 0x95, 0x5f, 0x59, 0xad, - 0x95, 0x5f, 0x5a, 0xab, 0x95, 0x5f, 0x5b, 0xad, 0x95, 0x5f, 0x5c, 0xab, - 0x95, 0x5f, 0x5d, 0xad, 0x95, 0x5f, 0x5d, 0xab, 0x95, 0x5f, 0x5e, 0xad, - 0x95, 0x5f, 0x5f, 0xab, 0x95, 0x5f, 0x60, 0xa8, 0x96, 0x5f, 0x60, 0xab, - 0x95, 0x5f, 0x61, 0xa8, 0x96, 0x5f, 0x62, 0xab, 0x95, 0x5f, 0x63, 0xa8, - 0x96, 0x5f, 0x63, 0xab, 0x95, 0x5f, 0x64, 0xa8, 0x96, 0x5f, 0x65, 0xab, - 0x95, 0x5f, 0x66, 0xa8, 0x96, 0x5f, 0x66, 0xab, 0x95, 0x5f, 0x67, 0xa8, - 0x96, 0x5f, 0x68, 0xab, 0x95, 0x5f, 0x68, 0xa8, 0x96, 0x5f, 0x69, 0xab, - 0x95, 0x5f, 0x6a, 0xa8, 0x96, 0x5f, 0x6a, 0xab, 0x95, 0x5f, 0x6b, 0xa8, - 0x96, 0x5f, 0x6c, 0xab, 0x95, 0x5f, 0x6c, 0xa8, 0x96, 0x5f, 0x6d, 0xab, - 0x95, 0x5f, 0x6e, 0xa8, 0x96, 0x5f, 0x6e, 0xab, 0x95, 0x5f, 0x6f, 0xa8, - 0x96, 0x5f, 0x70, 0xab, 0x95, 0x5f, 0x70, 0xa8, 0x96, 0x5f, 0x71, 0xab, - 0x95, 0x5f, 0x72, 0xa8, 0x96, 0x5f, 0x72, 0xab, 0x95, 0x5f, 0x73, 0xa8, - 0x96, 0x5f, 0x73, 0xab, 0x95, 0x5f, 0x74, 0xa8, 0x96, 0x5f, 0x75, 0xab, - 0x95, 0x5f, 0x75, 0xa8, 0x96, 0x5f, 0x76, 0xa5, 0x96, 0x5f, 0x76, 0xa8, - 0x96, 0x5f, 0x77, 0xa5, 0x96, 0x5f, 0x78, 0xa8, 0x96, 0x5f, 0x78, 0xa5, - 0x96, 0x5f, 0x79, 0xa8, 0x96, 0x5f, 0x79, 0xa5, 0x96, 0x5f, 0x7a, 0xa8, - 0x96, 0x5f, 0x7a, 0xa5, 0x96, 0x5f, 0x7b, 0xa8, 0x96, 0x5f, 0x7c, 0xa5, - 0x96, 0x5f, 0x7c, 0xa8, 0x96, 0x5f, 0x7d, 0xa5, 0x96, 0x5f, 0x7d, 0xa8, - 0x96, 0x5f, 0x7e, 0xa5, 0x96, 0x5f, 0x7e, 0xa8, 0x96, 0x5f, 0x7f, 0xa5, - 0x96, 0x5f, 0x7f, 0xa8, 0x96, 0x5f, 0x80, 0xa5, 0x96, 0x5f, 0x81, 0xa8, - 0x96, 0x5f, 0x81, 0xa5, 0x96, 0x5f, 0x82, 0xa8, 0x96, 0x5f, 0x82, 0xa5, - 0x96, 0x5f, 0x83, 0xa8, 0x96, 0x5f, 0x83, 0xa5, 0x96, 0x5f, 0x84, 0xa8, - 0x96, 0x5f, 0x84, 0xa5, 0x96, 0x5f, 0x85, 0xa8, 0x96, 0x5f, 0x85, 0xa5, - 0x96, 0x5f, 0x86, 0xa8, 0x96, 0x5f, 0x86, 0xa5, 0x96, 0x5f, 0x87, 0xa8, - 0x96, 0x5f, 0x87, 0xa5, 0x96, 0x5f, 0x88, 0xa8, 0x96, 0x5f, 0x88, 0xa5, - 0x96, 0x5f, 0x89, 0xa8, 0x96, 0x5f, 0x89, 0xa5, 0x96, 0x5f, 0x8a, 0xa8, - 0x96, 0x5f, 0x8a, 0xa5, 0x96, 0x5f, 0x8b, 0xa8, 0x96, 0x5f, 0x8b, 0xa5, - 0x96, 0x5f, 0x8c, 0xa5, 0x97, 0x5f, 0x8c, 0xa5, 0x96, 0x5f, 0x8d, 0xa5, - 0x97, 0x5f, 0x8d, 0xa5, 0x96, 0x5f, 0x8e, 0xa5, 0x97, 0x5f, 0x8e, 0xa5, - 0x96, 0x5f, 0x8e, 0xa5, 0x97, 0x5f, 0x8f, 0xa5, 0x96, 0x5f, 0x8f, 0xa5, - 0x97, 0x5f, 0x90, 0xa5, 0x96, 0x5f, 0x90, 0xa5, 0x97, 0x5f, 0x91, 0xa5, - 0x96, 0x5f, 0x91, 0xa5, 0x97, 0x5f, 0x92, 0xa5, 0x96, 0x5f, 0x92, 0xa5, - 0x97, 0x5f, 0x93, 0xa5, 0x96, 0x5f, 0x93, 0xa5, 0x97, 0x5f, 0x94, 0xa5, - 0x96, 0x5f, 0x94, 0xa5, 0x97, 0x5f, 0x94, 0xa5, 0x96, 0x5f, 0x95, 0xa5, - 0x97, 0x5f, 0x95, 0xa5, 0x96, 0x5f, 0x96, 0xa5, 0x97, 0x5f, 0x96, 0xa5, - 0x96, 0x5f, 0x96, 0xa5, 0x97, 0x5f, 0x96, 0xa5, 0x97, 0x5f, 0x96, 0xa5, - 0x98, 0x5f, 0x96, 0xa5, 0x98, 0x5f, 0x9a, 0xa5, 0x98, 0x5f, 0x9a, 0xa5, - 0x99, 0x5f, 0x9a, 0xa5, 0x99, 0x5f, 0x9a, 0xa5, 0x9a, 0x5f, 0x9a, 0xa5, - 0x99, 0x5f, 0x9a, 0xa5, 0x9a, 0x5f, 0x9b, 0xa5, 0x99, 0x5f, 0x9b, 0xa5, - 0x9a, 0x5f, 0x9c, 0xa3, 0x9a, 0x5f, 0x9c, 0xa5, 0x9a, 0x5f, 0x9d, 0xa3, - 0x9a, 0x5f, 0x9d, 0xa5, 0x9a, 0x5f, 0x9d, 0xa3, 0x9a, 0x5f, 0x9e, 0xa5, - 0x9a, 0x5f, 0x9e, 0xa3, 0x9a, 0x5f, 0x9f, 0xa5, 0x9a, 0x5f, 0x9f, 0xa3, - 0x9a, 0x5f, 0x9f, 0xa5, 0x9a, 0x5f, 0xa0, 0xa3, 0x9a, 0x5f, 0xa0, 0xa5, - 0x9a, 0x5f, 0xa1, 0xa3, 0x9a, 0x5f, 0xa1, 0xa1, 0x9a, 0x5f, 0xa1, 0xa3, - 0x9a, 0x5f, 0xa2, 0xa1, 0x9a, 0x5f, 0xa2, 0xa3, 0x9a, 0x5f, 0xa3, 0xa1, - 0x9a, 0x5f, 0xa3, 0xa3, 0x9a, 0x5f, 0xa3, 0xa1, 0x9a, 0x5f, 0xa4, 0xa3, - 0x9a, 0x5f, 0xa4, 0xa1, 0x9a, 0x5f, 0xa5, 0xa3, 0x9a, 0x5f, 0xa5, 0xa1, - 0x9a, 0x5f, 0xa5, 0xaf, 0xa5, 0x5f, 0xa6, 0xaf, 0xa5, 0x5f, 0xa6, 0xaf, - 0xa5, 0x5f, 0xa6, 0xaf, 0xa5, 0x5f, 0xa7, 0xaf, 0xa5, 0x5f, 0xa7, 0xaf, - 0xa5, 0x5f, 0xa8, 0xaf, 0xa5, 0x5f, 0xa8, 0xaf, 0xa5, 0x5f, 0xa8, 0xaf, - 0xa5, 0x5f, 0xa9, 0xaf, 0xa5, 0x5f, 0xa9, 0xaf, 0xa5, 0x5f, 0xaa, 0xb0, - 0xaa, 0x5f, 0xaa, 0xb0, 0xa9, 0x5f, 0xaa, 0xb0, 0xaa, 0x5f, 0xab, 0xb0, - 0xa9, 0x5f, 0xab, 0xb0, 0xaa, 0x5f, 0xab, 0xb0, 0xa9, 0x5f, 0xac, 0xb0, - 0xaa, 0x5f, 0xac, 0xb0, 0xa9, 0x5f, 0xac, 0xb0, 0xaa, 0x5f, 0xad, 0xb0, - 0xa9, 0x5f, 0xad, 0xb0, 0xaa, 0x5f, 0xae, 0xb0, 0xae, 0x5f, 0xae, 0xb0, - 0xad, 0x5f, 0xae, 0xb0, 0xae, 0x5f, 0xaf, 0xb0, 0xad, 0x5f, 0xaf, 0xb0, - 0xae, 0x5f, 0xaf, 0xb0, 0xad, 0x5f, 0xb0, 0xb0, 0xae, 0x5f, 0xb0, 0xb0, - 0xad, 0x5f, 0xb0, 0xb0, 0xae, 0x5f, 0xb1, 0xb0, 0xad, 0x5f, 0xb1, 0xb0, - 0xae, 0x5f, 0xb2, 0xb1, 0xb2, 0x5f, 0xb2, 0xb1, 0xb1, 0x5f, 0xb2, 0xb1, - 0xb2, 0x5f, 0xb3, 0xb1, 0xb1, 0x5f, 0xb3, 0xb1, 0xb2, 0x5f, 0xb3, 0xb1, - 0xb1, 0x5f, 0xb4, 0xb1, 0xb2, 0x5f, 0xb4, 0xb1, 0xb1, 0x5f, 0xb4, 0xb1, - 0xb2, 0x5f, 0xb5, 0xb1, 0xb1, 0x5f, 0xb5, 0xb1, 0xb2, 0x5f, 0xb5, 0xb2, - 0xb5, 0x5f, 0xb6, 0xb1, 0xb2, 0x5f, 0xb6, 0xb2, 0xb5, 0x5f, 0xb6, 0xb2, - 0xb5, 0x5f, 0xb7, 0xb2, 0xb5, 0x5f, 0xb7, 0xb2, 0xb5, 0x5f, 0xb7, 0xb2, - 0xb5, 0x5f, 0xb8, 0xb2, 0xb5, 0x5f, 0xb8, 0xb2, 0xb5, 0x5f, 0xb8, 0xb2, - 0xb5, 0x5f, 0xb9, 0xb2, 0xb5, 0x5f, 0xb9, 0xb2, 0xb5, 0x5f, 0xb9, 0xb2, - 0xb5, 0x5f, 0xba, 0xb3, 0xb9, 0x5f, 0xba, 0xb3, 0xb9, 0x5f, 0xba, 0xb3, - 0xb9, 0x5f, 0xbb, 0xb3, 0xb9, 0x5f, 0xbb, 0xb3, 0xb9, 0x5f, 0xbb, 0xb3, - 0xb9, 0x5f, 0xbc, 0xb3, 0xb9, 0x5f, 0xbc, 0xb3, 0xb9, 0x5f, 0xbc, 0x95, - 0xc0, 0x5f, 0xbd, 0x95, 0xbf, 0x5f, 0xbd, 0x95, 0xc0, 0x5f, 0xbd, 0x95, - 0xbf, 0x5f, 0xbe, 0x95, 0xc0, 0x5f, 0xbe, 0x95, 0xbf, 0x5f, 0xbe, 0x95, - 0xc0, 0x5f, 0xbf, 0x95, 0xbf, 0x5f, 0xbf, 0x96, 0xc3, 0x5f, 0xbf, 0x96, - 0xc3, 0x5f, 0xc0, 0x96, 0xc3, 0x5f, 0xc0, 0x96, 0xc3, 0x5f, 0xc0, 0x96, - 0xc3, 0x5f, 0xc1, 0x96, 0xc3, 0x5f, 0xc1, 0x96, 0xc3, 0x5f, 0xc1, 0x96, - 0xc3, 0x5f, 0xc1, 0x96, 0xc3, 0x5f, 0xc2, 0x96, 0xc3, 0x5f, 0xc2, 0x96, - 0xc3, 0x5f, 0xc2, 0x96, 0xc3, 0x5f, 0xc3, 0x96, 0xc3, 0x5f, 0xc3, 0x96, - 0xc3, 0x5f, 0xc3, 0x97, 0xc6, 0x5f, 0xc4, 0x97, 0xc7, 0x5f, 0xc4, 0x97, - 0xc6, 0x5f, 0xc4, 0x97, 0xc7, 0x5f, 0xc5, 0x97, 0xc6, 0x5f, 0xc5, 0x97, - 0xc7, 0x5f, 0xc5, 0x97, 0xc6, 0x5f, 0xc6, 0x97, 0xc7, 0x5f, 0xc6, 0x97, - 0xc6, 0x5f, 0xc6, 0x97, 0xc7, 0x5f, 0xc6, 0x97, 0xc6, 0x5f, 0xc7, 0x98, - 0xca, 0x5f, 0xc7, 0x98, 0xca, 0x5f, 0xc7, 0xa7, 0xd1, 0x5f, 0xc8, 0xa5, - 0xd1, 0x5f, 0xc8, 0xa7, 0xd1, 0x5f, 0xc8, 0xa5, 0xd1, 0x5f, 0xc9, 0xa7, - 0xd1, 0x5f, 0xc9, 0xa5, 0xd1, 0x5f, 0xc9, 0xa7, 0xd1, 0x5f, 0xc9, 0xa5, - 0xd1, 0x5f, 0xca, 0xa7, 0xd1, 0x5f, 0xca, 0xa5, 0xd1, 0x5f, 0xca, 0xa7, - 0xd1, 0x5f, 0xcb, 0xa5, 0xd1, 0x5f, 0xcb, 0xa7, 0xd1, 0x5f, 0xcb, 0xa5, - 0xd1, 0x5f, 0xcc, 0xa7, 0xd1, 0x5f, 0xcc, 0xa5, 0xd1, 0x5f, 0xcc, 0xa7, - 0xd1, 0x5f, 0xcc, 0xa5, 0xd1, 0x5f, 0xcd, 0xa7, 0xd1, 0x5f, 0xcd, 0xa5, - 0xd1, 0x5f, 0xcd, 0xa7, 0xd1, 0x5f, 0xce, 0xa5, 0xd1, 0x5f, 0xce, 0xa7, - 0xd1, 0x5f, 0xce, 0xa5, 0xd1, 0x5f, 0xce, 0xa7, 0xd1, 0x5f, 0xcf, 0xa5, - 0xd1, 0x5f, 0xcf, 0xa5, 0xd1, 0x5f, 0xcf, 0xa5, 0xd1, 0x5f, 0xd0, 0xa5, - 0xd1, 0x5f, 0xd0, 0xa5, 0xd1, 0x5f, 0xd0, 0xa5, 0xd1, 0x5f, 0xd0, 0xa5, - 0xd1, 0x5f, 0xd1, 0xa5, 0xd1, 0x5f, 0xd1, 0xa5, 0xd2, 0x5f, 0xd1, 0xa5, - 0xd1, 0x5f, 0xd1, 0xa5, 0xd2, 0x5f, 0xd1, 0xa5, 0xd2, 0x5f, 0xd1, 0xa5, - 0xd2, 0x5f, 0xd1, 0xa5, 0xd2, 0x5f, 0xd1, 0xa5, 0xd3, 0x5f, 0xd1, 0xa5, - 0xd3, 0x5f, 0xd1, 0xa5, 0xd3, 0x5f, 0xd1, 0xa5, 0xd4, 0x5c, 0xd1, 0xa5, - 0xd4, 0x5f, 0xd1, 0xa5, 0xd4, 0x5c, 0xd1, 0xa5, 0xd4, 0x5f, 0xd1, 0xa5, - 0xd5, 0x5c, 0xd1, 0xa5, 0xd5, 0x5f, 0xd1, 0xa5, 0xd5, 0x5c, 0xd1, 0xa5, - 0xd6, 0x5f, 0xd1, 0xa5, 0xd6, 0x5c, 0xd1, 0xa5, 0xd6, 0x5f, 0xd1, 0xa5, - 0xd6, 0x5c, 0xd1, 0xa5, 0xd7, 0x5f, 0xd1, 0xa5, 0xd7, 0x5c, 0xd1, 0xa5, - 0xd7, 0x5f, 0xd1, 0xa5, 0xd7, 0x5c, 0xd1, 0xa5, 0xd8, 0x5f, 0xd1, 0xa5, - 0xd8, 0x5c, 0xd1, 0xa5, 0xd8, 0x5f, 0xd1, 0xa5, 0xd9, 0x5c, 0xd1, 0xa5, - 0xd9, 0x5f, 0xd1, 0xa5, 0xd9, 0x5c, 0xd1, 0xa5, 0xd9, 0x5f, 0xd1, 0xa5, - 0xda, 0x5c, 0xd1, 0xa5, 0xda, 0x5f, 0xd1, 0xa5, 0xda, 0x5c, 0xd1, 0xa5, - 0xda, 0x5f, 0xdc, 0xa5, 0xdb, 0x4e, 0xdb, 0xa5, 0xdb, 0x4e, 0xdc, 0xa5, - 0xdb, 0x4e, 0xde, 0xa5, 0xdb, 0x4f, 0xde, 0xa5, 0xdc, 0x4f, 0xde, 0xa5, - 0xdc, 0x4f, 0xde, 0xa5, 0xdc, 0x4f, 0xde, 0xa5, 0xdd, 0x4f, 0xde, 0xa5, - 0xdd, 0x4f, 0xde, 0xa5, 0xdd, 0x4f, 0xde, 0xa5, 0xdd, 0x4f, 0xde, 0xa5, - 0xde, 0x4f, 0xe1, 0xa5, 0xde, 0x50, 0xe1, 0xa5, 0xde, 0x50, 0xe1, 0xa5, - 0xde, 0x50, 0xe1, 0xa5, 0xdf, 0x50, 0xe1, 0xa5, 0xdf, 0x50, 0xe1, 0xa5, - 0xdf, 0x50, 0xe1, 0xa5, 0xdf, 0x50, 0xe1, 0xa5, 0xe0, 0x50, 0xe1, 0xa5, - 0xe0, 0x50, 0xe3, 0xa5, 0xe0, 0x51, 0xe3, 0xa5, 0xe1, 0x51, 0xe3, 0xa5, - 0xe1, 0x51, 0xe3, 0xa5, 0xe1, 0x51, 0xe3, 0xa5, 0xe1, 0x51, 0xe3, 0xa5, - 0xe2, 0x51, 0xe3, 0xa5, 0xe2, 0x51, 0xe3, 0xa5, 0xe2, 0x51, 0xe3, 0xa5, - 0xe2, 0x51, 0xe3, 0xa5, 0xe3, 0x51, 0xe5, 0xa5, 0xe3, 0x52, 0xe6, 0xa5, - 0xe3, 0x52, 0xe5, 0xa5, 0xe3, 0x52, 0xe6, 0xa5, 0xe4, 0x52, 0xe5, 0xa5, - 0xe4, 0x52, 0xe6, 0xa5, 0xe4, 0x52, 0xe5, 0xa5, 0xe4, 0x52, 0xe6, 0xa5, - 0xe5, 0x52, 0xe5, 0xa5, 0xe5, 0x52, 0xe8, 0xa5, 0xe5, 0x53, 0xe5, 0xa5, - 0xe5, 0x52, 0xe8, 0xa5, 0xe6, 0x53, 0xe8, 0xa5, 0xe6, 0x53, 0xe8, 0xa5, - 0xe6, 0x53, 0xe8, 0xa5, 0xe6, 0x53, 0xe8, 0xa5, 0xe7, 0x53, 0xe8, 0xa5, - 0xe7, 0x53, 0xec, 0xa5, 0xe7, 0x65, 0xec, 0xa5, 0xe7, 0x65, 0xec, 0xa5, - 0xe8, 0x65, 0xec, 0xa5, 0xe8, 0x65, 0xec, 0xa5, 0xe8, 0x65, 0xec, 0xa5, - 0xe8, 0x65, 0xec, 0xa5, 0xe9, 0x65, 0xec, 0xa5, 0xe9, 0x65, 0xec, 0xa5, - 0xe9, 0x65, 0xec, 0xa5, 0xe9, 0x65, 0xec, 0xa5, 0xea, 0x65, 0xec, 0xa5, - 0xea, 0x65, 0xec, 0xa5, 0xea, 0x65, 0xec, 0xa5, 0xea, 0x65, 0xec, 0xa5, - 0xeb, 0x65, 0xec, 0xa5, 0xeb, 0x65, 0xec, 0xa5, 0xeb, 0x65, 0xec, 0xa5, - 0xeb, 0x65, 0xec, 0xa5, 0xec, 0x65, 0xec, 0xa5, 0xec, 0x65, 0xec, 0xa5, - 0xec, 0x65, 0xec, 0xa5, 0xec, 0x65, 0xec, 0xa5, 0xec, 0x65, 0xed, 0xa5, - 0xed, 0x65, 0xed, 0xa5, 0xed, 0x65, 0xed, 0xa5, 0xed, 0x65, 0xed, 0xa5, - 0xed, 0x65, 0xed, 0xa5, 0xee, 0x65, 0xed, 0xa5, 0xee, 0x65, 0xed, 0xa5, - 0xee, 0x65, 0xed, 0xa5, 0xee, 0x65, 0xed, 0xa5, 0xef, 0x65, 0xef, 0xa5, - 0xef, 0x66, 0xef, 0xa5, 0xef, 0x66, 0xef, 0xa5, 0xef, 0x66, 0xf0, 0xa5, - 0xf0, 0x66, 0xf0, 0xa5, 0xf0, 0x66, 0xf0, 0xa5, 0xf0, 0x66, 0xf0, 0xa5, - 0xf0, 0x66, 0xf1, 0xa5, 0xf1, 0x66, 0xf1, 0xa5, 0xf1, 0x66, 0xf1, 0xa5, - 0xf1, 0x66, 0xf1, 0xa5, 0xf1, 0x66, 0xf1, 0xa5, 0xf2, 0x66, 0xf1, 0xa5, - 0xf2, 0x66, 0xf3, 0xa5, 0xf2, 0x58, 0xf3, 0xa5, 0xf2, 0x58, 0xf3, 0xa5, - 0xf2, 0x58, 0xf3, 0xa5, 0xf3, 0x58, 0xf3, 0xa5, 0xf3, 0x58, 0xf3, 0xa5, - 0xf3, 0x58, 0xf3, 0xa5, 0xf3, 0x58, 0xf5, 0xa5, 0xf4, 0x59, 0xf5, 0xa5, - 0xf4, 0x59, 0xf5, 0xa5, 0xf4, 0x59, 0xf5, 0xa5, 0xf4, 0x59, 0xf5, 0xa5, - 0xf5, 0x59, 0xf5, 0xa5, 0xf5, 0x59, 0xf5, 0xa5, 0xf5, 0x59, 0xf5, 0xa5, - 0xf5, 0x59, 0xf5, 0xa5, 0xf5, 0x59, 0xf6, 0xa5, 0xf6, 0x59, 0xf7, 0xa5, - 0xf6, 0x5a, 0xf8, 0xa5, 0xf6, 0x5a, 0xf7, 0xa5, 0xf6, 0x5a, 0xf8, 0xa5, - 0xf7, 0x5a, 0xf7, 0xa5, 0xf7, 0x5a, 0xf8, 0xa5, 0xf7, 0x5a, 0xf7, 0xa5, - 0xf7, 0x5a, 0xf8, 0xa5, 0xf8, 0x5a, 0xf8, 0xa5, 0xf8, 0x5a, 0xf8, 0xa5, - 0xf8, 0x5a, 0xf8, 0xa5, 0xf8, 0x5a, 0xf9, 0xa5, 0xf8, 0x5b, 0xfa, 0xa5, - 0xf9, 0x5b, 0xf9, 0xa5, 0xf9, 0x5b, 0xfa, 0xa5, 0xf9, 0x5b, 0xf9, 0xa5, - 0xf9, 0x5b, 0xfa, 0xa5, 0xfa, 0x5b, 0xfa, 0xa5, 0xfa, 0x5b, 0xfb, 0xa5, - 0xfa, 0x61, 0xfc, 0xa5, 0xfa, 0x5f, 0xfb, 0xa5, 0xfa, 0x61, 0xfc, 0xa5, - 0xfb, 0x5f, 0xfc, 0xa5, 0xfb, 0x5f, 0xfc, 0xa5, 0xfb, 0x5f, 0xfc, 0xa5, - 0xfb, 0x5f, 0xfc, 0xa5, 0xfb, 0x5f, 0xfc, 0xa5, 0xfb, 0x5f, 0xfc, 0xa5, - 0xfb, 0x5f, 0xfc, 0xa5, 0xfb, 0x5f, 0xfc, 0xa5, 0xfb, 0x5f, 0xfd, 0xa5, - 0xfb, 0x5f, 0xfd, 0xa5, 0xfb, 0x5f, 0xfd, 0xa5, 0xfb, 0x5f, 0xfd, 0xa3, - 0xfc, 0x5f, 0xfe, 0xa5, 0xfb, 0x5f, 0xfe, 0xa3, 0xfc, 0x5f, 0xfe, 0xa5, - 0xfb, 0x5f, 0xfe, 0xa3, 0xfc, 0x5f, 0xfe, 0xa5, 0xfb, 0x5f, 0xff, 0xa3, - 0xfc, 0x5f, 0xff, 0xa5, 0xfb, 0x5f, 0x03, 0xaf, 0x94, 0x60, 0x0a, 0xaf, - 0x94, 0x60, 0x0f, 0xaf, 0x94, 0x60, 0x14, 0xad, 0x95, 0x60, 0x17, 0xaf, - 0x94, 0x60, 0x1b, 0xad, 0x95, 0x60, 0x1e, 0xaa, 0x95, 0x60, 0x20, 0xad, - 0x95, 0x60, 0x23, 0xaa, 0x95, 0x60, 0x25, 0xad, 0x95, 0x60, 0x27, 0xaa, - 0x95, 0x60, 0x29, 0xad, 0x95, 0x60, 0x2b, 0xaa, 0x95, 0x60, 0x2d, 0xad, - 0x95, 0x60, 0x2f, 0xaa, 0x95, 0x60, 0x31, 0xad, 0x95, 0x60, 0x32, 0xaa, - 0x95, 0x60, 0x34, 0xad, 0x95, 0x60, 0x35, 0xaa, 0x95, 0x60, 0x37, 0xad, - 0x95, 0x60, 0x38, 0xaa, 0x95, 0x60, 0x3a, 0xad, 0x95, 0x60, 0x3b, 0xaa, - 0x95, 0x60, 0x3c, 0xad, 0x95, 0x60, 0x3e, 0xaa, 0x95, 0x60, 0x3f, 0xad, - 0x95, 0x60, 0x40, 0xaa, 0x95, 0x60, 0x42, 0xad, 0x95, 0x60, 0x43, 0xaa, - 0x95, 0x60, 0x44, 0xad, 0x95, 0x60, 0x45, 0xaa, 0x95, 0x60, 0x46, 0xad, - 0x95, 0x60, 0x47, 0xaa, 0x95, 0x60, 0x48, 0xad, 0x95, 0x60, 0x49, 0xaa, - 0x95, 0x60, 0x4a, 0xad, 0x95, 0x60, 0x4b, 0xaa, 0x95, 0x60, 0x4c, 0xad, - 0x95, 0x60, 0x4d, 0xaa, 0x95, 0x60, 0x4e, 0xad, 0x95, 0x60, 0x4f, 0xaa, - 0x95, 0x60, 0x50, 0xad, 0x95, 0x60, 0x51, 0xaa, 0x95, 0x60, 0x52, 0xad, - 0x95, 0x60, 0x53, 0xaa, 0x95, 0x60, 0x54, 0xad, 0x95, 0x60, 0x55, 0xaa, - 0x95, 0x60, 0x56, 0xad, 0x95, 0x60, 0x57, 0xaa, 0x95, 0x60, 0x58, 0xad, - 0x95, 0x60, 0x58, 0xaa, 0x95, 0x60, 0x59, 0xa8, 0x96, 0x60, 0x5a, 0xaa, - 0x95, 0x60, 0x5b, 0xa8, 0x96, 0x60, 0x5c, 0xaa, 0x95, 0x60, 0x5d, 0xa8, - 0x96, 0x60, 0x5d, 0xaa, 0x95, 0x60, 0x5e, 0xa8, 0x96, 0x60, 0x5f, 0xaa, - 0x95, 0x60, 0x60, 0xa8, 0x96, 0x60, 0x60, 0xaa, 0x95, 0x60, 0x61, 0xa8, - 0x96, 0x60, 0x62, 0xaa, 0x95, 0x60, 0x63, 0xa8, 0x96, 0x60, 0x63, 0xaa, - 0x95, 0x60, 0x64, 0xa8, 0x96, 0x60, 0x65, 0xaa, 0x95, 0x60, 0x66, 0xa8, - 0x96, 0x60, 0x66, 0xaa, 0x95, 0x60, 0x67, 0xa8, 0x96, 0x60, 0x68, 0xaa, - 0x95, 0x60, 0x68, 0xa8, 0x96, 0x60, 0x69, 0xaa, 0x95, 0x60, 0x6a, 0xa8, - 0x96, 0x60, 0x6a, 0xaa, 0x95, 0x60, 0x6b, 0xa8, 0x96, 0x60, 0x6c, 0xaa, - 0x95, 0x60, 0x6c, 0xa8, 0x96, 0x60, 0x6d, 0xaa, 0x95, 0x60, 0x6e, 0xa8, - 0x96, 0x60, 0x6e, 0xaa, 0x95, 0x60, 0x6f, 0xa8, 0x96, 0x60, 0x70, 0xaa, - 0x95, 0x60, 0x70, 0xa8, 0x96, 0x60, 0x71, 0xaa, 0x95, 0x60, 0x72, 0xa8, - 0x96, 0x60, 0x72, 0xaa, 0x95, 0x60, 0x73, 0xa8, 0x96, 0x60, 0x73, 0xaa, - 0x95, 0x60, 0x74, 0xa8, 0x96, 0x60, 0x75, 0xaa, 0x95, 0x60, 0x75, 0xa8, - 0x96, 0x60, 0x76, 0xaa, 0x95, 0x60, 0x76, 0xa8, 0x96, 0x60, 0x77, 0xaa, - 0x95, 0x60, 0x78, 0xa8, 0x96, 0x60, 0x78, 0xaa, 0x95, 0x60, 0x79, 0xa8, - 0x96, 0x60, 0x79, 0xaa, 0x95, 0x60, 0x7a, 0xa8, 0x96, 0x60, 0x7a, 0xaa, - 0x95, 0x60, 0x7b, 0xa8, 0x96, 0x60, 0x7c, 0xaa, 0x95, 0x60, 0x7c, 0xa8, - 0x96, 0x60, 0x7d, 0xaa, 0x95, 0x60, 0x7d, 0xa8, 0x96, 0x60, 0x7e, 0xaa, - 0x95, 0x60, 0x7e, 0xa8, 0x96, 0x60, 0x7f, 0xa6, 0x96, 0x60, 0x7f, 0xa8, - 0x96, 0x60, 0x80, 0xa6, 0x96, 0x60, 0x81, 0xa8, 0x96, 0x60, 0x81, 0xa6, - 0x96, 0x60, 0x82, 0xa8, 0x96, 0x60, 0x82, 0xa6, 0x96, 0x60, 0x83, 0xa8, - 0x96, 0x60, 0x83, 0xa6, 0x96, 0x60, 0x84, 0xa8, 0x96, 0x60, 0x84, 0xa6, - 0x96, 0x60, 0x85, 0xa8, 0x96, 0x60, 0x85, 0xa6, 0x96, 0x60, 0x86, 0xa8, - 0x96, 0x60, 0x86, 0xa6, 0x96, 0x60, 0x87, 0xa8, 0x96, 0x60, 0x87, 0xa6, - 0x96, 0x60, 0x88, 0xa8, 0x96, 0x60, 0x88, 0xa6, 0x96, 0x60, 0x89, 0xa8, - 0x96, 0x60, 0x89, 0xa6, 0x96, 0x60, 0x8a, 0xa8, 0x96, 0x60, 0x8a, 0xa6, - 0x96, 0x60, 0x8b, 0xa8, 0x96, 0x60, 0x8b, 0xa6, 0x96, 0x60, 0x8c, 0xa8, - 0x96, 0x60, 0x8c, 0xa6, 0x96, 0x60, 0x8d, 0xa8, 0x96, 0x60, 0x8d, 0xa6, - 0x96, 0x60, 0x8e, 0xa8, 0x96, 0x60, 0x8e, 0xa6, 0x96, 0x60, 0x8e, 0xa8, - 0x96, 0x60, 0x8f, 0xa6, 0x96, 0x60, 0x8f, 0xa5, 0x97, 0x60, 0x90, 0xa6, - 0x96, 0x60, 0x90, 0xa5, 0x97, 0x60, 0x91, 0xa6, 0x96, 0x60, 0x91, 0xa5, - 0x97, 0x60, 0x92, 0xa6, 0x96, 0x60, 0x92, 0xa5, 0x97, 0x60, 0x93, 0xa6, - 0x96, 0x60, 0x93, 0xa5, 0x97, 0x60, 0x94, 0xa6, 0x96, 0x60, 0x94, 0xa5, - 0x97, 0x60, 0x94, 0xa6, 0x96, 0x60, 0x95, 0xa5, 0x97, 0x60, 0x95, 0xa6, - 0x96, 0x60, 0x96, 0xa5, 0x97, 0x60, 0x96, 0xa6, 0x96, 0x60, 0x96, 0xa5, - 0x97, 0x60, 0x96, 0xa5, 0x97, 0x60, 0x96, 0xa5, 0x98, 0x60, 0x96, 0xa5, - 0x98, 0x60, 0x9a, 0xa5, 0x98, 0x60, 0x9a, 0xa5, 0x99, 0x60, 0x9a, 0xa5, - 0x99, 0x60, 0x9a, 0xa5, 0x9a, 0x60, 0x9a, 0xa5, 0x99, 0x60, 0x9a, 0xa5, - 0x9a, 0x60, 0x9b, 0xa5, 0x99, 0x60, 0x9b, 0xa5, 0x9a, 0x60, 0x9c, 0xa3, - 0x9a, 0x60, 0x9c, 0xa5, 0x9a, 0x60, 0x9d, 0xa3, 0x9a, 0x60, 0x9d, 0xa5, - 0x9a, 0x60, 0x9d, 0xa3, 0x9a, 0x60, 0x9e, 0xa5, 0x9a, 0x60, 0x9e, 0xa3, - 0x9a, 0x60, 0x9f, 0xa5, 0x9a, 0x60, 0x9f, 0xa3, 0x9a, 0x60, 0x9f, 0xa5, - 0x9a, 0x60, 0xa0, 0xa3, 0x9a, 0x60, 0xa0, 0xa5, 0x9a, 0x60, 0xa1, 0xa3, - 0x9a, 0x60, 0xa1, 0xa5, 0x9a, 0x60, 0xa1, 0xa3, 0x9a, 0x60, 0xa2, 0xa5, - 0x9a, 0x60, 0xa2, 0xa3, 0x9a, 0x60, 0xa3, 0xa5, 0x9a, 0x60, 0xa3, 0xa3, - 0x9a, 0x60, 0xa3, 0xa5, 0x9a, 0x60, 0xa4, 0xa3, 0x9a, 0x60, 0xa4, 0xa1, - 0x9a, 0x60, 0xa5, 0xa3, 0x9a, 0x60, 0xa5, 0xaf, 0xa3, 0x60, 0xa5, 0xaf, - 0xa3, 0x60, 0xa6, 0xaf, 0xa3, 0x60, 0xa6, 0xaf, 0xa3, 0x60, 0xa6, 0xaf, - 0xa3, 0x60, 0xa7, 0xaf, 0xa3, 0x60, 0xa7, 0xaf, 0xa7, 0x60, 0xa8, 0xaf, - 0xa8, 0x60, 0xa8, 0xaf, 0xa7, 0x60, 0xa8, 0xaf, 0xa8, 0x60, 0xa9, 0xaf, - 0xa7, 0x60, 0xa9, 0xaf, 0xa8, 0x60, 0xaa, 0xaf, 0xa7, 0x60, 0xaa, 0xaf, - 0xa8, 0x60, 0xaa, 0xaf, 0xa7, 0x60, 0xab, 0xaf, 0xa8, 0x60, 0xab, 0xaf, - 0xa7, 0x60, 0xab, 0xaf, 0xa8, 0x60, 0xac, 0xb0, 0xac, 0x60, 0xac, 0xb0, - 0xab, 0x60, 0xac, 0xb0, 0xac, 0x60, 0xad, 0xb0, 0xab, 0x60, 0xad, 0xb0, - 0xac, 0x60, 0xae, 0xb0, 0xab, 0x60, 0xae, 0xb0, 0xac, 0x60, 0xae, 0xb0, - 0xab, 0x60, 0xaf, 0xb0, 0xac, 0x60, 0xaf, 0xb0, 0xab, 0x60, 0xaf, 0xb0, - 0xac, 0x60, 0xb0, 0xb1, 0xb0, 0x60, 0xb0, 0xb1, 0xaf, 0x60, 0xb0, 0xb1, - 0xb0, 0x60, 0xb1, 0xb1, 0xaf, 0x60, 0xb1, 0xb1, 0xb0, 0x60, 0xb2, 0xb1, - 0xaf, 0x60, 0xb2, 0xb1, 0xb0, 0x60, 0xb2, 0xb1, 0xaf, 0x60, 0xb3, 0xb1, - 0xb0, 0x60, 0xb3, 0xb1, 0xaf, 0x60, 0xb3, 0xb1, 0xb0, 0x60, 0xb4, 0xb2, - 0xb4, 0x60, 0xb4, 0xb2, 0xb3, 0x60, 0xb4, 0xb2, 0xb4, 0x60, 0xb5, 0xb2, - 0xb3, 0x60, 0xb5, 0xb2, 0xb4, 0x60, 0xb5, 0xb2, 0xb3, 0x60, 0xb6, 0xb2, - 0xb4, 0x60, 0xb6, 0xb2, 0xb3, 0x60, 0xb6, 0xb2, 0xb4, 0x60, 0xb7, 0xb2, - 0xb3, 0x60, 0xb7, 0xb2, 0xb4, 0x60, 0xb7, 0xb2, 0xb7, 0x60, 0xb8, 0xb2, - 0xb4, 0x60, 0xb8, 0xb2, 0xb7, 0x60, 0xb8, 0xb2, 0xb7, 0x60, 0xb9, 0xb2, - 0xb7, 0x60, 0xb9, 0xb2, 0xb7, 0x60, 0xb9, 0xb2, 0xb7, 0x60, 0xba, 0xb2, - 0xb7, 0x60, 0xba, 0xb2, 0xb7, 0x60, 0xba, 0xb2, 0xb7, 0x60, 0xbb, 0xb2, - 0xb7, 0x60, 0xbb, 0xb2, 0xb7, 0x60, 0xbb, 0xb2, 0xb7, 0x60, 0xbc, 0xb3, - 0xbb, 0x60, 0xbc, 0xb3, 0xbb, 0x60, 0xbc, 0xb3, 0xbb, 0x60, 0xbd, 0xb3, - 0xbb, 0x60, 0xbd, 0xb3, 0xbb, 0x60, 0xbd, 0xb3, 0xbb, 0x60, 0xbe, 0xb3, - 0xbb, 0x60, 0xbe, 0x95, 0xc1, 0x60, 0xbe, 0x95, 0xc1, 0x60, 0xbf, 0x95, - 0xc1, 0x60, 0xbf, 0x95, 0xc1, 0x60, 0xbf, 0x95, 0xc1, 0x60, 0xc0, 0x95, - 0xc1, 0x60, 0xc0, 0x95, 0xc1, 0x60, 0xc0, 0x95, 0xc1, 0x60, 0xc1, 0x95, - 0xc1, 0x60, 0xc1, 0x96, 0xc5, 0x60, 0xc1, 0x96, 0xc5, 0x60, 0xc1, 0x96, - 0xc5, 0x60, 0xc2, 0x96, 0xc5, 0x60, 0xc2, 0x96, 0xc5, 0x60, 0xc2, 0x96, - 0xc5, 0x60, 0xc3, 0x96, 0xc5, 0x60, 0xc3, 0x96, 0xc5, 0x60, 0xc3, 0x96, - 0xc5, 0x60, 0xc4, 0x96, 0xc5, 0x60, 0xc4, 0x96, 0xc5, 0x60, 0xc4, 0x97, - 0xc8, 0x60, 0xc5, 0x96, 0xc5, 0x60, 0xc5, 0x97, 0xc8, 0x60, 0xc5, 0x97, - 0xc8, 0x60, 0xc6, 0x97, 0xc8, 0x60, 0xc6, 0x97, 0xc8, 0x60, 0xc6, 0x97, - 0xc8, 0x60, 0xc6, 0x97, 0xc8, 0x60, 0xc7, 0x97, 0xc8, 0x60, 0xc7, 0xa5, - 0xd1, 0x60, 0xc7, 0xa7, 0xd1, 0x60, 0xc8, 0xa5, 0xd1, 0x60, 0xc8, 0xa7, - 0xd1, 0x60, 0xc8, 0xa5, 0xd1, 0x60, 0xc9, 0xa7, 0xd1, 0x60, 0xc9, 0xa5, - 0xd1, 0x60, 0xc9, 0xa7, 0xd1, 0x60, 0xc9, 0xa5, 0xd1, 0x60, 0xca, 0xa7, - 0xd1, 0x60, 0xca, 0xa5, 0xd1, 0x60, 0xca, 0xa7, 0xd1, 0x60, 0xcb, 0xa5, - 0xd1, 0x60, 0xcb, 0xa7, 0xd1, 0x60, 0xcb, 0xa5, 0xd1, 0x60, 0xcc, 0xa7, - 0xd1, 0x60, 0xcc, 0xa5, 0xd1, 0x60, 0xcc, 0xa7, 0xd1, 0x60, 0xcc, 0xa5, - 0xd1, 0x60, 0xcd, 0xa7, 0xd1, 0x60, 0xcd, 0xa5, 0xd1, 0x60, 0xcd, 0xa7, - 0xd1, 0x60, 0xce, 0xa5, 0xd1, 0x60, 0xce, 0xa7, 0xd1, 0x60, 0xce, 0xa5, - 0xd1, 0x60, 0xce, 0xa7, 0xd1, 0x60, 0xcf, 0xa5, 0xd1, 0x60, 0xcf, 0xa5, - 0xd1, 0x60, 0xcf, 0xa5, 0xd1, 0x60, 0xd0, 0xa5, 0xd1, 0x60, 0xd0, 0xa5, - 0xd1, 0x60, 0xd0, 0xa5, 0xd1, 0x60, 0xd0, 0xa5, 0xd1, 0x60, 0xd1, 0xa5, - 0xd1, 0x60, 0xd1, 0xa5, 0xd1, 0x5f, 0xd1, 0xa5, 0xd1, 0x60, 0xd1, 0xa5, - 0xd2, 0x5f, 0xd1, 0xa5, 0xd2, 0x60, 0xd1, 0xa5, 0xd2, 0x5f, 0xd1, 0xa5, - 0xd2, 0x60, 0xd1, 0xa5, 0xd3, 0x5f, 0xd1, 0xa5, 0xd3, 0x60, 0xd1, 0xa5, - 0xd3, 0x5f, 0xd1, 0xa5, 0xd4, 0x60, 0xd1, 0xa5, 0xd4, 0x5f, 0xd1, 0xa5, - 0xd4, 0x60, 0xd1, 0xa5, 0xd4, 0x5f, 0xd1, 0xa5, 0xd5, 0x60, 0xd1, 0xa5, - 0xd5, 0x5f, 0xd1, 0xa5, 0xd5, 0x60, 0xd1, 0xa5, 0xd6, 0x5f, 0xd1, 0xa5, - 0xd6, 0x5c, 0xd1, 0xa5, 0xd6, 0x5f, 0xd1, 0xa5, 0xd6, 0x5c, 0xd1, 0xa5, - 0xd7, 0x5f, 0xd1, 0xa5, 0xd7, 0x5c, 0xd1, 0xa5, 0xd7, 0x5f, 0xd1, 0xa5, - 0xd7, 0x5c, 0xd1, 0xa5, 0xd8, 0x5f, 0xd1, 0xa5, 0xd8, 0x5c, 0xd1, 0xa5, - 0xd8, 0x5f, 0xd1, 0xa5, 0xd9, 0x5c, 0xd1, 0xa5, 0xd9, 0x5f, 0xd1, 0xa5, - 0xd9, 0x5c, 0xd1, 0xa5, 0xd9, 0x5f, 0xd1, 0xa5, 0xda, 0x5c, 0xd1, 0xa5, - 0xda, 0x5f, 0xd1, 0xa5, 0xda, 0x5c, 0xd1, 0xa5, 0xda, 0x5f, 0xdd, 0xa5, - 0xdb, 0x4f, 0xdd, 0xa5, 0xdb, 0x4f, 0xdd, 0xa5, 0xdb, 0x4f, 0xdd, 0xa5, - 0xdb, 0x4f, 0xdd, 0xa5, 0xdc, 0x4f, 0xdf, 0xa5, 0xdc, 0x50, 0xdd, 0xa5, - 0xdc, 0x4f, 0xdf, 0xa5, 0xdd, 0x50, 0xdf, 0xa5, 0xdd, 0x50, 0xdf, 0xa5, - 0xdd, 0x50, 0xdf, 0xa5, 0xdd, 0x50, 0xdf, 0xa5, 0xde, 0x50, 0xdf, 0xa5, - 0xde, 0x50, 0xdf, 0xa5, 0xde, 0x50, 0xdf, 0xa5, 0xde, 0x50, 0xdf, 0xa5, - 0xdf, 0x50, 0xdf, 0xa5, 0xdf, 0x50, 0xe2, 0xa5, 0xdf, 0x51, 0xe2, 0xa5, - 0xdf, 0x51, 0xe2, 0xa5, 0xe0, 0x51, 0xe2, 0xa5, 0xe0, 0x51, 0xe2, 0xa5, - 0xe0, 0x51, 0xe2, 0xa5, 0xe1, 0x51, 0xe2, 0xa5, 0xe1, 0x51, 0xe2, 0xa5, - 0xe1, 0x51, 0xe2, 0xa5, 0xe1, 0x51, 0xe4, 0xa5, 0xe2, 0x52, 0xe4, 0xa5, - 0xe2, 0x52, 0xe4, 0xa5, 0xe2, 0x52, 0xe4, 0xa5, 0xe2, 0x52, 0xe4, 0xa5, - 0xe3, 0x52, 0xe4, 0xa5, 0xe3, 0x52, 0xe4, 0xa5, 0xe3, 0x52, 0xe4, 0xa5, - 0xe3, 0x52, 0xe4, 0xa5, 0xe4, 0x52, 0xe6, 0xa5, 0xe4, 0x53, 0xe7, 0xa5, - 0xe4, 0x53, 0xe6, 0xa5, 0xe4, 0x53, 0xe7, 0xa5, 0xe5, 0x53, 0xe6, 0xa5, - 0xe5, 0x53, 0xe7, 0xa5, 0xe5, 0x53, 0xe6, 0xa5, 0xe5, 0x53, 0xe7, 0xa5, - 0xe6, 0x53, 0xe6, 0xa5, 0xe6, 0x53, 0xe7, 0xa5, 0xe6, 0x53, 0xe6, 0xa5, - 0xe6, 0x53, 0xec, 0xa5, 0xe7, 0x66, 0xec, 0xa5, 0xe7, 0x67, 0xec, 0xa5, - 0xe7, 0x66, 0xec, 0xa5, 0xe7, 0x67, 0xec, 0xa5, 0xe8, 0x66, 0xec, 0xa5, - 0xe8, 0x67, 0xec, 0xa5, 0xe8, 0x66, 0xec, 0xa5, 0xe8, 0x67, 0xec, 0xa5, - 0xe9, 0x66, 0xec, 0xa5, 0xe9, 0x67, 0xec, 0xa5, 0xe9, 0x66, 0xec, 0xa5, - 0xe9, 0x66, 0xec, 0xa5, 0xea, 0x66, 0xec, 0xa5, 0xea, 0x66, 0xec, 0xa5, - 0xea, 0x66, 0xec, 0xa5, 0xea, 0x66, 0xec, 0xa5, 0xeb, 0x66, 0xec, 0xa5, - 0xeb, 0x66, 0xec, 0xa5, 0xeb, 0x66, 0xec, 0xa5, 0xeb, 0x66, 0xec, 0xa5, - 0xec, 0x66, 0xec, 0xa5, 0xec, 0x66, 0xec, 0xa5, 0xec, 0x66, 0xec, 0xa5, - 0xec, 0x66, 0xec, 0xa5, 0xec, 0x66, 0xed, 0xa5, 0xed, 0x66, 0xed, 0xa5, - 0xed, 0x66, 0xed, 0xa5, 0xed, 0x66, 0xed, 0xa5, 0xed, 0x66, 0xee, 0xa5, - 0xee, 0x66, 0xee, 0xa5, 0xee, 0x66, 0xee, 0xa5, 0xee, 0x66, 0xee, 0xa5, - 0xee, 0x66, 0xef, 0xa5, 0xef, 0x66, 0xef, 0xa5, 0xef, 0x66, 0xef, 0xa5, - 0xef, 0x66, 0xef, 0xa5, 0xef, 0x66, 0xef, 0xa5, 0xf0, 0x66, 0xef, 0xa5, - 0xf0, 0x66, 0xef, 0xa5, 0xf0, 0x66, 0xef, 0xa5, 0xf0, 0x66, 0xef, 0xa5, - 0xf1, 0x66, 0xf1, 0xa5, 0xf1, 0x67, 0xf1, 0xa5, 0xf1, 0x67, 0xf1, 0xa5, - 0xf1, 0x67, 0xf2, 0xa5, 0xf2, 0x67, 0xf2, 0xa5, 0xf2, 0x67, 0xf2, 0xa5, - 0xf2, 0x67, 0xf2, 0xa5, 0xf2, 0x67, 0xf2, 0xa5, 0xf2, 0x67, 0xf3, 0xa5, - 0xf3, 0x67, 0xf3, 0xa5, 0xf3, 0x67, 0xf3, 0xa5, 0xf3, 0x67, 0xf3, 0xa5, - 0xf3, 0x67, 0xf4, 0xa5, 0xf4, 0x59, 0xf4, 0xa5, 0xf4, 0x59, 0xf4, 0xa5, - 0xf4, 0x59, 0xf4, 0xa5, 0xf4, 0x59, 0xf5, 0xa5, 0xf5, 0x59, 0xf6, 0xa5, - 0xf5, 0x5a, 0xf6, 0xa5, 0xf5, 0x5a, 0xf6, 0xa5, 0xf5, 0x5a, 0xf6, 0xa5, - 0xf5, 0x5a, 0xf6, 0xa5, 0xf6, 0x5a, 0xf6, 0xa5, 0xf6, 0x5a, 0xf6, 0xa5, - 0xf6, 0x5a, 0xf6, 0xa5, 0xf6, 0x5a, 0xf7, 0xa5, 0xf7, 0x5a, 0xf8, 0xa5, - 0xf7, 0x5b, 0xf8, 0xa5, 0xf7, 0x5b, 0xf8, 0xa5, 0xf7, 0x5b, 0xf8, 0xa5, - 0xf8, 0x5b, 0xf8, 0xa5, 0xf8, 0x5b, 0xf8, 0xa5, 0xf8, 0x5b, 0xf8, 0xa5, - 0xf8, 0x5b, 0xf8, 0xa5, 0xf8, 0x5b, 0xf9, 0xa5, 0xf9, 0x5b, 0xf9, 0xa5, - 0xf9, 0x5b, 0xf9, 0xa5, 0xf9, 0x5b, 0xf9, 0xa5, 0xf9, 0x5b, 0xfb, 0xa5, - 0xfa, 0x61, 0xfc, 0xa5, 0xfa, 0x60, 0xfb, 0xa5, 0xfa, 0x61, 0xfc, 0xa5, - 0xfa, 0x60, 0xfb, 0xa5, 0xfa, 0x61, 0xfc, 0xa5, 0xfb, 0x60, 0xfb, 0xa5, - 0xfb, 0x61, 0xfc, 0xa5, 0xfb, 0x60, 0xfc, 0xa5, 0xfb, 0x60, 0xfc, 0xa5, - 0xfb, 0x60, 0xfc, 0xa5, 0xfb, 0x60, 0xfc, 0xa5, 0xfb, 0x60, 0xfc, 0xa5, - 0xfb, 0x60, 0xfc, 0xa5, 0xfb, 0x60, 0xfd, 0xa5, 0xfb, 0x60, 0xfd, 0xa5, - 0xfb, 0x60, 0xfd, 0xa5, 0xfb, 0x60, 0xfd, 0xa3, 0xfc, 0x60, 0xfe, 0xa5, - 0xfb, 0x60, 0xfe, 0xa3, 0xfc, 0x60, 0xfe, 0xa5, 0xfb, 0x60, 0xfe, 0xa3, - 0xfc, 0x60, 0xfe, 0xa5, 0xfb, 0x60, 0xff, 0xa3, 0xfc, 0x60, 0xff, 0xa5, - 0xfb, 0x60, 0x03, 0xaf, 0x94, 0x60, 0x0a, 0xaf, 0x94, 0x60, 0x0f, 0xaf, - 0x94, 0x60, 0x14, 0xaf, 0x94, 0x60, 0x17, 0xaf, 0x94, 0x60, 0x1b, 0xaf, - 0x94, 0x60, 0x1e, 0xaf, 0x94, 0x60, 0x20, 0xad, 0x95, 0x60, 0x23, 0xaf, - 0x94, 0x60, 0x25, 0xad, 0x95, 0x60, 0x27, 0xaf, 0x94, 0x60, 0x29, 0xad, - 0x95, 0x60, 0x2b, 0xaf, 0x94, 0x60, 0x2d, 0xad, 0x95, 0x60, 0x2f, 0xaf, - 0x94, 0x60, 0x31, 0xad, 0x95, 0x60, 0x32, 0xaf, 0x94, 0x60, 0x34, 0xad, - 0x95, 0x60, 0x35, 0xaf, 0x94, 0x60, 0x37, 0xad, 0x95, 0x60, 0x38, 0xaf, - 0x94, 0x60, 0x3a, 0xad, 0x95, 0x60, 0x3b, 0xaf, 0x94, 0x60, 0x3c, 0xad, - 0x95, 0x60, 0x3e, 0xaf, 0x94, 0x60, 0x3f, 0xad, 0x95, 0x60, 0x40, 0xaf, - 0x94, 0x60, 0x42, 0xad, 0x95, 0x60, 0x43, 0xaf, 0x94, 0x60, 0x44, 0xad, - 0x95, 0x60, 0x45, 0xaf, 0x94, 0x60, 0x46, 0xad, 0x95, 0x60, 0x47, 0xaf, - 0x94, 0x60, 0x48, 0xad, 0x95, 0x60, 0x49, 0xab, 0x95, 0x60, 0x4a, 0xad, - 0x95, 0x60, 0x4b, 0xab, 0x95, 0x60, 0x4c, 0xad, 0x95, 0x60, 0x4d, 0xab, - 0x95, 0x60, 0x4e, 0xad, 0x95, 0x60, 0x4f, 0xab, 0x95, 0x60, 0x50, 0xad, - 0x95, 0x60, 0x51, 0xab, 0x95, 0x60, 0x52, 0xad, 0x95, 0x60, 0x53, 0xab, - 0x95, 0x60, 0x54, 0xad, 0x95, 0x60, 0x55, 0xab, 0x95, 0x60, 0x56, 0xad, - 0x95, 0x60, 0x57, 0xab, 0x95, 0x60, 0x58, 0xad, 0x95, 0x60, 0x58, 0xab, - 0x95, 0x60, 0x59, 0xad, 0x95, 0x60, 0x5a, 0xab, 0x95, 0x60, 0x5b, 0xad, - 0x95, 0x60, 0x5c, 0xab, 0x95, 0x60, 0x5d, 0xad, 0x95, 0x60, 0x5d, 0xab, - 0x95, 0x60, 0x5e, 0xad, 0x95, 0x60, 0x5f, 0xab, 0x95, 0x60, 0x60, 0xad, - 0x95, 0x60, 0x60, 0xab, 0x95, 0x60, 0x61, 0xad, 0x95, 0x60, 0x62, 0xab, - 0x95, 0x60, 0x63, 0xad, 0x95, 0x60, 0x63, 0xab, 0x95, 0x60, 0x64, 0xad, - 0x95, 0x60, 0x65, 0xab, 0x95, 0x60, 0x66, 0xad, 0x95, 0x60, 0x66, 0xab, - 0x95, 0x60, 0x67, 0xad, 0x95, 0x60, 0x68, 0xab, 0x95, 0x60, 0x68, 0xa8, - 0x96, 0x60, 0x69, 0xab, 0x95, 0x60, 0x6a, 0xa8, 0x96, 0x60, 0x6a, 0xab, - 0x95, 0x60, 0x6b, 0xa8, 0x96, 0x60, 0x6c, 0xab, 0x95, 0x60, 0x6c, 0xa8, - 0x96, 0x60, 0x6d, 0xab, 0x95, 0x60, 0x6e, 0xa8, 0x96, 0x60, 0x6e, 0xab, - 0x95, 0x60, 0x6f, 0xa8, 0x96, 0x60, 0x70, 0xab, 0x95, 0x60, 0x70, 0xa8, - 0x96, 0x60, 0x71, 0xab, 0x95, 0x60, 0x72, 0xa8, 0x96, 0x60, 0x72, 0xab, - 0x95, 0x60, 0x73, 0xa8, 0x96, 0x60, 0x73, 0xab, 0x95, 0x60, 0x74, 0xa8, - 0x96, 0x60, 0x75, 0xab, 0x95, 0x60, 0x75, 0xa8, 0x96, 0x60, 0x76, 0xab, - 0x95, 0x60, 0x76, 0xa8, 0x96, 0x60, 0x77, 0xab, 0x95, 0x60, 0x78, 0xa8, - 0x96, 0x60, 0x78, 0xab, 0x95, 0x60, 0x79, 0xa8, 0x96, 0x60, 0x79, 0xab, - 0x95, 0x60, 0x7a, 0xa8, 0x96, 0x60, 0x7a, 0xab, 0x95, 0x60, 0x7b, 0xa8, - 0x96, 0x60, 0x7c, 0xab, 0x95, 0x60, 0x7c, 0xa8, 0x96, 0x60, 0x7d, 0xab, - 0x95, 0x60, 0x7d, 0xa8, 0x96, 0x60, 0x7e, 0xab, 0x95, 0x60, 0x7e, 0xa8, - 0x96, 0x60, 0x7f, 0xa5, 0x96, 0x60, 0x7f, 0xa8, 0x96, 0x60, 0x80, 0xa5, - 0x96, 0x60, 0x81, 0xa8, 0x96, 0x60, 0x81, 0xa5, 0x96, 0x60, 0x82, 0xa8, - 0x96, 0x60, 0x82, 0xa5, 0x96, 0x60, 0x83, 0xa8, 0x96, 0x60, 0x83, 0xa5, - 0x96, 0x60, 0x84, 0xa8, 0x96, 0x60, 0x84, 0xa5, 0x96, 0x60, 0x85, 0xa8, - 0x96, 0x60, 0x85, 0xa5, 0x96, 0x60, 0x86, 0xa8, 0x96, 0x60, 0x86, 0xa5, - 0x96, 0x60, 0x87, 0xa8, 0x96, 0x60, 0x87, 0xa5, 0x96, 0x60, 0x88, 0xa8, - 0x96, 0x60, 0x88, 0xa5, 0x96, 0x60, 0x89, 0xa8, 0x96, 0x60, 0x89, 0xa5, - 0x96, 0x60, 0x8a, 0xa8, 0x96, 0x60, 0x8a, 0xa5, 0x96, 0x60, 0x8b, 0xa8, - 0x96, 0x60, 0x8b, 0xa5, 0x96, 0x60, 0x8c, 0xa8, 0x96, 0x60, 0x8c, 0xa5, - 0x96, 0x60, 0x8d, 0xa8, 0x96, 0x60, 0x8d, 0xa5, 0x96, 0x60, 0x8e, 0xa8, - 0x96, 0x60, 0x8e, 0xa5, 0x96, 0x60, 0x8e, 0xa8, 0x96, 0x60, 0x8f, 0xa5, - 0x96, 0x60, 0x8f, 0xa5, 0x97, 0x60, 0x90, 0xa5, 0x96, 0x60, 0x90, 0xa5, - 0x97, 0x60, 0x91, 0xa5, 0x96, 0x60, 0x91, 0xa5, 0x97, 0x60, 0x92, 0xa5, - 0x96, 0x60, 0x92, 0xa5, 0x97, 0x60, 0x93, 0xa5, 0x96, 0x60, 0x93, 0xa5, - 0x97, 0x60, 0x94, 0xa5, 0x96, 0x60, 0x94, 0xa5, 0x97, 0x60, 0x94, 0xa5, - 0x96, 0x60, 0x95, 0xa5, 0x97, 0x60, 0x95, 0xa5, 0x96, 0x60, 0x96, 0xa5, - 0x97, 0x60, 0x96, 0xa5, 0x96, 0x5f, 0x96, 0xa5, 0x97, 0x60, 0x96, 0xa5, - 0x97, 0x5f, 0x96, 0xa5, 0x98, 0x60, 0x96, 0xa5, 0x98, 0x5f, 0x9a, 0xa5, - 0x98, 0x60, 0x9a, 0xa5, 0x99, 0x61, 0x9a, 0xa5, 0x99, 0x60, 0x9a, 0xa5, - 0x9a, 0x60, 0x9a, 0xa5, 0x99, 0x60, 0x9a, 0xa5, 0x9a, 0x60, 0x9b, 0xa5, - 0x99, 0x60, 0x9b, 0xa5, 0x9a, 0x60, 0x9c, 0xa5, 0x99, 0x60, 0x9c, 0xa5, - 0x9a, 0x60, 0x9d, 0xa5, 0x99, 0x60, 0x9d, 0xa5, 0x9a, 0x60, 0x9d, 0xa3, - 0x9a, 0x60, 0x9e, 0xa5, 0x9a, 0x60, 0x9e, 0xa3, 0x9a, 0x60, 0x9f, 0xa5, - 0x9a, 0x60, 0x9f, 0xa3, 0x9a, 0x60, 0x9f, 0xa5, 0x9a, 0x60, 0xa0, 0xa3, - 0x9a, 0x60, 0xa0, 0xa5, 0x9a, 0x60, 0xa1, 0xa3, 0x9a, 0x60, 0xa1, 0xa5, - 0x9a, 0x60, 0xa1, 0xa3, 0x9a, 0x60, 0xa2, 0xa5, 0x9a, 0x60, 0xa2, 0xa3, - 0x9a, 0x60, 0xa3, 0xa5, 0x9a, 0x60, 0xa3, 0xa3, 0x9a, 0x60, 0xa3, 0xa5, - 0x9a, 0x60, 0xa4, 0xa3, 0x9a, 0x60, 0xa4, 0xae, 0xa1, 0x60, 0xa5, 0xae, - 0xa1, 0x60, 0xa5, 0xae, 0xa1, 0x60, 0xa5, 0xaf, 0xa5, 0x60, 0xa6, 0xaf, - 0xa5, 0x60, 0xa6, 0xaf, 0xa5, 0x60, 0xa6, 0xaf, 0xa5, 0x60, 0xa7, 0xaf, - 0xa5, 0x60, 0xa7, 0xaf, 0xa5, 0x60, 0xa8, 0xaf, 0xa5, 0x60, 0xa8, 0xaf, - 0xa5, 0x60, 0xa8, 0xaf, 0xa5, 0x60, 0xa9, 0xaf, 0xa5, 0x60, 0xa9, 0xaf, - 0xa5, 0x60, 0xaa, 0xb0, 0xaa, 0x60, 0xaa, 0xb0, 0xa9, 0x60, 0xaa, 0xb0, - 0xaa, 0x60, 0xab, 0xb0, 0xa9, 0x60, 0xab, 0xb0, 0xaa, 0x60, 0xab, 0xb0, - 0xa9, 0x60, 0xac, 0xb0, 0xaa, 0x60, 0xac, 0xb0, 0xa9, 0x60, 0xac, 0xb0, - 0xaa, 0x60, 0xad, 0xb0, 0xa9, 0x60, 0xad, 0xb0, 0xaa, 0x60, 0xae, 0xb0, - 0xae, 0x60, 0xae, 0xb0, 0xad, 0x60, 0xae, 0xb0, 0xae, 0x60, 0xaf, 0xb0, - 0xad, 0x60, 0xaf, 0xb0, 0xae, 0x60, 0xaf, 0xb0, 0xad, 0x60, 0xb0, 0xb0, - 0xae, 0x60, 0xb0, 0xb0, 0xad, 0x60, 0xb0, 0xb0, 0xae, 0x60, 0xb1, 0xb0, - 0xad, 0x60, 0xb1, 0xb0, 0xae, 0x60, 0xb2, 0xb1, 0xb2, 0x60, 0xb2, 0xb1, - 0xb1, 0x60, 0xb2, 0xb1, 0xb2, 0x60, 0xb3, 0xb1, 0xb1, 0x60, 0xb3, 0xb1, - 0xb2, 0x60, 0xb3, 0xb1, 0xb1, 0x60, 0xb4, 0xb1, 0xb2, 0x60, 0xb4, 0xb1, - 0xb1, 0x60, 0xb4, 0xb1, 0xb2, 0x60, 0xb5, 0xb1, 0xb1, 0x60, 0xb5, 0xb1, - 0xb2, 0x60, 0xb5, 0xb2, 0xb5, 0x60, 0xb6, 0xb2, 0xb5, 0x60, 0xb6, 0xb2, - 0xb5, 0x60, 0xb6, 0xb2, 0xb5, 0x60, 0xb7, 0xb2, 0xb5, 0x60, 0xb7, 0xb2, - 0xb5, 0x60, 0xb7, 0xb2, 0xb5, 0x60, 0xb8, 0xb2, 0xb5, 0x60, 0xb8, 0xb2, - 0xb5, 0x60, 0xb8, 0xb2, 0xb5, 0x60, 0xb9, 0xb2, 0xb5, 0x60, 0xb9, 0xb3, - 0xb9, 0x60, 0xb9, 0xb3, 0xb9, 0x60, 0xba, 0xb3, 0xb9, 0x60, 0xba, 0xb3, - 0xb9, 0x60, 0xba, 0xb3, 0xb9, 0x60, 0xbb, 0xb3, 0xb9, 0x60, 0xbb, 0xb3, - 0xb9, 0x60, 0xbb, 0xb3, 0xb9, 0x60, 0xbc, 0xb3, 0xb9, 0x60, 0xbc, 0xb3, - 0xb9, 0x60, 0xbc, 0xb3, 0xb9, 0x60, 0xbd, 0xb3, 0xb9, 0x60, 0xbd, 0xb3, - 0xb9, 0x60, 0xbd, 0xb3, 0xb9, 0x60, 0xbe, 0xb3, 0xbd, 0x60, 0xbe, 0xb3, - 0xbd, 0x60, 0xbe, 0xb3, 0xbd, 0x60, 0xbf, 0xb3, 0xbd, 0x60, 0xbf, 0xb3, - 0xbd, 0x60, 0xbf, 0xb3, 0xbd, 0x60, 0xc0, 0xb3, 0xbd, 0x60, 0xc0, 0x96, - 0xc3, 0x60, 0xc0, 0x96, 0xc3, 0x60, 0xc1, 0x96, 0xc3, 0x60, 0xc1, 0x96, - 0xc3, 0x60, 0xc1, 0x96, 0xc3, 0x60, 0xc1, 0x96, 0xc3, 0x60, 0xc2, 0x96, - 0xc3, 0x60, 0xc2, 0x96, 0xc3, 0x60, 0xc2, 0x96, 0xc3, 0x60, 0xc3, 0x97, - 0xc6, 0x60, 0xc3, 0x97, 0xc7, 0x60, 0xc3, 0x97, 0xc6, 0x60, 0xc4, 0x97, - 0xc7, 0x60, 0xc4, 0x97, 0xc6, 0x60, 0xc4, 0x97, 0xc7, 0x60, 0xc5, 0x97, - 0xc6, 0x60, 0xc5, 0x97, 0xc7, 0x60, 0xc5, 0x97, 0xc6, 0x60, 0xc6, 0x97, - 0xc7, 0x60, 0xc6, 0x97, 0xc6, 0x60, 0xc6, 0x98, 0xca, 0x60, 0xc6, 0xa9, - 0xd0, 0x60, 0xc7, 0xa7, 0xd1, 0x60, 0xc7, 0xa9, 0xd0, 0x60, 0xc7, 0xa7, - 0xd1, 0x60, 0xc8, 0xa9, 0xd0, 0x60, 0xc8, 0xa7, 0xd1, 0x60, 0xc8, 0xa9, - 0xd0, 0x60, 0xc9, 0xa7, 0xd1, 0x60, 0xc9, 0xa9, 0xd0, 0x60, 0xc9, 0xa7, - 0xd1, 0x60, 0xc9, 0xa9, 0xd0, 0x60, 0xca, 0xa7, 0xd1, 0x60, 0xca, 0xa5, - 0xd1, 0x60, 0xca, 0xa7, 0xd1, 0x60, 0xcb, 0xa5, 0xd1, 0x60, 0xcb, 0xa7, - 0xd1, 0x60, 0xcb, 0xa5, 0xd1, 0x60, 0xcc, 0xa7, 0xd1, 0x60, 0xcc, 0xa5, - 0xd1, 0x60, 0xcc, 0xa7, 0xd1, 0x60, 0xcc, 0xa5, 0xd1, 0x60, 0xcd, 0xa7, - 0xd1, 0x60, 0xcd, 0xa5, 0xd1, 0x60, 0xcd, 0xa7, 0xd1, 0x60, 0xce, 0xa5, - 0xd1, 0x60, 0xce, 0xa7, 0xd1, 0x60, 0xce, 0xa5, 0xd1, 0x60, 0xce, 0xa7, - 0xd1, 0x60, 0xcf, 0xa5, 0xd1, 0x60, 0xcf, 0xa7, 0xd1, 0x60, 0xcf, 0xa5, - 0xd1, 0x60, 0xd0, 0xa7, 0xd1, 0x60, 0xd0, 0xa5, 0xd1, 0x60, 0xd0, 0xa5, - 0xd1, 0x60, 0xd0, 0xa5, 0xd1, 0x60, 0xd1, 0xa5, 0xd1, 0x60, 0xd1, 0xa5, - 0xd1, 0x5f, 0xd1, 0xa5, 0xd1, 0x60, 0xd1, 0xa5, 0xd2, 0x5f, 0xd1, 0xa5, - 0xd2, 0x60, 0xd1, 0xa5, 0xd2, 0x5f, 0xd1, 0xa5, 0xd2, 0x60, 0xd1, 0xa5, - 0xd3, 0x5f, 0xd1, 0xa5, 0xd3, 0x60, 0xd1, 0xa5, 0xd3, 0x5f, 0xd1, 0xa5, - 0xd4, 0x60, 0xd1, 0xa5, 0xd4, 0x5f, 0xd1, 0xa5, 0xd4, 0x60, 0xd1, 0xa5, - 0xd4, 0x5f, 0xd1, 0xa5, 0xd5, 0x60, 0xd1, 0xa5, 0xd5, 0x5f, 0xd1, 0xa5, - 0xd5, 0x60, 0xd1, 0xa5, 0xd6, 0x5f, 0xd1, 0xa5, 0xd6, 0x5c, 0xd1, 0xa5, - 0xd6, 0x5f, 0xd1, 0xa5, 0xd6, 0x5c, 0xd1, 0xa5, 0xd7, 0x5f, 0xd1, 0xa5, - 0xd7, 0x5c, 0xd1, 0xa5, 0xd7, 0x5f, 0xd1, 0xa5, 0xd7, 0x5c, 0xd1, 0xa5, - 0xd8, 0x5f, 0xd1, 0xa5, 0xd8, 0x5c, 0xd1, 0xa5, 0xd8, 0x5f, 0xd1, 0xa5, - 0xd9, 0x5c, 0xd1, 0xa5, 0xd9, 0x5f, 0xd1, 0xa5, 0xd9, 0x5c, 0xd1, 0xa5, - 0xd9, 0x5f, 0xd1, 0xa5, 0xda, 0x5c, 0xd1, 0xa5, 0xda, 0x5f, 0xd1, 0xa5, - 0xda, 0x5c, 0xd1, 0xa5, 0xda, 0x5f, 0xd1, 0xa5, 0xdb, 0x5c, 0xde, 0xa5, - 0xdb, 0x4f, 0xde, 0xa5, 0xdb, 0x4f, 0xde, 0xa5, 0xdb, 0x4f, 0xde, 0xa5, - 0xdc, 0x4f, 0xde, 0xa5, 0xdc, 0x4f, 0xde, 0xa5, 0xdc, 0x4f, 0xde, 0xa5, - 0xdd, 0x4f, 0xde, 0xa5, 0xdd, 0x4f, 0xde, 0xa5, 0xdd, 0x4f, 0xe1, 0xa5, - 0xdd, 0x50, 0xde, 0xa5, 0xde, 0x4f, 0xe1, 0xa5, 0xde, 0x50, 0xe1, 0xa5, - 0xde, 0x50, 0xe1, 0xa5, 0xde, 0x50, 0xe1, 0xa5, 0xdf, 0x50, 0xe1, 0xa5, - 0xdf, 0x50, 0xe1, 0xa5, 0xdf, 0x50, 0xe1, 0xa5, 0xdf, 0x50, 0xe1, 0xa5, - 0xe0, 0x50, 0xe1, 0xa5, 0xe0, 0x50, 0xe3, 0xa5, 0xe0, 0x51, 0xe3, 0xa5, - 0xe1, 0x51, 0xe3, 0xa5, 0xe1, 0x51, 0xe3, 0xa5, 0xe1, 0x51, 0xe3, 0xa5, - 0xe1, 0x51, 0xe3, 0xa5, 0xe2, 0x51, 0xe3, 0xa5, 0xe2, 0x51, 0xe3, 0xa5, - 0xe2, 0x51, 0xe3, 0xa5, 0xe2, 0x51, 0xe3, 0xa5, 0xe3, 0x51, 0xe5, 0xa5, - 0xe3, 0x52, 0xe6, 0xa5, 0xe3, 0x52, 0xe5, 0xa5, 0xe3, 0x52, 0xe6, 0xa5, - 0xe4, 0x52, 0xe5, 0xa5, 0xe4, 0x52, 0xe6, 0xa5, 0xe4, 0x52, 0xe5, 0xa5, - 0xe4, 0x52, 0xe6, 0xa5, 0xe5, 0x52, 0xe5, 0xa5, 0xe5, 0x52, 0xe8, 0xa5, - 0xe5, 0x53, 0xe8, 0xa5, 0xe5, 0x53, 0xe8, 0xa5, 0xe6, 0x53, 0xe8, 0xa5, - 0xe6, 0x53, 0xec, 0xa5, 0xe6, 0x65, 0xec, 0xa5, 0xe6, 0x65, 0xec, 0xa5, - 0xe7, 0x65, 0xec, 0xa5, 0xe7, 0x65, 0xec, 0xa5, 0xe7, 0x65, 0xec, 0xa5, - 0xe7, 0x65, 0xec, 0xa5, 0xe8, 0x65, 0xec, 0xa5, 0xe8, 0x65, 0xec, 0xa5, - 0xe8, 0x65, 0xec, 0xa5, 0xe8, 0x65, 0xec, 0xa5, 0xe9, 0x65, 0xec, 0xa5, - 0xe9, 0x65, 0xec, 0xa5, 0xe9, 0x65, 0xec, 0xa5, 0xe9, 0x65, 0xec, 0xa5, - 0xea, 0x65, 0xec, 0xa5, 0xea, 0x65, 0xec, 0xa5, 0xea, 0x65, 0xec, 0xa5, - 0xea, 0x65, 0xec, 0xa5, 0xeb, 0x65, 0xec, 0xa5, 0xeb, 0x65, 0xec, 0xa5, - 0xeb, 0x65, 0xec, 0xa5, 0xeb, 0x65, 0xec, 0xa5, 0xec, 0x65, 0xec, 0xa5, - 0xec, 0x65, 0xec, 0xa5, 0xec, 0x65, 0xec, 0xa5, 0xec, 0x65, 0xec, 0xa5, - 0xec, 0x65, 0xed, 0xa5, 0xed, 0x65, 0xed, 0xa5, 0xed, 0x65, 0xed, 0xa5, - 0xed, 0x65, 0xed, 0xa5, 0xed, 0x65, 0xed, 0xa5, 0xee, 0x65, 0xed, 0xa5, - 0xee, 0x65, 0xed, 0xa5, 0xee, 0x65, 0xed, 0xa5, 0xee, 0x65, 0xed, 0xa5, - 0xef, 0x65, 0xef, 0xa5, 0xef, 0x66, 0xef, 0xa5, 0xef, 0x66, 0xef, 0xa5, - 0xef, 0x66, 0xf0, 0xa5, 0xf0, 0x66, 0xf0, 0xa5, 0xf0, 0x66, 0xf0, 0xa5, - 0xf0, 0x66, 0xf0, 0xa5, 0xf0, 0x66, 0xf1, 0xa5, 0xf1, 0x66, 0xf1, 0xa5, - 0xf1, 0x66, 0xf1, 0xa5, 0xf1, 0x66, 0xf1, 0xa5, 0xf1, 0x66, 0xf1, 0xa5, - 0xf2, 0x66, 0xf1, 0xa5, 0xf2, 0x66, 0xf1, 0xa5, 0xf2, 0x66, 0xf1, 0xa5, - 0xf2, 0x66, 0xf1, 0xa5, 0xf2, 0x66, 0xf3, 0xa5, 0xf3, 0x67, 0xf3, 0xa5, - 0xf3, 0x67, 0xf3, 0xa5, 0xf3, 0x67, 0xf3, 0xa5, 0xf3, 0x67, 0xf4, 0xa5, - 0xf4, 0x67, 0xf4, 0xa5, 0xf4, 0x67, 0xf4, 0xa5, 0xf4, 0x67, 0xf4, 0xa5, - 0xf4, 0x67, 0xf5, 0xa5, 0xf5, 0x67, 0xf5, 0xa5, 0xf5, 0x59, 0xf5, 0xa5, - 0xf5, 0x59, 0xf5, 0xa5, 0xf5, 0x59, 0xf5, 0xa5, 0xf5, 0x59, 0xf6, 0xa5, - 0xf6, 0x59, 0xf7, 0xa5, 0xf6, 0x5a, 0xf8, 0xa5, 0xf6, 0x5a, 0xf7, 0xa5, - 0xf6, 0x5a, 0xf8, 0xa5, 0xf7, 0x5a, 0xf7, 0xa5, 0xf7, 0x5a, 0xf8, 0xa5, - 0xf7, 0x5a, 0xf7, 0xa5, 0xf7, 0x5a, 0xf8, 0xa5, 0xf8, 0x5a, 0xf8, 0xa5, - 0xf8, 0x5a, 0xf9, 0xa5, 0xf8, 0x5b, 0xfa, 0xa5, 0xf8, 0x5b, 0xf9, 0xa5, - 0xf8, 0x5b, 0xfa, 0xa5, 0xf9, 0x5b, 0xf9, 0xa5, 0xf9, 0x5b, 0xfa, 0xa5, - 0xf9, 0x5b, 0xf9, 0xa5, 0xf9, 0x5b, 0xfb, 0xa5, 0xfa, 0x61, 0xfc, 0xa5, - 0xfa, 0x60, 0xfb, 0xa5, 0xfa, 0x61, 0xfc, 0xa5, 0xfa, 0x60, 0xfb, 0xa5, - 0xfa, 0x61, 0xfc, 0xa5, 0xfb, 0x60, 0xfb, 0xa5, 0xfb, 0x61, 0xfc, 0xa5, - 0xfb, 0x60, 0xfc, 0xa5, 0xfb, 0x60, 0xfc, 0xa5, 0xfb, 0x60, 0xfc, 0xa5, - 0xfb, 0x60, 0xfc, 0xa5, 0xfb, 0x60, 0xfc, 0xa5, 0xfb, 0x60, 0xfc, 0xa5, - 0xfb, 0x60, 0xfd, 0xa5, 0xfb, 0x60, 0xfd, 0xa5, 0xfb, 0x60, 0xfd, 0xa5, - 0xfb, 0x60, 0xfd, 0xa5, 0xfb, 0x60, 0xfe, 0xa5, 0xfb, 0x60, 0xfe, 0xa5, - 0xfb, 0x60, 0xfe, 0xa5, 0xfb, 0x60, 0xfe, 0xa5, 0xfb, 0x60, 0xfe, 0xa5, - 0xfb, 0x60, 0xff, 0xa5, 0xfb, 0x60, 0xff, 0xa5, 0xfb, 0x60, 0x03, 0xaf, - 0x94, 0x61, 0x0a, 0xaf, 0x94, 0x61, 0x0f, 0xaf, 0x94, 0x61, 0x14, 0xaf, - 0x94, 0x61, 0x17, 0xaf, 0x94, 0x61, 0x1b, 0xaf, 0x94, 0x61, 0x1e, 0xaf, - 0x94, 0x61, 0x20, 0xad, 0x95, 0x61, 0x23, 0xaf, 0x94, 0x61, 0x25, 0xad, - 0x95, 0x61, 0x27, 0xaf, 0x94, 0x61, 0x29, 0xad, 0x95, 0x61, 0x2b, 0xaf, - 0x94, 0x61, 0x2d, 0xad, 0x95, 0x61, 0x2f, 0xaf, 0x94, 0x61, 0x31, 0xad, - 0x95, 0x61, 0x32, 0xaf, 0x94, 0x61, 0x34, 0xad, 0x95, 0x61, 0x35, 0xaf, - 0x94, 0x61, 0x37, 0xad, 0x95, 0x61, 0x38, 0xaf, 0x94, 0x61, 0x3a, 0xad, - 0x95, 0x61, 0x3b, 0xaa, 0x95, 0x61, 0x3c, 0xad, 0x95, 0x61, 0x3e, 0xaa, - 0x95, 0x61, 0x3f, 0xad, 0x95, 0x61, 0x40, 0xaa, 0x95, 0x61, 0x42, 0xad, - 0x95, 0x61, 0x43, 0xaa, 0x95, 0x61, 0x44, 0xad, 0x95, 0x61, 0x45, 0xaa, - 0x95, 0x61, 0x46, 0xad, 0x95, 0x61, 0x47, 0xaa, 0x95, 0x61, 0x48, 0xad, - 0x95, 0x61, 0x49, 0xaa, 0x95, 0x61, 0x4a, 0xad, 0x95, 0x61, 0x4b, 0xaa, - 0x95, 0x61, 0x4c, 0xad, 0x95, 0x61, 0x4d, 0xaa, 0x95, 0x61, 0x4e, 0xad, - 0x95, 0x61, 0x4f, 0xaa, 0x95, 0x61, 0x50, 0xad, 0x95, 0x61, 0x51, 0xaa, - 0x95, 0x61, 0x52, 0xad, 0x95, 0x61, 0x53, 0xaa, 0x95, 0x61, 0x54, 0xad, - 0x95, 0x61, 0x55, 0xaa, 0x95, 0x61, 0x56, 0xad, 0x95, 0x61, 0x57, 0xaa, - 0x95, 0x61, 0x58, 0xad, 0x95, 0x61, 0x58, 0xaa, 0x95, 0x61, 0x59, 0xad, - 0x95, 0x61, 0x5a, 0xaa, 0x95, 0x61, 0x5b, 0xad, 0x95, 0x61, 0x5c, 0xaa, - 0x95, 0x61, 0x5d, 0xad, 0x95, 0x61, 0x5d, 0xaa, 0x95, 0x61, 0x5e, 0xad, - 0x95, 0x61, 0x5f, 0xaa, 0x95, 0x61, 0x60, 0xad, 0x95, 0x61, 0x60, 0xaa, - 0x95, 0x61, 0x61, 0xad, 0x95, 0x61, 0x62, 0xaa, 0x95, 0x61, 0x63, 0xa8, - 0x96, 0x61, 0x63, 0xaa, 0x95, 0x61, 0x64, 0xa8, 0x96, 0x61, 0x65, 0xaa, - 0x95, 0x61, 0x66, 0xa8, 0x96, 0x61, 0x66, 0xaa, 0x95, 0x61, 0x67, 0xa8, - 0x96, 0x61, 0x68, 0xaa, 0x95, 0x61, 0x68, 0xa8, 0x96, 0x61, 0x69, 0xaa, - 0x95, 0x61, 0x6a, 0xa8, 0x96, 0x61, 0x6a, 0xaa, 0x95, 0x61, 0x6b, 0xa8, - 0x96, 0x61, 0x6c, 0xaa, 0x95, 0x61, 0x6c, 0xa8, 0x96, 0x61, 0x6d, 0xaa, - 0x95, 0x61, 0x6e, 0xa8, 0x96, 0x61, 0x6e, 0xaa, 0x95, 0x61, 0x6f, 0xa8, - 0x96, 0x61, 0x70, 0xaa, 0x95, 0x61, 0x70, 0xa8, 0x96, 0x61, 0x71, 0xaa, - 0x95, 0x61, 0x72, 0xa8, 0x96, 0x61, 0x72, 0xaa, 0x95, 0x61, 0x73, 0xa8, - 0x96, 0x61, 0x73, 0xaa, 0x95, 0x61, 0x74, 0xa8, 0x96, 0x61, 0x75, 0xaa, - 0x95, 0x61, 0x75, 0xa8, 0x96, 0x61, 0x76, 0xaa, 0x95, 0x61, 0x76, 0xa8, - 0x96, 0x61, 0x77, 0xaa, 0x95, 0x61, 0x78, 0xa8, 0x96, 0x61, 0x78, 0xaa, - 0x95, 0x61, 0x79, 0xa8, 0x96, 0x61, 0x79, 0xaa, 0x95, 0x61, 0x7a, 0xa8, - 0x96, 0x61, 0x7a, 0xaa, 0x95, 0x61, 0x7b, 0xa8, 0x96, 0x61, 0x7c, 0xaa, - 0x95, 0x61, 0x7c, 0xa8, 0x96, 0x61, 0x7d, 0xaa, 0x95, 0x61, 0x7d, 0xa8, - 0x96, 0x61, 0x7e, 0xaa, 0x95, 0x61, 0x7e, 0xa8, 0x96, 0x61, 0x7f, 0xaa, - 0x95, 0x61, 0x7f, 0xa8, 0x96, 0x61, 0x80, 0xaa, 0x95, 0x61, 0x81, 0xa8, - 0x96, 0x61, 0x81, 0xaa, 0x95, 0x61, 0x82, 0xa8, 0x96, 0x61, 0x82, 0xaa, - 0x95, 0x61, 0x83, 0xa8, 0x96, 0x61, 0x83, 0xaa, 0x95, 0x61, 0x84, 0xa8, - 0x96, 0x61, 0x84, 0xaa, 0x95, 0x61, 0x85, 0xa8, 0x96, 0x61, 0x85, 0xa6, - 0x96, 0x61, 0x86, 0xa8, 0x96, 0x61, 0x86, 0xa6, 0x96, 0x61, 0x87, 0xa8, - 0x96, 0x61, 0x87, 0xa6, 0x96, 0x61, 0x88, 0xa8, 0x96, 0x61, 0x88, 0xa6, - 0x96, 0x61, 0x89, 0xa8, 0x96, 0x61, 0x89, 0xa6, 0x96, 0x61, 0x8a, 0xa8, - 0x96, 0x61, 0x8a, 0xa6, 0x96, 0x61, 0x8b, 0xa8, 0x96, 0x61, 0x8b, 0xa6, - 0x96, 0x61, 0x8c, 0xa8, 0x96, 0x61, 0x8c, 0xa6, 0x96, 0x61, 0x8d, 0xa8, - 0x96, 0x61, 0x8d, 0xa6, 0x96, 0x61, 0x8e, 0xa8, 0x96, 0x61, 0x8e, 0xa6, - 0x96, 0x61, 0x8e, 0xa8, 0x96, 0x61, 0x8f, 0xa6, 0x96, 0x61, 0x8f, 0xa8, - 0x96, 0x61, 0x90, 0xa6, 0x96, 0x61, 0x90, 0xa8, 0x96, 0x61, 0x91, 0xa6, - 0x96, 0x61, 0x91, 0xa8, 0x96, 0x61, 0x92, 0xa6, 0x96, 0x61, 0x92, 0xa8, - 0x96, 0x61, 0x93, 0xa6, 0x96, 0x61, 0x93, 0xa6, 0x97, 0x61, 0x94, 0xa6, - 0x96, 0x61, 0x94, 0xa6, 0x97, 0x61, 0x94, 0xa6, 0x96, 0x61, 0x95, 0xa6, - 0x97, 0x61, 0x95, 0xa6, 0x96, 0x61, 0x96, 0xa6, 0x97, 0x61, 0x96, 0xa6, - 0x96, 0x60, 0x96, 0xa6, 0x97, 0x61, 0x96, 0xa6, 0x97, 0x60, 0x96, 0xa6, - 0x98, 0x61, 0x96, 0xa6, 0x98, 0x60, 0x9a, 0xa6, 0x98, 0x61, 0x9a, 0xa6, - 0x99, 0x62, 0x9a, 0xa6, 0x99, 0x61, 0x9a, 0xa6, 0x9a, 0x61, 0x9a, 0xa6, - 0x99, 0x61, 0x9a, 0xa6, 0x9a, 0x61, 0x9b, 0xa6, 0x99, 0x61, 0x9b, 0xa6, - 0x9a, 0x61, 0x9c, 0xa6, 0x99, 0x61, 0x9c, 0xa6, 0x9a, 0x61, 0x9d, 0xa6, - 0x99, 0x61, 0x9d, 0xa6, 0x9a, 0x61, 0x9d, 0xa3, 0x9a, 0x61, 0x9e, 0xa6, - 0x9a, 0x61, 0x9e, 0xa3, 0x9a, 0x61, 0x9f, 0xa6, 0x9a, 0x61, 0x9f, 0xa3, - 0x9a, 0x61, 0x9f, 0xa6, 0x9a, 0x61, 0xa0, 0xa3, 0x9a, 0x61, 0xa0, 0xa6, - 0x9a, 0x61, 0xa1, 0xa3, 0x9a, 0x61, 0xa1, 0xa6, 0x9a, 0x61, 0xa1, 0xa3, - 0x9a, 0x61, 0xa2, 0xa6, 0x9a, 0x61, 0xa2, 0xa3, 0x9a, 0x61, 0xa3, 0xa6, - 0x9a, 0x61, 0xa3, 0xa3, 0x9a, 0x61, 0xa3, 0xa6, 0x9a, 0x61, 0xa4, 0xaf, - 0xa3, 0x61, 0xa4, 0xaf, 0xa3, 0x61, 0xa5, 0xaf, 0xa3, 0x61, 0xa5, 0xaf, - 0xa3, 0x61, 0xa5, 0xaf, 0xa3, 0x61, 0xa6, 0xaf, 0xa3, 0x61, 0xa6, 0xaf, - 0xa3, 0x61, 0xa6, 0xaf, 0xa6, 0x61, 0xa7, 0xaf, 0xa7, 0x61, 0xa7, 0xaf, - 0xa7, 0x61, 0xa8, 0xaf, 0xa8, 0x61, 0xa8, 0xaf, 0xa7, 0x61, 0xa8, 0xaf, - 0xa8, 0x61, 0xa9, 0xaf, 0xa7, 0x61, 0xa9, 0xaf, 0xa8, 0x61, 0xaa, 0xaf, - 0xa7, 0x61, 0xaa, 0xaf, 0xa8, 0x61, 0xaa, 0xaf, 0xa7, 0x61, 0xab, 0xaf, - 0xa8, 0x61, 0xab, 0xaf, 0xa7, 0x61, 0xab, 0xaf, 0xa8, 0x61, 0xac, 0xb0, - 0xac, 0x61, 0xac, 0xb0, 0xab, 0x61, 0xac, 0xb0, 0xac, 0x61, 0xad, 0xb0, - 0xab, 0x61, 0xad, 0xb0, 0xac, 0x61, 0xae, 0xb0, 0xab, 0x61, 0xae, 0xb0, - 0xac, 0x61, 0xae, 0xb0, 0xab, 0x61, 0xaf, 0xb0, 0xac, 0x61, 0xaf, 0xb0, - 0xab, 0x61, 0xaf, 0xb0, 0xac, 0x61, 0xb0, 0xb1, 0xb0, 0x61, 0xb0, 0xb1, - 0xaf, 0x61, 0xb0, 0xb1, 0xb0, 0x61, 0xb1, 0xb1, 0xaf, 0x61, 0xb1, 0xb1, - 0xb0, 0x61, 0xb2, 0xb1, 0xaf, 0x61, 0xb2, 0xb1, 0xb0, 0x61, 0xb2, 0xb1, - 0xaf, 0x61, 0xb3, 0xb1, 0xb0, 0x61, 0xb3, 0xb1, 0xaf, 0x61, 0xb3, 0xb1, - 0xb0, 0x61, 0xb4, 0xb2, 0xb4, 0x61, 0xb4, 0xb2, 0xb3, 0x61, 0xb4, 0xb2, - 0xb4, 0x61, 0xb5, 0xb2, 0xb3, 0x61, 0xb5, 0xb2, 0xb4, 0x61, 0xb5, 0xb2, - 0xb3, 0x61, 0xb6, 0xb2, 0xb4, 0x61, 0xb6, 0xb2, 0xb3, 0x61, 0xb6, 0xb2, - 0xb4, 0x61, 0xb7, 0xb2, 0xb3, 0x61, 0xb7, 0xb2, 0xb4, 0x61, 0xb7, 0xb2, - 0xb7, 0x61, 0xb8, 0xb2, 0xb7, 0x61, 0xb8, 0xb2, 0xb7, 0x61, 0xb8, 0xb2, - 0xb7, 0x61, 0xb9, 0xb2, 0xb7, 0x61, 0xb9, 0xb2, 0xb7, 0x61, 0xb9, 0xb2, - 0xb7, 0x61, 0xba, 0xb2, 0xb7, 0x61, 0xba, 0xb2, 0xb7, 0x61, 0xba, 0xb2, - 0xb7, 0x61, 0xbb, 0xb2, 0xb7, 0x61, 0xbb, 0xb3, 0xbb, 0x61, 0xbb, 0xb2, - 0xb7, 0x61, 0xbc, 0xb3, 0xbb, 0x61, 0xbc, 0xb3, 0xbb, 0x61, 0xbc, 0xb3, - 0xbb, 0x61, 0xbd, 0xb3, 0xbb, 0x61, 0xbd, 0xb3, 0xbb, 0x61, 0xbd, 0xb3, - 0xbb, 0x61, 0xbe, 0xb3, 0xbb, 0x61, 0xbe, 0xb3, 0xbb, 0x61, 0xbe, 0xb3, - 0xbb, 0x61, 0xbf, 0xb3, 0xbb, 0x61, 0xbf, 0xb3, 0xbb, 0x61, 0xbf, 0xb4, - 0xbf, 0x61, 0xc0, 0xb4, 0xbe, 0x61, 0xc0, 0xb4, 0xbf, 0x61, 0xc0, 0xb4, - 0xbe, 0x61, 0xc1, 0xb4, 0xbf, 0x61, 0xc1, 0xb4, 0xbe, 0x61, 0xc1, 0xb4, - 0xbf, 0x61, 0xc1, 0x96, 0xc5, 0x61, 0xc2, 0x96, 0xc5, 0x61, 0xc2, 0x96, - 0xc5, 0x61, 0xc2, 0x96, 0xc5, 0x61, 0xc3, 0x96, 0xc5, 0x61, 0xc3, 0x96, - 0xc5, 0x61, 0xc3, 0x96, 0xc5, 0x61, 0xc4, 0x96, 0xc5, 0x61, 0xc4, 0x96, - 0xc5, 0x61, 0xc4, 0x97, 0xc8, 0x61, 0xc5, 0x97, 0xc8, 0x61, 0xc5, 0x97, - 0xc8, 0x61, 0xc5, 0x97, 0xc8, 0x61, 0xc6, 0x97, 0xc8, 0x61, 0xc6, 0x97, - 0xc8, 0x61, 0xc6, 0xa7, 0xd1, 0x61, 0xc6, 0xaa, 0xd0, 0x61, 0xc7, 0xa7, - 0xd1, 0x61, 0xc7, 0xaa, 0xd0, 0x61, 0xc7, 0xa7, 0xd1, 0x61, 0xc8, 0xaa, - 0xd0, 0x61, 0xc8, 0xa7, 0xd1, 0x61, 0xc8, 0xaa, 0xd0, 0x61, 0xc9, 0xa7, - 0xd1, 0x61, 0xc9, 0xaa, 0xd0, 0x61, 0xc9, 0xa7, 0xd1, 0x61, 0xc9, 0xaa, - 0xd0, 0x61, 0xca, 0xa7, 0xd1, 0x61, 0xca, 0xa6, 0xd1, 0x61, 0xca, 0xa7, - 0xd1, 0x61, 0xcb, 0xa6, 0xd1, 0x61, 0xcb, 0xa7, 0xd1, 0x61, 0xcb, 0xa6, - 0xd1, 0x61, 0xcc, 0xa7, 0xd1, 0x61, 0xcc, 0xa6, 0xd1, 0x61, 0xcc, 0xa7, - 0xd1, 0x61, 0xcc, 0xa6, 0xd1, 0x61, 0xcd, 0xa7, 0xd1, 0x61, 0xcd, 0xa6, - 0xd1, 0x61, 0xcd, 0xa7, 0xd1, 0x61, 0xce, 0xa6, 0xd1, 0x61, 0xce, 0xa7, - 0xd1, 0x61, 0xce, 0xa6, 0xd1, 0x61, 0xce, 0xa7, 0xd1, 0x61, 0xcf, 0xa6, - 0xd1, 0x61, 0xcf, 0xa7, 0xd1, 0x61, 0xcf, 0xa6, 0xd1, 0x61, 0xd0, 0xa7, - 0xd1, 0x61, 0xd0, 0xa6, 0xd1, 0x61, 0xd0, 0xa6, 0xd1, 0x61, 0xd0, 0xa6, - 0xd1, 0x61, 0xd1, 0xa6, 0xd1, 0x61, 0xd0, 0xa6, 0xd1, 0x61, 0xd1, 0xa6, - 0xd1, 0x61, 0xd0, 0xa6, 0xd2, 0x61, 0xd1, 0xa6, 0xd2, 0x61, 0xd1, 0xa6, - 0xd2, 0x5f, 0xd1, 0xa6, 0xd2, 0x61, 0xd1, 0xa6, 0xd3, 0x5f, 0xd1, 0xa6, - 0xd3, 0x61, 0xd1, 0xa6, 0xd3, 0x5f, 0xd1, 0xa6, 0xd4, 0x61, 0xd1, 0xa6, - 0xd4, 0x5f, 0xd1, 0xa6, 0xd4, 0x61, 0xd1, 0xa6, 0xd4, 0x5f, 0xd1, 0xa6, - 0xd5, 0x61, 0xd1, 0xa6, 0xd5, 0x5f, 0xd1, 0xa6, 0xd5, 0x61, 0xd1, 0xa6, - 0xd6, 0x5f, 0xd1, 0xa6, 0xd6, 0x61, 0xd1, 0xa6, 0xd6, 0x5f, 0xd1, 0xa6, - 0xd6, 0x61, 0xd1, 0xa6, 0xd7, 0x5f, 0xd1, 0xa6, 0xd7, 0x61, 0xd1, 0xa6, - 0xd7, 0x5f, 0xd1, 0xa6, 0xd7, 0x61, 0xd1, 0xa6, 0xd8, 0x5f, 0xd1, 0xa6, - 0xd8, 0x5c, 0xd1, 0xa6, 0xd8, 0x5f, 0xd1, 0xa6, 0xd9, 0x5c, 0xd1, 0xa6, - 0xd9, 0x5f, 0xd1, 0xa6, 0xd9, 0x5c, 0xd1, 0xa6, 0xd9, 0x5f, 0xd1, 0xa6, - 0xda, 0x5c, 0xd1, 0xa6, 0xda, 0x5f, 0xd1, 0xa6, 0xda, 0x5c, 0xd1, 0xa6, - 0xda, 0x5f, 0xd1, 0xa6, 0xdb, 0x5c, 0xd1, 0xa6, 0xdb, 0x5f, 0xdd, 0xa6, - 0xdb, 0x4f, 0xdd, 0xa6, 0xdb, 0x4f, 0xdd, 0xa6, 0xdc, 0x4f, 0xdf, 0xa6, - 0xdc, 0x50, 0xdf, 0xa6, 0xdc, 0x50, 0xdf, 0xa6, 0xdd, 0x50, 0xdf, 0xa6, - 0xdd, 0x50, 0xdf, 0xa6, 0xdd, 0x50, 0xdf, 0xa6, 0xdd, 0x50, 0xdf, 0xa6, - 0xde, 0x50, 0xdf, 0xa6, 0xde, 0x50, 0xdf, 0xa6, 0xde, 0x50, 0xdf, 0xa6, - 0xde, 0x50, 0xdf, 0xa6, 0xdf, 0x50, 0xdf, 0xa6, 0xdf, 0x50, 0xe2, 0xa6, - 0xdf, 0x51, 0xe2, 0xa6, 0xdf, 0x51, 0xe2, 0xa6, 0xe0, 0x51, 0xe2, 0xa6, - 0xe0, 0x51, 0xe2, 0xa6, 0xe0, 0x51, 0xe2, 0xa6, 0xe1, 0x51, 0xe2, 0xa6, - 0xe1, 0x51, 0xe2, 0xa6, 0xe1, 0x51, 0xe2, 0xa6, 0xe1, 0x51, 0xe4, 0xa6, - 0xe2, 0x52, 0xe4, 0xa6, 0xe2, 0x52, 0xe4, 0xa6, 0xe2, 0x52, 0xe4, 0xa6, - 0xe2, 0x52, 0xe4, 0xa6, 0xe3, 0x52, 0xe4, 0xa6, 0xe3, 0x52, 0xe4, 0xa6, - 0xe3, 0x52, 0xe4, 0xa6, 0xe3, 0x52, 0xe4, 0xa6, 0xe4, 0x52, 0xe6, 0xa6, - 0xe4, 0x53, 0xe7, 0xa6, 0xe4, 0x53, 0xe6, 0xa6, 0xe4, 0x53, 0xe7, 0xa6, - 0xe5, 0x53, 0xe6, 0xa6, 0xe5, 0x53, 0xe7, 0xa6, 0xe5, 0x53, 0xe6, 0xa6, - 0xe5, 0x53, 0xec, 0xa6, 0xe6, 0x66, 0xec, 0xa6, 0xe6, 0x67, 0xec, 0xa6, - 0xe6, 0x66, 0xec, 0xa6, 0xe6, 0x67, 0xec, 0xa6, 0xe7, 0x66, 0xec, 0xa6, - 0xe7, 0x67, 0xec, 0xa6, 0xe7, 0x66, 0xec, 0xa6, 0xe7, 0x67, 0xec, 0xa6, - 0xe8, 0x66, 0xec, 0xa6, 0xe8, 0x67, 0xec, 0xa6, 0xe8, 0x66, 0xec, 0xa6, - 0xe8, 0x67, 0xec, 0xa6, 0xe9, 0x66, 0xec, 0xa6, 0xe9, 0x67, 0xec, 0xa6, - 0xe9, 0x66, 0xec, 0xa6, 0xe9, 0x66, 0xec, 0xa6, 0xea, 0x66, 0xec, 0xa6, - 0xea, 0x66, 0xec, 0xa6, 0xea, 0x66, 0xec, 0xa6, 0xea, 0x66, 0xec, 0xa6, - 0xeb, 0x66, 0xec, 0xa6, 0xeb, 0x66, 0xec, 0xa6, 0xeb, 0x66, 0xec, 0xa6, - 0xeb, 0x66, 0xec, 0xa6, 0xec, 0x66, 0xec, 0xa6, 0xec, 0x66, 0xec, 0xa6, - 0xec, 0x66, 0xec, 0xa6, 0xec, 0x66, 0xec, 0xa6, 0xec, 0x66, 0xed, 0xa6, - 0xed, 0x66, 0xed, 0xa6, 0xed, 0x66, 0xed, 0xa6, 0xed, 0x66, 0xed, 0xa6, - 0xed, 0x66, 0xee, 0xa6, 0xee, 0x66, 0xee, 0xa6, 0xee, 0x66, 0xee, 0xa6, - 0xee, 0x66, 0xee, 0xa6, 0xee, 0x66, 0xef, 0xa6, 0xef, 0x66, 0xef, 0xa6, - 0xef, 0x66, 0xef, 0xa6, 0xef, 0x66, 0xef, 0xa6, 0xef, 0x66, 0xef, 0xa6, - 0xf0, 0x66, 0xef, 0xa6, 0xf0, 0x66, 0xef, 0xa6, 0xf0, 0x66, 0xef, 0xa6, - 0xf0, 0x66, 0xef, 0xa6, 0xf1, 0x66, 0xf1, 0xa6, 0xf1, 0x67, 0xf1, 0xa6, - 0xf1, 0x67, 0xf1, 0xa6, 0xf1, 0x67, 0xf2, 0xa6, 0xf2, 0x67, 0xf2, 0xa6, - 0xf2, 0x67, 0xf2, 0xa6, 0xf2, 0x67, 0xf2, 0xa6, 0xf2, 0x67, 0xf2, 0xa6, - 0xf2, 0x67, 0xf3, 0xa6, 0xf3, 0x67, 0xf3, 0xa6, 0xf3, 0x67, 0xf3, 0xa6, - 0xf3, 0x67, 0xf3, 0xa6, 0xf3, 0x67, 0xf3, 0xa6, 0xf4, 0x67, 0xf3, 0xa6, - 0xf4, 0x67, 0xf3, 0xa6, 0xf4, 0x67, 0xf3, 0xa6, 0xf4, 0x67, 0xf5, 0xa6, - 0xf5, 0x68, 0xf5, 0xa6, 0xf5, 0x68, 0xf5, 0xa6, 0xf5, 0x68, 0xf5, 0xa6, - 0xf5, 0x68, 0xf5, 0xa6, 0xf5, 0x68, 0xf6, 0xa6, 0xf6, 0x68, 0xf6, 0xa6, - 0xf6, 0x68, 0xf6, 0xa6, 0xf6, 0x5a, 0xf6, 0xa6, 0xf6, 0x5a, 0xf7, 0xa6, - 0xf7, 0x5a, 0xf8, 0xa6, 0xf7, 0x5b, 0xf8, 0xa6, 0xf7, 0x5b, 0xf8, 0xa6, - 0xf7, 0x5b, 0xf8, 0xa6, 0xf8, 0x5b, 0xf8, 0xa6, 0xf8, 0x5b, 0xf8, 0xa6, - 0xf8, 0x5b, 0xf8, 0xa6, 0xf8, 0x5b, 0xf8, 0xa6, 0xf8, 0x5b, 0xf9, 0xa6, - 0xf9, 0x5b, 0xfb, 0xa6, 0xf9, 0x64, 0xfb, 0xa6, 0xf9, 0x61, 0xfc, 0xa6, - 0xf9, 0x61, 0xfb, 0xa6, 0xfa, 0x61, 0xfc, 0xa6, 0xfa, 0x61, 0xfb, 0xa6, - 0xfa, 0x61, 0xfc, 0xa6, 0xfa, 0x61, 0xfb, 0xa6, 0xfa, 0x61, 0xfc, 0xa6, - 0xfb, 0x61, 0xfb, 0xa6, 0xfb, 0x61, 0xfc, 0xa6, 0xfb, 0x61, 0xfb, 0xa5, - 0xfb, 0x61, 0xfc, 0xa6, 0xfb, 0x61, 0xfc, 0xa5, 0xfb, 0x61, 0xfc, 0xa5, - 0xfb, 0x61, 0xfc, 0xa5, 0xfb, 0x61, 0xfc, 0xa5, 0xfb, 0x61, 0xfd, 0xa5, - 0xfb, 0x61, 0xfd, 0xa5, 0xfb, 0x61, 0xfd, 0xa5, 0xfb, 0x61, 0xfd, 0xa5, - 0xfb, 0x61, 0xfe, 0xa5, 0xfb, 0x61, 0xfe, 0xa5, 0xfb, 0x61, 0xfe, 0xa5, - 0xfb, 0x61, 0xfe, 0xa5, 0xfb, 0x61, 0xfe, 0xa5, 0xfb, 0x61, 0xff, 0xa5, - 0xfb, 0x61, 0xff, 0xa5, 0xfb, 0x61, 0x03, 0xaf, 0x94, 0x61, 0x0a, 0xaf, - 0x94, 0x61, 0x0f, 0xaf, 0x94, 0x61, 0x14, 0xaf, 0x94, 0x61, 0x17, 0xaf, - 0x94, 0x61, 0x1b, 0xaf, 0x94, 0x61, 0x1e, 0xaf, 0x94, 0x61, 0x20, 0xad, - 0x95, 0x61, 0x23, 0xaf, 0x94, 0x61, 0x25, 0xad, 0x95, 0x61, 0x27, 0xaf, - 0x94, 0x61, 0x29, 0xad, 0x95, 0x61, 0x2b, 0xaf, 0x94, 0x61, 0x2d, 0xad, - 0x95, 0x61, 0x2f, 0xaf, 0x94, 0x61, 0x31, 0xad, 0x95, 0x61, 0x32, 0xaf, - 0x94, 0x61, 0x34, 0xad, 0x95, 0x61, 0x35, 0xaf, 0x94, 0x61, 0x37, 0xad, - 0x95, 0x61, 0x38, 0xaf, 0x94, 0x61, 0x3a, 0xad, 0x95, 0x61, 0x3b, 0xaf, - 0x94, 0x61, 0x3c, 0xad, 0x95, 0x61, 0x3e, 0xaf, 0x94, 0x61, 0x3f, 0xad, - 0x95, 0x61, 0x40, 0xaf, 0x94, 0x61, 0x42, 0xad, 0x95, 0x61, 0x43, 0xaf, - 0x94, 0x61, 0x44, 0xad, 0x95, 0x61, 0x45, 0xaf, 0x94, 0x61, 0x46, 0xad, - 0x95, 0x61, 0x47, 0xaf, 0x94, 0x61, 0x48, 0xad, 0x95, 0x61, 0x49, 0xaf, - 0x94, 0x61, 0x4a, 0xad, 0x95, 0x61, 0x4b, 0xaf, 0x94, 0x61, 0x4c, 0xad, - 0x95, 0x61, 0x4d, 0xaf, 0x94, 0x61, 0x4e, 0xad, 0x95, 0x61, 0x4f, 0xaf, - 0x94, 0x61, 0x50, 0xad, 0x95, 0x61, 0x51, 0xaf, 0x94, 0x61, 0x52, 0xad, - 0x95, 0x61, 0x53, 0xaf, 0x94, 0x61, 0x54, 0xad, 0x95, 0x61, 0x55, 0xab, - 0x95, 0x61, 0x56, 0xad, 0x95, 0x61, 0x57, 0xab, 0x95, 0x61, 0x58, 0xad, - 0x95, 0x61, 0x58, 0xab, 0x95, 0x61, 0x59, 0xad, 0x95, 0x61, 0x5a, 0xab, - 0x95, 0x61, 0x5b, 0xad, 0x95, 0x61, 0x5c, 0xab, 0x95, 0x61, 0x5d, 0xad, - 0x95, 0x61, 0x5d, 0xab, 0x95, 0x61, 0x5e, 0xad, 0x95, 0x61, 0x5f, 0xab, - 0x95, 0x61, 0x60, 0xad, 0x95, 0x61, 0x60, 0xab, 0x95, 0x61, 0x61, 0xad, - 0x95, 0x61, 0x62, 0xab, 0x95, 0x61, 0x63, 0xad, 0x95, 0x61, 0x63, 0xab, - 0x95, 0x61, 0x64, 0xad, 0x95, 0x61, 0x65, 0xab, 0x95, 0x61, 0x66, 0xad, - 0x95, 0x61, 0x66, 0xab, 0x95, 0x61, 0x67, 0xad, 0x95, 0x61, 0x68, 0xab, - 0x95, 0x61, 0x68, 0xad, 0x95, 0x61, 0x69, 0xab, 0x95, 0x61, 0x6a, 0xad, - 0x95, 0x61, 0x6a, 0xab, 0x95, 0x61, 0x6b, 0xad, 0x95, 0x61, 0x6c, 0xab, - 0x95, 0x61, 0x6c, 0xad, 0x95, 0x61, 0x6d, 0xab, 0x95, 0x61, 0x6e, 0xad, - 0x95, 0x61, 0x6e, 0xab, 0x95, 0x61, 0x6f, 0xad, 0x95, 0x61, 0x70, 0xab, - 0x95, 0x61, 0x70, 0xa8, 0x96, 0x61, 0x71, 0xab, 0x95, 0x61, 0x72, 0xa8, - 0x96, 0x61, 0x72, 0xab, 0x95, 0x61, 0x73, 0xa8, 0x96, 0x61, 0x73, 0xab, - 0x95, 0x61, 0x74, 0xa8, 0x96, 0x61, 0x75, 0xab, 0x95, 0x61, 0x75, 0xa8, - 0x96, 0x61, 0x76, 0xab, 0x95, 0x61, 0x76, 0xa8, 0x96, 0x61, 0x77, 0xab, - 0x95, 0x61, 0x78, 0xa8, 0x96, 0x61, 0x78, 0xab, 0x95, 0x61, 0x79, 0xa8, - 0x96, 0x61, 0x79, 0xab, 0x95, 0x61, 0x7a, 0xa8, 0x96, 0x61, 0x7a, 0xab, - 0x95, 0x61, 0x7b, 0xa8, 0x96, 0x61, 0x7c, 0xab, 0x95, 0x61, 0x7c, 0xa8, - 0x96, 0x61, 0x7d, 0xab, 0x95, 0x61, 0x7d, 0xa8, 0x96, 0x61, 0x7e, 0xab, - 0x95, 0x61, 0x7e, 0xa8, 0x96, 0x61, 0x7f, 0xab, 0x95, 0x61, 0x7f, 0xa8, - 0x96, 0x61, 0x80, 0xab, 0x95, 0x61, 0x81, 0xa8, 0x96, 0x61, 0x81, 0xab, - 0x95, 0x61, 0x82, 0xa8, 0x96, 0x61, 0x82, 0xab, 0x95, 0x61, 0x83, 0xa8, - 0x96, 0x61, 0x83, 0xab, 0x95, 0x61, 0x84, 0xa8, 0x96, 0x61, 0x84, 0xab, - 0x95, 0x61, 0x85, 0xa8, 0x96, 0x61, 0x85, 0xa6, 0x96, 0x61, 0x86, 0xa8, - 0x96, 0x61, 0x86, 0xa6, 0x96, 0x61, 0x87, 0xa8, 0x96, 0x61, 0x87, 0xa6, - 0x96, 0x61, 0x88, 0xa8, 0x96, 0x61, 0x88, 0xa6, 0x96, 0x61, 0x89, 0xa8, - 0x96, 0x61, 0x89, 0xa6, 0x96, 0x61, 0x8a, 0xa8, 0x96, 0x61, 0x8a, 0xa6, - 0x96, 0x61, 0x8b, 0xa8, 0x96, 0x61, 0x8b, 0xa6, 0x96, 0x61, 0x8c, 0xa8, - 0x96, 0x61, 0x8c, 0xa6, 0x96, 0x61, 0x8d, 0xa8, 0x96, 0x61, 0x8d, 0xa6, - 0x96, 0x61, 0x8e, 0xa8, 0x96, 0x61, 0x8e, 0xa6, 0x96, 0x61, 0x8e, 0xa8, - 0x96, 0x61, 0x8f, 0xa6, 0x96, 0x61, 0x8f, 0xa8, 0x96, 0x61, 0x90, 0xa6, - 0x96, 0x61, 0x90, 0xa8, 0x96, 0x61, 0x91, 0xa6, 0x96, 0x61, 0x91, 0xa8, - 0x96, 0x61, 0x92, 0xa6, 0x96, 0x61, 0x92, 0xa8, 0x96, 0x61, 0x93, 0xa6, - 0x96, 0x61, 0x93, 0xa6, 0x97, 0x61, 0x94, 0xa6, 0x96, 0x61, 0x94, 0xa6, - 0x97, 0x61, 0x94, 0xa6, 0x96, 0x61, 0x95, 0xa6, 0x97, 0x61, 0x95, 0xa6, - 0x96, 0x61, 0x96, 0xa6, 0x97, 0x61, 0x95, 0xa6, 0x96, 0x61, 0x96, 0xa6, - 0x97, 0x61, 0x95, 0xa6, 0x97, 0x61, 0x96, 0xa6, 0x98, 0x61, 0x9a, 0xa6, - 0x98, 0x61, 0x9a, 0xa6, 0x98, 0x61, 0x9a, 0xa6, 0x99, 0x61, 0x9a, 0xa6, - 0x99, 0x61, 0x9a, 0xa5, 0x9a, 0x61, 0x9a, 0xa6, 0x99, 0x61, 0x9a, 0xa5, - 0x9a, 0x61, 0x9b, 0xa6, 0x99, 0x61, 0x9b, 0xa5, 0x9a, 0x61, 0x9c, 0xa6, - 0x99, 0x61, 0x9c, 0xa5, 0x9a, 0x61, 0x9d, 0xa6, 0x99, 0x61, 0x9d, 0xa5, - 0x9a, 0x61, 0x9d, 0xa6, 0x99, 0x61, 0x9e, 0xa5, 0x9a, 0x61, 0x9e, 0xa6, - 0x99, 0x61, 0x9f, 0xa5, 0x9a, 0x61, 0x9f, 0xa6, 0x99, 0x61, 0x9f, 0xa5, - 0x9a, 0x61, 0xa0, 0xa6, 0x99, 0x61, 0xa0, 0xa5, 0x9a, 0x61, 0xa1, 0xa3, - 0x9a, 0x61, 0xa1, 0xa5, 0x9a, 0x61, 0xa1, 0xa3, 0x9a, 0x61, 0xa2, 0xa5, - 0x9a, 0x61, 0xa2, 0xa3, 0x9a, 0x61, 0xa3, 0xa5, 0x9a, 0x61, 0xa3, 0xae, - 0xa1, 0x61, 0xa3, 0xae, 0xa1, 0x61, 0xa4, 0xae, 0xa1, 0x61, 0xa4, 0xae, - 0xa1, 0x61, 0xa5, 0xaf, 0xa5, 0x61, 0xa5, 0xaf, 0xa5, 0x61, 0xa5, 0xaf, - 0xa5, 0x61, 0xa6, 0xaf, 0xa5, 0x61, 0xa6, 0xaf, 0xa5, 0x61, 0xa6, 0xaf, - 0xa5, 0x61, 0xa7, 0xaf, 0xa5, 0x61, 0xa7, 0xaf, 0xa5, 0x61, 0xa8, 0xaf, - 0xa5, 0x61, 0xa8, 0xaf, 0xa5, 0x61, 0xa8, 0xaf, 0xa5, 0x61, 0xa9, 0xb0, - 0xa9, 0x61, 0xa9, 0xb0, 0xa9, 0x61, 0xaa, 0xb0, 0xaa, 0x61, 0xaa, 0xb0, - 0xa9, 0x61, 0xaa, 0xb0, 0xaa, 0x61, 0xab, 0xb0, 0xa9, 0x61, 0xab, 0xb0, - 0xaa, 0x61, 0xab, 0xb0, 0xa9, 0x61, 0xac, 0xb0, 0xaa, 0x61, 0xac, 0xb0, - 0xa9, 0x61, 0xac, 0xb0, 0xaa, 0x61, 0xad, 0xb0, 0xa9, 0x61, 0xad, 0xb0, - 0xaa, 0x61, 0xae, 0xb0, 0xae, 0x61, 0xae, 0xb0, 0xad, 0x61, 0xae, 0xb0, - 0xae, 0x61, 0xaf, 0xb0, 0xad, 0x61, 0xaf, 0xb0, 0xae, 0x61, 0xaf, 0xb0, - 0xad, 0x61, 0xb0, 0xb0, 0xae, 0x61, 0xb0, 0xb0, 0xad, 0x61, 0xb0, 0xb0, - 0xae, 0x61, 0xb1, 0xb0, 0xad, 0x61, 0xb1, 0xb0, 0xae, 0x61, 0xb2, 0xb1, - 0xb2, 0x61, 0xb2, 0xb1, 0xb1, 0x61, 0xb2, 0xb1, 0xb2, 0x61, 0xb3, 0xb1, - 0xb1, 0x61, 0xb3, 0xb1, 0xb2, 0x61, 0xb3, 0xb1, 0xb1, 0x61, 0xb4, 0xb1, - 0xb2, 0x61, 0xb4, 0xb1, 0xb1, 0x61, 0xb4, 0xb1, 0xb2, 0x61, 0xb5, 0xb1, - 0xb1, 0x61, 0xb5, 0xb1, 0xb2, 0x61, 0xb5, 0xb2, 0xb5, 0x61, 0xb6, 0xb2, - 0xb5, 0x61, 0xb6, 0xb2, 0xb5, 0x61, 0xb6, 0xb2, 0xb5, 0x61, 0xb7, 0xb2, - 0xb5, 0x61, 0xb7, 0xb2, 0xb5, 0x61, 0xb7, 0xb2, 0xb5, 0x61, 0xb8, 0xb2, - 0xb5, 0x61, 0xb8, 0xb2, 0xb5, 0x61, 0xb8, 0xb2, 0xb5, 0x61, 0xb9, 0xb2, - 0xb5, 0x61, 0xb9, 0xb3, 0xb9, 0x61, 0xb9, 0xb3, 0xb9, 0x61, 0xba, 0xb3, - 0xb9, 0x61, 0xba, 0xb3, 0xb9, 0x61, 0xba, 0xb3, 0xb9, 0x61, 0xbb, 0xb3, - 0xb9, 0x61, 0xbb, 0xb3, 0xb9, 0x61, 0xbb, 0xb3, 0xb9, 0x61, 0xbc, 0xb3, - 0xb9, 0x61, 0xbc, 0xb3, 0xb9, 0x61, 0xbc, 0xb3, 0xb9, 0x61, 0xbd, 0xb3, - 0xb9, 0x61, 0xbd, 0xb3, 0xbd, 0x61, 0xbd, 0xb3, 0xb9, 0x61, 0xbe, 0xb3, - 0xbd, 0x61, 0xbe, 0xb3, 0xbd, 0x61, 0xbe, 0xb3, 0xbd, 0x61, 0xbf, 0xb3, - 0xbd, 0x61, 0xbf, 0xb3, 0xbd, 0x61, 0xbf, 0xb3, 0xbd, 0x61, 0xc0, 0xb3, - 0xbd, 0x61, 0xc0, 0xb3, 0xbd, 0x61, 0xc0, 0xb3, 0xbd, 0x61, 0xc1, 0xb3, - 0xbd, 0x61, 0xc1, 0xb3, 0xbd, 0x61, 0xc1, 0xb4, 0xc1, 0x61, 0xc1, 0xb4, - 0xc0, 0x61, 0xc2, 0xb4, 0xc1, 0x61, 0xc2, 0xb4, 0xc0, 0x61, 0xc2, 0xb4, - 0xc1, 0x61, 0xc3, 0xb4, 0xc0, 0x61, 0xc3, 0xb4, 0xc1, 0x61, 0xc3, 0x97, - 0xc6, 0x61, 0xc4, 0x97, 0xc7, 0x61, 0xc4, 0x97, 0xc6, 0x61, 0xc4, 0x97, - 0xc7, 0x61, 0xc5, 0x97, 0xc6, 0x61, 0xc5, 0x97, 0xc7, 0x61, 0xc5, 0x97, - 0xc6, 0x61, 0xc6, 0xa7, 0xd1, 0x61, 0xc6, 0xa9, 0xd0, 0x61, 0xc6, 0xa7, - 0xd1, 0x61, 0xc6, 0xa9, 0xd0, 0x61, 0xc7, 0xa7, 0xd1, 0x61, 0xc7, 0xa9, - 0xd0, 0x61, 0xc7, 0xa7, 0xd1, 0x61, 0xc8, 0xa9, 0xd0, 0x61, 0xc8, 0xa7, - 0xd1, 0x61, 0xc8, 0xa9, 0xd0, 0x61, 0xc9, 0xa7, 0xd1, 0x61, 0xc9, 0xa9, - 0xd0, 0x61, 0xc9, 0xa7, 0xd1, 0x61, 0xc9, 0xa9, 0xd0, 0x61, 0xca, 0xa7, - 0xd1, 0x61, 0xca, 0xa9, 0xd0, 0x61, 0xca, 0xa7, 0xd1, 0x61, 0xcb, 0xa9, - 0xd0, 0x61, 0xcb, 0xa7, 0xd1, 0x61, 0xcb, 0xa9, 0xd0, 0x61, 0xcc, 0xa7, - 0xd1, 0x61, 0xcc, 0xa9, 0xd0, 0x61, 0xcc, 0xa7, 0xd1, 0x61, 0xcc, 0xa6, - 0xd1, 0x61, 0xcd, 0xa7, 0xd1, 0x61, 0xcd, 0xa6, 0xd1, 0x61, 0xcd, 0xa7, - 0xd1, 0x61, 0xce, 0xa6, 0xd1, 0x61, 0xce, 0xa7, 0xd1, 0x61, 0xce, 0xa6, - 0xd1, 0x61, 0xce, 0xa7, 0xd1, 0x61, 0xcf, 0xa6, 0xd1, 0x61, 0xcf, 0xa7, - 0xd1, 0x61, 0xcf, 0xa6, 0xd1, 0x61, 0xd0, 0xa7, 0xd1, 0x61, 0xd0, 0xa6, - 0xd1, 0x61, 0xd0, 0xa7, 0xd1, 0x61, 0xd0, 0xa6, 0xd1, 0x61, 0xd1, 0xa7, - 0xd1, 0x61, 0xd0, 0xa6, 0xd1, 0x61, 0xd1, 0xa6, 0xd1, 0x61, 0xd0, 0xa6, - 0xd2, 0x61, 0xd1, 0xa6, 0xd2, 0x61, 0xd1, 0xa6, 0xd2, 0x5f, 0xd1, 0xa6, - 0xd2, 0x61, 0xd1, 0xa6, 0xd3, 0x5f, 0xd1, 0xa6, 0xd3, 0x61, 0xd1, 0xa6, - 0xd3, 0x5f, 0xd1, 0xa6, 0xd4, 0x61, 0xd1, 0xa6, 0xd4, 0x5f, 0xd1, 0xa6, - 0xd4, 0x61, 0xd1, 0xa6, 0xd4, 0x5f, 0xd1, 0xa6, 0xd5, 0x61, 0xd1, 0xa6, - 0xd5, 0x5f, 0xd1, 0xa6, 0xd5, 0x61, 0xd1, 0xa6, 0xd6, 0x5f, 0xd1, 0xa6, - 0xd6, 0x61, 0xd1, 0xa6, 0xd6, 0x5f, 0xd1, 0xa6, 0xd6, 0x61, 0xd1, 0xa6, - 0xd7, 0x5f, 0xd1, 0xa6, 0xd7, 0x61, 0xd1, 0xa6, 0xd7, 0x5f, 0xd1, 0xa6, - 0xd7, 0x61, 0xd1, 0xa6, 0xd8, 0x5f, 0xd1, 0xa6, 0xd8, 0x5c, 0xd1, 0xa6, - 0xd8, 0x5f, 0xd1, 0xa6, 0xd9, 0x5c, 0xd1, 0xa6, 0xd9, 0x5f, 0xd1, 0xa6, - 0xd9, 0x5c, 0xd1, 0xa6, 0xd9, 0x5f, 0xd1, 0xa6, 0xda, 0x5c, 0xd1, 0xa6, - 0xda, 0x5f, 0xd1, 0xa6, 0xda, 0x5c, 0xd1, 0xa6, 0xda, 0x5f, 0xd1, 0xa6, - 0xdb, 0x5c, 0xd1, 0xa6, 0xdb, 0x5f, 0xd1, 0xa6, 0xdb, 0x5c, 0xde, 0xa6, - 0xdb, 0x4f, 0xde, 0xa6, 0xdc, 0x4f, 0xde, 0xa6, 0xdc, 0x4f, 0xde, 0xa6, - 0xdc, 0x4f, 0xde, 0xa6, 0xdd, 0x4f, 0xde, 0xa6, 0xdd, 0x4f, 0xde, 0xa6, - 0xdd, 0x4f, 0xe1, 0xa6, 0xdd, 0x50, 0xe1, 0xa6, 0xde, 0x50, 0xe1, 0xa6, - 0xde, 0x50, 0xe1, 0xa6, 0xde, 0x50, 0xe1, 0xa6, 0xde, 0x50, 0xe1, 0xa6, - 0xdf, 0x50, 0xe1, 0xa6, 0xdf, 0x50, 0xe1, 0xa6, 0xdf, 0x50, 0xe1, 0xa6, - 0xdf, 0x50, 0xe3, 0xa6, 0xe0, 0x51, 0xe1, 0xa6, 0xe0, 0x50, 0xe3, 0xa6, - 0xe0, 0x51, 0xe3, 0xa6, 0xe1, 0x51, 0xe3, 0xa6, 0xe1, 0x51, 0xe3, 0xa6, - 0xe1, 0x51, 0xe3, 0xa6, 0xe1, 0x51, 0xe3, 0xa6, 0xe2, 0x51, 0xe3, 0xa6, - 0xe2, 0x51, 0xe3, 0xa6, 0xe2, 0x51, 0xe3, 0xa6, 0xe2, 0x51, 0xe3, 0xa6, - 0xe3, 0x51, 0xe5, 0xa6, 0xe3, 0x52, 0xe6, 0xa6, 0xe3, 0x52, 0xe5, 0xa6, - 0xe3, 0x52, 0xe6, 0xa6, 0xe4, 0x52, 0xe5, 0xa6, 0xe4, 0x52, 0xe6, 0xa6, - 0xe4, 0x52, 0xe5, 0xa6, 0xe4, 0x52, 0xe6, 0xa6, 0xe5, 0x52, 0xe5, 0xa6, - 0xe5, 0x52, 0xec, 0xa6, 0xe5, 0x65, 0xec, 0xa6, 0xe5, 0x67, 0xec, 0xa6, - 0xe6, 0x65, 0xec, 0xa6, 0xe6, 0x67, 0xec, 0xa6, 0xe6, 0x65, 0xec, 0xa6, - 0xe6, 0x67, 0xec, 0xa6, 0xe7, 0x65, 0xec, 0xa6, 0xe7, 0x67, 0xec, 0xa6, - 0xe7, 0x65, 0xec, 0xa6, 0xe7, 0x65, 0xec, 0xa6, 0xe8, 0x65, 0xec, 0xa6, - 0xe8, 0x65, 0xec, 0xa6, 0xe8, 0x65, 0xec, 0xa6, 0xe8, 0x65, 0xec, 0xa6, - 0xe9, 0x65, 0xec, 0xa6, 0xe9, 0x65, 0xec, 0xa6, 0xe9, 0x65, 0xec, 0xa6, - 0xe9, 0x65, 0xec, 0xa6, 0xea, 0x65, 0xec, 0xa6, 0xea, 0x65, 0xec, 0xa6, - 0xea, 0x65, 0xec, 0xa6, 0xea, 0x65, 0xec, 0xa6, 0xeb, 0x65, 0xec, 0xa6, - 0xeb, 0x65, 0xec, 0xa6, 0xeb, 0x65, 0xec, 0xa6, 0xeb, 0x65, 0xec, 0xa6, - 0xec, 0x65, 0xec, 0xa6, 0xec, 0x65, 0xec, 0xa6, 0xec, 0x65, 0xec, 0xa6, - 0xec, 0x65, 0xec, 0xa6, 0xec, 0x65, 0xed, 0xa6, 0xed, 0x65, 0xed, 0xa6, - 0xed, 0x65, 0xed, 0xa6, 0xed, 0x65, 0xed, 0xa6, 0xed, 0x65, 0xed, 0xa6, - 0xee, 0x65, 0xed, 0xa6, 0xee, 0x65, 0xed, 0xa6, 0xee, 0x65, 0xee, 0xa6, - 0xee, 0x66, 0xef, 0xa6, 0xef, 0x66, 0xef, 0xa6, 0xef, 0x66, 0xef, 0xa6, - 0xef, 0x66, 0xef, 0xa6, 0xef, 0x66, 0xf0, 0xa6, 0xf0, 0x66, 0xf0, 0xa6, - 0xf0, 0x66, 0xf0, 0xa6, 0xf0, 0x66, 0xf0, 0xa6, 0xf0, 0x66, 0xf1, 0xa6, - 0xf1, 0x66, 0xf1, 0xa6, 0xf1, 0x66, 0xf1, 0xa6, 0xf1, 0x66, 0xf1, 0xa6, - 0xf1, 0x66, 0xf1, 0xa6, 0xf2, 0x66, 0xf1, 0xa6, 0xf2, 0x66, 0xf1, 0xa6, - 0xf2, 0x66, 0xf1, 0xa6, 0xf2, 0x66, 0xf1, 0xa6, 0xf2, 0x66, 0xf3, 0xa6, - 0xf3, 0x67, 0xf3, 0xa6, 0xf3, 0x67, 0xf3, 0xa6, 0xf3, 0x67, 0xf3, 0xa6, - 0xf3, 0x67, 0xf4, 0xa6, 0xf4, 0x67, 0xf4, 0xa6, 0xf4, 0x67, 0xf4, 0xa6, - 0xf4, 0x67, 0xf4, 0xa6, 0xf4, 0x67, 0xf5, 0xa6, 0xf5, 0x67, 0xf4, 0xa6, - 0xf5, 0x67, 0xf5, 0xa6, 0xf5, 0x67, 0xf4, 0xa6, 0xf5, 0x67, 0xf5, 0xa6, - 0xf5, 0x67, 0xf4, 0xa6, 0xf6, 0x67, 0xf5, 0xa6, 0xf6, 0x67, 0xf6, 0xa6, - 0xf6, 0x68, 0xf6, 0xa6, 0xf6, 0x68, 0xf6, 0xa6, 0xf7, 0x68, 0xf7, 0xa6, - 0xf7, 0x5a, 0xf8, 0xa6, 0xf7, 0x5a, 0xf7, 0xa6, 0xf7, 0x5a, 0xf8, 0xa6, - 0xf8, 0x5a, 0xf8, 0xa6, 0xf8, 0x5a, 0xf9, 0xa6, 0xf8, 0x5b, 0xfa, 0xa6, - 0xf8, 0x5b, 0xf9, 0xa6, 0xf8, 0x5b, 0xfb, 0xa6, 0xf9, 0x61, 0xfb, 0xa6, - 0xf9, 0x64, 0xfb, 0xa6, 0xf9, 0x61, 0xfb, 0xa6, 0xf9, 0x64, 0xfb, 0xa6, - 0xfa, 0x61, 0xfc, 0xa6, 0xfa, 0x61, 0xfb, 0xa6, 0xfa, 0x61, 0xfc, 0xa6, - 0xfa, 0x61, 0xfb, 0xa6, 0xfa, 0x61, 0xfc, 0xa6, 0xfb, 0x61, 0xfb, 0xa6, - 0xfb, 0x61, 0xfc, 0xa6, 0xfb, 0x61, 0xfb, 0xa5, 0xfb, 0x61, 0xfc, 0xa6, - 0xfb, 0x61, 0xfc, 0xa5, 0xfb, 0x61, 0xfc, 0xa5, 0xfb, 0x61, 0xfc, 0xa5, - 0xfb, 0x61, 0xfc, 0xa5, 0xfb, 0x61, 0xfd, 0xa5, 0xfb, 0x61, 0xfd, 0xa5, - 0xfb, 0x61, 0xfd, 0xa5, 0xfb, 0x61, 0xfd, 0xa5, 0xfb, 0x61, 0xfe, 0xa5, - 0xfb, 0x61, 0xfe, 0xa5, 0xfb, 0x61, 0xfe, 0xa5, 0xfb, 0x61, 0xfe, 0xa5, - 0xfb, 0x61, 0xfe, 0xa5, 0xfb, 0x61, 0xff, 0xa5, 0xfb, 0x61, 0xff, 0xa5, - 0xfb, 0x61, 0x03, 0xaf, 0x94, 0x62, 0x0a, 0xaf, 0x94, 0x62, 0x0f, 0xaf, - 0x94, 0x62, 0x14, 0xaf, 0x94, 0x62, 0x17, 0xaf, 0x94, 0x62, 0x1b, 0xaf, - 0x94, 0x62, 0x1e, 0xaf, 0x94, 0x62, 0x20, 0xb2, 0x94, 0x62, 0x23, 0xaf, - 0x94, 0x62, 0x25, 0xad, 0x95, 0x62, 0x27, 0xaf, 0x94, 0x62, 0x29, 0xad, - 0x95, 0x62, 0x2b, 0xaf, 0x94, 0x62, 0x2d, 0xad, 0x95, 0x62, 0x2f, 0xaf, - 0x94, 0x62, 0x31, 0xad, 0x95, 0x62, 0x32, 0xaf, 0x94, 0x62, 0x34, 0xad, - 0x95, 0x62, 0x35, 0xaf, 0x94, 0x62, 0x37, 0xad, 0x95, 0x62, 0x38, 0xaf, - 0x94, 0x62, 0x3a, 0xad, 0x95, 0x62, 0x3b, 0xaf, 0x94, 0x62, 0x3c, 0xad, - 0x95, 0x62, 0x3e, 0xaf, 0x94, 0x62, 0x3f, 0xad, 0x95, 0x62, 0x40, 0xaf, - 0x94, 0x62, 0x42, 0xad, 0x95, 0x62, 0x43, 0xaf, 0x94, 0x62, 0x44, 0xad, - 0x95, 0x62, 0x45, 0xaf, 0x94, 0x62, 0x46, 0xad, 0x95, 0x62, 0x47, 0xaf, - 0x94, 0x62, 0x48, 0xad, 0x95, 0x62, 0x49, 0xaa, 0x95, 0x62, 0x4a, 0xad, - 0x95, 0x62, 0x4b, 0xaa, 0x95, 0x62, 0x4c, 0xad, 0x95, 0x62, 0x4d, 0xaa, - 0x95, 0x62, 0x4e, 0xad, 0x95, 0x62, 0x4f, 0xaa, 0x95, 0x62, 0x50, 0xad, - 0x95, 0x62, 0x51, 0xaa, 0x95, 0x62, 0x52, 0xad, 0x95, 0x62, 0x53, 0xaa, - 0x95, 0x62, 0x54, 0xad, 0x95, 0x62, 0x55, 0xaa, 0x95, 0x62, 0x56, 0xad, - 0x95, 0x62, 0x57, 0xaa, 0x95, 0x62, 0x58, 0xad, 0x95, 0x62, 0x58, 0xaa, - 0x95, 0x62, 0x59, 0xad, 0x95, 0x62, 0x5a, 0xaa, 0x95, 0x62, 0x5b, 0xad, - 0x95, 0x62, 0x5c, 0xaa, 0x95, 0x62, 0x5d, 0xad, 0x95, 0x62, 0x5d, 0xaa, - 0x95, 0x62, 0x5e, 0xad, 0x95, 0x62, 0x5f, 0xaa, 0x95, 0x62, 0x60, 0xad, - 0x95, 0x62, 0x60, 0xaa, 0x95, 0x62, 0x61, 0xad, 0x95, 0x62, 0x62, 0xaa, - 0x95, 0x62, 0x63, 0xad, 0x95, 0x62, 0x63, 0xaa, 0x95, 0x62, 0x64, 0xad, - 0x95, 0x62, 0x65, 0xaa, 0x95, 0x62, 0x66, 0xad, 0x95, 0x62, 0x66, 0xaa, - 0x95, 0x62, 0x67, 0xad, 0x95, 0x62, 0x68, 0xaa, 0x95, 0x62, 0x68, 0xad, - 0x95, 0x62, 0x69, 0xaa, 0x95, 0x62, 0x6a, 0xad, 0x95, 0x62, 0x6a, 0xaa, - 0x95, 0x62, 0x6b, 0xad, 0x95, 0x62, 0x6c, 0xaa, 0x95, 0x62, 0x6c, 0xad, - 0x95, 0x62, 0x6d, 0xaa, 0x95, 0x62, 0x6e, 0xa8, 0x96, 0x62, 0x6e, 0xaa, - 0x95, 0x62, 0x6f, 0xa8, 0x96, 0x62, 0x70, 0xaa, 0x95, 0x62, 0x70, 0xa8, - 0x96, 0x62, 0x71, 0xaa, 0x95, 0x62, 0x72, 0xa8, 0x96, 0x62, 0x72, 0xaa, - 0x95, 0x62, 0x73, 0xa8, 0x96, 0x62, 0x73, 0xaa, 0x95, 0x62, 0x74, 0xa8, - 0x96, 0x62, 0x75, 0xaa, 0x95, 0x62, 0x75, 0xa8, 0x96, 0x62, 0x76, 0xaa, - 0x95, 0x62, 0x76, 0xa8, 0x96, 0x62, 0x77, 0xaa, 0x95, 0x62, 0x78, 0xa8, - 0x96, 0x62, 0x78, 0xaa, 0x95, 0x62, 0x79, 0xa8, 0x96, 0x62, 0x79, 0xaa, - 0x95, 0x62, 0x7a, 0xa8, 0x96, 0x62, 0x7a, 0xaa, 0x95, 0x62, 0x7b, 0xa8, - 0x96, 0x62, 0x7c, 0xaa, 0x95, 0x62, 0x7c, 0xa8, 0x96, 0x62, 0x7d, 0xaa, - 0x95, 0x62, 0x7d, 0xa8, 0x96, 0x62, 0x7e, 0xaa, 0x95, 0x62, 0x7e, 0xa8, - 0x96, 0x62, 0x7f, 0xaa, 0x95, 0x62, 0x7f, 0xa8, 0x96, 0x62, 0x80, 0xaa, - 0x95, 0x62, 0x81, 0xa8, 0x96, 0x62, 0x81, 0xaa, 0x95, 0x62, 0x82, 0xa8, - 0x96, 0x62, 0x82, 0xaa, 0x95, 0x62, 0x83, 0xa8, 0x96, 0x62, 0x83, 0xaa, - 0x95, 0x62, 0x84, 0xa8, 0x96, 0x62, 0x84, 0xaa, 0x95, 0x62, 0x85, 0xa8, - 0x96, 0x62, 0x85, 0xaa, 0x95, 0x62, 0x86, 0xa8, 0x96, 0x62, 0x86, 0xaa, - 0x95, 0x62, 0x87, 0xa8, 0x96, 0x62, 0x87, 0xaa, 0x95, 0x62, 0x88, 0xa8, - 0x96, 0x62, 0x88, 0xaa, 0x95, 0x62, 0x89, 0xa8, 0x96, 0x62, 0x89, 0xaa, - 0x95, 0x62, 0x8a, 0xa8, 0x96, 0x62, 0x8a, 0xaa, 0x95, 0x62, 0x8b, 0xa8, - 0x96, 0x62, 0x8b, 0xa6, 0x96, 0x62, 0x8c, 0xa8, 0x96, 0x62, 0x8c, 0xa6, - 0x96, 0x62, 0x8d, 0xa8, 0x96, 0x62, 0x8d, 0xa6, 0x96, 0x62, 0x8e, 0xa8, - 0x96, 0x62, 0x8e, 0xa6, 0x96, 0x62, 0x8e, 0xa8, 0x96, 0x62, 0x8f, 0xa6, - 0x96, 0x62, 0x8f, 0xa8, 0x96, 0x62, 0x90, 0xa6, 0x96, 0x62, 0x90, 0xa8, - 0x96, 0x62, 0x91, 0xa6, 0x96, 0x62, 0x91, 0xa8, 0x96, 0x62, 0x92, 0xa6, - 0x96, 0x62, 0x92, 0xa8, 0x96, 0x62, 0x93, 0xa6, 0x96, 0x62, 0x93, 0xa8, - 0x96, 0x62, 0x94, 0xa6, 0x96, 0x62, 0x94, 0xa8, 0x96, 0x62, 0x94, 0xa6, - 0x96, 0x62, 0x95, 0xa6, 0x97, 0x62, 0x95, 0xa6, 0x96, 0x62, 0x96, 0xa6, - 0x97, 0x62, 0x95, 0xa6, 0x96, 0x62, 0x96, 0xa6, 0x97, 0x62, 0x95, 0xa6, - 0x97, 0x62, 0x96, 0xa6, 0x98, 0x62, 0x9a, 0xa6, 0x98, 0x62, 0x9a, 0xa6, - 0x98, 0x62, 0x9a, 0xa6, 0x99, 0x62, 0x9a, 0xa6, 0x99, 0x62, 0x9a, 0xa6, - 0x9a, 0x62, 0x9a, 0xa6, 0x99, 0x62, 0x9a, 0xa6, 0x9a, 0x62, 0x9b, 0xa6, - 0x99, 0x62, 0x9b, 0xa6, 0x9a, 0x62, 0x9c, 0xa6, 0x99, 0x62, 0x9c, 0xa6, - 0x9a, 0x62, 0x9d, 0xa6, 0x99, 0x62, 0x9d, 0xa6, 0x9a, 0x62, 0x9d, 0xa6, - 0x99, 0x62, 0x9e, 0xa6, 0x9a, 0x62, 0x9e, 0xa6, 0x99, 0x62, 0x9f, 0xa6, - 0x9a, 0x62, 0x9f, 0xa6, 0x99, 0x62, 0x9f, 0xa6, 0x9a, 0x62, 0xa0, 0xa6, - 0x99, 0x62, 0xa0, 0xa6, 0x9a, 0x62, 0xa1, 0xa3, 0x9a, 0x62, 0xa1, 0xa6, - 0x9a, 0x62, 0xa1, 0xa3, 0x9a, 0x62, 0xa2, 0xa6, 0x9a, 0x62, 0xa2, 0xa3, - 0x9a, 0x62, 0xa3, 0xaf, 0xa3, 0x62, 0xa3, 0xaf, 0xa3, 0x62, 0xa3, 0xaf, - 0xa3, 0x62, 0xa4, 0xaf, 0xa3, 0x62, 0xa4, 0xaf, 0xa3, 0x62, 0xa5, 0xaf, - 0xa3, 0x62, 0xa5, 0xaf, 0xa3, 0x62, 0xa5, 0xaf, 0xa3, 0x62, 0xa6, 0xaf, - 0xa3, 0x62, 0xa6, 0xaf, 0xa3, 0x62, 0xa6, 0xaf, 0xa6, 0x62, 0xa7, 0xaf, - 0xa7, 0x62, 0xa7, 0xaf, 0xa7, 0x62, 0xa8, 0xaf, 0xa8, 0x62, 0xa8, 0xaf, - 0xa7, 0x62, 0xa8, 0xaf, 0xa8, 0x62, 0xa9, 0xaf, 0xa7, 0x62, 0xa9, 0xaf, - 0xa8, 0x62, 0xaa, 0xaf, 0xa7, 0x62, 0xaa, 0xaf, 0xa8, 0x62, 0xaa, 0xaf, - 0xa7, 0x62, 0xab, 0xaf, 0xa8, 0x62, 0xab, 0xb0, 0xab, 0x62, 0xab, 0xb0, - 0xab, 0x62, 0xac, 0xb0, 0xac, 0x62, 0xac, 0xb0, 0xab, 0x62, 0xac, 0xb0, - 0xac, 0x62, 0xad, 0xb0, 0xab, 0x62, 0xad, 0xb0, 0xac, 0x62, 0xae, 0xb0, - 0xab, 0x62, 0xae, 0xb0, 0xac, 0x62, 0xae, 0xb0, 0xab, 0x62, 0xaf, 0xb0, - 0xac, 0x62, 0xaf, 0xb0, 0xab, 0x62, 0xaf, 0xb0, 0xac, 0x62, 0xb0, 0xb1, - 0xb0, 0x62, 0xb0, 0xb1, 0xaf, 0x62, 0xb0, 0xb1, 0xb0, 0x62, 0xb1, 0xb1, - 0xaf, 0x62, 0xb1, 0xb1, 0xb0, 0x62, 0xb2, 0xb1, 0xaf, 0x62, 0xb2, 0xb1, - 0xb0, 0x62, 0xb2, 0xb1, 0xaf, 0x62, 0xb3, 0xb1, 0xb0, 0x62, 0xb3, 0xb1, - 0xaf, 0x62, 0xb3, 0xb1, 0xb0, 0x62, 0xb4, 0xb2, 0xb4, 0x62, 0xb4, 0xb2, - 0xb3, 0x62, 0xb4, 0xb2, 0xb4, 0x62, 0xb5, 0xb2, 0xb3, 0x62, 0xb5, 0xb2, - 0xb4, 0x62, 0xb5, 0xb2, 0xb3, 0x62, 0xb6, 0xb2, 0xb4, 0x62, 0xb6, 0xb2, - 0xb3, 0x62, 0xb6, 0xb2, 0xb4, 0x62, 0xb7, 0xb2, 0xb3, 0x62, 0xb7, 0xb2, - 0xb4, 0x62, 0xb7, 0xb2, 0xb7, 0x62, 0xb8, 0xb2, 0xb7, 0x62, 0xb8, 0xb2, - 0xb7, 0x62, 0xb8, 0xb2, 0xb7, 0x62, 0xb9, 0xb2, 0xb7, 0x62, 0xb9, 0xb2, - 0xb7, 0x62, 0xb9, 0xb2, 0xb7, 0x62, 0xba, 0xb2, 0xb7, 0x62, 0xba, 0xb2, - 0xb7, 0x62, 0xba, 0xb2, 0xb7, 0x62, 0xbb, 0xb2, 0xb7, 0x62, 0xbb, 0xb3, - 0xbb, 0x62, 0xbb, 0xb3, 0xbb, 0x62, 0xbc, 0xb3, 0xbb, 0x62, 0xbc, 0xb3, - 0xbb, 0x62, 0xbc, 0xb3, 0xbb, 0x62, 0xbd, 0xb3, 0xbb, 0x62, 0xbd, 0xb3, - 0xbb, 0x62, 0xbd, 0xb3, 0xbb, 0x62, 0xbe, 0xb3, 0xbb, 0x62, 0xbe, 0xb3, - 0xbb, 0x62, 0xbe, 0xb3, 0xbb, 0x62, 0xbf, 0xb4, 0xbf, 0x62, 0xbf, 0xb3, - 0xbb, 0x62, 0xbf, 0xb4, 0xbf, 0x62, 0xc0, 0xb4, 0xbe, 0x62, 0xc0, 0xb4, - 0xbf, 0x62, 0xc0, 0xb4, 0xbe, 0x62, 0xc1, 0xb4, 0xbf, 0x62, 0xc1, 0xb4, - 0xbe, 0x62, 0xc1, 0xb4, 0xbf, 0x62, 0xc1, 0xb4, 0xbe, 0x62, 0xc2, 0xb4, - 0xbf, 0x62, 0xc2, 0xb4, 0xbe, 0x62, 0xc2, 0xb4, 0xbf, 0x62, 0xc3, 0xb4, - 0xc2, 0x62, 0xc3, 0xb4, 0xc2, 0x62, 0xc3, 0xb4, 0xc2, 0x62, 0xc4, 0xb4, - 0xc2, 0x62, 0xc4, 0xb4, 0xc2, 0x62, 0xc4, 0xb4, 0xc2, 0x62, 0xc5, 0xb4, - 0xc2, 0x62, 0xc5, 0x97, 0xc8, 0x62, 0xc5, 0xaa, 0xd0, 0x62, 0xc6, 0xa7, - 0xd1, 0x62, 0xc6, 0xaa, 0xd0, 0x62, 0xc6, 0xa7, 0xd1, 0x62, 0xc6, 0xaa, - 0xd0, 0x62, 0xc7, 0xa7, 0xd1, 0x62, 0xc7, 0xaa, 0xd0, 0x62, 0xc7, 0xa7, - 0xd1, 0x62, 0xc8, 0xaa, 0xd0, 0x62, 0xc8, 0xa7, 0xd1, 0x62, 0xc8, 0xaa, - 0xd0, 0x62, 0xc9, 0xa7, 0xd1, 0x62, 0xc9, 0xaa, 0xd0, 0x62, 0xc9, 0xa7, - 0xd1, 0x62, 0xc9, 0xaa, 0xd0, 0x62, 0xca, 0xa7, 0xd1, 0x62, 0xca, 0xaa, - 0xd0, 0x62, 0xca, 0xa7, 0xd1, 0x62, 0xcb, 0xaa, 0xd0, 0x62, 0xcb, 0xa7, - 0xd1, 0x62, 0xcb, 0xaa, 0xd0, 0x62, 0xcc, 0xa7, 0xd1, 0x62, 0xcc, 0xaa, - 0xd0, 0x62, 0xcc, 0xa7, 0xd1, 0x62, 0xcc, 0xa6, 0xd1, 0x62, 0xcd, 0xa7, - 0xd1, 0x62, 0xcd, 0xa6, 0xd1, 0x62, 0xcd, 0xa7, 0xd1, 0x62, 0xce, 0xa6, - 0xd1, 0x62, 0xce, 0xa7, 0xd1, 0x62, 0xce, 0xa6, 0xd1, 0x62, 0xce, 0xa7, - 0xd1, 0x62, 0xcf, 0xa6, 0xd1, 0x62, 0xcf, 0xa7, 0xd1, 0x62, 0xcf, 0xa6, - 0xd1, 0x62, 0xd0, 0xa7, 0xd1, 0x62, 0xd0, 0xa6, 0xd1, 0x62, 0xd0, 0xa7, - 0xd1, 0x62, 0xd0, 0xa6, 0xd1, 0x62, 0xd1, 0xa7, 0xd1, 0x62, 0xd0, 0xa6, - 0xd1, 0x62, 0xd1, 0xa6, 0xd1, 0x62, 0xd0, 0xa6, 0xd2, 0x62, 0xd1, 0xa6, - 0xd2, 0x62, 0xd0, 0xa6, 0xd2, 0x62, 0xd1, 0xa6, 0xd2, 0x62, 0xd0, 0xa6, - 0xd3, 0x62, 0xd1, 0xa6, 0xd3, 0x62, 0xd1, 0xa6, 0xd3, 0x5f, 0xd1, 0xa6, - 0xd4, 0x62, 0xd1, 0xa6, 0xd4, 0x5f, 0xd1, 0xa6, 0xd4, 0x62, 0xd1, 0xa6, - 0xd4, 0x5f, 0xd1, 0xa6, 0xd5, 0x62, 0xd1, 0xa6, 0xd5, 0x5f, 0xd1, 0xa6, - 0xd5, 0x62, 0xd1, 0xa6, 0xd6, 0x5f, 0xd1, 0xa6, 0xd6, 0x62, 0xd1, 0xa6, - 0xd6, 0x5f, 0xd1, 0xa6, 0xd6, 0x62, 0xd1, 0xa6, 0xd7, 0x5f, 0xd1, 0xa6, - 0xd7, 0x62, 0xd1, 0xa6, 0xd7, 0x5f, 0xd1, 0xa6, 0xd7, 0x62, 0xd1, 0xa6, - 0xd8, 0x5f, 0xd1, 0xa6, 0xd8, 0x62, 0xd1, 0xa6, 0xd8, 0x5f, 0xd1, 0xa6, - 0xd9, 0x62, 0xd1, 0xa6, 0xd9, 0x5f, 0xd1, 0xa6, 0xd9, 0x62, 0xd1, 0xa6, - 0xd9, 0x5f, 0xd1, 0xa6, 0xda, 0x62, 0xd1, 0xa6, 0xda, 0x5f, 0xd1, 0xa6, - 0xda, 0x62, 0xd1, 0xa6, 0xda, 0x5f, 0xd1, 0xa6, 0xdb, 0x62, 0xd1, 0xa6, - 0xdb, 0x5f, 0xd1, 0xa6, 0xdb, 0x5c, 0xd1, 0xa6, 0xdb, 0x5f, 0xdd, 0xa6, - 0xdc, 0x4f, 0xdf, 0xa6, 0xdc, 0x50, 0xdf, 0xa6, 0xdc, 0x50, 0xdf, 0xa6, - 0xdd, 0x50, 0xdf, 0xa6, 0xdd, 0x50, 0xdf, 0xa6, 0xdd, 0x50, 0xdf, 0xa6, - 0xdd, 0x50, 0xdf, 0xa6, 0xde, 0x50, 0xdf, 0xa6, 0xde, 0x50, 0xdf, 0xa6, - 0xde, 0x50, 0xdf, 0xa6, 0xde, 0x50, 0xe2, 0xa6, 0xdf, 0x51, 0xe2, 0xa6, - 0xdf, 0x51, 0xe2, 0xa6, 0xdf, 0x51, 0xe2, 0xa6, 0xdf, 0x51, 0xe2, 0xa6, - 0xe0, 0x51, 0xe2, 0xa6, 0xe0, 0x51, 0xe2, 0xa6, 0xe0, 0x51, 0xe2, 0xa6, - 0xe1, 0x51, 0xe2, 0xa6, 0xe1, 0x51, 0xe4, 0xa6, 0xe1, 0x52, 0xe2, 0xa6, - 0xe1, 0x51, 0xe4, 0xa6, 0xe2, 0x52, 0xe4, 0xa6, 0xe2, 0x52, 0xe4, 0xa6, - 0xe2, 0x52, 0xe4, 0xa6, 0xe2, 0x52, 0xe4, 0xa6, 0xe3, 0x52, 0xe4, 0xa6, - 0xe3, 0x52, 0xe4, 0xa6, 0xe3, 0x52, 0xe4, 0xa6, 0xe3, 0x52, 0xe4, 0xa6, - 0xe4, 0x52, 0xe6, 0xa6, 0xe4, 0x53, 0xe7, 0xa6, 0xe4, 0x53, 0xe6, 0xa6, - 0xe4, 0x53, 0xe7, 0xa6, 0xe5, 0x53, 0xec, 0xa6, 0xe5, 0x67, 0xec, 0xa6, - 0xe5, 0x66, 0xec, 0xa6, 0xe5, 0x67, 0xec, 0xa6, 0xe6, 0x66, 0xec, 0xa6, - 0xe6, 0x67, 0xec, 0xa6, 0xe6, 0x66, 0xec, 0xa6, 0xe6, 0x67, 0xec, 0xa6, - 0xe7, 0x66, 0xec, 0xa6, 0xe7, 0x67, 0xec, 0xa6, 0xe7, 0x66, 0xec, 0xa6, - 0xe7, 0x67, 0xec, 0xa6, 0xe8, 0x66, 0xec, 0xa6, 0xe8, 0x67, 0xec, 0xa6, - 0xe8, 0x66, 0xec, 0xa6, 0xe8, 0x67, 0xec, 0xa6, 0xe9, 0x66, 0xec, 0xa6, - 0xe9, 0x67, 0xec, 0xa6, 0xe9, 0x66, 0xec, 0xa6, 0xe9, 0x67, 0xec, 0xa6, - 0xea, 0x66, 0xec, 0xa6, 0xea, 0x67, 0xec, 0xa6, 0xea, 0x66, 0xec, 0xa6, - 0xea, 0x66, 0xec, 0xa6, 0xeb, 0x66, 0xec, 0xa6, 0xeb, 0x66, 0xec, 0xa6, - 0xeb, 0x66, 0xec, 0xa6, 0xeb, 0x66, 0xec, 0xa6, 0xec, 0x66, 0xec, 0xa6, - 0xec, 0x66, 0xec, 0xa6, 0xec, 0x66, 0xec, 0xa6, 0xec, 0x66, 0xec, 0xa6, - 0xec, 0x66, 0xed, 0xa6, 0xed, 0x66, 0xed, 0xa6, 0xed, 0x66, 0xed, 0xa6, - 0xed, 0x66, 0xed, 0xa6, 0xed, 0x66, 0xee, 0xa6, 0xee, 0x66, 0xee, 0xa6, - 0xee, 0x66, 0xee, 0xa6, 0xee, 0x66, 0xee, 0xa6, 0xee, 0x66, 0xef, 0xa6, - 0xef, 0x66, 0xef, 0xa6, 0xef, 0x66, 0xef, 0xa6, 0xef, 0x66, 0xef, 0xa6, - 0xef, 0x66, 0xef, 0xa6, 0xf0, 0x66, 0xef, 0xa6, 0xf0, 0x66, 0xef, 0xa6, - 0xf0, 0x66, 0xf0, 0xa6, 0xf0, 0x67, 0xf1, 0xa6, 0xf1, 0x67, 0xf1, 0xa6, - 0xf1, 0x67, 0xf1, 0xa6, 0xf1, 0x67, 0xf1, 0xa6, 0xf1, 0x67, 0xf2, 0xa6, - 0xf2, 0x67, 0xf2, 0xa6, 0xf2, 0x67, 0xf2, 0xa6, 0xf2, 0x67, 0xf2, 0xa6, - 0xf2, 0x67, 0xf2, 0xa6, 0xf2, 0x67, 0xf3, 0xa6, 0xf3, 0x67, 0xf3, 0xa6, - 0xf3, 0x67, 0xf3, 0xa6, 0xf3, 0x67, 0xf3, 0xa6, 0xf3, 0x67, 0xf3, 0xa6, - 0xf4, 0x67, 0xf3, 0xa6, 0xf4, 0x67, 0xf3, 0xa6, 0xf4, 0x67, 0xf3, 0xa6, - 0xf4, 0x67, 0xf5, 0xa6, 0xf5, 0x68, 0xf5, 0xa6, 0xf5, 0x68, 0xf5, 0xa6, - 0xf5, 0x68, 0xf5, 0xa6, 0xf5, 0x68, 0xf5, 0xa6, 0xf5, 0x68, 0xf6, 0xa6, - 0xf6, 0x68, 0xf6, 0xa6, 0xf6, 0x68, 0xf6, 0xa6, 0xf6, 0x68, 0xf6, 0xa6, - 0xf6, 0x68, 0xf6, 0xa6, 0xf7, 0x68, 0xf6, 0xa6, 0xf7, 0x68, 0xf6, 0xa6, - 0xf7, 0x68, 0xf6, 0xa6, 0xf7, 0x68, 0xf6, 0xa6, 0xf8, 0x68, 0xf6, 0xa6, - 0xf8, 0x68, 0xf8, 0xa6, 0xf8, 0x5b, 0xf8, 0xa6, 0xf8, 0x5b, 0xfb, 0xa6, - 0xf8, 0x64, 0xfb, 0xa6, 0xf9, 0x62, 0xfb, 0xa6, 0xf9, 0x64, 0xfb, 0xa6, - 0xf9, 0x62, 0xfb, 0xa6, 0xf9, 0x64, 0xfb, 0xa6, 0xfa, 0x62, 0xfb, 0xa6, - 0xfa, 0x64, 0xfb, 0xa6, 0xfa, 0x62, 0xfb, 0xa6, 0xfa, 0x64, 0xfb, 0xa6, - 0xfa, 0x62, 0xfc, 0xa6, 0xfb, 0x62, 0xfb, 0xa6, 0xfb, 0x62, 0xfc, 0xa6, - 0xfb, 0x62, 0xfb, 0xa6, 0xfb, 0x62, 0xfc, 0xa6, 0xfb, 0x62, 0xfc, 0xa6, - 0xfb, 0x62, 0xfc, 0xa6, 0xfb, 0x62, 0xfc, 0xa5, 0xfb, 0x62, 0xfc, 0xa6, - 0xfb, 0x62, 0xfd, 0xa5, 0xfb, 0x62, 0xfd, 0xa6, 0xfb, 0x62, 0xfd, 0xa5, - 0xfb, 0x62, 0xfd, 0xa5, 0xfb, 0x62, 0xfe, 0xa5, 0xfb, 0x62, 0xfe, 0xa5, - 0xfb, 0x62, 0xfe, 0xa5, 0xfb, 0x62, 0xfe, 0xa5, 0xfb, 0x62, 0xfe, 0xa5, - 0xfb, 0x62, 0xff, 0xa5, 0xfb, 0x62, 0xff, 0xa5, 0xfb, 0x62, 0x03, 0xaf, - 0x94, 0x62, 0x0a, 0xaf, 0x94, 0x62, 0x0f, 0xaf, 0x94, 0x62, 0x14, 0xaf, - 0x94, 0x62, 0x17, 0xaf, 0x94, 0x62, 0x1b, 0xaf, 0x94, 0x62, 0x1e, 0xaf, - 0x94, 0x62, 0x20, 0xad, 0x95, 0x62, 0x23, 0xaf, 0x94, 0x62, 0x25, 0xad, - 0x95, 0x62, 0x27, 0xaf, 0x94, 0x62, 0x29, 0xad, 0x95, 0x62, 0x2b, 0xaf, - 0x94, 0x62, 0x2d, 0xad, 0x95, 0x62, 0x2f, 0xaf, 0x94, 0x62, 0x31, 0xad, - 0x95, 0x62, 0x32, 0xaf, 0x94, 0x62, 0x34, 0xad, 0x95, 0x62, 0x35, 0xaf, - 0x94, 0x62, 0x37, 0xad, 0x95, 0x62, 0x38, 0xaf, 0x94, 0x62, 0x3a, 0xad, - 0x95, 0x62, 0x3b, 0xaf, 0x94, 0x62, 0x3c, 0xad, 0x95, 0x62, 0x3e, 0xaf, - 0x94, 0x62, 0x3f, 0xad, 0x95, 0x62, 0x40, 0xaf, 0x94, 0x62, 0x42, 0xad, - 0x95, 0x62, 0x43, 0xaf, 0x94, 0x62, 0x44, 0xad, 0x95, 0x62, 0x45, 0xaf, - 0x94, 0x62, 0x46, 0xad, 0x95, 0x62, 0x47, 0xaf, 0x94, 0x62, 0x48, 0xad, - 0x95, 0x62, 0x49, 0xaf, 0x94, 0x62, 0x4a, 0xad, 0x95, 0x62, 0x4b, 0xaf, - 0x94, 0x62, 0x4c, 0xad, 0x95, 0x62, 0x4d, 0xaf, 0x94, 0x62, 0x4e, 0xad, - 0x95, 0x62, 0x4f, 0xaf, 0x94, 0x62, 0x50, 0xad, 0x95, 0x62, 0x51, 0xaf, - 0x94, 0x62, 0x52, 0xad, 0x95, 0x62, 0x53, 0xaf, 0x94, 0x62, 0x54, 0xad, - 0x95, 0x62, 0x55, 0xaf, 0x94, 0x62, 0x56, 0xad, 0x95, 0x62, 0x57, 0xaf, - 0x94, 0x62, 0x58, 0xad, 0x95, 0x62, 0x58, 0xaf, 0x94, 0x62, 0x59, 0xad, - 0x95, 0x62, 0x5a, 0xaf, 0x94, 0x62, 0x5b, 0xad, 0x95, 0x62, 0x5c, 0xaf, - 0x94, 0x62, 0x5d, 0xad, 0x95, 0x62, 0x5d, 0xaf, 0x94, 0x62, 0x5e, 0xad, - 0x95, 0x62, 0x5f, 0xab, 0x95, 0x62, 0x60, 0xad, 0x95, 0x62, 0x60, 0xab, - 0x95, 0x62, 0x61, 0xad, 0x95, 0x62, 0x62, 0xab, 0x95, 0x62, 0x63, 0xad, - 0x95, 0x62, 0x63, 0xab, 0x95, 0x62, 0x64, 0xad, 0x95, 0x62, 0x65, 0xab, - 0x95, 0x62, 0x66, 0xad, 0x95, 0x62, 0x66, 0xab, 0x95, 0x62, 0x67, 0xad, - 0x95, 0x62, 0x68, 0xab, 0x95, 0x62, 0x68, 0xad, 0x95, 0x62, 0x69, 0xab, - 0x95, 0x62, 0x6a, 0xad, 0x95, 0x62, 0x6a, 0xab, 0x95, 0x62, 0x6b, 0xad, - 0x95, 0x62, 0x6c, 0xab, 0x95, 0x62, 0x6c, 0xad, 0x95, 0x62, 0x6d, 0xab, - 0x95, 0x62, 0x6e, 0xad, 0x95, 0x62, 0x6e, 0xab, 0x95, 0x62, 0x6f, 0xad, - 0x95, 0x62, 0x70, 0xab, 0x95, 0x62, 0x70, 0xad, 0x95, 0x62, 0x71, 0xab, - 0x95, 0x62, 0x72, 0xad, 0x95, 0x62, 0x72, 0xab, 0x95, 0x62, 0x73, 0xad, - 0x95, 0x62, 0x73, 0xab, 0x95, 0x62, 0x74, 0xad, 0x95, 0x62, 0x75, 0xab, - 0x95, 0x62, 0x75, 0xad, 0x95, 0x62, 0x76, 0xab, 0x95, 0x62, 0x76, 0xad, - 0x95, 0x62, 0x77, 0xab, 0x95, 0x62, 0x78, 0xa8, 0x96, 0x62, 0x78, 0xab, - 0x95, 0x62, 0x79, 0xa8, 0x96, 0x62, 0x79, 0xab, 0x95, 0x62, 0x7a, 0xa8, - 0x96, 0x62, 0x7a, 0xab, 0x95, 0x62, 0x7b, 0xa8, 0x96, 0x62, 0x7c, 0xab, - 0x95, 0x62, 0x7c, 0xa8, 0x96, 0x62, 0x7d, 0xab, 0x95, 0x62, 0x7d, 0xa8, - 0x96, 0x62, 0x7e, 0xab, 0x95, 0x62, 0x7e, 0xa8, 0x96, 0x62, 0x7f, 0xab, - 0x95, 0x62, 0x7f, 0xa8, 0x96, 0x62, 0x80, 0xab, 0x95, 0x62, 0x81, 0xa8, - 0x96, 0x62, 0x81, 0xab, 0x95, 0x62, 0x82, 0xa8, 0x96, 0x62, 0x82, 0xab, - 0x95, 0x62, 0x83, 0xa8, 0x96, 0x62, 0x83, 0xab, 0x95, 0x62, 0x84, 0xa8, - 0x96, 0x62, 0x84, 0xab, 0x95, 0x62, 0x85, 0xa8, 0x96, 0x62, 0x85, 0xab, - 0x95, 0x62, 0x86, 0xa8, 0x96, 0x62, 0x86, 0xab, 0x95, 0x62, 0x87, 0xa8, - 0x96, 0x62, 0x87, 0xab, 0x95, 0x62, 0x88, 0xa8, 0x96, 0x62, 0x88, 0xab, - 0x95, 0x62, 0x89, 0xa8, 0x96, 0x62, 0x89, 0xab, 0x95, 0x62, 0x8a, 0xa8, - 0x96, 0x62, 0x8a, 0xab, 0x95, 0x62, 0x8b, 0xa8, 0x96, 0x62, 0x8b, 0xa7, - 0x96, 0x62, 0x8c, 0xa8, 0x96, 0x62, 0x8c, 0xa7, 0x96, 0x62, 0x8d, 0xa8, - 0x96, 0x62, 0x8d, 0xa7, 0x96, 0x62, 0x8e, 0xa8, 0x96, 0x62, 0x8e, 0xa7, - 0x96, 0x62, 0x8e, 0xa8, 0x96, 0x62, 0x8f, 0xa7, 0x96, 0x62, 0x8f, 0xa8, - 0x96, 0x62, 0x90, 0xa7, 0x96, 0x62, 0x90, 0xa8, 0x96, 0x62, 0x91, 0xa7, - 0x96, 0x62, 0x91, 0xa8, 0x96, 0x62, 0x92, 0xa7, 0x96, 0x62, 0x92, 0xa8, - 0x96, 0x62, 0x93, 0xa7, 0x96, 0x62, 0x93, 0xa8, 0x96, 0x62, 0x94, 0xa7, - 0x96, 0x62, 0x94, 0xa8, 0x96, 0x62, 0x94, 0xa7, 0x96, 0x62, 0x95, 0xa7, - 0x97, 0x62, 0x95, 0xa7, 0x96, 0x62, 0x96, 0xa7, 0x97, 0x62, 0x95, 0xa7, - 0x96, 0x62, 0x96, 0xa7, 0x97, 0x62, 0x95, 0xa7, 0x97, 0x62, 0x96, 0xa7, - 0x98, 0x62, 0x9a, 0xa7, 0x98, 0x62, 0x9a, 0xa7, 0x98, 0x62, 0x9a, 0xa7, - 0x99, 0x62, 0x9a, 0xa7, 0x99, 0x62, 0x9a, 0xa7, 0x99, 0x62, 0x9a, 0xa7, - 0x99, 0x62, 0x9a, 0xa7, 0x99, 0x62, 0x9b, 0xa7, 0x99, 0x62, 0x9b, 0xa5, - 0x9a, 0x62, 0x9c, 0xa7, 0x99, 0x62, 0x9c, 0xa5, 0x9a, 0x62, 0x9d, 0xa7, - 0x99, 0x62, 0x9d, 0xa5, 0x9a, 0x62, 0x9d, 0xa7, 0x99, 0x62, 0x9e, 0xa5, - 0x9a, 0x62, 0x9e, 0xa7, 0x99, 0x62, 0x9f, 0xa5, 0x9a, 0x62, 0x9f, 0xa7, - 0x99, 0x62, 0x9f, 0xa5, 0x9a, 0x62, 0xa0, 0xa7, 0x99, 0x62, 0xa0, 0xa5, - 0x9a, 0x62, 0xa1, 0xa7, 0x99, 0x62, 0xa1, 0xa5, 0x9a, 0x62, 0xa1, 0xa7, - 0x99, 0x62, 0xa2, 0xae, 0xa1, 0x62, 0xa2, 0xae, 0xa1, 0x62, 0xa3, 0xae, - 0xa1, 0x62, 0xa3, 0xae, 0xa1, 0x62, 0xa3, 0xae, 0xa1, 0x62, 0xa4, 0xae, - 0xa1, 0x62, 0xa4, 0xae, 0xa1, 0x62, 0xa5, 0xaf, 0xa5, 0x62, 0xa5, 0xaf, - 0xa5, 0x62, 0xa5, 0xaf, 0xa5, 0x62, 0xa6, 0xaf, 0xa5, 0x62, 0xa6, 0xaf, - 0xa5, 0x62, 0xa6, 0xaf, 0xa5, 0x62, 0xa7, 0xaf, 0xa5, 0x62, 0xa7, 0xaf, - 0xa5, 0x62, 0xa8, 0xaf, 0xa5, 0x62, 0xa8, 0xaf, 0xa5, 0x62, 0xa8, 0xaf, - 0xa5, 0x62, 0xa9, 0xb0, 0xa9, 0x62, 0xa9, 0xb0, 0xa9, 0x62, 0xaa, 0xb0, - 0xaa, 0x62, 0xaa, 0xb0, 0xa9, 0x62, 0xaa, 0xb0, 0xaa, 0x62, 0xab, 0xb0, - 0xa9, 0x62, 0xab, 0xb0, 0xaa, 0x62, 0xab, 0xb0, 0xa9, 0x62, 0xac, 0xb0, - 0xaa, 0x62, 0xac, 0xb0, 0xa9, 0x62, 0xac, 0xb0, 0xaa, 0x62, 0xad, 0xb0, - 0xad, 0x62, 0xad, 0xb0, 0xad, 0x62, 0xae, 0xb0, 0xae, 0x62, 0xae, 0xb0, - 0xad, 0x62, 0xae, 0xb0, 0xae, 0x62, 0xaf, 0xb0, 0xad, 0x62, 0xaf, 0xb0, - 0xae, 0x62, 0xaf, 0xb0, 0xad, 0x62, 0xb0, 0xb0, 0xae, 0x62, 0xb0, 0xb0, - 0xad, 0x62, 0xb0, 0xb0, 0xae, 0x62, 0xb1, 0xb0, 0xad, 0x62, 0xb1, 0xb0, - 0xae, 0x62, 0xb2, 0xb1, 0xb2, 0x62, 0xb2, 0xb1, 0xb1, 0x62, 0xb2, 0xb1, - 0xb2, 0x62, 0xb3, 0xb1, 0xb1, 0x62, 0xb3, 0xb1, 0xb2, 0x62, 0xb3, 0xb1, - 0xb1, 0x62, 0xb4, 0xb1, 0xb2, 0x62, 0xb4, 0xb1, 0xb1, 0x62, 0xb4, 0xb1, - 0xb2, 0x62, 0xb5, 0xb1, 0xb1, 0x62, 0xb5, 0xb1, 0xb2, 0x62, 0xb5, 0xb2, - 0xb5, 0x62, 0xb6, 0xb2, 0xb5, 0x62, 0xb6, 0xb2, 0xb5, 0x62, 0xb6, 0xb2, - 0xb5, 0x62, 0xb7, 0xb2, 0xb5, 0x62, 0xb7, 0xb2, 0xb5, 0x62, 0xb7, 0xb2, - 0xb5, 0x62, 0xb8, 0xb2, 0xb5, 0x62, 0xb8, 0xb2, 0xb5, 0x62, 0xb8, 0xb2, - 0xb5, 0x62, 0xb9, 0xb2, 0xb5, 0x62, 0xb9, 0xb3, 0xb9, 0x62, 0xb9, 0xb3, - 0xb9, 0x62, 0xba, 0xb3, 0xb9, 0x62, 0xba, 0xb3, 0xb9, 0x62, 0xba, 0xb3, - 0xb9, 0x62, 0xbb, 0xb3, 0xb9, 0x62, 0xbb, 0xb3, 0xb9, 0x62, 0xbb, 0xb3, - 0xb9, 0x62, 0xbc, 0xb3, 0xb9, 0x62, 0xbc, 0xb3, 0xb9, 0x62, 0xbc, 0xb3, - 0xb9, 0x62, 0xbd, 0xb3, 0xb9, 0x62, 0xbd, 0xb3, 0xbd, 0x62, 0xbd, 0xb3, - 0xbd, 0x62, 0xbe, 0xb3, 0xbd, 0x62, 0xbe, 0xb3, 0xbd, 0x62, 0xbe, 0xb3, - 0xbd, 0x62, 0xbf, 0xb3, 0xbd, 0x62, 0xbf, 0xb3, 0xbd, 0x62, 0xbf, 0xb3, - 0xbd, 0x62, 0xc0, 0xb3, 0xbd, 0x62, 0xc0, 0xb3, 0xbd, 0x62, 0xc0, 0xb3, - 0xbd, 0x62, 0xc1, 0xb4, 0xc1, 0x62, 0xc1, 0xb3, 0xbd, 0x62, 0xc1, 0xb4, - 0xc1, 0x62, 0xc1, 0xb4, 0xc0, 0x62, 0xc2, 0xb4, 0xc1, 0x62, 0xc2, 0xb4, - 0xc0, 0x62, 0xc2, 0xb4, 0xc1, 0x62, 0xc3, 0xb4, 0xc0, 0x62, 0xc3, 0xb4, - 0xc1, 0x62, 0xc3, 0xb4, 0xc0, 0x62, 0xc4, 0xb4, 0xc1, 0x62, 0xc4, 0xb4, - 0xc0, 0x62, 0xc4, 0xb4, 0xc1, 0x62, 0xc5, 0xb5, 0xc4, 0x62, 0xc5, 0xb5, - 0xc4, 0x62, 0xc5, 0xb5, 0xc4, 0x62, 0xc6, 0xa7, 0xd1, 0x62, 0xc6, 0xa9, - 0xd0, 0x62, 0xc6, 0xa7, 0xd1, 0x62, 0xc6, 0xa9, 0xd0, 0x62, 0xc7, 0xa7, - 0xd1, 0x62, 0xc7, 0xa9, 0xd0, 0x62, 0xc7, 0xa7, 0xd1, 0x62, 0xc8, 0xa9, - 0xd0, 0x62, 0xc8, 0xa7, 0xd1, 0x62, 0xc8, 0xa9, 0xd0, 0x62, 0xc9, 0xa7, - 0xd1, 0x62, 0xc9, 0xa9, 0xd0, 0x62, 0xc9, 0xa7, 0xd1, 0x62, 0xc9, 0xa9, - 0xd0, 0x62, 0xca, 0xa7, 0xd1, 0x62, 0xca, 0xa9, 0xd0, 0x62, 0xca, 0xa7, - 0xd1, 0x62, 0xcb, 0xa9, 0xd0, 0x62, 0xcb, 0xa7, 0xd1, 0x62, 0xcb, 0xa9, - 0xd0, 0x62, 0xcc, 0xa7, 0xd1, 0x62, 0xcc, 0xa9, 0xd0, 0x62, 0xcc, 0xa7, - 0xd1, 0x62, 0xcc, 0xa9, 0xd0, 0x62, 0xcd, 0xa7, 0xd1, 0x62, 0xcd, 0xa9, - 0xd0, 0x62, 0xcd, 0xa7, 0xd1, 0x62, 0xce, 0xa9, 0xd0, 0x62, 0xce, 0xa7, - 0xd1, 0x62, 0xce, 0xa9, 0xd0, 0x62, 0xce, 0xa7, 0xd1, 0x62, 0xcf, 0xa7, - 0xd1, 0x62, 0xcf, 0xa7, 0xd1, 0x62, 0xcf, 0xa7, 0xd1, 0x62, 0xd0, 0xa7, - 0xd1, 0x62, 0xd0, 0xa7, 0xd1, 0x62, 0xd0, 0xa7, 0xd1, 0x62, 0xd0, 0xa7, - 0xd1, 0x62, 0xd1, 0xa7, 0xd1, 0x61, 0xd0, 0xa7, 0xd1, 0x62, 0xd1, 0xa7, - 0xd1, 0x61, 0xd0, 0xa7, 0xd2, 0x62, 0xd1, 0xa7, 0xd2, 0x61, 0xd0, 0xa7, - 0xd2, 0x62, 0xd1, 0xa7, 0xd2, 0x61, 0xd0, 0xa7, 0xd3, 0x62, 0xd1, 0xa7, - 0xd3, 0x61, 0xd1, 0xa7, 0xd3, 0x5f, 0xd1, 0xa7, 0xd4, 0x61, 0xd1, 0xa7, - 0xd4, 0x5f, 0xd1, 0xa7, 0xd4, 0x61, 0xd1, 0xa7, 0xd4, 0x5f, 0xd1, 0xa7, - 0xd5, 0x61, 0xd1, 0xa7, 0xd5, 0x5f, 0xd1, 0xa7, 0xd5, 0x61, 0xd1, 0xa7, - 0xd6, 0x5f, 0xd1, 0xa7, 0xd6, 0x61, 0xd1, 0xa7, 0xd6, 0x5f, 0xd1, 0xa7, - 0xd6, 0x61, 0xd1, 0xa7, 0xd7, 0x5f, 0xd1, 0xa7, 0xd7, 0x61, 0xd1, 0xa7, - 0xd7, 0x5f, 0xd1, 0xa7, 0xd7, 0x61, 0xd1, 0xa7, 0xd8, 0x5f, 0xd1, 0xa7, - 0xd8, 0x61, 0xd1, 0xa7, 0xd8, 0x5f, 0xd1, 0xa7, 0xd9, 0x61, 0xd1, 0xa7, - 0xd9, 0x5f, 0xd1, 0xa7, 0xd9, 0x61, 0xd1, 0xa7, 0xd9, 0x5f, 0xd1, 0xa7, - 0xda, 0x61, 0xd1, 0xa7, 0xda, 0x5f, 0xd1, 0xa7, 0xda, 0x61, 0xd1, 0xa7, - 0xda, 0x5f, 0xd1, 0xa7, 0xdb, 0x61, 0xd1, 0xa7, 0xdb, 0x5f, 0xd1, 0xa7, - 0xdb, 0x5c, 0xd1, 0xa7, 0xdb, 0x5f, 0xde, 0xa7, 0xdc, 0x4f, 0xde, 0xa7, - 0xdc, 0x4f, 0xde, 0xa7, 0xdc, 0x4f, 0xde, 0xa7, 0xdd, 0x4f, 0xde, 0xa7, - 0xdd, 0x4f, 0xde, 0xa7, 0xdd, 0x4f, 0xe1, 0xa7, 0xdd, 0x50, 0xe1, 0xa7, - 0xde, 0x50, 0xe1, 0xa7, 0xde, 0x50, 0xe1, 0xa7, 0xde, 0x50, 0xe1, 0xa7, - 0xde, 0x50, 0xe1, 0xa7, 0xdf, 0x50, 0xe1, 0xa7, 0xdf, 0x50, 0xe1, 0xa7, - 0xdf, 0x50, 0xe1, 0xa7, 0xdf, 0x50, 0xe3, 0xa7, 0xe0, 0x51, 0xe3, 0xa7, - 0xe0, 0x51, 0xe3, 0xa7, 0xe0, 0x51, 0xe3, 0xa7, 0xe1, 0x51, 0xe3, 0xa7, - 0xe1, 0x51, 0xe3, 0xa7, 0xe1, 0x51, 0xe3, 0xa7, 0xe1, 0x51, 0xe3, 0xa7, - 0xe2, 0x51, 0xe3, 0xa7, 0xe2, 0x51, 0xe3, 0xa7, 0xe2, 0x51, 0xe3, 0xa7, - 0xe2, 0x51, 0xe3, 0xa7, 0xe3, 0x51, 0xe5, 0xa7, 0xe3, 0x52, 0xe6, 0xa7, - 0xe3, 0x52, 0xe5, 0xa7, 0xe3, 0x52, 0xe6, 0xa7, 0xe4, 0x52, 0xe5, 0xa7, - 0xe4, 0x52, 0xe6, 0xa7, 0xe4, 0x52, 0xec, 0xa7, 0xe4, 0x67, 0xec, 0xa7, - 0xe5, 0x65, 0xec, 0xa7, 0xe5, 0x67, 0xec, 0xa7, 0xe5, 0x65, 0xec, 0xa7, - 0xe5, 0x67, 0xec, 0xa7, 0xe6, 0x65, 0xec, 0xa7, 0xe6, 0x67, 0xec, 0xa7, - 0xe6, 0x65, 0xec, 0xa7, 0xe6, 0x67, 0xec, 0xa7, 0xe7, 0x65, 0xec, 0xa7, - 0xe7, 0x67, 0xec, 0xa7, 0xe7, 0x65, 0xec, 0xa7, 0xe7, 0x67, 0xec, 0xa7, - 0xe8, 0x65, 0xec, 0xa7, 0xe8, 0x67, 0xec, 0xa7, 0xe8, 0x65, 0xec, 0xa7, - 0xe8, 0x65, 0xec, 0xa7, 0xe9, 0x65, 0xec, 0xa7, 0xe9, 0x65, 0xec, 0xa7, - 0xe9, 0x65, 0xec, 0xa7, 0xe9, 0x65, 0xec, 0xa7, 0xea, 0x65, 0xec, 0xa7, - 0xea, 0x65, 0xec, 0xa7, 0xea, 0x65, 0xec, 0xa7, 0xea, 0x65, 0xec, 0xa7, - 0xeb, 0x65, 0xec, 0xa7, 0xeb, 0x65, 0xec, 0xa7, 0xeb, 0x65, 0xec, 0xa7, - 0xeb, 0x65, 0xec, 0xa7, 0xec, 0x65, 0xec, 0xa7, 0xec, 0x65, 0xec, 0xa7, - 0xec, 0x65, 0xec, 0xa7, 0xec, 0x65, 0xec, 0xa7, 0xec, 0x65, 0xed, 0xa7, - 0xed, 0x65, 0xed, 0xa7, 0xed, 0x65, 0xed, 0xa7, 0xed, 0x65, 0xed, 0xa7, - 0xed, 0x65, 0xed, 0xa7, 0xee, 0x65, 0xed, 0xa7, 0xee, 0x65, 0xed, 0xa7, - 0xee, 0x65, 0xee, 0xa7, 0xee, 0x66, 0xef, 0xa7, 0xef, 0x66, 0xef, 0xa7, - 0xef, 0x66, 0xef, 0xa7, 0xef, 0x66, 0xef, 0xa7, 0xef, 0x66, 0xf0, 0xa7, - 0xf0, 0x66, 0xf0, 0xa7, 0xf0, 0x66, 0xf0, 0xa7, 0xf0, 0x66, 0xf0, 0xa7, - 0xf0, 0x66, 0xf1, 0xa7, 0xf1, 0x66, 0xf1, 0xa7, 0xf1, 0x66, 0xf1, 0xa7, - 0xf1, 0x66, 0xf1, 0xa7, 0xf1, 0x66, 0xf1, 0xa7, 0xf2, 0x66, 0xf1, 0xa7, - 0xf2, 0x66, 0xf1, 0xa7, 0xf2, 0x66, 0xf2, 0xa7, 0xf2, 0x67, 0xf2, 0xa7, - 0xf2, 0x67, 0xf3, 0xa7, 0xf3, 0x67, 0xf3, 0xa7, 0xf3, 0x67, 0xf3, 0xa7, - 0xf3, 0x67, 0xf3, 0xa7, 0xf3, 0x67, 0xf4, 0xa7, 0xf4, 0x67, 0xf4, 0xa7, - 0xf4, 0x67, 0xf4, 0xa7, 0xf4, 0x67, 0xf4, 0xa7, 0xf4, 0x67, 0xf5, 0xa7, - 0xf5, 0x67, 0xf4, 0xa7, 0xf5, 0x67, 0xf5, 0xa7, 0xf5, 0x67, 0xf4, 0xa7, - 0xf5, 0x67, 0xf5, 0xa7, 0xf5, 0x67, 0xf4, 0xa7, 0xf6, 0x67, 0xf5, 0xa7, - 0xf6, 0x67, 0xf6, 0xa7, 0xf6, 0x68, 0xf6, 0xa7, 0xf6, 0x68, 0xf6, 0xa7, - 0xf7, 0x68, 0xf6, 0xa7, 0xf7, 0x68, 0xf6, 0xa7, 0xf7, 0x68, 0xf6, 0xa7, - 0xf7, 0x68, 0xf6, 0xa7, 0xf8, 0x68, 0xf6, 0xa7, 0xf8, 0x68, 0xf6, 0xa7, - 0xf8, 0x68, 0xfb, 0xa7, 0xf8, 0x62, 0xfb, 0xa7, 0xf8, 0x64, 0xfb, 0xa7, - 0xf9, 0x62, 0xfb, 0xa7, 0xf9, 0x64, 0xfb, 0xa7, 0xf9, 0x62, 0xfb, 0xa7, - 0xf9, 0x64, 0xfb, 0xa7, 0xfa, 0x62, 0xfb, 0xa7, 0xfa, 0x64, 0xfb, 0xa7, - 0xfa, 0x62, 0xfb, 0xa7, 0xfa, 0x64, 0xfb, 0xa7, 0xfa, 0x62, 0xfc, 0xa7, - 0xfb, 0x62, 0xfb, 0xa7, 0xfb, 0x62, 0xfc, 0xa7, 0xfb, 0x62, 0xfb, 0xa7, - 0xfb, 0x62, 0xfc, 0xa7, 0xfb, 0x62, 0xfc, 0xa7, 0xfb, 0x62, 0xfc, 0xa7, - 0xfb, 0x62, 0xfc, 0xa5, 0xfb, 0x62, 0xfc, 0xa7, 0xfb, 0x62, 0xfd, 0xa5, - 0xfb, 0x62, 0xfd, 0xa7, 0xfb, 0x62, 0xfd, 0xa5, 0xfb, 0x62, 0xfd, 0xa5, - 0xfb, 0x62, 0xfe, 0xa5, 0xfb, 0x62, 0xfe, 0xa5, 0xfb, 0x62, 0xfe, 0xa5, - 0xfb, 0x62, 0xfe, 0xa5, 0xfb, 0x62, 0xfe, 0xa5, 0xfb, 0x62, 0xff, 0xa5, - 0xfb, 0x62, 0xff, 0xa5, 0xfb, 0x62, 0x03, 0xaf, 0x94, 0x63, 0x0a, 0xb2, - 0x94, 0x63, 0x0f, 0xaf, 0x94, 0x63, 0x14, 0xaf, 0x94, 0x63, 0x17, 0xaf, - 0x94, 0x63, 0x1b, 0xaf, 0x94, 0x63, 0x1e, 0xaf, 0x94, 0x63, 0x20, 0xb2, - 0x94, 0x63, 0x23, 0xaf, 0x94, 0x63, 0x25, 0xb2, 0x94, 0x63, 0x27, 0xaf, - 0x94, 0x63, 0x29, 0xb2, 0x94, 0x63, 0x2b, 0xaf, 0x94, 0x63, 0x2d, 0xb2, - 0x94, 0x63, 0x2f, 0xaf, 0x94, 0x63, 0x31, 0xb2, 0x94, 0x63, 0x32, 0xaf, - 0x94, 0x63, 0x34, 0xb2, 0x94, 0x63, 0x35, 0xaf, 0x94, 0x63, 0x37, 0xb2, - 0x94, 0x63, 0x38, 0xaf, 0x94, 0x63, 0x3a, 0xad, 0x95, 0x63, 0x3b, 0xaf, - 0x94, 0x63, 0x3c, 0xad, 0x95, 0x63, 0x3e, 0xaf, 0x94, 0x63, 0x3f, 0xad, - 0x95, 0x63, 0x40, 0xaf, 0x94, 0x63, 0x42, 0xad, 0x95, 0x63, 0x43, 0xaf, - 0x94, 0x63, 0x44, 0xad, 0x95, 0x63, 0x45, 0xaf, 0x94, 0x63, 0x46, 0xad, - 0x95, 0x63, 0x47, 0xaf, 0x94, 0x63, 0x48, 0xad, 0x95, 0x63, 0x49, 0xaf, - 0x94, 0x63, 0x4a, 0xad, 0x95, 0x63, 0x4b, 0xaf, 0x94, 0x63, 0x4c, 0xad, - 0x95, 0x63, 0x4d, 0xaf, 0x94, 0x63, 0x4e, 0xad, 0x95, 0x63, 0x4f, 0xaf, - 0x94, 0x63, 0x50, 0xad, 0x95, 0x63, 0x51, 0xaf, 0x94, 0x63, 0x52, 0xad, - 0x95, 0x63, 0x53, 0xaf, 0x94, 0x63, 0x54, 0xad, 0x95, 0x63, 0x55, 0xaf, - 0x94, 0x63, 0x56, 0xad, 0x95, 0x63, 0x57, 0xaf, 0x94, 0x63, 0x58, 0xad, - 0x95, 0x63, 0x58, 0xaa, 0x95, 0x63, 0x59, 0xad, 0x95, 0x63, 0x5a, 0xaa, - 0x95, 0x63, 0x5b, 0xad, 0x95, 0x63, 0x5c, 0xaa, 0x95, 0x63, 0x5d, 0xad, - 0x95, 0x63, 0x5d, 0xaa, 0x95, 0x63, 0x5e, 0xad, 0x95, 0x63, 0x5f, 0xaa, - 0x95, 0x63, 0x60, 0xad, 0x95, 0x63, 0x60, 0xaa, 0x95, 0x63, 0x61, 0xad, - 0x95, 0x63, 0x62, 0xaa, 0x95, 0x63, 0x63, 0xad, 0x95, 0x63, 0x63, 0xaa, - 0x95, 0x63, 0x64, 0xad, 0x95, 0x63, 0x65, 0xaa, 0x95, 0x63, 0x66, 0xad, - 0x95, 0x63, 0x66, 0xaa, 0x95, 0x63, 0x67, 0xad, 0x95, 0x63, 0x68, 0xaa, - 0x95, 0x63, 0x68, 0xad, 0x95, 0x63, 0x69, 0xaa, 0x95, 0x63, 0x6a, 0xad, - 0x95, 0x63, 0x6a, 0xaa, 0x95, 0x63, 0x6b, 0xad, 0x95, 0x63, 0x6c, 0xaa, - 0x95, 0x63, 0x6c, 0xad, 0x95, 0x63, 0x6d, 0xaa, 0x95, 0x63, 0x6e, 0xad, - 0x95, 0x63, 0x6e, 0xaa, 0x95, 0x63, 0x6f, 0xad, 0x95, 0x63, 0x70, 0xaa, - 0x95, 0x63, 0x70, 0xad, 0x95, 0x63, 0x71, 0xaa, 0x95, 0x63, 0x72, 0xad, - 0x95, 0x63, 0x72, 0xaa, 0x95, 0x63, 0x73, 0xad, 0x95, 0x63, 0x73, 0xaa, - 0x95, 0x63, 0x74, 0xad, 0x95, 0x63, 0x75, 0xaa, 0x95, 0x63, 0x75, 0xa8, - 0x96, 0x63, 0x76, 0xaa, 0x95, 0x63, 0x76, 0xa8, 0x96, 0x63, 0x77, 0xaa, - 0x95, 0x63, 0x78, 0xa8, 0x96, 0x63, 0x78, 0xaa, 0x95, 0x63, 0x79, 0xa8, - 0x96, 0x63, 0x79, 0xaa, 0x95, 0x63, 0x7a, 0xa8, 0x96, 0x63, 0x7a, 0xaa, - 0x95, 0x63, 0x7b, 0xa8, 0x96, 0x63, 0x7c, 0xaa, 0x95, 0x63, 0x7c, 0xa8, - 0x96, 0x63, 0x7d, 0xaa, 0x95, 0x63, 0x7d, 0xa8, 0x96, 0x63, 0x7e, 0xaa, - 0x95, 0x63, 0x7e, 0xa8, 0x96, 0x63, 0x7f, 0xaa, 0x95, 0x63, 0x7f, 0xa8, - 0x96, 0x63, 0x80, 0xaa, 0x95, 0x63, 0x81, 0xa8, 0x96, 0x63, 0x81, 0xaa, - 0x95, 0x63, 0x82, 0xa8, 0x96, 0x63, 0x82, 0xaa, 0x95, 0x63, 0x83, 0xa8, - 0x96, 0x63, 0x83, 0xaa, 0x95, 0x63, 0x84, 0xa8, 0x96, 0x63, 0x84, 0xaa, - 0x95, 0x63, 0x85, 0xa8, 0x96, 0x63, 0x85, 0xaa, 0x95, 0x63, 0x86, 0xa8, - 0x96, 0x63, 0x86, 0xaa, 0x95, 0x63, 0x87, 0xa8, 0x96, 0x63, 0x87, 0xaa, - 0x95, 0x63, 0x88, 0xa8, 0x96, 0x63, 0x88, 0xaa, 0x95, 0x63, 0x89, 0xa8, - 0x96, 0x63, 0x89, 0xaa, 0x95, 0x63, 0x8a, 0xa8, 0x96, 0x63, 0x8a, 0xaa, - 0x95, 0x63, 0x8b, 0xa8, 0x96, 0x63, 0x8b, 0xaa, 0x95, 0x63, 0x8c, 0xa8, - 0x96, 0x63, 0x8c, 0xaa, 0x95, 0x63, 0x8d, 0xa8, 0x96, 0x63, 0x8d, 0xaa, - 0x95, 0x63, 0x8e, 0xa8, 0x96, 0x63, 0x8e, 0xaa, 0x95, 0x63, 0x8e, 0xa8, - 0x96, 0x63, 0x8f, 0xa7, 0x96, 0x63, 0x8f, 0xa8, 0x96, 0x63, 0x90, 0xa7, - 0x96, 0x63, 0x90, 0xa8, 0x96, 0x63, 0x91, 0xa7, 0x96, 0x63, 0x91, 0xa8, - 0x96, 0x63, 0x92, 0xa7, 0x96, 0x63, 0x92, 0xa8, 0x96, 0x63, 0x93, 0xa7, - 0x96, 0x63, 0x93, 0xa8, 0x96, 0x63, 0x94, 0xa7, 0x96, 0x63, 0x94, 0xa8, - 0x96, 0x63, 0x94, 0xa7, 0x96, 0x63, 0x95, 0xa8, 0x96, 0x63, 0x95, 0xa7, - 0x96, 0x63, 0x96, 0xa8, 0x96, 0x63, 0x95, 0xa7, 0x96, 0x63, 0x96, 0xa7, - 0x97, 0x63, 0x95, 0xa7, 0x97, 0x63, 0x96, 0xa7, 0x98, 0x63, 0x9a, 0xa7, - 0x98, 0x63, 0x9a, 0xa7, 0x98, 0x63, 0x9a, 0xa7, 0x99, 0x63, 0x9a, 0xa7, - 0x99, 0x63, 0x9a, 0xa7, 0x99, 0x63, 0x9a, 0xa7, 0x99, 0x63, 0x9a, 0xa7, - 0x99, 0x63, 0x9b, 0xa7, 0x99, 0x63, 0x9b, 0xa6, 0x9a, 0x63, 0x9c, 0xa7, - 0x99, 0x63, 0x9c, 0xa6, 0x9a, 0x63, 0x9d, 0xa7, 0x99, 0x63, 0x9d, 0xa6, - 0x9a, 0x63, 0x9d, 0xa7, 0x99, 0x63, 0x9e, 0xa6, 0x9a, 0x63, 0x9e, 0xa7, - 0x99, 0x63, 0x9f, 0xa6, 0x9a, 0x63, 0x9f, 0xa7, 0x99, 0x63, 0x9f, 0xa6, - 0x9a, 0x63, 0xa0, 0xa7, 0x99, 0x63, 0xa0, 0xa6, 0x9a, 0x63, 0xa1, 0xa7, - 0x99, 0x63, 0xa1, 0xa6, 0x9a, 0x63, 0xa1, 0xae, 0x9e, 0x63, 0xa2, 0xae, - 0x9f, 0x63, 0xa2, 0xaf, 0xa2, 0x63, 0xa3, 0xaf, 0xa3, 0x63, 0xa3, 0xaf, - 0xa3, 0x63, 0xa3, 0xaf, 0xa3, 0x63, 0xa4, 0xaf, 0xa3, 0x63, 0xa4, 0xaf, - 0xa3, 0x63, 0xa5, 0xaf, 0xa3, 0x63, 0xa5, 0xaf, 0xa3, 0x63, 0xa5, 0xaf, - 0xa3, 0x63, 0xa6, 0xaf, 0xa3, 0x63, 0xa6, 0xaf, 0xa3, 0x63, 0xa6, 0xaf, - 0xa6, 0x63, 0xa7, 0xaf, 0xa7, 0x63, 0xa7, 0xaf, 0xa7, 0x63, 0xa8, 0xaf, - 0xa8, 0x63, 0xa8, 0xaf, 0xa7, 0x63, 0xa8, 0xaf, 0xa8, 0x63, 0xa9, 0xaf, - 0xa7, 0x63, 0xa9, 0xaf, 0xa8, 0x63, 0xaa, 0xaf, 0xa7, 0x63, 0xaa, 0xaf, - 0xa8, 0x63, 0xaa, 0xaf, 0xa7, 0x63, 0xab, 0xaf, 0xa8, 0x63, 0xab, 0xb0, - 0xab, 0x63, 0xab, 0xb0, 0xab, 0x63, 0xac, 0xb0, 0xac, 0x63, 0xac, 0xb0, - 0xab, 0x63, 0xac, 0xb0, 0xac, 0x63, 0xad, 0xb0, 0xab, 0x63, 0xad, 0xb0, - 0xac, 0x63, 0xae, 0xb0, 0xab, 0x63, 0xae, 0xb0, 0xac, 0x63, 0xae, 0xb0, - 0xab, 0x63, 0xaf, 0xb0, 0xac, 0x63, 0xaf, 0xb1, 0xaf, 0x63, 0xaf, 0xb1, - 0xaf, 0x63, 0xb0, 0xb1, 0xb0, 0x63, 0xb0, 0xb1, 0xaf, 0x63, 0xb0, 0xb1, - 0xb0, 0x63, 0xb1, 0xb1, 0xaf, 0x63, 0xb1, 0xb1, 0xb0, 0x63, 0xb2, 0xb1, - 0xaf, 0x63, 0xb2, 0xb1, 0xb0, 0x63, 0xb2, 0xb1, 0xaf, 0x63, 0xb3, 0xb1, - 0xb0, 0x63, 0xb3, 0xb1, 0xaf, 0x63, 0xb3, 0xb1, 0xb0, 0x63, 0xb4, 0xb2, - 0xb4, 0x63, 0xb4, 0xb2, 0xb3, 0x63, 0xb4, 0xb2, 0xb4, 0x63, 0xb5, 0xb2, - 0xb3, 0x63, 0xb5, 0xb2, 0xb4, 0x63, 0xb5, 0xb2, 0xb3, 0x63, 0xb6, 0xb2, - 0xb4, 0x63, 0xb6, 0xb2, 0xb3, 0x63, 0xb6, 0xb2, 0xb4, 0x63, 0xb7, 0xb2, - 0xb3, 0x63, 0xb7, 0xb2, 0xb4, 0x63, 0xb7, 0xb2, 0xb7, 0x63, 0xb8, 0xb2, - 0xb7, 0x63, 0xb8, 0xb2, 0xb7, 0x63, 0xb8, 0xb2, 0xb7, 0x63, 0xb9, 0xb2, - 0xb7, 0x63, 0xb9, 0xb2, 0xb7, 0x63, 0xb9, 0xb2, 0xb7, 0x63, 0xba, 0xb2, - 0xb7, 0x63, 0xba, 0xb2, 0xb7, 0x63, 0xba, 0xb2, 0xb7, 0x63, 0xbb, 0xb2, - 0xb7, 0x63, 0xbb, 0xb3, 0xbb, 0x63, 0xbb, 0xb3, 0xbb, 0x63, 0xbc, 0xb3, - 0xbb, 0x63, 0xbc, 0xb3, 0xbb, 0x63, 0xbc, 0xb3, 0xbb, 0x63, 0xbd, 0xb3, - 0xbb, 0x63, 0xbd, 0xb3, 0xbb, 0x63, 0xbd, 0xb3, 0xbb, 0x63, 0xbe, 0xb3, - 0xbb, 0x63, 0xbe, 0xb3, 0xbb, 0x63, 0xbe, 0xb3, 0xbb, 0x63, 0xbf, 0xb4, - 0xbf, 0x63, 0xbf, 0xb4, 0xbe, 0x63, 0xbf, 0xb4, 0xbf, 0x63, 0xc0, 0xb4, - 0xbe, 0x63, 0xc0, 0xb4, 0xbf, 0x63, 0xc0, 0xb4, 0xbe, 0x63, 0xc1, 0xb4, - 0xbf, 0x63, 0xc1, 0xb4, 0xbe, 0x63, 0xc1, 0xb4, 0xbf, 0x63, 0xc1, 0xb4, - 0xbe, 0x63, 0xc2, 0xb4, 0xbf, 0x63, 0xc2, 0xb4, 0xc2, 0x63, 0xc2, 0xb4, - 0xbf, 0x63, 0xc3, 0xb4, 0xc2, 0x63, 0xc3, 0xb4, 0xc2, 0x63, 0xc3, 0xb4, - 0xc2, 0x63, 0xc4, 0xb4, 0xc2, 0x63, 0xc4, 0xb4, 0xc2, 0x63, 0xc4, 0xb4, - 0xc2, 0x63, 0xc5, 0xb4, 0xc2, 0x63, 0xc5, 0xb4, 0xc2, 0x63, 0xc5, 0xb4, - 0xc2, 0x63, 0xc6, 0xb4, 0xc2, 0x63, 0xc6, 0xaa, 0xd0, 0x63, 0xc6, 0xa7, - 0xd1, 0x63, 0xc6, 0xaa, 0xd0, 0x63, 0xc7, 0xa7, 0xd1, 0x63, 0xc7, 0xaa, - 0xd0, 0x63, 0xc7, 0xab, 0xd0, 0x63, 0xc8, 0xaa, 0xd0, 0x63, 0xc8, 0xab, - 0xd0, 0x63, 0xc8, 0xaa, 0xd0, 0x63, 0xc9, 0xab, 0xd0, 0x63, 0xc9, 0xaa, - 0xd0, 0x63, 0xc9, 0xab, 0xd0, 0x63, 0xc9, 0xaa, 0xd0, 0x63, 0xca, 0xa7, - 0xd1, 0x63, 0xca, 0xaa, 0xd0, 0x63, 0xca, 0xa7, 0xd1, 0x63, 0xcb, 0xaa, - 0xd0, 0x63, 0xcb, 0xa7, 0xd1, 0x63, 0xcb, 0xaa, 0xd0, 0x63, 0xcc, 0xa7, - 0xd1, 0x63, 0xcc, 0xaa, 0xd0, 0x63, 0xcc, 0xa7, 0xd1, 0x63, 0xcc, 0xaa, - 0xd0, 0x63, 0xcd, 0xa7, 0xd1, 0x63, 0xcd, 0xaa, 0xd0, 0x63, 0xcd, 0xa7, - 0xd1, 0x63, 0xce, 0xaa, 0xd0, 0x63, 0xce, 0xa7, 0xd1, 0x63, 0xce, 0xaa, - 0xd0, 0x63, 0xce, 0xa7, 0xd1, 0x63, 0xcf, 0xa7, 0xd1, 0x63, 0xcf, 0xa7, - 0xd1, 0x63, 0xcf, 0xa7, 0xd1, 0x63, 0xd0, 0xa7, 0xd1, 0x63, 0xd0, 0xa7, - 0xd1, 0x63, 0xd0, 0xa7, 0xd1, 0x63, 0xd0, 0xa7, 0xd1, 0x63, 0xd1, 0xa7, - 0xd1, 0x62, 0xd0, 0xa7, 0xd1, 0x63, 0xd1, 0xa7, 0xd1, 0x62, 0xd0, 0xa7, - 0xd2, 0x63, 0xd1, 0xa7, 0xd2, 0x62, 0xd0, 0xa7, 0xd2, 0x63, 0xd1, 0xa7, - 0xd2, 0x62, 0xd0, 0xa7, 0xd3, 0x63, 0xd1, 0xa7, 0xd3, 0x62, 0xd0, 0xa7, - 0xd3, 0x63, 0xd1, 0xa7, 0xd4, 0x62, 0xd0, 0xa7, 0xd4, 0x63, 0xd1, 0xa7, - 0xd4, 0x62, 0xd0, 0xa7, 0xd4, 0x63, 0xd1, 0xa7, 0xd5, 0x62, 0xd0, 0xa7, - 0xd5, 0x63, 0xd1, 0xa7, 0xd5, 0x62, 0xd1, 0xa7, 0xd6, 0x5f, 0xd1, 0xa7, - 0xd6, 0x62, 0xd1, 0xa7, 0xd6, 0x5f, 0xd1, 0xa7, 0xd6, 0x62, 0xd1, 0xa7, - 0xd7, 0x5f, 0xd1, 0xa7, 0xd7, 0x62, 0xd1, 0xa7, 0xd7, 0x5f, 0xd1, 0xa7, - 0xd7, 0x62, 0xd1, 0xa7, 0xd8, 0x5f, 0xd1, 0xa7, 0xd8, 0x62, 0xd1, 0xa7, - 0xd8, 0x5f, 0xd1, 0xa7, 0xd9, 0x62, 0xd1, 0xa7, 0xd9, 0x5f, 0xd1, 0xa7, - 0xd9, 0x62, 0xd1, 0xa7, 0xd9, 0x5f, 0xd1, 0xa7, 0xda, 0x62, 0xd1, 0xa7, - 0xda, 0x5f, 0xd1, 0xa7, 0xda, 0x62, 0xd1, 0xa7, 0xda, 0x5f, 0xd1, 0xa7, - 0xdb, 0x62, 0xd1, 0xa7, 0xdb, 0x5f, 0xd1, 0xa7, 0xdb, 0x62, 0xd1, 0xa7, - 0xdb, 0x5f, 0xd1, 0xa7, 0xdc, 0x62, 0xdf, 0xa7, 0xdc, 0x50, 0xdf, 0xa7, - 0xdc, 0x50, 0xdf, 0xa7, 0xdd, 0x50, 0xdf, 0xa7, 0xdd, 0x50, 0xdf, 0xa7, - 0xdd, 0x50, 0xdf, 0xa7, 0xdd, 0x50, 0xdf, 0xa7, 0xde, 0x50, 0xdf, 0xa7, - 0xde, 0x50, 0xdf, 0xa7, 0xde, 0x50, 0xdf, 0xa7, 0xde, 0x50, 0xe2, 0xa7, - 0xdf, 0x51, 0xe2, 0xa7, 0xdf, 0x51, 0xe2, 0xa7, 0xdf, 0x51, 0xe2, 0xa7, - 0xdf, 0x51, 0xe2, 0xa7, 0xe0, 0x51, 0xe2, 0xa7, 0xe0, 0x51, 0xe2, 0xa7, - 0xe0, 0x51, 0xe2, 0xa7, 0xe1, 0x51, 0xe2, 0xa7, 0xe1, 0x51, 0xe4, 0xa7, - 0xe1, 0x52, 0xe4, 0xa7, 0xe1, 0x52, 0xe4, 0xa7, 0xe2, 0x52, 0xe4, 0xa7, - 0xe2, 0x52, 0xe4, 0xa7, 0xe2, 0x52, 0xe4, 0xa7, 0xe2, 0x52, 0xe4, 0xa7, - 0xe3, 0x52, 0xe4, 0xa7, 0xe3, 0x52, 0xe4, 0xa7, 0xe3, 0x52, 0xe6, 0xa7, - 0xe3, 0x53, 0xe4, 0xa7, 0xe4, 0x52, 0xec, 0xa7, 0xe4, 0x67, 0xec, 0xa7, - 0xe4, 0x66, 0xec, 0xa7, 0xe4, 0x67, 0xec, 0xa7, 0xe5, 0x66, 0xec, 0xa7, - 0xe5, 0x67, 0xec, 0xa7, 0xe5, 0x66, 0xec, 0xa7, 0xe5, 0x67, 0xec, 0xa7, - 0xe6, 0x66, 0xec, 0xa7, 0xe6, 0x67, 0xec, 0xa7, 0xe6, 0x66, 0xec, 0xa7, - 0xe6, 0x67, 0xec, 0xa7, 0xe7, 0x66, 0xec, 0xa7, 0xe7, 0x67, 0xec, 0xa7, - 0xe7, 0x66, 0xec, 0xa7, 0xe7, 0x67, 0xec, 0xa7, 0xe8, 0x66, 0xec, 0xa7, - 0xe8, 0x67, 0xec, 0xa7, 0xe8, 0x66, 0xec, 0xa7, 0xe8, 0x67, 0xec, 0xa7, - 0xe9, 0x66, 0xec, 0xa7, 0xe9, 0x67, 0xec, 0xa7, 0xe9, 0x66, 0xec, 0xa7, - 0xe9, 0x67, 0xec, 0xa7, 0xea, 0x66, 0xec, 0xa7, 0xea, 0x67, 0xec, 0xa7, - 0xea, 0x66, 0xec, 0xa7, 0xea, 0x66, 0xec, 0xa7, 0xeb, 0x66, 0xec, 0xa7, - 0xeb, 0x66, 0xec, 0xa7, 0xeb, 0x66, 0xec, 0xa7, 0xeb, 0x66, 0xec, 0xa7, - 0xec, 0x66, 0xec, 0xa7, 0xec, 0x66, 0xec, 0xa7, 0xec, 0x66, 0xec, 0xa7, - 0xec, 0x66, 0xec, 0xa7, 0xec, 0x66, 0xed, 0xa7, 0xed, 0x66, 0xed, 0xa7, - 0xed, 0x66, 0xed, 0xa7, 0xed, 0x66, 0xed, 0xa7, 0xed, 0x66, 0xee, 0xa7, - 0xee, 0x66, 0xee, 0xa7, 0xee, 0x66, 0xee, 0xa7, 0xee, 0x66, 0xee, 0xa7, - 0xee, 0x66, 0xef, 0xa7, 0xef, 0x66, 0xef, 0xa7, 0xef, 0x66, 0xef, 0xa7, - 0xef, 0x66, 0xef, 0xa7, 0xef, 0x66, 0xef, 0xa7, 0xf0, 0x66, 0xef, 0xa7, - 0xf0, 0x66, 0xef, 0xa7, 0xf0, 0x66, 0xf0, 0xa7, 0xf0, 0x67, 0xf1, 0xa7, - 0xf1, 0x67, 0xf1, 0xa7, 0xf1, 0x67, 0xf1, 0xa7, 0xf1, 0x67, 0xf1, 0xa7, - 0xf1, 0x67, 0xf2, 0xa7, 0xf2, 0x67, 0xf2, 0xa7, 0xf2, 0x67, 0xf2, 0xa7, - 0xf2, 0x67, 0xf2, 0xa7, 0xf2, 0x67, 0xf2, 0xa7, 0xf2, 0x67, 0xf3, 0xa7, - 0xf3, 0x67, 0xf3, 0xa7, 0xf3, 0x67, 0xf3, 0xa7, 0xf3, 0x67, 0xf3, 0xa7, - 0xf3, 0x67, 0xf3, 0xa7, 0xf4, 0x67, 0xf3, 0xa7, 0xf4, 0x67, 0xf4, 0xa7, - 0xf4, 0x68, 0xf4, 0xa7, 0xf4, 0x68, 0xf5, 0xa7, 0xf5, 0x68, 0xf5, 0xa7, - 0xf5, 0x68, 0xf5, 0xa7, 0xf5, 0x68, 0xf5, 0xa7, 0xf5, 0x68, 0xf5, 0xa7, - 0xf5, 0x68, 0xf6, 0xa7, 0xf6, 0x68, 0xf6, 0xa7, 0xf6, 0x68, 0xf6, 0xa7, - 0xf6, 0x68, 0xf6, 0xa7, 0xf6, 0x68, 0xf6, 0xa7, 0xf7, 0x68, 0xf6, 0xa7, - 0xf7, 0x68, 0xf6, 0xa7, 0xf7, 0x68, 0xf6, 0xa7, 0xf7, 0x68, 0xf6, 0xa7, - 0xf8, 0x68, 0xf6, 0xa7, 0xf8, 0x68, 0xf6, 0xa7, 0xf8, 0x68, 0xf6, 0xa7, - 0xf8, 0x68, 0xfb, 0xa7, 0xf8, 0x64, 0xfb, 0xa7, 0xf9, 0x63, 0xfb, 0xa7, - 0xf9, 0x64, 0xfb, 0xa7, 0xf9, 0x63, 0xfb, 0xa7, 0xf9, 0x64, 0xfb, 0xa7, - 0xfa, 0x63, 0xfb, 0xa7, 0xfa, 0x64, 0xfb, 0xa7, 0xfa, 0x63, 0xfb, 0xa7, - 0xfa, 0x64, 0xfb, 0xa7, 0xfa, 0x63, 0xfb, 0xa7, 0xfb, 0x64, 0xfb, 0xa7, - 0xfb, 0x63, 0xfc, 0xa7, 0xfb, 0x63, 0xfb, 0xa7, 0xfb, 0x63, 0xfc, 0xa7, - 0xfb, 0x63, 0xfc, 0xa7, 0xfb, 0x63, 0xfc, 0xa7, 0xfb, 0x63, 0xfc, 0xa7, - 0xfb, 0x63, 0xfc, 0xa7, 0xfb, 0x63, 0xfd, 0xa7, 0xfb, 0x63, 0xfd, 0xa7, - 0xfb, 0x63, 0xfd, 0xa5, 0xfb, 0x63, 0xfd, 0xa7, 0xfb, 0x63, 0xfe, 0xa5, - 0xfb, 0x63, 0xfe, 0xa7, 0xfb, 0x63, 0xfe, 0xa5, 0xfb, 0x63, 0xfe, 0xa7, - 0xfb, 0x63, 0xfe, 0xa5, 0xfb, 0x63, 0xff, 0xa7, 0xfb, 0x63, 0xff, 0xa5, - 0xfb, 0x63, 0x03, 0xaf, 0x94, 0x63, 0x0a, 0xaf, 0x94, 0x63, 0x0f, 0xaf, - 0x94, 0x63, 0x14, 0xaf, 0x94, 0x63, 0x17, 0xaf, 0x94, 0x63, 0x1b, 0xaf, - 0x94, 0x63, 0x1e, 0xaf, 0x94, 0x63, 0x20, 0xad, 0x95, 0x63, 0x23, 0xaf, - 0x94, 0x63, 0x25, 0xad, 0x95, 0x63, 0x27, 0xaf, 0x94, 0x63, 0x29, 0xad, - 0x95, 0x63, 0x2b, 0xaf, 0x94, 0x63, 0x2d, 0xad, 0x95, 0x63, 0x2f, 0xaf, - 0x94, 0x63, 0x31, 0xad, 0x95, 0x63, 0x32, 0xaf, 0x94, 0x63, 0x34, 0xad, - 0x95, 0x63, 0x35, 0xaf, 0x94, 0x63, 0x37, 0xad, 0x95, 0x63, 0x38, 0xaf, - 0x94, 0x63, 0x3a, 0xad, 0x95, 0x63, 0x3b, 0xaf, 0x94, 0x63, 0x3c, 0xad, - 0x95, 0x63, 0x3e, 0xaf, 0x94, 0x63, 0x3f, 0xad, 0x95, 0x63, 0x40, 0xaf, - 0x94, 0x63, 0x42, 0xad, 0x95, 0x63, 0x43, 0xaf, 0x94, 0x63, 0x44, 0xad, - 0x95, 0x63, 0x45, 0xaf, 0x94, 0x63, 0x46, 0xad, 0x95, 0x63, 0x47, 0xaf, - 0x94, 0x63, 0x48, 0xad, 0x95, 0x63, 0x49, 0xaf, 0x94, 0x63, 0x4a, 0xad, - 0x95, 0x63, 0x4b, 0xaf, 0x94, 0x63, 0x4c, 0xad, 0x95, 0x63, 0x4d, 0xaf, - 0x94, 0x63, 0x4e, 0xad, 0x95, 0x63, 0x4f, 0xaf, 0x94, 0x63, 0x50, 0xad, - 0x95, 0x63, 0x51, 0xaf, 0x94, 0x63, 0x52, 0xad, 0x95, 0x63, 0x53, 0xaf, - 0x94, 0x63, 0x54, 0xad, 0x95, 0x63, 0x55, 0xaf, 0x94, 0x63, 0x56, 0xad, - 0x95, 0x63, 0x57, 0xaf, 0x94, 0x63, 0x58, 0xad, 0x95, 0x63, 0x58, 0xaf, - 0x94, 0x63, 0x59, 0xad, 0x95, 0x63, 0x5a, 0xaf, 0x94, 0x63, 0x5b, 0xad, - 0x95, 0x63, 0x5c, 0xaf, 0x94, 0x63, 0x5d, 0xad, 0x95, 0x63, 0x5d, 0xaf, - 0x94, 0x63, 0x5e, 0xad, 0x95, 0x63, 0x5f, 0xaf, 0x94, 0x63, 0x60, 0xad, - 0x95, 0x63, 0x60, 0xaf, 0x94, 0x63, 0x61, 0xad, 0x95, 0x63, 0x62, 0xaf, - 0x94, 0x63, 0x63, 0xad, 0x95, 0x63, 0x63, 0xaf, 0x94, 0x63, 0x64, 0xad, - 0x95, 0x63, 0x65, 0xaf, 0x94, 0x63, 0x66, 0xad, 0x95, 0x63, 0x66, 0xaf, - 0x94, 0x63, 0x67, 0xad, 0x95, 0x63, 0x68, 0xab, 0x95, 0x63, 0x68, 0xad, - 0x95, 0x63, 0x69, 0xab, 0x95, 0x63, 0x6a, 0xad, 0x95, 0x63, 0x6a, 0xab, - 0x95, 0x63, 0x6b, 0xad, 0x95, 0x63, 0x6c, 0xab, 0x95, 0x63, 0x6c, 0xad, - 0x95, 0x63, 0x6d, 0xab, 0x95, 0x63, 0x6e, 0xad, 0x95, 0x63, 0x6e, 0xab, - 0x95, 0x63, 0x6f, 0xad, 0x95, 0x63, 0x70, 0xab, 0x95, 0x63, 0x70, 0xad, - 0x95, 0x63, 0x71, 0xab, 0x95, 0x63, 0x72, 0xad, 0x95, 0x63, 0x72, 0xab, - 0x95, 0x63, 0x73, 0xad, 0x95, 0x63, 0x73, 0xab, 0x95, 0x63, 0x74, 0xad, - 0x95, 0x63, 0x75, 0xab, 0x95, 0x63, 0x75, 0xad, 0x95, 0x63, 0x76, 0xab, - 0x95, 0x63, 0x76, 0xad, 0x95, 0x63, 0x77, 0xab, 0x95, 0x63, 0x78, 0xad, - 0x95, 0x63, 0x78, 0xab, 0x95, 0x63, 0x79, 0xad, 0x95, 0x63, 0x79, 0xab, - 0x95, 0x63, 0x7a, 0xad, 0x95, 0x63, 0x7a, 0xab, 0x95, 0x63, 0x7b, 0xad, - 0x95, 0x63, 0x7c, 0xab, 0x95, 0x63, 0x7c, 0xad, 0x95, 0x63, 0x7d, 0xab, - 0x95, 0x63, 0x7d, 0xad, 0x95, 0x63, 0x7e, 0xab, 0x95, 0x63, 0x7e, 0xa8, - 0x96, 0x63, 0x7f, 0xab, 0x95, 0x63, 0x7f, 0xa8, 0x96, 0x63, 0x80, 0xab, - 0x95, 0x63, 0x81, 0xa8, 0x96, 0x63, 0x81, 0xab, 0x95, 0x63, 0x82, 0xa8, - 0x96, 0x63, 0x82, 0xab, 0x95, 0x63, 0x83, 0xa8, 0x96, 0x63, 0x83, 0xab, - 0x95, 0x63, 0x84, 0xa8, 0x96, 0x63, 0x84, 0xab, 0x95, 0x63, 0x85, 0xa8, - 0x96, 0x63, 0x85, 0xab, 0x95, 0x63, 0x86, 0xa8, 0x96, 0x63, 0x86, 0xab, - 0x95, 0x63, 0x87, 0xa8, 0x96, 0x63, 0x87, 0xab, 0x95, 0x63, 0x88, 0xa8, - 0x96, 0x63, 0x88, 0xab, 0x95, 0x63, 0x89, 0xa8, 0x96, 0x63, 0x89, 0xab, - 0x95, 0x63, 0x8a, 0xa8, 0x96, 0x63, 0x8a, 0xab, 0x95, 0x63, 0x8b, 0xa8, - 0x96, 0x63, 0x8b, 0xab, 0x95, 0x63, 0x8c, 0xa8, 0x96, 0x63, 0x8c, 0xab, - 0x95, 0x63, 0x8d, 0xa8, 0x96, 0x63, 0x8d, 0xab, 0x95, 0x63, 0x8e, 0xa8, - 0x96, 0x63, 0x8e, 0xab, 0x95, 0x63, 0x8e, 0xa8, 0x96, 0x63, 0x8f, 0xa8, - 0x96, 0x63, 0x8f, 0xa8, 0x96, 0x63, 0x90, 0xa8, 0x96, 0x63, 0x90, 0xa8, - 0x96, 0x63, 0x91, 0xa8, 0x96, 0x63, 0x91, 0xa8, 0x96, 0x63, 0x92, 0xa8, - 0x96, 0x63, 0x92, 0xa8, 0x96, 0x63, 0x93, 0xa8, 0x96, 0x63, 0x93, 0xa8, - 0x96, 0x63, 0x94, 0xa8, 0x96, 0x63, 0x94, 0xa8, 0x96, 0x63, 0x94, 0xa8, - 0x96, 0x63, 0x95, 0xa8, 0x96, 0x63, 0x95, 0xa8, 0x96, 0x63, 0x96, 0xa8, - 0x96, 0x63, 0x95, 0xa8, 0x96, 0x63, 0x96, 0xa8, 0x97, 0x63, 0x95, 0xa8, - 0x97, 0x63, 0x96, 0xa8, 0x98, 0x63, 0x9a, 0xa8, 0x98, 0x63, 0x99, 0xa8, - 0x98, 0x64, 0x9a, 0xa8, 0x99, 0x63, 0x9a, 0xa8, 0x99, 0x63, 0x9a, 0xa8, - 0x99, 0x63, 0x9a, 0xa8, 0x99, 0x63, 0x9a, 0xa8, 0x99, 0x63, 0x9b, 0xa8, - 0x99, 0x63, 0x9b, 0xa8, 0x99, 0x63, 0x9c, 0xa8, 0x99, 0x63, 0x9c, 0xa8, - 0x99, 0x63, 0x9d, 0xa8, 0x99, 0x63, 0x9d, 0xa5, 0x9a, 0x63, 0x9d, 0xa8, - 0x99, 0x63, 0x9e, 0xa5, 0x9a, 0x63, 0x9e, 0xa8, 0x99, 0x63, 0x9f, 0xa5, - 0x9a, 0x63, 0x9f, 0xa8, 0x99, 0x63, 0x9f, 0xa5, 0x9a, 0x63, 0xa0, 0xa8, - 0x99, 0x63, 0xa0, 0xa5, 0x9a, 0x63, 0xa1, 0xa8, 0x99, 0x63, 0xa1, 0xae, - 0xa1, 0x63, 0xa1, 0xae, 0xa1, 0x63, 0xa2, 0xae, 0xa1, 0x63, 0xa2, 0xae, - 0xa1, 0x63, 0xa3, 0xae, 0xa1, 0x63, 0xa3, 0xae, 0xa1, 0x63, 0xa3, 0xae, - 0xa1, 0x63, 0xa4, 0xae, 0xa1, 0x63, 0xa4, 0xae, 0xa1, 0x63, 0xa5, 0xaf, - 0xa5, 0x63, 0xa5, 0xaf, 0xa5, 0x63, 0xa5, 0xaf, 0xa5, 0x63, 0xa6, 0xaf, - 0xa5, 0x63, 0xa6, 0xaf, 0xa5, 0x63, 0xa6, 0xaf, 0xa5, 0x63, 0xa7, 0xaf, - 0xa5, 0x63, 0xa7, 0xaf, 0xa5, 0x63, 0xa8, 0xaf, 0xa5, 0x63, 0xa8, 0xaf, - 0xa5, 0x63, 0xa8, 0xaf, 0xa5, 0x63, 0xa9, 0xb0, 0xa9, 0x63, 0xa9, 0xb0, - 0xa9, 0x63, 0xaa, 0xb0, 0xaa, 0x63, 0xaa, 0xb0, 0xa9, 0x63, 0xaa, 0xb0, - 0xaa, 0x63, 0xab, 0xb0, 0xa9, 0x63, 0xab, 0xb0, 0xaa, 0x63, 0xab, 0xb0, - 0xa9, 0x63, 0xac, 0xb0, 0xaa, 0x63, 0xac, 0xb0, 0xa9, 0x63, 0xac, 0xb0, - 0xaa, 0x63, 0xad, 0xb0, 0xad, 0x63, 0xad, 0xb0, 0xad, 0x63, 0xae, 0xb0, - 0xae, 0x63, 0xae, 0xb0, 0xad, 0x63, 0xae, 0xb0, 0xae, 0x63, 0xaf, 0xb0, - 0xad, 0x63, 0xaf, 0xb0, 0xae, 0x63, 0xaf, 0xb0, 0xad, 0x63, 0xb0, 0xb0, - 0xae, 0x63, 0xb0, 0xb0, 0xad, 0x63, 0xb0, 0xb0, 0xae, 0x63, 0xb1, 0xb1, - 0xb1, 0x63, 0xb1, 0xb1, 0xb1, 0x63, 0xb2, 0xb1, 0xb2, 0x63, 0xb2, 0xb1, - 0xb1, 0x63, 0xb2, 0xb1, 0xb2, 0x63, 0xb3, 0xb1, 0xb1, 0x63, 0xb3, 0xb1, - 0xb2, 0x63, 0xb3, 0xb1, 0xb1, 0x63, 0xb4, 0xb1, 0xb2, 0x63, 0xb4, 0xb1, - 0xb1, 0x63, 0xb4, 0xb1, 0xb2, 0x63, 0xb5, 0xb1, 0xb1, 0x63, 0xb5, 0xb1, - 0xb2, 0x63, 0xb5, 0xb2, 0xb5, 0x63, 0xb6, 0xb2, 0xb5, 0x63, 0xb6, 0xb2, - 0xb5, 0x63, 0xb6, 0xb2, 0xb5, 0x63, 0xb7, 0xb2, 0xb5, 0x63, 0xb7, 0xb2, - 0xb5, 0x63, 0xb7, 0xb2, 0xb5, 0x63, 0xb8, 0xb2, 0xb5, 0x63, 0xb8, 0xb2, - 0xb5, 0x63, 0xb8, 0xb2, 0xb5, 0x63, 0xb9, 0xb2, 0xb5, 0x63, 0xb9, 0xb3, - 0xb9, 0x63, 0xb9, 0xb3, 0xb9, 0x63, 0xba, 0xb3, 0xb9, 0x63, 0xba, 0xb3, - 0xb9, 0x63, 0xba, 0xb3, 0xb9, 0x63, 0xbb, 0xb3, 0xb9, 0x63, 0xbb, 0xb3, - 0xb9, 0x63, 0xbb, 0xb3, 0xb9, 0x63, 0xbc, 0xb3, 0xb9, 0x63, 0xbc, 0xb3, - 0xb9, 0x63, 0xbc, 0xb3, 0xb9, 0x63, 0xbd, 0xb3, 0xb9, 0x63, 0xbd, 0xb3, - 0xbd, 0x63, 0xbd, 0xb3, 0xbd, 0x63, 0xbe, 0xb3, 0xbd, 0x63, 0xbe, 0xb3, - 0xbd, 0x63, 0xbe, 0xb3, 0xbd, 0x63, 0xbf, 0xb3, 0xbd, 0x63, 0xbf, 0xb3, - 0xbd, 0x63, 0xbf, 0xb3, 0xbd, 0x63, 0xc0, 0xb3, 0xbd, 0x63, 0xc0, 0xb3, - 0xbd, 0x63, 0xc0, 0xb3, 0xbd, 0x63, 0xc1, 0xb4, 0xc1, 0x63, 0xc1, 0xb4, - 0xc0, 0x63, 0xc1, 0xb4, 0xc1, 0x63, 0xc1, 0xb4, 0xc0, 0x63, 0xc2, 0xb4, - 0xc1, 0x63, 0xc2, 0xb4, 0xc0, 0x63, 0xc2, 0xb4, 0xc1, 0x63, 0xc3, 0xb4, - 0xc0, 0x63, 0xc3, 0xb4, 0xc1, 0x63, 0xc3, 0xb4, 0xc0, 0x63, 0xc4, 0xb4, - 0xc1, 0x63, 0xc4, 0xb5, 0xc4, 0x63, 0xc4, 0xb4, 0xc1, 0x63, 0xc5, 0xb5, - 0xc4, 0x63, 0xc5, 0xb5, 0xc4, 0x63, 0xc5, 0xb5, 0xc4, 0x63, 0xc6, 0xb5, - 0xc4, 0x63, 0xc6, 0xa9, 0xd0, 0x63, 0xc6, 0xa8, 0xd1, 0x63, 0xc6, 0xa9, - 0xd0, 0x63, 0xc7, 0xa8, 0xd1, 0x63, 0xc7, 0xa9, 0xd0, 0x63, 0xc7, 0xab, - 0xd0, 0x63, 0xc8, 0xa9, 0xd0, 0x63, 0xc8, 0xab, 0xd0, 0x63, 0xc8, 0xa9, - 0xd0, 0x63, 0xc9, 0xab, 0xd0, 0x63, 0xc9, 0xa9, 0xd0, 0x63, 0xc9, 0xab, - 0xd0, 0x63, 0xc9, 0xa9, 0xd0, 0x63, 0xca, 0xa8, 0xd1, 0x63, 0xca, 0xa9, - 0xd0, 0x63, 0xca, 0xa8, 0xd1, 0x63, 0xcb, 0xa9, 0xd0, 0x63, 0xcb, 0xa8, - 0xd1, 0x63, 0xcb, 0xa9, 0xd0, 0x63, 0xcc, 0xa8, 0xd1, 0x63, 0xcc, 0xa9, - 0xd0, 0x63, 0xcc, 0xa8, 0xd1, 0x63, 0xcc, 0xa9, 0xd0, 0x63, 0xcd, 0xa8, - 0xd1, 0x63, 0xcd, 0xa9, 0xd0, 0x63, 0xcd, 0xa8, 0xd1, 0x63, 0xce, 0xa9, - 0xd0, 0x63, 0xce, 0xa8, 0xd1, 0x63, 0xce, 0xa9, 0xd0, 0x63, 0xce, 0xa8, - 0xd1, 0x63, 0xcf, 0xa9, 0xd0, 0x63, 0xcf, 0xa8, 0xd1, 0x63, 0xcf, 0xa9, - 0xd0, 0x63, 0xd0, 0xa8, 0xd1, 0x63, 0xd0, 0xa8, 0xd1, 0x63, 0xd0, 0xa8, - 0xd1, 0x63, 0xd0, 0xa8, 0xd1, 0x63, 0xd0, 0xa8, 0xd1, 0x63, 0xd0, 0xa8, - 0xd1, 0x63, 0xd0, 0xa8, 0xd1, 0x63, 0xd0, 0xa8, 0xd2, 0x63, 0xd1, 0xa8, - 0xd2, 0x61, 0xd0, 0xa8, 0xd2, 0x63, 0xd1, 0xa8, 0xd2, 0x61, 0xd0, 0xa8, - 0xd3, 0x63, 0xd1, 0xa8, 0xd3, 0x61, 0xd0, 0xa8, 0xd3, 0x63, 0xd1, 0xa8, - 0xd4, 0x61, 0xd0, 0xa8, 0xd4, 0x63, 0xd1, 0xa8, 0xd4, 0x61, 0xd0, 0xa8, - 0xd4, 0x63, 0xd1, 0xa8, 0xd5, 0x61, 0xd0, 0xa8, 0xd5, 0x63, 0xd1, 0xa8, - 0xd5, 0x61, 0xd1, 0xa8, 0xd6, 0x5f, 0xd1, 0xa8, 0xd6, 0x61, 0xd1, 0xa8, - 0xd6, 0x5f, 0xd1, 0xa8, 0xd6, 0x61, 0xd1, 0xa8, 0xd7, 0x5f, 0xd1, 0xa8, - 0xd7, 0x61, 0xd1, 0xa8, 0xd7, 0x5f, 0xd1, 0xa8, 0xd7, 0x61, 0xd1, 0xa8, - 0xd8, 0x5f, 0xd1, 0xa8, 0xd8, 0x61, 0xd1, 0xa8, 0xd8, 0x5f, 0xd1, 0xa8, - 0xd9, 0x61, 0xd1, 0xa8, 0xd9, 0x5f, 0xd1, 0xa8, 0xd9, 0x61, 0xd1, 0xa8, - 0xd9, 0x5f, 0xd1, 0xa8, 0xda, 0x61, 0xd1, 0xa8, 0xda, 0x5f, 0xd1, 0xa8, - 0xda, 0x61, 0xd1, 0xa8, 0xda, 0x5f, 0xd1, 0xa8, 0xdb, 0x61, 0xd1, 0xa8, - 0xdb, 0x5f, 0xd1, 0xa8, 0xdb, 0x61, 0xd1, 0xa8, 0xdb, 0x5f, 0xd1, 0xa8, - 0xdc, 0x61, 0xd1, 0xa8, 0xdc, 0x5f, 0xde, 0xa8, 0xdc, 0x4f, 0xde, 0xa8, - 0xdd, 0x4f, 0xde, 0xa8, 0xdd, 0x4f, 0xde, 0xa8, 0xdd, 0x4f, 0xe1, 0xa8, - 0xdd, 0x50, 0xe1, 0xa8, 0xde, 0x50, 0xe1, 0xa8, 0xde, 0x50, 0xe1, 0xa8, - 0xde, 0x50, 0xe1, 0xa8, 0xde, 0x50, 0xe1, 0xa8, 0xdf, 0x50, 0xe1, 0xa8, - 0xdf, 0x50, 0xe1, 0xa8, 0xdf, 0x50, 0xe1, 0xa8, 0xdf, 0x50, 0xe3, 0xa8, - 0xe0, 0x51, 0xe3, 0xa8, 0xe0, 0x51, 0xe3, 0xa8, 0xe0, 0x51, 0xe3, 0xa8, - 0xe1, 0x51, 0xe3, 0xa8, 0xe1, 0x51, 0xe3, 0xa8, 0xe1, 0x51, 0xe3, 0xa8, - 0xe1, 0x51, 0xe3, 0xa8, 0xe2, 0x51, 0xe3, 0xa8, 0xe2, 0x51, 0xe3, 0xa8, - 0xe2, 0x51, 0xe5, 0xa8, 0xe2, 0x52, 0xe6, 0xa8, 0xe3, 0x52, 0xe5, 0xa8, - 0xe3, 0x52, 0xe6, 0xa8, 0xe3, 0x52, 0xe5, 0xa8, 0xe3, 0x52, 0xec, 0xa8, - 0xe4, 0x65, 0xec, 0xa8, 0xe4, 0x67, 0xec, 0xa8, 0xe4, 0x65, 0xec, 0xa8, - 0xe4, 0x67, 0xec, 0xa8, 0xe5, 0x65, 0xec, 0xa8, 0xe5, 0x67, 0xec, 0xa8, - 0xe5, 0x65, 0xec, 0xa8, 0xe5, 0x67, 0xec, 0xa8, 0xe6, 0x65, 0xec, 0xa8, - 0xe6, 0x67, 0xec, 0xa8, 0xe6, 0x65, 0xec, 0xa8, 0xe6, 0x67, 0xec, 0xa8, - 0xe7, 0x65, 0xec, 0xa8, 0xe7, 0x67, 0xec, 0xa8, 0xe7, 0x65, 0xec, 0xa8, - 0xe7, 0x67, 0xec, 0xa8, 0xe8, 0x65, 0xec, 0xa8, 0xe8, 0x67, 0xec, 0xa8, - 0xe8, 0x65, 0xec, 0xa8, 0xe8, 0x67, 0xec, 0xa8, 0xe9, 0x65, 0xec, 0xa8, - 0xe9, 0x67, 0xec, 0xa8, 0xe9, 0x65, 0xec, 0xa8, 0xe9, 0x65, 0xec, 0xa8, - 0xea, 0x65, 0xec, 0xa8, 0xea, 0x65, 0xec, 0xa8, 0xea, 0x65, 0xec, 0xa8, - 0xea, 0x65, 0xec, 0xa8, 0xeb, 0x65, 0xec, 0xa8, 0xeb, 0x65, 0xec, 0xa8, - 0xeb, 0x65, 0xec, 0xa8, 0xeb, 0x65, 0xec, 0xa8, 0xec, 0x65, 0xec, 0xa8, - 0xec, 0x65, 0xec, 0xa8, 0xec, 0x65, 0xec, 0xa8, 0xec, 0x65, 0xec, 0xa8, - 0xec, 0x65, 0xed, 0xa8, 0xed, 0x65, 0xed, 0xa8, 0xed, 0x65, 0xed, 0xa8, - 0xed, 0x65, 0xed, 0xa8, 0xed, 0x65, 0xed, 0xa8, 0xee, 0x65, 0xed, 0xa8, - 0xee, 0x65, 0xed, 0xa8, 0xee, 0x65, 0xee, 0xa8, 0xee, 0x66, 0xef, 0xa8, - 0xef, 0x66, 0xef, 0xa8, 0xef, 0x66, 0xef, 0xa8, 0xef, 0x66, 0xef, 0xa8, - 0xef, 0x66, 0xf0, 0xa8, 0xf0, 0x66, 0xf0, 0xa8, 0xf0, 0x66, 0xf0, 0xa8, - 0xf0, 0x66, 0xf0, 0xa8, 0xf0, 0x66, 0xf1, 0xa8, 0xf1, 0x66, 0xf1, 0xa8, - 0xf1, 0x66, 0xf1, 0xa8, 0xf1, 0x66, 0xf1, 0xa8, 0xf1, 0x66, 0xf1, 0xa8, - 0xf2, 0x66, 0xf1, 0xa8, 0xf2, 0x66, 0xf1, 0xa8, 0xf2, 0x66, 0xf2, 0xa8, - 0xf2, 0x67, 0xf2, 0xa8, 0xf2, 0x67, 0xf3, 0xa8, 0xf3, 0x67, 0xf3, 0xa8, - 0xf3, 0x67, 0xf3, 0xa8, 0xf3, 0x67, 0xf3, 0xa8, 0xf3, 0x67, 0xf4, 0xa8, - 0xf4, 0x67, 0xf4, 0xa8, 0xf4, 0x67, 0xf4, 0xa8, 0xf4, 0x67, 0xf4, 0xa8, - 0xf4, 0x67, 0xf5, 0xa8, 0xf5, 0x67, 0xf4, 0xa8, 0xf5, 0x67, 0xf5, 0xa8, - 0xf5, 0x67, 0xf4, 0xa8, 0xf5, 0x67, 0xf5, 0xa8, 0xf5, 0x67, 0xf6, 0xa8, - 0xf6, 0x68, 0xf6, 0xa8, 0xf6, 0x68, 0xf6, 0xa8, 0xf6, 0x68, 0xf6, 0xa8, - 0xf6, 0x68, 0xf6, 0xa8, 0xf7, 0x68, 0xf6, 0xa8, 0xf7, 0x68, 0xf6, 0xa8, - 0xf7, 0x68, 0xf6, 0xa8, 0xf7, 0x68, 0xf6, 0xa8, 0xf8, 0x68, 0xf6, 0xa8, - 0xf8, 0x68, 0xf6, 0xa8, 0xf8, 0x68, 0xf6, 0xa8, 0xf8, 0x68, 0xfb, 0xa8, - 0xf8, 0x64, 0xfb, 0xa8, 0xf9, 0x63, 0xfb, 0xa8, 0xf9, 0x64, 0xfb, 0xa8, - 0xf9, 0x63, 0xfb, 0xa8, 0xf9, 0x64, 0xfb, 0xa8, 0xfa, 0x63, 0xfb, 0xa8, - 0xfa, 0x64, 0xfb, 0xa8, 0xfa, 0x63, 0xfb, 0xa8, 0xfa, 0x64, 0xfb, 0xa8, - 0xfa, 0x63, 0xfb, 0xa8, 0xfb, 0x64, 0xfb, 0xa8, 0xfb, 0x63, 0xfc, 0xa8, - 0xfb, 0x63, 0xfb, 0xa8, 0xfb, 0x63, 0xfc, 0xa8, 0xfb, 0x63, 0xfc, 0xa8, - 0xfb, 0x63, 0xfc, 0xa8, 0xfb, 0x63, 0xfc, 0xa8, 0xfb, 0x63, 0xfc, 0xa8, - 0xfb, 0x63, 0xfd, 0xa8, 0xfb, 0x63, 0xfd, 0xa8, 0xfb, 0x63, 0xfd, 0xa5, - 0xfb, 0x63, 0xfd, 0xa8, 0xfb, 0x63, 0xfe, 0xa5, 0xfb, 0x63, 0xfe, 0xa8, - 0xfb, 0x63, 0xfe, 0xa5, 0xfb, 0x63, 0xfe, 0xa8, 0xfb, 0x63, 0xfe, 0xa5, - 0xfb, 0x63, 0xff, 0xa8, 0xfb, 0x63, 0xff, 0xa5, 0xfb, 0x63, 0x03, 0xaf, - 0x94, 0x64, 0x0a, 0xb2, 0x94, 0x64, 0x0f, 0xaf, 0x94, 0x64, 0x14, 0xb2, - 0x94, 0x64, 0x17, 0xaf, 0x94, 0x64, 0x1b, 0xb2, 0x94, 0x64, 0x1e, 0xaf, - 0x94, 0x64, 0x20, 0xb2, 0x94, 0x64, 0x23, 0xaf, 0x94, 0x64, 0x25, 0xb2, - 0x94, 0x64, 0x27, 0xaf, 0x94, 0x64, 0x29, 0xb2, 0x94, 0x64, 0x2b, 0xaf, - 0x94, 0x64, 0x2d, 0xb2, 0x94, 0x64, 0x2f, 0xaf, 0x94, 0x64, 0x31, 0xb2, - 0x94, 0x64, 0x32, 0xaf, 0x94, 0x64, 0x34, 0xb2, 0x94, 0x64, 0x35, 0xaf, - 0x94, 0x64, 0x37, 0xb2, 0x94, 0x64, 0x38, 0xaf, 0x94, 0x64, 0x3a, 0xb2, - 0x94, 0x64, 0x3b, 0xaf, 0x94, 0x64, 0x3c, 0xb2, 0x94, 0x64, 0x3e, 0xaf, - 0x94, 0x64, 0x3f, 0xb2, 0x94, 0x64, 0x40, 0xaf, 0x94, 0x64, 0x42, 0xb2, - 0x94, 0x64, 0x43, 0xaf, 0x94, 0x64, 0x44, 0xb2, 0x94, 0x64, 0x45, 0xaf, - 0x94, 0x64, 0x46, 0xb2, 0x94, 0x64, 0x47, 0xaf, 0x94, 0x64, 0x48, 0xad, - 0x95, 0x64, 0x49, 0xaf, 0x94, 0x64, 0x4a, 0xad, 0x95, 0x64, 0x4b, 0xaf, - 0x94, 0x64, 0x4c, 0xad, 0x95, 0x64, 0x4d, 0xaf, 0x94, 0x64, 0x4e, 0xad, - 0x95, 0x64, 0x4f, 0xaf, 0x94, 0x64, 0x50, 0xad, 0x95, 0x64, 0x51, 0xaf, - 0x94, 0x64, 0x52, 0xad, 0x95, 0x64, 0x53, 0xaf, 0x94, 0x64, 0x54, 0xad, - 0x95, 0x64, 0x55, 0xaf, 0x94, 0x64, 0x56, 0xad, 0x95, 0x64, 0x57, 0xaf, - 0x94, 0x64, 0x58, 0xad, 0x95, 0x64, 0x58, 0xaf, 0x94, 0x64, 0x59, 0xad, - 0x95, 0x64, 0x5a, 0xaf, 0x94, 0x64, 0x5b, 0xad, 0x95, 0x64, 0x5c, 0xaf, - 0x94, 0x64, 0x5d, 0xad, 0x95, 0x64, 0x5d, 0xaf, 0x94, 0x64, 0x5e, 0xad, - 0x95, 0x64, 0x5f, 0xaf, 0x94, 0x64, 0x60, 0xad, 0x95, 0x64, 0x60, 0xaf, - 0x94, 0x64, 0x61, 0xad, 0x95, 0x64, 0x62, 0xaa, 0x95, 0x64, 0x63, 0xad, - 0x95, 0x64, 0x63, 0xaa, 0x95, 0x64, 0x64, 0xad, 0x95, 0x64, 0x65, 0xaa, - 0x95, 0x64, 0x66, 0xad, 0x95, 0x64, 0x66, 0xaa, 0x95, 0x64, 0x67, 0xad, - 0x95, 0x64, 0x68, 0xaa, 0x95, 0x64, 0x68, 0xad, 0x95, 0x64, 0x69, 0xaa, - 0x95, 0x64, 0x6a, 0xad, 0x95, 0x64, 0x6a, 0xaa, 0x95, 0x64, 0x6b, 0xad, - 0x95, 0x64, 0x6c, 0xaa, 0x95, 0x64, 0x6c, 0xad, 0x95, 0x64, 0x6d, 0xaa, - 0x95, 0x64, 0x6e, 0xad, 0x95, 0x64, 0x6e, 0xaa, 0x95, 0x64, 0x6f, 0xad, - 0x95, 0x64, 0x70, 0xaa, 0x95, 0x64, 0x70, 0xad, 0x95, 0x64, 0x71, 0xaa, - 0x95, 0x64, 0x72, 0xad, 0x95, 0x64, 0x72, 0xaa, 0x95, 0x64, 0x73, 0xad, - 0x95, 0x64, 0x73, 0xaa, 0x95, 0x64, 0x74, 0xad, 0x95, 0x64, 0x75, 0xaa, - 0x95, 0x64, 0x75, 0xad, 0x95, 0x64, 0x76, 0xaa, 0x95, 0x64, 0x76, 0xad, - 0x95, 0x64, 0x77, 0xaa, 0x95, 0x64, 0x78, 0xad, 0x95, 0x64, 0x78, 0xaa, - 0x95, 0x64, 0x79, 0xad, 0x95, 0x64, 0x79, 0xaa, 0x95, 0x64, 0x7a, 0xad, - 0x95, 0x64, 0x7a, 0xaa, 0x95, 0x64, 0x7b, 0xad, 0x95, 0x64, 0x7c, 0xaa, - 0x95, 0x64, 0x7c, 0xad, 0x95, 0x64, 0x7d, 0xaa, 0x95, 0x64, 0x7d, 0xad, - 0x95, 0x64, 0x7e, 0xaa, 0x95, 0x64, 0x7e, 0xa8, 0x96, 0x64, 0x7f, 0xaa, - 0x95, 0x64, 0x7f, 0xa8, 0x96, 0x64, 0x80, 0xaa, 0x95, 0x64, 0x81, 0xa8, - 0x96, 0x64, 0x81, 0xaa, 0x95, 0x64, 0x82, 0xa8, 0x96, 0x64, 0x82, 0xaa, - 0x95, 0x64, 0x83, 0xa8, 0x96, 0x64, 0x83, 0xaa, 0x95, 0x64, 0x84, 0xa8, - 0x96, 0x64, 0x84, 0xaa, 0x95, 0x64, 0x85, 0xa8, 0x96, 0x64, 0x85, 0xaa, - 0x95, 0x64, 0x86, 0xa8, 0x96, 0x64, 0x86, 0xaa, 0x95, 0x64, 0x87, 0xa8, - 0x96, 0x64, 0x87, 0xaa, 0x95, 0x64, 0x88, 0xa8, 0x96, 0x64, 0x88, 0xaa, - 0x95, 0x64, 0x89, 0xa8, 0x96, 0x64, 0x89, 0xaa, 0x95, 0x64, 0x8a, 0xa8, - 0x96, 0x64, 0x8a, 0xaa, 0x95, 0x64, 0x8b, 0xa8, 0x96, 0x64, 0x8b, 0xaa, - 0x95, 0x64, 0x8c, 0xa8, 0x96, 0x64, 0x8c, 0xaa, 0x95, 0x64, 0x8d, 0xa8, - 0x96, 0x64, 0x8d, 0xaa, 0x95, 0x64, 0x8e, 0xa8, 0x96, 0x64, 0x8e, 0xaa, - 0x95, 0x64, 0x8e, 0xa8, 0x96, 0x64, 0x8f, 0xaa, 0x95, 0x64, 0x8f, 0xa8, - 0x96, 0x64, 0x90, 0xaa, 0x95, 0x64, 0x90, 0xa8, 0x96, 0x64, 0x91, 0xaa, - 0x95, 0x64, 0x91, 0xa8, 0x96, 0x64, 0x92, 0xaa, 0x95, 0x64, 0x92, 0xa8, - 0x96, 0x64, 0x93, 0xa8, 0x96, 0x64, 0x93, 0xa8, 0x96, 0x64, 0x94, 0xa8, - 0x96, 0x64, 0x94, 0xa8, 0x96, 0x64, 0x94, 0xa8, 0x96, 0x64, 0x95, 0xa8, - 0x96, 0x64, 0x95, 0xa8, 0x96, 0x64, 0x96, 0xa8, 0x96, 0x63, 0x95, 0xa8, - 0x96, 0x64, 0x96, 0xa8, 0x97, 0x63, 0x95, 0xa8, 0x97, 0x64, 0x96, 0xa8, - 0x98, 0x63, 0x9a, 0xa8, 0x98, 0x64, 0x99, 0xa8, 0x98, 0x65, 0x9a, 0xa8, - 0x99, 0x64, 0x9a, 0xa8, 0x99, 0x64, 0x9a, 0xa8, 0x99, 0x64, 0x9a, 0xa8, - 0x99, 0x64, 0x9a, 0xa8, 0x99, 0x64, 0x9b, 0xa8, 0x99, 0x64, 0x9b, 0xa8, - 0x99, 0x64, 0x9c, 0xa8, 0x99, 0x64, 0x9c, 0xa8, 0x99, 0x64, 0x9d, 0xa8, - 0x99, 0x64, 0x9d, 0xa6, 0x9a, 0x64, 0x9d, 0xa8, 0x99, 0x64, 0x9e, 0xa6, - 0x9a, 0x64, 0x9e, 0xa8, 0x99, 0x64, 0x9f, 0xa6, 0x9a, 0x64, 0x9f, 0xa8, - 0x99, 0x64, 0x9f, 0xa6, 0x9a, 0x64, 0xa0, 0xa8, 0x99, 0x64, 0xa0, 0xae, - 0x9f, 0x64, 0xa1, 0xae, 0x9e, 0x64, 0xa1, 0xae, 0x9f, 0x64, 0xa1, 0xae, - 0x9e, 0x64, 0xa2, 0xae, 0x9f, 0x64, 0xa2, 0xaf, 0xa2, 0x64, 0xa3, 0xaf, - 0xa3, 0x64, 0xa3, 0xaf, 0xa3, 0x64, 0xa3, 0xaf, 0xa3, 0x64, 0xa4, 0xaf, - 0xa3, 0x64, 0xa4, 0xaf, 0xa3, 0x64, 0xa5, 0xaf, 0xa3, 0x64, 0xa5, 0xaf, - 0xa3, 0x64, 0xa5, 0xaf, 0xa3, 0x64, 0xa6, 0xaf, 0xa3, 0x64, 0xa6, 0xaf, - 0xa3, 0x64, 0xa6, 0xaf, 0xa6, 0x64, 0xa7, 0xaf, 0xa7, 0x64, 0xa7, 0xaf, - 0xa7, 0x64, 0xa8, 0xaf, 0xa8, 0x64, 0xa8, 0xaf, 0xa7, 0x64, 0xa8, 0xaf, - 0xa8, 0x64, 0xa9, 0xaf, 0xa7, 0x64, 0xa9, 0xaf, 0xa8, 0x64, 0xaa, 0xaf, - 0xa7, 0x64, 0xaa, 0xaf, 0xa8, 0x64, 0xaa, 0xaf, 0xa7, 0x64, 0xab, 0xaf, - 0xa8, 0x64, 0xab, 0xb0, 0xab, 0x64, 0xab, 0xb0, 0xab, 0x64, 0xac, 0xb0, - 0xac, 0x64, 0xac, 0xb0, 0xab, 0x64, 0xac, 0xb0, 0xac, 0x64, 0xad, 0xb0, - 0xab, 0x64, 0xad, 0xb0, 0xac, 0x64, 0xae, 0xb0, 0xab, 0x64, 0xae, 0xb0, - 0xac, 0x64, 0xae, 0xb0, 0xab, 0x64, 0xaf, 0xb0, 0xac, 0x64, 0xaf, 0xb1, - 0xaf, 0x64, 0xaf, 0xb1, 0xaf, 0x64, 0xb0, 0xb1, 0xb0, 0x64, 0xb0, 0xb1, - 0xaf, 0x64, 0xb0, 0xb1, 0xb0, 0x64, 0xb1, 0xb1, 0xaf, 0x64, 0xb1, 0xb1, - 0xb0, 0x64, 0xb2, 0xb1, 0xaf, 0x64, 0xb2, 0xb1, 0xb0, 0x64, 0xb2, 0xb1, - 0xaf, 0x64, 0xb3, 0xb1, 0xb0, 0x64, 0xb3, 0xb2, 0xb3, 0x64, 0xb3, 0xb2, - 0xb3, 0x64, 0xb4, 0xb2, 0xb4, 0x64, 0xb4, 0xb2, 0xb3, 0x64, 0xb4, 0xb2, - 0xb4, 0x64, 0xb5, 0xb2, 0xb3, 0x64, 0xb5, 0xb2, 0xb4, 0x64, 0xb5, 0xb2, - 0xb3, 0x64, 0xb6, 0xb2, 0xb4, 0x64, 0xb6, 0xb2, 0xb3, 0x64, 0xb6, 0xb2, - 0xb4, 0x64, 0xb7, 0xb2, 0xb3, 0x64, 0xb7, 0xb2, 0xb4, 0x64, 0xb7, 0xb2, - 0xb7, 0x64, 0xb8, 0xb2, 0xb7, 0x64, 0xb8, 0xb2, 0xb7, 0x64, 0xb8, 0xb2, - 0xb7, 0x64, 0xb9, 0xb2, 0xb7, 0x64, 0xb9, 0xb2, 0xb7, 0x64, 0xb9, 0xb2, - 0xb7, 0x64, 0xba, 0xb2, 0xb7, 0x64, 0xba, 0xb2, 0xb7, 0x64, 0xba, 0xb2, - 0xb7, 0x64, 0xbb, 0xb2, 0xb7, 0x64, 0xbb, 0xb3, 0xbb, 0x64, 0xbb, 0xb3, - 0xbb, 0x64, 0xbc, 0xb3, 0xbb, 0x64, 0xbc, 0xb3, 0xbb, 0x64, 0xbc, 0xb3, - 0xbb, 0x64, 0xbd, 0xb3, 0xbb, 0x64, 0xbd, 0xb3, 0xbb, 0x64, 0xbd, 0xb3, - 0xbb, 0x64, 0xbe, 0xb3, 0xbb, 0x64, 0xbe, 0xb3, 0xbb, 0x64, 0xbe, 0xb3, - 0xbb, 0x64, 0xbf, 0xb4, 0xbf, 0x64, 0xbf, 0xb4, 0xbe, 0x64, 0xbf, 0xb4, - 0xbf, 0x64, 0xc0, 0xb4, 0xbe, 0x64, 0xc0, 0xb4, 0xbf, 0x64, 0xc0, 0xb4, - 0xbe, 0x64, 0xc1, 0xb4, 0xbf, 0x64, 0xc1, 0xb4, 0xbe, 0x64, 0xc1, 0xb4, - 0xbf, 0x64, 0xc1, 0xb4, 0xbe, 0x64, 0xc2, 0xb4, 0xbf, 0x64, 0xc2, 0xb4, - 0xc2, 0x64, 0xc2, 0xb4, 0xc2, 0x64, 0xc3, 0xb4, 0xc2, 0x64, 0xc3, 0xb4, - 0xc2, 0x64, 0xc3, 0xb4, 0xc2, 0x64, 0xc4, 0xb4, 0xc2, 0x64, 0xc4, 0xb4, - 0xc2, 0x64, 0xc4, 0xb4, 0xc2, 0x64, 0xc5, 0xb4, 0xc2, 0x64, 0xc5, 0xb4, - 0xc2, 0x64, 0xc5, 0xb4, 0xc2, 0x64, 0xc6, 0xb5, 0xc6, 0x64, 0xc6, 0xb5, - 0xc6, 0x64, 0xc6, 0xa8, 0xd1, 0x64, 0xc6, 0xaa, 0xd0, 0x64, 0xc7, 0xa8, - 0xd1, 0x64, 0xc7, 0xaa, 0xd0, 0x64, 0xc7, 0xab, 0xd0, 0x64, 0xc8, 0xaa, - 0xd0, 0x64, 0xc8, 0xab, 0xd0, 0x64, 0xc8, 0xaa, 0xd0, 0x64, 0xc9, 0xab, - 0xd0, 0x64, 0xc9, 0xaa, 0xd0, 0x64, 0xc9, 0xab, 0xd0, 0x64, 0xc9, 0xaa, - 0xd0, 0x64, 0xca, 0xab, 0xd0, 0x64, 0xca, 0xaa, 0xd0, 0x64, 0xca, 0xab, - 0xd0, 0x64, 0xcb, 0xaa, 0xd0, 0x64, 0xcb, 0xab, 0xd0, 0x64, 0xcb, 0xaa, - 0xd0, 0x64, 0xcc, 0xab, 0xd0, 0x64, 0xcc, 0xaa, 0xd0, 0x64, 0xcc, 0xa8, - 0xd1, 0x64, 0xcc, 0xaa, 0xd0, 0x64, 0xcd, 0xa8, 0xd1, 0x64, 0xcd, 0xaa, - 0xd0, 0x64, 0xcd, 0xa8, 0xd1, 0x64, 0xce, 0xaa, 0xd0, 0x64, 0xce, 0xa8, - 0xd1, 0x64, 0xce, 0xaa, 0xd0, 0x64, 0xce, 0xa8, 0xd1, 0x64, 0xcf, 0xaa, - 0xd0, 0x64, 0xcf, 0xa8, 0xd1, 0x64, 0xcf, 0xaa, 0xd0, 0x64, 0xd0, 0xa8, - 0xd1, 0x64, 0xd0, 0xa8, 0xd1, 0x64, 0xd0, 0xa8, 0xd1, 0x64, 0xd0, 0xa8, - 0xd1, 0x64, 0xd0, 0xa8, 0xd1, 0x64, 0xd0, 0xa8, 0xd1, 0x64, 0xd0, 0xa8, - 0xd1, 0x64, 0xd0, 0xa8, 0xd2, 0x64, 0xd1, 0xa8, 0xd2, 0x62, 0xd0, 0xa8, - 0xd2, 0x64, 0xd1, 0xa8, 0xd2, 0x62, 0xd0, 0xa8, 0xd3, 0x64, 0xd1, 0xa8, - 0xd3, 0x62, 0xd0, 0xa8, 0xd3, 0x64, 0xd1, 0xa8, 0xd4, 0x62, 0xd0, 0xa8, - 0xd4, 0x64, 0xd1, 0xa8, 0xd4, 0x62, 0xd0, 0xa8, 0xd4, 0x64, 0xd1, 0xa8, - 0xd5, 0x62, 0xd0, 0xa8, 0xd5, 0x64, 0xd1, 0xa8, 0xd5, 0x62, 0xd0, 0xa8, - 0xd6, 0x64, 0xd1, 0xa8, 0xd6, 0x62, 0xd0, 0xa8, 0xd6, 0x64, 0xd1, 0xa8, - 0xd6, 0x62, 0xd0, 0xa8, 0xd7, 0x64, 0xd1, 0xa8, 0xd7, 0x62, 0xd0, 0xa8, - 0xd7, 0x64, 0xd1, 0xa8, 0xd7, 0x62, 0xd1, 0xa8, 0xd8, 0x5f, 0xd1, 0xa8, - 0xd8, 0x62, 0xd1, 0xa8, 0xd8, 0x5f, 0xd1, 0xa8, 0xd9, 0x62, 0xd1, 0xa8, - 0xd9, 0x5f, 0xd1, 0xa8, 0xd9, 0x62, 0xd1, 0xa8, 0xd9, 0x5f, 0xd1, 0xa8, - 0xda, 0x62, 0xd1, 0xa8, 0xda, 0x5f, 0xd1, 0xa8, 0xda, 0x62, 0xd1, 0xa8, - 0xda, 0x5f, 0xd1, 0xa8, 0xdb, 0x62, 0xd1, 0xa8, 0xdb, 0x5f, 0xd1, 0xa8, - 0xdb, 0x62, 0xd1, 0xa8, 0xdb, 0x5f, 0xd1, 0xa8, 0xdc, 0x62, 0xd1, 0xa8, - 0xdc, 0x5f, 0xdf, 0xa8, 0xdc, 0x50, 0xdf, 0xa8, 0xdd, 0x50, 0xdf, 0xa8, - 0xdd, 0x50, 0xdf, 0xa8, 0xdd, 0x50, 0xdf, 0xa8, 0xdd, 0x50, 0xdf, 0xa8, - 0xde, 0x50, 0xdf, 0xa8, 0xde, 0x50, 0xdf, 0xa8, 0xde, 0x50, 0xdf, 0xa8, - 0xde, 0x50, 0xe2, 0xa8, 0xdf, 0x51, 0xe2, 0xa8, 0xdf, 0x51, 0xe2, 0xa8, - 0xdf, 0x51, 0xe2, 0xa8, 0xdf, 0x51, 0xe2, 0xa8, 0xe0, 0x51, 0xe2, 0xa8, - 0xe0, 0x51, 0xe2, 0xa8, 0xe0, 0x51, 0xe2, 0xa8, 0xe1, 0x51, 0xe2, 0xa8, - 0xe1, 0x51, 0xe4, 0xa8, 0xe1, 0x52, 0xe4, 0xa8, 0xe1, 0x52, 0xe4, 0xa8, - 0xe2, 0x52, 0xe4, 0xa8, 0xe2, 0x52, 0xe4, 0xa8, 0xe2, 0x52, 0xe4, 0xa8, - 0xe2, 0x52, 0xe4, 0xa8, 0xe3, 0x52, 0xe4, 0xa8, 0xe3, 0x52, 0xe4, 0xa8, - 0xe3, 0x52, 0xec, 0xa8, 0xe3, 0x67, 0xec, 0xa8, 0xe4, 0x66, 0xec, 0xa8, - 0xe4, 0x67, 0xec, 0xa8, 0xe4, 0x66, 0xec, 0xa8, 0xe4, 0x67, 0xec, 0xa8, - 0xe5, 0x66, 0xec, 0xa8, 0xe5, 0x67, 0xec, 0xa8, 0xe5, 0x66, 0xec, 0xa8, - 0xe5, 0x67, 0xec, 0xa8, 0xe6, 0x66, 0xec, 0xa8, 0xe6, 0x67, 0xec, 0xa8, - 0xe6, 0x66, 0xec, 0xa8, 0xe6, 0x67, 0xec, 0xa8, 0xe7, 0x66, 0xec, 0xa8, - 0xe7, 0x67, 0xec, 0xa8, 0xe7, 0x66, 0xec, 0xa8, 0xe7, 0x67, 0xec, 0xa8, - 0xe8, 0x66, 0xec, 0xa8, 0xe8, 0x67, 0xec, 0xa8, 0xe8, 0x66, 0xec, 0xa8, - 0xe8, 0x67, 0xec, 0xa8, 0xe9, 0x66, 0xec, 0xa8, 0xe9, 0x67, 0xec, 0xa8, - 0xe9, 0x66, 0xec, 0xa8, 0xe9, 0x67, 0xec, 0xa8, 0xea, 0x66, 0xec, 0xa8, - 0xea, 0x67, 0xec, 0xa8, 0xea, 0x66, 0xec, 0xa8, 0xea, 0x67, 0xec, 0xa8, - 0xeb, 0x66, 0xec, 0xa8, 0xeb, 0x67, 0xec, 0xa8, 0xeb, 0x66, 0xec, 0xa8, - 0xeb, 0x66, 0xec, 0xa8, 0xec, 0x66, 0xec, 0xa8, 0xec, 0x66, 0xec, 0xa8, - 0xec, 0x66, 0xec, 0xa8, 0xec, 0x66, 0xec, 0xa8, 0xec, 0x66, 0xed, 0xa8, - 0xed, 0x66, 0xed, 0xa8, 0xed, 0x66, 0xed, 0xa8, 0xed, 0x66, 0xed, 0xa8, - 0xed, 0x66, 0xee, 0xa8, 0xee, 0x66, 0xee, 0xa8, 0xee, 0x66, 0xee, 0xa8, - 0xee, 0x66, 0xee, 0xa8, 0xee, 0x66, 0xef, 0xa8, 0xef, 0x66, 0xef, 0xa8, - 0xef, 0x66, 0xef, 0xa8, 0xef, 0x66, 0xef, 0xa8, 0xef, 0x66, 0xef, 0xa8, - 0xf0, 0x66, 0xef, 0xa8, 0xf0, 0x66, 0xef, 0xa8, 0xf0, 0x66, 0xf0, 0xa8, - 0xf0, 0x67, 0xf1, 0xa8, 0xf1, 0x67, 0xf1, 0xa8, 0xf1, 0x67, 0xf1, 0xa8, - 0xf1, 0x67, 0xf1, 0xa8, 0xf1, 0x67, 0xf2, 0xa8, 0xf2, 0x67, 0xf2, 0xa8, - 0xf2, 0x67, 0xf2, 0xa8, 0xf2, 0x67, 0xf2, 0xa8, 0xf2, 0x67, 0xf2, 0xa8, - 0xf2, 0x67, 0xf3, 0xa8, 0xf3, 0x67, 0xf3, 0xa8, 0xf3, 0x67, 0xf3, 0xa8, - 0xf3, 0x67, 0xf3, 0xa8, 0xf3, 0x67, 0xf3, 0xa8, 0xf4, 0x67, 0xf3, 0xa8, - 0xf4, 0x67, 0xf4, 0xa8, 0xf4, 0x68, 0xf4, 0xa8, 0xf4, 0x68, 0xf5, 0xa8, - 0xf5, 0x68, 0xf5, 0xa8, 0xf5, 0x68, 0xf5, 0xa8, 0xf5, 0x68, 0xf5, 0xa8, - 0xf5, 0x68, 0xf5, 0xa8, 0xf5, 0x68, 0xf6, 0xa8, 0xf6, 0x68, 0xf6, 0xa8, - 0xf6, 0x68, 0xf6, 0xa8, 0xf6, 0x68, 0xf6, 0xa8, 0xf6, 0x68, 0xf6, 0xa8, - 0xf7, 0x68, 0xf6, 0xa8, 0xf7, 0x68, 0xf6, 0xa8, 0xf7, 0x68, 0xf6, 0xa8, - 0xf7, 0x68, 0xf6, 0xa8, 0xf8, 0x68, 0xf6, 0xa8, 0xf8, 0x68, 0xf6, 0xa8, - 0xf8, 0x68, 0xf6, 0xa8, 0xf8, 0x68, 0xfb, 0xa8, 0xf8, 0x64, 0xfb, 0xa8, - 0xf9, 0x67, 0xfb, 0xa8, 0xf9, 0x64, 0xfb, 0xa8, 0xf9, 0x67, 0xfb, 0xa8, - 0xf9, 0x64, 0xfb, 0xa8, 0xfa, 0x64, 0xfb, 0xa8, 0xfa, 0x64, 0xfb, 0xa8, - 0xfa, 0x64, 0xfb, 0xa8, 0xfa, 0x64, 0xfb, 0xa8, 0xfa, 0x64, 0xfb, 0xa8, - 0xfb, 0x64, 0xfb, 0xa8, 0xfb, 0x64, 0xfb, 0xa7, 0xfb, 0x64, 0xfb, 0xa8, - 0xfb, 0x64, 0xfc, 0xa7, 0xfb, 0x64, 0xfc, 0xa8, 0xfb, 0x64, 0xfc, 0xa7, - 0xfb, 0x64, 0xfc, 0xa8, 0xfb, 0x64, 0xfc, 0xa7, 0xfb, 0x64, 0xfd, 0xa8, - 0xfb, 0x64, 0xfd, 0xa7, 0xfb, 0x64, 0xfd, 0xa8, 0xfb, 0x64, 0xfd, 0xa7, - 0xfb, 0x64, 0xfe, 0xa8, 0xfb, 0x64, 0xfe, 0xa7, 0xfb, 0x64, 0xfe, 0xa8, - 0xfb, 0x64, 0xfe, 0xa7, 0xfb, 0x64, 0xfe, 0xa8, 0xfb, 0x64, 0xff, 0xa7, - 0xfb, 0x64, 0xff, 0xa5, 0xfb, 0x64, 0x03, 0xaf, 0x94, 0x64, 0x0a, 0xaf, - 0x94, 0x64, 0x0f, 0xaf, 0x94, 0x64, 0x14, 0xaf, 0x94, 0x64, 0x17, 0xaf, - 0x94, 0x64, 0x1b, 0xaf, 0x94, 0x64, 0x1e, 0xaf, 0x94, 0x64, 0x20, 0xb2, - 0x94, 0x64, 0x23, 0xaf, 0x94, 0x64, 0x25, 0xb2, 0x94, 0x64, 0x27, 0xaf, - 0x94, 0x64, 0x29, 0xb2, 0x94, 0x64, 0x2b, 0xaf, 0x94, 0x64, 0x2d, 0xb2, - 0x94, 0x64, 0x2f, 0xaf, 0x94, 0x64, 0x31, 0xb2, 0x94, 0x64, 0x32, 0xaf, - 0x94, 0x64, 0x34, 0xb2, 0x94, 0x64, 0x35, 0xaf, 0x94, 0x64, 0x37, 0xb2, - 0x94, 0x64, 0x38, 0xaf, 0x94, 0x64, 0x3a, 0xad, 0x95, 0x64, 0x3b, 0xaf, - 0x94, 0x64, 0x3c, 0xad, 0x95, 0x64, 0x3e, 0xaf, 0x94, 0x64, 0x3f, 0xad, - 0x95, 0x64, 0x40, 0xaf, 0x94, 0x64, 0x42, 0xad, 0x95, 0x64, 0x43, 0xaf, - 0x94, 0x64, 0x44, 0xad, 0x95, 0x64, 0x45, 0xaf, 0x94, 0x64, 0x46, 0xad, - 0x95, 0x64, 0x47, 0xaf, 0x94, 0x64, 0x48, 0xad, 0x95, 0x64, 0x49, 0xaf, - 0x94, 0x64, 0x4a, 0xad, 0x95, 0x64, 0x4b, 0xaf, 0x94, 0x64, 0x4c, 0xad, - 0x95, 0x64, 0x4d, 0xaf, 0x94, 0x64, 0x4e, 0xad, 0x95, 0x64, 0x4f, 0xaf, - 0x94, 0x64, 0x50, 0xad, 0x95, 0x64, 0x51, 0xaf, 0x94, 0x64, 0x52, 0xad, - 0x95, 0x64, 0x53, 0xaf, 0x94, 0x64, 0x54, 0xad, 0x95, 0x64, 0x55, 0xaf, - 0x94, 0x64, 0x56, 0xad, 0x95, 0x64, 0x57, 0xaf, 0x94, 0x64, 0x58, 0xad, - 0x95, 0x64, 0x58, 0xaf, 0x94, 0x64, 0x59, 0xad, 0x95, 0x64, 0x5a, 0xaf, - 0x94, 0x64, 0x5b, 0xad, 0x95, 0x64, 0x5c, 0xaf, 0x94, 0x64, 0x5d, 0xad, - 0x95, 0x64, 0x5d, 0xaf, 0x94, 0x64, 0x5e, 0xad, 0x95, 0x64, 0x5f, 0xaf, - 0x94, 0x64, 0x60, 0xad, 0x95, 0x64, 0x60, 0xaf, 0x94, 0x64, 0x61, 0xad, - 0x95, 0x64, 0x62, 0xaf, 0x94, 0x64, 0x63, 0xad, 0x95, 0x64, 0x63, 0xaf, - 0x94, 0x64, 0x64, 0xad, 0x95, 0x64, 0x65, 0xaf, 0x94, 0x64, 0x66, 0xad, - 0x95, 0x64, 0x66, 0xaf, 0x94, 0x64, 0x67, 0xad, 0x95, 0x64, 0x68, 0xaf, - 0x94, 0x64, 0x68, 0xad, 0x95, 0x64, 0x69, 0xaf, 0x94, 0x64, 0x6a, 0xad, - 0x95, 0x64, 0x6a, 0xaf, 0x94, 0x64, 0x6b, 0xad, 0x95, 0x64, 0x6c, 0xaf, - 0x94, 0x64, 0x6c, 0xad, 0x95, 0x64, 0x6d, 0xaf, 0x94, 0x64, 0x6e, 0xad, - 0x95, 0x64, 0x6e, 0xaf, 0x94, 0x64, 0x6f, 0xad, 0x95, 0x64, 0x70, 0xab, - 0x95, 0x64, 0x70, 0xad, 0x95, 0x64, 0x71, 0xab, 0x95, 0x64, 0x72, 0xad, - 0x95, 0x64, 0x72, 0xab, 0x95, 0x64, 0x73, 0xad, 0x95, 0x64, 0x73, 0xab, - 0x95, 0x64, 0x74, 0xad, 0x95, 0x64, 0x75, 0xab, 0x95, 0x64, 0x75, 0xad, - 0x95, 0x64, 0x76, 0xab, 0x95, 0x64, 0x76, 0xad, 0x95, 0x64, 0x77, 0xab, - 0x95, 0x64, 0x78, 0xad, 0x95, 0x64, 0x78, 0xab, 0x95, 0x64, 0x79, 0xad, - 0x95, 0x64, 0x79, 0xab, 0x95, 0x64, 0x7a, 0xad, 0x95, 0x64, 0x7a, 0xab, - 0x95, 0x64, 0x7b, 0xad, 0x95, 0x64, 0x7c, 0xab, 0x95, 0x64, 0x7c, 0xad, - 0x95, 0x64, 0x7d, 0xab, 0x95, 0x64, 0x7d, 0xad, 0x95, 0x64, 0x7e, 0xab, - 0x95, 0x64, 0x7e, 0xad, 0x95, 0x64, 0x7f, 0xab, 0x95, 0x64, 0x7f, 0xad, - 0x95, 0x64, 0x80, 0xab, 0x95, 0x64, 0x81, 0xad, 0x95, 0x64, 0x81, 0xab, - 0x95, 0x64, 0x82, 0xad, 0x95, 0x64, 0x82, 0xab, 0x95, 0x64, 0x83, 0xad, - 0x95, 0x64, 0x83, 0xab, 0x95, 0x64, 0x84, 0xad, 0x95, 0x64, 0x84, 0xab, - 0x95, 0x64, 0x85, 0xa8, 0x96, 0x64, 0x85, 0xab, 0x95, 0x64, 0x86, 0xa8, - 0x96, 0x64, 0x86, 0xab, 0x95, 0x64, 0x87, 0xa8, 0x96, 0x64, 0x87, 0xab, - 0x95, 0x64, 0x88, 0xa8, 0x96, 0x64, 0x88, 0xab, 0x95, 0x64, 0x89, 0xa8, - 0x96, 0x64, 0x89, 0xab, 0x95, 0x64, 0x8a, 0xa8, 0x96, 0x64, 0x8a, 0xab, - 0x95, 0x64, 0x8b, 0xa8, 0x96, 0x64, 0x8b, 0xab, 0x95, 0x64, 0x8c, 0xa8, - 0x96, 0x64, 0x8c, 0xab, 0x95, 0x64, 0x8d, 0xa8, 0x96, 0x64, 0x8d, 0xab, - 0x95, 0x64, 0x8e, 0xa8, 0x96, 0x64, 0x8e, 0xab, 0x95, 0x64, 0x8e, 0xa8, - 0x96, 0x64, 0x8f, 0xab, 0x95, 0x64, 0x8f, 0xa8, 0x96, 0x64, 0x90, 0xab, - 0x95, 0x64, 0x90, 0xa8, 0x96, 0x64, 0x91, 0xab, 0x95, 0x64, 0x91, 0xa8, - 0x96, 0x64, 0x92, 0xab, 0x95, 0x64, 0x92, 0xa8, 0x96, 0x64, 0x93, 0xa8, - 0x96, 0x64, 0x93, 0xa8, 0x96, 0x64, 0x94, 0xa8, 0x96, 0x64, 0x94, 0xa8, - 0x96, 0x64, 0x94, 0xa8, 0x96, 0x64, 0x95, 0xa8, 0x96, 0x64, 0x95, 0xa8, - 0x96, 0x64, 0x96, 0xa8, 0x96, 0x63, 0x95, 0xa8, 0x96, 0x64, 0x96, 0xa8, - 0x97, 0x63, 0x95, 0xa8, 0x97, 0x64, 0x99, 0xa8, 0x98, 0x64, 0x9a, 0xa8, - 0x98, 0x64, 0x99, 0xa8, 0x98, 0x64, 0x9a, 0xa8, 0x99, 0x64, 0x99, 0xa8, - 0x99, 0x64, 0x9a, 0xa8, 0x99, 0x64, 0x9a, 0xa8, 0x99, 0x64, 0x9a, 0xa8, - 0x99, 0x64, 0x9b, 0xa8, 0x99, 0x64, 0x9b, 0xa8, 0x99, 0x64, 0x9c, 0xa8, - 0x99, 0x64, 0x9c, 0xa8, 0x99, 0x64, 0x9d, 0xa8, 0x99, 0x64, 0x9d, 0xa8, - 0x99, 0x64, 0x9d, 0xa8, 0x99, 0x64, 0x9e, 0xa8, 0x99, 0x64, 0x9e, 0xa8, - 0x99, 0x64, 0x9f, 0xa8, 0x99, 0x64, 0x9f, 0xa8, 0x99, 0x64, 0x9f, 0xae, - 0x9f, 0x64, 0xa0, 0xae, 0xa0, 0x64, 0xa0, 0xae, 0xa0, 0x64, 0xa1, 0xae, - 0xa1, 0x64, 0xa1, 0xae, 0xa1, 0x64, 0xa1, 0xae, 0xa1, 0x64, 0xa2, 0xae, - 0xa1, 0x64, 0xa2, 0xae, 0xa1, 0x64, 0xa3, 0xae, 0xa1, 0x64, 0xa3, 0xae, - 0xa1, 0x64, 0xa3, 0xae, 0xa1, 0x64, 0xa4, 0xae, 0xa1, 0x64, 0xa4, 0xae, - 0xa1, 0x64, 0xa5, 0xaf, 0xa5, 0x64, 0xa5, 0xaf, 0xa5, 0x64, 0xa5, 0xaf, - 0xa5, 0x64, 0xa6, 0xaf, 0xa5, 0x64, 0xa6, 0xaf, 0xa5, 0x64, 0xa6, 0xaf, - 0xa5, 0x64, 0xa7, 0xaf, 0xa5, 0x64, 0xa7, 0xaf, 0xa5, 0x64, 0xa8, 0xaf, - 0xa5, 0x64, 0xa8, 0xaf, 0xa5, 0x64, 0xa8, 0xaf, 0xa5, 0x64, 0xa9, 0xb0, - 0xa9, 0x64, 0xa9, 0xb0, 0xa9, 0x64, 0xaa, 0xb0, 0xaa, 0x64, 0xaa, 0xb0, - 0xa9, 0x64, 0xaa, 0xb0, 0xaa, 0x64, 0xab, 0xb0, 0xa9, 0x64, 0xab, 0xb0, - 0xaa, 0x64, 0xab, 0xb0, 0xa9, 0x64, 0xac, 0xb0, 0xaa, 0x64, 0xac, 0xb0, - 0xa9, 0x64, 0xac, 0xb0, 0xaa, 0x64, 0xad, 0xb0, 0xad, 0x64, 0xad, 0xb0, - 0xad, 0x64, 0xae, 0xb0, 0xae, 0x64, 0xae, 0xb0, 0xad, 0x64, 0xae, 0xb0, - 0xae, 0x64, 0xaf, 0xb0, 0xad, 0x64, 0xaf, 0xb0, 0xae, 0x64, 0xaf, 0xb0, - 0xad, 0x64, 0xb0, 0xb0, 0xae, 0x64, 0xb0, 0xb0, 0xad, 0x64, 0xb0, 0xb0, - 0xae, 0x64, 0xb1, 0xb1, 0xb1, 0x64, 0xb1, 0xb1, 0xb1, 0x64, 0xb2, 0xb1, - 0xb2, 0x64, 0xb2, 0xb1, 0xb1, 0x64, 0xb2, 0xb1, 0xb2, 0x64, 0xb3, 0xb1, - 0xb1, 0x64, 0xb3, 0xb1, 0xb2, 0x64, 0xb3, 0xb1, 0xb1, 0x64, 0xb4, 0xb1, - 0xb2, 0x64, 0xb4, 0xb1, 0xb1, 0x64, 0xb4, 0xb1, 0xb2, 0x64, 0xb5, 0xb2, - 0xb5, 0x64, 0xb5, 0xb2, 0xb5, 0x64, 0xb5, 0xb2, 0xb5, 0x64, 0xb6, 0xb2, - 0xb5, 0x64, 0xb6, 0xb2, 0xb5, 0x64, 0xb6, 0xb2, 0xb5, 0x64, 0xb7, 0xb2, - 0xb5, 0x64, 0xb7, 0xb2, 0xb5, 0x64, 0xb7, 0xb2, 0xb5, 0x64, 0xb8, 0xb2, - 0xb5, 0x64, 0xb8, 0xb2, 0xb5, 0x64, 0xb8, 0xb2, 0xb5, 0x64, 0xb9, 0xb2, - 0xb5, 0x64, 0xb9, 0xb3, 0xb9, 0x64, 0xb9, 0xb3, 0xb9, 0x64, 0xba, 0xb3, - 0xb9, 0x64, 0xba, 0xb3, 0xb9, 0x64, 0xba, 0xb3, 0xb9, 0x64, 0xbb, 0xb3, - 0xb9, 0x64, 0xbb, 0xb3, 0xb9, 0x64, 0xbb, 0xb3, 0xb9, 0x64, 0xbc, 0xb3, - 0xb9, 0x64, 0xbc, 0xb3, 0xb9, 0x64, 0xbc, 0xb3, 0xb9, 0x64, 0xbd, 0xb3, - 0xb9, 0x64, 0xbd, 0xb3, 0xbd, 0x64, 0xbd, 0xb3, 0xbd, 0x64, 0xbe, 0xb3, - 0xbd, 0x64, 0xbe, 0xb3, 0xbd, 0x64, 0xbe, 0xb3, 0xbd, 0x64, 0xbf, 0xb3, - 0xbd, 0x64, 0xbf, 0xb3, 0xbd, 0x64, 0xbf, 0xb3, 0xbd, 0x64, 0xc0, 0xb3, - 0xbd, 0x64, 0xc0, 0xb3, 0xbd, 0x64, 0xc0, 0xb3, 0xbd, 0x64, 0xc1, 0xb4, - 0xc1, 0x64, 0xc1, 0xb4, 0xc0, 0x64, 0xc1, 0xb4, 0xc1, 0x64, 0xc1, 0xb4, - 0xc0, 0x64, 0xc2, 0xb4, 0xc1, 0x64, 0xc2, 0xb4, 0xc0, 0x64, 0xc2, 0xb4, - 0xc1, 0x64, 0xc3, 0xb4, 0xc0, 0x64, 0xc3, 0xb4, 0xc1, 0x64, 0xc3, 0xb4, - 0xc0, 0x64, 0xc4, 0xb4, 0xc1, 0x64, 0xc4, 0xb5, 0xc4, 0x64, 0xc4, 0xb5, - 0xc4, 0x64, 0xc5, 0xb5, 0xc4, 0x64, 0xc5, 0xb5, 0xc4, 0x64, 0xc5, 0xb5, - 0xc4, 0x64, 0xc6, 0xb5, 0xc4, 0x64, 0xc6, 0xb5, 0xc4, 0x64, 0xc6, 0xb5, - 0xc4, 0x64, 0xc6, 0xa9, 0xd0, 0x64, 0xc7, 0xa8, 0xd1, 0x64, 0xc7, 0xa9, - 0xd0, 0x64, 0xc7, 0xab, 0xd0, 0x64, 0xc8, 0xa9, 0xd0, 0x64, 0xc8, 0xab, - 0xd0, 0x64, 0xc8, 0xa9, 0xd0, 0x64, 0xc9, 0xab, 0xd0, 0x64, 0xc9, 0xa9, - 0xd0, 0x64, 0xc9, 0xab, 0xd0, 0x64, 0xc9, 0xa9, 0xd0, 0x64, 0xca, 0xab, - 0xd0, 0x64, 0xca, 0xa9, 0xd0, 0x64, 0xca, 0xab, 0xd0, 0x64, 0xcb, 0xa9, - 0xd0, 0x64, 0xcb, 0xab, 0xd0, 0x64, 0xcb, 0xa9, 0xd0, 0x64, 0xcc, 0xab, - 0xd0, 0x64, 0xcc, 0xa9, 0xd0, 0x64, 0xcc, 0xa8, 0xd1, 0x64, 0xcc, 0xa9, - 0xd0, 0x64, 0xcd, 0xa8, 0xd1, 0x64, 0xcd, 0xa9, 0xd0, 0x64, 0xcd, 0xa8, - 0xd1, 0x64, 0xce, 0xa9, 0xd0, 0x64, 0xce, 0xa8, 0xd1, 0x64, 0xce, 0xa9, - 0xd0, 0x64, 0xce, 0xa8, 0xd1, 0x64, 0xcf, 0xa9, 0xd0, 0x64, 0xcf, 0xa8, - 0xd1, 0x64, 0xcf, 0xa9, 0xd0, 0x64, 0xd0, 0xa8, 0xd1, 0x64, 0xd0, 0xa9, - 0xd0, 0x64, 0xd0, 0xa8, 0xd1, 0x64, 0xd0, 0xa9, 0xd0, 0x64, 0xd0, 0xa8, - 0xd1, 0x64, 0xd0, 0xa8, 0xd1, 0x64, 0xd0, 0xa8, 0xd1, 0x64, 0xd0, 0xa8, - 0xd2, 0x64, 0xd0, 0xa8, 0xd2, 0x64, 0xd0, 0xa8, 0xd2, 0x64, 0xd0, 0xa8, - 0xd2, 0x64, 0xd0, 0xa8, 0xd3, 0x64, 0xd1, 0xa8, 0xd3, 0x61, 0xd0, 0xa8, - 0xd3, 0x64, 0xd1, 0xa8, 0xd4, 0x61, 0xd0, 0xa8, 0xd4, 0x64, 0xd1, 0xa8, - 0xd4, 0x61, 0xd0, 0xa8, 0xd4, 0x64, 0xd1, 0xa8, 0xd5, 0x61, 0xd0, 0xa8, - 0xd5, 0x64, 0xd1, 0xa8, 0xd5, 0x61, 0xd0, 0xa8, 0xd6, 0x64, 0xd1, 0xa8, - 0xd6, 0x61, 0xd0, 0xa8, 0xd6, 0x64, 0xd1, 0xa8, 0xd6, 0x61, 0xd0, 0xa8, - 0xd7, 0x64, 0xd1, 0xa8, 0xd7, 0x61, 0xd0, 0xa8, 0xd7, 0x64, 0xd1, 0xa8, - 0xd7, 0x61, 0xd1, 0xa8, 0xd8, 0x5f, 0xd1, 0xa8, 0xd8, 0x61, 0xd1, 0xa8, - 0xd8, 0x5f, 0xd1, 0xa8, 0xd9, 0x61, 0xd1, 0xa8, 0xd9, 0x5f, 0xd1, 0xa8, - 0xd9, 0x61, 0xd1, 0xa8, 0xd9, 0x5f, 0xd1, 0xa8, 0xda, 0x61, 0xd1, 0xa8, - 0xda, 0x5f, 0xd1, 0xa8, 0xda, 0x61, 0xd1, 0xa8, 0xda, 0x5f, 0xd1, 0xa8, - 0xdb, 0x61, 0xd1, 0xa8, 0xdb, 0x5f, 0xd1, 0xa8, 0xdb, 0x61, 0xd1, 0xa8, - 0xdb, 0x5f, 0xd1, 0xa8, 0xdc, 0x61, 0xd1, 0xa8, 0xdc, 0x5f, 0xd1, 0xa8, - 0xdc, 0x61, 0xde, 0xa8, 0xdd, 0x4f, 0xe1, 0xa8, 0xdd, 0x50, 0xde, 0xa8, - 0xdd, 0x4f, 0xe1, 0xa8, 0xdd, 0x50, 0xe1, 0xa8, 0xde, 0x50, 0xe1, 0xa8, - 0xde, 0x50, 0xe1, 0xa8, 0xde, 0x50, 0xe1, 0xa8, 0xde, 0x50, 0xe1, 0xa8, - 0xdf, 0x50, 0xe1, 0xa8, 0xdf, 0x50, 0xe1, 0xa8, 0xdf, 0x50, 0xe1, 0xa8, - 0xdf, 0x50, 0xe3, 0xa8, 0xe0, 0x51, 0xe3, 0xa8, 0xe0, 0x51, 0xe3, 0xa8, - 0xe0, 0x51, 0xe3, 0xa8, 0xe1, 0x51, 0xe3, 0xa8, 0xe1, 0x51, 0xe3, 0xa8, - 0xe1, 0x51, 0xe3, 0xa8, 0xe1, 0x51, 0xe3, 0xa8, 0xe2, 0x51, 0xe3, 0xa8, - 0xe2, 0x51, 0xe3, 0xa8, 0xe2, 0x51, 0xe5, 0xa8, 0xe2, 0x52, 0xe6, 0xa8, - 0xe3, 0x52, 0xec, 0xa8, 0xe3, 0x67, 0xec, 0xa8, 0xe3, 0x65, 0xec, 0xa8, - 0xe3, 0x67, 0xec, 0xa8, 0xe4, 0x65, 0xec, 0xa8, 0xe4, 0x67, 0xec, 0xa8, - 0xe4, 0x65, 0xec, 0xa8, 0xe4, 0x67, 0xec, 0xa8, 0xe5, 0x65, 0xec, 0xa8, - 0xe5, 0x67, 0xec, 0xa8, 0xe5, 0x65, 0xec, 0xa8, 0xe5, 0x67, 0xec, 0xa8, - 0xe6, 0x65, 0xec, 0xa8, 0xe6, 0x67, 0xec, 0xa8, 0xe6, 0x65, 0xec, 0xa8, - 0xe6, 0x67, 0xec, 0xa8, 0xe7, 0x65, 0xec, 0xa8, 0xe7, 0x67, 0xec, 0xa8, - 0xe7, 0x65, 0xec, 0xa8, 0xe7, 0x67, 0xec, 0xa8, 0xe8, 0x65, 0xec, 0xa8, - 0xe8, 0x67, 0xec, 0xa8, 0xe8, 0x65, 0xec, 0xa8, 0xe8, 0x67, 0xec, 0xa8, - 0xe9, 0x65, 0xec, 0xa8, 0xe9, 0x67, 0xec, 0xa8, 0xe9, 0x65, 0xec, 0xa8, - 0xe9, 0x67, 0xec, 0xa8, 0xea, 0x65, 0xec, 0xa8, 0xea, 0x67, 0xec, 0xa8, - 0xea, 0x65, 0xec, 0xa8, 0xea, 0x65, 0xec, 0xa8, 0xeb, 0x65, 0xec, 0xa8, - 0xeb, 0x65, 0xec, 0xa8, 0xeb, 0x65, 0xec, 0xa8, 0xeb, 0x65, 0xec, 0xa8, - 0xec, 0x65, 0xec, 0xa8, 0xec, 0x65, 0xec, 0xa8, 0xec, 0x65, 0xec, 0xa8, - 0xec, 0x65, 0xec, 0xa8, 0xec, 0x65, 0xed, 0xa8, 0xed, 0x65, 0xed, 0xa8, - 0xed, 0x65, 0xed, 0xa8, 0xed, 0x65, 0xed, 0xa8, 0xed, 0x65, 0xed, 0xa8, - 0xee, 0x65, 0xee, 0xa8, 0xee, 0x66, 0xee, 0xa8, 0xee, 0x66, 0xee, 0xa8, - 0xee, 0x66, 0xef, 0xa8, 0xef, 0x66, 0xef, 0xa8, 0xef, 0x66, 0xef, 0xa8, - 0xef, 0x66, 0xef, 0xa8, 0xef, 0x66, 0xf0, 0xa8, 0xf0, 0x66, 0xf0, 0xa8, - 0xf0, 0x66, 0xf0, 0xa8, 0xf0, 0x66, 0xf0, 0xa8, 0xf0, 0x66, 0xf1, 0xa8, - 0xf1, 0x66, 0xf1, 0xa8, 0xf1, 0x66, 0xf1, 0xa8, 0xf1, 0x66, 0xf1, 0xa8, - 0xf1, 0x66, 0xf1, 0xa8, 0xf2, 0x66, 0xf1, 0xa8, 0xf2, 0x66, 0xf1, 0xa8, - 0xf2, 0x66, 0xf2, 0xa8, 0xf2, 0x67, 0xf2, 0xa8, 0xf2, 0x67, 0xf3, 0xa8, - 0xf3, 0x67, 0xf3, 0xa8, 0xf3, 0x67, 0xf3, 0xa8, 0xf3, 0x67, 0xf3, 0xa8, - 0xf3, 0x67, 0xf4, 0xa8, 0xf4, 0x67, 0xf4, 0xa8, 0xf4, 0x67, 0xf4, 0xa8, - 0xf4, 0x67, 0xf4, 0xa8, 0xf4, 0x67, 0xf5, 0xa8, 0xf5, 0x67, 0xf4, 0xa8, - 0xf5, 0x67, 0xf5, 0xa8, 0xf5, 0x67, 0xf4, 0xa8, 0xf5, 0x67, 0xf5, 0xa8, - 0xf5, 0x67, 0xf6, 0xa8, 0xf6, 0x68, 0xf6, 0xa8, 0xf6, 0x68, 0xf6, 0xa8, - 0xf6, 0x68, 0xf6, 0xa8, 0xf6, 0x68, 0xf6, 0xa8, 0xf7, 0x68, 0xf6, 0xa8, - 0xf7, 0x68, 0xf6, 0xa8, 0xf7, 0x68, 0xf6, 0xa8, 0xf7, 0x68, 0xf6, 0xa8, - 0xf8, 0x68, 0xf6, 0xa8, 0xf8, 0x68, 0xf6, 0xa8, 0xf8, 0x68, 0xf6, 0xa8, - 0xf8, 0x68, 0xfb, 0xa8, 0xf8, 0x64, 0xfb, 0xa8, 0xf9, 0x67, 0xfb, 0xa8, - 0xf9, 0x64, 0xfb, 0xa8, 0xf9, 0x67, 0xfb, 0xa8, 0xf9, 0x64, 0xfb, 0xa8, - 0xfa, 0x64, 0xfb, 0xa8, 0xfa, 0x64, 0xfb, 0xa8, 0xfa, 0x64, 0xfb, 0xa8, - 0xfa, 0x64, 0xfb, 0xa8, 0xfa, 0x64, 0xfb, 0xa8, 0xfb, 0x64, 0xfb, 0xa8, - 0xfb, 0x64, 0xfb, 0xa8, 0xfb, 0x64, 0xfb, 0xa8, 0xfb, 0x64, 0xfc, 0xa8, - 0xfb, 0x64, 0xfc, 0xa8, 0xfb, 0x64, 0xfc, 0xa8, 0xfb, 0x64, 0xfc, 0xa8, - 0xfb, 0x64, 0xfc, 0xa8, 0xfb, 0x64, 0xfd, 0xa8, 0xfb, 0x64, 0xfd, 0xa8, - 0xfb, 0x64, 0xfd, 0xa8, 0xfb, 0x64, 0xfd, 0xa8, 0xfb, 0x64, 0xfe, 0xa8, - 0xfb, 0x64, 0xfe, 0xa8, 0xfb, 0x64, 0xfe, 0xa8, 0xfb, 0x64, 0xfe, 0xa8, - 0xfb, 0x64, 0xfe, 0xa8, 0xfb, 0x64, 0xff, 0xa8, 0xfb, 0x64, 0xff, 0xa5, - 0xfb, 0x64, 0x03, 0xb4, 0x94, 0x65, 0x0a, 0xb2, 0x94, 0x65, 0x0f, 0xb4, - 0x94, 0x65, 0x14, 0xb2, 0x94, 0x65, 0x17, 0xb4, 0x94, 0x65, 0x1b, 0xb2, - 0x94, 0x65, 0x1e, 0xb4, 0x94, 0x65, 0x20, 0xb2, 0x94, 0x65, 0x23, 0xaf, - 0x94, 0x65, 0x25, 0xb2, 0x94, 0x65, 0x27, 0xaf, 0x94, 0x65, 0x29, 0xb2, - 0x94, 0x65, 0x2b, 0xaf, 0x94, 0x65, 0x2d, 0xb2, 0x94, 0x65, 0x2f, 0xaf, - 0x94, 0x65, 0x31, 0xb2, 0x94, 0x65, 0x32, 0xaf, 0x94, 0x65, 0x34, 0xb2, - 0x94, 0x65, 0x35, 0xaf, 0x94, 0x65, 0x37, 0xb2, 0x94, 0x65, 0x38, 0xaf, - 0x94, 0x65, 0x3a, 0xb2, 0x94, 0x65, 0x3b, 0xaf, 0x94, 0x65, 0x3c, 0xb2, - 0x94, 0x65, 0x3e, 0xaf, 0x94, 0x65, 0x3f, 0xb2, 0x94, 0x65, 0x40, 0xaf, - 0x94, 0x65, 0x42, 0xb2, 0x94, 0x65, 0x43, 0xaf, 0x94, 0x65, 0x44, 0xb2, - 0x94, 0x65, 0x45, 0xaf, 0x94, 0x65, 0x46, 0xb2, 0x94, 0x65, 0x47, 0xaf, - 0x94, 0x65, 0x48, 0xb2, 0x94, 0x65, 0x49, 0xaf, 0x94, 0x65, 0x4a, 0xb2, - 0x94, 0x65, 0x4b, 0xaf, 0x94, 0x65, 0x4c, 0xb2, 0x94, 0x65, 0x4d, 0xaf, - 0x94, 0x65, 0x4e, 0xb2, 0x94, 0x65, 0x4f, 0xaf, 0x94, 0x65, 0x50, 0xb2, - 0x94, 0x65, 0x51, 0xaf, 0x94, 0x65, 0x52, 0xb2, 0x94, 0x65, 0x53, 0xaf, - 0x94, 0x65, 0x54, 0xad, 0x95, 0x65, 0x55, 0xaf, 0x94, 0x65, 0x56, 0xad, - 0x95, 0x65, 0x57, 0xaf, 0x94, 0x65, 0x58, 0xad, 0x95, 0x65, 0x58, 0xaf, - 0x94, 0x65, 0x59, 0xad, 0x95, 0x65, 0x5a, 0xaf, 0x94, 0x65, 0x5b, 0xad, - 0x95, 0x65, 0x5c, 0xaf, 0x94, 0x65, 0x5d, 0xad, 0x95, 0x65, 0x5d, 0xaf, - 0x94, 0x65, 0x5e, 0xad, 0x95, 0x65, 0x5f, 0xaf, 0x94, 0x65, 0x60, 0xad, - 0x95, 0x65, 0x60, 0xaf, 0x94, 0x65, 0x61, 0xad, 0x95, 0x65, 0x62, 0xaf, - 0x94, 0x65, 0x63, 0xad, 0x95, 0x65, 0x63, 0xaf, 0x94, 0x65, 0x64, 0xad, - 0x95, 0x65, 0x65, 0xaf, 0x94, 0x65, 0x66, 0xad, 0x95, 0x65, 0x66, 0xaf, - 0x94, 0x65, 0x67, 0xad, 0x95, 0x65, 0x68, 0xaf, 0x94, 0x65, 0x68, 0xad, - 0x95, 0x65, 0x69, 0xaf, 0x94, 0x65, 0x6a, 0xad, 0x95, 0x65, 0x6a, 0xaf, - 0x94, 0x65, 0x6b, 0xad, 0x95, 0x65, 0x6c, 0xaf, 0x94, 0x65, 0x6c, 0xad, - 0x95, 0x65, 0x6d, 0xaa, 0x95, 0x65, 0x6e, 0xad, 0x95, 0x65, 0x6e, 0xaa, - 0x95, 0x65, 0x6f, 0xad, 0x95, 0x65, 0x70, 0xaa, 0x95, 0x65, 0x70, 0xad, - 0x95, 0x65, 0x71, 0xaa, 0x95, 0x65, 0x72, 0xad, 0x95, 0x65, 0x72, 0xaa, - 0x95, 0x65, 0x73, 0xad, 0x95, 0x65, 0x73, 0xaa, 0x95, 0x65, 0x74, 0xad, - 0x95, 0x65, 0x75, 0xaa, 0x95, 0x65, 0x75, 0xad, 0x95, 0x65, 0x76, 0xaa, - 0x95, 0x65, 0x76, 0xad, 0x95, 0x65, 0x77, 0xaa, 0x95, 0x65, 0x78, 0xad, - 0x95, 0x65, 0x78, 0xaa, 0x95, 0x65, 0x79, 0xad, 0x95, 0x65, 0x79, 0xaa, - 0x95, 0x65, 0x7a, 0xad, 0x95, 0x65, 0x7a, 0xaa, 0x95, 0x65, 0x7b, 0xad, - 0x95, 0x65, 0x7c, 0xaa, 0x95, 0x65, 0x7c, 0xad, 0x95, 0x65, 0x7d, 0xaa, - 0x95, 0x65, 0x7d, 0xad, 0x95, 0x65, 0x7e, 0xaa, 0x95, 0x65, 0x7e, 0xad, - 0x95, 0x65, 0x7f, 0xaa, 0x95, 0x65, 0x7f, 0xad, 0x95, 0x65, 0x80, 0xaa, - 0x95, 0x65, 0x81, 0xad, 0x95, 0x65, 0x81, 0xaa, 0x95, 0x65, 0x82, 0xad, - 0x95, 0x65, 0x82, 0xaa, 0x95, 0x65, 0x83, 0xad, 0x95, 0x65, 0x83, 0xaa, - 0x95, 0x65, 0x84, 0xad, 0x95, 0x65, 0x84, 0xaa, 0x95, 0x65, 0x85, 0xa9, - 0x96, 0x65, 0x85, 0xaa, 0x95, 0x65, 0x86, 0xa9, 0x96, 0x65, 0x86, 0xaa, - 0x95, 0x65, 0x87, 0xa9, 0x96, 0x65, 0x87, 0xaa, 0x95, 0x65, 0x88, 0xa9, - 0x96, 0x65, 0x88, 0xaa, 0x95, 0x65, 0x89, 0xa9, 0x96, 0x65, 0x89, 0xaa, - 0x95, 0x65, 0x8a, 0xa9, 0x96, 0x65, 0x8a, 0xaa, 0x95, 0x65, 0x8b, 0xa9, - 0x96, 0x65, 0x8b, 0xaa, 0x95, 0x65, 0x8c, 0xa9, 0x96, 0x65, 0x8c, 0xaa, - 0x95, 0x65, 0x8d, 0xa9, 0x96, 0x65, 0x8d, 0xaa, 0x95, 0x65, 0x8e, 0xa9, - 0x96, 0x65, 0x8e, 0xaa, 0x95, 0x65, 0x8e, 0xa9, 0x96, 0x65, 0x8f, 0xaa, - 0x95, 0x65, 0x8f, 0xa9, 0x96, 0x65, 0x90, 0xaa, 0x95, 0x65, 0x90, 0xa9, - 0x96, 0x65, 0x91, 0xaa, 0x95, 0x65, 0x91, 0xa9, 0x96, 0x65, 0x92, 0xaa, - 0x95, 0x65, 0x92, 0xa9, 0x96, 0x65, 0x93, 0xaa, 0x95, 0x65, 0x93, 0xa9, - 0x96, 0x65, 0x94, 0xaa, 0x95, 0x65, 0x94, 0xa9, 0x96, 0x65, 0x94, 0xa9, - 0x96, 0x65, 0x95, 0xa9, 0x96, 0x65, 0x95, 0xa9, 0x96, 0x65, 0x95, 0xa9, - 0x96, 0x65, 0x95, 0xa9, 0x96, 0x65, 0x95, 0xa9, 0x97, 0x65, 0x95, 0xa9, - 0x97, 0x65, 0x99, 0xa9, 0x98, 0x65, 0x9a, 0xa9, 0x98, 0x65, 0x99, 0xa9, - 0x98, 0x65, 0x9a, 0xa9, 0x99, 0x65, 0x99, 0xa8, 0x99, 0x65, 0x9a, 0xa9, - 0x99, 0x65, 0x9a, 0xa8, 0x99, 0x65, 0x9a, 0xa9, 0x99, 0x65, 0x9b, 0xa8, - 0x99, 0x65, 0x9b, 0xa9, 0x99, 0x65, 0x9c, 0xa8, 0x99, 0x65, 0x9c, 0xa9, - 0x99, 0x65, 0x9d, 0xa8, 0x99, 0x65, 0x9d, 0xa9, 0x99, 0x65, 0x9d, 0xa8, - 0x99, 0x65, 0x9e, 0xa9, 0x99, 0x65, 0x9e, 0xa8, 0x99, 0x65, 0x9f, 0xa9, - 0x99, 0x65, 0x9f, 0xa8, 0x99, 0x65, 0x9f, 0xae, 0x9f, 0x65, 0xa0, 0xae, - 0x9e, 0x65, 0xa0, 0xae, 0x9f, 0x65, 0xa1, 0xae, 0x9e, 0x65, 0xa1, 0xae, - 0x9f, 0x65, 0xa1, 0xaf, 0xa1, 0x65, 0xa2, 0xaf, 0xa2, 0x65, 0xa2, 0xaf, - 0xa2, 0x65, 0xa3, 0xaf, 0xa3, 0x65, 0xa3, 0xaf, 0xa3, 0x65, 0xa3, 0xaf, - 0xa3, 0x65, 0xa4, 0xaf, 0xa3, 0x65, 0xa4, 0xaf, 0xa3, 0x65, 0xa5, 0xaf, - 0xa3, 0x65, 0xa5, 0xaf, 0xa3, 0x65, 0xa5, 0xaf, 0xa3, 0x65, 0xa6, 0xaf, - 0xa3, 0x65, 0xa6, 0xaf, 0xa3, 0x65, 0xa6, 0xaf, 0xa6, 0x65, 0xa7, 0xaf, - 0xa7, 0x65, 0xa7, 0xaf, 0xa7, 0x65, 0xa8, 0xaf, 0xa8, 0x65, 0xa8, 0xaf, - 0xa7, 0x65, 0xa8, 0xaf, 0xa8, 0x65, 0xa9, 0xaf, 0xa7, 0x65, 0xa9, 0xaf, - 0xa8, 0x65, 0xaa, 0xaf, 0xa7, 0x65, 0xaa, 0xaf, 0xa8, 0x65, 0xaa, 0xaf, - 0xa7, 0x65, 0xab, 0xaf, 0xa8, 0x65, 0xab, 0xb0, 0xab, 0x65, 0xab, 0xb0, - 0xab, 0x65, 0xac, 0xb0, 0xac, 0x65, 0xac, 0xb0, 0xab, 0x65, 0xac, 0xb0, - 0xac, 0x65, 0xad, 0xb0, 0xab, 0x65, 0xad, 0xb0, 0xac, 0x65, 0xae, 0xb0, - 0xab, 0x65, 0xae, 0xb0, 0xac, 0x65, 0xae, 0xb0, 0xab, 0x65, 0xaf, 0xb0, - 0xac, 0x65, 0xaf, 0xb1, 0xaf, 0x65, 0xaf, 0xb1, 0xaf, 0x65, 0xb0, 0xb1, - 0xb0, 0x65, 0xb0, 0xb1, 0xaf, 0x65, 0xb0, 0xb1, 0xb0, 0x65, 0xb1, 0xb1, - 0xaf, 0x65, 0xb1, 0xb1, 0xb0, 0x65, 0xb2, 0xb1, 0xaf, 0x65, 0xb2, 0xb1, - 0xb0, 0x65, 0xb2, 0xb1, 0xaf, 0x65, 0xb3, 0xb1, 0xb0, 0x65, 0xb3, 0xb2, - 0xb3, 0x65, 0xb3, 0xb2, 0xb3, 0x65, 0xb4, 0xb2, 0xb4, 0x65, 0xb4, 0xb2, - 0xb3, 0x65, 0xb4, 0xb2, 0xb4, 0x65, 0xb5, 0xb2, 0xb3, 0x65, 0xb5, 0xb2, - 0xb4, 0x65, 0xb5, 0xb2, 0xb3, 0x65, 0xb6, 0xb2, 0xb4, 0x65, 0xb6, 0xb2, - 0xb3, 0x65, 0xb6, 0xb2, 0xb4, 0x65, 0xb7, 0xb2, 0xb7, 0x65, 0xb7, 0xb2, - 0xb7, 0x65, 0xb7, 0xb2, 0xb7, 0x65, 0xb8, 0xb2, 0xb7, 0x65, 0xb8, 0xb2, - 0xb7, 0x65, 0xb8, 0xb2, 0xb7, 0x65, 0xb9, 0xb2, 0xb7, 0x65, 0xb9, 0xb2, - 0xb7, 0x65, 0xb9, 0xb2, 0xb7, 0x65, 0xba, 0xb2, 0xb7, 0x65, 0xba, 0xb2, - 0xb7, 0x65, 0xba, 0xb2, 0xb7, 0x65, 0xbb, 0xb2, 0xb7, 0x65, 0xbb, 0xb3, - 0xbb, 0x65, 0xbb, 0xb3, 0xbb, 0x65, 0xbc, 0xb3, 0xbb, 0x65, 0xbc, 0xb3, - 0xbb, 0x65, 0xbc, 0xb3, 0xbb, 0x65, 0xbd, 0xb3, 0xbb, 0x65, 0xbd, 0xb3, - 0xbb, 0x65, 0xbd, 0xb3, 0xbb, 0x65, 0xbe, 0xb3, 0xbb, 0x65, 0xbe, 0xb3, - 0xbb, 0x65, 0xbe, 0xb3, 0xbb, 0x65, 0xbf, 0xb4, 0xbf, 0x65, 0xbf, 0xb4, - 0xbe, 0x65, 0xbf, 0xb4, 0xbf, 0x65, 0xc0, 0xb4, 0xbe, 0x65, 0xc0, 0xb4, - 0xbf, 0x65, 0xc0, 0xb4, 0xbe, 0x65, 0xc1, 0xb4, 0xbf, 0x65, 0xc1, 0xb4, - 0xbe, 0x65, 0xc1, 0xb4, 0xbf, 0x65, 0xc1, 0xb4, 0xbe, 0x65, 0xc2, 0xb4, - 0xbf, 0x65, 0xc2, 0xb4, 0xc2, 0x65, 0xc2, 0xb4, 0xc2, 0x65, 0xc3, 0xb4, - 0xc2, 0x65, 0xc3, 0xb4, 0xc2, 0x65, 0xc3, 0xb4, 0xc2, 0x65, 0xc4, 0xb4, - 0xc2, 0x65, 0xc4, 0xb4, 0xc2, 0x65, 0xc4, 0xb4, 0xc2, 0x65, 0xc5, 0xb4, - 0xc2, 0x65, 0xc5, 0xb4, 0xc2, 0x65, 0xc5, 0xb4, 0xc2, 0x65, 0xc6, 0xb5, - 0xc6, 0x65, 0xc6, 0xb5, 0xc6, 0x65, 0xc6, 0xb5, 0xc6, 0x65, 0xc6, 0xb5, - 0xc6, 0x65, 0xc7, 0xa9, 0xd1, 0x65, 0xc7, 0xaa, 0xd0, 0x65, 0xc7, 0xab, - 0xd0, 0x65, 0xc8, 0xaa, 0xd0, 0x65, 0xc8, 0xab, 0xd0, 0x65, 0xc8, 0xaa, - 0xd0, 0x65, 0xc9, 0xab, 0xd0, 0x65, 0xc9, 0xaa, 0xd0, 0x65, 0xc9, 0xab, - 0xd0, 0x65, 0xc9, 0xaa, 0xd0, 0x65, 0xca, 0xab, 0xd0, 0x65, 0xca, 0xaa, - 0xd0, 0x65, 0xca, 0xab, 0xd0, 0x65, 0xcb, 0xaa, 0xd0, 0x65, 0xcb, 0xab, - 0xd0, 0x65, 0xcb, 0xaa, 0xd0, 0x65, 0xcc, 0xab, 0xd0, 0x65, 0xcc, 0xaa, - 0xd0, 0x65, 0xcc, 0xab, 0xd0, 0x65, 0xcc, 0xaa, 0xd0, 0x65, 0xcd, 0xab, - 0xd0, 0x65, 0xcd, 0xaa, 0xd0, 0x65, 0xcd, 0xab, 0xd0, 0x65, 0xce, 0xaa, - 0xd0, 0x65, 0xce, 0xab, 0xd0, 0x65, 0xce, 0xaa, 0xd0, 0x65, 0xce, 0xa9, - 0xd1, 0x65, 0xcf, 0xaa, 0xd0, 0x65, 0xcf, 0xa9, 0xd1, 0x65, 0xcf, 0xaa, - 0xd0, 0x65, 0xd0, 0xa9, 0xd1, 0x65, 0xd0, 0xaa, 0xd0, 0x65, 0xd0, 0xa9, - 0xd1, 0x65, 0xd0, 0xaa, 0xd0, 0x65, 0xd0, 0xa9, 0xd1, 0x65, 0xd0, 0xa9, - 0xd1, 0x65, 0xd0, 0xa9, 0xd1, 0x65, 0xd0, 0xa9, 0xd2, 0x65, 0xd0, 0xa9, - 0xd2, 0x65, 0xd0, 0xa9, 0xd2, 0x65, 0xd0, 0xa9, 0xd2, 0x65, 0xd0, 0xa9, - 0xd3, 0x65, 0xd1, 0xa9, 0xd3, 0x62, 0xd0, 0xa9, 0xd3, 0x65, 0xd1, 0xa9, - 0xd4, 0x62, 0xd0, 0xa9, 0xd4, 0x65, 0xd1, 0xa9, 0xd4, 0x62, 0xd0, 0xa9, - 0xd4, 0x65, 0xd1, 0xa9, 0xd5, 0x62, 0xd0, 0xa9, 0xd5, 0x65, 0xd1, 0xa9, - 0xd5, 0x62, 0xd0, 0xa9, 0xd6, 0x65, 0xd1, 0xa9, 0xd6, 0x62, 0xd0, 0xa9, - 0xd6, 0x65, 0xd1, 0xa9, 0xd6, 0x62, 0xd0, 0xa9, 0xd7, 0x65, 0xd1, 0xa9, - 0xd7, 0x62, 0xd0, 0xa9, 0xd7, 0x65, 0xd1, 0xa9, 0xd7, 0x62, 0xd0, 0xa9, - 0xd8, 0x65, 0xd1, 0xa9, 0xd8, 0x62, 0xd0, 0xa9, 0xd8, 0x65, 0xd1, 0xa9, - 0xd9, 0x62, 0xd0, 0xa9, 0xd9, 0x65, 0xd1, 0xa9, 0xd9, 0x62, 0xd0, 0xa9, - 0xd9, 0x65, 0xd1, 0xa9, 0xda, 0x62, 0xd0, 0xa9, 0xda, 0x65, 0xd1, 0xa9, - 0xda, 0x62, 0xd0, 0xa9, 0xda, 0x65, 0xd1, 0xa9, 0xdb, 0x62, 0xd1, 0xa9, - 0xdb, 0x5f, 0xd1, 0xa9, 0xdb, 0x62, 0xd1, 0xa9, 0xdb, 0x5f, 0xd1, 0xa9, - 0xdc, 0x62, 0xd1, 0xa9, 0xdc, 0x5f, 0xd1, 0xa9, 0xdc, 0x62, 0xdf, 0xa9, - 0xdd, 0x50, 0xdf, 0xa9, 0xdd, 0x50, 0xdf, 0xa9, 0xdd, 0x50, 0xdf, 0xa9, - 0xdd, 0x50, 0xdf, 0xa9, 0xde, 0x50, 0xdf, 0xa9, 0xde, 0x50, 0xdf, 0xa9, - 0xde, 0x50, 0xdf, 0xa9, 0xde, 0x50, 0xe2, 0xa9, 0xdf, 0x51, 0xe2, 0xa9, - 0xdf, 0x51, 0xe2, 0xa9, 0xdf, 0x51, 0xe2, 0xa9, 0xdf, 0x51, 0xe2, 0xa9, - 0xe0, 0x51, 0xe2, 0xa9, 0xe0, 0x51, 0xe2, 0xa9, 0xe0, 0x51, 0xe2, 0xa9, - 0xe1, 0x51, 0xe2, 0xa9, 0xe1, 0x51, 0xe4, 0xa9, 0xe1, 0x52, 0xe4, 0xa9, - 0xe1, 0x52, 0xe4, 0xa9, 0xe2, 0x52, 0xe4, 0xa9, 0xe2, 0x52, 0xe4, 0xa9, - 0xe2, 0x52, 0xec, 0xa9, 0xe2, 0x67, 0xec, 0xa9, 0xe3, 0x6b, 0xec, 0xa9, - 0xe3, 0x67, 0xec, 0xa9, 0xe3, 0x6b, 0xec, 0xa9, 0xe3, 0x67, 0xec, 0xa9, - 0xe4, 0x66, 0xec, 0xa9, 0xe4, 0x67, 0xec, 0xa9, 0xe4, 0x66, 0xec, 0xa9, - 0xe4, 0x67, 0xec, 0xa9, 0xe5, 0x66, 0xec, 0xa9, 0xe5, 0x67, 0xec, 0xa9, - 0xe5, 0x66, 0xec, 0xa9, 0xe5, 0x67, 0xec, 0xa9, 0xe6, 0x66, 0xec, 0xa9, - 0xe6, 0x67, 0xec, 0xa9, 0xe6, 0x66, 0xec, 0xa9, 0xe6, 0x67, 0xec, 0xa9, - 0xe7, 0x66, 0xec, 0xa9, 0xe7, 0x67, 0xec, 0xa9, 0xe7, 0x66, 0xec, 0xa9, - 0xe7, 0x67, 0xec, 0xa9, 0xe8, 0x66, 0xec, 0xa9, 0xe8, 0x67, 0xec, 0xa9, - 0xe8, 0x66, 0xec, 0xa9, 0xe8, 0x67, 0xec, 0xa9, 0xe9, 0x66, 0xec, 0xa9, - 0xe9, 0x67, 0xec, 0xa9, 0xe9, 0x66, 0xec, 0xa9, 0xe9, 0x67, 0xec, 0xa9, - 0xea, 0x66, 0xec, 0xa9, 0xea, 0x67, 0xec, 0xa9, 0xea, 0x66, 0xec, 0xa9, - 0xea, 0x67, 0xec, 0xa9, 0xeb, 0x66, 0xec, 0xa9, 0xeb, 0x67, 0xec, 0xa9, - 0xeb, 0x66, 0xec, 0xa9, 0xeb, 0x66, 0xec, 0xa9, 0xec, 0x66, 0xec, 0xa9, - 0xec, 0x66, 0xec, 0xa9, 0xec, 0x66, 0xec, 0xa9, 0xec, 0x66, 0xec, 0xa9, - 0xec, 0x66, 0xed, 0xa9, 0xed, 0x66, 0xed, 0xa9, 0xed, 0x66, 0xed, 0xa9, - 0xed, 0x66, 0xed, 0xa9, 0xed, 0x66, 0xee, 0xa9, 0xee, 0x66, 0xee, 0xa9, - 0xee, 0x66, 0xee, 0xa9, 0xee, 0x66, 0xee, 0xa9, 0xee, 0x66, 0xef, 0xa9, - 0xef, 0x66, 0xef, 0xa9, 0xef, 0x66, 0xef, 0xa9, 0xef, 0x66, 0xef, 0xa9, - 0xef, 0x66, 0xef, 0xa9, 0xf0, 0x66, 0xf0, 0xa9, 0xf0, 0x67, 0xf0, 0xa9, - 0xf0, 0x67, 0xf0, 0xa9, 0xf0, 0x67, 0xf1, 0xa9, 0xf1, 0x67, 0xf1, 0xa9, - 0xf1, 0x67, 0xf1, 0xa9, 0xf1, 0x67, 0xf1, 0xa9, 0xf1, 0x67, 0xf2, 0xa9, - 0xf2, 0x67, 0xf2, 0xa9, 0xf2, 0x67, 0xf2, 0xa9, 0xf2, 0x67, 0xf2, 0xa9, - 0xf2, 0x67, 0xf2, 0xa9, 0xf2, 0x67, 0xf3, 0xa9, 0xf3, 0x67, 0xf3, 0xa9, - 0xf3, 0x67, 0xf3, 0xa9, 0xf3, 0x67, 0xf3, 0xa9, 0xf3, 0x67, 0xf3, 0xa9, - 0xf4, 0x67, 0xf3, 0xa9, 0xf4, 0x67, 0xf4, 0xa9, 0xf4, 0x68, 0xf4, 0xa9, - 0xf4, 0x68, 0xf5, 0xa9, 0xf5, 0x68, 0xf5, 0xa9, 0xf5, 0x68, 0xf5, 0xa9, - 0xf5, 0x68, 0xf5, 0xa9, 0xf5, 0x68, 0xf5, 0xa9, 0xf5, 0x68, 0xf6, 0xa9, - 0xf6, 0x68, 0xf6, 0xa9, 0xf6, 0x68, 0xf6, 0xa9, 0xf6, 0x68, 0xf6, 0xa9, - 0xf6, 0x68, 0xf6, 0xa9, 0xf7, 0x68, 0xf6, 0xa9, 0xf7, 0x68, 0xf6, 0xa9, - 0xf7, 0x68, 0xf6, 0xa9, 0xf7, 0x68, 0xf6, 0xa9, 0xf8, 0x68, 0xf6, 0xa9, - 0xf8, 0x68, 0xf6, 0xa9, 0xf8, 0x68, 0xf6, 0xa9, 0xf8, 0x68, 0xf6, 0xa9, - 0xf8, 0x68, 0xfb, 0xa9, 0xf9, 0x67, 0xfb, 0xa9, 0xf9, 0x65, 0xfb, 0xa9, - 0xf9, 0x67, 0xfb, 0xa9, 0xf9, 0x65, 0xfb, 0xa9, 0xfa, 0x67, 0xfb, 0xa9, - 0xfa, 0x65, 0xfb, 0xa9, 0xfa, 0x67, 0xfb, 0xa9, 0xfa, 0x65, 0xfb, 0xa9, - 0xfa, 0x65, 0xfb, 0xa9, 0xfb, 0x65, 0xfb, 0xa9, 0xfb, 0x65, 0xfb, 0xa9, - 0xfb, 0x65, 0xfb, 0xa9, 0xfb, 0x65, 0xfc, 0xa9, 0xfb, 0x65, 0xfc, 0xa9, - 0xfb, 0x65, 0xfc, 0xa7, 0xfb, 0x65, 0xfc, 0xa9, 0xfb, 0x65, 0xfc, 0xa7, - 0xfb, 0x65, 0xfd, 0xa9, 0xfb, 0x65, 0xfd, 0xa7, 0xfb, 0x65, 0xfd, 0xa9, - 0xfb, 0x65, 0xfd, 0xa7, 0xfb, 0x65, 0xfe, 0xa9, 0xfb, 0x65, 0xfe, 0xa7, - 0xfb, 0x65, 0xfe, 0xa9, 0xfb, 0x65, 0xfe, 0xa7, 0xfb, 0x65, 0xfe, 0xa9, - 0xfb, 0x65, 0xff, 0xa7, 0xfb, 0x65, 0xff, 0xa9, 0xfb, 0x65, 0x03, 0xaf, - 0x94, 0x65, 0x0a, 0xaf, 0x94, 0x65, 0x0f, 0xaf, 0x94, 0x65, 0x14, 0xaf, - 0x94, 0x65, 0x17, 0xaf, 0x94, 0x65, 0x1b, 0xaf, 0x94, 0x65, 0x1e, 0xaf, - 0x94, 0x65, 0x20, 0xb2, 0x94, 0x65, 0x23, 0xaf, 0x94, 0x65, 0x25, 0xb2, - 0x94, 0x65, 0x27, 0xaf, 0x94, 0x65, 0x29, 0xb2, 0x94, 0x65, 0x2b, 0xaf, - 0x94, 0x65, 0x2d, 0xb2, 0x94, 0x65, 0x2f, 0xaf, 0x94, 0x65, 0x31, 0xb2, - 0x94, 0x65, 0x32, 0xaf, 0x94, 0x65, 0x34, 0xb2, 0x94, 0x65, 0x35, 0xaf, - 0x94, 0x65, 0x37, 0xb2, 0x94, 0x65, 0x38, 0xaf, 0x94, 0x65, 0x3a, 0xb2, - 0x94, 0x65, 0x3b, 0xaf, 0x94, 0x65, 0x3c, 0xb2, 0x94, 0x65, 0x3e, 0xaf, - 0x94, 0x65, 0x3f, 0xb2, 0x94, 0x65, 0x40, 0xaf, 0x94, 0x65, 0x42, 0xb2, - 0x94, 0x65, 0x43, 0xaf, 0x94, 0x65, 0x44, 0xb2, 0x94, 0x65, 0x45, 0xaf, - 0x94, 0x65, 0x46, 0xb2, 0x94, 0x65, 0x47, 0xaf, 0x94, 0x65, 0x48, 0xad, - 0x95, 0x65, 0x49, 0xaf, 0x94, 0x65, 0x4a, 0xad, 0x95, 0x65, 0x4b, 0xaf, - 0x94, 0x65, 0x4c, 0xad, 0x95, 0x65, 0x4d, 0xaf, 0x94, 0x65, 0x4e, 0xad, - 0x95, 0x65, 0x4f, 0xaf, 0x94, 0x65, 0x50, 0xad, 0x95, 0x65, 0x51, 0xaf, - 0x94, 0x65, 0x52, 0xad, 0x95, 0x65, 0x53, 0xaf, 0x94, 0x65, 0x54, 0xad, - 0x95, 0x65, 0x55, 0xaf, 0x94, 0x65, 0x56, 0xad, 0x95, 0x65, 0x57, 0xaf, - 0x94, 0x65, 0x58, 0xad, 0x95, 0x65, 0x58, 0xaf, 0x94, 0x65, 0x59, 0xad, - 0x95, 0x65, 0x5a, 0xaf, 0x94, 0x65, 0x5b, 0xad, 0x95, 0x65, 0x5c, 0xaf, - 0x94, 0x65, 0x5d, 0xad, 0x95, 0x65, 0x5d, 0xaf, 0x94, 0x65, 0x5e, 0xad, - 0x95, 0x65, 0x5f, 0xaf, 0x94, 0x65, 0x60, 0xad, 0x95, 0x65, 0x60, 0xaf, - 0x94, 0x65, 0x61, 0xad, 0x95, 0x65, 0x62, 0xaf, 0x94, 0x65, 0x63, 0xad, - 0x95, 0x65, 0x63, 0xaf, 0x94, 0x65, 0x64, 0xad, 0x95, 0x65, 0x65, 0xaf, - 0x94, 0x65, 0x66, 0xad, 0x95, 0x65, 0x66, 0xaf, 0x94, 0x65, 0x67, 0xad, - 0x95, 0x65, 0x68, 0xaf, 0x94, 0x65, 0x68, 0xad, 0x95, 0x65, 0x69, 0xaf, - 0x94, 0x65, 0x6a, 0xad, 0x95, 0x65, 0x6a, 0xaf, 0x94, 0x65, 0x6b, 0xad, - 0x95, 0x65, 0x6c, 0xaf, 0x94, 0x65, 0x6c, 0xad, 0x95, 0x65, 0x6d, 0xaf, - 0x94, 0x65, 0x6e, 0xad, 0x95, 0x65, 0x6e, 0xaf, 0x94, 0x65, 0x6f, 0xad, - 0x95, 0x65, 0x70, 0xaf, 0x94, 0x65, 0x70, 0xad, 0x95, 0x65, 0x71, 0xaf, - 0x94, 0x65, 0x72, 0xad, 0x95, 0x65, 0x72, 0xaf, 0x94, 0x65, 0x73, 0xad, - 0x95, 0x65, 0x73, 0xaf, 0x94, 0x65, 0x74, 0xad, 0x95, 0x65, 0x75, 0xaf, - 0x94, 0x65, 0x75, 0xad, 0x95, 0x65, 0x76, 0xaf, 0x94, 0x65, 0x76, 0xad, - 0x95, 0x65, 0x77, 0xab, 0x95, 0x65, 0x78, 0xad, 0x95, 0x65, 0x78, 0xab, - 0x95, 0x65, 0x79, 0xad, 0x95, 0x65, 0x79, 0xab, 0x95, 0x65, 0x7a, 0xad, - 0x95, 0x65, 0x7a, 0xab, 0x95, 0x65, 0x7b, 0xad, 0x95, 0x65, 0x7c, 0xab, - 0x95, 0x65, 0x7c, 0xad, 0x95, 0x65, 0x7d, 0xab, 0x95, 0x65, 0x7d, 0xad, - 0x95, 0x65, 0x7e, 0xab, 0x95, 0x65, 0x7e, 0xad, 0x95, 0x65, 0x7f, 0xab, - 0x95, 0x65, 0x7f, 0xad, 0x95, 0x65, 0x80, 0xab, 0x95, 0x65, 0x81, 0xad, - 0x95, 0x65, 0x81, 0xab, 0x95, 0x65, 0x82, 0xad, 0x95, 0x65, 0x82, 0xab, - 0x95, 0x65, 0x83, 0xad, 0x95, 0x65, 0x83, 0xab, 0x95, 0x65, 0x84, 0xad, - 0x95, 0x65, 0x84, 0xab, 0x95, 0x65, 0x85, 0xad, 0x95, 0x65, 0x85, 0xab, - 0x95, 0x65, 0x86, 0xad, 0x95, 0x65, 0x86, 0xab, 0x95, 0x65, 0x87, 0xad, - 0x95, 0x65, 0x87, 0xab, 0x95, 0x65, 0x88, 0xad, 0x95, 0x65, 0x88, 0xab, - 0x95, 0x65, 0x89, 0xad, 0x95, 0x65, 0x89, 0xab, 0x95, 0x65, 0x8a, 0xad, - 0x95, 0x65, 0x8a, 0xab, 0x95, 0x65, 0x8b, 0xa9, 0x96, 0x65, 0x8b, 0xab, - 0x95, 0x65, 0x8c, 0xa9, 0x96, 0x65, 0x8c, 0xab, 0x95, 0x65, 0x8d, 0xa9, - 0x96, 0x65, 0x8d, 0xab, 0x95, 0x65, 0x8e, 0xa9, 0x96, 0x65, 0x8e, 0xab, - 0x95, 0x65, 0x8e, 0xa9, 0x96, 0x65, 0x8f, 0xab, 0x95, 0x65, 0x8f, 0xa9, - 0x96, 0x65, 0x90, 0xab, 0x95, 0x65, 0x90, 0xa9, 0x96, 0x65, 0x91, 0xab, - 0x95, 0x65, 0x91, 0xa9, 0x96, 0x65, 0x92, 0xab, 0x95, 0x65, 0x92, 0xa9, - 0x96, 0x65, 0x93, 0xab, 0x95, 0x65, 0x93, 0xa9, 0x96, 0x65, 0x94, 0xab, - 0x95, 0x65, 0x94, 0xa9, 0x96, 0x65, 0x94, 0xa9, 0x96, 0x65, 0x95, 0xa9, - 0x96, 0x65, 0x95, 0xa9, 0x96, 0x65, 0x95, 0xa9, 0x96, 0x65, 0x95, 0xa9, - 0x96, 0x65, 0x95, 0xa9, 0x97, 0x65, 0x95, 0xa9, 0x97, 0x65, 0x99, 0xa9, - 0x98, 0x65, 0x9a, 0xa9, 0x98, 0x65, 0x99, 0xa9, 0x98, 0x65, 0x9a, 0xa9, - 0x99, 0x65, 0x99, 0xa9, 0x98, 0x65, 0x9a, 0xa9, 0x99, 0x65, 0x9a, 0xa9, - 0x98, 0x65, 0x9a, 0xa9, 0x99, 0x65, 0x9b, 0xa8, 0x99, 0x65, 0x9b, 0xa9, - 0x99, 0x65, 0x9c, 0xa8, 0x99, 0x65, 0x9c, 0xa9, 0x99, 0x65, 0x9d, 0xa8, - 0x99, 0x65, 0x9d, 0xa9, 0x99, 0x65, 0x9d, 0xa8, 0x99, 0x65, 0x9e, 0xa9, - 0x99, 0x65, 0x9e, 0xa8, 0x99, 0x65, 0x9f, 0xae, 0x9c, 0x65, 0x9f, 0xae, - 0x9d, 0x65, 0x9f, 0xae, 0x9f, 0x65, 0xa0, 0xae, 0xa0, 0x65, 0xa0, 0xae, - 0xa0, 0x65, 0xa1, 0xae, 0xa1, 0x65, 0xa1, 0xae, 0xa1, 0x65, 0xa1, 0xae, - 0xa1, 0x65, 0xa2, 0xae, 0xa1, 0x65, 0xa2, 0xae, 0xa1, 0x65, 0xa3, 0xae, - 0xa1, 0x65, 0xa3, 0xae, 0xa1, 0x65, 0xa3, 0xae, 0xa1, 0x65, 0xa4, 0xaf, - 0xa4, 0x65, 0xa4, 0xaf, 0xa4, 0x65, 0xa5, 0xaf, 0xa5, 0x65, 0xa5, 0xaf, - 0xa5, 0x65, 0xa5, 0xaf, 0xa5, 0x65, 0xa6, 0xaf, 0xa5, 0x65, 0xa6, 0xaf, - 0xa5, 0x65, 0xa6, 0xaf, 0xa5, 0x65, 0xa7, 0xaf, 0xa5, 0x65, 0xa7, 0xaf, - 0xa5, 0x65, 0xa8, 0xaf, 0xa5, 0x65, 0xa8, 0xaf, 0xa5, 0x65, 0xa8, 0xaf, - 0xa5, 0x65, 0xa9, 0xb0, 0xa9, 0x65, 0xa9, 0xb0, 0xa9, 0x65, 0xaa, 0xb0, - 0xaa, 0x65, 0xaa, 0xb0, 0xa9, 0x65, 0xaa, 0xb0, 0xaa, 0x65, 0xab, 0xb0, - 0xa9, 0x65, 0xab, 0xb0, 0xaa, 0x65, 0xab, 0xb0, 0xa9, 0x65, 0xac, 0xb0, - 0xaa, 0x65, 0xac, 0xb0, 0xa9, 0x65, 0xac, 0xb0, 0xaa, 0x65, 0xad, 0xb0, - 0xad, 0x65, 0xad, 0xb0, 0xad, 0x65, 0xae, 0xb0, 0xae, 0x65, 0xae, 0xb0, - 0xad, 0x65, 0xae, 0xb0, 0xae, 0x65, 0xaf, 0xb0, 0xad, 0x65, 0xaf, 0xb0, - 0xae, 0x65, 0xaf, 0xb0, 0xad, 0x65, 0xb0, 0xb0, 0xae, 0x65, 0xb0, 0xb0, - 0xad, 0x65, 0xb0, 0xb0, 0xae, 0x65, 0xb1, 0xb1, 0xb1, 0x65, 0xb1, 0xb1, - 0xb1, 0x65, 0xb2, 0xb1, 0xb2, 0x65, 0xb2, 0xb1, 0xb1, 0x65, 0xb2, 0xb1, - 0xb2, 0x65, 0xb3, 0xb1, 0xb1, 0x65, 0xb3, 0xb1, 0xb2, 0x65, 0xb3, 0xb1, - 0xb1, 0x65, 0xb4, 0xb1, 0xb2, 0x65, 0xb4, 0xb1, 0xb1, 0x65, 0xb4, 0xb1, - 0xb2, 0x65, 0xb5, 0xb2, 0xb5, 0x65, 0xb5, 0xb2, 0xb5, 0x65, 0xb5, 0xb2, - 0xb5, 0x65, 0xb6, 0xb2, 0xb5, 0x65, 0xb6, 0xb2, 0xb5, 0x65, 0xb6, 0xb2, - 0xb5, 0x65, 0xb7, 0xb2, 0xb5, 0x65, 0xb7, 0xb2, 0xb5, 0x65, 0xb7, 0xb2, - 0xb5, 0x65, 0xb8, 0xb2, 0xb5, 0x65, 0xb8, 0xb2, 0xb5, 0x65, 0xb8, 0xb3, - 0xb8, 0x65, 0xb9, 0xb3, 0xb9, 0x65, 0xb9, 0xb3, 0xb9, 0x65, 0xb9, 0xb3, - 0xb9, 0x65, 0xba, 0xb3, 0xb9, 0x65, 0xba, 0xb3, 0xb9, 0x65, 0xba, 0xb3, - 0xb9, 0x65, 0xbb, 0xb3, 0xb9, 0x65, 0xbb, 0xb3, 0xb9, 0x65, 0xbb, 0xb3, - 0xb9, 0x65, 0xbc, 0xb3, 0xb9, 0x65, 0xbc, 0xb3, 0xb9, 0x65, 0xbc, 0xb3, - 0xb9, 0x65, 0xbd, 0xb3, 0xb9, 0x65, 0xbd, 0xb3, 0xbd, 0x65, 0xbd, 0xb3, - 0xbd, 0x65, 0xbe, 0xb3, 0xbd, 0x65, 0xbe, 0xb3, 0xbd, 0x65, 0xbe, 0xb3, - 0xbd, 0x65, 0xbf, 0xb3, 0xbd, 0x65, 0xbf, 0xb3, 0xbd, 0x65, 0xbf, 0xb3, - 0xbd, 0x65, 0xc0, 0xb3, 0xbd, 0x65, 0xc0, 0xb3, 0xbd, 0x65, 0xc0, 0xb3, - 0xbd, 0x65, 0xc1, 0xb4, 0xc1, 0x65, 0xc1, 0xb4, 0xc0, 0x65, 0xc1, 0xb4, - 0xc1, 0x65, 0xc1, 0xb4, 0xc0, 0x65, 0xc2, 0xb4, 0xc1, 0x65, 0xc2, 0xb4, - 0xc0, 0x65, 0xc2, 0xb4, 0xc1, 0x65, 0xc3, 0xb4, 0xc0, 0x65, 0xc3, 0xb4, - 0xc1, 0x65, 0xc3, 0xb4, 0xc0, 0x65, 0xc4, 0xb4, 0xc1, 0x65, 0xc4, 0xb5, - 0xc4, 0x65, 0xc4, 0xb5, 0xc4, 0x65, 0xc5, 0xb5, 0xc4, 0x65, 0xc5, 0xb5, - 0xc4, 0x65, 0xc5, 0xb5, 0xc4, 0x65, 0xc6, 0xb5, 0xc4, 0x65, 0xc6, 0xb5, - 0xc4, 0x65, 0xc6, 0xb5, 0xc4, 0x65, 0xc6, 0xb5, 0xc4, 0x65, 0xc7, 0xb5, - 0xc4, 0x65, 0xc7, 0xa9, 0xd0, 0x65, 0xc7, 0xab, 0xd0, 0x65, 0xc8, 0xa9, - 0xd0, 0x65, 0xc8, 0xab, 0xd0, 0x65, 0xc8, 0xa9, 0xd0, 0x65, 0xc9, 0xab, - 0xd0, 0x65, 0xc9, 0xa9, 0xd0, 0x65, 0xc9, 0xab, 0xd0, 0x65, 0xc9, 0xa9, - 0xd0, 0x65, 0xca, 0xab, 0xd0, 0x65, 0xca, 0xa9, 0xd0, 0x65, 0xca, 0xab, - 0xd0, 0x65, 0xcb, 0xa9, 0xd0, 0x65, 0xcb, 0xab, 0xd0, 0x65, 0xcb, 0xa9, - 0xd0, 0x65, 0xcc, 0xab, 0xd0, 0x65, 0xcc, 0xa9, 0xd0, 0x65, 0xcc, 0xab, - 0xd0, 0x65, 0xcc, 0xa9, 0xd0, 0x65, 0xcd, 0xab, 0xd0, 0x65, 0xcd, 0xa9, - 0xd0, 0x65, 0xcd, 0xab, 0xd0, 0x65, 0xce, 0xa9, 0xd0, 0x65, 0xce, 0xab, - 0xd0, 0x65, 0xce, 0xa9, 0xd0, 0x65, 0xce, 0xa9, 0xd1, 0x65, 0xcf, 0xa9, - 0xd0, 0x65, 0xcf, 0xa9, 0xd1, 0x65, 0xcf, 0xa9, 0xd0, 0x65, 0xd0, 0xa9, - 0xd1, 0x65, 0xd0, 0xa9, 0xd0, 0x65, 0xd0, 0xa9, 0xd1, 0x65, 0xd0, 0xa9, - 0xd0, 0x64, 0xd0, 0xa9, 0xd1, 0x65, 0xd0, 0xa9, 0xd1, 0x64, 0xd0, 0xa9, - 0xd1, 0x65, 0xd0, 0xa9, 0xd2, 0x64, 0xd0, 0xa9, 0xd2, 0x65, 0xd0, 0xa9, - 0xd2, 0x64, 0xd0, 0xa9, 0xd2, 0x65, 0xd0, 0xa9, 0xd3, 0x64, 0xd0, 0xa9, - 0xd3, 0x65, 0xd0, 0xa9, 0xd3, 0x64, 0xd0, 0xa9, 0xd4, 0x65, 0xd0, 0xa9, - 0xd4, 0x64, 0xd0, 0xa9, 0xd4, 0x65, 0xd0, 0xa9, 0xd4, 0x64, 0xd0, 0xa9, - 0xd5, 0x65, 0xd0, 0xa9, 0xd5, 0x64, 0xd1, 0xa9, 0xd5, 0x61, 0xd0, 0xa9, - 0xd6, 0x64, 0xd1, 0xa9, 0xd6, 0x61, 0xd0, 0xa9, 0xd6, 0x64, 0xd1, 0xa9, - 0xd6, 0x61, 0xd0, 0xa9, 0xd7, 0x64, 0xd1, 0xa9, 0xd7, 0x61, 0xd0, 0xa9, - 0xd7, 0x64, 0xd1, 0xa9, 0xd7, 0x61, 0xd0, 0xa9, 0xd8, 0x64, 0xd1, 0xa9, - 0xd8, 0x61, 0xd0, 0xa9, 0xd8, 0x64, 0xd1, 0xa9, 0xd9, 0x61, 0xd0, 0xa9, - 0xd9, 0x64, 0xd1, 0xa9, 0xd9, 0x61, 0xd0, 0xa9, 0xd9, 0x64, 0xd1, 0xa9, - 0xda, 0x61, 0xd0, 0xa9, 0xda, 0x64, 0xd1, 0xa9, 0xda, 0x61, 0xd0, 0xa9, - 0xda, 0x64, 0xd1, 0xa9, 0xdb, 0x61, 0xd1, 0xa9, 0xdb, 0x5f, 0xd1, 0xa9, - 0xdb, 0x61, 0xd1, 0xa9, 0xdb, 0x5f, 0xd1, 0xa9, 0xdc, 0x61, 0xd1, 0xa9, - 0xdc, 0x5f, 0xd1, 0xa9, 0xdc, 0x61, 0xd1, 0xa9, 0xdd, 0x5f, 0xe1, 0xa9, - 0xdd, 0x50, 0xde, 0xa9, 0xdd, 0x4f, 0xe1, 0xa9, 0xdd, 0x50, 0xe1, 0xa9, - 0xde, 0x50, 0xe1, 0xa9, 0xde, 0x50, 0xe1, 0xa9, 0xde, 0x50, 0xe1, 0xa9, - 0xde, 0x50, 0xe1, 0xa9, 0xdf, 0x50, 0xe1, 0xa9, 0xdf, 0x50, 0xe3, 0xa9, - 0xdf, 0x51, 0xe1, 0xa9, 0xdf, 0x50, 0xe3, 0xa9, 0xe0, 0x51, 0xe3, 0xa9, - 0xe0, 0x51, 0xe3, 0xa9, 0xe0, 0x51, 0xe3, 0xa9, 0xe1, 0x51, 0xe3, 0xa9, - 0xe1, 0x51, 0xe3, 0xa9, 0xe1, 0x51, 0xe3, 0xa9, 0xe1, 0x51, 0xe3, 0xa9, - 0xe2, 0x51, 0xe3, 0xa9, 0xe2, 0x51, 0xec, 0xa9, 0xe2, 0x6b, 0xec, 0xa9, - 0xe2, 0x67, 0xec, 0xa9, 0xe3, 0x6b, 0xec, 0xa9, 0xe3, 0x67, 0xec, 0xa9, - 0xe3, 0x65, 0xec, 0xa9, 0xe3, 0x67, 0xec, 0xa9, 0xe4, 0x65, 0xec, 0xa9, - 0xe4, 0x67, 0xec, 0xa9, 0xe4, 0x65, 0xec, 0xa9, 0xe4, 0x67, 0xec, 0xa9, - 0xe5, 0x65, 0xec, 0xa9, 0xe5, 0x67, 0xec, 0xa9, 0xe5, 0x65, 0xec, 0xa9, - 0xe5, 0x67, 0xec, 0xa9, 0xe6, 0x65, 0xec, 0xa9, 0xe6, 0x67, 0xec, 0xa9, - 0xe6, 0x65, 0xec, 0xa9, 0xe6, 0x67, 0xec, 0xa9, 0xe7, 0x65, 0xec, 0xa9, - 0xe7, 0x67, 0xec, 0xa9, 0xe7, 0x65, 0xec, 0xa9, 0xe7, 0x67, 0xec, 0xa9, - 0xe8, 0x65, 0xec, 0xa9, 0xe8, 0x67, 0xec, 0xa9, 0xe8, 0x65, 0xec, 0xa9, - 0xe8, 0x67, 0xec, 0xa9, 0xe9, 0x65, 0xec, 0xa9, 0xe9, 0x67, 0xec, 0xa9, - 0xe9, 0x65, 0xec, 0xa9, 0xe9, 0x67, 0xec, 0xa9, 0xea, 0x65, 0xec, 0xa9, - 0xea, 0x67, 0xec, 0xa9, 0xea, 0x65, 0xec, 0xa9, 0xea, 0x67, 0xec, 0xa9, - 0xeb, 0x65, 0xec, 0xa9, 0xeb, 0x67, 0xec, 0xa9, 0xeb, 0x65, 0xec, 0xa9, - 0xeb, 0x65, 0xec, 0xa9, 0xec, 0x65, 0xec, 0xa9, 0xec, 0x65, 0xec, 0xa8, - 0xec, 0x65, 0xec, 0xa8, 0xec, 0x65, 0xec, 0xa8, 0xec, 0x65, 0xed, 0xa8, - 0xed, 0x65, 0xed, 0xa8, 0xed, 0x65, 0xed, 0xa8, 0xed, 0x65, 0xed, 0xa9, - 0xed, 0x66, 0xee, 0xa9, 0xee, 0x66, 0xee, 0xa9, 0xee, 0x66, 0xee, 0xa9, - 0xee, 0x66, 0xee, 0xa9, 0xee, 0x66, 0xef, 0xa9, 0xef, 0x66, 0xef, 0xa9, - 0xef, 0x66, 0xef, 0xa9, 0xef, 0x66, 0xef, 0xa9, 0xef, 0x66, 0xf0, 0xa9, - 0xf0, 0x66, 0xf0, 0xa9, 0xf0, 0x66, 0xf0, 0xa9, 0xf0, 0x66, 0xf0, 0xa9, - 0xf0, 0x66, 0xf1, 0xa9, 0xf1, 0x66, 0xf1, 0xa9, 0xf1, 0x66, 0xf1, 0xa9, - 0xf1, 0x66, 0xf1, 0xa9, 0xf1, 0x66, 0xf1, 0xa9, 0xf2, 0x66, 0xf2, 0xa9, - 0xf2, 0x67, 0xf2, 0xa9, 0xf2, 0x67, 0xf2, 0xa9, 0xf2, 0x67, 0xf2, 0xa9, - 0xf2, 0x67, 0xf3, 0xa9, 0xf3, 0x67, 0xf3, 0xa9, 0xf3, 0x67, 0xf3, 0xa9, - 0xf3, 0x67, 0xf3, 0xa9, 0xf3, 0x67, 0xf4, 0xa9, 0xf4, 0x67, 0xf4, 0xa9, - 0xf4, 0x67, 0xf4, 0xa9, 0xf4, 0x67, 0xf4, 0xa9, 0xf4, 0x67, 0xf5, 0xa9, - 0xf5, 0x67, 0xf4, 0xa9, 0xf5, 0x67, 0xf5, 0xa9, 0xf5, 0x67, 0xf4, 0xa9, - 0xf5, 0x67, 0xf5, 0xa9, 0xf5, 0x67, 0xf6, 0xa9, 0xf6, 0x68, 0xf6, 0xa9, - 0xf6, 0x68, 0xf6, 0xa9, 0xf6, 0x68, 0xf6, 0xa9, 0xf6, 0x68, 0xf6, 0xa9, - 0xf7, 0x68, 0xf6, 0xa9, 0xf7, 0x68, 0xf6, 0xa9, 0xf7, 0x68, 0xf6, 0xa9, - 0xf7, 0x68, 0xf6, 0xa9, 0xf8, 0x68, 0xf6, 0xa9, 0xf8, 0x68, 0xf6, 0xa9, - 0xf8, 0x68, 0xf6, 0xa9, 0xf8, 0x68, 0xf6, 0xa9, 0xf8, 0x68, 0xfb, 0xa9, - 0xf9, 0x67, 0xfb, 0xa9, 0xf9, 0x65, 0xfb, 0xa9, 0xf9, 0x67, 0xfb, 0xa9, - 0xf9, 0x65, 0xfb, 0xa9, 0xfa, 0x67, 0xfb, 0xa9, 0xfa, 0x65, 0xfb, 0xa9, - 0xfa, 0x67, 0xfb, 0xa9, 0xfa, 0x65, 0xfb, 0xa9, 0xfa, 0x65, 0xfb, 0xa9, - 0xfb, 0x65, 0xfb, 0xa9, 0xfb, 0x65, 0xfb, 0xa9, 0xfb, 0x65, 0xfb, 0xa9, - 0xfb, 0x65, 0xfc, 0xa9, 0xfb, 0x65, 0xfc, 0xa9, 0xfb, 0x65, 0xfc, 0xa8, - 0xfb, 0x65, 0xfc, 0xa9, 0xfb, 0x65, 0xfc, 0xa8, 0xfb, 0x65, 0xfd, 0xa9, - 0xfb, 0x65, 0xfd, 0xa8, 0xfb, 0x65, 0xfd, 0xa9, 0xfb, 0x65, 0xfd, 0xa8, - 0xfb, 0x65, 0xfe, 0xa9, 0xfb, 0x65, 0xfe, 0xa8, 0xfb, 0x65, 0xfe, 0xa9, - 0xfb, 0x65, 0xfe, 0xa8, 0xfb, 0x65, 0xfe, 0xa9, 0xfb, 0x65, 0xff, 0xa8, - 0xfb, 0x65, 0xff, 0xa9, 0xfb, 0x65, 0x03, 0xb4, 0x94, 0x66, 0x0a, 0xb2, - 0x94, 0x66, 0x0f, 0xb4, 0x94, 0x66, 0x14, 0xb2, 0x94, 0x66, 0x17, 0xb4, - 0x94, 0x66, 0x1b, 0xb2, 0x94, 0x66, 0x1e, 0xb4, 0x94, 0x66, 0x20, 0xb2, - 0x94, 0x66, 0x23, 0xb4, 0x94, 0x66, 0x25, 0xb2, 0x94, 0x66, 0x27, 0xb4, - 0x94, 0x66, 0x29, 0xb2, 0x94, 0x66, 0x2b, 0xb4, 0x94, 0x66, 0x2d, 0xb2, - 0x94, 0x66, 0x2f, 0xb4, 0x94, 0x66, 0x31, 0xb2, 0x94, 0x66, 0x32, 0xb4, - 0x94, 0x66, 0x34, 0xb2, 0x94, 0x66, 0x35, 0xb4, 0x94, 0x66, 0x37, 0xb2, - 0x94, 0x66, 0x38, 0xaf, 0x94, 0x66, 0x3a, 0xb2, 0x94, 0x66, 0x3b, 0xaf, - 0x94, 0x66, 0x3c, 0xb2, 0x94, 0x66, 0x3e, 0xaf, 0x94, 0x66, 0x3f, 0xb2, - 0x94, 0x66, 0x40, 0xaf, 0x94, 0x66, 0x42, 0xb2, 0x94, 0x66, 0x43, 0xaf, - 0x94, 0x66, 0x44, 0xb2, 0x94, 0x66, 0x45, 0xaf, 0x94, 0x66, 0x46, 0xb2, - 0x94, 0x66, 0x47, 0xaf, 0x94, 0x66, 0x48, 0xb2, 0x94, 0x66, 0x49, 0xaf, - 0x94, 0x66, 0x4a, 0xb2, 0x94, 0x66, 0x4b, 0xaf, 0x94, 0x66, 0x4c, 0xb2, - 0x94, 0x66, 0x4d, 0xaf, 0x94, 0x66, 0x4e, 0xb2, 0x94, 0x66, 0x4f, 0xaf, - 0x94, 0x66, 0x50, 0xb2, 0x94, 0x66, 0x51, 0xaf, 0x94, 0x66, 0x52, 0xb2, - 0x94, 0x66, 0x53, 0xaf, 0x94, 0x66, 0x54, 0xb2, 0x94, 0x66, 0x55, 0xaf, - 0x94, 0x66, 0x56, 0xb2, 0x94, 0x66, 0x57, 0xaf, 0x94, 0x66, 0x58, 0xb2, - 0x94, 0x66, 0x58, 0xaf, 0x94, 0x66, 0x59, 0xb2, 0x94, 0x66, 0x5a, 0xaf, - 0x94, 0x66, 0x5b, 0xb2, 0x94, 0x66, 0x5c, 0xaf, 0x94, 0x66, 0x5d, 0xb2, - 0x94, 0x66, 0x5d, 0xaf, 0x94, 0x66, 0x5e, 0xad, 0x95, 0x66, 0x5f, 0xaf, - 0x94, 0x66, 0x60, 0xad, 0x95, 0x66, 0x60, 0xaf, 0x94, 0x66, 0x61, 0xad, - 0x95, 0x66, 0x62, 0xaf, 0x94, 0x66, 0x63, 0xad, 0x95, 0x66, 0x63, 0xaf, - 0x94, 0x66, 0x64, 0xad, 0x95, 0x66, 0x65, 0xaf, 0x94, 0x66, 0x66, 0xad, - 0x95, 0x66, 0x66, 0xaf, 0x94, 0x66, 0x67, 0xad, 0x95, 0x66, 0x68, 0xaf, - 0x94, 0x66, 0x68, 0xad, 0x95, 0x66, 0x69, 0xaf, 0x94, 0x66, 0x6a, 0xad, - 0x95, 0x66, 0x6a, 0xaf, 0x94, 0x66, 0x6b, 0xad, 0x95, 0x66, 0x6c, 0xaf, - 0x94, 0x66, 0x6c, 0xad, 0x95, 0x66, 0x6d, 0xaf, 0x94, 0x66, 0x6e, 0xad, - 0x95, 0x66, 0x6e, 0xaf, 0x94, 0x66, 0x6f, 0xad, 0x95, 0x66, 0x70, 0xaf, - 0x94, 0x66, 0x70, 0xad, 0x95, 0x66, 0x71, 0xaf, 0x94, 0x66, 0x72, 0xad, - 0x95, 0x66, 0x72, 0xaf, 0x94, 0x66, 0x73, 0xad, 0x95, 0x66, 0x73, 0xaf, - 0x94, 0x66, 0x74, 0xad, 0x95, 0x66, 0x75, 0xaa, 0x95, 0x66, 0x75, 0xad, - 0x95, 0x66, 0x76, 0xaa, 0x95, 0x66, 0x76, 0xad, 0x95, 0x66, 0x77, 0xaa, - 0x95, 0x66, 0x78, 0xad, 0x95, 0x66, 0x78, 0xaa, 0x95, 0x66, 0x79, 0xad, - 0x95, 0x66, 0x79, 0xaa, 0x95, 0x66, 0x7a, 0xad, 0x95, 0x66, 0x7a, 0xaa, - 0x95, 0x66, 0x7b, 0xad, 0x95, 0x66, 0x7c, 0xaa, 0x95, 0x66, 0x7c, 0xad, - 0x95, 0x66, 0x7d, 0xaa, 0x95, 0x66, 0x7d, 0xad, 0x95, 0x66, 0x7e, 0xaa, - 0x95, 0x66, 0x7e, 0xad, 0x95, 0x66, 0x7f, 0xaa, 0x95, 0x66, 0x7f, 0xad, - 0x95, 0x66, 0x80, 0xaa, 0x95, 0x66, 0x81, 0xad, 0x95, 0x66, 0x81, 0xaa, - 0x95, 0x66, 0x82, 0xad, 0x95, 0x66, 0x82, 0xaa, 0x95, 0x66, 0x83, 0xad, - 0x95, 0x66, 0x83, 0xaa, 0x95, 0x66, 0x84, 0xad, 0x95, 0x66, 0x84, 0xaa, - 0x95, 0x66, 0x85, 0xad, 0x95, 0x66, 0x85, 0xaa, 0x95, 0x66, 0x86, 0xad, - 0x95, 0x66, 0x86, 0xaa, 0x95, 0x66, 0x87, 0xad, 0x95, 0x66, 0x87, 0xaa, - 0x95, 0x66, 0x88, 0xad, 0x95, 0x66, 0x88, 0xaa, 0x95, 0x66, 0x89, 0xad, - 0x95, 0x66, 0x89, 0xaa, 0x95, 0x66, 0x8a, 0xad, 0x95, 0x66, 0x8a, 0xaa, - 0x95, 0x66, 0x8b, 0xaa, 0x96, 0x66, 0x8b, 0xaa, 0x95, 0x66, 0x8c, 0xaa, - 0x96, 0x66, 0x8c, 0xaa, 0x95, 0x66, 0x8d, 0xaa, 0x96, 0x66, 0x8d, 0xaa, - 0x95, 0x66, 0x8e, 0xaa, 0x96, 0x66, 0x8e, 0xaa, 0x95, 0x66, 0x8e, 0xaa, - 0x96, 0x66, 0x8f, 0xaa, 0x95, 0x66, 0x8f, 0xaa, 0x96, 0x66, 0x90, 0xaa, - 0x95, 0x66, 0x90, 0xaa, 0x96, 0x66, 0x91, 0xaa, 0x95, 0x66, 0x91, 0xaa, - 0x96, 0x66, 0x92, 0xaa, 0x95, 0x66, 0x92, 0xaa, 0x96, 0x66, 0x93, 0xaa, - 0x95, 0x66, 0x93, 0xaa, 0x96, 0x66, 0x94, 0xaa, 0x95, 0x66, 0x94, 0xaa, - 0x96, 0x66, 0x94, 0xaa, 0x95, 0x66, 0x95, 0xaa, 0x96, 0x66, 0x95, 0xaa, - 0x95, 0x66, 0x95, 0xaa, 0x96, 0x66, 0x95, 0xaa, 0x96, 0x66, 0x95, 0xaa, - 0x97, 0x66, 0x95, 0xaa, 0x97, 0x66, 0x99, 0xaa, 0x98, 0x66, 0x99, 0xaa, - 0x98, 0x67, 0x99, 0xaa, 0x98, 0x66, 0x9a, 0xaa, 0x99, 0x66, 0x99, 0xaa, - 0x98, 0x66, 0x9a, 0xaa, 0x99, 0x66, 0x9a, 0xaa, 0x98, 0x66, 0x9a, 0xaa, - 0x99, 0x66, 0x9b, 0xa8, 0x99, 0x66, 0x9b, 0xaa, 0x99, 0x66, 0x9c, 0xa8, - 0x99, 0x66, 0x9c, 0xaa, 0x99, 0x66, 0x9d, 0xa8, 0x99, 0x66, 0x9d, 0xaa, - 0x99, 0x66, 0x9d, 0xa8, 0x99, 0x66, 0x9e, 0xae, 0x9e, 0x66, 0x9e, 0xae, - 0x9e, 0x66, 0x9f, 0xae, 0x9f, 0x66, 0x9f, 0xae, 0x9e, 0x66, 0x9f, 0xae, - 0x9f, 0x66, 0xa0, 0xae, 0x9e, 0x66, 0xa0, 0xae, 0x9f, 0x66, 0xa1, 0xae, - 0x9e, 0x66, 0xa1, 0xae, 0x9f, 0x66, 0xa1, 0xaf, 0xa1, 0x66, 0xa2, 0xaf, - 0xa2, 0x66, 0xa2, 0xaf, 0xa2, 0x66, 0xa3, 0xaf, 0xa3, 0x66, 0xa3, 0xaf, - 0xa3, 0x66, 0xa3, 0xaf, 0xa3, 0x66, 0xa4, 0xaf, 0xa3, 0x66, 0xa4, 0xaf, - 0xa3, 0x66, 0xa5, 0xaf, 0xa3, 0x66, 0xa5, 0xaf, 0xa3, 0x66, 0xa5, 0xaf, - 0xa3, 0x66, 0xa6, 0xaf, 0xa6, 0x66, 0xa6, 0xaf, 0xa6, 0x66, 0xa6, 0xaf, - 0xa6, 0x66, 0xa7, 0xaf, 0xa7, 0x66, 0xa7, 0xaf, 0xa7, 0x66, 0xa8, 0xaf, - 0xa8, 0x66, 0xa8, 0xaf, 0xa7, 0x66, 0xa8, 0xaf, 0xa8, 0x66, 0xa9, 0xaf, - 0xa7, 0x66, 0xa9, 0xaf, 0xa8, 0x66, 0xaa, 0xaf, 0xa7, 0x66, 0xaa, 0xaf, - 0xa8, 0x66, 0xaa, 0xaf, 0xa7, 0x66, 0xab, 0xaf, 0xa8, 0x66, 0xab, 0xb0, - 0xab, 0x66, 0xab, 0xb0, 0xab, 0x66, 0xac, 0xb0, 0xac, 0x66, 0xac, 0xb0, - 0xab, 0x66, 0xac, 0xb0, 0xac, 0x66, 0xad, 0xb0, 0xab, 0x66, 0xad, 0xb0, - 0xac, 0x66, 0xae, 0xb0, 0xab, 0x66, 0xae, 0xb0, 0xac, 0x66, 0xae, 0xb0, - 0xab, 0x66, 0xaf, 0xb0, 0xac, 0x66, 0xaf, 0xb1, 0xaf, 0x66, 0xaf, 0xb1, - 0xaf, 0x66, 0xb0, 0xb1, 0xb0, 0x66, 0xb0, 0xb1, 0xaf, 0x66, 0xb0, 0xb1, - 0xb0, 0x66, 0xb1, 0xb1, 0xaf, 0x66, 0xb1, 0xb1, 0xb0, 0x66, 0xb2, 0xb1, - 0xaf, 0x66, 0xb2, 0xb1, 0xb0, 0x66, 0xb2, 0xb1, 0xaf, 0x66, 0xb3, 0xb1, - 0xb0, 0x66, 0xb3, 0xb2, 0xb3, 0x66, 0xb3, 0xb2, 0xb3, 0x66, 0xb4, 0xb2, - 0xb4, 0x66, 0xb4, 0xb2, 0xb3, 0x66, 0xb4, 0xb2, 0xb4, 0x66, 0xb5, 0xb2, - 0xb3, 0x66, 0xb5, 0xb2, 0xb4, 0x66, 0xb5, 0xb2, 0xb3, 0x66, 0xb6, 0xb2, - 0xb4, 0x66, 0xb6, 0xb2, 0xb3, 0x66, 0xb6, 0xb2, 0xb4, 0x66, 0xb7, 0xb2, - 0xb7, 0x66, 0xb7, 0xb2, 0xb7, 0x66, 0xb7, 0xb2, 0xb7, 0x66, 0xb8, 0xb2, - 0xb7, 0x66, 0xb8, 0xb2, 0xb7, 0x66, 0xb8, 0xb2, 0xb7, 0x66, 0xb9, 0xb2, - 0xb7, 0x66, 0xb9, 0xb2, 0xb7, 0x66, 0xb9, 0xb2, 0xb7, 0x66, 0xba, 0xb2, - 0xb7, 0x66, 0xba, 0xb2, 0xb7, 0x66, 0xba, 0xb3, 0xba, 0x66, 0xbb, 0xb3, - 0xbb, 0x66, 0xbb, 0xb3, 0xbb, 0x66, 0xbb, 0xb3, 0xbb, 0x66, 0xbc, 0xb3, - 0xbb, 0x66, 0xbc, 0xb3, 0xbb, 0x66, 0xbc, 0xb3, 0xbb, 0x66, 0xbd, 0xb3, - 0xbb, 0x66, 0xbd, 0xb3, 0xbb, 0x66, 0xbd, 0xb3, 0xbb, 0x66, 0xbe, 0xb3, - 0xbb, 0x66, 0xbe, 0xb3, 0xbb, 0x66, 0xbe, 0xb3, 0xbb, 0x66, 0xbf, 0xb4, - 0xbf, 0x66, 0xbf, 0xb4, 0xbe, 0x66, 0xbf, 0xb4, 0xbf, 0x66, 0xc0, 0xb4, - 0xbe, 0x66, 0xc0, 0xb4, 0xbf, 0x66, 0xc0, 0xb4, 0xbe, 0x66, 0xc1, 0xb4, - 0xbf, 0x66, 0xc1, 0xb4, 0xbe, 0x66, 0xc1, 0xb4, 0xbf, 0x66, 0xc1, 0xb4, - 0xbe, 0x66, 0xc2, 0xb4, 0xbf, 0x66, 0xc2, 0xb4, 0xc2, 0x66, 0xc2, 0xb4, - 0xc2, 0x66, 0xc3, 0xb4, 0xc2, 0x66, 0xc3, 0xb4, 0xc2, 0x66, 0xc3, 0xb4, - 0xc2, 0x66, 0xc4, 0xb4, 0xc2, 0x66, 0xc4, 0xb4, 0xc2, 0x66, 0xc4, 0xb4, - 0xc2, 0x66, 0xc5, 0xb4, 0xc2, 0x66, 0xc5, 0xb4, 0xc2, 0x66, 0xc5, 0xb4, - 0xc2, 0x66, 0xc6, 0xb5, 0xc6, 0x66, 0xc6, 0xb5, 0xc6, 0x66, 0xc6, 0xb5, - 0xc6, 0x66, 0xc6, 0xb5, 0xc6, 0x66, 0xc7, 0xb5, 0xc6, 0x66, 0xc7, 0xad, - 0xd0, 0x66, 0xc7, 0xab, 0xd0, 0x66, 0xc8, 0xad, 0xd0, 0x66, 0xc8, 0xab, - 0xd0, 0x66, 0xc8, 0xad, 0xd0, 0x66, 0xc9, 0xab, 0xd0, 0x66, 0xc9, 0xad, - 0xd0, 0x66, 0xc9, 0xab, 0xd0, 0x66, 0xc9, 0xaa, 0xd0, 0x66, 0xca, 0xab, - 0xd0, 0x66, 0xca, 0xaa, 0xd0, 0x66, 0xca, 0xab, 0xd0, 0x66, 0xcb, 0xaa, - 0xd0, 0x66, 0xcb, 0xab, 0xd0, 0x66, 0xcb, 0xaa, 0xd0, 0x66, 0xcc, 0xab, - 0xd0, 0x66, 0xcc, 0xaa, 0xd0, 0x66, 0xcc, 0xab, 0xd0, 0x66, 0xcc, 0xaa, - 0xd0, 0x66, 0xcd, 0xab, 0xd0, 0x66, 0xcd, 0xaa, 0xd0, 0x66, 0xcd, 0xab, - 0xd0, 0x66, 0xce, 0xaa, 0xd0, 0x66, 0xce, 0xab, 0xd0, 0x66, 0xce, 0xaa, - 0xd0, 0x66, 0xce, 0xab, 0xd0, 0x66, 0xcf, 0xaa, 0xd0, 0x66, 0xcf, 0xab, - 0xd0, 0x66, 0xcf, 0xaa, 0xd0, 0x66, 0xd0, 0xaa, 0xd1, 0x66, 0xd0, 0xaa, - 0xd0, 0x66, 0xd0, 0xaa, 0xd1, 0x66, 0xd0, 0xaa, 0xd0, 0x65, 0xd0, 0xaa, - 0xd1, 0x66, 0xd0, 0xaa, 0xd1, 0x65, 0xd0, 0xaa, 0xd1, 0x66, 0xd0, 0xaa, - 0xd2, 0x65, 0xd0, 0xaa, 0xd2, 0x66, 0xd0, 0xaa, 0xd2, 0x65, 0xd0, 0xaa, - 0xd2, 0x66, 0xd0, 0xaa, 0xd3, 0x65, 0xd0, 0xaa, 0xd3, 0x66, 0xd0, 0xaa, - 0xd3, 0x65, 0xd0, 0xaa, 0xd4, 0x66, 0xd0, 0xaa, 0xd4, 0x65, 0xd0, 0xaa, - 0xd4, 0x66, 0xd0, 0xaa, 0xd4, 0x65, 0xd0, 0xaa, 0xd5, 0x66, 0xd0, 0xaa, - 0xd5, 0x65, 0xd1, 0xaa, 0xd5, 0x62, 0xd0, 0xaa, 0xd6, 0x65, 0xd1, 0xaa, - 0xd6, 0x62, 0xd0, 0xaa, 0xd6, 0x65, 0xd1, 0xaa, 0xd6, 0x62, 0xd0, 0xaa, - 0xd7, 0x65, 0xd1, 0xaa, 0xd7, 0x62, 0xd0, 0xaa, 0xd7, 0x65, 0xd1, 0xaa, - 0xd7, 0x62, 0xd0, 0xaa, 0xd8, 0x65, 0xd1, 0xaa, 0xd8, 0x62, 0xd0, 0xaa, - 0xd8, 0x65, 0xd1, 0xaa, 0xd9, 0x62, 0xd0, 0xaa, 0xd9, 0x65, 0xd1, 0xaa, - 0xd9, 0x62, 0xd0, 0xaa, 0xd9, 0x65, 0xd1, 0xaa, 0xda, 0x62, 0xd0, 0xaa, - 0xda, 0x65, 0xd1, 0xaa, 0xda, 0x62, 0xd0, 0xaa, 0xda, 0x65, 0xd1, 0xaa, - 0xdb, 0x62, 0xd0, 0xaa, 0xdb, 0x65, 0xd1, 0xaa, 0xdb, 0x62, 0xd0, 0xaa, - 0xdb, 0x65, 0xd1, 0xaa, 0xdc, 0x62, 0xd0, 0xaa, 0xdc, 0x65, 0xd1, 0xaa, - 0xdc, 0x62, 0xd0, 0xaa, 0xdd, 0x65, 0xd1, 0xaa, 0xdd, 0x62, 0xdf, 0xaa, - 0xdd, 0x50, 0xdf, 0xaa, 0xdd, 0x50, 0xdf, 0xaa, 0xde, 0x50, 0xdf, 0xaa, - 0xde, 0x50, 0xdf, 0xaa, 0xde, 0x50, 0xdf, 0xaa, 0xde, 0x50, 0xe2, 0xaa, - 0xdf, 0x51, 0xe2, 0xaa, 0xdf, 0x51, 0xe2, 0xaa, 0xdf, 0x51, 0xe2, 0xaa, - 0xdf, 0x51, 0xe2, 0xaa, 0xe0, 0x51, 0xe2, 0xaa, 0xe0, 0x51, 0xe2, 0xaa, - 0xe0, 0x51, 0xe4, 0xaa, 0xe1, 0x52, 0xe2, 0xaa, 0xe1, 0x51, 0xe4, 0xaa, - 0xe1, 0x52, 0xe4, 0xaa, 0xe1, 0x52, 0xe4, 0xaa, 0xe2, 0x52, 0xec, 0xaa, - 0xe2, 0x67, 0xec, 0xaa, 0xe2, 0x6b, 0xec, 0xaa, 0xe2, 0x67, 0xec, 0xaa, - 0xe3, 0x6b, 0xec, 0xaa, 0xe3, 0x67, 0xec, 0xaa, 0xe3, 0x6b, 0xec, 0xaa, - 0xe3, 0x67, 0xec, 0xaa, 0xe4, 0x6b, 0xec, 0xaa, 0xe4, 0x67, 0xec, 0xaa, - 0xe4, 0x6b, 0xec, 0xaa, 0xe4, 0x67, 0xec, 0xaa, 0xe5, 0x6b, 0xec, 0xaa, - 0xe5, 0x67, 0xec, 0xaa, 0xe5, 0x6b, 0xec, 0xaa, 0xe5, 0x67, 0xec, 0xaa, - 0xe6, 0x6b, 0xec, 0xaa, 0xe6, 0x67, 0xec, 0xaa, 0xe6, 0x66, 0xec, 0xaa, - 0xe6, 0x67, 0xec, 0xaa, 0xe7, 0x66, 0xec, 0xaa, 0xe7, 0x67, 0xec, 0xaa, - 0xe7, 0x66, 0xec, 0xaa, 0xe7, 0x67, 0xec, 0xaa, 0xe8, 0x66, 0xec, 0xaa, - 0xe8, 0x67, 0xec, 0xaa, 0xe8, 0x66, 0xec, 0xaa, 0xe8, 0x67, 0xec, 0xaa, - 0xe9, 0x66, 0xec, 0xaa, 0xe9, 0x67, 0xec, 0xaa, 0xe9, 0x66, 0xec, 0xaa, - 0xe9, 0x67, 0xec, 0xaa, 0xea, 0x66, 0xec, 0xaa, 0xea, 0x67, 0xec, 0xaa, - 0xea, 0x66, 0xec, 0xaa, 0xea, 0x67, 0xec, 0xaa, 0xeb, 0x66, 0xec, 0xaa, - 0xeb, 0x67, 0xec, 0xaa, 0xeb, 0x66, 0xec, 0xaa, 0xeb, 0x67, 0xec, 0xaa, - 0xec, 0x66, 0xec, 0xaa, 0xec, 0x67, 0xec, 0xa9, 0xec, 0x66, 0xec, 0xa9, - 0xec, 0x66, 0xec, 0xa9, 0xec, 0x66, 0xed, 0xa9, 0xed, 0x66, 0xed, 0xa9, - 0xed, 0x66, 0xed, 0xa9, 0xed, 0x66, 0xed, 0xa9, 0xed, 0x66, 0xee, 0xa9, - 0xee, 0x66, 0xee, 0xa9, 0xee, 0x66, 0xee, 0xa9, 0xee, 0x66, 0xee, 0xa9, - 0xee, 0x66, 0xef, 0xa9, 0xef, 0x66, 0xef, 0xa9, 0xef, 0x66, 0xef, 0xa9, - 0xef, 0x66, 0xef, 0xaa, 0xef, 0x67, 0xf0, 0xaa, 0xf0, 0x67, 0xf0, 0xaa, - 0xf0, 0x67, 0xf0, 0xaa, 0xf0, 0x67, 0xf0, 0xaa, 0xf0, 0x67, 0xf1, 0xaa, - 0xf1, 0x67, 0xf1, 0xaa, 0xf1, 0x67, 0xf1, 0xaa, 0xf1, 0x67, 0xf1, 0xaa, - 0xf1, 0x67, 0xf2, 0xaa, 0xf2, 0x67, 0xf2, 0xaa, 0xf2, 0x67, 0xf2, 0xaa, - 0xf2, 0x67, 0xf2, 0xaa, 0xf2, 0x67, 0xf2, 0xaa, 0xf2, 0x67, 0xf3, 0xaa, - 0xf3, 0x67, 0xf3, 0xaa, 0xf3, 0x67, 0xf3, 0xaa, 0xf3, 0x67, 0xf3, 0xaa, - 0xf3, 0x67, 0xf4, 0xaa, 0xf4, 0x68, 0xf4, 0xaa, 0xf4, 0x68, 0xf4, 0xaa, - 0xf4, 0x68, 0xf4, 0xaa, 0xf4, 0x68, 0xf5, 0xaa, 0xf5, 0x68, 0xf5, 0xaa, - 0xf5, 0x68, 0xf5, 0xaa, 0xf5, 0x68, 0xf5, 0xaa, 0xf5, 0x68, 0xf5, 0xaa, - 0xf5, 0x68, 0xf6, 0xaa, 0xf6, 0x68, 0xf6, 0xaa, 0xf6, 0x68, 0xf6, 0xaa, - 0xf6, 0x68, 0xf6, 0xaa, 0xf6, 0x68, 0xf6, 0xaa, 0xf7, 0x68, 0xf6, 0xaa, - 0xf7, 0x68, 0xf6, 0xaa, 0xf7, 0x68, 0xf6, 0xaa, 0xf7, 0x68, 0xf6, 0xaa, - 0xf8, 0x68, 0xf6, 0xaa, 0xf8, 0x68, 0xf6, 0xaa, 0xf8, 0x68, 0xf6, 0xaa, - 0xf8, 0x68, 0xf6, 0xaa, 0xf8, 0x68, 0xfb, 0xaa, 0xf9, 0x67, 0xfb, 0xaa, - 0xf9, 0x66, 0xfb, 0xaa, 0xf9, 0x67, 0xfb, 0xaa, 0xf9, 0x66, 0xfb, 0xaa, - 0xfa, 0x67, 0xfb, 0xaa, 0xfa, 0x66, 0xfb, 0xaa, 0xfa, 0x67, 0xfb, 0xaa, - 0xfa, 0x66, 0xfb, 0xaa, 0xfa, 0x67, 0xfb, 0xaa, 0xfb, 0x66, 0xfb, 0xaa, - 0xfb, 0x66, 0xfb, 0xaa, 0xfb, 0x66, 0xfb, 0xaa, 0xfb, 0x66, 0xfc, 0xaa, - 0xfb, 0x66, 0xfc, 0xaa, 0xfb, 0x66, 0xfc, 0xaa, 0xfb, 0x66, 0xfc, 0xaa, - 0xfb, 0x66, 0xfc, 0xaa, 0xfb, 0x66, 0xfd, 0xaa, 0xfb, 0x66, 0xfd, 0xa7, - 0xfb, 0x66, 0xfd, 0xaa, 0xfb, 0x66, 0xfd, 0xa7, 0xfb, 0x66, 0xfe, 0xaa, - 0xfb, 0x66, 0xfe, 0xa7, 0xfb, 0x66, 0xfe, 0xaa, 0xfb, 0x66, 0xfe, 0xa7, - 0xfb, 0x66, 0xfe, 0xaa, 0xfb, 0x66, 0xff, 0xa7, 0xfb, 0x66, 0xff, 0xaa, - 0xfb, 0x66, 0x03, 0xb4, 0x94, 0x66, 0x0a, 0xb2, 0x94, 0x66, 0x0f, 0xb4, - 0x94, 0x66, 0x14, 0xb2, 0x94, 0x66, 0x17, 0xaf, 0x94, 0x66, 0x1b, 0xb2, - 0x94, 0x66, 0x1e, 0xaf, 0x94, 0x66, 0x20, 0xb2, 0x94, 0x66, 0x23, 0xaf, - 0x94, 0x66, 0x25, 0xb2, 0x94, 0x66, 0x27, 0xaf, 0x94, 0x66, 0x29, 0xb2, - 0x94, 0x66, 0x2b, 0xaf, 0x94, 0x66, 0x2d, 0xb2, 0x94, 0x66, 0x2f, 0xaf, - 0x94, 0x66, 0x31, 0xb2, 0x94, 0x66, 0x32, 0xaf, 0x94, 0x66, 0x34, 0xb2, - 0x94, 0x66, 0x35, 0xaf, 0x94, 0x66, 0x37, 0xb2, 0x94, 0x66, 0x38, 0xaf, - 0x94, 0x66, 0x3a, 0xb2, 0x94, 0x66, 0x3b, 0xaf, 0x94, 0x66, 0x3c, 0xb2, - 0x94, 0x66, 0x3e, 0xaf, 0x94, 0x66, 0x3f, 0xb2, 0x94, 0x66, 0x40, 0xaf, - 0x94, 0x66, 0x42, 0xb2, 0x94, 0x66, 0x43, 0xaf, 0x94, 0x66, 0x44, 0xb2, - 0x94, 0x66, 0x45, 0xaf, 0x94, 0x66, 0x46, 0xb2, 0x94, 0x66, 0x47, 0xaf, - 0x94, 0x66, 0x48, 0xb2, 0x94, 0x66, 0x49, 0xaf, 0x94, 0x66, 0x4a, 0xb2, - 0x94, 0x66, 0x4b, 0xaf, 0x94, 0x66, 0x4c, 0xb2, 0x94, 0x66, 0x4d, 0xaf, - 0x94, 0x66, 0x4e, 0xb2, 0x94, 0x66, 0x4f, 0xaf, 0x94, 0x66, 0x50, 0xb2, - 0x94, 0x66, 0x51, 0xaf, 0x94, 0x66, 0x52, 0xb2, 0x94, 0x66, 0x53, 0xaf, - 0x94, 0x66, 0x54, 0xb2, 0x94, 0x66, 0x55, 0xaf, 0x94, 0x66, 0x56, 0xb2, - 0x94, 0x66, 0x57, 0xaf, 0x94, 0x66, 0x58, 0xad, 0x95, 0x66, 0x58, 0xaf, - 0x94, 0x66, 0x59, 0xad, 0x95, 0x66, 0x5a, 0xaf, 0x94, 0x66, 0x5b, 0xad, - 0x95, 0x66, 0x5c, 0xaf, 0x94, 0x66, 0x5d, 0xad, 0x95, 0x66, 0x5d, 0xaf, - 0x94, 0x66, 0x5e, 0xad, 0x95, 0x66, 0x5f, 0xaf, 0x94, 0x66, 0x60, 0xad, - 0x95, 0x66, 0x60, 0xaf, 0x94, 0x66, 0x61, 0xad, 0x95, 0x66, 0x62, 0xaf, - 0x94, 0x66, 0x63, 0xad, 0x95, 0x66, 0x63, 0xaf, 0x94, 0x66, 0x64, 0xad, - 0x95, 0x66, 0x65, 0xaf, 0x94, 0x66, 0x66, 0xad, 0x95, 0x66, 0x66, 0xaf, - 0x94, 0x66, 0x67, 0xad, 0x95, 0x66, 0x68, 0xaf, 0x94, 0x66, 0x68, 0xad, - 0x95, 0x66, 0x69, 0xaf, 0x94, 0x66, 0x6a, 0xad, 0x95, 0x66, 0x6a, 0xaf, - 0x94, 0x66, 0x6b, 0xad, 0x95, 0x66, 0x6c, 0xaf, 0x94, 0x66, 0x6c, 0xad, - 0x95, 0x66, 0x6d, 0xaf, 0x94, 0x66, 0x6e, 0xad, 0x95, 0x66, 0x6e, 0xaf, - 0x94, 0x66, 0x6f, 0xad, 0x95, 0x66, 0x70, 0xaf, 0x94, 0x66, 0x70, 0xad, - 0x95, 0x66, 0x71, 0xaf, 0x94, 0x66, 0x72, 0xad, 0x95, 0x66, 0x72, 0xaf, - 0x94, 0x66, 0x73, 0xad, 0x95, 0x66, 0x73, 0xaf, 0x94, 0x66, 0x74, 0xad, - 0x95, 0x66, 0x75, 0xaf, 0x94, 0x66, 0x75, 0xad, 0x95, 0x66, 0x76, 0xaf, - 0x94, 0x66, 0x76, 0xad, 0x95, 0x66, 0x77, 0xaf, 0x94, 0x66, 0x78, 0xad, - 0x95, 0x66, 0x78, 0xaf, 0x94, 0x66, 0x79, 0xad, 0x95, 0x66, 0x79, 0xaf, - 0x94, 0x66, 0x7a, 0xad, 0x95, 0x66, 0x7a, 0xaf, 0x94, 0x66, 0x7b, 0xad, - 0x95, 0x66, 0x7c, 0xaf, 0x94, 0x66, 0x7c, 0xad, 0x95, 0x66, 0x7d, 0xaf, - 0x94, 0x66, 0x7d, 0xad, 0x95, 0x66, 0x7e, 0xab, 0x95, 0x66, 0x7e, 0xad, - 0x95, 0x66, 0x7f, 0xab, 0x95, 0x66, 0x7f, 0xad, 0x95, 0x66, 0x80, 0xab, - 0x95, 0x66, 0x81, 0xad, 0x95, 0x66, 0x81, 0xab, 0x95, 0x66, 0x82, 0xad, - 0x95, 0x66, 0x82, 0xab, 0x95, 0x66, 0x83, 0xad, 0x95, 0x66, 0x83, 0xab, - 0x95, 0x66, 0x84, 0xad, 0x95, 0x66, 0x84, 0xab, 0x95, 0x66, 0x85, 0xad, - 0x95, 0x66, 0x85, 0xab, 0x95, 0x66, 0x86, 0xad, 0x95, 0x66, 0x86, 0xab, - 0x95, 0x66, 0x87, 0xad, 0x95, 0x66, 0x87, 0xab, 0x95, 0x66, 0x88, 0xad, - 0x95, 0x66, 0x88, 0xab, 0x95, 0x66, 0x89, 0xad, 0x95, 0x66, 0x89, 0xab, - 0x95, 0x66, 0x8a, 0xad, 0x95, 0x66, 0x8a, 0xab, 0x95, 0x66, 0x8b, 0xad, - 0x95, 0x66, 0x8b, 0xab, 0x95, 0x66, 0x8c, 0xad, 0x95, 0x66, 0x8c, 0xab, - 0x95, 0x66, 0x8d, 0xad, 0x95, 0x66, 0x8d, 0xab, 0x95, 0x66, 0x8e, 0xad, - 0x95, 0x66, 0x8e, 0xab, 0x95, 0x66, 0x8e, 0xaa, 0x96, 0x66, 0x8f, 0xab, - 0x95, 0x66, 0x8f, 0xaa, 0x96, 0x66, 0x90, 0xab, 0x95, 0x66, 0x90, 0xaa, - 0x96, 0x66, 0x91, 0xab, 0x95, 0x66, 0x91, 0xaa, 0x96, 0x66, 0x92, 0xab, - 0x95, 0x66, 0x92, 0xaa, 0x96, 0x66, 0x93, 0xab, 0x95, 0x66, 0x93, 0xaa, - 0x96, 0x66, 0x94, 0xab, 0x95, 0x66, 0x94, 0xaa, 0x96, 0x66, 0x94, 0xab, - 0x95, 0x66, 0x95, 0xaa, 0x96, 0x66, 0x95, 0xab, 0x95, 0x66, 0x95, 0xaa, - 0x96, 0x66, 0x95, 0xaa, 0x96, 0x66, 0x95, 0xaa, 0x97, 0x66, 0x95, 0xaa, - 0x97, 0x66, 0x99, 0xaa, 0x98, 0x66, 0x99, 0xaa, 0x98, 0x67, 0x99, 0xaa, - 0x98, 0x66, 0x9a, 0xaa, 0x99, 0x66, 0x99, 0xaa, 0x98, 0x66, 0x9a, 0xaa, - 0x99, 0x66, 0x9a, 0xaa, 0x98, 0x66, 0x9a, 0xaa, 0x99, 0x66, 0x9b, 0xaa, - 0x98, 0x66, 0x9b, 0xaa, 0x99, 0x66, 0x9c, 0xaa, 0x98, 0x66, 0x9c, 0xaa, - 0x99, 0x66, 0x9d, 0xa8, 0x99, 0x66, 0x9d, 0xaa, 0x99, 0x66, 0x9d, 0xae, - 0x9d, 0x66, 0x9e, 0xae, 0x9c, 0x66, 0x9e, 0xae, 0x9d, 0x66, 0x9f, 0xae, - 0x9c, 0x66, 0x9f, 0xae, 0x9d, 0x66, 0x9f, 0xae, 0x9f, 0x66, 0xa0, 0xae, - 0xa0, 0x66, 0xa0, 0xae, 0xa0, 0x66, 0xa1, 0xae, 0xa1, 0x66, 0xa1, 0xae, - 0xa1, 0x66, 0xa1, 0xae, 0xa1, 0x66, 0xa2, 0xae, 0xa1, 0x66, 0xa2, 0xae, - 0xa1, 0x66, 0xa3, 0xae, 0xa1, 0x66, 0xa3, 0xae, 0xa1, 0x66, 0xa3, 0xae, - 0xa1, 0x66, 0xa4, 0xaf, 0xa4, 0x66, 0xa4, 0xaf, 0xa4, 0x66, 0xa5, 0xaf, - 0xa5, 0x66, 0xa5, 0xaf, 0xa5, 0x66, 0xa5, 0xaf, 0xa5, 0x66, 0xa6, 0xaf, - 0xa5, 0x66, 0xa6, 0xaf, 0xa5, 0x66, 0xa6, 0xaf, 0xa5, 0x66, 0xa7, 0xaf, - 0xa5, 0x66, 0xa7, 0xaf, 0xa5, 0x66, 0xa8, 0xaf, 0xa5, 0x66, 0xa8, 0xb0, - 0xa8, 0x66, 0xa8, 0xb0, 0xa8, 0x66, 0xa9, 0xb0, 0xa9, 0x66, 0xa9, 0xb0, - 0xa9, 0x66, 0xaa, 0xb0, 0xaa, 0x66, 0xaa, 0xb0, 0xa9, 0x66, 0xaa, 0xb0, - 0xaa, 0x66, 0xab, 0xb0, 0xa9, 0x66, 0xab, 0xb0, 0xaa, 0x66, 0xab, 0xb0, - 0xa9, 0x66, 0xac, 0xb0, 0xaa, 0x66, 0xac, 0xb0, 0xa9, 0x66, 0xac, 0xb0, - 0xaa, 0x66, 0xad, 0xb0, 0xad, 0x66, 0xad, 0xb0, 0xad, 0x66, 0xae, 0xb0, - 0xae, 0x66, 0xae, 0xb0, 0xad, 0x66, 0xae, 0xb0, 0xae, 0x66, 0xaf, 0xb0, - 0xad, 0x66, 0xaf, 0xb0, 0xae, 0x66, 0xaf, 0xb0, 0xad, 0x66, 0xb0, 0xb0, - 0xae, 0x66, 0xb0, 0xb0, 0xad, 0x66, 0xb0, 0xb0, 0xae, 0x66, 0xb1, 0xb1, - 0xb1, 0x66, 0xb1, 0xb1, 0xb1, 0x66, 0xb2, 0xb1, 0xb2, 0x66, 0xb2, 0xb1, - 0xb1, 0x66, 0xb2, 0xb1, 0xb2, 0x66, 0xb3, 0xb1, 0xb1, 0x66, 0xb3, 0xb1, - 0xb2, 0x66, 0xb3, 0xb1, 0xb1, 0x66, 0xb4, 0xb1, 0xb2, 0x66, 0xb4, 0xb1, - 0xb1, 0x66, 0xb4, 0xb1, 0xb2, 0x66, 0xb5, 0xb2, 0xb5, 0x66, 0xb5, 0xb2, - 0xb5, 0x66, 0xb5, 0xb2, 0xb5, 0x66, 0xb6, 0xb2, 0xb5, 0x66, 0xb6, 0xb2, - 0xb5, 0x66, 0xb6, 0xb2, 0xb5, 0x66, 0xb7, 0xb2, 0xb5, 0x66, 0xb7, 0xb2, - 0xb5, 0x66, 0xb7, 0xb2, 0xb5, 0x66, 0xb8, 0xb2, 0xb5, 0x66, 0xb8, 0xb2, - 0xb5, 0x66, 0xb8, 0xb3, 0xb8, 0x66, 0xb9, 0xb3, 0xb9, 0x66, 0xb9, 0xb3, - 0xb9, 0x66, 0xb9, 0xb3, 0xb9, 0x66, 0xba, 0xb3, 0xb9, 0x66, 0xba, 0xb3, - 0xb9, 0x66, 0xba, 0xb3, 0xb9, 0x66, 0xbb, 0xb3, 0xb9, 0x66, 0xbb, 0xb3, - 0xb9, 0x66, 0xbb, 0xb3, 0xb9, 0x66, 0xbc, 0xb3, 0xb9, 0x66, 0xbc, 0xb3, - 0xb9, 0x66, 0xbc, 0xb3, 0xbc, 0x66, 0xbd, 0xb3, 0xbd, 0x66, 0xbd, 0xb3, - 0xbd, 0x66, 0xbd, 0xb3, 0xbd, 0x66, 0xbe, 0xb3, 0xbd, 0x66, 0xbe, 0xb3, - 0xbd, 0x66, 0xbe, 0xb3, 0xbd, 0x66, 0xbf, 0xb3, 0xbd, 0x66, 0xbf, 0xb3, - 0xbd, 0x66, 0xbf, 0xb3, 0xbd, 0x66, 0xc0, 0xb3, 0xbd, 0x66, 0xc0, 0xb3, - 0xbd, 0x66, 0xc0, 0xb3, 0xbd, 0x66, 0xc1, 0xb4, 0xc1, 0x66, 0xc1, 0xb4, - 0xc0, 0x66, 0xc1, 0xb4, 0xc1, 0x66, 0xc1, 0xb4, 0xc0, 0x66, 0xc2, 0xb4, - 0xc1, 0x66, 0xc2, 0xb4, 0xc0, 0x66, 0xc2, 0xb4, 0xc1, 0x66, 0xc3, 0xb4, - 0xc0, 0x66, 0xc3, 0xb4, 0xc1, 0x66, 0xc3, 0xb4, 0xc0, 0x66, 0xc4, 0xb4, - 0xc1, 0x66, 0xc4, 0xb5, 0xc4, 0x66, 0xc4, 0xb5, 0xc4, 0x66, 0xc5, 0xb5, - 0xc4, 0x66, 0xc5, 0xb5, 0xc4, 0x66, 0xc5, 0xb5, 0xc4, 0x66, 0xc6, 0xb5, - 0xc4, 0x66, 0xc6, 0xb5, 0xc4, 0x66, 0xc6, 0xb5, 0xc4, 0x66, 0xc6, 0xb5, - 0xc4, 0x66, 0xc7, 0xb5, 0xc4, 0x66, 0xc7, 0xb5, 0xc4, 0x66, 0xc7, 0xab, - 0xd0, 0x66, 0xc8, 0xae, 0xd0, 0x66, 0xc8, 0xab, 0xd0, 0x66, 0xc8, 0xae, - 0xd0, 0x66, 0xc9, 0xab, 0xd0, 0x66, 0xc9, 0xae, 0xd0, 0x66, 0xc9, 0xab, - 0xd0, 0x66, 0xc9, 0xaa, 0xd0, 0x66, 0xca, 0xab, 0xd0, 0x66, 0xca, 0xaa, - 0xd0, 0x66, 0xca, 0xab, 0xd0, 0x66, 0xcb, 0xaa, 0xd0, 0x66, 0xcb, 0xab, - 0xd0, 0x66, 0xcb, 0xaa, 0xd0, 0x66, 0xcc, 0xab, 0xd0, 0x66, 0xcc, 0xaa, - 0xd0, 0x66, 0xcc, 0xab, 0xd0, 0x66, 0xcc, 0xaa, 0xd0, 0x66, 0xcd, 0xab, - 0xd0, 0x66, 0xcd, 0xaa, 0xd0, 0x66, 0xcd, 0xab, 0xd0, 0x66, 0xce, 0xaa, - 0xd0, 0x66, 0xce, 0xab, 0xd0, 0x66, 0xce, 0xaa, 0xd0, 0x66, 0xce, 0xab, - 0xd0, 0x66, 0xcf, 0xaa, 0xd0, 0x66, 0xcf, 0xab, 0xd0, 0x66, 0xcf, 0xaa, - 0xd0, 0x66, 0xd0, 0xaa, 0xd1, 0x66, 0xd0, 0xaa, 0xd0, 0x66, 0xd0, 0xaa, - 0xd1, 0x66, 0xd0, 0xaa, 0xd0, 0x66, 0xd0, 0xaa, 0xd1, 0x66, 0xd0, 0xaa, - 0xd1, 0x66, 0xd0, 0xaa, 0xd1, 0x66, 0xd0, 0xaa, 0xd2, 0x64, 0xd0, 0xaa, - 0xd2, 0x66, 0xd0, 0xaa, 0xd2, 0x64, 0xd0, 0xaa, 0xd2, 0x66, 0xd0, 0xaa, - 0xd3, 0x64, 0xd0, 0xaa, 0xd3, 0x66, 0xd0, 0xaa, 0xd3, 0x64, 0xd0, 0xaa, - 0xd4, 0x66, 0xd0, 0xaa, 0xd4, 0x64, 0xd0, 0xaa, 0xd4, 0x66, 0xd0, 0xaa, - 0xd4, 0x64, 0xd0, 0xaa, 0xd5, 0x66, 0xd0, 0xaa, 0xd5, 0x64, 0xd0, 0xaa, - 0xd5, 0x66, 0xd0, 0xaa, 0xd6, 0x64, 0xd0, 0xaa, 0xd6, 0x66, 0xd0, 0xaa, - 0xd6, 0x64, 0xd0, 0xaa, 0xd6, 0x66, 0xd0, 0xaa, 0xd7, 0x64, 0xd0, 0xaa, - 0xd7, 0x66, 0xd0, 0xaa, 0xd7, 0x64, 0xd1, 0xaa, 0xd7, 0x61, 0xd0, 0xaa, - 0xd8, 0x64, 0xd1, 0xaa, 0xd8, 0x61, 0xd0, 0xaa, 0xd8, 0x64, 0xd1, 0xaa, - 0xd9, 0x61, 0xd0, 0xaa, 0xd9, 0x64, 0xd1, 0xaa, 0xd9, 0x61, 0xd0, 0xaa, - 0xd9, 0x64, 0xd1, 0xaa, 0xda, 0x61, 0xd0, 0xaa, 0xda, 0x64, 0xd1, 0xaa, - 0xda, 0x61, 0xd0, 0xaa, 0xda, 0x64, 0xd1, 0xaa, 0xdb, 0x61, 0xd0, 0xaa, - 0xdb, 0x64, 0xd1, 0xaa, 0xdb, 0x61, 0xd0, 0xaa, 0xdb, 0x64, 0xd1, 0xaa, - 0xdc, 0x61, 0xd0, 0xaa, 0xdc, 0x64, 0xd1, 0xaa, 0xdc, 0x61, 0xd0, 0xaa, - 0xdd, 0x64, 0xd1, 0xaa, 0xdd, 0x61, 0xde, 0xaa, 0xdd, 0x4f, 0xe1, 0xaa, - 0xdd, 0x50, 0xe1, 0xaa, 0xde, 0x50, 0xe1, 0xaa, 0xde, 0x50, 0xe1, 0xaa, - 0xde, 0x50, 0xe1, 0xaa, 0xde, 0x50, 0xe1, 0xaa, 0xdf, 0x50, 0xe1, 0xaa, - 0xdf, 0x50, 0xe3, 0xaa, 0xdf, 0x51, 0xe1, 0xaa, 0xdf, 0x50, 0xe3, 0xaa, - 0xe0, 0x51, 0xe3, 0xaa, 0xe0, 0x51, 0xe3, 0xaa, 0xe0, 0x51, 0xe3, 0xaa, - 0xe1, 0x51, 0xe3, 0xaa, 0xe1, 0x51, 0xe3, 0xaa, 0xe1, 0x51, 0xec, 0xaa, - 0xe1, 0x67, 0xec, 0xaa, 0xe2, 0x6b, 0xec, 0xaa, 0xe2, 0x67, 0xec, 0xaa, - 0xe2, 0x6b, 0xec, 0xaa, 0xe2, 0x67, 0xec, 0xaa, 0xe3, 0x6b, 0xec, 0xaa, - 0xe3, 0x67, 0xec, 0xaa, 0xe3, 0x6b, 0xec, 0xaa, 0xe3, 0x67, 0xec, 0xaa, - 0xe4, 0x6b, 0xec, 0xaa, 0xe4, 0x67, 0xec, 0xaa, 0xe4, 0x6b, 0xec, 0xaa, - 0xe4, 0x67, 0xec, 0xaa, 0xe5, 0x6b, 0xec, 0xaa, 0xe5, 0x67, 0xec, 0xaa, - 0xe5, 0x6b, 0xec, 0xaa, 0xe5, 0x67, 0xec, 0xaa, 0xe6, 0x6b, 0xec, 0xaa, - 0xe6, 0x67, 0xec, 0xaa, 0xe6, 0x66, 0xec, 0xaa, 0xe6, 0x67, 0xec, 0xaa, - 0xe7, 0x66, 0xec, 0xaa, 0xe7, 0x67, 0xec, 0xaa, 0xe7, 0x66, 0xec, 0xaa, - 0xe7, 0x67, 0xec, 0xaa, 0xe8, 0x66, 0xec, 0xaa, 0xe8, 0x67, 0xec, 0xaa, - 0xe8, 0x66, 0xec, 0xaa, 0xe8, 0x67, 0xec, 0xaa, 0xe9, 0x66, 0xec, 0xaa, - 0xe9, 0x67, 0xec, 0xaa, 0xe9, 0x66, 0xec, 0xaa, 0xe9, 0x67, 0xec, 0xaa, - 0xea, 0x66, 0xec, 0xaa, 0xea, 0x67, 0xec, 0xaa, 0xea, 0x66, 0xec, 0xaa, - 0xea, 0x67, 0xec, 0xaa, 0xeb, 0x66, 0xec, 0xaa, 0xeb, 0x67, 0xec, 0xaa, - 0xeb, 0x66, 0xec, 0xaa, 0xeb, 0x67, 0xec, 0xaa, 0xec, 0x66, 0xec, 0xaa, - 0xec, 0x67, 0xec, 0xaa, 0xec, 0x66, 0xec, 0xaa, 0xec, 0x66, 0xec, 0xa8, - 0xec, 0x66, 0xed, 0xa8, 0xed, 0x66, 0xed, 0xa9, 0xed, 0x66, 0xed, 0xa9, - 0xee, 0x66, 0xed, 0xa9, 0xed, 0x66, 0xee, 0xa9, 0xee, 0x66, 0xee, 0xa9, - 0xee, 0x66, 0xee, 0xa9, 0xee, 0x66, 0xee, 0xa9, 0xee, 0x66, 0xef, 0xa9, - 0xef, 0x66, 0xef, 0xa9, 0xef, 0x66, 0xef, 0xa9, 0xef, 0x66, 0xef, 0xa9, - 0xef, 0x66, 0xf0, 0xa9, 0xf0, 0x66, 0xf0, 0xa9, 0xf0, 0x66, 0xf0, 0xa9, - 0xf0, 0x66, 0xf0, 0xa9, 0xf0, 0x66, 0xf1, 0xa9, 0xf1, 0x66, 0xf1, 0xa9, - 0xf1, 0x66, 0xf1, 0xa9, 0xf1, 0x66, 0xf1, 0xaa, 0xf1, 0x67, 0xf2, 0xaa, - 0xf2, 0x67, 0xf2, 0xaa, 0xf2, 0x67, 0xf2, 0xaa, 0xf2, 0x67, 0xf2, 0xaa, - 0xf2, 0x67, 0xf2, 0xaa, 0xf2, 0x67, 0xf3, 0xaa, 0xf3, 0x67, 0xf3, 0xaa, - 0xf3, 0x67, 0xf3, 0xaa, 0xf3, 0x67, 0xf3, 0xaa, 0xf3, 0x67, 0xf4, 0xaa, - 0xf4, 0x67, 0xf4, 0xaa, 0xf4, 0x67, 0xf4, 0xaa, 0xf4, 0x67, 0xf4, 0xaa, - 0xf4, 0x67, 0xf5, 0xaa, 0xf5, 0x67, 0xf4, 0xaa, 0xf5, 0x67, 0xf5, 0xaa, - 0xf5, 0x67, 0xf5, 0xaa, 0xf5, 0x68, 0xf5, 0xaa, 0xf5, 0x68, 0xf6, 0xaa, - 0xf6, 0x68, 0xf6, 0xaa, 0xf6, 0x68, 0xf6, 0xaa, 0xf6, 0x68, 0xf6, 0xaa, - 0xf6, 0x68, 0xf6, 0xaa, 0xf7, 0x68, 0xf6, 0xaa, 0xf7, 0x68, 0xf6, 0xaa, - 0xf7, 0x68, 0xf6, 0xaa, 0xf7, 0x68, 0xf6, 0xaa, 0xf8, 0x68, 0xf6, 0xaa, - 0xf8, 0x68, 0xf6, 0xaa, 0xf8, 0x68, 0xf6, 0xaa, 0xf8, 0x68, 0xf6, 0xaa, - 0xf8, 0x68, 0xfb, 0xaa, 0xf9, 0x67, 0xfb, 0xaa, 0xf9, 0x69, 0xfb, 0xaa, - 0xf9, 0x67, 0xfb, 0xaa, 0xf9, 0x66, 0xfb, 0xaa, 0xfa, 0x67, 0xfb, 0xaa, - 0xfa, 0x66, 0xfb, 0xaa, 0xfa, 0x67, 0xfb, 0xaa, 0xfa, 0x66, 0xfb, 0xaa, - 0xfa, 0x67, 0xfb, 0xaa, 0xfb, 0x66, 0xfb, 0xaa, 0xfb, 0x66, 0xfb, 0xaa, - 0xfb, 0x66, 0xfb, 0xaa, 0xfb, 0x66, 0xfc, 0xaa, 0xfb, 0x66, 0xfc, 0xaa, - 0xfb, 0x66, 0xfc, 0xaa, 0xfb, 0x66, 0xfc, 0xaa, 0xfb, 0x66, 0xfc, 0xaa, - 0xfb, 0x66, 0xfd, 0xaa, 0xfb, 0x66, 0xfd, 0xa8, 0xfb, 0x66, 0xfd, 0xaa, - 0xfb, 0x66, 0xfd, 0xa8, 0xfb, 0x66, 0xfe, 0xaa, 0xfb, 0x66, 0xfe, 0xa8, - 0xfb, 0x66, 0xfe, 0xaa, 0xfb, 0x66, 0xfe, 0xa8, 0xfb, 0x66, 0xfe, 0xaa, - 0xfb, 0x66, 0xff, 0xa8, 0xfb, 0x66, 0xff, 0xaa, 0xfb, 0x66, 0x03, 0xb4, - 0x94, 0x67, 0x0a, 0xb2, 0x94, 0x67, 0x0f, 0xb4, 0x94, 0x67, 0x14, 0xb2, - 0x94, 0x67, 0x17, 0xb4, 0x94, 0x67, 0x1b, 0xb2, 0x94, 0x67, 0x1e, 0xb4, - 0x94, 0x67, 0x20, 0xb2, 0x94, 0x67, 0x23, 0xb4, 0x94, 0x67, 0x25, 0xb2, - 0x94, 0x67, 0x27, 0xb4, 0x94, 0x67, 0x29, 0xb2, 0x94, 0x67, 0x2b, 0xb4, - 0x94, 0x67, 0x2d, 0xb2, 0x94, 0x67, 0x2f, 0xb4, 0x94, 0x67, 0x31, 0xb2, - 0x94, 0x67, 0x32, 0xb4, 0x94, 0x67, 0x34, 0xb2, 0x94, 0x67, 0x35, 0xb4, - 0x94, 0x67, 0x37, 0xb2, 0x94, 0x67, 0x38, 0xb4, 0x94, 0x67, 0x3a, 0xb2, - 0x94, 0x67, 0x3b, 0xb4, 0x94, 0x67, 0x3c, 0xb2, 0x94, 0x67, 0x3e, 0xb4, - 0x94, 0x67, 0x3f, 0xb2, 0x94, 0x67, 0x40, 0xb4, 0x94, 0x67, 0x42, 0xb2, - 0x94, 0x67, 0x43, 0xb4, 0x94, 0x67, 0x44, 0xb2, 0x94, 0x67, 0x45, 0xb4, - 0x94, 0x67, 0x46, 0xb2, 0x94, 0x67, 0x47, 0xaf, 0x94, 0x67, 0x48, 0xb2, - 0x94, 0x67, 0x49, 0xaf, 0x94, 0x67, 0x4a, 0xb2, 0x94, 0x67, 0x4b, 0xaf, - 0x94, 0x67, 0x4c, 0xb2, 0x94, 0x67, 0x4d, 0xaf, 0x94, 0x67, 0x4e, 0xb2, - 0x94, 0x67, 0x4f, 0xaf, 0x94, 0x67, 0x50, 0xb2, 0x94, 0x67, 0x51, 0xaf, - 0x94, 0x67, 0x52, 0xb2, 0x94, 0x67, 0x53, 0xaf, 0x94, 0x67, 0x54, 0xb2, - 0x94, 0x67, 0x55, 0xaf, 0x94, 0x67, 0x56, 0xb2, 0x94, 0x67, 0x57, 0xaf, - 0x94, 0x67, 0x58, 0xb2, 0x94, 0x67, 0x58, 0xaf, 0x94, 0x67, 0x59, 0xb2, - 0x94, 0x67, 0x5a, 0xaf, 0x94, 0x67, 0x5b, 0xb2, 0x94, 0x67, 0x5c, 0xaf, - 0x94, 0x67, 0x5d, 0xb2, 0x94, 0x67, 0x5d, 0xaf, 0x94, 0x67, 0x5e, 0xb2, - 0x94, 0x67, 0x5f, 0xaf, 0x94, 0x67, 0x60, 0xb2, 0x94, 0x67, 0x60, 0xaf, - 0x94, 0x67, 0x61, 0xb2, 0x94, 0x67, 0x62, 0xaf, 0x94, 0x67, 0x63, 0xb2, - 0x94, 0x67, 0x63, 0xaf, 0x94, 0x67, 0x64, 0xb2, 0x94, 0x67, 0x65, 0xaf, - 0x94, 0x67, 0x66, 0xb2, 0x94, 0x67, 0x66, 0xaf, 0x94, 0x67, 0x67, 0xad, - 0x95, 0x67, 0x68, 0xaf, 0x94, 0x67, 0x68, 0xad, 0x95, 0x67, 0x69, 0xaf, - 0x94, 0x67, 0x6a, 0xad, 0x95, 0x67, 0x6a, 0xaf, 0x94, 0x67, 0x6b, 0xad, - 0x95, 0x67, 0x6c, 0xaf, 0x94, 0x67, 0x6c, 0xad, 0x95, 0x67, 0x6d, 0xaf, - 0x94, 0x67, 0x6e, 0xad, 0x95, 0x67, 0x6e, 0xaf, 0x94, 0x67, 0x6f, 0xad, - 0x95, 0x67, 0x70, 0xaf, 0x94, 0x67, 0x70, 0xad, 0x95, 0x67, 0x71, 0xaf, - 0x94, 0x67, 0x72, 0xad, 0x95, 0x67, 0x72, 0xaf, 0x94, 0x67, 0x73, 0xad, - 0x95, 0x67, 0x73, 0xaf, 0x94, 0x67, 0x74, 0xad, 0x95, 0x67, 0x75, 0xaf, - 0x94, 0x67, 0x75, 0xad, 0x95, 0x67, 0x76, 0xaf, 0x94, 0x67, 0x76, 0xad, - 0x95, 0x67, 0x77, 0xaf, 0x94, 0x67, 0x78, 0xad, 0x95, 0x67, 0x78, 0xaf, - 0x94, 0x67, 0x79, 0xad, 0x95, 0x67, 0x79, 0xaf, 0x94, 0x67, 0x7a, 0xad, - 0x95, 0x67, 0x7a, 0xaf, 0x94, 0x67, 0x7b, 0xad, 0x95, 0x67, 0x7c, 0xaf, - 0x94, 0x67, 0x7c, 0xad, 0x95, 0x67, 0x7d, 0xaf, 0x94, 0x67, 0x7d, 0xad, - 0x95, 0x67, 0x7e, 0xaa, 0x95, 0x67, 0x7e, 0xad, 0x95, 0x67, 0x7f, 0xaa, - 0x95, 0x67, 0x7f, 0xad, 0x95, 0x67, 0x80, 0xaa, 0x95, 0x67, 0x81, 0xad, - 0x95, 0x67, 0x81, 0xaa, 0x95, 0x67, 0x82, 0xad, 0x95, 0x67, 0x82, 0xaa, - 0x95, 0x67, 0x83, 0xad, 0x95, 0x67, 0x83, 0xaa, 0x95, 0x67, 0x84, 0xad, - 0x95, 0x67, 0x84, 0xaa, 0x95, 0x67, 0x85, 0xad, 0x95, 0x67, 0x85, 0xaa, - 0x95, 0x67, 0x86, 0xad, 0x95, 0x67, 0x86, 0xaa, 0x95, 0x67, 0x87, 0xad, - 0x95, 0x67, 0x87, 0xaa, 0x95, 0x67, 0x88, 0xad, 0x95, 0x67, 0x88, 0xaa, - 0x95, 0x67, 0x89, 0xad, 0x95, 0x67, 0x89, 0xaa, 0x95, 0x67, 0x8a, 0xad, - 0x95, 0x67, 0x8a, 0xaa, 0x95, 0x67, 0x8b, 0xad, 0x95, 0x67, 0x8b, 0xaa, - 0x95, 0x67, 0x8c, 0xad, 0x95, 0x67, 0x8c, 0xaa, 0x95, 0x67, 0x8d, 0xad, - 0x95, 0x67, 0x8d, 0xaa, 0x95, 0x67, 0x8e, 0xad, 0x95, 0x67, 0x8e, 0xaa, - 0x95, 0x67, 0x8e, 0xaa, 0x96, 0x67, 0x8f, 0xaa, 0x95, 0x67, 0x8f, 0xaa, - 0x96, 0x67, 0x90, 0xaa, 0x95, 0x67, 0x90, 0xaa, 0x96, 0x67, 0x91, 0xaa, - 0x95, 0x67, 0x91, 0xaa, 0x96, 0x67, 0x92, 0xaa, 0x95, 0x67, 0x92, 0xaa, - 0x96, 0x67, 0x93, 0xaa, 0x95, 0x67, 0x93, 0xaa, 0x96, 0x67, 0x94, 0xaa, - 0x95, 0x67, 0x94, 0xaa, 0x96, 0x67, 0x94, 0xaa, 0x95, 0x67, 0x95, 0xaa, - 0x96, 0x67, 0x95, 0xaa, 0x95, 0x66, 0x95, 0xaa, 0x96, 0x67, 0x95, 0xaa, - 0x96, 0x66, 0x95, 0xaa, 0x97, 0x67, 0x99, 0xaa, 0x97, 0x67, 0x99, 0xaa, - 0x98, 0x67, 0x99, 0xaa, 0x98, 0x67, 0x99, 0xaa, 0x98, 0x67, 0x99, 0xaa, - 0x99, 0x67, 0x99, 0xaa, 0x98, 0x67, 0x9a, 0xaa, 0x99, 0x67, 0x9a, 0xaa, - 0x98, 0x67, 0x9a, 0xaa, 0x99, 0x67, 0x9b, 0xaa, 0x98, 0x67, 0x9b, 0xaa, - 0x99, 0x67, 0x9c, 0xaa, 0x98, 0x67, 0x9c, 0xaa, 0x99, 0x67, 0x9d, 0xa8, - 0x99, 0x67, 0x9d, 0xae, 0x9d, 0x67, 0x9d, 0xae, 0x9d, 0x67, 0x9e, 0xae, - 0x9e, 0x67, 0x9e, 0xae, 0x9e, 0x67, 0x9f, 0xae, 0x9f, 0x67, 0x9f, 0xae, - 0x9e, 0x67, 0x9f, 0xae, 0x9f, 0x67, 0xa0, 0xae, 0x9e, 0x67, 0xa0, 0xae, - 0x9f, 0x67, 0xa1, 0xae, 0x9e, 0x67, 0xa1, 0xae, 0x9f, 0x67, 0xa1, 0xaf, - 0xa1, 0x67, 0xa2, 0xaf, 0xa2, 0x67, 0xa2, 0xaf, 0xa2, 0x67, 0xa3, 0xaf, - 0xa3, 0x67, 0xa3, 0xaf, 0xa3, 0x67, 0xa3, 0xaf, 0xa3, 0x67, 0xa4, 0xaf, - 0xa3, 0x67, 0xa4, 0xaf, 0xa3, 0x67, 0xa5, 0xaf, 0xa3, 0x67, 0xa5, 0xaf, - 0xa3, 0x67, 0xa5, 0xaf, 0xa3, 0x67, 0xa6, 0xaf, 0xa6, 0x67, 0xa6, 0xaf, - 0xa6, 0x67, 0xa6, 0xaf, 0xa6, 0x67, 0xa7, 0xaf, 0xa7, 0x67, 0xa7, 0xaf, - 0xa7, 0x67, 0xa8, 0xaf, 0xa8, 0x67, 0xa8, 0xaf, 0xa7, 0x67, 0xa8, 0xaf, - 0xa8, 0x67, 0xa9, 0xaf, 0xa7, 0x67, 0xa9, 0xaf, 0xa8, 0x67, 0xaa, 0xaf, - 0xa7, 0x67, 0xaa, 0xaf, 0xa8, 0x67, 0xaa, 0xb0, 0xaa, 0x67, 0xab, 0xb0, - 0xab, 0x67, 0xab, 0xb0, 0xab, 0x67, 0xab, 0xb0, 0xab, 0x67, 0xac, 0xb0, - 0xac, 0x67, 0xac, 0xb0, 0xab, 0x67, 0xac, 0xb0, 0xac, 0x67, 0xad, 0xb0, - 0xab, 0x67, 0xad, 0xb0, 0xac, 0x67, 0xae, 0xb0, 0xab, 0x67, 0xae, 0xb0, - 0xac, 0x67, 0xae, 0xb0, 0xab, 0x67, 0xaf, 0xb0, 0xac, 0x67, 0xaf, 0xb1, - 0xaf, 0x67, 0xaf, 0xb1, 0xaf, 0x67, 0xb0, 0xb1, 0xb0, 0x67, 0xb0, 0xb1, - 0xaf, 0x67, 0xb0, 0xb1, 0xb0, 0x67, 0xb1, 0xb1, 0xaf, 0x67, 0xb1, 0xb1, - 0xb0, 0x67, 0xb2, 0xb1, 0xaf, 0x67, 0xb2, 0xb1, 0xb0, 0x67, 0xb2, 0xb1, - 0xaf, 0x67, 0xb3, 0xb1, 0xb0, 0x67, 0xb3, 0xb2, 0xb3, 0x67, 0xb3, 0xb2, - 0xb3, 0x67, 0xb4, 0xb2, 0xb4, 0x67, 0xb4, 0xb2, 0xb3, 0x67, 0xb4, 0xb2, - 0xb4, 0x67, 0xb5, 0xb2, 0xb3, 0x67, 0xb5, 0xb2, 0xb4, 0x67, 0xb5, 0xb2, - 0xb3, 0x67, 0xb6, 0xb2, 0xb4, 0x67, 0xb6, 0xb2, 0xb3, 0x67, 0xb6, 0xb2, - 0xb4, 0x67, 0xb7, 0xb2, 0xb7, 0x67, 0xb7, 0xb2, 0xb7, 0x67, 0xb7, 0xb2, - 0xb7, 0x67, 0xb8, 0xb2, 0xb7, 0x67, 0xb8, 0xb2, 0xb7, 0x67, 0xb8, 0xb2, - 0xb7, 0x67, 0xb9, 0xb2, 0xb7, 0x67, 0xb9, 0xb2, 0xb7, 0x67, 0xb9, 0xb2, - 0xb7, 0x67, 0xba, 0xb2, 0xb7, 0x67, 0xba, 0xb2, 0xb7, 0x67, 0xba, 0xb3, - 0xba, 0x67, 0xbb, 0xb3, 0xbb, 0x67, 0xbb, 0xb3, 0xbb, 0x67, 0xbb, 0xb3, - 0xbb, 0x67, 0xbc, 0xb3, 0xbb, 0x67, 0xbc, 0xb3, 0xbb, 0x67, 0xbc, 0xb3, - 0xbb, 0x67, 0xbd, 0xb3, 0xbb, 0x67, 0xbd, 0xb3, 0xbb, 0x67, 0xbd, 0xb3, - 0xbb, 0x67, 0xbe, 0xb3, 0xbb, 0x67, 0xbe, 0xb4, 0xbe, 0x67, 0xbe, 0xb4, - 0xbe, 0x67, 0xbf, 0xb4, 0xbf, 0x67, 0xbf, 0xb4, 0xbe, 0x67, 0xbf, 0xb4, - 0xbf, 0x67, 0xc0, 0xb4, 0xbe, 0x67, 0xc0, 0xb4, 0xbf, 0x67, 0xc0, 0xb4, - 0xbe, 0x67, 0xc1, 0xb4, 0xbf, 0x67, 0xc1, 0xb4, 0xbe, 0x67, 0xc1, 0xb4, - 0xbf, 0x67, 0xc1, 0xb4, 0xbe, 0x67, 0xc2, 0xb4, 0xbf, 0x67, 0xc2, 0xb4, - 0xc2, 0x67, 0xc2, 0xb4, 0xc2, 0x67, 0xc3, 0xb4, 0xc2, 0x67, 0xc3, 0xb4, - 0xc2, 0x67, 0xc3, 0xb4, 0xc2, 0x67, 0xc4, 0xb4, 0xc2, 0x67, 0xc4, 0xb4, - 0xc2, 0x67, 0xc4, 0xb4, 0xc2, 0x67, 0xc5, 0xb4, 0xc2, 0x67, 0xc5, 0xb4, - 0xc2, 0x67, 0xc5, 0xb4, 0xc2, 0x67, 0xc6, 0xb5, 0xc6, 0x67, 0xc6, 0xb5, - 0xc6, 0x67, 0xc6, 0xb5, 0xc6, 0x67, 0xc6, 0xb5, 0xc6, 0x67, 0xc7, 0xb5, - 0xc6, 0x67, 0xc7, 0xb5, 0xc6, 0x67, 0xc7, 0xab, 0xd0, 0x67, 0xc8, 0xad, - 0xd0, 0x67, 0xc8, 0xab, 0xd0, 0x67, 0xc8, 0xad, 0xd0, 0x67, 0xc9, 0xab, - 0xd0, 0x67, 0xc9, 0xad, 0xd0, 0x67, 0xc9, 0xab, 0xd0, 0x67, 0xc9, 0xad, - 0xd0, 0x67, 0xca, 0xab, 0xd0, 0x67, 0xca, 0xad, 0xd0, 0x67, 0xca, 0xab, - 0xd0, 0x67, 0xcb, 0xad, 0xd0, 0x67, 0xcb, 0xab, 0xd0, 0x67, 0xcb, 0xad, - 0xd0, 0x67, 0xcc, 0xab, 0xd0, 0x67, 0xcc, 0xaa, 0xd0, 0x67, 0xcc, 0xab, - 0xd0, 0x67, 0xcc, 0xaa, 0xd0, 0x67, 0xcd, 0xab, 0xd0, 0x67, 0xcd, 0xaa, - 0xd0, 0x67, 0xcd, 0xab, 0xd0, 0x67, 0xce, 0xaa, 0xd0, 0x67, 0xce, 0xab, - 0xd0, 0x67, 0xce, 0xaa, 0xd0, 0x67, 0xce, 0xab, 0xd0, 0x67, 0xcf, 0xaa, - 0xd0, 0x67, 0xcf, 0xab, 0xd0, 0x67, 0xcf, 0xaa, 0xd0, 0x67, 0xd0, 0xab, - 0xd0, 0x67, 0xd0, 0xaa, 0xd0, 0x67, 0xd0, 0xab, 0xd0, 0x67, 0xd0, 0xaa, - 0xd0, 0x67, 0xd0, 0xaa, 0xd1, 0x67, 0xd0, 0xaa, 0xd1, 0x67, 0xd0, 0xaa, - 0xd1, 0x67, 0xd0, 0xaa, 0xd2, 0x65, 0xd0, 0xaa, 0xd2, 0x67, 0xd0, 0xaa, - 0xd2, 0x65, 0xd0, 0xaa, 0xd2, 0x67, 0xd0, 0xaa, 0xd3, 0x65, 0xd0, 0xaa, - 0xd3, 0x67, 0xd0, 0xaa, 0xd3, 0x65, 0xd0, 0xaa, 0xd4, 0x67, 0xd0, 0xaa, - 0xd4, 0x65, 0xd0, 0xaa, 0xd4, 0x67, 0xd0, 0xaa, 0xd4, 0x65, 0xd0, 0xaa, - 0xd5, 0x67, 0xd0, 0xaa, 0xd5, 0x65, 0xd0, 0xaa, 0xd5, 0x67, 0xd0, 0xaa, - 0xd6, 0x65, 0xd0, 0xaa, 0xd6, 0x67, 0xd0, 0xaa, 0xd6, 0x65, 0xd0, 0xaa, - 0xd6, 0x67, 0xd0, 0xaa, 0xd7, 0x65, 0xd0, 0xaa, 0xd7, 0x67, 0xd0, 0xaa, - 0xd7, 0x65, 0xd1, 0xaa, 0xd7, 0x62, 0xd0, 0xaa, 0xd8, 0x65, 0xd1, 0xaa, - 0xd8, 0x62, 0xd0, 0xaa, 0xd8, 0x65, 0xd1, 0xaa, 0xd9, 0x62, 0xd0, 0xaa, - 0xd9, 0x65, 0xd1, 0xaa, 0xd9, 0x62, 0xd0, 0xaa, 0xd9, 0x65, 0xd1, 0xaa, - 0xda, 0x62, 0xd0, 0xaa, 0xda, 0x65, 0xd1, 0xaa, 0xda, 0x62, 0xd0, 0xaa, - 0xda, 0x65, 0xd1, 0xaa, 0xdb, 0x62, 0xd0, 0xaa, 0xdb, 0x65, 0xd1, 0xaa, - 0xdb, 0x62, 0xd0, 0xaa, 0xdb, 0x65, 0xd1, 0xaa, 0xdc, 0x62, 0xd0, 0xaa, - 0xdc, 0x65, 0xd1, 0xaa, 0xdc, 0x62, 0xd0, 0xaa, 0xdd, 0x65, 0xd1, 0xaa, - 0xdd, 0x62, 0xd0, 0xaa, 0xdd, 0x65, 0xdf, 0xaa, 0xdd, 0x50, 0xdf, 0xaa, - 0xde, 0x50, 0xdf, 0xaa, 0xde, 0x50, 0xdf, 0xaa, 0xde, 0x50, 0xdf, 0xaa, - 0xde, 0x50, 0xe2, 0xaa, 0xdf, 0x51, 0xe2, 0xaa, 0xdf, 0x51, 0xe2, 0xaa, - 0xdf, 0x51, 0xe2, 0xaa, 0xdf, 0x51, 0xe2, 0xaa, 0xe0, 0x51, 0xe2, 0xaa, - 0xe0, 0x51, 0xe2, 0xaa, 0xe0, 0x51, 0xe4, 0xaa, 0xe1, 0x52, 0xec, 0xaa, - 0xe1, 0x67, 0xec, 0xaa, 0xe1, 0x6b, 0xec, 0xaa, 0xe1, 0x67, 0xec, 0xaa, - 0xe2, 0x6b, 0xec, 0xaa, 0xe2, 0x67, 0xec, 0xaa, 0xe2, 0x6b, 0xec, 0xaa, - 0xe2, 0x67, 0xec, 0xaa, 0xe3, 0x6b, 0xec, 0xaa, 0xe3, 0x67, 0xec, 0xaa, - 0xe3, 0x6b, 0xec, 0xaa, 0xe3, 0x67, 0xec, 0xaa, 0xe4, 0x6b, 0xec, 0xaa, - 0xe4, 0x67, 0xec, 0xaa, 0xe4, 0x6b, 0xec, 0xaa, 0xe4, 0x67, 0xec, 0xaa, - 0xe5, 0x6b, 0xec, 0xaa, 0xe5, 0x67, 0xec, 0xaa, 0xe5, 0x6b, 0xec, 0xaa, - 0xe5, 0x67, 0xec, 0xaa, 0xe6, 0x6b, 0xec, 0xaa, 0xe6, 0x67, 0xec, 0xaa, - 0xe6, 0x6b, 0xec, 0xaa, 0xe6, 0x67, 0xec, 0xaa, 0xe7, 0x6b, 0xec, 0xaa, - 0xe7, 0x67, 0xec, 0xaa, 0xe7, 0x6b, 0xec, 0xaa, 0xe7, 0x67, 0xec, 0xaa, - 0xe8, 0x6b, 0xec, 0xaa, 0xe8, 0x67, 0xec, 0xaa, 0xe8, 0x67, 0xec, 0xaa, - 0xe8, 0x67, 0xec, 0xaa, 0xe9, 0x67, 0xec, 0xaa, 0xe9, 0x67, 0xec, 0xaa, - 0xe9, 0x67, 0xec, 0xaa, 0xe9, 0x67, 0xec, 0xaa, 0xea, 0x67, 0xec, 0xaa, - 0xea, 0x67, 0xec, 0xaa, 0xea, 0x67, 0xec, 0xaa, 0xea, 0x67, 0xec, 0xaa, - 0xeb, 0x67, 0xec, 0xaa, 0xeb, 0x67, 0xec, 0xaa, 0xeb, 0x67, 0xec, 0xaa, - 0xeb, 0x67, 0xec, 0xaa, 0xec, 0x67, 0xec, 0xaa, 0xec, 0x67, 0xec, 0xaa, - 0xec, 0x67, 0xec, 0xaa, 0xec, 0x67, 0xec, 0xa9, 0xec, 0x67, 0xed, 0xa9, - 0xed, 0x67, 0xed, 0xa9, 0xed, 0x67, 0xed, 0xa9, 0xed, 0x67, 0xed, 0xa9, - 0xed, 0x67, 0xee, 0xa9, 0xee, 0x67, 0xee, 0xa9, 0xee, 0x67, 0xee, 0xa9, - 0xee, 0x67, 0xee, 0xa9, 0xee, 0x67, 0xef, 0xa9, 0xef, 0x67, 0xef, 0xaa, - 0xef, 0x67, 0xef, 0xaa, 0xf0, 0x67, 0xef, 0xaa, 0xef, 0x67, 0xf0, 0xaa, - 0xf0, 0x67, 0xf0, 0xaa, 0xf0, 0x67, 0xf0, 0xaa, 0xf0, 0x67, 0xf0, 0xaa, - 0xf0, 0x67, 0xf1, 0xaa, 0xf1, 0x67, 0xf1, 0xaa, 0xf1, 0x67, 0xf1, 0xaa, - 0xf1, 0x67, 0xf1, 0xaa, 0xf1, 0x67, 0xf2, 0xaa, 0xf2, 0x67, 0xf2, 0xaa, - 0xf2, 0x67, 0xf2, 0xaa, 0xf2, 0x67, 0xf2, 0xaa, 0xf2, 0x67, 0xf2, 0xaa, - 0xf2, 0x67, 0xf3, 0xaa, 0xf3, 0x67, 0xf3, 0xaa, 0xf3, 0x67, 0xf3, 0xaa, - 0xf3, 0x68, 0xf3, 0xaa, 0xf3, 0x68, 0xf4, 0xaa, 0xf4, 0x68, 0xf4, 0xaa, - 0xf4, 0x68, 0xf4, 0xaa, 0xf4, 0x68, 0xf4, 0xaa, 0xf4, 0x68, 0xf5, 0xaa, - 0xf5, 0x68, 0xf5, 0xaa, 0xf5, 0x68, 0xf5, 0xaa, 0xf5, 0x68, 0xf5, 0xaa, - 0xf5, 0x68, 0xf5, 0xaa, 0xf5, 0x68, 0xf6, 0xaa, 0xf6, 0x68, 0xf6, 0xaa, - 0xf6, 0x68, 0xf6, 0xaa, 0xf6, 0x68, 0xf6, 0xaa, 0xf6, 0x68, 0xf6, 0xaa, - 0xf7, 0x68, 0xf6, 0xaa, 0xf7, 0x68, 0xf6, 0xaa, 0xf7, 0x68, 0xf6, 0xaa, - 0xf7, 0x68, 0xf6, 0xaa, 0xf8, 0x68, 0xf6, 0xaa, 0xf8, 0x68, 0xf6, 0xaa, - 0xf8, 0x68, 0xf6, 0xaa, 0xf8, 0x68, 0xf6, 0xaa, 0xf8, 0x68, 0xfb, 0xaa, - 0xf9, 0x67, 0xfb, 0xaa, 0xf9, 0x6a, 0xfb, 0xaa, 0xf9, 0x67, 0xfb, 0xaa, - 0xf9, 0x67, 0xfb, 0xaa, 0xfa, 0x67, 0xfb, 0xaa, 0xfa, 0x67, 0xfb, 0xaa, - 0xfa, 0x67, 0xfb, 0xaa, 0xfa, 0x67, 0xfb, 0xaa, 0xfa, 0x67, 0xfb, 0xaa, - 0xfb, 0x67, 0xfb, 0xaa, 0xfb, 0x67, 0xfb, 0xaa, 0xfb, 0x67, 0xfb, 0xaa, - 0xfb, 0x67, 0xfc, 0xaa, 0xfb, 0x67, 0xfc, 0xaa, 0xfb, 0x67, 0xfc, 0xaa, - 0xfb, 0x67, 0xfc, 0xaa, 0xfb, 0x67, 0xfc, 0xaa, 0xfb, 0x67, 0xfd, 0xaa, - 0xfb, 0x67, 0xfd, 0xaa, 0xfb, 0x67, 0xfd, 0xaa, 0xfb, 0x67, 0xfd, 0xaa, - 0xfb, 0x67, 0xfe, 0xaa, 0xfb, 0x67, 0xfe, 0xaa, 0xfb, 0x67, 0xfe, 0xaa, - 0xfb, 0x67, 0xfe, 0xaa, 0xfb, 0x67, 0xfe, 0xaa, 0xfb, 0x67, 0xff, 0xa7, - 0xfb, 0x67, 0xff, 0xaa, 0xfb, 0x67, 0x03, 0xb4, 0x94, 0x67, 0x0a, 0xb2, - 0x94, 0x67, 0x0f, 0xb4, 0x94, 0x67, 0x14, 0xb2, 0x94, 0x67, 0x17, 0xb4, - 0x94, 0x67, 0x1b, 0xb2, 0x94, 0x67, 0x1e, 0xb4, 0x94, 0x67, 0x20, 0xb2, - 0x94, 0x67, 0x23, 0xb4, 0x94, 0x67, 0x25, 0xb2, 0x94, 0x67, 0x27, 0xb4, - 0x94, 0x67, 0x29, 0xb2, 0x94, 0x67, 0x2b, 0xb4, 0x94, 0x67, 0x2d, 0xb2, - 0x94, 0x67, 0x2f, 0xb4, 0x94, 0x67, 0x31, 0xb2, 0x94, 0x67, 0x32, 0xb4, - 0x94, 0x67, 0x34, 0xb2, 0x94, 0x67, 0x35, 0xb4, 0x94, 0x67, 0x37, 0xb2, - 0x94, 0x67, 0x38, 0xaf, 0x94, 0x67, 0x3a, 0xb2, 0x94, 0x67, 0x3b, 0xaf, - 0x94, 0x67, 0x3c, 0xb2, 0x94, 0x67, 0x3e, 0xaf, 0x94, 0x67, 0x3f, 0xb2, - 0x94, 0x67, 0x40, 0xaf, 0x94, 0x67, 0x42, 0xb2, 0x94, 0x67, 0x43, 0xaf, - 0x94, 0x67, 0x44, 0xb2, 0x94, 0x67, 0x45, 0xaf, 0x94, 0x67, 0x46, 0xb2, - 0x94, 0x67, 0x47, 0xaf, 0x94, 0x67, 0x48, 0xb2, 0x94, 0x67, 0x49, 0xaf, - 0x94, 0x67, 0x4a, 0xb2, 0x94, 0x67, 0x4b, 0xaf, 0x94, 0x67, 0x4c, 0xb2, - 0x94, 0x67, 0x4d, 0xaf, 0x94, 0x67, 0x4e, 0xb2, 0x94, 0x67, 0x4f, 0xaf, - 0x94, 0x67, 0x50, 0xb2, 0x94, 0x67, 0x51, 0xaf, 0x94, 0x67, 0x52, 0xb2, - 0x94, 0x67, 0x53, 0xaf, 0x94, 0x67, 0x54, 0xb2, 0x94, 0x67, 0x55, 0xaf, - 0x94, 0x67, 0x56, 0xb2, 0x94, 0x67, 0x57, 0xaf, 0x94, 0x67, 0x58, 0xb2, - 0x94, 0x67, 0x58, 0xaf, 0x94, 0x67, 0x59, 0xb2, 0x94, 0x67, 0x5a, 0xaf, - 0x94, 0x67, 0x5b, 0xb2, 0x94, 0x67, 0x5c, 0xaf, 0x94, 0x67, 0x5d, 0xb2, - 0x94, 0x67, 0x5d, 0xaf, 0x94, 0x67, 0x5e, 0xb2, 0x94, 0x67, 0x5f, 0xaf, - 0x94, 0x67, 0x60, 0xb2, 0x94, 0x67, 0x60, 0xaf, 0x94, 0x67, 0x61, 0xad, - 0x95, 0x67, 0x62, 0xaf, 0x94, 0x67, 0x63, 0xad, 0x95, 0x67, 0x63, 0xaf, - 0x94, 0x67, 0x64, 0xad, 0x95, 0x67, 0x65, 0xaf, 0x94, 0x67, 0x66, 0xad, - 0x95, 0x67, 0x66, 0xaf, 0x94, 0x67, 0x67, 0xad, 0x95, 0x67, 0x68, 0xaf, - 0x94, 0x67, 0x68, 0xad, 0x95, 0x67, 0x69, 0xaf, 0x94, 0x67, 0x6a, 0xad, - 0x95, 0x67, 0x6a, 0xaf, 0x94, 0x67, 0x6b, 0xad, 0x95, 0x67, 0x6c, 0xaf, - 0x94, 0x67, 0x6c, 0xad, 0x95, 0x67, 0x6d, 0xaf, 0x94, 0x67, 0x6e, 0xad, - 0x95, 0x67, 0x6e, 0xaf, 0x94, 0x67, 0x6f, 0xad, 0x95, 0x67, 0x70, 0xaf, - 0x94, 0x67, 0x70, 0xad, 0x95, 0x67, 0x71, 0xaf, 0x94, 0x67, 0x72, 0xad, - 0x95, 0x67, 0x72, 0xaf, 0x94, 0x67, 0x73, 0xad, 0x95, 0x67, 0x73, 0xaf, - 0x94, 0x67, 0x74, 0xad, 0x95, 0x67, 0x75, 0xaf, 0x94, 0x67, 0x75, 0xad, - 0x95, 0x67, 0x76, 0xaf, 0x94, 0x67, 0x76, 0xad, 0x95, 0x67, 0x77, 0xaf, - 0x94, 0x67, 0x78, 0xad, 0x95, 0x67, 0x78, 0xaf, 0x94, 0x67, 0x79, 0xad, - 0x95, 0x67, 0x79, 0xaf, 0x94, 0x67, 0x7a, 0xad, 0x95, 0x67, 0x7a, 0xaf, - 0x94, 0x67, 0x7b, 0xad, 0x95, 0x67, 0x7c, 0xaf, 0x94, 0x67, 0x7c, 0xad, - 0x95, 0x67, 0x7d, 0xaf, 0x94, 0x67, 0x7d, 0xad, 0x95, 0x67, 0x7e, 0xaf, - 0x94, 0x67, 0x7e, 0xad, 0x95, 0x67, 0x7f, 0xaf, 0x94, 0x67, 0x7f, 0xad, - 0x95, 0x67, 0x80, 0xaf, 0x94, 0x67, 0x81, 0xad, 0x95, 0x67, 0x81, 0xaf, - 0x94, 0x67, 0x82, 0xad, 0x95, 0x67, 0x82, 0xaf, 0x94, 0x67, 0x83, 0xad, - 0x95, 0x67, 0x83, 0xaf, 0x94, 0x67, 0x84, 0xad, 0x95, 0x67, 0x84, 0xab, - 0x95, 0x67, 0x85, 0xad, 0x95, 0x67, 0x85, 0xab, 0x95, 0x67, 0x86, 0xad, - 0x95, 0x67, 0x86, 0xab, 0x95, 0x67, 0x87, 0xad, 0x95, 0x67, 0x87, 0xab, - 0x95, 0x67, 0x88, 0xad, 0x95, 0x67, 0x88, 0xab, 0x95, 0x67, 0x89, 0xad, - 0x95, 0x67, 0x89, 0xab, 0x95, 0x67, 0x8a, 0xad, 0x95, 0x67, 0x8a, 0xab, - 0x95, 0x67, 0x8b, 0xad, 0x95, 0x67, 0x8b, 0xab, 0x95, 0x67, 0x8c, 0xad, - 0x95, 0x67, 0x8c, 0xab, 0x95, 0x67, 0x8d, 0xad, 0x95, 0x67, 0x8d, 0xab, - 0x95, 0x67, 0x8e, 0xad, 0x95, 0x67, 0x8e, 0xab, 0x95, 0x67, 0x8e, 0xad, - 0x95, 0x67, 0x8f, 0xab, 0x95, 0x67, 0x8f, 0xad, 0x95, 0x67, 0x90, 0xab, - 0x95, 0x67, 0x90, 0xad, 0x95, 0x67, 0x91, 0xab, 0x95, 0x67, 0x91, 0xad, - 0x95, 0x67, 0x92, 0xab, 0x95, 0x67, 0x92, 0xab, 0x96, 0x67, 0x93, 0xab, - 0x95, 0x67, 0x93, 0xab, 0x96, 0x67, 0x94, 0xab, 0x95, 0x67, 0x94, 0xab, - 0x96, 0x67, 0x94, 0xab, 0x95, 0x67, 0x95, 0xab, 0x96, 0x67, 0x95, 0xab, - 0x95, 0x66, 0x95, 0xab, 0x96, 0x67, 0x95, 0xab, 0x96, 0x66, 0x95, 0xab, - 0x97, 0x67, 0x99, 0xab, 0x97, 0x67, 0x99, 0xab, 0x98, 0x67, 0x99, 0xab, - 0x98, 0x67, 0x99, 0xab, 0x98, 0x67, 0x99, 0xaa, 0x99, 0x67, 0x99, 0xab, - 0x98, 0x67, 0x9a, 0xaa, 0x99, 0x67, 0x9a, 0xab, 0x98, 0x67, 0x9a, 0xaa, - 0x99, 0x67, 0x9b, 0xab, 0x98, 0x67, 0x9b, 0xaa, 0x99, 0x67, 0x9c, 0xae, - 0x9c, 0x67, 0x9c, 0xae, 0x9c, 0x67, 0x9d, 0xae, 0x9d, 0x67, 0x9d, 0xae, - 0x9c, 0x67, 0x9d, 0xae, 0x9d, 0x67, 0x9e, 0xae, 0x9c, 0x67, 0x9e, 0xae, - 0x9d, 0x67, 0x9f, 0xae, 0x9f, 0x67, 0x9f, 0xae, 0x9f, 0x67, 0x9f, 0xae, - 0x9f, 0x67, 0xa0, 0xae, 0xa0, 0x67, 0xa0, 0xae, 0xa0, 0x67, 0xa1, 0xae, - 0xa1, 0x67, 0xa1, 0xae, 0xa1, 0x67, 0xa1, 0xae, 0xa1, 0x67, 0xa2, 0xae, - 0xa1, 0x67, 0xa2, 0xae, 0xa1, 0x67, 0xa3, 0xae, 0xa1, 0x67, 0xa3, 0xae, - 0xa1, 0x67, 0xa3, 0xae, 0xa1, 0x67, 0xa4, 0xaf, 0xa4, 0x67, 0xa4, 0xaf, - 0xa4, 0x67, 0xa5, 0xaf, 0xa5, 0x67, 0xa5, 0xaf, 0xa5, 0x67, 0xa5, 0xaf, - 0xa5, 0x67, 0xa6, 0xaf, 0xa5, 0x67, 0xa6, 0xaf, 0xa5, 0x67, 0xa6, 0xaf, - 0xa5, 0x67, 0xa7, 0xaf, 0xa5, 0x67, 0xa7, 0xaf, 0xa5, 0x67, 0xa8, 0xaf, - 0xa5, 0x67, 0xa8, 0xb0, 0xa8, 0x67, 0xa8, 0xb0, 0xa8, 0x67, 0xa9, 0xb0, - 0xa9, 0x67, 0xa9, 0xb0, 0xa9, 0x67, 0xaa, 0xb0, 0xaa, 0x67, 0xaa, 0xb0, - 0xa9, 0x67, 0xaa, 0xb0, 0xaa, 0x67, 0xab, 0xb0, 0xa9, 0x67, 0xab, 0xb0, - 0xaa, 0x67, 0xab, 0xb0, 0xa9, 0x67, 0xac, 0xb0, 0xaa, 0x67, 0xac, 0xb0, - 0xac, 0x67, 0xac, 0xb0, 0xac, 0x67, 0xad, 0xb0, 0xad, 0x67, 0xad, 0xb0, - 0xad, 0x67, 0xae, 0xb0, 0xae, 0x67, 0xae, 0xb0, 0xad, 0x67, 0xae, 0xb0, - 0xae, 0x67, 0xaf, 0xb0, 0xad, 0x67, 0xaf, 0xb0, 0xae, 0x67, 0xaf, 0xb0, - 0xad, 0x67, 0xb0, 0xb0, 0xae, 0x67, 0xb0, 0xb0, 0xad, 0x67, 0xb0, 0xb0, - 0xae, 0x67, 0xb1, 0xb1, 0xb1, 0x67, 0xb1, 0xb1, 0xb1, 0x67, 0xb2, 0xb1, - 0xb2, 0x67, 0xb2, 0xb1, 0xb1, 0x67, 0xb2, 0xb1, 0xb2, 0x67, 0xb3, 0xb1, - 0xb1, 0x67, 0xb3, 0xb1, 0xb2, 0x67, 0xb3, 0xb1, 0xb1, 0x67, 0xb4, 0xb1, - 0xb2, 0x67, 0xb4, 0xb1, 0xb1, 0x67, 0xb4, 0xb1, 0xb2, 0x67, 0xb5, 0xb2, - 0xb5, 0x67, 0xb5, 0xb2, 0xb5, 0x67, 0xb5, 0xb2, 0xb5, 0x67, 0xb6, 0xb2, - 0xb5, 0x67, 0xb6, 0xb2, 0xb5, 0x67, 0xb6, 0xb2, 0xb5, 0x67, 0xb7, 0xb2, - 0xb5, 0x67, 0xb7, 0xb2, 0xb5, 0x67, 0xb7, 0xb2, 0xb5, 0x67, 0xb8, 0xb2, - 0xb5, 0x67, 0xb8, 0xb2, 0xb5, 0x67, 0xb8, 0xb3, 0xb8, 0x67, 0xb9, 0xb3, - 0xb9, 0x67, 0xb9, 0xb3, 0xb9, 0x67, 0xb9, 0xb3, 0xb9, 0x67, 0xba, 0xb3, - 0xb9, 0x67, 0xba, 0xb3, 0xb9, 0x67, 0xba, 0xb3, 0xb9, 0x67, 0xbb, 0xb3, - 0xb9, 0x67, 0xbb, 0xb3, 0xb9, 0x67, 0xbb, 0xb3, 0xb9, 0x67, 0xbc, 0xb3, - 0xb9, 0x67, 0xbc, 0xb3, 0xb9, 0x67, 0xbc, 0xb3, 0xbc, 0x67, 0xbd, 0xb3, - 0xbd, 0x67, 0xbd, 0xb3, 0xbd, 0x67, 0xbd, 0xb3, 0xbd, 0x67, 0xbe, 0xb3, - 0xbd, 0x67, 0xbe, 0xb3, 0xbd, 0x67, 0xbe, 0xb3, 0xbd, 0x67, 0xbf, 0xb3, - 0xbd, 0x67, 0xbf, 0xb3, 0xbd, 0x67, 0xbf, 0xb3, 0xbd, 0x67, 0xc0, 0xb3, - 0xbd, 0x67, 0xc0, 0xb4, 0xc0, 0x67, 0xc0, 0xb4, 0xc0, 0x67, 0xc1, 0xb4, - 0xc1, 0x67, 0xc1, 0xb4, 0xc0, 0x67, 0xc1, 0xb4, 0xc1, 0x67, 0xc1, 0xb4, - 0xc0, 0x67, 0xc2, 0xb4, 0xc1, 0x67, 0xc2, 0xb4, 0xc0, 0x67, 0xc2, 0xb4, - 0xc1, 0x67, 0xc3, 0xb4, 0xc0, 0x67, 0xc3, 0xb4, 0xc1, 0x67, 0xc3, 0xb4, - 0xc0, 0x67, 0xc4, 0xb4, 0xc1, 0x67, 0xc4, 0xb5, 0xc4, 0x67, 0xc4, 0xb5, - 0xc4, 0x67, 0xc5, 0xb5, 0xc4, 0x67, 0xc5, 0xb5, 0xc4, 0x67, 0xc5, 0xb5, - 0xc4, 0x67, 0xc6, 0xb5, 0xc4, 0x67, 0xc6, 0xb5, 0xc4, 0x67, 0xc6, 0xb5, - 0xc4, 0x67, 0xc6, 0xb5, 0xc4, 0x67, 0xc7, 0xb5, 0xc4, 0x67, 0xc7, 0xb5, - 0xc4, 0x67, 0xc7, 0xb5, 0xc7, 0x67, 0xc8, 0xae, 0xd0, 0x67, 0xc8, 0xab, - 0xd0, 0x67, 0xc8, 0xae, 0xd0, 0x67, 0xc9, 0xab, 0xd0, 0x67, 0xc9, 0xae, - 0xd0, 0x67, 0xc9, 0xab, 0xd0, 0x67, 0xc9, 0xae, 0xd0, 0x67, 0xca, 0xab, - 0xd0, 0x67, 0xca, 0xae, 0xd0, 0x67, 0xca, 0xab, 0xd0, 0x67, 0xcb, 0xae, - 0xd0, 0x67, 0xcb, 0xab, 0xd0, 0x67, 0xcb, 0xae, 0xd0, 0x67, 0xcc, 0xab, - 0xd0, 0x67, 0xcc, 0xab, 0xd0, 0x67, 0xcc, 0xab, 0xd0, 0x67, 0xcc, 0xab, - 0xd0, 0x67, 0xcd, 0xab, 0xd0, 0x67, 0xcd, 0xab, 0xd0, 0x67, 0xcd, 0xab, - 0xd0, 0x67, 0xce, 0xab, 0xd0, 0x67, 0xce, 0xab, 0xd0, 0x67, 0xce, 0xab, - 0xd0, 0x67, 0xce, 0xab, 0xd0, 0x67, 0xcf, 0xab, 0xd0, 0x67, 0xcf, 0xab, - 0xd0, 0x67, 0xcf, 0xab, 0xd0, 0x67, 0xd0, 0xab, 0xd0, 0x67, 0xd0, 0xab, - 0xd0, 0x67, 0xd0, 0xab, 0xd0, 0x67, 0xd0, 0xab, 0xd0, 0x67, 0xd0, 0xab, - 0xd1, 0x67, 0xd0, 0xab, 0xd1, 0x67, 0xd0, 0xab, 0xd1, 0x67, 0xd0, 0xab, - 0xd2, 0x67, 0xd0, 0xab, 0xd2, 0x67, 0xd0, 0xab, 0xd2, 0x67, 0xd0, 0xab, - 0xd2, 0x67, 0xd0, 0xab, 0xd3, 0x64, 0xd0, 0xab, 0xd3, 0x67, 0xd0, 0xab, - 0xd3, 0x64, 0xd0, 0xab, 0xd4, 0x67, 0xd0, 0xab, 0xd4, 0x64, 0xd0, 0xab, - 0xd4, 0x67, 0xd0, 0xab, 0xd4, 0x64, 0xd0, 0xab, 0xd5, 0x67, 0xd0, 0xab, - 0xd5, 0x64, 0xd0, 0xab, 0xd5, 0x67, 0xd0, 0xab, 0xd6, 0x64, 0xd0, 0xab, - 0xd6, 0x67, 0xd0, 0xab, 0xd6, 0x64, 0xd0, 0xab, 0xd6, 0x67, 0xd0, 0xab, - 0xd7, 0x64, 0xd0, 0xab, 0xd7, 0x67, 0xd0, 0xab, 0xd7, 0x64, 0xd0, 0xab, - 0xd7, 0x67, 0xd0, 0xab, 0xd8, 0x64, 0xd0, 0xab, 0xd8, 0x67, 0xd0, 0xab, - 0xd8, 0x64, 0xd0, 0xab, 0xd9, 0x67, 0xd0, 0xab, 0xd9, 0x64, 0xd0, 0xab, - 0xd9, 0x67, 0xd0, 0xab, 0xd9, 0x64, 0xd0, 0xab, 0xda, 0x67, 0xd0, 0xab, - 0xda, 0x64, 0xd0, 0xab, 0xda, 0x67, 0xd0, 0xab, 0xda, 0x64, 0xd1, 0xab, - 0xdb, 0x61, 0xd0, 0xab, 0xdb, 0x64, 0xd1, 0xab, 0xdb, 0x61, 0xd0, 0xab, - 0xdb, 0x64, 0xd1, 0xab, 0xdc, 0x61, 0xd0, 0xab, 0xdc, 0x64, 0xd1, 0xab, - 0xdc, 0x61, 0xd0, 0xab, 0xdd, 0x64, 0xd1, 0xab, 0xdd, 0x61, 0xd0, 0xab, - 0xdd, 0x64, 0xe1, 0xab, 0xdd, 0x50, 0xe1, 0xab, 0xde, 0x50, 0xe1, 0xab, - 0xde, 0x50, 0xe1, 0xab, 0xde, 0x50, 0xe1, 0xab, 0xde, 0x50, 0xe1, 0xab, - 0xdf, 0x50, 0xe1, 0xab, 0xdf, 0x50, 0xe3, 0xab, 0xdf, 0x51, 0xe1, 0xab, - 0xdf, 0x50, 0xe3, 0xab, 0xe0, 0x51, 0xe3, 0xab, 0xe0, 0x51, 0xe3, 0xab, - 0xe0, 0x51, 0xec, 0xab, 0xe1, 0x6b, 0xec, 0xab, 0xe1, 0x67, 0xec, 0xab, - 0xe1, 0x6b, 0xec, 0xab, 0xe1, 0x67, 0xec, 0xab, 0xe2, 0x6b, 0xec, 0xab, - 0xe2, 0x67, 0xec, 0xab, 0xe2, 0x6b, 0xec, 0xab, 0xe2, 0x67, 0xec, 0xab, - 0xe3, 0x6b, 0xec, 0xab, 0xe3, 0x67, 0xec, 0xab, 0xe3, 0x6b, 0xec, 0xab, - 0xe3, 0x67, 0xec, 0xab, 0xe4, 0x6b, 0xec, 0xab, 0xe4, 0x67, 0xec, 0xab, - 0xe4, 0x6b, 0xec, 0xab, 0xe4, 0x67, 0xec, 0xab, 0xe5, 0x6b, 0xec, 0xab, - 0xe5, 0x67, 0xec, 0xab, 0xe5, 0x6b, 0xec, 0xab, 0xe5, 0x67, 0xec, 0xab, - 0xe6, 0x6b, 0xec, 0xab, 0xe6, 0x67, 0xec, 0xab, 0xe6, 0x6b, 0xec, 0xab, - 0xe6, 0x67, 0xec, 0xab, 0xe7, 0x6b, 0xec, 0xab, 0xe7, 0x67, 0xec, 0xab, - 0xe7, 0x6b, 0xec, 0xab, 0xe7, 0x67, 0xec, 0xab, 0xe8, 0x6b, 0xec, 0xab, - 0xe8, 0x67, 0xec, 0xab, 0xe8, 0x67, 0xec, 0xab, 0xe8, 0x67, 0xec, 0xab, - 0xe9, 0x67, 0xec, 0xab, 0xe9, 0x67, 0xec, 0xab, 0xe9, 0x67, 0xec, 0xab, - 0xe9, 0x67, 0xec, 0xab, 0xea, 0x67, 0xec, 0xab, 0xea, 0x67, 0xec, 0xab, - 0xea, 0x67, 0xec, 0xab, 0xea, 0x67, 0xec, 0xab, 0xeb, 0x67, 0xec, 0xab, - 0xeb, 0x67, 0xec, 0xab, 0xeb, 0x67, 0xec, 0xab, 0xeb, 0x67, 0xec, 0xab, - 0xec, 0x67, 0xec, 0xaa, 0xec, 0x67, 0xec, 0xab, 0xec, 0x67, 0xec, 0xaa, - 0xec, 0x67, 0xec, 0xab, 0xec, 0x67, 0xed, 0xaa, 0xec, 0x67, 0xed, 0xa9, - 0xed, 0x67, 0xed, 0xa9, 0xee, 0x67, 0xed, 0xa9, 0xed, 0x67, 0xee, 0xa9, - 0xee, 0x67, 0xee, 0xa9, 0xee, 0x67, 0xee, 0xa9, 0xee, 0x67, 0xee, 0xa9, - 0xee, 0x67, 0xef, 0xa9, 0xef, 0x67, 0xef, 0xa9, 0xef, 0x67, 0xef, 0xa9, - 0xef, 0x67, 0xef, 0xa9, 0xef, 0x67, 0xf0, 0xa9, 0xf0, 0x67, 0xf0, 0xa9, - 0xf0, 0x67, 0xf0, 0xa9, 0xf0, 0x67, 0xf0, 0xa9, 0xf0, 0x67, 0xf1, 0xa9, - 0xf1, 0x67, 0xf1, 0xaa, 0xf1, 0x67, 0xf1, 0xaa, 0xf2, 0x67, 0xf1, 0xaa, - 0xf1, 0x67, 0xf2, 0xaa, 0xf2, 0x67, 0xf2, 0xaa, 0xf2, 0x67, 0xf2, 0xaa, - 0xf2, 0x67, 0xf2, 0xaa, 0xf2, 0x67, 0xf2, 0xaa, 0xf2, 0x67, 0xf3, 0xaa, - 0xf3, 0x67, 0xf3, 0xaa, 0xf3, 0x67, 0xf3, 0xaa, 0xf3, 0x67, 0xf3, 0xaa, - 0xf3, 0x67, 0xf4, 0xaa, 0xf4, 0x67, 0xf4, 0xaa, 0xf4, 0x67, 0xf4, 0xaa, - 0xf4, 0x67, 0xf4, 0xaa, 0xf4, 0x67, 0xf5, 0xaa, 0xf5, 0x67, 0xf5, 0xab, - 0xf5, 0x68, 0xf5, 0xab, 0xf5, 0x68, 0xf5, 0xab, 0xf5, 0x68, 0xf5, 0xab, - 0xf5, 0x68, 0xf6, 0xab, 0xf6, 0x68, 0xf6, 0xab, 0xf6, 0x68, 0xf6, 0xab, - 0xf6, 0x68, 0xf6, 0xab, 0xf6, 0x68, 0xf6, 0xab, 0xf7, 0x68, 0xf6, 0xab, - 0xf7, 0x68, 0xf6, 0xab, 0xf7, 0x68, 0xf6, 0xab, 0xf7, 0x68, 0xf6, 0xab, - 0xf8, 0x68, 0xf6, 0xab, 0xf8, 0x68, 0xf6, 0xab, 0xf8, 0x68, 0xf6, 0xab, - 0xf8, 0x68, 0xf6, 0xab, 0xf8, 0x68, 0xfb, 0xab, 0xf9, 0x67, 0xfb, 0xab, - 0xf9, 0x69, 0xfb, 0xab, 0xf9, 0x67, 0xfb, 0xab, 0xf9, 0x69, 0xfb, 0xab, - 0xfa, 0x67, 0xfb, 0xab, 0xfa, 0x69, 0xfb, 0xab, 0xfa, 0x67, 0xfb, 0xab, - 0xfa, 0x67, 0xfb, 0xab, 0xfa, 0x67, 0xfb, 0xab, 0xfb, 0x67, 0xfb, 0xaa, - 0xfb, 0x67, 0xfb, 0xab, 0xfb, 0x67, 0xfb, 0xaa, 0xfb, 0x67, 0xfc, 0xab, - 0xfb, 0x67, 0xfc, 0xaa, 0xfb, 0x67, 0xfc, 0xab, 0xfb, 0x67, 0xfc, 0xaa, - 0xfb, 0x67, 0xfc, 0xab, 0xfb, 0x67, 0xfd, 0xaa, 0xfb, 0x67, 0xfd, 0xab, - 0xfb, 0x67, 0xfd, 0xaa, 0xfb, 0x67, 0xfd, 0xab, 0xfb, 0x67, 0xfe, 0xaa, - 0xfb, 0x67, 0xfe, 0xab, 0xfb, 0x67, 0xfe, 0xaa, 0xfb, 0x67, 0xfe, 0xab, - 0xfb, 0x67, 0xfe, 0xaa, 0xfb, 0x67, 0xff, 0xa8, 0xfb, 0x67, 0xff, 0xaa, - 0xfb, 0x67, 0x03, 0xb4, 0x94, 0x68, 0x0a, 0xb2, 0x94, 0x68, 0x0f, 0xb4, - 0x94, 0x68, 0x14, 0xb2, 0x94, 0x68, 0x17, 0xb4, 0x94, 0x68, 0x1b, 0xb2, - 0x94, 0x68, 0x1e, 0xb4, 0x94, 0x68, 0x20, 0xb2, 0x94, 0x68, 0x23, 0xb4, - 0x94, 0x68, 0x25, 0xb2, 0x94, 0x68, 0x27, 0xb4, 0x94, 0x68, 0x29, 0xb2, - 0x94, 0x68, 0x2b, 0xb4, 0x94, 0x68, 0x2d, 0xb2, 0x94, 0x68, 0x2f, 0xb4, - 0x94, 0x68, 0x31, 0xb2, 0x94, 0x68, 0x32, 0xb4, 0x94, 0x68, 0x34, 0xb2, - 0x94, 0x68, 0x35, 0xb4, 0x94, 0x68, 0x37, 0xb2, 0x94, 0x68, 0x38, 0xb4, - 0x94, 0x68, 0x3a, 0xb2, 0x94, 0x68, 0x3b, 0xb4, 0x94, 0x68, 0x3c, 0xb2, - 0x94, 0x68, 0x3e, 0xb4, 0x94, 0x68, 0x3f, 0xb2, 0x94, 0x68, 0x40, 0xb4, - 0x94, 0x68, 0x42, 0xb2, 0x94, 0x68, 0x43, 0xb4, 0x94, 0x68, 0x44, 0xb2, - 0x94, 0x68, 0x45, 0xb4, 0x94, 0x68, 0x46, 0xb2, 0x94, 0x68, 0x47, 0xb4, - 0x94, 0x68, 0x48, 0xb2, 0x94, 0x68, 0x49, 0xb4, 0x94, 0x68, 0x4a, 0xb2, - 0x94, 0x68, 0x4b, 0xb4, 0x94, 0x68, 0x4c, 0xb2, 0x94, 0x68, 0x4d, 0xb4, - 0x94, 0x68, 0x4e, 0xb2, 0x94, 0x68, 0x4f, 0xb4, 0x94, 0x68, 0x50, 0xb2, - 0x94, 0x68, 0x51, 0xb4, 0x94, 0x68, 0x52, 0xb2, 0x94, 0x68, 0x53, 0xaf, - 0x94, 0x68, 0x54, 0xb2, 0x94, 0x68, 0x55, 0xaf, 0x94, 0x68, 0x56, 0xb2, - 0x94, 0x68, 0x57, 0xaf, 0x94, 0x68, 0x58, 0xb2, 0x94, 0x68, 0x58, 0xaf, - 0x94, 0x68, 0x59, 0xb2, 0x94, 0x68, 0x5a, 0xaf, 0x94, 0x68, 0x5b, 0xb2, - 0x94, 0x68, 0x5c, 0xaf, 0x94, 0x68, 0x5d, 0xb2, 0x94, 0x68, 0x5d, 0xaf, - 0x94, 0x68, 0x5e, 0xb2, 0x94, 0x68, 0x5f, 0xaf, 0x94, 0x68, 0x60, 0xb2, - 0x94, 0x68, 0x60, 0xaf, 0x94, 0x68, 0x61, 0xb2, 0x94, 0x68, 0x62, 0xaf, - 0x94, 0x68, 0x63, 0xb2, 0x94, 0x68, 0x63, 0xaf, 0x94, 0x68, 0x64, 0xb2, - 0x94, 0x68, 0x65, 0xaf, 0x94, 0x68, 0x66, 0xb2, 0x94, 0x68, 0x66, 0xaf, - 0x94, 0x68, 0x67, 0xb2, 0x94, 0x68, 0x68, 0xaf, 0x94, 0x68, 0x68, 0xb2, - 0x94, 0x68, 0x69, 0xaf, 0x94, 0x68, 0x6a, 0xb2, 0x94, 0x68, 0x6a, 0xaf, - 0x94, 0x68, 0x6b, 0xb2, 0x94, 0x68, 0x6c, 0xaf, 0x94, 0x68, 0x6c, 0xb2, - 0x94, 0x68, 0x6d, 0xaf, 0x94, 0x68, 0x6e, 0xb2, 0x94, 0x68, 0x6e, 0xaf, - 0x94, 0x68, 0x6f, 0xad, 0x95, 0x68, 0x70, 0xaf, 0x94, 0x68, 0x70, 0xad, - 0x95, 0x68, 0x71, 0xaf, 0x94, 0x68, 0x72, 0xad, 0x95, 0x68, 0x72, 0xaf, - 0x94, 0x68, 0x73, 0xad, 0x95, 0x68, 0x73, 0xaf, 0x94, 0x68, 0x74, 0xad, - 0x95, 0x68, 0x75, 0xaf, 0x94, 0x68, 0x75, 0xad, 0x95, 0x68, 0x76, 0xaf, - 0x94, 0x68, 0x76, 0xad, 0x95, 0x68, 0x77, 0xaf, 0x94, 0x68, 0x78, 0xad, - 0x95, 0x68, 0x78, 0xaf, 0x94, 0x68, 0x79, 0xad, 0x95, 0x68, 0x79, 0xaf, - 0x94, 0x68, 0x7a, 0xad, 0x95, 0x68, 0x7a, 0xaf, 0x94, 0x68, 0x7b, 0xad, - 0x95, 0x68, 0x7c, 0xaf, 0x94, 0x68, 0x7c, 0xad, 0x95, 0x68, 0x7d, 0xaf, - 0x94, 0x68, 0x7d, 0xad, 0x95, 0x68, 0x7e, 0xaf, 0x94, 0x68, 0x7e, 0xad, - 0x95, 0x68, 0x7f, 0xaf, 0x94, 0x68, 0x7f, 0xad, 0x95, 0x68, 0x80, 0xaf, - 0x94, 0x68, 0x81, 0xad, 0x95, 0x68, 0x81, 0xaf, 0x94, 0x68, 0x82, 0xad, - 0x95, 0x68, 0x82, 0xaf, 0x94, 0x68, 0x83, 0xad, 0x95, 0x68, 0x83, 0xaf, - 0x94, 0x68, 0x84, 0xad, 0x95, 0x68, 0x84, 0xab, 0x95, 0x68, 0x85, 0xad, - 0x95, 0x68, 0x85, 0xab, 0x95, 0x68, 0x86, 0xad, 0x95, 0x68, 0x86, 0xab, - 0x95, 0x68, 0x87, 0xad, 0x95, 0x68, 0x87, 0xab, 0x95, 0x68, 0x88, 0xad, - 0x95, 0x68, 0x88, 0xab, 0x95, 0x68, 0x89, 0xad, 0x95, 0x68, 0x89, 0xab, - 0x95, 0x68, 0x8a, 0xad, 0x95, 0x68, 0x8a, 0xab, 0x95, 0x68, 0x8b, 0xad, - 0x95, 0x68, 0x8b, 0xab, 0x95, 0x68, 0x8c, 0xad, 0x95, 0x68, 0x8c, 0xab, - 0x95, 0x68, 0x8d, 0xad, 0x95, 0x68, 0x8d, 0xab, 0x95, 0x68, 0x8e, 0xad, - 0x95, 0x68, 0x8e, 0xab, 0x95, 0x68, 0x8e, 0xad, 0x95, 0x68, 0x8f, 0xab, - 0x95, 0x68, 0x8f, 0xad, 0x95, 0x68, 0x90, 0xab, 0x95, 0x68, 0x90, 0xad, - 0x95, 0x68, 0x91, 0xab, 0x95, 0x68, 0x91, 0xad, 0x95, 0x68, 0x92, 0xab, - 0x95, 0x68, 0x92, 0xab, 0x96, 0x68, 0x93, 0xab, 0x95, 0x68, 0x93, 0xab, - 0x96, 0x68, 0x94, 0xab, 0x95, 0x68, 0x94, 0xab, 0x96, 0x68, 0x94, 0xab, - 0x95, 0x68, 0x95, 0xab, 0x96, 0x68, 0x94, 0xab, 0x95, 0x68, 0x95, 0xab, - 0x96, 0x68, 0x94, 0xab, 0x96, 0x68, 0x95, 0xab, 0x97, 0x68, 0x99, 0xab, - 0x97, 0x68, 0x99, 0xab, 0x98, 0x68, 0x99, 0xab, 0x98, 0x68, 0x99, 0xab, - 0x98, 0x68, 0x99, 0xab, 0x98, 0x68, 0x99, 0xab, 0x98, 0x68, 0x9a, 0xab, - 0x98, 0x68, 0x9a, 0xab, 0x98, 0x68, 0x9a, 0xaa, 0x99, 0x68, 0x9b, 0xab, - 0x98, 0x68, 0x9b, 0xaa, 0x99, 0x68, 0x9c, 0xad, 0x9a, 0x68, 0x9c, 0xae, - 0x9c, 0x68, 0x9d, 0xae, 0x9d, 0x68, 0x9d, 0xae, 0x9d, 0x68, 0x9d, 0xae, - 0x9d, 0x68, 0x9e, 0xae, 0x9e, 0x68, 0x9e, 0xae, 0x9e, 0x68, 0x9f, 0xae, - 0x9f, 0x68, 0x9f, 0xae, 0x9e, 0x68, 0x9f, 0xae, 0x9f, 0x68, 0xa0, 0xae, - 0x9e, 0x68, 0xa0, 0xae, 0x9f, 0x68, 0xa1, 0xaf, 0xa1, 0x68, 0xa1, 0xaf, - 0xa1, 0x68, 0xa1, 0xaf, 0xa1, 0x68, 0xa2, 0xaf, 0xa2, 0x68, 0xa2, 0xaf, - 0xa2, 0x68, 0xa3, 0xaf, 0xa3, 0x68, 0xa3, 0xaf, 0xa3, 0x68, 0xa3, 0xaf, - 0xa3, 0x68, 0xa4, 0xaf, 0xa3, 0x68, 0xa4, 0xaf, 0xa3, 0x68, 0xa5, 0xaf, - 0xa3, 0x68, 0xa5, 0xaf, 0xa3, 0x68, 0xa5, 0xaf, 0xa3, 0x68, 0xa6, 0xaf, - 0xa6, 0x68, 0xa6, 0xaf, 0xa6, 0x68, 0xa6, 0xaf, 0xa6, 0x68, 0xa7, 0xaf, - 0xa7, 0x68, 0xa7, 0xaf, 0xa7, 0x68, 0xa8, 0xaf, 0xa8, 0x68, 0xa8, 0xaf, - 0xa7, 0x68, 0xa8, 0xaf, 0xa8, 0x68, 0xa9, 0xaf, 0xa7, 0x68, 0xa9, 0xaf, - 0xa8, 0x68, 0xaa, 0xaf, 0xa7, 0x68, 0xaa, 0xaf, 0xa8, 0x68, 0xaa, 0xb0, - 0xaa, 0x68, 0xab, 0xb0, 0xab, 0x68, 0xab, 0xb0, 0xab, 0x68, 0xab, 0xb0, - 0xab, 0x68, 0xac, 0xb0, 0xac, 0x68, 0xac, 0xb0, 0xab, 0x68, 0xac, 0xb0, - 0xac, 0x68, 0xad, 0xb0, 0xab, 0x68, 0xad, 0xb0, 0xac, 0x68, 0xae, 0xb0, - 0xab, 0x68, 0xae, 0xb0, 0xac, 0x68, 0xae, 0xb1, 0xae, 0x68, 0xaf, 0xb1, - 0xaf, 0x68, 0xaf, 0xb1, 0xaf, 0x68, 0xaf, 0xb1, 0xaf, 0x68, 0xb0, 0xb1, - 0xb0, 0x68, 0xb0, 0xb1, 0xaf, 0x68, 0xb0, 0xb1, 0xb0, 0x68, 0xb1, 0xb1, - 0xaf, 0x68, 0xb1, 0xb1, 0xb0, 0x68, 0xb2, 0xb1, 0xaf, 0x68, 0xb2, 0xb1, - 0xb0, 0x68, 0xb2, 0xb1, 0xaf, 0x68, 0xb3, 0xb1, 0xb0, 0x68, 0xb3, 0xb2, - 0xb3, 0x68, 0xb3, 0xb2, 0xb3, 0x68, 0xb4, 0xb2, 0xb4, 0x68, 0xb4, 0xb2, - 0xb3, 0x68, 0xb4, 0xb2, 0xb4, 0x68, 0xb5, 0xb2, 0xb3, 0x68, 0xb5, 0xb2, - 0xb4, 0x68, 0xb5, 0xb2, 0xb3, 0x68, 0xb6, 0xb2, 0xb4, 0x68, 0xb6, 0xb2, - 0xb3, 0x68, 0xb6, 0xb2, 0xb4, 0x68, 0xb7, 0xb2, 0xb7, 0x68, 0xb7, 0xb2, - 0xb7, 0x68, 0xb7, 0xb2, 0xb7, 0x68, 0xb8, 0xb2, 0xb7, 0x68, 0xb8, 0xb2, - 0xb7, 0x68, 0xb8, 0xb2, 0xb7, 0x68, 0xb9, 0xb2, 0xb7, 0x68, 0xb9, 0xb2, - 0xb7, 0x68, 0xb9, 0xb2, 0xb7, 0x68, 0xba, 0xb2, 0xb7, 0x68, 0xba, 0xb2, - 0xb7, 0x68, 0xba, 0xb3, 0xba, 0x68, 0xbb, 0xb3, 0xbb, 0x68, 0xbb, 0xb3, - 0xbb, 0x68, 0xbb, 0xb3, 0xbb, 0x68, 0xbc, 0xb3, 0xbb, 0x68, 0xbc, 0xb3, - 0xbb, 0x68, 0xbc, 0xb3, 0xbb, 0x68, 0xbd, 0xb3, 0xbb, 0x68, 0xbd, 0xb3, - 0xbb, 0x68, 0xbd, 0xb3, 0xbb, 0x68, 0xbe, 0xb3, 0xbb, 0x68, 0xbe, 0xb4, - 0xbe, 0x68, 0xbe, 0xb4, 0xbe, 0x68, 0xbf, 0xb4, 0xbf, 0x68, 0xbf, 0xb4, - 0xbe, 0x68, 0xbf, 0xb4, 0xbf, 0x68, 0xc0, 0xb4, 0xbe, 0x68, 0xc0, 0xb4, - 0xbf, 0x68, 0xc0, 0xb4, 0xbe, 0x68, 0xc1, 0xb4, 0xbf, 0x68, 0xc1, 0xb4, - 0xbe, 0x68, 0xc1, 0xb4, 0xbf, 0x68, 0xc1, 0xb4, 0xc1, 0x68, 0xc2, 0xb4, - 0xc2, 0x68, 0xc2, 0xb4, 0xc2, 0x68, 0xc2, 0xb4, 0xc2, 0x68, 0xc3, 0xb4, - 0xc2, 0x68, 0xc3, 0xb4, 0xc2, 0x68, 0xc3, 0xb4, 0xc2, 0x68, 0xc4, 0xb4, - 0xc2, 0x68, 0xc4, 0xb4, 0xc2, 0x68, 0xc4, 0xb4, 0xc2, 0x68, 0xc5, 0xb4, - 0xc2, 0x68, 0xc5, 0xb4, 0xc2, 0x68, 0xc5, 0xb4, 0xc2, 0x68, 0xc6, 0xb5, - 0xc6, 0x68, 0xc6, 0xb5, 0xc6, 0x68, 0xc6, 0xb5, 0xc6, 0x68, 0xc6, 0xb5, - 0xc6, 0x68, 0xc7, 0xb5, 0xc6, 0x68, 0xc7, 0xb5, 0xc6, 0x68, 0xc7, 0xb5, - 0xc6, 0x68, 0xc8, 0xad, 0xd0, 0x68, 0xc8, 0xab, 0xd0, 0x68, 0xc8, 0xad, - 0xd0, 0x68, 0xc9, 0xab, 0xd0, 0x68, 0xc9, 0xad, 0xd0, 0x68, 0xc9, 0xab, - 0xd0, 0x68, 0xc9, 0xad, 0xd0, 0x68, 0xca, 0xab, 0xd0, 0x68, 0xca, 0xad, - 0xd0, 0x68, 0xca, 0xab, 0xd0, 0x68, 0xcb, 0xad, 0xd0, 0x68, 0xcb, 0xab, - 0xd0, 0x68, 0xcb, 0xad, 0xd0, 0x68, 0xcc, 0xab, 0xd0, 0x68, 0xcc, 0xad, - 0xd0, 0x68, 0xcc, 0xab, 0xd0, 0x68, 0xcc, 0xad, 0xd0, 0x68, 0xcd, 0xab, - 0xd0, 0x68, 0xcd, 0xad, 0xd0, 0x68, 0xcd, 0xab, 0xd0, 0x68, 0xce, 0xad, - 0xd0, 0x68, 0xce, 0xab, 0xd0, 0x68, 0xce, 0xab, 0xd0, 0x68, 0xce, 0xab, - 0xd0, 0x68, 0xcf, 0xab, 0xd0, 0x68, 0xcf, 0xab, 0xd0, 0x68, 0xcf, 0xab, - 0xd0, 0x68, 0xd0, 0xab, 0xd0, 0x68, 0xd0, 0xab, 0xd0, 0x68, 0xd0, 0xab, - 0xd0, 0x67, 0xd0, 0xab, 0xd0, 0x68, 0xd0, 0xab, 0xd1, 0x67, 0xd0, 0xab, - 0xd1, 0x68, 0xd0, 0xab, 0xd1, 0x67, 0xd0, 0xab, 0xd2, 0x68, 0xd0, 0xab, - 0xd2, 0x67, 0xd0, 0xab, 0xd2, 0x68, 0xd0, 0xab, 0xd2, 0x67, 0xd0, 0xab, - 0xd3, 0x65, 0xd0, 0xab, 0xd3, 0x67, 0xd0, 0xab, 0xd3, 0x65, 0xd0, 0xab, - 0xd4, 0x67, 0xd0, 0xab, 0xd4, 0x65, 0xd0, 0xab, 0xd4, 0x67, 0xd0, 0xab, - 0xd4, 0x65, 0xd0, 0xab, 0xd5, 0x67, 0xd0, 0xab, 0xd5, 0x65, 0xd0, 0xab, - 0xd5, 0x67, 0xd0, 0xab, 0xd6, 0x65, 0xd0, 0xab, 0xd6, 0x67, 0xd0, 0xab, - 0xd6, 0x65, 0xd0, 0xab, 0xd6, 0x67, 0xd0, 0xab, 0xd7, 0x65, 0xd0, 0xab, - 0xd7, 0x67, 0xd0, 0xab, 0xd7, 0x65, 0xd0, 0xab, 0xd7, 0x67, 0xd0, 0xab, - 0xd8, 0x65, 0xd0, 0xab, 0xd8, 0x67, 0xd0, 0xab, 0xd8, 0x65, 0xd0, 0xab, - 0xd9, 0x67, 0xd0, 0xab, 0xd9, 0x65, 0xd0, 0xab, 0xd9, 0x67, 0xd0, 0xab, - 0xd9, 0x65, 0xd0, 0xab, 0xda, 0x67, 0xd0, 0xab, 0xda, 0x65, 0xd0, 0xab, - 0xda, 0x67, 0xd0, 0xab, 0xda, 0x65, 0xd1, 0xab, 0xdb, 0x62, 0xd0, 0xab, - 0xdb, 0x65, 0xd1, 0xab, 0xdb, 0x62, 0xd0, 0xab, 0xdb, 0x65, 0xd1, 0xab, - 0xdc, 0x62, 0xd0, 0xab, 0xdc, 0x65, 0xd1, 0xab, 0xdc, 0x62, 0xd0, 0xab, - 0xdd, 0x65, 0xd1, 0xab, 0xdd, 0x62, 0xd0, 0xab, 0xdd, 0x65, 0xd1, 0xab, - 0xdd, 0x62, 0xdf, 0xab, 0xde, 0x50, 0xdf, 0xab, 0xde, 0x50, 0xe2, 0xab, - 0xde, 0x51, 0xe2, 0xab, 0xde, 0x51, 0xe2, 0xab, 0xdf, 0x51, 0xe2, 0xab, - 0xdf, 0x51, 0xe2, 0xab, 0xdf, 0x51, 0xe2, 0xab, 0xdf, 0x51, 0xe2, 0xab, - 0xe0, 0x51, 0xec, 0xab, 0xe0, 0x6b, 0xec, 0xab, 0xe0, 0x68, 0xec, 0xab, - 0xe1, 0x6b, 0xec, 0xab, 0xe1, 0x68, 0xec, 0xab, 0xe1, 0x6b, 0xec, 0xab, - 0xe1, 0x68, 0xec, 0xab, 0xe2, 0x6b, 0xec, 0xab, 0xe2, 0x68, 0xec, 0xab, - 0xe2, 0x6b, 0xec, 0xab, 0xe2, 0x68, 0xec, 0xab, 0xe3, 0x6b, 0xec, 0xab, - 0xe3, 0x68, 0xec, 0xab, 0xe3, 0x6b, 0xec, 0xab, 0xe3, 0x68, 0xec, 0xab, - 0xe4, 0x6b, 0xec, 0xab, 0xe4, 0x68, 0xec, 0xab, 0xe4, 0x6b, 0xec, 0xab, - 0xe4, 0x68, 0xec, 0xab, 0xe5, 0x6b, 0xec, 0xab, 0xe5, 0x68, 0xec, 0xab, - 0xe5, 0x6b, 0xec, 0xab, 0xe5, 0x68, 0xec, 0xab, 0xe6, 0x6b, 0xec, 0xab, - 0xe6, 0x68, 0xec, 0xab, 0xe6, 0x6b, 0xec, 0xab, 0xe6, 0x68, 0xec, 0xab, - 0xe7, 0x6b, 0xec, 0xab, 0xe7, 0x68, 0xec, 0xab, 0xe7, 0x6b, 0xec, 0xab, - 0xe7, 0x68, 0xec, 0xab, 0xe8, 0x6b, 0xec, 0xab, 0xe8, 0x68, 0xec, 0xab, - 0xe8, 0x6b, 0xec, 0xab, 0xe8, 0x68, 0xec, 0xab, 0xe9, 0x6b, 0xec, 0xab, - 0xe9, 0x68, 0xec, 0xab, 0xe9, 0x6b, 0xec, 0xab, 0xe9, 0x68, 0xec, 0xab, - 0xea, 0x6b, 0xec, 0xab, 0xea, 0x68, 0xec, 0xab, 0xea, 0x68, 0xec, 0xab, - 0xea, 0x68, 0xec, 0xab, 0xeb, 0x68, 0xec, 0xab, 0xeb, 0x68, 0xec, 0xab, - 0xeb, 0x68, 0xec, 0xab, 0xeb, 0x68, 0xec, 0xab, 0xec, 0x68, 0xec, 0xab, - 0xeb, 0x68, 0xec, 0xab, 0xec, 0x68, 0xec, 0xab, 0xeb, 0x68, 0xec, 0xab, - 0xec, 0x68, 0xed, 0xaa, 0xec, 0x68, 0xed, 0xa9, 0xed, 0x68, 0xed, 0xa9, - 0xed, 0x68, 0xed, 0xa9, 0xed, 0x68, 0xee, 0xa9, 0xee, 0x68, 0xee, 0xa9, - 0xee, 0x68, 0xee, 0xa9, 0xee, 0x68, 0xee, 0xaa, 0xef, 0x68, 0xef, 0xaa, - 0xf0, 0x68, 0xef, 0xaa, 0xef, 0x68, 0xef, 0xaa, 0xf0, 0x68, 0xef, 0xaa, - 0xef, 0x68, 0xf0, 0xaa, 0xf0, 0x68, 0xf0, 0xaa, 0xf0, 0x68, 0xf0, 0xaa, - 0xf0, 0x68, 0xf0, 0xaa, 0xf0, 0x68, 0xf1, 0xaa, 0xf1, 0x68, 0xf1, 0xaa, - 0xf1, 0x68, 0xf1, 0xaa, 0xf1, 0x68, 0xf1, 0xaa, 0xf1, 0x68, 0xf2, 0xaa, - 0xf2, 0x68, 0xf2, 0xaa, 0xf2, 0x68, 0xf2, 0xaa, 0xf2, 0x68, 0xf2, 0xaa, - 0xf2, 0x68, 0xf2, 0xaa, 0xf2, 0x68, 0xf3, 0xaa, 0xf3, 0x68, 0xf3, 0xaa, - 0xf3, 0x68, 0xf3, 0xaa, 0xf3, 0x68, 0xf3, 0xaa, 0xf3, 0x68, 0xf4, 0xaa, - 0xf4, 0x68, 0xf4, 0xaa, 0xf4, 0x68, 0xf4, 0xaa, 0xf4, 0x68, 0xf4, 0xaa, - 0xf4, 0x68, 0xf5, 0xaa, 0xf5, 0x68, 0xf5, 0xaa, 0xf5, 0x68, 0xf5, 0xaa, - 0xf5, 0x68, 0xf5, 0xaa, 0xf5, 0x68, 0xf5, 0xaa, 0xf5, 0x68, 0xf6, 0xaa, - 0xf6, 0x68, 0xf6, 0xaa, 0xf6, 0x68, 0xf6, 0xaa, 0xf6, 0x68, 0xf6, 0xaa, - 0xf6, 0x68, 0xf6, 0xab, 0xf7, 0x68, 0xf6, 0xab, 0xf7, 0x68, 0xf6, 0xab, - 0xf7, 0x68, 0xf6, 0xab, 0xf7, 0x68, 0xf6, 0xab, 0xf8, 0x68, 0xf6, 0xab, - 0xf8, 0x68, 0xf6, 0xab, 0xf8, 0x68, 0xf6, 0xab, 0xf8, 0x68, 0xf6, 0xab, - 0xf8, 0x68, 0xf6, 0xab, 0xf9, 0x68, 0xfb, 0xab, 0xf9, 0x6a, 0xfb, 0xab, - 0xf9, 0x68, 0xfb, 0xab, 0xf9, 0x6a, 0xfb, 0xab, 0xfa, 0x68, 0xfb, 0xab, - 0xfa, 0x6a, 0xfb, 0xab, 0xfa, 0x68, 0xfb, 0xab, 0xfa, 0x68, 0xfb, 0xab, - 0xfa, 0x68, 0xfb, 0xab, 0xfb, 0x68, 0xfb, 0xab, 0xfa, 0x68, 0xfb, 0xab, - 0xfb, 0x68, 0xfb, 0xab, 0xfa, 0x68, 0xfc, 0xab, 0xfb, 0x68, 0xfc, 0xaa, - 0xfb, 0x68, 0xfc, 0xab, 0xfb, 0x68, 0xfc, 0xaa, 0xfb, 0x68, 0xfc, 0xab, - 0xfb, 0x68, 0xfd, 0xaa, 0xfb, 0x68, 0xfd, 0xab, 0xfb, 0x68, 0xfd, 0xaa, - 0xfb, 0x68, 0xfd, 0xab, 0xfb, 0x68, 0xfe, 0xaa, 0xfb, 0x68, 0xfe, 0xab, - 0xfb, 0x68, 0xfe, 0xaa, 0xfb, 0x68, 0xfe, 0xab, 0xfb, 0x68, 0xfe, 0xaa, - 0xfb, 0x68, 0xff, 0xab, 0xfb, 0x68, 0xff, 0xaa, 0xfb, 0x68, 0x03, 0xb4, - 0x94, 0x68, 0x0a, 0xb6, 0x93, 0x68, 0x0f, 0xb4, 0x94, 0x68, 0x14, 0xb6, - 0x93, 0x68, 0x17, 0xb4, 0x94, 0x68, 0x1b, 0xb6, 0x93, 0x68, 0x1e, 0xb4, - 0x94, 0x68, 0x20, 0xb2, 0x94, 0x68, 0x23, 0xb4, 0x94, 0x68, 0x25, 0xb2, - 0x94, 0x68, 0x27, 0xb4, 0x94, 0x68, 0x29, 0xb2, 0x94, 0x68, 0x2b, 0xb4, - 0x94, 0x68, 0x2d, 0xb2, 0x94, 0x68, 0x2f, 0xb4, 0x94, 0x68, 0x31, 0xb2, - 0x94, 0x68, 0x32, 0xb4, 0x94, 0x68, 0x34, 0xb2, 0x94, 0x68, 0x35, 0xb4, - 0x94, 0x68, 0x37, 0xb2, 0x94, 0x68, 0x38, 0xb4, 0x94, 0x68, 0x3a, 0xb2, - 0x94, 0x68, 0x3b, 0xb4, 0x94, 0x68, 0x3c, 0xb2, 0x94, 0x68, 0x3e, 0xb4, - 0x94, 0x68, 0x3f, 0xb2, 0x94, 0x68, 0x40, 0xb4, 0x94, 0x68, 0x42, 0xb2, - 0x94, 0x68, 0x43, 0xb4, 0x94, 0x68, 0x44, 0xb2, 0x94, 0x68, 0x45, 0xb4, - 0x94, 0x68, 0x46, 0xb2, 0x94, 0x68, 0x47, 0xaf, 0x94, 0x68, 0x48, 0xb2, - 0x94, 0x68, 0x49, 0xaf, 0x94, 0x68, 0x4a, 0xb2, 0x94, 0x68, 0x4b, 0xaf, - 0x94, 0x68, 0x4c, 0xb2, 0x94, 0x68, 0x4d, 0xaf, 0x94, 0x68, 0x4e, 0xb2, - 0x94, 0x68, 0x4f, 0xaf, 0x94, 0x68, 0x50, 0xb2, 0x94, 0x68, 0x51, 0xaf, - 0x94, 0x68, 0x52, 0xb2, 0x94, 0x68, 0x53, 0xaf, 0x94, 0x68, 0x54, 0xb2, - 0x94, 0x68, 0x55, 0xaf, 0x94, 0x68, 0x56, 0xb2, 0x94, 0x68, 0x57, 0xaf, - 0x94, 0x68, 0x58, 0xb2, 0x94, 0x68, 0x58, 0xaf, 0x94, 0x68, 0x59, 0xb2, - 0x94, 0x68, 0x5a, 0xaf, 0x94, 0x68, 0x5b, 0xb2, 0x94, 0x68, 0x5c, 0xaf, - 0x94, 0x68, 0x5d, 0xb2, 0x94, 0x68, 0x5d, 0xaf, 0x94, 0x68, 0x5e, 0xb2, - 0x94, 0x68, 0x5f, 0xaf, 0x94, 0x68, 0x60, 0xb2, 0x94, 0x68, 0x60, 0xaf, - 0x94, 0x68, 0x61, 0xb2, 0x94, 0x68, 0x62, 0xaf, 0x94, 0x68, 0x63, 0xb2, - 0x94, 0x68, 0x63, 0xaf, 0x94, 0x68, 0x64, 0xb2, 0x94, 0x68, 0x65, 0xaf, - 0x94, 0x68, 0x66, 0xb2, 0x94, 0x68, 0x66, 0xaf, 0x94, 0x68, 0x67, 0xb2, - 0x94, 0x68, 0x68, 0xaf, 0x94, 0x68, 0x68, 0xb2, 0x94, 0x68, 0x69, 0xaf, - 0x94, 0x68, 0x6a, 0xb2, 0x94, 0x68, 0x6a, 0xaf, 0x94, 0x68, 0x6b, 0xb2, - 0x94, 0x68, 0x6c, 0xaf, 0x94, 0x68, 0x6c, 0xad, 0x95, 0x68, 0x6d, 0xaf, - 0x94, 0x68, 0x6e, 0xad, 0x95, 0x68, 0x6e, 0xaf, 0x94, 0x68, 0x6f, 0xad, - 0x95, 0x68, 0x70, 0xaf, 0x94, 0x68, 0x70, 0xad, 0x95, 0x68, 0x71, 0xaf, - 0x94, 0x68, 0x72, 0xad, 0x95, 0x68, 0x72, 0xaf, 0x94, 0x68, 0x73, 0xad, - 0x95, 0x68, 0x73, 0xaf, 0x94, 0x68, 0x74, 0xad, 0x95, 0x68, 0x75, 0xaf, - 0x94, 0x68, 0x75, 0xad, 0x95, 0x68, 0x76, 0xaf, 0x94, 0x68, 0x76, 0xad, - 0x95, 0x68, 0x77, 0xaf, 0x94, 0x68, 0x78, 0xad, 0x95, 0x68, 0x78, 0xaf, - 0x94, 0x68, 0x79, 0xad, 0x95, 0x68, 0x79, 0xaf, 0x94, 0x68, 0x7a, 0xad, - 0x95, 0x68, 0x7a, 0xaf, 0x94, 0x68, 0x7b, 0xad, 0x95, 0x68, 0x7c, 0xaf, - 0x94, 0x68, 0x7c, 0xad, 0x95, 0x68, 0x7d, 0xaf, 0x94, 0x68, 0x7d, 0xad, - 0x95, 0x68, 0x7e, 0xaf, 0x94, 0x68, 0x7e, 0xad, 0x95, 0x68, 0x7f, 0xaf, - 0x94, 0x68, 0x7f, 0xad, 0x95, 0x68, 0x80, 0xaf, 0x94, 0x68, 0x81, 0xad, - 0x95, 0x68, 0x81, 0xaf, 0x94, 0x68, 0x82, 0xad, 0x95, 0x68, 0x82, 0xaf, - 0x94, 0x68, 0x83, 0xad, 0x95, 0x68, 0x83, 0xaf, 0x94, 0x68, 0x84, 0xad, - 0x95, 0x68, 0x84, 0xaf, 0x94, 0x68, 0x85, 0xad, 0x95, 0x68, 0x85, 0xaf, - 0x94, 0x68, 0x86, 0xad, 0x95, 0x68, 0x86, 0xaf, 0x94, 0x68, 0x87, 0xad, - 0x95, 0x68, 0x87, 0xaf, 0x94, 0x68, 0x88, 0xad, 0x95, 0x68, 0x88, 0xaf, - 0x94, 0x68, 0x89, 0xad, 0x95, 0x68, 0x89, 0xaf, 0x94, 0x68, 0x8a, 0xad, - 0x95, 0x68, 0x8a, 0xab, 0x95, 0x68, 0x8b, 0xad, 0x95, 0x68, 0x8b, 0xab, - 0x95, 0x68, 0x8c, 0xad, 0x95, 0x68, 0x8c, 0xab, 0x95, 0x68, 0x8d, 0xad, - 0x95, 0x68, 0x8d, 0xab, 0x95, 0x68, 0x8e, 0xad, 0x95, 0x68, 0x8e, 0xab, - 0x95, 0x68, 0x8e, 0xad, 0x95, 0x68, 0x8f, 0xab, 0x95, 0x68, 0x8f, 0xad, - 0x95, 0x68, 0x90, 0xab, 0x95, 0x68, 0x90, 0xad, 0x95, 0x68, 0x91, 0xab, - 0x95, 0x68, 0x91, 0xad, 0x95, 0x68, 0x92, 0xab, 0x95, 0x68, 0x92, 0xad, - 0x95, 0x68, 0x93, 0xab, 0x95, 0x68, 0x93, 0xad, 0x95, 0x68, 0x94, 0xab, - 0x95, 0x68, 0x94, 0xab, 0x96, 0x68, 0x94, 0xab, 0x95, 0x68, 0x95, 0xab, - 0x96, 0x68, 0x94, 0xab, 0x95, 0x68, 0x95, 0xab, 0x96, 0x68, 0x94, 0xab, - 0x96, 0x68, 0x95, 0xab, 0x97, 0x68, 0x99, 0xab, 0x97, 0x68, 0x99, 0xab, - 0x98, 0x68, 0x99, 0xab, 0x98, 0x68, 0x99, 0xab, 0x98, 0x68, 0x99, 0xab, - 0x98, 0x68, 0x99, 0xab, 0x98, 0x68, 0x9a, 0xab, 0x98, 0x68, 0x9a, 0xab, - 0x98, 0x68, 0x9a, 0xaa, 0x99, 0x68, 0x9b, 0xae, 0x9b, 0x68, 0x9b, 0xae, - 0x9b, 0x68, 0x9c, 0xae, 0x9c, 0x68, 0x9c, 0xae, 0x9c, 0x68, 0x9d, 0xae, - 0x9d, 0x68, 0x9d, 0xae, 0x9c, 0x68, 0x9d, 0xae, 0x9d, 0x68, 0x9e, 0xae, - 0x9c, 0x68, 0x9e, 0xae, 0x9d, 0x68, 0x9f, 0xae, 0x9f, 0x68, 0x9f, 0xae, - 0x9f, 0x68, 0x9f, 0xae, 0x9f, 0x68, 0xa0, 0xae, 0xa0, 0x68, 0xa0, 0xae, - 0xa0, 0x68, 0xa1, 0xae, 0xa1, 0x68, 0xa1, 0xae, 0xa1, 0x68, 0xa1, 0xae, - 0xa1, 0x68, 0xa2, 0xae, 0xa1, 0x68, 0xa2, 0xae, 0xa1, 0x68, 0xa3, 0xae, - 0xa1, 0x68, 0xa3, 0xaf, 0xa3, 0x68, 0xa3, 0xaf, 0xa3, 0x68, 0xa4, 0xaf, - 0xa4, 0x68, 0xa4, 0xaf, 0xa4, 0x68, 0xa5, 0xaf, 0xa5, 0x68, 0xa5, 0xaf, - 0xa5, 0x68, 0xa5, 0xaf, 0xa5, 0x68, 0xa6, 0xaf, 0xa5, 0x68, 0xa6, 0xaf, - 0xa5, 0x68, 0xa6, 0xaf, 0xa5, 0x68, 0xa7, 0xaf, 0xa5, 0x68, 0xa7, 0xaf, - 0xa5, 0x68, 0xa8, 0xaf, 0xa5, 0x68, 0xa8, 0xb0, 0xa8, 0x68, 0xa8, 0xb0, - 0xa8, 0x68, 0xa9, 0xb0, 0xa9, 0x68, 0xa9, 0xb0, 0xa9, 0x68, 0xaa, 0xb0, - 0xaa, 0x68, 0xaa, 0xb0, 0xa9, 0x68, 0xaa, 0xb0, 0xaa, 0x68, 0xab, 0xb0, - 0xa9, 0x68, 0xab, 0xb0, 0xaa, 0x68, 0xab, 0xb0, 0xa9, 0x68, 0xac, 0xb0, - 0xaa, 0x68, 0xac, 0xb0, 0xac, 0x68, 0xac, 0xb0, 0xac, 0x68, 0xad, 0xb0, - 0xad, 0x68, 0xad, 0xb0, 0xad, 0x68, 0xae, 0xb0, 0xae, 0x68, 0xae, 0xb0, - 0xad, 0x68, 0xae, 0xb0, 0xae, 0x68, 0xaf, 0xb0, 0xad, 0x68, 0xaf, 0xb0, - 0xae, 0x68, 0xaf, 0xb0, 0xad, 0x68, 0xb0, 0xb0, 0xae, 0x68, 0xb0, 0xb1, - 0xb0, 0x68, 0xb0, 0xb1, 0xb0, 0x68, 0xb1, 0xb1, 0xb1, 0x68, 0xb1, 0xb1, - 0xb1, 0x68, 0xb2, 0xb1, 0xb2, 0x68, 0xb2, 0xb1, 0xb1, 0x68, 0xb2, 0xb1, - 0xb2, 0x68, 0xb3, 0xb1, 0xb1, 0x68, 0xb3, 0xb1, 0xb2, 0x68, 0xb3, 0xb1, - 0xb1, 0x68, 0xb4, 0xb1, 0xb2, 0x68, 0xb4, 0xb1, 0xb1, 0x68, 0xb4, 0xb1, - 0xb2, 0x68, 0xb5, 0xb2, 0xb5, 0x68, 0xb5, 0xb2, 0xb5, 0x68, 0xb5, 0xb2, - 0xb5, 0x68, 0xb6, 0xb2, 0xb5, 0x68, 0xb6, 0xb2, 0xb5, 0x68, 0xb6, 0xb2, - 0xb5, 0x68, 0xb7, 0xb2, 0xb5, 0x68, 0xb7, 0xb2, 0xb5, 0x68, 0xb7, 0xb2, - 0xb5, 0x68, 0xb8, 0xb2, 0xb5, 0x68, 0xb8, 0xb2, 0xb5, 0x68, 0xb8, 0xb3, - 0xb8, 0x68, 0xb9, 0xb3, 0xb9, 0x68, 0xb9, 0xb3, 0xb9, 0x68, 0xb9, 0xb3, - 0xb9, 0x68, 0xba, 0xb3, 0xb9, 0x68, 0xba, 0xb3, 0xb9, 0x68, 0xba, 0xb3, - 0xb9, 0x68, 0xbb, 0xb3, 0xb9, 0x68, 0xbb, 0xb3, 0xb9, 0x68, 0xbb, 0xb3, - 0xb9, 0x68, 0xbc, 0xb3, 0xb9, 0x68, 0xbc, 0xb3, 0xb9, 0x68, 0xbc, 0xb3, - 0xbc, 0x68, 0xbd, 0xb3, 0xbd, 0x68, 0xbd, 0xb3, 0xbd, 0x68, 0xbd, 0xb3, - 0xbd, 0x68, 0xbe, 0xb3, 0xbd, 0x68, 0xbe, 0xb3, 0xbd, 0x68, 0xbe, 0xb3, - 0xbd, 0x68, 0xbf, 0xb3, 0xbd, 0x68, 0xbf, 0xb3, 0xbd, 0x68, 0xbf, 0xb3, - 0xbd, 0x68, 0xc0, 0xb3, 0xbd, 0x68, 0xc0, 0xb4, 0xc0, 0x68, 0xc0, 0xb4, - 0xc0, 0x68, 0xc1, 0xb4, 0xc1, 0x68, 0xc1, 0xb4, 0xc0, 0x68, 0xc1, 0xb4, - 0xc1, 0x68, 0xc1, 0xb4, 0xc0, 0x68, 0xc2, 0xb4, 0xc1, 0x68, 0xc2, 0xb4, - 0xc0, 0x68, 0xc2, 0xb4, 0xc1, 0x68, 0xc3, 0xb4, 0xc0, 0x68, 0xc3, 0xb4, - 0xc1, 0x68, 0xc3, 0xb5, 0xc3, 0x68, 0xc4, 0xb5, 0xc4, 0x68, 0xc4, 0xb5, - 0xc4, 0x68, 0xc4, 0xb5, 0xc4, 0x68, 0xc5, 0xb5, 0xc4, 0x68, 0xc5, 0xb5, - 0xc4, 0x68, 0xc5, 0xb5, 0xc4, 0x68, 0xc6, 0xb5, 0xc4, 0x68, 0xc6, 0xb5, - 0xc4, 0x68, 0xc6, 0xb5, 0xc4, 0x68, 0xc6, 0xb5, 0xc4, 0x68, 0xc7, 0xb5, - 0xc4, 0x68, 0xc7, 0xb5, 0xc4, 0x68, 0xc7, 0xb5, 0xc7, 0x68, 0xc8, 0xb5, - 0xc7, 0x68, 0xc8, 0xaf, 0xd0, 0x68, 0xc8, 0xae, 0xd0, 0x68, 0xc9, 0xaf, - 0xd0, 0x68, 0xc9, 0xae, 0xd0, 0x68, 0xc9, 0xab, 0xd0, 0x68, 0xc9, 0xae, - 0xd0, 0x68, 0xca, 0xab, 0xd0, 0x68, 0xca, 0xae, 0xd0, 0x68, 0xca, 0xab, - 0xd0, 0x68, 0xcb, 0xae, 0xd0, 0x68, 0xcb, 0xab, 0xd0, 0x68, 0xcb, 0xae, - 0xd0, 0x68, 0xcc, 0xab, 0xd0, 0x68, 0xcc, 0xae, 0xd0, 0x68, 0xcc, 0xab, - 0xd0, 0x68, 0xcc, 0xae, 0xd0, 0x68, 0xcd, 0xab, 0xd0, 0x68, 0xcd, 0xae, - 0xd0, 0x68, 0xcd, 0xab, 0xd0, 0x68, 0xce, 0xae, 0xd0, 0x68, 0xce, 0xab, - 0xd0, 0x68, 0xce, 0xab, 0xd0, 0x68, 0xce, 0xab, 0xd0, 0x68, 0xcf, 0xab, - 0xd0, 0x68, 0xcf, 0xab, 0xd0, 0x68, 0xcf, 0xab, 0xd0, 0x68, 0xd0, 0xab, - 0xd0, 0x68, 0xd0, 0xab, 0xd0, 0x68, 0xd0, 0xab, 0xd0, 0x67, 0xd0, 0xab, - 0xd0, 0x68, 0xd0, 0xab, 0xd1, 0x67, 0xd0, 0xab, 0xd1, 0x68, 0xd0, 0xab, - 0xd1, 0x67, 0xd0, 0xab, 0xd2, 0x68, 0xd0, 0xab, 0xd2, 0x67, 0xd0, 0xab, - 0xd2, 0x68, 0xd0, 0xab, 0xd2, 0x67, 0xd0, 0xab, 0xd3, 0x68, 0xd0, 0xab, - 0xd3, 0x67, 0xd0, 0xab, 0xd3, 0x68, 0xd0, 0xab, 0xd4, 0x67, 0xd0, 0xab, - 0xd4, 0x68, 0xd0, 0xab, 0xd4, 0x67, 0xd0, 0xab, 0xd4, 0x68, 0xd0, 0xab, - 0xd5, 0x67, 0xd0, 0xab, 0xd5, 0x64, 0xd0, 0xab, 0xd5, 0x67, 0xd0, 0xab, - 0xd6, 0x64, 0xd0, 0xab, 0xd6, 0x67, 0xd0, 0xab, 0xd6, 0x64, 0xd0, 0xab, - 0xd6, 0x67, 0xd0, 0xab, 0xd7, 0x64, 0xd0, 0xab, 0xd7, 0x67, 0xd0, 0xab, - 0xd7, 0x64, 0xd0, 0xab, 0xd7, 0x67, 0xd0, 0xab, 0xd8, 0x64, 0xd0, 0xab, - 0xd8, 0x67, 0xd0, 0xab, 0xd8, 0x64, 0xd0, 0xab, 0xd9, 0x67, 0xd0, 0xab, - 0xd9, 0x64, 0xd0, 0xab, 0xd9, 0x67, 0xd0, 0xab, 0xd9, 0x64, 0xd0, 0xab, - 0xda, 0x67, 0xd0, 0xab, 0xda, 0x64, 0xd0, 0xab, 0xda, 0x67, 0xd0, 0xab, - 0xda, 0x64, 0xd0, 0xab, 0xdb, 0x67, 0xd0, 0xab, 0xdb, 0x64, 0xd0, 0xab, - 0xdb, 0x67, 0xd0, 0xab, 0xdb, 0x64, 0xd0, 0xab, 0xdc, 0x67, 0xd0, 0xab, - 0xdc, 0x64, 0xd0, 0xab, 0xdc, 0x67, 0xd0, 0xab, 0xdd, 0x64, 0xd0, 0xab, - 0xdd, 0x67, 0xd0, 0xab, 0xdd, 0x64, 0xd0, 0xab, 0xdd, 0x67, 0xd0, 0xab, - 0xde, 0x64, 0xe1, 0xab, 0xde, 0x50, 0xe1, 0xab, 0xde, 0x50, 0xe1, 0xab, - 0xde, 0x50, 0xe1, 0xab, 0xdf, 0x50, 0xe1, 0xab, 0xdf, 0x50, 0xe3, 0xab, - 0xdf, 0x51, 0xe3, 0xab, 0xdf, 0x51, 0xe3, 0xab, 0xe0, 0x51, 0xec, 0xab, - 0xe0, 0x6b, 0xec, 0xab, 0xe0, 0x68, 0xec, 0xab, 0xe1, 0x6b, 0xec, 0xab, - 0xe1, 0x68, 0xec, 0xab, 0xe1, 0x6b, 0xec, 0xab, 0xe1, 0x68, 0xec, 0xab, - 0xe2, 0x6b, 0xec, 0xab, 0xe2, 0x68, 0xec, 0xab, 0xe2, 0x6b, 0xec, 0xab, - 0xe2, 0x68, 0xec, 0xab, 0xe3, 0x6b, 0xec, 0xab, 0xe3, 0x68, 0xec, 0xab, - 0xe3, 0x6b, 0xec, 0xab, 0xe3, 0x68, 0xec, 0xab, 0xe4, 0x6b, 0xec, 0xab, - 0xe4, 0x68, 0xec, 0xab, 0xe4, 0x6b, 0xec, 0xab, 0xe4, 0x68, 0xec, 0xab, - 0xe5, 0x6b, 0xec, 0xab, 0xe5, 0x68, 0xec, 0xab, 0xe5, 0x6b, 0xec, 0xab, - 0xe5, 0x68, 0xec, 0xab, 0xe6, 0x6b, 0xec, 0xab, 0xe6, 0x68, 0xec, 0xab, - 0xe6, 0x6b, 0xec, 0xab, 0xe6, 0x68, 0xec, 0xab, 0xe7, 0x6b, 0xec, 0xab, - 0xe7, 0x68, 0xec, 0xab, 0xe7, 0x6b, 0xec, 0xab, 0xe7, 0x68, 0xec, 0xab, - 0xe8, 0x6b, 0xec, 0xab, 0xe8, 0x68, 0xec, 0xab, 0xe8, 0x6b, 0xec, 0xab, - 0xe8, 0x68, 0xec, 0xab, 0xe9, 0x6b, 0xec, 0xab, 0xe9, 0x68, 0xec, 0xab, - 0xe9, 0x6b, 0xec, 0xab, 0xe9, 0x68, 0xec, 0xab, 0xea, 0x6b, 0xec, 0xab, - 0xea, 0x68, 0xec, 0xab, 0xea, 0x68, 0xec, 0xab, 0xea, 0x68, 0xec, 0xab, - 0xeb, 0x68, 0xec, 0xab, 0xeb, 0x68, 0xec, 0xab, 0xeb, 0x68, 0xec, 0xab, - 0xeb, 0x68, 0xec, 0xab, 0xec, 0x68, 0xec, 0xab, 0xeb, 0x68, 0xec, 0xab, - 0xec, 0x68, 0xec, 0xab, 0xeb, 0x68, 0xec, 0xab, 0xec, 0x68, 0xed, 0xaa, - 0xec, 0x68, 0xed, 0xab, 0xec, 0x68, 0xed, 0xa9, 0xee, 0x68, 0xed, 0xa9, - 0xed, 0x68, 0xee, 0xa9, 0xee, 0x68, 0xee, 0xa9, 0xee, 0x68, 0xee, 0xa9, - 0xee, 0x68, 0xee, 0xa9, 0xee, 0x68, 0xef, 0xa9, 0xef, 0x68, 0xef, 0xa9, - 0xef, 0x68, 0xef, 0xa9, 0xef, 0x68, 0xef, 0xa9, 0xef, 0x68, 0xf0, 0xa9, - 0xf0, 0x68, 0xf0, 0xa9, 0xf0, 0x68, 0xf0, 0xa9, 0xf0, 0x68, 0xf0, 0xaa, - 0xf1, 0x68, 0xf1, 0xaa, 0xf2, 0x68, 0xf1, 0xaa, 0xf1, 0x68, 0xf1, 0xaa, - 0xf2, 0x68, 0xf1, 0xaa, 0xf1, 0x68, 0xf2, 0xaa, 0xf2, 0x68, 0xf2, 0xaa, - 0xf2, 0x68, 0xf2, 0xaa, 0xf2, 0x68, 0xf2, 0xaa, 0xf2, 0x68, 0xf2, 0xaa, - 0xf2, 0x68, 0xf3, 0xaa, 0xf3, 0x68, 0xf3, 0xaa, 0xf3, 0x68, 0xf3, 0xaa, - 0xf3, 0x68, 0xf3, 0xaa, 0xf3, 0x68, 0xf4, 0xaa, 0xf4, 0x68, 0xf4, 0xaa, - 0xf4, 0x68, 0xf4, 0xaa, 0xf4, 0x68, 0xf4, 0xab, 0xf5, 0x68, 0xf5, 0xab, - 0xf5, 0x68, 0xf5, 0xab, 0xf5, 0x68, 0xf5, 0xab, 0xf5, 0x68, 0xf5, 0xab, - 0xf5, 0x68, 0xf5, 0xab, 0xf5, 0x68, 0xf6, 0xab, 0xf6, 0x68, 0xf6, 0xab, - 0xf6, 0x68, 0xf6, 0xab, 0xf6, 0x68, 0xf6, 0xab, 0xf6, 0x68, 0xf6, 0xab, - 0xf7, 0x68, 0xf6, 0xab, 0xf7, 0x68, 0xf6, 0xab, 0xf7, 0x68, 0xf6, 0xab, - 0xf7, 0x68, 0xf6, 0xab, 0xf8, 0x68, 0xf6, 0xab, 0xf8, 0x68, 0xf6, 0xab, - 0xf8, 0x68, 0xf6, 0xab, 0xf8, 0x68, 0xf6, 0xab, 0xf8, 0x68, 0xf6, 0xab, - 0xf9, 0x68, 0xfb, 0xab, 0xf9, 0x69, 0xfb, 0xab, 0xf9, 0x68, 0xfb, 0xab, - 0xf9, 0x69, 0xfb, 0xab, 0xfa, 0x68, 0xfb, 0xab, 0xfa, 0x69, 0xfb, 0xab, - 0xfa, 0x68, 0xfb, 0xab, 0xfa, 0x69, 0xfb, 0xab, 0xfa, 0x68, 0xfb, 0xab, - 0xfb, 0x68, 0xfb, 0xab, 0xfa, 0x68, 0xfb, 0xab, 0xfb, 0x68, 0xfb, 0xab, - 0xfa, 0x68, 0xfc, 0xab, 0xfb, 0x68, 0xfc, 0xaa, 0xfb, 0x68, 0xfc, 0xab, - 0xfb, 0x68, 0xfc, 0xaa, 0xfb, 0x68, 0xfc, 0xab, 0xfb, 0x68, 0xfd, 0xaa, - 0xfb, 0x68, 0xfd, 0xab, 0xfb, 0x68, 0xfd, 0xaa, 0xfb, 0x68, 0xfd, 0xab, - 0xfb, 0x68, 0xfe, 0xaa, 0xfb, 0x68, 0xfe, 0xab, 0xfb, 0x68, 0xfe, 0xaa, - 0xfb, 0x68, 0xfe, 0xab, 0xfb, 0x68, 0xfe, 0xaa, 0xfb, 0x68, 0xff, 0xab, - 0xfb, 0x68, 0xff, 0xaa, 0xfb, 0x68, 0x03, 0xb4, 0x94, 0x69, 0x0a, 0xb2, - 0x94, 0x69, 0x0f, 0xb4, 0x94, 0x69, 0x14, 0xb2, 0x94, 0x69, 0x17, 0xb4, - 0x94, 0x69, 0x1b, 0xb2, 0x94, 0x69, 0x1e, 0xb4, 0x94, 0x69, 0x20, 0xb2, - 0x94, 0x69, 0x23, 0xb4, 0x94, 0x69, 0x25, 0xb2, 0x94, 0x69, 0x27, 0xb4, - 0x94, 0x69, 0x29, 0xb2, 0x94, 0x69, 0x2b, 0xb4, 0x94, 0x69, 0x2d, 0xb2, - 0x94, 0x69, 0x2f, 0xb4, 0x94, 0x69, 0x31, 0xb2, 0x94, 0x69, 0x32, 0xb4, - 0x94, 0x69, 0x34, 0xb2, 0x94, 0x69, 0x35, 0xb4, 0x94, 0x69, 0x37, 0xb2, - 0x94, 0x69, 0x38, 0xb4, 0x94, 0x69, 0x3a, 0xb2, 0x94, 0x69, 0x3b, 0xb4, - 0x94, 0x69, 0x3c, 0xb2, 0x94, 0x69, 0x3e, 0xb4, 0x94, 0x69, 0x3f, 0xb2, - 0x94, 0x69, 0x40, 0xb4, 0x94, 0x69, 0x42, 0xb2, 0x94, 0x69, 0x43, 0xb4, - 0x94, 0x69, 0x44, 0xb2, 0x94, 0x69, 0x45, 0xb4, 0x94, 0x69, 0x46, 0xb2, - 0x94, 0x69, 0x47, 0xb4, 0x94, 0x69, 0x48, 0xb2, 0x94, 0x69, 0x49, 0xb4, - 0x94, 0x69, 0x4a, 0xb2, 0x94, 0x69, 0x4b, 0xb4, 0x94, 0x69, 0x4c, 0xb2, - 0x94, 0x69, 0x4d, 0xb4, 0x94, 0x69, 0x4e, 0xb2, 0x94, 0x69, 0x4f, 0xb4, - 0x94, 0x69, 0x50, 0xb2, 0x94, 0x69, 0x51, 0xb4, 0x94, 0x69, 0x52, 0xb2, - 0x94, 0x69, 0x53, 0xb4, 0x94, 0x69, 0x54, 0xb2, 0x94, 0x69, 0x55, 0xb4, - 0x94, 0x69, 0x56, 0xb2, 0x94, 0x69, 0x57, 0xb4, 0x94, 0x69, 0x58, 0xb2, - 0x94, 0x69, 0x58, 0xb4, 0x94, 0x69, 0x59, 0xb2, 0x94, 0x69, 0x5a, 0xb4, - 0x94, 0x69, 0x5b, 0xb2, 0x94, 0x69, 0x5c, 0xb4, 0x94, 0x69, 0x5d, 0xb2, - 0x94, 0x69, 0x5d, 0xaf, 0x94, 0x69, 0x5e, 0xb2, 0x94, 0x69, 0x5f, 0xaf, - 0x94, 0x69, 0x60, 0xb2, 0x94, 0x69, 0x60, 0xaf, 0x94, 0x69, 0x61, 0xb2, - 0x94, 0x69, 0x62, 0xaf, 0x94, 0x69, 0x63, 0xb2, 0x94, 0x69, 0x63, 0xaf, - 0x94, 0x69, 0x64, 0xb2, 0x94, 0x69, 0x65, 0xaf, 0x94, 0x69, 0x66, 0xb2, - 0x94, 0x69, 0x66, 0xaf, 0x94, 0x69, 0x67, 0xb2, 0x94, 0x69, 0x68, 0xaf, - 0x94, 0x69, 0x68, 0xb2, 0x94, 0x69, 0x69, 0xaf, 0x94, 0x69, 0x6a, 0xb2, - 0x94, 0x69, 0x6a, 0xaf, 0x94, 0x69, 0x6b, 0xb2, 0x94, 0x69, 0x6c, 0xaf, - 0x94, 0x69, 0x6c, 0xb2, 0x94, 0x69, 0x6d, 0xaf, 0x94, 0x69, 0x6e, 0xb2, - 0x94, 0x69, 0x6e, 0xaf, 0x94, 0x69, 0x6f, 0xb2, 0x94, 0x69, 0x70, 0xaf, - 0x94, 0x69, 0x70, 0xb2, 0x94, 0x69, 0x71, 0xaf, 0x94, 0x69, 0x72, 0xb2, - 0x94, 0x69, 0x72, 0xaf, 0x94, 0x69, 0x73, 0xb2, 0x94, 0x69, 0x73, 0xaf, - 0x94, 0x69, 0x74, 0xb2, 0x94, 0x69, 0x75, 0xaf, 0x94, 0x69, 0x75, 0xb2, - 0x94, 0x69, 0x76, 0xaf, 0x94, 0x69, 0x76, 0xad, 0x95, 0x69, 0x77, 0xaf, - 0x94, 0x69, 0x78, 0xad, 0x95, 0x69, 0x78, 0xaf, 0x94, 0x69, 0x79, 0xad, - 0x95, 0x69, 0x79, 0xaf, 0x94, 0x69, 0x7a, 0xad, 0x95, 0x69, 0x7a, 0xaf, - 0x94, 0x69, 0x7b, 0xad, 0x95, 0x69, 0x7c, 0xaf, 0x94, 0x69, 0x7c, 0xad, - 0x95, 0x69, 0x7d, 0xaf, 0x94, 0x69, 0x7d, 0xad, 0x95, 0x69, 0x7e, 0xaf, - 0x94, 0x69, 0x7e, 0xad, 0x95, 0x69, 0x7f, 0xaf, 0x94, 0x69, 0x7f, 0xad, - 0x95, 0x69, 0x80, 0xaf, 0x94, 0x69, 0x81, 0xad, 0x95, 0x69, 0x81, 0xaf, - 0x94, 0x69, 0x82, 0xad, 0x95, 0x69, 0x82, 0xaf, 0x94, 0x69, 0x83, 0xad, - 0x95, 0x69, 0x83, 0xaf, 0x94, 0x69, 0x84, 0xad, 0x95, 0x69, 0x84, 0xaf, - 0x94, 0x69, 0x85, 0xad, 0x95, 0x69, 0x85, 0xaf, 0x94, 0x69, 0x86, 0xad, - 0x95, 0x69, 0x86, 0xaf, 0x94, 0x69, 0x87, 0xad, 0x95, 0x69, 0x87, 0xaf, - 0x94, 0x69, 0x88, 0xad, 0x95, 0x69, 0x88, 0xaf, 0x94, 0x69, 0x89, 0xad, - 0x95, 0x69, 0x89, 0xaf, 0x94, 0x69, 0x8a, 0xad, 0x95, 0x69, 0x8a, 0xac, - 0x95, 0x69, 0x8b, 0xad, 0x95, 0x69, 0x8b, 0xac, 0x95, 0x69, 0x8c, 0xad, - 0x95, 0x69, 0x8c, 0xac, 0x95, 0x69, 0x8d, 0xad, 0x95, 0x69, 0x8d, 0xac, - 0x95, 0x69, 0x8e, 0xad, 0x95, 0x69, 0x8e, 0xac, 0x95, 0x69, 0x8e, 0xad, - 0x95, 0x69, 0x8f, 0xac, 0x95, 0x69, 0x8f, 0xad, 0x95, 0x69, 0x90, 0xac, - 0x95, 0x69, 0x90, 0xad, 0x95, 0x69, 0x91, 0xac, 0x95, 0x69, 0x91, 0xad, - 0x95, 0x69, 0x92, 0xac, 0x95, 0x69, 0x92, 0xad, 0x95, 0x69, 0x93, 0xac, - 0x95, 0x69, 0x93, 0xad, 0x95, 0x69, 0x94, 0xac, 0x95, 0x69, 0x94, 0xac, - 0x96, 0x69, 0x94, 0xac, 0x95, 0x69, 0x95, 0xac, 0x96, 0x69, 0x94, 0xac, - 0x95, 0x69, 0x95, 0xac, 0x96, 0x69, 0x94, 0xac, 0x96, 0x69, 0x95, 0xac, - 0x97, 0x69, 0x99, 0xac, 0x97, 0x69, 0x98, 0xac, 0x98, 0x6a, 0x99, 0xac, - 0x98, 0x69, 0x99, 0xac, 0x98, 0x69, 0x99, 0xac, 0x98, 0x69, 0x99, 0xac, - 0x98, 0x69, 0x9a, 0xac, 0x98, 0x69, 0x9a, 0xac, 0x98, 0x69, 0x9a, 0xad, - 0x9a, 0x69, 0x9b, 0xad, 0x9a, 0x69, 0x9b, 0xad, 0x9a, 0x69, 0x9c, 0xad, - 0x9a, 0x69, 0x9c, 0xae, 0x9c, 0x69, 0x9d, 0xae, 0x9d, 0x69, 0x9d, 0xae, - 0x9d, 0x69, 0x9d, 0xae, 0x9d, 0x69, 0x9e, 0xae, 0x9e, 0x69, 0x9e, 0xae, - 0x9e, 0x69, 0x9f, 0xae, 0x9f, 0x69, 0x9f, 0xae, 0x9e, 0x69, 0x9f, 0xae, - 0x9f, 0x69, 0xa0, 0xae, 0x9e, 0x69, 0xa0, 0xae, 0x9f, 0x69, 0xa1, 0xaf, - 0xa1, 0x69, 0xa1, 0xaf, 0xa1, 0x69, 0xa1, 0xaf, 0xa1, 0x69, 0xa2, 0xaf, - 0xa2, 0x69, 0xa2, 0xaf, 0xa2, 0x69, 0xa3, 0xaf, 0xa3, 0x69, 0xa3, 0xaf, - 0xa3, 0x69, 0xa3, 0xaf, 0xa3, 0x69, 0xa4, 0xaf, 0xa3, 0x69, 0xa4, 0xaf, - 0xa3, 0x69, 0xa5, 0xaf, 0xa3, 0x69, 0xa5, 0xaf, 0xa5, 0x69, 0xa5, 0xaf, - 0xa5, 0x69, 0xa6, 0xaf, 0xa6, 0x69, 0xa6, 0xaf, 0xa6, 0x69, 0xa6, 0xaf, - 0xa6, 0x69, 0xa7, 0xaf, 0xa7, 0x69, 0xa7, 0xaf, 0xa7, 0x69, 0xa8, 0xaf, - 0xa8, 0x69, 0xa8, 0xaf, 0xa7, 0x69, 0xa8, 0xaf, 0xa8, 0x69, 0xa9, 0xaf, - 0xa7, 0x69, 0xa9, 0xaf, 0xa8, 0x69, 0xaa, 0xaf, 0xa7, 0x69, 0xaa, 0xaf, - 0xa8, 0x69, 0xaa, 0xb0, 0xaa, 0x69, 0xab, 0xb0, 0xab, 0x69, 0xab, 0xb0, - 0xab, 0x69, 0xab, 0xb0, 0xab, 0x69, 0xac, 0xb0, 0xac, 0x69, 0xac, 0xb0, - 0xab, 0x69, 0xac, 0xb0, 0xac, 0x69, 0xad, 0xb0, 0xab, 0x69, 0xad, 0xb0, - 0xac, 0x69, 0xae, 0xb0, 0xab, 0x69, 0xae, 0xb0, 0xac, 0x69, 0xae, 0xb1, - 0xae, 0x69, 0xaf, 0xb1, 0xaf, 0x69, 0xaf, 0xb1, 0xaf, 0x69, 0xaf, 0xb1, - 0xaf, 0x69, 0xb0, 0xb1, 0xb0, 0x69, 0xb0, 0xb1, 0xaf, 0x69, 0xb0, 0xb1, - 0xb0, 0x69, 0xb1, 0xb1, 0xaf, 0x69, 0xb1, 0xb1, 0xb0, 0x69, 0xb2, 0xb1, - 0xaf, 0x69, 0xb2, 0xb1, 0xb0, 0x69, 0xb2, 0xb2, 0xb2, 0x69, 0xb3, 0xb2, - 0xb3, 0x69, 0xb3, 0xb2, 0xb3, 0x69, 0xb3, 0xb2, 0xb3, 0x69, 0xb4, 0xb2, - 0xb4, 0x69, 0xb4, 0xb2, 0xb3, 0x69, 0xb4, 0xb2, 0xb4, 0x69, 0xb5, 0xb2, - 0xb3, 0x69, 0xb5, 0xb2, 0xb4, 0x69, 0xb5, 0xb2, 0xb3, 0x69, 0xb6, 0xb2, - 0xb4, 0x69, 0xb6, 0xb2, 0xb3, 0x69, 0xb6, 0xb2, 0xb4, 0x69, 0xb7, 0xb2, - 0xb7, 0x69, 0xb7, 0xb2, 0xb7, 0x69, 0xb7, 0xb2, 0xb7, 0x69, 0xb8, 0xb2, - 0xb7, 0x69, 0xb8, 0xb2, 0xb7, 0x69, 0xb8, 0xb2, 0xb7, 0x69, 0xb9, 0xb2, - 0xb7, 0x69, 0xb9, 0xb2, 0xb7, 0x69, 0xb9, 0xb2, 0xb7, 0x69, 0xba, 0xb2, - 0xb7, 0x69, 0xba, 0xb2, 0xb7, 0x69, 0xba, 0xb3, 0xba, 0x69, 0xbb, 0xb3, - 0xbb, 0x69, 0xbb, 0xb3, 0xbb, 0x69, 0xbb, 0xb3, 0xbb, 0x69, 0xbc, 0xb3, - 0xbb, 0x69, 0xbc, 0xb3, 0xbb, 0x69, 0xbc, 0xb3, 0xbb, 0x69, 0xbd, 0xb3, - 0xbb, 0x69, 0xbd, 0xb3, 0xbb, 0x69, 0xbd, 0xb3, 0xbb, 0x69, 0xbe, 0xb3, - 0xbb, 0x69, 0xbe, 0xb4, 0xbe, 0x69, 0xbe, 0xb4, 0xbe, 0x69, 0xbf, 0xb4, - 0xbf, 0x69, 0xbf, 0xb4, 0xbe, 0x69, 0xbf, 0xb4, 0xbf, 0x69, 0xc0, 0xb4, - 0xbe, 0x69, 0xc0, 0xb4, 0xbf, 0x69, 0xc0, 0xb4, 0xbe, 0x69, 0xc1, 0xb4, - 0xbf, 0x69, 0xc1, 0xb4, 0xbe, 0x69, 0xc1, 0xb4, 0xbf, 0x69, 0xc1, 0xb4, - 0xc1, 0x69, 0xc2, 0xb4, 0xc2, 0x69, 0xc2, 0xb4, 0xc2, 0x69, 0xc2, 0xb4, - 0xc2, 0x69, 0xc3, 0xb4, 0xc2, 0x69, 0xc3, 0xb4, 0xc2, 0x69, 0xc3, 0xb4, - 0xc2, 0x69, 0xc4, 0xb4, 0xc2, 0x69, 0xc4, 0xb4, 0xc2, 0x69, 0xc4, 0xb4, - 0xc2, 0x69, 0xc5, 0xb4, 0xc2, 0x69, 0xc5, 0xb5, 0xc5, 0x69, 0xc5, 0xb5, - 0xc5, 0x69, 0xc6, 0xb5, 0xc6, 0x69, 0xc6, 0xb5, 0xc6, 0x69, 0xc6, 0xb5, - 0xc6, 0x69, 0xc6, 0xb5, 0xc6, 0x69, 0xc7, 0xb5, 0xc6, 0x69, 0xc7, 0xb5, - 0xc6, 0x69, 0xc7, 0xb5, 0xc6, 0x69, 0xc8, 0xb5, 0xc6, 0x69, 0xc8, 0xb5, - 0xc6, 0x69, 0xc8, 0xad, 0xd0, 0x69, 0xc9, 0xaf, 0xd0, 0x69, 0xc9, 0xad, - 0xd0, 0x69, 0xc9, 0xac, 0xd0, 0x69, 0xc9, 0xad, 0xd0, 0x69, 0xca, 0xac, - 0xd0, 0x69, 0xca, 0xad, 0xd0, 0x69, 0xca, 0xac, 0xd0, 0x69, 0xcb, 0xad, - 0xd0, 0x69, 0xcb, 0xac, 0xd0, 0x69, 0xcb, 0xad, 0xd0, 0x69, 0xcc, 0xac, - 0xd0, 0x69, 0xcc, 0xad, 0xd0, 0x69, 0xcc, 0xac, 0xd0, 0x69, 0xcc, 0xad, - 0xd0, 0x69, 0xcd, 0xac, 0xd0, 0x69, 0xcd, 0xad, 0xd0, 0x69, 0xcd, 0xac, - 0xd0, 0x69, 0xce, 0xad, 0xd0, 0x69, 0xce, 0xac, 0xd0, 0x69, 0xce, 0xad, - 0xd0, 0x69, 0xce, 0xac, 0xd0, 0x69, 0xcf, 0xad, 0xd0, 0x69, 0xcf, 0xac, - 0xd0, 0x69, 0xcf, 0xac, 0xd0, 0x69, 0xd0, 0xac, 0xd0, 0x69, 0xd0, 0xac, - 0xd0, 0x69, 0xd0, 0xac, 0xd0, 0x69, 0xd0, 0xac, 0xd0, 0x69, 0xd0, 0xac, - 0xd1, 0x69, 0xd0, 0xac, 0xd1, 0x69, 0xd0, 0xac, 0xd1, 0x67, 0xd0, 0xac, - 0xd2, 0x69, 0xd0, 0xac, 0xd2, 0x67, 0xd0, 0xac, 0xd2, 0x69, 0xd0, 0xac, - 0xd2, 0x67, 0xd0, 0xac, 0xd3, 0x69, 0xd0, 0xac, 0xd3, 0x67, 0xd0, 0xac, - 0xd3, 0x69, 0xd0, 0xac, 0xd4, 0x67, 0xd0, 0xac, 0xd4, 0x69, 0xd0, 0xac, - 0xd4, 0x67, 0xd0, 0xac, 0xd4, 0x69, 0xd0, 0xac, 0xd5, 0x67, 0xd0, 0xac, - 0xd5, 0x65, 0xd0, 0xac, 0xd5, 0x67, 0xd0, 0xac, 0xd6, 0x65, 0xd0, 0xac, - 0xd6, 0x67, 0xd0, 0xac, 0xd6, 0x65, 0xd0, 0xac, 0xd6, 0x67, 0xd0, 0xac, - 0xd7, 0x65, 0xd0, 0xac, 0xd7, 0x67, 0xd0, 0xac, 0xd7, 0x65, 0xd0, 0xac, - 0xd7, 0x67, 0xd0, 0xac, 0xd8, 0x65, 0xd0, 0xac, 0xd8, 0x67, 0xd0, 0xac, - 0xd8, 0x65, 0xd0, 0xac, 0xd9, 0x67, 0xd0, 0xac, 0xd9, 0x65, 0xd0, 0xac, - 0xd9, 0x67, 0xd0, 0xac, 0xd9, 0x65, 0xd0, 0xac, 0xda, 0x67, 0xd0, 0xac, - 0xda, 0x65, 0xd0, 0xac, 0xda, 0x67, 0xd0, 0xac, 0xda, 0x65, 0xd0, 0xac, - 0xdb, 0x67, 0xd0, 0xac, 0xdb, 0x65, 0xd0, 0xac, 0xdb, 0x67, 0xd0, 0xac, - 0xdb, 0x65, 0xd0, 0xac, 0xdc, 0x67, 0xd0, 0xac, 0xdc, 0x65, 0xd0, 0xac, - 0xdc, 0x67, 0xd0, 0xac, 0xdd, 0x65, 0xd1, 0xac, 0xdd, 0x62, 0xd0, 0xac, - 0xdd, 0x65, 0xd1, 0xac, 0xdd, 0x62, 0xd0, 0xac, 0xde, 0x65, 0xd1, 0xac, - 0xde, 0x62, 0xdf, 0xac, 0xde, 0x50, 0xdf, 0xac, 0xde, 0x50, 0xe2, 0xac, - 0xdf, 0x51, 0xe3, 0xac, 0xdf, 0x51, 0xe2, 0xac, 0xdf, 0x51, 0xec, 0xac, - 0xdf, 0x6b, 0xeb, 0xac, 0xe0, 0x6f, 0xec, 0xac, 0xe0, 0x6b, 0xeb, 0xac, - 0xe0, 0x6f, 0xec, 0xac, 0xe1, 0x6b, 0xeb, 0xac, 0xe1, 0x6f, 0xec, 0xac, - 0xe1, 0x6b, 0xeb, 0xac, 0xe1, 0x6f, 0xec, 0xac, 0xe2, 0x6b, 0xeb, 0xac, - 0xe2, 0x6f, 0xec, 0xac, 0xe2, 0x6b, 0xeb, 0xac, 0xe2, 0x6f, 0xec, 0xac, - 0xe3, 0x6b, 0xec, 0xac, 0xe3, 0x69, 0xec, 0xac, 0xe3, 0x6b, 0xec, 0xac, - 0xe3, 0x69, 0xec, 0xac, 0xe4, 0x6b, 0xec, 0xac, 0xe4, 0x69, 0xec, 0xac, - 0xe4, 0x6b, 0xec, 0xac, 0xe4, 0x69, 0xec, 0xac, 0xe5, 0x6b, 0xec, 0xac, - 0xe5, 0x69, 0xec, 0xac, 0xe5, 0x6b, 0xec, 0xac, 0xe5, 0x69, 0xec, 0xac, - 0xe6, 0x6b, 0xec, 0xac, 0xe6, 0x69, 0xec, 0xac, 0xe6, 0x6b, 0xec, 0xac, - 0xe6, 0x69, 0xec, 0xac, 0xe7, 0x6b, 0xec, 0xac, 0xe7, 0x69, 0xec, 0xac, - 0xe7, 0x6b, 0xec, 0xac, 0xe7, 0x69, 0xec, 0xac, 0xe8, 0x6b, 0xec, 0xac, - 0xe8, 0x69, 0xec, 0xac, 0xe8, 0x6b, 0xec, 0xac, 0xe8, 0x69, 0xec, 0xac, - 0xe9, 0x6b, 0xec, 0xac, 0xe9, 0x69, 0xec, 0xac, 0xe9, 0x6b, 0xec, 0xac, - 0xe9, 0x69, 0xec, 0xac, 0xea, 0x6b, 0xec, 0xac, 0xea, 0x69, 0xec, 0xac, - 0xea, 0x6b, 0xec, 0xac, 0xea, 0x69, 0xec, 0xac, 0xeb, 0x6b, 0xec, 0xac, - 0xeb, 0x69, 0xec, 0xac, 0xeb, 0x69, 0xec, 0xac, 0xeb, 0x69, 0xec, 0xac, - 0xec, 0x69, 0xec, 0xac, 0xeb, 0x69, 0xec, 0xac, 0xec, 0x69, 0xec, 0xac, - 0xeb, 0x69, 0xec, 0xac, 0xec, 0x69, 0xed, 0xac, 0xeb, 0x69, 0xed, 0xac, - 0xec, 0x69, 0xed, 0xa9, 0xed, 0x69, 0xed, 0xa9, 0xed, 0x69, 0xee, 0xa9, - 0xee, 0x69, 0xee, 0xa9, 0xee, 0x69, 0xee, 0xa9, 0xee, 0x69, 0xee, 0xaa, - 0xef, 0x69, 0xef, 0xaa, 0xf0, 0x69, 0xef, 0xaa, 0xef, 0x69, 0xef, 0xaa, - 0xf0, 0x69, 0xef, 0xaa, 0xef, 0x69, 0xf0, 0xaa, 0xf0, 0x69, 0xf0, 0xaa, - 0xf0, 0x69, 0xf0, 0xaa, 0xf0, 0x69, 0xf0, 0xaa, 0xf0, 0x69, 0xf1, 0xaa, - 0xf1, 0x69, 0xf1, 0xaa, 0xf1, 0x69, 0xf1, 0xaa, 0xf1, 0x69, 0xf1, 0xaa, - 0xf1, 0x69, 0xf2, 0xaa, 0xf2, 0x69, 0xf2, 0xaa, 0xf2, 0x69, 0xf2, 0xaa, - 0xf2, 0x69, 0xf2, 0xaa, 0xf3, 0x69, 0xf2, 0xaa, 0xf3, 0x69, 0xf3, 0xaa, - 0xf3, 0x69, 0xf3, 0xaa, 0xf3, 0x69, 0xf3, 0xaa, 0xf3, 0x69, 0xf3, 0xaa, - 0xf3, 0x69, 0xf4, 0xaa, 0xf4, 0x69, 0xf4, 0xaa, 0xf4, 0x69, 0xf4, 0xaa, - 0xf4, 0x69, 0xf4, 0xaa, 0xf4, 0x69, 0xf5, 0xaa, 0xf5, 0x69, 0xf5, 0xaa, - 0xf5, 0x69, 0xf5, 0xaa, 0xf5, 0x69, 0xf5, 0xaa, 0xf5, 0x69, 0xf5, 0xaa, - 0xf5, 0x69, 0xf6, 0xaa, 0xf6, 0x69, 0xf6, 0xaa, 0xf6, 0x69, 0xf6, 0xac, - 0xf7, 0x69, 0xf6, 0xac, 0xf7, 0x69, 0xf6, 0xac, 0xf7, 0x69, 0xf6, 0xac, - 0xf7, 0x69, 0xf6, 0xac, 0xf7, 0x69, 0xf6, 0xac, 0xf7, 0x69, 0xf6, 0xac, - 0xf8, 0x69, 0xf6, 0xac, 0xf8, 0x69, 0xf6, 0xac, 0xf8, 0x69, 0xf6, 0xac, - 0xf8, 0x69, 0xf6, 0xac, 0xf8, 0x69, 0xf6, 0xac, 0xf9, 0x69, 0xfb, 0xac, - 0xf9, 0x6a, 0xfb, 0xac, 0xf9, 0x69, 0xfb, 0xac, 0xf9, 0x6a, 0xfb, 0xac, - 0xfa, 0x69, 0xfb, 0xac, 0xfa, 0x6a, 0xfb, 0xac, 0xfa, 0x69, 0xfb, 0xac, - 0xfa, 0x6a, 0xfb, 0xac, 0xfa, 0x69, 0xfb, 0xac, 0xfb, 0x69, 0xfb, 0xac, - 0xfa, 0x69, 0xfb, 0xac, 0xfb, 0x69, 0xfb, 0xac, 0xfa, 0x69, 0xfc, 0xac, - 0xfb, 0x69, 0xfc, 0xac, 0xfa, 0x69, 0xfc, 0xac, 0xfb, 0x69, 0xfc, 0xac, - 0xfa, 0x69, 0xfc, 0xac, 0xfb, 0x69, 0xfd, 0xaa, 0xfb, 0x69, 0xfd, 0xac, - 0xfb, 0x69, 0xfd, 0xaa, 0xfb, 0x69, 0xfd, 0xac, 0xfb, 0x69, 0xfe, 0xaa, - 0xfb, 0x69, 0xfe, 0xac, 0xfb, 0x69, 0xfe, 0xaa, 0xfb, 0x69, 0xfe, 0xac, - 0xfb, 0x69, 0xfe, 0xaa, 0xfb, 0x69, 0xff, 0xac, 0xfb, 0x69, 0xff, 0xaa, - 0xfb, 0x69, 0x03, 0xb4, 0x94, 0x69, 0x0a, 0xb6, 0x93, 0x69, 0x0f, 0xb4, - 0x94, 0x69, 0x14, 0xb6, 0x93, 0x69, 0x17, 0xb4, 0x94, 0x69, 0x1b, 0xb6, - 0x93, 0x69, 0x1e, 0xb4, 0x94, 0x69, 0x20, 0xb6, 0x93, 0x69, 0x23, 0xb4, - 0x94, 0x69, 0x25, 0xb6, 0x93, 0x69, 0x27, 0xb4, 0x94, 0x69, 0x29, 0xb6, - 0x93, 0x69, 0x2b, 0xb4, 0x94, 0x69, 0x2d, 0xb6, 0x93, 0x69, 0x2f, 0xb4, - 0x94, 0x69, 0x31, 0xb6, 0x93, 0x69, 0x32, 0xb4, 0x94, 0x69, 0x34, 0xb6, - 0x93, 0x69, 0x35, 0xb4, 0x94, 0x69, 0x37, 0xb2, 0x94, 0x69, 0x38, 0xb4, - 0x94, 0x69, 0x3a, 0xb2, 0x94, 0x69, 0x3b, 0xb4, 0x94, 0x69, 0x3c, 0xb2, - 0x94, 0x69, 0x3e, 0xb4, 0x94, 0x69, 0x3f, 0xb2, 0x94, 0x69, 0x40, 0xb4, - 0x94, 0x69, 0x42, 0xb2, 0x94, 0x69, 0x43, 0xb4, 0x94, 0x69, 0x44, 0xb2, - 0x94, 0x69, 0x45, 0xb4, 0x94, 0x69, 0x46, 0xb2, 0x94, 0x69, 0x47, 0xb4, - 0x94, 0x69, 0x48, 0xb2, 0x94, 0x69, 0x49, 0xb4, 0x94, 0x69, 0x4a, 0xb2, - 0x94, 0x69, 0x4b, 0xb4, 0x94, 0x69, 0x4c, 0xb2, 0x94, 0x69, 0x4d, 0xb4, - 0x94, 0x69, 0x4e, 0xb2, 0x94, 0x69, 0x4f, 0xb4, 0x94, 0x69, 0x50, 0xb2, - 0x94, 0x69, 0x51, 0xb4, 0x94, 0x69, 0x52, 0xb2, 0x94, 0x69, 0x53, 0xb4, - 0x94, 0x69, 0x54, 0xb2, 0x94, 0x69, 0x55, 0xb4, 0x94, 0x69, 0x56, 0xb2, - 0x94, 0x69, 0x57, 0xaf, 0x94, 0x69, 0x58, 0xb2, 0x94, 0x69, 0x58, 0xaf, - 0x94, 0x69, 0x59, 0xb2, 0x94, 0x69, 0x5a, 0xaf, 0x94, 0x69, 0x5b, 0xb2, - 0x94, 0x69, 0x5c, 0xaf, 0x94, 0x69, 0x5d, 0xb2, 0x94, 0x69, 0x5d, 0xaf, - 0x94, 0x69, 0x5e, 0xb2, 0x94, 0x69, 0x5f, 0xaf, 0x94, 0x69, 0x60, 0xb2, - 0x94, 0x69, 0x60, 0xaf, 0x94, 0x69, 0x61, 0xb2, 0x94, 0x69, 0x62, 0xaf, - 0x94, 0x69, 0x63, 0xb2, 0x94, 0x69, 0x63, 0xaf, 0x94, 0x69, 0x64, 0xb2, - 0x94, 0x69, 0x65, 0xaf, 0x94, 0x69, 0x66, 0xb2, 0x94, 0x69, 0x66, 0xaf, - 0x94, 0x69, 0x67, 0xb2, 0x94, 0x69, 0x68, 0xaf, 0x94, 0x69, 0x68, 0xb2, - 0x94, 0x69, 0x69, 0xaf, 0x94, 0x69, 0x6a, 0xb2, 0x94, 0x69, 0x6a, 0xaf, - 0x94, 0x69, 0x6b, 0xb2, 0x94, 0x69, 0x6c, 0xaf, 0x94, 0x69, 0x6c, 0xb2, - 0x94, 0x69, 0x6d, 0xaf, 0x94, 0x69, 0x6e, 0xb2, 0x94, 0x69, 0x6e, 0xaf, - 0x94, 0x69, 0x6f, 0xb2, 0x94, 0x69, 0x70, 0xaf, 0x94, 0x69, 0x70, 0xb2, - 0x94, 0x69, 0x71, 0xaf, 0x94, 0x69, 0x72, 0xb2, 0x94, 0x69, 0x72, 0xaf, - 0x94, 0x69, 0x73, 0xb2, 0x94, 0x69, 0x73, 0xaf, 0x94, 0x69, 0x74, 0xad, - 0x95, 0x69, 0x75, 0xaf, 0x94, 0x69, 0x75, 0xad, 0x95, 0x69, 0x76, 0xaf, - 0x94, 0x69, 0x76, 0xad, 0x95, 0x69, 0x77, 0xaf, 0x94, 0x69, 0x78, 0xad, - 0x95, 0x69, 0x78, 0xaf, 0x94, 0x69, 0x79, 0xad, 0x95, 0x69, 0x79, 0xaf, - 0x94, 0x69, 0x7a, 0xad, 0x95, 0x69, 0x7a, 0xaf, 0x94, 0x69, 0x7b, 0xad, - 0x95, 0x69, 0x7c, 0xaf, 0x94, 0x69, 0x7c, 0xad, 0x95, 0x69, 0x7d, 0xaf, - 0x94, 0x69, 0x7d, 0xad, 0x95, 0x69, 0x7e, 0xaf, 0x94, 0x69, 0x7e, 0xad, - 0x95, 0x69, 0x7f, 0xaf, 0x94, 0x69, 0x7f, 0xad, 0x95, 0x69, 0x80, 0xaf, - 0x94, 0x69, 0x81, 0xad, 0x95, 0x69, 0x81, 0xaf, 0x94, 0x69, 0x82, 0xad, - 0x95, 0x69, 0x82, 0xaf, 0x94, 0x69, 0x83, 0xad, 0x95, 0x69, 0x83, 0xaf, - 0x94, 0x69, 0x84, 0xad, 0x95, 0x69, 0x84, 0xaf, 0x94, 0x69, 0x85, 0xad, - 0x95, 0x69, 0x85, 0xaf, 0x94, 0x69, 0x86, 0xad, 0x95, 0x69, 0x86, 0xaf, - 0x94, 0x69, 0x87, 0xad, 0x95, 0x69, 0x87, 0xaf, 0x94, 0x69, 0x88, 0xad, - 0x95, 0x69, 0x88, 0xaf, 0x94, 0x69, 0x89, 0xad, 0x95, 0x69, 0x89, 0xaf, - 0x94, 0x69, 0x8a, 0xad, 0x95, 0x69, 0x8a, 0xaf, 0x94, 0x69, 0x8b, 0xad, - 0x95, 0x69, 0x8b, 0xaf, 0x94, 0x69, 0x8c, 0xad, 0x95, 0x69, 0x8c, 0xaf, - 0x94, 0x69, 0x8d, 0xad, 0x95, 0x69, 0x8d, 0xaf, 0x94, 0x69, 0x8e, 0xad, - 0x95, 0x69, 0x8e, 0xac, 0x95, 0x69, 0x8e, 0xad, 0x95, 0x69, 0x8f, 0xac, - 0x95, 0x69, 0x8f, 0xad, 0x95, 0x69, 0x90, 0xac, 0x95, 0x69, 0x90, 0xad, - 0x95, 0x69, 0x91, 0xac, 0x95, 0x69, 0x91, 0xad, 0x95, 0x69, 0x92, 0xac, - 0x95, 0x69, 0x92, 0xad, 0x95, 0x69, 0x93, 0xac, 0x95, 0x69, 0x93, 0xad, - 0x95, 0x69, 0x94, 0xac, 0x95, 0x69, 0x94, 0xad, 0x95, 0x69, 0x94, 0xac, - 0x95, 0x69, 0x95, 0xad, 0x95, 0x69, 0x94, 0xac, 0x95, 0x69, 0x95, 0xac, - 0x96, 0x69, 0x94, 0xac, 0x96, 0x69, 0x95, 0xac, 0x97, 0x69, 0x99, 0xac, - 0x97, 0x69, 0x98, 0xac, 0x98, 0x6a, 0x99, 0xac, 0x98, 0x69, 0x99, 0xac, - 0x98, 0x69, 0x99, 0xac, 0x98, 0x69, 0x99, 0xac, 0x98, 0x69, 0x9a, 0xac, - 0x98, 0x69, 0x9a, 0xac, 0x98, 0x69, 0x9a, 0xae, 0x9a, 0x69, 0x9b, 0xae, - 0x9b, 0x69, 0x9b, 0xae, 0x9b, 0x69, 0x9c, 0xae, 0x9c, 0x69, 0x9c, 0xae, - 0x9c, 0x69, 0x9d, 0xae, 0x9d, 0x69, 0x9d, 0xae, 0x9c, 0x69, 0x9d, 0xae, - 0x9d, 0x69, 0x9e, 0xae, 0x9c, 0x69, 0x9e, 0xae, 0x9d, 0x69, 0x9f, 0xae, - 0x9f, 0x69, 0x9f, 0xae, 0x9f, 0x69, 0x9f, 0xae, 0x9f, 0x69, 0xa0, 0xae, - 0xa0, 0x69, 0xa0, 0xae, 0xa0, 0x69, 0xa1, 0xae, 0xa1, 0x69, 0xa1, 0xae, - 0xa1, 0x69, 0xa1, 0xae, 0xa1, 0x69, 0xa2, 0xae, 0xa1, 0x69, 0xa2, 0xae, - 0xa1, 0x69, 0xa3, 0xae, 0xa1, 0x69, 0xa3, 0xaf, 0xa3, 0x69, 0xa3, 0xaf, - 0xa3, 0x69, 0xa4, 0xaf, 0xa4, 0x69, 0xa4, 0xaf, 0xa4, 0x69, 0xa5, 0xaf, - 0xa5, 0x69, 0xa5, 0xaf, 0xa5, 0x69, 0xa5, 0xaf, 0xa5, 0x69, 0xa6, 0xaf, - 0xa5, 0x69, 0xa6, 0xaf, 0xa5, 0x69, 0xa6, 0xaf, 0xa5, 0x69, 0xa7, 0xaf, - 0xa5, 0x69, 0xa7, 0xb0, 0xa7, 0x69, 0xa8, 0xb0, 0xa8, 0x69, 0xa8, 0xb0, - 0xa8, 0x69, 0xa8, 0xb0, 0xa8, 0x69, 0xa9, 0xb0, 0xa9, 0x69, 0xa9, 0xb0, - 0xa9, 0x69, 0xaa, 0xb0, 0xaa, 0x69, 0xaa, 0xb0, 0xa9, 0x69, 0xaa, 0xb0, - 0xaa, 0x69, 0xab, 0xb0, 0xa9, 0x69, 0xab, 0xb0, 0xaa, 0x69, 0xab, 0xb0, - 0xa9, 0x69, 0xac, 0xb0, 0xaa, 0x69, 0xac, 0xb0, 0xac, 0x69, 0xac, 0xb0, - 0xac, 0x69, 0xad, 0xb0, 0xad, 0x69, 0xad, 0xb0, 0xad, 0x69, 0xae, 0xb0, - 0xae, 0x69, 0xae, 0xb0, 0xad, 0x69, 0xae, 0xb0, 0xae, 0x69, 0xaf, 0xb0, - 0xad, 0x69, 0xaf, 0xb0, 0xae, 0x69, 0xaf, 0xb0, 0xad, 0x69, 0xb0, 0xb0, - 0xae, 0x69, 0xb0, 0xb1, 0xb0, 0x69, 0xb0, 0xb1, 0xb0, 0x69, 0xb1, 0xb1, - 0xb1, 0x69, 0xb1, 0xb1, 0xb1, 0x69, 0xb2, 0xb1, 0xb2, 0x69, 0xb2, 0xb1, - 0xb1, 0x69, 0xb2, 0xb1, 0xb2, 0x69, 0xb3, 0xb1, 0xb1, 0x69, 0xb3, 0xb1, - 0xb2, 0x69, 0xb3, 0xb1, 0xb1, 0x69, 0xb4, 0xb1, 0xb2, 0x69, 0xb4, 0xb2, - 0xb4, 0x69, 0xb4, 0xb2, 0xb4, 0x69, 0xb5, 0xb2, 0xb5, 0x69, 0xb5, 0xb2, - 0xb5, 0x69, 0xb5, 0xb2, 0xb5, 0x69, 0xb6, 0xb2, 0xb5, 0x69, 0xb6, 0xb2, - 0xb5, 0x69, 0xb6, 0xb2, 0xb5, 0x69, 0xb7, 0xb2, 0xb5, 0x69, 0xb7, 0xb2, - 0xb5, 0x69, 0xb7, 0xb2, 0xb5, 0x69, 0xb8, 0xb2, 0xb5, 0x69, 0xb8, 0xb2, - 0xb5, 0x69, 0xb8, 0xb3, 0xb8, 0x69, 0xb9, 0xb3, 0xb9, 0x69, 0xb9, 0xb3, - 0xb9, 0x69, 0xb9, 0xb3, 0xb9, 0x69, 0xba, 0xb3, 0xb9, 0x69, 0xba, 0xb3, - 0xb9, 0x69, 0xba, 0xb3, 0xb9, 0x69, 0xbb, 0xb3, 0xb9, 0x69, 0xbb, 0xb3, - 0xb9, 0x69, 0xbb, 0xb3, 0xb9, 0x69, 0xbc, 0xb3, 0xb9, 0x69, 0xbc, 0xb3, - 0xb9, 0x69, 0xbc, 0xb3, 0xbc, 0x69, 0xbd, 0xb3, 0xbd, 0x69, 0xbd, 0xb3, - 0xbd, 0x69, 0xbd, 0xb3, 0xbd, 0x69, 0xbe, 0xb3, 0xbd, 0x69, 0xbe, 0xb3, - 0xbd, 0x69, 0xbe, 0xb3, 0xbd, 0x69, 0xbf, 0xb3, 0xbd, 0x69, 0xbf, 0xb3, - 0xbd, 0x69, 0xbf, 0xb3, 0xbd, 0x69, 0xc0, 0xb3, 0xbd, 0x69, 0xc0, 0xb4, - 0xc0, 0x69, 0xc0, 0xb4, 0xc0, 0x69, 0xc1, 0xb4, 0xc1, 0x69, 0xc1, 0xb4, - 0xc0, 0x69, 0xc1, 0xb4, 0xc1, 0x69, 0xc1, 0xb4, 0xc0, 0x69, 0xc2, 0xb4, - 0xc1, 0x69, 0xc2, 0xb4, 0xc0, 0x69, 0xc2, 0xb4, 0xc1, 0x69, 0xc3, 0xb4, - 0xc0, 0x69, 0xc3, 0xb4, 0xc1, 0x69, 0xc3, 0xb5, 0xc3, 0x69, 0xc4, 0xb5, - 0xc4, 0x69, 0xc4, 0xb5, 0xc4, 0x69, 0xc4, 0xb5, 0xc4, 0x69, 0xc5, 0xb5, - 0xc4, 0x69, 0xc5, 0xb5, 0xc4, 0x69, 0xc5, 0xb5, 0xc4, 0x69, 0xc6, 0xb5, - 0xc4, 0x69, 0xc6, 0xb5, 0xc4, 0x69, 0xc6, 0xb5, 0xc4, 0x69, 0xc6, 0xb5, - 0xc4, 0x69, 0xc7, 0xb5, 0xc7, 0x69, 0xc7, 0xb5, 0xc7, 0x69, 0xc7, 0xb5, - 0xc7, 0x69, 0xc8, 0xb5, 0xc7, 0x69, 0xc8, 0xb5, 0xc7, 0x69, 0xc8, 0xae, - 0xd0, 0x69, 0xc9, 0xaf, 0xd0, 0x69, 0xc9, 0xae, 0xd0, 0x69, 0xc9, 0xaf, - 0xd0, 0x69, 0xc9, 0xae, 0xd0, 0x69, 0xca, 0xaf, 0xd0, 0x69, 0xca, 0xae, - 0xd0, 0x69, 0xca, 0xaf, 0xd0, 0x69, 0xcb, 0xae, 0xd0, 0x69, 0xcb, 0xaf, - 0xd0, 0x69, 0xcb, 0xae, 0xd0, 0x69, 0xcc, 0xac, 0xd0, 0x69, 0xcc, 0xae, - 0xd0, 0x69, 0xcc, 0xac, 0xd0, 0x69, 0xcc, 0xae, 0xd0, 0x69, 0xcd, 0xac, - 0xd0, 0x69, 0xcd, 0xae, 0xd0, 0x69, 0xcd, 0xac, 0xd0, 0x69, 0xce, 0xae, - 0xd0, 0x69, 0xce, 0xac, 0xd0, 0x69, 0xce, 0xae, 0xd0, 0x69, 0xce, 0xac, - 0xd0, 0x69, 0xcf, 0xae, 0xd0, 0x69, 0xcf, 0xac, 0xd0, 0x69, 0xcf, 0xac, - 0xd0, 0x69, 0xd0, 0xac, 0xd0, 0x69, 0xd0, 0xac, 0xd0, 0x69, 0xd0, 0xac, - 0xd0, 0x69, 0xd0, 0xac, 0xd0, 0x69, 0xd0, 0xac, 0xd1, 0x69, 0xd0, 0xac, - 0xd1, 0x69, 0xd0, 0xac, 0xd1, 0x67, 0xd0, 0xac, 0xd2, 0x69, 0xd0, 0xac, - 0xd2, 0x67, 0xd0, 0xac, 0xd2, 0x69, 0xd0, 0xac, 0xd2, 0x67, 0xd0, 0xac, - 0xd3, 0x69, 0xd0, 0xac, 0xd3, 0x67, 0xd0, 0xac, 0xd3, 0x69, 0xd0, 0xac, - 0xd4, 0x67, 0xd0, 0xac, 0xd4, 0x69, 0xd0, 0xac, 0xd4, 0x67, 0xd0, 0xac, - 0xd4, 0x69, 0xd0, 0xac, 0xd5, 0x67, 0xd0, 0xac, 0xd5, 0x69, 0xd0, 0xac, - 0xd5, 0x67, 0xd0, 0xac, 0xd6, 0x69, 0xd0, 0xac, 0xd6, 0x67, 0xd0, 0xac, - 0xd6, 0x69, 0xd0, 0xac, 0xd6, 0x67, 0xd0, 0xac, 0xd7, 0x69, 0xd0, 0xac, - 0xd7, 0x67, 0xd0, 0xac, 0xd7, 0x64, 0xd0, 0xac, 0xd7, 0x67, 0xd0, 0xac, - 0xd8, 0x64, 0xd0, 0xac, 0xd8, 0x67, 0xd0, 0xac, 0xd8, 0x64, 0xd0, 0xac, - 0xd9, 0x67, 0xd0, 0xac, 0xd9, 0x64, 0xd0, 0xac, 0xd9, 0x67, 0xd0, 0xac, - 0xd9, 0x64, 0xd0, 0xac, 0xda, 0x67, 0xd0, 0xac, 0xda, 0x64, 0xd0, 0xac, - 0xda, 0x67, 0xd0, 0xac, 0xda, 0x64, 0xd0, 0xac, 0xdb, 0x67, 0xd0, 0xac, - 0xdb, 0x64, 0xd0, 0xac, 0xdb, 0x67, 0xd0, 0xac, 0xdb, 0x64, 0xd0, 0xac, - 0xdc, 0x67, 0xd0, 0xac, 0xdc, 0x64, 0xd0, 0xac, 0xdc, 0x67, 0xd0, 0xac, - 0xdd, 0x64, 0xd0, 0xac, 0xdd, 0x67, 0xd0, 0xac, 0xdd, 0x64, 0xd0, 0xac, - 0xdd, 0x67, 0xd0, 0xac, 0xde, 0x64, 0xd0, 0xac, 0xde, 0x67, 0xd0, 0xac, - 0xde, 0x64, 0xe1, 0xac, 0xde, 0x50, 0xe3, 0xac, 0xdf, 0x51, 0xec, 0xac, - 0xdf, 0x6b, 0xeb, 0xac, 0xdf, 0x6f, 0xec, 0xac, 0xdf, 0x6b, 0xeb, 0xac, - 0xe0, 0x6f, 0xec, 0xac, 0xe0, 0x6b, 0xeb, 0xac, 0xe0, 0x6f, 0xec, 0xac, - 0xe1, 0x6b, 0xeb, 0xac, 0xe1, 0x6f, 0xec, 0xac, 0xe1, 0x6b, 0xeb, 0xac, - 0xe1, 0x6f, 0xec, 0xac, 0xe2, 0x6b, 0xeb, 0xac, 0xe2, 0x6f, 0xec, 0xac, - 0xe2, 0x6b, 0xeb, 0xac, 0xe2, 0x6f, 0xec, 0xac, 0xe3, 0x6b, 0xec, 0xac, - 0xe3, 0x69, 0xec, 0xac, 0xe3, 0x6b, 0xec, 0xac, 0xe3, 0x69, 0xec, 0xac, - 0xe4, 0x6b, 0xec, 0xac, 0xe4, 0x69, 0xec, 0xac, 0xe4, 0x6b, 0xec, 0xac, - 0xe4, 0x69, 0xec, 0xac, 0xe5, 0x6b, 0xec, 0xac, 0xe5, 0x69, 0xec, 0xac, - 0xe5, 0x6b, 0xec, 0xac, 0xe5, 0x69, 0xec, 0xac, 0xe6, 0x6b, 0xec, 0xac, - 0xe6, 0x69, 0xec, 0xac, 0xe6, 0x6b, 0xec, 0xac, 0xe6, 0x69, 0xec, 0xac, - 0xe7, 0x6b, 0xec, 0xac, 0xe7, 0x69, 0xec, 0xac, 0xe7, 0x6b, 0xec, 0xac, - 0xe7, 0x69, 0xec, 0xac, 0xe8, 0x6b, 0xec, 0xac, 0xe8, 0x69, 0xec, 0xac, - 0xe8, 0x6b, 0xec, 0xac, 0xe8, 0x69, 0xec, 0xac, 0xe9, 0x6b, 0xec, 0xac, - 0xe9, 0x69, 0xec, 0xac, 0xe9, 0x6b, 0xec, 0xac, 0xe9, 0x69, 0xec, 0xac, - 0xea, 0x6b, 0xec, 0xac, 0xea, 0x69, 0xec, 0xac, 0xea, 0x6b, 0xec, 0xac, - 0xea, 0x69, 0xec, 0xac, 0xeb, 0x6b, 0xec, 0xac, 0xeb, 0x69, 0xec, 0xac, - 0xeb, 0x69, 0xec, 0xac, 0xeb, 0x69, 0xec, 0xac, 0xec, 0x69, 0xec, 0xac, - 0xeb, 0x69, 0xec, 0xac, 0xec, 0x69, 0xec, 0xac, 0xeb, 0x69, 0xec, 0xac, - 0xec, 0x69, 0xed, 0xac, 0xeb, 0x69, 0xed, 0xac, 0xec, 0x69, 0xed, 0xac, - 0xeb, 0x69, 0xed, 0xa9, 0xed, 0x69, 0xee, 0xa9, 0xee, 0x69, 0xee, 0xa9, - 0xee, 0x69, 0xee, 0xa9, 0xee, 0x69, 0xee, 0xa9, 0xee, 0x69, 0xef, 0xa9, - 0xef, 0x69, 0xef, 0xa9, 0xef, 0x69, 0xef, 0xa9, 0xef, 0x69, 0xef, 0xa9, - 0xef, 0x69, 0xf0, 0xa9, 0xf0, 0x69, 0xf0, 0xa9, 0xf0, 0x69, 0xf0, 0xa9, - 0xf0, 0x69, 0xf0, 0xaa, 0xf1, 0x69, 0xf1, 0xaa, 0xf2, 0x69, 0xf1, 0xaa, - 0xf1, 0x69, 0xf1, 0xaa, 0xf2, 0x69, 0xf1, 0xaa, 0xf1, 0x69, 0xf2, 0xaa, - 0xf2, 0x69, 0xf2, 0xaa, 0xf2, 0x69, 0xf2, 0xaa, 0xf2, 0x69, 0xf2, 0xaa, - 0xf2, 0x69, 0xf2, 0xaa, 0xf2, 0x69, 0xf3, 0xaa, 0xf3, 0x69, 0xf3, 0xaa, - 0xf3, 0x69, 0xf3, 0xaa, 0xf3, 0x69, 0xf3, 0xaa, 0xf3, 0x69, 0xf4, 0xaa, - 0xf4, 0x69, 0xf4, 0xab, 0xf5, 0x69, 0xf4, 0xab, 0xf5, 0x69, 0xf4, 0xab, - 0xf5, 0x69, 0xf5, 0xab, 0xf5, 0x69, 0xf5, 0xab, 0xf5, 0x69, 0xf5, 0xab, - 0xf5, 0x69, 0xf5, 0xab, 0xf5, 0x69, 0xf5, 0xab, 0xf5, 0x69, 0xf6, 0xab, - 0xf6, 0x69, 0xf6, 0xab, 0xf6, 0x69, 0xf6, 0xac, 0xf7, 0x69, 0xf6, 0xac, - 0xf7, 0x69, 0xf6, 0xac, 0xf7, 0x69, 0xf6, 0xac, 0xf7, 0x69, 0xf6, 0xac, - 0xf7, 0x69, 0xf6, 0xac, 0xf7, 0x69, 0xf6, 0xac, 0xf8, 0x69, 0xf6, 0xac, - 0xf8, 0x69, 0xf6, 0xac, 0xf8, 0x69, 0xf6, 0xac, 0xf8, 0x69, 0xf6, 0xac, - 0xf8, 0x69, 0xfa, 0xac, 0xf9, 0x6c, 0xfb, 0xac, 0xf9, 0x69, 0xfb, 0xac, - 0xf9, 0x69, 0xfb, 0xac, 0xf9, 0x69, 0xfb, 0xac, 0xfa, 0x69, 0xfb, 0xac, - 0xfa, 0x69, 0xfb, 0xac, 0xfa, 0x69, 0xfb, 0xac, 0xfa, 0x69, 0xfb, 0xac, - 0xfa, 0x69, 0xfb, 0xab, 0xfb, 0x69, 0xfb, 0xac, 0xfa, 0x69, 0xfb, 0xab, - 0xfb, 0x69, 0xfb, 0xac, 0xfa, 0x69, 0xfc, 0xab, 0xfb, 0x69, 0xfc, 0xac, - 0xfa, 0x69, 0xfc, 0xab, 0xfb, 0x69, 0xfc, 0xac, 0xfa, 0x69, 0xfc, 0xab, - 0xfb, 0x69, 0xfd, 0xaa, 0xfb, 0x69, 0xfd, 0xab, 0xfb, 0x69, 0xfd, 0xaa, - 0xfb, 0x69, 0xfd, 0xab, 0xfb, 0x69, 0xfe, 0xaa, 0xfb, 0x69, 0xfe, 0xab, - 0xfb, 0x69, 0xfe, 0xaa, 0xfb, 0x69, 0xfe, 0xab, 0xfb, 0x69, 0xfe, 0xaa, - 0xfb, 0x69, 0xff, 0xab, 0xfb, 0x69, 0xff, 0xaa, 0xfb, 0x69, 0x03, 0xb4, - 0x94, 0x6a, 0x0a, 0xb6, 0x93, 0x6a, 0x0f, 0xb4, 0x94, 0x6a, 0x14, 0xb2, - 0x94, 0x6a, 0x17, 0xb4, 0x94, 0x6a, 0x1b, 0xb2, 0x94, 0x6a, 0x1e, 0xb4, - 0x94, 0x6a, 0x20, 0xb2, 0x94, 0x6a, 0x23, 0xb4, 0x94, 0x6a, 0x25, 0xb2, - 0x94, 0x6a, 0x27, 0xb4, 0x94, 0x6a, 0x29, 0xb2, 0x94, 0x6a, 0x2b, 0xb4, - 0x94, 0x6a, 0x2d, 0xb2, 0x94, 0x6a, 0x2f, 0xb4, 0x94, 0x6a, 0x31, 0xb2, - 0x94, 0x6a, 0x32, 0xb4, 0x94, 0x6a, 0x34, 0xb2, 0x94, 0x6a, 0x35, 0xb4, - 0x94, 0x6a, 0x37, 0xb2, 0x94, 0x6a, 0x38, 0xb4, 0x94, 0x6a, 0x3a, 0xb2, - 0x94, 0x6a, 0x3b, 0xb4, 0x94, 0x6a, 0x3c, 0xb2, 0x94, 0x6a, 0x3e, 0xb4, - 0x94, 0x6a, 0x3f, 0xb2, 0x94, 0x6a, 0x40, 0xb4, 0x94, 0x6a, 0x42, 0xb2, - 0x94, 0x6a, 0x43, 0xb4, 0x94, 0x6a, 0x44, 0xb2, 0x94, 0x6a, 0x45, 0xb4, - 0x94, 0x6a, 0x46, 0xb2, 0x94, 0x6a, 0x47, 0xb4, 0x94, 0x6a, 0x48, 0xb2, - 0x94, 0x6a, 0x49, 0xb4, 0x94, 0x6a, 0x4a, 0xb2, 0x94, 0x6a, 0x4b, 0xb4, - 0x94, 0x6a, 0x4c, 0xb2, 0x94, 0x6a, 0x4d, 0xb4, 0x94, 0x6a, 0x4e, 0xb2, - 0x94, 0x6a, 0x4f, 0xb4, 0x94, 0x6a, 0x50, 0xb2, 0x94, 0x6a, 0x51, 0xb4, - 0x94, 0x6a, 0x52, 0xb2, 0x94, 0x6a, 0x53, 0xb4, 0x94, 0x6a, 0x54, 0xb2, - 0x94, 0x6a, 0x55, 0xb4, 0x94, 0x6a, 0x56, 0xb2, 0x94, 0x6a, 0x57, 0xb4, - 0x94, 0x6a, 0x58, 0xb2, 0x94, 0x6a, 0x58, 0xb4, 0x94, 0x6a, 0x59, 0xb2, - 0x94, 0x6a, 0x5a, 0xb4, 0x94, 0x6a, 0x5b, 0xb2, 0x94, 0x6a, 0x5c, 0xb4, - 0x94, 0x6a, 0x5d, 0xb2, 0x94, 0x6a, 0x5d, 0xb4, 0x94, 0x6a, 0x5e, 0xb2, - 0x94, 0x6a, 0x5f, 0xb4, 0x94, 0x6a, 0x60, 0xb2, 0x94, 0x6a, 0x60, 0xb4, - 0x94, 0x6a, 0x61, 0xb2, 0x94, 0x6a, 0x62, 0xb4, 0x94, 0x6a, 0x63, 0xb2, - 0x94, 0x6a, 0x63, 0xb4, 0x94, 0x6a, 0x64, 0xb2, 0x94, 0x6a, 0x65, 0xb4, - 0x94, 0x6a, 0x66, 0xb2, 0x94, 0x6a, 0x66, 0xaf, 0x94, 0x6a, 0x67, 0xb2, - 0x94, 0x6a, 0x68, 0xaf, 0x94, 0x6a, 0x68, 0xb2, 0x94, 0x6a, 0x69, 0xaf, - 0x94, 0x6a, 0x6a, 0xb2, 0x94, 0x6a, 0x6a, 0xaf, 0x94, 0x6a, 0x6b, 0xb2, - 0x94, 0x6a, 0x6c, 0xaf, 0x94, 0x6a, 0x6c, 0xb2, 0x94, 0x6a, 0x6d, 0xaf, - 0x94, 0x6a, 0x6e, 0xb2, 0x94, 0x6a, 0x6e, 0xaf, 0x94, 0x6a, 0x6f, 0xb2, - 0x94, 0x6a, 0x70, 0xaf, 0x94, 0x6a, 0x70, 0xb2, 0x94, 0x6a, 0x71, 0xaf, - 0x94, 0x6a, 0x72, 0xb2, 0x94, 0x6a, 0x72, 0xaf, 0x94, 0x6a, 0x73, 0xb2, - 0x94, 0x6a, 0x73, 0xaf, 0x94, 0x6a, 0x74, 0xb2, 0x94, 0x6a, 0x75, 0xaf, - 0x94, 0x6a, 0x75, 0xb2, 0x94, 0x6a, 0x76, 0xaf, 0x94, 0x6a, 0x76, 0xb2, - 0x94, 0x6a, 0x77, 0xaf, 0x94, 0x6a, 0x78, 0xb2, 0x94, 0x6a, 0x78, 0xaf, - 0x94, 0x6a, 0x79, 0xb2, 0x94, 0x6a, 0x79, 0xaf, 0x94, 0x6a, 0x7a, 0xb2, - 0x94, 0x6a, 0x7a, 0xaf, 0x94, 0x6a, 0x7b, 0xb2, 0x94, 0x6a, 0x7c, 0xaf, - 0x94, 0x6a, 0x7c, 0xb2, 0x94, 0x6a, 0x7d, 0xaf, 0x94, 0x6a, 0x7d, 0xad, - 0x95, 0x6a, 0x7e, 0xaf, 0x94, 0x6a, 0x7e, 0xad, 0x95, 0x6a, 0x7f, 0xaf, - 0x94, 0x6a, 0x7f, 0xad, 0x95, 0x6a, 0x80, 0xaf, 0x94, 0x6a, 0x81, 0xad, - 0x95, 0x6a, 0x81, 0xaf, 0x94, 0x6a, 0x82, 0xad, 0x95, 0x6a, 0x82, 0xaf, - 0x94, 0x6a, 0x83, 0xad, 0x95, 0x6a, 0x83, 0xaf, 0x94, 0x6a, 0x84, 0xad, - 0x95, 0x6a, 0x84, 0xaf, 0x94, 0x6a, 0x85, 0xad, 0x95, 0x6a, 0x85, 0xaf, - 0x94, 0x6a, 0x86, 0xad, 0x95, 0x6a, 0x86, 0xaf, 0x94, 0x6a, 0x87, 0xad, - 0x95, 0x6a, 0x87, 0xaf, 0x94, 0x6a, 0x88, 0xad, 0x95, 0x6a, 0x88, 0xaf, - 0x94, 0x6a, 0x89, 0xad, 0x95, 0x6a, 0x89, 0xaf, 0x94, 0x6a, 0x8a, 0xad, - 0x95, 0x6a, 0x8a, 0xaf, 0x94, 0x6a, 0x8b, 0xad, 0x95, 0x6a, 0x8b, 0xaf, - 0x94, 0x6a, 0x8c, 0xad, 0x95, 0x6a, 0x8c, 0xaf, 0x94, 0x6a, 0x8d, 0xad, - 0x95, 0x6a, 0x8d, 0xaf, 0x94, 0x6a, 0x8e, 0xad, 0x95, 0x6a, 0x8e, 0xac, - 0x95, 0x6a, 0x8e, 0xad, 0x95, 0x6a, 0x8f, 0xac, 0x95, 0x6a, 0x8f, 0xad, - 0x95, 0x6a, 0x90, 0xac, 0x95, 0x6a, 0x90, 0xad, 0x95, 0x6a, 0x91, 0xac, - 0x95, 0x6a, 0x91, 0xad, 0x95, 0x6a, 0x92, 0xac, 0x95, 0x6a, 0x92, 0xad, - 0x95, 0x6a, 0x93, 0xac, 0x95, 0x6a, 0x93, 0xad, 0x95, 0x6a, 0x94, 0xac, - 0x95, 0x6a, 0x94, 0xad, 0x95, 0x6a, 0x94, 0xac, 0x95, 0x6a, 0x95, 0xad, - 0x95, 0x6a, 0x94, 0xac, 0x95, 0x6a, 0x95, 0xac, 0x96, 0x6a, 0x94, 0xac, - 0x96, 0x6a, 0x95, 0xac, 0x97, 0x6a, 0x99, 0xac, 0x97, 0x6a, 0x98, 0xac, - 0x98, 0x6a, 0x99, 0xac, 0x98, 0x6a, 0x98, 0xac, 0x98, 0x6a, 0x99, 0xac, - 0x98, 0x6a, 0x99, 0xad, 0x99, 0x6a, 0x9a, 0xad, 0x9a, 0x6a, 0x9a, 0xad, - 0x9a, 0x6a, 0x9a, 0xad, 0x9a, 0x6a, 0x9b, 0xad, 0x9a, 0x6a, 0x9b, 0xae, - 0x9b, 0x6a, 0x9c, 0xae, 0x9c, 0x6a, 0x9c, 0xae, 0x9c, 0x6a, 0x9d, 0xae, - 0x9d, 0x6a, 0x9d, 0xae, 0x9d, 0x6a, 0x9d, 0xae, 0x9d, 0x6a, 0x9e, 0xae, - 0x9e, 0x6a, 0x9e, 0xae, 0x9e, 0x6a, 0x9f, 0xae, 0x9f, 0x6a, 0x9f, 0xae, - 0x9e, 0x6a, 0x9f, 0xae, 0x9f, 0x6a, 0xa0, 0xae, 0x9e, 0x6a, 0xa0, 0xae, - 0x9f, 0x6a, 0xa1, 0xaf, 0xa1, 0x6a, 0xa1, 0xaf, 0xa1, 0x6a, 0xa1, 0xaf, - 0xa1, 0x6a, 0xa2, 0xaf, 0xa2, 0x6a, 0xa2, 0xaf, 0xa2, 0x6a, 0xa3, 0xaf, - 0xa3, 0x6a, 0xa3, 0xaf, 0xa3, 0x6a, 0xa3, 0xaf, 0xa3, 0x6a, 0xa4, 0xaf, - 0xa3, 0x6a, 0xa4, 0xaf, 0xa3, 0x6a, 0xa5, 0xaf, 0xa3, 0x6a, 0xa5, 0xaf, - 0xa5, 0x6a, 0xa5, 0xaf, 0xa5, 0x6a, 0xa6, 0xaf, 0xa6, 0x6a, 0xa6, 0xaf, - 0xa6, 0x6a, 0xa6, 0xaf, 0xa6, 0x6a, 0xa7, 0xaf, 0xa7, 0x6a, 0xa7, 0xaf, - 0xa7, 0x6a, 0xa8, 0xaf, 0xa8, 0x6a, 0xa8, 0xaf, 0xa7, 0x6a, 0xa8, 0xaf, - 0xa8, 0x6a, 0xa9, 0xaf, 0xa7, 0x6a, 0xa9, 0xaf, 0xa8, 0x6a, 0xaa, 0xb0, - 0xaa, 0x6a, 0xaa, 0xb0, 0xaa, 0x6a, 0xaa, 0xb0, 0xaa, 0x6a, 0xab, 0xb0, - 0xab, 0x6a, 0xab, 0xb0, 0xab, 0x6a, 0xab, 0xb0, 0xab, 0x6a, 0xac, 0xb0, - 0xac, 0x6a, 0xac, 0xb0, 0xab, 0x6a, 0xac, 0xb0, 0xac, 0x6a, 0xad, 0xb0, - 0xab, 0x6a, 0xad, 0xb0, 0xac, 0x6a, 0xae, 0xb0, 0xab, 0x6a, 0xae, 0xb0, - 0xac, 0x6a, 0xae, 0xb1, 0xae, 0x6a, 0xaf, 0xb1, 0xaf, 0x6a, 0xaf, 0xb1, - 0xaf, 0x6a, 0xaf, 0xb1, 0xaf, 0x6a, 0xb0, 0xb1, 0xb0, 0x6a, 0xb0, 0xb1, - 0xaf, 0x6a, 0xb0, 0xb1, 0xb0, 0x6a, 0xb1, 0xb1, 0xaf, 0x6a, 0xb1, 0xb1, - 0xb0, 0x6a, 0xb2, 0xb1, 0xaf, 0x6a, 0xb2, 0xb1, 0xb0, 0x6a, 0xb2, 0xb2, - 0xb2, 0x6a, 0xb3, 0xb2, 0xb3, 0x6a, 0xb3, 0xb2, 0xb3, 0x6a, 0xb3, 0xb2, - 0xb3, 0x6a, 0xb4, 0xb2, 0xb4, 0x6a, 0xb4, 0xb2, 0xb3, 0x6a, 0xb4, 0xb2, - 0xb4, 0x6a, 0xb5, 0xb2, 0xb3, 0x6a, 0xb5, 0xb2, 0xb4, 0x6a, 0xb5, 0xb2, - 0xb3, 0x6a, 0xb6, 0xb2, 0xb4, 0x6a, 0xb6, 0xb2, 0xb6, 0x6a, 0xb6, 0xb2, - 0xb6, 0x6a, 0xb7, 0xb2, 0xb7, 0x6a, 0xb7, 0xb2, 0xb7, 0x6a, 0xb7, 0xb2, - 0xb7, 0x6a, 0xb8, 0xb2, 0xb7, 0x6a, 0xb8, 0xb2, 0xb7, 0x6a, 0xb8, 0xb2, - 0xb7, 0x6a, 0xb9, 0xb2, 0xb7, 0x6a, 0xb9, 0xb2, 0xb7, 0x6a, 0xb9, 0xb2, - 0xb7, 0x6a, 0xba, 0xb2, 0xb7, 0x6a, 0xba, 0xb2, 0xb7, 0x6a, 0xba, 0xb3, - 0xba, 0x6a, 0xbb, 0xb3, 0xbb, 0x6a, 0xbb, 0xb3, 0xbb, 0x6a, 0xbb, 0xb3, - 0xbb, 0x6a, 0xbc, 0xb3, 0xbb, 0x6a, 0xbc, 0xb3, 0xbb, 0x6a, 0xbc, 0xb3, - 0xbb, 0x6a, 0xbd, 0xb3, 0xbb, 0x6a, 0xbd, 0xb3, 0xbb, 0x6a, 0xbd, 0xb3, - 0xbb, 0x6a, 0xbe, 0xb3, 0xbb, 0x6a, 0xbe, 0xb4, 0xbe, 0x6a, 0xbe, 0xb4, - 0xbe, 0x6a, 0xbf, 0xb4, 0xbf, 0x6a, 0xbf, 0xb4, 0xbe, 0x6a, 0xbf, 0xb4, - 0xbf, 0x6a, 0xc0, 0xb4, 0xbe, 0x6a, 0xc0, 0xb4, 0xbf, 0x6a, 0xc0, 0xb4, - 0xbe, 0x6a, 0xc1, 0xb4, 0xbf, 0x6a, 0xc1, 0xb4, 0xbe, 0x6a, 0xc1, 0xb4, - 0xbf, 0x6a, 0xc1, 0xb4, 0xc1, 0x6a, 0xc2, 0xb4, 0xc2, 0x6a, 0xc2, 0xb4, - 0xc2, 0x6a, 0xc2, 0xb4, 0xc2, 0x6a, 0xc3, 0xb4, 0xc2, 0x6a, 0xc3, 0xb4, - 0xc2, 0x6a, 0xc3, 0xb4, 0xc2, 0x6a, 0xc4, 0xb4, 0xc2, 0x6a, 0xc4, 0xb4, - 0xc2, 0x6a, 0xc4, 0xb4, 0xc2, 0x6a, 0xc5, 0xb4, 0xc2, 0x6a, 0xc5, 0xb5, - 0xc5, 0x6a, 0xc5, 0xb5, 0xc5, 0x6a, 0xc6, 0xb5, 0xc6, 0x6a, 0xc6, 0xb5, - 0xc6, 0x6a, 0xc6, 0xb5, 0xc6, 0x6a, 0xc6, 0xb5, 0xc6, 0x6a, 0xc7, 0xb5, - 0xc6, 0x6a, 0xc7, 0xb5, 0xc6, 0x6a, 0xc7, 0xb5, 0xc6, 0x6a, 0xc8, 0xb5, - 0xc6, 0x6a, 0xc8, 0xb5, 0xc6, 0x6a, 0xc8, 0xb5, 0xc6, 0x6a, 0xc9, 0xaf, - 0xd0, 0x6a, 0xc9, 0xad, 0xd0, 0x6a, 0xc9, 0xaf, 0xd0, 0x6a, 0xc9, 0xad, - 0xd0, 0x6a, 0xca, 0xaf, 0xd0, 0x6a, 0xca, 0xad, 0xd0, 0x6a, 0xca, 0xaf, - 0xd0, 0x6a, 0xcb, 0xad, 0xd0, 0x6a, 0xcb, 0xaf, 0xd0, 0x6a, 0xcb, 0xad, - 0xd0, 0x6a, 0xcc, 0xac, 0xd0, 0x6a, 0xcc, 0xad, 0xd0, 0x6a, 0xcc, 0xac, - 0xd0, 0x6a, 0xcc, 0xad, 0xd0, 0x6a, 0xcd, 0xac, 0xd0, 0x6a, 0xcd, 0xad, - 0xd0, 0x6a, 0xcd, 0xac, 0xd0, 0x6a, 0xce, 0xad, 0xd0, 0x6a, 0xce, 0xac, - 0xd0, 0x6a, 0xce, 0xad, 0xd0, 0x6a, 0xce, 0xac, 0xd0, 0x6a, 0xcf, 0xad, - 0xd0, 0x6a, 0xcf, 0xac, 0xd0, 0x6a, 0xcf, 0xad, 0xd0, 0x6a, 0xd0, 0xac, - 0xd0, 0x6a, 0xd0, 0xac, 0xd0, 0x6a, 0xd0, 0xac, 0xd0, 0x6a, 0xd0, 0xac, - 0xd0, 0x6a, 0xd0, 0xac, 0xd1, 0x6a, 0xd0, 0xac, 0xd1, 0x6a, 0xd0, 0xac, - 0xd1, 0x6a, 0xd0, 0xac, 0xd2, 0x6a, 0xd0, 0xac, 0xd2, 0x6a, 0xd0, 0xac, - 0xd2, 0x6a, 0xd0, 0xac, 0xd2, 0x67, 0xd0, 0xac, 0xd3, 0x6a, 0xd0, 0xac, - 0xd3, 0x67, 0xd0, 0xac, 0xd3, 0x6a, 0xd0, 0xac, 0xd4, 0x67, 0xd0, 0xac, - 0xd4, 0x6a, 0xd0, 0xac, 0xd4, 0x67, 0xd0, 0xac, 0xd4, 0x6a, 0xd0, 0xac, - 0xd5, 0x67, 0xd0, 0xac, 0xd5, 0x6a, 0xd0, 0xac, 0xd5, 0x67, 0xd0, 0xac, - 0xd6, 0x6a, 0xd0, 0xac, 0xd6, 0x67, 0xd0, 0xac, 0xd6, 0x6a, 0xd0, 0xac, - 0xd6, 0x67, 0xd0, 0xac, 0xd7, 0x6a, 0xd0, 0xac, 0xd7, 0x67, 0xd0, 0xac, - 0xd7, 0x65, 0xd0, 0xac, 0xd7, 0x67, 0xd0, 0xac, 0xd8, 0x65, 0xd0, 0xac, - 0xd8, 0x67, 0xd0, 0xac, 0xd8, 0x65, 0xd0, 0xac, 0xd9, 0x67, 0xd0, 0xac, - 0xd9, 0x65, 0xd0, 0xac, 0xd9, 0x67, 0xd0, 0xac, 0xd9, 0x65, 0xd0, 0xac, - 0xda, 0x67, 0xd0, 0xac, 0xda, 0x65, 0xd0, 0xac, 0xda, 0x67, 0xd0, 0xac, - 0xda, 0x65, 0xd0, 0xac, 0xdb, 0x67, 0xd0, 0xac, 0xdb, 0x65, 0xd0, 0xac, - 0xdb, 0x67, 0xd0, 0xac, 0xdb, 0x65, 0xd0, 0xac, 0xdc, 0x67, 0xd0, 0xac, - 0xdc, 0x65, 0xd0, 0xac, 0xdc, 0x67, 0xd0, 0xac, 0xdd, 0x65, 0xd0, 0xac, - 0xdd, 0x67, 0xd0, 0xac, 0xdd, 0x65, 0xd0, 0xac, 0xdd, 0x67, 0xd0, 0xac, - 0xde, 0x65, 0xd0, 0xac, 0xde, 0x67, 0xd0, 0xac, 0xde, 0x65, 0xec, 0xac, - 0xde, 0x6b, 0xeb, 0xac, 0xdf, 0x6f, 0xec, 0xac, 0xdf, 0x6b, 0xeb, 0xac, - 0xdf, 0x6f, 0xec, 0xac, 0xdf, 0x6b, 0xeb, 0xac, 0xe0, 0x6f, 0xec, 0xac, - 0xe0, 0x6b, 0xeb, 0xac, 0xe0, 0x6f, 0xec, 0xac, 0xe1, 0x6b, 0xeb, 0xac, - 0xe1, 0x6f, 0xec, 0xac, 0xe1, 0x6b, 0xeb, 0xac, 0xe1, 0x6f, 0xec, 0xac, - 0xe2, 0x6b, 0xeb, 0xac, 0xe2, 0x6f, 0xec, 0xac, 0xe2, 0x6b, 0xeb, 0xac, - 0xe2, 0x6f, 0xec, 0xac, 0xe3, 0x6b, 0xeb, 0xac, 0xe3, 0x6f, 0xec, 0xac, - 0xe3, 0x6b, 0xeb, 0xac, 0xe3, 0x6f, 0xec, 0xac, 0xe4, 0x6b, 0xeb, 0xac, - 0xe4, 0x6f, 0xec, 0xac, 0xe4, 0x6b, 0xeb, 0xac, 0xe4, 0x6f, 0xec, 0xac, - 0xe5, 0x6b, 0xeb, 0xac, 0xe5, 0x6f, 0xec, 0xac, 0xe5, 0x6b, 0xeb, 0xac, - 0xe5, 0x6f, 0xec, 0xac, 0xe6, 0x6b, 0xec, 0xac, 0xe6, 0x6a, 0xec, 0xac, - 0xe6, 0x6b, 0xec, 0xac, 0xe6, 0x6a, 0xec, 0xac, 0xe7, 0x6b, 0xec, 0xac, - 0xe7, 0x6a, 0xec, 0xac, 0xe7, 0x6b, 0xec, 0xac, 0xe7, 0x6a, 0xec, 0xac, - 0xe8, 0x6b, 0xec, 0xac, 0xe8, 0x6a, 0xec, 0xac, 0xe8, 0x6b, 0xec, 0xac, - 0xe8, 0x6a, 0xec, 0xac, 0xe9, 0x6b, 0xec, 0xac, 0xe9, 0x6a, 0xec, 0xac, - 0xe9, 0x6b, 0xec, 0xac, 0xe9, 0x6a, 0xec, 0xac, 0xea, 0x6b, 0xec, 0xac, - 0xea, 0x6a, 0xec, 0xac, 0xea, 0x6b, 0xec, 0xac, 0xea, 0x6a, 0xec, 0xac, - 0xeb, 0x6b, 0xec, 0xac, 0xeb, 0x6a, 0xec, 0xac, 0xeb, 0x6b, 0xec, 0xac, - 0xeb, 0x6a, 0xec, 0xac, 0xec, 0x6b, 0xec, 0xac, 0xeb, 0x6a, 0xec, 0xac, - 0xec, 0x6a, 0xec, 0xac, 0xeb, 0x6a, 0xec, 0xac, 0xec, 0x6a, 0xed, 0xac, - 0xeb, 0x6a, 0xed, 0xac, 0xec, 0x6a, 0xed, 0xac, 0xeb, 0x6a, 0xed, 0xac, - 0xec, 0x6a, 0xee, 0xa9, 0xee, 0x6a, 0xee, 0xa9, 0xee, 0x6a, 0xee, 0xa9, - 0xee, 0x6a, 0xee, 0xaa, 0xef, 0x6a, 0xef, 0xaa, 0xf0, 0x6a, 0xef, 0xaa, - 0xef, 0x6a, 0xef, 0xaa, 0xf0, 0x6a, 0xef, 0xaa, 0xef, 0x6a, 0xf0, 0xaa, - 0xf0, 0x6a, 0xf0, 0xaa, 0xf0, 0x6a, 0xf0, 0xaa, 0xf0, 0x6a, 0xf0, 0xaa, - 0xf0, 0x6a, 0xf1, 0xaa, 0xf1, 0x6a, 0xf1, 0xaa, 0xf1, 0x6a, 0xf1, 0xaa, - 0xf1, 0x6a, 0xf1, 0xaa, 0xf1, 0x6a, 0xf2, 0xaa, 0xf2, 0x6a, 0xf2, 0xaa, - 0xf2, 0x6a, 0xf2, 0xaa, 0xf2, 0x6a, 0xf2, 0xaa, 0xf3, 0x6a, 0xf2, 0xaa, - 0xf3, 0x6a, 0xf3, 0xaa, 0xf3, 0x6a, 0xf3, 0xaa, 0xf3, 0x6a, 0xf3, 0xaa, - 0xf3, 0x6a, 0xf3, 0xaa, 0xf3, 0x6a, 0xf4, 0xaa, 0xf4, 0x6a, 0xf4, 0xaa, - 0xf4, 0x6a, 0xf4, 0xaa, 0xf4, 0x6a, 0xf4, 0xaa, 0xf4, 0x6a, 0xf5, 0xaa, - 0xf5, 0x6a, 0xf5, 0xaa, 0xf5, 0x6a, 0xf5, 0xaa, 0xf5, 0x6a, 0xf5, 0xaa, - 0xf5, 0x6a, 0xf5, 0xaa, 0xf5, 0x6a, 0xf6, 0xac, 0xf7, 0x6a, 0xf6, 0xac, - 0xf7, 0x6a, 0xf6, 0xac, 0xf7, 0x6a, 0xf6, 0xac, 0xf7, 0x6a, 0xf6, 0xac, - 0xf7, 0x6a, 0xf6, 0xac, 0xf7, 0x6a, 0xf6, 0xac, 0xf7, 0x6a, 0xf6, 0xac, - 0xf7, 0x6a, 0xf6, 0xac, 0xf8, 0x6a, 0xf6, 0xac, 0xf8, 0x6a, 0xf6, 0xac, - 0xf8, 0x6a, 0xf6, 0xac, 0xf8, 0x6a, 0xf6, 0xac, 0xf8, 0x6a, 0xfa, 0xac, - 0xf9, 0x6d, 0xfb, 0xac, 0xf9, 0x6a, 0xfb, 0xac, 0xf9, 0x6a, 0xfb, 0xac, - 0xf9, 0x6a, 0xfb, 0xac, 0xfa, 0x6a, 0xfb, 0xac, 0xfa, 0x6a, 0xfb, 0xac, - 0xfa, 0x6a, 0xfb, 0xac, 0xfa, 0x6a, 0xfb, 0xac, 0xfa, 0x6a, 0xfb, 0xac, - 0xfb, 0x6a, 0xfb, 0xac, 0xfa, 0x6a, 0xfb, 0xac, 0xfb, 0x6a, 0xfb, 0xac, - 0xfa, 0x6a, 0xfc, 0xac, 0xfb, 0x6a, 0xfc, 0xac, 0xfa, 0x6a, 0xfc, 0xac, - 0xfb, 0x6a, 0xfc, 0xac, 0xfa, 0x6a, 0xfc, 0xac, 0xfb, 0x6a, 0xfd, 0xac, - 0xfa, 0x6a, 0xfd, 0xac, 0xfb, 0x6a, 0xfd, 0xac, 0xfa, 0x6a, 0xfd, 0xac, - 0xfb, 0x6a, 0xfe, 0xac, 0xfa, 0x6a, 0xfe, 0xac, 0xfb, 0x6a, 0xfe, 0xac, - 0xfa, 0x6a, 0xfe, 0xac, 0xfb, 0x6a, 0xfe, 0xaa, 0xfb, 0x6a, 0xff, 0xac, - 0xfb, 0x6a, 0xff, 0xaa, 0xfb, 0x6a, 0x03, 0xb4, 0x94, 0x6a, 0x0a, 0xb6, - 0x93, 0x6a, 0x0f, 0xb4, 0x94, 0x6a, 0x14, 0xb6, 0x93, 0x6a, 0x17, 0xb4, - 0x94, 0x6a, 0x1b, 0xb6, 0x93, 0x6a, 0x1e, 0xb4, 0x94, 0x6a, 0x20, 0xb6, - 0x93, 0x6a, 0x23, 0xb4, 0x94, 0x6a, 0x25, 0xb6, 0x93, 0x6a, 0x27, 0xb4, - 0x94, 0x6a, 0x29, 0xb6, 0x93, 0x6a, 0x2b, 0xb4, 0x94, 0x6a, 0x2d, 0xb6, - 0x93, 0x6a, 0x2f, 0xb4, 0x94, 0x6a, 0x31, 0xb6, 0x93, 0x6a, 0x32, 0xb4, - 0x94, 0x6a, 0x34, 0xb6, 0x93, 0x6a, 0x35, 0xb4, 0x94, 0x6a, 0x37, 0xb6, - 0x93, 0x6a, 0x38, 0xb4, 0x94, 0x6a, 0x3a, 0xb6, 0x93, 0x6a, 0x3b, 0xb4, - 0x94, 0x6a, 0x3c, 0xb6, 0x93, 0x6a, 0x3e, 0xb4, 0x94, 0x6a, 0x3f, 0xb6, - 0x93, 0x6a, 0x40, 0xb4, 0x94, 0x6a, 0x42, 0xb6, 0x93, 0x6a, 0x43, 0xb4, - 0x94, 0x6a, 0x44, 0xb6, 0x93, 0x6a, 0x45, 0xb4, 0x94, 0x6a, 0x46, 0xb2, - 0x94, 0x6a, 0x47, 0xb4, 0x94, 0x6a, 0x48, 0xb2, 0x94, 0x6a, 0x49, 0xb4, - 0x94, 0x6a, 0x4a, 0xb2, 0x94, 0x6a, 0x4b, 0xb4, 0x94, 0x6a, 0x4c, 0xb2, - 0x94, 0x6a, 0x4d, 0xb4, 0x94, 0x6a, 0x4e, 0xb2, 0x94, 0x6a, 0x4f, 0xb4, - 0x94, 0x6a, 0x50, 0xb2, 0x94, 0x6a, 0x51, 0xb4, 0x94, 0x6a, 0x52, 0xb2, - 0x94, 0x6a, 0x53, 0xb4, 0x94, 0x6a, 0x54, 0xb2, 0x94, 0x6a, 0x55, 0xb4, - 0x94, 0x6a, 0x56, 0xb2, 0x94, 0x6a, 0x57, 0xb4, 0x94, 0x6a, 0x58, 0xb2, - 0x94, 0x6a, 0x58, 0xb4, 0x94, 0x6a, 0x59, 0xb2, 0x94, 0x6a, 0x5a, 0xb4, - 0x94, 0x6a, 0x5b, 0xb2, 0x94, 0x6a, 0x5c, 0xb4, 0x94, 0x6a, 0x5d, 0xb2, - 0x94, 0x6a, 0x5d, 0xb4, 0x94, 0x6a, 0x5e, 0xb2, 0x94, 0x6a, 0x5f, 0xb4, - 0x94, 0x6a, 0x60, 0xb2, 0x94, 0x6a, 0x60, 0xaf, 0x94, 0x6a, 0x61, 0xb2, - 0x94, 0x6a, 0x62, 0xaf, 0x94, 0x6a, 0x63, 0xb2, 0x94, 0x6a, 0x63, 0xaf, - 0x94, 0x6a, 0x64, 0xb2, 0x94, 0x6a, 0x65, 0xaf, 0x94, 0x6a, 0x66, 0xb2, - 0x94, 0x6a, 0x66, 0xaf, 0x94, 0x6a, 0x67, 0xb2, 0x94, 0x6a, 0x68, 0xaf, - 0x94, 0x6a, 0x68, 0xb2, 0x94, 0x6a, 0x69, 0xaf, 0x94, 0x6a, 0x6a, 0xb2, - 0x94, 0x6a, 0x6a, 0xaf, 0x94, 0x6a, 0x6b, 0xb2, 0x94, 0x6a, 0x6c, 0xaf, - 0x94, 0x6a, 0x6c, 0xb2, 0x94, 0x6a, 0x6d, 0xaf, 0x94, 0x6a, 0x6e, 0xb2, - 0x94, 0x6a, 0x6e, 0xaf, 0x94, 0x6a, 0x6f, 0xb2, 0x94, 0x6a, 0x70, 0xaf, - 0x94, 0x6a, 0x70, 0xb2, 0x94, 0x6a, 0x71, 0xaf, 0x94, 0x6a, 0x72, 0xb2, - 0x94, 0x6a, 0x72, 0xaf, 0x94, 0x6a, 0x73, 0xb2, 0x94, 0x6a, 0x73, 0xaf, - 0x94, 0x6a, 0x74, 0xb2, 0x94, 0x6a, 0x75, 0xaf, 0x94, 0x6a, 0x75, 0xb2, - 0x94, 0x6a, 0x76, 0xaf, 0x94, 0x6a, 0x76, 0xb2, 0x94, 0x6a, 0x77, 0xaf, - 0x94, 0x6a, 0x78, 0xb2, 0x94, 0x6a, 0x78, 0xaf, 0x94, 0x6a, 0x79, 0xb2, - 0x94, 0x6a, 0x79, 0xaf, 0x94, 0x6a, 0x7a, 0xb2, 0x94, 0x6a, 0x7a, 0xaf, - 0x94, 0x6a, 0x7b, 0xb2, 0x94, 0x6a, 0x7c, 0xaf, 0x94, 0x6a, 0x7c, 0xb2, - 0x94, 0x6a, 0x7d, 0xaf, 0x94, 0x6a, 0x7d, 0xad, 0x95, 0x6a, 0x7e, 0xaf, - 0x94, 0x6a, 0x7e, 0xad, 0x95, 0x6a, 0x7f, 0xaf, 0x94, 0x6a, 0x7f, 0xad, - 0x95, 0x6a, 0x80, 0xaf, 0x94, 0x6a, 0x81, 0xad, 0x95, 0x6a, 0x81, 0xaf, - 0x94, 0x6a, 0x82, 0xad, 0x95, 0x6a, 0x82, 0xaf, 0x94, 0x6a, 0x83, 0xad, - 0x95, 0x6a, 0x83, 0xaf, 0x94, 0x6a, 0x84, 0xad, 0x95, 0x6a, 0x84, 0xaf, - 0x94, 0x6a, 0x85, 0xad, 0x95, 0x6a, 0x85, 0xaf, 0x94, 0x6a, 0x86, 0xad, - 0x95, 0x6a, 0x86, 0xaf, 0x94, 0x6a, 0x87, 0xad, 0x95, 0x6a, 0x87, 0xaf, - 0x94, 0x6a, 0x88, 0xad, 0x95, 0x6a, 0x88, 0xaf, 0x94, 0x6a, 0x89, 0xad, - 0x95, 0x6a, 0x89, 0xaf, 0x94, 0x6a, 0x8a, 0xad, 0x95, 0x6a, 0x8a, 0xaf, - 0x94, 0x6a, 0x8b, 0xad, 0x95, 0x6a, 0x8b, 0xaf, 0x94, 0x6a, 0x8c, 0xad, - 0x95, 0x6a, 0x8c, 0xaf, 0x94, 0x6a, 0x8d, 0xad, 0x95, 0x6a, 0x8d, 0xaf, - 0x94, 0x6a, 0x8e, 0xad, 0x95, 0x6a, 0x8e, 0xaf, 0x94, 0x6a, 0x8e, 0xad, - 0x95, 0x6a, 0x8f, 0xaf, 0x94, 0x6a, 0x8f, 0xad, 0x95, 0x6a, 0x90, 0xaf, - 0x94, 0x6a, 0x90, 0xad, 0x95, 0x6a, 0x91, 0xaf, 0x94, 0x6a, 0x91, 0xad, - 0x95, 0x6a, 0x92, 0xad, 0x95, 0x6a, 0x92, 0xad, 0x95, 0x6a, 0x93, 0xad, - 0x95, 0x6a, 0x93, 0xad, 0x95, 0x6a, 0x94, 0xad, 0x95, 0x6a, 0x94, 0xad, - 0x95, 0x6a, 0x94, 0xad, 0x95, 0x6a, 0x95, 0xad, 0x95, 0x69, 0x94, 0xad, - 0x95, 0x6a, 0x95, 0xad, 0x96, 0x69, 0x97, 0xad, 0x96, 0x6b, 0x98, 0xad, - 0x97, 0x6b, 0x97, 0xad, 0x97, 0x6b, 0x98, 0xad, 0x98, 0x6a, 0x99, 0xad, - 0x98, 0x6a, 0x98, 0xac, 0x98, 0x6a, 0x99, 0xad, 0x98, 0x6a, 0x99, 0xae, - 0x99, 0x6a, 0x9a, 0xae, 0x9a, 0x6a, 0x9a, 0xae, 0x9a, 0x6a, 0x9a, 0xae, - 0x9a, 0x6a, 0x9b, 0xae, 0x9b, 0x6a, 0x9b, 0xae, 0x9b, 0x6a, 0x9c, 0xae, - 0x9c, 0x6a, 0x9c, 0xae, 0x9c, 0x6a, 0x9d, 0xae, 0x9d, 0x6a, 0x9d, 0xae, - 0x9c, 0x6a, 0x9d, 0xae, 0x9d, 0x6a, 0x9e, 0xae, 0x9e, 0x6a, 0x9e, 0xae, - 0x9e, 0x6a, 0x9f, 0xae, 0x9f, 0x6a, 0x9f, 0xae, 0x9f, 0x6a, 0x9f, 0xae, - 0x9f, 0x6a, 0xa0, 0xae, 0xa0, 0x6a, 0xa0, 0xae, 0xa0, 0x6a, 0xa1, 0xae, - 0xa1, 0x6a, 0xa1, 0xae, 0xa1, 0x6a, 0xa1, 0xae, 0xa1, 0x6a, 0xa2, 0xae, - 0xa1, 0x6a, 0xa2, 0xae, 0xa1, 0x6a, 0xa3, 0xae, 0xa1, 0x6a, 0xa3, 0xaf, - 0xa3, 0x6a, 0xa3, 0xaf, 0xa3, 0x6a, 0xa4, 0xaf, 0xa4, 0x6a, 0xa4, 0xaf, - 0xa4, 0x6a, 0xa5, 0xaf, 0xa5, 0x6a, 0xa5, 0xaf, 0xa5, 0x6a, 0xa5, 0xaf, - 0xa5, 0x6a, 0xa6, 0xaf, 0xa5, 0x6a, 0xa6, 0xaf, 0xa5, 0x6a, 0xa6, 0xaf, - 0xa5, 0x6a, 0xa7, 0xaf, 0xa5, 0x6a, 0xa7, 0xb0, 0xa7, 0x6a, 0xa8, 0xb0, - 0xa8, 0x6a, 0xa8, 0xb0, 0xa8, 0x6a, 0xa8, 0xb0, 0xa8, 0x6a, 0xa9, 0xb0, - 0xa9, 0x6a, 0xa9, 0xb0, 0xa9, 0x6a, 0xaa, 0xb0, 0xaa, 0x6a, 0xaa, 0xb0, - 0xa9, 0x6a, 0xaa, 0xb0, 0xaa, 0x6a, 0xab, 0xb0, 0xa9, 0x6a, 0xab, 0xb0, - 0xaa, 0x6a, 0xab, 0xb0, 0xab, 0x6a, 0xac, 0xb0, 0xac, 0x6a, 0xac, 0xb0, - 0xac, 0x6a, 0xac, 0xb0, 0xac, 0x6a, 0xad, 0xb0, 0xad, 0x6a, 0xad, 0xb0, - 0xad, 0x6a, 0xae, 0xb0, 0xae, 0x6a, 0xae, 0xb0, 0xad, 0x6a, 0xae, 0xb0, - 0xae, 0x6a, 0xaf, 0xb0, 0xad, 0x6a, 0xaf, 0xb0, 0xae, 0x6a, 0xaf, 0xb0, - 0xad, 0x6a, 0xb0, 0xb0, 0xae, 0x6a, 0xb0, 0xb1, 0xb0, 0x6a, 0xb0, 0xb1, - 0xb0, 0x6a, 0xb1, 0xb1, 0xb1, 0x6a, 0xb1, 0xb1, 0xb1, 0x6a, 0xb2, 0xb1, - 0xb2, 0x6a, 0xb2, 0xb1, 0xb1, 0x6a, 0xb2, 0xb1, 0xb2, 0x6a, 0xb3, 0xb1, - 0xb1, 0x6a, 0xb3, 0xb1, 0xb2, 0x6a, 0xb3, 0xb1, 0xb1, 0x6a, 0xb4, 0xb1, - 0xb2, 0x6a, 0xb4, 0xb2, 0xb4, 0x6a, 0xb4, 0xb2, 0xb4, 0x6a, 0xb5, 0xb2, - 0xb5, 0x6a, 0xb5, 0xb2, 0xb5, 0x6a, 0xb5, 0xb2, 0xb5, 0x6a, 0xb6, 0xb2, - 0xb5, 0x6a, 0xb6, 0xb2, 0xb5, 0x6a, 0xb6, 0xb2, 0xb5, 0x6a, 0xb7, 0xb2, - 0xb5, 0x6a, 0xb7, 0xb2, 0xb5, 0x6a, 0xb7, 0xb2, 0xb5, 0x6a, 0xb8, 0xb3, - 0xb8, 0x6a, 0xb8, 0xb3, 0xb8, 0x6a, 0xb8, 0xb3, 0xb8, 0x6a, 0xb9, 0xb3, - 0xb9, 0x6a, 0xb9, 0xb3, 0xb9, 0x6a, 0xb9, 0xb3, 0xb9, 0x6a, 0xba, 0xb3, - 0xb9, 0x6a, 0xba, 0xb3, 0xb9, 0x6a, 0xba, 0xb3, 0xb9, 0x6a, 0xbb, 0xb3, - 0xb9, 0x6a, 0xbb, 0xb3, 0xb9, 0x6a, 0xbb, 0xb3, 0xb9, 0x6a, 0xbc, 0xb3, - 0xb9, 0x6a, 0xbc, 0xb3, 0xb9, 0x6a, 0xbc, 0xb3, 0xbc, 0x6a, 0xbd, 0xb3, - 0xbd, 0x6a, 0xbd, 0xb3, 0xbd, 0x6a, 0xbd, 0xb3, 0xbd, 0x6a, 0xbe, 0xb3, - 0xbd, 0x6a, 0xbe, 0xb3, 0xbd, 0x6a, 0xbe, 0xb3, 0xbd, 0x6a, 0xbf, 0xb3, - 0xbd, 0x6a, 0xbf, 0xb3, 0xbd, 0x6a, 0xbf, 0xb3, 0xbd, 0x6a, 0xc0, 0xb3, - 0xbd, 0x6a, 0xc0, 0xb4, 0xc0, 0x6a, 0xc0, 0xb4, 0xc0, 0x6a, 0xc1, 0xb4, - 0xc1, 0x6a, 0xc1, 0xb4, 0xc0, 0x6a, 0xc1, 0xb4, 0xc1, 0x6a, 0xc1, 0xb4, - 0xc0, 0x6a, 0xc2, 0xb4, 0xc1, 0x6a, 0xc2, 0xb4, 0xc0, 0x6a, 0xc2, 0xb4, - 0xc1, 0x6a, 0xc3, 0xb4, 0xc0, 0x6a, 0xc3, 0xb4, 0xc1, 0x6a, 0xc3, 0xb5, - 0xc3, 0x6a, 0xc4, 0xb5, 0xc4, 0x6a, 0xc4, 0xb5, 0xc4, 0x6a, 0xc4, 0xb5, - 0xc4, 0x6a, 0xc5, 0xb5, 0xc4, 0x6a, 0xc5, 0xb5, 0xc4, 0x6a, 0xc5, 0xb5, - 0xc4, 0x6a, 0xc6, 0xb5, 0xc4, 0x6a, 0xc6, 0xb5, 0xc4, 0x6a, 0xc6, 0xb5, - 0xc4, 0x6a, 0xc6, 0xb5, 0xc4, 0x6a, 0xc7, 0xb5, 0xc7, 0x6a, 0xc7, 0xb5, - 0xc7, 0x6a, 0xc7, 0xb5, 0xc7, 0x6a, 0xc8, 0xb5, 0xc7, 0x6a, 0xc8, 0xb5, - 0xc7, 0x6a, 0xc8, 0xb5, 0xc7, 0x6a, 0xc9, 0xb5, 0xc7, 0x6a, 0xc9, 0xae, - 0xd0, 0x6a, 0xc9, 0xaf, 0xd0, 0x6a, 0xc9, 0xae, 0xd0, 0x6a, 0xca, 0xaf, - 0xd0, 0x6a, 0xca, 0xae, 0xd0, 0x6a, 0xca, 0xaf, 0xd0, 0x6a, 0xcb, 0xae, - 0xd0, 0x6a, 0xcb, 0xaf, 0xd0, 0x6a, 0xcb, 0xae, 0xd0, 0x6a, 0xcc, 0xaf, - 0xd0, 0x6a, 0xcc, 0xae, 0xd0, 0x6a, 0xcc, 0xaf, 0xd0, 0x6a, 0xcc, 0xae, - 0xd0, 0x6a, 0xcd, 0xaf, 0xd0, 0x6a, 0xcd, 0xae, 0xd0, 0x6a, 0xcd, 0xaf, - 0xd0, 0x6a, 0xce, 0xae, 0xd0, 0x6a, 0xce, 0xad, 0xd0, 0x6a, 0xce, 0xae, - 0xd0, 0x6a, 0xce, 0xad, 0xd0, 0x6a, 0xcf, 0xae, 0xd0, 0x6a, 0xcf, 0xad, - 0xd0, 0x6a, 0xcf, 0xae, 0xd0, 0x6a, 0xd0, 0xad, 0xd0, 0x6a, 0xd0, 0xad, - 0xd0, 0x6a, 0xd0, 0xad, 0xd0, 0x6a, 0xd0, 0xad, 0xd0, 0x6a, 0xd0, 0xad, - 0xd1, 0x6a, 0xd0, 0xad, 0xd1, 0x6a, 0xd0, 0xad, 0xd1, 0x6a, 0xd0, 0xad, - 0xd2, 0x6a, 0xd0, 0xad, 0xd2, 0x6a, 0xd0, 0xad, 0xd2, 0x6a, 0xd0, 0xad, - 0xd2, 0x67, 0xd0, 0xad, 0xd3, 0x6a, 0xd0, 0xad, 0xd3, 0x67, 0xd0, 0xad, - 0xd3, 0x6a, 0xd0, 0xad, 0xd4, 0x67, 0xd0, 0xad, 0xd4, 0x6a, 0xd0, 0xad, - 0xd4, 0x67, 0xd0, 0xad, 0xd4, 0x6a, 0xd0, 0xad, 0xd5, 0x67, 0xd0, 0xad, - 0xd5, 0x6a, 0xd0, 0xad, 0xd5, 0x67, 0xd0, 0xad, 0xd6, 0x6a, 0xd0, 0xad, - 0xd6, 0x67, 0xd0, 0xad, 0xd6, 0x6a, 0xd0, 0xad, 0xd6, 0x67, 0xd0, 0xad, - 0xd7, 0x6a, 0xd0, 0xad, 0xd7, 0x67, 0xd0, 0xad, 0xd7, 0x6a, 0xd0, 0xad, - 0xd7, 0x67, 0xd0, 0xad, 0xd8, 0x6a, 0xd0, 0xad, 0xd8, 0x67, 0xd0, 0xad, - 0xd8, 0x6a, 0xd0, 0xad, 0xd9, 0x67, 0xd0, 0xad, 0xd9, 0x6a, 0xd0, 0xad, - 0xd9, 0x67, 0xd0, 0xad, 0xd9, 0x6a, 0xd0, 0xad, 0xda, 0x67, 0xd0, 0xad, - 0xda, 0x6a, 0xd0, 0xad, 0xda, 0x67, 0xd0, 0xad, 0xda, 0x64, 0xd0, 0xad, - 0xdb, 0x67, 0xd0, 0xad, 0xdb, 0x64, 0xd0, 0xad, 0xdb, 0x67, 0xd0, 0xad, - 0xdb, 0x64, 0xd0, 0xad, 0xdc, 0x67, 0xd0, 0xad, 0xdc, 0x64, 0xd0, 0xad, - 0xdc, 0x67, 0xd0, 0xad, 0xdd, 0x64, 0xd0, 0xad, 0xdd, 0x67, 0xd0, 0xad, - 0xdd, 0x64, 0xd0, 0xad, 0xdd, 0x67, 0xd0, 0xad, 0xde, 0x64, 0xd0, 0xad, - 0xde, 0x67, 0xd0, 0xad, 0xde, 0x64, 0xec, 0xad, 0xde, 0x6b, 0xeb, 0xad, - 0xdf, 0x6f, 0xec, 0xad, 0xdf, 0x6b, 0xeb, 0xad, 0xdf, 0x6f, 0xec, 0xad, - 0xdf, 0x6b, 0xeb, 0xad, 0xe0, 0x6f, 0xec, 0xad, 0xe0, 0x6b, 0xeb, 0xad, - 0xe0, 0x6f, 0xec, 0xad, 0xe1, 0x6b, 0xeb, 0xad, 0xe1, 0x6f, 0xec, 0xad, - 0xe1, 0x6b, 0xeb, 0xad, 0xe1, 0x6f, 0xec, 0xad, 0xe2, 0x6b, 0xeb, 0xad, - 0xe2, 0x6f, 0xec, 0xad, 0xe2, 0x6b, 0xeb, 0xad, 0xe2, 0x6f, 0xec, 0xad, - 0xe3, 0x6b, 0xeb, 0xad, 0xe3, 0x6f, 0xec, 0xad, 0xe3, 0x6b, 0xeb, 0xad, - 0xe3, 0x6f, 0xec, 0xad, 0xe4, 0x6b, 0xeb, 0xad, 0xe4, 0x6f, 0xec, 0xad, - 0xe4, 0x6b, 0xeb, 0xad, 0xe4, 0x6f, 0xec, 0xad, 0xe5, 0x6b, 0xeb, 0xad, - 0xe5, 0x6f, 0xec, 0xad, 0xe5, 0x6b, 0xeb, 0xad, 0xe5, 0x6f, 0xec, 0xad, - 0xe6, 0x6b, 0xec, 0xad, 0xe6, 0x6a, 0xec, 0xad, 0xe6, 0x6b, 0xec, 0xad, - 0xe6, 0x6a, 0xec, 0xad, 0xe7, 0x6b, 0xec, 0xad, 0xe7, 0x6a, 0xec, 0xad, - 0xe7, 0x6b, 0xec, 0xad, 0xe7, 0x6a, 0xec, 0xad, 0xe8, 0x6b, 0xec, 0xad, - 0xe8, 0x6a, 0xec, 0xad, 0xe8, 0x6b, 0xec, 0xad, 0xe8, 0x6a, 0xec, 0xad, - 0xe9, 0x6b, 0xec, 0xad, 0xe9, 0x6a, 0xec, 0xad, 0xe9, 0x6b, 0xec, 0xad, - 0xe9, 0x6a, 0xec, 0xad, 0xea, 0x6b, 0xec, 0xad, 0xea, 0x6a, 0xec, 0xad, - 0xea, 0x6b, 0xec, 0xad, 0xea, 0x6a, 0xec, 0xad, 0xeb, 0x6b, 0xec, 0xad, - 0xeb, 0x6a, 0xec, 0xad, 0xeb, 0x6b, 0xec, 0xad, 0xeb, 0x6a, 0xec, 0xad, - 0xec, 0x6b, 0xec, 0xad, 0xeb, 0x6a, 0xec, 0xad, 0xec, 0x6a, 0xec, 0xad, - 0xeb, 0x6a, 0xec, 0xad, 0xec, 0x6a, 0xed, 0xad, 0xeb, 0x6a, 0xed, 0xad, - 0xec, 0x6a, 0xed, 0xad, 0xeb, 0x6a, 0xed, 0xad, 0xec, 0x6a, 0xee, 0xa9, - 0xee, 0x6a, 0xee, 0xa9, 0xee, 0x6a, 0xee, 0xa9, 0xee, 0x6a, 0xee, 0xa9, - 0xee, 0x6a, 0xef, 0xa9, 0xef, 0x6a, 0xef, 0xa9, 0xef, 0x6a, 0xef, 0xa9, - 0xef, 0x6a, 0xef, 0xa9, 0xef, 0x6a, 0xf0, 0xa9, 0xf0, 0x6a, 0xf0, 0xa9, - 0xf0, 0x6a, 0xf0, 0xa9, 0xf0, 0x6a, 0xf0, 0xaa, 0xf1, 0x6a, 0xf1, 0xaa, - 0xf2, 0x6a, 0xf1, 0xaa, 0xf1, 0x6a, 0xf1, 0xaa, 0xf2, 0x6a, 0xf1, 0xaa, - 0xf1, 0x6a, 0xf2, 0xaa, 0xf2, 0x6a, 0xf2, 0xaa, 0xf2, 0x6a, 0xf2, 0xaa, - 0xf2, 0x6a, 0xf2, 0xaa, 0xf2, 0x6a, 0xf2, 0xaa, 0xf2, 0x6a, 0xf3, 0xaa, - 0xf3, 0x6a, 0xf3, 0xaa, 0xf3, 0x6a, 0xf3, 0xaa, 0xf3, 0x6a, 0xf3, 0xaa, - 0xf3, 0x6a, 0xf4, 0xaa, 0xf4, 0x6a, 0xf4, 0xab, 0xf5, 0x6a, 0xf4, 0xab, - 0xf5, 0x6a, 0xf4, 0xab, 0xf5, 0x6a, 0xf5, 0xab, 0xf5, 0x6a, 0xf5, 0xab, - 0xf5, 0x6a, 0xf5, 0xab, 0xf5, 0x6a, 0xf5, 0xab, 0xf5, 0x6a, 0xf5, 0xae, - 0xf6, 0x6a, 0xf6, 0xad, 0xf7, 0x6a, 0xf6, 0xad, 0xf7, 0x6a, 0xf6, 0xad, - 0xf7, 0x6a, 0xf6, 0xad, 0xf7, 0x6a, 0xf6, 0xad, 0xf7, 0x6a, 0xf6, 0xad, - 0xf7, 0x6a, 0xf6, 0xad, 0xf7, 0x6a, 0xf6, 0xad, 0xf7, 0x6a, 0xf6, 0xad, - 0xf8, 0x6a, 0xf6, 0xad, 0xf8, 0x6a, 0xf6, 0xad, 0xf8, 0x6a, 0xf6, 0xad, - 0xf8, 0x6a, 0xf6, 0xad, 0xf8, 0x6a, 0xfa, 0xad, 0xf9, 0x6c, 0xfb, 0xad, - 0xf9, 0x6a, 0xfa, 0xad, 0xf9, 0x6c, 0xfb, 0xad, 0xf9, 0x6a, 0xfa, 0xad, - 0xfa, 0x6c, 0xfb, 0xad, 0xfa, 0x6a, 0xfb, 0xad, 0xfa, 0x6a, 0xfb, 0xad, - 0xfa, 0x6a, 0xfb, 0xad, 0xfa, 0x6a, 0xfb, 0xad, 0xfa, 0x6a, 0xfb, 0xad, - 0xfa, 0x6a, 0xfb, 0xad, 0xfa, 0x6a, 0xfb, 0xad, 0xfa, 0x6a, 0xfc, 0xab, - 0xfb, 0x6a, 0xfc, 0xad, 0xfa, 0x6a, 0xfc, 0xab, 0xfb, 0x6a, 0xfc, 0xad, - 0xfa, 0x6a, 0xfc, 0xab, 0xfb, 0x6a, 0xfd, 0xad, 0xfa, 0x6a, 0xfd, 0xab, - 0xfb, 0x6a, 0xfd, 0xad, 0xfa, 0x6a, 0xfd, 0xab, 0xfb, 0x6a, 0xfe, 0xad, - 0xfa, 0x6a, 0xfe, 0xab, 0xfb, 0x6a, 0xfe, 0xad, 0xfa, 0x6a, 0xfe, 0xab, - 0xfb, 0x6a, 0xfe, 0xaa, 0xfb, 0x6a, 0xff, 0xab, 0xfb, 0x6a, 0xff, 0xaa, - 0xfb, 0x6a, 0x03, 0xb4, 0x94, 0x6b, 0x0a, 0xb6, 0x93, 0x6b, 0x0f, 0xb4, - 0x94, 0x6b, 0x14, 0xb6, 0x93, 0x6b, 0x17, 0xb4, 0x94, 0x6b, 0x1b, 0xb6, - 0x93, 0x6b, 0x1e, 0xb4, 0x94, 0x6b, 0x20, 0xb6, 0x93, 0x6b, 0x23, 0xb4, - 0x94, 0x6b, 0x25, 0xb6, 0x93, 0x6b, 0x27, 0xb4, 0x94, 0x6b, 0x29, 0xb6, - 0x93, 0x6b, 0x2b, 0xb4, 0x94, 0x6b, 0x2d, 0xb6, 0x93, 0x6b, 0x2f, 0xb4, - 0x94, 0x6b, 0x31, 0xb6, 0x93, 0x6b, 0x32, 0xb4, 0x94, 0x6b, 0x34, 0xb6, - 0x93, 0x6b, 0x35, 0xb4, 0x94, 0x6b, 0x37, 0xb2, 0x94, 0x6b, 0x38, 0xb4, - 0x94, 0x6b, 0x3a, 0xb2, 0x94, 0x6b, 0x3b, 0xb4, 0x94, 0x6b, 0x3c, 0xb2, - 0x94, 0x6b, 0x3e, 0xb4, 0x94, 0x6b, 0x3f, 0xb2, 0x94, 0x6b, 0x40, 0xb4, - 0x94, 0x6b, 0x42, 0xb2, 0x94, 0x6b, 0x43, 0xb4, 0x94, 0x6b, 0x44, 0xb2, - 0x94, 0x6b, 0x45, 0xb4, 0x94, 0x6b, 0x46, 0xb2, 0x94, 0x6b, 0x47, 0xb4, - 0x94, 0x6b, 0x48, 0xb2, 0x94, 0x6b, 0x49, 0xb4, 0x94, 0x6b, 0x4a, 0xb2, - 0x94, 0x6b, 0x4b, 0xb4, 0x94, 0x6b, 0x4c, 0xb2, 0x94, 0x6b, 0x4d, 0xb4, - 0x94, 0x6b, 0x4e, 0xb2, 0x94, 0x6b, 0x4f, 0xb4, 0x94, 0x6b, 0x50, 0xb2, - 0x94, 0x6b, 0x51, 0xb4, 0x94, 0x6b, 0x52, 0xb2, 0x94, 0x6b, 0x53, 0xb4, - 0x94, 0x6b, 0x54, 0xb2, 0x94, 0x6b, 0x55, 0xb4, 0x94, 0x6b, 0x56, 0xb2, - 0x94, 0x6b, 0x57, 0xb4, 0x94, 0x6b, 0x58, 0xb2, 0x94, 0x6b, 0x58, 0xb4, - 0x94, 0x6b, 0x59, 0xb2, 0x94, 0x6b, 0x5a, 0xb4, 0x94, 0x6b, 0x5b, 0xb2, - 0x94, 0x6b, 0x5c, 0xb4, 0x94, 0x6b, 0x5d, 0xb2, 0x94, 0x6b, 0x5d, 0xb4, - 0x94, 0x6b, 0x5e, 0xb2, 0x94, 0x6b, 0x5f, 0xb4, 0x94, 0x6b, 0x60, 0xb2, - 0x94, 0x6b, 0x60, 0xb4, 0x94, 0x6b, 0x61, 0xb2, 0x94, 0x6b, 0x62, 0xb4, - 0x94, 0x6b, 0x63, 0xb2, 0x94, 0x6b, 0x63, 0xb4, 0x94, 0x6b, 0x64, 0xb2, - 0x94, 0x6b, 0x65, 0xb4, 0x94, 0x6b, 0x66, 0xb2, 0x94, 0x6b, 0x66, 0xb4, - 0x94, 0x6b, 0x67, 0xb2, 0x94, 0x6b, 0x68, 0xb4, 0x94, 0x6b, 0x68, 0xb2, - 0x94, 0x6b, 0x69, 0xb4, 0x94, 0x6b, 0x6a, 0xb2, 0x94, 0x6b, 0x6a, 0xb4, - 0x94, 0x6b, 0x6b, 0xb2, 0x94, 0x6b, 0x6c, 0xb4, 0x94, 0x6b, 0x6c, 0xb2, - 0x94, 0x6b, 0x6d, 0xb4, 0x94, 0x6b, 0x6e, 0xb2, 0x94, 0x6b, 0x6e, 0xaf, - 0x94, 0x6b, 0x6f, 0xb2, 0x94, 0x6b, 0x70, 0xaf, 0x94, 0x6b, 0x70, 0xb2, - 0x94, 0x6b, 0x71, 0xaf, 0x94, 0x6b, 0x72, 0xb2, 0x94, 0x6b, 0x72, 0xaf, - 0x94, 0x6b, 0x73, 0xb2, 0x94, 0x6b, 0x73, 0xaf, 0x94, 0x6b, 0x74, 0xb2, - 0x94, 0x6b, 0x75, 0xaf, 0x94, 0x6b, 0x75, 0xb2, 0x94, 0x6b, 0x76, 0xaf, - 0x94, 0x6b, 0x76, 0xb2, 0x94, 0x6b, 0x77, 0xaf, 0x94, 0x6b, 0x78, 0xb2, - 0x94, 0x6b, 0x78, 0xaf, 0x94, 0x6b, 0x79, 0xb2, 0x94, 0x6b, 0x79, 0xaf, - 0x94, 0x6b, 0x7a, 0xb2, 0x94, 0x6b, 0x7a, 0xaf, 0x94, 0x6b, 0x7b, 0xb2, - 0x94, 0x6b, 0x7c, 0xaf, 0x94, 0x6b, 0x7c, 0xb2, 0x94, 0x6b, 0x7d, 0xaf, - 0x94, 0x6b, 0x7d, 0xb2, 0x94, 0x6b, 0x7e, 0xaf, 0x94, 0x6b, 0x7e, 0xb2, - 0x94, 0x6b, 0x7f, 0xaf, 0x94, 0x6b, 0x7f, 0xb2, 0x94, 0x6b, 0x80, 0xaf, - 0x94, 0x6b, 0x81, 0xb2, 0x94, 0x6b, 0x81, 0xaf, 0x94, 0x6b, 0x82, 0xb2, - 0x94, 0x6b, 0x82, 0xaf, 0x94, 0x6b, 0x83, 0xb2, 0x94, 0x6b, 0x83, 0xaf, - 0x94, 0x6b, 0x84, 0xad, 0x95, 0x6b, 0x84, 0xaf, 0x94, 0x6b, 0x85, 0xad, - 0x95, 0x6b, 0x85, 0xaf, 0x94, 0x6b, 0x86, 0xad, 0x95, 0x6b, 0x86, 0xaf, - 0x94, 0x6b, 0x87, 0xad, 0x95, 0x6b, 0x87, 0xaf, 0x94, 0x6b, 0x88, 0xad, - 0x95, 0x6b, 0x88, 0xaf, 0x94, 0x6b, 0x89, 0xad, 0x95, 0x6b, 0x89, 0xaf, - 0x94, 0x6b, 0x8a, 0xad, 0x95, 0x6b, 0x8a, 0xaf, 0x94, 0x6b, 0x8b, 0xad, - 0x95, 0x6b, 0x8b, 0xaf, 0x94, 0x6b, 0x8c, 0xad, 0x95, 0x6b, 0x8c, 0xaf, - 0x94, 0x6b, 0x8d, 0xad, 0x95, 0x6b, 0x8d, 0xaf, 0x94, 0x6b, 0x8e, 0xad, - 0x95, 0x6b, 0x8e, 0xaf, 0x94, 0x6b, 0x8e, 0xad, 0x95, 0x6b, 0x8f, 0xaf, - 0x94, 0x6b, 0x8f, 0xad, 0x95, 0x6b, 0x90, 0xaf, 0x94, 0x6b, 0x90, 0xad, - 0x95, 0x6b, 0x91, 0xaf, 0x94, 0x6b, 0x91, 0xad, 0x95, 0x6b, 0x92, 0xad, - 0x95, 0x6b, 0x92, 0xad, 0x95, 0x6b, 0x93, 0xad, 0x95, 0x6b, 0x93, 0xad, - 0x95, 0x6b, 0x94, 0xad, 0x95, 0x6b, 0x94, 0xad, 0x95, 0x6b, 0x94, 0xad, - 0x95, 0x6b, 0x95, 0xad, 0x95, 0x6a, 0x94, 0xad, 0x95, 0x6b, 0x95, 0xad, - 0x96, 0x6a, 0x97, 0xad, 0x96, 0x6c, 0x97, 0xad, 0x97, 0x6c, 0x97, 0xad, - 0x97, 0x6c, 0x98, 0xad, 0x98, 0x6c, 0x98, 0xad, 0x98, 0x6c, 0x98, 0xad, - 0x98, 0x6a, 0x99, 0xad, 0x99, 0x6a, 0x99, 0xad, 0x99, 0x6a, 0x9a, 0xad, - 0x9a, 0x6a, 0x9a, 0xad, 0x9a, 0x6a, 0x9a, 0xad, 0x9a, 0x6b, 0x9b, 0xae, - 0x9b, 0x6b, 0x9b, 0xae, 0x9b, 0x6b, 0x9c, 0xae, 0x9c, 0x6b, 0x9c, 0xae, - 0x9c, 0x6b, 0x9d, 0xae, 0x9d, 0x6b, 0x9d, 0xae, 0x9d, 0x6b, 0x9d, 0xae, - 0x9d, 0x6b, 0x9e, 0xae, 0x9e, 0x6b, 0x9e, 0xae, 0x9e, 0x6b, 0x9f, 0xae, - 0x9f, 0x6b, 0x9f, 0xae, 0x9e, 0x6b, 0x9f, 0xae, 0x9f, 0x6b, 0xa0, 0xaf, - 0xa0, 0x6b, 0xa0, 0xaf, 0xa0, 0x6b, 0xa1, 0xaf, 0xa1, 0x6b, 0xa1, 0xaf, - 0xa1, 0x6b, 0xa1, 0xaf, 0xa1, 0x6b, 0xa2, 0xaf, 0xa2, 0x6b, 0xa2, 0xaf, - 0xa2, 0x6b, 0xa3, 0xaf, 0xa3, 0x6b, 0xa3, 0xaf, 0xa3, 0x6b, 0xa3, 0xaf, - 0xa3, 0x6b, 0xa4, 0xaf, 0xa3, 0x6b, 0xa4, 0xaf, 0xa3, 0x6b, 0xa5, 0xaf, - 0xa3, 0x6b, 0xa5, 0xaf, 0xa5, 0x6b, 0xa5, 0xaf, 0xa5, 0x6b, 0xa6, 0xaf, - 0xa6, 0x6b, 0xa6, 0xaf, 0xa6, 0x6b, 0xa6, 0xaf, 0xa6, 0x6b, 0xa7, 0xaf, - 0xa7, 0x6b, 0xa7, 0xaf, 0xa7, 0x6b, 0xa8, 0xaf, 0xa8, 0x6b, 0xa8, 0xaf, - 0xa7, 0x6b, 0xa8, 0xaf, 0xa8, 0x6b, 0xa9, 0xaf, 0xa7, 0x6b, 0xa9, 0xaf, - 0xa8, 0x6b, 0xaa, 0xb0, 0xaa, 0x6b, 0xaa, 0xb0, 0xaa, 0x6b, 0xaa, 0xb0, - 0xaa, 0x6b, 0xab, 0xb0, 0xab, 0x6b, 0xab, 0xb0, 0xab, 0x6b, 0xab, 0xb0, - 0xab, 0x6b, 0xac, 0xb0, 0xac, 0x6b, 0xac, 0xb0, 0xab, 0x6b, 0xac, 0xb0, - 0xac, 0x6b, 0xad, 0xb0, 0xab, 0x6b, 0xad, 0xb0, 0xac, 0x6b, 0xae, 0xb1, - 0xae, 0x6b, 0xae, 0xb1, 0xae, 0x6b, 0xae, 0xb1, 0xae, 0x6b, 0xaf, 0xb1, - 0xaf, 0x6b, 0xaf, 0xb1, 0xaf, 0x6b, 0xaf, 0xb1, 0xaf, 0x6b, 0xb0, 0xb1, - 0xb0, 0x6b, 0xb0, 0xb1, 0xaf, 0x6b, 0xb0, 0xb1, 0xb0, 0x6b, 0xb1, 0xb1, - 0xaf, 0x6b, 0xb1, 0xb1, 0xb0, 0x6b, 0xb2, 0xb1, 0xaf, 0x6b, 0xb2, 0xb1, - 0xb0, 0x6b, 0xb2, 0xb2, 0xb2, 0x6b, 0xb3, 0xb2, 0xb3, 0x6b, 0xb3, 0xb2, - 0xb3, 0x6b, 0xb3, 0xb2, 0xb3, 0x6b, 0xb4, 0xb2, 0xb4, 0x6b, 0xb4, 0xb2, - 0xb3, 0x6b, 0xb4, 0xb2, 0xb4, 0x6b, 0xb5, 0xb2, 0xb3, 0x6b, 0xb5, 0xb2, - 0xb4, 0x6b, 0xb5, 0xb2, 0xb3, 0x6b, 0xb6, 0xb2, 0xb4, 0x6b, 0xb6, 0xb2, - 0xb6, 0x6b, 0xb6, 0xb2, 0xb6, 0x6b, 0xb7, 0xb2, 0xb7, 0x6b, 0xb7, 0xb2, - 0xb7, 0x6b, 0xb7, 0xb2, 0xb7, 0x6b, 0xb8, 0xb2, 0xb7, 0x6b, 0xb8, 0xb2, - 0xb7, 0x6b, 0xb8, 0xb2, 0xb7, 0x6b, 0xb9, 0xb2, 0xb7, 0x6b, 0xb9, 0xb2, - 0xb7, 0x6b, 0xb9, 0xb2, 0xb7, 0x6b, 0xba, 0xb3, 0xba, 0x6b, 0xba, 0xb3, - 0xba, 0x6b, 0xba, 0xb3, 0xba, 0x6b, 0xbb, 0xb3, 0xbb, 0x6b, 0xbb, 0xb3, - 0xbb, 0x6b, 0xbb, 0xb3, 0xbb, 0x6b, 0xbc, 0xb3, 0xbb, 0x6b, 0xbc, 0xb3, - 0xbb, 0x6b, 0xbc, 0xb3, 0xbb, 0x6b, 0xbd, 0xb3, 0xbb, 0x6b, 0xbd, 0xb3, - 0xbb, 0x6b, 0xbd, 0xb3, 0xbb, 0x6b, 0xbe, 0xb3, 0xbb, 0x6b, 0xbe, 0xb4, - 0xbe, 0x6b, 0xbe, 0xb4, 0xbe, 0x6b, 0xbf, 0xb4, 0xbf, 0x6b, 0xbf, 0xb4, - 0xbe, 0x6b, 0xbf, 0xb4, 0xbf, 0x6b, 0xc0, 0xb4, 0xbe, 0x6b, 0xc0, 0xb4, - 0xbf, 0x6b, 0xc0, 0xb4, 0xbe, 0x6b, 0xc1, 0xb4, 0xbf, 0x6b, 0xc1, 0xb4, - 0xbe, 0x6b, 0xc1, 0xb4, 0xbf, 0x6b, 0xc1, 0xb4, 0xc1, 0x6b, 0xc2, 0xb4, - 0xc2, 0x6b, 0xc2, 0xb4, 0xc2, 0x6b, 0xc2, 0xb4, 0xc2, 0x6b, 0xc3, 0xb4, - 0xc2, 0x6b, 0xc3, 0xb4, 0xc2, 0x6b, 0xc3, 0xb4, 0xc2, 0x6b, 0xc4, 0xb4, - 0xc2, 0x6b, 0xc4, 0xb4, 0xc2, 0x6b, 0xc4, 0xb4, 0xc2, 0x6b, 0xc5, 0xb4, - 0xc2, 0x6b, 0xc5, 0xb5, 0xc5, 0x6b, 0xc5, 0xb5, 0xc5, 0x6b, 0xc6, 0xb5, - 0xc6, 0x6b, 0xc6, 0xb5, 0xc6, 0x6b, 0xc6, 0xb5, 0xc6, 0x6b, 0xc6, 0xb5, - 0xc6, 0x6b, 0xc7, 0xb5, 0xc6, 0x6b, 0xc7, 0xb5, 0xc6, 0x6b, 0xc7, 0xb5, - 0xc6, 0x6b, 0xc8, 0xb5, 0xc6, 0x6b, 0xc8, 0xb5, 0xc6, 0x6b, 0xc8, 0xb5, - 0xc6, 0x6b, 0xc9, 0xb6, 0xc9, 0x6b, 0xc9, 0xb6, 0xc9, 0x6b, 0xc9, 0xaf, - 0xd0, 0x6b, 0xc9, 0xad, 0xd0, 0x6b, 0xca, 0xaf, 0xd0, 0x6b, 0xca, 0xad, - 0xd0, 0x6b, 0xca, 0xaf, 0xd0, 0x6b, 0xcb, 0xad, 0xd0, 0x6b, 0xcb, 0xaf, - 0xd0, 0x6b, 0xcb, 0xad, 0xd0, 0x6b, 0xcc, 0xaf, 0xd0, 0x6b, 0xcc, 0xad, - 0xd0, 0x6b, 0xcc, 0xaf, 0xd0, 0x6b, 0xcc, 0xad, 0xd0, 0x6b, 0xcd, 0xaf, - 0xd0, 0x6b, 0xcd, 0xad, 0xd0, 0x6b, 0xcd, 0xaf, 0xd0, 0x6b, 0xce, 0xad, - 0xd0, 0x6b, 0xce, 0xad, 0xd0, 0x6b, 0xce, 0xad, 0xd0, 0x6b, 0xce, 0xad, - 0xd0, 0x6b, 0xcf, 0xad, 0xd0, 0x6b, 0xcf, 0xad, 0xd0, 0x6b, 0xcf, 0xad, - 0xd0, 0x6b, 0xd0, 0xad, 0xd0, 0x6b, 0xd0, 0xad, 0xd0, 0x6a, 0xd0, 0xad, - 0xd0, 0x6b, 0xd0, 0xad, 0xd0, 0x6a, 0xd0, 0xad, 0xd1, 0x6b, 0xd0, 0xad, - 0xd1, 0x6a, 0xd0, 0xad, 0xd1, 0x6b, 0xd0, 0xad, 0xd2, 0x6a, 0xd0, 0xad, - 0xd2, 0x6b, 0xd0, 0xad, 0xd2, 0x6a, 0xd0, 0xad, 0xd2, 0x6b, 0xd0, 0xad, - 0xd3, 0x6a, 0xd0, 0xad, 0xd3, 0x6b, 0xd0, 0xad, 0xd3, 0x6a, 0xd0, 0xad, - 0xd4, 0x6b, 0xd0, 0xad, 0xd4, 0x6a, 0xd0, 0xad, 0xd4, 0x6b, 0xd0, 0xad, - 0xd4, 0x6a, 0xd0, 0xad, 0xd5, 0x67, 0xd0, 0xad, 0xd5, 0x6a, 0xd0, 0xad, - 0xd5, 0x67, 0xd0, 0xad, 0xd6, 0x6a, 0xd0, 0xad, 0xd6, 0x67, 0xd0, 0xad, - 0xd6, 0x6a, 0xd0, 0xad, 0xd6, 0x67, 0xd0, 0xad, 0xd7, 0x6a, 0xd0, 0xad, - 0xd7, 0x67, 0xd0, 0xad, 0xd7, 0x6a, 0xd0, 0xad, 0xd7, 0x67, 0xd0, 0xad, - 0xd8, 0x6a, 0xd0, 0xad, 0xd8, 0x67, 0xd0, 0xad, 0xd8, 0x6a, 0xd0, 0xad, - 0xd9, 0x67, 0xd0, 0xad, 0xd9, 0x6a, 0xd0, 0xad, 0xd9, 0x67, 0xd0, 0xad, - 0xd9, 0x6a, 0xd0, 0xad, 0xda, 0x67, 0xd0, 0xad, 0xda, 0x6a, 0xd0, 0xad, - 0xda, 0x67, 0xd0, 0xad, 0xda, 0x65, 0xd0, 0xad, 0xdb, 0x67, 0xd0, 0xad, - 0xdb, 0x65, 0xd0, 0xad, 0xdb, 0x67, 0xd0, 0xad, 0xdb, 0x65, 0xd0, 0xad, - 0xdc, 0x67, 0xd0, 0xad, 0xdc, 0x65, 0xd0, 0xad, 0xdc, 0x67, 0xd0, 0xad, - 0xdd, 0x65, 0xd0, 0xad, 0xdd, 0x67, 0xd0, 0xad, 0xdd, 0x65, 0xd0, 0xad, - 0xdd, 0x67, 0xd0, 0xad, 0xde, 0x65, 0xd0, 0xad, 0xde, 0x67, 0xd0, 0xad, - 0xde, 0x65, 0xec, 0xad, 0xde, 0x6b, 0xeb, 0xad, 0xdf, 0x6f, 0xec, 0xad, - 0xdf, 0x6b, 0xeb, 0xad, 0xdf, 0x6f, 0xec, 0xad, 0xdf, 0x6b, 0xeb, 0xad, - 0xe0, 0x6f, 0xec, 0xad, 0xe0, 0x6b, 0xeb, 0xad, 0xe0, 0x6f, 0xec, 0xad, - 0xe1, 0x6b, 0xeb, 0xad, 0xe1, 0x6f, 0xec, 0xad, 0xe1, 0x6b, 0xeb, 0xad, - 0xe1, 0x6f, 0xec, 0xad, 0xe2, 0x6b, 0xeb, 0xad, 0xe2, 0x6f, 0xec, 0xad, - 0xe2, 0x6b, 0xeb, 0xad, 0xe2, 0x6f, 0xec, 0xad, 0xe3, 0x6b, 0xeb, 0xad, - 0xe3, 0x6f, 0xec, 0xad, 0xe3, 0x6b, 0xeb, 0xad, 0xe3, 0x6f, 0xec, 0xad, - 0xe4, 0x6b, 0xeb, 0xad, 0xe4, 0x6f, 0xec, 0xad, 0xe4, 0x6b, 0xeb, 0xad, - 0xe4, 0x6f, 0xec, 0xad, 0xe5, 0x6b, 0xeb, 0xad, 0xe5, 0x6f, 0xec, 0xad, - 0xe5, 0x6b, 0xeb, 0xad, 0xe5, 0x6f, 0xec, 0xad, 0xe6, 0x6b, 0xeb, 0xad, - 0xe6, 0x6f, 0xec, 0xad, 0xe6, 0x6b, 0xeb, 0xad, 0xe6, 0x6f, 0xec, 0xad, - 0xe7, 0x6b, 0xeb, 0xad, 0xe7, 0x6f, 0xec, 0xad, 0xe7, 0x6b, 0xeb, 0xad, - 0xe7, 0x6f, 0xec, 0xad, 0xe8, 0x6b, 0xec, 0xad, 0xe8, 0x6b, 0xec, 0xad, - 0xe8, 0x6b, 0xec, 0xad, 0xe8, 0x6b, 0xec, 0xad, 0xe9, 0x6b, 0xec, 0xad, - 0xe9, 0x6b, 0xec, 0xad, 0xe9, 0x6b, 0xec, 0xad, 0xe9, 0x6b, 0xec, 0xad, - 0xea, 0x6b, 0xec, 0xad, 0xea, 0x6b, 0xec, 0xad, 0xea, 0x6b, 0xec, 0xad, - 0xea, 0x6b, 0xec, 0xad, 0xeb, 0x6b, 0xec, 0xad, 0xeb, 0x6b, 0xec, 0xad, - 0xeb, 0x6b, 0xec, 0xad, 0xeb, 0x6b, 0xec, 0xac, 0xec, 0x6b, 0xec, 0xad, - 0xeb, 0x6b, 0xec, 0xac, 0xec, 0x6b, 0xec, 0xad, 0xeb, 0x6b, 0xec, 0xac, - 0xec, 0x6b, 0xed, 0xad, 0xeb, 0x6b, 0xed, 0xac, 0xec, 0x6b, 0xed, 0xad, - 0xeb, 0x6b, 0xed, 0xac, 0xec, 0x6b, 0xee, 0xad, 0xeb, 0x6b, 0xee, 0xac, - 0xec, 0x6b, 0xee, 0xaa, 0xf0, 0x6b, 0xee, 0xaa, 0xef, 0x6b, 0xef, 0xaa, - 0xf0, 0x6b, 0xef, 0xaa, 0xef, 0x6b, 0xef, 0xaa, 0xf0, 0x6b, 0xef, 0xaa, - 0xef, 0x6b, 0xf0, 0xaa, 0xf0, 0x6b, 0xf0, 0xaa, 0xf0, 0x6b, 0xf0, 0xaa, - 0xf0, 0x6b, 0xf0, 0xaa, 0xf0, 0x6b, 0xf1, 0xaa, 0xf1, 0x6b, 0xf1, 0xaa, - 0xf1, 0x6b, 0xf1, 0xaa, 0xf1, 0x6b, 0xf1, 0xaa, 0xf1, 0x6b, 0xf2, 0xaa, - 0xf2, 0x6b, 0xf2, 0xaa, 0xf2, 0x6b, 0xf2, 0xaa, 0xf2, 0x6b, 0xf2, 0xaa, - 0xf3, 0x6b, 0xf2, 0xaa, 0xf3, 0x6b, 0xf3, 0xaa, 0xf3, 0x6b, 0xf3, 0xaa, - 0xf3, 0x6b, 0xf3, 0xaa, 0xf3, 0x6b, 0xf3, 0xaa, 0xf3, 0x6b, 0xf4, 0xaa, - 0xf4, 0x6b, 0xf4, 0xaa, 0xf4, 0x6b, 0xf4, 0xaa, 0xf4, 0x6b, 0xf4, 0xaa, - 0xf4, 0x6b, 0xf5, 0xaa, 0xf5, 0x6b, 0xf5, 0xaa, 0xf5, 0x6b, 0xf5, 0xaf, - 0xf6, 0x6b, 0xf5, 0xad, 0xf7, 0x6b, 0xf5, 0xaf, 0xf6, 0x6b, 0xf6, 0xad, - 0xf7, 0x6b, 0xf6, 0xad, 0xf7, 0x6b, 0xf6, 0xad, 0xf7, 0x6b, 0xf6, 0xad, - 0xf7, 0x6b, 0xf6, 0xad, 0xf7, 0x6b, 0xf6, 0xad, 0xf7, 0x6b, 0xf6, 0xad, - 0xf7, 0x6b, 0xf6, 0xad, 0xf7, 0x6b, 0xf6, 0xad, 0xf8, 0x6b, 0xf6, 0xad, - 0xf8, 0x6b, 0xf6, 0xad, 0xf8, 0x6b, 0xf6, 0xad, 0xf8, 0x6b, 0xf6, 0xad, - 0xf8, 0x6b, 0xfa, 0xad, 0xf9, 0x6d, 0xfb, 0xad, 0xf9, 0x6b, 0xfa, 0xad, - 0xf9, 0x6d, 0xfb, 0xad, 0xf9, 0x6b, 0xfa, 0xad, 0xfa, 0x6d, 0xfb, 0xad, - 0xfa, 0x6b, 0xfb, 0xad, 0xfa, 0x6b, 0xfb, 0xad, 0xfa, 0x6b, 0xfb, 0xad, - 0xfa, 0x6b, 0xfb, 0xad, 0xfa, 0x6b, 0xfb, 0xad, 0xfa, 0x6b, 0xfb, 0xad, - 0xfa, 0x6b, 0xfb, 0xad, 0xfa, 0x6b, 0xfc, 0xac, 0xfb, 0x6b, 0xfc, 0xad, - 0xfa, 0x6b, 0xfc, 0xac, 0xfb, 0x6b, 0xfc, 0xad, 0xfa, 0x6b, 0xfc, 0xac, - 0xfb, 0x6b, 0xfd, 0xad, 0xfa, 0x6b, 0xfd, 0xac, 0xfb, 0x6b, 0xfd, 0xad, - 0xfa, 0x6b, 0xfd, 0xac, 0xfb, 0x6b, 0xfe, 0xad, 0xfa, 0x6b, 0xfe, 0xac, - 0xfb, 0x6b, 0xfe, 0xad, 0xfa, 0x6b, 0xfe, 0xac, 0xfb, 0x6b, 0xfe, 0xad, - 0xfa, 0x6b, 0xff, 0xac, 0xfb, 0x6b, 0xff, 0xad, 0xfa, 0x6b, 0x03, 0xb4, - 0x94, 0x6b, 0x0a, 0xb6, 0x93, 0x6b, 0x0f, 0xb4, 0x94, 0x6b, 0x14, 0xb6, - 0x93, 0x6b, 0x17, 0xb4, 0x94, 0x6b, 0x1b, 0xb6, 0x93, 0x6b, 0x1e, 0xb4, - 0x94, 0x6b, 0x20, 0xb6, 0x93, 0x6b, 0x23, 0xb4, 0x94, 0x6b, 0x25, 0xb6, - 0x93, 0x6b, 0x27, 0xb4, 0x94, 0x6b, 0x29, 0xb6, 0x93, 0x6b, 0x2b, 0xb4, - 0x94, 0x6b, 0x2d, 0xb6, 0x93, 0x6b, 0x2f, 0xb4, 0x94, 0x6b, 0x31, 0xb6, - 0x93, 0x6b, 0x32, 0xb4, 0x94, 0x6b, 0x34, 0xb6, 0x93, 0x6b, 0x35, 0xb4, - 0x94, 0x6b, 0x37, 0xb6, 0x93, 0x6b, 0x38, 0xb4, 0x94, 0x6b, 0x3a, 0xb6, - 0x93, 0x6b, 0x3b, 0xb4, 0x94, 0x6b, 0x3c, 0xb6, 0x93, 0x6b, 0x3e, 0xb4, - 0x94, 0x6b, 0x3f, 0xb6, 0x93, 0x6b, 0x40, 0xb4, 0x94, 0x6b, 0x42, 0xb6, - 0x93, 0x6b, 0x43, 0xb4, 0x94, 0x6b, 0x44, 0xb6, 0x93, 0x6b, 0x45, 0xb4, - 0x94, 0x6b, 0x46, 0xb6, 0x93, 0x6b, 0x47, 0xb4, 0x94, 0x6b, 0x48, 0xb6, - 0x93, 0x6b, 0x49, 0xb4, 0x94, 0x6b, 0x4a, 0xb6, 0x93, 0x6b, 0x4b, 0xb4, - 0x94, 0x6b, 0x4c, 0xb6, 0x93, 0x6b, 0x4d, 0xb4, 0x94, 0x6b, 0x4e, 0xb6, - 0x93, 0x6b, 0x4f, 0xb4, 0x94, 0x6b, 0x50, 0xb6, 0x93, 0x6b, 0x51, 0xb4, - 0x94, 0x6b, 0x52, 0xb2, 0x94, 0x6b, 0x53, 0xb4, 0x94, 0x6b, 0x54, 0xb2, - 0x94, 0x6b, 0x55, 0xb4, 0x94, 0x6b, 0x56, 0xb2, 0x94, 0x6b, 0x57, 0xb4, - 0x94, 0x6b, 0x58, 0xb2, 0x94, 0x6b, 0x58, 0xb4, 0x94, 0x6b, 0x59, 0xb2, - 0x94, 0x6b, 0x5a, 0xb4, 0x94, 0x6b, 0x5b, 0xb2, 0x94, 0x6b, 0x5c, 0xb4, - 0x94, 0x6b, 0x5d, 0xb2, 0x94, 0x6b, 0x5d, 0xb4, 0x94, 0x6b, 0x5e, 0xb2, - 0x94, 0x6b, 0x5f, 0xb4, 0x94, 0x6b, 0x60, 0xb2, 0x94, 0x6b, 0x60, 0xb4, - 0x94, 0x6b, 0x61, 0xb2, 0x94, 0x6b, 0x62, 0xb4, 0x94, 0x6b, 0x63, 0xb2, - 0x94, 0x6b, 0x63, 0xb4, 0x94, 0x6b, 0x64, 0xb2, 0x94, 0x6b, 0x65, 0xb4, - 0x94, 0x6b, 0x66, 0xb2, 0x94, 0x6b, 0x66, 0xb4, 0x94, 0x6b, 0x67, 0xb2, - 0x94, 0x6b, 0x68, 0xb4, 0x94, 0x6b, 0x68, 0xb2, 0x94, 0x6b, 0x69, 0xb4, - 0x94, 0x6b, 0x6a, 0xb2, 0x94, 0x6b, 0x6a, 0xb4, 0x94, 0x6b, 0x6b, 0xb2, - 0x94, 0x6b, 0x6c, 0xaf, 0x94, 0x6b, 0x6c, 0xb2, 0x94, 0x6b, 0x6d, 0xaf, - 0x94, 0x6b, 0x6e, 0xb2, 0x94, 0x6b, 0x6e, 0xaf, 0x94, 0x6b, 0x6f, 0xb2, - 0x94, 0x6b, 0x70, 0xaf, 0x94, 0x6b, 0x70, 0xb2, 0x94, 0x6b, 0x71, 0xaf, - 0x94, 0x6b, 0x72, 0xb2, 0x94, 0x6b, 0x72, 0xaf, 0x94, 0x6b, 0x73, 0xb2, - 0x94, 0x6b, 0x73, 0xaf, 0x94, 0x6b, 0x74, 0xb2, 0x94, 0x6b, 0x75, 0xaf, - 0x94, 0x6b, 0x75, 0xb2, 0x94, 0x6b, 0x76, 0xaf, 0x94, 0x6b, 0x76, 0xb2, - 0x94, 0x6b, 0x77, 0xaf, 0x94, 0x6b, 0x78, 0xb2, 0x94, 0x6b, 0x78, 0xaf, - 0x94, 0x6b, 0x79, 0xb2, 0x94, 0x6b, 0x79, 0xaf, 0x94, 0x6b, 0x7a, 0xb2, - 0x94, 0x6b, 0x7a, 0xaf, 0x94, 0x6b, 0x7b, 0xb2, 0x94, 0x6b, 0x7c, 0xaf, - 0x94, 0x6b, 0x7c, 0xb2, 0x94, 0x6b, 0x7d, 0xaf, 0x94, 0x6b, 0x7d, 0xb2, - 0x94, 0x6b, 0x7e, 0xaf, 0x94, 0x6b, 0x7e, 0xb2, 0x94, 0x6b, 0x7f, 0xaf, - 0x94, 0x6b, 0x7f, 0xb2, 0x94, 0x6b, 0x80, 0xaf, 0x94, 0x6b, 0x81, 0xb2, - 0x94, 0x6b, 0x81, 0xaf, 0x94, 0x6b, 0x82, 0xb2, 0x94, 0x6b, 0x82, 0xaf, - 0x94, 0x6b, 0x83, 0xb2, 0x94, 0x6b, 0x83, 0xaf, 0x94, 0x6b, 0x84, 0xae, - 0x95, 0x6b, 0x84, 0xaf, 0x94, 0x6b, 0x85, 0xae, 0x95, 0x6b, 0x85, 0xaf, - 0x94, 0x6b, 0x86, 0xae, 0x95, 0x6b, 0x86, 0xaf, 0x94, 0x6b, 0x87, 0xae, - 0x95, 0x6b, 0x87, 0xaf, 0x94, 0x6b, 0x88, 0xae, 0x95, 0x6b, 0x88, 0xaf, - 0x94, 0x6b, 0x89, 0xae, 0x95, 0x6b, 0x89, 0xaf, 0x94, 0x6b, 0x8a, 0xae, - 0x95, 0x6b, 0x8a, 0xaf, 0x94, 0x6b, 0x8b, 0xae, 0x95, 0x6b, 0x8b, 0xaf, - 0x94, 0x6b, 0x8c, 0xae, 0x95, 0x6b, 0x8c, 0xaf, 0x94, 0x6b, 0x8d, 0xae, - 0x95, 0x6b, 0x8d, 0xaf, 0x94, 0x6b, 0x8e, 0xae, 0x95, 0x6b, 0x8e, 0xaf, - 0x94, 0x6b, 0x8e, 0xae, 0x95, 0x6b, 0x8f, 0xaf, 0x94, 0x6b, 0x8f, 0xae, - 0x95, 0x6b, 0x90, 0xaf, 0x94, 0x6b, 0x90, 0xae, 0x95, 0x6b, 0x91, 0xaf, - 0x94, 0x6b, 0x91, 0xae, 0x95, 0x6b, 0x92, 0xaf, 0x94, 0x6b, 0x92, 0xae, - 0x95, 0x6b, 0x93, 0xaf, 0x94, 0x6b, 0x93, 0xae, 0x95, 0x6b, 0x94, 0xae, - 0x95, 0x6b, 0x94, 0xae, 0x95, 0x6b, 0x94, 0xae, 0x95, 0x6b, 0x94, 0xae, - 0x95, 0x6b, 0x94, 0xae, 0x95, 0x6b, 0x97, 0xae, 0x96, 0x6c, 0x97, 0xae, - 0x96, 0x6b, 0x98, 0xae, 0x97, 0x6b, 0x97, 0xad, 0x97, 0x6b, 0x98, 0xad, - 0x98, 0x6b, 0x98, 0xad, 0x98, 0x6b, 0x98, 0xae, 0x99, 0x6b, 0x99, 0xae, - 0x99, 0x6a, 0x99, 0xae, 0x99, 0x6a, 0x9a, 0xae, 0x9a, 0x6a, 0x9a, 0xae, - 0x9a, 0x6a, 0x9a, 0xae, 0x9a, 0x6a, 0x9b, 0xae, 0x9b, 0x6a, 0x9b, 0xae, - 0x9b, 0x6a, 0x9c, 0xae, 0x9c, 0x6a, 0x9c, 0xae, 0x9c, 0x6a, 0x9d, 0xae, - 0x9d, 0x6a, 0x9d, 0xae, 0x9c, 0x6b, 0x9d, 0xae, 0x9d, 0x6b, 0x9e, 0xae, - 0x9e, 0x6b, 0x9e, 0xae, 0x9e, 0x6b, 0x9f, 0xae, 0x9f, 0x6b, 0x9f, 0xae, - 0x9f, 0x6b, 0x9f, 0xae, 0x9f, 0x6b, 0xa0, 0xae, 0xa0, 0x6b, 0xa0, 0xae, - 0xa0, 0x6b, 0xa1, 0xae, 0xa1, 0x6b, 0xa1, 0xae, 0xa1, 0x6b, 0xa1, 0xae, - 0xa1, 0x6b, 0xa2, 0xae, 0xa1, 0x6b, 0xa2, 0xaf, 0xa2, 0x6b, 0xa3, 0xaf, - 0xa3, 0x6b, 0xa3, 0xaf, 0xa3, 0x6b, 0xa3, 0xaf, 0xa3, 0x6b, 0xa4, 0xaf, - 0xa4, 0x6b, 0xa4, 0xaf, 0xa4, 0x6b, 0xa5, 0xaf, 0xa5, 0x6b, 0xa5, 0xaf, - 0xa5, 0x6b, 0xa5, 0xaf, 0xa5, 0x6b, 0xa6, 0xaf, 0xa5, 0x6b, 0xa6, 0xaf, - 0xa5, 0x6b, 0xa6, 0xaf, 0xa5, 0x6b, 0xa7, 0xaf, 0xa5, 0x6b, 0xa7, 0xb0, - 0xa7, 0x6b, 0xa8, 0xb0, 0xa8, 0x6b, 0xa8, 0xb0, 0xa8, 0x6b, 0xa8, 0xb0, - 0xa8, 0x6b, 0xa9, 0xb0, 0xa9, 0x6b, 0xa9, 0xb0, 0xa9, 0x6b, 0xaa, 0xb0, - 0xaa, 0x6b, 0xaa, 0xb0, 0xa9, 0x6b, 0xaa, 0xb0, 0xaa, 0x6b, 0xab, 0xb0, - 0xa9, 0x6b, 0xab, 0xb0, 0xaa, 0x6b, 0xab, 0xb0, 0xab, 0x6b, 0xac, 0xb0, - 0xac, 0x6b, 0xac, 0xb0, 0xac, 0x6b, 0xac, 0xb0, 0xac, 0x6b, 0xad, 0xb0, - 0xad, 0x6b, 0xad, 0xb0, 0xad, 0x6b, 0xae, 0xb0, 0xae, 0x6b, 0xae, 0xb0, - 0xad, 0x6b, 0xae, 0xb0, 0xae, 0x6b, 0xaf, 0xb0, 0xad, 0x6b, 0xaf, 0xb0, - 0xae, 0x6b, 0xaf, 0xb1, 0xaf, 0x6b, 0xb0, 0xb1, 0xb0, 0x6b, 0xb0, 0xb1, - 0xb0, 0x6b, 0xb0, 0xb1, 0xb0, 0x6b, 0xb1, 0xb1, 0xb1, 0x6b, 0xb1, 0xb1, - 0xb1, 0x6b, 0xb2, 0xb1, 0xb2, 0x6b, 0xb2, 0xb1, 0xb1, 0x6b, 0xb2, 0xb1, - 0xb2, 0x6b, 0xb3, 0xb1, 0xb1, 0x6b, 0xb3, 0xb1, 0xb2, 0x6b, 0xb3, 0xb1, - 0xb1, 0x6b, 0xb4, 0xb1, 0xb2, 0x6b, 0xb4, 0xb2, 0xb4, 0x6b, 0xb4, 0xb2, - 0xb4, 0x6b, 0xb5, 0xb2, 0xb5, 0x6b, 0xb5, 0xb2, 0xb5, 0x6b, 0xb5, 0xb2, - 0xb5, 0x6b, 0xb6, 0xb2, 0xb5, 0x6b, 0xb6, 0xb2, 0xb5, 0x6b, 0xb6, 0xb2, - 0xb5, 0x6b, 0xb7, 0xb2, 0xb5, 0x6b, 0xb7, 0xb2, 0xb5, 0x6b, 0xb7, 0xb2, - 0xb5, 0x6b, 0xb8, 0xb3, 0xb8, 0x6b, 0xb8, 0xb3, 0xb8, 0x6b, 0xb8, 0xb3, - 0xb8, 0x6b, 0xb9, 0xb3, 0xb9, 0x6b, 0xb9, 0xb3, 0xb9, 0x6b, 0xb9, 0xb3, - 0xb9, 0x6b, 0xba, 0xb3, 0xb9, 0x6b, 0xba, 0xb3, 0xb9, 0x6b, 0xba, 0xb3, - 0xb9, 0x6b, 0xbb, 0xb3, 0xb9, 0x6b, 0xbb, 0xb3, 0xb9, 0x6b, 0xbb, 0xb3, - 0xb9, 0x6b, 0xbc, 0xb3, 0xbc, 0x6b, 0xbc, 0xb3, 0xbc, 0x6b, 0xbc, 0xb3, - 0xbc, 0x6b, 0xbd, 0xb3, 0xbd, 0x6b, 0xbd, 0xb3, 0xbd, 0x6b, 0xbd, 0xb3, - 0xbd, 0x6b, 0xbe, 0xb3, 0xbd, 0x6b, 0xbe, 0xb3, 0xbd, 0x6b, 0xbe, 0xb3, - 0xbd, 0x6b, 0xbf, 0xb3, 0xbd, 0x6b, 0xbf, 0xb3, 0xbd, 0x6b, 0xbf, 0xb3, - 0xbd, 0x6b, 0xc0, 0xb3, 0xbd, 0x6b, 0xc0, 0xb4, 0xc0, 0x6b, 0xc0, 0xb4, - 0xc0, 0x6b, 0xc1, 0xb4, 0xc1, 0x6b, 0xc1, 0xb4, 0xc0, 0x6b, 0xc1, 0xb4, - 0xc1, 0x6b, 0xc1, 0xb4, 0xc0, 0x6b, 0xc2, 0xb4, 0xc1, 0x6b, 0xc2, 0xb4, - 0xc0, 0x6b, 0xc2, 0xb4, 0xc1, 0x6b, 0xc3, 0xb4, 0xc0, 0x6b, 0xc3, 0xb4, - 0xc1, 0x6b, 0xc3, 0xb5, 0xc3, 0x6b, 0xc4, 0xb5, 0xc4, 0x6b, 0xc4, 0xb5, - 0xc4, 0x6b, 0xc4, 0xb5, 0xc4, 0x6b, 0xc5, 0xb5, 0xc4, 0x6b, 0xc5, 0xb5, - 0xc4, 0x6b, 0xc5, 0xb5, 0xc4, 0x6b, 0xc6, 0xb5, 0xc4, 0x6b, 0xc6, 0xb5, - 0xc4, 0x6b, 0xc6, 0xb5, 0xc4, 0x6b, 0xc6, 0xb5, 0xc4, 0x6b, 0xc7, 0xb5, - 0xc7, 0x6b, 0xc7, 0xb5, 0xc7, 0x6b, 0xc7, 0xb5, 0xc7, 0x6b, 0xc8, 0xb5, - 0xc7, 0x6b, 0xc8, 0xb5, 0xc7, 0x6b, 0xc8, 0xb5, 0xc7, 0x6b, 0xc9, 0xb5, - 0xc7, 0x6b, 0xc9, 0xb5, 0xc7, 0x6b, 0xc9, 0xaf, 0xd0, 0x6b, 0xc9, 0xae, - 0xd0, 0x6b, 0xca, 0xaf, 0xd0, 0x6b, 0xca, 0xae, 0xd0, 0x6b, 0xca, 0xaf, - 0xd0, 0x6b, 0xcb, 0xae, 0xd0, 0x6b, 0xcb, 0xaf, 0xd0, 0x6b, 0xcb, 0xae, - 0xd0, 0x6b, 0xcc, 0xaf, 0xd0, 0x6b, 0xcc, 0xae, 0xd0, 0x6b, 0xcc, 0xaf, - 0xd0, 0x6b, 0xcc, 0xae, 0xd0, 0x6b, 0xcd, 0xaf, 0xd0, 0x6b, 0xcd, 0xae, - 0xd0, 0x6b, 0xcd, 0xaf, 0xd0, 0x6b, 0xce, 0xae, 0xd0, 0x6b, 0xce, 0xaf, - 0xd0, 0x6b, 0xce, 0xae, 0xd0, 0x6b, 0xce, 0xaf, 0xd0, 0x6b, 0xcf, 0xae, - 0xd0, 0x6b, 0xcf, 0xae, 0xd0, 0x6b, 0xcf, 0xae, 0xd0, 0x6b, 0xd0, 0xae, - 0xd0, 0x6b, 0xd0, 0xae, 0xd0, 0x6a, 0xd0, 0xae, 0xd0, 0x6b, 0xd0, 0xae, - 0xd0, 0x6a, 0xd0, 0xae, 0xd1, 0x6b, 0xd0, 0xae, 0xd1, 0x6a, 0xd0, 0xae, - 0xd1, 0x6b, 0xd0, 0xae, 0xd2, 0x6a, 0xd0, 0xae, 0xd2, 0x6b, 0xd0, 0xae, - 0xd2, 0x6a, 0xd0, 0xae, 0xd2, 0x6b, 0xd0, 0xae, 0xd3, 0x6a, 0xd0, 0xae, - 0xd3, 0x6b, 0xd0, 0xae, 0xd3, 0x6a, 0xd0, 0xae, 0xd4, 0x6b, 0xd0, 0xae, - 0xd4, 0x6a, 0xd0, 0xae, 0xd4, 0x6b, 0xd0, 0xae, 0xd4, 0x6a, 0xd0, 0xae, - 0xd5, 0x67, 0xd0, 0xae, 0xd5, 0x6a, 0xd0, 0xae, 0xd5, 0x67, 0xd0, 0xae, - 0xd6, 0x6a, 0xd0, 0xae, 0xd6, 0x67, 0xd0, 0xae, 0xd6, 0x6a, 0xd0, 0xae, - 0xd6, 0x67, 0xd0, 0xae, 0xd7, 0x6a, 0xd0, 0xae, 0xd7, 0x67, 0xd0, 0xae, - 0xd7, 0x6a, 0xd0, 0xae, 0xd7, 0x67, 0xd0, 0xae, 0xd8, 0x6a, 0xd0, 0xae, - 0xd8, 0x67, 0xd0, 0xae, 0xd8, 0x6a, 0xd0, 0xae, 0xd9, 0x67, 0xd0, 0xae, - 0xd9, 0x6a, 0xd0, 0xae, 0xd9, 0x67, 0xd0, 0xae, 0xd9, 0x6a, 0xd0, 0xae, - 0xda, 0x67, 0xd0, 0xae, 0xda, 0x6a, 0xd0, 0xae, 0xda, 0x67, 0xd0, 0xae, - 0xda, 0x6a, 0xd0, 0xae, 0xdb, 0x67, 0xd0, 0xae, 0xdb, 0x6a, 0xd0, 0xae, - 0xdb, 0x67, 0xd0, 0xae, 0xdb, 0x6a, 0xd0, 0xae, 0xdc, 0x67, 0xd0, 0xae, - 0xdc, 0x6a, 0xd0, 0xae, 0xdc, 0x67, 0xd0, 0xae, 0xdd, 0x6a, 0xd0, 0xae, - 0xdd, 0x67, 0xd0, 0xae, 0xdd, 0x6a, 0xd0, 0xae, 0xdd, 0x67, 0xd0, 0xae, - 0xde, 0x64, 0xd0, 0xae, 0xde, 0x67, 0xd0, 0xae, 0xde, 0x64, 0xeb, 0xae, - 0xde, 0x72, 0xeb, 0xae, 0xdf, 0x6f, 0xeb, 0xae, 0xdf, 0x72, 0xeb, 0xae, - 0xdf, 0x6f, 0xec, 0xae, 0xdf, 0x6b, 0xeb, 0xae, 0xe0, 0x6f, 0xec, 0xae, - 0xe0, 0x6b, 0xeb, 0xae, 0xe0, 0x6f, 0xec, 0xae, 0xe1, 0x6b, 0xeb, 0xae, - 0xe1, 0x6f, 0xec, 0xae, 0xe1, 0x6b, 0xeb, 0xae, 0xe1, 0x6f, 0xec, 0xae, - 0xe2, 0x6b, 0xeb, 0xae, 0xe2, 0x6f, 0xec, 0xae, 0xe2, 0x6b, 0xeb, 0xae, - 0xe2, 0x6f, 0xec, 0xae, 0xe3, 0x6b, 0xeb, 0xae, 0xe3, 0x6f, 0xec, 0xae, - 0xe3, 0x6b, 0xeb, 0xae, 0xe3, 0x6f, 0xec, 0xae, 0xe4, 0x6b, 0xeb, 0xae, - 0xe4, 0x6f, 0xec, 0xae, 0xe4, 0x6b, 0xeb, 0xae, 0xe4, 0x6f, 0xec, 0xae, - 0xe5, 0x6b, 0xeb, 0xae, 0xe5, 0x6f, 0xec, 0xae, 0xe5, 0x6b, 0xeb, 0xae, - 0xe5, 0x6f, 0xec, 0xae, 0xe6, 0x6b, 0xeb, 0xae, 0xe6, 0x6f, 0xec, 0xae, - 0xe6, 0x6b, 0xeb, 0xae, 0xe6, 0x6f, 0xec, 0xae, 0xe7, 0x6b, 0xeb, 0xae, - 0xe7, 0x6f, 0xec, 0xae, 0xe7, 0x6b, 0xeb, 0xae, 0xe7, 0x6f, 0xec, 0xae, - 0xe8, 0x6b, 0xec, 0xae, 0xe8, 0x6b, 0xec, 0xae, 0xe8, 0x6b, 0xec, 0xae, - 0xe8, 0x6b, 0xec, 0xae, 0xe9, 0x6b, 0xec, 0xae, 0xe9, 0x6b, 0xec, 0xae, - 0xe9, 0x6b, 0xec, 0xae, 0xe9, 0x6b, 0xec, 0xae, 0xea, 0x6b, 0xec, 0xae, - 0xea, 0x6b, 0xec, 0xae, 0xea, 0x6b, 0xec, 0xae, 0xea, 0x6b, 0xec, 0xae, - 0xeb, 0x6b, 0xec, 0xae, 0xeb, 0x6b, 0xec, 0xae, 0xeb, 0x6b, 0xec, 0xae, - 0xeb, 0x6b, 0xec, 0xad, 0xec, 0x6b, 0xec, 0xae, 0xeb, 0x6b, 0xec, 0xad, - 0xec, 0x6b, 0xec, 0xae, 0xeb, 0x6b, 0xec, 0xad, 0xec, 0x6b, 0xed, 0xae, - 0xeb, 0x6b, 0xed, 0xad, 0xec, 0x6b, 0xed, 0xae, 0xeb, 0x6b, 0xed, 0xad, - 0xec, 0x6b, 0xee, 0xae, 0xeb, 0x6b, 0xee, 0xad, 0xec, 0x6b, 0xee, 0xa9, - 0xee, 0x6b, 0xee, 0xa9, 0xee, 0x6b, 0xef, 0xa9, 0xef, 0x6b, 0xef, 0xa9, - 0xef, 0x6b, 0xef, 0xa9, 0xef, 0x6b, 0xef, 0xa9, 0xef, 0x6b, 0xf0, 0xa9, - 0xf0, 0x6b, 0xf0, 0xaa, 0xf1, 0x6b, 0xf0, 0xaa, 0xf2, 0x6b, 0xf0, 0xaa, - 0xf1, 0x6b, 0xf1, 0xaa, 0xf2, 0x6b, 0xf1, 0xaa, 0xf1, 0x6b, 0xf1, 0xaa, - 0xf2, 0x6b, 0xf1, 0xaa, 0xf1, 0x6b, 0xf2, 0xaa, 0xf2, 0x6b, 0xf2, 0xaa, - 0xf2, 0x6b, 0xf2, 0xaa, 0xf2, 0x6b, 0xf2, 0xaa, 0xf2, 0x6b, 0xf2, 0xaa, - 0xf2, 0x6b, 0xf3, 0xaa, 0xf3, 0x6b, 0xf3, 0xaa, 0xf3, 0x6b, 0xf3, 0xaa, - 0xf3, 0x6b, 0xf3, 0xaa, 0xf3, 0x6b, 0xf4, 0xaa, 0xf4, 0x6b, 0xf4, 0xab, - 0xf5, 0x6b, 0xf4, 0xab, 0xf5, 0x6b, 0xf4, 0xab, 0xf5, 0x6b, 0xf5, 0xab, - 0xf5, 0x6b, 0xf5, 0xab, 0xf5, 0x6b, 0xf5, 0xae, 0xf6, 0x6b, 0xf5, 0xae, - 0xf7, 0x6b, 0xf5, 0xae, 0xf6, 0x6b, 0xf6, 0xae, 0xf7, 0x6b, 0xf6, 0xae, - 0xf6, 0x6b, 0xf6, 0xae, 0xf7, 0x6b, 0xf6, 0xae, 0xf7, 0x6b, 0xf6, 0xae, - 0xf7, 0x6b, 0xf6, 0xae, 0xf7, 0x6b, 0xf6, 0xae, 0xf7, 0x6b, 0xf6, 0xae, - 0xf7, 0x6b, 0xf6, 0xae, 0xf8, 0x6b, 0xf6, 0xae, 0xf8, 0x6b, 0xf6, 0xae, - 0xf8, 0x6b, 0xf6, 0xae, 0xf8, 0x6b, 0xf6, 0xae, 0xf8, 0x6b, 0xfa, 0xae, - 0xf9, 0x6c, 0xfb, 0xae, 0xf9, 0x6b, 0xfa, 0xae, 0xf9, 0x6c, 0xfb, 0xae, - 0xf9, 0x6b, 0xfa, 0xae, 0xfa, 0x6c, 0xfb, 0xae, 0xfa, 0x6b, 0xfa, 0xae, - 0xfa, 0x6c, 0xfb, 0xae, 0xfa, 0x6b, 0xfb, 0xae, 0xfa, 0x6b, 0xfb, 0xae, - 0xfa, 0x6b, 0xfb, 0xae, 0xfa, 0x6b, 0xfb, 0xae, 0xfa, 0x6b, 0xfb, 0xae, - 0xfa, 0x6b, 0xfc, 0xae, 0xfa, 0x6b, 0xfc, 0xae, 0xfa, 0x6b, 0xfc, 0xae, - 0xfa, 0x6b, 0xfc, 0xae, 0xfa, 0x6b, 0xfc, 0xab, 0xfb, 0x6b, 0xfd, 0xae, - 0xfa, 0x6b, 0xfd, 0xab, 0xfb, 0x6b, 0xfd, 0xae, 0xfa, 0x6b, 0xfd, 0xab, - 0xfb, 0x6b, 0xfe, 0xae, 0xfa, 0x6b, 0xfe, 0xab, 0xfb, 0x6b, 0xfe, 0xae, - 0xfa, 0x6b, 0xfe, 0xab, 0xfb, 0x6b, 0xfe, 0xae, 0xfa, 0x6b, 0xff, 0xab, - 0xfb, 0x6b, 0xff, 0xae, 0xfa, 0x6b, 0x03, 0xb4, 0x94, 0x6c, 0x0a, 0xb6, - 0x93, 0x6c, 0x0f, 0xb4, 0x94, 0x6c, 0x14, 0xb6, 0x93, 0x6c, 0x17, 0xb4, - 0x94, 0x6c, 0x1b, 0xb6, 0x93, 0x6c, 0x1e, 0xb4, 0x94, 0x6c, 0x20, 0xb6, - 0x93, 0x6c, 0x23, 0xb4, 0x94, 0x6c, 0x25, 0xb6, 0x93, 0x6c, 0x27, 0xb4, - 0x94, 0x6c, 0x29, 0xb6, 0x93, 0x6c, 0x2b, 0xb4, 0x94, 0x6c, 0x2d, 0xb6, - 0x93, 0x6c, 0x2f, 0xb4, 0x94, 0x6c, 0x31, 0xb6, 0x93, 0x6c, 0x32, 0xb4, - 0x94, 0x6c, 0x34, 0xb6, 0x93, 0x6c, 0x35, 0xb4, 0x94, 0x6c, 0x37, 0xb6, - 0x93, 0x6c, 0x38, 0xb4, 0x94, 0x6c, 0x3a, 0xb6, 0x93, 0x6c, 0x3b, 0xb4, - 0x94, 0x6c, 0x3c, 0xb6, 0x93, 0x6c, 0x3e, 0xb4, 0x94, 0x6c, 0x3f, 0xb6, - 0x93, 0x6c, 0x40, 0xb4, 0x94, 0x6c, 0x42, 0xb6, 0x93, 0x6c, 0x43, 0xb4, - 0x94, 0x6c, 0x44, 0xb6, 0x93, 0x6c, 0x45, 0xb4, 0x94, 0x6c, 0x46, 0xb2, - 0x94, 0x6c, 0x47, 0xb4, 0x94, 0x6c, 0x48, 0xb2, 0x94, 0x6c, 0x49, 0xb4, - 0x94, 0x6c, 0x4a, 0xb2, 0x94, 0x6c, 0x4b, 0xb4, 0x94, 0x6c, 0x4c, 0xb2, - 0x94, 0x6c, 0x4d, 0xb4, 0x94, 0x6c, 0x4e, 0xb2, 0x94, 0x6c, 0x4f, 0xb4, - 0x94, 0x6c, 0x50, 0xb2, 0x94, 0x6c, 0x51, 0xb4, 0x94, 0x6c, 0x52, 0xb2, - 0x94, 0x6c, 0x53, 0xb4, 0x94, 0x6c, 0x54, 0xb2, 0x94, 0x6c, 0x55, 0xb4, - 0x94, 0x6c, 0x56, 0xb2, 0x94, 0x6c, 0x57, 0xb4, 0x94, 0x6c, 0x58, 0xb2, - 0x94, 0x6c, 0x58, 0xb4, 0x94, 0x6c, 0x59, 0xb2, 0x94, 0x6c, 0x5a, 0xb4, - 0x94, 0x6c, 0x5b, 0xb2, 0x94, 0x6c, 0x5c, 0xb4, 0x94, 0x6c, 0x5d, 0xb2, - 0x94, 0x6c, 0x5d, 0xb4, 0x94, 0x6c, 0x5e, 0xb2, 0x94, 0x6c, 0x5f, 0xb4, - 0x94, 0x6c, 0x60, 0xb2, 0x94, 0x6c, 0x60, 0xb4, 0x94, 0x6c, 0x61, 0xb2, - 0x94, 0x6c, 0x62, 0xb4, 0x94, 0x6c, 0x63, 0xb2, 0x94, 0x6c, 0x63, 0xb4, - 0x94, 0x6c, 0x64, 0xb2, 0x94, 0x6c, 0x65, 0xb4, 0x94, 0x6c, 0x66, 0xb2, - 0x94, 0x6c, 0x66, 0xb4, 0x94, 0x6c, 0x67, 0xb2, 0x94, 0x6c, 0x68, 0xb4, - 0x94, 0x6c, 0x68, 0xb2, 0x94, 0x6c, 0x69, 0xb4, 0x94, 0x6c, 0x6a, 0xb2, - 0x94, 0x6c, 0x6a, 0xb4, 0x94, 0x6c, 0x6b, 0xb2, 0x94, 0x6c, 0x6c, 0xb4, - 0x94, 0x6c, 0x6c, 0xb2, 0x94, 0x6c, 0x6d, 0xb4, 0x94, 0x6c, 0x6e, 0xb2, - 0x94, 0x6c, 0x6e, 0xb4, 0x94, 0x6c, 0x6f, 0xb2, 0x94, 0x6c, 0x70, 0xb4, - 0x94, 0x6c, 0x70, 0xb2, 0x94, 0x6c, 0x71, 0xb4, 0x94, 0x6c, 0x72, 0xb2, - 0x94, 0x6c, 0x72, 0xb4, 0x94, 0x6c, 0x73, 0xb2, 0x94, 0x6c, 0x73, 0xb4, - 0x94, 0x6c, 0x74, 0xb2, 0x94, 0x6c, 0x75, 0xb4, 0x94, 0x6c, 0x75, 0xb2, - 0x94, 0x6c, 0x76, 0xaf, 0x94, 0x6c, 0x76, 0xb2, 0x94, 0x6c, 0x77, 0xaf, - 0x94, 0x6c, 0x78, 0xb2, 0x94, 0x6c, 0x78, 0xaf, 0x94, 0x6c, 0x79, 0xb2, - 0x94, 0x6c, 0x79, 0xaf, 0x94, 0x6c, 0x7a, 0xb2, 0x94, 0x6c, 0x7a, 0xaf, - 0x94, 0x6c, 0x7b, 0xb2, 0x94, 0x6c, 0x7c, 0xaf, 0x94, 0x6c, 0x7c, 0xb2, - 0x94, 0x6c, 0x7d, 0xaf, 0x94, 0x6c, 0x7d, 0xb2, 0x94, 0x6c, 0x7e, 0xaf, - 0x94, 0x6c, 0x7e, 0xb2, 0x94, 0x6c, 0x7f, 0xaf, 0x94, 0x6c, 0x7f, 0xb2, - 0x94, 0x6c, 0x80, 0xaf, 0x94, 0x6c, 0x81, 0xb2, 0x94, 0x6c, 0x81, 0xaf, - 0x94, 0x6c, 0x82, 0xb2, 0x94, 0x6c, 0x82, 0xaf, 0x94, 0x6c, 0x83, 0xb2, - 0x94, 0x6c, 0x83, 0xaf, 0x94, 0x6c, 0x84, 0xb2, 0x94, 0x6c, 0x84, 0xaf, - 0x94, 0x6c, 0x85, 0xb2, 0x94, 0x6c, 0x85, 0xaf, 0x94, 0x6c, 0x86, 0xb2, - 0x94, 0x6c, 0x86, 0xaf, 0x94, 0x6c, 0x87, 0xb2, 0x94, 0x6c, 0x87, 0xaf, - 0x94, 0x6c, 0x88, 0xb2, 0x94, 0x6c, 0x88, 0xaf, 0x94, 0x6c, 0x89, 0xb2, - 0x94, 0x6c, 0x89, 0xaf, 0x94, 0x6c, 0x8a, 0xae, 0x95, 0x6c, 0x8a, 0xaf, - 0x94, 0x6c, 0x8b, 0xae, 0x95, 0x6c, 0x8b, 0xaf, 0x94, 0x6c, 0x8c, 0xae, - 0x95, 0x6c, 0x8c, 0xaf, 0x94, 0x6c, 0x8d, 0xae, 0x95, 0x6c, 0x8d, 0xaf, - 0x94, 0x6c, 0x8e, 0xae, 0x95, 0x6c, 0x8e, 0xaf, 0x94, 0x6c, 0x8e, 0xae, - 0x95, 0x6c, 0x8f, 0xaf, 0x94, 0x6c, 0x8f, 0xae, 0x95, 0x6c, 0x90, 0xaf, - 0x94, 0x6c, 0x90, 0xae, 0x95, 0x6c, 0x91, 0xaf, 0x94, 0x6c, 0x91, 0xae, - 0x95, 0x6c, 0x92, 0xaf, 0x94, 0x6c, 0x92, 0xae, 0x95, 0x6c, 0x93, 0xaf, - 0x94, 0x6c, 0x93, 0xae, 0x95, 0x6c, 0x94, 0xae, 0x95, 0x6c, 0x94, 0xae, - 0x95, 0x6c, 0x94, 0xae, 0x95, 0x6c, 0x94, 0xae, 0x95, 0x6c, 0x94, 0xae, - 0x95, 0x6c, 0x97, 0xae, 0x96, 0x6c, 0x97, 0xae, 0x96, 0x6c, 0x97, 0xad, - 0x97, 0x6c, 0x97, 0xad, 0x97, 0x6c, 0x98, 0xad, 0x98, 0x6c, 0x98, 0xad, - 0x98, 0x6c, 0x98, 0xad, 0x98, 0x6c, 0x99, 0xad, 0x99, 0x6c, 0x99, 0xad, - 0x99, 0x6c, 0x9a, 0xad, 0x9a, 0x6c, 0x9a, 0xad, 0x9a, 0x6c, 0x9a, 0xae, - 0x9b, 0x6c, 0x9b, 0xae, 0x9b, 0x6b, 0x9b, 0xae, 0x9b, 0x6b, 0x9c, 0xae, - 0x9c, 0x6b, 0x9c, 0xae, 0x9c, 0x6b, 0x9d, 0xae, 0x9d, 0x6b, 0x9d, 0xae, - 0x9d, 0x6b, 0x9d, 0xae, 0x9d, 0x6b, 0x9e, 0xae, 0x9e, 0x6b, 0x9e, 0xae, - 0x9e, 0x6b, 0x9f, 0xae, 0x9f, 0x6b, 0x9f, 0xae, 0x9e, 0x6c, 0x9f, 0xae, - 0x9f, 0x6c, 0xa0, 0xaf, 0xa0, 0x6c, 0xa0, 0xaf, 0xa0, 0x6c, 0xa1, 0xaf, - 0xa1, 0x6c, 0xa1, 0xaf, 0xa1, 0x6c, 0xa1, 0xaf, 0xa1, 0x6c, 0xa2, 0xaf, - 0xa2, 0x6c, 0xa2, 0xaf, 0xa2, 0x6c, 0xa3, 0xaf, 0xa3, 0x6c, 0xa3, 0xaf, - 0xa3, 0x6c, 0xa3, 0xaf, 0xa3, 0x6c, 0xa4, 0xaf, 0xa3, 0x6c, 0xa4, 0xaf, - 0xa4, 0x6c, 0xa5, 0xaf, 0xa5, 0x6c, 0xa5, 0xaf, 0xa5, 0x6c, 0xa5, 0xaf, - 0xa5, 0x6c, 0xa6, 0xaf, 0xa6, 0x6c, 0xa6, 0xaf, 0xa6, 0x6c, 0xa6, 0xaf, - 0xa6, 0x6c, 0xa7, 0xaf, 0xa7, 0x6c, 0xa7, 0xaf, 0xa7, 0x6c, 0xa8, 0xaf, - 0xa8, 0x6c, 0xa8, 0xaf, 0xa7, 0x6c, 0xa8, 0xaf, 0xa8, 0x6c, 0xa9, 0xaf, - 0xa7, 0x6c, 0xa9, 0xaf, 0xa8, 0x6c, 0xaa, 0xb0, 0xaa, 0x6c, 0xaa, 0xb0, - 0xaa, 0x6c, 0xaa, 0xb0, 0xaa, 0x6c, 0xab, 0xb0, 0xab, 0x6c, 0xab, 0xb0, - 0xab, 0x6c, 0xab, 0xb0, 0xab, 0x6c, 0xac, 0xb0, 0xac, 0x6c, 0xac, 0xb0, - 0xab, 0x6c, 0xac, 0xb0, 0xac, 0x6c, 0xad, 0xb0, 0xab, 0x6c, 0xad, 0xb0, - 0xac, 0x6c, 0xae, 0xb1, 0xae, 0x6c, 0xae, 0xb1, 0xae, 0x6c, 0xae, 0xb1, - 0xae, 0x6c, 0xaf, 0xb1, 0xaf, 0x6c, 0xaf, 0xb1, 0xaf, 0x6c, 0xaf, 0xb1, - 0xaf, 0x6c, 0xb0, 0xb1, 0xb0, 0x6c, 0xb0, 0xb1, 0xaf, 0x6c, 0xb0, 0xb1, - 0xb0, 0x6c, 0xb1, 0xb1, 0xaf, 0x6c, 0xb1, 0xb1, 0xb0, 0x6c, 0xb2, 0xb2, - 0xb2, 0x6c, 0xb2, 0xb2, 0xb2, 0x6c, 0xb2, 0xb2, 0xb2, 0x6c, 0xb3, 0xb2, - 0xb3, 0x6c, 0xb3, 0xb2, 0xb3, 0x6c, 0xb3, 0xb2, 0xb3, 0x6c, 0xb4, 0xb2, - 0xb4, 0x6c, 0xb4, 0xb2, 0xb3, 0x6c, 0xb4, 0xb2, 0xb4, 0x6c, 0xb5, 0xb2, - 0xb3, 0x6c, 0xb5, 0xb2, 0xb4, 0x6c, 0xb5, 0xb2, 0xb3, 0x6c, 0xb6, 0xb2, - 0xb4, 0x6c, 0xb6, 0xb2, 0xb6, 0x6c, 0xb6, 0xb2, 0xb6, 0x6c, 0xb7, 0xb2, - 0xb7, 0x6c, 0xb7, 0xb2, 0xb7, 0x6c, 0xb7, 0xb2, 0xb7, 0x6c, 0xb8, 0xb2, - 0xb7, 0x6c, 0xb8, 0xb2, 0xb7, 0x6c, 0xb8, 0xb2, 0xb7, 0x6c, 0xb9, 0xb2, - 0xb7, 0x6c, 0xb9, 0xb2, 0xb7, 0x6c, 0xb9, 0xb2, 0xb7, 0x6c, 0xba, 0xb3, - 0xba, 0x6c, 0xba, 0xb3, 0xba, 0x6c, 0xba, 0xb3, 0xba, 0x6c, 0xbb, 0xb3, - 0xbb, 0x6c, 0xbb, 0xb3, 0xbb, 0x6c, 0xbb, 0xb3, 0xbb, 0x6c, 0xbc, 0xb3, - 0xbb, 0x6c, 0xbc, 0xb3, 0xbb, 0x6c, 0xbc, 0xb3, 0xbb, 0x6c, 0xbd, 0xb3, - 0xbb, 0x6c, 0xbd, 0xb3, 0xbb, 0x6c, 0xbd, 0xb4, 0xbd, 0x6c, 0xbe, 0xb4, - 0xbe, 0x6c, 0xbe, 0xb4, 0xbe, 0x6c, 0xbe, 0xb4, 0xbe, 0x6c, 0xbf, 0xb4, - 0xbf, 0x6c, 0xbf, 0xb4, 0xbe, 0x6c, 0xbf, 0xb4, 0xbf, 0x6c, 0xc0, 0xb4, - 0xbe, 0x6c, 0xc0, 0xb4, 0xbf, 0x6c, 0xc0, 0xb4, 0xbe, 0x6c, 0xc1, 0xb4, - 0xbf, 0x6c, 0xc1, 0xb4, 0xbe, 0x6c, 0xc1, 0xb4, 0xbf, 0x6c, 0xc1, 0xb4, - 0xc1, 0x6c, 0xc2, 0xb4, 0xc2, 0x6c, 0xc2, 0xb4, 0xc2, 0x6c, 0xc2, 0xb4, - 0xc2, 0x6c, 0xc3, 0xb4, 0xc2, 0x6c, 0xc3, 0xb4, 0xc2, 0x6c, 0xc3, 0xb4, - 0xc2, 0x6c, 0xc4, 0xb4, 0xc2, 0x6c, 0xc4, 0xb4, 0xc2, 0x6c, 0xc4, 0xb4, - 0xc2, 0x6c, 0xc5, 0xb4, 0xc2, 0x6c, 0xc5, 0xb5, 0xc5, 0x6c, 0xc5, 0xb5, - 0xc5, 0x6c, 0xc6, 0xb5, 0xc6, 0x6c, 0xc6, 0xb5, 0xc6, 0x6c, 0xc6, 0xb5, - 0xc6, 0x6c, 0xc6, 0xb5, 0xc6, 0x6c, 0xc7, 0xb5, 0xc6, 0x6c, 0xc7, 0xb5, - 0xc6, 0x6c, 0xc7, 0xb5, 0xc6, 0x6c, 0xc8, 0xb5, 0xc6, 0x6c, 0xc8, 0xb5, - 0xc6, 0x6c, 0xc8, 0xb5, 0xc6, 0x6c, 0xc9, 0xb6, 0xc9, 0x6c, 0xc9, 0xb6, - 0xc9, 0x6c, 0xc9, 0xb6, 0xc9, 0x6c, 0xc9, 0xae, 0xd0, 0x6c, 0xca, 0xaf, - 0xd0, 0x6c, 0xca, 0xae, 0xd0, 0x6c, 0xca, 0xaf, 0xd0, 0x6c, 0xcb, 0xae, - 0xd0, 0x6c, 0xcb, 0xaf, 0xd0, 0x6c, 0xcb, 0xae, 0xd0, 0x6c, 0xcc, 0xaf, - 0xd0, 0x6c, 0xcc, 0xae, 0xd0, 0x6c, 0xcc, 0xaf, 0xd0, 0x6c, 0xcc, 0xae, - 0xd0, 0x6c, 0xcd, 0xaf, 0xd0, 0x6c, 0xcd, 0xae, 0xd0, 0x6c, 0xcd, 0xaf, - 0xd0, 0x6c, 0xce, 0xae, 0xd0, 0x6c, 0xce, 0xaf, 0xd0, 0x6c, 0xce, 0xae, - 0xd0, 0x6c, 0xce, 0xaf, 0xd0, 0x6c, 0xcf, 0xae, 0xd0, 0x6c, 0xcf, 0xae, - 0xd0, 0x6c, 0xcf, 0xae, 0xd0, 0x6c, 0xd0, 0xae, 0xd0, 0x6c, 0xcf, 0xae, - 0xd0, 0x6c, 0xd0, 0xae, 0xd0, 0x6c, 0xcf, 0xae, 0xd0, 0x6c, 0xd0, 0xae, - 0xd1, 0x6c, 0xd0, 0xae, 0xd1, 0x6a, 0xd0, 0xae, 0xd1, 0x6c, 0xd0, 0xae, - 0xd2, 0x6a, 0xd0, 0xae, 0xd2, 0x6c, 0xd0, 0xae, 0xd2, 0x6a, 0xd0, 0xae, - 0xd2, 0x6c, 0xd0, 0xae, 0xd3, 0x6a, 0xd0, 0xae, 0xd3, 0x6c, 0xd0, 0xae, - 0xd3, 0x6a, 0xd0, 0xae, 0xd4, 0x6c, 0xd0, 0xae, 0xd4, 0x6a, 0xd0, 0xae, - 0xd4, 0x6c, 0xd0, 0xae, 0xd4, 0x6a, 0xd0, 0xae, 0xd5, 0x6c, 0xd0, 0xae, - 0xd5, 0x6a, 0xd0, 0xae, 0xd5, 0x6c, 0xd0, 0xae, 0xd6, 0x6a, 0xd0, 0xae, - 0xd6, 0x6c, 0xd0, 0xae, 0xd6, 0x6a, 0xd0, 0xae, 0xd6, 0x6c, 0xd0, 0xae, - 0xd7, 0x6a, 0xd0, 0xae, 0xd7, 0x67, 0xd0, 0xae, 0xd7, 0x6a, 0xd0, 0xae, - 0xd7, 0x67, 0xd0, 0xae, 0xd8, 0x6a, 0xd0, 0xae, 0xd8, 0x67, 0xd0, 0xae, - 0xd8, 0x6a, 0xd0, 0xae, 0xd9, 0x67, 0xd0, 0xae, 0xd9, 0x6a, 0xd0, 0xae, - 0xd9, 0x67, 0xd0, 0xae, 0xd9, 0x6a, 0xd0, 0xae, 0xda, 0x67, 0xd0, 0xae, - 0xda, 0x6a, 0xd0, 0xae, 0xda, 0x67, 0xd0, 0xae, 0xda, 0x6a, 0xd0, 0xae, - 0xdb, 0x67, 0xd0, 0xae, 0xdb, 0x6a, 0xd0, 0xae, 0xdb, 0x67, 0xd0, 0xae, - 0xdb, 0x6a, 0xd0, 0xae, 0xdc, 0x67, 0xd0, 0xae, 0xdc, 0x6a, 0xd0, 0xae, - 0xdc, 0x67, 0xd0, 0xae, 0xdd, 0x65, 0xd0, 0xae, 0xdd, 0x67, 0xd0, 0xae, - 0xdd, 0x65, 0xd0, 0xae, 0xdd, 0x67, 0xd0, 0xae, 0xde, 0x65, 0xd0, 0xae, - 0xde, 0x67, 0xd0, 0xae, 0xde, 0x65, 0xeb, 0xae, 0xde, 0x73, 0xeb, 0xae, - 0xdf, 0x6f, 0xeb, 0xae, 0xdf, 0x73, 0xeb, 0xae, 0xdf, 0x6f, 0xec, 0xae, - 0xdf, 0x6c, 0xeb, 0xae, 0xe0, 0x6f, 0xec, 0xae, 0xe0, 0x6c, 0xeb, 0xae, - 0xe0, 0x6f, 0xec, 0xae, 0xe1, 0x6c, 0xeb, 0xae, 0xe1, 0x6f, 0xec, 0xae, - 0xe1, 0x6c, 0xeb, 0xae, 0xe1, 0x6f, 0xec, 0xae, 0xe2, 0x6c, 0xeb, 0xae, - 0xe2, 0x6f, 0xec, 0xae, 0xe2, 0x6c, 0xeb, 0xae, 0xe2, 0x6f, 0xec, 0xae, - 0xe3, 0x6c, 0xeb, 0xae, 0xe3, 0x6f, 0xec, 0xae, 0xe3, 0x6c, 0xeb, 0xae, - 0xe3, 0x6f, 0xec, 0xae, 0xe4, 0x6c, 0xeb, 0xae, 0xe4, 0x6f, 0xec, 0xae, - 0xe4, 0x6c, 0xeb, 0xae, 0xe4, 0x6f, 0xec, 0xae, 0xe5, 0x6c, 0xeb, 0xae, - 0xe5, 0x6f, 0xec, 0xae, 0xe5, 0x6c, 0xeb, 0xae, 0xe5, 0x6f, 0xec, 0xae, - 0xe6, 0x6c, 0xeb, 0xae, 0xe6, 0x6f, 0xec, 0xae, 0xe6, 0x6c, 0xeb, 0xae, - 0xe6, 0x6f, 0xec, 0xae, 0xe7, 0x6c, 0xeb, 0xae, 0xe7, 0x6f, 0xec, 0xae, - 0xe7, 0x6c, 0xeb, 0xae, 0xe7, 0x6f, 0xec, 0xae, 0xe8, 0x6c, 0xeb, 0xae, - 0xe8, 0x6f, 0xec, 0xae, 0xe8, 0x6c, 0xeb, 0xae, 0xe8, 0x6f, 0xec, 0xae, - 0xe9, 0x6c, 0xeb, 0xae, 0xe9, 0x6f, 0xec, 0xae, 0xe9, 0x6c, 0xeb, 0xae, - 0xe9, 0x6f, 0xec, 0xae, 0xea, 0x6c, 0xec, 0xae, 0xea, 0x6c, 0xec, 0xae, - 0xea, 0x6c, 0xec, 0xae, 0xea, 0x6c, 0xec, 0xae, 0xeb, 0x6c, 0xec, 0xae, - 0xeb, 0x6c, 0xec, 0xae, 0xeb, 0x6c, 0xec, 0xae, 0xeb, 0x6c, 0xec, 0xae, - 0xeb, 0x6c, 0xec, 0xae, 0xeb, 0x6c, 0xec, 0xae, 0xeb, 0x6c, 0xec, 0xae, - 0xeb, 0x6c, 0xec, 0xac, 0xec, 0x6c, 0xed, 0xae, 0xeb, 0x6c, 0xed, 0xac, - 0xec, 0x6c, 0xed, 0xae, 0xeb, 0x6c, 0xed, 0xac, 0xec, 0x6c, 0xee, 0xae, - 0xeb, 0x6c, 0xee, 0xac, 0xec, 0x6c, 0xee, 0xae, 0xeb, 0x6c, 0xee, 0xac, - 0xec, 0x6c, 0xef, 0xaa, 0xf0, 0x6c, 0xef, 0xaa, 0xef, 0x6c, 0xef, 0xaa, - 0xf0, 0x6c, 0xef, 0xaa, 0xef, 0x6c, 0xf0, 0xaa, 0xf0, 0x6c, 0xf0, 0xaa, - 0xf0, 0x6c, 0xf0, 0xaa, 0xf0, 0x6c, 0xf0, 0xaa, 0xf0, 0x6c, 0xf1, 0xaa, - 0xf1, 0x6c, 0xf1, 0xaa, 0xf1, 0x6c, 0xf1, 0xaa, 0xf1, 0x6c, 0xf1, 0xaa, - 0xf1, 0x6c, 0xf2, 0xaa, 0xf2, 0x6c, 0xf2, 0xaa, 0xf3, 0x6c, 0xf2, 0xaa, - 0xf3, 0x6c, 0xf2, 0xaa, 0xf3, 0x6c, 0xf2, 0xaa, 0xf3, 0x6c, 0xf3, 0xaa, - 0xf3, 0x6c, 0xf3, 0xaa, 0xf3, 0x6c, 0xf3, 0xaa, 0xf3, 0x6c, 0xf3, 0xaa, - 0xf3, 0x6c, 0xf4, 0xaa, 0xf4, 0x6c, 0xf4, 0xaa, 0xf4, 0x6c, 0xf4, 0xaa, - 0xf4, 0x6c, 0xf4, 0xaa, 0xf4, 0x6c, 0xf5, 0xaf, 0xf6, 0x6c, 0xf5, 0xae, - 0xf7, 0x6c, 0xf5, 0xaf, 0xf6, 0x6c, 0xf5, 0xae, 0xf7, 0x6c, 0xf5, 0xaf, - 0xf6, 0x6c, 0xf6, 0xae, 0xf7, 0x6c, 0xf6, 0xaf, 0xf6, 0x6c, 0xf6, 0xae, - 0xf7, 0x6c, 0xf6, 0xae, 0xf7, 0x6c, 0xf6, 0xae, 0xf7, 0x6c, 0xf6, 0xae, - 0xf7, 0x6c, 0xf6, 0xae, 0xf7, 0x6c, 0xf6, 0xae, 0xf7, 0x6c, 0xf6, 0xae, - 0xf8, 0x6c, 0xf6, 0xae, 0xf8, 0x6c, 0xf6, 0xae, 0xf8, 0x6c, 0xf6, 0xae, - 0xf8, 0x6c, 0xfa, 0xae, 0xf8, 0x6f, 0xfa, 0xae, 0xf9, 0x6d, 0xfb, 0xae, - 0xf9, 0x6c, 0xfa, 0xae, 0xf9, 0x6d, 0xfb, 0xae, 0xf9, 0x6c, 0xfa, 0xae, - 0xfa, 0x6d, 0xfb, 0xae, 0xfa, 0x6c, 0xfa, 0xae, 0xfa, 0x6d, 0xfb, 0xae, - 0xfa, 0x6c, 0xfb, 0xae, 0xfa, 0x6c, 0xfb, 0xae, 0xfa, 0x6c, 0xfb, 0xae, - 0xfa, 0x6c, 0xfb, 0xae, 0xfa, 0x6c, 0xfb, 0xae, 0xfa, 0x6c, 0xfc, 0xae, - 0xfa, 0x6c, 0xfc, 0xae, 0xfa, 0x6c, 0xfc, 0xae, 0xfa, 0x6c, 0xfc, 0xae, - 0xfa, 0x6c, 0xfc, 0xac, 0xfb, 0x6c, 0xfd, 0xae, 0xfa, 0x6c, 0xfd, 0xac, - 0xfb, 0x6c, 0xfd, 0xae, 0xfa, 0x6c, 0xfd, 0xac, 0xfb, 0x6c, 0xfe, 0xae, - 0xfa, 0x6c, 0xfe, 0xac, 0xfb, 0x6c, 0xfe, 0xae, 0xfa, 0x6c, 0xfe, 0xac, - 0xfb, 0x6c, 0xfe, 0xae, 0xfa, 0x6c, 0xff, 0xac, 0xfb, 0x6c, 0xff, 0xae, - 0xfa, 0x6c, 0x03, 0xb4, 0x94, 0x6c, 0x0a, 0xb6, 0x93, 0x6c, 0x0f, 0xb4, - 0x94, 0x6c, 0x14, 0xb6, 0x93, 0x6c, 0x17, 0xb4, 0x94, 0x6c, 0x1b, 0xb6, - 0x93, 0x6c, 0x1e, 0xb4, 0x94, 0x6c, 0x20, 0xb6, 0x93, 0x6c, 0x23, 0xb4, - 0x94, 0x6c, 0x25, 0xb6, 0x93, 0x6c, 0x27, 0xb4, 0x94, 0x6c, 0x29, 0xb6, - 0x93, 0x6c, 0x2b, 0xb4, 0x94, 0x6c, 0x2d, 0xb6, 0x93, 0x6c, 0x2f, 0xb4, - 0x94, 0x6c, 0x31, 0xb6, 0x93, 0x6c, 0x32, 0xb4, 0x94, 0x6c, 0x34, 0xb6, - 0x93, 0x6c, 0x35, 0xb4, 0x94, 0x6c, 0x37, 0xb6, 0x93, 0x6c, 0x38, 0xb4, - 0x94, 0x6c, 0x3a, 0xb6, 0x93, 0x6c, 0x3b, 0xb4, 0x94, 0x6c, 0x3c, 0xb6, - 0x93, 0x6c, 0x3e, 0xb4, 0x94, 0x6c, 0x3f, 0xb6, 0x93, 0x6c, 0x40, 0xb4, - 0x94, 0x6c, 0x42, 0xb6, 0x93, 0x6c, 0x43, 0xb4, 0x94, 0x6c, 0x44, 0xb6, - 0x93, 0x6c, 0x45, 0xb4, 0x94, 0x6c, 0x46, 0xb6, 0x93, 0x6c, 0x47, 0xb4, - 0x94, 0x6c, 0x48, 0xb6, 0x93, 0x6c, 0x49, 0xb4, 0x94, 0x6c, 0x4a, 0xb6, - 0x93, 0x6c, 0x4b, 0xb4, 0x94, 0x6c, 0x4c, 0xb6, 0x93, 0x6c, 0x4d, 0xb4, - 0x94, 0x6c, 0x4e, 0xb6, 0x93, 0x6c, 0x4f, 0xb4, 0x94, 0x6c, 0x50, 0xb6, - 0x93, 0x6c, 0x51, 0xb4, 0x94, 0x6c, 0x52, 0xb6, 0x93, 0x6c, 0x53, 0xb4, - 0x94, 0x6c, 0x54, 0xb6, 0x93, 0x6c, 0x55, 0xb4, 0x94, 0x6c, 0x56, 0xb6, - 0x93, 0x6c, 0x57, 0xb4, 0x94, 0x6c, 0x58, 0xb6, 0x93, 0x6c, 0x58, 0xb4, - 0x94, 0x6c, 0x59, 0xb6, 0x93, 0x6c, 0x5a, 0xb4, 0x94, 0x6c, 0x5b, 0xb6, - 0x93, 0x6c, 0x5c, 0xb4, 0x94, 0x6c, 0x5d, 0xb2, 0x94, 0x6c, 0x5d, 0xb4, - 0x94, 0x6c, 0x5e, 0xb2, 0x94, 0x6c, 0x5f, 0xb4, 0x94, 0x6c, 0x60, 0xb2, - 0x94, 0x6c, 0x60, 0xb4, 0x94, 0x6c, 0x61, 0xb2, 0x94, 0x6c, 0x62, 0xb4, - 0x94, 0x6c, 0x63, 0xb2, 0x94, 0x6c, 0x63, 0xb4, 0x94, 0x6c, 0x64, 0xb2, - 0x94, 0x6c, 0x65, 0xb4, 0x94, 0x6c, 0x66, 0xb2, 0x94, 0x6c, 0x66, 0xb4, - 0x94, 0x6c, 0x67, 0xb2, 0x94, 0x6c, 0x68, 0xb4, 0x94, 0x6c, 0x68, 0xb2, - 0x94, 0x6c, 0x69, 0xb4, 0x94, 0x6c, 0x6a, 0xb2, 0x94, 0x6c, 0x6a, 0xb4, - 0x94, 0x6c, 0x6b, 0xb2, 0x94, 0x6c, 0x6c, 0xb4, 0x94, 0x6c, 0x6c, 0xb2, - 0x94, 0x6c, 0x6d, 0xb4, 0x94, 0x6c, 0x6e, 0xb2, 0x94, 0x6c, 0x6e, 0xb4, - 0x94, 0x6c, 0x6f, 0xb2, 0x94, 0x6c, 0x70, 0xb4, 0x94, 0x6c, 0x70, 0xb2, - 0x94, 0x6c, 0x71, 0xb4, 0x94, 0x6c, 0x72, 0xb2, 0x94, 0x6c, 0x72, 0xb4, - 0x94, 0x6c, 0x73, 0xb2, 0x94, 0x6c, 0x73, 0xaf, 0x94, 0x6c, 0x74, 0xb2, - 0x94, 0x6c, 0x75, 0xaf, 0x94, 0x6c, 0x75, 0xb2, 0x94, 0x6c, 0x76, 0xaf, - 0x94, 0x6c, 0x76, 0xb2, 0x94, 0x6c, 0x77, 0xaf, 0x94, 0x6c, 0x78, 0xb2, - 0x94, 0x6c, 0x78, 0xaf, 0x94, 0x6c, 0x79, 0xb2, 0x94, 0x6c, 0x79, 0xaf, - 0x94, 0x6c, 0x7a, 0xb2, 0x94, 0x6c, 0x7a, 0xaf, 0x94, 0x6c, 0x7b, 0xb2, - 0x94, 0x6c, 0x7c, 0xaf, 0x94, 0x6c, 0x7c, 0xb2, 0x94, 0x6c, 0x7d, 0xaf, - 0x94, 0x6c, 0x7d, 0xb2, 0x94, 0x6c, 0x7e, 0xaf, 0x94, 0x6c, 0x7e, 0xb2, - 0x94, 0x6c, 0x7f, 0xaf, 0x94, 0x6c, 0x7f, 0xb2, 0x94, 0x6c, 0x80, 0xaf, - 0x94, 0x6c, 0x81, 0xb2, 0x94, 0x6c, 0x81, 0xaf, 0x94, 0x6c, 0x82, 0xb2, - 0x94, 0x6c, 0x82, 0xaf, 0x94, 0x6c, 0x83, 0xb2, 0x94, 0x6c, 0x83, 0xaf, - 0x94, 0x6c, 0x84, 0xb2, 0x94, 0x6c, 0x84, 0xaf, 0x94, 0x6c, 0x85, 0xb2, - 0x94, 0x6c, 0x85, 0xaf, 0x94, 0x6c, 0x86, 0xb2, 0x94, 0x6c, 0x86, 0xaf, - 0x94, 0x6c, 0x87, 0xb2, 0x94, 0x6c, 0x87, 0xaf, 0x94, 0x6c, 0x88, 0xb2, - 0x94, 0x6c, 0x88, 0xaf, 0x94, 0x6c, 0x89, 0xb2, 0x94, 0x6c, 0x89, 0xaf, - 0x94, 0x6c, 0x8a, 0xae, 0x95, 0x6c, 0x8a, 0xaf, 0x94, 0x6c, 0x8b, 0xae, - 0x95, 0x6c, 0x8b, 0xaf, 0x94, 0x6c, 0x8c, 0xae, 0x95, 0x6c, 0x8c, 0xaf, - 0x94, 0x6c, 0x8d, 0xae, 0x95, 0x6c, 0x8d, 0xaf, 0x94, 0x6c, 0x8e, 0xae, - 0x95, 0x6c, 0x8e, 0xaf, 0x94, 0x6c, 0x8e, 0xae, 0x95, 0x6c, 0x8f, 0xaf, - 0x94, 0x6c, 0x8f, 0xae, 0x95, 0x6c, 0x90, 0xaf, 0x94, 0x6c, 0x90, 0xae, - 0x95, 0x6c, 0x91, 0xaf, 0x94, 0x6c, 0x91, 0xae, 0x95, 0x6c, 0x92, 0xaf, - 0x94, 0x6c, 0x92, 0xae, 0x95, 0x6c, 0x93, 0xaf, 0x94, 0x6c, 0x93, 0xae, - 0x95, 0x6c, 0x94, 0xaf, 0x94, 0x6c, 0x94, 0xae, 0x95, 0x6c, 0x94, 0xaf, - 0x94, 0x6c, 0x94, 0xae, 0x95, 0x6c, 0x94, 0xae, 0x95, 0x6c, 0x97, 0xae, - 0x96, 0x6c, 0x97, 0xae, 0x96, 0x6c, 0x97, 0xae, 0x97, 0x6c, 0x97, 0xae, - 0x96, 0x6c, 0x98, 0xae, 0x97, 0x6c, 0x98, 0xae, 0x99, 0x6c, 0x98, 0xae, - 0x99, 0x6c, 0x99, 0xae, 0x99, 0x6c, 0x99, 0xae, 0x99, 0x6c, 0x9a, 0xae, - 0x9a, 0x6c, 0x9a, 0xae, 0x9a, 0x6c, 0x9a, 0xae, 0x9a, 0x6c, 0x9b, 0xae, - 0x9b, 0x6c, 0x9b, 0xae, 0x9b, 0x6c, 0x9c, 0xae, 0x9c, 0x6c, 0x9c, 0xae, - 0x9c, 0x6c, 0x9d, 0xae, 0x9d, 0x6c, 0x9d, 0xae, 0x9e, 0x6c, 0x9d, 0xae, - 0x9d, 0x6b, 0x9e, 0xae, 0x9e, 0x6b, 0x9e, 0xae, 0x9e, 0x6b, 0x9f, 0xae, - 0x9f, 0x6b, 0x9f, 0xae, 0x9f, 0x6b, 0x9f, 0xae, 0x9f, 0x6b, 0xa0, 0xae, - 0xa0, 0x6b, 0xa0, 0xae, 0xa0, 0x6b, 0xa1, 0xae, 0xa1, 0x6b, 0xa1, 0xae, - 0xa1, 0x6b, 0xa1, 0xae, 0xa1, 0x6c, 0xa2, 0xaf, 0xa2, 0x6c, 0xa2, 0xaf, - 0xa2, 0x6c, 0xa3, 0xaf, 0xa3, 0x6c, 0xa3, 0xaf, 0xa3, 0x6c, 0xa3, 0xaf, - 0xa3, 0x6c, 0xa4, 0xaf, 0xa4, 0x6c, 0xa4, 0xaf, 0xa4, 0x6c, 0xa5, 0xaf, - 0xa5, 0x6c, 0xa5, 0xaf, 0xa5, 0x6c, 0xa5, 0xaf, 0xa5, 0x6c, 0xa6, 0xaf, - 0xa5, 0x6c, 0xa6, 0xaf, 0xa5, 0x6c, 0xa6, 0xb0, 0xa6, 0x6c, 0xa7, 0xb0, - 0xa7, 0x6c, 0xa7, 0xb0, 0xa7, 0x6c, 0xa8, 0xb0, 0xa8, 0x6c, 0xa8, 0xb0, - 0xa8, 0x6c, 0xa8, 0xb0, 0xa8, 0x6c, 0xa9, 0xb0, 0xa9, 0x6c, 0xa9, 0xb0, - 0xa9, 0x6c, 0xaa, 0xb0, 0xaa, 0x6c, 0xaa, 0xb0, 0xa9, 0x6c, 0xaa, 0xb0, - 0xaa, 0x6c, 0xab, 0xb0, 0xa9, 0x6c, 0xab, 0xb0, 0xaa, 0x6c, 0xab, 0xb0, - 0xab, 0x6c, 0xac, 0xb0, 0xac, 0x6c, 0xac, 0xb0, 0xac, 0x6c, 0xac, 0xb0, - 0xac, 0x6c, 0xad, 0xb0, 0xad, 0x6c, 0xad, 0xb0, 0xad, 0x6c, 0xae, 0xb0, - 0xae, 0x6c, 0xae, 0xb0, 0xad, 0x6c, 0xae, 0xb0, 0xae, 0x6c, 0xaf, 0xb0, - 0xad, 0x6c, 0xaf, 0xb0, 0xae, 0x6c, 0xaf, 0xb1, 0xaf, 0x6c, 0xb0, 0xb1, - 0xb0, 0x6c, 0xb0, 0xb1, 0xb0, 0x6c, 0xb0, 0xb1, 0xb0, 0x6c, 0xb1, 0xb1, - 0xb1, 0x6c, 0xb1, 0xb1, 0xb1, 0x6c, 0xb2, 0xb1, 0xb2, 0x6c, 0xb2, 0xb1, - 0xb1, 0x6c, 0xb2, 0xb1, 0xb2, 0x6c, 0xb3, 0xb1, 0xb1, 0x6c, 0xb3, 0xb1, - 0xb2, 0x6c, 0xb3, 0xb2, 0xb3, 0x6c, 0xb4, 0xb2, 0xb4, 0x6c, 0xb4, 0xb2, - 0xb4, 0x6c, 0xb4, 0xb2, 0xb4, 0x6c, 0xb5, 0xb2, 0xb5, 0x6c, 0xb5, 0xb2, - 0xb5, 0x6c, 0xb5, 0xb2, 0xb5, 0x6c, 0xb6, 0xb2, 0xb5, 0x6c, 0xb6, 0xb2, - 0xb5, 0x6c, 0xb6, 0xb2, 0xb5, 0x6c, 0xb7, 0xb2, 0xb5, 0x6c, 0xb7, 0xb2, - 0xb5, 0x6c, 0xb7, 0xb2, 0xb5, 0x6c, 0xb8, 0xb3, 0xb8, 0x6c, 0xb8, 0xb3, - 0xb8, 0x6c, 0xb8, 0xb3, 0xb8, 0x6c, 0xb9, 0xb3, 0xb9, 0x6c, 0xb9, 0xb3, - 0xb9, 0x6c, 0xb9, 0xb3, 0xb9, 0x6c, 0xba, 0xb3, 0xb9, 0x6c, 0xba, 0xb3, - 0xb9, 0x6c, 0xba, 0xb3, 0xb9, 0x6c, 0xbb, 0xb3, 0xb9, 0x6c, 0xbb, 0xb3, - 0xb9, 0x6c, 0xbb, 0xb3, 0xb9, 0x6c, 0xbc, 0xb3, 0xbc, 0x6c, 0xbc, 0xb3, - 0xbc, 0x6c, 0xbc, 0xb3, 0xbc, 0x6c, 0xbd, 0xb3, 0xbd, 0x6c, 0xbd, 0xb3, - 0xbd, 0x6c, 0xbd, 0xb3, 0xbd, 0x6c, 0xbe, 0xb3, 0xbd, 0x6c, 0xbe, 0xb3, - 0xbd, 0x6c, 0xbe, 0xb3, 0xbd, 0x6c, 0xbf, 0xb3, 0xbd, 0x6c, 0xbf, 0xb3, - 0xbd, 0x6c, 0xbf, 0xb4, 0xbf, 0x6c, 0xc0, 0xb4, 0xc0, 0x6c, 0xc0, 0xb4, - 0xc0, 0x6c, 0xc0, 0xb4, 0xc0, 0x6c, 0xc1, 0xb4, 0xc1, 0x6c, 0xc1, 0xb4, - 0xc0, 0x6c, 0xc1, 0xb4, 0xc1, 0x6c, 0xc1, 0xb4, 0xc0, 0x6c, 0xc2, 0xb4, - 0xc1, 0x6c, 0xc2, 0xb4, 0xc0, 0x6c, 0xc2, 0xb4, 0xc1, 0x6c, 0xc3, 0xb4, - 0xc0, 0x6c, 0xc3, 0xb4, 0xc1, 0x6c, 0xc3, 0xb5, 0xc3, 0x6c, 0xc4, 0xb5, - 0xc4, 0x6c, 0xc4, 0xb5, 0xc4, 0x6c, 0xc4, 0xb5, 0xc4, 0x6c, 0xc5, 0xb5, - 0xc4, 0x6c, 0xc5, 0xb5, 0xc4, 0x6c, 0xc5, 0xb5, 0xc4, 0x6c, 0xc6, 0xb5, - 0xc4, 0x6c, 0xc6, 0xb5, 0xc4, 0x6c, 0xc6, 0xb5, 0xc4, 0x6c, 0xc6, 0xb5, - 0xc4, 0x6c, 0xc7, 0xb5, 0xc7, 0x6c, 0xc7, 0xb5, 0xc7, 0x6c, 0xc7, 0xb5, - 0xc7, 0x6c, 0xc8, 0xb5, 0xc7, 0x6c, 0xc8, 0xb5, 0xc7, 0x6c, 0xc8, 0xb5, - 0xc7, 0x6c, 0xc9, 0xb5, 0xc7, 0x6c, 0xc9, 0xb5, 0xc7, 0x6c, 0xc9, 0xb5, - 0xc7, 0x6c, 0xc9, 0xb1, 0xcf, 0x6c, 0xca, 0xaf, 0xd0, 0x6c, 0xca, 0xb1, - 0xcf, 0x6c, 0xca, 0xaf, 0xd0, 0x6c, 0xcb, 0xb1, 0xcf, 0x6c, 0xcb, 0xaf, - 0xd0, 0x6c, 0xcb, 0xae, 0xd0, 0x6c, 0xcc, 0xaf, 0xd0, 0x6c, 0xcc, 0xae, - 0xd0, 0x6c, 0xcc, 0xaf, 0xd0, 0x6c, 0xcc, 0xae, 0xd0, 0x6c, 0xcd, 0xaf, - 0xd0, 0x6c, 0xcd, 0xae, 0xd0, 0x6c, 0xcd, 0xaf, 0xd0, 0x6c, 0xce, 0xae, - 0xd0, 0x6c, 0xce, 0xaf, 0xd0, 0x6c, 0xce, 0xae, 0xd0, 0x6c, 0xce, 0xaf, - 0xd0, 0x6c, 0xcf, 0xae, 0xd0, 0x6c, 0xcf, 0xaf, 0xd0, 0x6c, 0xcf, 0xae, - 0xd0, 0x6c, 0xd0, 0xae, 0xd0, 0x6c, 0xcf, 0xae, 0xd0, 0x6c, 0xd0, 0xae, - 0xd0, 0x6c, 0xcf, 0xae, 0xd0, 0x6c, 0xd0, 0xae, 0xd1, 0x6c, 0xd0, 0xae, - 0xd1, 0x6a, 0xd0, 0xae, 0xd1, 0x6c, 0xd0, 0xae, 0xd2, 0x6a, 0xd0, 0xae, - 0xd2, 0x6c, 0xd0, 0xae, 0xd2, 0x6a, 0xd0, 0xae, 0xd2, 0x6c, 0xd0, 0xae, - 0xd3, 0x6a, 0xd0, 0xae, 0xd3, 0x6c, 0xd0, 0xae, 0xd3, 0x6a, 0xd0, 0xae, - 0xd4, 0x6c, 0xd0, 0xae, 0xd4, 0x6a, 0xd0, 0xae, 0xd4, 0x6c, 0xd0, 0xae, - 0xd4, 0x6a, 0xd0, 0xae, 0xd5, 0x6c, 0xd0, 0xae, 0xd5, 0x6a, 0xd0, 0xae, - 0xd5, 0x6c, 0xd0, 0xae, 0xd6, 0x6a, 0xd0, 0xae, 0xd6, 0x6c, 0xd0, 0xae, - 0xd6, 0x6a, 0xd0, 0xae, 0xd6, 0x6c, 0xd0, 0xae, 0xd7, 0x6a, 0xd0, 0xae, - 0xd7, 0x67, 0xd0, 0xae, 0xd7, 0x6a, 0xd0, 0xae, 0xd7, 0x67, 0xd0, 0xae, - 0xd8, 0x6a, 0xd0, 0xae, 0xd8, 0x67, 0xd0, 0xae, 0xd8, 0x6a, 0xd0, 0xae, - 0xd9, 0x67, 0xd0, 0xae, 0xd9, 0x6a, 0xd0, 0xae, 0xd9, 0x67, 0xd0, 0xae, - 0xd9, 0x6a, 0xd0, 0xae, 0xda, 0x67, 0xd0, 0xae, 0xda, 0x6a, 0xd0, 0xae, - 0xda, 0x67, 0xd0, 0xae, 0xda, 0x6a, 0xd0, 0xae, 0xdb, 0x67, 0xd0, 0xae, - 0xdb, 0x6a, 0xd0, 0xae, 0xdb, 0x67, 0xd0, 0xae, 0xdb, 0x6a, 0xd0, 0xae, - 0xdc, 0x67, 0xd0, 0xae, 0xdc, 0x6a, 0xd0, 0xae, 0xdc, 0x67, 0xd0, 0xae, - 0xdd, 0x6a, 0xd0, 0xae, 0xdd, 0x67, 0xd0, 0xae, 0xdd, 0x6a, 0xd0, 0xae, - 0xdd, 0x67, 0xd0, 0xae, 0xde, 0x6a, 0xd0, 0xae, 0xde, 0x67, 0xd0, 0xae, - 0xde, 0x6a, 0xeb, 0xae, 0xde, 0x72, 0xeb, 0xae, 0xdf, 0x6f, 0xeb, 0xae, - 0xdf, 0x72, 0xeb, 0xae, 0xdf, 0x6f, 0xeb, 0xae, 0xdf, 0x72, 0xeb, 0xae, - 0xe0, 0x6f, 0xeb, 0xae, 0xe0, 0x72, 0xeb, 0xae, 0xe0, 0x6f, 0xeb, 0xae, - 0xe1, 0x72, 0xeb, 0xae, 0xe1, 0x6f, 0xeb, 0xae, 0xe1, 0x72, 0xeb, 0xae, - 0xe1, 0x6f, 0xeb, 0xae, 0xe2, 0x72, 0xeb, 0xae, 0xe2, 0x6f, 0xeb, 0xae, - 0xe2, 0x72, 0xeb, 0xae, 0xe2, 0x6f, 0xec, 0xae, 0xe3, 0x6c, 0xeb, 0xae, - 0xe3, 0x6f, 0xec, 0xae, 0xe3, 0x6c, 0xeb, 0xae, 0xe3, 0x6f, 0xec, 0xae, - 0xe4, 0x6c, 0xeb, 0xae, 0xe4, 0x6f, 0xec, 0xae, 0xe4, 0x6c, 0xeb, 0xae, - 0xe4, 0x6f, 0xec, 0xae, 0xe5, 0x6c, 0xeb, 0xae, 0xe5, 0x6f, 0xec, 0xae, - 0xe5, 0x6c, 0xeb, 0xae, 0xe5, 0x6f, 0xec, 0xae, 0xe6, 0x6c, 0xeb, 0xae, - 0xe6, 0x6f, 0xec, 0xae, 0xe6, 0x6c, 0xeb, 0xae, 0xe6, 0x6f, 0xec, 0xae, - 0xe7, 0x6c, 0xeb, 0xae, 0xe7, 0x6f, 0xec, 0xae, 0xe7, 0x6c, 0xeb, 0xae, - 0xe7, 0x6f, 0xec, 0xae, 0xe8, 0x6c, 0xeb, 0xae, 0xe8, 0x6f, 0xec, 0xae, - 0xe8, 0x6c, 0xeb, 0xae, 0xe8, 0x6f, 0xec, 0xae, 0xe9, 0x6c, 0xeb, 0xae, - 0xe9, 0x6f, 0xec, 0xae, 0xe9, 0x6c, 0xeb, 0xae, 0xe9, 0x6f, 0xec, 0xae, - 0xea, 0x6c, 0xec, 0xae, 0xea, 0x6c, 0xec, 0xae, 0xea, 0x6c, 0xec, 0xae, - 0xea, 0x6c, 0xec, 0xae, 0xeb, 0x6c, 0xec, 0xae, 0xeb, 0x6c, 0xec, 0xae, - 0xeb, 0x6c, 0xec, 0xae, 0xeb, 0x6c, 0xec, 0xae, 0xeb, 0x6c, 0xec, 0xae, - 0xeb, 0x6c, 0xec, 0xae, 0xeb, 0x6c, 0xec, 0xae, 0xeb, 0x6c, 0xec, 0xad, - 0xec, 0x6c, 0xed, 0xae, 0xeb, 0x6c, 0xed, 0xad, 0xec, 0x6c, 0xed, 0xae, - 0xeb, 0x6c, 0xed, 0xad, 0xec, 0x6c, 0xee, 0xae, 0xeb, 0x6c, 0xee, 0xad, - 0xec, 0x6c, 0xee, 0xae, 0xeb, 0x6c, 0xee, 0xad, 0xec, 0x6c, 0xef, 0xa9, - 0xef, 0x6c, 0xef, 0xa9, 0xef, 0x6c, 0xef, 0xa9, 0xef, 0x6c, 0xef, 0xa9, - 0xef, 0x6c, 0xf0, 0xa9, 0xf0, 0x6c, 0xf0, 0xaa, 0xf1, 0x6c, 0xf0, 0xaa, - 0xf2, 0x6c, 0xf0, 0xaa, 0xf1, 0x6c, 0xf1, 0xaa, 0xf2, 0x6c, 0xf1, 0xaa, - 0xf1, 0x6c, 0xf1, 0xaa, 0xf2, 0x6c, 0xf1, 0xaa, 0xf1, 0x6c, 0xf2, 0xaa, - 0xf2, 0x6c, 0xf2, 0xaa, 0xf2, 0x6c, 0xf2, 0xaa, 0xf2, 0x6c, 0xf2, 0xaa, - 0xf2, 0x6c, 0xf2, 0xaa, 0xf2, 0x6c, 0xf3, 0xaa, 0xf3, 0x6c, 0xf3, 0xaa, - 0xf3, 0x6c, 0xf3, 0xaa, 0xf3, 0x6c, 0xf3, 0xab, 0xf5, 0x6c, 0xf4, 0xab, - 0xf5, 0x6c, 0xf4, 0xab, 0xf5, 0x6c, 0xf4, 0xae, 0xf6, 0x6c, 0xf4, 0xae, - 0xf7, 0x6c, 0xf5, 0xae, 0xf6, 0x6c, 0xf5, 0xae, 0xf7, 0x6c, 0xf5, 0xae, - 0xf6, 0x6c, 0xf5, 0xae, 0xf7, 0x6c, 0xf5, 0xae, 0xf6, 0x6c, 0xf6, 0xae, - 0xf7, 0x6c, 0xf6, 0xae, 0xf6, 0x6c, 0xf6, 0xae, 0xf7, 0x6c, 0xf6, 0xae, - 0xf6, 0x6b, 0xf6, 0xae, 0xf7, 0x6c, 0xf6, 0xae, 0xf7, 0x6b, 0xf6, 0xae, - 0xf7, 0x6c, 0xf6, 0xae, 0xf7, 0x6b, 0xf6, 0xae, 0xf8, 0x6c, 0xf6, 0xae, - 0xf8, 0x6b, 0xf6, 0xae, 0xf8, 0x6c, 0xf6, 0xae, 0xf8, 0x6b, 0xfa, 0xae, - 0xf8, 0x6f, 0xfa, 0xae, 0xf9, 0x6c, 0xfb, 0xae, 0xf9, 0x6c, 0xfa, 0xae, - 0xf9, 0x6c, 0xfb, 0xae, 0xf9, 0x6c, 0xfa, 0xae, 0xfa, 0x6c, 0xfb, 0xae, - 0xfa, 0x6c, 0xfa, 0xae, 0xfa, 0x6c, 0xfb, 0xae, 0xfa, 0x6c, 0xfa, 0xae, - 0xfa, 0x6c, 0xfb, 0xae, 0xfa, 0x6c, 0xfb, 0xae, 0xfa, 0x6c, 0xfb, 0xae, - 0xfa, 0x6c, 0xfb, 0xae, 0xfa, 0x6c, 0xfc, 0xae, 0xfa, 0x6c, 0xfc, 0xae, - 0xfa, 0x6c, 0xfc, 0xae, 0xfa, 0x6c, 0xfc, 0xae, 0xfa, 0x6c, 0xfc, 0xae, - 0xfa, 0x6c, 0xfd, 0xae, 0xfa, 0x6c, 0xfd, 0xae, 0xfa, 0x6c, 0xfd, 0xae, - 0xfa, 0x6c, 0xfd, 0xae, 0xfa, 0x6c, 0xfe, 0xae, 0xfa, 0x6c, 0xfe, 0xae, - 0xfa, 0x6c, 0xfe, 0xae, 0xfa, 0x6c, 0xfe, 0xab, 0xfb, 0x6c, 0xfe, 0xae, - 0xfa, 0x6c, 0xff, 0xae, 0xfa, 0x6c, 0xff, 0xae, 0xfa, 0x6c, 0x03, 0xb8, - 0x93, 0x6d, 0x0a, 0xb6, 0x93, 0x6d, 0x0f, 0xb4, 0x94, 0x6d, 0x14, 0xb6, - 0x93, 0x6d, 0x17, 0xb4, 0x94, 0x6d, 0x1b, 0xb6, 0x93, 0x6d, 0x1e, 0xb4, - 0x94, 0x6d, 0x20, 0xb6, 0x93, 0x6d, 0x23, 0xb4, 0x94, 0x6d, 0x25, 0xb6, - 0x93, 0x6d, 0x27, 0xb4, 0x94, 0x6d, 0x29, 0xb6, 0x93, 0x6d, 0x2b, 0xb4, - 0x94, 0x6d, 0x2d, 0xb6, 0x93, 0x6d, 0x2f, 0xb4, 0x94, 0x6d, 0x31, 0xb6, - 0x93, 0x6d, 0x32, 0xb4, 0x94, 0x6d, 0x34, 0xb6, 0x93, 0x6d, 0x35, 0xb4, - 0x94, 0x6d, 0x37, 0xb6, 0x93, 0x6d, 0x38, 0xb4, 0x94, 0x6d, 0x3a, 0xb6, - 0x93, 0x6d, 0x3b, 0xb4, 0x94, 0x6d, 0x3c, 0xb6, 0x93, 0x6d, 0x3e, 0xb4, - 0x94, 0x6d, 0x3f, 0xb6, 0x93, 0x6d, 0x40, 0xb4, 0x94, 0x6d, 0x42, 0xb6, - 0x93, 0x6d, 0x43, 0xb4, 0x94, 0x6d, 0x44, 0xb6, 0x93, 0x6d, 0x45, 0xb4, - 0x94, 0x6d, 0x46, 0xb6, 0x93, 0x6d, 0x47, 0xb4, 0x94, 0x6d, 0x48, 0xb6, - 0x93, 0x6d, 0x49, 0xb4, 0x94, 0x6d, 0x4a, 0xb6, 0x93, 0x6d, 0x4b, 0xb4, - 0x94, 0x6d, 0x4c, 0xb6, 0x93, 0x6d, 0x4d, 0xb4, 0x94, 0x6d, 0x4e, 0xb6, - 0x93, 0x6d, 0x4f, 0xb4, 0x94, 0x6d, 0x50, 0xb6, 0x93, 0x6d, 0x51, 0xb4, - 0x94, 0x6d, 0x52, 0xb6, 0x93, 0x6d, 0x53, 0xb4, 0x94, 0x6d, 0x54, 0xb6, - 0x93, 0x6d, 0x55, 0xb4, 0x94, 0x6d, 0x56, 0xb2, 0x94, 0x6d, 0x57, 0xb4, - 0x94, 0x6d, 0x58, 0xb2, 0x94, 0x6d, 0x58, 0xb4, 0x94, 0x6d, 0x59, 0xb2, - 0x94, 0x6d, 0x5a, 0xb4, 0x94, 0x6d, 0x5b, 0xb2, 0x94, 0x6d, 0x5c, 0xb4, - 0x94, 0x6d, 0x5d, 0xb2, 0x94, 0x6d, 0x5d, 0xb4, 0x94, 0x6d, 0x5e, 0xb2, - 0x94, 0x6d, 0x5f, 0xb4, 0x94, 0x6d, 0x60, 0xb2, 0x94, 0x6d, 0x60, 0xb4, - 0x94, 0x6d, 0x61, 0xb2, 0x94, 0x6d, 0x62, 0xb4, 0x94, 0x6d, 0x63, 0xb2, - 0x94, 0x6d, 0x63, 0xb4, 0x94, 0x6d, 0x64, 0xb2, 0x94, 0x6d, 0x65, 0xb4, - 0x94, 0x6d, 0x66, 0xb2, 0x94, 0x6d, 0x66, 0xb4, 0x94, 0x6d, 0x67, 0xb2, - 0x94, 0x6d, 0x68, 0xb4, 0x94, 0x6d, 0x68, 0xb2, 0x94, 0x6d, 0x69, 0xb4, - 0x94, 0x6d, 0x6a, 0xb2, 0x94, 0x6d, 0x6a, 0xb4, 0x94, 0x6d, 0x6b, 0xb2, - 0x94, 0x6d, 0x6c, 0xb4, 0x94, 0x6d, 0x6c, 0xb2, 0x94, 0x6d, 0x6d, 0xb4, - 0x94, 0x6d, 0x6e, 0xb2, 0x94, 0x6d, 0x6e, 0xb4, 0x94, 0x6d, 0x6f, 0xb2, - 0x94, 0x6d, 0x70, 0xb4, 0x94, 0x6d, 0x70, 0xb2, 0x94, 0x6d, 0x71, 0xb4, - 0x94, 0x6d, 0x72, 0xb2, 0x94, 0x6d, 0x72, 0xb4, 0x94, 0x6d, 0x73, 0xb2, - 0x94, 0x6d, 0x73, 0xb4, 0x94, 0x6d, 0x74, 0xb2, 0x94, 0x6d, 0x75, 0xb4, - 0x94, 0x6d, 0x75, 0xb2, 0x94, 0x6d, 0x76, 0xb4, 0x94, 0x6d, 0x76, 0xb2, - 0x94, 0x6d, 0x77, 0xb4, 0x94, 0x6d, 0x78, 0xb2, 0x94, 0x6d, 0x78, 0xb4, - 0x94, 0x6d, 0x79, 0xb2, 0x94, 0x6d, 0x79, 0xb4, 0x94, 0x6d, 0x7a, 0xb2, - 0x94, 0x6d, 0x7a, 0xb4, 0x94, 0x6d, 0x7b, 0xb2, 0x94, 0x6d, 0x7c, 0xb4, - 0x94, 0x6d, 0x7c, 0xb2, 0x94, 0x6d, 0x7d, 0xaf, 0x94, 0x6d, 0x7d, 0xb2, - 0x94, 0x6d, 0x7e, 0xaf, 0x94, 0x6d, 0x7e, 0xb2, 0x94, 0x6d, 0x7f, 0xaf, - 0x94, 0x6d, 0x7f, 0xb2, 0x94, 0x6d, 0x80, 0xaf, 0x94, 0x6d, 0x81, 0xb2, - 0x94, 0x6d, 0x81, 0xaf, 0x94, 0x6d, 0x82, 0xb2, 0x94, 0x6d, 0x82, 0xaf, - 0x94, 0x6d, 0x83, 0xb2, 0x94, 0x6d, 0x83, 0xaf, 0x94, 0x6d, 0x84, 0xb2, - 0x94, 0x6d, 0x84, 0xaf, 0x94, 0x6d, 0x85, 0xb2, 0x94, 0x6d, 0x85, 0xaf, - 0x94, 0x6d, 0x86, 0xb2, 0x94, 0x6d, 0x86, 0xaf, 0x94, 0x6d, 0x87, 0xb2, - 0x94, 0x6d, 0x87, 0xaf, 0x94, 0x6d, 0x88, 0xb2, 0x94, 0x6d, 0x88, 0xaf, - 0x94, 0x6d, 0x89, 0xb2, 0x94, 0x6d, 0x89, 0xaf, 0x94, 0x6d, 0x8a, 0xb2, - 0x94, 0x6d, 0x8a, 0xaf, 0x94, 0x6d, 0x8b, 0xb2, 0x94, 0x6d, 0x8b, 0xaf, - 0x94, 0x6d, 0x8c, 0xb2, 0x94, 0x6d, 0x8c, 0xaf, 0x94, 0x6d, 0x8d, 0xb2, - 0x94, 0x6d, 0x8d, 0xaf, 0x94, 0x6d, 0x8e, 0xaf, 0x95, 0x6d, 0x8e, 0xaf, - 0x94, 0x6d, 0x8e, 0xaf, 0x95, 0x6d, 0x8f, 0xaf, 0x94, 0x6d, 0x8f, 0xaf, - 0x95, 0x6d, 0x90, 0xaf, 0x94, 0x6d, 0x90, 0xaf, 0x95, 0x6d, 0x91, 0xaf, - 0x94, 0x6d, 0x91, 0xaf, 0x95, 0x6d, 0x92, 0xaf, 0x94, 0x6d, 0x92, 0xaf, - 0x95, 0x6d, 0x93, 0xaf, 0x94, 0x6d, 0x93, 0xaf, 0x95, 0x6d, 0x94, 0xaf, - 0x94, 0x6d, 0x94, 0xaf, 0x95, 0x6d, 0x94, 0xaf, 0x94, 0x6d, 0x94, 0xaf, - 0x95, 0x6d, 0x94, 0xaf, 0x95, 0x6d, 0x97, 0xaf, 0x96, 0x6d, 0x97, 0xaf, - 0x96, 0x6d, 0x97, 0xaf, 0x96, 0x6d, 0x97, 0xaf, 0x96, 0x6d, 0x98, 0xad, - 0x98, 0x6d, 0x98, 0xad, 0x98, 0x6d, 0x98, 0xad, 0x98, 0x6d, 0x99, 0xad, - 0x99, 0x6d, 0x99, 0xad, 0x99, 0x6d, 0x9a, 0xad, 0x9a, 0x6d, 0x9a, 0xae, - 0x9b, 0x6d, 0x9a, 0xae, 0x9b, 0x6d, 0x9b, 0xae, 0x9b, 0x6d, 0x9b, 0xae, - 0x9b, 0x6d, 0x9c, 0xae, 0x9c, 0x6d, 0x9c, 0xae, 0x9c, 0x6d, 0x9d, 0xae, - 0x9d, 0x6d, 0x9d, 0xae, 0x9d, 0x6d, 0x9d, 0xae, 0x9d, 0x6d, 0x9e, 0xae, - 0x9e, 0x6d, 0x9e, 0xae, 0x9e, 0x6d, 0x9f, 0xae, 0x9f, 0x6d, 0x9f, 0xaf, - 0xa0, 0x6d, 0x9f, 0xaf, 0xa0, 0x6d, 0xa0, 0xaf, 0xa0, 0x6c, 0xa0, 0xaf, - 0xa0, 0x6c, 0xa1, 0xaf, 0xa1, 0x6c, 0xa1, 0xaf, 0xa1, 0x6c, 0xa1, 0xaf, - 0xa1, 0x6c, 0xa2, 0xaf, 0xa2, 0x6c, 0xa2, 0xaf, 0xa2, 0x6c, 0xa3, 0xaf, - 0xa3, 0x6c, 0xa3, 0xaf, 0xa3, 0x6c, 0xa3, 0xaf, 0xa3, 0x6d, 0xa4, 0xaf, - 0xa3, 0x6d, 0xa4, 0xaf, 0xa4, 0x6d, 0xa5, 0xaf, 0xa5, 0x6d, 0xa5, 0xaf, - 0xa5, 0x6d, 0xa5, 0xaf, 0xa5, 0x6d, 0xa6, 0xaf, 0xa6, 0x6d, 0xa6, 0xaf, - 0xa6, 0x6d, 0xa6, 0xaf, 0xa6, 0x6d, 0xa7, 0xaf, 0xa7, 0x6d, 0xa7, 0xaf, - 0xa7, 0x6d, 0xa8, 0xaf, 0xa8, 0x6d, 0xa8, 0xaf, 0xa7, 0x6d, 0xa8, 0xaf, - 0xa8, 0x6d, 0xa9, 0xb0, 0xa9, 0x6d, 0xa9, 0xb0, 0xa9, 0x6d, 0xaa, 0xb0, - 0xaa, 0x6d, 0xaa, 0xb0, 0xaa, 0x6d, 0xaa, 0xb0, 0xaa, 0x6d, 0xab, 0xb0, - 0xab, 0x6d, 0xab, 0xb0, 0xab, 0x6d, 0xab, 0xb0, 0xab, 0x6d, 0xac, 0xb0, - 0xac, 0x6d, 0xac, 0xb0, 0xab, 0x6d, 0xac, 0xb0, 0xac, 0x6d, 0xad, 0xb0, - 0xab, 0x6d, 0xad, 0xb0, 0xac, 0x6d, 0xae, 0xb1, 0xae, 0x6d, 0xae, 0xb1, - 0xae, 0x6d, 0xae, 0xb1, 0xae, 0x6d, 0xaf, 0xb1, 0xaf, 0x6d, 0xaf, 0xb1, - 0xaf, 0x6d, 0xaf, 0xb1, 0xaf, 0x6d, 0xb0, 0xb1, 0xb0, 0x6d, 0xb0, 0xb1, - 0xaf, 0x6d, 0xb0, 0xb1, 0xb0, 0x6d, 0xb1, 0xb1, 0xaf, 0x6d, 0xb1, 0xb1, - 0xb0, 0x6d, 0xb2, 0xb2, 0xb2, 0x6d, 0xb2, 0xb2, 0xb2, 0x6d, 0xb2, 0xb2, - 0xb2, 0x6d, 0xb3, 0xb2, 0xb3, 0x6d, 0xb3, 0xb2, 0xb3, 0x6d, 0xb3, 0xb2, - 0xb3, 0x6d, 0xb4, 0xb2, 0xb4, 0x6d, 0xb4, 0xb2, 0xb3, 0x6d, 0xb4, 0xb2, - 0xb4, 0x6d, 0xb5, 0xb2, 0xb3, 0x6d, 0xb5, 0xb2, 0xb4, 0x6d, 0xb5, 0xb2, - 0xb5, 0x6d, 0xb6, 0xb2, 0xb6, 0x6d, 0xb6, 0xb2, 0xb6, 0x6d, 0xb6, 0xb2, - 0xb6, 0x6d, 0xb7, 0xb2, 0xb7, 0x6d, 0xb7, 0xb2, 0xb7, 0x6d, 0xb7, 0xb2, - 0xb7, 0x6d, 0xb8, 0xb2, 0xb7, 0x6d, 0xb8, 0xb2, 0xb7, 0x6d, 0xb8, 0xb2, - 0xb7, 0x6d, 0xb9, 0xb2, 0xb7, 0x6d, 0xb9, 0xb2, 0xb7, 0x6d, 0xb9, 0xb2, - 0xb7, 0x6d, 0xba, 0xb3, 0xba, 0x6d, 0xba, 0xb3, 0xba, 0x6d, 0xba, 0xb3, - 0xba, 0x6d, 0xbb, 0xb3, 0xbb, 0x6d, 0xbb, 0xb3, 0xbb, 0x6d, 0xbb, 0xb3, - 0xbb, 0x6d, 0xbc, 0xb3, 0xbb, 0x6d, 0xbc, 0xb3, 0xbb, 0x6d, 0xbc, 0xb3, - 0xbb, 0x6d, 0xbd, 0xb3, 0xbb, 0x6d, 0xbd, 0xb3, 0xbb, 0x6d, 0xbd, 0xb4, - 0xbd, 0x6d, 0xbe, 0xb4, 0xbe, 0x6d, 0xbe, 0xb4, 0xbe, 0x6d, 0xbe, 0xb4, - 0xbe, 0x6d, 0xbf, 0xb4, 0xbf, 0x6d, 0xbf, 0xb4, 0xbe, 0x6d, 0xbf, 0xb4, - 0xbf, 0x6d, 0xc0, 0xb4, 0xbe, 0x6d, 0xc0, 0xb4, 0xbf, 0x6d, 0xc0, 0xb4, - 0xbe, 0x6d, 0xc1, 0xb4, 0xbf, 0x6d, 0xc1, 0xb4, 0xc1, 0x6d, 0xc1, 0xb4, - 0xc1, 0x6d, 0xc1, 0xb4, 0xc1, 0x6d, 0xc2, 0xb4, 0xc2, 0x6d, 0xc2, 0xb4, - 0xc2, 0x6d, 0xc2, 0xb4, 0xc2, 0x6d, 0xc3, 0xb4, 0xc2, 0x6d, 0xc3, 0xb4, - 0xc2, 0x6d, 0xc3, 0xb4, 0xc2, 0x6d, 0xc4, 0xb4, 0xc2, 0x6d, 0xc4, 0xb4, - 0xc2, 0x6d, 0xc4, 0xb4, 0xc2, 0x6d, 0xc5, 0xb4, 0xc2, 0x6d, 0xc5, 0xb5, - 0xc5, 0x6d, 0xc5, 0xb5, 0xc5, 0x6d, 0xc6, 0xb5, 0xc6, 0x6d, 0xc6, 0xb5, - 0xc6, 0x6d, 0xc6, 0xb5, 0xc6, 0x6d, 0xc6, 0xb5, 0xc6, 0x6d, 0xc7, 0xb5, - 0xc6, 0x6d, 0xc7, 0xb5, 0xc6, 0x6d, 0xc7, 0xb5, 0xc6, 0x6d, 0xc8, 0xb5, - 0xc6, 0x6d, 0xc8, 0xb5, 0xc6, 0x6d, 0xc8, 0xb5, 0xc6, 0x6d, 0xc9, 0xb6, - 0xc9, 0x6d, 0xc9, 0xb6, 0xc9, 0x6d, 0xc9, 0xb6, 0xc9, 0x6d, 0xc9, 0xb6, - 0xc9, 0x6d, 0xca, 0xaf, 0xd0, 0x6d, 0xca, 0xb2, 0xcf, 0x6d, 0xca, 0xaf, - 0xd0, 0x6d, 0xcb, 0xb2, 0xcf, 0x6d, 0xcb, 0xaf, 0xd0, 0x6d, 0xcb, 0xaf, - 0xd0, 0x6d, 0xcc, 0xaf, 0xd0, 0x6d, 0xcc, 0xaf, 0xd0, 0x6d, 0xcc, 0xaf, - 0xd0, 0x6d, 0xcc, 0xaf, 0xd0, 0x6d, 0xcd, 0xaf, 0xd0, 0x6d, 0xcd, 0xaf, - 0xd0, 0x6d, 0xcd, 0xaf, 0xd0, 0x6d, 0xce, 0xaf, 0xd0, 0x6d, 0xce, 0xaf, - 0xd0, 0x6d, 0xce, 0xaf, 0xd0, 0x6d, 0xce, 0xaf, 0xd0, 0x6d, 0xcf, 0xaf, - 0xd0, 0x6d, 0xcf, 0xaf, 0xd0, 0x6d, 0xcf, 0xaf, 0xd0, 0x6d, 0xd0, 0xaf, - 0xd0, 0x6d, 0xcf, 0xaf, 0xd0, 0x6d, 0xd0, 0xaf, 0xd0, 0x6d, 0xcf, 0xaf, - 0xd0, 0x6d, 0xd0, 0xaf, 0xd1, 0x6d, 0xcf, 0xaf, 0xd1, 0x6d, 0xd0, 0xaf, - 0xd1, 0x6d, 0xcf, 0xaf, 0xd2, 0x6d, 0xd0, 0xaf, 0xd2, 0x6d, 0xd0, 0xaf, - 0xd2, 0x6a, 0xd0, 0xaf, 0xd2, 0x6d, 0xd0, 0xaf, 0xd3, 0x6a, 0xd0, 0xaf, - 0xd3, 0x6d, 0xd0, 0xaf, 0xd3, 0x6a, 0xd0, 0xaf, 0xd4, 0x6d, 0xd0, 0xaf, - 0xd4, 0x6a, 0xd0, 0xaf, 0xd4, 0x6d, 0xd0, 0xaf, 0xd4, 0x6a, 0xd0, 0xaf, - 0xd5, 0x6d, 0xd0, 0xaf, 0xd5, 0x6a, 0xd0, 0xaf, 0xd5, 0x6d, 0xd0, 0xaf, - 0xd6, 0x6a, 0xd0, 0xaf, 0xd6, 0x6d, 0xd0, 0xaf, 0xd6, 0x6a, 0xd0, 0xaf, - 0xd6, 0x6d, 0xd0, 0xaf, 0xd7, 0x6a, 0xd0, 0xaf, 0xd7, 0x6d, 0xd0, 0xaf, - 0xd7, 0x6a, 0xd0, 0xaf, 0xd7, 0x6d, 0xd0, 0xaf, 0xd8, 0x6a, 0xd0, 0xaf, - 0xd8, 0x6d, 0xd0, 0xaf, 0xd8, 0x6a, 0xd0, 0xaf, 0xd9, 0x6d, 0xd0, 0xaf, - 0xd9, 0x6a, 0xd0, 0xaf, 0xd9, 0x6d, 0xd0, 0xaf, 0xd9, 0x6a, 0xd0, 0xaf, - 0xda, 0x6d, 0xd0, 0xaf, 0xda, 0x6a, 0xd0, 0xaf, 0xda, 0x67, 0xd0, 0xaf, - 0xda, 0x6a, 0xd0, 0xaf, 0xdb, 0x67, 0xd0, 0xaf, 0xdb, 0x6a, 0xd0, 0xaf, - 0xdb, 0x67, 0xd0, 0xaf, 0xdb, 0x6a, 0xd0, 0xaf, 0xdc, 0x67, 0xd0, 0xaf, - 0xdc, 0x6a, 0xd0, 0xaf, 0xdc, 0x67, 0xd0, 0xaf, 0xdd, 0x6a, 0xd0, 0xaf, - 0xdd, 0x67, 0xd0, 0xaf, 0xdd, 0x6a, 0xd0, 0xaf, 0xdd, 0x67, 0xd0, 0xaf, - 0xde, 0x6a, 0xd0, 0xaf, 0xde, 0x67, 0xeb, 0xaf, 0xde, 0x6f, 0xeb, 0xaf, - 0xde, 0x73, 0xeb, 0xaf, 0xdf, 0x6f, 0xeb, 0xaf, 0xdf, 0x73, 0xeb, 0xaf, - 0xdf, 0x6f, 0xeb, 0xaf, 0xdf, 0x73, 0xeb, 0xaf, 0xe0, 0x6f, 0xeb, 0xaf, - 0xe0, 0x73, 0xeb, 0xaf, 0xe0, 0x6f, 0xeb, 0xaf, 0xe1, 0x73, 0xeb, 0xaf, - 0xe1, 0x6f, 0xeb, 0xaf, 0xe1, 0x73, 0xeb, 0xaf, 0xe1, 0x6f, 0xeb, 0xaf, - 0xe2, 0x73, 0xeb, 0xaf, 0xe2, 0x6f, 0xeb, 0xaf, 0xe2, 0x73, 0xeb, 0xaf, - 0xe2, 0x6f, 0xec, 0xaf, 0xe3, 0x6d, 0xeb, 0xaf, 0xe3, 0x6f, 0xec, 0xaf, - 0xe3, 0x6d, 0xeb, 0xaf, 0xe3, 0x6f, 0xec, 0xaf, 0xe4, 0x6d, 0xeb, 0xaf, - 0xe4, 0x6f, 0xec, 0xaf, 0xe4, 0x6d, 0xeb, 0xaf, 0xe4, 0x6f, 0xec, 0xaf, - 0xe5, 0x6d, 0xeb, 0xaf, 0xe5, 0x6f, 0xec, 0xaf, 0xe5, 0x6d, 0xeb, 0xaf, - 0xe5, 0x6f, 0xec, 0xaf, 0xe6, 0x6d, 0xeb, 0xaf, 0xe6, 0x6f, 0xec, 0xaf, - 0xe6, 0x6d, 0xeb, 0xaf, 0xe6, 0x6f, 0xec, 0xaf, 0xe7, 0x6d, 0xeb, 0xaf, - 0xe7, 0x6f, 0xec, 0xaf, 0xe7, 0x6d, 0xeb, 0xaf, 0xe7, 0x6f, 0xec, 0xaf, - 0xe8, 0x6d, 0xeb, 0xaf, 0xe8, 0x6f, 0xec, 0xaf, 0xe8, 0x6d, 0xeb, 0xaf, - 0xe8, 0x6f, 0xec, 0xaf, 0xe9, 0x6d, 0xeb, 0xaf, 0xe9, 0x6f, 0xec, 0xaf, - 0xe9, 0x6d, 0xeb, 0xaf, 0xe9, 0x6f, 0xec, 0xaf, 0xea, 0x6d, 0xeb, 0xaf, - 0xea, 0x6f, 0xec, 0xaf, 0xea, 0x6d, 0xeb, 0xaf, 0xea, 0x6f, 0xec, 0xaf, - 0xeb, 0x6d, 0xec, 0xaf, 0xeb, 0x6d, 0xec, 0xaf, 0xeb, 0x6d, 0xec, 0xaf, - 0xeb, 0x6d, 0xec, 0xaf, 0xeb, 0x6d, 0xec, 0xaf, 0xeb, 0x6d, 0xec, 0xaf, - 0xeb, 0x6d, 0xec, 0xaf, 0xeb, 0x6d, 0xec, 0xaf, 0xeb, 0x6d, 0xed, 0xaf, - 0xeb, 0x6d, 0xed, 0xaf, 0xeb, 0x6d, 0xed, 0xaf, 0xeb, 0x6d, 0xed, 0xac, - 0xec, 0x6d, 0xee, 0xaf, 0xeb, 0x6d, 0xee, 0xac, 0xec, 0x6d, 0xee, 0xaf, - 0xeb, 0x6d, 0xee, 0xac, 0xec, 0x6d, 0xef, 0xaf, 0xeb, 0x6d, 0xef, 0xaa, - 0xef, 0x6d, 0xef, 0xaa, 0xf0, 0x6d, 0xef, 0xaa, 0xef, 0x6d, 0xf0, 0xaa, - 0xf0, 0x6d, 0xf0, 0xaa, 0xf0, 0x6d, 0xf0, 0xaa, 0xf0, 0x6d, 0xf0, 0xaa, - 0xf0, 0x6d, 0xf1, 0xaa, 0xf1, 0x6d, 0xf1, 0xaa, 0xf1, 0x6d, 0xf1, 0xaa, - 0xf1, 0x6d, 0xf1, 0xaa, 0xf1, 0x6d, 0xf2, 0xaa, 0xf2, 0x6d, 0xf2, 0xaa, - 0xf3, 0x6d, 0xf2, 0xaa, 0xf3, 0x6d, 0xf2, 0xaa, 0xf3, 0x6d, 0xf2, 0xaa, - 0xf3, 0x6d, 0xf3, 0xaa, 0xf3, 0x6d, 0xf3, 0xaa, 0xf3, 0x6d, 0xf3, 0xaa, - 0xf3, 0x6d, 0xf3, 0xaa, 0xf3, 0x6d, 0xf4, 0xaa, 0xf4, 0x6d, 0xf4, 0xb1, - 0xf6, 0x6d, 0xf4, 0xaf, 0xf6, 0x6d, 0xf4, 0xb1, 0xf6, 0x6d, 0xf5, 0xaf, - 0xf6, 0x6d, 0xf5, 0xaf, 0xf7, 0x6d, 0xf5, 0xaf, 0xf6, 0x6d, 0xf5, 0xaf, - 0xf7, 0x6d, 0xf5, 0xaf, 0xf6, 0x6d, 0xf6, 0xaf, 0xf7, 0x6d, 0xf6, 0xaf, - 0xf6, 0x6d, 0xf6, 0xaf, 0xf7, 0x6d, 0xf6, 0xaf, 0xf6, 0x6c, 0xf6, 0xaf, - 0xf7, 0x6d, 0xf6, 0xaf, 0xf7, 0x6c, 0xf6, 0xaf, 0xf7, 0x6d, 0xf6, 0xaf, - 0xf7, 0x6c, 0xf6, 0xaf, 0xf8, 0x6d, 0xf6, 0xaf, 0xf8, 0x6c, 0xf6, 0xaf, - 0xf8, 0x6d, 0xf6, 0xaf, 0xf8, 0x6c, 0xfa, 0xaf, 0xf8, 0x6f, 0xfa, 0xaf, - 0xf9, 0x6d, 0xfa, 0xaf, 0xf9, 0x6f, 0xfa, 0xaf, 0xf9, 0x6d, 0xfa, 0xaf, - 0xf9, 0x6f, 0xfa, 0xaf, 0xfa, 0x6d, 0xfb, 0xaf, 0xfa, 0x6d, 0xfa, 0xaf, - 0xfa, 0x6d, 0xfb, 0xaf, 0xfa, 0x6d, 0xfa, 0xae, 0xfa, 0x6d, 0xfb, 0xaf, - 0xfa, 0x6d, 0xfb, 0xae, 0xfa, 0x6d, 0xfb, 0xaf, 0xfa, 0x6d, 0xfb, 0xae, - 0xfa, 0x6d, 0xfc, 0xaf, 0xfa, 0x6d, 0xfc, 0xae, 0xfa, 0x6d, 0xfc, 0xaf, - 0xfa, 0x6d, 0xfc, 0xae, 0xfa, 0x6d, 0xfc, 0xaf, 0xfa, 0x6d, 0xfd, 0xae, - 0xfa, 0x6d, 0xfd, 0xaf, 0xfa, 0x6d, 0xfd, 0xae, 0xfa, 0x6d, 0xfd, 0xaf, - 0xfa, 0x6d, 0xfe, 0xae, 0xfa, 0x6d, 0xfe, 0xaf, 0xfa, 0x6d, 0xfe, 0xae, - 0xfa, 0x6d, 0xfe, 0xac, 0xfb, 0x6d, 0xfe, 0xae, 0xfa, 0x6d, 0xff, 0xae, - 0xfa, 0x6d, 0xff, 0xae, 0xfa, 0x6d, 0x03, 0xb9, 0x93, 0x6d, 0x0a, 0xb6, - 0x93, 0x6d, 0x0f, 0xb4, 0x94, 0x6d, 0x14, 0xb6, 0x93, 0x6d, 0x17, 0xb4, - 0x94, 0x6d, 0x1b, 0xb6, 0x93, 0x6d, 0x1e, 0xb4, 0x94, 0x6d, 0x20, 0xb6, - 0x93, 0x6d, 0x23, 0xb4, 0x94, 0x6d, 0x25, 0xb6, 0x93, 0x6d, 0x27, 0xb4, - 0x94, 0x6d, 0x29, 0xb6, 0x93, 0x6d, 0x2b, 0xb4, 0x94, 0x6d, 0x2d, 0xb6, - 0x93, 0x6d, 0x2f, 0xb4, 0x94, 0x6d, 0x31, 0xb6, 0x93, 0x6d, 0x32, 0xb4, - 0x94, 0x6d, 0x34, 0xb6, 0x93, 0x6d, 0x35, 0xb4, 0x94, 0x6d, 0x37, 0xb6, - 0x93, 0x6d, 0x38, 0xb4, 0x94, 0x6d, 0x3a, 0xb6, 0x93, 0x6d, 0x3b, 0xb4, - 0x94, 0x6d, 0x3c, 0xb6, 0x93, 0x6d, 0x3e, 0xb4, 0x94, 0x6d, 0x3f, 0xb6, - 0x93, 0x6d, 0x40, 0xb4, 0x94, 0x6d, 0x42, 0xb6, 0x93, 0x6d, 0x43, 0xb4, - 0x94, 0x6d, 0x44, 0xb6, 0x93, 0x6d, 0x45, 0xb4, 0x94, 0x6d, 0x46, 0xb6, - 0x93, 0x6d, 0x47, 0xb4, 0x94, 0x6d, 0x48, 0xb6, 0x93, 0x6d, 0x49, 0xb4, - 0x94, 0x6d, 0x4a, 0xb6, 0x93, 0x6d, 0x4b, 0xb4, 0x94, 0x6d, 0x4c, 0xb6, - 0x93, 0x6d, 0x4d, 0xb4, 0x94, 0x6d, 0x4e, 0xb6, 0x93, 0x6d, 0x4f, 0xb4, - 0x94, 0x6d, 0x50, 0xb6, 0x93, 0x6d, 0x51, 0xb4, 0x94, 0x6d, 0x52, 0xb6, - 0x93, 0x6d, 0x53, 0xb4, 0x94, 0x6d, 0x54, 0xb6, 0x93, 0x6d, 0x55, 0xb4, - 0x94, 0x6d, 0x56, 0xb6, 0x93, 0x6d, 0x57, 0xb4, 0x94, 0x6d, 0x58, 0xb6, - 0x93, 0x6d, 0x58, 0xb4, 0x94, 0x6d, 0x59, 0xb6, 0x93, 0x6d, 0x5a, 0xb4, - 0x94, 0x6d, 0x5b, 0xb6, 0x93, 0x6d, 0x5c, 0xb4, 0x94, 0x6d, 0x5d, 0xb6, - 0x93, 0x6d, 0x5d, 0xb4, 0x94, 0x6d, 0x5e, 0xb6, 0x93, 0x6d, 0x5f, 0xb4, - 0x94, 0x6d, 0x60, 0xb6, 0x93, 0x6d, 0x60, 0xb4, 0x94, 0x6d, 0x61, 0xb6, - 0x93, 0x6d, 0x62, 0xb4, 0x94, 0x6d, 0x63, 0xb6, 0x93, 0x6d, 0x63, 0xb4, - 0x94, 0x6d, 0x64, 0xb6, 0x93, 0x6d, 0x65, 0xb4, 0x94, 0x6d, 0x66, 0xb2, - 0x94, 0x6d, 0x66, 0xb4, 0x94, 0x6d, 0x67, 0xb2, 0x94, 0x6d, 0x68, 0xb4, - 0x94, 0x6d, 0x68, 0xb2, 0x94, 0x6d, 0x69, 0xb4, 0x94, 0x6d, 0x6a, 0xb2, - 0x94, 0x6d, 0x6a, 0xb4, 0x94, 0x6d, 0x6b, 0xb2, 0x94, 0x6d, 0x6c, 0xb4, - 0x94, 0x6d, 0x6c, 0xb2, 0x94, 0x6d, 0x6d, 0xb4, 0x94, 0x6d, 0x6e, 0xb2, - 0x94, 0x6d, 0x6e, 0xb4, 0x94, 0x6d, 0x6f, 0xb2, 0x94, 0x6d, 0x70, 0xb4, - 0x94, 0x6d, 0x70, 0xb2, 0x94, 0x6d, 0x71, 0xb4, 0x94, 0x6d, 0x72, 0xb2, - 0x94, 0x6d, 0x72, 0xb4, 0x94, 0x6d, 0x73, 0xb2, 0x94, 0x6d, 0x73, 0xb4, - 0x94, 0x6d, 0x74, 0xb2, 0x94, 0x6d, 0x75, 0xb4, 0x94, 0x6d, 0x75, 0xb2, - 0x94, 0x6d, 0x76, 0xb4, 0x94, 0x6d, 0x76, 0xb2, 0x94, 0x6d, 0x77, 0xb4, - 0x94, 0x6d, 0x78, 0xb2, 0x94, 0x6d, 0x78, 0xb4, 0x94, 0x6d, 0x79, 0xb2, - 0x94, 0x6d, 0x79, 0xb4, 0x94, 0x6d, 0x7a, 0xb2, 0x94, 0x6d, 0x7a, 0xb4, - 0x94, 0x6d, 0x7b, 0xb2, 0x94, 0x6d, 0x7c, 0xb4, 0x94, 0x6d, 0x7c, 0xb2, - 0x94, 0x6d, 0x7d, 0xaf, 0x94, 0x6d, 0x7d, 0xb2, 0x94, 0x6d, 0x7e, 0xaf, - 0x94, 0x6d, 0x7e, 0xb2, 0x94, 0x6d, 0x7f, 0xaf, 0x94, 0x6d, 0x7f, 0xb2, - 0x94, 0x6d, 0x80, 0xaf, 0x94, 0x6d, 0x81, 0xb2, 0x94, 0x6d, 0x81, 0xaf, - 0x94, 0x6d, 0x82, 0xb2, 0x94, 0x6d, 0x82, 0xaf, 0x94, 0x6d, 0x83, 0xb2, - 0x94, 0x6d, 0x83, 0xaf, 0x94, 0x6d, 0x84, 0xb2, 0x94, 0x6d, 0x84, 0xaf, - 0x94, 0x6d, 0x85, 0xb2, 0x94, 0x6d, 0x85, 0xaf, 0x94, 0x6d, 0x86, 0xb2, - 0x94, 0x6d, 0x86, 0xaf, 0x94, 0x6d, 0x87, 0xb2, 0x94, 0x6d, 0x87, 0xaf, - 0x94, 0x6d, 0x88, 0xb2, 0x94, 0x6d, 0x88, 0xaf, 0x94, 0x6d, 0x89, 0xb2, - 0x94, 0x6d, 0x89, 0xaf, 0x94, 0x6d, 0x8a, 0xb2, 0x94, 0x6d, 0x8a, 0xaf, - 0x94, 0x6d, 0x8b, 0xb2, 0x94, 0x6d, 0x8b, 0xaf, 0x94, 0x6d, 0x8c, 0xb2, - 0x94, 0x6d, 0x8c, 0xaf, 0x94, 0x6d, 0x8d, 0xb2, 0x94, 0x6d, 0x8d, 0xaf, - 0x94, 0x6d, 0x8e, 0xaf, 0x95, 0x6d, 0x8e, 0xaf, 0x94, 0x6d, 0x8e, 0xaf, - 0x95, 0x6d, 0x8f, 0xaf, 0x94, 0x6d, 0x8f, 0xaf, 0x95, 0x6d, 0x90, 0xaf, - 0x94, 0x6d, 0x90, 0xaf, 0x95, 0x6d, 0x91, 0xaf, 0x94, 0x6d, 0x91, 0xaf, - 0x95, 0x6d, 0x92, 0xaf, 0x94, 0x6d, 0x92, 0xaf, 0x95, 0x6d, 0x93, 0xaf, - 0x94, 0x6d, 0x93, 0xaf, 0x95, 0x6d, 0x94, 0xaf, 0x94, 0x6d, 0x94, 0xaf, - 0x95, 0x6d, 0x94, 0xaf, 0x94, 0x6c, 0x94, 0xaf, 0x95, 0x6d, 0x94, 0xaf, - 0x95, 0x6c, 0x97, 0xaf, 0x96, 0x6d, 0x97, 0xaf, 0x96, 0x6d, 0x97, 0xaf, - 0x96, 0x6d, 0x97, 0xaf, 0x96, 0x6d, 0x98, 0xaf, 0x96, 0x6d, 0x98, 0xaf, - 0x96, 0x6d, 0x98, 0xae, 0x99, 0x6d, 0x99, 0xae, 0x99, 0x6d, 0x99, 0xae, - 0x99, 0x6d, 0x9a, 0xae, 0x9a, 0x6d, 0x9a, 0xae, 0x9a, 0x6d, 0x9a, 0xae, - 0x9a, 0x6d, 0x9b, 0xae, 0x9b, 0x6d, 0x9b, 0xae, 0x9b, 0x6d, 0x9c, 0xae, - 0x9c, 0x6d, 0x9c, 0xae, 0x9c, 0x6d, 0x9d, 0xae, 0x9d, 0x6d, 0x9d, 0xae, - 0x9e, 0x6d, 0x9d, 0xae, 0x9d, 0x6d, 0x9e, 0xae, 0x9e, 0x6d, 0x9e, 0xae, - 0x9e, 0x6d, 0x9f, 0xae, 0x9f, 0x6d, 0x9f, 0xae, 0x9f, 0x6d, 0x9f, 0xae, - 0x9f, 0x6d, 0xa0, 0xae, 0xa0, 0x6d, 0xa0, 0xae, 0xa0, 0x6d, 0xa1, 0xae, - 0xa1, 0x6d, 0xa1, 0xae, 0xa1, 0x6d, 0xa1, 0xaf, 0xa2, 0x6d, 0xa2, 0xaf, - 0xa2, 0x6c, 0xa2, 0xaf, 0xa2, 0x6c, 0xa3, 0xaf, 0xa3, 0x6c, 0xa3, 0xaf, - 0xa3, 0x6c, 0xa3, 0xaf, 0xa3, 0x6c, 0xa4, 0xaf, 0xa4, 0x6c, 0xa4, 0xaf, - 0xa4, 0x6c, 0xa5, 0xaf, 0xa5, 0x6c, 0xa5, 0xaf, 0xa5, 0x6c, 0xa5, 0xaf, - 0xa5, 0x6c, 0xa6, 0xaf, 0xa5, 0x6d, 0xa6, 0xb0, 0xa6, 0x6d, 0xa6, 0xb0, - 0xa6, 0x6d, 0xa7, 0xb0, 0xa7, 0x6d, 0xa7, 0xb0, 0xa7, 0x6d, 0xa8, 0xb0, - 0xa8, 0x6d, 0xa8, 0xb0, 0xa8, 0x6d, 0xa8, 0xb0, 0xa8, 0x6d, 0xa9, 0xb0, - 0xa9, 0x6d, 0xa9, 0xb0, 0xa9, 0x6d, 0xaa, 0xb0, 0xaa, 0x6d, 0xaa, 0xb0, - 0xa9, 0x6d, 0xaa, 0xb0, 0xaa, 0x6d, 0xab, 0xb0, 0xab, 0x6d, 0xab, 0xb0, - 0xab, 0x6d, 0xab, 0xb0, 0xab, 0x6d, 0xac, 0xb0, 0xac, 0x6d, 0xac, 0xb0, - 0xac, 0x6d, 0xac, 0xb0, 0xac, 0x6d, 0xad, 0xb0, 0xad, 0x6d, 0xad, 0xb0, - 0xad, 0x6d, 0xae, 0xb0, 0xae, 0x6d, 0xae, 0xb0, 0xad, 0x6d, 0xae, 0xb0, - 0xae, 0x6d, 0xaf, 0xb0, 0xad, 0x6d, 0xaf, 0xb0, 0xae, 0x6d, 0xaf, 0xb1, - 0xaf, 0x6d, 0xb0, 0xb1, 0xb0, 0x6d, 0xb0, 0xb1, 0xb0, 0x6d, 0xb0, 0xb1, - 0xb0, 0x6d, 0xb1, 0xb1, 0xb1, 0x6d, 0xb1, 0xb1, 0xb1, 0x6d, 0xb2, 0xb1, - 0xb2, 0x6d, 0xb2, 0xb1, 0xb1, 0x6d, 0xb2, 0xb1, 0xb2, 0x6d, 0xb3, 0xb1, - 0xb1, 0x6d, 0xb3, 0xb1, 0xb2, 0x6d, 0xb3, 0xb2, 0xb3, 0x6d, 0xb4, 0xb2, - 0xb4, 0x6d, 0xb4, 0xb2, 0xb4, 0x6d, 0xb4, 0xb2, 0xb4, 0x6d, 0xb5, 0xb2, - 0xb5, 0x6d, 0xb5, 0xb2, 0xb5, 0x6d, 0xb5, 0xb2, 0xb5, 0x6d, 0xb6, 0xb2, - 0xb5, 0x6d, 0xb6, 0xb2, 0xb5, 0x6d, 0xb6, 0xb2, 0xb5, 0x6d, 0xb7, 0xb2, - 0xb5, 0x6d, 0xb7, 0xb3, 0xb7, 0x6d, 0xb7, 0xb3, 0xb7, 0x6d, 0xb8, 0xb3, - 0xb8, 0x6d, 0xb8, 0xb3, 0xb8, 0x6d, 0xb8, 0xb3, 0xb8, 0x6d, 0xb9, 0xb3, - 0xb9, 0x6d, 0xb9, 0xb3, 0xb9, 0x6d, 0xb9, 0xb3, 0xb9, 0x6d, 0xba, 0xb3, - 0xb9, 0x6d, 0xba, 0xb3, 0xb9, 0x6d, 0xba, 0xb3, 0xb9, 0x6d, 0xbb, 0xb3, - 0xb9, 0x6d, 0xbb, 0xb3, 0xb9, 0x6d, 0xbb, 0xb3, 0xb9, 0x6d, 0xbc, 0xb3, - 0xbc, 0x6d, 0xbc, 0xb3, 0xbc, 0x6d, 0xbc, 0xb3, 0xbc, 0x6d, 0xbd, 0xb3, - 0xbd, 0x6d, 0xbd, 0xb3, 0xbd, 0x6d, 0xbd, 0xb3, 0xbd, 0x6d, 0xbe, 0xb3, - 0xbd, 0x6d, 0xbe, 0xb3, 0xbd, 0x6d, 0xbe, 0xb3, 0xbd, 0x6d, 0xbf, 0xb3, - 0xbd, 0x6d, 0xbf, 0xb3, 0xbd, 0x6d, 0xbf, 0xb4, 0xbf, 0x6d, 0xc0, 0xb4, - 0xc0, 0x6d, 0xc0, 0xb4, 0xc0, 0x6d, 0xc0, 0xb4, 0xc0, 0x6d, 0xc1, 0xb4, - 0xc1, 0x6d, 0xc1, 0xb4, 0xc0, 0x6d, 0xc1, 0xb4, 0xc1, 0x6d, 0xc1, 0xb4, - 0xc0, 0x6d, 0xc2, 0xb4, 0xc1, 0x6d, 0xc2, 0xb4, 0xc0, 0x6d, 0xc2, 0xb4, - 0xc1, 0x6d, 0xc3, 0xb5, 0xc3, 0x6d, 0xc3, 0xb5, 0xc3, 0x6d, 0xc3, 0xb5, - 0xc3, 0x6d, 0xc4, 0xb5, 0xc4, 0x6d, 0xc4, 0xb5, 0xc4, 0x6d, 0xc4, 0xb5, - 0xc4, 0x6d, 0xc5, 0xb5, 0xc4, 0x6d, 0xc5, 0xb5, 0xc4, 0x6d, 0xc5, 0xb5, - 0xc4, 0x6d, 0xc6, 0xb5, 0xc4, 0x6d, 0xc6, 0xb5, 0xc4, 0x6d, 0xc6, 0xb5, - 0xc4, 0x6d, 0xc6, 0xb5, 0xc4, 0x6d, 0xc7, 0xb5, 0xc7, 0x6d, 0xc7, 0xb5, - 0xc7, 0x6d, 0xc7, 0xb5, 0xc7, 0x6d, 0xc8, 0xb5, 0xc7, 0x6d, 0xc8, 0xb5, - 0xc7, 0x6d, 0xc8, 0xb5, 0xc7, 0x6d, 0xc9, 0xb5, 0xc7, 0x6d, 0xc9, 0xb5, - 0xc7, 0x6d, 0xc9, 0xb5, 0xc7, 0x6d, 0xc9, 0xb5, 0xc7, 0x6d, 0xca, 0xb5, - 0xc7, 0x6d, 0xca, 0xb1, 0xcf, 0x6d, 0xca, 0xaf, 0xd0, 0x6d, 0xcb, 0xb1, - 0xcf, 0x6d, 0xcb, 0xaf, 0xd0, 0x6d, 0xcb, 0xb1, 0xcf, 0x6d, 0xcc, 0xaf, - 0xd0, 0x6d, 0xcc, 0xb1, 0xcf, 0x6d, 0xcc, 0xaf, 0xd0, 0x6d, 0xcc, 0xb1, - 0xcf, 0x6d, 0xcd, 0xaf, 0xd0, 0x6d, 0xcd, 0xb1, 0xcf, 0x6d, 0xcd, 0xaf, - 0xd0, 0x6d, 0xce, 0xaf, 0xd0, 0x6d, 0xce, 0xaf, 0xd0, 0x6d, 0xce, 0xaf, - 0xd0, 0x6d, 0xce, 0xaf, 0xd0, 0x6d, 0xcf, 0xaf, 0xd0, 0x6d, 0xcf, 0xaf, - 0xd0, 0x6d, 0xcf, 0xaf, 0xd0, 0x6d, 0xd0, 0xaf, 0xd0, 0x6c, 0xcf, 0xaf, - 0xd0, 0x6d, 0xd0, 0xaf, 0xd0, 0x6c, 0xcf, 0xaf, 0xd0, 0x6d, 0xd0, 0xaf, - 0xd1, 0x6c, 0xcf, 0xaf, 0xd1, 0x6d, 0xd0, 0xaf, 0xd1, 0x6c, 0xcf, 0xaf, - 0xd2, 0x6d, 0xd0, 0xaf, 0xd2, 0x6c, 0xd0, 0xaf, 0xd2, 0x6a, 0xd0, 0xaf, - 0xd2, 0x6c, 0xd0, 0xaf, 0xd3, 0x6a, 0xd0, 0xaf, 0xd3, 0x6c, 0xd0, 0xaf, - 0xd3, 0x6a, 0xd0, 0xaf, 0xd4, 0x6c, 0xd0, 0xaf, 0xd4, 0x6a, 0xd0, 0xaf, - 0xd4, 0x6c, 0xd0, 0xaf, 0xd4, 0x6a, 0xd0, 0xaf, 0xd5, 0x6c, 0xd0, 0xaf, - 0xd5, 0x6a, 0xd0, 0xaf, 0xd5, 0x6c, 0xd0, 0xaf, 0xd6, 0x6a, 0xd0, 0xaf, - 0xd6, 0x6c, 0xd0, 0xaf, 0xd6, 0x6a, 0xd0, 0xaf, 0xd6, 0x6c, 0xd0, 0xaf, - 0xd7, 0x6a, 0xd0, 0xaf, 0xd7, 0x6c, 0xd0, 0xaf, 0xd7, 0x6a, 0xd0, 0xaf, - 0xd7, 0x6c, 0xd0, 0xaf, 0xd8, 0x6a, 0xd0, 0xaf, 0xd8, 0x6c, 0xd0, 0xaf, - 0xd8, 0x6a, 0xd0, 0xaf, 0xd9, 0x6c, 0xd0, 0xaf, 0xd9, 0x6a, 0xd0, 0xaf, - 0xd9, 0x6c, 0xd0, 0xaf, 0xd9, 0x6a, 0xd0, 0xaf, 0xda, 0x6c, 0xd0, 0xaf, - 0xda, 0x6a, 0xd0, 0xaf, 0xda, 0x67, 0xd0, 0xaf, 0xda, 0x6a, 0xd0, 0xaf, - 0xdb, 0x67, 0xd0, 0xaf, 0xdb, 0x6a, 0xd0, 0xaf, 0xdb, 0x67, 0xd0, 0xaf, - 0xdb, 0x6a, 0xd0, 0xaf, 0xdc, 0x67, 0xd0, 0xaf, 0xdc, 0x6a, 0xd0, 0xaf, - 0xdc, 0x67, 0xd0, 0xaf, 0xdd, 0x6a, 0xd0, 0xaf, 0xdd, 0x67, 0xd0, 0xaf, - 0xdd, 0x6a, 0xd0, 0xaf, 0xdd, 0x67, 0xd0, 0xaf, 0xde, 0x6a, 0xd0, 0xaf, - 0xde, 0x67, 0xeb, 0xaf, 0xde, 0x6f, 0xeb, 0xaf, 0xde, 0x72, 0xeb, 0xaf, - 0xdf, 0x6f, 0xeb, 0xaf, 0xdf, 0x72, 0xeb, 0xaf, 0xdf, 0x6f, 0xeb, 0xaf, - 0xdf, 0x72, 0xeb, 0xaf, 0xe0, 0x6f, 0xeb, 0xaf, 0xe0, 0x72, 0xeb, 0xaf, - 0xe0, 0x6f, 0xeb, 0xaf, 0xe1, 0x72, 0xeb, 0xaf, 0xe1, 0x6f, 0xeb, 0xaf, - 0xe1, 0x72, 0xeb, 0xaf, 0xe1, 0x6f, 0xeb, 0xaf, 0xe2, 0x72, 0xeb, 0xaf, - 0xe2, 0x6f, 0xeb, 0xaf, 0xe2, 0x72, 0xeb, 0xaf, 0xe2, 0x6f, 0xeb, 0xaf, - 0xe3, 0x72, 0xeb, 0xaf, 0xe3, 0x6f, 0xeb, 0xaf, 0xe3, 0x72, 0xeb, 0xaf, - 0xe3, 0x6f, 0xeb, 0xaf, 0xe4, 0x72, 0xeb, 0xaf, 0xe4, 0x6f, 0xeb, 0xaf, - 0xe4, 0x72, 0xeb, 0xaf, 0xe4, 0x6f, 0xeb, 0xaf, 0xe5, 0x72, 0xeb, 0xaf, - 0xe5, 0x6f, 0xeb, 0xaf, 0xe5, 0x72, 0xeb, 0xaf, 0xe5, 0x6f, 0xec, 0xaf, - 0xe6, 0x6d, 0xeb, 0xaf, 0xe6, 0x6f, 0xec, 0xaf, 0xe6, 0x6d, 0xeb, 0xaf, - 0xe6, 0x6f, 0xec, 0xaf, 0xe7, 0x6d, 0xeb, 0xaf, 0xe7, 0x6f, 0xec, 0xaf, - 0xe7, 0x6d, 0xeb, 0xaf, 0xe7, 0x6f, 0xec, 0xaf, 0xe8, 0x6d, 0xeb, 0xaf, - 0xe8, 0x6f, 0xec, 0xaf, 0xe8, 0x6d, 0xeb, 0xaf, 0xe8, 0x6f, 0xec, 0xaf, - 0xe9, 0x6d, 0xeb, 0xaf, 0xe9, 0x6f, 0xec, 0xaf, 0xe9, 0x6d, 0xeb, 0xaf, - 0xe9, 0x6f, 0xec, 0xaf, 0xea, 0x6d, 0xeb, 0xaf, 0xea, 0x6f, 0xec, 0xaf, - 0xea, 0x6d, 0xeb, 0xaf, 0xea, 0x6f, 0xec, 0xaf, 0xeb, 0x6d, 0xec, 0xaf, - 0xeb, 0x6d, 0xec, 0xaf, 0xeb, 0x6d, 0xec, 0xaf, 0xeb, 0x6d, 0xec, 0xaf, - 0xeb, 0x6d, 0xec, 0xaf, 0xeb, 0x6d, 0xec, 0xaf, 0xeb, 0x6d, 0xec, 0xaf, - 0xeb, 0x6d, 0xec, 0xaf, 0xeb, 0x6d, 0xed, 0xaf, 0xeb, 0x6d, 0xed, 0xaf, - 0xeb, 0x6d, 0xed, 0xaf, 0xeb, 0x6d, 0xed, 0xad, 0xec, 0x6d, 0xee, 0xaf, - 0xeb, 0x6d, 0xee, 0xad, 0xec, 0x6d, 0xee, 0xaf, 0xeb, 0x6d, 0xee, 0xad, - 0xec, 0x6d, 0xef, 0xaf, 0xeb, 0x6d, 0xef, 0xad, 0xec, 0x6d, 0xef, 0xa9, - 0xef, 0x6d, 0xef, 0xa9, 0xef, 0x6d, 0xf0, 0xa9, 0xf0, 0x6d, 0xf0, 0xaa, - 0xf1, 0x6d, 0xf0, 0xaa, 0xf2, 0x6d, 0xf0, 0xaa, 0xf1, 0x6d, 0xf1, 0xaa, - 0xf2, 0x6d, 0xf1, 0xaa, 0xf1, 0x6d, 0xf1, 0xaa, 0xf2, 0x6d, 0xf1, 0xaa, - 0xf1, 0x6d, 0xf2, 0xaa, 0xf2, 0x6d, 0xf2, 0xaa, 0xf2, 0x6d, 0xf2, 0xaa, - 0xf2, 0x6d, 0xf2, 0xaa, 0xf2, 0x6d, 0xf2, 0xaa, 0xf2, 0x6d, 0xf3, 0xaa, - 0xf3, 0x6d, 0xf3, 0xaa, 0xf3, 0x6d, 0xf3, 0xaa, 0xf3, 0x6d, 0xf3, 0xab, - 0xf5, 0x6d, 0xf4, 0xaf, 0xf6, 0x6d, 0xf4, 0xb1, 0xf6, 0x6d, 0xf4, 0xaf, - 0xf6, 0x6d, 0xf4, 0xb1, 0xf6, 0x6d, 0xf5, 0xaf, 0xf6, 0x6d, 0xf5, 0xaf, - 0xf7, 0x6d, 0xf5, 0xaf, 0xf6, 0x6d, 0xf5, 0xaf, 0xf7, 0x6d, 0xf5, 0xaf, - 0xf6, 0x6d, 0xf6, 0xaf, 0xf7, 0x6d, 0xf6, 0xaf, 0xf6, 0x6d, 0xf6, 0xaf, - 0xf7, 0x6d, 0xf6, 0xaf, 0xf6, 0x6d, 0xf6, 0xaf, 0xf7, 0x6d, 0xf6, 0xaf, - 0xf7, 0x6d, 0xf6, 0xaf, 0xf7, 0x6d, 0xf6, 0xaf, 0xf7, 0x6b, 0xf6, 0xaf, - 0xf8, 0x6d, 0xf6, 0xaf, 0xf8, 0x6b, 0xf6, 0xaf, 0xf8, 0x6d, 0xf6, 0xaf, - 0xf8, 0x6b, 0xfa, 0xaf, 0xf8, 0x6f, 0xfa, 0xaf, 0xf9, 0x6d, 0xfa, 0xaf, - 0xf9, 0x6f, 0xfa, 0xaf, 0xf9, 0x6d, 0xfa, 0xaf, 0xf9, 0x6f, 0xfa, 0xaf, - 0xfa, 0x6d, 0xfb, 0xaf, 0xfa, 0x6d, 0xfa, 0xaf, 0xfa, 0x6d, 0xfb, 0xaf, - 0xfa, 0x6d, 0xfa, 0xaf, 0xfa, 0x6d, 0xfb, 0xaf, 0xfa, 0x6d, 0xfb, 0xaf, - 0xfa, 0x6d, 0xfb, 0xaf, 0xfa, 0x6d, 0xfb, 0xae, 0xfa, 0x6d, 0xfc, 0xaf, - 0xfa, 0x6d, 0xfc, 0xae, 0xfa, 0x6d, 0xfc, 0xaf, 0xfa, 0x6d, 0xfc, 0xae, - 0xfa, 0x6d, 0xfc, 0xaf, 0xfa, 0x6d, 0xfd, 0xae, 0xfa, 0x6d, 0xfd, 0xaf, - 0xfa, 0x6d, 0xfd, 0xae, 0xfa, 0x6d, 0xfd, 0xaf, 0xfa, 0x6d, 0xfe, 0xae, - 0xfa, 0x6d, 0xfe, 0xaf, 0xfa, 0x6d, 0xfe, 0xae, 0xfa, 0x6d, 0xfe, 0xaf, - 0xfa, 0x6d, 0xfe, 0xae, 0xfa, 0x6d, 0xff, 0xae, 0xfa, 0x6d, 0xff, 0xae, - 0xfa, 0x6d, 0x03, 0xb8, 0x93, 0x6e, 0x0a, 0xb8, 0x93, 0x6e, 0x0f, 0xb8, - 0x93, 0x6e, 0x14, 0xb6, 0x93, 0x6e, 0x17, 0xb8, 0x93, 0x6e, 0x1b, 0xb6, - 0x93, 0x6e, 0x1e, 0xb8, 0x93, 0x6e, 0x20, 0xb6, 0x93, 0x6e, 0x23, 0xb8, - 0x93, 0x6e, 0x25, 0xb6, 0x93, 0x6e, 0x27, 0xb8, 0x93, 0x6e, 0x29, 0xb6, - 0x93, 0x6e, 0x2b, 0xb8, 0x93, 0x6e, 0x2d, 0xb6, 0x93, 0x6e, 0x2f, 0xb8, - 0x93, 0x6e, 0x31, 0xb6, 0x93, 0x6e, 0x32, 0xb8, 0x93, 0x6e, 0x34, 0xb6, - 0x93, 0x6e, 0x35, 0xb4, 0x94, 0x6e, 0x37, 0xb6, 0x93, 0x6e, 0x38, 0xb4, - 0x94, 0x6e, 0x3a, 0xb6, 0x93, 0x6e, 0x3b, 0xb4, 0x94, 0x6e, 0x3c, 0xb6, - 0x93, 0x6e, 0x3e, 0xb4, 0x94, 0x6e, 0x3f, 0xb6, 0x93, 0x6e, 0x40, 0xb4, - 0x94, 0x6e, 0x42, 0xb6, 0x93, 0x6e, 0x43, 0xb4, 0x94, 0x6e, 0x44, 0xb6, - 0x93, 0x6e, 0x45, 0xb4, 0x94, 0x6e, 0x46, 0xb6, 0x93, 0x6e, 0x47, 0xb4, - 0x94, 0x6e, 0x48, 0xb6, 0x93, 0x6e, 0x49, 0xb4, 0x94, 0x6e, 0x4a, 0xb6, - 0x93, 0x6e, 0x4b, 0xb4, 0x94, 0x6e, 0x4c, 0xb6, 0x93, 0x6e, 0x4d, 0xb4, - 0x94, 0x6e, 0x4e, 0xb6, 0x93, 0x6e, 0x4f, 0xb4, 0x94, 0x6e, 0x50, 0xb6, - 0x93, 0x6e, 0x51, 0xb4, 0x94, 0x6e, 0x52, 0xb6, 0x93, 0x6e, 0x53, 0xb4, - 0x94, 0x6e, 0x54, 0xb6, 0x93, 0x6e, 0x55, 0xb4, 0x94, 0x6e, 0x56, 0xb6, - 0x93, 0x6e, 0x57, 0xb4, 0x94, 0x6e, 0x58, 0xb6, 0x93, 0x6e, 0x58, 0xb4, - 0x94, 0x6e, 0x59, 0xb6, 0x93, 0x6e, 0x5a, 0xb4, 0x94, 0x6e, 0x5b, 0xb6, - 0x93, 0x6e, 0x5c, 0xb4, 0x94, 0x6e, 0x5d, 0xb6, 0x93, 0x6e, 0x5d, 0xb4, - 0x94, 0x6e, 0x5e, 0xb6, 0x93, 0x6e, 0x5f, 0xb4, 0x94, 0x6e, 0x60, 0xb2, - 0x94, 0x6e, 0x60, 0xb4, 0x94, 0x6e, 0x61, 0xb2, 0x94, 0x6e, 0x62, 0xb4, - 0x94, 0x6e, 0x63, 0xb2, 0x94, 0x6e, 0x63, 0xb4, 0x94, 0x6e, 0x64, 0xb2, - 0x94, 0x6e, 0x65, 0xb4, 0x94, 0x6e, 0x66, 0xb2, 0x94, 0x6e, 0x66, 0xb4, - 0x94, 0x6e, 0x67, 0xb2, 0x94, 0x6e, 0x68, 0xb4, 0x94, 0x6e, 0x68, 0xb2, - 0x94, 0x6e, 0x69, 0xb4, 0x94, 0x6e, 0x6a, 0xb2, 0x94, 0x6e, 0x6a, 0xb4, - 0x94, 0x6e, 0x6b, 0xb2, 0x94, 0x6e, 0x6c, 0xb4, 0x94, 0x6e, 0x6c, 0xb2, - 0x94, 0x6e, 0x6d, 0xb4, 0x94, 0x6e, 0x6e, 0xb2, 0x94, 0x6e, 0x6e, 0xb4, - 0x94, 0x6e, 0x6f, 0xb2, 0x94, 0x6e, 0x70, 0xb4, 0x94, 0x6e, 0x70, 0xb2, - 0x94, 0x6e, 0x71, 0xb4, 0x94, 0x6e, 0x72, 0xb2, 0x94, 0x6e, 0x72, 0xb4, - 0x94, 0x6e, 0x73, 0xb2, 0x94, 0x6e, 0x73, 0xb4, 0x94, 0x6e, 0x74, 0xb2, - 0x94, 0x6e, 0x75, 0xb4, 0x94, 0x6e, 0x75, 0xb2, 0x94, 0x6e, 0x76, 0xb4, - 0x94, 0x6e, 0x76, 0xb2, 0x94, 0x6e, 0x77, 0xb4, 0x94, 0x6e, 0x78, 0xb2, - 0x94, 0x6e, 0x78, 0xb4, 0x94, 0x6e, 0x79, 0xb2, 0x94, 0x6e, 0x79, 0xb4, - 0x94, 0x6e, 0x7a, 0xb2, 0x94, 0x6e, 0x7a, 0xb4, 0x94, 0x6e, 0x7b, 0xb2, - 0x94, 0x6e, 0x7c, 0xb4, 0x94, 0x6e, 0x7c, 0xb2, 0x94, 0x6e, 0x7d, 0xb4, - 0x94, 0x6e, 0x7d, 0xb2, 0x94, 0x6e, 0x7e, 0xb4, 0x94, 0x6e, 0x7e, 0xb2, - 0x94, 0x6e, 0x7f, 0xb4, 0x94, 0x6e, 0x7f, 0xb2, 0x94, 0x6e, 0x80, 0xb4, - 0x94, 0x6e, 0x81, 0xb2, 0x94, 0x6e, 0x81, 0xb4, 0x94, 0x6e, 0x82, 0xb2, - 0x94, 0x6e, 0x82, 0xb4, 0x94, 0x6e, 0x83, 0xb2, 0x94, 0x6e, 0x83, 0xaf, - 0x94, 0x6e, 0x84, 0xb2, 0x94, 0x6e, 0x84, 0xaf, 0x94, 0x6e, 0x85, 0xb2, - 0x94, 0x6e, 0x85, 0xaf, 0x94, 0x6e, 0x86, 0xb2, 0x94, 0x6e, 0x86, 0xaf, - 0x94, 0x6e, 0x87, 0xb2, 0x94, 0x6e, 0x87, 0xaf, 0x94, 0x6e, 0x88, 0xb2, - 0x94, 0x6e, 0x88, 0xaf, 0x94, 0x6e, 0x89, 0xb2, 0x94, 0x6e, 0x89, 0xaf, - 0x94, 0x6e, 0x8a, 0xb2, 0x94, 0x6e, 0x8a, 0xaf, 0x94, 0x6e, 0x8b, 0xb2, - 0x94, 0x6e, 0x8b, 0xaf, 0x94, 0x6e, 0x8c, 0xb2, 0x94, 0x6e, 0x8c, 0xaf, - 0x94, 0x6e, 0x8d, 0xb2, 0x94, 0x6e, 0x8d, 0xaf, 0x94, 0x6e, 0x8e, 0xb2, - 0x94, 0x6e, 0x8e, 0xaf, 0x94, 0x6e, 0x8e, 0xb2, 0x94, 0x6e, 0x8f, 0xaf, - 0x94, 0x6e, 0x8f, 0xb2, 0x94, 0x6e, 0x90, 0xaf, 0x94, 0x6e, 0x90, 0xb2, - 0x94, 0x6e, 0x91, 0xaf, 0x94, 0x6e, 0x91, 0xaf, 0x95, 0x6e, 0x92, 0xaf, - 0x94, 0x6e, 0x92, 0xaf, 0x95, 0x6e, 0x93, 0xaf, 0x94, 0x6e, 0x93, 0xaf, - 0x95, 0x6e, 0x94, 0xaf, 0x94, 0x6e, 0x94, 0xaf, 0x95, 0x6e, 0x94, 0xaf, - 0x94, 0x6d, 0x94, 0xaf, 0x95, 0x6e, 0x94, 0xaf, 0x95, 0x6d, 0x97, 0xaf, - 0x96, 0x6e, 0x97, 0xaf, 0x96, 0x6e, 0x97, 0xaf, 0x96, 0x6e, 0x97, 0xaf, - 0x96, 0x6e, 0x98, 0xaf, 0x96, 0x6e, 0x98, 0xaf, 0x96, 0x6e, 0x98, 0xad, - 0x98, 0x6e, 0x99, 0xad, 0x99, 0x6e, 0x99, 0xae, 0x9b, 0x6e, 0x9a, 0xae, - 0x9b, 0x6e, 0x9a, 0xae, 0x9b, 0x6e, 0x9a, 0xae, 0x9b, 0x6e, 0x9b, 0xae, - 0x9b, 0x6e, 0x9b, 0xae, 0x9b, 0x6e, 0x9c, 0xae, 0x9c, 0x6e, 0x9c, 0xae, - 0x9c, 0x6e, 0x9d, 0xae, 0x9d, 0x6e, 0x9d, 0xae, 0x9d, 0x6e, 0x9d, 0xae, - 0x9d, 0x6e, 0x9e, 0xae, 0x9e, 0x6e, 0x9e, 0xae, 0x9e, 0x6e, 0x9f, 0xae, - 0x9f, 0x6e, 0x9f, 0xaf, 0xa0, 0x6e, 0x9f, 0xaf, 0xa0, 0x6e, 0xa0, 0xaf, - 0xa0, 0x6e, 0xa0, 0xaf, 0xa0, 0x6e, 0xa1, 0xaf, 0xa1, 0x6e, 0xa1, 0xaf, - 0xa1, 0x6e, 0xa1, 0xaf, 0xa1, 0x6e, 0xa2, 0xaf, 0xa2, 0x6e, 0xa2, 0xaf, - 0xa2, 0x6e, 0xa3, 0xaf, 0xa3, 0x6e, 0xa3, 0xaf, 0xa3, 0x6e, 0xa3, 0xaf, - 0xa4, 0x6e, 0xa4, 0xaf, 0xa5, 0x6e, 0xa4, 0xaf, 0xa4, 0x6d, 0xa5, 0xaf, - 0xa5, 0x6d, 0xa5, 0xaf, 0xa5, 0x6d, 0xa5, 0xaf, 0xa5, 0x6d, 0xa6, 0xaf, - 0xa6, 0x6d, 0xa6, 0xaf, 0xa6, 0x6d, 0xa6, 0xaf, 0xa6, 0x6d, 0xa7, 0xaf, - 0xa7, 0x6d, 0xa7, 0xaf, 0xa7, 0x6d, 0xa8, 0xaf, 0xa8, 0x6d, 0xa8, 0xaf, - 0xa7, 0x6e, 0xa8, 0xb0, 0xa8, 0x6e, 0xa9, 0xb0, 0xa9, 0x6e, 0xa9, 0xb0, - 0xa9, 0x6e, 0xaa, 0xb0, 0xaa, 0x6e, 0xaa, 0xb0, 0xaa, 0x6e, 0xaa, 0xb0, - 0xaa, 0x6e, 0xab, 0xb0, 0xab, 0x6e, 0xab, 0xb0, 0xab, 0x6e, 0xab, 0xb0, - 0xab, 0x6e, 0xac, 0xb0, 0xac, 0x6e, 0xac, 0xb0, 0xab, 0x6e, 0xac, 0xb0, - 0xac, 0x6e, 0xad, 0xb1, 0xad, 0x6e, 0xad, 0xb1, 0xad, 0x6e, 0xae, 0xb1, - 0xae, 0x6e, 0xae, 0xb1, 0xae, 0x6e, 0xae, 0xb1, 0xae, 0x6e, 0xaf, 0xb1, - 0xaf, 0x6e, 0xaf, 0xb1, 0xaf, 0x6e, 0xaf, 0xb1, 0xaf, 0x6e, 0xb0, 0xb1, - 0xb0, 0x6e, 0xb0, 0xb1, 0xaf, 0x6e, 0xb0, 0xb1, 0xb0, 0x6e, 0xb1, 0xb1, - 0xaf, 0x6e, 0xb1, 0xb1, 0xb0, 0x6e, 0xb2, 0xb2, 0xb2, 0x6e, 0xb2, 0xb2, - 0xb2, 0x6e, 0xb2, 0xb2, 0xb2, 0x6e, 0xb3, 0xb2, 0xb3, 0x6e, 0xb3, 0xb2, - 0xb3, 0x6e, 0xb3, 0xb2, 0xb3, 0x6e, 0xb4, 0xb2, 0xb4, 0x6e, 0xb4, 0xb2, - 0xb3, 0x6e, 0xb4, 0xb2, 0xb4, 0x6e, 0xb5, 0xb2, 0xb3, 0x6e, 0xb5, 0xb2, - 0xb4, 0x6e, 0xb5, 0xb2, 0xb5, 0x6e, 0xb6, 0xb2, 0xb6, 0x6e, 0xb6, 0xb2, - 0xb6, 0x6e, 0xb6, 0xb2, 0xb6, 0x6e, 0xb7, 0xb2, 0xb7, 0x6e, 0xb7, 0xb2, - 0xb7, 0x6e, 0xb7, 0xb2, 0xb7, 0x6e, 0xb8, 0xb2, 0xb7, 0x6e, 0xb8, 0xb2, - 0xb7, 0x6e, 0xb8, 0xb2, 0xb7, 0x6e, 0xb9, 0xb2, 0xb7, 0x6e, 0xb9, 0xb3, - 0xb9, 0x6e, 0xb9, 0xb3, 0xb9, 0x6e, 0xba, 0xb3, 0xba, 0x6e, 0xba, 0xb3, - 0xba, 0x6e, 0xba, 0xb3, 0xba, 0x6e, 0xbb, 0xb3, 0xbb, 0x6e, 0xbb, 0xb3, - 0xbb, 0x6e, 0xbb, 0xb3, 0xbb, 0x6e, 0xbc, 0xb3, 0xbb, 0x6e, 0xbc, 0xb3, - 0xbb, 0x6e, 0xbc, 0xb3, 0xbb, 0x6e, 0xbd, 0xb3, 0xbb, 0x6e, 0xbd, 0xb3, - 0xbb, 0x6e, 0xbd, 0xb4, 0xbd, 0x6e, 0xbe, 0xb4, 0xbe, 0x6e, 0xbe, 0xb4, - 0xbe, 0x6e, 0xbe, 0xb4, 0xbe, 0x6e, 0xbf, 0xb4, 0xbf, 0x6e, 0xbf, 0xb4, - 0xbe, 0x6e, 0xbf, 0xb4, 0xbf, 0x6e, 0xc0, 0xb4, 0xbe, 0x6e, 0xc0, 0xb4, - 0xbf, 0x6e, 0xc0, 0xb4, 0xbe, 0x6e, 0xc1, 0xb4, 0xbf, 0x6e, 0xc1, 0xb4, - 0xc1, 0x6e, 0xc1, 0xb4, 0xc1, 0x6e, 0xc1, 0xb4, 0xc1, 0x6e, 0xc2, 0xb4, - 0xc2, 0x6e, 0xc2, 0xb4, 0xc2, 0x6e, 0xc2, 0xb4, 0xc2, 0x6e, 0xc3, 0xb4, - 0xc2, 0x6e, 0xc3, 0xb4, 0xc2, 0x6e, 0xc3, 0xb4, 0xc2, 0x6e, 0xc4, 0xb4, - 0xc2, 0x6e, 0xc4, 0xb4, 0xc2, 0x6e, 0xc4, 0xb5, 0xc4, 0x6e, 0xc5, 0xb5, - 0xc5, 0x6e, 0xc5, 0xb5, 0xc5, 0x6e, 0xc5, 0xb5, 0xc5, 0x6e, 0xc6, 0xb5, - 0xc6, 0x6e, 0xc6, 0xb5, 0xc6, 0x6e, 0xc6, 0xb5, 0xc6, 0x6e, 0xc6, 0xb5, - 0xc6, 0x6e, 0xc7, 0xb5, 0xc6, 0x6e, 0xc7, 0xb5, 0xc6, 0x6e, 0xc7, 0xb5, - 0xc6, 0x6e, 0xc8, 0xb5, 0xc6, 0x6e, 0xc8, 0xb5, 0xc6, 0x6e, 0xc8, 0xb5, - 0xc6, 0x6e, 0xc9, 0xb6, 0xc9, 0x6e, 0xc9, 0xb6, 0xc9, 0x6e, 0xc9, 0xb6, - 0xc9, 0x6e, 0xc9, 0xb6, 0xc9, 0x6e, 0xca, 0xb6, 0xc9, 0x6e, 0xca, 0xb6, - 0xc9, 0x6e, 0xca, 0xaf, 0xd0, 0x6e, 0xcb, 0xb2, 0xcf, 0x6e, 0xcb, 0xaf, - 0xd0, 0x6e, 0xcb, 0xb2, 0xcf, 0x6e, 0xcc, 0xaf, 0xd0, 0x6e, 0xcc, 0xb2, - 0xcf, 0x6e, 0xcc, 0xaf, 0xd0, 0x6e, 0xcc, 0xb2, 0xcf, 0x6e, 0xcd, 0xaf, - 0xd0, 0x6e, 0xcd, 0xb2, 0xcf, 0x6e, 0xcd, 0xaf, 0xd0, 0x6e, 0xce, 0xaf, - 0xd0, 0x6e, 0xce, 0xaf, 0xd0, 0x6e, 0xce, 0xaf, 0xd0, 0x6e, 0xce, 0xaf, - 0xd0, 0x6e, 0xcf, 0xaf, 0xd0, 0x6e, 0xcf, 0xaf, 0xd0, 0x6e, 0xcf, 0xaf, - 0xd0, 0x6e, 0xd0, 0xaf, 0xd0, 0x6d, 0xcf, 0xaf, 0xd0, 0x6e, 0xd0, 0xaf, - 0xd0, 0x6d, 0xcf, 0xaf, 0xd0, 0x6e, 0xd0, 0xaf, 0xd1, 0x6d, 0xcf, 0xaf, - 0xd1, 0x6e, 0xd0, 0xaf, 0xd1, 0x6d, 0xcf, 0xaf, 0xd2, 0x6e, 0xd0, 0xaf, - 0xd2, 0x6d, 0xcf, 0xaf, 0xd2, 0x6e, 0xd0, 0xaf, 0xd2, 0x6d, 0xcf, 0xaf, - 0xd3, 0x6e, 0xd0, 0xaf, 0xd3, 0x6d, 0xcf, 0xaf, 0xd3, 0x6e, 0xd0, 0xaf, - 0xd4, 0x6d, 0xcf, 0xaf, 0xd4, 0x6e, 0xd0, 0xaf, 0xd4, 0x6d, 0xd0, 0xaf, - 0xd4, 0x6a, 0xd0, 0xaf, 0xd5, 0x6d, 0xd0, 0xaf, 0xd5, 0x6a, 0xd0, 0xaf, - 0xd5, 0x6d, 0xd0, 0xaf, 0xd6, 0x6a, 0xd0, 0xaf, 0xd6, 0x6d, 0xd0, 0xaf, - 0xd6, 0x6a, 0xd0, 0xaf, 0xd6, 0x6d, 0xd0, 0xaf, 0xd7, 0x6a, 0xd0, 0xaf, - 0xd7, 0x6d, 0xd0, 0xaf, 0xd7, 0x6a, 0xd0, 0xaf, 0xd7, 0x6d, 0xd0, 0xaf, - 0xd8, 0x6a, 0xd0, 0xaf, 0xd8, 0x6d, 0xd0, 0xaf, 0xd8, 0x6a, 0xd0, 0xaf, - 0xd9, 0x6d, 0xd0, 0xaf, 0xd9, 0x6a, 0xd0, 0xaf, 0xd9, 0x6d, 0xd0, 0xaf, - 0xd9, 0x6a, 0xd0, 0xaf, 0xda, 0x6d, 0xd0, 0xaf, 0xda, 0x6a, 0xd0, 0xaf, - 0xda, 0x6d, 0xd0, 0xaf, 0xda, 0x6a, 0xd0, 0xaf, 0xdb, 0x6d, 0xd0, 0xaf, - 0xdb, 0x6a, 0xd0, 0xaf, 0xdb, 0x6d, 0xd0, 0xaf, 0xdb, 0x6a, 0xd0, 0xaf, - 0xdc, 0x6d, 0xd0, 0xaf, 0xdc, 0x6a, 0xd0, 0xaf, 0xdc, 0x6d, 0xd0, 0xaf, - 0xdd, 0x6a, 0xd0, 0xaf, 0xdd, 0x6d, 0xd0, 0xaf, 0xdd, 0x6a, 0xd0, 0xaf, - 0xdd, 0x67, 0xd0, 0xaf, 0xde, 0x6a, 0xd0, 0xaf, 0xde, 0x67, 0xeb, 0xaf, - 0xde, 0x6f, 0xeb, 0xaf, 0xde, 0x73, 0xeb, 0xaf, 0xdf, 0x6f, 0xeb, 0xaf, - 0xdf, 0x73, 0xeb, 0xaf, 0xdf, 0x6f, 0xeb, 0xaf, 0xdf, 0x73, 0xeb, 0xaf, - 0xe0, 0x6f, 0xeb, 0xaf, 0xe0, 0x73, 0xeb, 0xaf, 0xe0, 0x6f, 0xeb, 0xaf, - 0xe1, 0x73, 0xeb, 0xaf, 0xe1, 0x6f, 0xeb, 0xaf, 0xe1, 0x73, 0xeb, 0xaf, - 0xe1, 0x6f, 0xeb, 0xaf, 0xe2, 0x73, 0xeb, 0xaf, 0xe2, 0x6f, 0xeb, 0xaf, - 0xe2, 0x73, 0xeb, 0xaf, 0xe2, 0x6f, 0xeb, 0xaf, 0xe3, 0x73, 0xeb, 0xaf, - 0xe3, 0x6f, 0xeb, 0xaf, 0xe3, 0x73, 0xeb, 0xaf, 0xe3, 0x6f, 0xeb, 0xaf, - 0xe4, 0x73, 0xeb, 0xaf, 0xe4, 0x6f, 0xeb, 0xaf, 0xe4, 0x73, 0xeb, 0xaf, - 0xe4, 0x6f, 0xeb, 0xaf, 0xe5, 0x73, 0xeb, 0xaf, 0xe5, 0x6f, 0xeb, 0xaf, - 0xe5, 0x73, 0xeb, 0xaf, 0xe5, 0x6f, 0xec, 0xaf, 0xe6, 0x6e, 0xeb, 0xaf, - 0xe6, 0x6f, 0xec, 0xaf, 0xe6, 0x6e, 0xeb, 0xaf, 0xe6, 0x6f, 0xec, 0xaf, - 0xe7, 0x6e, 0xeb, 0xaf, 0xe7, 0x6f, 0xec, 0xaf, 0xe7, 0x6e, 0xeb, 0xaf, - 0xe7, 0x6f, 0xec, 0xaf, 0xe8, 0x6e, 0xeb, 0xaf, 0xe8, 0x6f, 0xec, 0xaf, - 0xe8, 0x6e, 0xeb, 0xaf, 0xe8, 0x6f, 0xec, 0xaf, 0xe9, 0x6e, 0xeb, 0xaf, - 0xe9, 0x6f, 0xec, 0xaf, 0xe9, 0x6e, 0xeb, 0xaf, 0xe9, 0x6f, 0xec, 0xaf, - 0xea, 0x6e, 0xeb, 0xaf, 0xea, 0x6f, 0xec, 0xaf, 0xea, 0x6e, 0xeb, 0xaf, - 0xea, 0x6f, 0xec, 0xaf, 0xeb, 0x6e, 0xeb, 0xaf, 0xeb, 0x6f, 0xec, 0xaf, - 0xeb, 0x6e, 0xec, 0xaf, 0xeb, 0x6e, 0xec, 0xaf, 0xeb, 0x6e, 0xec, 0xaf, - 0xeb, 0x6e, 0xec, 0xaf, 0xeb, 0x6e, 0xec, 0xaf, 0xeb, 0x6e, 0xec, 0xaf, - 0xeb, 0x6e, 0xed, 0xaf, 0xeb, 0x6e, 0xed, 0xaf, 0xeb, 0x6e, 0xed, 0xaf, - 0xeb, 0x6e, 0xed, 0xaf, 0xeb, 0x6e, 0xee, 0xaf, 0xeb, 0x6e, 0xee, 0xaf, - 0xeb, 0x6e, 0xee, 0xaf, 0xeb, 0x6e, 0xee, 0xaf, 0xeb, 0x6e, 0xef, 0xaf, - 0xeb, 0x6e, 0xef, 0xaf, 0xeb, 0x6e, 0xef, 0xaf, 0xeb, 0x6e, 0xef, 0xaa, - 0xef, 0x6e, 0xf0, 0xaa, 0xf0, 0x6e, 0xf0, 0xaa, 0xf0, 0x6e, 0xf0, 0xaa, - 0xf0, 0x6e, 0xf0, 0xaa, 0xf0, 0x6e, 0xf1, 0xaa, 0xf1, 0x6e, 0xf1, 0xaa, - 0xf1, 0x6e, 0xf1, 0xaa, 0xf1, 0x6e, 0xf1, 0xaa, 0xf1, 0x6e, 0xf2, 0xaa, - 0xf2, 0x6e, 0xf2, 0xaa, 0xf3, 0x6e, 0xf2, 0xaa, 0xf3, 0x6e, 0xf2, 0xaa, - 0xf3, 0x6e, 0xf2, 0xaa, 0xf3, 0x6e, 0xf3, 0xaa, 0xf3, 0x6e, 0xf3, 0xaa, - 0xf3, 0x6e, 0xf3, 0xaa, 0xf3, 0x6e, 0xf3, 0xb1, 0xf6, 0x6e, 0xf4, 0xaf, - 0xf6, 0x6e, 0xf4, 0xb1, 0xf6, 0x6e, 0xf4, 0xaf, 0xf6, 0x6e, 0xf4, 0xb1, - 0xf6, 0x6e, 0xf5, 0xaf, 0xf6, 0x6e, 0xf5, 0xb1, 0xf6, 0x6e, 0xf5, 0xaf, - 0xf6, 0x6e, 0xf5, 0xb1, 0xf6, 0x6e, 0xf5, 0xaf, 0xf6, 0x6e, 0xf6, 0xaf, - 0xf7, 0x6e, 0xf6, 0xaf, 0xf6, 0x6e, 0xf6, 0xaf, 0xf7, 0x6e, 0xf6, 0xaf, - 0xf6, 0x6e, 0xf6, 0xaf, 0xf7, 0x6e, 0xf6, 0xaf, 0xf7, 0x6e, 0xf6, 0xaf, - 0xf7, 0x6e, 0xf6, 0xaf, 0xf7, 0x6c, 0xf6, 0xaf, 0xf8, 0x6e, 0xf6, 0xaf, - 0xf8, 0x6c, 0xf6, 0xaf, 0xf8, 0x6e, 0xf6, 0xaf, 0xf8, 0x6c, 0xfa, 0xaf, - 0xf8, 0x6f, 0xfa, 0xaf, 0xf9, 0x6e, 0xfa, 0xaf, 0xf9, 0x6f, 0xfa, 0xaf, - 0xf9, 0x6e, 0xfa, 0xaf, 0xf9, 0x6f, 0xfa, 0xaf, 0xfa, 0x6e, 0xfa, 0xaf, - 0xfa, 0x6f, 0xfa, 0xaf, 0xfa, 0x6e, 0xfb, 0xaf, 0xfa, 0x6e, 0xfa, 0xaf, - 0xfa, 0x6e, 0xfb, 0xaf, 0xfa, 0x6e, 0xfb, 0xaf, 0xfa, 0x6e, 0xfb, 0xaf, - 0xfa, 0x6e, 0xfb, 0xae, 0xfa, 0x6e, 0xfc, 0xaf, 0xfa, 0x6e, 0xfc, 0xae, - 0xfa, 0x6e, 0xfc, 0xaf, 0xfa, 0x6e, 0xfc, 0xae, 0xfa, 0x6e, 0xfc, 0xaf, - 0xfa, 0x6e, 0xfd, 0xae, 0xfa, 0x6e, 0xfd, 0xaf, 0xfa, 0x6e, 0xfd, 0xae, - 0xfa, 0x6e, 0xfd, 0xaf, 0xfa, 0x6e, 0xfe, 0xae, 0xfa, 0x6e, 0xfe, 0xaf, - 0xfa, 0x6e, 0xfe, 0xae, 0xfa, 0x6e, 0xfe, 0xaf, 0xfa, 0x6e, 0xfe, 0xae, - 0xfa, 0x6e, 0xff, 0xae, 0xfa, 0x6e, 0xff, 0xae, 0xfa, 0x6e, 0x03, 0xb9, - 0x93, 0x6e, 0x0a, 0xb6, 0x93, 0x6e, 0x0f, 0xb9, 0x93, 0x6e, 0x14, 0xb6, - 0x93, 0x6e, 0x17, 0xb9, 0x93, 0x6e, 0x1b, 0xb6, 0x93, 0x6e, 0x1e, 0xb9, - 0x93, 0x6e, 0x20, 0xb6, 0x93, 0x6e, 0x23, 0xb9, 0x93, 0x6e, 0x25, 0xb6, - 0x93, 0x6e, 0x27, 0xb9, 0x93, 0x6e, 0x29, 0xb6, 0x93, 0x6e, 0x2b, 0xb9, - 0x93, 0x6e, 0x2d, 0xb6, 0x93, 0x6e, 0x2f, 0xb9, 0x93, 0x6e, 0x31, 0xb6, - 0x93, 0x6e, 0x32, 0xb9, 0x93, 0x6e, 0x34, 0xb6, 0x93, 0x6e, 0x35, 0xb4, - 0x94, 0x6e, 0x37, 0xb6, 0x93, 0x6e, 0x38, 0xb4, 0x94, 0x6e, 0x3a, 0xb6, - 0x93, 0x6e, 0x3b, 0xb4, 0x94, 0x6e, 0x3c, 0xb6, 0x93, 0x6e, 0x3e, 0xb4, - 0x94, 0x6e, 0x3f, 0xb6, 0x93, 0x6e, 0x40, 0xb4, 0x94, 0x6e, 0x42, 0xb6, - 0x93, 0x6e, 0x43, 0xb4, 0x94, 0x6e, 0x44, 0xb6, 0x93, 0x6e, 0x45, 0xb4, - 0x94, 0x6e, 0x46, 0xb6, 0x93, 0x6e, 0x47, 0xb4, 0x94, 0x6e, 0x48, 0xb6, - 0x93, 0x6e, 0x49, 0xb4, 0x94, 0x6e, 0x4a, 0xb6, 0x93, 0x6e, 0x4b, 0xb4, - 0x94, 0x6e, 0x4c, 0xb6, 0x93, 0x6e, 0x4d, 0xb4, 0x94, 0x6e, 0x4e, 0xb6, - 0x93, 0x6e, 0x4f, 0xb4, 0x94, 0x6e, 0x50, 0xb6, 0x93, 0x6e, 0x51, 0xb4, - 0x94, 0x6e, 0x52, 0xb6, 0x93, 0x6e, 0x53, 0xb4, 0x94, 0x6e, 0x54, 0xb6, - 0x93, 0x6e, 0x55, 0xb4, 0x94, 0x6e, 0x56, 0xb6, 0x93, 0x6e, 0x57, 0xb4, - 0x94, 0x6e, 0x58, 0xb6, 0x93, 0x6e, 0x58, 0xb4, 0x94, 0x6e, 0x59, 0xb6, - 0x93, 0x6e, 0x5a, 0xb4, 0x94, 0x6e, 0x5b, 0xb6, 0x93, 0x6e, 0x5c, 0xb4, - 0x94, 0x6e, 0x5d, 0xb6, 0x93, 0x6e, 0x5d, 0xb4, 0x94, 0x6e, 0x5e, 0xb6, - 0x93, 0x6e, 0x5f, 0xb4, 0x94, 0x6e, 0x60, 0xb6, 0x93, 0x6e, 0x60, 0xb4, - 0x94, 0x6e, 0x61, 0xb6, 0x93, 0x6e, 0x62, 0xb4, 0x94, 0x6e, 0x63, 0xb6, - 0x93, 0x6e, 0x63, 0xb4, 0x94, 0x6e, 0x64, 0xb6, 0x93, 0x6e, 0x65, 0xb4, - 0x94, 0x6e, 0x66, 0xb6, 0x93, 0x6e, 0x66, 0xb4, 0x94, 0x6e, 0x67, 0xb6, - 0x93, 0x6e, 0x68, 0xb4, 0x94, 0x6e, 0x68, 0xb6, 0x93, 0x6e, 0x69, 0xb4, - 0x94, 0x6e, 0x6a, 0xb6, 0x93, 0x6e, 0x6a, 0xb4, 0x94, 0x6e, 0x6b, 0xb6, - 0x93, 0x6e, 0x6c, 0xb4, 0x94, 0x6e, 0x6c, 0xb6, 0x93, 0x6e, 0x6d, 0xb4, - 0x94, 0x6e, 0x6e, 0xb2, 0x94, 0x6e, 0x6e, 0xb4, 0x94, 0x6e, 0x6f, 0xb2, - 0x94, 0x6e, 0x70, 0xb4, 0x94, 0x6e, 0x70, 0xb2, 0x94, 0x6e, 0x71, 0xb4, - 0x94, 0x6e, 0x72, 0xb2, 0x94, 0x6e, 0x72, 0xb4, 0x94, 0x6e, 0x73, 0xb2, - 0x94, 0x6e, 0x73, 0xb4, 0x94, 0x6e, 0x74, 0xb2, 0x94, 0x6e, 0x75, 0xb4, - 0x94, 0x6e, 0x75, 0xb2, 0x94, 0x6e, 0x76, 0xb4, 0x94, 0x6e, 0x76, 0xb2, - 0x94, 0x6e, 0x77, 0xb4, 0x94, 0x6e, 0x78, 0xb2, 0x94, 0x6e, 0x78, 0xb4, - 0x94, 0x6e, 0x79, 0xb2, 0x94, 0x6e, 0x79, 0xb4, 0x94, 0x6e, 0x7a, 0xb2, - 0x94, 0x6e, 0x7a, 0xb4, 0x94, 0x6e, 0x7b, 0xb2, 0x94, 0x6e, 0x7c, 0xb4, - 0x94, 0x6e, 0x7c, 0xb2, 0x94, 0x6e, 0x7d, 0xb4, 0x94, 0x6e, 0x7d, 0xb2, - 0x94, 0x6e, 0x7e, 0xb4, 0x94, 0x6e, 0x7e, 0xb2, 0x94, 0x6e, 0x7f, 0xb4, - 0x94, 0x6e, 0x7f, 0xb2, 0x94, 0x6e, 0x80, 0xb4, 0x94, 0x6e, 0x81, 0xb2, - 0x94, 0x6e, 0x81, 0xb4, 0x94, 0x6e, 0x82, 0xb2, 0x94, 0x6e, 0x82, 0xb4, - 0x94, 0x6e, 0x83, 0xb2, 0x94, 0x6e, 0x83, 0xb0, 0x94, 0x6e, 0x84, 0xb2, - 0x94, 0x6e, 0x84, 0xb0, 0x94, 0x6e, 0x85, 0xb2, 0x94, 0x6e, 0x85, 0xb0, - 0x94, 0x6e, 0x86, 0xb2, 0x94, 0x6e, 0x86, 0xb0, 0x94, 0x6e, 0x87, 0xb2, - 0x94, 0x6e, 0x87, 0xb0, 0x94, 0x6e, 0x88, 0xb2, 0x94, 0x6e, 0x88, 0xb0, - 0x94, 0x6e, 0x89, 0xb2, 0x94, 0x6e, 0x89, 0xb0, 0x94, 0x6e, 0x8a, 0xb2, - 0x94, 0x6e, 0x8a, 0xb0, 0x94, 0x6e, 0x8b, 0xb2, 0x94, 0x6e, 0x8b, 0xb0, - 0x94, 0x6e, 0x8c, 0xb2, 0x94, 0x6e, 0x8c, 0xb0, 0x94, 0x6e, 0x8d, 0xb2, - 0x94, 0x6e, 0x8d, 0xb0, 0x94, 0x6e, 0x8e, 0xb2, 0x94, 0x6e, 0x8e, 0xb0, - 0x94, 0x6e, 0x8e, 0xb2, 0x94, 0x6e, 0x8f, 0xb0, 0x94, 0x6e, 0x8f, 0xb2, - 0x94, 0x6e, 0x90, 0xb0, 0x94, 0x6e, 0x90, 0xb2, 0x94, 0x6e, 0x91, 0xb0, - 0x94, 0x6e, 0x91, 0xb0, 0x95, 0x6e, 0x92, 0xb0, 0x94, 0x6e, 0x92, 0xb0, - 0x95, 0x6e, 0x93, 0xb0, 0x94, 0x6e, 0x93, 0xb0, 0x95, 0x6e, 0x94, 0xb0, - 0x94, 0x6e, 0x94, 0xb0, 0x95, 0x6e, 0x94, 0xb0, 0x94, 0x6e, 0x94, 0xb0, - 0x95, 0x6e, 0x96, 0xb0, 0x95, 0x6e, 0x97, 0xb0, 0x96, 0x6e, 0x96, 0xaf, - 0x96, 0x6e, 0x97, 0xb0, 0x96, 0x6e, 0x97, 0xaf, 0x96, 0x6e, 0x98, 0xb0, - 0x96, 0x6e, 0x98, 0xaf, 0x96, 0x6e, 0x98, 0xb0, 0x96, 0x6e, 0x99, 0xae, - 0x99, 0x6e, 0x99, 0xae, 0x99, 0x6e, 0x9a, 0xae, 0x9a, 0x6e, 0x9a, 0xae, - 0x9a, 0x6e, 0x9a, 0xae, 0x9a, 0x6e, 0x9b, 0xae, 0x9b, 0x6e, 0x9b, 0xae, - 0x9b, 0x6e, 0x9c, 0xae, 0x9d, 0x6e, 0x9c, 0xae, 0x9e, 0x6e, 0x9d, 0xae, - 0x9d, 0x6e, 0x9d, 0xae, 0x9e, 0x6e, 0x9d, 0xae, 0x9d, 0x6e, 0x9e, 0xae, - 0x9e, 0x6e, 0x9e, 0xae, 0x9e, 0x6e, 0x9f, 0xae, 0x9f, 0x6e, 0x9f, 0xae, - 0x9f, 0x6e, 0x9f, 0xae, 0x9f, 0x6e, 0xa0, 0xae, 0xa0, 0x6e, 0xa0, 0xae, - 0xa0, 0x6e, 0xa1, 0xae, 0xa1, 0x6e, 0xa1, 0xaf, 0xa2, 0x6e, 0xa1, 0xaf, - 0xa2, 0x6e, 0xa2, 0xaf, 0xa2, 0x6e, 0xa2, 0xaf, 0xa2, 0x6e, 0xa3, 0xaf, - 0xa3, 0x6e, 0xa3, 0xaf, 0xa3, 0x6e, 0xa3, 0xaf, 0xa3, 0x6e, 0xa4, 0xaf, - 0xa4, 0x6e, 0xa4, 0xaf, 0xa4, 0x6e, 0xa5, 0xaf, 0xa5, 0x6e, 0xa5, 0xaf, - 0xa5, 0x6e, 0xa5, 0xaf, 0xa5, 0x6e, 0xa6, 0xb0, 0xa6, 0x6e, 0xa6, 0xb0, - 0xa6, 0x6d, 0xa6, 0xb0, 0xa6, 0x6d, 0xa7, 0xb0, 0xa7, 0x6d, 0xa7, 0xb0, - 0xa7, 0x6d, 0xa8, 0xb0, 0xa8, 0x6d, 0xa8, 0xb0, 0xa8, 0x6d, 0xa8, 0xb0, - 0xa8, 0x6d, 0xa9, 0xb0, 0xa9, 0x6d, 0xa9, 0xb0, 0xa9, 0x6d, 0xaa, 0xb0, - 0xaa, 0x6d, 0xaa, 0xb0, 0xa9, 0x6e, 0xaa, 0xb0, 0xaa, 0x6e, 0xab, 0xb0, - 0xab, 0x6e, 0xab, 0xb0, 0xab, 0x6e, 0xab, 0xb0, 0xab, 0x6e, 0xac, 0xb0, - 0xac, 0x6e, 0xac, 0xb0, 0xac, 0x6e, 0xac, 0xb0, 0xac, 0x6e, 0xad, 0xb0, - 0xad, 0x6e, 0xad, 0xb0, 0xad, 0x6e, 0xae, 0xb0, 0xae, 0x6e, 0xae, 0xb0, - 0xad, 0x6e, 0xae, 0xb0, 0xae, 0x6e, 0xaf, 0xb1, 0xaf, 0x6e, 0xaf, 0xb1, - 0xaf, 0x6e, 0xaf, 0xb1, 0xaf, 0x6e, 0xb0, 0xb1, 0xb0, 0x6e, 0xb0, 0xb1, - 0xb0, 0x6e, 0xb0, 0xb1, 0xb0, 0x6e, 0xb1, 0xb1, 0xb1, 0x6e, 0xb1, 0xb1, - 0xb1, 0x6e, 0xb2, 0xb1, 0xb2, 0x6e, 0xb2, 0xb1, 0xb1, 0x6e, 0xb2, 0xb1, - 0xb2, 0x6e, 0xb3, 0xb1, 0xb1, 0x6e, 0xb3, 0xb1, 0xb2, 0x6e, 0xb3, 0xb2, - 0xb3, 0x6e, 0xb4, 0xb2, 0xb4, 0x6e, 0xb4, 0xb2, 0xb4, 0x6e, 0xb4, 0xb2, - 0xb4, 0x6e, 0xb5, 0xb2, 0xb5, 0x6e, 0xb5, 0xb2, 0xb5, 0x6e, 0xb5, 0xb2, - 0xb5, 0x6e, 0xb6, 0xb2, 0xb5, 0x6e, 0xb6, 0xb2, 0xb5, 0x6e, 0xb6, 0xb2, - 0xb5, 0x6e, 0xb7, 0xb2, 0xb5, 0x6e, 0xb7, 0xb3, 0xb7, 0x6e, 0xb7, 0xb3, - 0xb7, 0x6e, 0xb8, 0xb3, 0xb8, 0x6e, 0xb8, 0xb3, 0xb8, 0x6e, 0xb8, 0xb3, - 0xb8, 0x6e, 0xb9, 0xb3, 0xb9, 0x6e, 0xb9, 0xb3, 0xb9, 0x6e, 0xb9, 0xb3, - 0xb9, 0x6e, 0xba, 0xb3, 0xb9, 0x6e, 0xba, 0xb3, 0xb9, 0x6e, 0xba, 0xb3, - 0xb9, 0x6e, 0xbb, 0xb3, 0xb9, 0x6e, 0xbb, 0xb3, 0xbb, 0x6e, 0xbb, 0xb3, - 0xbb, 0x6e, 0xbc, 0xb3, 0xbc, 0x6e, 0xbc, 0xb3, 0xbc, 0x6e, 0xbc, 0xb3, - 0xbc, 0x6e, 0xbd, 0xb3, 0xbd, 0x6e, 0xbd, 0xb3, 0xbd, 0x6e, 0xbd, 0xb3, - 0xbd, 0x6e, 0xbe, 0xb3, 0xbd, 0x6e, 0xbe, 0xb3, 0xbd, 0x6e, 0xbe, 0xb3, - 0xbd, 0x6e, 0xbf, 0xb3, 0xbd, 0x6e, 0xbf, 0xb3, 0xbd, 0x6e, 0xbf, 0xb4, - 0xbf, 0x6e, 0xc0, 0xb4, 0xc0, 0x6e, 0xc0, 0xb4, 0xc0, 0x6e, 0xc0, 0xb4, - 0xc0, 0x6e, 0xc1, 0xb4, 0xc1, 0x6e, 0xc1, 0xb4, 0xc0, 0x6e, 0xc1, 0xb4, - 0xc1, 0x6e, 0xc1, 0xb4, 0xc0, 0x6e, 0xc2, 0xb4, 0xc1, 0x6e, 0xc2, 0xb4, - 0xc0, 0x6e, 0xc2, 0xb4, 0xc1, 0x6e, 0xc3, 0xb5, 0xc3, 0x6e, 0xc3, 0xb5, - 0xc3, 0x6e, 0xc3, 0xb5, 0xc3, 0x6e, 0xc4, 0xb5, 0xc4, 0x6e, 0xc4, 0xb5, - 0xc4, 0x6e, 0xc4, 0xb5, 0xc4, 0x6e, 0xc5, 0xb5, 0xc4, 0x6e, 0xc5, 0xb5, - 0xc4, 0x6e, 0xc5, 0xb5, 0xc4, 0x6e, 0xc6, 0xb5, 0xc4, 0x6e, 0xc6, 0xb5, - 0xc4, 0x6e, 0xc6, 0xb5, 0xc6, 0x6e, 0xc6, 0xb5, 0xc6, 0x6e, 0xc7, 0xb5, - 0xc7, 0x6e, 0xc7, 0xb5, 0xc7, 0x6e, 0xc7, 0xb5, 0xc7, 0x6e, 0xc8, 0xb5, - 0xc7, 0x6e, 0xc8, 0xb5, 0xc7, 0x6e, 0xc8, 0xb5, 0xc7, 0x6e, 0xc9, 0xb5, - 0xc7, 0x6e, 0xc9, 0xb5, 0xc7, 0x6e, 0xc9, 0xb5, 0xc7, 0x6e, 0xc9, 0xb5, - 0xc7, 0x6e, 0xca, 0xb5, 0xc7, 0x6e, 0xca, 0xb6, 0xca, 0x6e, 0xca, 0xb0, - 0xd0, 0x6e, 0xcb, 0xb1, 0xcf, 0x6e, 0xcb, 0xb0, 0xd0, 0x6e, 0xcb, 0xb1, - 0xcf, 0x6e, 0xcc, 0xb0, 0xd0, 0x6e, 0xcc, 0xb1, 0xcf, 0x6e, 0xcc, 0xb0, - 0xd0, 0x6e, 0xcc, 0xb1, 0xcf, 0x6e, 0xcd, 0xb0, 0xd0, 0x6e, 0xcd, 0xb1, - 0xcf, 0x6e, 0xcd, 0xb0, 0xd0, 0x6e, 0xce, 0xb1, 0xcf, 0x6e, 0xce, 0xb0, - 0xd0, 0x6e, 0xce, 0xb1, 0xcf, 0x6e, 0xce, 0xb0, 0xd0, 0x6e, 0xcf, 0xb0, - 0xd0, 0x6e, 0xcf, 0xb0, 0xd0, 0x6e, 0xcf, 0xb0, 0xd0, 0x6e, 0xcf, 0xb0, - 0xd0, 0x6e, 0xcf, 0xb0, 0xd0, 0x6e, 0xcf, 0xb0, 0xd0, 0x6e, 0xcf, 0xb0, - 0xd0, 0x6e, 0xd0, 0xb0, 0xd1, 0x6c, 0xcf, 0xb0, 0xd1, 0x6e, 0xd0, 0xb0, - 0xd1, 0x6c, 0xcf, 0xb0, 0xd2, 0x6e, 0xd0, 0xb0, 0xd2, 0x6c, 0xcf, 0xb0, - 0xd2, 0x6e, 0xd0, 0xb0, 0xd2, 0x6c, 0xcf, 0xb0, 0xd3, 0x6e, 0xd0, 0xb0, - 0xd3, 0x6c, 0xcf, 0xb0, 0xd3, 0x6e, 0xd0, 0xb0, 0xd4, 0x6c, 0xcf, 0xb0, - 0xd4, 0x6e, 0xd0, 0xb0, 0xd4, 0x6c, 0xd0, 0xb0, 0xd4, 0x6a, 0xd0, 0xb0, - 0xd5, 0x6c, 0xd0, 0xb0, 0xd5, 0x6a, 0xd0, 0xb0, 0xd5, 0x6c, 0xd0, 0xb0, - 0xd6, 0x6a, 0xd0, 0xb0, 0xd6, 0x6c, 0xd0, 0xb0, 0xd6, 0x6a, 0xd0, 0xb0, - 0xd6, 0x6c, 0xd0, 0xb0, 0xd7, 0x6a, 0xd0, 0xb0, 0xd7, 0x6c, 0xd0, 0xb0, - 0xd7, 0x6a, 0xd0, 0xb0, 0xd7, 0x6c, 0xd0, 0xb0, 0xd8, 0x6a, 0xd0, 0xb0, - 0xd8, 0x6c, 0xd0, 0xb0, 0xd8, 0x6a, 0xd0, 0xb0, 0xd9, 0x6c, 0xd0, 0xb0, - 0xd9, 0x6a, 0xd0, 0xb0, 0xd9, 0x6c, 0xd0, 0xb0, 0xd9, 0x6a, 0xd0, 0xb0, - 0xda, 0x6c, 0xd0, 0xb0, 0xda, 0x6a, 0xd0, 0xb0, 0xda, 0x6c, 0xd0, 0xb0, - 0xda, 0x6a, 0xd0, 0xb0, 0xdb, 0x6c, 0xd0, 0xb0, 0xdb, 0x6a, 0xd0, 0xb0, - 0xdb, 0x6c, 0xd0, 0xb0, 0xdb, 0x6a, 0xd0, 0xb0, 0xdc, 0x6c, 0xd0, 0xb0, - 0xdc, 0x6a, 0xd0, 0xb0, 0xdc, 0x67, 0xd0, 0xb0, 0xdd, 0x6a, 0xd0, 0xb0, - 0xdd, 0x67, 0xd0, 0xb0, 0xdd, 0x6a, 0xd0, 0xb0, 0xdd, 0x67, 0xd0, 0xb0, - 0xde, 0x6a, 0xd0, 0xb0, 0xde, 0x67, 0xeb, 0xb0, 0xde, 0x6f, 0xeb, 0xb0, - 0xde, 0x72, 0xeb, 0xb0, 0xdf, 0x6f, 0xeb, 0xb0, 0xdf, 0x72, 0xeb, 0xb0, - 0xdf, 0x6f, 0xeb, 0xb0, 0xdf, 0x72, 0xeb, 0xb0, 0xe0, 0x6f, 0xeb, 0xb0, - 0xe0, 0x72, 0xeb, 0xb0, 0xe0, 0x6f, 0xeb, 0xb0, 0xe1, 0x72, 0xeb, 0xb0, - 0xe1, 0x6f, 0xeb, 0xb0, 0xe1, 0x72, 0xeb, 0xb0, 0xe1, 0x6f, 0xeb, 0xb0, - 0xe2, 0x72, 0xeb, 0xb0, 0xe2, 0x6f, 0xeb, 0xb0, 0xe2, 0x72, 0xeb, 0xb0, - 0xe2, 0x6f, 0xeb, 0xb0, 0xe3, 0x72, 0xeb, 0xb0, 0xe3, 0x6f, 0xeb, 0xb0, - 0xe3, 0x72, 0xeb, 0xb0, 0xe3, 0x6f, 0xeb, 0xb0, 0xe4, 0x72, 0xeb, 0xb0, - 0xe4, 0x6f, 0xeb, 0xb0, 0xe4, 0x72, 0xeb, 0xb0, 0xe4, 0x6f, 0xeb, 0xb0, - 0xe5, 0x72, 0xeb, 0xb0, 0xe5, 0x6f, 0xeb, 0xb0, 0xe5, 0x72, 0xeb, 0xb0, - 0xe5, 0x6f, 0xeb, 0xb0, 0xe6, 0x72, 0xeb, 0xb0, 0xe6, 0x6f, 0xeb, 0xb0, - 0xe6, 0x72, 0xeb, 0xb0, 0xe6, 0x6f, 0xeb, 0xb0, 0xe7, 0x72, 0xeb, 0xb0, - 0xe7, 0x6f, 0xeb, 0xb0, 0xe7, 0x72, 0xeb, 0xb0, 0xe7, 0x6f, 0xec, 0xb0, - 0xe8, 0x6e, 0xeb, 0xb0, 0xe8, 0x6f, 0xec, 0xb0, 0xe8, 0x6e, 0xeb, 0xb0, - 0xe8, 0x6f, 0xec, 0xb0, 0xe9, 0x6e, 0xeb, 0xb0, 0xe9, 0x6f, 0xec, 0xb0, - 0xe9, 0x6e, 0xeb, 0xb0, 0xe9, 0x6f, 0xec, 0xb0, 0xea, 0x6e, 0xeb, 0xb0, - 0xea, 0x6f, 0xec, 0xb0, 0xea, 0x6e, 0xeb, 0xb0, 0xea, 0x6f, 0xec, 0xb0, - 0xeb, 0x6e, 0xeb, 0xb0, 0xeb, 0x6f, 0xec, 0xb0, 0xeb, 0x6e, 0xec, 0xb0, - 0xeb, 0x6e, 0xec, 0xb0, 0xeb, 0x6e, 0xec, 0xb0, 0xeb, 0x6e, 0xec, 0xb0, - 0xeb, 0x6e, 0xec, 0xb0, 0xeb, 0x6e, 0xec, 0xb0, 0xeb, 0x6e, 0xed, 0xb0, - 0xeb, 0x6e, 0xed, 0xb0, 0xeb, 0x6e, 0xed, 0xb0, 0xeb, 0x6e, 0xed, 0xb0, - 0xeb, 0x6e, 0xee, 0xb0, 0xeb, 0x6e, 0xee, 0xb0, 0xeb, 0x6e, 0xee, 0xb0, - 0xeb, 0x6e, 0xee, 0xb0, 0xeb, 0x6e, 0xef, 0xb0, 0xeb, 0x6e, 0xef, 0xb0, - 0xeb, 0x6e, 0xef, 0xb0, 0xeb, 0x6e, 0xef, 0xaa, 0xf1, 0x6e, 0xf0, 0xaa, - 0xf2, 0x6e, 0xf0, 0xaa, 0xf1, 0x6e, 0xf0, 0xaa, 0xf2, 0x6e, 0xf0, 0xaa, - 0xf1, 0x6e, 0xf1, 0xaa, 0xf2, 0x6e, 0xf1, 0xaa, 0xf1, 0x6e, 0xf1, 0xaa, - 0xf2, 0x6e, 0xf1, 0xaa, 0xf1, 0x6e, 0xf2, 0xaa, 0xf2, 0x6e, 0xf2, 0xaa, - 0xf2, 0x6e, 0xf2, 0xaa, 0xf2, 0x6e, 0xf2, 0xaa, 0xf2, 0x6e, 0xf2, 0xaa, - 0xf2, 0x6e, 0xf3, 0xaa, 0xf3, 0x6e, 0xf3, 0xb1, 0xf6, 0x6e, 0xf3, 0xb0, - 0xf6, 0x6e, 0xf3, 0xb1, 0xf6, 0x6e, 0xf4, 0xb0, 0xf6, 0x6e, 0xf4, 0xb1, - 0xf6, 0x6e, 0xf4, 0xb0, 0xf6, 0x6e, 0xf4, 0xb1, 0xf6, 0x6e, 0xf5, 0xb0, - 0xf6, 0x6e, 0xf5, 0xb1, 0xf6, 0x6e, 0xf5, 0xb0, 0xf6, 0x6e, 0xf5, 0xb1, - 0xf6, 0x6e, 0xf5, 0xb0, 0xf6, 0x6e, 0xf6, 0xb0, 0xf7, 0x6e, 0xf6, 0xb0, - 0xf6, 0x6e, 0xf6, 0xb0, 0xf7, 0x6e, 0xf6, 0xb0, 0xf6, 0x6e, 0xf6, 0xb0, - 0xf7, 0x6e, 0xf6, 0xb0, 0xf7, 0x6e, 0xf6, 0xb0, 0xf7, 0x6e, 0xf6, 0xb0, - 0xf7, 0x6e, 0xf6, 0xb0, 0xf8, 0x6e, 0xf6, 0xb0, 0xf8, 0x6e, 0xf6, 0xb0, - 0xf8, 0x6e, 0xf6, 0xb0, 0xf8, 0x6b, 0xfa, 0xb0, 0xf8, 0x6f, 0xfa, 0xb0, - 0xf9, 0x6e, 0xfa, 0xb0, 0xf9, 0x6f, 0xfa, 0xb0, 0xf9, 0x6e, 0xfa, 0xb0, - 0xf9, 0x6f, 0xfa, 0xb0, 0xfa, 0x6e, 0xfa, 0xb0, 0xfa, 0x6f, 0xfa, 0xb0, - 0xfa, 0x6e, 0xfb, 0xb0, 0xfa, 0x6e, 0xfa, 0xb0, 0xfa, 0x6e, 0xfb, 0xb0, - 0xfa, 0x6e, 0xfb, 0xb0, 0xfa, 0x6e, 0xfb, 0xb0, 0xfa, 0x6e, 0xfb, 0xb0, - 0xfa, 0x6e, 0xfc, 0xb0, 0xfa, 0x6e, 0xfc, 0xb0, 0xfa, 0x6e, 0xfc, 0xb0, - 0xfa, 0x6e, 0xfc, 0xae, 0xfa, 0x6e, 0xfc, 0xb0, 0xfa, 0x6e, 0xfd, 0xae, - 0xfa, 0x6e, 0xfd, 0xb0, 0xfa, 0x6e, 0xfd, 0xae, 0xfa, 0x6e, 0xfd, 0xb0, - 0xfa, 0x6e, 0xfe, 0xae, 0xfa, 0x6e, 0xfe, 0xb0, 0xfa, 0x6e, 0xfe, 0xae, - 0xfa, 0x6e, 0xfe, 0xb0, 0xfa, 0x6e, 0xfe, 0xae, 0xfa, 0x6e, 0xff, 0xae, - 0xfa, 0x6e, 0xff, 0xae, 0xfa, 0x6e, 0x03, 0xb8, 0x93, 0x6f, 0x0a, 0xb8, - 0x93, 0x6f, 0x0f, 0xb8, 0x93, 0x6f, 0x14, 0xba, 0x92, 0x6f, 0x17, 0xb8, - 0x93, 0x6f, 0x1b, 0xb6, 0x93, 0x6f, 0x1e, 0xb8, 0x93, 0x6f, 0x20, 0xb6, - 0x93, 0x6f, 0x23, 0xb8, 0x93, 0x6f, 0x25, 0xb6, 0x93, 0x6f, 0x27, 0xb8, - 0x93, 0x6f, 0x29, 0xb6, 0x93, 0x6f, 0x2b, 0xb8, 0x93, 0x6f, 0x2d, 0xb6, - 0x93, 0x6f, 0x2f, 0xb8, 0x93, 0x6f, 0x31, 0xb6, 0x93, 0x6f, 0x32, 0xb8, - 0x93, 0x6f, 0x34, 0xb6, 0x93, 0x6f, 0x35, 0xb8, 0x93, 0x6f, 0x37, 0xb6, - 0x93, 0x6f, 0x38, 0xb8, 0x93, 0x6f, 0x3a, 0xb6, 0x93, 0x6f, 0x3b, 0xb8, - 0x93, 0x6f, 0x3c, 0xb6, 0x93, 0x6f, 0x3e, 0xb8, 0x93, 0x6f, 0x3f, 0xb6, - 0x93, 0x6f, 0x40, 0xb8, 0x93, 0x6f, 0x42, 0xb6, 0x93, 0x6f, 0x43, 0xb8, - 0x93, 0x6f, 0x44, 0xb6, 0x93, 0x6f, 0x45, 0xb4, 0x94, 0x6f, 0x46, 0xb6, - 0x93, 0x6f, 0x47, 0xb4, 0x94, 0x6f, 0x48, 0xb6, 0x93, 0x6f, 0x49, 0xb4, - 0x94, 0x6f, 0x4a, 0xb6, 0x93, 0x6f, 0x4b, 0xb4, 0x94, 0x6f, 0x4c, 0xb6, - 0x93, 0x6f, 0x4d, 0xb4, 0x94, 0x6f, 0x4e, 0xb6, 0x93, 0x6f, 0x4f, 0xb4, - 0x94, 0x6f, 0x50, 0xb6, 0x93, 0x6f, 0x51, 0xb4, 0x94, 0x6f, 0x52, 0xb6, - 0x93, 0x6f, 0x53, 0xb4, 0x94, 0x6f, 0x54, 0xb6, 0x93, 0x6f, 0x55, 0xb4, - 0x94, 0x6f, 0x56, 0xb6, 0x93, 0x6f, 0x57, 0xb4, 0x94, 0x6f, 0x58, 0xb6, - 0x93, 0x6f, 0x58, 0xb4, 0x94, 0x6f, 0x59, 0xb6, 0x93, 0x6f, 0x5a, 0xb4, - 0x94, 0x6f, 0x5b, 0xb6, 0x93, 0x6f, 0x5c, 0xb4, 0x94, 0x6f, 0x5d, 0xb6, - 0x93, 0x6f, 0x5d, 0xb4, 0x94, 0x6f, 0x5e, 0xb6, 0x93, 0x6f, 0x5f, 0xb4, - 0x94, 0x6f, 0x60, 0xb6, 0x93, 0x6f, 0x60, 0xb4, 0x94, 0x6f, 0x61, 0xb6, - 0x93, 0x6f, 0x62, 0xb4, 0x94, 0x6f, 0x63, 0xb6, 0x93, 0x6f, 0x63, 0xb4, - 0x94, 0x6f, 0x64, 0xb6, 0x93, 0x6f, 0x65, 0xb4, 0x94, 0x6f, 0x66, 0xb6, - 0x93, 0x6f, 0x66, 0xb4, 0x94, 0x6f, 0x67, 0xb6, 0x93, 0x6f, 0x68, 0xb4, - 0x94, 0x6f, 0x68, 0xb6, 0x93, 0x6f, 0x69, 0xb4, 0x94, 0x6f, 0x6a, 0xb6, - 0x93, 0x6f, 0x6a, 0xb4, 0x94, 0x6f, 0x6b, 0xb2, 0x94, 0x6f, 0x6c, 0xb4, - 0x94, 0x6f, 0x6c, 0xb2, 0x94, 0x6f, 0x6d, 0xb4, 0x94, 0x6f, 0x6e, 0xb2, - 0x94, 0x6f, 0x6e, 0xb4, 0x94, 0x6f, 0x6f, 0xb2, 0x94, 0x6f, 0x70, 0xb4, - 0x94, 0x6f, 0x70, 0xb2, 0x94, 0x6f, 0x71, 0xb4, 0x94, 0x6f, 0x72, 0xb2, - 0x94, 0x6f, 0x72, 0xb4, 0x94, 0x6f, 0x73, 0xb2, 0x94, 0x6f, 0x73, 0xb4, - 0x94, 0x6f, 0x74, 0xb2, 0x94, 0x6f, 0x75, 0xb4, 0x94, 0x6f, 0x75, 0xb2, - 0x94, 0x6f, 0x76, 0xb4, 0x94, 0x6f, 0x76, 0xb2, 0x94, 0x6f, 0x77, 0xb4, - 0x94, 0x6f, 0x78, 0xb2, 0x94, 0x6f, 0x78, 0xb4, 0x94, 0x6f, 0x79, 0xb2, - 0x94, 0x6f, 0x79, 0xb4, 0x94, 0x6f, 0x7a, 0xb2, 0x94, 0x6f, 0x7a, 0xb4, - 0x94, 0x6f, 0x7b, 0xb2, 0x94, 0x6f, 0x7c, 0xb4, 0x94, 0x6f, 0x7c, 0xb2, - 0x94, 0x6f, 0x7d, 0xb4, 0x94, 0x6f, 0x7d, 0xb2, 0x94, 0x6f, 0x7e, 0xb4, - 0x94, 0x6f, 0x7e, 0xb2, 0x94, 0x6f, 0x7f, 0xb4, 0x94, 0x6f, 0x7f, 0xb2, - 0x94, 0x6f, 0x80, 0xb4, 0x94, 0x6f, 0x81, 0xb2, 0x94, 0x6f, 0x81, 0xb4, - 0x94, 0x6f, 0x82, 0xb2, 0x94, 0x6f, 0x82, 0xb4, 0x94, 0x6f, 0x83, 0xb2, - 0x94, 0x6f, 0x83, 0xb4, 0x94, 0x6f, 0x84, 0xb2, 0x94, 0x6f, 0x84, 0xb4, - 0x94, 0x6f, 0x85, 0xb2, 0x94, 0x6f, 0x85, 0xb4, 0x94, 0x6f, 0x86, 0xb2, - 0x94, 0x6f, 0x86, 0xb4, 0x94, 0x6f, 0x87, 0xb2, 0x94, 0x6f, 0x87, 0xb4, - 0x94, 0x6f, 0x88, 0xb2, 0x94, 0x6f, 0x88, 0xb4, 0x94, 0x6f, 0x89, 0xb2, - 0x94, 0x6f, 0x89, 0xb0, 0x94, 0x6f, 0x8a, 0xb2, 0x94, 0x6f, 0x8a, 0xb0, - 0x94, 0x6f, 0x8b, 0xb2, 0x94, 0x6f, 0x8b, 0xb0, 0x94, 0x6f, 0x8c, 0xb2, - 0x94, 0x6f, 0x8c, 0xb0, 0x94, 0x6f, 0x8d, 0xb2, 0x94, 0x6f, 0x8d, 0xb0, - 0x94, 0x6f, 0x8e, 0xb2, 0x94, 0x6f, 0x8e, 0xb0, 0x94, 0x6f, 0x8e, 0xb2, - 0x94, 0x6f, 0x8f, 0xb0, 0x94, 0x6f, 0x8f, 0xb2, 0x94, 0x6f, 0x90, 0xb0, - 0x94, 0x6f, 0x90, 0xb2, 0x94, 0x6f, 0x91, 0xb0, 0x94, 0x6f, 0x91, 0xb2, - 0x94, 0x6f, 0x92, 0xb0, 0x94, 0x6f, 0x92, 0xb2, 0x94, 0x6f, 0x93, 0xb0, - 0x94, 0x6f, 0x93, 0xb0, 0x95, 0x6f, 0x94, 0xb0, 0x94, 0x6f, 0x94, 0xb0, - 0x95, 0x6f, 0x94, 0xb0, 0x94, 0x6f, 0x94, 0xb0, 0x95, 0x6f, 0x96, 0xb0, - 0x95, 0x6f, 0x97, 0xb0, 0x96, 0x6f, 0x96, 0xaf, 0x96, 0x6f, 0x97, 0xb0, - 0x96, 0x6f, 0x97, 0xaf, 0x96, 0x6f, 0x98, 0xb0, 0x96, 0x6f, 0x98, 0xaf, - 0x96, 0x6f, 0x98, 0xb0, 0x96, 0x6f, 0x99, 0xaf, 0x96, 0x6f, 0x99, 0xae, - 0x9b, 0x6f, 0x9a, 0xae, 0x9b, 0x6f, 0x9a, 0xae, 0x9b, 0x6f, 0x9a, 0xae, - 0x9b, 0x6f, 0x9b, 0xae, 0x9b, 0x6f, 0x9b, 0xae, 0x9b, 0x6f, 0x9c, 0xae, - 0x9c, 0x6f, 0x9c, 0xae, 0x9c, 0x6f, 0x9d, 0xae, 0x9d, 0x6f, 0x9d, 0xae, - 0x9d, 0x6f, 0x9d, 0xae, 0x9d, 0x6f, 0x9e, 0xae, 0x9e, 0x6f, 0x9e, 0xaf, - 0xa0, 0x6f, 0x9f, 0xaf, 0xa0, 0x6f, 0x9f, 0xaf, 0xa0, 0x6f, 0x9f, 0xaf, - 0xa0, 0x6f, 0xa0, 0xaf, 0xa0, 0x6f, 0xa0, 0xaf, 0xa0, 0x6f, 0xa1, 0xaf, - 0xa1, 0x6f, 0xa1, 0xaf, 0xa1, 0x6f, 0xa1, 0xaf, 0xa1, 0x6f, 0xa2, 0xaf, - 0xa2, 0x6f, 0xa2, 0xaf, 0xa2, 0x6f, 0xa3, 0xaf, 0xa3, 0x6f, 0xa3, 0xaf, - 0xa3, 0x6f, 0xa3, 0xaf, 0xa4, 0x6f, 0xa4, 0xaf, 0xa5, 0x6f, 0xa4, 0xaf, - 0xa4, 0x6f, 0xa5, 0xaf, 0xa5, 0x6f, 0xa5, 0xaf, 0xa5, 0x6f, 0xa5, 0xaf, - 0xa5, 0x6f, 0xa6, 0xaf, 0xa6, 0x6f, 0xa6, 0xaf, 0xa6, 0x6f, 0xa6, 0xaf, - 0xa6, 0x6f, 0xa7, 0xaf, 0xa7, 0x6f, 0xa7, 0xaf, 0xa7, 0x6f, 0xa8, 0xaf, - 0xa8, 0x6f, 0xa8, 0xb0, 0xa9, 0x6f, 0xa8, 0xb0, 0xa8, 0x6e, 0xa9, 0xb0, - 0xa9, 0x6e, 0xa9, 0xb0, 0xa9, 0x6e, 0xaa, 0xb0, 0xaa, 0x6e, 0xaa, 0xb0, - 0xaa, 0x6e, 0xaa, 0xb0, 0xaa, 0x6e, 0xab, 0xb0, 0xab, 0x6e, 0xab, 0xb0, - 0xab, 0x6e, 0xab, 0xb0, 0xab, 0x6e, 0xac, 0xb0, 0xac, 0x6e, 0xac, 0xb1, - 0xac, 0x6f, 0xac, 0xb1, 0xac, 0x6f, 0xad, 0xb1, 0xad, 0x6f, 0xad, 0xb1, - 0xad, 0x6f, 0xae, 0xb1, 0xae, 0x6f, 0xae, 0xb1, 0xae, 0x6f, 0xae, 0xb1, - 0xae, 0x6f, 0xaf, 0xb1, 0xaf, 0x6f, 0xaf, 0xb1, 0xaf, 0x6f, 0xaf, 0xb1, - 0xaf, 0x6f, 0xb0, 0xb1, 0xb0, 0x6f, 0xb0, 0xb1, 0xaf, 0x6f, 0xb0, 0xb1, - 0xb0, 0x6f, 0xb1, 0xb2, 0xb1, 0x6f, 0xb1, 0xb2, 0xb1, 0x6f, 0xb2, 0xb2, - 0xb2, 0x6f, 0xb2, 0xb2, 0xb2, 0x6f, 0xb2, 0xb2, 0xb2, 0x6f, 0xb3, 0xb2, - 0xb3, 0x6f, 0xb3, 0xb2, 0xb3, 0x6f, 0xb3, 0xb2, 0xb3, 0x6f, 0xb4, 0xb2, - 0xb4, 0x6f, 0xb4, 0xb2, 0xb3, 0x6f, 0xb4, 0xb2, 0xb4, 0x6f, 0xb5, 0xb2, - 0xb3, 0x6f, 0xb5, 0xb2, 0xb4, 0x6f, 0xb5, 0xb2, 0xb5, 0x6f, 0xb6, 0xb2, - 0xb6, 0x6f, 0xb6, 0xb2, 0xb6, 0x6f, 0xb6, 0xb2, 0xb6, 0x6f, 0xb7, 0xb2, - 0xb7, 0x6f, 0xb7, 0xb2, 0xb7, 0x6f, 0xb7, 0xb2, 0xb7, 0x6f, 0xb8, 0xb2, - 0xb7, 0x6f, 0xb8, 0xb2, 0xb7, 0x6f, 0xb8, 0xb2, 0xb7, 0x6f, 0xb9, 0xb2, - 0xb7, 0x6f, 0xb9, 0xb3, 0xb9, 0x6f, 0xb9, 0xb3, 0xb9, 0x6f, 0xba, 0xb3, - 0xba, 0x6f, 0xba, 0xb3, 0xba, 0x6f, 0xba, 0xb3, 0xba, 0x6f, 0xbb, 0xb3, - 0xbb, 0x6f, 0xbb, 0xb3, 0xbb, 0x6f, 0xbb, 0xb3, 0xbb, 0x6f, 0xbc, 0xb3, - 0xbb, 0x6f, 0xbc, 0xb3, 0xbb, 0x6f, 0xbc, 0xb3, 0xbb, 0x6f, 0xbd, 0xb4, - 0xbd, 0x6f, 0xbd, 0xb4, 0xbd, 0x6f, 0xbd, 0xb4, 0xbd, 0x6f, 0xbe, 0xb4, - 0xbe, 0x6f, 0xbe, 0xb4, 0xbe, 0x6f, 0xbe, 0xb4, 0xbe, 0x6f, 0xbf, 0xb4, - 0xbf, 0x6f, 0xbf, 0xb4, 0xbe, 0x6f, 0xbf, 0xb4, 0xbf, 0x6f, 0xc0, 0xb4, - 0xbe, 0x6f, 0xc0, 0xb4, 0xbf, 0x6f, 0xc0, 0xb4, 0xbe, 0x6f, 0xc1, 0xb4, - 0xbf, 0x6f, 0xc1, 0xb4, 0xc1, 0x6f, 0xc1, 0xb4, 0xc1, 0x6f, 0xc1, 0xb4, - 0xc1, 0x6f, 0xc2, 0xb4, 0xc2, 0x6f, 0xc2, 0xb4, 0xc2, 0x6f, 0xc2, 0xb4, - 0xc2, 0x6f, 0xc3, 0xb4, 0xc2, 0x6f, 0xc3, 0xb4, 0xc2, 0x6f, 0xc3, 0xb4, - 0xc2, 0x6f, 0xc4, 0xb4, 0xc2, 0x6f, 0xc4, 0xb4, 0xc2, 0x6f, 0xc4, 0xb5, - 0xc4, 0x6f, 0xc5, 0xb5, 0xc5, 0x6f, 0xc5, 0xb5, 0xc5, 0x6f, 0xc5, 0xb5, - 0xc5, 0x6f, 0xc6, 0xb5, 0xc6, 0x6f, 0xc6, 0xb5, 0xc6, 0x6f, 0xc6, 0xb5, - 0xc6, 0x6f, 0xc6, 0xb5, 0xc6, 0x6f, 0xc7, 0xb5, 0xc6, 0x6f, 0xc7, 0xb5, - 0xc6, 0x6f, 0xc7, 0xb5, 0xc6, 0x6f, 0xc8, 0xb5, 0xc6, 0x6f, 0xc8, 0xb6, - 0xc8, 0x6f, 0xc8, 0xb6, 0xc8, 0x6f, 0xc9, 0xb6, 0xc9, 0x6f, 0xc9, 0xb6, - 0xc9, 0x6f, 0xc9, 0xb6, 0xc9, 0x6f, 0xc9, 0xb6, 0xc9, 0x6f, 0xca, 0xb6, - 0xc9, 0x6f, 0xca, 0xb6, 0xc9, 0x6f, 0xca, 0xb6, 0xc9, 0x6f, 0xcb, 0xb2, - 0xcf, 0x6f, 0xcb, 0xb0, 0xd0, 0x6f, 0xcb, 0xb2, 0xcf, 0x6f, 0xcc, 0xb0, - 0xd0, 0x6f, 0xcc, 0xb2, 0xcf, 0x6f, 0xcc, 0xb0, 0xd0, 0x6f, 0xcc, 0xb2, - 0xcf, 0x6f, 0xcd, 0xb0, 0xd0, 0x6f, 0xcd, 0xb2, 0xcf, 0x6f, 0xcd, 0xb0, - 0xd0, 0x6f, 0xce, 0xb2, 0xcf, 0x6f, 0xce, 0xb0, 0xd0, 0x6f, 0xce, 0xb2, - 0xcf, 0x6f, 0xce, 0xb0, 0xd0, 0x6f, 0xcf, 0xb0, 0xd0, 0x6f, 0xcf, 0xb0, - 0xd0, 0x6f, 0xcf, 0xb0, 0xd0, 0x6f, 0xcf, 0xb0, 0xd0, 0x6f, 0xcf, 0xb0, - 0xd0, 0x6f, 0xcf, 0xb0, 0xd0, 0x6f, 0xcf, 0xb0, 0xd0, 0x6f, 0xd0, 0xb0, - 0xd1, 0x6d, 0xcf, 0xb0, 0xd1, 0x6f, 0xd0, 0xb0, 0xd1, 0x6d, 0xcf, 0xb0, - 0xd2, 0x6f, 0xd0, 0xb0, 0xd2, 0x6d, 0xcf, 0xb0, 0xd2, 0x6f, 0xd0, 0xb0, - 0xd2, 0x6d, 0xcf, 0xb0, 0xd3, 0x6f, 0xd0, 0xb0, 0xd3, 0x6d, 0xcf, 0xb0, - 0xd3, 0x6f, 0xd0, 0xb0, 0xd4, 0x6d, 0xcf, 0xb0, 0xd4, 0x6f, 0xd0, 0xb0, - 0xd4, 0x6d, 0xcf, 0xb0, 0xd4, 0x6f, 0xd0, 0xb0, 0xd5, 0x6d, 0xcf, 0xb0, - 0xd5, 0x6f, 0xd0, 0xb0, 0xd5, 0x6d, 0xcf, 0xb0, 0xd6, 0x6f, 0xd0, 0xb0, - 0xd6, 0x6d, 0xcf, 0xb0, 0xd6, 0x6f, 0xd0, 0xb0, 0xd6, 0x6d, 0xd0, 0xb0, - 0xd7, 0x6a, 0xd0, 0xb0, 0xd7, 0x6d, 0xd0, 0xb0, 0xd7, 0x6a, 0xd0, 0xb0, - 0xd7, 0x6d, 0xd0, 0xb0, 0xd8, 0x6a, 0xd0, 0xb0, 0xd8, 0x6d, 0xd0, 0xb0, - 0xd8, 0x6a, 0xd0, 0xb0, 0xd9, 0x6d, 0xd0, 0xb0, 0xd9, 0x6a, 0xd0, 0xb0, - 0xd9, 0x6d, 0xd0, 0xb0, 0xd9, 0x6a, 0xd0, 0xb0, 0xda, 0x6d, 0xd0, 0xb0, - 0xda, 0x6a, 0xd0, 0xb0, 0xda, 0x6d, 0xd0, 0xb0, 0xda, 0x6a, 0xd0, 0xb0, - 0xdb, 0x6d, 0xd0, 0xb0, 0xdb, 0x6a, 0xd0, 0xb0, 0xdb, 0x6d, 0xd0, 0xb0, - 0xdb, 0x6a, 0xd0, 0xb0, 0xdc, 0x6d, 0xd0, 0xb0, 0xdc, 0x6a, 0xd0, 0xb0, - 0xdc, 0x6d, 0xd0, 0xb0, 0xdd, 0x6a, 0xd0, 0xb0, 0xdd, 0x6d, 0xd0, 0xb0, - 0xdd, 0x6a, 0xd0, 0xb0, 0xdd, 0x6d, 0xd0, 0xb0, 0xde, 0x6a, 0xd0, 0xb0, - 0xde, 0x6d, 0xeb, 0xb0, 0xde, 0x6f, 0xeb, 0xb0, 0xde, 0x73, 0xeb, 0xb0, - 0xdf, 0x6f, 0xeb, 0xb0, 0xdf, 0x73, 0xeb, 0xb0, 0xdf, 0x6f, 0xeb, 0xb0, - 0xdf, 0x73, 0xeb, 0xb0, 0xe0, 0x6f, 0xeb, 0xb0, 0xe0, 0x73, 0xeb, 0xb0, - 0xe0, 0x6f, 0xeb, 0xb0, 0xe1, 0x73, 0xeb, 0xb0, 0xe1, 0x6f, 0xeb, 0xb0, - 0xe1, 0x73, 0xeb, 0xb0, 0xe1, 0x6f, 0xeb, 0xb0, 0xe2, 0x73, 0xeb, 0xb0, - 0xe2, 0x6f, 0xeb, 0xb0, 0xe2, 0x73, 0xeb, 0xb0, 0xe2, 0x6f, 0xeb, 0xb0, - 0xe3, 0x73, 0xeb, 0xb0, 0xe3, 0x6f, 0xeb, 0xb0, 0xe3, 0x73, 0xeb, 0xb0, - 0xe3, 0x6f, 0xeb, 0xb0, 0xe4, 0x73, 0xeb, 0xb0, 0xe4, 0x6f, 0xeb, 0xb0, - 0xe4, 0x73, 0xeb, 0xb0, 0xe4, 0x6f, 0xeb, 0xb0, 0xe5, 0x73, 0xeb, 0xb0, - 0xe5, 0x6f, 0xeb, 0xb0, 0xe5, 0x73, 0xeb, 0xb0, 0xe5, 0x6f, 0xeb, 0xb0, - 0xe6, 0x73, 0xeb, 0xb0, 0xe6, 0x6f, 0xeb, 0xb0, 0xe6, 0x73, 0xeb, 0xb0, - 0xe6, 0x6f, 0xeb, 0xb0, 0xe7, 0x73, 0xeb, 0xb0, 0xe7, 0x6f, 0xeb, 0xb0, - 0xe7, 0x73, 0xeb, 0xb0, 0xe7, 0x6f, 0xec, 0xb0, 0xe8, 0x6f, 0xeb, 0xb0, - 0xe8, 0x6f, 0xec, 0xb0, 0xe8, 0x6f, 0xeb, 0xb0, 0xe8, 0x6f, 0xec, 0xb0, - 0xe9, 0x6f, 0xeb, 0xb0, 0xe9, 0x6f, 0xec, 0xb0, 0xe9, 0x6f, 0xeb, 0xb0, - 0xe9, 0x6f, 0xec, 0xb0, 0xea, 0x6f, 0xeb, 0xb0, 0xea, 0x6f, 0xec, 0xb0, - 0xea, 0x6f, 0xeb, 0xb0, 0xea, 0x6f, 0xec, 0xb0, 0xeb, 0x6f, 0xeb, 0xb0, - 0xeb, 0x6f, 0xec, 0xb0, 0xeb, 0x6f, 0xeb, 0xaf, 0xeb, 0x6f, 0xec, 0xb0, - 0xeb, 0x6f, 0xec, 0xaf, 0xeb, 0x6f, 0xec, 0xb0, 0xeb, 0x6f, 0xec, 0xaf, - 0xeb, 0x6f, 0xec, 0xb0, 0xeb, 0x6f, 0xed, 0xaf, 0xeb, 0x6f, 0xed, 0xb0, - 0xeb, 0x6f, 0xed, 0xaf, 0xeb, 0x6f, 0xed, 0xb0, 0xeb, 0x6f, 0xee, 0xaf, - 0xeb, 0x6f, 0xee, 0xb0, 0xeb, 0x6f, 0xee, 0xaf, 0xeb, 0x6f, 0xee, 0xb0, - 0xeb, 0x6f, 0xef, 0xaf, 0xeb, 0x6f, 0xef, 0xb0, 0xeb, 0x6f, 0xef, 0xaf, - 0xeb, 0x6f, 0xef, 0xaa, 0xef, 0x6f, 0xf0, 0xaa, 0xf0, 0x6f, 0xf0, 0xaa, - 0xf0, 0x6f, 0xf0, 0xaa, 0xf0, 0x6f, 0xf0, 0xaa, 0xf0, 0x6f, 0xf1, 0xaa, - 0xf1, 0x6f, 0xf1, 0xaa, 0xf1, 0x6f, 0xf1, 0xaa, 0xf1, 0x6f, 0xf1, 0xaa, - 0xf3, 0x6f, 0xf2, 0xaa, 0xf3, 0x6f, 0xf2, 0xaa, 0xf3, 0x6f, 0xf2, 0xaa, - 0xf3, 0x6f, 0xf2, 0xaa, 0xf3, 0x6f, 0xf2, 0xb1, 0xf6, 0x6f, 0xf3, 0xb0, - 0xf6, 0x6f, 0xf3, 0xb1, 0xf6, 0x6f, 0xf3, 0xb0, 0xf6, 0x6f, 0xf3, 0xb1, - 0xf6, 0x6f, 0xf4, 0xb0, 0xf6, 0x6f, 0xf4, 0xb1, 0xf6, 0x6f, 0xf4, 0xb0, - 0xf6, 0x6f, 0xf4, 0xb1, 0xf6, 0x6f, 0xf5, 0xb0, 0xf6, 0x6f, 0xf5, 0xb1, - 0xf6, 0x6f, 0xf5, 0xb0, 0xf6, 0x6f, 0xf5, 0xb1, 0xf6, 0x6f, 0xf5, 0xb0, - 0xf6, 0x6f, 0xf6, 0xb1, 0xf6, 0x6f, 0xf6, 0xb0, 0xf6, 0x6f, 0xf6, 0xb0, - 0xf7, 0x6f, 0xf6, 0xb0, 0xf6, 0x6f, 0xf6, 0xb0, 0xf7, 0x6f, 0xf6, 0xb0, - 0xf7, 0x6f, 0xf6, 0xb0, 0xf7, 0x6f, 0xf6, 0xb0, 0xf7, 0x6f, 0xf6, 0xb0, - 0xf8, 0x6f, 0xf6, 0xb0, 0xf8, 0x6f, 0xf6, 0xb0, 0xf8, 0x6f, 0xf6, 0xb0, - 0xf8, 0x6c, 0xfa, 0xb0, 0xf8, 0x6f, 0xfa, 0xb0, 0xf9, 0x6f, 0xfa, 0xb0, - 0xf9, 0x6f, 0xfa, 0xb0, 0xf9, 0x6f, 0xfa, 0xb0, 0xf9, 0x6f, 0xfa, 0xb0, - 0xfa, 0x6f, 0xfa, 0xb0, 0xfa, 0x6f, 0xfa, 0xb0, 0xfa, 0x6f, 0xfa, 0xaf, - 0xfa, 0x6f, 0xfa, 0xb0, 0xfa, 0x6f, 0xfb, 0xaf, 0xfa, 0x6f, 0xfb, 0xb0, - 0xfa, 0x6f, 0xfb, 0xaf, 0xfa, 0x6f, 0xfb, 0xb0, 0xfa, 0x6f, 0xfc, 0xaf, - 0xfa, 0x6f, 0xfc, 0xb0, 0xfa, 0x6f, 0xfc, 0xaf, 0xfa, 0x6f, 0xfc, 0xae, - 0xfa, 0x6f, 0xfc, 0xaf, 0xfa, 0x6f, 0xfd, 0xae, 0xfa, 0x6f, 0xfd, 0xaf, - 0xfa, 0x6f, 0xfd, 0xae, 0xfa, 0x6f, 0xfd, 0xaf, 0xfa, 0x6f, 0xfe, 0xae, - 0xfa, 0x6f, 0xfe, 0xaf, 0xfa, 0x6f, 0xfe, 0xae, 0xfa, 0x6f, 0xfe, 0xaf, - 0xfa, 0x6f, 0xfe, 0xae, 0xfa, 0x6f, 0xff, 0xae, 0xfa, 0x6f, 0xff, 0xae, - 0xfa, 0x6f, 0x03, 0xb9, 0x93, 0x6f, 0x0a, 0xb6, 0x93, 0x6f, 0x0f, 0xb9, - 0x93, 0x6f, 0x14, 0xb6, 0x93, 0x6f, 0x17, 0xb9, 0x93, 0x6f, 0x1b, 0xb6, - 0x93, 0x6f, 0x1e, 0xb9, 0x93, 0x6f, 0x20, 0xb6, 0x93, 0x6f, 0x23, 0xb9, - 0x93, 0x6f, 0x25, 0xb6, 0x93, 0x6f, 0x27, 0xb9, 0x93, 0x6f, 0x29, 0xb6, - 0x93, 0x6f, 0x2b, 0xb9, 0x93, 0x6f, 0x2d, 0xb6, 0x93, 0x6f, 0x2f, 0xb9, - 0x93, 0x6f, 0x31, 0xb6, 0x93, 0x6f, 0x32, 0xb9, 0x93, 0x6f, 0x34, 0xb6, - 0x93, 0x6f, 0x35, 0xb9, 0x93, 0x6f, 0x37, 0xb6, 0x93, 0x6f, 0x38, 0xb9, - 0x93, 0x6f, 0x3a, 0xb6, 0x93, 0x6f, 0x3b, 0xb9, 0x93, 0x6f, 0x3c, 0xb6, - 0x93, 0x6f, 0x3e, 0xb9, 0x93, 0x6f, 0x3f, 0xb6, 0x93, 0x6f, 0x40, 0xb9, - 0x93, 0x6f, 0x42, 0xb6, 0x93, 0x6f, 0x43, 0xb9, 0x93, 0x6f, 0x44, 0xb6, - 0x93, 0x6f, 0x45, 0xb4, 0x94, 0x6f, 0x46, 0xb6, 0x93, 0x6f, 0x47, 0xb4, - 0x94, 0x6f, 0x48, 0xb6, 0x93, 0x6f, 0x49, 0xb4, 0x94, 0x6f, 0x4a, 0xb6, - 0x93, 0x6f, 0x4b, 0xb4, 0x94, 0x6f, 0x4c, 0xb6, 0x93, 0x6f, 0x4d, 0xb4, - 0x94, 0x6f, 0x4e, 0xb6, 0x93, 0x6f, 0x4f, 0xb4, 0x94, 0x6f, 0x50, 0xb6, - 0x93, 0x6f, 0x51, 0xb4, 0x94, 0x6f, 0x52, 0xb6, 0x93, 0x6f, 0x53, 0xb4, - 0x94, 0x6f, 0x54, 0xb6, 0x93, 0x6f, 0x55, 0xb4, 0x94, 0x6f, 0x56, 0xb6, - 0x93, 0x6f, 0x57, 0xb4, 0x94, 0x6f, 0x58, 0xb6, 0x93, 0x6f, 0x58, 0xb4, - 0x94, 0x6f, 0x59, 0xb6, 0x93, 0x6f, 0x5a, 0xb4, 0x94, 0x6f, 0x5b, 0xb6, - 0x93, 0x6f, 0x5c, 0xb4, 0x94, 0x6f, 0x5d, 0xb6, 0x93, 0x6f, 0x5d, 0xb4, - 0x94, 0x6f, 0x5e, 0xb6, 0x93, 0x6f, 0x5f, 0xb4, 0x94, 0x6f, 0x60, 0xb6, - 0x93, 0x6f, 0x60, 0xb4, 0x94, 0x6f, 0x61, 0xb6, 0x93, 0x6f, 0x62, 0xb4, - 0x94, 0x6f, 0x63, 0xb6, 0x93, 0x6f, 0x63, 0xb4, 0x94, 0x6f, 0x64, 0xb6, - 0x93, 0x6f, 0x65, 0xb4, 0x94, 0x6f, 0x66, 0xb6, 0x93, 0x6f, 0x66, 0xb4, - 0x94, 0x6f, 0x67, 0xb6, 0x93, 0x6f, 0x68, 0xb4, 0x94, 0x6f, 0x68, 0xb6, - 0x93, 0x6f, 0x69, 0xb4, 0x94, 0x6f, 0x6a, 0xb6, 0x93, 0x6f, 0x6a, 0xb4, - 0x94, 0x6f, 0x6b, 0xb6, 0x93, 0x6f, 0x6c, 0xb4, 0x94, 0x6f, 0x6c, 0xb6, - 0x93, 0x6f, 0x6d, 0xb4, 0x94, 0x6f, 0x6e, 0xb6, 0x93, 0x6f, 0x6e, 0xb4, - 0x94, 0x6f, 0x6f, 0xb6, 0x93, 0x6f, 0x70, 0xb4, 0x94, 0x6f, 0x70, 0xb6, - 0x93, 0x6f, 0x71, 0xb4, 0x94, 0x6f, 0x72, 0xb6, 0x93, 0x6f, 0x72, 0xb4, - 0x94, 0x6f, 0x73, 0xb6, 0x93, 0x6f, 0x73, 0xb4, 0x94, 0x6f, 0x74, 0xb6, - 0x93, 0x6f, 0x75, 0xb4, 0x94, 0x6f, 0x75, 0xb2, 0x94, 0x6f, 0x76, 0xb4, - 0x94, 0x6f, 0x76, 0xb2, 0x94, 0x6f, 0x77, 0xb4, 0x94, 0x6f, 0x78, 0xb2, - 0x94, 0x6f, 0x78, 0xb4, 0x94, 0x6f, 0x79, 0xb2, 0x94, 0x6f, 0x79, 0xb4, - 0x94, 0x6f, 0x7a, 0xb2, 0x94, 0x6f, 0x7a, 0xb4, 0x94, 0x6f, 0x7b, 0xb2, - 0x94, 0x6f, 0x7c, 0xb4, 0x94, 0x6f, 0x7c, 0xb2, 0x94, 0x6f, 0x7d, 0xb4, - 0x94, 0x6f, 0x7d, 0xb2, 0x94, 0x6f, 0x7e, 0xb4, 0x94, 0x6f, 0x7e, 0xb2, - 0x94, 0x6f, 0x7f, 0xb4, 0x94, 0x6f, 0x7f, 0xb2, 0x94, 0x6f, 0x80, 0xb4, - 0x94, 0x6f, 0x81, 0xb2, 0x94, 0x6f, 0x81, 0xb4, 0x94, 0x6f, 0x82, 0xb2, - 0x94, 0x6f, 0x82, 0xb4, 0x94, 0x6f, 0x83, 0xb2, 0x94, 0x6f, 0x83, 0xb4, - 0x94, 0x6f, 0x84, 0xb2, 0x94, 0x6f, 0x84, 0xb4, 0x94, 0x6f, 0x85, 0xb2, - 0x94, 0x6f, 0x85, 0xb4, 0x94, 0x6f, 0x86, 0xb2, 0x94, 0x6f, 0x86, 0xb4, - 0x94, 0x6f, 0x87, 0xb2, 0x94, 0x6f, 0x87, 0xb4, 0x94, 0x6f, 0x88, 0xb2, - 0x94, 0x6f, 0x88, 0xb4, 0x94, 0x6f, 0x89, 0xb2, 0x94, 0x6f, 0x89, 0xb0, - 0x94, 0x6f, 0x8a, 0xb2, 0x94, 0x6f, 0x8a, 0xb0, 0x94, 0x6f, 0x8b, 0xb2, - 0x94, 0x6f, 0x8b, 0xb0, 0x94, 0x6f, 0x8c, 0xb2, 0x94, 0x6f, 0x8c, 0xb0, - 0x94, 0x6f, 0x8d, 0xb2, 0x94, 0x6f, 0x8d, 0xb0, 0x94, 0x6f, 0x8e, 0xb2, - 0x94, 0x6f, 0x8e, 0xb0, 0x94, 0x6f, 0x8e, 0xb2, 0x94, 0x6f, 0x8f, 0xb0, - 0x94, 0x6f, 0x8f, 0xb2, 0x94, 0x6f, 0x90, 0xb0, 0x94, 0x6f, 0x90, 0xb2, - 0x94, 0x6f, 0x91, 0xb0, 0x94, 0x6f, 0x91, 0xb2, 0x94, 0x6f, 0x92, 0xb0, - 0x94, 0x6f, 0x92, 0xb2, 0x94, 0x6f, 0x93, 0xb0, 0x94, 0x6f, 0x93, 0xb0, - 0x95, 0x6f, 0x94, 0xb0, 0x94, 0x6f, 0x94, 0xb0, 0x95, 0x6f, 0x94, 0xb0, - 0x94, 0x6f, 0x94, 0xb0, 0x95, 0x6f, 0x96, 0xb0, 0x95, 0x6f, 0x97, 0xb0, - 0x96, 0x6f, 0x96, 0xb0, 0x95, 0x6f, 0x97, 0xb0, 0x96, 0x6f, 0x97, 0xb0, - 0x95, 0x6f, 0x98, 0xb0, 0x96, 0x6f, 0x98, 0xaf, 0x96, 0x6f, 0x98, 0xb0, - 0x96, 0x6f, 0x99, 0xaf, 0x96, 0x6f, 0x99, 0xae, 0x99, 0x6f, 0x9a, 0xae, - 0x9a, 0x6f, 0x9a, 0xae, 0x9a, 0x6f, 0x9a, 0xae, 0x9a, 0x6f, 0x9b, 0xae, - 0x9b, 0x6f, 0x9b, 0xae, 0x9b, 0x6f, 0x9c, 0xae, 0x9d, 0x6f, 0x9c, 0xae, - 0x9e, 0x6f, 0x9d, 0xae, 0x9d, 0x6f, 0x9d, 0xae, 0x9e, 0x6f, 0x9d, 0xae, - 0x9d, 0x6f, 0x9e, 0xae, 0x9e, 0x6f, 0x9e, 0xae, 0x9e, 0x6f, 0x9f, 0xae, - 0x9f, 0x6f, 0x9f, 0xae, 0x9f, 0x6f, 0x9f, 0xae, 0x9f, 0x6f, 0xa0, 0xae, - 0xa0, 0x6f, 0xa0, 0xaf, 0xa2, 0x6f, 0xa1, 0xaf, 0xa2, 0x6f, 0xa1, 0xaf, - 0xa2, 0x6f, 0xa1, 0xaf, 0xa2, 0x6f, 0xa2, 0xaf, 0xa2, 0x6f, 0xa2, 0xaf, - 0xa2, 0x6f, 0xa3, 0xaf, 0xa3, 0x6f, 0xa3, 0xaf, 0xa3, 0x6f, 0xa3, 0xaf, - 0xa3, 0x6f, 0xa4, 0xaf, 0xa4, 0x6f, 0xa4, 0xaf, 0xa4, 0x6f, 0xa5, 0xaf, - 0xa5, 0x6f, 0xa5, 0xaf, 0xa5, 0x6f, 0xa5, 0xb0, 0xa6, 0x6f, 0xa6, 0xb0, - 0xa6, 0x6f, 0xa6, 0xb0, 0xa6, 0x6f, 0xa6, 0xb0, 0xa6, 0x6f, 0xa7, 0xb0, - 0xa7, 0x6f, 0xa7, 0xb0, 0xa7, 0x6f, 0xa8, 0xb0, 0xa8, 0x6f, 0xa8, 0xb0, - 0xa8, 0x6f, 0xa8, 0xb0, 0xa8, 0x6f, 0xa9, 0xb0, 0xa9, 0x6f, 0xa9, 0xb0, - 0xa9, 0x6f, 0xaa, 0xb0, 0xaa, 0x6f, 0xaa, 0xb0, 0xab, 0x6f, 0xaa, 0xb0, - 0xaa, 0x6e, 0xab, 0xb0, 0xab, 0x6e, 0xab, 0xb0, 0xab, 0x6e, 0xab, 0xb0, - 0xab, 0x6e, 0xac, 0xb0, 0xac, 0x6e, 0xac, 0xb0, 0xac, 0x6e, 0xac, 0xb0, - 0xac, 0x6e, 0xad, 0xb0, 0xad, 0x6e, 0xad, 0xb0, 0xad, 0x6e, 0xae, 0xb0, - 0xae, 0x6e, 0xae, 0xb1, 0xae, 0x6f, 0xae, 0xb1, 0xae, 0x6f, 0xaf, 0xb1, - 0xaf, 0x6f, 0xaf, 0xb1, 0xaf, 0x6f, 0xaf, 0xb1, 0xaf, 0x6f, 0xb0, 0xb1, - 0xb0, 0x6f, 0xb0, 0xb1, 0xb0, 0x6f, 0xb0, 0xb1, 0xb0, 0x6f, 0xb1, 0xb1, - 0xb1, 0x6f, 0xb1, 0xb1, 0xb1, 0x6f, 0xb2, 0xb1, 0xb2, 0x6f, 0xb2, 0xb1, - 0xb1, 0x6f, 0xb2, 0xb1, 0xb2, 0x6f, 0xb3, 0xb2, 0xb3, 0x6f, 0xb3, 0xb2, - 0xb3, 0x6f, 0xb3, 0xb2, 0xb3, 0x6f, 0xb4, 0xb2, 0xb4, 0x6f, 0xb4, 0xb2, - 0xb4, 0x6f, 0xb4, 0xb2, 0xb4, 0x6f, 0xb5, 0xb2, 0xb5, 0x6f, 0xb5, 0xb2, - 0xb5, 0x6f, 0xb5, 0xb2, 0xb5, 0x6f, 0xb6, 0xb2, 0xb5, 0x6f, 0xb6, 0xb2, - 0xb5, 0x6f, 0xb6, 0xb2, 0xb5, 0x6f, 0xb7, 0xb2, 0xb5, 0x6f, 0xb7, 0xb3, - 0xb7, 0x6f, 0xb7, 0xb3, 0xb7, 0x6f, 0xb8, 0xb3, 0xb8, 0x6f, 0xb8, 0xb3, - 0xb8, 0x6f, 0xb8, 0xb3, 0xb8, 0x6f, 0xb9, 0xb3, 0xb9, 0x6f, 0xb9, 0xb3, - 0xb9, 0x6f, 0xb9, 0xb3, 0xb9, 0x6f, 0xba, 0xb3, 0xb9, 0x6f, 0xba, 0xb3, - 0xb9, 0x6f, 0xba, 0xb3, 0xb9, 0x6f, 0xbb, 0xb3, 0xb9, 0x6f, 0xbb, 0xb3, - 0xbb, 0x6f, 0xbb, 0xb3, 0xbb, 0x6f, 0xbc, 0xb3, 0xbc, 0x6f, 0xbc, 0xb3, - 0xbc, 0x6f, 0xbc, 0xb3, 0xbc, 0x6f, 0xbd, 0xb3, 0xbd, 0x6f, 0xbd, 0xb3, - 0xbd, 0x6f, 0xbd, 0xb3, 0xbd, 0x6f, 0xbe, 0xb3, 0xbd, 0x6f, 0xbe, 0xb3, - 0xbd, 0x6f, 0xbe, 0xb3, 0xbd, 0x6f, 0xbf, 0xb4, 0xbf, 0x6f, 0xbf, 0xb4, - 0xbf, 0x6f, 0xbf, 0xb4, 0xbf, 0x6f, 0xc0, 0xb4, 0xc0, 0x6f, 0xc0, 0xb4, - 0xc0, 0x6f, 0xc0, 0xb4, 0xc0, 0x6f, 0xc1, 0xb4, 0xc1, 0x6f, 0xc1, 0xb4, - 0xc0, 0x6f, 0xc1, 0xb4, 0xc1, 0x6f, 0xc1, 0xb4, 0xc0, 0x6f, 0xc2, 0xb4, - 0xc1, 0x6f, 0xc2, 0xb4, 0xc0, 0x6f, 0xc2, 0xb4, 0xc1, 0x6f, 0xc3, 0xb5, - 0xc3, 0x6f, 0xc3, 0xb5, 0xc3, 0x6f, 0xc3, 0xb5, 0xc3, 0x6f, 0xc4, 0xb5, - 0xc4, 0x6f, 0xc4, 0xb5, 0xc4, 0x6f, 0xc4, 0xb5, 0xc4, 0x6f, 0xc5, 0xb5, - 0xc4, 0x6f, 0xc5, 0xb5, 0xc4, 0x6f, 0xc5, 0xb5, 0xc4, 0x6f, 0xc6, 0xb5, - 0xc4, 0x6f, 0xc6, 0xb5, 0xc4, 0x6f, 0xc6, 0xb5, 0xc6, 0x6f, 0xc6, 0xb5, - 0xc6, 0x6f, 0xc7, 0xb5, 0xc7, 0x6f, 0xc7, 0xb5, 0xc7, 0x6f, 0xc7, 0xb5, - 0xc7, 0x6f, 0xc8, 0xb5, 0xc7, 0x6f, 0xc8, 0xb5, 0xc7, 0x6f, 0xc8, 0xb5, - 0xc7, 0x6f, 0xc9, 0xb5, 0xc7, 0x6f, 0xc9, 0xb5, 0xc7, 0x6f, 0xc9, 0xb5, - 0xc7, 0x6f, 0xc9, 0xb6, 0xc9, 0x6f, 0xca, 0xb6, 0xca, 0x6f, 0xca, 0xb6, - 0xca, 0x6f, 0xca, 0xb6, 0xca, 0x6f, 0xcb, 0xb6, 0xcb, 0x6f, 0xcb, 0xb0, - 0xd0, 0x6f, 0xcb, 0xb1, 0xcf, 0x6f, 0xcc, 0xb0, 0xd0, 0x6f, 0xcc, 0xb1, - 0xcf, 0x6f, 0xcc, 0xb0, 0xd0, 0x6f, 0xcc, 0xb1, 0xcf, 0x6f, 0xcd, 0xb0, - 0xd0, 0x6f, 0xcd, 0xb1, 0xcf, 0x6f, 0xcd, 0xb0, 0xd0, 0x6f, 0xce, 0xb1, - 0xcf, 0x6f, 0xce, 0xb0, 0xd0, 0x6f, 0xce, 0xb1, 0xcf, 0x6f, 0xce, 0xb0, - 0xd0, 0x6f, 0xcf, 0xb1, 0xcf, 0x6f, 0xcf, 0xb0, 0xd0, 0x6f, 0xcf, 0xb0, - 0xd0, 0x6f, 0xcf, 0xb0, 0xd0, 0x6f, 0xcf, 0xb0, 0xd0, 0x6f, 0xcf, 0xb0, - 0xd0, 0x6f, 0xcf, 0xb0, 0xd0, 0x6f, 0xcf, 0xb0, 0xd1, 0x6f, 0xcf, 0xb0, - 0xd1, 0x6f, 0xcf, 0xb0, 0xd1, 0x6f, 0xcf, 0xb0, 0xd2, 0x6f, 0xd0, 0xb0, - 0xd2, 0x6c, 0xcf, 0xb0, 0xd2, 0x6f, 0xd0, 0xb0, 0xd2, 0x6c, 0xcf, 0xb0, - 0xd3, 0x6f, 0xd0, 0xb0, 0xd3, 0x6c, 0xcf, 0xb0, 0xd3, 0x6f, 0xd0, 0xb0, - 0xd4, 0x6c, 0xcf, 0xb0, 0xd4, 0x6f, 0xd0, 0xb0, 0xd4, 0x6c, 0xcf, 0xb0, - 0xd4, 0x6f, 0xd0, 0xb0, 0xd5, 0x6c, 0xcf, 0xb0, 0xd5, 0x6f, 0xd0, 0xb0, - 0xd5, 0x6c, 0xcf, 0xb0, 0xd6, 0x6f, 0xd0, 0xb0, 0xd6, 0x6c, 0xcf, 0xb0, - 0xd6, 0x6f, 0xd0, 0xb0, 0xd6, 0x6c, 0xd0, 0xb0, 0xd7, 0x6a, 0xd0, 0xb0, - 0xd7, 0x6c, 0xd0, 0xb0, 0xd7, 0x6a, 0xd0, 0xb0, 0xd7, 0x6c, 0xd0, 0xb0, - 0xd8, 0x6a, 0xd0, 0xb0, 0xd8, 0x6c, 0xd0, 0xb0, 0xd8, 0x6a, 0xd0, 0xb0, - 0xd9, 0x6c, 0xd0, 0xb0, 0xd9, 0x6a, 0xd0, 0xb0, 0xd9, 0x6c, 0xd0, 0xb0, - 0xd9, 0x6a, 0xd0, 0xb0, 0xda, 0x6c, 0xd0, 0xb0, 0xda, 0x6a, 0xd0, 0xb0, - 0xda, 0x6c, 0xd0, 0xb0, 0xda, 0x6a, 0xd0, 0xb0, 0xdb, 0x6c, 0xd0, 0xb0, - 0xdb, 0x6a, 0xd0, 0xb0, 0xdb, 0x6c, 0xd0, 0xb0, 0xdb, 0x6a, 0xd0, 0xb0, - 0xdc, 0x6c, 0xd0, 0xb0, 0xdc, 0x6a, 0xd0, 0xb0, 0xdc, 0x6c, 0xd0, 0xb0, - 0xdd, 0x6a, 0xd0, 0xb0, 0xdd, 0x6c, 0xd0, 0xb0, 0xdd, 0x6a, 0xd0, 0xb0, - 0xdd, 0x6c, 0xd0, 0xb0, 0xde, 0x6a, 0xd0, 0xb0, 0xde, 0x6c, 0xeb, 0xb0, - 0xde, 0x76, 0xeb, 0xb0, 0xde, 0x72, 0xeb, 0xb0, 0xdf, 0x76, 0xeb, 0xb0, - 0xdf, 0x72, 0xeb, 0xb0, 0xdf, 0x6f, 0xeb, 0xb0, 0xdf, 0x72, 0xeb, 0xb0, - 0xe0, 0x6f, 0xeb, 0xb0, 0xe0, 0x72, 0xeb, 0xb0, 0xe0, 0x6f, 0xeb, 0xb0, - 0xe1, 0x72, 0xeb, 0xb0, 0xe1, 0x6f, 0xeb, 0xb0, 0xe1, 0x72, 0xeb, 0xb0, - 0xe1, 0x6f, 0xeb, 0xb0, 0xe2, 0x72, 0xeb, 0xb0, 0xe2, 0x6f, 0xeb, 0xb0, - 0xe2, 0x72, 0xeb, 0xb0, 0xe2, 0x6f, 0xeb, 0xb0, 0xe3, 0x72, 0xeb, 0xb0, - 0xe3, 0x6f, 0xeb, 0xb0, 0xe3, 0x72, 0xeb, 0xb0, 0xe3, 0x6f, 0xeb, 0xb0, - 0xe4, 0x72, 0xeb, 0xb0, 0xe4, 0x6f, 0xeb, 0xb0, 0xe4, 0x72, 0xeb, 0xb0, - 0xe4, 0x6f, 0xeb, 0xb0, 0xe5, 0x72, 0xeb, 0xb0, 0xe5, 0x6f, 0xeb, 0xb0, - 0xe5, 0x72, 0xeb, 0xb0, 0xe5, 0x6f, 0xeb, 0xb0, 0xe6, 0x72, 0xeb, 0xb0, - 0xe6, 0x6f, 0xeb, 0xb0, 0xe6, 0x72, 0xeb, 0xb0, 0xe6, 0x6f, 0xeb, 0xb0, - 0xe7, 0x72, 0xeb, 0xb0, 0xe7, 0x6f, 0xeb, 0xb0, 0xe7, 0x72, 0xeb, 0xb0, - 0xe7, 0x6f, 0xeb, 0xb0, 0xe8, 0x72, 0xeb, 0xb0, 0xe8, 0x6f, 0xeb, 0xb0, - 0xe8, 0x72, 0xeb, 0xb0, 0xe8, 0x6f, 0xeb, 0xb0, 0xe9, 0x72, 0xeb, 0xb0, - 0xe9, 0x6f, 0xeb, 0xb0, 0xe9, 0x72, 0xeb, 0xb0, 0xe9, 0x6f, 0xec, 0xb0, - 0xea, 0x6f, 0xeb, 0xb0, 0xea, 0x6f, 0xec, 0xb0, 0xea, 0x6f, 0xeb, 0xb0, - 0xea, 0x6f, 0xec, 0xb0, 0xeb, 0x6f, 0xeb, 0xb0, 0xeb, 0x6f, 0xec, 0xb0, - 0xeb, 0x6f, 0xeb, 0xb0, 0xeb, 0x6f, 0xec, 0xb0, 0xeb, 0x6f, 0xec, 0xb0, - 0xeb, 0x6f, 0xec, 0xb0, 0xeb, 0x6f, 0xec, 0xb0, 0xeb, 0x6f, 0xec, 0xb0, - 0xeb, 0x6f, 0xed, 0xb0, 0xeb, 0x6f, 0xed, 0xb0, 0xeb, 0x6f, 0xed, 0xb0, - 0xeb, 0x6f, 0xed, 0xb0, 0xeb, 0x6f, 0xee, 0xb0, 0xeb, 0x6f, 0xee, 0xb0, - 0xeb, 0x6f, 0xee, 0xb0, 0xeb, 0x6f, 0xee, 0xb0, 0xeb, 0x6f, 0xef, 0xb0, - 0xeb, 0x6f, 0xef, 0xb0, 0xeb, 0x6f, 0xef, 0xb0, 0xeb, 0x6f, 0xef, 0xb0, - 0xeb, 0x6f, 0xf0, 0xb0, 0xeb, 0x6f, 0xf0, 0xaa, 0xf1, 0x6f, 0xf0, 0xaa, - 0xf2, 0x6f, 0xf0, 0xaa, 0xf1, 0x6f, 0xf1, 0xaa, 0xf2, 0x6f, 0xf1, 0xaa, - 0xf1, 0x6f, 0xf1, 0xaa, 0xf2, 0x6f, 0xf1, 0xaa, 0xf1, 0x6f, 0xf2, 0xaa, - 0xf2, 0x6f, 0xf2, 0xaa, 0xf2, 0x6f, 0xf2, 0xaa, 0xf2, 0x6f, 0xf2, 0xaa, - 0xf2, 0x6f, 0xf2, 0xb1, 0xf6, 0x6f, 0xf3, 0xb0, 0xf6, 0x6f, 0xf3, 0xb1, - 0xf6, 0x6f, 0xf3, 0xb0, 0xf6, 0x6f, 0xf3, 0xb1, 0xf6, 0x6f, 0xf4, 0xb0, - 0xf6, 0x6f, 0xf4, 0xb1, 0xf6, 0x6f, 0xf4, 0xb0, 0xf6, 0x6f, 0xf4, 0xb1, - 0xf6, 0x6f, 0xf5, 0xb0, 0xf6, 0x6f, 0xf5, 0xb1, 0xf6, 0x6f, 0xf5, 0xb0, - 0xf6, 0x6f, 0xf5, 0xb1, 0xf6, 0x6f, 0xf5, 0xb0, 0xf6, 0x6f, 0xf6, 0xb1, - 0xf6, 0x6f, 0xf6, 0xb0, 0xf6, 0x6f, 0xf6, 0xb0, 0xf7, 0x6f, 0xf6, 0xb0, - 0xf6, 0x6f, 0xf6, 0xb0, 0xf7, 0x6f, 0xf6, 0xb0, 0xf7, 0x6f, 0xf6, 0xb0, - 0xf7, 0x6f, 0xf6, 0xb0, 0xf7, 0x6f, 0xf6, 0xb0, 0xf8, 0x6f, 0xf6, 0xb0, - 0xf8, 0x6f, 0xf6, 0xb0, 0xf8, 0x6f, 0xf6, 0xb0, 0xf8, 0x6f, 0xfa, 0xb0, - 0xf8, 0x6f, 0xfa, 0xb0, 0xf9, 0x6f, 0xfa, 0xb0, 0xf9, 0x6f, 0xfa, 0xb0, - 0xf9, 0x6f, 0xfa, 0xb0, 0xf9, 0x6f, 0xfa, 0xb0, 0xfa, 0x6f, 0xfa, 0xb0, - 0xfa, 0x6f, 0xfa, 0xb0, 0xfa, 0x6f, 0xfa, 0xb0, 0xfa, 0x6f, 0xfa, 0xb0, - 0xfa, 0x6f, 0xfb, 0xb0, 0xfa, 0x6f, 0xfb, 0xb0, 0xfa, 0x6f, 0xfb, 0xb0, - 0xfa, 0x6f, 0xfb, 0xb0, 0xfa, 0x6f, 0xfc, 0xb0, 0xfa, 0x6f, 0xfc, 0xb0, - 0xfa, 0x6f, 0xfc, 0xb0, 0xfa, 0x6f, 0xfc, 0xb0, 0xfa, 0x6f, 0xfc, 0xb0, - 0xfa, 0x6f, 0xfd, 0xb0, 0xfa, 0x6f, 0xfd, 0xb0, 0xfa, 0x6f, 0xfd, 0xb0, - 0xfa, 0x6f, 0xfd, 0xb0, 0xfa, 0x6f, 0xfe, 0xb0, 0xfa, 0x6f, 0xfe, 0xb0, - 0xfa, 0x6f, 0xfe, 0xae, 0xfa, 0x6f, 0xfe, 0xb0, 0xfa, 0x6f, 0xfe, 0xae, - 0xfa, 0x6f, 0xff, 0xb0, 0xfa, 0x6f, 0xff, 0xae, 0xfa, 0x6f, 0x03, 0xb8, - 0x93, 0x70, 0x0a, 0xb8, 0x93, 0x70, 0x0f, 0xb8, 0x93, 0x70, 0x14, 0xba, - 0x92, 0x70, 0x17, 0xb8, 0x93, 0x70, 0x1b, 0xba, 0x92, 0x70, 0x1e, 0xb8, - 0x93, 0x70, 0x20, 0xba, 0x92, 0x70, 0x23, 0xb8, 0x93, 0x70, 0x25, 0xba, - 0x92, 0x70, 0x27, 0xb8, 0x93, 0x70, 0x29, 0xba, 0x92, 0x70, 0x2b, 0xb8, - 0x93, 0x70, 0x2d, 0xba, 0x92, 0x70, 0x2f, 0xb8, 0x93, 0x70, 0x31, 0xba, - 0x92, 0x70, 0x32, 0xb8, 0x93, 0x70, 0x34, 0xb6, 0x93, 0x70, 0x35, 0xb8, - 0x93, 0x70, 0x37, 0xb6, 0x93, 0x70, 0x38, 0xb8, 0x93, 0x70, 0x3a, 0xb6, - 0x93, 0x70, 0x3b, 0xb8, 0x93, 0x70, 0x3c, 0xb6, 0x93, 0x70, 0x3e, 0xb8, - 0x93, 0x70, 0x3f, 0xb6, 0x93, 0x70, 0x40, 0xb8, 0x93, 0x70, 0x42, 0xb6, - 0x93, 0x70, 0x43, 0xb8, 0x93, 0x70, 0x44, 0xb6, 0x93, 0x70, 0x45, 0xb8, - 0x93, 0x70, 0x46, 0xb6, 0x93, 0x70, 0x47, 0xb8, 0x93, 0x70, 0x48, 0xb6, - 0x93, 0x70, 0x49, 0xb8, 0x93, 0x70, 0x4a, 0xb6, 0x93, 0x70, 0x4b, 0xb8, - 0x93, 0x70, 0x4c, 0xb6, 0x93, 0x70, 0x4d, 0xb8, 0x93, 0x70, 0x4e, 0xb6, - 0x93, 0x70, 0x4f, 0xb8, 0x93, 0x70, 0x50, 0xb6, 0x93, 0x70, 0x51, 0xb8, - 0x93, 0x70, 0x52, 0xb6, 0x93, 0x70, 0x53, 0xb8, 0x93, 0x70, 0x54, 0xb6, - 0x93, 0x70, 0x55, 0xb4, 0x94, 0x70, 0x56, 0xb6, 0x93, 0x70, 0x57, 0xb4, - 0x94, 0x70, 0x58, 0xb6, 0x93, 0x70, 0x58, 0xb4, 0x94, 0x70, 0x59, 0xb6, - 0x93, 0x70, 0x5a, 0xb4, 0x94, 0x70, 0x5b, 0xb6, 0x93, 0x70, 0x5c, 0xb4, - 0x94, 0x70, 0x5d, 0xb6, 0x93, 0x70, 0x5d, 0xb4, 0x94, 0x70, 0x5e, 0xb6, - 0x93, 0x70, 0x5f, 0xb4, 0x94, 0x70, 0x60, 0xb6, 0x93, 0x70, 0x60, 0xb4, - 0x94, 0x70, 0x61, 0xb6, 0x93, 0x70, 0x62, 0xb4, 0x94, 0x70, 0x63, 0xb6, - 0x93, 0x70, 0x63, 0xb4, 0x94, 0x70, 0x64, 0xb6, 0x93, 0x70, 0x65, 0xb4, - 0x94, 0x70, 0x66, 0xb6, 0x93, 0x70, 0x66, 0xb4, 0x94, 0x70, 0x67, 0xb6, - 0x93, 0x70, 0x68, 0xb4, 0x94, 0x70, 0x68, 0xb6, 0x93, 0x70, 0x69, 0xb4, - 0x94, 0x70, 0x6a, 0xb6, 0x93, 0x70, 0x6a, 0xb4, 0x94, 0x70, 0x6b, 0xb6, - 0x93, 0x70, 0x6c, 0xb4, 0x94, 0x70, 0x6c, 0xb6, 0x93, 0x70, 0x6d, 0xb4, - 0x94, 0x70, 0x6e, 0xb6, 0x93, 0x70, 0x6e, 0xb4, 0x94, 0x70, 0x6f, 0xb6, - 0x93, 0x70, 0x70, 0xb4, 0x94, 0x70, 0x70, 0xb6, 0x93, 0x70, 0x71, 0xb4, - 0x94, 0x70, 0x72, 0xb6, 0x93, 0x70, 0x72, 0xb4, 0x94, 0x70, 0x73, 0xb2, - 0x94, 0x70, 0x73, 0xb4, 0x94, 0x70, 0x74, 0xb2, 0x94, 0x70, 0x75, 0xb4, - 0x94, 0x70, 0x75, 0xb2, 0x94, 0x70, 0x76, 0xb4, 0x94, 0x70, 0x76, 0xb2, - 0x94, 0x70, 0x77, 0xb4, 0x94, 0x70, 0x78, 0xb2, 0x94, 0x70, 0x78, 0xb4, - 0x94, 0x70, 0x79, 0xb2, 0x94, 0x70, 0x79, 0xb4, 0x94, 0x70, 0x7a, 0xb2, - 0x94, 0x70, 0x7a, 0xb4, 0x94, 0x70, 0x7b, 0xb2, 0x94, 0x70, 0x7c, 0xb4, - 0x94, 0x70, 0x7c, 0xb2, 0x94, 0x70, 0x7d, 0xb4, 0x94, 0x70, 0x7d, 0xb2, - 0x94, 0x70, 0x7e, 0xb4, 0x94, 0x70, 0x7e, 0xb2, 0x94, 0x70, 0x7f, 0xb4, - 0x94, 0x70, 0x7f, 0xb2, 0x94, 0x70, 0x80, 0xb4, 0x94, 0x70, 0x81, 0xb2, - 0x94, 0x70, 0x81, 0xb4, 0x94, 0x70, 0x82, 0xb2, 0x94, 0x70, 0x82, 0xb4, - 0x94, 0x70, 0x83, 0xb2, 0x94, 0x70, 0x83, 0xb4, 0x94, 0x70, 0x84, 0xb2, - 0x94, 0x70, 0x84, 0xb4, 0x94, 0x70, 0x85, 0xb2, 0x94, 0x70, 0x85, 0xb4, - 0x94, 0x70, 0x86, 0xb2, 0x94, 0x70, 0x86, 0xb4, 0x94, 0x70, 0x87, 0xb2, - 0x94, 0x70, 0x87, 0xb4, 0x94, 0x70, 0x88, 0xb2, 0x94, 0x70, 0x88, 0xb4, - 0x94, 0x70, 0x89, 0xb2, 0x94, 0x70, 0x89, 0xb4, 0x94, 0x70, 0x8a, 0xb2, - 0x94, 0x70, 0x8a, 0xb4, 0x94, 0x70, 0x8b, 0xb2, 0x94, 0x70, 0x8b, 0xb4, - 0x94, 0x70, 0x8c, 0xb2, 0x94, 0x70, 0x8c, 0xb4, 0x94, 0x70, 0x8d, 0xb2, - 0x94, 0x70, 0x8d, 0xb1, 0x94, 0x70, 0x8e, 0xb2, 0x94, 0x70, 0x8e, 0xb1, - 0x94, 0x70, 0x8e, 0xb2, 0x94, 0x70, 0x8f, 0xb1, 0x94, 0x70, 0x8f, 0xb2, - 0x94, 0x70, 0x90, 0xb1, 0x94, 0x70, 0x90, 0xb2, 0x94, 0x70, 0x91, 0xb1, - 0x94, 0x70, 0x91, 0xb2, 0x94, 0x70, 0x92, 0xb1, 0x94, 0x70, 0x92, 0xb2, - 0x94, 0x70, 0x93, 0xb1, 0x94, 0x70, 0x93, 0xb2, 0x94, 0x70, 0x94, 0xb1, - 0x94, 0x70, 0x94, 0xb2, 0x94, 0x70, 0x94, 0xb1, 0x94, 0x70, 0x94, 0xb1, - 0x95, 0x70, 0x96, 0xb1, 0x95, 0x70, 0x97, 0xb1, 0x96, 0x70, 0x96, 0xb1, - 0x95, 0x70, 0x97, 0xb1, 0x96, 0x70, 0x97, 0xb1, 0x95, 0x70, 0x98, 0xb1, - 0x96, 0x70, 0x98, 0xaf, 0x96, 0x70, 0x98, 0xb1, 0x96, 0x70, 0x99, 0xaf, - 0x96, 0x70, 0x99, 0xb1, 0x96, 0x70, 0x9a, 0xaf, 0x96, 0x70, 0x9a, 0xae, - 0x9b, 0x70, 0x9a, 0xae, 0x9b, 0x70, 0x9b, 0xae, 0x9b, 0x70, 0x9b, 0xae, - 0x9b, 0x70, 0x9c, 0xae, 0x9c, 0x70, 0x9c, 0xae, 0x9c, 0x70, 0x9d, 0xae, - 0x9d, 0x70, 0x9d, 0xae, 0x9d, 0x70, 0x9d, 0xae, 0x9d, 0x70, 0x9e, 0xae, - 0x9e, 0x70, 0x9e, 0xaf, 0xa0, 0x70, 0x9f, 0xaf, 0xa0, 0x70, 0x9f, 0xaf, - 0xa0, 0x70, 0x9f, 0xaf, 0xa0, 0x70, 0xa0, 0xaf, 0xa0, 0x70, 0xa0, 0xaf, - 0xa0, 0x70, 0xa1, 0xaf, 0xa1, 0x70, 0xa1, 0xaf, 0xa1, 0x70, 0xa1, 0xaf, - 0xa1, 0x70, 0xa2, 0xaf, 0xa2, 0x70, 0xa2, 0xaf, 0xa2, 0x70, 0xa3, 0xaf, - 0xa4, 0x70, 0xa3, 0xaf, 0xa5, 0x70, 0xa3, 0xaf, 0xa4, 0x70, 0xa4, 0xaf, - 0xa5, 0x70, 0xa4, 0xaf, 0xa4, 0x70, 0xa5, 0xaf, 0xa5, 0x70, 0xa5, 0xaf, - 0xa5, 0x70, 0xa5, 0xaf, 0xa5, 0x70, 0xa6, 0xaf, 0xa6, 0x70, 0xa6, 0xaf, - 0xa6, 0x70, 0xa6, 0xaf, 0xa6, 0x70, 0xa7, 0xaf, 0xa7, 0x70, 0xa7, 0xaf, - 0xa7, 0x70, 0xa8, 0xb0, 0xa8, 0x70, 0xa8, 0xb0, 0xa9, 0x70, 0xa8, 0xb0, - 0xa8, 0x70, 0xa9, 0xb0, 0xa9, 0x70, 0xa9, 0xb0, 0xa9, 0x70, 0xaa, 0xb0, - 0xaa, 0x70, 0xaa, 0xb0, 0xaa, 0x70, 0xaa, 0xb0, 0xaa, 0x70, 0xab, 0xb0, - 0xab, 0x70, 0xab, 0xb0, 0xab, 0x70, 0xab, 0xb0, 0xab, 0x70, 0xab, 0xb1, - 0xac, 0x70, 0xac, 0xb1, 0xac, 0x6f, 0xac, 0xb1, 0xac, 0x6f, 0xad, 0xb1, - 0xad, 0x6f, 0xad, 0xb1, 0xad, 0x6f, 0xae, 0xb1, 0xae, 0x6f, 0xae, 0xb1, - 0xae, 0x6f, 0xae, 0xb1, 0xae, 0x6f, 0xaf, 0xb1, 0xaf, 0x6f, 0xaf, 0xb1, - 0xaf, 0x6f, 0xaf, 0xb1, 0xaf, 0x6f, 0xb0, 0xb1, 0xb0, 0x6f, 0xb0, 0xb2, - 0xb0, 0x70, 0xb0, 0xb2, 0xb0, 0x70, 0xb1, 0xb2, 0xb1, 0x70, 0xb1, 0xb2, - 0xb1, 0x70, 0xb2, 0xb2, 0xb2, 0x70, 0xb2, 0xb2, 0xb2, 0x70, 0xb2, 0xb2, - 0xb2, 0x70, 0xb3, 0xb2, 0xb3, 0x70, 0xb3, 0xb2, 0xb3, 0x70, 0xb3, 0xb2, - 0xb3, 0x70, 0xb4, 0xb2, 0xb4, 0x70, 0xb4, 0xb2, 0xb3, 0x70, 0xb4, 0xb2, - 0xb4, 0x70, 0xb5, 0xb2, 0xb5, 0x70, 0xb5, 0xb2, 0xb5, 0x70, 0xb5, 0xb2, - 0xb5, 0x70, 0xb6, 0xb2, 0xb6, 0x70, 0xb6, 0xb2, 0xb6, 0x70, 0xb6, 0xb2, - 0xb6, 0x70, 0xb7, 0xb2, 0xb7, 0x70, 0xb7, 0xb2, 0xb7, 0x70, 0xb7, 0xb2, - 0xb7, 0x70, 0xb8, 0xb2, 0xb7, 0x70, 0xb8, 0xb2, 0xb7, 0x70, 0xb8, 0xb2, - 0xb7, 0x70, 0xb9, 0xb2, 0xb7, 0x70, 0xb9, 0xb3, 0xb9, 0x70, 0xb9, 0xb3, - 0xb9, 0x70, 0xba, 0xb3, 0xba, 0x70, 0xba, 0xb3, 0xba, 0x70, 0xba, 0xb3, - 0xba, 0x70, 0xbb, 0xb3, 0xbb, 0x70, 0xbb, 0xb3, 0xbb, 0x70, 0xbb, 0xb3, - 0xbb, 0x70, 0xbc, 0xb3, 0xbb, 0x70, 0xbc, 0xb3, 0xbb, 0x70, 0xbc, 0xb3, - 0xbb, 0x70, 0xbd, 0xb4, 0xbd, 0x70, 0xbd, 0xb4, 0xbd, 0x70, 0xbd, 0xb4, - 0xbd, 0x70, 0xbe, 0xb4, 0xbe, 0x70, 0xbe, 0xb4, 0xbe, 0x70, 0xbe, 0xb4, - 0xbe, 0x70, 0xbf, 0xb4, 0xbf, 0x70, 0xbf, 0xb4, 0xbe, 0x70, 0xbf, 0xb4, - 0xbf, 0x70, 0xc0, 0xb4, 0xbe, 0x70, 0xc0, 0xb4, 0xbf, 0x70, 0xc0, 0xb4, - 0xc0, 0x70, 0xc1, 0xb4, 0xc1, 0x70, 0xc1, 0xb4, 0xc1, 0x70, 0xc1, 0xb4, - 0xc1, 0x70, 0xc1, 0xb4, 0xc1, 0x70, 0xc2, 0xb4, 0xc2, 0x70, 0xc2, 0xb4, - 0xc2, 0x70, 0xc2, 0xb4, 0xc2, 0x70, 0xc3, 0xb4, 0xc2, 0x70, 0xc3, 0xb4, - 0xc2, 0x70, 0xc3, 0xb4, 0xc2, 0x70, 0xc4, 0xb4, 0xc2, 0x70, 0xc4, 0xb4, - 0xc2, 0x70, 0xc4, 0xb5, 0xc4, 0x70, 0xc5, 0xb5, 0xc5, 0x70, 0xc5, 0xb5, - 0xc5, 0x70, 0xc5, 0xb5, 0xc5, 0x70, 0xc6, 0xb5, 0xc6, 0x70, 0xc6, 0xb5, - 0xc6, 0x70, 0xc6, 0xb5, 0xc6, 0x70, 0xc6, 0xb5, 0xc6, 0x70, 0xc7, 0xb5, - 0xc6, 0x70, 0xc7, 0xb5, 0xc6, 0x70, 0xc7, 0xb5, 0xc6, 0x70, 0xc8, 0xb5, - 0xc6, 0x70, 0xc8, 0xb6, 0xc8, 0x70, 0xc8, 0xb6, 0xc8, 0x70, 0xc9, 0xb6, - 0xc9, 0x70, 0xc9, 0xb6, 0xc9, 0x70, 0xc9, 0xb6, 0xc9, 0x70, 0xc9, 0xb6, - 0xc9, 0x70, 0xca, 0xb6, 0xc9, 0x70, 0xca, 0xb6, 0xc9, 0x70, 0xca, 0xb6, - 0xc9, 0x70, 0xcb, 0xb6, 0xc9, 0x70, 0xcb, 0xb6, 0xc9, 0x70, 0xcb, 0xb2, - 0xcf, 0x70, 0xcc, 0xb1, 0xd0, 0x70, 0xcc, 0xb2, 0xcf, 0x70, 0xcc, 0xb1, - 0xd0, 0x70, 0xcc, 0xb2, 0xcf, 0x70, 0xcd, 0xb1, 0xd0, 0x70, 0xcd, 0xb2, - 0xcf, 0x70, 0xcd, 0xb1, 0xd0, 0x70, 0xce, 0xb2, 0xcf, 0x70, 0xce, 0xb1, - 0xd0, 0x70, 0xce, 0xb2, 0xcf, 0x70, 0xce, 0xb1, 0xd0, 0x70, 0xcf, 0xb2, - 0xcf, 0x70, 0xcf, 0xb1, 0xd0, 0x70, 0xcf, 0xb1, 0xd0, 0x70, 0xcf, 0xb1, - 0xd0, 0x70, 0xcf, 0xb1, 0xd0, 0x70, 0xcf, 0xb1, 0xd0, 0x70, 0xcf, 0xb1, - 0xd0, 0x70, 0xcf, 0xb1, 0xd1, 0x70, 0xcf, 0xb1, 0xd1, 0x70, 0xcf, 0xb1, - 0xd1, 0x70, 0xcf, 0xb1, 0xd2, 0x70, 0xd0, 0xb1, 0xd2, 0x6d, 0xcf, 0xb1, - 0xd2, 0x70, 0xd0, 0xb1, 0xd2, 0x6d, 0xcf, 0xb1, 0xd3, 0x70, 0xd0, 0xb1, - 0xd3, 0x6d, 0xcf, 0xb1, 0xd3, 0x70, 0xd0, 0xb1, 0xd4, 0x6d, 0xcf, 0xb1, - 0xd4, 0x70, 0xd0, 0xb1, 0xd4, 0x6d, 0xcf, 0xb1, 0xd4, 0x70, 0xd0, 0xb1, - 0xd5, 0x6d, 0xcf, 0xb1, 0xd5, 0x70, 0xd0, 0xb1, 0xd5, 0x6d, 0xcf, 0xb1, - 0xd6, 0x70, 0xd0, 0xb1, 0xd6, 0x6d, 0xcf, 0xb1, 0xd6, 0x70, 0xd0, 0xb1, - 0xd6, 0x6d, 0xcf, 0xb1, 0xd7, 0x70, 0xd0, 0xb1, 0xd7, 0x6d, 0xcf, 0xb1, - 0xd7, 0x70, 0xd0, 0xb1, 0xd7, 0x6d, 0xcf, 0xb1, 0xd8, 0x70, 0xd0, 0xb1, - 0xd8, 0x6d, 0xcf, 0xb1, 0xd8, 0x70, 0xd0, 0xb1, 0xd9, 0x6d, 0xcf, 0xb1, - 0xd9, 0x70, 0xd0, 0xb1, 0xd9, 0x6d, 0xcf, 0xb1, 0xd9, 0x70, 0xd0, 0xb1, - 0xda, 0x6d, 0xd0, 0xb1, 0xda, 0x6a, 0xd0, 0xb1, 0xda, 0x6d, 0xd0, 0xb1, - 0xda, 0x6a, 0xd0, 0xb1, 0xdb, 0x6d, 0xd0, 0xb1, 0xdb, 0x6a, 0xd0, 0xb1, - 0xdb, 0x6d, 0xd0, 0xb1, 0xdb, 0x6a, 0xd0, 0xb1, 0xdc, 0x6d, 0xd0, 0xb1, - 0xdc, 0x6a, 0xd0, 0xb1, 0xdc, 0x6d, 0xd0, 0xb1, 0xdd, 0x6a, 0xd0, 0xb1, - 0xdd, 0x6d, 0xd0, 0xb1, 0xdd, 0x6a, 0xd0, 0xb1, 0xdd, 0x6d, 0xd0, 0xb1, - 0xde, 0x6a, 0xd0, 0xb1, 0xde, 0x6d, 0xeb, 0xb1, 0xde, 0x77, 0xeb, 0xb1, - 0xde, 0x73, 0xeb, 0xb1, 0xdf, 0x77, 0xeb, 0xb1, 0xdf, 0x73, 0xeb, 0xb1, - 0xdf, 0x70, 0xeb, 0xb1, 0xdf, 0x73, 0xeb, 0xb1, 0xe0, 0x70, 0xeb, 0xb1, - 0xe0, 0x73, 0xeb, 0xb1, 0xe0, 0x70, 0xeb, 0xb1, 0xe1, 0x73, 0xeb, 0xb1, - 0xe1, 0x70, 0xeb, 0xb1, 0xe1, 0x73, 0xeb, 0xb1, 0xe1, 0x70, 0xeb, 0xb1, - 0xe2, 0x73, 0xeb, 0xb1, 0xe2, 0x70, 0xeb, 0xb1, 0xe2, 0x73, 0xeb, 0xb1, - 0xe2, 0x70, 0xeb, 0xb1, 0xe3, 0x73, 0xeb, 0xb1, 0xe3, 0x70, 0xeb, 0xb1, - 0xe3, 0x73, 0xeb, 0xb1, 0xe3, 0x70, 0xeb, 0xb1, 0xe4, 0x73, 0xeb, 0xb1, - 0xe4, 0x70, 0xeb, 0xb1, 0xe4, 0x73, 0xeb, 0xb1, 0xe4, 0x70, 0xeb, 0xb1, - 0xe5, 0x73, 0xeb, 0xb1, 0xe5, 0x70, 0xeb, 0xb1, 0xe5, 0x73, 0xeb, 0xb1, - 0xe5, 0x70, 0xeb, 0xb1, 0xe6, 0x73, 0xeb, 0xb1, 0xe6, 0x70, 0xeb, 0xb1, - 0xe6, 0x73, 0xeb, 0xb1, 0xe6, 0x70, 0xeb, 0xb1, 0xe7, 0x73, 0xeb, 0xb1, - 0xe7, 0x70, 0xeb, 0xb1, 0xe7, 0x73, 0xeb, 0xb1, 0xe7, 0x70, 0xeb, 0xb1, - 0xe8, 0x73, 0xeb, 0xb1, 0xe8, 0x70, 0xeb, 0xb1, 0xe8, 0x73, 0xeb, 0xb1, - 0xe8, 0x70, 0xeb, 0xb1, 0xe9, 0x73, 0xeb, 0xb1, 0xe9, 0x70, 0xeb, 0xb1, - 0xe9, 0x73, 0xeb, 0xb1, 0xe9, 0x70, 0xec, 0xb1, 0xea, 0x70, 0xeb, 0xb1, - 0xea, 0x70, 0xec, 0xb1, 0xea, 0x70, 0xeb, 0xb1, 0xea, 0x70, 0xec, 0xb1, - 0xeb, 0x70, 0xeb, 0xb1, 0xeb, 0x70, 0xec, 0xb1, 0xeb, 0x70, 0xeb, 0xb1, - 0xeb, 0x70, 0xec, 0xb1, 0xeb, 0x70, 0xec, 0xb1, 0xeb, 0x70, 0xec, 0xb1, - 0xeb, 0x70, 0xec, 0xaf, 0xeb, 0x70, 0xec, 0xb1, 0xeb, 0x70, 0xed, 0xaf, - 0xeb, 0x70, 0xed, 0xb1, 0xeb, 0x70, 0xed, 0xaf, 0xeb, 0x70, 0xed, 0xb1, - 0xeb, 0x70, 0xee, 0xaf, 0xeb, 0x70, 0xee, 0xb1, 0xeb, 0x70, 0xee, 0xaf, - 0xeb, 0x70, 0xee, 0xb1, 0xeb, 0x70, 0xef, 0xaf, 0xeb, 0x70, 0xef, 0xb1, - 0xeb, 0x70, 0xef, 0xaf, 0xeb, 0x70, 0xef, 0xb1, 0xeb, 0x70, 0xf0, 0xaf, - 0xeb, 0x70, 0xf0, 0xaa, 0xf0, 0x70, 0xf0, 0xaa, 0xf0, 0x70, 0xf0, 0xaa, - 0xf0, 0x70, 0xf1, 0xaa, 0xf1, 0x70, 0xf1, 0xaa, 0xf1, 0x70, 0xf1, 0xaa, - 0xf1, 0x70, 0xf1, 0xaa, 0xf3, 0x70, 0xf2, 0xaa, 0xf3, 0x70, 0xf2, 0xaa, - 0xf3, 0x70, 0xf2, 0xb1, 0xf6, 0x70, 0xf2, 0xb4, 0xf6, 0x70, 0xf2, 0xb1, - 0xf6, 0x70, 0xf3, 0xb1, 0xf6, 0x70, 0xf3, 0xb1, 0xf6, 0x70, 0xf3, 0xb1, - 0xf6, 0x70, 0xf3, 0xb1, 0xf6, 0x70, 0xf4, 0xb1, 0xf6, 0x70, 0xf4, 0xb1, - 0xf6, 0x70, 0xf4, 0xb1, 0xf6, 0x70, 0xf4, 0xb1, 0xf6, 0x70, 0xf5, 0xb1, - 0xf6, 0x70, 0xf5, 0xb1, 0xf6, 0x70, 0xf5, 0xb1, 0xf6, 0x70, 0xf5, 0xb1, - 0xf6, 0x70, 0xf5, 0xb1, 0xf6, 0x70, 0xf6, 0xb1, 0xf6, 0x70, 0xf6, 0xb1, - 0xf6, 0x70, 0xf6, 0xb1, 0xf6, 0x6f, 0xf6, 0xb1, 0xf6, 0x70, 0xf6, 0xb1, - 0xf7, 0x6f, 0xf6, 0xb1, 0xf7, 0x70, 0xf6, 0xb1, 0xf7, 0x6f, 0xf6, 0xb1, - 0xf7, 0x70, 0xf6, 0xb1, 0xf8, 0x6f, 0xf6, 0xb1, 0xf8, 0x70, 0xf6, 0xb1, - 0xf8, 0x6f, 0xfa, 0xb1, 0xf8, 0x72, 0xfa, 0xb1, 0xf8, 0x70, 0xfa, 0xb1, - 0xf9, 0x72, 0xfa, 0xb1, 0xf9, 0x70, 0xfa, 0xb1, 0xf9, 0x72, 0xfa, 0xb1, - 0xf9, 0x70, 0xfa, 0xb1, 0xfa, 0x70, 0xfa, 0xb1, 0xfa, 0x70, 0xfa, 0xb1, - 0xfa, 0x70, 0xfa, 0xb1, 0xfa, 0x70, 0xfa, 0xb1, 0xfa, 0x70, 0xfb, 0xb1, - 0xfa, 0x70, 0xfb, 0xb1, 0xfa, 0x70, 0xfb, 0xaf, 0xfa, 0x70, 0xfb, 0xb1, - 0xfa, 0x70, 0xfc, 0xaf, 0xfa, 0x70, 0xfc, 0xb1, 0xfa, 0x70, 0xfc, 0xaf, - 0xfa, 0x70, 0xfc, 0xb1, 0xfa, 0x70, 0xfc, 0xaf, 0xfa, 0x70, 0xfd, 0xb1, - 0xfa, 0x70, 0xfd, 0xaf, 0xfa, 0x70, 0xfd, 0xb1, 0xfa, 0x70, 0xfd, 0xaf, - 0xfa, 0x70, 0xfe, 0xb1, 0xfa, 0x70, 0xfe, 0xaf, 0xfa, 0x70, 0xfe, 0xae, - 0xfa, 0x70, 0xfe, 0xaf, 0xfa, 0x70, 0xfe, 0xae, 0xfa, 0x70, 0xff, 0xaf, - 0xfa, 0x70, 0xff, 0xae, 0xfa, 0x70, 0x03, 0xb9, 0x93, 0x70, 0x0a, 0xb9, - 0x93, 0x70, 0x0f, 0xb9, 0x93, 0x70, 0x14, 0xb6, 0x93, 0x70, 0x17, 0xb9, - 0x93, 0x70, 0x1b, 0xb6, 0x93, 0x70, 0x1e, 0xb9, 0x93, 0x70, 0x20, 0xb6, - 0x93, 0x70, 0x23, 0xb9, 0x93, 0x70, 0x25, 0xb6, 0x93, 0x70, 0x27, 0xb9, - 0x93, 0x70, 0x29, 0xb6, 0x93, 0x70, 0x2b, 0xb9, 0x93, 0x70, 0x2d, 0xb6, - 0x93, 0x70, 0x2f, 0xb9, 0x93, 0x70, 0x31, 0xb6, 0x93, 0x70, 0x32, 0xb9, - 0x93, 0x70, 0x34, 0xb6, 0x93, 0x70, 0x35, 0xb9, 0x93, 0x70, 0x37, 0xb6, - 0x93, 0x70, 0x38, 0xb9, 0x93, 0x70, 0x3a, 0xb6, 0x93, 0x70, 0x3b, 0xb9, - 0x93, 0x70, 0x3c, 0xb6, 0x93, 0x70, 0x3e, 0xb9, 0x93, 0x70, 0x3f, 0xb6, - 0x93, 0x70, 0x40, 0xb9, 0x93, 0x70, 0x42, 0xb6, 0x93, 0x70, 0x43, 0xb9, - 0x93, 0x70, 0x44, 0xb6, 0x93, 0x70, 0x45, 0xb9, 0x93, 0x70, 0x46, 0xb6, - 0x93, 0x70, 0x47, 0xb9, 0x93, 0x70, 0x48, 0xb6, 0x93, 0x70, 0x49, 0xb9, - 0x93, 0x70, 0x4a, 0xb6, 0x93, 0x70, 0x4b, 0xb9, 0x93, 0x70, 0x4c, 0xb6, - 0x93, 0x70, 0x4d, 0xb9, 0x93, 0x70, 0x4e, 0xb6, 0x93, 0x70, 0x4f, 0xb9, - 0x93, 0x70, 0x50, 0xb6, 0x93, 0x70, 0x51, 0xb9, 0x93, 0x70, 0x52, 0xb6, - 0x93, 0x70, 0x53, 0xb9, 0x93, 0x70, 0x54, 0xb6, 0x93, 0x70, 0x55, 0xb4, - 0x94, 0x70, 0x56, 0xb6, 0x93, 0x70, 0x57, 0xb4, 0x94, 0x70, 0x58, 0xb6, - 0x93, 0x70, 0x58, 0xb4, 0x94, 0x70, 0x59, 0xb6, 0x93, 0x70, 0x5a, 0xb4, - 0x94, 0x70, 0x5b, 0xb6, 0x93, 0x70, 0x5c, 0xb4, 0x94, 0x70, 0x5d, 0xb6, - 0x93, 0x70, 0x5d, 0xb4, 0x94, 0x70, 0x5e, 0xb6, 0x93, 0x70, 0x5f, 0xb4, - 0x94, 0x70, 0x60, 0xb6, 0x93, 0x70, 0x60, 0xb4, 0x94, 0x70, 0x61, 0xb6, - 0x93, 0x70, 0x62, 0xb4, 0x94, 0x70, 0x63, 0xb6, 0x93, 0x70, 0x63, 0xb4, - 0x94, 0x70, 0x64, 0xb6, 0x93, 0x70, 0x65, 0xb4, 0x94, 0x70, 0x66, 0xb6, - 0x93, 0x70, 0x66, 0xb4, 0x94, 0x70, 0x67, 0xb6, 0x93, 0x70, 0x68, 0xb4, - 0x94, 0x70, 0x68, 0xb6, 0x93, 0x70, 0x69, 0xb4, 0x94, 0x70, 0x6a, 0xb6, - 0x93, 0x70, 0x6a, 0xb4, 0x94, 0x70, 0x6b, 0xb6, 0x93, 0x70, 0x6c, 0xb4, - 0x94, 0x70, 0x6c, 0xb6, 0x93, 0x70, 0x6d, 0xb4, 0x94, 0x70, 0x6e, 0xb6, - 0x93, 0x70, 0x6e, 0xb4, 0x94, 0x70, 0x6f, 0xb6, 0x93, 0x70, 0x70, 0xb4, - 0x94, 0x70, 0x70, 0xb6, 0x93, 0x70, 0x71, 0xb4, 0x94, 0x70, 0x72, 0xb6, - 0x93, 0x70, 0x72, 0xb4, 0x94, 0x70, 0x73, 0xb6, 0x93, 0x70, 0x73, 0xb4, - 0x94, 0x70, 0x74, 0xb6, 0x93, 0x70, 0x75, 0xb4, 0x94, 0x70, 0x75, 0xb6, - 0x93, 0x70, 0x76, 0xb4, 0x94, 0x70, 0x76, 0xb6, 0x93, 0x70, 0x77, 0xb4, - 0x94, 0x70, 0x78, 0xb6, 0x93, 0x70, 0x78, 0xb4, 0x94, 0x70, 0x79, 0xb6, - 0x93, 0x70, 0x79, 0xb4, 0x94, 0x70, 0x7a, 0xb6, 0x93, 0x70, 0x7a, 0xb4, - 0x94, 0x70, 0x7b, 0xb6, 0x93, 0x70, 0x7c, 0xb4, 0x94, 0x70, 0x7c, 0xb2, - 0x94, 0x70, 0x7d, 0xb4, 0x94, 0x70, 0x7d, 0xb2, 0x94, 0x70, 0x7e, 0xb4, - 0x94, 0x70, 0x7e, 0xb2, 0x94, 0x70, 0x7f, 0xb4, 0x94, 0x70, 0x7f, 0xb2, - 0x94, 0x70, 0x80, 0xb4, 0x94, 0x70, 0x81, 0xb2, 0x94, 0x70, 0x81, 0xb4, - 0x94, 0x70, 0x82, 0xb2, 0x94, 0x70, 0x82, 0xb4, 0x94, 0x70, 0x83, 0xb2, - 0x94, 0x70, 0x83, 0xb4, 0x94, 0x70, 0x84, 0xb2, 0x94, 0x70, 0x84, 0xb4, - 0x94, 0x70, 0x85, 0xb2, 0x94, 0x70, 0x85, 0xb4, 0x94, 0x70, 0x86, 0xb2, - 0x94, 0x70, 0x86, 0xb4, 0x94, 0x70, 0x87, 0xb2, 0x94, 0x70, 0x87, 0xb4, - 0x94, 0x70, 0x88, 0xb2, 0x94, 0x70, 0x88, 0xb4, 0x94, 0x70, 0x89, 0xb2, - 0x94, 0x70, 0x89, 0xb4, 0x94, 0x70, 0x8a, 0xb2, 0x94, 0x70, 0x8a, 0xb4, - 0x94, 0x70, 0x8b, 0xb2, 0x94, 0x70, 0x8b, 0xb4, 0x94, 0x70, 0x8c, 0xb2, - 0x94, 0x70, 0x8c, 0xb4, 0x94, 0x70, 0x8d, 0xb2, 0x94, 0x70, 0x8d, 0xb1, - 0x94, 0x70, 0x8e, 0xb2, 0x94, 0x70, 0x8e, 0xb1, 0x94, 0x70, 0x8e, 0xb2, - 0x94, 0x70, 0x8f, 0xb1, 0x94, 0x70, 0x8f, 0xb2, 0x94, 0x70, 0x90, 0xb1, - 0x94, 0x70, 0x90, 0xb2, 0x94, 0x70, 0x91, 0xb1, 0x94, 0x70, 0x91, 0xb2, - 0x94, 0x70, 0x92, 0xb1, 0x94, 0x70, 0x92, 0xb2, 0x94, 0x70, 0x93, 0xb1, - 0x94, 0x70, 0x93, 0xb2, 0x94, 0x70, 0x94, 0xb1, 0x94, 0x70, 0x94, 0xb2, - 0x94, 0x70, 0x94, 0xb1, 0x94, 0x70, 0x94, 0xb1, 0x95, 0x70, 0x96, 0xb1, - 0x95, 0x70, 0x97, 0xb1, 0x96, 0x70, 0x96, 0xb1, 0x95, 0x70, 0x97, 0xb1, - 0x96, 0x70, 0x97, 0xb1, 0x95, 0x70, 0x98, 0xb1, 0x96, 0x70, 0x98, 0xb1, - 0x95, 0x70, 0x98, 0xb1, 0x96, 0x70, 0x99, 0xb1, 0x95, 0x70, 0x99, 0xb1, - 0x96, 0x70, 0x9a, 0xae, 0x9a, 0x70, 0x9a, 0xae, 0x9a, 0x70, 0x9a, 0xae, - 0x9a, 0x70, 0x9b, 0xae, 0x9b, 0x70, 0x9b, 0xae, 0x9b, 0x70, 0x9c, 0xae, - 0x9d, 0x70, 0x9c, 0xae, 0x9e, 0x70, 0x9d, 0xae, 0x9d, 0x70, 0x9d, 0xae, - 0x9e, 0x70, 0x9d, 0xae, 0x9d, 0x70, 0x9e, 0xae, 0x9e, 0x70, 0x9e, 0xae, - 0x9e, 0x70, 0x9f, 0xae, 0x9f, 0x70, 0x9f, 0xae, 0x9f, 0x70, 0x9f, 0xae, - 0x9f, 0x70, 0xa0, 0xae, 0xa0, 0x70, 0xa0, 0xaf, 0xa2, 0x70, 0xa1, 0xaf, - 0xa2, 0x70, 0xa1, 0xaf, 0xa2, 0x70, 0xa1, 0xaf, 0xa2, 0x70, 0xa2, 0xaf, - 0xa2, 0x70, 0xa2, 0xaf, 0xa2, 0x70, 0xa3, 0xaf, 0xa3, 0x70, 0xa3, 0xaf, - 0xa3, 0x70, 0xa3, 0xaf, 0xa3, 0x70, 0xa4, 0xaf, 0xa4, 0x70, 0xa4, 0xaf, - 0xa4, 0x70, 0xa5, 0xb0, 0xa6, 0x70, 0xa5, 0xb0, 0xa6, 0x70, 0xa5, 0xb0, - 0xa6, 0x70, 0xa6, 0xb0, 0xa6, 0x70, 0xa6, 0xb0, 0xa6, 0x70, 0xa6, 0xb0, - 0xa6, 0x70, 0xa7, 0xb0, 0xa7, 0x70, 0xa7, 0xb0, 0xa7, 0x70, 0xa8, 0xb0, - 0xa8, 0x70, 0xa8, 0xb0, 0xa8, 0x70, 0xa8, 0xb0, 0xa8, 0x70, 0xa9, 0xb0, - 0xa9, 0x70, 0xa9, 0xb0, 0xa9, 0x70, 0xaa, 0xb0, 0xaa, 0x70, 0xaa, 0xb0, - 0xab, 0x70, 0xaa, 0xb0, 0xaa, 0x70, 0xab, 0xb0, 0xab, 0x70, 0xab, 0xb0, - 0xab, 0x70, 0xab, 0xb1, 0xab, 0x70, 0xab, 0xb1, 0xac, 0x70, 0xac, 0xb1, - 0xac, 0x6e, 0xac, 0xb1, 0xac, 0x6e, 0xad, 0xb1, 0xad, 0x6e, 0xae, 0xb1, - 0xad, 0x6f, 0xae, 0xb1, 0xae, 0x6f, 0xae, 0xb1, 0xae, 0x6f, 0xae, 0xb1, - 0xae, 0x6f, 0xaf, 0xb1, 0xaf, 0x6f, 0xaf, 0xb1, 0xaf, 0x6f, 0xaf, 0xb1, - 0xaf, 0x6f, 0xb0, 0xb1, 0xb0, 0x6f, 0xb0, 0xb1, 0xb0, 0x6f, 0xb0, 0xb1, - 0xb0, 0x6f, 0xb1, 0xb1, 0xb1, 0x6f, 0xb1, 0xb1, 0xb1, 0x6f, 0xb2, 0xb1, - 0xb2, 0x6f, 0xb2, 0xb2, 0xb2, 0x70, 0xb2, 0xb2, 0xb2, 0x70, 0xb3, 0xb2, - 0xb3, 0x70, 0xb3, 0xb2, 0xb3, 0x70, 0xb3, 0xb2, 0xb3, 0x70, 0xb4, 0xb2, - 0xb4, 0x70, 0xb4, 0xb2, 0xb4, 0x70, 0xb4, 0xb2, 0xb4, 0x70, 0xb5, 0xb2, - 0xb5, 0x70, 0xb5, 0xb2, 0xb5, 0x70, 0xb5, 0xb2, 0xb5, 0x70, 0xb6, 0xb2, - 0xb5, 0x70, 0xb6, 0xb2, 0xb5, 0x70, 0xb6, 0xb3, 0xb6, 0x70, 0xb7, 0xb3, - 0xb7, 0x70, 0xb7, 0xb3, 0xb7, 0x70, 0xb7, 0xb3, 0xb7, 0x70, 0xb8, 0xb3, - 0xb8, 0x70, 0xb8, 0xb3, 0xb8, 0x70, 0xb8, 0xb3, 0xb8, 0x70, 0xb9, 0xb3, - 0xb9, 0x70, 0xb9, 0xb3, 0xb9, 0x70, 0xb9, 0xb3, 0xb9, 0x70, 0xba, 0xb3, - 0xb9, 0x70, 0xba, 0xb3, 0xb9, 0x70, 0xba, 0xb3, 0xb9, 0x70, 0xbb, 0xb3, - 0xb9, 0x70, 0xbb, 0xb3, 0xbb, 0x70, 0xbb, 0xb3, 0xbb, 0x70, 0xbc, 0xb3, - 0xbc, 0x70, 0xbc, 0xb3, 0xbc, 0x70, 0xbc, 0xb3, 0xbc, 0x70, 0xbd, 0xb3, - 0xbd, 0x70, 0xbd, 0xb3, 0xbd, 0x70, 0xbd, 0xb3, 0xbd, 0x70, 0xbe, 0xb3, - 0xbd, 0x70, 0xbe, 0xb3, 0xbd, 0x70, 0xbe, 0xb3, 0xbd, 0x70, 0xbf, 0xb4, - 0xbf, 0x70, 0xbf, 0xb4, 0xbf, 0x70, 0xbf, 0xb4, 0xbf, 0x70, 0xc0, 0xb4, - 0xc0, 0x70, 0xc0, 0xb4, 0xc0, 0x70, 0xc0, 0xb4, 0xc0, 0x70, 0xc1, 0xb4, - 0xc1, 0x70, 0xc1, 0xb4, 0xc0, 0x70, 0xc1, 0xb4, 0xc1, 0x70, 0xc1, 0xb4, - 0xc0, 0x70, 0xc2, 0xb4, 0xc1, 0x70, 0xc2, 0xb5, 0xc2, 0x70, 0xc2, 0xb5, - 0xc2, 0x70, 0xc3, 0xb5, 0xc3, 0x70, 0xc3, 0xb5, 0xc3, 0x70, 0xc3, 0xb5, - 0xc3, 0x70, 0xc4, 0xb5, 0xc4, 0x70, 0xc4, 0xb5, 0xc4, 0x70, 0xc4, 0xb5, - 0xc4, 0x70, 0xc5, 0xb5, 0xc4, 0x70, 0xc5, 0xb5, 0xc4, 0x70, 0xc5, 0xb5, - 0xc4, 0x70, 0xc6, 0xb5, 0xc4, 0x70, 0xc6, 0xb5, 0xc4, 0x70, 0xc6, 0xb5, - 0xc6, 0x70, 0xc6, 0xb5, 0xc6, 0x70, 0xc7, 0xb5, 0xc7, 0x70, 0xc7, 0xb5, - 0xc7, 0x70, 0xc7, 0xb5, 0xc7, 0x70, 0xc8, 0xb5, 0xc7, 0x70, 0xc8, 0xb5, - 0xc7, 0x70, 0xc8, 0xb5, 0xc7, 0x70, 0xc9, 0xb5, 0xc7, 0x70, 0xc9, 0xb5, - 0xc7, 0x70, 0xc9, 0xb5, 0xc7, 0x70, 0xc9, 0xb6, 0xc9, 0x70, 0xca, 0xb6, - 0xca, 0x70, 0xca, 0xb6, 0xca, 0x70, 0xca, 0xb6, 0xca, 0x70, 0xcb, 0xb6, - 0xcb, 0x70, 0xcb, 0xb6, 0xca, 0x70, 0xcb, 0xb1, 0xcf, 0x70, 0xcc, 0xb3, - 0xcf, 0x70, 0xcc, 0xb1, 0xcf, 0x70, 0xcc, 0xb3, 0xcf, 0x70, 0xcc, 0xb1, - 0xcf, 0x70, 0xcd, 0xb3, 0xcf, 0x70, 0xcd, 0xb1, 0xcf, 0x70, 0xcd, 0xb1, - 0xd0, 0x70, 0xce, 0xb1, 0xcf, 0x70, 0xce, 0xb1, 0xd0, 0x70, 0xce, 0xb1, - 0xcf, 0x70, 0xce, 0xb1, 0xd0, 0x70, 0xcf, 0xb1, 0xcf, 0x70, 0xcf, 0xb1, - 0xd0, 0x70, 0xcf, 0xb1, 0xcf, 0x6f, 0xcf, 0xb1, 0xd0, 0x70, 0xcf, 0xb1, - 0xd0, 0x6f, 0xcf, 0xb1, 0xd0, 0x70, 0xcf, 0xb1, 0xd0, 0x6f, 0xcf, 0xb1, - 0xd1, 0x70, 0xcf, 0xb1, 0xd1, 0x6f, 0xcf, 0xb1, 0xd1, 0x70, 0xcf, 0xb1, - 0xd2, 0x6f, 0xcf, 0xb1, 0xd2, 0x70, 0xcf, 0xb1, 0xd2, 0x6f, 0xcf, 0xb1, - 0xd2, 0x70, 0xcf, 0xb1, 0xd3, 0x6f, 0xcf, 0xb1, 0xd3, 0x70, 0xcf, 0xb1, - 0xd3, 0x6f, 0xcf, 0xb1, 0xd4, 0x70, 0xcf, 0xb1, 0xd4, 0x6f, 0xd0, 0xb1, - 0xd4, 0x6c, 0xcf, 0xb1, 0xd4, 0x6f, 0xd0, 0xb1, 0xd5, 0x6c, 0xcf, 0xb1, - 0xd5, 0x6f, 0xd0, 0xb1, 0xd5, 0x6c, 0xcf, 0xb1, 0xd6, 0x6f, 0xd0, 0xb1, - 0xd6, 0x6c, 0xcf, 0xb1, 0xd6, 0x6f, 0xd0, 0xb1, 0xd6, 0x6c, 0xcf, 0xb1, - 0xd7, 0x6f, 0xd0, 0xb1, 0xd7, 0x6c, 0xcf, 0xb1, 0xd7, 0x6f, 0xd0, 0xb1, - 0xd7, 0x6c, 0xcf, 0xb1, 0xd8, 0x6f, 0xd0, 0xb1, 0xd8, 0x6c, 0xcf, 0xb1, - 0xd8, 0x6f, 0xd0, 0xb1, 0xd9, 0x6c, 0xcf, 0xb1, 0xd9, 0x6f, 0xd0, 0xb1, - 0xd9, 0x6c, 0xcf, 0xb1, 0xd9, 0x6f, 0xd0, 0xb1, 0xda, 0x6c, 0xd0, 0xb1, - 0xda, 0x6a, 0xd0, 0xb1, 0xda, 0x6c, 0xd0, 0xb1, 0xda, 0x6a, 0xd0, 0xb1, - 0xdb, 0x6c, 0xd0, 0xb1, 0xdb, 0x6a, 0xd0, 0xb1, 0xdb, 0x6c, 0xd0, 0xb1, - 0xdb, 0x6a, 0xd0, 0xb1, 0xdc, 0x6c, 0xd0, 0xb1, 0xdc, 0x6a, 0xd0, 0xb1, - 0xdc, 0x6c, 0xd0, 0xb1, 0xdd, 0x6a, 0xd0, 0xb1, 0xdd, 0x6c, 0xd0, 0xb1, - 0xdd, 0x6a, 0xd0, 0xb1, 0xdd, 0x6c, 0xd0, 0xb1, 0xde, 0x6a, 0xeb, 0xb1, - 0xde, 0x72, 0xeb, 0xb1, 0xde, 0x76, 0xeb, 0xb1, 0xde, 0x72, 0xeb, 0xb1, - 0xdf, 0x76, 0xeb, 0xb1, 0xdf, 0x72, 0xeb, 0xb1, 0xdf, 0x76, 0xeb, 0xb1, - 0xdf, 0x72, 0xeb, 0xb1, 0xe0, 0x76, 0xeb, 0xb1, 0xe0, 0x72, 0xeb, 0xb1, - 0xe0, 0x76, 0xeb, 0xb1, 0xe1, 0x72, 0xeb, 0xb1, 0xe1, 0x76, 0xeb, 0xb1, - 0xe1, 0x72, 0xeb, 0xb1, 0xe1, 0x76, 0xeb, 0xb1, 0xe2, 0x72, 0xeb, 0xb1, - 0xe2, 0x76, 0xeb, 0xb1, 0xe2, 0x72, 0xeb, 0xb1, 0xe2, 0x70, 0xeb, 0xb1, - 0xe3, 0x72, 0xeb, 0xb1, 0xe3, 0x70, 0xeb, 0xb1, 0xe3, 0x72, 0xeb, 0xb1, - 0xe3, 0x70, 0xeb, 0xb1, 0xe4, 0x72, 0xeb, 0xb1, 0xe4, 0x70, 0xeb, 0xb1, - 0xe4, 0x72, 0xeb, 0xb1, 0xe4, 0x70, 0xeb, 0xb1, 0xe5, 0x72, 0xeb, 0xb1, - 0xe5, 0x70, 0xeb, 0xb1, 0xe5, 0x72, 0xeb, 0xb1, 0xe5, 0x70, 0xeb, 0xb1, - 0xe6, 0x72, 0xeb, 0xb1, 0xe6, 0x70, 0xeb, 0xb1, 0xe6, 0x72, 0xeb, 0xb1, - 0xe6, 0x70, 0xeb, 0xb1, 0xe7, 0x72, 0xeb, 0xb1, 0xe7, 0x70, 0xeb, 0xb1, - 0xe7, 0x72, 0xeb, 0xb1, 0xe7, 0x70, 0xeb, 0xb1, 0xe8, 0x72, 0xeb, 0xb1, - 0xe8, 0x70, 0xeb, 0xb1, 0xe8, 0x72, 0xeb, 0xb1, 0xe8, 0x70, 0xeb, 0xb1, - 0xe9, 0x72, 0xeb, 0xb1, 0xe9, 0x70, 0xeb, 0xb1, 0xe9, 0x72, 0xeb, 0xb1, - 0xe9, 0x70, 0xeb, 0xb1, 0xea, 0x72, 0xeb, 0xb1, 0xea, 0x70, 0xeb, 0xb1, - 0xea, 0x72, 0xeb, 0xb1, 0xea, 0x70, 0xec, 0xb1, 0xeb, 0x70, 0xeb, 0xb1, - 0xeb, 0x70, 0xec, 0xb1, 0xeb, 0x70, 0xeb, 0xb1, 0xeb, 0x70, 0xec, 0xb1, - 0xeb, 0x70, 0xec, 0xb1, 0xeb, 0x70, 0xec, 0xb1, 0xeb, 0x70, 0xec, 0xb0, - 0xeb, 0x70, 0xec, 0xb1, 0xeb, 0x70, 0xed, 0xb0, 0xeb, 0x70, 0xed, 0xb1, - 0xeb, 0x70, 0xed, 0xb0, 0xeb, 0x70, 0xed, 0xb1, 0xeb, 0x70, 0xee, 0xb0, - 0xeb, 0x70, 0xee, 0xb1, 0xeb, 0x70, 0xee, 0xb0, 0xeb, 0x70, 0xee, 0xb1, - 0xeb, 0x70, 0xef, 0xb0, 0xeb, 0x70, 0xef, 0xb1, 0xeb, 0x70, 0xef, 0xb0, - 0xeb, 0x70, 0xef, 0xb1, 0xeb, 0x70, 0xf0, 0xb0, 0xeb, 0x70, 0xf0, 0xb1, - 0xeb, 0x70, 0xf0, 0xb0, 0xeb, 0x70, 0xf0, 0xaa, 0xf1, 0x70, 0xf1, 0xaa, - 0xf2, 0x70, 0xf1, 0xaa, 0xf1, 0x70, 0xf1, 0xaa, 0xf2, 0x70, 0xf1, 0xaa, - 0xf1, 0x70, 0xf2, 0xaa, 0xf2, 0x70, 0xf2, 0xb4, 0xf6, 0x70, 0xf2, 0xb1, - 0xf6, 0x70, 0xf2, 0xb4, 0xf6, 0x70, 0xf2, 0xb1, 0xf6, 0x70, 0xf3, 0xb1, - 0xf6, 0x70, 0xf3, 0xb1, 0xf6, 0x70, 0xf3, 0xb1, 0xf6, 0x70, 0xf3, 0xb1, - 0xf6, 0x70, 0xf4, 0xb1, 0xf6, 0x70, 0xf4, 0xb1, 0xf6, 0x70, 0xf4, 0xb1, - 0xf6, 0x70, 0xf4, 0xb1, 0xf6, 0x70, 0xf5, 0xb1, 0xf6, 0x70, 0xf5, 0xb1, - 0xf6, 0x70, 0xf5, 0xb1, 0xf6, 0x70, 0xf5, 0xb1, 0xf6, 0x70, 0xf5, 0xb1, - 0xf6, 0x70, 0xf6, 0xb1, 0xf6, 0x70, 0xf6, 0xb1, 0xf6, 0x70, 0xf6, 0xb1, - 0xf6, 0x6f, 0xf6, 0xb1, 0xf6, 0x70, 0xf6, 0xb1, 0xf7, 0x6f, 0xf6, 0xb1, - 0xf7, 0x70, 0xf6, 0xb1, 0xf7, 0x6f, 0xf6, 0xb1, 0xf7, 0x70, 0xf6, 0xb1, - 0xf8, 0x6f, 0xf6, 0xb1, 0xf8, 0x70, 0xf6, 0xb1, 0xf8, 0x6f, 0xfa, 0xb1, - 0xf8, 0x72, 0xfa, 0xb1, 0xf8, 0x70, 0xfa, 0xb1, 0xf9, 0x72, 0xfa, 0xb1, - 0xf9, 0x70, 0xfa, 0xb1, 0xf9, 0x72, 0xfa, 0xb1, 0xf9, 0x70, 0xfa, 0xb1, - 0xfa, 0x70, 0xfa, 0xb1, 0xfa, 0x70, 0xfa, 0xb1, 0xfa, 0x70, 0xfa, 0xb1, - 0xfa, 0x70, 0xfa, 0xb1, 0xfa, 0x70, 0xfb, 0xb1, 0xfa, 0x70, 0xfb, 0xb1, - 0xfa, 0x70, 0xfb, 0xb0, 0xfa, 0x70, 0xfb, 0xb1, 0xfa, 0x70, 0xfc, 0xb0, - 0xfa, 0x70, 0xfc, 0xb1, 0xfa, 0x70, 0xfc, 0xb0, 0xfa, 0x70, 0xfc, 0xb1, - 0xfa, 0x70, 0xfc, 0xb0, 0xfa, 0x70, 0xfd, 0xb1, 0xfa, 0x70, 0xfd, 0xb0, - 0xfa, 0x70, 0xfd, 0xb1, 0xfa, 0x70, 0xfd, 0xb0, 0xfa, 0x70, 0xfe, 0xb1, - 0xfa, 0x70, 0xfe, 0xb0, 0xfa, 0x70, 0xfe, 0xb1, 0xfa, 0x70, 0xfe, 0xb0, - 0xfa, 0x70, 0xfe, 0xb1, 0xfa, 0x70, 0xff, 0xb0, 0xfa, 0x70, 0xff, 0xb1, - 0xfa, 0x70, 0x03, 0xb8, 0x93, 0x71, 0x0a, 0xba, 0x92, 0x71, 0x0f, 0xb8, - 0x93, 0x71, 0x14, 0xba, 0x92, 0x71, 0x17, 0xb8, 0x93, 0x71, 0x1b, 0xba, - 0x92, 0x71, 0x1e, 0xb8, 0x93, 0x71, 0x20, 0xba, 0x92, 0x71, 0x23, 0xb8, - 0x93, 0x71, 0x25, 0xba, 0x92, 0x71, 0x27, 0xb8, 0x93, 0x71, 0x29, 0xba, - 0x92, 0x71, 0x2b, 0xb8, 0x93, 0x71, 0x2d, 0xba, 0x92, 0x71, 0x2f, 0xb8, - 0x93, 0x71, 0x31, 0xba, 0x92, 0x71, 0x32, 0xb8, 0x93, 0x71, 0x34, 0xba, - 0x92, 0x71, 0x35, 0xb8, 0x93, 0x71, 0x37, 0xba, 0x92, 0x71, 0x38, 0xb8, - 0x93, 0x71, 0x3a, 0xba, 0x92, 0x71, 0x3b, 0xb8, 0x93, 0x71, 0x3c, 0xba, - 0x92, 0x71, 0x3e, 0xb8, 0x93, 0x71, 0x3f, 0xba, 0x92, 0x71, 0x40, 0xb8, - 0x93, 0x71, 0x42, 0xba, 0x92, 0x71, 0x43, 0xb8, 0x93, 0x71, 0x44, 0xb6, - 0x93, 0x71, 0x45, 0xb8, 0x93, 0x71, 0x46, 0xb6, 0x93, 0x71, 0x47, 0xb8, - 0x93, 0x71, 0x48, 0xb6, 0x93, 0x71, 0x49, 0xb8, 0x93, 0x71, 0x4a, 0xb6, - 0x93, 0x71, 0x4b, 0xb8, 0x93, 0x71, 0x4c, 0xb6, 0x93, 0x71, 0x4d, 0xb8, - 0x93, 0x71, 0x4e, 0xb6, 0x93, 0x71, 0x4f, 0xb8, 0x93, 0x71, 0x50, 0xb6, - 0x93, 0x71, 0x51, 0xb8, 0x93, 0x71, 0x52, 0xb6, 0x93, 0x71, 0x53, 0xb8, - 0x93, 0x71, 0x54, 0xb6, 0x93, 0x71, 0x55, 0xb8, 0x93, 0x71, 0x56, 0xb6, - 0x93, 0x71, 0x57, 0xb8, 0x93, 0x71, 0x58, 0xb6, 0x93, 0x71, 0x58, 0xb8, - 0x93, 0x71, 0x59, 0xb6, 0x93, 0x71, 0x5a, 0xb8, 0x93, 0x71, 0x5b, 0xb6, - 0x93, 0x71, 0x5c, 0xb8, 0x93, 0x71, 0x5d, 0xb6, 0x93, 0x71, 0x5d, 0xb8, - 0x93, 0x71, 0x5e, 0xb6, 0x93, 0x71, 0x5f, 0xb4, 0x94, 0x71, 0x60, 0xb6, - 0x93, 0x71, 0x60, 0xb4, 0x94, 0x71, 0x61, 0xb6, 0x93, 0x71, 0x62, 0xb4, - 0x94, 0x71, 0x63, 0xb6, 0x93, 0x71, 0x63, 0xb4, 0x94, 0x71, 0x64, 0xb6, - 0x93, 0x71, 0x65, 0xb4, 0x94, 0x71, 0x66, 0xb6, 0x93, 0x71, 0x66, 0xb4, - 0x94, 0x71, 0x67, 0xb6, 0x93, 0x71, 0x68, 0xb4, 0x94, 0x71, 0x68, 0xb6, - 0x93, 0x71, 0x69, 0xb4, 0x94, 0x71, 0x6a, 0xb6, 0x93, 0x71, 0x6a, 0xb4, - 0x94, 0x71, 0x6b, 0xb6, 0x93, 0x71, 0x6c, 0xb4, 0x94, 0x71, 0x6c, 0xb6, - 0x93, 0x71, 0x6d, 0xb4, 0x94, 0x71, 0x6e, 0xb6, 0x93, 0x71, 0x6e, 0xb4, - 0x94, 0x71, 0x6f, 0xb6, 0x93, 0x71, 0x70, 0xb4, 0x94, 0x71, 0x70, 0xb6, - 0x93, 0x71, 0x71, 0xb4, 0x94, 0x71, 0x72, 0xb6, 0x93, 0x71, 0x72, 0xb4, - 0x94, 0x71, 0x73, 0xb6, 0x93, 0x71, 0x73, 0xb4, 0x94, 0x71, 0x74, 0xb6, - 0x93, 0x71, 0x75, 0xb4, 0x94, 0x71, 0x75, 0xb6, 0x93, 0x71, 0x76, 0xb4, - 0x94, 0x71, 0x76, 0xb6, 0x93, 0x71, 0x77, 0xb4, 0x94, 0x71, 0x78, 0xb6, - 0x93, 0x71, 0x78, 0xb4, 0x94, 0x71, 0x79, 0xb6, 0x93, 0x71, 0x79, 0xb4, - 0x94, 0x71, 0x7a, 0xb6, 0x93, 0x71, 0x7a, 0xb4, 0x94, 0x71, 0x7b, 0xb6, - 0x93, 0x71, 0x7c, 0xb4, 0x94, 0x71, 0x7c, 0xb2, 0x94, 0x71, 0x7d, 0xb4, - 0x94, 0x71, 0x7d, 0xb2, 0x94, 0x71, 0x7e, 0xb4, 0x94, 0x71, 0x7e, 0xb2, - 0x94, 0x71, 0x7f, 0xb4, 0x94, 0x71, 0x7f, 0xb2, 0x94, 0x71, 0x80, 0xb4, - 0x94, 0x71, 0x81, 0xb2, 0x94, 0x71, 0x81, 0xb4, 0x94, 0x71, 0x82, 0xb2, - 0x94, 0x71, 0x82, 0xb4, 0x94, 0x71, 0x83, 0xb2, 0x94, 0x71, 0x83, 0xb4, - 0x94, 0x71, 0x84, 0xb2, 0x94, 0x71, 0x84, 0xb4, 0x94, 0x71, 0x85, 0xb2, - 0x94, 0x71, 0x85, 0xb4, 0x94, 0x71, 0x86, 0xb2, 0x94, 0x71, 0x86, 0xb4, - 0x94, 0x71, 0x87, 0xb2, 0x94, 0x71, 0x87, 0xb4, 0x94, 0x71, 0x88, 0xb2, - 0x94, 0x71, 0x88, 0xb4, 0x94, 0x71, 0x89, 0xb2, 0x94, 0x71, 0x89, 0xb4, - 0x94, 0x71, 0x8a, 0xb2, 0x94, 0x71, 0x8a, 0xb4, 0x94, 0x71, 0x8b, 0xb2, - 0x94, 0x71, 0x8b, 0xb4, 0x94, 0x71, 0x8c, 0xb2, 0x94, 0x71, 0x8c, 0xb4, - 0x94, 0x71, 0x8d, 0xb2, 0x94, 0x71, 0x8d, 0xb4, 0x94, 0x71, 0x8e, 0xb2, - 0x94, 0x71, 0x8e, 0xb4, 0x94, 0x71, 0x8e, 0xb2, 0x94, 0x71, 0x8f, 0xb4, - 0x94, 0x71, 0x8f, 0xb2, 0x94, 0x71, 0x90, 0xb4, 0x94, 0x71, 0x90, 0xb2, - 0x94, 0x71, 0x91, 0xb2, 0x94, 0x71, 0x91, 0xb2, 0x94, 0x71, 0x92, 0xb2, - 0x94, 0x71, 0x92, 0xb2, 0x94, 0x71, 0x93, 0xb2, 0x94, 0x71, 0x93, 0xb2, - 0x94, 0x71, 0x94, 0xb2, 0x94, 0x71, 0x94, 0xb2, 0x94, 0x70, 0x94, 0xb2, - 0x94, 0x71, 0x94, 0xb2, 0x95, 0x70, 0x96, 0xb2, 0x95, 0x71, 0x97, 0xb2, - 0x96, 0x71, 0x96, 0xb2, 0x95, 0x71, 0x97, 0xb2, 0x96, 0x71, 0x97, 0xb2, - 0x95, 0x71, 0x98, 0xb2, 0x96, 0x71, 0x98, 0xb2, 0x95, 0x71, 0x98, 0xb2, - 0x96, 0x71, 0x99, 0xb2, 0x95, 0x71, 0x99, 0xb2, 0x96, 0x71, 0x9a, 0xaf, - 0x96, 0x71, 0x9a, 0xb2, 0x96, 0x71, 0x9a, 0xae, 0x9b, 0x71, 0x9b, 0xae, - 0x9b, 0x71, 0x9b, 0xae, 0x9b, 0x71, 0x9c, 0xae, 0x9c, 0x71, 0x9c, 0xae, - 0x9c, 0x71, 0x9d, 0xae, 0x9d, 0x71, 0x9d, 0xae, 0x9d, 0x71, 0x9d, 0xae, - 0x9d, 0x71, 0x9e, 0xae, 0x9e, 0x71, 0x9e, 0xaf, 0xa0, 0x71, 0x9f, 0xaf, - 0xa0, 0x71, 0x9f, 0xaf, 0xa0, 0x71, 0x9f, 0xaf, 0xa0, 0x71, 0xa0, 0xaf, - 0xa0, 0x71, 0xa0, 0xaf, 0xa0, 0x71, 0xa1, 0xaf, 0xa1, 0x71, 0xa1, 0xaf, - 0xa1, 0x71, 0xa1, 0xaf, 0xa1, 0x71, 0xa2, 0xaf, 0xa2, 0x71, 0xa2, 0xaf, - 0xa2, 0x71, 0xa3, 0xaf, 0xa4, 0x71, 0xa3, 0xaf, 0xa5, 0x71, 0xa3, 0xaf, - 0xa4, 0x71, 0xa4, 0xaf, 0xa5, 0x71, 0xa4, 0xaf, 0xa4, 0x71, 0xa5, 0xaf, - 0xa5, 0x71, 0xa5, 0xaf, 0xa5, 0x71, 0xa5, 0xaf, 0xa5, 0x71, 0xa6, 0xaf, - 0xa6, 0x71, 0xa6, 0xaf, 0xa6, 0x71, 0xa6, 0xaf, 0xa6, 0x71, 0xa7, 0xb0, - 0xa8, 0x71, 0xa7, 0xb0, 0xa9, 0x71, 0xa8, 0xb0, 0xa8, 0x71, 0xa8, 0xb0, - 0xa9, 0x71, 0xa8, 0xb0, 0xa8, 0x71, 0xa9, 0xb0, 0xa9, 0x71, 0xa9, 0xb0, - 0xa9, 0x71, 0xaa, 0xb0, 0xaa, 0x71, 0xaa, 0xb0, 0xaa, 0x71, 0xaa, 0xb0, - 0xaa, 0x71, 0xab, 0xb2, 0xab, 0x71, 0xab, 0xb2, 0xac, 0x71, 0xab, 0xb2, - 0xab, 0x70, 0xab, 0xb2, 0xac, 0x71, 0xab, 0xb2, 0xac, 0x70, 0xac, 0xb2, - 0xac, 0x6f, 0xad, 0xb2, 0xad, 0x6f, 0xad, 0xb2, 0xad, 0x6f, 0xae, 0xb2, - 0xae, 0x6f, 0xae, 0xb2, 0xae, 0x6f, 0xae, 0xb2, 0xae, 0x6f, 0xaf, 0xb2, - 0xaf, 0x6f, 0xaf, 0xb2, 0xaf, 0x6f, 0xb0, 0xb2, 0xaf, 0x70, 0xb0, 0xb2, - 0xb0, 0x70, 0xb0, 0xb2, 0xb0, 0x70, 0xb0, 0xb2, 0xb0, 0x70, 0xb1, 0xb2, - 0xb1, 0x70, 0xb1, 0xb2, 0xb1, 0x70, 0xb2, 0xb2, 0xb2, 0x70, 0xb2, 0xb2, - 0xb2, 0x70, 0xb2, 0xb2, 0xb2, 0x70, 0xb3, 0xb2, 0xb3, 0x70, 0xb3, 0xb2, - 0xb3, 0x70, 0xb3, 0xb2, 0xb3, 0x70, 0xb4, 0xb2, 0xb4, 0x70, 0xb4, 0xb2, - 0xb4, 0x71, 0xb4, 0xb2, 0xb4, 0x71, 0xb5, 0xb2, 0xb5, 0x71, 0xb5, 0xb2, - 0xb5, 0x71, 0xb5, 0xb2, 0xb5, 0x71, 0xb6, 0xb2, 0xb6, 0x71, 0xb6, 0xb2, - 0xb6, 0x71, 0xb6, 0xb2, 0xb6, 0x71, 0xb7, 0xb2, 0xb7, 0x71, 0xb7, 0xb2, - 0xb7, 0x71, 0xb7, 0xb2, 0xb7, 0x71, 0xb8, 0xb2, 0xb7, 0x71, 0xb8, 0xb2, - 0xb7, 0x71, 0xb8, 0xb3, 0xb8, 0x71, 0xb9, 0xb3, 0xb9, 0x71, 0xb9, 0xb3, - 0xb9, 0x71, 0xb9, 0xb3, 0xb9, 0x71, 0xba, 0xb3, 0xba, 0x71, 0xba, 0xb3, - 0xba, 0x71, 0xba, 0xb3, 0xba, 0x71, 0xbb, 0xb3, 0xbb, 0x71, 0xbb, 0xb3, - 0xbb, 0x71, 0xbb, 0xb3, 0xbb, 0x71, 0xbc, 0xb3, 0xbb, 0x71, 0xbc, 0xb3, - 0xbb, 0x71, 0xbc, 0xb3, 0xbb, 0x71, 0xbd, 0xb4, 0xbd, 0x71, 0xbd, 0xb4, - 0xbd, 0x71, 0xbd, 0xb4, 0xbd, 0x71, 0xbe, 0xb4, 0xbe, 0x71, 0xbe, 0xb4, - 0xbe, 0x71, 0xbe, 0xb4, 0xbe, 0x71, 0xbf, 0xb4, 0xbf, 0x71, 0xbf, 0xb4, - 0xbe, 0x71, 0xbf, 0xb4, 0xbf, 0x71, 0xc0, 0xb4, 0xbe, 0x71, 0xc0, 0xb4, - 0xbf, 0x71, 0xc0, 0xb4, 0xc0, 0x71, 0xc1, 0xb4, 0xc1, 0x71, 0xc1, 0xb4, - 0xc1, 0x71, 0xc1, 0xb4, 0xc1, 0x71, 0xc1, 0xb4, 0xc1, 0x71, 0xc2, 0xb4, - 0xc2, 0x71, 0xc2, 0xb4, 0xc2, 0x71, 0xc2, 0xb4, 0xc2, 0x71, 0xc3, 0xb4, - 0xc2, 0x71, 0xc3, 0xb4, 0xc2, 0x71, 0xc3, 0xb4, 0xc2, 0x71, 0xc4, 0xb5, - 0xc4, 0x71, 0xc4, 0xb5, 0xc4, 0x71, 0xc4, 0xb5, 0xc4, 0x71, 0xc5, 0xb5, - 0xc5, 0x71, 0xc5, 0xb5, 0xc5, 0x71, 0xc5, 0xb5, 0xc5, 0x71, 0xc6, 0xb5, - 0xc6, 0x71, 0xc6, 0xb5, 0xc6, 0x71, 0xc6, 0xb5, 0xc6, 0x71, 0xc6, 0xb5, - 0xc6, 0x71, 0xc7, 0xb5, 0xc6, 0x71, 0xc7, 0xb5, 0xc6, 0x71, 0xc7, 0xb5, - 0xc6, 0x71, 0xc8, 0xb5, 0xc6, 0x71, 0xc8, 0xb6, 0xc8, 0x71, 0xc8, 0xb6, - 0xc8, 0x71, 0xc9, 0xb6, 0xc9, 0x71, 0xc9, 0xb6, 0xc9, 0x71, 0xc9, 0xb6, - 0xc9, 0x71, 0xc9, 0xb6, 0xc9, 0x71, 0xca, 0xb6, 0xc9, 0x71, 0xca, 0xb6, - 0xc9, 0x71, 0xca, 0xb6, 0xc9, 0x71, 0xcb, 0xb6, 0xc9, 0x71, 0xcb, 0xb6, - 0xc9, 0x71, 0xcb, 0xb6, 0xcb, 0x71, 0xcc, 0xb4, 0xcf, 0x71, 0xcc, 0xb2, - 0xcf, 0x71, 0xcc, 0xb4, 0xcf, 0x71, 0xcc, 0xb2, 0xcf, 0x71, 0xcd, 0xb4, - 0xcf, 0x71, 0xcd, 0xb2, 0xcf, 0x71, 0xcd, 0xb2, 0xd0, 0x71, 0xce, 0xb2, - 0xcf, 0x71, 0xce, 0xb2, 0xd0, 0x71, 0xce, 0xb2, 0xcf, 0x71, 0xce, 0xb2, - 0xd0, 0x71, 0xcf, 0xb2, 0xcf, 0x71, 0xcf, 0xb2, 0xd0, 0x71, 0xcf, 0xb2, - 0xcf, 0x70, 0xcf, 0xb2, 0xd0, 0x71, 0xcf, 0xb2, 0xd0, 0x70, 0xcf, 0xb2, - 0xd0, 0x71, 0xcf, 0xb2, 0xd0, 0x70, 0xcf, 0xb2, 0xd1, 0x71, 0xcf, 0xb2, - 0xd1, 0x70, 0xcf, 0xb2, 0xd1, 0x71, 0xcf, 0xb2, 0xd2, 0x70, 0xcf, 0xb2, - 0xd2, 0x71, 0xcf, 0xb2, 0xd2, 0x70, 0xcf, 0xb2, 0xd2, 0x71, 0xcf, 0xb2, - 0xd3, 0x70, 0xcf, 0xb2, 0xd3, 0x71, 0xcf, 0xb2, 0xd3, 0x70, 0xcf, 0xb2, - 0xd4, 0x71, 0xcf, 0xb2, 0xd4, 0x70, 0xd0, 0xb2, 0xd4, 0x6d, 0xcf, 0xb2, - 0xd4, 0x70, 0xd0, 0xb2, 0xd5, 0x6d, 0xcf, 0xb2, 0xd5, 0x70, 0xd0, 0xb2, - 0xd5, 0x6d, 0xcf, 0xb2, 0xd6, 0x70, 0xd0, 0xb2, 0xd6, 0x6d, 0xcf, 0xb2, - 0xd6, 0x70, 0xd0, 0xb2, 0xd6, 0x6d, 0xcf, 0xb2, 0xd7, 0x70, 0xd0, 0xb2, - 0xd7, 0x6d, 0xcf, 0xb2, 0xd7, 0x70, 0xd0, 0xb2, 0xd7, 0x6d, 0xcf, 0xb2, - 0xd8, 0x70, 0xd0, 0xb2, 0xd8, 0x6d, 0xcf, 0xb2, 0xd8, 0x70, 0xd0, 0xb2, - 0xd9, 0x6d, 0xcf, 0xb2, 0xd9, 0x70, 0xd0, 0xb2, 0xd9, 0x6d, 0xcf, 0xb2, - 0xd9, 0x70, 0xd0, 0xb2, 0xda, 0x6d, 0xcf, 0xb2, 0xda, 0x70, 0xd0, 0xb2, - 0xda, 0x6d, 0xcf, 0xb2, 0xda, 0x70, 0xd0, 0xb2, 0xdb, 0x6d, 0xcf, 0xb2, - 0xdb, 0x70, 0xd0, 0xb2, 0xdb, 0x6d, 0xcf, 0xb2, 0xdb, 0x70, 0xd0, 0xb2, - 0xdc, 0x6d, 0xcf, 0xb2, 0xdc, 0x70, 0xd0, 0xb2, 0xdc, 0x6d, 0xcf, 0xb2, - 0xdd, 0x70, 0xd0, 0xb2, 0xdd, 0x6d, 0xd0, 0xb2, 0xdd, 0x6a, 0xd0, 0xb2, - 0xdd, 0x6d, 0xd0, 0xb2, 0xde, 0x6a, 0xeb, 0xb2, 0xde, 0x73, 0xeb, 0xb2, - 0xde, 0x77, 0xeb, 0xb2, 0xde, 0x73, 0xeb, 0xb2, 0xdf, 0x77, 0xeb, 0xb2, - 0xdf, 0x73, 0xeb, 0xb2, 0xdf, 0x77, 0xeb, 0xb2, 0xdf, 0x73, 0xeb, 0xb2, - 0xe0, 0x77, 0xeb, 0xb2, 0xe0, 0x73, 0xeb, 0xb2, 0xe0, 0x77, 0xeb, 0xb2, - 0xe1, 0x73, 0xeb, 0xb2, 0xe1, 0x77, 0xeb, 0xb2, 0xe1, 0x73, 0xeb, 0xb2, - 0xe1, 0x77, 0xeb, 0xb2, 0xe2, 0x73, 0xeb, 0xb2, 0xe2, 0x77, 0xeb, 0xb2, - 0xe2, 0x73, 0xeb, 0xb2, 0xe2, 0x71, 0xeb, 0xb2, 0xe3, 0x73, 0xeb, 0xb2, - 0xe3, 0x71, 0xeb, 0xb2, 0xe3, 0x73, 0xeb, 0xb2, 0xe3, 0x71, 0xeb, 0xb2, - 0xe4, 0x73, 0xeb, 0xb2, 0xe4, 0x71, 0xeb, 0xb2, 0xe4, 0x73, 0xeb, 0xb2, - 0xe4, 0x71, 0xeb, 0xb2, 0xe5, 0x73, 0xeb, 0xb2, 0xe5, 0x71, 0xeb, 0xb2, - 0xe5, 0x73, 0xeb, 0xb2, 0xe5, 0x71, 0xeb, 0xb2, 0xe6, 0x73, 0xeb, 0xb2, - 0xe6, 0x71, 0xeb, 0xb2, 0xe6, 0x73, 0xeb, 0xb2, 0xe6, 0x71, 0xeb, 0xb2, - 0xe7, 0x73, 0xeb, 0xb2, 0xe7, 0x71, 0xeb, 0xb2, 0xe7, 0x73, 0xeb, 0xb2, - 0xe7, 0x71, 0xeb, 0xb2, 0xe8, 0x73, 0xeb, 0xb2, 0xe8, 0x71, 0xeb, 0xb2, - 0xe8, 0x73, 0xeb, 0xb2, 0xe8, 0x71, 0xeb, 0xb2, 0xe9, 0x73, 0xeb, 0xb2, - 0xe9, 0x71, 0xeb, 0xb2, 0xe9, 0x73, 0xeb, 0xb2, 0xe9, 0x71, 0xeb, 0xb2, - 0xea, 0x73, 0xeb, 0xb2, 0xea, 0x71, 0xeb, 0xb2, 0xea, 0x73, 0xeb, 0xb2, - 0xea, 0x71, 0xec, 0xb2, 0xeb, 0x71, 0xeb, 0xb2, 0xeb, 0x71, 0xec, 0xb2, - 0xeb, 0x71, 0xeb, 0xb2, 0xeb, 0x71, 0xec, 0xb2, 0xeb, 0x71, 0xec, 0xb2, - 0xeb, 0x71, 0xec, 0xb2, 0xeb, 0x71, 0xec, 0xb2, 0xeb, 0x71, 0xec, 0xb2, - 0xeb, 0x71, 0xed, 0xb2, 0xeb, 0x71, 0xed, 0xb2, 0xeb, 0x71, 0xed, 0xaf, - 0xeb, 0x71, 0xed, 0xb2, 0xeb, 0x71, 0xee, 0xaf, 0xeb, 0x71, 0xee, 0xb2, - 0xeb, 0x71, 0xee, 0xaf, 0xeb, 0x71, 0xee, 0xb2, 0xeb, 0x71, 0xef, 0xaf, - 0xeb, 0x71, 0xef, 0xb2, 0xeb, 0x71, 0xef, 0xaf, 0xeb, 0x71, 0xef, 0xb2, - 0xeb, 0x71, 0xf0, 0xaf, 0xeb, 0x71, 0xf0, 0xb2, 0xeb, 0x71, 0xf0, 0xaf, - 0xeb, 0x71, 0xf0, 0xaa, 0xf0, 0x71, 0xf1, 0xaa, 0xf1, 0x71, 0xf1, 0xaa, - 0xf1, 0x71, 0xf1, 0xaa, 0xf1, 0x71, 0xf1, 0xb4, 0xf6, 0x71, 0xf2, 0xb2, - 0xf6, 0x71, 0xf2, 0xb4, 0xf6, 0x71, 0xf2, 0xb2, 0xf6, 0x71, 0xf2, 0xb4, - 0xf6, 0x71, 0xf2, 0xb2, 0xf6, 0x71, 0xf3, 0xb4, 0xf6, 0x71, 0xf3, 0xb2, - 0xf6, 0x71, 0xf3, 0xb4, 0xf6, 0x71, 0xf3, 0xb2, 0xf6, 0x71, 0xf4, 0xb4, - 0xf6, 0x71, 0xf4, 0xb2, 0xf6, 0x71, 0xf4, 0xb4, 0xf6, 0x71, 0xf4, 0xb2, - 0xf6, 0x71, 0xf5, 0xb2, 0xf6, 0x71, 0xf5, 0xb2, 0xf6, 0x71, 0xf5, 0xb2, - 0xf6, 0x71, 0xf5, 0xb2, 0xf6, 0x71, 0xf5, 0xb2, 0xf6, 0x71, 0xf6, 0xb2, - 0xf6, 0x71, 0xf6, 0xb2, 0xf6, 0x71, 0xf6, 0xb2, 0xf6, 0x71, 0xf6, 0xb2, - 0xf6, 0x71, 0xf6, 0xb2, 0xf7, 0x71, 0xf6, 0xb2, 0xf7, 0x71, 0xf6, 0xb2, - 0xf7, 0x6f, 0xf6, 0xb2, 0xf7, 0x71, 0xf6, 0xb2, 0xf8, 0x6f, 0xf6, 0xb2, - 0xf8, 0x71, 0xf6, 0xb2, 0xf8, 0x6f, 0xfa, 0xb2, 0xf8, 0x72, 0xfa, 0xb2, - 0xf8, 0x71, 0xfa, 0xb2, 0xf9, 0x72, 0xfa, 0xb2, 0xf9, 0x71, 0xfa, 0xb2, - 0xf9, 0x72, 0xfa, 0xb2, 0xf9, 0x71, 0xfa, 0xb2, 0xfa, 0x72, 0xfa, 0xb2, - 0xfa, 0x71, 0xfa, 0xb2, 0xfa, 0x71, 0xfa, 0xb2, 0xfa, 0x71, 0xfa, 0xb2, - 0xfa, 0x71, 0xfb, 0xb2, 0xfa, 0x71, 0xfb, 0xb2, 0xfa, 0x71, 0xfb, 0xb2, - 0xfa, 0x71, 0xfb, 0xb2, 0xfa, 0x71, 0xfc, 0xb2, 0xfa, 0x71, 0xfc, 0xb2, - 0xfa, 0x71, 0xfc, 0xaf, 0xfa, 0x71, 0xfc, 0xb2, 0xfa, 0x71, 0xfc, 0xaf, - 0xfa, 0x71, 0xfd, 0xb2, 0xfa, 0x71, 0xfd, 0xaf, 0xfa, 0x71, 0xfd, 0xb2, - 0xfa, 0x71, 0xfd, 0xaf, 0xfa, 0x71, 0xfe, 0xb2, 0xfa, 0x71, 0xfe, 0xaf, - 0xfa, 0x71, 0xfe, 0xb2, 0xfa, 0x71, 0xfe, 0xaf, 0xfa, 0x71, 0xfe, 0xb2, - 0xfa, 0x71, 0xff, 0xaf, 0xfa, 0x71, 0xff, 0xb2, 0xfa, 0x71, 0x03, 0xb9, - 0x93, 0x71, 0x0a, 0xbb, 0x92, 0x71, 0x0f, 0xb9, 0x93, 0x71, 0x14, 0xbb, - 0x92, 0x71, 0x17, 0xb9, 0x93, 0x71, 0x1b, 0xbb, 0x92, 0x71, 0x1e, 0xb9, - 0x93, 0x71, 0x20, 0xbb, 0x92, 0x71, 0x23, 0xb9, 0x93, 0x71, 0x25, 0xbb, - 0x92, 0x71, 0x27, 0xb9, 0x93, 0x71, 0x29, 0xbb, 0x92, 0x71, 0x2b, 0xb9, - 0x93, 0x71, 0x2d, 0xbb, 0x92, 0x71, 0x2f, 0xb9, 0x93, 0x71, 0x31, 0xbb, - 0x92, 0x71, 0x32, 0xb9, 0x93, 0x71, 0x34, 0xb6, 0x93, 0x71, 0x35, 0xb9, - 0x93, 0x71, 0x37, 0xb6, 0x93, 0x71, 0x38, 0xb9, 0x93, 0x71, 0x3a, 0xb6, - 0x93, 0x71, 0x3b, 0xb9, 0x93, 0x71, 0x3c, 0xb6, 0x93, 0x71, 0x3e, 0xb9, - 0x93, 0x71, 0x3f, 0xb6, 0x93, 0x71, 0x40, 0xb9, 0x93, 0x71, 0x42, 0xb6, - 0x93, 0x71, 0x43, 0xb9, 0x93, 0x71, 0x44, 0xb6, 0x93, 0x71, 0x45, 0xb9, - 0x93, 0x71, 0x46, 0xb6, 0x93, 0x71, 0x47, 0xb9, 0x93, 0x71, 0x48, 0xb6, - 0x93, 0x71, 0x49, 0xb9, 0x93, 0x71, 0x4a, 0xb6, 0x93, 0x71, 0x4b, 0xb9, - 0x93, 0x71, 0x4c, 0xb6, 0x93, 0x71, 0x4d, 0xb9, 0x93, 0x71, 0x4e, 0xb6, - 0x93, 0x71, 0x4f, 0xb9, 0x93, 0x71, 0x50, 0xb6, 0x93, 0x71, 0x51, 0xb9, - 0x93, 0x71, 0x52, 0xb6, 0x93, 0x71, 0x53, 0xb9, 0x93, 0x71, 0x54, 0xb6, - 0x93, 0x71, 0x55, 0xb9, 0x93, 0x71, 0x56, 0xb6, 0x93, 0x71, 0x57, 0xb9, - 0x93, 0x71, 0x58, 0xb6, 0x93, 0x71, 0x58, 0xb9, 0x93, 0x71, 0x59, 0xb6, - 0x93, 0x71, 0x5a, 0xb9, 0x93, 0x71, 0x5b, 0xb6, 0x93, 0x71, 0x5c, 0xb9, - 0x93, 0x71, 0x5d, 0xb6, 0x93, 0x71, 0x5d, 0xb9, 0x93, 0x71, 0x5e, 0xb6, - 0x93, 0x71, 0x5f, 0xb4, 0x94, 0x71, 0x60, 0xb6, 0x93, 0x71, 0x60, 0xb4, - 0x94, 0x71, 0x61, 0xb6, 0x93, 0x71, 0x62, 0xb4, 0x94, 0x71, 0x63, 0xb6, - 0x93, 0x71, 0x63, 0xb4, 0x94, 0x71, 0x64, 0xb6, 0x93, 0x71, 0x65, 0xb4, - 0x94, 0x71, 0x66, 0xb6, 0x93, 0x71, 0x66, 0xb4, 0x94, 0x71, 0x67, 0xb6, - 0x93, 0x71, 0x68, 0xb4, 0x94, 0x71, 0x68, 0xb6, 0x93, 0x71, 0x69, 0xb4, - 0x94, 0x71, 0x6a, 0xb6, 0x93, 0x71, 0x6a, 0xb4, 0x94, 0x71, 0x6b, 0xb6, - 0x93, 0x71, 0x6c, 0xb4, 0x94, 0x71, 0x6c, 0xb6, 0x93, 0x71, 0x6d, 0xb4, - 0x94, 0x71, 0x6e, 0xb6, 0x93, 0x71, 0x6e, 0xb4, 0x94, 0x71, 0x6f, 0xb6, - 0x93, 0x71, 0x70, 0xb4, 0x94, 0x71, 0x70, 0xb6, 0x93, 0x71, 0x71, 0xb4, - 0x94, 0x71, 0x72, 0xb6, 0x93, 0x71, 0x72, 0xb4, 0x94, 0x71, 0x73, 0xb6, - 0x93, 0x71, 0x73, 0xb4, 0x94, 0x71, 0x74, 0xb6, 0x93, 0x71, 0x75, 0xb4, - 0x94, 0x71, 0x75, 0xb6, 0x93, 0x71, 0x76, 0xb4, 0x94, 0x71, 0x76, 0xb6, - 0x93, 0x71, 0x77, 0xb4, 0x94, 0x71, 0x78, 0xb6, 0x93, 0x71, 0x78, 0xb4, - 0x94, 0x71, 0x79, 0xb6, 0x93, 0x71, 0x79, 0xb4, 0x94, 0x71, 0x7a, 0xb6, - 0x93, 0x71, 0x7a, 0xb4, 0x94, 0x71, 0x7b, 0xb6, 0x93, 0x71, 0x7c, 0xb4, - 0x94, 0x71, 0x7c, 0xb6, 0x93, 0x71, 0x7d, 0xb4, 0x94, 0x71, 0x7d, 0xb6, - 0x93, 0x71, 0x7e, 0xb4, 0x94, 0x71, 0x7e, 0xb6, 0x93, 0x71, 0x7f, 0xb4, - 0x94, 0x71, 0x7f, 0xb6, 0x93, 0x71, 0x80, 0xb4, 0x94, 0x71, 0x81, 0xb6, - 0x93, 0x71, 0x81, 0xb4, 0x94, 0x71, 0x82, 0xb6, 0x93, 0x71, 0x82, 0xb4, - 0x94, 0x71, 0x83, 0xb2, 0x94, 0x71, 0x83, 0xb4, 0x94, 0x71, 0x84, 0xb2, - 0x94, 0x71, 0x84, 0xb4, 0x94, 0x71, 0x85, 0xb2, 0x94, 0x71, 0x85, 0xb4, - 0x94, 0x71, 0x86, 0xb2, 0x94, 0x71, 0x86, 0xb4, 0x94, 0x71, 0x87, 0xb2, - 0x94, 0x71, 0x87, 0xb4, 0x94, 0x71, 0x88, 0xb2, 0x94, 0x71, 0x88, 0xb4, - 0x94, 0x71, 0x89, 0xb2, 0x94, 0x71, 0x89, 0xb4, 0x94, 0x71, 0x8a, 0xb2, - 0x94, 0x71, 0x8a, 0xb4, 0x94, 0x71, 0x8b, 0xb2, 0x94, 0x71, 0x8b, 0xb4, - 0x94, 0x71, 0x8c, 0xb2, 0x94, 0x71, 0x8c, 0xb4, 0x94, 0x71, 0x8d, 0xb2, - 0x94, 0x71, 0x8d, 0xb4, 0x94, 0x71, 0x8e, 0xb2, 0x94, 0x71, 0x8e, 0xb4, - 0x94, 0x71, 0x8e, 0xb2, 0x94, 0x71, 0x8f, 0xb4, 0x94, 0x71, 0x8f, 0xb2, - 0x94, 0x71, 0x90, 0xb4, 0x94, 0x71, 0x90, 0xb2, 0x94, 0x71, 0x91, 0xb2, - 0x94, 0x71, 0x91, 0xb2, 0x94, 0x71, 0x92, 0xb2, 0x94, 0x71, 0x92, 0xb2, - 0x94, 0x71, 0x93, 0xb2, 0x94, 0x71, 0x93, 0xb2, 0x94, 0x71, 0x94, 0xb2, - 0x94, 0x71, 0x94, 0xb2, 0x94, 0x70, 0x94, 0xb2, 0x94, 0x71, 0x96, 0xb2, - 0x95, 0x71, 0x96, 0xb2, 0x95, 0x71, 0x96, 0xb1, 0x96, 0x71, 0x96, 0xb2, - 0x95, 0x71, 0x97, 0xb1, 0x96, 0x71, 0x97, 0xb2, 0x95, 0x71, 0x98, 0xb1, - 0x96, 0x71, 0x98, 0xb2, 0x95, 0x71, 0x98, 0xb1, 0x96, 0x71, 0x99, 0xb2, - 0x95, 0x71, 0x99, 0xb1, 0x96, 0x71, 0x9a, 0xb2, 0x95, 0x71, 0x9a, 0xb1, - 0x96, 0x71, 0x9a, 0xae, 0x9a, 0x71, 0x9b, 0xae, 0x9d, 0x71, 0x9b, 0xae, - 0x9e, 0x71, 0x9c, 0xae, 0x9d, 0x71, 0x9c, 0xae, 0x9e, 0x71, 0x9d, 0xae, - 0x9d, 0x71, 0x9d, 0xae, 0x9e, 0x71, 0x9d, 0xae, 0x9d, 0x71, 0x9e, 0xae, - 0x9e, 0x71, 0x9e, 0xae, 0x9e, 0x71, 0x9f, 0xae, 0x9f, 0x71, 0x9f, 0xae, - 0x9f, 0x71, 0x9f, 0xae, 0x9f, 0x71, 0xa0, 0xae, 0xa0, 0x71, 0xa0, 0xaf, - 0xa2, 0x71, 0xa1, 0xaf, 0xa2, 0x71, 0xa1, 0xaf, 0xa2, 0x71, 0xa1, 0xaf, - 0xa2, 0x71, 0xa2, 0xaf, 0xa2, 0x71, 0xa2, 0xaf, 0xa2, 0x71, 0xa3, 0xaf, - 0xa3, 0x71, 0xa3, 0xaf, 0xa3, 0x71, 0xa3, 0xaf, 0xa3, 0x71, 0xa4, 0xaf, - 0xa4, 0x71, 0xa4, 0xaf, 0xa4, 0x71, 0xa5, 0xb0, 0xa6, 0x71, 0xa5, 0xb0, - 0xa6, 0x71, 0xa5, 0xb0, 0xa6, 0x71, 0xa6, 0xb0, 0xa6, 0x71, 0xa6, 0xb0, - 0xa6, 0x71, 0xa6, 0xb0, 0xa6, 0x71, 0xa7, 0xb0, 0xa7, 0x71, 0xa7, 0xb0, - 0xa7, 0x71, 0xa8, 0xb0, 0xa8, 0x71, 0xa8, 0xb0, 0xa8, 0x71, 0xa8, 0xb0, - 0xa8, 0x71, 0xa9, 0xb0, 0xaa, 0x71, 0xa9, 0xb0, 0xab, 0x71, 0xaa, 0xb0, - 0xaa, 0x71, 0xaa, 0xb2, 0xab, 0x71, 0xaa, 0xb0, 0xaa, 0x71, 0xab, 0xb2, - 0xab, 0x71, 0xab, 0xb2, 0xac, 0x71, 0xab, 0xb2, 0xab, 0x71, 0xab, 0xb2, - 0xac, 0x71, 0xab, 0xb2, 0xac, 0x71, 0xab, 0xb2, 0xac, 0x71, 0xae, 0xb2, - 0xad, 0x6f, 0xae, 0xb2, 0xad, 0x6f, 0xae, 0xb2, 0xae, 0x6f, 0xae, 0xb2, - 0xae, 0x6f, 0xae, 0xb2, 0xae, 0x6f, 0xaf, 0xb2, 0xaf, 0x6f, 0xaf, 0xb2, - 0xaf, 0x6f, 0xaf, 0xb2, 0xaf, 0x6f, 0xb0, 0xb2, 0xb0, 0x6f, 0xb0, 0xb2, - 0xb0, 0x6f, 0xb0, 0xb2, 0xb0, 0x6f, 0xb1, 0xb2, 0xb1, 0x6f, 0xb2, 0xb2, - 0xb1, 0x70, 0xb2, 0xb2, 0xb2, 0x70, 0xb2, 0xb2, 0xb2, 0x70, 0xb2, 0xb2, - 0xb2, 0x70, 0xb3, 0xb2, 0xb3, 0x70, 0xb3, 0xb2, 0xb3, 0x70, 0xb3, 0xb2, - 0xb3, 0x70, 0xb4, 0xb2, 0xb4, 0x70, 0xb4, 0xb2, 0xb4, 0x70, 0xb4, 0xb2, - 0xb4, 0x70, 0xb5, 0xb2, 0xb5, 0x70, 0xb5, 0xb2, 0xb5, 0x70, 0xb5, 0xb2, - 0xb5, 0x70, 0xb6, 0xb3, 0xb6, 0x71, 0xb6, 0xb3, 0xb6, 0x71, 0xb6, 0xb3, - 0xb6, 0x71, 0xb7, 0xb3, 0xb7, 0x71, 0xb7, 0xb3, 0xb7, 0x71, 0xb7, 0xb3, - 0xb7, 0x71, 0xb8, 0xb3, 0xb8, 0x71, 0xb8, 0xb3, 0xb8, 0x71, 0xb8, 0xb3, - 0xb8, 0x71, 0xb9, 0xb3, 0xb9, 0x71, 0xb9, 0xb3, 0xb9, 0x71, 0xb9, 0xb3, - 0xb9, 0x71, 0xba, 0xb3, 0xb9, 0x71, 0xba, 0xb3, 0xb9, 0x71, 0xba, 0xb3, - 0xba, 0x71, 0xbb, 0xb3, 0xbb, 0x71, 0xbb, 0xb3, 0xbb, 0x71, 0xbb, 0xb3, - 0xbb, 0x71, 0xbc, 0xb3, 0xbc, 0x71, 0xbc, 0xb3, 0xbc, 0x71, 0xbc, 0xb3, - 0xbc, 0x71, 0xbd, 0xb3, 0xbd, 0x71, 0xbd, 0xb3, 0xbd, 0x71, 0xbd, 0xb3, - 0xbd, 0x71, 0xbe, 0xb3, 0xbd, 0x71, 0xbe, 0xb3, 0xbd, 0x71, 0xbe, 0xb3, - 0xbd, 0x71, 0xbf, 0xb4, 0xbf, 0x71, 0xbf, 0xb4, 0xbf, 0x71, 0xbf, 0xb4, - 0xbf, 0x71, 0xc0, 0xb4, 0xc0, 0x71, 0xc0, 0xb4, 0xc0, 0x71, 0xc0, 0xb4, - 0xc0, 0x71, 0xc1, 0xb4, 0xc1, 0x71, 0xc1, 0xb4, 0xc0, 0x71, 0xc1, 0xb4, - 0xc1, 0x71, 0xc1, 0xb4, 0xc0, 0x71, 0xc2, 0xb4, 0xc1, 0x71, 0xc2, 0xb5, - 0xc2, 0x71, 0xc2, 0xb5, 0xc2, 0x71, 0xc3, 0xb5, 0xc3, 0x71, 0xc3, 0xb5, - 0xc3, 0x71, 0xc3, 0xb5, 0xc3, 0x71, 0xc4, 0xb5, 0xc4, 0x71, 0xc4, 0xb5, - 0xc4, 0x71, 0xc4, 0xb5, 0xc4, 0x71, 0xc5, 0xb5, 0xc4, 0x71, 0xc5, 0xb5, - 0xc4, 0x71, 0xc5, 0xb5, 0xc4, 0x71, 0xc6, 0xb5, 0xc6, 0x71, 0xc6, 0xb5, - 0xc6, 0x71, 0xc6, 0xb5, 0xc6, 0x71, 0xc6, 0xb5, 0xc6, 0x71, 0xc7, 0xb5, - 0xc7, 0x71, 0xc7, 0xb5, 0xc7, 0x71, 0xc7, 0xb5, 0xc7, 0x71, 0xc8, 0xb5, - 0xc7, 0x71, 0xc8, 0xb5, 0xc7, 0x71, 0xc8, 0xb5, 0xc7, 0x71, 0xc9, 0xb5, - 0xc7, 0x71, 0xc9, 0xb5, 0xc7, 0x71, 0xc9, 0xb5, 0xc7, 0x71, 0xc9, 0xb6, - 0xc9, 0x71, 0xca, 0xb6, 0xca, 0x71, 0xca, 0xb6, 0xca, 0x71, 0xca, 0xb6, - 0xca, 0x71, 0xcb, 0xb6, 0xcb, 0x71, 0xcb, 0xb6, 0xca, 0x71, 0xcb, 0xb6, - 0xcb, 0x71, 0xcc, 0xb6, 0xca, 0x71, 0xcc, 0xb2, 0xcf, 0x71, 0xcc, 0xb3, - 0xcf, 0x71, 0xcc, 0xb2, 0xcf, 0x71, 0xcd, 0xb3, 0xcf, 0x71, 0xcd, 0xb2, - 0xcf, 0x71, 0xcd, 0xb3, 0xcf, 0x71, 0xce, 0xb2, 0xcf, 0x71, 0xce, 0xb3, - 0xcf, 0x71, 0xce, 0xb2, 0xcf, 0x71, 0xce, 0xb2, 0xd0, 0x71, 0xcf, 0xb2, - 0xcf, 0x71, 0xcf, 0xb2, 0xd0, 0x71, 0xcf, 0xb2, 0xcf, 0x71, 0xcf, 0xb2, - 0xd0, 0x71, 0xcf, 0xb2, 0xd0, 0x71, 0xcf, 0xb2, 0xd0, 0x71, 0xcf, 0xb2, - 0xd0, 0x6f, 0xcf, 0xb2, 0xd1, 0x71, 0xcf, 0xb2, 0xd1, 0x6f, 0xcf, 0xb2, - 0xd1, 0x71, 0xcf, 0xb2, 0xd2, 0x6f, 0xcf, 0xb2, 0xd2, 0x71, 0xcf, 0xb2, - 0xd2, 0x6f, 0xcf, 0xb2, 0xd2, 0x71, 0xcf, 0xb2, 0xd3, 0x6f, 0xcf, 0xb2, - 0xd3, 0x71, 0xcf, 0xb2, 0xd3, 0x6f, 0xcf, 0xb2, 0xd4, 0x71, 0xcf, 0xb2, - 0xd4, 0x6f, 0xcf, 0xb2, 0xd4, 0x71, 0xcf, 0xb2, 0xd4, 0x6f, 0xcf, 0xb2, - 0xd5, 0x71, 0xcf, 0xb2, 0xd5, 0x6f, 0xcf, 0xb2, 0xd5, 0x71, 0xcf, 0xb2, - 0xd6, 0x6f, 0xcf, 0xb2, 0xd6, 0x71, 0xcf, 0xb2, 0xd6, 0x6f, 0xd0, 0xb2, - 0xd6, 0x6c, 0xcf, 0xb2, 0xd7, 0x6f, 0xd0, 0xb2, 0xd7, 0x6c, 0xcf, 0xb2, - 0xd7, 0x6f, 0xd0, 0xb2, 0xd7, 0x6c, 0xcf, 0xb2, 0xd8, 0x6f, 0xd0, 0xb2, - 0xd8, 0x6c, 0xcf, 0xb2, 0xd8, 0x6f, 0xd0, 0xb2, 0xd9, 0x6c, 0xcf, 0xb2, - 0xd9, 0x6f, 0xd0, 0xb2, 0xd9, 0x6c, 0xcf, 0xb2, 0xd9, 0x6f, 0xd0, 0xb2, - 0xda, 0x6c, 0xcf, 0xb2, 0xda, 0x6f, 0xd0, 0xb2, 0xda, 0x6c, 0xcf, 0xb2, - 0xda, 0x6f, 0xd0, 0xb2, 0xdb, 0x6c, 0xcf, 0xb2, 0xdb, 0x6f, 0xd0, 0xb2, - 0xdb, 0x6c, 0xcf, 0xb2, 0xdb, 0x6f, 0xd0, 0xb2, 0xdc, 0x6c, 0xd0, 0xb2, - 0xdc, 0x6a, 0xd0, 0xb2, 0xdc, 0x6c, 0xd0, 0xb2, 0xdd, 0x6a, 0xd0, 0xb2, - 0xdd, 0x6c, 0xd0, 0xb2, 0xdd, 0x6a, 0xd0, 0xb2, 0xdd, 0x6c, 0xd0, 0xb2, - 0xde, 0x6a, 0xeb, 0xb2, 0xde, 0x72, 0xeb, 0xb2, 0xde, 0x76, 0xeb, 0xb2, - 0xde, 0x72, 0xeb, 0xb2, 0xdf, 0x76, 0xeb, 0xb2, 0xdf, 0x72, 0xeb, 0xb2, - 0xdf, 0x76, 0xeb, 0xb2, 0xdf, 0x72, 0xeb, 0xb2, 0xe0, 0x76, 0xeb, 0xb2, - 0xe0, 0x72, 0xeb, 0xb2, 0xe0, 0x76, 0xeb, 0xb2, 0xe1, 0x72, 0xeb, 0xb2, - 0xe1, 0x76, 0xeb, 0xb2, 0xe1, 0x72, 0xeb, 0xb2, 0xe1, 0x76, 0xeb, 0xb2, - 0xe2, 0x72, 0xeb, 0xb2, 0xe2, 0x76, 0xeb, 0xb2, 0xe2, 0x72, 0xeb, 0xb2, - 0xe2, 0x76, 0xeb, 0xb2, 0xe3, 0x72, 0xeb, 0xb2, 0xe3, 0x76, 0xeb, 0xb2, - 0xe3, 0x72, 0xeb, 0xb2, 0xe3, 0x76, 0xeb, 0xb2, 0xe4, 0x72, 0xeb, 0xb2, - 0xe4, 0x76, 0xeb, 0xb2, 0xe4, 0x72, 0xeb, 0xb2, 0xe4, 0x76, 0xeb, 0xb2, - 0xe5, 0x72, 0xeb, 0xb2, 0xe5, 0x76, 0xeb, 0xb2, 0xe5, 0x72, 0xeb, 0xb2, - 0xe5, 0x71, 0xeb, 0xb2, 0xe6, 0x72, 0xeb, 0xb2, 0xe6, 0x71, 0xeb, 0xb2, - 0xe6, 0x72, 0xeb, 0xb2, 0xe6, 0x71, 0xeb, 0xb2, 0xe7, 0x72, 0xeb, 0xb2, - 0xe7, 0x71, 0xeb, 0xb2, 0xe7, 0x72, 0xeb, 0xb2, 0xe7, 0x71, 0xeb, 0xb2, - 0xe8, 0x72, 0xeb, 0xb2, 0xe8, 0x71, 0xeb, 0xb2, 0xe8, 0x72, 0xeb, 0xb2, - 0xe8, 0x71, 0xeb, 0xb2, 0xe9, 0x72, 0xeb, 0xb2, 0xe9, 0x71, 0xeb, 0xb2, - 0xe9, 0x72, 0xeb, 0xb2, 0xe9, 0x71, 0xeb, 0xb2, 0xea, 0x72, 0xeb, 0xb2, - 0xea, 0x71, 0xeb, 0xb2, 0xea, 0x72, 0xeb, 0xb2, 0xea, 0x71, 0xeb, 0xb2, - 0xeb, 0x72, 0xeb, 0xb2, 0xeb, 0x71, 0xec, 0xb2, 0xeb, 0x71, 0xeb, 0xb2, - 0xeb, 0x71, 0xec, 0xb2, 0xeb, 0x71, 0xec, 0xb2, 0xeb, 0x71, 0xec, 0xb2, - 0xeb, 0x71, 0xec, 0xb2, 0xeb, 0x71, 0xec, 0xb2, 0xeb, 0x71, 0xed, 0xb2, - 0xeb, 0x71, 0xed, 0xb2, 0xeb, 0x71, 0xed, 0xb0, 0xeb, 0x71, 0xed, 0xb2, - 0xeb, 0x71, 0xee, 0xb0, 0xeb, 0x71, 0xee, 0xb2, 0xeb, 0x71, 0xee, 0xb0, - 0xeb, 0x71, 0xee, 0xb2, 0xeb, 0x71, 0xef, 0xb0, 0xeb, 0x71, 0xef, 0xb2, - 0xeb, 0x71, 0xef, 0xb0, 0xeb, 0x71, 0xef, 0xb2, 0xeb, 0x71, 0xf0, 0xb0, - 0xeb, 0x71, 0xf0, 0xb2, 0xeb, 0x71, 0xf0, 0xb0, 0xeb, 0x71, 0xf0, 0xb2, - 0xeb, 0x71, 0xf1, 0xaa, 0xf2, 0x71, 0xf1, 0xaa, 0xf1, 0x71, 0xf1, 0xb2, - 0xf6, 0x71, 0xf1, 0xb4, 0xf6, 0x71, 0xf2, 0xb2, 0xf6, 0x71, 0xf2, 0xb4, - 0xf6, 0x71, 0xf2, 0xb2, 0xf6, 0x71, 0xf2, 0xb4, 0xf6, 0x71, 0xf2, 0xb2, - 0xf6, 0x71, 0xf3, 0xb4, 0xf6, 0x71, 0xf3, 0xb2, 0xf6, 0x71, 0xf3, 0xb4, - 0xf6, 0x71, 0xf3, 0xb2, 0xf6, 0x71, 0xf4, 0xb4, 0xf6, 0x71, 0xf4, 0xb2, - 0xf6, 0x71, 0xf4, 0xb4, 0xf6, 0x71, 0xf4, 0xb2, 0xf6, 0x71, 0xf5, 0xb2, - 0xf6, 0x71, 0xf5, 0xb2, 0xf6, 0x71, 0xf5, 0xb2, 0xf6, 0x71, 0xf5, 0xb2, - 0xf6, 0x71, 0xf5, 0xb2, 0xf6, 0x71, 0xf6, 0xb2, 0xf6, 0x71, 0xf6, 0xb2, - 0xf6, 0x71, 0xf6, 0xb2, 0xf6, 0x71, 0xf6, 0xb2, 0xf6, 0x71, 0xf6, 0xb2, - 0xf7, 0x71, 0xf6, 0xb2, 0xf7, 0x71, 0xf6, 0xb2, 0xf7, 0x6f, 0xf6, 0xb2, - 0xf7, 0x71, 0xf6, 0xb2, 0xf8, 0x6f, 0xf6, 0xb2, 0xf8, 0x71, 0xf6, 0xb2, - 0xf8, 0x6f, 0xfa, 0xb2, 0xf8, 0x72, 0xfa, 0xb2, 0xf8, 0x71, 0xfa, 0xb2, - 0xf9, 0x72, 0xfa, 0xb2, 0xf9, 0x71, 0xfa, 0xb2, 0xf9, 0x72, 0xfa, 0xb2, - 0xf9, 0x71, 0xfa, 0xb2, 0xfa, 0x72, 0xfa, 0xb2, 0xfa, 0x71, 0xfa, 0xb2, - 0xfa, 0x71, 0xfa, 0xb2, 0xfa, 0x71, 0xfa, 0xb2, 0xfa, 0x71, 0xfb, 0xb2, - 0xfa, 0x71, 0xfb, 0xb2, 0xfa, 0x71, 0xfb, 0xb2, 0xfa, 0x71, 0xfb, 0xb2, - 0xfa, 0x71, 0xfc, 0xb2, 0xfa, 0x71, 0xfc, 0xb2, 0xfa, 0x71, 0xfc, 0xb0, - 0xfa, 0x71, 0xfc, 0xb2, 0xfa, 0x71, 0xfc, 0xb0, 0xfa, 0x71, 0xfd, 0xb2, - 0xfa, 0x71, 0xfd, 0xb0, 0xfa, 0x71, 0xfd, 0xb2, 0xfa, 0x71, 0xfd, 0xb0, - 0xfa, 0x71, 0xfe, 0xb2, 0xfa, 0x71, 0xfe, 0xb0, 0xfa, 0x71, 0xfe, 0xb2, - 0xfa, 0x71, 0xfe, 0xb0, 0xfa, 0x71, 0xfe, 0xb2, 0xfa, 0x71, 0xff, 0xb0, - 0xfa, 0x71, 0xff, 0xb2, 0xfa, 0x71, 0x03, 0xb8, 0x93, 0x72, 0x0a, 0xba, - 0x92, 0x72, 0x0f, 0xb8, 0x93, 0x72, 0x14, 0xba, 0x92, 0x72, 0x17, 0xb8, - 0x93, 0x72, 0x1b, 0xba, 0x92, 0x72, 0x1e, 0xb8, 0x93, 0x72, 0x20, 0xba, - 0x92, 0x72, 0x23, 0xb8, 0x93, 0x72, 0x25, 0xba, 0x92, 0x72, 0x27, 0xb8, - 0x93, 0x72, 0x29, 0xba, 0x92, 0x72, 0x2b, 0xb8, 0x93, 0x72, 0x2d, 0xba, - 0x92, 0x72, 0x2f, 0xb8, 0x93, 0x72, 0x31, 0xba, 0x92, 0x72, 0x32, 0xb8, - 0x93, 0x72, 0x34, 0xba, 0x92, 0x72, 0x35, 0xb8, 0x93, 0x72, 0x37, 0xba, - 0x92, 0x72, 0x38, 0xb8, 0x93, 0x72, 0x3a, 0xba, 0x92, 0x72, 0x3b, 0xb8, - 0x93, 0x72, 0x3c, 0xba, 0x92, 0x72, 0x3e, 0xb8, 0x93, 0x72, 0x3f, 0xba, - 0x92, 0x72, 0x40, 0xb8, 0x93, 0x72, 0x42, 0xba, 0x92, 0x72, 0x43, 0xb8, - 0x93, 0x72, 0x44, 0xba, 0x92, 0x72, 0x45, 0xb8, 0x93, 0x72, 0x46, 0xba, - 0x92, 0x72, 0x47, 0xb8, 0x93, 0x72, 0x48, 0xba, 0x92, 0x72, 0x49, 0xb8, - 0x93, 0x72, 0x4a, 0xba, 0x92, 0x72, 0x4b, 0xb8, 0x93, 0x72, 0x4c, 0xba, - 0x92, 0x72, 0x4d, 0xb8, 0x93, 0x72, 0x4e, 0xba, 0x92, 0x72, 0x4f, 0xb8, - 0x93, 0x72, 0x50, 0xb6, 0x93, 0x72, 0x51, 0xb8, 0x93, 0x72, 0x52, 0xb6, - 0x93, 0x72, 0x53, 0xb8, 0x93, 0x72, 0x54, 0xb6, 0x93, 0x72, 0x55, 0xb8, - 0x93, 0x72, 0x56, 0xb6, 0x93, 0x72, 0x57, 0xb8, 0x93, 0x72, 0x58, 0xb6, - 0x93, 0x72, 0x58, 0xb8, 0x93, 0x72, 0x59, 0xb6, 0x93, 0x72, 0x5a, 0xb8, - 0x93, 0x72, 0x5b, 0xb6, 0x93, 0x72, 0x5c, 0xb8, 0x93, 0x72, 0x5d, 0xb6, - 0x93, 0x72, 0x5d, 0xb8, 0x93, 0x72, 0x5e, 0xb6, 0x93, 0x72, 0x5f, 0xb8, - 0x93, 0x72, 0x60, 0xb6, 0x93, 0x72, 0x60, 0xb8, 0x93, 0x72, 0x61, 0xb6, - 0x93, 0x72, 0x62, 0xb8, 0x93, 0x72, 0x63, 0xb6, 0x93, 0x72, 0x63, 0xb8, - 0x93, 0x72, 0x64, 0xb6, 0x93, 0x72, 0x65, 0xb8, 0x93, 0x72, 0x66, 0xb6, - 0x93, 0x72, 0x66, 0xb8, 0x93, 0x72, 0x67, 0xb6, 0x93, 0x72, 0x68, 0xb8, - 0x93, 0x72, 0x68, 0xb6, 0x93, 0x72, 0x69, 0xb8, 0x93, 0x72, 0x6a, 0xb6, - 0x93, 0x72, 0x6a, 0xb4, 0x94, 0x72, 0x6b, 0xb6, 0x93, 0x72, 0x6c, 0xb4, - 0x94, 0x72, 0x6c, 0xb6, 0x93, 0x72, 0x6d, 0xb4, 0x94, 0x72, 0x6e, 0xb6, - 0x93, 0x72, 0x6e, 0xb4, 0x94, 0x72, 0x6f, 0xb6, 0x93, 0x72, 0x70, 0xb4, - 0x94, 0x72, 0x70, 0xb6, 0x93, 0x72, 0x71, 0xb4, 0x94, 0x72, 0x72, 0xb6, - 0x93, 0x72, 0x72, 0xb4, 0x94, 0x72, 0x73, 0xb6, 0x93, 0x72, 0x73, 0xb4, - 0x94, 0x72, 0x74, 0xb6, 0x93, 0x72, 0x75, 0xb4, 0x94, 0x72, 0x75, 0xb6, - 0x93, 0x72, 0x76, 0xb4, 0x94, 0x72, 0x76, 0xb6, 0x93, 0x72, 0x77, 0xb4, - 0x94, 0x72, 0x78, 0xb6, 0x93, 0x72, 0x78, 0xb4, 0x94, 0x72, 0x79, 0xb6, - 0x93, 0x72, 0x79, 0xb4, 0x94, 0x72, 0x7a, 0xb6, 0x93, 0x72, 0x7a, 0xb4, - 0x94, 0x72, 0x7b, 0xb6, 0x93, 0x72, 0x7c, 0xb4, 0x94, 0x72, 0x7c, 0xb6, - 0x93, 0x72, 0x7d, 0xb4, 0x94, 0x72, 0x7d, 0xb6, 0x93, 0x72, 0x7e, 0xb4, - 0x94, 0x72, 0x7e, 0xb6, 0x93, 0x72, 0x7f, 0xb4, 0x94, 0x72, 0x7f, 0xb6, - 0x93, 0x72, 0x80, 0xb4, 0x94, 0x72, 0x81, 0xb6, 0x93, 0x72, 0x81, 0xb4, - 0x94, 0x72, 0x82, 0xb6, 0x93, 0x72, 0x82, 0xb4, 0x94, 0x72, 0x83, 0xb2, - 0x94, 0x72, 0x83, 0xb4, 0x94, 0x72, 0x84, 0xb2, 0x94, 0x72, 0x84, 0xb4, - 0x94, 0x72, 0x85, 0xb2, 0x94, 0x72, 0x85, 0xb4, 0x94, 0x72, 0x86, 0xb2, - 0x94, 0x72, 0x86, 0xb4, 0x94, 0x72, 0x87, 0xb2, 0x94, 0x72, 0x87, 0xb4, - 0x94, 0x72, 0x88, 0xb2, 0x94, 0x72, 0x88, 0xb4, 0x94, 0x72, 0x89, 0xb2, - 0x94, 0x72, 0x89, 0xb4, 0x94, 0x72, 0x8a, 0xb2, 0x94, 0x72, 0x8a, 0xb4, - 0x94, 0x72, 0x8b, 0xb2, 0x94, 0x72, 0x8b, 0xb4, 0x94, 0x72, 0x8c, 0xb2, - 0x94, 0x72, 0x8c, 0xb4, 0x94, 0x72, 0x8d, 0xb2, 0x94, 0x72, 0x8d, 0xb4, - 0x94, 0x72, 0x8e, 0xb2, 0x94, 0x72, 0x8e, 0xb4, 0x94, 0x72, 0x8e, 0xb2, - 0x94, 0x72, 0x8f, 0xb4, 0x94, 0x72, 0x8f, 0xb2, 0x94, 0x72, 0x90, 0xb4, - 0x94, 0x72, 0x90, 0xb2, 0x94, 0x72, 0x91, 0xb4, 0x94, 0x72, 0x91, 0xb2, - 0x94, 0x72, 0x92, 0xb4, 0x94, 0x72, 0x92, 0xb2, 0x94, 0x72, 0x93, 0xb2, - 0x94, 0x72, 0x93, 0xb2, 0x94, 0x72, 0x94, 0xb2, 0x94, 0x72, 0x93, 0xb2, - 0x94, 0x72, 0x94, 0xb2, 0x94, 0x72, 0x96, 0xb2, 0x95, 0x72, 0x96, 0xb2, - 0x95, 0x72, 0x96, 0xb2, 0x96, 0x72, 0x96, 0xb2, 0x95, 0x72, 0x97, 0xb2, - 0x96, 0x72, 0x97, 0xb2, 0x95, 0x72, 0x98, 0xb2, 0x96, 0x72, 0x98, 0xb2, - 0x95, 0x72, 0x98, 0xb2, 0x96, 0x72, 0x99, 0xb2, 0x95, 0x72, 0x99, 0xb2, - 0x96, 0x72, 0x9a, 0xb2, 0x95, 0x72, 0x9a, 0xb2, 0x96, 0x72, 0x9a, 0xb2, - 0x95, 0x72, 0x9b, 0xae, 0x9b, 0x72, 0x9b, 0xae, 0x9b, 0x72, 0x9c, 0xae, - 0x9c, 0x72, 0x9c, 0xae, 0x9c, 0x72, 0x9d, 0xae, 0x9d, 0x72, 0x9d, 0xae, - 0x9d, 0x72, 0x9d, 0xaf, 0xa0, 0x72, 0x9e, 0xaf, 0xa0, 0x72, 0x9e, 0xaf, - 0xa0, 0x72, 0x9f, 0xaf, 0xa0, 0x72, 0x9f, 0xaf, 0xa0, 0x72, 0x9f, 0xaf, - 0xa0, 0x72, 0xa0, 0xaf, 0xa0, 0x72, 0xa0, 0xaf, 0xa0, 0x72, 0xa1, 0xaf, - 0xa1, 0x72, 0xa1, 0xaf, 0xa1, 0x72, 0xa1, 0xaf, 0xa1, 0x72, 0xa2, 0xaf, - 0xa2, 0x72, 0xa2, 0xaf, 0xa2, 0x72, 0xa3, 0xaf, 0xa4, 0x72, 0xa3, 0xaf, - 0xa5, 0x72, 0xa3, 0xaf, 0xa4, 0x72, 0xa4, 0xaf, 0xa5, 0x72, 0xa4, 0xaf, - 0xa4, 0x72, 0xa5, 0xaf, 0xa5, 0x72, 0xa5, 0xaf, 0xa5, 0x72, 0xa5, 0xaf, - 0xa5, 0x72, 0xa6, 0xaf, 0xa6, 0x72, 0xa6, 0xaf, 0xa6, 0x72, 0xa6, 0xaf, - 0xa6, 0x72, 0xa7, 0xb0, 0xa8, 0x72, 0xa7, 0xb0, 0xa9, 0x72, 0xa8, 0xb0, - 0xa8, 0x72, 0xa8, 0xb0, 0xa9, 0x72, 0xa8, 0xb0, 0xa8, 0x72, 0xa9, 0xb0, - 0xa9, 0x72, 0xa9, 0xb0, 0xa9, 0x72, 0xaa, 0xb3, 0xab, 0x72, 0xaa, 0xb2, - 0xab, 0x72, 0xaa, 0xb3, 0xab, 0x72, 0xab, 0xb2, 0xab, 0x72, 0xab, 0xb2, - 0xac, 0x72, 0xab, 0xb2, 0xab, 0x72, 0xab, 0xb2, 0xac, 0x72, 0xab, 0xb2, - 0xac, 0x72, 0xab, 0xb2, 0xac, 0x72, 0xab, 0xb2, 0xad, 0x70, 0xad, 0xb2, - 0xad, 0x6f, 0xae, 0xb2, 0xae, 0x6f, 0xae, 0xb2, 0xae, 0x6f, 0xae, 0xb2, - 0xae, 0x6f, 0xb0, 0xb2, 0xaf, 0x70, 0xb0, 0xb2, 0xaf, 0x70, 0xb0, 0xb2, - 0xaf, 0x70, 0xb0, 0xb2, 0xb0, 0x70, 0xb0, 0xb2, 0xb0, 0x70, 0xb0, 0xb2, - 0xb0, 0x70, 0xb1, 0xb2, 0xb1, 0x70, 0xb1, 0xb2, 0xb1, 0x70, 0xb2, 0xb2, - 0xb2, 0x70, 0xb2, 0xb2, 0xb2, 0x70, 0xb2, 0xb2, 0xb2, 0x70, 0xb3, 0xb2, - 0xb3, 0x70, 0xb3, 0xb2, 0xb3, 0x70, 0xb4, 0xb2, 0xb3, 0x71, 0xb4, 0xb2, - 0xb4, 0x71, 0xb4, 0xb2, 0xb4, 0x71, 0xb4, 0xb2, 0xb4, 0x71, 0xb5, 0xb2, - 0xb5, 0x71, 0xb5, 0xb2, 0xb5, 0x71, 0xb5, 0xb2, 0xb5, 0x71, 0xb6, 0xb2, - 0xb6, 0x71, 0xb6, 0xb2, 0xb6, 0x71, 0xb6, 0xb2, 0xb6, 0x71, 0xb7, 0xb2, - 0xb7, 0x71, 0xb7, 0xb2, 0xb7, 0x71, 0xb7, 0xb2, 0xb7, 0x71, 0xb8, 0xb3, - 0xb8, 0x72, 0xb8, 0xb3, 0xb8, 0x72, 0xb8, 0xb3, 0xb8, 0x72, 0xb9, 0xb3, - 0xb9, 0x72, 0xb9, 0xb3, 0xb9, 0x72, 0xb9, 0xb3, 0xb9, 0x72, 0xba, 0xb3, - 0xba, 0x72, 0xba, 0xb3, 0xba, 0x72, 0xba, 0xb3, 0xba, 0x72, 0xbb, 0xb3, - 0xbb, 0x72, 0xbb, 0xb3, 0xbb, 0x72, 0xbb, 0xb3, 0xbb, 0x72, 0xbc, 0xb3, - 0xbb, 0x72, 0xbc, 0xb4, 0xbc, 0x72, 0xbc, 0xb4, 0xbc, 0x72, 0xbd, 0xb4, - 0xbd, 0x72, 0xbd, 0xb4, 0xbd, 0x72, 0xbd, 0xb4, 0xbd, 0x72, 0xbe, 0xb4, - 0xbe, 0x72, 0xbe, 0xb4, 0xbe, 0x72, 0xbe, 0xb4, 0xbe, 0x72, 0xbf, 0xb4, - 0xbf, 0x72, 0xbf, 0xb4, 0xbe, 0x72, 0xbf, 0xb4, 0xbf, 0x72, 0xc0, 0xb4, - 0xbe, 0x72, 0xc0, 0xb4, 0xbf, 0x72, 0xc0, 0xb4, 0xc0, 0x72, 0xc1, 0xb4, - 0xc1, 0x72, 0xc1, 0xb4, 0xc1, 0x72, 0xc1, 0xb4, 0xc1, 0x72, 0xc1, 0xb4, - 0xc1, 0x72, 0xc2, 0xb4, 0xc2, 0x72, 0xc2, 0xb4, 0xc2, 0x72, 0xc2, 0xb4, - 0xc2, 0x72, 0xc3, 0xb4, 0xc2, 0x72, 0xc3, 0xb4, 0xc2, 0x72, 0xc3, 0xb4, - 0xc2, 0x72, 0xc4, 0xb5, 0xc4, 0x72, 0xc4, 0xb5, 0xc4, 0x72, 0xc4, 0xb5, - 0xc4, 0x72, 0xc5, 0xb5, 0xc5, 0x72, 0xc5, 0xb5, 0xc5, 0x72, 0xc5, 0xb5, - 0xc5, 0x72, 0xc6, 0xb5, 0xc6, 0x72, 0xc6, 0xb5, 0xc6, 0x72, 0xc6, 0xb5, - 0xc6, 0x72, 0xc6, 0xb5, 0xc6, 0x72, 0xc7, 0xb5, 0xc6, 0x72, 0xc7, 0xb5, - 0xc6, 0x72, 0xc7, 0xb6, 0xc7, 0x72, 0xc8, 0xb6, 0xc8, 0x72, 0xc8, 0xb6, - 0xc8, 0x72, 0xc8, 0xb6, 0xc8, 0x72, 0xc9, 0xb6, 0xc9, 0x72, 0xc9, 0xb6, - 0xc9, 0x72, 0xc9, 0xb6, 0xc9, 0x72, 0xc9, 0xb6, 0xc9, 0x72, 0xca, 0xb6, - 0xc9, 0x72, 0xca, 0xb6, 0xc9, 0x72, 0xca, 0xb6, 0xc9, 0x72, 0xcb, 0xb6, - 0xc9, 0x72, 0xcb, 0xb6, 0xc9, 0x72, 0xcb, 0xb6, 0xcb, 0x72, 0xcc, 0xb6, - 0xcc, 0x72, 0xcc, 0xb6, 0xcc, 0x72, 0xcc, 0xb4, 0xcf, 0x72, 0xcc, 0xb2, - 0xcf, 0x72, 0xcd, 0xb4, 0xcf, 0x72, 0xcd, 0xb2, 0xcf, 0x72, 0xcd, 0xb4, - 0xcf, 0x72, 0xce, 0xb2, 0xcf, 0x72, 0xce, 0xb4, 0xcf, 0x72, 0xce, 0xb2, - 0xcf, 0x72, 0xce, 0xb2, 0xd0, 0x72, 0xcf, 0xb2, 0xcf, 0x72, 0xcf, 0xb2, - 0xd0, 0x72, 0xcf, 0xb2, 0xcf, 0x72, 0xcf, 0xb2, 0xd0, 0x72, 0xcf, 0xb2, - 0xd0, 0x72, 0xcf, 0xb2, 0xd0, 0x72, 0xcf, 0xb2, 0xd0, 0x70, 0xcf, 0xb2, - 0xd1, 0x72, 0xcf, 0xb2, 0xd1, 0x70, 0xcf, 0xb2, 0xd1, 0x72, 0xcf, 0xb2, - 0xd2, 0x70, 0xcf, 0xb2, 0xd2, 0x72, 0xcf, 0xb2, 0xd2, 0x70, 0xcf, 0xb2, - 0xd2, 0x72, 0xcf, 0xb2, 0xd3, 0x70, 0xcf, 0xb2, 0xd3, 0x72, 0xcf, 0xb2, - 0xd3, 0x70, 0xcf, 0xb2, 0xd4, 0x72, 0xcf, 0xb2, 0xd4, 0x70, 0xcf, 0xb2, - 0xd4, 0x72, 0xcf, 0xb2, 0xd4, 0x70, 0xcf, 0xb2, 0xd5, 0x72, 0xcf, 0xb2, - 0xd5, 0x70, 0xcf, 0xb2, 0xd5, 0x72, 0xcf, 0xb2, 0xd6, 0x70, 0xcf, 0xb2, - 0xd6, 0x72, 0xcf, 0xb2, 0xd6, 0x70, 0xd0, 0xb2, 0xd6, 0x6d, 0xcf, 0xb2, - 0xd7, 0x70, 0xd0, 0xb2, 0xd7, 0x6d, 0xcf, 0xb2, 0xd7, 0x70, 0xd0, 0xb2, - 0xd7, 0x6d, 0xcf, 0xb2, 0xd8, 0x70, 0xd0, 0xb2, 0xd8, 0x6d, 0xcf, 0xb2, - 0xd8, 0x70, 0xd0, 0xb2, 0xd9, 0x6d, 0xcf, 0xb2, 0xd9, 0x70, 0xd0, 0xb2, - 0xd9, 0x6d, 0xcf, 0xb2, 0xd9, 0x70, 0xd0, 0xb2, 0xda, 0x6d, 0xcf, 0xb2, - 0xda, 0x70, 0xd0, 0xb2, 0xda, 0x6d, 0xcf, 0xb2, 0xda, 0x70, 0xd0, 0xb2, - 0xdb, 0x6d, 0xcf, 0xb2, 0xdb, 0x70, 0xd0, 0xb2, 0xdb, 0x6d, 0xcf, 0xb2, - 0xdb, 0x70, 0xd0, 0xb2, 0xdc, 0x6d, 0xcf, 0xb2, 0xdc, 0x70, 0xd0, 0xb2, - 0xdc, 0x6d, 0xcf, 0xb2, 0xdd, 0x70, 0xd0, 0xb2, 0xdd, 0x6d, 0xcf, 0xb2, - 0xdd, 0x70, 0xd0, 0xb2, 0xdd, 0x6d, 0xcf, 0xb2, 0xde, 0x70, 0xeb, 0xb2, - 0xde, 0x73, 0xeb, 0xb2, 0xde, 0x77, 0xeb, 0xb2, 0xde, 0x73, 0xeb, 0xb2, - 0xdf, 0x77, 0xeb, 0xb2, 0xdf, 0x73, 0xeb, 0xb2, 0xdf, 0x77, 0xeb, 0xb2, - 0xdf, 0x73, 0xeb, 0xb2, 0xe0, 0x77, 0xeb, 0xb2, 0xe0, 0x73, 0xeb, 0xb2, - 0xe0, 0x77, 0xeb, 0xb2, 0xe1, 0x73, 0xeb, 0xb2, 0xe1, 0x77, 0xeb, 0xb2, - 0xe1, 0x73, 0xeb, 0xb2, 0xe1, 0x77, 0xeb, 0xb2, 0xe2, 0x73, 0xeb, 0xb2, - 0xe2, 0x77, 0xeb, 0xb2, 0xe2, 0x73, 0xeb, 0xb2, 0xe2, 0x77, 0xeb, 0xb2, - 0xe3, 0x73, 0xeb, 0xb2, 0xe3, 0x77, 0xeb, 0xb2, 0xe3, 0x73, 0xeb, 0xb2, - 0xe3, 0x77, 0xeb, 0xb2, 0xe4, 0x73, 0xeb, 0xb2, 0xe4, 0x77, 0xeb, 0xb2, - 0xe4, 0x73, 0xeb, 0xb2, 0xe4, 0x77, 0xeb, 0xb2, 0xe5, 0x73, 0xeb, 0xb2, - 0xe5, 0x77, 0xeb, 0xb2, 0xe5, 0x73, 0xeb, 0xb2, 0xe5, 0x72, 0xeb, 0xb2, - 0xe6, 0x73, 0xeb, 0xb2, 0xe6, 0x72, 0xeb, 0xb2, 0xe6, 0x73, 0xeb, 0xb2, - 0xe6, 0x72, 0xeb, 0xb2, 0xe7, 0x73, 0xeb, 0xb2, 0xe7, 0x72, 0xeb, 0xb2, - 0xe7, 0x73, 0xeb, 0xb2, 0xe7, 0x72, 0xeb, 0xb2, 0xe8, 0x73, 0xeb, 0xb2, - 0xe8, 0x72, 0xeb, 0xb2, 0xe8, 0x73, 0xeb, 0xb2, 0xe8, 0x72, 0xeb, 0xb2, - 0xe9, 0x73, 0xeb, 0xb2, 0xe9, 0x72, 0xeb, 0xb2, 0xe9, 0x73, 0xeb, 0xb2, - 0xe9, 0x72, 0xeb, 0xb2, 0xea, 0x73, 0xeb, 0xb2, 0xea, 0x72, 0xeb, 0xb2, - 0xea, 0x73, 0xeb, 0xb2, 0xea, 0x72, 0xeb, 0xb2, 0xeb, 0x73, 0xeb, 0xb2, - 0xeb, 0x72, 0xec, 0xb2, 0xeb, 0x72, 0xeb, 0xb2, 0xeb, 0x72, 0xec, 0xb2, - 0xeb, 0x72, 0xec, 0xb2, 0xeb, 0x72, 0xec, 0xb2, 0xeb, 0x72, 0xec, 0xb2, - 0xeb, 0x72, 0xec, 0xb2, 0xeb, 0x72, 0xed, 0xb2, 0xeb, 0x72, 0xed, 0xb2, - 0xeb, 0x72, 0xed, 0xb2, 0xeb, 0x72, 0xed, 0xb2, 0xeb, 0x72, 0xee, 0xb2, - 0xeb, 0x72, 0xee, 0xb2, 0xeb, 0x72, 0xee, 0xb2, 0xeb, 0x72, 0xee, 0xb2, - 0xeb, 0x72, 0xef, 0xb2, 0xeb, 0x72, 0xef, 0xb2, 0xeb, 0x72, 0xef, 0xaf, - 0xeb, 0x72, 0xef, 0xb2, 0xeb, 0x72, 0xf0, 0xaf, 0xeb, 0x72, 0xf0, 0xb2, - 0xeb, 0x72, 0xf0, 0xaf, 0xeb, 0x72, 0xf0, 0xb2, 0xeb, 0x72, 0xf1, 0xaf, - 0xeb, 0x72, 0xf1, 0xb4, 0xf6, 0x72, 0xf1, 0xb2, 0xf6, 0x72, 0xf1, 0xb4, - 0xf6, 0x72, 0xf2, 0xb2, 0xf6, 0x72, 0xf2, 0xb4, 0xf6, 0x72, 0xf2, 0xb2, - 0xf6, 0x72, 0xf2, 0xb4, 0xf6, 0x72, 0xf2, 0xb2, 0xf6, 0x72, 0xf3, 0xb4, - 0xf6, 0x72, 0xf3, 0xb2, 0xf6, 0x72, 0xf3, 0xb4, 0xf6, 0x72, 0xf3, 0xb2, - 0xf6, 0x72, 0xf4, 0xb4, 0xf6, 0x72, 0xf4, 0xb2, 0xf6, 0x72, 0xf4, 0xb4, - 0xf6, 0x72, 0xf4, 0xb2, 0xf6, 0x72, 0xf5, 0xb4, 0xf6, 0x72, 0xf5, 0xb2, - 0xf6, 0x72, 0xf5, 0xb4, 0xf6, 0x72, 0xf5, 0xb2, 0xf6, 0x72, 0xf5, 0xb2, - 0xf6, 0x72, 0xf6, 0xb2, 0xf6, 0x72, 0xf6, 0xb2, 0xf6, 0x72, 0xf6, 0xb2, - 0xf6, 0x72, 0xf6, 0xb2, 0xf6, 0x72, 0xf6, 0xb2, 0xf7, 0x72, 0xf6, 0xb2, - 0xf7, 0x72, 0xf6, 0xb2, 0xf7, 0x72, 0xf6, 0xb2, 0xf7, 0x72, 0xf6, 0xb2, - 0xf8, 0x72, 0xf6, 0xb2, 0xf8, 0x72, 0xf6, 0xb2, 0xf8, 0x6f, 0xfa, 0xb2, - 0xf8, 0x72, 0xfa, 0xb2, 0xf8, 0x72, 0xfa, 0xb2, 0xf9, 0x72, 0xfa, 0xb2, - 0xf9, 0x72, 0xfa, 0xb2, 0xf9, 0x72, 0xfa, 0xb2, 0xf9, 0x72, 0xfa, 0xb2, - 0xfa, 0x72, 0xfa, 0xb2, 0xfa, 0x72, 0xfa, 0xb2, 0xfa, 0x72, 0xfa, 0xb2, - 0xfa, 0x72, 0xfa, 0xb2, 0xfa, 0x72, 0xfb, 0xb2, 0xfa, 0x72, 0xfb, 0xb2, - 0xfa, 0x72, 0xfb, 0xb2, 0xfa, 0x72, 0xfb, 0xb2, 0xfa, 0x72, 0xfc, 0xb2, - 0xfa, 0x72, 0xfc, 0xb2, 0xfa, 0x72, 0xfc, 0xb2, 0xfa, 0x72, 0xfc, 0xb2, - 0xfa, 0x72, 0xfc, 0xb2, 0xfa, 0x72, 0xfd, 0xb2, 0xfa, 0x72, 0xfd, 0xb2, - 0xfa, 0x72, 0xfd, 0xb2, 0xfa, 0x72, 0xfd, 0xb2, 0xfa, 0x72, 0xfe, 0xb2, - 0xfa, 0x72, 0xfe, 0xaf, 0xfa, 0x72, 0xfe, 0xb2, 0xfa, 0x72, 0xfe, 0xaf, - 0xfa, 0x72, 0xfe, 0xb2, 0xfa, 0x72, 0xff, 0xaf, 0xfa, 0x72, 0xff, 0xb2, - 0xfa, 0x72, 0x03, 0xbd, 0x92, 0x72, 0x0a, 0xbb, 0x92, 0x72, 0x0f, 0xbd, - 0x92, 0x72, 0x14, 0xbb, 0x92, 0x72, 0x17, 0xb9, 0x93, 0x72, 0x1b, 0xbb, - 0x92, 0x72, 0x1e, 0xb9, 0x93, 0x72, 0x20, 0xbb, 0x92, 0x72, 0x23, 0xb9, - 0x93, 0x72, 0x25, 0xbb, 0x92, 0x72, 0x27, 0xb9, 0x93, 0x72, 0x29, 0xbb, - 0x92, 0x72, 0x2b, 0xb9, 0x93, 0x72, 0x2d, 0xbb, 0x92, 0x72, 0x2f, 0xb9, - 0x93, 0x72, 0x31, 0xbb, 0x92, 0x72, 0x32, 0xb9, 0x93, 0x72, 0x34, 0xbb, - 0x92, 0x72, 0x35, 0xb9, 0x93, 0x72, 0x37, 0xbb, 0x92, 0x72, 0x38, 0xb9, - 0x93, 0x72, 0x3a, 0xbb, 0x92, 0x72, 0x3b, 0xb9, 0x93, 0x72, 0x3c, 0xbb, - 0x92, 0x72, 0x3e, 0xb9, 0x93, 0x72, 0x3f, 0xbb, 0x92, 0x72, 0x40, 0xb9, - 0x93, 0x72, 0x42, 0xbb, 0x92, 0x72, 0x43, 0xb9, 0x93, 0x72, 0x44, 0xb6, - 0x93, 0x72, 0x45, 0xb9, 0x93, 0x72, 0x46, 0xb6, 0x93, 0x72, 0x47, 0xb9, - 0x93, 0x72, 0x48, 0xb6, 0x93, 0x72, 0x49, 0xb9, 0x93, 0x72, 0x4a, 0xb6, - 0x93, 0x72, 0x4b, 0xb9, 0x93, 0x72, 0x4c, 0xb6, 0x93, 0x72, 0x4d, 0xb9, - 0x93, 0x72, 0x4e, 0xb6, 0x93, 0x72, 0x4f, 0xb9, 0x93, 0x72, 0x50, 0xb6, - 0x93, 0x72, 0x51, 0xb9, 0x93, 0x72, 0x52, 0xb6, 0x93, 0x72, 0x53, 0xb9, - 0x93, 0x72, 0x54, 0xb6, 0x93, 0x72, 0x55, 0xb9, 0x93, 0x72, 0x56, 0xb6, - 0x93, 0x72, 0x57, 0xb9, 0x93, 0x72, 0x58, 0xb6, 0x93, 0x72, 0x58, 0xb9, - 0x93, 0x72, 0x59, 0xb6, 0x93, 0x72, 0x5a, 0xb9, 0x93, 0x72, 0x5b, 0xb6, - 0x93, 0x72, 0x5c, 0xb9, 0x93, 0x72, 0x5d, 0xb6, 0x93, 0x72, 0x5d, 0xb9, - 0x93, 0x72, 0x5e, 0xb6, 0x93, 0x72, 0x5f, 0xb9, 0x93, 0x72, 0x60, 0xb6, - 0x93, 0x72, 0x60, 0xb9, 0x93, 0x72, 0x61, 0xb6, 0x93, 0x72, 0x62, 0xb9, - 0x93, 0x72, 0x63, 0xb6, 0x93, 0x72, 0x63, 0xb9, 0x93, 0x72, 0x64, 0xb6, - 0x93, 0x72, 0x65, 0xb9, 0x93, 0x72, 0x66, 0xb6, 0x93, 0x72, 0x66, 0xb9, - 0x93, 0x72, 0x67, 0xb6, 0x93, 0x72, 0x68, 0xb9, 0x93, 0x72, 0x68, 0xb6, - 0x93, 0x72, 0x69, 0xb9, 0x93, 0x72, 0x6a, 0xb6, 0x93, 0x72, 0x6a, 0xb4, - 0x94, 0x72, 0x6b, 0xb6, 0x93, 0x72, 0x6c, 0xb4, 0x94, 0x72, 0x6c, 0xb6, - 0x93, 0x72, 0x6d, 0xb4, 0x94, 0x72, 0x6e, 0xb6, 0x93, 0x72, 0x6e, 0xb4, - 0x94, 0x72, 0x6f, 0xb6, 0x93, 0x72, 0x70, 0xb4, 0x94, 0x72, 0x70, 0xb6, - 0x93, 0x72, 0x71, 0xb4, 0x94, 0x72, 0x72, 0xb6, 0x93, 0x72, 0x72, 0xb4, - 0x94, 0x72, 0x73, 0xb6, 0x93, 0x72, 0x73, 0xb4, 0x94, 0x72, 0x74, 0xb6, - 0x93, 0x72, 0x75, 0xb4, 0x94, 0x72, 0x75, 0xb6, 0x93, 0x72, 0x76, 0xb4, - 0x94, 0x72, 0x76, 0xb6, 0x93, 0x72, 0x77, 0xb4, 0x94, 0x72, 0x78, 0xb6, - 0x93, 0x72, 0x78, 0xb4, 0x94, 0x72, 0x79, 0xb6, 0x93, 0x72, 0x79, 0xb4, - 0x94, 0x72, 0x7a, 0xb6, 0x93, 0x72, 0x7a, 0xb4, 0x94, 0x72, 0x7b, 0xb6, - 0x93, 0x72, 0x7c, 0xb4, 0x94, 0x72, 0x7c, 0xb6, 0x93, 0x72, 0x7d, 0xb4, - 0x94, 0x72, 0x7d, 0xb6, 0x93, 0x72, 0x7e, 0xb4, 0x94, 0x72, 0x7e, 0xb6, - 0x93, 0x72, 0x7f, 0xb4, 0x94, 0x72, 0x7f, 0xb6, 0x93, 0x72, 0x80, 0xb4, - 0x94, 0x72, 0x81, 0xb6, 0x93, 0x72, 0x81, 0xb4, 0x94, 0x72, 0x82, 0xb6, - 0x93, 0x72, 0x82, 0xb4, 0x94, 0x72, 0x83, 0xb6, 0x93, 0x72, 0x83, 0xb4, - 0x94, 0x72, 0x84, 0xb6, 0x93, 0x72, 0x84, 0xb4, 0x94, 0x72, 0x85, 0xb6, - 0x93, 0x72, 0x85, 0xb4, 0x94, 0x72, 0x86, 0xb6, 0x93, 0x72, 0x86, 0xb4, - 0x94, 0x72, 0x87, 0xb6, 0x93, 0x72, 0x87, 0xb4, 0x94, 0x72, 0x88, 0xb6, - 0x93, 0x72, 0x88, 0xb4, 0x94, 0x72, 0x89, 0xb3, 0x94, 0x72, 0x89, 0xb4, - 0x94, 0x72, 0x8a, 0xb3, 0x94, 0x72, 0x8a, 0xb4, 0x94, 0x72, 0x8b, 0xb3, - 0x94, 0x72, 0x8b, 0xb4, 0x94, 0x72, 0x8c, 0xb3, 0x94, 0x72, 0x8c, 0xb4, - 0x94, 0x72, 0x8d, 0xb3, 0x94, 0x72, 0x8d, 0xb4, 0x94, 0x72, 0x8e, 0xb3, - 0x94, 0x72, 0x8e, 0xb4, 0x94, 0x72, 0x8e, 0xb3, 0x94, 0x72, 0x8f, 0xb4, - 0x94, 0x72, 0x8f, 0xb3, 0x94, 0x72, 0x90, 0xb4, 0x94, 0x72, 0x90, 0xb3, - 0x94, 0x72, 0x91, 0xb4, 0x94, 0x72, 0x91, 0xb3, 0x94, 0x72, 0x92, 0xb4, - 0x94, 0x72, 0x92, 0xb3, 0x94, 0x72, 0x93, 0xb3, 0x94, 0x72, 0x93, 0xb3, - 0x94, 0x72, 0x94, 0xb3, 0x94, 0x72, 0x93, 0xb3, 0x94, 0x72, 0x94, 0xb3, - 0x94, 0x72, 0x96, 0xb3, 0x95, 0x72, 0x96, 0xb3, 0x95, 0x72, 0x96, 0xb3, - 0x95, 0x72, 0x96, 0xb3, 0x95, 0x72, 0x97, 0xb3, 0x95, 0x72, 0x97, 0xb3, - 0x95, 0x72, 0x98, 0xb1, 0x96, 0x72, 0x98, 0xb3, 0x95, 0x72, 0x98, 0xb1, - 0x96, 0x72, 0x99, 0xb3, 0x95, 0x72, 0x99, 0xb1, 0x96, 0x72, 0x9a, 0xb3, - 0x95, 0x72, 0x9a, 0xb1, 0x96, 0x72, 0x9a, 0xb3, 0x95, 0x72, 0x9b, 0xb1, - 0x96, 0x72, 0x9b, 0xae, 0x9e, 0x72, 0x9c, 0xae, 0x9d, 0x72, 0x9c, 0xae, - 0x9e, 0x72, 0x9d, 0xae, 0x9d, 0x72, 0x9d, 0xae, 0x9e, 0x72, 0x9d, 0xae, - 0x9d, 0x72, 0x9e, 0xae, 0x9e, 0x72, 0x9e, 0xae, 0x9e, 0x72, 0x9f, 0xae, - 0x9f, 0x72, 0x9f, 0xae, 0x9f, 0x72, 0x9f, 0xaf, 0xa2, 0x72, 0xa0, 0xaf, - 0xa2, 0x72, 0xa0, 0xaf, 0xa2, 0x72, 0xa1, 0xaf, 0xa2, 0x72, 0xa1, 0xaf, - 0xa2, 0x72, 0xa1, 0xaf, 0xa2, 0x72, 0xa2, 0xaf, 0xa2, 0x72, 0xa2, 0xaf, - 0xa2, 0x72, 0xa3, 0xaf, 0xa3, 0x72, 0xa3, 0xaf, 0xa3, 0x72, 0xa3, 0xaf, - 0xa3, 0x72, 0xa4, 0xaf, 0xa4, 0x72, 0xa4, 0xaf, 0xa4, 0x72, 0xa5, 0xb0, - 0xa6, 0x72, 0xa5, 0xb0, 0xa6, 0x72, 0xa5, 0xb0, 0xa6, 0x72, 0xa6, 0xb0, - 0xa6, 0x72, 0xa6, 0xb0, 0xa6, 0x72, 0xa6, 0xb0, 0xa6, 0x72, 0xa7, 0xb0, - 0xa7, 0x72, 0xa7, 0xb0, 0xa7, 0x72, 0xa8, 0xb0, 0xa8, 0x72, 0xa8, 0xb0, - 0xa8, 0x72, 0xa8, 0xb0, 0xa8, 0x72, 0xa9, 0xb3, 0xab, 0x72, 0xa9, 0xb3, - 0xab, 0x72, 0xaa, 0xb3, 0xab, 0x72, 0xaa, 0xb3, 0xab, 0x72, 0xaa, 0xb3, - 0xab, 0x72, 0xab, 0xb3, 0xab, 0x72, 0xab, 0xb3, 0xac, 0x72, 0xab, 0xb3, - 0xab, 0x72, 0xab, 0xb3, 0xac, 0x72, 0xab, 0xb3, 0xac, 0x72, 0xab, 0xb3, - 0xac, 0x72, 0xab, 0xb3, 0xad, 0x72, 0xab, 0xb3, 0xad, 0x72, 0xae, 0xb3, - 0xae, 0x6f, 0xae, 0xb3, 0xae, 0x6f, 0xae, 0xb3, 0xae, 0x6f, 0xaf, 0xb3, - 0xaf, 0x6f, 0xaf, 0xb3, 0xaf, 0x6f, 0xaf, 0xb3, 0xaf, 0x6f, 0xb0, 0xb3, - 0xb0, 0x6f, 0xb0, 0xb3, 0xb0, 0x6f, 0xb2, 0xb3, 0xb0, 0x70, 0xb2, 0xb3, - 0xb1, 0x70, 0xb2, 0xb3, 0xb1, 0x70, 0xb2, 0xb3, 0xb2, 0x70, 0xb2, 0xb3, - 0xb2, 0x70, 0xb2, 0xb3, 0xb2, 0x70, 0xb3, 0xb3, 0xb3, 0x70, 0xb3, 0xb3, - 0xb3, 0x70, 0xb3, 0xb3, 0xb3, 0x70, 0xb4, 0xb3, 0xb4, 0x70, 0xb4, 0xb3, - 0xb4, 0x70, 0xb4, 0xb3, 0xb4, 0x70, 0xb5, 0xb3, 0xb5, 0x70, 0xb6, 0xb3, - 0xb5, 0x71, 0xb6, 0xb3, 0xb5, 0x71, 0xb6, 0xb3, 0xb6, 0x71, 0xb6, 0xb3, - 0xb6, 0x71, 0xb6, 0xb3, 0xb6, 0x71, 0xb7, 0xb3, 0xb7, 0x71, 0xb7, 0xb3, - 0xb7, 0x71, 0xb7, 0xb3, 0xb7, 0x71, 0xb8, 0xb3, 0xb8, 0x71, 0xb8, 0xb3, - 0xb8, 0x71, 0xb8, 0xb3, 0xb8, 0x71, 0xb9, 0xb3, 0xb9, 0x71, 0xb9, 0xb3, - 0xb9, 0x71, 0xb9, 0xb3, 0xb9, 0x71, 0xba, 0xb3, 0xba, 0x72, 0xba, 0xb3, - 0xba, 0x72, 0xba, 0xb3, 0xba, 0x72, 0xbb, 0xb3, 0xbb, 0x72, 0xbb, 0xb3, - 0xbb, 0x72, 0xbb, 0xb3, 0xbb, 0x72, 0xbc, 0xb3, 0xbc, 0x72, 0xbc, 0xb3, - 0xbc, 0x72, 0xbc, 0xb3, 0xbc, 0x72, 0xbd, 0xb3, 0xbd, 0x72, 0xbd, 0xb3, - 0xbd, 0x72, 0xbd, 0xb3, 0xbd, 0x72, 0xbe, 0xb3, 0xbd, 0x72, 0xbe, 0xb4, - 0xbe, 0x72, 0xbe, 0xb4, 0xbe, 0x72, 0xbf, 0xb4, 0xbf, 0x72, 0xbf, 0xb4, - 0xbf, 0x72, 0xbf, 0xb4, 0xbf, 0x72, 0xc0, 0xb4, 0xc0, 0x72, 0xc0, 0xb4, - 0xc0, 0x72, 0xc0, 0xb4, 0xc0, 0x72, 0xc1, 0xb4, 0xc1, 0x72, 0xc1, 0xb4, - 0xc0, 0x72, 0xc1, 0xb4, 0xc1, 0x72, 0xc1, 0xb4, 0xc0, 0x72, 0xc2, 0xb4, - 0xc1, 0x72, 0xc2, 0xb5, 0xc2, 0x72, 0xc2, 0xb5, 0xc2, 0x72, 0xc3, 0xb5, - 0xc3, 0x72, 0xc3, 0xb5, 0xc3, 0x72, 0xc3, 0xb5, 0xc3, 0x72, 0xc4, 0xb5, - 0xc4, 0x72, 0xc4, 0xb5, 0xc4, 0x72, 0xc4, 0xb5, 0xc4, 0x72, 0xc5, 0xb5, - 0xc4, 0x72, 0xc5, 0xb5, 0xc4, 0x72, 0xc5, 0xb5, 0xc4, 0x72, 0xc6, 0xb5, - 0xc6, 0x72, 0xc6, 0xb5, 0xc6, 0x72, 0xc6, 0xb5, 0xc6, 0x72, 0xc6, 0xb5, - 0xc6, 0x72, 0xc7, 0xb5, 0xc7, 0x72, 0xc7, 0xb5, 0xc7, 0x72, 0xc7, 0xb5, - 0xc7, 0x72, 0xc8, 0xb5, 0xc7, 0x72, 0xc8, 0xb5, 0xc7, 0x72, 0xc8, 0xb5, - 0xc7, 0x72, 0xc9, 0xb5, 0xc7, 0x72, 0xc9, 0xb6, 0xc9, 0x72, 0xc9, 0xb6, - 0xc9, 0x72, 0xc9, 0xb6, 0xc9, 0x72, 0xca, 0xb6, 0xca, 0x72, 0xca, 0xb6, - 0xca, 0x72, 0xca, 0xb6, 0xca, 0x72, 0xcb, 0xb6, 0xcb, 0x72, 0xcb, 0xb6, - 0xca, 0x72, 0xcb, 0xb6, 0xcb, 0x72, 0xcc, 0xb6, 0xca, 0x72, 0xcc, 0xb6, - 0xcb, 0x72, 0xcc, 0xb3, 0xcf, 0x72, 0xcc, 0xb3, 0xcf, 0x72, 0xcd, 0xb3, - 0xcf, 0x72, 0xcd, 0xb3, 0xcf, 0x72, 0xcd, 0xb3, 0xcf, 0x72, 0xce, 0xb3, - 0xcf, 0x72, 0xce, 0xb3, 0xcf, 0x72, 0xce, 0xb3, 0xcf, 0x72, 0xce, 0xb3, - 0xcf, 0x72, 0xcf, 0xb3, 0xcf, 0x72, 0xcf, 0xb3, 0xcf, 0x72, 0xcf, 0xb3, - 0xcf, 0x72, 0xcf, 0xb3, 0xd0, 0x72, 0xcf, 0xb3, 0xd0, 0x72, 0xcf, 0xb3, - 0xd0, 0x72, 0xcf, 0xb3, 0xd0, 0x72, 0xcf, 0xb3, 0xd1, 0x72, 0xcf, 0xb3, - 0xd1, 0x72, 0xcf, 0xb3, 0xd1, 0x72, 0xcf, 0xb3, 0xd2, 0x6f, 0xcf, 0xb3, - 0xd2, 0x72, 0xcf, 0xb3, 0xd2, 0x6f, 0xcf, 0xb3, 0xd2, 0x72, 0xcf, 0xb3, - 0xd3, 0x6f, 0xcf, 0xb3, 0xd3, 0x72, 0xcf, 0xb3, 0xd3, 0x6f, 0xcf, 0xb3, - 0xd4, 0x72, 0xcf, 0xb3, 0xd4, 0x6f, 0xcf, 0xb3, 0xd4, 0x72, 0xcf, 0xb3, - 0xd4, 0x6f, 0xcf, 0xb3, 0xd5, 0x72, 0xcf, 0xb3, 0xd5, 0x6f, 0xcf, 0xb3, - 0xd5, 0x72, 0xcf, 0xb3, 0xd6, 0x6f, 0xcf, 0xb3, 0xd6, 0x72, 0xcf, 0xb3, - 0xd6, 0x6f, 0xcf, 0xb3, 0xd6, 0x72, 0xcf, 0xb3, 0xd7, 0x6f, 0xcf, 0xb3, - 0xd7, 0x72, 0xcf, 0xb3, 0xd7, 0x6f, 0xcf, 0xb3, 0xd7, 0x72, 0xcf, 0xb3, - 0xd8, 0x6f, 0xcf, 0xb3, 0xd8, 0x72, 0xcf, 0xb3, 0xd8, 0x6f, 0xcf, 0xb3, - 0xd9, 0x72, 0xcf, 0xb3, 0xd9, 0x6f, 0xcf, 0xb3, 0xd9, 0x72, 0xcf, 0xb3, - 0xd9, 0x6f, 0xd0, 0xb3, 0xda, 0x6c, 0xcf, 0xb3, 0xda, 0x6f, 0xd0, 0xb3, - 0xda, 0x6c, 0xcf, 0xb3, 0xda, 0x6f, 0xd0, 0xb3, 0xdb, 0x6c, 0xcf, 0xb3, - 0xdb, 0x6f, 0xd0, 0xb3, 0xdb, 0x6c, 0xcf, 0xb3, 0xdb, 0x6f, 0xd0, 0xb3, - 0xdc, 0x6c, 0xcf, 0xb3, 0xdc, 0x6f, 0xd0, 0xb3, 0xdc, 0x6c, 0xcf, 0xb3, - 0xdd, 0x6f, 0xd0, 0xb3, 0xdd, 0x6c, 0xcf, 0xb3, 0xdd, 0x6f, 0xd0, 0xb3, - 0xdd, 0x6c, 0xcf, 0xb3, 0xde, 0x6f, 0xeb, 0xb3, 0xde, 0x72, 0xeb, 0xb3, - 0xde, 0x76, 0xeb, 0xb3, 0xde, 0x72, 0xeb, 0xb3, 0xdf, 0x76, 0xeb, 0xb3, - 0xdf, 0x72, 0xeb, 0xb3, 0xdf, 0x76, 0xeb, 0xb3, 0xdf, 0x72, 0xeb, 0xb3, - 0xe0, 0x76, 0xeb, 0xb3, 0xe0, 0x72, 0xeb, 0xb3, 0xe0, 0x76, 0xeb, 0xb3, - 0xe1, 0x72, 0xeb, 0xb3, 0xe1, 0x76, 0xeb, 0xb3, 0xe1, 0x72, 0xeb, 0xb3, - 0xe1, 0x76, 0xeb, 0xb3, 0xe2, 0x72, 0xeb, 0xb3, 0xe2, 0x76, 0xeb, 0xb3, - 0xe2, 0x72, 0xeb, 0xb3, 0xe2, 0x76, 0xeb, 0xb3, 0xe3, 0x72, 0xeb, 0xb3, - 0xe3, 0x76, 0xeb, 0xb3, 0xe3, 0x72, 0xeb, 0xb3, 0xe3, 0x76, 0xeb, 0xb3, - 0xe4, 0x72, 0xeb, 0xb3, 0xe4, 0x76, 0xeb, 0xb3, 0xe4, 0x72, 0xeb, 0xb3, - 0xe4, 0x76, 0xeb, 0xb3, 0xe5, 0x72, 0xeb, 0xb3, 0xe5, 0x76, 0xeb, 0xb3, - 0xe5, 0x72, 0xeb, 0xb3, 0xe5, 0x76, 0xeb, 0xb3, 0xe6, 0x72, 0xeb, 0xb3, - 0xe6, 0x76, 0xeb, 0xb3, 0xe6, 0x72, 0xeb, 0xb3, 0xe6, 0x76, 0xeb, 0xb3, - 0xe7, 0x72, 0xeb, 0xb3, 0xe7, 0x76, 0xeb, 0xb3, 0xe7, 0x72, 0xeb, 0xb3, - 0xe7, 0x72, 0xeb, 0xb3, 0xe8, 0x72, 0xeb, 0xb3, 0xe8, 0x72, 0xeb, 0xb3, - 0xe8, 0x72, 0xeb, 0xb3, 0xe8, 0x72, 0xeb, 0xb3, 0xe9, 0x72, 0xeb, 0xb3, - 0xe9, 0x72, 0xeb, 0xb3, 0xe9, 0x72, 0xeb, 0xb3, 0xe9, 0x72, 0xeb, 0xb3, - 0xea, 0x72, 0xeb, 0xb3, 0xea, 0x72, 0xeb, 0xb3, 0xea, 0x72, 0xeb, 0xb3, - 0xea, 0x72, 0xeb, 0xb3, 0xeb, 0x72, 0xeb, 0xb3, 0xeb, 0x72, 0xeb, 0xb2, - 0xeb, 0x72, 0xeb, 0xb3, 0xeb, 0x72, 0xec, 0xb2, 0xeb, 0x72, 0xec, 0xb3, - 0xeb, 0x72, 0xec, 0xb2, 0xeb, 0x72, 0xec, 0xb3, 0xeb, 0x72, 0xec, 0xb2, - 0xeb, 0x72, 0xed, 0xb3, 0xeb, 0x72, 0xed, 0xb2, 0xeb, 0x72, 0xed, 0xb3, - 0xeb, 0x72, 0xed, 0xb2, 0xeb, 0x72, 0xee, 0xb3, 0xeb, 0x72, 0xee, 0xb2, - 0xeb, 0x72, 0xee, 0xb3, 0xeb, 0x72, 0xee, 0xb2, 0xeb, 0x72, 0xef, 0xb3, - 0xeb, 0x72, 0xef, 0xb2, 0xeb, 0x72, 0xef, 0xb0, 0xeb, 0x72, 0xef, 0xb2, - 0xeb, 0x72, 0xf0, 0xb0, 0xeb, 0x72, 0xf0, 0xb2, 0xeb, 0x72, 0xf0, 0xb0, - 0xeb, 0x72, 0xf0, 0xb2, 0xeb, 0x72, 0xf1, 0xb0, 0xeb, 0x72, 0xf1, 0xb4, - 0xf6, 0x72, 0xf1, 0xb3, 0xf6, 0x72, 0xf1, 0xb4, 0xf6, 0x72, 0xf2, 0xb3, - 0xf6, 0x72, 0xf2, 0xb4, 0xf6, 0x72, 0xf2, 0xb3, 0xf6, 0x72, 0xf2, 0xb4, - 0xf6, 0x72, 0xf2, 0xb3, 0xf6, 0x72, 0xf3, 0xb4, 0xf6, 0x72, 0xf3, 0xb3, - 0xf6, 0x72, 0xf3, 0xb4, 0xf6, 0x72, 0xf3, 0xb3, 0xf6, 0x72, 0xf4, 0xb4, - 0xf6, 0x72, 0xf4, 0xb3, 0xf6, 0x72, 0xf4, 0xb4, 0xf6, 0x72, 0xf4, 0xb3, - 0xf6, 0x72, 0xf5, 0xb4, 0xf6, 0x72, 0xf5, 0xb3, 0xf6, 0x72, 0xf5, 0xb4, - 0xf6, 0x72, 0xf5, 0xb3, 0xf6, 0x72, 0xf5, 0xb3, 0xf6, 0x72, 0xf6, 0xb3, - 0xf6, 0x72, 0xf6, 0xb3, 0xf6, 0x72, 0xf6, 0xb3, 0xf6, 0x72, 0xf6, 0xb3, - 0xf6, 0x72, 0xf6, 0xb3, 0xf7, 0x72, 0xf6, 0xb3, 0xf7, 0x72, 0xf6, 0xb3, - 0xf7, 0x72, 0xf6, 0xb3, 0xf7, 0x72, 0xf6, 0xb3, 0xf8, 0x72, 0xf6, 0xb3, - 0xf8, 0x72, 0xf6, 0xb3, 0xf8, 0x6f, 0xfa, 0xb3, 0xf8, 0x72, 0xfa, 0xb3, - 0xf8, 0x72, 0xfa, 0xb3, 0xf9, 0x72, 0xfa, 0xb3, 0xf9, 0x72, 0xfa, 0xb3, - 0xf9, 0x72, 0xfa, 0xb3, 0xf9, 0x72, 0xfa, 0xb3, 0xfa, 0x72, 0xfa, 0xb3, - 0xfa, 0x72, 0xfa, 0xb2, 0xfa, 0x72, 0xfa, 0xb3, 0xfa, 0x72, 0xfa, 0xb2, - 0xfa, 0x72, 0xfb, 0xb3, 0xfa, 0x72, 0xfb, 0xb2, 0xfa, 0x72, 0xfb, 0xb3, - 0xfa, 0x72, 0xfb, 0xb2, 0xfa, 0x72, 0xfc, 0xb3, 0xfa, 0x72, 0xfc, 0xb2, - 0xfa, 0x72, 0xfc, 0xb3, 0xfa, 0x72, 0xfc, 0xb2, 0xfa, 0x72, 0xfc, 0xb3, - 0xfa, 0x72, 0xfd, 0xb2, 0xfa, 0x72, 0xfd, 0xb3, 0xfa, 0x72, 0xfd, 0xb2, - 0xfa, 0x72, 0xfd, 0xb3, 0xfa, 0x72, 0xfe, 0xb2, 0xfa, 0x72, 0xfe, 0xb0, - 0xfa, 0x72, 0xfe, 0xb2, 0xfa, 0x72, 0xfe, 0xb0, 0xfa, 0x72, 0xfe, 0xb2, - 0xfa, 0x72, 0xff, 0xb0, 0xfa, 0x72, 0xff, 0xb2, 0xfa, 0x72, 0x03, 0xb8, - 0x93, 0x73, 0x0a, 0xba, 0x92, 0x73, 0x0f, 0xb8, 0x93, 0x73, 0x14, 0xba, - 0x92, 0x73, 0x17, 0xb8, 0x93, 0x73, 0x1b, 0xba, 0x92, 0x73, 0x1e, 0xb8, - 0x93, 0x73, 0x20, 0xba, 0x92, 0x73, 0x23, 0xb8, 0x93, 0x73, 0x25, 0xba, - 0x92, 0x73, 0x27, 0xb8, 0x93, 0x73, 0x29, 0xba, 0x92, 0x73, 0x2b, 0xb8, - 0x93, 0x73, 0x2d, 0xba, 0x92, 0x73, 0x2f, 0xb8, 0x93, 0x73, 0x31, 0xba, - 0x92, 0x73, 0x32, 0xb8, 0x93, 0x73, 0x34, 0xba, 0x92, 0x73, 0x35, 0xb8, - 0x93, 0x73, 0x37, 0xba, 0x92, 0x73, 0x38, 0xb8, 0x93, 0x73, 0x3a, 0xba, - 0x92, 0x73, 0x3b, 0xb8, 0x93, 0x73, 0x3c, 0xba, 0x92, 0x73, 0x3e, 0xb8, - 0x93, 0x73, 0x3f, 0xba, 0x92, 0x73, 0x40, 0xb8, 0x93, 0x73, 0x42, 0xba, - 0x92, 0x73, 0x43, 0xb8, 0x93, 0x73, 0x44, 0xba, 0x92, 0x73, 0x45, 0xb8, - 0x93, 0x73, 0x46, 0xba, 0x92, 0x73, 0x47, 0xb8, 0x93, 0x73, 0x48, 0xba, - 0x92, 0x73, 0x49, 0xb8, 0x93, 0x73, 0x4a, 0xba, 0x92, 0x73, 0x4b, 0xb8, - 0x93, 0x73, 0x4c, 0xba, 0x92, 0x73, 0x4d, 0xb8, 0x93, 0x73, 0x4e, 0xba, - 0x92, 0x73, 0x4f, 0xb8, 0x93, 0x73, 0x50, 0xba, 0x92, 0x73, 0x51, 0xb8, - 0x93, 0x73, 0x52, 0xba, 0x92, 0x73, 0x53, 0xb8, 0x93, 0x73, 0x54, 0xba, - 0x92, 0x73, 0x55, 0xb8, 0x93, 0x73, 0x56, 0xba, 0x92, 0x73, 0x57, 0xb8, - 0x93, 0x73, 0x58, 0xba, 0x92, 0x73, 0x58, 0xb8, 0x93, 0x73, 0x59, 0xba, - 0x92, 0x73, 0x5a, 0xb8, 0x93, 0x73, 0x5b, 0xb6, 0x93, 0x73, 0x5c, 0xb8, - 0x93, 0x73, 0x5d, 0xb6, 0x93, 0x73, 0x5d, 0xb8, 0x93, 0x73, 0x5e, 0xb6, - 0x93, 0x73, 0x5f, 0xb8, 0x93, 0x73, 0x60, 0xb6, 0x93, 0x73, 0x60, 0xb8, - 0x93, 0x73, 0x61, 0xb6, 0x93, 0x73, 0x62, 0xb8, 0x93, 0x73, 0x63, 0xb6, - 0x93, 0x73, 0x63, 0xb8, 0x93, 0x73, 0x64, 0xb6, 0x93, 0x73, 0x65, 0xb8, - 0x93, 0x73, 0x66, 0xb6, 0x93, 0x73, 0x66, 0xb8, 0x93, 0x73, 0x67, 0xb6, - 0x93, 0x73, 0x68, 0xb8, 0x93, 0x73, 0x68, 0xb6, 0x93, 0x73, 0x69, 0xb8, - 0x93, 0x73, 0x6a, 0xb6, 0x93, 0x73, 0x6a, 0xb8, 0x93, 0x73, 0x6b, 0xb6, - 0x93, 0x73, 0x6c, 0xb8, 0x93, 0x73, 0x6c, 0xb6, 0x93, 0x73, 0x6d, 0xb8, - 0x93, 0x73, 0x6e, 0xb6, 0x93, 0x73, 0x6e, 0xb8, 0x93, 0x73, 0x6f, 0xb6, - 0x93, 0x73, 0x70, 0xb8, 0x93, 0x73, 0x70, 0xb6, 0x93, 0x73, 0x71, 0xb8, - 0x93, 0x73, 0x72, 0xb6, 0x93, 0x73, 0x72, 0xb4, 0x94, 0x73, 0x73, 0xb6, - 0x93, 0x73, 0x73, 0xb4, 0x94, 0x73, 0x74, 0xb6, 0x93, 0x73, 0x75, 0xb4, - 0x94, 0x73, 0x75, 0xb6, 0x93, 0x73, 0x76, 0xb4, 0x94, 0x73, 0x76, 0xb6, - 0x93, 0x73, 0x77, 0xb4, 0x94, 0x73, 0x78, 0xb6, 0x93, 0x73, 0x78, 0xb4, - 0x94, 0x73, 0x79, 0xb6, 0x93, 0x73, 0x79, 0xb4, 0x94, 0x73, 0x7a, 0xb6, - 0x93, 0x73, 0x7a, 0xb4, 0x94, 0x73, 0x7b, 0xb6, 0x93, 0x73, 0x7c, 0xb4, - 0x94, 0x73, 0x7c, 0xb6, 0x93, 0x73, 0x7d, 0xb4, 0x94, 0x73, 0x7d, 0xb6, - 0x93, 0x73, 0x7e, 0xb4, 0x94, 0x73, 0x7e, 0xb6, 0x93, 0x73, 0x7f, 0xb4, - 0x94, 0x73, 0x7f, 0xb6, 0x93, 0x73, 0x80, 0xb4, 0x94, 0x73, 0x81, 0xb6, - 0x93, 0x73, 0x81, 0xb4, 0x94, 0x73, 0x82, 0xb6, 0x93, 0x73, 0x82, 0xb4, - 0x94, 0x73, 0x83, 0xb6, 0x93, 0x73, 0x83, 0xb4, 0x94, 0x73, 0x84, 0xb6, - 0x93, 0x73, 0x84, 0xb4, 0x94, 0x73, 0x85, 0xb6, 0x93, 0x73, 0x85, 0xb4, - 0x94, 0x73, 0x86, 0xb6, 0x93, 0x73, 0x86, 0xb4, 0x94, 0x73, 0x87, 0xb6, - 0x93, 0x73, 0x87, 0xb4, 0x94, 0x73, 0x88, 0xb6, 0x93, 0x73, 0x88, 0xb4, - 0x94, 0x73, 0x89, 0xb3, 0x94, 0x73, 0x89, 0xb4, 0x94, 0x73, 0x8a, 0xb3, - 0x94, 0x73, 0x8a, 0xb4, 0x94, 0x73, 0x8b, 0xb3, 0x94, 0x73, 0x8b, 0xb4, - 0x94, 0x73, 0x8c, 0xb3, 0x94, 0x73, 0x8c, 0xb4, 0x94, 0x73, 0x8d, 0xb3, - 0x94, 0x73, 0x8d, 0xb4, 0x94, 0x73, 0x8e, 0xb3, 0x94, 0x73, 0x8e, 0xb4, - 0x94, 0x73, 0x8e, 0xb3, 0x94, 0x73, 0x8f, 0xb4, 0x94, 0x73, 0x8f, 0xb3, - 0x94, 0x73, 0x90, 0xb4, 0x94, 0x73, 0x90, 0xb3, 0x94, 0x73, 0x91, 0xb4, - 0x94, 0x73, 0x91, 0xb3, 0x94, 0x73, 0x92, 0xb4, 0x94, 0x73, 0x92, 0xb3, - 0x94, 0x73, 0x93, 0xb4, 0x94, 0x73, 0x93, 0xb3, 0x94, 0x73, 0x94, 0xb4, - 0x94, 0x73, 0x93, 0xb3, 0x94, 0x73, 0x94, 0xb3, 0x94, 0x73, 0x96, 0xb3, - 0x95, 0x73, 0x96, 0xb3, 0x95, 0x73, 0x96, 0xb3, 0x95, 0x73, 0x96, 0xb3, - 0x95, 0x73, 0x97, 0xb3, 0x95, 0x73, 0x97, 0xb3, 0x95, 0x73, 0x98, 0xb2, - 0x96, 0x73, 0x98, 0xb3, 0x95, 0x73, 0x98, 0xb2, 0x96, 0x73, 0x99, 0xb3, - 0x95, 0x73, 0x99, 0xb2, 0x96, 0x73, 0x9a, 0xb3, 0x95, 0x73, 0x9a, 0xb2, - 0x96, 0x73, 0x9a, 0xb3, 0x95, 0x73, 0x9b, 0xb2, 0x96, 0x73, 0x9b, 0xae, - 0x9b, 0x73, 0x9c, 0xae, 0x9c, 0x73, 0x9c, 0xae, 0x9c, 0x73, 0x9d, 0xae, - 0x9d, 0x73, 0x9d, 0xae, 0x9d, 0x73, 0x9d, 0xaf, 0xa0, 0x73, 0x9e, 0xaf, - 0xa0, 0x73, 0x9e, 0xaf, 0xa0, 0x73, 0x9f, 0xaf, 0xa0, 0x73, 0x9f, 0xaf, - 0xa0, 0x73, 0x9f, 0xaf, 0xa0, 0x73, 0xa0, 0xaf, 0xa0, 0x73, 0xa0, 0xaf, - 0xa0, 0x73, 0xa1, 0xaf, 0xa1, 0x73, 0xa1, 0xaf, 0xa1, 0x73, 0xa1, 0xaf, - 0xa1, 0x73, 0xa2, 0xaf, 0xa4, 0x73, 0xa2, 0xaf, 0xa5, 0x73, 0xa3, 0xaf, - 0xa4, 0x73, 0xa3, 0xaf, 0xa5, 0x73, 0xa3, 0xaf, 0xa4, 0x73, 0xa4, 0xaf, - 0xa5, 0x73, 0xa4, 0xaf, 0xa4, 0x73, 0xa5, 0xaf, 0xa5, 0x73, 0xa5, 0xaf, - 0xa5, 0x73, 0xa5, 0xaf, 0xa5, 0x73, 0xa6, 0xaf, 0xa6, 0x73, 0xa6, 0xaf, - 0xa6, 0x73, 0xa6, 0xaf, 0xa6, 0x73, 0xa7, 0xb0, 0xa8, 0x73, 0xa7, 0xb0, - 0xa9, 0x73, 0xa8, 0xb0, 0xa8, 0x73, 0xa8, 0xb3, 0xab, 0x73, 0xa8, 0xb0, - 0xa8, 0x73, 0xa9, 0xb3, 0xab, 0x73, 0xa9, 0xb3, 0xab, 0x73, 0xaa, 0xb3, - 0xab, 0x73, 0xaa, 0xb3, 0xab, 0x73, 0xaa, 0xb3, 0xab, 0x73, 0xab, 0xb3, - 0xab, 0x73, 0xab, 0xb3, 0xab, 0x72, 0xab, 0xb3, 0xab, 0x73, 0xab, 0xb3, - 0xac, 0x72, 0xab, 0xb3, 0xac, 0x73, 0xab, 0xb3, 0xac, 0x72, 0xab, 0xb3, - 0xad, 0x73, 0xab, 0xb3, 0xad, 0x72, 0xae, 0xb3, 0xae, 0x6f, 0xae, 0xb3, - 0xae, 0x6f, 0xae, 0xb3, 0xae, 0x6f, 0xb0, 0xb3, 0xaf, 0x70, 0xb0, 0xb3, - 0xaf, 0x70, 0xb0, 0xb3, 0xaf, 0x70, 0xb0, 0xb3, 0xb0, 0x70, 0xb0, 0xb3, - 0xb0, 0x70, 0xb0, 0xb3, 0xb0, 0x70, 0xb1, 0xb3, 0xb1, 0x70, 0xb1, 0xb3, - 0xb1, 0x70, 0xb2, 0xb3, 0xb2, 0x70, 0xb2, 0xb3, 0xb2, 0x70, 0xb2, 0xb3, - 0xb2, 0x70, 0xb4, 0xb3, 0xb3, 0x71, 0xb4, 0xb3, 0xb3, 0x71, 0xb4, 0xb3, - 0xb3, 0x71, 0xb4, 0xb3, 0xb4, 0x71, 0xb4, 0xb3, 0xb4, 0x71, 0xb4, 0xb3, - 0xb4, 0x71, 0xb5, 0xb3, 0xb5, 0x71, 0xb5, 0xb3, 0xb5, 0x71, 0xb5, 0xb3, - 0xb5, 0x71, 0xb6, 0xb3, 0xb6, 0x71, 0xb6, 0xb3, 0xb6, 0x71, 0xb6, 0xb3, - 0xb6, 0x71, 0xb7, 0xb3, 0xb7, 0x71, 0xb8, 0xb3, 0xb7, 0x72, 0xb8, 0xb3, - 0xb7, 0x72, 0xb8, 0xb3, 0xb8, 0x72, 0xb8, 0xb3, 0xb8, 0x72, 0xb8, 0xb3, - 0xb8, 0x72, 0xb9, 0xb3, 0xb9, 0x72, 0xb9, 0xb3, 0xb9, 0x72, 0xb9, 0xb3, - 0xb9, 0x72, 0xba, 0xb3, 0xba, 0x72, 0xba, 0xb3, 0xba, 0x72, 0xba, 0xb3, - 0xba, 0x72, 0xbb, 0xb3, 0xbb, 0x72, 0xbb, 0xb3, 0xbb, 0x72, 0xbb, 0xb4, - 0xbb, 0x73, 0xbc, 0xb4, 0xbc, 0x73, 0xbc, 0xb4, 0xbc, 0x73, 0xbc, 0xb4, - 0xbc, 0x73, 0xbd, 0xb4, 0xbd, 0x73, 0xbd, 0xb4, 0xbd, 0x73, 0xbd, 0xb4, - 0xbd, 0x73, 0xbe, 0xb4, 0xbe, 0x73, 0xbe, 0xb4, 0xbe, 0x73, 0xbe, 0xb4, - 0xbe, 0x73, 0xbf, 0xb4, 0xbf, 0x73, 0xbf, 0xb4, 0xbe, 0x73, 0xbf, 0xb4, - 0xbf, 0x73, 0xc0, 0xb4, 0xc0, 0x73, 0xc0, 0xb4, 0xc0, 0x73, 0xc0, 0xb4, - 0xc0, 0x73, 0xc1, 0xb4, 0xc1, 0x73, 0xc1, 0xb4, 0xc1, 0x73, 0xc1, 0xb4, - 0xc1, 0x73, 0xc1, 0xb4, 0xc1, 0x73, 0xc2, 0xb4, 0xc2, 0x73, 0xc2, 0xb4, - 0xc2, 0x73, 0xc2, 0xb4, 0xc2, 0x73, 0xc3, 0xb4, 0xc2, 0x73, 0xc3, 0xb4, - 0xc2, 0x73, 0xc3, 0xb4, 0xc2, 0x73, 0xc4, 0xb5, 0xc4, 0x73, 0xc4, 0xb5, - 0xc4, 0x73, 0xc4, 0xb5, 0xc4, 0x73, 0xc5, 0xb5, 0xc5, 0x73, 0xc5, 0xb5, - 0xc5, 0x73, 0xc5, 0xb5, 0xc5, 0x73, 0xc6, 0xb5, 0xc6, 0x73, 0xc6, 0xb5, - 0xc6, 0x73, 0xc6, 0xb5, 0xc6, 0x73, 0xc6, 0xb5, 0xc6, 0x73, 0xc7, 0xb5, - 0xc6, 0x73, 0xc7, 0xb5, 0xc6, 0x73, 0xc7, 0xb6, 0xc7, 0x73, 0xc8, 0xb6, - 0xc8, 0x73, 0xc8, 0xb6, 0xc8, 0x73, 0xc8, 0xb6, 0xc8, 0x73, 0xc9, 0xb6, - 0xc9, 0x73, 0xc9, 0xb6, 0xc9, 0x73, 0xc9, 0xb6, 0xc9, 0x73, 0xc9, 0xb6, - 0xc9, 0x73, 0xca, 0xb6, 0xc9, 0x73, 0xca, 0xb6, 0xc9, 0x73, 0xca, 0xb6, - 0xc9, 0x73, 0xcb, 0xb6, 0xcb, 0x73, 0xcb, 0xb6, 0xcb, 0x73, 0xcb, 0xb6, - 0xcb, 0x73, 0xcc, 0xb6, 0xcc, 0x73, 0xcc, 0xb6, 0xcc, 0x73, 0xcc, 0xb6, - 0xcc, 0x73, 0xcc, 0xb5, 0xcf, 0x73, 0xcd, 0xb4, 0xcf, 0x73, 0xcd, 0xb3, - 0xcf, 0x73, 0xcd, 0xb4, 0xcf, 0x73, 0xce, 0xb3, 0xcf, 0x73, 0xce, 0xb4, - 0xcf, 0x73, 0xce, 0xb3, 0xcf, 0x73, 0xce, 0xb4, 0xcf, 0x73, 0xcf, 0xb3, - 0xcf, 0x73, 0xcf, 0xb4, 0xcf, 0x73, 0xcf, 0xb3, 0xcf, 0x73, 0xcf, 0xb3, - 0xd0, 0x73, 0xcf, 0xb3, 0xd0, 0x73, 0xcf, 0xb3, 0xd0, 0x73, 0xcf, 0xb3, - 0xd0, 0x73, 0xcf, 0xb3, 0xd1, 0x73, 0xcf, 0xb3, 0xd1, 0x73, 0xcf, 0xb3, - 0xd1, 0x73, 0xcf, 0xb3, 0xd2, 0x70, 0xcf, 0xb3, 0xd2, 0x73, 0xcf, 0xb3, - 0xd2, 0x70, 0xcf, 0xb3, 0xd2, 0x73, 0xcf, 0xb3, 0xd3, 0x70, 0xcf, 0xb3, - 0xd3, 0x73, 0xcf, 0xb3, 0xd3, 0x70, 0xcf, 0xb3, 0xd4, 0x73, 0xcf, 0xb3, - 0xd4, 0x70, 0xcf, 0xb3, 0xd4, 0x73, 0xcf, 0xb3, 0xd4, 0x70, 0xcf, 0xb3, - 0xd5, 0x73, 0xcf, 0xb3, 0xd5, 0x70, 0xcf, 0xb3, 0xd5, 0x73, 0xcf, 0xb3, - 0xd6, 0x70, 0xcf, 0xb3, 0xd6, 0x73, 0xcf, 0xb3, 0xd6, 0x70, 0xcf, 0xb3, - 0xd6, 0x73, 0xcf, 0xb3, 0xd7, 0x70, 0xcf, 0xb3, 0xd7, 0x73, 0xcf, 0xb3, - 0xd7, 0x70, 0xcf, 0xb3, 0xd7, 0x73, 0xcf, 0xb3, 0xd8, 0x70, 0xcf, 0xb3, - 0xd8, 0x73, 0xcf, 0xb3, 0xd8, 0x70, 0xcf, 0xb3, 0xd9, 0x73, 0xcf, 0xb3, - 0xd9, 0x70, 0xcf, 0xb3, 0xd9, 0x73, 0xcf, 0xb3, 0xd9, 0x70, 0xd0, 0xb3, - 0xda, 0x6d, 0xcf, 0xb3, 0xda, 0x70, 0xd0, 0xb3, 0xda, 0x6d, 0xcf, 0xb3, - 0xda, 0x70, 0xd0, 0xb3, 0xdb, 0x6d, 0xcf, 0xb3, 0xdb, 0x70, 0xd0, 0xb3, - 0xdb, 0x6d, 0xcf, 0xb3, 0xdb, 0x70, 0xd0, 0xb3, 0xdc, 0x6d, 0xcf, 0xb3, - 0xdc, 0x70, 0xd0, 0xb3, 0xdc, 0x6d, 0xcf, 0xb3, 0xdd, 0x70, 0xd0, 0xb3, - 0xdd, 0x6d, 0xcf, 0xb3, 0xdd, 0x70, 0xd0, 0xb3, 0xdd, 0x6d, 0xcf, 0xb3, - 0xde, 0x70, 0xeb, 0xb3, 0xde, 0x73, 0xeb, 0xb3, 0xde, 0x77, 0xeb, 0xb3, - 0xde, 0x73, 0xeb, 0xb3, 0xdf, 0x77, 0xeb, 0xb3, 0xdf, 0x73, 0xeb, 0xb3, - 0xdf, 0x77, 0xeb, 0xb3, 0xdf, 0x73, 0xeb, 0xb3, 0xe0, 0x77, 0xeb, 0xb3, - 0xe0, 0x73, 0xeb, 0xb3, 0xe0, 0x77, 0xeb, 0xb3, 0xe1, 0x73, 0xeb, 0xb3, - 0xe1, 0x77, 0xeb, 0xb3, 0xe1, 0x73, 0xeb, 0xb3, 0xe1, 0x77, 0xeb, 0xb3, - 0xe2, 0x73, 0xeb, 0xb3, 0xe2, 0x77, 0xeb, 0xb3, 0xe2, 0x73, 0xeb, 0xb3, - 0xe2, 0x77, 0xeb, 0xb3, 0xe3, 0x73, 0xeb, 0xb3, 0xe3, 0x77, 0xeb, 0xb3, - 0xe3, 0x73, 0xeb, 0xb3, 0xe3, 0x77, 0xeb, 0xb3, 0xe4, 0x73, 0xeb, 0xb3, - 0xe4, 0x77, 0xeb, 0xb3, 0xe4, 0x73, 0xeb, 0xb3, 0xe4, 0x77, 0xeb, 0xb3, - 0xe5, 0x73, 0xeb, 0xb3, 0xe5, 0x77, 0xeb, 0xb3, 0xe5, 0x73, 0xeb, 0xb3, - 0xe5, 0x77, 0xeb, 0xb3, 0xe6, 0x73, 0xeb, 0xb3, 0xe6, 0x77, 0xeb, 0xb3, - 0xe6, 0x73, 0xeb, 0xb3, 0xe6, 0x77, 0xeb, 0xb3, 0xe7, 0x73, 0xeb, 0xb3, - 0xe7, 0x77, 0xeb, 0xb3, 0xe7, 0x73, 0xeb, 0xb3, 0xe7, 0x73, 0xeb, 0xb3, - 0xe8, 0x73, 0xeb, 0xb3, 0xe8, 0x73, 0xeb, 0xb3, 0xe8, 0x73, 0xeb, 0xb3, - 0xe8, 0x73, 0xeb, 0xb3, 0xe9, 0x73, 0xeb, 0xb3, 0xe9, 0x73, 0xeb, 0xb3, - 0xe9, 0x73, 0xeb, 0xb3, 0xe9, 0x73, 0xeb, 0xb3, 0xea, 0x73, 0xeb, 0xb3, - 0xea, 0x73, 0xeb, 0xb3, 0xea, 0x73, 0xeb, 0xb3, 0xea, 0x73, 0xeb, 0xb3, - 0xeb, 0x73, 0xeb, 0xb3, 0xeb, 0x73, 0xeb, 0xb2, 0xeb, 0x73, 0xeb, 0xb3, - 0xeb, 0x73, 0xec, 0xb2, 0xeb, 0x73, 0xec, 0xb3, 0xeb, 0x73, 0xec, 0xb2, - 0xeb, 0x73, 0xec, 0xb3, 0xeb, 0x73, 0xec, 0xb2, 0xeb, 0x73, 0xed, 0xb3, - 0xeb, 0x73, 0xed, 0xb2, 0xeb, 0x73, 0xed, 0xb3, 0xeb, 0x73, 0xed, 0xb2, - 0xeb, 0x73, 0xee, 0xb3, 0xeb, 0x73, 0xee, 0xb2, 0xeb, 0x73, 0xee, 0xb3, - 0xeb, 0x73, 0xee, 0xb2, 0xeb, 0x73, 0xef, 0xb3, 0xeb, 0x73, 0xef, 0xb2, - 0xeb, 0x73, 0xef, 0xb3, 0xeb, 0x73, 0xef, 0xb2, 0xeb, 0x73, 0xf0, 0xb3, - 0xeb, 0x73, 0xf0, 0xb2, 0xeb, 0x73, 0xf0, 0xb3, 0xeb, 0x73, 0xf0, 0xb2, - 0xeb, 0x73, 0xf1, 0xb3, 0xeb, 0x73, 0xf1, 0xb4, 0xf6, 0x73, 0xf1, 0xb3, - 0xf6, 0x73, 0xf1, 0xb4, 0xf6, 0x73, 0xf2, 0xb3, 0xf6, 0x73, 0xf2, 0xb4, - 0xf6, 0x73, 0xf2, 0xb3, 0xf6, 0x73, 0xf2, 0xb4, 0xf6, 0x73, 0xf2, 0xb3, - 0xf6, 0x73, 0xf3, 0xb4, 0xf6, 0x73, 0xf3, 0xb3, 0xf6, 0x73, 0xf3, 0xb4, - 0xf6, 0x73, 0xf3, 0xb3, 0xf6, 0x73, 0xf4, 0xb4, 0xf6, 0x73, 0xf4, 0xb3, - 0xf6, 0x73, 0xf4, 0xb4, 0xf6, 0x73, 0xf4, 0xb3, 0xf6, 0x73, 0xf5, 0xb4, - 0xf6, 0x73, 0xf5, 0xb3, 0xf6, 0x73, 0xf5, 0xb4, 0xf6, 0x73, 0xf5, 0xb3, - 0xf6, 0x73, 0xf5, 0xb4, 0xf6, 0x73, 0xf6, 0xb3, 0xf6, 0x73, 0xf6, 0xb3, - 0xf6, 0x73, 0xf6, 0xb3, 0xf6, 0x73, 0xf6, 0xb3, 0xf6, 0x73, 0xf6, 0xb3, - 0xf7, 0x73, 0xf6, 0xb3, 0xf7, 0x73, 0xf6, 0xb3, 0xf7, 0x73, 0xf6, 0xb3, - 0xf7, 0x73, 0xf6, 0xb3, 0xf8, 0x73, 0xf6, 0xb3, 0xf8, 0x73, 0xfa, 0xb3, - 0xf8, 0x75, 0xfa, 0xb3, 0xf8, 0x73, 0xfa, 0xb3, 0xf8, 0x75, 0xfa, 0xb3, - 0xf9, 0x73, 0xfa, 0xb3, 0xf9, 0x75, 0xfa, 0xb3, 0xf9, 0x73, 0xfa, 0xb3, - 0xf9, 0x73, 0xfa, 0xb3, 0xfa, 0x73, 0xfa, 0xb3, 0xfa, 0x73, 0xfa, 0xb3, - 0xfa, 0x73, 0xfa, 0xb3, 0xfa, 0x73, 0xfa, 0xb3, 0xfa, 0x73, 0xfb, 0xb3, - 0xfa, 0x73, 0xfb, 0xb2, 0xfa, 0x73, 0xfb, 0xb3, 0xfa, 0x73, 0xfb, 0xb2, - 0xfa, 0x73, 0xfc, 0xb3, 0xfa, 0x73, 0xfc, 0xb2, 0xfa, 0x73, 0xfc, 0xb3, - 0xfa, 0x73, 0xfc, 0xb2, 0xfa, 0x73, 0xfc, 0xb3, 0xfa, 0x73, 0xfd, 0xb2, - 0xfa, 0x73, 0xfd, 0xb3, 0xfa, 0x73, 0xfd, 0xb2, 0xfa, 0x73, 0xfd, 0xb3, - 0xfa, 0x73, 0xfe, 0xb2, 0xfa, 0x73, 0xfe, 0xb3, 0xfa, 0x73, 0xfe, 0xb2, - 0xfa, 0x73, 0xfe, 0xb3, 0xfa, 0x73, 0xfe, 0xb2, 0xfa, 0x73, 0xff, 0xb3, - 0xfa, 0x73, 0xff, 0xb2, 0xfa, 0x73, 0x03, 0xbd, 0x92, 0x73, 0x0a, 0xbb, - 0x92, 0x73, 0x0f, 0xbd, 0x92, 0x73, 0x14, 0xbb, 0x92, 0x73, 0x17, 0xbd, - 0x92, 0x73, 0x1b, 0xbb, 0x92, 0x73, 0x1e, 0xbd, 0x92, 0x73, 0x20, 0xbb, - 0x92, 0x73, 0x23, 0xbd, 0x92, 0x73, 0x25, 0xbb, 0x92, 0x73, 0x27, 0xbd, - 0x92, 0x73, 0x29, 0xbb, 0x92, 0x73, 0x2b, 0xbd, 0x92, 0x73, 0x2d, 0xbb, - 0x92, 0x73, 0x2f, 0xbd, 0x92, 0x73, 0x31, 0xbb, 0x92, 0x73, 0x32, 0xb9, - 0x93, 0x73, 0x34, 0xbb, 0x92, 0x73, 0x35, 0xb9, 0x93, 0x73, 0x37, 0xbb, - 0x92, 0x73, 0x38, 0xb9, 0x93, 0x73, 0x3a, 0xbb, 0x92, 0x73, 0x3b, 0xb9, - 0x93, 0x73, 0x3c, 0xbb, 0x92, 0x73, 0x3e, 0xb9, 0x93, 0x73, 0x3f, 0xbb, - 0x92, 0x73, 0x40, 0xb9, 0x93, 0x73, 0x42, 0xbb, 0x92, 0x73, 0x43, 0xb9, - 0x93, 0x73, 0x44, 0xbb, 0x92, 0x73, 0x45, 0xb9, 0x93, 0x73, 0x46, 0xbb, - 0x92, 0x73, 0x47, 0xb9, 0x93, 0x73, 0x48, 0xbb, 0x92, 0x73, 0x49, 0xb9, - 0x93, 0x73, 0x4a, 0xbb, 0x92, 0x73, 0x4b, 0xb9, 0x93, 0x73, 0x4c, 0xbb, - 0x92, 0x73, 0x4d, 0xb9, 0x93, 0x73, 0x4e, 0xbb, 0x92, 0x73, 0x4f, 0xb9, - 0x93, 0x73, 0x50, 0xbb, 0x92, 0x73, 0x51, 0xb9, 0x93, 0x73, 0x52, 0xbb, - 0x92, 0x73, 0x53, 0xb9, 0x93, 0x73, 0x54, 0xb6, 0x93, 0x73, 0x55, 0xb9, - 0x93, 0x73, 0x56, 0xb6, 0x93, 0x73, 0x57, 0xb9, 0x93, 0x73, 0x58, 0xb6, - 0x93, 0x73, 0x58, 0xb9, 0x93, 0x73, 0x59, 0xb6, 0x93, 0x73, 0x5a, 0xb9, - 0x93, 0x73, 0x5b, 0xb6, 0x93, 0x73, 0x5c, 0xb9, 0x93, 0x73, 0x5d, 0xb6, - 0x93, 0x73, 0x5d, 0xb9, 0x93, 0x73, 0x5e, 0xb6, 0x93, 0x73, 0x5f, 0xb9, - 0x93, 0x73, 0x60, 0xb6, 0x93, 0x73, 0x60, 0xb9, 0x93, 0x73, 0x61, 0xb6, - 0x93, 0x73, 0x62, 0xb9, 0x93, 0x73, 0x63, 0xb6, 0x93, 0x73, 0x63, 0xb9, - 0x93, 0x73, 0x64, 0xb6, 0x93, 0x73, 0x65, 0xb9, 0x93, 0x73, 0x66, 0xb6, - 0x93, 0x73, 0x66, 0xb9, 0x93, 0x73, 0x67, 0xb6, 0x93, 0x73, 0x68, 0xb9, - 0x93, 0x73, 0x68, 0xb6, 0x93, 0x73, 0x69, 0xb9, 0x93, 0x73, 0x6a, 0xb6, - 0x93, 0x73, 0x6a, 0xb9, 0x93, 0x73, 0x6b, 0xb6, 0x93, 0x73, 0x6c, 0xb9, - 0x93, 0x73, 0x6c, 0xb6, 0x93, 0x73, 0x6d, 0xb9, 0x93, 0x73, 0x6e, 0xb6, - 0x93, 0x73, 0x6e, 0xb9, 0x93, 0x73, 0x6f, 0xb6, 0x93, 0x73, 0x70, 0xb9, - 0x93, 0x73, 0x70, 0xb6, 0x93, 0x73, 0x71, 0xb9, 0x93, 0x73, 0x72, 0xb6, - 0x93, 0x73, 0x72, 0xb4, 0x94, 0x73, 0x73, 0xb6, 0x93, 0x73, 0x73, 0xb4, - 0x94, 0x73, 0x74, 0xb6, 0x93, 0x73, 0x75, 0xb4, 0x94, 0x73, 0x75, 0xb6, - 0x93, 0x73, 0x76, 0xb4, 0x94, 0x73, 0x76, 0xb6, 0x93, 0x73, 0x77, 0xb4, - 0x94, 0x73, 0x78, 0xb6, 0x93, 0x73, 0x78, 0xb4, 0x94, 0x73, 0x79, 0xb6, - 0x93, 0x73, 0x79, 0xb4, 0x94, 0x73, 0x7a, 0xb6, 0x93, 0x73, 0x7a, 0xb4, - 0x94, 0x73, 0x7b, 0xb6, 0x93, 0x73, 0x7c, 0xb4, 0x94, 0x73, 0x7c, 0xb6, - 0x93, 0x73, 0x7d, 0xb4, 0x94, 0x73, 0x7d, 0xb6, 0x93, 0x73, 0x7e, 0xb4, - 0x94, 0x73, 0x7e, 0xb6, 0x93, 0x73, 0x7f, 0xb4, 0x94, 0x73, 0x7f, 0xb6, - 0x93, 0x73, 0x80, 0xb4, 0x94, 0x73, 0x81, 0xb6, 0x93, 0x73, 0x81, 0xb4, - 0x94, 0x73, 0x82, 0xb6, 0x93, 0x73, 0x82, 0xb4, 0x94, 0x73, 0x83, 0xb6, - 0x93, 0x73, 0x83, 0xb4, 0x94, 0x73, 0x84, 0xb6, 0x93, 0x73, 0x84, 0xb4, - 0x94, 0x73, 0x85, 0xb6, 0x93, 0x73, 0x85, 0xb4, 0x94, 0x73, 0x86, 0xb6, - 0x93, 0x73, 0x86, 0xb4, 0x94, 0x73, 0x87, 0xb6, 0x93, 0x73, 0x87, 0xb4, - 0x94, 0x73, 0x88, 0xb6, 0x93, 0x73, 0x88, 0xb4, 0x94, 0x73, 0x89, 0xb6, - 0x93, 0x73, 0x89, 0xb4, 0x94, 0x73, 0x8a, 0xb6, 0x93, 0x73, 0x8a, 0xb4, - 0x94, 0x73, 0x8b, 0xb6, 0x93, 0x73, 0x8b, 0xb4, 0x94, 0x73, 0x8c, 0xb6, - 0x93, 0x73, 0x8c, 0xb4, 0x94, 0x73, 0x8d, 0xb3, 0x94, 0x73, 0x8d, 0xb4, - 0x94, 0x73, 0x8e, 0xb3, 0x94, 0x73, 0x8e, 0xb4, 0x94, 0x73, 0x8e, 0xb3, - 0x94, 0x73, 0x8f, 0xb4, 0x94, 0x73, 0x8f, 0xb3, 0x94, 0x73, 0x90, 0xb4, - 0x94, 0x73, 0x90, 0xb3, 0x94, 0x73, 0x91, 0xb4, 0x94, 0x73, 0x91, 0xb3, - 0x94, 0x73, 0x92, 0xb4, 0x94, 0x73, 0x92, 0xb3, 0x94, 0x73, 0x93, 0xb4, - 0x94, 0x73, 0x93, 0xb3, 0x94, 0x73, 0x94, 0xb4, 0x94, 0x73, 0x93, 0xb3, - 0x94, 0x73, 0x94, 0xb3, 0x94, 0x73, 0x96, 0xb3, 0x95, 0x73, 0x96, 0xb3, - 0x95, 0x73, 0x96, 0xb3, 0x95, 0x73, 0x96, 0xb3, 0x95, 0x73, 0x97, 0xb3, - 0x95, 0x73, 0x97, 0xb3, 0x95, 0x73, 0x98, 0xb3, 0x95, 0x73, 0x98, 0xb3, - 0x95, 0x73, 0x98, 0xb3, 0x95, 0x73, 0x99, 0xb3, 0x95, 0x73, 0x99, 0xb1, - 0x96, 0x73, 0x9a, 0xb3, 0x95, 0x73, 0x9a, 0xb1, 0x96, 0x73, 0x9a, 0xb3, - 0x95, 0x73, 0x9b, 0xb1, 0x96, 0x73, 0x9b, 0xb3, 0x95, 0x73, 0x9c, 0xae, - 0x9d, 0x73, 0x9c, 0xae, 0x9e, 0x73, 0x9d, 0xae, 0x9d, 0x73, 0x9d, 0xae, - 0x9e, 0x73, 0x9d, 0xae, 0x9d, 0x73, 0x9e, 0xae, 0x9e, 0x73, 0x9e, 0xae, - 0x9e, 0x73, 0x9f, 0xae, 0x9f, 0x73, 0x9f, 0xae, 0x9f, 0x73, 0x9f, 0xaf, - 0xa2, 0x73, 0xa0, 0xaf, 0xa2, 0x73, 0xa0, 0xaf, 0xa2, 0x73, 0xa1, 0xaf, - 0xa2, 0x73, 0xa1, 0xaf, 0xa2, 0x73, 0xa1, 0xaf, 0xa2, 0x73, 0xa2, 0xaf, - 0xa2, 0x73, 0xa2, 0xaf, 0xa2, 0x73, 0xa3, 0xaf, 0xa3, 0x73, 0xa3, 0xaf, - 0xa3, 0x73, 0xa3, 0xaf, 0xa3, 0x73, 0xa4, 0xb0, 0xa6, 0x73, 0xa4, 0xb0, - 0xa6, 0x73, 0xa5, 0xb0, 0xa6, 0x73, 0xa5, 0xb0, 0xa6, 0x73, 0xa5, 0xb0, - 0xa6, 0x73, 0xa6, 0xb0, 0xa6, 0x73, 0xa6, 0xb0, 0xa6, 0x73, 0xa6, 0xb0, - 0xa6, 0x73, 0xa7, 0xb0, 0xa7, 0x73, 0xa7, 0xb0, 0xa7, 0x73, 0xa8, 0xb0, - 0xa8, 0x73, 0xa8, 0xb3, 0xab, 0x73, 0xa8, 0xb3, 0xab, 0x73, 0xa9, 0xb3, - 0xab, 0x73, 0xa9, 0xb3, 0xab, 0x73, 0xaa, 0xb3, 0xab, 0x73, 0xaa, 0xb3, - 0xab, 0x73, 0xaa, 0xb3, 0xab, 0x73, 0xab, 0xb3, 0xab, 0x73, 0xab, 0xb3, - 0xab, 0x72, 0xab, 0xb3, 0xab, 0x73, 0xab, 0xb3, 0xac, 0x72, 0xab, 0xb3, - 0xac, 0x73, 0xab, 0xb3, 0xac, 0x72, 0xab, 0xb3, 0xad, 0x73, 0xab, 0xb3, - 0xad, 0x72, 0xab, 0xb3, 0xae, 0x73, 0xae, 0xb3, 0xae, 0x6f, 0xae, 0xb3, - 0xae, 0x6f, 0xaf, 0xb3, 0xaf, 0x6f, 0xaf, 0xb3, 0xaf, 0x6f, 0xaf, 0xb3, - 0xaf, 0x6f, 0xb0, 0xb3, 0xb0, 0x6f, 0xb0, 0xb3, 0xb0, 0x6f, 0xb2, 0xb3, - 0xb0, 0x70, 0xb2, 0xb3, 0xb1, 0x70, 0xb2, 0xb3, 0xb1, 0x70, 0xb2, 0xb3, - 0xb2, 0x70, 0xb2, 0xb3, 0xb2, 0x70, 0xb2, 0xb3, 0xb2, 0x70, 0xb3, 0xb3, - 0xb3, 0x70, 0xb3, 0xb3, 0xb3, 0x70, 0xb3, 0xb3, 0xb3, 0x70, 0xb4, 0xb3, - 0xb4, 0x70, 0xb4, 0xb3, 0xb4, 0x70, 0xb6, 0xb3, 0xb4, 0x71, 0xb6, 0xb3, - 0xb5, 0x71, 0xb6, 0xb3, 0xb5, 0x71, 0xb6, 0xb3, 0xb5, 0x71, 0xb6, 0xb3, - 0xb6, 0x71, 0xb6, 0xb3, 0xb6, 0x71, 0xb6, 0xb3, 0xb6, 0x71, 0xb7, 0xb3, - 0xb7, 0x71, 0xb7, 0xb3, 0xb7, 0x71, 0xb7, 0xb3, 0xb7, 0x71, 0xb8, 0xb3, - 0xb8, 0x71, 0xb8, 0xb3, 0xb8, 0x71, 0xb8, 0xb3, 0xb8, 0x71, 0xb9, 0xb3, - 0xb9, 0x71, 0xba, 0xb3, 0xb9, 0x72, 0xba, 0xb3, 0xb9, 0x72, 0xba, 0xb3, - 0xba, 0x72, 0xba, 0xb3, 0xba, 0x72, 0xba, 0xb3, 0xba, 0x72, 0xbb, 0xb3, - 0xbb, 0x72, 0xbb, 0xb3, 0xbb, 0x72, 0xbb, 0xb3, 0xbb, 0x72, 0xbc, 0xb3, - 0xbc, 0x72, 0xbc, 0xb3, 0xbc, 0x72, 0xbc, 0xb3, 0xbc, 0x72, 0xbd, 0xb3, - 0xbd, 0x72, 0xbd, 0xb3, 0xbd, 0x72, 0xbd, 0xb4, 0xbd, 0x73, 0xbe, 0xb4, - 0xbe, 0x73, 0xbe, 0xb4, 0xbe, 0x73, 0xbe, 0xb4, 0xbe, 0x73, 0xbf, 0xb4, - 0xbf, 0x73, 0xbf, 0xb4, 0xbf, 0x73, 0xbf, 0xb4, 0xbf, 0x73, 0xc0, 0xb4, - 0xc0, 0x73, 0xc0, 0xb4, 0xc0, 0x73, 0xc0, 0xb4, 0xc0, 0x73, 0xc1, 0xb4, - 0xc1, 0x73, 0xc1, 0xb4, 0xc0, 0x73, 0xc1, 0xb4, 0xc1, 0x73, 0xc1, 0xb5, - 0xc1, 0x73, 0xc2, 0xb5, 0xc2, 0x73, 0xc2, 0xb5, 0xc2, 0x73, 0xc2, 0xb5, - 0xc2, 0x73, 0xc3, 0xb5, 0xc3, 0x73, 0xc3, 0xb5, 0xc3, 0x73, 0xc3, 0xb5, - 0xc3, 0x73, 0xc4, 0xb5, 0xc4, 0x73, 0xc4, 0xb5, 0xc4, 0x73, 0xc4, 0xb5, - 0xc4, 0x73, 0xc5, 0xb5, 0xc4, 0x73, 0xc5, 0xb5, 0xc4, 0x73, 0xc5, 0xb5, - 0xc4, 0x73, 0xc6, 0xb5, 0xc6, 0x73, 0xc6, 0xb5, 0xc6, 0x73, 0xc6, 0xb5, - 0xc6, 0x73, 0xc6, 0xb5, 0xc6, 0x73, 0xc7, 0xb5, 0xc7, 0x73, 0xc7, 0xb5, - 0xc7, 0x73, 0xc7, 0xb5, 0xc7, 0x73, 0xc8, 0xb5, 0xc7, 0x73, 0xc8, 0xb5, - 0xc7, 0x73, 0xc8, 0xb5, 0xc7, 0x73, 0xc9, 0xb5, 0xc7, 0x73, 0xc9, 0xb6, - 0xc9, 0x73, 0xc9, 0xb6, 0xc9, 0x73, 0xc9, 0xb6, 0xc9, 0x73, 0xca, 0xb6, - 0xca, 0x73, 0xca, 0xb6, 0xca, 0x73, 0xca, 0xb6, 0xca, 0x73, 0xcb, 0xb6, - 0xcb, 0x73, 0xcb, 0xb6, 0xca, 0x73, 0xcb, 0xb6, 0xcb, 0x73, 0xcc, 0xb6, - 0xca, 0x73, 0xcc, 0xb6, 0xcb, 0x73, 0xcc, 0xb7, 0xcc, 0x73, 0xcc, 0xb5, - 0xcf, 0x73, 0xcd, 0xb3, 0xcf, 0x73, 0xcd, 0xb3, 0xcf, 0x73, 0xcd, 0xb3, - 0xcf, 0x73, 0xce, 0xb3, 0xcf, 0x73, 0xce, 0xb3, 0xcf, 0x73, 0xce, 0xb3, - 0xcf, 0x73, 0xce, 0xb3, 0xcf, 0x73, 0xcf, 0xb3, 0xcf, 0x73, 0xcf, 0xb3, - 0xcf, 0x72, 0xcf, 0xb3, 0xcf, 0x73, 0xcf, 0xb3, 0xd0, 0x72, 0xcf, 0xb3, - 0xd0, 0x73, 0xcf, 0xb3, 0xd0, 0x72, 0xcf, 0xb3, 0xd0, 0x73, 0xcf, 0xb3, - 0xd1, 0x72, 0xcf, 0xb3, 0xd1, 0x73, 0xcf, 0xb3, 0xd1, 0x72, 0xcf, 0xb3, - 0xd2, 0x73, 0xcf, 0xb3, 0xd2, 0x72, 0xcf, 0xb3, 0xd2, 0x73, 0xcf, 0xb3, - 0xd2, 0x72, 0xcf, 0xb3, 0xd3, 0x73, 0xcf, 0xb3, 0xd3, 0x72, 0xcf, 0xb3, - 0xd3, 0x73, 0xcf, 0xb3, 0xd4, 0x72, 0xcf, 0xb3, 0xd4, 0x6f, 0xcf, 0xb3, - 0xd4, 0x72, 0xcf, 0xb3, 0xd4, 0x6f, 0xcf, 0xb3, 0xd5, 0x72, 0xcf, 0xb3, - 0xd5, 0x6f, 0xcf, 0xb3, 0xd5, 0x72, 0xcf, 0xb3, 0xd6, 0x6f, 0xcf, 0xb3, - 0xd6, 0x72, 0xcf, 0xb3, 0xd6, 0x6f, 0xcf, 0xb3, 0xd6, 0x72, 0xcf, 0xb3, - 0xd7, 0x6f, 0xcf, 0xb3, 0xd7, 0x72, 0xcf, 0xb3, 0xd7, 0x6f, 0xcf, 0xb3, - 0xd7, 0x72, 0xcf, 0xb3, 0xd8, 0x6f, 0xcf, 0xb3, 0xd8, 0x72, 0xcf, 0xb3, - 0xd8, 0x6f, 0xcf, 0xb3, 0xd9, 0x72, 0xcf, 0xb3, 0xd9, 0x6f, 0xcf, 0xb3, - 0xd9, 0x72, 0xcf, 0xb3, 0xd9, 0x6f, 0xcf, 0xb3, 0xda, 0x72, 0xcf, 0xb3, - 0xda, 0x6f, 0xcf, 0xb3, 0xda, 0x72, 0xcf, 0xb3, 0xda, 0x6f, 0xcf, 0xb3, - 0xdb, 0x72, 0xcf, 0xb3, 0xdb, 0x6f, 0xcf, 0xb3, 0xdb, 0x72, 0xcf, 0xb3, - 0xdb, 0x6f, 0xcf, 0xb3, 0xdc, 0x72, 0xcf, 0xb3, 0xdc, 0x6f, 0xcf, 0xb3, - 0xdc, 0x72, 0xcf, 0xb3, 0xdd, 0x6f, 0xd0, 0xb3, 0xdd, 0x6c, 0xcf, 0xb3, - 0xdd, 0x6f, 0xd0, 0xb3, 0xdd, 0x6c, 0xeb, 0xb3, 0xde, 0x76, 0xeb, 0xb3, - 0xde, 0x7a, 0xeb, 0xb3, 0xde, 0x76, 0xeb, 0xb3, 0xde, 0x7a, 0xeb, 0xb3, - 0xdf, 0x76, 0xeb, 0xb3, 0xdf, 0x73, 0xeb, 0xb3, 0xdf, 0x76, 0xeb, 0xb3, - 0xdf, 0x73, 0xeb, 0xb3, 0xe0, 0x76, 0xeb, 0xb3, 0xe0, 0x73, 0xeb, 0xb3, - 0xe0, 0x76, 0xeb, 0xb3, 0xe1, 0x73, 0xeb, 0xb3, 0xe1, 0x76, 0xeb, 0xb3, - 0xe1, 0x73, 0xeb, 0xb3, 0xe1, 0x76, 0xeb, 0xb3, 0xe2, 0x73, 0xeb, 0xb3, - 0xe2, 0x76, 0xeb, 0xb3, 0xe2, 0x73, 0xeb, 0xb3, 0xe2, 0x76, 0xeb, 0xb3, - 0xe3, 0x73, 0xeb, 0xb3, 0xe3, 0x76, 0xeb, 0xb3, 0xe3, 0x73, 0xeb, 0xb3, - 0xe3, 0x76, 0xeb, 0xb3, 0xe4, 0x73, 0xeb, 0xb3, 0xe4, 0x76, 0xeb, 0xb3, - 0xe4, 0x73, 0xeb, 0xb3, 0xe4, 0x76, 0xeb, 0xb3, 0xe5, 0x73, 0xeb, 0xb3, - 0xe5, 0x76, 0xeb, 0xb3, 0xe5, 0x73, 0xeb, 0xb3, 0xe5, 0x76, 0xeb, 0xb3, - 0xe6, 0x73, 0xeb, 0xb3, 0xe6, 0x76, 0xeb, 0xb3, 0xe6, 0x73, 0xeb, 0xb3, - 0xe6, 0x76, 0xeb, 0xb3, 0xe7, 0x73, 0xeb, 0xb3, 0xe7, 0x76, 0xeb, 0xb3, - 0xe7, 0x73, 0xeb, 0xb3, 0xe7, 0x76, 0xeb, 0xb3, 0xe8, 0x73, 0xeb, 0xb3, - 0xe8, 0x76, 0xeb, 0xb3, 0xe8, 0x73, 0xeb, 0xb3, 0xe8, 0x76, 0xeb, 0xb3, - 0xe9, 0x73, 0xeb, 0xb3, 0xe9, 0x76, 0xeb, 0xb3, 0xe9, 0x73, 0xeb, 0xb3, - 0xe9, 0x73, 0xeb, 0xb3, 0xea, 0x73, 0xeb, 0xb3, 0xea, 0x73, 0xeb, 0xb3, - 0xea, 0x73, 0xeb, 0xb3, 0xea, 0x73, 0xeb, 0xb3, 0xeb, 0x73, 0xeb, 0xb3, - 0xeb, 0x73, 0xeb, 0xb3, 0xeb, 0x73, 0xeb, 0xb3, 0xeb, 0x73, 0xec, 0xb3, - 0xeb, 0x73, 0xec, 0xb3, 0xeb, 0x73, 0xec, 0xb2, 0xeb, 0x73, 0xec, 0xb3, - 0xeb, 0x73, 0xec, 0xb2, 0xeb, 0x73, 0xed, 0xb3, 0xeb, 0x73, 0xed, 0xb2, - 0xeb, 0x73, 0xed, 0xb3, 0xeb, 0x73, 0xed, 0xb2, 0xeb, 0x73, 0xee, 0xb3, - 0xeb, 0x73, 0xee, 0xb2, 0xeb, 0x73, 0xee, 0xb3, 0xeb, 0x73, 0xee, 0xb2, - 0xeb, 0x73, 0xef, 0xb3, 0xeb, 0x73, 0xef, 0xb2, 0xeb, 0x73, 0xef, 0xb3, - 0xeb, 0x73, 0xef, 0xb2, 0xeb, 0x73, 0xf0, 0xb3, 0xeb, 0x73, 0xf0, 0xb2, - 0xeb, 0x73, 0xf0, 0xb3, 0xeb, 0x73, 0xf0, 0xb2, 0xeb, 0x73, 0xf1, 0xb3, - 0xeb, 0x73, 0xf1, 0xb4, 0xf6, 0x73, 0xf1, 0xb3, 0xf6, 0x73, 0xf1, 0xb4, - 0xf6, 0x73, 0xf2, 0xb3, 0xf6, 0x73, 0xf2, 0xb4, 0xf6, 0x73, 0xf2, 0xb3, - 0xf6, 0x73, 0xf2, 0xb4, 0xf6, 0x73, 0xf2, 0xb3, 0xf6, 0x73, 0xf3, 0xb4, - 0xf6, 0x73, 0xf3, 0xb3, 0xf6, 0x73, 0xf3, 0xb4, 0xf6, 0x73, 0xf3, 0xb3, - 0xf6, 0x73, 0xf4, 0xb4, 0xf6, 0x73, 0xf4, 0xb3, 0xf6, 0x73, 0xf4, 0xb4, - 0xf6, 0x73, 0xf4, 0xb3, 0xf6, 0x73, 0xf5, 0xb4, 0xf6, 0x73, 0xf5, 0xb3, - 0xf6, 0x73, 0xf5, 0xb4, 0xf6, 0x73, 0xf5, 0xb3, 0xf6, 0x73, 0xf5, 0xb4, - 0xf6, 0x73, 0xf6, 0xb3, 0xf6, 0x73, 0xf6, 0xb3, 0xf6, 0x73, 0xf6, 0xb3, - 0xf6, 0x73, 0xf6, 0xb3, 0xf6, 0x73, 0xf6, 0xb3, 0xf7, 0x73, 0xf6, 0xb3, - 0xf7, 0x73, 0xf6, 0xb3, 0xf7, 0x73, 0xf6, 0xb3, 0xf7, 0x73, 0xf6, 0xb3, - 0xf8, 0x73, 0xf6, 0xb3, 0xf8, 0x73, 0xfa, 0xb3, 0xf8, 0x75, 0xfa, 0xb3, - 0xf8, 0x73, 0xfa, 0xb3, 0xf8, 0x75, 0xfa, 0xb3, 0xf9, 0x73, 0xfa, 0xb3, - 0xf9, 0x75, 0xfa, 0xb3, 0xf9, 0x73, 0xfa, 0xb3, 0xf9, 0x73, 0xfa, 0xb3, - 0xfa, 0x73, 0xfa, 0xb3, 0xfa, 0x73, 0xfa, 0xb3, 0xfa, 0x73, 0xfa, 0xb3, - 0xfa, 0x73, 0xfa, 0xb3, 0xfa, 0x73, 0xfb, 0xb3, 0xfa, 0x73, 0xfb, 0xb2, - 0xfa, 0x73, 0xfb, 0xb3, 0xfa, 0x73, 0xfb, 0xb2, 0xfa, 0x73, 0xfc, 0xb3, - 0xfa, 0x73, 0xfc, 0xb2, 0xfa, 0x73, 0xfc, 0xb3, 0xfa, 0x73, 0xfc, 0xb2, - 0xfa, 0x73, 0xfc, 0xb3, 0xfa, 0x73, 0xfd, 0xb2, 0xfa, 0x73, 0xfd, 0xb3, - 0xfa, 0x73, 0xfd, 0xb2, 0xfa, 0x73, 0xfd, 0xb3, 0xfa, 0x73, 0xfe, 0xb2, - 0xfa, 0x73, 0xfe, 0xb3, 0xfa, 0x73, 0xfe, 0xb2, 0xfa, 0x73, 0xfe, 0xb3, - 0xfa, 0x73, 0xfe, 0xb2, 0xfa, 0x73, 0xff, 0xb3, 0xfa, 0x73, 0xff, 0xb2, - 0xfa, 0x73, 0x03, 0xb8, 0x93, 0x74, 0x0a, 0xba, 0x92, 0x74, 0x0f, 0xb8, - 0x93, 0x74, 0x14, 0xba, 0x92, 0x74, 0x17, 0xb8, 0x93, 0x74, 0x1b, 0xba, - 0x92, 0x74, 0x1e, 0xb8, 0x93, 0x74, 0x20, 0xba, 0x92, 0x74, 0x23, 0xb8, - 0x93, 0x74, 0x25, 0xba, 0x92, 0x74, 0x27, 0xb8, 0x93, 0x74, 0x29, 0xba, - 0x92, 0x74, 0x2b, 0xb8, 0x93, 0x74, 0x2d, 0xba, 0x92, 0x74, 0x2f, 0xb8, - 0x93, 0x74, 0x31, 0xba, 0x92, 0x74, 0x32, 0xb8, 0x93, 0x74, 0x34, 0xba, - 0x92, 0x74, 0x35, 0xb8, 0x93, 0x74, 0x37, 0xba, 0x92, 0x74, 0x38, 0xb8, - 0x93, 0x74, 0x3a, 0xba, 0x92, 0x74, 0x3b, 0xb8, 0x93, 0x74, 0x3c, 0xba, - 0x92, 0x74, 0x3e, 0xb8, 0x93, 0x74, 0x3f, 0xba, 0x92, 0x74, 0x40, 0xb8, - 0x93, 0x74, 0x42, 0xba, 0x92, 0x74, 0x43, 0xb8, 0x93, 0x74, 0x44, 0xba, - 0x92, 0x74, 0x45, 0xb8, 0x93, 0x74, 0x46, 0xba, 0x92, 0x74, 0x47, 0xb8, - 0x93, 0x74, 0x48, 0xba, 0x92, 0x74, 0x49, 0xb8, 0x93, 0x74, 0x4a, 0xba, - 0x92, 0x74, 0x4b, 0xb8, 0x93, 0x74, 0x4c, 0xba, 0x92, 0x74, 0x4d, 0xb8, - 0x93, 0x74, 0x4e, 0xba, 0x92, 0x74, 0x4f, 0xb8, 0x93, 0x74, 0x50, 0xba, - 0x92, 0x74, 0x51, 0xb8, 0x93, 0x74, 0x52, 0xba, 0x92, 0x74, 0x53, 0xb8, - 0x93, 0x74, 0x54, 0xba, 0x92, 0x74, 0x55, 0xb8, 0x93, 0x74, 0x56, 0xba, - 0x92, 0x74, 0x57, 0xb8, 0x93, 0x74, 0x58, 0xba, 0x92, 0x74, 0x58, 0xb8, - 0x93, 0x74, 0x59, 0xba, 0x92, 0x74, 0x5a, 0xb8, 0x93, 0x74, 0x5b, 0xba, - 0x92, 0x74, 0x5c, 0xb8, 0x93, 0x74, 0x5d, 0xba, 0x92, 0x74, 0x5d, 0xb8, - 0x93, 0x74, 0x5e, 0xba, 0x92, 0x74, 0x5f, 0xb8, 0x93, 0x74, 0x60, 0xba, - 0x92, 0x74, 0x60, 0xb8, 0x93, 0x74, 0x61, 0xba, 0x92, 0x74, 0x62, 0xb8, - 0x93, 0x74, 0x63, 0xba, 0x92, 0x74, 0x63, 0xb8, 0x93, 0x74, 0x64, 0xb6, - 0x93, 0x74, 0x65, 0xb8, 0x93, 0x74, 0x66, 0xb6, 0x93, 0x74, 0x66, 0xb8, - 0x93, 0x74, 0x67, 0xb6, 0x93, 0x74, 0x68, 0xb8, 0x93, 0x74, 0x68, 0xb6, - 0x93, 0x74, 0x69, 0xb8, 0x93, 0x74, 0x6a, 0xb6, 0x93, 0x74, 0x6a, 0xb8, - 0x93, 0x74, 0x6b, 0xb6, 0x93, 0x74, 0x6c, 0xb8, 0x93, 0x74, 0x6c, 0xb6, - 0x93, 0x74, 0x6d, 0xb8, 0x93, 0x74, 0x6e, 0xb6, 0x93, 0x74, 0x6e, 0xb8, - 0x93, 0x74, 0x6f, 0xb6, 0x93, 0x74, 0x70, 0xb8, 0x93, 0x74, 0x70, 0xb6, - 0x93, 0x74, 0x71, 0xb8, 0x93, 0x74, 0x72, 0xb6, 0x93, 0x74, 0x72, 0xb8, - 0x93, 0x74, 0x73, 0xb6, 0x93, 0x74, 0x73, 0xb8, 0x93, 0x74, 0x74, 0xb6, - 0x93, 0x74, 0x75, 0xb8, 0x93, 0x74, 0x75, 0xb6, 0x93, 0x74, 0x76, 0xb8, - 0x93, 0x74, 0x76, 0xb6, 0x93, 0x74, 0x77, 0xb8, 0x93, 0x74, 0x78, 0xb6, - 0x93, 0x74, 0x78, 0xb8, 0x93, 0x74, 0x79, 0xb6, 0x93, 0x74, 0x79, 0xb8, - 0x93, 0x74, 0x7a, 0xb6, 0x93, 0x74, 0x7a, 0xb8, 0x93, 0x74, 0x7b, 0xb6, - 0x93, 0x74, 0x7c, 0xb4, 0x94, 0x74, 0x7c, 0xb6, 0x93, 0x74, 0x7d, 0xb4, - 0x94, 0x74, 0x7d, 0xb6, 0x93, 0x74, 0x7e, 0xb4, 0x94, 0x74, 0x7e, 0xb6, - 0x93, 0x74, 0x7f, 0xb4, 0x94, 0x74, 0x7f, 0xb6, 0x93, 0x74, 0x80, 0xb4, - 0x94, 0x74, 0x81, 0xb6, 0x93, 0x74, 0x81, 0xb4, 0x94, 0x74, 0x82, 0xb6, - 0x93, 0x74, 0x82, 0xb4, 0x94, 0x74, 0x83, 0xb6, 0x93, 0x74, 0x83, 0xb4, - 0x94, 0x74, 0x84, 0xb6, 0x93, 0x74, 0x84, 0xb4, 0x94, 0x74, 0x85, 0xb6, - 0x93, 0x74, 0x85, 0xb4, 0x94, 0x74, 0x86, 0xb6, 0x93, 0x74, 0x86, 0xb4, - 0x94, 0x74, 0x87, 0xb6, 0x93, 0x74, 0x87, 0xb4, 0x94, 0x74, 0x88, 0xb6, - 0x93, 0x74, 0x88, 0xb4, 0x94, 0x74, 0x89, 0xb6, 0x93, 0x74, 0x89, 0xb4, - 0x94, 0x74, 0x8a, 0xb6, 0x93, 0x74, 0x8a, 0xb4, 0x94, 0x74, 0x8b, 0xb6, - 0x93, 0x74, 0x8b, 0xb4, 0x94, 0x74, 0x8c, 0xb6, 0x93, 0x74, 0x8c, 0xb4, - 0x94, 0x74, 0x8d, 0xb4, 0x94, 0x74, 0x8d, 0xb4, 0x94, 0x74, 0x8e, 0xb4, - 0x94, 0x74, 0x8e, 0xb4, 0x94, 0x74, 0x8e, 0xb4, 0x94, 0x74, 0x8f, 0xb4, - 0x94, 0x74, 0x8f, 0xb4, 0x94, 0x74, 0x90, 0xb4, 0x94, 0x74, 0x90, 0xb4, - 0x94, 0x74, 0x91, 0xb4, 0x94, 0x74, 0x91, 0xb4, 0x94, 0x74, 0x92, 0xb4, - 0x94, 0x74, 0x92, 0xb4, 0x94, 0x74, 0x93, 0xb4, 0x94, 0x74, 0x93, 0xb4, - 0x94, 0x74, 0x94, 0xb4, 0x94, 0x73, 0x93, 0xb4, 0x94, 0x74, 0x95, 0xb4, - 0x94, 0x74, 0x96, 0xb4, 0x95, 0x74, 0x95, 0xb3, 0x95, 0x74, 0x96, 0xb4, - 0x95, 0x74, 0x96, 0xb3, 0x95, 0x74, 0x97, 0xb4, 0x95, 0x74, 0x97, 0xb3, - 0x95, 0x74, 0x98, 0xb4, 0x95, 0x74, 0x98, 0xb3, 0x95, 0x74, 0x98, 0xb4, - 0x95, 0x74, 0x99, 0xb3, 0x95, 0x74, 0x99, 0xb2, 0x96, 0x74, 0x9a, 0xb3, - 0x95, 0x74, 0x9a, 0xb2, 0x96, 0x74, 0x9a, 0xb3, 0x95, 0x74, 0x9b, 0xb2, - 0x96, 0x74, 0x9b, 0xb3, 0x95, 0x74, 0x9c, 0xb2, 0x96, 0x74, 0x9c, 0xae, - 0x9c, 0x74, 0x9d, 0xae, 0x9d, 0x74, 0x9d, 0xae, 0x9d, 0x74, 0x9d, 0xaf, - 0xa0, 0x74, 0x9e, 0xaf, 0xa0, 0x74, 0x9e, 0xaf, 0xa0, 0x74, 0x9f, 0xaf, - 0xa0, 0x74, 0x9f, 0xaf, 0xa0, 0x74, 0x9f, 0xaf, 0xa0, 0x74, 0xa0, 0xaf, - 0xa0, 0x74, 0xa0, 0xaf, 0xa0, 0x74, 0xa1, 0xaf, 0xa1, 0x74, 0xa1, 0xaf, - 0xa1, 0x74, 0xa1, 0xaf, 0xa1, 0x74, 0xa2, 0xaf, 0xa4, 0x74, 0xa2, 0xaf, - 0xa5, 0x74, 0xa3, 0xaf, 0xa4, 0x74, 0xa3, 0xaf, 0xa5, 0x74, 0xa3, 0xaf, - 0xa4, 0x74, 0xa4, 0xaf, 0xa5, 0x74, 0xa4, 0xaf, 0xa4, 0x74, 0xa5, 0xaf, - 0xa5, 0x74, 0xa5, 0xaf, 0xa5, 0x74, 0xa5, 0xaf, 0xa5, 0x74, 0xa6, 0xaf, - 0xa6, 0x74, 0xa6, 0xb0, 0xa8, 0x74, 0xa6, 0xb0, 0xa9, 0x74, 0xa7, 0xb0, - 0xa8, 0x74, 0xa7, 0xb4, 0xab, 0x74, 0xa8, 0xb5, 0xab, 0x74, 0xa8, 0xb4, - 0xab, 0x74, 0xa8, 0xb5, 0xab, 0x74, 0xa9, 0xb4, 0xab, 0x74, 0xa9, 0xb5, - 0xab, 0x74, 0xaa, 0xb4, 0xab, 0x74, 0xaa, 0xb4, 0xab, 0x74, 0xaa, 0xb4, - 0xab, 0x74, 0xab, 0xb4, 0xab, 0x74, 0xaa, 0xb4, 0xab, 0x74, 0xab, 0xb4, - 0xab, 0x74, 0xaa, 0xb4, 0xac, 0x74, 0xab, 0xb4, 0xac, 0x74, 0xab, 0xb4, - 0xac, 0x72, 0xab, 0xb4, 0xad, 0x74, 0xab, 0xb4, 0xad, 0x72, 0xab, 0xb4, - 0xae, 0x74, 0xab, 0xb4, 0xae, 0x72, 0xae, 0xb4, 0xae, 0x6f, 0xb0, 0xb4, - 0xaf, 0x70, 0xb0, 0xb4, 0xaf, 0x70, 0xb0, 0xb4, 0xaf, 0x70, 0xb0, 0xb4, - 0xb0, 0x70, 0xb0, 0xb4, 0xb0, 0x70, 0xb0, 0xb4, 0xb0, 0x70, 0xb1, 0xb4, - 0xb1, 0x70, 0xb1, 0xb4, 0xb1, 0x70, 0xb2, 0xb4, 0xb2, 0x70, 0xb2, 0xb4, - 0xb2, 0x70, 0xb2, 0xb4, 0xb2, 0x70, 0xb4, 0xb4, 0xb3, 0x71, 0xb4, 0xb4, - 0xb3, 0x71, 0xb4, 0xb4, 0xb3, 0x71, 0xb4, 0xb4, 0xb4, 0x71, 0xb4, 0xb4, - 0xb4, 0x71, 0xb4, 0xb4, 0xb4, 0x71, 0xb5, 0xb4, 0xb5, 0x71, 0xb5, 0xb4, - 0xb5, 0x71, 0xb5, 0xb4, 0xb5, 0x71, 0xb6, 0xb4, 0xb6, 0x71, 0xb6, 0xb4, - 0xb6, 0x71, 0xb8, 0xb4, 0xb6, 0x72, 0xb8, 0xb4, 0xb7, 0x72, 0xb8, 0xb4, - 0xb7, 0x72, 0xb8, 0xb4, 0xb7, 0x72, 0xb8, 0xb4, 0xb8, 0x72, 0xb8, 0xb4, - 0xb8, 0x72, 0xb8, 0xb4, 0xb8, 0x72, 0xb9, 0xb4, 0xb9, 0x72, 0xb9, 0xb4, - 0xb9, 0x72, 0xb9, 0xb4, 0xb9, 0x72, 0xba, 0xb4, 0xba, 0x72, 0xba, 0xb4, - 0xba, 0x72, 0xba, 0xb4, 0xba, 0x72, 0xbb, 0xb4, 0xbb, 0x73, 0xbc, 0xb4, - 0xbb, 0x73, 0xbb, 0xb4, 0xbb, 0x73, 0xbc, 0xb4, 0xbc, 0x73, 0xbc, 0xb4, - 0xbc, 0x73, 0xbc, 0xb4, 0xbc, 0x73, 0xbd, 0xb4, 0xbd, 0x73, 0xbd, 0xb4, - 0xbd, 0x73, 0xbd, 0xb4, 0xbd, 0x73, 0xbe, 0xb4, 0xbe, 0x73, 0xbe, 0xb4, - 0xbe, 0x73, 0xbe, 0xb4, 0xbe, 0x73, 0xbf, 0xb4, 0xbf, 0x73, 0xbf, 0xb4, - 0xbf, 0x74, 0xbf, 0xb4, 0xbf, 0x74, 0xc0, 0xb4, 0xc0, 0x74, 0xc0, 0xb4, - 0xc0, 0x74, 0xc0, 0xb4, 0xc0, 0x74, 0xc1, 0xb4, 0xc1, 0x74, 0xc1, 0xb4, - 0xc1, 0x74, 0xc1, 0xb4, 0xc1, 0x74, 0xc1, 0xb4, 0xc1, 0x74, 0xc2, 0xb4, - 0xc2, 0x74, 0xc2, 0xb4, 0xc2, 0x74, 0xc2, 0xb4, 0xc2, 0x74, 0xc3, 0xb4, - 0xc2, 0x74, 0xc3, 0xb5, 0xc3, 0x74, 0xc3, 0xb5, 0xc3, 0x74, 0xc4, 0xb5, - 0xc4, 0x74, 0xc4, 0xb5, 0xc4, 0x74, 0xc4, 0xb5, 0xc4, 0x74, 0xc5, 0xb5, - 0xc5, 0x74, 0xc5, 0xb5, 0xc5, 0x74, 0xc5, 0xb5, 0xc5, 0x74, 0xc6, 0xb5, - 0xc6, 0x74, 0xc6, 0xb5, 0xc6, 0x74, 0xc6, 0xb5, 0xc6, 0x74, 0xc6, 0xb5, - 0xc6, 0x74, 0xc7, 0xb5, 0xc6, 0x74, 0xc7, 0xb5, 0xc6, 0x74, 0xc7, 0xb6, - 0xc7, 0x74, 0xc8, 0xb6, 0xc8, 0x74, 0xc8, 0xb6, 0xc8, 0x74, 0xc8, 0xb6, - 0xc8, 0x74, 0xc9, 0xb6, 0xc9, 0x74, 0xc9, 0xb6, 0xc9, 0x74, 0xc9, 0xb6, - 0xc9, 0x74, 0xc9, 0xb6, 0xc9, 0x74, 0xca, 0xb6, 0xc9, 0x74, 0xca, 0xb6, - 0xc9, 0x74, 0xca, 0xb6, 0xc9, 0x74, 0xcb, 0xb6, 0xcb, 0x74, 0xcb, 0xb6, - 0xcb, 0x74, 0xcb, 0xb6, 0xcb, 0x74, 0xcc, 0xb6, 0xcc, 0x74, 0xcc, 0xb6, - 0xcc, 0x74, 0xcc, 0xb6, 0xcc, 0x74, 0xcc, 0xb6, 0xcc, 0x74, 0xcd, 0xb4, - 0xcf, 0x74, 0xcd, 0xb5, 0xcf, 0x74, 0xcd, 0xb4, 0xcf, 0x74, 0xce, 0xb5, - 0xcf, 0x74, 0xce, 0xb4, 0xcf, 0x74, 0xce, 0xb4, 0xcf, 0x74, 0xce, 0xb4, - 0xcf, 0x74, 0xcf, 0xb4, 0xcf, 0x74, 0xcf, 0xb4, 0xcf, 0x73, 0xcf, 0xb4, - 0xcf, 0x74, 0xcf, 0xb4, 0xd0, 0x73, 0xcf, 0xb4, 0xd0, 0x74, 0xcf, 0xb4, - 0xd0, 0x73, 0xcf, 0xb4, 0xd0, 0x74, 0xcf, 0xb4, 0xd1, 0x73, 0xcf, 0xb4, - 0xd1, 0x74, 0xcf, 0xb4, 0xd1, 0x73, 0xcf, 0xb4, 0xd2, 0x74, 0xcf, 0xb4, - 0xd2, 0x73, 0xcf, 0xb4, 0xd2, 0x74, 0xcf, 0xb4, 0xd2, 0x73, 0xcf, 0xb4, - 0xd3, 0x74, 0xcf, 0xb4, 0xd3, 0x73, 0xcf, 0xb4, 0xd3, 0x74, 0xcf, 0xb4, - 0xd4, 0x73, 0xcf, 0xb4, 0xd4, 0x70, 0xcf, 0xb4, 0xd4, 0x73, 0xcf, 0xb4, - 0xd4, 0x70, 0xcf, 0xb4, 0xd5, 0x73, 0xcf, 0xb4, 0xd5, 0x70, 0xcf, 0xb4, - 0xd5, 0x73, 0xcf, 0xb4, 0xd6, 0x70, 0xcf, 0xb4, 0xd6, 0x73, 0xcf, 0xb4, - 0xd6, 0x70, 0xcf, 0xb4, 0xd6, 0x73, 0xcf, 0xb4, 0xd7, 0x70, 0xcf, 0xb4, - 0xd7, 0x73, 0xcf, 0xb4, 0xd7, 0x70, 0xcf, 0xb4, 0xd7, 0x73, 0xcf, 0xb4, - 0xd8, 0x70, 0xcf, 0xb4, 0xd8, 0x73, 0xcf, 0xb4, 0xd8, 0x70, 0xcf, 0xb4, - 0xd9, 0x73, 0xcf, 0xb4, 0xd9, 0x70, 0xcf, 0xb4, 0xd9, 0x73, 0xcf, 0xb4, - 0xd9, 0x70, 0xcf, 0xb4, 0xda, 0x73, 0xcf, 0xb4, 0xda, 0x70, 0xcf, 0xb4, - 0xda, 0x73, 0xcf, 0xb4, 0xda, 0x70, 0xcf, 0xb4, 0xdb, 0x73, 0xcf, 0xb4, - 0xdb, 0x70, 0xcf, 0xb4, 0xdb, 0x73, 0xcf, 0xb4, 0xdb, 0x70, 0xcf, 0xb4, - 0xdc, 0x73, 0xcf, 0xb4, 0xdc, 0x70, 0xcf, 0xb4, 0xdc, 0x73, 0xcf, 0xb4, - 0xdd, 0x70, 0xd0, 0xb4, 0xdd, 0x6d, 0xcf, 0xb4, 0xdd, 0x70, 0xd0, 0xb4, - 0xdd, 0x6d, 0xeb, 0xb4, 0xde, 0x77, 0xeb, 0xb4, 0xde, 0x7b, 0xeb, 0xb4, - 0xde, 0x77, 0xeb, 0xb4, 0xde, 0x7b, 0xeb, 0xb4, 0xdf, 0x77, 0xeb, 0xb4, - 0xdf, 0x74, 0xeb, 0xb4, 0xdf, 0x77, 0xeb, 0xb4, 0xdf, 0x74, 0xeb, 0xb4, - 0xe0, 0x77, 0xeb, 0xb4, 0xe0, 0x74, 0xeb, 0xb4, 0xe0, 0x77, 0xeb, 0xb4, - 0xe1, 0x74, 0xeb, 0xb4, 0xe1, 0x77, 0xeb, 0xb4, 0xe1, 0x74, 0xeb, 0xb4, - 0xe1, 0x77, 0xeb, 0xb4, 0xe2, 0x74, 0xeb, 0xb4, 0xe2, 0x77, 0xeb, 0xb4, - 0xe2, 0x74, 0xeb, 0xb4, 0xe2, 0x77, 0xeb, 0xb4, 0xe3, 0x74, 0xeb, 0xb4, - 0xe3, 0x77, 0xeb, 0xb4, 0xe3, 0x74, 0xeb, 0xb4, 0xe3, 0x77, 0xeb, 0xb4, - 0xe4, 0x74, 0xeb, 0xb4, 0xe4, 0x77, 0xeb, 0xb4, 0xe4, 0x74, 0xeb, 0xb4, - 0xe4, 0x77, 0xeb, 0xb4, 0xe5, 0x74, 0xeb, 0xb4, 0xe5, 0x77, 0xeb, 0xb4, - 0xe5, 0x74, 0xeb, 0xb4, 0xe5, 0x77, 0xeb, 0xb4, 0xe6, 0x74, 0xeb, 0xb4, - 0xe6, 0x77, 0xeb, 0xb4, 0xe6, 0x74, 0xeb, 0xb4, 0xe6, 0x77, 0xeb, 0xb4, - 0xe7, 0x74, 0xeb, 0xb4, 0xe7, 0x77, 0xeb, 0xb4, 0xe7, 0x74, 0xeb, 0xb4, - 0xe7, 0x77, 0xeb, 0xb4, 0xe8, 0x74, 0xeb, 0xb4, 0xe8, 0x77, 0xeb, 0xb4, - 0xe8, 0x74, 0xeb, 0xb4, 0xe8, 0x77, 0xeb, 0xb4, 0xe9, 0x74, 0xeb, 0xb4, - 0xe9, 0x77, 0xeb, 0xb4, 0xe9, 0x74, 0xeb, 0xb4, 0xe9, 0x74, 0xeb, 0xb4, - 0xea, 0x74, 0xeb, 0xb4, 0xea, 0x74, 0xeb, 0xb4, 0xea, 0x74, 0xeb, 0xb4, - 0xea, 0x74, 0xeb, 0xb4, 0xeb, 0x74, 0xeb, 0xb4, 0xeb, 0x74, 0xeb, 0xb4, - 0xeb, 0x74, 0xeb, 0xb4, 0xeb, 0x74, 0xec, 0xb4, 0xeb, 0x74, 0xec, 0xb4, - 0xeb, 0x74, 0xec, 0xb2, 0xeb, 0x74, 0xec, 0xb4, 0xeb, 0x74, 0xec, 0xb2, - 0xeb, 0x74, 0xed, 0xb4, 0xeb, 0x74, 0xed, 0xb2, 0xeb, 0x74, 0xed, 0xb4, - 0xeb, 0x74, 0xed, 0xb2, 0xeb, 0x74, 0xee, 0xb4, 0xeb, 0x74, 0xee, 0xb2, - 0xeb, 0x74, 0xee, 0xb4, 0xeb, 0x74, 0xee, 0xb2, 0xeb, 0x74, 0xef, 0xb4, - 0xeb, 0x74, 0xef, 0xb2, 0xeb, 0x74, 0xef, 0xb4, 0xeb, 0x74, 0xef, 0xb2, - 0xeb, 0x74, 0xf0, 0xb4, 0xeb, 0x74, 0xf0, 0xb2, 0xeb, 0x74, 0xf0, 0xb4, - 0xeb, 0x74, 0xf0, 0xb2, 0xeb, 0x74, 0xf1, 0xb6, 0xf6, 0x74, 0xf1, 0xb4, - 0xf6, 0x74, 0xf1, 0xb6, 0xf6, 0x74, 0xf1, 0xb4, 0xf6, 0x74, 0xf2, 0xb6, - 0xf6, 0x74, 0xf2, 0xb4, 0xf6, 0x74, 0xf2, 0xb6, 0xf6, 0x74, 0xf2, 0xb4, - 0xf6, 0x74, 0xf2, 0xb4, 0xf6, 0x74, 0xf3, 0xb4, 0xf6, 0x74, 0xf3, 0xb4, - 0xf6, 0x74, 0xf3, 0xb4, 0xf6, 0x74, 0xf3, 0xb4, 0xf6, 0x74, 0xf4, 0xb4, - 0xf6, 0x74, 0xf4, 0xb4, 0xf6, 0x74, 0xf4, 0xb4, 0xf6, 0x74, 0xf4, 0xb4, - 0xf6, 0x74, 0xf5, 0xb4, 0xf6, 0x74, 0xf5, 0xb4, 0xf6, 0x74, 0xf5, 0xb4, - 0xf6, 0x74, 0xf5, 0xb4, 0xf6, 0x74, 0xf5, 0xb4, 0xf6, 0x74, 0xf6, 0xb4, - 0xf6, 0x74, 0xf6, 0xb4, 0xf6, 0x73, 0xf6, 0xb4, 0xf6, 0x74, 0xf6, 0xb4, - 0xf6, 0x73, 0xf6, 0xb4, 0xf7, 0x74, 0xf6, 0xb4, 0xf7, 0x73, 0xf6, 0xb4, - 0xf7, 0x74, 0xf6, 0xb4, 0xf7, 0x73, 0xf6, 0xb4, 0xf8, 0x74, 0xf6, 0xb4, - 0xf8, 0x73, 0xfa, 0xb4, 0xf8, 0x75, 0xfa, 0xb4, 0xf8, 0x74, 0xfa, 0xb4, - 0xf8, 0x75, 0xfa, 0xb4, 0xf9, 0x74, 0xfa, 0xb4, 0xf9, 0x75, 0xfa, 0xb4, - 0xf9, 0x74, 0xfa, 0xb4, 0xf9, 0x75, 0xfa, 0xb4, 0xfa, 0x74, 0xfa, 0xb4, - 0xfa, 0x74, 0xfa, 0xb4, 0xfa, 0x74, 0xfa, 0xb4, 0xfa, 0x74, 0xfa, 0xb4, - 0xfa, 0x74, 0xfb, 0xb4, 0xfa, 0x74, 0xfb, 0xb4, 0xfa, 0x74, 0xfb, 0xb4, - 0xfa, 0x74, 0xfb, 0xb4, 0xfa, 0x74, 0xfc, 0xb4, 0xfa, 0x74, 0xfc, 0xb2, - 0xfa, 0x74, 0xfc, 0xb4, 0xfa, 0x74, 0xfc, 0xb2, 0xfa, 0x74, 0xfc, 0xb4, - 0xfa, 0x74, 0xfd, 0xb2, 0xfa, 0x74, 0xfd, 0xb4, 0xfa, 0x74, 0xfd, 0xb2, - 0xfa, 0x74, 0xfd, 0xb4, 0xfa, 0x74, 0xfe, 0xb2, 0xfa, 0x74, 0xfe, 0xb4, - 0xfa, 0x74, 0xfe, 0xb2, 0xfa, 0x74, 0xfe, 0xb4, 0xfa, 0x74, 0xfe, 0xb2, - 0xfa, 0x74, 0xff, 0xb4, 0xfa, 0x74, 0xff, 0xb2, 0xfa, 0x74, 0x03, 0xbd, - 0x92, 0x74, 0x0a, 0xbb, 0x92, 0x74, 0x0f, 0xbd, 0x92, 0x74, 0x14, 0xbb, - 0x92, 0x74, 0x17, 0xbd, 0x92, 0x74, 0x1b, 0xbb, 0x92, 0x74, 0x1e, 0xbd, - 0x92, 0x74, 0x20, 0xbb, 0x92, 0x74, 0x23, 0xbd, 0x92, 0x74, 0x25, 0xbb, - 0x92, 0x74, 0x27, 0xbd, 0x92, 0x74, 0x29, 0xbb, 0x92, 0x74, 0x2b, 0xbd, - 0x92, 0x74, 0x2d, 0xbb, 0x92, 0x74, 0x2f, 0xbd, 0x92, 0x74, 0x31, 0xbb, - 0x92, 0x74, 0x32, 0xbd, 0x92, 0x74, 0x34, 0xbb, 0x92, 0x74, 0x35, 0xbd, - 0x92, 0x74, 0x37, 0xbb, 0x92, 0x74, 0x38, 0xbd, 0x92, 0x74, 0x3a, 0xbb, - 0x92, 0x74, 0x3b, 0xbd, 0x92, 0x74, 0x3c, 0xbb, 0x92, 0x74, 0x3e, 0xbd, - 0x92, 0x74, 0x3f, 0xbb, 0x92, 0x74, 0x40, 0xbd, 0x92, 0x74, 0x42, 0xbb, - 0x92, 0x74, 0x43, 0xb9, 0x93, 0x74, 0x44, 0xbb, 0x92, 0x74, 0x45, 0xb9, - 0x93, 0x74, 0x46, 0xbb, 0x92, 0x74, 0x47, 0xb9, 0x93, 0x74, 0x48, 0xbb, - 0x92, 0x74, 0x49, 0xb9, 0x93, 0x74, 0x4a, 0xbb, 0x92, 0x74, 0x4b, 0xb9, - 0x93, 0x74, 0x4c, 0xbb, 0x92, 0x74, 0x4d, 0xb9, 0x93, 0x74, 0x4e, 0xbb, - 0x92, 0x74, 0x4f, 0xb9, 0x93, 0x74, 0x50, 0xbb, 0x92, 0x74, 0x51, 0xb9, - 0x93, 0x74, 0x52, 0xbb, 0x92, 0x74, 0x53, 0xb9, 0x93, 0x74, 0x54, 0xbb, - 0x92, 0x74, 0x55, 0xb9, 0x93, 0x74, 0x56, 0xbb, 0x92, 0x74, 0x57, 0xb9, - 0x93, 0x74, 0x58, 0xbb, 0x92, 0x74, 0x58, 0xb9, 0x93, 0x74, 0x59, 0xbb, - 0x92, 0x74, 0x5a, 0xb9, 0x93, 0x74, 0x5b, 0xbb, 0x92, 0x74, 0x5c, 0xb9, - 0x93, 0x74, 0x5d, 0xbb, 0x92, 0x74, 0x5d, 0xb9, 0x93, 0x74, 0x5e, 0xb6, - 0x93, 0x74, 0x5f, 0xb9, 0x93, 0x74, 0x60, 0xb6, 0x93, 0x74, 0x60, 0xb9, - 0x93, 0x74, 0x61, 0xb6, 0x93, 0x74, 0x62, 0xb9, 0x93, 0x74, 0x63, 0xb6, - 0x93, 0x74, 0x63, 0xb9, 0x93, 0x74, 0x64, 0xb6, 0x93, 0x74, 0x65, 0xb9, - 0x93, 0x74, 0x66, 0xb6, 0x93, 0x74, 0x66, 0xb9, 0x93, 0x74, 0x67, 0xb6, - 0x93, 0x74, 0x68, 0xb9, 0x93, 0x74, 0x68, 0xb6, 0x93, 0x74, 0x69, 0xb9, - 0x93, 0x74, 0x6a, 0xb6, 0x93, 0x74, 0x6a, 0xb9, 0x93, 0x74, 0x6b, 0xb6, - 0x93, 0x74, 0x6c, 0xb9, 0x93, 0x74, 0x6c, 0xb6, 0x93, 0x74, 0x6d, 0xb9, - 0x93, 0x74, 0x6e, 0xb6, 0x93, 0x74, 0x6e, 0xb9, 0x93, 0x74, 0x6f, 0xb6, - 0x93, 0x74, 0x70, 0xb9, 0x93, 0x74, 0x70, 0xb6, 0x93, 0x74, 0x71, 0xb9, - 0x93, 0x74, 0x72, 0xb6, 0x93, 0x74, 0x72, 0xb9, 0x93, 0x74, 0x73, 0xb6, - 0x93, 0x74, 0x73, 0xb9, 0x93, 0x74, 0x74, 0xb6, 0x93, 0x74, 0x75, 0xb9, - 0x93, 0x74, 0x75, 0xb6, 0x93, 0x74, 0x76, 0xb9, 0x93, 0x74, 0x76, 0xb6, - 0x93, 0x74, 0x77, 0xb9, 0x93, 0x74, 0x78, 0xb6, 0x93, 0x74, 0x78, 0xb9, - 0x93, 0x74, 0x79, 0xb6, 0x93, 0x74, 0x79, 0xb9, 0x93, 0x74, 0x7a, 0xb6, - 0x93, 0x74, 0x7a, 0xb9, 0x93, 0x74, 0x7b, 0xb6, 0x93, 0x74, 0x7c, 0xb4, - 0x94, 0x74, 0x7c, 0xb6, 0x93, 0x74, 0x7d, 0xb4, 0x94, 0x74, 0x7d, 0xb6, - 0x93, 0x74, 0x7e, 0xb4, 0x94, 0x74, 0x7e, 0xb6, 0x93, 0x74, 0x7f, 0xb4, - 0x94, 0x74, 0x7f, 0xb6, 0x93, 0x74, 0x80, 0xb4, 0x94, 0x74, 0x81, 0xb6, - 0x93, 0x74, 0x81, 0xb4, 0x94, 0x74, 0x82, 0xb6, 0x93, 0x74, 0x82, 0xb4, - 0x94, 0x74, 0x83, 0xb6, 0x93, 0x74, 0x83, 0xb4, 0x94, 0x74, 0x84, 0xb6, - 0x93, 0x74, 0x84, 0xb4, 0x94, 0x74, 0x85, 0xb6, 0x93, 0x74, 0x85, 0xb4, - 0x94, 0x74, 0x86, 0xb6, 0x93, 0x74, 0x86, 0xb4, 0x94, 0x74, 0x87, 0xb6, - 0x93, 0x74, 0x87, 0xb4, 0x94, 0x74, 0x88, 0xb6, 0x93, 0x74, 0x88, 0xb4, - 0x94, 0x74, 0x89, 0xb6, 0x93, 0x74, 0x89, 0xb4, 0x94, 0x74, 0x8a, 0xb6, - 0x93, 0x74, 0x8a, 0xb4, 0x94, 0x74, 0x8b, 0xb6, 0x93, 0x74, 0x8b, 0xb4, - 0x94, 0x74, 0x8c, 0xb6, 0x93, 0x74, 0x8c, 0xb4, 0x94, 0x74, 0x8d, 0xb6, - 0x93, 0x74, 0x8d, 0xb4, 0x94, 0x74, 0x8e, 0xb6, 0x93, 0x74, 0x8e, 0xb4, - 0x94, 0x74, 0x8e, 0xb6, 0x93, 0x74, 0x8f, 0xb4, 0x94, 0x74, 0x8f, 0xb6, - 0x93, 0x74, 0x90, 0xb4, 0x94, 0x74, 0x90, 0xb4, 0x94, 0x74, 0x91, 0xb4, - 0x94, 0x74, 0x91, 0xb4, 0x94, 0x74, 0x92, 0xb4, 0x94, 0x74, 0x92, 0xb4, - 0x94, 0x74, 0x93, 0xb4, 0x94, 0x74, 0x93, 0xb4, 0x94, 0x74, 0x94, 0xb4, - 0x94, 0x73, 0x93, 0xb4, 0x94, 0x74, 0x95, 0xb4, 0x94, 0x74, 0x96, 0xb4, - 0x95, 0x74, 0x95, 0xb3, 0x95, 0x74, 0x96, 0xb4, 0x95, 0x74, 0x96, 0xb3, - 0x95, 0x74, 0x97, 0xb4, 0x95, 0x74, 0x97, 0xb3, 0x95, 0x74, 0x98, 0xb4, - 0x95, 0x74, 0x98, 0xb3, 0x95, 0x74, 0x98, 0xb4, 0x95, 0x74, 0x99, 0xb3, - 0x95, 0x74, 0x99, 0xb4, 0x95, 0x74, 0x9a, 0xb3, 0x95, 0x74, 0x9a, 0xb4, - 0x95, 0x74, 0x9a, 0xb3, 0x95, 0x74, 0x9b, 0xb4, 0x95, 0x74, 0x9b, 0xb3, - 0x95, 0x74, 0x9c, 0xb9, 0x9c, 0x74, 0x9c, 0xb9, 0x9c, 0x74, 0x9d, 0xb9, - 0x9d, 0x74, 0x9d, 0xb9, 0x9d, 0x74, 0x9d, 0xae, 0x9d, 0x74, 0x9e, 0xae, - 0x9e, 0x74, 0x9e, 0xae, 0x9e, 0x74, 0x9f, 0xae, 0x9f, 0x74, 0x9f, 0xae, - 0x9f, 0x74, 0x9f, 0xaf, 0xa2, 0x74, 0xa0, 0xaf, 0xa2, 0x74, 0xa0, 0xaf, - 0xa2, 0x74, 0xa1, 0xaf, 0xa2, 0x74, 0xa1, 0xaf, 0xa2, 0x74, 0xa1, 0xaf, - 0xa2, 0x74, 0xa2, 0xaf, 0xa2, 0x74, 0xa2, 0xaf, 0xa2, 0x74, 0xa3, 0xaf, - 0xa3, 0x74, 0xa3, 0xaf, 0xa3, 0x74, 0xa3, 0xaf, 0xa3, 0x74, 0xa4, 0xb0, - 0xa6, 0x74, 0xa4, 0xb0, 0xa6, 0x74, 0xa5, 0xb0, 0xa6, 0x74, 0xa5, 0xb0, - 0xa6, 0x74, 0xa5, 0xb0, 0xa6, 0x74, 0xa6, 0xb0, 0xa6, 0x74, 0xa6, 0xb0, - 0xa6, 0x74, 0xa6, 0xb0, 0xa6, 0x74, 0xa7, 0xb5, 0xab, 0x74, 0xa7, 0xb4, - 0xab, 0x74, 0xa8, 0xb5, 0xab, 0x74, 0xa8, 0xb4, 0xab, 0x74, 0xa8, 0xb5, - 0xab, 0x74, 0xa9, 0xb4, 0xab, 0x74, 0xa9, 0xb5, 0xab, 0x74, 0xaa, 0xb4, - 0xab, 0x74, 0xaa, 0xb4, 0xab, 0x74, 0xaa, 0xb4, 0xab, 0x74, 0xab, 0xb4, - 0xab, 0x74, 0xaa, 0xb4, 0xab, 0x74, 0xab, 0xb4, 0xab, 0x74, 0xaa, 0xb4, - 0xac, 0x74, 0xab, 0xb4, 0xac, 0x74, 0xab, 0xb4, 0xac, 0x72, 0xab, 0xb4, - 0xad, 0x74, 0xab, 0xb4, 0xad, 0x72, 0xab, 0xb4, 0xae, 0x74, 0xab, 0xb4, - 0xae, 0x72, 0xae, 0xb4, 0xae, 0x6f, 0xaf, 0xb4, 0xaf, 0x6f, 0xaf, 0xb4, - 0xaf, 0x6f, 0xaf, 0xb4, 0xaf, 0x6f, 0xb0, 0xb4, 0xb0, 0x6f, 0xb0, 0xb4, - 0xb0, 0x6f, 0xb2, 0xb4, 0xb0, 0x70, 0xb2, 0xb4, 0xb1, 0x70, 0xb2, 0xb4, - 0xb1, 0x70, 0xb2, 0xb4, 0xb2, 0x70, 0xb2, 0xb4, 0xb2, 0x70, 0xb2, 0xb4, - 0xb2, 0x70, 0xb3, 0xb4, 0xb3, 0x70, 0xb3, 0xb4, 0xb3, 0x70, 0xb3, 0xb4, - 0xb3, 0x70, 0xb4, 0xb4, 0xb4, 0x70, 0xb4, 0xb4, 0xb4, 0x70, 0xb6, 0xb4, - 0xb4, 0x71, 0xb6, 0xb4, 0xb5, 0x71, 0xb6, 0xb4, 0xb5, 0x71, 0xb6, 0xb4, - 0xb5, 0x71, 0xb6, 0xb4, 0xb6, 0x71, 0xb6, 0xb4, 0xb6, 0x71, 0xb6, 0xb4, - 0xb6, 0x71, 0xb7, 0xb4, 0xb7, 0x71, 0xb7, 0xb4, 0xb7, 0x71, 0xb7, 0xb4, - 0xb7, 0x71, 0xb8, 0xb4, 0xb8, 0x71, 0xb8, 0xb4, 0xb8, 0x71, 0xba, 0xb4, - 0xb8, 0x72, 0xba, 0xb4, 0xb9, 0x72, 0xba, 0xb4, 0xb9, 0x72, 0xba, 0xb4, - 0xb9, 0x72, 0xba, 0xb4, 0xba, 0x72, 0xba, 0xb4, 0xba, 0x72, 0xba, 0xb4, - 0xba, 0x72, 0xbb, 0xb4, 0xbb, 0x72, 0xbb, 0xb4, 0xbb, 0x72, 0xbb, 0xb4, - 0xbb, 0x72, 0xbc, 0xb4, 0xbc, 0x72, 0xbc, 0xb4, 0xbc, 0x72, 0xbc, 0xb4, - 0xbc, 0x72, 0xbd, 0xb4, 0xbd, 0x73, 0xbe, 0xb4, 0xbd, 0x73, 0xbd, 0xb4, - 0xbd, 0x73, 0xbe, 0xb4, 0xbe, 0x73, 0xbe, 0xb4, 0xbe, 0x73, 0xbe, 0xb4, - 0xbe, 0x73, 0xbf, 0xb4, 0xbf, 0x73, 0xbf, 0xb4, 0xbf, 0x73, 0xbf, 0xb4, - 0xbf, 0x73, 0xc0, 0xb4, 0xc0, 0x73, 0xc0, 0xb4, 0xc0, 0x73, 0xc0, 0xb4, - 0xc0, 0x73, 0xc1, 0xb4, 0xc1, 0x73, 0xc1, 0xb5, 0xc1, 0x74, 0xc1, 0xb5, - 0xc1, 0x74, 0xc1, 0xb5, 0xc1, 0x74, 0xc2, 0xb5, 0xc2, 0x74, 0xc2, 0xb5, - 0xc2, 0x74, 0xc2, 0xb5, 0xc2, 0x74, 0xc3, 0xb5, 0xc3, 0x74, 0xc3, 0xb5, - 0xc3, 0x74, 0xc3, 0xb5, 0xc3, 0x74, 0xc4, 0xb5, 0xc4, 0x74, 0xc4, 0xb5, - 0xc4, 0x74, 0xc4, 0xb5, 0xc4, 0x74, 0xc5, 0xb5, 0xc4, 0x74, 0xc5, 0xb5, - 0xc5, 0x74, 0xc5, 0xb5, 0xc5, 0x74, 0xc6, 0xb5, 0xc6, 0x74, 0xc6, 0xb5, - 0xc6, 0x74, 0xc6, 0xb5, 0xc6, 0x74, 0xc6, 0xb5, 0xc6, 0x74, 0xc7, 0xb5, - 0xc7, 0x74, 0xc7, 0xb5, 0xc7, 0x74, 0xc7, 0xb5, 0xc7, 0x74, 0xc8, 0xb5, - 0xc7, 0x74, 0xc8, 0xb5, 0xc7, 0x74, 0xc8, 0xb5, 0xc7, 0x74, 0xc9, 0xb5, - 0xc7, 0x74, 0xc9, 0xb6, 0xc9, 0x74, 0xc9, 0xb6, 0xc9, 0x74, 0xc9, 0xb6, - 0xc9, 0x74, 0xca, 0xb6, 0xca, 0x74, 0xca, 0xb6, 0xca, 0x74, 0xca, 0xb6, - 0xca, 0x74, 0xcb, 0xb6, 0xcb, 0x74, 0xcb, 0xb6, 0xca, 0x74, 0xcb, 0xb6, - 0xcb, 0x74, 0xcc, 0xb6, 0xca, 0x74, 0xcc, 0xb6, 0xcb, 0x74, 0xcc, 0xb7, - 0xcc, 0x74, 0xcc, 0xb7, 0xcc, 0x74, 0xcd, 0xb7, 0xcd, 0x74, 0xcd, 0xb5, - 0xcf, 0x74, 0xcd, 0xb4, 0xcf, 0x74, 0xce, 0xb5, 0xcf, 0x74, 0xce, 0xb4, - 0xcf, 0x74, 0xce, 0xb4, 0xcf, 0x74, 0xce, 0xb4, 0xcf, 0x74, 0xcf, 0xb4, - 0xcf, 0x74, 0xce, 0xb4, 0xcf, 0x74, 0xcf, 0xb4, 0xcf, 0x74, 0xce, 0xb4, - 0xd0, 0x74, 0xcf, 0xb4, 0xd0, 0x74, 0xcf, 0xb4, 0xd0, 0x72, 0xcf, 0xb4, - 0xd0, 0x74, 0xcf, 0xb4, 0xd1, 0x72, 0xcf, 0xb4, 0xd1, 0x74, 0xcf, 0xb4, - 0xd1, 0x72, 0xcf, 0xb4, 0xd2, 0x74, 0xcf, 0xb4, 0xd2, 0x72, 0xcf, 0xb4, - 0xd2, 0x74, 0xcf, 0xb4, 0xd2, 0x72, 0xcf, 0xb4, 0xd3, 0x74, 0xcf, 0xb4, - 0xd3, 0x72, 0xcf, 0xb4, 0xd3, 0x74, 0xcf, 0xb4, 0xd4, 0x72, 0xcf, 0xb4, - 0xd4, 0x74, 0xcf, 0xb4, 0xd4, 0x72, 0xcf, 0xb4, 0xd4, 0x74, 0xcf, 0xb4, - 0xd5, 0x72, 0xcf, 0xb4, 0xd5, 0x74, 0xcf, 0xb4, 0xd5, 0x72, 0xcf, 0xb4, - 0xd6, 0x74, 0xcf, 0xb4, 0xd6, 0x72, 0xcf, 0xb4, 0xd6, 0x6f, 0xcf, 0xb4, - 0xd6, 0x72, 0xcf, 0xb4, 0xd7, 0x6f, 0xcf, 0xb4, 0xd7, 0x72, 0xcf, 0xb4, - 0xd7, 0x6f, 0xcf, 0xb4, 0xd7, 0x72, 0xcf, 0xb4, 0xd8, 0x6f, 0xcf, 0xb4, - 0xd8, 0x72, 0xcf, 0xb4, 0xd8, 0x6f, 0xcf, 0xb4, 0xd9, 0x72, 0xcf, 0xb4, - 0xd9, 0x6f, 0xcf, 0xb4, 0xd9, 0x72, 0xcf, 0xb4, 0xd9, 0x6f, 0xcf, 0xb4, - 0xda, 0x72, 0xcf, 0xb4, 0xda, 0x6f, 0xcf, 0xb4, 0xda, 0x72, 0xcf, 0xb4, - 0xda, 0x6f, 0xcf, 0xb4, 0xdb, 0x72, 0xcf, 0xb4, 0xdb, 0x6f, 0xcf, 0xb4, - 0xdb, 0x72, 0xcf, 0xb4, 0xdb, 0x6f, 0xcf, 0xb4, 0xdc, 0x72, 0xcf, 0xb4, - 0xdc, 0x6f, 0xcf, 0xb4, 0xdc, 0x72, 0xcf, 0xb4, 0xdd, 0x6f, 0xcf, 0xb4, - 0xdd, 0x72, 0xcf, 0xb4, 0xdd, 0x6f, 0xcf, 0xb4, 0xdd, 0x72, 0xeb, 0xb4, - 0xde, 0x76, 0xeb, 0xb4, 0xde, 0x7a, 0xeb, 0xb4, 0xde, 0x76, 0xeb, 0xb4, - 0xde, 0x7a, 0xeb, 0xb4, 0xdf, 0x76, 0xeb, 0xb4, 0xdf, 0x7a, 0xeb, 0xb4, - 0xdf, 0x76, 0xeb, 0xb4, 0xdf, 0x7a, 0xeb, 0xb4, 0xe0, 0x76, 0xeb, 0xb4, - 0xe0, 0x7a, 0xeb, 0xb4, 0xe0, 0x76, 0xeb, 0xb4, 0xe1, 0x7a, 0xeb, 0xb4, - 0xe1, 0x76, 0xeb, 0xb4, 0xe1, 0x7a, 0xeb, 0xb4, 0xe1, 0x76, 0xeb, 0xb4, - 0xe2, 0x7a, 0xeb, 0xb4, 0xe2, 0x76, 0xeb, 0xb4, 0xe2, 0x74, 0xeb, 0xb4, - 0xe2, 0x76, 0xeb, 0xb4, 0xe3, 0x74, 0xeb, 0xb4, 0xe3, 0x76, 0xeb, 0xb4, - 0xe3, 0x74, 0xeb, 0xb4, 0xe3, 0x76, 0xeb, 0xb4, 0xe4, 0x74, 0xeb, 0xb4, - 0xe4, 0x76, 0xeb, 0xb4, 0xe4, 0x74, 0xeb, 0xb4, 0xe4, 0x76, 0xeb, 0xb4, - 0xe5, 0x74, 0xeb, 0xb4, 0xe5, 0x76, 0xeb, 0xb4, 0xe5, 0x74, 0xeb, 0xb4, - 0xe5, 0x76, 0xeb, 0xb4, 0xe6, 0x74, 0xeb, 0xb4, 0xe6, 0x76, 0xeb, 0xb4, - 0xe6, 0x74, 0xeb, 0xb4, 0xe6, 0x76, 0xeb, 0xb4, 0xe7, 0x74, 0xeb, 0xb4, - 0xe7, 0x76, 0xeb, 0xb4, 0xe7, 0x74, 0xeb, 0xb4, 0xe7, 0x76, 0xeb, 0xb4, - 0xe8, 0x74, 0xeb, 0xb4, 0xe8, 0x76, 0xeb, 0xb4, 0xe8, 0x74, 0xeb, 0xb4, - 0xe8, 0x76, 0xeb, 0xb4, 0xe9, 0x74, 0xeb, 0xb4, 0xe9, 0x76, 0xeb, 0xb4, - 0xe9, 0x74, 0xeb, 0xb4, 0xe9, 0x76, 0xeb, 0xb4, 0xea, 0x74, 0xeb, 0xb4, - 0xea, 0x76, 0xeb, 0xb4, 0xea, 0x74, 0xeb, 0xb4, 0xea, 0x74, 0xeb, 0xb4, - 0xeb, 0x74, 0xeb, 0xb4, 0xeb, 0x74, 0xeb, 0xb4, 0xeb, 0x74, 0xeb, 0xb4, - 0xeb, 0x74, 0xec, 0xb4, 0xeb, 0x74, 0xec, 0xb4, 0xeb, 0x74, 0xec, 0xb4, - 0xeb, 0x74, 0xec, 0xb4, 0xeb, 0x74, 0xec, 0xb4, 0xeb, 0x74, 0xed, 0xb4, - 0xeb, 0x74, 0xed, 0xb2, 0xeb, 0x74, 0xed, 0xb4, 0xeb, 0x74, 0xed, 0xb2, - 0xeb, 0x74, 0xee, 0xb4, 0xeb, 0x74, 0xee, 0xb2, 0xeb, 0x74, 0xee, 0xb4, - 0xeb, 0x74, 0xee, 0xb2, 0xeb, 0x74, 0xef, 0xb4, 0xeb, 0x74, 0xef, 0xb2, - 0xeb, 0x74, 0xef, 0xb4, 0xeb, 0x74, 0xef, 0xb2, 0xeb, 0x74, 0xf0, 0xb4, - 0xeb, 0x74, 0xf0, 0xb2, 0xeb, 0x74, 0xf0, 0xb4, 0xeb, 0x74, 0xf0, 0xb2, - 0xeb, 0x74, 0xf1, 0xb7, 0xf6, 0x74, 0xf1, 0xb4, 0xf6, 0x74, 0xf1, 0xb7, - 0xf6, 0x74, 0xf1, 0xb4, 0xf6, 0x74, 0xf2, 0xb7, 0xf6, 0x74, 0xf2, 0xb4, - 0xf6, 0x74, 0xf2, 0xb7, 0xf6, 0x74, 0xf2, 0xb4, 0xf6, 0x74, 0xf2, 0xb4, - 0xf6, 0x74, 0xf3, 0xb4, 0xf6, 0x74, 0xf3, 0xb4, 0xf6, 0x74, 0xf3, 0xb4, - 0xf6, 0x74, 0xf3, 0xb4, 0xf6, 0x74, 0xf4, 0xb4, 0xf6, 0x74, 0xf4, 0xb4, - 0xf6, 0x74, 0xf4, 0xb4, 0xf6, 0x74, 0xf4, 0xb4, 0xf6, 0x74, 0xf5, 0xb4, - 0xf6, 0x74, 0xf5, 0xb4, 0xf6, 0x74, 0xf5, 0xb4, 0xf6, 0x74, 0xf5, 0xb4, - 0xf6, 0x74, 0xf5, 0xb4, 0xf6, 0x74, 0xf6, 0xb4, 0xf6, 0x74, 0xf6, 0xb4, - 0xf6, 0x73, 0xf6, 0xb4, 0xf6, 0x74, 0xf6, 0xb4, 0xf6, 0x73, 0xf6, 0xb4, - 0xf7, 0x74, 0xf6, 0xb4, 0xf7, 0x73, 0xf6, 0xb4, 0xf7, 0x74, 0xf6, 0xb4, - 0xf7, 0x73, 0xf6, 0xb4, 0xf8, 0x74, 0xf6, 0xb4, 0xf8, 0x73, 0xfa, 0xb4, - 0xf8, 0x75, 0xfa, 0xb4, 0xf8, 0x74, 0xfa, 0xb4, 0xf8, 0x75, 0xfa, 0xb4, - 0xf9, 0x74, 0xfa, 0xb4, 0xf9, 0x75, 0xfa, 0xb4, 0xf9, 0x74, 0xfa, 0xb4, - 0xf9, 0x75, 0xfa, 0xb4, 0xfa, 0x74, 0xfa, 0xb4, 0xfa, 0x74, 0xfa, 0xb4, - 0xfa, 0x74, 0xfa, 0xb4, 0xfa, 0x74, 0xfa, 0xb4, 0xfa, 0x74, 0xfb, 0xb4, - 0xfa, 0x74, 0xfb, 0xb4, 0xfa, 0x74, 0xfb, 0xb4, 0xfa, 0x74, 0xfb, 0xb4, - 0xfa, 0x74, 0xfc, 0xb4, 0xfa, 0x74, 0xfc, 0xb2, 0xfa, 0x74, 0xfc, 0xb4, - 0xfa, 0x74, 0xfc, 0xb2, 0xfa, 0x74, 0xfc, 0xb4, 0xfa, 0x74, 0xfd, 0xb2, - 0xfa, 0x74, 0xfd, 0xb4, 0xfa, 0x74, 0xfd, 0xb2, 0xfa, 0x74, 0xfd, 0xb4, - 0xfa, 0x74, 0xfe, 0xb2, 0xfa, 0x74, 0xfe, 0xb4, 0xfa, 0x74, 0xfe, 0xb2, - 0xfa, 0x74, 0xfe, 0xb4, 0xfa, 0x74, 0xfe, 0xb2, 0xfa, 0x74, 0xff, 0xb4, - 0xfa, 0x74, 0xff, 0xb2, 0xfa, 0x74, 0x03, 0xbd, 0x92, 0x75, 0x0a, 0xba, - 0x92, 0x75, 0x0f, 0xbd, 0x92, 0x75, 0x14, 0xba, 0x92, 0x75, 0x17, 0xbd, - 0x92, 0x75, 0x1b, 0xba, 0x92, 0x75, 0x1e, 0xbd, 0x92, 0x75, 0x20, 0xba, - 0x92, 0x75, 0x23, 0xbd, 0x92, 0x75, 0x25, 0xba, 0x92, 0x75, 0x27, 0xbd, - 0x92, 0x75, 0x29, 0xba, 0x92, 0x75, 0x2b, 0xbd, 0x92, 0x75, 0x2d, 0xba, - 0x92, 0x75, 0x2f, 0xbd, 0x92, 0x75, 0x31, 0xba, 0x92, 0x75, 0x32, 0xb8, - 0x93, 0x75, 0x34, 0xba, 0x92, 0x75, 0x35, 0xb8, 0x93, 0x75, 0x37, 0xba, - 0x92, 0x75, 0x38, 0xb8, 0x93, 0x75, 0x3a, 0xba, 0x92, 0x75, 0x3b, 0xb8, - 0x93, 0x75, 0x3c, 0xba, 0x92, 0x75, 0x3e, 0xb8, 0x93, 0x75, 0x3f, 0xba, - 0x92, 0x75, 0x40, 0xb8, 0x93, 0x75, 0x42, 0xba, 0x92, 0x75, 0x43, 0xb8, - 0x93, 0x75, 0x44, 0xba, 0x92, 0x75, 0x45, 0xb8, 0x93, 0x75, 0x46, 0xba, - 0x92, 0x75, 0x47, 0xb8, 0x93, 0x75, 0x48, 0xba, 0x92, 0x75, 0x49, 0xb8, - 0x93, 0x75, 0x4a, 0xba, 0x92, 0x75, 0x4b, 0xb8, 0x93, 0x75, 0x4c, 0xba, - 0x92, 0x75, 0x4d, 0xb8, 0x93, 0x75, 0x4e, 0xba, 0x92, 0x75, 0x4f, 0xb8, - 0x93, 0x75, 0x50, 0xba, 0x92, 0x75, 0x51, 0xb8, 0x93, 0x75, 0x52, 0xba, - 0x92, 0x75, 0x53, 0xb8, 0x93, 0x75, 0x54, 0xba, 0x92, 0x75, 0x55, 0xb8, - 0x93, 0x75, 0x56, 0xba, 0x92, 0x75, 0x57, 0xb8, 0x93, 0x75, 0x58, 0xba, - 0x92, 0x75, 0x58, 0xb8, 0x93, 0x75, 0x59, 0xba, 0x92, 0x75, 0x5a, 0xb8, - 0x93, 0x75, 0x5b, 0xba, 0x92, 0x75, 0x5c, 0xb8, 0x93, 0x75, 0x5d, 0xba, - 0x92, 0x75, 0x5d, 0xb8, 0x93, 0x75, 0x5e, 0xba, 0x92, 0x75, 0x5f, 0xb8, - 0x93, 0x75, 0x60, 0xba, 0x92, 0x75, 0x60, 0xb8, 0x93, 0x75, 0x61, 0xba, - 0x92, 0x75, 0x62, 0xb8, 0x93, 0x75, 0x63, 0xba, 0x92, 0x75, 0x63, 0xb8, - 0x93, 0x75, 0x64, 0xba, 0x92, 0x75, 0x65, 0xb8, 0x93, 0x75, 0x66, 0xba, - 0x92, 0x75, 0x66, 0xb8, 0x93, 0x75, 0x67, 0xba, 0x92, 0x75, 0x68, 0xb8, - 0x93, 0x75, 0x68, 0xba, 0x92, 0x75, 0x69, 0xb8, 0x93, 0x75, 0x6a, 0xba, - 0x92, 0x75, 0x6a, 0xb8, 0x93, 0x75, 0x6b, 0xba, 0x92, 0x75, 0x6c, 0xb8, - 0x93, 0x75, 0x6c, 0xb6, 0x93, 0x75, 0x6d, 0xb8, 0x93, 0x75, 0x6e, 0xb6, - 0x93, 0x75, 0x6e, 0xb8, 0x93, 0x75, 0x6f, 0xb6, 0x93, 0x75, 0x70, 0xb8, - 0x93, 0x75, 0x70, 0xb6, 0x93, 0x75, 0x71, 0xb8, 0x93, 0x75, 0x72, 0xb6, - 0x93, 0x75, 0x72, 0xb8, 0x93, 0x75, 0x73, 0xb6, 0x93, 0x75, 0x73, 0xb8, - 0x93, 0x75, 0x74, 0xb6, 0x93, 0x75, 0x75, 0xb8, 0x93, 0x75, 0x75, 0xb6, - 0x93, 0x75, 0x76, 0xb8, 0x93, 0x75, 0x76, 0xb6, 0x93, 0x75, 0x77, 0xb8, - 0x93, 0x75, 0x78, 0xb6, 0x93, 0x75, 0x78, 0xb8, 0x93, 0x75, 0x79, 0xb6, - 0x93, 0x75, 0x79, 0xb8, 0x93, 0x75, 0x7a, 0xb6, 0x93, 0x75, 0x7a, 0xb8, - 0x93, 0x75, 0x7b, 0xb6, 0x93, 0x75, 0x7c, 0xb8, 0x93, 0x75, 0x7c, 0xb6, - 0x93, 0x75, 0x7d, 0xb8, 0x93, 0x75, 0x7d, 0xb6, 0x93, 0x75, 0x7e, 0xb8, - 0x93, 0x75, 0x7e, 0xb6, 0x93, 0x75, 0x7f, 0xb8, 0x93, 0x75, 0x7f, 0xb6, - 0x93, 0x75, 0x80, 0xb8, 0x93, 0x75, 0x81, 0xb6, 0x93, 0x75, 0x81, 0xb8, - 0x93, 0x75, 0x82, 0xb6, 0x93, 0x75, 0x82, 0xb4, 0x94, 0x75, 0x83, 0xb6, - 0x93, 0x75, 0x83, 0xb4, 0x94, 0x75, 0x84, 0xb6, 0x93, 0x75, 0x84, 0xb4, - 0x94, 0x75, 0x85, 0xb6, 0x93, 0x75, 0x85, 0xb4, 0x94, 0x75, 0x86, 0xb6, - 0x93, 0x75, 0x86, 0xb4, 0x94, 0x75, 0x87, 0xb6, 0x93, 0x75, 0x87, 0xb4, - 0x94, 0x75, 0x88, 0xb6, 0x93, 0x75, 0x88, 0xb4, 0x94, 0x75, 0x89, 0xb6, - 0x93, 0x75, 0x89, 0xb4, 0x94, 0x75, 0x8a, 0xb6, 0x93, 0x75, 0x8a, 0xb4, - 0x94, 0x75, 0x8b, 0xb6, 0x93, 0x75, 0x8b, 0xb4, 0x94, 0x75, 0x8c, 0xb6, - 0x93, 0x75, 0x8c, 0xb4, 0x94, 0x75, 0x8d, 0xb6, 0x93, 0x75, 0x8d, 0xb4, - 0x94, 0x75, 0x8e, 0xb6, 0x93, 0x75, 0x8e, 0xb4, 0x94, 0x75, 0x8e, 0xb6, - 0x93, 0x75, 0x8f, 0xb4, 0x94, 0x75, 0x8f, 0xb6, 0x93, 0x75, 0x90, 0xb4, - 0x94, 0x75, 0x90, 0xb4, 0x94, 0x75, 0x91, 0xb4, 0x94, 0x75, 0x91, 0xb4, - 0x94, 0x75, 0x92, 0xb4, 0x94, 0x75, 0x92, 0xb4, 0x94, 0x75, 0x93, 0xb4, - 0x94, 0x75, 0x93, 0xb4, 0x94, 0x75, 0x93, 0xb4, 0x94, 0x75, 0x93, 0xb4, - 0x94, 0x75, 0x95, 0xb4, 0x94, 0x75, 0x96, 0xb4, 0x95, 0x75, 0x95, 0xb4, - 0x94, 0x75, 0x96, 0xb4, 0x95, 0x75, 0x96, 0xb4, 0x94, 0x75, 0x97, 0xb4, - 0x95, 0x75, 0x97, 0xb3, 0x95, 0x75, 0x98, 0xb4, 0x95, 0x75, 0x98, 0xb3, - 0x95, 0x75, 0x98, 0xb4, 0x95, 0x75, 0x99, 0xb3, 0x95, 0x75, 0x99, 0xb4, - 0x95, 0x75, 0x9a, 0xb3, 0x95, 0x75, 0x9a, 0xb4, 0x95, 0x75, 0x9a, 0xb3, - 0x95, 0x75, 0x9b, 0xb4, 0x95, 0x75, 0x9b, 0xb9, 0x9a, 0x75, 0x9c, 0xb9, - 0x9a, 0x75, 0x9c, 0xb9, 0x9a, 0x75, 0x9d, 0xb9, 0x9a, 0x75, 0x9d, 0xb9, - 0x9a, 0x75, 0x9d, 0xba, 0x9d, 0x75, 0x9e, 0xba, 0x9e, 0x75, 0x9e, 0xba, - 0x9e, 0x75, 0x9f, 0xba, 0x9f, 0x75, 0x9f, 0xba, 0x9f, 0x75, 0x9f, 0xba, - 0x9f, 0x75, 0xa0, 0xaf, 0xa0, 0x75, 0xa0, 0xaf, 0xa0, 0x75, 0xa1, 0xaf, - 0xa1, 0x75, 0xa1, 0xaf, 0xa1, 0x75, 0xa1, 0xaf, 0xa1, 0x75, 0xa2, 0xaf, - 0xa4, 0x75, 0xa2, 0xaf, 0xa5, 0x75, 0xa3, 0xaf, 0xa4, 0x75, 0xa3, 0xaf, - 0xa5, 0x75, 0xa3, 0xaf, 0xa4, 0x75, 0xa4, 0xaf, 0xa5, 0x75, 0xa4, 0xaf, - 0xa4, 0x75, 0xa5, 0xaf, 0xa5, 0x75, 0xa5, 0xaf, 0xa5, 0x75, 0xa5, 0xaf, - 0xa5, 0x75, 0xa6, 0xaf, 0xa6, 0x75, 0xa6, 0xb5, 0xab, 0x75, 0xa6, 0xb4, - 0xab, 0x75, 0xa7, 0xb5, 0xab, 0x75, 0xa7, 0xb4, 0xab, 0x75, 0xa8, 0xb5, - 0xab, 0x75, 0xa8, 0xb4, 0xab, 0x75, 0xa8, 0xb5, 0xab, 0x75, 0xa9, 0xb4, - 0xab, 0x75, 0xa9, 0xb5, 0xab, 0x75, 0xaa, 0xb4, 0xab, 0x75, 0xaa, 0xb5, - 0xab, 0x75, 0xaa, 0xb4, 0xab, 0x75, 0xab, 0xb5, 0xab, 0x75, 0xaa, 0xb4, - 0xab, 0x75, 0xab, 0xb4, 0xab, 0x75, 0xaa, 0xb4, 0xac, 0x75, 0xab, 0xb4, - 0xac, 0x75, 0xaa, 0xb4, 0xac, 0x75, 0xab, 0xb4, 0xad, 0x75, 0xaa, 0xb4, - 0xad, 0x75, 0xab, 0xb4, 0xae, 0x75, 0xab, 0xb4, 0xae, 0x72, 0xab, 0xb4, - 0xae, 0x75, 0xb0, 0xb4, 0xaf, 0x70, 0xb0, 0xb4, 0xaf, 0x70, 0xb0, 0xb4, - 0xaf, 0x70, 0xb0, 0xb4, 0xb0, 0x70, 0xb0, 0xb4, 0xb0, 0x70, 0xb0, 0xb4, - 0xb0, 0x70, 0xb1, 0xb4, 0xb1, 0x70, 0xb1, 0xb4, 0xb1, 0x70, 0xb2, 0xb4, - 0xb2, 0x70, 0xb2, 0xb4, 0xb2, 0x70, 0xb2, 0xb4, 0xb2, 0x70, 0xb4, 0xb4, - 0xb3, 0x71, 0xb4, 0xb4, 0xb3, 0x71, 0xb4, 0xb4, 0xb3, 0x71, 0xb4, 0xb4, - 0xb4, 0x71, 0xb4, 0xb4, 0xb4, 0x71, 0xb4, 0xb4, 0xb4, 0x71, 0xb5, 0xb4, - 0xb5, 0x71, 0xb5, 0xb4, 0xb5, 0x71, 0xb5, 0xb4, 0xb5, 0x71, 0xb6, 0xb4, - 0xb6, 0x71, 0xb6, 0xb4, 0xb6, 0x71, 0xb8, 0xb4, 0xb6, 0x72, 0xb8, 0xb4, - 0xb7, 0x72, 0xb8, 0xb4, 0xb7, 0x72, 0xb8, 0xb4, 0xb7, 0x72, 0xb8, 0xb4, - 0xb8, 0x72, 0xb8, 0xb4, 0xb8, 0x72, 0xb8, 0xb4, 0xb8, 0x72, 0xb9, 0xb4, - 0xb9, 0x72, 0xb9, 0xb4, 0xb9, 0x72, 0xb9, 0xb4, 0xb9, 0x72, 0xba, 0xb4, - 0xba, 0x72, 0xbb, 0xb4, 0xba, 0x73, 0xbc, 0xb4, 0xba, 0x73, 0xbb, 0xb4, - 0xbb, 0x73, 0xbc, 0xb4, 0xbb, 0x73, 0xbb, 0xb4, 0xbb, 0x73, 0xbc, 0xb4, - 0xbc, 0x73, 0xbc, 0xb4, 0xbc, 0x73, 0xbc, 0xb4, 0xbc, 0x73, 0xbd, 0xb4, - 0xbd, 0x73, 0xbd, 0xb4, 0xbd, 0x73, 0xbd, 0xb4, 0xbd, 0x73, 0xbe, 0xb4, - 0xbe, 0x73, 0xbe, 0xb4, 0xbe, 0x73, 0xbf, 0xb4, 0xbe, 0x74, 0xbf, 0xb4, - 0xbf, 0x74, 0xbf, 0xb4, 0xbf, 0x74, 0xbf, 0xb4, 0xbf, 0x74, 0xc0, 0xb4, - 0xc0, 0x74, 0xc0, 0xb4, 0xc0, 0x74, 0xc0, 0xb4, 0xc0, 0x74, 0xc1, 0xb4, - 0xc1, 0x74, 0xc1, 0xb4, 0xc1, 0x74, 0xc1, 0xb4, 0xc1, 0x74, 0xc1, 0xb4, - 0xc1, 0x74, 0xc2, 0xb4, 0xc2, 0x74, 0xc2, 0xb4, 0xc2, 0x74, 0xc2, 0xb5, - 0xc2, 0x75, 0xc3, 0xb5, 0xc3, 0x75, 0xc3, 0xb5, 0xc3, 0x75, 0xc3, 0xb5, - 0xc3, 0x75, 0xc4, 0xb5, 0xc4, 0x75, 0xc4, 0xb5, 0xc4, 0x75, 0xc4, 0xb5, - 0xc4, 0x75, 0xc5, 0xb5, 0xc5, 0x75, 0xc5, 0xb5, 0xc5, 0x75, 0xc5, 0xb5, - 0xc5, 0x75, 0xc6, 0xb5, 0xc6, 0x75, 0xc6, 0xb5, 0xc6, 0x75, 0xc6, 0xb5, - 0xc6, 0x75, 0xc6, 0xb5, 0xc6, 0x75, 0xc7, 0xb6, 0xc7, 0x75, 0xc7, 0xb6, - 0xc7, 0x75, 0xc7, 0xb6, 0xc7, 0x75, 0xc8, 0xb6, 0xc8, 0x75, 0xc8, 0xb6, - 0xc8, 0x75, 0xc8, 0xb6, 0xc8, 0x75, 0xc9, 0xb6, 0xc9, 0x75, 0xc9, 0xb6, - 0xc9, 0x75, 0xc9, 0xb6, 0xc9, 0x75, 0xc9, 0xb6, 0xc9, 0x75, 0xca, 0xb6, - 0xc9, 0x75, 0xca, 0xb6, 0xc9, 0x75, 0xca, 0xb6, 0xc9, 0x75, 0xcb, 0xb6, - 0xcb, 0x75, 0xcb, 0xb6, 0xcb, 0x75, 0xcb, 0xb6, 0xcb, 0x75, 0xcc, 0xb6, - 0xcc, 0x75, 0xcc, 0xb6, 0xcc, 0x75, 0xcc, 0xb6, 0xcc, 0x75, 0xcc, 0xb6, - 0xcc, 0x75, 0xcd, 0xb6, 0xcc, 0x75, 0xcd, 0xb6, 0xcc, 0x75, 0xcd, 0xb4, - 0xcf, 0x75, 0xce, 0xb5, 0xcf, 0x75, 0xce, 0xb4, 0xcf, 0x75, 0xce, 0xb5, - 0xcf, 0x75, 0xce, 0xb4, 0xcf, 0x75, 0xcf, 0xb5, 0xcf, 0x75, 0xce, 0xb4, - 0xcf, 0x75, 0xcf, 0xb4, 0xcf, 0x75, 0xce, 0xb4, 0xd0, 0x75, 0xcf, 0xb4, - 0xd0, 0x75, 0xcf, 0xb4, 0xd0, 0x73, 0xcf, 0xb4, 0xd0, 0x75, 0xcf, 0xb4, - 0xd1, 0x73, 0xcf, 0xb4, 0xd1, 0x75, 0xcf, 0xb4, 0xd1, 0x73, 0xcf, 0xb4, - 0xd2, 0x75, 0xcf, 0xb4, 0xd2, 0x73, 0xcf, 0xb4, 0xd2, 0x75, 0xcf, 0xb4, - 0xd2, 0x73, 0xcf, 0xb4, 0xd3, 0x75, 0xcf, 0xb4, 0xd3, 0x73, 0xcf, 0xb4, - 0xd3, 0x75, 0xcf, 0xb4, 0xd4, 0x73, 0xcf, 0xb4, 0xd4, 0x75, 0xcf, 0xb4, - 0xd4, 0x73, 0xcf, 0xb4, 0xd4, 0x75, 0xcf, 0xb4, 0xd5, 0x73, 0xcf, 0xb4, - 0xd5, 0x75, 0xcf, 0xb4, 0xd5, 0x73, 0xcf, 0xb4, 0xd6, 0x75, 0xcf, 0xb4, - 0xd6, 0x73, 0xcf, 0xb4, 0xd6, 0x70, 0xcf, 0xb4, 0xd6, 0x73, 0xcf, 0xb4, - 0xd7, 0x70, 0xcf, 0xb4, 0xd7, 0x73, 0xcf, 0xb4, 0xd7, 0x70, 0xcf, 0xb4, - 0xd7, 0x73, 0xcf, 0xb4, 0xd8, 0x70, 0xcf, 0xb4, 0xd8, 0x73, 0xcf, 0xb4, - 0xd8, 0x70, 0xcf, 0xb4, 0xd9, 0x73, 0xcf, 0xb4, 0xd9, 0x70, 0xcf, 0xb4, - 0xd9, 0x73, 0xcf, 0xb4, 0xd9, 0x70, 0xcf, 0xb4, 0xda, 0x73, 0xcf, 0xb4, - 0xda, 0x70, 0xcf, 0xb4, 0xda, 0x73, 0xcf, 0xb4, 0xda, 0x70, 0xcf, 0xb4, - 0xdb, 0x73, 0xcf, 0xb4, 0xdb, 0x70, 0xcf, 0xb4, 0xdb, 0x73, 0xcf, 0xb4, - 0xdb, 0x70, 0xcf, 0xb4, 0xdc, 0x73, 0xcf, 0xb4, 0xdc, 0x70, 0xcf, 0xb4, - 0xdc, 0x73, 0xcf, 0xb4, 0xdd, 0x70, 0xcf, 0xb4, 0xdd, 0x73, 0xcf, 0xb4, - 0xdd, 0x70, 0xcf, 0xb4, 0xdd, 0x73, 0xeb, 0xb4, 0xde, 0x77, 0xeb, 0xb4, - 0xde, 0x7b, 0xeb, 0xb4, 0xde, 0x77, 0xeb, 0xb4, 0xde, 0x7b, 0xeb, 0xb4, - 0xdf, 0x77, 0xeb, 0xb4, 0xdf, 0x7b, 0xeb, 0xb4, 0xdf, 0x77, 0xeb, 0xb4, - 0xdf, 0x7b, 0xeb, 0xb4, 0xe0, 0x77, 0xeb, 0xb4, 0xe0, 0x7b, 0xeb, 0xb4, - 0xe0, 0x77, 0xeb, 0xb4, 0xe1, 0x7b, 0xeb, 0xb4, 0xe1, 0x77, 0xeb, 0xb4, - 0xe1, 0x7b, 0xeb, 0xb4, 0xe1, 0x77, 0xeb, 0xb4, 0xe2, 0x7b, 0xeb, 0xb4, - 0xe2, 0x77, 0xeb, 0xb4, 0xe2, 0x75, 0xeb, 0xb4, 0xe2, 0x77, 0xeb, 0xb4, - 0xe3, 0x75, 0xeb, 0xb4, 0xe3, 0x77, 0xeb, 0xb4, 0xe3, 0x75, 0xeb, 0xb4, - 0xe3, 0x77, 0xeb, 0xb4, 0xe4, 0x75, 0xeb, 0xb4, 0xe4, 0x77, 0xeb, 0xb4, - 0xe4, 0x75, 0xeb, 0xb4, 0xe4, 0x77, 0xeb, 0xb4, 0xe5, 0x75, 0xeb, 0xb4, - 0xe5, 0x77, 0xeb, 0xb4, 0xe5, 0x75, 0xeb, 0xb4, 0xe5, 0x77, 0xeb, 0xb4, - 0xe6, 0x75, 0xeb, 0xb4, 0xe6, 0x77, 0xeb, 0xb4, 0xe6, 0x75, 0xeb, 0xb4, - 0xe6, 0x77, 0xeb, 0xb4, 0xe7, 0x75, 0xeb, 0xb4, 0xe7, 0x77, 0xeb, 0xb4, - 0xe7, 0x75, 0xeb, 0xb4, 0xe7, 0x77, 0xeb, 0xb4, 0xe8, 0x75, 0xeb, 0xb4, - 0xe8, 0x77, 0xeb, 0xb4, 0xe8, 0x75, 0xeb, 0xb4, 0xe8, 0x77, 0xeb, 0xb4, - 0xe9, 0x75, 0xeb, 0xb4, 0xe9, 0x77, 0xeb, 0xb4, 0xe9, 0x75, 0xeb, 0xb4, - 0xe9, 0x77, 0xeb, 0xb4, 0xea, 0x75, 0xeb, 0xb4, 0xea, 0x77, 0xeb, 0xb4, - 0xea, 0x75, 0xeb, 0xb4, 0xea, 0x75, 0xeb, 0xb4, 0xeb, 0x75, 0xeb, 0xb4, - 0xeb, 0x75, 0xeb, 0xb4, 0xeb, 0x75, 0xeb, 0xb4, 0xeb, 0x75, 0xec, 0xb4, - 0xeb, 0x75, 0xec, 0xb4, 0xeb, 0x75, 0xec, 0xb4, 0xeb, 0x75, 0xec, 0xb4, - 0xeb, 0x75, 0xec, 0xb4, 0xeb, 0x75, 0xed, 0xb4, 0xeb, 0x75, 0xed, 0xb2, - 0xeb, 0x75, 0xed, 0xb4, 0xeb, 0x75, 0xed, 0xb2, 0xeb, 0x75, 0xee, 0xb4, - 0xeb, 0x75, 0xee, 0xb2, 0xeb, 0x75, 0xee, 0xb4, 0xeb, 0x75, 0xee, 0xb2, - 0xeb, 0x75, 0xef, 0xb4, 0xeb, 0x75, 0xef, 0xb2, 0xeb, 0x75, 0xef, 0xb4, - 0xeb, 0x75, 0xef, 0xb2, 0xeb, 0x75, 0xf0, 0xb4, 0xeb, 0x75, 0xf0, 0xb2, - 0xeb, 0x75, 0xf0, 0xb4, 0xeb, 0x75, 0xf0, 0xb2, 0xeb, 0x75, 0xf1, 0xb6, - 0xf6, 0x75, 0xf1, 0xb4, 0xf6, 0x75, 0xf1, 0xb6, 0xf6, 0x75, 0xf1, 0xb4, - 0xf6, 0x75, 0xf2, 0xb6, 0xf6, 0x75, 0xf2, 0xb4, 0xf6, 0x75, 0xf2, 0xb6, - 0xf6, 0x75, 0xf2, 0xb4, 0xf6, 0x75, 0xf2, 0xb6, 0xf6, 0x75, 0xf3, 0xb4, - 0xf6, 0x75, 0xf3, 0xb6, 0xf6, 0x75, 0xf3, 0xb4, 0xf6, 0x75, 0xf3, 0xb6, - 0xf6, 0x75, 0xf4, 0xb4, 0xf6, 0x75, 0xf4, 0xb6, 0xf6, 0x75, 0xf4, 0xb4, - 0xf6, 0x75, 0xf4, 0xb4, 0xf6, 0x75, 0xf5, 0xb4, 0xf6, 0x75, 0xf5, 0xb4, - 0xf6, 0x75, 0xf5, 0xb4, 0xf6, 0x75, 0xf5, 0xb4, 0xf6, 0x75, 0xf5, 0xb4, - 0xf6, 0x75, 0xf6, 0xb4, 0xf6, 0x75, 0xf5, 0xb4, 0xf6, 0x75, 0xf6, 0xb4, - 0xf6, 0x75, 0xf5, 0xb4, 0xf6, 0x75, 0xf6, 0xb4, 0xf7, 0x75, 0xf6, 0xb4, - 0xf7, 0x73, 0xf6, 0xb4, 0xf7, 0x75, 0xf6, 0xb4, 0xf7, 0x73, 0xf6, 0xb4, - 0xf8, 0x75, 0xf6, 0xb4, 0xf8, 0x73, 0xfa, 0xb4, 0xf8, 0x75, 0xfa, 0xb4, - 0xf8, 0x75, 0xfa, 0xb4, 0xf8, 0x75, 0xfa, 0xb4, 0xf9, 0x75, 0xfa, 0xb4, - 0xf9, 0x75, 0xfa, 0xb4, 0xf9, 0x75, 0xfa, 0xb4, 0xf9, 0x75, 0xfa, 0xb4, - 0xfa, 0x75, 0xfa, 0xb4, 0xfa, 0x75, 0xfa, 0xb4, 0xfa, 0x75, 0xfa, 0xb4, - 0xfa, 0x75, 0xfa, 0xb4, 0xfa, 0x75, 0xfb, 0xb4, 0xfa, 0x75, 0xfb, 0xb4, - 0xfa, 0x75, 0xfb, 0xb4, 0xfa, 0x75, 0xfb, 0xb4, 0xfa, 0x75, 0xfc, 0xb4, - 0xfa, 0x75, 0xfc, 0xb4, 0xfa, 0x75, 0xfc, 0xb4, 0xfa, 0x75, 0xfc, 0xb4, - 0xfa, 0x75, 0xfc, 0xb4, 0xfa, 0x75, 0xfd, 0xb4, 0xfa, 0x75, 0xfd, 0xb4, - 0xfa, 0x75, 0xfd, 0xb4, 0xfa, 0x75, 0xfd, 0xb4, 0xfa, 0x75, 0xfe, 0xb2, - 0xfa, 0x75, 0xfe, 0xb4, 0xfa, 0x75, 0xfe, 0xb2, 0xfa, 0x75, 0xfe, 0xb4, - 0xfa, 0x75, 0xfe, 0xb2, 0xfa, 0x75, 0xff, 0xb4, 0xfa, 0x75, 0xff, 0xb2, - 0xfa, 0x75, 0x03, 0xbd, 0x92, 0x75, 0x0a, 0xbf, 0x91, 0x75, 0x0f, 0xbd, - 0x92, 0x75, 0x14, 0xbb, 0x92, 0x75, 0x17, 0xbd, 0x92, 0x75, 0x1b, 0xbb, - 0x92, 0x75, 0x1e, 0xbd, 0x92, 0x75, 0x20, 0xbb, 0x92, 0x75, 0x23, 0xbd, - 0x92, 0x75, 0x25, 0xbb, 0x92, 0x75, 0x27, 0xbd, 0x92, 0x75, 0x29, 0xbb, - 0x92, 0x75, 0x2b, 0xbd, 0x92, 0x75, 0x2d, 0xbb, 0x92, 0x75, 0x2f, 0xbd, - 0x92, 0x75, 0x31, 0xbb, 0x92, 0x75, 0x32, 0xbd, 0x92, 0x75, 0x34, 0xbb, - 0x92, 0x75, 0x35, 0xbd, 0x92, 0x75, 0x37, 0xbb, 0x92, 0x75, 0x38, 0xbd, - 0x92, 0x75, 0x3a, 0xbb, 0x92, 0x75, 0x3b, 0xbd, 0x92, 0x75, 0x3c, 0xbb, - 0x92, 0x75, 0x3e, 0xbd, 0x92, 0x75, 0x3f, 0xbb, 0x92, 0x75, 0x40, 0xbd, - 0x92, 0x75, 0x42, 0xbb, 0x92, 0x75, 0x43, 0xbd, 0x92, 0x75, 0x44, 0xbb, - 0x92, 0x75, 0x45, 0xbd, 0x92, 0x75, 0x46, 0xbb, 0x92, 0x75, 0x47, 0xbd, - 0x92, 0x75, 0x48, 0xbb, 0x92, 0x75, 0x49, 0xbd, 0x92, 0x75, 0x4a, 0xbb, - 0x92, 0x75, 0x4b, 0xbd, 0x92, 0x75, 0x4c, 0xbb, 0x92, 0x75, 0x4d, 0xbd, - 0x92, 0x75, 0x4e, 0xbb, 0x92, 0x75, 0x4f, 0xb9, 0x93, 0x75, 0x50, 0xbb, - 0x92, 0x75, 0x51, 0xb9, 0x93, 0x75, 0x52, 0xbb, 0x92, 0x75, 0x53, 0xb9, - 0x93, 0x75, 0x54, 0xbb, 0x92, 0x75, 0x55, 0xb9, 0x93, 0x75, 0x56, 0xbb, - 0x92, 0x75, 0x57, 0xb9, 0x93, 0x75, 0x58, 0xbb, 0x92, 0x75, 0x58, 0xb9, - 0x93, 0x75, 0x59, 0xbb, 0x92, 0x75, 0x5a, 0xb9, 0x93, 0x75, 0x5b, 0xbb, - 0x92, 0x75, 0x5c, 0xb9, 0x93, 0x75, 0x5d, 0xbb, 0x92, 0x75, 0x5d, 0xb9, - 0x93, 0x75, 0x5e, 0xbb, 0x92, 0x75, 0x5f, 0xb9, 0x93, 0x75, 0x60, 0xbb, - 0x92, 0x75, 0x60, 0xb9, 0x93, 0x75, 0x61, 0xbb, 0x92, 0x75, 0x62, 0xb9, - 0x93, 0x75, 0x63, 0xbb, 0x92, 0x75, 0x63, 0xb9, 0x93, 0x75, 0x64, 0xbb, - 0x92, 0x75, 0x65, 0xb9, 0x93, 0x75, 0x66, 0xbb, 0x92, 0x75, 0x66, 0xb9, - 0x93, 0x75, 0x67, 0xbb, 0x92, 0x75, 0x68, 0xb9, 0x93, 0x75, 0x68, 0xbb, - 0x92, 0x75, 0x69, 0xb9, 0x93, 0x75, 0x6a, 0xb6, 0x93, 0x75, 0x6a, 0xb9, - 0x93, 0x75, 0x6b, 0xb6, 0x93, 0x75, 0x6c, 0xb9, 0x93, 0x75, 0x6c, 0xb6, - 0x93, 0x75, 0x6d, 0xb9, 0x93, 0x75, 0x6e, 0xb6, 0x93, 0x75, 0x6e, 0xb9, - 0x93, 0x75, 0x6f, 0xb6, 0x93, 0x75, 0x70, 0xb9, 0x93, 0x75, 0x70, 0xb6, - 0x93, 0x75, 0x71, 0xb9, 0x93, 0x75, 0x72, 0xb6, 0x93, 0x75, 0x72, 0xb9, - 0x93, 0x75, 0x73, 0xb6, 0x93, 0x75, 0x73, 0xb9, 0x93, 0x75, 0x74, 0xb6, - 0x93, 0x75, 0x75, 0xb9, 0x93, 0x75, 0x75, 0xb6, 0x93, 0x75, 0x76, 0xb9, - 0x93, 0x75, 0x76, 0xb6, 0x93, 0x75, 0x77, 0xb9, 0x93, 0x75, 0x78, 0xb6, - 0x93, 0x75, 0x78, 0xb9, 0x93, 0x75, 0x79, 0xb6, 0x93, 0x75, 0x79, 0xb9, - 0x93, 0x75, 0x7a, 0xb6, 0x93, 0x75, 0x7a, 0xb9, 0x93, 0x75, 0x7b, 0xb6, - 0x93, 0x75, 0x7c, 0xb9, 0x93, 0x75, 0x7c, 0xb6, 0x93, 0x75, 0x7d, 0xb9, - 0x93, 0x75, 0x7d, 0xb6, 0x93, 0x75, 0x7e, 0xb9, 0x93, 0x75, 0x7e, 0xb6, - 0x93, 0x75, 0x7f, 0xb9, 0x93, 0x75, 0x7f, 0xb6, 0x93, 0x75, 0x80, 0xb9, - 0x93, 0x75, 0x81, 0xb6, 0x93, 0x75, 0x81, 0xb9, 0x93, 0x75, 0x82, 0xb6, - 0x93, 0x75, 0x82, 0xb5, 0x94, 0x75, 0x83, 0xb6, 0x93, 0x75, 0x83, 0xb5, - 0x94, 0x75, 0x84, 0xb6, 0x93, 0x75, 0x84, 0xb5, 0x94, 0x75, 0x85, 0xb6, - 0x93, 0x75, 0x85, 0xb5, 0x94, 0x75, 0x86, 0xb6, 0x93, 0x75, 0x86, 0xb5, - 0x94, 0x75, 0x87, 0xb6, 0x93, 0x75, 0x87, 0xb5, 0x94, 0x75, 0x88, 0xb6, - 0x93, 0x75, 0x88, 0xb5, 0x94, 0x75, 0x89, 0xb6, 0x93, 0x75, 0x89, 0xb5, - 0x94, 0x75, 0x8a, 0xb6, 0x93, 0x75, 0x8a, 0xb5, 0x94, 0x75, 0x8b, 0xb6, - 0x93, 0x75, 0x8b, 0xb5, 0x94, 0x75, 0x8c, 0xb6, 0x93, 0x75, 0x8c, 0xb5, - 0x94, 0x75, 0x8d, 0xb6, 0x93, 0x75, 0x8d, 0xb5, 0x94, 0x75, 0x8e, 0xb6, - 0x93, 0x75, 0x8e, 0xb5, 0x94, 0x75, 0x8e, 0xb6, 0x93, 0x75, 0x8f, 0xb5, - 0x94, 0x75, 0x8f, 0xb6, 0x93, 0x75, 0x90, 0xb5, 0x94, 0x75, 0x90, 0xb6, - 0x93, 0x75, 0x91, 0xb5, 0x94, 0x75, 0x91, 0xb6, 0x93, 0x75, 0x92, 0xb5, - 0x94, 0x75, 0x92, 0xb5, 0x94, 0x75, 0x93, 0xb5, 0x94, 0x75, 0x93, 0xb5, - 0x94, 0x75, 0x93, 0xb5, 0x94, 0x75, 0x93, 0xb5, 0x94, 0x75, 0x95, 0xb5, - 0x94, 0x75, 0x96, 0xb5, 0x95, 0x75, 0x95, 0xb5, 0x94, 0x75, 0x96, 0xb5, - 0x95, 0x75, 0x96, 0xb5, 0x94, 0x75, 0x97, 0xb5, 0x95, 0x75, 0x97, 0xb3, - 0x95, 0x75, 0x98, 0xb5, 0x95, 0x75, 0x98, 0xb3, 0x95, 0x75, 0x98, 0xb5, - 0x95, 0x75, 0x99, 0xb3, 0x95, 0x75, 0x99, 0xb5, 0x95, 0x75, 0x9a, 0xb3, - 0x95, 0x75, 0x9a, 0xb5, 0x95, 0x75, 0x9a, 0xb3, 0x95, 0x75, 0x9b, 0xb5, - 0x95, 0x75, 0x9b, 0xb9, 0x9b, 0x75, 0x9c, 0xb9, 0x9c, 0x75, 0x9c, 0xb9, - 0x9c, 0x75, 0x9d, 0xb9, 0x9d, 0x75, 0x9d, 0xb9, 0x9d, 0x75, 0x9d, 0xb9, - 0x9d, 0x75, 0x9e, 0xb9, 0x9d, 0x75, 0x9e, 0xb9, 0x9d, 0x75, 0x9f, 0xb9, - 0x9d, 0x75, 0x9f, 0xb9, 0x9d, 0x75, 0x9f, 0xb9, 0x9d, 0x75, 0xa0, 0xba, - 0xa0, 0x75, 0xa0, 0xba, 0xa0, 0x75, 0xa1, 0xba, 0xa1, 0x75, 0xa1, 0xba, - 0xa1, 0x75, 0xa1, 0xba, 0xa1, 0x75, 0xa2, 0xaf, 0xa2, 0x75, 0xa2, 0xaf, - 0xa2, 0x75, 0xa3, 0xaf, 0xa3, 0x75, 0xa3, 0xaf, 0xa3, 0x75, 0xa3, 0xaf, - 0xa3, 0x75, 0xa4, 0xb0, 0xa6, 0x75, 0xa4, 0xb0, 0xa6, 0x75, 0xa5, 0xb0, - 0xa6, 0x75, 0xa5, 0xb0, 0xa6, 0x75, 0xa5, 0xb0, 0xa6, 0x75, 0xa6, 0xb7, - 0xaa, 0x75, 0xa6, 0xb5, 0xab, 0x75, 0xa6, 0xb7, 0xaa, 0x75, 0xa7, 0xb5, - 0xab, 0x75, 0xa7, 0xb7, 0xaa, 0x75, 0xa8, 0xb5, 0xab, 0x75, 0xa8, 0xb5, - 0xab, 0x75, 0xa8, 0xb5, 0xab, 0x75, 0xa9, 0xb5, 0xab, 0x75, 0xa9, 0xb5, - 0xab, 0x75, 0xaa, 0xb5, 0xab, 0x75, 0xaa, 0xb5, 0xab, 0x75, 0xaa, 0xb5, - 0xab, 0x75, 0xab, 0xb5, 0xab, 0x75, 0xaa, 0xb5, 0xab, 0x75, 0xab, 0xb5, - 0xab, 0x75, 0xaa, 0xb5, 0xac, 0x75, 0xab, 0xb5, 0xac, 0x75, 0xaa, 0xb5, - 0xac, 0x75, 0xab, 0xb5, 0xad, 0x75, 0xaa, 0xb5, 0xad, 0x75, 0xab, 0xb5, - 0xae, 0x75, 0xab, 0xb5, 0xae, 0x72, 0xab, 0xb5, 0xae, 0x75, 0xab, 0xb5, - 0xaf, 0x72, 0xaf, 0xb5, 0xaf, 0x6f, 0xaf, 0xb5, 0xaf, 0x6f, 0xb2, 0xb5, - 0xb0, 0x70, 0xb2, 0xb5, 0xb0, 0x70, 0xb2, 0xb5, 0xb0, 0x70, 0xb2, 0xb5, - 0xb1, 0x70, 0xb2, 0xb5, 0xb1, 0x70, 0xb2, 0xb5, 0xb2, 0x70, 0xb2, 0xb5, - 0xb2, 0x70, 0xb2, 0xb5, 0xb2, 0x70, 0xb3, 0xb5, 0xb3, 0x70, 0xb3, 0xb5, - 0xb3, 0x70, 0xb3, 0xb5, 0xb3, 0x70, 0xb4, 0xb5, 0xb4, 0x70, 0xb4, 0xb5, - 0xb4, 0x70, 0xb6, 0xb5, 0xb4, 0x71, 0xb6, 0xb5, 0xb5, 0x71, 0xb6, 0xb5, - 0xb5, 0x71, 0xb6, 0xb5, 0xb5, 0x71, 0xb6, 0xb5, 0xb6, 0x71, 0xb6, 0xb5, - 0xb6, 0x71, 0xb6, 0xb5, 0xb6, 0x71, 0xb7, 0xb5, 0xb7, 0x71, 0xb7, 0xb5, - 0xb7, 0x71, 0xb7, 0xb5, 0xb7, 0x71, 0xb8, 0xb5, 0xb8, 0x71, 0xb8, 0xb5, - 0xb8, 0x71, 0xba, 0xb5, 0xb8, 0x72, 0xba, 0xb5, 0xb9, 0x72, 0xba, 0xb5, - 0xb9, 0x72, 0xba, 0xb5, 0xb9, 0x72, 0xba, 0xb5, 0xba, 0x72, 0xba, 0xb5, - 0xba, 0x72, 0xba, 0xb5, 0xba, 0x72, 0xbb, 0xb5, 0xbb, 0x72, 0xbb, 0xb5, - 0xbb, 0x72, 0xbb, 0xb5, 0xbb, 0x72, 0xbc, 0xb5, 0xbc, 0x72, 0xbd, 0xb5, - 0xbc, 0x73, 0xbe, 0xb5, 0xbc, 0x73, 0xbd, 0xb5, 0xbd, 0x73, 0xbe, 0xb5, - 0xbd, 0x73, 0xbd, 0xb5, 0xbd, 0x73, 0xbe, 0xb5, 0xbe, 0x73, 0xbe, 0xb5, - 0xbe, 0x73, 0xbe, 0xb5, 0xbe, 0x73, 0xbf, 0xb5, 0xbf, 0x73, 0xbf, 0xb5, - 0xbf, 0x73, 0xbf, 0xb5, 0xbf, 0x73, 0xc0, 0xb5, 0xc0, 0x73, 0xc0, 0xb5, - 0xc0, 0x73, 0xc1, 0xb5, 0xc0, 0x74, 0xc1, 0xb5, 0xc1, 0x74, 0xc1, 0xb5, - 0xc1, 0x74, 0xc1, 0xb5, 0xc1, 0x74, 0xc1, 0xb5, 0xc1, 0x74, 0xc2, 0xb5, - 0xc2, 0x74, 0xc2, 0xb5, 0xc2, 0x74, 0xc2, 0xb5, 0xc2, 0x74, 0xc3, 0xb5, - 0xc3, 0x74, 0xc3, 0xb5, 0xc3, 0x74, 0xc3, 0xb5, 0xc3, 0x74, 0xc4, 0xb5, - 0xc4, 0x74, 0xc4, 0xb5, 0xc4, 0x74, 0xc4, 0xb5, 0xc4, 0x75, 0xc5, 0xb5, - 0xc5, 0x75, 0xc5, 0xb5, 0xc5, 0x75, 0xc5, 0xb5, 0xc5, 0x75, 0xc6, 0xb5, - 0xc6, 0x75, 0xc6, 0xb5, 0xc6, 0x75, 0xc6, 0xb5, 0xc6, 0x75, 0xc6, 0xb5, - 0xc6, 0x75, 0xc7, 0xb5, 0xc7, 0x75, 0xc7, 0xb5, 0xc7, 0x75, 0xc7, 0xb5, - 0xc7, 0x75, 0xc8, 0xb5, 0xc7, 0x75, 0xc8, 0xb5, 0xc7, 0x75, 0xc8, 0xb6, - 0xc8, 0x75, 0xc9, 0xb6, 0xc9, 0x75, 0xc9, 0xb6, 0xc9, 0x75, 0xc9, 0xb6, - 0xc9, 0x75, 0xc9, 0xb6, 0xc9, 0x75, 0xca, 0xb6, 0xca, 0x75, 0xca, 0xb6, - 0xca, 0x75, 0xca, 0xb6, 0xca, 0x75, 0xcb, 0xb6, 0xcb, 0x75, 0xcb, 0xb6, - 0xca, 0x75, 0xcb, 0xb6, 0xcb, 0x75, 0xcc, 0xb6, 0xca, 0x75, 0xcc, 0xb6, - 0xcb, 0x75, 0xcc, 0xb7, 0xcc, 0x75, 0xcc, 0xb7, 0xcc, 0x75, 0xcd, 0xb7, - 0xcd, 0x75, 0xcd, 0xb7, 0xcd, 0x75, 0xcd, 0xb7, 0xcd, 0x75, 0xce, 0xb5, - 0xcf, 0x75, 0xce, 0xb5, 0xcf, 0x75, 0xce, 0xb5, 0xcf, 0x75, 0xce, 0xb5, - 0xcf, 0x75, 0xcf, 0xb5, 0xcf, 0x75, 0xce, 0xb5, 0xcf, 0x75, 0xcf, 0xb5, - 0xcf, 0x75, 0xce, 0xb5, 0xd0, 0x75, 0xcf, 0xb5, 0xd0, 0x75, 0xce, 0xb5, - 0xd0, 0x75, 0xcf, 0xb5, 0xd0, 0x75, 0xce, 0xb5, 0xd1, 0x75, 0xcf, 0xb5, - 0xd1, 0x75, 0xcf, 0xb5, 0xd1, 0x72, 0xcf, 0xb5, 0xd2, 0x75, 0xcf, 0xb5, - 0xd2, 0x72, 0xcf, 0xb5, 0xd2, 0x75, 0xcf, 0xb5, 0xd2, 0x72, 0xcf, 0xb5, - 0xd3, 0x75, 0xcf, 0xb5, 0xd3, 0x72, 0xcf, 0xb5, 0xd3, 0x75, 0xcf, 0xb5, - 0xd4, 0x72, 0xcf, 0xb5, 0xd4, 0x75, 0xcf, 0xb5, 0xd4, 0x72, 0xcf, 0xb5, - 0xd4, 0x75, 0xcf, 0xb5, 0xd5, 0x72, 0xcf, 0xb5, 0xd5, 0x75, 0xcf, 0xb5, - 0xd5, 0x72, 0xcf, 0xb5, 0xd6, 0x75, 0xcf, 0xb5, 0xd6, 0x72, 0xcf, 0xb5, - 0xd6, 0x75, 0xcf, 0xb5, 0xd6, 0x72, 0xcf, 0xb5, 0xd7, 0x75, 0xcf, 0xb5, - 0xd7, 0x72, 0xcf, 0xb5, 0xd7, 0x75, 0xcf, 0xb5, 0xd7, 0x72, 0xcf, 0xb5, - 0xd8, 0x75, 0xcf, 0xb5, 0xd8, 0x72, 0xcf, 0xb5, 0xd8, 0x75, 0xcf, 0xb5, - 0xd9, 0x72, 0xcf, 0xb5, 0xd9, 0x75, 0xcf, 0xb5, 0xd9, 0x72, 0xcf, 0xb5, - 0xd9, 0x6f, 0xcf, 0xb5, 0xda, 0x72, 0xcf, 0xb5, 0xda, 0x6f, 0xcf, 0xb5, - 0xda, 0x72, 0xcf, 0xb5, 0xda, 0x6f, 0xcf, 0xb5, 0xdb, 0x72, 0xcf, 0xb5, - 0xdb, 0x6f, 0xcf, 0xb5, 0xdb, 0x72, 0xcf, 0xb5, 0xdb, 0x6f, 0xcf, 0xb5, - 0xdc, 0x72, 0xcf, 0xb5, 0xdc, 0x6f, 0xcf, 0xb5, 0xdc, 0x72, 0xcf, 0xb5, - 0xdd, 0x6f, 0xcf, 0xb5, 0xdd, 0x72, 0xcf, 0xb5, 0xdd, 0x6f, 0xcf, 0xb5, - 0xdd, 0x72, 0xeb, 0xb5, 0xde, 0x76, 0xeb, 0xb5, 0xde, 0x7a, 0xeb, 0xb5, - 0xde, 0x76, 0xeb, 0xb5, 0xde, 0x7a, 0xeb, 0xb5, 0xdf, 0x76, 0xeb, 0xb5, - 0xdf, 0x7a, 0xeb, 0xb5, 0xdf, 0x76, 0xeb, 0xb5, 0xdf, 0x7a, 0xeb, 0xb5, - 0xe0, 0x76, 0xeb, 0xb5, 0xe0, 0x7a, 0xeb, 0xb5, 0xe0, 0x76, 0xeb, 0xb5, - 0xe1, 0x7a, 0xeb, 0xb5, 0xe1, 0x76, 0xeb, 0xb5, 0xe1, 0x7a, 0xeb, 0xb5, - 0xe1, 0x76, 0xeb, 0xb5, 0xe2, 0x7a, 0xeb, 0xb5, 0xe2, 0x76, 0xeb, 0xb5, - 0xe2, 0x7a, 0xeb, 0xb5, 0xe2, 0x76, 0xeb, 0xb5, 0xe3, 0x7a, 0xeb, 0xb5, - 0xe3, 0x76, 0xeb, 0xb5, 0xe3, 0x7a, 0xeb, 0xb5, 0xe3, 0x76, 0xeb, 0xb5, - 0xe4, 0x7a, 0xeb, 0xb5, 0xe4, 0x76, 0xeb, 0xb5, 0xe4, 0x7a, 0xeb, 0xb5, - 0xe4, 0x76, 0xeb, 0xb5, 0xe5, 0x7a, 0xeb, 0xb5, 0xe5, 0x76, 0xeb, 0xb5, - 0xe5, 0x75, 0xeb, 0xb5, 0xe5, 0x76, 0xeb, 0xb5, 0xe6, 0x75, 0xeb, 0xb5, - 0xe6, 0x76, 0xeb, 0xb5, 0xe6, 0x75, 0xeb, 0xb5, 0xe6, 0x76, 0xeb, 0xb5, - 0xe7, 0x75, 0xeb, 0xb5, 0xe7, 0x76, 0xeb, 0xb5, 0xe7, 0x75, 0xeb, 0xb5, - 0xe7, 0x76, 0xeb, 0xb5, 0xe8, 0x75, 0xeb, 0xb5, 0xe8, 0x76, 0xeb, 0xb5, - 0xe8, 0x75, 0xeb, 0xb5, 0xe8, 0x76, 0xeb, 0xb5, 0xe9, 0x75, 0xeb, 0xb5, - 0xe9, 0x76, 0xeb, 0xb5, 0xe9, 0x75, 0xeb, 0xb5, 0xe9, 0x76, 0xeb, 0xb5, - 0xea, 0x75, 0xeb, 0xb5, 0xea, 0x76, 0xeb, 0xb5, 0xea, 0x75, 0xeb, 0xb5, - 0xea, 0x76, 0xeb, 0xb5, 0xeb, 0x75, 0xeb, 0xb5, 0xeb, 0x76, 0xeb, 0xb5, - 0xeb, 0x75, 0xeb, 0xb5, 0xeb, 0x75, 0xec, 0xb5, 0xeb, 0x75, 0xec, 0xb5, - 0xeb, 0x75, 0xec, 0xb5, 0xeb, 0x75, 0xec, 0xb5, 0xeb, 0x75, 0xec, 0xb5, - 0xeb, 0x75, 0xed, 0xb5, 0xeb, 0x75, 0xed, 0xb5, 0xeb, 0x75, 0xed, 0xb5, - 0xeb, 0x75, 0xed, 0xb5, 0xeb, 0x75, 0xee, 0xb5, 0xeb, 0x75, 0xee, 0xb5, - 0xeb, 0x75, 0xee, 0xb5, 0xeb, 0x75, 0xee, 0xb5, 0xeb, 0x75, 0xef, 0xb5, - 0xeb, 0x75, 0xef, 0xb2, 0xeb, 0x75, 0xef, 0xb5, 0xeb, 0x75, 0xef, 0xb2, - 0xeb, 0x75, 0xf0, 0xb5, 0xeb, 0x75, 0xf0, 0xb2, 0xeb, 0x75, 0xf0, 0xb5, - 0xeb, 0x75, 0xf0, 0xb2, 0xeb, 0x75, 0xf1, 0xb7, 0xf6, 0x75, 0xf1, 0xb5, - 0xf6, 0x75, 0xf1, 0xb7, 0xf6, 0x75, 0xf1, 0xb5, 0xf6, 0x75, 0xf2, 0xb7, - 0xf6, 0x75, 0xf2, 0xb5, 0xf6, 0x75, 0xf2, 0xb7, 0xf6, 0x75, 0xf2, 0xb5, - 0xf6, 0x75, 0xf2, 0xb7, 0xf6, 0x75, 0xf3, 0xb5, 0xf6, 0x75, 0xf3, 0xb7, - 0xf6, 0x75, 0xf3, 0xb5, 0xf6, 0x75, 0xf3, 0xb7, 0xf6, 0x75, 0xf4, 0xb5, - 0xf6, 0x75, 0xf4, 0xb7, 0xf6, 0x75, 0xf4, 0xb5, 0xf6, 0x75, 0xf4, 0xb5, - 0xf6, 0x75, 0xf5, 0xb5, 0xf6, 0x75, 0xf5, 0xb5, 0xf6, 0x75, 0xf5, 0xb5, - 0xf6, 0x75, 0xf5, 0xb5, 0xf6, 0x75, 0xf5, 0xb5, 0xf6, 0x75, 0xf6, 0xb5, - 0xf6, 0x75, 0xf5, 0xb5, 0xf6, 0x75, 0xf6, 0xb5, 0xf6, 0x75, 0xf5, 0xb5, - 0xf6, 0x75, 0xf6, 0xb5, 0xf7, 0x75, 0xf6, 0xb5, 0xf7, 0x73, 0xf6, 0xb5, - 0xf7, 0x75, 0xf6, 0xb5, 0xf7, 0x73, 0xf6, 0xb5, 0xf8, 0x75, 0xf6, 0xb5, - 0xf8, 0x73, 0xfa, 0xb5, 0xf8, 0x75, 0xfa, 0xb5, 0xf8, 0x77, 0xfa, 0xb5, - 0xf8, 0x75, 0xfa, 0xb5, 0xf9, 0x77, 0xfa, 0xb5, 0xf9, 0x75, 0xfa, 0xb5, - 0xf9, 0x75, 0xfa, 0xb5, 0xf9, 0x75, 0xfa, 0xb5, 0xfa, 0x75, 0xfa, 0xb4, - 0xfa, 0x75, 0xfa, 0xb5, 0xfa, 0x75, 0xfa, 0xb4, 0xfa, 0x75, 0xfa, 0xb5, - 0xfa, 0x75, 0xfb, 0xb4, 0xfa, 0x75, 0xfb, 0xb5, 0xfa, 0x75, 0xfb, 0xb4, - 0xfa, 0x75, 0xfb, 0xb5, 0xfa, 0x75, 0xfc, 0xb4, 0xfa, 0x75, 0xfc, 0xb5, - 0xfa, 0x75, 0xfc, 0xb4, 0xfa, 0x75, 0xfc, 0xb5, 0xfa, 0x75, 0xfc, 0xb4, - 0xfa, 0x75, 0xfd, 0xb5, 0xfa, 0x75, 0xfd, 0xb4, 0xfa, 0x75, 0xfd, 0xb5, - 0xfa, 0x75, 0xfd, 0xb4, 0xfa, 0x75, 0xfe, 0xb2, 0xfa, 0x75, 0xfe, 0xb4, - 0xfa, 0x75, 0xfe, 0xb2, 0xfa, 0x75, 0xfe, 0xb4, 0xfa, 0x75, 0xfe, 0xb2, - 0xfa, 0x75, 0xff, 0xb4, 0xfa, 0x75, 0xff, 0xb2, 0xfa, 0x75, 0x03, 0xbd, - 0x92, 0x76, 0x0a, 0xba, 0x92, 0x76, 0x0f, 0xbd, 0x92, 0x76, 0x14, 0xba, - 0x92, 0x76, 0x17, 0xbd, 0x92, 0x76, 0x1b, 0xba, 0x92, 0x76, 0x1e, 0xbd, - 0x92, 0x76, 0x20, 0xba, 0x92, 0x76, 0x23, 0xbd, 0x92, 0x76, 0x25, 0xba, - 0x92, 0x76, 0x27, 0xbd, 0x92, 0x76, 0x29, 0xba, 0x92, 0x76, 0x2b, 0xbd, - 0x92, 0x76, 0x2d, 0xba, 0x92, 0x76, 0x2f, 0xbd, 0x92, 0x76, 0x31, 0xba, - 0x92, 0x76, 0x32, 0xbd, 0x92, 0x76, 0x34, 0xba, 0x92, 0x76, 0x35, 0xbd, - 0x92, 0x76, 0x37, 0xba, 0x92, 0x76, 0x38, 0xbd, 0x92, 0x76, 0x3a, 0xba, - 0x92, 0x76, 0x3b, 0xbd, 0x92, 0x76, 0x3c, 0xba, 0x92, 0x76, 0x3e, 0xbd, - 0x92, 0x76, 0x3f, 0xba, 0x92, 0x76, 0x40, 0xbd, 0x92, 0x76, 0x42, 0xba, - 0x92, 0x76, 0x43, 0xb8, 0x93, 0x76, 0x44, 0xba, 0x92, 0x76, 0x45, 0xb8, - 0x93, 0x76, 0x46, 0xba, 0x92, 0x76, 0x47, 0xb8, 0x93, 0x76, 0x48, 0xba, - 0x92, 0x76, 0x49, 0xb8, 0x93, 0x76, 0x4a, 0xba, 0x92, 0x76, 0x4b, 0xb8, - 0x93, 0x76, 0x4c, 0xba, 0x92, 0x76, 0x4d, 0xb8, 0x93, 0x76, 0x4e, 0xba, - 0x92, 0x76, 0x4f, 0xb8, 0x93, 0x76, 0x50, 0xba, 0x92, 0x76, 0x51, 0xb8, - 0x93, 0x76, 0x52, 0xba, 0x92, 0x76, 0x53, 0xb8, 0x93, 0x76, 0x54, 0xba, - 0x92, 0x76, 0x55, 0xb8, 0x93, 0x76, 0x56, 0xba, 0x92, 0x76, 0x57, 0xb8, - 0x93, 0x76, 0x58, 0xba, 0x92, 0x76, 0x58, 0xb8, 0x93, 0x76, 0x59, 0xba, - 0x92, 0x76, 0x5a, 0xb8, 0x93, 0x76, 0x5b, 0xba, 0x92, 0x76, 0x5c, 0xb8, - 0x93, 0x76, 0x5d, 0xba, 0x92, 0x76, 0x5d, 0xb8, 0x93, 0x76, 0x5e, 0xba, - 0x92, 0x76, 0x5f, 0xb8, 0x93, 0x76, 0x60, 0xba, 0x92, 0x76, 0x60, 0xb8, - 0x93, 0x76, 0x61, 0xba, 0x92, 0x76, 0x62, 0xb8, 0x93, 0x76, 0x63, 0xba, - 0x92, 0x76, 0x63, 0xb8, 0x93, 0x76, 0x64, 0xba, 0x92, 0x76, 0x65, 0xb8, - 0x93, 0x76, 0x66, 0xba, 0x92, 0x76, 0x66, 0xb8, 0x93, 0x76, 0x67, 0xba, - 0x92, 0x76, 0x68, 0xb8, 0x93, 0x76, 0x68, 0xba, 0x92, 0x76, 0x69, 0xb8, - 0x93, 0x76, 0x6a, 0xba, 0x92, 0x76, 0x6a, 0xb8, 0x93, 0x76, 0x6b, 0xba, - 0x92, 0x76, 0x6c, 0xb8, 0x93, 0x76, 0x6c, 0xba, 0x92, 0x76, 0x6d, 0xb8, - 0x93, 0x76, 0x6e, 0xba, 0x92, 0x76, 0x6e, 0xb8, 0x93, 0x76, 0x6f, 0xba, - 0x92, 0x76, 0x70, 0xb8, 0x93, 0x76, 0x70, 0xba, 0x92, 0x76, 0x71, 0xb8, - 0x93, 0x76, 0x72, 0xba, 0x92, 0x76, 0x72, 0xb8, 0x93, 0x76, 0x73, 0xba, - 0x92, 0x76, 0x73, 0xb8, 0x93, 0x76, 0x74, 0xb6, 0x93, 0x76, 0x75, 0xb8, - 0x93, 0x76, 0x75, 0xb6, 0x93, 0x76, 0x76, 0xb8, 0x93, 0x76, 0x76, 0xb6, - 0x93, 0x76, 0x77, 0xb8, 0x93, 0x76, 0x78, 0xb6, 0x93, 0x76, 0x78, 0xb8, - 0x93, 0x76, 0x79, 0xb6, 0x93, 0x76, 0x79, 0xb8, 0x93, 0x76, 0x7a, 0xb6, - 0x93, 0x76, 0x7a, 0xb8, 0x93, 0x76, 0x7b, 0xb6, 0x93, 0x76, 0x7c, 0xb8, - 0x93, 0x76, 0x7c, 0xb6, 0x93, 0x76, 0x7d, 0xb8, 0x93, 0x76, 0x7d, 0xb6, - 0x93, 0x76, 0x7e, 0xb8, 0x93, 0x76, 0x7e, 0xb6, 0x93, 0x76, 0x7f, 0xb8, - 0x93, 0x76, 0x7f, 0xb6, 0x93, 0x76, 0x80, 0xb8, 0x93, 0x76, 0x81, 0xb6, - 0x93, 0x76, 0x81, 0xb8, 0x93, 0x76, 0x82, 0xb6, 0x93, 0x76, 0x82, 0xb8, - 0x93, 0x76, 0x83, 0xb6, 0x93, 0x76, 0x83, 0xb8, 0x93, 0x76, 0x84, 0xb6, - 0x93, 0x76, 0x84, 0xb8, 0x93, 0x76, 0x85, 0xb6, 0x93, 0x76, 0x85, 0xb8, - 0x93, 0x76, 0x86, 0xb6, 0x93, 0x76, 0x86, 0xb8, 0x93, 0x76, 0x87, 0xb6, - 0x93, 0x76, 0x87, 0xb8, 0x93, 0x76, 0x88, 0xb6, 0x93, 0x76, 0x88, 0xb5, - 0x94, 0x76, 0x89, 0xb6, 0x93, 0x76, 0x89, 0xb5, 0x94, 0x76, 0x8a, 0xb6, - 0x93, 0x76, 0x8a, 0xb5, 0x94, 0x76, 0x8b, 0xb6, 0x93, 0x76, 0x8b, 0xb5, - 0x94, 0x76, 0x8c, 0xb6, 0x93, 0x76, 0x8c, 0xb5, 0x94, 0x76, 0x8d, 0xb6, - 0x93, 0x76, 0x8d, 0xb5, 0x94, 0x76, 0x8e, 0xb6, 0x93, 0x76, 0x8e, 0xb5, - 0x94, 0x76, 0x8e, 0xb6, 0x93, 0x76, 0x8f, 0xb5, 0x94, 0x76, 0x8f, 0xb6, - 0x93, 0x76, 0x90, 0xb5, 0x94, 0x76, 0x90, 0xb6, 0x93, 0x76, 0x91, 0xb5, - 0x94, 0x76, 0x91, 0xb6, 0x93, 0x76, 0x92, 0xb5, 0x94, 0x76, 0x92, 0xb5, - 0x94, 0x76, 0x93, 0xb5, 0x94, 0x76, 0x93, 0xb5, 0x94, 0x76, 0x93, 0xb5, - 0x94, 0x76, 0x93, 0xb5, 0x94, 0x76, 0x95, 0xb5, 0x94, 0x76, 0x96, 0xb5, - 0x95, 0x76, 0x95, 0xb5, 0x94, 0x76, 0x96, 0xb5, 0x95, 0x76, 0x96, 0xb5, - 0x94, 0x76, 0x97, 0xb5, 0x95, 0x76, 0x97, 0xb5, 0x94, 0x76, 0x98, 0xb5, - 0x95, 0x76, 0x98, 0xb5, 0x94, 0x76, 0x98, 0xb5, 0x95, 0x76, 0x99, 0xb3, - 0x95, 0x76, 0x99, 0xb5, 0x95, 0x76, 0x9a, 0xb3, 0x95, 0x76, 0x9a, 0xb9, - 0x9a, 0x76, 0x9a, 0xb9, 0x9a, 0x76, 0x9b, 0xb9, 0x9a, 0x76, 0x9b, 0xb9, - 0x9a, 0x76, 0x9c, 0xb9, 0x9a, 0x76, 0x9c, 0xb9, 0x9a, 0x76, 0x9d, 0xb9, - 0x9a, 0x76, 0x9d, 0xb9, 0x9a, 0x76, 0x9d, 0xba, 0x9d, 0x76, 0x9e, 0xba, - 0x9e, 0x76, 0x9e, 0xba, 0x9e, 0x76, 0x9f, 0xba, 0x9f, 0x76, 0x9f, 0xba, - 0x9f, 0x76, 0x9f, 0xba, 0x9f, 0x76, 0xa0, 0xba, 0x9f, 0x76, 0xa0, 0xba, - 0x9f, 0x76, 0xa1, 0xba, 0x9f, 0x76, 0xa1, 0xba, 0x9f, 0x76, 0xa1, 0xba, - 0x9f, 0x76, 0xa2, 0xba, 0xa2, 0x76, 0xa2, 0xba, 0xa2, 0x76, 0xa3, 0xba, - 0xa3, 0x76, 0xa3, 0xba, 0xa3, 0x76, 0xa3, 0xba, 0xa3, 0x76, 0xa4, 0xba, - 0xa3, 0x76, 0xa4, 0xaf, 0xa4, 0x76, 0xa5, 0xaf, 0xa5, 0x76, 0xa5, 0xb7, - 0xaa, 0x76, 0xa5, 0xb5, 0xab, 0x76, 0xa6, 0xb7, 0xaa, 0x76, 0xa6, 0xb5, - 0xab, 0x76, 0xa6, 0xb7, 0xaa, 0x76, 0xa7, 0xb5, 0xab, 0x76, 0xa7, 0xb7, - 0xaa, 0x76, 0xa8, 0xb5, 0xab, 0x76, 0xa8, 0xb5, 0xab, 0x76, 0xa8, 0xb5, - 0xab, 0x76, 0xa9, 0xb5, 0xab, 0x76, 0xa9, 0xb5, 0xab, 0x76, 0xaa, 0xb5, - 0xab, 0x76, 0xaa, 0xb5, 0xab, 0x76, 0xaa, 0xb5, 0xab, 0x76, 0xab, 0xb5, - 0xab, 0x75, 0xaa, 0xb5, 0xab, 0x76, 0xab, 0xb5, 0xab, 0x75, 0xaa, 0xb5, - 0xac, 0x76, 0xab, 0xb5, 0xac, 0x75, 0xaa, 0xb5, 0xac, 0x76, 0xab, 0xb5, - 0xad, 0x75, 0xaa, 0xb5, 0xad, 0x76, 0xab, 0xb5, 0xae, 0x75, 0xaa, 0xb5, - 0xae, 0x76, 0xab, 0xb5, 0xae, 0x75, 0xaa, 0xb5, 0xaf, 0x76, 0xab, 0xb5, - 0xaf, 0x75, 0xb0, 0xb5, 0xaf, 0x70, 0xb0, 0xb5, 0xb0, 0x70, 0xb0, 0xb5, - 0xb0, 0x70, 0xb0, 0xb5, 0xb0, 0x70, 0xb1, 0xb5, 0xb1, 0x70, 0xb1, 0xb5, - 0xb1, 0x70, 0xb2, 0xb5, 0xb2, 0x70, 0xb4, 0xb5, 0xb2, 0x71, 0xb4, 0xb5, - 0xb2, 0x71, 0xb4, 0xb5, 0xb3, 0x71, 0xb4, 0xb5, 0xb3, 0x71, 0xb4, 0xb5, - 0xb3, 0x71, 0xb4, 0xb5, 0xb4, 0x71, 0xb4, 0xb5, 0xb4, 0x71, 0xb4, 0xb5, - 0xb4, 0x71, 0xb5, 0xb5, 0xb5, 0x71, 0xb5, 0xb5, 0xb5, 0x71, 0xb5, 0xb5, - 0xb5, 0x71, 0xb6, 0xb5, 0xb6, 0x71, 0xb6, 0xb5, 0xb6, 0x71, 0xb8, 0xb5, - 0xb6, 0x72, 0xb8, 0xb5, 0xb7, 0x72, 0xb8, 0xb5, 0xb7, 0x72, 0xb8, 0xb5, - 0xb7, 0x72, 0xb8, 0xb5, 0xb8, 0x72, 0xb8, 0xb5, 0xb8, 0x72, 0xb8, 0xb5, - 0xb8, 0x72, 0xb9, 0xb5, 0xb9, 0x72, 0xb9, 0xb5, 0xb9, 0x72, 0xb9, 0xb5, - 0xb9, 0x72, 0xba, 0xb5, 0xba, 0x72, 0xbb, 0xb5, 0xba, 0x73, 0xbc, 0xb5, - 0xba, 0x73, 0xbb, 0xb5, 0xbb, 0x73, 0xbc, 0xb5, 0xbb, 0x73, 0xbb, 0xb5, - 0xbb, 0x73, 0xbc, 0xb5, 0xbc, 0x73, 0xbc, 0xb5, 0xbc, 0x73, 0xbc, 0xb5, - 0xbc, 0x73, 0xbd, 0xb5, 0xbd, 0x73, 0xbd, 0xb5, 0xbd, 0x73, 0xbd, 0xb5, - 0xbd, 0x73, 0xbf, 0xb5, 0xbe, 0x74, 0xbf, 0xb5, 0xbe, 0x74, 0xbf, 0xb5, - 0xbe, 0x74, 0xbf, 0xb5, 0xbf, 0x74, 0xbf, 0xb5, 0xbf, 0x74, 0xbf, 0xb5, - 0xbf, 0x74, 0xc0, 0xb5, 0xc0, 0x74, 0xc0, 0xb5, 0xc0, 0x74, 0xc0, 0xb5, - 0xc0, 0x74, 0xc1, 0xb5, 0xc1, 0x74, 0xc1, 0xb5, 0xc1, 0x74, 0xc1, 0xb5, - 0xc1, 0x74, 0xc1, 0xb5, 0xc1, 0x74, 0xc2, 0xb5, 0xc2, 0x75, 0xc3, 0xb5, - 0xc2, 0x75, 0xc2, 0xb5, 0xc2, 0x75, 0xc3, 0xb5, 0xc3, 0x75, 0xc3, 0xb5, - 0xc3, 0x75, 0xc3, 0xb5, 0xc3, 0x75, 0xc4, 0xb5, 0xc4, 0x75, 0xc4, 0xb5, - 0xc4, 0x75, 0xc4, 0xb5, 0xc4, 0x75, 0xc5, 0xb5, 0xc5, 0x75, 0xc5, 0xb5, - 0xc5, 0x75, 0xc5, 0xb5, 0xc5, 0x75, 0xc6, 0xb5, 0xc6, 0x75, 0xc6, 0xb5, - 0xc6, 0x75, 0xc6, 0xb6, 0xc6, 0x76, 0xc6, 0xb6, 0xc6, 0x76, 0xc7, 0xb6, - 0xc7, 0x76, 0xc7, 0xb6, 0xc7, 0x76, 0xc7, 0xb6, 0xc7, 0x76, 0xc8, 0xb6, - 0xc8, 0x76, 0xc8, 0xb6, 0xc8, 0x76, 0xc8, 0xb6, 0xc8, 0x76, 0xc9, 0xb6, - 0xc9, 0x76, 0xc9, 0xb6, 0xc9, 0x76, 0xc9, 0xb6, 0xc9, 0x76, 0xc9, 0xb6, - 0xc9, 0x76, 0xca, 0xb6, 0xc9, 0x76, 0xca, 0xb6, 0xca, 0x76, 0xca, 0xb6, - 0xca, 0x76, 0xcb, 0xb6, 0xcb, 0x76, 0xcb, 0xb6, 0xcb, 0x76, 0xcb, 0xb6, - 0xcb, 0x76, 0xcc, 0xb6, 0xcc, 0x76, 0xcc, 0xb6, 0xcc, 0x76, 0xcc, 0xb6, - 0xcc, 0x76, 0xcc, 0xb6, 0xcc, 0x76, 0xcd, 0xb6, 0xcc, 0x76, 0xcd, 0xb6, - 0xcc, 0x76, 0xcd, 0xb6, 0xcc, 0x76, 0xce, 0xb5, 0xcf, 0x76, 0xce, 0xb5, - 0xcf, 0x76, 0xce, 0xb5, 0xcf, 0x76, 0xce, 0xb5, 0xcf, 0x76, 0xcf, 0xb5, - 0xcf, 0x75, 0xce, 0xb5, 0xcf, 0x76, 0xcf, 0xb5, 0xcf, 0x75, 0xce, 0xb5, - 0xd0, 0x76, 0xcf, 0xb5, 0xd0, 0x75, 0xce, 0xb5, 0xd0, 0x76, 0xcf, 0xb5, - 0xd0, 0x75, 0xce, 0xb5, 0xd1, 0x76, 0xcf, 0xb5, 0xd1, 0x75, 0xcf, 0xb5, - 0xd1, 0x73, 0xcf, 0xb5, 0xd2, 0x75, 0xcf, 0xb5, 0xd2, 0x73, 0xcf, 0xb5, - 0xd2, 0x75, 0xcf, 0xb5, 0xd2, 0x73, 0xcf, 0xb5, 0xd3, 0x75, 0xcf, 0xb5, - 0xd3, 0x73, 0xcf, 0xb5, 0xd3, 0x75, 0xcf, 0xb5, 0xd4, 0x73, 0xcf, 0xb5, - 0xd4, 0x75, 0xcf, 0xb5, 0xd4, 0x73, 0xcf, 0xb5, 0xd4, 0x75, 0xcf, 0xb5, - 0xd5, 0x73, 0xcf, 0xb5, 0xd5, 0x75, 0xcf, 0xb5, 0xd5, 0x73, 0xcf, 0xb5, - 0xd6, 0x75, 0xcf, 0xb5, 0xd6, 0x73, 0xcf, 0xb5, 0xd6, 0x75, 0xcf, 0xb5, - 0xd6, 0x73, 0xcf, 0xb5, 0xd7, 0x75, 0xcf, 0xb5, 0xd7, 0x73, 0xcf, 0xb5, - 0xd7, 0x75, 0xcf, 0xb5, 0xd7, 0x73, 0xcf, 0xb5, 0xd8, 0x75, 0xcf, 0xb5, - 0xd8, 0x73, 0xcf, 0xb5, 0xd8, 0x75, 0xcf, 0xb5, 0xd9, 0x73, 0xcf, 0xb5, - 0xd9, 0x75, 0xcf, 0xb5, 0xd9, 0x73, 0xcf, 0xb5, 0xd9, 0x70, 0xcf, 0xb5, - 0xda, 0x73, 0xcf, 0xb5, 0xda, 0x70, 0xcf, 0xb5, 0xda, 0x73, 0xcf, 0xb5, - 0xda, 0x70, 0xcf, 0xb5, 0xdb, 0x73, 0xcf, 0xb5, 0xdb, 0x70, 0xcf, 0xb5, - 0xdb, 0x73, 0xcf, 0xb5, 0xdb, 0x70, 0xcf, 0xb5, 0xdc, 0x73, 0xcf, 0xb5, - 0xdc, 0x70, 0xcf, 0xb5, 0xdc, 0x73, 0xcf, 0xb5, 0xdd, 0x70, 0xcf, 0xb5, - 0xdd, 0x73, 0xcf, 0xb5, 0xdd, 0x70, 0xcf, 0xb5, 0xdd, 0x73, 0xeb, 0xb5, - 0xde, 0x77, 0xeb, 0xb5, 0xde, 0x7b, 0xeb, 0xb5, 0xde, 0x77, 0xeb, 0xb5, - 0xde, 0x7b, 0xeb, 0xb5, 0xdf, 0x77, 0xeb, 0xb5, 0xdf, 0x7b, 0xeb, 0xb5, - 0xdf, 0x77, 0xeb, 0xb5, 0xdf, 0x7b, 0xeb, 0xb5, 0xe0, 0x77, 0xeb, 0xb5, - 0xe0, 0x7b, 0xeb, 0xb5, 0xe0, 0x77, 0xeb, 0xb5, 0xe1, 0x7b, 0xeb, 0xb5, - 0xe1, 0x77, 0xeb, 0xb5, 0xe1, 0x7b, 0xeb, 0xb5, 0xe1, 0x77, 0xeb, 0xb5, - 0xe2, 0x7b, 0xeb, 0xb5, 0xe2, 0x77, 0xeb, 0xb5, 0xe2, 0x7b, 0xeb, 0xb5, - 0xe2, 0x77, 0xeb, 0xb5, 0xe3, 0x7b, 0xeb, 0xb5, 0xe3, 0x77, 0xeb, 0xb5, - 0xe3, 0x7b, 0xeb, 0xb5, 0xe3, 0x77, 0xeb, 0xb5, 0xe4, 0x7b, 0xeb, 0xb5, - 0xe4, 0x77, 0xeb, 0xb5, 0xe4, 0x7b, 0xeb, 0xb5, 0xe4, 0x77, 0xeb, 0xb5, - 0xe5, 0x7b, 0xeb, 0xb5, 0xe5, 0x77, 0xeb, 0xb5, 0xe5, 0x76, 0xeb, 0xb5, - 0xe5, 0x77, 0xeb, 0xb5, 0xe6, 0x76, 0xeb, 0xb5, 0xe6, 0x77, 0xeb, 0xb5, - 0xe6, 0x76, 0xeb, 0xb5, 0xe6, 0x77, 0xeb, 0xb5, 0xe7, 0x76, 0xeb, 0xb5, - 0xe7, 0x77, 0xeb, 0xb5, 0xe7, 0x76, 0xeb, 0xb5, 0xe7, 0x77, 0xeb, 0xb5, - 0xe8, 0x76, 0xeb, 0xb5, 0xe8, 0x77, 0xeb, 0xb5, 0xe8, 0x76, 0xeb, 0xb5, - 0xe8, 0x77, 0xeb, 0xb5, 0xe9, 0x76, 0xeb, 0xb5, 0xe9, 0x77, 0xeb, 0xb5, - 0xe9, 0x76, 0xeb, 0xb5, 0xe9, 0x77, 0xeb, 0xb5, 0xea, 0x76, 0xeb, 0xb5, - 0xea, 0x77, 0xeb, 0xb5, 0xea, 0x76, 0xeb, 0xb5, 0xea, 0x77, 0xeb, 0xb5, - 0xeb, 0x76, 0xeb, 0xb5, 0xeb, 0x76, 0xeb, 0xb5, 0xeb, 0x76, 0xeb, 0xb5, - 0xeb, 0x76, 0xec, 0xb5, 0xeb, 0x76, 0xec, 0xb5, 0xeb, 0x76, 0xec, 0xb5, - 0xeb, 0x76, 0xec, 0xb5, 0xeb, 0x76, 0xec, 0xb5, 0xeb, 0x76, 0xed, 0xb5, - 0xeb, 0x76, 0xed, 0xb5, 0xeb, 0x76, 0xed, 0xb5, 0xeb, 0x76, 0xed, 0xb5, - 0xeb, 0x76, 0xee, 0xb5, 0xeb, 0x76, 0xee, 0xb5, 0xeb, 0x76, 0xee, 0xb5, - 0xeb, 0x76, 0xee, 0xb5, 0xeb, 0x76, 0xef, 0xb5, 0xeb, 0x76, 0xef, 0xb2, - 0xeb, 0x76, 0xef, 0xb5, 0xeb, 0x76, 0xef, 0xb2, 0xeb, 0x76, 0xf0, 0xb5, - 0xeb, 0x76, 0xf0, 0xb2, 0xeb, 0x76, 0xf0, 0xb5, 0xeb, 0x76, 0xf0, 0xb2, - 0xeb, 0x76, 0xf1, 0xb6, 0xf6, 0x76, 0xf1, 0xb5, 0xf6, 0x76, 0xf1, 0xb6, - 0xf6, 0x76, 0xf1, 0xb5, 0xf6, 0x76, 0xf2, 0xb6, 0xf6, 0x76, 0xf2, 0xb5, - 0xf6, 0x76, 0xf2, 0xb6, 0xf6, 0x76, 0xf2, 0xb5, 0xf6, 0x76, 0xf2, 0xb6, - 0xf6, 0x76, 0xf3, 0xb5, 0xf6, 0x76, 0xf3, 0xb6, 0xf6, 0x76, 0xf3, 0xb5, - 0xf6, 0x76, 0xf3, 0xb6, 0xf6, 0x76, 0xf4, 0xb5, 0xf6, 0x76, 0xf4, 0xb6, - 0xf6, 0x76, 0xf4, 0xb5, 0xf6, 0x76, 0xf4, 0xb6, 0xf6, 0x76, 0xf5, 0xb5, - 0xf6, 0x76, 0xf5, 0xb6, 0xf6, 0x76, 0xf5, 0xb5, 0xf6, 0x76, 0xf5, 0xb5, - 0xf6, 0x76, 0xf5, 0xb5, 0xf6, 0x76, 0xf6, 0xb5, 0xf6, 0x76, 0xf5, 0xb5, - 0xf6, 0x76, 0xf6, 0xb5, 0xf6, 0x76, 0xf5, 0xb5, 0xf6, 0x76, 0xf6, 0xb5, - 0xf7, 0x76, 0xf5, 0xb5, 0xf7, 0x76, 0xf6, 0xb5, 0xf7, 0x76, 0xf5, 0xb5, - 0xf7, 0x76, 0xf6, 0xb5, 0xf8, 0x76, 0xfa, 0xb5, 0xf8, 0x78, 0xfa, 0xb5, - 0xf8, 0x76, 0xfa, 0xb5, 0xf8, 0x78, 0xfa, 0xb5, 0xf8, 0x76, 0xfa, 0xb5, - 0xf9, 0x78, 0xfa, 0xb5, 0xf9, 0x76, 0xfa, 0xb5, 0xf9, 0x76, 0xfa, 0xb5, - 0xf9, 0x76, 0xfa, 0xb5, 0xfa, 0x76, 0xfa, 0xb5, 0xf9, 0x76, 0xfa, 0xb5, - 0xfa, 0x76, 0xfa, 0xb5, 0xf9, 0x76, 0xfa, 0xb5, 0xfa, 0x76, 0xfb, 0xb4, - 0xfa, 0x76, 0xfb, 0xb5, 0xfa, 0x76, 0xfb, 0xb4, 0xfa, 0x76, 0xfb, 0xb5, - 0xfa, 0x76, 0xfc, 0xb4, 0xfa, 0x76, 0xfc, 0xb5, 0xfa, 0x76, 0xfc, 0xb4, - 0xfa, 0x76, 0xfc, 0xb5, 0xfa, 0x76, 0xfc, 0xb4, 0xfa, 0x76, 0xfd, 0xb5, - 0xfa, 0x76, 0xfd, 0xb4, 0xfa, 0x76, 0xfd, 0xb5, 0xfa, 0x76, 0xfd, 0xb4, - 0xfa, 0x76, 0xfe, 0xb5, 0xfa, 0x76, 0xfe, 0xb4, 0xfa, 0x76, 0xfe, 0xb5, - 0xfa, 0x76, 0xfe, 0xb4, 0xfa, 0x76, 0xfe, 0xb5, 0xfa, 0x76, 0xff, 0xb4, - 0xfa, 0x76, 0xff, 0xb5, 0xfa, 0x76, 0x03, 0xbd, 0x92, 0x76, 0x0a, 0xbf, - 0x91, 0x76, 0x0f, 0xbd, 0x92, 0x76, 0x14, 0xbf, 0x91, 0x76, 0x17, 0xbd, - 0x92, 0x76, 0x1b, 0xbf, 0x91, 0x76, 0x1e, 0xbd, 0x92, 0x76, 0x20, 0xbf, - 0x91, 0x76, 0x23, 0xbd, 0x92, 0x76, 0x25, 0xbf, 0x91, 0x76, 0x27, 0xbd, - 0x92, 0x76, 0x29, 0xbf, 0x91, 0x76, 0x2b, 0xbd, 0x92, 0x76, 0x2d, 0xbf, - 0x91, 0x76, 0x2f, 0xbd, 0x92, 0x76, 0x31, 0xbb, 0x92, 0x76, 0x32, 0xbd, - 0x92, 0x76, 0x34, 0xbb, 0x92, 0x76, 0x35, 0xbd, 0x92, 0x76, 0x37, 0xbb, - 0x92, 0x76, 0x38, 0xbd, 0x92, 0x76, 0x3a, 0xbb, 0x92, 0x76, 0x3b, 0xbd, - 0x92, 0x76, 0x3c, 0xbb, 0x92, 0x76, 0x3e, 0xbd, 0x92, 0x76, 0x3f, 0xbb, - 0x92, 0x76, 0x40, 0xbd, 0x92, 0x76, 0x42, 0xbb, 0x92, 0x76, 0x43, 0xbd, - 0x92, 0x76, 0x44, 0xbb, 0x92, 0x76, 0x45, 0xbd, 0x92, 0x76, 0x46, 0xbb, - 0x92, 0x76, 0x47, 0xbd, 0x92, 0x76, 0x48, 0xbb, 0x92, 0x76, 0x49, 0xbd, - 0x92, 0x76, 0x4a, 0xbb, 0x92, 0x76, 0x4b, 0xbd, 0x92, 0x76, 0x4c, 0xbb, - 0x92, 0x76, 0x4d, 0xbd, 0x92, 0x76, 0x4e, 0xbb, 0x92, 0x76, 0x4f, 0xbd, - 0x92, 0x76, 0x50, 0xbb, 0x92, 0x76, 0x51, 0xbd, 0x92, 0x76, 0x52, 0xbb, - 0x92, 0x76, 0x53, 0xbd, 0x92, 0x76, 0x54, 0xbb, 0x92, 0x76, 0x55, 0xbd, - 0x92, 0x76, 0x56, 0xbb, 0x92, 0x76, 0x57, 0xbd, 0x92, 0x76, 0x58, 0xbb, - 0x92, 0x76, 0x58, 0xbd, 0x92, 0x76, 0x59, 0xbb, 0x92, 0x76, 0x5a, 0xb9, - 0x93, 0x76, 0x5b, 0xbb, 0x92, 0x76, 0x5c, 0xb9, 0x93, 0x76, 0x5d, 0xbb, - 0x92, 0x76, 0x5d, 0xb9, 0x93, 0x76, 0x5e, 0xbb, 0x92, 0x76, 0x5f, 0xb9, - 0x93, 0x76, 0x60, 0xbb, 0x92, 0x76, 0x60, 0xb9, 0x93, 0x76, 0x61, 0xbb, - 0x92, 0x76, 0x62, 0xb9, 0x93, 0x76, 0x63, 0xbb, 0x92, 0x76, 0x63, 0xb9, - 0x93, 0x76, 0x64, 0xbb, 0x92, 0x76, 0x65, 0xb9, 0x93, 0x76, 0x66, 0xbb, - 0x92, 0x76, 0x66, 0xb9, 0x93, 0x76, 0x67, 0xbb, 0x92, 0x76, 0x68, 0xb9, - 0x93, 0x76, 0x68, 0xbb, 0x92, 0x76, 0x69, 0xb9, 0x93, 0x76, 0x6a, 0xbb, - 0x92, 0x76, 0x6a, 0xb9, 0x93, 0x76, 0x6b, 0xbb, 0x92, 0x76, 0x6c, 0xb9, - 0x93, 0x76, 0x6c, 0xbb, 0x92, 0x76, 0x6d, 0xb9, 0x93, 0x76, 0x6e, 0xbb, - 0x92, 0x76, 0x6e, 0xb9, 0x93, 0x76, 0x6f, 0xbb, 0x92, 0x76, 0x70, 0xb9, - 0x93, 0x76, 0x70, 0xbb, 0x92, 0x76, 0x71, 0xb9, 0x93, 0x76, 0x72, 0xb6, - 0x93, 0x76, 0x72, 0xb9, 0x93, 0x76, 0x73, 0xb6, 0x93, 0x76, 0x73, 0xb9, - 0x93, 0x76, 0x74, 0xb6, 0x93, 0x76, 0x75, 0xb9, 0x93, 0x76, 0x75, 0xb6, - 0x93, 0x76, 0x76, 0xb9, 0x93, 0x76, 0x76, 0xb6, 0x93, 0x76, 0x77, 0xb9, - 0x93, 0x76, 0x78, 0xb6, 0x93, 0x76, 0x78, 0xb9, 0x93, 0x76, 0x79, 0xb6, - 0x93, 0x76, 0x79, 0xb9, 0x93, 0x76, 0x7a, 0xb6, 0x93, 0x76, 0x7a, 0xb9, - 0x93, 0x76, 0x7b, 0xb6, 0x93, 0x76, 0x7c, 0xb9, 0x93, 0x76, 0x7c, 0xb6, - 0x93, 0x76, 0x7d, 0xb9, 0x93, 0x76, 0x7d, 0xb6, 0x93, 0x76, 0x7e, 0xb9, - 0x93, 0x76, 0x7e, 0xb6, 0x93, 0x76, 0x7f, 0xb9, 0x93, 0x76, 0x7f, 0xb6, - 0x93, 0x76, 0x80, 0xb9, 0x93, 0x76, 0x81, 0xb6, 0x93, 0x76, 0x81, 0xb9, - 0x93, 0x76, 0x82, 0xb6, 0x93, 0x76, 0x82, 0xb9, 0x93, 0x76, 0x83, 0xb6, - 0x93, 0x76, 0x83, 0xb9, 0x93, 0x76, 0x84, 0xb6, 0x93, 0x76, 0x84, 0xb9, - 0x93, 0x76, 0x85, 0xb6, 0x93, 0x76, 0x85, 0xb9, 0x93, 0x76, 0x86, 0xb6, - 0x93, 0x76, 0x86, 0xb9, 0x93, 0x76, 0x87, 0xb6, 0x93, 0x76, 0x87, 0xb9, - 0x93, 0x76, 0x88, 0xb6, 0x93, 0x76, 0x88, 0xb5, 0x94, 0x76, 0x89, 0xb6, - 0x93, 0x76, 0x89, 0xb5, 0x94, 0x76, 0x8a, 0xb6, 0x93, 0x76, 0x8a, 0xb5, - 0x94, 0x76, 0x8b, 0xb6, 0x93, 0x76, 0x8b, 0xb5, 0x94, 0x76, 0x8c, 0xb6, - 0x93, 0x76, 0x8c, 0xb5, 0x94, 0x76, 0x8d, 0xb6, 0x93, 0x76, 0x8d, 0xb5, - 0x94, 0x76, 0x8e, 0xb6, 0x93, 0x76, 0x8e, 0xb5, 0x94, 0x76, 0x8e, 0xb6, - 0x93, 0x76, 0x8f, 0xb5, 0x94, 0x76, 0x8f, 0xb6, 0x93, 0x76, 0x90, 0xb5, - 0x94, 0x76, 0x90, 0xb6, 0x93, 0x76, 0x91, 0xb5, 0x94, 0x76, 0x91, 0xb6, - 0x93, 0x76, 0x92, 0xb5, 0x94, 0x76, 0x92, 0xb6, 0x93, 0x76, 0x93, 0xb5, - 0x94, 0x76, 0x93, 0xb6, 0x93, 0x76, 0x93, 0xb5, 0x94, 0x76, 0x93, 0xb5, - 0x94, 0x76, 0x95, 0xb5, 0x94, 0x76, 0x96, 0xb5, 0x95, 0x76, 0x95, 0xb5, - 0x94, 0x76, 0x96, 0xb5, 0x95, 0x76, 0x96, 0xb5, 0x94, 0x76, 0x97, 0xb5, - 0x95, 0x76, 0x97, 0xb5, 0x94, 0x76, 0x98, 0xb5, 0x95, 0x76, 0x98, 0xb5, - 0x94, 0x76, 0x98, 0xb5, 0x95, 0x76, 0x99, 0xb3, 0x95, 0x76, 0x99, 0xb5, - 0x95, 0x76, 0x9a, 0xb9, 0x98, 0x76, 0x9a, 0xb9, 0x98, 0x76, 0x9a, 0xb9, - 0x98, 0x76, 0x9b, 0xb9, 0x9b, 0x76, 0x9b, 0xb9, 0x9b, 0x76, 0x9c, 0xb9, - 0x9c, 0x76, 0x9c, 0xb9, 0x9c, 0x76, 0x9d, 0xb9, 0x9d, 0x76, 0x9d, 0xb9, - 0x9d, 0x76, 0x9d, 0xb9, 0x9d, 0x76, 0x9e, 0xb9, 0x9d, 0x76, 0x9e, 0xb9, - 0x9d, 0x76, 0x9f, 0xb9, 0x9d, 0x76, 0x9f, 0xb9, 0x9d, 0x76, 0x9f, 0xb9, - 0x9d, 0x76, 0xa0, 0xba, 0xa0, 0x76, 0xa0, 0xba, 0xa0, 0x76, 0xa1, 0xba, - 0xa1, 0x76, 0xa1, 0xba, 0xa1, 0x76, 0xa1, 0xba, 0xa1, 0x76, 0xa2, 0xba, - 0xa1, 0x76, 0xa2, 0xba, 0xa1, 0x76, 0xa3, 0xba, 0xa1, 0x76, 0xa3, 0xba, - 0xa1, 0x76, 0xa3, 0xba, 0xa1, 0x76, 0xa4, 0xba, 0xa1, 0x76, 0xa4, 0xbb, - 0xa4, 0x76, 0xa5, 0xbb, 0xa5, 0x76, 0xa5, 0xb7, 0xaa, 0x76, 0xa5, 0xb5, - 0xab, 0x76, 0xa6, 0xb7, 0xaa, 0x76, 0xa6, 0xb5, 0xab, 0x76, 0xa6, 0xb7, - 0xaa, 0x76, 0xa7, 0xb5, 0xab, 0x76, 0xa7, 0xb7, 0xaa, 0x76, 0xa8, 0xb5, - 0xab, 0x76, 0xa8, 0xb7, 0xaa, 0x76, 0xa8, 0xb5, 0xab, 0x76, 0xa9, 0xb7, - 0xaa, 0x76, 0xa9, 0xb5, 0xab, 0x76, 0xaa, 0xb5, 0xab, 0x76, 0xaa, 0xb5, - 0xab, 0x76, 0xaa, 0xb5, 0xab, 0x76, 0xab, 0xb5, 0xab, 0x75, 0xaa, 0xb5, - 0xab, 0x76, 0xab, 0xb5, 0xab, 0x75, 0xaa, 0xb5, 0xac, 0x76, 0xab, 0xb5, - 0xac, 0x75, 0xaa, 0xb5, 0xac, 0x76, 0xab, 0xb5, 0xad, 0x75, 0xaa, 0xb5, - 0xad, 0x76, 0xab, 0xb5, 0xae, 0x75, 0xaa, 0xb5, 0xae, 0x76, 0xab, 0xb5, - 0xae, 0x75, 0xaa, 0xb5, 0xaf, 0x76, 0xab, 0xb5, 0xaf, 0x75, 0xaf, 0xb5, - 0xaf, 0x6f, 0xb2, 0xb5, 0xb0, 0x70, 0xb2, 0xb5, 0xb0, 0x70, 0xb2, 0xb5, - 0xb0, 0x70, 0xb2, 0xb5, 0xb1, 0x70, 0xb2, 0xb5, 0xb1, 0x70, 0xb2, 0xb5, - 0xb2, 0x70, 0xb2, 0xb5, 0xb2, 0x70, 0xb2, 0xb5, 0xb2, 0x70, 0xb3, 0xb5, - 0xb3, 0x70, 0xb3, 0xb5, 0xb3, 0x70, 0xb3, 0xb5, 0xb3, 0x70, 0xb6, 0xb5, - 0xb4, 0x71, 0xb6, 0xb5, 0xb4, 0x71, 0xb6, 0xb5, 0xb4, 0x71, 0xb6, 0xb5, - 0xb5, 0x71, 0xb6, 0xb5, 0xb5, 0x71, 0xb6, 0xb5, 0xb5, 0x71, 0xb6, 0xb5, - 0xb6, 0x71, 0xb6, 0xb5, 0xb6, 0x71, 0xb6, 0xb5, 0xb6, 0x71, 0xb7, 0xb5, - 0xb7, 0x71, 0xb7, 0xb5, 0xb7, 0x71, 0xb7, 0xb5, 0xb7, 0x71, 0xb8, 0xb5, - 0xb8, 0x71, 0xb8, 0xb5, 0xb8, 0x71, 0xba, 0xb5, 0xb8, 0x72, 0xba, 0xb5, - 0xb9, 0x72, 0xba, 0xb5, 0xb9, 0x72, 0xba, 0xb5, 0xb9, 0x72, 0xba, 0xb5, - 0xba, 0x72, 0xba, 0xb5, 0xba, 0x72, 0xba, 0xb5, 0xba, 0x72, 0xbb, 0xb5, - 0xbb, 0x72, 0xbb, 0xb5, 0xbb, 0x72, 0xbb, 0xb5, 0xbb, 0x72, 0xbc, 0xb5, - 0xbc, 0x72, 0xbd, 0xb5, 0xbc, 0x73, 0xbe, 0xb5, 0xbc, 0x73, 0xbd, 0xb5, - 0xbd, 0x73, 0xbe, 0xb5, 0xbd, 0x73, 0xbd, 0xb5, 0xbd, 0x73, 0xbe, 0xb5, - 0xbe, 0x73, 0xbe, 0xb5, 0xbe, 0x73, 0xbe, 0xb5, 0xbe, 0x73, 0xbf, 0xb5, - 0xbf, 0x73, 0xbf, 0xb5, 0xbf, 0x73, 0xbf, 0xb5, 0xbf, 0x73, 0xc1, 0xb5, - 0xc0, 0x74, 0xc1, 0xb5, 0xc0, 0x74, 0xc1, 0xb5, 0xc0, 0x74, 0xc1, 0xb5, - 0xc1, 0x74, 0xc1, 0xb5, 0xc1, 0x74, 0xc1, 0xb5, 0xc1, 0x74, 0xc1, 0xb5, - 0xc1, 0x74, 0xc2, 0xb5, 0xc2, 0x74, 0xc2, 0xb5, 0xc2, 0x74, 0xc2, 0xb5, - 0xc2, 0x74, 0xc3, 0xb5, 0xc3, 0x74, 0xc3, 0xb5, 0xc3, 0x74, 0xc3, 0xb5, - 0xc3, 0x74, 0xc4, 0xb5, 0xc4, 0x75, 0xc5, 0xb5, 0xc4, 0x75, 0xc4, 0xb5, - 0xc4, 0x75, 0xc5, 0xb5, 0xc5, 0x75, 0xc5, 0xb5, 0xc5, 0x75, 0xc5, 0xb5, - 0xc5, 0x75, 0xc6, 0xb5, 0xc6, 0x75, 0xc6, 0xb5, 0xc6, 0x75, 0xc6, 0xb5, - 0xc6, 0x75, 0xc6, 0xb5, 0xc6, 0x75, 0xc7, 0xb5, 0xc7, 0x75, 0xc7, 0xb5, - 0xc7, 0x75, 0xc7, 0xb5, 0xc7, 0x75, 0xc8, 0xb6, 0xc8, 0x76, 0xc8, 0xb6, - 0xc8, 0x76, 0xc8, 0xb6, 0xc8, 0x76, 0xc9, 0xb6, 0xc9, 0x76, 0xc9, 0xb6, - 0xc9, 0x76, 0xc9, 0xb6, 0xc9, 0x76, 0xc9, 0xb6, 0xc9, 0x76, 0xca, 0xb6, - 0xca, 0x76, 0xca, 0xb6, 0xca, 0x76, 0xca, 0xb6, 0xca, 0x76, 0xcb, 0xb6, - 0xcb, 0x76, 0xcb, 0xb6, 0xca, 0x76, 0xcb, 0xb6, 0xcb, 0x76, 0xcc, 0xb7, - 0xcc, 0x76, 0xcc, 0xb7, 0xcc, 0x76, 0xcc, 0xb7, 0xcc, 0x76, 0xcc, 0xb7, - 0xcc, 0x76, 0xcd, 0xb7, 0xcd, 0x76, 0xcd, 0xb7, 0xcd, 0x76, 0xcd, 0xb7, - 0xcd, 0x76, 0xce, 0xb7, 0xce, 0x76, 0xce, 0xb7, 0xce, 0x76, 0xce, 0xb5, - 0xcf, 0x76, 0xce, 0xb5, 0xcf, 0x76, 0xcf, 0xb5, 0xcf, 0x75, 0xce, 0xb5, - 0xcf, 0x76, 0xcf, 0xb5, 0xcf, 0x75, 0xce, 0xb5, 0xd0, 0x76, 0xcf, 0xb5, - 0xd0, 0x75, 0xce, 0xb5, 0xd0, 0x76, 0xcf, 0xb5, 0xd0, 0x75, 0xce, 0xb5, - 0xd1, 0x76, 0xcf, 0xb5, 0xd1, 0x75, 0xce, 0xb5, 0xd1, 0x76, 0xcf, 0xb5, - 0xd2, 0x75, 0xce, 0xb5, 0xd2, 0x76, 0xcf, 0xb5, 0xd2, 0x75, 0xce, 0xb5, - 0xd2, 0x76, 0xcf, 0xb5, 0xd3, 0x75, 0xce, 0xb5, 0xd3, 0x76, 0xcf, 0xb5, - 0xd3, 0x75, 0xcf, 0xb5, 0xd4, 0x72, 0xcf, 0xb5, 0xd4, 0x75, 0xcf, 0xb5, - 0xd4, 0x72, 0xcf, 0xb5, 0xd4, 0x75, 0xcf, 0xb5, 0xd5, 0x72, 0xcf, 0xb5, - 0xd5, 0x75, 0xcf, 0xb5, 0xd5, 0x72, 0xcf, 0xb5, 0xd6, 0x75, 0xcf, 0xb5, - 0xd6, 0x72, 0xcf, 0xb5, 0xd6, 0x75, 0xcf, 0xb5, 0xd6, 0x72, 0xcf, 0xb5, - 0xd7, 0x75, 0xcf, 0xb5, 0xd7, 0x72, 0xcf, 0xb5, 0xd7, 0x75, 0xcf, 0xb5, - 0xd7, 0x72, 0xcf, 0xb5, 0xd8, 0x75, 0xcf, 0xb5, 0xd8, 0x72, 0xcf, 0xb5, - 0xd8, 0x75, 0xcf, 0xb5, 0xd9, 0x72, 0xcf, 0xb5, 0xd9, 0x75, 0xcf, 0xb5, - 0xd9, 0x72, 0xcf, 0xb5, 0xd9, 0x75, 0xcf, 0xb5, 0xda, 0x72, 0xcf, 0xb5, - 0xda, 0x75, 0xcf, 0xb5, 0xda, 0x72, 0xcf, 0xb5, 0xda, 0x75, 0xcf, 0xb5, - 0xdb, 0x72, 0xcf, 0xb5, 0xdb, 0x75, 0xcf, 0xb5, 0xdb, 0x72, 0xcf, 0xb5, - 0xdb, 0x75, 0xcf, 0xb5, 0xdc, 0x72, 0xcf, 0xb5, 0xdc, 0x75, 0xcf, 0xb5, - 0xdc, 0x72, 0xcf, 0xb5, 0xdd, 0x6f, 0xcf, 0xb5, 0xdd, 0x72, 0xcf, 0xb5, - 0xdd, 0x6f, 0xcf, 0xb5, 0xdd, 0x72, 0xeb, 0xb5, 0xde, 0x76, 0xeb, 0xb5, - 0xde, 0x7a, 0xeb, 0xb5, 0xde, 0x76, 0xeb, 0xb5, 0xde, 0x7a, 0xeb, 0xb5, - 0xdf, 0x76, 0xeb, 0xb5, 0xdf, 0x7a, 0xeb, 0xb5, 0xdf, 0x76, 0xeb, 0xb5, - 0xdf, 0x7a, 0xeb, 0xb5, 0xe0, 0x76, 0xeb, 0xb5, 0xe0, 0x7a, 0xeb, 0xb5, - 0xe0, 0x76, 0xeb, 0xb5, 0xe1, 0x7a, 0xeb, 0xb5, 0xe1, 0x76, 0xeb, 0xb5, - 0xe1, 0x7a, 0xeb, 0xb5, 0xe1, 0x76, 0xeb, 0xb5, 0xe2, 0x7a, 0xeb, 0xb5, - 0xe2, 0x76, 0xeb, 0xb5, 0xe2, 0x7a, 0xeb, 0xb5, 0xe2, 0x76, 0xeb, 0xb5, - 0xe3, 0x7a, 0xeb, 0xb5, 0xe3, 0x76, 0xeb, 0xb5, 0xe3, 0x7a, 0xeb, 0xb5, - 0xe3, 0x76, 0xeb, 0xb5, 0xe4, 0x7a, 0xeb, 0xb5, 0xe4, 0x76, 0xeb, 0xb5, - 0xe4, 0x7a, 0xeb, 0xb5, 0xe4, 0x76, 0xeb, 0xb5, 0xe5, 0x7a, 0xeb, 0xb5, - 0xe5, 0x76, 0xeb, 0xb5, 0xe5, 0x7a, 0xeb, 0xb5, 0xe5, 0x76, 0xeb, 0xb5, - 0xe6, 0x7a, 0xeb, 0xb5, 0xe6, 0x76, 0xeb, 0xb5, 0xe6, 0x7a, 0xeb, 0xb5, - 0xe6, 0x76, 0xeb, 0xb5, 0xe7, 0x7a, 0xeb, 0xb5, 0xe7, 0x76, 0xeb, 0xb5, - 0xe7, 0x76, 0xeb, 0xb5, 0xe7, 0x76, 0xeb, 0xb5, 0xe8, 0x76, 0xeb, 0xb5, - 0xe8, 0x76, 0xeb, 0xb5, 0xe8, 0x76, 0xeb, 0xb5, 0xe8, 0x76, 0xeb, 0xb5, - 0xe9, 0x76, 0xeb, 0xb5, 0xe9, 0x76, 0xeb, 0xb5, 0xe9, 0x76, 0xeb, 0xb5, - 0xe9, 0x76, 0xeb, 0xb5, 0xea, 0x76, 0xeb, 0xb5, 0xea, 0x76, 0xeb, 0xb5, - 0xea, 0x76, 0xeb, 0xb5, 0xea, 0x76, 0xeb, 0xb5, 0xeb, 0x76, 0xeb, 0xb5, - 0xeb, 0x76, 0xeb, 0xb5, 0xeb, 0x76, 0xeb, 0xb5, 0xeb, 0x76, 0xec, 0xb5, - 0xeb, 0x76, 0xec, 0xb5, 0xeb, 0x76, 0xec, 0xb5, 0xeb, 0x76, 0xec, 0xb5, - 0xeb, 0x76, 0xec, 0xb5, 0xeb, 0x76, 0xed, 0xb5, 0xeb, 0x76, 0xed, 0xb5, - 0xeb, 0x76, 0xed, 0xb5, 0xeb, 0x76, 0xed, 0xb5, 0xeb, 0x76, 0xee, 0xb5, - 0xeb, 0x76, 0xee, 0xb5, 0xeb, 0x76, 0xee, 0xb5, 0xeb, 0x76, 0xee, 0xb5, - 0xeb, 0x76, 0xef, 0xb5, 0xeb, 0x76, 0xef, 0xb5, 0xeb, 0x76, 0xef, 0xb5, - 0xeb, 0x76, 0xef, 0xb5, 0xeb, 0x76, 0xf0, 0xb5, 0xeb, 0x76, 0xf0, 0xb5, - 0xeb, 0x76, 0xf0, 0xb5, 0xeb, 0x76, 0xf0, 0xb5, 0xeb, 0x76, 0xf1, 0xb7, - 0xf6, 0x76, 0xf1, 0xb5, 0xf6, 0x76, 0xf1, 0xb7, 0xf6, 0x76, 0xf1, 0xb5, - 0xf6, 0x76, 0xf2, 0xb7, 0xf6, 0x76, 0xf2, 0xb5, 0xf6, 0x76, 0xf2, 0xb7, - 0xf6, 0x76, 0xf2, 0xb5, 0xf6, 0x76, 0xf2, 0xb7, 0xf6, 0x76, 0xf3, 0xb5, - 0xf6, 0x76, 0xf3, 0xb7, 0xf6, 0x76, 0xf3, 0xb5, 0xf6, 0x76, 0xf3, 0xb7, - 0xf6, 0x76, 0xf4, 0xb5, 0xf6, 0x76, 0xf4, 0xb7, 0xf6, 0x76, 0xf4, 0xb5, - 0xf6, 0x76, 0xf4, 0xb7, 0xf6, 0x76, 0xf5, 0xb5, 0xf6, 0x76, 0xf5, 0xb7, - 0xf6, 0x76, 0xf5, 0xb5, 0xf6, 0x76, 0xf5, 0xb5, 0xf6, 0x76, 0xf5, 0xb5, - 0xf6, 0x76, 0xf6, 0xb5, 0xf6, 0x76, 0xf5, 0xb5, 0xf6, 0x76, 0xf6, 0xb5, - 0xf6, 0x76, 0xf5, 0xb5, 0xf6, 0x76, 0xf6, 0xb5, 0xf7, 0x76, 0xf5, 0xb5, - 0xf7, 0x76, 0xf6, 0xb5, 0xf7, 0x76, 0xf5, 0xb5, 0xf7, 0x76, 0xf6, 0xb5, - 0xf8, 0x76, 0xfa, 0xb5, 0xf8, 0x77, 0xfa, 0xb5, 0xf8, 0x76, 0xfa, 0xb5, - 0xf8, 0x77, 0xfa, 0xb5, 0xf8, 0x76, 0xfa, 0xb5, 0xf9, 0x77, 0xfa, 0xb5, - 0xf9, 0x76, 0xfa, 0xb5, 0xf9, 0x77, 0xfa, 0xb5, 0xf9, 0x76, 0xfa, 0xb5, - 0xfa, 0x76, 0xfa, 0xb5, 0xf9, 0x76, 0xfa, 0xb5, 0xfa, 0x76, 0xfa, 0xb5, - 0xf9, 0x76, 0xfa, 0xb5, 0xfa, 0x76, 0xfb, 0xb4, 0xfa, 0x76, 0xfb, 0xb5, - 0xfa, 0x76, 0xfb, 0xb4, 0xfa, 0x76, 0xfb, 0xb5, 0xfa, 0x76, 0xfc, 0xb4, - 0xfa, 0x76, 0xfc, 0xb5, 0xfa, 0x76, 0xfc, 0xb4, 0xfa, 0x76, 0xfc, 0xb5, - 0xfa, 0x76, 0xfc, 0xb4, 0xfa, 0x76, 0xfd, 0xb5, 0xfa, 0x76, 0xfd, 0xb4, - 0xfa, 0x76, 0xfd, 0xb5, 0xfa, 0x76, 0xfd, 0xb4, 0xfa, 0x76, 0xfe, 0xb5, - 0xfa, 0x76, 0xfe, 0xb4, 0xfa, 0x76, 0xfe, 0xb5, 0xfa, 0x76, 0xfe, 0xb4, - 0xfa, 0x76, 0xfe, 0xb5, 0xfa, 0x76, 0xff, 0xb4, 0xfa, 0x76, 0xff, 0xb5, - 0xfa, 0x76, 0x03, 0xbd, 0x92, 0x77, 0x0a, 0xba, 0x92, 0x77, 0x0f, 0xbd, - 0x92, 0x77, 0x14, 0xba, 0x92, 0x77, 0x17, 0xbd, 0x92, 0x77, 0x1b, 0xba, - 0x92, 0x77, 0x1e, 0xbd, 0x92, 0x77, 0x20, 0xba, 0x92, 0x77, 0x23, 0xbd, - 0x92, 0x77, 0x25, 0xba, 0x92, 0x77, 0x27, 0xbd, 0x92, 0x77, 0x29, 0xba, - 0x92, 0x77, 0x2b, 0xbd, 0x92, 0x77, 0x2d, 0xba, 0x92, 0x77, 0x2f, 0xbd, - 0x92, 0x77, 0x31, 0xba, 0x92, 0x77, 0x32, 0xbd, 0x92, 0x77, 0x34, 0xba, - 0x92, 0x77, 0x35, 0xbd, 0x92, 0x77, 0x37, 0xba, 0x92, 0x77, 0x38, 0xbd, - 0x92, 0x77, 0x3a, 0xba, 0x92, 0x77, 0x3b, 0xbd, 0x92, 0x77, 0x3c, 0xba, - 0x92, 0x77, 0x3e, 0xbd, 0x92, 0x77, 0x3f, 0xba, 0x92, 0x77, 0x40, 0xbd, - 0x92, 0x77, 0x42, 0xba, 0x92, 0x77, 0x43, 0xbd, 0x92, 0x77, 0x44, 0xba, - 0x92, 0x77, 0x45, 0xbd, 0x92, 0x77, 0x46, 0xba, 0x92, 0x77, 0x47, 0xbd, - 0x92, 0x77, 0x48, 0xba, 0x92, 0x77, 0x49, 0xbd, 0x92, 0x77, 0x4a, 0xba, - 0x92, 0x77, 0x4b, 0xbd, 0x92, 0x77, 0x4c, 0xba, 0x92, 0x77, 0x4d, 0xbd, - 0x92, 0x77, 0x4e, 0xba, 0x92, 0x77, 0x4f, 0xbd, 0x92, 0x77, 0x50, 0xba, - 0x92, 0x77, 0x51, 0xbd, 0x92, 0x77, 0x52, 0xba, 0x92, 0x77, 0x53, 0xb8, - 0x93, 0x77, 0x54, 0xba, 0x92, 0x77, 0x55, 0xb8, 0x93, 0x77, 0x56, 0xba, - 0x92, 0x77, 0x57, 0xb8, 0x93, 0x77, 0x58, 0xba, 0x92, 0x77, 0x58, 0xb8, - 0x93, 0x77, 0x59, 0xba, 0x92, 0x77, 0x5a, 0xb8, 0x93, 0x77, 0x5b, 0xba, - 0x92, 0x77, 0x5c, 0xb8, 0x93, 0x77, 0x5d, 0xba, 0x92, 0x77, 0x5d, 0xb8, - 0x93, 0x77, 0x5e, 0xba, 0x92, 0x77, 0x5f, 0xb8, 0x93, 0x77, 0x60, 0xba, - 0x92, 0x77, 0x60, 0xb8, 0x93, 0x77, 0x61, 0xba, 0x92, 0x77, 0x62, 0xb8, - 0x93, 0x77, 0x63, 0xba, 0x92, 0x77, 0x63, 0xb8, 0x93, 0x77, 0x64, 0xba, - 0x92, 0x77, 0x65, 0xb8, 0x93, 0x77, 0x66, 0xba, 0x92, 0x77, 0x66, 0xb8, - 0x93, 0x77, 0x67, 0xba, 0x92, 0x77, 0x68, 0xb8, 0x93, 0x77, 0x68, 0xba, - 0x92, 0x77, 0x69, 0xb8, 0x93, 0x77, 0x6a, 0xba, 0x92, 0x77, 0x6a, 0xb8, - 0x93, 0x77, 0x6b, 0xba, 0x92, 0x77, 0x6c, 0xb8, 0x93, 0x77, 0x6c, 0xba, - 0x92, 0x77, 0x6d, 0xb8, 0x93, 0x77, 0x6e, 0xba, 0x92, 0x77, 0x6e, 0xb8, - 0x93, 0x77, 0x6f, 0xba, 0x92, 0x77, 0x70, 0xb8, 0x93, 0x77, 0x70, 0xba, - 0x92, 0x77, 0x71, 0xb8, 0x93, 0x77, 0x72, 0xba, 0x92, 0x77, 0x72, 0xb8, - 0x93, 0x77, 0x73, 0xba, 0x92, 0x77, 0x73, 0xb8, 0x93, 0x77, 0x74, 0xba, - 0x92, 0x77, 0x75, 0xb8, 0x93, 0x77, 0x75, 0xba, 0x92, 0x77, 0x76, 0xb8, - 0x93, 0x77, 0x76, 0xba, 0x92, 0x77, 0x77, 0xb8, 0x93, 0x77, 0x78, 0xba, - 0x92, 0x77, 0x78, 0xb8, 0x93, 0x77, 0x79, 0xba, 0x92, 0x77, 0x79, 0xb8, - 0x93, 0x77, 0x7a, 0xba, 0x92, 0x77, 0x7a, 0xb8, 0x93, 0x77, 0x7b, 0xb6, - 0x93, 0x77, 0x7c, 0xb8, 0x93, 0x77, 0x7c, 0xb6, 0x93, 0x77, 0x7d, 0xb8, - 0x93, 0x77, 0x7d, 0xb6, 0x93, 0x77, 0x7e, 0xb8, 0x93, 0x77, 0x7e, 0xb6, - 0x93, 0x77, 0x7f, 0xb8, 0x93, 0x77, 0x7f, 0xb6, 0x93, 0x77, 0x80, 0xb8, - 0x93, 0x77, 0x81, 0xb6, 0x93, 0x77, 0x81, 0xb8, 0x93, 0x77, 0x82, 0xb6, - 0x93, 0x77, 0x82, 0xb8, 0x93, 0x77, 0x83, 0xb6, 0x93, 0x77, 0x83, 0xb8, - 0x93, 0x77, 0x84, 0xb6, 0x93, 0x77, 0x84, 0xb8, 0x93, 0x77, 0x85, 0xb6, - 0x93, 0x77, 0x85, 0xb8, 0x93, 0x77, 0x86, 0xb6, 0x93, 0x77, 0x86, 0xb8, - 0x93, 0x77, 0x87, 0xb6, 0x93, 0x77, 0x87, 0xb8, 0x93, 0x77, 0x88, 0xb6, - 0x93, 0x77, 0x88, 0xb8, 0x93, 0x77, 0x89, 0xb6, 0x93, 0x77, 0x89, 0xb8, - 0x93, 0x77, 0x8a, 0xb6, 0x93, 0x77, 0x8a, 0xb8, 0x93, 0x77, 0x8b, 0xb6, - 0x93, 0x77, 0x8b, 0xb8, 0x93, 0x77, 0x8c, 0xb6, 0x93, 0x77, 0x8c, 0xb6, - 0x94, 0x77, 0x8d, 0xb6, 0x93, 0x77, 0x8d, 0xb6, 0x94, 0x77, 0x8e, 0xb6, - 0x93, 0x77, 0x8e, 0xb6, 0x94, 0x77, 0x8e, 0xb6, 0x93, 0x77, 0x8f, 0xb6, - 0x94, 0x77, 0x8f, 0xb6, 0x93, 0x77, 0x90, 0xb6, 0x94, 0x77, 0x90, 0xb6, - 0x93, 0x77, 0x91, 0xb6, 0x94, 0x77, 0x91, 0xb6, 0x93, 0x77, 0x92, 0xb6, - 0x94, 0x77, 0x92, 0xb6, 0x93, 0x77, 0x93, 0xb6, 0x94, 0x77, 0x93, 0xb6, - 0x93, 0x77, 0x93, 0xb6, 0x94, 0x77, 0x93, 0xb6, 0x94, 0x77, 0x95, 0xb6, - 0x94, 0x77, 0x95, 0xb5, 0x95, 0x77, 0x95, 0xb6, 0x94, 0x77, 0x96, 0xb5, - 0x95, 0x77, 0x96, 0xb6, 0x94, 0x77, 0x97, 0xb5, 0x95, 0x77, 0x97, 0xb6, - 0x94, 0x77, 0x98, 0xb5, 0x95, 0x77, 0x98, 0xb6, 0x94, 0x77, 0x98, 0xb5, - 0x95, 0x77, 0x99, 0xb6, 0x94, 0x77, 0x99, 0xb9, 0x99, 0x77, 0x9a, 0xb9, - 0x9a, 0x77, 0x9a, 0xb9, 0x9a, 0x77, 0x9a, 0xb9, 0x9a, 0x77, 0x9b, 0xb9, - 0x9a, 0x77, 0x9b, 0xb9, 0x9a, 0x77, 0x9c, 0xb9, 0x9a, 0x77, 0x9c, 0xb9, - 0x9a, 0x77, 0x9d, 0xb9, 0x9a, 0x77, 0x9d, 0xb9, 0x9a, 0x77, 0x9d, 0xba, - 0x9d, 0x77, 0x9e, 0xba, 0x9e, 0x77, 0x9e, 0xba, 0x9e, 0x77, 0x9f, 0xba, - 0x9f, 0x77, 0x9f, 0xba, 0x9f, 0x77, 0x9f, 0xba, 0x9f, 0x77, 0xa0, 0xba, - 0x9f, 0x77, 0xa0, 0xba, 0x9f, 0x77, 0xa1, 0xba, 0x9f, 0x77, 0xa1, 0xba, - 0x9f, 0x77, 0xa1, 0xba, 0x9f, 0x77, 0xa2, 0xba, 0xa2, 0x77, 0xa2, 0xba, - 0xa2, 0x77, 0xa3, 0xba, 0xa3, 0x77, 0xa3, 0xba, 0xa3, 0x77, 0xa3, 0xba, - 0xa3, 0x77, 0xa4, 0xba, 0xa3, 0x77, 0xa4, 0xba, 0xa3, 0x77, 0xa5, 0xba, - 0xa3, 0x77, 0xa5, 0xb7, 0xaa, 0x77, 0xa5, 0xb6, 0xab, 0x77, 0xa6, 0xb7, - 0xaa, 0x77, 0xa6, 0xb6, 0xab, 0x77, 0xa6, 0xb7, 0xaa, 0x77, 0xa7, 0xb6, - 0xab, 0x77, 0xa7, 0xb7, 0xaa, 0x77, 0xa8, 0xb6, 0xab, 0x77, 0xa8, 0xb7, - 0xaa, 0x77, 0xa8, 0xb6, 0xab, 0x77, 0xa9, 0xb7, 0xaa, 0x77, 0xa9, 0xb6, - 0xab, 0x77, 0xaa, 0xb6, 0xab, 0x77, 0xaa, 0xb6, 0xab, 0x77, 0xaa, 0xb6, - 0xab, 0x77, 0xaa, 0xb6, 0xab, 0x77, 0xaa, 0xb6, 0xab, 0x77, 0xaa, 0xb6, - 0xab, 0x77, 0xaa, 0xb6, 0xac, 0x77, 0xab, 0xb6, 0xac, 0x75, 0xaa, 0xb6, - 0xac, 0x77, 0xab, 0xb6, 0xad, 0x75, 0xaa, 0xb6, 0xad, 0x77, 0xab, 0xb6, - 0xae, 0x75, 0xaa, 0xb6, 0xae, 0x77, 0xab, 0xb6, 0xae, 0x75, 0xaa, 0xb6, - 0xaf, 0x77, 0xab, 0xb6, 0xaf, 0x75, 0xaa, 0xb6, 0xaf, 0x77, 0xb0, 0xb6, - 0xb0, 0x70, 0xb0, 0xb6, 0xb0, 0x70, 0xb0, 0xb6, 0xb0, 0x70, 0xb1, 0xb6, - 0xb1, 0x70, 0xb1, 0xb6, 0xb1, 0x70, 0xb2, 0xb6, 0xb2, 0x70, 0xb4, 0xb6, - 0xb2, 0x71, 0xb4, 0xb6, 0xb2, 0x71, 0xb4, 0xb6, 0xb3, 0x71, 0xb4, 0xb6, - 0xb3, 0x71, 0xb4, 0xb6, 0xb3, 0x71, 0xb4, 0xb6, 0xb4, 0x71, 0xb4, 0xb6, - 0xb4, 0x71, 0xb4, 0xb6, 0xb4, 0x71, 0xb5, 0xb6, 0xb5, 0x71, 0xb5, 0xb6, - 0xb5, 0x71, 0xb5, 0xb6, 0xb5, 0x71, 0xb8, 0xb6, 0xb6, 0x72, 0xb8, 0xb6, - 0xb6, 0x72, 0xb8, 0xb6, 0xb6, 0x72, 0xb8, 0xb6, 0xb7, 0x72, 0xb8, 0xb6, - 0xb7, 0x72, 0xb8, 0xb6, 0xb7, 0x72, 0xb8, 0xb6, 0xb8, 0x72, 0xb8, 0xb6, - 0xb8, 0x72, 0xb8, 0xb6, 0xb8, 0x72, 0xb9, 0xb6, 0xb9, 0x72, 0xb9, 0xb6, - 0xb9, 0x72, 0xb9, 0xb6, 0xb9, 0x72, 0xba, 0xb6, 0xba, 0x72, 0xbb, 0xb6, - 0xba, 0x73, 0xbc, 0xb6, 0xba, 0x73, 0xbb, 0xb6, 0xbb, 0x73, 0xbc, 0xb6, - 0xbb, 0x73, 0xbb, 0xb6, 0xbb, 0x73, 0xbc, 0xb6, 0xbc, 0x73, 0xbc, 0xb6, - 0xbc, 0x73, 0xbc, 0xb6, 0xbc, 0x73, 0xbd, 0xb6, 0xbd, 0x73, 0xbd, 0xb6, - 0xbd, 0x73, 0xbd, 0xb6, 0xbd, 0x73, 0xbf, 0xb6, 0xbe, 0x74, 0xbf, 0xb6, - 0xbe, 0x74, 0xbf, 0xb6, 0xbe, 0x74, 0xbf, 0xb6, 0xbf, 0x74, 0xbf, 0xb6, - 0xbf, 0x74, 0xbf, 0xb6, 0xbf, 0x74, 0xc0, 0xb6, 0xc0, 0x74, 0xc0, 0xb6, - 0xc0, 0x74, 0xc0, 0xb6, 0xc0, 0x74, 0xc1, 0xb6, 0xc1, 0x74, 0xc1, 0xb6, - 0xc1, 0x74, 0xc2, 0xb6, 0xc1, 0x75, 0xc3, 0xb6, 0xc1, 0x75, 0xc2, 0xb6, - 0xc2, 0x75, 0xc3, 0xb6, 0xc2, 0x75, 0xc2, 0xb6, 0xc2, 0x75, 0xc3, 0xb6, - 0xc3, 0x75, 0xc3, 0xb6, 0xc3, 0x75, 0xc3, 0xb6, 0xc3, 0x75, 0xc4, 0xb6, - 0xc4, 0x75, 0xc4, 0xb6, 0xc4, 0x75, 0xc4, 0xb6, 0xc4, 0x75, 0xc5, 0xb6, - 0xc5, 0x75, 0xc5, 0xb6, 0xc5, 0x75, 0xc5, 0xb6, 0xc5, 0x75, 0xc6, 0xb6, - 0xc6, 0x76, 0xc6, 0xb6, 0xc6, 0x76, 0xc6, 0xb6, 0xc6, 0x76, 0xc6, 0xb6, - 0xc6, 0x76, 0xc7, 0xb6, 0xc7, 0x76, 0xc7, 0xb6, 0xc7, 0x76, 0xc7, 0xb6, - 0xc7, 0x76, 0xc8, 0xb6, 0xc8, 0x76, 0xc8, 0xb6, 0xc8, 0x76, 0xc8, 0xb6, - 0xc8, 0x76, 0xc9, 0xb6, 0xc9, 0x76, 0xc9, 0xb6, 0xc9, 0x76, 0xc9, 0xb6, - 0xc9, 0x76, 0xc9, 0xb6, 0xc9, 0x77, 0xca, 0xb6, 0xca, 0x77, 0xca, 0xb6, - 0xca, 0x77, 0xca, 0xb6, 0xca, 0x77, 0xcb, 0xb6, 0xcb, 0x77, 0xcb, 0xb6, - 0xcb, 0x77, 0xcb, 0xb6, 0xcb, 0x77, 0xcc, 0xb6, 0xcc, 0x77, 0xcc, 0xb6, - 0xcc, 0x77, 0xcc, 0xb6, 0xcc, 0x77, 0xcc, 0xb6, 0xcc, 0x77, 0xcd, 0xb6, - 0xcc, 0x77, 0xcd, 0xb6, 0xcc, 0x77, 0xcd, 0xb7, 0xcd, 0x77, 0xce, 0xb7, - 0xce, 0x77, 0xce, 0xb7, 0xce, 0x77, 0xce, 0xb6, 0xcf, 0x77, 0xce, 0xb6, - 0xcf, 0x77, 0xce, 0xb6, 0xcf, 0x77, 0xce, 0xb6, 0xcf, 0x77, 0xce, 0xb6, - 0xcf, 0x77, 0xce, 0xb6, 0xd0, 0x77, 0xcf, 0xb6, 0xd0, 0x75, 0xce, 0xb6, - 0xd0, 0x77, 0xcf, 0xb6, 0xd0, 0x75, 0xce, 0xb6, 0xd1, 0x77, 0xcf, 0xb6, - 0xd1, 0x75, 0xce, 0xb6, 0xd1, 0x77, 0xcf, 0xb6, 0xd2, 0x75, 0xce, 0xb6, - 0xd2, 0x77, 0xcf, 0xb6, 0xd2, 0x75, 0xce, 0xb6, 0xd2, 0x77, 0xcf, 0xb6, - 0xd3, 0x75, 0xce, 0xb6, 0xd3, 0x77, 0xcf, 0xb6, 0xd3, 0x75, 0xcf, 0xb6, - 0xd4, 0x73, 0xcf, 0xb6, 0xd4, 0x75, 0xcf, 0xb6, 0xd4, 0x73, 0xcf, 0xb6, - 0xd4, 0x75, 0xcf, 0xb6, 0xd5, 0x73, 0xcf, 0xb6, 0xd5, 0x75, 0xcf, 0xb6, - 0xd5, 0x73, 0xcf, 0xb6, 0xd6, 0x75, 0xcf, 0xb6, 0xd6, 0x73, 0xcf, 0xb6, - 0xd6, 0x75, 0xcf, 0xb6, 0xd6, 0x73, 0xcf, 0xb6, 0xd7, 0x75, 0xcf, 0xb6, - 0xd7, 0x73, 0xcf, 0xb6, 0xd7, 0x75, 0xcf, 0xb6, 0xd7, 0x73, 0xcf, 0xb6, - 0xd8, 0x75, 0xcf, 0xb6, 0xd8, 0x73, 0xcf, 0xb6, 0xd8, 0x75, 0xcf, 0xb6, - 0xd9, 0x73, 0xcf, 0xb6, 0xd9, 0x75, 0xcf, 0xb6, 0xd9, 0x73, 0xcf, 0xb6, - 0xd9, 0x75, 0xcf, 0xb6, 0xda, 0x73, 0xcf, 0xb6, 0xda, 0x75, 0xcf, 0xb6, - 0xda, 0x73, 0xcf, 0xb6, 0xda, 0x75, 0xcf, 0xb6, 0xdb, 0x73, 0xcf, 0xb6, - 0xdb, 0x75, 0xcf, 0xb6, 0xdb, 0x73, 0xcf, 0xb6, 0xdb, 0x70, 0xcf, 0xb6, - 0xdc, 0x73, 0xcf, 0xb6, 0xdc, 0x70, 0xcf, 0xb6, 0xdc, 0x73, 0xcf, 0xb6, - 0xdd, 0x70, 0xcf, 0xb6, 0xdd, 0x73, 0xcf, 0xb6, 0xdd, 0x70, 0xcf, 0xb6, - 0xdd, 0x73, 0xeb, 0xb6, 0xde, 0x77, 0xeb, 0xb6, 0xde, 0x7b, 0xeb, 0xb6, - 0xde, 0x77, 0xeb, 0xb6, 0xde, 0x7b, 0xeb, 0xb6, 0xdf, 0x77, 0xeb, 0xb6, - 0xdf, 0x7b, 0xeb, 0xb6, 0xdf, 0x77, 0xeb, 0xb6, 0xdf, 0x7b, 0xeb, 0xb6, - 0xe0, 0x77, 0xeb, 0xb6, 0xe0, 0x7b, 0xeb, 0xb6, 0xe0, 0x77, 0xeb, 0xb6, - 0xe1, 0x7b, 0xeb, 0xb6, 0xe1, 0x77, 0xeb, 0xb6, 0xe1, 0x7b, 0xeb, 0xb6, - 0xe1, 0x77, 0xeb, 0xb6, 0xe2, 0x7b, 0xeb, 0xb6, 0xe2, 0x77, 0xeb, 0xb6, - 0xe2, 0x7b, 0xeb, 0xb6, 0xe2, 0x77, 0xeb, 0xb6, 0xe3, 0x7b, 0xeb, 0xb6, - 0xe3, 0x77, 0xeb, 0xb6, 0xe3, 0x7b, 0xeb, 0xb6, 0xe3, 0x77, 0xeb, 0xb6, - 0xe4, 0x7b, 0xeb, 0xb6, 0xe4, 0x77, 0xeb, 0xb6, 0xe4, 0x7b, 0xeb, 0xb6, - 0xe4, 0x77, 0xeb, 0xb6, 0xe5, 0x7b, 0xeb, 0xb6, 0xe5, 0x77, 0xeb, 0xb6, - 0xe5, 0x7b, 0xeb, 0xb6, 0xe5, 0x77, 0xeb, 0xb6, 0xe6, 0x7b, 0xeb, 0xb6, - 0xe6, 0x77, 0xeb, 0xb6, 0xe6, 0x7b, 0xeb, 0xb6, 0xe6, 0x77, 0xeb, 0xb6, - 0xe7, 0x7b, 0xeb, 0xb6, 0xe7, 0x77, 0xeb, 0xb6, 0xe7, 0x77, 0xeb, 0xb6, - 0xe7, 0x77, 0xeb, 0xb6, 0xe8, 0x77, 0xeb, 0xb6, 0xe8, 0x77, 0xeb, 0xb6, - 0xe8, 0x77, 0xeb, 0xb6, 0xe8, 0x77, 0xeb, 0xb6, 0xe9, 0x77, 0xeb, 0xb6, - 0xe9, 0x77, 0xeb, 0xb6, 0xe9, 0x77, 0xeb, 0xb6, 0xe9, 0x77, 0xeb, 0xb6, - 0xea, 0x77, 0xeb, 0xb6, 0xea, 0x77, 0xeb, 0xb6, 0xea, 0x77, 0xeb, 0xb6, - 0xea, 0x77, 0xeb, 0xb6, 0xeb, 0x77, 0xeb, 0xb5, 0xeb, 0x77, 0xeb, 0xb6, - 0xeb, 0x77, 0xeb, 0xb5, 0xeb, 0x77, 0xec, 0xb6, 0xeb, 0x77, 0xec, 0xb5, - 0xeb, 0x77, 0xec, 0xb6, 0xeb, 0x77, 0xec, 0xb5, 0xeb, 0x77, 0xec, 0xb6, - 0xeb, 0x77, 0xed, 0xb5, 0xeb, 0x77, 0xed, 0xb6, 0xeb, 0x77, 0xed, 0xb5, - 0xeb, 0x77, 0xed, 0xb6, 0xeb, 0x77, 0xee, 0xb5, 0xeb, 0x77, 0xee, 0xb6, - 0xeb, 0x77, 0xee, 0xb5, 0xeb, 0x77, 0xee, 0xb6, 0xeb, 0x77, 0xef, 0xb5, - 0xeb, 0x77, 0xef, 0xb6, 0xeb, 0x77, 0xef, 0xb5, 0xeb, 0x77, 0xef, 0xb6, - 0xeb, 0x77, 0xf0, 0xb5, 0xeb, 0x77, 0xf0, 0xb6, 0xeb, 0x77, 0xf0, 0xb5, - 0xeb, 0x77, 0xf0, 0xb6, 0xeb, 0x77, 0xf1, 0xb6, 0xf6, 0x77, 0xf1, 0xb6, - 0xf6, 0x77, 0xf1, 0xb6, 0xf6, 0x77, 0xf1, 0xb6, 0xf6, 0x77, 0xf2, 0xb6, - 0xf6, 0x77, 0xf2, 0xb6, 0xf6, 0x77, 0xf2, 0xb6, 0xf6, 0x77, 0xf2, 0xb6, - 0xf6, 0x77, 0xf2, 0xb6, 0xf6, 0x77, 0xf3, 0xb6, 0xf6, 0x77, 0xf3, 0xb6, - 0xf6, 0x77, 0xf3, 0xb6, 0xf6, 0x77, 0xf3, 0xb6, 0xf6, 0x77, 0xf4, 0xb6, - 0xf6, 0x77, 0xf4, 0xb6, 0xf6, 0x77, 0xf4, 0xb6, 0xf6, 0x77, 0xf4, 0xb6, - 0xf6, 0x77, 0xf5, 0xb6, 0xf6, 0x77, 0xf5, 0xb6, 0xf6, 0x77, 0xf5, 0xb6, - 0xf6, 0x77, 0xf5, 0xb6, 0xf6, 0x77, 0xf5, 0xb6, 0xf6, 0x77, 0xf6, 0xb6, - 0xf6, 0x77, 0xf5, 0xb6, 0xf6, 0x77, 0xf6, 0xb6, 0xf6, 0x77, 0xf5, 0xb6, - 0xf6, 0x77, 0xf6, 0xb6, 0xf7, 0x77, 0xf5, 0xb6, 0xf7, 0x77, 0xf6, 0xb6, - 0xf7, 0x77, 0xf5, 0xb6, 0xf7, 0x77, 0xf6, 0xb6, 0xf8, 0x77, 0xfa, 0xb6, - 0xf8, 0x78, 0xfa, 0xb6, 0xf8, 0x77, 0xfa, 0xb6, 0xf8, 0x78, 0xfa, 0xb6, - 0xf8, 0x77, 0xfa, 0xb6, 0xf9, 0x78, 0xfa, 0xb6, 0xf9, 0x77, 0xfa, 0xb6, - 0xf9, 0x78, 0xfa, 0xb6, 0xf9, 0x77, 0xfa, 0xb6, 0xfa, 0x77, 0xfa, 0xb6, - 0xf9, 0x77, 0xfa, 0xb6, 0xfa, 0x77, 0xfa, 0xb6, 0xf9, 0x77, 0xfa, 0xb6, - 0xfa, 0x77, 0xfb, 0xb6, 0xf9, 0x77, 0xfb, 0xb6, 0xfa, 0x77, 0xfb, 0xb6, - 0xf9, 0x77, 0xfb, 0xb6, 0xfa, 0x77, 0xfc, 0xb4, 0xfa, 0x77, 0xfc, 0xb6, - 0xfa, 0x77, 0xfc, 0xb4, 0xfa, 0x77, 0xfc, 0xb6, 0xfa, 0x77, 0xfc, 0xb4, - 0xfa, 0x77, 0xfd, 0xb6, 0xfa, 0x77, 0xfd, 0xb4, 0xfa, 0x77, 0xfd, 0xb6, - 0xfa, 0x77, 0xfd, 0xb4, 0xfa, 0x77, 0xfe, 0xb6, 0xfa, 0x77, 0xfe, 0xb4, - 0xfa, 0x77, 0xfe, 0xb6, 0xfa, 0x77, 0xfe, 0xb4, 0xfa, 0x77, 0xfe, 0xb6, - 0xfa, 0x77, 0xff, 0xb4, 0xfa, 0x77, 0xff, 0xb6, 0xfa, 0x77, 0x03, 0xbd, - 0x92, 0x77, 0x0a, 0xbf, 0x91, 0x77, 0x0f, 0xbd, 0x92, 0x77, 0x14, 0xbf, - 0x91, 0x77, 0x17, 0xbd, 0x92, 0x77, 0x1b, 0xbf, 0x91, 0x77, 0x1e, 0xbd, - 0x92, 0x77, 0x20, 0xbf, 0x91, 0x77, 0x23, 0xbd, 0x92, 0x77, 0x25, 0xbf, - 0x91, 0x77, 0x27, 0xbd, 0x92, 0x77, 0x29, 0xbf, 0x91, 0x77, 0x2b, 0xbd, - 0x92, 0x77, 0x2d, 0xbf, 0x91, 0x77, 0x2f, 0xbd, 0x92, 0x77, 0x31, 0xbf, - 0x91, 0x77, 0x32, 0xbd, 0x92, 0x77, 0x34, 0xbf, 0x91, 0x77, 0x35, 0xbd, - 0x92, 0x77, 0x37, 0xbf, 0x91, 0x77, 0x38, 0xbd, 0x92, 0x77, 0x3a, 0xbf, - 0x91, 0x77, 0x3b, 0xbd, 0x92, 0x77, 0x3c, 0xbf, 0x91, 0x77, 0x3e, 0xbd, - 0x92, 0x77, 0x3f, 0xbf, 0x91, 0x77, 0x40, 0xbd, 0x92, 0x77, 0x42, 0xbb, - 0x92, 0x77, 0x43, 0xbd, 0x92, 0x77, 0x44, 0xbb, 0x92, 0x77, 0x45, 0xbd, - 0x92, 0x77, 0x46, 0xbb, 0x92, 0x77, 0x47, 0xbd, 0x92, 0x77, 0x48, 0xbb, - 0x92, 0x77, 0x49, 0xbd, 0x92, 0x77, 0x4a, 0xbb, 0x92, 0x77, 0x4b, 0xbd, - 0x92, 0x77, 0x4c, 0xbb, 0x92, 0x77, 0x4d, 0xbd, 0x92, 0x77, 0x4e, 0xbb, - 0x92, 0x77, 0x4f, 0xbd, 0x92, 0x77, 0x50, 0xbb, 0x92, 0x77, 0x51, 0xbd, - 0x92, 0x77, 0x52, 0xbb, 0x92, 0x77, 0x53, 0xbd, 0x92, 0x77, 0x54, 0xbb, - 0x92, 0x77, 0x55, 0xbd, 0x92, 0x77, 0x56, 0xbb, 0x92, 0x77, 0x57, 0xbd, - 0x92, 0x77, 0x58, 0xbb, 0x92, 0x77, 0x58, 0xbd, 0x92, 0x77, 0x59, 0xbb, - 0x92, 0x77, 0x5a, 0xbd, 0x92, 0x77, 0x5b, 0xbb, 0x92, 0x77, 0x5c, 0xbd, - 0x92, 0x77, 0x5d, 0xbb, 0x92, 0x77, 0x5d, 0xbd, 0x92, 0x77, 0x5e, 0xbb, - 0x92, 0x77, 0x5f, 0xbd, 0x92, 0x77, 0x60, 0xbb, 0x92, 0x77, 0x60, 0xbd, - 0x92, 0x77, 0x61, 0xbb, 0x92, 0x77, 0x62, 0xbd, 0x92, 0x77, 0x63, 0xbb, - 0x92, 0x77, 0x63, 0xb9, 0x93, 0x77, 0x64, 0xbb, 0x92, 0x77, 0x65, 0xb9, - 0x93, 0x77, 0x66, 0xbb, 0x92, 0x77, 0x66, 0xb9, 0x93, 0x77, 0x67, 0xbb, - 0x92, 0x77, 0x68, 0xb9, 0x93, 0x77, 0x68, 0xbb, 0x92, 0x77, 0x69, 0xb9, - 0x93, 0x77, 0x6a, 0xbb, 0x92, 0x77, 0x6a, 0xb9, 0x93, 0x77, 0x6b, 0xbb, - 0x92, 0x77, 0x6c, 0xb9, 0x93, 0x77, 0x6c, 0xbb, 0x92, 0x77, 0x6d, 0xb9, - 0x93, 0x77, 0x6e, 0xbb, 0x92, 0x77, 0x6e, 0xb9, 0x93, 0x77, 0x6f, 0xbb, - 0x92, 0x77, 0x70, 0xb9, 0x93, 0x77, 0x70, 0xbb, 0x92, 0x77, 0x71, 0xb9, - 0x93, 0x77, 0x72, 0xbb, 0x92, 0x77, 0x72, 0xb9, 0x93, 0x77, 0x73, 0xbb, - 0x92, 0x77, 0x73, 0xb9, 0x93, 0x77, 0x74, 0xbb, 0x92, 0x77, 0x75, 0xb9, - 0x93, 0x77, 0x75, 0xbb, 0x92, 0x77, 0x76, 0xb9, 0x93, 0x77, 0x76, 0xbb, - 0x92, 0x77, 0x77, 0xb9, 0x93, 0x77, 0x78, 0xbb, 0x92, 0x77, 0x78, 0xb9, - 0x93, 0x77, 0x79, 0xbb, 0x92, 0x77, 0x79, 0xb9, 0x93, 0x77, 0x7a, 0xbb, - 0x92, 0x77, 0x7a, 0xb9, 0x93, 0x77, 0x7b, 0xb6, 0x93, 0x77, 0x7c, 0xb9, - 0x93, 0x77, 0x7c, 0xb6, 0x93, 0x77, 0x7d, 0xb9, 0x93, 0x77, 0x7d, 0xb6, - 0x93, 0x77, 0x7e, 0xb9, 0x93, 0x77, 0x7e, 0xb6, 0x93, 0x77, 0x7f, 0xb9, - 0x93, 0x77, 0x7f, 0xb6, 0x93, 0x77, 0x80, 0xb9, 0x93, 0x77, 0x81, 0xb6, - 0x93, 0x77, 0x81, 0xb9, 0x93, 0x77, 0x82, 0xb6, 0x93, 0x77, 0x82, 0xb9, - 0x93, 0x77, 0x83, 0xb6, 0x93, 0x77, 0x83, 0xb9, 0x93, 0x77, 0x84, 0xb6, - 0x93, 0x77, 0x84, 0xb9, 0x93, 0x77, 0x85, 0xb6, 0x93, 0x77, 0x85, 0xb9, - 0x93, 0x77, 0x86, 0xb6, 0x93, 0x77, 0x86, 0xb9, 0x93, 0x77, 0x87, 0xb6, - 0x93, 0x77, 0x87, 0xb9, 0x93, 0x77, 0x88, 0xb6, 0x93, 0x77, 0x88, 0xb9, - 0x93, 0x77, 0x89, 0xb6, 0x93, 0x77, 0x89, 0xb9, 0x93, 0x77, 0x8a, 0xb6, - 0x93, 0x77, 0x8a, 0xb9, 0x93, 0x77, 0x8b, 0xb6, 0x93, 0x77, 0x8b, 0xb9, - 0x93, 0x77, 0x8c, 0xb6, 0x93, 0x77, 0x8c, 0xb6, 0x94, 0x77, 0x8d, 0xb6, - 0x93, 0x77, 0x8d, 0xb6, 0x94, 0x77, 0x8e, 0xb6, 0x93, 0x77, 0x8e, 0xb6, - 0x94, 0x77, 0x8e, 0xb6, 0x93, 0x77, 0x8f, 0xb6, 0x94, 0x77, 0x8f, 0xb6, - 0x93, 0x77, 0x90, 0xb6, 0x94, 0x77, 0x90, 0xb6, 0x93, 0x77, 0x91, 0xb6, - 0x94, 0x77, 0x91, 0xb6, 0x93, 0x77, 0x92, 0xb6, 0x94, 0x77, 0x92, 0xb6, - 0x93, 0x77, 0x93, 0xb6, 0x94, 0x77, 0x93, 0xb6, 0x93, 0x76, 0x93, 0xb6, - 0x94, 0x77, 0x95, 0xb6, 0x94, 0x77, 0x95, 0xb6, 0x94, 0x77, 0x95, 0xb5, - 0x95, 0x77, 0x95, 0xb6, 0x94, 0x77, 0x96, 0xb5, 0x95, 0x77, 0x96, 0xb6, - 0x94, 0x77, 0x97, 0xb5, 0x95, 0x77, 0x97, 0xb6, 0x94, 0x77, 0x98, 0xb5, - 0x95, 0x77, 0x98, 0xb9, 0x98, 0x77, 0x98, 0xb5, 0x95, 0x77, 0x99, 0xb9, - 0x98, 0x77, 0x99, 0xb9, 0x98, 0x77, 0x9a, 0xb9, 0x98, 0x77, 0x9a, 0xb9, - 0x9a, 0x77, 0x9a, 0xb9, 0x9a, 0x77, 0x9b, 0xb9, 0x9b, 0x77, 0x9b, 0xb9, - 0x9b, 0x77, 0x9c, 0xb9, 0x9c, 0x77, 0x9c, 0xb9, 0x9c, 0x77, 0x9d, 0xb9, - 0x9d, 0x77, 0x9d, 0xb9, 0x9d, 0x77, 0x9d, 0xb9, 0x9d, 0x77, 0x9e, 0xb9, - 0x9d, 0x77, 0x9e, 0xb9, 0x9d, 0x77, 0x9f, 0xb9, 0x9d, 0x77, 0x9f, 0xb9, - 0x9d, 0x77, 0x9f, 0xb9, 0x9d, 0x77, 0xa0, 0xba, 0xa0, 0x77, 0xa0, 0xba, - 0xa0, 0x77, 0xa1, 0xba, 0xa1, 0x77, 0xa1, 0xba, 0xa1, 0x77, 0xa1, 0xba, - 0xa1, 0x77, 0xa2, 0xba, 0xa1, 0x77, 0xa2, 0xba, 0xa1, 0x77, 0xa3, 0xba, - 0xa1, 0x77, 0xa3, 0xba, 0xa1, 0x77, 0xa3, 0xba, 0xa1, 0x77, 0xa4, 0xba, - 0xa1, 0x77, 0xa4, 0xbb, 0xa4, 0x77, 0xa5, 0xbb, 0xa5, 0x77, 0xa5, 0xbb, - 0xa5, 0x77, 0xa5, 0xbb, 0xa5, 0x77, 0xa6, 0xb7, 0xaa, 0x77, 0xa6, 0xb6, - 0xab, 0x77, 0xa6, 0xb7, 0xaa, 0x77, 0xa7, 0xb6, 0xab, 0x77, 0xa7, 0xb7, - 0xaa, 0x77, 0xa8, 0xb6, 0xab, 0x77, 0xa8, 0xb7, 0xaa, 0x77, 0xa8, 0xb6, - 0xab, 0x77, 0xa9, 0xb7, 0xaa, 0x77, 0xa9, 0xb6, 0xab, 0x77, 0xaa, 0xb7, - 0xaa, 0x77, 0xaa, 0xb6, 0xab, 0x77, 0xaa, 0xb7, 0xaa, 0x77, 0xaa, 0xb6, - 0xab, 0x77, 0xaa, 0xb6, 0xab, 0x77, 0xaa, 0xb6, 0xab, 0x77, 0xaa, 0xb6, - 0xac, 0x77, 0xab, 0xb6, 0xac, 0x75, 0xaa, 0xb6, 0xac, 0x77, 0xab, 0xb6, - 0xad, 0x75, 0xaa, 0xb6, 0xad, 0x77, 0xab, 0xb6, 0xae, 0x75, 0xaa, 0xb6, - 0xae, 0x77, 0xab, 0xb6, 0xae, 0x75, 0xaa, 0xb6, 0xaf, 0x77, 0xab, 0xb6, - 0xaf, 0x75, 0xaa, 0xb6, 0xaf, 0x77, 0xab, 0xb6, 0xb0, 0x75, 0xb2, 0xb6, - 0xb0, 0x70, 0xb2, 0xb6, 0xb0, 0x70, 0xb2, 0xb6, 0xb1, 0x70, 0xb2, 0xb6, - 0xb1, 0x70, 0xb2, 0xb6, 0xb2, 0x70, 0xb2, 0xb6, 0xb2, 0x70, 0xb2, 0xb6, - 0xb2, 0x70, 0xb3, 0xb6, 0xb3, 0x70, 0xb3, 0xb6, 0xb3, 0x70, 0xb3, 0xb6, - 0xb3, 0x70, 0xb6, 0xb6, 0xb4, 0x71, 0xb6, 0xb6, 0xb4, 0x71, 0xb6, 0xb6, - 0xb4, 0x71, 0xb6, 0xb6, 0xb5, 0x71, 0xb6, 0xb6, 0xb5, 0x71, 0xb6, 0xb6, - 0xb5, 0x71, 0xb6, 0xb6, 0xb6, 0x71, 0xb6, 0xb6, 0xb6, 0x71, 0xb6, 0xb6, - 0xb6, 0x71, 0xb7, 0xb6, 0xb7, 0x71, 0xb7, 0xb6, 0xb7, 0x71, 0xb7, 0xb6, - 0xb7, 0x71, 0xba, 0xb6, 0xb8, 0x72, 0xba, 0xb6, 0xb8, 0x72, 0xba, 0xb6, - 0xb8, 0x72, 0xba, 0xb6, 0xb9, 0x72, 0xba, 0xb6, 0xb9, 0x72, 0xba, 0xb6, - 0xb9, 0x72, 0xba, 0xb6, 0xba, 0x72, 0xba, 0xb6, 0xba, 0x72, 0xba, 0xb6, - 0xba, 0x72, 0xbb, 0xb6, 0xbb, 0x72, 0xbb, 0xb6, 0xbb, 0x72, 0xbb, 0xb6, - 0xbb, 0x72, 0xbc, 0xb6, 0xbc, 0x72, 0xbd, 0xb6, 0xbc, 0x73, 0xbe, 0xb6, - 0xbc, 0x73, 0xbd, 0xb6, 0xbd, 0x73, 0xbe, 0xb6, 0xbd, 0x73, 0xbd, 0xb6, - 0xbd, 0x73, 0xbe, 0xb6, 0xbe, 0x73, 0xbe, 0xb6, 0xbe, 0x73, 0xbe, 0xb6, - 0xbe, 0x73, 0xbf, 0xb6, 0xbf, 0x73, 0xbf, 0xb6, 0xbf, 0x73, 0xbf, 0xb6, - 0xbf, 0x73, 0xc1, 0xb6, 0xc0, 0x74, 0xc1, 0xb6, 0xc0, 0x74, 0xc1, 0xb6, - 0xc0, 0x74, 0xc1, 0xb6, 0xc1, 0x74, 0xc1, 0xb6, 0xc1, 0x74, 0xc1, 0xb6, - 0xc1, 0x74, 0xc1, 0xb6, 0xc1, 0x74, 0xc2, 0xb6, 0xc2, 0x74, 0xc2, 0xb6, - 0xc2, 0x74, 0xc2, 0xb6, 0xc2, 0x74, 0xc3, 0xb6, 0xc3, 0x74, 0xc4, 0xb6, - 0xc3, 0x75, 0xc5, 0xb6, 0xc3, 0x75, 0xc4, 0xb6, 0xc4, 0x75, 0xc5, 0xb6, - 0xc4, 0x75, 0xc4, 0xb6, 0xc4, 0x75, 0xc5, 0xb6, 0xc5, 0x75, 0xc5, 0xb6, - 0xc5, 0x75, 0xc5, 0xb6, 0xc5, 0x75, 0xc6, 0xb6, 0xc6, 0x75, 0xc6, 0xb6, - 0xc6, 0x75, 0xc6, 0xb6, 0xc6, 0x75, 0xc6, 0xb6, 0xc6, 0x75, 0xc7, 0xb6, - 0xc7, 0x75, 0xc8, 0xb6, 0xc7, 0x76, 0xc8, 0xb6, 0xc7, 0x76, 0xc8, 0xb6, - 0xc8, 0x76, 0xc8, 0xb6, 0xc8, 0x76, 0xc8, 0xb6, 0xc8, 0x76, 0xc9, 0xb6, - 0xc9, 0x76, 0xc9, 0xb6, 0xc9, 0x76, 0xc9, 0xb6, 0xc9, 0x76, 0xc9, 0xb6, - 0xc9, 0x76, 0xca, 0xb6, 0xca, 0x76, 0xca, 0xb6, 0xca, 0x76, 0xca, 0xb6, - 0xca, 0x76, 0xcb, 0xb6, 0xcb, 0x76, 0xcb, 0xb7, 0xcb, 0x77, 0xcb, 0xb7, - 0xcb, 0x77, 0xcc, 0xb7, 0xcc, 0x77, 0xcc, 0xb7, 0xcc, 0x77, 0xcc, 0xb7, - 0xcc, 0x77, 0xcc, 0xb7, 0xcc, 0x77, 0xcd, 0xb7, 0xcd, 0x77, 0xcd, 0xb7, - 0xcd, 0x77, 0xcd, 0xb7, 0xcd, 0x77, 0xce, 0xb7, 0xce, 0x77, 0xce, 0xb7, - 0xce, 0x77, 0xce, 0xb6, 0xcf, 0x77, 0xce, 0xb6, 0xcf, 0x77, 0xce, 0xb6, - 0xcf, 0x77, 0xce, 0xb6, 0xcf, 0x77, 0xce, 0xb6, 0xcf, 0x77, 0xce, 0xb6, - 0xd0, 0x77, 0xcf, 0xb6, 0xd0, 0x75, 0xce, 0xb6, 0xd0, 0x77, 0xcf, 0xb6, - 0xd0, 0x75, 0xce, 0xb6, 0xd1, 0x77, 0xcf, 0xb6, 0xd1, 0x75, 0xce, 0xb6, - 0xd1, 0x77, 0xcf, 0xb6, 0xd2, 0x75, 0xce, 0xb6, 0xd2, 0x77, 0xcf, 0xb6, - 0xd2, 0x75, 0xce, 0xb6, 0xd2, 0x77, 0xcf, 0xb6, 0xd3, 0x75, 0xce, 0xb6, - 0xd3, 0x77, 0xcf, 0xb6, 0xd3, 0x75, 0xce, 0xb6, 0xd4, 0x77, 0xcf, 0xb6, - 0xd4, 0x75, 0xce, 0xb6, 0xd4, 0x77, 0xcf, 0xb6, 0xd4, 0x75, 0xce, 0xb6, - 0xd5, 0x77, 0xcf, 0xb6, 0xd5, 0x75, 0xce, 0xb6, 0xd5, 0x77, 0xcf, 0xb6, - 0xd6, 0x75, 0xcf, 0xb6, 0xd6, 0x72, 0xcf, 0xb6, 0xd6, 0x75, 0xcf, 0xb6, - 0xd6, 0x72, 0xcf, 0xb6, 0xd7, 0x75, 0xcf, 0xb6, 0xd7, 0x72, 0xcf, 0xb6, - 0xd7, 0x75, 0xcf, 0xb6, 0xd7, 0x72, 0xcf, 0xb6, 0xd8, 0x75, 0xcf, 0xb6, - 0xd8, 0x72, 0xcf, 0xb6, 0xd8, 0x75, 0xcf, 0xb6, 0xd9, 0x72, 0xcf, 0xb6, - 0xd9, 0x75, 0xcf, 0xb6, 0xd9, 0x72, 0xcf, 0xb6, 0xd9, 0x75, 0xcf, 0xb6, - 0xda, 0x72, 0xcf, 0xb6, 0xda, 0x75, 0xcf, 0xb6, 0xda, 0x72, 0xcf, 0xb6, - 0xda, 0x75, 0xcf, 0xb6, 0xdb, 0x72, 0xcf, 0xb6, 0xdb, 0x75, 0xcf, 0xb6, - 0xdb, 0x72, 0xcf, 0xb6, 0xdb, 0x75, 0xcf, 0xb6, 0xdc, 0x72, 0xcf, 0xb6, - 0xdc, 0x75, 0xcf, 0xb6, 0xdc, 0x72, 0xcf, 0xb6, 0xdd, 0x75, 0xcf, 0xb6, - 0xdd, 0x72, 0xcf, 0xb6, 0xdd, 0x75, 0xeb, 0xb6, 0xdd, 0x7a, 0xea, 0xb6, - 0xde, 0x7e, 0xeb, 0xb6, 0xde, 0x7a, 0xea, 0xb6, 0xde, 0x7e, 0xeb, 0xb6, - 0xde, 0x7a, 0xeb, 0xb6, 0xdf, 0x77, 0xeb, 0xb6, 0xdf, 0x7a, 0xeb, 0xb6, - 0xdf, 0x77, 0xeb, 0xb6, 0xdf, 0x7a, 0xeb, 0xb6, 0xe0, 0x77, 0xeb, 0xb6, - 0xe0, 0x7a, 0xeb, 0xb6, 0xe0, 0x77, 0xeb, 0xb6, 0xe1, 0x7a, 0xeb, 0xb6, - 0xe1, 0x77, 0xeb, 0xb6, 0xe1, 0x7a, 0xeb, 0xb6, 0xe1, 0x77, 0xeb, 0xb6, - 0xe2, 0x7a, 0xeb, 0xb6, 0xe2, 0x77, 0xeb, 0xb6, 0xe2, 0x7a, 0xeb, 0xb6, - 0xe2, 0x77, 0xeb, 0xb6, 0xe3, 0x7a, 0xeb, 0xb6, 0xe3, 0x77, 0xeb, 0xb6, - 0xe3, 0x7a, 0xeb, 0xb6, 0xe3, 0x77, 0xeb, 0xb6, 0xe4, 0x7a, 0xeb, 0xb6, - 0xe4, 0x77, 0xeb, 0xb6, 0xe4, 0x7a, 0xeb, 0xb6, 0xe4, 0x77, 0xeb, 0xb6, - 0xe5, 0x7a, 0xeb, 0xb6, 0xe5, 0x77, 0xeb, 0xb6, 0xe5, 0x7a, 0xeb, 0xb6, - 0xe5, 0x77, 0xeb, 0xb6, 0xe6, 0x7a, 0xeb, 0xb6, 0xe6, 0x77, 0xeb, 0xb6, - 0xe6, 0x7a, 0xeb, 0xb6, 0xe6, 0x77, 0xeb, 0xb6, 0xe7, 0x7a, 0xeb, 0xb6, - 0xe7, 0x77, 0xeb, 0xb6, 0xe7, 0x7a, 0xeb, 0xb6, 0xe7, 0x77, 0xeb, 0xb6, - 0xe8, 0x7a, 0xeb, 0xb6, 0xe8, 0x77, 0xeb, 0xb6, 0xe8, 0x7a, 0xeb, 0xb6, - 0xe8, 0x77, 0xeb, 0xb6, 0xe9, 0x7a, 0xeb, 0xb6, 0xe9, 0x77, 0xeb, 0xb6, - 0xe9, 0x77, 0xeb, 0xb6, 0xe9, 0x77, 0xeb, 0xb6, 0xea, 0x77, 0xeb, 0xb6, - 0xea, 0x77, 0xeb, 0xb6, 0xea, 0x77, 0xeb, 0xb6, 0xea, 0x77, 0xeb, 0xb6, - 0xeb, 0x77, 0xeb, 0xb6, 0xea, 0x77, 0xeb, 0xb6, 0xeb, 0x77, 0xeb, 0xb6, - 0xea, 0x77, 0xec, 0xb6, 0xeb, 0x77, 0xec, 0xb5, 0xeb, 0x77, 0xec, 0xb6, - 0xeb, 0x77, 0xec, 0xb5, 0xeb, 0x77, 0xec, 0xb6, 0xeb, 0x77, 0xed, 0xb5, - 0xeb, 0x77, 0xed, 0xb6, 0xeb, 0x77, 0xed, 0xb5, 0xeb, 0x77, 0xed, 0xb6, - 0xeb, 0x77, 0xee, 0xb5, 0xeb, 0x77, 0xee, 0xb6, 0xeb, 0x77, 0xee, 0xb5, - 0xeb, 0x77, 0xee, 0xb6, 0xeb, 0x77, 0xef, 0xb5, 0xeb, 0x77, 0xef, 0xb6, - 0xeb, 0x77, 0xef, 0xb5, 0xeb, 0x77, 0xef, 0xb6, 0xeb, 0x77, 0xf0, 0xb5, - 0xeb, 0x77, 0xf0, 0xb6, 0xeb, 0x77, 0xf0, 0xb5, 0xeb, 0x77, 0xf0, 0xb6, - 0xeb, 0x77, 0xf1, 0xb7, 0xf6, 0x77, 0xf1, 0xb6, 0xf6, 0x77, 0xf1, 0xb7, - 0xf6, 0x77, 0xf1, 0xb6, 0xf6, 0x77, 0xf2, 0xb7, 0xf6, 0x77, 0xf2, 0xb6, - 0xf6, 0x77, 0xf2, 0xb7, 0xf6, 0x77, 0xf2, 0xb6, 0xf6, 0x77, 0xf2, 0xb7, - 0xf6, 0x77, 0xf3, 0xb6, 0xf6, 0x77, 0xf3, 0xb7, 0xf6, 0x77, 0xf3, 0xb6, - 0xf6, 0x77, 0xf3, 0xb7, 0xf6, 0x77, 0xf4, 0xb6, 0xf6, 0x77, 0xf4, 0xb7, - 0xf6, 0x77, 0xf4, 0xb6, 0xf6, 0x77, 0xf4, 0xb7, 0xf6, 0x77, 0xf5, 0xb6, - 0xf6, 0x77, 0xf5, 0xb7, 0xf6, 0x77, 0xf5, 0xb6, 0xf6, 0x77, 0xf5, 0xb7, - 0xf6, 0x77, 0xf5, 0xb6, 0xf6, 0x77, 0xf6, 0xb7, 0xf6, 0x77, 0xf5, 0xb6, - 0xf6, 0x77, 0xf6, 0xb6, 0xf6, 0x77, 0xf5, 0xb6, 0xf6, 0x77, 0xf6, 0xb6, - 0xf7, 0x77, 0xf5, 0xb6, 0xf7, 0x77, 0xf6, 0xb6, 0xf7, 0x77, 0xf5, 0xb6, - 0xf7, 0x77, 0xf6, 0xb6, 0xf8, 0x77, 0xfa, 0xb6, 0xf8, 0x77, 0xfa, 0xb6, - 0xf8, 0x77, 0xfa, 0xb6, 0xf8, 0x77, 0xfa, 0xb6, 0xf8, 0x77, 0xfa, 0xb6, - 0xf9, 0x77, 0xfa, 0xb6, 0xf9, 0x77, 0xfa, 0xb6, 0xf9, 0x77, 0xfa, 0xb6, - 0xf9, 0x77, 0xfa, 0xb5, 0xfa, 0x77, 0xfa, 0xb6, 0xf9, 0x77, 0xfa, 0xb5, - 0xfa, 0x77, 0xfa, 0xb6, 0xf9, 0x77, 0xfa, 0xb5, 0xfa, 0x77, 0xfb, 0xb6, - 0xf9, 0x77, 0xfb, 0xb5, 0xfa, 0x77, 0xfb, 0xb6, 0xf9, 0x77, 0xfb, 0xb5, - 0xfa, 0x77, 0xfc, 0xb4, 0xfa, 0x77, 0xfc, 0xb5, 0xfa, 0x77, 0xfc, 0xb4, - 0xfa, 0x77, 0xfc, 0xb5, 0xfa, 0x77, 0xfc, 0xb4, 0xfa, 0x77, 0xfd, 0xb5, - 0xfa, 0x77, 0xfd, 0xb4, 0xfa, 0x77, 0xfd, 0xb5, 0xfa, 0x77, 0xfd, 0xb4, - 0xfa, 0x77, 0xfe, 0xb5, 0xfa, 0x77, 0xfe, 0xb4, 0xfa, 0x77, 0xfe, 0xb5, - 0xfa, 0x77, 0xfe, 0xb4, 0xfa, 0x77, 0xfe, 0xb5, 0xfa, 0x77, 0xff, 0xb4, - 0xfa, 0x77, 0xff, 0xb5, 0xfa, 0x77, 0x03, 0xbd, 0x92, 0x78, 0x0a, 0xbf, - 0x91, 0x78, 0x0f, 0xbd, 0x92, 0x78, 0x14, 0xbf, 0x91, 0x78, 0x17, 0xbd, - 0x92, 0x78, 0x1b, 0xbf, 0x91, 0x78, 0x1e, 0xbd, 0x92, 0x78, 0x20, 0xbf, - 0x91, 0x78, 0x23, 0xbd, 0x92, 0x78, 0x25, 0xbf, 0x91, 0x78, 0x27, 0xbd, - 0x92, 0x78, 0x29, 0xbf, 0x91, 0x78, 0x2b, 0xbd, 0x92, 0x78, 0x2d, 0xbf, - 0x91, 0x78, 0x2f, 0xbd, 0x92, 0x78, 0x31, 0xba, 0x92, 0x78, 0x32, 0xbd, - 0x92, 0x78, 0x34, 0xba, 0x92, 0x78, 0x35, 0xbd, 0x92, 0x78, 0x37, 0xba, - 0x92, 0x78, 0x38, 0xbd, 0x92, 0x78, 0x3a, 0xba, 0x92, 0x78, 0x3b, 0xbd, - 0x92, 0x78, 0x3c, 0xba, 0x92, 0x78, 0x3e, 0xbd, 0x92, 0x78, 0x3f, 0xba, - 0x92, 0x78, 0x40, 0xbd, 0x92, 0x78, 0x42, 0xba, 0x92, 0x78, 0x43, 0xbd, - 0x92, 0x78, 0x44, 0xba, 0x92, 0x78, 0x45, 0xbd, 0x92, 0x78, 0x46, 0xba, - 0x92, 0x78, 0x47, 0xbd, 0x92, 0x78, 0x48, 0xba, 0x92, 0x78, 0x49, 0xbd, - 0x92, 0x78, 0x4a, 0xba, 0x92, 0x78, 0x4b, 0xbd, 0x92, 0x78, 0x4c, 0xba, - 0x92, 0x78, 0x4d, 0xbd, 0x92, 0x78, 0x4e, 0xba, 0x92, 0x78, 0x4f, 0xbd, - 0x92, 0x78, 0x50, 0xba, 0x92, 0x78, 0x51, 0xbd, 0x92, 0x78, 0x52, 0xba, - 0x92, 0x78, 0x53, 0xbd, 0x92, 0x78, 0x54, 0xba, 0x92, 0x78, 0x55, 0xbd, - 0x92, 0x78, 0x56, 0xba, 0x92, 0x78, 0x57, 0xbd, 0x92, 0x78, 0x58, 0xba, - 0x92, 0x78, 0x58, 0xbd, 0x92, 0x78, 0x59, 0xba, 0x92, 0x78, 0x5a, 0xbd, - 0x92, 0x78, 0x5b, 0xba, 0x92, 0x78, 0x5c, 0xbd, 0x92, 0x78, 0x5d, 0xba, - 0x92, 0x78, 0x5d, 0xb8, 0x93, 0x78, 0x5e, 0xba, 0x92, 0x78, 0x5f, 0xb8, - 0x93, 0x78, 0x60, 0xba, 0x92, 0x78, 0x60, 0xb8, 0x93, 0x78, 0x61, 0xba, - 0x92, 0x78, 0x62, 0xb8, 0x93, 0x78, 0x63, 0xba, 0x92, 0x78, 0x63, 0xb8, - 0x93, 0x78, 0x64, 0xba, 0x92, 0x78, 0x65, 0xb8, 0x93, 0x78, 0x66, 0xba, - 0x92, 0x78, 0x66, 0xb8, 0x93, 0x78, 0x67, 0xba, 0x92, 0x78, 0x68, 0xb8, - 0x93, 0x78, 0x68, 0xba, 0x92, 0x78, 0x69, 0xb8, 0x93, 0x78, 0x6a, 0xba, - 0x92, 0x78, 0x6a, 0xb8, 0x93, 0x78, 0x6b, 0xba, 0x92, 0x78, 0x6c, 0xb8, - 0x93, 0x78, 0x6c, 0xba, 0x92, 0x78, 0x6d, 0xb8, 0x93, 0x78, 0x6e, 0xba, - 0x92, 0x78, 0x6e, 0xb8, 0x93, 0x78, 0x6f, 0xba, 0x92, 0x78, 0x70, 0xb8, - 0x93, 0x78, 0x70, 0xba, 0x92, 0x78, 0x71, 0xb8, 0x93, 0x78, 0x72, 0xba, - 0x92, 0x78, 0x72, 0xb8, 0x93, 0x78, 0x73, 0xba, 0x92, 0x78, 0x73, 0xb8, - 0x93, 0x78, 0x74, 0xba, 0x92, 0x78, 0x75, 0xb8, 0x93, 0x78, 0x75, 0xba, - 0x92, 0x78, 0x76, 0xb8, 0x93, 0x78, 0x76, 0xba, 0x92, 0x78, 0x77, 0xb8, - 0x93, 0x78, 0x78, 0xba, 0x92, 0x78, 0x78, 0xb8, 0x93, 0x78, 0x79, 0xba, - 0x92, 0x78, 0x79, 0xb8, 0x93, 0x78, 0x7a, 0xba, 0x92, 0x78, 0x7a, 0xb8, - 0x93, 0x78, 0x7b, 0xba, 0x92, 0x78, 0x7c, 0xb8, 0x93, 0x78, 0x7c, 0xba, - 0x92, 0x78, 0x7d, 0xb8, 0x93, 0x78, 0x7d, 0xba, 0x92, 0x78, 0x7e, 0xb8, - 0x93, 0x78, 0x7e, 0xba, 0x92, 0x78, 0x7f, 0xb8, 0x93, 0x78, 0x7f, 0xba, - 0x92, 0x78, 0x80, 0xb8, 0x93, 0x78, 0x81, 0xba, 0x92, 0x78, 0x81, 0xb8, - 0x93, 0x78, 0x82, 0xb6, 0x93, 0x78, 0x82, 0xb8, 0x93, 0x78, 0x83, 0xb6, - 0x93, 0x78, 0x83, 0xb8, 0x93, 0x78, 0x84, 0xb6, 0x93, 0x78, 0x84, 0xb8, - 0x93, 0x78, 0x85, 0xb6, 0x93, 0x78, 0x85, 0xb8, 0x93, 0x78, 0x86, 0xb6, - 0x93, 0x78, 0x86, 0xb8, 0x93, 0x78, 0x87, 0xb6, 0x93, 0x78, 0x87, 0xb8, - 0x93, 0x78, 0x88, 0xb6, 0x93, 0x78, 0x88, 0xb8, 0x93, 0x78, 0x89, 0xb6, - 0x93, 0x78, 0x89, 0xb8, 0x93, 0x78, 0x8a, 0xb6, 0x93, 0x78, 0x8a, 0xb8, - 0x93, 0x78, 0x8b, 0xb6, 0x93, 0x78, 0x8b, 0xb8, 0x93, 0x78, 0x8c, 0xb6, - 0x93, 0x78, 0x8c, 0xb8, 0x93, 0x78, 0x8d, 0xb6, 0x93, 0x78, 0x8d, 0xb8, - 0x93, 0x78, 0x8e, 0xb6, 0x93, 0x78, 0x8e, 0xb8, 0x93, 0x78, 0x8e, 0xb6, - 0x93, 0x78, 0x8f, 0xb8, 0x93, 0x78, 0x8f, 0xb6, 0x93, 0x78, 0x90, 0xb6, - 0x94, 0x78, 0x90, 0xb6, 0x93, 0x78, 0x91, 0xb6, 0x94, 0x78, 0x91, 0xb6, - 0x93, 0x78, 0x92, 0xb6, 0x94, 0x78, 0x92, 0xb6, 0x93, 0x78, 0x93, 0xb6, - 0x94, 0x78, 0x93, 0xb6, 0x93, 0x77, 0x93, 0xb6, 0x94, 0x78, 0x95, 0xb6, - 0x94, 0x78, 0x95, 0xb6, 0x94, 0x78, 0x95, 0xb6, 0x94, 0x78, 0x95, 0xb6, - 0x94, 0x78, 0x96, 0xb6, 0x94, 0x78, 0x96, 0xb6, 0x94, 0x78, 0x97, 0xb5, - 0x95, 0x78, 0x97, 0xb6, 0x94, 0x78, 0x98, 0xb5, 0x95, 0x78, 0x98, 0xb9, - 0x98, 0x78, 0x98, 0xb9, 0x98, 0x78, 0x99, 0xb9, 0x99, 0x78, 0x99, 0xb9, - 0x99, 0x78, 0x9a, 0xb9, 0x9a, 0x78, 0x9a, 0xb9, 0x9a, 0x78, 0x9a, 0xb9, - 0x9a, 0x78, 0x9b, 0xb9, 0x9a, 0x78, 0x9b, 0xb9, 0x9a, 0x78, 0x9c, 0xb9, - 0x9a, 0x78, 0x9c, 0xb9, 0x9a, 0x78, 0x9d, 0xba, 0x9d, 0x78, 0x9d, 0xba, - 0x9d, 0x78, 0x9d, 0xba, 0x9d, 0x78, 0x9e, 0xba, 0x9e, 0x78, 0x9e, 0xba, - 0x9e, 0x78, 0x9f, 0xba, 0x9f, 0x78, 0x9f, 0xba, 0x9f, 0x78, 0x9f, 0xba, - 0x9f, 0x78, 0xa0, 0xba, 0x9f, 0x78, 0xa0, 0xba, 0x9f, 0x78, 0xa1, 0xba, - 0x9f, 0x78, 0xa1, 0xba, 0x9f, 0x78, 0xa1, 0xba, 0x9f, 0x78, 0xa2, 0xba, - 0xa2, 0x78, 0xa2, 0xba, 0xa2, 0x78, 0xa3, 0xba, 0xa3, 0x78, 0xa3, 0xba, - 0xa3, 0x78, 0xa3, 0xba, 0xa3, 0x78, 0xa4, 0xba, 0xa3, 0x78, 0xa4, 0xba, - 0xa3, 0x78, 0xa5, 0xba, 0xa3, 0x78, 0xa5, 0xba, 0xa3, 0x78, 0xa5, 0xba, - 0xa3, 0x78, 0xa6, 0xb7, 0xaa, 0x78, 0xa6, 0xb6, 0xab, 0x78, 0xa6, 0xb7, - 0xaa, 0x78, 0xa7, 0xb6, 0xab, 0x78, 0xa7, 0xb7, 0xaa, 0x78, 0xa8, 0xb6, - 0xab, 0x78, 0xa8, 0xb7, 0xaa, 0x78, 0xa8, 0xb6, 0xab, 0x78, 0xa9, 0xb7, - 0xaa, 0x78, 0xa9, 0xb6, 0xab, 0x78, 0xaa, 0xb7, 0xaa, 0x78, 0xaa, 0xb6, - 0xab, 0x78, 0xaa, 0xb7, 0xaa, 0x78, 0xaa, 0xb6, 0xab, 0x78, 0xaa, 0xb6, - 0xab, 0x78, 0xaa, 0xb6, 0xab, 0x78, 0xaa, 0xb6, 0xac, 0x78, 0xaa, 0xb6, - 0xac, 0x78, 0xaa, 0xb6, 0xac, 0x78, 0xaa, 0xb6, 0xad, 0x78, 0xaa, 0xb6, - 0xad, 0x78, 0xab, 0xb6, 0xae, 0x75, 0xaa, 0xb6, 0xae, 0x78, 0xab, 0xb6, - 0xae, 0x75, 0xaa, 0xb6, 0xaf, 0x78, 0xab, 0xb6, 0xaf, 0x75, 0xaa, 0xb6, - 0xaf, 0x78, 0xab, 0xb6, 0xb0, 0x75, 0xb0, 0xb6, 0xb0, 0x70, 0xb0, 0xb6, - 0xb0, 0x70, 0xb1, 0xb6, 0xb1, 0x70, 0xb1, 0xb6, 0xb1, 0x70, 0xb2, 0xb6, - 0xb2, 0x70, 0xb4, 0xb6, 0xb2, 0x71, 0xb4, 0xb6, 0xb2, 0x71, 0xb4, 0xb6, - 0xb3, 0x71, 0xb4, 0xb6, 0xb3, 0x71, 0xb4, 0xb6, 0xb3, 0x71, 0xb4, 0xb6, - 0xb4, 0x71, 0xb4, 0xb6, 0xb4, 0x71, 0xb4, 0xb6, 0xb4, 0x71, 0xb5, 0xb6, - 0xb5, 0x71, 0xb5, 0xb6, 0xb5, 0x71, 0xb5, 0xb6, 0xb5, 0x71, 0xb8, 0xb6, - 0xb6, 0x72, 0xb8, 0xb6, 0xb6, 0x72, 0xb8, 0xb6, 0xb6, 0x72, 0xb8, 0xb6, - 0xb7, 0x72, 0xb8, 0xb6, 0xb7, 0x72, 0xb8, 0xb6, 0xb7, 0x72, 0xb8, 0xb6, - 0xb8, 0x72, 0xb8, 0xb6, 0xb8, 0x72, 0xb8, 0xb6, 0xb8, 0x72, 0xb9, 0xb6, - 0xb9, 0x72, 0xb9, 0xb6, 0xb9, 0x72, 0xbb, 0xb6, 0xb9, 0x73, 0xbc, 0xb6, - 0xba, 0x73, 0xbb, 0xb6, 0xba, 0x73, 0xbc, 0xb6, 0xba, 0x73, 0xbb, 0xb6, - 0xbb, 0x73, 0xbc, 0xb6, 0xbb, 0x73, 0xbb, 0xb6, 0xbb, 0x73, 0xbc, 0xb6, - 0xbc, 0x73, 0xbc, 0xb6, 0xbc, 0x73, 0xbc, 0xb6, 0xbc, 0x73, 0xbd, 0xb6, - 0xbd, 0x73, 0xbd, 0xb6, 0xbd, 0x73, 0xbd, 0xb6, 0xbd, 0x73, 0xbf, 0xb6, - 0xbe, 0x74, 0xbf, 0xb6, 0xbe, 0x74, 0xbf, 0xb6, 0xbe, 0x74, 0xbf, 0xb6, - 0xbf, 0x74, 0xbf, 0xb6, 0xbf, 0x74, 0xbf, 0xb6, 0xbf, 0x74, 0xc0, 0xb6, - 0xc0, 0x74, 0xc0, 0xb6, 0xc0, 0x74, 0xc0, 0xb6, 0xc0, 0x74, 0xc1, 0xb6, - 0xc1, 0x74, 0xc1, 0xb6, 0xc1, 0x74, 0xc2, 0xb6, 0xc1, 0x75, 0xc3, 0xb6, - 0xc1, 0x75, 0xc2, 0xb6, 0xc2, 0x75, 0xc3, 0xb6, 0xc2, 0x75, 0xc2, 0xb6, - 0xc2, 0x75, 0xc3, 0xb6, 0xc3, 0x75, 0xc3, 0xb6, 0xc3, 0x75, 0xc3, 0xb6, - 0xc3, 0x75, 0xc4, 0xb6, 0xc4, 0x75, 0xc4, 0xb6, 0xc4, 0x75, 0xc4, 0xb6, - 0xc4, 0x75, 0xc5, 0xb6, 0xc5, 0x75, 0xc6, 0xb6, 0xc5, 0x76, 0xc6, 0xb6, - 0xc5, 0x76, 0xc6, 0xb6, 0xc6, 0x76, 0xc6, 0xb6, 0xc6, 0x76, 0xc6, 0xb6, - 0xc6, 0x76, 0xc6, 0xb6, 0xc6, 0x76, 0xc7, 0xb6, 0xc7, 0x76, 0xc7, 0xb6, - 0xc7, 0x76, 0xc7, 0xb6, 0xc7, 0x76, 0xc8, 0xb6, 0xc8, 0x76, 0xc8, 0xb6, - 0xc8, 0x76, 0xc8, 0xb6, 0xc8, 0x76, 0xc9, 0xb6, 0xc9, 0x76, 0xc9, 0xb6, - 0xc9, 0x77, 0xca, 0xb6, 0xc9, 0x77, 0xc9, 0xb6, 0xc9, 0x77, 0xca, 0xb6, - 0xca, 0x77, 0xca, 0xb6, 0xca, 0x77, 0xca, 0xb6, 0xca, 0x77, 0xcb, 0xb6, - 0xcb, 0x77, 0xcb, 0xb6, 0xcb, 0x77, 0xcb, 0xb6, 0xcb, 0x77, 0xcc, 0xb6, - 0xcc, 0x77, 0xcc, 0xb6, 0xcc, 0x77, 0xcc, 0xb6, 0xcc, 0x77, 0xcc, 0xb6, - 0xcc, 0x77, 0xcd, 0xb7, 0xcd, 0x78, 0xcd, 0xb7, 0xcd, 0x78, 0xcd, 0xb7, - 0xcd, 0x78, 0xce, 0xb7, 0xce, 0x78, 0xce, 0xb7, 0xce, 0x78, 0xce, 0xb7, - 0xce, 0x78, 0xce, 0xb7, 0xce, 0x78, 0xce, 0xb6, 0xcf, 0x78, 0xce, 0xb6, - 0xcf, 0x78, 0xce, 0xb6, 0xcf, 0x78, 0xce, 0xb6, 0xd0, 0x78, 0xce, 0xb6, - 0xd0, 0x78, 0xce, 0xb6, 0xd0, 0x78, 0xce, 0xb6, 0xd0, 0x78, 0xce, 0xb6, - 0xd1, 0x78, 0xcf, 0xb6, 0xd1, 0x75, 0xce, 0xb6, 0xd1, 0x78, 0xcf, 0xb6, - 0xd2, 0x75, 0xce, 0xb6, 0xd2, 0x78, 0xcf, 0xb6, 0xd2, 0x75, 0xce, 0xb6, - 0xd2, 0x78, 0xcf, 0xb6, 0xd3, 0x75, 0xce, 0xb6, 0xd3, 0x78, 0xcf, 0xb6, - 0xd3, 0x75, 0xce, 0xb6, 0xd4, 0x78, 0xcf, 0xb6, 0xd4, 0x75, 0xce, 0xb6, - 0xd4, 0x78, 0xcf, 0xb6, 0xd4, 0x75, 0xce, 0xb6, 0xd5, 0x78, 0xcf, 0xb6, - 0xd5, 0x75, 0xce, 0xb6, 0xd5, 0x78, 0xcf, 0xb6, 0xd6, 0x75, 0xcf, 0xb6, - 0xd6, 0x73, 0xcf, 0xb6, 0xd6, 0x75, 0xcf, 0xb6, 0xd6, 0x73, 0xcf, 0xb6, - 0xd7, 0x75, 0xcf, 0xb6, 0xd7, 0x73, 0xcf, 0xb6, 0xd7, 0x75, 0xcf, 0xb6, - 0xd7, 0x73, 0xcf, 0xb6, 0xd8, 0x75, 0xcf, 0xb6, 0xd8, 0x73, 0xcf, 0xb6, - 0xd8, 0x75, 0xcf, 0xb6, 0xd9, 0x73, 0xcf, 0xb6, 0xd9, 0x75, 0xcf, 0xb6, - 0xd9, 0x73, 0xcf, 0xb6, 0xd9, 0x75, 0xcf, 0xb6, 0xda, 0x73, 0xcf, 0xb6, - 0xda, 0x75, 0xcf, 0xb6, 0xda, 0x73, 0xcf, 0xb6, 0xda, 0x75, 0xcf, 0xb6, - 0xdb, 0x73, 0xcf, 0xb6, 0xdb, 0x75, 0xcf, 0xb6, 0xdb, 0x73, 0xcf, 0xb6, - 0xdb, 0x75, 0xcf, 0xb6, 0xdc, 0x73, 0xcf, 0xb6, 0xdc, 0x75, 0xcf, 0xb6, - 0xdc, 0x73, 0xcf, 0xb6, 0xdd, 0x75, 0xcf, 0xb6, 0xdd, 0x73, 0xcf, 0xb6, - 0xdd, 0x75, 0xeb, 0xb6, 0xdd, 0x7b, 0xea, 0xb6, 0xde, 0x7f, 0xeb, 0xb6, - 0xde, 0x7b, 0xea, 0xb6, 0xde, 0x7f, 0xeb, 0xb6, 0xde, 0x7b, 0xeb, 0xb6, - 0xdf, 0x78, 0xeb, 0xb6, 0xdf, 0x7b, 0xeb, 0xb6, 0xdf, 0x78, 0xeb, 0xb6, - 0xdf, 0x7b, 0xeb, 0xb6, 0xe0, 0x78, 0xeb, 0xb6, 0xe0, 0x7b, 0xeb, 0xb6, - 0xe0, 0x78, 0xeb, 0xb6, 0xe1, 0x7b, 0xeb, 0xb6, 0xe1, 0x78, 0xeb, 0xb6, - 0xe1, 0x7b, 0xeb, 0xb6, 0xe1, 0x78, 0xeb, 0xb6, 0xe2, 0x7b, 0xeb, 0xb6, - 0xe2, 0x78, 0xeb, 0xb6, 0xe2, 0x7b, 0xeb, 0xb6, 0xe2, 0x78, 0xeb, 0xb6, - 0xe3, 0x7b, 0xeb, 0xb6, 0xe3, 0x78, 0xeb, 0xb6, 0xe3, 0x7b, 0xeb, 0xb6, - 0xe3, 0x78, 0xeb, 0xb6, 0xe4, 0x7b, 0xeb, 0xb6, 0xe4, 0x78, 0xeb, 0xb6, - 0xe4, 0x7b, 0xeb, 0xb6, 0xe4, 0x78, 0xeb, 0xb6, 0xe5, 0x7b, 0xeb, 0xb6, - 0xe5, 0x78, 0xeb, 0xb6, 0xe5, 0x7b, 0xeb, 0xb6, 0xe5, 0x78, 0xeb, 0xb6, - 0xe6, 0x7b, 0xeb, 0xb6, 0xe6, 0x78, 0xeb, 0xb6, 0xe6, 0x7b, 0xeb, 0xb6, - 0xe6, 0x78, 0xeb, 0xb6, 0xe7, 0x7b, 0xeb, 0xb6, 0xe7, 0x78, 0xeb, 0xb6, - 0xe7, 0x7b, 0xeb, 0xb6, 0xe7, 0x78, 0xeb, 0xb6, 0xe8, 0x7b, 0xeb, 0xb6, - 0xe8, 0x78, 0xeb, 0xb6, 0xe8, 0x7b, 0xeb, 0xb6, 0xe8, 0x78, 0xeb, 0xb6, - 0xe9, 0x7b, 0xeb, 0xb6, 0xe9, 0x78, 0xeb, 0xb6, 0xe9, 0x78, 0xeb, 0xb6, - 0xe9, 0x78, 0xeb, 0xb6, 0xea, 0x78, 0xeb, 0xb6, 0xea, 0x78, 0xeb, 0xb6, - 0xea, 0x78, 0xeb, 0xb6, 0xea, 0x78, 0xeb, 0xb6, 0xeb, 0x78, 0xeb, 0xb6, - 0xea, 0x78, 0xeb, 0xb6, 0xeb, 0x78, 0xeb, 0xb6, 0xea, 0x78, 0xec, 0xb6, - 0xeb, 0x78, 0xec, 0xb5, 0xeb, 0x78, 0xec, 0xb6, 0xeb, 0x78, 0xec, 0xb5, - 0xeb, 0x78, 0xec, 0xb6, 0xeb, 0x78, 0xed, 0xb5, 0xeb, 0x78, 0xed, 0xb6, - 0xeb, 0x78, 0xed, 0xb5, 0xeb, 0x78, 0xed, 0xb6, 0xeb, 0x78, 0xee, 0xb5, - 0xeb, 0x78, 0xee, 0xb6, 0xeb, 0x78, 0xee, 0xb5, 0xeb, 0x78, 0xee, 0xb6, - 0xeb, 0x78, 0xef, 0xb5, 0xeb, 0x78, 0xef, 0xb6, 0xeb, 0x78, 0xef, 0xb5, - 0xeb, 0x78, 0xef, 0xb6, 0xeb, 0x78, 0xf0, 0xb5, 0xeb, 0x78, 0xf0, 0xb6, - 0xeb, 0x78, 0xf0, 0xb5, 0xeb, 0x78, 0xf0, 0xb9, 0xf5, 0x78, 0xf1, 0xb6, - 0xf6, 0x78, 0xf1, 0xb9, 0xf5, 0x78, 0xf1, 0xb6, 0xf6, 0x78, 0xf1, 0xb9, - 0xf5, 0x78, 0xf2, 0xb6, 0xf6, 0x78, 0xf2, 0xb9, 0xf5, 0x78, 0xf2, 0xb6, - 0xf6, 0x78, 0xf2, 0xb6, 0xf6, 0x78, 0xf2, 0xb6, 0xf6, 0x78, 0xf3, 0xb6, - 0xf6, 0x78, 0xf3, 0xb6, 0xf6, 0x78, 0xf3, 0xb6, 0xf6, 0x78, 0xf3, 0xb6, - 0xf6, 0x78, 0xf4, 0xb6, 0xf6, 0x78, 0xf4, 0xb6, 0xf6, 0x78, 0xf4, 0xb6, - 0xf6, 0x78, 0xf4, 0xb6, 0xf6, 0x78, 0xf5, 0xb6, 0xf6, 0x78, 0xf5, 0xb6, - 0xf6, 0x78, 0xf5, 0xb6, 0xf6, 0x78, 0xf5, 0xb6, 0xf6, 0x78, 0xf5, 0xb6, - 0xf6, 0x78, 0xf6, 0xb6, 0xf6, 0x77, 0xf5, 0xb6, 0xf6, 0x78, 0xf6, 0xb6, - 0xf6, 0x77, 0xf5, 0xb6, 0xf6, 0x78, 0xf6, 0xb6, 0xf7, 0x77, 0xf5, 0xb6, - 0xf7, 0x78, 0xf6, 0xb6, 0xf7, 0x77, 0xf5, 0xb6, 0xf7, 0x78, 0xf6, 0xb6, - 0xf8, 0x77, 0xfa, 0xb6, 0xf8, 0x78, 0xfa, 0xb6, 0xf8, 0x78, 0xfa, 0xb6, - 0xf8, 0x78, 0xfa, 0xb6, 0xf8, 0x78, 0xfa, 0xb6, 0xf9, 0x78, 0xfa, 0xb6, - 0xf9, 0x78, 0xfa, 0xb6, 0xf9, 0x78, 0xfa, 0xb6, 0xf9, 0x78, 0xfa, 0xb6, - 0xfa, 0x78, 0xfa, 0xb6, 0xf9, 0x78, 0xfa, 0xb6, 0xfa, 0x78, 0xfa, 0xb6, - 0xf9, 0x78, 0xfa, 0xb6, 0xfa, 0x78, 0xfb, 0xb6, 0xf9, 0x78, 0xfb, 0xb6, - 0xfa, 0x78, 0xfb, 0xb6, 0xf9, 0x78, 0xfb, 0xb6, 0xfa, 0x78, 0xfc, 0xb6, - 0xf9, 0x78, 0xfc, 0xb6, 0xfa, 0x78, 0xfc, 0xb6, 0xf9, 0x78, 0xfc, 0xb6, - 0xfa, 0x78, 0xfc, 0xb6, 0xf9, 0x78, 0xfd, 0xb6, 0xfa, 0x78, 0xfd, 0xb6, - 0xf9, 0x78, 0xfd, 0xb6, 0xfa, 0x78, 0xfd, 0xb4, 0xfa, 0x78, 0xfe, 0xb6, - 0xfa, 0x78, 0xfe, 0xb6, 0xfa, 0x78, 0xfe, 0xb6, 0xfa, 0x78, 0xfe, 0xb6, - 0xfa, 0x78, 0xfe, 0xb6, 0xfa, 0x78, 0xff, 0xb6, 0xfa, 0x78, 0xff, 0xb6, - 0xfa, 0x78, 0x03, 0xbd, 0x92, 0x78, 0x0a, 0xbf, 0x91, 0x78, 0x0f, 0xbd, - 0x92, 0x78, 0x14, 0xbf, 0x91, 0x78, 0x17, 0xbd, 0x92, 0x78, 0x1b, 0xbf, - 0x91, 0x78, 0x1e, 0xbd, 0x92, 0x78, 0x20, 0xbf, 0x91, 0x78, 0x23, 0xbd, - 0x92, 0x78, 0x25, 0xbf, 0x91, 0x78, 0x27, 0xbd, 0x92, 0x78, 0x29, 0xbf, - 0x91, 0x78, 0x2b, 0xbd, 0x92, 0x78, 0x2d, 0xbf, 0x91, 0x78, 0x2f, 0xbd, - 0x92, 0x78, 0x31, 0xbf, 0x91, 0x78, 0x32, 0xbd, 0x92, 0x78, 0x34, 0xbf, - 0x91, 0x78, 0x35, 0xbd, 0x92, 0x78, 0x37, 0xbf, 0x91, 0x78, 0x38, 0xbd, - 0x92, 0x78, 0x3a, 0xbf, 0x91, 0x78, 0x3b, 0xbd, 0x92, 0x78, 0x3c, 0xbf, - 0x91, 0x78, 0x3e, 0xbd, 0x92, 0x78, 0x3f, 0xbf, 0x91, 0x78, 0x40, 0xbd, - 0x92, 0x78, 0x42, 0xbf, 0x91, 0x78, 0x43, 0xbd, 0x92, 0x78, 0x44, 0xbf, - 0x91, 0x78, 0x45, 0xbd, 0x92, 0x78, 0x46, 0xbf, 0x91, 0x78, 0x47, 0xbd, - 0x92, 0x78, 0x48, 0xbf, 0x91, 0x78, 0x49, 0xbd, 0x92, 0x78, 0x4a, 0xbf, - 0x91, 0x78, 0x4b, 0xbd, 0x92, 0x78, 0x4c, 0xbf, 0x91, 0x78, 0x4d, 0xbd, - 0x92, 0x78, 0x4e, 0xbb, 0x92, 0x78, 0x4f, 0xbd, 0x92, 0x78, 0x50, 0xbb, - 0x92, 0x78, 0x51, 0xbd, 0x92, 0x78, 0x52, 0xbb, 0x92, 0x78, 0x53, 0xbd, - 0x92, 0x78, 0x54, 0xbb, 0x92, 0x78, 0x55, 0xbd, 0x92, 0x78, 0x56, 0xbb, - 0x92, 0x78, 0x57, 0xbd, 0x92, 0x78, 0x58, 0xbb, 0x92, 0x78, 0x58, 0xbd, - 0x92, 0x78, 0x59, 0xbb, 0x92, 0x78, 0x5a, 0xbd, 0x92, 0x78, 0x5b, 0xbb, - 0x92, 0x78, 0x5c, 0xbd, 0x92, 0x78, 0x5d, 0xbb, 0x92, 0x78, 0x5d, 0xbd, - 0x92, 0x78, 0x5e, 0xbb, 0x92, 0x78, 0x5f, 0xbd, 0x92, 0x78, 0x60, 0xbb, - 0x92, 0x78, 0x60, 0xbd, 0x92, 0x78, 0x61, 0xbb, 0x92, 0x78, 0x62, 0xbd, - 0x92, 0x78, 0x63, 0xbb, 0x92, 0x78, 0x63, 0xbd, 0x92, 0x78, 0x64, 0xbb, - 0x92, 0x78, 0x65, 0xbd, 0x92, 0x78, 0x66, 0xbb, 0x92, 0x78, 0x66, 0xbd, - 0x92, 0x78, 0x67, 0xbb, 0x92, 0x78, 0x68, 0xbd, 0x92, 0x78, 0x68, 0xbb, - 0x92, 0x78, 0x69, 0xbd, 0x92, 0x78, 0x6a, 0xbb, 0x92, 0x78, 0x6a, 0xbd, - 0x92, 0x78, 0x6b, 0xbb, 0x92, 0x78, 0x6c, 0xb9, 0x93, 0x78, 0x6c, 0xbb, - 0x92, 0x78, 0x6d, 0xb9, 0x93, 0x78, 0x6e, 0xbb, 0x92, 0x78, 0x6e, 0xb9, - 0x93, 0x78, 0x6f, 0xbb, 0x92, 0x78, 0x70, 0xb9, 0x93, 0x78, 0x70, 0xbb, - 0x92, 0x78, 0x71, 0xb9, 0x93, 0x78, 0x72, 0xbb, 0x92, 0x78, 0x72, 0xb9, - 0x93, 0x78, 0x73, 0xbb, 0x92, 0x78, 0x73, 0xb9, 0x93, 0x78, 0x74, 0xbb, - 0x92, 0x78, 0x75, 0xb9, 0x93, 0x78, 0x75, 0xbb, 0x92, 0x78, 0x76, 0xb9, - 0x93, 0x78, 0x76, 0xbb, 0x92, 0x78, 0x77, 0xb9, 0x93, 0x78, 0x78, 0xbb, - 0x92, 0x78, 0x78, 0xb9, 0x93, 0x78, 0x79, 0xbb, 0x92, 0x78, 0x79, 0xb9, - 0x93, 0x78, 0x7a, 0xbb, 0x92, 0x78, 0x7a, 0xb9, 0x93, 0x78, 0x7b, 0xbb, - 0x92, 0x78, 0x7c, 0xb9, 0x93, 0x78, 0x7c, 0xbb, 0x92, 0x78, 0x7d, 0xb9, - 0x93, 0x78, 0x7d, 0xbb, 0x92, 0x78, 0x7e, 0xb9, 0x93, 0x78, 0x7e, 0xbb, - 0x92, 0x78, 0x7f, 0xb9, 0x93, 0x78, 0x7f, 0xbb, 0x92, 0x78, 0x80, 0xb9, - 0x93, 0x78, 0x81, 0xbb, 0x92, 0x78, 0x81, 0xb9, 0x93, 0x78, 0x82, 0xb7, - 0x93, 0x78, 0x82, 0xb9, 0x93, 0x78, 0x83, 0xb7, 0x93, 0x78, 0x83, 0xb9, - 0x93, 0x78, 0x84, 0xb7, 0x93, 0x78, 0x84, 0xb9, 0x93, 0x78, 0x85, 0xb7, - 0x93, 0x78, 0x85, 0xb9, 0x93, 0x78, 0x86, 0xb7, 0x93, 0x78, 0x86, 0xb9, - 0x93, 0x78, 0x87, 0xb7, 0x93, 0x78, 0x87, 0xb9, 0x93, 0x78, 0x88, 0xb7, - 0x93, 0x78, 0x88, 0xb9, 0x93, 0x78, 0x89, 0xb7, 0x93, 0x78, 0x89, 0xb9, - 0x93, 0x78, 0x8a, 0xb7, 0x93, 0x78, 0x8a, 0xb9, 0x93, 0x78, 0x8b, 0xb7, - 0x93, 0x78, 0x8b, 0xb9, 0x93, 0x78, 0x8c, 0xb7, 0x93, 0x78, 0x8c, 0xb9, - 0x93, 0x78, 0x8d, 0xb7, 0x93, 0x78, 0x8d, 0xb9, 0x93, 0x78, 0x8e, 0xb7, - 0x93, 0x78, 0x8e, 0xb9, 0x93, 0x78, 0x8e, 0xb7, 0x93, 0x78, 0x8f, 0xb9, - 0x93, 0x78, 0x8f, 0xb7, 0x93, 0x78, 0x90, 0xb7, 0x94, 0x78, 0x90, 0xb7, - 0x93, 0x78, 0x91, 0xb7, 0x94, 0x78, 0x91, 0xb7, 0x93, 0x78, 0x92, 0xb7, - 0x94, 0x78, 0x92, 0xb7, 0x93, 0x78, 0x93, 0xb7, 0x94, 0x78, 0x92, 0xb7, - 0x93, 0x78, 0x93, 0xb7, 0x94, 0x78, 0x95, 0xb7, 0x94, 0x78, 0x95, 0xb7, - 0x94, 0x78, 0x95, 0xb7, 0x94, 0x78, 0x95, 0xb7, 0x94, 0x78, 0x96, 0xb7, - 0x94, 0x78, 0x96, 0xb7, 0x94, 0x78, 0x97, 0xb5, 0x95, 0x78, 0x97, 0xb9, - 0x97, 0x78, 0x98, 0xb9, 0x98, 0x78, 0x98, 0xb9, 0x98, 0x78, 0x98, 0xb9, - 0x98, 0x78, 0x99, 0xb9, 0x98, 0x78, 0x99, 0xb9, 0x98, 0x78, 0x9a, 0xb9, - 0x98, 0x78, 0x9a, 0xb9, 0x9a, 0x78, 0x9a, 0xb9, 0x9a, 0x78, 0x9b, 0xb9, - 0x9b, 0x78, 0x9b, 0xb9, 0x9b, 0x78, 0x9c, 0xb9, 0x9c, 0x78, 0x9c, 0xb9, - 0x9c, 0x78, 0x9d, 0xb9, 0x9d, 0x78, 0x9d, 0xb9, 0x9d, 0x78, 0x9d, 0xb9, - 0x9d, 0x78, 0x9e, 0xb9, 0x9d, 0x78, 0x9e, 0xb9, 0x9d, 0x78, 0x9f, 0xb9, - 0x9d, 0x78, 0x9f, 0xba, 0x9f, 0x78, 0x9f, 0xba, 0x9f, 0x78, 0xa0, 0xba, - 0xa0, 0x78, 0xa0, 0xba, 0xa0, 0x78, 0xa1, 0xba, 0xa1, 0x78, 0xa1, 0xba, - 0xa1, 0x78, 0xa1, 0xba, 0xa1, 0x78, 0xa2, 0xba, 0xa1, 0x78, 0xa2, 0xba, - 0xa1, 0x78, 0xa3, 0xba, 0xa1, 0x78, 0xa3, 0xba, 0xa1, 0x78, 0xa3, 0xba, - 0xa1, 0x78, 0xa4, 0xba, 0xa1, 0x78, 0xa4, 0xbb, 0xa4, 0x78, 0xa5, 0xbb, - 0xa5, 0x78, 0xa5, 0xbb, 0xa5, 0x78, 0xa5, 0xbb, 0xa5, 0x78, 0xa6, 0xbb, - 0xa6, 0x78, 0xa6, 0xb9, 0xaa, 0x78, 0xa6, 0xb7, 0xaa, 0x78, 0xa7, 0xb9, - 0xaa, 0x78, 0xa7, 0xb7, 0xaa, 0x78, 0xa8, 0xb7, 0xab, 0x78, 0xa8, 0xb7, - 0xaa, 0x78, 0xa8, 0xb7, 0xab, 0x78, 0xa9, 0xb7, 0xaa, 0x78, 0xa9, 0xb7, - 0xab, 0x78, 0xaa, 0xb7, 0xaa, 0x78, 0xaa, 0xb7, 0xab, 0x78, 0xaa, 0xb7, - 0xaa, 0x77, 0xaa, 0xb7, 0xab, 0x78, 0xaa, 0xb7, 0xab, 0x77, 0xaa, 0xb7, - 0xab, 0x78, 0xaa, 0xb7, 0xac, 0x77, 0xaa, 0xb7, 0xac, 0x78, 0xaa, 0xb7, - 0xac, 0x77, 0xaa, 0xb7, 0xad, 0x78, 0xaa, 0xb7, 0xad, 0x77, 0xab, 0xb7, - 0xae, 0x75, 0xaa, 0xb7, 0xae, 0x77, 0xab, 0xb7, 0xae, 0x75, 0xaa, 0xb7, - 0xaf, 0x77, 0xab, 0xb7, 0xaf, 0x75, 0xaa, 0xb7, 0xaf, 0x77, 0xab, 0xb7, - 0xb0, 0x75, 0xaa, 0xb7, 0xb0, 0x77, 0xb2, 0xb7, 0xb0, 0x70, 0xb2, 0xb7, - 0xb1, 0x70, 0xb2, 0xb7, 0xb1, 0x70, 0xb2, 0xb7, 0xb2, 0x70, 0xb2, 0xb7, - 0xb2, 0x70, 0xb2, 0xb7, 0xb2, 0x70, 0xb3, 0xb7, 0xb3, 0x70, 0xb3, 0xb7, - 0xb3, 0x70, 0xb3, 0xb7, 0xb3, 0x70, 0xb6, 0xb7, 0xb4, 0x71, 0xb6, 0xb7, - 0xb4, 0x71, 0xb6, 0xb7, 0xb4, 0x71, 0xb6, 0xb7, 0xb5, 0x71, 0xb6, 0xb7, - 0xb5, 0x71, 0xb6, 0xb7, 0xb5, 0x71, 0xb6, 0xb7, 0xb6, 0x71, 0xb6, 0xb7, - 0xb6, 0x71, 0xb6, 0xb7, 0xb6, 0x71, 0xb7, 0xb7, 0xb7, 0x71, 0xb7, 0xb7, - 0xb7, 0x71, 0xb7, 0xb7, 0xb7, 0x71, 0xba, 0xb7, 0xb8, 0x72, 0xba, 0xb7, - 0xb8, 0x72, 0xba, 0xb7, 0xb8, 0x72, 0xba, 0xb7, 0xb9, 0x72, 0xba, 0xb7, - 0xb9, 0x72, 0xba, 0xb7, 0xb9, 0x72, 0xba, 0xb7, 0xba, 0x72, 0xba, 0xb7, - 0xba, 0x72, 0xba, 0xb7, 0xba, 0x72, 0xbb, 0xb7, 0xbb, 0x72, 0xbb, 0xb7, - 0xbb, 0x72, 0xbd, 0xb7, 0xbb, 0x73, 0xbe, 0xb7, 0xbc, 0x73, 0xbd, 0xb7, - 0xbc, 0x73, 0xbe, 0xb7, 0xbc, 0x73, 0xbd, 0xb7, 0xbd, 0x73, 0xbe, 0xb7, - 0xbd, 0x73, 0xbd, 0xb7, 0xbd, 0x73, 0xbe, 0xb7, 0xbe, 0x73, 0xbe, 0xb7, - 0xbe, 0x73, 0xbe, 0xb7, 0xbe, 0x73, 0xbf, 0xb7, 0xbf, 0x73, 0xbf, 0xb7, - 0xbf, 0x73, 0xbf, 0xb7, 0xbf, 0x73, 0xc1, 0xb7, 0xc0, 0x74, 0xc1, 0xb7, - 0xc0, 0x74, 0xc1, 0xb7, 0xc0, 0x74, 0xc1, 0xb7, 0xc1, 0x74, 0xc1, 0xb7, - 0xc1, 0x74, 0xc1, 0xb7, 0xc1, 0x74, 0xc1, 0xb7, 0xc1, 0x74, 0xc2, 0xb7, - 0xc2, 0x74, 0xc2, 0xb7, 0xc2, 0x74, 0xc2, 0xb7, 0xc2, 0x74, 0xc3, 0xb7, - 0xc3, 0x74, 0xc4, 0xb7, 0xc3, 0x75, 0xc5, 0xb7, 0xc3, 0x75, 0xc4, 0xb7, - 0xc4, 0x75, 0xc5, 0xb7, 0xc4, 0x75, 0xc4, 0xb7, 0xc4, 0x75, 0xc5, 0xb7, - 0xc5, 0x75, 0xc5, 0xb7, 0xc5, 0x75, 0xc5, 0xb7, 0xc5, 0x75, 0xc6, 0xb7, - 0xc6, 0x75, 0xc6, 0xb7, 0xc6, 0x75, 0xc6, 0xb7, 0xc6, 0x75, 0xc8, 0xb7, - 0xc6, 0x76, 0xc8, 0xb7, 0xc7, 0x76, 0xc8, 0xb7, 0xc7, 0x76, 0xc8, 0xb7, - 0xc7, 0x76, 0xc8, 0xb7, 0xc8, 0x76, 0xc8, 0xb7, 0xc8, 0x76, 0xc8, 0xb7, - 0xc8, 0x76, 0xc9, 0xb7, 0xc9, 0x76, 0xc9, 0xb7, 0xc9, 0x76, 0xc9, 0xb7, - 0xc9, 0x76, 0xc9, 0xb7, 0xc9, 0x76, 0xca, 0xb7, 0xca, 0x76, 0xca, 0xb7, - 0xca, 0x76, 0xcb, 0xb7, 0xca, 0x77, 0xcb, 0xb7, 0xcb, 0x77, 0xcb, 0xb7, - 0xcb, 0x77, 0xcb, 0xb7, 0xcb, 0x77, 0xcc, 0xb7, 0xcc, 0x77, 0xcc, 0xb7, - 0xcc, 0x77, 0xcc, 0xb7, 0xcc, 0x77, 0xcc, 0xb7, 0xcc, 0x77, 0xcd, 0xb7, - 0xcd, 0x77, 0xcd, 0xb7, 0xcd, 0x77, 0xcd, 0xb7, 0xcd, 0x77, 0xce, 0xb7, - 0xce, 0x77, 0xce, 0xb7, 0xce, 0x77, 0xce, 0xb7, 0xce, 0x78, 0xce, 0xb7, - 0xce, 0x78, 0xce, 0xb7, 0xcf, 0x78, 0xce, 0xb7, 0xcf, 0x78, 0xce, 0xb7, - 0xcf, 0x78, 0xce, 0xb7, 0xd0, 0x78, 0xce, 0xb7, 0xd0, 0x78, 0xce, 0xb7, - 0xd0, 0x78, 0xce, 0xb7, 0xd0, 0x78, 0xce, 0xb7, 0xd1, 0x78, 0xcf, 0xb7, - 0xd1, 0x75, 0xce, 0xb7, 0xd1, 0x78, 0xcf, 0xb7, 0xd2, 0x75, 0xce, 0xb7, - 0xd2, 0x78, 0xcf, 0xb7, 0xd2, 0x75, 0xce, 0xb7, 0xd2, 0x78, 0xcf, 0xb7, - 0xd3, 0x75, 0xce, 0xb7, 0xd3, 0x78, 0xcf, 0xb7, 0xd3, 0x75, 0xce, 0xb7, - 0xd4, 0x78, 0xcf, 0xb7, 0xd4, 0x75, 0xce, 0xb7, 0xd4, 0x78, 0xcf, 0xb7, - 0xd4, 0x75, 0xce, 0xb7, 0xd5, 0x78, 0xcf, 0xb7, 0xd5, 0x75, 0xce, 0xb7, - 0xd5, 0x78, 0xcf, 0xb7, 0xd6, 0x75, 0xce, 0xb7, 0xd6, 0x78, 0xcf, 0xb7, - 0xd6, 0x75, 0xce, 0xb7, 0xd6, 0x78, 0xcf, 0xb7, 0xd7, 0x75, 0xce, 0xb7, - 0xd7, 0x78, 0xcf, 0xb7, 0xd7, 0x75, 0xce, 0xb7, 0xd7, 0x78, 0xcf, 0xb7, - 0xd8, 0x75, 0xce, 0xb7, 0xd8, 0x78, 0xcf, 0xb7, 0xd8, 0x75, 0xce, 0xb7, - 0xd9, 0x78, 0xcf, 0xb7, 0xd9, 0x75, 0xcf, 0xb7, 0xd9, 0x72, 0xcf, 0xb7, - 0xd9, 0x75, 0xcf, 0xb7, 0xda, 0x72, 0xcf, 0xb7, 0xda, 0x75, 0xcf, 0xb7, - 0xda, 0x72, 0xcf, 0xb7, 0xda, 0x75, 0xcf, 0xb7, 0xdb, 0x72, 0xcf, 0xb7, - 0xdb, 0x75, 0xcf, 0xb7, 0xdb, 0x72, 0xcf, 0xb7, 0xdb, 0x75, 0xcf, 0xb7, - 0xdc, 0x72, 0xcf, 0xb7, 0xdc, 0x75, 0xcf, 0xb7, 0xdc, 0x72, 0xcf, 0xb7, - 0xdd, 0x75, 0xcf, 0xb7, 0xdd, 0x72, 0xcf, 0xb7, 0xdd, 0x75, 0xeb, 0xb7, - 0xdd, 0x7a, 0xea, 0xb7, 0xde, 0x7e, 0xeb, 0xb7, 0xde, 0x7a, 0xea, 0xb7, - 0xde, 0x7e, 0xeb, 0xb7, 0xde, 0x7a, 0xea, 0xb7, 0xdf, 0x7e, 0xeb, 0xb7, - 0xdf, 0x7a, 0xea, 0xb7, 0xdf, 0x7e, 0xeb, 0xb7, 0xdf, 0x7a, 0xea, 0xb7, - 0xe0, 0x7e, 0xeb, 0xb7, 0xe0, 0x7a, 0xea, 0xb7, 0xe0, 0x7e, 0xeb, 0xb7, - 0xe1, 0x7a, 0xea, 0xb7, 0xe1, 0x7e, 0xeb, 0xb7, 0xe1, 0x7a, 0xea, 0xb7, - 0xe1, 0x7e, 0xeb, 0xb7, 0xe2, 0x7a, 0xeb, 0xb7, 0xe2, 0x78, 0xeb, 0xb7, - 0xe2, 0x7a, 0xeb, 0xb7, 0xe2, 0x78, 0xeb, 0xb7, 0xe3, 0x7a, 0xeb, 0xb7, - 0xe3, 0x78, 0xeb, 0xb7, 0xe3, 0x7a, 0xeb, 0xb7, 0xe3, 0x78, 0xeb, 0xb7, - 0xe4, 0x7a, 0xeb, 0xb7, 0xe4, 0x78, 0xeb, 0xb7, 0xe4, 0x7a, 0xeb, 0xb7, - 0xe4, 0x78, 0xeb, 0xb7, 0xe5, 0x7a, 0xeb, 0xb7, 0xe5, 0x78, 0xeb, 0xb7, - 0xe5, 0x7a, 0xeb, 0xb7, 0xe5, 0x78, 0xeb, 0xb7, 0xe6, 0x7a, 0xeb, 0xb7, - 0xe6, 0x78, 0xeb, 0xb7, 0xe6, 0x7a, 0xeb, 0xb7, 0xe6, 0x78, 0xeb, 0xb7, - 0xe7, 0x7a, 0xeb, 0xb7, 0xe7, 0x78, 0xeb, 0xb7, 0xe7, 0x7a, 0xeb, 0xb7, - 0xe7, 0x78, 0xeb, 0xb7, 0xe8, 0x7a, 0xeb, 0xb7, 0xe8, 0x78, 0xeb, 0xb7, - 0xe8, 0x7a, 0xeb, 0xb7, 0xe8, 0x78, 0xeb, 0xb7, 0xe9, 0x7a, 0xeb, 0xb7, - 0xe9, 0x78, 0xeb, 0xb7, 0xe9, 0x7a, 0xeb, 0xb7, 0xe9, 0x78, 0xeb, 0xb7, - 0xea, 0x7a, 0xeb, 0xb7, 0xea, 0x78, 0xeb, 0xb7, 0xea, 0x78, 0xeb, 0xb7, - 0xea, 0x78, 0xeb, 0xb7, 0xeb, 0x78, 0xeb, 0xb7, 0xea, 0x78, 0xeb, 0xb7, - 0xeb, 0x78, 0xeb, 0xb7, 0xea, 0x78, 0xec, 0xb7, 0xeb, 0x78, 0xec, 0xb7, - 0xea, 0x78, 0xec, 0xb7, 0xeb, 0x78, 0xec, 0xb7, 0xea, 0x78, 0xec, 0xb7, - 0xeb, 0x78, 0xed, 0xb5, 0xeb, 0x78, 0xed, 0xb7, 0xeb, 0x78, 0xed, 0xb5, - 0xeb, 0x78, 0xed, 0xb7, 0xeb, 0x78, 0xee, 0xb5, 0xeb, 0x78, 0xee, 0xb7, - 0xeb, 0x78, 0xee, 0xb5, 0xeb, 0x78, 0xee, 0xb7, 0xeb, 0x78, 0xef, 0xb5, - 0xeb, 0x78, 0xef, 0xb7, 0xeb, 0x78, 0xef, 0xb5, 0xeb, 0x78, 0xef, 0xb7, - 0xeb, 0x78, 0xf0, 0xb5, 0xeb, 0x78, 0xf0, 0xb7, 0xeb, 0x78, 0xf0, 0xb5, - 0xeb, 0x78, 0xf0, 0xb9, 0xf5, 0x78, 0xf1, 0xb7, 0xf6, 0x78, 0xf1, 0xb9, - 0xf5, 0x78, 0xf1, 0xb7, 0xf6, 0x78, 0xf1, 0xb9, 0xf5, 0x78, 0xf2, 0xb7, - 0xf6, 0x78, 0xf2, 0xb9, 0xf5, 0x78, 0xf2, 0xb7, 0xf6, 0x78, 0xf2, 0xb7, - 0xf6, 0x78, 0xf2, 0xb7, 0xf6, 0x78, 0xf3, 0xb7, 0xf6, 0x78, 0xf3, 0xb7, - 0xf6, 0x78, 0xf3, 0xb7, 0xf6, 0x78, 0xf3, 0xb7, 0xf6, 0x78, 0xf4, 0xb7, - 0xf6, 0x78, 0xf4, 0xb7, 0xf6, 0x78, 0xf4, 0xb7, 0xf6, 0x78, 0xf4, 0xb7, - 0xf6, 0x78, 0xf5, 0xb7, 0xf6, 0x78, 0xf5, 0xb7, 0xf6, 0x78, 0xf5, 0xb7, - 0xf6, 0x78, 0xf5, 0xb7, 0xf6, 0x78, 0xf5, 0xb7, 0xf6, 0x78, 0xf6, 0xb7, - 0xf6, 0x77, 0xf5, 0xb7, 0xf6, 0x78, 0xf6, 0xb7, 0xf6, 0x77, 0xf5, 0xb7, - 0xf6, 0x78, 0xf6, 0xb7, 0xf7, 0x77, 0xf5, 0xb7, 0xf7, 0x78, 0xf6, 0xb7, - 0xf7, 0x77, 0xf5, 0xb7, 0xf7, 0x78, 0xf6, 0xb7, 0xf8, 0x77, 0xfa, 0xb7, - 0xf8, 0x78, 0xf9, 0xb7, 0xf8, 0x7a, 0xfa, 0xb7, 0xf8, 0x78, 0xf9, 0xb7, - 0xf8, 0x7a, 0xfa, 0xb7, 0xf9, 0x78, 0xfa, 0xb7, 0xf9, 0x78, 0xfa, 0xb7, - 0xf9, 0x78, 0xfa, 0xb7, 0xf9, 0x78, 0xfa, 0xb7, 0xf9, 0x78, 0xfa, 0xb7, - 0xf9, 0x78, 0xfa, 0xb7, 0xf9, 0x78, 0xfa, 0xb7, 0xf9, 0x78, 0xfa, 0xb5, - 0xfa, 0x78, 0xfb, 0xb7, 0xf9, 0x78, 0xfb, 0xb5, 0xfa, 0x78, 0xfb, 0xb7, - 0xf9, 0x78, 0xfb, 0xb5, 0xfa, 0x78, 0xfc, 0xb7, 0xf9, 0x78, 0xfc, 0xb5, - 0xfa, 0x78, 0xfc, 0xb7, 0xf9, 0x78, 0xfc, 0xb5, 0xfa, 0x78, 0xfc, 0xb7, - 0xf9, 0x78, 0xfd, 0xb5, 0xfa, 0x78, 0xfd, 0xb7, 0xf9, 0x78, 0xfd, 0xb5, - 0xfa, 0x78, 0xfd, 0xb4, 0xfa, 0x78, 0xfe, 0xb5, 0xfa, 0x78, 0xfe, 0xb5, - 0xfa, 0x78, 0xfe, 0xb5, 0xfa, 0x78, 0xfe, 0xb5, 0xfa, 0x78, 0xfe, 0xb5, - 0xfa, 0x78, 0xff, 0xb5, 0xfa, 0x78, 0xff, 0xb5, 0xfa, 0x78, 0x03, 0xc1, - 0x91, 0x79, 0x0a, 0xbf, 0x91, 0x79, 0x0f, 0xbd, 0x92, 0x79, 0x14, 0xbf, - 0x91, 0x79, 0x17, 0xbd, 0x92, 0x79, 0x1b, 0xbf, 0x91, 0x79, 0x1e, 0xbd, - 0x92, 0x79, 0x20, 0xbf, 0x91, 0x79, 0x23, 0xbd, 0x92, 0x79, 0x25, 0xbf, - 0x91, 0x79, 0x27, 0xbd, 0x92, 0x79, 0x29, 0xbf, 0x91, 0x79, 0x2b, 0xbd, - 0x92, 0x79, 0x2d, 0xbf, 0x91, 0x79, 0x2f, 0xbd, 0x92, 0x79, 0x31, 0xbf, - 0x91, 0x79, 0x32, 0xbd, 0x92, 0x79, 0x34, 0xbf, 0x91, 0x79, 0x35, 0xbd, - 0x92, 0x79, 0x37, 0xbf, 0x91, 0x79, 0x38, 0xbd, 0x92, 0x79, 0x3a, 0xbf, - 0x91, 0x79, 0x3b, 0xbd, 0x92, 0x79, 0x3c, 0xbf, 0x91, 0x79, 0x3e, 0xbd, - 0x92, 0x79, 0x3f, 0xbf, 0x91, 0x79, 0x40, 0xbd, 0x92, 0x79, 0x42, 0xba, - 0x92, 0x79, 0x43, 0xbd, 0x92, 0x79, 0x44, 0xba, 0x92, 0x79, 0x45, 0xbd, - 0x92, 0x79, 0x46, 0xba, 0x92, 0x79, 0x47, 0xbd, 0x92, 0x79, 0x48, 0xba, - 0x92, 0x79, 0x49, 0xbd, 0x92, 0x79, 0x4a, 0xba, 0x92, 0x79, 0x4b, 0xbd, - 0x92, 0x79, 0x4c, 0xba, 0x92, 0x79, 0x4d, 0xbd, 0x92, 0x79, 0x4e, 0xba, - 0x92, 0x79, 0x4f, 0xbd, 0x92, 0x79, 0x50, 0xba, 0x92, 0x79, 0x51, 0xbd, - 0x92, 0x79, 0x52, 0xba, 0x92, 0x79, 0x53, 0xbd, 0x92, 0x79, 0x54, 0xba, - 0x92, 0x79, 0x55, 0xbd, 0x92, 0x79, 0x56, 0xba, 0x92, 0x79, 0x57, 0xbd, - 0x92, 0x79, 0x58, 0xba, 0x92, 0x79, 0x58, 0xbd, 0x92, 0x79, 0x59, 0xba, - 0x92, 0x79, 0x5a, 0xbd, 0x92, 0x79, 0x5b, 0xba, 0x92, 0x79, 0x5c, 0xbd, - 0x92, 0x79, 0x5d, 0xba, 0x92, 0x79, 0x5d, 0xbd, 0x92, 0x79, 0x5e, 0xba, - 0x92, 0x79, 0x5f, 0xbd, 0x92, 0x79, 0x60, 0xba, 0x92, 0x79, 0x60, 0xbd, - 0x92, 0x79, 0x61, 0xba, 0x92, 0x79, 0x62, 0xbd, 0x92, 0x79, 0x63, 0xba, - 0x92, 0x79, 0x63, 0xbd, 0x92, 0x79, 0x64, 0xba, 0x92, 0x79, 0x65, 0xbd, - 0x92, 0x79, 0x66, 0xba, 0x92, 0x79, 0x66, 0xbd, 0x92, 0x79, 0x67, 0xba, - 0x92, 0x79, 0x68, 0xbd, 0x92, 0x79, 0x68, 0xba, 0x92, 0x79, 0x69, 0xb8, - 0x93, 0x79, 0x6a, 0xba, 0x92, 0x79, 0x6a, 0xb8, 0x93, 0x79, 0x6b, 0xba, - 0x92, 0x79, 0x6c, 0xb8, 0x93, 0x79, 0x6c, 0xba, 0x92, 0x79, 0x6d, 0xb8, - 0x93, 0x79, 0x6e, 0xba, 0x92, 0x79, 0x6e, 0xb8, 0x93, 0x79, 0x6f, 0xba, - 0x92, 0x79, 0x70, 0xb8, 0x93, 0x79, 0x70, 0xba, 0x92, 0x79, 0x71, 0xb8, - 0x93, 0x79, 0x72, 0xba, 0x92, 0x79, 0x72, 0xb8, 0x93, 0x79, 0x73, 0xba, - 0x92, 0x79, 0x73, 0xb8, 0x93, 0x79, 0x74, 0xba, 0x92, 0x79, 0x75, 0xb8, - 0x93, 0x79, 0x75, 0xba, 0x92, 0x79, 0x76, 0xb8, 0x93, 0x79, 0x76, 0xba, - 0x92, 0x79, 0x77, 0xb8, 0x93, 0x79, 0x78, 0xba, 0x92, 0x79, 0x78, 0xb8, - 0x93, 0x79, 0x79, 0xba, 0x92, 0x79, 0x79, 0xb8, 0x93, 0x79, 0x7a, 0xba, - 0x92, 0x79, 0x7a, 0xb8, 0x93, 0x79, 0x7b, 0xba, 0x92, 0x79, 0x7c, 0xb8, - 0x93, 0x79, 0x7c, 0xba, 0x92, 0x79, 0x7d, 0xb8, 0x93, 0x79, 0x7d, 0xba, - 0x92, 0x79, 0x7e, 0xb8, 0x93, 0x79, 0x7e, 0xba, 0x92, 0x79, 0x7f, 0xb8, - 0x93, 0x79, 0x7f, 0xba, 0x92, 0x79, 0x80, 0xb8, 0x93, 0x79, 0x81, 0xba, - 0x92, 0x79, 0x81, 0xb8, 0x93, 0x79, 0x82, 0xba, 0x92, 0x79, 0x82, 0xb8, - 0x93, 0x79, 0x83, 0xba, 0x92, 0x79, 0x83, 0xb8, 0x93, 0x79, 0x84, 0xba, - 0x92, 0x79, 0x84, 0xb8, 0x93, 0x79, 0x85, 0xba, 0x92, 0x79, 0x85, 0xb8, - 0x93, 0x79, 0x86, 0xba, 0x92, 0x79, 0x86, 0xb8, 0x93, 0x79, 0x87, 0xba, - 0x92, 0x79, 0x87, 0xb8, 0x93, 0x79, 0x88, 0xb7, 0x93, 0x79, 0x88, 0xb8, - 0x93, 0x79, 0x89, 0xb7, 0x93, 0x79, 0x89, 0xb8, 0x93, 0x79, 0x8a, 0xb7, - 0x93, 0x79, 0x8a, 0xb8, 0x93, 0x79, 0x8b, 0xb7, 0x93, 0x79, 0x8b, 0xb8, - 0x93, 0x79, 0x8c, 0xb7, 0x93, 0x79, 0x8c, 0xb8, 0x93, 0x79, 0x8d, 0xb7, - 0x93, 0x79, 0x8d, 0xb8, 0x93, 0x79, 0x8e, 0xb7, 0x93, 0x79, 0x8e, 0xb8, - 0x93, 0x79, 0x8e, 0xb7, 0x93, 0x79, 0x8f, 0xb8, 0x93, 0x79, 0x8f, 0xb7, - 0x93, 0x79, 0x90, 0xb8, 0x93, 0x79, 0x90, 0xb7, 0x93, 0x79, 0x91, 0xb8, - 0x93, 0x79, 0x91, 0xb7, 0x93, 0x79, 0x92, 0xb7, 0x94, 0x79, 0x92, 0xb7, - 0x93, 0x79, 0x93, 0xb7, 0x94, 0x79, 0x92, 0xb7, 0x93, 0x79, 0x93, 0xb7, - 0x94, 0x79, 0x95, 0xb7, 0x94, 0x79, 0x95, 0xb7, 0x94, 0x79, 0x95, 0xb7, - 0x94, 0x79, 0x95, 0xb7, 0x94, 0x79, 0x96, 0xb8, 0x96, 0x79, 0x96, 0xb7, - 0x94, 0x79, 0x97, 0xb8, 0x96, 0x79, 0x97, 0xb8, 0x95, 0x79, 0x98, 0xb8, - 0x96, 0x79, 0x98, 0xb9, 0x98, 0x79, 0x98, 0xb9, 0x98, 0x79, 0x99, 0xb9, - 0x99, 0x79, 0x99, 0xb9, 0x99, 0x79, 0x9a, 0xb9, 0x9a, 0x79, 0x9a, 0xb9, - 0x9a, 0x79, 0x9a, 0xb9, 0x9a, 0x79, 0x9b, 0xb9, 0x9a, 0x79, 0x9b, 0xb9, - 0x9a, 0x79, 0x9c, 0xb9, 0x9a, 0x79, 0x9c, 0xb9, 0x9a, 0x79, 0x9d, 0xba, - 0x9d, 0x79, 0x9d, 0xba, 0x9d, 0x79, 0x9d, 0xba, 0x9d, 0x79, 0x9e, 0xba, - 0x9e, 0x79, 0x9e, 0xba, 0x9e, 0x79, 0x9f, 0xba, 0x9f, 0x79, 0x9f, 0xba, - 0x9f, 0x79, 0x9f, 0xba, 0x9f, 0x79, 0xa0, 0xba, 0x9f, 0x79, 0xa0, 0xba, - 0x9f, 0x79, 0xa1, 0xba, 0x9f, 0x79, 0xa1, 0xba, 0xa1, 0x79, 0xa1, 0xba, - 0xa1, 0x79, 0xa2, 0xba, 0xa2, 0x79, 0xa2, 0xba, 0xa2, 0x79, 0xa3, 0xba, - 0xa3, 0x79, 0xa3, 0xba, 0xa3, 0x79, 0xa3, 0xba, 0xa3, 0x79, 0xa4, 0xba, - 0xa3, 0x79, 0xa4, 0xba, 0xa3, 0x79, 0xa5, 0xba, 0xa3, 0x79, 0xa5, 0xba, - 0xa3, 0x79, 0xa5, 0xba, 0xa3, 0x79, 0xa6, 0xba, 0xa3, 0x79, 0xa6, 0xb9, - 0xaa, 0x79, 0xa6, 0xb7, 0xaa, 0x79, 0xa7, 0xb9, 0xaa, 0x79, 0xa7, 0xb7, - 0xaa, 0x79, 0xa8, 0xb7, 0xab, 0x79, 0xa8, 0xb7, 0xaa, 0x79, 0xa8, 0xb7, - 0xab, 0x79, 0xa9, 0xb7, 0xaa, 0x79, 0xa9, 0xb7, 0xab, 0x79, 0xaa, 0xb7, - 0xaa, 0x79, 0xaa, 0xb7, 0xab, 0x79, 0xaa, 0xb7, 0xaa, 0x78, 0xaa, 0xb7, - 0xab, 0x79, 0xaa, 0xb7, 0xab, 0x78, 0xaa, 0xb7, 0xab, 0x79, 0xaa, 0xb7, - 0xac, 0x78, 0xaa, 0xb7, 0xac, 0x79, 0xaa, 0xb7, 0xac, 0x78, 0xaa, 0xb7, - 0xad, 0x79, 0xaa, 0xb7, 0xad, 0x78, 0xaa, 0xb7, 0xae, 0x79, 0xaa, 0xb7, - 0xae, 0x78, 0xaa, 0xb7, 0xae, 0x79, 0xaa, 0xb7, 0xaf, 0x78, 0xaa, 0xb7, - 0xaf, 0x79, 0xaa, 0xb7, 0xaf, 0x78, 0xaa, 0xb7, 0xb0, 0x79, 0xaa, 0xb7, - 0xb0, 0x78, 0xab, 0xb7, 0xb0, 0x75, 0xb1, 0xb7, 0xb1, 0x70, 0xb4, 0xb7, - 0xb1, 0x71, 0xb4, 0xb7, 0xb2, 0x71, 0xb4, 0xb7, 0xb2, 0x71, 0xb4, 0xb7, - 0xb2, 0x71, 0xb4, 0xb7, 0xb3, 0x71, 0xb4, 0xb7, 0xb3, 0x71, 0xb4, 0xb7, - 0xb3, 0x71, 0xb4, 0xb7, 0xb4, 0x71, 0xb4, 0xb7, 0xb4, 0x71, 0xb4, 0xb7, - 0xb4, 0x71, 0xb5, 0xb7, 0xb5, 0x71, 0xb5, 0xb7, 0xb5, 0x71, 0xb5, 0xb7, - 0xb5, 0x71, 0xb8, 0xb7, 0xb6, 0x72, 0xb8, 0xb7, 0xb6, 0x72, 0xb8, 0xb7, - 0xb6, 0x72, 0xb8, 0xb7, 0xb7, 0x72, 0xb8, 0xb7, 0xb7, 0x72, 0xb8, 0xb7, - 0xb7, 0x72, 0xb8, 0xb7, 0xb8, 0x72, 0xb8, 0xb7, 0xb8, 0x72, 0xb8, 0xb7, - 0xb8, 0x72, 0xb9, 0xb7, 0xb9, 0x72, 0xb9, 0xb7, 0xb9, 0x72, 0xbb, 0xb7, - 0xb9, 0x73, 0xbc, 0xb7, 0xba, 0x73, 0xbb, 0xb7, 0xba, 0x73, 0xbc, 0xb7, - 0xba, 0x73, 0xbb, 0xb7, 0xbb, 0x73, 0xbc, 0xb7, 0xbb, 0x73, 0xbb, 0xb7, - 0xbb, 0x73, 0xbc, 0xb7, 0xbc, 0x73, 0xbc, 0xb7, 0xbc, 0x73, 0xbc, 0xb7, - 0xbc, 0x73, 0xbd, 0xb7, 0xbd, 0x73, 0xbf, 0xb7, 0xbd, 0x74, 0xbf, 0xb7, - 0xbd, 0x74, 0xbf, 0xb7, 0xbe, 0x74, 0xbf, 0xb7, 0xbe, 0x74, 0xbf, 0xb7, - 0xbe, 0x74, 0xbf, 0xb7, 0xbf, 0x74, 0xbf, 0xb7, 0xbf, 0x74, 0xbf, 0xb7, - 0xbf, 0x74, 0xc0, 0xb7, 0xc0, 0x74, 0xc0, 0xb7, 0xc0, 0x74, 0xc0, 0xb7, - 0xc0, 0x74, 0xc1, 0xb7, 0xc1, 0x74, 0xc1, 0xb7, 0xc1, 0x74, 0xc2, 0xb7, - 0xc1, 0x75, 0xc3, 0xb7, 0xc1, 0x75, 0xc2, 0xb7, 0xc2, 0x75, 0xc3, 0xb7, - 0xc2, 0x75, 0xc2, 0xb7, 0xc2, 0x75, 0xc3, 0xb7, 0xc3, 0x75, 0xc3, 0xb7, - 0xc3, 0x75, 0xc3, 0xb7, 0xc3, 0x75, 0xc4, 0xb7, 0xc4, 0x75, 0xc4, 0xb7, - 0xc4, 0x75, 0xc4, 0xb7, 0xc4, 0x75, 0xc5, 0xb7, 0xc5, 0x75, 0xc6, 0xb7, - 0xc5, 0x76, 0xc6, 0xb7, 0xc5, 0x76, 0xc6, 0xb7, 0xc6, 0x76, 0xc6, 0xb7, - 0xc6, 0x76, 0xc6, 0xb7, 0xc6, 0x76, 0xc6, 0xb7, 0xc6, 0x76, 0xc7, 0xb7, - 0xc7, 0x76, 0xc7, 0xb7, 0xc7, 0x76, 0xc7, 0xb7, 0xc7, 0x76, 0xc8, 0xb7, - 0xc8, 0x76, 0xc8, 0xb7, 0xc8, 0x76, 0xc9, 0xb7, 0xc8, 0x77, 0xca, 0xb7, - 0xc9, 0x77, 0xc9, 0xb7, 0xc9, 0x77, 0xca, 0xb7, 0xc9, 0x77, 0xc9, 0xb7, - 0xc9, 0x77, 0xca, 0xb7, 0xca, 0x77, 0xca, 0xb7, 0xca, 0x77, 0xca, 0xb7, - 0xca, 0x77, 0xcb, 0xb7, 0xcb, 0x77, 0xcb, 0xb7, 0xcb, 0x77, 0xcb, 0xb7, - 0xcb, 0x77, 0xcc, 0xb7, 0xcc, 0x77, 0xcc, 0xb7, 0xcc, 0x77, 0xcd, 0xb7, - 0xcc, 0x78, 0xcd, 0xb7, 0xcc, 0x78, 0xcd, 0xb7, 0xcd, 0x78, 0xcd, 0xb7, - 0xcd, 0x78, 0xcd, 0xb7, 0xcd, 0x78, 0xce, 0xb7, 0xce, 0x78, 0xce, 0xb7, - 0xce, 0x78, 0xce, 0xb7, 0xce, 0x78, 0xce, 0xb7, 0xce, 0x78, 0xce, 0xb7, - 0xcf, 0x78, 0xce, 0xb7, 0xcf, 0x78, 0xce, 0xb7, 0xcf, 0x78, 0xce, 0xb7, - 0xd0, 0x78, 0xce, 0xb7, 0xd0, 0x78, 0xce, 0xb7, 0xd0, 0x78, 0xce, 0xb7, - 0xd0, 0x78, 0xce, 0xb7, 0xd1, 0x78, 0xce, 0xb7, 0xd1, 0x78, 0xce, 0xb7, - 0xd1, 0x78, 0xce, 0xb7, 0xd2, 0x78, 0xce, 0xb7, 0xd2, 0x78, 0xce, 0xb7, - 0xd2, 0x78, 0xce, 0xb7, 0xd2, 0x78, 0xce, 0xb7, 0xd3, 0x78, 0xce, 0xb7, - 0xd3, 0x78, 0xcf, 0xb7, 0xd3, 0x75, 0xce, 0xb7, 0xd4, 0x78, 0xcf, 0xb7, - 0xd4, 0x75, 0xce, 0xb7, 0xd4, 0x78, 0xcf, 0xb7, 0xd4, 0x75, 0xce, 0xb7, - 0xd5, 0x78, 0xcf, 0xb7, 0xd5, 0x75, 0xce, 0xb7, 0xd5, 0x78, 0xcf, 0xb7, - 0xd6, 0x75, 0xce, 0xb7, 0xd6, 0x78, 0xcf, 0xb7, 0xd6, 0x75, 0xce, 0xb7, - 0xd6, 0x78, 0xcf, 0xb7, 0xd7, 0x75, 0xce, 0xb7, 0xd7, 0x78, 0xcf, 0xb7, - 0xd7, 0x75, 0xce, 0xb7, 0xd7, 0x78, 0xcf, 0xb7, 0xd8, 0x75, 0xce, 0xb7, - 0xd8, 0x78, 0xcf, 0xb7, 0xd8, 0x75, 0xce, 0xb7, 0xd9, 0x78, 0xcf, 0xb7, - 0xd9, 0x75, 0xcf, 0xb7, 0xd9, 0x73, 0xcf, 0xb7, 0xd9, 0x75, 0xcf, 0xb7, - 0xda, 0x73, 0xcf, 0xb7, 0xda, 0x75, 0xcf, 0xb7, 0xda, 0x73, 0xcf, 0xb7, - 0xda, 0x75, 0xcf, 0xb7, 0xdb, 0x73, 0xcf, 0xb7, 0xdb, 0x75, 0xcf, 0xb7, - 0xdb, 0x73, 0xcf, 0xb7, 0xdb, 0x75, 0xcf, 0xb7, 0xdc, 0x73, 0xcf, 0xb7, - 0xdc, 0x75, 0xcf, 0xb7, 0xdc, 0x73, 0xcf, 0xb7, 0xdd, 0x75, 0xcf, 0xb7, - 0xdd, 0x73, 0xcf, 0xb7, 0xdd, 0x75, 0xeb, 0xb7, 0xdd, 0x7b, 0xea, 0xb7, - 0xde, 0x7f, 0xeb, 0xb7, 0xde, 0x7b, 0xea, 0xb7, 0xde, 0x7f, 0xeb, 0xb7, - 0xde, 0x7b, 0xea, 0xb7, 0xdf, 0x7f, 0xeb, 0xb7, 0xdf, 0x7b, 0xea, 0xb7, - 0xdf, 0x7f, 0xeb, 0xb7, 0xdf, 0x7b, 0xea, 0xb7, 0xe0, 0x7f, 0xeb, 0xb7, - 0xe0, 0x7b, 0xea, 0xb7, 0xe0, 0x7f, 0xeb, 0xb7, 0xe1, 0x7b, 0xea, 0xb7, - 0xe1, 0x7f, 0xeb, 0xb7, 0xe1, 0x7b, 0xea, 0xb7, 0xe1, 0x7f, 0xeb, 0xb7, - 0xe2, 0x7b, 0xeb, 0xb7, 0xe2, 0x79, 0xeb, 0xb7, 0xe2, 0x7b, 0xeb, 0xb7, - 0xe2, 0x79, 0xeb, 0xb7, 0xe3, 0x7b, 0xeb, 0xb7, 0xe3, 0x79, 0xeb, 0xb7, - 0xe3, 0x7b, 0xeb, 0xb7, 0xe3, 0x79, 0xeb, 0xb7, 0xe4, 0x7b, 0xeb, 0xb7, - 0xe4, 0x79, 0xeb, 0xb7, 0xe4, 0x7b, 0xeb, 0xb7, 0xe4, 0x79, 0xeb, 0xb7, - 0xe5, 0x7b, 0xeb, 0xb7, 0xe5, 0x79, 0xeb, 0xb7, 0xe5, 0x7b, 0xeb, 0xb7, - 0xe5, 0x79, 0xeb, 0xb7, 0xe6, 0x7b, 0xeb, 0xb7, 0xe6, 0x79, 0xeb, 0xb7, - 0xe6, 0x7b, 0xeb, 0xb7, 0xe6, 0x79, 0xeb, 0xb7, 0xe7, 0x7b, 0xeb, 0xb7, - 0xe7, 0x79, 0xeb, 0xb7, 0xe7, 0x7b, 0xeb, 0xb7, 0xe7, 0x79, 0xeb, 0xb7, - 0xe8, 0x7b, 0xeb, 0xb7, 0xe8, 0x79, 0xeb, 0xb7, 0xe8, 0x7b, 0xeb, 0xb7, - 0xe8, 0x79, 0xeb, 0xb7, 0xe9, 0x7b, 0xeb, 0xb7, 0xe9, 0x79, 0xeb, 0xb7, - 0xe9, 0x7b, 0xeb, 0xb7, 0xe9, 0x79, 0xeb, 0xb7, 0xea, 0x7b, 0xeb, 0xb7, - 0xea, 0x79, 0xeb, 0xb7, 0xea, 0x79, 0xeb, 0xb7, 0xea, 0x79, 0xeb, 0xb7, - 0xeb, 0x79, 0xeb, 0xb7, 0xea, 0x79, 0xeb, 0xb7, 0xeb, 0x79, 0xeb, 0xb7, - 0xea, 0x79, 0xec, 0xb7, 0xeb, 0x79, 0xec, 0xb7, 0xea, 0x79, 0xec, 0xb7, - 0xeb, 0x79, 0xec, 0xb7, 0xea, 0x79, 0xec, 0xb7, 0xeb, 0x79, 0xed, 0xb5, - 0xeb, 0x79, 0xed, 0xb7, 0xeb, 0x79, 0xed, 0xb5, 0xeb, 0x79, 0xed, 0xb7, - 0xeb, 0x79, 0xee, 0xb5, 0xeb, 0x79, 0xee, 0xb7, 0xeb, 0x79, 0xee, 0xb5, - 0xeb, 0x79, 0xee, 0xb7, 0xeb, 0x79, 0xef, 0xb5, 0xeb, 0x79, 0xef, 0xb7, - 0xeb, 0x79, 0xef, 0xb5, 0xeb, 0x79, 0xef, 0xb7, 0xeb, 0x79, 0xf0, 0xb5, - 0xeb, 0x79, 0xf0, 0xb7, 0xeb, 0x79, 0xf0, 0xb5, 0xeb, 0x79, 0xf0, 0xb9, - 0xf5, 0x79, 0xf1, 0xb7, 0xf6, 0x79, 0xf1, 0xb9, 0xf5, 0x79, 0xf1, 0xb7, - 0xf6, 0x79, 0xf1, 0xb9, 0xf5, 0x79, 0xf2, 0xb7, 0xf6, 0x79, 0xf2, 0xb9, - 0xf5, 0x79, 0xf2, 0xb7, 0xf6, 0x79, 0xf2, 0xb9, 0xf5, 0x79, 0xf2, 0xb7, - 0xf6, 0x79, 0xf3, 0xb9, 0xf5, 0x79, 0xf3, 0xb7, 0xf6, 0x79, 0xf3, 0xb9, - 0xf5, 0x79, 0xf3, 0xb7, 0xf6, 0x79, 0xf4, 0xb9, 0xf5, 0x79, 0xf4, 0xb7, - 0xf6, 0x79, 0xf4, 0xb7, 0xf6, 0x79, 0xf4, 0xb7, 0xf6, 0x79, 0xf5, 0xb7, - 0xf6, 0x79, 0xf5, 0xb7, 0xf6, 0x79, 0xf5, 0xb7, 0xf6, 0x79, 0xf5, 0xb7, - 0xf6, 0x79, 0xf5, 0xb7, 0xf6, 0x79, 0xf5, 0xb7, 0xf6, 0x79, 0xf5, 0xb7, - 0xf6, 0x79, 0xf5, 0xb7, 0xf6, 0x79, 0xf5, 0xb7, 0xf6, 0x79, 0xf6, 0xb7, - 0xf7, 0x77, 0xf5, 0xb7, 0xf7, 0x79, 0xf6, 0xb7, 0xf7, 0x77, 0xf5, 0xb7, - 0xf7, 0x79, 0xf6, 0xb7, 0xf8, 0x77, 0xfa, 0xb7, 0xf8, 0x79, 0xf9, 0xb7, - 0xf8, 0x7b, 0xfa, 0xb7, 0xf8, 0x79, 0xf9, 0xb7, 0xf8, 0x7b, 0xfa, 0xb7, - 0xf9, 0x79, 0xfa, 0xb7, 0xf9, 0x79, 0xfa, 0xb7, 0xf9, 0x79, 0xfa, 0xb7, - 0xf9, 0x79, 0xfa, 0xb7, 0xf9, 0x79, 0xfa, 0xb7, 0xf9, 0x79, 0xfa, 0xb7, - 0xf9, 0x79, 0xfa, 0xb7, 0xf9, 0x79, 0xfa, 0xb6, 0xfa, 0x79, 0xfb, 0xb7, - 0xf9, 0x79, 0xfb, 0xb6, 0xfa, 0x79, 0xfb, 0xb7, 0xf9, 0x79, 0xfb, 0xb6, - 0xfa, 0x79, 0xfc, 0xb7, 0xf9, 0x79, 0xfc, 0xb6, 0xfa, 0x79, 0xfc, 0xb7, - 0xf9, 0x79, 0xfc, 0xb6, 0xfa, 0x79, 0xfc, 0xb7, 0xf9, 0x79, 0xfd, 0xb6, - 0xfa, 0x79, 0xfd, 0xb7, 0xf9, 0x79, 0xfd, 0xb6, 0xfa, 0x79, 0xfd, 0xb7, - 0xf9, 0x79, 0xfe, 0xb6, 0xfa, 0x79, 0xfe, 0xb6, 0xfa, 0x79, 0xfe, 0xb6, - 0xfa, 0x79, 0xfe, 0xb6, 0xfa, 0x79, 0xfe, 0xb6, 0xfa, 0x79, 0xff, 0xb6, - 0xfa, 0x79, 0xff, 0xb6, 0xfa, 0x79, 0x03, 0xbd, 0x92, 0x79, 0x0a, 0xbf, - 0x91, 0x79, 0x0f, 0xbd, 0x92, 0x79, 0x14, 0xbf, 0x91, 0x79, 0x17, 0xbd, - 0x92, 0x79, 0x1b, 0xbf, 0x91, 0x79, 0x1e, 0xbd, 0x92, 0x79, 0x20, 0xbf, - 0x91, 0x79, 0x23, 0xbd, 0x92, 0x79, 0x25, 0xbf, 0x91, 0x79, 0x27, 0xbd, - 0x92, 0x79, 0x29, 0xbf, 0x91, 0x79, 0x2b, 0xbd, 0x92, 0x79, 0x2d, 0xbf, - 0x91, 0x79, 0x2f, 0xbd, 0x92, 0x79, 0x31, 0xbf, 0x91, 0x79, 0x32, 0xbd, - 0x92, 0x79, 0x34, 0xbf, 0x91, 0x79, 0x35, 0xbd, 0x92, 0x79, 0x37, 0xbf, - 0x91, 0x79, 0x38, 0xbd, 0x92, 0x79, 0x3a, 0xbf, 0x91, 0x79, 0x3b, 0xbd, - 0x92, 0x79, 0x3c, 0xbf, 0x91, 0x79, 0x3e, 0xbd, 0x92, 0x79, 0x3f, 0xbf, - 0x91, 0x79, 0x40, 0xbd, 0x92, 0x79, 0x42, 0xbf, 0x91, 0x79, 0x43, 0xbd, - 0x92, 0x79, 0x44, 0xbf, 0x91, 0x79, 0x45, 0xbd, 0x92, 0x79, 0x46, 0xbf, - 0x91, 0x79, 0x47, 0xbd, 0x92, 0x79, 0x48, 0xbf, 0x91, 0x79, 0x49, 0xbd, - 0x92, 0x79, 0x4a, 0xbf, 0x91, 0x79, 0x4b, 0xbd, 0x92, 0x79, 0x4c, 0xbf, - 0x91, 0x79, 0x4d, 0xbd, 0x92, 0x79, 0x4e, 0xbf, 0x91, 0x79, 0x4f, 0xbd, - 0x92, 0x79, 0x50, 0xbf, 0x91, 0x79, 0x51, 0xbd, 0x92, 0x79, 0x52, 0xbf, - 0x91, 0x79, 0x53, 0xbd, 0x92, 0x79, 0x54, 0xbf, 0x91, 0x79, 0x55, 0xbd, - 0x92, 0x79, 0x56, 0xbf, 0x91, 0x79, 0x57, 0xbd, 0x92, 0x79, 0x58, 0xbf, - 0x91, 0x79, 0x58, 0xbd, 0x92, 0x79, 0x59, 0xbb, 0x92, 0x79, 0x5a, 0xbd, - 0x92, 0x79, 0x5b, 0xbb, 0x92, 0x79, 0x5c, 0xbd, 0x92, 0x79, 0x5d, 0xbb, - 0x92, 0x79, 0x5d, 0xbd, 0x92, 0x79, 0x5e, 0xbb, 0x92, 0x79, 0x5f, 0xbd, - 0x92, 0x79, 0x60, 0xbb, 0x92, 0x79, 0x60, 0xbd, 0x92, 0x79, 0x61, 0xbb, - 0x92, 0x79, 0x62, 0xbd, 0x92, 0x79, 0x63, 0xbb, 0x92, 0x79, 0x63, 0xbd, - 0x92, 0x79, 0x64, 0xbb, 0x92, 0x79, 0x65, 0xbd, 0x92, 0x79, 0x66, 0xbb, - 0x92, 0x79, 0x66, 0xbd, 0x92, 0x79, 0x67, 0xbb, 0x92, 0x79, 0x68, 0xbd, - 0x92, 0x79, 0x68, 0xbb, 0x92, 0x79, 0x69, 0xbd, 0x92, 0x79, 0x6a, 0xbb, - 0x92, 0x79, 0x6a, 0xbd, 0x92, 0x79, 0x6b, 0xbb, 0x92, 0x79, 0x6c, 0xbd, - 0x92, 0x79, 0x6c, 0xbb, 0x92, 0x79, 0x6d, 0xbd, 0x92, 0x79, 0x6e, 0xbb, - 0x92, 0x79, 0x6e, 0xbd, 0x92, 0x79, 0x6f, 0xbb, 0x92, 0x79, 0x70, 0xbd, - 0x92, 0x79, 0x70, 0xbb, 0x92, 0x79, 0x71, 0xbd, 0x92, 0x79, 0x72, 0xbb, - 0x92, 0x79, 0x72, 0xbd, 0x92, 0x79, 0x73, 0xbb, 0x92, 0x79, 0x73, 0xb9, - 0x93, 0x79, 0x74, 0xbb, 0x92, 0x79, 0x75, 0xb9, 0x93, 0x79, 0x75, 0xbb, - 0x92, 0x79, 0x76, 0xb9, 0x93, 0x79, 0x76, 0xbb, 0x92, 0x79, 0x77, 0xb9, - 0x93, 0x79, 0x78, 0xbb, 0x92, 0x79, 0x78, 0xb9, 0x93, 0x79, 0x79, 0xbb, - 0x92, 0x79, 0x79, 0xb9, 0x93, 0x79, 0x7a, 0xbb, 0x92, 0x79, 0x7a, 0xb9, - 0x93, 0x79, 0x7b, 0xbb, 0x92, 0x79, 0x7c, 0xb9, 0x93, 0x79, 0x7c, 0xbb, - 0x92, 0x79, 0x7d, 0xb9, 0x93, 0x79, 0x7d, 0xbb, 0x92, 0x79, 0x7e, 0xb9, - 0x93, 0x79, 0x7e, 0xbb, 0x92, 0x79, 0x7f, 0xb9, 0x93, 0x79, 0x7f, 0xbb, - 0x92, 0x79, 0x80, 0xb9, 0x93, 0x79, 0x81, 0xbb, 0x92, 0x79, 0x81, 0xb9, - 0x93, 0x79, 0x82, 0xbb, 0x92, 0x79, 0x82, 0xb9, 0x93, 0x79, 0x83, 0xbb, - 0x92, 0x79, 0x83, 0xb9, 0x93, 0x79, 0x84, 0xbb, 0x92, 0x79, 0x84, 0xb9, - 0x93, 0x79, 0x85, 0xbb, 0x92, 0x79, 0x85, 0xb9, 0x93, 0x79, 0x86, 0xbb, - 0x92, 0x79, 0x86, 0xb9, 0x93, 0x79, 0x87, 0xbb, 0x92, 0x79, 0x87, 0xb9, - 0x93, 0x79, 0x88, 0xb7, 0x93, 0x79, 0x88, 0xb9, 0x93, 0x79, 0x89, 0xb7, - 0x93, 0x79, 0x89, 0xb9, 0x93, 0x79, 0x8a, 0xb7, 0x93, 0x79, 0x8a, 0xb9, - 0x93, 0x79, 0x8b, 0xb7, 0x93, 0x79, 0x8b, 0xb9, 0x93, 0x79, 0x8c, 0xb7, - 0x93, 0x79, 0x8c, 0xb9, 0x93, 0x79, 0x8d, 0xb7, 0x93, 0x79, 0x8d, 0xb9, - 0x93, 0x79, 0x8e, 0xb7, 0x93, 0x79, 0x8e, 0xb9, 0x93, 0x79, 0x8e, 0xb7, - 0x93, 0x79, 0x8f, 0xb9, 0x93, 0x79, 0x8f, 0xb7, 0x93, 0x79, 0x90, 0xb9, - 0x93, 0x79, 0x90, 0xb7, 0x93, 0x79, 0x91, 0xb9, 0x93, 0x79, 0x91, 0xb7, - 0x93, 0x79, 0x92, 0xb7, 0x94, 0x79, 0x92, 0xb7, 0x93, 0x79, 0x93, 0xb7, - 0x94, 0x79, 0x92, 0xb7, 0x93, 0x79, 0x93, 0xb7, 0x94, 0x79, 0x95, 0xb7, - 0x94, 0x79, 0x94, 0xb7, 0x94, 0x79, 0x95, 0xb7, 0x94, 0x79, 0x95, 0xb7, - 0x94, 0x79, 0x96, 0xb9, 0x96, 0x79, 0x96, 0xb9, 0x96, 0x79, 0x97, 0xb9, - 0x97, 0x79, 0x97, 0xb9, 0x97, 0x79, 0x98, 0xb9, 0x98, 0x79, 0x98, 0xb9, - 0x98, 0x79, 0x98, 0xb9, 0x98, 0x79, 0x99, 0xb9, 0x98, 0x79, 0x99, 0xb9, - 0x98, 0x79, 0x9a, 0xb9, 0x98, 0x79, 0x9a, 0xb9, 0x9a, 0x79, 0x9a, 0xb9, - 0x9a, 0x79, 0x9b, 0xb9, 0x9b, 0x79, 0x9b, 0xb9, 0x9b, 0x79, 0x9c, 0xb9, - 0x9c, 0x79, 0x9c, 0xb9, 0x9c, 0x79, 0x9d, 0xb9, 0x9d, 0x79, 0x9d, 0xb9, - 0x9d, 0x79, 0x9d, 0xb9, 0x9d, 0x79, 0x9e, 0xb9, 0x9d, 0x79, 0x9e, 0xb9, - 0x9d, 0x79, 0x9f, 0xb9, 0x9d, 0x79, 0x9f, 0xba, 0x9f, 0x79, 0x9f, 0xba, - 0x9f, 0x79, 0xa0, 0xba, 0xa0, 0x79, 0xa0, 0xba, 0xa0, 0x79, 0xa1, 0xba, - 0xa1, 0x79, 0xa1, 0xba, 0xa1, 0x79, 0xa1, 0xba, 0xa1, 0x79, 0xa2, 0xba, - 0xa1, 0x79, 0xa2, 0xba, 0xa1, 0x79, 0xa3, 0xba, 0xa1, 0x79, 0xa3, 0xba, - 0xa1, 0x79, 0xa3, 0xbb, 0xa3, 0x79, 0xa4, 0xbb, 0xa4, 0x79, 0xa4, 0xbb, - 0xa4, 0x79, 0xa5, 0xbb, 0xa5, 0x79, 0xa5, 0xbb, 0xa5, 0x79, 0xa5, 0xbb, - 0xa5, 0x79, 0xa6, 0xbb, 0xa6, 0x79, 0xa6, 0xbb, 0xa5, 0x79, 0xa6, 0xb7, - 0xaa, 0x79, 0xa7, 0xb9, 0xaa, 0x79, 0xa7, 0xb7, 0xaa, 0x79, 0xa8, 0xb9, - 0xaa, 0x79, 0xa8, 0xb7, 0xaa, 0x79, 0xa8, 0xb9, 0xaa, 0x79, 0xa9, 0xb7, - 0xaa, 0x79, 0xa9, 0xb7, 0xab, 0x79, 0xaa, 0xb7, 0xaa, 0x79, 0xaa, 0xb7, - 0xab, 0x79, 0xaa, 0xb7, 0xaa, 0x79, 0xaa, 0xb7, 0xab, 0x79, 0xaa, 0xb7, - 0xab, 0x79, 0xaa, 0xb7, 0xab, 0x79, 0xaa, 0xb7, 0xac, 0x77, 0xaa, 0xb7, - 0xac, 0x79, 0xaa, 0xb7, 0xac, 0x77, 0xaa, 0xb7, 0xad, 0x79, 0xaa, 0xb7, - 0xad, 0x77, 0xaa, 0xb7, 0xae, 0x79, 0xaa, 0xb7, 0xae, 0x77, 0xaa, 0xb7, - 0xae, 0x79, 0xaa, 0xb7, 0xaf, 0x77, 0xaa, 0xb7, 0xaf, 0x79, 0xaa, 0xb7, - 0xaf, 0x77, 0xaa, 0xb7, 0xb0, 0x79, 0xaa, 0xb7, 0xb0, 0x77, 0xab, 0xb7, - 0xb0, 0x75, 0xb2, 0xb7, 0xb1, 0x70, 0xb2, 0xb7, 0xb1, 0x70, 0xb2, 0xb7, - 0xb2, 0x70, 0xb2, 0xb7, 0xb2, 0x70, 0xb2, 0xb7, 0xb2, 0x70, 0xb3, 0xb7, - 0xb3, 0x70, 0xb6, 0xb7, 0xb3, 0x71, 0xb6, 0xb7, 0xb3, 0x71, 0xb6, 0xb7, - 0xb4, 0x71, 0xb6, 0xb7, 0xb4, 0x71, 0xb6, 0xb7, 0xb4, 0x71, 0xb6, 0xb7, - 0xb5, 0x71, 0xb6, 0xb7, 0xb5, 0x71, 0xb6, 0xb7, 0xb5, 0x71, 0xb6, 0xb7, - 0xb6, 0x71, 0xb6, 0xb7, 0xb6, 0x71, 0xb6, 0xb7, 0xb6, 0x71, 0xb7, 0xb7, - 0xb7, 0x71, 0xb7, 0xb7, 0xb7, 0x71, 0xb7, 0xb7, 0xb7, 0x71, 0xba, 0xb7, - 0xb8, 0x72, 0xba, 0xb7, 0xb8, 0x72, 0xba, 0xb7, 0xb8, 0x72, 0xba, 0xb7, - 0xb9, 0x72, 0xba, 0xb7, 0xb9, 0x72, 0xba, 0xb7, 0xb9, 0x72, 0xba, 0xb7, - 0xba, 0x72, 0xba, 0xb7, 0xba, 0x72, 0xba, 0xb7, 0xba, 0x72, 0xbb, 0xb7, - 0xbb, 0x72, 0xbb, 0xb7, 0xbb, 0x72, 0xbd, 0xb7, 0xbb, 0x73, 0xbe, 0xb7, - 0xbc, 0x73, 0xbd, 0xb7, 0xbc, 0x73, 0xbe, 0xb7, 0xbc, 0x73, 0xbd, 0xb7, - 0xbd, 0x73, 0xbe, 0xb7, 0xbd, 0x73, 0xbd, 0xb7, 0xbd, 0x73, 0xbe, 0xb7, - 0xbe, 0x73, 0xbe, 0xb7, 0xbe, 0x73, 0xbe, 0xb7, 0xbe, 0x73, 0xbf, 0xb7, - 0xbf, 0x73, 0xc1, 0xb7, 0xbf, 0x74, 0xc1, 0xb7, 0xbf, 0x74, 0xc1, 0xb7, - 0xc0, 0x74, 0xc1, 0xb7, 0xc0, 0x74, 0xc1, 0xb7, 0xc0, 0x74, 0xc1, 0xb7, - 0xc1, 0x74, 0xc1, 0xb7, 0xc1, 0x74, 0xc1, 0xb7, 0xc1, 0x74, 0xc1, 0xb7, - 0xc1, 0x74, 0xc2, 0xb7, 0xc2, 0x74, 0xc2, 0xb7, 0xc2, 0x74, 0xc2, 0xb7, - 0xc2, 0x74, 0xc3, 0xb7, 0xc3, 0x74, 0xc4, 0xb7, 0xc3, 0x75, 0xc5, 0xb7, - 0xc3, 0x75, 0xc4, 0xb7, 0xc4, 0x75, 0xc5, 0xb7, 0xc4, 0x75, 0xc4, 0xb7, - 0xc4, 0x75, 0xc5, 0xb7, 0xc5, 0x75, 0xc5, 0xb7, 0xc5, 0x75, 0xc5, 0xb7, - 0xc5, 0x75, 0xc6, 0xb7, 0xc6, 0x75, 0xc6, 0xb7, 0xc6, 0x75, 0xc6, 0xb7, - 0xc6, 0x75, 0xc8, 0xb7, 0xc6, 0x76, 0xc8, 0xb7, 0xc7, 0x76, 0xc8, 0xb7, - 0xc7, 0x76, 0xc8, 0xb7, 0xc7, 0x76, 0xc8, 0xb7, 0xc8, 0x76, 0xc8, 0xb7, - 0xc8, 0x76, 0xc8, 0xb7, 0xc8, 0x76, 0xc9, 0xb7, 0xc9, 0x76, 0xc9, 0xb7, - 0xc9, 0x76, 0xc9, 0xb7, 0xc9, 0x76, 0xc9, 0xb7, 0xc9, 0x76, 0xcb, 0xb7, - 0xca, 0x77, 0xcb, 0xb7, 0xca, 0x77, 0xcb, 0xb7, 0xca, 0x77, 0xcb, 0xb7, - 0xcb, 0x77, 0xcb, 0xb7, 0xcb, 0x77, 0xcb, 0xb7, 0xcb, 0x77, 0xcc, 0xb7, - 0xcc, 0x77, 0xcc, 0xb7, 0xcc, 0x77, 0xcc, 0xb7, 0xcc, 0x77, 0xcc, 0xb7, - 0xcc, 0x77, 0xcd, 0xb7, 0xcd, 0x77, 0xcd, 0xb7, 0xcd, 0x77, 0xcd, 0xb7, - 0xcd, 0x77, 0xce, 0xb7, 0xce, 0x78, 0xce, 0xb7, 0xce, 0x78, 0xce, 0xb7, - 0xce, 0x78, 0xce, 0xb7, 0xce, 0x78, 0xce, 0xb7, 0xcf, 0x78, 0xce, 0xb7, - 0xcf, 0x78, 0xce, 0xb7, 0xcf, 0x78, 0xce, 0xb7, 0xd0, 0x78, 0xce, 0xb7, - 0xd0, 0x78, 0xce, 0xb7, 0xd0, 0x78, 0xce, 0xb7, 0xd0, 0x78, 0xce, 0xb7, - 0xd1, 0x78, 0xce, 0xb7, 0xd1, 0x78, 0xce, 0xb7, 0xd1, 0x78, 0xce, 0xb7, - 0xd2, 0x78, 0xce, 0xb7, 0xd2, 0x78, 0xce, 0xb7, 0xd2, 0x78, 0xce, 0xb7, - 0xd2, 0x78, 0xce, 0xb7, 0xd3, 0x78, 0xce, 0xb7, 0xd3, 0x78, 0xcf, 0xb7, - 0xd3, 0x75, 0xce, 0xb7, 0xd4, 0x78, 0xcf, 0xb7, 0xd4, 0x75, 0xce, 0xb7, - 0xd4, 0x78, 0xcf, 0xb7, 0xd4, 0x75, 0xce, 0xb7, 0xd5, 0x78, 0xcf, 0xb7, - 0xd5, 0x75, 0xce, 0xb7, 0xd5, 0x78, 0xcf, 0xb7, 0xd6, 0x75, 0xce, 0xb7, - 0xd6, 0x78, 0xcf, 0xb7, 0xd6, 0x75, 0xce, 0xb7, 0xd6, 0x78, 0xcf, 0xb7, - 0xd7, 0x75, 0xce, 0xb7, 0xd7, 0x78, 0xcf, 0xb7, 0xd7, 0x75, 0xce, 0xb7, - 0xd7, 0x78, 0xcf, 0xb7, 0xd8, 0x75, 0xce, 0xb7, 0xd8, 0x78, 0xcf, 0xb7, - 0xd8, 0x75, 0xce, 0xb7, 0xd9, 0x78, 0xcf, 0xb7, 0xd9, 0x75, 0xce, 0xb7, - 0xd9, 0x78, 0xcf, 0xb7, 0xd9, 0x75, 0xce, 0xb7, 0xda, 0x78, 0xcf, 0xb7, - 0xda, 0x75, 0xce, 0xb7, 0xda, 0x78, 0xcf, 0xb7, 0xda, 0x75, 0xce, 0xb7, - 0xdb, 0x78, 0xcf, 0xb7, 0xdb, 0x75, 0xce, 0xb7, 0xdb, 0x78, 0xcf, 0xb7, - 0xdb, 0x75, 0xce, 0xb7, 0xdc, 0x78, 0xcf, 0xb7, 0xdc, 0x75, 0xcf, 0xb7, - 0xdc, 0x72, 0xcf, 0xb7, 0xdd, 0x75, 0xcf, 0xb7, 0xdd, 0x72, 0xcf, 0xb7, - 0xdd, 0x75, 0xeb, 0xb7, 0xdd, 0x7a, 0xea, 0xb7, 0xde, 0x7e, 0xeb, 0xb7, - 0xde, 0x7a, 0xea, 0xb7, 0xde, 0x7e, 0xeb, 0xb7, 0xde, 0x7a, 0xea, 0xb7, - 0xdf, 0x7e, 0xeb, 0xb7, 0xdf, 0x7a, 0xea, 0xb7, 0xdf, 0x7e, 0xeb, 0xb7, - 0xdf, 0x7a, 0xea, 0xb7, 0xe0, 0x7e, 0xeb, 0xb7, 0xe0, 0x7a, 0xea, 0xb7, - 0xe0, 0x7e, 0xeb, 0xb7, 0xe1, 0x7a, 0xea, 0xb7, 0xe1, 0x7e, 0xeb, 0xb7, - 0xe1, 0x7a, 0xea, 0xb7, 0xe1, 0x7e, 0xeb, 0xb7, 0xe2, 0x7a, 0xea, 0xb7, - 0xe2, 0x7e, 0xeb, 0xb7, 0xe2, 0x7a, 0xea, 0xb7, 0xe2, 0x7e, 0xeb, 0xb7, - 0xe3, 0x7a, 0xea, 0xb7, 0xe3, 0x7e, 0xeb, 0xb7, 0xe3, 0x7a, 0xea, 0xb7, - 0xe3, 0x7e, 0xeb, 0xb7, 0xe4, 0x7a, 0xea, 0xb7, 0xe4, 0x7e, 0xeb, 0xb7, - 0xe4, 0x7a, 0xea, 0xb7, 0xe4, 0x7e, 0xeb, 0xb7, 0xe5, 0x7a, 0xeb, 0xb7, - 0xe5, 0x79, 0xeb, 0xb7, 0xe5, 0x7a, 0xeb, 0xb7, 0xe5, 0x79, 0xeb, 0xb7, - 0xe6, 0x7a, 0xeb, 0xb7, 0xe6, 0x79, 0xeb, 0xb7, 0xe6, 0x7a, 0xeb, 0xb7, - 0xe6, 0x79, 0xeb, 0xb7, 0xe7, 0x7a, 0xeb, 0xb7, 0xe7, 0x79, 0xeb, 0xb7, - 0xe7, 0x7a, 0xeb, 0xb7, 0xe7, 0x79, 0xeb, 0xb7, 0xe8, 0x7a, 0xeb, 0xb7, - 0xe8, 0x79, 0xeb, 0xb7, 0xe8, 0x7a, 0xeb, 0xb7, 0xe8, 0x79, 0xeb, 0xb7, - 0xe9, 0x7a, 0xeb, 0xb7, 0xe9, 0x79, 0xeb, 0xb7, 0xe9, 0x7a, 0xeb, 0xb7, - 0xe9, 0x79, 0xeb, 0xb7, 0xea, 0x7a, 0xeb, 0xb7, 0xea, 0x79, 0xeb, 0xb7, - 0xea, 0x7a, 0xeb, 0xb7, 0xea, 0x79, 0xeb, 0xb7, 0xeb, 0x79, 0xeb, 0xb7, - 0xea, 0x79, 0xeb, 0xb7, 0xeb, 0x79, 0xeb, 0xb7, 0xea, 0x79, 0xec, 0xb7, - 0xeb, 0x79, 0xec, 0xb7, 0xea, 0x79, 0xec, 0xb7, 0xeb, 0x79, 0xec, 0xb7, - 0xea, 0x79, 0xec, 0xb7, 0xeb, 0x79, 0xed, 0xb7, 0xea, 0x79, 0xed, 0xb7, - 0xeb, 0x79, 0xed, 0xb7, 0xea, 0x79, 0xed, 0xb7, 0xeb, 0x79, 0xee, 0xb7, - 0xea, 0x79, 0xee, 0xb7, 0xeb, 0x79, 0xee, 0xb7, 0xea, 0x79, 0xee, 0xb7, - 0xeb, 0x79, 0xef, 0xb5, 0xeb, 0x79, 0xef, 0xb7, 0xeb, 0x79, 0xef, 0xb5, - 0xeb, 0x79, 0xef, 0xb7, 0xeb, 0x79, 0xf0, 0xb5, 0xeb, 0x79, 0xf0, 0xb7, - 0xeb, 0x79, 0xf0, 0xb5, 0xeb, 0x79, 0xf0, 0xb9, 0xf5, 0x79, 0xf1, 0xb7, - 0xf6, 0x79, 0xf1, 0xb9, 0xf5, 0x79, 0xf1, 0xb7, 0xf6, 0x79, 0xf1, 0xb9, - 0xf5, 0x79, 0xf2, 0xb7, 0xf6, 0x79, 0xf2, 0xb9, 0xf5, 0x79, 0xf2, 0xb7, - 0xf6, 0x79, 0xf2, 0xb9, 0xf5, 0x79, 0xf2, 0xb7, 0xf6, 0x79, 0xf3, 0xb9, - 0xf5, 0x79, 0xf3, 0xb7, 0xf6, 0x79, 0xf3, 0xb9, 0xf5, 0x79, 0xf3, 0xb7, - 0xf6, 0x79, 0xf4, 0xb9, 0xf5, 0x79, 0xf4, 0xb7, 0xf6, 0x79, 0xf4, 0xb7, - 0xf6, 0x79, 0xf4, 0xb7, 0xf6, 0x79, 0xf5, 0xb7, 0xf6, 0x79, 0xf5, 0xb7, - 0xf6, 0x79, 0xf5, 0xb7, 0xf6, 0x79, 0xf5, 0xb7, 0xf6, 0x79, 0xf5, 0xb7, - 0xf6, 0x79, 0xf5, 0xb7, 0xf6, 0x79, 0xf5, 0xb7, 0xf6, 0x79, 0xf5, 0xb7, - 0xf6, 0x79, 0xf5, 0xb7, 0xf6, 0x79, 0xf6, 0xb7, 0xf7, 0x77, 0xf5, 0xb7, - 0xf7, 0x79, 0xf6, 0xb7, 0xf7, 0x77, 0xf5, 0xb7, 0xf7, 0x79, 0xf9, 0xb7, - 0xf8, 0x7a, 0xfa, 0xb7, 0xf8, 0x79, 0xf9, 0xb7, 0xf8, 0x7a, 0xfa, 0xb7, - 0xf8, 0x79, 0xf9, 0xb7, 0xf8, 0x7a, 0xfa, 0xb7, 0xf9, 0x79, 0xf9, 0xb7, - 0xf9, 0x7a, 0xfa, 0xb7, 0xf9, 0x79, 0xfa, 0xb7, 0xf9, 0x79, 0xfa, 0xb7, - 0xf9, 0x79, 0xfa, 0xb7, 0xf9, 0x79, 0xfa, 0xb7, 0xf9, 0x79, 0xfa, 0xb7, - 0xf9, 0x79, 0xfa, 0xb7, 0xf9, 0x79, 0xfb, 0xb7, 0xf9, 0x79, 0xfb, 0xb7, - 0xf9, 0x79, 0xfb, 0xb7, 0xf9, 0x79, 0xfb, 0xb5, 0xfa, 0x79, 0xfc, 0xb7, - 0xf9, 0x79, 0xfc, 0xb5, 0xfa, 0x79, 0xfc, 0xb7, 0xf9, 0x79, 0xfc, 0xb5, - 0xfa, 0x79, 0xfc, 0xb7, 0xf9, 0x79, 0xfd, 0xb5, 0xfa, 0x79, 0xfd, 0xb7, - 0xf9, 0x79, 0xfd, 0xb5, 0xfa, 0x79, 0xfd, 0xb7, 0xf9, 0x79, 0xfe, 0xb5, - 0xfa, 0x79, 0xfe, 0xb5, 0xfa, 0x79, 0xfe, 0xb5, 0xfa, 0x79, 0xfe, 0xb5, - 0xfa, 0x79, 0xfe, 0xb5, 0xfa, 0x79, 0xff, 0xb5, 0xfa, 0x79, 0xff, 0xb5, - 0xfa, 0x79, 0x03, 0xc1, 0x91, 0x7a, 0x0a, 0xbf, 0x91, 0x7a, 0x0f, 0xc1, - 0x91, 0x7a, 0x14, 0xbf, 0x91, 0x7a, 0x17, 0xc1, 0x91, 0x7a, 0x1b, 0xbf, - 0x91, 0x7a, 0x1e, 0xc1, 0x91, 0x7a, 0x20, 0xbf, 0x91, 0x7a, 0x23, 0xc1, - 0x91, 0x7a, 0x25, 0xbf, 0x91, 0x7a, 0x27, 0xc1, 0x91, 0x7a, 0x29, 0xbf, - 0x91, 0x7a, 0x2b, 0xc1, 0x91, 0x7a, 0x2d, 0xbf, 0x91, 0x7a, 0x2f, 0xbd, - 0x92, 0x7a, 0x31, 0xbf, 0x91, 0x7a, 0x32, 0xbd, 0x92, 0x7a, 0x34, 0xbf, - 0x91, 0x7a, 0x35, 0xbd, 0x92, 0x7a, 0x37, 0xbf, 0x91, 0x7a, 0x38, 0xbd, - 0x92, 0x7a, 0x3a, 0xbf, 0x91, 0x7a, 0x3b, 0xbd, 0x92, 0x7a, 0x3c, 0xbf, - 0x91, 0x7a, 0x3e, 0xbd, 0x92, 0x7a, 0x3f, 0xbf, 0x91, 0x7a, 0x40, 0xbd, - 0x92, 0x7a, 0x42, 0xbf, 0x91, 0x7a, 0x43, 0xbd, 0x92, 0x7a, 0x44, 0xbf, - 0x91, 0x7a, 0x45, 0xbd, 0x92, 0x7a, 0x46, 0xbf, 0x91, 0x7a, 0x47, 0xbd, - 0x92, 0x7a, 0x48, 0xbf, 0x91, 0x7a, 0x49, 0xbd, 0x92, 0x7a, 0x4a, 0xbf, - 0x91, 0x7a, 0x4b, 0xbd, 0x92, 0x7a, 0x4c, 0xbf, 0x91, 0x7a, 0x4d, 0xbd, - 0x92, 0x7a, 0x4e, 0xbf, 0x91, 0x7a, 0x4f, 0xbd, 0x92, 0x7a, 0x50, 0xbf, - 0x91, 0x7a, 0x51, 0xbd, 0x92, 0x7a, 0x52, 0xba, 0x92, 0x7a, 0x53, 0xbd, - 0x92, 0x7a, 0x54, 0xba, 0x92, 0x7a, 0x55, 0xbd, 0x92, 0x7a, 0x56, 0xba, - 0x92, 0x7a, 0x57, 0xbd, 0x92, 0x7a, 0x58, 0xba, 0x92, 0x7a, 0x58, 0xbd, - 0x92, 0x7a, 0x59, 0xba, 0x92, 0x7a, 0x5a, 0xbd, 0x92, 0x7a, 0x5b, 0xba, - 0x92, 0x7a, 0x5c, 0xbd, 0x92, 0x7a, 0x5d, 0xba, 0x92, 0x7a, 0x5d, 0xbd, - 0x92, 0x7a, 0x5e, 0xba, 0x92, 0x7a, 0x5f, 0xbd, 0x92, 0x7a, 0x60, 0xba, - 0x92, 0x7a, 0x60, 0xbd, 0x92, 0x7a, 0x61, 0xba, 0x92, 0x7a, 0x62, 0xbd, - 0x92, 0x7a, 0x63, 0xba, 0x92, 0x7a, 0x63, 0xbd, 0x92, 0x7a, 0x64, 0xba, - 0x92, 0x7a, 0x65, 0xbd, 0x92, 0x7a, 0x66, 0xba, 0x92, 0x7a, 0x66, 0xbd, - 0x92, 0x7a, 0x67, 0xba, 0x92, 0x7a, 0x68, 0xbd, 0x92, 0x7a, 0x68, 0xba, - 0x92, 0x7a, 0x69, 0xbd, 0x92, 0x7a, 0x6a, 0xba, 0x92, 0x7a, 0x6a, 0xbd, - 0x92, 0x7a, 0x6b, 0xba, 0x92, 0x7a, 0x6c, 0xbd, 0x92, 0x7a, 0x6c, 0xba, - 0x92, 0x7a, 0x6d, 0xbd, 0x92, 0x7a, 0x6e, 0xba, 0x92, 0x7a, 0x6e, 0xbd, - 0x92, 0x7a, 0x6f, 0xba, 0x92, 0x7a, 0x70, 0xbd, 0x92, 0x7a, 0x70, 0xba, - 0x92, 0x7a, 0x71, 0xb8, 0x93, 0x7a, 0x72, 0xba, 0x92, 0x7a, 0x72, 0xb8, - 0x93, 0x7a, 0x73, 0xba, 0x92, 0x7a, 0x73, 0xb8, 0x93, 0x7a, 0x74, 0xba, - 0x92, 0x7a, 0x75, 0xb8, 0x93, 0x7a, 0x75, 0xba, 0x92, 0x7a, 0x76, 0xb8, - 0x93, 0x7a, 0x76, 0xba, 0x92, 0x7a, 0x77, 0xb8, 0x93, 0x7a, 0x78, 0xba, - 0x92, 0x7a, 0x78, 0xb8, 0x93, 0x7a, 0x79, 0xba, 0x92, 0x7a, 0x79, 0xb8, - 0x93, 0x7a, 0x7a, 0xba, 0x92, 0x7a, 0x7a, 0xb8, 0x93, 0x7a, 0x7b, 0xba, - 0x92, 0x7a, 0x7c, 0xb8, 0x93, 0x7a, 0x7c, 0xba, 0x92, 0x7a, 0x7d, 0xb8, - 0x93, 0x7a, 0x7d, 0xba, 0x92, 0x7a, 0x7e, 0xb8, 0x93, 0x7a, 0x7e, 0xba, - 0x92, 0x7a, 0x7f, 0xb8, 0x93, 0x7a, 0x7f, 0xba, 0x92, 0x7a, 0x80, 0xb8, - 0x93, 0x7a, 0x81, 0xba, 0x92, 0x7a, 0x81, 0xb8, 0x93, 0x7a, 0x82, 0xba, - 0x92, 0x7a, 0x82, 0xb8, 0x93, 0x7a, 0x83, 0xba, 0x92, 0x7a, 0x83, 0xb8, - 0x93, 0x7a, 0x84, 0xba, 0x92, 0x7a, 0x84, 0xb8, 0x93, 0x7a, 0x85, 0xba, - 0x92, 0x7a, 0x85, 0xb8, 0x93, 0x7a, 0x86, 0xba, 0x92, 0x7a, 0x86, 0xb8, - 0x93, 0x7a, 0x87, 0xba, 0x92, 0x7a, 0x87, 0xb8, 0x93, 0x7a, 0x88, 0xba, - 0x92, 0x7a, 0x88, 0xb8, 0x93, 0x7a, 0x89, 0xba, 0x92, 0x7a, 0x89, 0xb8, - 0x93, 0x7a, 0x8a, 0xba, 0x92, 0x7a, 0x8a, 0xb8, 0x93, 0x7a, 0x8b, 0xba, - 0x92, 0x7a, 0x8b, 0xb8, 0x93, 0x7a, 0x8c, 0xb8, 0x93, 0x7a, 0x8c, 0xb8, - 0x93, 0x7a, 0x8d, 0xb8, 0x93, 0x7a, 0x8d, 0xb8, 0x93, 0x7a, 0x8e, 0xb8, - 0x93, 0x7a, 0x8e, 0xb8, 0x93, 0x7a, 0x8e, 0xb8, 0x93, 0x7a, 0x8f, 0xb8, - 0x93, 0x7a, 0x8f, 0xb8, 0x93, 0x7a, 0x90, 0xb8, 0x93, 0x7a, 0x90, 0xb8, - 0x93, 0x7a, 0x91, 0xb8, 0x93, 0x7a, 0x91, 0xb8, 0x93, 0x7a, 0x92, 0xb8, - 0x93, 0x7a, 0x92, 0xb8, 0x93, 0x7a, 0x93, 0xb8, 0x93, 0x7a, 0x92, 0xb8, - 0x93, 0x7a, 0x93, 0xb8, 0x94, 0x7a, 0x95, 0xb8, 0x94, 0x7a, 0x94, 0xb7, - 0x94, 0x7a, 0x95, 0xb8, 0x94, 0x7a, 0x95, 0xb8, 0x95, 0x7a, 0x96, 0xb8, - 0x96, 0x7a, 0x96, 0xb8, 0x95, 0x7a, 0x97, 0xb8, 0x96, 0x7a, 0x97, 0xb9, - 0x97, 0x7a, 0x98, 0xb9, 0x98, 0x7a, 0x98, 0xb9, 0x98, 0x7a, 0x98, 0xb9, - 0x98, 0x7a, 0x99, 0xb9, 0x99, 0x7a, 0x99, 0xb9, 0x99, 0x7a, 0x9a, 0xb9, - 0x9a, 0x7a, 0x9a, 0xb9, 0x9a, 0x7a, 0x9a, 0xb9, 0x9a, 0x7a, 0x9b, 0xb9, - 0x9a, 0x7a, 0x9b, 0xb9, 0x9a, 0x7a, 0x9c, 0xb9, 0x9a, 0x7a, 0x9c, 0xb9, - 0x9a, 0x7a, 0x9d, 0xba, 0x9d, 0x7a, 0x9d, 0xba, 0x9d, 0x7a, 0x9d, 0xba, - 0x9d, 0x7a, 0x9e, 0xba, 0x9e, 0x7a, 0x9e, 0xba, 0x9e, 0x7a, 0x9f, 0xba, - 0x9f, 0x7a, 0x9f, 0xba, 0x9f, 0x7a, 0x9f, 0xba, 0x9f, 0x7a, 0xa0, 0xba, - 0x9f, 0x7a, 0xa0, 0xba, 0x9f, 0x7a, 0xa1, 0xba, 0x9f, 0x7a, 0xa1, 0xba, - 0xa1, 0x7a, 0xa1, 0xba, 0xa1, 0x7a, 0xa2, 0xba, 0xa2, 0x7a, 0xa2, 0xba, - 0xa2, 0x7a, 0xa3, 0xba, 0xa3, 0x7a, 0xa3, 0xba, 0xa3, 0x7a, 0xa3, 0xba, - 0xa3, 0x7a, 0xa4, 0xba, 0xa3, 0x7a, 0xa4, 0xba, 0xa3, 0x7a, 0xa5, 0xba, - 0xa3, 0x7a, 0xa5, 0xba, 0xa3, 0x7a, 0xa5, 0xbb, 0xa5, 0x7a, 0xa6, 0xbb, - 0xa6, 0x7a, 0xa6, 0xbb, 0xa6, 0x7a, 0xa6, 0xbb, 0xa6, 0x7a, 0xa7, 0xb9, - 0xaa, 0x7a, 0xa7, 0xb8, 0xaa, 0x7a, 0xa8, 0xb9, 0xaa, 0x7a, 0xa8, 0xb8, - 0xaa, 0x7a, 0xa8, 0xb9, 0xaa, 0x7a, 0xa9, 0xb8, 0xaa, 0x7a, 0xa9, 0xb8, - 0xab, 0x7a, 0xaa, 0xb8, 0xaa, 0x7a, 0xaa, 0xb8, 0xab, 0x7a, 0xaa, 0xb8, - 0xaa, 0x7a, 0xaa, 0xb8, 0xab, 0x7a, 0xaa, 0xb8, 0xab, 0x7a, 0xaa, 0xb8, - 0xab, 0x7a, 0xaa, 0xb8, 0xac, 0x78, 0xaa, 0xb8, 0xac, 0x7a, 0xaa, 0xb8, - 0xac, 0x78, 0xaa, 0xb8, 0xad, 0x7a, 0xaa, 0xb8, 0xad, 0x78, 0xaa, 0xb8, - 0xae, 0x7a, 0xaa, 0xb8, 0xae, 0x78, 0xaa, 0xb8, 0xae, 0x7a, 0xaa, 0xb8, - 0xaf, 0x78, 0xaa, 0xb8, 0xaf, 0x7a, 0xaa, 0xb8, 0xaf, 0x78, 0xaa, 0xb8, - 0xb0, 0x7a, 0xaa, 0xb8, 0xb0, 0x78, 0xaa, 0xb8, 0xb0, 0x7a, 0xaa, 0xb8, - 0xb1, 0x78, 0xb4, 0xb8, 0xb1, 0x71, 0xb4, 0xb8, 0xb2, 0x71, 0xb4, 0xb8, - 0xb2, 0x71, 0xb4, 0xb8, 0xb2, 0x71, 0xb4, 0xb8, 0xb3, 0x71, 0xb4, 0xb8, - 0xb3, 0x71, 0xb4, 0xb8, 0xb3, 0x71, 0xb4, 0xb8, 0xb4, 0x71, 0xb4, 0xb8, - 0xb4, 0x71, 0xb4, 0xb8, 0xb4, 0x71, 0xb5, 0xb8, 0xb5, 0x71, 0xb8, 0xb8, - 0xb5, 0x72, 0xb8, 0xb8, 0xb5, 0x72, 0xb8, 0xb8, 0xb6, 0x72, 0xb8, 0xb8, - 0xb6, 0x72, 0xb8, 0xb8, 0xb6, 0x72, 0xb8, 0xb8, 0xb7, 0x72, 0xb8, 0xb8, - 0xb7, 0x72, 0xb8, 0xb8, 0xb7, 0x72, 0xb8, 0xb8, 0xb8, 0x72, 0xb8, 0xb8, - 0xb8, 0x72, 0xb8, 0xb8, 0xb8, 0x72, 0xb9, 0xb8, 0xb9, 0x72, 0xb9, 0xb8, - 0xb9, 0x72, 0xbb, 0xb8, 0xb9, 0x73, 0xbc, 0xb8, 0xba, 0x73, 0xbb, 0xb8, - 0xba, 0x73, 0xbc, 0xb8, 0xba, 0x73, 0xbb, 0xb8, 0xbb, 0x73, 0xbc, 0xb8, - 0xbb, 0x73, 0xbb, 0xb8, 0xbb, 0x73, 0xbc, 0xb8, 0xbc, 0x73, 0xbc, 0xb8, - 0xbc, 0x73, 0xbc, 0xb8, 0xbc, 0x73, 0xbd, 0xb8, 0xbd, 0x73, 0xbf, 0xb8, - 0xbd, 0x74, 0xbf, 0xb8, 0xbd, 0x74, 0xbf, 0xb8, 0xbe, 0x74, 0xbf, 0xb8, - 0xbe, 0x74, 0xbf, 0xb8, 0xbe, 0x74, 0xbf, 0xb8, 0xbf, 0x74, 0xbf, 0xb8, - 0xbf, 0x74, 0xbf, 0xb8, 0xbf, 0x74, 0xc0, 0xb8, 0xc0, 0x74, 0xc0, 0xb8, - 0xc0, 0x74, 0xc0, 0xb8, 0xc0, 0x74, 0xc2, 0xb8, 0xc1, 0x75, 0xc3, 0xb8, - 0xc1, 0x75, 0xc2, 0xb8, 0xc1, 0x75, 0xc3, 0xb8, 0xc1, 0x75, 0xc2, 0xb8, - 0xc2, 0x75, 0xc3, 0xb8, 0xc2, 0x75, 0xc2, 0xb8, 0xc2, 0x75, 0xc3, 0xb8, - 0xc3, 0x75, 0xc3, 0xb8, 0xc3, 0x75, 0xc3, 0xb8, 0xc3, 0x75, 0xc4, 0xb8, - 0xc4, 0x75, 0xc4, 0xb8, 0xc4, 0x75, 0xc4, 0xb8, 0xc4, 0x75, 0xc5, 0xb8, - 0xc5, 0x75, 0xc6, 0xb8, 0xc5, 0x76, 0xc6, 0xb8, 0xc5, 0x76, 0xc6, 0xb8, - 0xc6, 0x76, 0xc6, 0xb8, 0xc6, 0x76, 0xc6, 0xb8, 0xc6, 0x76, 0xc6, 0xb8, - 0xc6, 0x76, 0xc7, 0xb8, 0xc7, 0x76, 0xc7, 0xb8, 0xc7, 0x76, 0xc7, 0xb8, - 0xc7, 0x76, 0xc8, 0xb8, 0xc8, 0x76, 0xc8, 0xb8, 0xc8, 0x76, 0xc9, 0xb8, - 0xc8, 0x77, 0xca, 0xb8, 0xc9, 0x77, 0xc9, 0xb8, 0xc9, 0x77, 0xca, 0xb8, - 0xc9, 0x77, 0xc9, 0xb8, 0xc9, 0x77, 0xca, 0xb8, 0xca, 0x77, 0xca, 0xb8, - 0xca, 0x77, 0xca, 0xb8, 0xca, 0x77, 0xcb, 0xb8, 0xcb, 0x77, 0xcb, 0xb8, - 0xcb, 0x77, 0xcb, 0xb8, 0xcb, 0x77, 0xcd, 0xb8, 0xcc, 0x78, 0xcd, 0xb8, - 0xcc, 0x78, 0xcd, 0xb8, 0xcc, 0x78, 0xcd, 0xb8, 0xcc, 0x78, 0xcd, 0xb8, - 0xcd, 0x78, 0xcd, 0xb8, 0xcd, 0x78, 0xcd, 0xb8, 0xcd, 0x78, 0xce, 0xb8, - 0xce, 0x78, 0xce, 0xb8, 0xce, 0x78, 0xce, 0xb8, 0xce, 0x78, 0xce, 0xb8, - 0xce, 0x78, 0xce, 0xb8, 0xcf, 0x78, 0xce, 0xb8, 0xcf, 0x78, 0xce, 0xb8, - 0xcf, 0x78, 0xce, 0xb8, 0xd0, 0x78, 0xce, 0xb8, 0xd0, 0x78, 0xce, 0xb8, - 0xd0, 0x78, 0xce, 0xb8, 0xd0, 0x78, 0xce, 0xb8, 0xd1, 0x78, 0xce, 0xb8, - 0xd1, 0x78, 0xce, 0xb8, 0xd1, 0x78, 0xce, 0xb8, 0xd2, 0x78, 0xce, 0xb8, - 0xd2, 0x78, 0xce, 0xb8, 0xd2, 0x78, 0xce, 0xb8, 0xd2, 0x78, 0xce, 0xb8, - 0xd3, 0x78, 0xce, 0xb8, 0xd3, 0x78, 0xce, 0xb8, 0xd3, 0x78, 0xce, 0xb8, - 0xd4, 0x78, 0xce, 0xb8, 0xd4, 0x78, 0xce, 0xb8, 0xd4, 0x78, 0xcf, 0xb8, - 0xd4, 0x75, 0xce, 0xb8, 0xd5, 0x78, 0xcf, 0xb8, 0xd5, 0x75, 0xce, 0xb8, - 0xd5, 0x78, 0xcf, 0xb8, 0xd6, 0x75, 0xce, 0xb8, 0xd6, 0x78, 0xcf, 0xb8, - 0xd6, 0x75, 0xce, 0xb8, 0xd6, 0x78, 0xcf, 0xb8, 0xd7, 0x75, 0xce, 0xb8, - 0xd7, 0x78, 0xcf, 0xb8, 0xd7, 0x75, 0xce, 0xb8, 0xd7, 0x78, 0xcf, 0xb8, - 0xd8, 0x75, 0xce, 0xb8, 0xd8, 0x78, 0xcf, 0xb8, 0xd8, 0x75, 0xce, 0xb8, - 0xd9, 0x78, 0xcf, 0xb8, 0xd9, 0x75, 0xce, 0xb8, 0xd9, 0x78, 0xcf, 0xb8, - 0xd9, 0x75, 0xce, 0xb8, 0xda, 0x78, 0xcf, 0xb8, 0xda, 0x75, 0xce, 0xb8, - 0xda, 0x78, 0xcf, 0xb8, 0xda, 0x75, 0xce, 0xb8, 0xdb, 0x78, 0xcf, 0xb8, - 0xdb, 0x75, 0xcf, 0xb8, 0xdb, 0x73, 0xcf, 0xb8, 0xdb, 0x75, 0xcf, 0xb8, - 0xdc, 0x73, 0xcf, 0xb8, 0xdc, 0x75, 0xcf, 0xb8, 0xdc, 0x73, 0xcf, 0xb8, - 0xdd, 0x75, 0xcf, 0xb8, 0xdd, 0x73, 0xcf, 0xb8, 0xdd, 0x75, 0xeb, 0xb8, - 0xdd, 0x7b, 0xea, 0xb8, 0xde, 0x7f, 0xeb, 0xb8, 0xde, 0x7b, 0xea, 0xb8, - 0xde, 0x7f, 0xeb, 0xb8, 0xde, 0x7b, 0xea, 0xb8, 0xdf, 0x7f, 0xeb, 0xb8, - 0xdf, 0x7b, 0xea, 0xb8, 0xdf, 0x7f, 0xeb, 0xb8, 0xdf, 0x7b, 0xea, 0xb8, - 0xe0, 0x7f, 0xeb, 0xb8, 0xe0, 0x7b, 0xea, 0xb8, 0xe0, 0x7f, 0xeb, 0xb8, - 0xe1, 0x7b, 0xea, 0xb8, 0xe1, 0x7f, 0xeb, 0xb8, 0xe1, 0x7b, 0xea, 0xb8, - 0xe1, 0x7f, 0xeb, 0xb8, 0xe2, 0x7b, 0xea, 0xb8, 0xe2, 0x7f, 0xeb, 0xb8, - 0xe2, 0x7b, 0xea, 0xb8, 0xe2, 0x7f, 0xeb, 0xb8, 0xe3, 0x7b, 0xea, 0xb8, - 0xe3, 0x7f, 0xeb, 0xb8, 0xe3, 0x7b, 0xea, 0xb8, 0xe3, 0x7f, 0xeb, 0xb8, - 0xe4, 0x7b, 0xea, 0xb8, 0xe4, 0x7f, 0xeb, 0xb8, 0xe4, 0x7b, 0xea, 0xb8, - 0xe4, 0x7f, 0xeb, 0xb8, 0xe5, 0x7b, 0xeb, 0xb8, 0xe5, 0x7a, 0xeb, 0xb8, - 0xe5, 0x7b, 0xeb, 0xb8, 0xe5, 0x7a, 0xeb, 0xb8, 0xe6, 0x7b, 0xeb, 0xb8, - 0xe6, 0x7a, 0xeb, 0xb8, 0xe6, 0x7b, 0xeb, 0xb8, 0xe6, 0x7a, 0xeb, 0xb8, - 0xe7, 0x7b, 0xeb, 0xb8, 0xe7, 0x7a, 0xeb, 0xb8, 0xe7, 0x7b, 0xeb, 0xb8, - 0xe7, 0x7a, 0xeb, 0xb8, 0xe8, 0x7b, 0xeb, 0xb8, 0xe8, 0x7a, 0xeb, 0xb8, - 0xe8, 0x7b, 0xeb, 0xb8, 0xe8, 0x7a, 0xeb, 0xb8, 0xe9, 0x7b, 0xeb, 0xb8, - 0xe9, 0x7a, 0xeb, 0xb8, 0xe9, 0x7b, 0xeb, 0xb8, 0xe9, 0x7a, 0xeb, 0xb8, - 0xea, 0x7b, 0xeb, 0xb8, 0xea, 0x7a, 0xeb, 0xb8, 0xea, 0x7b, 0xeb, 0xb8, - 0xea, 0x7a, 0xeb, 0xb8, 0xeb, 0x7a, 0xeb, 0xb8, 0xea, 0x7a, 0xeb, 0xb8, - 0xeb, 0x7a, 0xeb, 0xb8, 0xea, 0x7a, 0xec, 0xb8, 0xeb, 0x7a, 0xec, 0xb8, - 0xea, 0x7a, 0xec, 0xb8, 0xeb, 0x7a, 0xec, 0xb8, 0xea, 0x7a, 0xec, 0xb8, - 0xeb, 0x7a, 0xed, 0xb8, 0xea, 0x7a, 0xed, 0xb8, 0xeb, 0x7a, 0xed, 0xb8, - 0xea, 0x7a, 0xed, 0xb8, 0xeb, 0x7a, 0xee, 0xb8, 0xea, 0x7a, 0xee, 0xb8, - 0xeb, 0x7a, 0xee, 0xb8, 0xea, 0x7a, 0xee, 0xb8, 0xeb, 0x7a, 0xef, 0xb5, - 0xeb, 0x7a, 0xef, 0xb8, 0xeb, 0x7a, 0xef, 0xb5, 0xeb, 0x7a, 0xef, 0xb8, - 0xeb, 0x7a, 0xf0, 0xb5, 0xeb, 0x7a, 0xf0, 0xb8, 0xeb, 0x7a, 0xf0, 0xb5, - 0xeb, 0x7a, 0xf0, 0xb9, 0xf5, 0x7a, 0xf1, 0xb8, 0xf6, 0x7a, 0xf1, 0xb9, - 0xf5, 0x7a, 0xf1, 0xb8, 0xf6, 0x7a, 0xf1, 0xb9, 0xf5, 0x7a, 0xf2, 0xb8, - 0xf6, 0x7a, 0xf2, 0xb9, 0xf5, 0x7a, 0xf2, 0xb8, 0xf6, 0x7a, 0xf2, 0xb9, - 0xf5, 0x7a, 0xf2, 0xb8, 0xf6, 0x7a, 0xf3, 0xb9, 0xf5, 0x7a, 0xf3, 0xb8, - 0xf6, 0x7a, 0xf3, 0xb9, 0xf5, 0x7a, 0xf3, 0xb8, 0xf6, 0x7a, 0xf4, 0xb9, - 0xf5, 0x7a, 0xf4, 0xb8, 0xf6, 0x7a, 0xf4, 0xb9, 0xf5, 0x7a, 0xf4, 0xb8, - 0xf6, 0x7a, 0xf5, 0xb9, 0xf5, 0x7a, 0xf5, 0xb8, 0xf6, 0x7a, 0xf5, 0xb8, - 0xf6, 0x7a, 0xf5, 0xb8, 0xf6, 0x7a, 0xf5, 0xb8, 0xf6, 0x7a, 0xf5, 0xb8, - 0xf6, 0x7a, 0xf5, 0xb8, 0xf6, 0x7a, 0xf5, 0xb8, 0xf6, 0x7a, 0xf5, 0xb8, - 0xf6, 0x7a, 0xf5, 0xb8, 0xf7, 0x7a, 0xf5, 0xb8, 0xf7, 0x7a, 0xf5, 0xb8, - 0xf7, 0x7a, 0xf5, 0xb8, 0xf7, 0x7a, 0xf9, 0xb8, 0xf8, 0x7b, 0xfa, 0xb8, - 0xf8, 0x7a, 0xf9, 0xb8, 0xf8, 0x7b, 0xfa, 0xb8, 0xf8, 0x7a, 0xf9, 0xb8, - 0xf8, 0x7b, 0xfa, 0xb8, 0xf9, 0x7a, 0xf9, 0xb8, 0xf9, 0x7b, 0xfa, 0xb8, - 0xf9, 0x7a, 0xfa, 0xb8, 0xf9, 0x7a, 0xfa, 0xb8, 0xf9, 0x7a, 0xfa, 0xb8, - 0xf9, 0x7a, 0xfa, 0xb8, 0xf9, 0x7a, 0xfa, 0xb8, 0xf9, 0x7a, 0xfa, 0xb8, - 0xf9, 0x7a, 0xfb, 0xb8, 0xf9, 0x7a, 0xfb, 0xb8, 0xf9, 0x7a, 0xfb, 0xb8, - 0xf9, 0x7a, 0xfb, 0xb6, 0xfa, 0x7a, 0xfc, 0xb8, 0xf9, 0x7a, 0xfc, 0xb6, - 0xfa, 0x7a, 0xfc, 0xb8, 0xf9, 0x7a, 0xfc, 0xb6, 0xfa, 0x7a, 0xfc, 0xb8, - 0xf9, 0x7a, 0xfd, 0xb6, 0xfa, 0x7a, 0xfd, 0xb8, 0xf9, 0x7a, 0xfd, 0xb6, - 0xfa, 0x7a, 0xfd, 0xb8, 0xf9, 0x7a, 0xfe, 0xb6, 0xfa, 0x7a, 0xfe, 0xb6, - 0xfa, 0x7a, 0xfe, 0xb6, 0xfa, 0x7a, 0xfe, 0xb6, 0xfa, 0x7a, 0xfe, 0xb6, - 0xfa, 0x7a, 0xff, 0xb6, 0xfa, 0x7a, 0xff, 0xb6, 0xfa, 0x7a, 0x03, 0xbd, - 0x92, 0x7a, 0x0a, 0xbf, 0x91, 0x7a, 0x0f, 0xbd, 0x92, 0x7a, 0x14, 0xbf, - 0x91, 0x7a, 0x17, 0xbd, 0x92, 0x7a, 0x1b, 0xbf, 0x91, 0x7a, 0x1e, 0xbd, - 0x92, 0x7a, 0x20, 0xbf, 0x91, 0x7a, 0x23, 0xbd, 0x92, 0x7a, 0x25, 0xbf, - 0x91, 0x7a, 0x27, 0xbd, 0x92, 0x7a, 0x29, 0xbf, 0x91, 0x7a, 0x2b, 0xbd, - 0x92, 0x7a, 0x2d, 0xbf, 0x91, 0x7a, 0x2f, 0xbd, 0x92, 0x7a, 0x31, 0xbf, - 0x91, 0x7a, 0x32, 0xbd, 0x92, 0x7a, 0x34, 0xbf, 0x91, 0x7a, 0x35, 0xbd, - 0x92, 0x7a, 0x37, 0xbf, 0x91, 0x7a, 0x38, 0xbd, 0x92, 0x7a, 0x3a, 0xbf, - 0x91, 0x7a, 0x3b, 0xbd, 0x92, 0x7a, 0x3c, 0xbf, 0x91, 0x7a, 0x3e, 0xbd, - 0x92, 0x7a, 0x3f, 0xbf, 0x91, 0x7a, 0x40, 0xbd, 0x92, 0x7a, 0x42, 0xbf, - 0x91, 0x7a, 0x43, 0xbd, 0x92, 0x7a, 0x44, 0xbf, 0x91, 0x7a, 0x45, 0xbd, - 0x92, 0x7a, 0x46, 0xbf, 0x91, 0x7a, 0x47, 0xbd, 0x92, 0x7a, 0x48, 0xbf, - 0x91, 0x7a, 0x49, 0xbd, 0x92, 0x7a, 0x4a, 0xbf, 0x91, 0x7a, 0x4b, 0xbd, - 0x92, 0x7a, 0x4c, 0xbf, 0x91, 0x7a, 0x4d, 0xbd, 0x92, 0x7a, 0x4e, 0xbf, - 0x91, 0x7a, 0x4f, 0xbd, 0x92, 0x7a, 0x50, 0xbf, 0x91, 0x7a, 0x51, 0xbd, - 0x92, 0x7a, 0x52, 0xbf, 0x91, 0x7a, 0x53, 0xbd, 0x92, 0x7a, 0x54, 0xbf, - 0x91, 0x7a, 0x55, 0xbd, 0x92, 0x7a, 0x56, 0xbf, 0x91, 0x7a, 0x57, 0xbd, - 0x92, 0x7a, 0x58, 0xbf, 0x91, 0x7a, 0x58, 0xbd, 0x92, 0x7a, 0x59, 0xbf, - 0x91, 0x7a, 0x5a, 0xbd, 0x92, 0x7a, 0x5b, 0xbf, 0x91, 0x7a, 0x5c, 0xbd, - 0x92, 0x7a, 0x5d, 0xbf, 0x91, 0x7a, 0x5d, 0xbd, 0x92, 0x7a, 0x5e, 0xbf, - 0x91, 0x7a, 0x5f, 0xbd, 0x92, 0x7a, 0x60, 0xbf, 0x91, 0x7a, 0x60, 0xbd, - 0x92, 0x7a, 0x61, 0xbf, 0x91, 0x7a, 0x62, 0xbd, 0x92, 0x7a, 0x63, 0xbb, - 0x92, 0x7a, 0x63, 0xbd, 0x92, 0x7a, 0x64, 0xbb, 0x92, 0x7a, 0x65, 0xbd, - 0x92, 0x7a, 0x66, 0xbb, 0x92, 0x7a, 0x66, 0xbd, 0x92, 0x7a, 0x67, 0xbb, - 0x92, 0x7a, 0x68, 0xbd, 0x92, 0x7a, 0x68, 0xbb, 0x92, 0x7a, 0x69, 0xbd, - 0x92, 0x7a, 0x6a, 0xbb, 0x92, 0x7a, 0x6a, 0xbd, 0x92, 0x7a, 0x6b, 0xbb, - 0x92, 0x7a, 0x6c, 0xbd, 0x92, 0x7a, 0x6c, 0xbb, 0x92, 0x7a, 0x6d, 0xbd, - 0x92, 0x7a, 0x6e, 0xbb, 0x92, 0x7a, 0x6e, 0xbd, 0x92, 0x7a, 0x6f, 0xbb, - 0x92, 0x7a, 0x70, 0xbd, 0x92, 0x7a, 0x70, 0xbb, 0x92, 0x7a, 0x71, 0xbd, - 0x92, 0x7a, 0x72, 0xbb, 0x92, 0x7a, 0x72, 0xbd, 0x92, 0x7a, 0x73, 0xbb, - 0x92, 0x7a, 0x73, 0xbd, 0x92, 0x7a, 0x74, 0xbb, 0x92, 0x7a, 0x75, 0xbd, - 0x92, 0x7a, 0x75, 0xbb, 0x92, 0x7a, 0x76, 0xbd, 0x92, 0x7a, 0x76, 0xbb, - 0x92, 0x7a, 0x77, 0xbd, 0x92, 0x7a, 0x78, 0xbb, 0x92, 0x7a, 0x78, 0xbd, - 0x92, 0x7a, 0x79, 0xbb, 0x92, 0x7a, 0x79, 0xbd, 0x92, 0x7a, 0x7a, 0xbb, - 0x92, 0x7a, 0x7a, 0xb9, 0x93, 0x7a, 0x7b, 0xbb, 0x92, 0x7a, 0x7c, 0xb9, - 0x93, 0x7a, 0x7c, 0xbb, 0x92, 0x7a, 0x7d, 0xb9, 0x93, 0x7a, 0x7d, 0xbb, - 0x92, 0x7a, 0x7e, 0xb9, 0x93, 0x7a, 0x7e, 0xbb, 0x92, 0x7a, 0x7f, 0xb9, - 0x93, 0x7a, 0x7f, 0xbb, 0x92, 0x7a, 0x80, 0xb9, 0x93, 0x7a, 0x81, 0xbb, - 0x92, 0x7a, 0x81, 0xb9, 0x93, 0x7a, 0x82, 0xbb, 0x92, 0x7a, 0x82, 0xb9, - 0x93, 0x7a, 0x83, 0xbb, 0x92, 0x7a, 0x83, 0xb9, 0x93, 0x7a, 0x84, 0xbb, - 0x92, 0x7a, 0x84, 0xb9, 0x93, 0x7a, 0x85, 0xbb, 0x92, 0x7a, 0x85, 0xb9, - 0x93, 0x7a, 0x86, 0xbb, 0x92, 0x7a, 0x86, 0xb9, 0x93, 0x7a, 0x87, 0xbb, - 0x92, 0x7a, 0x87, 0xb9, 0x93, 0x7a, 0x88, 0xbb, 0x92, 0x7a, 0x88, 0xb9, - 0x93, 0x7a, 0x89, 0xbb, 0x92, 0x7a, 0x89, 0xb9, 0x93, 0x7a, 0x8a, 0xbb, - 0x92, 0x7a, 0x8a, 0xb9, 0x93, 0x7a, 0x8b, 0xbb, 0x92, 0x7a, 0x8b, 0xb9, - 0x93, 0x7a, 0x8c, 0xb8, 0x93, 0x7a, 0x8c, 0xb9, 0x93, 0x7a, 0x8d, 0xb8, - 0x93, 0x7a, 0x8d, 0xb9, 0x93, 0x7a, 0x8e, 0xb8, 0x93, 0x7a, 0x8e, 0xb9, - 0x93, 0x7a, 0x8e, 0xb8, 0x93, 0x7a, 0x8f, 0xb9, 0x93, 0x7a, 0x8f, 0xb8, - 0x93, 0x7a, 0x90, 0xb9, 0x93, 0x7a, 0x90, 0xb8, 0x93, 0x7a, 0x91, 0xb9, - 0x93, 0x7a, 0x91, 0xb8, 0x93, 0x7a, 0x92, 0xb9, 0x93, 0x7a, 0x92, 0xb8, - 0x93, 0x7a, 0x93, 0xb9, 0x93, 0x7a, 0x92, 0xb8, 0x93, 0x7a, 0x93, 0xb8, - 0x94, 0x7a, 0x95, 0xb8, 0x94, 0x7a, 0x94, 0xb8, 0x94, 0x7a, 0x95, 0xb8, - 0x94, 0x7a, 0x95, 0xb9, 0x95, 0x7a, 0x96, 0xb9, 0x96, 0x7a, 0x96, 0xb9, - 0x96, 0x7a, 0x97, 0xb9, 0x97, 0x7a, 0x97, 0xb9, 0x97, 0x7a, 0x98, 0xb9, - 0x98, 0x7a, 0x98, 0xb9, 0x98, 0x7a, 0x98, 0xb9, 0x98, 0x7a, 0x99, 0xb9, - 0x98, 0x7a, 0x99, 0xb9, 0x99, 0x7a, 0x9a, 0xb9, 0x9a, 0x7a, 0x9a, 0xb9, - 0x9a, 0x7a, 0x9a, 0xb9, 0x9a, 0x7a, 0x9b, 0xb9, 0x9b, 0x7a, 0x9b, 0xb9, - 0x9b, 0x7a, 0x9c, 0xb9, 0x9c, 0x7a, 0x9c, 0xb9, 0x9c, 0x7a, 0x9d, 0xb9, - 0x9d, 0x7a, 0x9d, 0xb9, 0x9d, 0x7a, 0x9d, 0xb9, 0x9d, 0x7a, 0x9e, 0xb9, - 0x9d, 0x7a, 0x9e, 0xb9, 0x9d, 0x7a, 0x9f, 0xb9, 0x9d, 0x7a, 0x9f, 0xba, - 0x9f, 0x7a, 0x9f, 0xba, 0x9f, 0x7a, 0xa0, 0xba, 0xa0, 0x7a, 0xa0, 0xba, - 0xa0, 0x7a, 0xa1, 0xba, 0xa1, 0x7a, 0xa1, 0xba, 0xa1, 0x7a, 0xa1, 0xba, - 0xa1, 0x7a, 0xa2, 0xba, 0xa1, 0x7a, 0xa2, 0xba, 0xa1, 0x7a, 0xa3, 0xba, - 0xa1, 0x7a, 0xa3, 0xba, 0xa1, 0x7a, 0xa3, 0xbb, 0xa3, 0x7a, 0xa4, 0xbb, - 0xa4, 0x7a, 0xa4, 0xbb, 0xa4, 0x7a, 0xa5, 0xbb, 0xa5, 0x7a, 0xa5, 0xbb, - 0xa5, 0x7a, 0xa5, 0xbb, 0xa5, 0x7a, 0xa6, 0xbb, 0xa6, 0x7a, 0xa6, 0xbb, - 0xa5, 0x7a, 0xa6, 0xbb, 0xa6, 0x7a, 0xa7, 0xb9, 0xaa, 0x7a, 0xa7, 0xb8, - 0xaa, 0x7a, 0xa8, 0xb9, 0xaa, 0x7a, 0xa8, 0xb8, 0xaa, 0x7a, 0xa8, 0xb9, - 0xaa, 0x7a, 0xa9, 0xb8, 0xaa, 0x7a, 0xa9, 0xb9, 0xaa, 0x7a, 0xaa, 0xb8, - 0xaa, 0x7a, 0xaa, 0xb9, 0xaa, 0x7a, 0xaa, 0xb8, 0xaa, 0x7a, 0xaa, 0xb8, - 0xab, 0x7a, 0xaa, 0xb8, 0xab, 0x7a, 0xaa, 0xb8, 0xab, 0x7a, 0xaa, 0xb8, - 0xac, 0x7a, 0xaa, 0xb8, 0xac, 0x7a, 0xaa, 0xb8, 0xac, 0x7a, 0xaa, 0xb8, - 0xad, 0x7a, 0xaa, 0xb8, 0xad, 0x77, 0xaa, 0xb8, 0xae, 0x7a, 0xaa, 0xb8, - 0xae, 0x77, 0xaa, 0xb8, 0xae, 0x7a, 0xaa, 0xb8, 0xaf, 0x77, 0xaa, 0xb8, - 0xaf, 0x7a, 0xaa, 0xb8, 0xaf, 0x77, 0xaa, 0xb8, 0xb0, 0x7a, 0xaa, 0xb8, - 0xb0, 0x77, 0xaa, 0xb8, 0xb0, 0x7a, 0xaa, 0xb8, 0xb1, 0x77, 0xaa, 0xb8, - 0xb1, 0x7a, 0xb2, 0xb8, 0xb2, 0x70, 0xb2, 0xb8, 0xb2, 0x70, 0xb2, 0xb8, - 0xb2, 0x70, 0xb3, 0xb8, 0xb3, 0x70, 0xb6, 0xb8, 0xb3, 0x71, 0xb6, 0xb8, - 0xb3, 0x71, 0xb6, 0xb8, 0xb4, 0x71, 0xb6, 0xb8, 0xb4, 0x71, 0xb6, 0xb8, - 0xb4, 0x71, 0xb6, 0xb8, 0xb5, 0x71, 0xb6, 0xb8, 0xb5, 0x71, 0xb6, 0xb8, - 0xb5, 0x71, 0xb6, 0xb8, 0xb6, 0x71, 0xb6, 0xb8, 0xb6, 0x71, 0xb6, 0xb8, - 0xb6, 0x71, 0xb7, 0xb8, 0xb7, 0x71, 0xba, 0xb8, 0xb7, 0x72, 0xba, 0xb8, - 0xb7, 0x72, 0xba, 0xb8, 0xb8, 0x72, 0xba, 0xb8, 0xb8, 0x72, 0xba, 0xb8, - 0xb8, 0x72, 0xba, 0xb8, 0xb9, 0x72, 0xba, 0xb8, 0xb9, 0x72, 0xba, 0xb8, - 0xb9, 0x72, 0xba, 0xb8, 0xba, 0x72, 0xba, 0xb8, 0xba, 0x72, 0xba, 0xb8, - 0xba, 0x72, 0xbb, 0xb8, 0xbb, 0x72, 0xbb, 0xb8, 0xbb, 0x72, 0xbd, 0xb8, - 0xbb, 0x73, 0xbe, 0xb8, 0xbc, 0x73, 0xbd, 0xb8, 0xbc, 0x73, 0xbe, 0xb8, - 0xbc, 0x73, 0xbd, 0xb8, 0xbd, 0x73, 0xbe, 0xb8, 0xbd, 0x73, 0xbd, 0xb8, - 0xbd, 0x73, 0xbe, 0xb8, 0xbe, 0x73, 0xbe, 0xb8, 0xbe, 0x73, 0xbe, 0xb8, - 0xbe, 0x73, 0xbf, 0xb8, 0xbf, 0x73, 0xc1, 0xb8, 0xbf, 0x74, 0xc1, 0xb8, - 0xbf, 0x74, 0xc1, 0xb8, 0xc0, 0x74, 0xc1, 0xb8, 0xc0, 0x74, 0xc1, 0xb8, - 0xc0, 0x74, 0xc1, 0xb8, 0xc1, 0x74, 0xc1, 0xb8, 0xc1, 0x74, 0xc1, 0xb8, - 0xc1, 0x74, 0xc1, 0xb8, 0xc1, 0x74, 0xc2, 0xb8, 0xc2, 0x74, 0xc2, 0xb8, - 0xc2, 0x74, 0xc4, 0xb8, 0xc2, 0x75, 0xc5, 0xb8, 0xc3, 0x75, 0xc4, 0xb8, - 0xc3, 0x75, 0xc5, 0xb8, 0xc3, 0x75, 0xc4, 0xb8, 0xc4, 0x75, 0xc5, 0xb8, - 0xc4, 0x75, 0xc4, 0xb8, 0xc4, 0x75, 0xc5, 0xb8, 0xc5, 0x75, 0xc5, 0xb8, - 0xc5, 0x75, 0xc5, 0xb8, 0xc5, 0x75, 0xc6, 0xb8, 0xc6, 0x75, 0xc6, 0xb8, - 0xc6, 0x75, 0xc6, 0xb8, 0xc6, 0x75, 0xc8, 0xb8, 0xc6, 0x76, 0xc8, 0xb8, - 0xc7, 0x76, 0xc8, 0xb8, 0xc7, 0x76, 0xc8, 0xb8, 0xc7, 0x76, 0xc8, 0xb8, - 0xc8, 0x76, 0xc8, 0xb8, 0xc8, 0x76, 0xc8, 0xb8, 0xc8, 0x76, 0xc9, 0xb8, - 0xc9, 0x76, 0xc9, 0xb8, 0xc9, 0x76, 0xc9, 0xb8, 0xc9, 0x76, 0xc9, 0xb8, - 0xc9, 0x76, 0xcb, 0xb8, 0xca, 0x77, 0xcb, 0xb8, 0xca, 0x77, 0xcb, 0xb8, - 0xca, 0x77, 0xcb, 0xb8, 0xcb, 0x77, 0xcb, 0xb8, 0xcb, 0x77, 0xcb, 0xb8, - 0xcb, 0x77, 0xcc, 0xb8, 0xcc, 0x77, 0xcc, 0xb8, 0xcc, 0x77, 0xcc, 0xb8, - 0xcc, 0x77, 0xcc, 0xb8, 0xcc, 0x77, 0xcd, 0xb8, 0xcd, 0x77, 0xce, 0xb8, - 0xcd, 0x78, 0xce, 0xb8, 0xcd, 0x78, 0xce, 0xb8, 0xce, 0x78, 0xce, 0xb8, - 0xce, 0x78, 0xce, 0xb8, 0xce, 0x78, 0xce, 0xb8, 0xce, 0x78, 0xce, 0xb8, - 0xcf, 0x78, 0xce, 0xb8, 0xcf, 0x78, 0xce, 0xb8, 0xcf, 0x78, 0xce, 0xb8, - 0xd0, 0x78, 0xce, 0xb8, 0xd0, 0x78, 0xce, 0xb8, 0xd0, 0x78, 0xce, 0xb8, - 0xd0, 0x78, 0xce, 0xb8, 0xd1, 0x78, 0xce, 0xb8, 0xd1, 0x78, 0xce, 0xb8, - 0xd1, 0x78, 0xce, 0xb8, 0xd2, 0x78, 0xce, 0xb8, 0xd2, 0x78, 0xce, 0xb8, - 0xd2, 0x78, 0xce, 0xb8, 0xd2, 0x78, 0xce, 0xb8, 0xd3, 0x78, 0xce, 0xb8, - 0xd3, 0x78, 0xce, 0xb8, 0xd3, 0x78, 0xce, 0xb8, 0xd4, 0x78, 0xce, 0xb8, - 0xd4, 0x78, 0xce, 0xb8, 0xd4, 0x78, 0xcf, 0xb8, 0xd4, 0x75, 0xce, 0xb8, - 0xd5, 0x78, 0xcf, 0xb8, 0xd5, 0x75, 0xce, 0xb8, 0xd5, 0x78, 0xcf, 0xb8, - 0xd6, 0x75, 0xce, 0xb8, 0xd6, 0x78, 0xcf, 0xb8, 0xd6, 0x75, 0xce, 0xb8, - 0xd6, 0x78, 0xcf, 0xb8, 0xd7, 0x75, 0xce, 0xb8, 0xd7, 0x78, 0xcf, 0xb8, - 0xd7, 0x75, 0xce, 0xb8, 0xd7, 0x78, 0xcf, 0xb8, 0xd8, 0x75, 0xce, 0xb8, - 0xd8, 0x78, 0xcf, 0xb8, 0xd8, 0x75, 0xce, 0xb8, 0xd9, 0x78, 0xcf, 0xb8, - 0xd9, 0x75, 0xce, 0xb8, 0xd9, 0x78, 0xcf, 0xb8, 0xd9, 0x75, 0xce, 0xb8, - 0xda, 0x78, 0xcf, 0xb8, 0xda, 0x75, 0xce, 0xb8, 0xda, 0x78, 0xcf, 0xb8, - 0xda, 0x75, 0xce, 0xb8, 0xdb, 0x78, 0xcf, 0xb8, 0xdb, 0x75, 0xce, 0xb8, - 0xdb, 0x78, 0xcf, 0xb8, 0xdb, 0x75, 0xce, 0xb8, 0xdc, 0x78, 0xcf, 0xb8, - 0xdc, 0x75, 0xce, 0xb8, 0xdc, 0x78, 0xcf, 0xb8, 0xdd, 0x75, 0xce, 0xb8, - 0xdd, 0x78, 0xea, 0xb8, 0xdd, 0x7e, 0xeb, 0xb8, 0xdd, 0x7a, 0xea, 0xb8, - 0xde, 0x7e, 0xeb, 0xb8, 0xde, 0x7a, 0xea, 0xb8, 0xde, 0x7e, 0xeb, 0xb8, - 0xde, 0x7a, 0xea, 0xb8, 0xdf, 0x7e, 0xeb, 0xb8, 0xdf, 0x7a, 0xea, 0xb8, - 0xdf, 0x7e, 0xeb, 0xb8, 0xdf, 0x7a, 0xea, 0xb8, 0xe0, 0x7e, 0xeb, 0xb8, - 0xe0, 0x7a, 0xea, 0xb8, 0xe0, 0x7e, 0xeb, 0xb8, 0xe1, 0x7a, 0xea, 0xb8, - 0xe1, 0x7e, 0xeb, 0xb8, 0xe1, 0x7a, 0xea, 0xb8, 0xe1, 0x7e, 0xeb, 0xb8, - 0xe2, 0x7a, 0xea, 0xb8, 0xe2, 0x7e, 0xeb, 0xb8, 0xe2, 0x7a, 0xea, 0xb8, - 0xe2, 0x7e, 0xeb, 0xb8, 0xe3, 0x7a, 0xea, 0xb8, 0xe3, 0x7e, 0xeb, 0xb8, - 0xe3, 0x7a, 0xea, 0xb8, 0xe3, 0x7e, 0xeb, 0xb8, 0xe4, 0x7a, 0xea, 0xb8, - 0xe4, 0x7e, 0xeb, 0xb8, 0xe4, 0x7a, 0xea, 0xb8, 0xe4, 0x7e, 0xeb, 0xb8, - 0xe5, 0x7a, 0xea, 0xb8, 0xe5, 0x7e, 0xeb, 0xb8, 0xe5, 0x7a, 0xea, 0xb8, - 0xe5, 0x7e, 0xeb, 0xb8, 0xe6, 0x7a, 0xea, 0xb8, 0xe6, 0x7e, 0xeb, 0xb8, - 0xe6, 0x7a, 0xea, 0xb8, 0xe6, 0x7e, 0xeb, 0xb8, 0xe7, 0x7a, 0xeb, 0xb8, - 0xe7, 0x7a, 0xeb, 0xb8, 0xe7, 0x7a, 0xeb, 0xb8, 0xe7, 0x7a, 0xeb, 0xb8, - 0xe8, 0x7a, 0xeb, 0xb8, 0xe8, 0x7a, 0xeb, 0xb8, 0xe8, 0x7a, 0xeb, 0xb8, - 0xe8, 0x7a, 0xeb, 0xb8, 0xe9, 0x7a, 0xeb, 0xb8, 0xe9, 0x7a, 0xeb, 0xb8, - 0xe9, 0x7a, 0xeb, 0xb8, 0xe9, 0x7a, 0xeb, 0xb8, 0xea, 0x7a, 0xeb, 0xb8, - 0xea, 0x7a, 0xeb, 0xb8, 0xea, 0x7a, 0xeb, 0xb8, 0xea, 0x7a, 0xeb, 0xb7, - 0xeb, 0x7a, 0xeb, 0xb8, 0xea, 0x7a, 0xeb, 0xb7, 0xeb, 0x7a, 0xeb, 0xb8, - 0xea, 0x7a, 0xec, 0xb7, 0xeb, 0x7a, 0xec, 0xb8, 0xea, 0x7a, 0xec, 0xb7, - 0xeb, 0x7a, 0xec, 0xb8, 0xea, 0x7a, 0xec, 0xb7, 0xeb, 0x7a, 0xed, 0xb8, - 0xea, 0x7a, 0xed, 0xb7, 0xeb, 0x7a, 0xed, 0xb8, 0xea, 0x7a, 0xed, 0xb7, - 0xeb, 0x7a, 0xee, 0xb8, 0xea, 0x7a, 0xee, 0xb7, 0xeb, 0x7a, 0xee, 0xb8, - 0xea, 0x7a, 0xee, 0xb7, 0xeb, 0x7a, 0xef, 0xb8, 0xea, 0x7a, 0xef, 0xb7, - 0xeb, 0x7a, 0xef, 0xb8, 0xea, 0x7a, 0xef, 0xb7, 0xeb, 0x7a, 0xf0, 0xb8, - 0xea, 0x7a, 0xf0, 0xb7, 0xeb, 0x7a, 0xf0, 0xb8, 0xea, 0x7a, 0xf0, 0xb9, - 0xf5, 0x7a, 0xf1, 0xb8, 0xf6, 0x7a, 0xf1, 0xb9, 0xf5, 0x7a, 0xf1, 0xb8, - 0xf6, 0x7a, 0xf1, 0xb9, 0xf5, 0x7a, 0xf2, 0xb8, 0xf6, 0x7a, 0xf2, 0xb9, - 0xf5, 0x7a, 0xf2, 0xb8, 0xf6, 0x7a, 0xf2, 0xb9, 0xf5, 0x7a, 0xf2, 0xb8, - 0xf6, 0x7a, 0xf3, 0xb9, 0xf5, 0x7a, 0xf3, 0xb8, 0xf6, 0x7a, 0xf3, 0xb9, - 0xf5, 0x7a, 0xf3, 0xb8, 0xf6, 0x7a, 0xf4, 0xb9, 0xf5, 0x7a, 0xf4, 0xb8, - 0xf6, 0x7a, 0xf4, 0xb9, 0xf5, 0x7a, 0xf4, 0xb8, 0xf6, 0x7a, 0xf5, 0xb9, - 0xf5, 0x7a, 0xf5, 0xb8, 0xf6, 0x7a, 0xf5, 0xb8, 0xf6, 0x7a, 0xf5, 0xb8, - 0xf6, 0x7a, 0xf5, 0xb8, 0xf6, 0x7a, 0xf5, 0xb8, 0xf6, 0x7a, 0xf5, 0xb8, - 0xf6, 0x7a, 0xf5, 0xb8, 0xf6, 0x7a, 0xf5, 0xb8, 0xf6, 0x7a, 0xf5, 0xb8, - 0xf7, 0x7a, 0xf5, 0xb8, 0xf7, 0x7a, 0xf5, 0xb8, 0xf7, 0x7a, 0xf5, 0xb8, - 0xf7, 0x7a, 0xf9, 0xb8, 0xf8, 0x7a, 0xfa, 0xb8, 0xf8, 0x7a, 0xf9, 0xb8, - 0xf8, 0x7a, 0xfa, 0xb8, 0xf8, 0x7a, 0xf9, 0xb8, 0xf8, 0x7a, 0xfa, 0xb8, - 0xf9, 0x7a, 0xf9, 0xb8, 0xf9, 0x7a, 0xfa, 0xb8, 0xf9, 0x7a, 0xf9, 0xb7, - 0xf9, 0x7a, 0xfa, 0xb8, 0xf9, 0x7a, 0xfa, 0xb7, 0xf9, 0x7a, 0xfa, 0xb8, - 0xf9, 0x7a, 0xfa, 0xb7, 0xf9, 0x7a, 0xfa, 0xb8, 0xf9, 0x7a, 0xfb, 0xb7, - 0xf9, 0x7a, 0xfb, 0xb8, 0xf9, 0x7a, 0xfb, 0xb7, 0xf9, 0x7a, 0xfb, 0xb8, - 0xf9, 0x7a, 0xfc, 0xb7, 0xf9, 0x7a, 0xfc, 0xb8, 0xf9, 0x7a, 0xfc, 0xb7, - 0xf9, 0x7a, 0xfc, 0xb8, 0xf9, 0x7a, 0xfc, 0xb7, 0xf9, 0x7a, 0xfd, 0xb8, - 0xf9, 0x7a, 0xfd, 0xb7, 0xf9, 0x7a, 0xfd, 0xb5, 0xfa, 0x7a, 0xfd, 0xb7, - 0xf9, 0x7a, 0xfe, 0xb5, 0xfa, 0x7a, 0xfe, 0xb7, 0xf9, 0x7a, 0xfe, 0xb5, - 0xfa, 0x7a, 0xfe, 0xb7, 0xf9, 0x7a, 0xfe, 0xb5, 0xfa, 0x7a, 0xff, 0xb7, - 0xf9, 0x7a, 0xff, 0xb5, 0xfa, 0x7a, 0x03, 0xc1, 0x91, 0x7b, 0x0a, 0xc1, - 0x91, 0x7b, 0x0f, 0xc1, 0x91, 0x7b, 0x14, 0xc1, 0x91, 0x7b, 0x17, 0xc1, - 0x91, 0x7b, 0x1b, 0xc1, 0x91, 0x7b, 0x1e, 0xc1, 0x91, 0x7b, 0x20, 0xbf, - 0x91, 0x7b, 0x23, 0xc1, 0x91, 0x7b, 0x25, 0xbf, 0x91, 0x7b, 0x27, 0xc1, - 0x91, 0x7b, 0x29, 0xbf, 0x91, 0x7b, 0x2b, 0xc1, 0x91, 0x7b, 0x2d, 0xbf, - 0x91, 0x7b, 0x2f, 0xc1, 0x91, 0x7b, 0x31, 0xbf, 0x91, 0x7b, 0x32, 0xc1, - 0x91, 0x7b, 0x34, 0xbf, 0x91, 0x7b, 0x35, 0xc1, 0x91, 0x7b, 0x37, 0xbf, - 0x91, 0x7b, 0x38, 0xc1, 0x91, 0x7b, 0x3a, 0xbf, 0x91, 0x7b, 0x3b, 0xc1, - 0x91, 0x7b, 0x3c, 0xbf, 0x91, 0x7b, 0x3e, 0xc1, 0x91, 0x7b, 0x3f, 0xbf, - 0x91, 0x7b, 0x40, 0xbd, 0x92, 0x7b, 0x42, 0xbf, 0x91, 0x7b, 0x43, 0xbd, - 0x92, 0x7b, 0x44, 0xbf, 0x91, 0x7b, 0x45, 0xbd, 0x92, 0x7b, 0x46, 0xbf, - 0x91, 0x7b, 0x47, 0xbd, 0x92, 0x7b, 0x48, 0xbf, 0x91, 0x7b, 0x49, 0xbd, - 0x92, 0x7b, 0x4a, 0xbf, 0x91, 0x7b, 0x4b, 0xbd, 0x92, 0x7b, 0x4c, 0xbf, - 0x91, 0x7b, 0x4d, 0xbd, 0x92, 0x7b, 0x4e, 0xbf, 0x91, 0x7b, 0x4f, 0xbd, - 0x92, 0x7b, 0x50, 0xbf, 0x91, 0x7b, 0x51, 0xbd, 0x92, 0x7b, 0x52, 0xbf, - 0x91, 0x7b, 0x53, 0xbd, 0x92, 0x7b, 0x54, 0xbf, 0x91, 0x7b, 0x55, 0xbd, - 0x92, 0x7b, 0x56, 0xbf, 0x91, 0x7b, 0x57, 0xbd, 0x92, 0x7b, 0x58, 0xbf, - 0x91, 0x7b, 0x58, 0xbd, 0x92, 0x7b, 0x59, 0xbf, 0x91, 0x7b, 0x5a, 0xbd, - 0x92, 0x7b, 0x5b, 0xbf, 0x91, 0x7b, 0x5c, 0xbd, 0x92, 0x7b, 0x5d, 0xba, - 0x92, 0x7b, 0x5d, 0xbd, 0x92, 0x7b, 0x5e, 0xba, 0x92, 0x7b, 0x5f, 0xbd, - 0x92, 0x7b, 0x60, 0xba, 0x92, 0x7b, 0x60, 0xbd, 0x92, 0x7b, 0x61, 0xba, - 0x92, 0x7b, 0x62, 0xbd, 0x92, 0x7b, 0x63, 0xba, 0x92, 0x7b, 0x63, 0xbd, - 0x92, 0x7b, 0x64, 0xba, 0x92, 0x7b, 0x65, 0xbd, 0x92, 0x7b, 0x66, 0xba, - 0x92, 0x7b, 0x66, 0xbd, 0x92, 0x7b, 0x67, 0xba, 0x92, 0x7b, 0x68, 0xbd, - 0x92, 0x7b, 0x68, 0xba, 0x92, 0x7b, 0x69, 0xbd, 0x92, 0x7b, 0x6a, 0xba, - 0x92, 0x7b, 0x6a, 0xbd, 0x92, 0x7b, 0x6b, 0xba, 0x92, 0x7b, 0x6c, 0xbd, - 0x92, 0x7b, 0x6c, 0xba, 0x92, 0x7b, 0x6d, 0xbd, 0x92, 0x7b, 0x6e, 0xba, - 0x92, 0x7b, 0x6e, 0xbd, 0x92, 0x7b, 0x6f, 0xba, 0x92, 0x7b, 0x70, 0xbd, - 0x92, 0x7b, 0x70, 0xba, 0x92, 0x7b, 0x71, 0xbd, 0x92, 0x7b, 0x72, 0xba, - 0x92, 0x7b, 0x72, 0xbd, 0x92, 0x7b, 0x73, 0xba, 0x92, 0x7b, 0x73, 0xbd, - 0x92, 0x7b, 0x74, 0xba, 0x92, 0x7b, 0x75, 0xbd, 0x92, 0x7b, 0x75, 0xba, - 0x92, 0x7b, 0x76, 0xbd, 0x92, 0x7b, 0x76, 0xba, 0x92, 0x7b, 0x77, 0xbd, - 0x92, 0x7b, 0x78, 0xba, 0x92, 0x7b, 0x78, 0xbd, 0x92, 0x7b, 0x79, 0xba, - 0x92, 0x7b, 0x79, 0xbd, 0x92, 0x7b, 0x7a, 0xba, 0x92, 0x7b, 0x7a, 0xb8, - 0x93, 0x7b, 0x7b, 0xba, 0x92, 0x7b, 0x7c, 0xb8, 0x93, 0x7b, 0x7c, 0xba, - 0x92, 0x7b, 0x7d, 0xb8, 0x93, 0x7b, 0x7d, 0xba, 0x92, 0x7b, 0x7e, 0xb8, - 0x93, 0x7b, 0x7e, 0xba, 0x92, 0x7b, 0x7f, 0xb8, 0x93, 0x7b, 0x7f, 0xba, - 0x92, 0x7b, 0x80, 0xb8, 0x93, 0x7b, 0x81, 0xba, 0x92, 0x7b, 0x81, 0xb8, - 0x93, 0x7b, 0x82, 0xba, 0x92, 0x7b, 0x82, 0xb8, 0x93, 0x7b, 0x83, 0xba, - 0x92, 0x7b, 0x83, 0xb8, 0x93, 0x7b, 0x84, 0xba, 0x92, 0x7b, 0x84, 0xb8, - 0x93, 0x7b, 0x85, 0xba, 0x92, 0x7b, 0x85, 0xb8, 0x93, 0x7b, 0x86, 0xba, - 0x92, 0x7b, 0x86, 0xb8, 0x93, 0x7b, 0x87, 0xba, 0x92, 0x7b, 0x87, 0xb8, - 0x93, 0x7b, 0x88, 0xba, 0x92, 0x7b, 0x88, 0xb8, 0x93, 0x7b, 0x89, 0xba, - 0x92, 0x7b, 0x89, 0xb8, 0x93, 0x7b, 0x8a, 0xba, 0x92, 0x7b, 0x8a, 0xb8, - 0x93, 0x7b, 0x8b, 0xba, 0x92, 0x7b, 0x8b, 0xb8, 0x93, 0x7b, 0x8c, 0xba, - 0x92, 0x7b, 0x8c, 0xb8, 0x93, 0x7b, 0x8d, 0xba, 0x92, 0x7b, 0x8d, 0xb8, - 0x93, 0x7b, 0x8e, 0xba, 0x92, 0x7b, 0x8e, 0xb8, 0x93, 0x7b, 0x8e, 0xba, - 0x92, 0x7b, 0x8f, 0xb8, 0x93, 0x7b, 0x8f, 0xb8, 0x93, 0x7b, 0x90, 0xb8, - 0x93, 0x7b, 0x90, 0xb8, 0x93, 0x7b, 0x91, 0xb8, 0x93, 0x7b, 0x91, 0xb8, - 0x93, 0x7b, 0x92, 0xb8, 0x93, 0x7b, 0x92, 0xb8, 0x93, 0x7b, 0x93, 0xb8, - 0x93, 0x7a, 0x92, 0xb8, 0x93, 0x7b, 0x93, 0xb8, 0x94, 0x7a, 0x95, 0xb8, - 0x94, 0x7a, 0x94, 0xb8, 0x94, 0x7a, 0x95, 0xb8, 0x95, 0x7a, 0x95, 0xb8, - 0x95, 0x7a, 0x96, 0xb8, 0x96, 0x7a, 0x96, 0xb9, 0x96, 0x7b, 0x97, 0xb9, - 0x97, 0x7b, 0x97, 0xb9, 0x97, 0x7b, 0x98, 0xb9, 0x98, 0x7b, 0x98, 0xb9, - 0x98, 0x7b, 0x98, 0xb9, 0x98, 0x7b, 0x99, 0xb9, 0x99, 0x7b, 0x99, 0xb9, - 0x99, 0x7b, 0x9a, 0xb9, 0x9a, 0x7b, 0x9a, 0xb9, 0x9a, 0x7b, 0x9a, 0xb9, - 0x9a, 0x7b, 0x9b, 0xb9, 0x9a, 0x7b, 0x9b, 0xb9, 0x9a, 0x7b, 0x9c, 0xba, - 0x9c, 0x7b, 0x9c, 0xba, 0x9c, 0x7b, 0x9d, 0xba, 0x9d, 0x7b, 0x9d, 0xba, - 0x9d, 0x7b, 0x9d, 0xba, 0x9d, 0x7b, 0x9e, 0xba, 0x9e, 0x7b, 0x9e, 0xba, - 0x9e, 0x7b, 0x9f, 0xba, 0x9f, 0x7b, 0x9f, 0xba, 0x9f, 0x7b, 0x9f, 0xba, - 0x9f, 0x7b, 0xa0, 0xba, 0x9f, 0x7b, 0xa0, 0xba, 0x9f, 0x7b, 0xa1, 0xba, - 0x9f, 0x7b, 0xa1, 0xba, 0xa1, 0x7b, 0xa1, 0xba, 0xa1, 0x7b, 0xa2, 0xba, - 0xa2, 0x7b, 0xa2, 0xba, 0xa2, 0x7b, 0xa3, 0xba, 0xa3, 0x7b, 0xa3, 0xba, - 0xa3, 0x7b, 0xa3, 0xba, 0xa3, 0x7b, 0xa4, 0xba, 0xa3, 0x7b, 0xa4, 0xba, - 0xa3, 0x7b, 0xa5, 0xba, 0xa3, 0x7b, 0xa5, 0xba, 0xa3, 0x7b, 0xa5, 0xbb, - 0xa5, 0x7b, 0xa6, 0xbb, 0xa6, 0x7b, 0xa6, 0xbb, 0xa6, 0x7b, 0xa6, 0xbb, - 0xa6, 0x7b, 0xa7, 0xbb, 0xa7, 0x7b, 0xa7, 0xbb, 0xa7, 0x7b, 0xa8, 0xb9, - 0xaa, 0x7b, 0xa8, 0xb8, 0xaa, 0x7b, 0xa8, 0xb9, 0xaa, 0x7b, 0xa9, 0xb8, - 0xaa, 0x7b, 0xa9, 0xb9, 0xaa, 0x7b, 0xaa, 0xb8, 0xaa, 0x7b, 0xaa, 0xb9, - 0xaa, 0x7b, 0xaa, 0xb8, 0xaa, 0x7b, 0xaa, 0xb8, 0xab, 0x7b, 0xaa, 0xb8, - 0xab, 0x7b, 0xaa, 0xb8, 0xab, 0x7b, 0xaa, 0xb8, 0xac, 0x7b, 0xaa, 0xb8, - 0xac, 0x7b, 0xaa, 0xb8, 0xac, 0x7b, 0xaa, 0xb8, 0xad, 0x7b, 0xaa, 0xb8, - 0xad, 0x78, 0xaa, 0xb8, 0xae, 0x7b, 0xaa, 0xb8, 0xae, 0x78, 0xaa, 0xb8, - 0xae, 0x7b, 0xaa, 0xb8, 0xaf, 0x78, 0xaa, 0xb8, 0xaf, 0x7b, 0xaa, 0xb8, - 0xaf, 0x78, 0xaa, 0xb8, 0xb0, 0x7b, 0xaa, 0xb8, 0xb0, 0x78, 0xaa, 0xb8, - 0xb0, 0x7b, 0xaa, 0xb8, 0xb1, 0x78, 0xaa, 0xb8, 0xb1, 0x7b, 0xaa, 0xb8, - 0xb2, 0x78, 0xb4, 0xb8, 0xb2, 0x71, 0xb4, 0xb8, 0xb2, 0x71, 0xb4, 0xb8, - 0xb3, 0x71, 0xb4, 0xb8, 0xb3, 0x71, 0xb4, 0xb8, 0xb3, 0x71, 0xb4, 0xb8, - 0xb4, 0x71, 0xb4, 0xb8, 0xb4, 0x71, 0xb4, 0xb8, 0xb4, 0x71, 0xb5, 0xb8, - 0xb5, 0x71, 0xb8, 0xb8, 0xb5, 0x72, 0xb8, 0xb8, 0xb5, 0x72, 0xb8, 0xb8, - 0xb6, 0x72, 0xb8, 0xb8, 0xb6, 0x72, 0xb8, 0xb8, 0xb6, 0x72, 0xb8, 0xb8, - 0xb7, 0x72, 0xb8, 0xb8, 0xb7, 0x72, 0xb8, 0xb8, 0xb7, 0x72, 0xb8, 0xb8, - 0xb8, 0x72, 0xb8, 0xb8, 0xb8, 0x72, 0xb8, 0xb8, 0xb8, 0x72, 0xbb, 0xb8, - 0xb9, 0x73, 0xbc, 0xb8, 0xb9, 0x73, 0xbb, 0xb8, 0xb9, 0x73, 0xbc, 0xb8, - 0xba, 0x73, 0xbb, 0xb8, 0xba, 0x73, 0xbc, 0xb8, 0xba, 0x73, 0xbb, 0xb8, - 0xbb, 0x73, 0xbc, 0xb8, 0xbb, 0x73, 0xbb, 0xb8, 0xbb, 0x73, 0xbc, 0xb8, - 0xbc, 0x73, 0xbc, 0xb8, 0xbc, 0x73, 0xbc, 0xb8, 0xbc, 0x73, 0xbd, 0xb8, - 0xbd, 0x73, 0xbf, 0xb8, 0xbd, 0x74, 0xbf, 0xb8, 0xbd, 0x74, 0xbf, 0xb8, - 0xbe, 0x74, 0xbf, 0xb8, 0xbe, 0x74, 0xbf, 0xb8, 0xbe, 0x74, 0xbf, 0xb8, - 0xbf, 0x74, 0xbf, 0xb8, 0xbf, 0x74, 0xbf, 0xb8, 0xbf, 0x74, 0xc0, 0xb8, - 0xc0, 0x74, 0xc0, 0xb8, 0xc0, 0x74, 0xc0, 0xb8, 0xc0, 0x74, 0xc2, 0xb8, - 0xc1, 0x75, 0xc3, 0xb8, 0xc1, 0x75, 0xc2, 0xb8, 0xc1, 0x75, 0xc3, 0xb8, - 0xc1, 0x75, 0xc2, 0xb8, 0xc2, 0x75, 0xc3, 0xb8, 0xc2, 0x75, 0xc2, 0xb8, - 0xc2, 0x75, 0xc3, 0xb8, 0xc3, 0x75, 0xc3, 0xb8, 0xc3, 0x75, 0xc3, 0xb8, - 0xc3, 0x75, 0xc4, 0xb8, 0xc4, 0x75, 0xc4, 0xb8, 0xc4, 0x75, 0xc6, 0xb8, - 0xc4, 0x76, 0xc6, 0xb8, 0xc5, 0x76, 0xc6, 0xb8, 0xc5, 0x76, 0xc6, 0xb8, - 0xc5, 0x76, 0xc6, 0xb8, 0xc6, 0x76, 0xc6, 0xb8, 0xc6, 0x76, 0xc6, 0xb8, - 0xc6, 0x76, 0xc6, 0xb8, 0xc6, 0x76, 0xc7, 0xb8, 0xc7, 0x76, 0xc7, 0xb8, - 0xc7, 0x76, 0xc7, 0xb8, 0xc7, 0x76, 0xc8, 0xb8, 0xc8, 0x76, 0xc8, 0xb8, - 0xc8, 0x76, 0xc9, 0xb8, 0xc8, 0x77, 0xca, 0xb8, 0xc9, 0x77, 0xc9, 0xb8, - 0xc9, 0x77, 0xca, 0xb8, 0xc9, 0x77, 0xc9, 0xb8, 0xc9, 0x77, 0xca, 0xb8, - 0xca, 0x77, 0xca, 0xb8, 0xca, 0x77, 0xca, 0xb8, 0xca, 0x77, 0xcb, 0xb8, - 0xcb, 0x77, 0xcb, 0xb8, 0xcb, 0x77, 0xcb, 0xb8, 0xcb, 0x77, 0xcd, 0xb8, - 0xcc, 0x78, 0xcd, 0xb8, 0xcc, 0x78, 0xcd, 0xb8, 0xcc, 0x78, 0xcd, 0xb8, - 0xcc, 0x78, 0xcd, 0xb8, 0xcd, 0x78, 0xcd, 0xb8, 0xcd, 0x78, 0xcd, 0xb8, - 0xcd, 0x78, 0xce, 0xb8, 0xce, 0x78, 0xce, 0xb8, 0xce, 0x78, 0xce, 0xb8, - 0xce, 0x78, 0xce, 0xb8, 0xce, 0x78, 0xce, 0xb8, 0xcf, 0x78, 0xce, 0xb8, - 0xcf, 0x78, 0xce, 0xb8, 0xcf, 0x78, 0xce, 0xb8, 0xd0, 0x78, 0xce, 0xb8, - 0xd0, 0x78, 0xce, 0xb8, 0xd0, 0x78, 0xce, 0xb8, 0xd0, 0x78, 0xce, 0xb8, - 0xd1, 0x78, 0xce, 0xb8, 0xd1, 0x78, 0xce, 0xb8, 0xd1, 0x78, 0xce, 0xb8, - 0xd2, 0x78, 0xce, 0xb8, 0xd2, 0x78, 0xce, 0xb8, 0xd2, 0x78, 0xce, 0xb8, - 0xd2, 0x78, 0xce, 0xb8, 0xd3, 0x78, 0xce, 0xb8, 0xd3, 0x78, 0xce, 0xb8, - 0xd3, 0x78, 0xce, 0xb8, 0xd4, 0x78, 0xce, 0xb8, 0xd4, 0x78, 0xce, 0xb8, - 0xd4, 0x78, 0xce, 0xb8, 0xd4, 0x78, 0xce, 0xb8, 0xd5, 0x78, 0xce, 0xb8, - 0xd5, 0x78, 0xce, 0xb8, 0xd5, 0x78, 0xce, 0xb8, 0xd6, 0x78, 0xce, 0xb8, - 0xd6, 0x78, 0xce, 0xb8, 0xd6, 0x78, 0xce, 0xb8, 0xd6, 0x78, 0xcf, 0xb8, - 0xd7, 0x75, 0xce, 0xb8, 0xd7, 0x78, 0xcf, 0xb8, 0xd7, 0x75, 0xce, 0xb8, - 0xd7, 0x78, 0xcf, 0xb8, 0xd8, 0x75, 0xce, 0xb8, 0xd8, 0x78, 0xcf, 0xb8, - 0xd8, 0x75, 0xce, 0xb8, 0xd9, 0x78, 0xcf, 0xb8, 0xd9, 0x75, 0xce, 0xb8, - 0xd9, 0x78, 0xcf, 0xb8, 0xd9, 0x75, 0xce, 0xb8, 0xda, 0x78, 0xcf, 0xb8, - 0xda, 0x75, 0xce, 0xb8, 0xda, 0x78, 0xcf, 0xb8, 0xda, 0x75, 0xce, 0xb8, - 0xdb, 0x78, 0xcf, 0xb8, 0xdb, 0x75, 0xce, 0xb8, 0xdb, 0x78, 0xcf, 0xb8, - 0xdb, 0x75, 0xce, 0xb8, 0xdc, 0x78, 0xcf, 0xb8, 0xdc, 0x75, 0xce, 0xb8, - 0xdc, 0x78, 0xcf, 0xb8, 0xdd, 0x75, 0xce, 0xb8, 0xdd, 0x78, 0xea, 0xb8, - 0xdd, 0x7f, 0xeb, 0xb8, 0xdd, 0x7b, 0xea, 0xb8, 0xde, 0x7f, 0xeb, 0xb8, - 0xde, 0x7b, 0xea, 0xb8, 0xde, 0x7f, 0xeb, 0xb8, 0xde, 0x7b, 0xea, 0xb8, - 0xdf, 0x7f, 0xeb, 0xb8, 0xdf, 0x7b, 0xea, 0xb8, 0xdf, 0x7f, 0xeb, 0xb8, - 0xdf, 0x7b, 0xea, 0xb8, 0xe0, 0x7f, 0xeb, 0xb8, 0xe0, 0x7b, 0xea, 0xb8, - 0xe0, 0x7f, 0xeb, 0xb8, 0xe1, 0x7b, 0xea, 0xb8, 0xe1, 0x7f, 0xeb, 0xb8, - 0xe1, 0x7b, 0xea, 0xb8, 0xe1, 0x7f, 0xeb, 0xb8, 0xe2, 0x7b, 0xea, 0xb8, - 0xe2, 0x7f, 0xeb, 0xb8, 0xe2, 0x7b, 0xea, 0xb8, 0xe2, 0x7f, 0xeb, 0xb8, - 0xe3, 0x7b, 0xea, 0xb8, 0xe3, 0x7f, 0xeb, 0xb8, 0xe3, 0x7b, 0xea, 0xb8, - 0xe3, 0x7f, 0xeb, 0xb8, 0xe4, 0x7b, 0xea, 0xb8, 0xe4, 0x7f, 0xeb, 0xb8, - 0xe4, 0x7b, 0xea, 0xb8, 0xe4, 0x7f, 0xeb, 0xb8, 0xe5, 0x7b, 0xea, 0xb8, - 0xe5, 0x7f, 0xeb, 0xb8, 0xe5, 0x7b, 0xea, 0xb8, 0xe5, 0x7f, 0xeb, 0xb8, - 0xe6, 0x7b, 0xea, 0xb8, 0xe6, 0x7f, 0xeb, 0xb8, 0xe6, 0x7b, 0xea, 0xb8, - 0xe6, 0x7f, 0xeb, 0xb8, 0xe7, 0x7b, 0xeb, 0xb8, 0xe7, 0x7b, 0xeb, 0xb8, - 0xe7, 0x7b, 0xeb, 0xb8, 0xe7, 0x7b, 0xeb, 0xb8, 0xe8, 0x7b, 0xeb, 0xb8, - 0xe8, 0x7b, 0xeb, 0xb8, 0xe8, 0x7b, 0xeb, 0xb8, 0xe8, 0x7b, 0xeb, 0xb8, - 0xe9, 0x7b, 0xeb, 0xb8, 0xe9, 0x7b, 0xeb, 0xb8, 0xe9, 0x7b, 0xeb, 0xb8, - 0xe9, 0x7b, 0xeb, 0xb8, 0xea, 0x7b, 0xeb, 0xb8, 0xea, 0x7b, 0xeb, 0xb8, - 0xea, 0x7b, 0xeb, 0xb8, 0xea, 0x7b, 0xeb, 0xb8, 0xeb, 0x7b, 0xeb, 0xb8, - 0xea, 0x7b, 0xeb, 0xb8, 0xeb, 0x7b, 0xeb, 0xb8, 0xea, 0x7b, 0xec, 0xb8, - 0xeb, 0x7b, 0xec, 0xb8, 0xea, 0x7b, 0xec, 0xb8, 0xeb, 0x7b, 0xec, 0xb8, - 0xea, 0x7b, 0xec, 0xb8, 0xeb, 0x7b, 0xed, 0xb8, 0xea, 0x7b, 0xed, 0xb8, - 0xeb, 0x7b, 0xed, 0xb8, 0xea, 0x7b, 0xed, 0xb8, 0xeb, 0x7b, 0xee, 0xb8, - 0xea, 0x7b, 0xee, 0xb8, 0xeb, 0x7b, 0xee, 0xb8, 0xea, 0x7b, 0xee, 0xb8, - 0xeb, 0x7b, 0xef, 0xb8, 0xea, 0x7b, 0xef, 0xb8, 0xeb, 0x7b, 0xef, 0xb8, - 0xea, 0x7b, 0xef, 0xb8, 0xeb, 0x7b, 0xf0, 0xb8, 0xea, 0x7b, 0xf0, 0xb8, - 0xeb, 0x7b, 0xf0, 0xb8, 0xea, 0x7b, 0xf0, 0xb9, 0xf5, 0x7b, 0xf1, 0xb8, - 0xf6, 0x7b, 0xf1, 0xb9, 0xf5, 0x7b, 0xf1, 0xb8, 0xf6, 0x7b, 0xf1, 0xb9, - 0xf5, 0x7b, 0xf2, 0xb8, 0xf6, 0x7b, 0xf2, 0xb9, 0xf5, 0x7b, 0xf2, 0xb8, - 0xf6, 0x7b, 0xf2, 0xb9, 0xf5, 0x7b, 0xf2, 0xb8, 0xf6, 0x7b, 0xf3, 0xb9, - 0xf5, 0x7b, 0xf3, 0xb8, 0xf6, 0x7b, 0xf3, 0xb9, 0xf5, 0x7b, 0xf3, 0xb8, - 0xf6, 0x7b, 0xf4, 0xb9, 0xf5, 0x7b, 0xf4, 0xb8, 0xf6, 0x7b, 0xf4, 0xb9, - 0xf5, 0x7b, 0xf4, 0xb8, 0xf6, 0x7b, 0xf5, 0xb9, 0xf5, 0x7b, 0xf5, 0xb8, - 0xf6, 0x7b, 0xf5, 0xb9, 0xf5, 0x7b, 0xf5, 0xb8, 0xf6, 0x7b, 0xf5, 0xb8, - 0xf6, 0x7b, 0xf5, 0xb8, 0xf6, 0x7b, 0xf5, 0xb8, 0xf6, 0x7b, 0xf5, 0xb8, - 0xf6, 0x7b, 0xf5, 0xb8, 0xf6, 0x7b, 0xf5, 0xb8, 0xf7, 0x7b, 0xf5, 0xb8, - 0xf7, 0x7b, 0xf5, 0xb8, 0xf7, 0x7b, 0xf5, 0xb8, 0xf7, 0x7b, 0xf9, 0xb8, - 0xf8, 0x7b, 0xfa, 0xb8, 0xf8, 0x7b, 0xf9, 0xb8, 0xf8, 0x7b, 0xfa, 0xb8, - 0xf8, 0x7b, 0xf9, 0xb8, 0xf8, 0x7b, 0xfa, 0xb8, 0xf9, 0x7b, 0xf9, 0xb8, - 0xf9, 0x7b, 0xfa, 0xb8, 0xf9, 0x7b, 0xf9, 0xb8, 0xf9, 0x7b, 0xfa, 0xb8, - 0xf9, 0x7b, 0xfa, 0xb8, 0xf9, 0x7b, 0xfa, 0xb8, 0xf9, 0x7b, 0xfa, 0xb8, - 0xf9, 0x7b, 0xfa, 0xb8, 0xf9, 0x7b, 0xfb, 0xb8, 0xf9, 0x7b, 0xfb, 0xb8, - 0xf9, 0x7b, 0xfb, 0xb8, 0xf9, 0x7b, 0xfb, 0xb8, 0xf9, 0x7b, 0xfc, 0xb8, - 0xf9, 0x7b, 0xfc, 0xb8, 0xf9, 0x7b, 0xfc, 0xb8, 0xf9, 0x7b, 0xfc, 0xb8, - 0xf9, 0x7b, 0xfc, 0xb8, 0xf9, 0x7b, 0xfd, 0xb8, 0xf9, 0x7b, 0xfd, 0xb8, - 0xf9, 0x7b, 0xfd, 0xb6, 0xfa, 0x7b, 0xfd, 0xb8, 0xf9, 0x7b, 0xfe, 0xb6, - 0xfa, 0x7b, 0xfe, 0xb8, 0xf9, 0x7b, 0xfe, 0xb6, 0xfa, 0x7b, 0xfe, 0xb8, - 0xf9, 0x7b, 0xfe, 0xb6, 0xfa, 0x7b, 0xff, 0xb8, 0xf9, 0x7b, 0xff, 0xb6, - 0xfa, 0x7b, 0x03, 0xc1, 0x91, 0x7b, 0x0a, 0xbf, 0x91, 0x7b, 0x0f, 0xc1, - 0x91, 0x7b, 0x14, 0xbf, 0x91, 0x7b, 0x17, 0xc1, 0x91, 0x7b, 0x1b, 0xbf, - 0x91, 0x7b, 0x1e, 0xc1, 0x91, 0x7b, 0x20, 0xbf, 0x91, 0x7b, 0x23, 0xc1, - 0x91, 0x7b, 0x25, 0xbf, 0x91, 0x7b, 0x27, 0xc1, 0x91, 0x7b, 0x29, 0xbf, - 0x91, 0x7b, 0x2b, 0xc1, 0x91, 0x7b, 0x2d, 0xbf, 0x91, 0x7b, 0x2f, 0xbd, - 0x92, 0x7b, 0x31, 0xbf, 0x91, 0x7b, 0x32, 0xbd, 0x92, 0x7b, 0x34, 0xbf, - 0x91, 0x7b, 0x35, 0xbd, 0x92, 0x7b, 0x37, 0xbf, 0x91, 0x7b, 0x38, 0xbd, - 0x92, 0x7b, 0x3a, 0xbf, 0x91, 0x7b, 0x3b, 0xbd, 0x92, 0x7b, 0x3c, 0xbf, - 0x91, 0x7b, 0x3e, 0xbd, 0x92, 0x7b, 0x3f, 0xbf, 0x91, 0x7b, 0x40, 0xbd, - 0x92, 0x7b, 0x42, 0xbf, 0x91, 0x7b, 0x43, 0xbd, 0x92, 0x7b, 0x44, 0xbf, - 0x91, 0x7b, 0x45, 0xbd, 0x92, 0x7b, 0x46, 0xbf, 0x91, 0x7b, 0x47, 0xbd, - 0x92, 0x7b, 0x48, 0xbf, 0x91, 0x7b, 0x49, 0xbd, 0x92, 0x7b, 0x4a, 0xbf, - 0x91, 0x7b, 0x4b, 0xbd, 0x92, 0x7b, 0x4c, 0xbf, 0x91, 0x7b, 0x4d, 0xbd, - 0x92, 0x7b, 0x4e, 0xbf, 0x91, 0x7b, 0x4f, 0xbd, 0x92, 0x7b, 0x50, 0xbf, - 0x91, 0x7b, 0x51, 0xbd, 0x92, 0x7b, 0x52, 0xbf, 0x91, 0x7b, 0x53, 0xbd, - 0x92, 0x7b, 0x54, 0xbf, 0x91, 0x7b, 0x55, 0xbd, 0x92, 0x7b, 0x56, 0xbf, - 0x91, 0x7b, 0x57, 0xbd, 0x92, 0x7b, 0x58, 0xbf, 0x91, 0x7b, 0x58, 0xbd, - 0x92, 0x7b, 0x59, 0xbf, 0x91, 0x7b, 0x5a, 0xbd, 0x92, 0x7b, 0x5b, 0xbf, - 0x91, 0x7b, 0x5c, 0xbd, 0x92, 0x7b, 0x5d, 0xbf, 0x91, 0x7b, 0x5d, 0xbd, - 0x92, 0x7b, 0x5e, 0xbf, 0x91, 0x7b, 0x5f, 0xbd, 0x92, 0x7b, 0x60, 0xbf, - 0x91, 0x7b, 0x60, 0xbd, 0x92, 0x7b, 0x61, 0xbf, 0x91, 0x7b, 0x62, 0xbd, - 0x92, 0x7b, 0x63, 0xbf, 0x91, 0x7b, 0x63, 0xbd, 0x92, 0x7b, 0x64, 0xbf, - 0x91, 0x7b, 0x65, 0xbd, 0x92, 0x7b, 0x66, 0xbf, 0x91, 0x7b, 0x66, 0xbd, - 0x92, 0x7b, 0x67, 0xbf, 0x91, 0x7b, 0x68, 0xbd, 0x92, 0x7b, 0x68, 0xbf, - 0x91, 0x7b, 0x69, 0xbd, 0x92, 0x7b, 0x6a, 0xbf, 0x91, 0x7b, 0x6a, 0xbd, - 0x92, 0x7b, 0x6b, 0xbb, 0x92, 0x7b, 0x6c, 0xbd, 0x92, 0x7b, 0x6c, 0xbb, - 0x92, 0x7b, 0x6d, 0xbd, 0x92, 0x7b, 0x6e, 0xbb, 0x92, 0x7b, 0x6e, 0xbd, - 0x92, 0x7b, 0x6f, 0xbb, 0x92, 0x7b, 0x70, 0xbd, 0x92, 0x7b, 0x70, 0xbb, - 0x92, 0x7b, 0x71, 0xbd, 0x92, 0x7b, 0x72, 0xbb, 0x92, 0x7b, 0x72, 0xbd, - 0x92, 0x7b, 0x73, 0xbb, 0x92, 0x7b, 0x73, 0xbd, 0x92, 0x7b, 0x74, 0xbb, - 0x92, 0x7b, 0x75, 0xbd, 0x92, 0x7b, 0x75, 0xbb, 0x92, 0x7b, 0x76, 0xbd, - 0x92, 0x7b, 0x76, 0xbb, 0x92, 0x7b, 0x77, 0xbd, 0x92, 0x7b, 0x78, 0xbb, - 0x92, 0x7b, 0x78, 0xbd, 0x92, 0x7b, 0x79, 0xbb, 0x92, 0x7b, 0x79, 0xbd, - 0x92, 0x7b, 0x7a, 0xbb, 0x92, 0x7b, 0x7a, 0xbd, 0x92, 0x7b, 0x7b, 0xbb, - 0x92, 0x7b, 0x7c, 0xbd, 0x92, 0x7b, 0x7c, 0xbb, 0x92, 0x7b, 0x7d, 0xbd, - 0x92, 0x7b, 0x7d, 0xbb, 0x92, 0x7b, 0x7e, 0xbd, 0x92, 0x7b, 0x7e, 0xbb, - 0x92, 0x7b, 0x7f, 0xbd, 0x92, 0x7b, 0x7f, 0xbb, 0x92, 0x7b, 0x80, 0xbd, - 0x92, 0x7b, 0x81, 0xbb, 0x92, 0x7b, 0x81, 0xb9, 0x93, 0x7b, 0x82, 0xbb, - 0x92, 0x7b, 0x82, 0xb9, 0x93, 0x7b, 0x83, 0xbb, 0x92, 0x7b, 0x83, 0xb9, - 0x93, 0x7b, 0x84, 0xbb, 0x92, 0x7b, 0x84, 0xb9, 0x93, 0x7b, 0x85, 0xbb, - 0x92, 0x7b, 0x85, 0xb9, 0x93, 0x7b, 0x86, 0xbb, 0x92, 0x7b, 0x86, 0xb9, - 0x93, 0x7b, 0x87, 0xbb, 0x92, 0x7b, 0x87, 0xb9, 0x93, 0x7b, 0x88, 0xbb, - 0x92, 0x7b, 0x88, 0xb9, 0x93, 0x7b, 0x89, 0xbb, 0x92, 0x7b, 0x89, 0xb9, - 0x93, 0x7b, 0x8a, 0xbb, 0x92, 0x7b, 0x8a, 0xb9, 0x93, 0x7b, 0x8b, 0xbb, - 0x92, 0x7b, 0x8b, 0xb9, 0x93, 0x7b, 0x8c, 0xbb, 0x92, 0x7b, 0x8c, 0xb9, - 0x93, 0x7b, 0x8d, 0xbb, 0x92, 0x7b, 0x8d, 0xb9, 0x93, 0x7b, 0x8e, 0xbb, - 0x92, 0x7b, 0x8e, 0xb9, 0x93, 0x7b, 0x8e, 0xbb, 0x92, 0x7b, 0x8f, 0xb9, - 0x93, 0x7b, 0x8f, 0xb9, 0x93, 0x7b, 0x90, 0xb9, 0x93, 0x7b, 0x90, 0xb9, - 0x93, 0x7b, 0x91, 0xb9, 0x93, 0x7b, 0x91, 0xb9, 0x93, 0x7b, 0x92, 0xb9, - 0x93, 0x7b, 0x92, 0xb9, 0x93, 0x7b, 0x93, 0xb9, 0x93, 0x7a, 0x92, 0xb9, - 0x93, 0x7b, 0x93, 0xb9, 0x94, 0x7a, 0x95, 0xb9, 0x94, 0x7a, 0x94, 0xb9, - 0x94, 0x7a, 0x95, 0xb9, 0x95, 0x7a, 0x95, 0xb9, 0x95, 0x7a, 0x96, 0xb9, - 0x96, 0x7a, 0x96, 0xb9, 0x96, 0x7a, 0x97, 0xb9, 0x97, 0x7a, 0x97, 0xb9, - 0x97, 0x7a, 0x98, 0xb9, 0x98, 0x7a, 0x98, 0xb9, 0x98, 0x7a, 0x98, 0xb9, - 0x98, 0x7b, 0x99, 0xb9, 0x99, 0x7b, 0x99, 0xb9, 0x99, 0x7b, 0x9a, 0xb9, - 0x9a, 0x7b, 0x9a, 0xb9, 0x9a, 0x7b, 0x9a, 0xb9, 0x9a, 0x7b, 0x9b, 0xb9, - 0x9b, 0x7b, 0x9b, 0xb9, 0x9b, 0x7b, 0x9c, 0xb9, 0x9c, 0x7b, 0x9c, 0xb9, - 0x9c, 0x7b, 0x9d, 0xb9, 0x9d, 0x7b, 0x9d, 0xb9, 0x9d, 0x7b, 0x9d, 0xb9, - 0x9d, 0x7b, 0x9e, 0xb9, 0x9d, 0x7b, 0x9e, 0xba, 0x9e, 0x7b, 0x9f, 0xba, - 0x9f, 0x7b, 0x9f, 0xba, 0x9f, 0x7b, 0x9f, 0xba, 0x9f, 0x7b, 0xa0, 0xba, - 0xa0, 0x7b, 0xa0, 0xba, 0xa0, 0x7b, 0xa1, 0xba, 0xa1, 0x7b, 0xa1, 0xba, - 0xa1, 0x7b, 0xa1, 0xba, 0xa1, 0x7b, 0xa2, 0xba, 0xa1, 0x7b, 0xa2, 0xba, - 0xa1, 0x7b, 0xa3, 0xba, 0xa1, 0x7b, 0xa3, 0xba, 0xa1, 0x7b, 0xa3, 0xbb, - 0xa3, 0x7b, 0xa4, 0xbb, 0xa4, 0x7b, 0xa4, 0xbb, 0xa4, 0x7b, 0xa5, 0xbb, - 0xa5, 0x7b, 0xa5, 0xbb, 0xa5, 0x7b, 0xa5, 0xbb, 0xa5, 0x7b, 0xa6, 0xbb, - 0xa6, 0x7b, 0xa6, 0xbb, 0xa5, 0x7b, 0xa6, 0xbb, 0xa6, 0x7b, 0xa7, 0xbb, - 0xa5, 0x7b, 0xa7, 0xbb, 0xa6, 0x7b, 0xa8, 0xb9, 0xaa, 0x7b, 0xa8, 0xb9, - 0xaa, 0x7b, 0xa8, 0xb9, 0xaa, 0x7b, 0xa9, 0xb9, 0xaa, 0x7b, 0xa9, 0xb9, - 0xaa, 0x7b, 0xaa, 0xb9, 0xaa, 0x7b, 0xaa, 0xb9, 0xaa, 0x7a, 0xaa, 0xb9, - 0xaa, 0x7b, 0xaa, 0xb9, 0xab, 0x7a, 0xaa, 0xb9, 0xab, 0x7b, 0xaa, 0xb9, - 0xab, 0x7a, 0xaa, 0xb9, 0xac, 0x7b, 0xaa, 0xb9, 0xac, 0x7a, 0xaa, 0xb9, - 0xac, 0x7b, 0xaa, 0xb9, 0xad, 0x7a, 0xaa, 0xb9, 0xad, 0x7b, 0xaa, 0xb9, - 0xae, 0x7a, 0xaa, 0xb9, 0xae, 0x7b, 0xaa, 0xb9, 0xae, 0x7a, 0xaa, 0xb9, - 0xaf, 0x7b, 0xaa, 0xb9, 0xaf, 0x7a, 0xaa, 0xb9, 0xaf, 0x7b, 0xaa, 0xb9, - 0xb0, 0x7a, 0xaa, 0xb9, 0xb0, 0x77, 0xaa, 0xb9, 0xb0, 0x7a, 0xaa, 0xb9, - 0xb1, 0x77, 0xaa, 0xb9, 0xb1, 0x7a, 0xaa, 0xb9, 0xb2, 0x77, 0xb2, 0xb9, - 0xb2, 0x70, 0xb2, 0xb9, 0xb2, 0x70, 0xb3, 0xb9, 0xb3, 0x70, 0xb6, 0xb9, - 0xb3, 0x71, 0xb6, 0xb9, 0xb3, 0x71, 0xb6, 0xb9, 0xb4, 0x71, 0xb6, 0xb9, - 0xb4, 0x71, 0xb6, 0xb9, 0xb4, 0x71, 0xb6, 0xb9, 0xb5, 0x71, 0xb6, 0xb9, - 0xb5, 0x71, 0xb6, 0xb9, 0xb5, 0x71, 0xb6, 0xb9, 0xb6, 0x71, 0xb6, 0xb9, - 0xb6, 0x71, 0xb6, 0xb9, 0xb6, 0x71, 0xb7, 0xb9, 0xb7, 0x71, 0xba, 0xb9, - 0xb7, 0x72, 0xba, 0xb9, 0xb7, 0x72, 0xba, 0xb9, 0xb8, 0x72, 0xba, 0xb9, - 0xb8, 0x72, 0xba, 0xb9, 0xb8, 0x72, 0xba, 0xb9, 0xb9, 0x72, 0xba, 0xb9, - 0xb9, 0x72, 0xba, 0xb9, 0xb9, 0x72, 0xba, 0xb9, 0xba, 0x72, 0xba, 0xb9, - 0xba, 0x72, 0xba, 0xb9, 0xba, 0x72, 0xbd, 0xb9, 0xbb, 0x73, 0xbe, 0xb9, - 0xbb, 0x73, 0xbd, 0xb9, 0xbb, 0x73, 0xbe, 0xb9, 0xbc, 0x73, 0xbd, 0xb9, - 0xbc, 0x73, 0xbe, 0xb9, 0xbc, 0x73, 0xbd, 0xb9, 0xbd, 0x73, 0xbe, 0xb9, - 0xbd, 0x73, 0xbd, 0xb9, 0xbd, 0x73, 0xbe, 0xb9, 0xbe, 0x73, 0xbe, 0xb9, - 0xbe, 0x73, 0xbe, 0xb9, 0xbe, 0x73, 0xbf, 0xb9, 0xbf, 0x73, 0xc1, 0xb9, - 0xbf, 0x74, 0xc1, 0xb9, 0xbf, 0x74, 0xc1, 0xb9, 0xc0, 0x74, 0xc1, 0xb9, - 0xc0, 0x74, 0xc1, 0xb9, 0xc0, 0x74, 0xc1, 0xb9, 0xc1, 0x74, 0xc1, 0xb9, - 0xc1, 0x74, 0xc1, 0xb9, 0xc1, 0x74, 0xc1, 0xb9, 0xc1, 0x74, 0xc2, 0xb9, - 0xc2, 0x74, 0xc2, 0xb9, 0xc2, 0x74, 0xc4, 0xb9, 0xc2, 0x75, 0xc5, 0xb9, - 0xc3, 0x75, 0xc4, 0xb9, 0xc3, 0x75, 0xc5, 0xb9, 0xc3, 0x75, 0xc4, 0xb9, - 0xc4, 0x75, 0xc5, 0xb9, 0xc4, 0x75, 0xc4, 0xb9, 0xc4, 0x75, 0xc5, 0xb9, - 0xc5, 0x75, 0xc5, 0xb9, 0xc5, 0x75, 0xc5, 0xb9, 0xc5, 0x75, 0xc6, 0xb9, - 0xc6, 0x75, 0xc8, 0xb9, 0xc6, 0x76, 0xc8, 0xb9, 0xc6, 0x76, 0xc8, 0xb9, - 0xc6, 0x76, 0xc8, 0xb9, 0xc7, 0x76, 0xc8, 0xb9, 0xc7, 0x76, 0xc8, 0xb9, - 0xc7, 0x76, 0xc8, 0xb9, 0xc8, 0x76, 0xc8, 0xb9, 0xc8, 0x76, 0xc8, 0xb9, - 0xc8, 0x76, 0xc9, 0xb9, 0xc9, 0x76, 0xc9, 0xb9, 0xc9, 0x76, 0xc9, 0xb9, - 0xc9, 0x76, 0xc9, 0xb9, 0xc9, 0x76, 0xcb, 0xb9, 0xca, 0x77, 0xcb, 0xb9, - 0xca, 0x77, 0xcb, 0xb9, 0xca, 0x77, 0xcb, 0xb9, 0xcb, 0x77, 0xcb, 0xb9, - 0xcb, 0x77, 0xcb, 0xb9, 0xcb, 0x77, 0xcc, 0xb9, 0xcc, 0x77, 0xcc, 0xb9, - 0xcc, 0x77, 0xcc, 0xb9, 0xcc, 0x77, 0xcc, 0xb9, 0xcc, 0x77, 0xcd, 0xb9, - 0xcd, 0x77, 0xce, 0xb9, 0xcd, 0x78, 0xce, 0xb9, 0xcd, 0x78, 0xce, 0xb9, - 0xce, 0x78, 0xce, 0xb9, 0xce, 0x78, 0xce, 0xb9, 0xce, 0x78, 0xce, 0xb9, - 0xce, 0x78, 0xce, 0xb9, 0xcf, 0x78, 0xce, 0xb9, 0xcf, 0x78, 0xce, 0xb9, - 0xcf, 0x78, 0xce, 0xb9, 0xd0, 0x78, 0xce, 0xb9, 0xd0, 0x78, 0xce, 0xb9, - 0xd0, 0x78, 0xce, 0xb9, 0xd0, 0x78, 0xce, 0xb9, 0xd1, 0x78, 0xce, 0xb9, - 0xd1, 0x78, 0xce, 0xb9, 0xd1, 0x78, 0xce, 0xb9, 0xd2, 0x78, 0xce, 0xb9, - 0xd2, 0x78, 0xce, 0xb9, 0xd2, 0x78, 0xce, 0xb9, 0xd2, 0x78, 0xce, 0xb9, - 0xd3, 0x78, 0xce, 0xb9, 0xd3, 0x78, 0xce, 0xb9, 0xd3, 0x78, 0xce, 0xb9, - 0xd4, 0x78, 0xce, 0xb9, 0xd4, 0x78, 0xce, 0xb9, 0xd4, 0x78, 0xce, 0xb9, - 0xd4, 0x78, 0xce, 0xb9, 0xd5, 0x78, 0xce, 0xb9, 0xd5, 0x78, 0xce, 0xb9, - 0xd5, 0x78, 0xce, 0xb9, 0xd6, 0x78, 0xce, 0xb9, 0xd6, 0x78, 0xce, 0xb9, - 0xd6, 0x78, 0xce, 0xb9, 0xd6, 0x78, 0xcf, 0xb9, 0xd7, 0x75, 0xce, 0xb9, - 0xd7, 0x78, 0xcf, 0xb9, 0xd7, 0x75, 0xce, 0xb9, 0xd7, 0x78, 0xcf, 0xb9, - 0xd8, 0x75, 0xce, 0xb9, 0xd8, 0x78, 0xcf, 0xb9, 0xd8, 0x75, 0xce, 0xb9, - 0xd9, 0x78, 0xcf, 0xb9, 0xd9, 0x75, 0xce, 0xb9, 0xd9, 0x78, 0xcf, 0xb9, - 0xd9, 0x75, 0xce, 0xb9, 0xda, 0x78, 0xcf, 0xb9, 0xda, 0x75, 0xce, 0xb9, - 0xda, 0x78, 0xcf, 0xb9, 0xda, 0x75, 0xce, 0xb9, 0xdb, 0x78, 0xcf, 0xb9, - 0xdb, 0x75, 0xce, 0xb9, 0xdb, 0x78, 0xcf, 0xb9, 0xdb, 0x75, 0xce, 0xb9, - 0xdc, 0x78, 0xcf, 0xb9, 0xdc, 0x75, 0xce, 0xb9, 0xdc, 0x78, 0xcf, 0xb9, - 0xdd, 0x75, 0xd9, 0xb9, 0xdd, 0x94, 0xdc, 0xb9, 0xdd, 0x95, 0xea, 0xb9, - 0xdd, 0x82, 0xea, 0xb9, 0xde, 0x7e, 0xea, 0xb9, 0xde, 0x82, 0xea, 0xb9, - 0xde, 0x7e, 0xeb, 0xb9, 0xde, 0x7b, 0xea, 0xb9, 0xdf, 0x7e, 0xeb, 0xb9, - 0xdf, 0x7b, 0xea, 0xb9, 0xdf, 0x7e, 0xeb, 0xb9, 0xdf, 0x7b, 0xea, 0xb9, - 0xe0, 0x7e, 0xeb, 0xb9, 0xe0, 0x7b, 0xea, 0xb9, 0xe0, 0x7e, 0xeb, 0xb9, - 0xe1, 0x7b, 0xea, 0xb9, 0xe1, 0x7e, 0xeb, 0xb9, 0xe1, 0x7b, 0xea, 0xb9, - 0xe1, 0x7e, 0xeb, 0xb9, 0xe2, 0x7b, 0xea, 0xb9, 0xe2, 0x7e, 0xeb, 0xb9, - 0xe2, 0x7b, 0xea, 0xb9, 0xe2, 0x7e, 0xeb, 0xb9, 0xe3, 0x7b, 0xea, 0xb9, - 0xe3, 0x7e, 0xeb, 0xb9, 0xe3, 0x7b, 0xea, 0xb9, 0xe3, 0x7e, 0xeb, 0xb9, - 0xe4, 0x7b, 0xea, 0xb9, 0xe4, 0x7e, 0xeb, 0xb9, 0xe4, 0x7b, 0xea, 0xb9, - 0xe4, 0x7e, 0xeb, 0xb9, 0xe5, 0x7b, 0xea, 0xb9, 0xe5, 0x7e, 0xeb, 0xb9, - 0xe5, 0x7b, 0xea, 0xb9, 0xe5, 0x7e, 0xeb, 0xb9, 0xe6, 0x7b, 0xea, 0xb9, - 0xe6, 0x7e, 0xeb, 0xb9, 0xe6, 0x7b, 0xea, 0xb9, 0xe6, 0x7e, 0xeb, 0xb9, - 0xe7, 0x7b, 0xea, 0xb9, 0xe7, 0x7e, 0xeb, 0xb9, 0xe7, 0x7b, 0xea, 0xb9, - 0xe7, 0x7e, 0xeb, 0xb9, 0xe8, 0x7b, 0xea, 0xb9, 0xe8, 0x7e, 0xeb, 0xb9, - 0xe8, 0x7b, 0xea, 0xb9, 0xe8, 0x7e, 0xeb, 0xb9, 0xe9, 0x7b, 0xeb, 0xb9, - 0xe9, 0x7b, 0xeb, 0xb9, 0xe9, 0x7b, 0xeb, 0xb9, 0xe9, 0x7b, 0xeb, 0xb9, - 0xea, 0x7b, 0xeb, 0xb9, 0xea, 0x7b, 0xeb, 0xb9, 0xea, 0x7b, 0xeb, 0xb9, - 0xea, 0x7b, 0xeb, 0xb9, 0xea, 0x7b, 0xeb, 0xb9, 0xea, 0x7b, 0xeb, 0xb9, - 0xea, 0x7b, 0xeb, 0xb9, 0xea, 0x7b, 0xec, 0xb7, 0xeb, 0x7b, 0xec, 0xb9, - 0xea, 0x7b, 0xec, 0xb7, 0xeb, 0x7b, 0xec, 0xb9, 0xea, 0x7b, 0xec, 0xb7, - 0xeb, 0x7b, 0xed, 0xb9, 0xea, 0x7b, 0xed, 0xb7, 0xeb, 0x7b, 0xed, 0xb9, - 0xea, 0x7b, 0xed, 0xb7, 0xeb, 0x7b, 0xee, 0xb9, 0xea, 0x7b, 0xee, 0xb7, - 0xeb, 0x7b, 0xee, 0xb9, 0xea, 0x7b, 0xee, 0xb7, 0xeb, 0x7b, 0xef, 0xb9, - 0xea, 0x7b, 0xef, 0xb7, 0xeb, 0x7b, 0xef, 0xb9, 0xea, 0x7b, 0xef, 0xb7, - 0xeb, 0x7b, 0xf0, 0xb9, 0xea, 0x7b, 0xf0, 0xb7, 0xeb, 0x7b, 0xf0, 0xb9, - 0xea, 0x7b, 0xf0, 0xb9, 0xf5, 0x7b, 0xf1, 0xb9, 0xf6, 0x7b, 0xf1, 0xb9, - 0xf5, 0x7b, 0xf1, 0xb9, 0xf6, 0x7b, 0xf1, 0xb9, 0xf5, 0x7b, 0xf2, 0xb9, - 0xf6, 0x7b, 0xf2, 0xb9, 0xf5, 0x7b, 0xf2, 0xb9, 0xf6, 0x7b, 0xf2, 0xb9, - 0xf5, 0x7b, 0xf2, 0xb9, 0xf6, 0x7b, 0xf3, 0xb9, 0xf5, 0x7b, 0xf3, 0xb9, - 0xf6, 0x7b, 0xf3, 0xb9, 0xf5, 0x7b, 0xf3, 0xb9, 0xf6, 0x7b, 0xf4, 0xb9, - 0xf5, 0x7b, 0xf4, 0xb9, 0xf6, 0x7b, 0xf4, 0xb9, 0xf5, 0x7b, 0xf4, 0xb9, - 0xf6, 0x7b, 0xf5, 0xb9, 0xf5, 0x7b, 0xf5, 0xb9, 0xf6, 0x7b, 0xf5, 0xb9, - 0xf5, 0x7b, 0xf5, 0xb9, 0xf6, 0x7b, 0xf5, 0xb9, 0xf6, 0x7b, 0xf5, 0xb9, - 0xf6, 0x7b, 0xf5, 0xb9, 0xf6, 0x7b, 0xf5, 0xb9, 0xf6, 0x7b, 0xf5, 0xb9, - 0xf6, 0x7b, 0xf5, 0xb9, 0xf7, 0x7b, 0xf5, 0xb9, 0xf7, 0x7b, 0xf5, 0xb9, - 0xf7, 0x7b, 0xf5, 0xb9, 0xf7, 0x7b, 0xf9, 0xb9, 0xf8, 0x7b, 0xf9, 0xb9, - 0xf8, 0x7d, 0xf9, 0xb9, 0xf8, 0x7b, 0xf9, 0xb9, 0xf8, 0x7d, 0xf9, 0xb9, - 0xf8, 0x7b, 0xfa, 0xb9, 0xf9, 0x7b, 0xf9, 0xb9, 0xf9, 0x7b, 0xfa, 0xb9, - 0xf9, 0x7b, 0xf9, 0xb9, 0xf9, 0x7b, 0xfa, 0xb9, 0xf9, 0x7b, 0xfa, 0xb9, - 0xf9, 0x7b, 0xfa, 0xb9, 0xf9, 0x7b, 0xfa, 0xb7, 0xf9, 0x7b, 0xfa, 0xb9, - 0xf9, 0x7b, 0xfb, 0xb7, 0xf9, 0x7b, 0xfb, 0xb9, 0xf9, 0x7b, 0xfb, 0xb7, - 0xf9, 0x7b, 0xfb, 0xb9, 0xf9, 0x7b, 0xfc, 0xb7, 0xf9, 0x7b, 0xfc, 0xb9, - 0xf9, 0x7b, 0xfc, 0xb7, 0xf9, 0x7b, 0xfc, 0xb9, 0xf9, 0x7b, 0xfc, 0xb7, - 0xf9, 0x7b, 0xfd, 0xb9, 0xf9, 0x7b, 0xfd, 0xb7, 0xf9, 0x7b, 0xfd, 0xb9, - 0xf9, 0x7b, 0xfd, 0xb7, 0xf9, 0x7b, 0xfe, 0xb9, 0xf9, 0x7b, 0xfe, 0xb7, - 0xf9, 0x7b, 0xfe, 0xb9, 0xf9, 0x7b, 0xfe, 0xb7, 0xf9, 0x7b, 0xfe, 0xb9, - 0xf9, 0x7b, 0xff, 0xb7, 0xf9, 0x7b, 0xff, 0xb5, 0xfa, 0x7b, 0x03, 0xc1, - 0x91, 0x7c, 0x0a, 0xc1, 0x91, 0x7c, 0x0f, 0xc1, 0x91, 0x7c, 0x14, 0xc1, - 0x91, 0x7c, 0x17, 0xc1, 0x91, 0x7c, 0x1b, 0xc1, 0x91, 0x7c, 0x1e, 0xc1, - 0x91, 0x7c, 0x20, 0xc1, 0x91, 0x7c, 0x23, 0xc1, 0x91, 0x7c, 0x25, 0xc1, - 0x91, 0x7c, 0x27, 0xc1, 0x91, 0x7c, 0x29, 0xc1, 0x91, 0x7c, 0x2b, 0xc1, - 0x91, 0x7c, 0x2d, 0xc1, 0x91, 0x7c, 0x2f, 0xc1, 0x91, 0x7c, 0x31, 0xbf, - 0x91, 0x7c, 0x32, 0xc1, 0x91, 0x7c, 0x34, 0xbf, 0x91, 0x7c, 0x35, 0xc1, - 0x91, 0x7c, 0x37, 0xbf, 0x91, 0x7c, 0x38, 0xc1, 0x91, 0x7c, 0x3a, 0xbf, - 0x91, 0x7c, 0x3b, 0xc1, 0x91, 0x7c, 0x3c, 0xbf, 0x91, 0x7c, 0x3e, 0xc1, - 0x91, 0x7c, 0x3f, 0xbf, 0x91, 0x7c, 0x40, 0xc1, 0x91, 0x7c, 0x42, 0xbf, - 0x91, 0x7c, 0x43, 0xc1, 0x91, 0x7c, 0x44, 0xbf, 0x91, 0x7c, 0x45, 0xc1, - 0x91, 0x7c, 0x46, 0xbf, 0x91, 0x7c, 0x47, 0xc1, 0x91, 0x7c, 0x48, 0xbf, - 0x91, 0x7c, 0x49, 0xc1, 0x91, 0x7c, 0x4a, 0xbf, 0x91, 0x7c, 0x4b, 0xc1, - 0x91, 0x7c, 0x4c, 0xbf, 0x91, 0x7c, 0x4d, 0xbd, 0x92, 0x7c, 0x4e, 0xbf, - 0x91, 0x7c, 0x4f, 0xbd, 0x92, 0x7c, 0x50, 0xbf, 0x91, 0x7c, 0x51, 0xbd, - 0x92, 0x7c, 0x52, 0xbf, 0x91, 0x7c, 0x53, 0xbd, 0x92, 0x7c, 0x54, 0xbf, - 0x91, 0x7c, 0x55, 0xbd, 0x92, 0x7c, 0x56, 0xbf, 0x91, 0x7c, 0x57, 0xbd, - 0x92, 0x7c, 0x58, 0xbf, 0x91, 0x7c, 0x58, 0xbd, 0x92, 0x7c, 0x59, 0xbf, - 0x91, 0x7c, 0x5a, 0xbd, 0x92, 0x7c, 0x5b, 0xbf, 0x91, 0x7c, 0x5c, 0xbd, - 0x92, 0x7c, 0x5d, 0xbf, 0x91, 0x7c, 0x5d, 0xbd, 0x92, 0x7c, 0x5e, 0xbf, - 0x91, 0x7c, 0x5f, 0xbd, 0x92, 0x7c, 0x60, 0xbf, 0x91, 0x7c, 0x60, 0xbd, - 0x92, 0x7c, 0x61, 0xbf, 0x91, 0x7c, 0x62, 0xbd, 0x92, 0x7c, 0x63, 0xbf, - 0x91, 0x7c, 0x63, 0xbd, 0x92, 0x7c, 0x64, 0xbf, 0x91, 0x7c, 0x65, 0xbd, - 0x92, 0x7c, 0x66, 0xbf, 0x91, 0x7c, 0x66, 0xbd, 0x92, 0x7c, 0x67, 0xbf, - 0x91, 0x7c, 0x68, 0xbd, 0x92, 0x7c, 0x68, 0xba, 0x92, 0x7c, 0x69, 0xbd, - 0x92, 0x7c, 0x6a, 0xba, 0x92, 0x7c, 0x6a, 0xbd, 0x92, 0x7c, 0x6b, 0xba, - 0x92, 0x7c, 0x6c, 0xbd, 0x92, 0x7c, 0x6c, 0xba, 0x92, 0x7c, 0x6d, 0xbd, - 0x92, 0x7c, 0x6e, 0xba, 0x92, 0x7c, 0x6e, 0xbd, 0x92, 0x7c, 0x6f, 0xba, - 0x92, 0x7c, 0x70, 0xbd, 0x92, 0x7c, 0x70, 0xba, 0x92, 0x7c, 0x71, 0xbd, - 0x92, 0x7c, 0x72, 0xba, 0x92, 0x7c, 0x72, 0xbd, 0x92, 0x7c, 0x73, 0xba, - 0x92, 0x7c, 0x73, 0xbd, 0x92, 0x7c, 0x74, 0xba, 0x92, 0x7c, 0x75, 0xbd, - 0x92, 0x7c, 0x75, 0xba, 0x92, 0x7c, 0x76, 0xbd, 0x92, 0x7c, 0x76, 0xba, - 0x92, 0x7c, 0x77, 0xbd, 0x92, 0x7c, 0x78, 0xba, 0x92, 0x7c, 0x78, 0xbd, - 0x92, 0x7c, 0x79, 0xba, 0x92, 0x7c, 0x79, 0xbd, 0x92, 0x7c, 0x7a, 0xba, - 0x92, 0x7c, 0x7a, 0xbd, 0x92, 0x7c, 0x7b, 0xba, 0x92, 0x7c, 0x7c, 0xbd, - 0x92, 0x7c, 0x7c, 0xba, 0x92, 0x7c, 0x7d, 0xbd, 0x92, 0x7c, 0x7d, 0xba, - 0x92, 0x7c, 0x7e, 0xbd, 0x92, 0x7c, 0x7e, 0xba, 0x92, 0x7c, 0x7f, 0xbd, - 0x92, 0x7c, 0x7f, 0xba, 0x92, 0x7c, 0x80, 0xbd, 0x92, 0x7c, 0x81, 0xba, - 0x92, 0x7c, 0x81, 0xb9, 0x93, 0x7c, 0x82, 0xba, 0x92, 0x7c, 0x82, 0xb9, - 0x93, 0x7c, 0x83, 0xba, 0x92, 0x7c, 0x83, 0xb9, 0x93, 0x7c, 0x84, 0xba, - 0x92, 0x7c, 0x84, 0xb9, 0x93, 0x7c, 0x85, 0xba, 0x92, 0x7c, 0x85, 0xb9, - 0x93, 0x7c, 0x86, 0xba, 0x92, 0x7c, 0x86, 0xb9, 0x93, 0x7c, 0x87, 0xba, - 0x92, 0x7c, 0x87, 0xb9, 0x93, 0x7c, 0x88, 0xba, 0x92, 0x7c, 0x88, 0xb9, - 0x93, 0x7c, 0x89, 0xba, 0x92, 0x7c, 0x89, 0xb9, 0x93, 0x7c, 0x8a, 0xba, - 0x92, 0x7c, 0x8a, 0xb9, 0x93, 0x7c, 0x8b, 0xba, 0x92, 0x7c, 0x8b, 0xb9, - 0x93, 0x7c, 0x8c, 0xba, 0x92, 0x7c, 0x8c, 0xb9, 0x93, 0x7c, 0x8d, 0xba, - 0x92, 0x7c, 0x8d, 0xb9, 0x93, 0x7c, 0x8e, 0xba, 0x92, 0x7c, 0x8e, 0xb9, - 0x93, 0x7c, 0x8e, 0xba, 0x92, 0x7c, 0x8f, 0xb9, 0x93, 0x7c, 0x8f, 0xba, - 0x92, 0x7c, 0x90, 0xb9, 0x93, 0x7c, 0x90, 0xba, 0x92, 0x7c, 0x91, 0xb9, - 0x93, 0x7c, 0x91, 0xb9, 0x93, 0x7c, 0x92, 0xb9, 0x93, 0x7c, 0x92, 0xb9, - 0x93, 0x7c, 0x92, 0xb9, 0x93, 0x7c, 0x92, 0xb9, 0x93, 0x7c, 0x92, 0xb9, - 0x94, 0x7c, 0x92, 0xb9, 0x94, 0x7c, 0x94, 0xb9, 0x94, 0x7a, 0x95, 0xb9, - 0x95, 0x7a, 0x96, 0xb9, 0x95, 0x7b, 0x97, 0xb9, 0x96, 0x7b, 0x96, 0xb9, - 0x96, 0x7b, 0x97, 0xb9, 0x97, 0x7b, 0x97, 0xb9, 0x97, 0x7b, 0x98, 0xb9, - 0x98, 0x7b, 0x98, 0xb9, 0x98, 0x7b, 0x98, 0xb9, 0x98, 0x7b, 0x99, 0xb9, - 0x99, 0x7b, 0x99, 0xb9, 0x99, 0x7b, 0x9a, 0xb9, 0x9a, 0x7b, 0x9a, 0xb9, - 0x9a, 0x7b, 0x9a, 0xb9, 0x9a, 0x7b, 0x9b, 0xba, 0x9b, 0x7c, 0x9b, 0xba, - 0x9b, 0x7c, 0x9c, 0xba, 0x9c, 0x7c, 0x9c, 0xba, 0x9c, 0x7c, 0x9d, 0xba, - 0x9d, 0x7c, 0x9d, 0xba, 0x9d, 0x7c, 0x9d, 0xba, 0x9d, 0x7c, 0x9e, 0xba, - 0x9e, 0x7c, 0x9e, 0xba, 0x9e, 0x7c, 0x9f, 0xba, 0x9f, 0x7c, 0x9f, 0xba, - 0x9f, 0x7c, 0x9f, 0xba, 0x9f, 0x7c, 0xa0, 0xba, 0x9f, 0x7c, 0xa0, 0xba, - 0xa0, 0x7c, 0xa1, 0xba, 0xa1, 0x7c, 0xa1, 0xba, 0xa1, 0x7c, 0xa1, 0xba, - 0xa1, 0x7c, 0xa2, 0xba, 0xa2, 0x7c, 0xa2, 0xba, 0xa2, 0x7c, 0xa3, 0xba, - 0xa3, 0x7c, 0xa3, 0xba, 0xa3, 0x7c, 0xa3, 0xba, 0xa3, 0x7c, 0xa4, 0xba, - 0xa3, 0x7c, 0xa4, 0xba, 0xa3, 0x7c, 0xa5, 0xba, 0xa3, 0x7c, 0xa5, 0xba, - 0xa3, 0x7c, 0xa5, 0xbb, 0xa5, 0x7c, 0xa6, 0xbb, 0xa6, 0x7c, 0xa6, 0xbb, - 0xa6, 0x7c, 0xa6, 0xbb, 0xa6, 0x7c, 0xa7, 0xbb, 0xa7, 0x7c, 0xa7, 0xbb, - 0xa7, 0x7c, 0xa8, 0xbb, 0xa8, 0x7c, 0xa8, 0xb9, 0xaa, 0x7c, 0xa8, 0xb9, - 0xaa, 0x7c, 0xa9, 0xb9, 0xaa, 0x7c, 0xa9, 0xb9, 0xaa, 0x7c, 0xaa, 0xb9, - 0xaa, 0x7c, 0xaa, 0xb9, 0xaa, 0x7b, 0xaa, 0xb9, 0xaa, 0x7c, 0xaa, 0xb9, - 0xab, 0x7b, 0xaa, 0xb9, 0xab, 0x7c, 0xaa, 0xb9, 0xab, 0x7b, 0xaa, 0xb9, - 0xac, 0x7c, 0xaa, 0xb9, 0xac, 0x7b, 0xaa, 0xb9, 0xac, 0x7c, 0xaa, 0xb9, - 0xad, 0x7b, 0xaa, 0xb9, 0xad, 0x7c, 0xaa, 0xb9, 0xae, 0x7b, 0xaa, 0xb9, - 0xae, 0x7c, 0xaa, 0xb9, 0xae, 0x7b, 0xaa, 0xb9, 0xaf, 0x7c, 0xaa, 0xb9, - 0xaf, 0x7b, 0xaa, 0xb9, 0xaf, 0x7c, 0xaa, 0xb9, 0xb0, 0x7b, 0xaa, 0xb9, - 0xb0, 0x78, 0xaa, 0xb9, 0xb0, 0x7b, 0xaa, 0xb9, 0xb1, 0x78, 0xaa, 0xb9, - 0xb1, 0x7b, 0xaa, 0xb9, 0xb2, 0x78, 0xaa, 0xb9, 0xb2, 0x7b, 0xb4, 0xb9, - 0xb2, 0x71, 0xb4, 0xb9, 0xb3, 0x71, 0xb4, 0xb9, 0xb3, 0x71, 0xb4, 0xb9, - 0xb3, 0x71, 0xb4, 0xb9, 0xb4, 0x71, 0xb4, 0xb9, 0xb4, 0x71, 0xb4, 0xb9, - 0xb4, 0x71, 0xb5, 0xb9, 0xb5, 0x71, 0xb8, 0xb9, 0xb5, 0x72, 0xb8, 0xb9, - 0xb5, 0x72, 0xb8, 0xb9, 0xb6, 0x72, 0xb8, 0xb9, 0xb6, 0x72, 0xb8, 0xb9, - 0xb6, 0x72, 0xb8, 0xb9, 0xb7, 0x72, 0xb8, 0xb9, 0xb7, 0x72, 0xb8, 0xb9, - 0xb7, 0x72, 0xb8, 0xb9, 0xb8, 0x72, 0xb8, 0xb9, 0xb8, 0x72, 0xb8, 0xb9, - 0xb8, 0x72, 0xbb, 0xb9, 0xb9, 0x73, 0xbc, 0xb9, 0xb9, 0x73, 0xbb, 0xb9, - 0xb9, 0x73, 0xbc, 0xb9, 0xba, 0x73, 0xbb, 0xb9, 0xba, 0x73, 0xbc, 0xb9, - 0xba, 0x73, 0xbb, 0xb9, 0xbb, 0x73, 0xbc, 0xb9, 0xbb, 0x73, 0xbb, 0xb9, - 0xbb, 0x73, 0xbc, 0xb9, 0xbc, 0x73, 0xbc, 0xb9, 0xbc, 0x73, 0xbf, 0xb9, - 0xbc, 0x74, 0xbf, 0xb9, 0xbd, 0x74, 0xbf, 0xb9, 0xbd, 0x74, 0xbf, 0xb9, - 0xbd, 0x74, 0xbf, 0xb9, 0xbe, 0x74, 0xbf, 0xb9, 0xbe, 0x74, 0xbf, 0xb9, - 0xbe, 0x74, 0xbf, 0xb9, 0xbf, 0x74, 0xbf, 0xb9, 0xbf, 0x74, 0xbf, 0xb9, - 0xbf, 0x74, 0xc0, 0xb9, 0xc0, 0x74, 0xc0, 0xb9, 0xc0, 0x74, 0xc0, 0xb9, - 0xc0, 0x74, 0xc2, 0xb9, 0xc1, 0x75, 0xc3, 0xb9, 0xc1, 0x75, 0xc2, 0xb9, - 0xc1, 0x75, 0xc3, 0xb9, 0xc1, 0x75, 0xc2, 0xb9, 0xc2, 0x75, 0xc3, 0xb9, - 0xc2, 0x75, 0xc2, 0xb9, 0xc2, 0x75, 0xc3, 0xb9, 0xc3, 0x75, 0xc3, 0xb9, - 0xc3, 0x75, 0xc3, 0xb9, 0xc3, 0x75, 0xc4, 0xb9, 0xc4, 0x75, 0xc4, 0xb9, - 0xc4, 0x75, 0xc6, 0xb9, 0xc4, 0x76, 0xc6, 0xb9, 0xc5, 0x76, 0xc6, 0xb9, - 0xc5, 0x76, 0xc6, 0xb9, 0xc5, 0x76, 0xc6, 0xb9, 0xc6, 0x76, 0xc6, 0xb9, - 0xc6, 0x76, 0xc6, 0xb9, 0xc6, 0x76, 0xc6, 0xb9, 0xc6, 0x76, 0xc7, 0xb9, - 0xc7, 0x76, 0xc7, 0xb9, 0xc7, 0x76, 0xc7, 0xb9, 0xc7, 0x76, 0xc9, 0xb9, - 0xc8, 0x77, 0xca, 0xb9, 0xc8, 0x77, 0xc9, 0xb9, 0xc8, 0x77, 0xca, 0xb9, - 0xc9, 0x77, 0xc9, 0xb9, 0xc9, 0x77, 0xca, 0xb9, 0xc9, 0x77, 0xc9, 0xb9, - 0xc9, 0x77, 0xca, 0xb9, 0xca, 0x77, 0xca, 0xb9, 0xca, 0x77, 0xca, 0xb9, - 0xca, 0x77, 0xcb, 0xb9, 0xcb, 0x77, 0xcb, 0xb9, 0xcb, 0x77, 0xcb, 0xb9, - 0xcb, 0x77, 0xcd, 0xb9, 0xcc, 0x78, 0xcd, 0xb9, 0xcc, 0x78, 0xcd, 0xb9, - 0xcc, 0x78, 0xcd, 0xb9, 0xcc, 0x78, 0xcd, 0xb9, 0xcd, 0x78, 0xcd, 0xb9, - 0xcd, 0x78, 0xcd, 0xb9, 0xcd, 0x78, 0xce, 0xb9, 0xce, 0x78, 0xce, 0xb9, - 0xce, 0x78, 0xce, 0xb9, 0xce, 0x78, 0xce, 0xb9, 0xce, 0x78, 0xce, 0xb9, - 0xcf, 0x78, 0xce, 0xb9, 0xcf, 0x78, 0xce, 0xb9, 0xcf, 0x78, 0xce, 0xb9, - 0xd0, 0x78, 0xce, 0xb9, 0xd0, 0x78, 0xce, 0xb9, 0xd0, 0x78, 0xce, 0xb9, - 0xd0, 0x78, 0xce, 0xb9, 0xd1, 0x78, 0xce, 0xb9, 0xd1, 0x78, 0xce, 0xb9, - 0xd1, 0x78, 0xce, 0xb9, 0xd2, 0x78, 0xce, 0xb9, 0xd2, 0x78, 0xce, 0xb9, - 0xd2, 0x78, 0xce, 0xb9, 0xd2, 0x78, 0xce, 0xb9, 0xd3, 0x78, 0xce, 0xb9, - 0xd3, 0x78, 0xce, 0xb9, 0xd3, 0x78, 0xce, 0xb9, 0xd4, 0x78, 0xce, 0xb9, - 0xd4, 0x78, 0xce, 0xb9, 0xd4, 0x78, 0xce, 0xb9, 0xd4, 0x78, 0xce, 0xb9, - 0xd5, 0x78, 0xce, 0xb9, 0xd5, 0x78, 0xce, 0xb9, 0xd5, 0x78, 0xce, 0xb9, - 0xd6, 0x78, 0xce, 0xb9, 0xd6, 0x78, 0xce, 0xb9, 0xd6, 0x78, 0xce, 0xb9, - 0xd6, 0x78, 0xce, 0xb9, 0xd7, 0x78, 0xce, 0xb9, 0xd7, 0x78, 0xce, 0xb9, - 0xd7, 0x78, 0xce, 0xb9, 0xd7, 0x78, 0xcf, 0xb9, 0xd8, 0x75, 0xce, 0xb9, - 0xd8, 0x78, 0xcf, 0xb9, 0xd8, 0x75, 0xce, 0xb9, 0xd9, 0x78, 0xcf, 0xb9, - 0xd9, 0x75, 0xce, 0xb9, 0xd9, 0x78, 0xcf, 0xb9, 0xd9, 0x75, 0xce, 0xb9, - 0xda, 0x78, 0xcf, 0xb9, 0xda, 0x75, 0xce, 0xb9, 0xda, 0x78, 0xcf, 0xb9, - 0xda, 0x75, 0xce, 0xb9, 0xdb, 0x78, 0xcf, 0xb9, 0xdb, 0x75, 0xce, 0xb9, - 0xdb, 0x78, 0xcf, 0xb9, 0xdb, 0x75, 0xce, 0xb9, 0xdc, 0x78, 0xcf, 0xb9, - 0xdc, 0x75, 0xdb, 0xb9, 0xdc, 0x95, 0xda, 0xb9, 0xdd, 0x95, 0xdb, 0xb9, - 0xdd, 0x95, 0xda, 0xb9, 0xdd, 0x95, 0xdb, 0xb9, 0xdd, 0x95, 0xea, 0xb9, - 0xde, 0x7f, 0xea, 0xb9, 0xde, 0x83, 0xea, 0xb9, 0xde, 0x7f, 0xeb, 0xb9, - 0xde, 0x7c, 0xea, 0xb9, 0xdf, 0x7f, 0xeb, 0xb9, 0xdf, 0x7c, 0xea, 0xb9, - 0xdf, 0x7f, 0xeb, 0xb9, 0xdf, 0x7c, 0xea, 0xb9, 0xe0, 0x7f, 0xeb, 0xb9, - 0xe0, 0x7c, 0xea, 0xb9, 0xe0, 0x7f, 0xeb, 0xb9, 0xe1, 0x7c, 0xea, 0xb9, - 0xe1, 0x7f, 0xeb, 0xb9, 0xe1, 0x7c, 0xea, 0xb9, 0xe1, 0x7f, 0xeb, 0xb9, - 0xe2, 0x7c, 0xea, 0xb9, 0xe2, 0x7f, 0xeb, 0xb9, 0xe2, 0x7c, 0xea, 0xb9, - 0xe2, 0x7f, 0xeb, 0xb9, 0xe3, 0x7c, 0xea, 0xb9, 0xe3, 0x7f, 0xeb, 0xb9, - 0xe3, 0x7c, 0xea, 0xb9, 0xe3, 0x7f, 0xeb, 0xb9, 0xe4, 0x7c, 0xea, 0xb9, - 0xe4, 0x7f, 0xeb, 0xb9, 0xe4, 0x7c, 0xea, 0xb9, 0xe4, 0x7f, 0xeb, 0xb9, - 0xe5, 0x7c, 0xea, 0xb9, 0xe5, 0x7f, 0xeb, 0xb9, 0xe5, 0x7c, 0xea, 0xb9, - 0xe5, 0x7f, 0xeb, 0xb9, 0xe6, 0x7c, 0xea, 0xb9, 0xe6, 0x7f, 0xeb, 0xb9, - 0xe6, 0x7c, 0xea, 0xb9, 0xe6, 0x7f, 0xeb, 0xb9, 0xe7, 0x7c, 0xea, 0xb9, - 0xe7, 0x7f, 0xeb, 0xb9, 0xe7, 0x7c, 0xea, 0xb9, 0xe7, 0x7f, 0xeb, 0xb9, - 0xe8, 0x7c, 0xea, 0xb9, 0xe8, 0x7f, 0xeb, 0xb9, 0xe8, 0x7c, 0xea, 0xb9, - 0xe8, 0x7f, 0xeb, 0xb9, 0xe9, 0x7c, 0xeb, 0xb9, 0xe9, 0x7c, 0xeb, 0xb9, - 0xe9, 0x7c, 0xeb, 0xb9, 0xe9, 0x7c, 0xeb, 0xb9, 0xea, 0x7c, 0xeb, 0xb9, - 0xea, 0x7c, 0xeb, 0xb9, 0xea, 0x7c, 0xeb, 0xb9, 0xea, 0x7c, 0xeb, 0xb9, - 0xea, 0x7c, 0xeb, 0xb9, 0xea, 0x7c, 0xeb, 0xb9, 0xea, 0x7c, 0xeb, 0xb9, - 0xea, 0x7c, 0xec, 0xb8, 0xeb, 0x7c, 0xec, 0xb9, 0xea, 0x7c, 0xec, 0xb8, - 0xeb, 0x7c, 0xec, 0xb9, 0xea, 0x7c, 0xec, 0xb8, 0xeb, 0x7c, 0xed, 0xb9, - 0xea, 0x7c, 0xed, 0xb8, 0xeb, 0x7c, 0xed, 0xb9, 0xea, 0x7c, 0xed, 0xb8, - 0xeb, 0x7c, 0xee, 0xb9, 0xea, 0x7c, 0xee, 0xb8, 0xeb, 0x7c, 0xee, 0xb9, - 0xea, 0x7c, 0xee, 0xb8, 0xeb, 0x7c, 0xef, 0xb9, 0xea, 0x7c, 0xef, 0xb8, - 0xeb, 0x7c, 0xef, 0xb9, 0xea, 0x7c, 0xef, 0xb8, 0xeb, 0x7c, 0xf0, 0xb9, - 0xea, 0x7c, 0xf0, 0xb8, 0xeb, 0x7c, 0xf0, 0xbc, 0xf5, 0x7c, 0xf0, 0xb9, - 0xf5, 0x7c, 0xf1, 0xbc, 0xf5, 0x7c, 0xf1, 0xb9, 0xf5, 0x7c, 0xf1, 0xbc, - 0xf5, 0x7c, 0xf1, 0xb9, 0xf5, 0x7c, 0xf2, 0xbc, 0xf5, 0x7c, 0xf2, 0xb9, - 0xf5, 0x7c, 0xf2, 0xb9, 0xf6, 0x7c, 0xf2, 0xb9, 0xf5, 0x7c, 0xf2, 0xb9, - 0xf6, 0x7c, 0xf3, 0xb9, 0xf5, 0x7c, 0xf3, 0xb9, 0xf6, 0x7c, 0xf3, 0xb9, - 0xf5, 0x7c, 0xf3, 0xb9, 0xf6, 0x7c, 0xf4, 0xb9, 0xf5, 0x7c, 0xf4, 0xb9, - 0xf6, 0x7c, 0xf4, 0xb9, 0xf5, 0x7c, 0xf4, 0xb9, 0xf6, 0x7c, 0xf5, 0xb9, - 0xf5, 0x7c, 0xf5, 0xb9, 0xf6, 0x7c, 0xf5, 0xb9, 0xf5, 0x7c, 0xf5, 0xb9, - 0xf6, 0x7c, 0xf5, 0xb9, 0xf5, 0x7b, 0xf5, 0xb9, 0xf6, 0x7c, 0xf5, 0xb9, - 0xf6, 0x7b, 0xf5, 0xb9, 0xf6, 0x7c, 0xf5, 0xb9, 0xf6, 0x7b, 0xf5, 0xb9, - 0xf7, 0x7c, 0xf5, 0xb9, 0xf7, 0x7b, 0xf5, 0xb9, 0xf7, 0x7c, 0xf5, 0xb9, - 0xf7, 0x7b, 0xf9, 0xb9, 0xf8, 0x7c, 0xf9, 0xb9, 0xf8, 0x7e, 0xf9, 0xb9, - 0xf8, 0x7c, 0xf9, 0xb9, 0xf8, 0x7e, 0xf9, 0xb9, 0xf8, 0x7c, 0xfa, 0xb9, - 0xf9, 0x7c, 0xf9, 0xb9, 0xf9, 0x7c, 0xfa, 0xb9, 0xf9, 0x7c, 0xf9, 0xb9, - 0xf9, 0x7c, 0xfa, 0xb9, 0xf9, 0x7c, 0xfa, 0xb9, 0xf9, 0x7c, 0xfa, 0xb9, - 0xf9, 0x7c, 0xfa, 0xb8, 0xf9, 0x7c, 0xfa, 0xb9, 0xf9, 0x7c, 0xfb, 0xb8, - 0xf9, 0x7c, 0xfb, 0xb9, 0xf9, 0x7c, 0xfb, 0xb8, 0xf9, 0x7c, 0xfb, 0xb9, - 0xf9, 0x7c, 0xfc, 0xb8, 0xf9, 0x7c, 0xfc, 0xb9, 0xf9, 0x7c, 0xfc, 0xb8, - 0xf9, 0x7c, 0xfc, 0xb9, 0xf9, 0x7c, 0xfc, 0xb8, 0xf9, 0x7c, 0xfd, 0xb9, - 0xf9, 0x7c, 0xfd, 0xb8, 0xf9, 0x7c, 0xfd, 0xb9, 0xf9, 0x7c, 0xfd, 0xb8, - 0xf9, 0x7c, 0xfe, 0xb9, 0xf9, 0x7c, 0xfe, 0xb8, 0xf9, 0x7c, 0xfe, 0xb9, - 0xf9, 0x7c, 0xfe, 0xb8, 0xf9, 0x7c, 0xfe, 0xb9, 0xf9, 0x7c, 0xff, 0xb8, - 0xf9, 0x7c, 0xff, 0xb6, 0xfa, 0x7c, 0x03, 0xc1, 0x91, 0x7c, 0x0a, 0xbf, - 0x91, 0x7c, 0x0f, 0xc1, 0x91, 0x7c, 0x14, 0xbf, 0x91, 0x7c, 0x17, 0xc1, - 0x91, 0x7c, 0x1b, 0xbf, 0x91, 0x7c, 0x1e, 0xc1, 0x91, 0x7c, 0x20, 0xbf, - 0x91, 0x7c, 0x23, 0xc1, 0x91, 0x7c, 0x25, 0xbf, 0x91, 0x7c, 0x27, 0xc1, - 0x91, 0x7c, 0x29, 0xbf, 0x91, 0x7c, 0x2b, 0xc1, 0x91, 0x7c, 0x2d, 0xbf, - 0x91, 0x7c, 0x2f, 0xc1, 0x91, 0x7c, 0x31, 0xbf, 0x91, 0x7c, 0x32, 0xc1, - 0x91, 0x7c, 0x34, 0xbf, 0x91, 0x7c, 0x35, 0xc1, 0x91, 0x7c, 0x37, 0xbf, - 0x91, 0x7c, 0x38, 0xc1, 0x91, 0x7c, 0x3a, 0xbf, 0x91, 0x7c, 0x3b, 0xc1, - 0x91, 0x7c, 0x3c, 0xbf, 0x91, 0x7c, 0x3e, 0xc1, 0x91, 0x7c, 0x3f, 0xbf, - 0x91, 0x7c, 0x40, 0xbd, 0x92, 0x7c, 0x42, 0xbf, 0x91, 0x7c, 0x43, 0xbd, - 0x92, 0x7c, 0x44, 0xbf, 0x91, 0x7c, 0x45, 0xbd, 0x92, 0x7c, 0x46, 0xbf, - 0x91, 0x7c, 0x47, 0xbd, 0x92, 0x7c, 0x48, 0xbf, 0x91, 0x7c, 0x49, 0xbd, - 0x92, 0x7c, 0x4a, 0xbf, 0x91, 0x7c, 0x4b, 0xbd, 0x92, 0x7c, 0x4c, 0xbf, - 0x91, 0x7c, 0x4d, 0xbd, 0x92, 0x7c, 0x4e, 0xbf, 0x91, 0x7c, 0x4f, 0xbd, - 0x92, 0x7c, 0x50, 0xbf, 0x91, 0x7c, 0x51, 0xbd, 0x92, 0x7c, 0x52, 0xbf, - 0x91, 0x7c, 0x53, 0xbd, 0x92, 0x7c, 0x54, 0xbf, 0x91, 0x7c, 0x55, 0xbd, - 0x92, 0x7c, 0x56, 0xbf, 0x91, 0x7c, 0x57, 0xbd, 0x92, 0x7c, 0x58, 0xbf, - 0x91, 0x7c, 0x58, 0xbd, 0x92, 0x7c, 0x59, 0xbf, 0x91, 0x7c, 0x5a, 0xbd, - 0x92, 0x7c, 0x5b, 0xbf, 0x91, 0x7c, 0x5c, 0xbd, 0x92, 0x7c, 0x5d, 0xbf, - 0x91, 0x7c, 0x5d, 0xbd, 0x92, 0x7c, 0x5e, 0xbf, 0x91, 0x7c, 0x5f, 0xbd, - 0x92, 0x7c, 0x60, 0xbf, 0x91, 0x7c, 0x60, 0xbd, 0x92, 0x7c, 0x61, 0xbf, - 0x91, 0x7c, 0x62, 0xbd, 0x92, 0x7c, 0x63, 0xbf, 0x91, 0x7c, 0x63, 0xbd, - 0x92, 0x7c, 0x64, 0xbf, 0x91, 0x7c, 0x65, 0xbd, 0x92, 0x7c, 0x66, 0xbf, - 0x91, 0x7c, 0x66, 0xbd, 0x92, 0x7c, 0x67, 0xbf, 0x91, 0x7c, 0x68, 0xbd, - 0x92, 0x7c, 0x68, 0xbf, 0x91, 0x7c, 0x69, 0xbd, 0x92, 0x7c, 0x6a, 0xbf, - 0x91, 0x7c, 0x6a, 0xbd, 0x92, 0x7c, 0x6b, 0xbf, 0x91, 0x7c, 0x6c, 0xbd, - 0x92, 0x7c, 0x6c, 0xbf, 0x91, 0x7c, 0x6d, 0xbd, 0x92, 0x7c, 0x6e, 0xbf, - 0x91, 0x7c, 0x6e, 0xbd, 0x92, 0x7c, 0x6f, 0xbf, 0x91, 0x7c, 0x70, 0xbd, - 0x92, 0x7c, 0x70, 0xbf, 0x91, 0x7c, 0x71, 0xbd, 0x92, 0x7c, 0x72, 0xbf, - 0x91, 0x7c, 0x72, 0xbd, 0x92, 0x7c, 0x73, 0xbb, 0x92, 0x7c, 0x73, 0xbd, - 0x92, 0x7c, 0x74, 0xbb, 0x92, 0x7c, 0x75, 0xbd, 0x92, 0x7c, 0x75, 0xbb, - 0x92, 0x7c, 0x76, 0xbd, 0x92, 0x7c, 0x76, 0xbb, 0x92, 0x7c, 0x77, 0xbd, - 0x92, 0x7c, 0x78, 0xbb, 0x92, 0x7c, 0x78, 0xbd, 0x92, 0x7c, 0x79, 0xbb, - 0x92, 0x7c, 0x79, 0xbd, 0x92, 0x7c, 0x7a, 0xbb, 0x92, 0x7c, 0x7a, 0xbd, - 0x92, 0x7c, 0x7b, 0xbb, 0x92, 0x7c, 0x7c, 0xbd, 0x92, 0x7c, 0x7c, 0xbb, - 0x92, 0x7c, 0x7d, 0xbd, 0x92, 0x7c, 0x7d, 0xbb, 0x92, 0x7c, 0x7e, 0xbd, - 0x92, 0x7c, 0x7e, 0xbb, 0x92, 0x7c, 0x7f, 0xbd, 0x92, 0x7c, 0x7f, 0xbb, - 0x92, 0x7c, 0x80, 0xbd, 0x92, 0x7c, 0x81, 0xbb, 0x92, 0x7c, 0x81, 0xbd, - 0x92, 0x7c, 0x82, 0xbb, 0x92, 0x7c, 0x82, 0xbd, 0x92, 0x7c, 0x83, 0xbb, - 0x92, 0x7c, 0x83, 0xbd, 0x92, 0x7c, 0x84, 0xbb, 0x92, 0x7c, 0x84, 0xbd, - 0x92, 0x7c, 0x85, 0xbb, 0x92, 0x7c, 0x85, 0xbd, 0x92, 0x7c, 0x86, 0xbb, - 0x92, 0x7c, 0x86, 0xbd, 0x92, 0x7c, 0x87, 0xbb, 0x92, 0x7c, 0x87, 0xb9, - 0x93, 0x7c, 0x88, 0xbb, 0x92, 0x7c, 0x88, 0xb9, 0x93, 0x7c, 0x89, 0xbb, - 0x92, 0x7c, 0x89, 0xb9, 0x93, 0x7c, 0x8a, 0xbb, 0x92, 0x7c, 0x8a, 0xb9, - 0x93, 0x7c, 0x8b, 0xbb, 0x92, 0x7c, 0x8b, 0xb9, 0x93, 0x7c, 0x8c, 0xbb, - 0x92, 0x7c, 0x8c, 0xb9, 0x93, 0x7c, 0x8d, 0xbb, 0x92, 0x7c, 0x8d, 0xb9, - 0x93, 0x7c, 0x8e, 0xbb, 0x92, 0x7c, 0x8e, 0xb9, 0x93, 0x7c, 0x8e, 0xbb, - 0x92, 0x7c, 0x8f, 0xb9, 0x93, 0x7c, 0x8f, 0xbb, 0x92, 0x7c, 0x90, 0xb9, - 0x93, 0x7c, 0x90, 0xbb, 0x92, 0x7c, 0x91, 0xb9, 0x93, 0x7c, 0x91, 0xb9, - 0x93, 0x7c, 0x92, 0xb9, 0x93, 0x7c, 0x92, 0xb9, 0x93, 0x7c, 0x92, 0xb9, - 0x93, 0x7c, 0x92, 0xb9, 0x93, 0x7c, 0x92, 0xb9, 0x94, 0x7c, 0x92, 0xb9, - 0x94, 0x7c, 0x94, 0xb9, 0x94, 0x7a, 0x95, 0xb9, 0x95, 0x7a, 0x95, 0xb9, - 0x95, 0x7a, 0x96, 0xb9, 0x96, 0x7a, 0x96, 0xb9, 0x96, 0x7a, 0x97, 0xb9, - 0x97, 0x7a, 0x97, 0xb9, 0x97, 0x7a, 0x98, 0xb9, 0x98, 0x7b, 0x99, 0xb9, - 0x98, 0x7b, 0x98, 0xb9, 0x98, 0x7b, 0x99, 0xb9, 0x99, 0x7b, 0x99, 0xb9, - 0x99, 0x7b, 0x9a, 0xb9, 0x9a, 0x7b, 0x9a, 0xb9, 0x9a, 0x7b, 0x9a, 0xb9, - 0x9a, 0x7b, 0x9b, 0xb9, 0x9b, 0x7b, 0x9b, 0xb9, 0x9b, 0x7b, 0x9c, 0xb9, - 0x9c, 0x7b, 0x9c, 0xb9, 0x9c, 0x7b, 0x9d, 0xb9, 0x9d, 0x7b, 0x9d, 0xb9, - 0x9d, 0x7b, 0x9d, 0xba, 0x9d, 0x7c, 0x9e, 0xba, 0x9e, 0x7c, 0x9e, 0xba, - 0x9e, 0x7c, 0x9f, 0xba, 0x9f, 0x7c, 0x9f, 0xba, 0x9f, 0x7c, 0x9f, 0xba, - 0x9f, 0x7c, 0xa0, 0xba, 0xa0, 0x7c, 0xa0, 0xba, 0xa0, 0x7c, 0xa1, 0xba, - 0xa1, 0x7c, 0xa1, 0xba, 0xa1, 0x7c, 0xa1, 0xba, 0xa1, 0x7c, 0xa2, 0xba, - 0xa1, 0x7c, 0xa2, 0xba, 0xa1, 0x7c, 0xa3, 0xbb, 0xa3, 0x7c, 0xa3, 0xbb, - 0xa3, 0x7c, 0xa3, 0xbb, 0xa3, 0x7c, 0xa4, 0xbb, 0xa4, 0x7c, 0xa4, 0xbb, - 0xa4, 0x7c, 0xa5, 0xbb, 0xa5, 0x7c, 0xa5, 0xbb, 0xa5, 0x7c, 0xa5, 0xbb, - 0xa5, 0x7c, 0xa6, 0xbb, 0xa6, 0x7c, 0xa6, 0xbb, 0xa5, 0x7c, 0xa6, 0xbb, - 0xa6, 0x7c, 0xa7, 0xbb, 0xa5, 0x7c, 0xa7, 0xbb, 0xa6, 0x7c, 0xa8, 0xbb, - 0xa8, 0x7c, 0xa8, 0xbb, 0xaa, 0x7c, 0xa8, 0xb9, 0xaa, 0x7c, 0xa9, 0xb9, - 0xaa, 0x7c, 0xa9, 0xb9, 0xaa, 0x7c, 0xaa, 0xb9, 0xaa, 0x7c, 0xa9, 0xb9, - 0xaa, 0x7c, 0xaa, 0xb9, 0xaa, 0x7c, 0xa9, 0xb9, 0xab, 0x7c, 0xaa, 0xb9, - 0xab, 0x7c, 0xaa, 0xb9, 0xab, 0x7a, 0xaa, 0xb9, 0xac, 0x7c, 0xaa, 0xb9, - 0xac, 0x7a, 0xaa, 0xb9, 0xac, 0x7c, 0xaa, 0xb9, 0xad, 0x7a, 0xaa, 0xb9, - 0xad, 0x7c, 0xaa, 0xb9, 0xae, 0x7a, 0xaa, 0xb9, 0xae, 0x7c, 0xaa, 0xb9, - 0xae, 0x7a, 0xaa, 0xb9, 0xaf, 0x7c, 0xaa, 0xb9, 0xaf, 0x7a, 0xaa, 0xb9, - 0xaf, 0x7c, 0xaa, 0xb9, 0xb0, 0x7a, 0xaa, 0xb9, 0xb0, 0x7c, 0xaa, 0xb9, - 0xb0, 0x7a, 0xaa, 0xb9, 0xb1, 0x7c, 0xaa, 0xb9, 0xb1, 0x7a, 0xaa, 0xb9, - 0xb2, 0x7c, 0xaa, 0xb9, 0xb2, 0x7a, 0xb2, 0xb9, 0xb2, 0x70, 0xb3, 0xb9, - 0xb3, 0x70, 0xb6, 0xb9, 0xb3, 0x71, 0xb6, 0xb9, 0xb3, 0x71, 0xb6, 0xb9, - 0xb4, 0x71, 0xb6, 0xb9, 0xb4, 0x71, 0xb6, 0xb9, 0xb4, 0x71, 0xb6, 0xb9, - 0xb5, 0x71, 0xb6, 0xb9, 0xb5, 0x71, 0xb6, 0xb9, 0xb5, 0x71, 0xb6, 0xb9, - 0xb6, 0x71, 0xb6, 0xb9, 0xb6, 0x71, 0xb6, 0xb9, 0xb6, 0x71, 0xb7, 0xb9, - 0xb7, 0x71, 0xba, 0xb9, 0xb7, 0x72, 0xba, 0xb9, 0xb7, 0x72, 0xba, 0xb9, - 0xb8, 0x72, 0xba, 0xb9, 0xb8, 0x72, 0xba, 0xb9, 0xb8, 0x72, 0xba, 0xb9, - 0xb9, 0x72, 0xba, 0xb9, 0xb9, 0x72, 0xba, 0xb9, 0xb9, 0x72, 0xba, 0xb9, - 0xba, 0x72, 0xba, 0xb9, 0xba, 0x72, 0xba, 0xb9, 0xba, 0x72, 0xbd, 0xb9, - 0xbb, 0x73, 0xbe, 0xb9, 0xbb, 0x73, 0xbd, 0xb9, 0xbb, 0x73, 0xbe, 0xb9, - 0xbc, 0x73, 0xbd, 0xb9, 0xbc, 0x73, 0xbe, 0xb9, 0xbc, 0x73, 0xbd, 0xb9, - 0xbd, 0x73, 0xbe, 0xb9, 0xbd, 0x73, 0xbd, 0xb9, 0xbd, 0x73, 0xbe, 0xb9, - 0xbe, 0x73, 0xbe, 0xb9, 0xbe, 0x73, 0xc1, 0xb9, 0xbe, 0x74, 0xc1, 0xb9, - 0xbf, 0x74, 0xc1, 0xb9, 0xbf, 0x74, 0xc1, 0xb9, 0xbf, 0x74, 0xc1, 0xb9, - 0xc0, 0x74, 0xc1, 0xb9, 0xc0, 0x74, 0xc1, 0xb9, 0xc0, 0x74, 0xc1, 0xb9, - 0xc1, 0x74, 0xc1, 0xb9, 0xc1, 0x74, 0xc1, 0xb9, 0xc1, 0x74, 0xc1, 0xb9, - 0xc1, 0x74, 0xc2, 0xb9, 0xc2, 0x74, 0xc2, 0xb9, 0xc2, 0x74, 0xc4, 0xb9, - 0xc2, 0x75, 0xc5, 0xb9, 0xc3, 0x75, 0xc4, 0xb9, 0xc3, 0x75, 0xc5, 0xb9, - 0xc3, 0x75, 0xc4, 0xb9, 0xc4, 0x75, 0xc5, 0xb9, 0xc4, 0x75, 0xc4, 0xb9, - 0xc4, 0x75, 0xc5, 0xb9, 0xc5, 0x75, 0xc5, 0xb9, 0xc5, 0x75, 0xc5, 0xb9, - 0xc5, 0x75, 0xc6, 0xb9, 0xc6, 0x75, 0xc8, 0xb9, 0xc6, 0x76, 0xc8, 0xb9, - 0xc6, 0x76, 0xc8, 0xb9, 0xc6, 0x76, 0xc8, 0xb9, 0xc7, 0x76, 0xc8, 0xb9, - 0xc7, 0x76, 0xc8, 0xb9, 0xc7, 0x76, 0xc8, 0xb9, 0xc8, 0x76, 0xc8, 0xb9, - 0xc8, 0x76, 0xc8, 0xb9, 0xc8, 0x76, 0xc9, 0xb9, 0xc9, 0x76, 0xc9, 0xb9, - 0xc9, 0x76, 0xcb, 0xb9, 0xc9, 0x77, 0xcb, 0xb9, 0xc9, 0x77, 0xcb, 0xb9, - 0xca, 0x77, 0xcb, 0xb9, 0xca, 0x77, 0xcb, 0xb9, 0xca, 0x77, 0xcb, 0xb9, - 0xcb, 0x77, 0xcb, 0xb9, 0xcb, 0x77, 0xcb, 0xb9, 0xcb, 0x77, 0xcc, 0xb9, - 0xcc, 0x77, 0xcc, 0xb9, 0xcc, 0x77, 0xcc, 0xb9, 0xcc, 0x77, 0xcc, 0xb9, - 0xcc, 0x77, 0xcd, 0xb9, 0xcd, 0x77, 0xce, 0xb9, 0xcd, 0x78, 0xce, 0xb9, - 0xcd, 0x78, 0xce, 0xb9, 0xce, 0x78, 0xce, 0xb9, 0xce, 0x78, 0xce, 0xb9, - 0xce, 0x78, 0xce, 0xb9, 0xce, 0x78, 0xce, 0xb9, 0xcf, 0x78, 0xce, 0xb9, - 0xcf, 0x78, 0xce, 0xb9, 0xcf, 0x78, 0xce, 0xb9, 0xd0, 0x78, 0xce, 0xb9, - 0xd0, 0x78, 0xce, 0xb9, 0xd0, 0x78, 0xce, 0xb9, 0xd0, 0x78, 0xce, 0xb9, - 0xd1, 0x78, 0xce, 0xb9, 0xd1, 0x78, 0xce, 0xb9, 0xd1, 0x78, 0xce, 0xb9, - 0xd2, 0x78, 0xce, 0xb9, 0xd2, 0x78, 0xce, 0xb9, 0xd2, 0x78, 0xce, 0xb9, - 0xd2, 0x78, 0xce, 0xb9, 0xd3, 0x78, 0xce, 0xb9, 0xd3, 0x78, 0xce, 0xb9, - 0xd3, 0x78, 0xce, 0xb9, 0xd4, 0x78, 0xce, 0xb9, 0xd4, 0x78, 0xce, 0xb9, - 0xd4, 0x78, 0xce, 0xb9, 0xd4, 0x78, 0xce, 0xb9, 0xd5, 0x78, 0xce, 0xb9, - 0xd5, 0x78, 0xce, 0xb9, 0xd5, 0x78, 0xce, 0xb9, 0xd6, 0x78, 0xce, 0xb9, - 0xd6, 0x78, 0xce, 0xb9, 0xd6, 0x78, 0xce, 0xb9, 0xd6, 0x78, 0xce, 0xb9, - 0xd7, 0x78, 0xce, 0xb9, 0xd7, 0x78, 0xce, 0xb9, 0xd7, 0x78, 0xce, 0xb9, - 0xd7, 0x78, 0xcf, 0xb9, 0xd8, 0x75, 0xce, 0xb9, 0xd8, 0x78, 0xcf, 0xb9, - 0xd8, 0x75, 0xce, 0xb9, 0xd9, 0x78, 0xcf, 0xb9, 0xd9, 0x75, 0xce, 0xb9, - 0xd9, 0x78, 0xcf, 0xb9, 0xd9, 0x75, 0xce, 0xb9, 0xda, 0x78, 0xcf, 0xb9, - 0xda, 0x75, 0xce, 0xb9, 0xda, 0x78, 0xcf, 0xb9, 0xda, 0x75, 0xce, 0xb9, - 0xdb, 0x78, 0xcf, 0xb9, 0xdb, 0x75, 0xce, 0xb9, 0xdb, 0x78, 0xcf, 0xb9, - 0xdb, 0x75, 0xce, 0xb9, 0xdc, 0x78, 0xd9, 0xb9, 0xdc, 0x94, 0xd9, 0xb9, - 0xdc, 0x94, 0xd9, 0xb9, 0xdd, 0x94, 0xd9, 0xb9, 0xdd, 0x94, 0xdc, 0xb9, - 0xdd, 0x95, 0xdc, 0xb9, 0xdd, 0x95, 0xea, 0xb9, 0xde, 0x7e, 0xea, 0xb9, - 0xde, 0x82, 0xea, 0xb9, 0xde, 0x7e, 0xea, 0xb9, 0xde, 0x82, 0xea, 0xb9, - 0xdf, 0x7e, 0xea, 0xb9, 0xdf, 0x82, 0xea, 0xb9, 0xdf, 0x7e, 0xea, 0xb9, - 0xdf, 0x82, 0xea, 0xb9, 0xe0, 0x7e, 0xea, 0xb9, 0xe0, 0x82, 0xea, 0xb9, - 0xe0, 0x7e, 0xea, 0xb9, 0xe1, 0x82, 0xea, 0xb9, 0xe1, 0x7e, 0xea, 0xb9, - 0xe1, 0x82, 0xea, 0xb9, 0xe1, 0x7e, 0xeb, 0xb9, 0xe2, 0x7c, 0xea, 0xb9, - 0xe2, 0x7e, 0xeb, 0xb9, 0xe2, 0x7c, 0xea, 0xb9, 0xe2, 0x7e, 0xeb, 0xb9, - 0xe3, 0x7c, 0xea, 0xb9, 0xe3, 0x7e, 0xeb, 0xb9, 0xe3, 0x7c, 0xea, 0xb9, - 0xe3, 0x7e, 0xeb, 0xb9, 0xe4, 0x7c, 0xea, 0xb9, 0xe4, 0x7e, 0xeb, 0xb9, - 0xe4, 0x7c, 0xea, 0xb9, 0xe4, 0x7e, 0xeb, 0xb9, 0xe5, 0x7c, 0xea, 0xb9, - 0xe5, 0x7e, 0xeb, 0xb9, 0xe5, 0x7c, 0xea, 0xb9, 0xe5, 0x7e, 0xeb, 0xb9, - 0xe6, 0x7c, 0xea, 0xb9, 0xe6, 0x7e, 0xeb, 0xb9, 0xe6, 0x7c, 0xea, 0xb9, - 0xe6, 0x7e, 0xeb, 0xb9, 0xe7, 0x7c, 0xea, 0xb9, 0xe7, 0x7e, 0xeb, 0xb9, - 0xe7, 0x7c, 0xea, 0xb9, 0xe7, 0x7e, 0xeb, 0xb9, 0xe8, 0x7c, 0xea, 0xb9, - 0xe8, 0x7e, 0xeb, 0xb9, 0xe8, 0x7c, 0xea, 0xb9, 0xe8, 0x7e, 0xeb, 0xb9, - 0xe9, 0x7c, 0xea, 0xb9, 0xe9, 0x7e, 0xeb, 0xb9, 0xe9, 0x7c, 0xea, 0xb9, - 0xe9, 0x7e, 0xeb, 0xb9, 0xea, 0x7c, 0xeb, 0xb9, 0xea, 0x7c, 0xeb, 0xb9, - 0xea, 0x7c, 0xeb, 0xb9, 0xea, 0x7c, 0xeb, 0xb9, 0xea, 0x7c, 0xeb, 0xb9, - 0xea, 0x7c, 0xeb, 0xb9, 0xea, 0x7c, 0xeb, 0xb9, 0xea, 0x7c, 0xec, 0xb9, - 0xea, 0x7c, 0xec, 0xb9, 0xea, 0x7c, 0xec, 0xb9, 0xea, 0x7c, 0xec, 0xb9, - 0xea, 0x7c, 0xec, 0xb7, 0xeb, 0x7c, 0xed, 0xb9, 0xea, 0x7c, 0xed, 0xb7, - 0xeb, 0x7c, 0xed, 0xb9, 0xea, 0x7c, 0xed, 0xb7, 0xeb, 0x7c, 0xee, 0xb9, - 0xea, 0x7c, 0xee, 0xb7, 0xeb, 0x7c, 0xee, 0xb9, 0xea, 0x7c, 0xee, 0xb7, - 0xeb, 0x7c, 0xef, 0xb9, 0xea, 0x7c, 0xef, 0xb7, 0xeb, 0x7c, 0xef, 0xb9, - 0xea, 0x7c, 0xef, 0xb7, 0xeb, 0x7c, 0xf0, 0xb9, 0xea, 0x7c, 0xf0, 0xb7, - 0xeb, 0x7c, 0xf0, 0xbc, 0xf5, 0x7c, 0xf0, 0xb9, 0xf5, 0x7c, 0xf1, 0xbc, - 0xf5, 0x7c, 0xf1, 0xb9, 0xf5, 0x7c, 0xf1, 0xbc, 0xf5, 0x7c, 0xf1, 0xb9, - 0xf5, 0x7c, 0xf2, 0xbc, 0xf5, 0x7c, 0xf2, 0xb9, 0xf5, 0x7c, 0xf2, 0xb9, - 0xf6, 0x7c, 0xf2, 0xb9, 0xf5, 0x7c, 0xf2, 0xb9, 0xf6, 0x7c, 0xf3, 0xb9, - 0xf5, 0x7c, 0xf3, 0xb9, 0xf6, 0x7c, 0xf3, 0xb9, 0xf5, 0x7c, 0xf3, 0xb9, - 0xf6, 0x7c, 0xf4, 0xb9, 0xf5, 0x7c, 0xf4, 0xb9, 0xf6, 0x7c, 0xf4, 0xb9, - 0xf5, 0x7c, 0xf4, 0xb9, 0xf6, 0x7c, 0xf5, 0xb9, 0xf5, 0x7c, 0xf5, 0xb9, - 0xf6, 0x7c, 0xf5, 0xb9, 0xf5, 0x7c, 0xf5, 0xb9, 0xf6, 0x7c, 0xf5, 0xb9, - 0xf5, 0x7b, 0xf5, 0xb9, 0xf6, 0x7c, 0xf5, 0xb9, 0xf6, 0x7b, 0xf5, 0xb9, - 0xf6, 0x7c, 0xf5, 0xb9, 0xf6, 0x7b, 0xf5, 0xb9, 0xf7, 0x7c, 0xf5, 0xb9, - 0xf7, 0x7b, 0xf5, 0xb9, 0xf7, 0x7c, 0xf5, 0xb9, 0xf7, 0x7b, 0xf9, 0xb9, - 0xf8, 0x7c, 0xf9, 0xb9, 0xf8, 0x7d, 0xf9, 0xb9, 0xf8, 0x7c, 0xf9, 0xb9, - 0xf8, 0x7d, 0xf9, 0xb9, 0xf8, 0x7c, 0xf9, 0xb9, 0xf9, 0x7d, 0xf9, 0xb9, - 0xf9, 0x7c, 0xfa, 0xb9, 0xf9, 0x7c, 0xf9, 0xb9, 0xf9, 0x7c, 0xfa, 0xb9, - 0xf9, 0x7c, 0xfa, 0xb9, 0xf9, 0x7c, 0xfa, 0xb9, 0xf9, 0x7c, 0xfa, 0xb9, - 0xf9, 0x7c, 0xfa, 0xb9, 0xf9, 0x7c, 0xfb, 0xb9, 0xf9, 0x7c, 0xfb, 0xb9, - 0xf9, 0x7c, 0xfb, 0xb7, 0xf9, 0x7c, 0xfb, 0xb9, 0xf9, 0x7c, 0xfc, 0xb7, - 0xf9, 0x7c, 0xfc, 0xb9, 0xf9, 0x7c, 0xfc, 0xb7, 0xf9, 0x7c, 0xfc, 0xb9, - 0xf9, 0x7c, 0xfc, 0xb7, 0xf9, 0x7c, 0xfd, 0xb9, 0xf9, 0x7c, 0xfd, 0xb7, - 0xf9, 0x7c, 0xfd, 0xb9, 0xf9, 0x7c, 0xfd, 0xb7, 0xf9, 0x7c, 0xfe, 0xb9, - 0xf9, 0x7c, 0xfe, 0xb7, 0xf9, 0x7c, 0xfe, 0xb9, 0xf9, 0x7c, 0xfe, 0xb7, - 0xf9, 0x7c, 0xfe, 0xb9, 0xf9, 0x7c, 0xff, 0xb7, 0xf9, 0x7c, 0xff, 0xb9, - 0xf9, 0x7c, 0x03, 0xc1, 0x91, 0x7d, 0x0a, 0xc1, 0x91, 0x7d, 0x0f, 0xc1, - 0x91, 0x7d, 0x14, 0xc1, 0x91, 0x7d, 0x17, 0xc1, 0x91, 0x7d, 0x1b, 0xc1, - 0x91, 0x7d, 0x1e, 0xc1, 0x91, 0x7d, 0x20, 0xc1, 0x91, 0x7d, 0x23, 0xc1, - 0x91, 0x7d, 0x25, 0xc1, 0x91, 0x7d, 0x27, 0xc1, 0x91, 0x7d, 0x29, 0xc1, - 0x91, 0x7d, 0x2b, 0xc1, 0x91, 0x7d, 0x2d, 0xc1, 0x91, 0x7d, 0x2f, 0xc1, - 0x91, 0x7d, 0x31, 0xbf, 0x91, 0x7d, 0x32, 0xc1, 0x91, 0x7d, 0x34, 0xbf, - 0x91, 0x7d, 0x35, 0xc1, 0x91, 0x7d, 0x37, 0xbf, 0x91, 0x7d, 0x38, 0xc1, - 0x91, 0x7d, 0x3a, 0xbf, 0x91, 0x7d, 0x3b, 0xc1, 0x91, 0x7d, 0x3c, 0xbf, - 0x91, 0x7d, 0x3e, 0xc1, 0x91, 0x7d, 0x3f, 0xbf, 0x91, 0x7d, 0x40, 0xc1, - 0x91, 0x7d, 0x42, 0xbf, 0x91, 0x7d, 0x43, 0xc1, 0x91, 0x7d, 0x44, 0xbf, - 0x91, 0x7d, 0x45, 0xc1, 0x91, 0x7d, 0x46, 0xbf, 0x91, 0x7d, 0x47, 0xc1, - 0x91, 0x7d, 0x48, 0xbf, 0x91, 0x7d, 0x49, 0xc1, 0x91, 0x7d, 0x4a, 0xbf, - 0x91, 0x7d, 0x4b, 0xc1, 0x91, 0x7d, 0x4c, 0xbf, 0x91, 0x7d, 0x4d, 0xc1, - 0x91, 0x7d, 0x4e, 0xbf, 0x91, 0x7d, 0x4f, 0xc1, 0x91, 0x7d, 0x50, 0xbf, - 0x91, 0x7d, 0x51, 0xc1, 0x91, 0x7d, 0x52, 0xbf, 0x91, 0x7d, 0x53, 0xc1, - 0x91, 0x7d, 0x54, 0xbf, 0x91, 0x7d, 0x55, 0xc1, 0x91, 0x7d, 0x56, 0xbf, - 0x91, 0x7d, 0x57, 0xc1, 0x91, 0x7d, 0x58, 0xbf, 0x91, 0x7d, 0x58, 0xbd, - 0x92, 0x7d, 0x59, 0xbf, 0x91, 0x7d, 0x5a, 0xbd, 0x92, 0x7d, 0x5b, 0xbf, - 0x91, 0x7d, 0x5c, 0xbd, 0x92, 0x7d, 0x5d, 0xbf, 0x91, 0x7d, 0x5d, 0xbd, - 0x92, 0x7d, 0x5e, 0xbf, 0x91, 0x7d, 0x5f, 0xbd, 0x92, 0x7d, 0x60, 0xbf, - 0x91, 0x7d, 0x60, 0xbd, 0x92, 0x7d, 0x61, 0xbf, 0x91, 0x7d, 0x62, 0xbd, - 0x92, 0x7d, 0x63, 0xbf, 0x91, 0x7d, 0x63, 0xbd, 0x92, 0x7d, 0x64, 0xbf, - 0x91, 0x7d, 0x65, 0xbd, 0x92, 0x7d, 0x66, 0xbf, 0x91, 0x7d, 0x66, 0xbd, - 0x92, 0x7d, 0x67, 0xbf, 0x91, 0x7d, 0x68, 0xbd, 0x92, 0x7d, 0x68, 0xbf, - 0x91, 0x7d, 0x69, 0xbd, 0x92, 0x7d, 0x6a, 0xbf, 0x91, 0x7d, 0x6a, 0xbd, - 0x92, 0x7d, 0x6b, 0xbf, 0x91, 0x7d, 0x6c, 0xbd, 0x92, 0x7d, 0x6c, 0xbf, - 0x91, 0x7d, 0x6d, 0xbd, 0x92, 0x7d, 0x6e, 0xbf, 0x91, 0x7d, 0x6e, 0xbd, - 0x92, 0x7d, 0x6f, 0xbf, 0x91, 0x7d, 0x70, 0xbd, 0x92, 0x7d, 0x70, 0xba, - 0x92, 0x7d, 0x71, 0xbd, 0x92, 0x7d, 0x72, 0xba, 0x92, 0x7d, 0x72, 0xbd, - 0x92, 0x7d, 0x73, 0xba, 0x92, 0x7d, 0x73, 0xbd, 0x92, 0x7d, 0x74, 0xba, - 0x92, 0x7d, 0x75, 0xbd, 0x92, 0x7d, 0x75, 0xba, 0x92, 0x7d, 0x76, 0xbd, - 0x92, 0x7d, 0x76, 0xba, 0x92, 0x7d, 0x77, 0xbd, 0x92, 0x7d, 0x78, 0xba, - 0x92, 0x7d, 0x78, 0xbd, 0x92, 0x7d, 0x79, 0xba, 0x92, 0x7d, 0x79, 0xbd, - 0x92, 0x7d, 0x7a, 0xba, 0x92, 0x7d, 0x7a, 0xbd, 0x92, 0x7d, 0x7b, 0xba, - 0x92, 0x7d, 0x7c, 0xbd, 0x92, 0x7d, 0x7c, 0xba, 0x92, 0x7d, 0x7d, 0xbd, - 0x92, 0x7d, 0x7d, 0xba, 0x92, 0x7d, 0x7e, 0xbd, 0x92, 0x7d, 0x7e, 0xba, - 0x92, 0x7d, 0x7f, 0xbd, 0x92, 0x7d, 0x7f, 0xba, 0x92, 0x7d, 0x80, 0xbd, - 0x92, 0x7d, 0x81, 0xba, 0x92, 0x7d, 0x81, 0xbd, 0x92, 0x7d, 0x82, 0xba, - 0x92, 0x7d, 0x82, 0xbd, 0x92, 0x7d, 0x83, 0xba, 0x92, 0x7d, 0x83, 0xbd, - 0x92, 0x7d, 0x84, 0xba, 0x92, 0x7d, 0x84, 0xbd, 0x92, 0x7d, 0x85, 0xba, - 0x92, 0x7d, 0x85, 0xbd, 0x92, 0x7d, 0x86, 0xba, 0x92, 0x7d, 0x86, 0xbd, - 0x92, 0x7d, 0x87, 0xba, 0x92, 0x7d, 0x87, 0xba, 0x93, 0x7d, 0x88, 0xba, - 0x92, 0x7d, 0x88, 0xba, 0x93, 0x7d, 0x89, 0xba, 0x92, 0x7d, 0x89, 0xba, - 0x93, 0x7d, 0x8a, 0xba, 0x92, 0x7d, 0x8a, 0xba, 0x93, 0x7d, 0x8b, 0xba, - 0x92, 0x7d, 0x8b, 0xba, 0x93, 0x7d, 0x8c, 0xba, 0x92, 0x7d, 0x8c, 0xba, - 0x93, 0x7d, 0x8d, 0xba, 0x92, 0x7d, 0x8d, 0xba, 0x93, 0x7d, 0x8e, 0xba, - 0x92, 0x7d, 0x8e, 0xba, 0x93, 0x7d, 0x8e, 0xba, 0x92, 0x7d, 0x8f, 0xba, - 0x93, 0x7d, 0x8f, 0xba, 0x92, 0x7d, 0x90, 0xba, 0x93, 0x7d, 0x90, 0xba, - 0x92, 0x7d, 0x91, 0xba, 0x93, 0x7d, 0x91, 0xba, 0x92, 0x7d, 0x92, 0xba, - 0x93, 0x7d, 0x92, 0xba, 0x92, 0x7d, 0x92, 0xba, 0x93, 0x7d, 0x92, 0xba, - 0x93, 0x7d, 0x92, 0xba, 0x94, 0x7d, 0x92, 0xba, 0x94, 0x7d, 0x96, 0xba, - 0x94, 0x7b, 0x97, 0xba, 0x95, 0x7b, 0x96, 0xba, 0x95, 0x7b, 0x97, 0xba, - 0x96, 0x7b, 0x96, 0xba, 0x96, 0x7b, 0x97, 0xba, 0x97, 0x7b, 0x97, 0xba, - 0x97, 0x7b, 0x98, 0xba, 0x98, 0x7b, 0x98, 0xba, 0x98, 0x7b, 0x98, 0xba, - 0x98, 0x7b, 0x99, 0xba, 0x99, 0x7b, 0x99, 0xba, 0x99, 0x7b, 0x9a, 0xba, - 0x9a, 0x7b, 0x9b, 0xba, 0x9a, 0x7c, 0x9b, 0xba, 0x9a, 0x7c, 0x9b, 0xba, - 0x9b, 0x7c, 0x9b, 0xba, 0x9b, 0x7c, 0x9c, 0xba, 0x9c, 0x7c, 0x9c, 0xba, - 0x9c, 0x7c, 0x9d, 0xba, 0x9d, 0x7c, 0x9d, 0xba, 0x9d, 0x7c, 0x9d, 0xba, - 0x9d, 0x7c, 0x9e, 0xba, 0x9e, 0x7c, 0x9e, 0xba, 0x9e, 0x7c, 0x9f, 0xba, - 0x9f, 0x7c, 0x9f, 0xba, 0x9f, 0x7c, 0x9f, 0xba, 0x9f, 0x7d, 0xa0, 0xba, - 0xa0, 0x7d, 0xa0, 0xba, 0xa0, 0x7d, 0xa1, 0xba, 0xa1, 0x7d, 0xa1, 0xba, - 0xa1, 0x7d, 0xa1, 0xba, 0xa1, 0x7d, 0xa2, 0xba, 0xa2, 0x7d, 0xa2, 0xba, - 0xa2, 0x7d, 0xa3, 0xba, 0xa3, 0x7d, 0xa3, 0xba, 0xa3, 0x7d, 0xa3, 0xba, - 0xa3, 0x7d, 0xa4, 0xba, 0xa3, 0x7d, 0xa4, 0xba, 0xa3, 0x7d, 0xa5, 0xbb, - 0xa5, 0x7d, 0xa5, 0xbb, 0xa5, 0x7d, 0xa5, 0xbb, 0xa5, 0x7d, 0xa6, 0xbb, - 0xa6, 0x7d, 0xa6, 0xbb, 0xa6, 0x7d, 0xa6, 0xbb, 0xa6, 0x7d, 0xa7, 0xbb, - 0xa7, 0x7d, 0xa7, 0xbb, 0xa7, 0x7d, 0xa8, 0xbb, 0xa8, 0x7d, 0xa8, 0xbb, - 0xa7, 0x7d, 0xa8, 0xba, 0xaa, 0x7d, 0xa9, 0xba, 0xaa, 0x7d, 0xa9, 0xba, - 0xaa, 0x7d, 0xaa, 0xba, 0xaa, 0x7d, 0xa9, 0xba, 0xaa, 0x7d, 0xaa, 0xba, - 0xaa, 0x7d, 0xa9, 0xba, 0xab, 0x7d, 0xaa, 0xba, 0xab, 0x7d, 0xaa, 0xba, - 0xab, 0x7b, 0xaa, 0xba, 0xac, 0x7d, 0xaa, 0xba, 0xac, 0x7b, 0xaa, 0xba, - 0xac, 0x7d, 0xaa, 0xba, 0xad, 0x7b, 0xaa, 0xba, 0xad, 0x7d, 0xaa, 0xba, - 0xae, 0x7b, 0xaa, 0xba, 0xae, 0x7d, 0xaa, 0xba, 0xae, 0x7b, 0xaa, 0xba, - 0xaf, 0x7d, 0xaa, 0xba, 0xaf, 0x7b, 0xaa, 0xba, 0xaf, 0x7d, 0xaa, 0xba, - 0xb0, 0x7b, 0xaa, 0xba, 0xb0, 0x7d, 0xaa, 0xba, 0xb0, 0x7b, 0xaa, 0xba, - 0xb1, 0x7d, 0xaa, 0xba, 0xb1, 0x7b, 0xaa, 0xba, 0xb2, 0x7d, 0xaa, 0xba, - 0xb2, 0x7b, 0xaa, 0xba, 0xb2, 0x7d, 0xb4, 0xba, 0xb3, 0x71, 0xb4, 0xba, - 0xb3, 0x71, 0xb4, 0xba, 0xb3, 0x71, 0xb4, 0xba, 0xb4, 0x71, 0xb4, 0xba, - 0xb4, 0x71, 0xb4, 0xba, 0xb4, 0x71, 0xb5, 0xba, 0xb5, 0x71, 0xb8, 0xba, - 0xb5, 0x72, 0xb8, 0xba, 0xb5, 0x72, 0xb8, 0xba, 0xb6, 0x72, 0xb8, 0xba, - 0xb6, 0x72, 0xb8, 0xba, 0xb6, 0x72, 0xb8, 0xba, 0xb7, 0x72, 0xb8, 0xba, - 0xb7, 0x72, 0xb8, 0xba, 0xb7, 0x72, 0xb8, 0xba, 0xb8, 0x72, 0xb8, 0xba, - 0xb8, 0x72, 0xb8, 0xba, 0xb8, 0x72, 0xbb, 0xba, 0xb9, 0x73, 0xbc, 0xba, - 0xb9, 0x73, 0xbb, 0xba, 0xb9, 0x73, 0xbc, 0xba, 0xba, 0x73, 0xbb, 0xba, - 0xba, 0x73, 0xbc, 0xba, 0xba, 0x73, 0xbb, 0xba, 0xbb, 0x73, 0xbc, 0xba, - 0xbb, 0x73, 0xbb, 0xba, 0xbb, 0x73, 0xbc, 0xba, 0xbc, 0x73, 0xbc, 0xba, - 0xbc, 0x73, 0xbf, 0xba, 0xbc, 0x74, 0xbf, 0xba, 0xbd, 0x74, 0xbf, 0xba, - 0xbd, 0x74, 0xbf, 0xba, 0xbd, 0x74, 0xbf, 0xba, 0xbe, 0x74, 0xbf, 0xba, - 0xbe, 0x74, 0xbf, 0xba, 0xbe, 0x74, 0xbf, 0xba, 0xbf, 0x74, 0xbf, 0xba, - 0xbf, 0x74, 0xbf, 0xba, 0xbf, 0x74, 0xc0, 0xba, 0xc0, 0x74, 0xc2, 0xba, - 0xc0, 0x75, 0xc3, 0xba, 0xc0, 0x75, 0xc2, 0xba, 0xc1, 0x75, 0xc3, 0xba, - 0xc1, 0x75, 0xc2, 0xba, 0xc1, 0x75, 0xc3, 0xba, 0xc1, 0x75, 0xc2, 0xba, - 0xc2, 0x75, 0xc3, 0xba, 0xc2, 0x75, 0xc2, 0xba, 0xc2, 0x75, 0xc3, 0xba, - 0xc3, 0x75, 0xc3, 0xba, 0xc3, 0x75, 0xc3, 0xba, 0xc3, 0x75, 0xc4, 0xba, - 0xc4, 0x75, 0xc4, 0xba, 0xc4, 0x75, 0xc6, 0xba, 0xc4, 0x76, 0xc6, 0xba, - 0xc5, 0x76, 0xc6, 0xba, 0xc5, 0x76, 0xc6, 0xba, 0xc5, 0x76, 0xc6, 0xba, - 0xc6, 0x76, 0xc6, 0xba, 0xc6, 0x76, 0xc6, 0xba, 0xc6, 0x76, 0xc6, 0xba, - 0xc6, 0x76, 0xc7, 0xba, 0xc7, 0x76, 0xc7, 0xba, 0xc7, 0x76, 0xc7, 0xba, - 0xc7, 0x76, 0xc9, 0xba, 0xc8, 0x77, 0xca, 0xba, 0xc8, 0x77, 0xc9, 0xba, - 0xc8, 0x77, 0xca, 0xba, 0xc9, 0x77, 0xc9, 0xba, 0xc9, 0x77, 0xca, 0xba, - 0xc9, 0x77, 0xc9, 0xba, 0xc9, 0x77, 0xca, 0xba, 0xca, 0x77, 0xca, 0xba, - 0xca, 0x77, 0xca, 0xba, 0xca, 0x77, 0xcb, 0xba, 0xcb, 0x77, 0xcd, 0xba, - 0xcb, 0x78, 0xcd, 0xba, 0xcb, 0x78, 0xcd, 0xba, 0xcc, 0x78, 0xcd, 0xba, - 0xcc, 0x78, 0xcd, 0xba, 0xcc, 0x78, 0xcd, 0xba, 0xcc, 0x78, 0xcd, 0xba, - 0xcd, 0x78, 0xcd, 0xba, 0xcd, 0x78, 0xcd, 0xba, 0xcd, 0x78, 0xce, 0xba, - 0xce, 0x78, 0xce, 0xba, 0xce, 0x78, 0xce, 0xba, 0xce, 0x78, 0xce, 0xba, - 0xce, 0x78, 0xce, 0xba, 0xcf, 0x78, 0xce, 0xba, 0xcf, 0x78, 0xce, 0xba, - 0xcf, 0x78, 0xce, 0xba, 0xd0, 0x78, 0xce, 0xba, 0xd0, 0x78, 0xce, 0xba, - 0xd0, 0x78, 0xce, 0xba, 0xd0, 0x78, 0xce, 0xba, 0xd1, 0x78, 0xce, 0xba, - 0xd1, 0x78, 0xce, 0xba, 0xd1, 0x78, 0xce, 0xba, 0xd2, 0x78, 0xce, 0xba, - 0xd2, 0x78, 0xce, 0xba, 0xd2, 0x78, 0xce, 0xba, 0xd2, 0x78, 0xce, 0xba, - 0xd3, 0x78, 0xce, 0xba, 0xd3, 0x78, 0xce, 0xba, 0xd3, 0x78, 0xce, 0xba, - 0xd4, 0x78, 0xce, 0xba, 0xd4, 0x78, 0xce, 0xba, 0xd4, 0x78, 0xce, 0xba, - 0xd4, 0x78, 0xce, 0xba, 0xd5, 0x78, 0xce, 0xba, 0xd5, 0x78, 0xce, 0xba, - 0xd5, 0x78, 0xce, 0xba, 0xd6, 0x78, 0xce, 0xba, 0xd6, 0x78, 0xce, 0xba, - 0xd6, 0x78, 0xce, 0xba, 0xd6, 0x78, 0xce, 0xba, 0xd7, 0x78, 0xce, 0xba, - 0xd7, 0x78, 0xce, 0xba, 0xd7, 0x78, 0xce, 0xba, 0xd7, 0x78, 0xce, 0xba, - 0xd8, 0x78, 0xce, 0xba, 0xd8, 0x78, 0xce, 0xba, 0xd8, 0x78, 0xce, 0xba, - 0xd9, 0x78, 0xce, 0xba, 0xd9, 0x78, 0xce, 0xba, 0xd9, 0x78, 0xce, 0xba, - 0xd9, 0x78, 0xce, 0xba, 0xda, 0x78, 0xcf, 0xba, 0xda, 0x75, 0xce, 0xba, - 0xda, 0x78, 0xcf, 0xba, 0xda, 0x75, 0xce, 0xba, 0xdb, 0x78, 0xcf, 0xba, - 0xdb, 0x75, 0xce, 0xba, 0xdb, 0x78, 0xd8, 0xba, 0xdb, 0x94, 0xdb, 0xba, - 0xdc, 0x95, 0xda, 0xba, 0xdc, 0x95, 0xdb, 0xba, 0xdc, 0x95, 0xda, 0xba, - 0xdd, 0x95, 0xdb, 0xba, 0xdd, 0x95, 0xda, 0xba, 0xdd, 0x95, 0xdb, 0xba, - 0xdd, 0x95, 0xda, 0xba, 0xde, 0x95, 0xea, 0xba, 0xde, 0x83, 0xea, 0xba, - 0xde, 0x7f, 0xea, 0xba, 0xde, 0x83, 0xea, 0xba, 0xdf, 0x7f, 0xea, 0xba, - 0xdf, 0x83, 0xea, 0xba, 0xdf, 0x7f, 0xea, 0xba, 0xdf, 0x83, 0xea, 0xba, - 0xe0, 0x7f, 0xea, 0xba, 0xe0, 0x83, 0xea, 0xba, 0xe0, 0x7f, 0xea, 0xba, - 0xe1, 0x83, 0xea, 0xba, 0xe1, 0x7f, 0xea, 0xba, 0xe1, 0x83, 0xea, 0xba, - 0xe1, 0x7f, 0xeb, 0xba, 0xe2, 0x7d, 0xea, 0xba, 0xe2, 0x7f, 0xeb, 0xba, - 0xe2, 0x7d, 0xea, 0xba, 0xe2, 0x7f, 0xeb, 0xba, 0xe3, 0x7d, 0xea, 0xba, - 0xe3, 0x7f, 0xeb, 0xba, 0xe3, 0x7d, 0xea, 0xba, 0xe3, 0x7f, 0xeb, 0xba, - 0xe4, 0x7d, 0xea, 0xba, 0xe4, 0x7f, 0xeb, 0xba, 0xe4, 0x7d, 0xea, 0xba, - 0xe4, 0x7f, 0xeb, 0xba, 0xe5, 0x7d, 0xea, 0xba, 0xe5, 0x7f, 0xeb, 0xba, - 0xe5, 0x7d, 0xea, 0xba, 0xe5, 0x7f, 0xeb, 0xba, 0xe6, 0x7d, 0xea, 0xba, - 0xe6, 0x7f, 0xeb, 0xba, 0xe6, 0x7d, 0xea, 0xba, 0xe6, 0x7f, 0xeb, 0xba, - 0xe7, 0x7d, 0xea, 0xba, 0xe7, 0x7f, 0xeb, 0xba, 0xe7, 0x7d, 0xea, 0xba, - 0xe7, 0x7f, 0xeb, 0xba, 0xe8, 0x7d, 0xea, 0xba, 0xe8, 0x7f, 0xeb, 0xba, - 0xe8, 0x7d, 0xea, 0xba, 0xe8, 0x7f, 0xeb, 0xba, 0xe9, 0x7d, 0xea, 0xba, - 0xe9, 0x7f, 0xeb, 0xba, 0xe9, 0x7d, 0xea, 0xba, 0xe9, 0x7f, 0xeb, 0xba, - 0xea, 0x7d, 0xeb, 0xba, 0xea, 0x7d, 0xeb, 0xba, 0xea, 0x7d, 0xeb, 0xba, - 0xea, 0x7d, 0xeb, 0xba, 0xea, 0x7d, 0xeb, 0xba, 0xea, 0x7d, 0xeb, 0xba, - 0xea, 0x7d, 0xeb, 0xba, 0xea, 0x7d, 0xec, 0xba, 0xea, 0x7d, 0xec, 0xba, - 0xea, 0x7d, 0xec, 0xba, 0xea, 0x7d, 0xec, 0xba, 0xea, 0x7d, 0xec, 0xb8, - 0xeb, 0x7d, 0xed, 0xba, 0xea, 0x7d, 0xed, 0xb8, 0xeb, 0x7d, 0xed, 0xba, - 0xea, 0x7d, 0xed, 0xb8, 0xeb, 0x7d, 0xee, 0xba, 0xea, 0x7d, 0xee, 0xb8, - 0xeb, 0x7d, 0xee, 0xba, 0xea, 0x7d, 0xee, 0xb8, 0xeb, 0x7d, 0xef, 0xba, - 0xea, 0x7d, 0xef, 0xb8, 0xeb, 0x7d, 0xef, 0xba, 0xea, 0x7d, 0xef, 0xb8, - 0xeb, 0x7d, 0xf0, 0xba, 0xea, 0x7d, 0xf0, 0xb8, 0xeb, 0x7d, 0xf0, 0xbc, - 0xf5, 0x7d, 0xf0, 0xba, 0xf5, 0x7d, 0xf1, 0xbc, 0xf5, 0x7d, 0xf1, 0xba, - 0xf5, 0x7d, 0xf1, 0xbc, 0xf5, 0x7d, 0xf1, 0xba, 0xf5, 0x7d, 0xf2, 0xbc, - 0xf5, 0x7d, 0xf2, 0xba, 0xf5, 0x7d, 0xf2, 0xbc, 0xf5, 0x7d, 0xf2, 0xba, - 0xf5, 0x7d, 0xf2, 0xbc, 0xf5, 0x7d, 0xf3, 0xba, 0xf5, 0x7d, 0xf3, 0xbc, - 0xf5, 0x7d, 0xf3, 0xba, 0xf5, 0x7d, 0xf3, 0xbc, 0xf5, 0x7d, 0xf4, 0xba, - 0xf5, 0x7d, 0xf4, 0xba, 0xf6, 0x7d, 0xf4, 0xba, 0xf5, 0x7d, 0xf4, 0xba, - 0xf6, 0x7d, 0xf5, 0xba, 0xf5, 0x7d, 0xf5, 0xba, 0xf6, 0x7d, 0xf5, 0xba, - 0xf5, 0x7d, 0xf5, 0xba, 0xf6, 0x7d, 0xf5, 0xba, 0xf5, 0x7d, 0xf5, 0xba, - 0xf6, 0x7d, 0xf5, 0xba, 0xf6, 0x7d, 0xf5, 0xba, 0xf6, 0x7d, 0xf5, 0xba, - 0xf6, 0x7b, 0xf5, 0xba, 0xf7, 0x7d, 0xf5, 0xba, 0xf7, 0x7b, 0xf5, 0xba, - 0xf7, 0x7d, 0xf9, 0xba, 0xf7, 0x7e, 0xf9, 0xba, 0xf8, 0x7d, 0xf9, 0xba, - 0xf8, 0x7e, 0xf9, 0xba, 0xf8, 0x7d, 0xf9, 0xba, 0xf8, 0x7e, 0xf9, 0xba, - 0xf8, 0x7d, 0xf9, 0xba, 0xf9, 0x7e, 0xf9, 0xba, 0xf9, 0x7d, 0xfa, 0xba, - 0xf9, 0x7d, 0xf9, 0xba, 0xf9, 0x7d, 0xfa, 0xba, 0xf9, 0x7d, 0xfa, 0xba, - 0xf9, 0x7d, 0xfa, 0xba, 0xf9, 0x7d, 0xfa, 0xba, 0xf9, 0x7d, 0xfa, 0xba, - 0xf9, 0x7d, 0xfb, 0xba, 0xf9, 0x7d, 0xfb, 0xba, 0xf9, 0x7d, 0xfb, 0xb8, - 0xf9, 0x7d, 0xfb, 0xba, 0xf9, 0x7d, 0xfc, 0xb8, 0xf9, 0x7d, 0xfc, 0xba, - 0xf9, 0x7d, 0xfc, 0xb8, 0xf9, 0x7d, 0xfc, 0xba, 0xf9, 0x7d, 0xfc, 0xb8, - 0xf9, 0x7d, 0xfd, 0xba, 0xf9, 0x7d, 0xfd, 0xb8, 0xf9, 0x7d, 0xfd, 0xba, - 0xf9, 0x7d, 0xfd, 0xb8, 0xf9, 0x7d, 0xfe, 0xba, 0xf9, 0x7d, 0xfe, 0xb8, - 0xf9, 0x7d, 0xfe, 0xba, 0xf9, 0x7d, 0xfe, 0xb8, 0xf9, 0x7d, 0xfe, 0xba, - 0xf9, 0x7d, 0xff, 0xb8, 0xf9, 0x7d, 0xff, 0xba, 0xf9, 0x7d, 0x03, 0xc1, - 0x91, 0x7d, 0x0a, 0xbf, 0x91, 0x7d, 0x0f, 0xc1, 0x91, 0x7d, 0x14, 0xbf, - 0x91, 0x7d, 0x17, 0xc1, 0x91, 0x7d, 0x1b, 0xbf, 0x91, 0x7d, 0x1e, 0xc1, - 0x91, 0x7d, 0x20, 0xbf, 0x91, 0x7d, 0x23, 0xc1, 0x91, 0x7d, 0x25, 0xbf, - 0x91, 0x7d, 0x27, 0xc1, 0x91, 0x7d, 0x29, 0xbf, 0x91, 0x7d, 0x2b, 0xc1, - 0x91, 0x7d, 0x2d, 0xbf, 0x91, 0x7d, 0x2f, 0xc1, 0x91, 0x7d, 0x31, 0xbf, - 0x91, 0x7d, 0x32, 0xc1, 0x91, 0x7d, 0x34, 0xbf, 0x91, 0x7d, 0x35, 0xc1, - 0x91, 0x7d, 0x37, 0xbf, 0x91, 0x7d, 0x38, 0xc1, 0x91, 0x7d, 0x3a, 0xbf, - 0x91, 0x7d, 0x3b, 0xc1, 0x91, 0x7d, 0x3c, 0xbf, 0x91, 0x7d, 0x3e, 0xc1, - 0x91, 0x7d, 0x3f, 0xbf, 0x91, 0x7d, 0x40, 0xc1, 0x91, 0x7d, 0x42, 0xbf, - 0x91, 0x7d, 0x43, 0xc1, 0x91, 0x7d, 0x44, 0xbf, 0x91, 0x7d, 0x45, 0xc1, - 0x91, 0x7d, 0x46, 0xbf, 0x91, 0x7d, 0x47, 0xc1, 0x91, 0x7d, 0x48, 0xbf, - 0x91, 0x7d, 0x49, 0xc1, 0x91, 0x7d, 0x4a, 0xbf, 0x91, 0x7d, 0x4b, 0xc1, - 0x91, 0x7d, 0x4c, 0xbf, 0x91, 0x7d, 0x4d, 0xc1, 0x91, 0x7d, 0x4e, 0xbf, - 0x91, 0x7d, 0x4f, 0xc1, 0x91, 0x7d, 0x50, 0xbf, 0x91, 0x7d, 0x51, 0xbd, - 0x92, 0x7d, 0x52, 0xbf, 0x91, 0x7d, 0x53, 0xbd, 0x92, 0x7d, 0x54, 0xbf, - 0x91, 0x7d, 0x55, 0xbd, 0x92, 0x7d, 0x56, 0xbf, 0x91, 0x7d, 0x57, 0xbd, - 0x92, 0x7d, 0x58, 0xbf, 0x91, 0x7d, 0x58, 0xbd, 0x92, 0x7d, 0x59, 0xbf, - 0x91, 0x7d, 0x5a, 0xbd, 0x92, 0x7d, 0x5b, 0xbf, 0x91, 0x7d, 0x5c, 0xbd, - 0x92, 0x7d, 0x5d, 0xbf, 0x91, 0x7d, 0x5d, 0xbd, 0x92, 0x7d, 0x5e, 0xbf, - 0x91, 0x7d, 0x5f, 0xbd, 0x92, 0x7d, 0x60, 0xbf, 0x91, 0x7d, 0x60, 0xbd, - 0x92, 0x7d, 0x61, 0xbf, 0x91, 0x7d, 0x62, 0xbd, 0x92, 0x7d, 0x63, 0xbf, - 0x91, 0x7d, 0x63, 0xbd, 0x92, 0x7d, 0x64, 0xbf, 0x91, 0x7d, 0x65, 0xbd, - 0x92, 0x7d, 0x66, 0xbf, 0x91, 0x7d, 0x66, 0xbd, 0x92, 0x7d, 0x67, 0xbf, - 0x91, 0x7d, 0x68, 0xbd, 0x92, 0x7d, 0x68, 0xbf, 0x91, 0x7d, 0x69, 0xbd, - 0x92, 0x7d, 0x6a, 0xbf, 0x91, 0x7d, 0x6a, 0xbd, 0x92, 0x7d, 0x6b, 0xbf, - 0x91, 0x7d, 0x6c, 0xbd, 0x92, 0x7d, 0x6c, 0xbf, 0x91, 0x7d, 0x6d, 0xbd, - 0x92, 0x7d, 0x6e, 0xbf, 0x91, 0x7d, 0x6e, 0xbd, 0x92, 0x7d, 0x6f, 0xbf, - 0x91, 0x7d, 0x70, 0xbd, 0x92, 0x7d, 0x70, 0xbf, 0x91, 0x7d, 0x71, 0xbd, - 0x92, 0x7d, 0x72, 0xbf, 0x91, 0x7d, 0x72, 0xbd, 0x92, 0x7d, 0x73, 0xbf, - 0x91, 0x7d, 0x73, 0xbd, 0x92, 0x7d, 0x74, 0xbf, 0x91, 0x7d, 0x75, 0xbd, - 0x92, 0x7d, 0x75, 0xbf, 0x91, 0x7d, 0x76, 0xbd, 0x92, 0x7d, 0x76, 0xbf, - 0x91, 0x7d, 0x77, 0xbd, 0x92, 0x7d, 0x78, 0xbf, 0x91, 0x7d, 0x78, 0xbd, - 0x92, 0x7d, 0x79, 0xbf, 0x91, 0x7d, 0x79, 0xbd, 0x92, 0x7d, 0x7a, 0xbb, - 0x92, 0x7d, 0x7a, 0xbd, 0x92, 0x7d, 0x7b, 0xbb, 0x92, 0x7d, 0x7c, 0xbd, - 0x92, 0x7d, 0x7c, 0xbb, 0x92, 0x7d, 0x7d, 0xbd, 0x92, 0x7d, 0x7d, 0xbb, - 0x92, 0x7d, 0x7e, 0xbd, 0x92, 0x7d, 0x7e, 0xbb, 0x92, 0x7d, 0x7f, 0xbd, - 0x92, 0x7d, 0x7f, 0xbb, 0x92, 0x7d, 0x80, 0xbd, 0x92, 0x7d, 0x81, 0xbb, - 0x92, 0x7d, 0x81, 0xbd, 0x92, 0x7d, 0x82, 0xbb, 0x92, 0x7d, 0x82, 0xbd, - 0x92, 0x7d, 0x83, 0xbb, 0x92, 0x7d, 0x83, 0xbd, 0x92, 0x7d, 0x84, 0xbb, - 0x92, 0x7d, 0x84, 0xbd, 0x92, 0x7d, 0x85, 0xbb, 0x92, 0x7d, 0x85, 0xbd, - 0x92, 0x7d, 0x86, 0xbb, 0x92, 0x7d, 0x86, 0xbd, 0x92, 0x7d, 0x87, 0xbb, - 0x92, 0x7d, 0x87, 0xbd, 0x92, 0x7d, 0x88, 0xbb, 0x92, 0x7d, 0x88, 0xbd, - 0x92, 0x7d, 0x89, 0xbb, 0x92, 0x7d, 0x89, 0xbd, 0x92, 0x7d, 0x8a, 0xbb, - 0x92, 0x7d, 0x8a, 0xbd, 0x92, 0x7d, 0x8b, 0xbb, 0x92, 0x7d, 0x8b, 0xba, - 0x93, 0x7d, 0x8c, 0xbb, 0x92, 0x7d, 0x8c, 0xba, 0x93, 0x7d, 0x8d, 0xbb, - 0x92, 0x7d, 0x8d, 0xba, 0x93, 0x7d, 0x8e, 0xbb, 0x92, 0x7d, 0x8e, 0xba, - 0x93, 0x7d, 0x8e, 0xbb, 0x92, 0x7d, 0x8f, 0xba, 0x93, 0x7d, 0x8f, 0xbb, - 0x92, 0x7d, 0x90, 0xba, 0x93, 0x7d, 0x90, 0xbb, 0x92, 0x7d, 0x91, 0xba, - 0x93, 0x7d, 0x91, 0xbb, 0x92, 0x7d, 0x92, 0xba, 0x93, 0x7d, 0x92, 0xbb, - 0x92, 0x7d, 0x92, 0xba, 0x93, 0x7d, 0x92, 0xba, 0x93, 0x7d, 0x92, 0xba, - 0x94, 0x7d, 0x92, 0xba, 0x94, 0x7d, 0x94, 0xba, 0x94, 0x7a, 0x95, 0xba, - 0x95, 0x7a, 0x95, 0xba, 0x95, 0x7a, 0x96, 0xba, 0x96, 0x7a, 0x96, 0xba, - 0x96, 0x7a, 0x98, 0xba, 0x97, 0x7b, 0x99, 0xba, 0x97, 0x7b, 0x98, 0xba, - 0x98, 0x7b, 0x99, 0xba, 0x98, 0x7b, 0x98, 0xba, 0x98, 0x7b, 0x99, 0xba, - 0x99, 0x7b, 0x99, 0xba, 0x99, 0x7b, 0x9a, 0xba, 0x9a, 0x7b, 0x9a, 0xba, - 0x9a, 0x7b, 0x9a, 0xba, 0x9a, 0x7b, 0x9b, 0xba, 0x9b, 0x7b, 0x9b, 0xba, - 0x9b, 0x7b, 0x9c, 0xba, 0x9c, 0x7b, 0x9c, 0xba, 0x9c, 0x7b, 0x9d, 0xba, - 0x9d, 0x7c, 0x9e, 0xba, 0x9d, 0x7c, 0x9d, 0xba, 0x9d, 0x7c, 0x9e, 0xba, - 0x9e, 0x7c, 0x9e, 0xba, 0x9e, 0x7c, 0x9f, 0xba, 0x9f, 0x7c, 0x9f, 0xba, - 0x9f, 0x7c, 0x9f, 0xba, 0x9f, 0x7c, 0xa0, 0xba, 0xa0, 0x7c, 0xa0, 0xba, - 0xa0, 0x7c, 0xa1, 0xba, 0xa1, 0x7c, 0xa1, 0xba, 0xa1, 0x7c, 0xa1, 0xba, - 0xa1, 0x7c, 0xa2, 0xbb, 0xa2, 0x7d, 0xa2, 0xbb, 0xa2, 0x7d, 0xa3, 0xbb, - 0xa3, 0x7d, 0xa3, 0xbb, 0xa3, 0x7d, 0xa3, 0xbb, 0xa3, 0x7d, 0xa4, 0xbb, - 0xa4, 0x7d, 0xa4, 0xbb, 0xa4, 0x7d, 0xa5, 0xbb, 0xa5, 0x7d, 0xa5, 0xbb, - 0xa5, 0x7d, 0xa5, 0xbb, 0xa5, 0x7d, 0xa6, 0xbb, 0xa6, 0x7d, 0xa6, 0xbb, - 0xa5, 0x7d, 0xa6, 0xbb, 0xa6, 0x7d, 0xa7, 0xbb, 0xa7, 0x7d, 0xa7, 0xbb, - 0xa7, 0x7d, 0xa8, 0xbb, 0xa8, 0x7d, 0xa8, 0xbb, 0xa8, 0x7d, 0xa8, 0xbb, - 0xa8, 0x7d, 0xa9, 0xbb, 0xaa, 0x7d, 0xa9, 0xba, 0xaa, 0x7d, 0xaa, 0xba, - 0xaa, 0x7d, 0xa9, 0xba, 0xaa, 0x7d, 0xaa, 0xba, 0xaa, 0x7d, 0xa9, 0xba, - 0xab, 0x7d, 0xaa, 0xba, 0xab, 0x7d, 0xa9, 0xba, 0xab, 0x7d, 0xaa, 0xba, - 0xac, 0x7d, 0xa9, 0xba, 0xac, 0x7d, 0xaa, 0xba, 0xac, 0x7d, 0xaa, 0xba, - 0xad, 0x7a, 0xaa, 0xba, 0xad, 0x7d, 0xaa, 0xba, 0xae, 0x7a, 0xaa, 0xba, - 0xae, 0x7d, 0xaa, 0xba, 0xae, 0x7a, 0xaa, 0xba, 0xaf, 0x7d, 0xaa, 0xba, - 0xaf, 0x7a, 0xaa, 0xba, 0xaf, 0x7d, 0xaa, 0xba, 0xb0, 0x7a, 0xaa, 0xba, - 0xb0, 0x7d, 0xaa, 0xba, 0xb0, 0x7a, 0xaa, 0xba, 0xb1, 0x7d, 0xaa, 0xba, - 0xb1, 0x7a, 0xaa, 0xba, 0xb2, 0x7d, 0xaa, 0xba, 0xb2, 0x7a, 0xaa, 0xba, - 0xb2, 0x7d, 0xaa, 0xba, 0xb3, 0x7a, 0xb6, 0xba, 0xb3, 0x71, 0xb6, 0xba, - 0xb3, 0x71, 0xb6, 0xba, 0xb4, 0x71, 0xb6, 0xba, 0xb4, 0x71, 0xb6, 0xba, - 0xb4, 0x71, 0xb6, 0xba, 0xb5, 0x71, 0xb6, 0xba, 0xb5, 0x71, 0xb6, 0xba, - 0xb5, 0x71, 0xb6, 0xba, 0xb6, 0x71, 0xb6, 0xba, 0xb6, 0x71, 0xb6, 0xba, - 0xb6, 0x71, 0xb7, 0xba, 0xb7, 0x71, 0xba, 0xba, 0xb7, 0x72, 0xba, 0xba, - 0xb7, 0x72, 0xba, 0xba, 0xb8, 0x72, 0xba, 0xba, 0xb8, 0x72, 0xba, 0xba, - 0xb8, 0x72, 0xba, 0xba, 0xb9, 0x72, 0xba, 0xba, 0xb9, 0x72, 0xba, 0xba, - 0xb9, 0x72, 0xba, 0xba, 0xba, 0x72, 0xba, 0xba, 0xba, 0x72, 0xba, 0xba, - 0xba, 0x72, 0xbd, 0xba, 0xbb, 0x73, 0xbe, 0xba, 0xbb, 0x73, 0xbd, 0xba, - 0xbb, 0x73, 0xbe, 0xba, 0xbc, 0x73, 0xbd, 0xba, 0xbc, 0x73, 0xbe, 0xba, - 0xbc, 0x73, 0xbd, 0xba, 0xbd, 0x73, 0xbe, 0xba, 0xbd, 0x73, 0xbd, 0xba, - 0xbd, 0x73, 0xbe, 0xba, 0xbe, 0x73, 0xbe, 0xba, 0xbe, 0x73, 0xc1, 0xba, - 0xbe, 0x74, 0xc1, 0xba, 0xbf, 0x74, 0xc1, 0xba, 0xbf, 0x74, 0xc1, 0xba, - 0xbf, 0x74, 0xc1, 0xba, 0xc0, 0x74, 0xc1, 0xba, 0xc0, 0x74, 0xc1, 0xba, - 0xc0, 0x74, 0xc1, 0xba, 0xc1, 0x74, 0xc1, 0xba, 0xc1, 0x74, 0xc1, 0xba, - 0xc1, 0x74, 0xc1, 0xba, 0xc1, 0x74, 0xc4, 0xba, 0xc2, 0x75, 0xc5, 0xba, - 0xc2, 0x75, 0xc4, 0xba, 0xc2, 0x75, 0xc5, 0xba, 0xc3, 0x75, 0xc4, 0xba, - 0xc3, 0x75, 0xc5, 0xba, 0xc3, 0x75, 0xc4, 0xba, 0xc4, 0x75, 0xc5, 0xba, - 0xc4, 0x75, 0xc4, 0xba, 0xc4, 0x75, 0xc5, 0xba, 0xc5, 0x75, 0xc5, 0xba, - 0xc5, 0x75, 0xc5, 0xba, 0xc5, 0x75, 0xc6, 0xba, 0xc6, 0x75, 0xc8, 0xba, - 0xc6, 0x76, 0xc8, 0xba, 0xc6, 0x76, 0xc8, 0xba, 0xc6, 0x76, 0xc8, 0xba, - 0xc7, 0x76, 0xc8, 0xba, 0xc7, 0x76, 0xc8, 0xba, 0xc7, 0x76, 0xc8, 0xba, - 0xc8, 0x76, 0xc8, 0xba, 0xc8, 0x76, 0xc8, 0xba, 0xc8, 0x76, 0xc9, 0xba, - 0xc9, 0x76, 0xc9, 0xba, 0xc9, 0x76, 0xcb, 0xba, 0xc9, 0x77, 0xcb, 0xba, - 0xc9, 0x77, 0xcb, 0xba, 0xca, 0x77, 0xcb, 0xba, 0xca, 0x77, 0xcb, 0xba, - 0xca, 0x77, 0xcb, 0xba, 0xcb, 0x77, 0xcb, 0xba, 0xcb, 0x77, 0xcb, 0xba, - 0xcb, 0x77, 0xcc, 0xba, 0xcc, 0x77, 0xcc, 0xba, 0xcc, 0x77, 0xcc, 0xba, - 0xcc, 0x77, 0xce, 0xba, 0xcc, 0x78, 0xce, 0xba, 0xcd, 0x78, 0xce, 0xba, - 0xcd, 0x78, 0xce, 0xba, 0xcd, 0x78, 0xce, 0xba, 0xce, 0x78, 0xce, 0xba, - 0xce, 0x78, 0xce, 0xba, 0xce, 0x78, 0xce, 0xba, 0xce, 0x78, 0xce, 0xba, - 0xcf, 0x78, 0xce, 0xba, 0xcf, 0x78, 0xce, 0xba, 0xcf, 0x78, 0xce, 0xba, - 0xd0, 0x78, 0xce, 0xba, 0xd0, 0x78, 0xce, 0xba, 0xd0, 0x78, 0xce, 0xba, - 0xd0, 0x78, 0xce, 0xba, 0xd1, 0x78, 0xce, 0xba, 0xd1, 0x78, 0xce, 0xba, - 0xd1, 0x78, 0xce, 0xba, 0xd2, 0x78, 0xce, 0xba, 0xd2, 0x78, 0xce, 0xba, - 0xd2, 0x78, 0xce, 0xba, 0xd2, 0x78, 0xce, 0xba, 0xd3, 0x78, 0xce, 0xba, - 0xd3, 0x78, 0xce, 0xba, 0xd3, 0x78, 0xce, 0xba, 0xd4, 0x78, 0xce, 0xba, - 0xd4, 0x78, 0xce, 0xba, 0xd4, 0x78, 0xce, 0xba, 0xd4, 0x78, 0xce, 0xba, - 0xd5, 0x78, 0xce, 0xba, 0xd5, 0x78, 0xce, 0xba, 0xd5, 0x78, 0xce, 0xba, - 0xd6, 0x78, 0xce, 0xba, 0xd6, 0x78, 0xce, 0xba, 0xd6, 0x78, 0xce, 0xba, - 0xd6, 0x78, 0xce, 0xba, 0xd7, 0x78, 0xce, 0xba, 0xd7, 0x78, 0xce, 0xba, - 0xd7, 0x78, 0xce, 0xba, 0xd7, 0x78, 0xce, 0xba, 0xd8, 0x78, 0xce, 0xba, - 0xd8, 0x78, 0xce, 0xba, 0xd8, 0x78, 0xce, 0xba, 0xd9, 0x78, 0xce, 0xba, - 0xd9, 0x78, 0xce, 0xba, 0xd9, 0x78, 0xce, 0xba, 0xd9, 0x78, 0xce, 0xba, - 0xda, 0x78, 0xcf, 0xba, 0xda, 0x75, 0xce, 0xba, 0xda, 0x78, 0xcf, 0xba, - 0xda, 0x75, 0xce, 0xba, 0xdb, 0x78, 0xd9, 0xba, 0xdb, 0x94, 0xd9, 0xba, - 0xdb, 0x94, 0xd9, 0xba, 0xdb, 0x94, 0xd9, 0xba, 0xdc, 0x94, 0xd9, 0xba, - 0xdc, 0x94, 0xd9, 0xba, 0xdc, 0x94, 0xdc, 0xba, 0xdd, 0x95, 0xd9, 0xba, - 0xdd, 0x94, 0xdc, 0xba, 0xdd, 0x95, 0xdc, 0xba, 0xdd, 0x95, 0xdc, 0xba, - 0xde, 0x95, 0xdc, 0xba, 0xde, 0x95, 0xea, 0xba, 0xde, 0x7e, 0xea, 0xba, - 0xde, 0x82, 0xea, 0xba, 0xdf, 0x7e, 0xea, 0xba, 0xdf, 0x82, 0xea, 0xba, - 0xdf, 0x7e, 0xea, 0xba, 0xdf, 0x82, 0xea, 0xba, 0xe0, 0x7e, 0xea, 0xba, - 0xe0, 0x82, 0xea, 0xba, 0xe0, 0x7e, 0xea, 0xba, 0xe1, 0x82, 0xea, 0xba, - 0xe1, 0x7e, 0xea, 0xba, 0xe1, 0x82, 0xea, 0xba, 0xe1, 0x7e, 0xea, 0xba, - 0xe2, 0x82, 0xea, 0xba, 0xe2, 0x7e, 0xea, 0xba, 0xe2, 0x82, 0xea, 0xba, - 0xe2, 0x7e, 0xea, 0xba, 0xe3, 0x82, 0xea, 0xba, 0xe3, 0x7e, 0xea, 0xba, - 0xe3, 0x82, 0xea, 0xba, 0xe3, 0x7e, 0xea, 0xba, 0xe4, 0x82, 0xea, 0xba, - 0xe4, 0x7e, 0xea, 0xba, 0xe4, 0x82, 0xea, 0xba, 0xe4, 0x7e, 0xeb, 0xba, - 0xe5, 0x7d, 0xea, 0xba, 0xe5, 0x7e, 0xeb, 0xba, 0xe5, 0x7d, 0xea, 0xba, - 0xe5, 0x7e, 0xeb, 0xba, 0xe6, 0x7d, 0xea, 0xba, 0xe6, 0x7e, 0xeb, 0xba, - 0xe6, 0x7d, 0xea, 0xba, 0xe6, 0x7e, 0xeb, 0xba, 0xe7, 0x7d, 0xea, 0xba, - 0xe7, 0x7e, 0xeb, 0xba, 0xe7, 0x7d, 0xea, 0xba, 0xe7, 0x7e, 0xeb, 0xba, - 0xe8, 0x7d, 0xea, 0xba, 0xe8, 0x7e, 0xeb, 0xba, 0xe8, 0x7d, 0xea, 0xba, - 0xe8, 0x7e, 0xeb, 0xba, 0xe9, 0x7d, 0xea, 0xba, 0xe9, 0x7e, 0xeb, 0xba, - 0xe9, 0x7d, 0xea, 0xba, 0xe9, 0x7e, 0xeb, 0xba, 0xea, 0x7d, 0xea, 0xba, - 0xea, 0x7e, 0xeb, 0xba, 0xea, 0x7d, 0xeb, 0xba, 0xea, 0x7d, 0xeb, 0xba, - 0xea, 0x7d, 0xeb, 0xba, 0xea, 0x7d, 0xeb, 0xba, 0xea, 0x7d, 0xeb, 0xba, - 0xea, 0x7d, 0xec, 0xba, 0xea, 0x7d, 0xec, 0xba, 0xea, 0x7d, 0xec, 0xba, - 0xea, 0x7d, 0xec, 0xba, 0xea, 0x7d, 0xec, 0xba, 0xea, 0x7d, 0xed, 0xba, - 0xea, 0x7d, 0xed, 0xba, 0xea, 0x7d, 0xed, 0xba, 0xea, 0x7d, 0xed, 0xba, - 0xea, 0x7d, 0xee, 0xba, 0xea, 0x7d, 0xee, 0xba, 0xea, 0x7d, 0xee, 0xba, - 0xea, 0x7d, 0xee, 0xb7, 0xeb, 0x7d, 0xef, 0xba, 0xea, 0x7d, 0xef, 0xb7, - 0xeb, 0x7d, 0xef, 0xba, 0xea, 0x7d, 0xef, 0xb7, 0xeb, 0x7d, 0xf0, 0xba, - 0xea, 0x7d, 0xf0, 0xb7, 0xeb, 0x7d, 0xf0, 0xbc, 0xf5, 0x7d, 0xf0, 0xba, - 0xf5, 0x7d, 0xf1, 0xbc, 0xf5, 0x7d, 0xf1, 0xba, 0xf5, 0x7d, 0xf1, 0xbc, - 0xf5, 0x7d, 0xf1, 0xba, 0xf5, 0x7d, 0xf2, 0xbc, 0xf5, 0x7d, 0xf2, 0xba, - 0xf5, 0x7d, 0xf2, 0xbc, 0xf5, 0x7d, 0xf2, 0xba, 0xf5, 0x7d, 0xf2, 0xbc, - 0xf5, 0x7d, 0xf3, 0xba, 0xf5, 0x7d, 0xf3, 0xbc, 0xf5, 0x7d, 0xf3, 0xba, - 0xf5, 0x7d, 0xf3, 0xbc, 0xf5, 0x7d, 0xf4, 0xba, 0xf5, 0x7d, 0xf4, 0xba, - 0xf6, 0x7d, 0xf4, 0xba, 0xf5, 0x7d, 0xf4, 0xba, 0xf6, 0x7d, 0xf5, 0xba, - 0xf5, 0x7d, 0xf5, 0xba, 0xf6, 0x7d, 0xf5, 0xba, 0xf5, 0x7d, 0xf5, 0xba, - 0xf6, 0x7d, 0xf5, 0xba, 0xf5, 0x7d, 0xf5, 0xba, 0xf6, 0x7d, 0xf5, 0xba, - 0xf6, 0x7d, 0xf5, 0xba, 0xf6, 0x7d, 0xf5, 0xba, 0xf6, 0x7b, 0xf5, 0xba, - 0xf7, 0x7d, 0xf5, 0xba, 0xf7, 0x7b, 0xf5, 0xba, 0xf7, 0x7d, 0xf9, 0xba, - 0xf7, 0x7d, 0xf9, 0xba, 0xf8, 0x7d, 0xf9, 0xba, 0xf8, 0x7d, 0xf9, 0xba, - 0xf8, 0x7d, 0xf9, 0xba, 0xf8, 0x7d, 0xf9, 0xba, 0xf8, 0x7d, 0xf9, 0xba, - 0xf9, 0x7d, 0xf9, 0xba, 0xf9, 0x7d, 0xf9, 0xb9, 0xf9, 0x7d, 0xf9, 0xba, - 0xf9, 0x7d, 0xfa, 0xb9, 0xf9, 0x7d, 0xfa, 0xba, 0xf9, 0x7d, 0xfa, 0xb9, - 0xf9, 0x7d, 0xfa, 0xba, 0xf9, 0x7d, 0xfa, 0xb9, 0xf9, 0x7d, 0xfb, 0xba, - 0xf9, 0x7d, 0xfb, 0xb9, 0xf9, 0x7d, 0xfb, 0xba, 0xf9, 0x7d, 0xfb, 0xb9, - 0xf9, 0x7d, 0xfc, 0xba, 0xf9, 0x7d, 0xfc, 0xb9, 0xf9, 0x7d, 0xfc, 0xba, - 0xf9, 0x7d, 0xfc, 0xb9, 0xf9, 0x7d, 0xfc, 0xba, 0xf9, 0x7d, 0xfd, 0xb9, - 0xf9, 0x7d, 0xfd, 0xb7, 0xf9, 0x7d, 0xfd, 0xb9, 0xf9, 0x7d, 0xfd, 0xb7, - 0xf9, 0x7d, 0xfe, 0xb9, 0xf9, 0x7d, 0xfe, 0xb7, 0xf9, 0x7d, 0xfe, 0xb9, - 0xf9, 0x7d, 0xfe, 0xb7, 0xf9, 0x7d, 0xfe, 0xb9, 0xf9, 0x7d, 0xff, 0xb7, - 0xf9, 0x7d, 0xff, 0xb9, 0xf9, 0x7d, 0x03, 0xc1, 0x91, 0x7e, 0x0a, 0xc3, - 0x90, 0x7e, 0x0f, 0xc1, 0x91, 0x7e, 0x14, 0xc3, 0x90, 0x7e, 0x17, 0xc1, - 0x91, 0x7e, 0x1b, 0xc3, 0x90, 0x7e, 0x1e, 0xc1, 0x91, 0x7e, 0x20, 0xc1, - 0x91, 0x7e, 0x23, 0xc1, 0x91, 0x7e, 0x25, 0xc1, 0x91, 0x7e, 0x27, 0xc1, - 0x91, 0x7e, 0x29, 0xc1, 0x91, 0x7e, 0x2b, 0xc1, 0x91, 0x7e, 0x2d, 0xc1, - 0x91, 0x7e, 0x2f, 0xc1, 0x91, 0x7e, 0x31, 0xc3, 0x90, 0x7e, 0x32, 0xc1, - 0x91, 0x7e, 0x34, 0xc3, 0x90, 0x7e, 0x35, 0xc1, 0x91, 0x7e, 0x37, 0xc3, - 0x90, 0x7e, 0x38, 0xc1, 0x91, 0x7e, 0x3a, 0xc3, 0x90, 0x7e, 0x3b, 0xc1, - 0x91, 0x7e, 0x3c, 0xc3, 0x90, 0x7e, 0x3e, 0xc1, 0x91, 0x7e, 0x3f, 0xbf, - 0x91, 0x7e, 0x40, 0xc1, 0x91, 0x7e, 0x42, 0xbf, 0x91, 0x7e, 0x43, 0xc1, - 0x91, 0x7e, 0x44, 0xbf, 0x91, 0x7e, 0x45, 0xc1, 0x91, 0x7e, 0x46, 0xbf, - 0x91, 0x7e, 0x47, 0xc1, 0x91, 0x7e, 0x48, 0xbf, 0x91, 0x7e, 0x49, 0xc1, - 0x91, 0x7e, 0x4a, 0xbf, 0x91, 0x7e, 0x4b, 0xc1, 0x91, 0x7e, 0x4c, 0xbf, - 0x91, 0x7e, 0x4d, 0xc1, 0x91, 0x7e, 0x4e, 0xbf, 0x91, 0x7e, 0x4f, 0xc1, - 0x91, 0x7e, 0x50, 0xbf, 0x91, 0x7e, 0x51, 0xc1, 0x91, 0x7e, 0x52, 0xbf, - 0x91, 0x7e, 0x53, 0xc1, 0x91, 0x7e, 0x54, 0xbf, 0x91, 0x7e, 0x55, 0xc1, - 0x91, 0x7e, 0x56, 0xbf, 0x91, 0x7e, 0x57, 0xc1, 0x91, 0x7e, 0x58, 0xbf, - 0x91, 0x7e, 0x58, 0xc1, 0x91, 0x7e, 0x59, 0xbf, 0x91, 0x7e, 0x5a, 0xc1, - 0x91, 0x7e, 0x5b, 0xbf, 0x91, 0x7e, 0x5c, 0xc1, 0x91, 0x7e, 0x5d, 0xbf, - 0x91, 0x7e, 0x5d, 0xc1, 0x91, 0x7e, 0x5e, 0xbf, 0x91, 0x7e, 0x5f, 0xc1, - 0x91, 0x7e, 0x60, 0xbf, 0x91, 0x7e, 0x60, 0xc1, 0x91, 0x7e, 0x61, 0xbf, - 0x91, 0x7e, 0x62, 0xbd, 0x92, 0x7e, 0x63, 0xbf, 0x91, 0x7e, 0x63, 0xbd, - 0x92, 0x7e, 0x64, 0xbf, 0x91, 0x7e, 0x65, 0xbd, 0x92, 0x7e, 0x66, 0xbf, - 0x91, 0x7e, 0x66, 0xbd, 0x92, 0x7e, 0x67, 0xbf, 0x91, 0x7e, 0x68, 0xbd, - 0x92, 0x7e, 0x68, 0xbf, 0x91, 0x7e, 0x69, 0xbd, 0x92, 0x7e, 0x6a, 0xbf, - 0x91, 0x7e, 0x6a, 0xbd, 0x92, 0x7e, 0x6b, 0xbf, 0x91, 0x7e, 0x6c, 0xbd, - 0x92, 0x7e, 0x6c, 0xbf, 0x91, 0x7e, 0x6d, 0xbd, 0x92, 0x7e, 0x6e, 0xbf, - 0x91, 0x7e, 0x6e, 0xbd, 0x92, 0x7e, 0x6f, 0xbf, 0x91, 0x7e, 0x70, 0xbd, - 0x92, 0x7e, 0x70, 0xbf, 0x91, 0x7e, 0x71, 0xbd, 0x92, 0x7e, 0x72, 0xbf, - 0x91, 0x7e, 0x72, 0xbd, 0x92, 0x7e, 0x73, 0xbf, 0x91, 0x7e, 0x73, 0xbd, - 0x92, 0x7e, 0x74, 0xbf, 0x91, 0x7e, 0x75, 0xbd, 0x92, 0x7e, 0x75, 0xbf, - 0x91, 0x7e, 0x76, 0xbd, 0x92, 0x7e, 0x76, 0xbf, 0x91, 0x7e, 0x77, 0xbd, - 0x92, 0x7e, 0x78, 0xbf, 0x91, 0x7e, 0x78, 0xbd, 0x92, 0x7e, 0x79, 0xbf, - 0x91, 0x7e, 0x79, 0xbd, 0x92, 0x7e, 0x7a, 0xba, 0x92, 0x7e, 0x7a, 0xbd, - 0x92, 0x7e, 0x7b, 0xba, 0x92, 0x7e, 0x7c, 0xbd, 0x92, 0x7e, 0x7c, 0xba, - 0x92, 0x7e, 0x7d, 0xbd, 0x92, 0x7e, 0x7d, 0xba, 0x92, 0x7e, 0x7e, 0xbd, - 0x92, 0x7e, 0x7e, 0xba, 0x92, 0x7e, 0x7f, 0xbd, 0x92, 0x7e, 0x7f, 0xba, - 0x92, 0x7e, 0x80, 0xbd, 0x92, 0x7e, 0x81, 0xba, 0x92, 0x7e, 0x81, 0xbd, - 0x92, 0x7e, 0x82, 0xba, 0x92, 0x7e, 0x82, 0xbd, 0x92, 0x7e, 0x83, 0xba, - 0x92, 0x7e, 0x83, 0xbd, 0x92, 0x7e, 0x84, 0xba, 0x92, 0x7e, 0x84, 0xbd, - 0x92, 0x7e, 0x85, 0xba, 0x92, 0x7e, 0x85, 0xbd, 0x92, 0x7e, 0x86, 0xba, - 0x92, 0x7e, 0x86, 0xbd, 0x92, 0x7e, 0x87, 0xba, 0x92, 0x7e, 0x87, 0xbd, - 0x92, 0x7e, 0x88, 0xba, 0x92, 0x7e, 0x88, 0xbd, 0x92, 0x7e, 0x89, 0xba, - 0x92, 0x7e, 0x89, 0xbd, 0x92, 0x7e, 0x8a, 0xba, 0x92, 0x7e, 0x8a, 0xbd, - 0x92, 0x7e, 0x8b, 0xba, 0x92, 0x7e, 0x8b, 0xba, 0x93, 0x7e, 0x8c, 0xba, - 0x92, 0x7e, 0x8c, 0xba, 0x93, 0x7e, 0x8d, 0xba, 0x92, 0x7e, 0x8d, 0xba, - 0x93, 0x7e, 0x8e, 0xba, 0x92, 0x7e, 0x8e, 0xba, 0x93, 0x7e, 0x8e, 0xba, - 0x92, 0x7e, 0x8f, 0xba, 0x93, 0x7e, 0x8f, 0xba, 0x92, 0x7e, 0x90, 0xba, - 0x93, 0x7e, 0x90, 0xba, 0x92, 0x7e, 0x91, 0xba, 0x93, 0x7e, 0x91, 0xba, - 0x92, 0x7e, 0x92, 0xba, 0x93, 0x7e, 0x92, 0xba, 0x92, 0x7d, 0x92, 0xba, - 0x93, 0x7e, 0x92, 0xba, 0x93, 0x7d, 0x92, 0xba, 0x94, 0x7e, 0x92, 0xba, - 0x94, 0x7d, 0x96, 0xba, 0x94, 0x80, 0x96, 0xba, 0x95, 0x80, 0x96, 0xba, - 0x95, 0x80, 0x96, 0xba, 0x96, 0x80, 0x96, 0xba, 0x96, 0x80, 0x97, 0xba, - 0x97, 0x80, 0x97, 0xba, 0x97, 0x80, 0x97, 0xba, 0x98, 0x80, 0x97, 0xba, - 0x98, 0x80, 0x97, 0xba, 0x98, 0x80, 0x97, 0xba, 0x99, 0x80, 0x9b, 0xba, - 0x99, 0x7c, 0x9b, 0xba, 0x9a, 0x7c, 0x9b, 0xba, 0x9a, 0x7c, 0x9b, 0xba, - 0x9a, 0x7c, 0x9b, 0xba, 0x9b, 0x7c, 0x9b, 0xba, 0x9b, 0x7c, 0x9c, 0xba, - 0x9c, 0x7c, 0x9c, 0xba, 0x9c, 0x7c, 0x9d, 0xba, 0x9d, 0x7c, 0x9d, 0xba, - 0x9d, 0x7c, 0x9d, 0xba, 0x9d, 0x7c, 0x9e, 0xba, 0x9e, 0x7c, 0x9e, 0xba, - 0x9e, 0x7c, 0x9f, 0xba, 0x9f, 0x7d, 0xa0, 0xba, 0x9f, 0x7d, 0x9f, 0xba, - 0x9f, 0x7d, 0xa0, 0xba, 0xa0, 0x7d, 0xa0, 0xba, 0xa0, 0x7d, 0xa1, 0xba, - 0xa1, 0x7d, 0xa1, 0xba, 0xa1, 0x7d, 0xa1, 0xba, 0xa1, 0x7d, 0xa2, 0xba, - 0xa2, 0x7d, 0xa2, 0xba, 0xa2, 0x7d, 0xa3, 0xba, 0xa3, 0x7d, 0xa3, 0xba, - 0xa3, 0x7d, 0xa3, 0xba, 0xa3, 0x7d, 0xa4, 0xbb, 0xa4, 0x7e, 0xa4, 0xbb, - 0xa4, 0x7e, 0xa5, 0xbb, 0xa5, 0x7e, 0xa5, 0xbb, 0xa5, 0x7e, 0xa5, 0xbb, - 0xa5, 0x7e, 0xa6, 0xbb, 0xa6, 0x7e, 0xa6, 0xbb, 0xa6, 0x7e, 0xa6, 0xbb, - 0xa6, 0x7e, 0xa7, 0xbb, 0xa7, 0x7e, 0xa7, 0xbb, 0xa7, 0x7e, 0xa8, 0xbb, - 0xa8, 0x7e, 0xa8, 0xbb, 0xa7, 0x7e, 0xa8, 0xbb, 0xa8, 0x7e, 0xa9, 0xbb, - 0xaa, 0x7e, 0xa9, 0xba, 0xaa, 0x7e, 0xaa, 0xba, 0xaa, 0x7e, 0xa9, 0xba, - 0xaa, 0x7e, 0xaa, 0xba, 0xaa, 0x7e, 0xa9, 0xba, 0xab, 0x7e, 0xaa, 0xba, - 0xab, 0x7e, 0xa9, 0xba, 0xab, 0x7e, 0xaa, 0xba, 0xac, 0x7e, 0xa9, 0xba, - 0xac, 0x7e, 0xaa, 0xba, 0xac, 0x7e, 0xaa, 0xba, 0xad, 0x7b, 0xaa, 0xba, - 0xad, 0x7e, 0xaa, 0xba, 0xae, 0x7b, 0xaa, 0xba, 0xae, 0x7e, 0xaa, 0xba, - 0xae, 0x7b, 0xaa, 0xba, 0xaf, 0x7e, 0xaa, 0xba, 0xaf, 0x7b, 0xaa, 0xba, - 0xaf, 0x7e, 0xaa, 0xba, 0xb0, 0x7b, 0xaa, 0xba, 0xb0, 0x7e, 0xaa, 0xba, - 0xb0, 0x7b, 0xaa, 0xba, 0xb1, 0x7e, 0xaa, 0xba, 0xb1, 0x7b, 0xaa, 0xba, - 0xb2, 0x7e, 0xaa, 0xba, 0xb2, 0x7b, 0xaa, 0xba, 0xb2, 0x7e, 0xaa, 0xba, - 0xb3, 0x7b, 0xaa, 0xba, 0xb3, 0x7e, 0xb4, 0xba, 0xb3, 0x71, 0xb4, 0xba, - 0xb4, 0x71, 0xb4, 0xba, 0xb4, 0x71, 0xb4, 0xba, 0xb4, 0x71, 0xb5, 0xba, - 0xb5, 0x71, 0xb8, 0xba, 0xb5, 0x72, 0xb8, 0xba, 0xb5, 0x72, 0xb8, 0xba, - 0xb6, 0x72, 0xb8, 0xba, 0xb6, 0x72, 0xb8, 0xba, 0xb6, 0x72, 0xb8, 0xba, - 0xb7, 0x72, 0xb8, 0xba, 0xb7, 0x72, 0xb8, 0xba, 0xb7, 0x72, 0xb8, 0xba, - 0xb8, 0x72, 0xb8, 0xba, 0xb8, 0x72, 0xb8, 0xba, 0xb8, 0x72, 0xbb, 0xba, - 0xb9, 0x73, 0xbc, 0xba, 0xb9, 0x73, 0xbb, 0xba, 0xb9, 0x73, 0xbc, 0xba, - 0xba, 0x73, 0xbb, 0xba, 0xba, 0x73, 0xbc, 0xba, 0xba, 0x73, 0xbb, 0xba, - 0xbb, 0x73, 0xbc, 0xba, 0xbb, 0x73, 0xbb, 0xba, 0xbb, 0x73, 0xbc, 0xba, - 0xbc, 0x73, 0xbc, 0xba, 0xbc, 0x73, 0xbf, 0xba, 0xbc, 0x74, 0xbf, 0xba, - 0xbd, 0x74, 0xbf, 0xba, 0xbd, 0x74, 0xbf, 0xba, 0xbd, 0x74, 0xbf, 0xba, - 0xbe, 0x74, 0xbf, 0xba, 0xbe, 0x74, 0xbf, 0xba, 0xbe, 0x74, 0xbf, 0xba, - 0xbf, 0x74, 0xbf, 0xba, 0xbf, 0x74, 0xbf, 0xba, 0xbf, 0x74, 0xc0, 0xba, - 0xc0, 0x74, 0xc2, 0xba, 0xc0, 0x75, 0xc3, 0xba, 0xc0, 0x75, 0xc2, 0xba, - 0xc1, 0x75, 0xc3, 0xba, 0xc1, 0x75, 0xc2, 0xba, 0xc1, 0x75, 0xc3, 0xba, - 0xc1, 0x75, 0xc2, 0xba, 0xc2, 0x75, 0xc3, 0xba, 0xc2, 0x75, 0xc2, 0xba, - 0xc2, 0x75, 0xc3, 0xba, 0xc3, 0x75, 0xc3, 0xba, 0xc3, 0x75, 0xc3, 0xba, - 0xc3, 0x75, 0xc6, 0xba, 0xc4, 0x76, 0xc6, 0xba, 0xc4, 0x76, 0xc6, 0xba, - 0xc4, 0x76, 0xc6, 0xba, 0xc5, 0x76, 0xc6, 0xba, 0xc5, 0x76, 0xc6, 0xba, - 0xc5, 0x76, 0xc6, 0xba, 0xc6, 0x76, 0xc6, 0xba, 0xc6, 0x76, 0xc6, 0xba, - 0xc6, 0x76, 0xc6, 0xba, 0xc6, 0x76, 0xc7, 0xba, 0xc7, 0x76, 0xc7, 0xba, - 0xc7, 0x76, 0xc7, 0xba, 0xc7, 0x76, 0xc9, 0xba, 0xc8, 0x77, 0xca, 0xba, - 0xc8, 0x77, 0xc9, 0xba, 0xc8, 0x77, 0xca, 0xba, 0xc9, 0x77, 0xc9, 0xba, - 0xc9, 0x77, 0xca, 0xba, 0xc9, 0x77, 0xc9, 0xba, 0xc9, 0x77, 0xca, 0xba, - 0xca, 0x77, 0xca, 0xba, 0xca, 0x77, 0xca, 0xba, 0xca, 0x77, 0xcb, 0xba, - 0xcb, 0x77, 0xcd, 0xba, 0xcb, 0x78, 0xcd, 0xba, 0xcb, 0x78, 0xcd, 0xba, - 0xcc, 0x78, 0xcd, 0xba, 0xcc, 0x78, 0xcd, 0xba, 0xcc, 0x78, 0xcd, 0xba, - 0xcc, 0x78, 0xcd, 0xba, 0xcd, 0x78, 0xcd, 0xba, 0xcd, 0x78, 0xcd, 0xba, - 0xcd, 0x78, 0xce, 0xba, 0xce, 0x78, 0xce, 0xba, 0xce, 0x78, 0xce, 0xba, - 0xce, 0x78, 0xce, 0xba, 0xce, 0x78, 0xce, 0xba, 0xcf, 0x78, 0xce, 0xba, - 0xcf, 0x78, 0xce, 0xba, 0xcf, 0x78, 0xce, 0xba, 0xd0, 0x78, 0xce, 0xba, - 0xd0, 0x78, 0xce, 0xba, 0xd0, 0x78, 0xce, 0xba, 0xd0, 0x78, 0xce, 0xba, - 0xd1, 0x78, 0xce, 0xba, 0xd1, 0x78, 0xce, 0xba, 0xd1, 0x78, 0xce, 0xba, - 0xd2, 0x78, 0xce, 0xba, 0xd2, 0x78, 0xce, 0xba, 0xd2, 0x78, 0xce, 0xba, - 0xd2, 0x78, 0xce, 0xba, 0xd3, 0x78, 0xce, 0xba, 0xd3, 0x78, 0xce, 0xba, - 0xd3, 0x78, 0xce, 0xba, 0xd4, 0x78, 0xce, 0xba, 0xd4, 0x78, 0xce, 0xba, - 0xd4, 0x78, 0xce, 0xba, 0xd4, 0x78, 0xce, 0xba, 0xd5, 0x78, 0xce, 0xba, - 0xd5, 0x78, 0xce, 0xba, 0xd5, 0x78, 0xce, 0xba, 0xd6, 0x78, 0xce, 0xba, - 0xd6, 0x78, 0xce, 0xba, 0xd6, 0x78, 0xce, 0xba, 0xd6, 0x78, 0xce, 0xba, - 0xd7, 0x78, 0xce, 0xba, 0xd7, 0x78, 0xce, 0xba, 0xd7, 0x78, 0xce, 0xba, - 0xd7, 0x78, 0xce, 0xba, 0xd8, 0x78, 0xce, 0xba, 0xd8, 0x78, 0xce, 0xba, - 0xd8, 0x78, 0xce, 0xba, 0xd9, 0x78, 0xce, 0xba, 0xd9, 0x78, 0xce, 0xba, - 0xd9, 0x78, 0xce, 0xba, 0xd9, 0x78, 0xce, 0xba, 0xda, 0x78, 0xce, 0xba, - 0xda, 0x78, 0xce, 0xba, 0xda, 0x78, 0xd8, 0xba, 0xda, 0x94, 0xce, 0xba, - 0xdb, 0x78, 0xd8, 0xba, 0xdb, 0x94, 0xdb, 0xba, 0xdb, 0x95, 0xda, 0xba, - 0xdb, 0x95, 0xdb, 0xba, 0xdc, 0x95, 0xda, 0xba, 0xdc, 0x95, 0xdb, 0xba, - 0xdc, 0x95, 0xda, 0xba, 0xdd, 0x95, 0xdb, 0xba, 0xdd, 0x95, 0xda, 0xba, - 0xdd, 0x95, 0xdb, 0xba, 0xdd, 0x95, 0xda, 0xba, 0xde, 0x95, 0xdb, 0xba, - 0xde, 0x95, 0xea, 0xba, 0xde, 0x7f, 0xea, 0xba, 0xde, 0x83, 0xea, 0xba, - 0xdf, 0x7f, 0xea, 0xba, 0xdf, 0x83, 0xea, 0xba, 0xdf, 0x7f, 0xea, 0xba, - 0xdf, 0x83, 0xea, 0xba, 0xe0, 0x7f, 0xea, 0xba, 0xe0, 0x83, 0xea, 0xba, - 0xe0, 0x7f, 0xea, 0xba, 0xe1, 0x83, 0xea, 0xba, 0xe1, 0x7f, 0xea, 0xba, - 0xe1, 0x83, 0xea, 0xba, 0xe1, 0x7f, 0xea, 0xba, 0xe2, 0x83, 0xea, 0xba, - 0xe2, 0x7f, 0xea, 0xba, 0xe2, 0x83, 0xea, 0xba, 0xe2, 0x7f, 0xea, 0xba, - 0xe3, 0x83, 0xea, 0xba, 0xe3, 0x7f, 0xea, 0xba, 0xe3, 0x83, 0xea, 0xba, - 0xe3, 0x7f, 0xea, 0xba, 0xe4, 0x83, 0xea, 0xba, 0xe4, 0x7f, 0xea, 0xba, - 0xe4, 0x83, 0xea, 0xba, 0xe4, 0x7f, 0xeb, 0xba, 0xe5, 0x7e, 0xea, 0xba, - 0xe5, 0x7f, 0xeb, 0xba, 0xe5, 0x7e, 0xea, 0xba, 0xe5, 0x7f, 0xeb, 0xba, - 0xe6, 0x7e, 0xea, 0xba, 0xe6, 0x7f, 0xeb, 0xba, 0xe6, 0x7e, 0xea, 0xba, - 0xe6, 0x7f, 0xeb, 0xba, 0xe7, 0x7e, 0xea, 0xba, 0xe7, 0x7f, 0xeb, 0xba, - 0xe7, 0x7e, 0xea, 0xba, 0xe7, 0x7f, 0xeb, 0xba, 0xe8, 0x7e, 0xea, 0xba, - 0xe8, 0x7f, 0xeb, 0xba, 0xe8, 0x7e, 0xea, 0xba, 0xe8, 0x7f, 0xeb, 0xba, - 0xe9, 0x7e, 0xea, 0xba, 0xe9, 0x7f, 0xeb, 0xba, 0xe9, 0x7e, 0xea, 0xba, - 0xe9, 0x7f, 0xeb, 0xba, 0xea, 0x7e, 0xea, 0xba, 0xea, 0x7f, 0xeb, 0xba, - 0xea, 0x7e, 0xeb, 0xba, 0xea, 0x7e, 0xeb, 0xba, 0xea, 0x7e, 0xeb, 0xba, - 0xea, 0x7e, 0xeb, 0xba, 0xea, 0x7e, 0xeb, 0xba, 0xea, 0x7e, 0xec, 0xba, - 0xea, 0x7e, 0xec, 0xba, 0xea, 0x7e, 0xec, 0xba, 0xea, 0x7e, 0xec, 0xba, - 0xea, 0x7e, 0xec, 0xba, 0xea, 0x7e, 0xed, 0xba, 0xea, 0x7e, 0xed, 0xba, - 0xea, 0x7e, 0xed, 0xba, 0xea, 0x7e, 0xed, 0xba, 0xea, 0x7e, 0xee, 0xba, - 0xea, 0x7e, 0xee, 0xba, 0xea, 0x7e, 0xee, 0xba, 0xea, 0x7e, 0xee, 0xb8, - 0xeb, 0x7e, 0xef, 0xba, 0xea, 0x7e, 0xef, 0xb8, 0xeb, 0x7e, 0xef, 0xba, - 0xea, 0x7e, 0xef, 0xb8, 0xeb, 0x7e, 0xf0, 0xba, 0xea, 0x7e, 0xf0, 0xb8, - 0xeb, 0x7e, 0xf0, 0xbc, 0xf5, 0x7e, 0xf0, 0xba, 0xf5, 0x7e, 0xf1, 0xbc, - 0xf5, 0x7e, 0xf1, 0xba, 0xf5, 0x7e, 0xf1, 0xbc, 0xf5, 0x7e, 0xf1, 0xba, - 0xf5, 0x7e, 0xf2, 0xbc, 0xf5, 0x7e, 0xf2, 0xba, 0xf5, 0x7e, 0xf2, 0xbc, - 0xf5, 0x7e, 0xf2, 0xba, 0xf5, 0x7e, 0xf2, 0xbc, 0xf5, 0x7e, 0xf3, 0xba, - 0xf5, 0x7e, 0xf3, 0xbc, 0xf5, 0x7e, 0xf3, 0xba, 0xf5, 0x7e, 0xf3, 0xbc, - 0xf5, 0x7e, 0xf4, 0xba, 0xf5, 0x7e, 0xf4, 0xbc, 0xf5, 0x7e, 0xf4, 0xba, - 0xf5, 0x7e, 0xf4, 0xbc, 0xf5, 0x7e, 0xf5, 0xba, 0xf5, 0x7e, 0xf5, 0xba, - 0xf6, 0x7e, 0xf5, 0xba, 0xf5, 0x7e, 0xf5, 0xba, 0xf6, 0x7e, 0xf5, 0xba, - 0xf5, 0x7e, 0xf5, 0xba, 0xf6, 0x7e, 0xf5, 0xba, 0xf6, 0x7e, 0xf5, 0xba, - 0xf6, 0x7e, 0xf5, 0xba, 0xf6, 0x7e, 0xf5, 0xba, 0xf7, 0x7e, 0xf5, 0xba, - 0xf7, 0x7e, 0xf5, 0xba, 0xf7, 0x7e, 0xf9, 0xba, 0xf7, 0x7e, 0xf9, 0xba, - 0xf8, 0x80, 0xf9, 0xba, 0xf8, 0x7e, 0xf9, 0xba, 0xf8, 0x80, 0xf9, 0xba, - 0xf8, 0x7e, 0xf9, 0xba, 0xf8, 0x7e, 0xf9, 0xba, 0xf9, 0x7e, 0xf9, 0xba, - 0xf9, 0x7e, 0xf9, 0xba, 0xf9, 0x7e, 0xf9, 0xba, 0xf9, 0x7e, 0xfa, 0xba, - 0xf9, 0x7e, 0xfa, 0xba, 0xf9, 0x7e, 0xfa, 0xba, 0xf9, 0x7e, 0xfa, 0xba, - 0xf9, 0x7e, 0xfa, 0xba, 0xf9, 0x7e, 0xfb, 0xba, 0xf9, 0x7e, 0xfb, 0xba, - 0xf9, 0x7e, 0xfb, 0xba, 0xf9, 0x7e, 0xfb, 0xba, 0xf9, 0x7e, 0xfc, 0xba, - 0xf9, 0x7e, 0xfc, 0xba, 0xf9, 0x7e, 0xfc, 0xba, 0xf9, 0x7e, 0xfc, 0xba, - 0xf9, 0x7e, 0xfc, 0xba, 0xf9, 0x7e, 0xfd, 0xba, 0xf9, 0x7e, 0xfd, 0xb8, - 0xf9, 0x7e, 0xfd, 0xba, 0xf9, 0x7e, 0xfd, 0xb8, 0xf9, 0x7e, 0xfe, 0xba, - 0xf9, 0x7e, 0xfe, 0xb8, 0xf9, 0x7e, 0xfe, 0xba, 0xf9, 0x7e, 0xfe, 0xb8, - 0xf9, 0x7e, 0xfe, 0xba, 0xf9, 0x7e, 0xff, 0xb8, 0xf9, 0x7e, 0xff, 0xba, - 0xf9, 0x7e, 0x03, 0xc1, 0x91, 0x7e, 0x0a, 0xc3, 0x90, 0x7e, 0x0f, 0xc1, - 0x91, 0x7e, 0x14, 0xc3, 0x90, 0x7e, 0x17, 0xc1, 0x91, 0x7e, 0x1b, 0xc3, - 0x90, 0x7e, 0x1e, 0xc1, 0x91, 0x7e, 0x20, 0xc1, 0x91, 0x7e, 0x23, 0xc1, - 0x91, 0x7e, 0x25, 0xc1, 0x91, 0x7e, 0x27, 0xc1, 0x91, 0x7e, 0x29, 0xc1, - 0x91, 0x7e, 0x2b, 0xc1, 0x91, 0x7e, 0x2d, 0xc1, 0x91, 0x7e, 0x2f, 0xc1, - 0x91, 0x7e, 0x31, 0xbf, 0x91, 0x7e, 0x32, 0xc1, 0x91, 0x7e, 0x34, 0xbf, - 0x91, 0x7e, 0x35, 0xc1, 0x91, 0x7e, 0x37, 0xbf, 0x91, 0x7e, 0x38, 0xc1, - 0x91, 0x7e, 0x3a, 0xbf, 0x91, 0x7e, 0x3b, 0xc1, 0x91, 0x7e, 0x3c, 0xbf, - 0x91, 0x7e, 0x3e, 0xc1, 0x91, 0x7e, 0x3f, 0xbf, 0x91, 0x7e, 0x40, 0xc1, - 0x91, 0x7e, 0x42, 0xbf, 0x91, 0x7e, 0x43, 0xc1, 0x91, 0x7e, 0x44, 0xbf, - 0x91, 0x7e, 0x45, 0xc1, 0x91, 0x7e, 0x46, 0xbf, 0x91, 0x7e, 0x47, 0xc1, - 0x91, 0x7e, 0x48, 0xbf, 0x91, 0x7e, 0x49, 0xc1, 0x91, 0x7e, 0x4a, 0xbf, - 0x91, 0x7e, 0x4b, 0xc1, 0x91, 0x7e, 0x4c, 0xbf, 0x91, 0x7e, 0x4d, 0xc1, - 0x91, 0x7e, 0x4e, 0xbf, 0x91, 0x7e, 0x4f, 0xc1, 0x91, 0x7e, 0x50, 0xbf, - 0x91, 0x7e, 0x51, 0xc1, 0x91, 0x7e, 0x52, 0xbf, 0x91, 0x7e, 0x53, 0xc1, - 0x91, 0x7e, 0x54, 0xbf, 0x91, 0x7e, 0x55, 0xc1, 0x91, 0x7e, 0x56, 0xbf, - 0x91, 0x7e, 0x57, 0xc1, 0x91, 0x7e, 0x58, 0xbf, 0x91, 0x7e, 0x58, 0xc1, - 0x91, 0x7e, 0x59, 0xbf, 0x91, 0x7e, 0x5a, 0xc1, 0x91, 0x7e, 0x5b, 0xbf, - 0x91, 0x7e, 0x5c, 0xbd, 0x92, 0x7e, 0x5d, 0xbf, 0x91, 0x7e, 0x5d, 0xbd, - 0x92, 0x7e, 0x5e, 0xbf, 0x91, 0x7e, 0x5f, 0xbd, 0x92, 0x7e, 0x60, 0xbf, - 0x91, 0x7e, 0x60, 0xbd, 0x92, 0x7e, 0x61, 0xbf, 0x91, 0x7e, 0x62, 0xbd, - 0x92, 0x7e, 0x63, 0xbf, 0x91, 0x7e, 0x63, 0xbd, 0x92, 0x7e, 0x64, 0xbf, - 0x91, 0x7e, 0x65, 0xbd, 0x92, 0x7e, 0x66, 0xbf, 0x91, 0x7e, 0x66, 0xbd, - 0x92, 0x7e, 0x67, 0xbf, 0x91, 0x7e, 0x68, 0xbd, 0x92, 0x7e, 0x68, 0xbf, - 0x91, 0x7e, 0x69, 0xbd, 0x92, 0x7e, 0x6a, 0xbf, 0x91, 0x7e, 0x6a, 0xbd, - 0x92, 0x7e, 0x6b, 0xbf, 0x91, 0x7e, 0x6c, 0xbd, 0x92, 0x7e, 0x6c, 0xbf, - 0x91, 0x7e, 0x6d, 0xbd, 0x92, 0x7e, 0x6e, 0xbf, 0x91, 0x7e, 0x6e, 0xbd, - 0x92, 0x7e, 0x6f, 0xbf, 0x91, 0x7e, 0x70, 0xbd, 0x92, 0x7e, 0x70, 0xbf, - 0x91, 0x7e, 0x71, 0xbd, 0x92, 0x7e, 0x72, 0xbf, 0x91, 0x7e, 0x72, 0xbd, - 0x92, 0x7e, 0x73, 0xbf, 0x91, 0x7e, 0x73, 0xbd, 0x92, 0x7e, 0x74, 0xbf, - 0x91, 0x7e, 0x75, 0xbd, 0x92, 0x7e, 0x75, 0xbf, 0x91, 0x7e, 0x76, 0xbd, - 0x92, 0x7e, 0x76, 0xbf, 0x91, 0x7e, 0x77, 0xbd, 0x92, 0x7e, 0x78, 0xbf, - 0x91, 0x7e, 0x78, 0xbd, 0x92, 0x7e, 0x79, 0xbf, 0x91, 0x7e, 0x79, 0xbd, - 0x92, 0x7e, 0x7a, 0xbf, 0x91, 0x7e, 0x7a, 0xbd, 0x92, 0x7e, 0x7b, 0xbf, - 0x91, 0x7e, 0x7c, 0xbd, 0x92, 0x7e, 0x7c, 0xbf, 0x91, 0x7e, 0x7d, 0xbd, - 0x92, 0x7e, 0x7d, 0xbf, 0x91, 0x7e, 0x7e, 0xbd, 0x92, 0x7e, 0x7e, 0xbf, - 0x91, 0x7e, 0x7f, 0xbd, 0x92, 0x7e, 0x7f, 0xbf, 0x91, 0x7e, 0x80, 0xbd, - 0x92, 0x7e, 0x81, 0xbb, 0x92, 0x7e, 0x81, 0xbd, 0x92, 0x7e, 0x82, 0xbb, - 0x92, 0x7e, 0x82, 0xbd, 0x92, 0x7e, 0x83, 0xbb, 0x92, 0x7e, 0x83, 0xbd, - 0x92, 0x7e, 0x84, 0xbb, 0x92, 0x7e, 0x84, 0xbd, 0x92, 0x7e, 0x85, 0xbb, - 0x92, 0x7e, 0x85, 0xbd, 0x92, 0x7e, 0x86, 0xbb, 0x92, 0x7e, 0x86, 0xbd, - 0x92, 0x7e, 0x87, 0xbb, 0x92, 0x7e, 0x87, 0xbd, 0x92, 0x7e, 0x88, 0xbb, - 0x92, 0x7e, 0x88, 0xbd, 0x92, 0x7e, 0x89, 0xbb, 0x92, 0x7e, 0x89, 0xbd, - 0x92, 0x7e, 0x8a, 0xbb, 0x92, 0x7e, 0x8a, 0xbd, 0x92, 0x7e, 0x8b, 0xbb, - 0x92, 0x7e, 0x8b, 0xbd, 0x92, 0x7e, 0x8c, 0xbb, 0x92, 0x7e, 0x8c, 0xbd, - 0x92, 0x7e, 0x8d, 0xbb, 0x92, 0x7e, 0x8d, 0xbd, 0x92, 0x7e, 0x8e, 0xbb, - 0x92, 0x7e, 0x8e, 0xbd, 0x92, 0x7e, 0x8e, 0xbb, 0x92, 0x7e, 0x8f, 0xbb, - 0x93, 0x7e, 0x8f, 0xbb, 0x92, 0x7e, 0x90, 0xbb, 0x93, 0x7e, 0x90, 0xbb, - 0x92, 0x7e, 0x91, 0xbb, 0x93, 0x7e, 0x91, 0xbb, 0x92, 0x7e, 0x92, 0xbb, - 0x93, 0x7e, 0x92, 0xbb, 0x92, 0x7d, 0x92, 0xbb, 0x93, 0x7e, 0x92, 0xbb, - 0x93, 0x7d, 0x92, 0xbb, 0x94, 0x7e, 0x92, 0xbb, 0x94, 0x7d, 0x96, 0xbb, - 0x94, 0x80, 0x96, 0xbb, 0x95, 0x80, 0x96, 0xbb, 0x95, 0x80, 0x96, 0xbb, - 0x96, 0x80, 0x96, 0xbb, 0x96, 0x80, 0x97, 0xbb, 0x97, 0x80, 0x97, 0xbb, - 0x97, 0x80, 0x98, 0xbb, 0x98, 0x80, 0x98, 0xbb, 0x98, 0x80, 0x98, 0xbb, - 0x98, 0x80, 0x99, 0xbb, 0x99, 0x80, 0x99, 0xbb, 0x99, 0x80, 0x9a, 0xbb, - 0x9a, 0x80, 0x99, 0xbb, 0x9a, 0x80, 0x9a, 0xbb, 0x9a, 0x80, 0x99, 0xbb, - 0x9b, 0x80, 0x9a, 0xbb, 0x9b, 0x80, 0x9d, 0xbb, 0x9c, 0x7c, 0x9e, 0xbb, - 0x9c, 0x7c, 0x9d, 0xbb, 0x9d, 0x7c, 0x9e, 0xbb, 0x9d, 0x7c, 0x9d, 0xbb, - 0x9d, 0x7c, 0x9e, 0xbb, 0x9e, 0x7c, 0x9e, 0xbb, 0x9e, 0x7c, 0x9f, 0xbb, - 0x9f, 0x7c, 0x9f, 0xbb, 0x9f, 0x7c, 0x9f, 0xbb, 0x9f, 0x7c, 0xa0, 0xbb, - 0xa0, 0x7c, 0xa0, 0xbb, 0xa0, 0x7c, 0xa1, 0xbb, 0xa1, 0x7c, 0xa2, 0xbb, - 0xa1, 0x7d, 0xa2, 0xbb, 0xa1, 0x7d, 0xa2, 0xbb, 0xa2, 0x7d, 0xa2, 0xbb, - 0xa2, 0x7d, 0xa3, 0xbb, 0xa3, 0x7d, 0xa3, 0xbb, 0xa3, 0x7d, 0xa3, 0xbb, - 0xa3, 0x7d, 0xa4, 0xbb, 0xa4, 0x7d, 0xa4, 0xbb, 0xa4, 0x7d, 0xa5, 0xbb, - 0xa5, 0x7d, 0xa5, 0xbb, 0xa5, 0x7d, 0xa5, 0xbb, 0xa5, 0x7d, 0xa6, 0xbb, - 0xa6, 0x7d, 0xa6, 0xbb, 0xa6, 0x7e, 0xa6, 0xbb, 0xa6, 0x7e, 0xa7, 0xbb, - 0xa7, 0x7e, 0xa7, 0xbb, 0xa7, 0x7e, 0xa8, 0xbb, 0xa8, 0x7e, 0xa8, 0xbb, - 0xa8, 0x7e, 0xa8, 0xbb, 0xa8, 0x7e, 0xa9, 0xbb, 0xa9, 0x7e, 0xa9, 0xbb, - 0xa9, 0x7e, 0xaa, 0xbb, 0xaa, 0x7d, 0xa9, 0xbb, 0xaa, 0x7e, 0xaa, 0xbb, - 0xaa, 0x7d, 0xa9, 0xbb, 0xab, 0x7e, 0xaa, 0xbb, 0xab, 0x7d, 0xa9, 0xbb, - 0xab, 0x7e, 0xaa, 0xbb, 0xac, 0x7d, 0xa9, 0xbb, 0xac, 0x7e, 0xaa, 0xbb, - 0xac, 0x7d, 0xa9, 0xbb, 0xad, 0x7e, 0xaa, 0xbb, 0xad, 0x7d, 0xa9, 0xbb, - 0xae, 0x7e, 0xaa, 0xbb, 0xae, 0x7d, 0xa9, 0xbb, 0xae, 0x7e, 0xaa, 0xbb, - 0xaf, 0x7d, 0xa9, 0xbb, 0xaf, 0x7e, 0xaa, 0xbb, 0xaf, 0x7d, 0xaa, 0xbb, - 0xb0, 0x7a, 0xaa, 0xbb, 0xb0, 0x7d, 0xaa, 0xbb, 0xb0, 0x7a, 0xaa, 0xbb, - 0xb1, 0x7d, 0xaa, 0xbb, 0xb1, 0x7a, 0xaa, 0xbb, 0xb2, 0x7d, 0xaa, 0xbb, - 0xb2, 0x7a, 0xaa, 0xbb, 0xb2, 0x7d, 0xaa, 0xbb, 0xb3, 0x7a, 0xaa, 0xbb, - 0xb3, 0x7d, 0xb6, 0xbb, 0xb3, 0x71, 0xb6, 0xbb, 0xb4, 0x71, 0xb6, 0xbb, - 0xb4, 0x71, 0xb6, 0xbb, 0xb4, 0x71, 0xb6, 0xbb, 0xb5, 0x71, 0xb6, 0xbb, - 0xb5, 0x71, 0xb6, 0xbb, 0xb5, 0x71, 0xb6, 0xbb, 0xb6, 0x71, 0xb6, 0xbb, - 0xb6, 0x71, 0xb6, 0xbb, 0xb6, 0x71, 0xb7, 0xbb, 0xb7, 0x71, 0xba, 0xbb, - 0xb7, 0x72, 0xba, 0xbb, 0xb7, 0x72, 0xba, 0xbb, 0xb8, 0x72, 0xba, 0xbb, - 0xb8, 0x72, 0xba, 0xbb, 0xb8, 0x72, 0xba, 0xbb, 0xb9, 0x72, 0xba, 0xbb, - 0xb9, 0x72, 0xba, 0xbb, 0xb9, 0x72, 0xba, 0xbb, 0xba, 0x72, 0xba, 0xbb, - 0xba, 0x72, 0xba, 0xbb, 0xba, 0x72, 0xbd, 0xbb, 0xbb, 0x73, 0xbe, 0xbb, - 0xbb, 0x73, 0xbd, 0xbb, 0xbb, 0x73, 0xbe, 0xbb, 0xbc, 0x73, 0xbd, 0xbb, - 0xbc, 0x73, 0xbe, 0xbb, 0xbc, 0x73, 0xbd, 0xbb, 0xbd, 0x73, 0xbe, 0xbb, - 0xbd, 0x73, 0xbd, 0xbb, 0xbd, 0x73, 0xbe, 0xbb, 0xbe, 0x73, 0xbe, 0xbb, - 0xbe, 0x73, 0xc1, 0xbb, 0xbe, 0x74, 0xc1, 0xbb, 0xbf, 0x74, 0xc1, 0xbb, - 0xbf, 0x74, 0xc1, 0xbb, 0xbf, 0x74, 0xc1, 0xbb, 0xc0, 0x74, 0xc1, 0xbb, - 0xc0, 0x74, 0xc1, 0xbb, 0xc0, 0x74, 0xc1, 0xbb, 0xc1, 0x74, 0xc1, 0xbb, - 0xc1, 0x74, 0xc1, 0xbb, 0xc1, 0x74, 0xc1, 0xbb, 0xc1, 0x74, 0xc4, 0xbb, - 0xc2, 0x75, 0xc5, 0xbb, 0xc2, 0x75, 0xc4, 0xbb, 0xc2, 0x75, 0xc5, 0xbb, - 0xc3, 0x75, 0xc4, 0xbb, 0xc3, 0x75, 0xc5, 0xbb, 0xc3, 0x75, 0xc4, 0xbb, - 0xc4, 0x75, 0xc5, 0xbb, 0xc4, 0x75, 0xc4, 0xbb, 0xc4, 0x75, 0xc5, 0xbb, - 0xc5, 0x75, 0xc5, 0xbb, 0xc5, 0x75, 0xc8, 0xbb, 0xc5, 0x76, 0xc8, 0xbb, - 0xc6, 0x76, 0xc8, 0xbb, 0xc6, 0x76, 0xc8, 0xbb, 0xc6, 0x76, 0xc8, 0xbb, - 0xc6, 0x76, 0xc8, 0xbb, 0xc7, 0x76, 0xc8, 0xbb, 0xc7, 0x76, 0xc8, 0xbb, - 0xc7, 0x76, 0xc8, 0xbb, 0xc8, 0x76, 0xc8, 0xbb, 0xc8, 0x76, 0xc8, 0xbb, - 0xc8, 0x76, 0xc9, 0xbb, 0xc9, 0x76, 0xc9, 0xbb, 0xc9, 0x76, 0xcb, 0xbb, - 0xc9, 0x77, 0xcb, 0xbb, 0xc9, 0x77, 0xcb, 0xbb, 0xca, 0x77, 0xcb, 0xbb, - 0xca, 0x77, 0xcb, 0xbb, 0xca, 0x77, 0xcb, 0xbb, 0xcb, 0x77, 0xcb, 0xbb, - 0xcb, 0x77, 0xcb, 0xbb, 0xcb, 0x77, 0xcc, 0xbb, 0xcc, 0x77, 0xcc, 0xbb, - 0xcc, 0x77, 0xcc, 0xbb, 0xcc, 0x77, 0xce, 0xbb, 0xcc, 0x78, 0xce, 0xbb, - 0xcd, 0x78, 0xce, 0xbb, 0xcd, 0x78, 0xce, 0xbb, 0xcd, 0x78, 0xce, 0xbb, - 0xce, 0x78, 0xce, 0xbb, 0xce, 0x78, 0xce, 0xbb, 0xce, 0x78, 0xce, 0xbb, - 0xce, 0x78, 0xce, 0xbb, 0xcf, 0x78, 0xce, 0xbb, 0xcf, 0x78, 0xce, 0xbb, - 0xcf, 0x78, 0xce, 0xbb, 0xd0, 0x78, 0xce, 0xbb, 0xd0, 0x78, 0xce, 0xbb, - 0xd0, 0x78, 0xce, 0xbb, 0xd0, 0x78, 0xce, 0xbb, 0xd1, 0x78, 0xce, 0xbb, - 0xd1, 0x78, 0xce, 0xbb, 0xd1, 0x78, 0xce, 0xbb, 0xd2, 0x78, 0xce, 0xbb, - 0xd2, 0x78, 0xce, 0xbb, 0xd2, 0x78, 0xce, 0xbb, 0xd2, 0x78, 0xce, 0xbb, - 0xd3, 0x78, 0xce, 0xbb, 0xd3, 0x78, 0xce, 0xbb, 0xd3, 0x78, 0xce, 0xbb, - 0xd4, 0x78, 0xce, 0xbb, 0xd4, 0x78, 0xce, 0xbb, 0xd4, 0x78, 0xce, 0xbb, - 0xd4, 0x78, 0xce, 0xbb, 0xd5, 0x78, 0xce, 0xbb, 0xd5, 0x78, 0xce, 0xbb, - 0xd5, 0x78, 0xce, 0xbb, 0xd6, 0x78, 0xce, 0xbb, 0xd6, 0x78, 0xce, 0xbb, - 0xd6, 0x78, 0xce, 0xbb, 0xd6, 0x78, 0xce, 0xbb, 0xd7, 0x78, 0xce, 0xbb, - 0xd7, 0x78, 0xce, 0xbb, 0xd7, 0x78, 0xce, 0xbb, 0xd7, 0x78, 0xce, 0xbb, - 0xd8, 0x78, 0xce, 0xbb, 0xd8, 0x78, 0xce, 0xbb, 0xd8, 0x78, 0xce, 0xbb, - 0xd9, 0x78, 0xce, 0xbb, 0xd9, 0x78, 0xce, 0xbb, 0xd9, 0x78, 0xce, 0xbb, - 0xd9, 0x78, 0xce, 0xbb, 0xda, 0x78, 0xce, 0xbb, 0xda, 0x78, 0xce, 0xbb, - 0xda, 0x78, 0xd9, 0xbb, 0xda, 0x94, 0xd9, 0xbb, 0xdb, 0x94, 0xd9, 0xbb, - 0xdb, 0x94, 0xd9, 0xbb, 0xdb, 0x94, 0xd9, 0xbb, 0xdb, 0x94, 0xd9, 0xbb, - 0xdc, 0x94, 0xd9, 0xbb, 0xdc, 0x94, 0xd9, 0xbb, 0xdc, 0x94, 0xdc, 0xbb, - 0xdd, 0x95, 0xdc, 0xbb, 0xdd, 0x95, 0xdc, 0xbb, 0xdd, 0x95, 0xdc, 0xbb, - 0xdd, 0x95, 0xdc, 0xbb, 0xde, 0x95, 0xdc, 0xbb, 0xde, 0x95, 0xdc, 0xbb, - 0xde, 0x95, 0xea, 0xbb, 0xde, 0x82, 0xea, 0xbb, 0xdf, 0x7e, 0xea, 0xbb, - 0xdf, 0x82, 0xea, 0xbb, 0xdf, 0x7e, 0xea, 0xbb, 0xdf, 0x82, 0xea, 0xbb, - 0xe0, 0x7e, 0xea, 0xbb, 0xe0, 0x82, 0xea, 0xbb, 0xe0, 0x7e, 0xea, 0xbb, - 0xe1, 0x82, 0xea, 0xbb, 0xe1, 0x7e, 0xea, 0xbb, 0xe1, 0x82, 0xea, 0xbb, - 0xe1, 0x7e, 0xea, 0xbb, 0xe2, 0x82, 0xea, 0xbb, 0xe2, 0x7e, 0xea, 0xbb, - 0xe2, 0x82, 0xea, 0xbb, 0xe2, 0x7e, 0xea, 0xbb, 0xe3, 0x82, 0xea, 0xbb, - 0xe3, 0x7e, 0xea, 0xbb, 0xe3, 0x82, 0xea, 0xbb, 0xe3, 0x7e, 0xea, 0xbb, - 0xe4, 0x82, 0xea, 0xbb, 0xe4, 0x7e, 0xea, 0xbb, 0xe4, 0x82, 0xea, 0xbb, - 0xe4, 0x7e, 0xea, 0xbb, 0xe5, 0x82, 0xea, 0xbb, 0xe5, 0x7e, 0xea, 0xbb, - 0xe5, 0x82, 0xea, 0xbb, 0xe5, 0x7e, 0xea, 0xbb, 0xe6, 0x82, 0xea, 0xbb, - 0xe6, 0x7e, 0xea, 0xbb, 0xe6, 0x82, 0xea, 0xbb, 0xe6, 0x7e, 0xeb, 0xbb, - 0xe7, 0x7e, 0xea, 0xbb, 0xe7, 0x7e, 0xeb, 0xbb, 0xe7, 0x7e, 0xea, 0xbb, - 0xe7, 0x7e, 0xeb, 0xbb, 0xe8, 0x7e, 0xea, 0xbb, 0xe8, 0x7e, 0xeb, 0xbb, - 0xe8, 0x7e, 0xea, 0xbb, 0xe8, 0x7e, 0xeb, 0xbb, 0xe9, 0x7e, 0xea, 0xbb, - 0xe9, 0x7e, 0xeb, 0xbb, 0xe9, 0x7e, 0xea, 0xbb, 0xe9, 0x7e, 0xeb, 0xbb, - 0xea, 0x7e, 0xea, 0xbb, 0xea, 0x7e, 0xeb, 0xbb, 0xea, 0x7e, 0xea, 0xba, - 0xea, 0x7e, 0xeb, 0xbb, 0xea, 0x7e, 0xeb, 0xba, 0xea, 0x7e, 0xeb, 0xbb, - 0xea, 0x7e, 0xeb, 0xba, 0xea, 0x7e, 0xec, 0xbb, 0xea, 0x7e, 0xec, 0xba, - 0xea, 0x7e, 0xec, 0xbb, 0xea, 0x7e, 0xec, 0xba, 0xea, 0x7e, 0xec, 0xbb, - 0xea, 0x7e, 0xed, 0xba, 0xea, 0x7e, 0xed, 0xbb, 0xea, 0x7e, 0xed, 0xba, - 0xea, 0x7e, 0xed, 0xbb, 0xea, 0x7e, 0xee, 0xba, 0xea, 0x7e, 0xee, 0xbb, - 0xea, 0x7e, 0xee, 0xba, 0xea, 0x7e, 0xee, 0xbb, 0xea, 0x7e, 0xef, 0xba, - 0xea, 0x7e, 0xef, 0xbb, 0xea, 0x7e, 0xef, 0xba, 0xea, 0x7e, 0xef, 0xbb, - 0xea, 0x7e, 0xf0, 0xba, 0xea, 0x7e, 0xf0, 0xbb, 0xea, 0x7e, 0xf0, 0xbc, - 0xf5, 0x7e, 0xf0, 0xbb, 0xf5, 0x7e, 0xf1, 0xbc, 0xf5, 0x7e, 0xf1, 0xbb, - 0xf5, 0x7e, 0xf1, 0xbc, 0xf5, 0x7e, 0xf1, 0xbb, 0xf5, 0x7e, 0xf2, 0xbc, - 0xf5, 0x7e, 0xf2, 0xbb, 0xf5, 0x7e, 0xf2, 0xbc, 0xf5, 0x7e, 0xf2, 0xbb, - 0xf5, 0x7e, 0xf2, 0xbc, 0xf5, 0x7e, 0xf3, 0xbb, 0xf5, 0x7e, 0xf3, 0xbc, - 0xf5, 0x7e, 0xf3, 0xbb, 0xf5, 0x7e, 0xf3, 0xbc, 0xf5, 0x7e, 0xf4, 0xbb, - 0xf5, 0x7e, 0xf4, 0xbc, 0xf5, 0x7e, 0xf4, 0xbb, 0xf5, 0x7e, 0xf4, 0xbc, - 0xf5, 0x7e, 0xf5, 0xbb, 0xf5, 0x7e, 0xf5, 0xbb, 0xf6, 0x7e, 0xf5, 0xbb, - 0xf5, 0x7e, 0xf5, 0xbb, 0xf6, 0x7e, 0xf5, 0xbb, 0xf5, 0x7e, 0xf5, 0xbb, - 0xf6, 0x7e, 0xf5, 0xbb, 0xf6, 0x7e, 0xf5, 0xbb, 0xf6, 0x7e, 0xf5, 0xbb, - 0xf6, 0x7e, 0xf5, 0xbb, 0xf7, 0x7e, 0xf5, 0xbb, 0xf7, 0x7e, 0xf5, 0xbb, - 0xf7, 0x7e, 0xf9, 0xbb, 0xf7, 0x7e, 0xf9, 0xbb, 0xf8, 0x80, 0xf9, 0xbb, - 0xf8, 0x7e, 0xf9, 0xbb, 0xf8, 0x80, 0xf9, 0xbb, 0xf8, 0x7e, 0xf9, 0xbb, - 0xf8, 0x7e, 0xf9, 0xbb, 0xf9, 0x7e, 0xf9, 0xbb, 0xf9, 0x7e, 0xf9, 0xbb, - 0xf9, 0x7e, 0xf9, 0xbb, 0xf9, 0x7e, 0xfa, 0xbb, 0xf9, 0x7e, 0xfa, 0xbb, - 0xf9, 0x7e, 0xfa, 0xb9, 0xf9, 0x7e, 0xfa, 0xbb, 0xf9, 0x7e, 0xfa, 0xb9, - 0xf9, 0x7e, 0xfb, 0xbb, 0xf9, 0x7e, 0xfb, 0xb9, 0xf9, 0x7e, 0xfb, 0xbb, - 0xf9, 0x7e, 0xfb, 0xb9, 0xf9, 0x7e, 0xfc, 0xbb, 0xf9, 0x7e, 0xfc, 0xb9, - 0xf9, 0x7e, 0xfc, 0xbb, 0xf9, 0x7e, 0xfc, 0xb9, 0xf9, 0x7e, 0xfc, 0xbb, - 0xf9, 0x7e, 0xfd, 0xb9, 0xf9, 0x7e, 0xfd, 0xbb, 0xf9, 0x7e, 0xfd, 0xb9, - 0xf9, 0x7e, 0xfd, 0xbb, 0xf9, 0x7e, 0xfe, 0xb9, 0xf9, 0x7e, 0xfe, 0xbb, - 0xf9, 0x7e, 0xfe, 0xb9, 0xf9, 0x7e, 0xfe, 0xbb, 0xf9, 0x7e, 0xfe, 0xb9, - 0xf9, 0x7e, 0xff, 0xb7, 0xf9, 0x7e, 0xff, 0xb9, 0xf9, 0x7e, 0x03, 0xc1, - 0x91, 0x7f, 0x0a, 0xc3, 0x90, 0x7f, 0x0f, 0xc1, 0x91, 0x7f, 0x14, 0xc3, - 0x90, 0x7f, 0x17, 0xc1, 0x91, 0x7f, 0x1b, 0xc3, 0x90, 0x7f, 0x1e, 0xc1, - 0x91, 0x7f, 0x20, 0xc3, 0x90, 0x7f, 0x23, 0xc1, 0x91, 0x7f, 0x25, 0xc3, - 0x90, 0x7f, 0x27, 0xc1, 0x91, 0x7f, 0x29, 0xc3, 0x90, 0x7f, 0x2b, 0xc1, - 0x91, 0x7f, 0x2d, 0xc3, 0x90, 0x7f, 0x2f, 0xc1, 0x91, 0x7f, 0x31, 0xc3, - 0x90, 0x7f, 0x32, 0xc1, 0x91, 0x7f, 0x34, 0xc3, 0x90, 0x7f, 0x35, 0xc1, - 0x91, 0x7f, 0x37, 0xc3, 0x90, 0x7f, 0x38, 0xc1, 0x91, 0x7f, 0x3a, 0xc3, - 0x90, 0x7f, 0x3b, 0xc1, 0x91, 0x7f, 0x3c, 0xc3, 0x90, 0x7f, 0x3e, 0xc1, - 0x91, 0x7f, 0x3f, 0xc3, 0x90, 0x7f, 0x40, 0xc1, 0x91, 0x7f, 0x42, 0xc3, - 0x90, 0x7f, 0x43, 0xc1, 0x91, 0x7f, 0x44, 0xc3, 0x90, 0x7f, 0x45, 0xc1, - 0x91, 0x7f, 0x46, 0xc3, 0x90, 0x7f, 0x47, 0xc1, 0x91, 0x7f, 0x48, 0xc3, - 0x90, 0x7f, 0x49, 0xc1, 0x91, 0x7f, 0x4a, 0xc3, 0x90, 0x7f, 0x4b, 0xc1, - 0x91, 0x7f, 0x4c, 0xbf, 0x91, 0x7f, 0x4d, 0xc1, 0x91, 0x7f, 0x4e, 0xbf, - 0x91, 0x7f, 0x4f, 0xc1, 0x91, 0x7f, 0x50, 0xbf, 0x91, 0x7f, 0x51, 0xc1, - 0x91, 0x7f, 0x52, 0xbf, 0x91, 0x7f, 0x53, 0xc1, 0x91, 0x7f, 0x54, 0xbf, - 0x91, 0x7f, 0x55, 0xc1, 0x91, 0x7f, 0x56, 0xbf, 0x91, 0x7f, 0x57, 0xc1, - 0x91, 0x7f, 0x58, 0xbf, 0x91, 0x7f, 0x58, 0xc1, 0x91, 0x7f, 0x59, 0xbf, - 0x91, 0x7f, 0x5a, 0xc1, 0x91, 0x7f, 0x5b, 0xbf, 0x91, 0x7f, 0x5c, 0xc1, - 0x91, 0x7f, 0x5d, 0xbf, 0x91, 0x7f, 0x5d, 0xc1, 0x91, 0x7f, 0x5e, 0xbf, - 0x91, 0x7f, 0x5f, 0xc1, 0x91, 0x7f, 0x60, 0xbf, 0x91, 0x7f, 0x60, 0xc1, - 0x91, 0x7f, 0x61, 0xbf, 0x91, 0x7f, 0x62, 0xc1, 0x91, 0x7f, 0x63, 0xbf, - 0x91, 0x7f, 0x63, 0xc1, 0x91, 0x7f, 0x64, 0xbf, 0x91, 0x7f, 0x65, 0xc1, - 0x91, 0x7f, 0x66, 0xbf, 0x91, 0x7f, 0x66, 0xc1, 0x91, 0x7f, 0x67, 0xbf, - 0x91, 0x7f, 0x68, 0xc1, 0x91, 0x7f, 0x68, 0xbf, 0x91, 0x7f, 0x69, 0xc1, - 0x91, 0x7f, 0x6a, 0xbf, 0x91, 0x7f, 0x6a, 0xbd, 0x92, 0x7f, 0x6b, 0xbf, - 0x91, 0x7f, 0x6c, 0xbd, 0x92, 0x7f, 0x6c, 0xbf, 0x91, 0x7f, 0x6d, 0xbd, - 0x92, 0x7f, 0x6e, 0xbf, 0x91, 0x7f, 0x6e, 0xbd, 0x92, 0x7f, 0x6f, 0xbf, - 0x91, 0x7f, 0x70, 0xbd, 0x92, 0x7f, 0x70, 0xbf, 0x91, 0x7f, 0x71, 0xbd, - 0x92, 0x7f, 0x72, 0xbf, 0x91, 0x7f, 0x72, 0xbd, 0x92, 0x7f, 0x73, 0xbf, - 0x91, 0x7f, 0x73, 0xbd, 0x92, 0x7f, 0x74, 0xbf, 0x91, 0x7f, 0x75, 0xbd, - 0x92, 0x7f, 0x75, 0xbf, 0x91, 0x7f, 0x76, 0xbd, 0x92, 0x7f, 0x76, 0xbf, - 0x91, 0x7f, 0x77, 0xbd, 0x92, 0x7f, 0x78, 0xbf, 0x91, 0x7f, 0x78, 0xbd, - 0x92, 0x7f, 0x79, 0xbf, 0x91, 0x7f, 0x79, 0xbd, 0x92, 0x7f, 0x7a, 0xbf, - 0x91, 0x7f, 0x7a, 0xbd, 0x92, 0x7f, 0x7b, 0xbf, 0x91, 0x7f, 0x7c, 0xbd, - 0x92, 0x7f, 0x7c, 0xbf, 0x91, 0x7f, 0x7d, 0xbd, 0x92, 0x7f, 0x7d, 0xbf, - 0x91, 0x7f, 0x7e, 0xbd, 0x92, 0x7f, 0x7e, 0xbf, 0x91, 0x7f, 0x7f, 0xbd, - 0x92, 0x7f, 0x7f, 0xbf, 0x91, 0x7f, 0x80, 0xbd, 0x92, 0x7f, 0x81, 0xbb, - 0x92, 0x7f, 0x81, 0xbd, 0x92, 0x7f, 0x82, 0xbb, 0x92, 0x7f, 0x82, 0xbd, - 0x92, 0x7f, 0x83, 0xbb, 0x92, 0x7f, 0x83, 0xbd, 0x92, 0x7f, 0x84, 0xbb, - 0x92, 0x7f, 0x84, 0xbd, 0x92, 0x7f, 0x85, 0xbb, 0x92, 0x7f, 0x85, 0xbd, - 0x92, 0x7f, 0x86, 0xbb, 0x92, 0x7f, 0x86, 0xbd, 0x92, 0x7f, 0x87, 0xbb, - 0x92, 0x7f, 0x87, 0xbd, 0x92, 0x7f, 0x88, 0xbb, 0x92, 0x7f, 0x88, 0xbd, - 0x92, 0x7f, 0x89, 0xbb, 0x92, 0x7f, 0x89, 0xbd, 0x92, 0x7f, 0x8a, 0xbb, - 0x92, 0x7f, 0x8a, 0xbd, 0x92, 0x7f, 0x8b, 0xbb, 0x92, 0x7f, 0x8b, 0xbd, - 0x92, 0x7f, 0x8c, 0xbb, 0x92, 0x7f, 0x8c, 0xbd, 0x92, 0x7f, 0x8d, 0xbb, - 0x92, 0x7f, 0x8d, 0xbd, 0x92, 0x7f, 0x8e, 0xbb, 0x92, 0x7f, 0x8e, 0xbd, - 0x92, 0x7f, 0x8e, 0xbb, 0x92, 0x7f, 0x8f, 0xbb, 0x93, 0x7f, 0x8f, 0xbb, - 0x92, 0x7f, 0x90, 0xbb, 0x93, 0x7f, 0x90, 0xbb, 0x92, 0x7f, 0x91, 0xbb, - 0x93, 0x7f, 0x91, 0xbb, 0x92, 0x7f, 0x92, 0xbb, 0x93, 0x7f, 0x91, 0xbb, - 0x92, 0x7f, 0x92, 0xbb, 0x93, 0x7f, 0x91, 0xbb, 0x93, 0x7f, 0x92, 0xbb, - 0x94, 0x7f, 0x96, 0xbb, 0x94, 0x80, 0x96, 0xbb, 0x94, 0x80, 0x96, 0xbb, - 0x95, 0x80, 0x96, 0xbb, 0x95, 0x80, 0x96, 0xbb, 0x96, 0x80, 0x96, 0xbb, - 0x96, 0x80, 0x97, 0xbb, 0x97, 0x80, 0x97, 0xbb, 0x97, 0x80, 0x97, 0xbb, - 0x98, 0x80, 0x97, 0xbb, 0x98, 0x80, 0x98, 0xbb, 0x98, 0x81, 0x99, 0xbb, - 0x99, 0x81, 0x99, 0xbb, 0x99, 0x81, 0x9a, 0xbb, 0x9a, 0x81, 0x9a, 0xbb, - 0x9a, 0x81, 0x9a, 0xbb, 0x9a, 0x81, 0x9b, 0xbb, 0x9b, 0x81, 0x9b, 0xbb, - 0x9b, 0x81, 0x9c, 0xbb, 0x9c, 0x81, 0x9b, 0xbb, 0x9c, 0x81, 0x9c, 0xbb, - 0x9d, 0x81, 0x9b, 0xbb, 0x9d, 0x81, 0x9c, 0xbb, 0x9d, 0x81, 0x9f, 0xbb, - 0x9e, 0x7d, 0xa0, 0xbb, 0x9e, 0x7d, 0x9f, 0xbb, 0x9f, 0x7d, 0xa0, 0xbb, - 0x9f, 0x7d, 0x9f, 0xbb, 0x9f, 0x7d, 0xa0, 0xbb, 0xa0, 0x7d, 0xa0, 0xbb, - 0xa0, 0x7d, 0xa1, 0xbb, 0xa1, 0x7d, 0xa1, 0xbb, 0xa1, 0x7d, 0xa1, 0xbb, - 0xa1, 0x7d, 0xa2, 0xbb, 0xa2, 0x7d, 0xa2, 0xbb, 0xa2, 0x7d, 0xa3, 0xbb, - 0xa3, 0x7d, 0xa4, 0xbb, 0xa3, 0x7e, 0xa4, 0xbb, 0xa3, 0x7e, 0xa4, 0xbb, - 0xa4, 0x7e, 0xa4, 0xbb, 0xa4, 0x7e, 0xa5, 0xbb, 0xa5, 0x7e, 0xa5, 0xbb, - 0xa5, 0x7e, 0xa5, 0xbb, 0xa5, 0x7e, 0xa6, 0xbb, 0xa6, 0x7e, 0xa6, 0xbb, - 0xa6, 0x7e, 0xa6, 0xbb, 0xa6, 0x7e, 0xa7, 0xbb, 0xa7, 0x7e, 0xa7, 0xbb, - 0xa7, 0x7e, 0xa8, 0xbb, 0xa8, 0x7e, 0xa8, 0xbc, 0xa8, 0x7f, 0xa8, 0xbc, - 0xa8, 0x7f, 0xa9, 0xbc, 0xa9, 0x7f, 0xa9, 0xbc, 0xa9, 0x7f, 0xaa, 0xbb, - 0xaa, 0x7e, 0xa9, 0xbb, 0xaa, 0x7f, 0xaa, 0xbb, 0xaa, 0x7e, 0xa9, 0xbb, - 0xab, 0x7f, 0xaa, 0xbb, 0xab, 0x7e, 0xa9, 0xbb, 0xab, 0x7f, 0xaa, 0xbb, - 0xac, 0x7e, 0xa9, 0xbb, 0xac, 0x7f, 0xaa, 0xbb, 0xac, 0x7e, 0xa9, 0xbb, - 0xad, 0x7f, 0xaa, 0xbb, 0xad, 0x7e, 0xa9, 0xbb, 0xae, 0x7f, 0xaa, 0xbb, - 0xae, 0x7e, 0xa9, 0xbb, 0xae, 0x7f, 0xaa, 0xbb, 0xaf, 0x7e, 0xa9, 0xbb, - 0xaf, 0x7f, 0xaa, 0xbb, 0xaf, 0x7e, 0xaa, 0xbb, 0xb0, 0x7b, 0xaa, 0xbb, - 0xb0, 0x7e, 0xaa, 0xbb, 0xb0, 0x7b, 0xaa, 0xbb, 0xb1, 0x7e, 0xaa, 0xbb, - 0xb1, 0x7b, 0xaa, 0xbb, 0xb2, 0x7e, 0xaa, 0xbb, 0xb2, 0x7b, 0xaa, 0xbb, - 0xb2, 0x7e, 0xaa, 0xbb, 0xb3, 0x7b, 0xaa, 0xbb, 0xb3, 0x7e, 0xaa, 0xbb, - 0xb3, 0x7b, 0xb4, 0xbb, 0xb4, 0x71, 0xb4, 0xbb, 0xb4, 0x71, 0xb8, 0xbb, - 0xb4, 0x72, 0xb8, 0xbb, 0xb5, 0x72, 0xb8, 0xbb, 0xb5, 0x72, 0xb8, 0xbb, - 0xb5, 0x72, 0xb8, 0xbb, 0xb6, 0x72, 0xb8, 0xbb, 0xb6, 0x72, 0xb8, 0xbb, - 0xb6, 0x72, 0xb8, 0xbb, 0xb7, 0x72, 0xb8, 0xbb, 0xb7, 0x72, 0xb8, 0xbb, - 0xb7, 0x72, 0xb8, 0xbb, 0xb8, 0x72, 0xb8, 0xbb, 0xb8, 0x72, 0xb8, 0xbb, - 0xb8, 0x72, 0xbb, 0xbb, 0xb9, 0x73, 0xbc, 0xbb, 0xb9, 0x73, 0xbb, 0xbb, - 0xb9, 0x73, 0xbc, 0xbb, 0xba, 0x73, 0xbb, 0xbb, 0xba, 0x73, 0xbc, 0xbb, - 0xba, 0x73, 0xbb, 0xbb, 0xbb, 0x73, 0xbc, 0xbb, 0xbb, 0x73, 0xbb, 0xbb, - 0xbb, 0x73, 0xbc, 0xbb, 0xbc, 0x73, 0xbc, 0xbb, 0xbc, 0x73, 0xbf, 0xbb, - 0xbc, 0x74, 0xbf, 0xbb, 0xbd, 0x74, 0xbf, 0xbb, 0xbd, 0x74, 0xbf, 0xbb, - 0xbd, 0x74, 0xbf, 0xbb, 0xbe, 0x74, 0xbf, 0xbb, 0xbe, 0x74, 0xbf, 0xbb, - 0xbe, 0x74, 0xbf, 0xbb, 0xbf, 0x74, 0xbf, 0xbb, 0xbf, 0x74, 0xbf, 0xbb, - 0xbf, 0x74, 0xc0, 0xbb, 0xc0, 0x74, 0xc2, 0xbb, 0xc0, 0x75, 0xc3, 0xbb, - 0xc0, 0x75, 0xc2, 0xbb, 0xc1, 0x75, 0xc3, 0xbb, 0xc1, 0x75, 0xc2, 0xbb, - 0xc1, 0x75, 0xc3, 0xbb, 0xc1, 0x75, 0xc2, 0xbb, 0xc2, 0x75, 0xc3, 0xbb, - 0xc2, 0x75, 0xc2, 0xbb, 0xc2, 0x75, 0xc3, 0xbb, 0xc3, 0x75, 0xc3, 0xbb, - 0xc3, 0x75, 0xc3, 0xbb, 0xc3, 0x75, 0xc6, 0xbb, 0xc4, 0x76, 0xc6, 0xbb, - 0xc4, 0x76, 0xc6, 0xbb, 0xc4, 0x76, 0xc6, 0xbb, 0xc5, 0x76, 0xc6, 0xbb, - 0xc5, 0x76, 0xc6, 0xbb, 0xc5, 0x76, 0xc6, 0xbb, 0xc6, 0x76, 0xc6, 0xbb, - 0xc6, 0x76, 0xc6, 0xbb, 0xc6, 0x76, 0xc6, 0xbb, 0xc6, 0x76, 0xc7, 0xbb, - 0xc7, 0x76, 0xc9, 0xbb, 0xc7, 0x77, 0xca, 0xbb, 0xc7, 0x77, 0xc9, 0xbb, - 0xc8, 0x77, 0xca, 0xbb, 0xc8, 0x77, 0xc9, 0xbb, 0xc8, 0x77, 0xca, 0xbb, - 0xc9, 0x77, 0xc9, 0xbb, 0xc9, 0x77, 0xca, 0xbb, 0xc9, 0x77, 0xc9, 0xbb, - 0xc9, 0x77, 0xca, 0xbb, 0xca, 0x77, 0xca, 0xbb, 0xca, 0x77, 0xca, 0xbb, - 0xca, 0x77, 0xcb, 0xbb, 0xcb, 0x77, 0xcd, 0xbb, 0xcb, 0x78, 0xcd, 0xbb, - 0xcb, 0x78, 0xcd, 0xbb, 0xcc, 0x78, 0xcd, 0xbb, 0xcc, 0x78, 0xcd, 0xbb, - 0xcc, 0x78, 0xcd, 0xbb, 0xcc, 0x78, 0xcd, 0xbb, 0xcd, 0x78, 0xcd, 0xbb, - 0xcd, 0x78, 0xcd, 0xbb, 0xcd, 0x78, 0xce, 0xbb, 0xce, 0x78, 0xce, 0xbb, - 0xce, 0x78, 0xce, 0xbb, 0xce, 0x78, 0xce, 0xbb, 0xce, 0x78, 0xce, 0xbb, - 0xcf, 0x78, 0xce, 0xbb, 0xcf, 0x78, 0xce, 0xbb, 0xcf, 0x78, 0xce, 0xbb, - 0xd0, 0x78, 0xce, 0xbb, 0xd0, 0x78, 0xce, 0xbb, 0xd0, 0x78, 0xce, 0xbb, - 0xd0, 0x78, 0xce, 0xbb, 0xd1, 0x78, 0xce, 0xbb, 0xd1, 0x78, 0xce, 0xbb, - 0xd1, 0x78, 0xce, 0xbb, 0xd2, 0x78, 0xce, 0xbb, 0xd2, 0x78, 0xce, 0xbb, - 0xd2, 0x78, 0xce, 0xbb, 0xd2, 0x78, 0xce, 0xbb, 0xd3, 0x78, 0xce, 0xbb, - 0xd3, 0x78, 0xce, 0xbb, 0xd3, 0x78, 0xce, 0xbb, 0xd4, 0x78, 0xce, 0xbb, - 0xd4, 0x78, 0xce, 0xbb, 0xd4, 0x78, 0xce, 0xbb, 0xd4, 0x78, 0xce, 0xbb, - 0xd5, 0x78, 0xce, 0xbb, 0xd5, 0x78, 0xce, 0xbb, 0xd5, 0x78, 0xce, 0xbb, - 0xd6, 0x78, 0xce, 0xbb, 0xd6, 0x78, 0xce, 0xbb, 0xd6, 0x78, 0xce, 0xbb, - 0xd6, 0x78, 0xce, 0xbb, 0xd7, 0x78, 0xce, 0xbb, 0xd7, 0x78, 0xce, 0xbb, - 0xd7, 0x78, 0xce, 0xbb, 0xd7, 0x78, 0xce, 0xbb, 0xd8, 0x78, 0xce, 0xbb, - 0xd8, 0x78, 0xce, 0xbb, 0xd8, 0x78, 0xce, 0xbb, 0xd9, 0x78, 0xce, 0xbb, - 0xd9, 0x78, 0xce, 0xbb, 0xd9, 0x78, 0xce, 0xbb, 0xd9, 0x78, 0xce, 0xbb, - 0xda, 0x78, 0xd8, 0xbb, 0xda, 0x94, 0xd7, 0xbb, 0xda, 0x94, 0xd8, 0xbb, - 0xda, 0x94, 0xd7, 0xbb, 0xdb, 0x94, 0xd8, 0xbb, 0xdb, 0x94, 0xdb, 0xbb, - 0xdb, 0x95, 0xda, 0xbb, 0xdb, 0x95, 0xdb, 0xbb, 0xdc, 0x95, 0xda, 0xbb, - 0xdc, 0x95, 0xdb, 0xbb, 0xdc, 0x95, 0xda, 0xbb, 0xdd, 0x95, 0xdb, 0xbb, - 0xdd, 0x95, 0xda, 0xbb, 0xdd, 0x95, 0xdb, 0xbb, 0xdd, 0x95, 0xda, 0xbb, - 0xde, 0x95, 0xdb, 0xbb, 0xde, 0x95, 0xde, 0xbb, 0xde, 0x96, 0xdb, 0xbb, - 0xde, 0x95, 0xea, 0xbb, 0xdf, 0x7f, 0xea, 0xbb, 0xdf, 0x83, 0xea, 0xbb, - 0xdf, 0x7f, 0xea, 0xbb, 0xdf, 0x83, 0xea, 0xbb, 0xe0, 0x7f, 0xea, 0xbb, - 0xe0, 0x83, 0xea, 0xbb, 0xe0, 0x7f, 0xea, 0xbb, 0xe1, 0x83, 0xea, 0xbb, - 0xe1, 0x7f, 0xea, 0xbb, 0xe1, 0x83, 0xea, 0xbb, 0xe1, 0x7f, 0xea, 0xbb, - 0xe2, 0x83, 0xea, 0xbb, 0xe2, 0x7f, 0xea, 0xbb, 0xe2, 0x83, 0xea, 0xbb, - 0xe2, 0x7f, 0xea, 0xbb, 0xe3, 0x83, 0xea, 0xbb, 0xe3, 0x7f, 0xea, 0xbb, - 0xe3, 0x83, 0xea, 0xbb, 0xe3, 0x7f, 0xea, 0xbb, 0xe4, 0x83, 0xea, 0xbb, - 0xe4, 0x7f, 0xea, 0xbb, 0xe4, 0x83, 0xea, 0xbb, 0xe4, 0x7f, 0xea, 0xbb, - 0xe5, 0x83, 0xea, 0xbb, 0xe5, 0x7f, 0xea, 0xbb, 0xe5, 0x83, 0xea, 0xbb, - 0xe5, 0x7f, 0xea, 0xbb, 0xe6, 0x83, 0xea, 0xbb, 0xe6, 0x7f, 0xea, 0xbb, - 0xe6, 0x83, 0xea, 0xbb, 0xe6, 0x7f, 0xeb, 0xbb, 0xe7, 0x7f, 0xea, 0xbb, - 0xe7, 0x7f, 0xeb, 0xbb, 0xe7, 0x7f, 0xea, 0xbb, 0xe7, 0x7f, 0xeb, 0xbb, - 0xe8, 0x7f, 0xea, 0xbb, 0xe8, 0x7f, 0xeb, 0xbb, 0xe8, 0x7f, 0xea, 0xbb, - 0xe8, 0x7f, 0xeb, 0xbb, 0xe9, 0x7f, 0xea, 0xbb, 0xe9, 0x7f, 0xeb, 0xbb, - 0xe9, 0x7f, 0xea, 0xbb, 0xe9, 0x7f, 0xeb, 0xbb, 0xea, 0x7f, 0xea, 0xbb, - 0xea, 0x7f, 0xeb, 0xbb, 0xea, 0x7f, 0xea, 0xba, 0xea, 0x7f, 0xeb, 0xbb, - 0xea, 0x7f, 0xeb, 0xba, 0xea, 0x7f, 0xeb, 0xbb, 0xea, 0x7f, 0xeb, 0xba, - 0xea, 0x7f, 0xec, 0xbb, 0xea, 0x7f, 0xec, 0xba, 0xea, 0x7f, 0xec, 0xbb, - 0xea, 0x7f, 0xec, 0xba, 0xea, 0x7f, 0xec, 0xbb, 0xea, 0x7f, 0xed, 0xba, - 0xea, 0x7f, 0xed, 0xbb, 0xea, 0x7f, 0xed, 0xba, 0xea, 0x7f, 0xed, 0xbb, - 0xea, 0x7f, 0xee, 0xba, 0xea, 0x7f, 0xee, 0xbb, 0xea, 0x7f, 0xee, 0xba, - 0xea, 0x7f, 0xee, 0xbb, 0xea, 0x7f, 0xef, 0xba, 0xea, 0x7f, 0xef, 0xbb, - 0xea, 0x7f, 0xef, 0xba, 0xea, 0x7f, 0xef, 0xbb, 0xea, 0x7f, 0xf0, 0xba, - 0xea, 0x7f, 0xf0, 0xbb, 0xea, 0x7f, 0xf0, 0xbc, 0xf5, 0x7f, 0xf0, 0xbb, - 0xf5, 0x7f, 0xf1, 0xbc, 0xf5, 0x7f, 0xf1, 0xbb, 0xf5, 0x7f, 0xf1, 0xbc, - 0xf5, 0x7f, 0xf1, 0xbb, 0xf5, 0x7f, 0xf2, 0xbc, 0xf5, 0x7f, 0xf2, 0xbb, - 0xf5, 0x7f, 0xf2, 0xbc, 0xf5, 0x7f, 0xf2, 0xbb, 0xf5, 0x7f, 0xf2, 0xbc, - 0xf5, 0x7f, 0xf3, 0xbb, 0xf5, 0x7f, 0xf3, 0xbc, 0xf5, 0x7f, 0xf3, 0xbb, - 0xf5, 0x7f, 0xf3, 0xbc, 0xf5, 0x7f, 0xf4, 0xbb, 0xf5, 0x7f, 0xf4, 0xbc, - 0xf5, 0x7f, 0xf4, 0xbb, 0xf5, 0x7f, 0xf4, 0xbc, 0xf5, 0x7f, 0xf5, 0xbb, - 0xf5, 0x7f, 0xf5, 0xbc, 0xf5, 0x7f, 0xf5, 0xbb, 0xf5, 0x7f, 0xf5, 0xbb, - 0xf6, 0x7f, 0xf5, 0xbb, 0xf5, 0x7f, 0xf5, 0xbb, 0xf6, 0x7f, 0xf5, 0xbb, - 0xf6, 0x7f, 0xf5, 0xbb, 0xf6, 0x7f, 0xf5, 0xbb, 0xf6, 0x7f, 0xf5, 0xbb, - 0xf7, 0x7f, 0xf5, 0xbb, 0xf7, 0x7f, 0xf5, 0xbb, 0xf7, 0x7f, 0xf9, 0xbb, - 0xf7, 0x7f, 0xf9, 0xbb, 0xf8, 0x80, 0xf9, 0xbb, 0xf8, 0x7f, 0xf9, 0xbb, - 0xf8, 0x80, 0xf9, 0xbb, 0xf8, 0x7f, 0xf9, 0xbb, 0xf8, 0x80, 0xf9, 0xbb, - 0xf9, 0x7f, 0xf9, 0xbb, 0xf9, 0x7f, 0xf9, 0xbb, 0xf9, 0x7f, 0xf9, 0xbb, - 0xf9, 0x7f, 0xfa, 0xbb, 0xf9, 0x7f, 0xfa, 0xbb, 0xf9, 0x7f, 0xfa, 0xba, - 0xf9, 0x7f, 0xfa, 0xbb, 0xf9, 0x7f, 0xfa, 0xba, 0xf9, 0x7f, 0xfb, 0xbb, - 0xf9, 0x7f, 0xfb, 0xba, 0xf9, 0x7f, 0xfb, 0xbb, 0xf9, 0x7f, 0xfb, 0xba, - 0xf9, 0x7f, 0xfc, 0xbb, 0xf9, 0x7f, 0xfc, 0xba, 0xf9, 0x7f, 0xfc, 0xbb, - 0xf9, 0x7f, 0xfc, 0xba, 0xf9, 0x7f, 0xfc, 0xbb, 0xf9, 0x7f, 0xfd, 0xba, - 0xf9, 0x7f, 0xfd, 0xbb, 0xf9, 0x7f, 0xfd, 0xba, 0xf9, 0x7f, 0xfd, 0xbb, - 0xf9, 0x7f, 0xfe, 0xba, 0xf9, 0x7f, 0xfe, 0xbb, 0xf9, 0x7f, 0xfe, 0xba, - 0xf9, 0x7f, 0xfe, 0xbb, 0xf9, 0x7f, 0xfe, 0xba, 0xf9, 0x7f, 0xff, 0xb8, - 0xf9, 0x7f, 0xff, 0xba, 0xf9, 0x7f, 0x03, 0xc1, 0x91, 0x7f, 0x0a, 0xc3, - 0x90, 0x7f, 0x0f, 0xc1, 0x91, 0x7f, 0x14, 0xc3, 0x90, 0x7f, 0x17, 0xc1, - 0x91, 0x7f, 0x1b, 0xc3, 0x90, 0x7f, 0x1e, 0xc1, 0x91, 0x7f, 0x20, 0xc3, - 0x90, 0x7f, 0x23, 0xc1, 0x91, 0x7f, 0x25, 0xc3, 0x90, 0x7f, 0x27, 0xc1, - 0x91, 0x7f, 0x29, 0xc3, 0x90, 0x7f, 0x2b, 0xc1, 0x91, 0x7f, 0x2d, 0xc3, - 0x90, 0x7f, 0x2f, 0xc1, 0x91, 0x7f, 0x31, 0xc3, 0x90, 0x7f, 0x32, 0xc1, - 0x91, 0x7f, 0x34, 0xc3, 0x90, 0x7f, 0x35, 0xc1, 0x91, 0x7f, 0x37, 0xc3, - 0x90, 0x7f, 0x38, 0xc1, 0x91, 0x7f, 0x3a, 0xc3, 0x90, 0x7f, 0x3b, 0xc1, - 0x91, 0x7f, 0x3c, 0xc3, 0x90, 0x7f, 0x3e, 0xc1, 0x91, 0x7f, 0x3f, 0xbf, - 0x91, 0x7f, 0x40, 0xc1, 0x91, 0x7f, 0x42, 0xbf, 0x91, 0x7f, 0x43, 0xc1, - 0x91, 0x7f, 0x44, 0xbf, 0x91, 0x7f, 0x45, 0xc1, 0x91, 0x7f, 0x46, 0xbf, - 0x91, 0x7f, 0x47, 0xc1, 0x91, 0x7f, 0x48, 0xbf, 0x91, 0x7f, 0x49, 0xc1, - 0x91, 0x7f, 0x4a, 0xbf, 0x91, 0x7f, 0x4b, 0xc1, 0x91, 0x7f, 0x4c, 0xbf, - 0x91, 0x7f, 0x4d, 0xc1, 0x91, 0x7f, 0x4e, 0xbf, 0x91, 0x7f, 0x4f, 0xc1, - 0x91, 0x7f, 0x50, 0xbf, 0x91, 0x7f, 0x51, 0xc1, 0x91, 0x7f, 0x52, 0xbf, - 0x91, 0x7f, 0x53, 0xc1, 0x91, 0x7f, 0x54, 0xbf, 0x91, 0x7f, 0x55, 0xc1, - 0x91, 0x7f, 0x56, 0xbf, 0x91, 0x7f, 0x57, 0xc1, 0x91, 0x7f, 0x58, 0xbf, - 0x91, 0x7f, 0x58, 0xc1, 0x91, 0x7f, 0x59, 0xbf, 0x91, 0x7f, 0x5a, 0xc1, - 0x91, 0x7f, 0x5b, 0xbf, 0x91, 0x7f, 0x5c, 0xc1, 0x91, 0x7f, 0x5d, 0xbf, - 0x91, 0x7f, 0x5d, 0xc1, 0x91, 0x7f, 0x5e, 0xbf, 0x91, 0x7f, 0x5f, 0xc1, - 0x91, 0x7f, 0x60, 0xbf, 0x91, 0x7f, 0x60, 0xc1, 0x91, 0x7f, 0x61, 0xbf, - 0x91, 0x7f, 0x62, 0xc1, 0x91, 0x7f, 0x63, 0xbf, 0x91, 0x7f, 0x63, 0xc1, - 0x91, 0x7f, 0x64, 0xbf, 0x91, 0x7f, 0x65, 0xc1, 0x91, 0x7f, 0x66, 0xbf, - 0x91, 0x7f, 0x66, 0xc1, 0x91, 0x7f, 0x67, 0xbf, 0x91, 0x7f, 0x68, 0xbd, - 0x92, 0x7f, 0x68, 0xbf, 0x91, 0x7f, 0x69, 0xbd, 0x92, 0x7f, 0x6a, 0xbf, - 0x91, 0x7f, 0x6a, 0xbd, 0x92, 0x7f, 0x6b, 0xbf, 0x91, 0x7f, 0x6c, 0xbd, - 0x92, 0x7f, 0x6c, 0xbf, 0x91, 0x7f, 0x6d, 0xbd, 0x92, 0x7f, 0x6e, 0xbf, - 0x91, 0x7f, 0x6e, 0xbd, 0x92, 0x7f, 0x6f, 0xbf, 0x91, 0x7f, 0x70, 0xbd, - 0x92, 0x7f, 0x70, 0xbf, 0x91, 0x7f, 0x71, 0xbd, 0x92, 0x7f, 0x72, 0xbf, - 0x91, 0x7f, 0x72, 0xbd, 0x92, 0x7f, 0x73, 0xbf, 0x91, 0x7f, 0x73, 0xbd, - 0x92, 0x7f, 0x74, 0xbf, 0x91, 0x7f, 0x75, 0xbd, 0x92, 0x7f, 0x75, 0xbf, - 0x91, 0x7f, 0x76, 0xbd, 0x92, 0x7f, 0x76, 0xbf, 0x91, 0x7f, 0x77, 0xbd, - 0x92, 0x7f, 0x78, 0xbf, 0x91, 0x7f, 0x78, 0xbd, 0x92, 0x7f, 0x79, 0xbf, - 0x91, 0x7f, 0x79, 0xbd, 0x92, 0x7f, 0x7a, 0xbf, 0x91, 0x7f, 0x7a, 0xbd, - 0x92, 0x7f, 0x7b, 0xbf, 0x91, 0x7f, 0x7c, 0xbd, 0x92, 0x7f, 0x7c, 0xbf, - 0x91, 0x7f, 0x7d, 0xbd, 0x92, 0x7f, 0x7d, 0xbf, 0x91, 0x7f, 0x7e, 0xbd, - 0x92, 0x7f, 0x7e, 0xbf, 0x91, 0x7f, 0x7f, 0xbd, 0x92, 0x7f, 0x7f, 0xbf, - 0x91, 0x7f, 0x80, 0xbd, 0x92, 0x7f, 0x81, 0xbf, 0x91, 0x7f, 0x81, 0xbd, - 0x92, 0x7f, 0x82, 0xbf, 0x91, 0x7f, 0x82, 0xbd, 0x92, 0x7f, 0x83, 0xbf, - 0x91, 0x7f, 0x83, 0xbd, 0x92, 0x7f, 0x84, 0xbf, 0x91, 0x7f, 0x84, 0xbd, - 0x92, 0x7f, 0x85, 0xbf, 0x91, 0x7f, 0x85, 0xbd, 0x92, 0x7f, 0x86, 0xbf, - 0x91, 0x7f, 0x86, 0xbd, 0x92, 0x7f, 0x87, 0xbb, 0x92, 0x7f, 0x87, 0xbd, - 0x92, 0x7f, 0x88, 0xbb, 0x92, 0x7f, 0x88, 0xbd, 0x92, 0x7f, 0x89, 0xbb, - 0x92, 0x7f, 0x89, 0xbd, 0x92, 0x7f, 0x8a, 0xbb, 0x92, 0x7f, 0x8a, 0xbd, - 0x92, 0x7f, 0x8b, 0xbb, 0x92, 0x7f, 0x8b, 0xbd, 0x92, 0x7f, 0x8c, 0xbb, - 0x92, 0x7f, 0x8c, 0xbd, 0x92, 0x7f, 0x8d, 0xbb, 0x92, 0x7f, 0x8d, 0xbd, - 0x92, 0x7f, 0x8e, 0xbb, 0x92, 0x7f, 0x8e, 0xbd, 0x92, 0x7f, 0x8e, 0xbb, - 0x92, 0x7f, 0x8f, 0xbd, 0x92, 0x7f, 0x8f, 0xbb, 0x92, 0x7f, 0x90, 0xbd, - 0x92, 0x7f, 0x90, 0xbb, 0x92, 0x7f, 0x91, 0xbb, 0x93, 0x7f, 0x91, 0xbb, - 0x92, 0x7f, 0x92, 0xbb, 0x93, 0x7f, 0x91, 0xbb, 0x92, 0x7f, 0x92, 0xbb, - 0x93, 0x7f, 0x91, 0xbb, 0x93, 0x7f, 0x92, 0xbb, 0x94, 0x7f, 0x96, 0xbb, - 0x94, 0x80, 0x96, 0xbb, 0x94, 0x80, 0x96, 0xbb, 0x95, 0x80, 0x96, 0xbb, - 0x95, 0x80, 0x96, 0xbb, 0x96, 0x80, 0x96, 0xbb, 0x96, 0x80, 0x97, 0xbb, - 0x97, 0x80, 0x97, 0xbb, 0x97, 0x80, 0x98, 0xbb, 0x98, 0x80, 0x98, 0xbb, - 0x98, 0x80, 0x98, 0xbb, 0x98, 0x80, 0x99, 0xbb, 0x99, 0x80, 0x99, 0xbb, - 0x99, 0x80, 0x9a, 0xbb, 0x9a, 0x80, 0x99, 0xbb, 0x9a, 0x80, 0x9a, 0xbb, - 0x9a, 0x80, 0x9b, 0xbb, 0x9b, 0x81, 0x9b, 0xbb, 0x9b, 0x81, 0x9c, 0xbb, - 0x9c, 0x81, 0x9c, 0xbb, 0x9c, 0x81, 0x9d, 0xbb, 0x9d, 0x81, 0x9d, 0xbb, - 0x9d, 0x81, 0x9d, 0xbb, 0x9d, 0x81, 0x9e, 0xbb, 0x9e, 0x81, 0x9e, 0xbb, - 0x9e, 0x81, 0x9e, 0xbb, 0x9f, 0x81, 0x9e, 0xbb, 0x9f, 0x81, 0x9e, 0xbb, - 0x9f, 0x81, 0x9e, 0xbb, 0xa0, 0x81, 0xa2, 0xbb, 0xa0, 0x7d, 0xa2, 0xbb, - 0xa1, 0x7d, 0xa2, 0xbb, 0xa1, 0x7d, 0xa2, 0xbb, 0xa1, 0x7d, 0xa2, 0xbb, - 0xa2, 0x7d, 0xa2, 0xbb, 0xa2, 0x7d, 0xa3, 0xbb, 0xa3, 0x7d, 0xa3, 0xbb, - 0xa3, 0x7d, 0xa3, 0xbb, 0xa3, 0x7d, 0xa4, 0xbb, 0xa4, 0x7d, 0xa4, 0xbb, - 0xa4, 0x7d, 0xa5, 0xbb, 0xa5, 0x7d, 0xa5, 0xbb, 0xa5, 0x7d, 0xa6, 0xbb, - 0xa5, 0x7e, 0xa6, 0xbb, 0xa6, 0x7e, 0xa6, 0xbb, 0xa6, 0x7e, 0xa6, 0xbb, - 0xa6, 0x7e, 0xa7, 0xbb, 0xa7, 0x7e, 0xa7, 0xbb, 0xa7, 0x7e, 0xa8, 0xbb, - 0xa8, 0x7e, 0xa8, 0xbb, 0xa8, 0x7e, 0xa8, 0xbb, 0xa8, 0x7e, 0xa9, 0xbb, - 0xa9, 0x7e, 0xa9, 0xbb, 0xa9, 0x7e, 0xa9, 0xbb, 0xaa, 0x7e, 0xa9, 0xbb, - 0xaa, 0x7e, 0xa9, 0xbb, 0xaa, 0x7e, 0xa9, 0xbb, 0xab, 0x7e, 0xaa, 0xbb, - 0xab, 0x7d, 0xa9, 0xbb, 0xab, 0x7e, 0xaa, 0xbb, 0xac, 0x7d, 0xa9, 0xbb, - 0xac, 0x7e, 0xaa, 0xbb, 0xac, 0x7d, 0xa9, 0xbb, 0xad, 0x7e, 0xaa, 0xbb, - 0xad, 0x7d, 0xa9, 0xbb, 0xae, 0x7e, 0xaa, 0xbb, 0xae, 0x7d, 0xa9, 0xbb, - 0xae, 0x7e, 0xaa, 0xbb, 0xaf, 0x7d, 0xa9, 0xbb, 0xaf, 0x7e, 0xaa, 0xbb, - 0xaf, 0x7d, 0xa9, 0xbb, 0xb0, 0x7e, 0xaa, 0xbb, 0xb0, 0x7d, 0xa9, 0xbb, - 0xb0, 0x7e, 0xaa, 0xbb, 0xb1, 0x7d, 0xa9, 0xbb, 0xb1, 0x7e, 0xaa, 0xbb, - 0xb2, 0x7d, 0xa9, 0xbb, 0xb2, 0x7e, 0xaa, 0xbb, 0xb2, 0x7d, 0xaa, 0xbb, - 0xb3, 0x7a, 0xaa, 0xbb, 0xb3, 0x7d, 0xaa, 0xbb, 0xb3, 0x7a, 0xaa, 0xbb, - 0xb4, 0x7d, 0xb6, 0xbb, 0xb4, 0x71, 0xb6, 0xbb, 0xb4, 0x71, 0xb6, 0xbb, - 0xb5, 0x71, 0xb6, 0xbb, 0xb5, 0x71, 0xb6, 0xbb, 0xb5, 0x71, 0xb6, 0xbb, - 0xb6, 0x71, 0xb6, 0xbb, 0xb6, 0x71, 0xba, 0xbb, 0xb6, 0x72, 0xba, 0xbb, - 0xb7, 0x72, 0xba, 0xbb, 0xb7, 0x72, 0xba, 0xbb, 0xb7, 0x72, 0xba, 0xbb, - 0xb8, 0x72, 0xba, 0xbb, 0xb8, 0x72, 0xba, 0xbb, 0xb8, 0x72, 0xba, 0xbb, - 0xb9, 0x72, 0xba, 0xbb, 0xb9, 0x72, 0xba, 0xbb, 0xb9, 0x72, 0xba, 0xbb, - 0xba, 0x72, 0xba, 0xbb, 0xba, 0x72, 0xba, 0xbb, 0xba, 0x72, 0xbd, 0xbb, - 0xbb, 0x73, 0xbe, 0xbb, 0xbb, 0x73, 0xbd, 0xbb, 0xbb, 0x73, 0xbe, 0xbb, - 0xbc, 0x73, 0xbd, 0xbb, 0xbc, 0x73, 0xbe, 0xbb, 0xbc, 0x73, 0xbd, 0xbb, - 0xbd, 0x73, 0xbe, 0xbb, 0xbd, 0x73, 0xbd, 0xbb, 0xbd, 0x73, 0xbe, 0xbb, - 0xbe, 0x73, 0xbe, 0xbb, 0xbe, 0x73, 0xc1, 0xbb, 0xbe, 0x74, 0xc1, 0xbb, - 0xbf, 0x74, 0xc1, 0xbb, 0xbf, 0x74, 0xc1, 0xbb, 0xbf, 0x74, 0xc1, 0xbb, - 0xc0, 0x74, 0xc1, 0xbb, 0xc0, 0x74, 0xc1, 0xbb, 0xc0, 0x74, 0xc1, 0xbb, - 0xc1, 0x74, 0xc1, 0xbb, 0xc1, 0x74, 0xc1, 0xbb, 0xc1, 0x74, 0xc1, 0xbb, - 0xc1, 0x74, 0xc4, 0xbb, 0xc2, 0x75, 0xc5, 0xbb, 0xc2, 0x75, 0xc4, 0xbb, - 0xc2, 0x75, 0xc5, 0xbb, 0xc3, 0x75, 0xc4, 0xbb, 0xc3, 0x75, 0xc5, 0xbb, - 0xc3, 0x75, 0xc4, 0xbb, 0xc4, 0x75, 0xc5, 0xbb, 0xc4, 0x75, 0xc4, 0xbb, - 0xc4, 0x75, 0xc5, 0xbb, 0xc5, 0x75, 0xc5, 0xbb, 0xc5, 0x75, 0xc8, 0xbb, - 0xc5, 0x76, 0xc8, 0xbb, 0xc6, 0x76, 0xc8, 0xbb, 0xc6, 0x76, 0xc8, 0xbb, - 0xc6, 0x76, 0xc8, 0xbb, 0xc6, 0x76, 0xc8, 0xbb, 0xc7, 0x76, 0xc8, 0xbb, - 0xc7, 0x76, 0xc8, 0xbb, 0xc7, 0x76, 0xc8, 0xbb, 0xc8, 0x76, 0xc8, 0xbb, - 0xc8, 0x76, 0xc8, 0xbb, 0xc8, 0x76, 0xcb, 0xbb, 0xc9, 0x77, 0xcb, 0xbb, - 0xc9, 0x77, 0xcb, 0xbb, 0xc9, 0x77, 0xcb, 0xbb, 0xc9, 0x77, 0xcb, 0xbb, - 0xca, 0x77, 0xcb, 0xbb, 0xca, 0x77, 0xcb, 0xbb, 0xca, 0x77, 0xcb, 0xbb, - 0xcb, 0x77, 0xcb, 0xbb, 0xcb, 0x77, 0xcb, 0xbb, 0xcb, 0x77, 0xcc, 0xbb, - 0xcc, 0x77, 0xcc, 0xbb, 0xcc, 0x77, 0xcc, 0xbb, 0xcc, 0x77, 0xce, 0xbb, - 0xcc, 0x78, 0xce, 0xbb, 0xcd, 0x78, 0xce, 0xbb, 0xcd, 0x78, 0xce, 0xbb, - 0xcd, 0x78, 0xce, 0xbb, 0xce, 0x78, 0xce, 0xbb, 0xce, 0x78, 0xce, 0xbb, - 0xce, 0x78, 0xce, 0xbb, 0xce, 0x78, 0xce, 0xbb, 0xcf, 0x78, 0xce, 0xbb, - 0xcf, 0x78, 0xce, 0xbb, 0xcf, 0x78, 0xce, 0xbb, 0xd0, 0x78, 0xce, 0xbb, - 0xd0, 0x78, 0xce, 0xbb, 0xd0, 0x78, 0xce, 0xbb, 0xd0, 0x78, 0xce, 0xbb, - 0xd1, 0x78, 0xce, 0xbb, 0xd1, 0x78, 0xce, 0xbb, 0xd1, 0x78, 0xce, 0xbb, - 0xd2, 0x78, 0xce, 0xbb, 0xd2, 0x78, 0xce, 0xbb, 0xd2, 0x78, 0xce, 0xbb, - 0xd2, 0x78, 0xce, 0xbb, 0xd3, 0x78, 0xce, 0xbb, 0xd3, 0x78, 0xce, 0xbb, - 0xd3, 0x78, 0xce, 0xbb, 0xd4, 0x78, 0xce, 0xbb, 0xd4, 0x78, 0xce, 0xbb, - 0xd4, 0x78, 0xce, 0xbb, 0xd4, 0x78, 0xce, 0xbb, 0xd5, 0x78, 0xce, 0xbb, - 0xd5, 0x78, 0xce, 0xbb, 0xd5, 0x78, 0xce, 0xbb, 0xd6, 0x78, 0xce, 0xbb, - 0xd6, 0x78, 0xce, 0xbb, 0xd6, 0x78, 0xce, 0xbb, 0xd6, 0x78, 0xce, 0xbb, - 0xd7, 0x78, 0xce, 0xbb, 0xd7, 0x78, 0xce, 0xbb, 0xd7, 0x78, 0xce, 0xbb, - 0xd7, 0x78, 0xce, 0xbb, 0xd8, 0x78, 0xce, 0xbb, 0xd8, 0x78, 0xce, 0xbb, - 0xd8, 0x78, 0xce, 0xbb, 0xd9, 0x78, 0xce, 0xbb, 0xd9, 0x78, 0xce, 0xbb, - 0xd9, 0x78, 0xd6, 0xbb, 0xd9, 0x93, 0xd9, 0xbb, 0xda, 0x94, 0xd9, 0xbb, - 0xda, 0x94, 0xd9, 0xbb, 0xda, 0x94, 0xd9, 0xbb, 0xda, 0x94, 0xd9, 0xbb, - 0xdb, 0x94, 0xd9, 0xbb, 0xdb, 0x94, 0xd9, 0xbb, 0xdb, 0x94, 0xd9, 0xbb, - 0xdb, 0x94, 0xd9, 0xbb, 0xdc, 0x94, 0xd9, 0xbb, 0xdc, 0x94, 0xd9, 0xbb, - 0xdc, 0x94, 0xdc, 0xbb, 0xdd, 0x95, 0xdc, 0xbb, 0xdd, 0x95, 0xdc, 0xbb, - 0xdd, 0x95, 0xdc, 0xbb, 0xdd, 0x95, 0xdc, 0xbb, 0xde, 0x95, 0xdc, 0xbb, - 0xde, 0x95, 0xdc, 0xbb, 0xde, 0x95, 0xdc, 0xbb, 0xde, 0x95, 0xdc, 0xbb, - 0xdf, 0x95, 0xea, 0xbb, 0xdf, 0x82, 0xea, 0xbb, 0xdf, 0x7f, 0xea, 0xbb, - 0xdf, 0x82, 0xea, 0xbb, 0xe0, 0x7f, 0xea, 0xbb, 0xe0, 0x82, 0xea, 0xbb, - 0xe0, 0x7f, 0xea, 0xbb, 0xe1, 0x82, 0xea, 0xbb, 0xe1, 0x7f, 0xea, 0xbb, - 0xe1, 0x82, 0xea, 0xbb, 0xe1, 0x7f, 0xea, 0xbb, 0xe2, 0x82, 0xea, 0xbb, - 0xe2, 0x7f, 0xea, 0xbb, 0xe2, 0x82, 0xea, 0xbb, 0xe2, 0x7f, 0xea, 0xbb, - 0xe3, 0x82, 0xea, 0xbb, 0xe3, 0x7f, 0xea, 0xbb, 0xe3, 0x82, 0xea, 0xbb, - 0xe3, 0x7f, 0xea, 0xbb, 0xe4, 0x82, 0xea, 0xbb, 0xe4, 0x7f, 0xea, 0xbb, - 0xe4, 0x82, 0xea, 0xbb, 0xe4, 0x7f, 0xea, 0xbb, 0xe5, 0x82, 0xea, 0xbb, - 0xe5, 0x7f, 0xea, 0xbb, 0xe5, 0x82, 0xea, 0xbb, 0xe5, 0x7f, 0xea, 0xbb, - 0xe6, 0x82, 0xea, 0xbb, 0xe6, 0x7f, 0xea, 0xbb, 0xe6, 0x82, 0xea, 0xbb, - 0xe6, 0x7f, 0xea, 0xbb, 0xe7, 0x82, 0xea, 0xbb, 0xe7, 0x7f, 0xea, 0xbb, - 0xe7, 0x82, 0xea, 0xbb, 0xe7, 0x7f, 0xea, 0xbb, 0xe8, 0x82, 0xea, 0xbb, - 0xe8, 0x7f, 0xea, 0xbb, 0xe8, 0x82, 0xea, 0xbb, 0xe8, 0x7f, 0xeb, 0xbb, - 0xe9, 0x7f, 0xea, 0xbb, 0xe9, 0x7f, 0xeb, 0xbb, 0xe9, 0x7f, 0xea, 0xbb, - 0xe9, 0x7f, 0xeb, 0xbb, 0xea, 0x7f, 0xea, 0xbb, 0xea, 0x7f, 0xeb, 0xbb, - 0xea, 0x7f, 0xea, 0xbb, 0xea, 0x7f, 0xeb, 0xbb, 0xea, 0x7f, 0xeb, 0xbb, - 0xea, 0x7f, 0xeb, 0xbb, 0xea, 0x7f, 0xeb, 0xba, 0xea, 0x7f, 0xec, 0xbb, - 0xea, 0x7f, 0xec, 0xba, 0xea, 0x7f, 0xec, 0xbb, 0xea, 0x7f, 0xec, 0xba, - 0xea, 0x7f, 0xec, 0xbb, 0xea, 0x7f, 0xed, 0xba, 0xea, 0x7f, 0xed, 0xbb, - 0xea, 0x7f, 0xed, 0xba, 0xea, 0x7f, 0xed, 0xbb, 0xea, 0x7f, 0xee, 0xba, - 0xea, 0x7f, 0xee, 0xbb, 0xea, 0x7f, 0xee, 0xba, 0xea, 0x7f, 0xee, 0xbb, - 0xea, 0x7f, 0xef, 0xba, 0xea, 0x7f, 0xef, 0xbb, 0xea, 0x7f, 0xef, 0xba, - 0xea, 0x7f, 0xef, 0xbb, 0xea, 0x7f, 0xf0, 0xba, 0xea, 0x7f, 0xf0, 0xbe, - 0xf5, 0x7f, 0xf0, 0xbc, 0xf5, 0x7f, 0xf0, 0xbe, 0xf5, 0x7f, 0xf1, 0xbc, - 0xf5, 0x7f, 0xf1, 0xbe, 0xf5, 0x7f, 0xf1, 0xbc, 0xf5, 0x7f, 0xf1, 0xbe, - 0xf5, 0x7f, 0xf2, 0xbc, 0xf5, 0x7f, 0xf2, 0xbb, 0xf5, 0x7f, 0xf2, 0xbc, - 0xf5, 0x7f, 0xf2, 0xbb, 0xf5, 0x7f, 0xf2, 0xbc, 0xf5, 0x7f, 0xf3, 0xbb, - 0xf5, 0x7f, 0xf3, 0xbc, 0xf5, 0x7f, 0xf3, 0xbb, 0xf5, 0x7f, 0xf3, 0xbc, - 0xf5, 0x7f, 0xf4, 0xbb, 0xf5, 0x7f, 0xf4, 0xbc, 0xf5, 0x7f, 0xf4, 0xbb, - 0xf5, 0x7f, 0xf4, 0xbc, 0xf5, 0x7f, 0xf5, 0xbb, 0xf5, 0x7f, 0xf5, 0xbc, - 0xf5, 0x7f, 0xf5, 0xbb, 0xf5, 0x7f, 0xf5, 0xbb, 0xf6, 0x7f, 0xf5, 0xbb, - 0xf5, 0x7f, 0xf5, 0xbb, 0xf6, 0x7f, 0xf5, 0xbb, 0xf6, 0x7f, 0xf5, 0xbb, - 0xf6, 0x7f, 0xf5, 0xbb, 0xf6, 0x7f, 0xf5, 0xbb, 0xf7, 0x7f, 0xf5, 0xbb, - 0xf7, 0x7f, 0xf5, 0xbb, 0xf7, 0x7f, 0xf9, 0xbb, 0xf7, 0x7f, 0xf9, 0xbb, - 0xf8, 0x80, 0xf9, 0xbb, 0xf8, 0x7f, 0xf9, 0xbb, 0xf8, 0x80, 0xf9, 0xbb, - 0xf8, 0x7f, 0xf9, 0xbb, 0xf8, 0x80, 0xf9, 0xbb, 0xf9, 0x7f, 0xf9, 0xbb, - 0xf9, 0x7f, 0xf9, 0xbb, 0xf9, 0x7f, 0xf9, 0xbb, 0xf9, 0x7f, 0xfa, 0xbb, - 0xf9, 0x7f, 0xfa, 0xbb, 0xf9, 0x7f, 0xfa, 0xbb, 0xf9, 0x7f, 0xfa, 0xbb, - 0xf9, 0x7f, 0xfa, 0xbb, 0xf9, 0x7f, 0xfb, 0xbb, 0xf9, 0x7f, 0xfb, 0xb9, - 0xf9, 0x7f, 0xfb, 0xbb, 0xf9, 0x7f, 0xfb, 0xb9, 0xf9, 0x7f, 0xfc, 0xbb, - 0xf9, 0x7f, 0xfc, 0xb9, 0xf9, 0x7f, 0xfc, 0xbb, 0xf9, 0x7f, 0xfc, 0xb9, - 0xf9, 0x7f, 0xfc, 0xbb, 0xf9, 0x7f, 0xfd, 0xb9, 0xf9, 0x7f, 0xfd, 0xbb, - 0xf9, 0x7f, 0xfd, 0xb9, 0xf9, 0x7f, 0xfd, 0xbb, 0xf9, 0x7f, 0xfe, 0xb9, - 0xf9, 0x7f, 0xfe, 0xbb, 0xf9, 0x7f, 0xfe, 0xb9, 0xf9, 0x7f, 0xfe, 0xbb, - 0xf9, 0x7f, 0xfe, 0xb9, 0xf9, 0x7f, 0xff, 0xbb, 0xf9, 0x7f, 0xff, 0xb9, - 0xf9, 0x7f, 0x03, 0xc1, 0x91, 0x80, 0x0a, 0xc3, 0x90, 0x80, 0x0f, 0xc1, - 0x91, 0x80, 0x14, 0xc3, 0x90, 0x80, 0x17, 0xc1, 0x91, 0x80, 0x1b, 0xc3, - 0x90, 0x80, 0x1e, 0xc1, 0x91, 0x80, 0x20, 0xc3, 0x90, 0x80, 0x23, 0xc1, - 0x91, 0x80, 0x25, 0xc3, 0x90, 0x80, 0x27, 0xc1, 0x91, 0x80, 0x29, 0xc3, - 0x90, 0x80, 0x2b, 0xc1, 0x91, 0x80, 0x2d, 0xc3, 0x90, 0x80, 0x2f, 0xc1, - 0x91, 0x80, 0x31, 0xc3, 0x90, 0x80, 0x32, 0xc1, 0x91, 0x80, 0x34, 0xc3, - 0x90, 0x80, 0x35, 0xc1, 0x91, 0x80, 0x37, 0xc3, 0x90, 0x80, 0x38, 0xc1, - 0x91, 0x80, 0x3a, 0xc3, 0x90, 0x80, 0x3b, 0xc1, 0x91, 0x80, 0x3c, 0xc3, - 0x90, 0x80, 0x3e, 0xc1, 0x91, 0x80, 0x3f, 0xc3, 0x90, 0x80, 0x40, 0xc1, - 0x91, 0x80, 0x42, 0xc3, 0x90, 0x80, 0x43, 0xc1, 0x91, 0x80, 0x44, 0xc3, - 0x90, 0x80, 0x45, 0xc1, 0x91, 0x80, 0x46, 0xc3, 0x90, 0x80, 0x47, 0xc1, - 0x91, 0x80, 0x48, 0xc3, 0x90, 0x80, 0x49, 0xc1, 0x91, 0x80, 0x4a, 0xc3, - 0x90, 0x80, 0x4b, 0xc1, 0x91, 0x80, 0x4c, 0xc3, 0x90, 0x80, 0x4d, 0xc1, - 0x91, 0x80, 0x4e, 0xc3, 0x90, 0x80, 0x4f, 0xc1, 0x91, 0x80, 0x50, 0xc3, - 0x90, 0x80, 0x51, 0xc1, 0x91, 0x80, 0x52, 0xc3, 0x90, 0x80, 0x53, 0xc1, - 0x91, 0x80, 0x54, 0xc3, 0x90, 0x80, 0x55, 0xc1, 0x91, 0x80, 0x56, 0xc3, - 0x90, 0x80, 0x57, 0xc1, 0x91, 0x80, 0x58, 0xbf, 0x91, 0x80, 0x58, 0xc1, - 0x91, 0x80, 0x59, 0xbf, 0x91, 0x80, 0x5a, 0xc1, 0x91, 0x80, 0x5b, 0xbf, - 0x91, 0x80, 0x5c, 0xc1, 0x91, 0x80, 0x5d, 0xbf, 0x91, 0x80, 0x5d, 0xc1, - 0x91, 0x80, 0x5e, 0xbf, 0x91, 0x80, 0x5f, 0xc1, 0x91, 0x80, 0x60, 0xbf, - 0x91, 0x80, 0x60, 0xc1, 0x91, 0x80, 0x61, 0xbf, 0x91, 0x80, 0x62, 0xc1, - 0x91, 0x80, 0x63, 0xbf, 0x91, 0x80, 0x63, 0xc1, 0x91, 0x80, 0x64, 0xbf, - 0x91, 0x80, 0x65, 0xc1, 0x91, 0x80, 0x66, 0xbf, 0x91, 0x80, 0x66, 0xc1, - 0x91, 0x80, 0x67, 0xbf, 0x91, 0x80, 0x68, 0xc1, 0x91, 0x80, 0x68, 0xbf, - 0x91, 0x80, 0x69, 0xc1, 0x91, 0x80, 0x6a, 0xbf, 0x91, 0x80, 0x6a, 0xc1, - 0x91, 0x80, 0x6b, 0xbf, 0x91, 0x80, 0x6c, 0xc1, 0x91, 0x80, 0x6c, 0xbf, - 0x91, 0x80, 0x6d, 0xc1, 0x91, 0x80, 0x6e, 0xbf, 0x91, 0x80, 0x6e, 0xc1, - 0x91, 0x80, 0x6f, 0xbf, 0x91, 0x80, 0x70, 0xc1, 0x91, 0x80, 0x70, 0xbf, - 0x91, 0x80, 0x71, 0xc1, 0x91, 0x80, 0x72, 0xbf, 0x91, 0x80, 0x72, 0xbd, - 0x92, 0x80, 0x73, 0xbf, 0x91, 0x80, 0x73, 0xbd, 0x92, 0x80, 0x74, 0xbf, - 0x91, 0x80, 0x75, 0xbd, 0x92, 0x80, 0x75, 0xbf, 0x91, 0x80, 0x76, 0xbd, - 0x92, 0x80, 0x76, 0xbf, 0x91, 0x80, 0x77, 0xbd, 0x92, 0x80, 0x78, 0xbf, - 0x91, 0x80, 0x78, 0xbd, 0x92, 0x80, 0x79, 0xbf, 0x91, 0x80, 0x79, 0xbd, - 0x92, 0x80, 0x7a, 0xbf, 0x91, 0x80, 0x7a, 0xbd, 0x92, 0x80, 0x7b, 0xbf, - 0x91, 0x80, 0x7c, 0xbd, 0x92, 0x80, 0x7c, 0xbf, 0x91, 0x80, 0x7d, 0xbd, - 0x92, 0x80, 0x7d, 0xbf, 0x91, 0x80, 0x7e, 0xbd, 0x92, 0x80, 0x7e, 0xbf, - 0x91, 0x80, 0x7f, 0xbd, 0x92, 0x80, 0x7f, 0xbf, 0x91, 0x80, 0x80, 0xbd, - 0x92, 0x80, 0x81, 0xbf, 0x91, 0x80, 0x81, 0xbd, 0x92, 0x80, 0x82, 0xbf, - 0x91, 0x80, 0x82, 0xbd, 0x92, 0x80, 0x83, 0xbf, 0x91, 0x80, 0x83, 0xbd, - 0x92, 0x80, 0x84, 0xbf, 0x91, 0x80, 0x84, 0xbd, 0x92, 0x80, 0x85, 0xbf, - 0x91, 0x80, 0x85, 0xbd, 0x92, 0x80, 0x86, 0xbf, 0x91, 0x80, 0x86, 0xbd, - 0x92, 0x80, 0x87, 0xbc, 0x92, 0x80, 0x87, 0xbd, 0x92, 0x80, 0x88, 0xbc, - 0x92, 0x80, 0x88, 0xbd, 0x92, 0x80, 0x89, 0xbc, 0x92, 0x80, 0x89, 0xbd, - 0x92, 0x80, 0x8a, 0xbc, 0x92, 0x80, 0x8a, 0xbd, 0x92, 0x80, 0x8b, 0xbc, - 0x92, 0x80, 0x8b, 0xbd, 0x92, 0x80, 0x8c, 0xbc, 0x92, 0x80, 0x8c, 0xbd, - 0x92, 0x80, 0x8d, 0xbc, 0x92, 0x80, 0x8d, 0xbd, 0x92, 0x80, 0x8e, 0xbc, - 0x92, 0x80, 0x8e, 0xbd, 0x92, 0x80, 0x8e, 0xbc, 0x92, 0x80, 0x8f, 0xbd, - 0x92, 0x80, 0x8f, 0xbc, 0x92, 0x80, 0x90, 0xbd, 0x92, 0x80, 0x90, 0xbc, - 0x92, 0x80, 0x91, 0xbc, 0x93, 0x80, 0x91, 0xbc, 0x92, 0x80, 0x92, 0xbc, - 0x93, 0x80, 0x91, 0xbc, 0x92, 0x80, 0x92, 0xbc, 0x93, 0x80, 0x91, 0xbc, - 0x93, 0x80, 0x92, 0xbc, 0x94, 0x80, 0x96, 0xbc, 0x94, 0x80, 0x96, 0xbc, - 0x94, 0x80, 0x96, 0xbc, 0x95, 0x80, 0x96, 0xbc, 0x95, 0x80, 0x96, 0xbb, - 0x96, 0x80, 0x96, 0xbb, 0x96, 0x80, 0x97, 0xbb, 0x97, 0x80, 0x97, 0xbb, - 0x97, 0x80, 0x98, 0xbc, 0x98, 0x81, 0x98, 0xbc, 0x98, 0x81, 0x98, 0xbc, - 0x98, 0x81, 0x99, 0xbc, 0x99, 0x81, 0x99, 0xbc, 0x99, 0x81, 0x9a, 0xbc, - 0x9a, 0x81, 0x9a, 0xbc, 0x9a, 0x81, 0x9a, 0xbc, 0x9a, 0x81, 0x9b, 0xbc, - 0x9b, 0x81, 0x9b, 0xbc, 0x9b, 0x81, 0x9c, 0xbc, 0x9c, 0x81, 0x9b, 0xbc, - 0x9c, 0x81, 0x9c, 0xbc, 0x9d, 0x81, 0x9d, 0xbc, 0x9d, 0x82, 0x9d, 0xbc, - 0x9d, 0x82, 0x9e, 0xbc, 0x9e, 0x82, 0x9e, 0xbc, 0x9e, 0x82, 0x9f, 0xbc, - 0x9f, 0x82, 0x9f, 0xbc, 0x9f, 0x82, 0x9f, 0xbc, 0x9f, 0x82, 0xa0, 0xbc, - 0xa0, 0x82, 0xa0, 0xbc, 0xa0, 0x82, 0xa0, 0xbc, 0xa1, 0x82, 0xa0, 0xbc, - 0xa1, 0x82, 0xa0, 0xbc, 0xa1, 0x82, 0xa0, 0xbc, 0xa2, 0x82, 0xa4, 0xbc, - 0xa2, 0x7e, 0xa4, 0xbc, 0xa3, 0x7e, 0xa4, 0xbc, 0xa3, 0x7e, 0xa4, 0xbc, - 0xa3, 0x7e, 0xa4, 0xbc, 0xa4, 0x7e, 0xa4, 0xbc, 0xa4, 0x7e, 0xa5, 0xbc, - 0xa5, 0x7e, 0xa5, 0xbc, 0xa5, 0x7e, 0xa5, 0xbc, 0xa5, 0x7e, 0xa6, 0xbc, - 0xa6, 0x7e, 0xa6, 0xbc, 0xa6, 0x7e, 0xa6, 0xbc, 0xa6, 0x7e, 0xa7, 0xbc, - 0xa7, 0x7e, 0xa8, 0xbc, 0xa7, 0x7f, 0xa8, 0xbc, 0xa8, 0x7f, 0xa8, 0xbc, - 0xa8, 0x7f, 0xa8, 0xbc, 0xa8, 0x7f, 0xa9, 0xbc, 0xa9, 0x7f, 0xa9, 0xbc, - 0xa9, 0x7f, 0xa9, 0xbc, 0xaa, 0x7f, 0xa9, 0xbc, 0xaa, 0x7f, 0xa9, 0xbc, - 0xaa, 0x7f, 0xa9, 0xbc, 0xab, 0x7f, 0xaa, 0xbc, 0xab, 0x7e, 0xa9, 0xbc, - 0xab, 0x7f, 0xaa, 0xbc, 0xac, 0x7e, 0xa9, 0xbc, 0xac, 0x7f, 0xaa, 0xbc, - 0xac, 0x7e, 0xa9, 0xbc, 0xad, 0x7f, 0xaa, 0xbc, 0xad, 0x7e, 0xa9, 0xbc, - 0xae, 0x7f, 0xaa, 0xbc, 0xae, 0x7e, 0xa9, 0xbc, 0xae, 0x7f, 0xaa, 0xbc, - 0xaf, 0x7e, 0xa9, 0xbc, 0xaf, 0x7f, 0xaa, 0xbc, 0xaf, 0x7e, 0xa9, 0xbc, - 0xb0, 0x7f, 0xaa, 0xbc, 0xb0, 0x7e, 0xa9, 0xbc, 0xb0, 0x7f, 0xaa, 0xbc, - 0xb1, 0x7e, 0xa9, 0xbc, 0xb1, 0x7f, 0xaa, 0xbc, 0xb2, 0x7e, 0xa9, 0xbc, - 0xb2, 0x7f, 0xaa, 0xbc, 0xb2, 0x7e, 0xaa, 0xbc, 0xb3, 0x7b, 0xaa, 0xbc, - 0xb3, 0x7e, 0xaa, 0xbc, 0xb3, 0x7b, 0xaa, 0xbc, 0xb4, 0x7e, 0xaa, 0xbc, - 0xb4, 0x7b, 0xb8, 0xbc, 0xb4, 0x72, 0xb8, 0xbc, 0xb5, 0x72, 0xb8, 0xbc, - 0xb5, 0x72, 0xb8, 0xbc, 0xb5, 0x72, 0xb8, 0xbc, 0xb6, 0x72, 0xb8, 0xbc, - 0xb6, 0x72, 0xb8, 0xbc, 0xb6, 0x72, 0xb8, 0xbc, 0xb7, 0x72, 0xb8, 0xbc, - 0xb7, 0x72, 0xb8, 0xbc, 0xb7, 0x72, 0xb8, 0xbc, 0xb8, 0x72, 0xbb, 0xbc, - 0xb8, 0x73, 0xbc, 0xbc, 0xb8, 0x73, 0xbb, 0xbc, 0xb9, 0x73, 0xbc, 0xbc, - 0xb9, 0x73, 0xbb, 0xbc, 0xb9, 0x73, 0xbc, 0xbc, 0xba, 0x73, 0xbb, 0xbc, - 0xba, 0x73, 0xbc, 0xbc, 0xba, 0x73, 0xbb, 0xbc, 0xbb, 0x73, 0xbc, 0xbc, - 0xbb, 0x73, 0xbb, 0xbc, 0xbb, 0x73, 0xbc, 0xbc, 0xbc, 0x73, 0xbc, 0xbc, - 0xbc, 0x73, 0xbf, 0xbc, 0xbc, 0x74, 0xbf, 0xbc, 0xbd, 0x74, 0xbf, 0xbc, - 0xbd, 0x74, 0xbf, 0xbc, 0xbd, 0x74, 0xbf, 0xbc, 0xbe, 0x74, 0xbf, 0xbc, - 0xbe, 0x74, 0xbf, 0xbc, 0xbe, 0x74, 0xbf, 0xbc, 0xbf, 0x74, 0xbf, 0xbc, - 0xbf, 0x74, 0xbf, 0xbc, 0xbf, 0x74, 0xc0, 0xbc, 0xc0, 0x74, 0xc2, 0xbc, - 0xc0, 0x75, 0xc3, 0xbc, 0xc0, 0x75, 0xc2, 0xbc, 0xc1, 0x75, 0xc3, 0xbc, - 0xc1, 0x75, 0xc2, 0xbc, 0xc1, 0x75, 0xc3, 0xbc, 0xc1, 0x75, 0xc2, 0xbc, - 0xc2, 0x75, 0xc3, 0xbc, 0xc2, 0x75, 0xc2, 0xbc, 0xc2, 0x75, 0xc3, 0xbc, - 0xc3, 0x75, 0xc3, 0xbc, 0xc3, 0x75, 0xc3, 0xbc, 0xc3, 0x75, 0xc6, 0xbc, - 0xc4, 0x76, 0xc6, 0xbc, 0xc4, 0x76, 0xc6, 0xbc, 0xc4, 0x76, 0xc6, 0xbc, - 0xc5, 0x76, 0xc6, 0xbc, 0xc5, 0x76, 0xc6, 0xbc, 0xc5, 0x76, 0xc6, 0xbc, - 0xc6, 0x76, 0xc6, 0xbc, 0xc6, 0x76, 0xc6, 0xbc, 0xc6, 0x76, 0xc6, 0xbc, - 0xc6, 0x76, 0xc7, 0xbc, 0xc7, 0x76, 0xc9, 0xbc, 0xc7, 0x77, 0xca, 0xbc, - 0xc7, 0x77, 0xc9, 0xbc, 0xc8, 0x77, 0xca, 0xbc, 0xc8, 0x77, 0xc9, 0xbc, - 0xc8, 0x77, 0xca, 0xbc, 0xc9, 0x77, 0xc9, 0xbc, 0xc9, 0x77, 0xca, 0xbc, - 0xc9, 0x77, 0xc9, 0xbc, 0xc9, 0x77, 0xca, 0xbc, 0xca, 0x77, 0xca, 0xbc, - 0xca, 0x77, 0xcd, 0xbc, 0xca, 0x78, 0xcd, 0xbc, 0xcb, 0x78, 0xcd, 0xbc, - 0xcb, 0x78, 0xcd, 0xbc, 0xcb, 0x78, 0xcd, 0xbc, 0xcc, 0x78, 0xcd, 0xbc, - 0xcc, 0x78, 0xcd, 0xbc, 0xcc, 0x78, 0xcd, 0xbc, 0xcc, 0x78, 0xcd, 0xbc, - 0xcd, 0x78, 0xcd, 0xbc, 0xcd, 0x78, 0xcd, 0xbc, 0xcd, 0x78, 0xce, 0xbc, - 0xce, 0x78, 0xce, 0xbc, 0xce, 0x78, 0xce, 0xbc, 0xce, 0x78, 0xce, 0xbc, - 0xce, 0x78, 0xce, 0xbc, 0xcf, 0x78, 0xce, 0xbc, 0xcf, 0x78, 0xce, 0xbc, - 0xcf, 0x78, 0xce, 0xbc, 0xd0, 0x78, 0xce, 0xbc, 0xd0, 0x78, 0xce, 0xbc, - 0xd0, 0x78, 0xce, 0xbc, 0xd0, 0x78, 0xce, 0xbc, 0xd1, 0x78, 0xce, 0xbc, - 0xd1, 0x78, 0xce, 0xbc, 0xd1, 0x78, 0xce, 0xbc, 0xd2, 0x78, 0xce, 0xbc, - 0xd2, 0x78, 0xce, 0xbc, 0xd2, 0x78, 0xce, 0xbc, 0xd2, 0x78, 0xce, 0xbc, - 0xd3, 0x78, 0xce, 0xbc, 0xd3, 0x78, 0xce, 0xbc, 0xd3, 0x78, 0xce, 0xbc, - 0xd4, 0x78, 0xce, 0xbc, 0xd4, 0x78, 0xce, 0xbc, 0xd4, 0x78, 0xce, 0xbc, - 0xd4, 0x78, 0xce, 0xbc, 0xd5, 0x78, 0xce, 0xbc, 0xd5, 0x78, 0xce, 0xbc, - 0xd5, 0x78, 0xce, 0xbc, 0xd6, 0x78, 0xce, 0xbc, 0xd6, 0x78, 0xce, 0xbc, - 0xd6, 0x78, 0xce, 0xbc, 0xd6, 0x78, 0xce, 0xbc, 0xd7, 0x78, 0xce, 0xbc, - 0xd7, 0x78, 0xce, 0xbc, 0xd7, 0x78, 0xce, 0xbc, 0xd7, 0x78, 0xce, 0xbc, - 0xd8, 0x78, 0xce, 0xbc, 0xd8, 0x78, 0xce, 0xbc, 0xd8, 0x78, 0xce, 0xbc, - 0xd9, 0x78, 0xd8, 0xbc, 0xd9, 0x94, 0xd7, 0xbc, 0xd9, 0x94, 0xd8, 0xbc, - 0xd9, 0x94, 0xd7, 0xbc, 0xda, 0x94, 0xd8, 0xbc, 0xda, 0x94, 0xd7, 0xbc, - 0xda, 0x94, 0xd8, 0xbc, 0xda, 0x94, 0xd7, 0xbc, 0xdb, 0x94, 0xd8, 0xbc, - 0xdb, 0x94, 0xdb, 0xbc, 0xdb, 0x95, 0xda, 0xbc, 0xdb, 0x95, 0xdb, 0xbc, - 0xdc, 0x95, 0xda, 0xbc, 0xdc, 0x95, 0xdb, 0xbc, 0xdc, 0x95, 0xda, 0xbc, - 0xdd, 0x95, 0xdb, 0xbc, 0xdd, 0x95, 0xda, 0xbc, 0xdd, 0x95, 0xdb, 0xbc, - 0xdd, 0x95, 0xda, 0xbc, 0xde, 0x95, 0xdb, 0xbc, 0xde, 0x95, 0xde, 0xbc, - 0xde, 0x96, 0xdd, 0xbc, 0xde, 0x96, 0xde, 0xbc, 0xdf, 0x96, 0xea, 0xbc, - 0xdf, 0x83, 0xea, 0xbc, 0xdf, 0x86, 0xea, 0xbc, 0xdf, 0x83, 0xea, 0xbc, - 0xe0, 0x86, 0xea, 0xbc, 0xe0, 0x83, 0xea, 0xbc, 0xe0, 0x86, 0xea, 0xbc, - 0xe1, 0x83, 0xea, 0xbc, 0xe1, 0x86, 0xea, 0xbc, 0xe1, 0x83, 0xea, 0xbc, - 0xe1, 0x80, 0xea, 0xbc, 0xe2, 0x83, 0xea, 0xbc, 0xe2, 0x80, 0xea, 0xbc, - 0xe2, 0x83, 0xea, 0xbc, 0xe2, 0x80, 0xea, 0xbc, 0xe3, 0x83, 0xea, 0xbc, - 0xe3, 0x80, 0xea, 0xbc, 0xe3, 0x83, 0xea, 0xbc, 0xe3, 0x80, 0xea, 0xbc, - 0xe4, 0x83, 0xea, 0xbc, 0xe4, 0x80, 0xea, 0xbc, 0xe4, 0x83, 0xea, 0xbc, - 0xe4, 0x80, 0xea, 0xbc, 0xe5, 0x83, 0xea, 0xbc, 0xe5, 0x80, 0xea, 0xbc, - 0xe5, 0x83, 0xea, 0xbc, 0xe5, 0x80, 0xea, 0xbc, 0xe6, 0x83, 0xea, 0xbc, - 0xe6, 0x80, 0xea, 0xbc, 0xe6, 0x83, 0xea, 0xbc, 0xe6, 0x80, 0xea, 0xbc, - 0xe7, 0x83, 0xea, 0xbc, 0xe7, 0x80, 0xea, 0xbc, 0xe7, 0x83, 0xea, 0xbc, - 0xe7, 0x80, 0xea, 0xbc, 0xe8, 0x83, 0xea, 0xbc, 0xe8, 0x80, 0xea, 0xbc, - 0xe8, 0x83, 0xea, 0xbc, 0xe8, 0x80, 0xeb, 0xbc, 0xe9, 0x80, 0xea, 0xbc, - 0xe9, 0x80, 0xeb, 0xbc, 0xe9, 0x80, 0xea, 0xbc, 0xe9, 0x80, 0xeb, 0xbc, - 0xea, 0x80, 0xea, 0xbc, 0xea, 0x80, 0xeb, 0xbc, 0xea, 0x80, 0xea, 0xbc, - 0xea, 0x80, 0xeb, 0xbc, 0xea, 0x80, 0xeb, 0xbc, 0xea, 0x80, 0xeb, 0xbc, - 0xea, 0x80, 0xeb, 0xba, 0xea, 0x80, 0xec, 0xbc, 0xea, 0x80, 0xec, 0xba, - 0xea, 0x80, 0xec, 0xbc, 0xea, 0x80, 0xec, 0xba, 0xea, 0x80, 0xec, 0xbc, - 0xea, 0x80, 0xed, 0xba, 0xea, 0x80, 0xed, 0xbc, 0xea, 0x80, 0xed, 0xba, - 0xea, 0x80, 0xed, 0xbc, 0xea, 0x80, 0xee, 0xba, 0xea, 0x80, 0xee, 0xbc, - 0xea, 0x80, 0xee, 0xba, 0xea, 0x80, 0xee, 0xbc, 0xea, 0x80, 0xef, 0xba, - 0xea, 0x80, 0xef, 0xbc, 0xea, 0x80, 0xef, 0xba, 0xea, 0x80, 0xef, 0xbc, - 0xea, 0x80, 0xf0, 0xba, 0xea, 0x80, 0xf0, 0xbe, 0xf5, 0x80, 0xf0, 0xbc, - 0xf5, 0x80, 0xf0, 0xbe, 0xf5, 0x80, 0xf1, 0xbc, 0xf5, 0x80, 0xf1, 0xbe, - 0xf5, 0x80, 0xf1, 0xbc, 0xf5, 0x80, 0xf1, 0xbe, 0xf5, 0x80, 0xf2, 0xbc, - 0xf5, 0x80, 0xf2, 0xbc, 0xf5, 0x80, 0xf2, 0xbc, 0xf5, 0x80, 0xf2, 0xbc, - 0xf5, 0x80, 0xf2, 0xbc, 0xf5, 0x80, 0xf3, 0xbc, 0xf5, 0x80, 0xf3, 0xbc, - 0xf5, 0x80, 0xf3, 0xbc, 0xf5, 0x80, 0xf3, 0xbc, 0xf5, 0x80, 0xf4, 0xbc, - 0xf5, 0x80, 0xf4, 0xbc, 0xf5, 0x80, 0xf4, 0xbc, 0xf5, 0x80, 0xf4, 0xbc, - 0xf5, 0x80, 0xf5, 0xbc, 0xf5, 0x80, 0xf5, 0xbc, 0xf5, 0x80, 0xf5, 0xbc, - 0xf5, 0x80, 0xf5, 0xbc, 0xf5, 0x7f, 0xf5, 0xbc, 0xf5, 0x80, 0xf5, 0xbc, - 0xf6, 0x7f, 0xf5, 0xbc, 0xf6, 0x80, 0xf5, 0xbc, 0xf6, 0x7f, 0xf5, 0xbc, - 0xf6, 0x80, 0xf5, 0xbc, 0xf7, 0x7f, 0xf5, 0xbc, 0xf7, 0x80, 0xf9, 0xbc, - 0xf7, 0x80, 0xf9, 0xbc, 0xf7, 0x80, 0xf9, 0xbc, 0xf8, 0x80, 0xf9, 0xbc, - 0xf8, 0x80, 0xf9, 0xbc, 0xf8, 0x80, 0xf9, 0xbc, 0xf8, 0x80, 0xf9, 0xbc, - 0xf8, 0x80, 0xf9, 0xbc, 0xf9, 0x80, 0xf9, 0xbb, 0xf9, 0x80, 0xf9, 0xbc, - 0xf9, 0x80, 0xf9, 0xbb, 0xf9, 0x80, 0xfa, 0xbc, 0xf9, 0x80, 0xfa, 0xbb, - 0xf9, 0x80, 0xfa, 0xbc, 0xf9, 0x80, 0xfa, 0xbb, 0xf9, 0x80, 0xfa, 0xbc, - 0xf9, 0x80, 0xfb, 0xbb, 0xf9, 0x80, 0xfb, 0xba, 0xf9, 0x80, 0xfb, 0xbb, - 0xf9, 0x80, 0xfb, 0xba, 0xf9, 0x80, 0xfc, 0xbb, 0xf9, 0x80, 0xfc, 0xba, - 0xf9, 0x80, 0xfc, 0xbb, 0xf9, 0x80, 0xfc, 0xba, 0xf9, 0x80, 0xfc, 0xbb, - 0xf9, 0x80, 0xfd, 0xba, 0xf9, 0x80, 0xfd, 0xbb, 0xf9, 0x80, 0xfd, 0xba, - 0xf9, 0x80, 0xfd, 0xbb, 0xf9, 0x80, 0xfe, 0xba, 0xf9, 0x80, 0xfe, 0xbb, - 0xf9, 0x80, 0xfe, 0xba, 0xf9, 0x80, 0xfe, 0xbb, 0xf9, 0x80, 0xfe, 0xba, - 0xf9, 0x80, 0xff, 0xbb, 0xf9, 0x80, 0xff, 0xba, 0xf9, 0x80, 0x03, 0xc5, - 0x90, 0x80, 0x0a, 0xc3, 0x90, 0x80, 0x0f, 0xc5, 0x90, 0x80, 0x14, 0xc3, - 0x90, 0x80, 0x17, 0xc5, 0x90, 0x80, 0x1b, 0xc3, 0x90, 0x80, 0x1e, 0xc5, - 0x90, 0x80, 0x20, 0xc3, 0x90, 0x80, 0x23, 0xc5, 0x90, 0x80, 0x25, 0xc3, - 0x90, 0x80, 0x27, 0xc5, 0x90, 0x80, 0x29, 0xc3, 0x90, 0x80, 0x2b, 0xc1, - 0x91, 0x80, 0x2d, 0xc3, 0x90, 0x80, 0x2f, 0xc1, 0x91, 0x80, 0x31, 0xc3, - 0x90, 0x80, 0x32, 0xc1, 0x91, 0x80, 0x34, 0xc3, 0x90, 0x80, 0x35, 0xc1, - 0x91, 0x80, 0x37, 0xc3, 0x90, 0x80, 0x38, 0xc1, 0x91, 0x80, 0x3a, 0xc3, - 0x90, 0x80, 0x3b, 0xc1, 0x91, 0x80, 0x3c, 0xc3, 0x90, 0x80, 0x3e, 0xc1, - 0x91, 0x80, 0x3f, 0xc3, 0x90, 0x80, 0x40, 0xc1, 0x91, 0x80, 0x42, 0xc3, - 0x90, 0x80, 0x43, 0xc1, 0x91, 0x80, 0x44, 0xc3, 0x90, 0x80, 0x45, 0xc1, - 0x91, 0x80, 0x46, 0xc3, 0x90, 0x80, 0x47, 0xc1, 0x91, 0x80, 0x48, 0xc3, - 0x90, 0x80, 0x49, 0xc1, 0x91, 0x80, 0x4a, 0xc3, 0x90, 0x80, 0x4b, 0xc1, - 0x91, 0x80, 0x4c, 0xc3, 0x90, 0x80, 0x4d, 0xc1, 0x91, 0x80, 0x4e, 0xc3, - 0x90, 0x80, 0x4f, 0xc1, 0x91, 0x80, 0x50, 0xbf, 0x91, 0x80, 0x51, 0xc1, - 0x91, 0x80, 0x52, 0xbf, 0x91, 0x80, 0x53, 0xc1, 0x91, 0x80, 0x54, 0xbf, - 0x91, 0x80, 0x55, 0xc1, 0x91, 0x80, 0x56, 0xbf, 0x91, 0x80, 0x57, 0xc1, - 0x91, 0x80, 0x58, 0xbf, 0x91, 0x80, 0x58, 0xc1, 0x91, 0x80, 0x59, 0xbf, - 0x91, 0x80, 0x5a, 0xc1, 0x91, 0x80, 0x5b, 0xbf, 0x91, 0x80, 0x5c, 0xc1, - 0x91, 0x80, 0x5d, 0xbf, 0x91, 0x80, 0x5d, 0xc1, 0x91, 0x80, 0x5e, 0xbf, - 0x91, 0x80, 0x5f, 0xc1, 0x91, 0x80, 0x60, 0xbf, 0x91, 0x80, 0x60, 0xc1, - 0x91, 0x80, 0x61, 0xbf, 0x91, 0x80, 0x62, 0xc1, 0x91, 0x80, 0x63, 0xbf, - 0x91, 0x80, 0x63, 0xc1, 0x91, 0x80, 0x64, 0xbf, 0x91, 0x80, 0x65, 0xc1, - 0x91, 0x80, 0x66, 0xbf, 0x91, 0x80, 0x66, 0xc1, 0x91, 0x80, 0x67, 0xbf, - 0x91, 0x80, 0x68, 0xc1, 0x91, 0x80, 0x68, 0xbf, 0x91, 0x80, 0x69, 0xc1, - 0x91, 0x80, 0x6a, 0xbf, 0x91, 0x80, 0x6a, 0xc1, 0x91, 0x80, 0x6b, 0xbf, - 0x91, 0x80, 0x6c, 0xc1, 0x91, 0x80, 0x6c, 0xbf, 0x91, 0x80, 0x6d, 0xc1, - 0x91, 0x80, 0x6e, 0xbf, 0x91, 0x80, 0x6e, 0xc1, 0x91, 0x80, 0x6f, 0xbf, - 0x91, 0x80, 0x70, 0xbd, 0x92, 0x80, 0x70, 0xbf, 0x91, 0x80, 0x71, 0xbd, - 0x92, 0x80, 0x72, 0xbf, 0x91, 0x80, 0x72, 0xbd, 0x92, 0x80, 0x73, 0xbf, - 0x91, 0x80, 0x73, 0xbd, 0x92, 0x80, 0x74, 0xbf, 0x91, 0x80, 0x75, 0xbd, - 0x92, 0x80, 0x75, 0xbf, 0x91, 0x80, 0x76, 0xbd, 0x92, 0x80, 0x76, 0xbf, - 0x91, 0x80, 0x77, 0xbd, 0x92, 0x80, 0x78, 0xbf, 0x91, 0x80, 0x78, 0xbd, - 0x92, 0x80, 0x79, 0xbf, 0x91, 0x80, 0x79, 0xbd, 0x92, 0x80, 0x7a, 0xbf, - 0x91, 0x80, 0x7a, 0xbd, 0x92, 0x80, 0x7b, 0xbf, 0x91, 0x80, 0x7c, 0xbd, - 0x92, 0x80, 0x7c, 0xbf, 0x91, 0x80, 0x7d, 0xbd, 0x92, 0x80, 0x7d, 0xbf, - 0x91, 0x80, 0x7e, 0xbd, 0x92, 0x80, 0x7e, 0xbf, 0x91, 0x80, 0x7f, 0xbd, - 0x92, 0x80, 0x7f, 0xbf, 0x91, 0x80, 0x80, 0xbd, 0x92, 0x80, 0x81, 0xbf, - 0x91, 0x80, 0x81, 0xbd, 0x92, 0x80, 0x82, 0xbf, 0x91, 0x80, 0x82, 0xbd, - 0x92, 0x80, 0x83, 0xbf, 0x91, 0x80, 0x83, 0xbd, 0x92, 0x80, 0x84, 0xbf, - 0x91, 0x80, 0x84, 0xbd, 0x92, 0x80, 0x85, 0xbf, 0x91, 0x80, 0x85, 0xbd, - 0x92, 0x80, 0x86, 0xbf, 0x91, 0x80, 0x86, 0xbd, 0x92, 0x80, 0x87, 0xbf, - 0x91, 0x80, 0x87, 0xbd, 0x92, 0x80, 0x88, 0xbf, 0x91, 0x80, 0x88, 0xbd, - 0x92, 0x80, 0x89, 0xbf, 0x91, 0x80, 0x89, 0xbd, 0x92, 0x80, 0x8a, 0xbf, - 0x91, 0x80, 0x8a, 0xbd, 0x92, 0x80, 0x8b, 0xbc, 0x92, 0x80, 0x8b, 0xbd, - 0x92, 0x80, 0x8c, 0xbc, 0x92, 0x80, 0x8c, 0xbd, 0x92, 0x80, 0x8d, 0xbc, - 0x92, 0x80, 0x8d, 0xbd, 0x92, 0x80, 0x8e, 0xbc, 0x92, 0x80, 0x8e, 0xbd, - 0x92, 0x80, 0x8e, 0xbc, 0x92, 0x80, 0x8f, 0xbd, 0x92, 0x80, 0x8f, 0xbc, - 0x92, 0x80, 0x90, 0xbd, 0x92, 0x80, 0x90, 0xbc, 0x92, 0x80, 0x91, 0xbd, - 0x92, 0x80, 0x91, 0xbc, 0x92, 0x80, 0x92, 0xbd, 0x92, 0x80, 0x91, 0xbc, - 0x92, 0x80, 0x92, 0xbc, 0x93, 0x80, 0x91, 0xbc, 0x93, 0x80, 0x92, 0xbc, - 0x94, 0x80, 0x96, 0xbc, 0x94, 0x80, 0x95, 0xbc, 0x94, 0x81, 0x96, 0xbc, - 0x95, 0x80, 0x95, 0xbc, 0x95, 0x81, 0x96, 0xbb, 0x96, 0x80, 0x96, 0xbb, - 0x96, 0x80, 0x97, 0xbb, 0x97, 0x80, 0x97, 0xbb, 0x97, 0x80, 0x98, 0xbb, - 0x98, 0x80, 0x98, 0xbb, 0x98, 0x80, 0x98, 0xbb, 0x98, 0x80, 0x99, 0xbb, - 0x99, 0x80, 0x99, 0xbb, 0x99, 0x80, 0x9a, 0xbb, 0x9a, 0x80, 0x9a, 0xbc, - 0x9a, 0x81, 0x9a, 0xbc, 0x9a, 0x81, 0x9b, 0xbc, 0x9b, 0x81, 0x9b, 0xbc, - 0x9b, 0x81, 0x9c, 0xbc, 0x9c, 0x81, 0x9c, 0xbc, 0x9c, 0x81, 0x9d, 0xbc, - 0x9d, 0x81, 0x9d, 0xbc, 0x9d, 0x81, 0x9d, 0xbc, 0x9d, 0x81, 0x9e, 0xbc, - 0x9e, 0x81, 0x9e, 0xbc, 0x9e, 0x81, 0x9e, 0xbc, 0x9f, 0x81, 0x9e, 0xbc, - 0x9f, 0x81, 0x9f, 0xbc, 0x9f, 0x82, 0xa0, 0xbc, 0xa0, 0x82, 0xa0, 0xbc, - 0xa0, 0x82, 0xa1, 0xbc, 0xa1, 0x82, 0xa1, 0xbc, 0xa1, 0x82, 0xa1, 0xbc, - 0xa1, 0x82, 0xa2, 0xbc, 0xa2, 0x82, 0xa2, 0xbc, 0xa2, 0x82, 0xa3, 0xbc, - 0xa3, 0x82, 0xa2, 0xbc, 0xa3, 0x82, 0xa3, 0xbc, 0xa3, 0x82, 0xa2, 0xbc, - 0xa4, 0x82, 0xa3, 0xbc, 0xa4, 0x82, 0xa6, 0xbc, 0xa5, 0x7e, 0xa6, 0xbc, - 0xa5, 0x7e, 0xa6, 0xbc, 0xa5, 0x7e, 0xa6, 0xbc, 0xa6, 0x7e, 0xa6, 0xbc, - 0xa6, 0x7e, 0xa6, 0xbc, 0xa6, 0x7e, 0xa7, 0xbc, 0xa7, 0x7e, 0xa7, 0xbc, - 0xa7, 0x7e, 0xa8, 0xbc, 0xa8, 0x7e, 0xa8, 0xbc, 0xa8, 0x7e, 0xa8, 0xbc, - 0xa8, 0x7e, 0xa9, 0xbc, 0xa9, 0x7e, 0xa9, 0xbc, 0xa9, 0x7e, 0xa9, 0xbc, - 0xaa, 0x7e, 0xa9, 0xbc, 0xaa, 0x7e, 0xa9, 0xbc, 0xaa, 0x7e, 0xa9, 0xbc, - 0xab, 0x7e, 0xaa, 0xbc, 0xab, 0x7d, 0xa9, 0xbc, 0xab, 0x7e, 0xaa, 0xbc, - 0xac, 0x7d, 0xa9, 0xbc, 0xac, 0x7e, 0xaa, 0xbc, 0xac, 0x7d, 0xa9, 0xbc, - 0xad, 0x7e, 0xaa, 0xbc, 0xad, 0x7d, 0xa9, 0xbc, 0xae, 0x7e, 0xaa, 0xbc, - 0xae, 0x7d, 0xa9, 0xbc, 0xae, 0x7e, 0xaa, 0xbc, 0xaf, 0x7d, 0xa9, 0xbc, - 0xaf, 0x7e, 0xaa, 0xbc, 0xaf, 0x7d, 0xa9, 0xbc, 0xb0, 0x7e, 0xaa, 0xbc, - 0xb0, 0x7d, 0xa9, 0xbc, 0xb0, 0x7e, 0xaa, 0xbc, 0xb1, 0x7d, 0xa9, 0xbc, - 0xb1, 0x7e, 0xaa, 0xbc, 0xb2, 0x7d, 0xa9, 0xbc, 0xb2, 0x7e, 0xaa, 0xbc, - 0xb2, 0x7d, 0xa9, 0xbc, 0xb3, 0x7e, 0xaa, 0xbc, 0xb3, 0x7d, 0xa9, 0xbc, - 0xb3, 0x7e, 0xaa, 0xbc, 0xb4, 0x7d, 0xa9, 0xbc, 0xb4, 0x7e, 0xb6, 0xbc, - 0xb4, 0x71, 0xb6, 0xbc, 0xb5, 0x71, 0xb6, 0xbc, 0xb5, 0x71, 0xb6, 0xbc, - 0xb5, 0x71, 0xb6, 0xbc, 0xb6, 0x71, 0xb6, 0xbc, 0xb6, 0x71, 0xba, 0xbc, - 0xb6, 0x72, 0xba, 0xbc, 0xb7, 0x72, 0xba, 0xbc, 0xb7, 0x72, 0xba, 0xbc, - 0xb7, 0x72, 0xba, 0xbc, 0xb8, 0x72, 0xba, 0xbc, 0xb8, 0x72, 0xba, 0xbc, - 0xb8, 0x72, 0xba, 0xbc, 0xb9, 0x72, 0xba, 0xbc, 0xb9, 0x72, 0xba, 0xbc, - 0xb9, 0x72, 0xba, 0xbc, 0xba, 0x72, 0xbd, 0xbc, 0xba, 0x73, 0xbe, 0xbc, - 0xba, 0x73, 0xbd, 0xbc, 0xbb, 0x73, 0xbe, 0xbc, 0xbb, 0x73, 0xbd, 0xbc, - 0xbb, 0x73, 0xbe, 0xbc, 0xbc, 0x73, 0xbd, 0xbc, 0xbc, 0x73, 0xbe, 0xbc, - 0xbc, 0x73, 0xbd, 0xbc, 0xbd, 0x73, 0xbe, 0xbc, 0xbd, 0x73, 0xbd, 0xbc, - 0xbd, 0x73, 0xbe, 0xbc, 0xbe, 0x73, 0xbe, 0xbc, 0xbe, 0x73, 0xc1, 0xbc, - 0xbe, 0x74, 0xc1, 0xbc, 0xbf, 0x74, 0xc1, 0xbc, 0xbf, 0x74, 0xc1, 0xbc, - 0xbf, 0x74, 0xc1, 0xbc, 0xc0, 0x74, 0xc1, 0xbc, 0xc0, 0x74, 0xc1, 0xbc, - 0xc0, 0x74, 0xc1, 0xbc, 0xc1, 0x74, 0xc1, 0xbc, 0xc1, 0x74, 0xc1, 0xbc, - 0xc1, 0x74, 0xc1, 0xbc, 0xc1, 0x74, 0xc4, 0xbc, 0xc2, 0x75, 0xc5, 0xbc, - 0xc2, 0x75, 0xc4, 0xbc, 0xc2, 0x75, 0xc5, 0xbc, 0xc3, 0x75, 0xc4, 0xbc, - 0xc3, 0x75, 0xc5, 0xbc, 0xc3, 0x75, 0xc4, 0xbc, 0xc4, 0x75, 0xc5, 0xbc, - 0xc4, 0x75, 0xc4, 0xbc, 0xc4, 0x75, 0xc5, 0xbc, 0xc5, 0x75, 0xc5, 0xbc, - 0xc5, 0x75, 0xc8, 0xbc, 0xc5, 0x76, 0xc8, 0xbc, 0xc6, 0x76, 0xc8, 0xbc, - 0xc6, 0x76, 0xc8, 0xbc, 0xc6, 0x76, 0xc8, 0xbc, 0xc6, 0x76, 0xc8, 0xbc, - 0xc7, 0x76, 0xc8, 0xbc, 0xc7, 0x76, 0xc8, 0xbc, 0xc7, 0x76, 0xc8, 0xbc, - 0xc8, 0x76, 0xc8, 0xbc, 0xc8, 0x76, 0xc8, 0xbc, 0xc8, 0x76, 0xcb, 0xbc, - 0xc9, 0x77, 0xcb, 0xbc, 0xc9, 0x77, 0xcb, 0xbc, 0xc9, 0x77, 0xcb, 0xbc, - 0xc9, 0x77, 0xcb, 0xbc, 0xca, 0x77, 0xcb, 0xbc, 0xca, 0x77, 0xcb, 0xbc, - 0xca, 0x77, 0xcb, 0xbc, 0xcb, 0x77, 0xcb, 0xbc, 0xcb, 0x77, 0xcb, 0xbc, - 0xcb, 0x77, 0xcc, 0xbc, 0xcc, 0x77, 0xce, 0xbc, 0xcc, 0x78, 0xce, 0xbc, - 0xcc, 0x78, 0xce, 0xbc, 0xcc, 0x78, 0xce, 0xbc, 0xcd, 0x78, 0xce, 0xbc, - 0xcd, 0x78, 0xce, 0xbc, 0xcd, 0x78, 0xce, 0xbc, 0xce, 0x78, 0xce, 0xbc, - 0xce, 0x78, 0xce, 0xbc, 0xce, 0x78, 0xce, 0xbc, 0xce, 0x78, 0xce, 0xbc, - 0xcf, 0x78, 0xce, 0xbc, 0xcf, 0x78, 0xce, 0xbc, 0xcf, 0x78, 0xce, 0xbc, - 0xd0, 0x78, 0xce, 0xbc, 0xd0, 0x78, 0xce, 0xbc, 0xd0, 0x78, 0xce, 0xbc, - 0xd0, 0x78, 0xce, 0xbc, 0xd1, 0x78, 0xce, 0xbc, 0xd1, 0x78, 0xce, 0xbc, - 0xd1, 0x78, 0xce, 0xbc, 0xd2, 0x78, 0xce, 0xbc, 0xd2, 0x78, 0xce, 0xbc, - 0xd2, 0x78, 0xce, 0xbc, 0xd2, 0x78, 0xce, 0xbc, 0xd3, 0x78, 0xce, 0xbc, - 0xd3, 0x78, 0xce, 0xbc, 0xd3, 0x78, 0xce, 0xbc, 0xd4, 0x78, 0xce, 0xbc, - 0xd4, 0x78, 0xce, 0xbc, 0xd4, 0x78, 0xce, 0xbc, 0xd4, 0x78, 0xce, 0xbc, - 0xd5, 0x78, 0xce, 0xbc, 0xd5, 0x78, 0xce, 0xbc, 0xd5, 0x78, 0xce, 0xbc, - 0xd6, 0x78, 0xce, 0xbc, 0xd6, 0x78, 0xce, 0xbc, 0xd6, 0x78, 0xce, 0xbc, - 0xd6, 0x78, 0xce, 0xbc, 0xd7, 0x78, 0xce, 0xbc, 0xd7, 0x78, 0xce, 0xbc, - 0xd7, 0x78, 0xce, 0xbc, 0xd7, 0x78, 0xce, 0xbc, 0xd8, 0x78, 0xce, 0xbc, - 0xd8, 0x78, 0xd6, 0xbc, 0xd8, 0x93, 0xd6, 0xbc, 0xd9, 0x93, 0xd6, 0xbc, - 0xd9, 0x93, 0xd6, 0xbc, 0xd9, 0x93, 0xd6, 0xbc, 0xd9, 0x93, 0xd9, 0xbc, - 0xda, 0x94, 0xd9, 0xbc, 0xda, 0x94, 0xd9, 0xbc, 0xda, 0x94, 0xd9, 0xbc, - 0xda, 0x94, 0xd9, 0xbc, 0xdb, 0x94, 0xd9, 0xbc, 0xdb, 0x94, 0xd9, 0xbc, - 0xdb, 0x94, 0xd9, 0xbc, 0xdb, 0x94, 0xd9, 0xbc, 0xdc, 0x94, 0xd9, 0xbc, - 0xdc, 0x94, 0xd9, 0xbc, 0xdc, 0x94, 0xdc, 0xbc, 0xdd, 0x95, 0xdc, 0xbc, - 0xdd, 0x95, 0xdc, 0xbc, 0xdd, 0x95, 0xdc, 0xbc, 0xdd, 0x95, 0xdc, 0xbc, - 0xde, 0x95, 0xdc, 0xbc, 0xde, 0x95, 0xdc, 0xbc, 0xde, 0x95, 0xdc, 0xbc, - 0xde, 0x95, 0xdc, 0xbc, 0xdf, 0x95, 0xdc, 0xbc, 0xdf, 0x95, 0xea, 0xbc, - 0xdf, 0x86, 0xea, 0xbc, 0xdf, 0x82, 0xea, 0xbc, 0xe0, 0x86, 0xea, 0xbc, - 0xe0, 0x82, 0xea, 0xbc, 0xe0, 0x86, 0xea, 0xbc, 0xe1, 0x82, 0xea, 0xbc, - 0xe1, 0x86, 0xea, 0xbc, 0xe1, 0x82, 0xea, 0xbc, 0xe1, 0x80, 0xea, 0xbc, - 0xe2, 0x82, 0xea, 0xbc, 0xe2, 0x80, 0xea, 0xbc, 0xe2, 0x82, 0xea, 0xbc, - 0xe2, 0x80, 0xea, 0xbc, 0xe3, 0x82, 0xea, 0xbc, 0xe3, 0x80, 0xea, 0xbc, - 0xe3, 0x82, 0xea, 0xbc, 0xe3, 0x80, 0xea, 0xbc, 0xe4, 0x82, 0xea, 0xbc, - 0xe4, 0x80, 0xea, 0xbc, 0xe4, 0x82, 0xea, 0xbc, 0xe4, 0x80, 0xea, 0xbc, - 0xe5, 0x82, 0xea, 0xbc, 0xe5, 0x80, 0xea, 0xbc, 0xe5, 0x82, 0xea, 0xbc, - 0xe5, 0x80, 0xea, 0xbc, 0xe6, 0x82, 0xea, 0xbc, 0xe6, 0x80, 0xea, 0xbc, - 0xe6, 0x82, 0xea, 0xbc, 0xe6, 0x80, 0xea, 0xbc, 0xe7, 0x82, 0xea, 0xbc, - 0xe7, 0x80, 0xea, 0xbc, 0xe7, 0x82, 0xea, 0xbc, 0xe7, 0x80, 0xea, 0xbc, - 0xe8, 0x82, 0xea, 0xbc, 0xe8, 0x80, 0xea, 0xbc, 0xe8, 0x82, 0xea, 0xbc, - 0xe8, 0x80, 0xea, 0xbc, 0xe9, 0x82, 0xea, 0xbc, 0xe9, 0x80, 0xea, 0xbc, - 0xe9, 0x82, 0xea, 0xbc, 0xe9, 0x80, 0xeb, 0xbc, 0xea, 0x80, 0xea, 0xbc, - 0xea, 0x80, 0xeb, 0xbc, 0xea, 0x80, 0xea, 0xbc, 0xea, 0x80, 0xeb, 0xbc, - 0xea, 0x80, 0xeb, 0xbc, 0xea, 0x80, 0xeb, 0xbc, 0xea, 0x80, 0xeb, 0xbc, - 0xea, 0x80, 0xec, 0xbc, 0xea, 0x80, 0xec, 0xbc, 0xea, 0x80, 0xec, 0xbc, - 0xea, 0x80, 0xec, 0xba, 0xea, 0x80, 0xec, 0xbc, 0xea, 0x80, 0xed, 0xba, - 0xea, 0x80, 0xed, 0xbc, 0xea, 0x80, 0xed, 0xba, 0xea, 0x80, 0xed, 0xbc, - 0xea, 0x80, 0xee, 0xba, 0xea, 0x80, 0xee, 0xbc, 0xea, 0x80, 0xee, 0xba, - 0xea, 0x80, 0xee, 0xbc, 0xea, 0x80, 0xef, 0xba, 0xea, 0x80, 0xef, 0xbc, - 0xea, 0x80, 0xef, 0xba, 0xea, 0x80, 0xef, 0xbc, 0xea, 0x80, 0xf0, 0xba, - 0xea, 0x80, 0xf0, 0xbe, 0xf5, 0x80, 0xf0, 0xbc, 0xf5, 0x80, 0xf0, 0xbe, - 0xf5, 0x80, 0xf1, 0xbc, 0xf5, 0x80, 0xf1, 0xbe, 0xf5, 0x80, 0xf1, 0xbc, - 0xf5, 0x80, 0xf1, 0xbe, 0xf5, 0x80, 0xf2, 0xbc, 0xf5, 0x80, 0xf2, 0xbe, - 0xf5, 0x80, 0xf2, 0xbc, 0xf5, 0x80, 0xf2, 0xbe, 0xf5, 0x80, 0xf2, 0xbc, - 0xf5, 0x80, 0xf3, 0xbe, 0xf5, 0x80, 0xf3, 0xbc, 0xf5, 0x80, 0xf3, 0xbe, - 0xf5, 0x80, 0xf3, 0xbc, 0xf5, 0x80, 0xf4, 0xbc, 0xf5, 0x80, 0xf4, 0xbc, - 0xf5, 0x80, 0xf4, 0xbc, 0xf5, 0x80, 0xf4, 0xbc, 0xf5, 0x80, 0xf5, 0xbc, - 0xf5, 0x80, 0xf5, 0xbc, 0xf5, 0x80, 0xf5, 0xbc, 0xf5, 0x80, 0xf5, 0xbc, - 0xf5, 0x7f, 0xf5, 0xbc, 0xf5, 0x80, 0xf5, 0xbc, 0xf6, 0x7f, 0xf5, 0xbc, - 0xf6, 0x80, 0xf5, 0xbc, 0xf6, 0x7f, 0xf5, 0xbc, 0xf6, 0x80, 0xf5, 0xbc, - 0xf7, 0x7f, 0xf5, 0xbc, 0xf7, 0x80, 0xf9, 0xbc, 0xf7, 0x80, 0xf9, 0xbc, - 0xf7, 0x80, 0xf9, 0xbc, 0xf8, 0x80, 0xf9, 0xbc, 0xf8, 0x80, 0xf9, 0xbc, - 0xf8, 0x80, 0xf9, 0xbc, 0xf8, 0x80, 0xf9, 0xbc, 0xf8, 0x80, 0xf9, 0xbc, - 0xf9, 0x80, 0xf9, 0xbb, 0xf9, 0x80, 0xf9, 0xbc, 0xf9, 0x80, 0xf9, 0xbb, - 0xf9, 0x80, 0xfa, 0xbc, 0xf9, 0x80, 0xfa, 0xbb, 0xf9, 0x80, 0xfa, 0xbc, - 0xf9, 0x80, 0xfa, 0xbb, 0xf9, 0x80, 0xfa, 0xbc, 0xf9, 0x80, 0xfb, 0xbb, - 0xf9, 0x80, 0xfb, 0xbc, 0xf9, 0x80, 0xfb, 0xbb, 0xf9, 0x80, 0xfb, 0xbc, - 0xf9, 0x80, 0xfc, 0xbb, 0xf9, 0x80, 0xfc, 0xbc, 0xf9, 0x80, 0xfc, 0xbb, - 0xf9, 0x80, 0xfc, 0xbc, 0xf9, 0x80, 0xfc, 0xbb, 0xf9, 0x80, 0xfd, 0xb9, - 0xf9, 0x80, 0xfd, 0xbb, 0xf9, 0x80, 0xfd, 0xb9, 0xf9, 0x80, 0xfd, 0xbb, - 0xf9, 0x80, 0xfe, 0xb9, 0xf9, 0x80, 0xfe, 0xbb, 0xf9, 0x80, 0xfe, 0xb9, - 0xf9, 0x80, 0xfe, 0xbb, 0xf9, 0x80, 0xfe, 0xb9, 0xf9, 0x80, 0xff, 0xbb, - 0xf9, 0x80, 0xff, 0xb9, 0xf9, 0x80, 0x03, 0xc1, 0x91, 0x81, 0x0a, 0xc3, - 0x90, 0x81, 0x0f, 0xc1, 0x91, 0x81, 0x14, 0xc3, 0x90, 0x81, 0x17, 0xc1, - 0x91, 0x81, 0x1b, 0xc3, 0x90, 0x81, 0x1e, 0xc1, 0x91, 0x81, 0x20, 0xc3, - 0x90, 0x81, 0x23, 0xc1, 0x91, 0x81, 0x25, 0xc3, 0x90, 0x81, 0x27, 0xc1, - 0x91, 0x81, 0x29, 0xc3, 0x90, 0x81, 0x2b, 0xc1, 0x91, 0x81, 0x2d, 0xc3, - 0x90, 0x81, 0x2f, 0xc1, 0x91, 0x81, 0x31, 0xc3, 0x90, 0x81, 0x32, 0xc1, - 0x91, 0x81, 0x34, 0xc3, 0x90, 0x81, 0x35, 0xc1, 0x91, 0x81, 0x37, 0xc3, - 0x90, 0x81, 0x38, 0xc1, 0x91, 0x81, 0x3a, 0xc3, 0x90, 0x81, 0x3b, 0xc1, - 0x91, 0x81, 0x3c, 0xc3, 0x90, 0x81, 0x3e, 0xc1, 0x91, 0x81, 0x3f, 0xc3, - 0x90, 0x81, 0x40, 0xc1, 0x91, 0x81, 0x42, 0xc3, 0x90, 0x81, 0x43, 0xc1, - 0x91, 0x81, 0x44, 0xc3, 0x90, 0x81, 0x45, 0xc1, 0x91, 0x81, 0x46, 0xc3, - 0x90, 0x81, 0x47, 0xc1, 0x91, 0x81, 0x48, 0xc3, 0x90, 0x81, 0x49, 0xc1, - 0x91, 0x81, 0x4a, 0xc3, 0x90, 0x81, 0x4b, 0xc1, 0x91, 0x81, 0x4c, 0xc3, - 0x90, 0x81, 0x4d, 0xc1, 0x91, 0x81, 0x4e, 0xc3, 0x90, 0x81, 0x4f, 0xc1, - 0x91, 0x81, 0x50, 0xc3, 0x90, 0x81, 0x51, 0xc1, 0x91, 0x81, 0x52, 0xc3, - 0x90, 0x81, 0x53, 0xc1, 0x91, 0x81, 0x54, 0xc3, 0x90, 0x81, 0x55, 0xc1, - 0x91, 0x81, 0x56, 0xc3, 0x90, 0x81, 0x57, 0xc1, 0x91, 0x81, 0x58, 0xc3, - 0x90, 0x81, 0x58, 0xc1, 0x91, 0x81, 0x59, 0xc3, 0x90, 0x81, 0x5a, 0xc1, - 0x91, 0x81, 0x5b, 0xc3, 0x90, 0x81, 0x5c, 0xc1, 0x91, 0x81, 0x5d, 0xc3, - 0x90, 0x81, 0x5d, 0xc1, 0x91, 0x81, 0x5e, 0xc3, 0x90, 0x81, 0x5f, 0xc1, - 0x91, 0x81, 0x60, 0xc3, 0x90, 0x81, 0x60, 0xc1, 0x91, 0x81, 0x61, 0xbf, - 0x91, 0x81, 0x62, 0xc1, 0x91, 0x81, 0x63, 0xbf, 0x91, 0x81, 0x63, 0xc1, - 0x91, 0x81, 0x64, 0xbf, 0x91, 0x81, 0x65, 0xc1, 0x91, 0x81, 0x66, 0xbf, - 0x91, 0x81, 0x66, 0xc1, 0x91, 0x81, 0x67, 0xbf, 0x91, 0x81, 0x68, 0xc1, - 0x91, 0x81, 0x68, 0xbf, 0x91, 0x81, 0x69, 0xc1, 0x91, 0x81, 0x6a, 0xbf, - 0x91, 0x81, 0x6a, 0xc1, 0x91, 0x81, 0x6b, 0xbf, 0x91, 0x81, 0x6c, 0xc1, - 0x91, 0x81, 0x6c, 0xbf, 0x91, 0x81, 0x6d, 0xc1, 0x91, 0x81, 0x6e, 0xbf, - 0x91, 0x81, 0x6e, 0xc1, 0x91, 0x81, 0x6f, 0xbf, 0x91, 0x81, 0x70, 0xc1, - 0x91, 0x81, 0x70, 0xbf, 0x91, 0x81, 0x71, 0xc1, 0x91, 0x81, 0x72, 0xbf, - 0x91, 0x81, 0x72, 0xc1, 0x91, 0x81, 0x73, 0xbf, 0x91, 0x81, 0x73, 0xc1, - 0x91, 0x81, 0x74, 0xbf, 0x91, 0x81, 0x75, 0xc1, 0x91, 0x81, 0x75, 0xbf, - 0x91, 0x81, 0x76, 0xc1, 0x91, 0x81, 0x76, 0xbf, 0x91, 0x81, 0x77, 0xc1, - 0x91, 0x81, 0x78, 0xbf, 0x91, 0x81, 0x78, 0xc1, 0x91, 0x81, 0x79, 0xbf, - 0x91, 0x81, 0x79, 0xbd, 0x92, 0x81, 0x7a, 0xbf, 0x91, 0x81, 0x7a, 0xbd, - 0x92, 0x81, 0x7b, 0xbf, 0x91, 0x81, 0x7c, 0xbd, 0x92, 0x81, 0x7c, 0xbf, - 0x91, 0x81, 0x7d, 0xbd, 0x92, 0x81, 0x7d, 0xbf, 0x91, 0x81, 0x7e, 0xbd, - 0x92, 0x81, 0x7e, 0xbf, 0x91, 0x81, 0x7f, 0xbd, 0x92, 0x81, 0x7f, 0xbf, - 0x91, 0x81, 0x80, 0xbd, 0x92, 0x81, 0x81, 0xbf, 0x91, 0x81, 0x81, 0xbd, - 0x92, 0x81, 0x82, 0xbf, 0x91, 0x81, 0x82, 0xbd, 0x92, 0x81, 0x83, 0xbf, - 0x91, 0x81, 0x83, 0xbd, 0x92, 0x81, 0x84, 0xbf, 0x91, 0x81, 0x84, 0xbd, - 0x92, 0x81, 0x85, 0xbf, 0x91, 0x81, 0x85, 0xbd, 0x92, 0x81, 0x86, 0xbf, - 0x91, 0x81, 0x86, 0xbd, 0x92, 0x81, 0x87, 0xbf, 0x91, 0x81, 0x87, 0xbd, - 0x92, 0x81, 0x88, 0xbf, 0x91, 0x81, 0x88, 0xbd, 0x92, 0x81, 0x89, 0xbf, - 0x91, 0x81, 0x89, 0xbd, 0x92, 0x81, 0x8a, 0xbf, 0x91, 0x81, 0x8a, 0xbd, - 0x92, 0x81, 0x8b, 0xbc, 0x92, 0x81, 0x8b, 0xbd, 0x92, 0x81, 0x8c, 0xbc, - 0x92, 0x81, 0x8c, 0xbd, 0x92, 0x81, 0x8d, 0xbc, 0x92, 0x81, 0x8d, 0xbd, - 0x92, 0x81, 0x8e, 0xbc, 0x92, 0x81, 0x8e, 0xbd, 0x92, 0x81, 0x8e, 0xbc, - 0x92, 0x81, 0x8f, 0xbd, 0x92, 0x81, 0x8f, 0xbc, 0x92, 0x81, 0x90, 0xbd, - 0x92, 0x81, 0x90, 0xbc, 0x92, 0x81, 0x91, 0xbd, 0x92, 0x81, 0x91, 0xbc, - 0x92, 0x81, 0x92, 0xbd, 0x92, 0x81, 0x91, 0xbc, 0x92, 0x81, 0x92, 0xbc, - 0x93, 0x81, 0x91, 0xbc, 0x93, 0x81, 0x92, 0xbc, 0x94, 0x81, 0x96, 0xbc, - 0x94, 0x81, 0x95, 0xbc, 0x94, 0x82, 0x96, 0xbc, 0x95, 0x81, 0x96, 0xbc, - 0x95, 0x81, 0x96, 0xbc, 0x95, 0x81, 0x96, 0xbc, 0x95, 0x81, 0x97, 0xbc, - 0x98, 0x81, 0x97, 0xbc, 0x98, 0x81, 0x98, 0xbc, 0x98, 0x81, 0x98, 0xbc, - 0x98, 0x81, 0x98, 0xbc, 0x98, 0x81, 0x99, 0xbc, 0x99, 0x81, 0x99, 0xbc, - 0x99, 0x81, 0x9a, 0xbc, 0x9a, 0x81, 0x9a, 0xbc, 0x9a, 0x81, 0x9a, 0xbc, - 0x9a, 0x81, 0x9b, 0xbc, 0x9b, 0x81, 0x9b, 0xbc, 0x9b, 0x81, 0x9c, 0xbc, - 0x9c, 0x81, 0x9c, 0xbc, 0x9c, 0x82, 0x9d, 0xbc, 0x9d, 0x82, 0x9d, 0xbc, - 0x9d, 0x82, 0x9d, 0xbc, 0x9d, 0x82, 0x9e, 0xbc, 0x9e, 0x82, 0x9e, 0xbc, - 0x9e, 0x82, 0x9f, 0xbc, 0x9f, 0x82, 0x9f, 0xbc, 0x9f, 0x82, 0x9f, 0xbc, - 0x9f, 0x82, 0xa0, 0xbc, 0xa0, 0x82, 0xa0, 0xbc, 0xa0, 0x82, 0xa0, 0xbc, - 0xa1, 0x82, 0xa0, 0xbc, 0xa1, 0x82, 0xa1, 0xbc, 0xa1, 0x83, 0xa2, 0xbc, - 0xa2, 0x83, 0xa2, 0xbc, 0xa2, 0x83, 0xa3, 0xbc, 0xa3, 0x83, 0xa3, 0xbc, - 0xa3, 0x83, 0xa3, 0xbc, 0xa3, 0x83, 0xa4, 0xbc, 0xa4, 0x83, 0xa4, 0xbc, - 0xa4, 0x83, 0xa5, 0xbc, 0xa5, 0x83, 0xa4, 0xbc, 0xa5, 0x83, 0xa5, 0xbc, - 0xa5, 0x83, 0xa4, 0xbc, 0xa6, 0x83, 0xa5, 0xbc, 0xa6, 0x83, 0xa8, 0xbc, - 0xa6, 0x7f, 0xa8, 0xbc, 0xa7, 0x7f, 0xa8, 0xbc, 0xa7, 0x7f, 0xa8, 0xbc, - 0xa8, 0x7f, 0xa8, 0xbc, 0xa8, 0x7f, 0xa8, 0xbc, 0xa8, 0x7f, 0xa9, 0xbc, - 0xa9, 0x7f, 0xa9, 0xbc, 0xa9, 0x7f, 0xa9, 0xbc, 0xaa, 0x7f, 0xa9, 0xbc, - 0xaa, 0x7f, 0xa9, 0xbc, 0xaa, 0x7f, 0xa9, 0xbc, 0xab, 0x7f, 0xaa, 0xbc, - 0xab, 0x7e, 0xa9, 0xbc, 0xab, 0x7f, 0xaa, 0xbc, 0xac, 0x7e, 0xa9, 0xbc, - 0xac, 0x7f, 0xaa, 0xbc, 0xac, 0x7e, 0xa9, 0xbc, 0xad, 0x7f, 0xaa, 0xbc, - 0xad, 0x7e, 0xa9, 0xbc, 0xae, 0x7f, 0xaa, 0xbc, 0xae, 0x7e, 0xa9, 0xbc, - 0xae, 0x7f, 0xaa, 0xbc, 0xaf, 0x7e, 0xa9, 0xbc, 0xaf, 0x7f, 0xaa, 0xbc, - 0xaf, 0x7e, 0xa9, 0xbc, 0xb0, 0x7f, 0xaa, 0xbc, 0xb0, 0x7e, 0xa9, 0xbc, - 0xb0, 0x7f, 0xaa, 0xbc, 0xb1, 0x7e, 0xa9, 0xbc, 0xb1, 0x7f, 0xaa, 0xbc, - 0xb2, 0x7e, 0xa9, 0xbc, 0xb2, 0x7f, 0xaa, 0xbc, 0xb2, 0x7e, 0xa9, 0xbc, - 0xb3, 0x7f, 0xaa, 0xbc, 0xb3, 0x7e, 0xa9, 0xbc, 0xb3, 0x7f, 0xaa, 0xbc, - 0xb4, 0x7e, 0xa9, 0xbc, 0xb4, 0x7f, 0xaa, 0xbc, 0xb4, 0x7e, 0xb8, 0xbc, - 0xb5, 0x72, 0xb8, 0xbc, 0xb5, 0x72, 0xb8, 0xbc, 0xb5, 0x72, 0xb8, 0xbc, - 0xb6, 0x72, 0xb8, 0xbc, 0xb6, 0x72, 0xb8, 0xbc, 0xb6, 0x72, 0xb8, 0xbc, - 0xb7, 0x72, 0xb8, 0xbc, 0xb7, 0x72, 0xb8, 0xbc, 0xb7, 0x72, 0xb8, 0xbc, - 0xb8, 0x72, 0xbb, 0xbc, 0xb8, 0x73, 0xbc, 0xbc, 0xb8, 0x73, 0xbb, 0xbc, - 0xb9, 0x73, 0xbc, 0xbc, 0xb9, 0x73, 0xbb, 0xbc, 0xb9, 0x73, 0xbc, 0xbc, - 0xba, 0x73, 0xbb, 0xbc, 0xba, 0x73, 0xbc, 0xbc, 0xba, 0x73, 0xbb, 0xbc, - 0xbb, 0x73, 0xbc, 0xbc, 0xbb, 0x73, 0xbb, 0xbc, 0xbb, 0x73, 0xbf, 0xbc, - 0xbc, 0x74, 0xbf, 0xbc, 0xbc, 0x74, 0xbf, 0xbc, 0xbc, 0x74, 0xbf, 0xbc, - 0xbd, 0x74, 0xbf, 0xbc, 0xbd, 0x74, 0xbf, 0xbc, 0xbd, 0x74, 0xbf, 0xbc, - 0xbe, 0x74, 0xbf, 0xbc, 0xbe, 0x74, 0xbf, 0xbc, 0xbe, 0x74, 0xbf, 0xbc, - 0xbf, 0x74, 0xbf, 0xbc, 0xbf, 0x74, 0xbf, 0xbc, 0xbf, 0x74, 0xc0, 0xbc, - 0xc0, 0x74, 0xc2, 0xbc, 0xc0, 0x75, 0xc3, 0xbc, 0xc0, 0x75, 0xc2, 0xbc, - 0xc1, 0x75, 0xc3, 0xbc, 0xc1, 0x75, 0xc2, 0xbc, 0xc1, 0x75, 0xc3, 0xbc, - 0xc1, 0x75, 0xc2, 0xbc, 0xc2, 0x75, 0xc3, 0xbc, 0xc2, 0x75, 0xc2, 0xbc, - 0xc2, 0x75, 0xc3, 0xbc, 0xc3, 0x75, 0xc3, 0xbc, 0xc3, 0x75, 0xc3, 0xbc, - 0xc3, 0x75, 0xc6, 0xbc, 0xc4, 0x76, 0xc6, 0xbc, 0xc4, 0x76, 0xc6, 0xbc, - 0xc4, 0x76, 0xc6, 0xbc, 0xc5, 0x76, 0xc6, 0xbc, 0xc5, 0x76, 0xc6, 0xbc, - 0xc5, 0x76, 0xc6, 0xbc, 0xc6, 0x76, 0xc6, 0xbc, 0xc6, 0x76, 0xc6, 0xbc, - 0xc6, 0x76, 0xc6, 0xbc, 0xc6, 0x76, 0xc7, 0xbc, 0xc7, 0x76, 0xc9, 0xbc, - 0xc7, 0x77, 0xca, 0xbc, 0xc7, 0x77, 0xc9, 0xbc, 0xc8, 0x77, 0xca, 0xbc, - 0xc8, 0x77, 0xc9, 0xbc, 0xc8, 0x77, 0xca, 0xbc, 0xc9, 0x77, 0xc9, 0xbc, - 0xc9, 0x77, 0xca, 0xbc, 0xc9, 0x77, 0xc9, 0xbc, 0xc9, 0x77, 0xca, 0xbc, - 0xca, 0x77, 0xca, 0xbc, 0xca, 0x77, 0xcd, 0xbc, 0xca, 0x78, 0xcd, 0xbc, - 0xcb, 0x78, 0xcd, 0xbc, 0xcb, 0x78, 0xcd, 0xbc, 0xcb, 0x78, 0xcd, 0xbc, - 0xcc, 0x78, 0xcd, 0xbc, 0xcc, 0x78, 0xcd, 0xbc, 0xcc, 0x78, 0xcd, 0xbc, - 0xcc, 0x78, 0xcd, 0xbc, 0xcd, 0x78, 0xcd, 0xbc, 0xcd, 0x78, 0xcd, 0xbc, - 0xcd, 0x78, 0xce, 0xbc, 0xce, 0x78, 0xce, 0xbc, 0xce, 0x78, 0xce, 0xbc, - 0xce, 0x78, 0xce, 0xbc, 0xce, 0x78, 0xce, 0xbc, 0xcf, 0x78, 0xce, 0xbc, - 0xcf, 0x78, 0xce, 0xbc, 0xcf, 0x78, 0xce, 0xbc, 0xd0, 0x78, 0xce, 0xbc, - 0xd0, 0x78, 0xce, 0xbc, 0xd0, 0x78, 0xce, 0xbc, 0xd0, 0x78, 0xce, 0xbc, - 0xd1, 0x78, 0xce, 0xbc, 0xd1, 0x78, 0xce, 0xbc, 0xd1, 0x78, 0xce, 0xbc, - 0xd2, 0x78, 0xce, 0xbc, 0xd2, 0x78, 0xce, 0xbc, 0xd2, 0x78, 0xce, 0xbc, - 0xd2, 0x78, 0xce, 0xbc, 0xd3, 0x78, 0xce, 0xbc, 0xd3, 0x78, 0xce, 0xbc, - 0xd3, 0x78, 0xce, 0xbc, 0xd4, 0x78, 0xce, 0xbc, 0xd4, 0x78, 0xce, 0xbc, - 0xd4, 0x78, 0xce, 0xbc, 0xd4, 0x78, 0xce, 0xbc, 0xd5, 0x78, 0xce, 0xbc, - 0xd5, 0x78, 0xce, 0xbc, 0xd5, 0x78, 0xce, 0xbc, 0xd6, 0x78, 0xce, 0xbc, - 0xd6, 0x78, 0xce, 0xbc, 0xd6, 0x78, 0xce, 0xbc, 0xd6, 0x78, 0xce, 0xbc, - 0xd7, 0x78, 0xce, 0xbc, 0xd7, 0x78, 0xce, 0xbc, 0xd7, 0x78, 0xce, 0xbc, - 0xd7, 0x78, 0xd4, 0xbc, 0xd8, 0x93, 0xd5, 0xbc, 0xd8, 0x93, 0xd8, 0xbc, - 0xd8, 0x94, 0xd7, 0xbc, 0xd9, 0x94, 0xd8, 0xbc, 0xd9, 0x94, 0xd7, 0xbc, - 0xd9, 0x94, 0xd8, 0xbc, 0xd9, 0x94, 0xd7, 0xbc, 0xda, 0x94, 0xd8, 0xbc, - 0xda, 0x94, 0xd7, 0xbc, 0xda, 0x94, 0xd8, 0xbc, 0xda, 0x94, 0xd7, 0xbc, - 0xdb, 0x94, 0xd8, 0xbc, 0xdb, 0x94, 0xdb, 0xbc, 0xdb, 0x95, 0xda, 0xbc, - 0xdb, 0x95, 0xdb, 0xbc, 0xdc, 0x95, 0xda, 0xbc, 0xdc, 0x95, 0xdb, 0xbc, - 0xdc, 0x95, 0xda, 0xbc, 0xdd, 0x95, 0xdb, 0xbc, 0xdd, 0x95, 0xda, 0xbc, - 0xdd, 0x95, 0xdb, 0xbc, 0xdd, 0x95, 0xda, 0xbc, 0xde, 0x95, 0xdb, 0xbc, - 0xde, 0x95, 0xde, 0xbc, 0xde, 0x96, 0xdd, 0xbc, 0xde, 0x96, 0xde, 0xbc, - 0xdf, 0x96, 0xdd, 0xbc, 0xdf, 0x96, 0xde, 0xbc, 0xdf, 0x96, 0xea, 0xbc, - 0xdf, 0x83, 0xea, 0xbc, 0xe0, 0x86, 0xea, 0xbc, 0xe0, 0x83, 0xea, 0xbc, - 0xe0, 0x86, 0xea, 0xbc, 0xe1, 0x83, 0xea, 0xbc, 0xe1, 0x86, 0xea, 0xbc, - 0xe1, 0x83, 0xea, 0xbc, 0xe1, 0x86, 0xea, 0xbc, 0xe2, 0x83, 0xea, 0xbc, - 0xe2, 0x86, 0xea, 0xbc, 0xe2, 0x83, 0xea, 0xbc, 0xe2, 0x86, 0xea, 0xbc, - 0xe3, 0x83, 0xea, 0xbc, 0xe3, 0x86, 0xea, 0xbc, 0xe3, 0x83, 0xea, 0xbc, - 0xe3, 0x86, 0xea, 0xbc, 0xe4, 0x83, 0xea, 0xbc, 0xe4, 0x86, 0xea, 0xbc, - 0xe4, 0x83, 0xea, 0xbc, 0xe4, 0x81, 0xea, 0xbc, 0xe5, 0x83, 0xea, 0xbc, - 0xe5, 0x81, 0xea, 0xbc, 0xe5, 0x83, 0xea, 0xbc, 0xe5, 0x81, 0xea, 0xbc, - 0xe6, 0x83, 0xea, 0xbc, 0xe6, 0x81, 0xea, 0xbc, 0xe6, 0x83, 0xea, 0xbc, - 0xe6, 0x81, 0xea, 0xbc, 0xe7, 0x83, 0xea, 0xbc, 0xe7, 0x81, 0xea, 0xbc, - 0xe7, 0x83, 0xea, 0xbc, 0xe7, 0x81, 0xea, 0xbc, 0xe8, 0x83, 0xea, 0xbc, - 0xe8, 0x81, 0xea, 0xbc, 0xe8, 0x83, 0xea, 0xbc, 0xe8, 0x81, 0xea, 0xbc, - 0xe9, 0x83, 0xea, 0xbc, 0xe9, 0x81, 0xea, 0xbc, 0xe9, 0x83, 0xea, 0xbc, - 0xe9, 0x81, 0xeb, 0xbc, 0xea, 0x81, 0xea, 0xbc, 0xea, 0x81, 0xeb, 0xbc, - 0xea, 0x81, 0xea, 0xbc, 0xea, 0x81, 0xeb, 0xbc, 0xea, 0x81, 0xeb, 0xbc, - 0xea, 0x81, 0xeb, 0xbc, 0xea, 0x81, 0xeb, 0xbc, 0xea, 0x81, 0xec, 0xbc, - 0xea, 0x81, 0xec, 0xbc, 0xea, 0x81, 0xec, 0xbc, 0xea, 0x81, 0xec, 0xba, - 0xea, 0x81, 0xec, 0xbc, 0xea, 0x81, 0xed, 0xba, 0xea, 0x81, 0xed, 0xbc, - 0xea, 0x81, 0xed, 0xba, 0xea, 0x81, 0xed, 0xbc, 0xea, 0x81, 0xee, 0xba, - 0xea, 0x81, 0xee, 0xbc, 0xea, 0x81, 0xee, 0xba, 0xea, 0x81, 0xee, 0xbc, - 0xea, 0x81, 0xef, 0xba, 0xea, 0x81, 0xef, 0xbc, 0xea, 0x81, 0xef, 0xba, - 0xea, 0x81, 0xef, 0xbc, 0xea, 0x81, 0xf0, 0xba, 0xea, 0x81, 0xf0, 0xbe, - 0xf5, 0x81, 0xf0, 0xbc, 0xf5, 0x81, 0xf0, 0xbe, 0xf5, 0x81, 0xf1, 0xbc, - 0xf5, 0x81, 0xf1, 0xbe, 0xf5, 0x81, 0xf1, 0xbc, 0xf5, 0x81, 0xf1, 0xbe, - 0xf5, 0x81, 0xf2, 0xbc, 0xf5, 0x81, 0xf2, 0xbe, 0xf5, 0x81, 0xf2, 0xbc, - 0xf5, 0x81, 0xf2, 0xbe, 0xf5, 0x81, 0xf2, 0xbc, 0xf5, 0x81, 0xf3, 0xbe, - 0xf5, 0x81, 0xf3, 0xbc, 0xf5, 0x81, 0xf3, 0xbe, 0xf5, 0x81, 0xf3, 0xbc, - 0xf5, 0x81, 0xf4, 0xbc, 0xf5, 0x81, 0xf4, 0xbc, 0xf5, 0x81, 0xf4, 0xbc, - 0xf5, 0x81, 0xf4, 0xbc, 0xf5, 0x81, 0xf5, 0xbc, 0xf5, 0x81, 0xf5, 0xbc, - 0xf5, 0x81, 0xf5, 0xbc, 0xf5, 0x81, 0xf5, 0xbc, 0xf5, 0x81, 0xf5, 0xbc, - 0xf5, 0x81, 0xf5, 0xbc, 0xf6, 0x81, 0xf5, 0xbc, 0xf6, 0x81, 0xf5, 0xbc, - 0xf6, 0x7f, 0xf5, 0xbc, 0xf6, 0x81, 0xf5, 0xbc, 0xf7, 0x7f, 0xf5, 0xbc, - 0xf7, 0x81, 0xf9, 0xbc, 0xf7, 0x81, 0xf9, 0xbc, 0xf7, 0x83, 0xf9, 0xbc, - 0xf8, 0x81, 0xf9, 0xbc, 0xf8, 0x83, 0xf9, 0xbc, 0xf8, 0x81, 0xf9, 0xbc, - 0xf8, 0x81, 0xf9, 0xbc, 0xf8, 0x81, 0xf9, 0xbc, 0xf9, 0x81, 0xf9, 0xbc, - 0xf8, 0x81, 0xf9, 0xbc, 0xf9, 0x81, 0xf9, 0xbc, 0xf8, 0x81, 0xfa, 0xbc, - 0xf9, 0x81, 0xfa, 0xbb, 0xf9, 0x81, 0xfa, 0xbc, 0xf9, 0x81, 0xfa, 0xbb, - 0xf9, 0x81, 0xfa, 0xbc, 0xf9, 0x81, 0xfb, 0xbb, 0xf9, 0x81, 0xfb, 0xbc, - 0xf9, 0x81, 0xfb, 0xbb, 0xf9, 0x81, 0xfb, 0xbc, 0xf9, 0x81, 0xfc, 0xbb, - 0xf9, 0x81, 0xfc, 0xbc, 0xf9, 0x81, 0xfc, 0xbb, 0xf9, 0x81, 0xfc, 0xbc, - 0xf9, 0x81, 0xfc, 0xbb, 0xf9, 0x81, 0xfd, 0xba, 0xf9, 0x81, 0xfd, 0xbb, - 0xf9, 0x81, 0xfd, 0xba, 0xf9, 0x81, 0xfd, 0xbb, 0xf9, 0x81, 0xfe, 0xba, - 0xf9, 0x81, 0xfe, 0xbb, 0xf9, 0x81, 0xfe, 0xba, 0xf9, 0x81, 0xfe, 0xbb, - 0xf9, 0x81, 0xfe, 0xba, 0xf9, 0x81, 0xff, 0xbb, 0xf9, 0x81, 0xff, 0xba, - 0xf9, 0x81, 0x03, 0xc5, 0x90, 0x81, 0x0a, 0xc3, 0x90, 0x81, 0x0f, 0xc5, - 0x90, 0x81, 0x14, 0xc3, 0x90, 0x81, 0x17, 0xc5, 0x90, 0x81, 0x1b, 0xc3, - 0x90, 0x81, 0x1e, 0xc5, 0x90, 0x81, 0x20, 0xc3, 0x90, 0x81, 0x23, 0xc5, - 0x90, 0x81, 0x25, 0xc3, 0x90, 0x81, 0x27, 0xc5, 0x90, 0x81, 0x29, 0xc3, - 0x90, 0x81, 0x2b, 0xc5, 0x90, 0x81, 0x2d, 0xc3, 0x90, 0x81, 0x2f, 0xc5, - 0x90, 0x81, 0x31, 0xc3, 0x90, 0x81, 0x32, 0xc5, 0x90, 0x81, 0x34, 0xc3, - 0x90, 0x81, 0x35, 0xc5, 0x90, 0x81, 0x37, 0xc3, 0x90, 0x81, 0x38, 0xc5, - 0x90, 0x81, 0x3a, 0xc3, 0x90, 0x81, 0x3b, 0xc5, 0x90, 0x81, 0x3c, 0xc3, - 0x90, 0x81, 0x3e, 0xc1, 0x91, 0x81, 0x3f, 0xc3, 0x90, 0x81, 0x40, 0xc1, - 0x91, 0x81, 0x42, 0xc3, 0x90, 0x81, 0x43, 0xc1, 0x91, 0x81, 0x44, 0xc3, - 0x90, 0x81, 0x45, 0xc1, 0x91, 0x81, 0x46, 0xc3, 0x90, 0x81, 0x47, 0xc1, - 0x91, 0x81, 0x48, 0xc3, 0x90, 0x81, 0x49, 0xc1, 0x91, 0x81, 0x4a, 0xc3, - 0x90, 0x81, 0x4b, 0xc1, 0x91, 0x81, 0x4c, 0xc3, 0x90, 0x81, 0x4d, 0xc1, - 0x91, 0x81, 0x4e, 0xc3, 0x90, 0x81, 0x4f, 0xc1, 0x91, 0x81, 0x50, 0xc3, - 0x90, 0x81, 0x51, 0xc1, 0x91, 0x81, 0x52, 0xc3, 0x90, 0x81, 0x53, 0xc1, - 0x91, 0x81, 0x54, 0xc3, 0x90, 0x81, 0x55, 0xc1, 0x91, 0x81, 0x56, 0xc3, - 0x90, 0x81, 0x57, 0xc1, 0x91, 0x81, 0x58, 0xc3, 0x90, 0x81, 0x58, 0xc1, - 0x91, 0x81, 0x59, 0xc3, 0x90, 0x81, 0x5a, 0xc1, 0x91, 0x81, 0x5b, 0xbf, - 0x91, 0x81, 0x5c, 0xc1, 0x91, 0x81, 0x5d, 0xbf, 0x91, 0x81, 0x5d, 0xc1, - 0x91, 0x81, 0x5e, 0xbf, 0x91, 0x81, 0x5f, 0xc1, 0x91, 0x81, 0x60, 0xbf, - 0x91, 0x81, 0x60, 0xc1, 0x91, 0x81, 0x61, 0xbf, 0x91, 0x81, 0x62, 0xc1, - 0x91, 0x81, 0x63, 0xbf, 0x91, 0x81, 0x63, 0xc1, 0x91, 0x81, 0x64, 0xbf, - 0x91, 0x81, 0x65, 0xc1, 0x91, 0x81, 0x66, 0xbf, 0x91, 0x81, 0x66, 0xc1, - 0x91, 0x81, 0x67, 0xbf, 0x91, 0x81, 0x68, 0xc1, 0x91, 0x81, 0x68, 0xbf, - 0x91, 0x81, 0x69, 0xc1, 0x91, 0x81, 0x6a, 0xbf, 0x91, 0x81, 0x6a, 0xc1, - 0x91, 0x81, 0x6b, 0xbf, 0x91, 0x81, 0x6c, 0xc1, 0x91, 0x81, 0x6c, 0xbf, - 0x91, 0x81, 0x6d, 0xc1, 0x91, 0x81, 0x6e, 0xbf, 0x91, 0x81, 0x6e, 0xc1, - 0x91, 0x81, 0x6f, 0xbf, 0x91, 0x81, 0x70, 0xc1, 0x91, 0x81, 0x70, 0xbf, - 0x91, 0x81, 0x71, 0xc1, 0x91, 0x81, 0x72, 0xbf, 0x91, 0x81, 0x72, 0xc1, - 0x91, 0x81, 0x73, 0xbf, 0x91, 0x81, 0x73, 0xc1, 0x91, 0x81, 0x74, 0xbf, - 0x91, 0x81, 0x75, 0xc1, 0x91, 0x81, 0x75, 0xbf, 0x91, 0x81, 0x76, 0xc1, - 0x91, 0x81, 0x76, 0xbf, 0x91, 0x81, 0x77, 0xc1, 0x91, 0x81, 0x78, 0xbf, - 0x91, 0x81, 0x78, 0xc1, 0x91, 0x81, 0x79, 0xbf, 0x91, 0x81, 0x79, 0xbd, - 0x92, 0x81, 0x7a, 0xbf, 0x91, 0x81, 0x7a, 0xbd, 0x92, 0x81, 0x7b, 0xbf, - 0x91, 0x81, 0x7c, 0xbd, 0x92, 0x81, 0x7c, 0xbf, 0x91, 0x81, 0x7d, 0xbd, - 0x92, 0x81, 0x7d, 0xbf, 0x91, 0x81, 0x7e, 0xbd, 0x92, 0x81, 0x7e, 0xbf, - 0x91, 0x81, 0x7f, 0xbd, 0x92, 0x81, 0x7f, 0xbf, 0x91, 0x81, 0x80, 0xbd, - 0x92, 0x81, 0x81, 0xbf, 0x91, 0x81, 0x81, 0xbd, 0x92, 0x81, 0x82, 0xbf, - 0x91, 0x81, 0x82, 0xbd, 0x92, 0x81, 0x83, 0xbf, 0x91, 0x81, 0x83, 0xbd, - 0x92, 0x81, 0x84, 0xbf, 0x91, 0x81, 0x84, 0xbd, 0x92, 0x81, 0x85, 0xbf, - 0x91, 0x81, 0x85, 0xbd, 0x92, 0x81, 0x86, 0xbf, 0x91, 0x81, 0x86, 0xbd, - 0x92, 0x81, 0x87, 0xbf, 0x91, 0x81, 0x87, 0xbd, 0x92, 0x81, 0x88, 0xbf, - 0x91, 0x81, 0x88, 0xbd, 0x92, 0x81, 0x89, 0xbf, 0x91, 0x81, 0x89, 0xbd, - 0x92, 0x81, 0x8a, 0xbf, 0x91, 0x81, 0x8a, 0xbd, 0x92, 0x81, 0x8b, 0xbf, - 0x91, 0x81, 0x8b, 0xbd, 0x92, 0x81, 0x8c, 0xbf, 0x91, 0x81, 0x8c, 0xbd, - 0x92, 0x81, 0x8d, 0xbf, 0x91, 0x81, 0x8d, 0xbd, 0x92, 0x81, 0x8e, 0xbf, - 0x91, 0x81, 0x8e, 0xbd, 0x92, 0x81, 0x8e, 0xbd, 0x92, 0x81, 0x8f, 0xbd, - 0x92, 0x81, 0x8f, 0xbd, 0x92, 0x81, 0x90, 0xbd, 0x92, 0x81, 0x90, 0xbd, - 0x92, 0x81, 0x91, 0xbd, 0x92, 0x81, 0x91, 0xbd, 0x92, 0x81, 0x92, 0xbd, - 0x92, 0x80, 0x91, 0xbd, 0x92, 0x81, 0x92, 0xbd, 0x93, 0x80, 0x91, 0xbd, - 0x93, 0x81, 0x95, 0xbd, 0x94, 0x81, 0x96, 0xbd, 0x94, 0x81, 0x95, 0xbd, - 0x94, 0x81, 0x96, 0xbd, 0x95, 0x81, 0x95, 0xbc, 0x95, 0x81, 0x96, 0xbd, - 0x95, 0x81, 0x96, 0xbc, 0x95, 0x81, 0x97, 0xbb, 0x97, 0x81, 0x97, 0xbb, - 0x97, 0x81, 0x98, 0xbb, 0x98, 0x81, 0x98, 0xbb, 0x98, 0x81, 0x98, 0xbb, - 0x98, 0x81, 0x99, 0xbb, 0x99, 0x81, 0x99, 0xbc, 0x9a, 0x81, 0x9a, 0xbc, - 0x9a, 0x81, 0x9a, 0xbc, 0x9a, 0x81, 0x9a, 0xbc, 0x9a, 0x81, 0x9b, 0xbc, - 0x9b, 0x81, 0x9b, 0xbc, 0x9b, 0x81, 0x9c, 0xbc, 0x9c, 0x81, 0x9c, 0xbc, - 0x9c, 0x81, 0x9d, 0xbc, 0x9d, 0x81, 0x9d, 0xbc, 0x9d, 0x81, 0x9d, 0xbc, - 0x9d, 0x81, 0x9e, 0xbc, 0x9e, 0x81, 0x9e, 0xbc, 0x9e, 0x81, 0x9f, 0xbd, - 0x9f, 0x82, 0x9f, 0xbd, 0x9f, 0x82, 0x9f, 0xbd, 0x9f, 0x82, 0xa0, 0xbd, - 0xa0, 0x82, 0xa0, 0xbd, 0xa0, 0x82, 0xa1, 0xbd, 0xa1, 0x82, 0xa1, 0xbd, - 0xa1, 0x82, 0xa1, 0xbd, 0xa1, 0x82, 0xa2, 0xbd, 0xa2, 0x82, 0xa2, 0xbd, - 0xa2, 0x82, 0xa3, 0xbd, 0xa3, 0x82, 0xa2, 0xbd, 0xa3, 0x82, 0xa3, 0xbd, - 0xa3, 0x82, 0xa4, 0xbd, 0xa4, 0x83, 0xa4, 0xbd, 0xa4, 0x83, 0xa5, 0xbd, - 0xa5, 0x83, 0xa5, 0xbd, 0xa5, 0x83, 0xa5, 0xbd, 0xa5, 0x83, 0xa6, 0xbd, - 0xa6, 0x83, 0xa6, 0xbd, 0xa6, 0x83, 0xa6, 0xbd, 0xa6, 0x83, 0xa6, 0xbd, - 0xa7, 0x83, 0xa6, 0xbd, 0xa7, 0x83, 0xa6, 0xbd, 0xa8, 0x83, 0xa8, 0xbd, - 0xa8, 0x7e, 0xa8, 0xbd, 0xa8, 0x7e, 0xa9, 0xbd, 0xa9, 0x7e, 0xa9, 0xbd, - 0xa9, 0x7e, 0xa9, 0xbd, 0xaa, 0x7e, 0xa9, 0xbd, 0xaa, 0x7e, 0xa9, 0xbd, - 0xaa, 0x7e, 0xa9, 0xbd, 0xab, 0x7e, 0xa9, 0xbd, 0xab, 0x7e, 0xa9, 0xbd, - 0xab, 0x7e, 0xa9, 0xbd, 0xac, 0x7e, 0xa9, 0xbd, 0xac, 0x7e, 0xaa, 0xbd, - 0xac, 0x7d, 0xa9, 0xbd, 0xad, 0x7e, 0xaa, 0xbd, 0xad, 0x7d, 0xa9, 0xbd, - 0xae, 0x7e, 0xaa, 0xbd, 0xae, 0x7d, 0xa9, 0xbd, 0xae, 0x7e, 0xaa, 0xbd, - 0xaf, 0x7d, 0xa9, 0xbd, 0xaf, 0x7e, 0xaa, 0xbd, 0xaf, 0x7d, 0xa9, 0xbd, - 0xb0, 0x7e, 0xaa, 0xbd, 0xb0, 0x7d, 0xa9, 0xbd, 0xb0, 0x7e, 0xaa, 0xbd, - 0xb1, 0x7d, 0xa9, 0xbd, 0xb1, 0x7e, 0xaa, 0xbd, 0xb2, 0x7d, 0xa9, 0xbd, - 0xb2, 0x7e, 0xaa, 0xbd, 0xb2, 0x7d, 0xa9, 0xbd, 0xb3, 0x7e, 0xaa, 0xbd, - 0xb3, 0x7d, 0xa9, 0xbd, 0xb3, 0x7e, 0xaa, 0xbd, 0xb4, 0x7d, 0xa9, 0xbd, - 0xb4, 0x7e, 0xaa, 0xbd, 0xb4, 0x7d, 0xb6, 0xbd, 0xb5, 0x71, 0xb6, 0xbd, - 0xb5, 0x71, 0xb6, 0xbd, 0xb5, 0x71, 0xb6, 0xbd, 0xb6, 0x71, 0xb6, 0xbd, - 0xb6, 0x71, 0xba, 0xbd, 0xb6, 0x72, 0xba, 0xbd, 0xb7, 0x72, 0xba, 0xbd, - 0xb7, 0x72, 0xba, 0xbd, 0xb7, 0x72, 0xba, 0xbd, 0xb8, 0x72, 0xba, 0xbd, - 0xb8, 0x72, 0xba, 0xbd, 0xb8, 0x72, 0xba, 0xbd, 0xb9, 0x72, 0xba, 0xbd, - 0xb9, 0x72, 0xba, 0xbd, 0xb9, 0x72, 0xba, 0xbd, 0xba, 0x72, 0xbd, 0xbd, - 0xba, 0x73, 0xbe, 0xbd, 0xba, 0x73, 0xbd, 0xbd, 0xbb, 0x73, 0xbe, 0xbd, - 0xbb, 0x73, 0xbd, 0xbd, 0xbb, 0x73, 0xbe, 0xbd, 0xbc, 0x73, 0xbd, 0xbd, - 0xbc, 0x73, 0xbe, 0xbd, 0xbc, 0x73, 0xbd, 0xbd, 0xbd, 0x73, 0xbe, 0xbd, - 0xbd, 0x73, 0xbd, 0xbd, 0xbd, 0x73, 0xc1, 0xbd, 0xbe, 0x74, 0xc1, 0xbd, - 0xbe, 0x74, 0xc1, 0xbd, 0xbe, 0x74, 0xc1, 0xbd, 0xbf, 0x74, 0xc1, 0xbd, - 0xbf, 0x74, 0xc1, 0xbd, 0xbf, 0x74, 0xc1, 0xbd, 0xc0, 0x74, 0xc1, 0xbd, - 0xc0, 0x74, 0xc1, 0xbd, 0xc0, 0x74, 0xc1, 0xbd, 0xc1, 0x74, 0xc1, 0xbd, - 0xc1, 0x74, 0xc1, 0xbd, 0xc1, 0x74, 0xc1, 0xbd, 0xc1, 0x74, 0xc4, 0xbd, - 0xc2, 0x75, 0xc5, 0xbd, 0xc2, 0x75, 0xc4, 0xbd, 0xc2, 0x75, 0xc5, 0xbd, - 0xc3, 0x75, 0xc4, 0xbd, 0xc3, 0x75, 0xc5, 0xbd, 0xc3, 0x75, 0xc4, 0xbd, - 0xc4, 0x75, 0xc5, 0xbd, 0xc4, 0x75, 0xc4, 0xbd, 0xc4, 0x75, 0xc5, 0xbd, - 0xc5, 0x75, 0xc5, 0xbd, 0xc5, 0x75, 0xc8, 0xbd, 0xc5, 0x76, 0xc8, 0xbd, - 0xc6, 0x76, 0xc8, 0xbd, 0xc6, 0x76, 0xc8, 0xbd, 0xc6, 0x76, 0xc8, 0xbd, - 0xc6, 0x76, 0xc8, 0xbd, 0xc7, 0x76, 0xc8, 0xbd, 0xc7, 0x76, 0xc8, 0xbd, - 0xc7, 0x76, 0xc8, 0xbd, 0xc8, 0x76, 0xc8, 0xbd, 0xc8, 0x76, 0xc8, 0xbd, - 0xc8, 0x76, 0xcb, 0xbd, 0xc9, 0x77, 0xcb, 0xbd, 0xc9, 0x77, 0xcb, 0xbd, - 0xc9, 0x77, 0xcb, 0xbd, 0xc9, 0x77, 0xcb, 0xbd, 0xca, 0x77, 0xcb, 0xbd, - 0xca, 0x77, 0xcb, 0xbd, 0xca, 0x77, 0xcb, 0xbd, 0xcb, 0x77, 0xcb, 0xbd, - 0xcb, 0x77, 0xcb, 0xbd, 0xcb, 0x77, 0xcc, 0xbd, 0xcc, 0x77, 0xce, 0xbd, - 0xcc, 0x78, 0xce, 0xbd, 0xcc, 0x78, 0xce, 0xbd, 0xcc, 0x78, 0xce, 0xbd, - 0xcd, 0x78, 0xce, 0xbd, 0xcd, 0x78, 0xce, 0xbd, 0xcd, 0x78, 0xce, 0xbd, - 0xce, 0x78, 0xce, 0xbd, 0xce, 0x78, 0xce, 0xbd, 0xce, 0x78, 0xce, 0xbd, - 0xce, 0x78, 0xce, 0xbd, 0xcf, 0x78, 0xce, 0xbd, 0xcf, 0x78, 0xce, 0xbd, - 0xcf, 0x78, 0xce, 0xbd, 0xd0, 0x78, 0xce, 0xbd, 0xd0, 0x78, 0xce, 0xbd, - 0xd0, 0x78, 0xce, 0xbd, 0xd0, 0x78, 0xce, 0xbd, 0xd1, 0x78, 0xce, 0xbd, - 0xd1, 0x78, 0xce, 0xbd, 0xd1, 0x78, 0xce, 0xbd, 0xd2, 0x78, 0xce, 0xbd, - 0xd2, 0x78, 0xce, 0xbd, 0xd2, 0x78, 0xce, 0xbd, 0xd2, 0x78, 0xce, 0xbd, - 0xd3, 0x78, 0xce, 0xbd, 0xd3, 0x78, 0xce, 0xbd, 0xd3, 0x78, 0xce, 0xbd, - 0xd4, 0x78, 0xce, 0xbd, 0xd4, 0x78, 0xce, 0xbd, 0xd4, 0x78, 0xce, 0xbd, - 0xd4, 0x78, 0xce, 0xbd, 0xd5, 0x78, 0xce, 0xbd, 0xd5, 0x78, 0xce, 0xbd, - 0xd5, 0x78, 0xce, 0xbd, 0xd6, 0x78, 0xce, 0xbd, 0xd6, 0x78, 0xce, 0xbd, - 0xd6, 0x78, 0xce, 0xbd, 0xd6, 0x78, 0xce, 0xbd, 0xd7, 0x78, 0xce, 0xbd, - 0xd7, 0x78, 0xd6, 0xbd, 0xd7, 0x93, 0xd6, 0xbd, 0xd7, 0x93, 0xd6, 0xbd, - 0xd8, 0x93, 0xd6, 0xbd, 0xd8, 0x93, 0xd6, 0xbd, 0xd8, 0x93, 0xd6, 0xbd, - 0xd9, 0x93, 0xd6, 0xbd, 0xd9, 0x93, 0xd6, 0xbd, 0xd9, 0x93, 0xd6, 0xbd, - 0xd9, 0x93, 0xd9, 0xbd, 0xda, 0x94, 0xd9, 0xbd, 0xda, 0x94, 0xd9, 0xbd, - 0xda, 0x94, 0xd9, 0xbd, 0xda, 0x94, 0xd9, 0xbd, 0xdb, 0x94, 0xd9, 0xbd, - 0xdb, 0x94, 0xd9, 0xbd, 0xdb, 0x94, 0xd9, 0xbd, 0xdb, 0x94, 0xd9, 0xbd, - 0xdc, 0x94, 0xd9, 0xbd, 0xdc, 0x94, 0xd9, 0xbd, 0xdc, 0x94, 0xdc, 0xbd, - 0xdd, 0x95, 0xdc, 0xbd, 0xdd, 0x95, 0xdc, 0xbd, 0xdd, 0x95, 0xdc, 0xbd, - 0xdd, 0x95, 0xdc, 0xbd, 0xde, 0x95, 0xdc, 0xbd, 0xde, 0x95, 0xdc, 0xbd, - 0xde, 0x95, 0xdc, 0xbd, 0xde, 0x95, 0xdc, 0xbd, 0xdf, 0x95, 0xdc, 0xbd, - 0xdf, 0x95, 0xdc, 0xbd, 0xdf, 0x95, 0xdf, 0xbd, 0xdf, 0x96, 0xea, 0xbd, - 0xe0, 0x86, 0xea, 0xbd, 0xe0, 0x82, 0xea, 0xbd, 0xe0, 0x86, 0xea, 0xbd, - 0xe1, 0x82, 0xea, 0xbd, 0xe1, 0x86, 0xea, 0xbd, 0xe1, 0x82, 0xea, 0xbd, - 0xe1, 0x86, 0xea, 0xbd, 0xe2, 0x82, 0xea, 0xbd, 0xe2, 0x86, 0xea, 0xbd, - 0xe2, 0x82, 0xea, 0xbd, 0xe2, 0x86, 0xea, 0xbd, 0xe3, 0x82, 0xea, 0xbd, - 0xe3, 0x86, 0xea, 0xbd, 0xe3, 0x82, 0xea, 0xbd, 0xe3, 0x86, 0xea, 0xbd, - 0xe4, 0x82, 0xea, 0xbd, 0xe4, 0x86, 0xea, 0xbd, 0xe4, 0x82, 0xea, 0xbd, - 0xe4, 0x81, 0xea, 0xbd, 0xe5, 0x82, 0xea, 0xbd, 0xe5, 0x81, 0xea, 0xbd, - 0xe5, 0x82, 0xea, 0xbd, 0xe5, 0x81, 0xea, 0xbd, 0xe6, 0x82, 0xea, 0xbd, - 0xe6, 0x81, 0xea, 0xbd, 0xe6, 0x82, 0xea, 0xbd, 0xe6, 0x81, 0xea, 0xbd, - 0xe7, 0x82, 0xea, 0xbd, 0xe7, 0x81, 0xea, 0xbd, 0xe7, 0x82, 0xea, 0xbd, - 0xe7, 0x81, 0xea, 0xbd, 0xe8, 0x82, 0xea, 0xbd, 0xe8, 0x81, 0xea, 0xbd, - 0xe8, 0x82, 0xea, 0xbd, 0xe8, 0x81, 0xea, 0xbd, 0xe9, 0x82, 0xea, 0xbd, - 0xe9, 0x81, 0xea, 0xbd, 0xe9, 0x82, 0xea, 0xbd, 0xe9, 0x81, 0xea, 0xbd, - 0xea, 0x82, 0xea, 0xbd, 0xea, 0x81, 0xeb, 0xbd, 0xea, 0x81, 0xea, 0xbd, - 0xea, 0x81, 0xeb, 0xbd, 0xea, 0x81, 0xeb, 0xbd, 0xea, 0x81, 0xeb, 0xbd, - 0xea, 0x81, 0xeb, 0xbd, 0xea, 0x81, 0xec, 0xbd, 0xea, 0x81, 0xec, 0xbd, - 0xea, 0x81, 0xec, 0xbd, 0xea, 0x81, 0xec, 0xbd, 0xea, 0x81, 0xec, 0xbd, - 0xea, 0x81, 0xed, 0xbd, 0xea, 0x81, 0xed, 0xbd, 0xea, 0x81, 0xed, 0xbd, - 0xea, 0x81, 0xed, 0xbd, 0xea, 0x81, 0xee, 0xbd, 0xea, 0x81, 0xee, 0xbd, - 0xea, 0x81, 0xee, 0xba, 0xea, 0x81, 0xee, 0xbd, 0xea, 0x81, 0xef, 0xba, - 0xea, 0x81, 0xef, 0xbd, 0xea, 0x81, 0xef, 0xba, 0xea, 0x81, 0xef, 0xbd, - 0xea, 0x81, 0xf0, 0xba, 0xea, 0x81, 0xf0, 0xbe, 0xf5, 0x81, 0xf0, 0xbd, - 0xf5, 0x81, 0xf0, 0xbe, 0xf5, 0x81, 0xf1, 0xbd, 0xf5, 0x81, 0xf1, 0xbe, - 0xf5, 0x81, 0xf1, 0xbd, 0xf5, 0x81, 0xf1, 0xbe, 0xf5, 0x81, 0xf2, 0xbd, - 0xf5, 0x81, 0xf2, 0xbe, 0xf5, 0x81, 0xf2, 0xbd, 0xf5, 0x81, 0xf2, 0xbe, - 0xf5, 0x81, 0xf2, 0xbd, 0xf5, 0x81, 0xf3, 0xbe, 0xf5, 0x81, 0xf3, 0xbd, - 0xf5, 0x81, 0xf3, 0xbe, 0xf5, 0x81, 0xf3, 0xbd, 0xf5, 0x81, 0xf4, 0xbe, - 0xf5, 0x81, 0xf4, 0xbd, 0xf5, 0x81, 0xf4, 0xbe, 0xf5, 0x81, 0xf4, 0xbd, - 0xf5, 0x81, 0xf5, 0xbd, 0xf5, 0x81, 0xf5, 0xbd, 0xf5, 0x81, 0xf5, 0xbd, - 0xf5, 0x81, 0xf5, 0xbd, 0xf5, 0x81, 0xf5, 0xbd, 0xf5, 0x81, 0xf5, 0xbd, - 0xf6, 0x81, 0xf5, 0xbd, 0xf6, 0x81, 0xf5, 0xbd, 0xf6, 0x7f, 0xf5, 0xbd, - 0xf6, 0x81, 0xf5, 0xbd, 0xf7, 0x7f, 0xf5, 0xbd, 0xf7, 0x81, 0xf9, 0xbd, - 0xf7, 0x81, 0xf9, 0xbd, 0xf7, 0x83, 0xf9, 0xbd, 0xf8, 0x81, 0xf9, 0xbd, - 0xf8, 0x83, 0xf9, 0xbd, 0xf8, 0x81, 0xf9, 0xbd, 0xf8, 0x81, 0xf9, 0xbd, - 0xf8, 0x81, 0xf9, 0xbd, 0xf9, 0x81, 0xf9, 0xbd, 0xf8, 0x81, 0xf9, 0xbd, - 0xf9, 0x81, 0xf9, 0xbd, 0xf8, 0x81, 0xfa, 0xbd, 0xf9, 0x81, 0xfa, 0xbb, - 0xf9, 0x81, 0xfa, 0xbd, 0xf9, 0x81, 0xfa, 0xbb, 0xf9, 0x81, 0xfa, 0xbd, - 0xf9, 0x81, 0xfb, 0xbb, 0xf9, 0x81, 0xfb, 0xbd, 0xf9, 0x81, 0xfb, 0xbb, - 0xf9, 0x81, 0xfb, 0xbd, 0xf9, 0x81, 0xfc, 0xbb, 0xf9, 0x81, 0xfc, 0xbd, - 0xf9, 0x81, 0xfc, 0xbb, 0xf9, 0x81, 0xfc, 0xbd, 0xf9, 0x81, 0xfc, 0xbb, - 0xf9, 0x81, 0xfd, 0xbd, 0xf9, 0x81, 0xfd, 0xbb, 0xf9, 0x81, 0xfd, 0xbd, - 0xf9, 0x81, 0xfd, 0xbb, 0xf9, 0x81, 0xfe, 0xbd, 0xf9, 0x81, 0xfe, 0xbb, - 0xf9, 0x81, 0xfe, 0xbd, 0xf9, 0x81, 0xfe, 0xbb, 0xf9, 0x81, 0xfe, 0xb9, - 0xf9, 0x81, 0xff, 0xbb, 0xf9, 0x81, 0xff, 0xb9, 0xf9, 0x81, 0x03, 0xc5, - 0x90, 0x82, 0x0a, 0xc3, 0x90, 0x82, 0x0f, 0xc5, 0x90, 0x82, 0x14, 0xc3, - 0x90, 0x82, 0x17, 0xc5, 0x90, 0x82, 0x1b, 0xc3, 0x90, 0x82, 0x1e, 0xc5, - 0x90, 0x82, 0x20, 0xc3, 0x90, 0x82, 0x23, 0xc5, 0x90, 0x82, 0x25, 0xc3, - 0x90, 0x82, 0x27, 0xc5, 0x90, 0x82, 0x29, 0xc3, 0x90, 0x82, 0x2b, 0xc1, - 0x91, 0x82, 0x2d, 0xc3, 0x90, 0x82, 0x2f, 0xc1, 0x91, 0x82, 0x31, 0xc3, - 0x90, 0x82, 0x32, 0xc1, 0x91, 0x82, 0x34, 0xc3, 0x90, 0x82, 0x35, 0xc1, - 0x91, 0x82, 0x37, 0xc3, 0x90, 0x82, 0x38, 0xc1, 0x91, 0x82, 0x3a, 0xc3, - 0x90, 0x82, 0x3b, 0xc1, 0x91, 0x82, 0x3c, 0xc3, 0x90, 0x82, 0x3e, 0xc1, - 0x91, 0x82, 0x3f, 0xc3, 0x90, 0x82, 0x40, 0xc1, 0x91, 0x82, 0x42, 0xc3, - 0x90, 0x82, 0x43, 0xc1, 0x91, 0x82, 0x44, 0xc3, 0x90, 0x82, 0x45, 0xc1, - 0x91, 0x82, 0x46, 0xc3, 0x90, 0x82, 0x47, 0xc1, 0x91, 0x82, 0x48, 0xc3, - 0x90, 0x82, 0x49, 0xc1, 0x91, 0x82, 0x4a, 0xc3, 0x90, 0x82, 0x4b, 0xc1, - 0x91, 0x82, 0x4c, 0xc3, 0x90, 0x82, 0x4d, 0xc1, 0x91, 0x82, 0x4e, 0xc3, - 0x90, 0x82, 0x4f, 0xc1, 0x91, 0x82, 0x50, 0xc3, 0x90, 0x82, 0x51, 0xc1, - 0x91, 0x82, 0x52, 0xc3, 0x90, 0x82, 0x53, 0xc1, 0x91, 0x82, 0x54, 0xc3, - 0x90, 0x82, 0x55, 0xc1, 0x91, 0x82, 0x56, 0xc3, 0x90, 0x82, 0x57, 0xc1, - 0x91, 0x82, 0x58, 0xc3, 0x90, 0x82, 0x58, 0xc1, 0x91, 0x82, 0x59, 0xc3, - 0x90, 0x82, 0x5a, 0xc1, 0x91, 0x82, 0x5b, 0xc3, 0x90, 0x82, 0x5c, 0xc1, - 0x91, 0x82, 0x5d, 0xc3, 0x90, 0x82, 0x5d, 0xc1, 0x91, 0x82, 0x5e, 0xc3, - 0x90, 0x82, 0x5f, 0xc1, 0x91, 0x82, 0x60, 0xc3, 0x90, 0x82, 0x60, 0xc1, - 0x91, 0x82, 0x61, 0xc3, 0x90, 0x82, 0x62, 0xc1, 0x91, 0x82, 0x63, 0xc3, - 0x90, 0x82, 0x63, 0xc1, 0x91, 0x82, 0x64, 0xc3, 0x90, 0x82, 0x65, 0xc1, - 0x91, 0x82, 0x66, 0xc3, 0x90, 0x82, 0x66, 0xc1, 0x91, 0x82, 0x67, 0xc3, - 0x90, 0x82, 0x68, 0xc1, 0x91, 0x82, 0x68, 0xc3, 0x90, 0x82, 0x69, 0xc1, - 0x91, 0x82, 0x6a, 0xbf, 0x91, 0x82, 0x6a, 0xc1, 0x91, 0x82, 0x6b, 0xbf, - 0x91, 0x82, 0x6c, 0xc1, 0x91, 0x82, 0x6c, 0xbf, 0x91, 0x82, 0x6d, 0xc1, - 0x91, 0x82, 0x6e, 0xbf, 0x91, 0x82, 0x6e, 0xc1, 0x91, 0x82, 0x6f, 0xbf, - 0x91, 0x82, 0x70, 0xc1, 0x91, 0x82, 0x70, 0xbf, 0x91, 0x82, 0x71, 0xc1, - 0x91, 0x82, 0x72, 0xbf, 0x91, 0x82, 0x72, 0xc1, 0x91, 0x82, 0x73, 0xbf, - 0x91, 0x82, 0x73, 0xc1, 0x91, 0x82, 0x74, 0xbf, 0x91, 0x82, 0x75, 0xc1, - 0x91, 0x82, 0x75, 0xbf, 0x91, 0x82, 0x76, 0xc1, 0x91, 0x82, 0x76, 0xbf, - 0x91, 0x82, 0x77, 0xc1, 0x91, 0x82, 0x78, 0xbf, 0x91, 0x82, 0x78, 0xc1, - 0x91, 0x82, 0x79, 0xbf, 0x91, 0x82, 0x79, 0xc1, 0x91, 0x82, 0x7a, 0xbf, - 0x91, 0x82, 0x7a, 0xc1, 0x91, 0x82, 0x7b, 0xbf, 0x91, 0x82, 0x7c, 0xc1, - 0x91, 0x82, 0x7c, 0xbf, 0x91, 0x82, 0x7d, 0xc1, 0x91, 0x82, 0x7d, 0xbf, - 0x91, 0x82, 0x7e, 0xc1, 0x91, 0x82, 0x7e, 0xbf, 0x91, 0x82, 0x7f, 0xc1, - 0x91, 0x82, 0x7f, 0xbf, 0x91, 0x82, 0x80, 0xbd, 0x92, 0x82, 0x81, 0xbf, - 0x91, 0x82, 0x81, 0xbd, 0x92, 0x82, 0x82, 0xbf, 0x91, 0x82, 0x82, 0xbd, - 0x92, 0x82, 0x83, 0xbf, 0x91, 0x82, 0x83, 0xbd, 0x92, 0x82, 0x84, 0xbf, - 0x91, 0x82, 0x84, 0xbd, 0x92, 0x82, 0x85, 0xbf, 0x91, 0x82, 0x85, 0xbd, - 0x92, 0x82, 0x86, 0xbf, 0x91, 0x82, 0x86, 0xbd, 0x92, 0x82, 0x87, 0xbf, - 0x91, 0x82, 0x87, 0xbd, 0x92, 0x82, 0x88, 0xbf, 0x91, 0x82, 0x88, 0xbd, - 0x92, 0x82, 0x89, 0xbf, 0x91, 0x82, 0x89, 0xbd, 0x92, 0x82, 0x8a, 0xbf, - 0x91, 0x82, 0x8a, 0xbd, 0x92, 0x82, 0x8b, 0xbf, 0x91, 0x82, 0x8b, 0xbd, - 0x92, 0x82, 0x8c, 0xbf, 0x91, 0x82, 0x8c, 0xbd, 0x92, 0x82, 0x8d, 0xbf, - 0x91, 0x82, 0x8d, 0xbd, 0x92, 0x82, 0x8e, 0xbf, 0x91, 0x82, 0x8e, 0xbd, - 0x92, 0x82, 0x8e, 0xbd, 0x92, 0x82, 0x8f, 0xbd, 0x92, 0x82, 0x8f, 0xbd, - 0x92, 0x82, 0x90, 0xbd, 0x92, 0x82, 0x90, 0xbd, 0x92, 0x82, 0x91, 0xbd, - 0x92, 0x82, 0x91, 0xbd, 0x92, 0x82, 0x92, 0xbd, 0x92, 0x81, 0x91, 0xbd, - 0x92, 0x82, 0x92, 0xbd, 0x93, 0x81, 0x91, 0xbd, 0x93, 0x82, 0x95, 0xbd, - 0x94, 0x82, 0x96, 0xbd, 0x94, 0x82, 0x95, 0xbd, 0x94, 0x82, 0x96, 0xbd, - 0x95, 0x82, 0x95, 0xbc, 0x95, 0x82, 0x96, 0xbd, 0x95, 0x82, 0x96, 0xbc, - 0x95, 0x82, 0x97, 0xbd, 0x95, 0x82, 0x97, 0xbc, 0x98, 0x82, 0x98, 0xbc, - 0x98, 0x82, 0x98, 0xbc, 0x98, 0x82, 0x98, 0xbc, 0x98, 0x82, 0x99, 0xbc, - 0x99, 0x82, 0x99, 0xbc, 0x99, 0x82, 0x9a, 0xbc, 0x9a, 0x82, 0x9a, 0xbc, - 0x9a, 0x82, 0x9a, 0xbc, 0x9a, 0x82, 0x9b, 0xbc, 0x9b, 0x82, 0x9b, 0xbc, - 0x9c, 0x82, 0x9c, 0xbc, 0x9d, 0x82, 0x9c, 0xbc, 0x9c, 0x82, 0x9d, 0xbc, - 0x9d, 0x82, 0x9d, 0xbc, 0x9d, 0x82, 0x9d, 0xbc, 0x9d, 0x82, 0x9e, 0xbc, - 0x9e, 0x82, 0x9e, 0xbc, 0x9e, 0x82, 0x9f, 0xbc, 0x9f, 0x82, 0x9f, 0xbc, - 0x9f, 0x82, 0x9f, 0xbc, 0x9f, 0x82, 0xa0, 0xbc, 0xa0, 0x82, 0xa0, 0xbc, - 0xa0, 0x82, 0xa1, 0xbd, 0xa1, 0x83, 0xa1, 0xbd, 0xa1, 0x83, 0xa1, 0xbd, - 0xa1, 0x83, 0xa2, 0xbd, 0xa2, 0x83, 0xa2, 0xbd, 0xa2, 0x83, 0xa3, 0xbd, - 0xa3, 0x83, 0xa3, 0xbd, 0xa3, 0x83, 0xa3, 0xbd, 0xa3, 0x83, 0xa4, 0xbd, - 0xa4, 0x83, 0xa4, 0xbd, 0xa4, 0x83, 0xa5, 0xbd, 0xa5, 0x83, 0xa4, 0xbd, - 0xa5, 0x83, 0xa5, 0xbd, 0xa5, 0x83, 0xa6, 0xbd, 0xa6, 0x84, 0xa6, 0xbd, - 0xa6, 0x84, 0xa6, 0xbd, 0xa6, 0x84, 0xa6, 0xbd, 0xa7, 0x84, 0xa6, 0xbd, - 0xa7, 0x84, 0xa6, 0xbd, 0xa8, 0x84, 0xa8, 0xbd, 0xa8, 0x7f, 0xa8, 0xbd, - 0xa8, 0x7f, 0xa9, 0xbd, 0xa9, 0x7f, 0xa9, 0xbd, 0xa9, 0x7f, 0xa9, 0xbd, - 0xaa, 0x7f, 0xa9, 0xbd, 0xaa, 0x7f, 0xa9, 0xbd, 0xaa, 0x7f, 0xa9, 0xbd, - 0xab, 0x7f, 0xa9, 0xbd, 0xab, 0x7f, 0xa9, 0xbd, 0xab, 0x7f, 0xa9, 0xbd, - 0xac, 0x7f, 0xa9, 0xbd, 0xac, 0x7f, 0xaa, 0xbd, 0xac, 0x7e, 0xa9, 0xbd, - 0xad, 0x7f, 0xaa, 0xbd, 0xad, 0x7e, 0xa9, 0xbd, 0xae, 0x7f, 0xaa, 0xbd, - 0xae, 0x7e, 0xa9, 0xbd, 0xae, 0x7f, 0xaa, 0xbd, 0xaf, 0x7e, 0xa9, 0xbd, - 0xaf, 0x7f, 0xaa, 0xbd, 0xaf, 0x7e, 0xa9, 0xbd, 0xb0, 0x7f, 0xaa, 0xbd, - 0xb0, 0x7e, 0xa9, 0xbd, 0xb0, 0x7f, 0xaa, 0xbd, 0xb1, 0x7e, 0xa9, 0xbd, - 0xb1, 0x7f, 0xaa, 0xbd, 0xb2, 0x7e, 0xa9, 0xbd, 0xb2, 0x7f, 0xaa, 0xbd, - 0xb2, 0x7e, 0xa9, 0xbd, 0xb3, 0x7f, 0xaa, 0xbd, 0xb3, 0x7e, 0xa9, 0xbd, - 0xb3, 0x7f, 0xaa, 0xbd, 0xb4, 0x7e, 0xa9, 0xbd, 0xb4, 0x7f, 0xaa, 0xbd, - 0xb4, 0x7e, 0xa9, 0xbd, 0xb5, 0x7f, 0xb8, 0xbd, 0xb5, 0x72, 0xb8, 0xbd, - 0xb5, 0x72, 0xb8, 0xbd, 0xb6, 0x72, 0xb8, 0xbd, 0xb6, 0x72, 0xb8, 0xbd, - 0xb6, 0x72, 0xb8, 0xbd, 0xb7, 0x72, 0xb8, 0xbd, 0xb7, 0x72, 0xb8, 0xbd, - 0xb7, 0x72, 0xb8, 0xbd, 0xb8, 0x72, 0xbb, 0xbd, 0xb8, 0x73, 0xbc, 0xbd, - 0xb8, 0x73, 0xbb, 0xbd, 0xb9, 0x73, 0xbc, 0xbd, 0xb9, 0x73, 0xbb, 0xbd, - 0xb9, 0x73, 0xbc, 0xbd, 0xba, 0x73, 0xbb, 0xbd, 0xba, 0x73, 0xbc, 0xbd, - 0xba, 0x73, 0xbb, 0xbd, 0xbb, 0x73, 0xbc, 0xbd, 0xbb, 0x73, 0xbb, 0xbd, - 0xbb, 0x73, 0xbf, 0xbd, 0xbc, 0x74, 0xbf, 0xbd, 0xbc, 0x74, 0xbf, 0xbd, - 0xbc, 0x74, 0xbf, 0xbd, 0xbd, 0x74, 0xbf, 0xbd, 0xbd, 0x74, 0xbf, 0xbd, - 0xbd, 0x74, 0xbf, 0xbd, 0xbe, 0x74, 0xbf, 0xbd, 0xbe, 0x74, 0xbf, 0xbd, - 0xbe, 0x74, 0xbf, 0xbd, 0xbf, 0x74, 0xbf, 0xbd, 0xbf, 0x74, 0xc2, 0xbd, - 0xbf, 0x75, 0xc3, 0xbd, 0xc0, 0x75, 0xc2, 0xbd, 0xc0, 0x75, 0xc3, 0xbd, - 0xc0, 0x75, 0xc2, 0xbd, 0xc1, 0x75, 0xc3, 0xbd, 0xc1, 0x75, 0xc2, 0xbd, - 0xc1, 0x75, 0xc3, 0xbd, 0xc1, 0x75, 0xc2, 0xbd, 0xc2, 0x75, 0xc3, 0xbd, - 0xc2, 0x75, 0xc2, 0xbd, 0xc2, 0x75, 0xc3, 0xbd, 0xc3, 0x75, 0xc3, 0xbd, - 0xc3, 0x75, 0xc3, 0xbd, 0xc3, 0x75, 0xc6, 0xbd, 0xc4, 0x76, 0xc6, 0xbd, - 0xc4, 0x76, 0xc6, 0xbd, 0xc4, 0x76, 0xc6, 0xbd, 0xc5, 0x76, 0xc6, 0xbd, - 0xc5, 0x76, 0xc6, 0xbd, 0xc5, 0x76, 0xc6, 0xbd, 0xc6, 0x76, 0xc6, 0xbd, - 0xc6, 0x76, 0xc6, 0xbd, 0xc6, 0x76, 0xc6, 0xbd, 0xc6, 0x76, 0xc7, 0xbd, - 0xc7, 0x76, 0xc9, 0xbd, 0xc7, 0x77, 0xca, 0xbd, 0xc7, 0x77, 0xc9, 0xbd, - 0xc8, 0x77, 0xca, 0xbd, 0xc8, 0x77, 0xc9, 0xbd, 0xc8, 0x77, 0xca, 0xbd, - 0xc9, 0x77, 0xc9, 0xbd, 0xc9, 0x77, 0xca, 0xbd, 0xc9, 0x77, 0xc9, 0xbd, - 0xc9, 0x77, 0xca, 0xbd, 0xca, 0x77, 0xca, 0xbd, 0xca, 0x77, 0xcd, 0xbd, - 0xca, 0x78, 0xcd, 0xbd, 0xcb, 0x78, 0xcd, 0xbd, 0xcb, 0x78, 0xcd, 0xbd, - 0xcb, 0x78, 0xcd, 0xbd, 0xcc, 0x78, 0xcd, 0xbd, 0xcc, 0x78, 0xcd, 0xbd, - 0xcc, 0x78, 0xcd, 0xbd, 0xcc, 0x78, 0xcd, 0xbd, 0xcd, 0x78, 0xcd, 0xbd, - 0xcd, 0x78, 0xcd, 0xbd, 0xcd, 0x78, 0xce, 0xbd, 0xce, 0x78, 0xce, 0xbd, - 0xce, 0x78, 0xce, 0xbd, 0xce, 0x78, 0xce, 0xbd, 0xce, 0x78, 0xce, 0xbd, - 0xcf, 0x78, 0xce, 0xbd, 0xcf, 0x78, 0xce, 0xbd, 0xcf, 0x78, 0xce, 0xbd, - 0xd0, 0x78, 0xce, 0xbd, 0xd0, 0x78, 0xce, 0xbd, 0xd0, 0x78, 0xce, 0xbd, - 0xd0, 0x78, 0xce, 0xbd, 0xd1, 0x78, 0xce, 0xbd, 0xd1, 0x78, 0xce, 0xbd, - 0xd1, 0x78, 0xce, 0xbd, 0xd2, 0x78, 0xce, 0xbd, 0xd2, 0x78, 0xce, 0xbd, - 0xd2, 0x78, 0xce, 0xbd, 0xd2, 0x78, 0xce, 0xbd, 0xd3, 0x78, 0xce, 0xbd, - 0xd3, 0x78, 0xce, 0xbd, 0xd3, 0x78, 0xce, 0xbd, 0xd4, 0x78, 0xce, 0xbd, - 0xd4, 0x78, 0xce, 0xbd, 0xd4, 0x78, 0xce, 0xbd, 0xd4, 0x78, 0xce, 0xbd, - 0xd5, 0x78, 0xce, 0xbd, 0xd5, 0x78, 0xce, 0xbd, 0xd5, 0x78, 0xce, 0xbd, - 0xd6, 0x78, 0xce, 0xbd, 0xd6, 0x78, 0xce, 0xbd, 0xd6, 0x78, 0xce, 0xbd, - 0xd6, 0x78, 0xd4, 0xbd, 0xd7, 0x93, 0xd5, 0xbd, 0xd7, 0x93, 0xd4, 0xbd, - 0xd7, 0x93, 0xd5, 0xbd, 0xd7, 0x93, 0xd8, 0xbd, 0xd8, 0x94, 0xd5, 0xbd, - 0xd8, 0x93, 0xd8, 0xbd, 0xd8, 0x94, 0xd7, 0xbd, 0xd9, 0x94, 0xd8, 0xbd, - 0xd9, 0x94, 0xd7, 0xbd, 0xd9, 0x94, 0xd8, 0xbd, 0xd9, 0x94, 0xd7, 0xbd, - 0xda, 0x94, 0xd8, 0xbd, 0xda, 0x94, 0xd7, 0xbd, 0xda, 0x94, 0xd8, 0xbd, - 0xda, 0x94, 0xd7, 0xbd, 0xdb, 0x94, 0xd8, 0xbd, 0xdb, 0x94, 0xdb, 0xbd, - 0xdb, 0x95, 0xda, 0xbd, 0xdb, 0x95, 0xdb, 0xbd, 0xdc, 0x95, 0xda, 0xbd, - 0xdc, 0x95, 0xdb, 0xbd, 0xdc, 0x95, 0xda, 0xbd, 0xdd, 0x95, 0xdb, 0xbd, - 0xdd, 0x95, 0xda, 0xbd, 0xdd, 0x95, 0xdb, 0xbd, 0xdd, 0x95, 0xda, 0xbd, - 0xde, 0x95, 0xdb, 0xbd, 0xde, 0x95, 0xde, 0xbd, 0xde, 0x96, 0xdd, 0xbd, - 0xde, 0x96, 0xde, 0xbd, 0xdf, 0x96, 0xdd, 0xbd, 0xdf, 0x96, 0xde, 0xbd, - 0xdf, 0x96, 0xdd, 0xbd, 0xdf, 0x96, 0xde, 0xbd, 0xe0, 0x96, 0xea, 0xbd, - 0xe0, 0x83, 0xea, 0xbd, 0xe0, 0x86, 0xea, 0xbd, 0xe1, 0x83, 0xea, 0xbd, - 0xe1, 0x86, 0xea, 0xbd, 0xe1, 0x83, 0xea, 0xbd, 0xe1, 0x86, 0xea, 0xbd, - 0xe2, 0x83, 0xea, 0xbd, 0xe2, 0x86, 0xea, 0xbd, 0xe2, 0x83, 0xea, 0xbd, - 0xe2, 0x86, 0xea, 0xbd, 0xe3, 0x83, 0xea, 0xbd, 0xe3, 0x86, 0xea, 0xbd, - 0xe3, 0x83, 0xea, 0xbd, 0xe3, 0x86, 0xea, 0xbd, 0xe4, 0x83, 0xea, 0xbd, - 0xe4, 0x86, 0xea, 0xbd, 0xe4, 0x83, 0xea, 0xbd, 0xe4, 0x86, 0xea, 0xbd, - 0xe5, 0x83, 0xea, 0xbd, 0xe5, 0x86, 0xea, 0xbd, 0xe5, 0x83, 0xea, 0xbd, - 0xe5, 0x86, 0xea, 0xbd, 0xe6, 0x83, 0xea, 0xbd, 0xe6, 0x86, 0xea, 0xbd, - 0xe6, 0x83, 0xea, 0xbd, 0xe6, 0x82, 0xea, 0xbd, 0xe7, 0x83, 0xea, 0xbd, - 0xe7, 0x82, 0xea, 0xbd, 0xe7, 0x83, 0xea, 0xbd, 0xe7, 0x82, 0xea, 0xbd, - 0xe8, 0x83, 0xea, 0xbd, 0xe8, 0x82, 0xea, 0xbd, 0xe8, 0x83, 0xea, 0xbd, - 0xe8, 0x82, 0xea, 0xbd, 0xe9, 0x83, 0xea, 0xbd, 0xe9, 0x82, 0xea, 0xbd, - 0xe9, 0x83, 0xea, 0xbd, 0xe9, 0x82, 0xea, 0xbd, 0xea, 0x83, 0xea, 0xbd, - 0xea, 0x82, 0xeb, 0xbd, 0xea, 0x82, 0xea, 0xbd, 0xea, 0x82, 0xeb, 0xbd, - 0xea, 0x82, 0xeb, 0xbd, 0xea, 0x82, 0xeb, 0xbd, 0xea, 0x82, 0xeb, 0xbd, - 0xea, 0x82, 0xec, 0xbd, 0xea, 0x82, 0xec, 0xbd, 0xea, 0x82, 0xec, 0xbd, - 0xea, 0x82, 0xec, 0xbd, 0xea, 0x82, 0xec, 0xbd, 0xea, 0x82, 0xed, 0xbd, - 0xea, 0x82, 0xed, 0xbd, 0xea, 0x82, 0xed, 0xbd, 0xea, 0x82, 0xed, 0xbd, - 0xea, 0x82, 0xee, 0xbd, 0xea, 0x82, 0xee, 0xbd, 0xea, 0x82, 0xee, 0xba, - 0xea, 0x82, 0xee, 0xbd, 0xea, 0x82, 0xef, 0xba, 0xea, 0x82, 0xef, 0xbd, - 0xea, 0x82, 0xef, 0xba, 0xea, 0x82, 0xef, 0xbd, 0xea, 0x82, 0xf0, 0xba, - 0xea, 0x82, 0xf0, 0xbe, 0xf5, 0x82, 0xf0, 0xbd, 0xf5, 0x82, 0xf0, 0xbe, - 0xf5, 0x82, 0xf1, 0xbd, 0xf5, 0x82, 0xf1, 0xbe, 0xf5, 0x82, 0xf1, 0xbd, - 0xf5, 0x82, 0xf1, 0xbe, 0xf5, 0x82, 0xf2, 0xbd, 0xf5, 0x82, 0xf2, 0xbe, - 0xf5, 0x82, 0xf2, 0xbd, 0xf5, 0x82, 0xf2, 0xbe, 0xf5, 0x82, 0xf2, 0xbd, - 0xf5, 0x82, 0xf3, 0xbe, 0xf5, 0x82, 0xf3, 0xbd, 0xf5, 0x82, 0xf3, 0xbe, - 0xf5, 0x82, 0xf3, 0xbd, 0xf5, 0x82, 0xf4, 0xbe, 0xf5, 0x82, 0xf4, 0xbd, - 0xf5, 0x82, 0xf4, 0xbe, 0xf5, 0x82, 0xf4, 0xbd, 0xf5, 0x82, 0xf5, 0xbd, - 0xf5, 0x82, 0xf5, 0xbd, 0xf5, 0x82, 0xf5, 0xbd, 0xf5, 0x82, 0xf5, 0xbd, - 0xf5, 0x82, 0xf5, 0xbd, 0xf5, 0x82, 0xf5, 0xbd, 0xf6, 0x82, 0xf5, 0xbd, - 0xf6, 0x82, 0xf5, 0xbd, 0xf6, 0x82, 0xf5, 0xbd, 0xf6, 0x82, 0xf5, 0xbd, - 0xf7, 0x82, 0xf5, 0xbd, 0xf7, 0x82, 0xf9, 0xbd, 0xf7, 0x82, 0xf9, 0xbd, - 0xf7, 0x83, 0xf9, 0xbd, 0xf8, 0x82, 0xf9, 0xbd, 0xf8, 0x83, 0xf9, 0xbd, - 0xf8, 0x82, 0xf9, 0xbd, 0xf8, 0x83, 0xf9, 0xbd, 0xf8, 0x82, 0xf9, 0xbd, - 0xf9, 0x82, 0xf9, 0xbd, 0xf8, 0x82, 0xf9, 0xbd, 0xf9, 0x82, 0xf9, 0xbd, - 0xf8, 0x82, 0xfa, 0xbd, 0xf9, 0x82, 0xfa, 0xbd, 0xf8, 0x82, 0xfa, 0xbd, - 0xf9, 0x82, 0xfa, 0xbd, 0xf8, 0x82, 0xfa, 0xbd, 0xf9, 0x82, 0xfb, 0xbb, - 0xf9, 0x82, 0xfb, 0xbd, 0xf9, 0x82, 0xfb, 0xbb, 0xf9, 0x82, 0xfb, 0xbd, - 0xf9, 0x82, 0xfc, 0xbb, 0xf9, 0x82, 0xfc, 0xbd, 0xf9, 0x82, 0xfc, 0xbb, - 0xf9, 0x82, 0xfc, 0xbd, 0xf9, 0x82, 0xfc, 0xbb, 0xf9, 0x82, 0xfd, 0xbd, - 0xf9, 0x82, 0xfd, 0xbb, 0xf9, 0x82, 0xfd, 0xbd, 0xf9, 0x82, 0xfd, 0xbb, - 0xf9, 0x82, 0xfe, 0xbd, 0xf9, 0x82, 0xfe, 0xbb, 0xf9, 0x82, 0xfe, 0xbd, - 0xf9, 0x82, 0xfe, 0xbb, 0xf9, 0x82, 0xfe, 0xba, 0xf9, 0x82, 0xff, 0xbb, - 0xf9, 0x82, 0xff, 0xba, 0xf9, 0x82, 0x03, 0xc5, 0x90, 0x82, 0x0a, 0xc3, - 0x90, 0x82, 0x0f, 0xc5, 0x90, 0x82, 0x14, 0xc3, 0x90, 0x82, 0x17, 0xc5, - 0x90, 0x82, 0x1b, 0xc3, 0x90, 0x82, 0x1e, 0xc5, 0x90, 0x82, 0x20, 0xc3, - 0x90, 0x82, 0x23, 0xc5, 0x90, 0x82, 0x25, 0xc3, 0x90, 0x82, 0x27, 0xc5, - 0x90, 0x82, 0x29, 0xc3, 0x90, 0x82, 0x2b, 0xc5, 0x90, 0x82, 0x2d, 0xc3, - 0x90, 0x82, 0x2f, 0xc5, 0x90, 0x82, 0x31, 0xc3, 0x90, 0x82, 0x32, 0xc5, - 0x90, 0x82, 0x34, 0xc3, 0x90, 0x82, 0x35, 0xc5, 0x90, 0x82, 0x37, 0xc3, - 0x90, 0x82, 0x38, 0xc5, 0x90, 0x82, 0x3a, 0xc3, 0x90, 0x82, 0x3b, 0xc5, - 0x90, 0x82, 0x3c, 0xc3, 0x90, 0x82, 0x3e, 0xc5, 0x90, 0x82, 0x3f, 0xc3, - 0x90, 0x82, 0x40, 0xc5, 0x90, 0x82, 0x42, 0xc3, 0x90, 0x82, 0x43, 0xc5, - 0x90, 0x82, 0x44, 0xc3, 0x90, 0x82, 0x45, 0xc5, 0x90, 0x82, 0x46, 0xc3, - 0x90, 0x82, 0x47, 0xc5, 0x90, 0x82, 0x48, 0xc3, 0x90, 0x82, 0x49, 0xc5, - 0x90, 0x82, 0x4a, 0xc3, 0x90, 0x82, 0x4b, 0xc1, 0x91, 0x82, 0x4c, 0xc3, - 0x90, 0x82, 0x4d, 0xc1, 0x91, 0x82, 0x4e, 0xc3, 0x90, 0x82, 0x4f, 0xc1, - 0x91, 0x82, 0x50, 0xc3, 0x90, 0x82, 0x51, 0xc1, 0x91, 0x82, 0x52, 0xc3, - 0x90, 0x82, 0x53, 0xc1, 0x91, 0x82, 0x54, 0xc3, 0x90, 0x82, 0x55, 0xc1, - 0x91, 0x82, 0x56, 0xc3, 0x90, 0x82, 0x57, 0xc1, 0x91, 0x82, 0x58, 0xc3, - 0x90, 0x82, 0x58, 0xc1, 0x91, 0x82, 0x59, 0xc3, 0x90, 0x82, 0x5a, 0xc1, - 0x91, 0x82, 0x5b, 0xc3, 0x90, 0x82, 0x5c, 0xc1, 0x91, 0x82, 0x5d, 0xc3, - 0x90, 0x82, 0x5d, 0xc1, 0x91, 0x82, 0x5e, 0xc3, 0x90, 0x82, 0x5f, 0xc1, - 0x91, 0x82, 0x60, 0xc3, 0x90, 0x82, 0x60, 0xc1, 0x91, 0x82, 0x61, 0xc3, - 0x90, 0x82, 0x62, 0xc1, 0x91, 0x82, 0x63, 0xc3, 0x90, 0x82, 0x63, 0xc1, - 0x91, 0x82, 0x64, 0xc3, 0x90, 0x82, 0x65, 0xc1, 0x91, 0x82, 0x66, 0xc3, - 0x90, 0x82, 0x66, 0xc1, 0x91, 0x82, 0x67, 0xbf, 0x91, 0x82, 0x68, 0xc1, - 0x91, 0x82, 0x68, 0xbf, 0x91, 0x82, 0x69, 0xc1, 0x91, 0x82, 0x6a, 0xbf, - 0x91, 0x82, 0x6a, 0xc1, 0x91, 0x82, 0x6b, 0xbf, 0x91, 0x82, 0x6c, 0xc1, - 0x91, 0x82, 0x6c, 0xbf, 0x91, 0x82, 0x6d, 0xc1, 0x91, 0x82, 0x6e, 0xbf, - 0x91, 0x82, 0x6e, 0xc1, 0x91, 0x82, 0x6f, 0xbf, 0x91, 0x82, 0x70, 0xc1, - 0x91, 0x82, 0x70, 0xbf, 0x91, 0x82, 0x71, 0xc1, 0x91, 0x82, 0x72, 0xbf, - 0x91, 0x82, 0x72, 0xc1, 0x91, 0x82, 0x73, 0xbf, 0x91, 0x82, 0x73, 0xc1, - 0x91, 0x82, 0x74, 0xbf, 0x91, 0x82, 0x75, 0xc1, 0x91, 0x82, 0x75, 0xbf, - 0x91, 0x82, 0x76, 0xc1, 0x91, 0x82, 0x76, 0xbf, 0x91, 0x82, 0x77, 0xc1, - 0x91, 0x82, 0x78, 0xbf, 0x91, 0x82, 0x78, 0xc1, 0x91, 0x82, 0x79, 0xbf, - 0x91, 0x82, 0x79, 0xc1, 0x91, 0x82, 0x7a, 0xbf, 0x91, 0x82, 0x7a, 0xc1, - 0x91, 0x82, 0x7b, 0xbf, 0x91, 0x82, 0x7c, 0xc1, 0x91, 0x82, 0x7c, 0xbf, - 0x91, 0x82, 0x7d, 0xc1, 0x91, 0x82, 0x7d, 0xbf, 0x91, 0x82, 0x7e, 0xc1, - 0x91, 0x82, 0x7e, 0xbf, 0x91, 0x82, 0x7f, 0xc1, 0x91, 0x82, 0x7f, 0xbf, - 0x91, 0x82, 0x80, 0xbd, 0x92, 0x82, 0x81, 0xbf, 0x91, 0x82, 0x81, 0xbd, - 0x92, 0x82, 0x82, 0xbf, 0x91, 0x82, 0x82, 0xbd, 0x92, 0x82, 0x83, 0xbf, - 0x91, 0x82, 0x83, 0xbd, 0x92, 0x82, 0x84, 0xbf, 0x91, 0x82, 0x84, 0xbd, - 0x92, 0x82, 0x85, 0xbf, 0x91, 0x82, 0x85, 0xbd, 0x92, 0x82, 0x86, 0xbf, - 0x91, 0x82, 0x86, 0xbd, 0x92, 0x82, 0x87, 0xbf, 0x91, 0x82, 0x87, 0xbd, - 0x92, 0x82, 0x88, 0xbf, 0x91, 0x82, 0x88, 0xbd, 0x92, 0x82, 0x89, 0xbf, - 0x91, 0x82, 0x89, 0xbd, 0x92, 0x82, 0x8a, 0xbf, 0x91, 0x82, 0x8a, 0xbd, - 0x92, 0x82, 0x8b, 0xbf, 0x91, 0x82, 0x8b, 0xbd, 0x92, 0x82, 0x8c, 0xbf, - 0x91, 0x82, 0x8c, 0xbd, 0x92, 0x82, 0x8d, 0xbf, 0x91, 0x82, 0x8d, 0xbd, - 0x92, 0x82, 0x8e, 0xbf, 0x91, 0x82, 0x8e, 0xbd, 0x92, 0x82, 0x8e, 0xbf, - 0x91, 0x82, 0x8f, 0xbd, 0x92, 0x82, 0x8f, 0xbf, 0x91, 0x82, 0x90, 0xbd, - 0x92, 0x82, 0x90, 0xbd, 0x92, 0x82, 0x91, 0xbd, 0x92, 0x82, 0x91, 0xbd, - 0x92, 0x82, 0x91, 0xbd, 0x92, 0x82, 0x91, 0xbd, 0x92, 0x82, 0x91, 0xbd, - 0x93, 0x82, 0x91, 0xbd, 0x93, 0x82, 0x95, 0xbd, 0x94, 0x82, 0x96, 0xbd, - 0x94, 0x82, 0x95, 0xbd, 0x94, 0x82, 0x96, 0xbd, 0x95, 0x82, 0x95, 0xbd, - 0x94, 0x82, 0x96, 0xbd, 0x95, 0x82, 0x96, 0xbd, 0x94, 0x82, 0x97, 0xbd, - 0x95, 0x82, 0x97, 0xbc, 0x95, 0x82, 0x98, 0xbb, 0x98, 0x82, 0x98, 0xbb, - 0x98, 0x82, 0x98, 0xbc, 0x9a, 0x82, 0x99, 0xbc, 0x9a, 0x82, 0x99, 0xbc, - 0x9a, 0x82, 0x9a, 0xbc, 0x9a, 0x82, 0x9a, 0xbc, 0x9a, 0x82, 0x9a, 0xbc, - 0x9a, 0x82, 0x9b, 0xbc, 0x9b, 0x82, 0x9b, 0xbc, 0x9b, 0x82, 0x9c, 0xbc, - 0x9c, 0x82, 0x9c, 0xbc, 0x9c, 0x82, 0x9d, 0xbc, 0x9d, 0x82, 0x9d, 0xbc, - 0x9d, 0x82, 0x9d, 0xbc, 0x9d, 0x82, 0x9e, 0xbd, 0x9f, 0x82, 0x9e, 0xbd, - 0x9f, 0x82, 0x9f, 0xbd, 0x9f, 0x82, 0x9f, 0xbd, 0x9f, 0x82, 0x9f, 0xbd, - 0x9f, 0x82, 0xa0, 0xbd, 0xa0, 0x82, 0xa0, 0xbd, 0xa0, 0x82, 0xa1, 0xbd, - 0xa1, 0x82, 0xa1, 0xbd, 0xa1, 0x82, 0xa1, 0xbd, 0xa1, 0x82, 0xa2, 0xbd, - 0xa2, 0x82, 0xa2, 0xbd, 0xa2, 0x82, 0xa3, 0xbd, 0xa3, 0x82, 0xa3, 0xbd, - 0xa3, 0x83, 0xa3, 0xbd, 0xa3, 0x83, 0xa4, 0xbd, 0xa4, 0x83, 0xa4, 0xbd, - 0xa4, 0x83, 0xa5, 0xbd, 0xa5, 0x83, 0xa5, 0xbd, 0xa5, 0x83, 0xa5, 0xbd, - 0xa5, 0x83, 0xa6, 0xbd, 0xa6, 0x83, 0xa6, 0xbd, 0xa6, 0x83, 0xa6, 0xbd, - 0xa6, 0x83, 0xa6, 0xbd, 0xa7, 0x83, 0xa6, 0xbd, 0xa7, 0x83, 0xa6, 0xbd, - 0xa8, 0x83, 0xa6, 0xbd, 0xa8, 0x83, 0xa6, 0xbd, 0xa8, 0x83, 0xa9, 0xbd, - 0xa9, 0x7e, 0xa9, 0xbd, 0xa9, 0x7e, 0xa9, 0xbd, 0xaa, 0x7e, 0xa9, 0xbd, - 0xaa, 0x7e, 0xa9, 0xbd, 0xaa, 0x7e, 0xa9, 0xbd, 0xab, 0x7e, 0xa9, 0xbd, - 0xab, 0x7e, 0xa9, 0xbd, 0xab, 0x7e, 0xa9, 0xbd, 0xac, 0x7e, 0xa9, 0xbd, - 0xac, 0x7e, 0xaa, 0xbd, 0xac, 0x7d, 0xa9, 0xbd, 0xad, 0x7e, 0xaa, 0xbd, - 0xad, 0x7d, 0xa9, 0xbd, 0xae, 0x7e, 0xaa, 0xbd, 0xae, 0x7d, 0xa9, 0xbd, - 0xae, 0x7e, 0xaa, 0xbd, 0xaf, 0x7d, 0xa9, 0xbd, 0xaf, 0x7e, 0xaa, 0xbd, - 0xaf, 0x7d, 0xa9, 0xbd, 0xb0, 0x7e, 0xaa, 0xbd, 0xb0, 0x7d, 0xa9, 0xbd, - 0xb0, 0x7e, 0xaa, 0xbd, 0xb1, 0x7d, 0xa9, 0xbd, 0xb1, 0x7e, 0xaa, 0xbd, - 0xb2, 0x7d, 0xa9, 0xbd, 0xb2, 0x7e, 0xaa, 0xbd, 0xb2, 0x7d, 0xa9, 0xbd, - 0xb3, 0x7e, 0xaa, 0xbd, 0xb3, 0x7d, 0xa9, 0xbd, 0xb3, 0x7e, 0xaa, 0xbd, - 0xb4, 0x7d, 0xa9, 0xbd, 0xb4, 0x7e, 0xaa, 0xbd, 0xb4, 0x7d, 0xa9, 0xbd, - 0xb5, 0x7e, 0xaa, 0xbd, 0xb5, 0x7d, 0xb6, 0xbd, 0xb5, 0x71, 0xb6, 0xbd, - 0xb6, 0x71, 0xb6, 0xbd, 0xb6, 0x71, 0xba, 0xbd, 0xb6, 0x72, 0xba, 0xbd, - 0xb7, 0x72, 0xba, 0xbd, 0xb7, 0x72, 0xba, 0xbd, 0xb7, 0x72, 0xba, 0xbd, - 0xb8, 0x72, 0xba, 0xbd, 0xb8, 0x72, 0xba, 0xbd, 0xb8, 0x72, 0xba, 0xbd, - 0xb9, 0x72, 0xba, 0xbd, 0xb9, 0x72, 0xba, 0xbd, 0xb9, 0x72, 0xba, 0xbd, - 0xba, 0x72, 0xbd, 0xbd, 0xba, 0x73, 0xbe, 0xbd, 0xba, 0x73, 0xbd, 0xbd, - 0xbb, 0x73, 0xbe, 0xbd, 0xbb, 0x73, 0xbd, 0xbd, 0xbb, 0x73, 0xbe, 0xbd, - 0xbc, 0x73, 0xbd, 0xbd, 0xbc, 0x73, 0xbe, 0xbd, 0xbc, 0x73, 0xbd, 0xbd, - 0xbd, 0x73, 0xbe, 0xbd, 0xbd, 0x73, 0xbd, 0xbd, 0xbd, 0x73, 0xc1, 0xbd, - 0xbe, 0x74, 0xc1, 0xbd, 0xbe, 0x74, 0xc1, 0xbd, 0xbe, 0x74, 0xc1, 0xbd, - 0xbf, 0x74, 0xc1, 0xbd, 0xbf, 0x74, 0xc1, 0xbd, 0xbf, 0x74, 0xc1, 0xbd, - 0xc0, 0x74, 0xc1, 0xbd, 0xc0, 0x74, 0xc1, 0xbd, 0xc0, 0x74, 0xc1, 0xbd, - 0xc1, 0x74, 0xc1, 0xbd, 0xc1, 0x74, 0xc4, 0xbd, 0xc1, 0x75, 0xc5, 0xbd, - 0xc1, 0x75, 0xc4, 0xbd, 0xc2, 0x75, 0xc5, 0xbd, 0xc2, 0x75, 0xc4, 0xbd, - 0xc2, 0x75, 0xc5, 0xbd, 0xc3, 0x75, 0xc4, 0xbd, 0xc3, 0x75, 0xc5, 0xbd, - 0xc3, 0x75, 0xc4, 0xbd, 0xc4, 0x75, 0xc5, 0xbd, 0xc4, 0x75, 0xc4, 0xbd, - 0xc4, 0x75, 0xc5, 0xbd, 0xc5, 0x75, 0xc5, 0xbd, 0xc5, 0x75, 0xc8, 0xbd, - 0xc5, 0x76, 0xc8, 0xbd, 0xc6, 0x76, 0xc8, 0xbd, 0xc6, 0x76, 0xc8, 0xbd, - 0xc6, 0x76, 0xc8, 0xbd, 0xc6, 0x76, 0xc8, 0xbd, 0xc7, 0x76, 0xc8, 0xbd, - 0xc7, 0x76, 0xc8, 0xbd, 0xc7, 0x76, 0xc8, 0xbd, 0xc8, 0x76, 0xc8, 0xbd, - 0xc8, 0x76, 0xc8, 0xbd, 0xc8, 0x76, 0xcb, 0xbd, 0xc9, 0x77, 0xcb, 0xbd, - 0xc9, 0x77, 0xcb, 0xbd, 0xc9, 0x77, 0xcb, 0xbd, 0xc9, 0x77, 0xcb, 0xbd, - 0xca, 0x77, 0xcb, 0xbd, 0xca, 0x77, 0xcb, 0xbd, 0xca, 0x77, 0xcb, 0xbd, - 0xcb, 0x77, 0xcb, 0xbd, 0xcb, 0x77, 0xcb, 0xbd, 0xcb, 0x77, 0xcc, 0xbd, - 0xcc, 0x77, 0xce, 0xbd, 0xcc, 0x78, 0xce, 0xbd, 0xcc, 0x78, 0xce, 0xbd, - 0xcc, 0x78, 0xce, 0xbd, 0xcd, 0x78, 0xce, 0xbd, 0xcd, 0x78, 0xce, 0xbd, - 0xcd, 0x78, 0xce, 0xbd, 0xce, 0x78, 0xce, 0xbd, 0xce, 0x78, 0xce, 0xbd, - 0xce, 0x78, 0xce, 0xbd, 0xce, 0x78, 0xce, 0xbd, 0xcf, 0x78, 0xce, 0xbd, - 0xcf, 0x78, 0xce, 0xbd, 0xcf, 0x78, 0xce, 0xbd, 0xd0, 0x78, 0xce, 0xbd, - 0xd0, 0x78, 0xce, 0xbd, 0xd0, 0x78, 0xce, 0xbd, 0xd0, 0x78, 0xce, 0xbd, - 0xd1, 0x78, 0xce, 0xbd, 0xd1, 0x78, 0xce, 0xbd, 0xd1, 0x78, 0xce, 0xbd, - 0xd2, 0x78, 0xce, 0xbd, 0xd2, 0x78, 0xce, 0xbd, 0xd2, 0x78, 0xce, 0xbd, - 0xd2, 0x78, 0xce, 0xbd, 0xd3, 0x78, 0xce, 0xbd, 0xd3, 0x78, 0xce, 0xbd, - 0xd3, 0x78, 0xce, 0xbd, 0xd4, 0x78, 0xce, 0xbd, 0xd4, 0x78, 0xce, 0xbd, - 0xd4, 0x78, 0xce, 0xbd, 0xd4, 0x78, 0xce, 0xbd, 0xd5, 0x78, 0xce, 0xbd, - 0xd5, 0x78, 0xce, 0xbd, 0xd5, 0x78, 0xce, 0xbd, 0xd6, 0x78, 0xce, 0xbd, - 0xd6, 0x78, 0xd6, 0xbd, 0xd6, 0x93, 0xd6, 0xbd, 0xd6, 0x93, 0xd6, 0xbd, - 0xd7, 0x93, 0xd6, 0xbd, 0xd7, 0x93, 0xd6, 0xbd, 0xd7, 0x93, 0xd6, 0xbd, - 0xd7, 0x93, 0xd6, 0xbd, 0xd8, 0x93, 0xd6, 0xbd, 0xd8, 0x93, 0xd6, 0xbd, - 0xd8, 0x93, 0xd6, 0xbd, 0xd9, 0x93, 0xd6, 0xbd, 0xd9, 0x93, 0xd9, 0xbd, - 0xd9, 0x94, 0xd6, 0xbd, 0xd9, 0x93, 0xd9, 0xbd, 0xda, 0x94, 0xd9, 0xbd, - 0xda, 0x94, 0xd9, 0xbd, 0xda, 0x94, 0xd9, 0xbd, 0xda, 0x94, 0xd9, 0xbd, - 0xdb, 0x94, 0xd9, 0xbd, 0xdb, 0x94, 0xd9, 0xbd, 0xdb, 0x94, 0xd9, 0xbd, - 0xdb, 0x94, 0xd9, 0xbd, 0xdc, 0x94, 0xd9, 0xbd, 0xdc, 0x94, 0xd9, 0xbd, - 0xdc, 0x94, 0xdc, 0xbd, 0xdd, 0x95, 0xdc, 0xbd, 0xdd, 0x95, 0xdc, 0xbd, - 0xdd, 0x95, 0xdc, 0xbd, 0xdd, 0x95, 0xdc, 0xbd, 0xde, 0x95, 0xdc, 0xbd, - 0xde, 0x95, 0xdc, 0xbd, 0xde, 0x95, 0xdc, 0xbd, 0xde, 0x95, 0xdc, 0xbd, - 0xdf, 0x95, 0xdc, 0xbd, 0xdf, 0x95, 0xdc, 0xbd, 0xdf, 0x95, 0xdf, 0xbd, - 0xdf, 0x96, 0xdf, 0xbd, 0xe0, 0x96, 0xea, 0xbd, 0xe0, 0x82, 0xea, 0xbd, - 0xe0, 0x86, 0xea, 0xbd, 0xe1, 0x82, 0xea, 0xbd, 0xe1, 0x86, 0xea, 0xbd, - 0xe1, 0x82, 0xea, 0xbd, 0xe1, 0x86, 0xea, 0xbd, 0xe2, 0x82, 0xea, 0xbd, - 0xe2, 0x86, 0xea, 0xbd, 0xe2, 0x82, 0xea, 0xbd, 0xe2, 0x86, 0xea, 0xbd, - 0xe3, 0x82, 0xea, 0xbd, 0xe3, 0x86, 0xea, 0xbd, 0xe3, 0x82, 0xea, 0xbd, - 0xe3, 0x86, 0xea, 0xbd, 0xe4, 0x82, 0xea, 0xbd, 0xe4, 0x86, 0xea, 0xbd, - 0xe4, 0x82, 0xea, 0xbd, 0xe4, 0x86, 0xea, 0xbd, 0xe5, 0x82, 0xea, 0xbd, - 0xe5, 0x86, 0xea, 0xbd, 0xe5, 0x82, 0xea, 0xbd, 0xe5, 0x86, 0xea, 0xbd, - 0xe6, 0x82, 0xea, 0xbd, 0xe6, 0x86, 0xea, 0xbd, 0xe6, 0x82, 0xea, 0xbd, - 0xe6, 0x82, 0xea, 0xbd, 0xe7, 0x82, 0xea, 0xbd, 0xe7, 0x82, 0xea, 0xbd, - 0xe7, 0x82, 0xea, 0xbd, 0xe7, 0x82, 0xea, 0xbd, 0xe8, 0x82, 0xea, 0xbd, - 0xe8, 0x82, 0xea, 0xbd, 0xe8, 0x82, 0xea, 0xbd, 0xe8, 0x82, 0xea, 0xbd, - 0xe9, 0x82, 0xea, 0xbd, 0xe9, 0x82, 0xea, 0xbd, 0xe9, 0x82, 0xea, 0xbd, - 0xe9, 0x82, 0xea, 0xbd, 0xea, 0x82, 0xea, 0xbd, 0xea, 0x82, 0xea, 0xbd, - 0xea, 0x82, 0xea, 0xbd, 0xea, 0x82, 0xeb, 0xbd, 0xea, 0x82, 0xeb, 0xbd, - 0xea, 0x82, 0xeb, 0xbd, 0xea, 0x82, 0xeb, 0xbd, 0xea, 0x82, 0xec, 0xbd, - 0xea, 0x82, 0xec, 0xbd, 0xea, 0x82, 0xec, 0xbd, 0xea, 0x82, 0xec, 0xbd, - 0xea, 0x82, 0xec, 0xbd, 0xea, 0x82, 0xed, 0xbd, 0xea, 0x82, 0xed, 0xbd, - 0xea, 0x82, 0xed, 0xbd, 0xea, 0x82, 0xed, 0xbd, 0xea, 0x82, 0xee, 0xbd, - 0xea, 0x82, 0xee, 0xbd, 0xea, 0x82, 0xee, 0xbd, 0xea, 0x82, 0xee, 0xbd, - 0xea, 0x82, 0xef, 0xbd, 0xea, 0x82, 0xef, 0xbd, 0xea, 0x82, 0xef, 0xbd, - 0xea, 0x82, 0xef, 0xbd, 0xea, 0x82, 0xf0, 0xbd, 0xea, 0x82, 0xf0, 0xbe, - 0xf5, 0x82, 0xf0, 0xbd, 0xf5, 0x82, 0xf0, 0xbe, 0xf5, 0x82, 0xf1, 0xbd, - 0xf5, 0x82, 0xf1, 0xbe, 0xf5, 0x82, 0xf1, 0xbd, 0xf5, 0x82, 0xf1, 0xbe, - 0xf5, 0x82, 0xf2, 0xbd, 0xf5, 0x82, 0xf2, 0xbe, 0xf5, 0x82, 0xf2, 0xbd, - 0xf5, 0x82, 0xf2, 0xbe, 0xf5, 0x82, 0xf2, 0xbd, 0xf5, 0x82, 0xf3, 0xbe, - 0xf5, 0x82, 0xf3, 0xbd, 0xf5, 0x82, 0xf3, 0xbe, 0xf5, 0x82, 0xf3, 0xbd, - 0xf5, 0x82, 0xf4, 0xbe, 0xf5, 0x82, 0xf4, 0xbd, 0xf5, 0x82, 0xf4, 0xbe, - 0xf5, 0x82, 0xf4, 0xbd, 0xf5, 0x82, 0xf5, 0xbe, 0xf5, 0x82, 0xf5, 0xbd, - 0xf5, 0x82, 0xf5, 0xbd, 0xf5, 0x82, 0xf5, 0xbd, 0xf5, 0x82, 0xf5, 0xbd, - 0xf5, 0x82, 0xf5, 0xbd, 0xf6, 0x82, 0xf5, 0xbd, 0xf6, 0x82, 0xf5, 0xbd, - 0xf6, 0x82, 0xf5, 0xbd, 0xf6, 0x82, 0xf5, 0xbd, 0xf7, 0x82, 0xf5, 0xbd, - 0xf7, 0x82, 0xf9, 0xbd, 0xf7, 0x82, 0xf9, 0xbd, 0xf7, 0x83, 0xf9, 0xbd, - 0xf8, 0x82, 0xf9, 0xbd, 0xf8, 0x83, 0xf9, 0xbd, 0xf8, 0x82, 0xf9, 0xbd, - 0xf8, 0x83, 0xf9, 0xbd, 0xf8, 0x82, 0xf9, 0xbd, 0xf9, 0x82, 0xf9, 0xbd, - 0xf8, 0x82, 0xf9, 0xbd, 0xf9, 0x82, 0xf9, 0xbd, 0xf8, 0x82, 0xfa, 0xbd, - 0xf9, 0x82, 0xfa, 0xbd, 0xf8, 0x82, 0xfa, 0xbd, 0xf9, 0x82, 0xfa, 0xbd, - 0xf8, 0x82, 0xfa, 0xbd, 0xf9, 0x82, 0xfb, 0xbb, 0xf9, 0x82, 0xfb, 0xbd, - 0xf9, 0x82, 0xfb, 0xbb, 0xf9, 0x82, 0xfb, 0xbd, 0xf9, 0x82, 0xfc, 0xbb, - 0xf9, 0x82, 0xfc, 0xbd, 0xf9, 0x82, 0xfc, 0xbb, 0xf9, 0x82, 0xfc, 0xbd, - 0xf9, 0x82, 0xfc, 0xbb, 0xf9, 0x82, 0xfd, 0xbd, 0xf9, 0x82, 0xfd, 0xbb, - 0xf9, 0x82, 0xfd, 0xbd, 0xf9, 0x82, 0xfd, 0xbb, 0xf9, 0x82, 0xfe, 0xbd, - 0xf9, 0x82, 0xfe, 0xbb, 0xf9, 0x82, 0xfe, 0xbd, 0xf9, 0x82, 0xfe, 0xbb, - 0xf9, 0x82, 0xfe, 0xbd, 0xf9, 0x82, 0xff, 0xbb, 0xf9, 0x82, 0xff, 0xbd, - 0xf9, 0x82, 0x03, 0xc5, 0x90, 0x83, 0x0a, 0xc3, 0x90, 0x83, 0x0f, 0xc5, - 0x90, 0x83, 0x14, 0xc3, 0x90, 0x83, 0x17, 0xc5, 0x90, 0x83, 0x1b, 0xc3, - 0x90, 0x83, 0x1e, 0xc5, 0x90, 0x83, 0x20, 0xc3, 0x90, 0x83, 0x23, 0xc5, - 0x90, 0x83, 0x25, 0xc3, 0x90, 0x83, 0x27, 0xc5, 0x90, 0x83, 0x29, 0xc3, - 0x90, 0x83, 0x2b, 0xc5, 0x90, 0x83, 0x2d, 0xc3, 0x90, 0x83, 0x2f, 0xc5, - 0x90, 0x83, 0x31, 0xc3, 0x90, 0x83, 0x32, 0xc5, 0x90, 0x83, 0x34, 0xc3, - 0x90, 0x83, 0x35, 0xc5, 0x90, 0x83, 0x37, 0xc3, 0x90, 0x83, 0x38, 0xc5, - 0x90, 0x83, 0x3a, 0xc3, 0x90, 0x83, 0x3b, 0xc5, 0x90, 0x83, 0x3c, 0xc3, - 0x90, 0x83, 0x3e, 0xc1, 0x91, 0x83, 0x3f, 0xc3, 0x90, 0x83, 0x40, 0xc1, - 0x91, 0x83, 0x42, 0xc3, 0x90, 0x83, 0x43, 0xc1, 0x91, 0x83, 0x44, 0xc3, - 0x90, 0x83, 0x45, 0xc1, 0x91, 0x83, 0x46, 0xc3, 0x90, 0x83, 0x47, 0xc1, - 0x91, 0x83, 0x48, 0xc3, 0x90, 0x83, 0x49, 0xc1, 0x91, 0x83, 0x4a, 0xc3, - 0x90, 0x83, 0x4b, 0xc1, 0x91, 0x83, 0x4c, 0xc3, 0x90, 0x83, 0x4d, 0xc1, - 0x91, 0x83, 0x4e, 0xc3, 0x90, 0x83, 0x4f, 0xc1, 0x91, 0x83, 0x50, 0xc3, - 0x90, 0x83, 0x51, 0xc1, 0x91, 0x83, 0x52, 0xc3, 0x90, 0x83, 0x53, 0xc1, - 0x91, 0x83, 0x54, 0xc3, 0x90, 0x83, 0x55, 0xc1, 0x91, 0x83, 0x56, 0xc3, - 0x90, 0x83, 0x57, 0xc1, 0x91, 0x83, 0x58, 0xc3, 0x90, 0x83, 0x58, 0xc1, - 0x91, 0x83, 0x59, 0xc3, 0x90, 0x83, 0x5a, 0xc1, 0x91, 0x83, 0x5b, 0xc3, - 0x90, 0x83, 0x5c, 0xc1, 0x91, 0x83, 0x5d, 0xc3, 0x90, 0x83, 0x5d, 0xc1, - 0x91, 0x83, 0x5e, 0xc3, 0x90, 0x83, 0x5f, 0xc1, 0x91, 0x83, 0x60, 0xc3, - 0x90, 0x83, 0x60, 0xc1, 0x91, 0x83, 0x61, 0xc3, 0x90, 0x83, 0x62, 0xc1, - 0x91, 0x83, 0x63, 0xc3, 0x90, 0x83, 0x63, 0xc1, 0x91, 0x83, 0x64, 0xc3, - 0x90, 0x83, 0x65, 0xc1, 0x91, 0x83, 0x66, 0xc3, 0x90, 0x83, 0x66, 0xc1, - 0x91, 0x83, 0x67, 0xc3, 0x90, 0x83, 0x68, 0xc1, 0x91, 0x83, 0x68, 0xc3, - 0x90, 0x83, 0x69, 0xc1, 0x91, 0x83, 0x6a, 0xc3, 0x90, 0x83, 0x6a, 0xc1, - 0x91, 0x83, 0x6b, 0xc3, 0x90, 0x83, 0x6c, 0xc1, 0x91, 0x83, 0x6c, 0xc3, - 0x90, 0x83, 0x6d, 0xc1, 0x91, 0x83, 0x6e, 0xc3, 0x90, 0x83, 0x6e, 0xc1, - 0x91, 0x83, 0x6f, 0xc3, 0x90, 0x83, 0x70, 0xc1, 0x91, 0x83, 0x70, 0xc3, - 0x90, 0x83, 0x71, 0xc1, 0x91, 0x83, 0x72, 0xbf, 0x91, 0x83, 0x72, 0xc1, - 0x91, 0x83, 0x73, 0xbf, 0x91, 0x83, 0x73, 0xc1, 0x91, 0x83, 0x74, 0xbf, - 0x91, 0x83, 0x75, 0xc1, 0x91, 0x83, 0x75, 0xbf, 0x91, 0x83, 0x76, 0xc1, - 0x91, 0x83, 0x76, 0xbf, 0x91, 0x83, 0x77, 0xc1, 0x91, 0x83, 0x78, 0xbf, - 0x91, 0x83, 0x78, 0xc1, 0x91, 0x83, 0x79, 0xbf, 0x91, 0x83, 0x79, 0xc1, - 0x91, 0x83, 0x7a, 0xbf, 0x91, 0x83, 0x7a, 0xc1, 0x91, 0x83, 0x7b, 0xbf, - 0x91, 0x83, 0x7c, 0xc1, 0x91, 0x83, 0x7c, 0xbf, 0x91, 0x83, 0x7d, 0xc1, - 0x91, 0x83, 0x7d, 0xbf, 0x91, 0x83, 0x7e, 0xc1, 0x91, 0x83, 0x7e, 0xbf, - 0x91, 0x83, 0x7f, 0xc1, 0x91, 0x83, 0x7f, 0xbf, 0x91, 0x83, 0x80, 0xc1, - 0x91, 0x83, 0x81, 0xbf, 0x91, 0x83, 0x81, 0xc1, 0x91, 0x83, 0x82, 0xbf, - 0x91, 0x83, 0x82, 0xc1, 0x91, 0x83, 0x83, 0xbf, 0x91, 0x83, 0x83, 0xc1, - 0x91, 0x83, 0x84, 0xbf, 0x91, 0x83, 0x84, 0xc1, 0x91, 0x83, 0x85, 0xbf, - 0x91, 0x83, 0x85, 0xc1, 0x91, 0x83, 0x86, 0xbf, 0x91, 0x83, 0x86, 0xbe, - 0x92, 0x83, 0x87, 0xbf, 0x91, 0x83, 0x87, 0xbe, 0x92, 0x83, 0x88, 0xbf, - 0x91, 0x83, 0x88, 0xbe, 0x92, 0x83, 0x89, 0xbf, 0x91, 0x83, 0x89, 0xbe, - 0x92, 0x83, 0x8a, 0xbf, 0x91, 0x83, 0x8a, 0xbe, 0x92, 0x83, 0x8b, 0xbf, - 0x91, 0x83, 0x8b, 0xbe, 0x92, 0x83, 0x8c, 0xbf, 0x91, 0x83, 0x8c, 0xbe, - 0x92, 0x83, 0x8d, 0xbf, 0x91, 0x83, 0x8d, 0xbe, 0x92, 0x83, 0x8e, 0xbf, - 0x91, 0x83, 0x8e, 0xbe, 0x92, 0x83, 0x8e, 0xbf, 0x91, 0x83, 0x8f, 0xbe, - 0x92, 0x83, 0x8f, 0xbf, 0x91, 0x83, 0x90, 0xbe, 0x92, 0x83, 0x90, 0xbe, - 0x92, 0x83, 0x91, 0xbe, 0x92, 0x83, 0x91, 0xbe, 0x92, 0x83, 0x91, 0xbe, - 0x92, 0x83, 0x91, 0xbe, 0x92, 0x83, 0x91, 0xbe, 0x93, 0x83, 0x91, 0xbe, - 0x93, 0x83, 0x95, 0xbe, 0x94, 0x83, 0x95, 0xbe, 0x94, 0x84, 0x95, 0xbe, - 0x94, 0x83, 0x96, 0xbe, 0x95, 0x83, 0x95, 0xbe, 0x94, 0x83, 0x96, 0xbe, - 0x95, 0x83, 0x96, 0xbe, 0x94, 0x83, 0x97, 0xbe, 0x95, 0x83, 0x97, 0xbc, - 0x95, 0x83, 0x98, 0xbc, 0x98, 0x83, 0x98, 0xbc, 0x98, 0x83, 0x98, 0xbc, - 0x98, 0x83, 0x99, 0xbc, 0x99, 0x83, 0x99, 0xbc, 0x99, 0x83, 0x9a, 0xbc, - 0x9a, 0x83, 0x9a, 0xbc, 0x9a, 0x83, 0x9a, 0xbc, 0x9c, 0x83, 0x9b, 0xbc, - 0x9d, 0x83, 0x9b, 0xbc, 0x9c, 0x83, 0x9c, 0xbc, 0x9d, 0x83, 0x9c, 0xbc, - 0x9c, 0x83, 0x9d, 0xbc, 0x9d, 0x83, 0x9d, 0xbc, 0x9d, 0x83, 0x9d, 0xbc, - 0x9d, 0x83, 0x9e, 0xbc, 0x9e, 0x83, 0x9e, 0xbc, 0x9e, 0x83, 0x9f, 0xbc, - 0x9f, 0x83, 0x9f, 0xbc, 0x9f, 0x83, 0x9f, 0xbc, 0x9f, 0x83, 0xa0, 0xbd, - 0xa1, 0x83, 0xa0, 0xbd, 0xa1, 0x83, 0xa1, 0xbd, 0xa1, 0x83, 0xa1, 0xbd, - 0xa1, 0x83, 0xa1, 0xbd, 0xa1, 0x83, 0xa2, 0xbd, 0xa2, 0x83, 0xa2, 0xbd, - 0xa2, 0x83, 0xa3, 0xbd, 0xa3, 0x83, 0xa3, 0xbd, 0xa3, 0x83, 0xa3, 0xbd, - 0xa3, 0x83, 0xa4, 0xbd, 0xa4, 0x83, 0xa4, 0xbd, 0xa4, 0x83, 0xa5, 0xbd, - 0xa5, 0x83, 0xa5, 0xbe, 0xa5, 0x84, 0xa5, 0xbe, 0xa5, 0x84, 0xa6, 0xbe, - 0xa6, 0x84, 0xa6, 0xbe, 0xa6, 0x84, 0xa6, 0xbe, 0xa6, 0x84, 0xa6, 0xbe, - 0xa7, 0x84, 0xa6, 0xbe, 0xa7, 0x84, 0xa6, 0xbe, 0xa8, 0x84, 0xa6, 0xbe, - 0xa8, 0x84, 0xa6, 0xbe, 0xa8, 0x84, 0xa9, 0xbe, 0xa9, 0x7f, 0xa9, 0xbe, - 0xa9, 0x7f, 0xa9, 0xbe, 0xaa, 0x7f, 0xa9, 0xbe, 0xaa, 0x7f, 0xa9, 0xbe, - 0xaa, 0x7f, 0xa9, 0xbe, 0xab, 0x7f, 0xa9, 0xbe, 0xab, 0x7f, 0xa9, 0xbe, - 0xab, 0x7f, 0xa9, 0xbe, 0xac, 0x7f, 0xa9, 0xbe, 0xac, 0x7f, 0xaa, 0xbe, - 0xac, 0x7e, 0xa9, 0xbe, 0xad, 0x7f, 0xaa, 0xbe, 0xad, 0x7e, 0xa9, 0xbe, - 0xae, 0x7f, 0xaa, 0xbe, 0xae, 0x7e, 0xa9, 0xbe, 0xae, 0x7f, 0xaa, 0xbe, - 0xaf, 0x7e, 0xa9, 0xbe, 0xaf, 0x7f, 0xaa, 0xbe, 0xaf, 0x7e, 0xa9, 0xbe, - 0xb0, 0x7f, 0xaa, 0xbe, 0xb0, 0x7e, 0xa9, 0xbe, 0xb0, 0x7f, 0xaa, 0xbe, - 0xb1, 0x7e, 0xa9, 0xbe, 0xb1, 0x7f, 0xaa, 0xbe, 0xb2, 0x7e, 0xa9, 0xbe, - 0xb2, 0x7f, 0xaa, 0xbe, 0xb2, 0x7e, 0xa9, 0xbe, 0xb3, 0x7f, 0xaa, 0xbe, - 0xb3, 0x7e, 0xa9, 0xbe, 0xb3, 0x7f, 0xaa, 0xbe, 0xb4, 0x7e, 0xa9, 0xbe, - 0xb4, 0x7f, 0xaa, 0xbe, 0xb4, 0x7e, 0xa9, 0xbe, 0xb5, 0x7f, 0xaa, 0xbe, - 0xb5, 0x7e, 0xb8, 0xbe, 0xb5, 0x72, 0xb8, 0xbe, 0xb6, 0x72, 0xb8, 0xbe, - 0xb6, 0x72, 0xb8, 0xbe, 0xb6, 0x72, 0xb8, 0xbe, 0xb7, 0x72, 0xb8, 0xbe, - 0xb7, 0x72, 0xb8, 0xbe, 0xb7, 0x72, 0xb8, 0xbe, 0xb8, 0x72, 0xbb, 0xbe, - 0xb8, 0x73, 0xbc, 0xbe, 0xb8, 0x73, 0xbb, 0xbe, 0xb9, 0x73, 0xbc, 0xbe, - 0xb9, 0x73, 0xbb, 0xbe, 0xb9, 0x73, 0xbc, 0xbe, 0xba, 0x73, 0xbb, 0xbe, - 0xba, 0x73, 0xbc, 0xbe, 0xba, 0x73, 0xbb, 0xbe, 0xbb, 0x73, 0xbc, 0xbe, - 0xbb, 0x73, 0xbb, 0xbe, 0xbb, 0x73, 0xbf, 0xbe, 0xbc, 0x74, 0xbf, 0xbe, - 0xbc, 0x74, 0xbf, 0xbe, 0xbc, 0x74, 0xbf, 0xbe, 0xbd, 0x74, 0xbf, 0xbe, - 0xbd, 0x74, 0xbf, 0xbe, 0xbd, 0x74, 0xbf, 0xbe, 0xbe, 0x74, 0xbf, 0xbe, - 0xbe, 0x74, 0xbf, 0xbe, 0xbe, 0x74, 0xbf, 0xbe, 0xbf, 0x74, 0xbf, 0xbe, - 0xbf, 0x74, 0xc2, 0xbe, 0xbf, 0x75, 0xc3, 0xbe, 0xc0, 0x75, 0xc2, 0xbe, - 0xc0, 0x75, 0xc3, 0xbe, 0xc0, 0x75, 0xc2, 0xbe, 0xc1, 0x75, 0xc3, 0xbe, - 0xc1, 0x75, 0xc2, 0xbe, 0xc1, 0x75, 0xc3, 0xbe, 0xc1, 0x75, 0xc2, 0xbe, - 0xc2, 0x75, 0xc3, 0xbe, 0xc2, 0x75, 0xc2, 0xbe, 0xc2, 0x75, 0xc3, 0xbe, - 0xc3, 0x75, 0xc6, 0xbe, 0xc3, 0x76, 0xc6, 0xbe, 0xc3, 0x76, 0xc6, 0xbe, - 0xc4, 0x76, 0xc6, 0xbe, 0xc4, 0x76, 0xc6, 0xbe, 0xc4, 0x76, 0xc6, 0xbe, - 0xc5, 0x76, 0xc6, 0xbe, 0xc5, 0x76, 0xc6, 0xbe, 0xc5, 0x76, 0xc6, 0xbe, - 0xc6, 0x76, 0xc6, 0xbe, 0xc6, 0x76, 0xc6, 0xbe, 0xc6, 0x76, 0xc6, 0xbe, - 0xc6, 0x76, 0xc7, 0xbe, 0xc7, 0x76, 0xc9, 0xbe, 0xc7, 0x77, 0xca, 0xbe, - 0xc7, 0x77, 0xc9, 0xbe, 0xc8, 0x77, 0xca, 0xbe, 0xc8, 0x77, 0xc9, 0xbe, - 0xc8, 0x77, 0xca, 0xbe, 0xc9, 0x77, 0xc9, 0xbe, 0xc9, 0x77, 0xca, 0xbe, - 0xc9, 0x77, 0xc9, 0xbe, 0xc9, 0x77, 0xca, 0xbe, 0xca, 0x77, 0xca, 0xbe, - 0xca, 0x77, 0xcd, 0xbe, 0xca, 0x78, 0xcd, 0xbe, 0xcb, 0x78, 0xcd, 0xbe, - 0xcb, 0x78, 0xcd, 0xbe, 0xcb, 0x78, 0xcd, 0xbe, 0xcc, 0x78, 0xcd, 0xbe, - 0xcc, 0x78, 0xcd, 0xbe, 0xcc, 0x78, 0xcd, 0xbe, 0xcc, 0x78, 0xcd, 0xbe, - 0xcd, 0x78, 0xcd, 0xbe, 0xcd, 0x78, 0xcd, 0xbe, 0xcd, 0x78, 0xce, 0xbe, - 0xce, 0x78, 0xce, 0xbe, 0xce, 0x78, 0xce, 0xbe, 0xce, 0x78, 0xce, 0xbe, - 0xce, 0x78, 0xce, 0xbe, 0xcf, 0x78, 0xce, 0xbe, 0xcf, 0x78, 0xce, 0xbe, - 0xcf, 0x78, 0xce, 0xbe, 0xd0, 0x78, 0xce, 0xbe, 0xd0, 0x78, 0xce, 0xbe, - 0xd0, 0x78, 0xce, 0xbe, 0xd0, 0x78, 0xce, 0xbe, 0xd1, 0x78, 0xce, 0xbe, - 0xd1, 0x78, 0xce, 0xbe, 0xd1, 0x78, 0xce, 0xbe, 0xd2, 0x78, 0xce, 0xbe, - 0xd2, 0x78, 0xce, 0xbe, 0xd2, 0x78, 0xce, 0xbe, 0xd2, 0x78, 0xce, 0xbe, - 0xd3, 0x78, 0xce, 0xbe, 0xd3, 0x78, 0xce, 0xbe, 0xd3, 0x78, 0xce, 0xbe, - 0xd4, 0x78, 0xce, 0xbe, 0xd4, 0x78, 0xce, 0xbe, 0xd4, 0x78, 0xce, 0xbe, - 0xd4, 0x78, 0xce, 0xbe, 0xd5, 0x78, 0xd4, 0xbe, 0xd5, 0x93, 0xd5, 0xbe, - 0xd5, 0x93, 0xd4, 0xbe, 0xd6, 0x93, 0xd5, 0xbe, 0xd6, 0x93, 0xd4, 0xbe, - 0xd6, 0x93, 0xd5, 0xbe, 0xd6, 0x93, 0xd4, 0xbe, 0xd7, 0x93, 0xd5, 0xbe, - 0xd7, 0x93, 0xd4, 0xbe, 0xd7, 0x93, 0xd5, 0xbe, 0xd7, 0x93, 0xd8, 0xbe, - 0xd8, 0x94, 0xd7, 0xbe, 0xd8, 0x94, 0xd8, 0xbe, 0xd8, 0x94, 0xd7, 0xbe, - 0xd9, 0x94, 0xd8, 0xbe, 0xd9, 0x94, 0xd7, 0xbe, 0xd9, 0x94, 0xd8, 0xbe, - 0xd9, 0x94, 0xd7, 0xbe, 0xda, 0x94, 0xd8, 0xbe, 0xda, 0x94, 0xd7, 0xbe, - 0xda, 0x94, 0xd8, 0xbe, 0xda, 0x94, 0xdb, 0xbe, 0xdb, 0x95, 0xd8, 0xbe, - 0xdb, 0x94, 0xdb, 0xbe, 0xdb, 0x95, 0xda, 0xbe, 0xdb, 0x95, 0xdb, 0xbe, - 0xdc, 0x95, 0xda, 0xbe, 0xdc, 0x95, 0xdb, 0xbe, 0xdc, 0x95, 0xda, 0xbe, - 0xdd, 0x95, 0xdb, 0xbe, 0xdd, 0x95, 0xda, 0xbe, 0xdd, 0x95, 0xdb, 0xbe, - 0xdd, 0x95, 0xda, 0xbe, 0xde, 0x95, 0xdb, 0xbe, 0xde, 0x95, 0xde, 0xbe, - 0xde, 0x96, 0xdd, 0xbe, 0xde, 0x96, 0xde, 0xbe, 0xdf, 0x96, 0xdd, 0xbe, - 0xdf, 0x96, 0xde, 0xbe, 0xdf, 0x96, 0xdd, 0xbe, 0xdf, 0x96, 0xde, 0xbe, - 0xe0, 0x96, 0xdd, 0xbe, 0xe0, 0x96, 0xea, 0xbe, 0xe0, 0x86, 0xea, 0xbe, - 0xe1, 0x83, 0xea, 0xbe, 0xe1, 0x86, 0xea, 0xbe, 0xe1, 0x83, 0xea, 0xbe, - 0xe1, 0x86, 0xea, 0xbe, 0xe2, 0x83, 0xea, 0xbe, 0xe2, 0x86, 0xea, 0xbe, - 0xe2, 0x83, 0xea, 0xbe, 0xe2, 0x86, 0xea, 0xbe, 0xe3, 0x83, 0xea, 0xbe, - 0xe3, 0x86, 0xea, 0xbe, 0xe3, 0x83, 0xea, 0xbe, 0xe3, 0x86, 0xea, 0xbe, - 0xe4, 0x83, 0xea, 0xbe, 0xe4, 0x86, 0xea, 0xbe, 0xe4, 0x83, 0xea, 0xbe, - 0xe4, 0x86, 0xea, 0xbe, 0xe5, 0x83, 0xea, 0xbe, 0xe5, 0x86, 0xea, 0xbe, - 0xe5, 0x83, 0xea, 0xbe, 0xe5, 0x86, 0xea, 0xbe, 0xe6, 0x83, 0xea, 0xbe, - 0xe6, 0x86, 0xea, 0xbe, 0xe6, 0x83, 0xea, 0xbe, 0xe6, 0x86, 0xea, 0xbe, - 0xe7, 0x83, 0xea, 0xbe, 0xe7, 0x86, 0xea, 0xbe, 0xe7, 0x83, 0xea, 0xbe, - 0xe7, 0x86, 0xea, 0xbe, 0xe8, 0x83, 0xea, 0xbe, 0xe8, 0x86, 0xea, 0xbe, - 0xe8, 0x83, 0xea, 0xbe, 0xe8, 0x83, 0xea, 0xbe, 0xe9, 0x83, 0xea, 0xbe, - 0xe9, 0x83, 0xea, 0xbe, 0xe9, 0x83, 0xea, 0xbe, 0xe9, 0x83, 0xea, 0xbe, - 0xea, 0x83, 0xea, 0xbe, 0xea, 0x83, 0xea, 0xbd, 0xea, 0x83, 0xea, 0xbe, - 0xea, 0x83, 0xeb, 0xbd, 0xea, 0x83, 0xeb, 0xbe, 0xea, 0x83, 0xeb, 0xbd, - 0xea, 0x83, 0xeb, 0xbe, 0xea, 0x83, 0xec, 0xbd, 0xea, 0x83, 0xec, 0xbe, - 0xea, 0x83, 0xec, 0xbd, 0xea, 0x83, 0xec, 0xbe, 0xea, 0x83, 0xec, 0xbd, - 0xea, 0x83, 0xed, 0xbe, 0xea, 0x83, 0xed, 0xbd, 0xea, 0x83, 0xed, 0xbe, - 0xea, 0x83, 0xed, 0xbd, 0xea, 0x83, 0xee, 0xbe, 0xea, 0x83, 0xee, 0xbd, - 0xea, 0x83, 0xee, 0xbe, 0xea, 0x83, 0xee, 0xbd, 0xea, 0x83, 0xef, 0xbe, - 0xea, 0x83, 0xef, 0xbd, 0xea, 0x83, 0xef, 0xbe, 0xea, 0x83, 0xef, 0xbd, - 0xea, 0x83, 0xf0, 0xc5, 0xf0, 0x83, 0xf0, 0xbe, 0xf5, 0x83, 0xf0, 0xbe, - 0xf5, 0x83, 0xf0, 0xbe, 0xf5, 0x83, 0xf1, 0xbe, 0xf5, 0x83, 0xf1, 0xbe, - 0xf5, 0x83, 0xf1, 0xbe, 0xf5, 0x83, 0xf1, 0xbe, 0xf5, 0x83, 0xf2, 0xbe, - 0xf5, 0x83, 0xf2, 0xbe, 0xf5, 0x83, 0xf2, 0xbe, 0xf5, 0x83, 0xf2, 0xbe, - 0xf5, 0x83, 0xf2, 0xbe, 0xf5, 0x83, 0xf3, 0xbe, 0xf5, 0x83, 0xf3, 0xbe, - 0xf5, 0x83, 0xf3, 0xbe, 0xf5, 0x83, 0xf3, 0xbe, 0xf5, 0x83, 0xf4, 0xbe, - 0xf5, 0x83, 0xf4, 0xbe, 0xf5, 0x83, 0xf4, 0xbe, 0xf5, 0x83, 0xf4, 0xbe, - 0xf5, 0x83, 0xf5, 0xbe, 0xf5, 0x83, 0xf5, 0xbe, 0xf5, 0x83, 0xf5, 0xbe, - 0xf5, 0x83, 0xf5, 0xbe, 0xf5, 0x83, 0xf5, 0xbe, 0xf5, 0x83, 0xf5, 0xbe, - 0xf6, 0x83, 0xf5, 0xbe, 0xf6, 0x83, 0xf5, 0xbe, 0xf6, 0x83, 0xf5, 0xbe, - 0xf6, 0x83, 0xf5, 0xbe, 0xf7, 0x83, 0xf5, 0xbe, 0xf7, 0x83, 0xf9, 0xbe, - 0xf7, 0x83, 0xf9, 0xbe, 0xf7, 0x83, 0xf9, 0xbe, 0xf8, 0x83, 0xf9, 0xbe, - 0xf8, 0x83, 0xf9, 0xbe, 0xf8, 0x83, 0xf9, 0xbe, 0xf8, 0x83, 0xf9, 0xbe, - 0xf8, 0x83, 0xf9, 0xbd, 0xf9, 0x83, 0xf9, 0xbe, 0xf8, 0x83, 0xf9, 0xbd, - 0xf9, 0x83, 0xf9, 0xbe, 0xf8, 0x83, 0xfa, 0xbd, 0xf9, 0x83, 0xfa, 0xbe, - 0xf8, 0x83, 0xfa, 0xbd, 0xf9, 0x83, 0xfa, 0xbe, 0xf8, 0x83, 0xfa, 0xbd, - 0xf9, 0x83, 0xfb, 0xbe, 0xf8, 0x83, 0xfb, 0xbd, 0xf9, 0x83, 0xfb, 0xbe, - 0xf8, 0x83, 0xfb, 0xbd, 0xf9, 0x83, 0xfc, 0xbe, 0xf8, 0x83, 0xfc, 0xbd, - 0xf9, 0x83, 0xfc, 0xbe, 0xf8, 0x83, 0xfc, 0xbd, 0xf9, 0x83, 0xfc, 0xbb, - 0xf9, 0x83, 0xfd, 0xbd, 0xf9, 0x83, 0xfd, 0xbb, 0xf9, 0x83, 0xfd, 0xbd, - 0xf9, 0x83, 0xfd, 0xbb, 0xf9, 0x83, 0xfe, 0xbd, 0xf9, 0x83, 0xfe, 0xbb, - 0xf9, 0x83, 0xfe, 0xbd, 0xf9, 0x83, 0xfe, 0xbb, 0xf9, 0x83, 0xfe, 0xbd, - 0xf9, 0x83, 0xff, 0xbd, 0xf9, 0x83, 0xff, 0xbd, 0xf9, 0x83, 0x03, 0xc5, - 0x90, 0x83, 0x0a, 0xc3, 0x90, 0x83, 0x0f, 0xc5, 0x90, 0x83, 0x14, 0xc3, - 0x90, 0x83, 0x17, 0xc5, 0x90, 0x83, 0x1b, 0xc3, 0x90, 0x83, 0x1e, 0xc5, - 0x90, 0x83, 0x20, 0xc3, 0x90, 0x83, 0x23, 0xc5, 0x90, 0x83, 0x25, 0xc3, - 0x90, 0x83, 0x27, 0xc5, 0x90, 0x83, 0x29, 0xc3, 0x90, 0x83, 0x2b, 0xc5, - 0x90, 0x83, 0x2d, 0xc3, 0x90, 0x83, 0x2f, 0xc5, 0x90, 0x83, 0x31, 0xc3, - 0x90, 0x83, 0x32, 0xc5, 0x90, 0x83, 0x34, 0xc3, 0x90, 0x83, 0x35, 0xc5, - 0x90, 0x83, 0x37, 0xc3, 0x90, 0x83, 0x38, 0xc5, 0x90, 0x83, 0x3a, 0xc3, - 0x90, 0x83, 0x3b, 0xc5, 0x90, 0x83, 0x3c, 0xc3, 0x90, 0x83, 0x3e, 0xc5, - 0x90, 0x83, 0x3f, 0xc3, 0x90, 0x83, 0x40, 0xc5, 0x90, 0x83, 0x42, 0xc3, - 0x90, 0x83, 0x43, 0xc5, 0x90, 0x83, 0x44, 0xc3, 0x90, 0x83, 0x45, 0xc5, - 0x90, 0x83, 0x46, 0xc3, 0x90, 0x83, 0x47, 0xc5, 0x90, 0x83, 0x48, 0xc3, - 0x90, 0x83, 0x49, 0xc5, 0x90, 0x83, 0x4a, 0xc3, 0x90, 0x83, 0x4b, 0xc5, - 0x90, 0x83, 0x4c, 0xc3, 0x90, 0x83, 0x4d, 0xc5, 0x90, 0x83, 0x4e, 0xc3, - 0x90, 0x83, 0x4f, 0xc5, 0x90, 0x83, 0x50, 0xc3, 0x90, 0x83, 0x51, 0xc5, - 0x90, 0x83, 0x52, 0xc3, 0x90, 0x83, 0x53, 0xc5, 0x90, 0x83, 0x54, 0xc3, - 0x90, 0x83, 0x55, 0xc5, 0x90, 0x83, 0x56, 0xc3, 0x90, 0x83, 0x57, 0xc1, - 0x91, 0x83, 0x58, 0xc3, 0x90, 0x83, 0x58, 0xc1, 0x91, 0x83, 0x59, 0xc3, - 0x90, 0x83, 0x5a, 0xc1, 0x91, 0x83, 0x5b, 0xc3, 0x90, 0x83, 0x5c, 0xc1, - 0x91, 0x83, 0x5d, 0xc3, 0x90, 0x83, 0x5d, 0xc1, 0x91, 0x83, 0x5e, 0xc3, - 0x90, 0x83, 0x5f, 0xc1, 0x91, 0x83, 0x60, 0xc3, 0x90, 0x83, 0x60, 0xc1, - 0x91, 0x83, 0x61, 0xc3, 0x90, 0x83, 0x62, 0xc1, 0x91, 0x83, 0x63, 0xc3, - 0x90, 0x83, 0x63, 0xc1, 0x91, 0x83, 0x64, 0xc3, 0x90, 0x83, 0x65, 0xc1, - 0x91, 0x83, 0x66, 0xc3, 0x90, 0x83, 0x66, 0xc1, 0x91, 0x83, 0x67, 0xc3, - 0x90, 0x83, 0x68, 0xc1, 0x91, 0x83, 0x68, 0xc3, 0x90, 0x83, 0x69, 0xc1, - 0x91, 0x83, 0x6a, 0xc3, 0x90, 0x83, 0x6a, 0xc1, 0x91, 0x83, 0x6b, 0xc3, - 0x90, 0x83, 0x6c, 0xc1, 0x91, 0x83, 0x6c, 0xc3, 0x90, 0x83, 0x6d, 0xc1, - 0x91, 0x83, 0x6e, 0xc3, 0x90, 0x83, 0x6e, 0xc1, 0x91, 0x83, 0x6f, 0xbf, - 0x91, 0x83, 0x70, 0xc1, 0x91, 0x83, 0x70, 0xbf, 0x91, 0x83, 0x71, 0xc1, - 0x91, 0x83, 0x72, 0xbf, 0x91, 0x83, 0x72, 0xc1, 0x91, 0x83, 0x73, 0xbf, - 0x91, 0x83, 0x73, 0xc1, 0x91, 0x83, 0x74, 0xbf, 0x91, 0x83, 0x75, 0xc1, - 0x91, 0x83, 0x75, 0xbf, 0x91, 0x83, 0x76, 0xc1, 0x91, 0x83, 0x76, 0xbf, - 0x91, 0x83, 0x77, 0xc1, 0x91, 0x83, 0x78, 0xbf, 0x91, 0x83, 0x78, 0xc1, - 0x91, 0x83, 0x79, 0xbf, 0x91, 0x83, 0x79, 0xc1, 0x91, 0x83, 0x7a, 0xbf, - 0x91, 0x83, 0x7a, 0xc1, 0x91, 0x83, 0x7b, 0xbf, 0x91, 0x83, 0x7c, 0xc1, - 0x91, 0x83, 0x7c, 0xbf, 0x91, 0x83, 0x7d, 0xc1, 0x91, 0x83, 0x7d, 0xbf, - 0x91, 0x83, 0x7e, 0xc1, 0x91, 0x83, 0x7e, 0xbf, 0x91, 0x83, 0x7f, 0xc1, - 0x91, 0x83, 0x7f, 0xbf, 0x91, 0x83, 0x80, 0xc1, 0x91, 0x83, 0x81, 0xbf, - 0x91, 0x83, 0x81, 0xc1, 0x91, 0x83, 0x82, 0xbf, 0x91, 0x83, 0x82, 0xc1, - 0x91, 0x83, 0x83, 0xbf, 0x91, 0x83, 0x83, 0xc1, 0x91, 0x83, 0x84, 0xbf, - 0x91, 0x83, 0x84, 0xc1, 0x91, 0x83, 0x85, 0xbf, 0x91, 0x83, 0x85, 0xc1, - 0x91, 0x83, 0x86, 0xbf, 0x91, 0x83, 0x86, 0xbe, 0x92, 0x83, 0x87, 0xbf, - 0x91, 0x83, 0x87, 0xbe, 0x92, 0x83, 0x88, 0xbf, 0x91, 0x83, 0x88, 0xbe, - 0x92, 0x83, 0x89, 0xbf, 0x91, 0x83, 0x89, 0xbe, 0x92, 0x83, 0x8a, 0xbf, - 0x91, 0x83, 0x8a, 0xbe, 0x92, 0x83, 0x8b, 0xbf, 0x91, 0x83, 0x8b, 0xbe, - 0x92, 0x83, 0x8c, 0xbf, 0x91, 0x83, 0x8c, 0xbe, 0x92, 0x83, 0x8d, 0xbf, - 0x91, 0x83, 0x8d, 0xbe, 0x92, 0x83, 0x8e, 0xbf, 0x91, 0x83, 0x8e, 0xbe, - 0x92, 0x83, 0x8e, 0xbf, 0x91, 0x83, 0x8f, 0xbe, 0x92, 0x83, 0x8f, 0xbf, - 0x91, 0x83, 0x90, 0xbe, 0x92, 0x83, 0x90, 0xbf, 0x91, 0x83, 0x91, 0xbe, - 0x92, 0x83, 0x91, 0xbf, 0x91, 0x83, 0x91, 0xbe, 0x92, 0x83, 0x91, 0xbe, - 0x92, 0x83, 0x91, 0xbe, 0x93, 0x83, 0x91, 0xbe, 0x93, 0x83, 0x95, 0xbe, - 0x94, 0x83, 0x95, 0xbe, 0x94, 0x84, 0x95, 0xbe, 0x94, 0x83, 0x96, 0xbe, - 0x95, 0x83, 0x95, 0xbe, 0x94, 0x83, 0x96, 0xbe, 0x95, 0x83, 0x96, 0xbe, - 0x94, 0x83, 0x97, 0xbe, 0x95, 0x83, 0x97, 0xbe, 0x94, 0x83, 0x98, 0xbe, - 0x95, 0x83, 0x98, 0xbb, 0x98, 0x83, 0x98, 0xbc, 0x9a, 0x83, 0x99, 0xbc, - 0x9a, 0x83, 0x99, 0xbc, 0x9a, 0x83, 0x9a, 0xbc, 0x9a, 0x83, 0x9a, 0xbc, - 0x9a, 0x83, 0x9a, 0xbc, 0x9a, 0x83, 0x9b, 0xbc, 0x9b, 0x83, 0x9b, 0xbc, - 0x9b, 0x83, 0x9c, 0xbc, 0x9c, 0x83, 0x9c, 0xbc, 0x9c, 0x83, 0x9d, 0xbc, - 0x9d, 0x83, 0x9d, 0xbd, 0x9f, 0x83, 0x9d, 0xbd, 0x9f, 0x83, 0x9e, 0xbd, - 0x9f, 0x83, 0x9e, 0xbd, 0x9f, 0x83, 0x9f, 0xbd, 0x9f, 0x83, 0x9f, 0xbd, - 0x9f, 0x83, 0x9f, 0xbd, 0x9f, 0x83, 0xa0, 0xbd, 0xa0, 0x83, 0xa0, 0xbd, - 0xa0, 0x83, 0xa1, 0xbd, 0xa1, 0x83, 0xa1, 0xbd, 0xa1, 0x83, 0xa1, 0xbd, - 0xa1, 0x83, 0xa2, 0xbd, 0xa2, 0x83, 0xa2, 0xbd, 0xa3, 0x83, 0xa3, 0xbd, - 0xa3, 0x83, 0xa3, 0xbd, 0xa3, 0x83, 0xa3, 0xbd, 0xa3, 0x83, 0xa4, 0xbd, - 0xa4, 0x83, 0xa4, 0xbd, 0xa4, 0x83, 0xa5, 0xbd, 0xa5, 0x83, 0xa5, 0xbd, - 0xa5, 0x83, 0xa5, 0xbd, 0xa5, 0x83, 0xa6, 0xbd, 0xa6, 0x83, 0xa6, 0xbd, - 0xa6, 0x83, 0xa6, 0xbe, 0xa6, 0x83, 0xa6, 0xbe, 0xa7, 0x83, 0xa6, 0xbe, - 0xa7, 0x83, 0xa6, 0xbe, 0xa8, 0x83, 0xa6, 0xbe, 0xa8, 0x83, 0xa6, 0xbe, - 0xa8, 0x83, 0xa6, 0xbe, 0xa9, 0x83, 0xa6, 0xbe, 0xa9, 0x83, 0xa6, 0xbe, - 0xaa, 0x83, 0xa6, 0xbe, 0xaa, 0x83, 0xa9, 0xbe, 0xaa, 0x7e, 0xa9, 0xbe, - 0xab, 0x7e, 0xa9, 0xbe, 0xab, 0x7e, 0xa9, 0xbe, 0xab, 0x7e, 0xa9, 0xbe, - 0xac, 0x7e, 0xa9, 0xbe, 0xac, 0x7e, 0xa9, 0xbe, 0xac, 0x7e, 0xa9, 0xbe, - 0xad, 0x7e, 0xa9, 0xbe, 0xad, 0x7e, 0xa9, 0xbe, 0xae, 0x7e, 0xaa, 0xbe, - 0xae, 0x7d, 0xa9, 0xbe, 0xae, 0x7e, 0xaa, 0xbe, 0xaf, 0x7d, 0xa9, 0xbe, - 0xaf, 0x7e, 0xaa, 0xbe, 0xaf, 0x7d, 0xa9, 0xbe, 0xb0, 0x7e, 0xaa, 0xbe, - 0xb0, 0x7d, 0xa9, 0xbe, 0xb0, 0x7e, 0xaa, 0xbe, 0xb1, 0x7d, 0xa9, 0xbe, - 0xb1, 0x7e, 0xaa, 0xbe, 0xb2, 0x7d, 0xa9, 0xbe, 0xb2, 0x7e, 0xaa, 0xbe, - 0xb2, 0x7d, 0xa9, 0xbe, 0xb3, 0x7e, 0xaa, 0xbe, 0xb3, 0x7d, 0xa9, 0xbe, - 0xb3, 0x7e, 0xaa, 0xbe, 0xb4, 0x7d, 0xa9, 0xbe, 0xb4, 0x7e, 0xaa, 0xbe, - 0xb4, 0x7d, 0xa9, 0xbe, 0xb5, 0x7e, 0xaa, 0xbe, 0xb5, 0x7d, 0xa9, 0xbe, - 0xb5, 0x7e, 0xb6, 0xbe, 0xb6, 0x71, 0xb6, 0xbe, 0xb6, 0x71, 0xba, 0xbe, - 0xb6, 0x72, 0xba, 0xbe, 0xb7, 0x72, 0xba, 0xbe, 0xb7, 0x72, 0xba, 0xbe, - 0xb7, 0x72, 0xba, 0xbe, 0xb8, 0x72, 0xba, 0xbe, 0xb8, 0x72, 0xba, 0xbe, - 0xb8, 0x72, 0xba, 0xbe, 0xb9, 0x72, 0xba, 0xbe, 0xb9, 0x72, 0xba, 0xbe, - 0xb9, 0x72, 0xba, 0xbe, 0xba, 0x72, 0xbd, 0xbe, 0xba, 0x73, 0xbe, 0xbe, - 0xba, 0x73, 0xbd, 0xbe, 0xbb, 0x73, 0xbe, 0xbe, 0xbb, 0x73, 0xbd, 0xbe, - 0xbb, 0x73, 0xbe, 0xbe, 0xbc, 0x73, 0xbd, 0xbe, 0xbc, 0x73, 0xbe, 0xbe, - 0xbc, 0x73, 0xbd, 0xbe, 0xbd, 0x73, 0xbe, 0xbe, 0xbd, 0x73, 0xbd, 0xbe, - 0xbd, 0x73, 0xc1, 0xbe, 0xbe, 0x74, 0xc1, 0xbe, 0xbe, 0x74, 0xc1, 0xbe, - 0xbe, 0x74, 0xc1, 0xbe, 0xbf, 0x74, 0xc1, 0xbe, 0xbf, 0x74, 0xc1, 0xbe, - 0xbf, 0x74, 0xc1, 0xbe, 0xc0, 0x74, 0xc1, 0xbe, 0xc0, 0x74, 0xc1, 0xbe, - 0xc0, 0x74, 0xc1, 0xbe, 0xc1, 0x74, 0xc1, 0xbe, 0xc1, 0x74, 0xc4, 0xbe, - 0xc1, 0x75, 0xc5, 0xbe, 0xc1, 0x75, 0xc4, 0xbe, 0xc2, 0x75, 0xc5, 0xbe, - 0xc2, 0x75, 0xc4, 0xbe, 0xc2, 0x75, 0xc5, 0xbe, 0xc3, 0x75, 0xc4, 0xbe, - 0xc3, 0x75, 0xc5, 0xbe, 0xc3, 0x75, 0xc4, 0xbe, 0xc4, 0x75, 0xc5, 0xbe, - 0xc4, 0x75, 0xc4, 0xbe, 0xc4, 0x75, 0xc8, 0xbe, 0xc5, 0x76, 0xc8, 0xbe, - 0xc5, 0x76, 0xc8, 0xbe, 0xc5, 0x76, 0xc8, 0xbe, 0xc6, 0x76, 0xc8, 0xbe, - 0xc6, 0x76, 0xc8, 0xbe, 0xc6, 0x76, 0xc8, 0xbe, 0xc6, 0x76, 0xc8, 0xbe, - 0xc7, 0x76, 0xc8, 0xbe, 0xc7, 0x76, 0xc8, 0xbe, 0xc7, 0x76, 0xc8, 0xbe, - 0xc8, 0x76, 0xc8, 0xbe, 0xc8, 0x76, 0xc8, 0xbe, 0xc8, 0x76, 0xcb, 0xbe, - 0xc9, 0x77, 0xcb, 0xbe, 0xc9, 0x77, 0xcb, 0xbe, 0xc9, 0x77, 0xcb, 0xbe, - 0xc9, 0x77, 0xcb, 0xbe, 0xca, 0x77, 0xcb, 0xbe, 0xca, 0x77, 0xcb, 0xbe, - 0xca, 0x77, 0xcb, 0xbe, 0xcb, 0x77, 0xcb, 0xbe, 0xcb, 0x77, 0xcb, 0xbe, - 0xcb, 0x77, 0xcc, 0xbe, 0xcc, 0x77, 0xce, 0xbe, 0xcc, 0x78, 0xce, 0xbe, - 0xcc, 0x78, 0xce, 0xbe, 0xcc, 0x78, 0xce, 0xbe, 0xcd, 0x78, 0xce, 0xbe, - 0xcd, 0x78, 0xce, 0xbe, 0xcd, 0x78, 0xce, 0xbe, 0xce, 0x78, 0xce, 0xbe, - 0xce, 0x78, 0xce, 0xbe, 0xce, 0x78, 0xce, 0xbe, 0xce, 0x78, 0xce, 0xbe, - 0xcf, 0x78, 0xce, 0xbe, 0xcf, 0x78, 0xce, 0xbe, 0xcf, 0x78, 0xce, 0xbe, - 0xd0, 0x78, 0xce, 0xbe, 0xd0, 0x78, 0xce, 0xbe, 0xd0, 0x78, 0xce, 0xbe, - 0xd0, 0x78, 0xce, 0xbe, 0xd1, 0x78, 0xce, 0xbe, 0xd1, 0x78, 0xce, 0xbe, - 0xd1, 0x78, 0xce, 0xbe, 0xd2, 0x78, 0xce, 0xbe, 0xd2, 0x78, 0xce, 0xbe, - 0xd2, 0x78, 0xce, 0xbe, 0xd2, 0x78, 0xce, 0xbe, 0xd3, 0x78, 0xce, 0xbe, - 0xd3, 0x78, 0xce, 0xbe, 0xd3, 0x78, 0xce, 0xbe, 0xd4, 0x78, 0xce, 0xbe, - 0xd4, 0x78, 0xce, 0xbe, 0xd4, 0x78, 0xce, 0xbe, 0xd4, 0x78, 0xce, 0xbe, - 0xd5, 0x78, 0xd5, 0xbe, 0xd5, 0x93, 0xd5, 0xbe, 0xd5, 0x93, 0xd6, 0xbe, - 0xd6, 0x93, 0xd6, 0xbe, 0xd6, 0x93, 0xd6, 0xbe, 0xd6, 0x93, 0xd6, 0xbe, - 0xd6, 0x93, 0xd6, 0xbe, 0xd7, 0x93, 0xd6, 0xbe, 0xd7, 0x93, 0xd6, 0xbe, - 0xd7, 0x93, 0xd6, 0xbe, 0xd7, 0x93, 0xd6, 0xbe, 0xd8, 0x93, 0xd6, 0xbe, - 0xd8, 0x93, 0xd6, 0xbe, 0xd8, 0x93, 0xd6, 0xbe, 0xd9, 0x93, 0xd6, 0xbe, - 0xd9, 0x93, 0xd9, 0xbe, 0xd9, 0x94, 0xd9, 0xbe, 0xd9, 0x94, 0xd9, 0xbe, - 0xda, 0x94, 0xd9, 0xbe, 0xda, 0x94, 0xd9, 0xbe, 0xda, 0x94, 0xd9, 0xbe, - 0xda, 0x94, 0xd9, 0xbe, 0xdb, 0x94, 0xd9, 0xbe, 0xdb, 0x94, 0xd9, 0xbe, - 0xdb, 0x94, 0xd9, 0xbe, 0xdb, 0x94, 0xd9, 0xbe, 0xdc, 0x94, 0xdc, 0xbe, - 0xdc, 0x95, 0xd9, 0xbe, 0xdc, 0x94, 0xdc, 0xbe, 0xdd, 0x95, 0xdc, 0xbe, - 0xdd, 0x95, 0xdc, 0xbe, 0xdd, 0x95, 0xdc, 0xbe, 0xdd, 0x95, 0xdc, 0xbe, - 0xde, 0x95, 0xdc, 0xbe, 0xde, 0x95, 0xdc, 0xbe, 0xde, 0x95, 0xdc, 0xbe, - 0xde, 0x95, 0xdc, 0xbe, 0xdf, 0x95, 0xdc, 0xbe, 0xdf, 0x95, 0xdc, 0xbe, - 0xdf, 0x95, 0xdf, 0xbe, 0xdf, 0x96, 0xdf, 0xbe, 0xe0, 0x96, 0xdf, 0xbe, - 0xe0, 0x96, 0xdf, 0xbe, 0xe0, 0x96, 0xea, 0xbe, 0xe1, 0x83, 0xea, 0xbe, - 0xe1, 0x86, 0xea, 0xbe, 0xe1, 0x83, 0xea, 0xbe, 0xe1, 0x86, 0xea, 0xbe, - 0xe2, 0x83, 0xea, 0xbe, 0xe2, 0x86, 0xea, 0xbe, 0xe2, 0x83, 0xea, 0xbe, - 0xe2, 0x86, 0xea, 0xbe, 0xe3, 0x83, 0xea, 0xbe, 0xe3, 0x86, 0xea, 0xbe, - 0xe3, 0x83, 0xea, 0xbe, 0xe3, 0x86, 0xea, 0xbe, 0xe4, 0x83, 0xea, 0xbe, - 0xe4, 0x86, 0xea, 0xbe, 0xe4, 0x83, 0xea, 0xbe, 0xe4, 0x86, 0xea, 0xbe, - 0xe5, 0x83, 0xea, 0xbe, 0xe5, 0x86, 0xea, 0xbe, 0xe5, 0x83, 0xea, 0xbe, - 0xe5, 0x86, 0xea, 0xbe, 0xe6, 0x83, 0xea, 0xbe, 0xe6, 0x86, 0xea, 0xbe, - 0xe6, 0x83, 0xea, 0xbe, 0xe6, 0x86, 0xea, 0xbe, 0xe7, 0x83, 0xea, 0xbe, - 0xe7, 0x86, 0xea, 0xbe, 0xe7, 0x83, 0xea, 0xbe, 0xe7, 0x86, 0xea, 0xbe, - 0xe8, 0x83, 0xea, 0xbe, 0xe8, 0x86, 0xea, 0xbe, 0xe8, 0x83, 0xea, 0xbe, - 0xe8, 0x83, 0xea, 0xbe, 0xe9, 0x83, 0xea, 0xbe, 0xe9, 0x83, 0xea, 0xbe, - 0xe9, 0x83, 0xea, 0xbe, 0xe9, 0x83, 0xea, 0xbe, 0xea, 0x83, 0xea, 0xbe, - 0xea, 0x83, 0xea, 0xbe, 0xea, 0x83, 0xea, 0xbe, 0xea, 0x83, 0xeb, 0xbe, - 0xea, 0x83, 0xeb, 0xbe, 0xea, 0x83, 0xeb, 0xbd, 0xea, 0x83, 0xeb, 0xbe, - 0xea, 0x83, 0xec, 0xbd, 0xea, 0x83, 0xec, 0xbe, 0xea, 0x83, 0xec, 0xbd, - 0xea, 0x83, 0xec, 0xbe, 0xea, 0x83, 0xec, 0xbd, 0xea, 0x83, 0xed, 0xbe, - 0xea, 0x83, 0xed, 0xbd, 0xea, 0x83, 0xed, 0xbe, 0xea, 0x83, 0xed, 0xbd, - 0xea, 0x83, 0xee, 0xbe, 0xea, 0x83, 0xee, 0xbd, 0xea, 0x83, 0xee, 0xbe, - 0xea, 0x83, 0xee, 0xbd, 0xea, 0x83, 0xef, 0xbe, 0xea, 0x83, 0xef, 0xbd, - 0xea, 0x83, 0xef, 0xbe, 0xea, 0x83, 0xef, 0xc5, 0xef, 0x83, 0xf0, 0xc5, - 0xef, 0x83, 0xf0, 0xbe, 0xf5, 0x83, 0xf0, 0xc1, 0xf5, 0x83, 0xf0, 0xbe, - 0xf5, 0x83, 0xf1, 0xc1, 0xf5, 0x83, 0xf1, 0xbe, 0xf5, 0x83, 0xf1, 0xc1, - 0xf5, 0x83, 0xf1, 0xbe, 0xf5, 0x83, 0xf2, 0xbe, 0xf5, 0x83, 0xf2, 0xbe, - 0xf5, 0x83, 0xf2, 0xbe, 0xf5, 0x83, 0xf2, 0xbe, 0xf5, 0x83, 0xf2, 0xbe, - 0xf5, 0x83, 0xf3, 0xbe, 0xf5, 0x83, 0xf3, 0xbe, 0xf5, 0x83, 0xf3, 0xbe, - 0xf5, 0x83, 0xf3, 0xbe, 0xf5, 0x83, 0xf4, 0xbe, 0xf5, 0x83, 0xf4, 0xbe, - 0xf5, 0x83, 0xf4, 0xbe, 0xf5, 0x83, 0xf4, 0xbe, 0xf5, 0x83, 0xf5, 0xbe, - 0xf5, 0x83, 0xf5, 0xbe, 0xf5, 0x83, 0xf5, 0xbe, 0xf5, 0x82, 0xf5, 0xbe, - 0xf5, 0x83, 0xf5, 0xbe, 0xf5, 0x82, 0xf5, 0xbe, 0xf6, 0x83, 0xf5, 0xbe, - 0xf6, 0x82, 0xf5, 0xbe, 0xf6, 0x83, 0xf5, 0xbe, 0xf6, 0x82, 0xf5, 0xbe, - 0xf7, 0x83, 0xf9, 0xbe, 0xf7, 0x83, 0xf9, 0xbe, 0xf7, 0x83, 0xf9, 0xbe, - 0xf7, 0x83, 0xf9, 0xbe, 0xf8, 0x83, 0xf9, 0xbe, 0xf8, 0x83, 0xf9, 0xbe, - 0xf8, 0x83, 0xf9, 0xbe, 0xf8, 0x83, 0xf9, 0xbe, 0xf8, 0x83, 0xf9, 0xbd, - 0xf9, 0x83, 0xf9, 0xbe, 0xf8, 0x83, 0xf9, 0xbd, 0xf9, 0x83, 0xf9, 0xbe, - 0xf8, 0x83, 0xfa, 0xbd, 0xf9, 0x83, 0xfa, 0xbe, 0xf8, 0x83, 0xfa, 0xbd, - 0xf9, 0x83, 0xfa, 0xbe, 0xf8, 0x83, 0xfa, 0xbd, 0xf9, 0x83, 0xfb, 0xbe, - 0xf8, 0x83, 0xfb, 0xbd, 0xf9, 0x83, 0xfb, 0xbe, 0xf8, 0x83, 0xfb, 0xbd, - 0xf9, 0x83, 0xfc, 0xbe, 0xf8, 0x83, 0xfc, 0xbd, 0xf9, 0x83, 0xfc, 0xbe, - 0xf8, 0x83, 0xfc, 0xbd, 0xf9, 0x83, 0xfc, 0xbb, 0xf9, 0x83, 0xfd, 0xbd, - 0xf9, 0x83, 0xfd, 0xbb, 0xf9, 0x83, 0xfd, 0xbd, 0xf9, 0x83, 0xfd, 0xbb, - 0xf9, 0x83, 0xfe, 0xbd, 0xf9, 0x83, 0xfe, 0xbb, 0xf9, 0x83, 0xfe, 0xbd, - 0xf9, 0x83, 0xfe, 0xbb, 0xf9, 0x83, 0xfe, 0xbd, 0xf9, 0x83, 0xff, 0xbd, - 0xf9, 0x83, 0xff, 0xbd, 0xf9, 0x83, 0x03, 0xc5, 0x90, 0x84, 0x0a, 0xc3, - 0x90, 0x84, 0x0f, 0xc5, 0x90, 0x84, 0x14, 0xc3, 0x90, 0x84, 0x17, 0xc5, - 0x90, 0x84, 0x1b, 0xc3, 0x90, 0x84, 0x1e, 0xc5, 0x90, 0x84, 0x20, 0xc3, - 0x90, 0x84, 0x23, 0xc5, 0x90, 0x84, 0x25, 0xc3, 0x90, 0x84, 0x27, 0xc5, - 0x90, 0x84, 0x29, 0xc3, 0x90, 0x84, 0x2b, 0xc5, 0x90, 0x84, 0x2d, 0xc3, - 0x90, 0x84, 0x2f, 0xc5, 0x90, 0x84, 0x31, 0xc3, 0x90, 0x84, 0x32, 0xc5, - 0x90, 0x84, 0x34, 0xc3, 0x90, 0x84, 0x35, 0xc5, 0x90, 0x84, 0x37, 0xc3, - 0x90, 0x84, 0x38, 0xc5, 0x90, 0x84, 0x3a, 0xc3, 0x90, 0x84, 0x3b, 0xc5, - 0x90, 0x84, 0x3c, 0xc3, 0x90, 0x84, 0x3e, 0xc5, 0x90, 0x84, 0x3f, 0xc3, - 0x90, 0x84, 0x40, 0xc5, 0x90, 0x84, 0x42, 0xc3, 0x90, 0x84, 0x43, 0xc5, - 0x90, 0x84, 0x44, 0xc3, 0x90, 0x84, 0x45, 0xc5, 0x90, 0x84, 0x46, 0xc3, - 0x90, 0x84, 0x47, 0xc5, 0x90, 0x84, 0x48, 0xc3, 0x90, 0x84, 0x49, 0xc5, - 0x90, 0x84, 0x4a, 0xc3, 0x90, 0x84, 0x4b, 0xc5, 0x90, 0x84, 0x4c, 0xc3, - 0x90, 0x84, 0x4d, 0xc5, 0x90, 0x84, 0x4e, 0xc3, 0x90, 0x84, 0x4f, 0xc1, - 0x91, 0x84, 0x50, 0xc3, 0x90, 0x84, 0x51, 0xc1, 0x91, 0x84, 0x52, 0xc3, - 0x90, 0x84, 0x53, 0xc1, 0x91, 0x84, 0x54, 0xc3, 0x90, 0x84, 0x55, 0xc1, - 0x91, 0x84, 0x56, 0xc3, 0x90, 0x84, 0x57, 0xc1, 0x91, 0x84, 0x58, 0xc3, - 0x90, 0x84, 0x58, 0xc1, 0x91, 0x84, 0x59, 0xc3, 0x90, 0x84, 0x5a, 0xc1, - 0x91, 0x84, 0x5b, 0xc3, 0x90, 0x84, 0x5c, 0xc1, 0x91, 0x84, 0x5d, 0xc3, - 0x90, 0x84, 0x5d, 0xc1, 0x91, 0x84, 0x5e, 0xc3, 0x90, 0x84, 0x5f, 0xc1, - 0x91, 0x84, 0x60, 0xc3, 0x90, 0x84, 0x60, 0xc1, 0x91, 0x84, 0x61, 0xc3, - 0x90, 0x84, 0x62, 0xc1, 0x91, 0x84, 0x63, 0xc3, 0x90, 0x84, 0x63, 0xc1, - 0x91, 0x84, 0x64, 0xc3, 0x90, 0x84, 0x65, 0xc1, 0x91, 0x84, 0x66, 0xc3, - 0x90, 0x84, 0x66, 0xc1, 0x91, 0x84, 0x67, 0xc3, 0x90, 0x84, 0x68, 0xc1, - 0x91, 0x84, 0x68, 0xc3, 0x90, 0x84, 0x69, 0xc1, 0x91, 0x84, 0x6a, 0xc3, - 0x90, 0x84, 0x6a, 0xc1, 0x91, 0x84, 0x6b, 0xc3, 0x90, 0x84, 0x6c, 0xc1, - 0x91, 0x84, 0x6c, 0xc3, 0x90, 0x84, 0x6d, 0xc1, 0x91, 0x84, 0x6e, 0xc3, - 0x90, 0x84, 0x6e, 0xc1, 0x91, 0x84, 0x6f, 0xc3, 0x90, 0x84, 0x70, 0xc1, - 0x91, 0x84, 0x70, 0xc3, 0x90, 0x84, 0x71, 0xc1, 0x91, 0x84, 0x72, 0xc3, - 0x90, 0x84, 0x72, 0xc1, 0x91, 0x84, 0x73, 0xc3, 0x90, 0x84, 0x73, 0xc1, - 0x91, 0x84, 0x74, 0xc3, 0x90, 0x84, 0x75, 0xc1, 0x91, 0x84, 0x75, 0xc3, - 0x90, 0x84, 0x76, 0xc1, 0x91, 0x84, 0x76, 0xc3, 0x90, 0x84, 0x77, 0xc1, - 0x91, 0x84, 0x78, 0xc3, 0x90, 0x84, 0x78, 0xc1, 0x91, 0x84, 0x79, 0xbf, - 0x91, 0x84, 0x79, 0xc1, 0x91, 0x84, 0x7a, 0xbf, 0x91, 0x84, 0x7a, 0xc1, - 0x91, 0x84, 0x7b, 0xbf, 0x91, 0x84, 0x7c, 0xc1, 0x91, 0x84, 0x7c, 0xbf, - 0x91, 0x84, 0x7d, 0xc1, 0x91, 0x84, 0x7d, 0xbf, 0x91, 0x84, 0x7e, 0xc1, - 0x91, 0x84, 0x7e, 0xbf, 0x91, 0x84, 0x7f, 0xc1, 0x91, 0x84, 0x7f, 0xbf, - 0x91, 0x84, 0x80, 0xc1, 0x91, 0x84, 0x81, 0xbf, 0x91, 0x84, 0x81, 0xc1, - 0x91, 0x84, 0x82, 0xbf, 0x91, 0x84, 0x82, 0xc1, 0x91, 0x84, 0x83, 0xbf, - 0x91, 0x84, 0x83, 0xc1, 0x91, 0x84, 0x84, 0xbf, 0x91, 0x84, 0x84, 0xc1, - 0x91, 0x84, 0x85, 0xbf, 0x91, 0x84, 0x85, 0xc1, 0x91, 0x84, 0x86, 0xbf, - 0x91, 0x84, 0x86, 0xc1, 0x91, 0x84, 0x87, 0xbf, 0x91, 0x84, 0x87, 0xc1, - 0x91, 0x84, 0x88, 0xbf, 0x91, 0x84, 0x88, 0xc1, 0x91, 0x84, 0x89, 0xbf, - 0x91, 0x84, 0x89, 0xc1, 0x91, 0x84, 0x8a, 0xbf, 0x91, 0x84, 0x8a, 0xbe, - 0x92, 0x84, 0x8b, 0xbf, 0x91, 0x84, 0x8b, 0xbe, 0x92, 0x84, 0x8c, 0xbf, - 0x91, 0x84, 0x8c, 0xbe, 0x92, 0x84, 0x8d, 0xbf, 0x91, 0x84, 0x8d, 0xbe, - 0x92, 0x84, 0x8e, 0xbf, 0x91, 0x84, 0x8e, 0xbe, 0x92, 0x84, 0x8e, 0xbf, - 0x91, 0x84, 0x8f, 0xbe, 0x92, 0x84, 0x8f, 0xbf, 0x91, 0x84, 0x90, 0xbe, - 0x92, 0x84, 0x90, 0xbf, 0x91, 0x84, 0x91, 0xbe, 0x92, 0x84, 0x91, 0xbf, - 0x91, 0x84, 0x91, 0xbe, 0x92, 0x84, 0x91, 0xbe, 0x92, 0x84, 0x91, 0xbe, - 0x93, 0x84, 0x91, 0xbe, 0x93, 0x84, 0x95, 0xbe, 0x94, 0x84, 0x95, 0xbe, - 0x94, 0x84, 0x95, 0xbe, 0x94, 0x84, 0x95, 0xbe, 0x95, 0x84, 0x95, 0xbe, - 0x94, 0x84, 0x96, 0xbe, 0x95, 0x84, 0x96, 0xbe, 0x94, 0x84, 0x97, 0xbe, - 0x95, 0x84, 0x97, 0xbe, 0x94, 0x84, 0x98, 0xbe, 0x95, 0x84, 0x98, 0xbc, - 0x98, 0x84, 0x98, 0xbc, 0x98, 0x84, 0x99, 0xbc, 0x99, 0x84, 0x99, 0xbc, - 0x99, 0x84, 0x9a, 0xbc, 0x9a, 0x84, 0x9a, 0xbc, 0x9a, 0x84, 0x9a, 0xbc, - 0x9c, 0x84, 0x9b, 0xbc, 0x9d, 0x84, 0x9b, 0xbc, 0x9c, 0x84, 0x9c, 0xbc, - 0x9d, 0x84, 0x9c, 0xbc, 0x9c, 0x84, 0x9d, 0xbc, 0x9d, 0x84, 0x9d, 0xbc, - 0x9d, 0x84, 0x9d, 0xbc, 0x9d, 0x84, 0x9e, 0xbc, 0x9e, 0x84, 0x9e, 0xbc, - 0x9e, 0x84, 0x9f, 0xbc, 0x9f, 0x84, 0x9f, 0xbd, 0xa1, 0x84, 0x9f, 0xbd, - 0xa1, 0x84, 0xa0, 0xbd, 0xa1, 0x84, 0xa0, 0xbd, 0xa1, 0x84, 0xa1, 0xbd, - 0xa1, 0x84, 0xa1, 0xbd, 0xa1, 0x84, 0xa1, 0xbd, 0xa1, 0x84, 0xa2, 0xbd, - 0xa2, 0x84, 0xa2, 0xbd, 0xa2, 0x84, 0xa3, 0xbd, 0xa3, 0x84, 0xa3, 0xbd, - 0xa3, 0x84, 0xa3, 0xbd, 0xa3, 0x84, 0xa4, 0xbd, 0xa4, 0x84, 0xa4, 0xbe, - 0xa5, 0x84, 0xa5, 0xbe, 0xa5, 0x84, 0xa5, 0xbe, 0xa5, 0x84, 0xa5, 0xbe, - 0xa5, 0x84, 0xa6, 0xbe, 0xa6, 0x84, 0xa6, 0xbe, 0xa6, 0x84, 0xa6, 0xbe, - 0xa6, 0x84, 0xa6, 0xbe, 0xa7, 0x84, 0xa6, 0xbe, 0xa7, 0x84, 0xa6, 0xbe, - 0xa8, 0x84, 0xa6, 0xbe, 0xa8, 0x84, 0xa6, 0xbe, 0xa8, 0x84, 0xa6, 0xbe, - 0xa9, 0x84, 0xa6, 0xbe, 0xa9, 0x84, 0xa6, 0xbe, 0xaa, 0x84, 0xa6, 0xbe, - 0xaa, 0x84, 0xa9, 0xbe, 0xaa, 0x7f, 0xa9, 0xbe, 0xab, 0x7f, 0xa9, 0xbe, - 0xab, 0x7f, 0xa9, 0xbe, 0xab, 0x7f, 0xa9, 0xbe, 0xac, 0x7f, 0xa9, 0xbe, - 0xac, 0x7f, 0xa9, 0xbe, 0xac, 0x7f, 0xa9, 0xbe, 0xad, 0x7f, 0xa9, 0xbe, - 0xad, 0x7f, 0xa9, 0xbe, 0xae, 0x7f, 0xaa, 0xbe, 0xae, 0x7e, 0xa9, 0xbe, - 0xae, 0x7f, 0xaa, 0xbe, 0xaf, 0x7e, 0xa9, 0xbe, 0xaf, 0x7f, 0xaa, 0xbe, - 0xaf, 0x7e, 0xa9, 0xbe, 0xb0, 0x7f, 0xaa, 0xbe, 0xb0, 0x7e, 0xa9, 0xbe, - 0xb0, 0x7f, 0xaa, 0xbe, 0xb1, 0x7e, 0xa9, 0xbe, 0xb1, 0x7f, 0xaa, 0xbe, - 0xb2, 0x7e, 0xa9, 0xbe, 0xb2, 0x7f, 0xaa, 0xbe, 0xb2, 0x7e, 0xa9, 0xbe, - 0xb3, 0x7f, 0xaa, 0xbe, 0xb3, 0x7e, 0xa9, 0xbe, 0xb3, 0x7f, 0xaa, 0xbe, - 0xb4, 0x7e, 0xa9, 0xbe, 0xb4, 0x7f, 0xaa, 0xbe, 0xb4, 0x7e, 0xa9, 0xbe, - 0xb5, 0x7f, 0xaa, 0xbe, 0xb5, 0x7e, 0xa9, 0xbe, 0xb5, 0x7f, 0xaa, 0xbe, - 0xb6, 0x7e, 0xb8, 0xbe, 0xb6, 0x72, 0xb8, 0xbe, 0xb6, 0x72, 0xb8, 0xbe, - 0xb7, 0x72, 0xb8, 0xbe, 0xb7, 0x72, 0xbb, 0xbe, 0xb7, 0x73, 0xb8, 0xbe, - 0xb8, 0x72, 0xbb, 0xbe, 0xb8, 0x73, 0xbc, 0xbe, 0xb8, 0x73, 0xbb, 0xbe, - 0xb9, 0x73, 0xbc, 0xbe, 0xb9, 0x73, 0xbb, 0xbe, 0xb9, 0x73, 0xbc, 0xbe, - 0xba, 0x73, 0xbb, 0xbe, 0xba, 0x73, 0xbc, 0xbe, 0xba, 0x73, 0xbb, 0xbe, - 0xbb, 0x73, 0xbc, 0xbe, 0xbb, 0x73, 0xbb, 0xbe, 0xbb, 0x73, 0xbf, 0xbe, - 0xbc, 0x74, 0xbf, 0xbe, 0xbc, 0x74, 0xbf, 0xbe, 0xbc, 0x74, 0xbf, 0xbe, - 0xbd, 0x74, 0xbf, 0xbe, 0xbd, 0x74, 0xbf, 0xbe, 0xbd, 0x74, 0xbf, 0xbe, - 0xbe, 0x74, 0xbf, 0xbe, 0xbe, 0x74, 0xbf, 0xbe, 0xbe, 0x74, 0xbf, 0xbe, - 0xbf, 0x74, 0xbf, 0xbe, 0xbf, 0x74, 0xc2, 0xbe, 0xbf, 0x75, 0xc3, 0xbe, - 0xc0, 0x75, 0xc2, 0xbe, 0xc0, 0x75, 0xc3, 0xbe, 0xc0, 0x75, 0xc2, 0xbe, - 0xc1, 0x75, 0xc3, 0xbe, 0xc1, 0x75, 0xc2, 0xbe, 0xc1, 0x75, 0xc3, 0xbe, - 0xc1, 0x75, 0xc2, 0xbe, 0xc2, 0x75, 0xc3, 0xbe, 0xc2, 0x75, 0xc2, 0xbe, - 0xc2, 0x75, 0xc3, 0xbe, 0xc3, 0x75, 0xc6, 0xbe, 0xc3, 0x76, 0xc6, 0xbe, - 0xc3, 0x76, 0xc6, 0xbe, 0xc4, 0x76, 0xc6, 0xbe, 0xc4, 0x76, 0xc6, 0xbe, - 0xc4, 0x76, 0xc6, 0xbe, 0xc5, 0x76, 0xc6, 0xbe, 0xc5, 0x76, 0xc6, 0xbe, - 0xc5, 0x76, 0xc6, 0xbe, 0xc6, 0x76, 0xc6, 0xbe, 0xc6, 0x76, 0xc6, 0xbe, - 0xc6, 0x76, 0xc9, 0xbe, 0xc6, 0x77, 0xca, 0xbe, 0xc7, 0x77, 0xc9, 0xbe, - 0xc7, 0x77, 0xca, 0xbe, 0xc7, 0x77, 0xc9, 0xbe, 0xc8, 0x77, 0xca, 0xbe, - 0xc8, 0x77, 0xc9, 0xbe, 0xc8, 0x77, 0xca, 0xbe, 0xc9, 0x77, 0xc9, 0xbe, - 0xc9, 0x77, 0xca, 0xbe, 0xc9, 0x77, 0xc9, 0xbe, 0xc9, 0x77, 0xca, 0xbe, - 0xca, 0x77, 0xca, 0xbe, 0xca, 0x77, 0xcd, 0xbe, 0xca, 0x78, 0xcd, 0xbe, - 0xcb, 0x78, 0xcd, 0xbe, 0xcb, 0x78, 0xcd, 0xbe, 0xcb, 0x78, 0xcd, 0xbe, - 0xcc, 0x78, 0xcd, 0xbe, 0xcc, 0x78, 0xcd, 0xbe, 0xcc, 0x78, 0xcd, 0xbe, - 0xcc, 0x78, 0xcd, 0xbe, 0xcd, 0x78, 0xcd, 0xbe, 0xcd, 0x78, 0xcd, 0xbe, - 0xcd, 0x78, 0xce, 0xbe, 0xce, 0x78, 0xce, 0xbe, 0xce, 0x78, 0xce, 0xbe, - 0xce, 0x78, 0xce, 0xbe, 0xce, 0x78, 0xce, 0xbe, 0xcf, 0x78, 0xce, 0xbe, - 0xcf, 0x78, 0xce, 0xbe, 0xcf, 0x78, 0xce, 0xbe, 0xd0, 0x78, 0xce, 0xbe, - 0xd0, 0x78, 0xce, 0xbe, 0xd0, 0x78, 0xce, 0xbe, 0xd0, 0x78, 0xce, 0xbe, - 0xd1, 0x78, 0xce, 0xbe, 0xd1, 0x78, 0xce, 0xbe, 0xd1, 0x78, 0xce, 0xbe, - 0xd2, 0x78, 0xce, 0xbe, 0xd2, 0x78, 0xce, 0xbe, 0xd2, 0x78, 0xce, 0xbe, - 0xd2, 0x78, 0xce, 0xbe, 0xd3, 0x78, 0xce, 0xbe, 0xd3, 0x78, 0xce, 0xbe, - 0xd3, 0x78, 0xce, 0xbe, 0xd4, 0x78, 0xd4, 0xbe, 0xd4, 0x93, 0xd4, 0xbe, - 0xd4, 0x93, 0xd4, 0xbe, 0xd4, 0x93, 0xd5, 0xbe, 0xd5, 0x93, 0xd4, 0xbe, - 0xd5, 0x93, 0xd5, 0xbe, 0xd5, 0x93, 0xd4, 0xbe, 0xd6, 0x93, 0xd5, 0xbe, - 0xd6, 0x93, 0xd4, 0xbe, 0xd6, 0x93, 0xd5, 0xbe, 0xd6, 0x93, 0xd4, 0xbe, - 0xd7, 0x93, 0xd5, 0xbe, 0xd7, 0x93, 0xd4, 0xbe, 0xd7, 0x93, 0xd5, 0xbe, - 0xd7, 0x93, 0xd8, 0xbe, 0xd8, 0x94, 0xd7, 0xbe, 0xd8, 0x94, 0xd8, 0xbe, - 0xd8, 0x94, 0xd7, 0xbe, 0xd9, 0x94, 0xd8, 0xbe, 0xd9, 0x94, 0xd7, 0xbe, - 0xd9, 0x94, 0xd8, 0xbe, 0xd9, 0x94, 0xd7, 0xbe, 0xda, 0x94, 0xd8, 0xbe, - 0xda, 0x94, 0xd7, 0xbe, 0xda, 0x94, 0xd8, 0xbe, 0xda, 0x94, 0xdb, 0xbe, - 0xdb, 0x95, 0xda, 0xbe, 0xdb, 0x95, 0xdb, 0xbe, 0xdb, 0x95, 0xda, 0xbe, - 0xdb, 0x95, 0xdb, 0xbe, 0xdc, 0x95, 0xda, 0xbe, 0xdc, 0x95, 0xdb, 0xbe, - 0xdc, 0x95, 0xda, 0xbe, 0xdd, 0x95, 0xdb, 0xbe, 0xdd, 0x95, 0xda, 0xbe, - 0xdd, 0x95, 0xdb, 0xbe, 0xdd, 0x95, 0xde, 0xbe, 0xde, 0x96, 0xdb, 0xbe, - 0xde, 0x95, 0xde, 0xbe, 0xde, 0x96, 0xdd, 0xbe, 0xde, 0x96, 0xde, 0xbe, - 0xdf, 0x96, 0xdd, 0xbe, 0xdf, 0x96, 0xde, 0xbe, 0xdf, 0x96, 0xdd, 0xbe, - 0xdf, 0x96, 0xde, 0xbe, 0xe0, 0x96, 0xdd, 0xbe, 0xe0, 0x96, 0xde, 0xbe, - 0xe0, 0x96, 0xdd, 0xbe, 0xe1, 0x96, 0xea, 0xbe, 0xe1, 0x86, 0xea, 0xbe, - 0xe1, 0x84, 0xea, 0xbe, 0xe1, 0x86, 0xea, 0xbe, 0xe2, 0x84, 0xea, 0xbe, - 0xe2, 0x86, 0xea, 0xbe, 0xe2, 0x84, 0xea, 0xbe, 0xe2, 0x86, 0xea, 0xbe, - 0xe3, 0x84, 0xea, 0xbe, 0xe3, 0x86, 0xea, 0xbe, 0xe3, 0x84, 0xea, 0xbe, - 0xe3, 0x86, 0xea, 0xbe, 0xe4, 0x84, 0xea, 0xbe, 0xe4, 0x86, 0xea, 0xbe, - 0xe4, 0x84, 0xea, 0xbe, 0xe4, 0x86, 0xea, 0xbe, 0xe5, 0x84, 0xea, 0xbe, - 0xe5, 0x86, 0xea, 0xbe, 0xe5, 0x84, 0xea, 0xbe, 0xe5, 0x86, 0xea, 0xbe, - 0xe6, 0x84, 0xea, 0xbe, 0xe6, 0x86, 0xea, 0xbe, 0xe6, 0x84, 0xea, 0xbe, - 0xe6, 0x86, 0xea, 0xbe, 0xe7, 0x84, 0xea, 0xbe, 0xe7, 0x86, 0xea, 0xbe, - 0xe7, 0x84, 0xea, 0xbe, 0xe7, 0x86, 0xea, 0xbe, 0xe8, 0x84, 0xea, 0xbe, - 0xe8, 0x86, 0xea, 0xbe, 0xe8, 0x84, 0xea, 0xbe, 0xe8, 0x86, 0xea, 0xbe, - 0xe9, 0x84, 0xea, 0xbe, 0xe9, 0x86, 0xea, 0xbe, 0xe9, 0x84, 0xea, 0xbe, - 0xe9, 0x84, 0xea, 0xbe, 0xea, 0x84, 0xea, 0xbe, 0xea, 0x84, 0xea, 0xbe, - 0xea, 0x84, 0xea, 0xbe, 0xea, 0x84, 0xeb, 0xbe, 0xea, 0x84, 0xeb, 0xbe, - 0xea, 0x84, 0xeb, 0xbd, 0xea, 0x84, 0xeb, 0xbe, 0xea, 0x84, 0xec, 0xbd, - 0xea, 0x84, 0xec, 0xbe, 0xea, 0x84, 0xec, 0xbd, 0xea, 0x84, 0xec, 0xbe, - 0xea, 0x84, 0xec, 0xbd, 0xea, 0x84, 0xed, 0xbe, 0xea, 0x84, 0xed, 0xbd, - 0xea, 0x84, 0xed, 0xbe, 0xea, 0x84, 0xed, 0xbd, 0xea, 0x84, 0xee, 0xbe, - 0xea, 0x84, 0xee, 0xbd, 0xea, 0x84, 0xee, 0xbe, 0xea, 0x84, 0xee, 0xbd, - 0xea, 0x84, 0xef, 0xbe, 0xea, 0x84, 0xef, 0xbd, 0xea, 0x84, 0xef, 0xc5, - 0xed, 0x84, 0xef, 0xc5, 0xef, 0x84, 0xf0, 0xc5, 0xf0, 0x84, 0xf0, 0xc5, - 0xf0, 0x84, 0xf0, 0xc1, 0xf5, 0x84, 0xf0, 0xbe, 0xf5, 0x84, 0xf1, 0xc1, - 0xf5, 0x84, 0xf1, 0xbe, 0xf5, 0x84, 0xf1, 0xc1, 0xf5, 0x84, 0xf1, 0xbe, - 0xf5, 0x84, 0xf2, 0xbe, 0xf5, 0x84, 0xf2, 0xbe, 0xf5, 0x84, 0xf2, 0xbe, - 0xf5, 0x84, 0xf2, 0xbe, 0xf5, 0x84, 0xf2, 0xbe, 0xf5, 0x84, 0xf3, 0xbe, - 0xf5, 0x84, 0xf3, 0xbe, 0xf5, 0x84, 0xf3, 0xbe, 0xf5, 0x84, 0xf3, 0xbe, - 0xf5, 0x84, 0xf4, 0xbe, 0xf5, 0x84, 0xf4, 0xbe, 0xf5, 0x84, 0xf4, 0xbe, - 0xf5, 0x84, 0xf4, 0xbe, 0xf5, 0x84, 0xf5, 0xbe, 0xf5, 0x84, 0xf5, 0xbe, - 0xf5, 0x84, 0xf5, 0xbe, 0xf5, 0x83, 0xf5, 0xbe, 0xf5, 0x84, 0xf5, 0xbe, - 0xf5, 0x83, 0xf5, 0xbe, 0xf6, 0x84, 0xf5, 0xbe, 0xf6, 0x83, 0xf5, 0xbe, - 0xf6, 0x84, 0xf5, 0xbe, 0xf6, 0x83, 0xf5, 0xbe, 0xf7, 0x84, 0xf9, 0xbe, - 0xf7, 0x84, 0xf8, 0xbe, 0xf7, 0x86, 0xf9, 0xbe, 0xf7, 0x84, 0xf8, 0xbe, - 0xf8, 0x86, 0xf9, 0xbe, 0xf8, 0x84, 0xf9, 0xbe, 0xf8, 0x84, 0xf9, 0xbe, - 0xf8, 0x84, 0xf9, 0xbe, 0xf8, 0x84, 0xf9, 0xbe, 0xf8, 0x84, 0xf9, 0xbe, - 0xf8, 0x84, 0xf9, 0xbe, 0xf8, 0x84, 0xf9, 0xbe, 0xf8, 0x84, 0xfa, 0xbd, - 0xf9, 0x84, 0xfa, 0xbe, 0xf8, 0x84, 0xfa, 0xbd, 0xf9, 0x84, 0xfa, 0xbe, - 0xf8, 0x84, 0xfa, 0xbd, 0xf9, 0x84, 0xfb, 0xbe, 0xf8, 0x84, 0xfb, 0xbd, - 0xf9, 0x84, 0xfb, 0xbe, 0xf8, 0x84, 0xfb, 0xbd, 0xf9, 0x84, 0xfc, 0xbe, - 0xf8, 0x84, 0xfc, 0xbd, 0xf9, 0x84, 0xfc, 0xbe, 0xf8, 0x84, 0xfc, 0xbd, - 0xf9, 0x84, 0xfc, 0xbe, 0xf8, 0x84, 0xfd, 0xbd, 0xf9, 0x84, 0xfd, 0xbe, - 0xf8, 0x84, 0xfd, 0xbd, 0xf9, 0x84, 0xfd, 0xbe, 0xf8, 0x84, 0xfe, 0xbd, - 0xf9, 0x84, 0xfe, 0xbe, 0xf8, 0x84, 0xfe, 0xbd, 0xf9, 0x84, 0xfe, 0xbb, - 0xf9, 0x84, 0xfe, 0xbd, 0xf9, 0x84, 0xff, 0xbd, 0xf9, 0x84, 0xff, 0xbd, - 0xf9, 0x84, 0x03, 0xc5, 0x90, 0x84, 0x0a, 0xc3, 0x90, 0x84, 0x0f, 0xc5, - 0x90, 0x84, 0x14, 0xc3, 0x90, 0x84, 0x17, 0xc5, 0x90, 0x84, 0x1b, 0xc3, - 0x90, 0x84, 0x1e, 0xc5, 0x90, 0x84, 0x20, 0xc3, 0x90, 0x84, 0x23, 0xc5, - 0x90, 0x84, 0x25, 0xc3, 0x90, 0x84, 0x27, 0xc5, 0x90, 0x84, 0x29, 0xc3, - 0x90, 0x84, 0x2b, 0xc5, 0x90, 0x84, 0x2d, 0xc3, 0x90, 0x84, 0x2f, 0xc5, - 0x90, 0x84, 0x31, 0xc3, 0x90, 0x84, 0x32, 0xc5, 0x90, 0x84, 0x34, 0xc3, - 0x90, 0x84, 0x35, 0xc5, 0x90, 0x84, 0x37, 0xc3, 0x90, 0x84, 0x38, 0xc5, - 0x90, 0x84, 0x3a, 0xc3, 0x90, 0x84, 0x3b, 0xc5, 0x90, 0x84, 0x3c, 0xc3, - 0x90, 0x84, 0x3e, 0xc5, 0x90, 0x84, 0x3f, 0xc3, 0x90, 0x84, 0x40, 0xc5, - 0x90, 0x84, 0x42, 0xc3, 0x90, 0x84, 0x43, 0xc5, 0x90, 0x84, 0x44, 0xc3, - 0x90, 0x84, 0x45, 0xc5, 0x90, 0x84, 0x46, 0xc3, 0x90, 0x84, 0x47, 0xc5, - 0x90, 0x84, 0x48, 0xc3, 0x90, 0x84, 0x49, 0xc5, 0x90, 0x84, 0x4a, 0xc3, - 0x90, 0x84, 0x4b, 0xc5, 0x90, 0x84, 0x4c, 0xc3, 0x90, 0x84, 0x4d, 0xc5, - 0x90, 0x84, 0x4e, 0xc3, 0x90, 0x84, 0x4f, 0xc5, 0x90, 0x84, 0x50, 0xc3, - 0x90, 0x84, 0x51, 0xc5, 0x90, 0x84, 0x52, 0xc3, 0x90, 0x84, 0x53, 0xc5, - 0x90, 0x84, 0x54, 0xc3, 0x90, 0x84, 0x55, 0xc5, 0x90, 0x84, 0x56, 0xc3, - 0x90, 0x84, 0x57, 0xc5, 0x90, 0x84, 0x58, 0xc3, 0x90, 0x84, 0x58, 0xc5, - 0x90, 0x84, 0x59, 0xc3, 0x90, 0x84, 0x5a, 0xc5, 0x90, 0x84, 0x5b, 0xc3, - 0x90, 0x84, 0x5c, 0xc5, 0x90, 0x84, 0x5d, 0xc3, 0x90, 0x84, 0x5d, 0xc5, - 0x90, 0x84, 0x5e, 0xc3, 0x90, 0x84, 0x5f, 0xc5, 0x90, 0x84, 0x60, 0xc3, - 0x90, 0x84, 0x60, 0xc1, 0x91, 0x84, 0x61, 0xc3, 0x90, 0x84, 0x62, 0xc1, - 0x91, 0x84, 0x63, 0xc3, 0x90, 0x84, 0x63, 0xc1, 0x91, 0x84, 0x64, 0xc3, - 0x90, 0x84, 0x65, 0xc1, 0x91, 0x84, 0x66, 0xc3, 0x90, 0x84, 0x66, 0xc1, - 0x91, 0x84, 0x67, 0xc3, 0x90, 0x84, 0x68, 0xc1, 0x91, 0x84, 0x68, 0xc3, - 0x90, 0x84, 0x69, 0xc1, 0x91, 0x84, 0x6a, 0xc3, 0x90, 0x84, 0x6a, 0xc1, - 0x91, 0x84, 0x6b, 0xc3, 0x90, 0x84, 0x6c, 0xc1, 0x91, 0x84, 0x6c, 0xc3, - 0x90, 0x84, 0x6d, 0xc1, 0x91, 0x84, 0x6e, 0xc3, 0x90, 0x84, 0x6e, 0xc1, - 0x91, 0x84, 0x6f, 0xc3, 0x90, 0x84, 0x70, 0xc1, 0x91, 0x84, 0x70, 0xc3, - 0x90, 0x84, 0x71, 0xc1, 0x91, 0x84, 0x72, 0xc3, 0x90, 0x84, 0x72, 0xc1, - 0x91, 0x84, 0x73, 0xc3, 0x90, 0x84, 0x73, 0xc1, 0x91, 0x84, 0x74, 0xc3, - 0x90, 0x84, 0x75, 0xc1, 0x91, 0x84, 0x75, 0xc3, 0x90, 0x84, 0x76, 0xc1, - 0x91, 0x84, 0x76, 0xc3, 0x90, 0x84, 0x77, 0xc1, 0x91, 0x84, 0x78, 0xc3, - 0x90, 0x84, 0x78, 0xc1, 0x91, 0x84, 0x79, 0xbf, 0x91, 0x84, 0x79, 0xc1, - 0x91, 0x84, 0x7a, 0xbf, 0x91, 0x84, 0x7a, 0xc1, 0x91, 0x84, 0x7b, 0xbf, - 0x91, 0x84, 0x7c, 0xc1, 0x91, 0x84, 0x7c, 0xbf, 0x91, 0x84, 0x7d, 0xc1, - 0x91, 0x84, 0x7d, 0xbf, 0x91, 0x84, 0x7e, 0xc1, 0x91, 0x84, 0x7e, 0xbf, - 0x91, 0x84, 0x7f, 0xc1, 0x91, 0x84, 0x7f, 0xbf, 0x91, 0x84, 0x80, 0xc1, - 0x91, 0x84, 0x81, 0xbf, 0x91, 0x84, 0x81, 0xc1, 0x91, 0x84, 0x82, 0xbf, - 0x91, 0x84, 0x82, 0xc1, 0x91, 0x84, 0x83, 0xbf, 0x91, 0x84, 0x83, 0xc1, - 0x91, 0x84, 0x84, 0xbf, 0x91, 0x84, 0x84, 0xc1, 0x91, 0x84, 0x85, 0xbf, - 0x91, 0x84, 0x85, 0xc1, 0x91, 0x84, 0x86, 0xbf, 0x91, 0x84, 0x86, 0xc1, - 0x91, 0x84, 0x87, 0xbf, 0x91, 0x84, 0x87, 0xc1, 0x91, 0x84, 0x88, 0xbf, - 0x91, 0x84, 0x88, 0xc1, 0x91, 0x84, 0x89, 0xbf, 0x91, 0x84, 0x89, 0xc1, - 0x91, 0x84, 0x8a, 0xbf, 0x91, 0x84, 0x8a, 0xbf, 0x92, 0x84, 0x8b, 0xbf, - 0x91, 0x84, 0x8b, 0xbf, 0x92, 0x84, 0x8c, 0xbf, 0x91, 0x84, 0x8c, 0xbf, - 0x92, 0x84, 0x8d, 0xbf, 0x91, 0x84, 0x8d, 0xbf, 0x92, 0x84, 0x8e, 0xbf, - 0x91, 0x84, 0x8e, 0xbf, 0x92, 0x84, 0x8e, 0xbf, 0x91, 0x84, 0x8f, 0xbf, - 0x92, 0x84, 0x8f, 0xbf, 0x91, 0x84, 0x90, 0xbf, 0x92, 0x84, 0x90, 0xbf, - 0x91, 0x84, 0x91, 0xbf, 0x92, 0x84, 0x91, 0xbf, 0x91, 0x83, 0x91, 0xbf, - 0x92, 0x84, 0x91, 0xbf, 0x92, 0x83, 0x91, 0xbf, 0x93, 0x84, 0x95, 0xbf, - 0x93, 0x84, 0x95, 0xbf, 0x94, 0x84, 0x95, 0xbf, 0x94, 0x84, 0x95, 0xbf, - 0x94, 0x84, 0x95, 0xbe, 0x95, 0x84, 0x95, 0xbf, 0x94, 0x84, 0x96, 0xbe, - 0x95, 0x84, 0x96, 0xbf, 0x94, 0x84, 0x97, 0xbe, 0x95, 0x84, 0x97, 0xbf, - 0x94, 0x84, 0x98, 0xbe, 0x95, 0x84, 0x98, 0xbf, 0x94, 0x84, 0x98, 0xbe, - 0x95, 0x84, 0x99, 0xbc, 0x9a, 0x84, 0x99, 0xbc, 0x9a, 0x84, 0x9a, 0xbc, - 0x9a, 0x84, 0x9a, 0xbc, 0x9a, 0x84, 0x9a, 0xbc, 0x9a, 0x84, 0x9b, 0xbc, - 0x9b, 0x84, 0x9b, 0xbc, 0x9b, 0x84, 0x9c, 0xbc, 0x9c, 0x84, 0x9c, 0xbc, - 0x9c, 0x84, 0x9d, 0xbc, 0x9d, 0x84, 0x9d, 0xbd, 0x9f, 0x84, 0x9d, 0xbd, - 0x9f, 0x84, 0x9e, 0xbd, 0x9f, 0x84, 0x9e, 0xbd, 0x9f, 0x84, 0x9f, 0xbd, - 0x9f, 0x84, 0x9f, 0xbd, 0x9f, 0x84, 0x9f, 0xbd, 0x9f, 0x84, 0xa0, 0xbd, - 0xa0, 0x84, 0xa0, 0xbd, 0xa0, 0x84, 0xa1, 0xbd, 0xa1, 0x84, 0xa1, 0xbd, - 0xa1, 0x84, 0xa1, 0xbd, 0xa3, 0x84, 0xa2, 0xbd, 0xa3, 0x84, 0xa2, 0xbd, - 0xa3, 0x84, 0xa3, 0xbd, 0xa3, 0x84, 0xa3, 0xbd, 0xa3, 0x84, 0xa3, 0xbd, - 0xa3, 0x84, 0xa4, 0xbd, 0xa4, 0x84, 0xa4, 0xbd, 0xa4, 0x84, 0xa5, 0xbd, - 0xa5, 0x84, 0xa5, 0xbd, 0xa5, 0x84, 0xa5, 0xbf, 0xa6, 0x84, 0xa6, 0xbf, - 0xa6, 0x84, 0xa6, 0xbf, 0xa7, 0x84, 0xa6, 0xbf, 0xa6, 0x84, 0xa6, 0xbf, - 0xa7, 0x84, 0xa6, 0xbf, 0xa7, 0x84, 0xa6, 0xbf, 0xa8, 0x84, 0xa6, 0xbf, - 0xa8, 0x84, 0xa6, 0xbf, 0xa8, 0x84, 0xa6, 0xbf, 0xa9, 0x84, 0xa6, 0xbf, - 0xa9, 0x84, 0xa6, 0xbf, 0xaa, 0x84, 0xa6, 0xbf, 0xaa, 0x84, 0xa6, 0xbf, - 0xaa, 0x84, 0xa6, 0xbf, 0xab, 0x84, 0xa9, 0xbf, 0xab, 0x7e, 0xa9, 0xbf, - 0xab, 0x7e, 0xa9, 0xbf, 0xac, 0x7e, 0xa9, 0xbf, 0xac, 0x7e, 0xa9, 0xbf, - 0xac, 0x7e, 0xa9, 0xbf, 0xad, 0x7e, 0xa9, 0xbf, 0xad, 0x7e, 0xa9, 0xbf, - 0xae, 0x7e, 0xaa, 0xbf, 0xae, 0x7d, 0xa9, 0xbf, 0xae, 0x7e, 0xaa, 0xbf, - 0xaf, 0x7d, 0xa9, 0xbf, 0xaf, 0x7e, 0xaa, 0xbf, 0xaf, 0x7d, 0xa9, 0xbf, - 0xb0, 0x7e, 0xaa, 0xbf, 0xb0, 0x7d, 0xa9, 0xbf, 0xb0, 0x7e, 0xaa, 0xbf, - 0xb1, 0x7d, 0xa9, 0xbf, 0xb1, 0x7e, 0xaa, 0xbf, 0xb2, 0x7d, 0xa9, 0xbf, - 0xb2, 0x7e, 0xaa, 0xbf, 0xb2, 0x7d, 0xa9, 0xbf, 0xb3, 0x7e, 0xaa, 0xbf, - 0xb3, 0x7d, 0xa9, 0xbf, 0xb3, 0x7e, 0xaa, 0xbf, 0xb4, 0x7d, 0xa9, 0xbf, - 0xb4, 0x7e, 0xaa, 0xbf, 0xb4, 0x7d, 0xa9, 0xbf, 0xb5, 0x7e, 0xaa, 0xbf, - 0xb5, 0x7d, 0xa9, 0xbf, 0xb5, 0x7e, 0xaa, 0xbf, 0xb6, 0x7d, 0xa9, 0xbf, - 0xb6, 0x7e, 0xba, 0xbf, 0xb6, 0x72, 0xba, 0xbf, 0xb7, 0x72, 0xba, 0xbf, - 0xb7, 0x72, 0xba, 0xbf, 0xb7, 0x72, 0xba, 0xbf, 0xb8, 0x72, 0xba, 0xbf, - 0xb8, 0x72, 0xba, 0xbf, 0xb8, 0x72, 0xba, 0xbf, 0xb9, 0x72, 0xba, 0xbf, - 0xb9, 0x72, 0xbd, 0xbf, 0xb9, 0x73, 0xba, 0xbf, 0xba, 0x72, 0xbd, 0xbf, - 0xba, 0x73, 0xbe, 0xbf, 0xba, 0x73, 0xbd, 0xbf, 0xbb, 0x73, 0xbe, 0xbf, - 0xbb, 0x73, 0xbd, 0xbf, 0xbb, 0x73, 0xbe, 0xbf, 0xbc, 0x73, 0xbd, 0xbf, - 0xbc, 0x73, 0xbe, 0xbf, 0xbc, 0x73, 0xbd, 0xbf, 0xbd, 0x73, 0xbe, 0xbf, - 0xbd, 0x73, 0xbd, 0xbf, 0xbd, 0x73, 0xc1, 0xbf, 0xbe, 0x74, 0xc1, 0xbf, - 0xbe, 0x74, 0xc1, 0xbf, 0xbe, 0x74, 0xc1, 0xbf, 0xbf, 0x74, 0xc1, 0xbf, - 0xbf, 0x74, 0xc1, 0xbf, 0xbf, 0x74, 0xc1, 0xbf, 0xc0, 0x74, 0xc1, 0xbf, - 0xc0, 0x74, 0xc1, 0xbf, 0xc0, 0x74, 0xc1, 0xbf, 0xc1, 0x74, 0xc1, 0xbf, - 0xc1, 0x74, 0xc4, 0xbf, 0xc1, 0x75, 0xc5, 0xbf, 0xc1, 0x75, 0xc4, 0xbf, - 0xc2, 0x75, 0xc5, 0xbf, 0xc2, 0x75, 0xc4, 0xbf, 0xc2, 0x75, 0xc5, 0xbf, - 0xc3, 0x75, 0xc4, 0xbf, 0xc3, 0x75, 0xc5, 0xbf, 0xc3, 0x75, 0xc4, 0xbf, - 0xc4, 0x75, 0xc5, 0xbf, 0xc4, 0x75, 0xc4, 0xbf, 0xc4, 0x75, 0xc8, 0xbf, - 0xc5, 0x76, 0xc8, 0xbf, 0xc5, 0x76, 0xc8, 0xbf, 0xc5, 0x76, 0xc8, 0xbf, - 0xc6, 0x76, 0xc8, 0xbf, 0xc6, 0x76, 0xc8, 0xbf, 0xc6, 0x76, 0xc8, 0xbf, - 0xc6, 0x76, 0xc8, 0xbf, 0xc7, 0x76, 0xc8, 0xbf, 0xc7, 0x76, 0xc8, 0xbf, - 0xc7, 0x76, 0xc8, 0xbf, 0xc8, 0x76, 0xcb, 0xbf, 0xc8, 0x77, 0xcb, 0xbf, - 0xc8, 0x77, 0xcb, 0xbf, 0xc9, 0x77, 0xcb, 0xbf, 0xc9, 0x77, 0xcb, 0xbf, - 0xc9, 0x77, 0xcb, 0xbf, 0xc9, 0x77, 0xcb, 0xbf, 0xca, 0x77, 0xcb, 0xbf, - 0xca, 0x77, 0xcb, 0xbf, 0xca, 0x77, 0xcb, 0xbf, 0xcb, 0x77, 0xcb, 0xbf, - 0xcb, 0x77, 0xcb, 0xbf, 0xcb, 0x77, 0xcc, 0xbf, 0xcc, 0x77, 0xce, 0xbf, - 0xcc, 0x78, 0xce, 0xbf, 0xcc, 0x78, 0xce, 0xbf, 0xcc, 0x78, 0xce, 0xbf, - 0xcd, 0x78, 0xce, 0xbf, 0xcd, 0x78, 0xce, 0xbf, 0xcd, 0x78, 0xce, 0xbf, - 0xce, 0x78, 0xce, 0xbf, 0xce, 0x78, 0xce, 0xbf, 0xce, 0x78, 0xce, 0xbf, - 0xce, 0x78, 0xce, 0xbf, 0xcf, 0x78, 0xce, 0xbf, 0xcf, 0x78, 0xce, 0xbf, - 0xcf, 0x78, 0xce, 0xbf, 0xd0, 0x78, 0xce, 0xbf, 0xd0, 0x78, 0xce, 0xbf, - 0xd0, 0x78, 0xce, 0xbf, 0xd0, 0x78, 0xce, 0xbf, 0xd1, 0x78, 0xce, 0xbf, - 0xd1, 0x78, 0xce, 0xbf, 0xd1, 0x78, 0xce, 0xbf, 0xd2, 0x78, 0xce, 0xbf, - 0xd2, 0x78, 0xce, 0xbf, 0xd2, 0x78, 0xce, 0xbf, 0xd2, 0x78, 0xce, 0xbf, - 0xd3, 0x78, 0xce, 0xbf, 0xd3, 0x78, 0xce, 0xbf, 0xd3, 0x78, 0xce, 0xbf, - 0xd4, 0x78, 0xd4, 0xbf, 0xd4, 0x93, 0xd4, 0xbf, 0xd4, 0x93, 0xd4, 0xbf, - 0xd4, 0x93, 0xd5, 0xbf, 0xd5, 0x93, 0xd5, 0xbf, 0xd5, 0x93, 0xd5, 0xbf, - 0xd5, 0x93, 0xd6, 0xbf, 0xd6, 0x93, 0xd6, 0xbf, 0xd6, 0x93, 0xd6, 0xbf, - 0xd6, 0x93, 0xd6, 0xbf, 0xd6, 0x93, 0xd6, 0xbf, 0xd7, 0x93, 0xd6, 0xbf, - 0xd7, 0x93, 0xd6, 0xbf, 0xd7, 0x93, 0xd6, 0xbf, 0xd7, 0x93, 0xd6, 0xbf, - 0xd8, 0x93, 0xd6, 0xbf, 0xd8, 0x93, 0xd6, 0xbf, 0xd8, 0x93, 0xd6, 0xbf, - 0xd9, 0x93, 0xd6, 0xbf, 0xd9, 0x93, 0xd9, 0xbf, 0xd9, 0x94, 0xd9, 0xbf, - 0xd9, 0x94, 0xd9, 0xbf, 0xda, 0x94, 0xd9, 0xbf, 0xda, 0x94, 0xd9, 0xbf, - 0xda, 0x94, 0xd9, 0xbf, 0xda, 0x94, 0xd9, 0xbf, 0xdb, 0x94, 0xd9, 0xbf, - 0xdb, 0x94, 0xd9, 0xbf, 0xdb, 0x94, 0xd9, 0xbf, 0xdb, 0x94, 0xd9, 0xbf, - 0xdc, 0x94, 0xdc, 0xbf, 0xdc, 0x95, 0xdc, 0xbf, 0xdc, 0x95, 0xdc, 0xbf, - 0xdd, 0x95, 0xdc, 0xbf, 0xdd, 0x95, 0xdc, 0xbf, 0xdd, 0x95, 0xdc, 0xbf, - 0xdd, 0x95, 0xdc, 0xbf, 0xde, 0x95, 0xdc, 0xbf, 0xde, 0x95, 0xdc, 0xbf, - 0xde, 0x95, 0xdc, 0xbf, 0xde, 0x95, 0xdc, 0xbf, 0xdf, 0x95, 0xdf, 0xbf, - 0xdf, 0x96, 0xdc, 0xbf, 0xdf, 0x95, 0xdf, 0xbf, 0xdf, 0x96, 0xdf, 0xbf, - 0xe0, 0x96, 0xdf, 0xbf, 0xe0, 0x96, 0xdf, 0xbf, 0xe0, 0x96, 0xdf, 0xbf, - 0xe1, 0x96, 0xea, 0xbf, 0xe1, 0x86, 0xea, 0xbf, 0xe1, 0x84, 0xea, 0xbf, - 0xe1, 0x86, 0xea, 0xbf, 0xe2, 0x84, 0xea, 0xbf, 0xe2, 0x86, 0xea, 0xbf, - 0xe2, 0x84, 0xea, 0xbf, 0xe2, 0x86, 0xea, 0xbf, 0xe3, 0x84, 0xea, 0xbf, - 0xe3, 0x86, 0xea, 0xbf, 0xe3, 0x84, 0xea, 0xbf, 0xe3, 0x86, 0xea, 0xbf, - 0xe4, 0x84, 0xea, 0xbf, 0xe4, 0x86, 0xea, 0xbf, 0xe4, 0x84, 0xea, 0xbf, - 0xe4, 0x86, 0xea, 0xbf, 0xe5, 0x84, 0xea, 0xbf, 0xe5, 0x86, 0xea, 0xbf, - 0xe5, 0x84, 0xea, 0xbf, 0xe5, 0x86, 0xea, 0xbf, 0xe6, 0x84, 0xea, 0xbf, - 0xe6, 0x86, 0xea, 0xbf, 0xe6, 0x84, 0xea, 0xbf, 0xe6, 0x86, 0xea, 0xbf, - 0xe7, 0x84, 0xea, 0xbf, 0xe7, 0x86, 0xea, 0xbf, 0xe7, 0x84, 0xea, 0xbf, - 0xe7, 0x86, 0xea, 0xbf, 0xe8, 0x84, 0xea, 0xbf, 0xe8, 0x86, 0xea, 0xbf, - 0xe8, 0x84, 0xea, 0xbf, 0xe8, 0x86, 0xea, 0xbf, 0xe9, 0x84, 0xea, 0xbf, - 0xe9, 0x86, 0xea, 0xbf, 0xe9, 0x84, 0xea, 0xbf, 0xe9, 0x84, 0xea, 0xbf, - 0xea, 0x84, 0xea, 0xbf, 0xea, 0x84, 0xea, 0xbf, 0xea, 0x84, 0xea, 0xbf, - 0xea, 0x84, 0xeb, 0xbf, 0xea, 0x84, 0xeb, 0xbf, 0xea, 0x84, 0xeb, 0xbf, - 0xea, 0x84, 0xeb, 0xbf, 0xea, 0x84, 0xec, 0xbf, 0xea, 0x84, 0xec, 0xbf, - 0xea, 0x84, 0xec, 0xbd, 0xea, 0x84, 0xec, 0xbf, 0xea, 0x84, 0xec, 0xbd, - 0xea, 0x84, 0xed, 0xbf, 0xea, 0x84, 0xed, 0xbd, 0xea, 0x84, 0xed, 0xbf, - 0xea, 0x84, 0xed, 0xbd, 0xea, 0x84, 0xee, 0xbf, 0xea, 0x84, 0xee, 0xbd, - 0xea, 0x84, 0xee, 0xbf, 0xea, 0x84, 0xee, 0xbd, 0xea, 0x84, 0xef, 0xc5, - 0xef, 0x84, 0xef, 0xc5, 0xef, 0x84, 0xef, 0xc5, 0xef, 0x84, 0xef, 0xc5, - 0xef, 0x84, 0xf0, 0xc5, 0xef, 0x84, 0xf0, 0xc5, 0xef, 0x84, 0xf0, 0xc5, - 0xef, 0x84, 0xf0, 0xbf, 0xf5, 0x84, 0xf1, 0xc1, 0xf5, 0x84, 0xf1, 0xbf, - 0xf5, 0x84, 0xf1, 0xc1, 0xf5, 0x84, 0xf1, 0xbf, 0xf5, 0x84, 0xf2, 0xc1, - 0xf5, 0x84, 0xf2, 0xbf, 0xf5, 0x84, 0xf2, 0xc1, 0xf5, 0x84, 0xf2, 0xbf, - 0xf5, 0x84, 0xf2, 0xc1, 0xf5, 0x84, 0xf3, 0xbf, 0xf5, 0x84, 0xf3, 0xc1, - 0xf5, 0x84, 0xf3, 0xbf, 0xf5, 0x84, 0xf3, 0xbf, 0xf5, 0x84, 0xf4, 0xbf, - 0xf5, 0x84, 0xf4, 0xbf, 0xf5, 0x84, 0xf4, 0xbf, 0xf5, 0x84, 0xf4, 0xbf, - 0xf5, 0x84, 0xf5, 0xbf, 0xf5, 0x84, 0xf5, 0xbf, 0xf5, 0x84, 0xf5, 0xbf, - 0xf5, 0x84, 0xf5, 0xbf, 0xf5, 0x84, 0xf5, 0xbf, 0xf5, 0x84, 0xf5, 0xbf, - 0xf6, 0x84, 0xf5, 0xbf, 0xf6, 0x82, 0xf5, 0xbf, 0xf6, 0x84, 0xf5, 0xbf, - 0xf6, 0x82, 0xf5, 0xbf, 0xf7, 0x84, 0xf9, 0xbf, 0xf7, 0x84, 0xf8, 0xbf, - 0xf7, 0x86, 0xf9, 0xbf, 0xf7, 0x84, 0xf8, 0xbf, 0xf8, 0x86, 0xf9, 0xbf, - 0xf8, 0x84, 0xf9, 0xbf, 0xf8, 0x84, 0xf9, 0xbf, 0xf8, 0x84, 0xf9, 0xbf, - 0xf8, 0x84, 0xf9, 0xbf, 0xf8, 0x84, 0xf9, 0xbf, 0xf8, 0x84, 0xf9, 0xbf, - 0xf8, 0x84, 0xf9, 0xbf, 0xf8, 0x84, 0xfa, 0xbd, 0xf9, 0x84, 0xfa, 0xbf, - 0xf8, 0x84, 0xfa, 0xbd, 0xf9, 0x84, 0xfa, 0xbf, 0xf8, 0x84, 0xfa, 0xbd, - 0xf9, 0x84, 0xfb, 0xbf, 0xf8, 0x84, 0xfb, 0xbd, 0xf9, 0x84, 0xfb, 0xbf, - 0xf8, 0x84, 0xfb, 0xbd, 0xf9, 0x84, 0xfc, 0xbf, 0xf8, 0x84, 0xfc, 0xbd, - 0xf9, 0x84, 0xfc, 0xbf, 0xf8, 0x84, 0xfc, 0xbd, 0xf9, 0x84, 0xfc, 0xbf, - 0xf8, 0x84, 0xfd, 0xbd, 0xf9, 0x84, 0xfd, 0xbf, 0xf8, 0x84, 0xfd, 0xbd, - 0xf9, 0x84, 0xfd, 0xbf, 0xf8, 0x84, 0xfe, 0xbd, 0xf9, 0x84, 0xfe, 0xbf, - 0xf8, 0x84, 0xfe, 0xbd, 0xf9, 0x84, 0xfe, 0xbb, 0xf9, 0x84, 0xfe, 0xbd, - 0xf9, 0x84, 0xff, 0xbd, 0xf9, 0x84, 0xff, 0xbd, 0xf9, 0x84, 0x03, 0xc5, - 0x90, 0x85, 0x0a, 0xc7, 0x8f, 0x85, 0x0f, 0xc5, 0x90, 0x85, 0x14, 0xc7, - 0x8f, 0x85, 0x17, 0xc5, 0x90, 0x85, 0x1b, 0xc7, 0x8f, 0x85, 0x1e, 0xc5, - 0x90, 0x85, 0x20, 0xc7, 0x8f, 0x85, 0x23, 0xc5, 0x90, 0x85, 0x25, 0xc7, - 0x8f, 0x85, 0x27, 0xc5, 0x90, 0x85, 0x29, 0xc3, 0x90, 0x85, 0x2b, 0xc5, - 0x90, 0x85, 0x2d, 0xc3, 0x90, 0x85, 0x2f, 0xc5, 0x90, 0x85, 0x31, 0xc3, - 0x90, 0x85, 0x32, 0xc5, 0x90, 0x85, 0x34, 0xc3, 0x90, 0x85, 0x35, 0xc5, - 0x90, 0x85, 0x37, 0xc3, 0x90, 0x85, 0x38, 0xc5, 0x90, 0x85, 0x3a, 0xc3, - 0x90, 0x85, 0x3b, 0xc5, 0x90, 0x85, 0x3c, 0xc3, 0x90, 0x85, 0x3e, 0xc5, - 0x90, 0x85, 0x3f, 0xc3, 0x90, 0x85, 0x40, 0xc5, 0x90, 0x85, 0x42, 0xc3, - 0x90, 0x85, 0x43, 0xc5, 0x90, 0x85, 0x44, 0xc3, 0x90, 0x85, 0x45, 0xc5, - 0x90, 0x85, 0x46, 0xc3, 0x90, 0x85, 0x47, 0xc5, 0x90, 0x85, 0x48, 0xc3, - 0x90, 0x85, 0x49, 0xc5, 0x90, 0x85, 0x4a, 0xc3, 0x90, 0x85, 0x4b, 0xc5, - 0x90, 0x85, 0x4c, 0xc3, 0x90, 0x85, 0x4d, 0xc5, 0x90, 0x85, 0x4e, 0xc3, - 0x90, 0x85, 0x4f, 0xc5, 0x90, 0x85, 0x50, 0xc3, 0x90, 0x85, 0x51, 0xc5, - 0x90, 0x85, 0x52, 0xc3, 0x90, 0x85, 0x53, 0xc5, 0x90, 0x85, 0x54, 0xc3, - 0x90, 0x85, 0x55, 0xc5, 0x90, 0x85, 0x56, 0xc3, 0x90, 0x85, 0x57, 0xc5, - 0x90, 0x85, 0x58, 0xc3, 0x90, 0x85, 0x58, 0xc5, 0x90, 0x85, 0x59, 0xc3, - 0x90, 0x85, 0x5a, 0xc1, 0x91, 0x85, 0x5b, 0xc3, 0x90, 0x85, 0x5c, 0xc1, - 0x91, 0x85, 0x5d, 0xc3, 0x90, 0x85, 0x5d, 0xc1, 0x91, 0x85, 0x5e, 0xc3, - 0x90, 0x85, 0x5f, 0xc1, 0x91, 0x85, 0x60, 0xc3, 0x90, 0x85, 0x60, 0xc1, - 0x91, 0x85, 0x61, 0xc3, 0x90, 0x85, 0x62, 0xc1, 0x91, 0x85, 0x63, 0xc3, - 0x90, 0x85, 0x63, 0xc1, 0x91, 0x85, 0x64, 0xc3, 0x90, 0x85, 0x65, 0xc1, - 0x91, 0x85, 0x66, 0xc3, 0x90, 0x85, 0x66, 0xc1, 0x91, 0x85, 0x67, 0xc3, - 0x90, 0x85, 0x68, 0xc1, 0x91, 0x85, 0x68, 0xc3, 0x90, 0x85, 0x69, 0xc1, - 0x91, 0x85, 0x6a, 0xc3, 0x90, 0x85, 0x6a, 0xc1, 0x91, 0x85, 0x6b, 0xc3, - 0x90, 0x85, 0x6c, 0xc1, 0x91, 0x85, 0x6c, 0xc3, 0x90, 0x85, 0x6d, 0xc1, - 0x91, 0x85, 0x6e, 0xc3, 0x90, 0x85, 0x6e, 0xc1, 0x91, 0x85, 0x6f, 0xc3, - 0x90, 0x85, 0x70, 0xc1, 0x91, 0x85, 0x70, 0xc3, 0x90, 0x85, 0x71, 0xc1, - 0x91, 0x85, 0x72, 0xc3, 0x90, 0x85, 0x72, 0xc1, 0x91, 0x85, 0x73, 0xc3, - 0x90, 0x85, 0x73, 0xc1, 0x91, 0x85, 0x74, 0xc3, 0x90, 0x85, 0x75, 0xc1, - 0x91, 0x85, 0x75, 0xc3, 0x90, 0x85, 0x76, 0xc1, 0x91, 0x85, 0x76, 0xc3, - 0x90, 0x85, 0x77, 0xc1, 0x91, 0x85, 0x78, 0xc3, 0x90, 0x85, 0x78, 0xc1, - 0x91, 0x85, 0x79, 0xc3, 0x90, 0x85, 0x79, 0xc1, 0x91, 0x85, 0x7a, 0xc3, - 0x90, 0x85, 0x7a, 0xc1, 0x91, 0x85, 0x7b, 0xc3, 0x90, 0x85, 0x7c, 0xc1, - 0x91, 0x85, 0x7c, 0xc3, 0x90, 0x85, 0x7d, 0xc1, 0x91, 0x85, 0x7d, 0xc3, - 0x90, 0x85, 0x7e, 0xc1, 0x91, 0x85, 0x7e, 0xc3, 0x90, 0x85, 0x7f, 0xc1, - 0x91, 0x85, 0x7f, 0xbf, 0x91, 0x85, 0x80, 0xc1, 0x91, 0x85, 0x81, 0xbf, - 0x91, 0x85, 0x81, 0xc1, 0x91, 0x85, 0x82, 0xbf, 0x91, 0x85, 0x82, 0xc1, - 0x91, 0x85, 0x83, 0xbf, 0x91, 0x85, 0x83, 0xc1, 0x91, 0x85, 0x84, 0xbf, - 0x91, 0x85, 0x84, 0xc1, 0x91, 0x85, 0x85, 0xbf, 0x91, 0x85, 0x85, 0xc1, - 0x91, 0x85, 0x86, 0xbf, 0x91, 0x85, 0x86, 0xc1, 0x91, 0x85, 0x87, 0xbf, - 0x91, 0x85, 0x87, 0xc1, 0x91, 0x85, 0x88, 0xbf, 0x91, 0x85, 0x88, 0xc1, - 0x91, 0x85, 0x89, 0xbf, 0x91, 0x85, 0x89, 0xc1, 0x91, 0x85, 0x8a, 0xbf, - 0x91, 0x85, 0x8a, 0xc1, 0x91, 0x85, 0x8b, 0xbf, 0x91, 0x85, 0x8b, 0xc1, - 0x91, 0x85, 0x8c, 0xbf, 0x91, 0x85, 0x8c, 0xc1, 0x91, 0x85, 0x8d, 0xbf, - 0x91, 0x85, 0x8d, 0xc1, 0x91, 0x85, 0x8e, 0xbf, 0x91, 0x85, 0x8e, 0xbf, - 0x92, 0x85, 0x8e, 0xbf, 0x91, 0x85, 0x8f, 0xbf, 0x92, 0x85, 0x8f, 0xbf, - 0x91, 0x85, 0x90, 0xbf, 0x92, 0x85, 0x90, 0xbf, 0x91, 0x85, 0x91, 0xbf, - 0x92, 0x85, 0x91, 0xbf, 0x91, 0x84, 0x91, 0xbf, 0x92, 0x85, 0x91, 0xbf, - 0x92, 0x84, 0x91, 0xbf, 0x93, 0x85, 0x95, 0xbf, 0x93, 0x85, 0x95, 0xbf, - 0x94, 0x85, 0x95, 0xbf, 0x94, 0x85, 0x95, 0xbf, 0x94, 0x85, 0x95, 0xbf, - 0x94, 0x85, 0x95, 0xbf, 0x94, 0x85, 0x96, 0xbf, 0x94, 0x85, 0x96, 0xbf, - 0x94, 0x85, 0x97, 0xbe, 0x95, 0x85, 0x97, 0xbf, 0x94, 0x85, 0x98, 0xbe, - 0x95, 0x85, 0x98, 0xbf, 0x94, 0x85, 0x98, 0xbe, 0x95, 0x85, 0x99, 0xbc, - 0x99, 0x85, 0x99, 0xbc, 0x99, 0x85, 0x9a, 0xbc, 0x9a, 0x85, 0x9a, 0xbc, - 0x9a, 0x85, 0x9a, 0xbc, 0x9c, 0x85, 0x9b, 0xbc, 0x9d, 0x85, 0x9b, 0xbc, - 0x9c, 0x85, 0x9c, 0xbc, 0x9d, 0x85, 0x9c, 0xbc, 0x9c, 0x85, 0x9d, 0xbc, - 0x9d, 0x85, 0x9d, 0xbc, 0x9d, 0x85, 0x9d, 0xbc, 0x9d, 0x85, 0x9e, 0xbc, - 0x9e, 0x85, 0x9e, 0xbc, 0x9e, 0x85, 0x9f, 0xbc, 0x9f, 0x85, 0x9f, 0xbd, - 0xa1, 0x85, 0x9f, 0xbd, 0xa1, 0x85, 0xa0, 0xbd, 0xa1, 0x85, 0xa0, 0xbd, - 0xa1, 0x85, 0xa1, 0xbd, 0xa1, 0x85, 0xa1, 0xbd, 0xa1, 0x85, 0xa1, 0xbd, - 0xa1, 0x85, 0xa2, 0xbd, 0xa2, 0x85, 0xa2, 0xbd, 0xa2, 0x85, 0xa3, 0xbd, - 0xa3, 0x85, 0xa3, 0xbd, 0xa3, 0x85, 0xa3, 0xbe, 0xa5, 0x85, 0xa4, 0xbe, - 0xa5, 0x85, 0xa4, 0xbe, 0xa5, 0x85, 0xa5, 0xbf, 0xa6, 0x85, 0xa5, 0xbe, - 0xa5, 0x85, 0xa5, 0xbf, 0xa6, 0x85, 0xa6, 0xbf, 0xa6, 0x85, 0xa6, 0xbf, - 0xa6, 0x84, 0xa6, 0xbf, 0xa6, 0x85, 0xa6, 0xbf, 0xa7, 0x84, 0xa6, 0xbf, - 0xa7, 0x85, 0xa6, 0xbf, 0xa8, 0x84, 0xa6, 0xbf, 0xa8, 0x85, 0xa6, 0xbf, - 0xa8, 0x84, 0xa6, 0xbf, 0xa9, 0x85, 0xa6, 0xbf, 0xa9, 0x84, 0xa6, 0xbf, - 0xaa, 0x85, 0xa6, 0xbf, 0xaa, 0x84, 0xa6, 0xbf, 0xaa, 0x85, 0xa6, 0xbf, - 0xab, 0x84, 0xa9, 0xbf, 0xab, 0x7f, 0xa9, 0xbf, 0xab, 0x7f, 0xa9, 0xbf, - 0xac, 0x7f, 0xa9, 0xbf, 0xac, 0x7f, 0xa9, 0xbf, 0xac, 0x7f, 0xa9, 0xbf, - 0xad, 0x7f, 0xa9, 0xbf, 0xad, 0x7f, 0xa9, 0xbf, 0xae, 0x7f, 0xaa, 0xbf, - 0xae, 0x7e, 0xa9, 0xbf, 0xae, 0x7f, 0xaa, 0xbf, 0xaf, 0x7e, 0xa9, 0xbf, - 0xaf, 0x7f, 0xaa, 0xbf, 0xaf, 0x7e, 0xa9, 0xbf, 0xb0, 0x7f, 0xaa, 0xbf, - 0xb0, 0x7e, 0xa9, 0xbf, 0xb0, 0x7f, 0xaa, 0xbf, 0xb1, 0x7e, 0xa9, 0xbf, - 0xb1, 0x7f, 0xaa, 0xbf, 0xb2, 0x7e, 0xa9, 0xbf, 0xb2, 0x7f, 0xaa, 0xbf, - 0xb2, 0x7e, 0xa9, 0xbf, 0xb3, 0x7f, 0xaa, 0xbf, 0xb3, 0x7e, 0xa9, 0xbf, - 0xb3, 0x7f, 0xaa, 0xbf, 0xb4, 0x7e, 0xa9, 0xbf, 0xb4, 0x7f, 0xaa, 0xbf, - 0xb4, 0x7e, 0xa9, 0xbf, 0xb5, 0x7f, 0xaa, 0xbf, 0xb5, 0x7e, 0xa9, 0xbf, - 0xb5, 0x7f, 0xaa, 0xbf, 0xb6, 0x7e, 0xa9, 0xbf, 0xb6, 0x7f, 0xb8, 0xbf, - 0xb6, 0x72, 0xb8, 0xbf, 0xb7, 0x72, 0xb8, 0xbf, 0xb7, 0x72, 0xbb, 0xbf, - 0xb7, 0x73, 0xbc, 0xbf, 0xb8, 0x73, 0xbb, 0xbf, 0xb8, 0x73, 0xbc, 0xbf, - 0xb8, 0x73, 0xbb, 0xbf, 0xb9, 0x73, 0xbc, 0xbf, 0xb9, 0x73, 0xbb, 0xbf, - 0xb9, 0x73, 0xbc, 0xbf, 0xba, 0x73, 0xbb, 0xbf, 0xba, 0x73, 0xbc, 0xbf, - 0xba, 0x73, 0xbb, 0xbf, 0xbb, 0x73, 0xbf, 0xbf, 0xbb, 0x74, 0xbb, 0xbf, - 0xbb, 0x73, 0xbf, 0xbf, 0xbc, 0x74, 0xbf, 0xbf, 0xbc, 0x74, 0xbf, 0xbf, - 0xbc, 0x74, 0xbf, 0xbf, 0xbd, 0x74, 0xbf, 0xbf, 0xbd, 0x74, 0xbf, 0xbf, - 0xbd, 0x74, 0xbf, 0xbf, 0xbe, 0x74, 0xbf, 0xbf, 0xbe, 0x74, 0xbf, 0xbf, - 0xbe, 0x74, 0xbf, 0xbf, 0xbf, 0x74, 0xbf, 0xbf, 0xbf, 0x74, 0xc2, 0xbf, - 0xbf, 0x75, 0xc3, 0xbf, 0xc0, 0x75, 0xc2, 0xbf, 0xc0, 0x75, 0xc3, 0xbf, - 0xc0, 0x75, 0xc2, 0xbf, 0xc1, 0x75, 0xc3, 0xbf, 0xc1, 0x75, 0xc2, 0xbf, - 0xc1, 0x75, 0xc3, 0xbf, 0xc1, 0x75, 0xc2, 0xbf, 0xc2, 0x75, 0xc3, 0xbf, - 0xc2, 0x75, 0xc2, 0xbf, 0xc2, 0x75, 0xc3, 0xbf, 0xc3, 0x75, 0xc6, 0xbf, - 0xc3, 0x76, 0xc6, 0xbf, 0xc3, 0x76, 0xc6, 0xbf, 0xc4, 0x76, 0xc6, 0xbf, - 0xc4, 0x76, 0xc6, 0xbf, 0xc4, 0x76, 0xc6, 0xbf, 0xc5, 0x76, 0xc6, 0xbf, - 0xc5, 0x76, 0xc6, 0xbf, 0xc5, 0x76, 0xc6, 0xbf, 0xc6, 0x76, 0xc6, 0xbf, - 0xc6, 0x76, 0xc6, 0xbf, 0xc6, 0x76, 0xc9, 0xbf, 0xc6, 0x77, 0xca, 0xbf, - 0xc7, 0x77, 0xc9, 0xbf, 0xc7, 0x77, 0xca, 0xbf, 0xc7, 0x77, 0xc9, 0xbf, - 0xc8, 0x77, 0xca, 0xbf, 0xc8, 0x77, 0xc9, 0xbf, 0xc8, 0x77, 0xca, 0xbf, - 0xc9, 0x77, 0xc9, 0xbf, 0xc9, 0x77, 0xca, 0xbf, 0xc9, 0x77, 0xc9, 0xbf, - 0xc9, 0x77, 0xcd, 0xbf, 0xca, 0x78, 0xcd, 0xbf, 0xca, 0x78, 0xcd, 0xbf, - 0xca, 0x78, 0xcd, 0xbf, 0xcb, 0x78, 0xcd, 0xbf, 0xcb, 0x78, 0xcd, 0xbf, - 0xcb, 0x78, 0xcd, 0xbf, 0xcc, 0x78, 0xcd, 0xbf, 0xcc, 0x78, 0xcd, 0xbf, - 0xcc, 0x78, 0xcd, 0xbf, 0xcc, 0x78, 0xcd, 0xbf, 0xcd, 0x78, 0xcd, 0xbf, - 0xcd, 0x78, 0xcd, 0xbf, 0xcd, 0x78, 0xce, 0xbf, 0xce, 0x78, 0xce, 0xbf, - 0xce, 0x78, 0xce, 0xbf, 0xce, 0x78, 0xce, 0xbf, 0xce, 0x78, 0xce, 0xbf, - 0xcf, 0x78, 0xce, 0xbf, 0xcf, 0x78, 0xce, 0xbf, 0xcf, 0x78, 0xce, 0xbf, - 0xd0, 0x78, 0xce, 0xbf, 0xd0, 0x78, 0xce, 0xbf, 0xd0, 0x78, 0xce, 0xbf, - 0xd0, 0x78, 0xce, 0xbf, 0xd1, 0x78, 0xce, 0xbf, 0xd1, 0x78, 0xce, 0xbf, - 0xd1, 0x78, 0xce, 0xbf, 0xd2, 0x78, 0xce, 0xbf, 0xd2, 0x78, 0xd4, 0xbf, - 0xd2, 0x93, 0xd4, 0xbf, 0xd2, 0x93, 0xd4, 0xbf, 0xd3, 0x93, 0xd4, 0xbf, - 0xd3, 0x93, 0xd4, 0xbf, 0xd3, 0x93, 0xd4, 0xbf, 0xd4, 0x93, 0xd4, 0xbf, - 0xd4, 0x93, 0xd4, 0xbf, 0xd4, 0x93, 0xd4, 0xbf, 0xd4, 0x93, 0xd5, 0xbf, - 0xd5, 0x93, 0xd4, 0xbf, 0xd5, 0x93, 0xd5, 0xbf, 0xd5, 0x93, 0xd4, 0xbf, - 0xd6, 0x93, 0xd5, 0xbf, 0xd6, 0x93, 0xd4, 0xbf, 0xd6, 0x93, 0xd5, 0xbf, - 0xd6, 0x93, 0xd4, 0xbf, 0xd7, 0x93, 0xd5, 0xbf, 0xd7, 0x93, 0xd4, 0xbf, - 0xd7, 0x93, 0xd5, 0xbf, 0xd7, 0x93, 0xd8, 0xbf, 0xd8, 0x94, 0xd7, 0xbf, - 0xd8, 0x94, 0xd8, 0xbf, 0xd8, 0x94, 0xd7, 0xbf, 0xd9, 0x94, 0xd8, 0xbf, - 0xd9, 0x94, 0xd7, 0xbf, 0xd9, 0x94, 0xd8, 0xbf, 0xd9, 0x94, 0xd7, 0xbf, - 0xda, 0x94, 0xd8, 0xbf, 0xda, 0x94, 0xd7, 0xbf, 0xda, 0x94, 0xd8, 0xbf, - 0xda, 0x94, 0xdb, 0xbf, 0xdb, 0x95, 0xda, 0xbf, 0xdb, 0x95, 0xdb, 0xbf, - 0xdb, 0x95, 0xda, 0xbf, 0xdb, 0x95, 0xdb, 0xbf, 0xdc, 0x95, 0xda, 0xbf, - 0xdc, 0x95, 0xdb, 0xbf, 0xdc, 0x95, 0xda, 0xbf, 0xdd, 0x95, 0xdb, 0xbf, - 0xdd, 0x95, 0xda, 0xbf, 0xdd, 0x95, 0xdb, 0xbf, 0xdd, 0x95, 0xde, 0xbf, - 0xde, 0x96, 0xdd, 0xbf, 0xde, 0x96, 0xde, 0xbf, 0xde, 0x96, 0xdd, 0xbf, - 0xde, 0x96, 0xde, 0xbf, 0xdf, 0x96, 0xdd, 0xbf, 0xdf, 0x96, 0xde, 0xbf, - 0xdf, 0x96, 0xdd, 0xbf, 0xdf, 0x96, 0xde, 0xbf, 0xe0, 0x96, 0xdd, 0xbf, - 0xe0, 0x96, 0xde, 0xbf, 0xe0, 0x96, 0xe1, 0xbf, 0xe1, 0x97, 0xea, 0xbf, - 0xe1, 0x86, 0xea, 0xbf, 0xe1, 0x8a, 0xea, 0xbf, 0xe1, 0x86, 0xea, 0xbf, - 0xe2, 0x8a, 0xea, 0xbf, 0xe2, 0x86, 0xea, 0xbf, 0xe2, 0x8a, 0xea, 0xbf, - 0xe2, 0x86, 0xea, 0xbf, 0xe3, 0x8a, 0xea, 0xbf, 0xe3, 0x86, 0xea, 0xbf, - 0xe3, 0x8a, 0xea, 0xbf, 0xe3, 0x86, 0xea, 0xbf, 0xe4, 0x8a, 0xea, 0xbf, - 0xe4, 0x86, 0xea, 0xbf, 0xe4, 0x85, 0xea, 0xbf, 0xe4, 0x86, 0xea, 0xbf, - 0xe5, 0x85, 0xea, 0xbf, 0xe5, 0x86, 0xea, 0xbf, 0xe5, 0x85, 0xea, 0xbf, - 0xe5, 0x86, 0xea, 0xbf, 0xe6, 0x85, 0xea, 0xbf, 0xe6, 0x86, 0xea, 0xbf, - 0xe6, 0x85, 0xea, 0xbf, 0xe6, 0x86, 0xea, 0xbf, 0xe7, 0x85, 0xea, 0xbf, - 0xe7, 0x86, 0xea, 0xbf, 0xe7, 0x85, 0xea, 0xbf, 0xe7, 0x86, 0xea, 0xbf, - 0xe8, 0x85, 0xea, 0xbf, 0xe8, 0x86, 0xea, 0xbf, 0xe8, 0x85, 0xea, 0xbf, - 0xe8, 0x86, 0xea, 0xbf, 0xe9, 0x85, 0xea, 0xbf, 0xe9, 0x86, 0xea, 0xbf, - 0xe9, 0x85, 0xea, 0xbf, 0xe9, 0x86, 0xea, 0xbf, 0xea, 0x85, 0xea, 0xbf, - 0xea, 0x85, 0xea, 0xbf, 0xea, 0x85, 0xea, 0xbf, 0xea, 0x85, 0xeb, 0xbf, - 0xea, 0x85, 0xeb, 0xbf, 0xea, 0x85, 0xeb, 0xbf, 0xea, 0x85, 0xeb, 0xbf, - 0xea, 0x85, 0xec, 0xbf, 0xea, 0x85, 0xec, 0xbf, 0xea, 0x85, 0xec, 0xbd, - 0xea, 0x85, 0xec, 0xbf, 0xea, 0x85, 0xec, 0xbd, 0xea, 0x85, 0xed, 0xbf, - 0xea, 0x85, 0xed, 0xbd, 0xea, 0x85, 0xed, 0xbf, 0xea, 0x85, 0xed, 0xbd, - 0xea, 0x85, 0xee, 0xbf, 0xea, 0x85, 0xee, 0xbd, 0xea, 0x85, 0xee, 0xbf, - 0xea, 0x85, 0xee, 0xbd, 0xea, 0x85, 0xef, 0xc5, 0xed, 0x85, 0xef, 0xc5, - 0xed, 0x85, 0xef, 0xc5, 0xed, 0x85, 0xef, 0xc5, 0xef, 0x85, 0xf0, 0xc5, - 0xf0, 0x85, 0xf0, 0xc5, 0xf0, 0x85, 0xf0, 0xc5, 0xf0, 0x85, 0xf0, 0xc5, - 0xf0, 0x85, 0xf1, 0xc1, 0xf5, 0x85, 0xf1, 0xbf, 0xf5, 0x85, 0xf1, 0xc1, - 0xf5, 0x85, 0xf1, 0xbf, 0xf5, 0x85, 0xf2, 0xc1, 0xf5, 0x85, 0xf2, 0xbf, - 0xf5, 0x85, 0xf2, 0xc1, 0xf5, 0x85, 0xf2, 0xbf, 0xf5, 0x85, 0xf2, 0xc1, - 0xf5, 0x85, 0xf3, 0xbf, 0xf5, 0x85, 0xf3, 0xc1, 0xf5, 0x85, 0xf3, 0xbf, - 0xf5, 0x85, 0xf3, 0xbf, 0xf5, 0x85, 0xf4, 0xbf, 0xf5, 0x85, 0xf4, 0xbf, - 0xf5, 0x85, 0xf4, 0xbf, 0xf5, 0x85, 0xf4, 0xbf, 0xf5, 0x85, 0xf5, 0xbf, - 0xf5, 0x85, 0xf5, 0xbf, 0xf5, 0x85, 0xf5, 0xbf, 0xf5, 0x85, 0xf5, 0xbf, - 0xf5, 0x85, 0xf5, 0xbf, 0xf5, 0x85, 0xf5, 0xbf, 0xf6, 0x85, 0xf5, 0xbf, - 0xf6, 0x83, 0xf5, 0xbf, 0xf6, 0x85, 0xf5, 0xbf, 0xf6, 0x83, 0xf5, 0xbf, - 0xf7, 0x85, 0xf9, 0xbf, 0xf7, 0x85, 0xf8, 0xbf, 0xf7, 0x86, 0xf9, 0xbf, - 0xf7, 0x85, 0xf8, 0xbf, 0xf8, 0x86, 0xf9, 0xbf, 0xf8, 0x85, 0xf8, 0xbf, - 0xf8, 0x86, 0xf9, 0xbf, 0xf8, 0x85, 0xf9, 0xbf, 0xf8, 0x85, 0xf9, 0xbf, - 0xf8, 0x85, 0xf9, 0xbf, 0xf8, 0x85, 0xf9, 0xbf, 0xf8, 0x85, 0xf9, 0xbf, - 0xf8, 0x85, 0xfa, 0xbf, 0xf8, 0x85, 0xfa, 0xbf, 0xf8, 0x85, 0xfa, 0xbf, - 0xf8, 0x85, 0xfa, 0xbf, 0xf8, 0x85, 0xfa, 0xbd, 0xf9, 0x85, 0xfb, 0xbf, - 0xf8, 0x85, 0xfb, 0xbd, 0xf9, 0x85, 0xfb, 0xbf, 0xf8, 0x85, 0xfb, 0xbd, - 0xf9, 0x85, 0xfc, 0xbf, 0xf8, 0x85, 0xfc, 0xbd, 0xf9, 0x85, 0xfc, 0xbf, - 0xf8, 0x85, 0xfc, 0xbd, 0xf9, 0x85, 0xfc, 0xbf, 0xf8, 0x85, 0xfd, 0xbd, - 0xf9, 0x85, 0xfd, 0xbf, 0xf8, 0x85, 0xfd, 0xbd, 0xf9, 0x85, 0xfd, 0xbf, - 0xf8, 0x85, 0xfe, 0xbd, 0xf9, 0x85, 0xfe, 0xbf, 0xf8, 0x85, 0xfe, 0xbd, - 0xf9, 0x85, 0xfe, 0xbf, 0xf8, 0x85, 0xfe, 0xbd, 0xf9, 0x85, 0xff, 0xbd, - 0xf9, 0x85, 0xff, 0xbd, 0xf9, 0x85, 0x03, 0xc5, 0x90, 0x85, 0x0a, 0xc7, - 0x8f, 0x85, 0x0f, 0xc5, 0x90, 0x85, 0x14, 0xc7, 0x8f, 0x85, 0x17, 0xc5, - 0x90, 0x85, 0x1b, 0xc7, 0x8f, 0x85, 0x1e, 0xc5, 0x90, 0x85, 0x20, 0xc7, - 0x8f, 0x85, 0x23, 0xc5, 0x90, 0x85, 0x25, 0xc7, 0x8f, 0x85, 0x27, 0xc5, - 0x90, 0x85, 0x29, 0xc3, 0x90, 0x85, 0x2b, 0xc5, 0x90, 0x85, 0x2d, 0xc3, - 0x90, 0x85, 0x2f, 0xc5, 0x90, 0x85, 0x31, 0xc3, 0x90, 0x85, 0x32, 0xc5, - 0x90, 0x85, 0x34, 0xc3, 0x90, 0x85, 0x35, 0xc5, 0x90, 0x85, 0x37, 0xc3, - 0x90, 0x85, 0x38, 0xc5, 0x90, 0x85, 0x3a, 0xc3, 0x90, 0x85, 0x3b, 0xc5, - 0x90, 0x85, 0x3c, 0xc3, 0x90, 0x85, 0x3e, 0xc5, 0x90, 0x85, 0x3f, 0xc3, - 0x90, 0x85, 0x40, 0xc5, 0x90, 0x85, 0x42, 0xc3, 0x90, 0x85, 0x43, 0xc5, - 0x90, 0x85, 0x44, 0xc3, 0x90, 0x85, 0x45, 0xc5, 0x90, 0x85, 0x46, 0xc3, - 0x90, 0x85, 0x47, 0xc5, 0x90, 0x85, 0x48, 0xc3, 0x90, 0x85, 0x49, 0xc5, - 0x90, 0x85, 0x4a, 0xc3, 0x90, 0x85, 0x4b, 0xc5, 0x90, 0x85, 0x4c, 0xc3, - 0x90, 0x85, 0x4d, 0xc5, 0x90, 0x85, 0x4e, 0xc3, 0x90, 0x85, 0x4f, 0xc5, - 0x90, 0x85, 0x50, 0xc3, 0x90, 0x85, 0x51, 0xc5, 0x90, 0x85, 0x52, 0xc3, - 0x90, 0x85, 0x53, 0xc5, 0x90, 0x85, 0x54, 0xc3, 0x90, 0x85, 0x55, 0xc5, - 0x90, 0x85, 0x56, 0xc3, 0x90, 0x85, 0x57, 0xc5, 0x90, 0x85, 0x58, 0xc3, - 0x90, 0x85, 0x58, 0xc5, 0x90, 0x85, 0x59, 0xc3, 0x90, 0x85, 0x5a, 0xc5, - 0x90, 0x85, 0x5b, 0xc3, 0x90, 0x85, 0x5c, 0xc5, 0x90, 0x85, 0x5d, 0xc3, - 0x90, 0x85, 0x5d, 0xc5, 0x90, 0x85, 0x5e, 0xc3, 0x90, 0x85, 0x5f, 0xc5, - 0x90, 0x85, 0x60, 0xc3, 0x90, 0x85, 0x60, 0xc5, 0x90, 0x85, 0x61, 0xc3, - 0x90, 0x85, 0x62, 0xc5, 0x90, 0x85, 0x63, 0xc3, 0x90, 0x85, 0x63, 0xc5, - 0x90, 0x85, 0x64, 0xc3, 0x90, 0x85, 0x65, 0xc5, 0x90, 0x85, 0x66, 0xc3, - 0x90, 0x85, 0x66, 0xc5, 0x90, 0x85, 0x67, 0xc3, 0x90, 0x85, 0x68, 0xc5, - 0x90, 0x85, 0x68, 0xc3, 0x90, 0x85, 0x69, 0xc1, 0x91, 0x85, 0x6a, 0xc3, - 0x90, 0x85, 0x6a, 0xc1, 0x91, 0x85, 0x6b, 0xc3, 0x90, 0x85, 0x6c, 0xc1, - 0x91, 0x85, 0x6c, 0xc3, 0x90, 0x85, 0x6d, 0xc1, 0x91, 0x85, 0x6e, 0xc3, - 0x90, 0x85, 0x6e, 0xc1, 0x91, 0x85, 0x6f, 0xc3, 0x90, 0x85, 0x70, 0xc1, - 0x91, 0x85, 0x70, 0xc3, 0x90, 0x85, 0x71, 0xc1, 0x91, 0x85, 0x72, 0xc3, - 0x90, 0x85, 0x72, 0xc1, 0x91, 0x85, 0x73, 0xc3, 0x90, 0x85, 0x73, 0xc1, - 0x91, 0x85, 0x74, 0xc3, 0x90, 0x85, 0x75, 0xc1, 0x91, 0x85, 0x75, 0xc3, - 0x90, 0x85, 0x76, 0xc1, 0x91, 0x85, 0x76, 0xc3, 0x90, 0x85, 0x77, 0xc1, - 0x91, 0x85, 0x78, 0xc3, 0x90, 0x85, 0x78, 0xc1, 0x91, 0x85, 0x79, 0xc3, - 0x90, 0x85, 0x79, 0xc1, 0x91, 0x85, 0x7a, 0xc3, 0x90, 0x85, 0x7a, 0xc1, - 0x91, 0x85, 0x7b, 0xc3, 0x90, 0x85, 0x7c, 0xc1, 0x91, 0x85, 0x7c, 0xc3, - 0x90, 0x85, 0x7d, 0xc1, 0x91, 0x85, 0x7d, 0xc3, 0x90, 0x85, 0x7e, 0xc1, - 0x91, 0x85, 0x7e, 0xc3, 0x90, 0x85, 0x7f, 0xc1, 0x91, 0x85, 0x7f, 0xbf, - 0x91, 0x85, 0x80, 0xc1, 0x91, 0x85, 0x81, 0xbf, 0x91, 0x85, 0x81, 0xc1, - 0x91, 0x85, 0x82, 0xbf, 0x91, 0x85, 0x82, 0xc1, 0x91, 0x85, 0x83, 0xbf, - 0x91, 0x85, 0x83, 0xc1, 0x91, 0x85, 0x84, 0xbf, 0x91, 0x85, 0x84, 0xc1, - 0x91, 0x85, 0x85, 0xbf, 0x91, 0x85, 0x85, 0xc1, 0x91, 0x85, 0x86, 0xbf, - 0x91, 0x85, 0x86, 0xc1, 0x91, 0x85, 0x87, 0xbf, 0x91, 0x85, 0x87, 0xc1, - 0x91, 0x85, 0x88, 0xbf, 0x91, 0x85, 0x88, 0xc1, 0x91, 0x85, 0x89, 0xbf, - 0x91, 0x85, 0x89, 0xc1, 0x91, 0x85, 0x8a, 0xbf, 0x91, 0x85, 0x8a, 0xc1, - 0x91, 0x85, 0x8b, 0xbf, 0x91, 0x85, 0x8b, 0xc1, 0x91, 0x85, 0x8c, 0xbf, - 0x91, 0x85, 0x8c, 0xc1, 0x91, 0x85, 0x8d, 0xbf, 0x91, 0x85, 0x8d, 0xc1, - 0x91, 0x85, 0x8e, 0xbf, 0x91, 0x85, 0x8e, 0xbf, 0x92, 0x85, 0x8e, 0xbf, - 0x91, 0x85, 0x8f, 0xbf, 0x92, 0x85, 0x8f, 0xbf, 0x91, 0x85, 0x90, 0xbf, - 0x92, 0x85, 0x90, 0xbf, 0x91, 0x85, 0x91, 0xbf, 0x92, 0x85, 0x90, 0xbf, - 0x91, 0x85, 0x91, 0xbf, 0x92, 0x85, 0x90, 0xbf, 0x92, 0x85, 0x91, 0xbf, - 0x93, 0x85, 0x95, 0xbf, 0x93, 0x85, 0x95, 0xbf, 0x94, 0x85, 0x95, 0xbf, - 0x94, 0x85, 0x95, 0xbf, 0x94, 0x85, 0x95, 0xbf, 0x94, 0x85, 0x95, 0xbf, - 0x94, 0x85, 0x96, 0xbf, 0x94, 0x85, 0x96, 0xbf, 0x94, 0x85, 0x97, 0xbe, - 0x95, 0x85, 0x97, 0xbf, 0x94, 0x85, 0x98, 0xbe, 0x95, 0x85, 0x98, 0xbf, - 0x94, 0x85, 0x98, 0xbe, 0x95, 0x85, 0x99, 0xbf, 0x94, 0x85, 0x99, 0xbc, - 0x9a, 0x85, 0x9a, 0xbc, 0x9a, 0x85, 0x9a, 0xbc, 0x9a, 0x85, 0x9a, 0xbc, - 0x9a, 0x85, 0x9b, 0xbc, 0x9b, 0x85, 0x9b, 0xbc, 0x9b, 0x85, 0x9c, 0xbc, - 0x9c, 0x85, 0x9c, 0xbc, 0x9c, 0x85, 0x9d, 0xbc, 0x9d, 0x85, 0x9d, 0xbd, - 0x9f, 0x85, 0x9d, 0xbd, 0x9f, 0x85, 0x9e, 0xbd, 0x9f, 0x85, 0x9e, 0xbd, - 0x9f, 0x85, 0x9f, 0xbd, 0x9f, 0x85, 0x9f, 0xbd, 0x9f, 0x85, 0x9f, 0xbd, - 0x9f, 0x85, 0xa0, 0xbd, 0xa0, 0x85, 0xa0, 0xbd, 0xa0, 0x85, 0xa1, 0xbd, - 0xa1, 0x85, 0xa1, 0xbd, 0xa1, 0x85, 0xa1, 0xbd, 0xa3, 0x85, 0xa2, 0xbd, - 0xa3, 0x85, 0xa2, 0xbd, 0xa3, 0x85, 0xa3, 0xbd, 0xa3, 0x85, 0xa3, 0xbd, - 0xa3, 0x85, 0xa3, 0xbd, 0xa3, 0x85, 0xa4, 0xbd, 0xa4, 0x85, 0xa4, 0xbd, - 0xa4, 0x85, 0xa5, 0xbf, 0xa6, 0x85, 0xa5, 0xbf, 0xa6, 0x85, 0xa5, 0xbf, - 0xa6, 0x85, 0xa6, 0xbf, 0xa6, 0x85, 0xa6, 0xbf, 0xa6, 0x84, 0xa6, 0xbf, - 0xa6, 0x85, 0xa6, 0xbf, 0xa7, 0x84, 0xa6, 0xbf, 0xa7, 0x85, 0xa6, 0xbf, - 0xa8, 0x84, 0xa6, 0xbf, 0xa8, 0x85, 0xa6, 0xbf, 0xa8, 0x84, 0xa6, 0xbf, - 0xa9, 0x85, 0xa6, 0xbf, 0xa9, 0x84, 0xa6, 0xbf, 0xaa, 0x85, 0xa6, 0xbf, - 0xaa, 0x84, 0xa6, 0xbf, 0xaa, 0x85, 0xa6, 0xbf, 0xab, 0x84, 0xa6, 0xbf, - 0xab, 0x85, 0xa6, 0xbf, 0xab, 0x84, 0xa6, 0xbf, 0xac, 0x85, 0xa9, 0xbf, - 0xac, 0x7e, 0xa9, 0xbf, 0xac, 0x7e, 0xa9, 0xbf, 0xad, 0x7e, 0xa9, 0xbf, - 0xad, 0x7e, 0xa9, 0xbf, 0xae, 0x7e, 0xa9, 0xbf, 0xae, 0x7e, 0xa9, 0xbf, - 0xae, 0x7e, 0xa9, 0xbf, 0xaf, 0x7e, 0xa9, 0xbf, 0xaf, 0x7e, 0xaa, 0xbf, - 0xaf, 0x7d, 0xa9, 0xbf, 0xb0, 0x7e, 0xaa, 0xbf, 0xb0, 0x7d, 0xa9, 0xbf, - 0xb0, 0x7e, 0xaa, 0xbf, 0xb1, 0x7d, 0xa9, 0xbf, 0xb1, 0x7e, 0xaa, 0xbf, - 0xb2, 0x7d, 0xa9, 0xbf, 0xb2, 0x7e, 0xaa, 0xbf, 0xb2, 0x7d, 0xa9, 0xbf, - 0xb3, 0x7e, 0xaa, 0xbf, 0xb3, 0x7d, 0xa9, 0xbf, 0xb3, 0x7e, 0xaa, 0xbf, - 0xb4, 0x7d, 0xa9, 0xbf, 0xb4, 0x7e, 0xaa, 0xbf, 0xb4, 0x7d, 0xa9, 0xbf, - 0xb5, 0x7e, 0xaa, 0xbf, 0xb5, 0x7d, 0xa9, 0xbf, 0xb5, 0x7e, 0xaa, 0xbf, - 0xb6, 0x7d, 0xa9, 0xbf, 0xb6, 0x7e, 0xba, 0xbf, 0xb6, 0x72, 0xba, 0xbf, - 0xb7, 0x72, 0xba, 0xbf, 0xb7, 0x72, 0xba, 0xbf, 0xb7, 0x72, 0xba, 0xbf, - 0xb8, 0x72, 0xba, 0xbf, 0xb8, 0x72, 0xba, 0xbf, 0xb8, 0x72, 0xba, 0xbf, - 0xb9, 0x72, 0xba, 0xbf, 0xb9, 0x72, 0xbd, 0xbf, 0xb9, 0x73, 0xbe, 0xbf, - 0xba, 0x73, 0xbd, 0xbf, 0xba, 0x73, 0xbe, 0xbf, 0xba, 0x73, 0xbd, 0xbf, - 0xbb, 0x73, 0xbe, 0xbf, 0xbb, 0x73, 0xbd, 0xbf, 0xbb, 0x73, 0xbe, 0xbf, - 0xbc, 0x73, 0xbd, 0xbf, 0xbc, 0x73, 0xbe, 0xbf, 0xbc, 0x73, 0xbd, 0xbf, - 0xbd, 0x73, 0xc1, 0xbf, 0xbd, 0x74, 0xbd, 0xbf, 0xbd, 0x73, 0xc1, 0xbf, - 0xbe, 0x74, 0xc1, 0xbf, 0xbe, 0x74, 0xc1, 0xbf, 0xbe, 0x74, 0xc1, 0xbf, - 0xbf, 0x74, 0xc1, 0xbf, 0xbf, 0x74, 0xc1, 0xbf, 0xbf, 0x74, 0xc1, 0xbf, - 0xc0, 0x74, 0xc1, 0xbf, 0xc0, 0x74, 0xc1, 0xbf, 0xc0, 0x74, 0xc1, 0xbf, - 0xc1, 0x74, 0xc1, 0xbf, 0xc1, 0x74, 0xc4, 0xbf, 0xc1, 0x75, 0xc5, 0xbf, - 0xc1, 0x75, 0xc4, 0xbf, 0xc2, 0x75, 0xc5, 0xbf, 0xc2, 0x75, 0xc4, 0xbf, - 0xc2, 0x75, 0xc5, 0xbf, 0xc3, 0x75, 0xc4, 0xbf, 0xc3, 0x75, 0xc5, 0xbf, - 0xc3, 0x75, 0xc4, 0xbf, 0xc4, 0x75, 0xc5, 0xbf, 0xc4, 0x75, 0xc4, 0xbf, - 0xc4, 0x75, 0xc8, 0xbf, 0xc5, 0x76, 0xc8, 0xbf, 0xc5, 0x76, 0xc8, 0xbf, - 0xc5, 0x76, 0xc8, 0xbf, 0xc6, 0x76, 0xc8, 0xbf, 0xc6, 0x76, 0xc8, 0xbf, - 0xc6, 0x76, 0xc8, 0xbf, 0xc6, 0x76, 0xc8, 0xbf, 0xc7, 0x76, 0xc8, 0xbf, - 0xc7, 0x76, 0xc8, 0xbf, 0xc7, 0x76, 0xc8, 0xbf, 0xc8, 0x76, 0xcb, 0xbf, - 0xc8, 0x77, 0xcb, 0xbf, 0xc8, 0x77, 0xcb, 0xbf, 0xc9, 0x77, 0xcb, 0xbf, - 0xc9, 0x77, 0xcb, 0xbf, 0xc9, 0x77, 0xcb, 0xbf, 0xc9, 0x77, 0xcb, 0xbf, - 0xca, 0x77, 0xcb, 0xbf, 0xca, 0x77, 0xcb, 0xbf, 0xca, 0x77, 0xcb, 0xbf, - 0xcb, 0x77, 0xcb, 0xbf, 0xcb, 0x77, 0xce, 0xbf, 0xcb, 0x78, 0xce, 0xbf, - 0xcc, 0x78, 0xce, 0xbf, 0xcc, 0x78, 0xce, 0xbf, 0xcc, 0x78, 0xce, 0xbf, - 0xcc, 0x78, 0xce, 0xbf, 0xcd, 0x78, 0xce, 0xbf, 0xcd, 0x78, 0xce, 0xbf, - 0xcd, 0x78, 0xce, 0xbf, 0xce, 0x78, 0xce, 0xbf, 0xce, 0x78, 0xce, 0xbf, - 0xce, 0x78, 0xce, 0xbf, 0xce, 0x78, 0xce, 0xbf, 0xcf, 0x78, 0xce, 0xbf, - 0xcf, 0x78, 0xce, 0xbf, 0xcf, 0x78, 0xce, 0xbf, 0xd0, 0x78, 0xce, 0xbf, - 0xd0, 0x78, 0xce, 0xbf, 0xd0, 0x78, 0xce, 0xbf, 0xd0, 0x78, 0xce, 0xbf, - 0xd1, 0x78, 0xce, 0xbf, 0xd1, 0x78, 0xce, 0xbf, 0xd1, 0x78, 0xce, 0xbf, - 0xd2, 0x78, 0xce, 0xbf, 0xd2, 0x78, 0xd4, 0xbf, 0xd2, 0x93, 0xd4, 0xbf, - 0xd2, 0x93, 0xd4, 0xbf, 0xd3, 0x93, 0xd4, 0xbf, 0xd3, 0x93, 0xd4, 0xbf, - 0xd3, 0x93, 0xd4, 0xbf, 0xd4, 0x93, 0xd4, 0xbf, 0xd4, 0x93, 0xd4, 0xbf, - 0xd4, 0x93, 0xd4, 0xbf, 0xd4, 0x93, 0xd5, 0xbf, 0xd5, 0x93, 0xd5, 0xbf, - 0xd5, 0x93, 0xd5, 0xbf, 0xd5, 0x93, 0xd6, 0xbf, 0xd6, 0x93, 0xd6, 0xbf, - 0xd6, 0x93, 0xd6, 0xbf, 0xd6, 0x93, 0xd6, 0xbf, 0xd6, 0x93, 0xd6, 0xbf, - 0xd7, 0x93, 0xd6, 0xbf, 0xd7, 0x93, 0xd6, 0xbf, 0xd7, 0x93, 0xd6, 0xbf, - 0xd7, 0x93, 0xd6, 0xbf, 0xd8, 0x93, 0xd6, 0xbf, 0xd8, 0x93, 0xd6, 0xbf, - 0xd8, 0x93, 0xd6, 0xbf, 0xd9, 0x93, 0xd6, 0xbf, 0xd9, 0x93, 0xd9, 0xbf, - 0xd9, 0x94, 0xd9, 0xbf, 0xd9, 0x94, 0xd9, 0xbf, 0xda, 0x94, 0xd9, 0xbf, - 0xda, 0x94, 0xd9, 0xbf, 0xda, 0x94, 0xd9, 0xbf, 0xda, 0x94, 0xd9, 0xbf, - 0xdb, 0x94, 0xd9, 0xbf, 0xdb, 0x94, 0xd9, 0xbf, 0xdb, 0x94, 0xd9, 0xbf, - 0xdb, 0x94, 0xd9, 0xbf, 0xdc, 0x94, 0xdc, 0xbf, 0xdc, 0x95, 0xdc, 0xbf, - 0xdc, 0x95, 0xdc, 0xbf, 0xdd, 0x95, 0xdc, 0xbf, 0xdd, 0x95, 0xdc, 0xbf, - 0xdd, 0x95, 0xdc, 0xbf, 0xdd, 0x95, 0xdc, 0xbf, 0xde, 0x95, 0xdc, 0xbf, - 0xde, 0x95, 0xdc, 0xbf, 0xde, 0x95, 0xdc, 0xbf, 0xde, 0x95, 0xdc, 0xbf, - 0xdf, 0x95, 0xdf, 0xbf, 0xdf, 0x96, 0xdf, 0xbf, 0xdf, 0x96, 0xdf, 0xbf, - 0xdf, 0x96, 0xdf, 0xbf, 0xe0, 0x96, 0xdf, 0xbf, 0xe0, 0x96, 0xdf, 0xbf, - 0xe0, 0x96, 0xdf, 0xbf, 0xe1, 0x96, 0xdf, 0xbf, 0xe1, 0x96, 0xdf, 0xbf, - 0xe1, 0x96, 0xea, 0xbf, 0xe1, 0x86, 0xea, 0xbf, 0xe2, 0x8a, 0xea, 0xbf, - 0xe2, 0x86, 0xea, 0xbf, 0xe2, 0x8a, 0xea, 0xbf, 0xe2, 0x86, 0xea, 0xbf, - 0xe3, 0x8a, 0xea, 0xbf, 0xe3, 0x86, 0xea, 0xbf, 0xe3, 0x8a, 0xea, 0xbf, - 0xe3, 0x86, 0xea, 0xbf, 0xe4, 0x8a, 0xea, 0xbf, 0xe4, 0x86, 0xea, 0xbf, - 0xe4, 0x85, 0xea, 0xbf, 0xe4, 0x86, 0xea, 0xbf, 0xe5, 0x85, 0xea, 0xbf, - 0xe5, 0x86, 0xea, 0xbf, 0xe5, 0x85, 0xea, 0xbf, 0xe5, 0x86, 0xea, 0xbf, - 0xe6, 0x85, 0xea, 0xbf, 0xe6, 0x86, 0xea, 0xbf, 0xe6, 0x85, 0xea, 0xbf, - 0xe6, 0x86, 0xea, 0xbf, 0xe7, 0x85, 0xea, 0xbf, 0xe7, 0x86, 0xea, 0xbf, - 0xe7, 0x85, 0xea, 0xbf, 0xe7, 0x86, 0xea, 0xbf, 0xe8, 0x85, 0xea, 0xbf, - 0xe8, 0x86, 0xea, 0xbf, 0xe8, 0x85, 0xea, 0xbf, 0xe8, 0x86, 0xea, 0xbf, - 0xe9, 0x85, 0xea, 0xbf, 0xe9, 0x86, 0xea, 0xbf, 0xe9, 0x85, 0xea, 0xbf, - 0xe9, 0x86, 0xea, 0xbf, 0xea, 0x85, 0xea, 0xbf, 0xea, 0x85, 0xea, 0xbf, - 0xea, 0x85, 0xea, 0xbf, 0xea, 0x85, 0xeb, 0xbf, 0xea, 0x85, 0xeb, 0xbf, - 0xea, 0x85, 0xeb, 0xbf, 0xea, 0x85, 0xeb, 0xbf, 0xea, 0x85, 0xec, 0xbf, - 0xea, 0x85, 0xec, 0xbf, 0xea, 0x85, 0xec, 0xbf, 0xea, 0x85, 0xec, 0xbf, - 0xea, 0x85, 0xec, 0xbf, 0xea, 0x85, 0xed, 0xbf, 0xea, 0x85, 0xed, 0xbf, - 0xea, 0x85, 0xed, 0xbf, 0xea, 0x85, 0xed, 0xbf, 0xea, 0x85, 0xee, 0xbf, - 0xea, 0x85, 0xee, 0xbd, 0xea, 0x85, 0xee, 0xbf, 0xea, 0x85, 0xee, 0xc5, - 0xee, 0x85, 0xef, 0xc5, 0xef, 0x85, 0xef, 0xc5, 0xef, 0x85, 0xef, 0xc5, - 0xef, 0x85, 0xef, 0xc5, 0xef, 0x85, 0xf0, 0xc5, 0xef, 0x85, 0xf0, 0xc5, - 0xef, 0x85, 0xf0, 0xc5, 0xef, 0x85, 0xf0, 0xc5, 0xef, 0x85, 0xf1, 0xc1, - 0xf5, 0x85, 0xf1, 0xbf, 0xf5, 0x85, 0xf1, 0xc1, 0xf5, 0x85, 0xf1, 0xbf, - 0xf5, 0x85, 0xf2, 0xc1, 0xf5, 0x85, 0xf2, 0xbf, 0xf5, 0x85, 0xf2, 0xc1, - 0xf5, 0x85, 0xf2, 0xbf, 0xf5, 0x85, 0xf2, 0xc1, 0xf5, 0x85, 0xf3, 0xbf, - 0xf5, 0x85, 0xf3, 0xc1, 0xf5, 0x85, 0xf3, 0xbf, 0xf5, 0x85, 0xf3, 0xc1, - 0xf5, 0x85, 0xf4, 0xbf, 0xf5, 0x85, 0xf4, 0xc1, 0xf5, 0x85, 0xf4, 0xbf, - 0xf5, 0x85, 0xf4, 0xbf, 0xf5, 0x85, 0xf5, 0xbf, 0xf5, 0x85, 0xf5, 0xbf, - 0xf5, 0x85, 0xf5, 0xbf, 0xf5, 0x85, 0xf5, 0xbf, 0xf5, 0x85, 0xf5, 0xbf, - 0xf5, 0x85, 0xf5, 0xbf, 0xf6, 0x85, 0xf5, 0xbf, 0xf6, 0x85, 0xf5, 0xbf, - 0xf6, 0x85, 0xf5, 0xbf, 0xf6, 0x85, 0xf5, 0xbf, 0xf7, 0x85, 0xf9, 0xbf, - 0xf7, 0x85, 0xf8, 0xbf, 0xf7, 0x86, 0xf9, 0xbf, 0xf7, 0x85, 0xf8, 0xbf, - 0xf8, 0x86, 0xf9, 0xbf, 0xf8, 0x85, 0xf8, 0xbf, 0xf8, 0x86, 0xf9, 0xbf, - 0xf8, 0x85, 0xf9, 0xbf, 0xf8, 0x85, 0xf9, 0xbf, 0xf8, 0x85, 0xf9, 0xbf, - 0xf8, 0x85, 0xf9, 0xbf, 0xf8, 0x85, 0xf9, 0xbf, 0xf8, 0x85, 0xfa, 0xbf, - 0xf8, 0x85, 0xfa, 0xbf, 0xf8, 0x85, 0xfa, 0xbf, 0xf8, 0x85, 0xfa, 0xbf, - 0xf8, 0x85, 0xfa, 0xbd, 0xf9, 0x85, 0xfb, 0xbf, 0xf8, 0x85, 0xfb, 0xbd, - 0xf9, 0x85, 0xfb, 0xbf, 0xf8, 0x85, 0xfb, 0xbd, 0xf9, 0x85, 0xfc, 0xbf, - 0xf8, 0x85, 0xfc, 0xbd, 0xf9, 0x85, 0xfc, 0xbf, 0xf8, 0x85, 0xfc, 0xbd, - 0xf9, 0x85, 0xfc, 0xbf, 0xf8, 0x85, 0xfd, 0xbd, 0xf9, 0x85, 0xfd, 0xbf, - 0xf8, 0x85, 0xfd, 0xbd, 0xf9, 0x85, 0xfd, 0xbf, 0xf8, 0x85, 0xfe, 0xbd, - 0xf9, 0x85, 0xfe, 0xbf, 0xf8, 0x85, 0xfe, 0xbd, 0xf9, 0x85, 0xfe, 0xbf, - 0xf8, 0x85, 0xfe, 0xbd, 0xf9, 0x85, 0xff, 0xbd, 0xf9, 0x85, 0xff, 0xbd, - 0xf9, 0x85, 0x03, 0xc5, 0x90, 0x86, 0x0a, 0xc7, 0x8f, 0x86, 0x0f, 0xc5, - 0x90, 0x86, 0x14, 0xc7, 0x8f, 0x86, 0x17, 0xc5, 0x90, 0x86, 0x1b, 0xc7, - 0x8f, 0x86, 0x1e, 0xc5, 0x90, 0x86, 0x20, 0xc7, 0x8f, 0x86, 0x23, 0xc5, - 0x90, 0x86, 0x25, 0xc7, 0x8f, 0x86, 0x27, 0xc5, 0x90, 0x86, 0x29, 0xc7, - 0x8f, 0x86, 0x2b, 0xc5, 0x90, 0x86, 0x2d, 0xc7, 0x8f, 0x86, 0x2f, 0xc5, - 0x90, 0x86, 0x31, 0xc7, 0x8f, 0x86, 0x32, 0xc5, 0x90, 0x86, 0x34, 0xc7, - 0x8f, 0x86, 0x35, 0xc5, 0x90, 0x86, 0x37, 0xc7, 0x8f, 0x86, 0x38, 0xc5, - 0x90, 0x86, 0x3a, 0xc7, 0x8f, 0x86, 0x3b, 0xc5, 0x90, 0x86, 0x3c, 0xc3, - 0x90, 0x86, 0x3e, 0xc5, 0x90, 0x86, 0x3f, 0xc3, 0x90, 0x86, 0x40, 0xc5, - 0x90, 0x86, 0x42, 0xc3, 0x90, 0x86, 0x43, 0xc5, 0x90, 0x86, 0x44, 0xc3, - 0x90, 0x86, 0x45, 0xc5, 0x90, 0x86, 0x46, 0xc3, 0x90, 0x86, 0x47, 0xc5, - 0x90, 0x86, 0x48, 0xc3, 0x90, 0x86, 0x49, 0xc5, 0x90, 0x86, 0x4a, 0xc3, - 0x90, 0x86, 0x4b, 0xc5, 0x90, 0x86, 0x4c, 0xc3, 0x90, 0x86, 0x4d, 0xc5, - 0x90, 0x86, 0x4e, 0xc3, 0x90, 0x86, 0x4f, 0xc5, 0x90, 0x86, 0x50, 0xc3, - 0x90, 0x86, 0x51, 0xc5, 0x90, 0x86, 0x52, 0xc3, 0x90, 0x86, 0x53, 0xc5, - 0x90, 0x86, 0x54, 0xc3, 0x90, 0x86, 0x55, 0xc5, 0x90, 0x86, 0x56, 0xc3, - 0x90, 0x86, 0x57, 0xc5, 0x90, 0x86, 0x58, 0xc3, 0x90, 0x86, 0x58, 0xc5, - 0x90, 0x86, 0x59, 0xc3, 0x90, 0x86, 0x5a, 0xc5, 0x90, 0x86, 0x5b, 0xc3, - 0x90, 0x86, 0x5c, 0xc5, 0x90, 0x86, 0x5d, 0xc3, 0x90, 0x86, 0x5d, 0xc5, - 0x90, 0x86, 0x5e, 0xc3, 0x90, 0x86, 0x5f, 0xc5, 0x90, 0x86, 0x60, 0xc3, - 0x90, 0x86, 0x60, 0xc5, 0x90, 0x86, 0x61, 0xc3, 0x90, 0x86, 0x62, 0xc5, - 0x90, 0x86, 0x63, 0xc3, 0x90, 0x86, 0x63, 0xc5, 0x90, 0x86, 0x64, 0xc3, - 0x90, 0x86, 0x65, 0xc5, 0x90, 0x86, 0x66, 0xc3, 0x90, 0x86, 0x66, 0xc1, - 0x91, 0x86, 0x67, 0xc3, 0x90, 0x86, 0x68, 0xc1, 0x91, 0x86, 0x68, 0xc3, - 0x90, 0x86, 0x69, 0xc1, 0x91, 0x86, 0x6a, 0xc3, 0x90, 0x86, 0x6a, 0xc1, - 0x91, 0x86, 0x6b, 0xc3, 0x90, 0x86, 0x6c, 0xc1, 0x91, 0x86, 0x6c, 0xc3, - 0x90, 0x86, 0x6d, 0xc1, 0x91, 0x86, 0x6e, 0xc3, 0x90, 0x86, 0x6e, 0xc1, - 0x91, 0x86, 0x6f, 0xc3, 0x90, 0x86, 0x70, 0xc1, 0x91, 0x86, 0x70, 0xc3, - 0x90, 0x86, 0x71, 0xc1, 0x91, 0x86, 0x72, 0xc3, 0x90, 0x86, 0x72, 0xc1, - 0x91, 0x86, 0x73, 0xc3, 0x90, 0x86, 0x73, 0xc1, 0x91, 0x86, 0x74, 0xc3, - 0x90, 0x86, 0x75, 0xc1, 0x91, 0x86, 0x75, 0xc3, 0x90, 0x86, 0x76, 0xc1, - 0x91, 0x86, 0x76, 0xc3, 0x90, 0x86, 0x77, 0xc1, 0x91, 0x86, 0x78, 0xc3, - 0x90, 0x86, 0x78, 0xc1, 0x91, 0x86, 0x79, 0xc3, 0x90, 0x86, 0x79, 0xc1, - 0x91, 0x86, 0x7a, 0xc3, 0x90, 0x86, 0x7a, 0xc1, 0x91, 0x86, 0x7b, 0xc3, - 0x90, 0x86, 0x7c, 0xc1, 0x91, 0x86, 0x7c, 0xc3, 0x90, 0x86, 0x7d, 0xc1, - 0x91, 0x86, 0x7d, 0xc3, 0x90, 0x86, 0x7e, 0xc1, 0x91, 0x86, 0x7e, 0xc3, - 0x90, 0x86, 0x7f, 0xc1, 0x91, 0x86, 0x7f, 0xc3, 0x90, 0x86, 0x80, 0xc1, - 0x91, 0x86, 0x81, 0xc3, 0x90, 0x86, 0x81, 0xc1, 0x91, 0x86, 0x82, 0xc3, - 0x90, 0x86, 0x82, 0xc1, 0x91, 0x86, 0x83, 0xc3, 0x90, 0x86, 0x83, 0xc1, - 0x91, 0x86, 0x84, 0xc3, 0x90, 0x86, 0x84, 0xc1, 0x91, 0x86, 0x85, 0xc3, - 0x90, 0x86, 0x85, 0xc1, 0x91, 0x86, 0x86, 0xc0, 0x91, 0x86, 0x86, 0xc1, - 0x91, 0x86, 0x87, 0xc0, 0x91, 0x86, 0x87, 0xc1, 0x91, 0x86, 0x88, 0xc0, - 0x91, 0x86, 0x88, 0xc1, 0x91, 0x86, 0x89, 0xc0, 0x91, 0x86, 0x89, 0xc1, - 0x91, 0x86, 0x8a, 0xc0, 0x91, 0x86, 0x8a, 0xc1, 0x91, 0x86, 0x8b, 0xc0, - 0x91, 0x86, 0x8b, 0xc1, 0x91, 0x86, 0x8c, 0xc0, 0x91, 0x86, 0x8c, 0xc1, - 0x91, 0x86, 0x8d, 0xc0, 0x91, 0x86, 0x8d, 0xc1, 0x91, 0x86, 0x8e, 0xc0, - 0x91, 0x86, 0x8e, 0xc1, 0x91, 0x86, 0x8e, 0xc0, 0x91, 0x86, 0x8f, 0xc1, - 0x91, 0x86, 0x8f, 0xc0, 0x91, 0x86, 0x90, 0xc0, 0x92, 0x86, 0x90, 0xc0, - 0x91, 0x86, 0x91, 0xc0, 0x92, 0x86, 0x90, 0xc0, 0x91, 0x86, 0x91, 0xc0, - 0x92, 0x86, 0x90, 0xc0, 0x92, 0x86, 0x91, 0xc0, 0x93, 0x86, 0x95, 0xc0, - 0x93, 0x86, 0x94, 0xc0, 0x94, 0x87, 0x95, 0xc0, 0x94, 0x86, 0x95, 0xc0, - 0x94, 0x86, 0x95, 0xc0, 0x94, 0x86, 0x95, 0xc0, 0x94, 0x86, 0x96, 0xc0, - 0x94, 0x86, 0x96, 0xc0, 0x94, 0x86, 0x97, 0xc0, 0x94, 0x86, 0x97, 0xc0, - 0x94, 0x86, 0x98, 0xc0, 0x94, 0x86, 0x98, 0xc0, 0x94, 0x86, 0x98, 0xbe, - 0x95, 0x86, 0x99, 0xc0, 0x94, 0x86, 0x99, 0xbe, 0x95, 0x86, 0x9a, 0xbc, - 0x9c, 0x86, 0x9a, 0xbc, 0x9d, 0x86, 0x9a, 0xbc, 0x9c, 0x86, 0x9b, 0xbc, - 0x9d, 0x86, 0x9b, 0xbc, 0x9c, 0x86, 0x9c, 0xbc, 0x9d, 0x86, 0x9c, 0xbc, - 0x9c, 0x86, 0x9d, 0xbc, 0x9d, 0x86, 0x9d, 0xbc, 0x9d, 0x86, 0x9d, 0xbc, - 0x9d, 0x86, 0x9e, 0xbc, 0x9e, 0x86, 0x9e, 0xbc, 0x9e, 0x86, 0x9f, 0xbc, - 0x9f, 0x86, 0x9f, 0xbd, 0xa1, 0x86, 0x9f, 0xbd, 0xa1, 0x86, 0xa0, 0xbd, - 0xa1, 0x86, 0xa0, 0xbd, 0xa1, 0x86, 0xa1, 0xbd, 0xa1, 0x86, 0xa1, 0xbd, - 0xa1, 0x86, 0xa1, 0xbd, 0xa1, 0x86, 0xa2, 0xbd, 0xa2, 0x86, 0xa2, 0xbd, - 0xa2, 0x86, 0xa3, 0xbd, 0xa3, 0x86, 0xa3, 0xbd, 0xa3, 0x86, 0xa3, 0xbe, - 0xa5, 0x86, 0xa4, 0xc0, 0xa6, 0x86, 0xa4, 0xc1, 0xa6, 0x86, 0xa5, 0xc0, - 0xa6, 0x86, 0xa5, 0xc0, 0xa6, 0x86, 0xa5, 0xc0, 0xa6, 0x86, 0xa6, 0xc0, - 0xa6, 0x86, 0xa5, 0xc0, 0xa6, 0x86, 0xa6, 0xc0, 0xa6, 0x86, 0xa5, 0xc0, - 0xa7, 0x86, 0xa6, 0xc0, 0xa7, 0x86, 0xa6, 0xc0, 0xa8, 0x84, 0xa6, 0xc0, - 0xa8, 0x86, 0xa6, 0xc0, 0xa8, 0x84, 0xa6, 0xc0, 0xa9, 0x86, 0xa6, 0xc0, - 0xa9, 0x84, 0xa6, 0xc0, 0xaa, 0x86, 0xa6, 0xc0, 0xaa, 0x84, 0xa6, 0xc0, - 0xaa, 0x86, 0xa6, 0xc0, 0xab, 0x84, 0xa6, 0xc0, 0xab, 0x86, 0xa6, 0xc0, - 0xab, 0x84, 0xa6, 0xc0, 0xac, 0x86, 0xa9, 0xc0, 0xac, 0x7f, 0xa9, 0xc0, - 0xac, 0x7f, 0xa9, 0xc0, 0xad, 0x7f, 0xa9, 0xc0, 0xad, 0x7f, 0xa9, 0xc0, - 0xae, 0x7f, 0xa9, 0xc0, 0xae, 0x7f, 0xa9, 0xc0, 0xae, 0x7f, 0xa9, 0xc0, - 0xaf, 0x7f, 0xa9, 0xc0, 0xaf, 0x7f, 0xaa, 0xc0, 0xaf, 0x7e, 0xa9, 0xc0, - 0xb0, 0x7f, 0xaa, 0xc0, 0xb0, 0x7e, 0xa9, 0xc0, 0xb0, 0x7f, 0xaa, 0xc0, - 0xb1, 0x7e, 0xa9, 0xc0, 0xb1, 0x7f, 0xaa, 0xc0, 0xb2, 0x7e, 0xa9, 0xc0, - 0xb2, 0x7f, 0xaa, 0xc0, 0xb2, 0x7e, 0xa9, 0xc0, 0xb3, 0x7f, 0xaa, 0xc0, - 0xb3, 0x7e, 0xa9, 0xc0, 0xb3, 0x7f, 0xaa, 0xc0, 0xb4, 0x7e, 0xa9, 0xc0, - 0xb4, 0x7f, 0xaa, 0xc0, 0xb4, 0x7e, 0xa9, 0xc0, 0xb5, 0x7f, 0xaa, 0xc0, - 0xb5, 0x7e, 0xa9, 0xc0, 0xb5, 0x7f, 0xaa, 0xc0, 0xb6, 0x7e, 0xa9, 0xc0, - 0xb6, 0x7f, 0xaa, 0xc0, 0xb6, 0x7e, 0xb8, 0xc0, 0xb7, 0x72, 0xb8, 0xc0, - 0xb7, 0x72, 0xbb, 0xc0, 0xb7, 0x73, 0xbc, 0xc0, 0xb8, 0x73, 0xbb, 0xc0, - 0xb8, 0x73, 0xbc, 0xc0, 0xb8, 0x73, 0xbb, 0xc0, 0xb9, 0x73, 0xbc, 0xc0, - 0xb9, 0x73, 0xbb, 0xc0, 0xb9, 0x73, 0xbc, 0xc0, 0xba, 0x73, 0xbb, 0xc0, - 0xba, 0x73, 0xbc, 0xc0, 0xba, 0x73, 0xbb, 0xc0, 0xbb, 0x73, 0xbf, 0xc0, - 0xbb, 0x74, 0xbf, 0xc0, 0xbb, 0x74, 0xbf, 0xc0, 0xbc, 0x74, 0xbf, 0xc0, - 0xbc, 0x74, 0xbf, 0xc0, 0xbc, 0x74, 0xbf, 0xc0, 0xbd, 0x74, 0xbf, 0xc0, - 0xbd, 0x74, 0xbf, 0xc0, 0xbd, 0x74, 0xbf, 0xc0, 0xbe, 0x74, 0xbf, 0xc0, - 0xbe, 0x74, 0xbf, 0xc0, 0xbe, 0x74, 0xc2, 0xc0, 0xbf, 0x75, 0xbf, 0xc0, - 0xbf, 0x74, 0xc2, 0xc0, 0xbf, 0x75, 0xc3, 0xc0, 0xc0, 0x75, 0xc2, 0xc0, - 0xc0, 0x75, 0xc3, 0xc0, 0xc0, 0x75, 0xc2, 0xc0, 0xc1, 0x75, 0xc3, 0xc0, - 0xc1, 0x75, 0xc2, 0xc0, 0xc1, 0x75, 0xc3, 0xc0, 0xc1, 0x75, 0xc2, 0xc0, - 0xc2, 0x75, 0xc3, 0xc0, 0xc2, 0x75, 0xc2, 0xc0, 0xc2, 0x75, 0xc3, 0xc0, - 0xc3, 0x75, 0xc6, 0xc0, 0xc3, 0x76, 0xc6, 0xc0, 0xc3, 0x76, 0xc6, 0xc0, - 0xc4, 0x76, 0xc6, 0xc0, 0xc4, 0x76, 0xc6, 0xc0, 0xc4, 0x76, 0xc6, 0xc0, - 0xc5, 0x76, 0xc6, 0xc0, 0xc5, 0x76, 0xc6, 0xc0, 0xc5, 0x76, 0xc6, 0xc0, - 0xc6, 0x76, 0xc6, 0xc0, 0xc6, 0x76, 0xc6, 0xc0, 0xc6, 0x76, 0xc9, 0xc0, - 0xc6, 0x77, 0xca, 0xc0, 0xc7, 0x77, 0xc9, 0xc0, 0xc7, 0x77, 0xca, 0xc0, - 0xc7, 0x77, 0xc9, 0xc0, 0xc8, 0x77, 0xca, 0xc0, 0xc8, 0x77, 0xc9, 0xc0, - 0xc8, 0x77, 0xca, 0xc0, 0xc9, 0x77, 0xc9, 0xc0, 0xc9, 0x77, 0xca, 0xc0, - 0xc9, 0x77, 0xc9, 0xc0, 0xc9, 0x77, 0xcd, 0xc0, 0xca, 0x78, 0xcd, 0xc0, - 0xca, 0x78, 0xcd, 0xc0, 0xca, 0x78, 0xcd, 0xc0, 0xcb, 0x78, 0xcd, 0xc0, - 0xcb, 0x78, 0xcd, 0xc0, 0xcb, 0x78, 0xcd, 0xc0, 0xcc, 0x78, 0xcd, 0xc0, - 0xcc, 0x78, 0xcd, 0xc0, 0xcc, 0x78, 0xcd, 0xc0, 0xcc, 0x78, 0xcd, 0xc0, - 0xcd, 0x78, 0xcd, 0xc0, 0xcd, 0x78, 0xcd, 0xc0, 0xcd, 0x78, 0xce, 0xc0, - 0xce, 0x78, 0xce, 0xc0, 0xce, 0x78, 0xce, 0xc0, 0xce, 0x78, 0xce, 0xc0, - 0xce, 0x78, 0xce, 0xc0, 0xcf, 0x78, 0xce, 0xc0, 0xcf, 0x78, 0xce, 0xc0, - 0xcf, 0x78, 0xce, 0xc0, 0xd0, 0x78, 0xce, 0xc0, 0xd0, 0x78, 0xce, 0xc0, - 0xd0, 0x78, 0xce, 0xc0, 0xd0, 0x78, 0xd4, 0xc0, 0xd1, 0x93, 0xd4, 0xc0, - 0xd1, 0x93, 0xd4, 0xc0, 0xd1, 0x93, 0xd4, 0xc0, 0xd2, 0x93, 0xd4, 0xc0, - 0xd2, 0x93, 0xd4, 0xc0, 0xd2, 0x93, 0xd4, 0xc0, 0xd2, 0x93, 0xd4, 0xc0, - 0xd3, 0x93, 0xd4, 0xc0, 0xd3, 0x93, 0xd4, 0xc0, 0xd3, 0x93, 0xd4, 0xc0, - 0xd4, 0x93, 0xd4, 0xc0, 0xd4, 0x93, 0xd4, 0xc0, 0xd4, 0x93, 0xd4, 0xc0, - 0xd4, 0x93, 0xd5, 0xc0, 0xd5, 0x93, 0xd4, 0xc0, 0xd5, 0x93, 0xd5, 0xc0, - 0xd5, 0x93, 0xd4, 0xc0, 0xd6, 0x93, 0xd5, 0xc0, 0xd6, 0x93, 0xd4, 0xc0, - 0xd6, 0x93, 0xd5, 0xc0, 0xd6, 0x93, 0xd4, 0xc0, 0xd7, 0x93, 0xd5, 0xc0, - 0xd7, 0x93, 0xd4, 0xc0, 0xd7, 0x93, 0xd5, 0xc0, 0xd7, 0x93, 0xd8, 0xc0, - 0xd8, 0x94, 0xd7, 0xc0, 0xd8, 0x94, 0xd8, 0xc0, 0xd8, 0x94, 0xd7, 0xc0, - 0xd9, 0x94, 0xd8, 0xc0, 0xd9, 0x94, 0xd7, 0xc0, 0xd9, 0x94, 0xd8, 0xc0, - 0xd9, 0x94, 0xd7, 0xc0, 0xda, 0x94, 0xd8, 0xc0, 0xda, 0x94, 0xd7, 0xc0, - 0xda, 0x94, 0xd8, 0xc0, 0xda, 0x94, 0xdb, 0xc0, 0xdb, 0x95, 0xda, 0xc0, - 0xdb, 0x95, 0xdb, 0xc0, 0xdb, 0x95, 0xda, 0xc0, 0xdb, 0x95, 0xdb, 0xc0, - 0xdc, 0x95, 0xda, 0xc0, 0xdc, 0x95, 0xdb, 0xc0, 0xdc, 0x95, 0xda, 0xc0, - 0xdd, 0x95, 0xdb, 0xc0, 0xdd, 0x95, 0xda, 0xc0, 0xdd, 0x95, 0xdb, 0xc0, - 0xdd, 0x95, 0xde, 0xc0, 0xde, 0x96, 0xdd, 0xc0, 0xde, 0x96, 0xde, 0xc0, - 0xde, 0x96, 0xdd, 0xc0, 0xde, 0x96, 0xde, 0xc0, 0xdf, 0x96, 0xdd, 0xc0, - 0xdf, 0x96, 0xde, 0xc0, 0xdf, 0x96, 0xdd, 0xc0, 0xdf, 0x96, 0xde, 0xc0, - 0xe0, 0x96, 0xdd, 0xc0, 0xe0, 0x96, 0xde, 0xc0, 0xe0, 0x96, 0xe1, 0xc0, - 0xe1, 0x97, 0xe0, 0xc0, 0xe1, 0x97, 0xe1, 0xc0, 0xe1, 0x97, 0xea, 0xc0, - 0xe1, 0x86, 0xea, 0xc0, 0xe2, 0x8a, 0xea, 0xc0, 0xe2, 0x86, 0xea, 0xc0, - 0xe2, 0x8a, 0xea, 0xc0, 0xe2, 0x86, 0xea, 0xc0, 0xe3, 0x8a, 0xea, 0xc0, - 0xe3, 0x86, 0xea, 0xc0, 0xe3, 0x8a, 0xea, 0xc0, 0xe3, 0x86, 0xea, 0xc0, - 0xe4, 0x8a, 0xea, 0xc0, 0xe4, 0x86, 0xea, 0xc0, 0xe4, 0x8a, 0xea, 0xc0, - 0xe4, 0x86, 0xea, 0xc0, 0xe5, 0x8a, 0xea, 0xc0, 0xe5, 0x86, 0xea, 0xc0, - 0xe5, 0x8a, 0xea, 0xc0, 0xe5, 0x86, 0xea, 0xc0, 0xe6, 0x8a, 0xea, 0xc0, - 0xe6, 0x86, 0xea, 0xc0, 0xe6, 0x86, 0xea, 0xc0, 0xe6, 0x86, 0xea, 0xc0, - 0xe7, 0x86, 0xea, 0xc0, 0xe7, 0x86, 0xea, 0xc0, 0xe7, 0x86, 0xea, 0xc0, - 0xe7, 0x86, 0xea, 0xc0, 0xe8, 0x86, 0xea, 0xc0, 0xe8, 0x86, 0xea, 0xc0, - 0xe8, 0x86, 0xea, 0xc0, 0xe8, 0x86, 0xea, 0xc0, 0xe9, 0x86, 0xea, 0xc0, - 0xe9, 0x86, 0xea, 0xc0, 0xe9, 0x86, 0xea, 0xc0, 0xe9, 0x86, 0xea, 0xc0, - 0xea, 0x86, 0xea, 0xbf, 0xea, 0x86, 0xea, 0xc0, 0xea, 0x86, 0xea, 0xbf, - 0xea, 0x86, 0xeb, 0xc0, 0xea, 0x86, 0xeb, 0xbf, 0xea, 0x86, 0xeb, 0xc0, - 0xea, 0x86, 0xeb, 0xbf, 0xea, 0x86, 0xec, 0xc0, 0xea, 0x86, 0xec, 0xbf, - 0xea, 0x86, 0xec, 0xc0, 0xea, 0x86, 0xec, 0xbf, 0xea, 0x86, 0xec, 0xc0, - 0xea, 0x86, 0xed, 0xbf, 0xea, 0x86, 0xed, 0xc0, 0xea, 0x86, 0xed, 0xbf, - 0xea, 0x86, 0xed, 0xc0, 0xea, 0x86, 0xee, 0xbf, 0xea, 0x86, 0xee, 0xc5, - 0xed, 0x86, 0xee, 0xc5, 0xed, 0x86, 0xee, 0xc5, 0xed, 0x86, 0xef, 0xc5, - 0xed, 0x86, 0xef, 0xc5, 0xed, 0x86, 0xef, 0xc5, 0xed, 0x86, 0xef, 0xc5, - 0xef, 0x86, 0xf0, 0xc5, 0xf0, 0x86, 0xf0, 0xc5, 0xf0, 0x86, 0xf0, 0xc5, - 0xf0, 0x86, 0xf0, 0xc5, 0xf0, 0x86, 0xf1, 0xc5, 0xf1, 0x86, 0xf1, 0xc5, - 0xf1, 0x86, 0xf1, 0xc1, 0xf5, 0x86, 0xf1, 0xc0, 0xf5, 0x86, 0xf2, 0xc1, - 0xf5, 0x86, 0xf2, 0xc0, 0xf5, 0x86, 0xf2, 0xc1, 0xf5, 0x86, 0xf2, 0xc0, - 0xf5, 0x86, 0xf2, 0xc1, 0xf5, 0x86, 0xf3, 0xc0, 0xf5, 0x86, 0xf3, 0xc1, - 0xf5, 0x86, 0xf3, 0xc0, 0xf5, 0x86, 0xf3, 0xc1, 0xf5, 0x86, 0xf4, 0xc0, - 0xf5, 0x86, 0xf4, 0xc1, 0xf5, 0x86, 0xf4, 0xc0, 0xf5, 0x86, 0xf4, 0xc0, - 0xf5, 0x86, 0xf5, 0xc0, 0xf5, 0x86, 0xf5, 0xc0, 0xf5, 0x86, 0xf5, 0xc0, - 0xf5, 0x86, 0xf5, 0xc0, 0xf5, 0x86, 0xf5, 0xc0, 0xf5, 0x86, 0xf5, 0xc0, - 0xf6, 0x86, 0xf5, 0xc0, 0xf6, 0x86, 0xf5, 0xc0, 0xf6, 0x86, 0xf5, 0xc0, - 0xf6, 0x86, 0xf5, 0xc0, 0xf7, 0x86, 0xf9, 0xc0, 0xf7, 0x86, 0xf8, 0xc0, - 0xf7, 0x86, 0xf9, 0xc0, 0xf7, 0x86, 0xf8, 0xc0, 0xf8, 0x86, 0xf9, 0xc0, - 0xf8, 0x86, 0xf8, 0xc0, 0xf8, 0x86, 0xf9, 0xc0, 0xf8, 0x86, 0xf8, 0xbf, - 0xf8, 0x86, 0xf9, 0xc0, 0xf8, 0x86, 0xf9, 0xbf, 0xf8, 0x86, 0xf9, 0xc0, - 0xf8, 0x86, 0xf9, 0xbf, 0xf8, 0x86, 0xfa, 0xc0, 0xf8, 0x86, 0xfa, 0xbf, - 0xf8, 0x86, 0xfa, 0xc0, 0xf8, 0x86, 0xfa, 0xbf, 0xf8, 0x86, 0xfa, 0xc0, - 0xf8, 0x86, 0xfb, 0xbf, 0xf8, 0x86, 0xfb, 0xc0, 0xf8, 0x86, 0xfb, 0xbf, - 0xf8, 0x86, 0xfb, 0xc0, 0xf8, 0x86, 0xfc, 0xbf, 0xf8, 0x86, 0xfc, 0xc0, - 0xf8, 0x86, 0xfc, 0xbf, 0xf8, 0x86, 0xfc, 0xbd, 0xf9, 0x86, 0xfc, 0xbf, - 0xf8, 0x86, 0xfd, 0xbd, 0xf9, 0x86, 0xfd, 0xbf, 0xf8, 0x86, 0xfd, 0xbd, - 0xf9, 0x86, 0xfd, 0xbf, 0xf8, 0x86, 0xfe, 0xbd, 0xf9, 0x86, 0xfe, 0xbf, - 0xf8, 0x86, 0xfe, 0xbd, 0xf9, 0x86, 0xfe, 0xbf, 0xf8, 0x86, 0xfe, 0xbd, - 0xf9, 0x86, 0xff, 0xbf, 0xf8, 0x86, 0xff, 0xbd, 0xf9, 0x86, 0x03, 0xc5, - 0x90, 0x86, 0x0a, 0xc7, 0x8f, 0x86, 0x0f, 0xc5, 0x90, 0x86, 0x14, 0xc7, - 0x8f, 0x86, 0x17, 0xc5, 0x90, 0x86, 0x1b, 0xc7, 0x8f, 0x86, 0x1e, 0xc5, - 0x90, 0x86, 0x20, 0xc7, 0x8f, 0x86, 0x23, 0xc5, 0x90, 0x86, 0x25, 0xc7, - 0x8f, 0x86, 0x27, 0xc5, 0x90, 0x86, 0x29, 0xc7, 0x8f, 0x86, 0x2b, 0xc5, - 0x90, 0x86, 0x2d, 0xc7, 0x8f, 0x86, 0x2f, 0xc5, 0x90, 0x86, 0x31, 0xc7, - 0x8f, 0x86, 0x32, 0xc5, 0x90, 0x86, 0x34, 0xc7, 0x8f, 0x86, 0x35, 0xc5, - 0x90, 0x86, 0x37, 0xc7, 0x8f, 0x86, 0x38, 0xc5, 0x90, 0x86, 0x3a, 0xc7, - 0x8f, 0x86, 0x3b, 0xc5, 0x90, 0x86, 0x3c, 0xc3, 0x90, 0x86, 0x3e, 0xc5, - 0x90, 0x86, 0x3f, 0xc3, 0x90, 0x86, 0x40, 0xc5, 0x90, 0x86, 0x42, 0xc3, - 0x90, 0x86, 0x43, 0xc5, 0x90, 0x86, 0x44, 0xc3, 0x90, 0x86, 0x45, 0xc5, - 0x90, 0x86, 0x46, 0xc3, 0x90, 0x86, 0x47, 0xc5, 0x90, 0x86, 0x48, 0xc3, - 0x90, 0x86, 0x49, 0xc5, 0x90, 0x86, 0x4a, 0xc3, 0x90, 0x86, 0x4b, 0xc5, - 0x90, 0x86, 0x4c, 0xc3, 0x90, 0x86, 0x4d, 0xc5, 0x90, 0x86, 0x4e, 0xc3, - 0x90, 0x86, 0x4f, 0xc5, 0x90, 0x86, 0x50, 0xc3, 0x90, 0x86, 0x51, 0xc5, - 0x90, 0x86, 0x52, 0xc3, 0x90, 0x86, 0x53, 0xc5, 0x90, 0x86, 0x54, 0xc3, - 0x90, 0x86, 0x55, 0xc5, 0x90, 0x86, 0x56, 0xc3, 0x90, 0x86, 0x57, 0xc5, - 0x90, 0x86, 0x58, 0xc3, 0x90, 0x86, 0x58, 0xc5, 0x90, 0x86, 0x59, 0xc3, - 0x90, 0x86, 0x5a, 0xc5, 0x90, 0x86, 0x5b, 0xc3, 0x90, 0x86, 0x5c, 0xc5, - 0x90, 0x86, 0x5d, 0xc3, 0x90, 0x86, 0x5d, 0xc5, 0x90, 0x86, 0x5e, 0xc3, - 0x90, 0x86, 0x5f, 0xc5, 0x90, 0x86, 0x60, 0xc3, 0x90, 0x86, 0x60, 0xc5, - 0x90, 0x86, 0x61, 0xc3, 0x90, 0x86, 0x62, 0xc5, 0x90, 0x86, 0x63, 0xc3, - 0x90, 0x86, 0x63, 0xc5, 0x90, 0x86, 0x64, 0xc3, 0x90, 0x86, 0x65, 0xc5, - 0x90, 0x86, 0x66, 0xc3, 0x90, 0x86, 0x66, 0xc5, 0x90, 0x86, 0x67, 0xc3, - 0x90, 0x86, 0x68, 0xc5, 0x90, 0x86, 0x68, 0xc3, 0x90, 0x86, 0x69, 0xc5, - 0x90, 0x86, 0x6a, 0xc3, 0x90, 0x86, 0x6a, 0xc5, 0x90, 0x86, 0x6b, 0xc3, - 0x90, 0x86, 0x6c, 0xc5, 0x90, 0x86, 0x6c, 0xc3, 0x90, 0x86, 0x6d, 0xc5, - 0x90, 0x86, 0x6e, 0xc3, 0x90, 0x86, 0x6e, 0xc5, 0x90, 0x86, 0x6f, 0xc3, - 0x90, 0x86, 0x70, 0xc5, 0x90, 0x86, 0x70, 0xc3, 0x90, 0x86, 0x71, 0xc1, - 0x91, 0x86, 0x72, 0xc3, 0x90, 0x86, 0x72, 0xc1, 0x91, 0x86, 0x73, 0xc3, - 0x90, 0x86, 0x73, 0xc1, 0x91, 0x86, 0x74, 0xc3, 0x90, 0x86, 0x75, 0xc1, - 0x91, 0x86, 0x75, 0xc3, 0x90, 0x86, 0x76, 0xc1, 0x91, 0x86, 0x76, 0xc3, - 0x90, 0x86, 0x77, 0xc1, 0x91, 0x86, 0x78, 0xc3, 0x90, 0x86, 0x78, 0xc1, - 0x91, 0x86, 0x79, 0xc3, 0x90, 0x86, 0x79, 0xc1, 0x91, 0x86, 0x7a, 0xc3, - 0x90, 0x86, 0x7a, 0xc1, 0x91, 0x86, 0x7b, 0xc3, 0x90, 0x86, 0x7c, 0xc1, - 0x91, 0x86, 0x7c, 0xc3, 0x90, 0x86, 0x7d, 0xc1, 0x91, 0x86, 0x7d, 0xc3, - 0x90, 0x86, 0x7e, 0xc1, 0x91, 0x86, 0x7e, 0xc3, 0x90, 0x86, 0x7f, 0xc1, - 0x91, 0x86, 0x7f, 0xc3, 0x90, 0x86, 0x80, 0xc1, 0x91, 0x86, 0x81, 0xc3, - 0x90, 0x86, 0x81, 0xc1, 0x91, 0x86, 0x82, 0xc3, 0x90, 0x86, 0x82, 0xc1, - 0x91, 0x86, 0x83, 0xc3, 0x90, 0x86, 0x83, 0xc1, 0x91, 0x86, 0x84, 0xc3, - 0x90, 0x86, 0x84, 0xc1, 0x91, 0x86, 0x85, 0xc3, 0x90, 0x86, 0x85, 0xc1, - 0x91, 0x86, 0x86, 0xc0, 0x91, 0x86, 0x86, 0xc1, 0x91, 0x86, 0x87, 0xc0, - 0x91, 0x86, 0x87, 0xc1, 0x91, 0x86, 0x88, 0xc0, 0x91, 0x86, 0x88, 0xc1, - 0x91, 0x86, 0x89, 0xc0, 0x91, 0x86, 0x89, 0xc1, 0x91, 0x86, 0x8a, 0xc0, - 0x91, 0x86, 0x8a, 0xc1, 0x91, 0x86, 0x8b, 0xc0, 0x91, 0x86, 0x8b, 0xc1, - 0x91, 0x86, 0x8c, 0xc0, 0x91, 0x86, 0x8c, 0xc1, 0x91, 0x86, 0x8d, 0xc0, - 0x91, 0x86, 0x8d, 0xc1, 0x91, 0x86, 0x8e, 0xc0, 0x91, 0x86, 0x8e, 0xc1, - 0x91, 0x86, 0x8e, 0xc0, 0x91, 0x86, 0x8f, 0xc1, 0x91, 0x86, 0x8f, 0xc0, - 0x91, 0x86, 0x90, 0xc0, 0x92, 0x86, 0x90, 0xc0, 0x91, 0x86, 0x91, 0xc0, - 0x92, 0x86, 0x90, 0xc0, 0x91, 0x86, 0x91, 0xc0, 0x92, 0x86, 0x90, 0xc0, - 0x92, 0x86, 0x91, 0xc0, 0x93, 0x86, 0x95, 0xc0, 0x93, 0x86, 0x94, 0xc0, - 0x94, 0x87, 0x95, 0xc0, 0x94, 0x86, 0x95, 0xc0, 0x94, 0x86, 0x95, 0xc0, - 0x94, 0x86, 0x95, 0xc0, 0x94, 0x86, 0x96, 0xc0, 0x94, 0x86, 0x96, 0xc0, - 0x94, 0x86, 0x97, 0xc0, 0x94, 0x86, 0x97, 0xc0, 0x94, 0x86, 0x98, 0xc0, - 0x94, 0x86, 0x98, 0xc0, 0x94, 0x86, 0x98, 0xbe, 0x95, 0x86, 0x99, 0xc0, - 0x94, 0x86, 0x99, 0xbe, 0x95, 0x86, 0x9a, 0xc0, 0x94, 0x86, 0x9a, 0xbc, - 0x9a, 0x86, 0x9a, 0xbc, 0x9a, 0x86, 0x9b, 0xbc, 0x9b, 0x86, 0x9b, 0xbc, - 0x9b, 0x86, 0x9c, 0xbc, 0x9c, 0x86, 0x9c, 0xbd, 0x9f, 0x86, 0x9d, 0xbd, - 0x9f, 0x86, 0x9d, 0xbd, 0x9f, 0x86, 0x9d, 0xbd, 0x9f, 0x86, 0x9e, 0xbd, - 0x9f, 0x86, 0x9e, 0xbd, 0x9f, 0x86, 0x9f, 0xbd, 0x9f, 0x86, 0x9f, 0xbd, - 0x9f, 0x86, 0x9f, 0xbd, 0x9f, 0x86, 0xa0, 0xbd, 0xa0, 0x86, 0xa0, 0xbd, - 0xa0, 0x86, 0xa1, 0xbd, 0xa1, 0x86, 0xa1, 0xbd, 0xa1, 0x86, 0xa1, 0xbd, - 0xa3, 0x86, 0xa2, 0xbd, 0xa3, 0x86, 0xa2, 0xbd, 0xa3, 0x86, 0xa3, 0xbd, - 0xa3, 0x86, 0xa3, 0xbd, 0xa3, 0x86, 0xa3, 0xc1, 0xa6, 0x86, 0xa4, 0xc0, - 0xa6, 0x86, 0xa4, 0xc1, 0xa6, 0x86, 0xa5, 0xc0, 0xa6, 0x86, 0xa5, 0xc0, - 0xa6, 0x86, 0xa5, 0xc0, 0xa6, 0x86, 0xa6, 0xc0, 0xa6, 0x86, 0xa5, 0xc0, - 0xa6, 0x86, 0xa6, 0xc0, 0xa6, 0x86, 0xa5, 0xc0, 0xa7, 0x86, 0xa6, 0xc0, - 0xa7, 0x86, 0xa6, 0xc0, 0xa8, 0x84, 0xa6, 0xc0, 0xa8, 0x86, 0xa6, 0xc0, - 0xa8, 0x84, 0xa6, 0xc0, 0xa9, 0x86, 0xa6, 0xc0, 0xa9, 0x84, 0xa6, 0xc0, - 0xaa, 0x86, 0xa6, 0xc0, 0xaa, 0x84, 0xa6, 0xc0, 0xaa, 0x86, 0xa6, 0xc0, - 0xab, 0x84, 0xa6, 0xc0, 0xab, 0x86, 0xa6, 0xc0, 0xab, 0x84, 0xa6, 0xc0, - 0xac, 0x86, 0xa6, 0xc0, 0xac, 0x84, 0xa6, 0xc0, 0xac, 0x86, 0xa6, 0xc0, - 0xad, 0x84, 0xa6, 0xc0, 0xad, 0x86, 0xa9, 0xc0, 0xae, 0x7e, 0xa9, 0xc0, - 0xae, 0x7e, 0xa9, 0xc0, 0xae, 0x7e, 0xa9, 0xc0, 0xaf, 0x7e, 0xa9, 0xc0, - 0xaf, 0x7e, 0xaa, 0xc0, 0xaf, 0x7d, 0xa9, 0xc0, 0xb0, 0x7e, 0xaa, 0xc0, - 0xb0, 0x7d, 0xa9, 0xc0, 0xb0, 0x7e, 0xaa, 0xc0, 0xb1, 0x7d, 0xa9, 0xc0, - 0xb1, 0x7e, 0xaa, 0xc0, 0xb2, 0x7d, 0xa9, 0xc0, 0xb2, 0x7e, 0xaa, 0xc0, - 0xb2, 0x7d, 0xa9, 0xc0, 0xb3, 0x7e, 0xaa, 0xc0, 0xb3, 0x7d, 0xa9, 0xc0, - 0xb3, 0x7e, 0xaa, 0xc0, 0xb4, 0x7d, 0xa9, 0xc0, 0xb4, 0x7e, 0xaa, 0xc0, - 0xb4, 0x7d, 0xa9, 0xc0, 0xb5, 0x7e, 0xaa, 0xc0, 0xb5, 0x7d, 0xa9, 0xc0, - 0xb5, 0x7e, 0xaa, 0xc0, 0xb6, 0x7d, 0xa9, 0xc0, 0xb6, 0x7e, 0xaa, 0xc0, - 0xb6, 0x7d, 0xa9, 0xc0, 0xb7, 0x7e, 0xba, 0xc0, 0xb7, 0x72, 0xba, 0xc0, - 0xb7, 0x72, 0xba, 0xc0, 0xb8, 0x72, 0xba, 0xc0, 0xb8, 0x72, 0xba, 0xc0, - 0xb8, 0x72, 0xba, 0xc0, 0xb9, 0x72, 0xba, 0xc0, 0xb9, 0x72, 0xbd, 0xc0, - 0xb9, 0x73, 0xbe, 0xc0, 0xba, 0x73, 0xbd, 0xc0, 0xba, 0x73, 0xbe, 0xc0, - 0xba, 0x73, 0xbd, 0xc0, 0xbb, 0x73, 0xbe, 0xc0, 0xbb, 0x73, 0xbd, 0xc0, - 0xbb, 0x73, 0xbe, 0xc0, 0xbc, 0x73, 0xbd, 0xc0, 0xbc, 0x73, 0xbe, 0xc0, - 0xbc, 0x73, 0xbd, 0xc0, 0xbd, 0x73, 0xc1, 0xc0, 0xbd, 0x74, 0xc1, 0xc0, - 0xbd, 0x74, 0xc1, 0xc0, 0xbe, 0x74, 0xc1, 0xc0, 0xbe, 0x74, 0xc1, 0xc0, - 0xbe, 0x74, 0xc1, 0xc0, 0xbf, 0x74, 0xc1, 0xc0, 0xbf, 0x74, 0xc1, 0xc0, - 0xbf, 0x74, 0xc1, 0xc0, 0xc0, 0x74, 0xc1, 0xc0, 0xc0, 0x74, 0xc1, 0xc0, - 0xc0, 0x74, 0xc4, 0xc0, 0xc1, 0x75, 0xc1, 0xc0, 0xc1, 0x74, 0xc4, 0xc0, - 0xc1, 0x75, 0xc5, 0xc0, 0xc1, 0x75, 0xc4, 0xc0, 0xc2, 0x75, 0xc5, 0xc0, - 0xc2, 0x75, 0xc4, 0xc0, 0xc2, 0x75, 0xc5, 0xc0, 0xc3, 0x75, 0xc4, 0xc0, - 0xc3, 0x75, 0xc5, 0xc0, 0xc3, 0x75, 0xc4, 0xc0, 0xc4, 0x75, 0xc5, 0xc0, - 0xc4, 0x75, 0xc4, 0xc0, 0xc4, 0x75, 0xc8, 0xc0, 0xc5, 0x76, 0xc8, 0xc0, - 0xc5, 0x76, 0xc8, 0xc0, 0xc5, 0x76, 0xc8, 0xc0, 0xc6, 0x76, 0xc8, 0xc0, - 0xc6, 0x76, 0xc8, 0xc0, 0xc6, 0x76, 0xc8, 0xc0, 0xc6, 0x76, 0xc8, 0xc0, - 0xc7, 0x76, 0xc8, 0xc0, 0xc7, 0x76, 0xc8, 0xc0, 0xc7, 0x76, 0xc8, 0xc0, - 0xc8, 0x76, 0xcb, 0xc0, 0xc8, 0x77, 0xcb, 0xc0, 0xc8, 0x77, 0xcb, 0xc0, - 0xc9, 0x77, 0xcb, 0xc0, 0xc9, 0x77, 0xcb, 0xc0, 0xc9, 0x77, 0xcb, 0xc0, - 0xc9, 0x77, 0xcb, 0xc0, 0xca, 0x77, 0xcb, 0xc0, 0xca, 0x77, 0xcb, 0xc0, - 0xca, 0x77, 0xcb, 0xc0, 0xcb, 0x77, 0xcb, 0xc0, 0xcb, 0x77, 0xce, 0xc0, - 0xcb, 0x78, 0xce, 0xc0, 0xcc, 0x78, 0xce, 0xc0, 0xcc, 0x78, 0xce, 0xc0, - 0xcc, 0x78, 0xce, 0xc0, 0xcc, 0x78, 0xce, 0xc0, 0xcd, 0x78, 0xce, 0xc0, - 0xcd, 0x78, 0xce, 0xc0, 0xcd, 0x78, 0xce, 0xc0, 0xce, 0x78, 0xce, 0xc0, - 0xce, 0x78, 0xce, 0xc0, 0xce, 0x78, 0xce, 0xc0, 0xce, 0x78, 0xce, 0xc0, - 0xcf, 0x78, 0xce, 0xc0, 0xcf, 0x78, 0xce, 0xc0, 0xcf, 0x78, 0xce, 0xc0, - 0xd0, 0x78, 0xce, 0xc0, 0xd0, 0x78, 0xce, 0xc0, 0xd0, 0x78, 0xce, 0xc0, - 0xd0, 0x78, 0xd4, 0xc0, 0xd1, 0x93, 0xd4, 0xc0, 0xd1, 0x93, 0xd4, 0xc0, - 0xd1, 0x93, 0xd4, 0xc0, 0xd2, 0x93, 0xd4, 0xc0, 0xd2, 0x93, 0xd4, 0xc0, - 0xd2, 0x93, 0xd4, 0xc0, 0xd2, 0x93, 0xd4, 0xc0, 0xd3, 0x93, 0xd4, 0xc0, - 0xd3, 0x93, 0xd4, 0xc0, 0xd3, 0x93, 0xd4, 0xc0, 0xd4, 0x93, 0xd4, 0xc0, - 0xd4, 0x93, 0xd4, 0xc0, 0xd4, 0x93, 0xd4, 0xc0, 0xd4, 0x93, 0xd5, 0xc0, - 0xd5, 0x93, 0xd5, 0xc0, 0xd5, 0x93, 0xd5, 0xc0, 0xd5, 0x93, 0xd6, 0xc0, - 0xd6, 0x93, 0xd6, 0xc0, 0xd6, 0x93, 0xd6, 0xc0, 0xd6, 0x93, 0xd6, 0xc0, - 0xd6, 0x93, 0xd6, 0xc0, 0xd7, 0x93, 0xd6, 0xc0, 0xd7, 0x93, 0xd6, 0xc0, - 0xd7, 0x93, 0xd6, 0xc0, 0xd7, 0x93, 0xd6, 0xc0, 0xd8, 0x93, 0xd6, 0xc0, - 0xd8, 0x93, 0xd6, 0xc0, 0xd8, 0x93, 0xd6, 0xc0, 0xd9, 0x93, 0xd6, 0xc0, - 0xd9, 0x93, 0xd9, 0xc0, 0xd9, 0x94, 0xd9, 0xc0, 0xd9, 0x94, 0xd9, 0xc0, - 0xda, 0x94, 0xd9, 0xc0, 0xda, 0x94, 0xd9, 0xc0, 0xda, 0x94, 0xd9, 0xc0, - 0xda, 0x94, 0xd9, 0xc0, 0xdb, 0x94, 0xd9, 0xc0, 0xdb, 0x94, 0xd9, 0xc0, - 0xdb, 0x94, 0xd9, 0xc0, 0xdb, 0x94, 0xd9, 0xc0, 0xdc, 0x94, 0xdc, 0xc0, - 0xdc, 0x95, 0xdc, 0xc0, 0xdc, 0x95, 0xdc, 0xc0, 0xdd, 0x95, 0xdc, 0xc0, - 0xdd, 0x95, 0xdc, 0xc0, 0xdd, 0x95, 0xdc, 0xc0, 0xdd, 0x95, 0xdc, 0xc0, - 0xde, 0x95, 0xdc, 0xc0, 0xde, 0x95, 0xdc, 0xc0, 0xde, 0x95, 0xdc, 0xc0, - 0xde, 0x95, 0xdc, 0xc0, 0xdf, 0x95, 0xdf, 0xc0, 0xdf, 0x96, 0xdf, 0xc0, - 0xdf, 0x96, 0xdf, 0xc0, 0xdf, 0x96, 0xdf, 0xc0, 0xe0, 0x96, 0xdf, 0xc0, - 0xe0, 0x96, 0xdf, 0xc0, 0xe0, 0x96, 0xdf, 0xc0, 0xe1, 0x96, 0xdf, 0xc0, - 0xe1, 0x96, 0xdf, 0xc0, 0xe1, 0x96, 0xdf, 0xc0, 0xe1, 0x96, 0xea, 0xc0, - 0xe2, 0x8a, 0xea, 0xc0, 0xe2, 0x86, 0xea, 0xc0, 0xe2, 0x8a, 0xea, 0xc0, - 0xe2, 0x86, 0xea, 0xc0, 0xe3, 0x8a, 0xea, 0xc0, 0xe3, 0x86, 0xea, 0xc0, - 0xe3, 0x8a, 0xea, 0xc0, 0xe3, 0x86, 0xea, 0xc0, 0xe4, 0x8a, 0xea, 0xc0, - 0xe4, 0x86, 0xea, 0xc0, 0xe4, 0x8a, 0xea, 0xc0, 0xe4, 0x86, 0xea, 0xc0, - 0xe5, 0x8a, 0xea, 0xc0, 0xe5, 0x86, 0xea, 0xc0, 0xe5, 0x8a, 0xea, 0xc0, - 0xe5, 0x86, 0xea, 0xc0, 0xe6, 0x8a, 0xea, 0xc0, 0xe6, 0x86, 0xea, 0xc0, - 0xe6, 0x86, 0xea, 0xc0, 0xe6, 0x86, 0xea, 0xc0, 0xe7, 0x86, 0xea, 0xc0, - 0xe7, 0x86, 0xea, 0xc0, 0xe7, 0x86, 0xea, 0xc0, 0xe7, 0x86, 0xea, 0xc0, - 0xe8, 0x86, 0xea, 0xc0, 0xe8, 0x86, 0xea, 0xc0, 0xe8, 0x86, 0xea, 0xc0, - 0xe8, 0x86, 0xea, 0xc0, 0xe9, 0x86, 0xea, 0xc0, 0xe9, 0x86, 0xea, 0xc0, - 0xe9, 0x86, 0xea, 0xc0, 0xe9, 0x86, 0xea, 0xc0, 0xea, 0x86, 0xea, 0xbf, - 0xea, 0x86, 0xea, 0xc0, 0xea, 0x86, 0xea, 0xbf, 0xea, 0x86, 0xeb, 0xc0, - 0xea, 0x86, 0xeb, 0xbf, 0xea, 0x86, 0xeb, 0xc0, 0xea, 0x86, 0xeb, 0xbf, - 0xea, 0x86, 0xec, 0xc0, 0xea, 0x86, 0xec, 0xbf, 0xea, 0x86, 0xec, 0xc0, - 0xea, 0x86, 0xec, 0xbf, 0xea, 0x86, 0xec, 0xc0, 0xea, 0x86, 0xed, 0xbf, - 0xea, 0x86, 0xed, 0xc0, 0xea, 0x86, 0xed, 0xbf, 0xea, 0x86, 0xed, 0xc5, - 0xed, 0x86, 0xee, 0xc5, 0xee, 0x86, 0xee, 0xc5, 0xee, 0x86, 0xee, 0xc5, - 0xee, 0x86, 0xee, 0xc5, 0xee, 0x86, 0xef, 0xc5, 0xef, 0x86, 0xef, 0xc5, - 0xef, 0x86, 0xef, 0xc5, 0xef, 0x86, 0xef, 0xc5, 0xef, 0x86, 0xf0, 0xc5, - 0xef, 0x86, 0xf0, 0xc5, 0xef, 0x86, 0xf0, 0xc5, 0xef, 0x86, 0xf0, 0xc5, - 0xef, 0x86, 0xf1, 0xc5, 0xef, 0x86, 0xf1, 0xc5, 0xef, 0x86, 0xf1, 0xc1, - 0xf5, 0x86, 0xf1, 0xc0, 0xf5, 0x86, 0xf2, 0xc1, 0xf5, 0x86, 0xf2, 0xc0, - 0xf5, 0x86, 0xf2, 0xc1, 0xf5, 0x86, 0xf2, 0xc0, 0xf5, 0x86, 0xf2, 0xc1, - 0xf5, 0x86, 0xf3, 0xc0, 0xf5, 0x86, 0xf3, 0xc1, 0xf5, 0x86, 0xf3, 0xc0, - 0xf5, 0x86, 0xf3, 0xc1, 0xf5, 0x86, 0xf4, 0xc0, 0xf5, 0x86, 0xf4, 0xc1, - 0xf5, 0x86, 0xf4, 0xc0, 0xf5, 0x86, 0xf4, 0xc1, 0xf5, 0x86, 0xf5, 0xc0, - 0xf5, 0x86, 0xf5, 0xc0, 0xf5, 0x86, 0xf5, 0xc0, 0xf5, 0x86, 0xf5, 0xc0, - 0xf5, 0x86, 0xf5, 0xc0, 0xf5, 0x86, 0xf5, 0xc0, 0xf6, 0x86, 0xf5, 0xc0, - 0xf6, 0x86, 0xf5, 0xc0, 0xf6, 0x86, 0xf5, 0xc0, 0xf6, 0x86, 0xf5, 0xc0, - 0xf7, 0x86, 0xf8, 0xc0, 0xf7, 0x88, 0xf8, 0xc0, 0xf7, 0x86, 0xf8, 0xc0, - 0xf7, 0x88, 0xf8, 0xc0, 0xf8, 0x86, 0xf9, 0xc0, 0xf8, 0x86, 0xf8, 0xc0, - 0xf8, 0x86, 0xf9, 0xc0, 0xf8, 0x86, 0xf8, 0xbf, 0xf8, 0x86, 0xf9, 0xc0, - 0xf8, 0x86, 0xf9, 0xbf, 0xf8, 0x86, 0xf9, 0xc0, 0xf8, 0x86, 0xf9, 0xbf, - 0xf8, 0x86, 0xfa, 0xc0, 0xf8, 0x86, 0xfa, 0xbf, 0xf8, 0x86, 0xfa, 0xc0, - 0xf8, 0x86, 0xfa, 0xbf, 0xf8, 0x86, 0xfa, 0xc0, 0xf8, 0x86, 0xfb, 0xbf, - 0xf8, 0x86, 0xfb, 0xc0, 0xf8, 0x86, 0xfb, 0xbf, 0xf8, 0x86, 0xfb, 0xc0, - 0xf8, 0x86, 0xfc, 0xbf, 0xf8, 0x86, 0xfc, 0xc0, 0xf8, 0x86, 0xfc, 0xbf, - 0xf8, 0x86, 0xfc, 0xbd, 0xf9, 0x86, 0xfc, 0xbf, 0xf8, 0x86, 0xfd, 0xbd, - 0xf9, 0x86, 0xfd, 0xbf, 0xf8, 0x86, 0xfd, 0xbd, 0xf9, 0x86, 0xfd, 0xbf, - 0xf8, 0x86, 0xfe, 0xbd, 0xf9, 0x86, 0xfe, 0xbf, 0xf8, 0x86, 0xfe, 0xbd, - 0xf9, 0x86, 0xfe, 0xbf, 0xf8, 0x86, 0xfe, 0xbd, 0xf9, 0x86, 0xff, 0xbf, - 0xf8, 0x86, 0xff, 0xbd, 0xf9, 0x86, 0x03, 0xc9, 0x8f, 0x87, 0x0a, 0xc7, - 0x8f, 0x87, 0x0f, 0xc9, 0x8f, 0x87, 0x14, 0xc7, 0x8f, 0x87, 0x17, 0xc9, - 0x8f, 0x87, 0x1b, 0xc7, 0x8f, 0x87, 0x1e, 0xc9, 0x8f, 0x87, 0x20, 0xc7, - 0x8f, 0x87, 0x23, 0xc9, 0x8f, 0x87, 0x25, 0xc7, 0x8f, 0x87, 0x27, 0xc5, - 0x90, 0x87, 0x29, 0xc7, 0x8f, 0x87, 0x2b, 0xc5, 0x90, 0x87, 0x2d, 0xc7, - 0x8f, 0x87, 0x2f, 0xc5, 0x90, 0x87, 0x31, 0xc7, 0x8f, 0x87, 0x32, 0xc5, - 0x90, 0x87, 0x34, 0xc7, 0x8f, 0x87, 0x35, 0xc5, 0x90, 0x87, 0x37, 0xc7, - 0x8f, 0x87, 0x38, 0xc5, 0x90, 0x87, 0x3a, 0xc7, 0x8f, 0x87, 0x3b, 0xc5, - 0x90, 0x87, 0x3c, 0xc7, 0x8f, 0x87, 0x3e, 0xc5, 0x90, 0x87, 0x3f, 0xc7, - 0x8f, 0x87, 0x40, 0xc5, 0x90, 0x87, 0x42, 0xc7, 0x8f, 0x87, 0x43, 0xc5, - 0x90, 0x87, 0x44, 0xc7, 0x8f, 0x87, 0x45, 0xc5, 0x90, 0x87, 0x46, 0xc7, - 0x8f, 0x87, 0x47, 0xc5, 0x90, 0x87, 0x48, 0xc7, 0x8f, 0x87, 0x49, 0xc5, - 0x90, 0x87, 0x4a, 0xc7, 0x8f, 0x87, 0x4b, 0xc5, 0x90, 0x87, 0x4c, 0xc7, - 0x8f, 0x87, 0x4d, 0xc5, 0x90, 0x87, 0x4e, 0xc3, 0x90, 0x87, 0x4f, 0xc5, - 0x90, 0x87, 0x50, 0xc3, 0x90, 0x87, 0x51, 0xc5, 0x90, 0x87, 0x52, 0xc3, - 0x90, 0x87, 0x53, 0xc5, 0x90, 0x87, 0x54, 0xc3, 0x90, 0x87, 0x55, 0xc5, - 0x90, 0x87, 0x56, 0xc3, 0x90, 0x87, 0x57, 0xc5, 0x90, 0x87, 0x58, 0xc3, - 0x90, 0x87, 0x58, 0xc5, 0x90, 0x87, 0x59, 0xc3, 0x90, 0x87, 0x5a, 0xc5, - 0x90, 0x87, 0x5b, 0xc3, 0x90, 0x87, 0x5c, 0xc5, 0x90, 0x87, 0x5d, 0xc3, - 0x90, 0x87, 0x5d, 0xc5, 0x90, 0x87, 0x5e, 0xc3, 0x90, 0x87, 0x5f, 0xc5, - 0x90, 0x87, 0x60, 0xc3, 0x90, 0x87, 0x60, 0xc5, 0x90, 0x87, 0x61, 0xc3, - 0x90, 0x87, 0x62, 0xc5, 0x90, 0x87, 0x63, 0xc3, 0x90, 0x87, 0x63, 0xc5, - 0x90, 0x87, 0x64, 0xc3, 0x90, 0x87, 0x65, 0xc5, 0x90, 0x87, 0x66, 0xc3, - 0x90, 0x87, 0x66, 0xc5, 0x90, 0x87, 0x67, 0xc3, 0x90, 0x87, 0x68, 0xc5, - 0x90, 0x87, 0x68, 0xc3, 0x90, 0x87, 0x69, 0xc5, 0x90, 0x87, 0x6a, 0xc3, - 0x90, 0x87, 0x6a, 0xc5, 0x90, 0x87, 0x6b, 0xc3, 0x90, 0x87, 0x6c, 0xc5, - 0x90, 0x87, 0x6c, 0xc3, 0x90, 0x87, 0x6d, 0xc5, 0x90, 0x87, 0x6e, 0xc3, - 0x90, 0x87, 0x6e, 0xc1, 0x91, 0x87, 0x6f, 0xc3, 0x90, 0x87, 0x70, 0xc1, - 0x91, 0x87, 0x70, 0xc3, 0x90, 0x87, 0x71, 0xc1, 0x91, 0x87, 0x72, 0xc3, - 0x90, 0x87, 0x72, 0xc1, 0x91, 0x87, 0x73, 0xc3, 0x90, 0x87, 0x73, 0xc1, - 0x91, 0x87, 0x74, 0xc3, 0x90, 0x87, 0x75, 0xc1, 0x91, 0x87, 0x75, 0xc3, - 0x90, 0x87, 0x76, 0xc1, 0x91, 0x87, 0x76, 0xc3, 0x90, 0x87, 0x77, 0xc1, - 0x91, 0x87, 0x78, 0xc3, 0x90, 0x87, 0x78, 0xc1, 0x91, 0x87, 0x79, 0xc3, - 0x90, 0x87, 0x79, 0xc1, 0x91, 0x87, 0x7a, 0xc3, 0x90, 0x87, 0x7a, 0xc1, - 0x91, 0x87, 0x7b, 0xc3, 0x90, 0x87, 0x7c, 0xc1, 0x91, 0x87, 0x7c, 0xc3, - 0x90, 0x87, 0x7d, 0xc1, 0x91, 0x87, 0x7d, 0xc3, 0x90, 0x87, 0x7e, 0xc1, - 0x91, 0x87, 0x7e, 0xc3, 0x90, 0x87, 0x7f, 0xc1, 0x91, 0x87, 0x7f, 0xc3, - 0x90, 0x87, 0x80, 0xc1, 0x91, 0x87, 0x81, 0xc3, 0x90, 0x87, 0x81, 0xc1, - 0x91, 0x87, 0x82, 0xc3, 0x90, 0x87, 0x82, 0xc1, 0x91, 0x87, 0x83, 0xc3, - 0x90, 0x87, 0x83, 0xc1, 0x91, 0x87, 0x84, 0xc3, 0x90, 0x87, 0x84, 0xc1, - 0x91, 0x87, 0x85, 0xc3, 0x90, 0x87, 0x85, 0xc1, 0x91, 0x87, 0x86, 0xc3, - 0x90, 0x87, 0x86, 0xc1, 0x91, 0x87, 0x87, 0xc3, 0x90, 0x87, 0x87, 0xc1, - 0x91, 0x87, 0x88, 0xc3, 0x90, 0x87, 0x88, 0xc1, 0x91, 0x87, 0x89, 0xc3, - 0x90, 0x87, 0x89, 0xc1, 0x91, 0x87, 0x8a, 0xc0, 0x91, 0x87, 0x8a, 0xc1, - 0x91, 0x87, 0x8b, 0xc0, 0x91, 0x87, 0x8b, 0xc1, 0x91, 0x87, 0x8c, 0xc0, - 0x91, 0x87, 0x8c, 0xc1, 0x91, 0x87, 0x8d, 0xc0, 0x91, 0x87, 0x8d, 0xc1, - 0x91, 0x87, 0x8e, 0xc0, 0x91, 0x87, 0x8e, 0xc1, 0x91, 0x87, 0x8e, 0xc0, - 0x91, 0x87, 0x8f, 0xc1, 0x91, 0x87, 0x8f, 0xc0, 0x91, 0x87, 0x90, 0xc1, - 0x91, 0x87, 0x90, 0xc0, 0x91, 0x87, 0x91, 0xc1, 0x91, 0x87, 0x90, 0xc0, - 0x91, 0x87, 0x91, 0xc0, 0x92, 0x87, 0x90, 0xc0, 0x92, 0x87, 0x91, 0xc0, - 0x93, 0x87, 0x95, 0xc0, 0x93, 0x87, 0x94, 0xc0, 0x94, 0x87, 0x95, 0xc0, - 0x94, 0x87, 0x94, 0xc0, 0x94, 0x87, 0x95, 0xc0, 0x94, 0x87, 0x95, 0xc0, - 0x94, 0x87, 0x96, 0xc0, 0x94, 0x87, 0x96, 0xc0, 0x94, 0x87, 0x97, 0xc0, - 0x94, 0x87, 0x97, 0xc0, 0x94, 0x87, 0x98, 0xc0, 0x94, 0x87, 0x98, 0xc0, - 0x94, 0x87, 0x98, 0xc0, 0x94, 0x87, 0x99, 0xc0, 0x94, 0x87, 0x99, 0xc0, - 0x94, 0x87, 0x9a, 0xc0, 0x94, 0x87, 0x9a, 0xbc, 0x9d, 0x87, 0x9a, 0xbc, - 0x9c, 0x87, 0x9b, 0xbc, 0x9d, 0x87, 0x9b, 0xbc, 0x9c, 0x87, 0x9c, 0xbc, - 0x9d, 0x87, 0x9c, 0xbc, 0x9c, 0x87, 0x9d, 0xbc, 0x9d, 0x87, 0x9d, 0xbc, - 0x9d, 0x87, 0x9d, 0xbc, 0x9d, 0x87, 0x9e, 0xbc, 0x9e, 0x87, 0x9e, 0xbd, - 0xa1, 0x87, 0x9f, 0xbd, 0xa1, 0x87, 0x9f, 0xbd, 0xa1, 0x87, 0x9f, 0xbd, - 0xa1, 0x87, 0xa0, 0xbd, 0xa1, 0x87, 0xa0, 0xbd, 0xa1, 0x87, 0xa1, 0xbd, - 0xa1, 0x87, 0xa1, 0xbd, 0xa1, 0x87, 0xa1, 0xbd, 0xa1, 0x87, 0xa2, 0xbd, - 0xa2, 0x87, 0xa2, 0xbd, 0xa2, 0x87, 0xa3, 0xc1, 0xa6, 0x87, 0xa3, 0xc0, - 0xa6, 0x87, 0xa3, 0xc1, 0xa6, 0x87, 0xa4, 0xc0, 0xa6, 0x87, 0xa4, 0xc1, - 0xa6, 0x87, 0xa5, 0xc0, 0xa6, 0x87, 0xa5, 0xc1, 0xa6, 0x87, 0xa5, 0xc0, - 0xa6, 0x87, 0xa6, 0xc0, 0xa6, 0x87, 0xa5, 0xc0, 0xa6, 0x87, 0xa6, 0xc0, - 0xa6, 0x87, 0xa5, 0xc0, 0xa7, 0x87, 0xa6, 0xc0, 0xa7, 0x87, 0xa5, 0xc0, - 0xa8, 0x87, 0xa6, 0xc0, 0xa8, 0x87, 0xa5, 0xc0, 0xa8, 0x87, 0xa6, 0xc0, - 0xa9, 0x87, 0xa6, 0xc0, 0xa9, 0x84, 0xa6, 0xc0, 0xaa, 0x87, 0xa6, 0xc0, - 0xaa, 0x84, 0xa6, 0xc0, 0xaa, 0x87, 0xa6, 0xc0, 0xab, 0x84, 0xa6, 0xc0, - 0xab, 0x87, 0xa6, 0xc0, 0xab, 0x84, 0xa6, 0xc0, 0xac, 0x87, 0xa6, 0xc0, - 0xac, 0x84, 0xa6, 0xc0, 0xac, 0x87, 0xa9, 0xc0, 0xad, 0x7f, 0xa6, 0xc0, - 0xad, 0x87, 0xa9, 0xc0, 0xae, 0x7f, 0xa9, 0xc0, 0xae, 0x7f, 0xa9, 0xc0, - 0xae, 0x7f, 0xa9, 0xc0, 0xaf, 0x7f, 0xa9, 0xc0, 0xaf, 0x7f, 0xaa, 0xc0, - 0xaf, 0x7e, 0xa9, 0xc0, 0xb0, 0x7f, 0xaa, 0xc0, 0xb0, 0x7e, 0xa9, 0xc0, - 0xb0, 0x7f, 0xaa, 0xc0, 0xb1, 0x7e, 0xa9, 0xc0, 0xb1, 0x7f, 0xaa, 0xc0, - 0xb2, 0x7e, 0xa9, 0xc0, 0xb2, 0x7f, 0xaa, 0xc0, 0xb2, 0x7e, 0xa9, 0xc0, - 0xb3, 0x7f, 0xaa, 0xc0, 0xb3, 0x7e, 0xa9, 0xc0, 0xb3, 0x7f, 0xaa, 0xc0, - 0xb4, 0x7e, 0xa9, 0xc0, 0xb4, 0x7f, 0xaa, 0xc0, 0xb4, 0x7e, 0xa9, 0xc0, - 0xb5, 0x7f, 0xaa, 0xc0, 0xb5, 0x7e, 0xa9, 0xc0, 0xb5, 0x7f, 0xaa, 0xc0, - 0xb6, 0x7e, 0xa9, 0xc0, 0xb6, 0x7f, 0xaa, 0xc0, 0xb6, 0x7e, 0xa9, 0xc0, - 0xb7, 0x7f, 0xaa, 0xc0, 0xb7, 0x7e, 0xbb, 0xc0, 0xb7, 0x73, 0xbc, 0xc0, - 0xb8, 0x73, 0xbb, 0xc0, 0xb8, 0x73, 0xbc, 0xc0, 0xb8, 0x73, 0xbb, 0xc0, - 0xb9, 0x73, 0xbc, 0xc0, 0xb9, 0x73, 0xbb, 0xc0, 0xb9, 0x73, 0xbc, 0xc0, - 0xba, 0x73, 0xbb, 0xc0, 0xba, 0x73, 0xbc, 0xc0, 0xba, 0x73, 0xbb, 0xc0, - 0xbb, 0x73, 0xbf, 0xc0, 0xbb, 0x74, 0xbf, 0xc0, 0xbb, 0x74, 0xbf, 0xc0, - 0xbc, 0x74, 0xbf, 0xc0, 0xbc, 0x74, 0xbf, 0xc0, 0xbc, 0x74, 0xbf, 0xc0, - 0xbd, 0x74, 0xbf, 0xc0, 0xbd, 0x74, 0xbf, 0xc0, 0xbd, 0x74, 0xbf, 0xc0, - 0xbe, 0x74, 0xbf, 0xc0, 0xbe, 0x74, 0xbf, 0xc0, 0xbe, 0x74, 0xc2, 0xc0, - 0xbf, 0x75, 0xc3, 0xc0, 0xbf, 0x75, 0xc2, 0xc0, 0xbf, 0x75, 0xc3, 0xc0, - 0xc0, 0x75, 0xc2, 0xc0, 0xc0, 0x75, 0xc3, 0xc0, 0xc0, 0x75, 0xc2, 0xc0, - 0xc1, 0x75, 0xc3, 0xc0, 0xc1, 0x75, 0xc2, 0xc0, 0xc1, 0x75, 0xc3, 0xc0, - 0xc1, 0x75, 0xc2, 0xc0, 0xc2, 0x75, 0xc3, 0xc0, 0xc2, 0x75, 0xc2, 0xc0, - 0xc2, 0x75, 0xc3, 0xc0, 0xc3, 0x75, 0xc6, 0xc0, 0xc3, 0x76, 0xc6, 0xc0, - 0xc3, 0x76, 0xc6, 0xc0, 0xc4, 0x76, 0xc6, 0xc0, 0xc4, 0x76, 0xc6, 0xc0, - 0xc4, 0x76, 0xc6, 0xc0, 0xc5, 0x76, 0xc6, 0xc0, 0xc5, 0x76, 0xc6, 0xc0, - 0xc5, 0x76, 0xc6, 0xc0, 0xc6, 0x76, 0xc6, 0xc0, 0xc6, 0x76, 0xc6, 0xc0, - 0xc6, 0x76, 0xc9, 0xc0, 0xc6, 0x77, 0xca, 0xc0, 0xc7, 0x77, 0xc9, 0xc0, - 0xc7, 0x77, 0xca, 0xc0, 0xc7, 0x77, 0xc9, 0xc0, 0xc8, 0x77, 0xca, 0xc0, - 0xc8, 0x77, 0xc9, 0xc0, 0xc8, 0x77, 0xca, 0xc0, 0xc9, 0x77, 0xc9, 0xc0, - 0xc9, 0x77, 0xca, 0xc0, 0xc9, 0x77, 0xc9, 0xc0, 0xc9, 0x77, 0xcd, 0xc0, - 0xca, 0x78, 0xcd, 0xc0, 0xca, 0x78, 0xcd, 0xc0, 0xca, 0x78, 0xcd, 0xc0, - 0xcb, 0x78, 0xcd, 0xc0, 0xcb, 0x78, 0xcd, 0xc0, 0xcb, 0x78, 0xcd, 0xc0, - 0xcc, 0x78, 0xcd, 0xc0, 0xcc, 0x78, 0xcd, 0xc0, 0xcc, 0x78, 0xcd, 0xc0, - 0xcc, 0x78, 0xcd, 0xc0, 0xcd, 0x78, 0xcd, 0xc0, 0xcd, 0x78, 0xcd, 0xc0, - 0xcd, 0x78, 0xce, 0xc0, 0xce, 0x78, 0xce, 0xc0, 0xce, 0x78, 0xce, 0xc0, - 0xce, 0x78, 0xce, 0xc0, 0xce, 0x78, 0xce, 0xc0, 0xcf, 0x78, 0xd4, 0xc0, - 0xcf, 0x93, 0xd4, 0xc0, 0xcf, 0x93, 0xd4, 0xc0, 0xd0, 0x93, 0xd4, 0xc0, - 0xd0, 0x93, 0xd4, 0xc0, 0xd0, 0x93, 0xd4, 0xc0, 0xd0, 0x93, 0xd4, 0xc0, - 0xd1, 0x93, 0xd4, 0xc0, 0xd1, 0x93, 0xd4, 0xc0, 0xd1, 0x93, 0xd4, 0xc0, - 0xd2, 0x93, 0xd4, 0xc0, 0xd2, 0x93, 0xd4, 0xc0, 0xd2, 0x93, 0xd4, 0xc0, - 0xd2, 0x93, 0xd4, 0xc0, 0xd3, 0x93, 0xd4, 0xc0, 0xd3, 0x93, 0xd4, 0xc0, - 0xd3, 0x93, 0xd4, 0xc0, 0xd4, 0x93, 0xd4, 0xc0, 0xd4, 0x93, 0xd4, 0xc0, - 0xd4, 0x93, 0xd4, 0xc0, 0xd4, 0x93, 0xd5, 0xc0, 0xd5, 0x93, 0xd4, 0xc0, - 0xd5, 0x93, 0xd5, 0xc0, 0xd5, 0x93, 0xd4, 0xc0, 0xd6, 0x93, 0xd5, 0xc0, - 0xd6, 0x93, 0xd4, 0xc0, 0xd6, 0x93, 0xd5, 0xc0, 0xd6, 0x93, 0xd4, 0xc0, - 0xd7, 0x93, 0xd5, 0xc0, 0xd7, 0x93, 0xd7, 0xc0, 0xd7, 0x94, 0xd7, 0xc0, - 0xd7, 0x94, 0xd8, 0xc0, 0xd8, 0x94, 0xd7, 0xc0, 0xd8, 0x94, 0xd8, 0xc0, - 0xd8, 0x94, 0xd7, 0xc0, 0xd9, 0x94, 0xd8, 0xc0, 0xd9, 0x94, 0xd7, 0xc0, - 0xd9, 0x94, 0xd8, 0xc0, 0xd9, 0x94, 0xd7, 0xc0, 0xda, 0x94, 0xd8, 0xc0, - 0xda, 0x94, 0xd7, 0xc0, 0xda, 0x94, 0xd8, 0xc0, 0xda, 0x94, 0xdb, 0xc0, - 0xdb, 0x95, 0xda, 0xc0, 0xdb, 0x95, 0xdb, 0xc0, 0xdb, 0x95, 0xda, 0xc0, - 0xdb, 0x95, 0xdb, 0xc0, 0xdc, 0x95, 0xda, 0xc0, 0xdc, 0x95, 0xdb, 0xc0, - 0xdc, 0x95, 0xda, 0xc0, 0xdd, 0x95, 0xdb, 0xc0, 0xdd, 0x95, 0xda, 0xc0, - 0xdd, 0x95, 0xdb, 0xc0, 0xdd, 0x95, 0xde, 0xc0, 0xde, 0x96, 0xdd, 0xc0, - 0xde, 0x96, 0xde, 0xc0, 0xde, 0x96, 0xdd, 0xc0, 0xde, 0x96, 0xde, 0xc0, - 0xdf, 0x96, 0xdd, 0xc0, 0xdf, 0x96, 0xde, 0xc0, 0xdf, 0x96, 0xdd, 0xc0, - 0xdf, 0x96, 0xde, 0xc0, 0xe0, 0x96, 0xdd, 0xc0, 0xe0, 0x96, 0xde, 0xc0, - 0xe0, 0x96, 0xe1, 0xc0, 0xe1, 0x97, 0xe0, 0xc0, 0xe1, 0x97, 0xe1, 0xc0, - 0xe1, 0x97, 0xe0, 0xc0, 0xe1, 0x97, 0xe1, 0xc0, 0xe2, 0x97, 0xea, 0xc0, - 0xe2, 0x87, 0xea, 0xc0, 0xe2, 0x8a, 0xea, 0xc0, 0xe2, 0x87, 0xea, 0xc0, - 0xe3, 0x8a, 0xea, 0xc0, 0xe3, 0x87, 0xea, 0xc0, 0xe3, 0x8a, 0xea, 0xc0, - 0xe3, 0x87, 0xea, 0xc0, 0xe4, 0x8a, 0xea, 0xc0, 0xe4, 0x87, 0xea, 0xc0, - 0xe4, 0x8a, 0xea, 0xc0, 0xe4, 0x87, 0xea, 0xc0, 0xe5, 0x8a, 0xea, 0xc0, - 0xe5, 0x87, 0xea, 0xc0, 0xe5, 0x8a, 0xea, 0xc0, 0xe5, 0x87, 0xea, 0xc0, - 0xe6, 0x8a, 0xea, 0xc0, 0xe6, 0x87, 0xea, 0xc0, 0xe6, 0x8a, 0xea, 0xc0, - 0xe6, 0x87, 0xea, 0xc0, 0xe7, 0x8a, 0xea, 0xc0, 0xe7, 0x87, 0xea, 0xc0, - 0xe7, 0x8a, 0xea, 0xc0, 0xe7, 0x87, 0xea, 0xc0, 0xe8, 0x8a, 0xea, 0xc0, - 0xe8, 0x87, 0xea, 0xc0, 0xe8, 0x87, 0xea, 0xc0, 0xe8, 0x87, 0xea, 0xc0, - 0xe9, 0x87, 0xea, 0xc0, 0xe9, 0x87, 0xea, 0xc0, 0xe9, 0x87, 0xea, 0xc0, - 0xe9, 0x87, 0xea, 0xc0, 0xea, 0x87, 0xea, 0xc0, 0xe9, 0x87, 0xea, 0xc0, - 0xea, 0x87, 0xea, 0xc0, 0xe9, 0x87, 0xeb, 0xc0, 0xea, 0x87, 0xeb, 0xbf, - 0xea, 0x87, 0xeb, 0xc0, 0xea, 0x87, 0xeb, 0xbf, 0xea, 0x87, 0xec, 0xc0, - 0xea, 0x87, 0xec, 0xbf, 0xea, 0x87, 0xec, 0xc0, 0xea, 0x87, 0xec, 0xbf, - 0xea, 0x87, 0xec, 0xc0, 0xea, 0x87, 0xed, 0xbf, 0xea, 0x87, 0xed, 0xc0, - 0xea, 0x87, 0xed, 0xc5, 0xed, 0x87, 0xed, 0xc5, 0xed, 0x87, 0xee, 0xc5, - 0xed, 0x87, 0xee, 0xc5, 0xed, 0x87, 0xee, 0xc5, 0xed, 0x87, 0xee, 0xc5, - 0xed, 0x87, 0xef, 0xc5, 0xed, 0x87, 0xef, 0xc5, 0xef, 0x87, 0xef, 0xc5, - 0xef, 0x87, 0xef, 0xc5, 0xef, 0x87, 0xf0, 0xc5, 0xf0, 0x87, 0xf0, 0xc5, - 0xf0, 0x87, 0xf0, 0xc5, 0xf0, 0x87, 0xf0, 0xc5, 0xf0, 0x87, 0xf1, 0xc5, - 0xf1, 0x87, 0xf1, 0xc5, 0xf1, 0x87, 0xf1, 0xc5, 0xf1, 0x87, 0xf1, 0xc0, - 0xf5, 0x87, 0xf2, 0xc1, 0xf5, 0x87, 0xf2, 0xc0, 0xf5, 0x87, 0xf2, 0xc1, - 0xf5, 0x87, 0xf2, 0xc0, 0xf5, 0x87, 0xf2, 0xc1, 0xf5, 0x87, 0xf3, 0xc0, - 0xf5, 0x87, 0xf3, 0xc1, 0xf5, 0x87, 0xf3, 0xc0, 0xf5, 0x87, 0xf3, 0xc1, - 0xf5, 0x87, 0xf4, 0xc0, 0xf5, 0x87, 0xf4, 0xc1, 0xf5, 0x87, 0xf4, 0xc0, - 0xf5, 0x87, 0xf4, 0xc1, 0xf5, 0x87, 0xf5, 0xc0, 0xf5, 0x87, 0xf5, 0xc1, - 0xf5, 0x87, 0xf5, 0xc0, 0xf5, 0x87, 0xf5, 0xc0, 0xf5, 0x87, 0xf5, 0xc0, - 0xf5, 0x87, 0xf5, 0xc0, 0xf6, 0x87, 0xf5, 0xc0, 0xf6, 0x87, 0xf5, 0xc0, - 0xf6, 0x87, 0xf5, 0xc0, 0xf6, 0x87, 0xf5, 0xc0, 0xf7, 0x87, 0xf8, 0xc0, - 0xf7, 0x89, 0xf8, 0xc0, 0xf7, 0x87, 0xf8, 0xc0, 0xf7, 0x89, 0xf8, 0xc0, - 0xf8, 0x87, 0xf9, 0xc0, 0xf8, 0x87, 0xf8, 0xc0, 0xf8, 0x87, 0xf9, 0xc0, - 0xf8, 0x87, 0xf8, 0xc0, 0xf8, 0x87, 0xf9, 0xc0, 0xf8, 0x87, 0xf9, 0xc0, - 0xf8, 0x87, 0xf9, 0xc0, 0xf8, 0x87, 0xf9, 0xbf, 0xf8, 0x87, 0xfa, 0xc0, - 0xf8, 0x87, 0xfa, 0xbf, 0xf8, 0x87, 0xfa, 0xc0, 0xf8, 0x87, 0xfa, 0xbf, - 0xf8, 0x87, 0xfa, 0xc0, 0xf8, 0x87, 0xfb, 0xbf, 0xf8, 0x87, 0xfb, 0xc0, - 0xf8, 0x87, 0xfb, 0xbf, 0xf8, 0x87, 0xfb, 0xc0, 0xf8, 0x87, 0xfc, 0xbf, - 0xf8, 0x87, 0xfc, 0xc0, 0xf8, 0x87, 0xfc, 0xbf, 0xf8, 0x87, 0xfc, 0xc0, - 0xf8, 0x87, 0xfc, 0xbf, 0xf8, 0x87, 0xfd, 0xc0, 0xf8, 0x87, 0xfd, 0xbf, - 0xf8, 0x87, 0xfd, 0xc0, 0xf8, 0x87, 0xfd, 0xbf, 0xf8, 0x87, 0xfe, 0xc0, - 0xf8, 0x87, 0xfe, 0xbf, 0xf8, 0x87, 0xfe, 0xbd, 0xf9, 0x87, 0xfe, 0xbf, - 0xf8, 0x87, 0xfe, 0xbd, 0xf9, 0x87, 0xff, 0xbf, 0xf8, 0x87, 0xff, 0xbd, - 0xf9, 0x87, 0x03, 0xc5, 0x90, 0x87, 0x0a, 0xc7, 0x8f, 0x87, 0x0f, 0xc5, - 0x90, 0x87, 0x14, 0xc7, 0x8f, 0x87, 0x17, 0xc5, 0x90, 0x87, 0x1b, 0xc7, - 0x8f, 0x87, 0x1e, 0xc5, 0x90, 0x87, 0x20, 0xc7, 0x8f, 0x87, 0x23, 0xc5, - 0x90, 0x87, 0x25, 0xc7, 0x8f, 0x87, 0x27, 0xc5, 0x90, 0x87, 0x29, 0xc7, - 0x8f, 0x87, 0x2b, 0xc5, 0x90, 0x87, 0x2d, 0xc7, 0x8f, 0x87, 0x2f, 0xc5, - 0x90, 0x87, 0x31, 0xc7, 0x8f, 0x87, 0x32, 0xc5, 0x90, 0x87, 0x34, 0xc7, - 0x8f, 0x87, 0x35, 0xc5, 0x90, 0x87, 0x37, 0xc7, 0x8f, 0x87, 0x38, 0xc5, - 0x90, 0x87, 0x3a, 0xc7, 0x8f, 0x87, 0x3b, 0xc5, 0x90, 0x87, 0x3c, 0xc7, - 0x8f, 0x87, 0x3e, 0xc5, 0x90, 0x87, 0x3f, 0xc7, 0x8f, 0x87, 0x40, 0xc5, - 0x90, 0x87, 0x42, 0xc7, 0x8f, 0x87, 0x43, 0xc5, 0x90, 0x87, 0x44, 0xc7, - 0x8f, 0x87, 0x45, 0xc5, 0x90, 0x87, 0x46, 0xc7, 0x8f, 0x87, 0x47, 0xc5, - 0x90, 0x87, 0x48, 0xc7, 0x8f, 0x87, 0x49, 0xc5, 0x90, 0x87, 0x4a, 0xc7, - 0x8f, 0x87, 0x4b, 0xc5, 0x90, 0x87, 0x4c, 0xc7, 0x8f, 0x87, 0x4d, 0xc5, - 0x90, 0x87, 0x4e, 0xc3, 0x90, 0x87, 0x4f, 0xc5, 0x90, 0x87, 0x50, 0xc3, - 0x90, 0x87, 0x51, 0xc5, 0x90, 0x87, 0x52, 0xc3, 0x90, 0x87, 0x53, 0xc5, - 0x90, 0x87, 0x54, 0xc3, 0x90, 0x87, 0x55, 0xc5, 0x90, 0x87, 0x56, 0xc3, - 0x90, 0x87, 0x57, 0xc5, 0x90, 0x87, 0x58, 0xc3, 0x90, 0x87, 0x58, 0xc5, - 0x90, 0x87, 0x59, 0xc3, 0x90, 0x87, 0x5a, 0xc5, 0x90, 0x87, 0x5b, 0xc3, - 0x90, 0x87, 0x5c, 0xc5, 0x90, 0x87, 0x5d, 0xc3, 0x90, 0x87, 0x5d, 0xc5, - 0x90, 0x87, 0x5e, 0xc3, 0x90, 0x87, 0x5f, 0xc5, 0x90, 0x87, 0x60, 0xc3, - 0x90, 0x87, 0x60, 0xc5, 0x90, 0x87, 0x61, 0xc3, 0x90, 0x87, 0x62, 0xc5, - 0x90, 0x87, 0x63, 0xc3, 0x90, 0x87, 0x63, 0xc5, 0x90, 0x87, 0x64, 0xc3, - 0x90, 0x87, 0x65, 0xc5, 0x90, 0x87, 0x66, 0xc3, 0x90, 0x87, 0x66, 0xc5, - 0x90, 0x87, 0x67, 0xc3, 0x90, 0x87, 0x68, 0xc5, 0x90, 0x87, 0x68, 0xc3, - 0x90, 0x87, 0x69, 0xc5, 0x90, 0x87, 0x6a, 0xc3, 0x90, 0x87, 0x6a, 0xc5, - 0x90, 0x87, 0x6b, 0xc3, 0x90, 0x87, 0x6c, 0xc5, 0x90, 0x87, 0x6c, 0xc3, - 0x90, 0x87, 0x6d, 0xc5, 0x90, 0x87, 0x6e, 0xc3, 0x90, 0x87, 0x6e, 0xc5, - 0x90, 0x87, 0x6f, 0xc3, 0x90, 0x87, 0x70, 0xc5, 0x90, 0x87, 0x70, 0xc3, - 0x90, 0x87, 0x71, 0xc5, 0x90, 0x87, 0x72, 0xc3, 0x90, 0x87, 0x72, 0xc5, - 0x90, 0x87, 0x73, 0xc3, 0x90, 0x87, 0x73, 0xc5, 0x90, 0x87, 0x74, 0xc3, - 0x90, 0x87, 0x75, 0xc5, 0x90, 0x87, 0x75, 0xc3, 0x90, 0x87, 0x76, 0xc5, - 0x90, 0x87, 0x76, 0xc3, 0x90, 0x87, 0x77, 0xc5, 0x90, 0x87, 0x78, 0xc3, - 0x90, 0x87, 0x78, 0xc1, 0x91, 0x87, 0x79, 0xc3, 0x90, 0x87, 0x79, 0xc1, - 0x91, 0x87, 0x7a, 0xc3, 0x90, 0x87, 0x7a, 0xc1, 0x91, 0x87, 0x7b, 0xc3, - 0x90, 0x87, 0x7c, 0xc1, 0x91, 0x87, 0x7c, 0xc3, 0x90, 0x87, 0x7d, 0xc1, - 0x91, 0x87, 0x7d, 0xc3, 0x90, 0x87, 0x7e, 0xc1, 0x91, 0x87, 0x7e, 0xc3, - 0x90, 0x87, 0x7f, 0xc1, 0x91, 0x87, 0x7f, 0xc3, 0x90, 0x87, 0x80, 0xc1, - 0x91, 0x87, 0x81, 0xc3, 0x90, 0x87, 0x81, 0xc1, 0x91, 0x87, 0x82, 0xc3, - 0x90, 0x87, 0x82, 0xc1, 0x91, 0x87, 0x83, 0xc3, 0x90, 0x87, 0x83, 0xc1, - 0x91, 0x87, 0x84, 0xc3, 0x90, 0x87, 0x84, 0xc1, 0x91, 0x87, 0x85, 0xc3, - 0x90, 0x87, 0x85, 0xc1, 0x91, 0x87, 0x86, 0xc3, 0x90, 0x87, 0x86, 0xc1, - 0x91, 0x87, 0x87, 0xc3, 0x90, 0x87, 0x87, 0xc1, 0x91, 0x87, 0x88, 0xc3, - 0x90, 0x87, 0x88, 0xc1, 0x91, 0x87, 0x89, 0xc3, 0x90, 0x87, 0x89, 0xc1, - 0x91, 0x87, 0x8a, 0xc1, 0x91, 0x87, 0x8a, 0xc1, 0x91, 0x87, 0x8b, 0xc1, - 0x91, 0x87, 0x8b, 0xc1, 0x91, 0x87, 0x8c, 0xc1, 0x91, 0x87, 0x8c, 0xc1, - 0x91, 0x87, 0x8d, 0xc1, 0x91, 0x87, 0x8d, 0xc1, 0x91, 0x87, 0x8e, 0xc1, - 0x91, 0x87, 0x8e, 0xc1, 0x91, 0x87, 0x8e, 0xc1, 0x91, 0x87, 0x8f, 0xc1, - 0x91, 0x87, 0x8f, 0xc1, 0x91, 0x87, 0x90, 0xc1, 0x91, 0x87, 0x90, 0xc1, - 0x91, 0x87, 0x91, 0xc1, 0x91, 0x87, 0x90, 0xc1, 0x91, 0x87, 0x91, 0xc1, - 0x92, 0x87, 0x90, 0xc1, 0x92, 0x87, 0x91, 0xc1, 0x93, 0x87, 0x95, 0xc1, - 0x93, 0x87, 0x94, 0xc1, 0x94, 0x87, 0x95, 0xc1, 0x94, 0x87, 0x94, 0xc0, - 0x94, 0x87, 0x95, 0xc1, 0x94, 0x87, 0x95, 0xc0, 0x94, 0x87, 0x96, 0xc1, - 0x94, 0x87, 0x96, 0xc0, 0x94, 0x87, 0x97, 0xc1, 0x94, 0x87, 0x97, 0xc0, - 0x94, 0x87, 0x98, 0xc1, 0x94, 0x87, 0x98, 0xc0, 0x94, 0x87, 0x98, 0xc1, - 0x94, 0x87, 0x99, 0xc0, 0x94, 0x87, 0x99, 0xc1, 0x94, 0x87, 0x9a, 0xc0, - 0x94, 0x87, 0x9a, 0xbc, 0x9a, 0x87, 0x9a, 0xbc, 0x9a, 0x87, 0x9b, 0xbc, - 0x9b, 0x87, 0x9b, 0xbc, 0x9b, 0x87, 0x9c, 0xbc, 0x9c, 0x87, 0x9c, 0xbd, - 0x9f, 0x87, 0x9d, 0xbd, 0x9f, 0x87, 0x9d, 0xbd, 0x9f, 0x87, 0x9d, 0xbd, - 0x9f, 0x87, 0x9e, 0xbd, 0x9f, 0x87, 0x9e, 0xbd, 0x9f, 0x87, 0x9f, 0xbd, - 0x9f, 0x87, 0x9f, 0xbd, 0x9f, 0x87, 0x9f, 0xbd, 0x9f, 0x87, 0xa0, 0xbd, - 0xa0, 0x87, 0xa0, 0xbd, 0xa0, 0x87, 0xa1, 0xbd, 0xa3, 0x87, 0xa1, 0xbd, - 0xa3, 0x87, 0xa1, 0xbd, 0xa3, 0x87, 0xa2, 0xc1, 0xa6, 0x87, 0xa2, 0xc1, - 0xa6, 0x87, 0xa3, 0xc1, 0xa6, 0x87, 0xa3, 0xc1, 0xa6, 0x87, 0xa3, 0xc1, - 0xa6, 0x87, 0xa4, 0xc1, 0xa6, 0x87, 0xa4, 0xc1, 0xa6, 0x87, 0xa5, 0xc1, - 0xa6, 0x87, 0xa5, 0xc1, 0xa6, 0x87, 0xa5, 0xc1, 0xa6, 0x87, 0xa6, 0xc1, - 0xa6, 0x87, 0xa5, 0xc1, 0xa6, 0x87, 0xa6, 0xc1, 0xa6, 0x87, 0xa5, 0xc1, - 0xa7, 0x87, 0xa6, 0xc1, 0xa7, 0x87, 0xa5, 0xc1, 0xa8, 0x87, 0xa6, 0xc1, - 0xa8, 0x87, 0xa5, 0xc1, 0xa8, 0x87, 0xa6, 0xc1, 0xa9, 0x87, 0xa6, 0xc1, - 0xa9, 0x84, 0xa6, 0xc1, 0xaa, 0x87, 0xa6, 0xc1, 0xaa, 0x84, 0xa6, 0xc1, - 0xaa, 0x87, 0xa6, 0xc1, 0xab, 0x84, 0xa6, 0xc1, 0xab, 0x87, 0xa6, 0xc1, - 0xab, 0x84, 0xa6, 0xc1, 0xac, 0x87, 0xa6, 0xc1, 0xac, 0x84, 0xa6, 0xc1, - 0xac, 0x87, 0xa6, 0xc1, 0xad, 0x84, 0xa6, 0xc1, 0xad, 0x87, 0xa6, 0xc1, - 0xae, 0x84, 0xa6, 0xc1, 0xae, 0x87, 0xa9, 0xc1, 0xae, 0x7e, 0xa6, 0xc1, - 0xaf, 0x87, 0xa9, 0xc1, 0xaf, 0x7e, 0xa9, 0xc1, 0xaf, 0x7e, 0xa9, 0xc1, - 0xb0, 0x7e, 0xa9, 0xc1, 0xb0, 0x7e, 0xa9, 0xc1, 0xb0, 0x7e, 0xaa, 0xc1, - 0xb1, 0x7d, 0xa9, 0xc1, 0xb1, 0x7e, 0xaa, 0xc1, 0xb2, 0x7d, 0xa9, 0xc1, - 0xb2, 0x7e, 0xaa, 0xc1, 0xb2, 0x7d, 0xa9, 0xc1, 0xb3, 0x7e, 0xaa, 0xc1, - 0xb3, 0x7d, 0xa9, 0xc1, 0xb3, 0x7e, 0xaa, 0xc1, 0xb4, 0x7d, 0xa9, 0xc1, - 0xb4, 0x7e, 0xaa, 0xc1, 0xb4, 0x7d, 0xa9, 0xc1, 0xb5, 0x7e, 0xaa, 0xc1, - 0xb5, 0x7d, 0xa9, 0xc1, 0xb5, 0x7e, 0xaa, 0xc1, 0xb6, 0x7d, 0xa9, 0xc1, - 0xb6, 0x7e, 0xaa, 0xc1, 0xb6, 0x7d, 0xa9, 0xc1, 0xb7, 0x7e, 0xba, 0xc1, - 0xb7, 0x72, 0xba, 0xc1, 0xb7, 0x72, 0xba, 0xc1, 0xb8, 0x72, 0xba, 0xc1, - 0xb8, 0x72, 0xba, 0xc1, 0xb8, 0x72, 0xba, 0xc1, 0xb9, 0x72, 0xba, 0xc1, - 0xb9, 0x72, 0xbd, 0xc1, 0xb9, 0x73, 0xbe, 0xc1, 0xba, 0x73, 0xbd, 0xc1, - 0xba, 0x73, 0xbe, 0xc1, 0xba, 0x73, 0xbd, 0xc1, 0xbb, 0x73, 0xbe, 0xc1, - 0xbb, 0x73, 0xbd, 0xc1, 0xbb, 0x73, 0xbe, 0xc1, 0xbc, 0x73, 0xbd, 0xc1, - 0xbc, 0x73, 0xbe, 0xc1, 0xbc, 0x73, 0xbd, 0xc1, 0xbd, 0x73, 0xc1, 0xc1, - 0xbd, 0x74, 0xc1, 0xc1, 0xbd, 0x74, 0xc1, 0xc1, 0xbe, 0x74, 0xc1, 0xc1, - 0xbe, 0x74, 0xc1, 0xc1, 0xbe, 0x74, 0xc1, 0xc1, 0xbf, 0x74, 0xc1, 0xc1, - 0xbf, 0x74, 0xc1, 0xc1, 0xbf, 0x74, 0xc1, 0xc1, 0xc0, 0x74, 0xc1, 0xc1, - 0xc0, 0x74, 0xc1, 0xc1, 0xc0, 0x74, 0xc4, 0xc1, 0xc1, 0x75, 0xc5, 0xc1, - 0xc1, 0x75, 0xc4, 0xc1, 0xc1, 0x75, 0xc5, 0xc1, 0xc1, 0x75, 0xc4, 0xc1, - 0xc2, 0x75, 0xc5, 0xc1, 0xc2, 0x75, 0xc4, 0xc1, 0xc2, 0x75, 0xc5, 0xc1, - 0xc3, 0x75, 0xc4, 0xc1, 0xc3, 0x75, 0xc5, 0xc1, 0xc3, 0x75, 0xc4, 0xc1, - 0xc4, 0x75, 0xc8, 0xc1, 0xc4, 0x76, 0xc4, 0xc1, 0xc4, 0x75, 0xc8, 0xc1, - 0xc5, 0x76, 0xc8, 0xc1, 0xc5, 0x76, 0xc8, 0xc1, 0xc5, 0x76, 0xc8, 0xc1, - 0xc6, 0x76, 0xc8, 0xc1, 0xc6, 0x76, 0xc8, 0xc1, 0xc6, 0x76, 0xc8, 0xc1, - 0xc6, 0x76, 0xc8, 0xc1, 0xc7, 0x76, 0xc8, 0xc1, 0xc7, 0x76, 0xc8, 0xc1, - 0xc7, 0x76, 0xc8, 0xc1, 0xc8, 0x76, 0xcb, 0xc1, 0xc8, 0x77, 0xcb, 0xc1, - 0xc8, 0x77, 0xcb, 0xc1, 0xc9, 0x77, 0xcb, 0xc1, 0xc9, 0x77, 0xcb, 0xc1, - 0xc9, 0x77, 0xcb, 0xc1, 0xc9, 0x77, 0xcb, 0xc1, 0xca, 0x77, 0xcb, 0xc1, - 0xca, 0x77, 0xcb, 0xc1, 0xca, 0x77, 0xcb, 0xc1, 0xcb, 0x77, 0xcb, 0xc1, - 0xcb, 0x77, 0xce, 0xc1, 0xcb, 0x78, 0xce, 0xc1, 0xcc, 0x78, 0xce, 0xc1, - 0xcc, 0x78, 0xce, 0xc1, 0xcc, 0x78, 0xce, 0xc1, 0xcc, 0x78, 0xce, 0xc1, - 0xcd, 0x78, 0xce, 0xc1, 0xcd, 0x78, 0xce, 0xc1, 0xcd, 0x78, 0xce, 0xc1, - 0xce, 0x78, 0xce, 0xc1, 0xce, 0x78, 0xce, 0xc1, 0xce, 0x78, 0xce, 0xc1, - 0xce, 0x78, 0xce, 0xc1, 0xcf, 0x78, 0xd4, 0xc1, 0xcf, 0x93, 0xd4, 0xc1, - 0xcf, 0x93, 0xd4, 0xc1, 0xd0, 0x93, 0xd4, 0xc1, 0xd0, 0x93, 0xd4, 0xc1, - 0xd0, 0x93, 0xd4, 0xc1, 0xd0, 0x93, 0xd4, 0xc1, 0xd1, 0x93, 0xd4, 0xc1, - 0xd1, 0x93, 0xd4, 0xc1, 0xd1, 0x93, 0xd4, 0xc1, 0xd2, 0x93, 0xd4, 0xc1, - 0xd2, 0x93, 0xd4, 0xc1, 0xd2, 0x93, 0xd4, 0xc1, 0xd2, 0x93, 0xd4, 0xc1, - 0xd3, 0x93, 0xd4, 0xc1, 0xd3, 0x93, 0xd4, 0xc1, 0xd3, 0x93, 0xd4, 0xc1, - 0xd4, 0x93, 0xd4, 0xc1, 0xd4, 0x93, 0xd4, 0xc1, 0xd4, 0x93, 0xd4, 0xc1, - 0xd4, 0x93, 0xd5, 0xc1, 0xd5, 0x93, 0xd5, 0xc1, 0xd5, 0x93, 0xd5, 0xc1, - 0xd5, 0x93, 0xd6, 0xc1, 0xd6, 0x93, 0xd6, 0xc1, 0xd6, 0x93, 0xd6, 0xc1, - 0xd6, 0x93, 0xd6, 0xc1, 0xd6, 0x93, 0xd6, 0xc1, 0xd7, 0x93, 0xd6, 0xc1, - 0xd7, 0x93, 0xd6, 0xc1, 0xd7, 0x93, 0xd6, 0xc1, 0xd7, 0x93, 0xd6, 0xc1, - 0xd8, 0x93, 0xd6, 0xc1, 0xd8, 0x93, 0xd6, 0xc1, 0xd8, 0x93, 0xd9, 0xc1, - 0xd9, 0x94, 0xd9, 0xc1, 0xd9, 0x94, 0xd9, 0xc1, 0xd9, 0x94, 0xd9, 0xc1, - 0xd9, 0x94, 0xd9, 0xc1, 0xda, 0x94, 0xd9, 0xc1, 0xda, 0x94, 0xd9, 0xc1, - 0xda, 0x94, 0xd9, 0xc1, 0xda, 0x94, 0xd9, 0xc1, 0xdb, 0x94, 0xd9, 0xc1, - 0xdb, 0x94, 0xd9, 0xc1, 0xdb, 0x94, 0xd9, 0xc1, 0xdb, 0x94, 0xd9, 0xc1, - 0xdc, 0x94, 0xdc, 0xc1, 0xdc, 0x95, 0xdc, 0xc1, 0xdc, 0x95, 0xdc, 0xc1, - 0xdd, 0x95, 0xdc, 0xc1, 0xdd, 0x95, 0xdc, 0xc1, 0xdd, 0x95, 0xdc, 0xc1, - 0xdd, 0x95, 0xdc, 0xc1, 0xde, 0x95, 0xdc, 0xc1, 0xde, 0x95, 0xdc, 0xc1, - 0xde, 0x95, 0xdc, 0xc1, 0xde, 0x95, 0xdc, 0xc1, 0xdf, 0x95, 0xdf, 0xc1, - 0xdf, 0x96, 0xdf, 0xc1, 0xdf, 0x96, 0xdf, 0xc1, 0xdf, 0x96, 0xdf, 0xc1, - 0xe0, 0x96, 0xdf, 0xc1, 0xe0, 0x96, 0xdf, 0xc1, 0xe0, 0x96, 0xdf, 0xc1, - 0xe1, 0x96, 0xdf, 0xc1, 0xe1, 0x96, 0xdf, 0xc1, 0xe1, 0x96, 0xdf, 0xc1, - 0xe1, 0x96, 0xdf, 0xc1, 0xe2, 0x96, 0xea, 0xc1, 0xe2, 0x87, 0xea, 0xc1, - 0xe2, 0x8a, 0xea, 0xc1, 0xe2, 0x87, 0xea, 0xc1, 0xe3, 0x8a, 0xea, 0xc1, - 0xe3, 0x87, 0xea, 0xc1, 0xe3, 0x8a, 0xea, 0xc1, 0xe3, 0x87, 0xea, 0xc1, - 0xe4, 0x8a, 0xea, 0xc1, 0xe4, 0x87, 0xea, 0xc1, 0xe4, 0x8a, 0xea, 0xc1, - 0xe4, 0x87, 0xea, 0xc1, 0xe5, 0x8a, 0xea, 0xc1, 0xe5, 0x87, 0xea, 0xc1, - 0xe5, 0x8a, 0xea, 0xc1, 0xe5, 0x87, 0xea, 0xc1, 0xe6, 0x8a, 0xea, 0xc1, - 0xe6, 0x87, 0xea, 0xc1, 0xe6, 0x8a, 0xea, 0xc1, 0xe6, 0x87, 0xea, 0xc1, - 0xe7, 0x8a, 0xea, 0xc1, 0xe7, 0x87, 0xea, 0xc1, 0xe7, 0x8a, 0xea, 0xc1, - 0xe7, 0x87, 0xea, 0xc1, 0xe8, 0x8a, 0xea, 0xc1, 0xe8, 0x87, 0xea, 0xc1, - 0xe8, 0x87, 0xea, 0xc1, 0xe8, 0x87, 0xea, 0xc1, 0xe9, 0x87, 0xea, 0xc1, - 0xe9, 0x87, 0xea, 0xc1, 0xe9, 0x87, 0xea, 0xc1, 0xe9, 0x87, 0xea, 0xc1, - 0xea, 0x87, 0xea, 0xc1, 0xe9, 0x87, 0xea, 0xc1, 0xea, 0x87, 0xea, 0xc1, - 0xe9, 0x87, 0xeb, 0xc1, 0xea, 0x87, 0xeb, 0xbf, 0xea, 0x87, 0xeb, 0xc1, - 0xea, 0x87, 0xeb, 0xbf, 0xea, 0x87, 0xec, 0xc1, 0xea, 0x87, 0xec, 0xbf, - 0xea, 0x87, 0xec, 0xc1, 0xea, 0x87, 0xec, 0xbf, 0xea, 0x87, 0xec, 0xc1, - 0xea, 0x87, 0xed, 0xbf, 0xea, 0x87, 0xed, 0xc4, 0xec, 0x87, 0xed, 0xc5, - 0xed, 0x87, 0xed, 0xc5, 0xed, 0x87, 0xee, 0xc5, 0xee, 0x87, 0xee, 0xc5, - 0xee, 0x87, 0xee, 0xc5, 0xee, 0x87, 0xee, 0xc5, 0xee, 0x87, 0xef, 0xc5, - 0xef, 0x87, 0xef, 0xc5, 0xef, 0x87, 0xef, 0xc5, 0xef, 0x87, 0xef, 0xc5, - 0xef, 0x87, 0xf0, 0xc5, 0xef, 0x87, 0xf0, 0xc5, 0xef, 0x87, 0xf0, 0xc5, - 0xef, 0x87, 0xf0, 0xc5, 0xef, 0x87, 0xf1, 0xc5, 0xef, 0x87, 0xf1, 0xc6, - 0xf1, 0x87, 0xf1, 0xc6, 0xf1, 0x87, 0xf1, 0xc6, 0xf1, 0x87, 0xf2, 0xc1, - 0xf5, 0x87, 0xf2, 0xc1, 0xf5, 0x87, 0xf2, 0xc1, 0xf5, 0x87, 0xf2, 0xc1, - 0xf5, 0x87, 0xf2, 0xc1, 0xf5, 0x87, 0xf3, 0xc1, 0xf5, 0x87, 0xf3, 0xc1, - 0xf5, 0x87, 0xf3, 0xc1, 0xf5, 0x87, 0xf3, 0xc1, 0xf5, 0x87, 0xf4, 0xc1, - 0xf5, 0x87, 0xf4, 0xc1, 0xf5, 0x87, 0xf4, 0xc1, 0xf5, 0x87, 0xf4, 0xc1, - 0xf5, 0x87, 0xf5, 0xc1, 0xf5, 0x87, 0xf5, 0xc1, 0xf5, 0x86, 0xf5, 0xc1, - 0xf5, 0x87, 0xf5, 0xc1, 0xf5, 0x86, 0xf5, 0xc1, 0xf5, 0x87, 0xf5, 0xc1, - 0xf6, 0x86, 0xf5, 0xc1, 0xf6, 0x87, 0xf5, 0xc1, 0xf6, 0x86, 0xf5, 0xc1, - 0xf6, 0x87, 0xf8, 0xc1, 0xf7, 0x87, 0xf8, 0xc1, 0xf7, 0x88, 0xf8, 0xc1, - 0xf7, 0x87, 0xf8, 0xc1, 0xf7, 0x88, 0xf8, 0xc1, 0xf8, 0x87, 0xf8, 0xc1, - 0xf8, 0x88, 0xf8, 0xc1, 0xf8, 0x87, 0xf9, 0xc1, 0xf8, 0x87, 0xf8, 0xc1, - 0xf8, 0x87, 0xf9, 0xc1, 0xf8, 0x87, 0xf9, 0xc1, 0xf8, 0x87, 0xf9, 0xc1, - 0xf8, 0x87, 0xf9, 0xbf, 0xf8, 0x87, 0xfa, 0xc1, 0xf8, 0x87, 0xfa, 0xbf, - 0xf8, 0x87, 0xfa, 0xc1, 0xf8, 0x87, 0xfa, 0xbf, 0xf8, 0x87, 0xfa, 0xc1, - 0xf8, 0x87, 0xfb, 0xbf, 0xf8, 0x87, 0xfb, 0xc1, 0xf8, 0x87, 0xfb, 0xbf, - 0xf8, 0x87, 0xfb, 0xc1, 0xf8, 0x87, 0xfc, 0xbf, 0xf8, 0x87, 0xfc, 0xc1, - 0xf8, 0x87, 0xfc, 0xbf, 0xf8, 0x87, 0xfc, 0xc1, 0xf8, 0x87, 0xfc, 0xbf, - 0xf8, 0x87, 0xfd, 0xc1, 0xf8, 0x87, 0xfd, 0xbf, 0xf8, 0x87, 0xfd, 0xc1, - 0xf8, 0x87, 0xfd, 0xbf, 0xf8, 0x87, 0xfe, 0xc1, 0xf8, 0x87, 0xfe, 0xbf, - 0xf8, 0x87, 0xfe, 0xbd, 0xf9, 0x87, 0xfe, 0xbf, 0xf8, 0x87, 0xfe, 0xbd, - 0xf9, 0x87, 0xff, 0xbf, 0xf8, 0x87, 0xff, 0xbd, 0xf9, 0x87, 0x03, 0xc9, - 0x8f, 0x88, 0x0a, 0xc9, 0x8f, 0x88, 0x0f, 0xc9, 0x8f, 0x88, 0x14, 0xc7, - 0x8f, 0x88, 0x17, 0xc9, 0x8f, 0x88, 0x1b, 0xc7, 0x8f, 0x88, 0x1e, 0xc9, - 0x8f, 0x88, 0x20, 0xc7, 0x8f, 0x88, 0x23, 0xc9, 0x8f, 0x88, 0x25, 0xc7, - 0x8f, 0x88, 0x27, 0xc9, 0x8f, 0x88, 0x29, 0xc7, 0x8f, 0x88, 0x2b, 0xc9, - 0x8f, 0x88, 0x2d, 0xc7, 0x8f, 0x88, 0x2f, 0xc9, 0x8f, 0x88, 0x31, 0xc7, - 0x8f, 0x88, 0x32, 0xc9, 0x8f, 0x88, 0x34, 0xc7, 0x8f, 0x88, 0x35, 0xc9, - 0x8f, 0x88, 0x37, 0xc7, 0x8f, 0x88, 0x38, 0xc9, 0x8f, 0x88, 0x3a, 0xc7, - 0x8f, 0x88, 0x3b, 0xc5, 0x90, 0x88, 0x3c, 0xc7, 0x8f, 0x88, 0x3e, 0xc5, - 0x90, 0x88, 0x3f, 0xc7, 0x8f, 0x88, 0x40, 0xc5, 0x90, 0x88, 0x42, 0xc7, - 0x8f, 0x88, 0x43, 0xc5, 0x90, 0x88, 0x44, 0xc7, 0x8f, 0x88, 0x45, 0xc5, - 0x90, 0x88, 0x46, 0xc7, 0x8f, 0x88, 0x47, 0xc5, 0x90, 0x88, 0x48, 0xc7, - 0x8f, 0x88, 0x49, 0xc5, 0x90, 0x88, 0x4a, 0xc7, 0x8f, 0x88, 0x4b, 0xc5, - 0x90, 0x88, 0x4c, 0xc7, 0x8f, 0x88, 0x4d, 0xc5, 0x90, 0x88, 0x4e, 0xc7, - 0x8f, 0x88, 0x4f, 0xc5, 0x90, 0x88, 0x50, 0xc7, 0x8f, 0x88, 0x51, 0xc5, - 0x90, 0x88, 0x52, 0xc7, 0x8f, 0x88, 0x53, 0xc5, 0x90, 0x88, 0x54, 0xc7, - 0x8f, 0x88, 0x55, 0xc5, 0x90, 0x88, 0x56, 0xc7, 0x8f, 0x88, 0x57, 0xc5, - 0x90, 0x88, 0x58, 0xc7, 0x8f, 0x88, 0x58, 0xc5, 0x90, 0x88, 0x59, 0xc3, - 0x90, 0x88, 0x5a, 0xc5, 0x90, 0x88, 0x5b, 0xc3, 0x90, 0x88, 0x5c, 0xc5, - 0x90, 0x88, 0x5d, 0xc3, 0x90, 0x88, 0x5d, 0xc5, 0x90, 0x88, 0x5e, 0xc3, - 0x90, 0x88, 0x5f, 0xc5, 0x90, 0x88, 0x60, 0xc3, 0x90, 0x88, 0x60, 0xc5, - 0x90, 0x88, 0x61, 0xc3, 0x90, 0x88, 0x62, 0xc5, 0x90, 0x88, 0x63, 0xc3, - 0x90, 0x88, 0x63, 0xc5, 0x90, 0x88, 0x64, 0xc3, 0x90, 0x88, 0x65, 0xc5, - 0x90, 0x88, 0x66, 0xc3, 0x90, 0x88, 0x66, 0xc5, 0x90, 0x88, 0x67, 0xc3, - 0x90, 0x88, 0x68, 0xc5, 0x90, 0x88, 0x68, 0xc3, 0x90, 0x88, 0x69, 0xc5, - 0x90, 0x88, 0x6a, 0xc3, 0x90, 0x88, 0x6a, 0xc5, 0x90, 0x88, 0x6b, 0xc3, - 0x90, 0x88, 0x6c, 0xc5, 0x90, 0x88, 0x6c, 0xc3, 0x90, 0x88, 0x6d, 0xc5, - 0x90, 0x88, 0x6e, 0xc3, 0x90, 0x88, 0x6e, 0xc5, 0x90, 0x88, 0x6f, 0xc3, - 0x90, 0x88, 0x70, 0xc5, 0x90, 0x88, 0x70, 0xc3, 0x90, 0x88, 0x71, 0xc5, - 0x90, 0x88, 0x72, 0xc3, 0x90, 0x88, 0x72, 0xc5, 0x90, 0x88, 0x73, 0xc3, - 0x90, 0x88, 0x73, 0xc5, 0x90, 0x88, 0x74, 0xc3, 0x90, 0x88, 0x75, 0xc5, - 0x90, 0x88, 0x75, 0xc3, 0x90, 0x88, 0x76, 0xc5, 0x90, 0x88, 0x76, 0xc3, - 0x90, 0x88, 0x77, 0xc5, 0x90, 0x88, 0x78, 0xc3, 0x90, 0x88, 0x78, 0xc1, - 0x91, 0x88, 0x79, 0xc3, 0x90, 0x88, 0x79, 0xc1, 0x91, 0x88, 0x7a, 0xc3, - 0x90, 0x88, 0x7a, 0xc1, 0x91, 0x88, 0x7b, 0xc3, 0x90, 0x88, 0x7c, 0xc1, - 0x91, 0x88, 0x7c, 0xc3, 0x90, 0x88, 0x7d, 0xc1, 0x91, 0x88, 0x7d, 0xc3, - 0x90, 0x88, 0x7e, 0xc1, 0x91, 0x88, 0x7e, 0xc3, 0x90, 0x88, 0x7f, 0xc1, - 0x91, 0x88, 0x7f, 0xc3, 0x90, 0x88, 0x80, 0xc1, 0x91, 0x88, 0x81, 0xc3, - 0x90, 0x88, 0x81, 0xc1, 0x91, 0x88, 0x82, 0xc3, 0x90, 0x88, 0x82, 0xc1, - 0x91, 0x88, 0x83, 0xc3, 0x90, 0x88, 0x83, 0xc1, 0x91, 0x88, 0x84, 0xc3, - 0x90, 0x88, 0x84, 0xc1, 0x91, 0x88, 0x85, 0xc3, 0x90, 0x88, 0x85, 0xc1, - 0x91, 0x88, 0x86, 0xc3, 0x90, 0x88, 0x86, 0xc1, 0x91, 0x88, 0x87, 0xc3, - 0x90, 0x88, 0x87, 0xc1, 0x91, 0x88, 0x88, 0xc3, 0x90, 0x88, 0x88, 0xc1, - 0x91, 0x88, 0x89, 0xc3, 0x90, 0x88, 0x89, 0xc1, 0x91, 0x88, 0x8a, 0xc3, - 0x90, 0x88, 0x8a, 0xc1, 0x91, 0x88, 0x8b, 0xc3, 0x90, 0x88, 0x8b, 0xc1, - 0x91, 0x88, 0x8c, 0xc3, 0x90, 0x88, 0x8c, 0xc1, 0x91, 0x88, 0x8d, 0xc3, - 0x90, 0x88, 0x8d, 0xc1, 0x91, 0x88, 0x8e, 0xc1, 0x91, 0x88, 0x8e, 0xc1, - 0x91, 0x88, 0x8e, 0xc1, 0x91, 0x88, 0x8f, 0xc1, 0x91, 0x88, 0x8f, 0xc1, - 0x91, 0x88, 0x90, 0xc1, 0x91, 0x88, 0x90, 0xc1, 0x91, 0x88, 0x91, 0xc1, - 0x91, 0x87, 0x90, 0xc1, 0x91, 0x88, 0x91, 0xc1, 0x92, 0x87, 0x90, 0xc1, - 0x92, 0x88, 0x94, 0xc1, 0x93, 0x88, 0x95, 0xc1, 0x93, 0x88, 0x94, 0xc1, - 0x94, 0x88, 0x95, 0xc1, 0x94, 0x88, 0x94, 0xc1, 0x94, 0x88, 0x95, 0xc1, - 0x94, 0x88, 0x95, 0xc1, 0x94, 0x88, 0x96, 0xc1, 0x94, 0x88, 0x96, 0xc0, - 0x94, 0x88, 0x97, 0xc1, 0x94, 0x88, 0x97, 0xc0, 0x94, 0x88, 0x98, 0xc1, - 0x94, 0x88, 0x98, 0xc0, 0x94, 0x88, 0x98, 0xc1, 0x94, 0x88, 0x99, 0xc0, - 0x94, 0x88, 0x99, 0xc1, 0x94, 0x88, 0x9a, 0xc0, 0x94, 0x88, 0x9a, 0xc1, - 0x94, 0x88, 0x9a, 0xbc, 0x9c, 0x88, 0x9b, 0xbc, 0x9d, 0x88, 0x9b, 0xbc, - 0x9c, 0x88, 0x9c, 0xbc, 0x9d, 0x88, 0x9c, 0xbc, 0x9c, 0x88, 0x9d, 0xbc, - 0x9d, 0x88, 0x9d, 0xbc, 0x9d, 0x88, 0x9d, 0xbc, 0x9d, 0x88, 0x9e, 0xbc, - 0x9e, 0x88, 0x9e, 0xbd, 0xa1, 0x88, 0x9f, 0xbd, 0xa1, 0x88, 0x9f, 0xbd, - 0xa1, 0x88, 0x9f, 0xbd, 0xa1, 0x88, 0xa0, 0xbd, 0xa1, 0x88, 0xa0, 0xbd, - 0xa1, 0x88, 0xa1, 0xbd, 0xa1, 0x88, 0xa1, 0xbd, 0xa1, 0x88, 0xa1, 0xc3, - 0xa5, 0x88, 0xa2, 0xc1, 0xa6, 0x88, 0xa2, 0xc1, 0xa6, 0x88, 0xa3, 0xc1, - 0xa6, 0x88, 0xa3, 0xc1, 0xa6, 0x88, 0xa3, 0xc1, 0xa6, 0x88, 0xa4, 0xc1, - 0xa6, 0x88, 0xa4, 0xc1, 0xa6, 0x88, 0xa5, 0xc1, 0xa6, 0x88, 0xa5, 0xc1, - 0xa6, 0x88, 0xa5, 0xc1, 0xa6, 0x88, 0xa6, 0xc1, 0xa6, 0x87, 0xa5, 0xc1, - 0xa6, 0x88, 0xa6, 0xc1, 0xa6, 0x87, 0xa5, 0xc1, 0xa7, 0x88, 0xa6, 0xc1, - 0xa7, 0x87, 0xa5, 0xc1, 0xa8, 0x88, 0xa6, 0xc1, 0xa8, 0x87, 0xa5, 0xc1, - 0xa8, 0x88, 0xa6, 0xc1, 0xa9, 0x87, 0xa5, 0xc1, 0xa9, 0x88, 0xa6, 0xc1, - 0xaa, 0x87, 0xa5, 0xc1, 0xaa, 0x88, 0xa6, 0xc1, 0xaa, 0x87, 0xa5, 0xc1, - 0xab, 0x88, 0xa6, 0xc1, 0xab, 0x87, 0xa5, 0xc1, 0xab, 0x88, 0xa6, 0xc1, - 0xac, 0x87, 0xa6, 0xc1, 0xac, 0x84, 0xa6, 0xc1, 0xac, 0x87, 0xa6, 0xc1, - 0xad, 0x84, 0xa6, 0xc1, 0xad, 0x87, 0xa6, 0xc1, 0xae, 0x84, 0xa6, 0xc1, - 0xae, 0x87, 0xa9, 0xc1, 0xae, 0x7f, 0xa9, 0xc1, 0xaf, 0x7f, 0xa9, 0xc1, - 0xaf, 0x7f, 0xa9, 0xc1, 0xaf, 0x7f, 0xa9, 0xc1, 0xb0, 0x7f, 0xa9, 0xc1, - 0xb0, 0x7f, 0xa9, 0xc1, 0xb0, 0x7f, 0xaa, 0xc1, 0xb1, 0x7e, 0xa9, 0xc1, - 0xb1, 0x7f, 0xaa, 0xc1, 0xb2, 0x7e, 0xa9, 0xc1, 0xb2, 0x7f, 0xaa, 0xc1, - 0xb2, 0x7e, 0xa9, 0xc1, 0xb3, 0x7f, 0xaa, 0xc1, 0xb3, 0x7e, 0xa9, 0xc1, - 0xb3, 0x7f, 0xaa, 0xc1, 0xb4, 0x7e, 0xa9, 0xc1, 0xb4, 0x7f, 0xaa, 0xc1, - 0xb4, 0x7e, 0xa9, 0xc1, 0xb5, 0x7f, 0xaa, 0xc1, 0xb5, 0x7e, 0xa9, 0xc1, - 0xb5, 0x7f, 0xaa, 0xc1, 0xb6, 0x7e, 0xa9, 0xc1, 0xb6, 0x7f, 0xaa, 0xc1, - 0xb6, 0x7e, 0xa9, 0xc1, 0xb7, 0x7f, 0xaa, 0xc1, 0xb7, 0x7e, 0xbb, 0xc1, - 0xb7, 0x73, 0xbc, 0xc1, 0xb8, 0x73, 0xbb, 0xc1, 0xb8, 0x73, 0xbc, 0xc1, - 0xb8, 0x73, 0xbb, 0xc1, 0xb9, 0x73, 0xbc, 0xc1, 0xb9, 0x73, 0xbb, 0xc1, - 0xb9, 0x73, 0xbc, 0xc1, 0xba, 0x73, 0xbb, 0xc1, 0xba, 0x73, 0xbc, 0xc1, - 0xba, 0x73, 0xbb, 0xc1, 0xbb, 0x73, 0xbf, 0xc1, 0xbb, 0x74, 0xbf, 0xc1, - 0xbb, 0x74, 0xbf, 0xc1, 0xbc, 0x74, 0xbf, 0xc1, 0xbc, 0x74, 0xbf, 0xc1, - 0xbc, 0x74, 0xbf, 0xc1, 0xbd, 0x74, 0xbf, 0xc1, 0xbd, 0x74, 0xbf, 0xc1, - 0xbd, 0x74, 0xbf, 0xc1, 0xbe, 0x74, 0xbf, 0xc1, 0xbe, 0x74, 0xbf, 0xc1, - 0xbe, 0x74, 0xc2, 0xc1, 0xbf, 0x75, 0xc3, 0xc1, 0xbf, 0x75, 0xc2, 0xc1, - 0xbf, 0x75, 0xc3, 0xc1, 0xc0, 0x75, 0xc2, 0xc1, 0xc0, 0x75, 0xc3, 0xc1, - 0xc0, 0x75, 0xc2, 0xc1, 0xc1, 0x75, 0xc3, 0xc1, 0xc1, 0x75, 0xc2, 0xc1, - 0xc1, 0x75, 0xc3, 0xc1, 0xc1, 0x75, 0xc2, 0xc1, 0xc2, 0x75, 0xc3, 0xc1, - 0xc2, 0x75, 0xc6, 0xc1, 0xc2, 0x76, 0xc6, 0xc1, 0xc3, 0x76, 0xc6, 0xc1, - 0xc3, 0x76, 0xc6, 0xc1, 0xc3, 0x76, 0xc6, 0xc1, 0xc4, 0x76, 0xc6, 0xc1, - 0xc4, 0x76, 0xc6, 0xc1, 0xc4, 0x76, 0xc6, 0xc1, 0xc5, 0x76, 0xc6, 0xc1, - 0xc5, 0x76, 0xc6, 0xc1, 0xc5, 0x76, 0xc6, 0xc1, 0xc6, 0x76, 0xc9, 0xc1, - 0xc6, 0x77, 0xc6, 0xc1, 0xc6, 0x76, 0xc9, 0xc1, 0xc6, 0x77, 0xca, 0xc1, - 0xc7, 0x77, 0xc9, 0xc1, 0xc7, 0x77, 0xca, 0xc1, 0xc7, 0x77, 0xc9, 0xc1, - 0xc8, 0x77, 0xca, 0xc1, 0xc8, 0x77, 0xc9, 0xc1, 0xc8, 0x77, 0xca, 0xc1, - 0xc9, 0x77, 0xc9, 0xc1, 0xc9, 0x77, 0xca, 0xc1, 0xc9, 0x77, 0xc9, 0xc1, - 0xc9, 0x77, 0xcd, 0xc1, 0xca, 0x78, 0xcd, 0xc1, 0xca, 0x78, 0xcd, 0xc1, - 0xca, 0x78, 0xcd, 0xc1, 0xcb, 0x78, 0xcd, 0xc1, 0xcb, 0x78, 0xcd, 0xc1, - 0xcb, 0x78, 0xcd, 0xc1, 0xcc, 0x78, 0xcd, 0xc1, 0xcc, 0x78, 0xcd, 0xc1, - 0xcc, 0x78, 0xcd, 0xc1, 0xcc, 0x78, 0xcd, 0xc1, 0xcd, 0x78, 0xcd, 0xc1, - 0xcd, 0x78, 0xcd, 0xc1, 0xcd, 0x78, 0xce, 0xc1, 0xce, 0x78, 0xd4, 0xc1, - 0xce, 0x93, 0xd4, 0xc1, 0xce, 0x93, 0xd4, 0xc1, 0xce, 0x93, 0xd4, 0xc1, - 0xcf, 0x93, 0xd4, 0xc1, 0xcf, 0x93, 0xd4, 0xc1, 0xcf, 0x93, 0xd4, 0xc1, - 0xd0, 0x93, 0xd4, 0xc1, 0xd0, 0x93, 0xd4, 0xc1, 0xd0, 0x93, 0xd4, 0xc1, - 0xd0, 0x93, 0xd4, 0xc1, 0xd1, 0x93, 0xd4, 0xc1, 0xd1, 0x93, 0xd4, 0xc1, - 0xd1, 0x93, 0xd4, 0xc1, 0xd2, 0x93, 0xd4, 0xc1, 0xd2, 0x93, 0xd4, 0xc1, - 0xd2, 0x93, 0xd4, 0xc1, 0xd2, 0x93, 0xd4, 0xc1, 0xd3, 0x93, 0xd4, 0xc1, - 0xd3, 0x93, 0xd4, 0xc1, 0xd3, 0x93, 0xd4, 0xc1, 0xd4, 0x93, 0xd4, 0xc1, - 0xd4, 0x93, 0xd4, 0xc1, 0xd4, 0x93, 0xd4, 0xc1, 0xd4, 0x93, 0xd5, 0xc1, - 0xd5, 0x93, 0xd4, 0xc1, 0xd5, 0x93, 0xd5, 0xc1, 0xd5, 0x93, 0xd4, 0xc1, - 0xd6, 0x93, 0xd5, 0xc1, 0xd6, 0x93, 0xd4, 0xc1, 0xd6, 0x93, 0xd5, 0xc1, - 0xd6, 0x93, 0xd4, 0xc1, 0xd7, 0x93, 0xd5, 0xc1, 0xd7, 0x93, 0xd7, 0xc1, - 0xd7, 0x94, 0xd7, 0xc1, 0xd7, 0x94, 0xd8, 0xc1, 0xd8, 0x94, 0xd7, 0xc1, - 0xd8, 0x94, 0xd8, 0xc1, 0xd8, 0x94, 0xd7, 0xc1, 0xd9, 0x94, 0xd8, 0xc1, - 0xd9, 0x94, 0xd7, 0xc1, 0xd9, 0x94, 0xd8, 0xc1, 0xd9, 0x94, 0xd7, 0xc1, - 0xda, 0x94, 0xd8, 0xc1, 0xda, 0x94, 0xda, 0xc1, 0xda, 0x95, 0xda, 0xc1, - 0xda, 0x95, 0xdb, 0xc1, 0xdb, 0x95, 0xda, 0xc1, 0xdb, 0x95, 0xdb, 0xc1, - 0xdb, 0x95, 0xda, 0xc1, 0xdb, 0x95, 0xdb, 0xc1, 0xdc, 0x95, 0xda, 0xc1, - 0xdc, 0x95, 0xdb, 0xc1, 0xdc, 0x95, 0xda, 0xc1, 0xdd, 0x95, 0xdb, 0xc1, - 0xdd, 0x95, 0xda, 0xc1, 0xdd, 0x95, 0xdb, 0xc1, 0xdd, 0x95, 0xde, 0xc1, - 0xde, 0x96, 0xdd, 0xc1, 0xde, 0x96, 0xde, 0xc1, 0xde, 0x96, 0xdd, 0xc1, - 0xde, 0x96, 0xde, 0xc1, 0xdf, 0x96, 0xdd, 0xc1, 0xdf, 0x96, 0xde, 0xc1, - 0xdf, 0x96, 0xdd, 0xc1, 0xdf, 0x96, 0xde, 0xc1, 0xe0, 0x96, 0xdd, 0xc1, - 0xe0, 0x96, 0xde, 0xc1, 0xe0, 0x96, 0xe1, 0xc1, 0xe1, 0x97, 0xe0, 0xc1, - 0xe1, 0x97, 0xe1, 0xc1, 0xe1, 0x97, 0xe0, 0xc1, 0xe1, 0x97, 0xe1, 0xc1, - 0xe2, 0x97, 0xe0, 0xc1, 0xe2, 0x97, 0xea, 0xc1, 0xe2, 0x8a, 0xea, 0xc1, - 0xe2, 0x88, 0xea, 0xc1, 0xe3, 0x8a, 0xea, 0xc1, 0xe3, 0x88, 0xea, 0xc1, - 0xe3, 0x8a, 0xea, 0xc1, 0xe3, 0x88, 0xea, 0xc1, 0xe4, 0x8a, 0xea, 0xc1, - 0xe4, 0x88, 0xea, 0xc1, 0xe4, 0x8a, 0xea, 0xc1, 0xe4, 0x88, 0xea, 0xc1, - 0xe5, 0x8a, 0xea, 0xc1, 0xe5, 0x88, 0xea, 0xc1, 0xe5, 0x8a, 0xea, 0xc1, - 0xe5, 0x88, 0xea, 0xc1, 0xe6, 0x8a, 0xea, 0xc1, 0xe6, 0x88, 0xea, 0xc1, - 0xe6, 0x8a, 0xea, 0xc1, 0xe6, 0x88, 0xea, 0xc1, 0xe7, 0x8a, 0xea, 0xc1, - 0xe7, 0x88, 0xea, 0xc1, 0xe7, 0x8a, 0xea, 0xc1, 0xe7, 0x88, 0xea, 0xc1, - 0xe8, 0x8a, 0xea, 0xc1, 0xe8, 0x88, 0xea, 0xc1, 0xe8, 0x8a, 0xea, 0xc1, - 0xe8, 0x88, 0xea, 0xc1, 0xe9, 0x8a, 0xea, 0xc1, 0xe9, 0x88, 0xea, 0xc1, - 0xe9, 0x88, 0xea, 0xc1, 0xe9, 0x88, 0xea, 0xc1, 0xea, 0x88, 0xea, 0xc1, - 0xe9, 0x88, 0xea, 0xc1, 0xea, 0x88, 0xea, 0xc1, 0xe9, 0x88, 0xeb, 0xc1, - 0xea, 0x88, 0xeb, 0xc1, 0xe9, 0x88, 0xeb, 0xc1, 0xea, 0x88, 0xeb, 0xc1, - 0xe9, 0x88, 0xec, 0xc1, 0xea, 0x88, 0xec, 0xbf, 0xea, 0x88, 0xec, 0xc1, - 0xea, 0x88, 0xec, 0xbf, 0xea, 0x88, 0xec, 0xc5, 0xec, 0x88, 0xed, 0xc5, - 0xed, 0x88, 0xed, 0xc5, 0xed, 0x88, 0xed, 0xc5, 0xed, 0x88, 0xed, 0xc5, - 0xed, 0x88, 0xee, 0xc5, 0xed, 0x88, 0xee, 0xc5, 0xed, 0x88, 0xee, 0xc5, - 0xed, 0x88, 0xee, 0xc5, 0xed, 0x88, 0xef, 0xc5, 0xed, 0x88, 0xef, 0xc5, - 0xef, 0x88, 0xef, 0xc5, 0xef, 0x88, 0xef, 0xc5, 0xef, 0x88, 0xf0, 0xc5, - 0xf0, 0x88, 0xf0, 0xc5, 0xf0, 0x88, 0xf0, 0xc5, 0xf0, 0x88, 0xf0, 0xc5, - 0xf0, 0x88, 0xf1, 0xc5, 0xf1, 0x88, 0xf1, 0xc5, 0xf1, 0x88, 0xf1, 0xc5, - 0xf1, 0x88, 0xf1, 0xc5, 0xf1, 0x88, 0xf2, 0xc1, 0xf5, 0x88, 0xf2, 0xc1, - 0xf5, 0x88, 0xf2, 0xc1, 0xf5, 0x88, 0xf2, 0xc1, 0xf5, 0x88, 0xf2, 0xc1, - 0xf5, 0x88, 0xf3, 0xc1, 0xf5, 0x88, 0xf3, 0xc1, 0xf5, 0x88, 0xf3, 0xc1, - 0xf5, 0x88, 0xf3, 0xc1, 0xf5, 0x88, 0xf4, 0xc1, 0xf5, 0x88, 0xf4, 0xc1, - 0xf5, 0x88, 0xf4, 0xc1, 0xf5, 0x88, 0xf4, 0xc1, 0xf5, 0x88, 0xf5, 0xc1, - 0xf5, 0x88, 0xf5, 0xc1, 0xf5, 0x87, 0xf5, 0xc1, 0xf5, 0x88, 0xf5, 0xc1, - 0xf5, 0x87, 0xf5, 0xc1, 0xf5, 0x88, 0xf5, 0xc1, 0xf6, 0x87, 0xf5, 0xc1, - 0xf6, 0x88, 0xf5, 0xc1, 0xf6, 0x87, 0xf5, 0xc1, 0xf6, 0x88, 0xf8, 0xc1, - 0xf7, 0x88, 0xf8, 0xc1, 0xf7, 0x89, 0xf8, 0xc1, 0xf7, 0x88, 0xf8, 0xc1, - 0xf7, 0x89, 0xf8, 0xc1, 0xf8, 0x88, 0xf8, 0xc1, 0xf8, 0x89, 0xf8, 0xc1, - 0xf8, 0x88, 0xf9, 0xc1, 0xf8, 0x88, 0xf8, 0xc1, 0xf8, 0x88, 0xf9, 0xc1, - 0xf8, 0x88, 0xf9, 0xc1, 0xf8, 0x88, 0xf9, 0xc1, 0xf8, 0x88, 0xf9, 0xc1, - 0xf8, 0x88, 0xfa, 0xc1, 0xf8, 0x88, 0xfa, 0xc1, 0xf8, 0x88, 0xfa, 0xc1, - 0xf8, 0x88, 0xfa, 0xbf, 0xf8, 0x88, 0xfa, 0xc1, 0xf8, 0x88, 0xfb, 0xbf, - 0xf8, 0x88, 0xfb, 0xc1, 0xf8, 0x88, 0xfb, 0xbf, 0xf8, 0x88, 0xfb, 0xc1, - 0xf8, 0x88, 0xfc, 0xbf, 0xf8, 0x88, 0xfc, 0xc1, 0xf8, 0x88, 0xfc, 0xbf, - 0xf8, 0x88, 0xfc, 0xc1, 0xf8, 0x88, 0xfc, 0xbf, 0xf8, 0x88, 0xfd, 0xc1, - 0xf8, 0x88, 0xfd, 0xbf, 0xf8, 0x88, 0xfd, 0xc1, 0xf8, 0x88, 0xfd, 0xbf, - 0xf8, 0x88, 0xfe, 0xc1, 0xf8, 0x88, 0xfe, 0xbf, 0xf8, 0x88, 0xfe, 0xc1, - 0xf8, 0x88, 0xfe, 0xbf, 0xf8, 0x88, 0xfe, 0xc1, 0xf8, 0x88, 0xff, 0xbf, - 0xf8, 0x88, 0xff, 0xc1, 0xf8, 0x88, 0x03, 0xc9, 0x8f, 0x88, 0x0a, 0xc9, - 0x8f, 0x88, 0x0f, 0xc9, 0x8f, 0x88, 0x14, 0xc7, 0x8f, 0x88, 0x17, 0xc9, - 0x8f, 0x88, 0x1b, 0xc7, 0x8f, 0x88, 0x1e, 0xc9, 0x8f, 0x88, 0x20, 0xc7, - 0x8f, 0x88, 0x23, 0xc9, 0x8f, 0x88, 0x25, 0xc7, 0x8f, 0x88, 0x27, 0xc5, - 0x90, 0x88, 0x29, 0xc7, 0x8f, 0x88, 0x2b, 0xc5, 0x90, 0x88, 0x2d, 0xc7, - 0x8f, 0x88, 0x2f, 0xc5, 0x90, 0x88, 0x31, 0xc7, 0x8f, 0x88, 0x32, 0xc5, - 0x90, 0x88, 0x34, 0xc7, 0x8f, 0x88, 0x35, 0xc5, 0x90, 0x88, 0x37, 0xc7, - 0x8f, 0x88, 0x38, 0xc5, 0x90, 0x88, 0x3a, 0xc7, 0x8f, 0x88, 0x3b, 0xc5, - 0x90, 0x88, 0x3c, 0xc7, 0x8f, 0x88, 0x3e, 0xc5, 0x90, 0x88, 0x3f, 0xc7, - 0x8f, 0x88, 0x40, 0xc5, 0x90, 0x88, 0x42, 0xc7, 0x8f, 0x88, 0x43, 0xc5, - 0x90, 0x88, 0x44, 0xc7, 0x8f, 0x88, 0x45, 0xc5, 0x90, 0x88, 0x46, 0xc7, - 0x8f, 0x88, 0x47, 0xc5, 0x90, 0x88, 0x48, 0xc7, 0x8f, 0x88, 0x49, 0xc5, - 0x90, 0x88, 0x4a, 0xc7, 0x8f, 0x88, 0x4b, 0xc5, 0x90, 0x88, 0x4c, 0xc7, - 0x8f, 0x88, 0x4d, 0xc5, 0x90, 0x88, 0x4e, 0xc7, 0x8f, 0x88, 0x4f, 0xc5, - 0x90, 0x88, 0x50, 0xc7, 0x8f, 0x88, 0x51, 0xc5, 0x90, 0x88, 0x52, 0xc7, - 0x8f, 0x88, 0x53, 0xc5, 0x90, 0x88, 0x54, 0xc7, 0x8f, 0x88, 0x55, 0xc5, - 0x90, 0x88, 0x56, 0xc7, 0x8f, 0x88, 0x57, 0xc5, 0x90, 0x88, 0x58, 0xc7, - 0x8f, 0x88, 0x58, 0xc5, 0x90, 0x88, 0x59, 0xc3, 0x90, 0x88, 0x5a, 0xc5, - 0x90, 0x88, 0x5b, 0xc3, 0x90, 0x88, 0x5c, 0xc5, 0x90, 0x88, 0x5d, 0xc3, - 0x90, 0x88, 0x5d, 0xc5, 0x90, 0x88, 0x5e, 0xc3, 0x90, 0x88, 0x5f, 0xc5, - 0x90, 0x88, 0x60, 0xc3, 0x90, 0x88, 0x60, 0xc5, 0x90, 0x88, 0x61, 0xc3, - 0x90, 0x88, 0x62, 0xc5, 0x90, 0x88, 0x63, 0xc3, 0x90, 0x88, 0x63, 0xc5, - 0x90, 0x88, 0x64, 0xc3, 0x90, 0x88, 0x65, 0xc5, 0x90, 0x88, 0x66, 0xc3, - 0x90, 0x88, 0x66, 0xc5, 0x90, 0x88, 0x67, 0xc3, 0x90, 0x88, 0x68, 0xc5, - 0x90, 0x88, 0x68, 0xc3, 0x90, 0x88, 0x69, 0xc5, 0x90, 0x88, 0x6a, 0xc3, - 0x90, 0x88, 0x6a, 0xc5, 0x90, 0x88, 0x6b, 0xc3, 0x90, 0x88, 0x6c, 0xc5, - 0x90, 0x88, 0x6c, 0xc3, 0x90, 0x88, 0x6d, 0xc5, 0x90, 0x88, 0x6e, 0xc3, - 0x90, 0x88, 0x6e, 0xc5, 0x90, 0x88, 0x6f, 0xc3, 0x90, 0x88, 0x70, 0xc5, - 0x90, 0x88, 0x70, 0xc3, 0x90, 0x88, 0x71, 0xc5, 0x90, 0x88, 0x72, 0xc3, - 0x90, 0x88, 0x72, 0xc5, 0x90, 0x88, 0x73, 0xc3, 0x90, 0x88, 0x73, 0xc5, - 0x90, 0x88, 0x74, 0xc3, 0x90, 0x88, 0x75, 0xc5, 0x90, 0x88, 0x75, 0xc3, - 0x90, 0x88, 0x76, 0xc5, 0x90, 0x88, 0x76, 0xc3, 0x90, 0x88, 0x77, 0xc5, - 0x90, 0x88, 0x78, 0xc3, 0x90, 0x88, 0x78, 0xc5, 0x90, 0x88, 0x79, 0xc3, - 0x90, 0x88, 0x79, 0xc5, 0x90, 0x88, 0x7a, 0xc3, 0x90, 0x88, 0x7a, 0xc5, - 0x90, 0x88, 0x7b, 0xc3, 0x90, 0x88, 0x7c, 0xc5, 0x90, 0x88, 0x7c, 0xc3, - 0x90, 0x88, 0x7d, 0xc5, 0x90, 0x88, 0x7d, 0xc3, 0x90, 0x88, 0x7e, 0xc5, - 0x90, 0x88, 0x7e, 0xc3, 0x90, 0x88, 0x7f, 0xc1, 0x91, 0x88, 0x7f, 0xc3, - 0x90, 0x88, 0x80, 0xc1, 0x91, 0x88, 0x81, 0xc3, 0x90, 0x88, 0x81, 0xc1, - 0x91, 0x88, 0x82, 0xc3, 0x90, 0x88, 0x82, 0xc1, 0x91, 0x88, 0x83, 0xc3, - 0x90, 0x88, 0x83, 0xc1, 0x91, 0x88, 0x84, 0xc3, 0x90, 0x88, 0x84, 0xc1, - 0x91, 0x88, 0x85, 0xc3, 0x90, 0x88, 0x85, 0xc1, 0x91, 0x88, 0x86, 0xc3, - 0x90, 0x88, 0x86, 0xc1, 0x91, 0x88, 0x87, 0xc3, 0x90, 0x88, 0x87, 0xc1, - 0x91, 0x88, 0x88, 0xc3, 0x90, 0x88, 0x88, 0xc1, 0x91, 0x88, 0x89, 0xc3, - 0x90, 0x88, 0x89, 0xc1, 0x91, 0x88, 0x8a, 0xc3, 0x90, 0x88, 0x8a, 0xc1, - 0x91, 0x88, 0x8b, 0xc3, 0x90, 0x88, 0x8b, 0xc1, 0x91, 0x88, 0x8c, 0xc3, - 0x90, 0x88, 0x8c, 0xc1, 0x91, 0x88, 0x8d, 0xc3, 0x90, 0x88, 0x8d, 0xc1, - 0x91, 0x88, 0x8e, 0xc1, 0x91, 0x88, 0x8e, 0xc1, 0x91, 0x88, 0x8e, 0xc1, - 0x91, 0x88, 0x8f, 0xc1, 0x91, 0x88, 0x8f, 0xc1, 0x91, 0x88, 0x90, 0xc1, - 0x91, 0x88, 0x90, 0xc1, 0x91, 0x88, 0x91, 0xc1, 0x91, 0x87, 0x90, 0xc1, - 0x91, 0x88, 0x91, 0xc1, 0x92, 0x87, 0x90, 0xc1, 0x92, 0x88, 0x94, 0xc1, - 0x93, 0x88, 0x94, 0xc1, 0x93, 0x89, 0x94, 0xc1, 0x94, 0x88, 0x95, 0xc1, - 0x94, 0x88, 0x94, 0xc1, 0x94, 0x88, 0x95, 0xc1, 0x94, 0x88, 0x95, 0xc1, - 0x94, 0x88, 0x96, 0xc1, 0x94, 0x88, 0x96, 0xc0, 0x94, 0x88, 0x97, 0xc1, - 0x94, 0x88, 0x97, 0xc0, 0x94, 0x88, 0x98, 0xc1, 0x94, 0x88, 0x98, 0xc0, - 0x94, 0x88, 0x98, 0xc1, 0x94, 0x88, 0x99, 0xc0, 0x94, 0x88, 0x99, 0xc1, - 0x94, 0x88, 0x9a, 0xc0, 0x94, 0x88, 0x9a, 0xc1, 0x94, 0x88, 0x9a, 0xc0, - 0x94, 0x88, 0x9b, 0xbc, 0x9b, 0x88, 0x9b, 0xbc, 0x9b, 0x88, 0x9c, 0xbc, - 0x9c, 0x88, 0x9c, 0xbd, 0x9f, 0x88, 0x9d, 0xbd, 0x9f, 0x88, 0x9d, 0xbd, - 0x9f, 0x88, 0x9d, 0xbd, 0x9f, 0x88, 0x9e, 0xbd, 0x9f, 0x88, 0x9e, 0xbd, - 0x9f, 0x88, 0x9f, 0xbd, 0x9f, 0x88, 0x9f, 0xbd, 0x9f, 0x88, 0x9f, 0xbd, - 0x9f, 0x88, 0xa0, 0xbd, 0xa0, 0x88, 0xa0, 0xbd, 0xa0, 0x88, 0xa1, 0xc2, - 0xa5, 0x88, 0xa1, 0xc1, 0xa6, 0x88, 0xa1, 0xc2, 0xa5, 0x88, 0xa2, 0xc1, - 0xa6, 0x88, 0xa2, 0xc2, 0xa5, 0x88, 0xa3, 0xc1, 0xa6, 0x88, 0xa3, 0xc2, - 0xa5, 0x88, 0xa3, 0xc1, 0xa6, 0x88, 0xa4, 0xc2, 0xa5, 0x88, 0xa4, 0xc1, - 0xa6, 0x88, 0xa5, 0xc1, 0xa6, 0x88, 0xa5, 0xc1, 0xa6, 0x88, 0xa5, 0xc1, - 0xa6, 0x88, 0xa6, 0xc1, 0xa6, 0x87, 0xa5, 0xc1, 0xa6, 0x88, 0xa6, 0xc1, - 0xa6, 0x87, 0xa5, 0xc1, 0xa7, 0x88, 0xa6, 0xc1, 0xa7, 0x87, 0xa5, 0xc1, - 0xa8, 0x88, 0xa6, 0xc1, 0xa8, 0x87, 0xa5, 0xc1, 0xa8, 0x88, 0xa6, 0xc1, - 0xa9, 0x87, 0xa5, 0xc1, 0xa9, 0x88, 0xa6, 0xc1, 0xaa, 0x87, 0xa5, 0xc1, - 0xaa, 0x88, 0xa6, 0xc1, 0xaa, 0x87, 0xa5, 0xc1, 0xab, 0x88, 0xa6, 0xc1, - 0xab, 0x87, 0xa5, 0xc1, 0xab, 0x88, 0xa6, 0xc1, 0xac, 0x87, 0xa6, 0xc1, - 0xac, 0x84, 0xa6, 0xc1, 0xac, 0x87, 0xa6, 0xc1, 0xad, 0x84, 0xa6, 0xc1, - 0xad, 0x87, 0xa6, 0xc1, 0xae, 0x84, 0xa6, 0xc1, 0xae, 0x87, 0xa6, 0xc1, - 0xae, 0x84, 0xa6, 0xc1, 0xaf, 0x87, 0xa6, 0xc1, 0xaf, 0x84, 0xa6, 0xc1, - 0xaf, 0x87, 0xa9, 0xc1, 0xb0, 0x7e, 0xa6, 0xc1, 0xb0, 0x87, 0xa9, 0xc1, - 0xb0, 0x7e, 0xaa, 0xc1, 0xb1, 0x7d, 0xa9, 0xc1, 0xb1, 0x7e, 0xaa, 0xc1, - 0xb2, 0x7d, 0xa9, 0xc1, 0xb2, 0x7e, 0xaa, 0xc1, 0xb2, 0x7d, 0xa9, 0xc1, - 0xb3, 0x7e, 0xaa, 0xc1, 0xb3, 0x7d, 0xa9, 0xc1, 0xb3, 0x7e, 0xaa, 0xc1, - 0xb4, 0x7d, 0xa9, 0xc1, 0xb4, 0x7e, 0xaa, 0xc1, 0xb4, 0x7d, 0xa9, 0xc1, - 0xb5, 0x7e, 0xaa, 0xc1, 0xb5, 0x7d, 0xa9, 0xc1, 0xb5, 0x7e, 0xaa, 0xc1, - 0xb6, 0x7d, 0xa9, 0xc1, 0xb6, 0x7e, 0xaa, 0xc1, 0xb6, 0x7d, 0xa9, 0xc1, - 0xb7, 0x7e, 0xaa, 0xc1, 0xb7, 0x7d, 0xba, 0xc1, 0xb7, 0x72, 0xba, 0xc1, - 0xb8, 0x72, 0xba, 0xc1, 0xb8, 0x72, 0xba, 0xc1, 0xb8, 0x72, 0xba, 0xc1, - 0xb9, 0x72, 0xba, 0xc1, 0xb9, 0x72, 0xbd, 0xc1, 0xb9, 0x73, 0xbe, 0xc1, - 0xba, 0x73, 0xbd, 0xc1, 0xba, 0x73, 0xbe, 0xc1, 0xba, 0x73, 0xbd, 0xc1, - 0xbb, 0x73, 0xbe, 0xc1, 0xbb, 0x73, 0xbd, 0xc1, 0xbb, 0x73, 0xbe, 0xc1, - 0xbc, 0x73, 0xbd, 0xc1, 0xbc, 0x73, 0xbe, 0xc1, 0xbc, 0x73, 0xbd, 0xc1, - 0xbd, 0x73, 0xc1, 0xc1, 0xbd, 0x74, 0xc1, 0xc1, 0xbd, 0x74, 0xc1, 0xc1, - 0xbe, 0x74, 0xc1, 0xc1, 0xbe, 0x74, 0xc1, 0xc1, 0xbe, 0x74, 0xc1, 0xc1, - 0xbf, 0x74, 0xc1, 0xc1, 0xbf, 0x74, 0xc1, 0xc1, 0xbf, 0x74, 0xc1, 0xc1, - 0xc0, 0x74, 0xc1, 0xc1, 0xc0, 0x74, 0xc1, 0xc1, 0xc0, 0x74, 0xc4, 0xc1, - 0xc1, 0x75, 0xc5, 0xc1, 0xc1, 0x75, 0xc4, 0xc1, 0xc1, 0x75, 0xc5, 0xc1, - 0xc1, 0x75, 0xc4, 0xc1, 0xc2, 0x75, 0xc5, 0xc1, 0xc2, 0x75, 0xc4, 0xc1, - 0xc2, 0x75, 0xc5, 0xc1, 0xc3, 0x75, 0xc4, 0xc1, 0xc3, 0x75, 0xc5, 0xc1, - 0xc3, 0x75, 0xc4, 0xc1, 0xc4, 0x75, 0xc8, 0xc1, 0xc4, 0x76, 0xc8, 0xc1, - 0xc4, 0x76, 0xc8, 0xc1, 0xc5, 0x76, 0xc8, 0xc1, 0xc5, 0x76, 0xc8, 0xc1, - 0xc5, 0x76, 0xc8, 0xc1, 0xc6, 0x76, 0xc8, 0xc1, 0xc6, 0x76, 0xc8, 0xc1, - 0xc6, 0x76, 0xc8, 0xc1, 0xc6, 0x76, 0xc8, 0xc1, 0xc7, 0x76, 0xc8, 0xc1, - 0xc7, 0x76, 0xcb, 0xc1, 0xc7, 0x77, 0xc8, 0xc1, 0xc8, 0x76, 0xcb, 0xc1, - 0xc8, 0x77, 0xcb, 0xc1, 0xc8, 0x77, 0xcb, 0xc1, 0xc9, 0x77, 0xcb, 0xc1, - 0xc9, 0x77, 0xcb, 0xc1, 0xc9, 0x77, 0xcb, 0xc1, 0xc9, 0x77, 0xcb, 0xc1, - 0xca, 0x77, 0xcb, 0xc1, 0xca, 0x77, 0xcb, 0xc1, 0xca, 0x77, 0xcb, 0xc1, - 0xcb, 0x77, 0xcb, 0xc1, 0xcb, 0x77, 0xce, 0xc1, 0xcb, 0x78, 0xce, 0xc1, - 0xcc, 0x78, 0xce, 0xc1, 0xcc, 0x78, 0xce, 0xc1, 0xcc, 0x78, 0xce, 0xc1, - 0xcc, 0x78, 0xce, 0xc1, 0xcd, 0x78, 0xce, 0xc1, 0xcd, 0x78, 0xce, 0xc1, - 0xcd, 0x78, 0xce, 0xc1, 0xce, 0x78, 0xd4, 0xc1, 0xce, 0x93, 0xd4, 0xc1, - 0xce, 0x93, 0xd4, 0xc1, 0xce, 0x93, 0xd4, 0xc1, 0xcf, 0x93, 0xd4, 0xc1, - 0xcf, 0x93, 0xd4, 0xc1, 0xcf, 0x93, 0xd4, 0xc1, 0xd0, 0x93, 0xd4, 0xc1, - 0xd0, 0x93, 0xd4, 0xc1, 0xd0, 0x93, 0xd4, 0xc1, 0xd0, 0x93, 0xd4, 0xc1, - 0xd1, 0x93, 0xd4, 0xc1, 0xd1, 0x93, 0xd4, 0xc1, 0xd1, 0x93, 0xd4, 0xc1, - 0xd2, 0x93, 0xd4, 0xc1, 0xd2, 0x93, 0xd4, 0xc1, 0xd2, 0x93, 0xd4, 0xc1, - 0xd2, 0x93, 0xd4, 0xc1, 0xd3, 0x93, 0xd4, 0xc1, 0xd3, 0x93, 0xd4, 0xc1, - 0xd3, 0x93, 0xd4, 0xc1, 0xd4, 0x93, 0xd4, 0xc1, 0xd4, 0x93, 0xd4, 0xc1, - 0xd4, 0x93, 0xd4, 0xc1, 0xd4, 0x93, 0xd5, 0xc1, 0xd5, 0x93, 0xd5, 0xc1, - 0xd5, 0x93, 0xd5, 0xc1, 0xd5, 0x93, 0xd6, 0xc1, 0xd6, 0x93, 0xd6, 0xc1, - 0xd6, 0x93, 0xd6, 0xc1, 0xd6, 0x93, 0xd6, 0xc1, 0xd6, 0x93, 0xd6, 0xc1, - 0xd7, 0x93, 0xd6, 0xc1, 0xd7, 0x93, 0xd6, 0xc1, 0xd7, 0x93, 0xd6, 0xc1, - 0xd7, 0x93, 0xd6, 0xc1, 0xd8, 0x93, 0xd6, 0xc1, 0xd8, 0x93, 0xd6, 0xc1, - 0xd8, 0x93, 0xd9, 0xc1, 0xd9, 0x94, 0xd9, 0xc1, 0xd9, 0x94, 0xd9, 0xc1, - 0xd9, 0x94, 0xd9, 0xc1, 0xd9, 0x94, 0xd9, 0xc1, 0xda, 0x94, 0xd9, 0xc1, - 0xda, 0x94, 0xd9, 0xc1, 0xda, 0x94, 0xd9, 0xc1, 0xda, 0x94, 0xd9, 0xc1, - 0xdb, 0x94, 0xd9, 0xc1, 0xdb, 0x94, 0xd9, 0xc1, 0xdb, 0x94, 0xdb, 0xc1, - 0xdb, 0x95, 0xdc, 0xc1, 0xdc, 0x95, 0xdc, 0xc1, 0xdc, 0x95, 0xdc, 0xc1, - 0xdc, 0x95, 0xdc, 0xc1, 0xdd, 0x95, 0xdc, 0xc1, 0xdd, 0x95, 0xdc, 0xc1, - 0xdd, 0x95, 0xdc, 0xc1, 0xdd, 0x95, 0xdc, 0xc1, 0xde, 0x95, 0xdc, 0xc1, - 0xde, 0x95, 0xdc, 0xc1, 0xde, 0x95, 0xdc, 0xc1, 0xde, 0x95, 0xdc, 0xc1, - 0xdf, 0x95, 0xdf, 0xc1, 0xdf, 0x96, 0xdf, 0xc1, 0xdf, 0x96, 0xdf, 0xc1, - 0xdf, 0x96, 0xdf, 0xc1, 0xe0, 0x96, 0xdf, 0xc1, 0xe0, 0x96, 0xdf, 0xc1, - 0xe0, 0x96, 0xdf, 0xc1, 0xe1, 0x96, 0xdf, 0xc1, 0xe1, 0x96, 0xdf, 0xc1, - 0xe1, 0x96, 0xdf, 0xc1, 0xe1, 0x96, 0xdf, 0xc1, 0xe2, 0x96, 0xe2, 0xc1, - 0xe2, 0x97, 0xe2, 0xc1, 0xe2, 0x97, 0xea, 0xc1, 0xe2, 0x88, 0xea, 0xc1, - 0xe3, 0x8a, 0xea, 0xc1, 0xe3, 0x88, 0xea, 0xc1, 0xe3, 0x8a, 0xea, 0xc1, - 0xe3, 0x88, 0xea, 0xc1, 0xe4, 0x8a, 0xea, 0xc1, 0xe4, 0x88, 0xea, 0xc1, - 0xe4, 0x8a, 0xea, 0xc1, 0xe4, 0x88, 0xea, 0xc1, 0xe5, 0x8a, 0xea, 0xc1, - 0xe5, 0x88, 0xea, 0xc1, 0xe5, 0x8a, 0xea, 0xc1, 0xe5, 0x88, 0xea, 0xc1, - 0xe6, 0x8a, 0xea, 0xc1, 0xe6, 0x88, 0xea, 0xc1, 0xe6, 0x8a, 0xea, 0xc1, - 0xe6, 0x88, 0xea, 0xc1, 0xe7, 0x8a, 0xea, 0xc1, 0xe7, 0x88, 0xea, 0xc1, - 0xe7, 0x8a, 0xea, 0xc1, 0xe7, 0x88, 0xea, 0xc1, 0xe8, 0x8a, 0xea, 0xc1, - 0xe8, 0x88, 0xea, 0xc1, 0xe8, 0x8a, 0xea, 0xc1, 0xe8, 0x88, 0xea, 0xc1, - 0xe9, 0x8a, 0xea, 0xc1, 0xe9, 0x88, 0xea, 0xc1, 0xe9, 0x88, 0xea, 0xc1, - 0xe9, 0x88, 0xea, 0xc1, 0xea, 0x88, 0xea, 0xc1, 0xe9, 0x88, 0xea, 0xc1, - 0xea, 0x88, 0xea, 0xc1, 0xe9, 0x88, 0xeb, 0xc1, 0xea, 0x88, 0xeb, 0xc1, - 0xe9, 0x88, 0xeb, 0xc1, 0xea, 0x88, 0xeb, 0xc1, 0xe9, 0x88, 0xec, 0xc1, - 0xea, 0x88, 0xec, 0xbf, 0xea, 0x88, 0xec, 0xc1, 0xea, 0x88, 0xec, 0xc4, - 0xeb, 0x88, 0xec, 0xc4, 0xec, 0x88, 0xed, 0xc4, 0xeb, 0x88, 0xed, 0xc4, - 0xec, 0x88, 0xed, 0xc5, 0xed, 0x88, 0xed, 0xc5, 0xed, 0x88, 0xee, 0xc5, - 0xee, 0x88, 0xee, 0xc5, 0xee, 0x88, 0xee, 0xc5, 0xee, 0x88, 0xee, 0xc5, - 0xee, 0x88, 0xef, 0xc5, 0xef, 0x88, 0xef, 0xc5, 0xef, 0x88, 0xef, 0xc5, - 0xef, 0x88, 0xef, 0xc5, 0xef, 0x88, 0xf0, 0xc5, 0xef, 0x88, 0xf0, 0xc5, - 0xef, 0x88, 0xf0, 0xc5, 0xef, 0x88, 0xf0, 0xc5, 0xef, 0x88, 0xf1, 0xc5, - 0xef, 0x88, 0xf1, 0xc6, 0xf1, 0x88, 0xf1, 0xc6, 0xf1, 0x88, 0xf1, 0xc6, - 0xf1, 0x88, 0xf2, 0xc6, 0xf2, 0x88, 0xf2, 0xc3, 0xf5, 0x88, 0xf2, 0xc1, - 0xf5, 0x88, 0xf2, 0xc3, 0xf5, 0x88, 0xf2, 0xc1, 0xf5, 0x88, 0xf3, 0xc3, - 0xf5, 0x88, 0xf3, 0xc1, 0xf5, 0x88, 0xf3, 0xc1, 0xf5, 0x88, 0xf3, 0xc1, - 0xf5, 0x88, 0xf4, 0xc1, 0xf5, 0x88, 0xf4, 0xc1, 0xf5, 0x88, 0xf4, 0xc1, - 0xf5, 0x88, 0xf4, 0xc1, 0xf5, 0x88, 0xf5, 0xc1, 0xf5, 0x88, 0xf4, 0xc1, - 0xf5, 0x88, 0xf5, 0xc1, 0xf5, 0x88, 0xf4, 0xc1, 0xf5, 0x88, 0xf5, 0xc1, - 0xf5, 0x88, 0xf5, 0xc1, 0xf6, 0x86, 0xf5, 0xc1, 0xf6, 0x88, 0xf5, 0xc1, - 0xf6, 0x86, 0xf5, 0xc1, 0xf6, 0x88, 0xf8, 0xc1, 0xf7, 0x88, 0xf8, 0xc1, - 0xf7, 0x88, 0xf8, 0xc1, 0xf7, 0x88, 0xf8, 0xc1, 0xf7, 0x88, 0xf8, 0xc1, - 0xf8, 0x88, 0xf8, 0xc1, 0xf8, 0x88, 0xf8, 0xc1, 0xf8, 0x88, 0xf8, 0xc1, - 0xf8, 0x88, 0xf8, 0xc1, 0xf8, 0x88, 0xf9, 0xc1, 0xf8, 0x88, 0xf9, 0xc1, - 0xf8, 0x88, 0xf9, 0xc1, 0xf8, 0x88, 0xf9, 0xc1, 0xf8, 0x88, 0xfa, 0xc1, - 0xf8, 0x88, 0xfa, 0xc1, 0xf8, 0x88, 0xfa, 0xc1, 0xf8, 0x88, 0xfa, 0xbf, - 0xf8, 0x88, 0xfa, 0xc1, 0xf8, 0x88, 0xfb, 0xbf, 0xf8, 0x88, 0xfb, 0xc1, - 0xf8, 0x88, 0xfb, 0xbf, 0xf8, 0x88, 0xfb, 0xc1, 0xf8, 0x88, 0xfc, 0xbf, - 0xf8, 0x88, 0xfc, 0xc1, 0xf8, 0x88, 0xfc, 0xbf, 0xf8, 0x88, 0xfc, 0xc1, - 0xf8, 0x88, 0xfc, 0xbf, 0xf8, 0x88, 0xfd, 0xc1, 0xf8, 0x88, 0xfd, 0xbf, - 0xf8, 0x88, 0xfd, 0xc1, 0xf8, 0x88, 0xfd, 0xbf, 0xf8, 0x88, 0xfe, 0xc1, - 0xf8, 0x88, 0xfe, 0xbf, 0xf8, 0x88, 0xfe, 0xc1, 0xf8, 0x88, 0xfe, 0xbf, - 0xf8, 0x88, 0xfe, 0xc1, 0xf8, 0x88, 0xff, 0xbf, 0xf8, 0x88, 0xff, 0xc1, - 0xf8, 0x88, 0x03, 0xc9, 0x8f, 0x89, 0x0a, 0xc9, 0x8f, 0x89, 0x0f, 0xc9, - 0x8f, 0x89, 0x14, 0xc7, 0x8f, 0x89, 0x17, 0xc9, 0x8f, 0x89, 0x1b, 0xc7, - 0x8f, 0x89, 0x1e, 0xc9, 0x8f, 0x89, 0x20, 0xc7, 0x8f, 0x89, 0x23, 0xc9, - 0x8f, 0x89, 0x25, 0xc7, 0x8f, 0x89, 0x27, 0xc9, 0x8f, 0x89, 0x29, 0xc7, - 0x8f, 0x89, 0x2b, 0xc9, 0x8f, 0x89, 0x2d, 0xc7, 0x8f, 0x89, 0x2f, 0xc9, - 0x8f, 0x89, 0x31, 0xc7, 0x8f, 0x89, 0x32, 0xc9, 0x8f, 0x89, 0x34, 0xc7, - 0x8f, 0x89, 0x35, 0xc9, 0x8f, 0x89, 0x37, 0xc7, 0x8f, 0x89, 0x38, 0xc9, - 0x8f, 0x89, 0x3a, 0xc7, 0x8f, 0x89, 0x3b, 0xc9, 0x8f, 0x89, 0x3c, 0xc7, - 0x8f, 0x89, 0x3e, 0xc9, 0x8f, 0x89, 0x3f, 0xc7, 0x8f, 0x89, 0x40, 0xc9, - 0x8f, 0x89, 0x42, 0xc7, 0x8f, 0x89, 0x43, 0xc9, 0x8f, 0x89, 0x44, 0xc7, - 0x8f, 0x89, 0x45, 0xc9, 0x8f, 0x89, 0x46, 0xc7, 0x8f, 0x89, 0x47, 0xc9, - 0x8f, 0x89, 0x48, 0xc7, 0x8f, 0x89, 0x49, 0xc5, 0x90, 0x89, 0x4a, 0xc7, - 0x8f, 0x89, 0x4b, 0xc5, 0x90, 0x89, 0x4c, 0xc7, 0x8f, 0x89, 0x4d, 0xc5, - 0x90, 0x89, 0x4e, 0xc7, 0x8f, 0x89, 0x4f, 0xc5, 0x90, 0x89, 0x50, 0xc7, - 0x8f, 0x89, 0x51, 0xc5, 0x90, 0x89, 0x52, 0xc7, 0x8f, 0x89, 0x53, 0xc5, - 0x90, 0x89, 0x54, 0xc7, 0x8f, 0x89, 0x55, 0xc5, 0x90, 0x89, 0x56, 0xc7, - 0x8f, 0x89, 0x57, 0xc5, 0x90, 0x89, 0x58, 0xc7, 0x8f, 0x89, 0x58, 0xc5, - 0x90, 0x89, 0x59, 0xc7, 0x8f, 0x89, 0x5a, 0xc5, 0x90, 0x89, 0x5b, 0xc7, - 0x8f, 0x89, 0x5c, 0xc5, 0x90, 0x89, 0x5d, 0xc7, 0x8f, 0x89, 0x5d, 0xc5, - 0x90, 0x89, 0x5e, 0xc7, 0x8f, 0x89, 0x5f, 0xc5, 0x90, 0x89, 0x60, 0xc7, - 0x8f, 0x89, 0x60, 0xc5, 0x90, 0x89, 0x61, 0xc7, 0x8f, 0x89, 0x62, 0xc5, - 0x90, 0x89, 0x63, 0xc7, 0x8f, 0x89, 0x63, 0xc5, 0x90, 0x89, 0x64, 0xc7, - 0x8f, 0x89, 0x65, 0xc5, 0x90, 0x89, 0x66, 0xc3, 0x90, 0x89, 0x66, 0xc5, - 0x90, 0x89, 0x67, 0xc3, 0x90, 0x89, 0x68, 0xc5, 0x90, 0x89, 0x68, 0xc3, - 0x90, 0x89, 0x69, 0xc5, 0x90, 0x89, 0x6a, 0xc3, 0x90, 0x89, 0x6a, 0xc5, - 0x90, 0x89, 0x6b, 0xc3, 0x90, 0x89, 0x6c, 0xc5, 0x90, 0x89, 0x6c, 0xc3, - 0x90, 0x89, 0x6d, 0xc5, 0x90, 0x89, 0x6e, 0xc3, 0x90, 0x89, 0x6e, 0xc5, - 0x90, 0x89, 0x6f, 0xc3, 0x90, 0x89, 0x70, 0xc5, 0x90, 0x89, 0x70, 0xc3, - 0x90, 0x89, 0x71, 0xc5, 0x90, 0x89, 0x72, 0xc3, 0x90, 0x89, 0x72, 0xc5, - 0x90, 0x89, 0x73, 0xc3, 0x90, 0x89, 0x73, 0xc5, 0x90, 0x89, 0x74, 0xc3, - 0x90, 0x89, 0x75, 0xc5, 0x90, 0x89, 0x75, 0xc3, 0x90, 0x89, 0x76, 0xc5, - 0x90, 0x89, 0x76, 0xc3, 0x90, 0x89, 0x77, 0xc5, 0x90, 0x89, 0x78, 0xc3, - 0x90, 0x89, 0x78, 0xc5, 0x90, 0x89, 0x79, 0xc3, 0x90, 0x89, 0x79, 0xc5, - 0x90, 0x89, 0x7a, 0xc3, 0x90, 0x89, 0x7a, 0xc5, 0x90, 0x89, 0x7b, 0xc3, - 0x90, 0x89, 0x7c, 0xc5, 0x90, 0x89, 0x7c, 0xc3, 0x90, 0x89, 0x7d, 0xc5, - 0x90, 0x89, 0x7d, 0xc3, 0x90, 0x89, 0x7e, 0xc5, 0x90, 0x89, 0x7e, 0xc3, - 0x90, 0x89, 0x7f, 0xc1, 0x91, 0x89, 0x7f, 0xc3, 0x90, 0x89, 0x80, 0xc1, - 0x91, 0x89, 0x81, 0xc3, 0x90, 0x89, 0x81, 0xc1, 0x91, 0x89, 0x82, 0xc3, - 0x90, 0x89, 0x82, 0xc1, 0x91, 0x89, 0x83, 0xc3, 0x90, 0x89, 0x83, 0xc1, - 0x91, 0x89, 0x84, 0xc3, 0x90, 0x89, 0x84, 0xc1, 0x91, 0x89, 0x85, 0xc3, - 0x90, 0x89, 0x85, 0xc1, 0x91, 0x89, 0x86, 0xc3, 0x90, 0x89, 0x86, 0xc1, - 0x91, 0x89, 0x87, 0xc3, 0x90, 0x89, 0x87, 0xc1, 0x91, 0x89, 0x88, 0xc3, - 0x90, 0x89, 0x88, 0xc1, 0x91, 0x89, 0x89, 0xc3, 0x90, 0x89, 0x89, 0xc1, - 0x91, 0x89, 0x8a, 0xc3, 0x90, 0x89, 0x8a, 0xc1, 0x91, 0x89, 0x8b, 0xc3, - 0x90, 0x89, 0x8b, 0xc1, 0x91, 0x89, 0x8c, 0xc3, 0x90, 0x89, 0x8c, 0xc1, - 0x91, 0x89, 0x8d, 0xc3, 0x90, 0x89, 0x8d, 0xc1, 0x91, 0x89, 0x8e, 0xc3, - 0x90, 0x89, 0x8e, 0xc1, 0x91, 0x89, 0x8e, 0xc3, 0x90, 0x89, 0x8f, 0xc1, - 0x91, 0x89, 0x8f, 0xc1, 0x91, 0x89, 0x90, 0xc1, 0x91, 0x89, 0x90, 0xc1, - 0x91, 0x89, 0x90, 0xc1, 0x91, 0x89, 0x90, 0xc1, 0x91, 0x89, 0x90, 0xc1, - 0x92, 0x89, 0x90, 0xc1, 0x92, 0x89, 0x94, 0xc1, 0x93, 0x89, 0x94, 0xc1, - 0x93, 0x8a, 0x94, 0xc1, 0x94, 0x89, 0x95, 0xc1, 0x94, 0x89, 0x94, 0xc1, - 0x94, 0x89, 0x95, 0xc1, 0x94, 0x89, 0x95, 0xc1, 0x94, 0x89, 0x96, 0xc1, - 0x94, 0x89, 0x96, 0xc1, 0x94, 0x89, 0x97, 0xc1, 0x94, 0x89, 0x97, 0xc1, - 0x94, 0x89, 0x98, 0xc1, 0x94, 0x89, 0x98, 0xc0, 0x94, 0x89, 0x98, 0xc1, - 0x94, 0x89, 0x99, 0xc0, 0x94, 0x89, 0x99, 0xc1, 0x94, 0x89, 0x9a, 0xc0, - 0x94, 0x89, 0x9a, 0xc1, 0x94, 0x89, 0x9a, 0xc0, 0x94, 0x89, 0x9b, 0xc1, - 0x94, 0x89, 0x9b, 0xbc, 0x9c, 0x89, 0x9c, 0xbc, 0x9d, 0x89, 0x9c, 0xbc, - 0x9c, 0x89, 0x9d, 0xbc, 0x9d, 0x89, 0x9d, 0xbc, 0x9d, 0x89, 0x9d, 0xbc, - 0x9d, 0x89, 0x9e, 0xbc, 0x9e, 0x89, 0x9e, 0xbd, 0xa1, 0x89, 0x9f, 0xbd, - 0xa1, 0x89, 0x9f, 0xbd, 0xa1, 0x89, 0x9f, 0xbd, 0xa1, 0x89, 0xa0, 0xbd, - 0xa1, 0x89, 0xa0, 0xc1, 0xa6, 0x89, 0xa1, 0xc3, 0xa5, 0x89, 0xa1, 0xc1, - 0xa6, 0x89, 0xa1, 0xc3, 0xa5, 0x89, 0xa2, 0xc1, 0xa6, 0x89, 0xa2, 0xc3, - 0xa5, 0x89, 0xa3, 0xc1, 0xa6, 0x89, 0xa3, 0xc3, 0xa5, 0x89, 0xa3, 0xc1, - 0xa6, 0x89, 0xa4, 0xc3, 0xa5, 0x89, 0xa4, 0xc1, 0xa6, 0x89, 0xa5, 0xc1, - 0xa6, 0x89, 0xa5, 0xc1, 0xa6, 0x89, 0xa5, 0xc1, 0xa6, 0x89, 0xa5, 0xc1, - 0xa6, 0x89, 0xa5, 0xc1, 0xa6, 0x89, 0xa5, 0xc1, 0xa6, 0x89, 0xa5, 0xc1, - 0xa7, 0x89, 0xa6, 0xc1, 0xa7, 0x87, 0xa5, 0xc1, 0xa8, 0x89, 0xa6, 0xc1, - 0xa8, 0x87, 0xa5, 0xc1, 0xa8, 0x89, 0xa6, 0xc1, 0xa9, 0x87, 0xa5, 0xc1, - 0xa9, 0x89, 0xa6, 0xc1, 0xaa, 0x87, 0xa5, 0xc1, 0xaa, 0x89, 0xa6, 0xc1, - 0xaa, 0x87, 0xa5, 0xc1, 0xab, 0x89, 0xa6, 0xc1, 0xab, 0x87, 0xa5, 0xc1, - 0xab, 0x89, 0xa6, 0xc1, 0xac, 0x87, 0xa5, 0xc1, 0xac, 0x89, 0xa6, 0xc1, - 0xac, 0x87, 0xa5, 0xc1, 0xad, 0x89, 0xa6, 0xc1, 0xad, 0x87, 0xa5, 0xc1, - 0xae, 0x89, 0xa6, 0xc1, 0xae, 0x87, 0xa5, 0xc1, 0xae, 0x89, 0xa6, 0xc1, - 0xaf, 0x87, 0xa9, 0xc1, 0xaf, 0x7f, 0xa6, 0xc1, 0xaf, 0x87, 0xa9, 0xc1, - 0xb0, 0x7f, 0xa9, 0xc1, 0xb0, 0x7f, 0xa9, 0xc1, 0xb0, 0x7f, 0xaa, 0xc1, - 0xb1, 0x7e, 0xa9, 0xc1, 0xb1, 0x7f, 0xaa, 0xc1, 0xb2, 0x7e, 0xa9, 0xc1, - 0xb2, 0x7f, 0xaa, 0xc1, 0xb2, 0x7e, 0xa9, 0xc1, 0xb3, 0x7f, 0xaa, 0xc1, - 0xb3, 0x7e, 0xa9, 0xc1, 0xb3, 0x7f, 0xaa, 0xc1, 0xb4, 0x7e, 0xa9, 0xc1, - 0xb4, 0x7f, 0xaa, 0xc1, 0xb4, 0x7e, 0xa9, 0xc1, 0xb5, 0x7f, 0xaa, 0xc1, - 0xb5, 0x7e, 0xa9, 0xc1, 0xb5, 0x7f, 0xaa, 0xc1, 0xb6, 0x7e, 0xa9, 0xc1, - 0xb6, 0x7f, 0xaa, 0xc1, 0xb6, 0x7e, 0xa9, 0xc1, 0xb7, 0x7f, 0xaa, 0xc1, - 0xb7, 0x7e, 0xa9, 0xc1, 0xb7, 0x7f, 0xbc, 0xc1, 0xb8, 0x73, 0xbb, 0xc1, - 0xb8, 0x73, 0xbc, 0xc1, 0xb8, 0x73, 0xbb, 0xc1, 0xb9, 0x73, 0xbc, 0xc1, - 0xb9, 0x73, 0xbb, 0xc1, 0xb9, 0x73, 0xbc, 0xc1, 0xba, 0x73, 0xbb, 0xc1, - 0xba, 0x73, 0xbc, 0xc1, 0xba, 0x73, 0xbb, 0xc1, 0xbb, 0x73, 0xbf, 0xc1, - 0xbb, 0x74, 0xbf, 0xc1, 0xbb, 0x74, 0xbf, 0xc1, 0xbc, 0x74, 0xbf, 0xc1, - 0xbc, 0x74, 0xbf, 0xc1, 0xbc, 0x74, 0xbf, 0xc1, 0xbd, 0x74, 0xbf, 0xc1, - 0xbd, 0x74, 0xbf, 0xc1, 0xbd, 0x74, 0xbf, 0xc1, 0xbe, 0x74, 0xbf, 0xc1, - 0xbe, 0x74, 0xbf, 0xc1, 0xbe, 0x74, 0xc2, 0xc1, 0xbf, 0x75, 0xc3, 0xc1, - 0xbf, 0x75, 0xc2, 0xc1, 0xbf, 0x75, 0xc3, 0xc1, 0xc0, 0x75, 0xc2, 0xc1, - 0xc0, 0x75, 0xc3, 0xc1, 0xc0, 0x75, 0xc2, 0xc1, 0xc1, 0x75, 0xc3, 0xc1, - 0xc1, 0x75, 0xc2, 0xc1, 0xc1, 0x75, 0xc3, 0xc1, 0xc1, 0x75, 0xc2, 0xc1, - 0xc2, 0x75, 0xc3, 0xc1, 0xc2, 0x75, 0xc6, 0xc1, 0xc2, 0x76, 0xc6, 0xc1, - 0xc3, 0x76, 0xc6, 0xc1, 0xc3, 0x76, 0xc6, 0xc1, 0xc3, 0x76, 0xc6, 0xc1, - 0xc4, 0x76, 0xc6, 0xc1, 0xc4, 0x76, 0xc6, 0xc1, 0xc4, 0x76, 0xc6, 0xc1, - 0xc5, 0x76, 0xc6, 0xc1, 0xc5, 0x76, 0xc6, 0xc1, 0xc5, 0x76, 0xc6, 0xc1, - 0xc6, 0x76, 0xc9, 0xc1, 0xc6, 0x77, 0xca, 0xc1, 0xc6, 0x77, 0xc9, 0xc1, - 0xc6, 0x77, 0xca, 0xc1, 0xc7, 0x77, 0xc9, 0xc1, 0xc7, 0x77, 0xca, 0xc1, - 0xc7, 0x77, 0xc9, 0xc1, 0xc8, 0x77, 0xca, 0xc1, 0xc8, 0x77, 0xc9, 0xc1, - 0xc8, 0x77, 0xca, 0xc1, 0xc9, 0x77, 0xc9, 0xc1, 0xc9, 0x77, 0xcd, 0xc1, - 0xc9, 0x78, 0xc9, 0xc1, 0xc9, 0x77, 0xcd, 0xc1, 0xca, 0x78, 0xcd, 0xc1, - 0xca, 0x78, 0xcd, 0xc1, 0xca, 0x78, 0xcd, 0xc1, 0xcb, 0x78, 0xcd, 0xc1, - 0xcb, 0x78, 0xcd, 0xc1, 0xcb, 0x78, 0xcd, 0xc1, 0xcc, 0x78, 0xcd, 0xc1, - 0xcc, 0x78, 0xcd, 0xc1, 0xcc, 0x78, 0xcd, 0xc1, 0xcc, 0x78, 0xd4, 0xc1, - 0xcd, 0x93, 0xd4, 0xc1, 0xcd, 0x93, 0xd4, 0xc1, 0xcd, 0x93, 0xd4, 0xc1, - 0xce, 0x93, 0xd4, 0xc1, 0xce, 0x93, 0xd4, 0xc1, 0xce, 0x93, 0xd4, 0xc1, - 0xce, 0x93, 0xd4, 0xc1, 0xcf, 0x93, 0xd4, 0xc1, 0xcf, 0x93, 0xd4, 0xc1, - 0xcf, 0x93, 0xd4, 0xc1, 0xd0, 0x93, 0xd4, 0xc1, 0xd0, 0x93, 0xd4, 0xc1, - 0xd0, 0x93, 0xd4, 0xc1, 0xd0, 0x93, 0xd4, 0xc1, 0xd1, 0x93, 0xd4, 0xc1, - 0xd1, 0x93, 0xd4, 0xc1, 0xd1, 0x93, 0xd4, 0xc1, 0xd2, 0x93, 0xd4, 0xc1, - 0xd2, 0x93, 0xd4, 0xc1, 0xd2, 0x93, 0xd4, 0xc1, 0xd2, 0x93, 0xd4, 0xc1, - 0xd3, 0x93, 0xd4, 0xc1, 0xd3, 0x93, 0xd4, 0xc1, 0xd3, 0x93, 0xd4, 0xc1, - 0xd4, 0x93, 0xd4, 0xc1, 0xd4, 0x93, 0xd4, 0xc1, 0xd4, 0x93, 0xd4, 0xc1, - 0xd4, 0x93, 0xd5, 0xc1, 0xd5, 0x93, 0xd4, 0xc1, 0xd5, 0x93, 0xd5, 0xc1, - 0xd5, 0x93, 0xd4, 0xc1, 0xd6, 0x93, 0xd5, 0xc1, 0xd6, 0x93, 0xd4, 0xc1, - 0xd6, 0x93, 0xd5, 0xc1, 0xd6, 0x93, 0xd4, 0xc1, 0xd7, 0x93, 0xd5, 0xc1, - 0xd7, 0x93, 0xd7, 0xc1, 0xd7, 0x94, 0xd7, 0xc1, 0xd7, 0x94, 0xd8, 0xc1, - 0xd8, 0x94, 0xd7, 0xc1, 0xd8, 0x94, 0xd8, 0xc1, 0xd8, 0x94, 0xd7, 0xc1, - 0xd9, 0x94, 0xd8, 0xc1, 0xd9, 0x94, 0xd7, 0xc1, 0xd9, 0x94, 0xd8, 0xc1, - 0xd9, 0x94, 0xd7, 0xc1, 0xda, 0x94, 0xd8, 0xc1, 0xda, 0x94, 0xda, 0xc1, - 0xda, 0x95, 0xda, 0xc1, 0xda, 0x95, 0xdb, 0xc1, 0xdb, 0x95, 0xda, 0xc1, - 0xdb, 0x95, 0xdb, 0xc1, 0xdb, 0x95, 0xda, 0xc1, 0xdb, 0x95, 0xdb, 0xc1, - 0xdc, 0x95, 0xda, 0xc1, 0xdc, 0x95, 0xdb, 0xc1, 0xdc, 0x95, 0xda, 0xc1, - 0xdd, 0x95, 0xdb, 0xc1, 0xdd, 0x95, 0xdd, 0xc1, 0xdd, 0x96, 0xdd, 0xc1, - 0xdd, 0x96, 0xde, 0xc1, 0xde, 0x96, 0xdd, 0xc1, 0xde, 0x96, 0xde, 0xc1, - 0xde, 0x96, 0xdd, 0xc1, 0xde, 0x96, 0xde, 0xc1, 0xdf, 0x96, 0xdd, 0xc1, - 0xdf, 0x96, 0xde, 0xc1, 0xdf, 0x96, 0xdd, 0xc1, 0xdf, 0x96, 0xde, 0xc1, - 0xe0, 0x96, 0xdd, 0xc1, 0xe0, 0x96, 0xde, 0xc1, 0xe0, 0x96, 0xe1, 0xc1, - 0xe1, 0x97, 0xe0, 0xc1, 0xe1, 0x97, 0xe1, 0xc1, 0xe1, 0x97, 0xe0, 0xc1, - 0xe1, 0x97, 0xe1, 0xc1, 0xe2, 0x97, 0xe0, 0xc1, 0xe2, 0x97, 0xe1, 0xc1, - 0xe2, 0x97, 0xe0, 0xc1, 0xe2, 0x97, 0xea, 0xc1, 0xe3, 0x8a, 0xea, 0xc1, - 0xe3, 0x89, 0xea, 0xc1, 0xe3, 0x8a, 0xea, 0xc1, 0xe3, 0x89, 0xea, 0xc1, - 0xe4, 0x8a, 0xea, 0xc1, 0xe4, 0x89, 0xea, 0xc1, 0xe4, 0x8a, 0xea, 0xc1, - 0xe4, 0x89, 0xea, 0xc1, 0xe5, 0x8a, 0xea, 0xc1, 0xe5, 0x89, 0xea, 0xc1, - 0xe5, 0x8a, 0xea, 0xc1, 0xe5, 0x89, 0xea, 0xc1, 0xe6, 0x8a, 0xea, 0xc1, - 0xe6, 0x89, 0xea, 0xc1, 0xe6, 0x8a, 0xea, 0xc1, 0xe6, 0x89, 0xea, 0xc1, - 0xe7, 0x8a, 0xea, 0xc1, 0xe7, 0x89, 0xea, 0xc1, 0xe7, 0x8a, 0xea, 0xc1, - 0xe7, 0x89, 0xea, 0xc1, 0xe8, 0x8a, 0xea, 0xc1, 0xe8, 0x89, 0xea, 0xc1, - 0xe8, 0x8a, 0xea, 0xc1, 0xe8, 0x89, 0xea, 0xc1, 0xe9, 0x8a, 0xea, 0xc1, - 0xe9, 0x89, 0xea, 0xc1, 0xe9, 0x8a, 0xea, 0xc1, 0xe9, 0x89, 0xea, 0xc1, - 0xea, 0x89, 0xea, 0xc1, 0xe9, 0x89, 0xea, 0xc1, 0xea, 0x89, 0xea, 0xc1, - 0xe9, 0x89, 0xeb, 0xc1, 0xea, 0x89, 0xeb, 0xc1, 0xe9, 0x89, 0xeb, 0xc1, - 0xea, 0x89, 0xeb, 0xc1, 0xe9, 0x89, 0xec, 0xc1, 0xea, 0x89, 0xec, 0xc1, - 0xe9, 0x89, 0xec, 0xc1, 0xea, 0x89, 0xec, 0xc5, 0xec, 0x89, 0xec, 0xc5, - 0xec, 0x89, 0xed, 0xc5, 0xed, 0x89, 0xed, 0xc5, 0xed, 0x89, 0xed, 0xc5, - 0xed, 0x89, 0xed, 0xc5, 0xed, 0x89, 0xee, 0xc5, 0xed, 0x89, 0xee, 0xc5, - 0xed, 0x89, 0xee, 0xc5, 0xed, 0x89, 0xee, 0xc5, 0xed, 0x89, 0xef, 0xc5, - 0xed, 0x89, 0xef, 0xc5, 0xef, 0x89, 0xef, 0xc5, 0xef, 0x89, 0xef, 0xc5, - 0xef, 0x89, 0xf0, 0xc5, 0xf0, 0x89, 0xf0, 0xc5, 0xf0, 0x89, 0xf0, 0xc5, - 0xf0, 0x89, 0xf0, 0xc5, 0xf0, 0x89, 0xf1, 0xc5, 0xf1, 0x89, 0xf1, 0xc5, - 0xf1, 0x89, 0xf1, 0xc5, 0xf1, 0x89, 0xf1, 0xc5, 0xf1, 0x89, 0xf2, 0xc5, - 0xf1, 0x89, 0xf2, 0xc5, 0xf1, 0x89, 0xf2, 0xc1, 0xf5, 0x89, 0xf2, 0xc3, - 0xf5, 0x89, 0xf2, 0xc1, 0xf5, 0x89, 0xf3, 0xc3, 0xf5, 0x89, 0xf3, 0xc1, - 0xf5, 0x89, 0xf3, 0xc1, 0xf5, 0x89, 0xf3, 0xc1, 0xf5, 0x89, 0xf4, 0xc1, - 0xf5, 0x89, 0xf4, 0xc1, 0xf5, 0x89, 0xf4, 0xc1, 0xf5, 0x89, 0xf4, 0xc1, - 0xf5, 0x89, 0xf5, 0xc1, 0xf5, 0x89, 0xf4, 0xc1, 0xf5, 0x89, 0xf5, 0xc1, - 0xf5, 0x89, 0xf4, 0xc1, 0xf5, 0x89, 0xf5, 0xc1, 0xf5, 0x89, 0xf5, 0xc1, - 0xf6, 0x87, 0xf5, 0xc1, 0xf6, 0x89, 0xf5, 0xc1, 0xf6, 0x87, 0xf5, 0xc1, - 0xf6, 0x89, 0xf8, 0xc1, 0xf7, 0x89, 0xf8, 0xc1, 0xf7, 0x89, 0xf8, 0xc1, - 0xf7, 0x89, 0xf8, 0xc1, 0xf7, 0x89, 0xf8, 0xc1, 0xf8, 0x89, 0xf8, 0xc1, - 0xf8, 0x89, 0xf8, 0xc1, 0xf8, 0x89, 0xf8, 0xc1, 0xf8, 0x89, 0xf8, 0xc1, - 0xf8, 0x89, 0xf9, 0xc1, 0xf8, 0x89, 0xf9, 0xc1, 0xf8, 0x89, 0xf9, 0xc1, - 0xf8, 0x89, 0xf9, 0xc1, 0xf8, 0x89, 0xfa, 0xc1, 0xf8, 0x89, 0xfa, 0xc1, - 0xf8, 0x89, 0xfa, 0xc1, 0xf8, 0x89, 0xfa, 0xc1, 0xf8, 0x89, 0xfa, 0xc1, - 0xf8, 0x89, 0xfb, 0xc1, 0xf8, 0x89, 0xfb, 0xc1, 0xf8, 0x89, 0xfb, 0xc1, - 0xf8, 0x89, 0xfb, 0xc1, 0xf8, 0x89, 0xfc, 0xc1, 0xf8, 0x89, 0xfc, 0xc1, - 0xf8, 0x89, 0xfc, 0xbf, 0xf8, 0x89, 0xfc, 0xc1, 0xf8, 0x89, 0xfc, 0xbf, - 0xf8, 0x89, 0xfd, 0xc1, 0xf8, 0x89, 0xfd, 0xbf, 0xf8, 0x89, 0xfd, 0xc1, - 0xf8, 0x89, 0xfd, 0xbf, 0xf8, 0x89, 0xfe, 0xc1, 0xf8, 0x89, 0xfe, 0xbf, - 0xf8, 0x89, 0xfe, 0xc1, 0xf8, 0x89, 0xfe, 0xbf, 0xf8, 0x89, 0xfe, 0xc1, - 0xf8, 0x89, 0xff, 0xbf, 0xf8, 0x89, 0xff, 0xc1, 0xf8, 0x89, 0x03, 0xc9, - 0x8f, 0x89, 0x0a, 0xc9, 0x8f, 0x89, 0x0f, 0xc9, 0x8f, 0x89, 0x14, 0xc7, - 0x8f, 0x89, 0x17, 0xc9, 0x8f, 0x89, 0x1b, 0xc7, 0x8f, 0x89, 0x1e, 0xc9, - 0x8f, 0x89, 0x20, 0xc7, 0x8f, 0x89, 0x23, 0xc9, 0x8f, 0x89, 0x25, 0xc7, - 0x8f, 0x89, 0x27, 0xc9, 0x8f, 0x89, 0x29, 0xc7, 0x8f, 0x89, 0x2b, 0xc9, - 0x8f, 0x89, 0x2d, 0xc7, 0x8f, 0x89, 0x2f, 0xc9, 0x8f, 0x89, 0x31, 0xc7, - 0x8f, 0x89, 0x32, 0xc9, 0x8f, 0x89, 0x34, 0xc7, 0x8f, 0x89, 0x35, 0xc9, - 0x8f, 0x89, 0x37, 0xc7, 0x8f, 0x89, 0x38, 0xc9, 0x8f, 0x89, 0x3a, 0xc7, - 0x8f, 0x89, 0x3b, 0xc5, 0x90, 0x89, 0x3c, 0xc7, 0x8f, 0x89, 0x3e, 0xc5, - 0x90, 0x89, 0x3f, 0xc7, 0x8f, 0x89, 0x40, 0xc5, 0x90, 0x89, 0x42, 0xc7, - 0x8f, 0x89, 0x43, 0xc5, 0x90, 0x89, 0x44, 0xc7, 0x8f, 0x89, 0x45, 0xc5, - 0x90, 0x89, 0x46, 0xc7, 0x8f, 0x89, 0x47, 0xc5, 0x90, 0x89, 0x48, 0xc7, - 0x8f, 0x89, 0x49, 0xc5, 0x90, 0x89, 0x4a, 0xc7, 0x8f, 0x89, 0x4b, 0xc5, - 0x90, 0x89, 0x4c, 0xc7, 0x8f, 0x89, 0x4d, 0xc5, 0x90, 0x89, 0x4e, 0xc7, - 0x8f, 0x89, 0x4f, 0xc5, 0x90, 0x89, 0x50, 0xc7, 0x8f, 0x89, 0x51, 0xc5, - 0x90, 0x89, 0x52, 0xc7, 0x8f, 0x89, 0x53, 0xc5, 0x90, 0x89, 0x54, 0xc7, - 0x8f, 0x89, 0x55, 0xc5, 0x90, 0x89, 0x56, 0xc7, 0x8f, 0x89, 0x57, 0xc5, - 0x90, 0x89, 0x58, 0xc7, 0x8f, 0x89, 0x58, 0xc5, 0x90, 0x89, 0x59, 0xc7, - 0x8f, 0x89, 0x5a, 0xc5, 0x90, 0x89, 0x5b, 0xc7, 0x8f, 0x89, 0x5c, 0xc5, - 0x90, 0x89, 0x5d, 0xc7, 0x8f, 0x89, 0x5d, 0xc5, 0x90, 0x89, 0x5e, 0xc7, - 0x8f, 0x89, 0x5f, 0xc5, 0x90, 0x89, 0x60, 0xc7, 0x8f, 0x89, 0x60, 0xc5, - 0x90, 0x89, 0x61, 0xc7, 0x8f, 0x89, 0x62, 0xc5, 0x90, 0x89, 0x63, 0xc7, - 0x8f, 0x89, 0x63, 0xc5, 0x90, 0x89, 0x64, 0xc7, 0x8f, 0x89, 0x65, 0xc5, - 0x90, 0x89, 0x66, 0xc3, 0x90, 0x89, 0x66, 0xc5, 0x90, 0x89, 0x67, 0xc3, - 0x90, 0x89, 0x68, 0xc5, 0x90, 0x89, 0x68, 0xc3, 0x90, 0x89, 0x69, 0xc5, - 0x90, 0x89, 0x6a, 0xc3, 0x90, 0x89, 0x6a, 0xc5, 0x90, 0x89, 0x6b, 0xc3, - 0x90, 0x89, 0x6c, 0xc5, 0x90, 0x89, 0x6c, 0xc3, 0x90, 0x89, 0x6d, 0xc5, - 0x90, 0x89, 0x6e, 0xc3, 0x90, 0x89, 0x6e, 0xc5, 0x90, 0x89, 0x6f, 0xc3, - 0x90, 0x89, 0x70, 0xc5, 0x90, 0x89, 0x70, 0xc3, 0x90, 0x89, 0x71, 0xc5, - 0x90, 0x89, 0x72, 0xc3, 0x90, 0x89, 0x72, 0xc5, 0x90, 0x89, 0x73, 0xc3, - 0x90, 0x89, 0x73, 0xc5, 0x90, 0x89, 0x74, 0xc3, 0x90, 0x89, 0x75, 0xc5, - 0x90, 0x89, 0x75, 0xc3, 0x90, 0x89, 0x76, 0xc5, 0x90, 0x89, 0x76, 0xc3, - 0x90, 0x89, 0x77, 0xc5, 0x90, 0x89, 0x78, 0xc3, 0x90, 0x89, 0x78, 0xc5, - 0x90, 0x89, 0x79, 0xc3, 0x90, 0x89, 0x79, 0xc5, 0x90, 0x89, 0x7a, 0xc3, - 0x90, 0x89, 0x7a, 0xc5, 0x90, 0x89, 0x7b, 0xc3, 0x90, 0x89, 0x7c, 0xc5, - 0x90, 0x89, 0x7c, 0xc3, 0x90, 0x89, 0x7d, 0xc5, 0x90, 0x89, 0x7d, 0xc3, - 0x90, 0x89, 0x7e, 0xc5, 0x90, 0x89, 0x7e, 0xc3, 0x90, 0x89, 0x7f, 0xc5, - 0x90, 0x89, 0x7f, 0xc3, 0x90, 0x89, 0x80, 0xc5, 0x90, 0x89, 0x81, 0xc3, - 0x90, 0x89, 0x81, 0xc5, 0x90, 0x89, 0x82, 0xc3, 0x90, 0x89, 0x82, 0xc5, - 0x90, 0x89, 0x83, 0xc3, 0x90, 0x89, 0x83, 0xc5, 0x90, 0x89, 0x84, 0xc3, - 0x90, 0x89, 0x84, 0xc5, 0x90, 0x89, 0x85, 0xc3, 0x90, 0x89, 0x85, 0xc2, - 0x91, 0x89, 0x86, 0xc3, 0x90, 0x89, 0x86, 0xc2, 0x91, 0x89, 0x87, 0xc3, - 0x90, 0x89, 0x87, 0xc2, 0x91, 0x89, 0x88, 0xc3, 0x90, 0x89, 0x88, 0xc2, - 0x91, 0x89, 0x89, 0xc3, 0x90, 0x89, 0x89, 0xc2, 0x91, 0x89, 0x8a, 0xc3, - 0x90, 0x89, 0x8a, 0xc2, 0x91, 0x89, 0x8b, 0xc3, 0x90, 0x89, 0x8b, 0xc2, - 0x91, 0x89, 0x8c, 0xc3, 0x90, 0x89, 0x8c, 0xc2, 0x91, 0x89, 0x8d, 0xc3, - 0x90, 0x89, 0x8d, 0xc2, 0x91, 0x89, 0x8e, 0xc3, 0x90, 0x89, 0x8e, 0xc2, - 0x91, 0x89, 0x8e, 0xc3, 0x90, 0x89, 0x8f, 0xc2, 0x91, 0x89, 0x8f, 0xc2, - 0x91, 0x89, 0x90, 0xc2, 0x91, 0x89, 0x90, 0xc2, 0x91, 0x89, 0x90, 0xc2, - 0x91, 0x89, 0x90, 0xc2, 0x91, 0x89, 0x90, 0xc2, 0x92, 0x89, 0x90, 0xc2, - 0x92, 0x89, 0x94, 0xc2, 0x93, 0x89, 0x94, 0xc2, 0x93, 0x89, 0x94, 0xc2, - 0x94, 0x89, 0x94, 0xc1, 0x94, 0x89, 0x94, 0xc2, 0x94, 0x89, 0x95, 0xc1, - 0x94, 0x89, 0x95, 0xc2, 0x94, 0x89, 0x96, 0xc1, 0x94, 0x89, 0x96, 0xc2, - 0x94, 0x89, 0x97, 0xc1, 0x94, 0x89, 0x97, 0xc2, 0x94, 0x89, 0x98, 0xc1, - 0x94, 0x89, 0x98, 0xc0, 0x94, 0x89, 0x98, 0xc1, 0x94, 0x89, 0x99, 0xc0, - 0x94, 0x89, 0x99, 0xc1, 0x94, 0x89, 0x9a, 0xc0, 0x94, 0x89, 0x9a, 0xc1, - 0x94, 0x89, 0x9a, 0xc0, 0x94, 0x89, 0x9b, 0xbf, 0x94, 0x89, 0x9b, 0xbd, - 0x9f, 0x89, 0x9c, 0xbd, 0x9f, 0x89, 0x9c, 0xbd, 0x9f, 0x89, 0x9d, 0xbd, - 0x9f, 0x89, 0x9d, 0xbd, 0x9f, 0x89, 0x9d, 0xbd, 0x9f, 0x89, 0x9e, 0xbd, - 0x9f, 0x89, 0x9e, 0xbd, 0x9f, 0x89, 0x9f, 0xbd, 0x9f, 0x89, 0x9f, 0xbd, - 0x9f, 0x89, 0x9f, 0xbd, 0x9f, 0x89, 0xa0, 0xc2, 0xa5, 0x89, 0xa0, 0xc2, - 0xa6, 0x89, 0xa1, 0xc2, 0xa5, 0x89, 0xa1, 0xc2, 0xa6, 0x89, 0xa1, 0xc2, - 0xa5, 0x89, 0xa2, 0xc2, 0xa6, 0x89, 0xa2, 0xc2, 0xa5, 0x89, 0xa3, 0xc2, - 0xa6, 0x89, 0xa3, 0xc2, 0xa5, 0x89, 0xa3, 0xc2, 0xa6, 0x89, 0xa4, 0xc2, - 0xa5, 0x89, 0xa4, 0xc2, 0xa6, 0x89, 0xa5, 0xc2, 0xa5, 0x89, 0xa5, 0xc2, - 0xa6, 0x89, 0xa5, 0xc2, 0xa6, 0x89, 0xa5, 0xc2, 0xa6, 0x89, 0xa5, 0xc2, - 0xa6, 0x89, 0xa5, 0xc2, 0xa6, 0x89, 0xa5, 0xc2, 0xa7, 0x89, 0xa6, 0xc2, - 0xa7, 0x87, 0xa5, 0xc2, 0xa8, 0x89, 0xa6, 0xc2, 0xa8, 0x87, 0xa5, 0xc2, - 0xa8, 0x89, 0xa6, 0xc2, 0xa9, 0x87, 0xa5, 0xc2, 0xa9, 0x89, 0xa6, 0xc2, - 0xaa, 0x87, 0xa5, 0xc2, 0xaa, 0x89, 0xa6, 0xc2, 0xaa, 0x87, 0xa5, 0xc2, - 0xab, 0x89, 0xa6, 0xc2, 0xab, 0x87, 0xa5, 0xc2, 0xab, 0x89, 0xa6, 0xc2, - 0xac, 0x87, 0xa5, 0xc2, 0xac, 0x89, 0xa6, 0xc2, 0xac, 0x87, 0xa5, 0xc2, - 0xad, 0x89, 0xa6, 0xc2, 0xad, 0x87, 0xa5, 0xc2, 0xae, 0x89, 0xa6, 0xc2, - 0xae, 0x87, 0xa5, 0xc2, 0xae, 0x89, 0xa6, 0xc2, 0xaf, 0x87, 0xa6, 0xc2, - 0xaf, 0x84, 0xa6, 0xc2, 0xaf, 0x87, 0xa6, 0xc2, 0xb0, 0x84, 0xa6, 0xc2, - 0xb0, 0x87, 0xa9, 0xc2, 0xb0, 0x7e, 0xa6, 0xc2, 0xb1, 0x87, 0xa9, 0xc2, - 0xb1, 0x7e, 0xa6, 0xc2, 0xb2, 0x87, 0xa9, 0xc2, 0xb2, 0x7e, 0xaa, 0xc2, - 0xb2, 0x7d, 0xa9, 0xc2, 0xb3, 0x7e, 0xaa, 0xc2, 0xb3, 0x7d, 0xa9, 0xc2, - 0xb3, 0x7e, 0xaa, 0xc2, 0xb4, 0x7d, 0xa9, 0xc2, 0xb4, 0x7e, 0xaa, 0xc2, - 0xb4, 0x7d, 0xa9, 0xc2, 0xb5, 0x7e, 0xaa, 0xc2, 0xb5, 0x7d, 0xa9, 0xc2, - 0xb5, 0x7e, 0xaa, 0xc2, 0xb6, 0x7d, 0xa9, 0xc2, 0xb6, 0x7e, 0xaa, 0xc2, - 0xb6, 0x7d, 0xa9, 0xc2, 0xb7, 0x7e, 0xaa, 0xc2, 0xb7, 0x7d, 0xa9, 0xc2, - 0xb7, 0x7e, 0xba, 0xc2, 0xb8, 0x72, 0xba, 0xc2, 0xb8, 0x72, 0xba, 0xc2, - 0xb8, 0x72, 0xba, 0xc2, 0xb9, 0x72, 0xba, 0xc2, 0xb9, 0x72, 0xbd, 0xc2, - 0xb9, 0x73, 0xbe, 0xc2, 0xba, 0x73, 0xbd, 0xc2, 0xba, 0x73, 0xbe, 0xc2, - 0xba, 0x73, 0xbd, 0xc2, 0xbb, 0x73, 0xbe, 0xc2, 0xbb, 0x73, 0xbd, 0xc2, - 0xbb, 0x73, 0xbe, 0xc2, 0xbc, 0x73, 0xbd, 0xc2, 0xbc, 0x73, 0xbe, 0xc2, - 0xbc, 0x73, 0xbd, 0xc2, 0xbd, 0x73, 0xc1, 0xc2, 0xbd, 0x74, 0xc1, 0xc2, - 0xbd, 0x74, 0xc1, 0xc2, 0xbe, 0x74, 0xc1, 0xc2, 0xbe, 0x74, 0xc1, 0xc2, - 0xbe, 0x74, 0xc1, 0xc2, 0xbf, 0x74, 0xc1, 0xc2, 0xbf, 0x74, 0xc1, 0xc2, - 0xbf, 0x74, 0xc1, 0xc2, 0xc0, 0x74, 0xc1, 0xc2, 0xc0, 0x74, 0xc1, 0xc2, - 0xc0, 0x74, 0xc4, 0xc2, 0xc1, 0x75, 0xc5, 0xc2, 0xc1, 0x75, 0xc4, 0xc2, - 0xc1, 0x75, 0xc5, 0xc2, 0xc1, 0x75, 0xc4, 0xc2, 0xc2, 0x75, 0xc5, 0xc2, - 0xc2, 0x75, 0xc4, 0xc2, 0xc2, 0x75, 0xc5, 0xc2, 0xc3, 0x75, 0xc4, 0xc2, - 0xc3, 0x75, 0xc5, 0xc2, 0xc3, 0x75, 0xc4, 0xc2, 0xc4, 0x75, 0xc8, 0xc2, - 0xc4, 0x76, 0xc8, 0xc2, 0xc4, 0x76, 0xc8, 0xc2, 0xc5, 0x76, 0xc8, 0xc2, - 0xc5, 0x76, 0xc8, 0xc2, 0xc5, 0x76, 0xc8, 0xc2, 0xc6, 0x76, 0xc8, 0xc2, - 0xc6, 0x76, 0xc8, 0xc2, 0xc6, 0x76, 0xc8, 0xc2, 0xc6, 0x76, 0xc8, 0xc2, - 0xc7, 0x76, 0xc8, 0xc2, 0xc7, 0x76, 0xcb, 0xc2, 0xc7, 0x77, 0xcb, 0xc2, - 0xc8, 0x77, 0xcb, 0xc2, 0xc8, 0x77, 0xcb, 0xc2, 0xc8, 0x77, 0xcb, 0xc2, - 0xc9, 0x77, 0xcb, 0xc2, 0xc9, 0x77, 0xcb, 0xc2, 0xc9, 0x77, 0xcb, 0xc2, - 0xc9, 0x77, 0xcb, 0xc2, 0xca, 0x77, 0xcb, 0xc2, 0xca, 0x77, 0xcb, 0xc2, - 0xca, 0x77, 0xce, 0xc2, 0xcb, 0x78, 0xcb, 0xc2, 0xcb, 0x77, 0xce, 0xc2, - 0xcb, 0x78, 0xce, 0xc2, 0xcc, 0x78, 0xce, 0xc2, 0xcc, 0x78, 0xd4, 0xc2, - 0xcc, 0x93, 0xd4, 0xc2, 0xcc, 0x94, 0xd4, 0xc2, 0xcd, 0x93, 0xd4, 0xc2, - 0xcd, 0x94, 0xd4, 0xc2, 0xcd, 0x93, 0xd4, 0xc2, 0xce, 0x94, 0xd4, 0xc2, - 0xce, 0x93, 0xd4, 0xc2, 0xce, 0x94, 0xd4, 0xc2, 0xce, 0x93, 0xd4, 0xc2, - 0xcf, 0x93, 0xd4, 0xc2, 0xcf, 0x93, 0xd4, 0xc2, 0xcf, 0x93, 0xd4, 0xc2, - 0xd0, 0x93, 0xd4, 0xc2, 0xd0, 0x93, 0xd4, 0xc2, 0xd0, 0x93, 0xd4, 0xc2, - 0xd0, 0x93, 0xd4, 0xc2, 0xd1, 0x93, 0xd4, 0xc2, 0xd1, 0x93, 0xd4, 0xc2, - 0xd1, 0x93, 0xd4, 0xc2, 0xd2, 0x93, 0xd4, 0xc2, 0xd2, 0x93, 0xd4, 0xc2, - 0xd2, 0x93, 0xd4, 0xc2, 0xd2, 0x93, 0xd4, 0xc2, 0xd3, 0x93, 0xd4, 0xc2, - 0xd3, 0x93, 0xd4, 0xc2, 0xd3, 0x93, 0xd4, 0xc2, 0xd4, 0x93, 0xd4, 0xc2, - 0xd4, 0x93, 0xd4, 0xc2, 0xd4, 0x93, 0xd4, 0xc2, 0xd4, 0x93, 0xd5, 0xc2, - 0xd5, 0x93, 0xd5, 0xc2, 0xd5, 0x93, 0xd5, 0xc2, 0xd5, 0x93, 0xd6, 0xc2, - 0xd6, 0x93, 0xd6, 0xc2, 0xd6, 0x93, 0xd6, 0xc2, 0xd6, 0x93, 0xd6, 0xc2, - 0xd6, 0x93, 0xd6, 0xc2, 0xd7, 0x93, 0xd6, 0xc2, 0xd7, 0x93, 0xd6, 0xc2, - 0xd7, 0x93, 0xd6, 0xc2, 0xd7, 0x93, 0xd6, 0xc2, 0xd8, 0x93, 0xd6, 0xc2, - 0xd8, 0x93, 0xd6, 0xc2, 0xd8, 0x93, 0xd9, 0xc2, 0xd9, 0x94, 0xd9, 0xc2, - 0xd9, 0x94, 0xd9, 0xc2, 0xd9, 0x94, 0xd9, 0xc2, 0xd9, 0x94, 0xd9, 0xc2, - 0xda, 0x94, 0xd9, 0xc2, 0xda, 0x94, 0xd9, 0xc2, 0xda, 0x94, 0xd9, 0xc2, - 0xda, 0x94, 0xd9, 0xc2, 0xdb, 0x94, 0xd9, 0xc2, 0xdb, 0x94, 0xd9, 0xc2, - 0xdb, 0x94, 0xdb, 0xc2, 0xdb, 0x95, 0xdc, 0xc2, 0xdc, 0x95, 0xdc, 0xc2, - 0xdc, 0x95, 0xdc, 0xc2, 0xdc, 0x95, 0xdc, 0xc2, 0xdd, 0x95, 0xdc, 0xc2, - 0xdd, 0x95, 0xdc, 0xc2, 0xdd, 0x95, 0xdc, 0xc2, 0xdd, 0x95, 0xdc, 0xc2, - 0xde, 0x95, 0xdc, 0xc2, 0xde, 0x95, 0xdc, 0xc2, 0xde, 0x95, 0xde, 0xc2, - 0xde, 0x96, 0xdf, 0xc2, 0xdf, 0x96, 0xdf, 0xc2, 0xdf, 0x96, 0xdf, 0xc2, - 0xdf, 0x96, 0xdf, 0xc2, 0xdf, 0x96, 0xdf, 0xc2, 0xe0, 0x96, 0xdf, 0xc2, - 0xe0, 0x96, 0xdf, 0xc2, 0xe0, 0x96, 0xdf, 0xc2, 0xe1, 0x96, 0xdf, 0xc2, - 0xe1, 0x96, 0xdf, 0xc2, 0xe1, 0x96, 0xdf, 0xc2, 0xe1, 0x96, 0xdf, 0xc2, - 0xe2, 0x96, 0xe2, 0xc2, 0xe2, 0x97, 0xe2, 0xc2, 0xe2, 0x97, 0xe2, 0xc2, - 0xe2, 0x97, 0xea, 0xc2, 0xe3, 0x8a, 0xea, 0xc2, 0xe3, 0x89, 0xea, 0xc2, - 0xe3, 0x8a, 0xea, 0xc2, 0xe3, 0x89, 0xea, 0xc2, 0xe4, 0x8a, 0xea, 0xc2, - 0xe4, 0x89, 0xea, 0xc2, 0xe4, 0x8a, 0xea, 0xc2, 0xe4, 0x89, 0xea, 0xc2, - 0xe5, 0x8a, 0xea, 0xc2, 0xe5, 0x89, 0xea, 0xc2, 0xe5, 0x8a, 0xea, 0xc2, - 0xe5, 0x89, 0xea, 0xc2, 0xe6, 0x8a, 0xea, 0xc2, 0xe6, 0x89, 0xea, 0xc2, - 0xe6, 0x8a, 0xea, 0xc2, 0xe6, 0x89, 0xea, 0xc2, 0xe7, 0x8a, 0xea, 0xc2, - 0xe7, 0x89, 0xea, 0xc2, 0xe7, 0x8a, 0xea, 0xc2, 0xe7, 0x89, 0xea, 0xc2, - 0xe8, 0x8a, 0xea, 0xc2, 0xe8, 0x89, 0xea, 0xc2, 0xe8, 0x8a, 0xea, 0xc2, - 0xe8, 0x89, 0xea, 0xc2, 0xe9, 0x8a, 0xea, 0xc2, 0xe9, 0x89, 0xea, 0xc2, - 0xe9, 0x8a, 0xea, 0xc2, 0xe9, 0x89, 0xea, 0xc2, 0xea, 0x89, 0xea, 0xc2, - 0xe9, 0x89, 0xea, 0xc2, 0xea, 0x89, 0xea, 0xc2, 0xe9, 0x89, 0xeb, 0xc2, - 0xea, 0x89, 0xeb, 0xc2, 0xe9, 0x89, 0xeb, 0xc2, 0xea, 0x89, 0xeb, 0xc2, - 0xe9, 0x89, 0xec, 0xc4, 0xec, 0x89, 0xec, 0xc4, 0xeb, 0x89, 0xec, 0xc4, - 0xec, 0x89, 0xec, 0xc4, 0xeb, 0x89, 0xec, 0xc4, 0xec, 0x89, 0xed, 0xc5, - 0xed, 0x89, 0xed, 0xc5, 0xed, 0x89, 0xed, 0xc5, 0xed, 0x89, 0xed, 0xc5, - 0xed, 0x89, 0xee, 0xc5, 0xee, 0x89, 0xee, 0xc5, 0xee, 0x89, 0xee, 0xc5, - 0xee, 0x89, 0xee, 0xc5, 0xee, 0x89, 0xef, 0xc5, 0xef, 0x89, 0xef, 0xc5, - 0xef, 0x89, 0xef, 0xc5, 0xef, 0x89, 0xef, 0xc5, 0xef, 0x89, 0xf0, 0xc5, - 0xef, 0x89, 0xf0, 0xc5, 0xef, 0x89, 0xf0, 0xc5, 0xef, 0x89, 0xf0, 0xc5, - 0xef, 0x89, 0xf1, 0xc5, 0xef, 0x89, 0xf1, 0xc6, 0xf1, 0x89, 0xf1, 0xc6, - 0xf1, 0x89, 0xf1, 0xc6, 0xf1, 0x89, 0xf2, 0xc6, 0xf2, 0x89, 0xf2, 0xc6, - 0xf2, 0x89, 0xf2, 0xc6, 0xf2, 0x89, 0xf2, 0xc3, 0xf5, 0x89, 0xf2, 0xc2, - 0xf5, 0x89, 0xf3, 0xc3, 0xf5, 0x89, 0xf3, 0xc2, 0xf5, 0x89, 0xf3, 0xc3, - 0xf5, 0x89, 0xf3, 0xc2, 0xf5, 0x89, 0xf4, 0xc3, 0xf5, 0x89, 0xf4, 0xc2, - 0xf5, 0x89, 0xf4, 0xc2, 0xf5, 0x89, 0xf4, 0xc2, 0xf5, 0x89, 0xf5, 0xc2, - 0xf5, 0x89, 0xf4, 0xc2, 0xf5, 0x89, 0xf5, 0xc2, 0xf5, 0x89, 0xf4, 0xc2, - 0xf5, 0x89, 0xf5, 0xc2, 0xf5, 0x89, 0xf4, 0xc2, 0xf6, 0x89, 0xf5, 0xc2, - 0xf6, 0x89, 0xf4, 0xc2, 0xf6, 0x89, 0xf5, 0xc2, 0xf6, 0x89, 0xf8, 0xc2, - 0xf7, 0x8b, 0xf8, 0xc2, 0xf7, 0x89, 0xf8, 0xc2, 0xf7, 0x8b, 0xf8, 0xc2, - 0xf7, 0x89, 0xf8, 0xc2, 0xf8, 0x89, 0xf8, 0xc2, 0xf8, 0x89, 0xf8, 0xc2, - 0xf8, 0x89, 0xf8, 0xc2, 0xf8, 0x89, 0xf8, 0xc2, 0xf8, 0x89, 0xf9, 0xc2, - 0xf8, 0x89, 0xf9, 0xc2, 0xf8, 0x89, 0xf9, 0xc1, 0xf8, 0x89, 0xf9, 0xc2, - 0xf8, 0x89, 0xfa, 0xc1, 0xf8, 0x89, 0xfa, 0xc2, 0xf8, 0x89, 0xfa, 0xc1, - 0xf8, 0x89, 0xfa, 0xc2, 0xf8, 0x89, 0xfa, 0xc1, 0xf8, 0x89, 0xfb, 0xc2, - 0xf8, 0x89, 0xfb, 0xc1, 0xf8, 0x89, 0xfb, 0xc2, 0xf8, 0x89, 0xfb, 0xc1, - 0xf8, 0x89, 0xfc, 0xc2, 0xf8, 0x89, 0xfc, 0xc1, 0xf8, 0x89, 0xfc, 0xbf, - 0xf8, 0x89, 0xfc, 0xc1, 0xf8, 0x89, 0xfc, 0xbf, 0xf8, 0x89, 0xfd, 0xc1, - 0xf8, 0x89, 0xfd, 0xbf, 0xf8, 0x89, 0xfd, 0xc1, 0xf8, 0x89, 0xfd, 0xbf, - 0xf8, 0x89, 0xfe, 0xc1, 0xf8, 0x89, 0xfe, 0xbf, 0xf8, 0x89, 0xfe, 0xc1, - 0xf8, 0x89, 0xfe, 0xbf, 0xf8, 0x89, 0xfe, 0xc1, 0xf8, 0x89, 0xff, 0xbf, - 0xf8, 0x89, 0xff, 0xc1, 0xf8, 0x89, 0x03, 0xc9, 0x8f, 0x8a, 0x0a, 0xc9, - 0x8f, 0x8a, 0x0f, 0xc9, 0x8f, 0x8a, 0x14, 0xc7, 0x8f, 0x8a, 0x17, 0xc9, - 0x8f, 0x8a, 0x1b, 0xc7, 0x8f, 0x8a, 0x1e, 0xc9, 0x8f, 0x8a, 0x20, 0xc7, - 0x8f, 0x8a, 0x23, 0xc9, 0x8f, 0x8a, 0x25, 0xc7, 0x8f, 0x8a, 0x27, 0xc9, - 0x8f, 0x8a, 0x29, 0xc7, 0x8f, 0x8a, 0x2b, 0xc9, 0x8f, 0x8a, 0x2d, 0xc7, - 0x8f, 0x8a, 0x2f, 0xc9, 0x8f, 0x8a, 0x31, 0xc7, 0x8f, 0x8a, 0x32, 0xc9, - 0x8f, 0x8a, 0x34, 0xc7, 0x8f, 0x8a, 0x35, 0xc9, 0x8f, 0x8a, 0x37, 0xc7, - 0x8f, 0x8a, 0x38, 0xc9, 0x8f, 0x8a, 0x3a, 0xc7, 0x8f, 0x8a, 0x3b, 0xc9, - 0x8f, 0x8a, 0x3c, 0xc7, 0x8f, 0x8a, 0x3e, 0xc9, 0x8f, 0x8a, 0x3f, 0xc7, - 0x8f, 0x8a, 0x40, 0xc9, 0x8f, 0x8a, 0x42, 0xc7, 0x8f, 0x8a, 0x43, 0xc9, - 0x8f, 0x8a, 0x44, 0xc7, 0x8f, 0x8a, 0x45, 0xc9, 0x8f, 0x8a, 0x46, 0xc7, - 0x8f, 0x8a, 0x47, 0xc9, 0x8f, 0x8a, 0x48, 0xc7, 0x8f, 0x8a, 0x49, 0xc9, - 0x8f, 0x8a, 0x4a, 0xc7, 0x8f, 0x8a, 0x4b, 0xc9, 0x8f, 0x8a, 0x4c, 0xc7, - 0x8f, 0x8a, 0x4d, 0xc9, 0x8f, 0x8a, 0x4e, 0xc7, 0x8f, 0x8a, 0x4f, 0xc9, - 0x8f, 0x8a, 0x50, 0xc7, 0x8f, 0x8a, 0x51, 0xc9, 0x8f, 0x8a, 0x52, 0xc7, - 0x8f, 0x8a, 0x53, 0xc9, 0x8f, 0x8a, 0x54, 0xc7, 0x8f, 0x8a, 0x55, 0xc5, - 0x90, 0x8a, 0x56, 0xc7, 0x8f, 0x8a, 0x57, 0xc5, 0x90, 0x8a, 0x58, 0xc7, - 0x8f, 0x8a, 0x58, 0xc5, 0x90, 0x8a, 0x59, 0xc7, 0x8f, 0x8a, 0x5a, 0xc5, - 0x90, 0x8a, 0x5b, 0xc7, 0x8f, 0x8a, 0x5c, 0xc5, 0x90, 0x8a, 0x5d, 0xc7, - 0x8f, 0x8a, 0x5d, 0xc5, 0x90, 0x8a, 0x5e, 0xc7, 0x8f, 0x8a, 0x5f, 0xc5, - 0x90, 0x8a, 0x60, 0xc7, 0x8f, 0x8a, 0x60, 0xc5, 0x90, 0x8a, 0x61, 0xc7, - 0x8f, 0x8a, 0x62, 0xc5, 0x90, 0x8a, 0x63, 0xc7, 0x8f, 0x8a, 0x63, 0xc5, - 0x90, 0x8a, 0x64, 0xc7, 0x8f, 0x8a, 0x65, 0xc5, 0x90, 0x8a, 0x66, 0xc7, - 0x8f, 0x8a, 0x66, 0xc5, 0x90, 0x8a, 0x67, 0xc7, 0x8f, 0x8a, 0x68, 0xc5, - 0x90, 0x8a, 0x68, 0xc7, 0x8f, 0x8a, 0x69, 0xc5, 0x90, 0x8a, 0x6a, 0xc7, - 0x8f, 0x8a, 0x6a, 0xc5, 0x90, 0x8a, 0x6b, 0xc7, 0x8f, 0x8a, 0x6c, 0xc5, - 0x90, 0x8a, 0x6c, 0xc7, 0x8f, 0x8a, 0x6d, 0xc5, 0x90, 0x8a, 0x6e, 0xc3, - 0x90, 0x8a, 0x6e, 0xc5, 0x90, 0x8a, 0x6f, 0xc3, 0x90, 0x8a, 0x70, 0xc5, - 0x90, 0x8a, 0x70, 0xc3, 0x90, 0x8a, 0x71, 0xc5, 0x90, 0x8a, 0x72, 0xc3, - 0x90, 0x8a, 0x72, 0xc5, 0x90, 0x8a, 0x73, 0xc3, 0x90, 0x8a, 0x73, 0xc5, - 0x90, 0x8a, 0x74, 0xc3, 0x90, 0x8a, 0x75, 0xc5, 0x90, 0x8a, 0x75, 0xc3, - 0x90, 0x8a, 0x76, 0xc5, 0x90, 0x8a, 0x76, 0xc3, 0x90, 0x8a, 0x77, 0xc5, - 0x90, 0x8a, 0x78, 0xc3, 0x90, 0x8a, 0x78, 0xc5, 0x90, 0x8a, 0x79, 0xc3, - 0x90, 0x8a, 0x79, 0xc5, 0x90, 0x8a, 0x7a, 0xc3, 0x90, 0x8a, 0x7a, 0xc5, - 0x90, 0x8a, 0x7b, 0xc3, 0x90, 0x8a, 0x7c, 0xc5, 0x90, 0x8a, 0x7c, 0xc3, - 0x90, 0x8a, 0x7d, 0xc5, 0x90, 0x8a, 0x7d, 0xc3, 0x90, 0x8a, 0x7e, 0xc5, - 0x90, 0x8a, 0x7e, 0xc3, 0x90, 0x8a, 0x7f, 0xc5, 0x90, 0x8a, 0x7f, 0xc3, - 0x90, 0x8a, 0x80, 0xc5, 0x90, 0x8a, 0x81, 0xc3, 0x90, 0x8a, 0x81, 0xc5, - 0x90, 0x8a, 0x82, 0xc3, 0x90, 0x8a, 0x82, 0xc5, 0x90, 0x8a, 0x83, 0xc3, - 0x90, 0x8a, 0x83, 0xc5, 0x90, 0x8a, 0x84, 0xc3, 0x90, 0x8a, 0x84, 0xc5, - 0x90, 0x8a, 0x85, 0xc3, 0x90, 0x8a, 0x85, 0xc2, 0x91, 0x8a, 0x86, 0xc3, - 0x90, 0x8a, 0x86, 0xc2, 0x91, 0x8a, 0x87, 0xc3, 0x90, 0x8a, 0x87, 0xc2, - 0x91, 0x8a, 0x88, 0xc3, 0x90, 0x8a, 0x88, 0xc2, 0x91, 0x8a, 0x89, 0xc3, - 0x90, 0x8a, 0x89, 0xc2, 0x91, 0x8a, 0x8a, 0xc3, 0x90, 0x8a, 0x8a, 0xc2, - 0x91, 0x8a, 0x8b, 0xc3, 0x90, 0x8a, 0x8b, 0xc2, 0x91, 0x8a, 0x8c, 0xc3, - 0x90, 0x8a, 0x8c, 0xc2, 0x91, 0x8a, 0x8d, 0xc3, 0x90, 0x8a, 0x8d, 0xc2, - 0x91, 0x8a, 0x8e, 0xc3, 0x90, 0x8a, 0x8e, 0xc2, 0x91, 0x8a, 0x8e, 0xc3, - 0x90, 0x8a, 0x8f, 0xc2, 0x91, 0x8a, 0x8f, 0xc3, 0x90, 0x8a, 0x90, 0xc2, - 0x91, 0x8a, 0x90, 0xc3, 0x90, 0x8a, 0x90, 0xc2, 0x91, 0x8a, 0x90, 0xc2, - 0x91, 0x8a, 0x90, 0xc2, 0x92, 0x8a, 0x90, 0xc2, 0x92, 0x8a, 0x94, 0xc2, - 0x93, 0x8a, 0x94, 0xc2, 0x93, 0x8a, 0x94, 0xc2, 0x94, 0x8a, 0x94, 0xc1, - 0x94, 0x8a, 0x94, 0xc2, 0x94, 0x8a, 0x95, 0xc1, 0x94, 0x8a, 0x95, 0xc2, - 0x94, 0x8a, 0x96, 0xc1, 0x94, 0x8a, 0x96, 0xc2, 0x94, 0x8a, 0x97, 0xc1, - 0x94, 0x8a, 0x97, 0xc2, 0x94, 0x8a, 0x98, 0xc1, 0x94, 0x8a, 0x98, 0xc2, - 0x94, 0x8a, 0x98, 0xc1, 0x94, 0x8a, 0x99, 0xc2, 0x94, 0x8a, 0x99, 0xc1, - 0x94, 0x8a, 0x9a, 0xc2, 0x94, 0x8a, 0x9a, 0xc1, 0x94, 0x8a, 0x9a, 0xc2, - 0x94, 0x8a, 0x9b, 0xc1, 0x94, 0x8a, 0x9b, 0xc0, 0x94, 0x8a, 0x9c, 0xc1, - 0x94, 0x8a, 0x9c, 0xbc, 0x9c, 0x8a, 0x9d, 0xbc, 0x9d, 0x8a, 0x9d, 0xbc, - 0x9d, 0x8a, 0x9d, 0xbd, 0xa1, 0x8a, 0x9e, 0xbd, 0xa1, 0x8a, 0x9e, 0xbd, - 0xa1, 0x8a, 0x9f, 0xbd, 0xa1, 0x8a, 0x9f, 0xc3, 0xa5, 0x8a, 0x9f, 0xc2, - 0xa6, 0x8a, 0xa0, 0xc3, 0xa5, 0x8a, 0xa0, 0xc2, 0xa6, 0x8a, 0xa1, 0xc3, - 0xa5, 0x8a, 0xa1, 0xc2, 0xa6, 0x8a, 0xa1, 0xc3, 0xa5, 0x8a, 0xa2, 0xc2, - 0xa6, 0x8a, 0xa2, 0xc3, 0xa5, 0x8a, 0xa3, 0xc2, 0xa6, 0x8a, 0xa3, 0xc3, - 0xa5, 0x8a, 0xa3, 0xc2, 0xa6, 0x8a, 0xa4, 0xc3, 0xa5, 0x8a, 0xa4, 0xc2, - 0xa6, 0x8a, 0xa5, 0xc3, 0xa5, 0x8a, 0xa5, 0xc2, 0xa6, 0x8a, 0xa5, 0xc2, - 0xa6, 0x8a, 0xa5, 0xc2, 0xa6, 0x8a, 0xa5, 0xc2, 0xa6, 0x8a, 0xa5, 0xc2, - 0xa6, 0x8a, 0xa5, 0xc2, 0xa7, 0x8a, 0xa5, 0xc2, 0xa7, 0x8a, 0xa5, 0xc2, - 0xa8, 0x8a, 0xa5, 0xc2, 0xa8, 0x8a, 0xa5, 0xc2, 0xa8, 0x8a, 0xa6, 0xc2, - 0xa9, 0x87, 0xa5, 0xc2, 0xa9, 0x8a, 0xa6, 0xc2, 0xaa, 0x87, 0xa5, 0xc2, - 0xaa, 0x8a, 0xa6, 0xc2, 0xaa, 0x87, 0xa5, 0xc2, 0xab, 0x8a, 0xa6, 0xc2, - 0xab, 0x87, 0xa5, 0xc2, 0xab, 0x8a, 0xa6, 0xc2, 0xac, 0x87, 0xa5, 0xc2, - 0xac, 0x8a, 0xa6, 0xc2, 0xac, 0x87, 0xa5, 0xc2, 0xad, 0x8a, 0xa6, 0xc2, - 0xad, 0x87, 0xa5, 0xc2, 0xae, 0x8a, 0xa6, 0xc2, 0xae, 0x87, 0xa5, 0xc2, - 0xae, 0x8a, 0xa6, 0xc2, 0xaf, 0x87, 0xa5, 0xc2, 0xaf, 0x8a, 0xa6, 0xc2, - 0xaf, 0x87, 0xa5, 0xc2, 0xb0, 0x8a, 0xa6, 0xc2, 0xb0, 0x87, 0xa9, 0xc2, - 0xb0, 0x7f, 0xa6, 0xc2, 0xb1, 0x87, 0xa9, 0xc2, 0xb1, 0x7f, 0xa9, 0xc2, - 0xb2, 0x7f, 0xa9, 0xc2, 0xb2, 0x7f, 0xaa, 0xc2, 0xb2, 0x7e, 0xa9, 0xc2, - 0xb3, 0x7f, 0xaa, 0xc2, 0xb3, 0x7e, 0xa9, 0xc2, 0xb3, 0x7f, 0xaa, 0xc2, - 0xb4, 0x7e, 0xa9, 0xc2, 0xb4, 0x7f, 0xaa, 0xc2, 0xb4, 0x7e, 0xa9, 0xc2, - 0xb5, 0x7f, 0xaa, 0xc2, 0xb5, 0x7e, 0xa9, 0xc2, 0xb5, 0x7f, 0xaa, 0xc2, - 0xb6, 0x7e, 0xa9, 0xc2, 0xb6, 0x7f, 0xaa, 0xc2, 0xb6, 0x7e, 0xa9, 0xc2, - 0xb7, 0x7f, 0xaa, 0xc2, 0xb7, 0x7e, 0xa9, 0xc2, 0xb7, 0x7f, 0xaa, 0xc2, - 0xb8, 0x7e, 0xbb, 0xc2, 0xb8, 0x73, 0xbc, 0xc2, 0xb8, 0x73, 0xbb, 0xc2, - 0xb9, 0x73, 0xbc, 0xc2, 0xb9, 0x73, 0xbb, 0xc2, 0xb9, 0x73, 0xbc, 0xc2, - 0xba, 0x73, 0xbb, 0xc2, 0xba, 0x73, 0xbc, 0xc2, 0xba, 0x73, 0xbb, 0xc2, - 0xbb, 0x73, 0xbf, 0xc2, 0xbb, 0x74, 0xbf, 0xc2, 0xbb, 0x74, 0xbf, 0xc2, - 0xbc, 0x74, 0xbf, 0xc2, 0xbc, 0x74, 0xbf, 0xc2, 0xbc, 0x74, 0xbf, 0xc2, - 0xbd, 0x74, 0xbf, 0xc2, 0xbd, 0x74, 0xbf, 0xc2, 0xbd, 0x74, 0xbf, 0xc2, - 0xbe, 0x74, 0xbf, 0xc2, 0xbe, 0x74, 0xbf, 0xc2, 0xbe, 0x74, 0xc2, 0xc2, - 0xbf, 0x75, 0xc3, 0xc2, 0xbf, 0x75, 0xc2, 0xc2, 0xbf, 0x75, 0xc3, 0xc2, - 0xc0, 0x75, 0xc2, 0xc2, 0xc0, 0x75, 0xc3, 0xc2, 0xc0, 0x75, 0xc2, 0xc2, - 0xc1, 0x75, 0xc3, 0xc2, 0xc1, 0x75, 0xc2, 0xc2, 0xc1, 0x75, 0xc3, 0xc2, - 0xc1, 0x75, 0xc2, 0xc2, 0xc2, 0x75, 0xc3, 0xc2, 0xc2, 0x75, 0xc6, 0xc2, - 0xc2, 0x76, 0xc6, 0xc2, 0xc3, 0x76, 0xc6, 0xc2, 0xc3, 0x76, 0xc6, 0xc2, - 0xc3, 0x76, 0xc6, 0xc2, 0xc4, 0x76, 0xc6, 0xc2, 0xc4, 0x76, 0xc6, 0xc2, - 0xc4, 0x76, 0xc6, 0xc2, 0xc5, 0x76, 0xc6, 0xc2, 0xc5, 0x76, 0xc6, 0xc2, - 0xc5, 0x76, 0xc6, 0xc2, 0xc6, 0x76, 0xc9, 0xc2, 0xc6, 0x77, 0xca, 0xc2, - 0xc6, 0x77, 0xc9, 0xc2, 0xc6, 0x77, 0xca, 0xc2, 0xc7, 0x77, 0xc9, 0xc2, - 0xc7, 0x77, 0xca, 0xc2, 0xc7, 0x77, 0xc9, 0xc2, 0xc8, 0x77, 0xca, 0xc2, - 0xc8, 0x77, 0xc9, 0xc2, 0xc8, 0x77, 0xca, 0xc2, 0xc9, 0x77, 0xc9, 0xc2, - 0xc9, 0x77, 0xcd, 0xc2, 0xc9, 0x78, 0xcd, 0xc2, 0xc9, 0x78, 0xcd, 0xc2, - 0xca, 0x78, 0xcd, 0xc2, 0xca, 0x78, 0xcd, 0xc2, 0xca, 0x78, 0xcd, 0xc2, - 0xcb, 0x78, 0xcd, 0xc2, 0xcb, 0x78, 0xcd, 0xc2, 0xcb, 0x78, 0xd4, 0xc2, - 0xcc, 0x93, 0xd4, 0xc2, 0xcc, 0x93, 0xd4, 0xc2, 0xcc, 0x93, 0xd4, 0xc2, - 0xcc, 0x93, 0xd4, 0xc2, 0xcd, 0x93, 0xd4, 0xc2, 0xcd, 0x93, 0xd4, 0xc2, - 0xcd, 0x93, 0xd4, 0xc2, 0xce, 0x93, 0xd4, 0xc2, 0xce, 0x93, 0xd4, 0xc2, - 0xce, 0x93, 0xd4, 0xc2, 0xce, 0x93, 0xd4, 0xc2, 0xcf, 0x93, 0xd4, 0xc2, - 0xcf, 0x93, 0xd4, 0xc2, 0xcf, 0x93, 0xd4, 0xc2, 0xd0, 0x93, 0xd4, 0xc2, - 0xd0, 0x93, 0xd4, 0xc2, 0xd0, 0x93, 0xd4, 0xc2, 0xd0, 0x93, 0xd4, 0xc2, - 0xd1, 0x93, 0xd4, 0xc2, 0xd1, 0x93, 0xd4, 0xc2, 0xd1, 0x93, 0xd4, 0xc2, - 0xd2, 0x93, 0xd4, 0xc2, 0xd2, 0x93, 0xd4, 0xc2, 0xd2, 0x93, 0xd4, 0xc2, - 0xd2, 0x93, 0xd4, 0xc2, 0xd3, 0x93, 0xd4, 0xc2, 0xd3, 0x93, 0xd4, 0xc2, - 0xd3, 0x93, 0xd4, 0xc2, 0xd4, 0x93, 0xd4, 0xc2, 0xd4, 0x93, 0xd4, 0xc2, - 0xd4, 0x93, 0xd4, 0xc2, 0xd4, 0x93, 0xd5, 0xc2, 0xd5, 0x93, 0xd4, 0xc2, - 0xd5, 0x93, 0xd5, 0xc2, 0xd5, 0x93, 0xd4, 0xc2, 0xd6, 0x93, 0xd5, 0xc2, - 0xd6, 0x93, 0xd4, 0xc2, 0xd6, 0x93, 0xd5, 0xc2, 0xd6, 0x93, 0xd4, 0xc2, - 0xd7, 0x93, 0xd5, 0xc2, 0xd7, 0x93, 0xd7, 0xc2, 0xd7, 0x94, 0xd7, 0xc2, - 0xd7, 0x94, 0xd8, 0xc2, 0xd8, 0x94, 0xd7, 0xc2, 0xd8, 0x94, 0xd8, 0xc2, - 0xd8, 0x94, 0xd7, 0xc2, 0xd9, 0x94, 0xd8, 0xc2, 0xd9, 0x94, 0xd7, 0xc2, - 0xd9, 0x94, 0xd8, 0xc2, 0xd9, 0x94, 0xd7, 0xc2, 0xda, 0x94, 0xd8, 0xc2, - 0xda, 0x94, 0xda, 0xc2, 0xda, 0x95, 0xda, 0xc2, 0xda, 0x95, 0xdb, 0xc2, - 0xdb, 0x95, 0xda, 0xc2, 0xdb, 0x95, 0xdb, 0xc2, 0xdb, 0x95, 0xda, 0xc2, - 0xdb, 0x95, 0xdb, 0xc2, 0xdc, 0x95, 0xda, 0xc2, 0xdc, 0x95, 0xdb, 0xc2, - 0xdc, 0x95, 0xda, 0xc2, 0xdd, 0x95, 0xdb, 0xc2, 0xdd, 0x95, 0xdd, 0xc2, - 0xdd, 0x96, 0xdd, 0xc2, 0xdd, 0x96, 0xde, 0xc2, 0xde, 0x96, 0xdd, 0xc2, - 0xde, 0x96, 0xde, 0xc2, 0xde, 0x96, 0xdd, 0xc2, 0xde, 0x96, 0xde, 0xc2, - 0xdf, 0x96, 0xdd, 0xc2, 0xdf, 0x96, 0xde, 0xc2, 0xdf, 0x96, 0xdd, 0xc2, - 0xdf, 0x96, 0xde, 0xc2, 0xe0, 0x96, 0xe0, 0xc2, 0xe0, 0x97, 0xe0, 0xc2, - 0xe0, 0x97, 0xe1, 0xc2, 0xe1, 0x97, 0xe0, 0xc2, 0xe1, 0x97, 0xe1, 0xc2, - 0xe1, 0x97, 0xe0, 0xc2, 0xe1, 0x97, 0xe1, 0xc2, 0xe2, 0x97, 0xe0, 0xc2, - 0xe2, 0x97, 0xe1, 0xc2, 0xe2, 0x97, 0xe0, 0xc2, 0xe2, 0x97, 0xe1, 0xc2, - 0xe3, 0x97, 0xe0, 0xc2, 0xe3, 0x97, 0xea, 0xc2, 0xe3, 0x8a, 0xea, 0xc2, - 0xe3, 0x8a, 0xea, 0xc2, 0xe4, 0x8a, 0xea, 0xc2, 0xe4, 0x8a, 0xea, 0xc2, - 0xe4, 0x8a, 0xea, 0xc2, 0xe4, 0x8a, 0xea, 0xc2, 0xe5, 0x8a, 0xea, 0xc2, - 0xe5, 0x8a, 0xea, 0xc2, 0xe5, 0x8a, 0xea, 0xc2, 0xe5, 0x8a, 0xea, 0xc2, - 0xe6, 0x8a, 0xea, 0xc2, 0xe6, 0x8a, 0xea, 0xc2, 0xe6, 0x8a, 0xea, 0xc2, - 0xe6, 0x8a, 0xea, 0xc2, 0xe7, 0x8a, 0xea, 0xc2, 0xe7, 0x8a, 0xea, 0xc2, - 0xe7, 0x8a, 0xea, 0xc2, 0xe7, 0x8a, 0xea, 0xc2, 0xe8, 0x8a, 0xea, 0xc2, - 0xe8, 0x8a, 0xea, 0xc2, 0xe8, 0x8a, 0xea, 0xc2, 0xe8, 0x8a, 0xea, 0xc2, - 0xe9, 0x8a, 0xea, 0xc2, 0xe9, 0x8a, 0xea, 0xc2, 0xe9, 0x8a, 0xea, 0xc2, - 0xe9, 0x8a, 0xea, 0xc1, 0xea, 0x8a, 0xea, 0xc2, 0xe9, 0x8a, 0xea, 0xc1, - 0xea, 0x8a, 0xea, 0xc2, 0xe9, 0x8a, 0xeb, 0xc1, 0xea, 0x8a, 0xeb, 0xc2, - 0xe9, 0x8a, 0xeb, 0xc1, 0xea, 0x8a, 0xeb, 0xc2, 0xe9, 0x8a, 0xec, 0xc5, - 0xec, 0x8a, 0xec, 0xc5, 0xec, 0x8a, 0xec, 0xc5, 0xec, 0x8a, 0xec, 0xc5, - 0xec, 0x8a, 0xec, 0xc5, 0xec, 0x8a, 0xed, 0xc5, 0xed, 0x8a, 0xed, 0xc5, - 0xed, 0x8a, 0xed, 0xc5, 0xed, 0x8a, 0xed, 0xc5, 0xed, 0x8a, 0xee, 0xc5, - 0xed, 0x8a, 0xee, 0xc5, 0xed, 0x8a, 0xee, 0xc5, 0xed, 0x8a, 0xee, 0xc5, - 0xee, 0x8a, 0xef, 0xc5, 0xef, 0x8a, 0xef, 0xc5, 0xef, 0x8a, 0xef, 0xc5, - 0xef, 0x8a, 0xef, 0xc5, 0xef, 0x8a, 0xf0, 0xc5, 0xf0, 0x8a, 0xf0, 0xc5, - 0xf0, 0x8a, 0xf0, 0xc5, 0xf0, 0x8a, 0xf0, 0xc5, 0xf0, 0x8a, 0xf1, 0xc5, - 0xf1, 0x8a, 0xf1, 0xc5, 0xf1, 0x8a, 0xf1, 0xc5, 0xf1, 0x8a, 0xf1, 0xc5, - 0xf1, 0x8a, 0xf2, 0xc5, 0xf1, 0x8a, 0xf2, 0xc5, 0xf1, 0x8a, 0xf2, 0xc5, - 0xf1, 0x8a, 0xf2, 0xc3, 0xf5, 0x8a, 0xf2, 0xc2, 0xf5, 0x8a, 0xf3, 0xc3, - 0xf5, 0x8a, 0xf3, 0xc2, 0xf5, 0x8a, 0xf3, 0xc3, 0xf5, 0x8a, 0xf3, 0xc2, - 0xf5, 0x8a, 0xf4, 0xc3, 0xf5, 0x8a, 0xf4, 0xc2, 0xf5, 0x8a, 0xf4, 0xc2, - 0xf5, 0x8a, 0xf4, 0xc2, 0xf5, 0x8a, 0xf5, 0xc2, 0xf5, 0x8a, 0xf4, 0xc2, - 0xf5, 0x8a, 0xf5, 0xc2, 0xf5, 0x8a, 0xf4, 0xc2, 0xf5, 0x8a, 0xf5, 0xc2, - 0xf5, 0x8a, 0xf4, 0xc2, 0xf6, 0x8a, 0xf5, 0xc2, 0xf6, 0x8a, 0xf4, 0xc2, - 0xf6, 0x8a, 0xf5, 0xc2, 0xf6, 0x8a, 0xf8, 0xc2, 0xf7, 0x8c, 0xf8, 0xc2, - 0xf7, 0x8a, 0xf8, 0xc2, 0xf7, 0x8c, 0xf8, 0xc2, 0xf7, 0x8a, 0xf8, 0xc2, - 0xf8, 0x8a, 0xf8, 0xc2, 0xf8, 0x8a, 0xf8, 0xc2, 0xf8, 0x8a, 0xf8, 0xc2, - 0xf8, 0x8a, 0xf8, 0xc2, 0xf8, 0x8a, 0xf9, 0xc2, 0xf8, 0x8a, 0xf9, 0xc2, - 0xf8, 0x8a, 0xf9, 0xc1, 0xf8, 0x8a, 0xf9, 0xc2, 0xf8, 0x8a, 0xfa, 0xc1, - 0xf8, 0x8a, 0xfa, 0xc2, 0xf8, 0x8a, 0xfa, 0xc1, 0xf8, 0x8a, 0xfa, 0xc2, - 0xf8, 0x8a, 0xfa, 0xc1, 0xf8, 0x8a, 0xfb, 0xc2, 0xf8, 0x8a, 0xfb, 0xc1, - 0xf8, 0x8a, 0xfb, 0xc2, 0xf8, 0x8a, 0xfb, 0xc1, 0xf8, 0x8a, 0xfc, 0xc2, - 0xf8, 0x8a, 0xfc, 0xc1, 0xf8, 0x8a, 0xfc, 0xc2, 0xf8, 0x8a, 0xfc, 0xc1, - 0xf8, 0x8a, 0xfc, 0xc2, 0xf8, 0x8a, 0xfd, 0xc1, 0xf8, 0x8a, 0xfd, 0xc2, - 0xf8, 0x8a, 0xfd, 0xc1, 0xf8, 0x8a, 0xfd, 0xc2, 0xf8, 0x8a, 0xfe, 0xc1, - 0xf8, 0x8a, 0xfe, 0xbf, 0xf8, 0x8a, 0xfe, 0xc1, 0xf8, 0x8a, 0xfe, 0xbf, - 0xf8, 0x8a, 0xfe, 0xc1, 0xf8, 0x8a, 0xff, 0xbf, 0xf8, 0x8a, 0xff, 0xc1, - 0xf8, 0x8a, 0x03, 0xc9, 0x8f, 0x8a, 0x0a, 0xc9, 0x8f, 0x8a, 0x0f, 0xc9, - 0x8f, 0x8a, 0x14, 0xcb, 0x8e, 0x8a, 0x17, 0xc9, 0x8f, 0x8a, 0x1b, 0xcb, - 0x8e, 0x8a, 0x1e, 0xc9, 0x8f, 0x8a, 0x20, 0xcb, 0x8e, 0x8a, 0x23, 0xc9, - 0x8f, 0x8a, 0x25, 0xc7, 0x8f, 0x8a, 0x27, 0xc9, 0x8f, 0x8a, 0x29, 0xc7, - 0x8f, 0x8a, 0x2b, 0xc9, 0x8f, 0x8a, 0x2d, 0xc7, 0x8f, 0x8a, 0x2f, 0xc9, - 0x8f, 0x8a, 0x31, 0xc7, 0x8f, 0x8a, 0x32, 0xc9, 0x8f, 0x8a, 0x34, 0xc7, - 0x8f, 0x8a, 0x35, 0xc9, 0x8f, 0x8a, 0x37, 0xc7, 0x8f, 0x8a, 0x38, 0xc9, - 0x8f, 0x8a, 0x3a, 0xc7, 0x8f, 0x8a, 0x3b, 0xc9, 0x8f, 0x8a, 0x3c, 0xc7, - 0x8f, 0x8a, 0x3e, 0xc9, 0x8f, 0x8a, 0x3f, 0xc7, 0x8f, 0x8a, 0x40, 0xc9, - 0x8f, 0x8a, 0x42, 0xc7, 0x8f, 0x8a, 0x43, 0xc9, 0x8f, 0x8a, 0x44, 0xc7, - 0x8f, 0x8a, 0x45, 0xc9, 0x8f, 0x8a, 0x46, 0xc7, 0x8f, 0x8a, 0x47, 0xc9, - 0x8f, 0x8a, 0x48, 0xc7, 0x8f, 0x8a, 0x49, 0xc9, 0x8f, 0x8a, 0x4a, 0xc7, - 0x8f, 0x8a, 0x4b, 0xc9, 0x8f, 0x8a, 0x4c, 0xc7, 0x8f, 0x8a, 0x4d, 0xc5, - 0x90, 0x8a, 0x4e, 0xc7, 0x8f, 0x8a, 0x4f, 0xc5, 0x90, 0x8a, 0x50, 0xc7, - 0x8f, 0x8a, 0x51, 0xc5, 0x90, 0x8a, 0x52, 0xc7, 0x8f, 0x8a, 0x53, 0xc5, - 0x90, 0x8a, 0x54, 0xc7, 0x8f, 0x8a, 0x55, 0xc5, 0x90, 0x8a, 0x56, 0xc7, - 0x8f, 0x8a, 0x57, 0xc5, 0x90, 0x8a, 0x58, 0xc7, 0x8f, 0x8a, 0x58, 0xc5, - 0x90, 0x8a, 0x59, 0xc7, 0x8f, 0x8a, 0x5a, 0xc5, 0x90, 0x8a, 0x5b, 0xc7, - 0x8f, 0x8a, 0x5c, 0xc5, 0x90, 0x8a, 0x5d, 0xc7, 0x8f, 0x8a, 0x5d, 0xc5, - 0x90, 0x8a, 0x5e, 0xc7, 0x8f, 0x8a, 0x5f, 0xc5, 0x90, 0x8a, 0x60, 0xc7, - 0x8f, 0x8a, 0x60, 0xc5, 0x90, 0x8a, 0x61, 0xc7, 0x8f, 0x8a, 0x62, 0xc5, - 0x90, 0x8a, 0x63, 0xc7, 0x8f, 0x8a, 0x63, 0xc5, 0x90, 0x8a, 0x64, 0xc7, - 0x8f, 0x8a, 0x65, 0xc5, 0x90, 0x8a, 0x66, 0xc7, 0x8f, 0x8a, 0x66, 0xc5, - 0x90, 0x8a, 0x67, 0xc7, 0x8f, 0x8a, 0x68, 0xc5, 0x90, 0x8a, 0x68, 0xc7, - 0x8f, 0x8a, 0x69, 0xc5, 0x90, 0x8a, 0x6a, 0xc7, 0x8f, 0x8a, 0x6a, 0xc5, - 0x90, 0x8a, 0x6b, 0xc7, 0x8f, 0x8a, 0x6c, 0xc5, 0x90, 0x8a, 0x6c, 0xc7, - 0x8f, 0x8a, 0x6d, 0xc5, 0x90, 0x8a, 0x6e, 0xc3, 0x90, 0x8a, 0x6e, 0xc5, - 0x90, 0x8a, 0x6f, 0xc3, 0x90, 0x8a, 0x70, 0xc5, 0x90, 0x8a, 0x70, 0xc3, - 0x90, 0x8a, 0x71, 0xc5, 0x90, 0x8a, 0x72, 0xc3, 0x90, 0x8a, 0x72, 0xc5, - 0x90, 0x8a, 0x73, 0xc3, 0x90, 0x8a, 0x73, 0xc5, 0x90, 0x8a, 0x74, 0xc3, - 0x90, 0x8a, 0x75, 0xc5, 0x90, 0x8a, 0x75, 0xc3, 0x90, 0x8a, 0x76, 0xc5, - 0x90, 0x8a, 0x76, 0xc3, 0x90, 0x8a, 0x77, 0xc5, 0x90, 0x8a, 0x78, 0xc3, - 0x90, 0x8a, 0x78, 0xc5, 0x90, 0x8a, 0x79, 0xc3, 0x90, 0x8a, 0x79, 0xc5, - 0x90, 0x8a, 0x7a, 0xc3, 0x90, 0x8a, 0x7a, 0xc5, 0x90, 0x8a, 0x7b, 0xc3, - 0x90, 0x8a, 0x7c, 0xc5, 0x90, 0x8a, 0x7c, 0xc3, 0x90, 0x8a, 0x7d, 0xc5, - 0x90, 0x8a, 0x7d, 0xc3, 0x90, 0x8a, 0x7e, 0xc5, 0x90, 0x8a, 0x7e, 0xc3, - 0x90, 0x8a, 0x7f, 0xc5, 0x90, 0x8a, 0x7f, 0xc3, 0x90, 0x8a, 0x80, 0xc5, - 0x90, 0x8a, 0x81, 0xc3, 0x90, 0x8a, 0x81, 0xc5, 0x90, 0x8a, 0x82, 0xc3, - 0x90, 0x8a, 0x82, 0xc5, 0x90, 0x8a, 0x83, 0xc3, 0x90, 0x8a, 0x83, 0xc5, - 0x90, 0x8a, 0x84, 0xc3, 0x90, 0x8a, 0x84, 0xc5, 0x90, 0x8a, 0x85, 0xc3, - 0x90, 0x8a, 0x85, 0xc5, 0x90, 0x8a, 0x86, 0xc3, 0x90, 0x8a, 0x86, 0xc5, - 0x90, 0x8a, 0x87, 0xc3, 0x90, 0x8a, 0x87, 0xc5, 0x90, 0x8a, 0x88, 0xc3, - 0x90, 0x8a, 0x88, 0xc5, 0x90, 0x8a, 0x89, 0xc3, 0x90, 0x8a, 0x89, 0xc2, - 0x91, 0x8a, 0x8a, 0xc3, 0x90, 0x8a, 0x8a, 0xc2, 0x91, 0x8a, 0x8b, 0xc3, - 0x90, 0x8a, 0x8b, 0xc2, 0x91, 0x8a, 0x8c, 0xc3, 0x90, 0x8a, 0x8c, 0xc2, - 0x91, 0x8a, 0x8d, 0xc3, 0x90, 0x8a, 0x8d, 0xc2, 0x91, 0x8a, 0x8e, 0xc3, - 0x90, 0x8a, 0x8e, 0xc2, 0x91, 0x8a, 0x8e, 0xc3, 0x90, 0x8a, 0x8f, 0xc2, - 0x91, 0x8a, 0x8f, 0xc3, 0x90, 0x8a, 0x90, 0xc2, 0x91, 0x8a, 0x90, 0xc3, - 0x90, 0x8a, 0x90, 0xc2, 0x91, 0x8a, 0x90, 0xc2, 0x91, 0x8a, 0x90, 0xc2, - 0x92, 0x8a, 0x90, 0xc2, 0x92, 0x8a, 0x94, 0xc2, 0x93, 0x8a, 0x94, 0xc2, - 0x93, 0x8a, 0x94, 0xc2, 0x94, 0x8a, 0x94, 0xc2, 0x93, 0x8a, 0x94, 0xc2, - 0x94, 0x8a, 0x95, 0xc2, 0x93, 0x8a, 0x95, 0xc2, 0x94, 0x8a, 0x96, 0xc1, - 0x94, 0x8a, 0x96, 0xc2, 0x94, 0x8a, 0x97, 0xc1, 0x94, 0x8a, 0x97, 0xc2, - 0x94, 0x8a, 0x98, 0xc1, 0x94, 0x8a, 0x98, 0xc2, 0x94, 0x8a, 0x98, 0xc1, - 0x94, 0x8a, 0x99, 0xc2, 0x94, 0x8a, 0x99, 0xc1, 0x94, 0x8a, 0x9a, 0xc2, - 0x94, 0x8a, 0x9a, 0xc1, 0x94, 0x8a, 0x9a, 0xc2, 0x94, 0x8a, 0x9b, 0xc2, - 0x93, 0x8a, 0x9b, 0xc2, 0x94, 0x8a, 0x9c, 0xbd, 0x9f, 0x8a, 0x9c, 0xbd, - 0x9f, 0x8a, 0x9d, 0xbd, 0x9f, 0x8a, 0x9d, 0xbd, 0x9f, 0x8a, 0x9d, 0xbd, - 0x9f, 0x8a, 0x9e, 0xbd, 0x9f, 0x8a, 0x9e, 0xc2, 0xa5, 0x8a, 0x9f, 0xc4, - 0xa5, 0x8a, 0x9f, 0xc2, 0xa5, 0x8a, 0x9f, 0xc4, 0xa5, 0x8a, 0xa0, 0xc2, - 0xa5, 0x8a, 0xa0, 0xc4, 0xa5, 0x8a, 0xa1, 0xc2, 0xa5, 0x8a, 0xa1, 0xc4, - 0xa5, 0x8a, 0xa1, 0xc2, 0xa5, 0x8a, 0xa2, 0xc4, 0xa5, 0x8a, 0xa2, 0xc2, - 0xa5, 0x8a, 0xa3, 0xc2, 0xa6, 0x8a, 0xa3, 0xc2, 0xa5, 0x8a, 0xa3, 0xc2, - 0xa6, 0x8a, 0xa4, 0xc2, 0xa5, 0x8a, 0xa4, 0xc2, 0xa6, 0x8a, 0xa5, 0xc2, - 0xa5, 0x8a, 0xa5, 0xc2, 0xa6, 0x8a, 0xa5, 0xc2, 0xa5, 0x89, 0xa5, 0xc2, - 0xa6, 0x8a, 0xa5, 0xc2, 0xa6, 0x89, 0xa5, 0xc2, 0xa6, 0x8a, 0xa5, 0xc2, - 0xa7, 0x89, 0xa5, 0xc2, 0xa7, 0x8a, 0xa5, 0xc2, 0xa8, 0x89, 0xa5, 0xc2, - 0xa8, 0x8a, 0xa5, 0xc2, 0xa8, 0x89, 0xa6, 0xc2, 0xa9, 0x87, 0xa5, 0xc2, - 0xa9, 0x89, 0xa6, 0xc2, 0xaa, 0x87, 0xa5, 0xc2, 0xaa, 0x89, 0xa6, 0xc2, - 0xaa, 0x87, 0xa5, 0xc2, 0xab, 0x89, 0xa6, 0xc2, 0xab, 0x87, 0xa5, 0xc2, - 0xab, 0x89, 0xa6, 0xc2, 0xac, 0x87, 0xa5, 0xc2, 0xac, 0x89, 0xa6, 0xc2, - 0xac, 0x87, 0xa5, 0xc2, 0xad, 0x89, 0xa6, 0xc2, 0xad, 0x87, 0xa5, 0xc2, - 0xae, 0x89, 0xa6, 0xc2, 0xae, 0x87, 0xa5, 0xc2, 0xae, 0x89, 0xa6, 0xc2, - 0xaf, 0x87, 0xa5, 0xc2, 0xaf, 0x89, 0xa6, 0xc2, 0xaf, 0x87, 0xa5, 0xc2, - 0xb0, 0x89, 0xa6, 0xc2, 0xb0, 0x87, 0xa5, 0xc2, 0xb0, 0x89, 0xa6, 0xc2, - 0xb1, 0x87, 0xa5, 0xc2, 0xb1, 0x89, 0xa6, 0xc2, 0xb2, 0x87, 0xa9, 0xc2, - 0xb2, 0x7e, 0xa6, 0xc2, 0xb2, 0x87, 0xa9, 0xc2, 0xb3, 0x7e, 0xa6, 0xc2, - 0xb3, 0x87, 0xa9, 0xc2, 0xb3, 0x7e, 0xaa, 0xc2, 0xb4, 0x7d, 0xa9, 0xc2, - 0xb4, 0x7e, 0xaa, 0xc2, 0xb4, 0x7d, 0xa9, 0xc2, 0xb5, 0x7e, 0xaa, 0xc2, - 0xb5, 0x7d, 0xa9, 0xc2, 0xb5, 0x7e, 0xaa, 0xc2, 0xb6, 0x7d, 0xa9, 0xc2, - 0xb6, 0x7e, 0xaa, 0xc2, 0xb6, 0x7d, 0xa9, 0xc2, 0xb7, 0x7e, 0xaa, 0xc2, - 0xb7, 0x7d, 0xa9, 0xc2, 0xb7, 0x7e, 0xaa, 0xc2, 0xb8, 0x7d, 0xa9, 0xc2, - 0xb8, 0x7e, 0xba, 0xc2, 0xb8, 0x72, 0xbd, 0xc2, 0xb9, 0x73, 0xba, 0xc2, - 0xb9, 0x72, 0xbd, 0xc2, 0xb9, 0x73, 0xbe, 0xc2, 0xba, 0x73, 0xbd, 0xc2, - 0xba, 0x73, 0xbe, 0xc2, 0xba, 0x73, 0xbd, 0xc2, 0xbb, 0x73, 0xbe, 0xc2, - 0xbb, 0x73, 0xbd, 0xc2, 0xbb, 0x73, 0xbe, 0xc2, 0xbc, 0x73, 0xbd, 0xc2, - 0xbc, 0x73, 0xbe, 0xc2, 0xbc, 0x73, 0xbd, 0xc2, 0xbd, 0x73, 0xc1, 0xc2, - 0xbd, 0x74, 0xc1, 0xc2, 0xbd, 0x74, 0xc1, 0xc2, 0xbe, 0x74, 0xc1, 0xc2, - 0xbe, 0x74, 0xc1, 0xc2, 0xbe, 0x74, 0xc1, 0xc2, 0xbf, 0x74, 0xc1, 0xc2, - 0xbf, 0x74, 0xc1, 0xc2, 0xbf, 0x74, 0xc1, 0xc2, 0xc0, 0x74, 0xc1, 0xc2, - 0xc0, 0x74, 0xc1, 0xc2, 0xc0, 0x74, 0xc4, 0xc2, 0xc1, 0x75, 0xc5, 0xc2, - 0xc1, 0x75, 0xc4, 0xc2, 0xc1, 0x75, 0xc5, 0xc2, 0xc1, 0x75, 0xc4, 0xc2, - 0xc2, 0x75, 0xc5, 0xc2, 0xc2, 0x75, 0xc4, 0xc2, 0xc2, 0x75, 0xc5, 0xc2, - 0xc3, 0x75, 0xc4, 0xc2, 0xc3, 0x75, 0xc5, 0xc2, 0xc3, 0x75, 0xc4, 0xc2, - 0xc4, 0x75, 0xc8, 0xc2, 0xc4, 0x76, 0xc8, 0xc2, 0xc4, 0x76, 0xc8, 0xc2, - 0xc5, 0x76, 0xc8, 0xc2, 0xc5, 0x76, 0xc8, 0xc2, 0xc5, 0x76, 0xc8, 0xc2, - 0xc6, 0x76, 0xc8, 0xc2, 0xc6, 0x76, 0xc8, 0xc2, 0xc6, 0x76, 0xc8, 0xc2, - 0xc6, 0x76, 0xc8, 0xc2, 0xc7, 0x76, 0xc8, 0xc2, 0xc7, 0x76, 0xcb, 0xc2, - 0xc7, 0x77, 0xcb, 0xc2, 0xc8, 0x77, 0xcb, 0xc2, 0xc8, 0x77, 0xcb, 0xc2, - 0xc8, 0x77, 0xcb, 0xc2, 0xc9, 0x77, 0xcb, 0xc2, 0xc9, 0x77, 0xcb, 0xc2, - 0xc9, 0x77, 0xcb, 0xc2, 0xc9, 0x77, 0xcb, 0xc2, 0xca, 0x77, 0xcb, 0xc2, - 0xca, 0x77, 0xcb, 0xc2, 0xca, 0x77, 0xd4, 0xc2, 0xcb, 0x94, 0xd4, 0xc2, - 0xcb, 0x93, 0xd4, 0xc2, 0xcb, 0x94, 0xd4, 0xc2, 0xcc, 0x93, 0xd4, 0xc2, - 0xcc, 0x94, 0xd4, 0xc2, 0xcc, 0x93, 0xd4, 0xc2, 0xcc, 0x94, 0xd4, 0xc2, - 0xcd, 0x93, 0xd4, 0xc2, 0xcd, 0x94, 0xd4, 0xc2, 0xcd, 0x93, 0xd4, 0xc2, - 0xce, 0x94, 0xd4, 0xc2, 0xce, 0x93, 0xd4, 0xc2, 0xce, 0x94, 0xd4, 0xc2, - 0xce, 0x93, 0xd4, 0xc2, 0xcf, 0x93, 0xd4, 0xc2, 0xcf, 0x93, 0xd4, 0xc2, - 0xcf, 0x93, 0xd4, 0xc2, 0xd0, 0x93, 0xd4, 0xc2, 0xd0, 0x93, 0xd4, 0xc2, - 0xd0, 0x93, 0xd4, 0xc2, 0xd0, 0x93, 0xd4, 0xc2, 0xd1, 0x93, 0xd4, 0xc2, - 0xd1, 0x93, 0xd4, 0xc2, 0xd1, 0x93, 0xd4, 0xc2, 0xd2, 0x93, 0xd4, 0xc2, - 0xd2, 0x93, 0xd4, 0xc2, 0xd2, 0x93, 0xd4, 0xc2, 0xd2, 0x93, 0xd4, 0xc2, - 0xd3, 0x93, 0xd4, 0xc2, 0xd3, 0x93, 0xd4, 0xc2, 0xd3, 0x93, 0xd4, 0xc2, - 0xd4, 0x93, 0xd4, 0xc2, 0xd4, 0x93, 0xd4, 0xc2, 0xd4, 0x93, 0xd4, 0xc2, - 0xd4, 0x93, 0xd5, 0xc2, 0xd5, 0x93, 0xd5, 0xc2, 0xd5, 0x93, 0xd5, 0xc2, - 0xd5, 0x93, 0xd6, 0xc2, 0xd6, 0x93, 0xd6, 0xc2, 0xd6, 0x93, 0xd6, 0xc2, - 0xd6, 0x93, 0xd6, 0xc2, 0xd6, 0x93, 0xd6, 0xc2, 0xd7, 0x93, 0xd6, 0xc2, - 0xd7, 0x93, 0xd6, 0xc2, 0xd7, 0x93, 0xd6, 0xc2, 0xd7, 0x93, 0xd6, 0xc2, - 0xd8, 0x93, 0xd6, 0xc2, 0xd8, 0x93, 0xd6, 0xc2, 0xd8, 0x93, 0xd9, 0xc2, - 0xd9, 0x94, 0xd9, 0xc2, 0xd9, 0x94, 0xd9, 0xc2, 0xd9, 0x94, 0xd9, 0xc2, - 0xd9, 0x94, 0xd9, 0xc2, 0xda, 0x94, 0xd9, 0xc2, 0xda, 0x94, 0xd9, 0xc2, - 0xda, 0x94, 0xd9, 0xc2, 0xda, 0x94, 0xd9, 0xc2, 0xdb, 0x94, 0xd9, 0xc2, - 0xdb, 0x94, 0xd9, 0xc2, 0xdb, 0x94, 0xdb, 0xc2, 0xdb, 0x95, 0xdc, 0xc2, - 0xdc, 0x95, 0xdc, 0xc2, 0xdc, 0x95, 0xdc, 0xc2, 0xdc, 0x95, 0xdc, 0xc2, - 0xdd, 0x95, 0xdc, 0xc2, 0xdd, 0x95, 0xdc, 0xc2, 0xdd, 0x95, 0xdc, 0xc2, - 0xdd, 0x95, 0xdc, 0xc2, 0xde, 0x95, 0xdc, 0xc2, 0xde, 0x95, 0xdc, 0xc2, - 0xde, 0x95, 0xde, 0xc2, 0xde, 0x96, 0xdf, 0xc2, 0xdf, 0x96, 0xdf, 0xc2, - 0xdf, 0x96, 0xdf, 0xc2, 0xdf, 0x96, 0xdf, 0xc2, 0xdf, 0x96, 0xdf, 0xc2, - 0xe0, 0x96, 0xdf, 0xc2, 0xe0, 0x96, 0xdf, 0xc2, 0xe0, 0x96, 0xdf, 0xc2, - 0xe1, 0x96, 0xdf, 0xc2, 0xe1, 0x96, 0xdf, 0xc2, 0xe1, 0x96, 0xe1, 0xc2, - 0xe1, 0x97, 0xe2, 0xc2, 0xe2, 0x97, 0xe2, 0xc2, 0xe2, 0x97, 0xe2, 0xc2, - 0xe2, 0x97, 0xe2, 0xc2, 0xe2, 0x97, 0xe2, 0xc2, 0xe3, 0x97, 0xe2, 0xc2, - 0xe3, 0x97, 0xea, 0xc2, 0xe3, 0x8a, 0xea, 0xc2, 0xe3, 0x8a, 0xea, 0xc2, - 0xe4, 0x8a, 0xea, 0xc2, 0xe4, 0x8a, 0xea, 0xc2, 0xe4, 0x8a, 0xea, 0xc2, - 0xe4, 0x8a, 0xea, 0xc2, 0xe5, 0x8a, 0xea, 0xc2, 0xe5, 0x8a, 0xea, 0xc2, - 0xe5, 0x8a, 0xea, 0xc2, 0xe5, 0x8a, 0xea, 0xc2, 0xe6, 0x8a, 0xea, 0xc2, - 0xe6, 0x8a, 0xea, 0xc2, 0xe6, 0x8a, 0xea, 0xc2, 0xe6, 0x8a, 0xea, 0xc2, - 0xe7, 0x8a, 0xea, 0xc2, 0xe7, 0x8a, 0xea, 0xc2, 0xe7, 0x8a, 0xea, 0xc2, - 0xe7, 0x8a, 0xea, 0xc2, 0xe8, 0x8a, 0xea, 0xc2, 0xe8, 0x8a, 0xea, 0xc2, - 0xe8, 0x8a, 0xea, 0xc2, 0xe8, 0x8a, 0xea, 0xc2, 0xe9, 0x8a, 0xea, 0xc2, - 0xe9, 0x8a, 0xea, 0xc2, 0xe9, 0x8a, 0xea, 0xc2, 0xe9, 0x8a, 0xea, 0xc2, - 0xea, 0x8a, 0xea, 0xc2, 0xe9, 0x8a, 0xea, 0xc2, 0xea, 0x8a, 0xea, 0xc2, - 0xe9, 0x8a, 0xeb, 0xc2, 0xea, 0x8a, 0xeb, 0xc2, 0xe9, 0x8a, 0xeb, 0xc4, - 0xeb, 0x8a, 0xeb, 0xc4, 0xeb, 0x8a, 0xec, 0xc4, 0xec, 0x8a, 0xec, 0xc4, - 0xeb, 0x8a, 0xec, 0xc4, 0xec, 0x8a, 0xec, 0xc4, 0xeb, 0x8a, 0xec, 0xc4, - 0xec, 0x8a, 0xed, 0xc5, 0xed, 0x8a, 0xed, 0xc5, 0xed, 0x8a, 0xed, 0xc5, - 0xed, 0x8a, 0xed, 0xc5, 0xed, 0x8a, 0xee, 0xc5, 0xee, 0x8a, 0xee, 0xc5, - 0xee, 0x8a, 0xee, 0xc5, 0xee, 0x8a, 0xee, 0xc5, 0xee, 0x8a, 0xef, 0xc5, - 0xef, 0x8a, 0xef, 0xc5, 0xef, 0x8a, 0xef, 0xc5, 0xef, 0x8a, 0xef, 0xc5, - 0xef, 0x8a, 0xf0, 0xc5, 0xef, 0x8a, 0xf0, 0xc5, 0xef, 0x8a, 0xf0, 0xc5, - 0xef, 0x8a, 0xf0, 0xc6, 0xf0, 0x8a, 0xf1, 0xc6, 0xf1, 0x8a, 0xf1, 0xc6, - 0xf1, 0x8a, 0xf1, 0xc6, 0xf1, 0x8a, 0xf1, 0xc6, 0xf1, 0x8a, 0xf2, 0xc6, - 0xf2, 0x8a, 0xf2, 0xc6, 0xf2, 0x8a, 0xf2, 0xc6, 0xf2, 0x8a, 0xf2, 0xc6, - 0xf2, 0x8a, 0xf2, 0xc6, 0xf2, 0x8a, 0xf3, 0xc3, 0xf5, 0x8a, 0xf3, 0xc2, - 0xf5, 0x8a, 0xf3, 0xc3, 0xf5, 0x8a, 0xf3, 0xc2, 0xf5, 0x8a, 0xf4, 0xc3, - 0xf5, 0x8a, 0xf4, 0xc2, 0xf5, 0x8a, 0xf4, 0xc3, 0xf5, 0x8a, 0xf4, 0xc2, - 0xf5, 0x8a, 0xf5, 0xc3, 0xf5, 0x8a, 0xf4, 0xc2, 0xf5, 0x8a, 0xf5, 0xc2, - 0xf5, 0x8a, 0xf4, 0xc2, 0xf5, 0x8a, 0xf5, 0xc2, 0xf5, 0x8a, 0xf4, 0xc2, - 0xf6, 0x8a, 0xf5, 0xc2, 0xf6, 0x8a, 0xf4, 0xc2, 0xf6, 0x8a, 0xf5, 0xc2, - 0xf6, 0x8a, 0xf8, 0xc2, 0xf7, 0x8b, 0xf8, 0xc2, 0xf7, 0x8a, 0xf8, 0xc2, - 0xf7, 0x8b, 0xf8, 0xc2, 0xf7, 0x8a, 0xf8, 0xc2, 0xf8, 0x8b, 0xf8, 0xc2, - 0xf8, 0x8a, 0xf8, 0xc2, 0xf8, 0x8a, 0xf8, 0xc2, 0xf8, 0x8a, 0xf8, 0xc2, - 0xf8, 0x8a, 0xf9, 0xc2, 0xf8, 0x8a, 0xf9, 0xc2, 0xf8, 0x8a, 0xf9, 0xc2, - 0xf8, 0x8a, 0xf9, 0xc2, 0xf8, 0x8a, 0xfa, 0xc2, 0xf8, 0x8a, 0xfa, 0xc2, - 0xf8, 0x8a, 0xfa, 0xc1, 0xf8, 0x8a, 0xfa, 0xc2, 0xf8, 0x8a, 0xfa, 0xc1, - 0xf8, 0x8a, 0xfb, 0xc2, 0xf8, 0x8a, 0xfb, 0xc1, 0xf8, 0x8a, 0xfb, 0xc2, - 0xf8, 0x8a, 0xfb, 0xc1, 0xf8, 0x8a, 0xfc, 0xc2, 0xf8, 0x8a, 0xfc, 0xc1, - 0xf8, 0x8a, 0xfc, 0xc2, 0xf8, 0x8a, 0xfc, 0xc1, 0xf8, 0x8a, 0xfc, 0xc2, - 0xf8, 0x8a, 0xfd, 0xc1, 0xf8, 0x8a, 0xfd, 0xc2, 0xf8, 0x8a, 0xfd, 0xc1, - 0xf8, 0x8a, 0xfd, 0xc2, 0xf8, 0x8a, 0xfe, 0xc1, 0xf8, 0x8a, 0xfe, 0xbf, - 0xf8, 0x8a, 0xfe, 0xc1, 0xf8, 0x8a, 0xfe, 0xbf, 0xf8, 0x8a, 0xfe, 0xc1, - 0xf8, 0x8a, 0xff, 0xbf, 0xf8, 0x8a, 0xff, 0xc1, 0xf8, 0x8a, 0x03, 0xc9, - 0x8f, 0x8b, 0x0a, 0xc9, 0x8f, 0x8b, 0x0f, 0xc9, 0x8f, 0x8b, 0x14, 0xc7, - 0x8f, 0x8b, 0x17, 0xc9, 0x8f, 0x8b, 0x1b, 0xc7, 0x8f, 0x8b, 0x1e, 0xc9, - 0x8f, 0x8b, 0x20, 0xc7, 0x8f, 0x8b, 0x23, 0xc9, 0x8f, 0x8b, 0x25, 0xc7, - 0x8f, 0x8b, 0x27, 0xc9, 0x8f, 0x8b, 0x29, 0xc7, 0x8f, 0x8b, 0x2b, 0xc9, - 0x8f, 0x8b, 0x2d, 0xc7, 0x8f, 0x8b, 0x2f, 0xc9, 0x8f, 0x8b, 0x31, 0xc7, - 0x8f, 0x8b, 0x32, 0xc9, 0x8f, 0x8b, 0x34, 0xc7, 0x8f, 0x8b, 0x35, 0xc9, - 0x8f, 0x8b, 0x37, 0xc7, 0x8f, 0x8b, 0x38, 0xc9, 0x8f, 0x8b, 0x3a, 0xc7, - 0x8f, 0x8b, 0x3b, 0xc9, 0x8f, 0x8b, 0x3c, 0xc7, 0x8f, 0x8b, 0x3e, 0xc9, - 0x8f, 0x8b, 0x3f, 0xc7, 0x8f, 0x8b, 0x40, 0xc9, 0x8f, 0x8b, 0x42, 0xc7, - 0x8f, 0x8b, 0x43, 0xc9, 0x8f, 0x8b, 0x44, 0xc7, 0x8f, 0x8b, 0x45, 0xc9, - 0x8f, 0x8b, 0x46, 0xc7, 0x8f, 0x8b, 0x47, 0xc9, 0x8f, 0x8b, 0x48, 0xc7, - 0x8f, 0x8b, 0x49, 0xc9, 0x8f, 0x8b, 0x4a, 0xc7, 0x8f, 0x8b, 0x4b, 0xc9, - 0x8f, 0x8b, 0x4c, 0xc7, 0x8f, 0x8b, 0x4d, 0xc9, 0x8f, 0x8b, 0x4e, 0xc7, - 0x8f, 0x8b, 0x4f, 0xc9, 0x8f, 0x8b, 0x50, 0xc7, 0x8f, 0x8b, 0x51, 0xc9, - 0x8f, 0x8b, 0x52, 0xc7, 0x8f, 0x8b, 0x53, 0xc9, 0x8f, 0x8b, 0x54, 0xc7, - 0x8f, 0x8b, 0x55, 0xc9, 0x8f, 0x8b, 0x56, 0xc7, 0x8f, 0x8b, 0x57, 0xc9, - 0x8f, 0x8b, 0x58, 0xc7, 0x8f, 0x8b, 0x58, 0xc9, 0x8f, 0x8b, 0x59, 0xc7, - 0x8f, 0x8b, 0x5a, 0xc9, 0x8f, 0x8b, 0x5b, 0xc7, 0x8f, 0x8b, 0x5c, 0xc9, - 0x8f, 0x8b, 0x5d, 0xc7, 0x8f, 0x8b, 0x5d, 0xc9, 0x8f, 0x8b, 0x5e, 0xc7, - 0x8f, 0x8b, 0x5f, 0xc5, 0x90, 0x8b, 0x60, 0xc7, 0x8f, 0x8b, 0x60, 0xc5, - 0x90, 0x8b, 0x61, 0xc7, 0x8f, 0x8b, 0x62, 0xc5, 0x90, 0x8b, 0x63, 0xc7, - 0x8f, 0x8b, 0x63, 0xc5, 0x90, 0x8b, 0x64, 0xc7, 0x8f, 0x8b, 0x65, 0xc5, - 0x90, 0x8b, 0x66, 0xc7, 0x8f, 0x8b, 0x66, 0xc5, 0x90, 0x8b, 0x67, 0xc7, - 0x8f, 0x8b, 0x68, 0xc5, 0x90, 0x8b, 0x68, 0xc7, 0x8f, 0x8b, 0x69, 0xc5, - 0x90, 0x8b, 0x6a, 0xc7, 0x8f, 0x8b, 0x6a, 0xc5, 0x90, 0x8b, 0x6b, 0xc7, - 0x8f, 0x8b, 0x6c, 0xc5, 0x90, 0x8b, 0x6c, 0xc7, 0x8f, 0x8b, 0x6d, 0xc5, - 0x90, 0x8b, 0x6e, 0xc7, 0x8f, 0x8b, 0x6e, 0xc5, 0x90, 0x8b, 0x6f, 0xc7, - 0x8f, 0x8b, 0x70, 0xc5, 0x90, 0x8b, 0x70, 0xc7, 0x8f, 0x8b, 0x71, 0xc5, - 0x90, 0x8b, 0x72, 0xc7, 0x8f, 0x8b, 0x72, 0xc5, 0x90, 0x8b, 0x73, 0xc7, - 0x8f, 0x8b, 0x73, 0xc5, 0x90, 0x8b, 0x74, 0xc7, 0x8f, 0x8b, 0x75, 0xc5, - 0x90, 0x8b, 0x75, 0xc7, 0x8f, 0x8b, 0x76, 0xc5, 0x90, 0x8b, 0x76, 0xc7, - 0x8f, 0x8b, 0x77, 0xc5, 0x90, 0x8b, 0x78, 0xc3, 0x90, 0x8b, 0x78, 0xc5, - 0x90, 0x8b, 0x79, 0xc3, 0x90, 0x8b, 0x79, 0xc5, 0x90, 0x8b, 0x7a, 0xc3, - 0x90, 0x8b, 0x7a, 0xc5, 0x90, 0x8b, 0x7b, 0xc3, 0x90, 0x8b, 0x7c, 0xc5, - 0x90, 0x8b, 0x7c, 0xc3, 0x90, 0x8b, 0x7d, 0xc5, 0x90, 0x8b, 0x7d, 0xc3, - 0x90, 0x8b, 0x7e, 0xc5, 0x90, 0x8b, 0x7e, 0xc3, 0x90, 0x8b, 0x7f, 0xc5, - 0x90, 0x8b, 0x7f, 0xc3, 0x90, 0x8b, 0x80, 0xc5, 0x90, 0x8b, 0x81, 0xc3, - 0x90, 0x8b, 0x81, 0xc5, 0x90, 0x8b, 0x82, 0xc3, 0x90, 0x8b, 0x82, 0xc5, - 0x90, 0x8b, 0x83, 0xc3, 0x90, 0x8b, 0x83, 0xc5, 0x90, 0x8b, 0x84, 0xc3, - 0x90, 0x8b, 0x84, 0xc5, 0x90, 0x8b, 0x85, 0xc3, 0x90, 0x8b, 0x85, 0xc5, - 0x90, 0x8b, 0x86, 0xc3, 0x90, 0x8b, 0x86, 0xc5, 0x90, 0x8b, 0x87, 0xc3, - 0x90, 0x8b, 0x87, 0xc5, 0x90, 0x8b, 0x88, 0xc3, 0x90, 0x8b, 0x88, 0xc5, - 0x90, 0x8b, 0x89, 0xc3, 0x90, 0x8b, 0x89, 0xc3, 0x91, 0x8b, 0x8a, 0xc3, - 0x90, 0x8b, 0x8a, 0xc3, 0x91, 0x8b, 0x8b, 0xc3, 0x90, 0x8b, 0x8b, 0xc3, - 0x91, 0x8b, 0x8c, 0xc3, 0x90, 0x8b, 0x8c, 0xc3, 0x91, 0x8b, 0x8d, 0xc3, - 0x90, 0x8b, 0x8d, 0xc3, 0x91, 0x8b, 0x8e, 0xc3, 0x90, 0x8b, 0x8e, 0xc3, - 0x91, 0x8b, 0x8e, 0xc3, 0x90, 0x8b, 0x8f, 0xc3, 0x91, 0x8b, 0x8f, 0xc3, - 0x90, 0x8b, 0x90, 0xc3, 0x91, 0x8b, 0x90, 0xc3, 0x90, 0x8a, 0x90, 0xc3, - 0x91, 0x8b, 0x90, 0xc3, 0x91, 0x8a, 0x90, 0xc3, 0x92, 0x8b, 0x94, 0xc3, - 0x92, 0x8b, 0x94, 0xc3, 0x93, 0x8c, 0x94, 0xc3, 0x93, 0x8b, 0x94, 0xc3, - 0x94, 0x8b, 0x94, 0xc3, 0x93, 0x8b, 0x94, 0xc3, 0x94, 0x8b, 0x95, 0xc3, - 0x93, 0x8b, 0x95, 0xc3, 0x94, 0x8b, 0x96, 0xc1, 0x94, 0x8b, 0x96, 0xc3, - 0x94, 0x8b, 0x97, 0xc1, 0x94, 0x8b, 0x97, 0xc3, 0x94, 0x8b, 0x98, 0xc1, - 0x94, 0x8b, 0x98, 0xc3, 0x94, 0x8b, 0x98, 0xc1, 0x94, 0x8b, 0x99, 0xc3, - 0x94, 0x8b, 0x99, 0xc1, 0x94, 0x8b, 0x9a, 0xc3, 0x94, 0x8b, 0x9a, 0xc1, - 0x94, 0x8b, 0x9a, 0xc3, 0x94, 0x8b, 0x9b, 0xc1, 0x94, 0x8b, 0x9b, 0xc3, - 0x94, 0x8b, 0x9c, 0xc1, 0x94, 0x8b, 0x9c, 0xbc, 0x9c, 0x8b, 0x9d, 0xbc, - 0x9d, 0x8b, 0x9d, 0xbc, 0x9d, 0x8b, 0x9d, 0xbd, 0xa1, 0x8b, 0x9e, 0xc5, - 0xa5, 0x8b, 0x9e, 0xc3, 0xa5, 0x8b, 0x9f, 0xc5, 0xa5, 0x8b, 0x9f, 0xc3, - 0xa5, 0x8b, 0x9f, 0xc5, 0xa5, 0x8b, 0xa0, 0xc3, 0xa5, 0x8b, 0xa0, 0xc5, - 0xa5, 0x8b, 0xa1, 0xc3, 0xa5, 0x8b, 0xa1, 0xc5, 0xa5, 0x8b, 0xa1, 0xc3, - 0xa5, 0x8b, 0xa2, 0xc5, 0xa5, 0x8b, 0xa2, 0xc3, 0xa5, 0x8b, 0xa3, 0xc3, - 0xa6, 0x8b, 0xa3, 0xc3, 0xa5, 0x8b, 0xa3, 0xc3, 0xa6, 0x8b, 0xa4, 0xc3, - 0xa5, 0x8b, 0xa4, 0xc3, 0xa6, 0x8b, 0xa5, 0xc3, 0xa5, 0x8b, 0xa5, 0xc3, - 0xa6, 0x8b, 0xa5, 0xc3, 0xa5, 0x8a, 0xa5, 0xc3, 0xa6, 0x8b, 0xa5, 0xc3, - 0xa6, 0x8a, 0xa5, 0xc3, 0xa6, 0x8b, 0xa5, 0xc3, 0xa7, 0x8a, 0xa5, 0xc3, - 0xa7, 0x8b, 0xa5, 0xc3, 0xa8, 0x8a, 0xa5, 0xc3, 0xa8, 0x8b, 0xa5, 0xc3, - 0xa8, 0x8a, 0xa5, 0xc3, 0xa9, 0x8b, 0xa5, 0xc3, 0xa9, 0x8a, 0xa5, 0xc3, - 0xaa, 0x8b, 0xa5, 0xc3, 0xaa, 0x8a, 0xa5, 0xc3, 0xaa, 0x8b, 0xa5, 0xc3, - 0xab, 0x8a, 0xa5, 0xc3, 0xab, 0x8b, 0xa5, 0xc3, 0xab, 0x8a, 0xa6, 0xc3, - 0xac, 0x87, 0xa5, 0xc3, 0xac, 0x8a, 0xa6, 0xc3, 0xac, 0x87, 0xa5, 0xc3, - 0xad, 0x8a, 0xa6, 0xc3, 0xad, 0x87, 0xa5, 0xc3, 0xae, 0x8a, 0xa6, 0xc3, - 0xae, 0x87, 0xa5, 0xc3, 0xae, 0x8a, 0xa6, 0xc3, 0xaf, 0x87, 0xa5, 0xc3, - 0xaf, 0x8a, 0xa6, 0xc3, 0xaf, 0x87, 0xa5, 0xc3, 0xb0, 0x8a, 0xa6, 0xc3, - 0xb0, 0x87, 0xa5, 0xc3, 0xb0, 0x8a, 0xa6, 0xc3, 0xb1, 0x87, 0xa5, 0xc3, - 0xb1, 0x8a, 0xa6, 0xc3, 0xb2, 0x87, 0xa9, 0xc3, 0xb2, 0x7f, 0xa6, 0xc3, - 0xb2, 0x87, 0xa9, 0xc3, 0xb3, 0x7f, 0xaa, 0xc3, 0xb3, 0x7e, 0xa9, 0xc3, - 0xb3, 0x7f, 0xaa, 0xc3, 0xb4, 0x7e, 0xa9, 0xc3, 0xb4, 0x7f, 0xaa, 0xc3, - 0xb4, 0x7e, 0xa9, 0xc3, 0xb5, 0x7f, 0xaa, 0xc3, 0xb5, 0x7e, 0xa9, 0xc3, - 0xb5, 0x7f, 0xaa, 0xc3, 0xb6, 0x7e, 0xa9, 0xc3, 0xb6, 0x7f, 0xaa, 0xc3, - 0xb6, 0x7e, 0xa9, 0xc3, 0xb7, 0x7f, 0xaa, 0xc3, 0xb7, 0x7e, 0xa9, 0xc3, - 0xb7, 0x7f, 0xaa, 0xc3, 0xb8, 0x7e, 0xa9, 0xc3, 0xb8, 0x7f, 0xbc, 0xc3, - 0xb8, 0x73, 0xbb, 0xc3, 0xb9, 0x73, 0xbc, 0xc3, 0xb9, 0x73, 0xbb, 0xc3, - 0xb9, 0x73, 0xbc, 0xc3, 0xba, 0x73, 0xbb, 0xc3, 0xba, 0x73, 0xbf, 0xc3, - 0xba, 0x74, 0xbb, 0xc3, 0xbb, 0x73, 0xbf, 0xc3, 0xbb, 0x74, 0xbf, 0xc3, - 0xbb, 0x74, 0xbf, 0xc3, 0xbc, 0x74, 0xbf, 0xc3, 0xbc, 0x74, 0xbf, 0xc3, - 0xbc, 0x74, 0xbf, 0xc3, 0xbd, 0x74, 0xbf, 0xc3, 0xbd, 0x74, 0xbf, 0xc3, - 0xbd, 0x74, 0xbf, 0xc3, 0xbe, 0x74, 0xbf, 0xc3, 0xbe, 0x74, 0xbf, 0xc3, - 0xbe, 0x74, 0xc2, 0xc3, 0xbf, 0x75, 0xc3, 0xc3, 0xbf, 0x75, 0xc2, 0xc3, - 0xbf, 0x75, 0xc3, 0xc3, 0xc0, 0x75, 0xc2, 0xc3, 0xc0, 0x75, 0xc3, 0xc3, - 0xc0, 0x75, 0xc2, 0xc3, 0xc1, 0x75, 0xc3, 0xc3, 0xc1, 0x75, 0xc2, 0xc3, - 0xc1, 0x75, 0xc3, 0xc3, 0xc1, 0x75, 0xc2, 0xc3, 0xc2, 0x75, 0xc3, 0xc3, - 0xc2, 0x75, 0xc6, 0xc3, 0xc2, 0x76, 0xc6, 0xc3, 0xc3, 0x76, 0xc6, 0xc3, - 0xc3, 0x76, 0xc6, 0xc3, 0xc3, 0x76, 0xc6, 0xc3, 0xc4, 0x76, 0xc6, 0xc3, - 0xc4, 0x76, 0xc6, 0xc3, 0xc4, 0x76, 0xc6, 0xc3, 0xc5, 0x76, 0xc6, 0xc3, - 0xc5, 0x76, 0xc6, 0xc3, 0xc5, 0x76, 0xc6, 0xc3, 0xc6, 0x76, 0xc9, 0xc3, - 0xc6, 0x77, 0xca, 0xc3, 0xc6, 0x77, 0xc9, 0xc3, 0xc6, 0x77, 0xca, 0xc3, - 0xc7, 0x77, 0xc9, 0xc3, 0xc7, 0x77, 0xca, 0xc3, 0xc7, 0x77, 0xc9, 0xc3, - 0xc8, 0x77, 0xca, 0xc3, 0xc8, 0x77, 0xc9, 0xc3, 0xc8, 0x77, 0xca, 0xc3, - 0xc9, 0x77, 0xc9, 0xc3, 0xc9, 0x77, 0xcd, 0xc3, 0xc9, 0x78, 0xcd, 0xc3, - 0xc9, 0x78, 0xcd, 0xc3, 0xca, 0x78, 0xcd, 0xc3, 0xca, 0x78, 0xd4, 0xc3, - 0xca, 0x93, 0xd4, 0xc3, 0xcb, 0x93, 0xd4, 0xc3, 0xcb, 0x93, 0xd4, 0xc3, - 0xcb, 0x93, 0xd4, 0xc3, 0xcc, 0x93, 0xd4, 0xc3, 0xcc, 0x93, 0xd4, 0xc3, - 0xcc, 0x93, 0xd4, 0xc3, 0xcc, 0x93, 0xd4, 0xc3, 0xcd, 0x93, 0xd4, 0xc3, - 0xcd, 0x93, 0xd4, 0xc3, 0xcd, 0x93, 0xd4, 0xc3, 0xce, 0x93, 0xd4, 0xc3, - 0xce, 0x93, 0xd4, 0xc3, 0xce, 0x93, 0xd4, 0xc3, 0xce, 0x93, 0xd4, 0xc3, - 0xcf, 0x93, 0xd4, 0xc3, 0xcf, 0x93, 0xd4, 0xc3, 0xcf, 0x93, 0xd4, 0xc3, - 0xd0, 0x93, 0xd4, 0xc3, 0xd0, 0x93, 0xd4, 0xc3, 0xd0, 0x93, 0xd4, 0xc3, - 0xd0, 0x93, 0xd4, 0xc3, 0xd1, 0x93, 0xd4, 0xc3, 0xd1, 0x93, 0xd4, 0xc3, - 0xd1, 0x93, 0xd4, 0xc3, 0xd2, 0x93, 0xd4, 0xc3, 0xd2, 0x93, 0xd4, 0xc3, - 0xd2, 0x93, 0xd4, 0xc3, 0xd2, 0x93, 0xd4, 0xc3, 0xd3, 0x93, 0xd4, 0xc3, - 0xd3, 0x93, 0xd4, 0xc3, 0xd3, 0x93, 0xd4, 0xc3, 0xd4, 0x93, 0xd4, 0xc3, - 0xd4, 0x93, 0xd4, 0xc3, 0xd4, 0x93, 0xd4, 0xc3, 0xd4, 0x93, 0xd5, 0xc3, - 0xd5, 0x93, 0xd4, 0xc3, 0xd5, 0x93, 0xd5, 0xc3, 0xd5, 0x93, 0xd4, 0xc3, - 0xd6, 0x93, 0xd5, 0xc3, 0xd6, 0x93, 0xd4, 0xc3, 0xd6, 0x93, 0xd5, 0xc3, - 0xd6, 0x93, 0xd4, 0xc3, 0xd7, 0x93, 0xd5, 0xc3, 0xd7, 0x93, 0xd7, 0xc3, - 0xd7, 0x94, 0xd7, 0xc3, 0xd7, 0x94, 0xd8, 0xc3, 0xd8, 0x94, 0xd7, 0xc3, - 0xd8, 0x94, 0xd8, 0xc3, 0xd8, 0x94, 0xd7, 0xc3, 0xd9, 0x94, 0xd8, 0xc3, - 0xd9, 0x94, 0xd7, 0xc3, 0xd9, 0x94, 0xd8, 0xc3, 0xd9, 0x94, 0xd7, 0xc3, - 0xda, 0x94, 0xd8, 0xc3, 0xda, 0x94, 0xda, 0xc3, 0xda, 0x95, 0xda, 0xc3, - 0xda, 0x95, 0xdb, 0xc3, 0xdb, 0x95, 0xda, 0xc3, 0xdb, 0x95, 0xdb, 0xc3, - 0xdb, 0x95, 0xda, 0xc3, 0xdb, 0x95, 0xdb, 0xc3, 0xdc, 0x95, 0xda, 0xc3, - 0xdc, 0x95, 0xdb, 0xc3, 0xdc, 0x95, 0xda, 0xc3, 0xdd, 0x95, 0xdb, 0xc3, - 0xdd, 0x95, 0xdd, 0xc3, 0xdd, 0x96, 0xdd, 0xc3, 0xdd, 0x96, 0xde, 0xc3, - 0xde, 0x96, 0xdd, 0xc3, 0xde, 0x96, 0xde, 0xc3, 0xde, 0x96, 0xdd, 0xc3, - 0xde, 0x96, 0xde, 0xc3, 0xdf, 0x96, 0xdd, 0xc3, 0xdf, 0x96, 0xde, 0xc3, - 0xdf, 0x96, 0xdd, 0xc3, 0xdf, 0x96, 0xde, 0xc3, 0xe0, 0x96, 0xe0, 0xc3, - 0xe0, 0x97, 0xe0, 0xc3, 0xe0, 0x97, 0xe1, 0xc3, 0xe1, 0x97, 0xe0, 0xc3, - 0xe1, 0x97, 0xe1, 0xc3, 0xe1, 0x97, 0xe0, 0xc3, 0xe1, 0x97, 0xe1, 0xc3, - 0xe2, 0x97, 0xe0, 0xc3, 0xe2, 0x97, 0xe1, 0xc3, 0xe2, 0x97, 0xe0, 0xc3, - 0xe2, 0x97, 0xe1, 0xc3, 0xe3, 0x97, 0xe0, 0xc3, 0xe3, 0x97, 0xe1, 0xc3, - 0xe3, 0x97, 0xea, 0xc3, 0xe3, 0x8b, 0xea, 0xc3, 0xe4, 0x8b, 0xea, 0xc3, - 0xe4, 0x8b, 0xea, 0xc3, 0xe4, 0x8b, 0xea, 0xc3, 0xe4, 0x8b, 0xea, 0xc3, - 0xe5, 0x8b, 0xea, 0xc3, 0xe5, 0x8b, 0xea, 0xc3, 0xe5, 0x8b, 0xea, 0xc3, - 0xe5, 0x8b, 0xea, 0xc3, 0xe6, 0x8b, 0xea, 0xc3, 0xe6, 0x8b, 0xea, 0xc3, - 0xe6, 0x8b, 0xea, 0xc3, 0xe6, 0x8b, 0xea, 0xc3, 0xe7, 0x8b, 0xea, 0xc3, - 0xe7, 0x8b, 0xea, 0xc3, 0xe7, 0x8b, 0xea, 0xc3, 0xe7, 0x8b, 0xea, 0xc3, - 0xe8, 0x8b, 0xea, 0xc3, 0xe8, 0x8b, 0xea, 0xc3, 0xe8, 0x8b, 0xea, 0xc3, - 0xe8, 0x8b, 0xea, 0xc3, 0xe9, 0x8b, 0xea, 0xc3, 0xe9, 0x8b, 0xea, 0xc3, - 0xe9, 0x8b, 0xea, 0xc3, 0xe9, 0x8b, 0xea, 0xc3, 0xe9, 0x8b, 0xea, 0xc3, - 0xe9, 0x8b, 0xea, 0xc3, 0xe9, 0x8b, 0xea, 0xc3, 0xe9, 0x8b, 0xeb, 0xc1, - 0xea, 0x8b, 0xeb, 0xc3, 0xe9, 0x8b, 0xeb, 0xc5, 0xeb, 0x8b, 0xeb, 0xc5, - 0xeb, 0x8b, 0xec, 0xc5, 0xec, 0x8b, 0xec, 0xc5, 0xec, 0x8b, 0xec, 0xc5, - 0xec, 0x8b, 0xec, 0xc5, 0xec, 0x8b, 0xec, 0xc5, 0xec, 0x8b, 0xed, 0xc5, - 0xed, 0x8b, 0xed, 0xc5, 0xed, 0x8b, 0xed, 0xc5, 0xed, 0x8b, 0xed, 0xc5, - 0xed, 0x8b, 0xee, 0xc5, 0xed, 0x8b, 0xee, 0xc5, 0xed, 0x8b, 0xee, 0xc5, - 0xed, 0x8b, 0xee, 0xc5, 0xee, 0x8b, 0xef, 0xc5, 0xef, 0x8b, 0xef, 0xc5, - 0xef, 0x8b, 0xef, 0xc5, 0xef, 0x8b, 0xef, 0xc5, 0xef, 0x8b, 0xf0, 0xc5, - 0xf0, 0x8b, 0xf0, 0xc5, 0xf0, 0x8b, 0xf0, 0xc5, 0xf0, 0x8b, 0xf0, 0xc5, - 0xf0, 0x8b, 0xf1, 0xc5, 0xf1, 0x8b, 0xf1, 0xc5, 0xf1, 0x8b, 0xf1, 0xc5, - 0xf1, 0x8b, 0xf1, 0xc5, 0xf1, 0x8b, 0xf2, 0xc5, 0xf1, 0x8b, 0xf2, 0xc5, - 0xf1, 0x8b, 0xf2, 0xc5, 0xf1, 0x8b, 0xf2, 0xc6, 0xf2, 0x8b, 0xf2, 0xc6, - 0xf2, 0x8b, 0xf3, 0xc3, 0xf5, 0x8b, 0xf3, 0xc3, 0xf5, 0x8b, 0xf3, 0xc3, - 0xf5, 0x8b, 0xf3, 0xc3, 0xf5, 0x8b, 0xf4, 0xc3, 0xf5, 0x8b, 0xf4, 0xc3, - 0xf5, 0x8b, 0xf4, 0xc3, 0xf5, 0x8b, 0xf4, 0xc3, 0xf5, 0x8b, 0xf5, 0xc3, - 0xf5, 0x8b, 0xf4, 0xc3, 0xf5, 0x8b, 0xf5, 0xc3, 0xf5, 0x8b, 0xf4, 0xc3, - 0xf5, 0x8b, 0xf5, 0xc3, 0xf5, 0x8b, 0xf4, 0xc3, 0xf6, 0x8b, 0xf5, 0xc3, - 0xf6, 0x8b, 0xf4, 0xc3, 0xf6, 0x8b, 0xf5, 0xc3, 0xf6, 0x8b, 0xf8, 0xc3, - 0xf7, 0x8c, 0xf8, 0xc3, 0xf7, 0x8b, 0xf8, 0xc3, 0xf7, 0x8c, 0xf8, 0xc3, - 0xf7, 0x8b, 0xf8, 0xc3, 0xf8, 0x8c, 0xf8, 0xc3, 0xf8, 0x8b, 0xf8, 0xc3, - 0xf8, 0x8b, 0xf8, 0xc3, 0xf8, 0x8b, 0xf8, 0xc3, 0xf8, 0x8b, 0xf9, 0xc3, - 0xf8, 0x8b, 0xf9, 0xc3, 0xf8, 0x8b, 0xf9, 0xc3, 0xf8, 0x8b, 0xf9, 0xc3, - 0xf8, 0x8b, 0xfa, 0xc3, 0xf8, 0x8b, 0xfa, 0xc3, 0xf8, 0x8b, 0xfa, 0xc1, - 0xf8, 0x8b, 0xfa, 0xc3, 0xf8, 0x8b, 0xfa, 0xc1, 0xf8, 0x8b, 0xfb, 0xc3, - 0xf8, 0x8b, 0xfb, 0xc1, 0xf8, 0x8b, 0xfb, 0xc3, 0xf8, 0x8b, 0xfb, 0xc1, - 0xf8, 0x8b, 0xfc, 0xc3, 0xf8, 0x8b, 0xfc, 0xc1, 0xf8, 0x8b, 0xfc, 0xc3, - 0xf8, 0x8b, 0xfc, 0xc1, 0xf8, 0x8b, 0xfc, 0xc3, 0xf8, 0x8b, 0xfd, 0xc1, - 0xf8, 0x8b, 0xfd, 0xc3, 0xf8, 0x8b, 0xfd, 0xc1, 0xf8, 0x8b, 0xfd, 0xc3, - 0xf8, 0x8b, 0xfe, 0xc1, 0xf8, 0x8b, 0xfe, 0xc3, 0xf8, 0x8b, 0xfe, 0xc1, - 0xf8, 0x8b, 0xfe, 0xc3, 0xf8, 0x8b, 0xfe, 0xc1, 0xf8, 0x8b, 0xff, 0xc3, - 0xf8, 0x8b, 0xff, 0xc1, 0xf8, 0x8b, 0x03, 0xc9, 0x8f, 0x8b, 0x0a, 0xcb, - 0x8e, 0x8b, 0x0f, 0xc9, 0x8f, 0x8b, 0x14, 0xcb, 0x8e, 0x8b, 0x17, 0xc9, - 0x8f, 0x8b, 0x1b, 0xcb, 0x8e, 0x8b, 0x1e, 0xc9, 0x8f, 0x8b, 0x20, 0xcb, - 0x8e, 0x8b, 0x23, 0xc9, 0x8f, 0x8b, 0x25, 0xcb, 0x8e, 0x8b, 0x27, 0xc9, - 0x8f, 0x8b, 0x29, 0xcb, 0x8e, 0x8b, 0x2b, 0xc9, 0x8f, 0x8b, 0x2d, 0xcb, - 0x8e, 0x8b, 0x2f, 0xc9, 0x8f, 0x8b, 0x31, 0xcb, 0x8e, 0x8b, 0x32, 0xc9, - 0x8f, 0x8b, 0x34, 0xcb, 0x8e, 0x8b, 0x35, 0xc9, 0x8f, 0x8b, 0x37, 0xcb, - 0x8e, 0x8b, 0x38, 0xc9, 0x8f, 0x8b, 0x3a, 0xc7, 0x8f, 0x8b, 0x3b, 0xc9, - 0x8f, 0x8b, 0x3c, 0xc7, 0x8f, 0x8b, 0x3e, 0xc9, 0x8f, 0x8b, 0x3f, 0xc7, - 0x8f, 0x8b, 0x40, 0xc9, 0x8f, 0x8b, 0x42, 0xc7, 0x8f, 0x8b, 0x43, 0xc9, - 0x8f, 0x8b, 0x44, 0xc7, 0x8f, 0x8b, 0x45, 0xc9, 0x8f, 0x8b, 0x46, 0xc7, - 0x8f, 0x8b, 0x47, 0xc9, 0x8f, 0x8b, 0x48, 0xc7, 0x8f, 0x8b, 0x49, 0xc9, - 0x8f, 0x8b, 0x4a, 0xc7, 0x8f, 0x8b, 0x4b, 0xc9, 0x8f, 0x8b, 0x4c, 0xc7, - 0x8f, 0x8b, 0x4d, 0xc9, 0x8f, 0x8b, 0x4e, 0xc7, 0x8f, 0x8b, 0x4f, 0xc9, - 0x8f, 0x8b, 0x50, 0xc7, 0x8f, 0x8b, 0x51, 0xc9, 0x8f, 0x8b, 0x52, 0xc7, - 0x8f, 0x8b, 0x53, 0xc9, 0x8f, 0x8b, 0x54, 0xc7, 0x8f, 0x8b, 0x55, 0xc9, - 0x8f, 0x8b, 0x56, 0xc7, 0x8f, 0x8b, 0x57, 0xc9, 0x8f, 0x8b, 0x58, 0xc7, - 0x8f, 0x8b, 0x58, 0xc5, 0x90, 0x8b, 0x59, 0xc7, 0x8f, 0x8b, 0x5a, 0xc5, - 0x90, 0x8b, 0x5b, 0xc7, 0x8f, 0x8b, 0x5c, 0xc5, 0x90, 0x8b, 0x5d, 0xc7, - 0x8f, 0x8b, 0x5d, 0xc5, 0x90, 0x8b, 0x5e, 0xc7, 0x8f, 0x8b, 0x5f, 0xc5, - 0x90, 0x8b, 0x60, 0xc7, 0x8f, 0x8b, 0x60, 0xc5, 0x90, 0x8b, 0x61, 0xc7, - 0x8f, 0x8b, 0x62, 0xc5, 0x90, 0x8b, 0x63, 0xc7, 0x8f, 0x8b, 0x63, 0xc5, - 0x90, 0x8b, 0x64, 0xc7, 0x8f, 0x8b, 0x65, 0xc5, 0x90, 0x8b, 0x66, 0xc7, - 0x8f, 0x8b, 0x66, 0xc5, 0x90, 0x8b, 0x67, 0xc7, 0x8f, 0x8b, 0x68, 0xc5, - 0x90, 0x8b, 0x68, 0xc7, 0x8f, 0x8b, 0x69, 0xc5, 0x90, 0x8b, 0x6a, 0xc7, - 0x8f, 0x8b, 0x6a, 0xc5, 0x90, 0x8b, 0x6b, 0xc7, 0x8f, 0x8b, 0x6c, 0xc5, - 0x90, 0x8b, 0x6c, 0xc7, 0x8f, 0x8b, 0x6d, 0xc5, 0x90, 0x8b, 0x6e, 0xc7, - 0x8f, 0x8b, 0x6e, 0xc5, 0x90, 0x8b, 0x6f, 0xc7, 0x8f, 0x8b, 0x70, 0xc5, - 0x90, 0x8b, 0x70, 0xc7, 0x8f, 0x8b, 0x71, 0xc5, 0x90, 0x8b, 0x72, 0xc7, - 0x8f, 0x8b, 0x72, 0xc5, 0x90, 0x8b, 0x73, 0xc7, 0x8f, 0x8b, 0x73, 0xc5, - 0x90, 0x8b, 0x74, 0xc7, 0x8f, 0x8b, 0x75, 0xc5, 0x90, 0x8b, 0x75, 0xc7, - 0x8f, 0x8b, 0x76, 0xc5, 0x90, 0x8b, 0x76, 0xc7, 0x8f, 0x8b, 0x77, 0xc5, - 0x90, 0x8b, 0x78, 0xc3, 0x90, 0x8b, 0x78, 0xc5, 0x90, 0x8b, 0x79, 0xc3, - 0x90, 0x8b, 0x79, 0xc5, 0x90, 0x8b, 0x7a, 0xc3, 0x90, 0x8b, 0x7a, 0xc5, - 0x90, 0x8b, 0x7b, 0xc3, 0x90, 0x8b, 0x7c, 0xc5, 0x90, 0x8b, 0x7c, 0xc3, - 0x90, 0x8b, 0x7d, 0xc5, 0x90, 0x8b, 0x7d, 0xc3, 0x90, 0x8b, 0x7e, 0xc5, - 0x90, 0x8b, 0x7e, 0xc3, 0x90, 0x8b, 0x7f, 0xc5, 0x90, 0x8b, 0x7f, 0xc3, - 0x90, 0x8b, 0x80, 0xc5, 0x90, 0x8b, 0x81, 0xc3, 0x90, 0x8b, 0x81, 0xc5, - 0x90, 0x8b, 0x82, 0xc3, 0x90, 0x8b, 0x82, 0xc5, 0x90, 0x8b, 0x83, 0xc3, - 0x90, 0x8b, 0x83, 0xc5, 0x90, 0x8b, 0x84, 0xc3, 0x90, 0x8b, 0x84, 0xc5, - 0x90, 0x8b, 0x85, 0xc3, 0x90, 0x8b, 0x85, 0xc5, 0x90, 0x8b, 0x86, 0xc3, - 0x90, 0x8b, 0x86, 0xc5, 0x90, 0x8b, 0x87, 0xc3, 0x90, 0x8b, 0x87, 0xc5, - 0x90, 0x8b, 0x88, 0xc3, 0x90, 0x8b, 0x88, 0xc5, 0x90, 0x8b, 0x89, 0xc3, - 0x90, 0x8b, 0x89, 0xc5, 0x90, 0x8b, 0x8a, 0xc3, 0x90, 0x8b, 0x8a, 0xc5, - 0x90, 0x8b, 0x8b, 0xc3, 0x90, 0x8b, 0x8b, 0xc5, 0x90, 0x8b, 0x8c, 0xc3, - 0x90, 0x8b, 0x8c, 0xc5, 0x90, 0x8b, 0x8d, 0xc3, 0x90, 0x8b, 0x8d, 0xc3, - 0x91, 0x8b, 0x8e, 0xc3, 0x90, 0x8b, 0x8e, 0xc3, 0x91, 0x8b, 0x8e, 0xc3, - 0x90, 0x8b, 0x8f, 0xc3, 0x91, 0x8b, 0x8f, 0xc3, 0x90, 0x8b, 0x90, 0xc3, - 0x91, 0x8b, 0x90, 0xc3, 0x90, 0x8a, 0x90, 0xc3, 0x91, 0x8b, 0x90, 0xc3, - 0x91, 0x8a, 0x90, 0xc3, 0x92, 0x8b, 0x94, 0xc3, 0x92, 0x8b, 0x94, 0xc3, - 0x93, 0x8c, 0x94, 0xc3, 0x93, 0x8b, 0x94, 0xc3, 0x94, 0x8b, 0x94, 0xc3, - 0x93, 0x8b, 0x94, 0xc3, 0x94, 0x8b, 0x95, 0xc3, 0x93, 0x8b, 0x95, 0xc3, - 0x94, 0x8b, 0x96, 0xc3, 0x93, 0x8b, 0x96, 0xc3, 0x94, 0x8b, 0x97, 0xc3, - 0x93, 0x8b, 0x97, 0xc3, 0x94, 0x8b, 0x98, 0xc1, 0x94, 0x8b, 0x98, 0xc3, - 0x94, 0x8b, 0x98, 0xc1, 0x94, 0x8b, 0x99, 0xc3, 0x94, 0x8b, 0x99, 0xc1, - 0x94, 0x8b, 0x9a, 0xc3, 0x94, 0x8b, 0x9a, 0xc1, 0x94, 0x8b, 0x9a, 0xc3, - 0x94, 0x8b, 0x9b, 0xc3, 0x93, 0x8b, 0x9b, 0xc3, 0x94, 0x8b, 0x9c, 0xc3, - 0x93, 0x8b, 0x9c, 0xc3, 0x94, 0x8b, 0x9d, 0xbd, 0xa0, 0x8b, 0x9d, 0xbd, - 0x9f, 0x8b, 0x9d, 0xc3, 0xa5, 0x8b, 0x9e, 0xc4, 0xa5, 0x8b, 0x9e, 0xc3, - 0xa5, 0x8b, 0x9f, 0xc4, 0xa5, 0x8b, 0x9f, 0xc3, 0xa5, 0x8b, 0x9f, 0xc4, - 0xa5, 0x8b, 0xa0, 0xc3, 0xa5, 0x8b, 0xa0, 0xc4, 0xa5, 0x8b, 0xa1, 0xc3, - 0xa5, 0x8b, 0xa1, 0xc4, 0xa5, 0x8b, 0xa1, 0xc3, 0xa5, 0x8b, 0xa2, 0xc4, - 0xa5, 0x8b, 0xa2, 0xc3, 0xa5, 0x8b, 0xa3, 0xc4, 0xa5, 0x8b, 0xa3, 0xc3, - 0xa5, 0x8b, 0xa3, 0xc4, 0xa5, 0x8b, 0xa4, 0xc3, 0xa5, 0x8b, 0xa4, 0xc3, - 0xa6, 0x8b, 0xa5, 0xc3, 0xa5, 0x8b, 0xa5, 0xc3, 0xa6, 0x8b, 0xa5, 0xc3, - 0xa5, 0x8b, 0xa5, 0xc3, 0xa6, 0x8b, 0xa5, 0xc3, 0xa6, 0x8b, 0xa5, 0xc3, - 0xa6, 0x8b, 0xa5, 0xc3, 0xa7, 0x89, 0xa5, 0xc3, 0xa7, 0x8b, 0xa5, 0xc3, - 0xa8, 0x89, 0xa5, 0xc3, 0xa8, 0x8b, 0xa5, 0xc3, 0xa8, 0x89, 0xa5, 0xc3, - 0xa9, 0x8b, 0xa5, 0xc3, 0xa9, 0x89, 0xa5, 0xc3, 0xaa, 0x8b, 0xa5, 0xc3, - 0xaa, 0x89, 0xa5, 0xc3, 0xaa, 0x8b, 0xa5, 0xc3, 0xab, 0x89, 0xa5, 0xc3, - 0xab, 0x8b, 0xa5, 0xc3, 0xab, 0x89, 0xa6, 0xc3, 0xac, 0x87, 0xa5, 0xc3, - 0xac, 0x89, 0xa6, 0xc3, 0xac, 0x87, 0xa5, 0xc3, 0xad, 0x89, 0xa6, 0xc3, - 0xad, 0x87, 0xa5, 0xc3, 0xae, 0x89, 0xa6, 0xc3, 0xae, 0x87, 0xa5, 0xc3, - 0xae, 0x89, 0xa6, 0xc3, 0xaf, 0x87, 0xa5, 0xc3, 0xaf, 0x89, 0xa6, 0xc3, - 0xaf, 0x87, 0xa5, 0xc3, 0xb0, 0x89, 0xa6, 0xc3, 0xb0, 0x87, 0xa5, 0xc3, - 0xb0, 0x89, 0xa6, 0xc3, 0xb1, 0x87, 0xa5, 0xc3, 0xb1, 0x89, 0xa6, 0xc3, - 0xb2, 0x87, 0xa5, 0xc3, 0xb2, 0x89, 0xa6, 0xc3, 0xb2, 0x87, 0xa5, 0xc3, - 0xb3, 0x89, 0xa6, 0xc3, 0xb3, 0x87, 0xa9, 0xc3, 0xb3, 0x7e, 0xa6, 0xc3, - 0xb4, 0x87, 0xa9, 0xc3, 0xb4, 0x7e, 0xa6, 0xc3, 0xb4, 0x87, 0xa9, 0xc3, - 0xb5, 0x7e, 0xaa, 0xc3, 0xb5, 0x7d, 0xa9, 0xc3, 0xb5, 0x7e, 0xaa, 0xc3, - 0xb6, 0x7d, 0xa9, 0xc3, 0xb6, 0x7e, 0xaa, 0xc3, 0xb6, 0x7d, 0xa9, 0xc3, - 0xb7, 0x7e, 0xaa, 0xc3, 0xb7, 0x7d, 0xa9, 0xc3, 0xb7, 0x7e, 0xaa, 0xc3, - 0xb8, 0x7d, 0xa9, 0xc3, 0xb8, 0x7e, 0xba, 0xc3, 0xb8, 0x72, 0xbd, 0xc3, - 0xb9, 0x73, 0xbe, 0xc3, 0xb9, 0x73, 0xbd, 0xc3, 0xb9, 0x73, 0xbe, 0xc3, - 0xba, 0x73, 0xbd, 0xc3, 0xba, 0x73, 0xbe, 0xc3, 0xba, 0x73, 0xbd, 0xc3, - 0xbb, 0x73, 0xbe, 0xc3, 0xbb, 0x73, 0xbd, 0xc3, 0xbb, 0x73, 0xbe, 0xc3, - 0xbc, 0x73, 0xbd, 0xc3, 0xbc, 0x73, 0xc1, 0xc3, 0xbc, 0x74, 0xbd, 0xc3, - 0xbd, 0x73, 0xc1, 0xc3, 0xbd, 0x74, 0xc1, 0xc3, 0xbd, 0x74, 0xc1, 0xc3, - 0xbe, 0x74, 0xc1, 0xc3, 0xbe, 0x74, 0xc1, 0xc3, 0xbe, 0x74, 0xc1, 0xc3, - 0xbf, 0x74, 0xc1, 0xc3, 0xbf, 0x74, 0xc1, 0xc3, 0xbf, 0x74, 0xc1, 0xc3, - 0xc0, 0x74, 0xc1, 0xc3, 0xc0, 0x74, 0xc1, 0xc3, 0xc0, 0x74, 0xc4, 0xc3, - 0xc1, 0x75, 0xc5, 0xc3, 0xc1, 0x75, 0xc4, 0xc3, 0xc1, 0x75, 0xc5, 0xc3, - 0xc1, 0x75, 0xc4, 0xc3, 0xc2, 0x75, 0xc5, 0xc3, 0xc2, 0x75, 0xc4, 0xc3, - 0xc2, 0x75, 0xc5, 0xc3, 0xc3, 0x75, 0xc4, 0xc3, 0xc3, 0x75, 0xc5, 0xc3, - 0xc3, 0x75, 0xc4, 0xc3, 0xc4, 0x75, 0xc8, 0xc3, 0xc4, 0x76, 0xc8, 0xc3, - 0xc4, 0x76, 0xc8, 0xc3, 0xc5, 0x76, 0xc8, 0xc3, 0xc5, 0x76, 0xc8, 0xc3, - 0xc5, 0x76, 0xc8, 0xc3, 0xc6, 0x76, 0xc8, 0xc3, 0xc6, 0x76, 0xc8, 0xc3, - 0xc6, 0x76, 0xc8, 0xc3, 0xc6, 0x76, 0xc8, 0xc3, 0xc7, 0x76, 0xc8, 0xc3, - 0xc7, 0x76, 0xcb, 0xc3, 0xc7, 0x77, 0xcb, 0xc3, 0xc8, 0x77, 0xcb, 0xc3, - 0xc8, 0x77, 0xcb, 0xc3, 0xc8, 0x77, 0xcb, 0xc3, 0xc9, 0x77, 0xcb, 0xc3, - 0xc9, 0x77, 0xcb, 0xc3, 0xc9, 0x77, 0xd4, 0xc3, 0xc9, 0x94, 0xd4, 0xc3, - 0xca, 0x93, 0xd4, 0xc3, 0xca, 0x94, 0xd4, 0xc3, 0xca, 0x93, 0xd4, 0xc3, - 0xcb, 0x94, 0xd4, 0xc3, 0xcb, 0x93, 0xd4, 0xc3, 0xcb, 0x94, 0xd4, 0xc3, - 0xcc, 0x93, 0xd4, 0xc3, 0xcc, 0x94, 0xd4, 0xc3, 0xcc, 0x93, 0xd4, 0xc3, - 0xcc, 0x94, 0xd4, 0xc3, 0xcd, 0x93, 0xd4, 0xc3, 0xcd, 0x94, 0xd4, 0xc3, - 0xcd, 0x93, 0xd4, 0xc3, 0xce, 0x94, 0xd4, 0xc3, 0xce, 0x93, 0xd4, 0xc3, - 0xce, 0x94, 0xd4, 0xc3, 0xce, 0x93, 0xd4, 0xc3, 0xcf, 0x94, 0xd4, 0xc3, - 0xcf, 0x93, 0xd4, 0xc3, 0xcf, 0x94, 0xd4, 0xc3, 0xd0, 0x93, 0xd4, 0xc3, - 0xd0, 0x93, 0xd4, 0xc3, 0xd0, 0x93, 0xd4, 0xc3, 0xd0, 0x93, 0xd4, 0xc3, - 0xd1, 0x93, 0xd4, 0xc3, 0xd1, 0x93, 0xd4, 0xc3, 0xd1, 0x93, 0xd4, 0xc3, - 0xd2, 0x93, 0xd4, 0xc3, 0xd2, 0x93, 0xd4, 0xc3, 0xd2, 0x93, 0xd4, 0xc3, - 0xd2, 0x93, 0xd4, 0xc3, 0xd3, 0x93, 0xd4, 0xc3, 0xd3, 0x93, 0xd4, 0xc3, - 0xd3, 0x93, 0xd4, 0xc3, 0xd4, 0x93, 0xd4, 0xc3, 0xd4, 0x93, 0xd4, 0xc3, - 0xd4, 0x93, 0xd4, 0xc3, 0xd4, 0x93, 0xd5, 0xc3, 0xd5, 0x93, 0xd5, 0xc3, - 0xd5, 0x93, 0xd5, 0xc3, 0xd5, 0x93, 0xd6, 0xc3, 0xd6, 0x93, 0xd6, 0xc3, - 0xd6, 0x93, 0xd6, 0xc3, 0xd6, 0x93, 0xd6, 0xc3, 0xd6, 0x93, 0xd6, 0xc3, - 0xd7, 0x93, 0xd6, 0xc3, 0xd7, 0x93, 0xd6, 0xc3, 0xd7, 0x93, 0xd6, 0xc3, - 0xd7, 0x93, 0xd6, 0xc3, 0xd8, 0x93, 0xd6, 0xc3, 0xd8, 0x93, 0xd6, 0xc3, - 0xd8, 0x93, 0xd9, 0xc3, 0xd9, 0x94, 0xd9, 0xc3, 0xd9, 0x94, 0xd9, 0xc3, - 0xd9, 0x94, 0xd9, 0xc3, 0xd9, 0x94, 0xd9, 0xc3, 0xda, 0x94, 0xd9, 0xc3, - 0xda, 0x94, 0xd9, 0xc3, 0xda, 0x94, 0xd9, 0xc3, 0xda, 0x94, 0xd9, 0xc3, - 0xdb, 0x94, 0xd9, 0xc3, 0xdb, 0x94, 0xd9, 0xc3, 0xdb, 0x94, 0xdb, 0xc3, - 0xdb, 0x95, 0xdc, 0xc3, 0xdc, 0x95, 0xdc, 0xc3, 0xdc, 0x95, 0xdc, 0xc3, - 0xdc, 0x95, 0xdc, 0xc3, 0xdd, 0x95, 0xdc, 0xc3, 0xdd, 0x95, 0xdc, 0xc3, - 0xdd, 0x95, 0xdc, 0xc3, 0xdd, 0x95, 0xdc, 0xc3, 0xde, 0x95, 0xdc, 0xc3, - 0xde, 0x95, 0xdc, 0xc3, 0xde, 0x95, 0xde, 0xc3, 0xde, 0x96, 0xdf, 0xc3, - 0xdf, 0x96, 0xdf, 0xc3, 0xdf, 0x96, 0xdf, 0xc3, 0xdf, 0x96, 0xdf, 0xc3, - 0xdf, 0x96, 0xdf, 0xc3, 0xe0, 0x96, 0xdf, 0xc3, 0xe0, 0x96, 0xdf, 0xc3, - 0xe0, 0x96, 0xdf, 0xc3, 0xe1, 0x96, 0xdf, 0xc3, 0xe1, 0x96, 0xdf, 0xc3, - 0xe1, 0x96, 0xe1, 0xc3, 0xe1, 0x97, 0xe2, 0xc3, 0xe2, 0x97, 0xe2, 0xc3, - 0xe2, 0x97, 0xe2, 0xc3, 0xe2, 0x97, 0xe2, 0xc3, 0xe2, 0x97, 0xe2, 0xc3, - 0xe3, 0x97, 0xe2, 0xc3, 0xe3, 0x97, 0xe2, 0xc3, 0xe3, 0x97, 0xe2, 0xc3, - 0xe3, 0x97, 0xea, 0xc3, 0xe4, 0x8b, 0xea, 0xc3, 0xe4, 0x8b, 0xea, 0xc3, - 0xe4, 0x8b, 0xea, 0xc3, 0xe4, 0x8b, 0xea, 0xc3, 0xe5, 0x8b, 0xea, 0xc3, - 0xe5, 0x8b, 0xea, 0xc3, 0xe5, 0x8b, 0xea, 0xc3, 0xe5, 0x8b, 0xea, 0xc3, - 0xe6, 0x8b, 0xea, 0xc3, 0xe6, 0x8b, 0xea, 0xc3, 0xe6, 0x8b, 0xea, 0xc3, - 0xe6, 0x8b, 0xea, 0xc3, 0xe7, 0x8b, 0xea, 0xc3, 0xe7, 0x8b, 0xea, 0xc3, - 0xe7, 0x8b, 0xea, 0xc3, 0xe7, 0x8b, 0xea, 0xc3, 0xe8, 0x8b, 0xea, 0xc3, - 0xe8, 0x8b, 0xea, 0xc3, 0xe8, 0x8b, 0xea, 0xc3, 0xe8, 0x8b, 0xea, 0xc3, - 0xe9, 0x8b, 0xea, 0xc3, 0xe9, 0x8b, 0xea, 0xc3, 0xe9, 0x8b, 0xea, 0xc3, - 0xe9, 0x8b, 0xea, 0xc3, 0xe9, 0x8b, 0xea, 0xc3, 0xe9, 0x8b, 0xea, 0xc3, - 0xe9, 0x8b, 0xea, 0xc3, 0xe9, 0x8b, 0xeb, 0xc4, 0xeb, 0x8b, 0xeb, 0xc4, - 0xeb, 0x8b, 0xeb, 0xc4, 0xeb, 0x8b, 0xeb, 0xc4, 0xeb, 0x8b, 0xec, 0xc4, - 0xec, 0x8b, 0xec, 0xc4, 0xeb, 0x8b, 0xec, 0xc4, 0xec, 0x8b, 0xec, 0xc4, - 0xeb, 0x8b, 0xec, 0xc4, 0xec, 0x8b, 0xed, 0xc5, 0xed, 0x8b, 0xed, 0xc5, - 0xed, 0x8b, 0xed, 0xc5, 0xed, 0x8b, 0xed, 0xc5, 0xed, 0x8b, 0xee, 0xc5, - 0xee, 0x8b, 0xee, 0xc5, 0xee, 0x8b, 0xee, 0xc5, 0xee, 0x8b, 0xee, 0xc5, - 0xee, 0x8b, 0xef, 0xc5, 0xef, 0x8b, 0xef, 0xc5, 0xef, 0x8b, 0xef, 0xc5, - 0xef, 0x8b, 0xef, 0xc5, 0xef, 0x8b, 0xf0, 0xc5, 0xef, 0x8b, 0xf0, 0xc5, - 0xef, 0x8b, 0xf0, 0xc5, 0xef, 0x8b, 0xf0, 0xc6, 0xf0, 0x8b, 0xf1, 0xc6, - 0xf1, 0x8b, 0xf1, 0xc6, 0xf1, 0x8b, 0xf1, 0xc6, 0xf1, 0x8b, 0xf1, 0xc6, - 0xf1, 0x8b, 0xf2, 0xc6, 0xf2, 0x8b, 0xf2, 0xc6, 0xf2, 0x8b, 0xf2, 0xc6, - 0xf2, 0x8b, 0xf2, 0xc6, 0xf2, 0x8b, 0xf2, 0xc6, 0xf2, 0x8b, 0xf3, 0xc6, - 0xf3, 0x8b, 0xf3, 0xc6, 0xf3, 0x8b, 0xf3, 0xc3, 0xf5, 0x8b, 0xf3, 0xc3, - 0xf5, 0x8b, 0xf4, 0xc3, 0xf5, 0x8b, 0xf4, 0xc3, 0xf5, 0x8b, 0xf4, 0xc3, - 0xf5, 0x8b, 0xf4, 0xc3, 0xf5, 0x8b, 0xf5, 0xc3, 0xf5, 0x8a, 0xf4, 0xc3, - 0xf5, 0x8b, 0xf5, 0xc3, 0xf5, 0x8a, 0xf4, 0xc3, 0xf5, 0x8b, 0xf5, 0xc3, - 0xf5, 0x8a, 0xf4, 0xc3, 0xf6, 0x8b, 0xf5, 0xc3, 0xf6, 0x8a, 0xf4, 0xc3, - 0xf6, 0x8b, 0xf8, 0xc3, 0xf6, 0x8b, 0xf8, 0xc3, 0xf7, 0x8b, 0xf8, 0xc3, - 0xf7, 0x8b, 0xf8, 0xc3, 0xf7, 0x8b, 0xf8, 0xc3, 0xf7, 0x8b, 0xf8, 0xc3, - 0xf8, 0x8b, 0xf8, 0xc3, 0xf8, 0x8b, 0xf8, 0xc2, 0xf8, 0x8b, 0xf8, 0xc3, - 0xf8, 0x8b, 0xf8, 0xc2, 0xf8, 0x8b, 0xf9, 0xc3, 0xf8, 0x8b, 0xf9, 0xc2, - 0xf8, 0x8b, 0xf9, 0xc3, 0xf8, 0x8b, 0xf9, 0xc2, 0xf8, 0x8b, 0xfa, 0xc3, - 0xf8, 0x8b, 0xfa, 0xc2, 0xf8, 0x8b, 0xfa, 0xc3, 0xf8, 0x8b, 0xfa, 0xc2, - 0xf8, 0x8b, 0xfa, 0xc3, 0xf8, 0x8b, 0xfb, 0xc2, 0xf8, 0x8b, 0xfb, 0xc3, - 0xf8, 0x8b, 0xfb, 0xc2, 0xf8, 0x8b, 0xfb, 0xc3, 0xf8, 0x8b, 0xfc, 0xc2, - 0xf8, 0x8b, 0xfc, 0xc1, 0xf8, 0x8b, 0xfc, 0xc2, 0xf8, 0x8b, 0xfc, 0xc1, - 0xf8, 0x8b, 0xfc, 0xc2, 0xf8, 0x8b, 0xfd, 0xc1, 0xf8, 0x8b, 0xfd, 0xc2, - 0xf8, 0x8b, 0xfd, 0xc1, 0xf8, 0x8b, 0xfd, 0xc2, 0xf8, 0x8b, 0xfe, 0xc1, - 0xf8, 0x8b, 0xfe, 0xc2, 0xf8, 0x8b, 0xfe, 0xc1, 0xf8, 0x8b, 0xfe, 0xc2, - 0xf8, 0x8b, 0xfe, 0xc1, 0xf8, 0x8b, 0xff, 0xc2, 0xf8, 0x8b, 0xff, 0xc1, - 0xf8, 0x8b, 0x03, 0xc9, 0x8f, 0x8c, 0x0a, 0xc9, 0x8f, 0x8c, 0x0f, 0xc9, - 0x8f, 0x8c, 0x14, 0xcb, 0x8e, 0x8c, 0x17, 0xc9, 0x8f, 0x8c, 0x1b, 0xcb, - 0x8e, 0x8c, 0x1e, 0xc9, 0x8f, 0x8c, 0x20, 0xcb, 0x8e, 0x8c, 0x23, 0xc9, - 0x8f, 0x8c, 0x25, 0xc7, 0x8f, 0x8c, 0x27, 0xc9, 0x8f, 0x8c, 0x29, 0xc7, - 0x8f, 0x8c, 0x2b, 0xc9, 0x8f, 0x8c, 0x2d, 0xc7, 0x8f, 0x8c, 0x2f, 0xc9, - 0x8f, 0x8c, 0x31, 0xc7, 0x8f, 0x8c, 0x32, 0xc9, 0x8f, 0x8c, 0x34, 0xc7, - 0x8f, 0x8c, 0x35, 0xc9, 0x8f, 0x8c, 0x37, 0xc7, 0x8f, 0x8c, 0x38, 0xc9, - 0x8f, 0x8c, 0x3a, 0xc7, 0x8f, 0x8c, 0x3b, 0xc9, 0x8f, 0x8c, 0x3c, 0xc7, - 0x8f, 0x8c, 0x3e, 0xc9, 0x8f, 0x8c, 0x3f, 0xc7, 0x8f, 0x8c, 0x40, 0xc9, - 0x8f, 0x8c, 0x42, 0xc7, 0x8f, 0x8c, 0x43, 0xc9, 0x8f, 0x8c, 0x44, 0xc7, - 0x8f, 0x8c, 0x45, 0xc9, 0x8f, 0x8c, 0x46, 0xc7, 0x8f, 0x8c, 0x47, 0xc9, - 0x8f, 0x8c, 0x48, 0xc7, 0x8f, 0x8c, 0x49, 0xc9, 0x8f, 0x8c, 0x4a, 0xc7, - 0x8f, 0x8c, 0x4b, 0xc9, 0x8f, 0x8c, 0x4c, 0xc7, 0x8f, 0x8c, 0x4d, 0xc9, - 0x8f, 0x8c, 0x4e, 0xc7, 0x8f, 0x8c, 0x4f, 0xc9, 0x8f, 0x8c, 0x50, 0xc7, - 0x8f, 0x8c, 0x51, 0xc9, 0x8f, 0x8c, 0x52, 0xc7, 0x8f, 0x8c, 0x53, 0xc9, - 0x8f, 0x8c, 0x54, 0xc7, 0x8f, 0x8c, 0x55, 0xc9, 0x8f, 0x8c, 0x56, 0xc7, - 0x8f, 0x8c, 0x57, 0xc9, 0x8f, 0x8c, 0x58, 0xc7, 0x8f, 0x8c, 0x58, 0xc9, - 0x8f, 0x8c, 0x59, 0xc7, 0x8f, 0x8c, 0x5a, 0xc9, 0x8f, 0x8c, 0x5b, 0xc7, - 0x8f, 0x8c, 0x5c, 0xc9, 0x8f, 0x8c, 0x5d, 0xc7, 0x8f, 0x8c, 0x5d, 0xc9, - 0x8f, 0x8c, 0x5e, 0xc7, 0x8f, 0x8c, 0x5f, 0xc9, 0x8f, 0x8c, 0x60, 0xc7, - 0x8f, 0x8c, 0x60, 0xc9, 0x8f, 0x8c, 0x61, 0xc7, 0x8f, 0x8c, 0x62, 0xc9, - 0x8f, 0x8c, 0x63, 0xc7, 0x8f, 0x8c, 0x63, 0xc9, 0x8f, 0x8c, 0x64, 0xc7, - 0x8f, 0x8c, 0x65, 0xc9, 0x8f, 0x8c, 0x66, 0xc7, 0x8f, 0x8c, 0x66, 0xc9, - 0x8f, 0x8c, 0x67, 0xc7, 0x8f, 0x8c, 0x68, 0xc5, 0x90, 0x8c, 0x68, 0xc7, - 0x8f, 0x8c, 0x69, 0xc5, 0x90, 0x8c, 0x6a, 0xc7, 0x8f, 0x8c, 0x6a, 0xc5, - 0x90, 0x8c, 0x6b, 0xc7, 0x8f, 0x8c, 0x6c, 0xc5, 0x90, 0x8c, 0x6c, 0xc7, - 0x8f, 0x8c, 0x6d, 0xc5, 0x90, 0x8c, 0x6e, 0xc7, 0x8f, 0x8c, 0x6e, 0xc5, - 0x90, 0x8c, 0x6f, 0xc7, 0x8f, 0x8c, 0x70, 0xc5, 0x90, 0x8c, 0x70, 0xc7, - 0x8f, 0x8c, 0x71, 0xc5, 0x90, 0x8c, 0x72, 0xc7, 0x8f, 0x8c, 0x72, 0xc5, - 0x90, 0x8c, 0x73, 0xc7, 0x8f, 0x8c, 0x73, 0xc5, 0x90, 0x8c, 0x74, 0xc7, - 0x8f, 0x8c, 0x75, 0xc5, 0x90, 0x8c, 0x75, 0xc7, 0x8f, 0x8c, 0x76, 0xc5, - 0x90, 0x8c, 0x76, 0xc7, 0x8f, 0x8c, 0x77, 0xc5, 0x90, 0x8c, 0x78, 0xc7, - 0x8f, 0x8c, 0x78, 0xc5, 0x90, 0x8c, 0x79, 0xc7, 0x8f, 0x8c, 0x79, 0xc5, - 0x90, 0x8c, 0x7a, 0xc7, 0x8f, 0x8c, 0x7a, 0xc5, 0x90, 0x8c, 0x7b, 0xc7, - 0x8f, 0x8c, 0x7c, 0xc5, 0x90, 0x8c, 0x7c, 0xc7, 0x8f, 0x8c, 0x7d, 0xc5, - 0x90, 0x8c, 0x7d, 0xc7, 0x8f, 0x8c, 0x7e, 0xc5, 0x90, 0x8c, 0x7e, 0xc3, - 0x90, 0x8c, 0x7f, 0xc5, 0x90, 0x8c, 0x7f, 0xc3, 0x90, 0x8c, 0x80, 0xc5, - 0x90, 0x8c, 0x81, 0xc3, 0x90, 0x8c, 0x81, 0xc5, 0x90, 0x8c, 0x82, 0xc3, - 0x90, 0x8c, 0x82, 0xc5, 0x90, 0x8c, 0x83, 0xc3, 0x90, 0x8c, 0x83, 0xc5, - 0x90, 0x8c, 0x84, 0xc3, 0x90, 0x8c, 0x84, 0xc5, 0x90, 0x8c, 0x85, 0xc3, - 0x90, 0x8c, 0x85, 0xc5, 0x90, 0x8c, 0x86, 0xc3, 0x90, 0x8c, 0x86, 0xc5, - 0x90, 0x8c, 0x87, 0xc3, 0x90, 0x8c, 0x87, 0xc5, 0x90, 0x8c, 0x88, 0xc3, - 0x90, 0x8c, 0x88, 0xc5, 0x90, 0x8c, 0x89, 0xc3, 0x90, 0x8c, 0x89, 0xc5, - 0x90, 0x8c, 0x8a, 0xc3, 0x90, 0x8c, 0x8a, 0xc5, 0x90, 0x8c, 0x8b, 0xc3, - 0x90, 0x8c, 0x8b, 0xc5, 0x90, 0x8c, 0x8c, 0xc3, 0x90, 0x8c, 0x8c, 0xc5, - 0x90, 0x8c, 0x8d, 0xc3, 0x90, 0x8c, 0x8d, 0xc3, 0x91, 0x8c, 0x8e, 0xc3, - 0x90, 0x8c, 0x8e, 0xc3, 0x91, 0x8c, 0x8e, 0xc3, 0x90, 0x8c, 0x8f, 0xc3, - 0x91, 0x8c, 0x8f, 0xc3, 0x90, 0x8c, 0x90, 0xc3, 0x91, 0x8c, 0x8f, 0xc3, - 0x90, 0x8c, 0x90, 0xc3, 0x91, 0x8c, 0x8f, 0xc3, 0x91, 0x8c, 0x90, 0xc3, - 0x92, 0x8c, 0x94, 0xc3, 0x92, 0x8c, 0x94, 0xc3, 0x93, 0x8c, 0x94, 0xc3, - 0x93, 0x8c, 0x94, 0xc3, 0x94, 0x8c, 0x94, 0xc3, 0x93, 0x8c, 0x94, 0xc3, - 0x94, 0x8c, 0x95, 0xc3, 0x93, 0x8c, 0x95, 0xc3, 0x94, 0x8c, 0x96, 0xc3, - 0x93, 0x8c, 0x96, 0xc3, 0x94, 0x8c, 0x97, 0xc3, 0x93, 0x8c, 0x97, 0xc3, - 0x94, 0x8c, 0x98, 0xc1, 0x94, 0x8c, 0x98, 0xc3, 0x94, 0x8c, 0x98, 0xc1, - 0x94, 0x8c, 0x99, 0xc3, 0x94, 0x8c, 0x99, 0xc1, 0x94, 0x8c, 0x9a, 0xc3, - 0x94, 0x8c, 0x9a, 0xc1, 0x94, 0x8c, 0x9a, 0xc3, 0x94, 0x8c, 0x9b, 0xc1, - 0x94, 0x8c, 0x9b, 0xc3, 0x94, 0x8c, 0x9c, 0xc1, 0x94, 0x8c, 0x9c, 0xc2, - 0x94, 0x8c, 0x9d, 0xbc, 0x9d, 0x8c, 0x9d, 0xc5, 0xa5, 0x8c, 0x9d, 0xc3, - 0xa5, 0x8c, 0x9e, 0xc5, 0xa5, 0x8c, 0x9e, 0xc3, 0xa5, 0x8c, 0x9f, 0xc5, - 0xa5, 0x8c, 0x9f, 0xc3, 0xa5, 0x8c, 0x9f, 0xc5, 0xa5, 0x8c, 0xa0, 0xc3, - 0xa5, 0x8c, 0xa0, 0xc5, 0xa5, 0x8c, 0xa1, 0xc3, 0xa5, 0x8c, 0xa1, 0xc5, - 0xa5, 0x8c, 0xa1, 0xc3, 0xa5, 0x8c, 0xa2, 0xc5, 0xa5, 0x8c, 0xa2, 0xc3, - 0xa5, 0x8c, 0xa3, 0xc5, 0xa5, 0x8c, 0xa3, 0xc3, 0xa5, 0x8c, 0xa3, 0xc5, - 0xa5, 0x8c, 0xa4, 0xc3, 0xa5, 0x8c, 0xa4, 0xc3, 0xa6, 0x8c, 0xa5, 0xc3, - 0xa5, 0x8c, 0xa5, 0xc3, 0xa6, 0x8c, 0xa5, 0xc3, 0xa5, 0x8c, 0xa5, 0xc3, - 0xa6, 0x8c, 0xa5, 0xc3, 0xa6, 0x8c, 0xa5, 0xc3, 0xa6, 0x8c, 0xa5, 0xc3, - 0xa7, 0x8a, 0xa5, 0xc3, 0xa7, 0x8c, 0xa5, 0xc3, 0xa8, 0x8a, 0xa5, 0xc3, - 0xa8, 0x8c, 0xa5, 0xc3, 0xa8, 0x8a, 0xa5, 0xc3, 0xa9, 0x8c, 0xa5, 0xc3, - 0xa9, 0x8a, 0xa5, 0xc3, 0xaa, 0x8c, 0xa5, 0xc3, 0xaa, 0x8a, 0xa5, 0xc3, - 0xaa, 0x8c, 0xa5, 0xc3, 0xab, 0x8a, 0xa5, 0xc3, 0xab, 0x8c, 0xa5, 0xc3, - 0xab, 0x8a, 0xa5, 0xc3, 0xac, 0x8c, 0xa5, 0xc3, 0xac, 0x8a, 0xa5, 0xc3, - 0xac, 0x8c, 0xa5, 0xc3, 0xad, 0x8a, 0xa5, 0xc3, 0xad, 0x8c, 0xa5, 0xc3, - 0xae, 0x8a, 0xa5, 0xc3, 0xae, 0x8c, 0xa5, 0xc3, 0xae, 0x8a, 0xa6, 0xc3, - 0xaf, 0x87, 0xa5, 0xc3, 0xaf, 0x8a, 0xa6, 0xc3, 0xaf, 0x87, 0xa5, 0xc3, - 0xb0, 0x8a, 0xa6, 0xc3, 0xb0, 0x87, 0xa5, 0xc3, 0xb0, 0x8a, 0xa6, 0xc3, - 0xb1, 0x87, 0xa5, 0xc3, 0xb1, 0x8a, 0xa6, 0xc3, 0xb2, 0x87, 0xa5, 0xc3, - 0xb2, 0x8a, 0xa6, 0xc3, 0xb2, 0x87, 0xa5, 0xc3, 0xb3, 0x8a, 0xa6, 0xc3, - 0xb3, 0x87, 0xa9, 0xc3, 0xb3, 0x7f, 0xa6, 0xc3, 0xb4, 0x87, 0xa9, 0xc3, - 0xb4, 0x7f, 0xaa, 0xc3, 0xb4, 0x7e, 0xa9, 0xc3, 0xb5, 0x7f, 0xaa, 0xc3, - 0xb5, 0x7e, 0xa9, 0xc3, 0xb5, 0x7f, 0xaa, 0xc3, 0xb6, 0x7e, 0xa9, 0xc3, - 0xb6, 0x7f, 0xaa, 0xc3, 0xb6, 0x7e, 0xa9, 0xc3, 0xb7, 0x7f, 0xaa, 0xc3, - 0xb7, 0x7e, 0xa9, 0xc3, 0xb7, 0x7f, 0xaa, 0xc3, 0xb8, 0x7e, 0xa9, 0xc3, - 0xb8, 0x7f, 0xaa, 0xc3, 0xb8, 0x7e, 0xbb, 0xc3, 0xb9, 0x73, 0xbc, 0xc3, - 0xb9, 0x73, 0xbb, 0xc3, 0xb9, 0x73, 0xbc, 0xc3, 0xba, 0x73, 0xbb, 0xc3, - 0xba, 0x73, 0xbf, 0xc3, 0xba, 0x74, 0xbf, 0xc3, 0xbb, 0x74, 0xbf, 0xc3, - 0xbb, 0x74, 0xbf, 0xc3, 0xbb, 0x74, 0xbf, 0xc3, 0xbc, 0x74, 0xbf, 0xc3, - 0xbc, 0x74, 0xbf, 0xc3, 0xbc, 0x74, 0xbf, 0xc3, 0xbd, 0x74, 0xbf, 0xc3, - 0xbd, 0x74, 0xbf, 0xc3, 0xbd, 0x74, 0xbf, 0xc3, 0xbe, 0x74, 0xc2, 0xc3, - 0xbe, 0x75, 0xbf, 0xc3, 0xbe, 0x74, 0xc2, 0xc3, 0xbf, 0x75, 0xc3, 0xc3, - 0xbf, 0x75, 0xc2, 0xc3, 0xbf, 0x75, 0xc3, 0xc3, 0xc0, 0x75, 0xc2, 0xc3, - 0xc0, 0x75, 0xc3, 0xc3, 0xc0, 0x75, 0xc2, 0xc3, 0xc1, 0x75, 0xc3, 0xc3, - 0xc1, 0x75, 0xc2, 0xc3, 0xc1, 0x75, 0xc3, 0xc3, 0xc1, 0x75, 0xc2, 0xc3, - 0xc2, 0x75, 0xc3, 0xc3, 0xc2, 0x75, 0xc6, 0xc3, 0xc2, 0x76, 0xc6, 0xc3, - 0xc3, 0x76, 0xc6, 0xc3, 0xc3, 0x76, 0xc6, 0xc3, 0xc3, 0x76, 0xc6, 0xc3, - 0xc4, 0x76, 0xc6, 0xc3, 0xc4, 0x76, 0xc6, 0xc3, 0xc4, 0x76, 0xc6, 0xc3, - 0xc5, 0x76, 0xc6, 0xc3, 0xc5, 0x76, 0xc6, 0xc3, 0xc5, 0x76, 0xc6, 0xc3, - 0xc6, 0x76, 0xc9, 0xc3, 0xc6, 0x77, 0xca, 0xc3, 0xc6, 0x77, 0xc9, 0xc3, - 0xc6, 0x77, 0xca, 0xc3, 0xc7, 0x77, 0xc9, 0xc3, 0xc7, 0x77, 0xca, 0xc3, - 0xc7, 0x77, 0xc9, 0xc3, 0xc8, 0x77, 0xca, 0xc3, 0xc8, 0x77, 0xc9, 0xc3, - 0xc8, 0x77, 0xca, 0xc3, 0xc9, 0x77, 0xc9, 0xc3, 0xc9, 0x77, 0xd4, 0xc3, - 0xc9, 0x93, 0xd4, 0xc3, 0xc9, 0x95, 0xd4, 0xc3, 0xca, 0x93, 0xd4, 0xc3, - 0xca, 0x95, 0xd4, 0xc3, 0xca, 0x93, 0xd4, 0xc3, 0xcb, 0x95, 0xd4, 0xc3, - 0xcb, 0x93, 0xd4, 0xc3, 0xcb, 0x93, 0xd4, 0xc3, 0xcc, 0x93, 0xd4, 0xc3, - 0xcc, 0x93, 0xd4, 0xc3, 0xcc, 0x93, 0xd4, 0xc3, 0xcc, 0x93, 0xd4, 0xc3, - 0xcd, 0x93, 0xd4, 0xc3, 0xcd, 0x93, 0xd4, 0xc3, 0xcd, 0x93, 0xd4, 0xc3, - 0xce, 0x93, 0xd4, 0xc3, 0xce, 0x93, 0xd4, 0xc3, 0xce, 0x93, 0xd4, 0xc3, - 0xce, 0x93, 0xd4, 0xc3, 0xcf, 0x93, 0xd4, 0xc3, 0xcf, 0x93, 0xd4, 0xc3, - 0xcf, 0x93, 0xd4, 0xc3, 0xd0, 0x93, 0xd4, 0xc3, 0xd0, 0x93, 0xd4, 0xc3, - 0xd0, 0x93, 0xd4, 0xc3, 0xd0, 0x93, 0xd4, 0xc3, 0xd1, 0x93, 0xd4, 0xc3, - 0xd1, 0x93, 0xd4, 0xc3, 0xd1, 0x93, 0xd4, 0xc3, 0xd2, 0x93, 0xd4, 0xc3, - 0xd2, 0x93, 0xd4, 0xc3, 0xd2, 0x93, 0xd4, 0xc3, 0xd2, 0x93, 0xd4, 0xc3, - 0xd3, 0x93, 0xd4, 0xc3, 0xd3, 0x93, 0xd4, 0xc3, 0xd3, 0x93, 0xd4, 0xc3, - 0xd4, 0x93, 0xd4, 0xc3, 0xd4, 0x93, 0xd4, 0xc3, 0xd4, 0x93, 0xd4, 0xc3, - 0xd4, 0x93, 0xd5, 0xc3, 0xd5, 0x93, 0xd4, 0xc3, 0xd5, 0x93, 0xd5, 0xc3, - 0xd5, 0x93, 0xd4, 0xc3, 0xd6, 0x93, 0xd5, 0xc3, 0xd6, 0x93, 0xd4, 0xc3, - 0xd6, 0x93, 0xd5, 0xc3, 0xd6, 0x93, 0xd7, 0xc3, 0xd7, 0x94, 0xd7, 0xc3, - 0xd7, 0x94, 0xd7, 0xc3, 0xd7, 0x94, 0xd7, 0xc3, 0xd7, 0x94, 0xd8, 0xc3, - 0xd8, 0x94, 0xd7, 0xc3, 0xd8, 0x94, 0xd8, 0xc3, 0xd8, 0x94, 0xd7, 0xc3, - 0xd9, 0x94, 0xd8, 0xc3, 0xd9, 0x94, 0xd7, 0xc3, 0xd9, 0x94, 0xd8, 0xc3, - 0xd9, 0x94, 0xd7, 0xc3, 0xda, 0x94, 0xd8, 0xc3, 0xda, 0x94, 0xda, 0xc3, - 0xda, 0x95, 0xda, 0xc3, 0xda, 0x95, 0xdb, 0xc3, 0xdb, 0x95, 0xda, 0xc3, - 0xdb, 0x95, 0xdb, 0xc3, 0xdb, 0x95, 0xda, 0xc3, 0xdb, 0x95, 0xdb, 0xc3, - 0xdc, 0x95, 0xda, 0xc3, 0xdc, 0x95, 0xdb, 0xc3, 0xdc, 0x95, 0xda, 0xc3, - 0xdd, 0x95, 0xdb, 0xc3, 0xdd, 0x95, 0xdd, 0xc3, 0xdd, 0x96, 0xdd, 0xc3, - 0xdd, 0x96, 0xde, 0xc3, 0xde, 0x96, 0xdd, 0xc3, 0xde, 0x96, 0xde, 0xc3, - 0xde, 0x96, 0xdd, 0xc3, 0xde, 0x96, 0xde, 0xc3, 0xdf, 0x96, 0xdd, 0xc3, - 0xdf, 0x96, 0xde, 0xc3, 0xdf, 0x96, 0xdd, 0xc3, 0xdf, 0x96, 0xde, 0xc3, - 0xe0, 0x96, 0xe0, 0xc3, 0xe0, 0x97, 0xe0, 0xc3, 0xe0, 0x97, 0xe1, 0xc3, - 0xe1, 0x97, 0xe0, 0xc3, 0xe1, 0x97, 0xe1, 0xc3, 0xe1, 0x97, 0xe0, 0xc3, - 0xe1, 0x97, 0xe1, 0xc3, 0xe2, 0x97, 0xe0, 0xc3, 0xe2, 0x97, 0xe1, 0xc3, - 0xe2, 0x97, 0xe0, 0xc3, 0xe2, 0x97, 0xe1, 0xc3, 0xe3, 0x97, 0xe3, 0xc3, - 0xe3, 0x98, 0xe3, 0xc3, 0xe3, 0x98, 0xe3, 0xc3, 0xe3, 0x98, 0xea, 0xc3, - 0xe4, 0x8c, 0xea, 0xc3, 0xe4, 0x8c, 0xea, 0xc3, 0xe4, 0x8c, 0xea, 0xc3, - 0xe4, 0x8c, 0xea, 0xc3, 0xe5, 0x8c, 0xea, 0xc3, 0xe5, 0x8c, 0xea, 0xc3, - 0xe5, 0x8c, 0xea, 0xc3, 0xe5, 0x8c, 0xea, 0xc3, 0xe6, 0x8c, 0xea, 0xc3, - 0xe6, 0x8c, 0xea, 0xc3, 0xe6, 0x8c, 0xea, 0xc3, 0xe6, 0x8c, 0xea, 0xc3, - 0xe7, 0x8c, 0xea, 0xc3, 0xe7, 0x8c, 0xea, 0xc3, 0xe7, 0x8c, 0xea, 0xc3, - 0xe7, 0x8c, 0xea, 0xc3, 0xe8, 0x8c, 0xea, 0xc3, 0xe8, 0x8c, 0xea, 0xc3, - 0xe8, 0x8c, 0xea, 0xc3, 0xe8, 0x8c, 0xea, 0xc3, 0xe9, 0x8c, 0xea, 0xc3, - 0xe9, 0x8c, 0xea, 0xc3, 0xe9, 0x8c, 0xea, 0xc3, 0xe9, 0x8c, 0xea, 0xc3, - 0xe9, 0x8c, 0xea, 0xc3, 0xe9, 0x8c, 0xea, 0xc4, 0xea, 0x8c, 0xea, 0xc3, - 0xe9, 0x8c, 0xeb, 0xc5, 0xeb, 0x8c, 0xeb, 0xc5, 0xeb, 0x8c, 0xeb, 0xc5, - 0xeb, 0x8c, 0xeb, 0xc5, 0xeb, 0x8c, 0xec, 0xc5, 0xec, 0x8c, 0xec, 0xc5, - 0xec, 0x8c, 0xec, 0xc5, 0xec, 0x8c, 0xec, 0xc5, 0xec, 0x8c, 0xec, 0xc5, - 0xec, 0x8c, 0xed, 0xc5, 0xed, 0x8c, 0xed, 0xc5, 0xed, 0x8c, 0xed, 0xc5, - 0xed, 0x8c, 0xed, 0xc5, 0xed, 0x8c, 0xee, 0xc5, 0xed, 0x8c, 0xee, 0xc5, - 0xed, 0x8c, 0xee, 0xc5, 0xed, 0x8c, 0xee, 0xc5, 0xee, 0x8c, 0xef, 0xc5, - 0xef, 0x8c, 0xef, 0xc5, 0xef, 0x8c, 0xef, 0xc5, 0xef, 0x8c, 0xef, 0xc5, - 0xef, 0x8c, 0xf0, 0xc5, 0xf0, 0x8c, 0xf0, 0xc5, 0xf0, 0x8c, 0xf0, 0xc5, - 0xf0, 0x8c, 0xf0, 0xc5, 0xf0, 0x8c, 0xf1, 0xc5, 0xf1, 0x8c, 0xf1, 0xc5, - 0xf1, 0x8c, 0xf1, 0xc5, 0xf1, 0x8c, 0xf1, 0xc5, 0xf1, 0x8c, 0xf2, 0xc5, - 0xf1, 0x8c, 0xf2, 0xc5, 0xf1, 0x8c, 0xf2, 0xc5, 0xf1, 0x8c, 0xf2, 0xc6, - 0xf2, 0x8c, 0xf2, 0xc6, 0xf2, 0x8c, 0xf3, 0xc6, 0xf3, 0x8c, 0xf3, 0xc6, - 0xf3, 0x8c, 0xf3, 0xc3, 0xf5, 0x8c, 0xf3, 0xc3, 0xf5, 0x8c, 0xf4, 0xc3, - 0xf5, 0x8c, 0xf4, 0xc3, 0xf5, 0x8c, 0xf4, 0xc3, 0xf5, 0x8c, 0xf4, 0xc3, - 0xf5, 0x8c, 0xf5, 0xc3, 0xf5, 0x8b, 0xf4, 0xc3, 0xf5, 0x8c, 0xf5, 0xc3, - 0xf5, 0x8b, 0xf4, 0xc3, 0xf5, 0x8c, 0xf5, 0xc3, 0xf5, 0x8b, 0xf4, 0xc3, - 0xf6, 0x8c, 0xf5, 0xc3, 0xf6, 0x8b, 0xf4, 0xc3, 0xf6, 0x8c, 0xf8, 0xc3, - 0xf6, 0x8c, 0xf8, 0xc3, 0xf7, 0x8c, 0xf8, 0xc3, 0xf7, 0x8c, 0xf8, 0xc3, - 0xf7, 0x8c, 0xf8, 0xc3, 0xf7, 0x8c, 0xf8, 0xc3, 0xf8, 0x8c, 0xf8, 0xc3, - 0xf8, 0x8c, 0xf8, 0xc3, 0xf8, 0x8c, 0xf8, 0xc3, 0xf8, 0x8c, 0xf8, 0xc3, - 0xf8, 0x8c, 0xf9, 0xc3, 0xf8, 0x8c, 0xf9, 0xc3, 0xf8, 0x8c, 0xf9, 0xc3, - 0xf8, 0x8c, 0xf9, 0xc3, 0xf8, 0x8c, 0xfa, 0xc3, 0xf8, 0x8c, 0xfa, 0xc3, - 0xf8, 0x8c, 0xfa, 0xc3, 0xf8, 0x8c, 0xfa, 0xc3, 0xf8, 0x8c, 0xfa, 0xc3, - 0xf8, 0x8c, 0xfb, 0xc3, 0xf8, 0x8c, 0xfb, 0xc3, 0xf8, 0x8c, 0xfb, 0xc3, - 0xf8, 0x8c, 0xfb, 0xc3, 0xf8, 0x8c, 0xfc, 0xc3, 0xf8, 0x8c, 0xfc, 0xc1, - 0xf8, 0x8c, 0xfc, 0xc3, 0xf8, 0x8c, 0xfc, 0xc1, 0xf8, 0x8c, 0xfc, 0xc3, - 0xf8, 0x8c, 0xfd, 0xc1, 0xf8, 0x8c, 0xfd, 0xc3, 0xf8, 0x8c, 0xfd, 0xc1, - 0xf8, 0x8c, 0xfd, 0xc3, 0xf8, 0x8c, 0xfe, 0xc1, 0xf8, 0x8c, 0xfe, 0xc3, - 0xf8, 0x8c, 0xfe, 0xc1, 0xf8, 0x8c, 0xfe, 0xc3, 0xf8, 0x8c, 0xfe, 0xc1, - 0xf8, 0x8c, 0xff, 0xc3, 0xf8, 0x8c, 0xff, 0xc1, 0xf8, 0x8c, 0x03, 0xc9, - 0x8f, 0x8c, 0x0a, 0xcb, 0x8e, 0x8c, 0x0f, 0xc9, 0x8f, 0x8c, 0x14, 0xcb, - 0x8e, 0x8c, 0x17, 0xc9, 0x8f, 0x8c, 0x1b, 0xcb, 0x8e, 0x8c, 0x1e, 0xc9, - 0x8f, 0x8c, 0x20, 0xcb, 0x8e, 0x8c, 0x23, 0xc9, 0x8f, 0x8c, 0x25, 0xcb, - 0x8e, 0x8c, 0x27, 0xc9, 0x8f, 0x8c, 0x29, 0xcb, 0x8e, 0x8c, 0x2b, 0xc9, - 0x8f, 0x8c, 0x2d, 0xcb, 0x8e, 0x8c, 0x2f, 0xc9, 0x8f, 0x8c, 0x31, 0xcb, - 0x8e, 0x8c, 0x32, 0xc9, 0x8f, 0x8c, 0x34, 0xcb, 0x8e, 0x8c, 0x35, 0xc9, - 0x8f, 0x8c, 0x37, 0xcb, 0x8e, 0x8c, 0x38, 0xc9, 0x8f, 0x8c, 0x3a, 0xcb, - 0x8e, 0x8c, 0x3b, 0xc9, 0x8f, 0x8c, 0x3c, 0xcb, 0x8e, 0x8c, 0x3e, 0xc9, - 0x8f, 0x8c, 0x3f, 0xcb, 0x8e, 0x8c, 0x40, 0xc9, 0x8f, 0x8c, 0x42, 0xcb, - 0x8e, 0x8c, 0x43, 0xc9, 0x8f, 0x8c, 0x44, 0xcb, 0x8e, 0x8c, 0x45, 0xc9, - 0x8f, 0x8c, 0x46, 0xcb, 0x8e, 0x8c, 0x47, 0xc9, 0x8f, 0x8c, 0x48, 0xc7, - 0x8f, 0x8c, 0x49, 0xc9, 0x8f, 0x8c, 0x4a, 0xc7, 0x8f, 0x8c, 0x4b, 0xc9, - 0x8f, 0x8c, 0x4c, 0xc7, 0x8f, 0x8c, 0x4d, 0xc9, 0x8f, 0x8c, 0x4e, 0xc7, - 0x8f, 0x8c, 0x4f, 0xc9, 0x8f, 0x8c, 0x50, 0xc7, 0x8f, 0x8c, 0x51, 0xc9, - 0x8f, 0x8c, 0x52, 0xc7, 0x8f, 0x8c, 0x53, 0xc9, 0x8f, 0x8c, 0x54, 0xc7, - 0x8f, 0x8c, 0x55, 0xc9, 0x8f, 0x8c, 0x56, 0xc7, 0x8f, 0x8c, 0x57, 0xc9, - 0x8f, 0x8c, 0x58, 0xc7, 0x8f, 0x8c, 0x58, 0xc9, 0x8f, 0x8c, 0x59, 0xc7, - 0x8f, 0x8c, 0x5a, 0xc9, 0x8f, 0x8c, 0x5b, 0xc7, 0x8f, 0x8c, 0x5c, 0xc9, - 0x8f, 0x8c, 0x5d, 0xc7, 0x8f, 0x8c, 0x5d, 0xc9, 0x8f, 0x8c, 0x5e, 0xc7, - 0x8f, 0x8c, 0x5f, 0xc9, 0x8f, 0x8c, 0x60, 0xc7, 0x8f, 0x8c, 0x60, 0xc9, - 0x8f, 0x8c, 0x61, 0xc7, 0x8f, 0x8c, 0x62, 0xc9, 0x8f, 0x8c, 0x63, 0xc7, - 0x8f, 0x8c, 0x63, 0xc9, 0x8f, 0x8c, 0x64, 0xc7, 0x8f, 0x8c, 0x65, 0xc5, - 0x90, 0x8c, 0x66, 0xc7, 0x8f, 0x8c, 0x66, 0xc5, 0x90, 0x8c, 0x67, 0xc7, - 0x8f, 0x8c, 0x68, 0xc5, 0x90, 0x8c, 0x68, 0xc7, 0x8f, 0x8c, 0x69, 0xc5, - 0x90, 0x8c, 0x6a, 0xc7, 0x8f, 0x8c, 0x6a, 0xc5, 0x90, 0x8c, 0x6b, 0xc7, - 0x8f, 0x8c, 0x6c, 0xc5, 0x90, 0x8c, 0x6c, 0xc7, 0x8f, 0x8c, 0x6d, 0xc5, - 0x90, 0x8c, 0x6e, 0xc7, 0x8f, 0x8c, 0x6e, 0xc5, 0x90, 0x8c, 0x6f, 0xc7, - 0x8f, 0x8c, 0x70, 0xc5, 0x90, 0x8c, 0x70, 0xc7, 0x8f, 0x8c, 0x71, 0xc5, - 0x90, 0x8c, 0x72, 0xc7, 0x8f, 0x8c, 0x72, 0xc5, 0x90, 0x8c, 0x73, 0xc7, - 0x8f, 0x8c, 0x73, 0xc5, 0x90, 0x8c, 0x74, 0xc7, 0x8f, 0x8c, 0x75, 0xc5, - 0x90, 0x8c, 0x75, 0xc7, 0x8f, 0x8c, 0x76, 0xc5, 0x90, 0x8c, 0x76, 0xc7, - 0x8f, 0x8c, 0x77, 0xc5, 0x90, 0x8c, 0x78, 0xc7, 0x8f, 0x8c, 0x78, 0xc5, - 0x90, 0x8c, 0x79, 0xc7, 0x8f, 0x8c, 0x79, 0xc5, 0x90, 0x8c, 0x7a, 0xc7, - 0x8f, 0x8c, 0x7a, 0xc5, 0x90, 0x8c, 0x7b, 0xc7, 0x8f, 0x8c, 0x7c, 0xc5, - 0x90, 0x8c, 0x7c, 0xc7, 0x8f, 0x8c, 0x7d, 0xc5, 0x90, 0x8c, 0x7d, 0xc7, - 0x8f, 0x8c, 0x7e, 0xc5, 0x90, 0x8c, 0x7e, 0xc4, 0x90, 0x8c, 0x7f, 0xc5, - 0x90, 0x8c, 0x7f, 0xc4, 0x90, 0x8c, 0x80, 0xc5, 0x90, 0x8c, 0x81, 0xc4, - 0x90, 0x8c, 0x81, 0xc5, 0x90, 0x8c, 0x82, 0xc4, 0x90, 0x8c, 0x82, 0xc5, - 0x90, 0x8c, 0x83, 0xc4, 0x90, 0x8c, 0x83, 0xc5, 0x90, 0x8c, 0x84, 0xc4, - 0x90, 0x8c, 0x84, 0xc5, 0x90, 0x8c, 0x85, 0xc4, 0x90, 0x8c, 0x85, 0xc5, - 0x90, 0x8c, 0x86, 0xc4, 0x90, 0x8c, 0x86, 0xc5, 0x90, 0x8c, 0x87, 0xc4, - 0x90, 0x8c, 0x87, 0xc5, 0x90, 0x8c, 0x88, 0xc4, 0x90, 0x8c, 0x88, 0xc5, - 0x90, 0x8c, 0x89, 0xc4, 0x90, 0x8c, 0x89, 0xc5, 0x90, 0x8c, 0x8a, 0xc4, - 0x90, 0x8c, 0x8a, 0xc5, 0x90, 0x8c, 0x8b, 0xc4, 0x90, 0x8c, 0x8b, 0xc5, - 0x90, 0x8c, 0x8c, 0xc4, 0x90, 0x8c, 0x8c, 0xc5, 0x90, 0x8c, 0x8d, 0xc4, - 0x90, 0x8c, 0x8d, 0xc5, 0x90, 0x8c, 0x8e, 0xc4, 0x90, 0x8c, 0x8e, 0xc5, - 0x90, 0x8c, 0x8e, 0xc4, 0x90, 0x8c, 0x8f, 0xc4, 0x91, 0x8c, 0x8f, 0xc4, - 0x90, 0x8c, 0x90, 0xc4, 0x91, 0x8c, 0x8f, 0xc4, 0x90, 0x8c, 0x90, 0xc4, - 0x91, 0x8c, 0x8f, 0xc4, 0x91, 0x8c, 0x90, 0xc4, 0x92, 0x8c, 0x94, 0xc4, - 0x92, 0x8c, 0x94, 0xc4, 0x93, 0x8c, 0x94, 0xc4, 0x93, 0x8c, 0x94, 0xc3, - 0x94, 0x8c, 0x94, 0xc4, 0x93, 0x8c, 0x94, 0xc3, 0x94, 0x8c, 0x95, 0xc4, - 0x93, 0x8c, 0x95, 0xc3, 0x94, 0x8c, 0x96, 0xc4, 0x93, 0x8c, 0x96, 0xc3, - 0x94, 0x8c, 0x97, 0xc4, 0x93, 0x8c, 0x97, 0xc3, 0x94, 0x8c, 0x98, 0xc4, - 0x93, 0x8c, 0x98, 0xc3, 0x94, 0x8c, 0x98, 0xc4, 0x93, 0x8c, 0x99, 0xc3, - 0x94, 0x8c, 0x99, 0xc4, 0x93, 0x8c, 0x9a, 0xc3, 0x94, 0x8c, 0x9a, 0xc4, - 0x93, 0x8c, 0x9a, 0xc3, 0x94, 0x8c, 0x9b, 0xc4, 0x93, 0x8c, 0x9b, 0xc3, - 0x94, 0x8c, 0x9c, 0xc4, 0x93, 0x8c, 0x9c, 0xc3, 0x94, 0x8c, 0x9d, 0xca, - 0x9b, 0x8c, 0x9d, 0xc4, 0xa5, 0x8c, 0x9d, 0xc4, 0xa5, 0x8c, 0x9e, 0xc4, - 0xa5, 0x8c, 0x9e, 0xc4, 0xa5, 0x8c, 0x9f, 0xc4, 0xa5, 0x8c, 0x9f, 0xc4, - 0xa5, 0x8c, 0x9f, 0xc4, 0xa5, 0x8c, 0xa0, 0xc4, 0xa5, 0x8c, 0xa0, 0xc4, - 0xa5, 0x8c, 0xa1, 0xc4, 0xa5, 0x8c, 0xa1, 0xc4, 0xa5, 0x8c, 0xa1, 0xc4, - 0xa5, 0x8c, 0xa2, 0xc4, 0xa5, 0x8c, 0xa2, 0xc4, 0xa5, 0x8c, 0xa3, 0xc4, - 0xa5, 0x8c, 0xa3, 0xc4, 0xa5, 0x8c, 0xa3, 0xc4, 0xa5, 0x8c, 0xa4, 0xc4, - 0xa5, 0x8c, 0xa4, 0xc4, 0xa5, 0x8c, 0xa5, 0xc4, 0xa5, 0x8c, 0xa5, 0xc4, - 0xa6, 0x8c, 0xa5, 0xc4, 0xa5, 0x8c, 0xa5, 0xc4, 0xa6, 0x8c, 0xa5, 0xc4, - 0xa6, 0x8c, 0xa5, 0xc4, 0xa6, 0x8c, 0xa5, 0xc4, 0xa7, 0x8c, 0xa5, 0xc4, - 0xa7, 0x8c, 0xa5, 0xc4, 0xa8, 0x8c, 0xa5, 0xc4, 0xa8, 0x8c, 0xa5, 0xc4, - 0xa8, 0x89, 0xa5, 0xc4, 0xa9, 0x8c, 0xa5, 0xc4, 0xa9, 0x89, 0xa5, 0xc4, - 0xaa, 0x8c, 0xa5, 0xc4, 0xaa, 0x89, 0xa5, 0xc4, 0xaa, 0x8c, 0xa5, 0xc4, - 0xab, 0x89, 0xa5, 0xc4, 0xab, 0x8c, 0xa5, 0xc4, 0xab, 0x89, 0xa5, 0xc4, - 0xac, 0x8c, 0xa5, 0xc4, 0xac, 0x89, 0xa5, 0xc4, 0xac, 0x8c, 0xa5, 0xc4, - 0xad, 0x89, 0xa5, 0xc4, 0xad, 0x8c, 0xa5, 0xc4, 0xae, 0x89, 0xa5, 0xc4, - 0xae, 0x8c, 0xa5, 0xc4, 0xae, 0x89, 0xa6, 0xc4, 0xaf, 0x87, 0xa5, 0xc4, - 0xaf, 0x89, 0xa6, 0xc4, 0xaf, 0x87, 0xa5, 0xc4, 0xb0, 0x89, 0xa6, 0xc4, - 0xb0, 0x87, 0xa5, 0xc4, 0xb0, 0x89, 0xa6, 0xc4, 0xb1, 0x87, 0xa5, 0xc4, - 0xb1, 0x89, 0xa6, 0xc4, 0xb2, 0x87, 0xa5, 0xc4, 0xb2, 0x89, 0xa6, 0xc4, - 0xb2, 0x87, 0xa5, 0xc4, 0xb3, 0x89, 0xa6, 0xc4, 0xb3, 0x87, 0xa5, 0xc4, - 0xb3, 0x89, 0xa6, 0xc4, 0xb4, 0x87, 0xa5, 0xc4, 0xb4, 0x89, 0xa6, 0xc4, - 0xb4, 0x87, 0xa5, 0xc4, 0xb5, 0x89, 0xa6, 0xc4, 0xb5, 0x87, 0xa9, 0xc4, - 0xb5, 0x7e, 0xa6, 0xc4, 0xb6, 0x87, 0xa9, 0xc4, 0xb6, 0x7e, 0xaa, 0xc4, - 0xb6, 0x7d, 0xa9, 0xc4, 0xb7, 0x7e, 0xaa, 0xc4, 0xb7, 0x7d, 0xa9, 0xc4, - 0xb7, 0x7e, 0xaa, 0xc4, 0xb8, 0x7d, 0xa9, 0xc4, 0xb8, 0x7e, 0xaa, 0xc4, - 0xb8, 0x7d, 0xbd, 0xc4, 0xb9, 0x73, 0xbe, 0xc4, 0xb9, 0x73, 0xbd, 0xc4, - 0xb9, 0x73, 0xbe, 0xc4, 0xba, 0x73, 0xbd, 0xc4, 0xba, 0x73, 0xbe, 0xc4, - 0xba, 0x73, 0xbd, 0xc4, 0xbb, 0x73, 0xbe, 0xc4, 0xbb, 0x73, 0xbd, 0xc4, - 0xbb, 0x73, 0xbe, 0xc4, 0xbc, 0x73, 0xbd, 0xc4, 0xbc, 0x73, 0xc1, 0xc4, - 0xbc, 0x74, 0xc1, 0xc4, 0xbd, 0x74, 0xc1, 0xc4, 0xbd, 0x74, 0xc1, 0xc4, - 0xbd, 0x74, 0xc1, 0xc4, 0xbe, 0x74, 0xc1, 0xc4, 0xbe, 0x74, 0xc1, 0xc4, - 0xbe, 0x74, 0xc1, 0xc4, 0xbf, 0x74, 0xc1, 0xc4, 0xbf, 0x74, 0xc1, 0xc4, - 0xbf, 0x74, 0xc1, 0xc4, 0xc0, 0x74, 0xc4, 0xc4, 0xc0, 0x75, 0xc1, 0xc4, - 0xc0, 0x74, 0xc4, 0xc4, 0xc1, 0x75, 0xc5, 0xc4, 0xc1, 0x75, 0xc4, 0xc4, - 0xc1, 0x75, 0xc5, 0xc4, 0xc1, 0x75, 0xc4, 0xc4, 0xc2, 0x75, 0xc5, 0xc4, - 0xc2, 0x75, 0xc4, 0xc4, 0xc2, 0x75, 0xc5, 0xc4, 0xc3, 0x75, 0xc4, 0xc4, - 0xc3, 0x75, 0xc5, 0xc4, 0xc3, 0x75, 0xc4, 0xc4, 0xc4, 0x75, 0xc8, 0xc4, - 0xc4, 0x76, 0xc8, 0xc4, 0xc4, 0x76, 0xc8, 0xc4, 0xc5, 0x76, 0xc8, 0xc4, - 0xc5, 0x76, 0xc8, 0xc4, 0xc5, 0x76, 0xc8, 0xc4, 0xc6, 0x76, 0xc8, 0xc4, - 0xc6, 0x76, 0xc8, 0xc4, 0xc6, 0x76, 0xc8, 0xc4, 0xc6, 0x76, 0xc8, 0xc4, - 0xc7, 0x76, 0xc8, 0xc4, 0xc7, 0x76, 0xcb, 0xc4, 0xc7, 0x77, 0xcb, 0xc4, - 0xc8, 0x77, 0xcb, 0xc4, 0xc8, 0x77, 0xd4, 0xc4, 0xc8, 0x94, 0xd4, 0xc4, - 0xc9, 0x93, 0xd4, 0xc4, 0xc9, 0x94, 0xd4, 0xc4, 0xc9, 0x93, 0xd4, 0xc4, - 0xc9, 0x94, 0xd4, 0xc4, 0xca, 0x93, 0xd4, 0xc4, 0xca, 0x94, 0xd4, 0xc4, - 0xca, 0x93, 0xd4, 0xc4, 0xcb, 0x94, 0xd4, 0xc4, 0xcb, 0x93, 0xd4, 0xc4, - 0xcb, 0x94, 0xd4, 0xc4, 0xcc, 0x93, 0xd4, 0xc4, 0xcc, 0x94, 0xd4, 0xc4, - 0xcc, 0x93, 0xd4, 0xc4, 0xcc, 0x94, 0xd4, 0xc4, 0xcd, 0x93, 0xd4, 0xc4, - 0xcd, 0x94, 0xd4, 0xc4, 0xcd, 0x93, 0xd4, 0xc4, 0xce, 0x94, 0xd4, 0xc4, - 0xce, 0x93, 0xd4, 0xc4, 0xce, 0x94, 0xd4, 0xc4, 0xce, 0x93, 0xd4, 0xc4, - 0xcf, 0x94, 0xd4, 0xc4, 0xcf, 0x93, 0xd4, 0xc4, 0xcf, 0x94, 0xd4, 0xc4, - 0xd0, 0x93, 0xd4, 0xc4, 0xd0, 0x93, 0xd4, 0xc4, 0xd0, 0x93, 0xd4, 0xc4, - 0xd0, 0x93, 0xd4, 0xc4, 0xd1, 0x93, 0xd4, 0xc4, 0xd1, 0x93, 0xd4, 0xc4, - 0xd1, 0x93, 0xd4, 0xc4, 0xd2, 0x93, 0xd4, 0xc4, 0xd2, 0x93, 0xd4, 0xc4, - 0xd2, 0x93, 0xd4, 0xc4, 0xd2, 0x93, 0xd4, 0xc4, 0xd3, 0x93, 0xd4, 0xc4, - 0xd3, 0x93, 0xd4, 0xc4, 0xd3, 0x93, 0xd4, 0xc4, 0xd4, 0x93, 0xd4, 0xc4, - 0xd4, 0x93, 0xd4, 0xc4, 0xd4, 0x93, 0xd4, 0xc4, 0xd4, 0x93, 0xd5, 0xc4, - 0xd5, 0x93, 0xd5, 0xc4, 0xd5, 0x93, 0xd5, 0xc4, 0xd5, 0x93, 0xd6, 0xc4, - 0xd6, 0x93, 0xd6, 0xc4, 0xd6, 0x93, 0xd6, 0xc4, 0xd6, 0x93, 0xd6, 0xc4, - 0xd6, 0x93, 0xd6, 0xc4, 0xd7, 0x93, 0xd6, 0xc4, 0xd7, 0x93, 0xd6, 0xc4, - 0xd7, 0x93, 0xd6, 0xc4, 0xd7, 0x93, 0xd6, 0xc4, 0xd8, 0x93, 0xd8, 0xc4, - 0xd8, 0x94, 0xd8, 0xc4, 0xd8, 0x94, 0xd9, 0xc4, 0xd9, 0x94, 0xd9, 0xc4, - 0xd9, 0x94, 0xd9, 0xc4, 0xd9, 0x94, 0xd9, 0xc4, 0xd9, 0x94, 0xd9, 0xc4, - 0xda, 0x94, 0xd9, 0xc4, 0xda, 0x94, 0xd9, 0xc4, 0xda, 0x94, 0xd9, 0xc4, - 0xda, 0x94, 0xd9, 0xc4, 0xdb, 0x94, 0xd9, 0xc4, 0xdb, 0x94, 0xd9, 0xc4, - 0xdb, 0x94, 0xdb, 0xc4, 0xdb, 0x95, 0xdc, 0xc4, 0xdc, 0x95, 0xdc, 0xc4, - 0xdc, 0x95, 0xdc, 0xc4, 0xdc, 0x95, 0xdc, 0xc4, 0xdd, 0x95, 0xdc, 0xc4, - 0xdd, 0x95, 0xdc, 0xc4, 0xdd, 0x95, 0xdc, 0xc4, 0xdd, 0x95, 0xdc, 0xc4, - 0xde, 0x95, 0xdc, 0xc4, 0xde, 0x95, 0xdc, 0xc4, 0xde, 0x95, 0xde, 0xc4, - 0xde, 0x96, 0xdf, 0xc4, 0xdf, 0x96, 0xdf, 0xc4, 0xdf, 0x96, 0xdf, 0xc4, - 0xdf, 0x96, 0xdf, 0xc4, 0xdf, 0x96, 0xdf, 0xc4, 0xe0, 0x96, 0xdf, 0xc4, - 0xe0, 0x96, 0xdf, 0xc4, 0xe0, 0x96, 0xdf, 0xc4, 0xe1, 0x96, 0xdf, 0xc4, - 0xe1, 0x96, 0xdf, 0xc4, 0xe1, 0x96, 0xe1, 0xc4, 0xe1, 0x97, 0xe2, 0xc4, - 0xe2, 0x97, 0xe2, 0xc4, 0xe2, 0x97, 0xe2, 0xc4, 0xe2, 0x97, 0xe2, 0xc4, - 0xe2, 0x97, 0xe2, 0xc4, 0xe3, 0x97, 0xe2, 0xc4, 0xe3, 0x97, 0xe2, 0xc4, - 0xe3, 0x97, 0xe2, 0xc4, 0xe3, 0x97, 0xe2, 0xc4, 0xe4, 0x97, 0xe2, 0xc4, - 0xe4, 0x97, 0xea, 0xc4, 0xe4, 0x8c, 0xea, 0xc4, 0xe4, 0x8c, 0xea, 0xc4, - 0xe5, 0x8c, 0xea, 0xc4, 0xe5, 0x8c, 0xea, 0xc4, 0xe5, 0x8c, 0xea, 0xc4, - 0xe5, 0x8c, 0xea, 0xc4, 0xe6, 0x8c, 0xea, 0xc4, 0xe6, 0x8c, 0xea, 0xc4, - 0xe6, 0x8c, 0xea, 0xc4, 0xe6, 0x8c, 0xea, 0xc4, 0xe7, 0x8c, 0xea, 0xc4, - 0xe7, 0x8c, 0xea, 0xc4, 0xe7, 0x8c, 0xea, 0xc4, 0xe7, 0x8c, 0xea, 0xc4, - 0xe8, 0x8c, 0xea, 0xc4, 0xe8, 0x8c, 0xea, 0xc4, 0xe8, 0x8c, 0xea, 0xc4, - 0xe8, 0x8c, 0xea, 0xc4, 0xe9, 0x8c, 0xea, 0xc4, 0xe9, 0x8c, 0xea, 0xc4, - 0xe9, 0x8c, 0xea, 0xc4, 0xe9, 0x8c, 0xea, 0xc4, 0xe9, 0x8c, 0xea, 0xc4, - 0xe9, 0x8c, 0xea, 0xc4, 0xea, 0x8c, 0xea, 0xc4, 0xea, 0x8c, 0xeb, 0xc4, - 0xeb, 0x8c, 0xeb, 0xc4, 0xeb, 0x8c, 0xeb, 0xc4, 0xeb, 0x8c, 0xeb, 0xc4, - 0xeb, 0x8c, 0xec, 0xc4, 0xec, 0x8c, 0xec, 0xc4, 0xeb, 0x8c, 0xec, 0xc4, - 0xec, 0x8c, 0xec, 0xc5, 0xec, 0x8c, 0xec, 0xc5, 0xec, 0x8c, 0xed, 0xc5, - 0xed, 0x8c, 0xed, 0xc5, 0xed, 0x8c, 0xed, 0xc5, 0xed, 0x8c, 0xed, 0xc5, - 0xed, 0x8c, 0xee, 0xc5, 0xee, 0x8c, 0xee, 0xc5, 0xee, 0x8c, 0xee, 0xc5, - 0xee, 0x8c, 0xee, 0xc5, 0xee, 0x8c, 0xef, 0xc5, 0xef, 0x8c, 0xef, 0xc5, - 0xef, 0x8c, 0xef, 0xc5, 0xef, 0x8c, 0xef, 0xc5, 0xef, 0x8c, 0xf0, 0xc5, - 0xef, 0x8c, 0xf0, 0xc5, 0xef, 0x8c, 0xf0, 0xc5, 0xef, 0x8c, 0xf0, 0xc6, - 0xf0, 0x8c, 0xf1, 0xc6, 0xf1, 0x8c, 0xf1, 0xc6, 0xf1, 0x8c, 0xf1, 0xc6, - 0xf1, 0x8c, 0xf1, 0xc6, 0xf1, 0x8c, 0xf2, 0xc6, 0xf2, 0x8c, 0xf2, 0xc6, - 0xf2, 0x8c, 0xf2, 0xc6, 0xf2, 0x8c, 0xf2, 0xc6, 0xf2, 0x8c, 0xf2, 0xc6, - 0xf2, 0x8c, 0xf3, 0xc6, 0xf3, 0x8c, 0xf3, 0xc6, 0xf3, 0x8c, 0xf3, 0xc4, - 0xf5, 0x8c, 0xf3, 0xc4, 0xf5, 0x8c, 0xf4, 0xc4, 0xf5, 0x8c, 0xf4, 0xc4, - 0xf5, 0x8c, 0xf4, 0xc4, 0xf5, 0x8c, 0xf4, 0xc4, 0xf5, 0x8c, 0xf4, 0xc4, - 0xf5, 0x8c, 0xf4, 0xc4, 0xf5, 0x8c, 0xf4, 0xc4, 0xf5, 0x8c, 0xf4, 0xc4, - 0xf5, 0x8c, 0xf5, 0xc4, 0xf5, 0x8a, 0xf4, 0xc4, 0xf6, 0x8c, 0xf5, 0xc4, - 0xf6, 0x8a, 0xf4, 0xc4, 0xf6, 0x8c, 0xf8, 0xc4, 0xf6, 0x8e, 0xf8, 0xc4, - 0xf7, 0x8c, 0xf8, 0xc4, 0xf7, 0x8e, 0xf8, 0xc4, 0xf7, 0x8c, 0xf8, 0xc4, - 0xf7, 0x8c, 0xf8, 0xc4, 0xf8, 0x8c, 0xf8, 0xc4, 0xf8, 0x8c, 0xf8, 0xc4, - 0xf8, 0x8c, 0xf8, 0xc4, 0xf8, 0x8c, 0xf8, 0xc4, 0xf8, 0x8c, 0xf9, 0xc4, - 0xf8, 0x8c, 0xf9, 0xc4, 0xf8, 0x8c, 0xf9, 0xc4, 0xf8, 0x8c, 0xf9, 0xc4, - 0xf8, 0x8c, 0xfa, 0xc4, 0xf8, 0x8c, 0xfa, 0xc2, 0xf8, 0x8c, 0xfa, 0xc4, - 0xf8, 0x8c, 0xfa, 0xc2, 0xf8, 0x8c, 0xfa, 0xc4, 0xf8, 0x8c, 0xfb, 0xc2, - 0xf8, 0x8c, 0xfb, 0xc4, 0xf8, 0x8c, 0xfb, 0xc2, 0xf8, 0x8c, 0xfb, 0xc4, - 0xf8, 0x8c, 0xfc, 0xc2, 0xf8, 0x8c, 0xfc, 0xc4, 0xf8, 0x8c, 0xfc, 0xc2, - 0xf8, 0x8c, 0xfc, 0xc4, 0xf8, 0x8c, 0xfc, 0xc2, 0xf8, 0x8c, 0xfd, 0xc4, - 0xf8, 0x8c, 0xfd, 0xc2, 0xf8, 0x8c, 0xfd, 0xc4, 0xf8, 0x8c, 0xfd, 0xc2, - 0xf8, 0x8c, 0xfe, 0xc1, 0xf8, 0x8c, 0xfe, 0xc2, 0xf8, 0x8c, 0xfe, 0xc1, - 0xf8, 0x8c, 0xfe, 0xc2, 0xf8, 0x8c, 0xfe, 0xc1, 0xf8, 0x8c, 0xff, 0xc2, - 0xf8, 0x8c, 0xff, 0xc1, 0xf8, 0x8c, 0x03, 0xc9, 0x8f, 0x8d, 0x0a, 0xc9, - 0x8f, 0x8d, 0x0f, 0xc9, 0x8f, 0x8d, 0x14, 0xcb, 0x8e, 0x8d, 0x17, 0xc9, - 0x8f, 0x8d, 0x1b, 0xcb, 0x8e, 0x8d, 0x1e, 0xc9, 0x8f, 0x8d, 0x20, 0xcb, - 0x8e, 0x8d, 0x23, 0xc9, 0x8f, 0x8d, 0x25, 0xcb, 0x8e, 0x8d, 0x27, 0xc9, - 0x8f, 0x8d, 0x29, 0xcb, 0x8e, 0x8d, 0x2b, 0xc9, 0x8f, 0x8d, 0x2d, 0xcb, - 0x8e, 0x8d, 0x2f, 0xc9, 0x8f, 0x8d, 0x31, 0xcb, 0x8e, 0x8d, 0x32, 0xc9, - 0x8f, 0x8d, 0x34, 0xcb, 0x8e, 0x8d, 0x35, 0xc9, 0x8f, 0x8d, 0x37, 0xcb, - 0x8e, 0x8d, 0x38, 0xc9, 0x8f, 0x8d, 0x3a, 0xc7, 0x8f, 0x8d, 0x3b, 0xc9, - 0x8f, 0x8d, 0x3c, 0xc7, 0x8f, 0x8d, 0x3e, 0xc9, 0x8f, 0x8d, 0x3f, 0xc7, - 0x8f, 0x8d, 0x40, 0xc9, 0x8f, 0x8d, 0x42, 0xc7, 0x8f, 0x8d, 0x43, 0xc9, - 0x8f, 0x8d, 0x44, 0xc7, 0x8f, 0x8d, 0x45, 0xc9, 0x8f, 0x8d, 0x46, 0xc7, - 0x8f, 0x8d, 0x47, 0xc9, 0x8f, 0x8d, 0x48, 0xc7, 0x8f, 0x8d, 0x49, 0xc9, - 0x8f, 0x8d, 0x4a, 0xc7, 0x8f, 0x8d, 0x4b, 0xc9, 0x8f, 0x8d, 0x4c, 0xc7, - 0x8f, 0x8d, 0x4d, 0xc9, 0x8f, 0x8d, 0x4e, 0xc7, 0x8f, 0x8d, 0x4f, 0xc9, - 0x8f, 0x8d, 0x50, 0xc7, 0x8f, 0x8d, 0x51, 0xc9, 0x8f, 0x8d, 0x52, 0xc7, - 0x8f, 0x8d, 0x53, 0xc9, 0x8f, 0x8d, 0x54, 0xc7, 0x8f, 0x8d, 0x55, 0xc9, - 0x8f, 0x8d, 0x56, 0xc7, 0x8f, 0x8d, 0x57, 0xc9, 0x8f, 0x8d, 0x58, 0xc7, - 0x8f, 0x8d, 0x58, 0xc9, 0x8f, 0x8d, 0x59, 0xc7, 0x8f, 0x8d, 0x5a, 0xc9, - 0x8f, 0x8d, 0x5b, 0xc7, 0x8f, 0x8d, 0x5c, 0xc9, 0x8f, 0x8d, 0x5d, 0xc7, - 0x8f, 0x8d, 0x5d, 0xc9, 0x8f, 0x8d, 0x5e, 0xc7, 0x8f, 0x8d, 0x5f, 0xc9, - 0x8f, 0x8d, 0x60, 0xc7, 0x8f, 0x8d, 0x60, 0xc9, 0x8f, 0x8d, 0x61, 0xc7, - 0x8f, 0x8d, 0x62, 0xc9, 0x8f, 0x8d, 0x63, 0xc7, 0x8f, 0x8d, 0x63, 0xc9, - 0x8f, 0x8d, 0x64, 0xc7, 0x8f, 0x8d, 0x65, 0xc9, 0x8f, 0x8d, 0x66, 0xc7, - 0x8f, 0x8d, 0x66, 0xc9, 0x8f, 0x8d, 0x67, 0xc7, 0x8f, 0x8d, 0x68, 0xc9, - 0x8f, 0x8d, 0x68, 0xc7, 0x8f, 0x8d, 0x69, 0xc9, 0x8f, 0x8d, 0x6a, 0xc7, - 0x8f, 0x8d, 0x6a, 0xc9, 0x8f, 0x8d, 0x6b, 0xc7, 0x8f, 0x8d, 0x6c, 0xc9, - 0x8f, 0x8d, 0x6c, 0xc7, 0x8f, 0x8d, 0x6d, 0xc9, 0x8f, 0x8d, 0x6e, 0xc7, - 0x8f, 0x8d, 0x6e, 0xc9, 0x8f, 0x8d, 0x6f, 0xc7, 0x8f, 0x8d, 0x70, 0xc5, - 0x90, 0x8d, 0x70, 0xc7, 0x8f, 0x8d, 0x71, 0xc5, 0x90, 0x8d, 0x72, 0xc7, - 0x8f, 0x8d, 0x72, 0xc5, 0x90, 0x8d, 0x73, 0xc7, 0x8f, 0x8d, 0x73, 0xc5, - 0x90, 0x8d, 0x74, 0xc7, 0x8f, 0x8d, 0x75, 0xc5, 0x90, 0x8d, 0x75, 0xc7, - 0x8f, 0x8d, 0x76, 0xc5, 0x90, 0x8d, 0x76, 0xc7, 0x8f, 0x8d, 0x77, 0xc5, - 0x90, 0x8d, 0x78, 0xc7, 0x8f, 0x8d, 0x78, 0xc5, 0x90, 0x8d, 0x79, 0xc7, - 0x8f, 0x8d, 0x79, 0xc5, 0x90, 0x8d, 0x7a, 0xc7, 0x8f, 0x8d, 0x7a, 0xc5, - 0x90, 0x8d, 0x7b, 0xc7, 0x8f, 0x8d, 0x7c, 0xc5, 0x90, 0x8d, 0x7c, 0xc7, - 0x8f, 0x8d, 0x7d, 0xc5, 0x90, 0x8d, 0x7d, 0xc7, 0x8f, 0x8d, 0x7e, 0xc5, - 0x90, 0x8d, 0x7e, 0xc7, 0x8f, 0x8d, 0x7f, 0xc5, 0x90, 0x8d, 0x7f, 0xc7, - 0x8f, 0x8d, 0x80, 0xc5, 0x90, 0x8d, 0x81, 0xc7, 0x8f, 0x8d, 0x81, 0xc5, - 0x90, 0x8d, 0x82, 0xc7, 0x8f, 0x8d, 0x82, 0xc5, 0x90, 0x8d, 0x83, 0xc7, - 0x8f, 0x8d, 0x83, 0xc5, 0x90, 0x8d, 0x84, 0xc7, 0x8f, 0x8d, 0x84, 0xc5, - 0x90, 0x8d, 0x85, 0xc4, 0x90, 0x8d, 0x85, 0xc5, 0x90, 0x8d, 0x86, 0xc4, - 0x90, 0x8d, 0x86, 0xc5, 0x90, 0x8d, 0x87, 0xc4, 0x90, 0x8d, 0x87, 0xc5, - 0x90, 0x8d, 0x88, 0xc4, 0x90, 0x8d, 0x88, 0xc5, 0x90, 0x8d, 0x89, 0xc4, - 0x90, 0x8d, 0x89, 0xc5, 0x90, 0x8d, 0x8a, 0xc4, 0x90, 0x8d, 0x8a, 0xc5, - 0x90, 0x8d, 0x8b, 0xc4, 0x90, 0x8d, 0x8b, 0xc5, 0x90, 0x8d, 0x8c, 0xc4, - 0x90, 0x8d, 0x8c, 0xc5, 0x90, 0x8d, 0x8d, 0xc4, 0x90, 0x8d, 0x8d, 0xc5, - 0x90, 0x8d, 0x8e, 0xc4, 0x90, 0x8d, 0x8e, 0xc5, 0x90, 0x8d, 0x8e, 0xc4, - 0x90, 0x8d, 0x8f, 0xc4, 0x91, 0x8d, 0x8f, 0xc4, 0x90, 0x8d, 0x90, 0xc4, - 0x91, 0x8d, 0x8f, 0xc4, 0x90, 0x8d, 0x90, 0xc4, 0x91, 0x8d, 0x8f, 0xc4, - 0x91, 0x8d, 0x90, 0xc4, 0x92, 0x8d, 0x94, 0xc4, 0x92, 0x8d, 0x94, 0xc4, - 0x93, 0x8d, 0x94, 0xc4, 0x93, 0x8d, 0x94, 0xc4, 0x93, 0x8d, 0x94, 0xc4, - 0x93, 0x8d, 0x94, 0xc4, 0x93, 0x8d, 0x95, 0xc4, 0x93, 0x8d, 0x95, 0xc3, - 0x94, 0x8d, 0x96, 0xc4, 0x93, 0x8d, 0x96, 0xc3, 0x94, 0x8d, 0x97, 0xc4, - 0x93, 0x8d, 0x97, 0xc3, 0x94, 0x8d, 0x98, 0xc4, 0x93, 0x8d, 0x98, 0xc3, - 0x94, 0x8d, 0x98, 0xc4, 0x93, 0x8d, 0x99, 0xc3, 0x94, 0x8d, 0x99, 0xc4, - 0x93, 0x8d, 0x9a, 0xc3, 0x94, 0x8d, 0x9a, 0xc4, 0x93, 0x8d, 0x9a, 0xc3, - 0x94, 0x8d, 0x9b, 0xc1, 0x94, 0x8d, 0x9b, 0xc3, 0x94, 0x8d, 0x9c, 0xc1, - 0x94, 0x8d, 0x9c, 0xc9, 0x99, 0x8d, 0x9d, 0xca, 0x9d, 0x8d, 0x9d, 0xca, - 0x9d, 0x8d, 0x9d, 0xc4, 0xa5, 0x8d, 0x9e, 0xc5, 0xa5, 0x8d, 0x9e, 0xc4, - 0xa5, 0x8d, 0x9f, 0xc5, 0xa5, 0x8d, 0x9f, 0xc6, 0xa5, 0x8d, 0x9f, 0xc5, - 0xa5, 0x8d, 0xa0, 0xc6, 0xa5, 0x8d, 0xa0, 0xc5, 0xa5, 0x8d, 0xa1, 0xc6, - 0xa5, 0x8d, 0xa1, 0xc5, 0xa5, 0x8d, 0xa1, 0xc6, 0xa5, 0x8d, 0xa2, 0xc5, - 0xa5, 0x8d, 0xa2, 0xc4, 0xa5, 0x8d, 0xa3, 0xc5, 0xa5, 0x8d, 0xa3, 0xc4, - 0xa5, 0x8d, 0xa3, 0xc5, 0xa5, 0x8d, 0xa4, 0xc4, 0xa5, 0x8d, 0xa4, 0xc5, - 0xa5, 0x8d, 0xa5, 0xc4, 0xa5, 0x8d, 0xa5, 0xc4, 0xa6, 0x8d, 0xa5, 0xc4, - 0xa5, 0x8d, 0xa5, 0xc4, 0xa6, 0x8d, 0xa5, 0xc4, 0xa6, 0x8d, 0xa5, 0xc4, - 0xa6, 0x8d, 0xa5, 0xc4, 0xa7, 0x8d, 0xa5, 0xc4, 0xa7, 0x8d, 0xa5, 0xc4, - 0xa8, 0x8d, 0xa5, 0xc4, 0xa8, 0x8d, 0xa5, 0xc4, 0xa8, 0x8a, 0xa5, 0xc4, - 0xa9, 0x8d, 0xa5, 0xc4, 0xa9, 0x8a, 0xa5, 0xc4, 0xaa, 0x8d, 0xa5, 0xc4, - 0xaa, 0x8a, 0xa5, 0xc4, 0xaa, 0x8d, 0xa5, 0xc4, 0xab, 0x8a, 0xa5, 0xc4, - 0xab, 0x8d, 0xa5, 0xc4, 0xab, 0x8a, 0xa5, 0xc4, 0xac, 0x8d, 0xa5, 0xc4, - 0xac, 0x8a, 0xa5, 0xc4, 0xac, 0x8d, 0xa5, 0xc4, 0xad, 0x8a, 0xa5, 0xc4, - 0xad, 0x8d, 0xa5, 0xc4, 0xae, 0x8a, 0xa5, 0xc4, 0xae, 0x8d, 0xa5, 0xc4, - 0xae, 0x8a, 0xa5, 0xc4, 0xaf, 0x8d, 0xa5, 0xc4, 0xaf, 0x8a, 0xa5, 0xc4, - 0xaf, 0x8d, 0xa5, 0xc4, 0xb0, 0x8a, 0xa5, 0xc4, 0xb0, 0x8d, 0xa5, 0xc4, - 0xb0, 0x8a, 0xa5, 0xc4, 0xb1, 0x8d, 0xa5, 0xc4, 0xb1, 0x8a, 0xa5, 0xc4, - 0xb2, 0x8d, 0xa5, 0xc4, 0xb2, 0x8a, 0xa5, 0xc4, 0xb2, 0x8d, 0xa5, 0xc4, - 0xb3, 0x8a, 0xa6, 0xc4, 0xb3, 0x87, 0xa5, 0xc4, 0xb3, 0x8a, 0xa6, 0xc4, - 0xb4, 0x87, 0xa5, 0xc4, 0xb4, 0x8a, 0xa6, 0xc4, 0xb4, 0x87, 0xa5, 0xc4, - 0xb5, 0x8a, 0xa6, 0xc4, 0xb5, 0x87, 0xa9, 0xc4, 0xb5, 0x7f, 0xaa, 0xc4, - 0xb6, 0x7e, 0xa9, 0xc4, 0xb6, 0x7f, 0xaa, 0xc4, 0xb6, 0x7e, 0xa9, 0xc4, - 0xb7, 0x7f, 0xaa, 0xc4, 0xb7, 0x7e, 0xa9, 0xc4, 0xb7, 0x7f, 0xaa, 0xc4, - 0xb8, 0x7e, 0xa9, 0xc4, 0xb8, 0x7f, 0xaa, 0xc4, 0xb8, 0x7e, 0xa9, 0xc4, - 0xb9, 0x7f, 0xbc, 0xc4, 0xb9, 0x73, 0xbb, 0xc4, 0xb9, 0x73, 0xbc, 0xc4, - 0xba, 0x73, 0xbb, 0xc4, 0xba, 0x73, 0xbf, 0xc4, 0xba, 0x74, 0xbf, 0xc4, - 0xbb, 0x74, 0xbf, 0xc4, 0xbb, 0x74, 0xbf, 0xc4, 0xbb, 0x74, 0xbf, 0xc4, - 0xbc, 0x74, 0xbf, 0xc4, 0xbc, 0x74, 0xbf, 0xc4, 0xbc, 0x74, 0xbf, 0xc4, - 0xbd, 0x74, 0xbf, 0xc4, 0xbd, 0x74, 0xbf, 0xc4, 0xbd, 0x74, 0xbf, 0xc4, - 0xbe, 0x74, 0xc2, 0xc4, 0xbe, 0x75, 0xc3, 0xc4, 0xbe, 0x75, 0xc2, 0xc4, - 0xbf, 0x75, 0xc3, 0xc4, 0xbf, 0x75, 0xc2, 0xc4, 0xbf, 0x75, 0xc3, 0xc4, - 0xc0, 0x75, 0xc2, 0xc4, 0xc0, 0x75, 0xc3, 0xc4, 0xc0, 0x75, 0xc2, 0xc4, - 0xc1, 0x75, 0xc3, 0xc4, 0xc1, 0x75, 0xc2, 0xc4, 0xc1, 0x75, 0xc3, 0xc4, - 0xc1, 0x75, 0xc2, 0xc4, 0xc2, 0x75, 0xc3, 0xc4, 0xc2, 0x75, 0xc6, 0xc4, - 0xc2, 0x76, 0xc6, 0xc4, 0xc3, 0x76, 0xc6, 0xc4, 0xc3, 0x76, 0xc6, 0xc4, - 0xc3, 0x76, 0xc6, 0xc4, 0xc4, 0x76, 0xc6, 0xc4, 0xc4, 0x76, 0xc6, 0xc4, - 0xc4, 0x76, 0xc6, 0xc4, 0xc5, 0x76, 0xc6, 0xc4, 0xc5, 0x76, 0xc6, 0xc4, - 0xc5, 0x76, 0xc6, 0xc4, 0xc6, 0x76, 0xc9, 0xc4, 0xc6, 0x77, 0xca, 0xc4, - 0xc6, 0x77, 0xc9, 0xc4, 0xc6, 0x77, 0xca, 0xc4, 0xc7, 0x77, 0xc9, 0xc4, - 0xc7, 0x77, 0xca, 0xc4, 0xc7, 0x77, 0xc9, 0xc4, 0xc8, 0x77, 0xd4, 0xc4, - 0xc8, 0x93, 0xd4, 0xc4, 0xc8, 0x95, 0xd4, 0xc4, 0xc9, 0x93, 0xd4, 0xc4, - 0xc9, 0x95, 0xd4, 0xc4, 0xc9, 0x93, 0xd4, 0xc4, 0xc9, 0x95, 0xd4, 0xc4, - 0xca, 0x93, 0xd4, 0xc4, 0xca, 0x95, 0xd4, 0xc4, 0xca, 0x93, 0xd4, 0xc4, - 0xcb, 0x95, 0xd4, 0xc4, 0xcb, 0x93, 0xd4, 0xc4, 0xcb, 0x95, 0xd4, 0xc4, - 0xcc, 0x93, 0xd4, 0xc4, 0xcc, 0x95, 0xd4, 0xc4, 0xcc, 0x93, 0xd4, 0xc4, - 0xcc, 0x93, 0xd4, 0xc4, 0xcd, 0x93, 0xd4, 0xc4, 0xcd, 0x93, 0xd4, 0xc4, - 0xcd, 0x93, 0xd4, 0xc4, 0xce, 0x93, 0xd4, 0xc4, 0xce, 0x93, 0xd4, 0xc4, - 0xce, 0x93, 0xd4, 0xc4, 0xce, 0x93, 0xd4, 0xc4, 0xcf, 0x93, 0xd4, 0xc4, - 0xcf, 0x93, 0xd4, 0xc4, 0xcf, 0x93, 0xd4, 0xc4, 0xd0, 0x93, 0xd4, 0xc4, - 0xd0, 0x93, 0xd4, 0xc4, 0xd0, 0x93, 0xd4, 0xc4, 0xd0, 0x93, 0xd4, 0xc4, - 0xd1, 0x93, 0xd4, 0xc4, 0xd1, 0x93, 0xd4, 0xc4, 0xd1, 0x93, 0xd4, 0xc4, - 0xd2, 0x93, 0xd4, 0xc4, 0xd2, 0x93, 0xd4, 0xc4, 0xd2, 0x93, 0xd4, 0xc4, - 0xd2, 0x93, 0xd4, 0xc4, 0xd3, 0x93, 0xd4, 0xc4, 0xd3, 0x93, 0xd4, 0xc4, - 0xd3, 0x93, 0xd4, 0xc4, 0xd4, 0x93, 0xd4, 0xc4, 0xd4, 0x93, 0xd4, 0xc4, - 0xd4, 0x93, 0xd4, 0xc4, 0xd4, 0x93, 0xd5, 0xc4, 0xd5, 0x93, 0xd4, 0xc4, - 0xd5, 0x93, 0xd5, 0xc4, 0xd5, 0x93, 0xd4, 0xc4, 0xd6, 0x93, 0xd5, 0xc4, - 0xd6, 0x93, 0xd4, 0xc4, 0xd6, 0x93, 0xd5, 0xc4, 0xd6, 0x93, 0xd7, 0xc4, - 0xd7, 0x94, 0xd7, 0xc4, 0xd7, 0x94, 0xd7, 0xc4, 0xd7, 0x94, 0xd7, 0xc4, - 0xd7, 0x94, 0xd8, 0xc4, 0xd8, 0x94, 0xd7, 0xc4, 0xd8, 0x94, 0xd8, 0xc4, - 0xd8, 0x94, 0xd7, 0xc4, 0xd9, 0x94, 0xd8, 0xc4, 0xd9, 0x94, 0xd7, 0xc4, - 0xd9, 0x94, 0xd8, 0xc4, 0xd9, 0x94, 0xda, 0xc4, 0xda, 0x95, 0xda, 0xc4, - 0xda, 0x95, 0xda, 0xc4, 0xda, 0x95, 0xda, 0xc4, 0xda, 0x95, 0xdb, 0xc4, - 0xdb, 0x95, 0xda, 0xc4, 0xdb, 0x95, 0xdb, 0xc4, 0xdb, 0x95, 0xda, 0xc4, - 0xdb, 0x95, 0xdb, 0xc4, 0xdc, 0x95, 0xda, 0xc4, 0xdc, 0x95, 0xdb, 0xc4, - 0xdc, 0x95, 0xda, 0xc4, 0xdd, 0x95, 0xdb, 0xc4, 0xdd, 0x95, 0xdd, 0xc4, - 0xdd, 0x96, 0xdd, 0xc4, 0xdd, 0x96, 0xde, 0xc4, 0xde, 0x96, 0xdd, 0xc4, - 0xde, 0x96, 0xde, 0xc4, 0xde, 0x96, 0xdd, 0xc4, 0xde, 0x96, 0xde, 0xc4, - 0xdf, 0x96, 0xdd, 0xc4, 0xdf, 0x96, 0xde, 0xc4, 0xdf, 0x96, 0xdd, 0xc4, - 0xdf, 0x96, 0xde, 0xc4, 0xe0, 0x96, 0xe0, 0xc4, 0xe0, 0x97, 0xe0, 0xc4, - 0xe0, 0x97, 0xe1, 0xc4, 0xe1, 0x97, 0xe0, 0xc4, 0xe1, 0x97, 0xe1, 0xc4, - 0xe1, 0x97, 0xe0, 0xc4, 0xe1, 0x97, 0xe1, 0xc4, 0xe2, 0x97, 0xe0, 0xc4, - 0xe2, 0x97, 0xe1, 0xc4, 0xe2, 0x97, 0xe0, 0xc4, 0xe2, 0x97, 0xe1, 0xc4, - 0xe3, 0x97, 0xe3, 0xc4, 0xe3, 0x98, 0xe3, 0xc4, 0xe3, 0x98, 0xe3, 0xc4, - 0xe3, 0x98, 0xe3, 0xc4, 0xe4, 0x98, 0xe3, 0xc4, 0xe4, 0x98, 0xea, 0xc4, - 0xe4, 0x8c, 0xea, 0xc4, 0xe4, 0x8d, 0xea, 0xc4, 0xe5, 0x8c, 0xea, 0xc4, - 0xe5, 0x8d, 0xea, 0xc4, 0xe5, 0x8c, 0xea, 0xc4, 0xe5, 0x8d, 0xea, 0xc4, - 0xe6, 0x8c, 0xea, 0xc4, 0xe6, 0x8d, 0xea, 0xc4, 0xe6, 0x8c, 0xea, 0xc4, - 0xe6, 0x8d, 0xea, 0xc4, 0xe7, 0x8c, 0xea, 0xc4, 0xe7, 0x8d, 0xea, 0xc4, - 0xe7, 0x8c, 0xea, 0xc4, 0xe7, 0x8d, 0xea, 0xc4, 0xe8, 0x8c, 0xea, 0xc4, - 0xe8, 0x8d, 0xea, 0xc4, 0xe8, 0x8c, 0xea, 0xc4, 0xe8, 0x8d, 0xea, 0xc4, - 0xe9, 0x8c, 0xea, 0xc4, 0xe9, 0x8d, 0xea, 0xc4, 0xe9, 0x8c, 0xea, 0xc4, - 0xe9, 0x8d, 0xea, 0xc4, 0xea, 0x8c, 0xea, 0xc4, 0xe9, 0x8d, 0xea, 0xc4, - 0xea, 0x8d, 0xea, 0xc5, 0xea, 0x8d, 0xeb, 0xc5, 0xeb, 0x8d, 0xeb, 0xc5, - 0xeb, 0x8d, 0xeb, 0xc5, 0xeb, 0x8d, 0xeb, 0xc5, 0xeb, 0x8d, 0xec, 0xc5, - 0xec, 0x8d, 0xec, 0xc5, 0xec, 0x8d, 0xec, 0xc5, 0xec, 0x8d, 0xec, 0xc5, - 0xec, 0x8d, 0xec, 0xc5, 0xec, 0x8d, 0xed, 0xc5, 0xed, 0x8d, 0xed, 0xc5, - 0xed, 0x8d, 0xed, 0xc5, 0xed, 0x8d, 0xed, 0xc5, 0xed, 0x8d, 0xee, 0xc5, - 0xed, 0x8d, 0xee, 0xc5, 0xee, 0x8d, 0xee, 0xc5, 0xee, 0x8d, 0xee, 0xc5, - 0xee, 0x8d, 0xef, 0xc5, 0xef, 0x8d, 0xef, 0xc5, 0xef, 0x8d, 0xef, 0xc5, - 0xef, 0x8d, 0xef, 0xc5, 0xef, 0x8d, 0xf0, 0xc5, 0xf0, 0x8d, 0xf0, 0xc5, - 0xf0, 0x8d, 0xf0, 0xc5, 0xf0, 0x8d, 0xf0, 0xc5, 0xf0, 0x8d, 0xf1, 0xc5, - 0xf1, 0x8d, 0xf1, 0xc5, 0xf1, 0x8d, 0xf1, 0xc5, 0xf1, 0x8d, 0xf1, 0xc5, - 0xf1, 0x8d, 0xf2, 0xc5, 0xf1, 0x8d, 0xf2, 0xc5, 0xf1, 0x8d, 0xf2, 0xc5, - 0xf1, 0x8d, 0xf2, 0xc6, 0xf2, 0x8d, 0xf2, 0xc6, 0xf2, 0x8d, 0xf3, 0xc6, - 0xf3, 0x8d, 0xf3, 0xc6, 0xf3, 0x8d, 0xf3, 0xc6, 0xf3, 0x8d, 0xf3, 0xc6, - 0xf3, 0x8d, 0xf4, 0xc4, 0xf5, 0x8d, 0xf4, 0xc4, 0xf5, 0x8d, 0xf4, 0xc4, - 0xf5, 0x8d, 0xf4, 0xc4, 0xf5, 0x8d, 0xf4, 0xc4, 0xf5, 0x8d, 0xf4, 0xc4, - 0xf5, 0x8d, 0xf4, 0xc4, 0xf5, 0x8d, 0xf4, 0xc4, 0xf5, 0x8d, 0xf5, 0xc4, - 0xf5, 0x8b, 0xf4, 0xc4, 0xf6, 0x8d, 0xf5, 0xc4, 0xf6, 0x8b, 0xf4, 0xc4, - 0xf6, 0x8d, 0xf8, 0xc4, 0xf6, 0x8f, 0xf8, 0xc4, 0xf7, 0x8d, 0xf8, 0xc4, - 0xf7, 0x8f, 0xf8, 0xc4, 0xf7, 0x8d, 0xf8, 0xc4, 0xf7, 0x8d, 0xf8, 0xc4, - 0xf8, 0x8d, 0xf8, 0xc4, 0xf8, 0x8d, 0xf8, 0xc4, 0xf8, 0x8d, 0xf8, 0xc4, - 0xf8, 0x8d, 0xf8, 0xc4, 0xf8, 0x8d, 0xf9, 0xc4, 0xf8, 0x8d, 0xf9, 0xc4, - 0xf8, 0x8d, 0xf9, 0xc4, 0xf8, 0x8d, 0xf9, 0xc4, 0xf8, 0x8d, 0xfa, 0xc4, - 0xf8, 0x8d, 0xfa, 0xc3, 0xf8, 0x8d, 0xfa, 0xc4, 0xf8, 0x8d, 0xfa, 0xc3, - 0xf8, 0x8d, 0xfa, 0xc4, 0xf8, 0x8d, 0xfb, 0xc3, 0xf8, 0x8d, 0xfb, 0xc4, - 0xf8, 0x8d, 0xfb, 0xc3, 0xf8, 0x8d, 0xfb, 0xc4, 0xf8, 0x8d, 0xfc, 0xc3, - 0xf8, 0x8d, 0xfc, 0xc4, 0xf8, 0x8d, 0xfc, 0xc3, 0xf8, 0x8d, 0xfc, 0xc4, - 0xf8, 0x8d, 0xfc, 0xc3, 0xf8, 0x8d, 0xfd, 0xc4, 0xf8, 0x8d, 0xfd, 0xc3, - 0xf8, 0x8d, 0xfd, 0xc4, 0xf8, 0x8d, 0xfd, 0xc3, 0xf8, 0x8d, 0xfe, 0xc1, - 0xf8, 0x8d, 0xfe, 0xc3, 0xf8, 0x8d, 0xfe, 0xc1, 0xf8, 0x8d, 0xfe, 0xc3, - 0xf8, 0x8d, 0xfe, 0xc1, 0xf8, 0x8d, 0xff, 0xc3, 0xf8, 0x8d, 0xff, 0xc1, - 0xf8, 0x8d, 0x03, 0xcd, 0x8e, 0x8d, 0x0a, 0xcb, 0x8e, 0x8d, 0x0f, 0xcd, - 0x8e, 0x8d, 0x14, 0xcb, 0x8e, 0x8d, 0x17, 0xcd, 0x8e, 0x8d, 0x1b, 0xcb, - 0x8e, 0x8d, 0x1e, 0xcd, 0x8e, 0x8d, 0x20, 0xcb, 0x8e, 0x8d, 0x23, 0xc9, - 0x8f, 0x8d, 0x25, 0xcb, 0x8e, 0x8d, 0x27, 0xc9, 0x8f, 0x8d, 0x29, 0xcb, - 0x8e, 0x8d, 0x2b, 0xc9, 0x8f, 0x8d, 0x2d, 0xcb, 0x8e, 0x8d, 0x2f, 0xc9, - 0x8f, 0x8d, 0x31, 0xcb, 0x8e, 0x8d, 0x32, 0xc9, 0x8f, 0x8d, 0x34, 0xcb, - 0x8e, 0x8d, 0x35, 0xc9, 0x8f, 0x8d, 0x37, 0xcb, 0x8e, 0x8d, 0x38, 0xc9, - 0x8f, 0x8d, 0x3a, 0xcb, 0x8e, 0x8d, 0x3b, 0xc9, 0x8f, 0x8d, 0x3c, 0xcb, - 0x8e, 0x8d, 0x3e, 0xc9, 0x8f, 0x8d, 0x3f, 0xcb, 0x8e, 0x8d, 0x40, 0xc9, - 0x8f, 0x8d, 0x42, 0xcb, 0x8e, 0x8d, 0x43, 0xc9, 0x8f, 0x8d, 0x44, 0xcb, - 0x8e, 0x8d, 0x45, 0xc9, 0x8f, 0x8d, 0x46, 0xcb, 0x8e, 0x8d, 0x47, 0xc9, - 0x8f, 0x8d, 0x48, 0xcb, 0x8e, 0x8d, 0x49, 0xc9, 0x8f, 0x8d, 0x4a, 0xcb, - 0x8e, 0x8d, 0x4b, 0xc9, 0x8f, 0x8d, 0x4c, 0xcb, 0x8e, 0x8d, 0x4d, 0xc9, - 0x8f, 0x8d, 0x4e, 0xcb, 0x8e, 0x8d, 0x4f, 0xc9, 0x8f, 0x8d, 0x50, 0xcb, - 0x8e, 0x8d, 0x51, 0xc9, 0x8f, 0x8d, 0x52, 0xcb, 0x8e, 0x8d, 0x53, 0xc9, - 0x8f, 0x8d, 0x54, 0xc7, 0x8f, 0x8d, 0x55, 0xc9, 0x8f, 0x8d, 0x56, 0xc7, - 0x8f, 0x8d, 0x57, 0xc9, 0x8f, 0x8d, 0x58, 0xc7, 0x8f, 0x8d, 0x58, 0xc9, - 0x8f, 0x8d, 0x59, 0xc7, 0x8f, 0x8d, 0x5a, 0xc9, 0x8f, 0x8d, 0x5b, 0xc7, - 0x8f, 0x8d, 0x5c, 0xc9, 0x8f, 0x8d, 0x5d, 0xc7, 0x8f, 0x8d, 0x5d, 0xc9, - 0x8f, 0x8d, 0x5e, 0xc7, 0x8f, 0x8d, 0x5f, 0xc9, 0x8f, 0x8d, 0x60, 0xc7, - 0x8f, 0x8d, 0x60, 0xc9, 0x8f, 0x8d, 0x61, 0xc7, 0x8f, 0x8d, 0x62, 0xc9, - 0x8f, 0x8d, 0x63, 0xc7, 0x8f, 0x8d, 0x63, 0xc9, 0x8f, 0x8d, 0x64, 0xc7, - 0x8f, 0x8d, 0x65, 0xc9, 0x8f, 0x8d, 0x66, 0xc7, 0x8f, 0x8d, 0x66, 0xc9, - 0x8f, 0x8d, 0x67, 0xc7, 0x8f, 0x8d, 0x68, 0xc9, 0x8f, 0x8d, 0x68, 0xc7, - 0x8f, 0x8d, 0x69, 0xc9, 0x8f, 0x8d, 0x6a, 0xc7, 0x8f, 0x8d, 0x6a, 0xc9, - 0x8f, 0x8d, 0x6b, 0xc7, 0x8f, 0x8d, 0x6c, 0xc9, 0x8f, 0x8d, 0x6c, 0xc7, - 0x8f, 0x8d, 0x6d, 0xc5, 0x90, 0x8d, 0x6e, 0xc7, 0x8f, 0x8d, 0x6e, 0xc5, - 0x90, 0x8d, 0x6f, 0xc7, 0x8f, 0x8d, 0x70, 0xc5, 0x90, 0x8d, 0x70, 0xc7, - 0x8f, 0x8d, 0x71, 0xc5, 0x90, 0x8d, 0x72, 0xc7, 0x8f, 0x8d, 0x72, 0xc5, - 0x90, 0x8d, 0x73, 0xc7, 0x8f, 0x8d, 0x73, 0xc5, 0x90, 0x8d, 0x74, 0xc7, - 0x8f, 0x8d, 0x75, 0xc5, 0x90, 0x8d, 0x75, 0xc7, 0x8f, 0x8d, 0x76, 0xc5, - 0x90, 0x8d, 0x76, 0xc7, 0x8f, 0x8d, 0x77, 0xc5, 0x90, 0x8d, 0x78, 0xc7, - 0x8f, 0x8d, 0x78, 0xc5, 0x90, 0x8d, 0x79, 0xc7, 0x8f, 0x8d, 0x79, 0xc5, - 0x90, 0x8d, 0x7a, 0xc7, 0x8f, 0x8d, 0x7a, 0xc5, 0x90, 0x8d, 0x7b, 0xc7, - 0x8f, 0x8d, 0x7c, 0xc5, 0x90, 0x8d, 0x7c, 0xc7, 0x8f, 0x8d, 0x7d, 0xc5, - 0x90, 0x8d, 0x7d, 0xc7, 0x8f, 0x8d, 0x7e, 0xc5, 0x90, 0x8d, 0x7e, 0xc7, - 0x8f, 0x8d, 0x7f, 0xc5, 0x90, 0x8d, 0x7f, 0xc7, 0x8f, 0x8d, 0x80, 0xc5, - 0x90, 0x8d, 0x81, 0xc7, 0x8f, 0x8d, 0x81, 0xc5, 0x90, 0x8d, 0x82, 0xc7, - 0x8f, 0x8d, 0x82, 0xc5, 0x90, 0x8d, 0x83, 0xc7, 0x8f, 0x8d, 0x83, 0xc5, - 0x90, 0x8d, 0x84, 0xc7, 0x8f, 0x8d, 0x84, 0xc5, 0x90, 0x8d, 0x85, 0xc4, - 0x90, 0x8d, 0x85, 0xc5, 0x90, 0x8d, 0x86, 0xc4, 0x90, 0x8d, 0x86, 0xc5, - 0x90, 0x8d, 0x87, 0xc4, 0x90, 0x8d, 0x87, 0xc5, 0x90, 0x8d, 0x88, 0xc4, - 0x90, 0x8d, 0x88, 0xc5, 0x90, 0x8d, 0x89, 0xc4, 0x90, 0x8d, 0x89, 0xc5, - 0x90, 0x8d, 0x8a, 0xc4, 0x90, 0x8d, 0x8a, 0xc5, 0x90, 0x8d, 0x8b, 0xc4, - 0x90, 0x8d, 0x8b, 0xc5, 0x90, 0x8d, 0x8c, 0xc4, 0x90, 0x8d, 0x8c, 0xc5, - 0x90, 0x8d, 0x8d, 0xc4, 0x90, 0x8d, 0x8d, 0xc5, 0x90, 0x8d, 0x8e, 0xc4, - 0x90, 0x8d, 0x8e, 0xc5, 0x90, 0x8d, 0x8e, 0xc4, 0x90, 0x8d, 0x8f, 0xc5, - 0x90, 0x8d, 0x8f, 0xc4, 0x90, 0x8d, 0x90, 0xc5, 0x90, 0x8d, 0x8f, 0xc4, - 0x90, 0x8d, 0x90, 0xc4, 0x91, 0x8d, 0x8f, 0xc4, 0x91, 0x8d, 0x90, 0xc4, - 0x92, 0x8d, 0x94, 0xc4, 0x92, 0x8d, 0x94, 0xc4, 0x93, 0x8d, 0x94, 0xc4, - 0x93, 0x8d, 0x94, 0xc4, 0x93, 0x8d, 0x94, 0xc4, 0x93, 0x8d, 0x94, 0xc4, - 0x93, 0x8d, 0x95, 0xc4, 0x93, 0x8d, 0x95, 0xc3, 0x94, 0x8d, 0x96, 0xc4, - 0x93, 0x8d, 0x96, 0xc3, 0x94, 0x8d, 0x97, 0xc4, 0x93, 0x8d, 0x97, 0xc3, - 0x94, 0x8d, 0x98, 0xc4, 0x93, 0x8d, 0x98, 0xc3, 0x94, 0x8d, 0x98, 0xc4, - 0x93, 0x8d, 0x99, 0xc3, 0x94, 0x8d, 0x99, 0xc4, 0x93, 0x8d, 0x9a, 0xc3, - 0x94, 0x8d, 0x9a, 0xc4, 0x93, 0x8d, 0x9a, 0xc3, 0x94, 0x8d, 0x9b, 0xc4, - 0x93, 0x8d, 0x9b, 0xca, 0x9b, 0x8d, 0x9c, 0xca, 0x9c, 0x8d, 0x9c, 0xca, - 0x9b, 0x8d, 0x9d, 0xca, 0x9c, 0x8d, 0x9d, 0xca, 0x9b, 0x8d, 0x9d, 0xca, - 0x9c, 0x8d, 0x9e, 0xc4, 0xa5, 0x8d, 0x9e, 0xc4, 0xa5, 0x8d, 0x9f, 0xc4, - 0xa5, 0x8d, 0x9f, 0xc6, 0xa5, 0x8d, 0x9f, 0xc4, 0xa5, 0x8d, 0xa0, 0xc6, - 0xa5, 0x8d, 0xa0, 0xc4, 0xa5, 0x8d, 0xa1, 0xc6, 0xa5, 0x8d, 0xa1, 0xc4, - 0xa5, 0x8d, 0xa1, 0xc6, 0xa5, 0x8d, 0xa2, 0xc4, 0xa5, 0x8d, 0xa2, 0xc4, - 0xa5, 0x8d, 0xa3, 0xc4, 0xa5, 0x8d, 0xa3, 0xc4, 0xa5, 0x8d, 0xa3, 0xc4, - 0xa5, 0x8d, 0xa4, 0xc4, 0xa5, 0x8d, 0xa4, 0xc4, 0xa5, 0x8d, 0xa5, 0xc4, - 0xa5, 0x8d, 0xa5, 0xc4, 0xa5, 0x8c, 0xa5, 0xc4, 0xa5, 0x8d, 0xa5, 0xc4, - 0xa6, 0x8c, 0xa5, 0xc4, 0xa6, 0x8d, 0xa5, 0xc4, 0xa6, 0x8c, 0xa5, 0xc4, - 0xa7, 0x8d, 0xa5, 0xc4, 0xa7, 0x8c, 0xa5, 0xc4, 0xa8, 0x8d, 0xa5, 0xc4, - 0xa8, 0x8c, 0xa5, 0xc4, 0xa8, 0x8d, 0xa5, 0xc4, 0xa9, 0x8c, 0xa5, 0xc4, - 0xa9, 0x8d, 0xa5, 0xc4, 0xaa, 0x8c, 0xa5, 0xc4, 0xaa, 0x8d, 0xa5, 0xc4, - 0xaa, 0x8c, 0xa5, 0xc4, 0xab, 0x8d, 0xa5, 0xc4, 0xab, 0x8c, 0xa5, 0xc4, - 0xab, 0x89, 0xa5, 0xc4, 0xac, 0x8c, 0xa5, 0xc4, 0xac, 0x89, 0xa5, 0xc4, - 0xac, 0x8c, 0xa5, 0xc4, 0xad, 0x89, 0xa5, 0xc4, 0xad, 0x8c, 0xa5, 0xc4, - 0xae, 0x89, 0xa5, 0xc4, 0xae, 0x8c, 0xa5, 0xc4, 0xae, 0x89, 0xa5, 0xc4, - 0xaf, 0x8c, 0xa5, 0xc4, 0xaf, 0x89, 0xa5, 0xc4, 0xaf, 0x8c, 0xa5, 0xc4, - 0xb0, 0x89, 0xa5, 0xc4, 0xb0, 0x8c, 0xa5, 0xc4, 0xb0, 0x89, 0xa5, 0xc4, - 0xb1, 0x8c, 0xa5, 0xc4, 0xb1, 0x89, 0xa5, 0xc4, 0xb2, 0x8c, 0xa5, 0xc4, - 0xb2, 0x89, 0xa5, 0xc4, 0xb2, 0x8c, 0xa5, 0xc4, 0xb3, 0x89, 0xa6, 0xc4, - 0xb3, 0x87, 0xa5, 0xc4, 0xb3, 0x89, 0xa6, 0xc4, 0xb4, 0x87, 0xa5, 0xc4, - 0xb4, 0x89, 0xa6, 0xc4, 0xb4, 0x87, 0xa5, 0xc4, 0xb5, 0x89, 0xa6, 0xc4, - 0xb5, 0x87, 0xa5, 0xc4, 0xb5, 0x89, 0xa6, 0xc4, 0xb6, 0x87, 0xa5, 0xc4, - 0xb6, 0x89, 0xa6, 0xc4, 0xb6, 0x87, 0xa9, 0xc4, 0xb7, 0x7e, 0xa6, 0xc4, - 0xb7, 0x87, 0xa9, 0xc4, 0xb7, 0x7e, 0xaa, 0xc4, 0xb8, 0x7d, 0xa9, 0xc4, - 0xb8, 0x7e, 0xaa, 0xc4, 0xb8, 0x7d, 0xa9, 0xc4, 0xb9, 0x7e, 0xbe, 0xc4, - 0xb9, 0x73, 0xbd, 0xc4, 0xb9, 0x73, 0xbe, 0xc4, 0xba, 0x73, 0xbd, 0xc4, - 0xba, 0x73, 0xbe, 0xc4, 0xba, 0x73, 0xbd, 0xc4, 0xbb, 0x73, 0xbe, 0xc4, - 0xbb, 0x73, 0xbd, 0xc4, 0xbb, 0x73, 0xbe, 0xc4, 0xbc, 0x73, 0xbd, 0xc4, - 0xbc, 0x73, 0xc1, 0xc4, 0xbc, 0x74, 0xc1, 0xc4, 0xbd, 0x74, 0xc1, 0xc4, - 0xbd, 0x74, 0xc1, 0xc4, 0xbd, 0x74, 0xc1, 0xc4, 0xbe, 0x74, 0xc1, 0xc4, - 0xbe, 0x74, 0xc1, 0xc4, 0xbe, 0x74, 0xc1, 0xc4, 0xbf, 0x74, 0xc1, 0xc4, - 0xbf, 0x74, 0xc1, 0xc4, 0xbf, 0x74, 0xc1, 0xc4, 0xc0, 0x74, 0xc4, 0xc4, - 0xc0, 0x75, 0xc5, 0xc4, 0xc0, 0x75, 0xc4, 0xc4, 0xc1, 0x75, 0xc5, 0xc4, - 0xc1, 0x75, 0xc4, 0xc4, 0xc1, 0x75, 0xc5, 0xc4, 0xc1, 0x75, 0xc4, 0xc4, - 0xc2, 0x75, 0xc5, 0xc4, 0xc2, 0x75, 0xc4, 0xc4, 0xc2, 0x75, 0xc5, 0xc4, - 0xc3, 0x75, 0xc4, 0xc4, 0xc3, 0x75, 0xc8, 0xc4, 0xc3, 0x76, 0xc4, 0xc4, - 0xc4, 0x75, 0xc8, 0xc4, 0xc4, 0x76, 0xc8, 0xc4, 0xc4, 0x76, 0xc8, 0xc4, - 0xc5, 0x76, 0xc8, 0xc4, 0xc5, 0x76, 0xc8, 0xc4, 0xc5, 0x76, 0xc8, 0xc4, - 0xc6, 0x76, 0xc8, 0xc4, 0xc6, 0x76, 0xc8, 0xc4, 0xc6, 0x76, 0xc8, 0xc4, - 0xc6, 0x76, 0xc8, 0xc4, 0xc7, 0x76, 0xc8, 0xc4, 0xc7, 0x76, 0xcb, 0xc4, - 0xc7, 0x77, 0xd4, 0xc4, 0xc8, 0x94, 0xd4, 0xc4, 0xc8, 0x93, 0xd4, 0xc4, - 0xc8, 0x94, 0xd4, 0xc4, 0xc9, 0x93, 0xd4, 0xc4, 0xc9, 0x94, 0xd4, 0xc4, - 0xc9, 0x93, 0xd4, 0xc4, 0xc9, 0x94, 0xd4, 0xc4, 0xca, 0x93, 0xd4, 0xc4, - 0xca, 0x94, 0xd4, 0xc4, 0xca, 0x93, 0xd4, 0xc4, 0xcb, 0x94, 0xd4, 0xc4, - 0xcb, 0x93, 0xd4, 0xc4, 0xcb, 0x94, 0xd4, 0xc4, 0xcc, 0x93, 0xd4, 0xc4, - 0xcc, 0x94, 0xd4, 0xc4, 0xcc, 0x93, 0xd4, 0xc4, 0xcc, 0x94, 0xd4, 0xc4, - 0xcd, 0x93, 0xd4, 0xc4, 0xcd, 0x94, 0xd4, 0xc4, 0xcd, 0x93, 0xd4, 0xc4, - 0xce, 0x94, 0xd4, 0xc4, 0xce, 0x93, 0xd4, 0xc4, 0xce, 0x94, 0xd4, 0xc4, - 0xce, 0x93, 0xd4, 0xc4, 0xcf, 0x94, 0xd4, 0xc4, 0xcf, 0x93, 0xd4, 0xc4, - 0xcf, 0x94, 0xd4, 0xc4, 0xd0, 0x93, 0xd4, 0xc4, 0xd0, 0x94, 0xd4, 0xc4, - 0xd0, 0x93, 0xd4, 0xc4, 0xd0, 0x94, 0xd4, 0xc4, 0xd1, 0x93, 0xd4, 0xc4, - 0xd1, 0x93, 0xd4, 0xc4, 0xd1, 0x93, 0xd4, 0xc4, 0xd2, 0x93, 0xd4, 0xc4, - 0xd2, 0x93, 0xd4, 0xc4, 0xd2, 0x93, 0xd4, 0xc4, 0xd2, 0x93, 0xd4, 0xc4, - 0xd3, 0x93, 0xd4, 0xc4, 0xd3, 0x93, 0xd4, 0xc4, 0xd3, 0x93, 0xd4, 0xc4, - 0xd4, 0x93, 0xd4, 0xc4, 0xd4, 0x93, 0xd4, 0xc4, 0xd4, 0x93, 0xd4, 0xc4, - 0xd4, 0x93, 0xd5, 0xc4, 0xd5, 0x93, 0xd5, 0xc4, 0xd5, 0x93, 0xd5, 0xc4, - 0xd5, 0x93, 0xd6, 0xc4, 0xd6, 0x93, 0xd6, 0xc4, 0xd6, 0x93, 0xd6, 0xc4, - 0xd6, 0x93, 0xd6, 0xc4, 0xd6, 0x93, 0xd6, 0xc4, 0xd7, 0x93, 0xd6, 0xc4, - 0xd7, 0x93, 0xd6, 0xc4, 0xd7, 0x93, 0xd6, 0xc4, 0xd7, 0x93, 0xd6, 0xc4, - 0xd8, 0x93, 0xd8, 0xc4, 0xd8, 0x94, 0xd8, 0xc4, 0xd8, 0x94, 0xd9, 0xc4, - 0xd9, 0x94, 0xd9, 0xc4, 0xd9, 0x94, 0xd9, 0xc4, 0xd9, 0x94, 0xd9, 0xc4, - 0xd9, 0x94, 0xd9, 0xc4, 0xda, 0x94, 0xd9, 0xc4, 0xda, 0x94, 0xd9, 0xc4, - 0xda, 0x94, 0xd9, 0xc4, 0xda, 0x94, 0xd9, 0xc4, 0xdb, 0x94, 0xdb, 0xc4, - 0xdb, 0x95, 0xdb, 0xc4, 0xdb, 0x95, 0xdb, 0xc4, 0xdb, 0x95, 0xdc, 0xc4, - 0xdc, 0x95, 0xdc, 0xc4, 0xdc, 0x95, 0xdc, 0xc4, 0xdc, 0x95, 0xdc, 0xc4, - 0xdd, 0x95, 0xdc, 0xc4, 0xdd, 0x95, 0xdc, 0xc4, 0xdd, 0x95, 0xdc, 0xc4, - 0xdd, 0x95, 0xdc, 0xc4, 0xde, 0x95, 0xdc, 0xc4, 0xde, 0x95, 0xdc, 0xc4, - 0xde, 0x95, 0xde, 0xc4, 0xde, 0x96, 0xdf, 0xc4, 0xdf, 0x96, 0xdf, 0xc4, - 0xdf, 0x96, 0xdf, 0xc4, 0xdf, 0x96, 0xdf, 0xc4, 0xdf, 0x96, 0xdf, 0xc4, - 0xe0, 0x96, 0xdf, 0xc4, 0xe0, 0x96, 0xdf, 0xc4, 0xe0, 0x96, 0xdf, 0xc4, - 0xe1, 0x96, 0xdf, 0xc4, 0xe1, 0x96, 0xdf, 0xc4, 0xe1, 0x96, 0xe1, 0xc4, - 0xe1, 0x97, 0xe2, 0xc4, 0xe2, 0x97, 0xe2, 0xc4, 0xe2, 0x97, 0xe2, 0xc4, - 0xe2, 0x97, 0xe2, 0xc4, 0xe2, 0x97, 0xe2, 0xc4, 0xe3, 0x97, 0xe2, 0xc4, - 0xe3, 0x97, 0xe2, 0xc4, 0xe3, 0x97, 0xe2, 0xc4, 0xe3, 0x97, 0xe2, 0xc4, - 0xe4, 0x97, 0xe2, 0xc4, 0xe4, 0x97, 0xe4, 0xc4, 0xe4, 0x98, 0xe4, 0xc4, - 0xe4, 0x98, 0xea, 0xc4, 0xe5, 0x8c, 0xea, 0xc4, 0xe5, 0x8c, 0xea, 0xc4, - 0xe5, 0x8c, 0xea, 0xc4, 0xe5, 0x8c, 0xea, 0xc4, 0xe6, 0x8c, 0xea, 0xc4, - 0xe6, 0x8c, 0xea, 0xc4, 0xe6, 0x8c, 0xea, 0xc4, 0xe6, 0x8c, 0xea, 0xc4, - 0xe7, 0x8c, 0xea, 0xc4, 0xe7, 0x8c, 0xea, 0xc4, 0xe7, 0x8c, 0xea, 0xc4, - 0xe7, 0x8c, 0xea, 0xc4, 0xe8, 0x8c, 0xea, 0xc4, 0xe8, 0x8c, 0xea, 0xc4, - 0xe8, 0x8c, 0xea, 0xc4, 0xe8, 0x8c, 0xea, 0xc4, 0xe9, 0x8c, 0xea, 0xc4, - 0xe9, 0x8c, 0xea, 0xc4, 0xe9, 0x8c, 0xea, 0xc4, 0xe9, 0x8c, 0xea, 0xc4, - 0xea, 0x8c, 0xea, 0xc4, 0xea, 0x8c, 0xea, 0xc4, 0xea, 0x8c, 0xea, 0xc4, - 0xea, 0x8c, 0xeb, 0xc4, 0xeb, 0x8c, 0xeb, 0xc4, 0xeb, 0x8c, 0xeb, 0xc4, - 0xeb, 0x8c, 0xeb, 0xc4, 0xeb, 0x8c, 0xec, 0xc4, 0xec, 0x8c, 0xec, 0xc5, - 0xec, 0x8d, 0xec, 0xc5, 0xec, 0x8d, 0xec, 0xc5, 0xec, 0x8d, 0xec, 0xc5, - 0xec, 0x8d, 0xed, 0xc5, 0xed, 0x8d, 0xed, 0xc5, 0xed, 0x8d, 0xed, 0xc5, - 0xed, 0x8d, 0xed, 0xc5, 0xed, 0x8d, 0xee, 0xc5, 0xee, 0x8d, 0xee, 0xc5, - 0xee, 0x8d, 0xee, 0xc5, 0xee, 0x8d, 0xee, 0xc5, 0xee, 0x8d, 0xef, 0xc5, - 0xef, 0x8d, 0xef, 0xc5, 0xef, 0x8d, 0xef, 0xc5, 0xef, 0x8d, 0xef, 0xc5, - 0xef, 0x8d, 0xf0, 0xc5, 0xef, 0x8d, 0xf0, 0xc6, 0xf0, 0x8d, 0xf0, 0xc6, - 0xf0, 0x8d, 0xf0, 0xc6, 0xf0, 0x8d, 0xf1, 0xc6, 0xf1, 0x8d, 0xf1, 0xc6, - 0xf1, 0x8d, 0xf1, 0xc6, 0xf1, 0x8d, 0xf1, 0xc6, 0xf1, 0x8d, 0xf2, 0xc6, - 0xf2, 0x8d, 0xf2, 0xc6, 0xf2, 0x8d, 0xf2, 0xc6, 0xf2, 0x8d, 0xf2, 0xc6, - 0xf2, 0x8d, 0xf2, 0xc6, 0xf2, 0x8d, 0xf3, 0xc6, 0xf3, 0x8d, 0xf3, 0xc6, - 0xf3, 0x8d, 0xf3, 0xc6, 0xf3, 0x8d, 0xf3, 0xc6, 0xf3, 0x8d, 0xf4, 0xc4, - 0xf5, 0x8d, 0xf4, 0xc4, 0xf5, 0x8d, 0xf4, 0xc4, 0xf5, 0x8d, 0xf4, 0xc4, - 0xf5, 0x8d, 0xf4, 0xc4, 0xf5, 0x8d, 0xf4, 0xc4, 0xf5, 0x8d, 0xf4, 0xc4, - 0xf5, 0x8d, 0xf4, 0xc4, 0xf5, 0x8d, 0xf4, 0xc4, 0xf5, 0x8d, 0xf4, 0xc4, - 0xf6, 0x8d, 0xf4, 0xc4, 0xf6, 0x8d, 0xf4, 0xc4, 0xf6, 0x8d, 0xf8, 0xc4, - 0xf6, 0x8e, 0xf8, 0xc4, 0xf7, 0x8d, 0xf8, 0xc4, 0xf7, 0x8e, 0xf8, 0xc4, - 0xf7, 0x8d, 0xf8, 0xc4, 0xf7, 0x8e, 0xf8, 0xc4, 0xf8, 0x8d, 0xf8, 0xc4, - 0xf8, 0x8d, 0xf8, 0xc4, 0xf8, 0x8d, 0xf8, 0xc4, 0xf8, 0x8d, 0xf8, 0xc4, - 0xf8, 0x8d, 0xf9, 0xc4, 0xf8, 0x8d, 0xf9, 0xc4, 0xf8, 0x8d, 0xf9, 0xc4, - 0xf8, 0x8d, 0xf9, 0xc4, 0xf8, 0x8d, 0xfa, 0xc4, 0xf8, 0x8d, 0xfa, 0xc4, - 0xf8, 0x8d, 0xfa, 0xc4, 0xf8, 0x8d, 0xfa, 0xc4, 0xf8, 0x8d, 0xfa, 0xc4, - 0xf8, 0x8d, 0xfb, 0xc4, 0xf8, 0x8d, 0xfb, 0xc4, 0xf8, 0x8d, 0xfb, 0xc4, - 0xf8, 0x8d, 0xfb, 0xc4, 0xf8, 0x8d, 0xfc, 0xc4, 0xf8, 0x8d, 0xfc, 0xc4, - 0xf8, 0x8d, 0xfc, 0xc2, 0xf8, 0x8d, 0xfc, 0xc4, 0xf8, 0x8d, 0xfc, 0xc2, - 0xf8, 0x8d, 0xfd, 0xc4, 0xf8, 0x8d, 0xfd, 0xc2, 0xf8, 0x8d, 0xfd, 0xc4, - 0xf8, 0x8d, 0xfd, 0xc2, 0xf8, 0x8d, 0xfe, 0xc4, 0xf8, 0x8d, 0xfe, 0xc2, - 0xf8, 0x8d, 0xfe, 0xc4, 0xf8, 0x8d, 0xfe, 0xc2, 0xf8, 0x8d, 0xfe, 0xc4, - 0xf8, 0x8d, 0xff, 0xc2, 0xf8, 0x8d, 0xff, 0xc4, 0xf8, 0x8d, 0x03, 0xc9, - 0x8f, 0x8e, 0x0a, 0xc9, 0x8f, 0x8e, 0x0f, 0xc9, 0x8f, 0x8e, 0x14, 0xcb, - 0x8e, 0x8e, 0x17, 0xc9, 0x8f, 0x8e, 0x1b, 0xcb, 0x8e, 0x8e, 0x1e, 0xc9, - 0x8f, 0x8e, 0x20, 0xcb, 0x8e, 0x8e, 0x23, 0xc9, 0x8f, 0x8e, 0x25, 0xcb, - 0x8e, 0x8e, 0x27, 0xc9, 0x8f, 0x8e, 0x29, 0xcb, 0x8e, 0x8e, 0x2b, 0xc9, - 0x8f, 0x8e, 0x2d, 0xcb, 0x8e, 0x8e, 0x2f, 0xc9, 0x8f, 0x8e, 0x31, 0xcb, - 0x8e, 0x8e, 0x32, 0xc9, 0x8f, 0x8e, 0x34, 0xcb, 0x8e, 0x8e, 0x35, 0xc9, - 0x8f, 0x8e, 0x37, 0xcb, 0x8e, 0x8e, 0x38, 0xc9, 0x8f, 0x8e, 0x3a, 0xcb, - 0x8e, 0x8e, 0x3b, 0xc9, 0x8f, 0x8e, 0x3c, 0xcb, 0x8e, 0x8e, 0x3e, 0xc9, - 0x8f, 0x8e, 0x3f, 0xcb, 0x8e, 0x8e, 0x40, 0xc9, 0x8f, 0x8e, 0x42, 0xcb, - 0x8e, 0x8e, 0x43, 0xc9, 0x8f, 0x8e, 0x44, 0xcb, 0x8e, 0x8e, 0x45, 0xc9, - 0x8f, 0x8e, 0x46, 0xcb, 0x8e, 0x8e, 0x47, 0xc9, 0x8f, 0x8e, 0x48, 0xcb, - 0x8e, 0x8e, 0x49, 0xc9, 0x8f, 0x8e, 0x4a, 0xcb, 0x8e, 0x8e, 0x4b, 0xc9, - 0x8f, 0x8e, 0x4c, 0xc7, 0x8f, 0x8e, 0x4d, 0xc9, 0x8f, 0x8e, 0x4e, 0xc7, - 0x8f, 0x8e, 0x4f, 0xc9, 0x8f, 0x8e, 0x50, 0xc7, 0x8f, 0x8e, 0x51, 0xc9, - 0x8f, 0x8e, 0x52, 0xc7, 0x8f, 0x8e, 0x53, 0xc9, 0x8f, 0x8e, 0x54, 0xc7, - 0x8f, 0x8e, 0x55, 0xc9, 0x8f, 0x8e, 0x56, 0xc7, 0x8f, 0x8e, 0x57, 0xc9, - 0x8f, 0x8e, 0x58, 0xc7, 0x8f, 0x8e, 0x58, 0xc9, 0x8f, 0x8e, 0x59, 0xc7, - 0x8f, 0x8e, 0x5a, 0xc9, 0x8f, 0x8e, 0x5b, 0xc7, 0x8f, 0x8e, 0x5c, 0xc9, - 0x8f, 0x8e, 0x5d, 0xc7, 0x8f, 0x8e, 0x5d, 0xc9, 0x8f, 0x8e, 0x5e, 0xc7, - 0x8f, 0x8e, 0x5f, 0xc9, 0x8f, 0x8e, 0x60, 0xc7, 0x8f, 0x8e, 0x60, 0xc9, - 0x8f, 0x8e, 0x61, 0xc7, 0x8f, 0x8e, 0x62, 0xc9, 0x8f, 0x8e, 0x63, 0xc7, - 0x8f, 0x8e, 0x63, 0xc9, 0x8f, 0x8e, 0x64, 0xc7, 0x8f, 0x8e, 0x65, 0xc9, - 0x8f, 0x8e, 0x66, 0xc7, 0x8f, 0x8e, 0x66, 0xc9, 0x8f, 0x8e, 0x67, 0xc7, - 0x8f, 0x8e, 0x68, 0xc9, 0x8f, 0x8e, 0x68, 0xc7, 0x8f, 0x8e, 0x69, 0xc9, - 0x8f, 0x8e, 0x6a, 0xc7, 0x8f, 0x8e, 0x6a, 0xc9, 0x8f, 0x8e, 0x6b, 0xc7, - 0x8f, 0x8e, 0x6c, 0xc9, 0x8f, 0x8e, 0x6c, 0xc7, 0x8f, 0x8e, 0x6d, 0xc9, - 0x8f, 0x8e, 0x6e, 0xc7, 0x8f, 0x8e, 0x6e, 0xc9, 0x8f, 0x8e, 0x6f, 0xc7, - 0x8f, 0x8e, 0x70, 0xc9, 0x8f, 0x8e, 0x70, 0xc7, 0x8f, 0x8e, 0x71, 0xc9, - 0x8f, 0x8e, 0x72, 0xc7, 0x8f, 0x8e, 0x72, 0xc9, 0x8f, 0x8e, 0x73, 0xc7, - 0x8f, 0x8e, 0x73, 0xc9, 0x8f, 0x8e, 0x74, 0xc7, 0x8f, 0x8e, 0x75, 0xc9, - 0x8f, 0x8e, 0x75, 0xc7, 0x8f, 0x8e, 0x76, 0xc9, 0x8f, 0x8e, 0x76, 0xc7, - 0x8f, 0x8e, 0x77, 0xc5, 0x90, 0x8e, 0x78, 0xc7, 0x8f, 0x8e, 0x78, 0xc5, - 0x90, 0x8e, 0x79, 0xc7, 0x8f, 0x8e, 0x79, 0xc5, 0x90, 0x8e, 0x7a, 0xc7, - 0x8f, 0x8e, 0x7a, 0xc5, 0x90, 0x8e, 0x7b, 0xc7, 0x8f, 0x8e, 0x7c, 0xc5, - 0x90, 0x8e, 0x7c, 0xc7, 0x8f, 0x8e, 0x7d, 0xc5, 0x90, 0x8e, 0x7d, 0xc7, - 0x8f, 0x8e, 0x7e, 0xc5, 0x90, 0x8e, 0x7e, 0xc7, 0x8f, 0x8e, 0x7f, 0xc5, - 0x90, 0x8e, 0x7f, 0xc7, 0x8f, 0x8e, 0x80, 0xc5, 0x90, 0x8e, 0x81, 0xc7, - 0x8f, 0x8e, 0x81, 0xc5, 0x90, 0x8e, 0x82, 0xc7, 0x8f, 0x8e, 0x82, 0xc5, - 0x90, 0x8e, 0x83, 0xc7, 0x8f, 0x8e, 0x83, 0xc5, 0x90, 0x8e, 0x84, 0xc7, - 0x8f, 0x8e, 0x84, 0xc5, 0x90, 0x8e, 0x85, 0xc7, 0x8f, 0x8e, 0x85, 0xc5, - 0x90, 0x8e, 0x86, 0xc7, 0x8f, 0x8e, 0x86, 0xc5, 0x90, 0x8e, 0x87, 0xc7, - 0x8f, 0x8e, 0x87, 0xc5, 0x90, 0x8e, 0x88, 0xc7, 0x8f, 0x8e, 0x88, 0xc5, - 0x90, 0x8e, 0x89, 0xc5, 0x90, 0x8e, 0x89, 0xc5, 0x90, 0x8e, 0x8a, 0xc5, - 0x90, 0x8e, 0x8a, 0xc5, 0x90, 0x8e, 0x8b, 0xc5, 0x90, 0x8e, 0x8b, 0xc5, - 0x90, 0x8e, 0x8c, 0xc5, 0x90, 0x8e, 0x8c, 0xc5, 0x90, 0x8e, 0x8d, 0xc5, - 0x90, 0x8e, 0x8d, 0xc5, 0x90, 0x8e, 0x8e, 0xc5, 0x90, 0x8e, 0x8e, 0xc5, - 0x90, 0x8e, 0x8e, 0xc5, 0x90, 0x8e, 0x8f, 0xc5, 0x90, 0x8e, 0x8f, 0xc5, - 0x90, 0x8e, 0x90, 0xc5, 0x90, 0x8e, 0x8f, 0xc5, 0x90, 0x8e, 0x90, 0xc5, - 0x91, 0x8e, 0x8f, 0xc5, 0x91, 0x8e, 0x90, 0xc5, 0x92, 0x8e, 0x93, 0xc5, - 0x92, 0x8f, 0x94, 0xc5, 0x93, 0x8e, 0x94, 0xc5, 0x93, 0x8e, 0x94, 0xc5, - 0x93, 0x8e, 0x94, 0xc5, 0x93, 0x8e, 0x94, 0xc5, 0x93, 0x8e, 0x95, 0xc5, - 0x93, 0x8e, 0x95, 0xc5, 0x93, 0x8e, 0x96, 0xc5, 0x93, 0x8e, 0x96, 0xc5, - 0x93, 0x8e, 0x97, 0xc5, 0x93, 0x8e, 0x97, 0xc3, 0x94, 0x8e, 0x98, 0xc5, - 0x93, 0x8e, 0x98, 0xc3, 0x94, 0x8e, 0x98, 0xc5, 0x93, 0x8e, 0x99, 0xc3, - 0x94, 0x8e, 0x99, 0xc5, 0x93, 0x8e, 0x9a, 0xc3, 0x94, 0x8e, 0x9a, 0xc5, - 0x93, 0x8e, 0x9a, 0xc9, 0x99, 0x8e, 0x9b, 0xc9, 0x98, 0x8e, 0x9b, 0xc9, - 0x99, 0x8e, 0x9c, 0xc9, 0x98, 0x8e, 0x9c, 0xc9, 0x99, 0x8e, 0x9d, 0xca, - 0x9d, 0x8e, 0x9d, 0xca, 0x9d, 0x8e, 0x9d, 0xca, 0x9d, 0x8e, 0x9e, 0xc5, - 0xa5, 0x8e, 0x9e, 0xc5, 0xa5, 0x8e, 0x9f, 0xc5, 0xa5, 0x8e, 0x9f, 0xc6, - 0xa5, 0x8e, 0x9f, 0xc5, 0xa5, 0x8e, 0xa0, 0xc6, 0xa5, 0x8e, 0xa0, 0xc5, - 0xa5, 0x8e, 0xa1, 0xc6, 0xa5, 0x8e, 0xa1, 0xc5, 0xa5, 0x8e, 0xa1, 0xc6, - 0xa5, 0x8e, 0xa2, 0xc5, 0xa5, 0x8e, 0xa2, 0xc6, 0xa5, 0x8e, 0xa3, 0xc5, - 0xa5, 0x8e, 0xa3, 0xc6, 0xa5, 0x8e, 0xa3, 0xc5, 0xa5, 0x8e, 0xa4, 0xc5, - 0xa5, 0x8e, 0xa4, 0xc5, 0xa5, 0x8e, 0xa5, 0xc5, 0xa5, 0x8e, 0xa5, 0xc5, - 0xa5, 0x8d, 0xa5, 0xc5, 0xa5, 0x8e, 0xa5, 0xc5, 0xa6, 0x8d, 0xa5, 0xc5, - 0xa6, 0x8e, 0xa5, 0xc5, 0xa6, 0x8d, 0xa5, 0xc5, 0xa7, 0x8e, 0xa5, 0xc5, - 0xa7, 0x8d, 0xa5, 0xc5, 0xa8, 0x8e, 0xa5, 0xc5, 0xa8, 0x8d, 0xa5, 0xc5, - 0xa8, 0x8e, 0xa5, 0xc5, 0xa9, 0x8d, 0xa5, 0xc5, 0xa9, 0x8e, 0xa5, 0xc5, - 0xaa, 0x8d, 0xa5, 0xc5, 0xaa, 0x8e, 0xa5, 0xc5, 0xaa, 0x8d, 0xa5, 0xc5, - 0xab, 0x8e, 0xa5, 0xc5, 0xab, 0x8d, 0xa5, 0xc5, 0xab, 0x8a, 0xa5, 0xc5, - 0xac, 0x8d, 0xa5, 0xc5, 0xac, 0x8a, 0xa5, 0xc5, 0xac, 0x8d, 0xa5, 0xc5, - 0xad, 0x8a, 0xa5, 0xc5, 0xad, 0x8d, 0xa5, 0xc5, 0xae, 0x8a, 0xa5, 0xc5, - 0xae, 0x8d, 0xa5, 0xc5, 0xae, 0x8a, 0xa5, 0xc5, 0xaf, 0x8d, 0xa5, 0xc5, - 0xaf, 0x8a, 0xa5, 0xc5, 0xaf, 0x8d, 0xa5, 0xc5, 0xb0, 0x8a, 0xa5, 0xc5, - 0xb0, 0x8d, 0xa5, 0xc5, 0xb0, 0x8a, 0xa5, 0xc5, 0xb1, 0x8d, 0xa5, 0xc5, - 0xb1, 0x8a, 0xa5, 0xc5, 0xb2, 0x8d, 0xa5, 0xc5, 0xb2, 0x8a, 0xa5, 0xc5, - 0xb2, 0x8d, 0xa5, 0xc5, 0xb3, 0x8a, 0xa5, 0xc5, 0xb3, 0x8d, 0xa5, 0xc5, - 0xb3, 0x8a, 0xa5, 0xc5, 0xb4, 0x8d, 0xa5, 0xc5, 0xb4, 0x8a, 0xa5, 0xc5, - 0xb4, 0x8d, 0xa5, 0xc5, 0xb5, 0x8a, 0xa5, 0xc5, 0xb5, 0x8d, 0xa5, 0xc5, - 0xb5, 0x8a, 0xa5, 0xc5, 0xb6, 0x8d, 0xa5, 0xc5, 0xb6, 0x8a, 0xa5, 0xc5, - 0xb6, 0x8d, 0xa9, 0xc5, 0xb7, 0x7f, 0xaa, 0xc5, 0xb7, 0x7e, 0xa9, 0xc5, - 0xb7, 0x7f, 0xaa, 0xc5, 0xb8, 0x7e, 0xa9, 0xc5, 0xb8, 0x7f, 0xaa, 0xc5, - 0xb8, 0x7e, 0xa9, 0xc5, 0xb9, 0x7f, 0xaa, 0xc5, 0xb9, 0x7e, 0xbb, 0xc5, - 0xb9, 0x73, 0xbc, 0xc5, 0xba, 0x73, 0xbb, 0xc5, 0xba, 0x73, 0xbf, 0xc5, - 0xba, 0x74, 0xbf, 0xc5, 0xbb, 0x74, 0xbf, 0xc5, 0xbb, 0x74, 0xbf, 0xc5, - 0xbb, 0x74, 0xbf, 0xc5, 0xbc, 0x74, 0xbf, 0xc5, 0xbc, 0x74, 0xbf, 0xc5, - 0xbc, 0x74, 0xbf, 0xc5, 0xbd, 0x74, 0xbf, 0xc5, 0xbd, 0x74, 0xbf, 0xc5, - 0xbd, 0x74, 0xbf, 0xc5, 0xbe, 0x74, 0xc2, 0xc5, 0xbe, 0x75, 0xc3, 0xc5, - 0xbe, 0x75, 0xc2, 0xc5, 0xbf, 0x75, 0xc3, 0xc5, 0xbf, 0x75, 0xc2, 0xc5, - 0xbf, 0x75, 0xc3, 0xc5, 0xc0, 0x75, 0xc2, 0xc5, 0xc0, 0x75, 0xc3, 0xc5, - 0xc0, 0x75, 0xc2, 0xc5, 0xc1, 0x75, 0xc3, 0xc5, 0xc1, 0x75, 0xc2, 0xc5, - 0xc1, 0x75, 0xc3, 0xc5, 0xc1, 0x75, 0xc6, 0xc5, 0xc2, 0x76, 0xc6, 0xc5, - 0xc2, 0x76, 0xc6, 0xc5, 0xc2, 0x76, 0xc6, 0xc5, 0xc3, 0x76, 0xc6, 0xc5, - 0xc3, 0x76, 0xc6, 0xc5, 0xc3, 0x76, 0xc6, 0xc5, 0xc4, 0x76, 0xc6, 0xc5, - 0xc4, 0x76, 0xc6, 0xc5, 0xc4, 0x76, 0xc6, 0xc5, 0xc5, 0x76, 0xc6, 0xc5, - 0xc5, 0x76, 0xc9, 0xc5, 0xc5, 0x77, 0xc6, 0xc5, 0xc6, 0x76, 0xc9, 0xc5, - 0xc6, 0x77, 0xca, 0xc5, 0xc6, 0x77, 0xc9, 0xc5, 0xc6, 0x77, 0xca, 0xc5, - 0xc7, 0x77, 0xd4, 0xc5, 0xc7, 0x95, 0xd4, 0xc5, 0xc7, 0x93, 0xd4, 0xc5, - 0xc8, 0x95, 0xd4, 0xc5, 0xc8, 0x93, 0xd4, 0xc5, 0xc8, 0x95, 0xd4, 0xc5, - 0xc9, 0x93, 0xd4, 0xc5, 0xc9, 0x95, 0xd4, 0xc5, 0xc9, 0x93, 0xd4, 0xc5, - 0xc9, 0x95, 0xd4, 0xc5, 0xca, 0x93, 0xd4, 0xc5, 0xca, 0x95, 0xd4, 0xc5, - 0xca, 0x93, 0xd4, 0xc5, 0xcb, 0x95, 0xd4, 0xc5, 0xcb, 0x93, 0xd4, 0xc5, - 0xcb, 0x95, 0xd4, 0xc5, 0xcc, 0x93, 0xd4, 0xc5, 0xcc, 0x95, 0xd4, 0xc5, - 0xcc, 0x93, 0xd4, 0xc5, 0xcc, 0x95, 0xd4, 0xc5, 0xcd, 0x93, 0xd4, 0xc5, - 0xcd, 0x95, 0xd4, 0xc5, 0xcd, 0x93, 0xd4, 0xc5, 0xce, 0x93, 0xd4, 0xc5, - 0xce, 0x93, 0xd4, 0xc5, 0xce, 0x93, 0xd4, 0xc5, 0xce, 0x93, 0xd4, 0xc5, - 0xcf, 0x93, 0xd4, 0xc5, 0xcf, 0x93, 0xd4, 0xc5, 0xcf, 0x93, 0xd4, 0xc5, - 0xd0, 0x93, 0xd4, 0xc5, 0xd0, 0x93, 0xd4, 0xc5, 0xd0, 0x93, 0xd4, 0xc5, - 0xd0, 0x93, 0xd4, 0xc5, 0xd1, 0x93, 0xd4, 0xc5, 0xd1, 0x93, 0xd4, 0xc5, - 0xd1, 0x93, 0xd4, 0xc5, 0xd2, 0x93, 0xd4, 0xc5, 0xd2, 0x93, 0xd4, 0xc5, - 0xd2, 0x93, 0xd4, 0xc5, 0xd2, 0x93, 0xd4, 0xc5, 0xd3, 0x93, 0xd4, 0xc5, - 0xd3, 0x93, 0xd4, 0xc5, 0xd3, 0x93, 0xd4, 0xc5, 0xd4, 0x93, 0xd4, 0xc5, - 0xd4, 0x93, 0xd4, 0xc5, 0xd4, 0x93, 0xd4, 0xc5, 0xd4, 0x93, 0xd5, 0xc5, - 0xd5, 0x93, 0xd4, 0xc5, 0xd5, 0x93, 0xd5, 0xc5, 0xd5, 0x93, 0xd4, 0xc5, - 0xd6, 0x93, 0xd5, 0xc5, 0xd6, 0x93, 0xd4, 0xc5, 0xd6, 0x93, 0xd5, 0xc5, - 0xd6, 0x93, 0xd7, 0xc5, 0xd7, 0x94, 0xd7, 0xc5, 0xd7, 0x94, 0xd7, 0xc5, - 0xd7, 0x94, 0xd7, 0xc5, 0xd7, 0x94, 0xd8, 0xc5, 0xd8, 0x94, 0xd7, 0xc5, - 0xd8, 0x94, 0xd8, 0xc5, 0xd8, 0x94, 0xd7, 0xc5, 0xd9, 0x94, 0xd8, 0xc5, - 0xd9, 0x94, 0xd7, 0xc5, 0xd9, 0x94, 0xd8, 0xc5, 0xd9, 0x94, 0xda, 0xc5, - 0xda, 0x95, 0xda, 0xc5, 0xda, 0x95, 0xda, 0xc5, 0xda, 0x95, 0xda, 0xc5, - 0xda, 0x95, 0xdb, 0xc5, 0xdb, 0x95, 0xda, 0xc5, 0xdb, 0x95, 0xdb, 0xc5, - 0xdb, 0x95, 0xda, 0xc5, 0xdb, 0x95, 0xdb, 0xc5, 0xdc, 0x95, 0xda, 0xc5, - 0xdc, 0x95, 0xdb, 0xc5, 0xdc, 0x95, 0xdd, 0xc5, 0xdd, 0x96, 0xdd, 0xc5, - 0xdd, 0x96, 0xdd, 0xc5, 0xdd, 0x96, 0xdd, 0xc5, 0xdd, 0x96, 0xde, 0xc5, - 0xde, 0x96, 0xdd, 0xc5, 0xde, 0x96, 0xde, 0xc5, 0xde, 0x96, 0xdd, 0xc5, - 0xde, 0x96, 0xde, 0xc5, 0xdf, 0x96, 0xdd, 0xc5, 0xdf, 0x96, 0xde, 0xc5, - 0xdf, 0x96, 0xdd, 0xc5, 0xdf, 0x96, 0xde, 0xc5, 0xe0, 0x96, 0xe0, 0xc5, - 0xe0, 0x97, 0xe0, 0xc5, 0xe0, 0x97, 0xe1, 0xc5, 0xe1, 0x97, 0xe0, 0xc5, - 0xe1, 0x97, 0xe1, 0xc5, 0xe1, 0x97, 0xe0, 0xc5, 0xe1, 0x97, 0xe1, 0xc5, - 0xe2, 0x97, 0xe0, 0xc5, 0xe2, 0x97, 0xe1, 0xc5, 0xe2, 0x97, 0xe0, 0xc5, - 0xe2, 0x97, 0xe1, 0xc5, 0xe3, 0x97, 0xe3, 0xc5, 0xe3, 0x98, 0xe3, 0xc5, - 0xe3, 0x98, 0xe3, 0xc5, 0xe3, 0x98, 0xe3, 0xc5, 0xe4, 0x98, 0xe3, 0xc5, - 0xe4, 0x98, 0xe3, 0xc5, 0xe4, 0x98, 0xe3, 0xc5, 0xe4, 0x98, 0xea, 0xc5, - 0xe5, 0x8c, 0xea, 0xc5, 0xe5, 0x8d, 0xea, 0xc5, 0xe5, 0x8c, 0xea, 0xc5, - 0xe5, 0x8d, 0xea, 0xc5, 0xe6, 0x8c, 0xea, 0xc5, 0xe6, 0x8d, 0xea, 0xc5, - 0xe6, 0x8c, 0xea, 0xc5, 0xe6, 0x8d, 0xea, 0xc5, 0xe7, 0x8c, 0xea, 0xc5, - 0xe7, 0x8d, 0xea, 0xc5, 0xe7, 0x8c, 0xea, 0xc5, 0xe7, 0x8d, 0xea, 0xc5, - 0xe8, 0x8c, 0xea, 0xc5, 0xe8, 0x8d, 0xea, 0xc5, 0xe8, 0x8c, 0xea, 0xc5, - 0xe8, 0x8d, 0xea, 0xc5, 0xe9, 0x8c, 0xea, 0xc5, 0xe9, 0x8d, 0xea, 0xc5, - 0xe9, 0x8d, 0xea, 0xc5, 0xe9, 0x8d, 0xea, 0xc5, 0xea, 0x8d, 0xea, 0xc5, - 0xea, 0x8d, 0xea, 0xc5, 0xea, 0x8d, 0xea, 0xc5, 0xea, 0x8d, 0xeb, 0xc5, - 0xeb, 0x8d, 0xeb, 0xc5, 0xeb, 0x8d, 0xeb, 0xc5, 0xeb, 0x8d, 0xeb, 0xc5, - 0xeb, 0x8d, 0xec, 0xc5, 0xec, 0x8d, 0xec, 0xc5, 0xec, 0x8d, 0xec, 0xc5, - 0xec, 0x8d, 0xec, 0xc5, 0xec, 0x8d, 0xec, 0xc5, 0xec, 0x8d, 0xed, 0xc5, - 0xed, 0x8d, 0xed, 0xc5, 0xed, 0x8d, 0xed, 0xc5, 0xed, 0x8d, 0xed, 0xc5, - 0xed, 0x8e, 0xee, 0xc5, 0xee, 0x8e, 0xee, 0xc5, 0xee, 0x8e, 0xee, 0xc5, - 0xee, 0x8e, 0xee, 0xc5, 0xee, 0x8e, 0xef, 0xc5, 0xef, 0x8e, 0xef, 0xc5, - 0xef, 0x8e, 0xef, 0xc5, 0xef, 0x8e, 0xef, 0xc5, 0xef, 0x8e, 0xf0, 0xc5, - 0xf0, 0x8e, 0xf0, 0xc5, 0xf0, 0x8e, 0xf0, 0xc5, 0xf0, 0x8e, 0xf0, 0xc5, - 0xf0, 0x8e, 0xf1, 0xc5, 0xf1, 0x8e, 0xf1, 0xc5, 0xf1, 0x8e, 0xf1, 0xc5, - 0xf1, 0x8e, 0xf1, 0xc5, 0xf1, 0x8e, 0xf2, 0xc5, 0xf1, 0x8e, 0xf2, 0xc6, - 0xf2, 0x8e, 0xf2, 0xc6, 0xf2, 0x8e, 0xf2, 0xc6, 0xf2, 0x8e, 0xf2, 0xc6, - 0xf2, 0x8e, 0xf3, 0xc6, 0xf3, 0x8e, 0xf3, 0xc6, 0xf3, 0x8e, 0xf3, 0xc6, - 0xf3, 0x8e, 0xf3, 0xc6, 0xf3, 0x8e, 0xf4, 0xc6, 0xf4, 0x8e, 0xf4, 0xc6, - 0xf4, 0x8e, 0xf4, 0xc5, 0xf5, 0x8e, 0xf4, 0xc5, 0xf5, 0x8e, 0xf4, 0xc5, - 0xf5, 0x8e, 0xf4, 0xc5, 0xf5, 0x8e, 0xf4, 0xc5, 0xf5, 0x8e, 0xf4, 0xc5, - 0xf5, 0x8e, 0xf4, 0xc5, 0xf5, 0x8e, 0xf4, 0xc5, 0xf6, 0x8e, 0xf4, 0xc5, - 0xf6, 0x8e, 0xf4, 0xc5, 0xf6, 0x8e, 0xf8, 0xc5, 0xf6, 0x8f, 0xf8, 0xc5, - 0xf7, 0x8e, 0xf8, 0xc5, 0xf7, 0x8f, 0xf8, 0xc5, 0xf7, 0x8e, 0xf8, 0xc5, - 0xf7, 0x8f, 0xf8, 0xc5, 0xf8, 0x8e, 0xf8, 0xc5, 0xf8, 0x8e, 0xf8, 0xc5, - 0xf8, 0x8e, 0xf8, 0xc5, 0xf8, 0x8e, 0xf8, 0xc5, 0xf8, 0x8e, 0xf9, 0xc5, - 0xf8, 0x8e, 0xf9, 0xc5, 0xf8, 0x8e, 0xf9, 0xc5, 0xf8, 0x8e, 0xf9, 0xc5, - 0xf8, 0x8e, 0xfa, 0xc5, 0xf8, 0x8e, 0xfa, 0xc5, 0xf8, 0x8e, 0xfa, 0xc5, - 0xf8, 0x8e, 0xfa, 0xc5, 0xf8, 0x8e, 0xfa, 0xc5, 0xf8, 0x8e, 0xfb, 0xc5, - 0xf8, 0x8e, 0xfb, 0xc5, 0xf8, 0x8e, 0xfb, 0xc5, 0xf8, 0x8e, 0xfb, 0xc5, - 0xf8, 0x8e, 0xfc, 0xc5, 0xf8, 0x8e, 0xfc, 0xc5, 0xf8, 0x8e, 0xfc, 0xc3, - 0xf8, 0x8e, 0xfc, 0xc5, 0xf8, 0x8e, 0xfc, 0xc3, 0xf8, 0x8e, 0xfd, 0xc5, - 0xf8, 0x8e, 0xfd, 0xc3, 0xf8, 0x8e, 0xfd, 0xc5, 0xf8, 0x8e, 0xfd, 0xc3, - 0xf8, 0x8e, 0xfe, 0xc5, 0xf8, 0x8e, 0xfe, 0xc3, 0xf8, 0x8e, 0xfe, 0xc5, - 0xf8, 0x8e, 0xfe, 0xc3, 0xf8, 0x8e, 0xfe, 0xc5, 0xf8, 0x8e, 0xff, 0xc3, - 0xf8, 0x8e, 0xff, 0xc5, 0xf8, 0x8e, 0x03, 0xcd, 0x8e, 0x8e, 0x0a, 0xcb, - 0x8e, 0x8e, 0x0f, 0xcd, 0x8e, 0x8e, 0x14, 0xcb, 0x8e, 0x8e, 0x17, 0xcd, - 0x8e, 0x8e, 0x1b, 0xcb, 0x8e, 0x8e, 0x1e, 0xcd, 0x8e, 0x8e, 0x20, 0xcb, - 0x8e, 0x8e, 0x23, 0xcd, 0x8e, 0x8e, 0x25, 0xcb, 0x8e, 0x8e, 0x27, 0xcd, - 0x8e, 0x8e, 0x29, 0xcb, 0x8e, 0x8e, 0x2b, 0xcd, 0x8e, 0x8e, 0x2d, 0xcb, - 0x8e, 0x8e, 0x2f, 0xcd, 0x8e, 0x8e, 0x31, 0xcb, 0x8e, 0x8e, 0x32, 0xcd, - 0x8e, 0x8e, 0x34, 0xcb, 0x8e, 0x8e, 0x35, 0xcd, 0x8e, 0x8e, 0x37, 0xcb, - 0x8e, 0x8e, 0x38, 0xc9, 0x8f, 0x8e, 0x3a, 0xcb, 0x8e, 0x8e, 0x3b, 0xc9, - 0x8f, 0x8e, 0x3c, 0xcb, 0x8e, 0x8e, 0x3e, 0xc9, 0x8f, 0x8e, 0x3f, 0xcb, - 0x8e, 0x8e, 0x40, 0xc9, 0x8f, 0x8e, 0x42, 0xcb, 0x8e, 0x8e, 0x43, 0xc9, - 0x8f, 0x8e, 0x44, 0xcb, 0x8e, 0x8e, 0x45, 0xc9, 0x8f, 0x8e, 0x46, 0xcb, - 0x8e, 0x8e, 0x47, 0xc9, 0x8f, 0x8e, 0x48, 0xcb, 0x8e, 0x8e, 0x49, 0xc9, - 0x8f, 0x8e, 0x4a, 0xcb, 0x8e, 0x8e, 0x4b, 0xc9, 0x8f, 0x8e, 0x4c, 0xcb, - 0x8e, 0x8e, 0x4d, 0xc9, 0x8f, 0x8e, 0x4e, 0xcb, 0x8e, 0x8e, 0x4f, 0xc9, - 0x8f, 0x8e, 0x50, 0xcb, 0x8e, 0x8e, 0x51, 0xc9, 0x8f, 0x8e, 0x52, 0xcb, - 0x8e, 0x8e, 0x53, 0xc9, 0x8f, 0x8e, 0x54, 0xcb, 0x8e, 0x8e, 0x55, 0xc9, - 0x8f, 0x8e, 0x56, 0xcb, 0x8e, 0x8e, 0x57, 0xc9, 0x8f, 0x8e, 0x58, 0xcb, - 0x8e, 0x8e, 0x58, 0xc9, 0x8f, 0x8e, 0x59, 0xcb, 0x8e, 0x8e, 0x5a, 0xc9, - 0x8f, 0x8e, 0x5b, 0xcb, 0x8e, 0x8e, 0x5c, 0xc9, 0x8f, 0x8e, 0x5d, 0xcb, - 0x8e, 0x8e, 0x5d, 0xc9, 0x8f, 0x8e, 0x5e, 0xc7, 0x8f, 0x8e, 0x5f, 0xc9, - 0x8f, 0x8e, 0x60, 0xc7, 0x8f, 0x8e, 0x60, 0xc9, 0x8f, 0x8e, 0x61, 0xc7, - 0x8f, 0x8e, 0x62, 0xc9, 0x8f, 0x8e, 0x63, 0xc7, 0x8f, 0x8e, 0x63, 0xc9, - 0x8f, 0x8e, 0x64, 0xc7, 0x8f, 0x8e, 0x65, 0xc9, 0x8f, 0x8e, 0x66, 0xc7, - 0x8f, 0x8e, 0x66, 0xc9, 0x8f, 0x8e, 0x67, 0xc7, 0x8f, 0x8e, 0x68, 0xc9, - 0x8f, 0x8e, 0x68, 0xc7, 0x8f, 0x8e, 0x69, 0xc9, 0x8f, 0x8e, 0x6a, 0xc7, - 0x8f, 0x8e, 0x6a, 0xc9, 0x8f, 0x8e, 0x6b, 0xc7, 0x8f, 0x8e, 0x6c, 0xc9, - 0x8f, 0x8e, 0x6c, 0xc7, 0x8f, 0x8e, 0x6d, 0xc9, 0x8f, 0x8e, 0x6e, 0xc7, - 0x8f, 0x8e, 0x6e, 0xc9, 0x8f, 0x8e, 0x6f, 0xc7, 0x8f, 0x8e, 0x70, 0xc9, - 0x8f, 0x8e, 0x70, 0xc7, 0x8f, 0x8e, 0x71, 0xc9, 0x8f, 0x8e, 0x72, 0xc7, - 0x8f, 0x8e, 0x72, 0xc9, 0x8f, 0x8e, 0x73, 0xc7, 0x8f, 0x8e, 0x73, 0xc9, - 0x8f, 0x8e, 0x74, 0xc7, 0x8f, 0x8e, 0x75, 0xc9, 0x8f, 0x8e, 0x75, 0xc7, - 0x8f, 0x8e, 0x76, 0xc9, 0x8f, 0x8e, 0x76, 0xc7, 0x8f, 0x8e, 0x77, 0xc5, - 0x90, 0x8e, 0x78, 0xc7, 0x8f, 0x8e, 0x78, 0xc5, 0x90, 0x8e, 0x79, 0xc7, - 0x8f, 0x8e, 0x79, 0xc5, 0x90, 0x8e, 0x7a, 0xc7, 0x8f, 0x8e, 0x7a, 0xc5, - 0x90, 0x8e, 0x7b, 0xc7, 0x8f, 0x8e, 0x7c, 0xc5, 0x90, 0x8e, 0x7c, 0xc7, - 0x8f, 0x8e, 0x7d, 0xc5, 0x90, 0x8e, 0x7d, 0xc7, 0x8f, 0x8e, 0x7e, 0xc5, - 0x90, 0x8e, 0x7e, 0xc7, 0x8f, 0x8e, 0x7f, 0xc5, 0x90, 0x8e, 0x7f, 0xc7, - 0x8f, 0x8e, 0x80, 0xc5, 0x90, 0x8e, 0x81, 0xc7, 0x8f, 0x8e, 0x81, 0xc5, - 0x90, 0x8e, 0x82, 0xc7, 0x8f, 0x8e, 0x82, 0xc5, 0x90, 0x8e, 0x83, 0xc7, - 0x8f, 0x8e, 0x83, 0xc5, 0x90, 0x8e, 0x84, 0xc7, 0x8f, 0x8e, 0x84, 0xc5, - 0x90, 0x8e, 0x85, 0xc7, 0x8f, 0x8e, 0x85, 0xc5, 0x90, 0x8e, 0x86, 0xc7, - 0x8f, 0x8e, 0x86, 0xc5, 0x90, 0x8e, 0x87, 0xc7, 0x8f, 0x8e, 0x87, 0xc5, - 0x90, 0x8e, 0x88, 0xc7, 0x8f, 0x8e, 0x88, 0xc5, 0x90, 0x8e, 0x89, 0xc5, - 0x90, 0x8e, 0x89, 0xc5, 0x90, 0x8e, 0x8a, 0xc5, 0x90, 0x8e, 0x8a, 0xc5, - 0x90, 0x8e, 0x8b, 0xc5, 0x90, 0x8e, 0x8b, 0xc5, 0x90, 0x8e, 0x8c, 0xc5, - 0x90, 0x8e, 0x8c, 0xc5, 0x90, 0x8e, 0x8d, 0xc5, 0x90, 0x8e, 0x8d, 0xc5, - 0x90, 0x8e, 0x8e, 0xc5, 0x90, 0x8e, 0x8e, 0xc5, 0x90, 0x8e, 0x8e, 0xc5, - 0x90, 0x8e, 0x8f, 0xc5, 0x90, 0x8e, 0x8f, 0xc5, 0x90, 0x8e, 0x90, 0xc5, - 0x90, 0x8d, 0x8f, 0xc5, 0x90, 0x8e, 0x90, 0xc5, 0x91, 0x8d, 0x8f, 0xc5, - 0x91, 0x8e, 0x94, 0xc5, 0x92, 0x8e, 0x93, 0xc5, 0x92, 0x8f, 0x94, 0xc5, - 0x93, 0x8e, 0x94, 0xc5, 0x93, 0x8e, 0x94, 0xc5, 0x93, 0x8e, 0x94, 0xc5, - 0x93, 0x8e, 0x94, 0xc5, 0x93, 0x8e, 0x95, 0xc5, 0x93, 0x8e, 0x95, 0xc5, - 0x93, 0x8e, 0x96, 0xc5, 0x93, 0x8e, 0x96, 0xc5, 0x93, 0x8e, 0x97, 0xc5, - 0x93, 0x8e, 0x97, 0xc3, 0x94, 0x8e, 0x98, 0xc5, 0x93, 0x8e, 0x98, 0xc3, - 0x94, 0x8e, 0x98, 0xc5, 0x93, 0x8e, 0x99, 0xc3, 0x94, 0x8e, 0x99, 0xc5, - 0x93, 0x8e, 0x9a, 0xc3, 0x94, 0x8e, 0x9a, 0xc5, 0x93, 0x8e, 0x9a, 0xca, - 0x9a, 0x8e, 0x9b, 0xca, 0x9b, 0x8e, 0x9b, 0xca, 0x9b, 0x8e, 0x9c, 0xca, - 0x9c, 0x8e, 0x9c, 0xca, 0x9b, 0x8e, 0x9d, 0xca, 0x9c, 0x8e, 0x9d, 0xca, - 0x9b, 0x8e, 0x9d, 0xca, 0x9c, 0x8e, 0x9e, 0xca, 0x9b, 0x8e, 0x9e, 0xca, - 0x9c, 0x8e, 0x9f, 0xc5, 0xa5, 0x8e, 0x9f, 0xc6, 0xa5, 0x8e, 0x9f, 0xc5, - 0xa5, 0x8e, 0xa0, 0xc6, 0xa5, 0x8e, 0xa0, 0xc5, 0xa5, 0x8e, 0xa1, 0xc6, - 0xa5, 0x8e, 0xa1, 0xc5, 0xa5, 0x8e, 0xa1, 0xc6, 0xa5, 0x8e, 0xa2, 0xc5, - 0xa5, 0x8e, 0xa2, 0xc6, 0xa5, 0x8e, 0xa3, 0xc5, 0xa5, 0x8e, 0xa3, 0xc6, - 0xa5, 0x8e, 0xa3, 0xc5, 0xa5, 0x8e, 0xa4, 0xc5, 0xa5, 0x8e, 0xa4, 0xc5, - 0xa5, 0x8e, 0xa5, 0xc5, 0xa5, 0x8e, 0xa4, 0xc5, 0xa5, 0x8e, 0xa5, 0xc5, - 0xa5, 0x8e, 0xa4, 0xc5, 0xa6, 0x8e, 0xa5, 0xc5, 0xa6, 0x8e, 0xa5, 0xc5, - 0xa6, 0x8c, 0xa5, 0xc5, 0xa7, 0x8e, 0xa5, 0xc5, 0xa7, 0x8c, 0xa5, 0xc5, - 0xa8, 0x8e, 0xa5, 0xc5, 0xa8, 0x8c, 0xa5, 0xc5, 0xa8, 0x8e, 0xa5, 0xc5, - 0xa9, 0x8c, 0xa5, 0xc5, 0xa9, 0x8e, 0xa5, 0xc5, 0xaa, 0x8c, 0xa5, 0xc5, - 0xaa, 0x8e, 0xa5, 0xc5, 0xaa, 0x8c, 0xa5, 0xc5, 0xab, 0x8e, 0xa5, 0xc5, - 0xab, 0x8c, 0xa5, 0xc5, 0xab, 0x8e, 0xa5, 0xc5, 0xac, 0x8c, 0xa5, 0xc5, - 0xac, 0x8e, 0xa5, 0xc5, 0xac, 0x8c, 0xa5, 0xc5, 0xad, 0x8e, 0xa5, 0xc5, - 0xad, 0x8c, 0xa5, 0xc5, 0xae, 0x8e, 0xa5, 0xc5, 0xae, 0x8c, 0xa5, 0xc5, - 0xae, 0x89, 0xa5, 0xc5, 0xaf, 0x8c, 0xa5, 0xc5, 0xaf, 0x89, 0xa5, 0xc5, - 0xaf, 0x8c, 0xa5, 0xc5, 0xb0, 0x89, 0xa5, 0xc5, 0xb0, 0x8c, 0xa5, 0xc5, - 0xb0, 0x89, 0xa5, 0xc5, 0xb1, 0x8c, 0xa5, 0xc5, 0xb1, 0x89, 0xa5, 0xc5, - 0xb2, 0x8c, 0xa5, 0xc5, 0xb2, 0x89, 0xa5, 0xc5, 0xb2, 0x8c, 0xa5, 0xc5, - 0xb3, 0x89, 0xa5, 0xc5, 0xb3, 0x8c, 0xa5, 0xc5, 0xb3, 0x89, 0xa5, 0xc5, - 0xb4, 0x8c, 0xa5, 0xc5, 0xb4, 0x89, 0xa5, 0xc5, 0xb4, 0x8c, 0xa5, 0xc5, - 0xb5, 0x89, 0xa5, 0xc5, 0xb5, 0x8c, 0xa5, 0xc5, 0xb5, 0x89, 0xa6, 0xc5, - 0xb6, 0x87, 0xa5, 0xc5, 0xb6, 0x89, 0xa6, 0xc5, 0xb6, 0x87, 0xa5, 0xc5, - 0xb7, 0x89, 0xa6, 0xc5, 0xb7, 0x87, 0xa5, 0xc5, 0xb7, 0x89, 0xa6, 0xc5, - 0xb8, 0x87, 0xa9, 0xc5, 0xb8, 0x7e, 0xa6, 0xc5, 0xb8, 0x87, 0xa9, 0xc5, - 0xb9, 0x7e, 0xa6, 0xc5, 0xb9, 0x87, 0xbd, 0xc5, 0xb9, 0x73, 0xbe, 0xc5, - 0xba, 0x73, 0xbd, 0xc5, 0xba, 0x73, 0xbe, 0xc5, 0xba, 0x73, 0xbd, 0xc5, - 0xbb, 0x73, 0xbe, 0xc5, 0xbb, 0x73, 0xbd, 0xc5, 0xbb, 0x73, 0xbe, 0xc5, - 0xbc, 0x73, 0xbd, 0xc5, 0xbc, 0x73, 0xc1, 0xc5, 0xbc, 0x74, 0xc1, 0xc5, - 0xbd, 0x74, 0xc1, 0xc5, 0xbd, 0x74, 0xc1, 0xc5, 0xbd, 0x74, 0xc1, 0xc5, - 0xbe, 0x74, 0xc1, 0xc5, 0xbe, 0x74, 0xc1, 0xc5, 0xbe, 0x74, 0xc1, 0xc5, - 0xbf, 0x74, 0xc1, 0xc5, 0xbf, 0x74, 0xc1, 0xc5, 0xbf, 0x74, 0xc1, 0xc5, - 0xc0, 0x74, 0xc4, 0xc5, 0xc0, 0x75, 0xc5, 0xc5, 0xc0, 0x75, 0xc4, 0xc5, - 0xc1, 0x75, 0xc5, 0xc5, 0xc1, 0x75, 0xc4, 0xc5, 0xc1, 0x75, 0xc5, 0xc5, - 0xc1, 0x75, 0xc4, 0xc5, 0xc2, 0x75, 0xc5, 0xc5, 0xc2, 0x75, 0xc4, 0xc5, - 0xc2, 0x75, 0xc5, 0xc5, 0xc3, 0x75, 0xc4, 0xc5, 0xc3, 0x75, 0xc8, 0xc5, - 0xc3, 0x76, 0xc8, 0xc5, 0xc4, 0x76, 0xc8, 0xc5, 0xc4, 0x76, 0xc8, 0xc5, - 0xc4, 0x76, 0xc8, 0xc5, 0xc5, 0x76, 0xc8, 0xc5, 0xc5, 0x76, 0xc8, 0xc5, - 0xc5, 0x76, 0xc8, 0xc5, 0xc6, 0x76, 0xc8, 0xc5, 0xc6, 0x76, 0xc8, 0xc5, - 0xc6, 0x76, 0xd4, 0xc5, 0xc6, 0x94, 0xd4, 0xc5, 0xc7, 0x93, 0xd4, 0xc5, - 0xc7, 0x94, 0xd4, 0xc5, 0xc7, 0x93, 0xd4, 0xc5, 0xc8, 0x94, 0xd4, 0xc5, - 0xc8, 0x93, 0xd4, 0xc5, 0xc8, 0x94, 0xd4, 0xc5, 0xc9, 0x93, 0xd4, 0xc5, - 0xc9, 0x94, 0xd4, 0xc5, 0xc9, 0x93, 0xd4, 0xc5, 0xc9, 0x94, 0xd4, 0xc5, - 0xca, 0x93, 0xd4, 0xc5, 0xca, 0x94, 0xd4, 0xc5, 0xca, 0x93, 0xd4, 0xc5, - 0xcb, 0x94, 0xd4, 0xc5, 0xcb, 0x93, 0xd4, 0xc5, 0xcb, 0x94, 0xd4, 0xc5, - 0xcc, 0x93, 0xd4, 0xc5, 0xcc, 0x94, 0xd4, 0xc5, 0xcc, 0x93, 0xd4, 0xc5, - 0xcc, 0x94, 0xd4, 0xc5, 0xcd, 0x93, 0xd4, 0xc5, 0xcd, 0x94, 0xd4, 0xc5, - 0xcd, 0x93, 0xd4, 0xc5, 0xce, 0x94, 0xd4, 0xc5, 0xce, 0x93, 0xd4, 0xc5, - 0xce, 0x94, 0xd4, 0xc5, 0xce, 0x93, 0xd4, 0xc5, 0xcf, 0x94, 0xd4, 0xc5, - 0xcf, 0x93, 0xd4, 0xc5, 0xcf, 0x94, 0xd4, 0xc5, 0xd0, 0x93, 0xd4, 0xc5, - 0xd0, 0x94, 0xd4, 0xc5, 0xd0, 0x93, 0xd4, 0xc5, 0xd0, 0x94, 0xd4, 0xc5, - 0xd1, 0x93, 0xd4, 0xc5, 0xd1, 0x93, 0xd4, 0xc5, 0xd1, 0x93, 0xd4, 0xc5, - 0xd2, 0x93, 0xd4, 0xc5, 0xd2, 0x93, 0xd4, 0xc5, 0xd2, 0x93, 0xd4, 0xc5, - 0xd2, 0x93, 0xd4, 0xc5, 0xd3, 0x93, 0xd4, 0xc5, 0xd3, 0x93, 0xd4, 0xc5, - 0xd3, 0x93, 0xd4, 0xc5, 0xd4, 0x93, 0xd4, 0xc5, 0xd4, 0x93, 0xd4, 0xc5, - 0xd4, 0x93, 0xd4, 0xc5, 0xd4, 0x93, 0xd5, 0xc5, 0xd5, 0x93, 0xd5, 0xc5, - 0xd5, 0x93, 0xd5, 0xc5, 0xd5, 0x93, 0xd6, 0xc5, 0xd6, 0x93, 0xd6, 0xc5, - 0xd6, 0x93, 0xd6, 0xc5, 0xd6, 0x93, 0xd6, 0xc5, 0xd6, 0x93, 0xd6, 0xc5, - 0xd7, 0x93, 0xd6, 0xc5, 0xd7, 0x93, 0xd6, 0xc5, 0xd7, 0x93, 0xd6, 0xc5, - 0xd7, 0x93, 0xd6, 0xc5, 0xd8, 0x93, 0xd8, 0xc5, 0xd8, 0x94, 0xd8, 0xc5, - 0xd8, 0x94, 0xd9, 0xc5, 0xd9, 0x94, 0xd9, 0xc5, 0xd9, 0x94, 0xd9, 0xc5, - 0xd9, 0x94, 0xd9, 0xc5, 0xd9, 0x94, 0xd9, 0xc5, 0xda, 0x94, 0xd9, 0xc5, - 0xda, 0x94, 0xd9, 0xc5, 0xda, 0x94, 0xd9, 0xc5, 0xda, 0x94, 0xd9, 0xc5, - 0xdb, 0x94, 0xdb, 0xc5, 0xdb, 0x95, 0xdb, 0xc5, 0xdb, 0x95, 0xdb, 0xc5, - 0xdb, 0x95, 0xdc, 0xc5, 0xdc, 0x95, 0xdc, 0xc5, 0xdc, 0x95, 0xdc, 0xc5, - 0xdc, 0x95, 0xdc, 0xc5, 0xdd, 0x95, 0xdc, 0xc5, 0xdd, 0x95, 0xdc, 0xc5, - 0xdd, 0x95, 0xdc, 0xc5, 0xdd, 0x95, 0xdc, 0xc5, 0xde, 0x95, 0xde, 0xc5, - 0xde, 0x96, 0xde, 0xc5, 0xde, 0x96, 0xde, 0xc5, 0xde, 0x96, 0xdf, 0xc5, - 0xdf, 0x96, 0xdf, 0xc5, 0xdf, 0x96, 0xdf, 0xc5, 0xdf, 0x96, 0xdf, 0xc5, - 0xdf, 0x96, 0xdf, 0xc5, 0xe0, 0x96, 0xdf, 0xc5, 0xe0, 0x96, 0xdf, 0xc5, - 0xe0, 0x96, 0xdf, 0xc5, 0xe1, 0x96, 0xdf, 0xc5, 0xe1, 0x96, 0xdf, 0xc5, - 0xe1, 0x96, 0xe1, 0xc5, 0xe1, 0x97, 0xe2, 0xc5, 0xe2, 0x97, 0xe2, 0xc5, - 0xe2, 0x97, 0xe2, 0xc5, 0xe2, 0x97, 0xe2, 0xc5, 0xe2, 0x97, 0xe2, 0xc5, - 0xe3, 0x97, 0xe2, 0xc5, 0xe3, 0x97, 0xe2, 0xc5, 0xe3, 0x97, 0xe2, 0xc5, - 0xe3, 0x97, 0xe2, 0xc5, 0xe4, 0x97, 0xe2, 0xc5, 0xe4, 0x97, 0xe4, 0xc5, - 0xe4, 0x98, 0xe4, 0xc5, 0xe4, 0x98, 0xe5, 0xc5, 0xe5, 0x98, 0xe4, 0xc5, - 0xe5, 0x98, 0xea, 0xc5, 0xe5, 0x8c, 0xea, 0xc5, 0xe5, 0x8c, 0xea, 0xc5, - 0xe6, 0x8c, 0xea, 0xc5, 0xe6, 0x8c, 0xea, 0xc5, 0xe6, 0x8c, 0xea, 0xc5, - 0xe6, 0x8c, 0xea, 0xc5, 0xe7, 0x8c, 0xea, 0xc5, 0xe7, 0x8c, 0xea, 0xc5, - 0xe7, 0x8c, 0xea, 0xc5, 0xe7, 0x8c, 0xea, 0xc5, 0xe8, 0x8c, 0xea, 0xc5, - 0xe8, 0x8c, 0xea, 0xc5, 0xe8, 0x8c, 0xea, 0xc5, 0xe8, 0x8c, 0xea, 0xc5, - 0xe9, 0x8c, 0xea, 0xc5, 0xe9, 0x8c, 0xea, 0xc5, 0xe9, 0x8c, 0xea, 0xc5, - 0xe9, 0x8c, 0xea, 0xc5, 0xea, 0x8c, 0xea, 0xc5, 0xea, 0x8c, 0xea, 0xc5, - 0xea, 0x8c, 0xea, 0xc5, 0xea, 0x8c, 0xeb, 0xc5, 0xeb, 0x8c, 0xeb, 0xc5, - 0xeb, 0x8c, 0xeb, 0xc5, 0xeb, 0x8c, 0xec, 0xc5, 0xeb, 0x8d, 0xec, 0xc5, - 0xec, 0x8d, 0xec, 0xc5, 0xec, 0x8d, 0xec, 0xc5, 0xec, 0x8d, 0xec, 0xc5, - 0xec, 0x8d, 0xec, 0xc5, 0xec, 0x8d, 0xed, 0xc5, 0xed, 0x8d, 0xed, 0xc5, - 0xed, 0x8d, 0xed, 0xc5, 0xed, 0x8d, 0xed, 0xc5, 0xed, 0x8d, 0xee, 0xc5, - 0xee, 0x8d, 0xee, 0xc5, 0xee, 0x8d, 0xee, 0xc5, 0xee, 0x8d, 0xee, 0xc5, - 0xee, 0x8d, 0xef, 0xc5, 0xef, 0x8d, 0xef, 0xc5, 0xef, 0x8d, 0xef, 0xc5, - 0xef, 0x8d, 0xef, 0xc6, 0xef, 0x8e, 0xf0, 0xc6, 0xf0, 0x8e, 0xf0, 0xc6, - 0xf0, 0x8e, 0xf0, 0xc6, 0xf0, 0x8e, 0xf0, 0xc6, 0xf0, 0x8e, 0xf1, 0xc6, - 0xf1, 0x8e, 0xf1, 0xc6, 0xf1, 0x8e, 0xf1, 0xc6, 0xf1, 0x8e, 0xf1, 0xc6, - 0xf1, 0x8e, 0xf2, 0xc6, 0xf2, 0x8e, 0xf2, 0xc6, 0xf2, 0x8e, 0xf2, 0xc6, - 0xf2, 0x8e, 0xf2, 0xc6, 0xf2, 0x8e, 0xf2, 0xc6, 0xf2, 0x8e, 0xf3, 0xc6, - 0xf3, 0x8e, 0xf3, 0xc6, 0xf3, 0x8e, 0xf3, 0xc6, 0xf3, 0x8e, 0xf3, 0xc6, - 0xf3, 0x8e, 0xf4, 0xc6, 0xf4, 0x8e, 0xf4, 0xc6, 0xf4, 0x8e, 0xf4, 0xc5, - 0xf5, 0x8e, 0xf4, 0xc6, 0xf4, 0x8e, 0xf4, 0xc5, 0xf5, 0x8e, 0xf4, 0xc5, - 0xf5, 0x8e, 0xf4, 0xc5, 0xf5, 0x8e, 0xf4, 0xc5, 0xf5, 0x8e, 0xf4, 0xc5, - 0xf5, 0x8e, 0xf4, 0xc5, 0xf6, 0x8e, 0xf4, 0xc5, 0xf6, 0x8e, 0xf4, 0xc5, - 0xf6, 0x8e, 0xf8, 0xc5, 0xf6, 0x8e, 0xf8, 0xc5, 0xf7, 0x8e, 0xf8, 0xc5, - 0xf7, 0x8e, 0xf8, 0xc5, 0xf7, 0x8e, 0xf8, 0xc5, 0xf7, 0x8e, 0xf8, 0xc5, - 0xf8, 0x8e, 0xf8, 0xc4, 0xf8, 0x8e, 0xf8, 0xc5, 0xf8, 0x8e, 0xf8, 0xc4, - 0xf8, 0x8e, 0xf8, 0xc4, 0xf8, 0x8e, 0xf9, 0xc4, 0xf8, 0x8e, 0xf9, 0xc4, - 0xf8, 0x8e, 0xf9, 0xc4, 0xf8, 0x8e, 0xf9, 0xc4, 0xf8, 0x8e, 0xfa, 0xc4, - 0xf8, 0x8e, 0xfa, 0xc4, 0xf8, 0x8e, 0xfa, 0xc4, 0xf8, 0x8e, 0xfa, 0xc4, - 0xf8, 0x8e, 0xfa, 0xc4, 0xf8, 0x8e, 0xfb, 0xc4, 0xf8, 0x8e, 0xfb, 0xc4, - 0xf8, 0x8e, 0xfb, 0xc4, 0xf8, 0x8e, 0xfb, 0xc4, 0xf8, 0x8e, 0xfc, 0xc4, - 0xf8, 0x8e, 0xfc, 0xc4, 0xf8, 0x8e, 0xfc, 0xc4, 0xf8, 0x8e, 0xfc, 0xc4, - 0xf8, 0x8e, 0xfc, 0xc4, 0xf8, 0x8e, 0xfd, 0xc4, 0xf8, 0x8e, 0xfd, 0xc4, - 0xf8, 0x8e, 0xfd, 0xc4, 0xf8, 0x8e, 0xfd, 0xc4, 0xf8, 0x8e, 0xfe, 0xc4, - 0xf8, 0x8e, 0xfe, 0xc4, 0xf8, 0x8e, 0xfe, 0xc4, 0xf8, 0x8e, 0xfe, 0xc4, - 0xf8, 0x8e, 0xfe, 0xc4, 0xf8, 0x8e, 0xff, 0xc2, 0xf8, 0x8e, 0xff, 0xc4, - 0xf8, 0x8e, 0x03, 0xcd, 0x8e, 0x8f, 0x0a, 0xcb, 0x8e, 0x8f, 0x0f, 0xcd, - 0x8e, 0x8f, 0x14, 0xcb, 0x8e, 0x8f, 0x17, 0xcd, 0x8e, 0x8f, 0x1b, 0xcb, - 0x8e, 0x8f, 0x1e, 0xcd, 0x8e, 0x8f, 0x20, 0xcb, 0x8e, 0x8f, 0x23, 0xc9, - 0x8f, 0x8f, 0x25, 0xcb, 0x8e, 0x8f, 0x27, 0xc9, 0x8f, 0x8f, 0x29, 0xcb, - 0x8e, 0x8f, 0x2b, 0xc9, 0x8f, 0x8f, 0x2d, 0xcb, 0x8e, 0x8f, 0x2f, 0xc9, - 0x8f, 0x8f, 0x31, 0xcb, 0x8e, 0x8f, 0x32, 0xc9, 0x8f, 0x8f, 0x34, 0xcb, - 0x8e, 0x8f, 0x35, 0xc9, 0x8f, 0x8f, 0x37, 0xcb, 0x8e, 0x8f, 0x38, 0xc9, - 0x8f, 0x8f, 0x3a, 0xcb, 0x8e, 0x8f, 0x3b, 0xc9, 0x8f, 0x8f, 0x3c, 0xcb, - 0x8e, 0x8f, 0x3e, 0xc9, 0x8f, 0x8f, 0x3f, 0xcb, 0x8e, 0x8f, 0x40, 0xc9, - 0x8f, 0x8f, 0x42, 0xcb, 0x8e, 0x8f, 0x43, 0xc9, 0x8f, 0x8f, 0x44, 0xcb, - 0x8e, 0x8f, 0x45, 0xc9, 0x8f, 0x8f, 0x46, 0xcb, 0x8e, 0x8f, 0x47, 0xc9, - 0x8f, 0x8f, 0x48, 0xcb, 0x8e, 0x8f, 0x49, 0xc9, 0x8f, 0x8f, 0x4a, 0xcb, - 0x8e, 0x8f, 0x4b, 0xc9, 0x8f, 0x8f, 0x4c, 0xcb, 0x8e, 0x8f, 0x4d, 0xc9, - 0x8f, 0x8f, 0x4e, 0xcb, 0x8e, 0x8f, 0x4f, 0xc9, 0x8f, 0x8f, 0x50, 0xcb, - 0x8e, 0x8f, 0x51, 0xc9, 0x8f, 0x8f, 0x52, 0xcb, 0x8e, 0x8f, 0x53, 0xc9, - 0x8f, 0x8f, 0x54, 0xcb, 0x8e, 0x8f, 0x55, 0xc9, 0x8f, 0x8f, 0x56, 0xcb, - 0x8e, 0x8f, 0x57, 0xc9, 0x8f, 0x8f, 0x58, 0xc7, 0x8f, 0x8f, 0x58, 0xc9, - 0x8f, 0x8f, 0x59, 0xc7, 0x8f, 0x8f, 0x5a, 0xc9, 0x8f, 0x8f, 0x5b, 0xc7, - 0x8f, 0x8f, 0x5c, 0xc9, 0x8f, 0x8f, 0x5d, 0xc7, 0x8f, 0x8f, 0x5d, 0xc9, - 0x8f, 0x8f, 0x5e, 0xc7, 0x8f, 0x8f, 0x5f, 0xc9, 0x8f, 0x8f, 0x60, 0xc7, - 0x8f, 0x8f, 0x60, 0xc9, 0x8f, 0x8f, 0x61, 0xc7, 0x8f, 0x8f, 0x62, 0xc9, - 0x8f, 0x8f, 0x63, 0xc7, 0x8f, 0x8f, 0x63, 0xc9, 0x8f, 0x8f, 0x64, 0xc7, - 0x8f, 0x8f, 0x65, 0xc9, 0x8f, 0x8f, 0x66, 0xc7, 0x8f, 0x8f, 0x66, 0xc9, - 0x8f, 0x8f, 0x67, 0xc7, 0x8f, 0x8f, 0x68, 0xc9, 0x8f, 0x8f, 0x68, 0xc7, - 0x8f, 0x8f, 0x69, 0xc9, 0x8f, 0x8f, 0x6a, 0xc7, 0x8f, 0x8f, 0x6a, 0xc9, - 0x8f, 0x8f, 0x6b, 0xc7, 0x8f, 0x8f, 0x6c, 0xc9, 0x8f, 0x8f, 0x6c, 0xc7, - 0x8f, 0x8f, 0x6d, 0xc9, 0x8f, 0x8f, 0x6e, 0xc7, 0x8f, 0x8f, 0x6e, 0xc9, - 0x8f, 0x8f, 0x6f, 0xc7, 0x8f, 0x8f, 0x70, 0xc9, 0x8f, 0x8f, 0x70, 0xc7, - 0x8f, 0x8f, 0x71, 0xc9, 0x8f, 0x8f, 0x72, 0xc7, 0x8f, 0x8f, 0x72, 0xc9, - 0x8f, 0x8f, 0x73, 0xc7, 0x8f, 0x8f, 0x73, 0xc9, 0x8f, 0x8f, 0x74, 0xc7, - 0x8f, 0x8f, 0x75, 0xc9, 0x8f, 0x8f, 0x75, 0xc7, 0x8f, 0x8f, 0x76, 0xc9, - 0x8f, 0x8f, 0x76, 0xc7, 0x8f, 0x8f, 0x77, 0xc9, 0x8f, 0x8f, 0x78, 0xc7, - 0x8f, 0x8f, 0x78, 0xc9, 0x8f, 0x8f, 0x79, 0xc7, 0x8f, 0x8f, 0x79, 0xc9, - 0x8f, 0x8f, 0x7a, 0xc7, 0x8f, 0x8f, 0x7a, 0xc9, 0x8f, 0x8f, 0x7b, 0xc7, - 0x8f, 0x8f, 0x7c, 0xc9, 0x8f, 0x8f, 0x7c, 0xc7, 0x8f, 0x8f, 0x7d, 0xc9, - 0x8f, 0x8f, 0x7d, 0xc7, 0x8f, 0x8f, 0x7e, 0xc5, 0x90, 0x8f, 0x7e, 0xc7, - 0x8f, 0x8f, 0x7f, 0xc5, 0x90, 0x8f, 0x7f, 0xc7, 0x8f, 0x8f, 0x80, 0xc5, - 0x90, 0x8f, 0x81, 0xc7, 0x8f, 0x8f, 0x81, 0xc5, 0x90, 0x8f, 0x82, 0xc7, - 0x8f, 0x8f, 0x82, 0xc5, 0x90, 0x8f, 0x83, 0xc7, 0x8f, 0x8f, 0x83, 0xc5, - 0x90, 0x8f, 0x84, 0xc7, 0x8f, 0x8f, 0x84, 0xc5, 0x90, 0x8f, 0x85, 0xc7, - 0x8f, 0x8f, 0x85, 0xc5, 0x90, 0x8f, 0x86, 0xc7, 0x8f, 0x8f, 0x86, 0xc5, - 0x90, 0x8f, 0x87, 0xc7, 0x8f, 0x8f, 0x87, 0xc5, 0x90, 0x8f, 0x88, 0xc7, - 0x8f, 0x8f, 0x88, 0xc5, 0x90, 0x8f, 0x89, 0xc7, 0x8f, 0x8f, 0x89, 0xc5, - 0x90, 0x8f, 0x8a, 0xc7, 0x8f, 0x8f, 0x8a, 0xc5, 0x90, 0x8f, 0x8b, 0xc7, - 0x8f, 0x8f, 0x8b, 0xc5, 0x90, 0x8f, 0x8c, 0xc7, 0x8f, 0x8f, 0x8c, 0xc5, - 0x90, 0x8f, 0x8d, 0xc5, 0x90, 0x8f, 0x8d, 0xc5, 0x90, 0x8f, 0x8e, 0xc5, - 0x90, 0x8f, 0x8e, 0xc5, 0x90, 0x8f, 0x8e, 0xc5, 0x90, 0x8f, 0x8f, 0xc5, - 0x90, 0x8f, 0x8f, 0xc5, 0x90, 0x8f, 0x90, 0xc5, 0x90, 0x8e, 0x8f, 0xc5, - 0x90, 0x8f, 0x90, 0xc5, 0x91, 0x8e, 0x8f, 0xc5, 0x91, 0x8f, 0x94, 0xc5, - 0x92, 0x8f, 0x93, 0xc5, 0x92, 0x8f, 0x94, 0xc5, 0x93, 0x8f, 0x93, 0xc5, - 0x93, 0x8f, 0x94, 0xc5, 0x93, 0x8f, 0x94, 0xc5, 0x93, 0x8f, 0x94, 0xc5, - 0x93, 0x8f, 0x95, 0xc5, 0x93, 0x8f, 0x95, 0xc5, 0x93, 0x8f, 0x96, 0xc5, - 0x93, 0x8f, 0x96, 0xc5, 0x93, 0x8f, 0x97, 0xc5, 0x93, 0x8f, 0x97, 0xc5, - 0x93, 0x8f, 0x98, 0xc5, 0x93, 0x8f, 0x98, 0xc5, 0x93, 0x8f, 0x98, 0xc5, - 0x93, 0x8f, 0x99, 0xc5, 0x93, 0x8f, 0x99, 0xc9, 0x99, 0x8f, 0x9a, 0xc9, - 0x9a, 0x8f, 0x9a, 0xc9, 0x99, 0x8f, 0x9a, 0xc9, 0x9a, 0x8f, 0x9b, 0xc9, - 0x99, 0x8f, 0x9b, 0xc9, 0x9a, 0x8f, 0x9c, 0xc9, 0x99, 0x8f, 0x9c, 0xc9, - 0x9a, 0x8f, 0x9d, 0xca, 0x9d, 0x8f, 0x9d, 0xca, 0x9d, 0x8f, 0x9d, 0xca, - 0x9d, 0x8f, 0x9e, 0xca, 0x9e, 0x8f, 0x9e, 0xca, 0x9e, 0x8f, 0x9f, 0xc5, - 0xa5, 0x8f, 0x9f, 0xc6, 0xa5, 0x8f, 0x9f, 0xc5, 0xa5, 0x8f, 0xa0, 0xc6, - 0xa5, 0x8f, 0xa0, 0xc5, 0xa5, 0x8f, 0xa1, 0xc6, 0xa5, 0x8f, 0xa1, 0xc5, - 0xa5, 0x8f, 0xa1, 0xc6, 0xa5, 0x8f, 0xa2, 0xc5, 0xa5, 0x8f, 0xa2, 0xc6, - 0xa5, 0x8f, 0xa3, 0xc5, 0xa5, 0x8f, 0xa3, 0xc6, 0xa5, 0x8f, 0xa3, 0xc5, - 0xa5, 0x8f, 0xa4, 0xc6, 0xa5, 0x8f, 0xa4, 0xc5, 0xa5, 0x8f, 0xa5, 0xc5, - 0xa5, 0x8f, 0xa4, 0xc5, 0xa5, 0x8f, 0xa5, 0xc5, 0xa5, 0x8f, 0xa4, 0xc5, - 0xa6, 0x8f, 0xa5, 0xc5, 0xa6, 0x8f, 0xa5, 0xc5, 0xa6, 0x8d, 0xa5, 0xc5, - 0xa7, 0x8f, 0xa5, 0xc5, 0xa7, 0x8d, 0xa5, 0xc5, 0xa8, 0x8f, 0xa5, 0xc5, - 0xa8, 0x8d, 0xa5, 0xc5, 0xa8, 0x8f, 0xa5, 0xc5, 0xa9, 0x8d, 0xa5, 0xc5, - 0xa9, 0x8f, 0xa5, 0xc5, 0xaa, 0x8d, 0xa5, 0xc5, 0xaa, 0x8f, 0xa5, 0xc5, - 0xaa, 0x8d, 0xa5, 0xc5, 0xab, 0x8f, 0xa5, 0xc5, 0xab, 0x8d, 0xa5, 0xc5, - 0xab, 0x8f, 0xa5, 0xc5, 0xac, 0x8d, 0xa5, 0xc5, 0xac, 0x8f, 0xa5, 0xc5, - 0xac, 0x8d, 0xa5, 0xc5, 0xad, 0x8f, 0xa5, 0xc5, 0xad, 0x8d, 0xa5, 0xc5, - 0xae, 0x8f, 0xa5, 0xc5, 0xae, 0x8d, 0xa5, 0xc5, 0xae, 0x8a, 0xa5, 0xc5, - 0xaf, 0x8d, 0xa5, 0xc5, 0xaf, 0x8a, 0xa5, 0xc5, 0xaf, 0x8d, 0xa5, 0xc5, - 0xb0, 0x8a, 0xa5, 0xc5, 0xb0, 0x8d, 0xa5, 0xc5, 0xb0, 0x8a, 0xa5, 0xc5, - 0xb1, 0x8d, 0xa5, 0xc5, 0xb1, 0x8a, 0xa5, 0xc5, 0xb2, 0x8d, 0xa5, 0xc5, - 0xb2, 0x8a, 0xa5, 0xc5, 0xb2, 0x8d, 0xa5, 0xc5, 0xb3, 0x8a, 0xa5, 0xc5, - 0xb3, 0x8d, 0xa5, 0xc5, 0xb3, 0x8a, 0xa5, 0xc5, 0xb4, 0x8d, 0xa5, 0xc5, - 0xb4, 0x8a, 0xa5, 0xc5, 0xb4, 0x8d, 0xa5, 0xc5, 0xb5, 0x8a, 0xa5, 0xc5, - 0xb5, 0x8d, 0xa5, 0xc5, 0xb5, 0x8a, 0xa5, 0xc5, 0xb6, 0x8d, 0xa5, 0xc5, - 0xb6, 0x8a, 0xa5, 0xc5, 0xb6, 0x8d, 0xa5, 0xc5, 0xb7, 0x8a, 0xa5, 0xc5, - 0xb7, 0x8d, 0xa5, 0xc5, 0xb7, 0x8a, 0xa5, 0xc5, 0xb8, 0x8d, 0xa9, 0xc5, - 0xb8, 0x7f, 0xaa, 0xc5, 0xb8, 0x7e, 0xa9, 0xc5, 0xb9, 0x7f, 0xaa, 0xc5, - 0xb9, 0x7e, 0xa9, 0xc5, 0xb9, 0x7f, 0xbf, 0xc5, 0xba, 0x74, 0xbb, 0xc5, - 0xba, 0x73, 0xbf, 0xc5, 0xba, 0x74, 0xbf, 0xc5, 0xbb, 0x74, 0xbf, 0xc5, - 0xbb, 0x74, 0xbf, 0xc5, 0xbb, 0x74, 0xbf, 0xc5, 0xbc, 0x74, 0xbf, 0xc5, - 0xbc, 0x74, 0xbf, 0xc5, 0xbc, 0x74, 0xbf, 0xc5, 0xbd, 0x74, 0xbf, 0xc5, - 0xbd, 0x74, 0xbf, 0xc5, 0xbd, 0x74, 0xbf, 0xc5, 0xbe, 0x74, 0xc2, 0xc5, - 0xbe, 0x75, 0xc3, 0xc5, 0xbe, 0x75, 0xc2, 0xc5, 0xbf, 0x75, 0xc3, 0xc5, - 0xbf, 0x75, 0xc2, 0xc5, 0xbf, 0x75, 0xc3, 0xc5, 0xc0, 0x75, 0xc2, 0xc5, - 0xc0, 0x75, 0xc3, 0xc5, 0xc0, 0x75, 0xc2, 0xc5, 0xc1, 0x75, 0xc3, 0xc5, - 0xc1, 0x75, 0xc2, 0xc5, 0xc1, 0x75, 0xc3, 0xc5, 0xc1, 0x75, 0xc6, 0xc5, - 0xc2, 0x76, 0xc6, 0xc5, 0xc2, 0x76, 0xc6, 0xc5, 0xc2, 0x76, 0xc6, 0xc5, - 0xc3, 0x76, 0xc6, 0xc5, 0xc3, 0x76, 0xc6, 0xc5, 0xc3, 0x76, 0xc6, 0xc5, - 0xc4, 0x76, 0xc6, 0xc5, 0xc4, 0x76, 0xc6, 0xc5, 0xc4, 0x76, 0xc6, 0xc5, - 0xc5, 0x76, 0xc6, 0xc5, 0xc5, 0x76, 0xc9, 0xc5, 0xc5, 0x77, 0xca, 0xc5, - 0xc6, 0x77, 0xc9, 0xc5, 0xc6, 0x77, 0xd4, 0xc5, 0xc6, 0x93, 0xd4, 0xc5, - 0xc6, 0x95, 0xd4, 0xc5, 0xc7, 0x93, 0xd4, 0xc5, 0xc7, 0x95, 0xd4, 0xc5, - 0xc7, 0x93, 0xd4, 0xc5, 0xc8, 0x95, 0xd4, 0xc5, 0xc8, 0x93, 0xd4, 0xc5, - 0xc8, 0x95, 0xd4, 0xc5, 0xc9, 0x93, 0xd4, 0xc5, 0xc9, 0x95, 0xd4, 0xc5, - 0xc9, 0x93, 0xd4, 0xc5, 0xc9, 0x95, 0xd4, 0xc5, 0xca, 0x93, 0xd4, 0xc5, - 0xca, 0x95, 0xd4, 0xc5, 0xca, 0x93, 0xd4, 0xc5, 0xcb, 0x95, 0xd4, 0xc5, - 0xcb, 0x93, 0xd4, 0xc5, 0xcb, 0x95, 0xd4, 0xc5, 0xcc, 0x93, 0xd4, 0xc5, - 0xcc, 0x95, 0xd4, 0xc5, 0xcc, 0x93, 0xd4, 0xc5, 0xcc, 0x95, 0xd4, 0xc5, - 0xcd, 0x93, 0xd4, 0xc5, 0xcd, 0x95, 0xd4, 0xc5, 0xcd, 0x93, 0xd4, 0xc5, - 0xce, 0x95, 0xd4, 0xc5, 0xce, 0x93, 0xd4, 0xc5, 0xce, 0x95, 0xd4, 0xc5, - 0xce, 0x93, 0xd4, 0xc5, 0xcf, 0x93, 0xd4, 0xc5, 0xcf, 0x93, 0xd4, 0xc5, - 0xcf, 0x93, 0xd4, 0xc5, 0xd0, 0x93, 0xd4, 0xc5, 0xd0, 0x93, 0xd4, 0xc5, - 0xd0, 0x93, 0xd4, 0xc5, 0xd0, 0x93, 0xd4, 0xc5, 0xd1, 0x93, 0xd4, 0xc5, - 0xd1, 0x93, 0xd4, 0xc5, 0xd1, 0x93, 0xd4, 0xc5, 0xd2, 0x93, 0xd4, 0xc5, - 0xd2, 0x93, 0xd4, 0xc5, 0xd2, 0x93, 0xd4, 0xc5, 0xd2, 0x93, 0xd4, 0xc5, - 0xd3, 0x93, 0xd4, 0xc5, 0xd3, 0x93, 0xd4, 0xc5, 0xd3, 0x93, 0xd4, 0xc5, - 0xd4, 0x93, 0xd4, 0xc5, 0xd4, 0x93, 0xd4, 0xc5, 0xd4, 0x93, 0xd4, 0xc5, - 0xd4, 0x93, 0xd5, 0xc5, 0xd5, 0x93, 0xd4, 0xc5, 0xd5, 0x93, 0xd5, 0xc5, - 0xd5, 0x93, 0xd4, 0xc5, 0xd6, 0x93, 0xd5, 0xc5, 0xd6, 0x93, 0xd6, 0xc5, - 0xd6, 0x94, 0xd6, 0xc5, 0xd6, 0x94, 0xd7, 0xc5, 0xd7, 0x94, 0xd7, 0xc5, - 0xd7, 0x94, 0xd7, 0xc5, 0xd7, 0x94, 0xd7, 0xc5, 0xd7, 0x94, 0xd8, 0xc5, - 0xd8, 0x94, 0xd7, 0xc5, 0xd8, 0x94, 0xd8, 0xc5, 0xd8, 0x94, 0xd7, 0xc5, - 0xd9, 0x94, 0xd8, 0xc5, 0xd9, 0x94, 0xd7, 0xc5, 0xd9, 0x94, 0xd8, 0xc5, - 0xd9, 0x94, 0xda, 0xc5, 0xda, 0x95, 0xda, 0xc5, 0xda, 0x95, 0xda, 0xc5, - 0xda, 0x95, 0xda, 0xc5, 0xda, 0x95, 0xdb, 0xc5, 0xdb, 0x95, 0xda, 0xc5, - 0xdb, 0x95, 0xdb, 0xc5, 0xdb, 0x95, 0xda, 0xc5, 0xdb, 0x95, 0xdb, 0xc5, - 0xdc, 0x95, 0xda, 0xc5, 0xdc, 0x95, 0xdb, 0xc5, 0xdc, 0x95, 0xdd, 0xc5, - 0xdd, 0x96, 0xdd, 0xc5, 0xdd, 0x96, 0xdd, 0xc5, 0xdd, 0x96, 0xdd, 0xc5, - 0xdd, 0x96, 0xde, 0xc5, 0xde, 0x96, 0xdd, 0xc5, 0xde, 0x96, 0xde, 0xc5, - 0xde, 0x96, 0xdd, 0xc5, 0xde, 0x96, 0xde, 0xc5, 0xdf, 0x96, 0xdd, 0xc5, - 0xdf, 0x96, 0xde, 0xc5, 0xdf, 0x96, 0xdf, 0xc5, 0xdf, 0x97, 0xe0, 0xc5, - 0xe0, 0x97, 0xe0, 0xc5, 0xe0, 0x97, 0xe0, 0xc5, 0xe0, 0x97, 0xe1, 0xc5, - 0xe1, 0x97, 0xe0, 0xc5, 0xe1, 0x97, 0xe1, 0xc5, 0xe1, 0x97, 0xe0, 0xc5, - 0xe1, 0x97, 0xe1, 0xc5, 0xe2, 0x97, 0xe0, 0xc5, 0xe2, 0x97, 0xe1, 0xc5, - 0xe2, 0x97, 0xe0, 0xc5, 0xe2, 0x97, 0xe1, 0xc5, 0xe3, 0x97, 0xe3, 0xc5, - 0xe3, 0x98, 0xe3, 0xc5, 0xe3, 0x98, 0xe3, 0xc5, 0xe3, 0x98, 0xe3, 0xc5, - 0xe4, 0x98, 0xe3, 0xc5, 0xe4, 0x98, 0xe3, 0xc5, 0xe4, 0x98, 0xe3, 0xc5, - 0xe4, 0x98, 0xe3, 0xc5, 0xe5, 0x98, 0xe3, 0xc5, 0xe5, 0x98, 0xea, 0xc5, - 0xe5, 0x8c, 0xea, 0xc5, 0xe5, 0x8d, 0xea, 0xc5, 0xe6, 0x8c, 0xea, 0xc5, - 0xe6, 0x8d, 0xea, 0xc5, 0xe6, 0x8c, 0xea, 0xc5, 0xe6, 0x8d, 0xea, 0xc5, - 0xe7, 0x8c, 0xea, 0xc5, 0xe7, 0x8d, 0xea, 0xc5, 0xe7, 0x8c, 0xea, 0xc5, - 0xe7, 0x8d, 0xea, 0xc5, 0xe8, 0x8c, 0xea, 0xc5, 0xe8, 0x8d, 0xea, 0xc5, - 0xe8, 0x8c, 0xea, 0xc5, 0xe8, 0x8d, 0xea, 0xc5, 0xe9, 0x8c, 0xea, 0xc5, - 0xe9, 0x8d, 0xea, 0xc5, 0xe9, 0x8d, 0xea, 0xc5, 0xe9, 0x8d, 0xea, 0xc5, - 0xea, 0x8d, 0xea, 0xc5, 0xea, 0x8d, 0xea, 0xc5, 0xea, 0x8d, 0xea, 0xc5, - 0xea, 0x8d, 0xeb, 0xc5, 0xeb, 0x8d, 0xeb, 0xc5, 0xeb, 0x8d, 0xeb, 0xc5, - 0xeb, 0x8d, 0xeb, 0xc5, 0xeb, 0x8d, 0xec, 0xc5, 0xec, 0x8d, 0xec, 0xc5, - 0xec, 0x8d, 0xec, 0xc5, 0xec, 0x8d, 0xec, 0xc5, 0xec, 0x8d, 0xec, 0xc5, - 0xec, 0x8d, 0xed, 0xc5, 0xed, 0x8d, 0xed, 0xc5, 0xed, 0x8e, 0xee, 0xc5, - 0xed, 0x8e, 0xed, 0xc5, 0xed, 0x8e, 0xee, 0xc5, 0xee, 0x8e, 0xee, 0xc5, - 0xee, 0x8e, 0xee, 0xc5, 0xee, 0x8e, 0xee, 0xc5, 0xee, 0x8e, 0xef, 0xc5, - 0xef, 0x8e, 0xef, 0xc5, 0xef, 0x8e, 0xef, 0xc5, 0xef, 0x8e, 0xef, 0xc5, - 0xef, 0x8e, 0xf0, 0xc5, 0xf0, 0x8e, 0xf0, 0xc5, 0xf0, 0x8e, 0xf0, 0xc5, - 0xf0, 0x8e, 0xf0, 0xc5, 0xf0, 0x8e, 0xf1, 0xc5, 0xf1, 0x8e, 0xf1, 0xc5, - 0xf1, 0x8e, 0xf1, 0xc5, 0xf1, 0x8e, 0xf1, 0xc6, 0xf1, 0x8f, 0xf2, 0xc6, - 0xf2, 0x8f, 0xf2, 0xc6, 0xf2, 0x8f, 0xf2, 0xc6, 0xf2, 0x8f, 0xf2, 0xc6, - 0xf2, 0x8f, 0xf2, 0xc6, 0xf2, 0x8f, 0xf3, 0xc6, 0xf3, 0x8f, 0xf3, 0xc6, - 0xf3, 0x8f, 0xf3, 0xc6, 0xf3, 0x8f, 0xf3, 0xc6, 0xf3, 0x8f, 0xf4, 0xc6, - 0xf4, 0x8f, 0xf4, 0xc6, 0xf4, 0x8f, 0xf4, 0xc6, 0xf4, 0x8f, 0xf4, 0xc6, - 0xf4, 0x8f, 0xf4, 0xc5, 0xf5, 0x8f, 0xf4, 0xc5, 0xf5, 0x8f, 0xf4, 0xc5, - 0xf5, 0x8f, 0xf4, 0xc5, 0xf5, 0x8f, 0xf4, 0xc5, 0xf5, 0x8f, 0xf4, 0xc5, - 0xf6, 0x8f, 0xf5, 0xc5, 0xf6, 0x92, 0xf6, 0xc5, 0xf6, 0x92, 0xf8, 0xc5, - 0xf6, 0x8f, 0xf8, 0xc5, 0xf7, 0x91, 0xf8, 0xc5, 0xf7, 0x8f, 0xf8, 0xc5, - 0xf7, 0x8f, 0xf8, 0xc5, 0xf7, 0x8f, 0xf8, 0xc5, 0xf8, 0x8f, 0xf8, 0xc5, - 0xf8, 0x8f, 0xf8, 0xc5, 0xf8, 0x8f, 0xf8, 0xc5, 0xf8, 0x8f, 0xf8, 0xc5, - 0xf8, 0x8f, 0xf9, 0xc5, 0xf8, 0x8f, 0xf9, 0xc5, 0xf8, 0x8f, 0xf9, 0xc5, - 0xf8, 0x8f, 0xf9, 0xc5, 0xf8, 0x8f, 0xfa, 0xc5, 0xf8, 0x8f, 0xfa, 0xc5, - 0xf8, 0x8f, 0xfa, 0xc5, 0xf8, 0x8f, 0xfa, 0xc5, 0xf8, 0x8f, 0xfa, 0xc5, - 0xf8, 0x8f, 0xfb, 0xc5, 0xf8, 0x8f, 0xfb, 0xc5, 0xf8, 0x8f, 0xfb, 0xc5, - 0xf8, 0x8f, 0xfb, 0xc5, 0xf8, 0x8f, 0xfc, 0xc5, 0xf8, 0x8f, 0xfc, 0xc5, - 0xf8, 0x8f, 0xfc, 0xc5, 0xf8, 0x8f, 0xfc, 0xc5, 0xf8, 0x8f, 0xfc, 0xc5, - 0xf8, 0x8f, 0xfd, 0xc5, 0xf8, 0x8f, 0xfd, 0xc5, 0xf8, 0x8f, 0xfd, 0xc5, - 0xf8, 0x8f, 0xfd, 0xc5, 0xf8, 0x8f, 0xfe, 0xc5, 0xf8, 0x8f, 0xfe, 0xc5, - 0xf8, 0x8f, 0xfe, 0xc5, 0xf8, 0x8f, 0xfe, 0xc5, 0xf8, 0x8f, 0xfe, 0xc5, - 0xf8, 0x8f, 0xff, 0xc3, 0xf8, 0x8f, 0xff, 0xc5, 0xf8, 0x8f, 0x03, 0xcd, - 0x8e, 0x8f, 0x0a, 0xcb, 0x8e, 0x8f, 0x0f, 0xcd, 0x8e, 0x8f, 0x14, 0xcb, - 0x8e, 0x8f, 0x17, 0xcd, 0x8e, 0x8f, 0x1b, 0xcb, 0x8e, 0x8f, 0x1e, 0xcd, - 0x8e, 0x8f, 0x20, 0xcb, 0x8e, 0x8f, 0x23, 0xcd, 0x8e, 0x8f, 0x25, 0xcb, - 0x8e, 0x8f, 0x27, 0xcd, 0x8e, 0x8f, 0x29, 0xcb, 0x8e, 0x8f, 0x2b, 0xcd, - 0x8e, 0x8f, 0x2d, 0xcb, 0x8e, 0x8f, 0x2f, 0xcd, 0x8e, 0x8f, 0x31, 0xcb, - 0x8e, 0x8f, 0x32, 0xcd, 0x8e, 0x8f, 0x34, 0xcb, 0x8e, 0x8f, 0x35, 0xcd, - 0x8e, 0x8f, 0x37, 0xcb, 0x8e, 0x8f, 0x38, 0xcd, 0x8e, 0x8f, 0x3a, 0xcb, - 0x8e, 0x8f, 0x3b, 0xcd, 0x8e, 0x8f, 0x3c, 0xcb, 0x8e, 0x8f, 0x3e, 0xcd, - 0x8e, 0x8f, 0x3f, 0xcb, 0x8e, 0x8f, 0x40, 0xcd, 0x8e, 0x8f, 0x42, 0xcb, - 0x8e, 0x8f, 0x43, 0xcd, 0x8e, 0x8f, 0x44, 0xcb, 0x8e, 0x8f, 0x45, 0xcd, - 0x8e, 0x8f, 0x46, 0xcb, 0x8e, 0x8f, 0x47, 0xc9, 0x8f, 0x8f, 0x48, 0xcb, - 0x8e, 0x8f, 0x49, 0xc9, 0x8f, 0x8f, 0x4a, 0xcb, 0x8e, 0x8f, 0x4b, 0xc9, - 0x8f, 0x8f, 0x4c, 0xcb, 0x8e, 0x8f, 0x4d, 0xc9, 0x8f, 0x8f, 0x4e, 0xcb, - 0x8e, 0x8f, 0x4f, 0xc9, 0x8f, 0x8f, 0x50, 0xcb, 0x8e, 0x8f, 0x51, 0xc9, - 0x8f, 0x8f, 0x52, 0xcb, 0x8e, 0x8f, 0x53, 0xc9, 0x8f, 0x8f, 0x54, 0xcb, - 0x8e, 0x8f, 0x55, 0xc9, 0x8f, 0x8f, 0x56, 0xcb, 0x8e, 0x8f, 0x57, 0xc9, - 0x8f, 0x8f, 0x58, 0xcb, 0x8e, 0x8f, 0x58, 0xc9, 0x8f, 0x8f, 0x59, 0xcb, - 0x8e, 0x8f, 0x5a, 0xc9, 0x8f, 0x8f, 0x5b, 0xcb, 0x8e, 0x8f, 0x5c, 0xc9, - 0x8f, 0x8f, 0x5d, 0xcb, 0x8e, 0x8f, 0x5d, 0xc9, 0x8f, 0x8f, 0x5e, 0xcb, - 0x8e, 0x8f, 0x5f, 0xc9, 0x8f, 0x8f, 0x60, 0xcb, 0x8e, 0x8f, 0x60, 0xc9, - 0x8f, 0x8f, 0x61, 0xcb, 0x8e, 0x8f, 0x62, 0xc9, 0x8f, 0x8f, 0x63, 0xcb, - 0x8e, 0x8f, 0x63, 0xc9, 0x8f, 0x8f, 0x64, 0xcb, 0x8e, 0x8f, 0x65, 0xc9, - 0x8f, 0x8f, 0x66, 0xcb, 0x8e, 0x8f, 0x66, 0xc9, 0x8f, 0x8f, 0x67, 0xc7, - 0x8f, 0x8f, 0x68, 0xc9, 0x8f, 0x8f, 0x68, 0xc7, 0x8f, 0x8f, 0x69, 0xc9, - 0x8f, 0x8f, 0x6a, 0xc7, 0x8f, 0x8f, 0x6a, 0xc9, 0x8f, 0x8f, 0x6b, 0xc7, - 0x8f, 0x8f, 0x6c, 0xc9, 0x8f, 0x8f, 0x6c, 0xc7, 0x8f, 0x8f, 0x6d, 0xc9, - 0x8f, 0x8f, 0x6e, 0xc7, 0x8f, 0x8f, 0x6e, 0xc9, 0x8f, 0x8f, 0x6f, 0xc7, - 0x8f, 0x8f, 0x70, 0xc9, 0x8f, 0x8f, 0x70, 0xc7, 0x8f, 0x8f, 0x71, 0xc9, - 0x8f, 0x8f, 0x72, 0xc7, 0x8f, 0x8f, 0x72, 0xc9, 0x8f, 0x8f, 0x73, 0xc7, - 0x8f, 0x8f, 0x73, 0xc9, 0x8f, 0x8f, 0x74, 0xc7, 0x8f, 0x8f, 0x75, 0xc9, - 0x8f, 0x8f, 0x75, 0xc7, 0x8f, 0x8f, 0x76, 0xc9, 0x8f, 0x8f, 0x76, 0xc7, - 0x8f, 0x8f, 0x77, 0xc9, 0x8f, 0x8f, 0x78, 0xc7, 0x8f, 0x8f, 0x78, 0xc9, - 0x8f, 0x8f, 0x79, 0xc7, 0x8f, 0x8f, 0x79, 0xc9, 0x8f, 0x8f, 0x7a, 0xc7, - 0x8f, 0x8f, 0x7a, 0xc9, 0x8f, 0x8f, 0x7b, 0xc7, 0x8f, 0x8f, 0x7c, 0xc9, - 0x8f, 0x8f, 0x7c, 0xc7, 0x8f, 0x8f, 0x7d, 0xc9, 0x8f, 0x8f, 0x7d, 0xc7, - 0x8f, 0x8f, 0x7e, 0xc6, 0x90, 0x8f, 0x7e, 0xc7, 0x8f, 0x8f, 0x7f, 0xc6, - 0x90, 0x8f, 0x7f, 0xc7, 0x8f, 0x8f, 0x80, 0xc6, 0x90, 0x8f, 0x81, 0xc7, - 0x8f, 0x8f, 0x81, 0xc6, 0x90, 0x8f, 0x82, 0xc7, 0x8f, 0x8f, 0x82, 0xc6, - 0x90, 0x8f, 0x83, 0xc7, 0x8f, 0x8f, 0x83, 0xc6, 0x90, 0x8f, 0x84, 0xc7, - 0x8f, 0x8f, 0x84, 0xc6, 0x90, 0x8f, 0x85, 0xc7, 0x8f, 0x8f, 0x85, 0xc6, - 0x90, 0x8f, 0x86, 0xc7, 0x8f, 0x8f, 0x86, 0xc6, 0x90, 0x8f, 0x87, 0xc7, - 0x8f, 0x8f, 0x87, 0xc6, 0x90, 0x8f, 0x88, 0xc7, 0x8f, 0x8f, 0x88, 0xc6, - 0x90, 0x8f, 0x89, 0xc7, 0x8f, 0x8f, 0x89, 0xc6, 0x90, 0x8f, 0x8a, 0xc7, - 0x8f, 0x8f, 0x8a, 0xc6, 0x90, 0x8f, 0x8b, 0xc7, 0x8f, 0x8f, 0x8b, 0xc6, - 0x90, 0x8f, 0x8c, 0xc7, 0x8f, 0x8f, 0x8c, 0xc6, 0x90, 0x8f, 0x8d, 0xc6, - 0x90, 0x8f, 0x8d, 0xc6, 0x90, 0x8f, 0x8e, 0xc6, 0x90, 0x8f, 0x8e, 0xc6, - 0x90, 0x8f, 0x8e, 0xc6, 0x90, 0x8f, 0x8f, 0xc6, 0x90, 0x8f, 0x8f, 0xc6, - 0x90, 0x8f, 0x8f, 0xc6, 0x90, 0x8f, 0x8f, 0xc6, 0x90, 0x8f, 0x8f, 0xc6, - 0x91, 0x8f, 0x8f, 0xc6, 0x91, 0x8f, 0x94, 0xc6, 0x92, 0x8f, 0x93, 0xc6, - 0x92, 0x8f, 0x94, 0xc6, 0x93, 0x8f, 0x93, 0xc5, 0x93, 0x8f, 0x94, 0xc6, - 0x93, 0x8f, 0x94, 0xc5, 0x93, 0x8f, 0x94, 0xc6, 0x93, 0x8f, 0x95, 0xc5, - 0x93, 0x8f, 0x95, 0xc6, 0x93, 0x8f, 0x96, 0xc5, 0x93, 0x8f, 0x96, 0xc6, - 0x93, 0x8f, 0x97, 0xc5, 0x93, 0x8f, 0x97, 0xc6, 0x93, 0x8f, 0x98, 0xc5, - 0x93, 0x8f, 0x98, 0xc6, 0x93, 0x8f, 0x98, 0xc5, 0x93, 0x8f, 0x99, 0xc9, - 0x97, 0x8f, 0x99, 0xc9, 0x97, 0x8f, 0x9a, 0xc9, 0x97, 0x8f, 0x9a, 0xca, - 0x9a, 0x8f, 0x9a, 0xca, 0x9a, 0x8f, 0x9b, 0xca, 0x9b, 0x8f, 0x9b, 0xca, - 0x9b, 0x8f, 0x9c, 0xca, 0x9c, 0x8f, 0x9c, 0xca, 0x9b, 0x8f, 0x9d, 0xca, - 0x9c, 0x8f, 0x9d, 0xca, 0x9b, 0x8f, 0x9d, 0xca, 0x9c, 0x8f, 0x9e, 0xca, - 0x9b, 0x8f, 0x9e, 0xca, 0x9c, 0x8f, 0x9f, 0xca, 0x9f, 0x8f, 0x9f, 0xc6, - 0xa5, 0x8f, 0x9f, 0xc6, 0xa5, 0x8f, 0xa0, 0xc6, 0xa5, 0x8f, 0xa0, 0xc6, - 0xa5, 0x8f, 0xa1, 0xc6, 0xa5, 0x8f, 0xa1, 0xc6, 0xa5, 0x8f, 0xa1, 0xc6, - 0xa5, 0x8f, 0xa2, 0xc6, 0xa5, 0x8f, 0xa2, 0xc6, 0xa5, 0x8f, 0xa3, 0xc6, - 0xa5, 0x8f, 0xa3, 0xc6, 0xa5, 0x8f, 0xa3, 0xc6, 0xa5, 0x8f, 0xa4, 0xc6, - 0xa5, 0x8f, 0xa4, 0xc6, 0xa5, 0x8f, 0xa5, 0xc6, 0xa5, 0x8f, 0xa4, 0xc6, - 0xa5, 0x8f, 0xa5, 0xc6, 0xa5, 0x8f, 0xa4, 0xc6, 0xa6, 0x8f, 0xa5, 0xc6, - 0xa6, 0x8f, 0xa4, 0xc6, 0xa6, 0x8f, 0xa5, 0xc6, 0xa7, 0x8f, 0xa4, 0xc6, - 0xa7, 0x8f, 0xa5, 0xc6, 0xa8, 0x8f, 0xa5, 0xc6, 0xa8, 0x8c, 0xa5, 0xc6, - 0xa8, 0x8f, 0xa5, 0xc6, 0xa9, 0x8c, 0xa5, 0xc6, 0xa9, 0x8f, 0xa5, 0xc6, - 0xaa, 0x8c, 0xa5, 0xc6, 0xaa, 0x8f, 0xa5, 0xc6, 0xaa, 0x8c, 0xa5, 0xc6, - 0xab, 0x8f, 0xa5, 0xc6, 0xab, 0x8c, 0xa5, 0xc6, 0xab, 0x8f, 0xa5, 0xc6, - 0xac, 0x8c, 0xa5, 0xc6, 0xac, 0x8f, 0xa5, 0xc6, 0xac, 0x8c, 0xa5, 0xc6, - 0xad, 0x8f, 0xa5, 0xc6, 0xad, 0x8c, 0xa5, 0xc6, 0xae, 0x8f, 0xa5, 0xc6, - 0xae, 0x8c, 0xa5, 0xc6, 0xae, 0x8f, 0xa5, 0xc6, 0xaf, 0x8c, 0xa5, 0xc6, - 0xaf, 0x8f, 0xa5, 0xc6, 0xaf, 0x8c, 0xa5, 0xc6, 0xb0, 0x8f, 0xa5, 0xc6, - 0xb0, 0x8c, 0xa5, 0xc6, 0xb0, 0x8f, 0xa5, 0xc6, 0xb1, 0x8c, 0xa5, 0xc6, - 0xb1, 0x8f, 0xa5, 0xc6, 0xb2, 0x8c, 0xa5, 0xc6, 0xb2, 0x8f, 0xa5, 0xc6, - 0xb2, 0x8c, 0xa5, 0xc6, 0xb3, 0x89, 0xa5, 0xc6, 0xb3, 0x8c, 0xa5, 0xc6, - 0xb3, 0x89, 0xa5, 0xc6, 0xb4, 0x8c, 0xa5, 0xc6, 0xb4, 0x89, 0xa5, 0xc6, - 0xb4, 0x8c, 0xa5, 0xc6, 0xb5, 0x89, 0xa5, 0xc6, 0xb5, 0x8c, 0xa5, 0xc6, - 0xb5, 0x89, 0xa5, 0xc6, 0xb6, 0x8c, 0xa5, 0xc6, 0xb6, 0x89, 0xa5, 0xc6, - 0xb6, 0x8c, 0xa5, 0xc6, 0xb7, 0x89, 0xa5, 0xc6, 0xb7, 0x8c, 0xa5, 0xc6, - 0xb7, 0x89, 0xa5, 0xc6, 0xb8, 0x8c, 0xa5, 0xc6, 0xb8, 0x89, 0xa5, 0xc6, - 0xb8, 0x8c, 0xa5, 0xc6, 0xb9, 0x89, 0xa6, 0xc6, 0xb9, 0x87, 0xa9, 0xc6, - 0xb9, 0x7e, 0xbe, 0xc6, 0xba, 0x73, 0xbd, 0xc6, 0xba, 0x73, 0xbe, 0xc6, - 0xba, 0x73, 0xbd, 0xc6, 0xbb, 0x73, 0xbe, 0xc6, 0xbb, 0x73, 0xbd, 0xc6, - 0xbb, 0x73, 0xc1, 0xc6, 0xbc, 0x74, 0xbd, 0xc6, 0xbc, 0x73, 0xc1, 0xc6, - 0xbc, 0x74, 0xc1, 0xc6, 0xbd, 0x74, 0xc1, 0xc6, 0xbd, 0x74, 0xc1, 0xc6, - 0xbd, 0x74, 0xc1, 0xc6, 0xbe, 0x74, 0xc1, 0xc6, 0xbe, 0x74, 0xc1, 0xc6, - 0xbe, 0x74, 0xc1, 0xc6, 0xbf, 0x74, 0xc1, 0xc6, 0xbf, 0x74, 0xc1, 0xc6, - 0xbf, 0x74, 0xc1, 0xc6, 0xc0, 0x74, 0xc4, 0xc6, 0xc0, 0x75, 0xc5, 0xc6, - 0xc0, 0x75, 0xc4, 0xc6, 0xc1, 0x75, 0xc5, 0xc6, 0xc1, 0x75, 0xc4, 0xc6, - 0xc1, 0x75, 0xc5, 0xc6, 0xc1, 0x75, 0xc4, 0xc6, 0xc2, 0x75, 0xc5, 0xc6, - 0xc2, 0x75, 0xc4, 0xc6, 0xc2, 0x75, 0xc5, 0xc6, 0xc3, 0x75, 0xc4, 0xc6, - 0xc3, 0x75, 0xc8, 0xc6, 0xc3, 0x76, 0xc8, 0xc6, 0xc4, 0x76, 0xc8, 0xc6, - 0xc4, 0x76, 0xc8, 0xc6, 0xc4, 0x76, 0xc8, 0xc6, 0xc5, 0x76, 0xc8, 0xc6, - 0xc5, 0x76, 0xc8, 0xc6, 0xc5, 0x76, 0xd4, 0xc6, 0xc6, 0x97, 0xd4, 0xc6, - 0xc6, 0x94, 0xd4, 0xc6, 0xc6, 0x93, 0xd4, 0xc6, 0xc6, 0x94, 0xd4, 0xc6, - 0xc7, 0x93, 0xd4, 0xc6, 0xc7, 0x94, 0xd4, 0xc6, 0xc7, 0x93, 0xd4, 0xc6, - 0xc8, 0x94, 0xd4, 0xc6, 0xc8, 0x93, 0xd4, 0xc6, 0xc8, 0x94, 0xd4, 0xc6, - 0xc9, 0x93, 0xd4, 0xc6, 0xc9, 0x94, 0xd4, 0xc6, 0xc9, 0x93, 0xd4, 0xc6, - 0xc9, 0x94, 0xd4, 0xc6, 0xca, 0x93, 0xd4, 0xc6, 0xca, 0x94, 0xd4, 0xc6, - 0xca, 0x93, 0xd4, 0xc6, 0xcb, 0x94, 0xd4, 0xc6, 0xcb, 0x93, 0xd4, 0xc6, - 0xcb, 0x94, 0xd4, 0xc6, 0xcc, 0x93, 0xd4, 0xc6, 0xcc, 0x94, 0xd4, 0xc6, - 0xcc, 0x93, 0xd4, 0xc6, 0xcc, 0x94, 0xd4, 0xc6, 0xcd, 0x93, 0xd4, 0xc6, - 0xcd, 0x94, 0xd4, 0xc6, 0xcd, 0x93, 0xd4, 0xc6, 0xce, 0x94, 0xd4, 0xc6, - 0xce, 0x93, 0xd4, 0xc6, 0xce, 0x94, 0xd4, 0xc6, 0xce, 0x93, 0xd4, 0xc6, - 0xcf, 0x94, 0xd4, 0xc6, 0xcf, 0x93, 0xd4, 0xc6, 0xcf, 0x94, 0xd4, 0xc6, - 0xd0, 0x93, 0xd4, 0xc6, 0xd0, 0x94, 0xd4, 0xc6, 0xd0, 0x93, 0xd4, 0xc6, - 0xd0, 0x94, 0xd4, 0xc6, 0xd1, 0x93, 0xd4, 0xc6, 0xd1, 0x94, 0xd4, 0xc6, - 0xd1, 0x93, 0xd4, 0xc6, 0xd2, 0x94, 0xd4, 0xc6, 0xd2, 0x93, 0xd4, 0xc6, - 0xd2, 0x93, 0xd4, 0xc6, 0xd2, 0x93, 0xd4, 0xc6, 0xd3, 0x93, 0xd4, 0xc6, - 0xd3, 0x93, 0xd4, 0xc6, 0xd3, 0x93, 0xd4, 0xc6, 0xd4, 0x93, 0xd4, 0xc6, - 0xd4, 0x93, 0xd4, 0xc6, 0xd4, 0x93, 0xd4, 0xc6, 0xd4, 0x93, 0xd5, 0xc6, - 0xd5, 0x93, 0xd5, 0xc6, 0xd5, 0x93, 0xd5, 0xc6, 0xd5, 0x93, 0xd6, 0xc6, - 0xd6, 0x93, 0xd6, 0xc6, 0xd6, 0x93, 0xd6, 0xc6, 0xd6, 0x93, 0xd6, 0xc6, - 0xd6, 0x93, 0xd6, 0xc6, 0xd7, 0x93, 0xd6, 0xc6, 0xd7, 0x93, 0xd6, 0xc6, - 0xd7, 0x93, 0xd7, 0xc6, 0xd7, 0x94, 0xd8, 0xc6, 0xd8, 0x94, 0xd8, 0xc6, - 0xd8, 0x94, 0xd8, 0xc6, 0xd8, 0x94, 0xd9, 0xc6, 0xd9, 0x94, 0xd9, 0xc6, - 0xd9, 0x94, 0xd9, 0xc6, 0xd9, 0x94, 0xd9, 0xc6, 0xd9, 0x94, 0xd9, 0xc6, - 0xda, 0x94, 0xd9, 0xc6, 0xda, 0x94, 0xd9, 0xc6, 0xda, 0x94, 0xd9, 0xc6, - 0xda, 0x94, 0xd9, 0xc6, 0xdb, 0x94, 0xdb, 0xc6, 0xdb, 0x95, 0xdb, 0xc6, - 0xdb, 0x95, 0xdb, 0xc6, 0xdb, 0x95, 0xdc, 0xc6, 0xdc, 0x95, 0xdc, 0xc6, - 0xdc, 0x95, 0xdc, 0xc6, 0xdc, 0x95, 0xdc, 0xc6, 0xdd, 0x95, 0xdc, 0xc6, - 0xdd, 0x95, 0xdc, 0xc6, 0xdd, 0x95, 0xdc, 0xc6, 0xdd, 0x95, 0xdc, 0xc6, - 0xde, 0x95, 0xde, 0xc6, 0xde, 0x96, 0xde, 0xc6, 0xde, 0x96, 0xde, 0xc6, - 0xde, 0x96, 0xdf, 0xc6, 0xdf, 0x96, 0xdf, 0xc6, 0xdf, 0x96, 0xdf, 0xc6, - 0xdf, 0x96, 0xdf, 0xc6, 0xdf, 0x96, 0xdf, 0xc6, 0xe0, 0x96, 0xdf, 0xc6, - 0xe0, 0x96, 0xdf, 0xc6, 0xe0, 0x96, 0xdf, 0xc6, 0xe1, 0x96, 0xe1, 0xc6, - 0xe1, 0x97, 0xe1, 0xc6, 0xe1, 0x97, 0xe1, 0xc6, 0xe1, 0x97, 0xe2, 0xc6, - 0xe2, 0x97, 0xe2, 0xc6, 0xe2, 0x97, 0xe2, 0xc6, 0xe2, 0x97, 0xe2, 0xc6, - 0xe2, 0x97, 0xe2, 0xc6, 0xe3, 0x97, 0xe2, 0xc6, 0xe3, 0x97, 0xe2, 0xc6, - 0xe3, 0x97, 0xe2, 0xc6, 0xe3, 0x97, 0xe2, 0xc6, 0xe4, 0x97, 0xe2, 0xc6, - 0xe4, 0x97, 0xe4, 0xc6, 0xe4, 0x98, 0xe4, 0xc6, 0xe4, 0x98, 0xe5, 0xc6, - 0xe5, 0x98, 0xe4, 0xc6, 0xe5, 0x98, 0xe5, 0xc6, 0xe5, 0x98, 0xe4, 0xc6, - 0xe5, 0x98, 0xea, 0xc6, 0xe6, 0x8c, 0xea, 0xc6, 0xe6, 0x8c, 0xea, 0xc6, - 0xe6, 0x8c, 0xea, 0xc6, 0xe6, 0x8c, 0xea, 0xc6, 0xe7, 0x8c, 0xea, 0xc6, - 0xe7, 0x8c, 0xea, 0xc6, 0xe7, 0x8c, 0xea, 0xc6, 0xe7, 0x8c, 0xea, 0xc6, - 0xe8, 0x8c, 0xea, 0xc6, 0xe8, 0x8c, 0xea, 0xc6, 0xe8, 0x8c, 0xea, 0xc6, - 0xe8, 0x8c, 0xea, 0xc6, 0xe9, 0x8c, 0xea, 0xc6, 0xe9, 0x8c, 0xea, 0xc6, - 0xe9, 0x8c, 0xea, 0xc6, 0xe9, 0x8c, 0xea, 0xc6, 0xea, 0x8c, 0xea, 0xc6, - 0xea, 0x8c, 0xea, 0xc6, 0xea, 0x8c, 0xea, 0xc6, 0xea, 0x8c, 0xeb, 0xc6, - 0xeb, 0x8c, 0xec, 0xc6, 0xeb, 0x8d, 0xec, 0xc6, 0xeb, 0x8d, 0xec, 0xc6, - 0xeb, 0x8d, 0xec, 0xc6, 0xec, 0x8d, 0xec, 0xc6, 0xec, 0x8d, 0xec, 0xc6, - 0xec, 0x8d, 0xec, 0xc6, 0xec, 0x8d, 0xec, 0xc6, 0xec, 0x8d, 0xed, 0xc6, - 0xed, 0x8d, 0xed, 0xc6, 0xed, 0x8d, 0xed, 0xc6, 0xed, 0x8d, 0xed, 0xc6, - 0xed, 0x8d, 0xee, 0xc6, 0xee, 0x8d, 0xee, 0xc6, 0xee, 0x8d, 0xef, 0xc6, - 0xee, 0x90, 0xef, 0xc6, 0xee, 0x90, 0xef, 0xc6, 0xef, 0x90, 0xef, 0xc6, - 0xef, 0x90, 0xef, 0xc6, 0xef, 0x90, 0xef, 0xc6, 0xef, 0x8e, 0xf0, 0xc6, - 0xf0, 0x8e, 0xf0, 0xc6, 0xf0, 0x8e, 0xf0, 0xc6, 0xf0, 0x8e, 0xf0, 0xc6, - 0xf0, 0x8e, 0xf1, 0xc6, 0xf1, 0x8e, 0xf1, 0xc6, 0xf1, 0x8e, 0xf1, 0xc6, - 0xf1, 0x8e, 0xf1, 0xc6, 0xf1, 0x8e, 0xf2, 0xc6, 0xf2, 0x8e, 0xf2, 0xc6, - 0xf2, 0x8e, 0xf2, 0xc6, 0xf2, 0x8e, 0xf2, 0xc6, 0xf2, 0x8e, 0xf2, 0xc6, - 0xf2, 0x8e, 0xf3, 0xc6, 0xf3, 0x8e, 0xf3, 0xc6, 0xf3, 0x8e, 0xf3, 0xc6, - 0xf3, 0x8f, 0xf3, 0xc6, 0xf3, 0x8f, 0xf4, 0xc6, 0xf4, 0x8f, 0xf4, 0xc6, - 0xf4, 0x8f, 0xf4, 0xc6, 0xf4, 0x8f, 0xf4, 0xc6, 0xf4, 0x8e, 0xf4, 0xc6, - 0xf5, 0x8f, 0xf4, 0xc6, 0xf5, 0x8e, 0xf4, 0xc6, 0xf5, 0x8f, 0xf4, 0xc6, - 0xf5, 0x8e, 0xf4, 0xc6, 0xf5, 0x8f, 0xf6, 0xc6, 0xf6, 0x92, 0xf6, 0xc6, - 0xf6, 0x92, 0xf6, 0xc6, 0xf6, 0x92, 0xf8, 0xc6, 0xf6, 0x8f, 0xf8, 0xc6, - 0xf7, 0x91, 0xf8, 0xc6, 0xf7, 0x8f, 0xf8, 0xc6, 0xf7, 0x8f, 0xf8, 0xc6, - 0xf7, 0x8f, 0xf8, 0xc6, 0xf8, 0x8f, 0xf8, 0xc6, 0xf7, 0x8f, 0xf8, 0xc6, - 0xf8, 0x8f, 0xf8, 0xc6, 0xf7, 0x8f, 0xf8, 0xc6, 0xf8, 0x8f, 0xf9, 0xc4, - 0xf8, 0x8f, 0xf9, 0xc6, 0xf8, 0x8f, 0xf9, 0xc4, 0xf8, 0x8f, 0xf9, 0xc6, - 0xf8, 0x8f, 0xfa, 0xc4, 0xf8, 0x8f, 0xfa, 0xc4, 0xf8, 0x8f, 0xfa, 0xc4, - 0xf8, 0x8f, 0xfa, 0xc4, 0xf8, 0x8f, 0xfa, 0xc4, 0xf8, 0x8f, 0xfb, 0xc4, - 0xf8, 0x8f, 0xfb, 0xc4, 0xf8, 0x8f, 0xfb, 0xc4, 0xf8, 0x8f, 0xfb, 0xc4, - 0xf8, 0x8f, 0xfc, 0xc4, 0xf8, 0x8f, 0xfc, 0xc4, 0xf8, 0x8f, 0xfc, 0xc4, - 0xf8, 0x8f, 0xfc, 0xc4, 0xf8, 0x8f, 0xfc, 0xc4, 0xf8, 0x8f, 0xfd, 0xc4, - 0xf8, 0x8f, 0xfd, 0xc4, 0xf8, 0x8f, 0xfd, 0xc4, 0xf8, 0x8f, 0xfd, 0xc4, - 0xf8, 0x8f, 0xfe, 0xc4, 0xf8, 0x8f, 0xfe, 0xc4, 0xf8, 0x8f, 0xfe, 0xc4, - 0xf8, 0x8f, 0xfe, 0xc4, 0xf8, 0x8f, 0xfe, 0xc4, 0xf8, 0x8f, 0xff, 0xc4, - 0xf8, 0x8f, 0xff, 0xc4, 0xf8, 0x8f, 0x03, 0xcd, 0x8e, 0x90, 0x0a, 0xcb, - 0x8e, 0x90, 0x0f, 0xcd, 0x8e, 0x90, 0x14, 0xcb, 0x8e, 0x90, 0x17, 0xcd, - 0x8e, 0x90, 0x1b, 0xcb, 0x8e, 0x90, 0x1e, 0xcd, 0x8e, 0x90, 0x20, 0xcb, - 0x8e, 0x90, 0x23, 0xcd, 0x8e, 0x90, 0x25, 0xcb, 0x8e, 0x90, 0x27, 0xcd, - 0x8e, 0x90, 0x29, 0xcb, 0x8e, 0x90, 0x2b, 0xcd, 0x8e, 0x90, 0x2d, 0xcb, - 0x8e, 0x90, 0x2f, 0xcd, 0x8e, 0x90, 0x31, 0xcb, 0x8e, 0x90, 0x32, 0xcd, - 0x8e, 0x90, 0x34, 0xcb, 0x8e, 0x90, 0x35, 0xcd, 0x8e, 0x90, 0x37, 0xcb, - 0x8e, 0x90, 0x38, 0xc9, 0x8f, 0x90, 0x3a, 0xcb, 0x8e, 0x90, 0x3b, 0xc9, - 0x8f, 0x90, 0x3c, 0xcb, 0x8e, 0x90, 0x3e, 0xc9, 0x8f, 0x90, 0x3f, 0xcb, - 0x8e, 0x90, 0x40, 0xc9, 0x8f, 0x90, 0x42, 0xcb, 0x8e, 0x90, 0x43, 0xc9, - 0x8f, 0x90, 0x44, 0xcb, 0x8e, 0x90, 0x45, 0xc9, 0x8f, 0x90, 0x46, 0xcb, - 0x8e, 0x90, 0x47, 0xc9, 0x8f, 0x90, 0x48, 0xcb, 0x8e, 0x90, 0x49, 0xc9, - 0x8f, 0x90, 0x4a, 0xcb, 0x8e, 0x90, 0x4b, 0xc9, 0x8f, 0x90, 0x4c, 0xcb, - 0x8e, 0x90, 0x4d, 0xc9, 0x8f, 0x90, 0x4e, 0xcb, 0x8e, 0x90, 0x4f, 0xc9, - 0x8f, 0x90, 0x50, 0xcb, 0x8e, 0x90, 0x51, 0xc9, 0x8f, 0x90, 0x52, 0xcb, - 0x8e, 0x90, 0x53, 0xc9, 0x8f, 0x90, 0x54, 0xcb, 0x8e, 0x90, 0x55, 0xc9, - 0x8f, 0x90, 0x56, 0xcb, 0x8e, 0x90, 0x57, 0xc9, 0x8f, 0x90, 0x58, 0xcb, - 0x8e, 0x90, 0x58, 0xc9, 0x8f, 0x90, 0x59, 0xcb, 0x8e, 0x90, 0x5a, 0xc9, - 0x8f, 0x90, 0x5b, 0xcb, 0x8e, 0x90, 0x5c, 0xc9, 0x8f, 0x90, 0x5d, 0xcb, - 0x8e, 0x90, 0x5d, 0xc9, 0x8f, 0x90, 0x5e, 0xcb, 0x8e, 0x90, 0x5f, 0xc9, - 0x8f, 0x90, 0x60, 0xcb, 0x8e, 0x90, 0x60, 0xc9, 0x8f, 0x90, 0x61, 0xcb, - 0x8e, 0x90, 0x62, 0xc9, 0x8f, 0x90, 0x63, 0xcb, 0x8e, 0x90, 0x63, 0xc9, - 0x8f, 0x90, 0x64, 0xc7, 0x8f, 0x90, 0x65, 0xc9, 0x8f, 0x90, 0x66, 0xc7, - 0x8f, 0x90, 0x66, 0xc9, 0x8f, 0x90, 0x67, 0xc7, 0x8f, 0x90, 0x68, 0xc9, - 0x8f, 0x90, 0x68, 0xc7, 0x8f, 0x90, 0x69, 0xc9, 0x8f, 0x90, 0x6a, 0xc7, - 0x8f, 0x90, 0x6a, 0xc9, 0x8f, 0x90, 0x6b, 0xc7, 0x8f, 0x90, 0x6c, 0xc9, - 0x8f, 0x90, 0x6c, 0xc7, 0x8f, 0x90, 0x6d, 0xc9, 0x8f, 0x90, 0x6e, 0xc7, - 0x8f, 0x90, 0x6e, 0xc9, 0x8f, 0x90, 0x6f, 0xc7, 0x8f, 0x90, 0x70, 0xc9, - 0x8f, 0x90, 0x70, 0xc7, 0x8f, 0x90, 0x71, 0xc9, 0x8f, 0x90, 0x72, 0xc7, - 0x8f, 0x90, 0x72, 0xc9, 0x8f, 0x90, 0x73, 0xc7, 0x8f, 0x90, 0x73, 0xc9, - 0x8f, 0x90, 0x74, 0xc7, 0x8f, 0x90, 0x75, 0xc9, 0x8f, 0x90, 0x75, 0xc7, - 0x8f, 0x90, 0x76, 0xc9, 0x8f, 0x90, 0x76, 0xc7, 0x8f, 0x90, 0x77, 0xc9, - 0x8f, 0x90, 0x78, 0xc7, 0x8f, 0x90, 0x78, 0xc9, 0x8f, 0x90, 0x79, 0xc7, - 0x8f, 0x90, 0x79, 0xc9, 0x8f, 0x90, 0x7a, 0xc7, 0x8f, 0x90, 0x7a, 0xc9, - 0x8f, 0x90, 0x7b, 0xc7, 0x8f, 0x90, 0x7c, 0xc9, 0x8f, 0x90, 0x7c, 0xc7, - 0x8f, 0x90, 0x7d, 0xc9, 0x8f, 0x90, 0x7d, 0xc7, 0x8f, 0x90, 0x7e, 0xc9, - 0x8f, 0x90, 0x7e, 0xc7, 0x8f, 0x90, 0x7f, 0xc9, 0x8f, 0x90, 0x7f, 0xc7, - 0x8f, 0x90, 0x80, 0xc9, 0x8f, 0x90, 0x81, 0xc7, 0x8f, 0x90, 0x81, 0xc9, - 0x8f, 0x90, 0x82, 0xc7, 0x8f, 0x90, 0x82, 0xc9, 0x8f, 0x90, 0x83, 0xc7, - 0x8f, 0x90, 0x83, 0xc9, 0x8f, 0x90, 0x84, 0xc7, 0x8f, 0x90, 0x84, 0xc6, - 0x90, 0x90, 0x85, 0xc7, 0x8f, 0x90, 0x85, 0xc6, 0x90, 0x90, 0x86, 0xc7, - 0x8f, 0x90, 0x86, 0xc6, 0x90, 0x90, 0x87, 0xc7, 0x8f, 0x90, 0x87, 0xc6, - 0x90, 0x90, 0x88, 0xc7, 0x8f, 0x90, 0x88, 0xc6, 0x90, 0x90, 0x89, 0xc7, - 0x8f, 0x90, 0x89, 0xc6, 0x90, 0x90, 0x8a, 0xc7, 0x8f, 0x90, 0x8a, 0xc6, - 0x90, 0x90, 0x8b, 0xc7, 0x8f, 0x90, 0x8b, 0xc6, 0x90, 0x90, 0x8c, 0xc7, - 0x8f, 0x90, 0x8c, 0xc6, 0x90, 0x90, 0x8d, 0xc7, 0x8f, 0x90, 0x8d, 0xc6, - 0x90, 0x90, 0x8e, 0xc7, 0x8f, 0x90, 0x8e, 0xc6, 0x90, 0x90, 0x8e, 0xc6, - 0x90, 0x90, 0x8f, 0xc6, 0x90, 0x90, 0x8f, 0xc6, 0x90, 0x90, 0x8f, 0xc6, - 0x90, 0x90, 0x8f, 0xc6, 0x90, 0x90, 0x8f, 0xc6, 0x91, 0x90, 0x8f, 0xc6, - 0x91, 0x90, 0x94, 0xc6, 0x92, 0x90, 0x93, 0xc6, 0x92, 0x90, 0x94, 0xc6, - 0x93, 0x90, 0x93, 0xc6, 0x92, 0x90, 0x94, 0xc6, 0x93, 0x90, 0x94, 0xc6, - 0x92, 0x90, 0x94, 0xc6, 0x93, 0x90, 0x95, 0xc5, 0x93, 0x90, 0x95, 0xc6, - 0x93, 0x90, 0x96, 0xc5, 0x93, 0x90, 0x96, 0xc6, 0x93, 0x90, 0x97, 0xc5, - 0x93, 0x90, 0x97, 0xc6, 0x93, 0x90, 0x98, 0xc5, 0x93, 0x90, 0x98, 0xc9, - 0x98, 0x90, 0x98, 0xc9, 0x98, 0x90, 0x99, 0xc9, 0x99, 0x90, 0x99, 0xc9, - 0x99, 0x90, 0x9a, 0xc9, 0x9a, 0x90, 0x9a, 0xc9, 0x99, 0x90, 0x9a, 0xc9, - 0x9a, 0x90, 0x9b, 0xc9, 0x99, 0x90, 0x9b, 0xc9, 0x9a, 0x90, 0x9c, 0xc9, - 0x99, 0x90, 0x9c, 0xc9, 0x9a, 0x90, 0x9d, 0xca, 0x9d, 0x90, 0x9d, 0xca, - 0x9d, 0x90, 0x9d, 0xca, 0x9d, 0x90, 0x9e, 0xca, 0x9e, 0x90, 0x9e, 0xca, - 0x9e, 0x90, 0x9f, 0xca, 0x9e, 0x90, 0x9f, 0xc6, 0xa5, 0x90, 0x9f, 0xc8, - 0xa4, 0x90, 0xa0, 0xc6, 0xa5, 0x90, 0xa0, 0xc8, 0xa4, 0x90, 0xa1, 0xc6, - 0xa5, 0x90, 0xa1, 0xc8, 0xa4, 0x90, 0xa1, 0xc6, 0xa5, 0x90, 0xa2, 0xc6, - 0xa5, 0x90, 0xa2, 0xc6, 0xa5, 0x90, 0xa3, 0xc6, 0xa5, 0x90, 0xa3, 0xc6, - 0xa5, 0x90, 0xa3, 0xc6, 0xa5, 0x90, 0xa4, 0xc6, 0xa5, 0x90, 0xa4, 0xc6, - 0xa5, 0x90, 0xa5, 0xc6, 0xa5, 0x8f, 0xa4, 0xc6, 0xa5, 0x90, 0xa5, 0xc6, - 0xa5, 0x8f, 0xa4, 0xc6, 0xa6, 0x90, 0xa5, 0xc6, 0xa6, 0x8f, 0xa4, 0xc6, - 0xa6, 0x90, 0xa5, 0xc6, 0xa7, 0x8f, 0xa4, 0xc6, 0xa7, 0x90, 0xa5, 0xc6, - 0xa8, 0x8f, 0xa5, 0xc6, 0xa8, 0x8d, 0xa5, 0xc6, 0xa8, 0x8f, 0xa5, 0xc6, - 0xa9, 0x8d, 0xa5, 0xc6, 0xa9, 0x8f, 0xa5, 0xc6, 0xaa, 0x8d, 0xa5, 0xc6, - 0xaa, 0x8f, 0xa5, 0xc6, 0xaa, 0x8d, 0xa5, 0xc6, 0xab, 0x8f, 0xa5, 0xc6, - 0xab, 0x8d, 0xa5, 0xc6, 0xab, 0x8f, 0xa5, 0xc6, 0xac, 0x8d, 0xa5, 0xc6, - 0xac, 0x8f, 0xa5, 0xc6, 0xac, 0x8d, 0xa5, 0xc6, 0xad, 0x8f, 0xa5, 0xc6, - 0xad, 0x8d, 0xa5, 0xc6, 0xae, 0x8f, 0xa5, 0xc6, 0xae, 0x8d, 0xa5, 0xc6, - 0xae, 0x8f, 0xa5, 0xc6, 0xaf, 0x8d, 0xa5, 0xc6, 0xaf, 0x8f, 0xa5, 0xc6, - 0xaf, 0x8d, 0xa5, 0xc6, 0xb0, 0x8f, 0xa5, 0xc6, 0xb0, 0x8d, 0xa5, 0xc6, - 0xb0, 0x8f, 0xa5, 0xc6, 0xb1, 0x8d, 0xa5, 0xc6, 0xb1, 0x8f, 0xa5, 0xc6, - 0xb2, 0x8d, 0xa5, 0xc6, 0xb2, 0x8f, 0xa5, 0xc6, 0xb2, 0x8d, 0xa5, 0xc6, - 0xb3, 0x8a, 0xa5, 0xc6, 0xb3, 0x8d, 0xa5, 0xc6, 0xb3, 0x8a, 0xa5, 0xc6, - 0xb4, 0x8d, 0xa5, 0xc6, 0xb4, 0x8a, 0xa5, 0xc6, 0xb4, 0x8d, 0xa5, 0xc6, - 0xb5, 0x8a, 0xa5, 0xc6, 0xb5, 0x8d, 0xa5, 0xc6, 0xb5, 0x8a, 0xa5, 0xc6, - 0xb6, 0x8d, 0xa5, 0xc6, 0xb6, 0x8a, 0xa5, 0xc6, 0xb6, 0x8d, 0xa5, 0xc6, - 0xb7, 0x8a, 0xa5, 0xc6, 0xb7, 0x8d, 0xa5, 0xc6, 0xb7, 0x8a, 0xa5, 0xc6, - 0xb8, 0x8d, 0xa5, 0xc6, 0xb8, 0x8a, 0xa5, 0xc6, 0xb8, 0x8d, 0xa5, 0xc6, - 0xb9, 0x8a, 0xa5, 0xc6, 0xb9, 0x8d, 0xa9, 0xc6, 0xb9, 0x7f, 0xbf, 0xc6, - 0xba, 0x74, 0xbb, 0xc6, 0xba, 0x73, 0xbf, 0xc6, 0xba, 0x74, 0xbf, 0xc6, - 0xbb, 0x74, 0xbf, 0xc6, 0xbb, 0x74, 0xbf, 0xc6, 0xbb, 0x74, 0xbf, 0xc6, - 0xbc, 0x74, 0xbf, 0xc6, 0xbc, 0x74, 0xbf, 0xc6, 0xbc, 0x74, 0xbf, 0xc6, - 0xbd, 0x74, 0xbf, 0xc6, 0xbd, 0x74, 0xc2, 0xc6, 0xbd, 0x75, 0xbf, 0xc6, - 0xbe, 0x74, 0xc2, 0xc6, 0xbe, 0x75, 0xc3, 0xc6, 0xbe, 0x75, 0xc2, 0xc6, - 0xbf, 0x75, 0xc3, 0xc6, 0xbf, 0x75, 0xc2, 0xc6, 0xbf, 0x75, 0xc3, 0xc6, - 0xc0, 0x75, 0xc2, 0xc6, 0xc0, 0x75, 0xc3, 0xc6, 0xc0, 0x75, 0xc2, 0xc6, - 0xc1, 0x75, 0xc3, 0xc6, 0xc1, 0x75, 0xc2, 0xc6, 0xc1, 0x75, 0xc3, 0xc6, - 0xc1, 0x75, 0xc6, 0xc6, 0xc2, 0x76, 0xc6, 0xc6, 0xc2, 0x76, 0xc6, 0xc6, - 0xc2, 0x76, 0xc6, 0xc6, 0xc3, 0x76, 0xc6, 0xc6, 0xc3, 0x76, 0xc6, 0xc6, - 0xc3, 0x76, 0xc6, 0xc6, 0xc4, 0x76, 0xc6, 0xc6, 0xc4, 0x76, 0xc6, 0xc6, - 0xc4, 0x76, 0xc6, 0xc6, 0xc5, 0x76, 0xd4, 0xc6, 0xc5, 0x97, 0xd4, 0xc6, - 0xc5, 0x95, 0xd4, 0xc6, 0xc6, 0x97, 0xd4, 0xc6, 0xc6, 0x95, 0xd4, 0xc6, - 0xc6, 0x97, 0xd4, 0xc6, 0xc6, 0x95, 0xd4, 0xc6, 0xc7, 0x97, 0xd4, 0xc6, - 0xc7, 0x95, 0xd4, 0xc6, 0xc7, 0x97, 0xd4, 0xc6, 0xc8, 0x95, 0xd4, 0xc6, - 0xc8, 0x97, 0xd4, 0xc6, 0xc8, 0x95, 0xd4, 0xc6, 0xc9, 0x93, 0xd4, 0xc6, - 0xc9, 0x95, 0xd4, 0xc6, 0xc9, 0x93, 0xd4, 0xc6, 0xc9, 0x95, 0xd4, 0xc6, - 0xca, 0x93, 0xd4, 0xc6, 0xca, 0x95, 0xd4, 0xc6, 0xca, 0x93, 0xd4, 0xc6, - 0xcb, 0x95, 0xd4, 0xc6, 0xcb, 0x93, 0xd4, 0xc6, 0xcb, 0x95, 0xd4, 0xc6, - 0xcc, 0x93, 0xd4, 0xc6, 0xcc, 0x95, 0xd4, 0xc6, 0xcc, 0x93, 0xd4, 0xc6, - 0xcc, 0x95, 0xd4, 0xc6, 0xcd, 0x93, 0xd4, 0xc6, 0xcd, 0x95, 0xd4, 0xc6, - 0xcd, 0x93, 0xd4, 0xc6, 0xce, 0x95, 0xd4, 0xc6, 0xce, 0x93, 0xd4, 0xc6, - 0xce, 0x95, 0xd4, 0xc6, 0xce, 0x93, 0xd4, 0xc6, 0xcf, 0x95, 0xd4, 0xc6, - 0xcf, 0x93, 0xd4, 0xc6, 0xcf, 0x95, 0xd4, 0xc6, 0xd0, 0x93, 0xd4, 0xc6, - 0xd0, 0x93, 0xd4, 0xc6, 0xd0, 0x93, 0xd4, 0xc6, 0xd0, 0x93, 0xd4, 0xc6, - 0xd1, 0x93, 0xd4, 0xc6, 0xd1, 0x93, 0xd4, 0xc6, 0xd1, 0x93, 0xd4, 0xc6, - 0xd2, 0x93, 0xd4, 0xc6, 0xd2, 0x93, 0xd4, 0xc6, 0xd2, 0x93, 0xd4, 0xc6, - 0xd2, 0x93, 0xd4, 0xc6, 0xd3, 0x93, 0xd4, 0xc6, 0xd3, 0x93, 0xd4, 0xc6, - 0xd3, 0x93, 0xd4, 0xc6, 0xd4, 0x93, 0xd4, 0xc6, 0xd4, 0x93, 0xd4, 0xc6, - 0xd4, 0x93, 0xd4, 0xc6, 0xd4, 0x93, 0xd5, 0xc6, 0xd5, 0x93, 0xd4, 0xc6, - 0xd5, 0x93, 0xd5, 0xc6, 0xd5, 0x93, 0xd4, 0xc6, 0xd6, 0x93, 0xd5, 0xc6, - 0xd6, 0x93, 0xd6, 0xc6, 0xd6, 0x94, 0xd6, 0xc6, 0xd6, 0x94, 0xd7, 0xc6, - 0xd7, 0x94, 0xd7, 0xc6, 0xd7, 0x94, 0xd7, 0xc6, 0xd7, 0x94, 0xd7, 0xc6, - 0xd7, 0x94, 0xd8, 0xc6, 0xd8, 0x94, 0xd7, 0xc6, 0xd8, 0x94, 0xd8, 0xc6, - 0xd8, 0x94, 0xd7, 0xc6, 0xd9, 0x94, 0xd8, 0xc6, 0xd9, 0x94, 0xd9, 0xc6, - 0xd9, 0x95, 0xd9, 0xc6, 0xd9, 0x95, 0xda, 0xc6, 0xda, 0x95, 0xda, 0xc6, - 0xda, 0x95, 0xda, 0xc6, 0xda, 0x95, 0xda, 0xc6, 0xda, 0x95, 0xdb, 0xc6, - 0xdb, 0x95, 0xda, 0xc6, 0xdb, 0x95, 0xdb, 0xc6, 0xdb, 0x95, 0xda, 0xc6, - 0xdb, 0x95, 0xdb, 0xc6, 0xdc, 0x95, 0xda, 0xc6, 0xdc, 0x95, 0xdb, 0xc6, - 0xdc, 0x95, 0xdd, 0xc6, 0xdd, 0x96, 0xdd, 0xc6, 0xdd, 0x96, 0xdd, 0xc6, - 0xdd, 0x96, 0xdd, 0xc6, 0xdd, 0x96, 0xde, 0xc6, 0xde, 0x96, 0xdd, 0xc6, - 0xde, 0x96, 0xde, 0xc6, 0xde, 0x96, 0xdd, 0xc6, 0xde, 0x96, 0xde, 0xc6, - 0xdf, 0x96, 0xdd, 0xc6, 0xdf, 0x96, 0xde, 0xc6, 0xdf, 0x96, 0xdf, 0xc6, - 0xdf, 0x97, 0xe0, 0xc6, 0xe0, 0x97, 0xe0, 0xc6, 0xe0, 0x97, 0xe0, 0xc6, - 0xe0, 0x97, 0xe1, 0xc6, 0xe1, 0x97, 0xe0, 0xc6, 0xe1, 0x97, 0xe1, 0xc6, - 0xe1, 0x97, 0xe0, 0xc6, 0xe1, 0x97, 0xe1, 0xc6, 0xe2, 0x97, 0xe0, 0xc6, - 0xe2, 0x97, 0xe1, 0xc6, 0xe2, 0x97, 0xe2, 0xc6, 0xe2, 0x98, 0xe3, 0xc6, - 0xe3, 0x98, 0xe3, 0xc6, 0xe3, 0x98, 0xe3, 0xc6, 0xe3, 0x98, 0xe3, 0xc6, - 0xe3, 0x98, 0xe3, 0xc6, 0xe4, 0x98, 0xe3, 0xc6, 0xe4, 0x98, 0xe3, 0xc6, - 0xe4, 0x98, 0xe3, 0xc6, 0xe4, 0x98, 0xe3, 0xc6, 0xe5, 0x98, 0xe3, 0xc6, - 0xe5, 0x98, 0xe3, 0xc6, 0xe5, 0x98, 0xe3, 0xc6, 0xe5, 0x98, 0xea, 0xc6, - 0xe6, 0x8c, 0xea, 0xc6, 0xe6, 0x8d, 0xea, 0xc6, 0xe6, 0x8c, 0xea, 0xc6, - 0xe6, 0x8d, 0xea, 0xc6, 0xe7, 0x8c, 0xea, 0xc6, 0xe7, 0x8d, 0xea, 0xc6, - 0xe7, 0x8c, 0xea, 0xc6, 0xe7, 0x8d, 0xea, 0xc6, 0xe8, 0x8c, 0xea, 0xc6, - 0xe8, 0x8d, 0xea, 0xc6, 0xe8, 0x8d, 0xea, 0xc6, 0xe8, 0x8d, 0xea, 0xc6, - 0xe9, 0x8d, 0xea, 0xc6, 0xe9, 0x8d, 0xea, 0xc6, 0xe9, 0x8d, 0xea, 0xc6, - 0xe9, 0x8d, 0xea, 0xc6, 0xea, 0x8d, 0xea, 0xc6, 0xea, 0x8d, 0xea, 0xc6, - 0xea, 0x8d, 0xea, 0xc6, 0xea, 0x8d, 0xeb, 0xc6, 0xeb, 0x8d, 0xeb, 0xc6, - 0xeb, 0x8d, 0xeb, 0xc6, 0xeb, 0x8d, 0xeb, 0xc6, 0xeb, 0x8d, 0xec, 0xc6, - 0xec, 0x8d, 0xec, 0xc6, 0xec, 0x8d, 0xec, 0xc6, 0xec, 0x8d, 0xec, 0xc6, - 0xec, 0x8d, 0xed, 0xc6, 0xec, 0x8e, 0xee, 0xc6, 0xed, 0x8e, 0xed, 0xc6, - 0xed, 0x8e, 0xee, 0xc6, 0xed, 0x8e, 0xed, 0xc6, 0xed, 0x8e, 0xee, 0xc6, - 0xee, 0x8e, 0xee, 0xc6, 0xee, 0x8e, 0xef, 0xc6, 0xee, 0x90, 0xef, 0xc6, - 0xee, 0x90, 0xef, 0xc5, 0xef, 0x90, 0xef, 0xc5, 0xef, 0x90, 0xef, 0xc5, - 0xef, 0x90, 0xef, 0xc5, 0xef, 0x90, 0xf0, 0xc5, 0xf0, 0x90, 0xf0, 0xc5, - 0xf0, 0x90, 0xf0, 0xc6, 0xf0, 0x90, 0xf0, 0xc6, 0xf0, 0x90, 0xf1, 0xc6, - 0xf1, 0x91, 0xf1, 0xc6, 0xf1, 0x91, 0xf1, 0xc6, 0xf1, 0x91, 0xf1, 0xc6, - 0xf1, 0x8f, 0xf2, 0xc6, 0xf2, 0x8f, 0xf2, 0xc6, 0xf2, 0x8f, 0xf2, 0xc6, - 0xf2, 0x8f, 0xf2, 0xc6, 0xf2, 0x8f, 0xf2, 0xc6, 0xf2, 0x8f, 0xf3, 0xc6, - 0xf3, 0x8f, 0xf3, 0xc6, 0xf3, 0x8f, 0xf3, 0xc6, 0xf3, 0x8f, 0xf3, 0xc6, - 0xf3, 0x8f, 0xf4, 0xc6, 0xf4, 0x8f, 0xf4, 0xc6, 0xf4, 0x8f, 0xf4, 0xc6, - 0xf4, 0x8f, 0xf4, 0xc6, 0xf4, 0x8f, 0xf4, 0xc6, 0xf5, 0x8f, 0xf4, 0xc6, - 0xf5, 0x8f, 0xf5, 0xc6, 0xf5, 0x92, 0xf5, 0xc6, 0xf5, 0x92, 0xf5, 0xc6, - 0xf5, 0x92, 0xf6, 0xc6, 0xf6, 0x92, 0xf5, 0xc6, 0xf6, 0x92, 0xf6, 0xc6, - 0xf6, 0x92, 0xf5, 0xc6, 0xf6, 0x92, 0xf8, 0xc6, 0xf7, 0x91, 0xf8, 0xc6, - 0xf7, 0x90, 0xf8, 0xc6, 0xf7, 0x91, 0xf8, 0xc6, 0xf7, 0x90, 0xf8, 0xc6, - 0xf8, 0x90, 0xf8, 0xc6, 0xf7, 0x90, 0xf8, 0xc6, 0xf8, 0x90, 0xf8, 0xc6, - 0xf7, 0x90, 0xf8, 0xc6, 0xf8, 0x90, 0xf9, 0xc5, 0xf8, 0x90, 0xf9, 0xc6, - 0xf8, 0x90, 0xf9, 0xc5, 0xf8, 0x90, 0xf9, 0xc6, 0xf8, 0x90, 0xfa, 0xc5, - 0xf8, 0x90, 0xfa, 0xc5, 0xf8, 0x90, 0xfa, 0xc5, 0xf8, 0x90, 0xfa, 0xc5, - 0xf8, 0x90, 0xfa, 0xc5, 0xf8, 0x90, 0xfb, 0xc5, 0xf8, 0x90, 0xfb, 0xc5, - 0xf8, 0x90, 0xfb, 0xc5, 0xf8, 0x90, 0xfb, 0xc5, 0xf8, 0x90, 0xfc, 0xc5, - 0xf8, 0x90, 0xfc, 0xc5, 0xf8, 0x90, 0xfc, 0xc5, 0xf8, 0x90, 0xfc, 0xc5, - 0xf8, 0x90, 0xfc, 0xc5, 0xf8, 0x90, 0xfd, 0xc5, 0xf8, 0x90, 0xfd, 0xc5, - 0xf8, 0x90, 0xfd, 0xc5, 0xf8, 0x90, 0xfd, 0xc5, 0xf8, 0x90, 0xfe, 0xc5, - 0xf8, 0x90, 0xfe, 0xc5, 0xf8, 0x90, 0xfe, 0xc5, 0xf8, 0x90, 0xfe, 0xc5, - 0xf8, 0x90, 0xfe, 0xc5, 0xf8, 0x90, 0xff, 0xc5, 0xf8, 0x90, 0xff, 0xc5, - 0xf8, 0x90, 0x03, 0xcd, 0x8e, 0x90, 0x0a, 0xcb, 0x8e, 0x90, 0x0f, 0xcd, - 0x8e, 0x90, 0x14, 0xcb, 0x8e, 0x90, 0x17, 0xcd, 0x8e, 0x90, 0x1b, 0xcb, - 0x8e, 0x90, 0x1e, 0xcd, 0x8e, 0x90, 0x20, 0xcb, 0x8e, 0x90, 0x23, 0xcd, - 0x8e, 0x90, 0x25, 0xcb, 0x8e, 0x90, 0x27, 0xcd, 0x8e, 0x90, 0x29, 0xcb, - 0x8e, 0x90, 0x2b, 0xcd, 0x8e, 0x90, 0x2d, 0xcb, 0x8e, 0x90, 0x2f, 0xcd, - 0x8e, 0x90, 0x31, 0xcb, 0x8e, 0x90, 0x32, 0xcd, 0x8e, 0x90, 0x34, 0xcb, - 0x8e, 0x90, 0x35, 0xcd, 0x8e, 0x90, 0x37, 0xcb, 0x8e, 0x90, 0x38, 0xcd, - 0x8e, 0x90, 0x3a, 0xcb, 0x8e, 0x90, 0x3b, 0xcd, 0x8e, 0x90, 0x3c, 0xcb, - 0x8e, 0x90, 0x3e, 0xcd, 0x8e, 0x90, 0x3f, 0xcb, 0x8e, 0x90, 0x40, 0xcd, - 0x8e, 0x90, 0x42, 0xcb, 0x8e, 0x90, 0x43, 0xcd, 0x8e, 0x90, 0x44, 0xcb, - 0x8e, 0x90, 0x45, 0xcd, 0x8e, 0x90, 0x46, 0xcb, 0x8e, 0x90, 0x47, 0xcd, - 0x8e, 0x90, 0x48, 0xcb, 0x8e, 0x90, 0x49, 0xcd, 0x8e, 0x90, 0x4a, 0xcb, - 0x8e, 0x90, 0x4b, 0xcd, 0x8e, 0x90, 0x4c, 0xcb, 0x8e, 0x90, 0x4d, 0xcd, - 0x8e, 0x90, 0x4e, 0xcb, 0x8e, 0x90, 0x4f, 0xcd, 0x8e, 0x90, 0x50, 0xcb, - 0x8e, 0x90, 0x51, 0xcd, 0x8e, 0x90, 0x52, 0xcb, 0x8e, 0x90, 0x53, 0xc9, - 0x8f, 0x90, 0x54, 0xcb, 0x8e, 0x90, 0x55, 0xc9, 0x8f, 0x90, 0x56, 0xcb, - 0x8e, 0x90, 0x57, 0xc9, 0x8f, 0x90, 0x58, 0xcb, 0x8e, 0x90, 0x58, 0xc9, - 0x8f, 0x90, 0x59, 0xcb, 0x8e, 0x90, 0x5a, 0xc9, 0x8f, 0x90, 0x5b, 0xcb, - 0x8e, 0x90, 0x5c, 0xc9, 0x8f, 0x90, 0x5d, 0xcb, 0x8e, 0x90, 0x5d, 0xc9, - 0x8f, 0x90, 0x5e, 0xcb, 0x8e, 0x90, 0x5f, 0xc9, 0x8f, 0x90, 0x60, 0xcb, - 0x8e, 0x90, 0x60, 0xc9, 0x8f, 0x90, 0x61, 0xcb, 0x8e, 0x90, 0x62, 0xc9, - 0x8f, 0x90, 0x63, 0xcb, 0x8e, 0x90, 0x63, 0xc9, 0x8f, 0x90, 0x64, 0xcb, - 0x8e, 0x90, 0x65, 0xc9, 0x8f, 0x90, 0x66, 0xcb, 0x8e, 0x90, 0x66, 0xc9, - 0x8f, 0x90, 0x67, 0xcb, 0x8e, 0x90, 0x68, 0xc9, 0x8f, 0x90, 0x68, 0xcb, - 0x8e, 0x90, 0x69, 0xc9, 0x8f, 0x90, 0x6a, 0xcb, 0x8e, 0x90, 0x6a, 0xc9, - 0x8f, 0x90, 0x6b, 0xcb, 0x8e, 0x90, 0x6c, 0xc9, 0x8f, 0x90, 0x6c, 0xcb, - 0x8e, 0x90, 0x6d, 0xc9, 0x8f, 0x90, 0x6e, 0xcb, 0x8e, 0x90, 0x6e, 0xc9, - 0x8f, 0x90, 0x6f, 0xc7, 0x8f, 0x90, 0x70, 0xc9, 0x8f, 0x90, 0x70, 0xc7, - 0x8f, 0x90, 0x71, 0xc9, 0x8f, 0x90, 0x72, 0xc7, 0x8f, 0x90, 0x72, 0xc9, - 0x8f, 0x90, 0x73, 0xc7, 0x8f, 0x90, 0x73, 0xc9, 0x8f, 0x90, 0x74, 0xc7, - 0x8f, 0x90, 0x75, 0xc9, 0x8f, 0x90, 0x75, 0xc7, 0x8f, 0x90, 0x76, 0xc9, - 0x8f, 0x90, 0x76, 0xc7, 0x8f, 0x90, 0x77, 0xc9, 0x8f, 0x90, 0x78, 0xc7, - 0x8f, 0x90, 0x78, 0xc9, 0x8f, 0x90, 0x79, 0xc7, 0x8f, 0x90, 0x79, 0xc9, - 0x8f, 0x90, 0x7a, 0xc7, 0x8f, 0x90, 0x7a, 0xc9, 0x8f, 0x90, 0x7b, 0xc7, - 0x8f, 0x90, 0x7c, 0xc9, 0x8f, 0x90, 0x7c, 0xc7, 0x8f, 0x90, 0x7d, 0xc9, - 0x8f, 0x90, 0x7d, 0xc7, 0x8f, 0x90, 0x7e, 0xc9, 0x8f, 0x90, 0x7e, 0xc7, - 0x8f, 0x90, 0x7f, 0xc9, 0x8f, 0x90, 0x7f, 0xc7, 0x8f, 0x90, 0x80, 0xc9, - 0x8f, 0x90, 0x81, 0xc7, 0x8f, 0x90, 0x81, 0xc9, 0x8f, 0x90, 0x82, 0xc7, - 0x8f, 0x90, 0x82, 0xc9, 0x8f, 0x90, 0x83, 0xc7, 0x8f, 0x90, 0x83, 0xc9, - 0x8f, 0x90, 0x84, 0xc7, 0x8f, 0x90, 0x84, 0xc6, 0x90, 0x90, 0x85, 0xc7, - 0x8f, 0x90, 0x85, 0xc6, 0x90, 0x90, 0x86, 0xc7, 0x8f, 0x90, 0x86, 0xc6, - 0x90, 0x90, 0x87, 0xc7, 0x8f, 0x90, 0x87, 0xc6, 0x90, 0x90, 0x88, 0xc7, - 0x8f, 0x90, 0x88, 0xc6, 0x90, 0x90, 0x89, 0xc7, 0x8f, 0x90, 0x89, 0xc6, - 0x90, 0x90, 0x8a, 0xc7, 0x8f, 0x90, 0x8a, 0xc6, 0x90, 0x90, 0x8b, 0xc7, - 0x8f, 0x90, 0x8b, 0xc6, 0x90, 0x90, 0x8c, 0xc7, 0x8f, 0x90, 0x8c, 0xc6, - 0x90, 0x90, 0x8d, 0xc7, 0x8f, 0x90, 0x8d, 0xc6, 0x90, 0x90, 0x8e, 0xc7, - 0x8f, 0x90, 0x8e, 0xc6, 0x90, 0x90, 0x8e, 0xc6, 0x90, 0x90, 0x8f, 0xc6, - 0x90, 0x90, 0x8f, 0xc6, 0x90, 0x90, 0x8f, 0xc6, 0x90, 0x90, 0x8f, 0xc6, - 0x90, 0x90, 0x8f, 0xc6, 0x91, 0x90, 0x8f, 0xc6, 0x91, 0x90, 0x93, 0xc6, - 0x92, 0x91, 0x93, 0xc6, 0x92, 0x90, 0x94, 0xc6, 0x93, 0x90, 0x93, 0xc6, - 0x92, 0x90, 0x94, 0xc6, 0x93, 0x90, 0x94, 0xc6, 0x92, 0x90, 0x94, 0xc6, - 0x93, 0x90, 0x95, 0xc5, 0x93, 0x90, 0x95, 0xc6, 0x93, 0x90, 0x96, 0xc5, - 0x93, 0x90, 0x96, 0xc6, 0x93, 0x90, 0x97, 0xc5, 0x93, 0x90, 0x97, 0xc6, - 0x93, 0x90, 0x98, 0xc9, 0x97, 0x90, 0x98, 0xc9, 0x97, 0x90, 0x98, 0xc9, - 0x97, 0x90, 0x99, 0xc9, 0x97, 0x90, 0x99, 0xc9, 0x97, 0x90, 0x9a, 0xc9, - 0x97, 0x90, 0x9a, 0xca, 0x9a, 0x90, 0x9a, 0xca, 0x9a, 0x90, 0x9b, 0xca, - 0x9b, 0x90, 0x9b, 0xca, 0x9b, 0x90, 0x9c, 0xca, 0x9c, 0x90, 0x9c, 0xca, - 0x9b, 0x90, 0x9d, 0xca, 0x9c, 0x90, 0x9d, 0xca, 0x9b, 0x90, 0x9d, 0xca, - 0x9c, 0x90, 0x9e, 0xca, 0x9b, 0x90, 0x9e, 0xca, 0x9c, 0x90, 0x9f, 0xca, - 0x9f, 0x90, 0x9f, 0xca, 0x9f, 0x90, 0x9f, 0xc8, 0xa4, 0x90, 0xa0, 0xc6, - 0xa5, 0x90, 0xa0, 0xc8, 0xa4, 0x90, 0xa1, 0xc6, 0xa5, 0x90, 0xa1, 0xc8, - 0xa4, 0x90, 0xa1, 0xc6, 0xa5, 0x90, 0xa2, 0xc6, 0xa5, 0x90, 0xa2, 0xc6, - 0xa5, 0x90, 0xa3, 0xc6, 0xa5, 0x90, 0xa3, 0xc6, 0xa5, 0x90, 0xa3, 0xc6, - 0xa5, 0x90, 0xa4, 0xc6, 0xa5, 0x90, 0xa4, 0xc6, 0xa5, 0x90, 0xa5, 0xc6, - 0xa5, 0x8f, 0xa4, 0xc6, 0xa5, 0x90, 0xa5, 0xc6, 0xa5, 0x8f, 0xa4, 0xc6, - 0xa6, 0x90, 0xa5, 0xc6, 0xa6, 0x8f, 0xa4, 0xc6, 0xa6, 0x90, 0xa5, 0xc6, - 0xa7, 0x8f, 0xa4, 0xc6, 0xa7, 0x90, 0xa5, 0xc6, 0xa8, 0x8f, 0xa4, 0xc6, - 0xa8, 0x90, 0xa5, 0xc6, 0xa8, 0x8f, 0xa4, 0xc6, 0xa9, 0x90, 0xa5, 0xc6, - 0xa9, 0x8f, 0xa4, 0xc6, 0xaa, 0x90, 0xa5, 0xc6, 0xaa, 0x8f, 0xa4, 0xc6, - 0xaa, 0x90, 0xa5, 0xc6, 0xab, 0x8f, 0xa5, 0xc6, 0xab, 0x8c, 0xa5, 0xc6, - 0xab, 0x8f, 0xa5, 0xc6, 0xac, 0x8c, 0xa5, 0xc6, 0xac, 0x8f, 0xa5, 0xc6, - 0xac, 0x8c, 0xa5, 0xc6, 0xad, 0x8f, 0xa5, 0xc6, 0xad, 0x8c, 0xa5, 0xc6, - 0xae, 0x8f, 0xa5, 0xc6, 0xae, 0x8c, 0xa5, 0xc6, 0xae, 0x8f, 0xa5, 0xc6, - 0xaf, 0x8c, 0xa5, 0xc6, 0xaf, 0x8f, 0xa5, 0xc6, 0xaf, 0x8c, 0xa5, 0xc6, - 0xb0, 0x8f, 0xa5, 0xc6, 0xb0, 0x8c, 0xa5, 0xc6, 0xb0, 0x8f, 0xa5, 0xc6, - 0xb1, 0x8c, 0xa5, 0xc6, 0xb1, 0x8f, 0xa5, 0xc6, 0xb2, 0x8c, 0xa5, 0xc6, - 0xb2, 0x8f, 0xa5, 0xc6, 0xb2, 0x8c, 0xa5, 0xc6, 0xb3, 0x8f, 0xa5, 0xc6, - 0xb3, 0x8c, 0xa5, 0xc6, 0xb3, 0x8f, 0xa5, 0xc6, 0xb4, 0x8c, 0xa5, 0xc6, - 0xb4, 0x8f, 0xa5, 0xc6, 0xb4, 0x8c, 0xa5, 0xc6, 0xb5, 0x8f, 0xa5, 0xc6, - 0xb5, 0x8c, 0xa5, 0xc6, 0xb5, 0x8f, 0xa5, 0xc6, 0xb6, 0x8c, 0xa5, 0xc6, - 0xb6, 0x8f, 0xa5, 0xc6, 0xb6, 0x8c, 0xa5, 0xc6, 0xb7, 0x89, 0xa5, 0xc6, - 0xb7, 0x8c, 0xa5, 0xc6, 0xb7, 0x89, 0xa5, 0xc6, 0xb8, 0x8c, 0xa5, 0xc6, - 0xb8, 0x89, 0xa5, 0xc6, 0xb8, 0x8c, 0xa5, 0xc6, 0xb9, 0x89, 0xa5, 0xc6, - 0xb9, 0x8c, 0xa5, 0xc6, 0xb9, 0x89, 0xa5, 0xc6, 0xba, 0x8c, 0xbd, 0xc6, - 0xba, 0x73, 0xbe, 0xc6, 0xba, 0x73, 0xbd, 0xc6, 0xbb, 0x73, 0xbe, 0xc6, - 0xbb, 0x73, 0xbd, 0xc6, 0xbb, 0x73, 0xc1, 0xc6, 0xbc, 0x74, 0xbd, 0xc6, - 0xbc, 0x73, 0xc1, 0xc6, 0xbc, 0x74, 0xc1, 0xc6, 0xbd, 0x74, 0xc1, 0xc6, - 0xbd, 0x74, 0xc1, 0xc6, 0xbd, 0x74, 0xc1, 0xc6, 0xbe, 0x74, 0xc1, 0xc6, - 0xbe, 0x74, 0xc1, 0xc6, 0xbe, 0x74, 0xc1, 0xc6, 0xbf, 0x74, 0xc1, 0xc6, - 0xbf, 0x74, 0xc4, 0xc6, 0xbf, 0x75, 0xc1, 0xc6, 0xc0, 0x74, 0xc4, 0xc6, - 0xc0, 0x75, 0xc5, 0xc6, 0xc0, 0x75, 0xc4, 0xc6, 0xc1, 0x75, 0xc5, 0xc6, - 0xc1, 0x75, 0xc4, 0xc6, 0xc1, 0x75, 0xc5, 0xc6, 0xc1, 0x75, 0xc4, 0xc6, - 0xc2, 0x75, 0xc5, 0xc6, 0xc2, 0x75, 0xc4, 0xc6, 0xc2, 0x75, 0xc5, 0xc6, - 0xc3, 0x75, 0xc4, 0xc6, 0xc3, 0x75, 0xc8, 0xc6, 0xc3, 0x76, 0xc8, 0xc6, - 0xc4, 0x76, 0xc8, 0xc6, 0xc4, 0x76, 0xc8, 0xc6, 0xc4, 0x76, 0xd4, 0xc6, - 0xc5, 0x94, 0xd4, 0xc6, 0xc5, 0x97, 0xd4, 0xc6, 0xc5, 0x94, 0xd4, 0xc6, - 0xc6, 0x97, 0xd4, 0xc6, 0xc6, 0x94, 0xd4, 0xc6, 0xc6, 0x97, 0xd4, 0xc6, - 0xc6, 0x94, 0xd4, 0xc6, 0xc7, 0x97, 0xd4, 0xc6, 0xc7, 0x94, 0xd4, 0xc6, - 0xc7, 0x97, 0xd4, 0xc6, 0xc8, 0x94, 0xd4, 0xc6, 0xc8, 0x97, 0xd4, 0xc6, - 0xc8, 0x94, 0xd4, 0xc6, 0xc9, 0x93, 0xd4, 0xc6, 0xc9, 0x94, 0xd4, 0xc6, - 0xc9, 0x93, 0xd4, 0xc6, 0xc9, 0x94, 0xd4, 0xc6, 0xca, 0x93, 0xd4, 0xc6, - 0xca, 0x94, 0xd4, 0xc6, 0xca, 0x93, 0xd4, 0xc6, 0xcb, 0x94, 0xd4, 0xc6, - 0xcb, 0x93, 0xd4, 0xc6, 0xcb, 0x94, 0xd4, 0xc6, 0xcc, 0x93, 0xd4, 0xc6, - 0xcc, 0x94, 0xd4, 0xc6, 0xcc, 0x93, 0xd4, 0xc6, 0xcc, 0x94, 0xd4, 0xc6, - 0xcd, 0x93, 0xd4, 0xc6, 0xcd, 0x94, 0xd4, 0xc6, 0xcd, 0x93, 0xd4, 0xc6, - 0xce, 0x94, 0xd4, 0xc6, 0xce, 0x93, 0xd4, 0xc6, 0xce, 0x94, 0xd4, 0xc6, - 0xce, 0x93, 0xd4, 0xc6, 0xcf, 0x94, 0xd4, 0xc6, 0xcf, 0x93, 0xd4, 0xc6, - 0xcf, 0x94, 0xd4, 0xc6, 0xd0, 0x93, 0xd4, 0xc6, 0xd0, 0x94, 0xd4, 0xc6, - 0xd0, 0x93, 0xd4, 0xc6, 0xd0, 0x94, 0xd4, 0xc6, 0xd1, 0x93, 0xd4, 0xc6, - 0xd1, 0x94, 0xd4, 0xc6, 0xd1, 0x93, 0xd4, 0xc6, 0xd2, 0x94, 0xd4, 0xc6, - 0xd2, 0x93, 0xd4, 0xc6, 0xd2, 0x93, 0xd4, 0xc6, 0xd2, 0x93, 0xd4, 0xc6, - 0xd3, 0x93, 0xd4, 0xc6, 0xd3, 0x93, 0xd4, 0xc6, 0xd3, 0x93, 0xd4, 0xc6, - 0xd4, 0x93, 0xd4, 0xc6, 0xd4, 0x93, 0xd4, 0xc6, 0xd4, 0x93, 0xd4, 0xc6, - 0xd4, 0x93, 0xd5, 0xc6, 0xd5, 0x93, 0xd5, 0xc6, 0xd5, 0x93, 0xd5, 0xc6, - 0xd5, 0x93, 0xd6, 0xc6, 0xd6, 0x93, 0xd6, 0xc6, 0xd6, 0x93, 0xd6, 0xc6, - 0xd6, 0x93, 0xd6, 0xc6, 0xd6, 0x93, 0xd6, 0xc6, 0xd7, 0x93, 0xd6, 0xc6, - 0xd7, 0x93, 0xd6, 0xc6, 0xd7, 0x93, 0xd7, 0xc6, 0xd7, 0x94, 0xd8, 0xc6, - 0xd8, 0x94, 0xd8, 0xc6, 0xd8, 0x94, 0xd8, 0xc6, 0xd8, 0x94, 0xd9, 0xc6, - 0xd9, 0x94, 0xd9, 0xc6, 0xd9, 0x94, 0xd9, 0xc6, 0xd9, 0x94, 0xd9, 0xc6, - 0xd9, 0x94, 0xd9, 0xc6, 0xda, 0x94, 0xd9, 0xc6, 0xda, 0x94, 0xd9, 0xc6, - 0xda, 0x94, 0xda, 0xc6, 0xda, 0x95, 0xdb, 0xc6, 0xdb, 0x95, 0xdb, 0xc6, - 0xdb, 0x95, 0xdb, 0xc6, 0xdb, 0x95, 0xdb, 0xc6, 0xdb, 0x95, 0xdc, 0xc6, - 0xdc, 0x95, 0xdc, 0xc6, 0xdc, 0x95, 0xdc, 0xc6, 0xdc, 0x95, 0xdc, 0xc6, - 0xdd, 0x95, 0xdc, 0xc6, 0xdd, 0x95, 0xdc, 0xc6, 0xdd, 0x95, 0xdc, 0xc6, - 0xdd, 0x95, 0xdc, 0xc6, 0xde, 0x95, 0xde, 0xc6, 0xde, 0x96, 0xde, 0xc6, - 0xde, 0x96, 0xde, 0xc6, 0xde, 0x96, 0xdf, 0xc6, 0xdf, 0x96, 0xdf, 0xc6, - 0xdf, 0x96, 0xdf, 0xc6, 0xdf, 0x96, 0xdf, 0xc6, 0xdf, 0x96, 0xdf, 0xc6, - 0xe0, 0x96, 0xdf, 0xc6, 0xe0, 0x96, 0xdf, 0xc6, 0xe0, 0x96, 0xdf, 0xc6, - 0xe1, 0x96, 0xe1, 0xc6, 0xe1, 0x97, 0xe1, 0xc6, 0xe1, 0x97, 0xe1, 0xc6, - 0xe1, 0x97, 0xe2, 0xc6, 0xe2, 0x97, 0xe2, 0xc6, 0xe2, 0x97, 0xe2, 0xc6, - 0xe2, 0x97, 0xe2, 0xc6, 0xe2, 0x97, 0xe2, 0xc6, 0xe3, 0x97, 0xe2, 0xc6, - 0xe3, 0x97, 0xe2, 0xc6, 0xe3, 0x97, 0xe2, 0xc6, 0xe3, 0x97, 0xe4, 0xc6, - 0xe4, 0x98, 0xe4, 0xc6, 0xe4, 0x98, 0xe4, 0xc6, 0xe4, 0x98, 0xe4, 0xc6, - 0xe4, 0x98, 0xe5, 0xc6, 0xe5, 0x98, 0xe4, 0xc6, 0xe5, 0x98, 0xe5, 0xc6, - 0xe5, 0x98, 0xe4, 0xc6, 0xe5, 0x98, 0xe5, 0xc6, 0xe6, 0x98, 0xe4, 0xc6, - 0xe6, 0x98, 0xea, 0xc6, 0xe6, 0x8c, 0xea, 0xc6, 0xe6, 0x8c, 0xea, 0xc6, - 0xe7, 0x8c, 0xea, 0xc6, 0xe7, 0x8c, 0xea, 0xc6, 0xe7, 0x8c, 0xea, 0xc6, - 0xe7, 0x8c, 0xea, 0xc6, 0xe8, 0x8c, 0xea, 0xc6, 0xe8, 0x8c, 0xea, 0xc6, - 0xe8, 0x8c, 0xea, 0xc6, 0xe8, 0x8c, 0xea, 0xc6, 0xe9, 0x8c, 0xea, 0xc6, - 0xe9, 0x8c, 0xea, 0xc6, 0xe9, 0x8c, 0xea, 0xc6, 0xe9, 0x8c, 0xea, 0xc6, - 0xea, 0x8c, 0xea, 0xc6, 0xea, 0x8c, 0xea, 0xc6, 0xea, 0x8c, 0xea, 0xc6, - 0xea, 0x8c, 0xeb, 0xc6, 0xeb, 0x8c, 0xec, 0xc6, 0xeb, 0x8d, 0xec, 0xc6, - 0xeb, 0x8d, 0xec, 0xc6, 0xeb, 0x8d, 0xec, 0xc6, 0xec, 0x8d, 0xec, 0xc6, - 0xec, 0x8d, 0xec, 0xc6, 0xec, 0x8d, 0xec, 0xc6, 0xec, 0x8d, 0xec, 0xc6, - 0xec, 0x8d, 0xed, 0xc6, 0xed, 0x8d, 0xed, 0xc6, 0xed, 0x8d, 0xed, 0xc6, - 0xed, 0x8d, 0xee, 0xc6, 0xed, 0x92, 0xef, 0xc6, 0xee, 0x90, 0xef, 0xc6, - 0xee, 0x90, 0xef, 0xc6, 0xee, 0x90, 0xef, 0xc6, 0xee, 0x90, 0xef, 0xc6, - 0xef, 0x90, 0xef, 0xc6, 0xef, 0x90, 0xef, 0xc6, 0xef, 0x90, 0xef, 0xc6, - 0xef, 0x90, 0xf0, 0xc6, 0xf0, 0x90, 0xf0, 0xc6, 0xf0, 0x90, 0xf0, 0xc6, - 0xf0, 0x90, 0xf0, 0xc6, 0xf0, 0x90, 0xf1, 0xc6, 0xf1, 0x90, 0xf1, 0xc6, - 0xf1, 0x90, 0xf1, 0xc6, 0xf1, 0x90, 0xf1, 0xc6, 0xf1, 0x90, 0xf1, 0xc6, - 0xf2, 0x90, 0xf1, 0xc6, 0xf2, 0x90, 0xf2, 0xc6, 0xf2, 0x91, 0xf2, 0xc6, - 0xf2, 0x91, 0xf2, 0xc6, 0xf2, 0x91, 0xf3, 0xc6, 0xf3, 0x91, 0xf3, 0xc6, - 0xf3, 0x91, 0xf3, 0xc6, 0xf3, 0x8f, 0xf3, 0xc6, 0xf3, 0x8f, 0xf4, 0xc6, - 0xf4, 0x8f, 0xf4, 0xc6, 0xf4, 0x8f, 0xf4, 0xc6, 0xf4, 0x8f, 0xf4, 0xc6, - 0xf4, 0x91, 0xf4, 0xc6, 0xf5, 0x8f, 0xf4, 0xc6, 0xf5, 0x91, 0xf5, 0xc6, - 0xf5, 0x92, 0xf5, 0xc6, 0xf5, 0x92, 0xf5, 0xc6, 0xf5, 0x92, 0xf6, 0xc6, - 0xf6, 0x92, 0xf6, 0xc6, 0xf6, 0x92, 0xf6, 0xc6, 0xf6, 0x92, 0xf6, 0xc6, - 0xf6, 0x92, 0xf7, 0xc6, 0xf7, 0x92, 0xf8, 0xc6, 0xf7, 0x90, 0xf8, 0xc6, - 0xf7, 0x91, 0xf8, 0xc6, 0xf7, 0x90, 0xf8, 0xc6, 0xf8, 0x90, 0xf8, 0xc6, - 0xf7, 0x90, 0xf8, 0xc6, 0xf8, 0x90, 0xf8, 0xc6, 0xf7, 0x90, 0xf8, 0xc6, - 0xf8, 0x90, 0xf9, 0xc6, 0xf7, 0x90, 0xf9, 0xc6, 0xf8, 0x90, 0xf9, 0xc6, - 0xf7, 0x90, 0xf9, 0xc6, 0xf8, 0x90, 0xfa, 0xc4, 0xf8, 0x90, 0xfa, 0xc6, - 0xf8, 0x90, 0xfa, 0xc4, 0xf8, 0x90, 0xfa, 0xc6, 0xf8, 0x90, 0xfa, 0xc4, - 0xf8, 0x90, 0xfb, 0xc6, 0xf8, 0x90, 0xfb, 0xc4, 0xf8, 0x90, 0xfb, 0xc6, - 0xf8, 0x90, 0xfb, 0xc4, 0xf8, 0x90, 0xfc, 0xc6, 0xf8, 0x90, 0xfc, 0xc4, - 0xf8, 0x90, 0xfc, 0xc4, 0xf8, 0x90, 0xfc, 0xc4, 0xf8, 0x90, 0xfc, 0xc4, - 0xf8, 0x90, 0xfd, 0xc4, 0xf8, 0x90, 0xfd, 0xc4, 0xf8, 0x90, 0xfd, 0xc4, - 0xf8, 0x90, 0xfd, 0xc4, 0xf8, 0x90, 0xfe, 0xc4, 0xf8, 0x90, 0xfe, 0xc4, - 0xf8, 0x90, 0xfe, 0xc4, 0xf8, 0x90, 0xfe, 0xc4, 0xf8, 0x90, 0xfe, 0xc4, - 0xf8, 0x90, 0xff, 0xc4, 0xf8, 0x90, 0xff, 0xc4, 0xf8, 0x90, 0x03, 0xcd, - 0x8e, 0x91, 0x0a, 0xcf, 0x8e, 0x91, 0x0f, 0xcd, 0x8e, 0x91, 0x14, 0xcf, - 0x8e, 0x91, 0x17, 0xcd, 0x8e, 0x91, 0x1b, 0xcf, 0x8e, 0x91, 0x1e, 0xcd, - 0x8e, 0x91, 0x20, 0xcb, 0x8e, 0x91, 0x23, 0xcd, 0x8e, 0x91, 0x25, 0xcb, - 0x8e, 0x91, 0x27, 0xcd, 0x8e, 0x91, 0x29, 0xcb, 0x8e, 0x91, 0x2b, 0xcd, - 0x8e, 0x91, 0x2d, 0xcb, 0x8e, 0x91, 0x2f, 0xcd, 0x8e, 0x91, 0x31, 0xcb, - 0x8e, 0x91, 0x32, 0xcd, 0x8e, 0x91, 0x34, 0xcb, 0x8e, 0x91, 0x35, 0xcd, - 0x8e, 0x91, 0x37, 0xcb, 0x8e, 0x91, 0x38, 0xcd, 0x8e, 0x91, 0x3a, 0xcb, - 0x8e, 0x91, 0x3b, 0xcd, 0x8e, 0x91, 0x3c, 0xcb, 0x8e, 0x91, 0x3e, 0xcd, - 0x8e, 0x91, 0x3f, 0xcb, 0x8e, 0x91, 0x40, 0xcd, 0x8e, 0x91, 0x42, 0xcb, - 0x8e, 0x91, 0x43, 0xcd, 0x8e, 0x91, 0x44, 0xcb, 0x8e, 0x91, 0x45, 0xcd, - 0x8e, 0x91, 0x46, 0xcb, 0x8e, 0x91, 0x47, 0xcd, 0x8e, 0x91, 0x48, 0xcb, - 0x8e, 0x91, 0x49, 0xcd, 0x8e, 0x91, 0x4a, 0xcb, 0x8e, 0x91, 0x4b, 0xc9, - 0x8f, 0x91, 0x4c, 0xcb, 0x8e, 0x91, 0x4d, 0xc9, 0x8f, 0x91, 0x4e, 0xcb, - 0x8e, 0x91, 0x4f, 0xc9, 0x8f, 0x91, 0x50, 0xcb, 0x8e, 0x91, 0x51, 0xc9, - 0x8f, 0x91, 0x52, 0xcb, 0x8e, 0x91, 0x53, 0xc9, 0x8f, 0x91, 0x54, 0xcb, - 0x8e, 0x91, 0x55, 0xc9, 0x8f, 0x91, 0x56, 0xcb, 0x8e, 0x91, 0x57, 0xc9, - 0x8f, 0x91, 0x58, 0xcb, 0x8e, 0x91, 0x58, 0xc9, 0x8f, 0x91, 0x59, 0xcb, - 0x8e, 0x91, 0x5a, 0xc9, 0x8f, 0x91, 0x5b, 0xcb, 0x8e, 0x91, 0x5c, 0xc9, - 0x8f, 0x91, 0x5d, 0xcb, 0x8e, 0x91, 0x5d, 0xc9, 0x8f, 0x91, 0x5e, 0xcb, - 0x8e, 0x91, 0x5f, 0xc9, 0x8f, 0x91, 0x60, 0xcb, 0x8e, 0x91, 0x60, 0xc9, - 0x8f, 0x91, 0x61, 0xcb, 0x8e, 0x91, 0x62, 0xc9, 0x8f, 0x91, 0x63, 0xcb, - 0x8e, 0x91, 0x63, 0xc9, 0x8f, 0x91, 0x64, 0xcb, 0x8e, 0x91, 0x65, 0xc9, - 0x8f, 0x91, 0x66, 0xcb, 0x8e, 0x91, 0x66, 0xc9, 0x8f, 0x91, 0x67, 0xcb, - 0x8e, 0x91, 0x68, 0xc9, 0x8f, 0x91, 0x68, 0xcb, 0x8e, 0x91, 0x69, 0xc9, - 0x8f, 0x91, 0x6a, 0xcb, 0x8e, 0x91, 0x6a, 0xc9, 0x8f, 0x91, 0x6b, 0xcb, - 0x8e, 0x91, 0x6c, 0xc9, 0x8f, 0x91, 0x6c, 0xc7, 0x8f, 0x91, 0x6d, 0xc9, - 0x8f, 0x91, 0x6e, 0xc7, 0x8f, 0x91, 0x6e, 0xc9, 0x8f, 0x91, 0x6f, 0xc7, - 0x8f, 0x91, 0x70, 0xc9, 0x8f, 0x91, 0x70, 0xc7, 0x8f, 0x91, 0x71, 0xc9, - 0x8f, 0x91, 0x72, 0xc7, 0x8f, 0x91, 0x72, 0xc9, 0x8f, 0x91, 0x73, 0xc7, - 0x8f, 0x91, 0x73, 0xc9, 0x8f, 0x91, 0x74, 0xc7, 0x8f, 0x91, 0x75, 0xc9, - 0x8f, 0x91, 0x75, 0xc7, 0x8f, 0x91, 0x76, 0xc9, 0x8f, 0x91, 0x76, 0xc7, - 0x8f, 0x91, 0x77, 0xc9, 0x8f, 0x91, 0x78, 0xc7, 0x8f, 0x91, 0x78, 0xc9, - 0x8f, 0x91, 0x79, 0xc7, 0x8f, 0x91, 0x79, 0xc9, 0x8f, 0x91, 0x7a, 0xc7, - 0x8f, 0x91, 0x7a, 0xc9, 0x8f, 0x91, 0x7b, 0xc7, 0x8f, 0x91, 0x7c, 0xc9, - 0x8f, 0x91, 0x7c, 0xc7, 0x8f, 0x91, 0x7d, 0xc9, 0x8f, 0x91, 0x7d, 0xc7, - 0x8f, 0x91, 0x7e, 0xc9, 0x8f, 0x91, 0x7e, 0xc7, 0x8f, 0x91, 0x7f, 0xc9, - 0x8f, 0x91, 0x7f, 0xc7, 0x8f, 0x91, 0x80, 0xc9, 0x8f, 0x91, 0x81, 0xc7, - 0x8f, 0x91, 0x81, 0xc9, 0x8f, 0x91, 0x82, 0xc7, 0x8f, 0x91, 0x82, 0xc9, - 0x8f, 0x91, 0x83, 0xc7, 0x8f, 0x91, 0x83, 0xc9, 0x8f, 0x91, 0x84, 0xc7, - 0x8f, 0x91, 0x84, 0xc9, 0x8f, 0x91, 0x85, 0xc7, 0x8f, 0x91, 0x85, 0xc9, - 0x8f, 0x91, 0x86, 0xc7, 0x8f, 0x91, 0x86, 0xc9, 0x8f, 0x91, 0x87, 0xc7, - 0x8f, 0x91, 0x87, 0xc9, 0x8f, 0x91, 0x88, 0xc7, 0x8f, 0x91, 0x88, 0xc6, - 0x90, 0x91, 0x89, 0xc7, 0x8f, 0x91, 0x89, 0xc6, 0x90, 0x91, 0x8a, 0xc7, - 0x8f, 0x91, 0x8a, 0xc6, 0x90, 0x91, 0x8b, 0xc7, 0x8f, 0x91, 0x8b, 0xc6, - 0x90, 0x91, 0x8c, 0xc7, 0x8f, 0x91, 0x8c, 0xc6, 0x90, 0x91, 0x8d, 0xc7, - 0x8f, 0x91, 0x8d, 0xc6, 0x90, 0x91, 0x8e, 0xc7, 0x8f, 0x91, 0x8e, 0xc6, - 0x90, 0x91, 0x8e, 0xc7, 0x8f, 0x91, 0x8f, 0xc6, 0x90, 0x91, 0x8f, 0xc7, - 0x8f, 0x91, 0x8f, 0xc6, 0x90, 0x91, 0x8f, 0xc6, 0x90, 0x91, 0x8f, 0xc6, - 0x91, 0x91, 0x8f, 0xc6, 0x91, 0x91, 0x93, 0xc6, 0x92, 0x92, 0x93, 0xc6, - 0x92, 0x91, 0x94, 0xc6, 0x93, 0x91, 0x93, 0xc6, 0x92, 0x91, 0x94, 0xc6, - 0x93, 0x91, 0x94, 0xc6, 0x92, 0x91, 0x94, 0xc6, 0x93, 0x91, 0x95, 0xc6, - 0x92, 0x91, 0x95, 0xc6, 0x93, 0x91, 0x96, 0xc6, 0x92, 0x91, 0x96, 0xc6, - 0x93, 0x91, 0x97, 0xc9, 0x95, 0x91, 0x97, 0xc6, 0x93, 0x91, 0x98, 0xc9, - 0x98, 0x91, 0x98, 0xc9, 0x98, 0x91, 0x98, 0xc9, 0x98, 0x91, 0x99, 0xc9, - 0x99, 0x91, 0x99, 0xc9, 0x99, 0x91, 0x9a, 0xc9, 0x9a, 0x91, 0x9a, 0xc9, - 0x99, 0x91, 0x9a, 0xc9, 0x9a, 0x91, 0x9b, 0xc9, 0x99, 0x91, 0x9b, 0xc9, - 0x9a, 0x91, 0x9c, 0xc9, 0x99, 0x91, 0x9c, 0xc9, 0x9a, 0x91, 0x9d, 0xca, - 0x9d, 0x91, 0x9d, 0xca, 0x9d, 0x91, 0x9d, 0xca, 0x9d, 0x91, 0x9e, 0xca, - 0x9e, 0x91, 0x9e, 0xca, 0x9e, 0x91, 0x9f, 0xca, 0x9e, 0x91, 0x9f, 0xca, - 0x9e, 0x91, 0x9f, 0xca, 0x9e, 0x91, 0xa0, 0xc6, 0xa5, 0x91, 0xa0, 0xc8, - 0xa4, 0x91, 0xa1, 0xc6, 0xa5, 0x91, 0xa1, 0xc8, 0xa4, 0x91, 0xa1, 0xc6, - 0xa5, 0x91, 0xa2, 0xc8, 0xa4, 0x91, 0xa2, 0xc6, 0xa5, 0x91, 0xa3, 0xc8, - 0xa4, 0x91, 0xa3, 0xc6, 0xa5, 0x91, 0xa3, 0xc6, 0xa5, 0x91, 0xa4, 0xc6, - 0xa5, 0x91, 0xa4, 0xc6, 0xa5, 0x91, 0xa4, 0xc6, 0xa5, 0x91, 0xa4, 0xc6, - 0xa5, 0x91, 0xa4, 0xc6, 0xa5, 0x91, 0xa4, 0xc6, 0xa6, 0x91, 0xa5, 0xc6, - 0xa6, 0x8f, 0xa4, 0xc6, 0xa6, 0x91, 0xa5, 0xc6, 0xa7, 0x8f, 0xa4, 0xc6, - 0xa7, 0x91, 0xa5, 0xc6, 0xa8, 0x8f, 0xa4, 0xc6, 0xa8, 0x91, 0xa5, 0xc6, - 0xa8, 0x8f, 0xa4, 0xc6, 0xa9, 0x91, 0xa5, 0xc6, 0xa9, 0x8f, 0xa4, 0xc6, - 0xaa, 0x91, 0xa5, 0xc6, 0xaa, 0x8f, 0xa4, 0xc6, 0xaa, 0x91, 0xa5, 0xc6, - 0xab, 0x8f, 0xa5, 0xc6, 0xab, 0x8d, 0xa5, 0xc6, 0xab, 0x8f, 0xa5, 0xc6, - 0xac, 0x8d, 0xa5, 0xc6, 0xac, 0x8f, 0xa5, 0xc6, 0xac, 0x8d, 0xa5, 0xc6, - 0xad, 0x8f, 0xa5, 0xc6, 0xad, 0x8d, 0xa5, 0xc6, 0xae, 0x8f, 0xa5, 0xc6, - 0xae, 0x8d, 0xa5, 0xc6, 0xae, 0x8f, 0xa5, 0xc6, 0xaf, 0x8d, 0xa5, 0xc6, - 0xaf, 0x8f, 0xa5, 0xc6, 0xaf, 0x8d, 0xa5, 0xc6, 0xb0, 0x8f, 0xa5, 0xc6, - 0xb0, 0x8d, 0xa5, 0xc6, 0xb0, 0x8f, 0xa5, 0xc6, 0xb1, 0x8d, 0xa5, 0xc6, - 0xb1, 0x8f, 0xa5, 0xc6, 0xb2, 0x8d, 0xa5, 0xc6, 0xb2, 0x8f, 0xa5, 0xc6, - 0xb2, 0x8d, 0xa5, 0xc6, 0xb3, 0x8f, 0xa5, 0xc6, 0xb3, 0x8d, 0xa5, 0xc6, - 0xb3, 0x8f, 0xa5, 0xc6, 0xb4, 0x8d, 0xa5, 0xc6, 0xb4, 0x8f, 0xa5, 0xc6, - 0xb4, 0x8d, 0xa5, 0xc6, 0xb5, 0x8f, 0xa5, 0xc6, 0xb5, 0x8d, 0xa5, 0xc6, - 0xb5, 0x8a, 0xa5, 0xc6, 0xb6, 0x8d, 0xa5, 0xc6, 0xb6, 0x8a, 0xa5, 0xc6, - 0xb6, 0x8d, 0xa5, 0xc6, 0xb7, 0x8a, 0xa5, 0xc6, 0xb7, 0x8d, 0xa5, 0xc6, - 0xb7, 0x8a, 0xa5, 0xc6, 0xb8, 0x8d, 0xa5, 0xc6, 0xb8, 0x8a, 0xa5, 0xc6, - 0xb8, 0x8d, 0xa5, 0xc6, 0xb9, 0x8a, 0xa5, 0xc6, 0xb9, 0x8d, 0xa5, 0xc6, - 0xb9, 0x8a, 0xa5, 0xc6, 0xba, 0x8d, 0xa5, 0xc6, 0xba, 0x8a, 0xbf, 0xc6, - 0xba, 0x74, 0xbf, 0xc6, 0xbb, 0x74, 0xbf, 0xc6, 0xbb, 0x74, 0xbf, 0xc6, - 0xbb, 0x74, 0xbf, 0xc6, 0xbc, 0x74, 0xbf, 0xc6, 0xbc, 0x74, 0xbf, 0xc6, - 0xbc, 0x74, 0xbf, 0xc6, 0xbd, 0x74, 0xbf, 0xc6, 0xbd, 0x74, 0xc2, 0xc6, - 0xbd, 0x75, 0xbf, 0xc6, 0xbe, 0x74, 0xc2, 0xc6, 0xbe, 0x75, 0xc3, 0xc6, - 0xbe, 0x75, 0xc2, 0xc6, 0xbf, 0x75, 0xc3, 0xc6, 0xbf, 0x75, 0xc2, 0xc6, - 0xbf, 0x75, 0xc3, 0xc6, 0xc0, 0x75, 0xc2, 0xc6, 0xc0, 0x75, 0xc3, 0xc6, - 0xc0, 0x75, 0xc2, 0xc6, 0xc1, 0x75, 0xc3, 0xc6, 0xc1, 0x75, 0xc2, 0xc6, - 0xc1, 0x75, 0xc3, 0xc6, 0xc1, 0x75, 0xc6, 0xc6, 0xc2, 0x76, 0xc6, 0xc6, - 0xc2, 0x76, 0xc6, 0xc6, 0xc2, 0x76, 0xc6, 0xc6, 0xc3, 0x76, 0xc6, 0xc6, - 0xc3, 0x76, 0xc6, 0xc6, 0xc3, 0x76, 0xc6, 0xc6, 0xc4, 0x76, 0xc6, 0xc6, - 0xc4, 0x76, 0xd4, 0xc6, 0xc4, 0x97, 0xd4, 0xc6, 0xc5, 0x95, 0xd4, 0xc6, - 0xc5, 0x97, 0xd4, 0xc6, 0xc5, 0x95, 0xd4, 0xc6, 0xc6, 0x97, 0xd4, 0xc6, - 0xc6, 0x95, 0xd4, 0xc6, 0xc6, 0x97, 0xd4, 0xc6, 0xc6, 0x95, 0xd4, 0xc6, - 0xc7, 0x97, 0xd4, 0xc6, 0xc7, 0x95, 0xd4, 0xc6, 0xc7, 0x97, 0xd4, 0xc6, - 0xc8, 0x95, 0xd4, 0xc6, 0xc8, 0x97, 0xd4, 0xc6, 0xc8, 0x95, 0xd4, 0xc6, - 0xc9, 0x97, 0xd4, 0xc6, 0xc9, 0x95, 0xd4, 0xc6, 0xc9, 0x97, 0xd4, 0xc6, - 0xc9, 0x95, 0xd4, 0xc6, 0xca, 0x97, 0xd4, 0xc6, 0xca, 0x95, 0xd4, 0xc6, - 0xca, 0x97, 0xd4, 0xc6, 0xcb, 0x95, 0xd4, 0xc6, 0xcb, 0x93, 0xd4, 0xc6, - 0xcb, 0x95, 0xd4, 0xc6, 0xcc, 0x93, 0xd4, 0xc6, 0xcc, 0x95, 0xd4, 0xc6, - 0xcc, 0x93, 0xd4, 0xc6, 0xcc, 0x95, 0xd4, 0xc6, 0xcd, 0x93, 0xd4, 0xc6, - 0xcd, 0x95, 0xd4, 0xc6, 0xcd, 0x93, 0xd4, 0xc6, 0xce, 0x95, 0xd4, 0xc6, - 0xce, 0x93, 0xd4, 0xc6, 0xce, 0x95, 0xd4, 0xc6, 0xce, 0x93, 0xd4, 0xc6, - 0xcf, 0x95, 0xd4, 0xc6, 0xcf, 0x93, 0xd4, 0xc6, 0xcf, 0x95, 0xd4, 0xc6, - 0xd0, 0x93, 0xd4, 0xc6, 0xd0, 0x95, 0xd4, 0xc6, 0xd0, 0x93, 0xd4, 0xc6, - 0xd0, 0x95, 0xd4, 0xc6, 0xd1, 0x93, 0xd4, 0xc6, 0xd1, 0x93, 0xd4, 0xc6, - 0xd1, 0x93, 0xd4, 0xc6, 0xd2, 0x93, 0xd4, 0xc6, 0xd2, 0x93, 0xd4, 0xc6, - 0xd2, 0x93, 0xd4, 0xc6, 0xd2, 0x93, 0xd4, 0xc6, 0xd3, 0x93, 0xd4, 0xc6, - 0xd3, 0x93, 0xd4, 0xc6, 0xd3, 0x93, 0xd4, 0xc6, 0xd4, 0x93, 0xd4, 0xc6, - 0xd4, 0x93, 0xd4, 0xc6, 0xd4, 0x93, 0xd4, 0xc6, 0xd4, 0x93, 0xd5, 0xc6, - 0xd5, 0x93, 0xd4, 0xc6, 0xd5, 0x93, 0xd5, 0xc6, 0xd5, 0x93, 0xd4, 0xc6, - 0xd6, 0x93, 0xd5, 0xc6, 0xd6, 0x93, 0xd6, 0xc6, 0xd6, 0x94, 0xd6, 0xc6, - 0xd6, 0x94, 0xd7, 0xc6, 0xd7, 0x94, 0xd7, 0xc6, 0xd7, 0x94, 0xd7, 0xc6, - 0xd7, 0x94, 0xd7, 0xc6, 0xd7, 0x94, 0xd8, 0xc6, 0xd8, 0x94, 0xd7, 0xc6, - 0xd8, 0x94, 0xd8, 0xc6, 0xd8, 0x94, 0xd7, 0xc6, 0xd9, 0x94, 0xd8, 0xc6, - 0xd9, 0x94, 0xd9, 0xc6, 0xd9, 0x95, 0xd9, 0xc6, 0xd9, 0x95, 0xda, 0xc6, - 0xda, 0x95, 0xda, 0xc6, 0xda, 0x95, 0xda, 0xc6, 0xda, 0x95, 0xda, 0xc6, - 0xda, 0x95, 0xdb, 0xc6, 0xdb, 0x95, 0xda, 0xc6, 0xdb, 0x95, 0xdb, 0xc6, - 0xdb, 0x95, 0xda, 0xc6, 0xdb, 0x95, 0xdb, 0xc6, 0xdc, 0x95, 0xdc, 0xc6, - 0xdc, 0x96, 0xdc, 0xc6, 0xdc, 0x96, 0xdd, 0xc6, 0xdd, 0x96, 0xdd, 0xc6, - 0xdd, 0x96, 0xdd, 0xc6, 0xdd, 0x96, 0xdd, 0xc6, 0xdd, 0x96, 0xde, 0xc6, - 0xde, 0x96, 0xdd, 0xc6, 0xde, 0x96, 0xde, 0xc6, 0xde, 0x96, 0xdd, 0xc6, - 0xde, 0x96, 0xde, 0xc6, 0xdf, 0x96, 0xdd, 0xc6, 0xdf, 0x96, 0xde, 0xc6, - 0xdf, 0x96, 0xdf, 0xc6, 0xdf, 0x97, 0xe0, 0xc6, 0xe0, 0x97, 0xe0, 0xc6, - 0xe0, 0x97, 0xe0, 0xc6, 0xe0, 0x97, 0xe1, 0xc6, 0xe1, 0x97, 0xe0, 0xc6, - 0xe1, 0x97, 0xe1, 0xc6, 0xe1, 0x97, 0xe0, 0xc6, 0xe1, 0x97, 0xe1, 0xc6, - 0xe2, 0x97, 0xe0, 0xc6, 0xe2, 0x97, 0xe1, 0xc6, 0xe2, 0x97, 0xe2, 0xc6, - 0xe2, 0x98, 0xe3, 0xc6, 0xe3, 0x98, 0xe3, 0xc6, 0xe3, 0x98, 0xe3, 0xc6, - 0xe3, 0x98, 0xe3, 0xc6, 0xe3, 0x98, 0xe3, 0xc6, 0xe4, 0x98, 0xe3, 0xc6, - 0xe4, 0x98, 0xe3, 0xc6, 0xe4, 0x98, 0xe3, 0xc6, 0xe4, 0x98, 0xe3, 0xc6, - 0xe5, 0x98, 0xe3, 0xc6, 0xe5, 0x98, 0xe5, 0xc6, 0xe5, 0x99, 0xe5, 0xc6, - 0xe5, 0x99, 0xe6, 0xc6, 0xe6, 0x99, 0xe6, 0xc6, 0xe6, 0x99, 0xe6, 0xc6, - 0xe6, 0x99, 0xe6, 0xc6, 0xe6, 0x99, 0xea, 0xc6, 0xe7, 0x8c, 0xea, 0xc6, - 0xe7, 0x8d, 0xea, 0xc6, 0xe7, 0x8c, 0xea, 0xc6, 0xe7, 0x8d, 0xea, 0xc6, - 0xe8, 0x8c, 0xea, 0xc6, 0xe8, 0x8d, 0xea, 0xc6, 0xe8, 0x8d, 0xea, 0xc6, - 0xe8, 0x8d, 0xea, 0xc6, 0xe9, 0x8d, 0xea, 0xc6, 0xe9, 0x8d, 0xea, 0xc6, - 0xe9, 0x8d, 0xea, 0xc6, 0xe9, 0x8d, 0xea, 0xc6, 0xea, 0x8d, 0xea, 0xc6, - 0xea, 0x8d, 0xea, 0xc6, 0xea, 0x8d, 0xea, 0xc6, 0xea, 0x8d, 0xeb, 0xc6, - 0xeb, 0x8d, 0xeb, 0xc6, 0xeb, 0x8d, 0xeb, 0xc6, 0xeb, 0x8d, 0xeb, 0xc6, - 0xeb, 0x8d, 0xec, 0xc6, 0xec, 0x8d, 0xec, 0xc6, 0xec, 0x8d, 0xec, 0xc6, - 0xec, 0x8d, 0xec, 0xc6, 0xec, 0x8d, 0xed, 0xc6, 0xec, 0x8e, 0xee, 0xc6, - 0xed, 0x8e, 0xed, 0xc6, 0xed, 0x8e, 0xef, 0xc6, 0xed, 0x91, 0xee, 0xc6, - 0xed, 0x93, 0xef, 0xc6, 0xee, 0x91, 0xef, 0xc6, 0xee, 0x91, 0xef, 0xc6, - 0xee, 0x91, 0xef, 0xc6, 0xee, 0x91, 0xef, 0xc6, 0xee, 0x91, 0xef, 0xc6, - 0xee, 0x91, 0xef, 0xc5, 0xef, 0x91, 0xef, 0xc5, 0xef, 0x91, 0xf0, 0xc6, - 0xf0, 0x91, 0xf0, 0xc6, 0xf0, 0x91, 0xf0, 0xc6, 0xf0, 0x91, 0xf0, 0xc6, - 0xf0, 0x91, 0xf1, 0xc6, 0xf1, 0x91, 0xf1, 0xc6, 0xf1, 0x91, 0xf1, 0xc6, - 0xf1, 0x91, 0xf1, 0xc6, 0xf1, 0x91, 0xf2, 0xc6, 0xf2, 0x91, 0xf2, 0xc6, - 0xf2, 0x91, 0xf2, 0xc6, 0xf2, 0x91, 0xf2, 0xc6, 0xf2, 0x91, 0xf2, 0xc6, - 0xf2, 0x91, 0xf3, 0xc6, 0xf3, 0x91, 0xf3, 0xc6, 0xf3, 0x91, 0xf3, 0xc6, - 0xf3, 0x91, 0xf3, 0xc6, 0xf3, 0x91, 0xf4, 0xc6, 0xf4, 0x92, 0xf4, 0xc6, - 0xf4, 0x92, 0xf4, 0xc6, 0xf4, 0x92, 0xf4, 0xc6, 0xf4, 0x92, 0xf5, 0xc6, - 0xf5, 0x92, 0xf5, 0xc6, 0xf5, 0x92, 0xf5, 0xc6, 0xf5, 0x92, 0xf5, 0xc6, - 0xf5, 0x92, 0xf5, 0xc6, 0xf5, 0x92, 0xf6, 0xc6, 0xf6, 0x92, 0xf5, 0xc6, - 0xf6, 0x92, 0xf6, 0xc6, 0xf6, 0x92, 0xf6, 0xc6, 0xf6, 0x93, 0xf8, 0xc6, - 0xf7, 0x91, 0xf8, 0xc6, 0xf7, 0x91, 0xf8, 0xc6, 0xf7, 0x91, 0xf8, 0xc6, - 0xf7, 0x91, 0xf8, 0xc6, 0xf8, 0x91, 0xf8, 0xc6, 0xf7, 0x91, 0xf8, 0xc6, - 0xf8, 0x91, 0xf8, 0xc6, 0xf7, 0x91, 0xf8, 0xc6, 0xf8, 0x91, 0xf9, 0xc6, - 0xf7, 0x91, 0xf9, 0xc6, 0xf8, 0x91, 0xf9, 0xc6, 0xf7, 0x91, 0xf9, 0xc6, - 0xf8, 0x91, 0xfa, 0xc5, 0xf8, 0x91, 0xfa, 0xc6, 0xf8, 0x91, 0xfa, 0xc5, - 0xf8, 0x91, 0xfa, 0xc6, 0xf8, 0x91, 0xfa, 0xc5, 0xf8, 0x91, 0xfb, 0xc6, - 0xf8, 0x91, 0xfb, 0xc5, 0xf8, 0x91, 0xfb, 0xc6, 0xf8, 0x91, 0xfb, 0xc5, - 0xf8, 0x91, 0xfc, 0xc5, 0xf8, 0x91, 0xfc, 0xc5, 0xf8, 0x91, 0xfc, 0xc5, - 0xf8, 0x91, 0xfc, 0xc5, 0xf8, 0x91, 0xfc, 0xc5, 0xf8, 0x91, 0xfd, 0xc5, - 0xf8, 0x91, 0xfd, 0xc5, 0xf8, 0x91, 0xfd, 0xc5, 0xf8, 0x91, 0xfd, 0xc5, - 0xf8, 0x91, 0xfe, 0xc5, 0xf8, 0x91, 0xfe, 0xc5, 0xf8, 0x91, 0xfe, 0xc5, - 0xf8, 0x91, 0xfe, 0xc5, 0xf8, 0x91, 0xfe, 0xc5, 0xf8, 0x91, 0xff, 0xc5, - 0xf8, 0x91, 0xff, 0xc5, 0xf8, 0x91, 0x03, 0xcd, 0x8e, 0x91, 0x0a, 0xcb, - 0x8e, 0x91, 0x0f, 0xcd, 0x8e, 0x91, 0x14, 0xcb, 0x8e, 0x91, 0x17, 0xcd, - 0x8e, 0x91, 0x1b, 0xcb, 0x8e, 0x91, 0x1e, 0xcd, 0x8e, 0x91, 0x20, 0xcb, - 0x8e, 0x91, 0x23, 0xcd, 0x8e, 0x91, 0x25, 0xcb, 0x8e, 0x91, 0x27, 0xcd, - 0x8e, 0x91, 0x29, 0xcb, 0x8e, 0x91, 0x2b, 0xcd, 0x8e, 0x91, 0x2d, 0xcb, - 0x8e, 0x91, 0x2f, 0xcd, 0x8e, 0x91, 0x31, 0xcb, 0x8e, 0x91, 0x32, 0xcd, - 0x8e, 0x91, 0x34, 0xcb, 0x8e, 0x91, 0x35, 0xcd, 0x8e, 0x91, 0x37, 0xcb, - 0x8e, 0x91, 0x38, 0xcd, 0x8e, 0x91, 0x3a, 0xcb, 0x8e, 0x91, 0x3b, 0xcd, - 0x8e, 0x91, 0x3c, 0xcb, 0x8e, 0x91, 0x3e, 0xcd, 0x8e, 0x91, 0x3f, 0xcb, - 0x8e, 0x91, 0x40, 0xcd, 0x8e, 0x91, 0x42, 0xcb, 0x8e, 0x91, 0x43, 0xcd, - 0x8e, 0x91, 0x44, 0xcb, 0x8e, 0x91, 0x45, 0xcd, 0x8e, 0x91, 0x46, 0xcb, - 0x8e, 0x91, 0x47, 0xcd, 0x8e, 0x91, 0x48, 0xcb, 0x8e, 0x91, 0x49, 0xcd, - 0x8e, 0x91, 0x4a, 0xcb, 0x8e, 0x91, 0x4b, 0xcd, 0x8e, 0x91, 0x4c, 0xcb, - 0x8e, 0x91, 0x4d, 0xcd, 0x8e, 0x91, 0x4e, 0xcb, 0x8e, 0x91, 0x4f, 0xcd, - 0x8e, 0x91, 0x50, 0xcb, 0x8e, 0x91, 0x51, 0xcd, 0x8e, 0x91, 0x52, 0xcb, - 0x8e, 0x91, 0x53, 0xcd, 0x8e, 0x91, 0x54, 0xcb, 0x8e, 0x91, 0x55, 0xcd, - 0x8e, 0x91, 0x56, 0xcb, 0x8e, 0x91, 0x57, 0xcd, 0x8e, 0x91, 0x58, 0xcb, - 0x8e, 0x91, 0x58, 0xcd, 0x8e, 0x91, 0x59, 0xcb, 0x8e, 0x91, 0x5a, 0xcd, - 0x8e, 0x91, 0x5b, 0xcb, 0x8e, 0x91, 0x5c, 0xcd, 0x8e, 0x91, 0x5d, 0xcb, - 0x8e, 0x91, 0x5d, 0xc9, 0x8f, 0x91, 0x5e, 0xcb, 0x8e, 0x91, 0x5f, 0xc9, - 0x8f, 0x91, 0x60, 0xcb, 0x8e, 0x91, 0x60, 0xc9, 0x8f, 0x91, 0x61, 0xcb, - 0x8e, 0x91, 0x62, 0xc9, 0x8f, 0x91, 0x63, 0xcb, 0x8e, 0x91, 0x63, 0xc9, - 0x8f, 0x91, 0x64, 0xcb, 0x8e, 0x91, 0x65, 0xc9, 0x8f, 0x91, 0x66, 0xcb, - 0x8e, 0x91, 0x66, 0xc9, 0x8f, 0x91, 0x67, 0xcb, 0x8e, 0x91, 0x68, 0xc9, - 0x8f, 0x91, 0x68, 0xcb, 0x8e, 0x91, 0x69, 0xc9, 0x8f, 0x91, 0x6a, 0xcb, - 0x8e, 0x91, 0x6a, 0xc9, 0x8f, 0x91, 0x6b, 0xcb, 0x8e, 0x91, 0x6c, 0xc9, - 0x8f, 0x91, 0x6c, 0xcb, 0x8e, 0x91, 0x6d, 0xc9, 0x8f, 0x91, 0x6e, 0xcb, - 0x8e, 0x91, 0x6e, 0xc9, 0x8f, 0x91, 0x6f, 0xcb, 0x8e, 0x91, 0x70, 0xc9, - 0x8f, 0x91, 0x70, 0xcb, 0x8e, 0x91, 0x71, 0xc9, 0x8f, 0x91, 0x72, 0xcb, - 0x8e, 0x91, 0x72, 0xc9, 0x8f, 0x91, 0x73, 0xcb, 0x8e, 0x91, 0x73, 0xc9, - 0x8f, 0x91, 0x74, 0xcb, 0x8e, 0x91, 0x75, 0xc9, 0x8f, 0x91, 0x75, 0xcb, - 0x8e, 0x91, 0x76, 0xc9, 0x8f, 0x91, 0x76, 0xc7, 0x8f, 0x91, 0x77, 0xc9, - 0x8f, 0x91, 0x78, 0xc7, 0x8f, 0x91, 0x78, 0xc9, 0x8f, 0x91, 0x79, 0xc7, - 0x8f, 0x91, 0x79, 0xc9, 0x8f, 0x91, 0x7a, 0xc7, 0x8f, 0x91, 0x7a, 0xc9, - 0x8f, 0x91, 0x7b, 0xc7, 0x8f, 0x91, 0x7c, 0xc9, 0x8f, 0x91, 0x7c, 0xc7, - 0x8f, 0x91, 0x7d, 0xc9, 0x8f, 0x91, 0x7d, 0xc7, 0x8f, 0x91, 0x7e, 0xc9, - 0x8f, 0x91, 0x7e, 0xc7, 0x8f, 0x91, 0x7f, 0xc9, 0x8f, 0x91, 0x7f, 0xc7, - 0x8f, 0x91, 0x80, 0xc9, 0x8f, 0x91, 0x81, 0xc7, 0x8f, 0x91, 0x81, 0xc9, - 0x8f, 0x91, 0x82, 0xc7, 0x8f, 0x91, 0x82, 0xc9, 0x8f, 0x91, 0x83, 0xc7, - 0x8f, 0x91, 0x83, 0xc9, 0x8f, 0x91, 0x84, 0xc7, 0x8f, 0x91, 0x84, 0xc9, - 0x8f, 0x91, 0x85, 0xc7, 0x8f, 0x91, 0x85, 0xc9, 0x8f, 0x91, 0x86, 0xc7, - 0x8f, 0x91, 0x86, 0xc9, 0x8f, 0x91, 0x87, 0xc7, 0x8f, 0x91, 0x87, 0xc9, - 0x8f, 0x91, 0x88, 0xc7, 0x8f, 0x91, 0x88, 0xc7, 0x90, 0x91, 0x89, 0xc7, - 0x8f, 0x91, 0x89, 0xc7, 0x90, 0x91, 0x8a, 0xc7, 0x8f, 0x91, 0x8a, 0xc7, - 0x90, 0x91, 0x8b, 0xc7, 0x8f, 0x91, 0x8b, 0xc7, 0x90, 0x91, 0x8c, 0xc7, - 0x8f, 0x91, 0x8c, 0xc7, 0x90, 0x91, 0x8d, 0xc7, 0x8f, 0x91, 0x8d, 0xc7, - 0x90, 0x91, 0x8e, 0xc7, 0x8f, 0x91, 0x8e, 0xc7, 0x90, 0x91, 0x8e, 0xc7, - 0x8f, 0x91, 0x8f, 0xc7, 0x90, 0x91, 0x8f, 0xc7, 0x8f, 0x91, 0x8f, 0xc7, - 0x90, 0x91, 0x8f, 0xc7, 0x90, 0x91, 0x8f, 0xc7, 0x91, 0x91, 0x8f, 0xc7, - 0x91, 0x91, 0x93, 0xc7, 0x92, 0x91, 0x93, 0xc7, 0x92, 0x91, 0x93, 0xc6, - 0x93, 0x91, 0x93, 0xc7, 0x92, 0x91, 0x94, 0xc6, 0x93, 0x91, 0x94, 0xc7, - 0x92, 0x91, 0x94, 0xc6, 0x93, 0x91, 0x95, 0xc7, 0x92, 0x91, 0x95, 0xc6, - 0x93, 0x91, 0x96, 0xc9, 0x96, 0x91, 0x96, 0xc9, 0x96, 0x91, 0x97, 0xc9, - 0x97, 0x91, 0x97, 0xc9, 0x97, 0x91, 0x98, 0xc9, 0x97, 0x91, 0x98, 0xc9, - 0x97, 0x91, 0x98, 0xc9, 0x97, 0x91, 0x99, 0xc9, 0x97, 0x91, 0x99, 0xca, - 0x99, 0x91, 0x9a, 0xca, 0x9a, 0x91, 0x9a, 0xca, 0x9a, 0x91, 0x9a, 0xca, - 0x9a, 0x91, 0x9b, 0xca, 0x9b, 0x91, 0x9b, 0xca, 0x9b, 0x91, 0x9c, 0xca, - 0x9c, 0x91, 0x9c, 0xca, 0x9b, 0x91, 0x9d, 0xca, 0x9c, 0x91, 0x9d, 0xca, - 0x9b, 0x91, 0x9d, 0xca, 0x9c, 0x91, 0x9e, 0xca, 0x9b, 0x91, 0x9e, 0xca, - 0x9c, 0x91, 0x9f, 0xca, 0x9f, 0x91, 0x9f, 0xca, 0x9f, 0x91, 0x9f, 0xca, - 0x9f, 0x91, 0xa0, 0xca, 0xa0, 0x91, 0xa0, 0xc8, 0xa4, 0x91, 0xa1, 0xc7, - 0xa5, 0x91, 0xa1, 0xc8, 0xa4, 0x91, 0xa1, 0xc7, 0xa5, 0x91, 0xa2, 0xc8, - 0xa4, 0x91, 0xa2, 0xc7, 0xa5, 0x91, 0xa3, 0xc8, 0xa4, 0x91, 0xa3, 0xc7, - 0xa5, 0x91, 0xa3, 0xc7, 0xa5, 0x91, 0xa4, 0xc7, 0xa5, 0x91, 0xa4, 0xc7, - 0xa5, 0x91, 0xa4, 0xc7, 0xa5, 0x91, 0xa4, 0xc7, 0xa5, 0x91, 0xa4, 0xc7, - 0xa5, 0x91, 0xa4, 0xc7, 0xa6, 0x91, 0xa5, 0xc7, 0xa6, 0x8f, 0xa4, 0xc7, - 0xa6, 0x91, 0xa5, 0xc7, 0xa7, 0x8f, 0xa4, 0xc7, 0xa7, 0x91, 0xa5, 0xc7, - 0xa8, 0x8f, 0xa4, 0xc7, 0xa8, 0x91, 0xa5, 0xc7, 0xa8, 0x8f, 0xa4, 0xc7, - 0xa9, 0x91, 0xa5, 0xc7, 0xa9, 0x8f, 0xa4, 0xc7, 0xaa, 0x91, 0xa5, 0xc7, - 0xaa, 0x8f, 0xa4, 0xc7, 0xaa, 0x91, 0xa5, 0xc7, 0xab, 0x8f, 0xa4, 0xc7, - 0xab, 0x91, 0xa5, 0xc7, 0xab, 0x8f, 0xa4, 0xc7, 0xac, 0x91, 0xa5, 0xc7, - 0xac, 0x8f, 0xa4, 0xc7, 0xac, 0x91, 0xa5, 0xc7, 0xad, 0x8f, 0xa4, 0xc7, - 0xad, 0x91, 0xa5, 0xc7, 0xae, 0x8f, 0xa5, 0xc7, 0xae, 0x8c, 0xa5, 0xc7, - 0xae, 0x8f, 0xa5, 0xc7, 0xaf, 0x8c, 0xa5, 0xc7, 0xaf, 0x8f, 0xa5, 0xc7, - 0xaf, 0x8c, 0xa5, 0xc7, 0xb0, 0x8f, 0xa5, 0xc7, 0xb0, 0x8c, 0xa5, 0xc7, - 0xb0, 0x8f, 0xa5, 0xc7, 0xb1, 0x8c, 0xa5, 0xc7, 0xb1, 0x8f, 0xa5, 0xc7, - 0xb2, 0x8c, 0xa5, 0xc7, 0xb2, 0x8f, 0xa5, 0xc7, 0xb2, 0x8c, 0xa5, 0xc7, - 0xb3, 0x8f, 0xa5, 0xc7, 0xb3, 0x8c, 0xa5, 0xc7, 0xb3, 0x8f, 0xa5, 0xc7, - 0xb4, 0x8c, 0xa5, 0xc7, 0xb4, 0x8f, 0xa5, 0xc7, 0xb4, 0x8c, 0xa5, 0xc7, - 0xb5, 0x8f, 0xa5, 0xc7, 0xb5, 0x8c, 0xa5, 0xc7, 0xb5, 0x8f, 0xa5, 0xc7, - 0xb6, 0x8c, 0xa5, 0xc7, 0xb6, 0x8f, 0xa5, 0xc7, 0xb6, 0x8c, 0xa5, 0xc7, - 0xb7, 0x8f, 0xa5, 0xc7, 0xb7, 0x8c, 0xa5, 0xc7, 0xb7, 0x8f, 0xa5, 0xc7, - 0xb8, 0x8c, 0xa5, 0xc7, 0xb8, 0x8f, 0xa5, 0xc7, 0xb8, 0x8c, 0xa5, 0xc7, - 0xb9, 0x8f, 0xa5, 0xc7, 0xb9, 0x8c, 0xa5, 0xc7, 0xb9, 0x8f, 0xa5, 0xc7, - 0xba, 0x8c, 0xa5, 0xc7, 0xba, 0x8f, 0xbe, 0xc7, 0xba, 0x73, 0xbd, 0xc7, - 0xbb, 0x73, 0xbe, 0xc7, 0xbb, 0x73, 0xbd, 0xc7, 0xbb, 0x73, 0xc1, 0xc7, - 0xbc, 0x74, 0xbd, 0xc7, 0xbc, 0x73, 0xc1, 0xc7, 0xbc, 0x74, 0xc1, 0xc7, - 0xbd, 0x74, 0xc1, 0xc7, 0xbd, 0x74, 0xc1, 0xc7, 0xbd, 0x74, 0xc1, 0xc7, - 0xbe, 0x74, 0xc1, 0xc7, 0xbe, 0x74, 0xc1, 0xc7, 0xbe, 0x74, 0xc1, 0xc7, - 0xbf, 0x74, 0xc1, 0xc7, 0xbf, 0x74, 0xc4, 0xc7, 0xbf, 0x75, 0xc1, 0xc7, - 0xc0, 0x74, 0xc4, 0xc7, 0xc0, 0x75, 0xc5, 0xc7, 0xc0, 0x75, 0xc4, 0xc7, - 0xc1, 0x75, 0xc5, 0xc7, 0xc1, 0x75, 0xc4, 0xc7, 0xc1, 0x75, 0xc5, 0xc7, - 0xc1, 0x75, 0xc4, 0xc7, 0xc2, 0x75, 0xc5, 0xc7, 0xc2, 0x75, 0xc4, 0xc7, - 0xc2, 0x75, 0xc8, 0xc7, 0xc3, 0x76, 0xc4, 0xc7, 0xc3, 0x75, 0xc8, 0xc7, - 0xc3, 0x76, 0xd4, 0xc7, 0xc4, 0x97, 0xd4, 0xc7, 0xc4, 0x94, 0xd4, 0xc7, - 0xc4, 0x97, 0xd4, 0xc7, 0xc5, 0x94, 0xd4, 0xc7, 0xc5, 0x97, 0xd4, 0xc7, - 0xc5, 0x94, 0xd4, 0xc7, 0xc6, 0x97, 0xd4, 0xc7, 0xc6, 0x94, 0xd4, 0xc7, - 0xc6, 0x97, 0xd4, 0xc7, 0xc6, 0x94, 0xd4, 0xc7, 0xc7, 0x97, 0xd4, 0xc7, - 0xc7, 0x94, 0xd4, 0xc7, 0xc7, 0x97, 0xd4, 0xc7, 0xc8, 0x94, 0xd4, 0xc7, - 0xc8, 0x97, 0xd4, 0xc7, 0xc8, 0x94, 0xd4, 0xc7, 0xc9, 0x97, 0xd4, 0xc7, - 0xc9, 0x94, 0xd4, 0xc7, 0xc9, 0x97, 0xd4, 0xc7, 0xc9, 0x94, 0xd4, 0xc7, - 0xca, 0x97, 0xd4, 0xc7, 0xca, 0x94, 0xd4, 0xc7, 0xca, 0x97, 0xd4, 0xc7, - 0xcb, 0x94, 0xd4, 0xc7, 0xcb, 0x93, 0xd4, 0xc7, 0xcb, 0x94, 0xd4, 0xc7, - 0xcc, 0x93, 0xd4, 0xc7, 0xcc, 0x94, 0xd4, 0xc7, 0xcc, 0x93, 0xd4, 0xc7, - 0xcc, 0x94, 0xd4, 0xc7, 0xcd, 0x93, 0xd4, 0xc7, 0xcd, 0x94, 0xd4, 0xc7, - 0xcd, 0x93, 0xd4, 0xc7, 0xce, 0x94, 0xd4, 0xc7, 0xce, 0x93, 0xd4, 0xc7, - 0xce, 0x94, 0xd4, 0xc7, 0xce, 0x93, 0xd4, 0xc7, 0xcf, 0x94, 0xd4, 0xc7, - 0xcf, 0x93, 0xd4, 0xc7, 0xcf, 0x94, 0xd4, 0xc7, 0xd0, 0x93, 0xd4, 0xc7, - 0xd0, 0x94, 0xd4, 0xc7, 0xd0, 0x93, 0xd4, 0xc7, 0xd0, 0x94, 0xd4, 0xc7, - 0xd1, 0x93, 0xd4, 0xc7, 0xd1, 0x94, 0xd4, 0xc7, 0xd1, 0x93, 0xd4, 0xc7, - 0xd2, 0x94, 0xd4, 0xc7, 0xd2, 0x93, 0xd4, 0xc7, 0xd2, 0x94, 0xd4, 0xc7, - 0xd2, 0x93, 0xd4, 0xc7, 0xd3, 0x94, 0xd4, 0xc7, 0xd3, 0x93, 0xd4, 0xc7, - 0xd3, 0x93, 0xd4, 0xc7, 0xd4, 0x93, 0xd4, 0xc7, 0xd4, 0x93, 0xd4, 0xc7, - 0xd4, 0x93, 0xd4, 0xc7, 0xd4, 0x93, 0xd5, 0xc7, 0xd5, 0x93, 0xd5, 0xc7, - 0xd5, 0x93, 0xd5, 0xc7, 0xd5, 0x93, 0xd6, 0xc7, 0xd6, 0x93, 0xd6, 0xc7, - 0xd6, 0x93, 0xd6, 0xc7, 0xd6, 0x93, 0xd6, 0xc7, 0xd6, 0x93, 0xd6, 0xc7, - 0xd7, 0x93, 0xd6, 0xc7, 0xd7, 0x93, 0xd6, 0xc7, 0xd7, 0x93, 0xd7, 0xc7, - 0xd7, 0x94, 0xd8, 0xc7, 0xd8, 0x94, 0xd8, 0xc7, 0xd8, 0x94, 0xd8, 0xc7, - 0xd8, 0x94, 0xd9, 0xc7, 0xd9, 0x94, 0xd9, 0xc7, 0xd9, 0x94, 0xd9, 0xc7, - 0xd9, 0x94, 0xd9, 0xc7, 0xd9, 0x94, 0xd9, 0xc7, 0xda, 0x94, 0xd9, 0xc7, - 0xda, 0x94, 0xd9, 0xc7, 0xda, 0x94, 0xda, 0xc7, 0xda, 0x95, 0xdb, 0xc7, - 0xdb, 0x95, 0xdb, 0xc7, 0xdb, 0x95, 0xdb, 0xc7, 0xdb, 0x95, 0xdb, 0xc7, - 0xdb, 0x95, 0xdc, 0xc7, 0xdc, 0x95, 0xdc, 0xc7, 0xdc, 0x95, 0xdc, 0xc7, - 0xdc, 0x95, 0xdc, 0xc7, 0xdd, 0x95, 0xdc, 0xc7, 0xdd, 0x95, 0xdc, 0xc7, - 0xdd, 0x95, 0xdd, 0xc7, 0xdd, 0x96, 0xde, 0xc7, 0xde, 0x96, 0xde, 0xc7, - 0xde, 0x96, 0xde, 0xc7, 0xde, 0x96, 0xde, 0xc7, 0xde, 0x96, 0xdf, 0xc7, - 0xdf, 0x96, 0xdf, 0xc7, 0xdf, 0x96, 0xdf, 0xc7, 0xdf, 0x96, 0xdf, 0xc7, - 0xdf, 0x96, 0xdf, 0xc7, 0xe0, 0x96, 0xdf, 0xc7, 0xe0, 0x96, 0xdf, 0xc7, - 0xe0, 0x96, 0xdf, 0xc7, 0xe1, 0x96, 0xe1, 0xc7, 0xe1, 0x97, 0xe1, 0xc7, - 0xe1, 0x97, 0xe1, 0xc7, 0xe1, 0x97, 0xe2, 0xc7, 0xe2, 0x97, 0xe2, 0xc7, - 0xe2, 0x97, 0xe2, 0xc7, 0xe2, 0x97, 0xe2, 0xc7, 0xe2, 0x97, 0xe2, 0xc7, - 0xe3, 0x97, 0xe2, 0xc7, 0xe3, 0x97, 0xe2, 0xc7, 0xe3, 0x97, 0xe2, 0xc7, - 0xe3, 0x97, 0xe4, 0xc7, 0xe4, 0x98, 0xe4, 0xc7, 0xe4, 0x98, 0xe4, 0xc7, - 0xe4, 0x98, 0xe4, 0xc7, 0xe4, 0x98, 0xe5, 0xc7, 0xe5, 0x98, 0xe4, 0xc7, - 0xe5, 0x98, 0xe5, 0xc7, 0xe5, 0x98, 0xe4, 0xc7, 0xe5, 0x98, 0xe5, 0xc7, - 0xe6, 0x98, 0xe4, 0xc7, 0xe6, 0x98, 0xe5, 0xc7, 0xe6, 0x98, 0xe6, 0xc7, - 0xe6, 0x99, 0xea, 0xc7, 0xe7, 0x8c, 0xea, 0xc7, 0xe7, 0x8c, 0xea, 0xc7, - 0xe7, 0x8c, 0xea, 0xc7, 0xe7, 0x8c, 0xea, 0xc7, 0xe8, 0x8c, 0xea, 0xc7, - 0xe8, 0x8c, 0xea, 0xc7, 0xe8, 0x8c, 0xea, 0xc7, 0xe8, 0x8c, 0xea, 0xc7, - 0xe9, 0x8c, 0xea, 0xc7, 0xe9, 0x8c, 0xea, 0xc7, 0xe9, 0x8c, 0xea, 0xc7, - 0xe9, 0x8c, 0xea, 0xc7, 0xea, 0x8c, 0xea, 0xc7, 0xea, 0x8c, 0xea, 0xc7, - 0xea, 0x8c, 0xea, 0xc7, 0xea, 0x8c, 0xeb, 0xc7, 0xeb, 0x8c, 0xec, 0xc7, - 0xeb, 0x8d, 0xec, 0xc7, 0xeb, 0x8d, 0xec, 0xc7, 0xeb, 0x8d, 0xec, 0xc7, - 0xec, 0x8d, 0xec, 0xc7, 0xec, 0x8d, 0xec, 0xc7, 0xec, 0x8d, 0xec, 0xc7, - 0xec, 0x8d, 0xec, 0xc7, 0xec, 0x8d, 0xed, 0xc7, 0xed, 0x8d, 0xee, 0xc7, - 0xed, 0x92, 0xef, 0xc7, 0xed, 0x91, 0xee, 0xc7, 0xed, 0x92, 0xef, 0xc7, - 0xee, 0x91, 0xee, 0xc7, 0xee, 0x92, 0xef, 0xc7, 0xee, 0x91, 0xef, 0xc7, - 0xee, 0x91, 0xef, 0xc7, 0xee, 0x91, 0xef, 0xc7, 0xee, 0x91, 0xef, 0xc6, - 0xef, 0x91, 0xef, 0xc6, 0xef, 0x91, 0xf0, 0xc6, 0xf0, 0x91, 0xf0, 0xc6, - 0xf0, 0x91, 0xf0, 0xc6, 0xf0, 0x91, 0xf0, 0xc6, 0xf0, 0x91, 0xf1, 0xc6, - 0xf1, 0x91, 0xf1, 0xc6, 0xf1, 0x91, 0xf1, 0xc6, 0xf2, 0x91, 0xf1, 0xc6, - 0xf2, 0x91, 0xf2, 0xc6, 0xf2, 0x91, 0xf2, 0xc6, 0xf2, 0x91, 0xf2, 0xc6, - 0xf2, 0x91, 0xf2, 0xc6, 0xf2, 0x91, 0xf2, 0xc6, 0xf2, 0x91, 0xf3, 0xc6, - 0xf3, 0x91, 0xf3, 0xc6, 0xf3, 0x91, 0xf3, 0xc6, 0xf3, 0x91, 0xf3, 0xc6, - 0xf3, 0x91, 0xf4, 0xc6, 0xf4, 0x91, 0xf4, 0xc6, 0xf4, 0x91, 0xf4, 0xc6, - 0xf4, 0x91, 0xf4, 0xc6, 0xf4, 0x91, 0xf5, 0xc7, 0xf5, 0x92, 0xf5, 0xc7, - 0xf5, 0x92, 0xf5, 0xc7, 0xf5, 0x92, 0xf5, 0xc7, 0xf5, 0x92, 0xf5, 0xc7, - 0xf5, 0x92, 0xf6, 0xc7, 0xf6, 0x92, 0xf6, 0xc7, 0xf6, 0x92, 0xf6, 0xc7, - 0xf6, 0x92, 0xf6, 0xc7, 0xf6, 0x92, 0xf7, 0xc7, 0xf7, 0x92, 0xf7, 0xc7, - 0xf7, 0x92, 0xf8, 0xc7, 0xf7, 0x91, 0xf8, 0xc7, 0xf7, 0x91, 0xf8, 0xc6, - 0xf8, 0x91, 0xf8, 0xc7, 0xf7, 0x91, 0xf8, 0xc6, 0xf8, 0x91, 0xf8, 0xc7, - 0xf7, 0x91, 0xf8, 0xc6, 0xf8, 0x91, 0xf9, 0xc7, 0xf7, 0x91, 0xf9, 0xc6, - 0xf8, 0x91, 0xf9, 0xc7, 0xf7, 0x91, 0xf9, 0xc6, 0xf8, 0x91, 0xfa, 0xc7, - 0xf7, 0x91, 0xfa, 0xc6, 0xf8, 0x91, 0xfa, 0xc7, 0xf7, 0x91, 0xfa, 0xc6, - 0xf8, 0x91, 0xfa, 0xc7, 0xf7, 0x91, 0xfb, 0xc6, 0xf8, 0x91, 0xfb, 0xc7, - 0xf7, 0x91, 0xfb, 0xc6, 0xf8, 0x91, 0xfb, 0xc4, 0xf8, 0x91, 0xfc, 0xc6, - 0xf8, 0x91, 0xfc, 0xc4, 0xf8, 0x91, 0xfc, 0xc6, 0xf8, 0x91, 0xfc, 0xc4, - 0xf8, 0x91, 0xfc, 0xc6, 0xf8, 0x91, 0xfd, 0xc4, 0xf8, 0x91, 0xfd, 0xc6, - 0xf8, 0x91, 0xfd, 0xc4, 0xf8, 0x91, 0xfd, 0xc6, 0xf8, 0x91, 0xfe, 0xc4, - 0xf8, 0x91, 0xfe, 0xc6, 0xf8, 0x91, 0xfe, 0xc4, 0xf8, 0x91, 0xfe, 0xc6, - 0xf8, 0x91, 0xfe, 0xc4, 0xf8, 0x91, 0xff, 0xc4, 0xf8, 0x91, 0xff, 0xc4, - 0xf8, 0x91, 0x03, 0xcd, 0x8e, 0x92, 0x0a, 0xcf, 0x8e, 0x92, 0x0f, 0xcd, - 0x8e, 0x92, 0x14, 0xcf, 0x8e, 0x92, 0x17, 0xcd, 0x8e, 0x92, 0x1b, 0xcf, - 0x8e, 0x92, 0x1e, 0xcd, 0x8e, 0x92, 0x20, 0xcf, 0x8e, 0x92, 0x23, 0xcd, - 0x8e, 0x92, 0x25, 0xcf, 0x8e, 0x92, 0x27, 0xcd, 0x8e, 0x92, 0x29, 0xcf, - 0x8e, 0x92, 0x2b, 0xcd, 0x8e, 0x92, 0x2d, 0xcf, 0x8e, 0x92, 0x2f, 0xcd, - 0x8e, 0x92, 0x31, 0xcf, 0x8e, 0x92, 0x32, 0xcd, 0x8e, 0x92, 0x34, 0xcf, - 0x8e, 0x92, 0x35, 0xcd, 0x8e, 0x92, 0x37, 0xcb, 0x8e, 0x92, 0x38, 0xcd, - 0x8e, 0x92, 0x3a, 0xcb, 0x8e, 0x92, 0x3b, 0xcd, 0x8e, 0x92, 0x3c, 0xcb, - 0x8e, 0x92, 0x3e, 0xcd, 0x8e, 0x92, 0x3f, 0xcb, 0x8e, 0x92, 0x40, 0xcd, - 0x8e, 0x92, 0x42, 0xcb, 0x8e, 0x92, 0x43, 0xcd, 0x8e, 0x92, 0x44, 0xcb, - 0x8e, 0x92, 0x45, 0xcd, 0x8e, 0x92, 0x46, 0xcb, 0x8e, 0x92, 0x47, 0xcd, - 0x8e, 0x92, 0x48, 0xcb, 0x8e, 0x92, 0x49, 0xcd, 0x8e, 0x92, 0x4a, 0xcb, - 0x8e, 0x92, 0x4b, 0xcd, 0x8e, 0x92, 0x4c, 0xcb, 0x8e, 0x92, 0x4d, 0xcd, - 0x8e, 0x92, 0x4e, 0xcb, 0x8e, 0x92, 0x4f, 0xcd, 0x8e, 0x92, 0x50, 0xcb, - 0x8e, 0x92, 0x51, 0xcd, 0x8e, 0x92, 0x52, 0xcb, 0x8e, 0x92, 0x53, 0xcd, - 0x8e, 0x92, 0x54, 0xcb, 0x8e, 0x92, 0x55, 0xcd, 0x8e, 0x92, 0x56, 0xcb, - 0x8e, 0x92, 0x57, 0xc9, 0x8f, 0x92, 0x58, 0xcb, 0x8e, 0x92, 0x58, 0xc9, - 0x8f, 0x92, 0x59, 0xcb, 0x8e, 0x92, 0x5a, 0xc9, 0x8f, 0x92, 0x5b, 0xcb, - 0x8e, 0x92, 0x5c, 0xc9, 0x8f, 0x92, 0x5d, 0xcb, 0x8e, 0x92, 0x5d, 0xc9, - 0x8f, 0x92, 0x5e, 0xcb, 0x8e, 0x92, 0x5f, 0xc9, 0x8f, 0x92, 0x60, 0xcb, - 0x8e, 0x92, 0x60, 0xc9, 0x8f, 0x92, 0x61, 0xcb, 0x8e, 0x92, 0x62, 0xc9, - 0x8f, 0x92, 0x63, 0xcb, 0x8e, 0x92, 0x63, 0xc9, 0x8f, 0x92, 0x64, 0xcb, - 0x8e, 0x92, 0x65, 0xc9, 0x8f, 0x92, 0x66, 0xcb, 0x8e, 0x92, 0x66, 0xc9, - 0x8f, 0x92, 0x67, 0xcb, 0x8e, 0x92, 0x68, 0xc9, 0x8f, 0x92, 0x68, 0xcb, - 0x8e, 0x92, 0x69, 0xc9, 0x8f, 0x92, 0x6a, 0xcb, 0x8e, 0x92, 0x6a, 0xc9, - 0x8f, 0x92, 0x6b, 0xcb, 0x8e, 0x92, 0x6c, 0xc9, 0x8f, 0x92, 0x6c, 0xcb, - 0x8e, 0x92, 0x6d, 0xc9, 0x8f, 0x92, 0x6e, 0xcb, 0x8e, 0x92, 0x6e, 0xc9, - 0x8f, 0x92, 0x6f, 0xcb, 0x8e, 0x92, 0x70, 0xc9, 0x8f, 0x92, 0x70, 0xcb, - 0x8e, 0x92, 0x71, 0xc9, 0x8f, 0x92, 0x72, 0xcb, 0x8e, 0x92, 0x72, 0xc9, - 0x8f, 0x92, 0x73, 0xcb, 0x8e, 0x92, 0x73, 0xc9, 0x8f, 0x92, 0x74, 0xcb, - 0x8e, 0x92, 0x75, 0xc9, 0x8f, 0x92, 0x75, 0xcb, 0x8e, 0x92, 0x76, 0xc9, - 0x8f, 0x92, 0x76, 0xc7, 0x8f, 0x92, 0x77, 0xc9, 0x8f, 0x92, 0x78, 0xc7, - 0x8f, 0x92, 0x78, 0xc9, 0x8f, 0x92, 0x79, 0xc7, 0x8f, 0x92, 0x79, 0xc9, - 0x8f, 0x92, 0x7a, 0xc7, 0x8f, 0x92, 0x7a, 0xc9, 0x8f, 0x92, 0x7b, 0xc7, - 0x8f, 0x92, 0x7c, 0xc9, 0x8f, 0x92, 0x7c, 0xc7, 0x8f, 0x92, 0x7d, 0xc9, - 0x8f, 0x92, 0x7d, 0xc7, 0x8f, 0x92, 0x7e, 0xc9, 0x8f, 0x92, 0x7e, 0xc7, - 0x8f, 0x92, 0x7f, 0xc9, 0x8f, 0x92, 0x7f, 0xc7, 0x8f, 0x92, 0x80, 0xc9, - 0x8f, 0x92, 0x81, 0xc7, 0x8f, 0x92, 0x81, 0xc9, 0x8f, 0x92, 0x82, 0xc7, - 0x8f, 0x92, 0x82, 0xc9, 0x8f, 0x92, 0x83, 0xc7, 0x8f, 0x92, 0x83, 0xc9, - 0x8f, 0x92, 0x84, 0xc7, 0x8f, 0x92, 0x84, 0xc9, 0x8f, 0x92, 0x85, 0xc7, - 0x8f, 0x92, 0x85, 0xc9, 0x8f, 0x92, 0x86, 0xc7, 0x8f, 0x92, 0x86, 0xc9, - 0x8f, 0x92, 0x87, 0xc7, 0x8f, 0x92, 0x87, 0xc9, 0x8f, 0x92, 0x88, 0xc7, - 0x8f, 0x92, 0x88, 0xc9, 0x8f, 0x92, 0x89, 0xc7, 0x8f, 0x92, 0x89, 0xc9, - 0x8f, 0x92, 0x8a, 0xc7, 0x8f, 0x92, 0x8a, 0xc9, 0x8f, 0x92, 0x8b, 0xc7, - 0x8f, 0x92, 0x8b, 0xc9, 0x8f, 0x92, 0x8c, 0xc7, 0x8f, 0x92, 0x8c, 0xc7, - 0x90, 0x92, 0x8d, 0xc7, 0x8f, 0x92, 0x8d, 0xc7, 0x90, 0x92, 0x8e, 0xc7, - 0x8f, 0x92, 0x8e, 0xc7, 0x90, 0x92, 0x8e, 0xc7, 0x8f, 0x92, 0x8f, 0xc7, - 0x90, 0x92, 0x8f, 0xc7, 0x8f, 0x91, 0x8f, 0xc7, 0x90, 0x92, 0x8f, 0xc7, - 0x90, 0x91, 0x8f, 0xc7, 0x91, 0x92, 0x93, 0xc7, 0x91, 0x92, 0x93, 0xc7, - 0x92, 0x92, 0x93, 0xc7, 0x92, 0x92, 0x93, 0xc6, 0x93, 0x92, 0x93, 0xc7, - 0x92, 0x92, 0x94, 0xc6, 0x93, 0x92, 0x94, 0xc7, 0x92, 0x92, 0x94, 0xc6, - 0x93, 0x92, 0x95, 0xc9, 0x95, 0x92, 0x95, 0xc6, 0x93, 0x92, 0x96, 0xc9, - 0x95, 0x92, 0x96, 0xc9, 0x94, 0x92, 0x97, 0xc9, 0x95, 0x92, 0x97, 0xc9, - 0x97, 0x92, 0x98, 0xc9, 0x98, 0x92, 0x98, 0xc9, 0x98, 0x92, 0x98, 0xc9, - 0x98, 0x92, 0x99, 0xc9, 0x99, 0x92, 0x99, 0xc9, 0x99, 0x92, 0x9a, 0xc9, - 0x9a, 0x92, 0x9a, 0xc9, 0x99, 0x92, 0x9a, 0xc9, 0x9a, 0x92, 0x9b, 0xc9, - 0x99, 0x92, 0x9b, 0xc9, 0x9a, 0x92, 0x9c, 0xca, 0x9c, 0x92, 0x9c, 0xca, - 0x9c, 0x92, 0x9d, 0xca, 0x9d, 0x92, 0x9d, 0xca, 0x9d, 0x92, 0x9d, 0xca, - 0x9d, 0x92, 0x9e, 0xca, 0x9e, 0x92, 0x9e, 0xca, 0x9e, 0x92, 0x9f, 0xca, - 0x9e, 0x92, 0x9f, 0xca, 0x9e, 0x92, 0x9f, 0xca, 0x9e, 0x92, 0xa0, 0xca, - 0x9e, 0x92, 0xa0, 0xc8, 0xa4, 0x92, 0xa1, 0xc7, 0xa5, 0x92, 0xa1, 0xc8, - 0xa4, 0x92, 0xa1, 0xc7, 0xa5, 0x92, 0xa2, 0xc8, 0xa4, 0x92, 0xa2, 0xc7, - 0xa5, 0x92, 0xa3, 0xc8, 0xa4, 0x92, 0xa3, 0xc7, 0xa5, 0x92, 0xa3, 0xc8, - 0xa4, 0x92, 0xa4, 0xc7, 0xa5, 0x92, 0xa4, 0xc8, 0xa4, 0x92, 0xa4, 0xc7, - 0xa5, 0x92, 0xa4, 0xc7, 0xa5, 0x92, 0xa4, 0xc7, 0xa5, 0x92, 0xa4, 0xc7, - 0xa6, 0x92, 0xa4, 0xc7, 0xa6, 0x92, 0xa4, 0xc7, 0xa6, 0x92, 0xa4, 0xc7, - 0xa7, 0x92, 0xa4, 0xc7, 0xa7, 0x92, 0xa5, 0xc7, 0xa8, 0x8f, 0xa4, 0xc7, - 0xa8, 0x92, 0xa5, 0xc7, 0xa8, 0x8f, 0xa4, 0xc7, 0xa9, 0x92, 0xa5, 0xc7, - 0xa9, 0x8f, 0xa4, 0xc7, 0xaa, 0x92, 0xa5, 0xc7, 0xaa, 0x8f, 0xa4, 0xc7, - 0xaa, 0x92, 0xa5, 0xc7, 0xab, 0x8f, 0xa4, 0xc7, 0xab, 0x92, 0xa5, 0xc7, - 0xab, 0x8f, 0xa4, 0xc7, 0xac, 0x92, 0xa5, 0xc7, 0xac, 0x8f, 0xa4, 0xc7, - 0xac, 0x92, 0xa5, 0xc7, 0xad, 0x8f, 0xa4, 0xc7, 0xad, 0x92, 0xa5, 0xc7, - 0xae, 0x8f, 0xa5, 0xc7, 0xae, 0x8d, 0xa5, 0xc7, 0xae, 0x8f, 0xa5, 0xc7, - 0xaf, 0x8d, 0xa5, 0xc7, 0xaf, 0x8f, 0xa5, 0xc7, 0xaf, 0x8d, 0xa5, 0xc7, - 0xb0, 0x8f, 0xa5, 0xc7, 0xb0, 0x8d, 0xa5, 0xc7, 0xb0, 0x8f, 0xa5, 0xc7, - 0xb1, 0x8d, 0xa5, 0xc7, 0xb1, 0x8f, 0xa5, 0xc7, 0xb2, 0x8d, 0xa5, 0xc7, - 0xb2, 0x8f, 0xa5, 0xc7, 0xb2, 0x8d, 0xa5, 0xc7, 0xb3, 0x8f, 0xa5, 0xc7, - 0xb3, 0x8d, 0xa5, 0xc7, 0xb3, 0x8f, 0xa5, 0xc7, 0xb4, 0x8d, 0xa5, 0xc7, - 0xb4, 0x8f, 0xa5, 0xc7, 0xb4, 0x8d, 0xa5, 0xc7, 0xb5, 0x8f, 0xa5, 0xc7, - 0xb5, 0x8d, 0xa5, 0xc7, 0xb5, 0x8f, 0xa5, 0xc7, 0xb6, 0x8d, 0xa5, 0xc7, - 0xb6, 0x8f, 0xa5, 0xc7, 0xb6, 0x8d, 0xa5, 0xc7, 0xb7, 0x8f, 0xa5, 0xc7, - 0xb7, 0x8d, 0xa5, 0xc7, 0xb7, 0x8f, 0xa5, 0xc7, 0xb8, 0x8d, 0xa5, 0xc7, - 0xb8, 0x8f, 0xa5, 0xc7, 0xb8, 0x8d, 0xa5, 0xc7, 0xb9, 0x8f, 0xa5, 0xc7, - 0xb9, 0x8d, 0xa5, 0xc7, 0xb9, 0x8a, 0xa5, 0xc7, 0xba, 0x8d, 0xa5, 0xc7, - 0xba, 0x8a, 0xa5, 0xc7, 0xba, 0x8d, 0xbf, 0xc7, 0xbb, 0x74, 0xbf, 0xc7, - 0xbb, 0x74, 0xbf, 0xc7, 0xbb, 0x74, 0xbf, 0xc7, 0xbc, 0x74, 0xbf, 0xc7, - 0xbc, 0x74, 0xbf, 0xc7, 0xbc, 0x74, 0xbf, 0xc7, 0xbd, 0x74, 0xbf, 0xc7, - 0xbd, 0x74, 0xc2, 0xc7, 0xbd, 0x75, 0xbf, 0xc7, 0xbe, 0x74, 0xc2, 0xc7, - 0xbe, 0x75, 0xc3, 0xc7, 0xbe, 0x75, 0xc2, 0xc7, 0xbf, 0x75, 0xc3, 0xc7, - 0xbf, 0x75, 0xc2, 0xc7, 0xbf, 0x75, 0xc3, 0xc7, 0xc0, 0x75, 0xc2, 0xc7, - 0xc0, 0x75, 0xc3, 0xc7, 0xc0, 0x75, 0xc2, 0xc7, 0xc1, 0x75, 0xc3, 0xc7, - 0xc1, 0x75, 0xc2, 0xc7, 0xc1, 0x75, 0xc3, 0xc7, 0xc1, 0x75, 0xc6, 0xc7, - 0xc2, 0x76, 0xc6, 0xc7, 0xc2, 0x76, 0xc6, 0xc7, 0xc2, 0x76, 0xc6, 0xc7, - 0xc3, 0x76, 0xc6, 0xc7, 0xc3, 0x76, 0xd3, 0xc7, 0xc3, 0x9a, 0xd4, 0xc7, - 0xc4, 0x97, 0xd4, 0xc7, 0xc4, 0x95, 0xd4, 0xc7, 0xc4, 0x97, 0xd4, 0xc7, - 0xc5, 0x95, 0xd4, 0xc7, 0xc5, 0x97, 0xd4, 0xc7, 0xc5, 0x95, 0xd4, 0xc7, - 0xc6, 0x97, 0xd4, 0xc7, 0xc6, 0x95, 0xd4, 0xc7, 0xc6, 0x97, 0xd4, 0xc7, - 0xc6, 0x95, 0xd4, 0xc7, 0xc7, 0x97, 0xd4, 0xc7, 0xc7, 0x95, 0xd4, 0xc7, - 0xc7, 0x97, 0xd4, 0xc7, 0xc8, 0x95, 0xd4, 0xc7, 0xc8, 0x97, 0xd4, 0xc7, - 0xc8, 0x95, 0xd4, 0xc7, 0xc9, 0x97, 0xd4, 0xc7, 0xc9, 0x95, 0xd4, 0xc7, - 0xc9, 0x97, 0xd4, 0xc7, 0xc9, 0x95, 0xd4, 0xc7, 0xca, 0x97, 0xd4, 0xc7, - 0xca, 0x95, 0xd4, 0xc7, 0xca, 0x97, 0xd4, 0xc7, 0xcb, 0x95, 0xd4, 0xc7, - 0xcb, 0x97, 0xd4, 0xc7, 0xcb, 0x95, 0xd4, 0xc7, 0xcc, 0x97, 0xd4, 0xc7, - 0xcc, 0x95, 0xd4, 0xc7, 0xcc, 0x97, 0xd4, 0xc7, 0xcc, 0x95, 0xd4, 0xc7, - 0xcd, 0x97, 0xd4, 0xc7, 0xcd, 0x95, 0xd4, 0xc7, 0xcd, 0x93, 0xd4, 0xc7, - 0xce, 0x95, 0xd4, 0xc7, 0xce, 0x93, 0xd4, 0xc7, 0xce, 0x95, 0xd4, 0xc7, - 0xce, 0x93, 0xd4, 0xc7, 0xcf, 0x95, 0xd4, 0xc7, 0xcf, 0x93, 0xd4, 0xc7, - 0xcf, 0x95, 0xd4, 0xc7, 0xd0, 0x93, 0xd4, 0xc7, 0xd0, 0x95, 0xd4, 0xc7, - 0xd0, 0x93, 0xd4, 0xc7, 0xd0, 0x95, 0xd4, 0xc7, 0xd1, 0x93, 0xd4, 0xc7, - 0xd1, 0x95, 0xd4, 0xc7, 0xd1, 0x93, 0xd4, 0xc7, 0xd2, 0x95, 0xd4, 0xc7, - 0xd2, 0x93, 0xd4, 0xc7, 0xd2, 0x93, 0xd4, 0xc7, 0xd2, 0x93, 0xd4, 0xc7, - 0xd3, 0x93, 0xd4, 0xc7, 0xd3, 0x93, 0xd4, 0xc7, 0xd3, 0x93, 0xd4, 0xc7, - 0xd4, 0x93, 0xd4, 0xc7, 0xd4, 0x93, 0xd4, 0xc7, 0xd4, 0x93, 0xd4, 0xc7, - 0xd4, 0x93, 0xd5, 0xc7, 0xd5, 0x93, 0xd4, 0xc7, 0xd5, 0x93, 0xd5, 0xc7, - 0xd5, 0x93, 0xd6, 0xc7, 0xd6, 0x94, 0xd6, 0xc7, 0xd6, 0x94, 0xd6, 0xc7, - 0xd6, 0x94, 0xd6, 0xc7, 0xd6, 0x94, 0xd7, 0xc7, 0xd7, 0x94, 0xd7, 0xc7, - 0xd7, 0x94, 0xd7, 0xc7, 0xd7, 0x94, 0xd7, 0xc7, 0xd7, 0x94, 0xd8, 0xc7, - 0xd8, 0x94, 0xd7, 0xc7, 0xd8, 0x94, 0xd8, 0xc7, 0xd8, 0x94, 0xd7, 0xc7, - 0xd9, 0x94, 0xd8, 0xc7, 0xd9, 0x94, 0xd9, 0xc7, 0xd9, 0x95, 0xd9, 0xc7, - 0xd9, 0x95, 0xda, 0xc7, 0xda, 0x95, 0xda, 0xc7, 0xda, 0x95, 0xda, 0xc7, - 0xda, 0x95, 0xda, 0xc7, 0xda, 0x95, 0xdb, 0xc7, 0xdb, 0x95, 0xda, 0xc7, - 0xdb, 0x95, 0xdb, 0xc7, 0xdb, 0x95, 0xda, 0xc7, 0xdb, 0x95, 0xdb, 0xc7, - 0xdc, 0x95, 0xdc, 0xc7, 0xdc, 0x96, 0xdc, 0xc7, 0xdc, 0x96, 0xdd, 0xc7, - 0xdd, 0x96, 0xdd, 0xc7, 0xdd, 0x96, 0xdd, 0xc7, 0xdd, 0x96, 0xdd, 0xc7, - 0xdd, 0x96, 0xde, 0xc7, 0xde, 0x96, 0xdd, 0xc7, 0xde, 0x96, 0xde, 0xc7, - 0xde, 0x96, 0xdd, 0xc7, 0xde, 0x96, 0xde, 0xc7, 0xdf, 0x96, 0xdf, 0xc7, - 0xdf, 0x97, 0xdf, 0xc7, 0xdf, 0x97, 0xdf, 0xc7, 0xdf, 0x97, 0xe0, 0xc7, - 0xe0, 0x97, 0xe0, 0xc7, 0xe0, 0x97, 0xe0, 0xc7, 0xe0, 0x97, 0xe1, 0xc7, - 0xe1, 0x97, 0xe0, 0xc7, 0xe1, 0x97, 0xe1, 0xc7, 0xe1, 0x97, 0xe0, 0xc7, - 0xe1, 0x97, 0xe1, 0xc7, 0xe2, 0x97, 0xe0, 0xc7, 0xe2, 0x97, 0xe1, 0xc7, - 0xe2, 0x97, 0xe2, 0xc7, 0xe2, 0x98, 0xe3, 0xc7, 0xe3, 0x98, 0xe3, 0xc7, - 0xe3, 0x98, 0xe3, 0xc7, 0xe3, 0x98, 0xe3, 0xc7, 0xe3, 0x98, 0xe3, 0xc7, - 0xe4, 0x98, 0xe3, 0xc7, 0xe4, 0x98, 0xe3, 0xc7, 0xe4, 0x98, 0xe3, 0xc7, - 0xe4, 0x98, 0xe3, 0xc7, 0xe5, 0x98, 0xe3, 0xc7, 0xe5, 0x98, 0xe5, 0xc7, - 0xe5, 0x99, 0xe5, 0xc7, 0xe5, 0x99, 0xe6, 0xc7, 0xe6, 0x99, 0xe6, 0xc7, - 0xe6, 0x99, 0xe6, 0xc7, 0xe6, 0x99, 0xe6, 0xc7, 0xe6, 0x99, 0xe6, 0xc7, - 0xe7, 0x99, 0xe6, 0xc7, 0xe7, 0x99, 0xe6, 0xc7, 0xe7, 0x99, 0xea, 0xc7, - 0xe7, 0x8d, 0xea, 0xc7, 0xe8, 0x8d, 0xea, 0xc7, 0xe8, 0x8d, 0xea, 0xc7, - 0xe8, 0x8d, 0xea, 0xc7, 0xe8, 0x8d, 0xea, 0xc7, 0xe9, 0x8d, 0xea, 0xc7, - 0xe9, 0x8d, 0xea, 0xc7, 0xe9, 0x8d, 0xea, 0xc7, 0xe9, 0x8d, 0xea, 0xc7, - 0xea, 0x8d, 0xea, 0xc7, 0xea, 0x8d, 0xea, 0xc7, 0xea, 0x8d, 0xea, 0xc7, - 0xea, 0x8d, 0xeb, 0xc7, 0xeb, 0x8d, 0xeb, 0xc7, 0xeb, 0x8d, 0xeb, 0xc7, - 0xeb, 0x8d, 0xeb, 0xc7, 0xeb, 0x8d, 0xec, 0xc7, 0xec, 0x8d, 0xec, 0xc7, - 0xec, 0x8d, 0xec, 0xc7, 0xec, 0x8d, 0xec, 0xc7, 0xec, 0x8d, 0xee, 0xc7, - 0xec, 0x93, 0xef, 0xc7, 0xed, 0x92, 0xee, 0xc7, 0xed, 0x93, 0xef, 0xc7, - 0xed, 0x92, 0xee, 0xc7, 0xed, 0x93, 0xef, 0xc7, 0xee, 0x92, 0xee, 0xc7, - 0xee, 0x93, 0xef, 0xc7, 0xee, 0x92, 0xef, 0xc7, 0xee, 0x92, 0xef, 0xc7, - 0xee, 0x92, 0xef, 0xc7, 0xee, 0x92, 0xef, 0xc7, 0xee, 0x92, 0xef, 0xc7, - 0xee, 0x92, 0xf0, 0xc6, 0xf0, 0x92, 0xf0, 0xc6, 0xf0, 0x92, 0xf0, 0xc6, - 0xf0, 0x92, 0xf0, 0xc6, 0xf0, 0x92, 0xf1, 0xc6, 0xf1, 0x92, 0xf1, 0xc6, - 0xf1, 0x92, 0xf1, 0xc6, 0xf1, 0x92, 0xf1, 0xc6, 0xf1, 0x92, 0xf2, 0xc6, - 0xf2, 0x92, 0xf2, 0xc6, 0xf2, 0x92, 0xf2, 0xc6, 0xf2, 0x92, 0xf2, 0xc6, - 0xf2, 0x92, 0xf2, 0xc6, 0xf2, 0x92, 0xf3, 0xc6, 0xf3, 0x92, 0xf3, 0xc6, - 0xf3, 0x92, 0xf3, 0xc6, 0xf3, 0x92, 0xf3, 0xc6, 0xf3, 0x92, 0xf4, 0xc6, - 0xf4, 0x92, 0xf4, 0xc6, 0xf4, 0x92, 0xf4, 0xc6, 0xf4, 0x92, 0xf4, 0xc6, - 0xf4, 0x92, 0xf5, 0xc6, 0xf5, 0x92, 0xf5, 0xc6, 0xf5, 0x92, 0xf5, 0xc6, - 0xf5, 0x92, 0xf5, 0xc6, 0xf5, 0x92, 0xf5, 0xc6, 0xf5, 0x92, 0xf6, 0xc6, - 0xf6, 0x92, 0xf6, 0xc7, 0xf6, 0x93, 0xf6, 0xc7, 0xf6, 0x93, 0xf6, 0xc7, - 0xf6, 0x93, 0xf7, 0xc7, 0xf7, 0x93, 0xf7, 0xc7, 0xf7, 0x93, 0xf8, 0xc7, - 0xf7, 0x92, 0xf8, 0xc7, 0xf7, 0x92, 0xf8, 0xc7, 0xf7, 0x92, 0xf8, 0xc7, - 0xf7, 0x92, 0xf8, 0xc7, 0xf7, 0x92, 0xf8, 0xc7, 0xf7, 0x92, 0xf8, 0xc6, - 0xf8, 0x92, 0xf9, 0xc7, 0xf7, 0x92, 0xf9, 0xc6, 0xf8, 0x92, 0xf9, 0xc7, - 0xf7, 0x92, 0xf9, 0xc6, 0xf8, 0x92, 0xfa, 0xc7, 0xf7, 0x92, 0xfa, 0xc6, - 0xf8, 0x92, 0xfa, 0xc7, 0xf7, 0x92, 0xfa, 0xc6, 0xf8, 0x92, 0xfa, 0xc7, - 0xf7, 0x92, 0xfb, 0xc6, 0xf8, 0x92, 0xfb, 0xc7, 0xf7, 0x92, 0xfb, 0xc6, - 0xf8, 0x92, 0xfb, 0xc5, 0xf8, 0x92, 0xfc, 0xc6, 0xf8, 0x92, 0xfc, 0xc5, - 0xf8, 0x92, 0xfc, 0xc6, 0xf8, 0x92, 0xfc, 0xc5, 0xf8, 0x92, 0xfc, 0xc6, - 0xf8, 0x92, 0xfd, 0xc5, 0xf8, 0x92, 0xfd, 0xc6, 0xf8, 0x92, 0xfd, 0xc5, - 0xf8, 0x92, 0xfd, 0xc5, 0xf8, 0x92, 0xfe, 0xc5, 0xf8, 0x92, 0xfe, 0xc5, - 0xf8, 0x92, 0xfe, 0xc5, 0xf8, 0x92, 0xfe, 0xc5, 0xf8, 0x92, 0xfe, 0xc5, - 0xf8, 0x92, 0xff, 0xc5, 0xf8, 0x92, 0xff, 0xc5, 0xf8, 0x92, 0x03, 0xcd, - 0x8e, 0x92, 0x0a, 0xcf, 0x8e, 0x92, 0x0f, 0xcd, 0x8e, 0x92, 0x14, 0xcf, - 0x8e, 0x92, 0x17, 0xcd, 0x8e, 0x92, 0x1b, 0xcf, 0x8e, 0x92, 0x1e, 0xcd, - 0x8e, 0x92, 0x20, 0xcb, 0x8e, 0x92, 0x23, 0xcd, 0x8e, 0x92, 0x25, 0xcb, - 0x8e, 0x92, 0x27, 0xcd, 0x8e, 0x92, 0x29, 0xcb, 0x8e, 0x92, 0x2b, 0xcd, - 0x8e, 0x92, 0x2d, 0xcb, 0x8e, 0x92, 0x2f, 0xcd, 0x8e, 0x92, 0x31, 0xcb, - 0x8e, 0x92, 0x32, 0xcd, 0x8e, 0x92, 0x34, 0xcb, 0x8e, 0x92, 0x35, 0xcd, - 0x8e, 0x92, 0x37, 0xcb, 0x8e, 0x92, 0x38, 0xcd, 0x8e, 0x92, 0x3a, 0xcb, - 0x8e, 0x92, 0x3b, 0xcd, 0x8e, 0x92, 0x3c, 0xcb, 0x8e, 0x92, 0x3e, 0xcd, - 0x8e, 0x92, 0x3f, 0xcb, 0x8e, 0x92, 0x40, 0xcd, 0x8e, 0x92, 0x42, 0xcb, - 0x8e, 0x92, 0x43, 0xcd, 0x8e, 0x92, 0x44, 0xcb, 0x8e, 0x92, 0x45, 0xcd, - 0x8e, 0x92, 0x46, 0xcb, 0x8e, 0x92, 0x47, 0xcd, 0x8e, 0x92, 0x48, 0xcb, - 0x8e, 0x92, 0x49, 0xcd, 0x8e, 0x92, 0x4a, 0xcb, 0x8e, 0x92, 0x4b, 0xcd, - 0x8e, 0x92, 0x4c, 0xcb, 0x8e, 0x92, 0x4d, 0xcd, 0x8e, 0x92, 0x4e, 0xcb, - 0x8e, 0x92, 0x4f, 0xcd, 0x8e, 0x92, 0x50, 0xcb, 0x8e, 0x92, 0x51, 0xcd, - 0x8e, 0x92, 0x52, 0xcb, 0x8e, 0x92, 0x53, 0xcd, 0x8e, 0x92, 0x54, 0xcb, - 0x8e, 0x92, 0x55, 0xcd, 0x8e, 0x92, 0x56, 0xcb, 0x8e, 0x92, 0x57, 0xcd, - 0x8e, 0x92, 0x58, 0xcb, 0x8e, 0x92, 0x58, 0xcd, 0x8e, 0x92, 0x59, 0xcb, - 0x8e, 0x92, 0x5a, 0xcd, 0x8e, 0x92, 0x5b, 0xcb, 0x8e, 0x92, 0x5c, 0xcd, - 0x8e, 0x92, 0x5d, 0xcb, 0x8e, 0x92, 0x5d, 0xcd, 0x8e, 0x92, 0x5e, 0xcb, - 0x8e, 0x92, 0x5f, 0xcd, 0x8e, 0x92, 0x60, 0xcb, 0x8e, 0x92, 0x60, 0xcd, - 0x8e, 0x92, 0x61, 0xcb, 0x8e, 0x92, 0x62, 0xcd, 0x8e, 0x92, 0x63, 0xcb, - 0x8e, 0x92, 0x63, 0xcd, 0x8e, 0x92, 0x64, 0xcb, 0x8e, 0x92, 0x65, 0xcd, - 0x8e, 0x92, 0x66, 0xcb, 0x8e, 0x92, 0x66, 0xc9, 0x8f, 0x92, 0x67, 0xcb, - 0x8e, 0x92, 0x68, 0xc9, 0x8f, 0x92, 0x68, 0xcb, 0x8e, 0x92, 0x69, 0xc9, - 0x8f, 0x92, 0x6a, 0xcb, 0x8e, 0x92, 0x6a, 0xc9, 0x8f, 0x92, 0x6b, 0xcb, - 0x8e, 0x92, 0x6c, 0xc9, 0x8f, 0x92, 0x6c, 0xcb, 0x8e, 0x92, 0x6d, 0xc9, - 0x8f, 0x92, 0x6e, 0xcb, 0x8e, 0x92, 0x6e, 0xc9, 0x8f, 0x92, 0x6f, 0xcb, - 0x8e, 0x92, 0x70, 0xc9, 0x8f, 0x92, 0x70, 0xcb, 0x8e, 0x92, 0x71, 0xc9, - 0x8f, 0x92, 0x72, 0xcb, 0x8e, 0x92, 0x72, 0xc9, 0x8f, 0x92, 0x73, 0xcb, - 0x8e, 0x92, 0x73, 0xc9, 0x8f, 0x92, 0x74, 0xcb, 0x8e, 0x92, 0x75, 0xc9, - 0x8f, 0x92, 0x75, 0xcb, 0x8e, 0x92, 0x76, 0xc9, 0x8f, 0x92, 0x76, 0xcb, - 0x8e, 0x92, 0x77, 0xc9, 0x8f, 0x92, 0x78, 0xcb, 0x8e, 0x92, 0x78, 0xc9, - 0x8f, 0x92, 0x79, 0xcb, 0x8e, 0x92, 0x79, 0xc9, 0x8f, 0x92, 0x7a, 0xcb, - 0x8e, 0x92, 0x7a, 0xc9, 0x8f, 0x92, 0x7b, 0xcb, 0x8e, 0x92, 0x7c, 0xc9, - 0x8f, 0x92, 0x7c, 0xcb, 0x8e, 0x92, 0x7d, 0xc9, 0x8f, 0x92, 0x7d, 0xc7, - 0x8f, 0x92, 0x7e, 0xc9, 0x8f, 0x92, 0x7e, 0xc7, 0x8f, 0x92, 0x7f, 0xc9, - 0x8f, 0x92, 0x7f, 0xc7, 0x8f, 0x92, 0x80, 0xc9, 0x8f, 0x92, 0x81, 0xc7, - 0x8f, 0x92, 0x81, 0xc9, 0x8f, 0x92, 0x82, 0xc7, 0x8f, 0x92, 0x82, 0xc9, - 0x8f, 0x92, 0x83, 0xc7, 0x8f, 0x92, 0x83, 0xc9, 0x8f, 0x92, 0x84, 0xc7, - 0x8f, 0x92, 0x84, 0xc9, 0x8f, 0x92, 0x85, 0xc7, 0x8f, 0x92, 0x85, 0xc9, - 0x8f, 0x92, 0x86, 0xc7, 0x8f, 0x92, 0x86, 0xc9, 0x8f, 0x92, 0x87, 0xc7, - 0x8f, 0x92, 0x87, 0xc9, 0x8f, 0x92, 0x88, 0xc7, 0x8f, 0x92, 0x88, 0xc9, - 0x8f, 0x92, 0x89, 0xc7, 0x8f, 0x92, 0x89, 0xc9, 0x8f, 0x92, 0x8a, 0xc7, - 0x8f, 0x92, 0x8a, 0xc9, 0x8f, 0x92, 0x8b, 0xc7, 0x8f, 0x92, 0x8b, 0xc9, - 0x8f, 0x92, 0x8c, 0xc7, 0x8f, 0x92, 0x8c, 0xc7, 0x90, 0x92, 0x8d, 0xc7, - 0x8f, 0x92, 0x8d, 0xc7, 0x90, 0x92, 0x8e, 0xc7, 0x8f, 0x92, 0x8e, 0xc7, - 0x90, 0x92, 0x8e, 0xc7, 0x8f, 0x92, 0x8f, 0xc7, 0x90, 0x92, 0x8f, 0xc7, - 0x8f, 0x91, 0x8f, 0xc7, 0x90, 0x92, 0x8f, 0xc7, 0x90, 0x91, 0x8f, 0xc7, - 0x91, 0x92, 0x93, 0xc7, 0x91, 0x92, 0x93, 0xc7, 0x92, 0x92, 0x93, 0xc7, - 0x92, 0x92, 0x93, 0xc7, 0x92, 0x92, 0x93, 0xc7, 0x92, 0x92, 0x94, 0xc7, - 0x92, 0x92, 0x94, 0xc7, 0x92, 0x92, 0x94, 0xc6, 0x93, 0x92, 0x95, 0xc9, - 0x95, 0x92, 0x95, 0xc9, 0x95, 0x92, 0x96, 0xc9, 0x96, 0x92, 0x96, 0xc9, - 0x96, 0x92, 0x97, 0xc9, 0x97, 0x92, 0x97, 0xc9, 0x97, 0x92, 0x98, 0xc9, - 0x97, 0x92, 0x98, 0xc9, 0x97, 0x92, 0x98, 0xc9, 0x97, 0x92, 0x99, 0xc9, - 0x97, 0x92, 0x99, 0xca, 0x99, 0x92, 0x9a, 0xca, 0x9a, 0x92, 0x9a, 0xca, - 0x9a, 0x92, 0x9a, 0xca, 0x9a, 0x92, 0x9b, 0xca, 0x9b, 0x92, 0x9b, 0xca, - 0x9b, 0x92, 0x9c, 0xca, 0x9c, 0x92, 0x9c, 0xca, 0x9b, 0x92, 0x9d, 0xca, - 0x9c, 0x92, 0x9d, 0xca, 0x9b, 0x92, 0x9d, 0xca, 0x9c, 0x92, 0x9e, 0xca, - 0x9e, 0x92, 0x9e, 0xca, 0x9e, 0x92, 0x9f, 0xca, 0x9f, 0x92, 0x9f, 0xca, - 0x9f, 0x92, 0x9f, 0xca, 0x9f, 0x92, 0xa0, 0xca, 0xa0, 0x92, 0xa0, 0xca, - 0xa0, 0x92, 0xa1, 0xc9, 0xa4, 0x92, 0xa1, 0xc8, 0xa4, 0x92, 0xa1, 0xc7, - 0xa5, 0x92, 0xa2, 0xc8, 0xa4, 0x92, 0xa2, 0xc7, 0xa5, 0x92, 0xa3, 0xc8, - 0xa4, 0x92, 0xa3, 0xc7, 0xa5, 0x92, 0xa3, 0xc8, 0xa4, 0x92, 0xa4, 0xc7, - 0xa5, 0x92, 0xa4, 0xc8, 0xa4, 0x92, 0xa4, 0xc7, 0xa5, 0x92, 0xa4, 0xc7, - 0xa5, 0x92, 0xa4, 0xc7, 0xa5, 0x92, 0xa4, 0xc7, 0xa6, 0x92, 0xa4, 0xc7, - 0xa6, 0x92, 0xa4, 0xc7, 0xa6, 0x92, 0xa4, 0xc7, 0xa7, 0x92, 0xa4, 0xc7, - 0xa7, 0x92, 0xa5, 0xc7, 0xa8, 0x8f, 0xa4, 0xc7, 0xa8, 0x92, 0xa5, 0xc7, - 0xa8, 0x8f, 0xa4, 0xc7, 0xa9, 0x92, 0xa5, 0xc7, 0xa9, 0x8f, 0xa4, 0xc7, - 0xaa, 0x92, 0xa5, 0xc7, 0xaa, 0x8f, 0xa4, 0xc7, 0xaa, 0x92, 0xa5, 0xc7, - 0xab, 0x8f, 0xa4, 0xc7, 0xab, 0x92, 0xa5, 0xc7, 0xab, 0x8f, 0xa4, 0xc7, - 0xac, 0x92, 0xa5, 0xc7, 0xac, 0x8f, 0xa4, 0xc7, 0xac, 0x92, 0xa5, 0xc7, - 0xad, 0x8f, 0xa4, 0xc7, 0xad, 0x92, 0xa5, 0xc7, 0xae, 0x8f, 0xa4, 0xc7, - 0xae, 0x92, 0xa5, 0xc7, 0xae, 0x8f, 0xa4, 0xc7, 0xaf, 0x92, 0xa5, 0xc7, - 0xaf, 0x8f, 0xa4, 0xc7, 0xaf, 0x92, 0xa5, 0xc7, 0xb0, 0x8f, 0xa4, 0xc7, - 0xb0, 0x92, 0xa5, 0xc7, 0xb0, 0x8f, 0xa4, 0xc7, 0xb1, 0x92, 0xa5, 0xc7, - 0xb1, 0x8f, 0xa4, 0xc7, 0xb2, 0x92, 0xa5, 0xc7, 0xb2, 0x8f, 0xa5, 0xc7, - 0xb2, 0x8c, 0xa5, 0xc7, 0xb3, 0x8f, 0xa5, 0xc7, 0xb3, 0x8c, 0xa5, 0xc7, - 0xb3, 0x8f, 0xa5, 0xc7, 0xb4, 0x8c, 0xa5, 0xc7, 0xb4, 0x8f, 0xa5, 0xc7, - 0xb4, 0x8c, 0xa5, 0xc7, 0xb5, 0x8f, 0xa5, 0xc7, 0xb5, 0x8c, 0xa5, 0xc7, - 0xb5, 0x8f, 0xa5, 0xc7, 0xb6, 0x8c, 0xa5, 0xc7, 0xb6, 0x8f, 0xa5, 0xc7, - 0xb6, 0x8c, 0xa5, 0xc7, 0xb7, 0x8f, 0xa5, 0xc7, 0xb7, 0x8c, 0xa5, 0xc7, - 0xb7, 0x8f, 0xa5, 0xc7, 0xb8, 0x8c, 0xa5, 0xc7, 0xb8, 0x8f, 0xa5, 0xc7, - 0xb8, 0x8c, 0xa5, 0xc7, 0xb9, 0x8f, 0xa5, 0xc7, 0xb9, 0x8c, 0xa5, 0xc7, - 0xb9, 0x8f, 0xa5, 0xc7, 0xba, 0x8c, 0xa5, 0xc7, 0xba, 0x8f, 0xa5, 0xc7, - 0xba, 0x8c, 0xa5, 0xc7, 0xbb, 0x8f, 0xbe, 0xc7, 0xbb, 0x73, 0xbd, 0xc7, - 0xbb, 0x73, 0xc1, 0xc7, 0xbc, 0x74, 0xc1, 0xc7, 0xbc, 0x74, 0xc1, 0xc7, - 0xbc, 0x74, 0xc1, 0xc7, 0xbd, 0x74, 0xc1, 0xc7, 0xbd, 0x74, 0xc1, 0xc7, - 0xbd, 0x74, 0xc1, 0xc7, 0xbe, 0x74, 0xc1, 0xc7, 0xbe, 0x74, 0xc1, 0xc7, - 0xbe, 0x74, 0xc1, 0xc7, 0xbf, 0x74, 0xc1, 0xc7, 0xbf, 0x74, 0xc4, 0xc7, - 0xbf, 0x75, 0xc1, 0xc7, 0xc0, 0x74, 0xc4, 0xc7, 0xc0, 0x75, 0xc5, 0xc7, - 0xc0, 0x75, 0xc4, 0xc7, 0xc1, 0x75, 0xc5, 0xc7, 0xc1, 0x75, 0xc4, 0xc7, - 0xc1, 0x75, 0xc5, 0xc7, 0xc1, 0x75, 0xc4, 0xc7, 0xc2, 0x75, 0xc5, 0xc7, - 0xc2, 0x75, 0xc4, 0xc7, 0xc2, 0x75, 0xd4, 0xc7, 0xc3, 0x94, 0xd4, 0xc7, - 0xc3, 0x97, 0xd4, 0xc7, 0xc3, 0x94, 0xd4, 0xc7, 0xc4, 0x97, 0xd4, 0xc7, - 0xc4, 0x94, 0xd4, 0xc7, 0xc4, 0x97, 0xd4, 0xc7, 0xc5, 0x94, 0xd4, 0xc7, - 0xc5, 0x97, 0xd4, 0xc7, 0xc5, 0x94, 0xd4, 0xc7, 0xc6, 0x97, 0xd4, 0xc7, - 0xc6, 0x94, 0xd4, 0xc7, 0xc6, 0x97, 0xd4, 0xc7, 0xc6, 0x94, 0xd4, 0xc7, - 0xc7, 0x97, 0xd4, 0xc7, 0xc7, 0x94, 0xd4, 0xc7, 0xc7, 0x97, 0xd4, 0xc7, - 0xc8, 0x94, 0xd4, 0xc7, 0xc8, 0x97, 0xd4, 0xc7, 0xc8, 0x94, 0xd4, 0xc7, - 0xc9, 0x97, 0xd4, 0xc7, 0xc9, 0x94, 0xd4, 0xc7, 0xc9, 0x97, 0xd4, 0xc7, - 0xc9, 0x94, 0xd4, 0xc7, 0xca, 0x97, 0xd4, 0xc7, 0xca, 0x94, 0xd4, 0xc7, - 0xca, 0x97, 0xd4, 0xc7, 0xcb, 0x94, 0xd4, 0xc7, 0xcb, 0x97, 0xd4, 0xc7, - 0xcb, 0x94, 0xd4, 0xc7, 0xcc, 0x97, 0xd4, 0xc7, 0xcc, 0x94, 0xd4, 0xc7, - 0xcc, 0x97, 0xd4, 0xc7, 0xcc, 0x94, 0xd4, 0xc7, 0xcd, 0x97, 0xd4, 0xc7, - 0xcd, 0x94, 0xd4, 0xc7, 0xcd, 0x93, 0xd4, 0xc7, 0xce, 0x94, 0xd4, 0xc7, - 0xce, 0x93, 0xd4, 0xc7, 0xce, 0x94, 0xd4, 0xc7, 0xce, 0x93, 0xd4, 0xc7, - 0xcf, 0x94, 0xd4, 0xc7, 0xcf, 0x93, 0xd4, 0xc7, 0xcf, 0x94, 0xd4, 0xc7, - 0xd0, 0x93, 0xd4, 0xc7, 0xd0, 0x94, 0xd4, 0xc7, 0xd0, 0x93, 0xd4, 0xc7, - 0xd0, 0x94, 0xd4, 0xc7, 0xd1, 0x93, 0xd4, 0xc7, 0xd1, 0x94, 0xd4, 0xc7, - 0xd1, 0x93, 0xd4, 0xc7, 0xd2, 0x94, 0xd4, 0xc7, 0xd2, 0x93, 0xd4, 0xc7, - 0xd2, 0x94, 0xd4, 0xc7, 0xd2, 0x93, 0xd4, 0xc7, 0xd3, 0x94, 0xd4, 0xc7, - 0xd3, 0x93, 0xd4, 0xc7, 0xd3, 0x93, 0xd4, 0xc7, 0xd4, 0x93, 0xd4, 0xc7, - 0xd4, 0x93, 0xd4, 0xc7, 0xd4, 0x93, 0xd4, 0xc7, 0xd4, 0x93, 0xd5, 0xc7, - 0xd5, 0x93, 0xd5, 0xc7, 0xd5, 0x93, 0xd5, 0xc7, 0xd5, 0x93, 0xd6, 0xc7, - 0xd6, 0x93, 0xd6, 0xc7, 0xd6, 0x93, 0xd6, 0xc7, 0xd6, 0x93, 0xd6, 0xc7, - 0xd6, 0x93, 0xd6, 0xc7, 0xd7, 0x93, 0xd7, 0xc7, 0xd7, 0x94, 0xd7, 0xc7, - 0xd7, 0x94, 0xd7, 0xc7, 0xd7, 0x94, 0xd8, 0xc7, 0xd8, 0x94, 0xd8, 0xc7, - 0xd8, 0x94, 0xd8, 0xc7, 0xd8, 0x94, 0xd9, 0xc7, 0xd9, 0x94, 0xd9, 0xc7, - 0xd9, 0x94, 0xd9, 0xc7, 0xd9, 0x94, 0xd9, 0xc7, 0xd9, 0x94, 0xd9, 0xc7, - 0xda, 0x94, 0xd9, 0xc7, 0xda, 0x94, 0xd9, 0xc7, 0xda, 0x94, 0xda, 0xc7, - 0xda, 0x95, 0xdb, 0xc7, 0xdb, 0x95, 0xdb, 0xc7, 0xdb, 0x95, 0xdb, 0xc7, - 0xdb, 0x95, 0xdb, 0xc7, 0xdb, 0x95, 0xdc, 0xc7, 0xdc, 0x95, 0xdc, 0xc7, - 0xdc, 0x95, 0xdc, 0xc7, 0xdc, 0x95, 0xdc, 0xc7, 0xdd, 0x95, 0xdc, 0xc7, - 0xdd, 0x95, 0xdc, 0xc7, 0xdd, 0x95, 0xdd, 0xc7, 0xdd, 0x96, 0xde, 0xc7, - 0xde, 0x96, 0xde, 0xc7, 0xde, 0x96, 0xde, 0xc7, 0xde, 0x96, 0xde, 0xc7, - 0xde, 0x96, 0xdf, 0xc7, 0xdf, 0x96, 0xdf, 0xc7, 0xdf, 0x96, 0xdf, 0xc7, - 0xdf, 0x96, 0xdf, 0xc7, 0xdf, 0x96, 0xdf, 0xc7, 0xe0, 0x96, 0xdf, 0xc7, - 0xe0, 0x96, 0xe0, 0xc7, 0xe0, 0x97, 0xe1, 0xc7, 0xe1, 0x97, 0xe1, 0xc7, - 0xe1, 0x97, 0xe1, 0xc7, 0xe1, 0x97, 0xe1, 0xc7, 0xe1, 0x97, 0xe2, 0xc7, - 0xe2, 0x97, 0xe2, 0xc7, 0xe2, 0x97, 0xe2, 0xc7, 0xe2, 0x97, 0xe2, 0xc7, - 0xe2, 0x97, 0xe2, 0xc7, 0xe3, 0x97, 0xe2, 0xc7, 0xe3, 0x97, 0xe2, 0xc7, - 0xe3, 0x97, 0xe2, 0xc7, 0xe3, 0x97, 0xe4, 0xc7, 0xe4, 0x98, 0xe4, 0xc7, - 0xe4, 0x98, 0xe4, 0xc7, 0xe4, 0x98, 0xe4, 0xc7, 0xe4, 0x98, 0xe5, 0xc7, - 0xe5, 0x98, 0xe4, 0xc7, 0xe5, 0x98, 0xe5, 0xc7, 0xe5, 0x98, 0xe4, 0xc7, - 0xe5, 0x98, 0xe5, 0xc7, 0xe6, 0x98, 0xe4, 0xc7, 0xe6, 0x98, 0xe5, 0xc7, - 0xe6, 0x98, 0xe6, 0xc7, 0xe6, 0x99, 0xe7, 0xc7, 0xe7, 0x99, 0xe7, 0xc7, - 0xe7, 0x99, 0xe7, 0xc7, 0xe7, 0x99, 0xe7, 0xc7, 0xe7, 0x99, 0xe7, 0xc7, - 0xe8, 0x99, 0xe7, 0xc7, 0xe8, 0x99, 0xea, 0xc7, 0xe8, 0x8c, 0xea, 0xc7, - 0xe8, 0x8c, 0xea, 0xc7, 0xe9, 0x8c, 0xea, 0xc7, 0xe9, 0x8c, 0xea, 0xc7, - 0xe9, 0x8c, 0xea, 0xc7, 0xe9, 0x8c, 0xea, 0xc7, 0xea, 0x8c, 0xea, 0xc7, - 0xea, 0x8c, 0xea, 0xc7, 0xea, 0x8c, 0xec, 0xc7, 0xea, 0x8d, 0xec, 0xc7, - 0xeb, 0x8d, 0xec, 0xc7, 0xeb, 0x8d, 0xec, 0xc7, 0xeb, 0x8d, 0xec, 0xc7, - 0xeb, 0x8d, 0xec, 0xc7, 0xec, 0x8d, 0xec, 0xc7, 0xec, 0x8d, 0xec, 0xc7, - 0xec, 0x8d, 0xec, 0xc7, 0xec, 0x8d, 0xee, 0xc7, 0xec, 0x92, 0xef, 0xc7, - 0xed, 0x92, 0xee, 0xc7, 0xed, 0x92, 0xef, 0xc7, 0xed, 0x92, 0xee, 0xc7, - 0xed, 0x92, 0xef, 0xc7, 0xee, 0x92, 0xee, 0xc7, 0xee, 0x92, 0xef, 0xc7, - 0xee, 0x92, 0xee, 0xc7, 0xee, 0x92, 0xef, 0xc7, 0xee, 0x92, 0xef, 0xc7, - 0xee, 0x92, 0xef, 0xc7, 0xee, 0x92, 0xef, 0xc7, 0xee, 0x92, 0xf0, 0xc6, - 0xf0, 0x92, 0xf0, 0xc6, 0xf0, 0x92, 0xf0, 0xc6, 0xf0, 0x92, 0xf0, 0xc6, - 0xf0, 0x92, 0xf1, 0xc6, 0xf2, 0x92, 0xf1, 0xc6, 0xf2, 0x92, 0xf1, 0xc6, - 0xf2, 0x92, 0xf1, 0xc6, 0xf2, 0x92, 0xf2, 0xc6, 0xf2, 0x92, 0xf2, 0xc6, - 0xf2, 0x92, 0xf2, 0xc6, 0xf2, 0x92, 0xf2, 0xc6, 0xf2, 0x92, 0xf2, 0xc6, - 0xf2, 0x92, 0xf3, 0xc6, 0xf3, 0x92, 0xf3, 0xc6, 0xf3, 0x92, 0xf3, 0xc6, - 0xf3, 0x92, 0xf3, 0xc6, 0xf3, 0x92, 0xf4, 0xc6, 0xf4, 0x92, 0xf4, 0xc6, - 0xf4, 0x92, 0xf4, 0xc7, 0xf5, 0x92, 0xf4, 0xc7, 0xf5, 0x92, 0xf5, 0xc7, - 0xf5, 0x92, 0xf5, 0xc7, 0xf5, 0x92, 0xf5, 0xc7, 0xf5, 0x92, 0xf5, 0xc7, - 0xf5, 0x92, 0xf5, 0xc7, 0xf5, 0x92, 0xf6, 0xc7, 0xf6, 0x92, 0xf6, 0xc7, - 0xf6, 0x92, 0xf6, 0xc7, 0xf6, 0x92, 0xf6, 0xc7, 0xf6, 0x92, 0xf7, 0xc7, - 0xf7, 0x92, 0xf7, 0xc7, 0xf7, 0x92, 0xf7, 0xc7, 0xf7, 0x92, 0xf7, 0xc7, - 0xf7, 0x92, 0xf8, 0xc7, 0xf7, 0x92, 0xf8, 0xc7, 0xf7, 0x92, 0xf8, 0xc7, - 0xf7, 0x92, 0xf8, 0xc7, 0xf7, 0x92, 0xf8, 0xc6, 0xf8, 0x92, 0xf9, 0xc7, - 0xf7, 0x92, 0xf9, 0xc6, 0xf8, 0x92, 0xf9, 0xc7, 0xf7, 0x92, 0xf9, 0xc6, - 0xf8, 0x92, 0xfa, 0xc7, 0xf7, 0x92, 0xfa, 0xc6, 0xf8, 0x92, 0xfa, 0xc7, - 0xf7, 0x92, 0xfa, 0xc6, 0xf8, 0x92, 0xfa, 0xc7, 0xf7, 0x92, 0xfb, 0xc6, - 0xf8, 0x92, 0xfb, 0xc7, 0xf7, 0x92, 0xfb, 0xc6, 0xf8, 0x92, 0xfb, 0xc7, - 0xf7, 0x92, 0xfc, 0xc6, 0xf8, 0x92, 0xfc, 0xc7, 0xf7, 0x92, 0xfc, 0xc6, - 0xf8, 0x92, 0xfc, 0xc7, 0xf7, 0x92, 0xfc, 0xc6, 0xf8, 0x92, 0xfd, 0xc7, - 0xf7, 0x92, 0xfd, 0xc6, 0xf8, 0x92, 0xfd, 0xc4, 0xf8, 0x92, 0xfd, 0xc6, - 0xf8, 0x92, 0xfe, 0xc4, 0xf8, 0x92, 0xfe, 0xc6, 0xf8, 0x92, 0xfe, 0xc4, - 0xf8, 0x92, 0xfe, 0xc6, 0xf8, 0x92, 0xfe, 0xc4, 0xf8, 0x92, 0xff, 0xc6, - 0xf8, 0x92, 0xff, 0xc4, 0xf8, 0x92, 0x03, 0xcd, 0x8e, 0x93, 0x0a, 0xcf, - 0x8e, 0x93, 0x0f, 0xcd, 0x8e, 0x93, 0x14, 0xcf, 0x8e, 0x93, 0x17, 0xcd, - 0x8e, 0x93, 0x1b, 0xcf, 0x8e, 0x93, 0x1e, 0xcd, 0x8e, 0x93, 0x20, 0xcf, - 0x8e, 0x93, 0x23, 0xcd, 0x8e, 0x93, 0x25, 0xcf, 0x8e, 0x93, 0x27, 0xcd, - 0x8e, 0x93, 0x29, 0xcf, 0x8e, 0x93, 0x2b, 0xcd, 0x8e, 0x93, 0x2d, 0xcf, - 0x8e, 0x93, 0x2f, 0xcd, 0x8e, 0x93, 0x31, 0xcf, 0x8e, 0x93, 0x32, 0xcd, - 0x8e, 0x93, 0x34, 0xcf, 0x8e, 0x93, 0x35, 0xcd, 0x8e, 0x93, 0x37, 0xcf, - 0x8e, 0x93, 0x38, 0xcd, 0x8e, 0x93, 0x3a, 0xcf, 0x8e, 0x93, 0x3b, 0xcd, - 0x8e, 0x93, 0x3c, 0xcf, 0x8e, 0x93, 0x3e, 0xcd, 0x8e, 0x93, 0x3f, 0xcf, - 0x8e, 0x93, 0x40, 0xcd, 0x8e, 0x93, 0x42, 0xcf, 0x8e, 0x93, 0x43, 0xcd, - 0x8e, 0x93, 0x44, 0xcf, 0x8e, 0x93, 0x45, 0xcd, 0x8e, 0x93, 0x46, 0xcb, - 0x8e, 0x93, 0x47, 0xcd, 0x8e, 0x93, 0x48, 0xcb, 0x8e, 0x93, 0x49, 0xcd, - 0x8e, 0x93, 0x4a, 0xcb, 0x8e, 0x93, 0x4b, 0xcd, 0x8e, 0x93, 0x4c, 0xcb, - 0x8e, 0x93, 0x4d, 0xcd, 0x8e, 0x93, 0x4e, 0xcb, 0x8e, 0x93, 0x4f, 0xcd, - 0x8e, 0x93, 0x50, 0xcb, 0x8e, 0x93, 0x51, 0xcd, 0x8e, 0x93, 0x52, 0xcb, - 0x8e, 0x93, 0x53, 0xcd, 0x8e, 0x93, 0x54, 0xcb, 0x8e, 0x93, 0x55, 0xcd, - 0x8e, 0x93, 0x56, 0xcb, 0x8e, 0x93, 0x57, 0xcd, 0x8e, 0x93, 0x58, 0xcb, - 0x8e, 0x93, 0x58, 0xcd, 0x8e, 0x93, 0x59, 0xcb, 0x8e, 0x93, 0x5a, 0xcd, - 0x8e, 0x93, 0x5b, 0xcb, 0x8e, 0x93, 0x5c, 0xcd, 0x8e, 0x93, 0x5d, 0xcb, - 0x8e, 0x93, 0x5d, 0xcd, 0x8e, 0x93, 0x5e, 0xcb, 0x8e, 0x93, 0x5f, 0xcd, - 0x8e, 0x93, 0x60, 0xcb, 0x8e, 0x93, 0x60, 0xcd, 0x8e, 0x93, 0x61, 0xcb, - 0x8e, 0x93, 0x62, 0xcd, 0x8e, 0x93, 0x63, 0xcb, 0x8e, 0x93, 0x63, 0xc9, - 0x8f, 0x93, 0x64, 0xcb, 0x8e, 0x93, 0x65, 0xc9, 0x8f, 0x93, 0x66, 0xcb, - 0x8e, 0x93, 0x66, 0xc9, 0x8f, 0x93, 0x67, 0xcb, 0x8e, 0x93, 0x68, 0xc9, - 0x8f, 0x93, 0x68, 0xcb, 0x8e, 0x93, 0x69, 0xc9, 0x8f, 0x93, 0x6a, 0xcb, - 0x8e, 0x93, 0x6a, 0xc9, 0x8f, 0x93, 0x6b, 0xcb, 0x8e, 0x93, 0x6c, 0xc9, - 0x8f, 0x93, 0x6c, 0xcb, 0x8e, 0x93, 0x6d, 0xc9, 0x8f, 0x93, 0x6e, 0xcb, - 0x8e, 0x93, 0x6e, 0xc9, 0x8f, 0x93, 0x6f, 0xcb, 0x8e, 0x93, 0x70, 0xc9, - 0x8f, 0x93, 0x70, 0xcb, 0x8e, 0x93, 0x71, 0xc9, 0x8f, 0x93, 0x72, 0xcb, - 0x8e, 0x93, 0x72, 0xc9, 0x8f, 0x93, 0x73, 0xcb, 0x8e, 0x93, 0x73, 0xc9, - 0x8f, 0x93, 0x74, 0xcb, 0x8e, 0x93, 0x75, 0xc9, 0x8f, 0x93, 0x75, 0xcb, - 0x8e, 0x93, 0x76, 0xc9, 0x8f, 0x93, 0x76, 0xcb, 0x8e, 0x93, 0x77, 0xc9, - 0x8f, 0x93, 0x78, 0xcb, 0x8e, 0x93, 0x78, 0xc9, 0x8f, 0x93, 0x79, 0xcb, - 0x8e, 0x93, 0x79, 0xc9, 0x8f, 0x93, 0x7a, 0xcb, 0x8e, 0x93, 0x7a, 0xc9, - 0x8f, 0x93, 0x7b, 0xcb, 0x8e, 0x93, 0x7c, 0xc9, 0x8f, 0x93, 0x7c, 0xcb, - 0x8e, 0x93, 0x7d, 0xc9, 0x8f, 0x93, 0x7d, 0xc8, 0x8f, 0x93, 0x7e, 0xc9, - 0x8f, 0x93, 0x7e, 0xc8, 0x8f, 0x93, 0x7f, 0xc9, 0x8f, 0x93, 0x7f, 0xc8, - 0x8f, 0x93, 0x80, 0xc9, 0x8f, 0x93, 0x81, 0xc8, 0x8f, 0x93, 0x81, 0xc9, - 0x8f, 0x93, 0x82, 0xc8, 0x8f, 0x93, 0x82, 0xc9, 0x8f, 0x93, 0x83, 0xc8, - 0x8f, 0x93, 0x83, 0xc9, 0x8f, 0x93, 0x84, 0xc8, 0x8f, 0x93, 0x84, 0xc9, - 0x8f, 0x93, 0x85, 0xc8, 0x8f, 0x93, 0x85, 0xc9, 0x8f, 0x93, 0x86, 0xc8, - 0x8f, 0x93, 0x86, 0xc9, 0x8f, 0x93, 0x87, 0xc8, 0x8f, 0x93, 0x87, 0xc9, - 0x8f, 0x93, 0x88, 0xc8, 0x8f, 0x93, 0x88, 0xc9, 0x8f, 0x93, 0x89, 0xc8, - 0x8f, 0x93, 0x89, 0xc9, 0x8f, 0x93, 0x8a, 0xc8, 0x8f, 0x93, 0x8a, 0xc9, - 0x8f, 0x93, 0x8b, 0xc8, 0x8f, 0x93, 0x8b, 0xc9, 0x8f, 0x93, 0x8c, 0xc8, - 0x8f, 0x93, 0x8c, 0xc9, 0x8f, 0x93, 0x8d, 0xc8, 0x8f, 0x93, 0x8d, 0xc9, - 0x8f, 0x93, 0x8e, 0xc8, 0x8f, 0x93, 0x8e, 0xc8, 0x90, 0x93, 0x8e, 0xc8, - 0x8f, 0x93, 0x8f, 0xc8, 0x90, 0x93, 0x8e, 0xc8, 0x8f, 0x93, 0x8f, 0xc8, - 0x90, 0x93, 0x8e, 0xc8, 0x90, 0x93, 0x8f, 0xc8, 0x91, 0x93, 0x93, 0xc8, - 0x91, 0x93, 0x93, 0xc8, 0x92, 0x93, 0x93, 0xc8, 0x92, 0x93, 0x93, 0xc8, - 0x92, 0x93, 0x93, 0xc8, 0x92, 0x93, 0x94, 0xc8, 0x92, 0x93, 0x94, 0xc8, - 0x92, 0x93, 0x94, 0xc9, 0x94, 0x93, 0x95, 0xc9, 0x95, 0x93, 0x95, 0xc9, - 0x94, 0x93, 0x96, 0xc9, 0x95, 0x93, 0x96, 0xc9, 0x94, 0x93, 0x97, 0xc9, - 0x95, 0x93, 0x97, 0xc9, 0x97, 0x93, 0x98, 0xc9, 0x98, 0x93, 0x98, 0xc9, - 0x98, 0x93, 0x98, 0xc9, 0x98, 0x93, 0x99, 0xc9, 0x99, 0x93, 0x99, 0xc9, - 0x99, 0x93, 0x9a, 0xc9, 0x9a, 0x93, 0x9a, 0xc9, 0x99, 0x93, 0x9a, 0xc9, - 0x9a, 0x93, 0x9b, 0xc9, 0x99, 0x93, 0x9b, 0xc9, 0x9a, 0x93, 0x9c, 0xca, - 0x9c, 0x93, 0x9c, 0xca, 0x9c, 0x93, 0x9d, 0xca, 0x9d, 0x93, 0x9d, 0xca, - 0x9d, 0x93, 0x9d, 0xca, 0x9d, 0x93, 0x9e, 0xca, 0x9e, 0x93, 0x9e, 0xca, - 0x9e, 0x93, 0x9f, 0xca, 0x9e, 0x93, 0x9f, 0xca, 0x9e, 0x93, 0x9f, 0xca, - 0x9e, 0x93, 0xa0, 0xca, 0x9e, 0x93, 0xa0, 0xcb, 0xa0, 0x93, 0xa1, 0xc9, - 0xa4, 0x93, 0xa1, 0xc8, 0xa4, 0x93, 0xa1, 0xc8, 0xa5, 0x93, 0xa2, 0xc8, - 0xa4, 0x93, 0xa2, 0xc8, 0xa5, 0x93, 0xa3, 0xc8, 0xa4, 0x93, 0xa3, 0xc8, - 0xa5, 0x93, 0xa3, 0xc8, 0xa4, 0x93, 0xa4, 0xc8, 0xa5, 0x93, 0xa4, 0xc8, - 0xa4, 0x92, 0xa4, 0xc8, 0xa5, 0x93, 0xa4, 0xc8, 0xa5, 0x92, 0xa4, 0xc8, - 0xa5, 0x93, 0xa4, 0xc8, 0xa6, 0x92, 0xa4, 0xc8, 0xa6, 0x93, 0xa4, 0xc8, - 0xa6, 0x92, 0xa4, 0xc8, 0xa7, 0x93, 0xa4, 0xc8, 0xa7, 0x92, 0xa4, 0xc8, - 0xa8, 0x93, 0xa4, 0xc8, 0xa8, 0x92, 0xa4, 0xc8, 0xa8, 0x93, 0xa4, 0xc8, - 0xa9, 0x92, 0xa4, 0xc8, 0xa9, 0x93, 0xa4, 0xc8, 0xaa, 0x92, 0xa4, 0xc8, - 0xaa, 0x93, 0xa4, 0xc8, 0xaa, 0x92, 0xa5, 0xc8, 0xab, 0x8f, 0xa4, 0xc8, - 0xab, 0x92, 0xa5, 0xc8, 0xab, 0x8f, 0xa4, 0xc8, 0xac, 0x92, 0xa5, 0xc8, - 0xac, 0x8f, 0xa4, 0xc8, 0xac, 0x92, 0xa5, 0xc8, 0xad, 0x8f, 0xa4, 0xc8, - 0xad, 0x92, 0xa5, 0xc8, 0xae, 0x8f, 0xa4, 0xc8, 0xae, 0x92, 0xa5, 0xc8, - 0xae, 0x8f, 0xa4, 0xc8, 0xaf, 0x92, 0xa5, 0xc8, 0xaf, 0x8f, 0xa4, 0xc8, - 0xaf, 0x92, 0xa5, 0xc8, 0xb0, 0x8f, 0xa4, 0xc8, 0xb0, 0x92, 0xa5, 0xc8, - 0xb0, 0x8f, 0xa4, 0xc8, 0xb1, 0x92, 0xa5, 0xc8, 0xb1, 0x8f, 0xa4, 0xc8, - 0xb2, 0x92, 0xa5, 0xc8, 0xb2, 0x8f, 0xa5, 0xc8, 0xb2, 0x8d, 0xa5, 0xc8, - 0xb3, 0x8f, 0xa5, 0xc8, 0xb3, 0x8d, 0xa5, 0xc8, 0xb3, 0x8f, 0xa5, 0xc8, - 0xb4, 0x8d, 0xa5, 0xc8, 0xb4, 0x8f, 0xa5, 0xc8, 0xb4, 0x8d, 0xa5, 0xc8, - 0xb5, 0x8f, 0xa5, 0xc8, 0xb5, 0x8d, 0xa5, 0xc8, 0xb5, 0x8f, 0xa5, 0xc8, - 0xb6, 0x8d, 0xa5, 0xc8, 0xb6, 0x8f, 0xa5, 0xc8, 0xb6, 0x8d, 0xa5, 0xc8, - 0xb7, 0x8f, 0xa5, 0xc8, 0xb7, 0x8d, 0xa5, 0xc8, 0xb7, 0x8f, 0xa5, 0xc8, - 0xb8, 0x8d, 0xa5, 0xc8, 0xb8, 0x8f, 0xa5, 0xc8, 0xb8, 0x8d, 0xa5, 0xc8, - 0xb9, 0x8f, 0xa5, 0xc8, 0xb9, 0x8d, 0xa5, 0xc8, 0xb9, 0x8f, 0xa5, 0xc8, - 0xba, 0x8d, 0xa5, 0xc8, 0xba, 0x8f, 0xa5, 0xc8, 0xba, 0x8d, 0xa5, 0xc8, - 0xbb, 0x8f, 0xbf, 0xc8, 0xbb, 0x74, 0xbf, 0xc8, 0xbb, 0x74, 0xbf, 0xc8, - 0xbc, 0x74, 0xbf, 0xc8, 0xbc, 0x74, 0xbf, 0xc8, 0xbc, 0x74, 0xbf, 0xc8, - 0xbd, 0x74, 0xbf, 0xc8, 0xbd, 0x74, 0xc2, 0xc8, 0xbd, 0x75, 0xc3, 0xc8, - 0xbe, 0x75, 0xc2, 0xc8, 0xbe, 0x75, 0xc3, 0xc8, 0xbe, 0x75, 0xc2, 0xc8, - 0xbf, 0x75, 0xc3, 0xc8, 0xbf, 0x75, 0xc2, 0xc8, 0xbf, 0x75, 0xc3, 0xc8, - 0xc0, 0x75, 0xc2, 0xc8, 0xc0, 0x75, 0xc3, 0xc8, 0xc0, 0x75, 0xc2, 0xc8, - 0xc1, 0x75, 0xc3, 0xc8, 0xc1, 0x75, 0xc2, 0xc8, 0xc1, 0x75, 0xc3, 0xc8, - 0xc1, 0x75, 0xc6, 0xc8, 0xc2, 0x76, 0xc6, 0xc8, 0xc2, 0x76, 0xd4, 0xc8, - 0xc2, 0x97, 0xd3, 0xc8, 0xc3, 0x9a, 0xd4, 0xc8, 0xc3, 0x97, 0xd3, 0xc8, - 0xc3, 0x9a, 0xd4, 0xc8, 0xc4, 0x97, 0xd3, 0xc8, 0xc4, 0x9a, 0xd4, 0xc8, - 0xc4, 0x97, 0xd3, 0xc8, 0xc5, 0x9a, 0xd4, 0xc8, 0xc5, 0x97, 0xd3, 0xc8, - 0xc5, 0x9a, 0xd4, 0xc8, 0xc6, 0x97, 0xd3, 0xc8, 0xc6, 0x9a, 0xd4, 0xc8, - 0xc6, 0x97, 0xd3, 0xc8, 0xc6, 0x9a, 0xd4, 0xc8, 0xc7, 0x97, 0xd4, 0xc8, - 0xc7, 0x95, 0xd4, 0xc8, 0xc7, 0x97, 0xd4, 0xc8, 0xc8, 0x95, 0xd4, 0xc8, - 0xc8, 0x97, 0xd4, 0xc8, 0xc8, 0x95, 0xd4, 0xc8, 0xc9, 0x97, 0xd4, 0xc8, - 0xc9, 0x95, 0xd4, 0xc8, 0xc9, 0x97, 0xd4, 0xc8, 0xc9, 0x95, 0xd4, 0xc8, - 0xca, 0x97, 0xd4, 0xc8, 0xca, 0x95, 0xd4, 0xc8, 0xca, 0x97, 0xd4, 0xc8, - 0xcb, 0x95, 0xd4, 0xc8, 0xcb, 0x97, 0xd4, 0xc8, 0xcb, 0x95, 0xd4, 0xc8, - 0xcc, 0x97, 0xd4, 0xc8, 0xcc, 0x95, 0xd4, 0xc8, 0xcc, 0x97, 0xd4, 0xc8, - 0xcc, 0x95, 0xd4, 0xc8, 0xcd, 0x97, 0xd4, 0xc8, 0xcd, 0x95, 0xd4, 0xc8, - 0xcd, 0x97, 0xd4, 0xc8, 0xce, 0x95, 0xd4, 0xc8, 0xce, 0x97, 0xd4, 0xc8, - 0xce, 0x95, 0xd4, 0xc8, 0xce, 0x97, 0xd4, 0xc8, 0xcf, 0x95, 0xd4, 0xc8, - 0xcf, 0x97, 0xd4, 0xc8, 0xcf, 0x95, 0xd4, 0xc8, 0xd0, 0x93, 0xd4, 0xc8, - 0xd0, 0x95, 0xd4, 0xc8, 0xd0, 0x93, 0xd4, 0xc8, 0xd0, 0x95, 0xd4, 0xc8, - 0xd1, 0x93, 0xd4, 0xc8, 0xd1, 0x95, 0xd4, 0xc8, 0xd1, 0x93, 0xd4, 0xc8, - 0xd2, 0x95, 0xd4, 0xc8, 0xd2, 0x93, 0xd4, 0xc8, 0xd2, 0x95, 0xd4, 0xc8, - 0xd2, 0x93, 0xd4, 0xc8, 0xd3, 0x95, 0xd4, 0xc8, 0xd3, 0x93, 0xd4, 0xc8, - 0xd3, 0x93, 0xd4, 0xc8, 0xd4, 0x93, 0xd4, 0xc8, 0xd4, 0x93, 0xd4, 0xc7, - 0xd4, 0x93, 0xd4, 0xc7, 0xd4, 0x93, 0xd5, 0xc7, 0xd5, 0x93, 0xd5, 0xc8, - 0xd5, 0x94, 0xd5, 0xc8, 0xd5, 0x94, 0xd6, 0xc8, 0xd6, 0x94, 0xd6, 0xc8, - 0xd6, 0x94, 0xd6, 0xc8, 0xd6, 0x94, 0xd6, 0xc8, 0xd6, 0x94, 0xd7, 0xc8, - 0xd7, 0x94, 0xd7, 0xc8, 0xd7, 0x94, 0xd7, 0xc8, 0xd7, 0x94, 0xd7, 0xc8, - 0xd7, 0x94, 0xd8, 0xc8, 0xd8, 0x94, 0xd7, 0xc8, 0xd8, 0x94, 0xd8, 0xc8, - 0xd8, 0x94, 0xd9, 0xc8, 0xd9, 0x95, 0xd9, 0xc8, 0xd9, 0x95, 0xd9, 0xc8, - 0xd9, 0x95, 0xd9, 0xc8, 0xd9, 0x95, 0xda, 0xc8, 0xda, 0x95, 0xda, 0xc8, - 0xda, 0x95, 0xda, 0xc8, 0xda, 0x95, 0xda, 0xc8, 0xda, 0x95, 0xdb, 0xc8, - 0xdb, 0x95, 0xda, 0xc8, 0xdb, 0x95, 0xdb, 0xc8, 0xdb, 0x95, 0xda, 0xc8, - 0xdb, 0x95, 0xdb, 0xc8, 0xdc, 0x95, 0xdc, 0xc8, 0xdc, 0x96, 0xdc, 0xc8, - 0xdc, 0x96, 0xdd, 0xc8, 0xdd, 0x96, 0xdd, 0xc8, 0xdd, 0x96, 0xdd, 0xc8, - 0xdd, 0x96, 0xdd, 0xc8, 0xdd, 0x96, 0xde, 0xc8, 0xde, 0x96, 0xdd, 0xc8, - 0xde, 0x96, 0xde, 0xc8, 0xde, 0x96, 0xdd, 0xc8, 0xde, 0x96, 0xde, 0xc8, - 0xdf, 0x96, 0xdf, 0xc8, 0xdf, 0x97, 0xdf, 0xc8, 0xdf, 0x97, 0xdf, 0xc8, - 0xdf, 0x97, 0xe0, 0xc8, 0xe0, 0x97, 0xe0, 0xc8, 0xe0, 0x97, 0xe0, 0xc8, - 0xe0, 0x97, 0xe1, 0xc8, 0xe1, 0x97, 0xe0, 0xc8, 0xe1, 0x97, 0xe1, 0xc8, - 0xe1, 0x97, 0xe0, 0xc8, 0xe1, 0x97, 0xe1, 0xc8, 0xe2, 0x97, 0xe2, 0xc8, - 0xe2, 0x98, 0xe2, 0xc8, 0xe2, 0x98, 0xe2, 0xc8, 0xe2, 0x98, 0xe3, 0xc8, - 0xe3, 0x98, 0xe3, 0xc8, 0xe3, 0x98, 0xe3, 0xc8, 0xe3, 0x98, 0xe3, 0xc8, - 0xe3, 0x98, 0xe3, 0xc8, 0xe4, 0x98, 0xe3, 0xc8, 0xe4, 0x98, 0xe3, 0xc8, - 0xe4, 0x98, 0xe3, 0xc8, 0xe4, 0x98, 0xe3, 0xc8, 0xe5, 0x98, 0xe3, 0xc8, - 0xe5, 0x98, 0xe5, 0xc8, 0xe5, 0x99, 0xe5, 0xc8, 0xe5, 0x99, 0xe6, 0xc8, - 0xe6, 0x99, 0xe6, 0xc8, 0xe6, 0x99, 0xe6, 0xc8, 0xe6, 0x99, 0xe6, 0xc8, - 0xe6, 0x99, 0xe6, 0xc8, 0xe7, 0x99, 0xe6, 0xc8, 0xe7, 0x99, 0xe6, 0xc8, - 0xe7, 0x99, 0xe6, 0xc8, 0xe7, 0x99, 0xe6, 0xc8, 0xe8, 0x99, 0xe8, 0xc8, - 0xe8, 0x9a, 0xe8, 0xc8, 0xe8, 0x9a, 0xea, 0xc8, 0xe8, 0x8d, 0xea, 0xc8, - 0xe9, 0x8d, 0xea, 0xc8, 0xe9, 0x8d, 0xea, 0xc8, 0xe9, 0x8d, 0xea, 0xc8, - 0xe9, 0x8d, 0xea, 0xc8, 0xea, 0x8d, 0xea, 0xc8, 0xea, 0x8d, 0xea, 0xc8, - 0xea, 0x8d, 0xea, 0xc8, 0xea, 0x8d, 0xeb, 0xc8, 0xeb, 0x8d, 0xeb, 0xc8, - 0xeb, 0x8d, 0xeb, 0xc8, 0xeb, 0x8d, 0xeb, 0xc8, 0xeb, 0x8d, 0xec, 0xc8, - 0xec, 0x8d, 0xee, 0xc8, 0xec, 0x96, 0xee, 0xc8, 0xec, 0x93, 0xef, 0xc8, - 0xec, 0x93, 0xee, 0xc8, 0xec, 0x93, 0xef, 0xc8, 0xed, 0x93, 0xee, 0xc8, - 0xed, 0x93, 0xef, 0xc8, 0xed, 0x93, 0xee, 0xc8, 0xed, 0x93, 0xef, 0xc8, - 0xee, 0x93, 0xee, 0xc8, 0xee, 0x93, 0xef, 0xc8, 0xee, 0x93, 0xee, 0xc7, - 0xee, 0x93, 0xef, 0xc8, 0xee, 0x93, 0xef, 0xc7, 0xee, 0x93, 0xef, 0xc8, - 0xee, 0x93, 0xef, 0xc7, 0xee, 0x93, 0xf0, 0xc8, 0xee, 0x93, 0xf0, 0xc7, - 0xee, 0x93, 0xf0, 0xc6, 0xf0, 0x93, 0xf0, 0xc6, 0xf0, 0x93, 0xf1, 0xc6, - 0xf1, 0x93, 0xf1, 0xc6, 0xf1, 0x93, 0xf1, 0xc6, 0xf1, 0x93, 0xf1, 0xc6, - 0xf1, 0x93, 0xf2, 0xc6, 0xf2, 0x93, 0xf2, 0xc6, 0xf2, 0x93, 0xf2, 0xc6, - 0xf2, 0x93, 0xf2, 0xc6, 0xf3, 0x93, 0xf2, 0xc6, 0xf3, 0x93, 0xf3, 0xc6, - 0xf3, 0x93, 0xf3, 0xc6, 0xf3, 0x93, 0xf3, 0xc6, 0xf3, 0x93, 0xf3, 0xc6, - 0xf3, 0x93, 0xf4, 0xc6, 0xf4, 0x93, 0xf4, 0xc6, 0xf4, 0x93, 0xf4, 0xc6, - 0xf4, 0x93, 0xf4, 0xc6, 0xf4, 0x93, 0xf5, 0xc6, 0xf5, 0x93, 0xf5, 0xc6, - 0xf5, 0x93, 0xf5, 0xc6, 0xf5, 0x93, 0xf5, 0xc6, 0xf5, 0x93, 0xf5, 0xc7, - 0xf6, 0x93, 0xf6, 0xc7, 0xf6, 0x93, 0xf6, 0xc7, 0xf6, 0x93, 0xf6, 0xc7, - 0xf6, 0x93, 0xf6, 0xc7, 0xf6, 0x93, 0xf7, 0xc7, 0xf7, 0x93, 0xf7, 0xc7, - 0xf7, 0x93, 0xf7, 0xc7, 0xf7, 0x93, 0xf7, 0xc7, 0xf7, 0x93, 0xf8, 0xc7, - 0xf7, 0x93, 0xf8, 0xc7, 0xf7, 0x93, 0xf8, 0xc7, 0xf7, 0x93, 0xf8, 0xc7, - 0xf7, 0x93, 0xf8, 0xc7, 0xf7, 0x93, 0xf9, 0xc7, 0xf7, 0x93, 0xf9, 0xc7, - 0xf7, 0x93, 0xf9, 0xc7, 0xf7, 0x93, 0xf9, 0xc6, 0xf8, 0x93, 0xfa, 0xc7, - 0xf7, 0x93, 0xfa, 0xc6, 0xf8, 0x93, 0xfa, 0xc7, 0xf7, 0x93, 0xfa, 0xc6, - 0xf8, 0x93, 0xfa, 0xc7, 0xf7, 0x93, 0xfb, 0xc6, 0xf8, 0x93, 0xfb, 0xc7, - 0xf7, 0x93, 0xfb, 0xc6, 0xf8, 0x93, 0xfb, 0xc7, 0xf7, 0x93, 0xfc, 0xc6, - 0xf8, 0x93, 0xfc, 0xc7, 0xf7, 0x93, 0xfc, 0xc6, 0xf8, 0x93, 0xfc, 0xc7, - 0xf7, 0x93, 0xfc, 0xc6, 0xf8, 0x93, 0xfd, 0xc7, 0xf7, 0x93, 0xfd, 0xc6, - 0xf8, 0x93, 0xfd, 0xc5, 0xf8, 0x93, 0xfd, 0xc6, 0xf8, 0x93, 0xfe, 0xc5, - 0xf8, 0x93, 0xfe, 0xc6, 0xf8, 0x93, 0xfe, 0xc5, 0xf8, 0x93, 0xfe, 0xc6, - 0xf8, 0x93, 0xfe, 0xc5, 0xf8, 0x93, 0xff, 0xc6, 0xf8, 0x93, 0xff, 0xc5, - 0xf8, 0x93, 0x03, 0xcd, 0x8e, 0x93, 0x0a, 0xcf, 0x8e, 0x93, 0x0f, 0xcd, - 0x8e, 0x93, 0x14, 0xcf, 0x8e, 0x93, 0x17, 0xcd, 0x8e, 0x93, 0x1b, 0xcf, - 0x8e, 0x93, 0x1e, 0xcd, 0x8e, 0x93, 0x20, 0xcf, 0x8e, 0x93, 0x23, 0xcd, - 0x8e, 0x93, 0x25, 0xcf, 0x8e, 0x93, 0x27, 0xcd, 0x8e, 0x93, 0x29, 0xcf, - 0x8e, 0x93, 0x2b, 0xcd, 0x8e, 0x93, 0x2d, 0xcf, 0x8e, 0x93, 0x2f, 0xcd, - 0x8e, 0x93, 0x31, 0xcf, 0x8e, 0x93, 0x32, 0xcd, 0x8e, 0x93, 0x34, 0xcf, - 0x8e, 0x93, 0x35, 0xcd, 0x8e, 0x93, 0x37, 0xcb, 0x8e, 0x93, 0x38, 0xcd, - 0x8e, 0x93, 0x3a, 0xcb, 0x8e, 0x93, 0x3b, 0xcd, 0x8e, 0x93, 0x3c, 0xcb, - 0x8e, 0x93, 0x3e, 0xcd, 0x8e, 0x93, 0x3f, 0xcb, 0x8e, 0x93, 0x40, 0xcd, - 0x8e, 0x93, 0x42, 0xcb, 0x8e, 0x93, 0x43, 0xcd, 0x8e, 0x93, 0x44, 0xcb, - 0x8e, 0x93, 0x45, 0xcd, 0x8e, 0x93, 0x46, 0xcb, 0x8e, 0x93, 0x47, 0xcd, - 0x8e, 0x93, 0x48, 0xcb, 0x8e, 0x93, 0x49, 0xcd, 0x8e, 0x93, 0x4a, 0xcb, - 0x8e, 0x93, 0x4b, 0xcd, 0x8e, 0x93, 0x4c, 0xcb, 0x8e, 0x93, 0x4d, 0xcd, - 0x8e, 0x93, 0x4e, 0xcb, 0x8e, 0x93, 0x4f, 0xcd, 0x8e, 0x93, 0x50, 0xcb, - 0x8e, 0x93, 0x51, 0xcd, 0x8e, 0x93, 0x52, 0xcb, 0x8e, 0x93, 0x53, 0xcd, - 0x8e, 0x93, 0x54, 0xcb, 0x8e, 0x93, 0x55, 0xcd, 0x8e, 0x93, 0x56, 0xcb, - 0x8e, 0x93, 0x57, 0xcd, 0x8e, 0x93, 0x58, 0xcb, 0x8e, 0x93, 0x58, 0xcd, - 0x8e, 0x93, 0x59, 0xcb, 0x8e, 0x93, 0x5a, 0xcd, 0x8e, 0x93, 0x5b, 0xcb, - 0x8e, 0x93, 0x5c, 0xcd, 0x8e, 0x93, 0x5d, 0xcb, 0x8e, 0x93, 0x5d, 0xcd, - 0x8e, 0x93, 0x5e, 0xcb, 0x8e, 0x93, 0x5f, 0xcd, 0x8e, 0x93, 0x60, 0xcb, - 0x8e, 0x93, 0x60, 0xcd, 0x8e, 0x93, 0x61, 0xcb, 0x8e, 0x93, 0x62, 0xcd, - 0x8e, 0x93, 0x63, 0xcb, 0x8e, 0x93, 0x63, 0xcd, 0x8e, 0x93, 0x64, 0xcb, - 0x8e, 0x93, 0x65, 0xcd, 0x8e, 0x93, 0x66, 0xcb, 0x8e, 0x93, 0x66, 0xcd, - 0x8e, 0x93, 0x67, 0xcb, 0x8e, 0x93, 0x68, 0xcd, 0x8e, 0x93, 0x68, 0xcb, - 0x8e, 0x93, 0x69, 0xcd, 0x8e, 0x93, 0x6a, 0xcb, 0x8e, 0x93, 0x6a, 0xcd, - 0x8e, 0x93, 0x6b, 0xcb, 0x8e, 0x93, 0x6c, 0xcd, 0x8e, 0x93, 0x6c, 0xcb, - 0x8e, 0x93, 0x6d, 0xcd, 0x8e, 0x93, 0x6e, 0xcb, 0x8e, 0x93, 0x6e, 0xc9, - 0x8f, 0x93, 0x6f, 0xcb, 0x8e, 0x93, 0x70, 0xc9, 0x8f, 0x93, 0x70, 0xcb, - 0x8e, 0x93, 0x71, 0xc9, 0x8f, 0x93, 0x72, 0xcb, 0x8e, 0x93, 0x72, 0xc9, - 0x8f, 0x93, 0x73, 0xcb, 0x8e, 0x93, 0x73, 0xc9, 0x8f, 0x93, 0x74, 0xcb, - 0x8e, 0x93, 0x75, 0xc9, 0x8f, 0x93, 0x75, 0xcb, 0x8e, 0x93, 0x76, 0xc9, - 0x8f, 0x93, 0x76, 0xcb, 0x8e, 0x93, 0x77, 0xc9, 0x8f, 0x93, 0x78, 0xcb, - 0x8e, 0x93, 0x78, 0xc9, 0x8f, 0x93, 0x79, 0xcb, 0x8e, 0x93, 0x79, 0xc9, - 0x8f, 0x93, 0x7a, 0xcb, 0x8e, 0x93, 0x7a, 0xc9, 0x8f, 0x93, 0x7b, 0xcb, - 0x8e, 0x93, 0x7c, 0xc9, 0x8f, 0x93, 0x7c, 0xcb, 0x8e, 0x93, 0x7d, 0xc9, - 0x8f, 0x93, 0x7d, 0xcb, 0x8e, 0x93, 0x7e, 0xc9, 0x8f, 0x93, 0x7e, 0xcb, - 0x8e, 0x93, 0x7f, 0xc9, 0x8f, 0x93, 0x7f, 0xcb, 0x8e, 0x93, 0x80, 0xc9, - 0x8f, 0x93, 0x81, 0xcb, 0x8e, 0x93, 0x81, 0xc9, 0x8f, 0x93, 0x82, 0xcb, - 0x8e, 0x93, 0x82, 0xc9, 0x8f, 0x93, 0x83, 0xcb, 0x8e, 0x93, 0x83, 0xc9, - 0x8f, 0x93, 0x84, 0xc8, 0x8f, 0x93, 0x84, 0xc9, 0x8f, 0x93, 0x85, 0xc8, - 0x8f, 0x93, 0x85, 0xc9, 0x8f, 0x93, 0x86, 0xc8, 0x8f, 0x93, 0x86, 0xc9, - 0x8f, 0x93, 0x87, 0xc8, 0x8f, 0x93, 0x87, 0xc9, 0x8f, 0x93, 0x88, 0xc8, - 0x8f, 0x93, 0x88, 0xc9, 0x8f, 0x93, 0x89, 0xc8, 0x8f, 0x93, 0x89, 0xc9, - 0x8f, 0x93, 0x8a, 0xc8, 0x8f, 0x93, 0x8a, 0xc9, 0x8f, 0x93, 0x8b, 0xc8, - 0x8f, 0x93, 0x8b, 0xc9, 0x8f, 0x93, 0x8c, 0xc8, 0x8f, 0x93, 0x8c, 0xc9, - 0x8f, 0x93, 0x8d, 0xc8, 0x8f, 0x93, 0x8d, 0xc9, 0x8f, 0x93, 0x8e, 0xc8, - 0x8f, 0x93, 0x8e, 0xc8, 0x90, 0x93, 0x8e, 0xc8, 0x8f, 0x93, 0x8f, 0xc8, - 0x90, 0x93, 0x8e, 0xc8, 0x8f, 0x93, 0x8f, 0xc8, 0x90, 0x93, 0x8e, 0xc8, - 0x90, 0x93, 0x8f, 0xc8, 0x91, 0x93, 0x93, 0xc8, 0x91, 0x93, 0x93, 0xc8, - 0x92, 0x93, 0x93, 0xc8, 0x92, 0x93, 0x93, 0xc8, 0x92, 0x93, 0x93, 0xc8, - 0x92, 0x93, 0x94, 0xc8, 0x92, 0x93, 0x94, 0xc8, 0x92, 0x93, 0x94, 0xc9, - 0x94, 0x93, 0x95, 0xc9, 0x95, 0x93, 0x95, 0xc9, 0x95, 0x93, 0x96, 0xc9, - 0x96, 0x93, 0x96, 0xc9, 0x96, 0x93, 0x97, 0xc9, 0x97, 0x93, 0x97, 0xc9, - 0x97, 0x93, 0x98, 0xc9, 0x97, 0x93, 0x98, 0xc9, 0x97, 0x93, 0x98, 0xc9, - 0x97, 0x93, 0x99, 0xc9, 0x97, 0x93, 0x99, 0xca, 0x99, 0x93, 0x9a, 0xca, - 0x9a, 0x93, 0x9a, 0xca, 0x9a, 0x93, 0x9a, 0xca, 0x9a, 0x93, 0x9b, 0xca, - 0x9b, 0x93, 0x9b, 0xca, 0x9b, 0x93, 0x9c, 0xca, 0x9c, 0x93, 0x9c, 0xca, - 0x9b, 0x93, 0x9d, 0xca, 0x9c, 0x93, 0x9d, 0xca, 0x9b, 0x93, 0x9d, 0xca, - 0x9c, 0x93, 0x9e, 0xca, 0x9e, 0x93, 0x9e, 0xca, 0x9e, 0x93, 0x9f, 0xca, - 0x9f, 0x93, 0x9f, 0xca, 0x9f, 0x93, 0x9f, 0xca, 0x9f, 0x93, 0xa0, 0xca, - 0xa0, 0x93, 0xa0, 0xca, 0xa0, 0x93, 0xa1, 0xca, 0xa0, 0x93, 0xa1, 0xc8, - 0xa4, 0x93, 0xa1, 0xc9, 0xa4, 0x93, 0xa2, 0xc8, 0xa4, 0x93, 0xa2, 0xc9, - 0xa4, 0x93, 0xa3, 0xc8, 0xa4, 0x93, 0xa3, 0xc8, 0xa5, 0x93, 0xa3, 0xc8, - 0xa4, 0x93, 0xa4, 0xc8, 0xa5, 0x93, 0xa4, 0xc8, 0xa4, 0x92, 0xa4, 0xc8, - 0xa5, 0x93, 0xa4, 0xc8, 0xa5, 0x92, 0xa4, 0xc8, 0xa5, 0x93, 0xa4, 0xc8, - 0xa6, 0x92, 0xa4, 0xc8, 0xa6, 0x93, 0xa4, 0xc8, 0xa6, 0x92, 0xa4, 0xc8, - 0xa7, 0x93, 0xa4, 0xc8, 0xa7, 0x92, 0xa4, 0xc8, 0xa8, 0x93, 0xa4, 0xc8, - 0xa8, 0x92, 0xa4, 0xc8, 0xa8, 0x93, 0xa4, 0xc8, 0xa9, 0x92, 0xa4, 0xc8, - 0xa9, 0x93, 0xa4, 0xc8, 0xaa, 0x92, 0xa4, 0xc8, 0xaa, 0x93, 0xa4, 0xc8, - 0xaa, 0x92, 0xa5, 0xc8, 0xab, 0x8f, 0xa4, 0xc8, 0xab, 0x92, 0xa5, 0xc8, - 0xab, 0x8f, 0xa4, 0xc8, 0xac, 0x92, 0xa5, 0xc8, 0xac, 0x8f, 0xa4, 0xc8, - 0xac, 0x92, 0xa5, 0xc8, 0xad, 0x8f, 0xa4, 0xc8, 0xad, 0x92, 0xa5, 0xc8, - 0xae, 0x8f, 0xa4, 0xc8, 0xae, 0x92, 0xa5, 0xc8, 0xae, 0x8f, 0xa4, 0xc8, - 0xaf, 0x92, 0xa5, 0xc8, 0xaf, 0x8f, 0xa4, 0xc8, 0xaf, 0x92, 0xa5, 0xc8, - 0xb0, 0x8f, 0xa4, 0xc8, 0xb0, 0x92, 0xa5, 0xc8, 0xb0, 0x8f, 0xa4, 0xc8, - 0xb1, 0x92, 0xa5, 0xc8, 0xb1, 0x8f, 0xa4, 0xc8, 0xb2, 0x92, 0xa5, 0xc8, - 0xb2, 0x8f, 0xa4, 0xc8, 0xb2, 0x92, 0xa5, 0xc8, 0xb3, 0x8f, 0xa4, 0xc8, - 0xb3, 0x92, 0xa5, 0xc8, 0xb3, 0x8f, 0xa4, 0xc8, 0xb4, 0x92, 0xa5, 0xc8, - 0xb4, 0x8f, 0xa4, 0xc8, 0xb4, 0x92, 0xa5, 0xc8, 0xb5, 0x8f, 0xa4, 0xc8, - 0xb5, 0x92, 0xa5, 0xc8, 0xb5, 0x8f, 0xa4, 0xc8, 0xb6, 0x92, 0xa5, 0xc8, - 0xb6, 0x8f, 0xa5, 0xc8, 0xb6, 0x8c, 0xa5, 0xc8, 0xb7, 0x8f, 0xa5, 0xc8, - 0xb7, 0x8c, 0xa5, 0xc8, 0xb7, 0x8f, 0xa5, 0xc8, 0xb8, 0x8c, 0xa5, 0xc8, - 0xb8, 0x8f, 0xa5, 0xc8, 0xb8, 0x8c, 0xa5, 0xc8, 0xb9, 0x8f, 0xa5, 0xc8, - 0xb9, 0x8c, 0xa5, 0xc8, 0xb9, 0x8f, 0xa5, 0xc8, 0xba, 0x8c, 0xa5, 0xc8, - 0xba, 0x8f, 0xa5, 0xc8, 0xba, 0x8c, 0xa5, 0xc8, 0xbb, 0x8f, 0xa5, 0xc8, - 0xbb, 0x8c, 0xbd, 0xc8, 0xbb, 0x73, 0xc1, 0xc8, 0xbc, 0x74, 0xc1, 0xc8, - 0xbc, 0x74, 0xc1, 0xc8, 0xbc, 0x74, 0xc1, 0xc8, 0xbd, 0x74, 0xc1, 0xc8, - 0xbd, 0x74, 0xc1, 0xc8, 0xbd, 0x74, 0xc1, 0xc8, 0xbe, 0x74, 0xc1, 0xc8, - 0xbe, 0x74, 0xc1, 0xc8, 0xbe, 0x74, 0xc1, 0xc8, 0xbf, 0x74, 0xc1, 0xc8, - 0xbf, 0x74, 0xc4, 0xc8, 0xbf, 0x75, 0xc5, 0xc8, 0xc0, 0x75, 0xc4, 0xc8, - 0xc0, 0x75, 0xc5, 0xc8, 0xc0, 0x75, 0xc4, 0xc8, 0xc1, 0x75, 0xc5, 0xc8, - 0xc1, 0x75, 0xc4, 0xc8, 0xc1, 0x75, 0xc5, 0xc8, 0xc1, 0x75, 0xc4, 0xc8, - 0xc2, 0x75, 0xd3, 0xc8, 0xc2, 0x9a, 0xd4, 0xc8, 0xc2, 0x97, 0xd3, 0xc8, - 0xc3, 0x9a, 0xd4, 0xc8, 0xc3, 0x97, 0xd3, 0xc8, 0xc3, 0x9a, 0xd4, 0xc8, - 0xc4, 0x97, 0xd3, 0xc8, 0xc4, 0x9a, 0xd4, 0xc8, 0xc4, 0x97, 0xd3, 0xc8, - 0xc5, 0x9a, 0xd4, 0xc8, 0xc5, 0x97, 0xd3, 0xc8, 0xc5, 0x9a, 0xd4, 0xc8, - 0xc6, 0x97, 0xd4, 0xc8, 0xc6, 0x94, 0xd4, 0xc8, 0xc6, 0x97, 0xd4, 0xc8, - 0xc6, 0x94, 0xd4, 0xc8, 0xc7, 0x97, 0xd4, 0xc8, 0xc7, 0x94, 0xd4, 0xc8, - 0xc7, 0x97, 0xd4, 0xc8, 0xc8, 0x94, 0xd4, 0xc8, 0xc8, 0x97, 0xd4, 0xc8, - 0xc8, 0x94, 0xd4, 0xc8, 0xc9, 0x97, 0xd4, 0xc8, 0xc9, 0x94, 0xd4, 0xc8, - 0xc9, 0x97, 0xd4, 0xc8, 0xc9, 0x94, 0xd4, 0xc8, 0xca, 0x97, 0xd4, 0xc8, - 0xca, 0x94, 0xd4, 0xc8, 0xca, 0x97, 0xd4, 0xc8, 0xcb, 0x94, 0xd4, 0xc8, - 0xcb, 0x97, 0xd4, 0xc8, 0xcb, 0x94, 0xd4, 0xc8, 0xcc, 0x97, 0xd4, 0xc8, - 0xcc, 0x94, 0xd4, 0xc8, 0xcc, 0x97, 0xd4, 0xc8, 0xcc, 0x94, 0xd4, 0xc8, - 0xcd, 0x97, 0xd4, 0xc8, 0xcd, 0x94, 0xd4, 0xc8, 0xcd, 0x97, 0xd4, 0xc8, - 0xce, 0x94, 0xd4, 0xc8, 0xce, 0x97, 0xd4, 0xc8, 0xce, 0x94, 0xd4, 0xc8, - 0xce, 0x97, 0xd4, 0xc8, 0xcf, 0x94, 0xd4, 0xc8, 0xcf, 0x97, 0xd4, 0xc8, - 0xcf, 0x94, 0xd4, 0xc8, 0xd0, 0x93, 0xd4, 0xc8, 0xd0, 0x94, 0xd4, 0xc8, - 0xd0, 0x93, 0xd4, 0xc8, 0xd0, 0x94, 0xd4, 0xc8, 0xd1, 0x93, 0xd4, 0xc8, - 0xd1, 0x94, 0xd4, 0xc8, 0xd1, 0x93, 0xd4, 0xc8, 0xd2, 0x94, 0xd4, 0xc8, - 0xd2, 0x93, 0xd4, 0xc8, 0xd2, 0x94, 0xd4, 0xc8, 0xd2, 0x93, 0xd4, 0xc8, - 0xd3, 0x94, 0xd4, 0xc8, 0xd3, 0x93, 0xd4, 0xc8, 0xd3, 0x94, 0xd4, 0xc8, - 0xd4, 0x93, 0xd4, 0xc8, 0xd4, 0x94, 0xd4, 0xc7, 0xd4, 0x93, 0xd4, 0xc7, - 0xd4, 0x93, 0xd5, 0xc7, 0xd5, 0x93, 0xd5, 0xc7, 0xd5, 0x93, 0xd5, 0xc7, - 0xd5, 0x93, 0xd6, 0xc7, 0xd6, 0x93, 0xd6, 0xc7, 0xd6, 0x93, 0xd6, 0xc7, - 0xd6, 0x93, 0xd6, 0xc8, 0xd6, 0x94, 0xd7, 0xc8, 0xd7, 0x94, 0xd7, 0xc8, - 0xd7, 0x94, 0xd7, 0xc8, 0xd7, 0x94, 0xd7, 0xc8, 0xd7, 0x94, 0xd8, 0xc8, - 0xd8, 0x94, 0xd8, 0xc8, 0xd8, 0x94, 0xd8, 0xc8, 0xd8, 0x94, 0xd9, 0xc8, - 0xd9, 0x94, 0xd9, 0xc8, 0xd9, 0x94, 0xd9, 0xc8, 0xd9, 0x94, 0xd9, 0xc8, - 0xd9, 0x94, 0xd9, 0xc8, 0xda, 0x94, 0xda, 0xc8, 0xda, 0x95, 0xda, 0xc8, - 0xda, 0x95, 0xda, 0xc8, 0xda, 0x95, 0xdb, 0xc8, 0xdb, 0x95, 0xdb, 0xc8, - 0xdb, 0x95, 0xdb, 0xc8, 0xdb, 0x95, 0xdb, 0xc8, 0xdb, 0x95, 0xdc, 0xc8, - 0xdc, 0x95, 0xdc, 0xc8, 0xdc, 0x95, 0xdc, 0xc8, 0xdc, 0x95, 0xdc, 0xc8, - 0xdd, 0x95, 0xdc, 0xc8, 0xdd, 0x95, 0xdc, 0xc8, 0xdd, 0x95, 0xdd, 0xc8, - 0xdd, 0x96, 0xde, 0xc8, 0xde, 0x96, 0xde, 0xc8, 0xde, 0x96, 0xde, 0xc8, - 0xde, 0x96, 0xde, 0xc8, 0xde, 0x96, 0xdf, 0xc8, 0xdf, 0x96, 0xdf, 0xc8, - 0xdf, 0x96, 0xdf, 0xc8, 0xdf, 0x96, 0xdf, 0xc8, 0xdf, 0x96, 0xdf, 0xc8, - 0xe0, 0x96, 0xdf, 0xc8, 0xe0, 0x96, 0xe0, 0xc8, 0xe0, 0x97, 0xe1, 0xc8, - 0xe1, 0x97, 0xe1, 0xc8, 0xe1, 0x97, 0xe1, 0xc8, 0xe1, 0x97, 0xe1, 0xc8, - 0xe1, 0x97, 0xe2, 0xc8, 0xe2, 0x97, 0xe2, 0xc8, 0xe2, 0x97, 0xe2, 0xc8, - 0xe2, 0x97, 0xe2, 0xc8, 0xe2, 0x97, 0xe2, 0xc8, 0xe3, 0x97, 0xe2, 0xc8, - 0xe3, 0x97, 0xe3, 0xc8, 0xe3, 0x98, 0xe3, 0xc8, 0xe3, 0x98, 0xe4, 0xc8, - 0xe4, 0x98, 0xe4, 0xc8, 0xe4, 0x98, 0xe4, 0xc8, 0xe4, 0x98, 0xe4, 0xc8, - 0xe4, 0x98, 0xe5, 0xc8, 0xe5, 0x98, 0xe4, 0xc8, 0xe5, 0x98, 0xe5, 0xc8, - 0xe5, 0x98, 0xe4, 0xc8, 0xe5, 0x98, 0xe5, 0xc8, 0xe6, 0x98, 0xe4, 0xc8, - 0xe6, 0x98, 0xe5, 0xc8, 0xe6, 0x98, 0xe6, 0xc8, 0xe6, 0x99, 0xe7, 0xc8, - 0xe7, 0x99, 0xe7, 0xc8, 0xe7, 0x99, 0xe7, 0xc8, 0xe7, 0x99, 0xe7, 0xc8, - 0xe7, 0x99, 0xe7, 0xc8, 0xe8, 0x99, 0xe7, 0xc8, 0xe8, 0x99, 0xe7, 0xc8, - 0xe8, 0x99, 0xe7, 0xc8, 0xe8, 0x99, 0xe7, 0xc8, 0xe9, 0x99, 0xe7, 0xc8, - 0xe9, 0x99, 0xe9, 0xc8, 0xe9, 0x9a, 0xe9, 0xc8, 0xe9, 0x9a, 0xea, 0xc8, - 0xea, 0x8c, 0xea, 0xc8, 0xea, 0x8c, 0xea, 0xc8, 0xea, 0x8c, 0xec, 0xc8, - 0xea, 0x8d, 0xec, 0xc8, 0xeb, 0x8d, 0xec, 0xc8, 0xeb, 0x8d, 0xec, 0xc8, - 0xeb, 0x8d, 0xec, 0xc8, 0xeb, 0x8d, 0xee, 0xc8, 0xec, 0x93, 0xee, 0xc8, - 0xec, 0x96, 0xee, 0xc8, 0xec, 0x93, 0xee, 0xc8, 0xec, 0x96, 0xee, 0xc8, - 0xec, 0x93, 0xef, 0xc8, 0xed, 0x93, 0xee, 0xc8, 0xed, 0x93, 0xef, 0xc8, - 0xed, 0x93, 0xee, 0xc8, 0xed, 0x93, 0xef, 0xc8, 0xee, 0x93, 0xee, 0xc8, - 0xee, 0x93, 0xef, 0xc8, 0xee, 0x93, 0xee, 0xc8, 0xee, 0x93, 0xef, 0xc8, - 0xee, 0x93, 0xef, 0xc8, 0xee, 0x93, 0xef, 0xc8, 0xee, 0x93, 0xef, 0xc7, - 0xee, 0x93, 0xf0, 0xc8, 0xee, 0x93, 0xf0, 0xc7, 0xee, 0x93, 0xf0, 0xc6, - 0xf0, 0x93, 0xf0, 0xc6, 0xf0, 0x93, 0xf1, 0xc6, 0xf2, 0x93, 0xf1, 0xc6, - 0xf2, 0x93, 0xf1, 0xc6, 0xf2, 0x93, 0xf1, 0xc6, 0xf2, 0x93, 0xf2, 0xc6, - 0xf2, 0x93, 0xf2, 0xc6, 0xf2, 0x93, 0xf2, 0xc6, 0xf2, 0x93, 0xf2, 0xc6, - 0xf2, 0x93, 0xf2, 0xc6, 0xf2, 0x93, 0xf3, 0xc6, 0xf3, 0x93, 0xf3, 0xc6, - 0xf3, 0x93, 0xf3, 0xc6, 0xf3, 0x93, 0xf3, 0xc6, 0xf3, 0x93, 0xf4, 0xc7, - 0xf5, 0x93, 0xf4, 0xc7, 0xf5, 0x93, 0xf4, 0xc7, 0xf5, 0x93, 0xf4, 0xc7, - 0xf5, 0x93, 0xf5, 0xc7, 0xf5, 0x93, 0xf5, 0xc7, 0xf5, 0x93, 0xf5, 0xc7, - 0xf5, 0x93, 0xf5, 0xc7, 0xf5, 0x93, 0xf5, 0xc7, 0xf5, 0x93, 0xf6, 0xc7, - 0xf6, 0x93, 0xf6, 0xc7, 0xf6, 0x93, 0xf6, 0xc7, 0xf6, 0x93, 0xf6, 0xc7, - 0xf6, 0x93, 0xf7, 0xc7, 0xf7, 0x93, 0xf7, 0xc7, 0xf7, 0x93, 0xf7, 0xc7, - 0xf7, 0x93, 0xf7, 0xc7, 0xf7, 0x93, 0xf8, 0xc7, 0xf7, 0x93, 0xf8, 0xc7, - 0xf7, 0x93, 0xf8, 0xc7, 0xf7, 0x93, 0xf8, 0xc7, 0xf7, 0x93, 0xf8, 0xc6, - 0xf8, 0x93, 0xf9, 0xc7, 0xf7, 0x93, 0xf9, 0xc6, 0xf8, 0x93, 0xf9, 0xc7, - 0xf7, 0x93, 0xf9, 0xc6, 0xf8, 0x93, 0xfa, 0xc7, 0xf7, 0x93, 0xfa, 0xc6, - 0xf8, 0x93, 0xfa, 0xc7, 0xf7, 0x93, 0xfa, 0xc6, 0xf8, 0x93, 0xfa, 0xc7, - 0xf7, 0x93, 0xfb, 0xc6, 0xf8, 0x93, 0xfb, 0xc7, 0xf7, 0x93, 0xfb, 0xc6, - 0xf8, 0x93, 0xfb, 0xc7, 0xf7, 0x93, 0xfc, 0xc6, 0xf8, 0x93, 0xfc, 0xc7, - 0xf7, 0x93, 0xfc, 0xc6, 0xf8, 0x93, 0xfc, 0xc7, 0xf7, 0x93, 0xfc, 0xc6, - 0xf8, 0x93, 0xfd, 0xc7, 0xf7, 0x93, 0xfd, 0xc6, 0xf8, 0x93, 0xfd, 0xc7, - 0xf7, 0x93, 0xfd, 0xc6, 0xf8, 0x93, 0xfe, 0xc7, 0xf7, 0x93, 0xfe, 0xc6, - 0xf8, 0x93, 0xfe, 0xc7, 0xf7, 0x93, 0xfe, 0xc6, 0xf8, 0x93, 0xfe, 0xc7, - 0xf7, 0x93, 0xff, 0xc6, 0xf8, 0x93, 0xff, 0xc4, 0xf8, 0x93, 0x03, 0xd0, - 0x8d, 0x94, 0x0a, 0xcf, 0x8e, 0x94, 0x0f, 0xd0, 0x8d, 0x94, 0x14, 0xcf, - 0x8e, 0x94, 0x17, 0xd0, 0x8d, 0x94, 0x1b, 0xcf, 0x8e, 0x94, 0x1e, 0xcd, - 0x8e, 0x94, 0x20, 0xcf, 0x8e, 0x94, 0x23, 0xcd, 0x8e, 0x94, 0x25, 0xcf, - 0x8e, 0x94, 0x27, 0xcd, 0x8e, 0x94, 0x29, 0xcf, 0x8e, 0x94, 0x2b, 0xcd, - 0x8e, 0x94, 0x2d, 0xcf, 0x8e, 0x94, 0x2f, 0xcd, 0x8e, 0x94, 0x31, 0xcf, - 0x8e, 0x94, 0x32, 0xcd, 0x8e, 0x94, 0x34, 0xcf, 0x8e, 0x94, 0x35, 0xcd, - 0x8e, 0x94, 0x37, 0xcf, 0x8e, 0x94, 0x38, 0xcd, 0x8e, 0x94, 0x3a, 0xcf, - 0x8e, 0x94, 0x3b, 0xcd, 0x8e, 0x94, 0x3c, 0xcf, 0x8e, 0x94, 0x3e, 0xcd, - 0x8e, 0x94, 0x3f, 0xcf, 0x8e, 0x94, 0x40, 0xcd, 0x8e, 0x94, 0x42, 0xcf, - 0x8e, 0x94, 0x43, 0xcd, 0x8e, 0x94, 0x44, 0xcf, 0x8e, 0x94, 0x45, 0xcd, - 0x8e, 0x94, 0x46, 0xcf, 0x8e, 0x94, 0x47, 0xcd, 0x8e, 0x94, 0x48, 0xcf, - 0x8e, 0x94, 0x49, 0xcd, 0x8e, 0x94, 0x4a, 0xcf, 0x8e, 0x94, 0x4b, 0xcd, - 0x8e, 0x94, 0x4c, 0xcf, 0x8e, 0x94, 0x4d, 0xcd, 0x8e, 0x94, 0x4e, 0xcf, - 0x8e, 0x94, 0x4f, 0xcd, 0x8e, 0x94, 0x50, 0xcf, 0x8e, 0x94, 0x51, 0xcd, - 0x8e, 0x94, 0x52, 0xcb, 0x8e, 0x94, 0x53, 0xcd, 0x8e, 0x94, 0x54, 0xcb, - 0x8e, 0x94, 0x55, 0xcd, 0x8e, 0x94, 0x56, 0xcb, 0x8e, 0x94, 0x57, 0xcd, - 0x8e, 0x94, 0x58, 0xcb, 0x8e, 0x94, 0x58, 0xcd, 0x8e, 0x94, 0x59, 0xcb, - 0x8e, 0x94, 0x5a, 0xcd, 0x8e, 0x94, 0x5b, 0xcb, 0x8e, 0x94, 0x5c, 0xcd, - 0x8e, 0x94, 0x5d, 0xcb, 0x8e, 0x94, 0x5d, 0xcd, 0x8e, 0x94, 0x5e, 0xcb, - 0x8e, 0x94, 0x5f, 0xcd, 0x8e, 0x94, 0x60, 0xcb, 0x8e, 0x94, 0x60, 0xcd, - 0x8e, 0x94, 0x61, 0xcb, 0x8e, 0x94, 0x62, 0xcd, 0x8e, 0x94, 0x63, 0xcb, - 0x8e, 0x94, 0x63, 0xcd, 0x8e, 0x94, 0x64, 0xcb, 0x8e, 0x94, 0x65, 0xcd, - 0x8e, 0x94, 0x66, 0xcb, 0x8e, 0x94, 0x66, 0xcd, 0x8e, 0x94, 0x67, 0xcb, - 0x8e, 0x94, 0x68, 0xcd, 0x8e, 0x94, 0x68, 0xcb, 0x8e, 0x94, 0x69, 0xcd, - 0x8e, 0x94, 0x6a, 0xcb, 0x8e, 0x94, 0x6a, 0xcd, 0x8e, 0x94, 0x6b, 0xcb, - 0x8e, 0x94, 0x6c, 0xc9, 0x8f, 0x94, 0x6c, 0xcb, 0x8e, 0x94, 0x6d, 0xc9, - 0x8f, 0x94, 0x6e, 0xcb, 0x8e, 0x94, 0x6e, 0xc9, 0x8f, 0x94, 0x6f, 0xcb, - 0x8e, 0x94, 0x70, 0xc9, 0x8f, 0x94, 0x70, 0xcb, 0x8e, 0x94, 0x71, 0xc9, - 0x8f, 0x94, 0x72, 0xcb, 0x8e, 0x94, 0x72, 0xc9, 0x8f, 0x94, 0x73, 0xcb, - 0x8e, 0x94, 0x73, 0xc9, 0x8f, 0x94, 0x74, 0xcb, 0x8e, 0x94, 0x75, 0xc9, - 0x8f, 0x94, 0x75, 0xcb, 0x8e, 0x94, 0x76, 0xc9, 0x8f, 0x94, 0x76, 0xcb, - 0x8e, 0x94, 0x77, 0xc9, 0x8f, 0x94, 0x78, 0xcb, 0x8e, 0x94, 0x78, 0xc9, - 0x8f, 0x94, 0x79, 0xcb, 0x8e, 0x94, 0x79, 0xc9, 0x8f, 0x94, 0x7a, 0xcb, - 0x8e, 0x94, 0x7a, 0xc9, 0x8f, 0x94, 0x7b, 0xcb, 0x8e, 0x94, 0x7c, 0xc9, - 0x8f, 0x94, 0x7c, 0xcb, 0x8e, 0x94, 0x7d, 0xc9, 0x8f, 0x94, 0x7d, 0xcb, - 0x8e, 0x94, 0x7e, 0xc9, 0x8f, 0x94, 0x7e, 0xcb, 0x8e, 0x94, 0x7f, 0xc9, - 0x8f, 0x94, 0x7f, 0xcb, 0x8e, 0x94, 0x80, 0xc9, 0x8f, 0x94, 0x81, 0xcb, - 0x8e, 0x94, 0x81, 0xc9, 0x8f, 0x94, 0x82, 0xcb, 0x8e, 0x94, 0x82, 0xc9, - 0x8f, 0x94, 0x83, 0xcb, 0x8e, 0x94, 0x83, 0xc9, 0x8f, 0x94, 0x84, 0xc8, - 0x8f, 0x94, 0x84, 0xc9, 0x8f, 0x94, 0x85, 0xc8, 0x8f, 0x94, 0x85, 0xc9, - 0x8f, 0x94, 0x86, 0xc8, 0x8f, 0x94, 0x86, 0xc9, 0x8f, 0x94, 0x87, 0xc8, - 0x8f, 0x94, 0x87, 0xc9, 0x8f, 0x94, 0x88, 0xc8, 0x8f, 0x94, 0x88, 0xc9, - 0x8f, 0x94, 0x89, 0xc8, 0x8f, 0x94, 0x89, 0xc9, 0x8f, 0x94, 0x8a, 0xc8, - 0x8f, 0x94, 0x8a, 0xc9, 0x8f, 0x94, 0x8b, 0xc8, 0x8f, 0x94, 0x8b, 0xc9, - 0x8f, 0x94, 0x8c, 0xc8, 0x8f, 0x94, 0x8c, 0xc9, 0x8f, 0x94, 0x8d, 0xc8, - 0x8f, 0x94, 0x8d, 0xc9, 0x8f, 0x94, 0x8e, 0xc8, 0x8f, 0x94, 0x8e, 0xc9, - 0x8f, 0x94, 0x8e, 0xc8, 0x8f, 0x94, 0x8f, 0xc9, 0x8f, 0x94, 0x8e, 0xc8, - 0x8f, 0x94, 0x8f, 0xc8, 0x90, 0x94, 0x8e, 0xc8, 0x90, 0x94, 0x8f, 0xc8, - 0x91, 0x94, 0x93, 0xc8, 0x91, 0x94, 0x93, 0xc8, 0x92, 0x94, 0x93, 0xc8, - 0x92, 0x94, 0x93, 0xc8, 0x92, 0x94, 0x93, 0xc8, 0x92, 0x94, 0x94, 0xc9, - 0x94, 0x94, 0x94, 0xc9, 0x94, 0x94, 0x94, 0xc9, 0x94, 0x94, 0x95, 0xc9, - 0x95, 0x94, 0x95, 0xc9, 0x94, 0x94, 0x96, 0xc9, 0x95, 0x94, 0x96, 0xc9, - 0x96, 0x94, 0x97, 0xc9, 0x97, 0x94, 0x97, 0xc9, 0x97, 0x94, 0x98, 0xc9, - 0x98, 0x94, 0x98, 0xc9, 0x98, 0x94, 0x98, 0xc9, 0x98, 0x94, 0x99, 0xc9, - 0x99, 0x94, 0x99, 0xc9, 0x99, 0x94, 0x9a, 0xc9, 0x9a, 0x94, 0x9a, 0xc9, - 0x99, 0x94, 0x9a, 0xc9, 0x9a, 0x94, 0x9b, 0xc9, 0x99, 0x94, 0x9b, 0xc9, - 0x9a, 0x94, 0x9c, 0xca, 0x9c, 0x94, 0x9c, 0xca, 0x9c, 0x94, 0x9d, 0xca, - 0x9d, 0x94, 0x9d, 0xca, 0x9d, 0x94, 0x9d, 0xca, 0x9d, 0x94, 0x9e, 0xca, - 0x9e, 0x94, 0x9e, 0xca, 0x9e, 0x94, 0x9f, 0xca, 0x9e, 0x94, 0x9f, 0xca, - 0x9e, 0x94, 0x9f, 0xca, 0x9e, 0x94, 0xa0, 0xca, 0x9e, 0x94, 0xa0, 0xcb, - 0xa0, 0x94, 0xa1, 0xcb, 0xa1, 0x94, 0xa1, 0xcb, 0xa1, 0x94, 0xa1, 0xc9, - 0xa4, 0x94, 0xa2, 0xc8, 0xa4, 0x94, 0xa2, 0xc9, 0xa4, 0x94, 0xa3, 0xc8, - 0xa4, 0x94, 0xa3, 0xc8, 0xa5, 0x94, 0xa3, 0xc8, 0xa4, 0x94, 0xa4, 0xc8, - 0xa5, 0x94, 0xa3, 0xc8, 0xa4, 0x94, 0xa4, 0xc8, 0xa5, 0x94, 0xa3, 0xc8, - 0xa5, 0x94, 0xa4, 0xc8, 0xa5, 0x94, 0xa4, 0xc8, 0xa6, 0x92, 0xa4, 0xc8, - 0xa6, 0x94, 0xa4, 0xc8, 0xa6, 0x92, 0xa4, 0xc8, 0xa7, 0x94, 0xa4, 0xc8, - 0xa7, 0x92, 0xa4, 0xc8, 0xa8, 0x94, 0xa4, 0xc8, 0xa8, 0x92, 0xa4, 0xc8, - 0xa8, 0x94, 0xa4, 0xc8, 0xa9, 0x92, 0xa4, 0xc8, 0xa9, 0x94, 0xa4, 0xc8, - 0xaa, 0x92, 0xa4, 0xc8, 0xaa, 0x94, 0xa4, 0xc8, 0xaa, 0x92, 0xa4, 0xc8, - 0xab, 0x94, 0xa4, 0xc8, 0xab, 0x92, 0xa4, 0xc8, 0xab, 0x94, 0xa4, 0xc8, - 0xac, 0x92, 0xa4, 0xc8, 0xac, 0x94, 0xa4, 0xc8, 0xac, 0x92, 0xa4, 0xc8, - 0xad, 0x94, 0xa4, 0xc8, 0xad, 0x92, 0xa5, 0xc8, 0xae, 0x8f, 0xa4, 0xc8, - 0xae, 0x92, 0xa5, 0xc8, 0xae, 0x8f, 0xa4, 0xc8, 0xaf, 0x92, 0xa5, 0xc8, - 0xaf, 0x8f, 0xa4, 0xc8, 0xaf, 0x92, 0xa5, 0xc8, 0xb0, 0x8f, 0xa4, 0xc8, - 0xb0, 0x92, 0xa5, 0xc8, 0xb0, 0x8f, 0xa4, 0xc8, 0xb1, 0x92, 0xa5, 0xc8, - 0xb1, 0x8f, 0xa4, 0xc8, 0xb2, 0x92, 0xa5, 0xc8, 0xb2, 0x8f, 0xa4, 0xc8, - 0xb2, 0x92, 0xa5, 0xc8, 0xb3, 0x8f, 0xa4, 0xc8, 0xb3, 0x92, 0xa5, 0xc8, - 0xb3, 0x8f, 0xa4, 0xc8, 0xb4, 0x92, 0xa5, 0xc8, 0xb4, 0x8f, 0xa4, 0xc8, - 0xb4, 0x92, 0xa5, 0xc8, 0xb5, 0x8f, 0xa5, 0xc8, 0xb5, 0x8d, 0xa5, 0xc8, - 0xb5, 0x8f, 0xa5, 0xc8, 0xb6, 0x8d, 0xa5, 0xc8, 0xb6, 0x8f, 0xa5, 0xc8, - 0xb6, 0x8d, 0xa5, 0xc8, 0xb7, 0x8f, 0xa5, 0xc8, 0xb7, 0x8d, 0xa5, 0xc8, - 0xb7, 0x8f, 0xa5, 0xc8, 0xb8, 0x8d, 0xa5, 0xc8, 0xb8, 0x8f, 0xa5, 0xc8, - 0xb8, 0x8d, 0xa5, 0xc8, 0xb9, 0x8f, 0xa5, 0xc8, 0xb9, 0x8d, 0xa5, 0xc8, - 0xb9, 0x8f, 0xa5, 0xc8, 0xba, 0x8d, 0xa5, 0xc8, 0xba, 0x8f, 0xa5, 0xc8, - 0xba, 0x8d, 0xa5, 0xc8, 0xbb, 0x8f, 0xa5, 0xc8, 0xbb, 0x8d, 0xa5, 0xc8, - 0xbb, 0x8f, 0xbf, 0xc8, 0xbc, 0x74, 0xbf, 0xc8, 0xbc, 0x74, 0xbf, 0xc8, - 0xbc, 0x74, 0xbf, 0xc8, 0xbd, 0x74, 0xbf, 0xc8, 0xbd, 0x74, 0xc2, 0xc8, - 0xbd, 0x75, 0xc3, 0xc8, 0xbe, 0x75, 0xc2, 0xc8, 0xbe, 0x75, 0xc3, 0xc8, - 0xbe, 0x75, 0xc2, 0xc8, 0xbf, 0x75, 0xc3, 0xc8, 0xbf, 0x75, 0xc2, 0xc8, - 0xbf, 0x75, 0xc3, 0xc8, 0xc0, 0x75, 0xc2, 0xc8, 0xc0, 0x75, 0xc3, 0xc8, - 0xc0, 0x75, 0xc2, 0xc8, 0xc1, 0x75, 0xc3, 0xc8, 0xc1, 0x75, 0xc6, 0xc8, - 0xc1, 0x76, 0xd3, 0xc8, 0xc1, 0x9a, 0xd4, 0xc8, 0xc2, 0x97, 0xd3, 0xc8, - 0xc2, 0x9a, 0xd4, 0xc8, 0xc2, 0x97, 0xd3, 0xc8, 0xc3, 0x9a, 0xd4, 0xc8, - 0xc3, 0x97, 0xd3, 0xc8, 0xc3, 0x9a, 0xd4, 0xc8, 0xc4, 0x97, 0xd3, 0xc8, - 0xc4, 0x9a, 0xd4, 0xc8, 0xc4, 0x97, 0xd3, 0xc8, 0xc5, 0x9a, 0xd4, 0xc8, - 0xc5, 0x97, 0xd3, 0xc8, 0xc5, 0x9a, 0xd4, 0xc8, 0xc6, 0x97, 0xd3, 0xc8, - 0xc6, 0x9a, 0xd4, 0xc8, 0xc6, 0x97, 0xd3, 0xc8, 0xc6, 0x9a, 0xd4, 0xc8, - 0xc7, 0x97, 0xd3, 0xc8, 0xc7, 0x9a, 0xd4, 0xc8, 0xc7, 0x97, 0xd3, 0xc8, - 0xc8, 0x9a, 0xd4, 0xc8, 0xc8, 0x97, 0xd3, 0xc8, 0xc8, 0x9a, 0xd4, 0xc8, - 0xc9, 0x97, 0xd3, 0xc8, 0xc9, 0x9a, 0xd4, 0xc8, 0xc9, 0x97, 0xd4, 0xc8, - 0xc9, 0x95, 0xd4, 0xc8, 0xca, 0x97, 0xd4, 0xc8, 0xca, 0x95, 0xd4, 0xc8, - 0xca, 0x97, 0xd4, 0xc8, 0xcb, 0x95, 0xd4, 0xc8, 0xcb, 0x97, 0xd4, 0xc8, - 0xcb, 0x95, 0xd4, 0xc8, 0xcc, 0x97, 0xd4, 0xc8, 0xcc, 0x95, 0xd4, 0xc8, - 0xcc, 0x97, 0xd4, 0xc8, 0xcc, 0x95, 0xd4, 0xc8, 0xcd, 0x97, 0xd4, 0xc8, - 0xcd, 0x95, 0xd4, 0xc8, 0xcd, 0x97, 0xd4, 0xc8, 0xce, 0x95, 0xd4, 0xc8, - 0xce, 0x97, 0xd4, 0xc8, 0xce, 0x95, 0xd4, 0xc8, 0xce, 0x97, 0xd4, 0xc8, - 0xcf, 0x95, 0xd4, 0xc8, 0xcf, 0x97, 0xd4, 0xc8, 0xcf, 0x95, 0xd4, 0xc8, - 0xd0, 0x97, 0xd4, 0xc8, 0xd0, 0x95, 0xd4, 0xc8, 0xd0, 0x97, 0xd4, 0xc8, - 0xd0, 0x95, 0xd4, 0xc8, 0xd1, 0x97, 0xd4, 0xc8, 0xd1, 0x95, 0xd4, 0xc8, - 0xd1, 0x97, 0xd4, 0xc8, 0xd2, 0x95, 0xd4, 0xc8, 0xd2, 0x94, 0xd4, 0xc8, - 0xd2, 0x95, 0xd4, 0xc8, 0xd2, 0x94, 0xd4, 0xc8, 0xd3, 0x95, 0xd4, 0xc8, - 0xd3, 0x94, 0xd4, 0xc8, 0xd3, 0x95, 0xd4, 0xc8, 0xd4, 0x94, 0xd4, 0xc8, - 0xd4, 0x95, 0xd4, 0xc8, 0xd4, 0x94, 0xd4, 0xc8, 0xd4, 0x94, 0xd5, 0xc8, - 0xd5, 0x94, 0xd5, 0xc8, 0xd5, 0x94, 0xd5, 0xc8, 0xd5, 0x94, 0xd6, 0xc8, - 0xd6, 0x94, 0xd6, 0xc8, 0xd6, 0x94, 0xd6, 0xc8, 0xd6, 0x94, 0xd6, 0xc8, - 0xd6, 0x94, 0xd7, 0xc8, 0xd7, 0x94, 0xd7, 0xc8, 0xd7, 0x94, 0xd7, 0xc8, - 0xd7, 0x94, 0xd7, 0xc8, 0xd7, 0x94, 0xd8, 0xc8, 0xd8, 0x94, 0xd8, 0xc8, - 0xd8, 0x95, 0xd8, 0xc8, 0xd8, 0x95, 0xd9, 0xc8, 0xd9, 0x95, 0xd9, 0xc8, - 0xd9, 0x95, 0xd9, 0xc8, 0xd9, 0x95, 0xd9, 0xc8, 0xd9, 0x95, 0xda, 0xc8, - 0xda, 0x95, 0xda, 0xc8, 0xda, 0x95, 0xda, 0xc8, 0xda, 0x95, 0xda, 0xc8, - 0xda, 0x95, 0xdb, 0xc8, 0xdb, 0x95, 0xda, 0xc8, 0xdb, 0x95, 0xdb, 0xc8, - 0xdb, 0x95, 0xdb, 0xc8, 0xdb, 0x96, 0xdc, 0xc8, 0xdc, 0x96, 0xdc, 0xc8, - 0xdc, 0x96, 0xdc, 0xc8, 0xdc, 0x96, 0xdd, 0xc8, 0xdd, 0x96, 0xdd, 0xc8, - 0xdd, 0x96, 0xdd, 0xc8, 0xdd, 0x96, 0xdd, 0xc8, 0xdd, 0x96, 0xde, 0xc8, - 0xde, 0x96, 0xdd, 0xc8, 0xde, 0x96, 0xde, 0xc8, 0xde, 0x96, 0xdd, 0xc8, - 0xde, 0x96, 0xde, 0xc8, 0xdf, 0x96, 0xdf, 0xc8, 0xdf, 0x97, 0xdf, 0xc8, - 0xdf, 0x97, 0xdf, 0xc8, 0xdf, 0x97, 0xe0, 0xc8, 0xe0, 0x97, 0xe0, 0xc8, - 0xe0, 0x97, 0xe0, 0xc8, 0xe0, 0x97, 0xe1, 0xc8, 0xe1, 0x97, 0xe0, 0xc8, - 0xe1, 0x97, 0xe1, 0xc8, 0xe1, 0x97, 0xe0, 0xc8, 0xe1, 0x97, 0xe1, 0xc8, - 0xe2, 0x97, 0xe2, 0xc8, 0xe2, 0x98, 0xe2, 0xc8, 0xe2, 0x98, 0xe2, 0xc8, - 0xe2, 0x98, 0xe3, 0xc8, 0xe3, 0x98, 0xe3, 0xc8, 0xe3, 0x98, 0xe3, 0xc8, - 0xe3, 0x98, 0xe3, 0xc8, 0xe3, 0x98, 0xe3, 0xc8, 0xe4, 0x98, 0xe3, 0xc8, - 0xe4, 0x98, 0xe3, 0xc8, 0xe4, 0x98, 0xe3, 0xc8, 0xe4, 0x98, 0xe5, 0xc8, - 0xe5, 0x99, 0xe5, 0xc8, 0xe5, 0x99, 0xe5, 0xc8, 0xe5, 0x99, 0xe5, 0xc8, - 0xe5, 0x99, 0xe6, 0xc8, 0xe6, 0x99, 0xe6, 0xc8, 0xe6, 0x99, 0xe6, 0xc8, - 0xe6, 0x99, 0xe6, 0xc8, 0xe6, 0x99, 0xe6, 0xc8, 0xe7, 0x99, 0xe6, 0xc8, - 0xe7, 0x99, 0xe6, 0xc8, 0xe7, 0x99, 0xe6, 0xc8, 0xe7, 0x99, 0xe6, 0xc8, - 0xe8, 0x99, 0xe8, 0xc8, 0xe8, 0x9a, 0xe8, 0xc8, 0xe8, 0x9a, 0xe8, 0xc8, - 0xe8, 0x9a, 0xe9, 0xc8, 0xe9, 0x9a, 0xe8, 0xc8, 0xe9, 0x9a, 0xe9, 0xc8, - 0xe9, 0x9a, 0xe8, 0xc8, 0xe9, 0x9a, 0xe9, 0xc8, 0xea, 0x9a, 0xe8, 0xc8, - 0xea, 0x9a, 0xe9, 0xc8, 0xea, 0x9a, 0xea, 0xc8, 0xea, 0x8d, 0xeb, 0xc8, - 0xeb, 0x8d, 0xeb, 0xc8, 0xeb, 0x8d, 0xeb, 0xc8, 0xeb, 0x8d, 0xee, 0xc8, - 0xeb, 0x96, 0xee, 0xc8, 0xec, 0x94, 0xee, 0xc8, 0xec, 0x96, 0xee, 0xc8, - 0xec, 0x94, 0xee, 0xc8, 0xec, 0x96, 0xee, 0xc8, 0xec, 0x94, 0xee, 0xc8, - 0xed, 0x96, 0xee, 0xc8, 0xed, 0x94, 0xee, 0xc8, 0xed, 0x96, 0xee, 0xc8, - 0xed, 0x94, 0xef, 0xc8, 0xee, 0x94, 0xee, 0xc8, 0xee, 0x94, 0xef, 0xc8, - 0xee, 0x94, 0xee, 0xc8, 0xee, 0x94, 0xef, 0xc8, 0xee, 0x94, 0xef, 0xc8, - 0xee, 0x94, 0xef, 0xc8, 0xee, 0x94, 0xef, 0xc7, 0xee, 0x94, 0xf0, 0xc8, - 0xee, 0x94, 0xf0, 0xc7, 0xee, 0x94, 0xf0, 0xc6, 0xf0, 0x94, 0xf0, 0xc6, - 0xf0, 0x94, 0xf1, 0xc6, 0xf1, 0x94, 0xf1, 0xc6, 0xf1, 0x94, 0xf1, 0xc6, - 0xf1, 0x94, 0xf1, 0xc6, 0xf1, 0x94, 0xf2, 0xc6, 0xf2, 0x94, 0xf2, 0xc6, - 0xf2, 0x94, 0xf2, 0xc6, 0xf2, 0x94, 0xf2, 0xc6, 0xf3, 0x94, 0xf2, 0xc6, - 0xf3, 0x94, 0xf3, 0xc6, 0xf3, 0x94, 0xf3, 0xc6, 0xf3, 0x94, 0xf3, 0xc6, - 0xf3, 0x94, 0xf3, 0xc6, 0xf3, 0x94, 0xf4, 0xc6, 0xf4, 0x94, 0xf4, 0xc6, - 0xf4, 0x94, 0xf4, 0xc6, 0xf4, 0x94, 0xf4, 0xc6, 0xf4, 0x94, 0xf5, 0xc6, - 0xf5, 0x94, 0xf5, 0xc6, 0xf5, 0x94, 0xf5, 0xc7, 0xf6, 0x94, 0xf5, 0xc7, - 0xf6, 0x94, 0xf5, 0xc7, 0xf6, 0x94, 0xf6, 0xc7, 0xf6, 0x94, 0xf6, 0xc7, - 0xf6, 0x94, 0xf6, 0xc7, 0xf6, 0x94, 0xf6, 0xc7, 0xf6, 0x94, 0xf7, 0xc7, - 0xf7, 0x94, 0xf7, 0xc7, 0xf7, 0x94, 0xf7, 0xc7, 0xf7, 0x94, 0xf7, 0xc7, - 0xf7, 0x94, 0xf8, 0xc7, 0xf7, 0x94, 0xf8, 0xc7, 0xf7, 0x94, 0xf8, 0xc7, - 0xf7, 0x94, 0xf8, 0xc7, 0xf7, 0x94, 0xf8, 0xc7, 0xf7, 0x94, 0xf9, 0xc7, - 0xf7, 0x94, 0xf9, 0xc7, 0xf7, 0x94, 0xf9, 0xc7, 0xf7, 0x94, 0xf9, 0xc7, - 0xf7, 0x94, 0xfa, 0xc7, 0xf7, 0x94, 0xfa, 0xc7, 0xf7, 0x94, 0xfa, 0xc7, - 0xf7, 0x94, 0xfa, 0xc6, 0xf8, 0x94, 0xfa, 0xc7, 0xf7, 0x94, 0xfb, 0xc6, - 0xf8, 0x94, 0xfb, 0xc7, 0xf7, 0x94, 0xfb, 0xc6, 0xf8, 0x94, 0xfb, 0xc7, - 0xf7, 0x94, 0xfc, 0xc6, 0xf8, 0x94, 0xfc, 0xc7, 0xf7, 0x94, 0xfc, 0xc6, - 0xf8, 0x94, 0xfc, 0xc7, 0xf7, 0x94, 0xfc, 0xc6, 0xf8, 0x94, 0xfd, 0xc7, - 0xf7, 0x94, 0xfd, 0xc6, 0xf8, 0x94, 0xfd, 0xc7, 0xf7, 0x94, 0xfd, 0xc6, - 0xf8, 0x94, 0xfe, 0xc7, 0xf7, 0x94, 0xfe, 0xc6, 0xf8, 0x94, 0xfe, 0xc7, - 0xf7, 0x94, 0xfe, 0xc6, 0xf8, 0x94, 0xfe, 0xc7, 0xf7, 0x94, 0xff, 0xc6, - 0xf8, 0x94, 0xff, 0xc5, 0xf8, 0x94, 0x03, 0xcd, 0x8e, 0x94, 0x0a, 0xcf, - 0x8e, 0x94, 0x0f, 0xcd, 0x8e, 0x94, 0x14, 0xcf, 0x8e, 0x94, 0x17, 0xcd, - 0x8e, 0x94, 0x1b, 0xcf, 0x8e, 0x94, 0x1e, 0xcd, 0x8e, 0x94, 0x20, 0xcf, - 0x8e, 0x94, 0x23, 0xcd, 0x8e, 0x94, 0x25, 0xcf, 0x8e, 0x94, 0x27, 0xcd, - 0x8e, 0x94, 0x29, 0xcf, 0x8e, 0x94, 0x2b, 0xcd, 0x8e, 0x94, 0x2d, 0xcf, - 0x8e, 0x94, 0x2f, 0xcd, 0x8e, 0x94, 0x31, 0xcf, 0x8e, 0x94, 0x32, 0xcd, - 0x8e, 0x94, 0x34, 0xcf, 0x8e, 0x94, 0x35, 0xcd, 0x8e, 0x94, 0x37, 0xcf, - 0x8e, 0x94, 0x38, 0xcd, 0x8e, 0x94, 0x3a, 0xcf, 0x8e, 0x94, 0x3b, 0xcd, - 0x8e, 0x94, 0x3c, 0xcf, 0x8e, 0x94, 0x3e, 0xcd, 0x8e, 0x94, 0x3f, 0xcf, - 0x8e, 0x94, 0x40, 0xcd, 0x8e, 0x94, 0x42, 0xcf, 0x8e, 0x94, 0x43, 0xcd, - 0x8e, 0x94, 0x44, 0xcf, 0x8e, 0x94, 0x45, 0xcd, 0x8e, 0x94, 0x46, 0xcf, - 0x8e, 0x94, 0x47, 0xcd, 0x8e, 0x94, 0x48, 0xcf, 0x8e, 0x94, 0x49, 0xcd, - 0x8e, 0x94, 0x4a, 0xcb, 0x8e, 0x94, 0x4b, 0xcd, 0x8e, 0x94, 0x4c, 0xcb, - 0x8e, 0x94, 0x4d, 0xcd, 0x8e, 0x94, 0x4e, 0xcb, 0x8e, 0x94, 0x4f, 0xcd, - 0x8e, 0x94, 0x50, 0xcb, 0x8e, 0x94, 0x51, 0xcd, 0x8e, 0x94, 0x52, 0xcb, - 0x8e, 0x94, 0x53, 0xcd, 0x8e, 0x94, 0x54, 0xcb, 0x8e, 0x94, 0x55, 0xcd, - 0x8e, 0x94, 0x56, 0xcb, 0x8e, 0x94, 0x57, 0xcd, 0x8e, 0x94, 0x58, 0xcb, - 0x8e, 0x94, 0x58, 0xcd, 0x8e, 0x94, 0x59, 0xcb, 0x8e, 0x94, 0x5a, 0xcd, - 0x8e, 0x94, 0x5b, 0xcb, 0x8e, 0x94, 0x5c, 0xcd, 0x8e, 0x94, 0x5d, 0xcb, - 0x8e, 0x94, 0x5d, 0xcd, 0x8e, 0x94, 0x5e, 0xcb, 0x8e, 0x94, 0x5f, 0xcd, - 0x8e, 0x94, 0x60, 0xcb, 0x8e, 0x94, 0x60, 0xcd, 0x8e, 0x94, 0x61, 0xcb, - 0x8e, 0x94, 0x62, 0xcd, 0x8e, 0x94, 0x63, 0xcb, 0x8e, 0x94, 0x63, 0xcd, - 0x8e, 0x94, 0x64, 0xcb, 0x8e, 0x94, 0x65, 0xcd, 0x8e, 0x94, 0x66, 0xcb, - 0x8e, 0x94, 0x66, 0xcd, 0x8e, 0x94, 0x67, 0xcb, 0x8e, 0x94, 0x68, 0xcd, - 0x8e, 0x94, 0x68, 0xcb, 0x8e, 0x94, 0x69, 0xcd, 0x8e, 0x94, 0x6a, 0xcb, - 0x8e, 0x94, 0x6a, 0xcd, 0x8e, 0x94, 0x6b, 0xcb, 0x8e, 0x94, 0x6c, 0xcd, - 0x8e, 0x94, 0x6c, 0xcb, 0x8e, 0x94, 0x6d, 0xcd, 0x8e, 0x94, 0x6e, 0xcb, - 0x8e, 0x94, 0x6e, 0xcd, 0x8e, 0x94, 0x6f, 0xcb, 0x8e, 0x94, 0x70, 0xcd, - 0x8e, 0x94, 0x70, 0xcb, 0x8e, 0x94, 0x71, 0xcd, 0x8e, 0x94, 0x72, 0xcb, - 0x8e, 0x94, 0x72, 0xcd, 0x8e, 0x94, 0x73, 0xcb, 0x8e, 0x94, 0x73, 0xcd, - 0x8e, 0x94, 0x74, 0xcb, 0x8e, 0x94, 0x75, 0xcd, 0x8e, 0x94, 0x75, 0xcb, - 0x8e, 0x94, 0x76, 0xc9, 0x8f, 0x94, 0x76, 0xcb, 0x8e, 0x94, 0x77, 0xc9, - 0x8f, 0x94, 0x78, 0xcb, 0x8e, 0x94, 0x78, 0xc9, 0x8f, 0x94, 0x79, 0xcb, - 0x8e, 0x94, 0x79, 0xc9, 0x8f, 0x94, 0x7a, 0xcb, 0x8e, 0x94, 0x7a, 0xc9, - 0x8f, 0x94, 0x7b, 0xcb, 0x8e, 0x94, 0x7c, 0xc9, 0x8f, 0x94, 0x7c, 0xcb, - 0x8e, 0x94, 0x7d, 0xc9, 0x8f, 0x94, 0x7d, 0xcb, 0x8e, 0x94, 0x7e, 0xc9, - 0x8f, 0x94, 0x7e, 0xcb, 0x8e, 0x94, 0x7f, 0xc9, 0x8f, 0x94, 0x7f, 0xcb, - 0x8e, 0x94, 0x80, 0xc9, 0x8f, 0x94, 0x81, 0xcb, 0x8e, 0x94, 0x81, 0xc9, - 0x8f, 0x94, 0x82, 0xcb, 0x8e, 0x94, 0x82, 0xc9, 0x8f, 0x94, 0x83, 0xcb, - 0x8e, 0x94, 0x83, 0xc9, 0x8f, 0x94, 0x84, 0xcb, 0x8e, 0x94, 0x84, 0xc9, - 0x8f, 0x94, 0x85, 0xcb, 0x8e, 0x94, 0x85, 0xc9, 0x8f, 0x94, 0x86, 0xcb, - 0x8e, 0x94, 0x86, 0xc9, 0x8f, 0x94, 0x87, 0xcb, 0x8e, 0x94, 0x87, 0xc9, - 0x8f, 0x94, 0x88, 0xc9, 0x8f, 0x94, 0x88, 0xc9, 0x8f, 0x94, 0x89, 0xc9, - 0x8f, 0x94, 0x89, 0xc9, 0x8f, 0x94, 0x8a, 0xc9, 0x8f, 0x94, 0x8a, 0xc9, - 0x8f, 0x94, 0x8b, 0xc9, 0x8f, 0x94, 0x8b, 0xc9, 0x8f, 0x94, 0x8c, 0xc9, - 0x8f, 0x94, 0x8c, 0xc9, 0x8f, 0x94, 0x8d, 0xc9, 0x8f, 0x94, 0x8d, 0xc9, - 0x8f, 0x94, 0x8e, 0xc9, 0x8f, 0x94, 0x8e, 0xc9, 0x8f, 0x94, 0x8e, 0xc9, - 0x8f, 0x94, 0x8f, 0xc9, 0x8f, 0x94, 0x8e, 0xc9, 0x8f, 0x94, 0x8f, 0xc9, - 0x90, 0x94, 0x8e, 0xc9, 0x90, 0x94, 0x8f, 0xc9, 0x91, 0x94, 0x93, 0xc9, - 0x91, 0x94, 0x93, 0xc9, 0x92, 0x94, 0x93, 0xc9, 0x92, 0x94, 0x93, 0xc9, - 0x92, 0x94, 0x93, 0xc9, 0x92, 0x94, 0x94, 0xc9, 0x94, 0x94, 0x94, 0xc9, - 0x94, 0x94, 0x94, 0xc9, 0x94, 0x94, 0x95, 0xc9, 0x95, 0x94, 0x95, 0xc9, - 0x95, 0x94, 0x96, 0xc9, 0x96, 0x94, 0x96, 0xc9, 0x96, 0x94, 0x97, 0xc9, - 0x97, 0x94, 0x97, 0xc9, 0x97, 0x94, 0x98, 0xc9, 0x97, 0x94, 0x98, 0xc9, - 0x97, 0x94, 0x98, 0xca, 0x98, 0x94, 0x99, 0xca, 0x99, 0x94, 0x99, 0xca, - 0x99, 0x94, 0x9a, 0xca, 0x9a, 0x94, 0x9a, 0xca, 0x9a, 0x94, 0x9a, 0xca, - 0x9a, 0x94, 0x9b, 0xca, 0x9b, 0x94, 0x9b, 0xca, 0x9b, 0x94, 0x9c, 0xca, - 0x9c, 0x94, 0x9c, 0xca, 0x9b, 0x94, 0x9d, 0xca, 0x9c, 0x94, 0x9d, 0xca, - 0x9b, 0x94, 0x9d, 0xca, 0x9c, 0x94, 0x9e, 0xca, 0x9e, 0x94, 0x9e, 0xca, - 0x9e, 0x94, 0x9f, 0xca, 0x9f, 0x94, 0x9f, 0xca, 0x9f, 0x94, 0x9f, 0xca, - 0x9f, 0x94, 0xa0, 0xca, 0xa0, 0x94, 0xa0, 0xca, 0xa0, 0x94, 0xa1, 0xca, - 0xa0, 0x94, 0xa1, 0xca, 0xa0, 0x94, 0xa1, 0xc9, 0xa4, 0x94, 0xa2, 0xc9, - 0xa4, 0x94, 0xa2, 0xc9, 0xa4, 0x94, 0xa3, 0xc9, 0xa4, 0x94, 0xa3, 0xc9, - 0xa4, 0x94, 0xa3, 0xc9, 0xa4, 0x94, 0xa4, 0xc9, 0xa4, 0x94, 0xa3, 0xc9, - 0xa4, 0x94, 0xa4, 0xc9, 0xa5, 0x94, 0xa3, 0xc9, 0xa5, 0x94, 0xa4, 0xc9, - 0xa5, 0x94, 0xa4, 0xc9, 0xa6, 0x92, 0xa4, 0xc9, 0xa6, 0x94, 0xa4, 0xc9, - 0xa6, 0x92, 0xa4, 0xc9, 0xa7, 0x94, 0xa4, 0xc9, 0xa7, 0x92, 0xa4, 0xc9, - 0xa8, 0x94, 0xa4, 0xc9, 0xa8, 0x92, 0xa4, 0xc9, 0xa8, 0x94, 0xa4, 0xc9, - 0xa9, 0x92, 0xa4, 0xc9, 0xa9, 0x94, 0xa4, 0xc9, 0xaa, 0x92, 0xa4, 0xc9, - 0xaa, 0x94, 0xa4, 0xc9, 0xaa, 0x92, 0xa4, 0xc9, 0xab, 0x94, 0xa4, 0xc9, - 0xab, 0x92, 0xa4, 0xc9, 0xab, 0x94, 0xa4, 0xc9, 0xac, 0x92, 0xa4, 0xc9, - 0xac, 0x94, 0xa4, 0xc9, 0xac, 0x92, 0xa4, 0xc9, 0xad, 0x94, 0xa4, 0xc9, - 0xad, 0x92, 0xa5, 0xc9, 0xae, 0x8f, 0xa4, 0xc9, 0xae, 0x92, 0xa5, 0xc9, - 0xae, 0x8f, 0xa4, 0xc9, 0xaf, 0x92, 0xa5, 0xc9, 0xaf, 0x8f, 0xa4, 0xc9, - 0xaf, 0x92, 0xa5, 0xc9, 0xb0, 0x8f, 0xa4, 0xc9, 0xb0, 0x92, 0xa5, 0xc9, - 0xb0, 0x8f, 0xa4, 0xc9, 0xb1, 0x92, 0xa5, 0xc9, 0xb1, 0x8f, 0xa4, 0xc9, - 0xb2, 0x92, 0xa5, 0xc9, 0xb2, 0x8f, 0xa4, 0xc9, 0xb2, 0x92, 0xa5, 0xc9, - 0xb3, 0x8f, 0xa4, 0xc9, 0xb3, 0x92, 0xa5, 0xc9, 0xb3, 0x8f, 0xa4, 0xc9, - 0xb4, 0x92, 0xa5, 0xc9, 0xb4, 0x8f, 0xa4, 0xc9, 0xb4, 0x92, 0xa5, 0xc9, - 0xb5, 0x8f, 0xa4, 0xc9, 0xb5, 0x92, 0xa5, 0xc9, 0xb5, 0x8f, 0xa4, 0xc9, - 0xb6, 0x92, 0xa5, 0xc9, 0xb6, 0x8f, 0xa4, 0xc9, 0xb6, 0x92, 0xa5, 0xc9, - 0xb7, 0x8f, 0xa4, 0xc9, 0xb7, 0x92, 0xa5, 0xc9, 0xb7, 0x8f, 0xa4, 0xc9, - 0xb8, 0x92, 0xa5, 0xc9, 0xb8, 0x8f, 0xa4, 0xc9, 0xb8, 0x92, 0xa5, 0xc9, - 0xb9, 0x8f, 0xa4, 0xc9, 0xb9, 0x92, 0xa5, 0xc9, 0xb9, 0x8f, 0xa4, 0xc9, - 0xba, 0x92, 0xa5, 0xc9, 0xba, 0x8f, 0xa5, 0xc9, 0xba, 0x8c, 0xa5, 0xc9, - 0xbb, 0x8f, 0xa5, 0xc9, 0xbb, 0x8c, 0xa5, 0xc9, 0xbb, 0x8f, 0xc1, 0xc9, - 0xbc, 0x74, 0xc1, 0xc9, 0xbc, 0x74, 0xc1, 0xc9, 0xbc, 0x74, 0xc1, 0xc9, - 0xbd, 0x74, 0xc1, 0xc9, 0xbd, 0x74, 0xc1, 0xc9, 0xbd, 0x74, 0xc1, 0xc9, - 0xbe, 0x74, 0xc1, 0xc9, 0xbe, 0x74, 0xc1, 0xc9, 0xbe, 0x74, 0xc1, 0xc9, - 0xbf, 0x74, 0xc1, 0xc9, 0xbf, 0x74, 0xc4, 0xc9, 0xbf, 0x75, 0xc5, 0xc9, - 0xc0, 0x75, 0xc4, 0xc9, 0xc0, 0x75, 0xc5, 0xc9, 0xc0, 0x75, 0xc4, 0xc9, - 0xc1, 0x75, 0xc5, 0xc9, 0xc1, 0x75, 0xd3, 0xc9, 0xc1, 0x9c, 0xd3, 0xc9, - 0xc1, 0x9a, 0xd3, 0xc9, 0xc2, 0x9c, 0xd3, 0xc9, 0xc2, 0x9a, 0xd3, 0xc9, - 0xc2, 0x9c, 0xd3, 0xc9, 0xc3, 0x9a, 0xd4, 0xc9, 0xc3, 0x97, 0xd3, 0xc9, - 0xc3, 0x9a, 0xd4, 0xc9, 0xc4, 0x97, 0xd3, 0xc9, 0xc4, 0x9a, 0xd4, 0xc9, - 0xc4, 0x97, 0xd3, 0xc9, 0xc5, 0x9a, 0xd4, 0xc9, 0xc5, 0x97, 0xd3, 0xc9, - 0xc5, 0x9a, 0xd4, 0xc9, 0xc6, 0x97, 0xd3, 0xc9, 0xc6, 0x9a, 0xd4, 0xc9, - 0xc6, 0x97, 0xd3, 0xc9, 0xc6, 0x9a, 0xd4, 0xc9, 0xc7, 0x97, 0xd3, 0xc9, - 0xc7, 0x9a, 0xd4, 0xc9, 0xc7, 0x97, 0xd3, 0xc9, 0xc8, 0x9a, 0xd4, 0xc9, - 0xc8, 0x97, 0xd3, 0xc9, 0xc8, 0x9a, 0xd4, 0xc9, 0xc9, 0x97, 0xd3, 0xc9, - 0xc9, 0x9a, 0xd4, 0xc9, 0xc9, 0x97, 0xd4, 0xc9, 0xc9, 0x94, 0xd4, 0xc9, - 0xca, 0x97, 0xd4, 0xc9, 0xca, 0x94, 0xd4, 0xc9, 0xca, 0x97, 0xd4, 0xc9, - 0xcb, 0x94, 0xd4, 0xc9, 0xcb, 0x97, 0xd4, 0xc9, 0xcb, 0x94, 0xd4, 0xc9, - 0xcc, 0x97, 0xd4, 0xc9, 0xcc, 0x94, 0xd4, 0xc9, 0xcc, 0x97, 0xd4, 0xc9, - 0xcc, 0x94, 0xd4, 0xc9, 0xcd, 0x97, 0xd4, 0xc9, 0xcd, 0x94, 0xd4, 0xc9, - 0xcd, 0x97, 0xd4, 0xc9, 0xce, 0x94, 0xd4, 0xc9, 0xce, 0x97, 0xd4, 0xc9, - 0xce, 0x94, 0xd4, 0xc9, 0xce, 0x97, 0xd4, 0xc9, 0xcf, 0x94, 0xd4, 0xc9, - 0xcf, 0x97, 0xd4, 0xc9, 0xcf, 0x94, 0xd4, 0xc9, 0xd0, 0x97, 0xd4, 0xc9, - 0xd0, 0x94, 0xd4, 0xc9, 0xd0, 0x97, 0xd4, 0xc9, 0xd0, 0x94, 0xd4, 0xc9, - 0xd1, 0x97, 0xd4, 0xc9, 0xd1, 0x94, 0xd4, 0xc9, 0xd1, 0x97, 0xd4, 0xc9, - 0xd2, 0x94, 0xd4, 0xc9, 0xd2, 0x94, 0xd4, 0xc9, 0xd2, 0x94, 0xd4, 0xc9, - 0xd2, 0x94, 0xd4, 0xc9, 0xd3, 0x94, 0xd4, 0xc9, 0xd3, 0x94, 0xd4, 0xc9, - 0xd3, 0x94, 0xd4, 0xc9, 0xd4, 0x94, 0xd4, 0xc8, 0xd4, 0x94, 0xd4, 0xc9, - 0xd4, 0x94, 0xd4, 0xc8, 0xd4, 0x94, 0xd5, 0xc7, 0xd5, 0x94, 0xd5, 0xc7, - 0xd5, 0x94, 0xd5, 0xc7, 0xd5, 0x94, 0xd6, 0xc7, 0xd6, 0x94, 0xd6, 0xc8, - 0xd6, 0x94, 0xd6, 0xc8, 0xd7, 0x94, 0xd6, 0xc8, 0xd6, 0x94, 0xd7, 0xc8, - 0xd7, 0x94, 0xd7, 0xc8, 0xd7, 0x94, 0xd7, 0xc8, 0xd7, 0x94, 0xd7, 0xc8, - 0xd7, 0x94, 0xd8, 0xc8, 0xd8, 0x94, 0xd8, 0xc8, 0xd8, 0x94, 0xd8, 0xc8, - 0xd8, 0x94, 0xd9, 0xc8, 0xd9, 0x94, 0xd9, 0xc8, 0xd9, 0x94, 0xd9, 0xc8, - 0xd9, 0x94, 0xd9, 0xc9, 0xd9, 0x95, 0xda, 0xc9, 0xda, 0x95, 0xda, 0xc9, - 0xda, 0x95, 0xda, 0xc9, 0xda, 0x95, 0xda, 0xc9, 0xda, 0x95, 0xdb, 0xc9, - 0xdb, 0x95, 0xdb, 0xc9, 0xdb, 0x95, 0xdb, 0xc9, 0xdb, 0x95, 0xdb, 0xc9, - 0xdb, 0x95, 0xdc, 0xc9, 0xdc, 0x95, 0xdc, 0xc9, 0xdc, 0x95, 0xdc, 0xc9, - 0xdc, 0x95, 0xdc, 0xc9, 0xdd, 0x95, 0xdd, 0xc9, 0xdd, 0x96, 0xdd, 0xc9, - 0xdd, 0x96, 0xdd, 0xc9, 0xdd, 0x96, 0xde, 0xc9, 0xde, 0x96, 0xde, 0xc9, - 0xde, 0x96, 0xde, 0xc9, 0xde, 0x96, 0xde, 0xc9, 0xde, 0x96, 0xdf, 0xc9, - 0xdf, 0x96, 0xdf, 0xc9, 0xdf, 0x96, 0xdf, 0xc9, 0xdf, 0x96, 0xdf, 0xc9, - 0xdf, 0x96, 0xdf, 0xc9, 0xe0, 0x96, 0xdf, 0xc9, 0xe0, 0x96, 0xe0, 0xc9, - 0xe0, 0x97, 0xe1, 0xc9, 0xe1, 0x97, 0xe1, 0xc9, 0xe1, 0x97, 0xe1, 0xc9, - 0xe1, 0x97, 0xe1, 0xc9, 0xe1, 0x97, 0xe2, 0xc9, 0xe2, 0x97, 0xe2, 0xc9, - 0xe2, 0x97, 0xe2, 0xc9, 0xe2, 0x97, 0xe2, 0xc9, 0xe2, 0x97, 0xe2, 0xc9, - 0xe3, 0x97, 0xe2, 0xc9, 0xe3, 0x97, 0xe3, 0xc9, 0xe3, 0x98, 0xe3, 0xc9, - 0xe3, 0x98, 0xe4, 0xc9, 0xe4, 0x98, 0xe4, 0xc9, 0xe4, 0x98, 0xe4, 0xc9, - 0xe4, 0x98, 0xe4, 0xc9, 0xe4, 0x98, 0xe5, 0xc9, 0xe5, 0x98, 0xe4, 0xc9, - 0xe5, 0x98, 0xe5, 0xc9, 0xe5, 0x98, 0xe4, 0xc9, 0xe5, 0x98, 0xe5, 0xc9, - 0xe6, 0x98, 0xe6, 0xc9, 0xe6, 0x99, 0xe6, 0xc9, 0xe6, 0x99, 0xe6, 0xc9, - 0xe6, 0x99, 0xe7, 0xc9, 0xe7, 0x99, 0xe7, 0xc9, 0xe7, 0x99, 0xe7, 0xc9, - 0xe7, 0x99, 0xe7, 0xc9, 0xe7, 0x99, 0xe7, 0xc9, 0xe8, 0x99, 0xe7, 0xc9, - 0xe8, 0x99, 0xe7, 0xc9, 0xe8, 0x99, 0xe7, 0xc9, 0xe8, 0x99, 0xe7, 0xc9, - 0xe9, 0x99, 0xe7, 0xc9, 0xe9, 0x99, 0xe9, 0xc9, 0xe9, 0x9a, 0xe9, 0xc9, - 0xe9, 0x9a, 0xea, 0xc9, 0xea, 0x9a, 0xea, 0xc9, 0xea, 0x9a, 0xea, 0xc9, - 0xea, 0x9a, 0xea, 0xc9, 0xea, 0x9a, 0xea, 0xc9, 0xeb, 0x9a, 0xea, 0xc9, - 0xeb, 0x9a, 0xea, 0xc9, 0xeb, 0x9a, 0xee, 0xc9, 0xeb, 0x96, 0xee, 0xc9, - 0xec, 0x94, 0xee, 0xc9, 0xec, 0x96, 0xee, 0xc9, 0xec, 0x94, 0xee, 0xc9, - 0xec, 0x96, 0xee, 0xc9, 0xec, 0x94, 0xee, 0xc9, 0xed, 0x96, 0xee, 0xc9, - 0xed, 0x94, 0xee, 0xc9, 0xed, 0x96, 0xee, 0xc9, 0xed, 0x94, 0xef, 0xc9, - 0xee, 0x94, 0xee, 0xc9, 0xee, 0x94, 0xef, 0xc9, 0xee, 0x94, 0xee, 0xc9, - 0xee, 0x94, 0xef, 0xc9, 0xee, 0x94, 0xef, 0xc9, 0xee, 0x94, 0xef, 0xc9, - 0xee, 0x94, 0xef, 0xc9, 0xee, 0x94, 0xf0, 0xc9, 0xee, 0x94, 0xf0, 0xc9, - 0xee, 0x94, 0xf0, 0xc9, 0xee, 0x94, 0xf0, 0xc6, 0xf0, 0x94, 0xf1, 0xc6, - 0xf2, 0x94, 0xf1, 0xc6, 0xf2, 0x94, 0xf1, 0xc6, 0xf2, 0x94, 0xf1, 0xc6, - 0xf2, 0x94, 0xf2, 0xc6, 0xf2, 0x94, 0xf2, 0xc6, 0xf2, 0x94, 0xf2, 0xc6, - 0xf2, 0x94, 0xf2, 0xc6, 0xf2, 0x94, 0xf2, 0xc6, 0xf2, 0x94, 0xf3, 0xc6, - 0xf3, 0x94, 0xf3, 0xc6, 0xf3, 0x94, 0xf3, 0xc6, 0xf3, 0x94, 0xf3, 0xc6, - 0xf3, 0x94, 0xf4, 0xc7, 0xf5, 0x94, 0xf4, 0xc7, 0xf5, 0x94, 0xf4, 0xc7, - 0xf5, 0x94, 0xf4, 0xc7, 0xf5, 0x94, 0xf5, 0xc7, 0xf5, 0x94, 0xf5, 0xc7, - 0xf5, 0x94, 0xf5, 0xc7, 0xf5, 0x94, 0xf5, 0xc7, 0xf5, 0x94, 0xf5, 0xc7, - 0xf5, 0x94, 0xf6, 0xc7, 0xf6, 0x94, 0xf6, 0xc7, 0xf6, 0x94, 0xf6, 0xc7, - 0xf6, 0x94, 0xf6, 0xc7, 0xf6, 0x94, 0xf7, 0xc7, 0xf7, 0x94, 0xf7, 0xc7, - 0xf7, 0x94, 0xf7, 0xc7, 0xf7, 0x94, 0xf7, 0xc7, 0xf7, 0x94, 0xf8, 0xc7, - 0xf7, 0x94, 0xf8, 0xc7, 0xf7, 0x94, 0xf8, 0xc7, 0xf7, 0x94, 0xf8, 0xc7, - 0xf7, 0x94, 0xf8, 0xc7, 0xf7, 0x94, 0xf9, 0xc7, 0xf7, 0x94, 0xf9, 0xc7, - 0xf7, 0x94, 0xf9, 0xc7, 0xf7, 0x94, 0xf9, 0xc6, 0xf8, 0x94, 0xfa, 0xc7, - 0xf7, 0x94, 0xfa, 0xc6, 0xf8, 0x94, 0xfa, 0xc7, 0xf7, 0x94, 0xfa, 0xc6, - 0xf8, 0x94, 0xfa, 0xc7, 0xf7, 0x94, 0xfb, 0xc6, 0xf8, 0x94, 0xfb, 0xc7, - 0xf7, 0x94, 0xfb, 0xc6, 0xf8, 0x94, 0xfb, 0xc7, 0xf7, 0x94, 0xfc, 0xc6, - 0xf8, 0x94, 0xfc, 0xc7, 0xf7, 0x94, 0xfc, 0xc6, 0xf8, 0x94, 0xfc, 0xc7, - 0xf7, 0x94, 0xfc, 0xc6, 0xf8, 0x94, 0xfd, 0xc7, 0xf7, 0x94, 0xfd, 0xc6, - 0xf8, 0x94, 0xfd, 0xc7, 0xf7, 0x94, 0xfd, 0xc6, 0xf8, 0x94, 0xfe, 0xc7, - 0xf7, 0x94, 0xfe, 0xc6, 0xf8, 0x94, 0xfe, 0xc7, 0xf7, 0x94, 0xfe, 0xc6, - 0xf8, 0x94, 0xfe, 0xc7, 0xf7, 0x94, 0xff, 0xc6, 0xf8, 0x94, 0xff, 0xc7, - 0xf7, 0x94, 0x03, 0xd0, 0x8d, 0x95, 0x0a, 0xcf, 0x8e, 0x95, 0x0f, 0xd0, - 0x8d, 0x95, 0x14, 0xcf, 0x8e, 0x95, 0x17, 0xd0, 0x8d, 0x95, 0x1b, 0xcf, - 0x8e, 0x95, 0x1e, 0xd0, 0x8d, 0x95, 0x20, 0xcf, 0x8e, 0x95, 0x23, 0xd0, - 0x8d, 0x95, 0x25, 0xcf, 0x8e, 0x95, 0x27, 0xd0, 0x8d, 0x95, 0x29, 0xcf, - 0x8e, 0x95, 0x2b, 0xd0, 0x8d, 0x95, 0x2d, 0xcf, 0x8e, 0x95, 0x2f, 0xd0, - 0x8d, 0x95, 0x31, 0xcf, 0x8e, 0x95, 0x32, 0xd0, 0x8d, 0x95, 0x34, 0xcf, - 0x8e, 0x95, 0x35, 0xcd, 0x8e, 0x95, 0x37, 0xcf, 0x8e, 0x95, 0x38, 0xcd, - 0x8e, 0x95, 0x3a, 0xcf, 0x8e, 0x95, 0x3b, 0xcd, 0x8e, 0x95, 0x3c, 0xcf, - 0x8e, 0x95, 0x3e, 0xcd, 0x8e, 0x95, 0x3f, 0xcf, 0x8e, 0x95, 0x40, 0xcd, - 0x8e, 0x95, 0x42, 0xcf, 0x8e, 0x95, 0x43, 0xcd, 0x8e, 0x95, 0x44, 0xcf, - 0x8e, 0x95, 0x45, 0xcd, 0x8e, 0x95, 0x46, 0xcf, 0x8e, 0x95, 0x47, 0xcd, - 0x8e, 0x95, 0x48, 0xcf, 0x8e, 0x95, 0x49, 0xcd, 0x8e, 0x95, 0x4a, 0xcf, - 0x8e, 0x95, 0x4b, 0xcd, 0x8e, 0x95, 0x4c, 0xcf, 0x8e, 0x95, 0x4d, 0xcd, - 0x8e, 0x95, 0x4e, 0xcf, 0x8e, 0x95, 0x4f, 0xcd, 0x8e, 0x95, 0x50, 0xcf, - 0x8e, 0x95, 0x51, 0xcd, 0x8e, 0x95, 0x52, 0xcf, 0x8e, 0x95, 0x53, 0xcd, - 0x8e, 0x95, 0x54, 0xcf, 0x8e, 0x95, 0x55, 0xcd, 0x8e, 0x95, 0x56, 0xcf, - 0x8e, 0x95, 0x57, 0xcd, 0x8e, 0x95, 0x58, 0xcf, 0x8e, 0x95, 0x58, 0xcd, - 0x8e, 0x95, 0x59, 0xcf, 0x8e, 0x95, 0x5a, 0xcd, 0x8e, 0x95, 0x5b, 0xcf, - 0x8e, 0x95, 0x5c, 0xcd, 0x8e, 0x95, 0x5d, 0xcb, 0x8e, 0x95, 0x5d, 0xcd, - 0x8e, 0x95, 0x5e, 0xcb, 0x8e, 0x95, 0x5f, 0xcd, 0x8e, 0x95, 0x60, 0xcb, - 0x8e, 0x95, 0x60, 0xcd, 0x8e, 0x95, 0x61, 0xcb, 0x8e, 0x95, 0x62, 0xcd, - 0x8e, 0x95, 0x63, 0xcb, 0x8e, 0x95, 0x63, 0xcd, 0x8e, 0x95, 0x64, 0xcb, - 0x8e, 0x95, 0x65, 0xcd, 0x8e, 0x95, 0x66, 0xcb, 0x8e, 0x95, 0x66, 0xcd, - 0x8e, 0x95, 0x67, 0xcb, 0x8e, 0x95, 0x68, 0xcd, 0x8e, 0x95, 0x68, 0xcb, - 0x8e, 0x95, 0x69, 0xcd, 0x8e, 0x95, 0x6a, 0xcb, 0x8e, 0x95, 0x6a, 0xcd, - 0x8e, 0x95, 0x6b, 0xcb, 0x8e, 0x95, 0x6c, 0xcd, 0x8e, 0x95, 0x6c, 0xcb, - 0x8e, 0x95, 0x6d, 0xcd, 0x8e, 0x95, 0x6e, 0xcb, 0x8e, 0x95, 0x6e, 0xcd, - 0x8e, 0x95, 0x6f, 0xcb, 0x8e, 0x95, 0x70, 0xcd, 0x8e, 0x95, 0x70, 0xcb, - 0x8e, 0x95, 0x71, 0xcd, 0x8e, 0x95, 0x72, 0xcb, 0x8e, 0x95, 0x72, 0xcd, - 0x8e, 0x95, 0x73, 0xcb, 0x8e, 0x95, 0x73, 0xcd, 0x8e, 0x95, 0x74, 0xcb, - 0x8e, 0x95, 0x75, 0xcd, 0x8e, 0x95, 0x75, 0xcb, 0x8e, 0x95, 0x76, 0xc9, - 0x8f, 0x95, 0x76, 0xcb, 0x8e, 0x95, 0x77, 0xc9, 0x8f, 0x95, 0x78, 0xcb, - 0x8e, 0x95, 0x78, 0xc9, 0x8f, 0x95, 0x79, 0xcb, 0x8e, 0x95, 0x79, 0xc9, - 0x8f, 0x95, 0x7a, 0xcb, 0x8e, 0x95, 0x7a, 0xc9, 0x8f, 0x95, 0x7b, 0xcb, - 0x8e, 0x95, 0x7c, 0xc9, 0x8f, 0x95, 0x7c, 0xcb, 0x8e, 0x95, 0x7d, 0xc9, - 0x8f, 0x95, 0x7d, 0xcb, 0x8e, 0x95, 0x7e, 0xc9, 0x8f, 0x95, 0x7e, 0xcb, - 0x8e, 0x95, 0x7f, 0xc9, 0x8f, 0x95, 0x7f, 0xcb, 0x8e, 0x95, 0x80, 0xc9, - 0x8f, 0x95, 0x81, 0xcb, 0x8e, 0x95, 0x81, 0xc9, 0x8f, 0x95, 0x82, 0xcb, - 0x8e, 0x95, 0x82, 0xc9, 0x8f, 0x95, 0x83, 0xcb, 0x8e, 0x95, 0x83, 0xc9, - 0x8f, 0x95, 0x84, 0xcb, 0x8e, 0x95, 0x84, 0xc9, 0x8f, 0x95, 0x85, 0xcb, - 0x8e, 0x95, 0x85, 0xc9, 0x8f, 0x95, 0x86, 0xcb, 0x8e, 0x95, 0x86, 0xc9, - 0x8f, 0x95, 0x87, 0xcb, 0x8e, 0x95, 0x87, 0xc9, 0x8f, 0x95, 0x88, 0xc9, - 0x8f, 0x95, 0x88, 0xc9, 0x8f, 0x95, 0x89, 0xc9, 0x8f, 0x95, 0x89, 0xc9, - 0x8f, 0x95, 0x8a, 0xc9, 0x8f, 0x95, 0x8a, 0xc9, 0x8f, 0x95, 0x8b, 0xc9, - 0x8f, 0x95, 0x8b, 0xc9, 0x8f, 0x95, 0x8c, 0xc9, 0x8f, 0x95, 0x8c, 0xc9, - 0x8f, 0x95, 0x8d, 0xc9, 0x8f, 0x95, 0x8d, 0xc9, 0x8f, 0x95, 0x8e, 0xc9, - 0x8f, 0x95, 0x8e, 0xc9, 0x8f, 0x95, 0x8e, 0xc9, 0x8f, 0x95, 0x8f, 0xc9, - 0x8f, 0x94, 0x8e, 0xc9, 0x8f, 0x95, 0x8f, 0xc9, 0x90, 0x94, 0x8e, 0xc9, - 0x90, 0x95, 0x8f, 0xc9, 0x91, 0x94, 0x93, 0xc9, 0x91, 0x94, 0x93, 0xc9, - 0x92, 0x94, 0x93, 0xc9, 0x92, 0x94, 0x93, 0xc9, 0x93, 0x94, 0x93, 0xc9, - 0x93, 0x94, 0x94, 0xc9, 0x94, 0x94, 0x94, 0xc9, 0x94, 0x94, 0x94, 0xc9, - 0x94, 0x94, 0x95, 0xc9, 0x95, 0x94, 0x95, 0xc9, 0x95, 0x95, 0x96, 0xc9, - 0x96, 0x95, 0x96, 0xc9, 0x96, 0x95, 0x97, 0xc9, 0x97, 0x95, 0x97, 0xc9, - 0x97, 0x95, 0x98, 0xc9, 0x98, 0x95, 0x98, 0xc9, 0x98, 0x95, 0x98, 0xc9, - 0x98, 0x95, 0x99, 0xc9, 0x99, 0x95, 0x99, 0xc9, 0x99, 0x95, 0x9a, 0xc9, - 0x9a, 0x95, 0x9a, 0xc9, 0x99, 0x95, 0x9a, 0xc9, 0x9a, 0x95, 0x9b, 0xca, - 0x9b, 0x95, 0x9b, 0xca, 0x9b, 0x95, 0x9c, 0xca, 0x9c, 0x95, 0x9c, 0xca, - 0x9c, 0x95, 0x9d, 0xca, 0x9d, 0x95, 0x9d, 0xca, 0x9d, 0x95, 0x9d, 0xca, - 0x9d, 0x95, 0x9e, 0xca, 0x9e, 0x95, 0x9e, 0xca, 0x9e, 0x95, 0x9f, 0xca, - 0x9e, 0x95, 0x9f, 0xca, 0x9e, 0x95, 0x9f, 0xca, 0x9e, 0x95, 0xa0, 0xca, - 0x9e, 0x95, 0xa0, 0xcb, 0xa0, 0x95, 0xa1, 0xcb, 0xa1, 0x95, 0xa1, 0xcb, - 0xa1, 0x95, 0xa1, 0xcb, 0xa1, 0x95, 0xa2, 0xcb, 0xa2, 0x95, 0xa2, 0xc9, - 0xa4, 0x95, 0xa3, 0xc9, 0xa4, 0x95, 0xa3, 0xc9, 0xa4, 0x95, 0xa3, 0xc9, - 0xa4, 0x95, 0xa4, 0xc9, 0xa4, 0x95, 0xa3, 0xc9, 0xa4, 0x95, 0xa4, 0xc9, - 0xa5, 0x95, 0xa3, 0xc9, 0xa5, 0x95, 0xa4, 0xc9, 0xa5, 0x95, 0xa3, 0xc9, - 0xa6, 0x95, 0xa4, 0xc9, 0xa6, 0x95, 0xa3, 0xc9, 0xa6, 0x95, 0xa4, 0xc9, - 0xa7, 0x95, 0xa4, 0xc9, 0xa7, 0x92, 0xa4, 0xc9, 0xa8, 0x95, 0xa4, 0xc9, - 0xa8, 0x92, 0xa4, 0xc9, 0xa8, 0x95, 0xa4, 0xc9, 0xa9, 0x92, 0xa4, 0xc9, - 0xa9, 0x95, 0xa4, 0xc9, 0xaa, 0x92, 0xa4, 0xc9, 0xaa, 0x95, 0xa4, 0xc9, - 0xaa, 0x92, 0xa4, 0xc9, 0xab, 0x95, 0xa4, 0xc9, 0xab, 0x92, 0xa4, 0xc9, - 0xab, 0x95, 0xa4, 0xc9, 0xac, 0x92, 0xa4, 0xc9, 0xac, 0x95, 0xa4, 0xc9, - 0xac, 0x92, 0xa4, 0xc9, 0xad, 0x95, 0xa4, 0xc9, 0xad, 0x92, 0xa4, 0xc9, - 0xae, 0x95, 0xa4, 0xc9, 0xae, 0x92, 0xa4, 0xc9, 0xae, 0x95, 0xa4, 0xc9, - 0xaf, 0x92, 0xa4, 0xc9, 0xaf, 0x95, 0xa4, 0xc9, 0xaf, 0x92, 0xa4, 0xc9, - 0xb0, 0x95, 0xa4, 0xc9, 0xb0, 0x92, 0xa4, 0xc9, 0xb0, 0x95, 0xa4, 0xc9, - 0xb1, 0x92, 0xa4, 0xc9, 0xb1, 0x95, 0xa4, 0xc9, 0xb2, 0x92, 0xa5, 0xc9, - 0xb2, 0x8f, 0xa4, 0xc9, 0xb2, 0x92, 0xa5, 0xc9, 0xb3, 0x8f, 0xa4, 0xc9, - 0xb3, 0x92, 0xa5, 0xc9, 0xb3, 0x8f, 0xa4, 0xc9, 0xb4, 0x92, 0xa5, 0xc9, - 0xb4, 0x8f, 0xa4, 0xc9, 0xb4, 0x92, 0xa5, 0xc9, 0xb5, 0x8f, 0xa4, 0xc9, - 0xb5, 0x92, 0xa5, 0xc9, 0xb5, 0x8f, 0xa4, 0xc9, 0xb6, 0x92, 0xa5, 0xc9, - 0xb6, 0x8f, 0xa4, 0xc9, 0xb6, 0x92, 0xa5, 0xc9, 0xb7, 0x8f, 0xa4, 0xc9, - 0xb7, 0x92, 0xa5, 0xc9, 0xb7, 0x8f, 0xa4, 0xc9, 0xb8, 0x92, 0xa5, 0xc9, - 0xb8, 0x8f, 0xa4, 0xc9, 0xb8, 0x92, 0xa5, 0xc9, 0xb9, 0x8f, 0xa5, 0xc9, - 0xb9, 0x8d, 0xa5, 0xc9, 0xb9, 0x8f, 0xa5, 0xc9, 0xba, 0x8d, 0xa5, 0xc9, - 0xba, 0x8f, 0xa5, 0xc9, 0xba, 0x8d, 0xa5, 0xc9, 0xbb, 0x8f, 0xa5, 0xc9, - 0xbb, 0x8d, 0xa5, 0xc9, 0xbb, 0x8f, 0xa5, 0xc9, 0xbc, 0x8d, 0xbf, 0xc9, - 0xbc, 0x74, 0xbf, 0xc9, 0xbc, 0x74, 0xbf, 0xc9, 0xbd, 0x74, 0xbf, 0xc9, - 0xbd, 0x74, 0xc2, 0xc9, 0xbd, 0x75, 0xc3, 0xc9, 0xbe, 0x75, 0xc2, 0xc9, - 0xbe, 0x75, 0xc3, 0xc9, 0xbe, 0x75, 0xc2, 0xc9, 0xbf, 0x75, 0xc3, 0xc9, - 0xbf, 0x75, 0xc2, 0xc9, 0xbf, 0x75, 0xc3, 0xc9, 0xc0, 0x75, 0xc2, 0xc9, - 0xc0, 0x75, 0xc3, 0xc9, 0xc0, 0x75, 0xd3, 0xc9, 0xc1, 0x9d, 0xd3, 0xc9, - 0xc1, 0x9a, 0xd3, 0xc9, 0xc1, 0x9d, 0xd3, 0xc9, 0xc1, 0x9a, 0xd4, 0xc9, - 0xc2, 0x97, 0xd3, 0xc9, 0xc2, 0x9a, 0xd4, 0xc9, 0xc2, 0x97, 0xd3, 0xc9, - 0xc3, 0x9a, 0xd4, 0xc9, 0xc3, 0x97, 0xd3, 0xc9, 0xc3, 0x9a, 0xd4, 0xc9, - 0xc4, 0x97, 0xd3, 0xc9, 0xc4, 0x9a, 0xd4, 0xc9, 0xc4, 0x97, 0xd3, 0xc9, - 0xc5, 0x9a, 0xd4, 0xc9, 0xc5, 0x97, 0xd3, 0xc9, 0xc5, 0x9a, 0xd4, 0xc9, - 0xc6, 0x97, 0xd3, 0xc9, 0xc6, 0x9a, 0xd4, 0xc9, 0xc6, 0x97, 0xd3, 0xc9, - 0xc6, 0x9a, 0xd4, 0xc9, 0xc7, 0x97, 0xd3, 0xc9, 0xc7, 0x9a, 0xd4, 0xc9, - 0xc7, 0x97, 0xd3, 0xc9, 0xc8, 0x9a, 0xd4, 0xc9, 0xc8, 0x97, 0xd3, 0xc9, - 0xc8, 0x9a, 0xd4, 0xc9, 0xc9, 0x97, 0xd3, 0xc9, 0xc9, 0x9a, 0xd4, 0xc9, - 0xc9, 0x97, 0xd3, 0xc9, 0xc9, 0x9a, 0xd4, 0xc9, 0xca, 0x97, 0xd3, 0xc9, - 0xca, 0x9a, 0xd4, 0xc9, 0xca, 0x97, 0xd3, 0xc9, 0xcb, 0x9a, 0xd4, 0xc9, - 0xcb, 0x97, 0xd3, 0xc9, 0xcb, 0x9a, 0xd4, 0xc9, 0xcc, 0x97, 0xd3, 0xc9, - 0xcc, 0x9a, 0xd4, 0xc9, 0xcc, 0x97, 0xd3, 0xc9, 0xcc, 0x9a, 0xd4, 0xc9, - 0xcd, 0x97, 0xd4, 0xc9, 0xcd, 0x95, 0xd4, 0xc9, 0xcd, 0x97, 0xd4, 0xc9, - 0xce, 0x95, 0xd4, 0xc9, 0xce, 0x97, 0xd4, 0xc9, 0xce, 0x95, 0xd4, 0xc9, - 0xce, 0x97, 0xd4, 0xc9, 0xcf, 0x95, 0xd4, 0xc9, 0xcf, 0x97, 0xd4, 0xc9, - 0xcf, 0x95, 0xd4, 0xc9, 0xd0, 0x97, 0xd4, 0xc9, 0xd0, 0x95, 0xd4, 0xc9, - 0xd0, 0x97, 0xd4, 0xc9, 0xd0, 0x95, 0xd4, 0xc9, 0xd1, 0x97, 0xd4, 0xc9, - 0xd1, 0x95, 0xd4, 0xc9, 0xd1, 0x97, 0xd4, 0xc9, 0xd2, 0x95, 0xd4, 0xc9, - 0xd2, 0x97, 0xd4, 0xc9, 0xd2, 0x95, 0xd4, 0xc9, 0xd2, 0x97, 0xd4, 0xc9, - 0xd3, 0x95, 0xd4, 0xc9, 0xd3, 0x95, 0xd4, 0xc9, 0xd3, 0x95, 0xd4, 0xc9, - 0xd4, 0x95, 0xd4, 0xc8, 0xd4, 0x95, 0xd4, 0xc9, 0xd4, 0x95, 0xd4, 0xc8, - 0xd4, 0x95, 0xd5, 0xc9, 0xd4, 0x95, 0xd5, 0xc8, 0xd5, 0x95, 0xd5, 0xc8, - 0xd5, 0x95, 0xd6, 0xc8, 0xd6, 0x95, 0xd6, 0xc8, 0xd6, 0x95, 0xd6, 0xc8, - 0xd6, 0x95, 0xd6, 0xc8, 0xd6, 0x95, 0xd7, 0xc8, 0xd7, 0x95, 0xd7, 0xc8, - 0xd7, 0x95, 0xd7, 0xc8, 0xd7, 0x95, 0xd7, 0xc8, 0xd8, 0x95, 0xd8, 0xc8, - 0xd8, 0x95, 0xd8, 0xc8, 0xd8, 0x95, 0xd8, 0xc8, 0xd8, 0x95, 0xd9, 0xc8, - 0xd9, 0x95, 0xd9, 0xc8, 0xd9, 0x95, 0xd9, 0xc8, 0xd9, 0x95, 0xd9, 0xc8, - 0xd9, 0x95, 0xda, 0xc8, 0xda, 0x95, 0xda, 0xc8, 0xda, 0x95, 0xda, 0xc8, - 0xda, 0x95, 0xda, 0xc8, 0xda, 0x95, 0xdb, 0xc8, 0xdb, 0x95, 0xdb, 0xc9, - 0xdb, 0x96, 0xdb, 0xc9, 0xdb, 0x96, 0xdb, 0xc9, 0xdb, 0x96, 0xdc, 0xc9, - 0xdc, 0x96, 0xdc, 0xc9, 0xdc, 0x96, 0xdc, 0xc9, 0xdc, 0x96, 0xdd, 0xc9, - 0xdd, 0x96, 0xdd, 0xc9, 0xdd, 0x96, 0xdd, 0xc9, 0xdd, 0x96, 0xdd, 0xc9, - 0xdd, 0x96, 0xde, 0xc9, 0xde, 0x96, 0xdd, 0xc9, 0xde, 0x96, 0xde, 0xc9, - 0xde, 0x96, 0xde, 0xc9, 0xde, 0x97, 0xdf, 0xc9, 0xdf, 0x97, 0xdf, 0xc9, - 0xdf, 0x97, 0xdf, 0xc9, 0xdf, 0x97, 0xdf, 0xc9, 0xdf, 0x97, 0xe0, 0xc9, - 0xe0, 0x97, 0xe0, 0xc9, 0xe0, 0x97, 0xe0, 0xc9, 0xe0, 0x97, 0xe1, 0xc9, - 0xe1, 0x97, 0xe0, 0xc9, 0xe1, 0x97, 0xe1, 0xc9, 0xe1, 0x97, 0xe0, 0xc9, - 0xe1, 0x97, 0xe1, 0xc9, 0xe2, 0x97, 0xe2, 0xc9, 0xe2, 0x98, 0xe2, 0xc9, - 0xe2, 0x98, 0xe2, 0xc9, 0xe2, 0x98, 0xe3, 0xc9, 0xe3, 0x98, 0xe3, 0xc9, - 0xe3, 0x98, 0xe3, 0xc9, 0xe3, 0x98, 0xe3, 0xc9, 0xe3, 0x98, 0xe3, 0xc9, - 0xe4, 0x98, 0xe3, 0xc9, 0xe4, 0x98, 0xe3, 0xc9, 0xe4, 0x98, 0xe3, 0xc9, - 0xe4, 0x98, 0xe5, 0xc9, 0xe5, 0x99, 0xe5, 0xc9, 0xe5, 0x99, 0xe5, 0xc9, - 0xe5, 0x99, 0xe5, 0xc9, 0xe5, 0x99, 0xe6, 0xc9, 0xe6, 0x99, 0xe6, 0xc9, - 0xe6, 0x99, 0xe6, 0xc9, 0xe6, 0x99, 0xe6, 0xc9, 0xe6, 0x99, 0xe6, 0xc9, - 0xe7, 0x99, 0xe6, 0xc9, 0xe7, 0x99, 0xe6, 0xc9, 0xe7, 0x99, 0xe7, 0xc9, - 0xe7, 0x9a, 0xe8, 0xc9, 0xe8, 0x9a, 0xe8, 0xc9, 0xe8, 0x9a, 0xe8, 0xc9, - 0xe8, 0x9a, 0xe8, 0xc9, 0xe8, 0x9a, 0xe9, 0xc9, 0xe9, 0x9a, 0xe8, 0xc9, - 0xe9, 0x9a, 0xe9, 0xc9, 0xe9, 0x9a, 0xe8, 0xc9, 0xe9, 0x9a, 0xe9, 0xc9, - 0xea, 0x9a, 0xe8, 0xc9, 0xea, 0x9a, 0xe9, 0xc9, 0xea, 0x9a, 0xea, 0xc9, - 0xea, 0x9b, 0xeb, 0xc9, 0xeb, 0x9b, 0xeb, 0xc9, 0xeb, 0x9b, 0xeb, 0xc9, - 0xeb, 0x9b, 0xee, 0xc9, 0xeb, 0x96, 0xee, 0xc9, 0xec, 0x95, 0xee, 0xc9, - 0xec, 0x96, 0xee, 0xc9, 0xec, 0x95, 0xee, 0xc9, 0xec, 0x96, 0xee, 0xc9, - 0xec, 0x95, 0xee, 0xc9, 0xed, 0x96, 0xee, 0xc9, 0xed, 0x95, 0xee, 0xc9, - 0xed, 0x96, 0xee, 0xc9, 0xed, 0x95, 0xee, 0xc9, 0xee, 0x96, 0xee, 0xc9, - 0xee, 0x95, 0xef, 0xc9, 0xee, 0x95, 0xee, 0xc9, 0xee, 0x95, 0xef, 0xc9, - 0xee, 0x95, 0xef, 0xc9, 0xee, 0x95, 0xef, 0xc9, 0xee, 0x95, 0xef, 0xc9, - 0xee, 0x95, 0xf0, 0xc9, 0xee, 0x95, 0xf0, 0xc9, 0xee, 0x95, 0xf0, 0xc9, - 0xee, 0x95, 0xf0, 0xc6, 0xf0, 0x95, 0xf1, 0xc6, 0xf1, 0x95, 0xf1, 0xc6, - 0xf1, 0x95, 0xf1, 0xc6, 0xf1, 0x95, 0xf1, 0xc6, 0xf1, 0x95, 0xf2, 0xc6, - 0xf2, 0x95, 0xf2, 0xc6, 0xf2, 0x95, 0xf2, 0xc6, 0xf2, 0x95, 0xf2, 0xc6, - 0xf3, 0x95, 0xf2, 0xc6, 0xf3, 0x95, 0xf3, 0xc6, 0xf3, 0x95, 0xf3, 0xc6, - 0xf3, 0x95, 0xf3, 0xc6, 0xf3, 0x95, 0xf3, 0xc6, 0xf3, 0x95, 0xf4, 0xc6, - 0xf4, 0x95, 0xf4, 0xc6, 0xf4, 0x95, 0xf4, 0xc6, 0xf4, 0x95, 0xf4, 0xc6, - 0xf4, 0x95, 0xf5, 0xc6, 0xf5, 0x95, 0xf5, 0xc6, 0xf5, 0x95, 0xf5, 0xc7, - 0xf6, 0x95, 0xf5, 0xc7, 0xf6, 0x95, 0xf5, 0xc7, 0xf6, 0x95, 0xf6, 0xc7, - 0xf6, 0x95, 0xf6, 0xc7, 0xf6, 0x95, 0xf6, 0xc7, 0xf6, 0x95, 0xf6, 0xc7, - 0xf6, 0x95, 0xf7, 0xc7, 0xf7, 0x95, 0xf7, 0xc7, 0xf7, 0x95, 0xf7, 0xc7, - 0xf7, 0x95, 0xf7, 0xc7, 0xf7, 0x95, 0xf8, 0xc7, 0xf7, 0x95, 0xf8, 0xc7, - 0xf7, 0x95, 0xf8, 0xc7, 0xf7, 0x95, 0xf8, 0xc7, 0xf7, 0x95, 0xf8, 0xc7, - 0xf7, 0x95, 0xf9, 0xc7, 0xf7, 0x95, 0xf9, 0xc7, 0xf7, 0x95, 0xf9, 0xc7, - 0xf7, 0x95, 0xf9, 0xc7, 0xf7, 0x95, 0xfa, 0xc7, 0xf7, 0x95, 0xfa, 0xc7, - 0xf7, 0x95, 0xfa, 0xc7, 0xf7, 0x95, 0xfa, 0xc7, 0xf7, 0x95, 0xfa, 0xc7, - 0xf7, 0x95, 0xfb, 0xc7, 0xf7, 0x95, 0xfb, 0xc7, 0xf7, 0x95, 0xfb, 0xc6, - 0xf8, 0x95, 0xfb, 0xc7, 0xf7, 0x95, 0xfc, 0xc6, 0xf8, 0x95, 0xfc, 0xc7, - 0xf7, 0x95, 0xfc, 0xc6, 0xf8, 0x95, 0xfc, 0xc7, 0xf7, 0x95, 0xfc, 0xc6, - 0xf8, 0x95, 0xfd, 0xc7, 0xf7, 0x95, 0xfd, 0xc6, 0xf8, 0x95, 0xfd, 0xc7, - 0xf7, 0x95, 0xfd, 0xc6, 0xf8, 0x95, 0xfe, 0xc7, 0xf7, 0x95, 0xfe, 0xc6, - 0xf8, 0x95, 0xfe, 0xc7, 0xf7, 0x95, 0xfe, 0xc6, 0xf8, 0x95, 0xfe, 0xc7, - 0xf7, 0x95, 0xff, 0xc6, 0xf8, 0x95, 0xff, 0xc7, 0xf7, 0x95, 0x03, 0xd1, - 0x8d, 0x95, 0x0a, 0xcf, 0x8e, 0x95, 0x0f, 0xd1, 0x8d, 0x95, 0x14, 0xcf, - 0x8e, 0x95, 0x17, 0xd1, 0x8d, 0x95, 0x1b, 0xcf, 0x8e, 0x95, 0x1e, 0xcd, - 0x8e, 0x95, 0x20, 0xcf, 0x8e, 0x95, 0x23, 0xcd, 0x8e, 0x95, 0x25, 0xcf, - 0x8e, 0x95, 0x27, 0xcd, 0x8e, 0x95, 0x29, 0xcf, 0x8e, 0x95, 0x2b, 0xcd, - 0x8e, 0x95, 0x2d, 0xcf, 0x8e, 0x95, 0x2f, 0xcd, 0x8e, 0x95, 0x31, 0xcf, - 0x8e, 0x95, 0x32, 0xcd, 0x8e, 0x95, 0x34, 0xcf, 0x8e, 0x95, 0x35, 0xcd, - 0x8e, 0x95, 0x37, 0xcf, 0x8e, 0x95, 0x38, 0xcd, 0x8e, 0x95, 0x3a, 0xcf, - 0x8e, 0x95, 0x3b, 0xcd, 0x8e, 0x95, 0x3c, 0xcf, 0x8e, 0x95, 0x3e, 0xcd, - 0x8e, 0x95, 0x3f, 0xcf, 0x8e, 0x95, 0x40, 0xcd, 0x8e, 0x95, 0x42, 0xcf, - 0x8e, 0x95, 0x43, 0xcd, 0x8e, 0x95, 0x44, 0xcf, 0x8e, 0x95, 0x45, 0xcd, - 0x8e, 0x95, 0x46, 0xcf, 0x8e, 0x95, 0x47, 0xcd, 0x8e, 0x95, 0x48, 0xcf, - 0x8e, 0x95, 0x49, 0xcd, 0x8e, 0x95, 0x4a, 0xcf, 0x8e, 0x95, 0x4b, 0xcd, - 0x8e, 0x95, 0x4c, 0xcf, 0x8e, 0x95, 0x4d, 0xcd, 0x8e, 0x95, 0x4e, 0xcf, - 0x8e, 0x95, 0x4f, 0xcd, 0x8e, 0x95, 0x50, 0xcf, 0x8e, 0x95, 0x51, 0xcd, - 0x8e, 0x95, 0x52, 0xcf, 0x8e, 0x95, 0x53, 0xcd, 0x8e, 0x95, 0x54, 0xcf, - 0x8e, 0x95, 0x55, 0xcd, 0x8e, 0x95, 0x56, 0xcb, 0x8e, 0x95, 0x57, 0xcd, - 0x8e, 0x95, 0x58, 0xcb, 0x8e, 0x95, 0x58, 0xcd, 0x8e, 0x95, 0x59, 0xcb, - 0x8e, 0x95, 0x5a, 0xcd, 0x8e, 0x95, 0x5b, 0xcb, 0x8e, 0x95, 0x5c, 0xcd, - 0x8e, 0x95, 0x5d, 0xcb, 0x8e, 0x95, 0x5d, 0xcd, 0x8e, 0x95, 0x5e, 0xcb, - 0x8e, 0x95, 0x5f, 0xcd, 0x8e, 0x95, 0x60, 0xcb, 0x8e, 0x95, 0x60, 0xcd, - 0x8e, 0x95, 0x61, 0xcb, 0x8e, 0x95, 0x62, 0xcd, 0x8e, 0x95, 0x63, 0xcb, - 0x8e, 0x95, 0x63, 0xcd, 0x8e, 0x95, 0x64, 0xcb, 0x8e, 0x95, 0x65, 0xcd, - 0x8e, 0x95, 0x66, 0xcb, 0x8e, 0x95, 0x66, 0xcd, 0x8e, 0x95, 0x67, 0xcb, - 0x8e, 0x95, 0x68, 0xcd, 0x8e, 0x95, 0x68, 0xcb, 0x8e, 0x95, 0x69, 0xcd, - 0x8e, 0x95, 0x6a, 0xcb, 0x8e, 0x95, 0x6a, 0xcd, 0x8e, 0x95, 0x6b, 0xcb, - 0x8e, 0x95, 0x6c, 0xcd, 0x8e, 0x95, 0x6c, 0xcb, 0x8e, 0x95, 0x6d, 0xcd, - 0x8e, 0x95, 0x6e, 0xcb, 0x8e, 0x95, 0x6e, 0xcd, 0x8e, 0x95, 0x6f, 0xcb, - 0x8e, 0x95, 0x70, 0xcd, 0x8e, 0x95, 0x70, 0xcb, 0x8e, 0x95, 0x71, 0xcd, - 0x8e, 0x95, 0x72, 0xcb, 0x8e, 0x95, 0x72, 0xcd, 0x8e, 0x95, 0x73, 0xcb, - 0x8e, 0x95, 0x73, 0xcd, 0x8e, 0x95, 0x74, 0xcb, 0x8e, 0x95, 0x75, 0xcd, - 0x8e, 0x95, 0x75, 0xcb, 0x8e, 0x95, 0x76, 0xcd, 0x8e, 0x95, 0x76, 0xcb, - 0x8e, 0x95, 0x77, 0xcd, 0x8e, 0x95, 0x78, 0xcb, 0x8e, 0x95, 0x78, 0xcd, - 0x8e, 0x95, 0x79, 0xcb, 0x8e, 0x95, 0x79, 0xcd, 0x8e, 0x95, 0x7a, 0xcb, - 0x8e, 0x95, 0x7a, 0xcd, 0x8e, 0x95, 0x7b, 0xcb, 0x8e, 0x95, 0x7c, 0xcd, - 0x8e, 0x95, 0x7c, 0xcb, 0x8e, 0x95, 0x7d, 0xc9, 0x8f, 0x95, 0x7d, 0xcb, - 0x8e, 0x95, 0x7e, 0xc9, 0x8f, 0x95, 0x7e, 0xcb, 0x8e, 0x95, 0x7f, 0xc9, - 0x8f, 0x95, 0x7f, 0xcb, 0x8e, 0x95, 0x80, 0xc9, 0x8f, 0x95, 0x81, 0xcb, - 0x8e, 0x95, 0x81, 0xc9, 0x8f, 0x95, 0x82, 0xcb, 0x8e, 0x95, 0x82, 0xc9, - 0x8f, 0x95, 0x83, 0xcb, 0x8e, 0x95, 0x83, 0xc9, 0x8f, 0x95, 0x84, 0xcb, - 0x8e, 0x95, 0x84, 0xc9, 0x8f, 0x95, 0x85, 0xcb, 0x8e, 0x95, 0x85, 0xc9, - 0x8f, 0x95, 0x86, 0xcb, 0x8e, 0x95, 0x86, 0xc9, 0x8f, 0x95, 0x87, 0xcb, - 0x8e, 0x95, 0x87, 0xc9, 0x8f, 0x95, 0x88, 0xcb, 0x8e, 0x95, 0x88, 0xc9, - 0x8f, 0x95, 0x89, 0xcb, 0x8e, 0x95, 0x89, 0xc9, 0x8f, 0x95, 0x8a, 0xcb, - 0x8e, 0x95, 0x8a, 0xc9, 0x8f, 0x95, 0x8b, 0xcb, 0x8e, 0x95, 0x8b, 0xc9, - 0x8f, 0x95, 0x8c, 0xc9, 0x8f, 0x95, 0x8c, 0xc9, 0x8f, 0x95, 0x8d, 0xc9, - 0x8f, 0x95, 0x8d, 0xc9, 0x8f, 0x95, 0x8e, 0xc9, 0x8f, 0x95, 0x8e, 0xc9, - 0x8f, 0x95, 0x8e, 0xc9, 0x8f, 0x95, 0x8f, 0xc9, 0x8f, 0x94, 0x8e, 0xc9, - 0x8f, 0x95, 0x8f, 0xc9, 0x90, 0x94, 0x8e, 0xc9, 0x90, 0x95, 0x8f, 0xc9, - 0x91, 0x94, 0x93, 0xc9, 0x91, 0x94, 0x93, 0xc9, 0x92, 0x94, 0x93, 0xc9, - 0x92, 0x94, 0x93, 0xc9, 0x93, 0x94, 0x93, 0xc9, 0x93, 0x94, 0x94, 0xc9, - 0x94, 0x94, 0x94, 0xc9, 0x94, 0x94, 0x94, 0xc9, 0x94, 0x94, 0x95, 0xc9, - 0x95, 0x94, 0x95, 0xc9, 0x95, 0x94, 0x96, 0xc9, 0x96, 0x94, 0x96, 0xc9, - 0x96, 0x94, 0x97, 0xc9, 0x97, 0x94, 0x97, 0xc9, 0x97, 0x94, 0x98, 0xca, - 0x98, 0x95, 0x98, 0xca, 0x98, 0x95, 0x98, 0xca, 0x98, 0x95, 0x99, 0xca, - 0x99, 0x95, 0x99, 0xca, 0x99, 0x95, 0x9a, 0xca, 0x9a, 0x95, 0x9a, 0xca, - 0x9a, 0x95, 0x9a, 0xca, 0x9a, 0x95, 0x9b, 0xca, 0x9b, 0x95, 0x9b, 0xca, - 0x9b, 0x95, 0x9c, 0xca, 0x9c, 0x95, 0x9c, 0xca, 0x9b, 0x95, 0x9d, 0xca, - 0x9c, 0x95, 0x9d, 0xca, 0x9d, 0x95, 0x9d, 0xca, 0x9d, 0x95, 0x9e, 0xca, - 0x9e, 0x95, 0x9e, 0xca, 0x9e, 0x95, 0x9f, 0xca, 0x9f, 0x95, 0x9f, 0xca, - 0x9f, 0x95, 0x9f, 0xca, 0x9f, 0x95, 0xa0, 0xca, 0xa0, 0x95, 0xa0, 0xca, - 0xa0, 0x95, 0xa1, 0xca, 0xa0, 0x95, 0xa1, 0xca, 0xa0, 0x95, 0xa1, 0xca, - 0xa0, 0x95, 0xa2, 0xca, 0xa0, 0x95, 0xa2, 0xc9, 0xa4, 0x95, 0xa3, 0xc9, - 0xa4, 0x95, 0xa3, 0xc9, 0xa4, 0x95, 0xa3, 0xc9, 0xa4, 0x95, 0xa4, 0xc9, - 0xa4, 0x94, 0xa3, 0xc9, 0xa4, 0x95, 0xa4, 0xc9, 0xa5, 0x94, 0xa3, 0xc9, - 0xa5, 0x95, 0xa4, 0xc9, 0xa5, 0x94, 0xa3, 0xc9, 0xa6, 0x95, 0xa4, 0xc9, - 0xa6, 0x94, 0xa3, 0xc9, 0xa6, 0x95, 0xa4, 0xc9, 0xa7, 0x94, 0xa4, 0xc9, - 0xa7, 0x92, 0xa4, 0xc9, 0xa8, 0x94, 0xa4, 0xc9, 0xa8, 0x92, 0xa4, 0xc9, - 0xa8, 0x94, 0xa4, 0xc9, 0xa9, 0x92, 0xa4, 0xc9, 0xa9, 0x94, 0xa4, 0xc9, - 0xaa, 0x92, 0xa4, 0xc9, 0xaa, 0x94, 0xa4, 0xc9, 0xaa, 0x92, 0xa4, 0xc9, - 0xab, 0x94, 0xa4, 0xc9, 0xab, 0x92, 0xa4, 0xc9, 0xab, 0x94, 0xa4, 0xc9, - 0xac, 0x92, 0xa4, 0xc9, 0xac, 0x94, 0xa4, 0xc9, 0xac, 0x92, 0xa4, 0xc9, - 0xad, 0x94, 0xa4, 0xc9, 0xad, 0x92, 0xa4, 0xc9, 0xae, 0x94, 0xa4, 0xc9, - 0xae, 0x92, 0xa4, 0xc9, 0xae, 0x94, 0xa4, 0xc9, 0xaf, 0x92, 0xa4, 0xc9, - 0xaf, 0x94, 0xa4, 0xc9, 0xaf, 0x92, 0xa4, 0xc9, 0xb0, 0x94, 0xa4, 0xc9, - 0xb0, 0x92, 0xa4, 0xc9, 0xb0, 0x94, 0xa4, 0xc9, 0xb1, 0x92, 0xa4, 0xc9, - 0xb1, 0x94, 0xa4, 0xc9, 0xb2, 0x92, 0xa5, 0xc9, 0xb2, 0x8f, 0xa4, 0xc9, - 0xb2, 0x92, 0xa5, 0xc9, 0xb3, 0x8f, 0xa4, 0xc9, 0xb3, 0x92, 0xa5, 0xc9, - 0xb3, 0x8f, 0xa4, 0xc9, 0xb4, 0x92, 0xa5, 0xc9, 0xb4, 0x8f, 0xa4, 0xc9, - 0xb4, 0x92, 0xa5, 0xc9, 0xb5, 0x8f, 0xa4, 0xc9, 0xb5, 0x92, 0xa5, 0xc9, - 0xb5, 0x8f, 0xa4, 0xc9, 0xb6, 0x92, 0xa5, 0xc9, 0xb6, 0x8f, 0xa4, 0xc9, - 0xb6, 0x92, 0xa5, 0xc9, 0xb7, 0x8f, 0xa4, 0xc9, 0xb7, 0x92, 0xa5, 0xc9, - 0xb7, 0x8f, 0xa4, 0xc9, 0xb8, 0x92, 0xa5, 0xc9, 0xb8, 0x8f, 0xa4, 0xc9, - 0xb8, 0x92, 0xa5, 0xc9, 0xb9, 0x8f, 0xa4, 0xc9, 0xb9, 0x92, 0xa5, 0xc9, - 0xb9, 0x8f, 0xa4, 0xc9, 0xba, 0x92, 0xa5, 0xc9, 0xba, 0x8f, 0xa4, 0xc9, - 0xba, 0x92, 0xa5, 0xc9, 0xbb, 0x8f, 0xa4, 0xc9, 0xbb, 0x92, 0xa5, 0xc9, - 0xbb, 0x8f, 0xa4, 0xc9, 0xbc, 0x92, 0xa5, 0xc9, 0xbc, 0x8f, 0xc1, 0xc9, - 0xbc, 0x74, 0xc1, 0xc9, 0xbd, 0x74, 0xc1, 0xc9, 0xbd, 0x74, 0xc1, 0xc9, - 0xbd, 0x74, 0xc1, 0xc9, 0xbe, 0x74, 0xc1, 0xc9, 0xbe, 0x74, 0xc1, 0xc9, - 0xbe, 0x74, 0xc1, 0xc9, 0xbf, 0x74, 0xc1, 0xc9, 0xbf, 0x74, 0xc4, 0xc9, - 0xbf, 0x75, 0xc5, 0xc9, 0xc0, 0x75, 0xc4, 0xc9, 0xc0, 0x75, 0xd3, 0xc9, - 0xc0, 0x9a, 0xd3, 0xc9, 0xc1, 0x9c, 0xd3, 0xc9, 0xc1, 0x9a, 0xd3, 0xc9, - 0xc1, 0x9c, 0xd3, 0xc9, 0xc1, 0x9a, 0xd3, 0xc9, 0xc2, 0x9c, 0xd3, 0xc9, - 0xc2, 0x9a, 0xd3, 0xc9, 0xc2, 0x9c, 0xd3, 0xc9, 0xc3, 0x9a, 0xd3, 0xc9, - 0xc3, 0x9c, 0xd3, 0xc9, 0xc3, 0x9a, 0xd3, 0xc9, 0xc4, 0x9c, 0xd3, 0xc9, - 0xc4, 0x9a, 0xd3, 0xc9, 0xc4, 0x9c, 0xd3, 0xc9, 0xc5, 0x9a, 0xd3, 0xc9, - 0xc5, 0x9c, 0xd3, 0xc9, 0xc5, 0x9a, 0xd3, 0xc9, 0xc6, 0x9c, 0xd3, 0xc9, - 0xc6, 0x9a, 0xd3, 0xc9, 0xc6, 0x9c, 0xd3, 0xc9, 0xc6, 0x9a, 0xd4, 0xc9, - 0xc7, 0x97, 0xd3, 0xc9, 0xc7, 0x9a, 0xd4, 0xc9, 0xc7, 0x97, 0xd3, 0xc9, - 0xc8, 0x9a, 0xd4, 0xc9, 0xc8, 0x97, 0xd3, 0xc9, 0xc8, 0x9a, 0xd4, 0xc9, - 0xc9, 0x97, 0xd3, 0xc9, 0xc9, 0x9a, 0xd4, 0xc9, 0xc9, 0x97, 0xd3, 0xc9, - 0xc9, 0x9a, 0xd4, 0xc9, 0xca, 0x97, 0xd3, 0xc9, 0xca, 0x9a, 0xd4, 0xc9, - 0xca, 0x97, 0xd3, 0xc9, 0xcb, 0x9a, 0xd4, 0xc9, 0xcb, 0x97, 0xd3, 0xc9, - 0xcb, 0x9a, 0xd4, 0xc9, 0xcc, 0x97, 0xd3, 0xc9, 0xcc, 0x9a, 0xd4, 0xc9, - 0xcc, 0x97, 0xd3, 0xc9, 0xcc, 0x9a, 0xd4, 0xc9, 0xcd, 0x97, 0xd4, 0xc9, - 0xcd, 0x95, 0xd4, 0xc9, 0xcd, 0x97, 0xd4, 0xc9, 0xce, 0x95, 0xd4, 0xc9, - 0xce, 0x97, 0xd4, 0xc9, 0xce, 0x95, 0xd4, 0xc9, 0xce, 0x97, 0xd4, 0xc9, - 0xcf, 0x95, 0xd4, 0xc9, 0xcf, 0x97, 0xd4, 0xc9, 0xcf, 0x95, 0xd4, 0xc9, - 0xd0, 0x97, 0xd4, 0xc9, 0xd0, 0x95, 0xd4, 0xc9, 0xd0, 0x97, 0xd4, 0xc9, - 0xd0, 0x95, 0xd4, 0xc9, 0xd1, 0x97, 0xd4, 0xc9, 0xd1, 0x95, 0xd4, 0xc9, - 0xd1, 0x97, 0xd4, 0xc9, 0xd2, 0x95, 0xd4, 0xc9, 0xd2, 0x97, 0xd4, 0xc9, - 0xd2, 0x95, 0xd4, 0xc9, 0xd2, 0x97, 0xd4, 0xc9, 0xd3, 0x95, 0xd4, 0xc9, - 0xd3, 0x95, 0xd4, 0xc9, 0xd3, 0x95, 0xd4, 0xc9, 0xd4, 0x95, 0xd4, 0xc9, - 0xd3, 0x95, 0xd4, 0xc9, 0xd4, 0x95, 0xd4, 0xc9, 0xd3, 0x95, 0xd5, 0xc9, - 0xd4, 0x95, 0xd5, 0xc8, 0xd4, 0x95, 0xd5, 0xc8, 0xd6, 0x95, 0xd6, 0xc8, - 0xd7, 0x95, 0xd6, 0xc8, 0xd6, 0x95, 0xd6, 0xc8, 0xd7, 0x95, 0xd6, 0xc8, - 0xd6, 0x95, 0xd7, 0xc8, 0xd7, 0x95, 0xd7, 0xc8, 0xd7, 0x95, 0xd7, 0xc8, - 0xd7, 0x95, 0xd7, 0xc8, 0xd7, 0x95, 0xd8, 0xc8, 0xd8, 0x95, 0xd8, 0xc8, - 0xd8, 0x95, 0xd8, 0xc8, 0xd8, 0x95, 0xd9, 0xc8, 0xd9, 0x95, 0xd9, 0xc9, - 0xd9, 0x95, 0xd9, 0xc9, 0xda, 0x95, 0xd9, 0xc9, 0xd9, 0x95, 0xda, 0xc9, - 0xda, 0x95, 0xda, 0xc9, 0xda, 0x95, 0xda, 0xc9, 0xda, 0x95, 0xda, 0xc9, - 0xda, 0x95, 0xdb, 0xc9, 0xdb, 0x95, 0xdb, 0xc9, 0xdb, 0x95, 0xdb, 0xc9, - 0xdb, 0x95, 0xdb, 0xc9, 0xdb, 0x95, 0xdc, 0xc9, 0xdc, 0x95, 0xdc, 0xc9, - 0xdc, 0x95, 0xdc, 0xc9, 0xdc, 0x96, 0xdd, 0xc9, 0xdd, 0x96, 0xdd, 0xc9, - 0xdd, 0x96, 0xdd, 0xc9, 0xdd, 0x96, 0xdd, 0xc9, 0xdd, 0x96, 0xde, 0xc9, - 0xde, 0x96, 0xde, 0xc9, 0xde, 0x96, 0xde, 0xc9, 0xde, 0x96, 0xde, 0xc9, - 0xde, 0x96, 0xdf, 0xc9, 0xdf, 0x96, 0xdf, 0xc9, 0xdf, 0x96, 0xdf, 0xc9, - 0xdf, 0x96, 0xdf, 0xc9, 0xdf, 0x96, 0xe0, 0xc9, 0xe0, 0x97, 0xe0, 0xc9, - 0xe0, 0x97, 0xe0, 0xc9, 0xe0, 0x97, 0xe1, 0xc9, 0xe1, 0x97, 0xe1, 0xc9, - 0xe1, 0x97, 0xe1, 0xc9, 0xe1, 0x97, 0xe1, 0xc9, 0xe1, 0x97, 0xe2, 0xc9, - 0xe2, 0x97, 0xe2, 0xc9, 0xe2, 0x97, 0xe2, 0xc9, 0xe2, 0x97, 0xe2, 0xc9, - 0xe2, 0x97, 0xe2, 0xc9, 0xe3, 0x97, 0xe2, 0xc9, 0xe3, 0x97, 0xe3, 0xc9, - 0xe3, 0x98, 0xe3, 0xc9, 0xe3, 0x98, 0xe4, 0xc9, 0xe4, 0x98, 0xe4, 0xc9, - 0xe4, 0x98, 0xe4, 0xc9, 0xe4, 0x98, 0xe4, 0xc9, 0xe4, 0x98, 0xe5, 0xc9, - 0xe5, 0x98, 0xe4, 0xc9, 0xe5, 0x98, 0xe5, 0xc9, 0xe5, 0x98, 0xe4, 0xc9, - 0xe5, 0x98, 0xe5, 0xc9, 0xe6, 0x98, 0xe6, 0xc9, 0xe6, 0x99, 0xe6, 0xc9, - 0xe6, 0x99, 0xe6, 0xc9, 0xe6, 0x99, 0xe7, 0xc9, 0xe7, 0x99, 0xe7, 0xc9, - 0xe7, 0x99, 0xe7, 0xc9, 0xe7, 0x99, 0xe7, 0xc9, 0xe7, 0x99, 0xe7, 0xc9, - 0xe8, 0x99, 0xe7, 0xc9, 0xe8, 0x99, 0xe7, 0xc9, 0xe8, 0x99, 0xe7, 0xc9, - 0xe8, 0x99, 0xe9, 0xc9, 0xe9, 0x9a, 0xe9, 0xc9, 0xe9, 0x9a, 0xe9, 0xc9, - 0xe9, 0x9a, 0xe9, 0xc9, 0xe9, 0x9a, 0xea, 0xc9, 0xea, 0x9a, 0xea, 0xc9, - 0xea, 0x9a, 0xea, 0xc9, 0xea, 0x9a, 0xea, 0xc9, 0xea, 0x9a, 0xea, 0xc9, - 0xeb, 0x9a, 0xea, 0xc9, 0xeb, 0x9a, 0xea, 0xc9, 0xeb, 0x9a, 0xea, 0xc9, - 0xeb, 0x9a, 0xea, 0xc9, 0xec, 0x9a, 0xee, 0xc9, 0xec, 0x96, 0xee, 0xc9, - 0xec, 0x95, 0xee, 0xc9, 0xec, 0x96, 0xee, 0xc9, 0xec, 0x95, 0xee, 0xc9, - 0xed, 0x96, 0xee, 0xc9, 0xed, 0x95, 0xee, 0xc9, 0xed, 0x96, 0xee, 0xc9, - 0xed, 0x95, 0xee, 0xc9, 0xee, 0x96, 0xee, 0xc9, 0xee, 0x95, 0xef, 0xc9, - 0xee, 0x95, 0xee, 0xc9, 0xee, 0x95, 0xef, 0xc9, 0xee, 0x95, 0xef, 0xc9, - 0xee, 0x95, 0xef, 0xc9, 0xee, 0x95, 0xef, 0xc9, 0xee, 0x95, 0xf0, 0xc9, - 0xee, 0x95, 0xf0, 0xc9, 0xee, 0x95, 0xf0, 0xc9, 0xee, 0x95, 0xf0, 0xc9, - 0xee, 0x95, 0xf1, 0xc9, 0xee, 0x95, 0xf1, 0xc6, 0xf2, 0x95, 0xf1, 0xc6, - 0xf2, 0x95, 0xf1, 0xc6, 0xf2, 0x95, 0xf2, 0xc6, 0xf2, 0x95, 0xf2, 0xc6, - 0xf2, 0x95, 0xf2, 0xc6, 0xf2, 0x95, 0xf2, 0xc6, 0xf2, 0x95, 0xf2, 0xc6, - 0xf2, 0x95, 0xf3, 0xc6, 0xf3, 0x95, 0xf3, 0xc6, 0xf3, 0x95, 0xf3, 0xc6, - 0xf3, 0x95, 0xf3, 0xc6, 0xf3, 0x95, 0xf4, 0xc7, 0xf5, 0x95, 0xf4, 0xc7, - 0xf5, 0x95, 0xf4, 0xc7, 0xf5, 0x95, 0xf4, 0xc7, 0xf5, 0x95, 0xf5, 0xc7, - 0xf5, 0x95, 0xf5, 0xc7, 0xf5, 0x95, 0xf5, 0xc7, 0xf5, 0x95, 0xf5, 0xc7, - 0xf5, 0x95, 0xf5, 0xc7, 0xf5, 0x95, 0xf6, 0xc7, 0xf6, 0x95, 0xf6, 0xc7, - 0xf6, 0x95, 0xf6, 0xc7, 0xf6, 0x95, 0xf6, 0xc7, 0xf6, 0x95, 0xf7, 0xc7, - 0xf7, 0x95, 0xf7, 0xc7, 0xf7, 0x95, 0xf7, 0xc7, 0xf7, 0x95, 0xf7, 0xc7, - 0xf7, 0x95, 0xf8, 0xc7, 0xf7, 0x95, 0xf8, 0xc7, 0xf7, 0x95, 0xf8, 0xc7, - 0xf7, 0x95, 0xf8, 0xc7, 0xf7, 0x95, 0xf8, 0xc7, 0xf7, 0x95, 0xf9, 0xc7, - 0xf7, 0x95, 0xf9, 0xc7, 0xf7, 0x95, 0xf9, 0xc7, 0xf7, 0x95, 0xf9, 0xc6, - 0xf8, 0x95, 0xfa, 0xc7, 0xf7, 0x95, 0xfa, 0xc6, 0xf8, 0x95, 0xfa, 0xc7, - 0xf7, 0x95, 0xfa, 0xc6, 0xf8, 0x95, 0xfa, 0xc7, 0xf7, 0x95, 0xfb, 0xc6, - 0xf8, 0x95, 0xfb, 0xc7, 0xf7, 0x95, 0xfb, 0xc6, 0xf8, 0x95, 0xfb, 0xc7, - 0xf7, 0x95, 0xfc, 0xc6, 0xf8, 0x95, 0xfc, 0xc7, 0xf7, 0x95, 0xfc, 0xc6, - 0xf8, 0x95, 0xfc, 0xc7, 0xf7, 0x95, 0xfc, 0xc6, 0xf8, 0x95, 0xfd, 0xc7, - 0xf7, 0x95, 0xfd, 0xc6, 0xf8, 0x95, 0xfd, 0xc7, 0xf7, 0x95, 0xfd, 0xc6, - 0xf8, 0x95, 0xfe, 0xc7, 0xf7, 0x95, 0xfe, 0xc6, 0xf8, 0x95, 0xfe, 0xc7, - 0xf7, 0x95, 0xfe, 0xc6, 0xf8, 0x95, 0xfe, 0xc7, 0xf7, 0x95, 0xff, 0xc6, - 0xf8, 0x95, 0xff, 0xc7, 0xf7, 0x95, 0x03, 0xd0, 0x8d, 0x96, 0x0a, 0xd0, - 0x8d, 0x96, 0x0f, 0xd0, 0x8d, 0x96, 0x14, 0xd0, 0x8d, 0x96, 0x17, 0xd0, - 0x8d, 0x96, 0x1b, 0xd0, 0x8d, 0x96, 0x1e, 0xd0, 0x8d, 0x96, 0x20, 0xcf, - 0x8e, 0x96, 0x23, 0xd0, 0x8d, 0x96, 0x25, 0xcf, 0x8e, 0x96, 0x27, 0xd0, - 0x8d, 0x96, 0x29, 0xcf, 0x8e, 0x96, 0x2b, 0xd0, 0x8d, 0x96, 0x2d, 0xcf, - 0x8e, 0x96, 0x2f, 0xd0, 0x8d, 0x96, 0x31, 0xcf, 0x8e, 0x96, 0x32, 0xd0, - 0x8d, 0x96, 0x34, 0xcf, 0x8e, 0x96, 0x35, 0xd0, 0x8d, 0x96, 0x37, 0xcf, - 0x8e, 0x96, 0x38, 0xd0, 0x8d, 0x96, 0x3a, 0xcf, 0x8e, 0x96, 0x3b, 0xd0, - 0x8d, 0x96, 0x3c, 0xcf, 0x8e, 0x96, 0x3e, 0xd0, 0x8d, 0x96, 0x3f, 0xcf, - 0x8e, 0x96, 0x40, 0xd0, 0x8d, 0x96, 0x42, 0xcf, 0x8e, 0x96, 0x43, 0xd0, - 0x8d, 0x96, 0x44, 0xcf, 0x8e, 0x96, 0x45, 0xcd, 0x8e, 0x96, 0x46, 0xcf, - 0x8e, 0x96, 0x47, 0xcd, 0x8e, 0x96, 0x48, 0xcf, 0x8e, 0x96, 0x49, 0xcd, - 0x8e, 0x96, 0x4a, 0xcf, 0x8e, 0x96, 0x4b, 0xcd, 0x8e, 0x96, 0x4c, 0xcf, - 0x8e, 0x96, 0x4d, 0xcd, 0x8e, 0x96, 0x4e, 0xcf, 0x8e, 0x96, 0x4f, 0xcd, - 0x8e, 0x96, 0x50, 0xcf, 0x8e, 0x96, 0x51, 0xcd, 0x8e, 0x96, 0x52, 0xcf, - 0x8e, 0x96, 0x53, 0xcd, 0x8e, 0x96, 0x54, 0xcf, 0x8e, 0x96, 0x55, 0xcd, - 0x8e, 0x96, 0x56, 0xcf, 0x8e, 0x96, 0x57, 0xcd, 0x8e, 0x96, 0x58, 0xcf, - 0x8e, 0x96, 0x58, 0xcd, 0x8e, 0x96, 0x59, 0xcf, 0x8e, 0x96, 0x5a, 0xcd, - 0x8e, 0x96, 0x5b, 0xcf, 0x8e, 0x96, 0x5c, 0xcd, 0x8e, 0x96, 0x5d, 0xcf, - 0x8e, 0x96, 0x5d, 0xcd, 0x8e, 0x96, 0x5e, 0xcf, 0x8e, 0x96, 0x5f, 0xcd, - 0x8e, 0x96, 0x60, 0xcf, 0x8e, 0x96, 0x60, 0xcd, 0x8e, 0x96, 0x61, 0xcf, - 0x8e, 0x96, 0x62, 0xcd, 0x8e, 0x96, 0x63, 0xcf, 0x8e, 0x96, 0x63, 0xcd, - 0x8e, 0x96, 0x64, 0xcf, 0x8e, 0x96, 0x65, 0xcd, 0x8e, 0x96, 0x66, 0xcb, - 0x8e, 0x96, 0x66, 0xcd, 0x8e, 0x96, 0x67, 0xcb, 0x8e, 0x96, 0x68, 0xcd, - 0x8e, 0x96, 0x68, 0xcb, 0x8e, 0x96, 0x69, 0xcd, 0x8e, 0x96, 0x6a, 0xcb, - 0x8e, 0x96, 0x6a, 0xcd, 0x8e, 0x96, 0x6b, 0xcb, 0x8e, 0x96, 0x6c, 0xcd, - 0x8e, 0x96, 0x6c, 0xcb, 0x8e, 0x96, 0x6d, 0xcd, 0x8e, 0x96, 0x6e, 0xcb, - 0x8e, 0x96, 0x6e, 0xcd, 0x8e, 0x96, 0x6f, 0xcb, 0x8e, 0x96, 0x70, 0xcd, - 0x8e, 0x96, 0x70, 0xcb, 0x8e, 0x96, 0x71, 0xcd, 0x8e, 0x96, 0x72, 0xcb, - 0x8e, 0x96, 0x72, 0xcd, 0x8e, 0x96, 0x73, 0xcb, 0x8e, 0x96, 0x73, 0xcd, - 0x8e, 0x96, 0x74, 0xcb, 0x8e, 0x96, 0x75, 0xcd, 0x8e, 0x96, 0x75, 0xcb, - 0x8e, 0x96, 0x76, 0xcd, 0x8e, 0x96, 0x76, 0xcb, 0x8e, 0x96, 0x77, 0xcd, - 0x8e, 0x96, 0x78, 0xcb, 0x8e, 0x96, 0x78, 0xcd, 0x8e, 0x96, 0x79, 0xcb, - 0x8e, 0x96, 0x79, 0xcd, 0x8e, 0x96, 0x7a, 0xcb, 0x8e, 0x96, 0x7a, 0xcd, - 0x8e, 0x96, 0x7b, 0xcb, 0x8e, 0x96, 0x7c, 0xcd, 0x8e, 0x96, 0x7c, 0xcb, - 0x8e, 0x96, 0x7d, 0xc9, 0x8f, 0x96, 0x7d, 0xcb, 0x8e, 0x96, 0x7e, 0xc9, - 0x8f, 0x96, 0x7e, 0xcb, 0x8e, 0x96, 0x7f, 0xc9, 0x8f, 0x96, 0x7f, 0xcb, - 0x8e, 0x96, 0x80, 0xc9, 0x8f, 0x96, 0x81, 0xcb, 0x8e, 0x96, 0x81, 0xc9, - 0x8f, 0x96, 0x82, 0xcb, 0x8e, 0x96, 0x82, 0xc9, 0x8f, 0x96, 0x83, 0xcb, - 0x8e, 0x96, 0x83, 0xc9, 0x8f, 0x96, 0x84, 0xcb, 0x8e, 0x96, 0x84, 0xc9, - 0x8f, 0x96, 0x85, 0xcb, 0x8e, 0x96, 0x85, 0xc9, 0x8f, 0x96, 0x86, 0xcb, - 0x8e, 0x96, 0x86, 0xc9, 0x8f, 0x96, 0x87, 0xcb, 0x8e, 0x96, 0x87, 0xc9, - 0x8f, 0x96, 0x88, 0xcb, 0x8e, 0x96, 0x88, 0xc9, 0x8f, 0x96, 0x89, 0xcb, - 0x8e, 0x96, 0x89, 0xc9, 0x8f, 0x96, 0x8a, 0xcb, 0x8e, 0x96, 0x8a, 0xc9, - 0x8f, 0x96, 0x8b, 0xcb, 0x8e, 0x96, 0x8b, 0xc9, 0x8f, 0x96, 0x8c, 0xc9, - 0x8f, 0x96, 0x8c, 0xc9, 0x8f, 0x96, 0x8d, 0xc9, 0x8f, 0x96, 0x8d, 0xc9, - 0x8f, 0x96, 0x8e, 0xc9, 0x8f, 0x96, 0x8e, 0xc9, 0x8f, 0x96, 0x8e, 0xc9, - 0x8f, 0x96, 0x8e, 0xc9, 0x8f, 0x96, 0x8e, 0xc9, 0x8f, 0x96, 0x8e, 0xc9, - 0x90, 0x96, 0x8e, 0xc9, 0x90, 0x96, 0x8f, 0xc9, 0x91, 0x94, 0x93, 0xc9, - 0x91, 0x94, 0x93, 0xc9, 0x92, 0x94, 0x93, 0xc9, 0x92, 0x94, 0x93, 0xc9, - 0x93, 0x94, 0x93, 0xc9, 0x93, 0x94, 0x94, 0xc9, 0x94, 0x94, 0x94, 0xc9, - 0x94, 0x94, 0x95, 0xc9, 0x94, 0x95, 0x96, 0xc9, 0x95, 0x95, 0x95, 0xc9, - 0x95, 0x95, 0x96, 0xc9, 0x96, 0x95, 0x96, 0xc9, 0x96, 0x95, 0x97, 0xc9, - 0x97, 0x95, 0x97, 0xc9, 0x97, 0x95, 0x98, 0xc9, 0x98, 0x95, 0x98, 0xc9, - 0x98, 0x95, 0x98, 0xc9, 0x98, 0x95, 0x99, 0xc9, 0x99, 0x95, 0x99, 0xc9, - 0x99, 0x95, 0x9a, 0xc9, 0x9a, 0x95, 0x9a, 0xca, 0x9a, 0x96, 0x9a, 0xca, - 0x9a, 0x96, 0x9b, 0xca, 0x9b, 0x96, 0x9b, 0xca, 0x9b, 0x96, 0x9c, 0xca, - 0x9c, 0x96, 0x9c, 0xca, 0x9c, 0x96, 0x9d, 0xca, 0x9d, 0x96, 0x9d, 0xca, - 0x9d, 0x96, 0x9d, 0xca, 0x9d, 0x96, 0x9e, 0xca, 0x9e, 0x96, 0x9e, 0xca, - 0x9e, 0x96, 0x9f, 0xca, 0x9e, 0x96, 0x9f, 0xca, 0x9e, 0x96, 0x9f, 0xcb, - 0x9f, 0x96, 0xa0, 0xcb, 0xa0, 0x96, 0xa0, 0xcb, 0xa0, 0x96, 0xa1, 0xcb, - 0xa1, 0x96, 0xa1, 0xcb, 0xa1, 0x96, 0xa1, 0xcb, 0xa1, 0x96, 0xa2, 0xcb, - 0xa2, 0x96, 0xa2, 0xcb, 0xa2, 0x96, 0xa3, 0xcb, 0xa3, 0x96, 0xa3, 0xc9, - 0xa4, 0x96, 0xa3, 0xc9, 0xa4, 0x96, 0xa4, 0xc9, 0xa4, 0x95, 0xa3, 0xc9, - 0xa4, 0x96, 0xa4, 0xc9, 0xa5, 0x95, 0xa3, 0xc9, 0xa5, 0x96, 0xa4, 0xc9, - 0xa5, 0x95, 0xa3, 0xc9, 0xa6, 0x96, 0xa4, 0xc9, 0xa6, 0x95, 0xa3, 0xc9, - 0xa6, 0x96, 0xa4, 0xc9, 0xa7, 0x95, 0xa3, 0xc9, 0xa7, 0x96, 0xa4, 0xc9, - 0xa8, 0x95, 0xa3, 0xc9, 0xa8, 0x96, 0xa4, 0xc9, 0xa8, 0x95, 0xa3, 0xc9, - 0xa9, 0x96, 0xa4, 0xc9, 0xa9, 0x95, 0xa3, 0xc9, 0xaa, 0x96, 0xa4, 0xc9, - 0xaa, 0x95, 0xa4, 0xc9, 0xaa, 0x92, 0xa4, 0xc9, 0xab, 0x95, 0xa4, 0xc9, - 0xab, 0x92, 0xa4, 0xc9, 0xab, 0x95, 0xa4, 0xc9, 0xac, 0x92, 0xa4, 0xc9, - 0xac, 0x95, 0xa4, 0xc9, 0xac, 0x92, 0xa4, 0xc9, 0xad, 0x95, 0xa4, 0xc9, - 0xad, 0x92, 0xa4, 0xc9, 0xae, 0x95, 0xa4, 0xc9, 0xae, 0x92, 0xa4, 0xc9, - 0xae, 0x95, 0xa4, 0xc9, 0xaf, 0x92, 0xa4, 0xc9, 0xaf, 0x95, 0xa4, 0xc9, - 0xaf, 0x92, 0xa4, 0xc9, 0xb0, 0x95, 0xa4, 0xc9, 0xb0, 0x92, 0xa4, 0xc9, - 0xb0, 0x95, 0xa4, 0xc9, 0xb1, 0x92, 0xa4, 0xc9, 0xb1, 0x95, 0xa4, 0xc9, - 0xb2, 0x92, 0xa4, 0xc9, 0xb2, 0x95, 0xa4, 0xc9, 0xb2, 0x92, 0xa4, 0xc9, - 0xb3, 0x95, 0xa4, 0xc9, 0xb3, 0x92, 0xa4, 0xc9, 0xb3, 0x95, 0xa4, 0xc9, - 0xb4, 0x92, 0xa4, 0xc9, 0xb4, 0x95, 0xa4, 0xc9, 0xb4, 0x92, 0xa4, 0xc9, - 0xb5, 0x95, 0xa4, 0xc9, 0xb5, 0x92, 0xa4, 0xc9, 0xb5, 0x95, 0xa4, 0xc9, - 0xb6, 0x92, 0xa5, 0xc9, 0xb6, 0x8f, 0xa4, 0xc9, 0xb6, 0x92, 0xa5, 0xc9, - 0xb7, 0x8f, 0xa4, 0xc9, 0xb7, 0x92, 0xa5, 0xc9, 0xb7, 0x8f, 0xa4, 0xc9, - 0xb8, 0x92, 0xa5, 0xc9, 0xb8, 0x8f, 0xa4, 0xc9, 0xb8, 0x92, 0xa5, 0xc9, - 0xb9, 0x8f, 0xa4, 0xc9, 0xb9, 0x92, 0xa5, 0xc9, 0xb9, 0x8f, 0xa4, 0xc9, - 0xba, 0x92, 0xa5, 0xc9, 0xba, 0x8f, 0xa4, 0xc9, 0xba, 0x92, 0xa5, 0xc9, - 0xbb, 0x8f, 0xa4, 0xc9, 0xbb, 0x92, 0xa5, 0xc9, 0xbb, 0x8f, 0xa5, 0xc9, - 0xbc, 0x8d, 0xa5, 0xc9, 0xbc, 0x8f, 0xa5, 0xc9, 0xbc, 0x8d, 0xc2, 0xc9, - 0xbd, 0x75, 0xbf, 0xc9, 0xbd, 0x74, 0xc2, 0xc9, 0xbd, 0x75, 0xc3, 0xc9, - 0xbe, 0x75, 0xc2, 0xc9, 0xbe, 0x75, 0xc3, 0xc9, 0xbe, 0x75, 0xc2, 0xc9, - 0xbf, 0x75, 0xc3, 0xc9, 0xbf, 0x75, 0xc2, 0xc9, 0xbf, 0x75, 0xd3, 0xc9, - 0xc0, 0x9a, 0xd3, 0xc9, 0xc0, 0x9d, 0xd3, 0xc9, 0xc0, 0x9a, 0xd3, 0xc9, - 0xc1, 0x9d, 0xd3, 0xc9, 0xc1, 0x9a, 0xd3, 0xc9, 0xc1, 0x9d, 0xd3, 0xc9, - 0xc1, 0x9a, 0xd3, 0xc9, 0xc2, 0x9d, 0xd3, 0xc9, 0xc2, 0x9a, 0xd3, 0xc9, - 0xc2, 0x9d, 0xd3, 0xc9, 0xc3, 0x9a, 0xd3, 0xc9, 0xc3, 0x9d, 0xd3, 0xc9, - 0xc3, 0x9a, 0xd3, 0xc9, 0xc4, 0x9d, 0xd3, 0xc9, 0xc4, 0x9a, 0xd3, 0xc9, - 0xc4, 0x9d, 0xd3, 0xc9, 0xc5, 0x9a, 0xd3, 0xc9, 0xc5, 0x9d, 0xd3, 0xc9, - 0xc5, 0x9a, 0xd4, 0xc9, 0xc6, 0x97, 0xd3, 0xc9, 0xc6, 0x9a, 0xd4, 0xc9, - 0xc6, 0x97, 0xd3, 0xc9, 0xc6, 0x9a, 0xd4, 0xc9, 0xc7, 0x97, 0xd3, 0xc9, - 0xc7, 0x9a, 0xd4, 0xc9, 0xc7, 0x97, 0xd3, 0xc9, 0xc8, 0x9a, 0xd4, 0xc9, - 0xc8, 0x97, 0xd3, 0xc9, 0xc8, 0x9a, 0xd4, 0xc9, 0xc9, 0x97, 0xd3, 0xc9, - 0xc9, 0x9a, 0xd4, 0xc9, 0xc9, 0x97, 0xd3, 0xc9, 0xc9, 0x9a, 0xd4, 0xc9, - 0xca, 0x97, 0xd3, 0xc9, 0xca, 0x9a, 0xd4, 0xc9, 0xca, 0x97, 0xd3, 0xc9, - 0xcb, 0x9a, 0xd4, 0xc9, 0xcb, 0x97, 0xd3, 0xc9, 0xcb, 0x9a, 0xd4, 0xc9, - 0xcc, 0x97, 0xd3, 0xc9, 0xcc, 0x9a, 0xd4, 0xc9, 0xcc, 0x97, 0xd3, 0xc9, - 0xcc, 0x9a, 0xd4, 0xc9, 0xcd, 0x97, 0xd3, 0xc9, 0xcd, 0x9a, 0xd4, 0xc9, - 0xcd, 0x97, 0xd3, 0xc9, 0xce, 0x9a, 0xd4, 0xc9, 0xce, 0x97, 0xd3, 0xc9, - 0xce, 0x9a, 0xd4, 0xc9, 0xce, 0x97, 0xd3, 0xc9, 0xcf, 0x9a, 0xd4, 0xc9, - 0xcf, 0x97, 0xd4, 0xc9, 0xcf, 0x96, 0xd4, 0xc9, 0xd0, 0x97, 0xd4, 0xc9, - 0xd0, 0x96, 0xd4, 0xc9, 0xd0, 0x97, 0xd4, 0xc9, 0xd0, 0x96, 0xd4, 0xc9, - 0xd1, 0x97, 0xd4, 0xc9, 0xd1, 0x96, 0xd4, 0xc9, 0xd1, 0x97, 0xd4, 0xc9, - 0xd2, 0x96, 0xd4, 0xc9, 0xd2, 0x97, 0xd4, 0xc9, 0xd2, 0x96, 0xd4, 0xc9, - 0xd2, 0x97, 0xd4, 0xc9, 0xd3, 0x96, 0xd4, 0xc9, 0xd3, 0x97, 0xd4, 0xc9, - 0xd3, 0x96, 0xd4, 0xc9, 0xd4, 0x97, 0xd4, 0xc9, 0xd3, 0x96, 0xd4, 0xc9, - 0xd4, 0x96, 0xd4, 0xc9, 0xd3, 0x96, 0xd5, 0xc9, 0xd4, 0x96, 0xd5, 0xc8, - 0xd4, 0x96, 0xd5, 0xc8, 0xd5, 0x96, 0xd6, 0xc8, 0xd6, 0x96, 0xd6, 0xc8, - 0xd6, 0x96, 0xd6, 0xc8, 0xd6, 0x96, 0xd6, 0xc8, 0xd6, 0x96, 0xd7, 0xc8, - 0xd7, 0x96, 0xd7, 0xc8, 0xd8, 0x96, 0xd7, 0xc8, 0xd8, 0x96, 0xd7, 0xc8, - 0xd8, 0x96, 0xd8, 0xc8, 0xd8, 0x96, 0xd8, 0xc8, 0xd8, 0x96, 0xd8, 0xc8, - 0xd8, 0x96, 0xd9, 0xc8, 0xd9, 0x96, 0xd9, 0xc8, 0xd9, 0x96, 0xd9, 0xc8, - 0xd9, 0x96, 0xd9, 0xc8, 0xd9, 0x96, 0xda, 0xc8, 0xda, 0x96, 0xda, 0xc8, - 0xda, 0x96, 0xda, 0xc8, 0xda, 0x96, 0xda, 0xc9, 0xdb, 0x96, 0xdb, 0xc9, - 0xdb, 0x96, 0xdb, 0xc9, 0xdb, 0x96, 0xdb, 0xc9, 0xdb, 0x96, 0xdb, 0xc9, - 0xdb, 0x96, 0xdc, 0xc9, 0xdc, 0x96, 0xdc, 0xc9, 0xdc, 0x96, 0xdc, 0xc9, - 0xdc, 0x96, 0xdd, 0xc9, 0xdd, 0x96, 0xdd, 0xc9, 0xdd, 0x96, 0xdd, 0xc9, - 0xdd, 0x96, 0xdd, 0xc9, 0xdd, 0x96, 0xde, 0xc9, 0xde, 0x96, 0xde, 0xc9, - 0xde, 0x97, 0xde, 0xc9, 0xde, 0x97, 0xde, 0xc9, 0xde, 0x97, 0xdf, 0xc9, - 0xdf, 0x97, 0xdf, 0xc9, 0xdf, 0x97, 0xdf, 0xc9, 0xdf, 0x97, 0xdf, 0xc9, - 0xdf, 0x97, 0xe0, 0xc9, 0xe0, 0x97, 0xe0, 0xc9, 0xe0, 0x97, 0xe0, 0xc9, - 0xe0, 0x97, 0xe1, 0xc9, 0xe1, 0x97, 0xe0, 0xc9, 0xe1, 0x97, 0xe1, 0xc9, - 0xe1, 0x97, 0xe1, 0xc9, 0xe1, 0x98, 0xe2, 0xc9, 0xe2, 0x98, 0xe2, 0xc9, - 0xe2, 0x98, 0xe2, 0xc9, 0xe2, 0x98, 0xe2, 0xc9, 0xe2, 0x98, 0xe3, 0xc9, - 0xe3, 0x98, 0xe3, 0xc9, 0xe3, 0x98, 0xe3, 0xc9, 0xe3, 0x98, 0xe3, 0xc9, - 0xe3, 0x98, 0xe3, 0xc9, 0xe4, 0x98, 0xe3, 0xc9, 0xe4, 0x98, 0xe3, 0xc9, - 0xe4, 0x98, 0xe3, 0xc9, 0xe4, 0x98, 0xe5, 0xc9, 0xe5, 0x99, 0xe5, 0xc9, - 0xe5, 0x99, 0xe5, 0xc9, 0xe5, 0x99, 0xe5, 0xc9, 0xe5, 0x99, 0xe6, 0xc9, - 0xe6, 0x99, 0xe6, 0xc9, 0xe6, 0x99, 0xe6, 0xc9, 0xe6, 0x99, 0xe6, 0xc9, - 0xe6, 0x99, 0xe6, 0xc9, 0xe7, 0x99, 0xe6, 0xc9, 0xe7, 0x99, 0xe6, 0xc9, - 0xe7, 0x99, 0xe7, 0xc9, 0xe7, 0x9a, 0xe8, 0xc9, 0xe8, 0x9a, 0xe8, 0xc9, - 0xe8, 0x9a, 0xe8, 0xc9, 0xe8, 0x9a, 0xe8, 0xc9, 0xe8, 0x9a, 0xe9, 0xc9, - 0xe9, 0x9a, 0xe8, 0xc9, 0xe9, 0x9a, 0xe9, 0xc9, 0xe9, 0x9a, 0xe8, 0xc9, - 0xe9, 0x9a, 0xe9, 0xc9, 0xea, 0x9a, 0xea, 0xc9, 0xea, 0x9b, 0xea, 0xc9, - 0xea, 0x9b, 0xea, 0xc9, 0xea, 0x9b, 0xeb, 0xc9, 0xeb, 0x9b, 0xeb, 0xc9, - 0xeb, 0x9b, 0xeb, 0xc9, 0xeb, 0x9b, 0xeb, 0xc9, 0xeb, 0x9b, 0xeb, 0xc9, - 0xec, 0x9b, 0xee, 0xc9, 0xec, 0x96, 0xee, 0xc9, 0xec, 0x96, 0xee, 0xc9, - 0xec, 0x96, 0xee, 0xc9, 0xec, 0x96, 0xee, 0xc9, 0xed, 0x96, 0xee, 0xc9, - 0xed, 0x96, 0xee, 0xc9, 0xed, 0x96, 0xee, 0xc9, 0xed, 0x96, 0xee, 0xc9, - 0xee, 0x96, 0xee, 0xc9, 0xee, 0x96, 0xee, 0xc9, 0xee, 0x96, 0xee, 0xc9, - 0xee, 0x96, 0xef, 0xc9, 0xee, 0x96, 0xef, 0xc9, 0xee, 0x96, 0xef, 0xc9, - 0xee, 0x96, 0xef, 0xc9, 0xee, 0x96, 0xf0, 0xc9, 0xee, 0x96, 0xf0, 0xc9, - 0xee, 0x96, 0xf0, 0xc9, 0xee, 0x96, 0xf0, 0xc9, 0xee, 0x96, 0xf1, 0xc9, - 0xee, 0x96, 0xf1, 0xc6, 0xf1, 0x96, 0xf1, 0xc6, 0xf1, 0x96, 0xf1, 0xc6, - 0xf1, 0x96, 0xf2, 0xc6, 0xf2, 0x96, 0xf2, 0xc6, 0xf3, 0x96, 0xf2, 0xc6, - 0xf3, 0x96, 0xf2, 0xc6, 0xf3, 0x96, 0xf2, 0xc6, 0xf3, 0x96, 0xf3, 0xc6, - 0xf3, 0x96, 0xf3, 0xc6, 0xf3, 0x96, 0xf3, 0xc6, 0xf3, 0x96, 0xf3, 0xc6, - 0xf3, 0x96, 0xf4, 0xc6, 0xf4, 0x96, 0xf4, 0xc6, 0xf4, 0x96, 0xf4, 0xc6, - 0xf4, 0x96, 0xf4, 0xc6, 0xf4, 0x96, 0xf5, 0xc6, 0xf5, 0x96, 0xf5, 0xc6, - 0xf5, 0x96, 0xf5, 0xc7, 0xf6, 0x96, 0xf5, 0xc7, 0xf6, 0x96, 0xf5, 0xc7, - 0xf6, 0x96, 0xf6, 0xc7, 0xf6, 0x96, 0xf6, 0xc7, 0xf6, 0x96, 0xf6, 0xc7, - 0xf6, 0x96, 0xf6, 0xc7, 0xf6, 0x96, 0xf7, 0xc7, 0xf7, 0x96, 0xf7, 0xc7, - 0xf7, 0x96, 0xf7, 0xc7, 0xf7, 0x96, 0xf7, 0xc7, 0xf7, 0x96, 0xf8, 0xc7, - 0xf7, 0x96, 0xf8, 0xc7, 0xf7, 0x96, 0xf8, 0xc7, 0xf7, 0x96, 0xf8, 0xc7, - 0xf7, 0x96, 0xf8, 0xc7, 0xf7, 0x96, 0xf9, 0xc7, 0xf7, 0x96, 0xf9, 0xc7, - 0xf7, 0x96, 0xf9, 0xc7, 0xf7, 0x96, 0xf9, 0xc7, 0xf7, 0x96, 0xfa, 0xc7, - 0xf7, 0x96, 0xfa, 0xc7, 0xf7, 0x96, 0xfa, 0xc7, 0xf7, 0x96, 0xfa, 0xc7, - 0xf7, 0x96, 0xfa, 0xc7, 0xf7, 0x96, 0xfb, 0xc7, 0xf7, 0x96, 0xfb, 0xc7, - 0xf7, 0x96, 0xfb, 0xc7, 0xf7, 0x96, 0xfb, 0xc7, 0xf7, 0x96, 0xfc, 0xc7, - 0xf7, 0x96, 0xfc, 0xc7, 0xf7, 0x96, 0xfc, 0xc6, 0xf8, 0x96, 0xfc, 0xc7, - 0xf7, 0x96, 0xfc, 0xc6, 0xf8, 0x96, 0xfd, 0xc7, 0xf7, 0x96, 0xfd, 0xc6, - 0xf8, 0x96, 0xfd, 0xc7, 0xf7, 0x96, 0xfd, 0xc6, 0xf8, 0x96, 0xfe, 0xc7, - 0xf7, 0x96, 0xfe, 0xc6, 0xf8, 0x96, 0xfe, 0xc7, 0xf7, 0x96, 0xfe, 0xc6, - 0xf8, 0x96, 0xfe, 0xc7, 0xf7, 0x96, 0xff, 0xc6, 0xf8, 0x96, 0xff, 0xc7, - 0xf7, 0x96, 0x03, 0xd1, 0x8d, 0x96, 0x0a, 0xd1, 0x8d, 0x96, 0x0f, 0xd1, - 0x8d, 0x96, 0x14, 0xd1, 0x8d, 0x96, 0x17, 0xd1, 0x8d, 0x96, 0x1b, 0xd1, - 0x8d, 0x96, 0x1e, 0xd1, 0x8d, 0x96, 0x20, 0xcf, 0x8e, 0x96, 0x23, 0xd1, - 0x8d, 0x96, 0x25, 0xcf, 0x8e, 0x96, 0x27, 0xd1, 0x8d, 0x96, 0x29, 0xcf, - 0x8e, 0x96, 0x2b, 0xd1, 0x8d, 0x96, 0x2d, 0xcf, 0x8e, 0x96, 0x2f, 0xd1, - 0x8d, 0x96, 0x31, 0xcf, 0x8e, 0x96, 0x32, 0xd1, 0x8d, 0x96, 0x34, 0xcf, - 0x8e, 0x96, 0x35, 0xcd, 0x8e, 0x96, 0x37, 0xcf, 0x8e, 0x96, 0x38, 0xcd, - 0x8e, 0x96, 0x3a, 0xcf, 0x8e, 0x96, 0x3b, 0xcd, 0x8e, 0x96, 0x3c, 0xcf, - 0x8e, 0x96, 0x3e, 0xcd, 0x8e, 0x96, 0x3f, 0xcf, 0x8e, 0x96, 0x40, 0xcd, - 0x8e, 0x96, 0x42, 0xcf, 0x8e, 0x96, 0x43, 0xcd, 0x8e, 0x96, 0x44, 0xcf, - 0x8e, 0x96, 0x45, 0xcd, 0x8e, 0x96, 0x46, 0xcf, 0x8e, 0x96, 0x47, 0xcd, - 0x8e, 0x96, 0x48, 0xcf, 0x8e, 0x96, 0x49, 0xcd, 0x8e, 0x96, 0x4a, 0xcf, - 0x8e, 0x96, 0x4b, 0xcd, 0x8e, 0x96, 0x4c, 0xcf, 0x8e, 0x96, 0x4d, 0xcd, - 0x8e, 0x96, 0x4e, 0xcf, 0x8e, 0x96, 0x4f, 0xcd, 0x8e, 0x96, 0x50, 0xcf, - 0x8e, 0x96, 0x51, 0xcd, 0x8e, 0x96, 0x52, 0xcf, 0x8e, 0x96, 0x53, 0xcd, - 0x8e, 0x96, 0x54, 0xcf, 0x8e, 0x96, 0x55, 0xcd, 0x8e, 0x96, 0x56, 0xcf, - 0x8e, 0x96, 0x57, 0xcd, 0x8e, 0x96, 0x58, 0xcf, 0x8e, 0x96, 0x58, 0xcd, - 0x8e, 0x96, 0x59, 0xcf, 0x8e, 0x96, 0x5a, 0xcd, 0x8e, 0x96, 0x5b, 0xcf, - 0x8e, 0x96, 0x5c, 0xcd, 0x8e, 0x96, 0x5d, 0xcf, 0x8e, 0x96, 0x5d, 0xcd, - 0x8e, 0x96, 0x5e, 0xcf, 0x8e, 0x96, 0x5f, 0xcd, 0x8e, 0x96, 0x60, 0xcf, - 0x8e, 0x96, 0x60, 0xcd, 0x8e, 0x96, 0x61, 0xcf, 0x8e, 0x96, 0x62, 0xcd, - 0x8e, 0x96, 0x63, 0xcb, 0x8e, 0x96, 0x63, 0xcd, 0x8e, 0x96, 0x64, 0xcb, - 0x8e, 0x96, 0x65, 0xcd, 0x8e, 0x96, 0x66, 0xcb, 0x8e, 0x96, 0x66, 0xcd, - 0x8e, 0x96, 0x67, 0xcb, 0x8e, 0x96, 0x68, 0xcd, 0x8e, 0x96, 0x68, 0xcb, - 0x8e, 0x96, 0x69, 0xcd, 0x8e, 0x96, 0x6a, 0xcb, 0x8e, 0x96, 0x6a, 0xcd, - 0x8e, 0x96, 0x6b, 0xcb, 0x8e, 0x96, 0x6c, 0xcd, 0x8e, 0x96, 0x6c, 0xcb, - 0x8e, 0x96, 0x6d, 0xcd, 0x8e, 0x96, 0x6e, 0xcb, 0x8e, 0x96, 0x6e, 0xcd, - 0x8e, 0x96, 0x6f, 0xcb, 0x8e, 0x96, 0x70, 0xcd, 0x8e, 0x96, 0x70, 0xcb, - 0x8e, 0x96, 0x71, 0xcd, 0x8e, 0x96, 0x72, 0xcb, 0x8e, 0x96, 0x72, 0xcd, - 0x8e, 0x96, 0x73, 0xcb, 0x8e, 0x96, 0x73, 0xcd, 0x8e, 0x96, 0x74, 0xcb, - 0x8e, 0x96, 0x75, 0xcd, 0x8e, 0x96, 0x75, 0xcb, 0x8e, 0x96, 0x76, 0xcd, - 0x8e, 0x96, 0x76, 0xcb, 0x8e, 0x96, 0x77, 0xcd, 0x8e, 0x96, 0x78, 0xcb, - 0x8e, 0x96, 0x78, 0xcd, 0x8e, 0x96, 0x79, 0xcb, 0x8e, 0x96, 0x79, 0xcd, - 0x8e, 0x96, 0x7a, 0xcb, 0x8e, 0x96, 0x7a, 0xcd, 0x8e, 0x96, 0x7b, 0xcb, - 0x8e, 0x96, 0x7c, 0xcd, 0x8e, 0x96, 0x7c, 0xcb, 0x8e, 0x96, 0x7d, 0xcd, - 0x8e, 0x96, 0x7d, 0xcb, 0x8e, 0x96, 0x7e, 0xcd, 0x8e, 0x96, 0x7e, 0xcb, - 0x8e, 0x96, 0x7f, 0xcd, 0x8e, 0x96, 0x7f, 0xcb, 0x8e, 0x96, 0x80, 0xcd, - 0x8e, 0x96, 0x81, 0xcb, 0x8e, 0x96, 0x81, 0xcd, 0x8e, 0x96, 0x82, 0xcb, - 0x8e, 0x96, 0x82, 0xcd, 0x8e, 0x96, 0x83, 0xcb, 0x8e, 0x96, 0x83, 0xca, - 0x8f, 0x96, 0x84, 0xcb, 0x8e, 0x96, 0x84, 0xca, 0x8f, 0x96, 0x85, 0xcb, - 0x8e, 0x96, 0x85, 0xca, 0x8f, 0x96, 0x86, 0xcb, 0x8e, 0x96, 0x86, 0xca, - 0x8f, 0x96, 0x87, 0xcb, 0x8e, 0x96, 0x87, 0xca, 0x8f, 0x96, 0x88, 0xcb, - 0x8e, 0x96, 0x88, 0xca, 0x8f, 0x96, 0x89, 0xcb, 0x8e, 0x96, 0x89, 0xca, - 0x8f, 0x96, 0x8a, 0xcb, 0x8e, 0x96, 0x8a, 0xca, 0x8f, 0x96, 0x8b, 0xcb, - 0x8e, 0x96, 0x8b, 0xca, 0x8f, 0x96, 0x8c, 0xcb, 0x8e, 0x96, 0x8c, 0xca, - 0x8f, 0x96, 0x8d, 0xcb, 0x8e, 0x96, 0x8d, 0xca, 0x8f, 0x96, 0x8e, 0xca, - 0x8f, 0x96, 0x8e, 0xca, 0x8f, 0x96, 0x8e, 0xca, 0x8f, 0x96, 0x8e, 0xca, - 0x8f, 0x96, 0x8e, 0xca, 0x8f, 0x96, 0x8e, 0xca, 0x90, 0x96, 0x8e, 0xca, - 0x90, 0x96, 0x8f, 0xca, 0x91, 0x94, 0x93, 0xca, 0x91, 0x94, 0x93, 0xca, - 0x92, 0x94, 0x93, 0xca, 0x92, 0x94, 0x93, 0xca, 0x93, 0x94, 0x93, 0xca, - 0x93, 0x94, 0x94, 0xca, 0x94, 0x94, 0x94, 0xca, 0x94, 0x94, 0x94, 0xca, - 0x94, 0x94, 0x95, 0xca, 0x95, 0x94, 0x95, 0xca, 0x95, 0x94, 0x96, 0xca, - 0x96, 0x94, 0x96, 0xca, 0x96, 0x94, 0x98, 0xca, 0x97, 0x95, 0x98, 0xca, - 0x97, 0x95, 0x98, 0xca, 0x98, 0x95, 0x98, 0xca, 0x98, 0x95, 0x98, 0xca, - 0x98, 0x95, 0x99, 0xca, 0x99, 0x95, 0x99, 0xca, 0x99, 0x95, 0x9a, 0xca, - 0x9a, 0x95, 0x9a, 0xca, 0x9a, 0x95, 0x9a, 0xca, 0x9a, 0x95, 0x9b, 0xca, - 0x9b, 0x95, 0x9b, 0xca, 0x9b, 0x95, 0x9c, 0xca, 0x9c, 0x95, 0x9c, 0xca, - 0x9c, 0x96, 0x9d, 0xca, 0x9d, 0x96, 0x9d, 0xca, 0x9d, 0x96, 0x9d, 0xca, - 0x9d, 0x96, 0x9e, 0xca, 0x9e, 0x96, 0x9e, 0xca, 0x9e, 0x96, 0x9f, 0xca, - 0x9f, 0x96, 0x9f, 0xca, 0x9f, 0x96, 0x9f, 0xca, 0x9f, 0x96, 0xa0, 0xca, - 0xa0, 0x96, 0xa0, 0xca, 0xa0, 0x96, 0xa1, 0xca, 0xa0, 0x96, 0xa1, 0xca, - 0xa0, 0x96, 0xa1, 0xcb, 0xa1, 0x96, 0xa2, 0xcb, 0xa2, 0x96, 0xa2, 0xcb, - 0xa2, 0x96, 0xa3, 0xcb, 0xa3, 0x96, 0xa3, 0xca, 0xa4, 0x96, 0xa3, 0xca, - 0xa4, 0x96, 0xa3, 0xca, 0xa4, 0x96, 0xa3, 0xca, 0xa4, 0x96, 0xa3, 0xca, - 0xa5, 0x96, 0xa3, 0xca, 0xa5, 0x96, 0xa4, 0xca, 0xa5, 0x94, 0xa3, 0xca, - 0xa6, 0x96, 0xa4, 0xca, 0xa6, 0x94, 0xa3, 0xca, 0xa6, 0x96, 0xa4, 0xca, - 0xa7, 0x94, 0xa3, 0xca, 0xa7, 0x96, 0xa4, 0xca, 0xa8, 0x94, 0xa3, 0xca, - 0xa8, 0x96, 0xa4, 0xca, 0xa8, 0x94, 0xa3, 0xca, 0xa9, 0x96, 0xa4, 0xca, - 0xa9, 0x94, 0xa3, 0xca, 0xaa, 0x96, 0xa4, 0xca, 0xaa, 0x94, 0xa4, 0xca, - 0xaa, 0x92, 0xa4, 0xca, 0xab, 0x94, 0xa4, 0xca, 0xab, 0x92, 0xa4, 0xca, - 0xab, 0x94, 0xa4, 0xca, 0xac, 0x92, 0xa4, 0xca, 0xac, 0x94, 0xa4, 0xca, - 0xac, 0x92, 0xa4, 0xca, 0xad, 0x94, 0xa4, 0xca, 0xad, 0x92, 0xa4, 0xca, - 0xae, 0x94, 0xa4, 0xca, 0xae, 0x92, 0xa4, 0xca, 0xae, 0x94, 0xa4, 0xca, - 0xaf, 0x92, 0xa4, 0xca, 0xaf, 0x94, 0xa4, 0xca, 0xaf, 0x92, 0xa4, 0xca, - 0xb0, 0x94, 0xa4, 0xca, 0xb0, 0x92, 0xa4, 0xca, 0xb0, 0x94, 0xa4, 0xca, - 0xb1, 0x92, 0xa4, 0xca, 0xb1, 0x94, 0xa4, 0xca, 0xb2, 0x92, 0xa4, 0xca, - 0xb2, 0x94, 0xa4, 0xca, 0xb2, 0x92, 0xa4, 0xca, 0xb3, 0x94, 0xa4, 0xca, - 0xb3, 0x92, 0xa4, 0xca, 0xb3, 0x94, 0xa4, 0xca, 0xb4, 0x92, 0xa4, 0xca, - 0xb4, 0x94, 0xa4, 0xca, 0xb4, 0x92, 0xa5, 0xca, 0xb5, 0x8f, 0xa4, 0xca, - 0xb5, 0x92, 0xa5, 0xca, 0xb5, 0x8f, 0xa4, 0xca, 0xb6, 0x92, 0xa5, 0xca, - 0xb6, 0x8f, 0xa4, 0xca, 0xb6, 0x92, 0xa5, 0xca, 0xb7, 0x8f, 0xa4, 0xca, - 0xb7, 0x92, 0xa5, 0xca, 0xb7, 0x8f, 0xa4, 0xca, 0xb8, 0x92, 0xa5, 0xca, - 0xb8, 0x8f, 0xa4, 0xca, 0xb8, 0x92, 0xa5, 0xca, 0xb9, 0x8f, 0xa4, 0xca, - 0xb9, 0x92, 0xa5, 0xca, 0xb9, 0x8f, 0xa4, 0xca, 0xba, 0x92, 0xa5, 0xca, - 0xba, 0x8f, 0xa4, 0xca, 0xba, 0x92, 0xa5, 0xca, 0xbb, 0x8f, 0xa4, 0xca, - 0xbb, 0x92, 0xa5, 0xca, 0xbb, 0x8f, 0xa4, 0xca, 0xbc, 0x92, 0xa5, 0xca, - 0xbc, 0x8f, 0xa4, 0xca, 0xbc, 0x92, 0xc1, 0xca, 0xbd, 0x74, 0xc1, 0xca, - 0xbd, 0x74, 0xc1, 0xca, 0xbd, 0x74, 0xc1, 0xca, 0xbe, 0x74, 0xc1, 0xca, - 0xbe, 0x74, 0xc1, 0xca, 0xbe, 0x74, 0xc4, 0xca, 0xbf, 0x75, 0xc1, 0xca, - 0xbf, 0x74, 0xd3, 0xca, 0xbf, 0x9c, 0xd3, 0xca, 0xc0, 0x9a, 0xd3, 0xca, - 0xc0, 0x9c, 0xd3, 0xca, 0xc0, 0x9a, 0xd3, 0xca, 0xc1, 0x9c, 0xd3, 0xca, - 0xc1, 0x9a, 0xd3, 0xca, 0xc1, 0x9c, 0xd3, 0xca, 0xc1, 0x9a, 0xd3, 0xca, - 0xc2, 0x9c, 0xd3, 0xca, 0xc2, 0x9a, 0xd3, 0xca, 0xc2, 0x9c, 0xd3, 0xca, - 0xc3, 0x9a, 0xd3, 0xca, 0xc3, 0x9c, 0xd3, 0xca, 0xc3, 0x9a, 0xd3, 0xca, - 0xc4, 0x9c, 0xd3, 0xca, 0xc4, 0x9a, 0xd3, 0xca, 0xc4, 0x9c, 0xd3, 0xca, - 0xc5, 0x9a, 0xd3, 0xca, 0xc5, 0x9c, 0xd3, 0xca, 0xc5, 0x9a, 0xd3, 0xca, - 0xc6, 0x9c, 0xd3, 0xca, 0xc6, 0x9a, 0xd3, 0xca, 0xc6, 0x9c, 0xd3, 0xca, - 0xc6, 0x9a, 0xd3, 0xca, 0xc7, 0x9c, 0xd3, 0xca, 0xc7, 0x9a, 0xd3, 0xca, - 0xc7, 0x9c, 0xd3, 0xca, 0xc8, 0x9a, 0xd3, 0xca, 0xc8, 0x9c, 0xd3, 0xca, - 0xc8, 0x9a, 0xd3, 0xca, 0xc9, 0x9c, 0xd3, 0xca, 0xc9, 0x9a, 0xd4, 0xca, - 0xc9, 0x97, 0xd3, 0xca, 0xc9, 0x9a, 0xd4, 0xca, 0xca, 0x97, 0xd3, 0xca, - 0xca, 0x9a, 0xd4, 0xca, 0xca, 0x97, 0xd3, 0xca, 0xcb, 0x9a, 0xd4, 0xca, - 0xcb, 0x97, 0xd3, 0xca, 0xcb, 0x9a, 0xd4, 0xca, 0xcc, 0x97, 0xd3, 0xca, - 0xcc, 0x9a, 0xd4, 0xca, 0xcc, 0x97, 0xd3, 0xca, 0xcc, 0x9a, 0xd4, 0xca, - 0xcd, 0x97, 0xd3, 0xca, 0xcd, 0x9a, 0xd4, 0xca, 0xcd, 0x97, 0xd3, 0xca, - 0xce, 0x9a, 0xd4, 0xca, 0xce, 0x97, 0xd3, 0xca, 0xce, 0x9a, 0xd4, 0xca, - 0xce, 0x97, 0xd3, 0xca, 0xcf, 0x9a, 0xd4, 0xca, 0xcf, 0x97, 0xd4, 0xca, - 0xcf, 0x96, 0xd4, 0xca, 0xd0, 0x97, 0xd4, 0xca, 0xd0, 0x96, 0xd4, 0xca, - 0xd0, 0x97, 0xd4, 0xca, 0xd0, 0x96, 0xd4, 0xca, 0xd1, 0x97, 0xd4, 0xca, - 0xd1, 0x96, 0xd4, 0xca, 0xd1, 0x97, 0xd4, 0xca, 0xd2, 0x96, 0xd4, 0xca, - 0xd2, 0x97, 0xd4, 0xca, 0xd2, 0x96, 0xd4, 0xca, 0xd2, 0x97, 0xd4, 0xca, - 0xd3, 0x96, 0xd4, 0xca, 0xd3, 0x97, 0xd4, 0xca, 0xd3, 0x96, 0xd4, 0xca, - 0xd4, 0x97, 0xd4, 0xca, 0xd3, 0x96, 0xd4, 0xca, 0xd4, 0x96, 0xd4, 0xca, - 0xd3, 0x96, 0xd5, 0xca, 0xd4, 0x96, 0xd5, 0xca, 0xd3, 0x96, 0xd5, 0xca, - 0xd4, 0x96, 0xd6, 0xc8, 0xd7, 0x96, 0xd6, 0xc8, 0xd6, 0x96, 0xd6, 0xc8, - 0xd7, 0x96, 0xd6, 0xc8, 0xd6, 0x96, 0xd7, 0xc8, 0xd7, 0x96, 0xd7, 0xc8, - 0xd7, 0x96, 0xd7, 0xc8, 0xd7, 0x96, 0xd7, 0xc8, 0xd7, 0x96, 0xd8, 0xc8, - 0xd8, 0x96, 0xd8, 0xc8, 0xd8, 0x96, 0xd8, 0xc9, 0xd9, 0x96, 0xd9, 0xc9, - 0xda, 0x96, 0xd9, 0xc9, 0xd9, 0x96, 0xd9, 0xc9, 0xda, 0x96, 0xd9, 0xc9, - 0xd9, 0x96, 0xda, 0xc9, 0xda, 0x96, 0xda, 0xc9, 0xda, 0x96, 0xda, 0xc9, - 0xda, 0x96, 0xda, 0xc9, 0xda, 0x96, 0xdb, 0xc9, 0xdb, 0x96, 0xdb, 0xc9, - 0xdb, 0x96, 0xdb, 0xc9, 0xdb, 0x96, 0xdb, 0xc9, 0xdb, 0x96, 0xdc, 0xc9, - 0xdc, 0x96, 0xdc, 0xc9, 0xdd, 0x96, 0xdc, 0xc9, 0xdc, 0x96, 0xdd, 0xc9, - 0xdd, 0x96, 0xdd, 0xc9, 0xdd, 0x96, 0xdd, 0xc9, 0xdd, 0x96, 0xdd, 0xc9, - 0xdd, 0x96, 0xde, 0xc9, 0xde, 0x96, 0xde, 0xc9, 0xde, 0x96, 0xde, 0xc9, - 0xde, 0x96, 0xde, 0xc9, 0xde, 0x96, 0xdf, 0xc9, 0xdf, 0x96, 0xdf, 0xc9, - 0xdf, 0x96, 0xdf, 0xca, 0xdf, 0x97, 0xdf, 0xca, 0xdf, 0x97, 0xe0, 0xca, - 0xe0, 0x97, 0xe0, 0xca, 0xe0, 0x97, 0xe0, 0xca, 0xe0, 0x97, 0xe1, 0xca, - 0xe1, 0x97, 0xe1, 0xca, 0xe1, 0x97, 0xe1, 0xca, 0xe1, 0x97, 0xe1, 0xca, - 0xe1, 0x97, 0xe2, 0xca, 0xe2, 0x97, 0xe2, 0xca, 0xe2, 0x97, 0xe2, 0xca, - 0xe2, 0x97, 0xe2, 0xca, 0xe2, 0x97, 0xe3, 0xca, 0xe3, 0x98, 0xe3, 0xca, - 0xe3, 0x98, 0xe3, 0xca, 0xe3, 0x98, 0xe3, 0xca, 0xe3, 0x98, 0xe4, 0xca, - 0xe4, 0x98, 0xe4, 0xca, 0xe4, 0x98, 0xe4, 0xca, 0xe4, 0x98, 0xe4, 0xca, - 0xe4, 0x98, 0xe5, 0xca, 0xe5, 0x98, 0xe4, 0xca, 0xe5, 0x98, 0xe5, 0xca, - 0xe5, 0x98, 0xe4, 0xca, 0xe5, 0x98, 0xe5, 0xca, 0xe6, 0x98, 0xe6, 0xca, - 0xe6, 0x99, 0xe6, 0xca, 0xe6, 0x99, 0xe6, 0xca, 0xe6, 0x99, 0xe7, 0xca, - 0xe7, 0x99, 0xe7, 0xca, 0xe7, 0x99, 0xe7, 0xca, 0xe7, 0x99, 0xe7, 0xca, - 0xe7, 0x99, 0xe7, 0xca, 0xe8, 0x99, 0xe7, 0xca, 0xe8, 0x99, 0xe7, 0xca, - 0xe8, 0x99, 0xe7, 0xca, 0xe8, 0x99, 0xe9, 0xca, 0xe9, 0x9a, 0xe9, 0xca, - 0xe9, 0x9a, 0xe9, 0xca, 0xe9, 0x9a, 0xe9, 0xca, 0xe9, 0x9a, 0xea, 0xca, - 0xea, 0x9a, 0xea, 0xca, 0xea, 0x9a, 0xea, 0xca, 0xea, 0x9a, 0xea, 0xca, - 0xea, 0x9a, 0xea, 0xca, 0xeb, 0x9a, 0xea, 0xca, 0xeb, 0x9a, 0xea, 0xca, - 0xeb, 0x9a, 0xea, 0xca, 0xeb, 0x9a, 0xea, 0xca, 0xec, 0x9a, 0xee, 0xca, - 0xec, 0x96, 0xee, 0xca, 0xec, 0x99, 0xee, 0xca, 0xec, 0x96, 0xee, 0xca, - 0xec, 0x96, 0xee, 0xca, 0xed, 0x96, 0xee, 0xca, 0xed, 0x96, 0xee, 0xca, - 0xed, 0x96, 0xee, 0xca, 0xed, 0x96, 0xee, 0xca, 0xee, 0x96, 0xee, 0xca, - 0xee, 0x96, 0xee, 0xc9, 0xee, 0x96, 0xee, 0xca, 0xee, 0x96, 0xef, 0xc9, - 0xee, 0x96, 0xef, 0xca, 0xee, 0x96, 0xef, 0xc9, 0xee, 0x96, 0xef, 0xca, - 0xee, 0x96, 0xf0, 0xc9, 0xee, 0x96, 0xf0, 0xca, 0xee, 0x96, 0xf0, 0xc9, - 0xee, 0x96, 0xf0, 0xca, 0xee, 0x96, 0xf1, 0xc9, 0xee, 0x96, 0xf1, 0xca, - 0xee, 0x96, 0xf1, 0xc6, 0xf2, 0x96, 0xf1, 0xc6, 0xf2, 0x96, 0xf2, 0xc6, - 0xf2, 0x96, 0xf2, 0xc6, 0xf2, 0x96, 0xf2, 0xc6, 0xf2, 0x96, 0xf2, 0xc6, - 0xf2, 0x96, 0xf2, 0xc6, 0xf2, 0x96, 0xf3, 0xc6, 0xf3, 0x96, 0xf3, 0xc6, - 0xf3, 0x96, 0xf3, 0xc7, 0xf5, 0x96, 0xf3, 0xc7, 0xf5, 0x96, 0xf4, 0xc7, - 0xf5, 0x96, 0xf4, 0xc7, 0xf5, 0x96, 0xf4, 0xc7, 0xf5, 0x96, 0xf4, 0xc7, - 0xf5, 0x96, 0xf5, 0xc7, 0xf5, 0x96, 0xf5, 0xc7, 0xf5, 0x96, 0xf5, 0xc7, - 0xf5, 0x96, 0xf5, 0xc7, 0xf5, 0x96, 0xf5, 0xc7, 0xf5, 0x96, 0xf6, 0xc7, - 0xf6, 0x96, 0xf6, 0xc7, 0xf6, 0x96, 0xf6, 0xc7, 0xf6, 0x96, 0xf6, 0xc7, - 0xf6, 0x96, 0xf7, 0xc7, 0xf7, 0x96, 0xf7, 0xc7, 0xf7, 0x96, 0xf7, 0xc7, - 0xf7, 0x96, 0xf7, 0xc7, 0xf7, 0x96, 0xf8, 0xc7, 0xf7, 0x96, 0xf8, 0xc7, - 0xf7, 0x96, 0xf8, 0xc7, 0xf7, 0x96, 0xf8, 0xc7, 0xf7, 0x96, 0xf8, 0xc7, - 0xf7, 0x96, 0xf9, 0xc7, 0xf7, 0x96, 0xf9, 0xc7, 0xf7, 0x96, 0xf9, 0xc7, - 0xf7, 0x96, 0xf9, 0xc7, 0xf7, 0x96, 0xfa, 0xc7, 0xf7, 0x96, 0xfa, 0xc7, - 0xf7, 0x96, 0xfa, 0xc7, 0xf7, 0x96, 0xfa, 0xc6, 0xf8, 0x96, 0xfa, 0xc7, - 0xf7, 0x96, 0xfb, 0xc6, 0xf8, 0x96, 0xfb, 0xc7, 0xf7, 0x96, 0xfb, 0xc6, - 0xf8, 0x96, 0xfb, 0xc7, 0xf7, 0x96, 0xfc, 0xc6, 0xf8, 0x96, 0xfc, 0xc7, - 0xf7, 0x96, 0xfc, 0xc6, 0xf8, 0x96, 0xfc, 0xc7, 0xf7, 0x96, 0xfc, 0xc6, - 0xf8, 0x96, 0xfd, 0xc7, 0xf7, 0x96, 0xfd, 0xc6, 0xf8, 0x96, 0xfd, 0xc7, - 0xf7, 0x96, 0xfd, 0xc6, 0xf8, 0x96, 0xfe, 0xc7, 0xf7, 0x96, 0xfe, 0xc6, - 0xf8, 0x96, 0xfe, 0xc7, 0xf7, 0x96, 0xfe, 0xc6, 0xf8, 0x96, 0xfe, 0xc7, - 0xf7, 0x96, 0xff, 0xc6, 0xf8, 0x96, 0xff, 0xc7, 0xf7, 0x96, 0x03, 0xd0, - 0x8d, 0x97, 0x0a, 0xd0, 0x8d, 0x97, 0x0f, 0xd0, 0x8d, 0x97, 0x14, 0xd0, - 0x8d, 0x97, 0x17, 0xd0, 0x8d, 0x97, 0x1b, 0xd0, 0x8d, 0x97, 0x1e, 0xd0, - 0x8d, 0x97, 0x20, 0xcf, 0x8e, 0x97, 0x23, 0xd0, 0x8d, 0x97, 0x25, 0xcf, - 0x8e, 0x97, 0x27, 0xd0, 0x8d, 0x97, 0x29, 0xcf, 0x8e, 0x97, 0x2b, 0xd0, - 0x8d, 0x97, 0x2d, 0xcf, 0x8e, 0x97, 0x2f, 0xd0, 0x8d, 0x97, 0x31, 0xcf, - 0x8e, 0x97, 0x32, 0xd0, 0x8d, 0x97, 0x34, 0xcf, 0x8e, 0x97, 0x35, 0xd0, - 0x8d, 0x97, 0x37, 0xcf, 0x8e, 0x97, 0x38, 0xd0, 0x8d, 0x97, 0x3a, 0xcf, - 0x8e, 0x97, 0x3b, 0xd0, 0x8d, 0x97, 0x3c, 0xcf, 0x8e, 0x97, 0x3e, 0xd0, - 0x8d, 0x97, 0x3f, 0xcf, 0x8e, 0x97, 0x40, 0xd0, 0x8d, 0x97, 0x42, 0xcf, - 0x8e, 0x97, 0x43, 0xd0, 0x8d, 0x97, 0x44, 0xcf, 0x8e, 0x97, 0x45, 0xd0, - 0x8d, 0x97, 0x46, 0xcf, 0x8e, 0x97, 0x47, 0xd0, 0x8d, 0x97, 0x48, 0xcf, - 0x8e, 0x97, 0x49, 0xd0, 0x8d, 0x97, 0x4a, 0xcf, 0x8e, 0x97, 0x4b, 0xd0, - 0x8d, 0x97, 0x4c, 0xcf, 0x8e, 0x97, 0x4d, 0xd0, 0x8d, 0x97, 0x4e, 0xcf, - 0x8e, 0x97, 0x4f, 0xd0, 0x8d, 0x97, 0x50, 0xcf, 0x8e, 0x97, 0x51, 0xcd, - 0x8e, 0x97, 0x52, 0xcf, 0x8e, 0x97, 0x53, 0xcd, 0x8e, 0x97, 0x54, 0xcf, - 0x8e, 0x97, 0x55, 0xcd, 0x8e, 0x97, 0x56, 0xcf, 0x8e, 0x97, 0x57, 0xcd, - 0x8e, 0x97, 0x58, 0xcf, 0x8e, 0x97, 0x58, 0xcd, 0x8e, 0x97, 0x59, 0xcf, - 0x8e, 0x97, 0x5a, 0xcd, 0x8e, 0x97, 0x5b, 0xcf, 0x8e, 0x97, 0x5c, 0xcd, - 0x8e, 0x97, 0x5d, 0xcf, 0x8e, 0x97, 0x5d, 0xcd, 0x8e, 0x97, 0x5e, 0xcf, - 0x8e, 0x97, 0x5f, 0xcd, 0x8e, 0x97, 0x60, 0xcf, 0x8e, 0x97, 0x60, 0xcd, - 0x8e, 0x97, 0x61, 0xcf, 0x8e, 0x97, 0x62, 0xcd, 0x8e, 0x97, 0x63, 0xcf, - 0x8e, 0x97, 0x63, 0xcd, 0x8e, 0x97, 0x64, 0xcf, 0x8e, 0x97, 0x65, 0xcd, - 0x8e, 0x97, 0x66, 0xcf, 0x8e, 0x97, 0x66, 0xcd, 0x8e, 0x97, 0x67, 0xcf, - 0x8e, 0x97, 0x68, 0xcd, 0x8e, 0x97, 0x68, 0xcf, 0x8e, 0x97, 0x69, 0xcd, - 0x8e, 0x97, 0x6a, 0xcf, 0x8e, 0x97, 0x6a, 0xcd, 0x8e, 0x97, 0x6b, 0xcf, - 0x8e, 0x97, 0x6c, 0xcd, 0x8e, 0x97, 0x6c, 0xcf, 0x8e, 0x97, 0x6d, 0xcd, - 0x8e, 0x97, 0x6e, 0xcb, 0x8e, 0x97, 0x6e, 0xcd, 0x8e, 0x97, 0x6f, 0xcb, - 0x8e, 0x97, 0x70, 0xcd, 0x8e, 0x97, 0x70, 0xcb, 0x8e, 0x97, 0x71, 0xcd, - 0x8e, 0x97, 0x72, 0xcb, 0x8e, 0x97, 0x72, 0xcd, 0x8e, 0x97, 0x73, 0xcb, - 0x8e, 0x97, 0x73, 0xcd, 0x8e, 0x97, 0x74, 0xcb, 0x8e, 0x97, 0x75, 0xcd, - 0x8e, 0x97, 0x75, 0xcb, 0x8e, 0x97, 0x76, 0xcd, 0x8e, 0x97, 0x76, 0xcb, - 0x8e, 0x97, 0x77, 0xcd, 0x8e, 0x97, 0x78, 0xcb, 0x8e, 0x97, 0x78, 0xcd, - 0x8e, 0x97, 0x79, 0xcb, 0x8e, 0x97, 0x79, 0xcd, 0x8e, 0x97, 0x7a, 0xcb, - 0x8e, 0x97, 0x7a, 0xcd, 0x8e, 0x97, 0x7b, 0xcb, 0x8e, 0x97, 0x7c, 0xcd, - 0x8e, 0x97, 0x7c, 0xcb, 0x8e, 0x97, 0x7d, 0xcd, 0x8e, 0x97, 0x7d, 0xcb, - 0x8e, 0x97, 0x7e, 0xcd, 0x8e, 0x97, 0x7e, 0xcb, 0x8e, 0x97, 0x7f, 0xcd, - 0x8e, 0x97, 0x7f, 0xcb, 0x8e, 0x97, 0x80, 0xcd, 0x8e, 0x97, 0x81, 0xcb, - 0x8e, 0x97, 0x81, 0xcd, 0x8e, 0x97, 0x82, 0xcb, 0x8e, 0x97, 0x82, 0xcd, - 0x8e, 0x97, 0x83, 0xcb, 0x8e, 0x97, 0x83, 0xca, 0x8f, 0x97, 0x84, 0xcb, - 0x8e, 0x97, 0x84, 0xca, 0x8f, 0x97, 0x85, 0xcb, 0x8e, 0x97, 0x85, 0xca, - 0x8f, 0x97, 0x86, 0xcb, 0x8e, 0x97, 0x86, 0xca, 0x8f, 0x97, 0x87, 0xcb, - 0x8e, 0x97, 0x87, 0xca, 0x8f, 0x97, 0x88, 0xcb, 0x8e, 0x97, 0x88, 0xca, - 0x8f, 0x97, 0x89, 0xcb, 0x8e, 0x97, 0x89, 0xca, 0x8f, 0x97, 0x8a, 0xcb, - 0x8e, 0x97, 0x8a, 0xca, 0x8f, 0x97, 0x8b, 0xcb, 0x8e, 0x97, 0x8b, 0xca, - 0x8f, 0x97, 0x8c, 0xcb, 0x8e, 0x97, 0x8c, 0xca, 0x8f, 0x97, 0x8d, 0xcb, - 0x8e, 0x97, 0x8d, 0xca, 0x8f, 0x97, 0x8e, 0xca, 0x8f, 0x97, 0x8e, 0xca, - 0x8f, 0x97, 0x8e, 0xca, 0x8f, 0x97, 0x8e, 0xca, 0x8f, 0x97, 0x8e, 0xca, - 0x8f, 0x97, 0x8e, 0xca, 0x90, 0x97, 0x8e, 0xca, 0x90, 0x97, 0x8e, 0xca, - 0x91, 0x97, 0x8e, 0xca, 0x91, 0x97, 0x93, 0xca, 0x92, 0x94, 0x93, 0xca, - 0x92, 0x94, 0x93, 0xca, 0x93, 0x94, 0x93, 0xca, 0x93, 0x94, 0x95, 0xca, - 0x94, 0x95, 0x96, 0xca, 0x94, 0x95, 0x95, 0xca, 0x94, 0x95, 0x96, 0xca, - 0x95, 0x95, 0x95, 0xca, 0x95, 0x95, 0x96, 0xca, 0x96, 0x95, 0x96, 0xca, - 0x96, 0x95, 0x97, 0xca, 0x97, 0x95, 0x97, 0xca, 0x97, 0x95, 0x98, 0xca, - 0x98, 0x95, 0x98, 0xca, 0x98, 0x95, 0x98, 0xca, 0x98, 0x95, 0x99, 0xca, - 0x99, 0x95, 0x9a, 0xca, 0x99, 0x96, 0x9a, 0xca, 0x9a, 0x96, 0x9a, 0xca, - 0x9a, 0x96, 0x9a, 0xca, 0x9a, 0x96, 0x9b, 0xca, 0x9b, 0x96, 0x9b, 0xca, - 0x9b, 0x96, 0x9c, 0xca, 0x9c, 0x96, 0x9c, 0xca, 0x9c, 0x96, 0x9d, 0xca, - 0x9d, 0x96, 0x9d, 0xca, 0x9d, 0x96, 0x9d, 0xca, 0x9d, 0x96, 0x9e, 0xca, - 0x9e, 0x96, 0x9e, 0xca, 0x9e, 0x96, 0x9f, 0xcb, 0x9f, 0x97, 0x9f, 0xcb, - 0x9f, 0x97, 0x9f, 0xcb, 0x9f, 0x97, 0xa0, 0xcb, 0xa0, 0x97, 0xa0, 0xcb, - 0xa0, 0x97, 0xa1, 0xcb, 0xa1, 0x97, 0xa1, 0xcb, 0xa1, 0x97, 0xa1, 0xcb, - 0xa1, 0x97, 0xa2, 0xcb, 0xa2, 0x97, 0xa2, 0xcb, 0xa2, 0x97, 0xa3, 0xcb, - 0xa3, 0x97, 0xa3, 0xca, 0xa4, 0x97, 0xa3, 0xcb, 0xa3, 0x97, 0xa3, 0xca, - 0xa4, 0x97, 0xa3, 0xca, 0xa4, 0x97, 0xa3, 0xca, 0xa5, 0x97, 0xa3, 0xca, - 0xa5, 0x97, 0xa4, 0xca, 0xa5, 0x95, 0xa3, 0xca, 0xa6, 0x97, 0xa4, 0xca, - 0xa6, 0x95, 0xa3, 0xca, 0xa6, 0x97, 0xa4, 0xca, 0xa7, 0x95, 0xa3, 0xca, - 0xa7, 0x97, 0xa4, 0xca, 0xa8, 0x95, 0xa3, 0xca, 0xa8, 0x97, 0xa4, 0xca, - 0xa8, 0x95, 0xa3, 0xca, 0xa9, 0x97, 0xa4, 0xca, 0xa9, 0x95, 0xa3, 0xca, - 0xaa, 0x97, 0xa4, 0xca, 0xaa, 0x95, 0xa3, 0xca, 0xaa, 0x97, 0xa4, 0xca, - 0xab, 0x95, 0xa3, 0xca, 0xab, 0x97, 0xa4, 0xca, 0xab, 0x95, 0xa3, 0xca, - 0xac, 0x97, 0xa4, 0xca, 0xac, 0x95, 0xa3, 0xca, 0xac, 0x97, 0xa4, 0xca, - 0xad, 0x95, 0xa4, 0xca, 0xad, 0x92, 0xa4, 0xca, 0xae, 0x95, 0xa4, 0xca, - 0xae, 0x92, 0xa4, 0xca, 0xae, 0x95, 0xa4, 0xca, 0xaf, 0x92, 0xa4, 0xca, - 0xaf, 0x95, 0xa4, 0xca, 0xaf, 0x92, 0xa4, 0xca, 0xb0, 0x95, 0xa4, 0xca, - 0xb0, 0x92, 0xa4, 0xca, 0xb0, 0x95, 0xa4, 0xca, 0xb1, 0x92, 0xa4, 0xca, - 0xb1, 0x95, 0xa4, 0xca, 0xb2, 0x92, 0xa4, 0xca, 0xb2, 0x95, 0xa4, 0xca, - 0xb2, 0x92, 0xa4, 0xca, 0xb3, 0x95, 0xa4, 0xca, 0xb3, 0x92, 0xa4, 0xca, - 0xb3, 0x95, 0xa4, 0xca, 0xb4, 0x92, 0xa4, 0xca, 0xb4, 0x95, 0xa4, 0xca, - 0xb4, 0x92, 0xa4, 0xca, 0xb5, 0x95, 0xa4, 0xca, 0xb5, 0x92, 0xa4, 0xca, - 0xb5, 0x95, 0xa4, 0xca, 0xb6, 0x92, 0xa4, 0xca, 0xb6, 0x95, 0xa4, 0xca, - 0xb6, 0x92, 0xa4, 0xca, 0xb7, 0x95, 0xa4, 0xca, 0xb7, 0x92, 0xa4, 0xca, - 0xb7, 0x95, 0xa4, 0xca, 0xb8, 0x92, 0xa4, 0xca, 0xb8, 0x95, 0xa4, 0xca, - 0xb8, 0x92, 0xa4, 0xca, 0xb9, 0x95, 0xa4, 0xca, 0xb9, 0x92, 0xa4, 0xca, - 0xb9, 0x95, 0xa4, 0xca, 0xba, 0x92, 0xa5, 0xca, 0xba, 0x8f, 0xa4, 0xca, - 0xba, 0x92, 0xa5, 0xca, 0xbb, 0x8f, 0xa4, 0xca, 0xbb, 0x92, 0xa5, 0xca, - 0xbb, 0x8f, 0xa4, 0xca, 0xbc, 0x92, 0xa5, 0xca, 0xbc, 0x8f, 0xa4, 0xca, - 0xbc, 0x92, 0xa5, 0xca, 0xbd, 0x8f, 0xbf, 0xca, 0xbd, 0x74, 0xc2, 0xca, - 0xbd, 0x75, 0xc3, 0xca, 0xbe, 0x75, 0xc2, 0xca, 0xbe, 0x75, 0xc3, 0xca, - 0xbe, 0x75, 0xc2, 0xca, 0xbf, 0x75, 0xd3, 0xca, 0xbf, 0x9a, 0xd3, 0xca, - 0xbf, 0x9d, 0xd3, 0xca, 0xc0, 0x9a, 0xd3, 0xca, 0xc0, 0x9d, 0xd3, 0xca, - 0xc0, 0x9a, 0xd3, 0xca, 0xc1, 0x9d, 0xd3, 0xca, 0xc1, 0x9a, 0xd3, 0xca, - 0xc1, 0x9d, 0xd3, 0xca, 0xc1, 0x9a, 0xd3, 0xca, 0xc2, 0x9d, 0xd3, 0xca, - 0xc2, 0x9a, 0xd3, 0xca, 0xc2, 0x9d, 0xd3, 0xca, 0xc3, 0x9a, 0xd3, 0xca, - 0xc3, 0x9d, 0xd3, 0xca, 0xc3, 0x9a, 0xd3, 0xca, 0xc4, 0x9d, 0xd3, 0xca, - 0xc4, 0x9a, 0xd3, 0xca, 0xc4, 0x9d, 0xd3, 0xca, 0xc5, 0x9a, 0xd3, 0xca, - 0xc5, 0x9d, 0xd3, 0xca, 0xc5, 0x9a, 0xd3, 0xca, 0xc6, 0x9d, 0xd3, 0xca, - 0xc6, 0x9a, 0xd3, 0xca, 0xc6, 0x9d, 0xd3, 0xca, 0xc6, 0x9a, 0xd3, 0xca, - 0xc7, 0x9d, 0xd3, 0xca, 0xc7, 0x9a, 0xd3, 0xca, 0xc7, 0x9d, 0xd3, 0xca, - 0xc8, 0x9a, 0xd3, 0xca, 0xc8, 0x9d, 0xd3, 0xca, 0xc8, 0x9a, 0xd3, 0xca, - 0xc9, 0x9d, 0xd3, 0xca, 0xc9, 0x9a, 0xd4, 0xca, 0xc9, 0x97, 0xd3, 0xca, - 0xc9, 0x9a, 0xd4, 0xca, 0xca, 0x97, 0xd3, 0xca, 0xca, 0x9a, 0xd4, 0xca, - 0xca, 0x97, 0xd3, 0xca, 0xcb, 0x9a, 0xd4, 0xca, 0xcb, 0x97, 0xd3, 0xca, - 0xcb, 0x9a, 0xd4, 0xca, 0xcc, 0x97, 0xd3, 0xca, 0xcc, 0x9a, 0xd4, 0xca, - 0xcc, 0x97, 0xd3, 0xca, 0xcc, 0x9a, 0xd4, 0xca, 0xcd, 0x97, 0xd3, 0xca, - 0xcd, 0x9a, 0xd4, 0xca, 0xcd, 0x97, 0xd3, 0xca, 0xce, 0x9a, 0xd4, 0xca, - 0xce, 0x97, 0xd3, 0xca, 0xce, 0x9a, 0xd4, 0xca, 0xce, 0x97, 0xd3, 0xca, - 0xcf, 0x9a, 0xd4, 0xca, 0xcf, 0x97, 0xd3, 0xca, 0xcf, 0x9a, 0xd4, 0xca, - 0xd0, 0x97, 0xd3, 0xca, 0xd0, 0x9a, 0xd4, 0xca, 0xd0, 0x97, 0xd3, 0xca, - 0xd0, 0x9a, 0xd4, 0xca, 0xd1, 0x97, 0xd3, 0xca, 0xd1, 0x9a, 0xd4, 0xca, - 0xd1, 0x97, 0xd4, 0xca, 0xd2, 0x97, 0xd4, 0xca, 0xd2, 0x97, 0xd4, 0xca, - 0xd2, 0x97, 0xd4, 0xca, 0xd2, 0x97, 0xd4, 0xca, 0xd3, 0x97, 0xd4, 0xca, - 0xd3, 0x97, 0xd4, 0xca, 0xd3, 0x97, 0xd4, 0xc9, 0xd4, 0x97, 0xd4, 0xca, - 0xd3, 0x97, 0xd4, 0xc9, 0xd4, 0x97, 0xd4, 0xca, 0xd3, 0x97, 0xd5, 0xc9, - 0xd4, 0x97, 0xd5, 0xca, 0xd3, 0x97, 0xd5, 0xc9, 0xd4, 0x97, 0xd6, 0xc8, - 0xd6, 0x97, 0xd6, 0xc8, 0xd6, 0x97, 0xd6, 0xc8, 0xd6, 0x97, 0xd6, 0xc8, - 0xd6, 0x97, 0xd7, 0xc8, 0xd7, 0x97, 0xd7, 0xc8, 0xd8, 0x97, 0xd7, 0xc8, - 0xd8, 0x97, 0xd7, 0xc8, 0xd8, 0x97, 0xd8, 0xc8, 0xd8, 0x97, 0xd8, 0xc8, - 0xd8, 0x97, 0xd8, 0xc8, 0xd8, 0x97, 0xd9, 0xc8, 0xd9, 0x97, 0xd9, 0xc8, - 0xd9, 0x97, 0xd9, 0xc8, 0xd9, 0x97, 0xd9, 0xc8, 0xd9, 0x97, 0xda, 0xc8, - 0xda, 0x97, 0xda, 0xc9, 0xdb, 0x97, 0xda, 0xc9, 0xdb, 0x97, 0xda, 0xc9, - 0xdb, 0x97, 0xdb, 0xc9, 0xdb, 0x97, 0xdb, 0xc9, 0xdb, 0x97, 0xdb, 0xc9, - 0xdb, 0x97, 0xdb, 0xc9, 0xdb, 0x97, 0xdc, 0xc9, 0xdc, 0x97, 0xdc, 0xc9, - 0xdc, 0x97, 0xdc, 0xc9, 0xdc, 0x97, 0xdd, 0xc9, 0xdd, 0x97, 0xdd, 0xc9, - 0xdd, 0x97, 0xdd, 0xc9, 0xdd, 0x97, 0xdd, 0xc9, 0xde, 0x97, 0xde, 0xc9, - 0xde, 0x97, 0xde, 0xc9, 0xde, 0x97, 0xde, 0xc9, 0xde, 0x97, 0xde, 0xc9, - 0xde, 0x97, 0xdf, 0xc9, 0xdf, 0x97, 0xdf, 0xc9, 0xdf, 0x97, 0xdf, 0xc9, - 0xdf, 0x97, 0xdf, 0xc9, 0xdf, 0x97, 0xe0, 0xc9, 0xe0, 0x97, 0xe0, 0xc9, - 0xe0, 0x97, 0xe0, 0xc9, 0xe0, 0x97, 0xe1, 0xc9, 0xe1, 0x97, 0xe1, 0xca, - 0xe1, 0x98, 0xe1, 0xca, 0xe1, 0x98, 0xe1, 0xca, 0xe1, 0x98, 0xe2, 0xca, - 0xe2, 0x98, 0xe2, 0xca, 0xe2, 0x98, 0xe2, 0xca, 0xe2, 0x98, 0xe2, 0xca, - 0xe2, 0x98, 0xe3, 0xca, 0xe3, 0x98, 0xe3, 0xca, 0xe3, 0x98, 0xe3, 0xca, - 0xe3, 0x98, 0xe3, 0xca, 0xe3, 0x98, 0xe3, 0xca, 0xe4, 0x98, 0xe3, 0xca, - 0xe4, 0x98, 0xe4, 0xca, 0xe4, 0x99, 0xe4, 0xca, 0xe4, 0x99, 0xe5, 0xca, - 0xe5, 0x99, 0xe5, 0xca, 0xe5, 0x99, 0xe5, 0xca, 0xe5, 0x99, 0xe5, 0xca, - 0xe5, 0x99, 0xe6, 0xca, 0xe6, 0x99, 0xe6, 0xca, 0xe6, 0x99, 0xe6, 0xca, - 0xe6, 0x99, 0xe6, 0xca, 0xe6, 0x99, 0xe6, 0xca, 0xe7, 0x99, 0xe6, 0xca, - 0xe7, 0x99, 0xe6, 0xca, 0xe7, 0x99, 0xe7, 0xca, 0xe7, 0x9a, 0xe8, 0xca, - 0xe8, 0x9a, 0xe8, 0xca, 0xe8, 0x9a, 0xe8, 0xca, 0xe8, 0x9a, 0xe8, 0xca, - 0xe8, 0x9a, 0xe9, 0xca, 0xe9, 0x9a, 0xe8, 0xca, 0xe9, 0x9a, 0xe9, 0xca, - 0xe9, 0x9a, 0xe8, 0xca, 0xe9, 0x9a, 0xe9, 0xca, 0xea, 0x9a, 0xea, 0xca, - 0xea, 0x9b, 0xea, 0xca, 0xea, 0x9b, 0xea, 0xca, 0xea, 0x9b, 0xeb, 0xca, - 0xeb, 0x9b, 0xeb, 0xca, 0xeb, 0x9b, 0xeb, 0xca, 0xeb, 0x9b, 0xeb, 0xca, - 0xeb, 0x9b, 0xeb, 0xca, 0xec, 0x9b, 0xeb, 0xca, 0xec, 0x9b, 0xeb, 0xca, - 0xec, 0x9b, 0xee, 0xca, 0xec, 0x97, 0xee, 0xca, 0xec, 0x97, 0xee, 0xca, - 0xed, 0x97, 0xee, 0xca, 0xed, 0x97, 0xee, 0xca, 0xed, 0x97, 0xee, 0xca, - 0xed, 0x97, 0xee, 0xca, 0xee, 0x97, 0xee, 0xca, 0xee, 0x97, 0xee, 0xca, - 0xee, 0x97, 0xee, 0xca, 0xee, 0x97, 0xef, 0xca, 0xee, 0x97, 0xef, 0xca, - 0xee, 0x97, 0xef, 0xc9, 0xee, 0x97, 0xef, 0xca, 0xee, 0x97, 0xf0, 0xc9, - 0xee, 0x97, 0xf0, 0xca, 0xee, 0x97, 0xf0, 0xc9, 0xee, 0x97, 0xf0, 0xca, - 0xee, 0x97, 0xf1, 0xc9, 0xee, 0x97, 0xf1, 0xca, 0xee, 0x97, 0xf1, 0xc9, - 0xee, 0x97, 0xf1, 0xc6, 0xf1, 0x97, 0xf2, 0xc6, 0xf2, 0x97, 0xf2, 0xc6, - 0xf3, 0x97, 0xf2, 0xc6, 0xf3, 0x97, 0xf2, 0xc6, 0xf3, 0x97, 0xf2, 0xc6, - 0xf3, 0x97, 0xf3, 0xc6, 0xf3, 0x97, 0xf3, 0xc6, 0xf3, 0x97, 0xf3, 0xc6, - 0xf3, 0x97, 0xf3, 0xc6, 0xf3, 0x97, 0xf4, 0xc6, 0xf4, 0x97, 0xf4, 0xc6, - 0xf4, 0x97, 0xf4, 0xc6, 0xf4, 0x97, 0xf4, 0xc6, 0xf4, 0x97, 0xf5, 0xc7, - 0xf6, 0x97, 0xf5, 0xc7, 0xf6, 0x97, 0xf5, 0xc7, 0xf6, 0x97, 0xf5, 0xc7, - 0xf6, 0x97, 0xf5, 0xc7, 0xf6, 0x97, 0xf6, 0xc7, 0xf6, 0x97, 0xf6, 0xc7, - 0xf6, 0x97, 0xf6, 0xc7, 0xf6, 0x97, 0xf6, 0xc7, 0xf6, 0x97, 0xf7, 0xc7, - 0xf7, 0x97, 0xf7, 0xc7, 0xf7, 0x97, 0xf7, 0xc7, 0xf7, 0x97, 0xf7, 0xc7, - 0xf7, 0x97, 0xf8, 0xc7, 0xf7, 0x97, 0xf8, 0xc7, 0xf7, 0x97, 0xf8, 0xc7, - 0xf7, 0x97, 0xf8, 0xc7, 0xf7, 0x97, 0xf8, 0xc7, 0xf7, 0x97, 0xf9, 0xc7, - 0xf7, 0x97, 0xf9, 0xc7, 0xf7, 0x97, 0xf9, 0xc7, 0xf7, 0x97, 0xf9, 0xc7, - 0xf7, 0x97, 0xfa, 0xc7, 0xf7, 0x97, 0xfa, 0xc7, 0xf7, 0x97, 0xfa, 0xc7, - 0xf7, 0x97, 0xfa, 0xc7, 0xf7, 0x97, 0xfa, 0xc7, 0xf7, 0x97, 0xfb, 0xc7, - 0xf7, 0x97, 0xfb, 0xc7, 0xf7, 0x97, 0xfb, 0xc7, 0xf7, 0x97, 0xfb, 0xc7, - 0xf7, 0x97, 0xfc, 0xc7, 0xf7, 0x97, 0xfc, 0xc7, 0xf7, 0x97, 0xfc, 0xc7, - 0xf7, 0x97, 0xfc, 0xc7, 0xf7, 0x97, 0xfc, 0xc7, 0xf7, 0x97, 0xfd, 0xc7, - 0xf7, 0x97, 0xfd, 0xc6, 0xf8, 0x97, 0xfd, 0xc7, 0xf7, 0x97, 0xfd, 0xc6, - 0xf8, 0x97, 0xfe, 0xc7, 0xf7, 0x97, 0xfe, 0xc6, 0xf8, 0x97, 0xfe, 0xc7, - 0xf7, 0x97, 0xfe, 0xc6, 0xf8, 0x97, 0xfe, 0xc7, 0xf7, 0x97, 0xff, 0xc6, - 0xf8, 0x97, 0xff, 0xc7, 0xf7, 0x97, 0x03, 0xd1, 0x8d, 0x97, 0x0a, 0xd1, - 0x8d, 0x97, 0x0f, 0xd1, 0x8d, 0x97, 0x14, 0xd1, 0x8d, 0x97, 0x17, 0xd1, - 0x8d, 0x97, 0x1b, 0xd1, 0x8d, 0x97, 0x1e, 0xd1, 0x8d, 0x97, 0x20, 0xcf, - 0x8e, 0x97, 0x23, 0xd1, 0x8d, 0x97, 0x25, 0xcf, 0x8e, 0x97, 0x27, 0xd1, - 0x8d, 0x97, 0x29, 0xcf, 0x8e, 0x97, 0x2b, 0xd1, 0x8d, 0x97, 0x2d, 0xcf, - 0x8e, 0x97, 0x2f, 0xd1, 0x8d, 0x97, 0x31, 0xcf, 0x8e, 0x97, 0x32, 0xd1, - 0x8d, 0x97, 0x34, 0xcf, 0x8e, 0x97, 0x35, 0xd1, 0x8d, 0x97, 0x37, 0xcf, - 0x8e, 0x97, 0x38, 0xd1, 0x8d, 0x97, 0x3a, 0xcf, 0x8e, 0x97, 0x3b, 0xd1, - 0x8d, 0x97, 0x3c, 0xcf, 0x8e, 0x97, 0x3e, 0xd1, 0x8d, 0x97, 0x3f, 0xcf, - 0x8e, 0x97, 0x40, 0xd1, 0x8d, 0x97, 0x42, 0xcf, 0x8e, 0x97, 0x43, 0xd1, - 0x8d, 0x97, 0x44, 0xcf, 0x8e, 0x97, 0x45, 0xd1, 0x8d, 0x97, 0x46, 0xcf, - 0x8e, 0x97, 0x47, 0xd1, 0x8d, 0x97, 0x48, 0xcf, 0x8e, 0x97, 0x49, 0xcd, - 0x8e, 0x97, 0x4a, 0xcf, 0x8e, 0x97, 0x4b, 0xcd, 0x8e, 0x97, 0x4c, 0xcf, - 0x8e, 0x97, 0x4d, 0xcd, 0x8e, 0x97, 0x4e, 0xcf, 0x8e, 0x97, 0x4f, 0xcd, - 0x8e, 0x97, 0x50, 0xcf, 0x8e, 0x97, 0x51, 0xcd, 0x8e, 0x97, 0x52, 0xcf, - 0x8e, 0x97, 0x53, 0xcd, 0x8e, 0x97, 0x54, 0xcf, 0x8e, 0x97, 0x55, 0xcd, - 0x8e, 0x97, 0x56, 0xcf, 0x8e, 0x97, 0x57, 0xcd, 0x8e, 0x97, 0x58, 0xcf, - 0x8e, 0x97, 0x58, 0xcd, 0x8e, 0x97, 0x59, 0xcf, 0x8e, 0x97, 0x5a, 0xcd, - 0x8e, 0x97, 0x5b, 0xcf, 0x8e, 0x97, 0x5c, 0xcd, 0x8e, 0x97, 0x5d, 0xcf, - 0x8e, 0x97, 0x5d, 0xcd, 0x8e, 0x97, 0x5e, 0xcf, 0x8e, 0x97, 0x5f, 0xcd, - 0x8e, 0x97, 0x60, 0xcf, 0x8e, 0x97, 0x60, 0xcd, 0x8e, 0x97, 0x61, 0xcf, - 0x8e, 0x97, 0x62, 0xcd, 0x8e, 0x97, 0x63, 0xcf, 0x8e, 0x97, 0x63, 0xcd, - 0x8e, 0x97, 0x64, 0xcf, 0x8e, 0x97, 0x65, 0xcd, 0x8e, 0x97, 0x66, 0xcf, - 0x8e, 0x97, 0x66, 0xcd, 0x8e, 0x97, 0x67, 0xcf, 0x8e, 0x97, 0x68, 0xcd, - 0x8e, 0x97, 0x68, 0xcf, 0x8e, 0x97, 0x69, 0xcd, 0x8e, 0x97, 0x6a, 0xcf, - 0x8e, 0x97, 0x6a, 0xcd, 0x8e, 0x97, 0x6b, 0xcb, 0x8e, 0x97, 0x6c, 0xcd, - 0x8e, 0x97, 0x6c, 0xcb, 0x8e, 0x97, 0x6d, 0xcd, 0x8e, 0x97, 0x6e, 0xcb, - 0x8e, 0x97, 0x6e, 0xcd, 0x8e, 0x97, 0x6f, 0xcb, 0x8e, 0x97, 0x70, 0xcd, - 0x8e, 0x97, 0x70, 0xcb, 0x8e, 0x97, 0x71, 0xcd, 0x8e, 0x97, 0x72, 0xcb, - 0x8e, 0x97, 0x72, 0xcd, 0x8e, 0x97, 0x73, 0xcb, 0x8e, 0x97, 0x73, 0xcd, - 0x8e, 0x97, 0x74, 0xcb, 0x8e, 0x97, 0x75, 0xcd, 0x8e, 0x97, 0x75, 0xcb, - 0x8e, 0x97, 0x76, 0xcd, 0x8e, 0x97, 0x76, 0xcb, 0x8e, 0x97, 0x77, 0xcd, - 0x8e, 0x97, 0x78, 0xcb, 0x8e, 0x97, 0x78, 0xcd, 0x8e, 0x97, 0x79, 0xcb, - 0x8e, 0x97, 0x79, 0xcd, 0x8e, 0x97, 0x7a, 0xcb, 0x8e, 0x97, 0x7a, 0xcd, - 0x8e, 0x97, 0x7b, 0xcb, 0x8e, 0x97, 0x7c, 0xcd, 0x8e, 0x97, 0x7c, 0xcb, - 0x8e, 0x97, 0x7d, 0xcd, 0x8e, 0x97, 0x7d, 0xcb, 0x8e, 0x97, 0x7e, 0xcd, - 0x8e, 0x97, 0x7e, 0xcb, 0x8e, 0x97, 0x7f, 0xcd, 0x8e, 0x97, 0x7f, 0xcb, - 0x8e, 0x97, 0x80, 0xcd, 0x8e, 0x97, 0x81, 0xcb, 0x8e, 0x97, 0x81, 0xcd, - 0x8e, 0x97, 0x82, 0xcb, 0x8e, 0x97, 0x82, 0xcd, 0x8e, 0x97, 0x83, 0xcb, - 0x8e, 0x97, 0x83, 0xcd, 0x8e, 0x97, 0x84, 0xcb, 0x8e, 0x97, 0x84, 0xcd, - 0x8e, 0x97, 0x85, 0xcb, 0x8e, 0x97, 0x85, 0xcd, 0x8e, 0x97, 0x86, 0xcb, - 0x8e, 0x97, 0x86, 0xcd, 0x8e, 0x97, 0x87, 0xcb, 0x8e, 0x97, 0x87, 0xca, - 0x8f, 0x97, 0x88, 0xcb, 0x8e, 0x97, 0x88, 0xca, 0x8f, 0x97, 0x89, 0xcb, - 0x8e, 0x97, 0x89, 0xca, 0x8f, 0x97, 0x8a, 0xcb, 0x8e, 0x97, 0x8a, 0xca, - 0x8f, 0x97, 0x8b, 0xcb, 0x8e, 0x97, 0x8b, 0xca, 0x8f, 0x97, 0x8c, 0xcb, - 0x8e, 0x97, 0x8c, 0xca, 0x8f, 0x97, 0x8d, 0xcb, 0x8e, 0x97, 0x8d, 0xca, - 0x8f, 0x97, 0x8e, 0xcb, 0x8e, 0x97, 0x8e, 0xca, 0x8f, 0x97, 0x8e, 0xcb, - 0x8e, 0x97, 0x8e, 0xca, 0x8f, 0x97, 0x8e, 0xca, 0x8f, 0x97, 0x8e, 0xca, - 0x90, 0x97, 0x8e, 0xca, 0x90, 0x97, 0x8e, 0xca, 0x91, 0x97, 0x8e, 0xca, - 0x91, 0x97, 0x93, 0xca, 0x92, 0x94, 0x93, 0xca, 0x92, 0x94, 0x93, 0xca, - 0x93, 0x94, 0x93, 0xca, 0x93, 0x94, 0x94, 0xca, 0x94, 0x94, 0x94, 0xca, - 0x94, 0x94, 0x94, 0xca, 0x94, 0x94, 0x95, 0xca, 0x95, 0x94, 0x95, 0xca, - 0x95, 0x94, 0x98, 0xca, 0x96, 0x95, 0x98, 0xca, 0x96, 0x95, 0x98, 0xca, - 0x97, 0x95, 0x98, 0xca, 0x97, 0x95, 0x98, 0xca, 0x98, 0x95, 0x98, 0xca, - 0x98, 0x95, 0x98, 0xca, 0x98, 0x95, 0x99, 0xca, 0x99, 0x95, 0x99, 0xca, - 0x99, 0x95, 0x9a, 0xca, 0x9a, 0x95, 0x9a, 0xca, 0x9a, 0x95, 0x9a, 0xca, - 0x9a, 0x95, 0x9b, 0xca, 0x9b, 0x95, 0x9c, 0xca, 0x9b, 0x96, 0x9d, 0xca, - 0x9c, 0x96, 0x9c, 0xca, 0x9c, 0x96, 0x9d, 0xca, 0x9d, 0x96, 0x9d, 0xca, - 0x9d, 0x96, 0x9d, 0xca, 0x9d, 0x96, 0x9e, 0xca, 0x9e, 0x96, 0x9e, 0xca, - 0x9e, 0x96, 0x9f, 0xca, 0x9f, 0x96, 0x9f, 0xca, 0x9f, 0x96, 0x9f, 0xca, - 0x9f, 0x96, 0xa0, 0xca, 0xa0, 0x96, 0xa0, 0xca, 0xa0, 0x96, 0xa1, 0xcb, - 0xa1, 0x97, 0xa1, 0xcb, 0xa1, 0x97, 0xa1, 0xcb, 0xa1, 0x97, 0xa2, 0xcb, - 0xa2, 0x97, 0xa2, 0xcb, 0xa2, 0x97, 0xa3, 0xcb, 0xa3, 0x97, 0xa3, 0xcb, - 0xa3, 0x97, 0xa3, 0xcb, 0xa3, 0x97, 0xa3, 0xca, 0xa4, 0x97, 0xa3, 0xca, - 0xa4, 0x97, 0xa3, 0xca, 0xa5, 0x97, 0xa3, 0xca, 0xa5, 0x97, 0xa3, 0xca, - 0xa5, 0x97, 0xa3, 0xca, 0xa6, 0x97, 0xa3, 0xca, 0xa6, 0x97, 0xa3, 0xca, - 0xa6, 0x97, 0xa4, 0xca, 0xa7, 0x94, 0xa3, 0xca, 0xa7, 0x97, 0xa4, 0xca, - 0xa8, 0x94, 0xa3, 0xca, 0xa8, 0x97, 0xa4, 0xca, 0xa8, 0x94, 0xa3, 0xca, - 0xa9, 0x97, 0xa4, 0xca, 0xa9, 0x94, 0xa3, 0xca, 0xaa, 0x97, 0xa4, 0xca, - 0xaa, 0x94, 0xa3, 0xca, 0xaa, 0x97, 0xa4, 0xca, 0xab, 0x94, 0xa3, 0xca, - 0xab, 0x97, 0xa4, 0xca, 0xab, 0x94, 0xa3, 0xca, 0xac, 0x97, 0xa4, 0xca, - 0xac, 0x94, 0xa3, 0xca, 0xac, 0x97, 0xa4, 0xca, 0xad, 0x94, 0xa4, 0xca, - 0xad, 0x92, 0xa4, 0xca, 0xae, 0x94, 0xa4, 0xca, 0xae, 0x92, 0xa4, 0xca, - 0xae, 0x94, 0xa4, 0xca, 0xaf, 0x92, 0xa4, 0xca, 0xaf, 0x94, 0xa4, 0xca, - 0xaf, 0x92, 0xa4, 0xca, 0xb0, 0x94, 0xa4, 0xca, 0xb0, 0x92, 0xa4, 0xca, - 0xb0, 0x94, 0xa4, 0xca, 0xb1, 0x92, 0xa4, 0xca, 0xb1, 0x94, 0xa4, 0xca, - 0xb2, 0x92, 0xa4, 0xca, 0xb2, 0x94, 0xa4, 0xca, 0xb2, 0x92, 0xa4, 0xca, - 0xb3, 0x94, 0xa4, 0xca, 0xb3, 0x92, 0xa4, 0xca, 0xb3, 0x94, 0xa4, 0xca, - 0xb4, 0x92, 0xa4, 0xca, 0xb4, 0x94, 0xa4, 0xca, 0xb4, 0x92, 0xa4, 0xca, - 0xb5, 0x94, 0xa4, 0xca, 0xb5, 0x92, 0xa4, 0xca, 0xb5, 0x94, 0xa4, 0xca, - 0xb6, 0x92, 0xa4, 0xca, 0xb6, 0x94, 0xa4, 0xca, 0xb6, 0x92, 0xa4, 0xca, - 0xb7, 0x94, 0xa4, 0xca, 0xb7, 0x92, 0xa4, 0xca, 0xb7, 0x94, 0xa4, 0xca, - 0xb8, 0x92, 0xa4, 0xca, 0xb8, 0x94, 0xa4, 0xca, 0xb8, 0x92, 0xa5, 0xca, - 0xb9, 0x8f, 0xa4, 0xca, 0xb9, 0x92, 0xa5, 0xca, 0xb9, 0x8f, 0xa4, 0xca, - 0xba, 0x92, 0xa5, 0xca, 0xba, 0x8f, 0xa4, 0xca, 0xba, 0x92, 0xa5, 0xca, - 0xbb, 0x8f, 0xa4, 0xca, 0xbb, 0x92, 0xa5, 0xca, 0xbb, 0x8f, 0xa4, 0xca, - 0xbc, 0x92, 0xa5, 0xca, 0xbc, 0x8f, 0xa4, 0xca, 0xbc, 0x92, 0xa5, 0xca, - 0xbd, 0x8f, 0xa4, 0xca, 0xbd, 0x92, 0xc1, 0xca, 0xbd, 0x74, 0xc1, 0xca, - 0xbe, 0x74, 0xc1, 0xca, 0xbe, 0x74, 0xd3, 0xca, 0xbe, 0x9f, 0xd3, 0xca, - 0xbf, 0x9c, 0xd3, 0xca, 0xbf, 0x9f, 0xd3, 0xca, 0xbf, 0x9c, 0xd3, 0xca, - 0xc0, 0x9f, 0xd3, 0xca, 0xc0, 0x9c, 0xd3, 0xca, 0xc0, 0x9f, 0xd3, 0xca, - 0xc1, 0x9c, 0xd3, 0xca, 0xc1, 0x9f, 0xd3, 0xca, 0xc1, 0x9c, 0xd3, 0xca, - 0xc1, 0x9f, 0xd3, 0xca, 0xc2, 0x9c, 0xd3, 0xca, 0xc2, 0x9f, 0xd3, 0xca, - 0xc2, 0x9c, 0xd3, 0xca, 0xc3, 0x9a, 0xd3, 0xca, 0xc3, 0x9c, 0xd3, 0xca, - 0xc3, 0x9a, 0xd3, 0xca, 0xc4, 0x9c, 0xd3, 0xca, 0xc4, 0x9a, 0xd3, 0xca, - 0xc4, 0x9c, 0xd3, 0xca, 0xc5, 0x9a, 0xd3, 0xca, 0xc5, 0x9c, 0xd3, 0xca, - 0xc5, 0x9a, 0xd3, 0xca, 0xc6, 0x9c, 0xd3, 0xca, 0xc6, 0x9a, 0xd3, 0xca, - 0xc6, 0x9c, 0xd3, 0xca, 0xc6, 0x9a, 0xd3, 0xca, 0xc7, 0x9c, 0xd3, 0xca, - 0xc7, 0x9a, 0xd3, 0xca, 0xc7, 0x9c, 0xd3, 0xca, 0xc8, 0x9a, 0xd3, 0xca, - 0xc8, 0x9c, 0xd3, 0xca, 0xc8, 0x9a, 0xd3, 0xca, 0xc9, 0x9c, 0xd3, 0xca, - 0xc9, 0x9a, 0xd3, 0xca, 0xc9, 0x9c, 0xd3, 0xca, 0xc9, 0x9a, 0xd3, 0xca, - 0xca, 0x9c, 0xd3, 0xca, 0xca, 0x9a, 0xd3, 0xca, 0xca, 0x9c, 0xd3, 0xca, - 0xcb, 0x9a, 0xd3, 0xca, 0xcb, 0x9c, 0xd3, 0xca, 0xcb, 0x9a, 0xd3, 0xca, - 0xcc, 0x9c, 0xd3, 0xca, 0xcc, 0x9a, 0xd3, 0xca, 0xcc, 0x9c, 0xd3, 0xca, - 0xcc, 0x9a, 0xd4, 0xca, 0xcd, 0x97, 0xd3, 0xca, 0xcd, 0x9a, 0xd4, 0xca, - 0xcd, 0x97, 0xd3, 0xca, 0xce, 0x9a, 0xd4, 0xca, 0xce, 0x97, 0xd3, 0xca, - 0xce, 0x9a, 0xd4, 0xca, 0xce, 0x97, 0xd3, 0xca, 0xcf, 0x9a, 0xd4, 0xca, - 0xcf, 0x97, 0xd3, 0xca, 0xcf, 0x9a, 0xd4, 0xca, 0xd0, 0x97, 0xd3, 0xca, - 0xd0, 0x9a, 0xd4, 0xca, 0xd0, 0x97, 0xd3, 0xca, 0xd0, 0x9a, 0xd4, 0xca, - 0xd1, 0x97, 0xd3, 0xca, 0xd1, 0x9a, 0xd4, 0xca, 0xd1, 0x97, 0xd4, 0xca, - 0xd2, 0x97, 0xd4, 0xca, 0xd2, 0x97, 0xd4, 0xca, 0xd2, 0x97, 0xd4, 0xca, - 0xd2, 0x97, 0xd4, 0xca, 0xd3, 0x97, 0xd4, 0xca, 0xd3, 0x97, 0xd4, 0xca, - 0xd3, 0x97, 0xd4, 0xca, 0xd4, 0x97, 0xd4, 0xca, 0xd3, 0x97, 0xd4, 0xca, - 0xd4, 0x97, 0xd4, 0xca, 0xd3, 0x97, 0xd5, 0xca, 0xd4, 0x97, 0xd5, 0xca, - 0xd3, 0x97, 0xd5, 0xca, 0xd4, 0x97, 0xd6, 0xca, 0xd3, 0x97, 0xd6, 0xc8, - 0xd6, 0x97, 0xd6, 0xc8, 0xd7, 0x97, 0xd6, 0xc8, 0xd6, 0x97, 0xd7, 0xc8, - 0xd7, 0x97, 0xd7, 0xc8, 0xd7, 0x97, 0xd7, 0xc8, 0xd7, 0x97, 0xd7, 0xc8, - 0xd7, 0x97, 0xd8, 0xc8, 0xd8, 0x97, 0xd8, 0xc8, 0xd8, 0x97, 0xd8, 0xc9, - 0xd9, 0x97, 0xd9, 0xc9, 0xda, 0x97, 0xd9, 0xc9, 0xd9, 0x97, 0xd9, 0xc9, - 0xda, 0x97, 0xd9, 0xc9, 0xd9, 0x97, 0xda, 0xc9, 0xda, 0x97, 0xda, 0xc9, - 0xda, 0x97, 0xda, 0xc9, 0xda, 0x97, 0xda, 0xc9, 0xda, 0x97, 0xdb, 0xc9, - 0xdb, 0x97, 0xdb, 0xc9, 0xdb, 0x97, 0xdb, 0xc9, 0xdc, 0x97, 0xdb, 0xc9, - 0xdd, 0x97, 0xdc, 0xc9, 0xdc, 0x97, 0xdc, 0xc9, 0xdd, 0x97, 0xdc, 0xc9, - 0xdc, 0x97, 0xdd, 0xc9, 0xdd, 0x97, 0xdd, 0xc9, 0xdd, 0x97, 0xdd, 0xc9, - 0xdd, 0x97, 0xdd, 0xc9, 0xdd, 0x97, 0xde, 0xc9, 0xde, 0x97, 0xde, 0xc9, - 0xde, 0x97, 0xde, 0xc9, 0xde, 0x97, 0xde, 0xc9, 0xde, 0x97, 0xdf, 0xca, - 0xdf, 0x97, 0xdf, 0xca, 0xdf, 0x97, 0xdf, 0xca, 0xdf, 0x97, 0xdf, 0xca, - 0xdf, 0x97, 0xe0, 0xca, 0xe0, 0x97, 0xe0, 0xca, 0xe0, 0x97, 0xe0, 0xca, - 0xe0, 0x97, 0xe1, 0xca, 0xe1, 0x97, 0xe1, 0xca, 0xe1, 0x97, 0xe1, 0xca, - 0xe1, 0x97, 0xe1, 0xca, 0xe1, 0x97, 0xe2, 0xca, 0xe2, 0x97, 0xe2, 0xca, - 0xe2, 0x97, 0xe2, 0xca, 0xe2, 0x98, 0xe2, 0xca, 0xe2, 0x98, 0xe3, 0xca, - 0xe3, 0x98, 0xe3, 0xca, 0xe3, 0x98, 0xe3, 0xca, 0xe3, 0x98, 0xe3, 0xca, - 0xe3, 0x98, 0xe4, 0xca, 0xe4, 0x98, 0xe4, 0xca, 0xe4, 0x98, 0xe4, 0xca, - 0xe4, 0x98, 0xe4, 0xca, 0xe4, 0x98, 0xe5, 0xca, 0xe5, 0x98, 0xe4, 0xca, - 0xe5, 0x98, 0xe5, 0xca, 0xe5, 0x98, 0xe5, 0xca, 0xe5, 0x99, 0xe6, 0xca, - 0xe6, 0x99, 0xe6, 0xca, 0xe6, 0x99, 0xe6, 0xca, 0xe6, 0x99, 0xe6, 0xca, - 0xe6, 0x99, 0xe7, 0xca, 0xe7, 0x99, 0xe7, 0xca, 0xe7, 0x99, 0xe7, 0xca, - 0xe7, 0x99, 0xe7, 0xca, 0xe7, 0x99, 0xe7, 0xca, 0xe8, 0x99, 0xe7, 0xca, - 0xe8, 0x99, 0xe7, 0xca, 0xe8, 0x99, 0xe7, 0xca, 0xe8, 0x99, 0xe9, 0xca, - 0xe9, 0x9a, 0xe9, 0xca, 0xe9, 0x9a, 0xe9, 0xca, 0xe9, 0x9a, 0xe9, 0xca, - 0xe9, 0x9a, 0xea, 0xca, 0xea, 0x9a, 0xea, 0xca, 0xea, 0x9a, 0xea, 0xca, - 0xea, 0x9a, 0xea, 0xca, 0xea, 0x9a, 0xea, 0xca, 0xeb, 0x9a, 0xea, 0xca, - 0xeb, 0x9a, 0xea, 0xca, 0xeb, 0x9a, 0xeb, 0xca, 0xeb, 0x9b, 0xea, 0xca, - 0xec, 0x9a, 0xeb, 0xca, 0xec, 0x9b, 0xee, 0xca, 0xec, 0x99, 0xee, 0xca, - 0xec, 0x97, 0xee, 0xca, 0xec, 0x99, 0xee, 0xca, 0xed, 0x97, 0xee, 0xca, - 0xed, 0x99, 0xee, 0xca, 0xed, 0x97, 0xee, 0xca, 0xed, 0x97, 0xee, 0xca, - 0xee, 0x97, 0xee, 0xca, 0xee, 0x97, 0xee, 0xca, 0xee, 0x97, 0xee, 0xca, - 0xee, 0x97, 0xef, 0xca, 0xee, 0x97, 0xef, 0xca, 0xee, 0x97, 0xef, 0xc9, - 0xee, 0x97, 0xef, 0xca, 0xee, 0x97, 0xf0, 0xc9, 0xee, 0x97, 0xf0, 0xca, - 0xee, 0x97, 0xf0, 0xc9, 0xee, 0x97, 0xf0, 0xca, 0xee, 0x97, 0xf1, 0xc9, - 0xee, 0x97, 0xf1, 0xca, 0xee, 0x97, 0xf1, 0xc9, 0xee, 0x97, 0xf1, 0xca, - 0xee, 0x97, 0xf2, 0xc6, 0xf2, 0x97, 0xf2, 0xc6, 0xf2, 0x97, 0xf2, 0xc6, - 0xf2, 0x97, 0xf2, 0xc6, 0xf2, 0x97, 0xf2, 0xc6, 0xf2, 0x97, 0xf3, 0xc6, - 0xf3, 0x97, 0xf3, 0xc6, 0xf3, 0x97, 0xf3, 0xc7, 0xf5, 0x97, 0xf3, 0xc7, - 0xf5, 0x97, 0xf4, 0xc7, 0xf5, 0x97, 0xf4, 0xc7, 0xf5, 0x97, 0xf4, 0xc7, - 0xf5, 0x97, 0xf4, 0xc7, 0xf5, 0x97, 0xf5, 0xc7, 0xf5, 0x97, 0xf5, 0xc7, - 0xf5, 0x97, 0xf5, 0xc7, 0xf5, 0x97, 0xf5, 0xc7, 0xf5, 0x97, 0xf5, 0xc7, - 0xf5, 0x97, 0xf6, 0xc7, 0xf6, 0x97, 0xf6, 0xc7, 0xf6, 0x97, 0xf6, 0xc7, - 0xf6, 0x97, 0xf6, 0xc7, 0xf6, 0x97, 0xf7, 0xc7, 0xf7, 0x97, 0xf7, 0xc7, - 0xf7, 0x97, 0xf7, 0xc7, 0xf7, 0x97, 0xf7, 0xc7, 0xf7, 0x97, 0xf8, 0xc7, - 0xf7, 0x97, 0xf8, 0xc7, 0xf7, 0x97, 0xf8, 0xc7, 0xf7, 0x97, 0xf8, 0xc7, - 0xf7, 0x97, 0xf8, 0xc7, 0xf7, 0x97, 0xf9, 0xc7, 0xf7, 0x97, 0xf9, 0xc7, - 0xf7, 0x97, 0xf9, 0xc7, 0xf7, 0x97, 0xf9, 0xc7, 0xf7, 0x97, 0xfa, 0xc7, - 0xf7, 0x97, 0xfa, 0xc7, 0xf7, 0x97, 0xfa, 0xc7, 0xf7, 0x97, 0xfa, 0xc6, - 0xf8, 0x97, 0xfa, 0xc7, 0xf7, 0x97, 0xfb, 0xc6, 0xf8, 0x97, 0xfb, 0xc7, - 0xf7, 0x97, 0xfb, 0xc6, 0xf8, 0x97, 0xfb, 0xc7, 0xf7, 0x97, 0xfc, 0xc6, - 0xf8, 0x97, 0xfc, 0xc7, 0xf7, 0x97, 0xfc, 0xc6, 0xf8, 0x97, 0xfc, 0xc7, - 0xf7, 0x97, 0xfc, 0xc6, 0xf8, 0x97, 0xfd, 0xc7, 0xf7, 0x97, 0xfd, 0xc6, - 0xf8, 0x97, 0xfd, 0xc7, 0xf7, 0x97, 0xfd, 0xc6, 0xf8, 0x97, 0xfe, 0xc7, - 0xf7, 0x97, 0xfe, 0xc6, 0xf8, 0x97, 0xfe, 0xc7, 0xf7, 0x97, 0xfe, 0xc6, - 0xf8, 0x97, 0xfe, 0xc7, 0xf7, 0x97, 0xff, 0xc6, 0xf8, 0x97, 0xff, 0xc7, - 0xf7, 0x97, 0x03, 0xd0, 0x8d, 0x98, 0x0a, 0xd0, 0x8d, 0x98, 0x0f, 0xd0, - 0x8d, 0x98, 0x14, 0xd0, 0x8d, 0x98, 0x17, 0xd0, 0x8d, 0x98, 0x1b, 0xd0, - 0x8d, 0x98, 0x1e, 0xd0, 0x8d, 0x98, 0x20, 0xcf, 0x8e, 0x98, 0x23, 0xd0, - 0x8d, 0x98, 0x25, 0xcf, 0x8e, 0x98, 0x27, 0xd0, 0x8d, 0x98, 0x29, 0xcf, - 0x8e, 0x98, 0x2b, 0xd0, 0x8d, 0x98, 0x2d, 0xcf, 0x8e, 0x98, 0x2f, 0xd0, - 0x8d, 0x98, 0x31, 0xcf, 0x8e, 0x98, 0x32, 0xd0, 0x8d, 0x98, 0x34, 0xcf, - 0x8e, 0x98, 0x35, 0xd0, 0x8d, 0x98, 0x37, 0xcf, 0x8e, 0x98, 0x38, 0xd0, - 0x8d, 0x98, 0x3a, 0xcf, 0x8e, 0x98, 0x3b, 0xd0, 0x8d, 0x98, 0x3c, 0xcf, - 0x8e, 0x98, 0x3e, 0xd0, 0x8d, 0x98, 0x3f, 0xcf, 0x8e, 0x98, 0x40, 0xd0, - 0x8d, 0x98, 0x42, 0xcf, 0x8e, 0x98, 0x43, 0xd0, 0x8d, 0x98, 0x44, 0xcf, - 0x8e, 0x98, 0x45, 0xd0, 0x8d, 0x98, 0x46, 0xcf, 0x8e, 0x98, 0x47, 0xd0, - 0x8d, 0x98, 0x48, 0xcf, 0x8e, 0x98, 0x49, 0xd0, 0x8d, 0x98, 0x4a, 0xcf, - 0x8e, 0x98, 0x4b, 0xd0, 0x8d, 0x98, 0x4c, 0xcf, 0x8e, 0x98, 0x4d, 0xd0, - 0x8d, 0x98, 0x4e, 0xcf, 0x8e, 0x98, 0x4f, 0xd0, 0x8d, 0x98, 0x50, 0xcf, - 0x8e, 0x98, 0x51, 0xd0, 0x8d, 0x98, 0x52, 0xcf, 0x8e, 0x98, 0x53, 0xd0, - 0x8d, 0x98, 0x54, 0xcf, 0x8e, 0x98, 0x55, 0xd0, 0x8d, 0x98, 0x56, 0xcf, - 0x8e, 0x98, 0x57, 0xd0, 0x8d, 0x98, 0x58, 0xcf, 0x8e, 0x98, 0x58, 0xd0, - 0x8d, 0x98, 0x59, 0xcf, 0x8e, 0x98, 0x5a, 0xd0, 0x8d, 0x98, 0x5b, 0xcf, - 0x8e, 0x98, 0x5c, 0xcd, 0x8e, 0x98, 0x5d, 0xcf, 0x8e, 0x98, 0x5d, 0xcd, - 0x8e, 0x98, 0x5e, 0xcf, 0x8e, 0x98, 0x5f, 0xcd, 0x8e, 0x98, 0x60, 0xcf, - 0x8e, 0x98, 0x60, 0xcd, 0x8e, 0x98, 0x61, 0xcf, 0x8e, 0x98, 0x62, 0xcd, - 0x8e, 0x98, 0x63, 0xcf, 0x8e, 0x98, 0x63, 0xcd, 0x8e, 0x98, 0x64, 0xcf, - 0x8e, 0x98, 0x65, 0xcd, 0x8e, 0x98, 0x66, 0xcf, 0x8e, 0x98, 0x66, 0xcd, - 0x8e, 0x98, 0x67, 0xcf, 0x8e, 0x98, 0x68, 0xcd, 0x8e, 0x98, 0x68, 0xcf, - 0x8e, 0x98, 0x69, 0xcd, 0x8e, 0x98, 0x6a, 0xcf, 0x8e, 0x98, 0x6a, 0xcd, - 0x8e, 0x98, 0x6b, 0xcf, 0x8e, 0x98, 0x6c, 0xcd, 0x8e, 0x98, 0x6c, 0xcf, - 0x8e, 0x98, 0x6d, 0xcd, 0x8e, 0x98, 0x6e, 0xcf, 0x8e, 0x98, 0x6e, 0xcd, - 0x8e, 0x98, 0x6f, 0xcf, 0x8e, 0x98, 0x70, 0xcd, 0x8e, 0x98, 0x70, 0xcf, - 0x8e, 0x98, 0x71, 0xcd, 0x8e, 0x98, 0x72, 0xcf, 0x8e, 0x98, 0x72, 0xcd, - 0x8e, 0x98, 0x73, 0xcf, 0x8e, 0x98, 0x73, 0xcd, 0x8e, 0x98, 0x74, 0xcf, - 0x8e, 0x98, 0x75, 0xcd, 0x8e, 0x98, 0x75, 0xcb, 0x8e, 0x98, 0x76, 0xcd, - 0x8e, 0x98, 0x76, 0xcb, 0x8e, 0x98, 0x77, 0xcd, 0x8e, 0x98, 0x78, 0xcb, - 0x8e, 0x98, 0x78, 0xcd, 0x8e, 0x98, 0x79, 0xcb, 0x8e, 0x98, 0x79, 0xcd, - 0x8e, 0x98, 0x7a, 0xcb, 0x8e, 0x98, 0x7a, 0xcd, 0x8e, 0x98, 0x7b, 0xcb, - 0x8e, 0x98, 0x7c, 0xcd, 0x8e, 0x98, 0x7c, 0xcb, 0x8e, 0x98, 0x7d, 0xcd, - 0x8e, 0x98, 0x7d, 0xcb, 0x8e, 0x98, 0x7e, 0xcd, 0x8e, 0x98, 0x7e, 0xcb, - 0x8e, 0x98, 0x7f, 0xcd, 0x8e, 0x98, 0x7f, 0xcb, 0x8e, 0x98, 0x80, 0xcd, - 0x8e, 0x98, 0x81, 0xcb, 0x8e, 0x98, 0x81, 0xcd, 0x8e, 0x98, 0x82, 0xcb, - 0x8e, 0x98, 0x82, 0xcd, 0x8e, 0x98, 0x83, 0xcb, 0x8e, 0x98, 0x83, 0xcd, - 0x8e, 0x98, 0x84, 0xcb, 0x8e, 0x98, 0x84, 0xcd, 0x8e, 0x98, 0x85, 0xcb, - 0x8e, 0x98, 0x85, 0xcd, 0x8e, 0x98, 0x86, 0xcb, 0x8e, 0x98, 0x86, 0xcd, - 0x8e, 0x98, 0x87, 0xcb, 0x8e, 0x98, 0x87, 0xcb, 0x8f, 0x98, 0x88, 0xcb, - 0x8e, 0x98, 0x88, 0xcb, 0x8f, 0x98, 0x89, 0xcb, 0x8e, 0x98, 0x89, 0xcb, - 0x8f, 0x98, 0x8a, 0xcb, 0x8e, 0x98, 0x8a, 0xcb, 0x8f, 0x98, 0x8b, 0xcb, - 0x8e, 0x98, 0x8b, 0xcb, 0x8f, 0x98, 0x8c, 0xcb, 0x8e, 0x98, 0x8c, 0xcb, - 0x8f, 0x98, 0x8d, 0xcb, 0x8e, 0x98, 0x8d, 0xcb, 0x8f, 0x98, 0x8e, 0xcb, - 0x8e, 0x98, 0x8e, 0xcb, 0x8f, 0x98, 0x8e, 0xcb, 0x8e, 0x98, 0x8e, 0xcb, - 0x8f, 0x98, 0x8e, 0xcb, 0x8f, 0x98, 0x8e, 0xcb, 0x90, 0x98, 0x8e, 0xcb, - 0x90, 0x98, 0x8e, 0xcb, 0x91, 0x98, 0x8e, 0xcb, 0x91, 0x98, 0x8e, 0xcb, - 0x92, 0x98, 0x8e, 0xcb, 0x92, 0x98, 0x93, 0xcb, 0x93, 0x94, 0x93, 0xcb, - 0x93, 0x94, 0x95, 0xcb, 0x94, 0x95, 0x96, 0xcb, 0x94, 0x95, 0x95, 0xcb, - 0x94, 0x95, 0x96, 0xcb, 0x95, 0x95, 0x95, 0xcb, 0x95, 0x95, 0x96, 0xcb, - 0x96, 0x95, 0x96, 0xcb, 0x96, 0x95, 0x97, 0xcb, 0x97, 0x95, 0x97, 0xcb, - 0x97, 0x95, 0x98, 0xcb, 0x98, 0x95, 0x98, 0xcb, 0x98, 0x95, 0x9a, 0xcb, - 0x98, 0x96, 0x9a, 0xcb, 0x99, 0x96, 0x9a, 0xcb, 0x99, 0x96, 0x9a, 0xcb, - 0x9a, 0x96, 0x9a, 0xcb, 0x9a, 0x96, 0x9a, 0xcb, 0x9a, 0x96, 0x9b, 0xcb, - 0x9b, 0x96, 0x9b, 0xcb, 0x9b, 0x96, 0x9c, 0xcb, 0x9c, 0x96, 0x9c, 0xcb, - 0x9c, 0x96, 0x9d, 0xcb, 0x9d, 0x96, 0x9d, 0xcb, 0x9d, 0x96, 0x9d, 0xcb, - 0x9d, 0x96, 0x9f, 0xcb, 0x9e, 0x97, 0x9f, 0xcb, 0x9e, 0x97, 0x9f, 0xcb, - 0x9f, 0x97, 0x9f, 0xcb, 0x9f, 0x97, 0x9f, 0xcb, 0x9f, 0x97, 0xa0, 0xcb, - 0xa0, 0x97, 0xa0, 0xcb, 0xa0, 0x97, 0xa1, 0xcb, 0xa1, 0x97, 0xa1, 0xcb, - 0xa1, 0x97, 0xa1, 0xcb, 0xa1, 0x97, 0xa2, 0xcb, 0xa2, 0x97, 0xa2, 0xcb, - 0xa2, 0x97, 0xa3, 0xcb, 0xa3, 0x97, 0xa3, 0xcb, 0xa3, 0x98, 0xa3, 0xcb, - 0xa3, 0x97, 0xa3, 0xcb, 0xa4, 0x98, 0xa3, 0xcb, 0xa4, 0x97, 0xa3, 0xcb, - 0xa5, 0x98, 0xa3, 0xcb, 0xa5, 0x97, 0xa3, 0xcb, 0xa5, 0x98, 0xa3, 0xcb, - 0xa6, 0x97, 0xa3, 0xcb, 0xa6, 0x98, 0xa3, 0xcb, 0xa6, 0x97, 0xa4, 0xcb, - 0xa7, 0x95, 0xa3, 0xcb, 0xa7, 0x97, 0xa4, 0xcb, 0xa8, 0x95, 0xa3, 0xcb, - 0xa8, 0x97, 0xa4, 0xcb, 0xa8, 0x95, 0xa3, 0xcb, 0xa9, 0x97, 0xa4, 0xcb, - 0xa9, 0x95, 0xa3, 0xcb, 0xaa, 0x97, 0xa4, 0xcb, 0xaa, 0x95, 0xa3, 0xcb, - 0xaa, 0x97, 0xa4, 0xcb, 0xab, 0x95, 0xa3, 0xcb, 0xab, 0x97, 0xa4, 0xcb, - 0xab, 0x95, 0xa3, 0xcb, 0xac, 0x97, 0xa4, 0xcb, 0xac, 0x95, 0xa3, 0xcb, - 0xac, 0x97, 0xa4, 0xcb, 0xad, 0x95, 0xa3, 0xcb, 0xad, 0x97, 0xa4, 0xcb, - 0xae, 0x95, 0xa3, 0xcb, 0xae, 0x97, 0xa4, 0xcb, 0xae, 0x95, 0xa3, 0xcb, - 0xaf, 0x97, 0xa4, 0xcb, 0xaf, 0x95, 0xa3, 0xcb, 0xaf, 0x97, 0xa4, 0xcb, - 0xb0, 0x95, 0xa3, 0xcb, 0xb0, 0x97, 0xa4, 0xcb, 0xb0, 0x95, 0xa3, 0xcb, - 0xb1, 0x97, 0xa4, 0xcb, 0xb1, 0x95, 0xa4, 0xcb, 0xb2, 0x92, 0xa4, 0xcb, - 0xb2, 0x95, 0xa4, 0xcb, 0xb2, 0x92, 0xa4, 0xcb, 0xb3, 0x95, 0xa4, 0xcb, - 0xb3, 0x92, 0xa4, 0xcb, 0xb3, 0x95, 0xa4, 0xcb, 0xb4, 0x92, 0xa4, 0xcb, - 0xb4, 0x95, 0xa4, 0xcb, 0xb4, 0x92, 0xa4, 0xcb, 0xb5, 0x95, 0xa4, 0xcb, - 0xb5, 0x92, 0xa4, 0xcb, 0xb5, 0x95, 0xa4, 0xcb, 0xb6, 0x92, 0xa4, 0xcb, - 0xb6, 0x95, 0xa4, 0xcb, 0xb6, 0x92, 0xa4, 0xcb, 0xb7, 0x95, 0xa4, 0xcb, - 0xb7, 0x92, 0xa4, 0xcb, 0xb7, 0x95, 0xa4, 0xcb, 0xb8, 0x92, 0xa4, 0xcb, - 0xb8, 0x95, 0xa4, 0xcb, 0xb8, 0x92, 0xa4, 0xcb, 0xb9, 0x95, 0xa4, 0xcb, - 0xb9, 0x92, 0xa4, 0xcb, 0xb9, 0x95, 0xa4, 0xcb, 0xba, 0x92, 0xa4, 0xcb, - 0xba, 0x95, 0xa4, 0xcb, 0xba, 0x92, 0xa4, 0xcb, 0xbb, 0x95, 0xa4, 0xcb, - 0xbb, 0x92, 0xa4, 0xcb, 0xbb, 0x95, 0xa4, 0xcb, 0xbc, 0x92, 0xa4, 0xcb, - 0xbc, 0x95, 0xa4, 0xcb, 0xbc, 0x92, 0xa4, 0xcb, 0xbd, 0x95, 0xa4, 0xcb, - 0xbd, 0x92, 0xc2, 0xcb, 0xbd, 0x75, 0xc3, 0xcb, 0xbe, 0x75, 0xd3, 0xcb, - 0xbe, 0x9d, 0xd3, 0xcb, 0xbe, 0xa0, 0xd3, 0xcb, 0xbf, 0x9d, 0xd3, 0xcb, - 0xbf, 0xa0, 0xd3, 0xcb, 0xbf, 0x9d, 0xd3, 0xcb, 0xc0, 0xa0, 0xd3, 0xcb, - 0xc0, 0x9d, 0xd3, 0xcb, 0xc0, 0xa0, 0xd3, 0xcb, 0xc1, 0x9d, 0xd3, 0xcb, - 0xc1, 0xa0, 0xd3, 0xcb, 0xc1, 0x9d, 0xd3, 0xcb, 0xc1, 0x9a, 0xd3, 0xcb, - 0xc2, 0x9d, 0xd3, 0xcb, 0xc2, 0x9a, 0xd3, 0xcb, 0xc2, 0x9d, 0xd3, 0xcb, - 0xc3, 0x9a, 0xd3, 0xcb, 0xc3, 0x9d, 0xd3, 0xcb, 0xc3, 0x9a, 0xd3, 0xcb, - 0xc4, 0x9d, 0xd3, 0xcb, 0xc4, 0x9a, 0xd3, 0xcb, 0xc4, 0x9d, 0xd3, 0xcb, - 0xc5, 0x9a, 0xd3, 0xcb, 0xc5, 0x9d, 0xd3, 0xcb, 0xc5, 0x9a, 0xd3, 0xcb, - 0xc6, 0x9d, 0xd3, 0xcb, 0xc6, 0x9a, 0xd3, 0xcb, 0xc6, 0x9d, 0xd3, 0xcb, - 0xc6, 0x9a, 0xd3, 0xcb, 0xc7, 0x9d, 0xd3, 0xcb, 0xc7, 0x9a, 0xd3, 0xcb, - 0xc7, 0x9d, 0xd3, 0xcb, 0xc8, 0x9a, 0xd3, 0xcb, 0xc8, 0x9d, 0xd3, 0xcb, - 0xc8, 0x9a, 0xd3, 0xcb, 0xc9, 0x9d, 0xd3, 0xcb, 0xc9, 0x9a, 0xd3, 0xcb, - 0xc9, 0x9d, 0xd3, 0xcb, 0xc9, 0x9a, 0xd3, 0xcb, 0xca, 0x9d, 0xd3, 0xcb, - 0xca, 0x9a, 0xd3, 0xcb, 0xca, 0x9d, 0xd3, 0xcb, 0xcb, 0x9a, 0xd3, 0xcb, - 0xcb, 0x9d, 0xd3, 0xcb, 0xcb, 0x9a, 0xd3, 0xcb, 0xcc, 0x9d, 0xd3, 0xcb, - 0xcc, 0x9a, 0xd3, 0xcb, 0xcc, 0x9d, 0xd3, 0xcb, 0xcc, 0x9a, 0xd4, 0xcb, - 0xcd, 0x98, 0xd3, 0xcb, 0xcd, 0x9a, 0xd4, 0xcb, 0xcd, 0x98, 0xd3, 0xcb, - 0xce, 0x9a, 0xd4, 0xcb, 0xce, 0x98, 0xd3, 0xcb, 0xce, 0x9a, 0xd4, 0xcb, - 0xce, 0x98, 0xd3, 0xcb, 0xcf, 0x9a, 0xd4, 0xcb, 0xcf, 0x98, 0xd3, 0xcb, - 0xcf, 0x9a, 0xd4, 0xcb, 0xd0, 0x98, 0xd3, 0xcb, 0xd0, 0x9a, 0xd4, 0xcb, - 0xd0, 0x98, 0xd3, 0xcb, 0xd0, 0x9a, 0xd4, 0xcb, 0xd1, 0x98, 0xd3, 0xcb, - 0xd1, 0x9a, 0xd4, 0xcb, 0xd1, 0x98, 0xd3, 0xcb, 0xd2, 0x9a, 0xd4, 0xcb, - 0xd2, 0x98, 0xd3, 0xcb, 0xd2, 0x9a, 0xd4, 0xcb, 0xd2, 0x98, 0xd4, 0xcb, - 0xd3, 0x98, 0xd4, 0xcb, 0xd3, 0x98, 0xd4, 0xcb, 0xd3, 0x98, 0xd4, 0xcb, - 0xd3, 0x98, 0xd4, 0xcb, 0xd3, 0x98, 0xd4, 0xcb, 0xd3, 0x98, 0xd4, 0xcb, - 0xd3, 0x98, 0xd5, 0xc9, 0xd4, 0x98, 0xd5, 0xcb, 0xd3, 0x98, 0xd5, 0xc9, - 0xd4, 0x98, 0xd6, 0xcb, 0xd3, 0x98, 0xd6, 0xc9, 0xd4, 0x98, 0xd6, 0xc8, - 0xd6, 0x98, 0xd6, 0xc8, 0xd6, 0x98, 0xd7, 0xc8, 0xd7, 0x98, 0xd7, 0xc8, - 0xd8, 0x98, 0xd7, 0xc8, 0xd8, 0x98, 0xd7, 0xc8, 0xd8, 0x98, 0xd8, 0xc8, - 0xd8, 0x98, 0xd8, 0xc8, 0xd8, 0x98, 0xd8, 0xc8, 0xd8, 0x98, 0xd9, 0xc8, - 0xd9, 0x98, 0xd9, 0xc8, 0xd9, 0x98, 0xd9, 0xc8, 0xd9, 0x98, 0xd9, 0xc8, - 0xd9, 0x98, 0xda, 0xc8, 0xda, 0x98, 0xda, 0xc9, 0xdb, 0x98, 0xda, 0xc9, - 0xdb, 0x98, 0xda, 0xc9, 0xdb, 0x98, 0xdb, 0xc9, 0xdb, 0x98, 0xdb, 0xc9, - 0xdb, 0x98, 0xdb, 0xc9, 0xdb, 0x98, 0xdb, 0xc9, 0xdb, 0x98, 0xdc, 0xc9, - 0xdc, 0x98, 0xdc, 0xc9, 0xdc, 0x98, 0xdc, 0xc9, 0xdc, 0x98, 0xdd, 0xc9, - 0xdd, 0x98, 0xdd, 0xc9, 0xde, 0x98, 0xdd, 0xc9, 0xde, 0x98, 0xdd, 0xc9, - 0xde, 0x98, 0xde, 0xc9, 0xde, 0x98, 0xde, 0xc9, 0xde, 0x98, 0xde, 0xc9, - 0xde, 0x98, 0xde, 0xc9, 0xde, 0x98, 0xdf, 0xc9, 0xdf, 0x98, 0xdf, 0xc9, - 0xdf, 0x98, 0xdf, 0xc9, 0xdf, 0x98, 0xdf, 0xc9, 0xdf, 0x98, 0xe0, 0xc9, - 0xe0, 0x98, 0xe0, 0xc9, 0xe0, 0x98, 0xe0, 0xca, 0xe1, 0x98, 0xe1, 0xca, - 0xe1, 0x98, 0xe1, 0xca, 0xe1, 0x98, 0xe1, 0xca, 0xe1, 0x98, 0xe1, 0xca, - 0xe1, 0x98, 0xe2, 0xca, 0xe2, 0x98, 0xe2, 0xca, 0xe2, 0x98, 0xe2, 0xca, - 0xe2, 0x98, 0xe2, 0xca, 0xe2, 0x98, 0xe3, 0xca, 0xe3, 0x98, 0xe3, 0xca, - 0xe3, 0x98, 0xe3, 0xca, 0xe3, 0x98, 0xe3, 0xca, 0xe3, 0x98, 0xe4, 0xcb, - 0xe4, 0x99, 0xe4, 0xcb, 0xe4, 0x99, 0xe4, 0xcb, 0xe4, 0x99, 0xe4, 0xcb, - 0xe4, 0x99, 0xe5, 0xcb, 0xe5, 0x99, 0xe5, 0xcb, 0xe5, 0x99, 0xe5, 0xcb, - 0xe5, 0x99, 0xe5, 0xcb, 0xe5, 0x99, 0xe6, 0xcb, 0xe6, 0x99, 0xe6, 0xcb, - 0xe6, 0x99, 0xe6, 0xcb, 0xe6, 0x99, 0xe6, 0xcb, 0xe6, 0x99, 0xe6, 0xcb, - 0xe7, 0x99, 0xe7, 0xcb, 0xe7, 0x9a, 0xe7, 0xcb, 0xe7, 0x9a, 0xe7, 0xcb, - 0xe7, 0x9a, 0xe8, 0xcb, 0xe8, 0x9a, 0xe8, 0xcb, 0xe8, 0x9a, 0xe8, 0xcb, - 0xe8, 0x9a, 0xe8, 0xcb, 0xe8, 0x9a, 0xe9, 0xcb, 0xe9, 0x9a, 0xe8, 0xcb, - 0xe9, 0x9a, 0xe9, 0xcb, 0xe9, 0x9a, 0xe8, 0xcb, 0xe9, 0x9a, 0xe9, 0xcb, - 0xea, 0x9a, 0xea, 0xcb, 0xea, 0x9b, 0xea, 0xcb, 0xea, 0x9b, 0xea, 0xcb, - 0xea, 0x9b, 0xeb, 0xcb, 0xeb, 0x9b, 0xeb, 0xcb, 0xeb, 0x9b, 0xeb, 0xcb, - 0xeb, 0x9b, 0xeb, 0xcb, 0xeb, 0x9b, 0xeb, 0xcb, 0xec, 0x9b, 0xeb, 0xcb, - 0xec, 0x9b, 0xeb, 0xcb, 0xec, 0x9b, 0xee, 0xcb, 0xec, 0x98, 0xee, 0xcb, - 0xec, 0x9a, 0xee, 0xcb, 0xed, 0x98, 0xee, 0xcb, 0xed, 0x9a, 0xee, 0xcb, - 0xed, 0x98, 0xee, 0xcb, 0xed, 0x98, 0xee, 0xcb, 0xee, 0x98, 0xee, 0xcb, - 0xee, 0x98, 0xee, 0xcb, 0xee, 0x98, 0xee, 0xcb, 0xee, 0x98, 0xef, 0xcb, - 0xee, 0x98, 0xef, 0xcb, 0xee, 0x98, 0xef, 0xcb, 0xee, 0x98, 0xef, 0xcb, - 0xee, 0x98, 0xf0, 0xcb, 0xee, 0x98, 0xf0, 0xcb, 0xee, 0x98, 0xf0, 0xc9, - 0xee, 0x98, 0xf0, 0xcb, 0xee, 0x98, 0xf1, 0xc9, 0xee, 0x98, 0xf1, 0xcb, - 0xee, 0x98, 0xf1, 0xc9, 0xee, 0x98, 0xf1, 0xcb, 0xee, 0x98, 0xf2, 0xc9, - 0xee, 0x98, 0xf2, 0xc6, 0xf3, 0x98, 0xf2, 0xc6, 0xf3, 0x98, 0xf2, 0xc6, - 0xf3, 0x98, 0xf2, 0xc6, 0xf3, 0x98, 0xf3, 0xc6, 0xf3, 0x98, 0xf3, 0xc6, - 0xf3, 0x98, 0xf3, 0xc6, 0xf3, 0x98, 0xf3, 0xc6, 0xf3, 0x98, 0xf4, 0xc6, - 0xf4, 0x98, 0xf4, 0xc6, 0xf4, 0x98, 0xf4, 0xc6, 0xf4, 0x98, 0xf4, 0xc6, - 0xf4, 0x98, 0xf5, 0xc7, 0xf6, 0x98, 0xf5, 0xc7, 0xf6, 0x98, 0xf5, 0xc7, - 0xf6, 0x98, 0xf5, 0xc7, 0xf6, 0x98, 0xf5, 0xc7, 0xf6, 0x98, 0xf6, 0xc7, - 0xf6, 0x98, 0xf6, 0xc7, 0xf6, 0x98, 0xf6, 0xc7, 0xf6, 0x98, 0xf6, 0xc7, - 0xf6, 0x98, 0xf7, 0xc7, 0xf7, 0x98, 0xf7, 0xc7, 0xf7, 0x98, 0xf7, 0xc7, - 0xf7, 0x98, 0xf7, 0xc7, 0xf7, 0x98, 0xf8, 0xc7, 0xf7, 0x98, 0xf8, 0xc7, - 0xf7, 0x98, 0xf8, 0xc7, 0xf7, 0x98, 0xf8, 0xc7, 0xf7, 0x98, 0xf8, 0xc7, - 0xf7, 0x98, 0xf9, 0xc7, 0xf7, 0x98, 0xf9, 0xc7, 0xf7, 0x98, 0xf9, 0xc7, - 0xf7, 0x98, 0xf9, 0xc7, 0xf7, 0x98, 0xfa, 0xc7, 0xf7, 0x98, 0xfa, 0xc7, - 0xf7, 0x98, 0xfa, 0xc7, 0xf7, 0x98, 0xfa, 0xc7, 0xf7, 0x98, 0xfa, 0xc7, - 0xf7, 0x98, 0xfb, 0xc7, 0xf7, 0x98, 0xfb, 0xc7, 0xf7, 0x98, 0xfb, 0xc7, - 0xf7, 0x98, 0xfb, 0xc7, 0xf7, 0x98, 0xfc, 0xc7, 0xf7, 0x98, 0xfc, 0xc7, - 0xf7, 0x98, 0xfc, 0xc7, 0xf7, 0x98, 0xfc, 0xc7, 0xf7, 0x98, 0xfc, 0xc7, - 0xf7, 0x98, 0xfd, 0xc7, 0xf7, 0x98, 0xfd, 0xc7, 0xf7, 0x98, 0xfd, 0xc7, - 0xf7, 0x98, 0xfd, 0xc7, 0xf7, 0x98, 0xfe, 0xc7, 0xf7, 0x98, 0xfe, 0xc6, - 0xf8, 0x98, 0xfe, 0xc7, 0xf7, 0x98, 0xfe, 0xc6, 0xf8, 0x98, 0xfe, 0xc7, - 0xf7, 0x98, 0xff, 0xc6, 0xf8, 0x98, 0xff, 0xc7, 0xf7, 0x98, 0x03, 0xd1, - 0x8d, 0x98, 0x0a, 0xd1, 0x8d, 0x98, 0x0f, 0xd1, 0x8d, 0x98, 0x14, 0xd1, - 0x8d, 0x98, 0x17, 0xd1, 0x8d, 0x98, 0x1b, 0xd1, 0x8d, 0x98, 0x1e, 0xd1, - 0x8d, 0x98, 0x20, 0xd2, 0x8d, 0x98, 0x23, 0xd1, 0x8d, 0x98, 0x25, 0xd2, - 0x8d, 0x98, 0x27, 0xd1, 0x8d, 0x98, 0x29, 0xd2, 0x8d, 0x98, 0x2b, 0xd1, - 0x8d, 0x98, 0x2d, 0xd2, 0x8d, 0x98, 0x2f, 0xd1, 0x8d, 0x98, 0x31, 0xd2, - 0x8d, 0x98, 0x32, 0xd1, 0x8d, 0x98, 0x34, 0xcf, 0x8e, 0x98, 0x35, 0xd1, - 0x8d, 0x98, 0x37, 0xcf, 0x8e, 0x98, 0x38, 0xd1, 0x8d, 0x98, 0x3a, 0xcf, - 0x8e, 0x98, 0x3b, 0xd1, 0x8d, 0x98, 0x3c, 0xcf, 0x8e, 0x98, 0x3e, 0xd1, - 0x8d, 0x98, 0x3f, 0xcf, 0x8e, 0x98, 0x40, 0xd1, 0x8d, 0x98, 0x42, 0xcf, - 0x8e, 0x98, 0x43, 0xd1, 0x8d, 0x98, 0x44, 0xcf, 0x8e, 0x98, 0x45, 0xd1, - 0x8d, 0x98, 0x46, 0xcf, 0x8e, 0x98, 0x47, 0xd1, 0x8d, 0x98, 0x48, 0xcf, - 0x8e, 0x98, 0x49, 0xd1, 0x8d, 0x98, 0x4a, 0xcf, 0x8e, 0x98, 0x4b, 0xd1, - 0x8d, 0x98, 0x4c, 0xcf, 0x8e, 0x98, 0x4d, 0xd1, 0x8d, 0x98, 0x4e, 0xcf, - 0x8e, 0x98, 0x4f, 0xd1, 0x8d, 0x98, 0x50, 0xcf, 0x8e, 0x98, 0x51, 0xd1, - 0x8d, 0x98, 0x52, 0xcf, 0x8e, 0x98, 0x53, 0xd1, 0x8d, 0x98, 0x54, 0xcf, - 0x8e, 0x98, 0x55, 0xcd, 0x8e, 0x98, 0x56, 0xcf, 0x8e, 0x98, 0x57, 0xcd, - 0x8e, 0x98, 0x58, 0xcf, 0x8e, 0x98, 0x58, 0xcd, 0x8e, 0x98, 0x59, 0xcf, - 0x8e, 0x98, 0x5a, 0xcd, 0x8e, 0x98, 0x5b, 0xcf, 0x8e, 0x98, 0x5c, 0xcd, - 0x8e, 0x98, 0x5d, 0xcf, 0x8e, 0x98, 0x5d, 0xcd, 0x8e, 0x98, 0x5e, 0xcf, - 0x8e, 0x98, 0x5f, 0xcd, 0x8e, 0x98, 0x60, 0xcf, 0x8e, 0x98, 0x60, 0xcd, - 0x8e, 0x98, 0x61, 0xcf, 0x8e, 0x98, 0x62, 0xcd, 0x8e, 0x98, 0x63, 0xcf, - 0x8e, 0x98, 0x63, 0xcd, 0x8e, 0x98, 0x64, 0xcf, 0x8e, 0x98, 0x65, 0xcd, - 0x8e, 0x98, 0x66, 0xcf, 0x8e, 0x98, 0x66, 0xcd, 0x8e, 0x98, 0x67, 0xcf, - 0x8e, 0x98, 0x68, 0xcd, 0x8e, 0x98, 0x68, 0xcf, 0x8e, 0x98, 0x69, 0xcd, - 0x8e, 0x98, 0x6a, 0xcf, 0x8e, 0x98, 0x6a, 0xcd, 0x8e, 0x98, 0x6b, 0xcf, - 0x8e, 0x98, 0x6c, 0xcd, 0x8e, 0x98, 0x6c, 0xcf, 0x8e, 0x98, 0x6d, 0xcd, - 0x8e, 0x98, 0x6e, 0xcf, 0x8e, 0x98, 0x6e, 0xcd, 0x8e, 0x98, 0x6f, 0xcf, - 0x8e, 0x98, 0x70, 0xcd, 0x8e, 0x98, 0x70, 0xcf, 0x8e, 0x98, 0x71, 0xcd, - 0x8e, 0x98, 0x72, 0xcf, 0x8e, 0x98, 0x72, 0xcd, 0x8e, 0x98, 0x73, 0xcf, - 0x8e, 0x98, 0x73, 0xcd, 0x8e, 0x98, 0x74, 0xcf, 0x8e, 0x98, 0x75, 0xcd, - 0x8e, 0x98, 0x75, 0xcb, 0x8e, 0x98, 0x76, 0xcd, 0x8e, 0x98, 0x76, 0xcb, - 0x8e, 0x98, 0x77, 0xcd, 0x8e, 0x98, 0x78, 0xcb, 0x8e, 0x98, 0x78, 0xcd, - 0x8e, 0x98, 0x79, 0xcb, 0x8e, 0x98, 0x79, 0xcd, 0x8e, 0x98, 0x7a, 0xcb, - 0x8e, 0x98, 0x7a, 0xcd, 0x8e, 0x98, 0x7b, 0xcb, 0x8e, 0x98, 0x7c, 0xcd, - 0x8e, 0x98, 0x7c, 0xcb, 0x8e, 0x98, 0x7d, 0xcd, 0x8e, 0x98, 0x7d, 0xcb, - 0x8e, 0x98, 0x7e, 0xcd, 0x8e, 0x98, 0x7e, 0xcb, 0x8e, 0x98, 0x7f, 0xcd, - 0x8e, 0x98, 0x7f, 0xcb, 0x8e, 0x98, 0x80, 0xcd, 0x8e, 0x98, 0x81, 0xcb, - 0x8e, 0x98, 0x81, 0xcd, 0x8e, 0x98, 0x82, 0xcb, 0x8e, 0x98, 0x82, 0xcd, - 0x8e, 0x98, 0x83, 0xcb, 0x8e, 0x98, 0x83, 0xcd, 0x8e, 0x98, 0x84, 0xcb, - 0x8e, 0x98, 0x84, 0xcd, 0x8e, 0x98, 0x85, 0xcb, 0x8e, 0x98, 0x85, 0xcd, - 0x8e, 0x98, 0x86, 0xcb, 0x8e, 0x98, 0x86, 0xcd, 0x8e, 0x98, 0x87, 0xcb, - 0x8e, 0x98, 0x87, 0xcd, 0x8e, 0x98, 0x88, 0xcb, 0x8e, 0x98, 0x88, 0xcd, - 0x8e, 0x98, 0x89, 0xcb, 0x8e, 0x98, 0x89, 0xcd, 0x8e, 0x98, 0x8a, 0xcb, - 0x8e, 0x98, 0x8a, 0xcd, 0x8e, 0x98, 0x8b, 0xcb, 0x8e, 0x98, 0x8b, 0xcb, - 0x8f, 0x98, 0x8c, 0xcb, 0x8e, 0x98, 0x8c, 0xcb, 0x8f, 0x98, 0x8d, 0xcb, - 0x8e, 0x98, 0x8d, 0xcb, 0x8f, 0x98, 0x8e, 0xcb, 0x8e, 0x98, 0x8e, 0xcb, - 0x8f, 0x98, 0x8e, 0xcb, 0x8e, 0x97, 0x8e, 0xcb, 0x8f, 0x98, 0x8e, 0xcb, - 0x8f, 0x97, 0x8e, 0xcb, 0x90, 0x98, 0x8e, 0xcb, 0x90, 0x97, 0x8e, 0xcb, - 0x91, 0x98, 0x8e, 0xcb, 0x91, 0x97, 0x8e, 0xcb, 0x92, 0x98, 0x8e, 0xcb, - 0x92, 0x97, 0x93, 0xcb, 0x93, 0x94, 0x93, 0xcb, 0x93, 0x94, 0x94, 0xcb, - 0x94, 0x94, 0x94, 0xcb, 0x94, 0x94, 0x94, 0xcb, 0x94, 0x94, 0x95, 0xcb, - 0x95, 0x94, 0x95, 0xcb, 0x95, 0x94, 0x98, 0xcb, 0x96, 0x95, 0x98, 0xcb, - 0x96, 0x95, 0x98, 0xcb, 0x97, 0x95, 0x98, 0xcb, 0x97, 0x95, 0x98, 0xcb, - 0x98, 0x95, 0x98, 0xcb, 0x98, 0x95, 0x98, 0xcb, 0x98, 0x95, 0x99, 0xcb, - 0x99, 0x95, 0x99, 0xcb, 0x99, 0x95, 0x9a, 0xcb, 0x9a, 0x95, 0x9a, 0xcb, - 0x9a, 0x95, 0x9c, 0xcb, 0x9a, 0x96, 0x9d, 0xcb, 0x9b, 0x96, 0x9c, 0xcb, - 0x9b, 0x96, 0x9d, 0xcb, 0x9c, 0x96, 0x9c, 0xcb, 0x9c, 0x96, 0x9d, 0xcb, - 0x9d, 0x96, 0x9d, 0xcb, 0x9d, 0x96, 0x9d, 0xcb, 0x9d, 0x96, 0x9e, 0xcb, - 0x9e, 0x96, 0x9e, 0xcb, 0x9e, 0x96, 0x9f, 0xcb, 0x9f, 0x96, 0x9f, 0xcb, - 0x9f, 0x96, 0x9f, 0xcb, 0x9f, 0x96, 0xa1, 0xcb, 0xa0, 0x97, 0xa1, 0xcb, - 0xa0, 0x97, 0xa1, 0xcb, 0xa1, 0x97, 0xa1, 0xcb, 0xa1, 0x97, 0xa1, 0xcb, - 0xa1, 0x97, 0xa2, 0xcb, 0xa2, 0x97, 0xa2, 0xcb, 0xa2, 0x97, 0xa3, 0xcb, - 0xa3, 0x97, 0xa3, 0xcb, 0xa3, 0x97, 0xa3, 0xcb, 0xa3, 0x97, 0xa3, 0xcb, - 0xa4, 0x97, 0xa3, 0xcb, 0xa4, 0x97, 0xa3, 0xcb, 0xa5, 0x97, 0xa3, 0xcb, - 0xa5, 0x97, 0xa3, 0xcb, 0xa5, 0x97, 0xa3, 0xcb, 0xa6, 0x97, 0xa3, 0xcb, - 0xa6, 0x97, 0xa3, 0xcb, 0xa6, 0x97, 0xa3, 0xcb, 0xa7, 0x97, 0xa3, 0xcb, - 0xa7, 0x97, 0xa3, 0xcb, 0xa8, 0x97, 0xa3, 0xcb, 0xa8, 0x97, 0xa3, 0xcb, - 0xa8, 0x97, 0xa3, 0xcb, 0xa9, 0x97, 0xa3, 0xcb, 0xa9, 0x97, 0xa3, 0xcb, - 0xaa, 0x97, 0xa4, 0xcb, 0xaa, 0x94, 0xa3, 0xcb, 0xaa, 0x97, 0xa4, 0xcb, - 0xab, 0x94, 0xa3, 0xcb, 0xab, 0x97, 0xa4, 0xcb, 0xab, 0x94, 0xa3, 0xcb, - 0xac, 0x97, 0xa4, 0xcb, 0xac, 0x94, 0xa3, 0xcb, 0xac, 0x97, 0xa4, 0xcb, - 0xad, 0x94, 0xa3, 0xcb, 0xad, 0x97, 0xa4, 0xcb, 0xae, 0x94, 0xa3, 0xcb, - 0xae, 0x97, 0xa4, 0xcb, 0xae, 0x94, 0xa3, 0xcb, 0xaf, 0x97, 0xa4, 0xcb, - 0xaf, 0x94, 0xa3, 0xcb, 0xaf, 0x97, 0xa4, 0xcb, 0xb0, 0x94, 0xa3, 0xcb, - 0xb0, 0x97, 0xa4, 0xcb, 0xb0, 0x94, 0xa3, 0xcb, 0xb1, 0x97, 0xa4, 0xcb, - 0xb1, 0x94, 0xa4, 0xcb, 0xb2, 0x92, 0xa4, 0xcb, 0xb2, 0x94, 0xa4, 0xcb, - 0xb2, 0x92, 0xa4, 0xcb, 0xb3, 0x94, 0xa4, 0xcb, 0xb3, 0x92, 0xa4, 0xcb, - 0xb3, 0x94, 0xa4, 0xcb, 0xb4, 0x92, 0xa4, 0xcb, 0xb4, 0x94, 0xa4, 0xcb, - 0xb4, 0x92, 0xa4, 0xcb, 0xb5, 0x94, 0xa4, 0xcb, 0xb5, 0x92, 0xa4, 0xcb, - 0xb5, 0x94, 0xa4, 0xcb, 0xb6, 0x92, 0xa4, 0xcb, 0xb6, 0x94, 0xa4, 0xcb, - 0xb6, 0x92, 0xa4, 0xcb, 0xb7, 0x94, 0xa4, 0xcb, 0xb7, 0x92, 0xa4, 0xcb, - 0xb7, 0x94, 0xa4, 0xcb, 0xb8, 0x92, 0xa4, 0xcb, 0xb8, 0x94, 0xa4, 0xcb, - 0xb8, 0x92, 0xa4, 0xcb, 0xb9, 0x94, 0xa4, 0xcb, 0xb9, 0x92, 0xa4, 0xcb, - 0xb9, 0x94, 0xa4, 0xcb, 0xba, 0x92, 0xa4, 0xcb, 0xba, 0x94, 0xa4, 0xcb, - 0xba, 0x92, 0xa4, 0xcb, 0xbb, 0x94, 0xa4, 0xcb, 0xbb, 0x92, 0xa5, 0xcb, - 0xbb, 0x8f, 0xa4, 0xcb, 0xbc, 0x92, 0xa5, 0xcb, 0xbc, 0x8f, 0xa4, 0xcb, - 0xbc, 0x92, 0xa5, 0xcb, 0xbd, 0x8f, 0xa4, 0xcb, 0xbd, 0x92, 0xa5, 0xcb, - 0xbd, 0x8f, 0xd3, 0xcb, 0xbe, 0x9f, 0xd3, 0xcb, 0xbe, 0x9c, 0xd3, 0xcb, - 0xbe, 0x9f, 0xd3, 0xcb, 0xbf, 0x9c, 0xd3, 0xcb, 0xbf, 0x9f, 0xd3, 0xcb, - 0xbf, 0x9c, 0xd3, 0xcb, 0xc0, 0x9f, 0xd3, 0xcb, 0xc0, 0x9c, 0xd3, 0xcb, - 0xc0, 0x9f, 0xd3, 0xcb, 0xc1, 0x9c, 0xd3, 0xcb, 0xc1, 0x9f, 0xd3, 0xcb, - 0xc1, 0x9c, 0xd3, 0xcb, 0xc1, 0x9f, 0xd3, 0xcb, 0xc2, 0x9c, 0xd3, 0xcb, - 0xc2, 0x9f, 0xd3, 0xcb, 0xc2, 0x9c, 0xd3, 0xcb, 0xc3, 0x9f, 0xd3, 0xcb, - 0xc3, 0x9c, 0xd3, 0xcb, 0xc3, 0x9f, 0xd3, 0xcb, 0xc4, 0x9c, 0xd3, 0xcb, - 0xc4, 0x9f, 0xd3, 0xcb, 0xc4, 0x9c, 0xd3, 0xcb, 0xc5, 0x9f, 0xd3, 0xcb, - 0xc5, 0x9c, 0xd3, 0xcb, 0xc5, 0x9f, 0xd3, 0xcb, 0xc6, 0x9c, 0xd3, 0xcb, - 0xc6, 0x9f, 0xd3, 0xcb, 0xc6, 0x9c, 0xd3, 0xcb, 0xc6, 0x9a, 0xd3, 0xcb, - 0xc7, 0x9c, 0xd3, 0xcb, 0xc7, 0x9a, 0xd3, 0xcb, 0xc7, 0x9c, 0xd3, 0xcb, - 0xc8, 0x9a, 0xd3, 0xcb, 0xc8, 0x9c, 0xd3, 0xcb, 0xc8, 0x9a, 0xd3, 0xcb, - 0xc9, 0x9c, 0xd3, 0xcb, 0xc9, 0x9a, 0xd3, 0xcb, 0xc9, 0x9c, 0xd3, 0xcb, - 0xc9, 0x9a, 0xd3, 0xcb, 0xca, 0x9c, 0xd3, 0xcb, 0xca, 0x9a, 0xd3, 0xcb, - 0xca, 0x9c, 0xd3, 0xcb, 0xcb, 0x9a, 0xd3, 0xcb, 0xcb, 0x9c, 0xd3, 0xcb, - 0xcb, 0x9a, 0xd3, 0xcb, 0xcc, 0x9c, 0xd3, 0xcb, 0xcc, 0x9a, 0xd3, 0xcb, - 0xcc, 0x9c, 0xd3, 0xcb, 0xcc, 0x9a, 0xd3, 0xcb, 0xcd, 0x9c, 0xd3, 0xcb, - 0xcd, 0x9a, 0xd3, 0xcb, 0xcd, 0x9c, 0xd3, 0xcb, 0xce, 0x9a, 0xd3, 0xcb, - 0xce, 0x9c, 0xd3, 0xcb, 0xce, 0x9a, 0xd3, 0xcb, 0xce, 0x9c, 0xd3, 0xcb, - 0xcf, 0x9a, 0xd4, 0xcb, 0xcf, 0x98, 0xd3, 0xcb, 0xcf, 0x9a, 0xd4, 0xcb, - 0xd0, 0x98, 0xd3, 0xcb, 0xd0, 0x9a, 0xd4, 0xcb, 0xd0, 0x98, 0xd3, 0xcb, - 0xd0, 0x9a, 0xd4, 0xcb, 0xd1, 0x98, 0xd3, 0xcb, 0xd1, 0x9a, 0xd4, 0xcb, - 0xd1, 0x98, 0xd3, 0xcb, 0xd2, 0x9a, 0xd4, 0xcb, 0xd2, 0x98, 0xd3, 0xcb, - 0xd2, 0x9a, 0xd4, 0xcb, 0xd2, 0x98, 0xd4, 0xcb, 0xd3, 0x98, 0xd4, 0xcb, - 0xd3, 0x98, 0xd4, 0xcb, 0xd3, 0x98, 0xd4, 0xcb, 0xd3, 0x98, 0xd4, 0xcb, - 0xd3, 0x98, 0xd4, 0xcb, 0xd3, 0x98, 0xd4, 0xcb, 0xd3, 0x98, 0xd5, 0xca, - 0xd4, 0x98, 0xd5, 0xcb, 0xd3, 0x98, 0xd5, 0xca, 0xd4, 0x98, 0xd6, 0xcb, - 0xd3, 0x98, 0xd6, 0xca, 0xd4, 0x98, 0xd6, 0xcb, 0xd3, 0x98, 0xd6, 0xc8, - 0xd6, 0x98, 0xd7, 0xc8, 0xd7, 0x98, 0xd7, 0xc8, 0xd7, 0x98, 0xd7, 0xc8, - 0xd7, 0x98, 0xd7, 0xc8, 0xd7, 0x98, 0xd8, 0xc8, 0xd8, 0x98, 0xd8, 0xc8, - 0xd8, 0x98, 0xd8, 0xc9, 0xd9, 0x98, 0xd9, 0xc9, 0xda, 0x98, 0xd9, 0xc9, - 0xd9, 0x98, 0xd9, 0xc9, 0xda, 0x98, 0xd9, 0xc9, 0xd9, 0x98, 0xda, 0xc9, - 0xda, 0x98, 0xda, 0xc9, 0xda, 0x98, 0xda, 0xc9, 0xda, 0x98, 0xda, 0xc9, - 0xda, 0x98, 0xdb, 0xc9, 0xdb, 0x98, 0xdb, 0xc9, 0xdb, 0x98, 0xdb, 0xc9, - 0xdc, 0x98, 0xdb, 0xc9, 0xdd, 0x98, 0xdc, 0xc9, 0xdc, 0x98, 0xdc, 0xc9, - 0xdd, 0x98, 0xdc, 0xc9, 0xdc, 0x98, 0xdd, 0xc9, 0xdd, 0x98, 0xdd, 0xc9, - 0xdd, 0x98, 0xdd, 0xc9, 0xdd, 0x98, 0xdd, 0xc9, 0xdd, 0x98, 0xde, 0xc9, - 0xde, 0x98, 0xde, 0xc9, 0xde, 0x98, 0xde, 0xca, 0xdf, 0x98, 0xde, 0xca, - 0xdf, 0x98, 0xdf, 0xca, 0xdf, 0x98, 0xdf, 0xca, 0xdf, 0x98, 0xdf, 0xca, - 0xdf, 0x98, 0xdf, 0xca, 0xdf, 0x98, 0xe0, 0xca, 0xe0, 0x98, 0xe0, 0xca, - 0xe0, 0x98, 0xe0, 0xca, 0xe0, 0x98, 0xe1, 0xca, 0xe1, 0x98, 0xe1, 0xca, - 0xe1, 0x98, 0xe1, 0xca, 0xe1, 0x98, 0xe1, 0xca, 0xe1, 0x98, 0xe2, 0xca, - 0xe2, 0x98, 0xe2, 0xca, 0xe2, 0x98, 0xe2, 0xca, 0xe2, 0x98, 0xe2, 0xca, - 0xe2, 0x98, 0xe3, 0xca, 0xe3, 0x98, 0xe3, 0xca, 0xe3, 0x98, 0xe3, 0xca, - 0xe3, 0x98, 0xe3, 0xca, 0xe3, 0x98, 0xe4, 0xca, 0xe4, 0x98, 0xe4, 0xca, - 0xe4, 0x98, 0xe4, 0xca, 0xe4, 0x98, 0xe4, 0xca, 0xe4, 0x98, 0xe5, 0xca, - 0xe5, 0x98, 0xe5, 0xcb, 0xe5, 0x99, 0xe5, 0xcb, 0xe5, 0x99, 0xe5, 0xcb, - 0xe5, 0x99, 0xe6, 0xcb, 0xe6, 0x99, 0xe6, 0xcb, 0xe6, 0x99, 0xe6, 0xcb, - 0xe6, 0x99, 0xe6, 0xcb, 0xe6, 0x99, 0xe7, 0xcb, 0xe7, 0x99, 0xe7, 0xcb, - 0xe7, 0x99, 0xe7, 0xcb, 0xe7, 0x99, 0xe7, 0xcb, 0xe7, 0x99, 0xe7, 0xcb, - 0xe8, 0x99, 0xe7, 0xcb, 0xe8, 0x99, 0xe8, 0xcb, 0xe8, 0x9a, 0xe8, 0xcb, - 0xe8, 0x9a, 0xe9, 0xcb, 0xe9, 0x9a, 0xe9, 0xcb, 0xe9, 0x9a, 0xe9, 0xcb, - 0xe9, 0x9a, 0xe9, 0xcb, 0xe9, 0x9a, 0xea, 0xcb, 0xea, 0x9a, 0xea, 0xcb, - 0xea, 0x9a, 0xea, 0xcb, 0xea, 0x9a, 0xea, 0xcb, 0xea, 0x9a, 0xea, 0xcb, - 0xeb, 0x9a, 0xea, 0xcb, 0xeb, 0x9a, 0xea, 0xcb, 0xeb, 0x9a, 0xeb, 0xcb, - 0xeb, 0x9b, 0xeb, 0xcb, 0xec, 0x9b, 0xeb, 0xcb, 0xec, 0x9b, 0xee, 0xcb, - 0xec, 0x99, 0xee, 0xcb, 0xec, 0x98, 0xee, 0xcb, 0xec, 0x99, 0xee, 0xcb, - 0xed, 0x98, 0xee, 0xcb, 0xed, 0x99, 0xee, 0xcb, 0xed, 0x98, 0xee, 0xcb, - 0xed, 0x99, 0xee, 0xcb, 0xee, 0x98, 0xee, 0xcb, 0xee, 0x98, 0xee, 0xcb, - 0xee, 0x98, 0xee, 0xcb, 0xee, 0x98, 0xef, 0xcb, 0xee, 0x98, 0xef, 0xcb, - 0xee, 0x98, 0xef, 0xcb, 0xee, 0x98, 0xef, 0xcb, 0xee, 0x98, 0xf0, 0xcb, - 0xee, 0x98, 0xf0, 0xcb, 0xee, 0x98, 0xf0, 0xc9, 0xee, 0x98, 0xf0, 0xcb, - 0xee, 0x98, 0xf1, 0xc9, 0xee, 0x98, 0xf1, 0xcb, 0xee, 0x98, 0xf1, 0xc9, - 0xee, 0x98, 0xf1, 0xcb, 0xee, 0x98, 0xf2, 0xc9, 0xee, 0x98, 0xf2, 0xc6, - 0xf2, 0x98, 0xf2, 0xc6, 0xf2, 0x98, 0xf2, 0xc6, 0xf2, 0x98, 0xf2, 0xc6, - 0xf2, 0x98, 0xf3, 0xc6, 0xf3, 0x98, 0xf3, 0xc6, 0xf3, 0x98, 0xf3, 0xc7, - 0xf5, 0x98, 0xf3, 0xc7, 0xf5, 0x98, 0xf4, 0xc7, 0xf5, 0x98, 0xf4, 0xc7, - 0xf5, 0x98, 0xf4, 0xc7, 0xf5, 0x98, 0xf4, 0xc7, 0xf5, 0x98, 0xf5, 0xc7, - 0xf5, 0x98, 0xf5, 0xc7, 0xf5, 0x98, 0xf5, 0xc7, 0xf5, 0x98, 0xf5, 0xc7, - 0xf5, 0x98, 0xf5, 0xc7, 0xf5, 0x98, 0xf6, 0xc7, 0xf6, 0x98, 0xf6, 0xc7, - 0xf6, 0x98, 0xf6, 0xc7, 0xf6, 0x98, 0xf6, 0xc7, 0xf6, 0x98, 0xf7, 0xc7, - 0xf7, 0x98, 0xf7, 0xc7, 0xf7, 0x98, 0xf7, 0xc7, 0xf7, 0x98, 0xf7, 0xc7, - 0xf7, 0x98, 0xf8, 0xc7, 0xf7, 0x98, 0xf8, 0xc7, 0xf7, 0x98, 0xf8, 0xc7, - 0xf7, 0x98, 0xf8, 0xc7, 0xf7, 0x98, 0xf8, 0xc7, 0xf7, 0x98, 0xf9, 0xc7, - 0xf7, 0x98, 0xf9, 0xc7, 0xf7, 0x98, 0xf9, 0xc7, 0xf7, 0x98, 0xf9, 0xc7, - 0xf7, 0x98, 0xfa, 0xc7, 0xf7, 0x98, 0xfa, 0xc7, 0xf7, 0x98, 0xfa, 0xc7, - 0xf7, 0x98, 0xfa, 0xc7, 0xf7, 0x98, 0xfa, 0xc7, 0xf7, 0x98, 0xfb, 0xc7, - 0xf7, 0x98, 0xfb, 0xc7, 0xf7, 0x98, 0xfb, 0xc6, 0xf8, 0x98, 0xfb, 0xc7, - 0xf7, 0x98, 0xfc, 0xc6, 0xf8, 0x98, 0xfc, 0xc7, 0xf7, 0x98, 0xfc, 0xc6, - 0xf8, 0x98, 0xfc, 0xc7, 0xf7, 0x98, 0xfc, 0xc6, 0xf8, 0x98, 0xfd, 0xc7, - 0xf7, 0x98, 0xfd, 0xc6, 0xf8, 0x98, 0xfd, 0xc7, 0xf7, 0x98, 0xfd, 0xc6, - 0xf8, 0x98, 0xfe, 0xc7, 0xf7, 0x98, 0xfe, 0xc6, 0xf8, 0x98, 0xfe, 0xc7, - 0xf7, 0x98, 0xfe, 0xc6, 0xf8, 0x98, 0xfe, 0xc7, 0xf7, 0x98, 0xff, 0xc6, - 0xf8, 0x98, 0xff, 0xc7, 0xf7, 0x98, 0x03, 0xd0, 0x8d, 0x99, 0x0a, 0xd0, - 0x8d, 0x99, 0x0f, 0xd0, 0x8d, 0x99, 0x14, 0xd0, 0x8d, 0x99, 0x17, 0xd0, - 0x8d, 0x99, 0x1b, 0xd0, 0x8d, 0x99, 0x1e, 0xd0, 0x8d, 0x99, 0x20, 0xcf, - 0x8e, 0x99, 0x23, 0xd0, 0x8d, 0x99, 0x25, 0xcf, 0x8e, 0x99, 0x27, 0xd0, - 0x8d, 0x99, 0x29, 0xcf, 0x8e, 0x99, 0x2b, 0xd0, 0x8d, 0x99, 0x2d, 0xcf, - 0x8e, 0x99, 0x2f, 0xd0, 0x8d, 0x99, 0x31, 0xcf, 0x8e, 0x99, 0x32, 0xd0, - 0x8d, 0x99, 0x34, 0xcf, 0x8e, 0x99, 0x35, 0xd0, 0x8d, 0x99, 0x37, 0xcf, - 0x8e, 0x99, 0x38, 0xd0, 0x8d, 0x99, 0x3a, 0xcf, 0x8e, 0x99, 0x3b, 0xd0, - 0x8d, 0x99, 0x3c, 0xcf, 0x8e, 0x99, 0x3e, 0xd0, 0x8d, 0x99, 0x3f, 0xcf, - 0x8e, 0x99, 0x40, 0xd0, 0x8d, 0x99, 0x42, 0xcf, 0x8e, 0x99, 0x43, 0xd0, - 0x8d, 0x99, 0x44, 0xcf, 0x8e, 0x99, 0x45, 0xd0, 0x8d, 0x99, 0x46, 0xcf, - 0x8e, 0x99, 0x47, 0xd0, 0x8d, 0x99, 0x48, 0xcf, 0x8e, 0x99, 0x49, 0xd0, - 0x8d, 0x99, 0x4a, 0xcf, 0x8e, 0x99, 0x4b, 0xd0, 0x8d, 0x99, 0x4c, 0xcf, - 0x8e, 0x99, 0x4d, 0xd0, 0x8d, 0x99, 0x4e, 0xcf, 0x8e, 0x99, 0x4f, 0xd0, - 0x8d, 0x99, 0x50, 0xcf, 0x8e, 0x99, 0x51, 0xd0, 0x8d, 0x99, 0x52, 0xcf, - 0x8e, 0x99, 0x53, 0xd0, 0x8d, 0x99, 0x54, 0xcf, 0x8e, 0x99, 0x55, 0xd0, - 0x8d, 0x99, 0x56, 0xcf, 0x8e, 0x99, 0x57, 0xd0, 0x8d, 0x99, 0x58, 0xcf, - 0x8e, 0x99, 0x58, 0xd0, 0x8d, 0x99, 0x59, 0xcf, 0x8e, 0x99, 0x5a, 0xd0, - 0x8d, 0x99, 0x5b, 0xcf, 0x8e, 0x99, 0x5c, 0xd0, 0x8d, 0x99, 0x5d, 0xcf, - 0x8e, 0x99, 0x5d, 0xd0, 0x8d, 0x99, 0x5e, 0xcf, 0x8e, 0x99, 0x5f, 0xd0, - 0x8d, 0x99, 0x60, 0xcf, 0x8e, 0x99, 0x60, 0xd0, 0x8d, 0x99, 0x61, 0xcf, - 0x8e, 0x99, 0x62, 0xd0, 0x8d, 0x99, 0x63, 0xcf, 0x8e, 0x99, 0x63, 0xd0, - 0x8d, 0x99, 0x64, 0xcf, 0x8e, 0x99, 0x65, 0xcd, 0x8e, 0x99, 0x66, 0xcf, - 0x8e, 0x99, 0x66, 0xcd, 0x8e, 0x99, 0x67, 0xcf, 0x8e, 0x99, 0x68, 0xcd, - 0x8e, 0x99, 0x68, 0xcf, 0x8e, 0x99, 0x69, 0xcd, 0x8e, 0x99, 0x6a, 0xcf, - 0x8e, 0x99, 0x6a, 0xcd, 0x8e, 0x99, 0x6b, 0xcf, 0x8e, 0x99, 0x6c, 0xcd, - 0x8e, 0x99, 0x6c, 0xcf, 0x8e, 0x99, 0x6d, 0xcd, 0x8e, 0x99, 0x6e, 0xcf, - 0x8e, 0x99, 0x6e, 0xcd, 0x8e, 0x99, 0x6f, 0xcf, 0x8e, 0x99, 0x70, 0xcd, - 0x8e, 0x99, 0x70, 0xcf, 0x8e, 0x99, 0x71, 0xcd, 0x8e, 0x99, 0x72, 0xcf, - 0x8e, 0x99, 0x72, 0xcd, 0x8e, 0x99, 0x73, 0xcf, 0x8e, 0x99, 0x73, 0xcd, - 0x8e, 0x99, 0x74, 0xcf, 0x8e, 0x99, 0x75, 0xcd, 0x8e, 0x99, 0x75, 0xcf, - 0x8e, 0x99, 0x76, 0xcd, 0x8e, 0x99, 0x76, 0xcf, 0x8e, 0x99, 0x77, 0xcd, - 0x8e, 0x99, 0x78, 0xcf, 0x8e, 0x99, 0x78, 0xcd, 0x8e, 0x99, 0x79, 0xcf, - 0x8e, 0x99, 0x79, 0xcd, 0x8e, 0x99, 0x7a, 0xcf, 0x8e, 0x99, 0x7a, 0xcd, - 0x8e, 0x99, 0x7b, 0xcf, 0x8e, 0x99, 0x7c, 0xcd, 0x8e, 0x99, 0x7c, 0xcb, - 0x8e, 0x99, 0x7d, 0xcd, 0x8e, 0x99, 0x7d, 0xcb, 0x8e, 0x99, 0x7e, 0xcd, - 0x8e, 0x99, 0x7e, 0xcb, 0x8e, 0x99, 0x7f, 0xcd, 0x8e, 0x99, 0x7f, 0xcb, - 0x8e, 0x99, 0x80, 0xcd, 0x8e, 0x99, 0x81, 0xcb, 0x8e, 0x99, 0x81, 0xcd, - 0x8e, 0x99, 0x82, 0xcb, 0x8e, 0x99, 0x82, 0xcd, 0x8e, 0x99, 0x83, 0xcb, - 0x8e, 0x99, 0x83, 0xcd, 0x8e, 0x99, 0x84, 0xcb, 0x8e, 0x99, 0x84, 0xcd, - 0x8e, 0x99, 0x85, 0xcb, 0x8e, 0x99, 0x85, 0xcd, 0x8e, 0x99, 0x86, 0xcb, - 0x8e, 0x99, 0x86, 0xcd, 0x8e, 0x99, 0x87, 0xcb, 0x8e, 0x99, 0x87, 0xcd, - 0x8e, 0x99, 0x88, 0xcb, 0x8e, 0x99, 0x88, 0xcd, 0x8e, 0x99, 0x89, 0xcb, - 0x8e, 0x99, 0x89, 0xcd, 0x8e, 0x99, 0x8a, 0xcb, 0x8e, 0x99, 0x8a, 0xcd, - 0x8e, 0x99, 0x8b, 0xcb, 0x8e, 0x99, 0x8b, 0xcb, 0x8f, 0x99, 0x8c, 0xcb, - 0x8e, 0x99, 0x8c, 0xcb, 0x8f, 0x99, 0x8d, 0xcb, 0x8e, 0x99, 0x8d, 0xcb, - 0x8f, 0x99, 0x8e, 0xcb, 0x8e, 0x99, 0x8e, 0xcb, 0x8f, 0x99, 0x8e, 0xcb, - 0x8e, 0x98, 0x8e, 0xcb, 0x8f, 0x99, 0x8e, 0xcb, 0x8f, 0x98, 0x8e, 0xcb, - 0x90, 0x99, 0x8e, 0xcb, 0x90, 0x98, 0x8e, 0xcb, 0x91, 0x99, 0x8e, 0xcb, - 0x91, 0x98, 0x8e, 0xcb, 0x92, 0x99, 0x8e, 0xcb, 0x92, 0x98, 0x93, 0xcb, - 0x93, 0x94, 0x93, 0xcb, 0x93, 0x94, 0x95, 0xcb, 0x94, 0x95, 0x96, 0xcb, - 0x94, 0x95, 0x95, 0xcb, 0x94, 0x95, 0x96, 0xcb, 0x95, 0x95, 0x95, 0xcb, - 0x95, 0x95, 0x96, 0xcb, 0x96, 0x95, 0x96, 0xcb, 0x96, 0x95, 0x97, 0xcb, - 0x97, 0x95, 0x97, 0xcb, 0x97, 0x95, 0x98, 0xcb, 0x98, 0x95, 0x98, 0xcb, - 0x98, 0x95, 0x9a, 0xcb, 0x98, 0x96, 0x9a, 0xcb, 0x99, 0x96, 0x9a, 0xcb, - 0x99, 0x96, 0x9a, 0xcb, 0x9a, 0x96, 0x9a, 0xcb, 0x9a, 0x96, 0x9a, 0xcb, - 0x9a, 0x96, 0x9b, 0xcb, 0x9b, 0x96, 0x9b, 0xcb, 0x9b, 0x96, 0x9c, 0xcb, - 0x9c, 0x96, 0x9c, 0xcb, 0x9c, 0x96, 0x9d, 0xcb, 0x9d, 0x96, 0x9f, 0xcb, - 0x9d, 0x97, 0x9f, 0xcb, 0x9d, 0x97, 0x9f, 0xcb, 0x9e, 0x97, 0x9f, 0xcb, - 0x9e, 0x97, 0x9f, 0xcb, 0x9f, 0x97, 0x9f, 0xcb, 0x9f, 0x97, 0x9f, 0xcb, - 0x9f, 0x97, 0xa0, 0xcb, 0xa0, 0x97, 0xa0, 0xcb, 0xa0, 0x97, 0xa1, 0xcb, - 0xa1, 0x97, 0xa1, 0xcb, 0xa1, 0x97, 0xa1, 0xcb, 0xa1, 0x97, 0xa2, 0xcb, - 0xa2, 0x97, 0xa3, 0xcb, 0xa2, 0x98, 0xa3, 0xcb, 0xa3, 0x97, 0xa3, 0xcb, - 0xa3, 0x98, 0xa3, 0xcb, 0xa3, 0x97, 0xa3, 0xcb, 0xa4, 0x98, 0xa3, 0xcb, - 0xa4, 0x97, 0xa3, 0xcb, 0xa5, 0x98, 0xa3, 0xcb, 0xa5, 0x97, 0xa3, 0xcb, - 0xa5, 0x98, 0xa3, 0xcb, 0xa6, 0x97, 0xa3, 0xcb, 0xa6, 0x98, 0xa3, 0xcb, - 0xa6, 0x97, 0xa3, 0xcb, 0xa7, 0x98, 0xa3, 0xcb, 0xa7, 0x97, 0xa3, 0xcb, - 0xa8, 0x98, 0xa3, 0xcb, 0xa8, 0x97, 0xa3, 0xcb, 0xa8, 0x98, 0xa3, 0xcb, - 0xa9, 0x97, 0xa3, 0xcb, 0xa9, 0x98, 0xa3, 0xcb, 0xaa, 0x97, 0xa4, 0xcb, - 0xaa, 0x95, 0xa3, 0xcb, 0xaa, 0x97, 0xa4, 0xcb, 0xab, 0x95, 0xa3, 0xcb, - 0xab, 0x97, 0xa4, 0xcb, 0xab, 0x95, 0xa3, 0xcb, 0xac, 0x97, 0xa4, 0xcb, - 0xac, 0x95, 0xa3, 0xcb, 0xac, 0x97, 0xa4, 0xcb, 0xad, 0x95, 0xa3, 0xcb, - 0xad, 0x97, 0xa4, 0xcb, 0xae, 0x95, 0xa3, 0xcb, 0xae, 0x97, 0xa4, 0xcb, - 0xae, 0x95, 0xa3, 0xcb, 0xaf, 0x97, 0xa4, 0xcb, 0xaf, 0x95, 0xa3, 0xcb, - 0xaf, 0x97, 0xa4, 0xcb, 0xb0, 0x95, 0xa3, 0xcb, 0xb0, 0x97, 0xa4, 0xcb, - 0xb0, 0x95, 0xa3, 0xcb, 0xb1, 0x97, 0xa4, 0xcb, 0xb1, 0x95, 0xa3, 0xcb, - 0xb2, 0x97, 0xa4, 0xcb, 0xb2, 0x95, 0xa3, 0xcb, 0xb2, 0x97, 0xa4, 0xcb, - 0xb3, 0x95, 0xa3, 0xcb, 0xb3, 0x97, 0xa4, 0xcb, 0xb3, 0x95, 0xa3, 0xcb, - 0xb4, 0x97, 0xa4, 0xcb, 0xb4, 0x95, 0xa4, 0xcb, 0xb4, 0x92, 0xa4, 0xcb, - 0xb5, 0x95, 0xa4, 0xcb, 0xb5, 0x92, 0xa4, 0xcb, 0xb5, 0x95, 0xa4, 0xcb, - 0xb6, 0x92, 0xa4, 0xcb, 0xb6, 0x95, 0xa4, 0xcb, 0xb6, 0x92, 0xa4, 0xcb, - 0xb7, 0x95, 0xa4, 0xcb, 0xb7, 0x92, 0xa4, 0xcb, 0xb7, 0x95, 0xa4, 0xcb, - 0xb8, 0x92, 0xa4, 0xcb, 0xb8, 0x95, 0xa4, 0xcb, 0xb8, 0x92, 0xa4, 0xcb, - 0xb9, 0x95, 0xa4, 0xcb, 0xb9, 0x92, 0xa4, 0xcb, 0xb9, 0x95, 0xa4, 0xcb, - 0xba, 0x92, 0xa4, 0xcb, 0xba, 0x95, 0xa4, 0xcb, 0xba, 0x92, 0xa4, 0xcb, - 0xbb, 0x95, 0xa4, 0xcb, 0xbb, 0x92, 0xa4, 0xcb, 0xbb, 0x95, 0xa4, 0xcb, - 0xbc, 0x92, 0xa4, 0xcb, 0xbc, 0x95, 0xa4, 0xcb, 0xbc, 0x92, 0xa4, 0xcb, - 0xbd, 0x95, 0xa4, 0xcb, 0xbd, 0x92, 0xd2, 0xcb, 0xbd, 0xa2, 0xd3, 0xcb, - 0xbe, 0xa0, 0xd2, 0xcb, 0xbe, 0xa2, 0xd3, 0xcb, 0xbe, 0xa0, 0xd2, 0xcb, - 0xbf, 0xa2, 0xd3, 0xcb, 0xbf, 0xa0, 0xd2, 0xcb, 0xbf, 0xa2, 0xd3, 0xcb, - 0xc0, 0xa0, 0xd3, 0xcb, 0xc0, 0x9d, 0xd3, 0xcb, 0xc0, 0xa0, 0xd3, 0xcb, - 0xc1, 0x9d, 0xd3, 0xcb, 0xc1, 0xa0, 0xd3, 0xcb, 0xc1, 0x9d, 0xd3, 0xcb, - 0xc1, 0xa0, 0xd3, 0xcb, 0xc2, 0x9d, 0xd3, 0xcb, 0xc2, 0xa0, 0xd3, 0xcb, - 0xc2, 0x9d, 0xd3, 0xcb, 0xc3, 0xa0, 0xd3, 0xcb, 0xc3, 0x9d, 0xd3, 0xcb, - 0xc3, 0xa0, 0xd3, 0xcb, 0xc4, 0x9d, 0xd3, 0xcb, 0xc4, 0xa0, 0xd3, 0xcb, - 0xc4, 0x9d, 0xd3, 0xcb, 0xc5, 0xa0, 0xd3, 0xcb, 0xc5, 0x9d, 0xd3, 0xcb, - 0xc5, 0x9a, 0xd3, 0xcb, 0xc6, 0x9d, 0xd3, 0xcb, 0xc6, 0x9a, 0xd3, 0xcb, - 0xc6, 0x9d, 0xd3, 0xcb, 0xc6, 0x9a, 0xd3, 0xcb, 0xc7, 0x9d, 0xd3, 0xcb, - 0xc7, 0x9a, 0xd3, 0xcb, 0xc7, 0x9d, 0xd3, 0xcb, 0xc8, 0x9a, 0xd3, 0xcb, - 0xc8, 0x9d, 0xd3, 0xcb, 0xc8, 0x9a, 0xd3, 0xcb, 0xc9, 0x9d, 0xd3, 0xcb, - 0xc9, 0x9a, 0xd3, 0xcb, 0xc9, 0x9d, 0xd3, 0xcb, 0xc9, 0x9a, 0xd3, 0xcb, - 0xca, 0x9d, 0xd3, 0xcb, 0xca, 0x9a, 0xd3, 0xcb, 0xca, 0x9d, 0xd3, 0xcb, - 0xcb, 0x9a, 0xd3, 0xcb, 0xcb, 0x9d, 0xd3, 0xcb, 0xcb, 0x9a, 0xd3, 0xcb, - 0xcc, 0x9d, 0xd3, 0xcb, 0xcc, 0x9a, 0xd3, 0xcb, 0xcc, 0x9d, 0xd3, 0xcb, - 0xcc, 0x9a, 0xd3, 0xcb, 0xcd, 0x9d, 0xd3, 0xcb, 0xcd, 0x9a, 0xd3, 0xcb, - 0xcd, 0x9d, 0xd3, 0xcb, 0xce, 0x9a, 0xd3, 0xcb, 0xce, 0x9d, 0xd3, 0xcb, - 0xce, 0x9a, 0xd3, 0xcb, 0xce, 0x9d, 0xd3, 0xcb, 0xcf, 0x9a, 0xd4, 0xcb, - 0xcf, 0x99, 0xd3, 0xcb, 0xcf, 0x9a, 0xd4, 0xcb, 0xd0, 0x99, 0xd3, 0xcb, - 0xd0, 0x9a, 0xd4, 0xcb, 0xd0, 0x99, 0xd3, 0xcb, 0xd0, 0x9a, 0xd4, 0xcb, - 0xd1, 0x99, 0xd3, 0xcb, 0xd1, 0x9a, 0xd4, 0xcb, 0xd1, 0x99, 0xd3, 0xcb, - 0xd2, 0x9a, 0xd4, 0xcb, 0xd2, 0x99, 0xd3, 0xcb, 0xd2, 0x9a, 0xd4, 0xcb, - 0xd2, 0x99, 0xd3, 0xcb, 0xd3, 0x9a, 0xd4, 0xcb, 0xd3, 0x99, 0xd3, 0xcb, - 0xd3, 0x9a, 0xd4, 0xcb, 0xd3, 0x99, 0xd4, 0xcb, 0xd3, 0x99, 0xd4, 0xcb, - 0xd3, 0x99, 0xd4, 0xcb, 0xd3, 0x99, 0xd5, 0xcb, 0xd3, 0x99, 0xd5, 0xcb, - 0xd3, 0x99, 0xd5, 0xcb, 0xd3, 0x99, 0xd6, 0xcb, 0xd3, 0x99, 0xd6, 0xc9, - 0xd4, 0x99, 0xd6, 0xcb, 0xd3, 0x99, 0xd6, 0xc9, 0xd4, 0x99, 0xd7, 0xc8, - 0xd8, 0x99, 0xd7, 0xc8, 0xd8, 0x99, 0xd7, 0xc8, 0xd8, 0x99, 0xd7, 0xc8, - 0xd8, 0x99, 0xd8, 0xc8, 0xd8, 0x99, 0xd8, 0xc8, 0xd8, 0x99, 0xd8, 0xc8, - 0xd8, 0x99, 0xd9, 0xc8, 0xd9, 0x99, 0xd9, 0xc8, 0xd9, 0x99, 0xd9, 0xc8, - 0xd9, 0x99, 0xd9, 0xc8, 0xd9, 0x99, 0xda, 0xc8, 0xda, 0x99, 0xda, 0xc9, - 0xdb, 0x99, 0xda, 0xc9, 0xdb, 0x99, 0xda, 0xc9, 0xdb, 0x99, 0xdb, 0xc9, - 0xdb, 0x99, 0xdb, 0xc9, 0xdb, 0x99, 0xdb, 0xc9, 0xdb, 0x99, 0xdb, 0xc9, - 0xdb, 0x99, 0xdc, 0xc9, 0xdc, 0x99, 0xdc, 0xc9, 0xdc, 0x99, 0xdc, 0xc9, - 0xdc, 0x99, 0xdd, 0xc9, 0xdd, 0x99, 0xdd, 0xc9, 0xde, 0x99, 0xdd, 0xc9, - 0xde, 0x99, 0xdd, 0xc9, 0xde, 0x99, 0xde, 0xc9, 0xde, 0x99, 0xde, 0xc9, - 0xde, 0x99, 0xde, 0xc9, 0xde, 0x99, 0xde, 0xc9, 0xde, 0x99, 0xdf, 0xc9, - 0xdf, 0x99, 0xdf, 0xc9, 0xdf, 0x99, 0xdf, 0xc9, 0xdf, 0x99, 0xdf, 0xc9, - 0xdf, 0x99, 0xe0, 0xca, 0xe1, 0x99, 0xe0, 0xca, 0xe1, 0x99, 0xe0, 0xca, - 0xe1, 0x99, 0xe1, 0xca, 0xe1, 0x99, 0xe1, 0xca, 0xe1, 0x99, 0xe1, 0xca, - 0xe1, 0x99, 0xe1, 0xca, 0xe1, 0x99, 0xe2, 0xca, 0xe2, 0x99, 0xe2, 0xca, - 0xe2, 0x99, 0xe2, 0xca, 0xe2, 0x99, 0xe2, 0xca, 0xe2, 0x99, 0xe3, 0xca, - 0xe3, 0x99, 0xe3, 0xca, 0xe3, 0x99, 0xe3, 0xcb, 0xe4, 0x99, 0xe3, 0xcb, - 0xe4, 0x99, 0xe4, 0xcb, 0xe4, 0x99, 0xe4, 0xcb, 0xe4, 0x99, 0xe4, 0xcb, - 0xe4, 0x99, 0xe4, 0xcb, 0xe4, 0x99, 0xe5, 0xcb, 0xe5, 0x99, 0xe5, 0xcb, - 0xe5, 0x99, 0xe5, 0xcb, 0xe5, 0x99, 0xe5, 0xcb, 0xe5, 0x99, 0xe6, 0xcb, - 0xe6, 0x99, 0xe6, 0xcb, 0xe6, 0x99, 0xe6, 0xcb, 0xe6, 0x99, 0xe6, 0xcb, - 0xe6, 0x9a, 0xe7, 0xcb, 0xe7, 0x9a, 0xe7, 0xcb, 0xe7, 0x9a, 0xe7, 0xcb, - 0xe7, 0x9a, 0xe7, 0xcb, 0xe7, 0x9a, 0xe8, 0xcb, 0xe8, 0x9a, 0xe8, 0xcb, - 0xe8, 0x9a, 0xe8, 0xcb, 0xe8, 0x9a, 0xe8, 0xcb, 0xe8, 0x9a, 0xe9, 0xcb, - 0xe9, 0x9a, 0xe8, 0xcb, 0xe9, 0x9a, 0xe9, 0xcb, 0xe9, 0x9a, 0xe9, 0xcb, - 0xe9, 0x9b, 0xea, 0xcb, 0xea, 0x9b, 0xea, 0xcb, 0xea, 0x9b, 0xea, 0xcb, - 0xea, 0x9b, 0xea, 0xcb, 0xea, 0x9b, 0xeb, 0xcb, 0xeb, 0x9b, 0xeb, 0xcb, - 0xeb, 0x9b, 0xeb, 0xcb, 0xeb, 0x9b, 0xeb, 0xcb, 0xeb, 0x9b, 0xeb, 0xcb, - 0xec, 0x9b, 0xeb, 0xcb, 0xec, 0x9b, 0xeb, 0xcb, 0xec, 0x9b, 0xeb, 0xcb, - 0xec, 0x9b, 0xee, 0xcb, 0xec, 0x9a, 0xee, 0xcb, 0xed, 0x99, 0xee, 0xcb, - 0xed, 0x9a, 0xee, 0xcb, 0xed, 0x99, 0xee, 0xcb, 0xed, 0x9a, 0xee, 0xcb, - 0xee, 0x99, 0xee, 0xcb, 0xee, 0x99, 0xee, 0xcb, 0xee, 0x99, 0xee, 0xcb, - 0xee, 0x99, 0xef, 0xcb, 0xee, 0x99, 0xef, 0xcb, 0xee, 0x99, 0xef, 0xcb, - 0xee, 0x99, 0xef, 0xcb, 0xee, 0x99, 0xf0, 0xcb, 0xee, 0x99, 0xf0, 0xcb, - 0xee, 0x99, 0xf0, 0xcb, 0xee, 0x99, 0xf0, 0xcb, 0xee, 0x99, 0xf1, 0xcb, - 0xee, 0x99, 0xf1, 0xcb, 0xee, 0x99, 0xf1, 0xcb, 0xee, 0x99, 0xf1, 0xcb, - 0xee, 0x99, 0xf2, 0xcb, 0xee, 0x99, 0xf2, 0xcb, 0xee, 0x99, 0xf2, 0xc6, - 0xf3, 0x99, 0xf2, 0xc6, 0xf3, 0x99, 0xf2, 0xc6, 0xf3, 0x99, 0xf3, 0xc6, - 0xf3, 0x99, 0xf3, 0xc6, 0xf3, 0x99, 0xf3, 0xc6, 0xf3, 0x99, 0xf3, 0xc6, - 0xf3, 0x99, 0xf4, 0xc6, 0xf4, 0x99, 0xf4, 0xc6, 0xf4, 0x99, 0xf4, 0xc6, - 0xf4, 0x99, 0xf4, 0xc6, 0xf4, 0x99, 0xf5, 0xc7, 0xf6, 0x99, 0xf5, 0xc7, - 0xf6, 0x99, 0xf5, 0xc7, 0xf6, 0x99, 0xf5, 0xc7, 0xf6, 0x99, 0xf5, 0xc7, - 0xf6, 0x99, 0xf6, 0xc7, 0xf6, 0x99, 0xf6, 0xc7, 0xf6, 0x99, 0xf6, 0xc7, - 0xf6, 0x99, 0xf6, 0xc7, 0xf6, 0x99, 0xf7, 0xc7, 0xf7, 0x99, 0xf7, 0xc7, - 0xf7, 0x99, 0xf7, 0xc7, 0xf7, 0x99, 0xf7, 0xc7, 0xf7, 0x99, 0xf8, 0xc7, - 0xf7, 0x99, 0xf8, 0xc7, 0xf7, 0x99, 0xf8, 0xc7, 0xf7, 0x99, 0xf8, 0xc7, - 0xf7, 0x99, 0xf8, 0xc7, 0xf7, 0x99, 0xf9, 0xc7, 0xf7, 0x99, 0xf9, 0xc7, - 0xf7, 0x99, 0xf9, 0xc7, 0xf7, 0x99, 0xf9, 0xc7, 0xf7, 0x99, 0xfa, 0xc7, - 0xf7, 0x99, 0xfa, 0xc7, 0xf7, 0x99, 0xfa, 0xc7, 0xf7, 0x99, 0xfa, 0xc7, - 0xf7, 0x99, 0xfa, 0xc7, 0xf7, 0x99, 0xfb, 0xc7, 0xf7, 0x99, 0xfb, 0xc7, - 0xf7, 0x99, 0xfb, 0xc7, 0xf7, 0x99, 0xfb, 0xc7, 0xf7, 0x99, 0xfc, 0xc7, - 0xf7, 0x99, 0xfc, 0xc7, 0xf7, 0x99, 0xfc, 0xc7, 0xf7, 0x99, 0xfc, 0xc7, - 0xf7, 0x99, 0xfc, 0xc7, 0xf7, 0x99, 0xfd, 0xc7, 0xf7, 0x99, 0xfd, 0xc7, - 0xf7, 0x99, 0xfd, 0xc7, 0xf7, 0x99, 0xfd, 0xc7, 0xf7, 0x99, 0xfe, 0xc7, - 0xf7, 0x99, 0xfe, 0xc7, 0xf7, 0x99, 0xfe, 0xc7, 0xf7, 0x99, 0xfe, 0xc7, - 0xf7, 0x99, 0xfe, 0xc7, 0xf7, 0x99, 0xff, 0xc6, 0xf8, 0x99, 0xff, 0xc7, - 0xf7, 0x99, 0x03, 0xd1, 0x8d, 0x99, 0x0a, 0xd2, 0x8d, 0x99, 0x0f, 0xd1, - 0x8d, 0x99, 0x14, 0xd2, 0x8d, 0x99, 0x17, 0xd1, 0x8d, 0x99, 0x1b, 0xd2, - 0x8d, 0x99, 0x1e, 0xd1, 0x8d, 0x99, 0x20, 0xd2, 0x8d, 0x99, 0x23, 0xd1, - 0x8d, 0x99, 0x25, 0xd2, 0x8d, 0x99, 0x27, 0xd1, 0x8d, 0x99, 0x29, 0xd2, - 0x8d, 0x99, 0x2b, 0xd1, 0x8d, 0x99, 0x2d, 0xd2, 0x8d, 0x99, 0x2f, 0xd1, - 0x8d, 0x99, 0x31, 0xd2, 0x8d, 0x99, 0x32, 0xd1, 0x8d, 0x99, 0x34, 0xd2, - 0x8d, 0x99, 0x35, 0xd1, 0x8d, 0x99, 0x37, 0xd2, 0x8d, 0x99, 0x38, 0xd1, - 0x8d, 0x99, 0x3a, 0xd2, 0x8d, 0x99, 0x3b, 0xd1, 0x8d, 0x99, 0x3c, 0xd2, - 0x8d, 0x99, 0x3e, 0xd1, 0x8d, 0x99, 0x3f, 0xd2, 0x8d, 0x99, 0x40, 0xd1, - 0x8d, 0x99, 0x42, 0xd2, 0x8d, 0x99, 0x43, 0xd1, 0x8d, 0x99, 0x44, 0xcf, - 0x8e, 0x99, 0x45, 0xd1, 0x8d, 0x99, 0x46, 0xcf, 0x8e, 0x99, 0x47, 0xd1, - 0x8d, 0x99, 0x48, 0xcf, 0x8e, 0x99, 0x49, 0xd1, 0x8d, 0x99, 0x4a, 0xcf, - 0x8e, 0x99, 0x4b, 0xd1, 0x8d, 0x99, 0x4c, 0xcf, 0x8e, 0x99, 0x4d, 0xd1, - 0x8d, 0x99, 0x4e, 0xcf, 0x8e, 0x99, 0x4f, 0xd1, 0x8d, 0x99, 0x50, 0xcf, - 0x8e, 0x99, 0x51, 0xd1, 0x8d, 0x99, 0x52, 0xcf, 0x8e, 0x99, 0x53, 0xd1, - 0x8d, 0x99, 0x54, 0xcf, 0x8e, 0x99, 0x55, 0xd1, 0x8d, 0x99, 0x56, 0xcf, - 0x8e, 0x99, 0x57, 0xd1, 0x8d, 0x99, 0x58, 0xcf, 0x8e, 0x99, 0x58, 0xd1, - 0x8d, 0x99, 0x59, 0xcf, 0x8e, 0x99, 0x5a, 0xd1, 0x8d, 0x99, 0x5b, 0xcf, - 0x8e, 0x99, 0x5c, 0xd1, 0x8d, 0x99, 0x5d, 0xcf, 0x8e, 0x99, 0x5d, 0xd1, - 0x8d, 0x99, 0x5e, 0xcf, 0x8e, 0x99, 0x5f, 0xd1, 0x8d, 0x99, 0x60, 0xcf, - 0x8e, 0x99, 0x60, 0xd1, 0x8d, 0x99, 0x61, 0xcf, 0x8e, 0x99, 0x62, 0xcd, - 0x8e, 0x99, 0x63, 0xcf, 0x8e, 0x99, 0x63, 0xcd, 0x8e, 0x99, 0x64, 0xcf, - 0x8e, 0x99, 0x65, 0xcd, 0x8e, 0x99, 0x66, 0xcf, 0x8e, 0x99, 0x66, 0xcd, - 0x8e, 0x99, 0x67, 0xcf, 0x8e, 0x99, 0x68, 0xcd, 0x8e, 0x99, 0x68, 0xcf, - 0x8e, 0x99, 0x69, 0xcd, 0x8e, 0x99, 0x6a, 0xcf, 0x8e, 0x99, 0x6a, 0xcd, - 0x8e, 0x99, 0x6b, 0xcf, 0x8e, 0x99, 0x6c, 0xcd, 0x8e, 0x99, 0x6c, 0xcf, - 0x8e, 0x99, 0x6d, 0xcd, 0x8e, 0x99, 0x6e, 0xcf, 0x8e, 0x99, 0x6e, 0xcd, - 0x8e, 0x99, 0x6f, 0xcf, 0x8e, 0x99, 0x70, 0xcd, 0x8e, 0x99, 0x70, 0xcf, - 0x8e, 0x99, 0x71, 0xcd, 0x8e, 0x99, 0x72, 0xcf, 0x8e, 0x99, 0x72, 0xcd, - 0x8e, 0x99, 0x73, 0xcf, 0x8e, 0x99, 0x73, 0xcd, 0x8e, 0x99, 0x74, 0xcf, - 0x8e, 0x99, 0x75, 0xcd, 0x8e, 0x99, 0x75, 0xcf, 0x8e, 0x99, 0x76, 0xcd, - 0x8e, 0x99, 0x76, 0xcf, 0x8e, 0x99, 0x77, 0xcd, 0x8e, 0x99, 0x78, 0xcf, - 0x8e, 0x99, 0x78, 0xcd, 0x8e, 0x99, 0x79, 0xcf, 0x8e, 0x99, 0x79, 0xcd, - 0x8e, 0x99, 0x7a, 0xcf, 0x8e, 0x99, 0x7a, 0xcd, 0x8e, 0x99, 0x7b, 0xcf, - 0x8e, 0x99, 0x7c, 0xcd, 0x8e, 0x99, 0x7c, 0xcc, 0x8e, 0x99, 0x7d, 0xcd, - 0x8e, 0x99, 0x7d, 0xcc, 0x8e, 0x99, 0x7e, 0xcd, 0x8e, 0x99, 0x7e, 0xcc, - 0x8e, 0x99, 0x7f, 0xcd, 0x8e, 0x99, 0x7f, 0xcc, 0x8e, 0x99, 0x80, 0xcd, - 0x8e, 0x99, 0x81, 0xcc, 0x8e, 0x99, 0x81, 0xcd, 0x8e, 0x99, 0x82, 0xcc, - 0x8e, 0x99, 0x82, 0xcd, 0x8e, 0x99, 0x83, 0xcc, 0x8e, 0x99, 0x83, 0xcd, - 0x8e, 0x99, 0x84, 0xcc, 0x8e, 0x99, 0x84, 0xcd, 0x8e, 0x99, 0x85, 0xcc, - 0x8e, 0x99, 0x85, 0xcd, 0x8e, 0x99, 0x86, 0xcc, 0x8e, 0x99, 0x86, 0xcd, - 0x8e, 0x99, 0x87, 0xcc, 0x8e, 0x99, 0x87, 0xcd, 0x8e, 0x99, 0x88, 0xcc, - 0x8e, 0x99, 0x88, 0xcd, 0x8e, 0x99, 0x89, 0xcc, 0x8e, 0x99, 0x89, 0xcd, - 0x8e, 0x99, 0x8a, 0xcc, 0x8e, 0x99, 0x8a, 0xcd, 0x8e, 0x99, 0x8b, 0xcc, - 0x8e, 0x99, 0x8b, 0xcd, 0x8e, 0x99, 0x8c, 0xcc, 0x8e, 0x99, 0x8c, 0xcd, - 0x8e, 0x99, 0x8d, 0xcc, 0x8e, 0x99, 0x8d, 0xcc, 0x8f, 0x99, 0x8e, 0xcc, - 0x8e, 0x99, 0x8e, 0xcc, 0x8f, 0x99, 0x8e, 0xcc, 0x8e, 0x99, 0x8e, 0xcc, - 0x8f, 0x99, 0x8e, 0xcc, 0x8f, 0x99, 0x8e, 0xcc, 0x90, 0x99, 0x8e, 0xcc, - 0x90, 0x97, 0x8e, 0xcc, 0x91, 0x99, 0x8e, 0xcc, 0x91, 0x97, 0x8e, 0xcc, - 0x92, 0x99, 0x8e, 0xcc, 0x92, 0x97, 0x93, 0xcc, 0x93, 0x94, 0x93, 0xcc, - 0x93, 0x94, 0x94, 0xcc, 0x94, 0x94, 0x94, 0xcc, 0x94, 0x94, 0x94, 0xcc, - 0x94, 0x94, 0x95, 0xcc, 0x95, 0x94, 0x95, 0xcc, 0x95, 0x94, 0x98, 0xcc, - 0x96, 0x95, 0x98, 0xcc, 0x96, 0x95, 0x98, 0xcc, 0x97, 0x95, 0x98, 0xcc, - 0x97, 0x95, 0x98, 0xcc, 0x98, 0x95, 0x98, 0xcc, 0x98, 0x95, 0x98, 0xcc, - 0x98, 0x95, 0x99, 0xcc, 0x99, 0x95, 0x99, 0xcc, 0x99, 0x95, 0x9a, 0xcc, - 0x9a, 0x95, 0x9a, 0xcc, 0x9a, 0x95, 0x9c, 0xcc, 0x9a, 0x96, 0x9d, 0xcc, - 0x9b, 0x96, 0x9c, 0xcc, 0x9b, 0x96, 0x9d, 0xcc, 0x9c, 0x96, 0x9c, 0xcc, - 0x9c, 0x96, 0x9d, 0xcc, 0x9d, 0x96, 0x9d, 0xcc, 0x9d, 0x96, 0x9d, 0xcc, - 0x9d, 0x96, 0x9e, 0xcc, 0x9e, 0x96, 0x9e, 0xcc, 0x9e, 0x96, 0x9f, 0xcc, - 0x9f, 0x96, 0xa1, 0xcc, 0x9f, 0x97, 0xa1, 0xcc, 0x9f, 0x97, 0xa1, 0xcc, - 0xa0, 0x97, 0xa1, 0xcc, 0xa0, 0x97, 0xa1, 0xcc, 0xa1, 0x97, 0xa1, 0xcc, - 0xa1, 0x97, 0xa1, 0xcc, 0xa1, 0x97, 0xa2, 0xcc, 0xa2, 0x97, 0xa2, 0xcc, - 0xa2, 0x97, 0xa3, 0xcc, 0xa3, 0x97, 0xa3, 0xcc, 0xa3, 0x97, 0xa3, 0xcc, - 0xa3, 0x97, 0xa3, 0xcc, 0xa4, 0x97, 0xa3, 0xcc, 0xa4, 0x97, 0xa3, 0xcc, - 0xa5, 0x97, 0xa3, 0xcc, 0xa5, 0x97, 0xa3, 0xcc, 0xa5, 0x97, 0xa3, 0xcc, - 0xa6, 0x97, 0xa3, 0xcc, 0xa6, 0x97, 0xa3, 0xcc, 0xa6, 0x97, 0xa3, 0xcc, - 0xa7, 0x97, 0xa3, 0xcc, 0xa7, 0x97, 0xa3, 0xcc, 0xa8, 0x97, 0xa3, 0xcc, - 0xa8, 0x97, 0xa3, 0xcc, 0xa8, 0x97, 0xa3, 0xcc, 0xa9, 0x97, 0xa3, 0xcc, - 0xa9, 0x97, 0xa3, 0xcc, 0xaa, 0x97, 0xa3, 0xcc, 0xaa, 0x97, 0xa3, 0xcc, - 0xaa, 0x97, 0xa3, 0xcc, 0xab, 0x97, 0xa3, 0xcc, 0xab, 0x97, 0xa4, 0xcc, - 0xab, 0x94, 0xa3, 0xcc, 0xac, 0x97, 0xa4, 0xcc, 0xac, 0x94, 0xa3, 0xcc, - 0xac, 0x97, 0xa4, 0xcc, 0xad, 0x94, 0xa3, 0xcc, 0xad, 0x97, 0xa4, 0xcc, - 0xae, 0x94, 0xa3, 0xcc, 0xae, 0x97, 0xa4, 0xcc, 0xae, 0x94, 0xa3, 0xcc, - 0xaf, 0x97, 0xa4, 0xcc, 0xaf, 0x94, 0xa3, 0xcc, 0xaf, 0x97, 0xa4, 0xcc, - 0xb0, 0x94, 0xa3, 0xcc, 0xb0, 0x97, 0xa4, 0xcc, 0xb0, 0x94, 0xa3, 0xcc, - 0xb1, 0x97, 0xa4, 0xcc, 0xb1, 0x94, 0xa3, 0xcc, 0xb2, 0x97, 0xa4, 0xcc, - 0xb2, 0x94, 0xa3, 0xcc, 0xb2, 0x97, 0xa4, 0xcc, 0xb3, 0x94, 0xa3, 0xcc, - 0xb3, 0x97, 0xa4, 0xcc, 0xb3, 0x94, 0xa3, 0xcc, 0xb4, 0x97, 0xa4, 0xcc, - 0xb4, 0x94, 0xa4, 0xcc, 0xb4, 0x92, 0xa4, 0xcc, 0xb5, 0x94, 0xa4, 0xcc, - 0xb5, 0x92, 0xa4, 0xcc, 0xb5, 0x94, 0xa4, 0xcc, 0xb6, 0x92, 0xa4, 0xcc, - 0xb6, 0x94, 0xa4, 0xcc, 0xb6, 0x92, 0xa4, 0xcc, 0xb7, 0x94, 0xa4, 0xcc, - 0xb7, 0x92, 0xa4, 0xcc, 0xb7, 0x94, 0xa4, 0xcc, 0xb8, 0x92, 0xa4, 0xcc, - 0xb8, 0x94, 0xa4, 0xcc, 0xb8, 0x92, 0xa4, 0xcc, 0xb9, 0x94, 0xa4, 0xcc, - 0xb9, 0x92, 0xa4, 0xcc, 0xb9, 0x94, 0xa4, 0xcc, 0xba, 0x92, 0xa4, 0xcc, - 0xba, 0x94, 0xa4, 0xcc, 0xba, 0x92, 0xa4, 0xcc, 0xbb, 0x94, 0xa4, 0xcc, - 0xbb, 0x92, 0xa4, 0xcc, 0xbb, 0x94, 0xa4, 0xcc, 0xbc, 0x92, 0xa4, 0xcc, - 0xbc, 0x94, 0xa4, 0xcc, 0xbc, 0x92, 0xa4, 0xcc, 0xbd, 0x94, 0xa4, 0xcc, - 0xbd, 0x92, 0xd3, 0xcc, 0xbd, 0x9c, 0xd3, 0xcc, 0xbe, 0x9f, 0xd3, 0xcc, - 0xbe, 0x9c, 0xd3, 0xcc, 0xbe, 0x9f, 0xd3, 0xcc, 0xbf, 0x9c, 0xd3, 0xcc, - 0xbf, 0x9f, 0xd3, 0xcc, 0xbf, 0x9c, 0xd3, 0xcc, 0xc0, 0x9f, 0xd3, 0xcc, - 0xc0, 0x9c, 0xd3, 0xcc, 0xc0, 0x9f, 0xd3, 0xcc, 0xc1, 0x9c, 0xd3, 0xcc, - 0xc1, 0x9f, 0xd3, 0xcc, 0xc1, 0x9c, 0xd3, 0xcc, 0xc1, 0x9f, 0xd3, 0xcc, - 0xc2, 0x9c, 0xd3, 0xcc, 0xc2, 0x9f, 0xd3, 0xcc, 0xc2, 0x9c, 0xd3, 0xcc, - 0xc3, 0x9f, 0xd3, 0xcc, 0xc3, 0x9c, 0xd3, 0xcc, 0xc3, 0x9f, 0xd3, 0xcc, - 0xc4, 0x9c, 0xd3, 0xcc, 0xc4, 0x9f, 0xd3, 0xcc, 0xc4, 0x9c, 0xd3, 0xcc, - 0xc5, 0x9f, 0xd3, 0xcc, 0xc5, 0x9c, 0xd3, 0xcc, 0xc5, 0x9f, 0xd3, 0xcc, - 0xc6, 0x9c, 0xd3, 0xcc, 0xc6, 0x9f, 0xd3, 0xcc, 0xc6, 0x9c, 0xd3, 0xcc, - 0xc6, 0x9f, 0xd3, 0xcc, 0xc7, 0x9c, 0xd3, 0xcc, 0xc7, 0x9f, 0xd3, 0xcc, - 0xc7, 0x9c, 0xd3, 0xcc, 0xc8, 0x9f, 0xd3, 0xcc, 0xc8, 0x9c, 0xd3, 0xcc, - 0xc8, 0x9f, 0xd3, 0xcc, 0xc9, 0x9c, 0xd3, 0xcc, 0xc9, 0x9a, 0xd3, 0xcc, - 0xc9, 0x9c, 0xd3, 0xcc, 0xc9, 0x9a, 0xd3, 0xcc, 0xca, 0x9c, 0xd3, 0xcc, - 0xca, 0x9a, 0xd3, 0xcc, 0xca, 0x9c, 0xd3, 0xcc, 0xcb, 0x9a, 0xd3, 0xcc, - 0xcb, 0x9c, 0xd3, 0xcc, 0xcb, 0x9a, 0xd3, 0xcc, 0xcc, 0x9c, 0xd3, 0xcc, - 0xcc, 0x9a, 0xd3, 0xcc, 0xcc, 0x9c, 0xd3, 0xcc, 0xcc, 0x9a, 0xd3, 0xcc, - 0xcd, 0x9c, 0xd3, 0xcc, 0xcd, 0x9a, 0xd3, 0xcc, 0xcd, 0x9c, 0xd3, 0xcc, - 0xce, 0x9a, 0xd3, 0xcc, 0xce, 0x9c, 0xd3, 0xcc, 0xce, 0x9a, 0xd3, 0xcc, - 0xce, 0x9c, 0xd3, 0xcc, 0xcf, 0x9a, 0xd3, 0xcc, 0xcf, 0x9c, 0xd3, 0xcc, - 0xcf, 0x9a, 0xd3, 0xcc, 0xd0, 0x9c, 0xd3, 0xcc, 0xd0, 0x9a, 0xd3, 0xcc, - 0xd0, 0x9c, 0xd3, 0xcc, 0xd0, 0x9a, 0xd3, 0xcc, 0xd1, 0x9c, 0xd3, 0xcc, - 0xd1, 0x9a, 0xd4, 0xcc, 0xd1, 0x99, 0xd3, 0xcc, 0xd2, 0x9a, 0xd4, 0xcc, - 0xd2, 0x99, 0xd3, 0xcc, 0xd2, 0x9a, 0xd4, 0xcc, 0xd2, 0x99, 0xd3, 0xcc, - 0xd3, 0x9a, 0xd4, 0xcc, 0xd3, 0x99, 0xd3, 0xcc, 0xd3, 0x9a, 0xd4, 0xcc, - 0xd3, 0x99, 0xd4, 0xcc, 0xd3, 0x99, 0xd4, 0xcc, 0xd3, 0x99, 0xd4, 0xcc, - 0xd3, 0x99, 0xd5, 0xcc, 0xd3, 0x99, 0xd5, 0xcc, 0xd3, 0x99, 0xd5, 0xcc, - 0xd3, 0x99, 0xd6, 0xcc, 0xd3, 0x99, 0xd6, 0xca, 0xd4, 0x99, 0xd6, 0xcc, - 0xd3, 0x99, 0xd6, 0xca, 0xd4, 0x99, 0xd7, 0xc8, 0xd7, 0x99, 0xd7, 0xc8, - 0xd7, 0x99, 0xd7, 0xc8, 0xd7, 0x99, 0xd7, 0xc8, 0xd7, 0x99, 0xd8, 0xc9, - 0xd9, 0x99, 0xd8, 0xc9, 0xda, 0x99, 0xd8, 0xc9, 0xd9, 0x99, 0xd9, 0xc9, - 0xda, 0x99, 0xd9, 0xc9, 0xd9, 0x99, 0xd9, 0xc9, 0xda, 0x99, 0xd9, 0xc9, - 0xd9, 0x99, 0xda, 0xc9, 0xda, 0x99, 0xda, 0xc9, 0xda, 0x99, 0xda, 0xc9, - 0xda, 0x99, 0xda, 0xc9, 0xda, 0x99, 0xdb, 0xc9, 0xdb, 0x99, 0xdb, 0xc9, - 0xdb, 0x99, 0xdb, 0xc9, 0xdc, 0x99, 0xdb, 0xc9, 0xdd, 0x99, 0xdc, 0xc9, - 0xdc, 0x99, 0xdc, 0xc9, 0xdd, 0x99, 0xdc, 0xc9, 0xdc, 0x99, 0xdd, 0xc9, - 0xdd, 0x99, 0xdd, 0xc9, 0xdd, 0x99, 0xdd, 0xc9, 0xdd, 0x99, 0xdd, 0xc9, - 0xdd, 0x99, 0xde, 0xc9, 0xde, 0x99, 0xde, 0xc9, 0xde, 0x99, 0xde, 0xca, - 0xdf, 0x99, 0xde, 0xca, 0xdf, 0x99, 0xdf, 0xca, 0xdf, 0x99, 0xdf, 0xca, - 0xdf, 0x99, 0xdf, 0xca, 0xdf, 0x99, 0xdf, 0xca, 0xdf, 0x99, 0xe0, 0xca, - 0xe0, 0x99, 0xe0, 0xca, 0xe0, 0x99, 0xe0, 0xca, 0xe0, 0x99, 0xe1, 0xca, - 0xe1, 0x99, 0xe1, 0xca, 0xe1, 0x99, 0xe1, 0xca, 0xe2, 0x99, 0xe1, 0xca, - 0xe2, 0x99, 0xe2, 0xca, 0xe2, 0x99, 0xe2, 0xca, 0xe2, 0x99, 0xe2, 0xca, - 0xe2, 0x99, 0xe2, 0xca, 0xe2, 0x99, 0xe3, 0xca, 0xe3, 0x99, 0xe3, 0xca, - 0xe3, 0x99, 0xe3, 0xca, 0xe3, 0x99, 0xe3, 0xca, 0xe3, 0x99, 0xe4, 0xca, - 0xe4, 0x99, 0xe4, 0xca, 0xe4, 0x99, 0xe4, 0xca, 0xe4, 0x99, 0xe4, 0xcb, - 0xe5, 0x99, 0xe5, 0xcb, 0xe5, 0x99, 0xe5, 0xcb, 0xe5, 0x99, 0xe5, 0xcb, - 0xe5, 0x99, 0xe5, 0xcb, 0xe5, 0x99, 0xe6, 0xcb, 0xe6, 0x99, 0xe6, 0xcb, - 0xe6, 0x99, 0xe6, 0xcb, 0xe6, 0x99, 0xe6, 0xcb, 0xe6, 0x99, 0xe7, 0xcb, - 0xe7, 0x99, 0xe7, 0xcb, 0xe7, 0x99, 0xe7, 0xcb, 0xe7, 0x99, 0xe7, 0xcb, - 0xe7, 0x99, 0xe8, 0xcc, 0xe8, 0x9a, 0xe8, 0xcc, 0xe8, 0x9a, 0xe8, 0xcc, - 0xe8, 0x9a, 0xe8, 0xcc, 0xe8, 0x9a, 0xe9, 0xcc, 0xe9, 0x9a, 0xe9, 0xcc, - 0xe9, 0x9a, 0xe9, 0xcc, 0xe9, 0x9a, 0xe9, 0xcc, 0xe9, 0x9a, 0xea, 0xcc, - 0xea, 0x9a, 0xea, 0xcc, 0xea, 0x9a, 0xea, 0xcc, 0xea, 0x9a, 0xea, 0xcc, - 0xea, 0x9a, 0xea, 0xcc, 0xeb, 0x9a, 0xeb, 0xcc, 0xeb, 0x9b, 0xea, 0xcc, - 0xeb, 0x9a, 0xeb, 0xcc, 0xeb, 0x9b, 0xeb, 0xcc, 0xec, 0x9b, 0xeb, 0xcc, - 0xec, 0x9b, 0xeb, 0xcc, 0xec, 0x9b, 0xeb, 0xcc, 0xec, 0x9b, 0xee, 0xcc, - 0xec, 0x99, 0xee, 0xcc, 0xed, 0x99, 0xee, 0xcc, 0xed, 0x99, 0xee, 0xcc, - 0xed, 0x99, 0xee, 0xcc, 0xed, 0x99, 0xee, 0xcc, 0xee, 0x99, 0xee, 0xcb, - 0xee, 0x99, 0xee, 0xcc, 0xee, 0x99, 0xee, 0xcb, 0xee, 0x99, 0xef, 0xcc, - 0xee, 0x99, 0xef, 0xcb, 0xee, 0x99, 0xef, 0xcc, 0xee, 0x99, 0xef, 0xcb, - 0xee, 0x99, 0xf0, 0xcc, 0xee, 0x99, 0xf0, 0xcb, 0xee, 0x99, 0xf0, 0xcc, - 0xee, 0x99, 0xf0, 0xcb, 0xee, 0x99, 0xf1, 0xcc, 0xee, 0x99, 0xf1, 0xcb, - 0xee, 0x99, 0xf1, 0xcc, 0xee, 0x99, 0xf1, 0xcb, 0xee, 0x99, 0xf2, 0xcc, - 0xee, 0x99, 0xf2, 0xcb, 0xee, 0x99, 0xf2, 0xc9, 0xee, 0x99, 0xf2, 0xc6, - 0xf2, 0x99, 0xf2, 0xc6, 0xf2, 0x99, 0xf3, 0xc7, 0xf5, 0x99, 0xf3, 0xc7, - 0xf5, 0x99, 0xf3, 0xc7, 0xf5, 0x99, 0xf3, 0xc7, 0xf5, 0x99, 0xf4, 0xc7, - 0xf5, 0x99, 0xf4, 0xc7, 0xf5, 0x99, 0xf4, 0xc7, 0xf5, 0x99, 0xf4, 0xc7, - 0xf5, 0x99, 0xf5, 0xc7, 0xf5, 0x99, 0xf5, 0xc7, 0xf5, 0x99, 0xf5, 0xc7, - 0xf5, 0x99, 0xf5, 0xc7, 0xf5, 0x99, 0xf5, 0xc7, 0xf5, 0x99, 0xf6, 0xc7, - 0xf6, 0x99, 0xf6, 0xc7, 0xf6, 0x99, 0xf6, 0xc7, 0xf6, 0x99, 0xf6, 0xc7, - 0xf6, 0x99, 0xf7, 0xc7, 0xf7, 0x99, 0xf7, 0xc7, 0xf7, 0x99, 0xf7, 0xc7, - 0xf7, 0x99, 0xf7, 0xc7, 0xf7, 0x99, 0xf8, 0xc7, 0xf7, 0x99, 0xf8, 0xc7, - 0xf7, 0x99, 0xf8, 0xc7, 0xf7, 0x99, 0xf8, 0xc7, 0xf7, 0x99, 0xf8, 0xc7, - 0xf7, 0x99, 0xf9, 0xc7, 0xf7, 0x99, 0xf9, 0xc7, 0xf7, 0x99, 0xf9, 0xc7, - 0xf7, 0x99, 0xf9, 0xc7, 0xf7, 0x99, 0xfa, 0xc7, 0xf7, 0x99, 0xfa, 0xc7, - 0xf7, 0x99, 0xfa, 0xc7, 0xf7, 0x99, 0xfa, 0xc7, 0xf7, 0x99, 0xfa, 0xc7, - 0xf7, 0x99, 0xfb, 0xc7, 0xf7, 0x99, 0xfb, 0xc7, 0xf7, 0x99, 0xfb, 0xc6, - 0xf8, 0x99, 0xfb, 0xc7, 0xf7, 0x99, 0xfc, 0xc6, 0xf8, 0x99, 0xfc, 0xc7, - 0xf7, 0x99, 0xfc, 0xc6, 0xf8, 0x99, 0xfc, 0xc7, 0xf7, 0x99, 0xfc, 0xc6, - 0xf8, 0x99, 0xfd, 0xc7, 0xf7, 0x99, 0xfd, 0xc6, 0xf8, 0x99, 0xfd, 0xc7, - 0xf7, 0x99, 0xfd, 0xc6, 0xf8, 0x99, 0xfe, 0xc7, 0xf7, 0x99, 0xfe, 0xc6, - 0xf8, 0x99, 0xfe, 0xc7, 0xf7, 0x99, 0xfe, 0xc6, 0xf8, 0x99, 0xfe, 0xc7, - 0xf7, 0x99, 0xff, 0xc6, 0xf8, 0x99, 0xff, 0xc7, 0xf7, 0x99, 0x03, 0xd0, - 0x8d, 0x9a, 0x0a, 0xd0, 0x8d, 0x9a, 0x0f, 0xd0, 0x8d, 0x9a, 0x14, 0xd0, - 0x8d, 0x9a, 0x17, 0xd0, 0x8d, 0x9a, 0x1b, 0xd0, 0x8d, 0x9a, 0x1e, 0xd0, - 0x8d, 0x9a, 0x20, 0xd3, 0x8d, 0x9a, 0x23, 0xd0, 0x8d, 0x9a, 0x25, 0xd3, - 0x8d, 0x9a, 0x27, 0xd0, 0x8d, 0x9a, 0x29, 0xd3, 0x8d, 0x9a, 0x2b, 0xd0, - 0x8d, 0x9a, 0x2d, 0xd3, 0x8d, 0x9a, 0x2f, 0xd0, 0x8d, 0x9a, 0x31, 0xd3, - 0x8d, 0x9a, 0x32, 0xd0, 0x8d, 0x9a, 0x34, 0xcf, 0x8e, 0x9a, 0x35, 0xd0, - 0x8d, 0x9a, 0x37, 0xcf, 0x8e, 0x9a, 0x38, 0xd0, 0x8d, 0x9a, 0x3a, 0xcf, - 0x8e, 0x9a, 0x3b, 0xd0, 0x8d, 0x9a, 0x3c, 0xcf, 0x8e, 0x9a, 0x3e, 0xd0, - 0x8d, 0x9a, 0x3f, 0xcf, 0x8e, 0x9a, 0x40, 0xd0, 0x8d, 0x9a, 0x42, 0xcf, - 0x8e, 0x9a, 0x43, 0xd0, 0x8d, 0x9a, 0x44, 0xcf, 0x8e, 0x9a, 0x45, 0xd0, - 0x8d, 0x9a, 0x46, 0xcf, 0x8e, 0x9a, 0x47, 0xd0, 0x8d, 0x9a, 0x48, 0xcf, - 0x8e, 0x9a, 0x49, 0xd0, 0x8d, 0x9a, 0x4a, 0xcf, 0x8e, 0x9a, 0x4b, 0xd0, - 0x8d, 0x9a, 0x4c, 0xcf, 0x8e, 0x9a, 0x4d, 0xd0, 0x8d, 0x9a, 0x4e, 0xcf, - 0x8e, 0x9a, 0x4f, 0xd0, 0x8d, 0x9a, 0x50, 0xcf, 0x8e, 0x9a, 0x51, 0xd0, - 0x8d, 0x9a, 0x52, 0xcf, 0x8e, 0x9a, 0x53, 0xd0, 0x8d, 0x9a, 0x54, 0xcf, - 0x8e, 0x9a, 0x55, 0xd0, 0x8d, 0x9a, 0x56, 0xcf, 0x8e, 0x9a, 0x57, 0xd0, - 0x8d, 0x9a, 0x58, 0xcf, 0x8e, 0x9a, 0x58, 0xd0, 0x8d, 0x9a, 0x59, 0xcf, - 0x8e, 0x9a, 0x5a, 0xd0, 0x8d, 0x9a, 0x5b, 0xcf, 0x8e, 0x9a, 0x5c, 0xd0, - 0x8d, 0x9a, 0x5d, 0xcf, 0x8e, 0x9a, 0x5d, 0xd0, 0x8d, 0x9a, 0x5e, 0xcf, - 0x8e, 0x9a, 0x5f, 0xd0, 0x8d, 0x9a, 0x60, 0xcf, 0x8e, 0x9a, 0x60, 0xd0, - 0x8d, 0x9a, 0x61, 0xcf, 0x8e, 0x9a, 0x62, 0xd0, 0x8d, 0x9a, 0x63, 0xcf, - 0x8e, 0x9a, 0x63, 0xd0, 0x8d, 0x9a, 0x64, 0xcf, 0x8e, 0x9a, 0x65, 0xd0, - 0x8d, 0x9a, 0x66, 0xcf, 0x8e, 0x9a, 0x66, 0xd0, 0x8d, 0x9a, 0x67, 0xcf, - 0x8e, 0x9a, 0x68, 0xd0, 0x8d, 0x9a, 0x68, 0xcf, 0x8e, 0x9a, 0x69, 0xd0, - 0x8d, 0x9a, 0x6a, 0xcf, 0x8e, 0x9a, 0x6a, 0xd0, 0x8d, 0x9a, 0x6b, 0xcf, - 0x8e, 0x9a, 0x6c, 0xd0, 0x8d, 0x9a, 0x6c, 0xcf, 0x8e, 0x9a, 0x6d, 0xcd, - 0x8e, 0x9a, 0x6e, 0xcf, 0x8e, 0x9a, 0x6e, 0xcd, 0x8e, 0x9a, 0x6f, 0xcf, - 0x8e, 0x9a, 0x70, 0xcd, 0x8e, 0x9a, 0x70, 0xcf, 0x8e, 0x9a, 0x71, 0xcd, - 0x8e, 0x9a, 0x72, 0xcf, 0x8e, 0x9a, 0x72, 0xcd, 0x8e, 0x9a, 0x73, 0xcf, - 0x8e, 0x9a, 0x73, 0xcd, 0x8e, 0x9a, 0x74, 0xcf, 0x8e, 0x9a, 0x75, 0xcd, - 0x8e, 0x9a, 0x75, 0xcf, 0x8e, 0x9a, 0x76, 0xcd, 0x8e, 0x9a, 0x76, 0xcf, - 0x8e, 0x9a, 0x77, 0xcd, 0x8e, 0x9a, 0x78, 0xcf, 0x8e, 0x9a, 0x78, 0xcd, - 0x8e, 0x9a, 0x79, 0xcf, 0x8e, 0x9a, 0x79, 0xcd, 0x8e, 0x9a, 0x7a, 0xcf, - 0x8e, 0x9a, 0x7a, 0xcd, 0x8e, 0x9a, 0x7b, 0xcf, 0x8e, 0x9a, 0x7c, 0xcd, - 0x8e, 0x9a, 0x7c, 0xcf, 0x8e, 0x9a, 0x7d, 0xcd, 0x8e, 0x9a, 0x7d, 0xcf, - 0x8e, 0x9a, 0x7e, 0xcd, 0x8e, 0x9a, 0x7e, 0xcf, 0x8e, 0x9a, 0x7f, 0xcd, - 0x8e, 0x9a, 0x7f, 0xcf, 0x8e, 0x9a, 0x80, 0xcd, 0x8e, 0x9a, 0x81, 0xcf, - 0x8e, 0x9a, 0x81, 0xcd, 0x8e, 0x9a, 0x82, 0xcf, 0x8e, 0x9a, 0x82, 0xcd, - 0x8e, 0x9a, 0x83, 0xcc, 0x8e, 0x9a, 0x83, 0xcd, 0x8e, 0x9a, 0x84, 0xcc, - 0x8e, 0x9a, 0x84, 0xcd, 0x8e, 0x9a, 0x85, 0xcc, 0x8e, 0x9a, 0x85, 0xcd, - 0x8e, 0x9a, 0x86, 0xcc, 0x8e, 0x9a, 0x86, 0xcd, 0x8e, 0x9a, 0x87, 0xcc, - 0x8e, 0x9a, 0x87, 0xcd, 0x8e, 0x9a, 0x88, 0xcc, 0x8e, 0x9a, 0x88, 0xcd, - 0x8e, 0x9a, 0x89, 0xcc, 0x8e, 0x9a, 0x89, 0xcd, 0x8e, 0x9a, 0x8a, 0xcc, - 0x8e, 0x9a, 0x8a, 0xcd, 0x8e, 0x9a, 0x8b, 0xcc, 0x8e, 0x9a, 0x8b, 0xcd, - 0x8e, 0x9a, 0x8c, 0xcc, 0x8e, 0x9a, 0x8c, 0xcd, 0x8e, 0x9a, 0x8d, 0xcc, - 0x8e, 0x9a, 0x8d, 0xcc, 0x8f, 0x9a, 0x8e, 0xcc, 0x8e, 0x9a, 0x8e, 0xcc, - 0x8f, 0x9a, 0x8e, 0xcc, 0x8e, 0x9a, 0x8e, 0xcc, 0x8f, 0x9a, 0x8e, 0xcc, - 0x8f, 0x9a, 0x8e, 0xcc, 0x90, 0x9a, 0x8e, 0xcc, 0x90, 0x98, 0x8e, 0xcc, - 0x91, 0x9a, 0x8e, 0xcc, 0x91, 0x98, 0x8e, 0xcc, 0x92, 0x9a, 0x8e, 0xcc, - 0x92, 0x98, 0x8e, 0xcc, 0x93, 0x9a, 0x8e, 0xcc, 0x93, 0x98, 0x95, 0xcc, - 0x94, 0x95, 0x96, 0xcc, 0x94, 0x95, 0x95, 0xcc, 0x94, 0x95, 0x96, 0xcc, - 0x95, 0x95, 0x95, 0xcc, 0x95, 0x95, 0x96, 0xcc, 0x96, 0x95, 0x96, 0xcc, - 0x96, 0x95, 0x97, 0xcc, 0x97, 0x95, 0x97, 0xcc, 0x97, 0x95, 0x98, 0xcc, - 0x98, 0x95, 0x98, 0xcc, 0x98, 0x95, 0x9a, 0xcc, 0x98, 0x96, 0x9a, 0xcc, - 0x99, 0x96, 0x9a, 0xcc, 0x99, 0x96, 0x9a, 0xcc, 0x9a, 0x96, 0x9a, 0xcc, - 0x9a, 0x96, 0x9a, 0xcc, 0x9a, 0x96, 0x9b, 0xcc, 0x9b, 0x96, 0x9b, 0xcc, - 0x9b, 0x96, 0x9c, 0xcc, 0x9c, 0x96, 0x9c, 0xcc, 0x9c, 0x96, 0x9d, 0xcc, - 0x9d, 0x96, 0x9f, 0xcc, 0x9d, 0x97, 0x9f, 0xcc, 0x9d, 0x97, 0x9f, 0xcc, - 0x9e, 0x97, 0x9f, 0xcc, 0x9e, 0x97, 0x9f, 0xcc, 0x9f, 0x97, 0x9f, 0xcc, - 0x9f, 0x97, 0x9f, 0xcc, 0x9f, 0x97, 0xa0, 0xcc, 0xa0, 0x97, 0xa0, 0xcc, - 0xa0, 0x97, 0xa1, 0xcc, 0xa1, 0x97, 0xa1, 0xcc, 0xa1, 0x97, 0xa3, 0xcc, - 0xa1, 0x98, 0xa2, 0xcc, 0xa2, 0x97, 0xa3, 0xcc, 0xa2, 0x98, 0xa3, 0xcc, - 0xa3, 0x97, 0xa3, 0xcc, 0xa3, 0x98, 0xa3, 0xcc, 0xa3, 0x97, 0xa3, 0xcc, - 0xa4, 0x98, 0xa3, 0xcc, 0xa4, 0x97, 0xa3, 0xcc, 0xa5, 0x98, 0xa3, 0xcc, - 0xa5, 0x97, 0xa3, 0xcc, 0xa5, 0x98, 0xa3, 0xcc, 0xa6, 0x97, 0xa3, 0xcc, - 0xa6, 0x98, 0xa3, 0xcc, 0xa6, 0x97, 0xa3, 0xcc, 0xa7, 0x98, 0xa3, 0xcc, - 0xa7, 0x97, 0xa3, 0xcc, 0xa8, 0x98, 0xa3, 0xcc, 0xa8, 0x97, 0xa3, 0xcc, - 0xa8, 0x98, 0xa3, 0xcc, 0xa9, 0x97, 0xa3, 0xcc, 0xa9, 0x98, 0xa3, 0xcc, - 0xaa, 0x97, 0xa3, 0xcc, 0xaa, 0x98, 0xa3, 0xcc, 0xaa, 0x97, 0xa3, 0xcc, - 0xab, 0x98, 0xa3, 0xcc, 0xab, 0x97, 0xa4, 0xcc, 0xab, 0x95, 0xa3, 0xcc, - 0xac, 0x97, 0xa4, 0xcc, 0xac, 0x95, 0xa3, 0xcc, 0xac, 0x97, 0xa4, 0xcc, - 0xad, 0x95, 0xa3, 0xcc, 0xad, 0x97, 0xa4, 0xcc, 0xae, 0x95, 0xa3, 0xcc, - 0xae, 0x97, 0xa4, 0xcc, 0xae, 0x95, 0xa3, 0xcc, 0xaf, 0x97, 0xa4, 0xcc, - 0xaf, 0x95, 0xa3, 0xcc, 0xaf, 0x97, 0xa4, 0xcc, 0xb0, 0x95, 0xa3, 0xcc, - 0xb0, 0x97, 0xa4, 0xcc, 0xb0, 0x95, 0xa3, 0xcc, 0xb1, 0x97, 0xa4, 0xcc, - 0xb1, 0x95, 0xa3, 0xcc, 0xb2, 0x97, 0xa4, 0xcc, 0xb2, 0x95, 0xa3, 0xcc, - 0xb2, 0x97, 0xa4, 0xcc, 0xb3, 0x95, 0xa3, 0xcc, 0xb3, 0x97, 0xa4, 0xcc, - 0xb3, 0x95, 0xa3, 0xcc, 0xb4, 0x97, 0xa4, 0xcc, 0xb4, 0x95, 0xa3, 0xcc, - 0xb4, 0x97, 0xa4, 0xcc, 0xb5, 0x95, 0xa3, 0xcc, 0xb5, 0x97, 0xa4, 0xcc, - 0xb5, 0x95, 0xa3, 0xcc, 0xb6, 0x97, 0xa4, 0xcc, 0xb6, 0x95, 0xa3, 0xcc, - 0xb6, 0x97, 0xa4, 0xcc, 0xb7, 0x95, 0xa3, 0xcc, 0xb7, 0x97, 0xa4, 0xcc, - 0xb7, 0x95, 0xa3, 0xcc, 0xb8, 0x97, 0xa4, 0xcc, 0xb8, 0x95, 0xa4, 0xcc, - 0xb8, 0x92, 0xa4, 0xcc, 0xb9, 0x95, 0xa4, 0xcc, 0xb9, 0x92, 0xa4, 0xcc, - 0xb9, 0x95, 0xa4, 0xcc, 0xba, 0x92, 0xa4, 0xcc, 0xba, 0x95, 0xa4, 0xcc, - 0xba, 0x92, 0xa4, 0xcc, 0xbb, 0x95, 0xa4, 0xcc, 0xbb, 0x92, 0xa4, 0xcc, - 0xbb, 0x95, 0xa4, 0xcc, 0xbc, 0x92, 0xa4, 0xcc, 0xbc, 0x95, 0xa4, 0xcc, - 0xbc, 0x92, 0xa4, 0xcc, 0xbd, 0x95, 0xa4, 0xcc, 0xbd, 0x92, 0xd2, 0xcc, - 0xbd, 0xa2, 0xd3, 0xcc, 0xbe, 0xa0, 0xd2, 0xcc, 0xbe, 0xa2, 0xd3, 0xcc, - 0xbe, 0xa0, 0xd2, 0xcc, 0xbf, 0xa2, 0xd3, 0xcc, 0xbf, 0xa0, 0xd2, 0xcc, - 0xbf, 0xa2, 0xd3, 0xcc, 0xc0, 0xa0, 0xd2, 0xcc, 0xc0, 0xa2, 0xd3, 0xcc, - 0xc0, 0xa0, 0xd2, 0xcc, 0xc1, 0xa2, 0xd3, 0xcc, 0xc1, 0xa0, 0xd2, 0xcc, - 0xc1, 0xa2, 0xd3, 0xcc, 0xc1, 0xa0, 0xd2, 0xcc, 0xc2, 0xa2, 0xd3, 0xcc, - 0xc2, 0xa0, 0xd3, 0xcc, 0xc2, 0x9d, 0xd3, 0xcc, 0xc3, 0xa0, 0xd3, 0xcc, - 0xc3, 0x9d, 0xd3, 0xcc, 0xc3, 0xa0, 0xd3, 0xcc, 0xc4, 0x9d, 0xd3, 0xcc, - 0xc4, 0xa0, 0xd3, 0xcc, 0xc4, 0x9d, 0xd3, 0xcc, 0xc5, 0xa0, 0xd3, 0xcc, - 0xc5, 0x9d, 0xd3, 0xcc, 0xc5, 0xa0, 0xd3, 0xcc, 0xc6, 0x9d, 0xd3, 0xcc, - 0xc6, 0xa0, 0xd3, 0xcc, 0xc6, 0x9d, 0xd3, 0xcc, 0xc6, 0xa0, 0xd3, 0xcc, - 0xc7, 0x9d, 0xd3, 0xcc, 0xc7, 0xa0, 0xd3, 0xcc, 0xc7, 0x9d, 0xd3, 0xcc, - 0xc8, 0xa0, 0xd3, 0xcc, 0xc8, 0x9d, 0xd3, 0xcc, 0xc8, 0xa0, 0xd3, 0xcc, - 0xc9, 0x9d, 0xd3, 0xcc, 0xc9, 0x9a, 0xd3, 0xcc, 0xc9, 0x9d, 0xd3, 0xcc, - 0xc9, 0x9a, 0xd3, 0xcc, 0xca, 0x9d, 0xd3, 0xcc, 0xca, 0x9a, 0xd3, 0xcc, - 0xca, 0x9d, 0xd3, 0xcc, 0xcb, 0x9a, 0xd3, 0xcc, 0xcb, 0x9d, 0xd3, 0xcc, - 0xcb, 0x9a, 0xd3, 0xcc, 0xcc, 0x9d, 0xd3, 0xcc, 0xcc, 0x9a, 0xd3, 0xcc, - 0xcc, 0x9d, 0xd3, 0xcc, 0xcc, 0x9a, 0xd3, 0xcc, 0xcd, 0x9d, 0xd3, 0xcc, - 0xcd, 0x9a, 0xd3, 0xcc, 0xcd, 0x9d, 0xd3, 0xcc, 0xce, 0x9a, 0xd3, 0xcc, - 0xce, 0x9d, 0xd3, 0xcc, 0xce, 0x9a, 0xd3, 0xcc, 0xce, 0x9d, 0xd3, 0xcc, - 0xcf, 0x9a, 0xd3, 0xcc, 0xcf, 0x9d, 0xd3, 0xcc, 0xcf, 0x9a, 0xd3, 0xcc, - 0xd0, 0x9d, 0xd3, 0xcc, 0xd0, 0x9a, 0xd3, 0xcc, 0xd0, 0x9d, 0xd3, 0xcc, - 0xd0, 0x9a, 0xd3, 0xcc, 0xd1, 0x9d, 0xd3, 0xcc, 0xd1, 0x9a, 0xd4, 0xcc, - 0xd1, 0x9a, 0xd3, 0xcc, 0xd2, 0x9a, 0xd4, 0xcc, 0xd2, 0x9a, 0xd3, 0xcc, - 0xd2, 0x9a, 0xd4, 0xcc, 0xd2, 0x9a, 0xd3, 0xcc, 0xd3, 0x9a, 0xd4, 0xcc, - 0xd3, 0x9a, 0xd3, 0xcb, 0xd3, 0x9a, 0xd4, 0xcc, 0xd3, 0x9a, 0xd4, 0xcb, - 0xd3, 0x9a, 0xd4, 0xcc, 0xd3, 0x9a, 0xd4, 0xcb, 0xd3, 0x9a, 0xd5, 0xcc, - 0xd3, 0x9a, 0xd5, 0xcb, 0xd3, 0x9a, 0xd5, 0xcc, 0xd3, 0x9a, 0xd6, 0xcb, - 0xd3, 0x9a, 0xd6, 0xcc, 0xd3, 0x9a, 0xd6, 0xcb, 0xd3, 0x9a, 0xd6, 0xcc, - 0xd3, 0x9a, 0xd7, 0xcb, 0xd3, 0x9a, 0xd7, 0xc8, 0xd8, 0x9a, 0xd7, 0xc8, - 0xd8, 0x9a, 0xd7, 0xc8, 0xd8, 0x9a, 0xd8, 0xc8, 0xd8, 0x9a, 0xd8, 0xc8, - 0xd8, 0x9a, 0xd8, 0xc8, 0xd8, 0x9a, 0xd9, 0xc8, 0xd9, 0x9a, 0xd9, 0xc8, - 0xd9, 0x9a, 0xd9, 0xc8, 0xd9, 0x9a, 0xd9, 0xc9, 0xdb, 0x9a, 0xda, 0xc9, - 0xdb, 0x9a, 0xda, 0xc9, 0xdb, 0x9a, 0xda, 0xc9, 0xdb, 0x9a, 0xda, 0xc9, - 0xdb, 0x9a, 0xdb, 0xc9, 0xdb, 0x9a, 0xdb, 0xc9, 0xdb, 0x9a, 0xdb, 0xc9, - 0xdb, 0x9a, 0xdb, 0xc9, 0xdb, 0x9a, 0xdc, 0xc9, 0xdc, 0x9a, 0xdc, 0xc9, - 0xdc, 0x9a, 0xdc, 0xc9, 0xdc, 0x9a, 0xdd, 0xc9, 0xdd, 0x9a, 0xdd, 0xc9, - 0xde, 0x9a, 0xdd, 0xc9, 0xde, 0x9a, 0xdd, 0xc9, 0xde, 0x9a, 0xde, 0xc9, - 0xde, 0x9a, 0xde, 0xc9, 0xde, 0x9a, 0xde, 0xc9, 0xde, 0x9a, 0xde, 0xc9, - 0xde, 0x9a, 0xdf, 0xc9, 0xdf, 0x9a, 0xdf, 0xc9, 0xdf, 0x9a, 0xdf, 0xc9, - 0xdf, 0x9a, 0xdf, 0xc9, 0xdf, 0x9a, 0xe0, 0xca, 0xe1, 0x9a, 0xe0, 0xca, - 0xe1, 0x9a, 0xe0, 0xca, 0xe1, 0x9a, 0xe1, 0xca, 0xe1, 0x9a, 0xe1, 0xca, - 0xe1, 0x9a, 0xe1, 0xca, 0xe1, 0x9a, 0xe1, 0xca, 0xe1, 0x9a, 0xe2, 0xca, - 0xe2, 0x9a, 0xe2, 0xca, 0xe2, 0x9a, 0xe2, 0xca, 0xe2, 0x9a, 0xe2, 0xca, - 0xe2, 0x9a, 0xe3, 0xcb, 0xe4, 0x9a, 0xe3, 0xcb, 0xe4, 0x9a, 0xe3, 0xcb, - 0xe4, 0x9a, 0xe3, 0xcb, 0xe4, 0x9a, 0xe4, 0xcb, 0xe4, 0x9a, 0xe4, 0xcb, - 0xe4, 0x9a, 0xe4, 0xcb, 0xe4, 0x9a, 0xe4, 0xcb, 0xe4, 0x9a, 0xe5, 0xcb, - 0xe5, 0x9a, 0xe5, 0xcb, 0xe5, 0x9a, 0xe5, 0xcb, 0xe5, 0x9a, 0xe5, 0xcb, - 0xe5, 0x9a, 0xe6, 0xcb, 0xe6, 0x9a, 0xe6, 0xcb, 0xe6, 0x9a, 0xe6, 0xcb, - 0xe7, 0x9a, 0xe6, 0xcb, 0xe6, 0x9a, 0xe7, 0xcb, 0xe7, 0x9a, 0xe7, 0xcb, - 0xe7, 0x9a, 0xe7, 0xcb, 0xe7, 0x9a, 0xe7, 0xcb, 0xe7, 0x9a, 0xe8, 0xcb, - 0xe8, 0x9a, 0xe8, 0xcb, 0xe8, 0x9a, 0xe8, 0xcb, 0xe8, 0x9a, 0xe8, 0xcb, - 0xe8, 0x9a, 0xe9, 0xcb, 0xe9, 0x9a, 0xe9, 0xcc, 0xe9, 0x9b, 0xe9, 0xcc, - 0xe9, 0x9b, 0xe9, 0xcc, 0xe9, 0x9b, 0xea, 0xcc, 0xea, 0x9b, 0xea, 0xcc, - 0xea, 0x9b, 0xea, 0xcc, 0xea, 0x9b, 0xea, 0xcc, 0xea, 0x9b, 0xeb, 0xcc, - 0xeb, 0x9b, 0xeb, 0xcc, 0xeb, 0x9b, 0xeb, 0xcc, 0xeb, 0x9b, 0xeb, 0xcc, - 0xeb, 0x9b, 0xeb, 0xcc, 0xec, 0x9b, 0xeb, 0xcc, 0xec, 0x9b, 0xeb, 0xcc, - 0xec, 0x9b, 0xeb, 0xcc, 0xec, 0x9b, 0xee, 0xcc, 0xec, 0x9a, 0xee, 0xcc, - 0xed, 0x9a, 0xee, 0xcc, 0xed, 0x9a, 0xee, 0xcc, 0xed, 0x9a, 0xee, 0xcc, - 0xed, 0x9a, 0xee, 0xcc, 0xee, 0x9a, 0xee, 0xcb, 0xee, 0x9a, 0xee, 0xcc, - 0xee, 0x9a, 0xee, 0xcb, 0xee, 0x9a, 0xef, 0xcc, 0xee, 0x9a, 0xef, 0xcb, - 0xee, 0x9a, 0xef, 0xcc, 0xee, 0x9a, 0xef, 0xcb, 0xee, 0x9a, 0xf0, 0xcc, - 0xee, 0x9a, 0xf0, 0xcb, 0xee, 0x9a, 0xf0, 0xcc, 0xee, 0x9a, 0xf0, 0xcb, - 0xee, 0x9a, 0xf1, 0xcc, 0xee, 0x9a, 0xf1, 0xcb, 0xee, 0x9a, 0xf1, 0xcc, - 0xee, 0x9a, 0xf1, 0xcb, 0xee, 0x9a, 0xf2, 0xcc, 0xee, 0x9a, 0xf2, 0xcb, - 0xee, 0x9a, 0xf2, 0xcc, 0xee, 0x9a, 0xf2, 0xcb, 0xee, 0x9a, 0xf2, 0xc6, - 0xf3, 0x9a, 0xf3, 0xc6, 0xf3, 0x9a, 0xf3, 0xc6, 0xf3, 0x9a, 0xf3, 0xc6, - 0xf3, 0x9a, 0xf3, 0xc6, 0xf3, 0x9a, 0xf4, 0xc6, 0xf4, 0x9a, 0xf4, 0xc6, - 0xf4, 0x9a, 0xf4, 0xc7, 0xf6, 0x9a, 0xf4, 0xc7, 0xf6, 0x9a, 0xf5, 0xc7, - 0xf6, 0x9a, 0xf5, 0xc7, 0xf6, 0x9a, 0xf5, 0xc7, 0xf6, 0x9a, 0xf5, 0xc7, - 0xf6, 0x9a, 0xf5, 0xc7, 0xf6, 0x9a, 0xf6, 0xc7, 0xf6, 0x9a, 0xf6, 0xc7, - 0xf6, 0x9a, 0xf6, 0xc7, 0xf6, 0x9a, 0xf6, 0xc7, 0xf6, 0x9a, 0xf7, 0xc7, - 0xf7, 0x9a, 0xf7, 0xc7, 0xf7, 0x9a, 0xf7, 0xc7, 0xf7, 0x9a, 0xf7, 0xc7, - 0xf7, 0x9a, 0xf8, 0xc7, 0xf7, 0x9a, 0xf8, 0xc7, 0xf7, 0x9a, 0xf8, 0xc7, - 0xf7, 0x9a, 0xf8, 0xc7, 0xf7, 0x9a, 0xf8, 0xc7, 0xf7, 0x9a, 0xf9, 0xc7, - 0xf7, 0x9a, 0xf9, 0xc7, 0xf7, 0x9a, 0xf9, 0xc7, 0xf7, 0x9a, 0xf9, 0xc7, - 0xf7, 0x9a, 0xfa, 0xc7, 0xf7, 0x9a, 0xfa, 0xc7, 0xf7, 0x9a, 0xfa, 0xc7, - 0xf7, 0x9a, 0xfa, 0xc7, 0xf7, 0x9a, 0xfa, 0xc7, 0xf7, 0x9a, 0xfb, 0xc7, - 0xf7, 0x9a, 0xfb, 0xc7, 0xf7, 0x9a, 0xfb, 0xc7, 0xf7, 0x9a, 0xfb, 0xc7, - 0xf7, 0x9a, 0xfc, 0xc7, 0xf7, 0x9a, 0xfc, 0xc7, 0xf7, 0x9a, 0xfc, 0xc7, - 0xf7, 0x9a, 0xfc, 0xc7, 0xf7, 0x9a, 0xfc, 0xc7, 0xf7, 0x9a, 0xfd, 0xc7, - 0xf7, 0x9a, 0xfd, 0xc7, 0xf7, 0x9a, 0xfd, 0xc7, 0xf7, 0x9a, 0xfd, 0xc7, - 0xf7, 0x9a, 0xfe, 0xc7, 0xf7, 0x9a, 0xfe, 0xc7, 0xf7, 0x9a, 0xfe, 0xc7, - 0xf7, 0x9a, 0xfe, 0xc7, 0xf7, 0x9a, 0xfe, 0xc7, 0xf7, 0x9a, 0xff, 0xc7, - 0xf7, 0x9a, 0xff, 0xc7, 0xf7, 0x9a, 0x03, 0xd4, 0x8c, 0x9a, 0x0a, 0xd2, - 0x8d, 0x9a, 0x0f, 0xd4, 0x8c, 0x9a, 0x14, 0xd2, 0x8d, 0x9a, 0x17, 0xd1, - 0x8d, 0x9a, 0x1b, 0xd2, 0x8d, 0x9a, 0x1e, 0xd1, 0x8d, 0x9a, 0x20, 0xd2, - 0x8d, 0x9a, 0x23, 0xd1, 0x8d, 0x9a, 0x25, 0xd2, 0x8d, 0x9a, 0x27, 0xd1, - 0x8d, 0x9a, 0x29, 0xd2, 0x8d, 0x9a, 0x2b, 0xd1, 0x8d, 0x9a, 0x2d, 0xd2, - 0x8d, 0x9a, 0x2f, 0xd1, 0x8d, 0x9a, 0x31, 0xd2, 0x8d, 0x9a, 0x32, 0xd1, - 0x8d, 0x9a, 0x34, 0xd2, 0x8d, 0x9a, 0x35, 0xd1, 0x8d, 0x9a, 0x37, 0xd2, - 0x8d, 0x9a, 0x38, 0xd1, 0x8d, 0x9a, 0x3a, 0xd2, 0x8d, 0x9a, 0x3b, 0xd1, - 0x8d, 0x9a, 0x3c, 0xd2, 0x8d, 0x9a, 0x3e, 0xd1, 0x8d, 0x9a, 0x3f, 0xd2, - 0x8d, 0x9a, 0x40, 0xd1, 0x8d, 0x9a, 0x42, 0xd2, 0x8d, 0x9a, 0x43, 0xd1, - 0x8d, 0x9a, 0x44, 0xd2, 0x8d, 0x9a, 0x45, 0xd1, 0x8d, 0x9a, 0x46, 0xd2, - 0x8d, 0x9a, 0x47, 0xd1, 0x8d, 0x9a, 0x48, 0xd2, 0x8d, 0x9a, 0x49, 0xd1, - 0x8d, 0x9a, 0x4a, 0xd2, 0x8d, 0x9a, 0x4b, 0xd1, 0x8d, 0x9a, 0x4c, 0xd2, - 0x8d, 0x9a, 0x4d, 0xd1, 0x8d, 0x9a, 0x4e, 0xd2, 0x8d, 0x9a, 0x4f, 0xd1, - 0x8d, 0x9a, 0x50, 0xcf, 0x8e, 0x9a, 0x51, 0xd1, 0x8d, 0x9a, 0x52, 0xcf, - 0x8e, 0x9a, 0x53, 0xd1, 0x8d, 0x9a, 0x54, 0xcf, 0x8e, 0x9a, 0x55, 0xd1, - 0x8d, 0x9a, 0x56, 0xcf, 0x8e, 0x9a, 0x57, 0xd1, 0x8d, 0x9a, 0x58, 0xcf, - 0x8e, 0x9a, 0x58, 0xd1, 0x8d, 0x9a, 0x59, 0xcf, 0x8e, 0x9a, 0x5a, 0xd1, - 0x8d, 0x9a, 0x5b, 0xcf, 0x8e, 0x9a, 0x5c, 0xd1, 0x8d, 0x9a, 0x5d, 0xcf, - 0x8e, 0x9a, 0x5d, 0xd1, 0x8d, 0x9a, 0x5e, 0xcf, 0x8e, 0x9a, 0x5f, 0xd1, - 0x8d, 0x9a, 0x60, 0xcf, 0x8e, 0x9a, 0x60, 0xd1, 0x8d, 0x9a, 0x61, 0xcf, - 0x8e, 0x9a, 0x62, 0xd1, 0x8d, 0x9a, 0x63, 0xcf, 0x8e, 0x9a, 0x63, 0xd1, - 0x8d, 0x9a, 0x64, 0xcf, 0x8e, 0x9a, 0x65, 0xd1, 0x8d, 0x9a, 0x66, 0xcf, - 0x8e, 0x9a, 0x66, 0xd1, 0x8d, 0x9a, 0x67, 0xcf, 0x8e, 0x9a, 0x68, 0xd1, - 0x8d, 0x9a, 0x68, 0xcf, 0x8e, 0x9a, 0x69, 0xd1, 0x8d, 0x9a, 0x6a, 0xcf, - 0x8e, 0x9a, 0x6a, 0xcd, 0x8e, 0x9a, 0x6b, 0xcf, 0x8e, 0x9a, 0x6c, 0xcd, - 0x8e, 0x9a, 0x6c, 0xcf, 0x8e, 0x9a, 0x6d, 0xcd, 0x8e, 0x9a, 0x6e, 0xcf, - 0x8e, 0x9a, 0x6e, 0xcd, 0x8e, 0x9a, 0x6f, 0xcf, 0x8e, 0x9a, 0x70, 0xcd, - 0x8e, 0x9a, 0x70, 0xcf, 0x8e, 0x9a, 0x71, 0xcd, 0x8e, 0x9a, 0x72, 0xcf, - 0x8e, 0x9a, 0x72, 0xcd, 0x8e, 0x9a, 0x73, 0xcf, 0x8e, 0x9a, 0x73, 0xcd, - 0x8e, 0x9a, 0x74, 0xcf, 0x8e, 0x9a, 0x75, 0xcd, 0x8e, 0x9a, 0x75, 0xcf, - 0x8e, 0x9a, 0x76, 0xcd, 0x8e, 0x9a, 0x76, 0xcf, 0x8e, 0x9a, 0x77, 0xcd, - 0x8e, 0x9a, 0x78, 0xcf, 0x8e, 0x9a, 0x78, 0xcd, 0x8e, 0x9a, 0x79, 0xcf, - 0x8e, 0x9a, 0x79, 0xcd, 0x8e, 0x9a, 0x7a, 0xcf, 0x8e, 0x9a, 0x7a, 0xcd, - 0x8e, 0x9a, 0x7b, 0xcf, 0x8e, 0x9a, 0x7c, 0xcd, 0x8e, 0x9a, 0x7c, 0xcf, - 0x8e, 0x9a, 0x7d, 0xcd, 0x8e, 0x9a, 0x7d, 0xcf, 0x8e, 0x9a, 0x7e, 0xcd, - 0x8e, 0x9a, 0x7e, 0xcf, 0x8e, 0x9a, 0x7f, 0xcd, 0x8e, 0x9a, 0x7f, 0xcf, - 0x8e, 0x9a, 0x80, 0xcd, 0x8e, 0x9a, 0x81, 0xcf, 0x8e, 0x9a, 0x81, 0xcd, - 0x8e, 0x9a, 0x82, 0xcf, 0x8e, 0x9a, 0x82, 0xcd, 0x8e, 0x9a, 0x83, 0xcc, - 0x8e, 0x9a, 0x83, 0xcd, 0x8e, 0x9a, 0x84, 0xcc, 0x8e, 0x9a, 0x84, 0xcd, - 0x8e, 0x9a, 0x85, 0xcc, 0x8e, 0x9a, 0x85, 0xcd, 0x8e, 0x9a, 0x86, 0xcc, - 0x8e, 0x9a, 0x86, 0xcd, 0x8e, 0x9a, 0x87, 0xcc, 0x8e, 0x9a, 0x87, 0xcd, - 0x8e, 0x9a, 0x88, 0xcc, 0x8e, 0x9a, 0x88, 0xcd, 0x8e, 0x9a, 0x89, 0xcc, - 0x8e, 0x9a, 0x89, 0xcd, 0x8e, 0x9a, 0x8a, 0xcc, 0x8e, 0x9a, 0x8a, 0xcd, - 0x8e, 0x9a, 0x8b, 0xcc, 0x8e, 0x9a, 0x8b, 0xcd, 0x8e, 0x9a, 0x8c, 0xcc, - 0x8e, 0x9a, 0x8c, 0xcd, 0x8e, 0x9a, 0x8d, 0xcc, 0x8e, 0x9a, 0x8d, 0xcd, - 0x8e, 0x9a, 0x8e, 0xcc, 0x8e, 0x9a, 0x8e, 0xcd, 0x8e, 0x9a, 0x8e, 0xcc, - 0x8e, 0x9a, 0x8e, 0xcc, 0x8f, 0x9a, 0x8e, 0xcc, 0x8f, 0x9a, 0x8e, 0xcc, - 0x90, 0x9a, 0x8e, 0xcc, 0x90, 0x9a, 0x8e, 0xcc, 0x91, 0x9a, 0x8e, 0xcc, - 0x91, 0x9a, 0x8e, 0xcc, 0x92, 0x9a, 0x8e, 0xcc, 0x92, 0x97, 0x8e, 0xcc, - 0x93, 0x9a, 0x8e, 0xcc, 0x93, 0x97, 0x94, 0xcc, 0x94, 0x94, 0x94, 0xcc, - 0x94, 0x94, 0x94, 0xcc, 0x94, 0x94, 0x98, 0xcc, 0x95, 0x95, 0x98, 0xcc, - 0x95, 0x95, 0x98, 0xcc, 0x96, 0x95, 0x98, 0xcc, 0x96, 0x95, 0x98, 0xcc, - 0x97, 0x95, 0x98, 0xcc, 0x97, 0x95, 0x98, 0xcc, 0x98, 0x95, 0x98, 0xcc, - 0x98, 0x95, 0x98, 0xcc, 0x98, 0x95, 0x99, 0xcc, 0x99, 0x95, 0x99, 0xcc, - 0x99, 0x95, 0x9a, 0xcc, 0x9a, 0x95, 0x9a, 0xcc, 0x9a, 0x95, 0x9c, 0xcc, - 0x9a, 0x96, 0x9d, 0xcc, 0x9b, 0x96, 0x9c, 0xcc, 0x9b, 0x96, 0x9d, 0xcc, - 0x9c, 0x96, 0x9c, 0xcc, 0x9c, 0x96, 0x9d, 0xcc, 0x9d, 0x96, 0x9d, 0xcc, - 0x9d, 0x96, 0x9d, 0xcc, 0x9d, 0x96, 0x9e, 0xcc, 0x9e, 0x96, 0x9e, 0xcc, - 0x9e, 0x96, 0x9f, 0xcc, 0x9f, 0x96, 0xa1, 0xcc, 0x9f, 0x97, 0xa1, 0xcc, - 0x9f, 0x97, 0xa1, 0xcc, 0xa0, 0x97, 0xa1, 0xcc, 0xa0, 0x97, 0xa1, 0xcc, - 0xa1, 0x97, 0xa1, 0xcc, 0xa1, 0x97, 0xa1, 0xcc, 0xa1, 0x97, 0xa2, 0xcc, - 0xa2, 0x97, 0xa2, 0xcc, 0xa2, 0x97, 0xa3, 0xcc, 0xa3, 0x97, 0xa3, 0xcc, - 0xa3, 0x97, 0xa3, 0xcc, 0xa3, 0x97, 0xa3, 0xcc, 0xa4, 0x97, 0xa3, 0xcc, - 0xa4, 0x97, 0xa3, 0xcc, 0xa5, 0x97, 0xa3, 0xcc, 0xa5, 0x97, 0xa3, 0xcc, - 0xa5, 0x97, 0xa3, 0xcc, 0xa6, 0x97, 0xa3, 0xcc, 0xa6, 0x97, 0xa3, 0xcc, - 0xa6, 0x97, 0xa3, 0xcc, 0xa7, 0x97, 0xa3, 0xcc, 0xa7, 0x97, 0xa3, 0xcc, - 0xa8, 0x97, 0xa3, 0xcc, 0xa8, 0x97, 0xa3, 0xcc, 0xa8, 0x97, 0xa3, 0xcc, - 0xa9, 0x97, 0xa3, 0xcc, 0xa9, 0x97, 0xa3, 0xcc, 0xaa, 0x97, 0xa3, 0xcc, - 0xaa, 0x97, 0xa3, 0xcc, 0xaa, 0x97, 0xa3, 0xcc, 0xab, 0x97, 0xa3, 0xcc, - 0xab, 0x97, 0xa3, 0xcc, 0xab, 0x97, 0xa3, 0xcc, 0xac, 0x97, 0xa3, 0xcc, - 0xac, 0x97, 0xa3, 0xcc, 0xac, 0x97, 0xa3, 0xcc, 0xad, 0x97, 0xa3, 0xcc, - 0xad, 0x97, 0xa3, 0xcc, 0xae, 0x97, 0xa3, 0xcc, 0xae, 0x97, 0xa4, 0xcc, - 0xae, 0x94, 0xa3, 0xcc, 0xaf, 0x97, 0xa4, 0xcc, 0xaf, 0x94, 0xa3, 0xcc, - 0xaf, 0x97, 0xa4, 0xcc, 0xb0, 0x94, 0xa3, 0xcc, 0xb0, 0x97, 0xa4, 0xcc, - 0xb0, 0x94, 0xa3, 0xcc, 0xb1, 0x97, 0xa4, 0xcc, 0xb1, 0x94, 0xa3, 0xcc, - 0xb2, 0x97, 0xa4, 0xcc, 0xb2, 0x94, 0xa3, 0xcc, 0xb2, 0x97, 0xa4, 0xcc, - 0xb3, 0x94, 0xa3, 0xcc, 0xb3, 0x97, 0xa4, 0xcc, 0xb3, 0x94, 0xa3, 0xcc, - 0xb4, 0x97, 0xa4, 0xcc, 0xb4, 0x94, 0xa3, 0xcc, 0xb4, 0x97, 0xa4, 0xcc, - 0xb5, 0x94, 0xa3, 0xcc, 0xb5, 0x97, 0xa4, 0xcc, 0xb5, 0x94, 0xa3, 0xcc, - 0xb6, 0x97, 0xa4, 0xcc, 0xb6, 0x94, 0xa3, 0xcc, 0xb6, 0x97, 0xa4, 0xcc, - 0xb7, 0x94, 0xa3, 0xcc, 0xb7, 0x97, 0xa4, 0xcc, 0xb7, 0x94, 0xa3, 0xcc, - 0xb8, 0x97, 0xa4, 0xcc, 0xb8, 0x94, 0xa4, 0xcc, 0xb8, 0x92, 0xa4, 0xcc, - 0xb9, 0x94, 0xa4, 0xcc, 0xb9, 0x92, 0xa4, 0xcc, 0xb9, 0x94, 0xa4, 0xcc, - 0xba, 0x92, 0xa4, 0xcc, 0xba, 0x94, 0xa4, 0xcc, 0xba, 0x92, 0xa4, 0xcc, - 0xbb, 0x94, 0xa4, 0xcc, 0xbb, 0x92, 0xa4, 0xcc, 0xbb, 0x94, 0xa4, 0xcc, - 0xbc, 0x92, 0xa4, 0xcc, 0xbc, 0x94, 0xa4, 0xcc, 0xbc, 0x92, 0xa4, 0xcc, - 0xbd, 0x94, 0xa4, 0xcc, 0xbd, 0x92, 0xd2, 0xcc, 0xbd, 0xa2, 0xd3, 0xcc, - 0xbe, 0x9f, 0xd2, 0xcc, 0xbe, 0xa2, 0xd3, 0xcc, 0xbe, 0x9f, 0xd2, 0xcc, - 0xbf, 0xa2, 0xd3, 0xcc, 0xbf, 0x9f, 0xd2, 0xcc, 0xbf, 0xa2, 0xd3, 0xcc, - 0xc0, 0x9f, 0xd2, 0xcc, 0xc0, 0xa2, 0xd3, 0xcc, 0xc0, 0x9f, 0xd2, 0xcc, - 0xc1, 0xa2, 0xd3, 0xcc, 0xc1, 0x9f, 0xd3, 0xcc, 0xc1, 0x9c, 0xd3, 0xcc, - 0xc1, 0x9f, 0xd3, 0xcc, 0xc2, 0x9c, 0xd3, 0xcc, 0xc2, 0x9f, 0xd3, 0xcc, - 0xc2, 0x9c, 0xd3, 0xcc, 0xc3, 0x9f, 0xd3, 0xcc, 0xc3, 0x9c, 0xd3, 0xcc, - 0xc3, 0x9f, 0xd3, 0xcc, 0xc4, 0x9c, 0xd3, 0xcc, 0xc4, 0x9f, 0xd3, 0xcc, - 0xc4, 0x9c, 0xd3, 0xcc, 0xc5, 0x9f, 0xd3, 0xcc, 0xc5, 0x9c, 0xd3, 0xcc, - 0xc5, 0x9f, 0xd3, 0xcc, 0xc6, 0x9c, 0xd3, 0xcc, 0xc6, 0x9f, 0xd3, 0xcc, - 0xc6, 0x9c, 0xd3, 0xcc, 0xc6, 0x9f, 0xd3, 0xcc, 0xc7, 0x9c, 0xd3, 0xcc, - 0xc7, 0x9f, 0xd3, 0xcc, 0xc7, 0x9c, 0xd3, 0xcc, 0xc8, 0x9f, 0xd3, 0xcc, - 0xc8, 0x9c, 0xd3, 0xcc, 0xc8, 0x9f, 0xd3, 0xcc, 0xc9, 0x9c, 0xd3, 0xcc, - 0xc9, 0x9f, 0xd3, 0xcc, 0xc9, 0x9c, 0xd3, 0xcc, 0xc9, 0x9f, 0xd3, 0xcc, - 0xca, 0x9c, 0xd3, 0xcc, 0xca, 0x9f, 0xd3, 0xcc, 0xca, 0x9c, 0xd3, 0xcc, - 0xcb, 0x9f, 0xd3, 0xcc, 0xcb, 0x9c, 0xd3, 0xcc, 0xcb, 0x9f, 0xd3, 0xcc, - 0xcc, 0x9c, 0xd3, 0xcc, 0xcc, 0x9f, 0xd3, 0xcc, 0xcc, 0x9c, 0xd3, 0xcc, - 0xcc, 0x9a, 0xd3, 0xcc, 0xcd, 0x9c, 0xd3, 0xcc, 0xcd, 0x9a, 0xd3, 0xcc, - 0xcd, 0x9c, 0xd3, 0xcc, 0xce, 0x9a, 0xd3, 0xcc, 0xce, 0x9c, 0xd3, 0xcc, - 0xce, 0x9a, 0xd3, 0xcc, 0xce, 0x9c, 0xd3, 0xcc, 0xcf, 0x9a, 0xd3, 0xcc, - 0xcf, 0x9c, 0xd3, 0xcc, 0xcf, 0x9a, 0xd3, 0xcc, 0xd0, 0x9c, 0xd3, 0xcc, - 0xd0, 0x9a, 0xd3, 0xcc, 0xd0, 0x9c, 0xd3, 0xcc, 0xd0, 0x9a, 0xd3, 0xcc, - 0xd1, 0x9c, 0xd3, 0xcc, 0xd1, 0x9a, 0xd3, 0xcc, 0xd1, 0x9c, 0xd3, 0xcc, - 0xd2, 0x9a, 0xd3, 0xcc, 0xd2, 0x9c, 0xd3, 0xcc, 0xd2, 0x9a, 0xd4, 0xcc, - 0xd2, 0x9a, 0xd3, 0xcc, 0xd3, 0x9a, 0xd4, 0xcc, 0xd3, 0x9a, 0xd3, 0xcc, - 0xd3, 0x9a, 0xd4, 0xcc, 0xd3, 0x9a, 0xd4, 0xcc, 0xd3, 0x9a, 0xd4, 0xcc, - 0xd3, 0x9a, 0xd4, 0xcc, 0xd3, 0x9a, 0xd5, 0xcc, 0xd3, 0x9a, 0xd5, 0xcc, - 0xd3, 0x9a, 0xd5, 0xcc, 0xd3, 0x9a, 0xd6, 0xcc, 0xd3, 0x9a, 0xd6, 0xcc, - 0xd3, 0x9a, 0xd6, 0xcc, 0xd3, 0x9a, 0xd6, 0xcc, 0xd3, 0x9a, 0xd7, 0xcc, - 0xd3, 0x9a, 0xd7, 0xc8, 0xd7, 0x9a, 0xd7, 0xc8, 0xd7, 0x9a, 0xd7, 0xc8, - 0xd7, 0x9a, 0xd8, 0xc9, 0xd9, 0x9a, 0xd8, 0xc9, 0xda, 0x9a, 0xd8, 0xc9, - 0xd9, 0x9a, 0xd9, 0xc9, 0xda, 0x9a, 0xd9, 0xc9, 0xd9, 0x9a, 0xd9, 0xc9, - 0xda, 0x9a, 0xd9, 0xc9, 0xd9, 0x9a, 0xda, 0xc9, 0xda, 0x9a, 0xda, 0xc9, - 0xda, 0x9a, 0xda, 0xc9, 0xda, 0x9a, 0xda, 0xc9, 0xda, 0x9a, 0xdb, 0xc9, - 0xdc, 0x9a, 0xdb, 0xc9, 0xdd, 0x9a, 0xdb, 0xc9, 0xdc, 0x9a, 0xdb, 0xc9, - 0xdd, 0x9a, 0xdc, 0xc9, 0xdc, 0x9a, 0xdc, 0xc9, 0xdd, 0x9a, 0xdc, 0xc9, - 0xdc, 0x9a, 0xdd, 0xc9, 0xdd, 0x9a, 0xdd, 0xc9, 0xdd, 0x9a, 0xdd, 0xc9, - 0xdd, 0x9a, 0xdd, 0xc9, 0xdd, 0x9a, 0xde, 0xc9, 0xde, 0x9a, 0xde, 0xc9, - 0xde, 0x9a, 0xde, 0xca, 0xdf, 0x9a, 0xde, 0xca, 0xdf, 0x9a, 0xdf, 0xca, - 0xdf, 0x9a, 0xdf, 0xca, 0xdf, 0x9a, 0xdf, 0xca, 0xdf, 0x9a, 0xdf, 0xca, - 0xdf, 0x9a, 0xe0, 0xca, 0xe0, 0x9a, 0xe0, 0xca, 0xe0, 0x9a, 0xe0, 0xca, - 0xe0, 0x9a, 0xe1, 0xca, 0xe1, 0x9a, 0xe1, 0xca, 0xe1, 0x9a, 0xe1, 0xca, - 0xe2, 0x9a, 0xe1, 0xca, 0xe2, 0x9a, 0xe2, 0xca, 0xe2, 0x9a, 0xe2, 0xca, - 0xe2, 0x9a, 0xe2, 0xca, 0xe2, 0x9a, 0xe2, 0xca, 0xe2, 0x9a, 0xe3, 0xca, - 0xe3, 0x9a, 0xe3, 0xca, 0xe3, 0x9a, 0xe3, 0xca, 0xe3, 0x9a, 0xe3, 0xca, - 0xe3, 0x9a, 0xe4, 0xca, 0xe4, 0x9a, 0xe4, 0xcb, 0xe5, 0x9a, 0xe4, 0xcb, - 0xe5, 0x9a, 0xe4, 0xcb, 0xe5, 0x9a, 0xe5, 0xcb, 0xe5, 0x9a, 0xe5, 0xcb, - 0xe5, 0x9a, 0xe5, 0xcb, 0xe5, 0x9a, 0xe5, 0xcb, 0xe5, 0x9a, 0xe6, 0xcb, - 0xe6, 0x9a, 0xe6, 0xcb, 0xe6, 0x9a, 0xe6, 0xcb, 0xe6, 0x9a, 0xe6, 0xcb, - 0xe6, 0x9a, 0xe7, 0xcb, 0xe7, 0x9a, 0xe7, 0xcb, 0xe7, 0x9a, 0xe7, 0xcc, - 0xe8, 0x9a, 0xe7, 0xcc, 0xe8, 0x9a, 0xe8, 0xcc, 0xe8, 0x9a, 0xe8, 0xcc, - 0xe8, 0x9a, 0xe8, 0xcc, 0xe8, 0x9a, 0xe8, 0xcc, 0xe8, 0x9a, 0xe9, 0xcc, - 0xe9, 0x9a, 0xe9, 0xcc, 0xe9, 0x9a, 0xe9, 0xcc, 0xe9, 0x9a, 0xe9, 0xcc, - 0xe9, 0x9a, 0xea, 0xcc, 0xea, 0x9a, 0xea, 0xcc, 0xea, 0x9a, 0xea, 0xcc, - 0xea, 0x9a, 0xea, 0xcc, 0xea, 0x9b, 0xeb, 0xcc, 0xeb, 0x9b, 0xeb, 0xcc, - 0xeb, 0x9b, 0xeb, 0xcc, 0xeb, 0x9b, 0xeb, 0xcc, 0xeb, 0x9b, 0xeb, 0xcc, - 0xec, 0x9b, 0xeb, 0xcc, 0xec, 0x9b, 0xeb, 0xcc, 0xec, 0x9b, 0xeb, 0xcc, - 0xec, 0x9b, 0xee, 0xcc, 0xec, 0x9a, 0xee, 0xcc, 0xed, 0x9a, 0xee, 0xcc, - 0xed, 0x9a, 0xee, 0xcc, 0xed, 0x9a, 0xee, 0xcc, 0xed, 0x9a, 0xee, 0xcc, - 0xee, 0x9a, 0xee, 0xcc, 0xed, 0x9a, 0xee, 0xcc, 0xee, 0x9a, 0xee, 0xcc, - 0xed, 0x9a, 0xef, 0xcc, 0xee, 0x9a, 0xef, 0xcb, 0xee, 0x9a, 0xef, 0xcc, - 0xee, 0x9a, 0xef, 0xcb, 0xee, 0x9a, 0xf0, 0xcc, 0xee, 0x9a, 0xf0, 0xcb, - 0xee, 0x9a, 0xf0, 0xcc, 0xee, 0x9a, 0xf0, 0xcb, 0xee, 0x9a, 0xf1, 0xcc, - 0xee, 0x9a, 0xf1, 0xcb, 0xee, 0x9a, 0xf1, 0xcc, 0xee, 0x9a, 0xf1, 0xcb, - 0xee, 0x9a, 0xf2, 0xcc, 0xee, 0x9a, 0xf2, 0xcb, 0xee, 0x9a, 0xf2, 0xcc, - 0xee, 0x9a, 0xf2, 0xcb, 0xee, 0x9a, 0xf2, 0xc6, 0xf2, 0x9a, 0xf3, 0xc7, - 0xf5, 0x9a, 0xf3, 0xc7, 0xf5, 0x9a, 0xf3, 0xc7, 0xf5, 0x9a, 0xf3, 0xc7, - 0xf5, 0x9a, 0xf4, 0xc7, 0xf5, 0x9a, 0xf4, 0xc7, 0xf5, 0x9a, 0xf4, 0xc7, - 0xf5, 0x9a, 0xf4, 0xc7, 0xf5, 0x9a, 0xf5, 0xc7, 0xf5, 0x9a, 0xf5, 0xc7, - 0xf5, 0x9a, 0xf5, 0xc7, 0xf5, 0x9a, 0xf5, 0xc7, 0xf5, 0x9a, 0xf5, 0xc7, - 0xf5, 0x9a, 0xf6, 0xc7, 0xf6, 0x9a, 0xf6, 0xc7, 0xf6, 0x9a, 0xf6, 0xc7, - 0xf6, 0x9a, 0xf6, 0xc7, 0xf6, 0x9a, 0xf7, 0xc7, 0xf7, 0x9a, 0xf7, 0xc7, - 0xf7, 0x9a, 0xf7, 0xc7, 0xf7, 0x9a, 0xf7, 0xc7, 0xf7, 0x9a, 0xf8, 0xc7, - 0xf7, 0x9a, 0xf8, 0xc7, 0xf7, 0x9a, 0xf8, 0xc7, 0xf7, 0x9a, 0xf8, 0xc7, - 0xf7, 0x9a, 0xf8, 0xc7, 0xf7, 0x9a, 0xf9, 0xc7, 0xf7, 0x9a, 0xf9, 0xc7, - 0xf7, 0x9a, 0xf9, 0xc7, 0xf7, 0x9a, 0xf9, 0xc7, 0xf7, 0x9a, 0xfa, 0xc7, - 0xf7, 0x9a, 0xfa, 0xc7, 0xf7, 0x9a, 0xfa, 0xc7, 0xf7, 0x9a, 0xfa, 0xc7, - 0xf7, 0x9a, 0xfa, 0xc7, 0xf7, 0x9a, 0xfb, 0xc7, 0xf7, 0x9a, 0xfb, 0xc7, - 0xf7, 0x9a, 0xfb, 0xc7, 0xf7, 0x9a, 0xfb, 0xc7, 0xf7, 0x9a, 0xfc, 0xc7, - 0xf7, 0x9a, 0xfc, 0xc7, 0xf7, 0x9a, 0xfc, 0xc6, 0xf8, 0x9a, 0xfc, 0xc7, - 0xf7, 0x9a, 0xfc, 0xc6, 0xf8, 0x9a, 0xfd, 0xc7, 0xf7, 0x9a, 0xfd, 0xc6, - 0xf8, 0x9a, 0xfd, 0xc7, 0xf7, 0x9a, 0xfd, 0xc6, 0xf8, 0x9a, 0xfe, 0xc7, - 0xf7, 0x9a, 0xfe, 0xc6, 0xf8, 0x9a, 0xfe, 0xc7, 0xf7, 0x9a, 0xfe, 0xc6, - 0xf8, 0x9a, 0xfe, 0xc7, 0xf7, 0x9a, 0xff, 0xc6, 0xf8, 0x9a, 0xff, 0xc7, - 0xf7, 0x9a, 0x03, 0xd0, 0x8d, 0x9b, 0x0a, 0xd0, 0x8d, 0x9b, 0x0f, 0xd0, - 0x8d, 0x9b, 0x14, 0xd0, 0x8d, 0x9b, 0x17, 0xd0, 0x8d, 0x9b, 0x1b, 0xd0, - 0x8d, 0x9b, 0x1e, 0xd0, 0x8d, 0x9b, 0x20, 0xd3, 0x8d, 0x9b, 0x23, 0xd0, - 0x8d, 0x9b, 0x25, 0xd3, 0x8d, 0x9b, 0x27, 0xd0, 0x8d, 0x9b, 0x29, 0xd3, - 0x8d, 0x9b, 0x2b, 0xd0, 0x8d, 0x9b, 0x2d, 0xd3, 0x8d, 0x9b, 0x2f, 0xd0, - 0x8d, 0x9b, 0x31, 0xd3, 0x8d, 0x9b, 0x32, 0xd0, 0x8d, 0x9b, 0x34, 0xd3, - 0x8d, 0x9b, 0x35, 0xd0, 0x8d, 0x9b, 0x37, 0xd3, 0x8d, 0x9b, 0x38, 0xd0, - 0x8d, 0x9b, 0x3a, 0xd3, 0x8d, 0x9b, 0x3b, 0xd0, 0x8d, 0x9b, 0x3c, 0xd3, - 0x8d, 0x9b, 0x3e, 0xd0, 0x8d, 0x9b, 0x3f, 0xd3, 0x8d, 0x9b, 0x40, 0xd0, - 0x8d, 0x9b, 0x42, 0xd3, 0x8d, 0x9b, 0x43, 0xd0, 0x8d, 0x9b, 0x44, 0xd3, - 0x8d, 0x9b, 0x45, 0xd0, 0x8d, 0x9b, 0x46, 0xd3, 0x8d, 0x9b, 0x47, 0xd0, - 0x8d, 0x9b, 0x48, 0xcf, 0x8e, 0x9b, 0x49, 0xd0, 0x8d, 0x9b, 0x4a, 0xcf, - 0x8e, 0x9b, 0x4b, 0xd0, 0x8d, 0x9b, 0x4c, 0xcf, 0x8e, 0x9b, 0x4d, 0xd0, - 0x8d, 0x9b, 0x4e, 0xcf, 0x8e, 0x9b, 0x4f, 0xd0, 0x8d, 0x9b, 0x50, 0xcf, - 0x8e, 0x9b, 0x51, 0xd0, 0x8d, 0x9b, 0x52, 0xcf, 0x8e, 0x9b, 0x53, 0xd0, - 0x8d, 0x9b, 0x54, 0xcf, 0x8e, 0x9b, 0x55, 0xd0, 0x8d, 0x9b, 0x56, 0xcf, - 0x8e, 0x9b, 0x57, 0xd0, 0x8d, 0x9b, 0x58, 0xcf, 0x8e, 0x9b, 0x58, 0xd0, - 0x8d, 0x9b, 0x59, 0xcf, 0x8e, 0x9b, 0x5a, 0xd0, 0x8d, 0x9b, 0x5b, 0xcf, - 0x8e, 0x9b, 0x5c, 0xd0, 0x8d, 0x9b, 0x5d, 0xcf, 0x8e, 0x9b, 0x5d, 0xd0, - 0x8d, 0x9b, 0x5e, 0xcf, 0x8e, 0x9b, 0x5f, 0xd0, 0x8d, 0x9b, 0x60, 0xcf, - 0x8e, 0x9b, 0x60, 0xd0, 0x8d, 0x9b, 0x61, 0xcf, 0x8e, 0x9b, 0x62, 0xd0, - 0x8d, 0x9b, 0x63, 0xcf, 0x8e, 0x9b, 0x63, 0xd0, 0x8d, 0x9b, 0x64, 0xcf, - 0x8e, 0x9b, 0x65, 0xd0, 0x8d, 0x9b, 0x66, 0xcf, 0x8e, 0x9b, 0x66, 0xd0, - 0x8d, 0x9b, 0x67, 0xcf, 0x8e, 0x9b, 0x68, 0xd0, 0x8d, 0x9b, 0x68, 0xcf, - 0x8e, 0x9b, 0x69, 0xd0, 0x8d, 0x9b, 0x6a, 0xcf, 0x8e, 0x9b, 0x6a, 0xd0, - 0x8d, 0x9b, 0x6b, 0xcf, 0x8e, 0x9b, 0x6c, 0xd0, 0x8d, 0x9b, 0x6c, 0xcf, - 0x8e, 0x9b, 0x6d, 0xd0, 0x8d, 0x9b, 0x6e, 0xcf, 0x8e, 0x9b, 0x6e, 0xd0, - 0x8d, 0x9b, 0x6f, 0xcf, 0x8e, 0x9b, 0x70, 0xd0, 0x8d, 0x9b, 0x70, 0xcf, - 0x8e, 0x9b, 0x71, 0xd0, 0x8d, 0x9b, 0x72, 0xcf, 0x8e, 0x9b, 0x72, 0xd0, - 0x8d, 0x9b, 0x73, 0xcf, 0x8e, 0x9b, 0x73, 0xd0, 0x8d, 0x9b, 0x74, 0xcf, - 0x8e, 0x9b, 0x75, 0xcd, 0x8e, 0x9b, 0x75, 0xcf, 0x8e, 0x9b, 0x76, 0xcd, - 0x8e, 0x9b, 0x76, 0xcf, 0x8e, 0x9b, 0x77, 0xcd, 0x8e, 0x9b, 0x78, 0xcf, - 0x8e, 0x9b, 0x78, 0xcd, 0x8e, 0x9b, 0x79, 0xcf, 0x8e, 0x9b, 0x79, 0xcd, - 0x8e, 0x9b, 0x7a, 0xcf, 0x8e, 0x9b, 0x7a, 0xcd, 0x8e, 0x9b, 0x7b, 0xcf, - 0x8e, 0x9b, 0x7c, 0xcd, 0x8e, 0x9b, 0x7c, 0xcf, 0x8e, 0x9b, 0x7d, 0xcd, - 0x8e, 0x9b, 0x7d, 0xcf, 0x8e, 0x9b, 0x7e, 0xcd, 0x8e, 0x9b, 0x7e, 0xcf, - 0x8e, 0x9b, 0x7f, 0xcd, 0x8e, 0x9b, 0x7f, 0xcf, 0x8e, 0x9b, 0x80, 0xcd, - 0x8e, 0x9b, 0x81, 0xcf, 0x8e, 0x9b, 0x81, 0xcd, 0x8e, 0x9b, 0x82, 0xcf, - 0x8e, 0x9b, 0x82, 0xcd, 0x8e, 0x9b, 0x83, 0xcf, 0x8e, 0x9b, 0x83, 0xcd, - 0x8e, 0x9b, 0x84, 0xcf, 0x8e, 0x9b, 0x84, 0xcd, 0x8e, 0x9b, 0x85, 0xcf, - 0x8e, 0x9b, 0x85, 0xcd, 0x8e, 0x9b, 0x86, 0xcf, 0x8e, 0x9b, 0x86, 0xcd, - 0x8e, 0x9b, 0x87, 0xcc, 0x8e, 0x9b, 0x87, 0xcd, 0x8e, 0x9b, 0x88, 0xcc, - 0x8e, 0x9b, 0x88, 0xcd, 0x8e, 0x9b, 0x89, 0xcc, 0x8e, 0x9b, 0x89, 0xcd, - 0x8e, 0x9b, 0x8a, 0xcc, 0x8e, 0x9b, 0x8a, 0xcd, 0x8e, 0x9b, 0x8b, 0xcc, - 0x8e, 0x9b, 0x8b, 0xcd, 0x8e, 0x9b, 0x8c, 0xcc, 0x8e, 0x9b, 0x8c, 0xcd, - 0x8e, 0x9b, 0x8d, 0xcc, 0x8e, 0x9b, 0x8d, 0xcd, 0x8e, 0x9b, 0x8e, 0xcc, - 0x8e, 0x9b, 0x8e, 0xcd, 0x8e, 0x9b, 0x8e, 0xcc, 0x8e, 0x9b, 0x8e, 0xcc, - 0x8f, 0x9b, 0x8e, 0xcc, 0x8f, 0x9b, 0x8e, 0xcc, 0x90, 0x9b, 0x8e, 0xcc, - 0x90, 0x9b, 0x8e, 0xcc, 0x91, 0x9b, 0x8e, 0xcc, 0x91, 0x9b, 0x8e, 0xcc, - 0x92, 0x9b, 0x8e, 0xcc, 0x92, 0x98, 0x8e, 0xcc, 0x93, 0x9b, 0x8e, 0xcc, - 0x93, 0x98, 0x8e, 0xcc, 0x94, 0x9b, 0x96, 0xcc, 0x94, 0x95, 0x95, 0xcc, - 0x94, 0x95, 0x96, 0xcc, 0x95, 0x95, 0x95, 0xcc, 0x95, 0x95, 0x96, 0xcc, - 0x96, 0x95, 0x96, 0xcc, 0x96, 0x95, 0x97, 0xcc, 0x97, 0x95, 0x97, 0xcc, - 0x97, 0x95, 0x9a, 0xcc, 0x98, 0x96, 0x9a, 0xcc, 0x98, 0x96, 0x9a, 0xcc, - 0x98, 0x96, 0x9a, 0xcc, 0x99, 0x96, 0x9a, 0xcc, 0x99, 0x96, 0x9a, 0xcc, - 0x9a, 0x96, 0x9a, 0xcc, 0x9a, 0x96, 0x9a, 0xcc, 0x9a, 0x96, 0x9b, 0xcc, - 0x9b, 0x96, 0x9b, 0xcc, 0x9b, 0x96, 0x9c, 0xcc, 0x9c, 0x96, 0x9c, 0xcc, - 0x9c, 0x96, 0x9d, 0xcc, 0x9d, 0x96, 0x9f, 0xcc, 0x9d, 0x97, 0x9f, 0xcc, - 0x9d, 0x97, 0x9f, 0xcc, 0x9e, 0x97, 0x9f, 0xcc, 0x9e, 0x97, 0x9f, 0xcc, - 0x9f, 0x97, 0x9f, 0xcc, 0x9f, 0x97, 0x9f, 0xcc, 0x9f, 0x97, 0xa0, 0xcc, - 0xa0, 0x97, 0xa0, 0xcc, 0xa0, 0x97, 0xa1, 0xcc, 0xa1, 0x97, 0xa1, 0xcc, - 0xa1, 0x97, 0xa3, 0xcc, 0xa1, 0x98, 0xa2, 0xcc, 0xa2, 0x97, 0xa3, 0xcc, - 0xa2, 0x98, 0xa3, 0xcc, 0xa3, 0x97, 0xa3, 0xcc, 0xa3, 0x98, 0xa3, 0xcc, - 0xa3, 0x97, 0xa3, 0xcc, 0xa4, 0x98, 0xa3, 0xcc, 0xa4, 0x97, 0xa3, 0xcc, - 0xa5, 0x98, 0xa3, 0xcc, 0xa5, 0x97, 0xa3, 0xcc, 0xa5, 0x98, 0xa3, 0xcc, - 0xa6, 0x97, 0xa3, 0xcc, 0xa6, 0x98, 0xa3, 0xcc, 0xa6, 0x97, 0xa3, 0xcc, - 0xa7, 0x98, 0xa3, 0xcc, 0xa7, 0x97, 0xa3, 0xcc, 0xa8, 0x98, 0xa3, 0xcc, - 0xa8, 0x97, 0xa3, 0xcc, 0xa8, 0x98, 0xa3, 0xcc, 0xa9, 0x97, 0xa3, 0xcc, - 0xa9, 0x98, 0xa3, 0xcc, 0xaa, 0x97, 0xa3, 0xcc, 0xaa, 0x98, 0xa3, 0xcc, - 0xaa, 0x97, 0xa3, 0xcc, 0xab, 0x98, 0xa3, 0xcc, 0xab, 0x97, 0xa3, 0xcc, - 0xab, 0x98, 0xa3, 0xcc, 0xac, 0x97, 0xa3, 0xcc, 0xac, 0x98, 0xa3, 0xcc, - 0xac, 0x97, 0xa3, 0xcc, 0xad, 0x98, 0xa3, 0xcc, 0xad, 0x97, 0xa3, 0xcc, - 0xae, 0x98, 0xa3, 0xcc, 0xae, 0x97, 0xa4, 0xcc, 0xae, 0x95, 0xa3, 0xcc, - 0xaf, 0x97, 0xa4, 0xcc, 0xaf, 0x95, 0xa3, 0xcc, 0xaf, 0x97, 0xa4, 0xcc, - 0xb0, 0x95, 0xa3, 0xcc, 0xb0, 0x97, 0xa4, 0xcc, 0xb0, 0x95, 0xa3, 0xcc, - 0xb1, 0x97, 0xa4, 0xcc, 0xb1, 0x95, 0xa3, 0xcc, 0xb2, 0x97, 0xa4, 0xcc, - 0xb2, 0x95, 0xa3, 0xcc, 0xb2, 0x97, 0xa4, 0xcc, 0xb3, 0x95, 0xa3, 0xcc, - 0xb3, 0x97, 0xa4, 0xcc, 0xb3, 0x95, 0xa3, 0xcc, 0xb4, 0x97, 0xa4, 0xcc, - 0xb4, 0x95, 0xa3, 0xcc, 0xb4, 0x97, 0xa4, 0xcc, 0xb5, 0x95, 0xa3, 0xcc, - 0xb5, 0x97, 0xa4, 0xcc, 0xb5, 0x95, 0xa3, 0xcc, 0xb6, 0x97, 0xa4, 0xcc, - 0xb6, 0x95, 0xa3, 0xcc, 0xb6, 0x97, 0xa4, 0xcc, 0xb7, 0x95, 0xa3, 0xcc, - 0xb7, 0x97, 0xa4, 0xcc, 0xb7, 0x95, 0xa3, 0xcc, 0xb8, 0x97, 0xa4, 0xcc, - 0xb8, 0x95, 0xa3, 0xcc, 0xb8, 0x97, 0xa4, 0xcc, 0xb9, 0x95, 0xa3, 0xcc, - 0xb9, 0x97, 0xa4, 0xcc, 0xb9, 0x95, 0xa3, 0xcc, 0xba, 0x97, 0xa4, 0xcc, - 0xba, 0x95, 0xa3, 0xcc, 0xba, 0x97, 0xa4, 0xcc, 0xbb, 0x95, 0xa4, 0xcc, - 0xbb, 0x92, 0xa4, 0xcc, 0xbb, 0x95, 0xa4, 0xcc, 0xbc, 0x92, 0xa4, 0xcc, - 0xbc, 0x95, 0xa4, 0xcc, 0xbc, 0x92, 0xa4, 0xcc, 0xbd, 0x95, 0xa4, 0xcc, - 0xbd, 0x92, 0xd2, 0xcc, 0xbd, 0xa2, 0xd3, 0xcc, 0xbe, 0xa0, 0xd2, 0xcc, - 0xbe, 0xa2, 0xd3, 0xcc, 0xbe, 0xa0, 0xd2, 0xcc, 0xbf, 0xa2, 0xd3, 0xcc, - 0xbf, 0xa0, 0xd2, 0xcc, 0xbf, 0xa2, 0xd3, 0xcc, 0xc0, 0xa0, 0xd2, 0xcc, - 0xc0, 0xa2, 0xd3, 0xcc, 0xc0, 0xa0, 0xd2, 0xcc, 0xc1, 0xa2, 0xd3, 0xcc, - 0xc1, 0xa0, 0xd2, 0xcc, 0xc1, 0xa2, 0xd3, 0xcc, 0xc1, 0xa0, 0xd2, 0xcc, - 0xc2, 0xa2, 0xd3, 0xcc, 0xc2, 0xa0, 0xd2, 0xcc, 0xc2, 0xa2, 0xd3, 0xcc, - 0xc3, 0xa0, 0xd2, 0xcc, 0xc3, 0xa2, 0xd3, 0xcc, 0xc3, 0xa0, 0xd2, 0xcc, - 0xc4, 0xa2, 0xd3, 0xcc, 0xc4, 0xa0, 0xd2, 0xcc, 0xc4, 0xa2, 0xd3, 0xcc, - 0xc5, 0xa0, 0xd2, 0xcc, 0xc5, 0xa2, 0xd3, 0xcc, 0xc5, 0xa0, 0xd2, 0xcc, - 0xc6, 0xa2, 0xd3, 0xcc, 0xc6, 0xa0, 0xd3, 0xcc, 0xc6, 0x9d, 0xd3, 0xcc, - 0xc6, 0xa0, 0xd3, 0xcc, 0xc7, 0x9d, 0xd3, 0xcc, 0xc7, 0xa0, 0xd3, 0xcc, - 0xc7, 0x9d, 0xd3, 0xcc, 0xc8, 0xa0, 0xd3, 0xcc, 0xc8, 0x9d, 0xd3, 0xcc, - 0xc8, 0xa0, 0xd3, 0xcc, 0xc9, 0x9d, 0xd3, 0xcc, 0xc9, 0xa0, 0xd3, 0xcc, - 0xc9, 0x9d, 0xd3, 0xcc, 0xc9, 0xa0, 0xd3, 0xcc, 0xca, 0x9d, 0xd3, 0xcc, - 0xca, 0xa0, 0xd3, 0xcc, 0xca, 0x9d, 0xd3, 0xcc, 0xcb, 0xa0, 0xd3, 0xcc, - 0xcb, 0x9d, 0xd3, 0xcc, 0xcb, 0xa0, 0xd3, 0xcc, 0xcc, 0x9d, 0xd3, 0xcc, - 0xcc, 0xa0, 0xd3, 0xcc, 0xcc, 0x9d, 0xd3, 0xcc, 0xcc, 0x9b, 0xd3, 0xcc, - 0xcd, 0x9d, 0xd3, 0xcc, 0xcd, 0x9b, 0xd3, 0xcc, 0xcd, 0x9d, 0xd3, 0xcc, - 0xce, 0x9b, 0xd3, 0xcc, 0xce, 0x9d, 0xd3, 0xcc, 0xce, 0x9b, 0xd3, 0xcc, - 0xce, 0x9d, 0xd3, 0xcc, 0xcf, 0x9b, 0xd3, 0xcc, 0xcf, 0x9d, 0xd3, 0xcc, - 0xcf, 0x9b, 0xd3, 0xcc, 0xd0, 0x9d, 0xd3, 0xcc, 0xd0, 0x9b, 0xd3, 0xcc, - 0xd0, 0x9d, 0xd3, 0xcc, 0xd0, 0x9b, 0xd3, 0xcc, 0xd1, 0x9d, 0xd3, 0xcc, - 0xd1, 0x9b, 0xd3, 0xcc, 0xd1, 0x9d, 0xd3, 0xcc, 0xd2, 0x9b, 0xd3, 0xcc, - 0xd2, 0x9d, 0xd3, 0xcc, 0xd2, 0x9b, 0xd4, 0xcc, 0xd2, 0x9b, 0xd3, 0xcc, - 0xd3, 0x9b, 0xd4, 0xcc, 0xd3, 0x9b, 0xd3, 0xcc, 0xd3, 0x9b, 0xd4, 0xcc, - 0xd3, 0x9b, 0xd4, 0xcc, 0xd3, 0x9b, 0xd4, 0xcc, 0xd3, 0x9b, 0xd4, 0xcb, - 0xd3, 0x9b, 0xd5, 0xcc, 0xd3, 0x9b, 0xd5, 0xcb, 0xd3, 0x9b, 0xd5, 0xcc, - 0xd3, 0x9b, 0xd6, 0xcb, 0xd3, 0x9b, 0xd6, 0xcc, 0xd3, 0x9b, 0xd6, 0xcb, - 0xd3, 0x9b, 0xd6, 0xcc, 0xd3, 0x9b, 0xd7, 0xcb, 0xd3, 0x9b, 0xd7, 0xcc, - 0xd3, 0x9b, 0xd7, 0xc8, 0xd8, 0x9b, 0xd7, 0xc8, 0xd8, 0x9b, 0xd8, 0xc8, - 0xd8, 0x9b, 0xd8, 0xc8, 0xd8, 0x9b, 0xd8, 0xc8, 0xd8, 0x9b, 0xd9, 0xc8, - 0xd9, 0x9b, 0xd9, 0xc8, 0xd9, 0x9b, 0xd9, 0xc8, 0xd9, 0x9b, 0xd9, 0xc9, - 0xdb, 0x9b, 0xda, 0xc9, 0xdb, 0x9b, 0xda, 0xc9, 0xdb, 0x9b, 0xda, 0xc9, - 0xdb, 0x9b, 0xda, 0xc9, 0xdb, 0x9b, 0xdb, 0xc9, 0xdb, 0x9b, 0xdb, 0xc9, - 0xdb, 0x9b, 0xdb, 0xc9, 0xdb, 0x9b, 0xdb, 0xc9, 0xdb, 0x9b, 0xdc, 0xc9, - 0xdc, 0x9b, 0xdc, 0xc9, 0xdc, 0x9b, 0xdc, 0xc9, 0xde, 0x9b, 0xdd, 0xc9, - 0xde, 0x9b, 0xdd, 0xc9, 0xde, 0x9b, 0xdd, 0xc9, 0xde, 0x9b, 0xdd, 0xc9, - 0xde, 0x9b, 0xde, 0xc9, 0xde, 0x9b, 0xde, 0xc9, 0xde, 0x9b, 0xde, 0xc9, - 0xde, 0x9b, 0xde, 0xc9, 0xde, 0x9b, 0xdf, 0xc9, 0xdf, 0x9b, 0xdf, 0xc9, - 0xdf, 0x9b, 0xdf, 0xc9, 0xdf, 0x9b, 0xdf, 0xc9, 0xdf, 0x9b, 0xe0, 0xca, - 0xe1, 0x9b, 0xe0, 0xca, 0xe1, 0x9b, 0xe0, 0xca, 0xe1, 0x9b, 0xe1, 0xca, - 0xe1, 0x9b, 0xe1, 0xca, 0xe1, 0x9b, 0xe1, 0xca, 0xe1, 0x9b, 0xe1, 0xca, - 0xe1, 0x9b, 0xe2, 0xca, 0xe2, 0x9b, 0xe2, 0xca, 0xe2, 0x9b, 0xe2, 0xca, - 0xe2, 0x9b, 0xe2, 0xca, 0xe2, 0x9b, 0xe3, 0xcb, 0xe4, 0x9b, 0xe3, 0xcb, - 0xe4, 0x9b, 0xe3, 0xcb, 0xe4, 0x9b, 0xe3, 0xcb, 0xe4, 0x9b, 0xe4, 0xcb, - 0xe4, 0x9b, 0xe4, 0xcb, 0xe4, 0x9b, 0xe4, 0xcb, 0xe4, 0x9b, 0xe4, 0xcb, - 0xe4, 0x9b, 0xe5, 0xcb, 0xe5, 0x9b, 0xe5, 0xcb, 0xe5, 0x9b, 0xe5, 0xcb, - 0xe5, 0x9b, 0xe5, 0xcb, 0xe6, 0x9b, 0xe6, 0xcb, 0xe7, 0x9b, 0xe6, 0xcb, - 0xe6, 0x9b, 0xe6, 0xcb, 0xe7, 0x9b, 0xe6, 0xcb, 0xe6, 0x9b, 0xe7, 0xcb, - 0xe7, 0x9b, 0xe7, 0xcb, 0xe7, 0x9b, 0xe7, 0xcb, 0xe7, 0x9b, 0xe7, 0xcb, - 0xe7, 0x9b, 0xe8, 0xcb, 0xe8, 0x9b, 0xe8, 0xcb, 0xe8, 0x9b, 0xe8, 0xcb, - 0xe8, 0x9b, 0xe8, 0xcc, 0xe9, 0x9b, 0xe9, 0xcc, 0xe9, 0x9b, 0xe9, 0xcc, - 0xe9, 0x9b, 0xe9, 0xcc, 0xe9, 0x9b, 0xe9, 0xcc, 0xe9, 0x9b, 0xea, 0xcc, - 0xea, 0x9b, 0xea, 0xcc, 0xea, 0x9b, 0xea, 0xcc, 0xea, 0x9b, 0xea, 0xcc, - 0xea, 0x9b, 0xeb, 0xcc, 0xeb, 0x9b, 0xeb, 0xcc, 0xeb, 0x9b, 0xeb, 0xcc, - 0xeb, 0x9b, 0xeb, 0xcc, 0xeb, 0x9b, 0xeb, 0xcc, 0xec, 0x9b, 0xeb, 0xcc, - 0xec, 0x9b, 0xeb, 0xcc, 0xec, 0x9b, 0xeb, 0xcc, 0xec, 0x9b, 0xeb, 0xcc, - 0xec, 0x9b, 0xee, 0xcc, 0xed, 0x9b, 0xee, 0xcc, 0xed, 0x9b, 0xee, 0xcc, - 0xed, 0x9b, 0xee, 0xcc, 0xed, 0x9b, 0xee, 0xcc, 0xee, 0x9b, 0xee, 0xcc, - 0xed, 0x9b, 0xee, 0xcc, 0xee, 0x9b, 0xee, 0xcc, 0xed, 0x9b, 0xef, 0xcc, - 0xee, 0x9b, 0xef, 0xcb, 0xee, 0x9b, 0xef, 0xcc, 0xee, 0x9b, 0xef, 0xcb, - 0xee, 0x9b, 0xf0, 0xcc, 0xee, 0x9b, 0xf0, 0xcb, 0xee, 0x9b, 0xf0, 0xcc, - 0xee, 0x9b, 0xf0, 0xcb, 0xee, 0x9b, 0xf1, 0xcc, 0xee, 0x9b, 0xf1, 0xcb, - 0xee, 0x9b, 0xf1, 0xcc, 0xee, 0x9b, 0xf1, 0xcb, 0xee, 0x9b, 0xf2, 0xcc, - 0xee, 0x9b, 0xf2, 0xcb, 0xee, 0x9b, 0xf2, 0xcc, 0xee, 0x9b, 0xf2, 0xcb, - 0xee, 0x9b, 0xf2, 0xcc, 0xee, 0x9b, 0xf3, 0xc6, 0xf3, 0x9b, 0xf3, 0xc6, - 0xf3, 0x9b, 0xf3, 0xc6, 0xf3, 0x9b, 0xf3, 0xc6, 0xf3, 0x9b, 0xf4, 0xc6, - 0xf4, 0x9b, 0xf4, 0xc6, 0xf4, 0x9b, 0xf4, 0xc7, 0xf6, 0x9b, 0xf4, 0xc7, - 0xf6, 0x9b, 0xf5, 0xc7, 0xf6, 0x9b, 0xf5, 0xc7, 0xf6, 0x9b, 0xf5, 0xc7, - 0xf6, 0x9b, 0xf5, 0xc7, 0xf6, 0x9b, 0xf5, 0xc7, 0xf6, 0x9b, 0xf6, 0xc7, - 0xf6, 0x9b, 0xf6, 0xc7, 0xf6, 0x9b, 0xf6, 0xc7, 0xf6, 0x9b, 0xf6, 0xc7, - 0xf6, 0x9b, 0xf7, 0xc7, 0xf7, 0x9b, 0xf7, 0xc7, 0xf7, 0x9b, 0xf7, 0xc7, - 0xf7, 0x9b, 0xf7, 0xc7, 0xf7, 0x9b, 0xf8, 0xc7, 0xf7, 0x9b, 0xf8, 0xc7, - 0xf7, 0x9b, 0xf8, 0xc7, 0xf7, 0x9b, 0xf8, 0xc7, 0xf7, 0x9b, 0xf8, 0xc7, - 0xf7, 0x9b, 0xf9, 0xc7, 0xf7, 0x9b, 0xf9, 0xc7, 0xf7, 0x9b, 0xf9, 0xc7, - 0xf7, 0x9b, 0xf9, 0xc7, 0xf7, 0x9b, 0xfa, 0xc7, 0xf7, 0x9b, 0xfa, 0xc7, - 0xf7, 0x9b, 0xfa, 0xc7, 0xf7, 0x9b, 0xfa, 0xc7, 0xf7, 0x9b, 0xfa, 0xc7, - 0xf7, 0x9b, 0xfb, 0xc7, 0xf7, 0x9b, 0xfb, 0xc7, 0xf7, 0x9b, 0xfb, 0xc7, - 0xf7, 0x9b, 0xfb, 0xc7, 0xf7, 0x9b, 0xfc, 0xc7, 0xf7, 0x9b, 0xfc, 0xc7, - 0xf7, 0x9b, 0xfc, 0xc7, 0xf7, 0x9b, 0xfc, 0xc7, 0xf7, 0x9b, 0xfc, 0xc7, - 0xf7, 0x9b, 0xfd, 0xc7, 0xf7, 0x9b, 0xfd, 0xc7, 0xf7, 0x9b, 0xfd, 0xc7, - 0xf7, 0x9b, 0xfd, 0xc7, 0xf7, 0x9b, 0xfe, 0xc7, 0xf7, 0x9b, 0xfe, 0xc7, - 0xf7, 0x9b, 0xfe, 0xc7, 0xf7, 0x9b, 0xfe, 0xc7, 0xf7, 0x9b, 0xfe, 0xc7, - 0xf7, 0x9b, 0xff, 0xc7, 0xf7, 0x9b, 0xff, 0xc7, 0xf7, 0x9b, 0x03, 0xd4, - 0x8c, 0x9b, 0x0a, 0xd2, 0x8d, 0x9b, 0x0f, 0xd4, 0x8c, 0x9b, 0x14, 0xd2, - 0x8d, 0x9b, 0x17, 0xd4, 0x8c, 0x9b, 0x1b, 0xd2, 0x8d, 0x9b, 0x1e, 0xd4, - 0x8c, 0x9b, 0x20, 0xd2, 0x8d, 0x9b, 0x23, 0xd4, 0x8c, 0x9b, 0x25, 0xd2, - 0x8d, 0x9b, 0x27, 0xd4, 0x8c, 0x9b, 0x29, 0xd2, 0x8d, 0x9b, 0x2b, 0xd4, - 0x8c, 0x9b, 0x2d, 0xd2, 0x8d, 0x9b, 0x2f, 0xd4, 0x8c, 0x9b, 0x31, 0xd2, - 0x8d, 0x9b, 0x32, 0xd1, 0x8d, 0x9b, 0x34, 0xd2, 0x8d, 0x9b, 0x35, 0xd1, - 0x8d, 0x9b, 0x37, 0xd2, 0x8d, 0x9b, 0x38, 0xd1, 0x8d, 0x9b, 0x3a, 0xd2, - 0x8d, 0x9b, 0x3b, 0xd1, 0x8d, 0x9b, 0x3c, 0xd2, 0x8d, 0x9b, 0x3e, 0xd1, - 0x8d, 0x9b, 0x3f, 0xd2, 0x8d, 0x9b, 0x40, 0xd1, 0x8d, 0x9b, 0x42, 0xd2, - 0x8d, 0x9b, 0x43, 0xd1, 0x8d, 0x9b, 0x44, 0xd2, 0x8d, 0x9b, 0x45, 0xd1, - 0x8d, 0x9b, 0x46, 0xd2, 0x8d, 0x9b, 0x47, 0xd1, 0x8d, 0x9b, 0x48, 0xd2, - 0x8d, 0x9b, 0x49, 0xd1, 0x8d, 0x9b, 0x4a, 0xd2, 0x8d, 0x9b, 0x4b, 0xd1, - 0x8d, 0x9b, 0x4c, 0xd2, 0x8d, 0x9b, 0x4d, 0xd1, 0x8d, 0x9b, 0x4e, 0xd2, - 0x8d, 0x9b, 0x4f, 0xd1, 0x8d, 0x9b, 0x50, 0xd2, 0x8d, 0x9b, 0x51, 0xd1, - 0x8d, 0x9b, 0x52, 0xd2, 0x8d, 0x9b, 0x53, 0xd1, 0x8d, 0x9b, 0x54, 0xd2, - 0x8d, 0x9b, 0x55, 0xd1, 0x8d, 0x9b, 0x56, 0xd2, 0x8d, 0x9b, 0x57, 0xd1, - 0x8d, 0x9b, 0x58, 0xd2, 0x8d, 0x9b, 0x58, 0xd1, 0x8d, 0x9b, 0x59, 0xd2, - 0x8d, 0x9b, 0x5a, 0xd1, 0x8d, 0x9b, 0x5b, 0xcf, 0x8e, 0x9b, 0x5c, 0xd1, - 0x8d, 0x9b, 0x5d, 0xcf, 0x8e, 0x9b, 0x5d, 0xd1, 0x8d, 0x9b, 0x5e, 0xcf, - 0x8e, 0x9b, 0x5f, 0xd1, 0x8d, 0x9b, 0x60, 0xcf, 0x8e, 0x9b, 0x60, 0xd1, - 0x8d, 0x9b, 0x61, 0xcf, 0x8e, 0x9b, 0x62, 0xd1, 0x8d, 0x9b, 0x63, 0xcf, - 0x8e, 0x9b, 0x63, 0xd1, 0x8d, 0x9b, 0x64, 0xcf, 0x8e, 0x9b, 0x65, 0xd1, - 0x8d, 0x9b, 0x66, 0xcf, 0x8e, 0x9b, 0x66, 0xd1, 0x8d, 0x9b, 0x67, 0xcf, - 0x8e, 0x9b, 0x68, 0xd1, 0x8d, 0x9b, 0x68, 0xcf, 0x8e, 0x9b, 0x69, 0xd1, - 0x8d, 0x9b, 0x6a, 0xcf, 0x8e, 0x9b, 0x6a, 0xd1, 0x8d, 0x9b, 0x6b, 0xcf, - 0x8e, 0x9b, 0x6c, 0xd1, 0x8d, 0x9b, 0x6c, 0xcf, 0x8e, 0x9b, 0x6d, 0xd1, - 0x8d, 0x9b, 0x6e, 0xcf, 0x8e, 0x9b, 0x6e, 0xd1, 0x8d, 0x9b, 0x6f, 0xcf, - 0x8e, 0x9b, 0x70, 0xd1, 0x8d, 0x9b, 0x70, 0xcf, 0x8e, 0x9b, 0x71, 0xd1, - 0x8d, 0x9b, 0x72, 0xcf, 0x8e, 0x9b, 0x72, 0xd1, 0x8d, 0x9b, 0x73, 0xcf, - 0x8e, 0x9b, 0x73, 0xd1, 0x8d, 0x9b, 0x74, 0xcf, 0x8e, 0x9b, 0x75, 0xcd, - 0x8e, 0x9b, 0x75, 0xcf, 0x8e, 0x9b, 0x76, 0xcd, 0x8e, 0x9b, 0x76, 0xcf, - 0x8e, 0x9b, 0x77, 0xcd, 0x8e, 0x9b, 0x78, 0xcf, 0x8e, 0x9b, 0x78, 0xcd, - 0x8e, 0x9b, 0x79, 0xcf, 0x8e, 0x9b, 0x79, 0xcd, 0x8e, 0x9b, 0x7a, 0xcf, - 0x8e, 0x9b, 0x7a, 0xcd, 0x8e, 0x9b, 0x7b, 0xcf, 0x8e, 0x9b, 0x7c, 0xcd, - 0x8e, 0x9b, 0x7c, 0xcf, 0x8e, 0x9b, 0x7d, 0xcd, 0x8e, 0x9b, 0x7d, 0xcf, - 0x8e, 0x9b, 0x7e, 0xcd, 0x8e, 0x9b, 0x7e, 0xcf, 0x8e, 0x9b, 0x7f, 0xcd, - 0x8e, 0x9b, 0x7f, 0xcf, 0x8e, 0x9b, 0x80, 0xcd, 0x8e, 0x9b, 0x81, 0xcf, - 0x8e, 0x9b, 0x81, 0xcd, 0x8e, 0x9b, 0x82, 0xcf, 0x8e, 0x9b, 0x82, 0xcd, - 0x8e, 0x9b, 0x83, 0xcf, 0x8e, 0x9b, 0x83, 0xcd, 0x8e, 0x9b, 0x84, 0xcf, - 0x8e, 0x9b, 0x84, 0xcd, 0x8e, 0x9b, 0x85, 0xcf, 0x8e, 0x9b, 0x85, 0xcd, - 0x8e, 0x9b, 0x86, 0xcf, 0x8e, 0x9b, 0x86, 0xcd, 0x8e, 0x9b, 0x87, 0xcd, - 0x8e, 0x9b, 0x87, 0xcd, 0x8e, 0x9b, 0x88, 0xcd, 0x8e, 0x9b, 0x88, 0xcd, - 0x8e, 0x9b, 0x89, 0xcd, 0x8e, 0x9b, 0x89, 0xcd, 0x8e, 0x9b, 0x8a, 0xcd, - 0x8e, 0x9b, 0x8a, 0xcd, 0x8e, 0x9b, 0x8b, 0xcd, 0x8e, 0x9b, 0x8b, 0xcd, - 0x8e, 0x9b, 0x8c, 0xcd, 0x8e, 0x9b, 0x8c, 0xcd, 0x8e, 0x9b, 0x8d, 0xcd, - 0x8e, 0x9b, 0x8d, 0xcd, 0x8e, 0x9b, 0x8e, 0xcd, 0x8e, 0x9b, 0x8e, 0xcd, - 0x8e, 0x9a, 0x8e, 0xcd, 0x8e, 0x9b, 0x8e, 0xcd, 0x8f, 0x9a, 0x8e, 0xcd, - 0x8f, 0x9b, 0x8e, 0xcd, 0x90, 0x9a, 0x8e, 0xcd, 0x90, 0x9b, 0x8e, 0xcd, - 0x91, 0x9a, 0x8e, 0xcd, 0x91, 0x9b, 0x8e, 0xcd, 0x92, 0x9a, 0x8e, 0xcd, - 0x92, 0x9b, 0x8e, 0xcd, 0x93, 0x9a, 0x8e, 0xcd, 0x93, 0x9b, 0x8e, 0xcd, - 0x94, 0x9a, 0x94, 0xcd, 0x94, 0x94, 0x94, 0xcd, 0x94, 0x94, 0x98, 0xcd, - 0x95, 0x95, 0x98, 0xcd, 0x95, 0x95, 0x98, 0xcd, 0x96, 0x95, 0x98, 0xcd, - 0x96, 0x95, 0x98, 0xcd, 0x97, 0x95, 0x98, 0xcd, 0x97, 0x95, 0x98, 0xcd, - 0x98, 0x95, 0x98, 0xcd, 0x98, 0x95, 0x98, 0xcd, 0x98, 0x95, 0x99, 0xcd, - 0x99, 0x95, 0x99, 0xcd, 0x99, 0x95, 0x9c, 0xcd, 0x9a, 0x96, 0x9d, 0xcd, - 0x9a, 0x96, 0x9c, 0xcd, 0x9a, 0x96, 0x9d, 0xcd, 0x9b, 0x96, 0x9c, 0xcd, - 0x9b, 0x96, 0x9d, 0xcd, 0x9c, 0x96, 0x9c, 0xcd, 0x9c, 0x96, 0x9d, 0xcd, - 0x9d, 0x96, 0x9d, 0xcd, 0x9d, 0x96, 0x9d, 0xcd, 0x9d, 0x96, 0x9e, 0xcd, - 0x9e, 0x96, 0x9e, 0xcd, 0x9e, 0x96, 0x9f, 0xcd, 0x9f, 0x96, 0xa1, 0xcd, - 0x9f, 0x97, 0xa1, 0xcd, 0x9f, 0x97, 0xa1, 0xcd, 0xa0, 0x97, 0xa1, 0xcd, - 0xa0, 0x97, 0xa1, 0xcd, 0xa1, 0x97, 0xa1, 0xcd, 0xa1, 0x97, 0xa1, 0xcd, - 0xa1, 0x97, 0xa2, 0xcd, 0xa2, 0x97, 0xa2, 0xcd, 0xa2, 0x97, 0xa3, 0xcd, - 0xa3, 0x97, 0xa3, 0xcd, 0xa3, 0x97, 0xa3, 0xcd, 0xa3, 0x97, 0xa3, 0xcd, - 0xa4, 0x97, 0xa3, 0xcd, 0xa4, 0x97, 0xa3, 0xcd, 0xa5, 0x97, 0xa3, 0xcd, - 0xa5, 0x97, 0xa3, 0xcd, 0xa5, 0x97, 0xa3, 0xcd, 0xa6, 0x97, 0xa3, 0xcd, - 0xa6, 0x97, 0xa3, 0xcd, 0xa6, 0x97, 0xa3, 0xcd, 0xa7, 0x97, 0xa3, 0xcd, - 0xa7, 0x97, 0xa3, 0xcd, 0xa8, 0x97, 0xa3, 0xcd, 0xa8, 0x97, 0xa3, 0xcd, - 0xa8, 0x97, 0xa3, 0xcd, 0xa9, 0x97, 0xa3, 0xcd, 0xa9, 0x97, 0xa3, 0xcd, - 0xaa, 0x97, 0xa3, 0xcd, 0xaa, 0x97, 0xa3, 0xcd, 0xaa, 0x97, 0xa3, 0xcd, - 0xab, 0x97, 0xa3, 0xcd, 0xab, 0x97, 0xa3, 0xcd, 0xab, 0x97, 0xa3, 0xcd, - 0xac, 0x97, 0xa3, 0xcd, 0xac, 0x97, 0xa3, 0xcd, 0xac, 0x97, 0xa3, 0xcd, - 0xad, 0x97, 0xa3, 0xcd, 0xad, 0x97, 0xa3, 0xcd, 0xae, 0x97, 0xa3, 0xcd, - 0xae, 0x97, 0xa3, 0xcd, 0xae, 0x97, 0xa3, 0xcd, 0xaf, 0x97, 0xa3, 0xcd, - 0xaf, 0x97, 0xa3, 0xcd, 0xaf, 0x97, 0xa4, 0xcd, 0xb0, 0x94, 0xa3, 0xcd, - 0xb0, 0x97, 0xa4, 0xcd, 0xb0, 0x94, 0xa3, 0xcd, 0xb1, 0x97, 0xa4, 0xcd, - 0xb1, 0x94, 0xa3, 0xcd, 0xb2, 0x97, 0xa4, 0xcd, 0xb2, 0x94, 0xa3, 0xcd, - 0xb2, 0x97, 0xa4, 0xcd, 0xb3, 0x94, 0xa3, 0xcd, 0xb3, 0x97, 0xa4, 0xcd, - 0xb3, 0x94, 0xa3, 0xcd, 0xb4, 0x97, 0xa4, 0xcd, 0xb4, 0x94, 0xa3, 0xcd, - 0xb4, 0x97, 0xa4, 0xcd, 0xb5, 0x94, 0xa3, 0xcd, 0xb5, 0x97, 0xa4, 0xcd, - 0xb5, 0x94, 0xa3, 0xcd, 0xb6, 0x97, 0xa4, 0xcd, 0xb6, 0x94, 0xa3, 0xcd, - 0xb6, 0x97, 0xa4, 0xcd, 0xb7, 0x94, 0xa3, 0xcd, 0xb7, 0x97, 0xa4, 0xcd, - 0xb7, 0x94, 0xa3, 0xcd, 0xb8, 0x97, 0xa4, 0xcd, 0xb8, 0x94, 0xa3, 0xcd, - 0xb8, 0x97, 0xa4, 0xcd, 0xb9, 0x94, 0xa3, 0xcd, 0xb9, 0x97, 0xa4, 0xcd, - 0xb9, 0x94, 0xa3, 0xcd, 0xba, 0x97, 0xa4, 0xcd, 0xba, 0x94, 0xa3, 0xcd, - 0xba, 0x97, 0xa4, 0xcd, 0xbb, 0x94, 0xa4, 0xcd, 0xbb, 0x92, 0xa4, 0xcd, - 0xbb, 0x94, 0xa4, 0xcd, 0xbc, 0x92, 0xa4, 0xcd, 0xbc, 0x94, 0xa4, 0xcd, - 0xbc, 0x92, 0xa4, 0xcd, 0xbd, 0x94, 0xa4, 0xcd, 0xbd, 0x92, 0xd2, 0xcd, - 0xbd, 0xa2, 0xd2, 0xcd, 0xbe, 0xa4, 0xd2, 0xcd, 0xbe, 0xa2, 0xd2, 0xcd, - 0xbe, 0xa4, 0xd2, 0xcd, 0xbf, 0xa2, 0xd2, 0xcd, 0xbf, 0xa4, 0xd2, 0xcd, - 0xbf, 0xa2, 0xd3, 0xcd, 0xc0, 0x9f, 0xd2, 0xcd, 0xc0, 0xa2, 0xd3, 0xcd, - 0xc0, 0x9f, 0xd2, 0xcd, 0xc1, 0xa2, 0xd3, 0xcd, 0xc1, 0x9f, 0xd2, 0xcd, - 0xc1, 0xa2, 0xd3, 0xcd, 0xc1, 0x9f, 0xd2, 0xcd, 0xc2, 0xa2, 0xd3, 0xcd, - 0xc2, 0x9f, 0xd2, 0xcd, 0xc2, 0xa2, 0xd3, 0xcd, 0xc3, 0x9f, 0xd2, 0xcd, - 0xc3, 0xa2, 0xd3, 0xcd, 0xc3, 0x9f, 0xd2, 0xcd, 0xc4, 0xa2, 0xd3, 0xcd, - 0xc4, 0x9f, 0xd2, 0xcd, 0xc4, 0xa2, 0xd3, 0xcd, 0xc5, 0x9f, 0xd3, 0xcd, - 0xc5, 0x9c, 0xd3, 0xcd, 0xc5, 0x9f, 0xd3, 0xcd, 0xc6, 0x9c, 0xd3, 0xcd, - 0xc6, 0x9f, 0xd3, 0xcd, 0xc6, 0x9c, 0xd3, 0xcd, 0xc6, 0x9f, 0xd3, 0xcd, - 0xc7, 0x9c, 0xd3, 0xcd, 0xc7, 0x9f, 0xd3, 0xcd, 0xc7, 0x9c, 0xd3, 0xcd, - 0xc8, 0x9f, 0xd3, 0xcd, 0xc8, 0x9c, 0xd3, 0xcd, 0xc8, 0x9f, 0xd3, 0xcd, - 0xc9, 0x9c, 0xd3, 0xcd, 0xc9, 0x9f, 0xd3, 0xcd, 0xc9, 0x9c, 0xd3, 0xcd, - 0xc9, 0x9f, 0xd3, 0xcd, 0xca, 0x9c, 0xd3, 0xcd, 0xca, 0x9f, 0xd3, 0xcd, - 0xca, 0x9c, 0xd3, 0xcd, 0xcb, 0x9f, 0xd3, 0xcd, 0xcb, 0x9c, 0xd3, 0xcd, - 0xcb, 0x9f, 0xd3, 0xcd, 0xcc, 0x9c, 0xd3, 0xcd, 0xcc, 0x9f, 0xd3, 0xcd, - 0xcc, 0x9c, 0xd3, 0xcd, 0xcc, 0x9f, 0xd3, 0xcd, 0xcd, 0x9c, 0xd3, 0xcd, - 0xcd, 0x9f, 0xd3, 0xcd, 0xcd, 0x9c, 0xd3, 0xcd, 0xce, 0x9f, 0xd3, 0xcd, - 0xce, 0x9c, 0xd3, 0xcd, 0xce, 0x9f, 0xd3, 0xcd, 0xce, 0x9c, 0xd3, 0xcd, - 0xcf, 0x9b, 0xd3, 0xcd, 0xcf, 0x9c, 0xd3, 0xcd, 0xcf, 0x9b, 0xd3, 0xcd, - 0xd0, 0x9c, 0xd3, 0xcd, 0xd0, 0x9b, 0xd3, 0xcd, 0xd0, 0x9c, 0xd3, 0xcd, - 0xd0, 0x9b, 0xd3, 0xcd, 0xd1, 0x9c, 0xd3, 0xcd, 0xd1, 0x9b, 0xd3, 0xcd, - 0xd1, 0x9c, 0xd3, 0xcd, 0xd2, 0x9b, 0xd3, 0xcd, 0xd2, 0x9c, 0xd3, 0xcd, - 0xd2, 0x9b, 0xd3, 0xcd, 0xd2, 0x9c, 0xd3, 0xcd, 0xd3, 0x9b, 0xd3, 0xcd, - 0xd3, 0x9c, 0xd3, 0xcd, 0xd3, 0x9b, 0xd4, 0xcd, 0xd3, 0x9b, 0xd4, 0xcd, - 0xd3, 0x9b, 0xd4, 0xcd, 0xd3, 0x9b, 0xd4, 0xcc, 0xd3, 0x9b, 0xd5, 0xcd, - 0xd3, 0x9b, 0xd5, 0xcc, 0xd3, 0x9b, 0xd5, 0xcd, 0xd3, 0x9b, 0xd6, 0xcc, - 0xd3, 0x9b, 0xd6, 0xcd, 0xd3, 0x9b, 0xd6, 0xcc, 0xd3, 0x9b, 0xd6, 0xcd, - 0xd3, 0x9b, 0xd7, 0xcc, 0xd3, 0x9b, 0xd7, 0xcd, 0xd3, 0x9b, 0xd7, 0xcc, - 0xd3, 0x9b, 0xd7, 0xc8, 0xd7, 0x9b, 0xd8, 0xc9, 0xd9, 0x9b, 0xd8, 0xc9, - 0xda, 0x9b, 0xd8, 0xc9, 0xd9, 0x9b, 0xd9, 0xc9, 0xda, 0x9b, 0xd9, 0xc9, - 0xd9, 0x9b, 0xd9, 0xc9, 0xda, 0x9b, 0xd9, 0xc9, 0xd9, 0x9b, 0xda, 0xc9, - 0xda, 0x9b, 0xda, 0xc9, 0xda, 0x9b, 0xda, 0xc9, 0xda, 0x9b, 0xda, 0xc9, - 0xda, 0x9b, 0xdb, 0xc9, 0xdc, 0x9b, 0xdb, 0xc9, 0xdd, 0x9b, 0xdb, 0xc9, - 0xdc, 0x9b, 0xdb, 0xc9, 0xdd, 0x9b, 0xdc, 0xc9, 0xdc, 0x9b, 0xdc, 0xc9, - 0xdd, 0x9b, 0xdc, 0xc9, 0xdc, 0x9b, 0xdd, 0xc9, 0xdd, 0x9b, 0xdd, 0xc9, - 0xdd, 0x9b, 0xdd, 0xc9, 0xdd, 0x9b, 0xdd, 0xc9, 0xdd, 0x9b, 0xde, 0xca, - 0xdf, 0x9b, 0xde, 0xca, 0xdf, 0x9b, 0xde, 0xca, 0xdf, 0x9b, 0xde, 0xca, - 0xdf, 0x9b, 0xdf, 0xca, 0xdf, 0x9b, 0xdf, 0xca, 0xdf, 0x9b, 0xdf, 0xca, - 0xdf, 0x9b, 0xdf, 0xca, 0xdf, 0x9b, 0xe0, 0xca, 0xe0, 0x9b, 0xe0, 0xca, - 0xe0, 0x9b, 0xe0, 0xca, 0xe0, 0x9b, 0xe1, 0xca, 0xe1, 0x9b, 0xe1, 0xca, - 0xe1, 0x9b, 0xe1, 0xca, 0xe2, 0x9b, 0xe1, 0xca, 0xe2, 0x9b, 0xe2, 0xca, - 0xe2, 0x9b, 0xe2, 0xca, 0xe2, 0x9b, 0xe2, 0xca, 0xe2, 0x9b, 0xe2, 0xca, - 0xe2, 0x9b, 0xe3, 0xca, 0xe3, 0x9b, 0xe3, 0xca, 0xe3, 0x9b, 0xe3, 0xca, - 0xe3, 0x9b, 0xe3, 0xca, 0xe3, 0x9b, 0xe4, 0xca, 0xe4, 0x9b, 0xe4, 0xcb, - 0xe5, 0x9b, 0xe4, 0xcb, 0xe5, 0x9b, 0xe4, 0xcb, 0xe5, 0x9b, 0xe5, 0xcb, - 0xe5, 0x9b, 0xe5, 0xcb, 0xe5, 0x9b, 0xe5, 0xcb, 0xe5, 0x9b, 0xe5, 0xcb, - 0xe5, 0x9b, 0xe6, 0xcb, 0xe6, 0x9b, 0xe6, 0xcb, 0xe6, 0x9b, 0xe6, 0xcb, - 0xe6, 0x9b, 0xe6, 0xcb, 0xe6, 0x9b, 0xe7, 0xcc, 0xe8, 0x9b, 0xe7, 0xcc, - 0xe8, 0x9b, 0xe7, 0xcc, 0xe8, 0x9b, 0xe7, 0xcc, 0xe8, 0x9b, 0xe8, 0xcc, - 0xe8, 0x9b, 0xe8, 0xcc, 0xe8, 0x9b, 0xe8, 0xcc, 0xe8, 0x9b, 0xe8, 0xcc, - 0xe8, 0x9b, 0xe9, 0xcc, 0xe9, 0x9b, 0xe9, 0xcc, 0xe9, 0x9b, 0xe9, 0xcc, - 0xe9, 0x9b, 0xe9, 0xcc, 0xe9, 0x9b, 0xea, 0xcc, 0xea, 0x9b, 0xea, 0xcc, - 0xea, 0x9b, 0xea, 0xcc, 0xeb, 0x9b, 0xea, 0xcc, 0xea, 0x9b, 0xeb, 0xcc, - 0xeb, 0x9b, 0xeb, 0xcc, 0xeb, 0x9b, 0xeb, 0xcd, 0xeb, 0x9b, 0xeb, 0xcd, - 0xeb, 0x9b, 0xeb, 0xcd, 0xec, 0x9b, 0xeb, 0xcd, 0xec, 0x9b, 0xeb, 0xcd, - 0xec, 0x9b, 0xeb, 0xcd, 0xec, 0x9b, 0xee, 0xcd, 0xec, 0x9b, 0xee, 0xcd, - 0xed, 0x9d, 0xee, 0xcd, 0xed, 0x9b, 0xee, 0xcd, 0xed, 0x9b, 0xee, 0xcd, - 0xed, 0x9b, 0xee, 0xcd, 0xee, 0x9b, 0xee, 0xcd, 0xed, 0x9b, 0xee, 0xcd, - 0xee, 0x9b, 0xee, 0xcd, 0xed, 0x9b, 0xef, 0xcd, 0xee, 0x9b, 0xef, 0xcd, - 0xed, 0x9b, 0xef, 0xcd, 0xee, 0x9b, 0xef, 0xcd, 0xed, 0x9b, 0xf0, 0xcd, - 0xee, 0x9b, 0xf0, 0xcb, 0xee, 0x9b, 0xf0, 0xcd, 0xee, 0x9b, 0xf0, 0xcb, - 0xee, 0x9b, 0xf1, 0xcd, 0xee, 0x9b, 0xf1, 0xcb, 0xee, 0x9b, 0xf1, 0xcd, - 0xee, 0x9b, 0xf1, 0xcb, 0xee, 0x9b, 0xf2, 0xcd, 0xee, 0x9b, 0xf2, 0xcb, - 0xee, 0x9b, 0xf2, 0xcd, 0xee, 0x9b, 0xf2, 0xcb, 0xee, 0x9b, 0xf2, 0xcd, - 0xee, 0x9b, 0xf3, 0xcb, 0xee, 0x9b, 0xf3, 0xc7, 0xf5, 0x9b, 0xf3, 0xc7, - 0xf5, 0x9b, 0xf3, 0xc7, 0xf5, 0x9b, 0xf4, 0xc7, 0xf5, 0x9b, 0xf4, 0xc7, - 0xf5, 0x9b, 0xf4, 0xc7, 0xf5, 0x9b, 0xf4, 0xc7, 0xf5, 0x9b, 0xf5, 0xc7, - 0xf5, 0x9b, 0xf5, 0xc7, 0xf5, 0x9b, 0xf5, 0xc7, 0xf5, 0x9b, 0xf5, 0xc7, - 0xf5, 0x9b, 0xf5, 0xc7, 0xf5, 0x9b, 0xf6, 0xc7, 0xf6, 0x9b, 0xf6, 0xc7, - 0xf6, 0x9b, 0xf6, 0xc7, 0xf6, 0x9b, 0xf6, 0xc7, 0xf6, 0x9b, 0xf7, 0xc7, - 0xf7, 0x9b, 0xf7, 0xc7, 0xf7, 0x9b, 0xf7, 0xc7, 0xf7, 0x9b, 0xf7, 0xc7, - 0xf7, 0x9b, 0xf8, 0xc7, 0xf7, 0x9b, 0xf8, 0xc7, 0xf7, 0x9b, 0xf8, 0xc7, - 0xf7, 0x9b, 0xf8, 0xc7, 0xf7, 0x9b, 0xf8, 0xc7, 0xf7, 0x9b, 0xf9, 0xc7, - 0xf7, 0x9b, 0xf9, 0xc7, 0xf7, 0x9b, 0xf9, 0xc7, 0xf7, 0x9b, 0xf9, 0xc7, - 0xf7, 0x9b, 0xfa, 0xc7, 0xf7, 0x9b, 0xfa, 0xc7, 0xf7, 0x9b, 0xfa, 0xc7, - 0xf7, 0x9b, 0xfa, 0xc7, 0xf7, 0x9b, 0xfa, 0xc7, 0xf7, 0x9b, 0xfb, 0xc7, - 0xf7, 0x9b, 0xfb, 0xc7, 0xf7, 0x9b, 0xfb, 0xc7, 0xf7, 0x9b, 0xfb, 0xc7, - 0xf7, 0x9b, 0xfc, 0xc7, 0xf7, 0x9b, 0xfc, 0xc7, 0xf7, 0x9b, 0xfc, 0xc6, - 0xf8, 0x9b, 0xfc, 0xc7, 0xf7, 0x9b, 0xfc, 0xc6, 0xf8, 0x9b, 0xfd, 0xc7, - 0xf7, 0x9b, 0xfd, 0xc6, 0xf8, 0x9b, 0xfd, 0xc7, 0xf7, 0x9b, 0xfd, 0xc6, - 0xf8, 0x9b, 0xfe, 0xc7, 0xf7, 0x9b, 0xfe, 0xc6, 0xf8, 0x9b, 0xfe, 0xc7, - 0xf7, 0x9b, 0xfe, 0xc6, 0xf8, 0x9b, 0xfe, 0xc7, 0xf7, 0x9b, 0xff, 0xc6, - 0xf8, 0x9b, 0xff, 0xc7, 0xf7, 0x9b, 0x03, 0xd4, 0x8c, 0x9c, 0x0a, 0xd3, - 0x8d, 0x9c, 0x0f, 0xd4, 0x8c, 0x9c, 0x14, 0xd3, 0x8d, 0x9c, 0x17, 0xd0, - 0x8d, 0x9c, 0x1b, 0xd3, 0x8d, 0x9c, 0x1e, 0xd0, 0x8d, 0x9c, 0x20, 0xd3, - 0x8d, 0x9c, 0x23, 0xd0, 0x8d, 0x9c, 0x25, 0xd3, 0x8d, 0x9c, 0x27, 0xd0, - 0x8d, 0x9c, 0x29, 0xd3, 0x8d, 0x9c, 0x2b, 0xd0, 0x8d, 0x9c, 0x2d, 0xd3, - 0x8d, 0x9c, 0x2f, 0xd0, 0x8d, 0x9c, 0x31, 0xd3, 0x8d, 0x9c, 0x32, 0xd0, - 0x8d, 0x9c, 0x34, 0xd3, 0x8d, 0x9c, 0x35, 0xd0, 0x8d, 0x9c, 0x37, 0xd3, - 0x8d, 0x9c, 0x38, 0xd0, 0x8d, 0x9c, 0x3a, 0xd3, 0x8d, 0x9c, 0x3b, 0xd0, - 0x8d, 0x9c, 0x3c, 0xd3, 0x8d, 0x9c, 0x3e, 0xd0, 0x8d, 0x9c, 0x3f, 0xd3, - 0x8d, 0x9c, 0x40, 0xd0, 0x8d, 0x9c, 0x42, 0xd3, 0x8d, 0x9c, 0x43, 0xd0, - 0x8d, 0x9c, 0x44, 0xd3, 0x8d, 0x9c, 0x45, 0xd0, 0x8d, 0x9c, 0x46, 0xd3, - 0x8d, 0x9c, 0x47, 0xd0, 0x8d, 0x9c, 0x48, 0xd3, 0x8d, 0x9c, 0x49, 0xd0, - 0x8d, 0x9c, 0x4a, 0xd3, 0x8d, 0x9c, 0x4b, 0xd0, 0x8d, 0x9c, 0x4c, 0xd3, - 0x8d, 0x9c, 0x4d, 0xd0, 0x8d, 0x9c, 0x4e, 0xd3, 0x8d, 0x9c, 0x4f, 0xd0, - 0x8d, 0x9c, 0x50, 0xd3, 0x8d, 0x9c, 0x51, 0xd0, 0x8d, 0x9c, 0x52, 0xd3, - 0x8d, 0x9c, 0x53, 0xd0, 0x8d, 0x9c, 0x54, 0xcf, 0x8e, 0x9c, 0x55, 0xd0, - 0x8d, 0x9c, 0x56, 0xcf, 0x8e, 0x9c, 0x57, 0xd0, 0x8d, 0x9c, 0x58, 0xcf, - 0x8e, 0x9c, 0x58, 0xd0, 0x8d, 0x9c, 0x59, 0xcf, 0x8e, 0x9c, 0x5a, 0xd0, - 0x8d, 0x9c, 0x5b, 0xcf, 0x8e, 0x9c, 0x5c, 0xd0, 0x8d, 0x9c, 0x5d, 0xcf, - 0x8e, 0x9c, 0x5d, 0xd0, 0x8d, 0x9c, 0x5e, 0xcf, 0x8e, 0x9c, 0x5f, 0xd0, - 0x8d, 0x9c, 0x60, 0xcf, 0x8e, 0x9c, 0x60, 0xd0, 0x8d, 0x9c, 0x61, 0xcf, - 0x8e, 0x9c, 0x62, 0xd0, 0x8d, 0x9c, 0x63, 0xcf, 0x8e, 0x9c, 0x63, 0xd0, - 0x8d, 0x9c, 0x64, 0xcf, 0x8e, 0x9c, 0x65, 0xd0, 0x8d, 0x9c, 0x66, 0xcf, - 0x8e, 0x9c, 0x66, 0xd0, 0x8d, 0x9c, 0x67, 0xcf, 0x8e, 0x9c, 0x68, 0xd0, - 0x8d, 0x9c, 0x68, 0xcf, 0x8e, 0x9c, 0x69, 0xd0, 0x8d, 0x9c, 0x6a, 0xcf, - 0x8e, 0x9c, 0x6a, 0xd0, 0x8d, 0x9c, 0x6b, 0xcf, 0x8e, 0x9c, 0x6c, 0xd0, - 0x8d, 0x9c, 0x6c, 0xcf, 0x8e, 0x9c, 0x6d, 0xd0, 0x8d, 0x9c, 0x6e, 0xcf, - 0x8e, 0x9c, 0x6e, 0xd0, 0x8d, 0x9c, 0x6f, 0xcf, 0x8e, 0x9c, 0x70, 0xd0, - 0x8d, 0x9c, 0x70, 0xcf, 0x8e, 0x9c, 0x71, 0xd0, 0x8d, 0x9c, 0x72, 0xcf, - 0x8e, 0x9c, 0x72, 0xd0, 0x8d, 0x9c, 0x73, 0xcf, 0x8e, 0x9c, 0x73, 0xd0, - 0x8d, 0x9c, 0x74, 0xcf, 0x8e, 0x9c, 0x75, 0xd0, 0x8d, 0x9c, 0x75, 0xcf, - 0x8e, 0x9c, 0x76, 0xd0, 0x8d, 0x9c, 0x76, 0xcf, 0x8e, 0x9c, 0x77, 0xd0, - 0x8d, 0x9c, 0x78, 0xcf, 0x8e, 0x9c, 0x78, 0xd0, 0x8d, 0x9c, 0x79, 0xcf, - 0x8e, 0x9c, 0x79, 0xd0, 0x8d, 0x9c, 0x7a, 0xcf, 0x8e, 0x9c, 0x7a, 0xd0, - 0x8d, 0x9c, 0x7b, 0xcf, 0x8e, 0x9c, 0x7c, 0xcd, 0x8e, 0x9c, 0x7c, 0xcf, - 0x8e, 0x9c, 0x7d, 0xcd, 0x8e, 0x9c, 0x7d, 0xcf, 0x8e, 0x9c, 0x7e, 0xcd, - 0x8e, 0x9c, 0x7e, 0xcf, 0x8e, 0x9c, 0x7f, 0xcd, 0x8e, 0x9c, 0x7f, 0xcf, - 0x8e, 0x9c, 0x80, 0xcd, 0x8e, 0x9c, 0x81, 0xcf, 0x8e, 0x9c, 0x81, 0xcd, - 0x8e, 0x9c, 0x82, 0xcf, 0x8e, 0x9c, 0x82, 0xcd, 0x8e, 0x9c, 0x83, 0xcf, - 0x8e, 0x9c, 0x83, 0xcd, 0x8e, 0x9c, 0x84, 0xcf, 0x8e, 0x9c, 0x84, 0xcd, - 0x8e, 0x9c, 0x85, 0xcf, 0x8e, 0x9c, 0x85, 0xcd, 0x8e, 0x9c, 0x86, 0xcf, - 0x8e, 0x9c, 0x86, 0xcd, 0x8e, 0x9c, 0x87, 0xcf, 0x8e, 0x9c, 0x87, 0xcd, - 0x8e, 0x9c, 0x88, 0xcf, 0x8e, 0x9c, 0x88, 0xcd, 0x8e, 0x9c, 0x89, 0xcf, - 0x8e, 0x9c, 0x89, 0xcd, 0x8e, 0x9c, 0x8a, 0xcf, 0x8e, 0x9c, 0x8a, 0xcd, - 0x8e, 0x9c, 0x8b, 0xcd, 0x8e, 0x9c, 0x8b, 0xcd, 0x8e, 0x9c, 0x8c, 0xcd, - 0x8e, 0x9c, 0x8c, 0xcd, 0x8e, 0x9c, 0x8d, 0xcd, 0x8e, 0x9c, 0x8d, 0xcd, - 0x8e, 0x9c, 0x8e, 0xcd, 0x8e, 0x9c, 0x8e, 0xcd, 0x8e, 0x9b, 0x8e, 0xcd, - 0x8e, 0x9c, 0x8e, 0xcd, 0x8f, 0x9b, 0x8e, 0xcd, 0x8f, 0x9c, 0x8e, 0xcd, - 0x90, 0x9b, 0x8e, 0xcd, 0x90, 0x9c, 0x8e, 0xcd, 0x91, 0x9b, 0x8e, 0xcd, - 0x91, 0x9c, 0x8e, 0xcd, 0x92, 0x9b, 0x8e, 0xcd, 0x92, 0x9c, 0x8e, 0xcd, - 0x93, 0x9b, 0x8e, 0xcd, 0x93, 0x9c, 0x8e, 0xcd, 0x94, 0x9b, 0x8e, 0xcd, - 0x94, 0x9c, 0x8e, 0xcd, 0x94, 0x9b, 0x96, 0xcd, 0x95, 0x95, 0x95, 0xcd, - 0x95, 0x95, 0x96, 0xcd, 0x96, 0x95, 0x96, 0xcd, 0x96, 0x95, 0x97, 0xcd, - 0x97, 0x95, 0x97, 0xcd, 0x97, 0x95, 0x9a, 0xcd, 0x98, 0x96, 0x9a, 0xcd, - 0x98, 0x96, 0x9a, 0xcd, 0x98, 0x96, 0x9a, 0xcd, 0x99, 0x96, 0x9a, 0xcd, - 0x99, 0x96, 0x9a, 0xcd, 0x9a, 0x96, 0x9a, 0xcd, 0x9a, 0x96, 0x9a, 0xcd, - 0x9a, 0x96, 0x9b, 0xcd, 0x9b, 0x96, 0x9b, 0xcd, 0x9b, 0x96, 0x9c, 0xcd, - 0x9c, 0x96, 0x9f, 0xcd, 0x9c, 0x97, 0x9f, 0xcd, 0x9d, 0x97, 0x9f, 0xcd, - 0x9d, 0x97, 0x9f, 0xcd, 0x9d, 0x97, 0x9f, 0xcd, 0x9e, 0x97, 0x9f, 0xcd, - 0x9e, 0x97, 0x9f, 0xcd, 0x9f, 0x97, 0x9f, 0xcd, 0x9f, 0x97, 0x9f, 0xcd, - 0x9f, 0x97, 0xa0, 0xcd, 0xa0, 0x97, 0xa0, 0xcd, 0xa0, 0x97, 0xa1, 0xcd, - 0xa1, 0x97, 0xa1, 0xcd, 0xa1, 0x97, 0xa3, 0xcd, 0xa1, 0x98, 0xa2, 0xcd, - 0xa2, 0x97, 0xa3, 0xcd, 0xa2, 0x98, 0xa3, 0xcd, 0xa3, 0x97, 0xa3, 0xcd, - 0xa3, 0x98, 0xa3, 0xcd, 0xa3, 0x97, 0xa3, 0xcd, 0xa4, 0x98, 0xa3, 0xcd, - 0xa4, 0x97, 0xa3, 0xcd, 0xa5, 0x98, 0xa3, 0xcd, 0xa5, 0x97, 0xa3, 0xcd, - 0xa5, 0x98, 0xa3, 0xcd, 0xa6, 0x97, 0xa3, 0xcd, 0xa6, 0x98, 0xa3, 0xcd, - 0xa6, 0x97, 0xa3, 0xcd, 0xa7, 0x98, 0xa3, 0xcd, 0xa7, 0x97, 0xa3, 0xcd, - 0xa8, 0x98, 0xa3, 0xcd, 0xa8, 0x97, 0xa3, 0xcd, 0xa8, 0x98, 0xa3, 0xcd, - 0xa9, 0x97, 0xa3, 0xcd, 0xa9, 0x98, 0xa3, 0xcd, 0xaa, 0x97, 0xa3, 0xcd, - 0xaa, 0x98, 0xa3, 0xcd, 0xaa, 0x97, 0xa3, 0xcd, 0xab, 0x98, 0xa3, 0xcd, - 0xab, 0x97, 0xa3, 0xcd, 0xab, 0x98, 0xa3, 0xcd, 0xac, 0x97, 0xa3, 0xcd, - 0xac, 0x98, 0xa3, 0xcd, 0xac, 0x97, 0xa3, 0xcd, 0xad, 0x98, 0xa3, 0xcd, - 0xad, 0x97, 0xa3, 0xcd, 0xae, 0x98, 0xa3, 0xcd, 0xae, 0x97, 0xa3, 0xcd, - 0xae, 0x98, 0xa3, 0xcd, 0xaf, 0x97, 0xa3, 0xcd, 0xaf, 0x98, 0xa3, 0xcd, - 0xaf, 0x97, 0xa4, 0xcd, 0xb0, 0x95, 0xa3, 0xcd, 0xb0, 0x97, 0xa4, 0xcd, - 0xb0, 0x95, 0xa3, 0xcd, 0xb1, 0x97, 0xa4, 0xcd, 0xb1, 0x95, 0xa3, 0xcd, - 0xb2, 0x97, 0xa4, 0xcd, 0xb2, 0x95, 0xa3, 0xcd, 0xb2, 0x97, 0xa4, 0xcd, - 0xb3, 0x95, 0xa3, 0xcd, 0xb3, 0x97, 0xa4, 0xcd, 0xb3, 0x95, 0xa3, 0xcd, - 0xb4, 0x97, 0xa4, 0xcd, 0xb4, 0x95, 0xa3, 0xcd, 0xb4, 0x97, 0xa4, 0xcd, - 0xb5, 0x95, 0xa3, 0xcd, 0xb5, 0x97, 0xa4, 0xcd, 0xb5, 0x95, 0xa3, 0xcd, - 0xb6, 0x97, 0xa4, 0xcd, 0xb6, 0x95, 0xa3, 0xcd, 0xb6, 0x97, 0xa4, 0xcd, - 0xb7, 0x95, 0xa3, 0xcd, 0xb7, 0x97, 0xa4, 0xcd, 0xb7, 0x95, 0xa3, 0xcd, - 0xb8, 0x97, 0xa4, 0xcd, 0xb8, 0x95, 0xa3, 0xcd, 0xb8, 0x97, 0xa4, 0xcd, - 0xb9, 0x95, 0xa3, 0xcd, 0xb9, 0x97, 0xa4, 0xcd, 0xb9, 0x95, 0xa3, 0xcd, - 0xba, 0x97, 0xa4, 0xcd, 0xba, 0x95, 0xa3, 0xcd, 0xba, 0x97, 0xa4, 0xcd, - 0xbb, 0x95, 0xa3, 0xcd, 0xbb, 0x97, 0xa4, 0xcd, 0xbb, 0x95, 0xa3, 0xcd, - 0xbc, 0x97, 0xa4, 0xcd, 0xbc, 0x95, 0xa3, 0xcd, 0xbc, 0x97, 0xa4, 0xcd, - 0xbd, 0x95, 0xd2, 0xcd, 0xbd, 0xa5, 0xd2, 0xcd, 0xbd, 0xa2, 0xd2, 0xcd, - 0xbe, 0xa5, 0xd2, 0xcd, 0xbe, 0xa2, 0xd2, 0xcd, 0xbe, 0xa5, 0xd2, 0xcd, - 0xbf, 0xa2, 0xd2, 0xcd, 0xbf, 0xa5, 0xd2, 0xcd, 0xbf, 0xa2, 0xd3, 0xcd, - 0xc0, 0xa0, 0xd2, 0xcd, 0xc0, 0xa2, 0xd3, 0xcd, 0xc0, 0xa0, 0xd2, 0xcd, - 0xc1, 0xa2, 0xd3, 0xcd, 0xc1, 0xa0, 0xd2, 0xcd, 0xc1, 0xa2, 0xd3, 0xcd, - 0xc1, 0xa0, 0xd2, 0xcd, 0xc2, 0xa2, 0xd3, 0xcd, 0xc2, 0xa0, 0xd2, 0xcd, - 0xc2, 0xa2, 0xd3, 0xcd, 0xc3, 0xa0, 0xd2, 0xcd, 0xc3, 0xa2, 0xd3, 0xcd, - 0xc3, 0xa0, 0xd2, 0xcd, 0xc4, 0xa2, 0xd3, 0xcd, 0xc4, 0xa0, 0xd2, 0xcd, - 0xc4, 0xa2, 0xd3, 0xcd, 0xc5, 0xa0, 0xd2, 0xcd, 0xc5, 0xa2, 0xd3, 0xcd, - 0xc5, 0xa0, 0xd2, 0xcd, 0xc6, 0xa2, 0xd3, 0xcd, 0xc6, 0xa0, 0xd2, 0xcd, - 0xc6, 0xa2, 0xd3, 0xcd, 0xc6, 0xa0, 0xd2, 0xcd, 0xc7, 0xa2, 0xd3, 0xcd, - 0xc7, 0xa0, 0xd2, 0xcd, 0xc7, 0xa2, 0xd3, 0xcd, 0xc8, 0xa0, 0xd2, 0xcd, - 0xc8, 0xa2, 0xd3, 0xcd, 0xc8, 0xa0, 0xd3, 0xcd, 0xc9, 0x9d, 0xd3, 0xcd, - 0xc9, 0xa0, 0xd3, 0xcd, 0xc9, 0x9d, 0xd3, 0xcd, 0xc9, 0xa0, 0xd3, 0xcd, - 0xca, 0x9d, 0xd3, 0xcd, 0xca, 0xa0, 0xd3, 0xcd, 0xca, 0x9d, 0xd3, 0xcd, - 0xcb, 0xa0, 0xd3, 0xcd, 0xcb, 0x9d, 0xd3, 0xcd, 0xcb, 0xa0, 0xd3, 0xcd, - 0xcc, 0x9d, 0xd3, 0xcd, 0xcc, 0xa0, 0xd3, 0xcd, 0xcc, 0x9d, 0xd3, 0xcd, - 0xcc, 0xa0, 0xd3, 0xcd, 0xcd, 0x9d, 0xd3, 0xcd, 0xcd, 0xa0, 0xd3, 0xcd, - 0xcd, 0x9d, 0xd3, 0xcd, 0xce, 0xa0, 0xd3, 0xcd, 0xce, 0x9d, 0xd3, 0xcd, - 0xce, 0xa0, 0xd3, 0xcd, 0xce, 0x9d, 0xd3, 0xcd, 0xcf, 0x9c, 0xd3, 0xcd, - 0xcf, 0x9d, 0xd3, 0xcd, 0xcf, 0x9c, 0xd3, 0xcd, 0xd0, 0x9d, 0xd3, 0xcd, - 0xd0, 0x9c, 0xd3, 0xcd, 0xd0, 0x9d, 0xd3, 0xcd, 0xd0, 0x9c, 0xd3, 0xcd, - 0xd1, 0x9d, 0xd3, 0xcd, 0xd1, 0x9c, 0xd3, 0xcd, 0xd1, 0x9d, 0xd3, 0xcd, - 0xd2, 0x9c, 0xd3, 0xcd, 0xd2, 0x9d, 0xd3, 0xcd, 0xd2, 0x9c, 0xd3, 0xcd, - 0xd2, 0x9d, 0xd3, 0xcd, 0xd3, 0x9c, 0xd3, 0xcd, 0xd3, 0x9d, 0xd3, 0xcd, - 0xd3, 0x9c, 0xd4, 0xcd, 0xd3, 0x9c, 0xd4, 0xcd, 0xd3, 0x9c, 0xd4, 0xcd, - 0xd3, 0x9c, 0xd4, 0xcd, 0xd3, 0x9c, 0xd5, 0xcd, 0xd3, 0x9c, 0xd5, 0xcd, - 0xd3, 0x9c, 0xd5, 0xcd, 0xd3, 0x9c, 0xd6, 0xcb, 0xd3, 0x9c, 0xd6, 0xcd, - 0xd3, 0x9c, 0xd6, 0xcb, 0xd3, 0x9c, 0xd6, 0xcd, 0xd3, 0x9c, 0xd7, 0xcb, - 0xd3, 0x9c, 0xd7, 0xcd, 0xd3, 0x9c, 0xd7, 0xcb, 0xd3, 0x9c, 0xd7, 0xcd, - 0xd3, 0x9c, 0xd8, 0xc8, 0xd8, 0x9c, 0xd8, 0xc8, 0xd8, 0x9c, 0xd8, 0xc8, - 0xd8, 0x9c, 0xd9, 0xc8, 0xd9, 0x9c, 0xd9, 0xc8, 0xd9, 0x9c, 0xd9, 0xc8, - 0xd9, 0x9c, 0xd9, 0xc9, 0xdb, 0x9c, 0xda, 0xc9, 0xdb, 0x9c, 0xda, 0xc9, - 0xdb, 0x9c, 0xda, 0xc9, 0xdb, 0x9c, 0xda, 0xc9, 0xdb, 0x9c, 0xdb, 0xc9, - 0xdb, 0x9c, 0xdb, 0xc9, 0xdb, 0x9c, 0xdb, 0xc9, 0xdb, 0x9c, 0xdb, 0xc9, - 0xdb, 0x9c, 0xdc, 0xc9, 0xdc, 0x9c, 0xdc, 0xc9, 0xdc, 0x9c, 0xdc, 0xc9, - 0xde, 0x9c, 0xdd, 0xc9, 0xde, 0x9c, 0xdd, 0xc9, 0xde, 0x9c, 0xdd, 0xc9, - 0xde, 0x9c, 0xdd, 0xc9, 0xde, 0x9c, 0xde, 0xc9, 0xde, 0x9c, 0xde, 0xc9, - 0xde, 0x9c, 0xde, 0xc9, 0xde, 0x9c, 0xde, 0xc9, 0xde, 0x9c, 0xdf, 0xc9, - 0xdf, 0x9c, 0xdf, 0xc9, 0xdf, 0x9c, 0xdf, 0xca, 0xe1, 0x9c, 0xdf, 0xca, - 0xe1, 0x9c, 0xe0, 0xca, 0xe1, 0x9c, 0xe0, 0xca, 0xe1, 0x9c, 0xe0, 0xca, - 0xe1, 0x9c, 0xe1, 0xca, 0xe1, 0x9c, 0xe1, 0xca, 0xe1, 0x9c, 0xe1, 0xca, - 0xe1, 0x9c, 0xe1, 0xca, 0xe1, 0x9c, 0xe2, 0xca, 0xe2, 0x9c, 0xe2, 0xca, - 0xe2, 0x9c, 0xe2, 0xca, 0xe2, 0x9c, 0xe2, 0xca, 0xe2, 0x9c, 0xe3, 0xcb, - 0xe4, 0x9c, 0xe3, 0xcb, 0xe4, 0x9c, 0xe3, 0xcb, 0xe4, 0x9c, 0xe3, 0xcb, - 0xe4, 0x9c, 0xe4, 0xcb, 0xe4, 0x9c, 0xe4, 0xcb, 0xe4, 0x9c, 0xe4, 0xcb, - 0xe4, 0x9c, 0xe4, 0xcb, 0xe4, 0x9c, 0xe5, 0xcb, 0xe5, 0x9c, 0xe5, 0xcb, - 0xe5, 0x9c, 0xe5, 0xcb, 0xe5, 0x9c, 0xe5, 0xcb, 0xe6, 0x9c, 0xe6, 0xcb, - 0xe7, 0x9c, 0xe6, 0xcb, 0xe6, 0x9c, 0xe6, 0xcb, 0xe7, 0x9c, 0xe6, 0xcb, - 0xe6, 0x9c, 0xe7, 0xcb, 0xe7, 0x9c, 0xe7, 0xcb, 0xe7, 0x9c, 0xe7, 0xcb, - 0xe7, 0x9c, 0xe7, 0xcb, 0xe7, 0x9c, 0xe8, 0xcb, 0xe8, 0x9c, 0xe8, 0xcc, - 0xe9, 0x9c, 0xe8, 0xcc, 0xe9, 0x9c, 0xe8, 0xcc, 0xe9, 0x9c, 0xe9, 0xcc, - 0xe9, 0x9c, 0xe9, 0xcc, 0xe9, 0x9c, 0xe9, 0xcc, 0xe9, 0x9c, 0xe9, 0xcc, - 0xe9, 0x9c, 0xea, 0xcc, 0xea, 0x9c, 0xea, 0xcc, 0xea, 0x9c, 0xea, 0xcc, - 0xea, 0x9c, 0xea, 0xcc, 0xea, 0x9c, 0xeb, 0xcd, 0xeb, 0x9c, 0xeb, 0xcd, - 0xeb, 0x9c, 0xeb, 0xcd, 0xeb, 0x9b, 0xeb, 0xcd, 0xeb, 0x9c, 0xeb, 0xcd, - 0xec, 0x9b, 0xeb, 0xcd, 0xec, 0x9c, 0xeb, 0xcd, 0xec, 0x9b, 0xeb, 0xcd, - 0xec, 0x9c, 0xee, 0xcd, 0xec, 0x9c, 0xee, 0xcd, 0xed, 0x9e, 0xee, 0xcd, - 0xed, 0x9c, 0xee, 0xcd, 0xed, 0x9c, 0xee, 0xcd, 0xed, 0x9c, 0xee, 0xcd, - 0xee, 0x9c, 0xee, 0xcd, 0xed, 0x9c, 0xee, 0xcd, 0xee, 0x9c, 0xee, 0xcd, - 0xed, 0x9c, 0xef, 0xcd, 0xee, 0x9c, 0xef, 0xcd, 0xed, 0x9c, 0xef, 0xcd, - 0xee, 0x9c, 0xef, 0xcd, 0xed, 0x9c, 0xf0, 0xcd, 0xee, 0x9c, 0xf0, 0xcb, - 0xee, 0x9c, 0xf0, 0xcd, 0xee, 0x9c, 0xf0, 0xcb, 0xee, 0x9c, 0xf1, 0xcd, - 0xee, 0x9c, 0xf1, 0xcb, 0xee, 0x9c, 0xf1, 0xcd, 0xee, 0x9c, 0xf1, 0xcb, - 0xee, 0x9c, 0xf2, 0xcd, 0xee, 0x9c, 0xf2, 0xcb, 0xee, 0x9c, 0xf2, 0xcd, - 0xee, 0x9c, 0xf2, 0xcb, 0xee, 0x9c, 0xf2, 0xcd, 0xee, 0x9c, 0xf3, 0xcb, - 0xee, 0x9c, 0xf3, 0xcd, 0xee, 0x9c, 0xf3, 0xc6, 0xf3, 0x9c, 0xf3, 0xc6, - 0xf3, 0x9c, 0xf4, 0xc6, 0xf4, 0x9c, 0xf4, 0xc6, 0xf4, 0x9c, 0xf4, 0xc7, - 0xf6, 0x9c, 0xf4, 0xc7, 0xf6, 0x9c, 0xf5, 0xc7, 0xf6, 0x9c, 0xf5, 0xc7, - 0xf6, 0x9c, 0xf5, 0xc7, 0xf6, 0x9c, 0xf5, 0xc7, 0xf6, 0x9c, 0xf5, 0xc7, - 0xf6, 0x9c, 0xf6, 0xc7, 0xf6, 0x9c, 0xf6, 0xc7, 0xf6, 0x9c, 0xf6, 0xc7, - 0xf6, 0x9c, 0xf6, 0xc7, 0xf6, 0x9c, 0xf7, 0xc7, 0xf7, 0x9c, 0xf7, 0xc7, - 0xf7, 0x9c, 0xf7, 0xc7, 0xf7, 0x9c, 0xf7, 0xc7, 0xf7, 0x9c, 0xf8, 0xc7, - 0xf7, 0x9c, 0xf8, 0xc7, 0xf7, 0x9c, 0xf8, 0xc7, 0xf7, 0x9c, 0xf8, 0xc7, - 0xf7, 0x9c, 0xf8, 0xc7, 0xf7, 0x9c, 0xf9, 0xc7, 0xf7, 0x9c, 0xf9, 0xc7, - 0xf7, 0x9c, 0xf9, 0xc7, 0xf7, 0x9c, 0xf9, 0xc7, 0xf7, 0x9c, 0xfa, 0xc7, - 0xf7, 0x9c, 0xfa, 0xc7, 0xf7, 0x9c, 0xfa, 0xc7, 0xf7, 0x9c, 0xfa, 0xc7, - 0xf7, 0x9c, 0xfa, 0xc7, 0xf7, 0x9c, 0xfb, 0xc7, 0xf7, 0x9c, 0xfb, 0xc7, - 0xf7, 0x9c, 0xfb, 0xc7, 0xf7, 0x9c, 0xfb, 0xc7, 0xf7, 0x9c, 0xfc, 0xc7, - 0xf7, 0x9c, 0xfc, 0xc7, 0xf7, 0x9c, 0xfc, 0xc7, 0xf7, 0x9c, 0xfc, 0xc7, - 0xf7, 0x9c, 0xfc, 0xc7, 0xf7, 0x9c, 0xfd, 0xc7, 0xf7, 0x9c, 0xfd, 0xc7, - 0xf7, 0x9c, 0xfd, 0xc7, 0xf7, 0x9c, 0xfd, 0xc7, 0xf7, 0x9c, 0xfe, 0xc7, - 0xf7, 0x9c, 0xfe, 0xc7, 0xf7, 0x9c, 0xfe, 0xc7, 0xf7, 0x9c, 0xfe, 0xc7, - 0xf7, 0x9c, 0xfe, 0xc7, 0xf7, 0x9c, 0xff, 0xc7, 0xf7, 0x9c, 0xff, 0xc7, - 0xf7, 0x9c, 0x03, 0xd4, 0x8c, 0x9c, 0x0a, 0xd2, 0x8d, 0x9c, 0x0f, 0xd4, - 0x8c, 0x9c, 0x14, 0xd2, 0x8d, 0x9c, 0x17, 0xd4, 0x8c, 0x9c, 0x1b, 0xd2, - 0x8d, 0x9c, 0x1e, 0xd4, 0x8c, 0x9c, 0x20, 0xd2, 0x8d, 0x9c, 0x23, 0xd4, - 0x8c, 0x9c, 0x25, 0xd2, 0x8d, 0x9c, 0x27, 0xd4, 0x8c, 0x9c, 0x29, 0xd2, - 0x8d, 0x9c, 0x2b, 0xd4, 0x8c, 0x9c, 0x2d, 0xd2, 0x8d, 0x9c, 0x2f, 0xd4, - 0x8c, 0x9c, 0x31, 0xd2, 0x8d, 0x9c, 0x32, 0xd4, 0x8c, 0x9c, 0x34, 0xd2, - 0x8d, 0x9c, 0x35, 0xd4, 0x8c, 0x9c, 0x37, 0xd2, 0x8d, 0x9c, 0x38, 0xd4, - 0x8c, 0x9c, 0x3a, 0xd2, 0x8d, 0x9c, 0x3b, 0xd4, 0x8c, 0x9c, 0x3c, 0xd2, - 0x8d, 0x9c, 0x3e, 0xd4, 0x8c, 0x9c, 0x3f, 0xd2, 0x8d, 0x9c, 0x40, 0xd4, - 0x8c, 0x9c, 0x42, 0xd2, 0x8d, 0x9c, 0x43, 0xd1, 0x8d, 0x9c, 0x44, 0xd2, - 0x8d, 0x9c, 0x45, 0xd1, 0x8d, 0x9c, 0x46, 0xd2, 0x8d, 0x9c, 0x47, 0xd1, - 0x8d, 0x9c, 0x48, 0xd2, 0x8d, 0x9c, 0x49, 0xd1, 0x8d, 0x9c, 0x4a, 0xd2, - 0x8d, 0x9c, 0x4b, 0xd1, 0x8d, 0x9c, 0x4c, 0xd2, 0x8d, 0x9c, 0x4d, 0xd1, - 0x8d, 0x9c, 0x4e, 0xd2, 0x8d, 0x9c, 0x4f, 0xd1, 0x8d, 0x9c, 0x50, 0xd2, - 0x8d, 0x9c, 0x51, 0xd1, 0x8d, 0x9c, 0x52, 0xd2, 0x8d, 0x9c, 0x53, 0xd1, - 0x8d, 0x9c, 0x54, 0xd2, 0x8d, 0x9c, 0x55, 0xd1, 0x8d, 0x9c, 0x56, 0xd2, - 0x8d, 0x9c, 0x57, 0xd1, 0x8d, 0x9c, 0x58, 0xd2, 0x8d, 0x9c, 0x58, 0xd1, - 0x8d, 0x9c, 0x59, 0xd2, 0x8d, 0x9c, 0x5a, 0xd1, 0x8d, 0x9c, 0x5b, 0xd2, - 0x8d, 0x9c, 0x5c, 0xd1, 0x8d, 0x9c, 0x5d, 0xd2, 0x8d, 0x9c, 0x5d, 0xd1, - 0x8d, 0x9c, 0x5e, 0xd2, 0x8d, 0x9c, 0x5f, 0xd1, 0x8d, 0x9c, 0x60, 0xd2, - 0x8d, 0x9c, 0x60, 0xd1, 0x8d, 0x9c, 0x61, 0xd2, 0x8d, 0x9c, 0x62, 0xd1, - 0x8d, 0x9c, 0x63, 0xd2, 0x8d, 0x9c, 0x63, 0xd1, 0x8d, 0x9c, 0x64, 0xcf, - 0x8e, 0x9c, 0x65, 0xd1, 0x8d, 0x9c, 0x66, 0xcf, 0x8e, 0x9c, 0x66, 0xd1, - 0x8d, 0x9c, 0x67, 0xcf, 0x8e, 0x9c, 0x68, 0xd1, 0x8d, 0x9c, 0x68, 0xcf, - 0x8e, 0x9c, 0x69, 0xd1, 0x8d, 0x9c, 0x6a, 0xcf, 0x8e, 0x9c, 0x6a, 0xd1, - 0x8d, 0x9c, 0x6b, 0xcf, 0x8e, 0x9c, 0x6c, 0xd1, 0x8d, 0x9c, 0x6c, 0xcf, - 0x8e, 0x9c, 0x6d, 0xd1, 0x8d, 0x9c, 0x6e, 0xcf, 0x8e, 0x9c, 0x6e, 0xd1, - 0x8d, 0x9c, 0x6f, 0xcf, 0x8e, 0x9c, 0x70, 0xd1, 0x8d, 0x9c, 0x70, 0xcf, - 0x8e, 0x9c, 0x71, 0xd1, 0x8d, 0x9c, 0x72, 0xcf, 0x8e, 0x9c, 0x72, 0xd1, - 0x8d, 0x9c, 0x73, 0xcf, 0x8e, 0x9c, 0x73, 0xd1, 0x8d, 0x9c, 0x74, 0xcf, - 0x8e, 0x9c, 0x75, 0xd1, 0x8d, 0x9c, 0x75, 0xcf, 0x8e, 0x9c, 0x76, 0xd1, - 0x8d, 0x9c, 0x76, 0xcf, 0x8e, 0x9c, 0x77, 0xd1, 0x8d, 0x9c, 0x78, 0xcf, - 0x8e, 0x9c, 0x78, 0xd1, 0x8d, 0x9c, 0x79, 0xcf, 0x8e, 0x9c, 0x79, 0xd1, - 0x8d, 0x9c, 0x7a, 0xcf, 0x8e, 0x9c, 0x7a, 0xd1, 0x8d, 0x9c, 0x7b, 0xcf, - 0x8e, 0x9c, 0x7c, 0xcd, 0x8e, 0x9c, 0x7c, 0xcf, 0x8e, 0x9c, 0x7d, 0xcd, - 0x8e, 0x9c, 0x7d, 0xcf, 0x8e, 0x9c, 0x7e, 0xcd, 0x8e, 0x9c, 0x7e, 0xcf, - 0x8e, 0x9c, 0x7f, 0xcd, 0x8e, 0x9c, 0x7f, 0xcf, 0x8e, 0x9c, 0x80, 0xcd, - 0x8e, 0x9c, 0x81, 0xcf, 0x8e, 0x9c, 0x81, 0xcd, 0x8e, 0x9c, 0x82, 0xcf, - 0x8e, 0x9c, 0x82, 0xcd, 0x8e, 0x9c, 0x83, 0xcf, 0x8e, 0x9c, 0x83, 0xcd, - 0x8e, 0x9c, 0x84, 0xcf, 0x8e, 0x9c, 0x84, 0xcd, 0x8e, 0x9c, 0x85, 0xcf, - 0x8e, 0x9c, 0x85, 0xcd, 0x8e, 0x9c, 0x86, 0xcf, 0x8e, 0x9c, 0x86, 0xcd, - 0x8e, 0x9c, 0x87, 0xcf, 0x8e, 0x9c, 0x87, 0xcd, 0x8e, 0x9c, 0x88, 0xcf, - 0x8e, 0x9c, 0x88, 0xcd, 0x8e, 0x9c, 0x89, 0xcf, 0x8e, 0x9c, 0x89, 0xcd, - 0x8e, 0x9c, 0x8a, 0xcf, 0x8e, 0x9c, 0x8a, 0xcd, 0x8e, 0x9c, 0x8b, 0xcd, - 0x8e, 0x9c, 0x8b, 0xcd, 0x8e, 0x9c, 0x8c, 0xcd, 0x8e, 0x9c, 0x8c, 0xcd, - 0x8e, 0x9c, 0x8d, 0xcd, 0x8e, 0x9c, 0x8d, 0xcd, 0x8e, 0x9c, 0x8e, 0xcd, - 0x8e, 0x9c, 0x8d, 0xcd, 0x8e, 0x9c, 0x8e, 0xcd, 0x8e, 0x9c, 0x8d, 0xcd, - 0x8f, 0x9c, 0x8e, 0xcd, 0x8f, 0x9c, 0x8e, 0xcd, 0x90, 0x9a, 0x8e, 0xcd, - 0x90, 0x9c, 0x8e, 0xcd, 0x91, 0x9a, 0x8e, 0xcd, 0x91, 0x9c, 0x8e, 0xcd, - 0x92, 0x9a, 0x8e, 0xcd, 0x92, 0x9c, 0x8e, 0xcd, 0x93, 0x9a, 0x8e, 0xcd, - 0x93, 0x9c, 0x8e, 0xcd, 0x94, 0x9a, 0x8e, 0xcd, 0x94, 0x9c, 0x8e, 0xcd, - 0x94, 0x9a, 0x98, 0xcd, 0x95, 0x95, 0x98, 0xcd, 0x95, 0x95, 0x98, 0xcd, - 0x96, 0x95, 0x98, 0xcd, 0x96, 0x95, 0x98, 0xcd, 0x97, 0x95, 0x98, 0xcd, - 0x97, 0x95, 0x98, 0xcd, 0x98, 0x95, 0x98, 0xcd, 0x98, 0x95, 0x98, 0xcd, - 0x98, 0x95, 0x99, 0xcd, 0x99, 0x95, 0x99, 0xcd, 0x99, 0x95, 0x9c, 0xcd, - 0x9a, 0x96, 0x9d, 0xcd, 0x9a, 0x96, 0x9c, 0xcd, 0x9a, 0x96, 0x9d, 0xcd, - 0x9b, 0x96, 0x9c, 0xcd, 0x9b, 0x96, 0x9d, 0xcd, 0x9c, 0x96, 0x9c, 0xcd, - 0x9c, 0x96, 0x9d, 0xcd, 0x9d, 0x96, 0x9d, 0xcd, 0x9d, 0x96, 0x9d, 0xcd, - 0x9d, 0x96, 0x9e, 0xcd, 0x9e, 0x96, 0xa1, 0xcd, 0x9e, 0x97, 0xa1, 0xcd, - 0x9f, 0x97, 0xa1, 0xcd, 0x9f, 0x97, 0xa1, 0xcd, 0x9f, 0x97, 0xa1, 0xcd, - 0xa0, 0x97, 0xa1, 0xcd, 0xa0, 0x97, 0xa1, 0xcd, 0xa1, 0x97, 0xa1, 0xcd, - 0xa1, 0x97, 0xa1, 0xcd, 0xa1, 0x97, 0xa2, 0xcd, 0xa2, 0x97, 0xa2, 0xcd, - 0xa2, 0x97, 0xa3, 0xcd, 0xa3, 0x97, 0xa3, 0xcd, 0xa3, 0x97, 0xa3, 0xcd, - 0xa3, 0x97, 0xa3, 0xcd, 0xa4, 0x97, 0xa3, 0xcd, 0xa4, 0x97, 0xa3, 0xcd, - 0xa5, 0x97, 0xa3, 0xcd, 0xa5, 0x97, 0xa3, 0xcd, 0xa5, 0x97, 0xa3, 0xcd, - 0xa6, 0x97, 0xa3, 0xcd, 0xa6, 0x97, 0xa3, 0xcd, 0xa6, 0x97, 0xa3, 0xcd, - 0xa7, 0x97, 0xa3, 0xcd, 0xa7, 0x97, 0xa3, 0xcd, 0xa8, 0x97, 0xa3, 0xcd, - 0xa8, 0x97, 0xa3, 0xcd, 0xa8, 0x97, 0xa3, 0xcd, 0xa9, 0x97, 0xa3, 0xcd, - 0xa9, 0x97, 0xa3, 0xcd, 0xaa, 0x97, 0xa3, 0xcd, 0xaa, 0x97, 0xa3, 0xcd, - 0xaa, 0x97, 0xa3, 0xcd, 0xab, 0x97, 0xa3, 0xcd, 0xab, 0x97, 0xa3, 0xcd, - 0xab, 0x97, 0xa3, 0xcd, 0xac, 0x97, 0xa3, 0xcd, 0xac, 0x97, 0xa3, 0xcd, - 0xac, 0x97, 0xa3, 0xcd, 0xad, 0x97, 0xa3, 0xcd, 0xad, 0x97, 0xa3, 0xcd, - 0xae, 0x97, 0xa3, 0xcd, 0xae, 0x97, 0xa3, 0xcd, 0xae, 0x97, 0xa3, 0xcd, - 0xaf, 0x97, 0xa3, 0xcd, 0xaf, 0x97, 0xa3, 0xcd, 0xaf, 0x97, 0xa3, 0xcd, - 0xb0, 0x97, 0xa3, 0xcd, 0xb0, 0x97, 0xa3, 0xcd, 0xb0, 0x97, 0xa3, 0xcd, - 0xb1, 0x97, 0xa3, 0xcd, 0xb1, 0x97, 0xa3, 0xcd, 0xb2, 0x97, 0xa3, 0xcd, - 0xb2, 0x97, 0xa3, 0xcd, 0xb2, 0x97, 0xa4, 0xcd, 0xb3, 0x94, 0xa3, 0xcd, - 0xb3, 0x97, 0xa4, 0xcd, 0xb3, 0x94, 0xa3, 0xcd, 0xb4, 0x97, 0xa4, 0xcd, - 0xb4, 0x94, 0xa3, 0xcd, 0xb4, 0x97, 0xa4, 0xcd, 0xb5, 0x94, 0xa3, 0xcd, - 0xb5, 0x97, 0xa4, 0xcd, 0xb5, 0x94, 0xa3, 0xcd, 0xb6, 0x97, 0xa4, 0xcd, - 0xb6, 0x94, 0xa3, 0xcd, 0xb6, 0x97, 0xa4, 0xcd, 0xb7, 0x94, 0xa3, 0xcd, - 0xb7, 0x97, 0xa4, 0xcd, 0xb7, 0x94, 0xa3, 0xcd, 0xb8, 0x97, 0xa4, 0xcd, - 0xb8, 0x94, 0xa3, 0xcd, 0xb8, 0x97, 0xa4, 0xcd, 0xb9, 0x94, 0xa3, 0xcd, - 0xb9, 0x97, 0xa4, 0xcd, 0xb9, 0x94, 0xa3, 0xcd, 0xba, 0x97, 0xa4, 0xcd, - 0xba, 0x94, 0xa3, 0xcd, 0xba, 0x97, 0xa4, 0xcd, 0xbb, 0x94, 0xa3, 0xcd, - 0xbb, 0x97, 0xa4, 0xcd, 0xbb, 0x94, 0xa3, 0xcd, 0xbc, 0x97, 0xa4, 0xcd, - 0xbc, 0x94, 0xa3, 0xcd, 0xbc, 0x97, 0xa4, 0xcd, 0xbd, 0x94, 0xd2, 0xcd, - 0xbd, 0xa4, 0xd2, 0xcd, 0xbd, 0xa2, 0xd2, 0xcd, 0xbe, 0xa4, 0xd2, 0xcd, - 0xbe, 0xa2, 0xd2, 0xcd, 0xbe, 0xa4, 0xd2, 0xcd, 0xbf, 0xa2, 0xd2, 0xcd, - 0xbf, 0xa4, 0xd2, 0xcd, 0xbf, 0xa2, 0xd2, 0xcd, 0xc0, 0xa4, 0xd2, 0xcd, - 0xc0, 0xa2, 0xd2, 0xcd, 0xc0, 0xa4, 0xd2, 0xcd, 0xc1, 0xa2, 0xd2, 0xcd, - 0xc1, 0xa4, 0xd2, 0xcd, 0xc1, 0xa2, 0xd2, 0xcd, 0xc1, 0xa4, 0xd2, 0xcd, - 0xc2, 0xa2, 0xd3, 0xcd, 0xc2, 0x9f, 0xd2, 0xcd, 0xc2, 0xa2, 0xd3, 0xcd, - 0xc3, 0x9f, 0xd2, 0xcd, 0xc3, 0xa2, 0xd3, 0xcd, 0xc3, 0x9f, 0xd2, 0xcd, - 0xc4, 0xa2, 0xd3, 0xcd, 0xc4, 0x9f, 0xd2, 0xcd, 0xc4, 0xa2, 0xd3, 0xcd, - 0xc5, 0x9f, 0xd2, 0xcd, 0xc5, 0xa2, 0xd3, 0xcd, 0xc5, 0x9f, 0xd2, 0xcd, - 0xc6, 0xa2, 0xd3, 0xcd, 0xc6, 0x9f, 0xd2, 0xcd, 0xc6, 0xa2, 0xd3, 0xcd, - 0xc6, 0x9f, 0xd2, 0xcd, 0xc7, 0xa2, 0xd3, 0xcd, 0xc7, 0x9f, 0xd2, 0xcd, - 0xc7, 0xa2, 0xd3, 0xcd, 0xc8, 0x9f, 0xd2, 0xcd, 0xc8, 0xa2, 0xd3, 0xcd, - 0xc8, 0x9f, 0xd3, 0xcd, 0xc9, 0x9c, 0xd3, 0xcd, 0xc9, 0x9f, 0xd3, 0xcd, - 0xc9, 0x9c, 0xd3, 0xcd, 0xc9, 0x9f, 0xd3, 0xcd, 0xca, 0x9c, 0xd3, 0xcd, - 0xca, 0x9f, 0xd3, 0xcd, 0xca, 0x9c, 0xd3, 0xcd, 0xcb, 0x9f, 0xd3, 0xcd, - 0xcb, 0x9c, 0xd3, 0xcd, 0xcb, 0x9f, 0xd3, 0xcd, 0xcc, 0x9c, 0xd3, 0xcd, - 0xcc, 0x9f, 0xd3, 0xcd, 0xcc, 0x9c, 0xd3, 0xcd, 0xcc, 0x9f, 0xd3, 0xcd, - 0xcd, 0x9c, 0xd3, 0xcd, 0xcd, 0x9f, 0xd3, 0xcd, 0xcd, 0x9c, 0xd3, 0xcd, - 0xce, 0x9f, 0xd3, 0xcd, 0xce, 0x9c, 0xd3, 0xcd, 0xce, 0x9f, 0xd3, 0xcd, - 0xce, 0x9c, 0xd3, 0xcd, 0xcf, 0x9f, 0xd3, 0xcd, 0xcf, 0x9c, 0xd3, 0xcd, - 0xcf, 0x9f, 0xd3, 0xcd, 0xd0, 0x9c, 0xd3, 0xcd, 0xd0, 0x9f, 0xd3, 0xcd, - 0xd0, 0x9c, 0xd3, 0xcd, 0xd0, 0x9f, 0xd3, 0xcd, 0xd1, 0x9c, 0xd3, 0xcd, - 0xd1, 0x9c, 0xd3, 0xcd, 0xd1, 0x9c, 0xd3, 0xcd, 0xd2, 0x9c, 0xd3, 0xcd, - 0xd2, 0x9c, 0xd3, 0xcd, 0xd2, 0x9c, 0xd3, 0xcd, 0xd2, 0x9c, 0xd3, 0xcd, - 0xd3, 0x9c, 0xd3, 0xcd, 0xd3, 0x9c, 0xd3, 0xcd, 0xd3, 0x9c, 0xd4, 0xcd, - 0xd3, 0x9c, 0xd4, 0xcd, 0xd3, 0x9c, 0xd4, 0xcd, 0xd3, 0x9c, 0xd4, 0xcd, - 0xd3, 0x9c, 0xd5, 0xcd, 0xd3, 0x9c, 0xd5, 0xcd, 0xd3, 0x9c, 0xd5, 0xcd, - 0xd3, 0x9c, 0xd6, 0xcc, 0xd3, 0x9c, 0xd6, 0xcd, 0xd3, 0x9c, 0xd6, 0xcc, - 0xd3, 0x9c, 0xd6, 0xcd, 0xd3, 0x9c, 0xd7, 0xcc, 0xd3, 0x9c, 0xd7, 0xcd, - 0xd3, 0x9c, 0xd7, 0xcc, 0xd3, 0x9c, 0xd7, 0xcd, 0xd3, 0x9c, 0xd8, 0xc9, - 0xd9, 0x9c, 0xd8, 0xc9, 0xda, 0x9c, 0xd8, 0xc9, 0xd9, 0x9c, 0xd9, 0xc9, - 0xda, 0x9c, 0xd9, 0xc9, 0xd9, 0x9c, 0xd9, 0xc9, 0xda, 0x9c, 0xd9, 0xc9, - 0xd9, 0x9c, 0xda, 0xc9, 0xda, 0x9c, 0xda, 0xc9, 0xda, 0x9c, 0xda, 0xc9, - 0xda, 0x9c, 0xda, 0xc9, 0xda, 0x9c, 0xdb, 0xc9, 0xdc, 0x9c, 0xdb, 0xc9, - 0xdd, 0x9c, 0xdb, 0xc9, 0xdc, 0x9c, 0xdb, 0xc9, 0xdd, 0x9c, 0xdc, 0xc9, - 0xdc, 0x9c, 0xdc, 0xc9, 0xdd, 0x9c, 0xdc, 0xc9, 0xdc, 0x9c, 0xdd, 0xc9, - 0xdd, 0x9c, 0xdd, 0xc9, 0xdd, 0x9c, 0xdd, 0xc9, 0xdd, 0x9c, 0xdd, 0xc9, - 0xdd, 0x9c, 0xde, 0xca, 0xdf, 0x9c, 0xde, 0xca, 0xdf, 0x9c, 0xde, 0xca, - 0xdf, 0x9c, 0xde, 0xca, 0xdf, 0x9c, 0xdf, 0xca, 0xdf, 0x9c, 0xdf, 0xca, - 0xdf, 0x9c, 0xdf, 0xca, 0xdf, 0x9c, 0xdf, 0xca, 0xdf, 0x9c, 0xe0, 0xca, - 0xe0, 0x9c, 0xe0, 0xca, 0xe0, 0x9c, 0xe0, 0xca, 0xe0, 0x9c, 0xe1, 0xca, - 0xe2, 0x9c, 0xe1, 0xca, 0xe2, 0x9c, 0xe1, 0xca, 0xe2, 0x9c, 0xe1, 0xca, - 0xe2, 0x9c, 0xe2, 0xca, 0xe2, 0x9c, 0xe2, 0xca, 0xe2, 0x9c, 0xe2, 0xca, - 0xe2, 0x9c, 0xe2, 0xca, 0xe2, 0x9c, 0xe3, 0xca, 0xe3, 0x9c, 0xe3, 0xca, - 0xe3, 0x9c, 0xe3, 0xca, 0xe3, 0x9c, 0xe3, 0xca, 0xe3, 0x9c, 0xe4, 0xca, - 0xe4, 0x9c, 0xe4, 0xcb, 0xe5, 0x9c, 0xe4, 0xcb, 0xe5, 0x9c, 0xe4, 0xcb, - 0xe5, 0x9c, 0xe5, 0xcb, 0xe5, 0x9c, 0xe5, 0xcb, 0xe5, 0x9c, 0xe5, 0xcb, - 0xe5, 0x9c, 0xe5, 0xcb, 0xe5, 0x9c, 0xe6, 0xcb, 0xe6, 0x9c, 0xe6, 0xcb, - 0xe6, 0x9c, 0xe6, 0xcb, 0xe6, 0x9c, 0xe6, 0xcb, 0xe6, 0x9c, 0xe7, 0xcc, - 0xe8, 0x9c, 0xe7, 0xcc, 0xe8, 0x9c, 0xe7, 0xcc, 0xe8, 0x9c, 0xe7, 0xcc, - 0xe8, 0x9c, 0xe8, 0xcc, 0xe8, 0x9c, 0xe8, 0xcc, 0xe8, 0x9c, 0xe8, 0xcc, - 0xe8, 0x9c, 0xe8, 0xcc, 0xe8, 0x9c, 0xe9, 0xcc, 0xe9, 0x9c, 0xe9, 0xcc, - 0xe9, 0x9c, 0xe9, 0xcc, 0xe9, 0x9c, 0xe9, 0xcc, 0xea, 0x9c, 0xea, 0xcc, - 0xeb, 0x9c, 0xea, 0xcc, 0xea, 0x9c, 0xea, 0xcd, 0xeb, 0x9c, 0xea, 0xcc, - 0xea, 0x9c, 0xeb, 0xcd, 0xeb, 0x9c, 0xeb, 0xcd, 0xeb, 0x9c, 0xeb, 0xcd, - 0xeb, 0x9c, 0xeb, 0xcd, 0xeb, 0x9c, 0xeb, 0xcd, 0xec, 0x9c, 0xeb, 0xcd, - 0xec, 0x9c, 0xeb, 0xcd, 0xec, 0x9c, 0xeb, 0xcd, 0xec, 0x9c, 0xee, 0xcd, - 0xec, 0x9c, 0xee, 0xcd, 0xed, 0x9d, 0xee, 0xcd, 0xed, 0x9c, 0xee, 0xcd, - 0xed, 0x9d, 0xee, 0xcd, 0xed, 0x9c, 0xee, 0xcd, 0xee, 0x9c, 0xee, 0xcd, - 0xed, 0x9c, 0xee, 0xcd, 0xee, 0x9c, 0xee, 0xcd, 0xed, 0x9c, 0xef, 0xcd, - 0xee, 0x9c, 0xef, 0xcd, 0xed, 0x9c, 0xef, 0xcd, 0xee, 0x9c, 0xef, 0xcd, - 0xed, 0x9c, 0xf0, 0xcd, 0xee, 0x9c, 0xf0, 0xcd, 0xed, 0x9c, 0xf0, 0xcd, - 0xee, 0x9c, 0xf0, 0xcd, 0xed, 0x9c, 0xf1, 0xcd, 0xee, 0x9c, 0xf1, 0xcd, - 0xed, 0x9c, 0xf1, 0xcd, 0xee, 0x9c, 0xf1, 0xcd, 0xed, 0x9c, 0xf2, 0xcd, - 0xee, 0x9c, 0xf2, 0xcb, 0xee, 0x9c, 0xf2, 0xcd, 0xee, 0x9c, 0xf2, 0xcb, - 0xee, 0x9c, 0xf2, 0xcd, 0xee, 0x9c, 0xf3, 0xcb, 0xee, 0x9c, 0xf3, 0xcd, - 0xee, 0x9c, 0xf3, 0xc7, 0xf5, 0x9c, 0xf3, 0xc7, 0xf5, 0x9c, 0xf4, 0xc7, - 0xf5, 0x9c, 0xf4, 0xc7, 0xf5, 0x9c, 0xf4, 0xc7, 0xf5, 0x9c, 0xf4, 0xc7, - 0xf5, 0x9c, 0xf5, 0xc7, 0xf5, 0x9c, 0xf5, 0xc7, 0xf5, 0x9c, 0xf5, 0xc7, - 0xf5, 0x9c, 0xf5, 0xc7, 0xf5, 0x9c, 0xf5, 0xc7, 0xf5, 0x9c, 0xf6, 0xc7, - 0xf6, 0x9c, 0xf6, 0xc7, 0xf6, 0x9c, 0xf6, 0xc7, 0xf6, 0x9c, 0xf6, 0xc7, - 0xf6, 0x9c, 0xf7, 0xc7, 0xf7, 0x9c, 0xf7, 0xc7, 0xf7, 0x9c, 0xf7, 0xc7, - 0xf7, 0x9c, 0xf7, 0xc7, 0xf7, 0x9c, 0xf8, 0xc7, 0xf7, 0x9c, 0xf8, 0xc7, - 0xf7, 0x9c, 0xf8, 0xc7, 0xf7, 0x9c, 0xf8, 0xc7, 0xf7, 0x9c, 0xf8, 0xc7, - 0xf7, 0x9c, 0xf9, 0xc7, 0xf7, 0x9c, 0xf9, 0xc7, 0xf7, 0x9c, 0xf9, 0xc7, - 0xf7, 0x9c, 0xf9, 0xc7, 0xf7, 0x9c, 0xfa, 0xc7, 0xf7, 0x9c, 0xfa, 0xc7, - 0xf7, 0x9c, 0xfa, 0xc7, 0xf7, 0x9c, 0xfa, 0xc7, 0xf7, 0x9c, 0xfa, 0xc7, - 0xf7, 0x9c, 0xfb, 0xc7, 0xf7, 0x9c, 0xfb, 0xc7, 0xf7, 0x9c, 0xfb, 0xc7, - 0xf7, 0x9c, 0xfb, 0xc7, 0xf7, 0x9c, 0xfc, 0xc7, 0xf7, 0x9c, 0xfc, 0xc7, - 0xf7, 0x9c, 0xfc, 0xc7, 0xf7, 0x9c, 0xfc, 0xc7, 0xf7, 0x9c, 0xfc, 0xc7, - 0xf7, 0x9c, 0xfd, 0xc7, 0xf7, 0x9c, 0xfd, 0xc6, 0xf8, 0x9c, 0xfd, 0xc7, - 0xf7, 0x9c, 0xfd, 0xc6, 0xf8, 0x9c, 0xfe, 0xc7, 0xf7, 0x9c, 0xfe, 0xc6, - 0xf8, 0x9c, 0xfe, 0xc7, 0xf7, 0x9c, 0xfe, 0xc6, 0xf8, 0x9c, 0xfe, 0xc7, - 0xf7, 0x9c, 0xff, 0xc6, 0xf8, 0x9c, 0xff, 0xc7, 0xf7, 0x9c, 0x03, 0xd4, - 0x8c, 0x9d, 0x0a, 0xd3, 0x8d, 0x9d, 0x0f, 0xd4, 0x8c, 0x9d, 0x14, 0xd3, - 0x8d, 0x9d, 0x17, 0xd4, 0x8c, 0x9d, 0x1b, 0xd3, 0x8d, 0x9d, 0x1e, 0xd4, - 0x8c, 0x9d, 0x20, 0xd3, 0x8d, 0x9d, 0x23, 0xd4, 0x8c, 0x9d, 0x25, 0xd3, - 0x8d, 0x9d, 0x27, 0xd4, 0x8c, 0x9d, 0x29, 0xd3, 0x8d, 0x9d, 0x2b, 0xd4, - 0x8c, 0x9d, 0x2d, 0xd3, 0x8d, 0x9d, 0x2f, 0xd4, 0x8c, 0x9d, 0x31, 0xd3, - 0x8d, 0x9d, 0x32, 0xd0, 0x8d, 0x9d, 0x34, 0xd3, 0x8d, 0x9d, 0x35, 0xd0, - 0x8d, 0x9d, 0x37, 0xd3, 0x8d, 0x9d, 0x38, 0xd0, 0x8d, 0x9d, 0x3a, 0xd3, - 0x8d, 0x9d, 0x3b, 0xd0, 0x8d, 0x9d, 0x3c, 0xd3, 0x8d, 0x9d, 0x3e, 0xd0, - 0x8d, 0x9d, 0x3f, 0xd3, 0x8d, 0x9d, 0x40, 0xd0, 0x8d, 0x9d, 0x42, 0xd3, - 0x8d, 0x9d, 0x43, 0xd0, 0x8d, 0x9d, 0x44, 0xd3, 0x8d, 0x9d, 0x45, 0xd0, - 0x8d, 0x9d, 0x46, 0xd3, 0x8d, 0x9d, 0x47, 0xd0, 0x8d, 0x9d, 0x48, 0xd3, - 0x8d, 0x9d, 0x49, 0xd0, 0x8d, 0x9d, 0x4a, 0xd3, 0x8d, 0x9d, 0x4b, 0xd0, - 0x8d, 0x9d, 0x4c, 0xd3, 0x8d, 0x9d, 0x4d, 0xd0, 0x8d, 0x9d, 0x4e, 0xd3, - 0x8d, 0x9d, 0x4f, 0xd0, 0x8d, 0x9d, 0x50, 0xd3, 0x8d, 0x9d, 0x51, 0xd0, - 0x8d, 0x9d, 0x52, 0xd3, 0x8d, 0x9d, 0x53, 0xd0, 0x8d, 0x9d, 0x54, 0xd3, - 0x8d, 0x9d, 0x55, 0xd0, 0x8d, 0x9d, 0x56, 0xd3, 0x8d, 0x9d, 0x57, 0xd0, - 0x8d, 0x9d, 0x58, 0xd3, 0x8d, 0x9d, 0x58, 0xd0, 0x8d, 0x9d, 0x59, 0xd3, - 0x8d, 0x9d, 0x5a, 0xd0, 0x8d, 0x9d, 0x5b, 0xd3, 0x8d, 0x9d, 0x5c, 0xd0, - 0x8d, 0x9d, 0x5d, 0xd3, 0x8d, 0x9d, 0x5d, 0xd0, 0x8d, 0x9d, 0x5e, 0xd3, - 0x8d, 0x9d, 0x5f, 0xd0, 0x8d, 0x9d, 0x60, 0xd3, 0x8d, 0x9d, 0x60, 0xd0, - 0x8d, 0x9d, 0x61, 0xcf, 0x8e, 0x9d, 0x62, 0xd0, 0x8d, 0x9d, 0x63, 0xcf, - 0x8e, 0x9d, 0x63, 0xd0, 0x8d, 0x9d, 0x64, 0xcf, 0x8e, 0x9d, 0x65, 0xd0, - 0x8d, 0x9d, 0x66, 0xcf, 0x8e, 0x9d, 0x66, 0xd0, 0x8d, 0x9d, 0x67, 0xcf, - 0x8e, 0x9d, 0x68, 0xd0, 0x8d, 0x9d, 0x68, 0xcf, 0x8e, 0x9d, 0x69, 0xd0, - 0x8d, 0x9d, 0x6a, 0xcf, 0x8e, 0x9d, 0x6a, 0xd0, 0x8d, 0x9d, 0x6b, 0xcf, - 0x8e, 0x9d, 0x6c, 0xd0, 0x8d, 0x9d, 0x6c, 0xcf, 0x8e, 0x9d, 0x6d, 0xd0, - 0x8d, 0x9d, 0x6e, 0xcf, 0x8e, 0x9d, 0x6e, 0xd0, 0x8d, 0x9d, 0x6f, 0xcf, - 0x8e, 0x9d, 0x70, 0xd0, 0x8d, 0x9d, 0x70, 0xcf, 0x8e, 0x9d, 0x71, 0xd0, - 0x8d, 0x9d, 0x72, 0xcf, 0x8e, 0x9d, 0x72, 0xd0, 0x8d, 0x9d, 0x73, 0xcf, - 0x8e, 0x9d, 0x73, 0xd0, 0x8d, 0x9d, 0x74, 0xcf, 0x8e, 0x9d, 0x75, 0xd0, - 0x8d, 0x9d, 0x75, 0xcf, 0x8e, 0x9d, 0x76, 0xd0, 0x8d, 0x9d, 0x76, 0xcf, - 0x8e, 0x9d, 0x77, 0xd0, 0x8d, 0x9d, 0x78, 0xcf, 0x8e, 0x9d, 0x78, 0xd0, - 0x8d, 0x9d, 0x79, 0xcf, 0x8e, 0x9d, 0x79, 0xd0, 0x8d, 0x9d, 0x7a, 0xcf, - 0x8e, 0x9d, 0x7a, 0xd0, 0x8d, 0x9d, 0x7b, 0xcf, 0x8e, 0x9d, 0x7c, 0xd0, - 0x8d, 0x9d, 0x7c, 0xcf, 0x8e, 0x9d, 0x7d, 0xd0, 0x8d, 0x9d, 0x7d, 0xcf, - 0x8e, 0x9d, 0x7e, 0xd0, 0x8d, 0x9d, 0x7e, 0xcf, 0x8e, 0x9d, 0x7f, 0xd0, - 0x8d, 0x9d, 0x7f, 0xcf, 0x8e, 0x9d, 0x80, 0xd0, 0x8d, 0x9d, 0x81, 0xcf, - 0x8e, 0x9d, 0x81, 0xd0, 0x8d, 0x9d, 0x82, 0xcf, 0x8e, 0x9d, 0x82, 0xce, - 0x8e, 0x9d, 0x83, 0xcf, 0x8e, 0x9d, 0x83, 0xce, 0x8e, 0x9d, 0x84, 0xcf, - 0x8e, 0x9d, 0x84, 0xce, 0x8e, 0x9d, 0x85, 0xcf, 0x8e, 0x9d, 0x85, 0xce, - 0x8e, 0x9d, 0x86, 0xcf, 0x8e, 0x9d, 0x86, 0xce, 0x8e, 0x9d, 0x87, 0xcf, - 0x8e, 0x9d, 0x87, 0xce, 0x8e, 0x9d, 0x88, 0xcf, 0x8e, 0x9d, 0x88, 0xce, - 0x8e, 0x9d, 0x89, 0xcf, 0x8e, 0x9d, 0x89, 0xce, 0x8e, 0x9d, 0x8a, 0xcf, - 0x8e, 0x9d, 0x8a, 0xce, 0x8e, 0x9d, 0x8b, 0xcf, 0x8e, 0x9d, 0x8b, 0xce, - 0x8e, 0x9d, 0x8c, 0xcf, 0x8e, 0x9d, 0x8c, 0xce, 0x8e, 0x9d, 0x8d, 0xce, - 0x8e, 0x9d, 0x8d, 0xce, 0x8e, 0x9d, 0x8e, 0xce, 0x8e, 0x9d, 0x8d, 0xce, - 0x8e, 0x9d, 0x8e, 0xce, 0x8e, 0x9d, 0x8d, 0xce, 0x8f, 0x9d, 0x8e, 0xce, - 0x8f, 0x9d, 0x8e, 0xce, 0x90, 0x9b, 0x8e, 0xce, 0x90, 0x9d, 0x8e, 0xce, - 0x91, 0x9b, 0x8e, 0xce, 0x91, 0x9d, 0x8e, 0xce, 0x92, 0x9b, 0x8e, 0xce, - 0x92, 0x9d, 0x8e, 0xce, 0x93, 0x9b, 0x8e, 0xce, 0x93, 0x9d, 0x8e, 0xce, - 0x94, 0x9b, 0x8e, 0xce, 0x94, 0x9d, 0x8e, 0xce, 0x94, 0x9b, 0x8e, 0xce, - 0x95, 0x9d, 0x95, 0xce, 0x95, 0x95, 0x96, 0xce, 0x96, 0x95, 0x96, 0xce, - 0x96, 0x95, 0x97, 0xce, 0x97, 0x95, 0x97, 0xce, 0x97, 0x95, 0x9a, 0xce, - 0x98, 0x96, 0x9a, 0xce, 0x98, 0x96, 0x9a, 0xce, 0x98, 0x96, 0x9a, 0xce, - 0x99, 0x96, 0x9a, 0xce, 0x99, 0x96, 0x9a, 0xce, 0x9a, 0x96, 0x9a, 0xce, - 0x9a, 0x96, 0x9a, 0xce, 0x9a, 0x96, 0x9b, 0xce, 0x9b, 0x96, 0x9b, 0xce, - 0x9b, 0x96, 0x9c, 0xce, 0x9c, 0x96, 0x9f, 0xce, 0x9c, 0x97, 0x9f, 0xce, - 0x9d, 0x97, 0x9f, 0xce, 0x9d, 0x97, 0x9f, 0xce, 0x9d, 0x97, 0x9f, 0xce, - 0x9e, 0x97, 0x9f, 0xce, 0x9e, 0x97, 0x9f, 0xce, 0x9f, 0x97, 0x9f, 0xce, - 0x9f, 0x97, 0x9f, 0xce, 0x9f, 0x97, 0xa0, 0xce, 0xa0, 0x97, 0xa0, 0xce, - 0xa0, 0x97, 0xa3, 0xce, 0xa1, 0x98, 0xa1, 0xce, 0xa1, 0x97, 0xa3, 0xce, - 0xa1, 0x98, 0xa2, 0xce, 0xa2, 0x97, 0xa3, 0xce, 0xa2, 0x98, 0xa3, 0xce, - 0xa3, 0x97, 0xa3, 0xce, 0xa3, 0x98, 0xa3, 0xce, 0xa3, 0x97, 0xa3, 0xce, - 0xa4, 0x98, 0xa3, 0xce, 0xa4, 0x97, 0xa3, 0xce, 0xa5, 0x98, 0xa3, 0xce, - 0xa5, 0x97, 0xa3, 0xce, 0xa5, 0x98, 0xa3, 0xce, 0xa6, 0x97, 0xa3, 0xce, - 0xa6, 0x98, 0xa3, 0xce, 0xa6, 0x97, 0xa3, 0xce, 0xa7, 0x98, 0xa3, 0xce, - 0xa7, 0x97, 0xa3, 0xce, 0xa8, 0x98, 0xa3, 0xce, 0xa8, 0x97, 0xa3, 0xce, - 0xa8, 0x98, 0xa3, 0xce, 0xa9, 0x97, 0xa3, 0xce, 0xa9, 0x98, 0xa3, 0xce, - 0xaa, 0x97, 0xa3, 0xce, 0xaa, 0x98, 0xa3, 0xce, 0xaa, 0x97, 0xa3, 0xce, - 0xab, 0x98, 0xa3, 0xce, 0xab, 0x97, 0xa3, 0xce, 0xab, 0x98, 0xa3, 0xce, - 0xac, 0x97, 0xa3, 0xce, 0xac, 0x98, 0xa3, 0xce, 0xac, 0x97, 0xa3, 0xce, - 0xad, 0x98, 0xa3, 0xce, 0xad, 0x97, 0xa3, 0xce, 0xae, 0x98, 0xa3, 0xce, - 0xae, 0x97, 0xa3, 0xce, 0xae, 0x98, 0xa3, 0xce, 0xaf, 0x97, 0xa3, 0xce, - 0xaf, 0x98, 0xa3, 0xce, 0xaf, 0x97, 0xa3, 0xce, 0xb0, 0x98, 0xa3, 0xce, - 0xb0, 0x97, 0xa3, 0xce, 0xb0, 0x98, 0xa3, 0xce, 0xb1, 0x97, 0xa3, 0xce, - 0xb1, 0x98, 0xa3, 0xce, 0xb2, 0x97, 0xa3, 0xce, 0xb2, 0x98, 0xa3, 0xce, - 0xb2, 0x97, 0xa4, 0xce, 0xb3, 0x95, 0xa3, 0xce, 0xb3, 0x97, 0xa4, 0xce, - 0xb3, 0x95, 0xa3, 0xce, 0xb4, 0x97, 0xa4, 0xce, 0xb4, 0x95, 0xa3, 0xce, - 0xb4, 0x97, 0xa4, 0xce, 0xb5, 0x95, 0xa3, 0xce, 0xb5, 0x97, 0xa4, 0xce, - 0xb5, 0x95, 0xa3, 0xce, 0xb6, 0x97, 0xa4, 0xce, 0xb6, 0x95, 0xa3, 0xce, - 0xb6, 0x97, 0xa4, 0xce, 0xb7, 0x95, 0xa3, 0xce, 0xb7, 0x97, 0xa4, 0xce, - 0xb7, 0x95, 0xa3, 0xce, 0xb8, 0x97, 0xa4, 0xce, 0xb8, 0x95, 0xa3, 0xce, - 0xb8, 0x97, 0xa4, 0xce, 0xb9, 0x95, 0xa3, 0xce, 0xb9, 0x97, 0xa4, 0xce, - 0xb9, 0x95, 0xa3, 0xce, 0xba, 0x97, 0xa4, 0xce, 0xba, 0x95, 0xa3, 0xce, - 0xba, 0x97, 0xa4, 0xce, 0xbb, 0x95, 0xa3, 0xce, 0xbb, 0x97, 0xa4, 0xce, - 0xbb, 0x95, 0xa3, 0xce, 0xbc, 0x97, 0xa4, 0xce, 0xbc, 0x95, 0xa3, 0xce, - 0xbc, 0x97, 0xa4, 0xce, 0xbd, 0x95, 0xd2, 0xce, 0xbd, 0xa5, 0xd2, 0xce, - 0xbd, 0xa2, 0xd2, 0xce, 0xbe, 0xa5, 0xd2, 0xce, 0xbe, 0xa2, 0xd2, 0xce, - 0xbe, 0xa5, 0xd2, 0xce, 0xbf, 0xa2, 0xd2, 0xce, 0xbf, 0xa5, 0xd2, 0xce, - 0xbf, 0xa2, 0xd2, 0xce, 0xc0, 0xa5, 0xd2, 0xce, 0xc0, 0xa2, 0xd2, 0xce, - 0xc0, 0xa5, 0xd2, 0xce, 0xc1, 0xa2, 0xd2, 0xce, 0xc1, 0xa5, 0xd2, 0xce, - 0xc1, 0xa2, 0xd2, 0xce, 0xc1, 0xa5, 0xd2, 0xce, 0xc2, 0xa2, 0xd3, 0xce, - 0xc2, 0xa0, 0xd2, 0xce, 0xc2, 0xa2, 0xd3, 0xce, 0xc3, 0xa0, 0xd2, 0xce, - 0xc3, 0xa2, 0xd3, 0xce, 0xc3, 0xa0, 0xd2, 0xce, 0xc4, 0xa2, 0xd3, 0xce, - 0xc4, 0xa0, 0xd2, 0xce, 0xc4, 0xa2, 0xd3, 0xce, 0xc5, 0xa0, 0xd2, 0xce, - 0xc5, 0xa2, 0xd3, 0xce, 0xc5, 0xa0, 0xd2, 0xce, 0xc6, 0xa2, 0xd3, 0xce, - 0xc6, 0xa0, 0xd2, 0xce, 0xc6, 0xa2, 0xd3, 0xce, 0xc6, 0xa0, 0xd2, 0xce, - 0xc7, 0xa2, 0xd3, 0xce, 0xc7, 0xa0, 0xd2, 0xce, 0xc7, 0xa2, 0xd3, 0xce, - 0xc8, 0xa0, 0xd2, 0xce, 0xc8, 0xa2, 0xd3, 0xce, 0xc8, 0xa0, 0xd2, 0xce, - 0xc9, 0xa2, 0xd3, 0xce, 0xc9, 0xa0, 0xd2, 0xce, 0xc9, 0xa2, 0xd3, 0xce, - 0xc9, 0xa0, 0xd2, 0xce, 0xca, 0xa2, 0xd3, 0xce, 0xca, 0xa0, 0xd2, 0xce, - 0xca, 0xa2, 0xd3, 0xce, 0xcb, 0xa0, 0xd2, 0xce, 0xcb, 0xa2, 0xd3, 0xce, - 0xcb, 0xa0, 0xd2, 0xce, 0xcc, 0xa2, 0xd3, 0xce, 0xcc, 0xa0, 0xd3, 0xce, - 0xcc, 0x9d, 0xd3, 0xce, 0xcc, 0xa0, 0xd3, 0xce, 0xcd, 0x9d, 0xd3, 0xce, - 0xcd, 0xa0, 0xd3, 0xce, 0xcd, 0x9d, 0xd3, 0xce, 0xce, 0xa0, 0xd3, 0xce, - 0xce, 0x9d, 0xd3, 0xce, 0xce, 0xa0, 0xd3, 0xce, 0xce, 0x9d, 0xd3, 0xce, - 0xcf, 0xa0, 0xd3, 0xce, 0xcf, 0x9d, 0xd3, 0xce, 0xcf, 0xa0, 0xd3, 0xce, - 0xd0, 0x9d, 0xd3, 0xce, 0xd0, 0xa0, 0xd3, 0xce, 0xd0, 0x9d, 0xd3, 0xce, - 0xd0, 0xa0, 0xd3, 0xce, 0xd1, 0x9d, 0xd3, 0xce, 0xd1, 0x9d, 0xd3, 0xce, - 0xd1, 0x9d, 0xd3, 0xce, 0xd2, 0x9d, 0xd3, 0xce, 0xd2, 0x9d, 0xd3, 0xce, - 0xd2, 0x9d, 0xd3, 0xce, 0xd2, 0x9d, 0xd3, 0xce, 0xd3, 0x9d, 0xd3, 0xcd, - 0xd3, 0x9d, 0xd3, 0xce, 0xd3, 0x9d, 0xd4, 0xcd, 0xd3, 0x9d, 0xd4, 0xce, - 0xd3, 0x9d, 0xd4, 0xcd, 0xd3, 0x9d, 0xd4, 0xce, 0xd3, 0x9d, 0xd5, 0xcd, - 0xd3, 0x9d, 0xd5, 0xce, 0xd3, 0x9d, 0xd5, 0xcd, 0xd3, 0x9d, 0xd6, 0xce, - 0xd3, 0x9d, 0xd6, 0xcd, 0xd3, 0x9d, 0xd6, 0xce, 0xd3, 0x9d, 0xd6, 0xcd, - 0xd3, 0x9d, 0xd7, 0xce, 0xd3, 0x9d, 0xd7, 0xcd, 0xd3, 0x9d, 0xd7, 0xce, - 0xd3, 0x9d, 0xd7, 0xcd, 0xd3, 0x9d, 0xd8, 0xcb, 0xd3, 0x9d, 0xd8, 0xc8, - 0xd8, 0x9d, 0xd8, 0xc8, 0xd8, 0x9d, 0xd9, 0xc8, 0xd9, 0x9d, 0xd9, 0xc9, - 0xdb, 0x9d, 0xd9, 0xc9, 0xdb, 0x9d, 0xd9, 0xc9, 0xdb, 0x9d, 0xda, 0xc9, - 0xdb, 0x9d, 0xda, 0xc9, 0xdb, 0x9d, 0xda, 0xc9, 0xdb, 0x9d, 0xda, 0xc9, - 0xdb, 0x9d, 0xdb, 0xc9, 0xdb, 0x9d, 0xdb, 0xc9, 0xdb, 0x9d, 0xdb, 0xc9, - 0xdb, 0x9d, 0xdb, 0xc9, 0xdb, 0x9d, 0xdc, 0xc9, 0xdc, 0x9d, 0xdc, 0xc9, - 0xdc, 0x9d, 0xdc, 0xc9, 0xde, 0x9d, 0xdd, 0xc9, 0xde, 0x9d, 0xdd, 0xc9, - 0xde, 0x9d, 0xdd, 0xc9, 0xde, 0x9d, 0xdd, 0xc9, 0xde, 0x9d, 0xde, 0xc9, - 0xde, 0x9d, 0xde, 0xc9, 0xde, 0x9d, 0xde, 0xc9, 0xde, 0x9d, 0xde, 0xc9, - 0xde, 0x9d, 0xdf, 0xc9, 0xdf, 0x9d, 0xdf, 0xc9, 0xdf, 0x9d, 0xdf, 0xca, - 0xe1, 0x9d, 0xdf, 0xca, 0xe1, 0x9d, 0xe0, 0xca, 0xe1, 0x9d, 0xe0, 0xca, - 0xe1, 0x9d, 0xe0, 0xca, 0xe1, 0x9d, 0xe1, 0xca, 0xe1, 0x9d, 0xe1, 0xca, - 0xe1, 0x9d, 0xe1, 0xca, 0xe1, 0x9d, 0xe1, 0xca, 0xe1, 0x9d, 0xe2, 0xca, - 0xe2, 0x9d, 0xe2, 0xca, 0xe2, 0x9d, 0xe2, 0xcb, 0xe4, 0x9d, 0xe2, 0xcb, - 0xe4, 0x9d, 0xe3, 0xcb, 0xe4, 0x9d, 0xe3, 0xcb, 0xe4, 0x9d, 0xe3, 0xcb, - 0xe4, 0x9d, 0xe3, 0xcb, 0xe4, 0x9d, 0xe4, 0xcb, 0xe4, 0x9d, 0xe4, 0xcb, - 0xe4, 0x9d, 0xe4, 0xcb, 0xe4, 0x9d, 0xe4, 0xcb, 0xe4, 0x9d, 0xe5, 0xcb, - 0xe5, 0x9d, 0xe5, 0xcb, 0xe5, 0x9d, 0xe5, 0xcb, 0xe5, 0x9d, 0xe5, 0xcb, - 0xe6, 0x9d, 0xe6, 0xcb, 0xe7, 0x9d, 0xe6, 0xcb, 0xe6, 0x9d, 0xe6, 0xcb, - 0xe7, 0x9d, 0xe6, 0xcb, 0xe6, 0x9d, 0xe7, 0xcb, 0xe7, 0x9d, 0xe7, 0xcb, - 0xe7, 0x9d, 0xe7, 0xcb, 0xe7, 0x9d, 0xe7, 0xcb, 0xe7, 0x9d, 0xe8, 0xcb, - 0xe8, 0x9d, 0xe8, 0xcc, 0xe9, 0x9d, 0xe8, 0xcc, 0xe9, 0x9d, 0xe8, 0xcc, - 0xe9, 0x9d, 0xe9, 0xcc, 0xe9, 0x9d, 0xe9, 0xcc, 0xe9, 0x9d, 0xe9, 0xcc, - 0xe9, 0x9d, 0xe9, 0xcc, 0xe9, 0x9d, 0xea, 0xcc, 0xea, 0x9d, 0xea, 0xcf, - 0xeb, 0x9d, 0xea, 0xce, 0xeb, 0x9d, 0xea, 0xce, 0xeb, 0x9d, 0xeb, 0xce, - 0xeb, 0x9d, 0xeb, 0xce, 0xeb, 0x9d, 0xeb, 0xce, 0xeb, 0x9d, 0xeb, 0xce, - 0xeb, 0x9d, 0xeb, 0xce, 0xec, 0x9d, 0xeb, 0xce, 0xec, 0x9d, 0xeb, 0xce, - 0xec, 0x9b, 0xeb, 0xce, 0xec, 0x9d, 0xee, 0xce, 0xec, 0x9d, 0xee, 0xce, - 0xed, 0x9e, 0xee, 0xce, 0xed, 0x9d, 0xee, 0xce, 0xed, 0x9e, 0xee, 0xce, - 0xed, 0x9d, 0xee, 0xce, 0xee, 0x9d, 0xee, 0xce, 0xed, 0x9d, 0xee, 0xce, - 0xee, 0x9d, 0xee, 0xce, 0xed, 0x9d, 0xef, 0xce, 0xee, 0x9d, 0xef, 0xce, - 0xed, 0x9d, 0xef, 0xce, 0xee, 0x9d, 0xef, 0xce, 0xed, 0x9d, 0xf0, 0xce, - 0xee, 0x9d, 0xf0, 0xce, 0xed, 0x9d, 0xf0, 0xce, 0xee, 0x9d, 0xf0, 0xce, - 0xed, 0x9d, 0xf1, 0xce, 0xee, 0x9d, 0xf1, 0xce, 0xed, 0x9d, 0xf1, 0xce, - 0xee, 0x9d, 0xf1, 0xce, 0xed, 0x9d, 0xf2, 0xce, 0xee, 0x9d, 0xf2, 0xcb, - 0xee, 0x9d, 0xf2, 0xce, 0xee, 0x9d, 0xf2, 0xcb, 0xee, 0x9d, 0xf2, 0xce, - 0xee, 0x9d, 0xf3, 0xcb, 0xee, 0x9d, 0xf3, 0xce, 0xee, 0x9d, 0xf3, 0xcb, - 0xee, 0x9d, 0xf3, 0xc6, 0xf3, 0x9d, 0xf4, 0xc6, 0xf4, 0x9d, 0xf4, 0xc6, - 0xf4, 0x9d, 0xf4, 0xc7, 0xf6, 0x9d, 0xf4, 0xc7, 0xf6, 0x9d, 0xf5, 0xc7, - 0xf6, 0x9d, 0xf5, 0xc7, 0xf6, 0x9d, 0xf5, 0xc7, 0xf6, 0x9d, 0xf5, 0xc7, - 0xf6, 0x9d, 0xf5, 0xc7, 0xf6, 0x9d, 0xf6, 0xc7, 0xf6, 0x9d, 0xf6, 0xc7, - 0xf6, 0x9d, 0xf6, 0xc7, 0xf6, 0x9d, 0xf6, 0xc7, 0xf6, 0x9d, 0xf7, 0xc7, - 0xf7, 0x9d, 0xf7, 0xc7, 0xf7, 0x9d, 0xf7, 0xc7, 0xf7, 0x9d, 0xf7, 0xc7, - 0xf7, 0x9d, 0xf8, 0xc7, 0xf7, 0x9d, 0xf8, 0xc7, 0xf7, 0x9d, 0xf8, 0xc7, - 0xf7, 0x9d, 0xf8, 0xc7, 0xf7, 0x9d, 0xf8, 0xc7, 0xf7, 0x9d, 0xf9, 0xc7, - 0xf7, 0x9d, 0xf9, 0xc7, 0xf7, 0x9d, 0xf9, 0xc7, 0xf7, 0x9d, 0xf9, 0xc7, - 0xf7, 0x9d, 0xfa, 0xc7, 0xf7, 0x9d, 0xfa, 0xc7, 0xf7, 0x9d, 0xfa, 0xc7, - 0xf7, 0x9d, 0xfa, 0xc7, 0xf7, 0x9d, 0xfa, 0xc7, 0xf7, 0x9d, 0xfb, 0xc7, - 0xf7, 0x9d, 0xfb, 0xc7, 0xf7, 0x9d, 0xfb, 0xc7, 0xf7, 0x9d, 0xfb, 0xc7, - 0xf7, 0x9d, 0xfc, 0xc7, 0xf7, 0x9d, 0xfc, 0xc7, 0xf7, 0x9d, 0xfc, 0xc7, - 0xf7, 0x9d, 0xfc, 0xc7, 0xf7, 0x9d, 0xfc, 0xc7, 0xf7, 0x9d, 0xfd, 0xc7, - 0xf7, 0x9d, 0xfd, 0xc7, 0xf7, 0x9d, 0xfd, 0xc7, 0xf7, 0x9d, 0xfd, 0xc7, - 0xf7, 0x9d, 0xfe, 0xc7, 0xf7, 0x9d, 0xfe, 0xc7, 0xf7, 0x9d, 0xfe, 0xc7, - 0xf7, 0x9d, 0xfe, 0xc7, 0xf7, 0x9d, 0xfe, 0xc7, 0xf7, 0x9d, 0xff, 0xc7, - 0xf7, 0x9d, 0xff, 0xc7, 0xf7, 0x9d, 0x03, 0xd4, 0x8c, 0x9d, 0x0a, 0xd2, - 0x8d, 0x9d, 0x0f, 0xd4, 0x8c, 0x9d, 0x14, 0xd2, 0x8d, 0x9d, 0x17, 0xd4, - 0x8c, 0x9d, 0x1b, 0xd2, 0x8d, 0x9d, 0x1e, 0xd4, 0x8c, 0x9d, 0x20, 0xd2, - 0x8d, 0x9d, 0x23, 0xd4, 0x8c, 0x9d, 0x25, 0xd2, 0x8d, 0x9d, 0x27, 0xd4, - 0x8c, 0x9d, 0x29, 0xd2, 0x8d, 0x9d, 0x2b, 0xd4, 0x8c, 0x9d, 0x2d, 0xd2, - 0x8d, 0x9d, 0x2f, 0xd4, 0x8c, 0x9d, 0x31, 0xd2, 0x8d, 0x9d, 0x32, 0xd4, - 0x8c, 0x9d, 0x34, 0xd2, 0x8d, 0x9d, 0x35, 0xd4, 0x8c, 0x9d, 0x37, 0xd2, - 0x8d, 0x9d, 0x38, 0xd4, 0x8c, 0x9d, 0x3a, 0xd2, 0x8d, 0x9d, 0x3b, 0xd4, - 0x8c, 0x9d, 0x3c, 0xd2, 0x8d, 0x9d, 0x3e, 0xd4, 0x8c, 0x9d, 0x3f, 0xd2, - 0x8d, 0x9d, 0x40, 0xd4, 0x8c, 0x9d, 0x42, 0xd2, 0x8d, 0x9d, 0x43, 0xd4, - 0x8c, 0x9d, 0x44, 0xd2, 0x8d, 0x9d, 0x45, 0xd4, 0x8c, 0x9d, 0x46, 0xd2, - 0x8d, 0x9d, 0x47, 0xd4, 0x8c, 0x9d, 0x48, 0xd2, 0x8d, 0x9d, 0x49, 0xd4, - 0x8c, 0x9d, 0x4a, 0xd2, 0x8d, 0x9d, 0x4b, 0xd4, 0x8c, 0x9d, 0x4c, 0xd2, - 0x8d, 0x9d, 0x4d, 0xd4, 0x8c, 0x9d, 0x4e, 0xd2, 0x8d, 0x9d, 0x4f, 0xd1, - 0x8d, 0x9d, 0x50, 0xd2, 0x8d, 0x9d, 0x51, 0xd1, 0x8d, 0x9d, 0x52, 0xd2, - 0x8d, 0x9d, 0x53, 0xd1, 0x8d, 0x9d, 0x54, 0xd2, 0x8d, 0x9d, 0x55, 0xd1, - 0x8d, 0x9d, 0x56, 0xd2, 0x8d, 0x9d, 0x57, 0xd1, 0x8d, 0x9d, 0x58, 0xd2, - 0x8d, 0x9d, 0x58, 0xd1, 0x8d, 0x9d, 0x59, 0xd2, 0x8d, 0x9d, 0x5a, 0xd1, - 0x8d, 0x9d, 0x5b, 0xd2, 0x8d, 0x9d, 0x5c, 0xd1, 0x8d, 0x9d, 0x5d, 0xd2, - 0x8d, 0x9d, 0x5d, 0xd1, 0x8d, 0x9d, 0x5e, 0xd2, 0x8d, 0x9d, 0x5f, 0xd1, - 0x8d, 0x9d, 0x60, 0xd2, 0x8d, 0x9d, 0x60, 0xd1, 0x8d, 0x9d, 0x61, 0xd2, - 0x8d, 0x9d, 0x62, 0xd1, 0x8d, 0x9d, 0x63, 0xd2, 0x8d, 0x9d, 0x63, 0xd1, - 0x8d, 0x9d, 0x64, 0xd2, 0x8d, 0x9d, 0x65, 0xd1, 0x8d, 0x9d, 0x66, 0xd2, - 0x8d, 0x9d, 0x66, 0xd1, 0x8d, 0x9d, 0x67, 0xd2, 0x8d, 0x9d, 0x68, 0xd1, - 0x8d, 0x9d, 0x68, 0xd2, 0x8d, 0x9d, 0x69, 0xd1, 0x8d, 0x9d, 0x6a, 0xd2, - 0x8d, 0x9d, 0x6a, 0xd1, 0x8d, 0x9d, 0x6b, 0xd2, 0x8d, 0x9d, 0x6c, 0xd1, - 0x8d, 0x9d, 0x6c, 0xcf, 0x8e, 0x9d, 0x6d, 0xd1, 0x8d, 0x9d, 0x6e, 0xcf, - 0x8e, 0x9d, 0x6e, 0xd1, 0x8d, 0x9d, 0x6f, 0xcf, 0x8e, 0x9d, 0x70, 0xd1, - 0x8d, 0x9d, 0x70, 0xcf, 0x8e, 0x9d, 0x71, 0xd1, 0x8d, 0x9d, 0x72, 0xcf, - 0x8e, 0x9d, 0x72, 0xd1, 0x8d, 0x9d, 0x73, 0xcf, 0x8e, 0x9d, 0x73, 0xd1, - 0x8d, 0x9d, 0x74, 0xcf, 0x8e, 0x9d, 0x75, 0xd1, 0x8d, 0x9d, 0x75, 0xcf, - 0x8e, 0x9d, 0x76, 0xd1, 0x8d, 0x9d, 0x76, 0xcf, 0x8e, 0x9d, 0x77, 0xd1, - 0x8d, 0x9d, 0x78, 0xcf, 0x8e, 0x9d, 0x78, 0xd1, 0x8d, 0x9d, 0x79, 0xcf, - 0x8e, 0x9d, 0x79, 0xd1, 0x8d, 0x9d, 0x7a, 0xcf, 0x8e, 0x9d, 0x7a, 0xd1, - 0x8d, 0x9d, 0x7b, 0xcf, 0x8e, 0x9d, 0x7c, 0xd1, 0x8d, 0x9d, 0x7c, 0xcf, - 0x8e, 0x9d, 0x7d, 0xd1, 0x8d, 0x9d, 0x7d, 0xcf, 0x8e, 0x9d, 0x7e, 0xd1, - 0x8d, 0x9d, 0x7e, 0xcf, 0x8e, 0x9d, 0x7f, 0xd1, 0x8d, 0x9d, 0x7f, 0xcf, - 0x8e, 0x9d, 0x80, 0xd1, 0x8d, 0x9d, 0x81, 0xcf, 0x8e, 0x9d, 0x81, 0xd1, - 0x8d, 0x9d, 0x82, 0xcf, 0x8e, 0x9d, 0x82, 0xce, 0x8e, 0x9d, 0x83, 0xcf, - 0x8e, 0x9d, 0x83, 0xce, 0x8e, 0x9d, 0x84, 0xcf, 0x8e, 0x9d, 0x84, 0xce, - 0x8e, 0x9d, 0x85, 0xcf, 0x8e, 0x9d, 0x85, 0xce, 0x8e, 0x9d, 0x86, 0xcf, - 0x8e, 0x9d, 0x86, 0xce, 0x8e, 0x9d, 0x87, 0xcf, 0x8e, 0x9d, 0x87, 0xce, - 0x8e, 0x9d, 0x88, 0xcf, 0x8e, 0x9d, 0x88, 0xce, 0x8e, 0x9d, 0x89, 0xcf, - 0x8e, 0x9d, 0x89, 0xce, 0x8e, 0x9d, 0x8a, 0xcf, 0x8e, 0x9d, 0x8a, 0xce, - 0x8e, 0x9d, 0x8b, 0xcf, 0x8e, 0x9d, 0x8b, 0xce, 0x8e, 0x9d, 0x8c, 0xcf, - 0x8e, 0x9d, 0x8c, 0xce, 0x8e, 0x9d, 0x8d, 0xce, 0x8e, 0x9d, 0x8d, 0xce, - 0x8e, 0x9d, 0x8e, 0xce, 0x8e, 0x9d, 0x8d, 0xce, 0x8e, 0x9d, 0x8e, 0xce, - 0x8e, 0x9d, 0x8d, 0xce, 0x8f, 0x9d, 0x8e, 0xce, 0x8f, 0x9d, 0x8d, 0xce, - 0x90, 0x9d, 0x8e, 0xce, 0x90, 0x9d, 0x8d, 0xce, 0x91, 0x9d, 0x8e, 0xce, - 0x91, 0x9d, 0x8e, 0xce, 0x92, 0x9a, 0x8e, 0xce, 0x92, 0x9d, 0x8e, 0xce, - 0x93, 0x9a, 0x8e, 0xce, 0x93, 0x9d, 0x8e, 0xce, 0x94, 0x9a, 0x8e, 0xce, - 0x94, 0x9d, 0x8e, 0xce, 0x94, 0x9a, 0x8e, 0xce, 0x95, 0x9d, 0x98, 0xce, - 0x95, 0x95, 0x98, 0xce, 0x96, 0x95, 0x98, 0xce, 0x96, 0x95, 0x98, 0xce, - 0x97, 0x95, 0x98, 0xce, 0x97, 0x95, 0x98, 0xce, 0x98, 0x95, 0x98, 0xce, - 0x98, 0x95, 0x98, 0xce, 0x98, 0x95, 0x99, 0xce, 0x99, 0x95, 0x99, 0xce, - 0x99, 0x95, 0x9c, 0xce, 0x9a, 0x96, 0x9d, 0xce, 0x9a, 0x96, 0x9c, 0xce, - 0x9a, 0x96, 0x9d, 0xce, 0x9b, 0x96, 0x9c, 0xce, 0x9b, 0x96, 0x9d, 0xce, - 0x9c, 0x96, 0x9c, 0xce, 0x9c, 0x96, 0x9d, 0xce, 0x9d, 0x96, 0x9d, 0xce, - 0x9d, 0x96, 0x9d, 0xce, 0x9d, 0x96, 0x9e, 0xce, 0x9e, 0x96, 0xa1, 0xce, - 0x9e, 0x97, 0xa1, 0xce, 0x9f, 0x97, 0xa1, 0xce, 0x9f, 0x97, 0xa1, 0xce, - 0x9f, 0x97, 0xa1, 0xce, 0xa0, 0x97, 0xa1, 0xce, 0xa0, 0x97, 0xa1, 0xce, - 0xa1, 0x97, 0xa1, 0xce, 0xa1, 0x97, 0xa1, 0xce, 0xa1, 0x97, 0xa2, 0xce, - 0xa2, 0x97, 0xa2, 0xce, 0xa2, 0x97, 0xa3, 0xce, 0xa3, 0x97, 0xa3, 0xce, - 0xa3, 0x97, 0xa3, 0xce, 0xa3, 0x97, 0xa3, 0xce, 0xa4, 0x97, 0xa3, 0xce, - 0xa4, 0x97, 0xa3, 0xce, 0xa5, 0x97, 0xa3, 0xce, 0xa5, 0x97, 0xa3, 0xce, - 0xa5, 0x97, 0xa3, 0xce, 0xa6, 0x97, 0xa3, 0xce, 0xa6, 0x97, 0xa3, 0xce, - 0xa6, 0x97, 0xa3, 0xce, 0xa7, 0x97, 0xa3, 0xce, 0xa7, 0x97, 0xa3, 0xce, - 0xa8, 0x97, 0xa3, 0xce, 0xa8, 0x97, 0xa3, 0xce, 0xa8, 0x97, 0xa3, 0xce, - 0xa9, 0x97, 0xa3, 0xce, 0xa9, 0x97, 0xa3, 0xce, 0xaa, 0x97, 0xa3, 0xce, - 0xaa, 0x97, 0xa3, 0xce, 0xaa, 0x97, 0xa3, 0xce, 0xab, 0x97, 0xa3, 0xce, - 0xab, 0x97, 0xa3, 0xce, 0xab, 0x97, 0xa3, 0xce, 0xac, 0x97, 0xa3, 0xce, - 0xac, 0x97, 0xa3, 0xce, 0xac, 0x97, 0xa3, 0xce, 0xad, 0x97, 0xa3, 0xce, - 0xad, 0x97, 0xa3, 0xce, 0xae, 0x97, 0xa3, 0xce, 0xae, 0x97, 0xa3, 0xce, - 0xae, 0x97, 0xa3, 0xce, 0xaf, 0x97, 0xa3, 0xce, 0xaf, 0x97, 0xa3, 0xce, - 0xaf, 0x97, 0xa3, 0xce, 0xb0, 0x97, 0xa3, 0xce, 0xb0, 0x97, 0xa3, 0xce, - 0xb0, 0x97, 0xa3, 0xce, 0xb1, 0x97, 0xa3, 0xce, 0xb1, 0x97, 0xa3, 0xce, - 0xb2, 0x97, 0xa3, 0xce, 0xb2, 0x97, 0xa3, 0xce, 0xb2, 0x97, 0xa3, 0xce, - 0xb3, 0x97, 0xa3, 0xce, 0xb3, 0x97, 0xa3, 0xce, 0xb3, 0x97, 0xa3, 0xce, - 0xb4, 0x97, 0xa4, 0xce, 0xb4, 0x94, 0xa3, 0xce, 0xb4, 0x97, 0xa4, 0xce, - 0xb5, 0x94, 0xa3, 0xce, 0xb5, 0x97, 0xa4, 0xce, 0xb5, 0x94, 0xa3, 0xce, - 0xb6, 0x97, 0xa4, 0xce, 0xb6, 0x94, 0xa3, 0xce, 0xb6, 0x97, 0xa4, 0xce, - 0xb7, 0x94, 0xa3, 0xce, 0xb7, 0x97, 0xa4, 0xce, 0xb7, 0x94, 0xa3, 0xce, - 0xb8, 0x97, 0xa4, 0xce, 0xb8, 0x94, 0xa3, 0xce, 0xb8, 0x97, 0xa4, 0xce, - 0xb9, 0x94, 0xa3, 0xce, 0xb9, 0x97, 0xa4, 0xce, 0xb9, 0x94, 0xa3, 0xce, - 0xba, 0x97, 0xa4, 0xce, 0xba, 0x94, 0xa3, 0xce, 0xba, 0x97, 0xa4, 0xce, - 0xbb, 0x94, 0xa3, 0xce, 0xbb, 0x97, 0xa4, 0xce, 0xbb, 0x94, 0xa3, 0xce, - 0xbc, 0x97, 0xa4, 0xce, 0xbc, 0x94, 0xa3, 0xce, 0xbc, 0x97, 0xa4, 0xce, - 0xbd, 0x94, 0xd2, 0xce, 0xbd, 0xa4, 0xd2, 0xce, 0xbd, 0xa2, 0xd2, 0xce, - 0xbe, 0xa4, 0xd2, 0xce, 0xbe, 0xa2, 0xd2, 0xce, 0xbe, 0xa4, 0xd2, 0xce, - 0xbf, 0xa2, 0xd2, 0xce, 0xbf, 0xa4, 0xd2, 0xce, 0xbf, 0xa2, 0xd2, 0xce, - 0xc0, 0xa4, 0xd2, 0xce, 0xc0, 0xa2, 0xd2, 0xce, 0xc0, 0xa4, 0xd2, 0xce, - 0xc1, 0xa2, 0xd2, 0xce, 0xc1, 0xa4, 0xd2, 0xce, 0xc1, 0xa2, 0xd2, 0xce, - 0xc1, 0xa4, 0xd2, 0xce, 0xc2, 0xa2, 0xd2, 0xce, 0xc2, 0xa4, 0xd2, 0xce, - 0xc2, 0xa2, 0xd2, 0xce, 0xc3, 0xa4, 0xd2, 0xce, 0xc3, 0xa2, 0xd2, 0xce, - 0xc3, 0xa4, 0xd2, 0xce, 0xc4, 0xa2, 0xd2, 0xce, 0xc4, 0xa4, 0xd2, 0xce, - 0xc4, 0xa2, 0xd2, 0xce, 0xc5, 0xa4, 0xd2, 0xce, 0xc5, 0xa2, 0xd2, 0xce, - 0xc5, 0xa4, 0xd2, 0xce, 0xc6, 0xa2, 0xd3, 0xce, 0xc6, 0x9f, 0xd2, 0xce, - 0xc6, 0xa2, 0xd3, 0xce, 0xc6, 0x9f, 0xd2, 0xce, 0xc7, 0xa2, 0xd3, 0xce, - 0xc7, 0x9f, 0xd2, 0xce, 0xc7, 0xa2, 0xd3, 0xce, 0xc8, 0x9f, 0xd2, 0xce, - 0xc8, 0xa2, 0xd3, 0xce, 0xc8, 0x9f, 0xd2, 0xce, 0xc9, 0xa2, 0xd3, 0xce, - 0xc9, 0x9f, 0xd2, 0xce, 0xc9, 0xa2, 0xd3, 0xce, 0xc9, 0x9f, 0xd2, 0xce, - 0xca, 0xa2, 0xd3, 0xce, 0xca, 0x9f, 0xd2, 0xce, 0xca, 0xa2, 0xd3, 0xce, - 0xcb, 0x9f, 0xd2, 0xce, 0xcb, 0xa2, 0xd3, 0xce, 0xcb, 0x9f, 0xd2, 0xce, - 0xcc, 0xa2, 0xd3, 0xce, 0xcc, 0x9f, 0xd3, 0xce, 0xcc, 0x9d, 0xd3, 0xce, - 0xcc, 0x9f, 0xd3, 0xce, 0xcd, 0x9d, 0xd3, 0xce, 0xcd, 0x9f, 0xd3, 0xce, - 0xcd, 0x9d, 0xd3, 0xce, 0xce, 0x9f, 0xd3, 0xce, 0xce, 0x9d, 0xd3, 0xce, - 0xce, 0x9f, 0xd3, 0xce, 0xce, 0x9d, 0xd3, 0xce, 0xcf, 0x9f, 0xd3, 0xce, - 0xcf, 0x9d, 0xd3, 0xce, 0xcf, 0x9f, 0xd3, 0xce, 0xd0, 0x9d, 0xd3, 0xce, - 0xd0, 0x9f, 0xd3, 0xce, 0xd0, 0x9d, 0xd3, 0xce, 0xd0, 0x9f, 0xd3, 0xce, - 0xd1, 0x9d, 0xd3, 0xce, 0xd1, 0x9f, 0xd3, 0xce, 0xd1, 0x9d, 0xd3, 0xce, - 0xd2, 0x9f, 0xd3, 0xce, 0xd2, 0x9d, 0xd3, 0xce, 0xd2, 0x9d, 0xd3, 0xce, - 0xd2, 0x9d, 0xd3, 0xce, 0xd3, 0x9d, 0xd3, 0xce, 0xd2, 0x9d, 0xd3, 0xce, - 0xd3, 0x9d, 0xd4, 0xce, 0xd2, 0x9d, 0xd4, 0xce, 0xd3, 0x9d, 0xd4, 0xcd, - 0xd3, 0x9d, 0xd4, 0xce, 0xd3, 0x9d, 0xd5, 0xcd, 0xd3, 0x9d, 0xd5, 0xce, - 0xd3, 0x9d, 0xd5, 0xcd, 0xd3, 0x9d, 0xd6, 0xce, 0xd3, 0x9d, 0xd6, 0xcd, - 0xd3, 0x9d, 0xd6, 0xce, 0xd3, 0x9d, 0xd6, 0xcd, 0xd3, 0x9d, 0xd7, 0xce, - 0xd3, 0x9d, 0xd7, 0xcd, 0xd3, 0x9d, 0xd7, 0xce, 0xd3, 0x9d, 0xd7, 0xcd, - 0xd3, 0x9d, 0xd8, 0xcc, 0xd3, 0x9d, 0xd8, 0xcd, 0xd3, 0x9d, 0xd8, 0xc9, - 0xd9, 0x9d, 0xd9, 0xc9, 0xda, 0x9d, 0xd9, 0xc9, 0xd9, 0x9d, 0xd9, 0xc9, - 0xda, 0x9d, 0xd9, 0xc9, 0xd9, 0x9d, 0xda, 0xc9, 0xda, 0x9d, 0xda, 0xc9, - 0xda, 0x9d, 0xda, 0xc9, 0xdc, 0x9d, 0xda, 0xc9, 0xdd, 0x9d, 0xdb, 0xc9, - 0xdc, 0x9d, 0xdb, 0xc9, 0xdd, 0x9d, 0xdb, 0xc9, 0xdc, 0x9d, 0xdb, 0xc9, - 0xdd, 0x9d, 0xdc, 0xc9, 0xdc, 0x9d, 0xdc, 0xc9, 0xdd, 0x9d, 0xdc, 0xc9, - 0xdc, 0x9d, 0xdd, 0xc9, 0xdd, 0x9d, 0xdd, 0xc9, 0xdd, 0x9d, 0xdd, 0xc9, - 0xdd, 0x9d, 0xdd, 0xc9, 0xdd, 0x9d, 0xde, 0xca, 0xdf, 0x9d, 0xde, 0xca, - 0xdf, 0x9d, 0xde, 0xca, 0xdf, 0x9d, 0xde, 0xca, 0xdf, 0x9d, 0xdf, 0xca, - 0xdf, 0x9d, 0xdf, 0xca, 0xdf, 0x9d, 0xdf, 0xca, 0xdf, 0x9d, 0xdf, 0xca, - 0xdf, 0x9d, 0xe0, 0xca, 0xe0, 0x9d, 0xe0, 0xca, 0xe0, 0x9d, 0xe0, 0xca, - 0xe0, 0x9d, 0xe1, 0xca, 0xe2, 0x9d, 0xe1, 0xca, 0xe2, 0x9d, 0xe1, 0xca, - 0xe2, 0x9d, 0xe1, 0xca, 0xe2, 0x9d, 0xe2, 0xca, 0xe2, 0x9d, 0xe2, 0xca, - 0xe2, 0x9d, 0xe2, 0xca, 0xe2, 0x9d, 0xe2, 0xca, 0xe2, 0x9d, 0xe3, 0xca, - 0xe3, 0x9d, 0xe3, 0xca, 0xe3, 0x9d, 0xe3, 0xca, 0xe3, 0x9d, 0xe3, 0xcb, - 0xe5, 0x9d, 0xe4, 0xcb, 0xe5, 0x9d, 0xe4, 0xcb, 0xe5, 0x9d, 0xe4, 0xcb, - 0xe5, 0x9d, 0xe4, 0xcb, 0xe5, 0x9d, 0xe5, 0xcb, 0xe5, 0x9d, 0xe5, 0xcb, - 0xe5, 0x9d, 0xe5, 0xcb, 0xe5, 0x9d, 0xe5, 0xcb, 0xe5, 0x9d, 0xe6, 0xcb, - 0xe6, 0x9d, 0xe6, 0xcb, 0xe6, 0x9d, 0xe6, 0xcb, 0xe6, 0x9d, 0xe6, 0xcb, - 0xe6, 0x9d, 0xe7, 0xcc, 0xe8, 0x9d, 0xe7, 0xcc, 0xe8, 0x9d, 0xe7, 0xcc, - 0xe8, 0x9d, 0xe7, 0xcc, 0xe8, 0x9d, 0xe8, 0xcc, 0xe8, 0x9d, 0xe8, 0xcc, - 0xe8, 0x9d, 0xe8, 0xcc, 0xe8, 0x9d, 0xe8, 0xcc, 0xe8, 0x9d, 0xe9, 0xcc, - 0xe9, 0x9d, 0xe9, 0xcc, 0xe9, 0x9d, 0xe9, 0xcc, 0xe9, 0x9d, 0xe9, 0xce, - 0xeb, 0x9d, 0xea, 0xce, 0xeb, 0x9d, 0xea, 0xce, 0xeb, 0x9d, 0xea, 0xce, - 0xeb, 0x9d, 0xea, 0xce, 0xeb, 0x9d, 0xeb, 0xce, 0xeb, 0x9d, 0xeb, 0xce, - 0xeb, 0x9d, 0xeb, 0xce, 0xeb, 0x9d, 0xeb, 0xce, 0xeb, 0x9d, 0xeb, 0xce, - 0xec, 0x9d, 0xeb, 0xce, 0xec, 0x9d, 0xeb, 0xce, 0xec, 0x9d, 0xeb, 0xce, - 0xec, 0x9d, 0xee, 0xce, 0xec, 0x9d, 0xee, 0xce, 0xed, 0x9d, 0xee, 0xce, - 0xed, 0x9d, 0xee, 0xce, 0xed, 0x9d, 0xee, 0xce, 0xed, 0x9d, 0xee, 0xcd, - 0xee, 0x9d, 0xee, 0xce, 0xed, 0x9d, 0xee, 0xcd, 0xee, 0x9d, 0xee, 0xce, - 0xed, 0x9d, 0xef, 0xcd, 0xee, 0x9d, 0xef, 0xce, 0xed, 0x9d, 0xef, 0xcd, - 0xee, 0x9d, 0xef, 0xce, 0xed, 0x9d, 0xf0, 0xcd, 0xee, 0x9d, 0xf0, 0xce, - 0xed, 0x9d, 0xf0, 0xcd, 0xee, 0x9d, 0xf0, 0xce, 0xed, 0x9d, 0xf1, 0xcd, - 0xee, 0x9d, 0xf1, 0xce, 0xed, 0x9d, 0xf1, 0xcd, 0xee, 0x9d, 0xf1, 0xce, - 0xed, 0x9d, 0xf2, 0xcd, 0xee, 0x9d, 0xf2, 0xce, 0xed, 0x9d, 0xf2, 0xcd, - 0xee, 0x9d, 0xf2, 0xce, 0xed, 0x9d, 0xf2, 0xcd, 0xee, 0x9d, 0xf3, 0xce, - 0xed, 0x9d, 0xf3, 0xcd, 0xee, 0x9d, 0xf3, 0xce, 0xed, 0x9d, 0xf3, 0xcd, - 0xee, 0x9d, 0xf4, 0xc7, 0xf5, 0x9d, 0xf4, 0xc7, 0xf5, 0x9d, 0xf4, 0xc7, - 0xf5, 0x9d, 0xf4, 0xc7, 0xf5, 0x9d, 0xf5, 0xc7, 0xf5, 0x9d, 0xf5, 0xc7, - 0xf5, 0x9d, 0xf5, 0xc7, 0xf5, 0x9d, 0xf5, 0xc7, 0xf5, 0x9d, 0xf5, 0xc7, - 0xf5, 0x9d, 0xf6, 0xc7, 0xf6, 0x9d, 0xf6, 0xc7, 0xf6, 0x9d, 0xf6, 0xc7, - 0xf6, 0x9d, 0xf6, 0xc7, 0xf6, 0x9d, 0xf7, 0xc7, 0xf7, 0x9d, 0xf7, 0xc7, - 0xf7, 0x9d, 0xf7, 0xc7, 0xf7, 0x9d, 0xf7, 0xc7, 0xf7, 0x9d, 0xf8, 0xc7, - 0xf7, 0x9d, 0xf8, 0xc7, 0xf7, 0x9d, 0xf8, 0xc7, 0xf7, 0x9d, 0xf8, 0xc7, - 0xf7, 0x9d, 0xf8, 0xc7, 0xf7, 0x9d, 0xf9, 0xc7, 0xf7, 0x9d, 0xf9, 0xc7, - 0xf7, 0x9d, 0xf9, 0xc7, 0xf7, 0x9d, 0xf9, 0xc7, 0xf7, 0x9d, 0xfa, 0xc7, - 0xf7, 0x9d, 0xfa, 0xc7, 0xf7, 0x9d, 0xfa, 0xc7, 0xf7, 0x9d, 0xfa, 0xc7, - 0xf7, 0x9d, 0xfa, 0xc7, 0xf7, 0x9d, 0xfb, 0xc7, 0xf7, 0x9d, 0xfb, 0xc7, - 0xf7, 0x9d, 0xfb, 0xc7, 0xf7, 0x9d, 0xfb, 0xc7, 0xf7, 0x9d, 0xfc, 0xc7, - 0xf7, 0x9d, 0xfc, 0xc7, 0xf7, 0x9d, 0xfc, 0xc7, 0xf7, 0x9d, 0xfc, 0xc7, - 0xf7, 0x9d, 0xfc, 0xc7, 0xf7, 0x9d, 0xfd, 0xc7, 0xf7, 0x9d, 0xfd, 0xc6, - 0xf8, 0x9d, 0xfd, 0xc7, 0xf7, 0x9d, 0xfd, 0xc6, 0xf8, 0x9d, 0xfe, 0xc7, - 0xf7, 0x9d, 0xfe, 0xc6, 0xf8, 0x9d, 0xfe, 0xc7, 0xf7, 0x9d, 0xfe, 0xc6, - 0xf8, 0x9d, 0xfe, 0xc7, 0xf7, 0x9d, 0xff, 0xc6, 0xf8, 0x9d, 0xff, 0xc7, - 0xf7, 0x9d, 0x03, 0xd4, 0x8c, 0x9e, 0x0a, 0xd6, 0x8c, 0x9e, 0x0f, 0xd4, - 0x8c, 0x9e, 0x14, 0xd3, 0x8d, 0x9e, 0x17, 0xd4, 0x8c, 0x9e, 0x1b, 0xd3, - 0x8d, 0x9e, 0x1e, 0xd4, 0x8c, 0x9e, 0x20, 0xd3, 0x8d, 0x9e, 0x23, 0xd4, - 0x8c, 0x9e, 0x25, 0xd3, 0x8d, 0x9e, 0x27, 0xd4, 0x8c, 0x9e, 0x29, 0xd3, - 0x8d, 0x9e, 0x2b, 0xd4, 0x8c, 0x9e, 0x2d, 0xd3, 0x8d, 0x9e, 0x2f, 0xd4, - 0x8c, 0x9e, 0x31, 0xd3, 0x8d, 0x9e, 0x32, 0xd4, 0x8c, 0x9e, 0x34, 0xd3, - 0x8d, 0x9e, 0x35, 0xd4, 0x8c, 0x9e, 0x37, 0xd3, 0x8d, 0x9e, 0x38, 0xd4, - 0x8c, 0x9e, 0x3a, 0xd3, 0x8d, 0x9e, 0x3b, 0xd4, 0x8c, 0x9e, 0x3c, 0xd3, - 0x8d, 0x9e, 0x3e, 0xd4, 0x8c, 0x9e, 0x3f, 0xd3, 0x8d, 0x9e, 0x40, 0xd4, - 0x8c, 0x9e, 0x42, 0xd3, 0x8d, 0x9e, 0x43, 0xd4, 0x8c, 0x9e, 0x44, 0xd3, - 0x8d, 0x9e, 0x45, 0xd4, 0x8c, 0x9e, 0x46, 0xd3, 0x8d, 0x9e, 0x47, 0xd0, - 0x8d, 0x9e, 0x48, 0xd3, 0x8d, 0x9e, 0x49, 0xd0, 0x8d, 0x9e, 0x4a, 0xd3, - 0x8d, 0x9e, 0x4b, 0xd0, 0x8d, 0x9e, 0x4c, 0xd3, 0x8d, 0x9e, 0x4d, 0xd0, - 0x8d, 0x9e, 0x4e, 0xd3, 0x8d, 0x9e, 0x4f, 0xd0, 0x8d, 0x9e, 0x50, 0xd3, - 0x8d, 0x9e, 0x51, 0xd0, 0x8d, 0x9e, 0x52, 0xd3, 0x8d, 0x9e, 0x53, 0xd0, - 0x8d, 0x9e, 0x54, 0xd3, 0x8d, 0x9e, 0x55, 0xd0, 0x8d, 0x9e, 0x56, 0xd3, - 0x8d, 0x9e, 0x57, 0xd0, 0x8d, 0x9e, 0x58, 0xd3, 0x8d, 0x9e, 0x58, 0xd0, - 0x8d, 0x9e, 0x59, 0xd3, 0x8d, 0x9e, 0x5a, 0xd0, 0x8d, 0x9e, 0x5b, 0xd3, - 0x8d, 0x9e, 0x5c, 0xd0, 0x8d, 0x9e, 0x5d, 0xd3, 0x8d, 0x9e, 0x5d, 0xd0, - 0x8d, 0x9e, 0x5e, 0xd3, 0x8d, 0x9e, 0x5f, 0xd0, 0x8d, 0x9e, 0x60, 0xd3, - 0x8d, 0x9e, 0x60, 0xd0, 0x8d, 0x9e, 0x61, 0xd3, 0x8d, 0x9e, 0x62, 0xd0, - 0x8d, 0x9e, 0x63, 0xd3, 0x8d, 0x9e, 0x63, 0xd0, 0x8d, 0x9e, 0x64, 0xd3, - 0x8d, 0x9e, 0x65, 0xd0, 0x8d, 0x9e, 0x66, 0xd3, 0x8d, 0x9e, 0x66, 0xd0, - 0x8d, 0x9e, 0x67, 0xd3, 0x8d, 0x9e, 0x68, 0xd0, 0x8d, 0x9e, 0x68, 0xd3, - 0x8d, 0x9e, 0x69, 0xd0, 0x8d, 0x9e, 0x6a, 0xcf, 0x8e, 0x9e, 0x6a, 0xd0, - 0x8d, 0x9e, 0x6b, 0xcf, 0x8e, 0x9e, 0x6c, 0xd0, 0x8d, 0x9e, 0x6c, 0xcf, - 0x8e, 0x9e, 0x6d, 0xd0, 0x8d, 0x9e, 0x6e, 0xcf, 0x8e, 0x9e, 0x6e, 0xd0, - 0x8d, 0x9e, 0x6f, 0xcf, 0x8e, 0x9e, 0x70, 0xd0, 0x8d, 0x9e, 0x70, 0xcf, - 0x8e, 0x9e, 0x71, 0xd0, 0x8d, 0x9e, 0x72, 0xcf, 0x8e, 0x9e, 0x72, 0xd0, - 0x8d, 0x9e, 0x73, 0xcf, 0x8e, 0x9e, 0x73, 0xd0, 0x8d, 0x9e, 0x74, 0xcf, - 0x8e, 0x9e, 0x75, 0xd0, 0x8d, 0x9e, 0x75, 0xcf, 0x8e, 0x9e, 0x76, 0xd0, - 0x8d, 0x9e, 0x76, 0xcf, 0x8e, 0x9e, 0x77, 0xd0, 0x8d, 0x9e, 0x78, 0xcf, - 0x8e, 0x9e, 0x78, 0xd0, 0x8d, 0x9e, 0x79, 0xcf, 0x8e, 0x9e, 0x79, 0xd0, - 0x8d, 0x9e, 0x7a, 0xcf, 0x8e, 0x9e, 0x7a, 0xd0, 0x8d, 0x9e, 0x7b, 0xcf, - 0x8e, 0x9e, 0x7c, 0xd0, 0x8d, 0x9e, 0x7c, 0xcf, 0x8e, 0x9e, 0x7d, 0xd0, - 0x8d, 0x9e, 0x7d, 0xcf, 0x8e, 0x9e, 0x7e, 0xd0, 0x8d, 0x9e, 0x7e, 0xcf, - 0x8e, 0x9e, 0x7f, 0xd0, 0x8d, 0x9e, 0x7f, 0xcf, 0x8e, 0x9e, 0x80, 0xd0, - 0x8d, 0x9e, 0x81, 0xcf, 0x8e, 0x9e, 0x81, 0xd0, 0x8d, 0x9e, 0x82, 0xcf, - 0x8e, 0x9e, 0x82, 0xd0, 0x8d, 0x9e, 0x83, 0xcf, 0x8e, 0x9e, 0x83, 0xd0, - 0x8d, 0x9e, 0x84, 0xcf, 0x8e, 0x9e, 0x84, 0xd0, 0x8d, 0x9e, 0x85, 0xcf, - 0x8e, 0x9e, 0x85, 0xd0, 0x8d, 0x9e, 0x86, 0xcf, 0x8e, 0x9e, 0x86, 0xce, - 0x8e, 0x9e, 0x87, 0xcf, 0x8e, 0x9e, 0x87, 0xce, 0x8e, 0x9e, 0x88, 0xcf, - 0x8e, 0x9e, 0x88, 0xce, 0x8e, 0x9e, 0x89, 0xcf, 0x8e, 0x9e, 0x89, 0xce, - 0x8e, 0x9e, 0x8a, 0xcf, 0x8e, 0x9e, 0x8a, 0xce, 0x8e, 0x9e, 0x8b, 0xcf, - 0x8e, 0x9e, 0x8b, 0xce, 0x8e, 0x9e, 0x8c, 0xcf, 0x8e, 0x9e, 0x8c, 0xce, - 0x8e, 0x9e, 0x8d, 0xcf, 0x8e, 0x9e, 0x8d, 0xce, 0x8e, 0x9e, 0x8e, 0xcf, - 0x8e, 0x9e, 0x8d, 0xce, 0x8e, 0x9e, 0x8e, 0xce, 0x8e, 0x9e, 0x8d, 0xce, - 0x8f, 0x9e, 0x8e, 0xce, 0x8f, 0x9e, 0x8d, 0xce, 0x90, 0x9e, 0x8e, 0xce, - 0x90, 0x9e, 0x8d, 0xce, 0x91, 0x9e, 0x8e, 0xce, 0x91, 0x9e, 0x8e, 0xce, - 0x92, 0x9b, 0x8e, 0xce, 0x92, 0x9e, 0x8e, 0xce, 0x93, 0x9b, 0x8e, 0xce, - 0x93, 0x9e, 0x8e, 0xce, 0x94, 0x9b, 0x8e, 0xce, 0x94, 0x9e, 0x8e, 0xce, - 0x94, 0x9b, 0x8e, 0xce, 0x95, 0x9e, 0x8e, 0xce, 0x95, 0x9b, 0x96, 0xce, - 0x96, 0x95, 0x96, 0xce, 0x96, 0x95, 0x9a, 0xce, 0x97, 0x96, 0x9a, 0xce, - 0x97, 0x96, 0x9a, 0xce, 0x98, 0x96, 0x9a, 0xce, 0x98, 0x96, 0x9a, 0xce, - 0x98, 0x96, 0x9a, 0xce, 0x99, 0x96, 0x9a, 0xce, 0x99, 0x96, 0x9a, 0xce, - 0x9a, 0x96, 0x9a, 0xce, 0x9a, 0x96, 0x9a, 0xce, 0x9a, 0x96, 0x9b, 0xce, - 0x9b, 0x96, 0x9b, 0xce, 0x9b, 0x96, 0x9c, 0xce, 0x9c, 0x96, 0x9f, 0xce, - 0x9c, 0x97, 0x9f, 0xce, 0x9d, 0x97, 0x9f, 0xce, 0x9d, 0x97, 0x9f, 0xce, - 0x9d, 0x97, 0x9f, 0xce, 0x9e, 0x97, 0x9f, 0xce, 0x9e, 0x97, 0x9f, 0xce, - 0x9f, 0x97, 0x9f, 0xce, 0x9f, 0x97, 0x9f, 0xce, 0x9f, 0x97, 0xa0, 0xce, - 0xa0, 0x97, 0xa0, 0xce, 0xa0, 0x97, 0xa3, 0xce, 0xa1, 0x98, 0xa1, 0xce, - 0xa1, 0x97, 0xa3, 0xce, 0xa1, 0x98, 0xa2, 0xce, 0xa2, 0x97, 0xa3, 0xce, - 0xa2, 0x98, 0xa3, 0xce, 0xa3, 0x97, 0xa3, 0xce, 0xa3, 0x98, 0xa3, 0xce, - 0xa3, 0x97, 0xa3, 0xce, 0xa4, 0x98, 0xa3, 0xce, 0xa4, 0x97, 0xa3, 0xce, - 0xa5, 0x98, 0xa3, 0xce, 0xa5, 0x97, 0xa3, 0xce, 0xa5, 0x98, 0xa3, 0xce, - 0xa6, 0x97, 0xa3, 0xce, 0xa6, 0x98, 0xa3, 0xce, 0xa6, 0x97, 0xa3, 0xce, - 0xa7, 0x98, 0xa3, 0xce, 0xa7, 0x97, 0xa3, 0xce, 0xa8, 0x98, 0xa3, 0xce, - 0xa8, 0x97, 0xa3, 0xce, 0xa8, 0x98, 0xa3, 0xce, 0xa9, 0x97, 0xa3, 0xce, - 0xa9, 0x98, 0xa3, 0xce, 0xaa, 0x97, 0xa3, 0xce, 0xaa, 0x98, 0xa3, 0xce, - 0xaa, 0x97, 0xa3, 0xce, 0xab, 0x98, 0xa3, 0xce, 0xab, 0x97, 0xa3, 0xce, - 0xab, 0x98, 0xa3, 0xce, 0xac, 0x97, 0xa3, 0xce, 0xac, 0x98, 0xa3, 0xce, - 0xac, 0x97, 0xa3, 0xce, 0xad, 0x98, 0xa3, 0xce, 0xad, 0x97, 0xa3, 0xce, - 0xae, 0x98, 0xa3, 0xce, 0xae, 0x97, 0xa3, 0xce, 0xae, 0x98, 0xa3, 0xce, - 0xaf, 0x97, 0xa3, 0xce, 0xaf, 0x98, 0xa3, 0xce, 0xaf, 0x97, 0xa3, 0xce, - 0xb0, 0x98, 0xa3, 0xce, 0xb0, 0x97, 0xa3, 0xce, 0xb0, 0x98, 0xa3, 0xce, - 0xb1, 0x97, 0xa3, 0xce, 0xb1, 0x98, 0xa3, 0xce, 0xb2, 0x97, 0xa3, 0xce, - 0xb2, 0x98, 0xa3, 0xce, 0xb2, 0x97, 0xa3, 0xce, 0xb3, 0x98, 0xa3, 0xce, - 0xb3, 0x97, 0xa3, 0xce, 0xb3, 0x98, 0xa3, 0xce, 0xb4, 0x97, 0xa4, 0xce, - 0xb4, 0x95, 0xa3, 0xce, 0xb4, 0x97, 0xa4, 0xce, 0xb5, 0x95, 0xa3, 0xce, - 0xb5, 0x97, 0xa4, 0xce, 0xb5, 0x95, 0xa3, 0xce, 0xb6, 0x97, 0xa4, 0xce, - 0xb6, 0x95, 0xa3, 0xce, 0xb6, 0x97, 0xa4, 0xce, 0xb7, 0x95, 0xa3, 0xce, - 0xb7, 0x97, 0xa4, 0xce, 0xb7, 0x95, 0xa3, 0xce, 0xb8, 0x97, 0xa4, 0xce, - 0xb8, 0x95, 0xa3, 0xce, 0xb8, 0x97, 0xa4, 0xce, 0xb9, 0x95, 0xa3, 0xce, - 0xb9, 0x97, 0xa4, 0xce, 0xb9, 0x95, 0xa3, 0xce, 0xba, 0x97, 0xa4, 0xce, - 0xba, 0x95, 0xa3, 0xce, 0xba, 0x97, 0xa4, 0xce, 0xbb, 0x95, 0xa3, 0xce, - 0xbb, 0x97, 0xa4, 0xce, 0xbb, 0x95, 0xa3, 0xce, 0xbc, 0x97, 0xa4, 0xce, - 0xbc, 0x95, 0xa3, 0xce, 0xbc, 0x97, 0xa4, 0xce, 0xbd, 0x95, 0xd2, 0xce, - 0xbd, 0xa5, 0xd2, 0xce, 0xbd, 0xa2, 0xd2, 0xce, 0xbe, 0xa5, 0xd2, 0xce, - 0xbe, 0xa2, 0xd2, 0xce, 0xbe, 0xa5, 0xd2, 0xce, 0xbf, 0xa2, 0xd2, 0xce, - 0xbf, 0xa5, 0xd2, 0xce, 0xbf, 0xa2, 0xd2, 0xce, 0xc0, 0xa5, 0xd2, 0xce, - 0xc0, 0xa2, 0xd2, 0xce, 0xc0, 0xa5, 0xd2, 0xce, 0xc1, 0xa2, 0xd2, 0xce, - 0xc1, 0xa5, 0xd2, 0xce, 0xc1, 0xa2, 0xd2, 0xce, 0xc1, 0xa5, 0xd2, 0xce, - 0xc2, 0xa2, 0xd2, 0xce, 0xc2, 0xa5, 0xd2, 0xce, 0xc2, 0xa2, 0xd2, 0xce, - 0xc3, 0xa5, 0xd2, 0xce, 0xc3, 0xa2, 0xd2, 0xce, 0xc3, 0xa5, 0xd2, 0xce, - 0xc4, 0xa2, 0xd2, 0xce, 0xc4, 0xa5, 0xd2, 0xce, 0xc4, 0xa2, 0xd2, 0xce, - 0xc5, 0xa5, 0xd2, 0xce, 0xc5, 0xa2, 0xd2, 0xce, 0xc5, 0xa5, 0xd2, 0xce, - 0xc6, 0xa2, 0xd3, 0xce, 0xc6, 0xa0, 0xd2, 0xce, 0xc6, 0xa2, 0xd3, 0xce, - 0xc6, 0xa0, 0xd2, 0xce, 0xc7, 0xa2, 0xd3, 0xce, 0xc7, 0xa0, 0xd2, 0xce, - 0xc7, 0xa2, 0xd3, 0xce, 0xc8, 0xa0, 0xd2, 0xce, 0xc8, 0xa2, 0xd3, 0xce, - 0xc8, 0xa0, 0xd2, 0xce, 0xc9, 0xa2, 0xd3, 0xce, 0xc9, 0xa0, 0xd2, 0xce, - 0xc9, 0xa2, 0xd3, 0xce, 0xc9, 0xa0, 0xd2, 0xce, 0xca, 0xa2, 0xd3, 0xce, - 0xca, 0xa0, 0xd2, 0xce, 0xca, 0xa2, 0xd3, 0xce, 0xcb, 0xa0, 0xd2, 0xce, - 0xcb, 0xa2, 0xd3, 0xce, 0xcb, 0xa0, 0xd2, 0xce, 0xcc, 0xa2, 0xd3, 0xce, - 0xcc, 0xa0, 0xd2, 0xce, 0xcc, 0xa2, 0xd3, 0xce, 0xcc, 0xa0, 0xd2, 0xce, - 0xcd, 0xa2, 0xd3, 0xce, 0xcd, 0xa0, 0xd2, 0xce, 0xcd, 0xa2, 0xd3, 0xce, - 0xce, 0xa0, 0xd2, 0xce, 0xce, 0xa2, 0xd3, 0xce, 0xce, 0xa0, 0xd3, 0xce, - 0xce, 0x9e, 0xd3, 0xce, 0xcf, 0xa0, 0xd3, 0xce, 0xcf, 0x9e, 0xd3, 0xce, - 0xcf, 0xa0, 0xd3, 0xce, 0xd0, 0x9e, 0xd3, 0xce, 0xd0, 0xa0, 0xd3, 0xce, - 0xd0, 0x9e, 0xd3, 0xce, 0xd0, 0xa0, 0xd3, 0xce, 0xd1, 0x9e, 0xd3, 0xce, - 0xd1, 0xa0, 0xd3, 0xce, 0xd1, 0x9e, 0xd3, 0xce, 0xd2, 0xa0, 0xd3, 0xce, - 0xd2, 0x9e, 0xd3, 0xce, 0xd2, 0x9e, 0xd3, 0xce, 0xd2, 0x9e, 0xd3, 0xce, - 0xd3, 0x9e, 0xd3, 0xce, 0xd2, 0x9e, 0xd3, 0xce, 0xd3, 0x9e, 0xd4, 0xce, - 0xd2, 0x9e, 0xd4, 0xce, 0xd3, 0x9e, 0xd4, 0xcd, 0xd3, 0x9e, 0xd4, 0xce, - 0xd3, 0x9e, 0xd5, 0xcd, 0xd3, 0x9e, 0xd5, 0xce, 0xd3, 0x9e, 0xd5, 0xcd, - 0xd3, 0x9e, 0xd6, 0xce, 0xd3, 0x9e, 0xd6, 0xcd, 0xd3, 0x9e, 0xd6, 0xce, - 0xd3, 0x9e, 0xd6, 0xcd, 0xd3, 0x9e, 0xd7, 0xce, 0xd3, 0x9e, 0xd7, 0xcd, - 0xd3, 0x9e, 0xd7, 0xce, 0xd3, 0x9e, 0xd7, 0xcd, 0xd3, 0x9e, 0xd8, 0xce, - 0xd3, 0x9e, 0xd8, 0xcd, 0xd3, 0x9e, 0xd8, 0xc8, 0xd8, 0x9e, 0xd9, 0xc8, - 0xd9, 0x9e, 0xd9, 0xc9, 0xdb, 0x9e, 0xd9, 0xc9, 0xdb, 0x9e, 0xd9, 0xc9, - 0xdb, 0x9e, 0xda, 0xc9, 0xdb, 0x9e, 0xda, 0xc9, 0xdb, 0x9e, 0xda, 0xc9, - 0xdb, 0x9e, 0xda, 0xc9, 0xdb, 0x9e, 0xdb, 0xc9, 0xdb, 0x9e, 0xdb, 0xc9, - 0xdb, 0x9e, 0xdb, 0xc9, 0xdb, 0x9e, 0xdb, 0xc9, 0xdb, 0x9e, 0xdc, 0xc9, - 0xde, 0x9e, 0xdc, 0xc9, 0xde, 0x9e, 0xdc, 0xc9, 0xde, 0x9e, 0xdd, 0xc9, - 0xde, 0x9e, 0xdd, 0xc9, 0xde, 0x9e, 0xdd, 0xc9, 0xde, 0x9e, 0xdd, 0xc9, - 0xde, 0x9e, 0xde, 0xc9, 0xde, 0x9e, 0xde, 0xc9, 0xde, 0x9e, 0xde, 0xc9, - 0xde, 0x9e, 0xde, 0xc9, 0xde, 0x9e, 0xdf, 0xc9, 0xdf, 0x9e, 0xdf, 0xc9, - 0xdf, 0x9e, 0xdf, 0xca, 0xe1, 0x9e, 0xdf, 0xca, 0xe1, 0x9e, 0xe0, 0xca, - 0xe1, 0x9e, 0xe0, 0xca, 0xe1, 0x9e, 0xe0, 0xca, 0xe1, 0x9e, 0xe1, 0xca, - 0xe1, 0x9e, 0xe1, 0xca, 0xe1, 0x9e, 0xe1, 0xca, 0xe1, 0x9e, 0xe1, 0xca, - 0xe1, 0x9e, 0xe2, 0xca, 0xe2, 0x9e, 0xe2, 0xca, 0xe2, 0x9e, 0xe2, 0xcb, - 0xe4, 0x9e, 0xe2, 0xcb, 0xe4, 0x9e, 0xe3, 0xcb, 0xe4, 0x9e, 0xe3, 0xcb, - 0xe4, 0x9e, 0xe3, 0xcb, 0xe4, 0x9e, 0xe3, 0xcb, 0xe4, 0x9e, 0xe4, 0xcb, - 0xe4, 0x9e, 0xe4, 0xcb, 0xe4, 0x9e, 0xe4, 0xcb, 0xe4, 0x9e, 0xe4, 0xcb, - 0xe4, 0x9e, 0xe5, 0xcb, 0xe5, 0x9e, 0xe5, 0xcb, 0xe6, 0x9e, 0xe5, 0xcb, - 0xe7, 0x9e, 0xe5, 0xcb, 0xe6, 0x9e, 0xe6, 0xcb, 0xe7, 0x9e, 0xe6, 0xcb, - 0xe6, 0x9e, 0xe6, 0xcb, 0xe7, 0x9e, 0xe6, 0xcb, 0xe6, 0x9e, 0xe7, 0xcb, - 0xe7, 0x9e, 0xe7, 0xcb, 0xe7, 0x9e, 0xe7, 0xcb, 0xe7, 0x9e, 0xe7, 0xcb, - 0xe7, 0x9e, 0xe8, 0xcb, 0xe8, 0x9e, 0xe8, 0xcc, 0xe9, 0x9e, 0xe8, 0xcc, - 0xe9, 0x9e, 0xe8, 0xcc, 0xe9, 0x9e, 0xe9, 0xcc, 0xe9, 0x9e, 0xe9, 0xcc, - 0xe9, 0x9e, 0xe9, 0xcc, 0xe9, 0x9e, 0xe9, 0xcf, 0xeb, 0x9e, 0xea, 0xce, - 0xeb, 0x9e, 0xea, 0xcf, 0xeb, 0x9e, 0xea, 0xce, 0xeb, 0x9e, 0xea, 0xcf, - 0xeb, 0x9e, 0xeb, 0xce, 0xeb, 0x9e, 0xeb, 0xce, 0xeb, 0x9e, 0xeb, 0xce, - 0xeb, 0x9e, 0xeb, 0xce, 0xeb, 0x9e, 0xeb, 0xce, 0xec, 0x9e, 0xeb, 0xce, - 0xec, 0x9e, 0xeb, 0xce, 0xec, 0x9e, 0xeb, 0xce, 0xec, 0x9e, 0xee, 0xce, - 0xec, 0x9e, 0xee, 0xce, 0xed, 0x9e, 0xee, 0xce, 0xed, 0x9e, 0xee, 0xce, - 0xed, 0x9e, 0xee, 0xce, 0xed, 0x9e, 0xee, 0xce, 0xee, 0x9e, 0xee, 0xce, - 0xed, 0x9e, 0xee, 0xce, 0xee, 0x9e, 0xee, 0xce, 0xed, 0x9e, 0xef, 0xce, - 0xee, 0x9e, 0xef, 0xce, 0xed, 0x9e, 0xef, 0xce, 0xee, 0x9e, 0xef, 0xce, - 0xed, 0x9e, 0xf0, 0xce, 0xee, 0x9e, 0xf0, 0xce, 0xed, 0x9e, 0xf0, 0xce, - 0xee, 0x9e, 0xf0, 0xce, 0xed, 0x9e, 0xf1, 0xce, 0xee, 0x9e, 0xf1, 0xce, - 0xed, 0x9e, 0xf1, 0xce, 0xee, 0x9e, 0xf1, 0xce, 0xed, 0x9e, 0xf2, 0xce, - 0xee, 0x9e, 0xf2, 0xce, 0xed, 0x9e, 0xf2, 0xce, 0xee, 0x9e, 0xf2, 0xce, - 0xed, 0x9e, 0xf2, 0xce, 0xee, 0x9e, 0xf3, 0xce, 0xed, 0x9e, 0xf3, 0xce, - 0xee, 0x9e, 0xf3, 0xce, 0xed, 0x9e, 0xf3, 0xce, 0xee, 0x9e, 0xf4, 0xc6, - 0xf4, 0x9e, 0xf4, 0xc6, 0xf4, 0x9e, 0xf4, 0xc7, 0xf6, 0x9e, 0xf4, 0xc7, - 0xf6, 0x9e, 0xf5, 0xc7, 0xf6, 0x9e, 0xf5, 0xc7, 0xf6, 0x9e, 0xf5, 0xc7, - 0xf6, 0x9e, 0xf5, 0xc7, 0xf6, 0x9e, 0xf5, 0xc7, 0xf6, 0x9e, 0xf6, 0xc7, - 0xf6, 0x9e, 0xf6, 0xc7, 0xf6, 0x9e, 0xf6, 0xc7, 0xf6, 0x9e, 0xf6, 0xc7, - 0xf6, 0x9e, 0xf7, 0xc7, 0xf7, 0x9e, 0xf7, 0xc7, 0xf7, 0x9e, 0xf7, 0xc7, - 0xf7, 0x9e, 0xf7, 0xc7, 0xf7, 0x9e, 0xf8, 0xc7, 0xf7, 0x9e, 0xf8, 0xc7, - 0xf7, 0x9e, 0xf8, 0xc7, 0xf7, 0x9e, 0xf8, 0xc7, 0xf7, 0x9e, 0xf8, 0xc7, - 0xf7, 0x9e, 0xf9, 0xc7, 0xf7, 0x9e, 0xf9, 0xc7, 0xf7, 0x9e, 0xf9, 0xc7, - 0xf7, 0x9e, 0xf9, 0xc7, 0xf7, 0x9e, 0xfa, 0xc7, 0xf7, 0x9e, 0xfa, 0xc7, - 0xf7, 0x9e, 0xfa, 0xc7, 0xf7, 0x9e, 0xfa, 0xc7, 0xf7, 0x9e, 0xfa, 0xc7, - 0xf7, 0x9e, 0xfb, 0xc7, 0xf7, 0x9e, 0xfb, 0xc7, 0xf7, 0x9e, 0xfb, 0xc7, - 0xf7, 0x9e, 0xfb, 0xc7, 0xf7, 0x9e, 0xfc, 0xc7, 0xf7, 0x9e, 0xfc, 0xc7, - 0xf7, 0x9e, 0xfc, 0xc7, 0xf7, 0x9e, 0xfc, 0xc7, 0xf7, 0x9e, 0xfc, 0xc7, - 0xf7, 0x9e, 0xfd, 0xc7, 0xf7, 0x9e, 0xfd, 0xc7, 0xf7, 0x9e, 0xfd, 0xc7, - 0xf7, 0x9e, 0xfd, 0xc7, 0xf7, 0x9e, 0xfe, 0xc7, 0xf7, 0x9e, 0xfe, 0xc7, - 0xf7, 0x9e, 0xfe, 0xc7, 0xf7, 0x9e, 0xfe, 0xc7, 0xf7, 0x9e, 0xfe, 0xc7, - 0xf7, 0x9e, 0xff, 0xc7, 0xf7, 0x9e, 0xff, 0xc7, 0xf7, 0x9e, 0x03, 0xd4, - 0x8c, 0x9e, 0x0a, 0xd2, 0x8d, 0x9e, 0x0f, 0xd4, 0x8c, 0x9e, 0x14, 0xd2, - 0x8d, 0x9e, 0x17, 0xd4, 0x8c, 0x9e, 0x1b, 0xd2, 0x8d, 0x9e, 0x1e, 0xd4, - 0x8c, 0x9e, 0x20, 0xd2, 0x8d, 0x9e, 0x23, 0xd4, 0x8c, 0x9e, 0x25, 0xd2, - 0x8d, 0x9e, 0x27, 0xd4, 0x8c, 0x9e, 0x29, 0xd2, 0x8d, 0x9e, 0x2b, 0xd4, - 0x8c, 0x9e, 0x2d, 0xd2, 0x8d, 0x9e, 0x2f, 0xd4, 0x8c, 0x9e, 0x31, 0xd2, - 0x8d, 0x9e, 0x32, 0xd4, 0x8c, 0x9e, 0x34, 0xd2, 0x8d, 0x9e, 0x35, 0xd4, - 0x8c, 0x9e, 0x37, 0xd2, 0x8d, 0x9e, 0x38, 0xd4, 0x8c, 0x9e, 0x3a, 0xd2, - 0x8d, 0x9e, 0x3b, 0xd4, 0x8c, 0x9e, 0x3c, 0xd2, 0x8d, 0x9e, 0x3e, 0xd4, - 0x8c, 0x9e, 0x3f, 0xd2, 0x8d, 0x9e, 0x40, 0xd4, 0x8c, 0x9e, 0x42, 0xd2, - 0x8d, 0x9e, 0x43, 0xd4, 0x8c, 0x9e, 0x44, 0xd2, 0x8d, 0x9e, 0x45, 0xd4, - 0x8c, 0x9e, 0x46, 0xd2, 0x8d, 0x9e, 0x47, 0xd4, 0x8c, 0x9e, 0x48, 0xd2, - 0x8d, 0x9e, 0x49, 0xd4, 0x8c, 0x9e, 0x4a, 0xd2, 0x8d, 0x9e, 0x4b, 0xd4, - 0x8c, 0x9e, 0x4c, 0xd2, 0x8d, 0x9e, 0x4d, 0xd4, 0x8c, 0x9e, 0x4e, 0xd2, - 0x8d, 0x9e, 0x4f, 0xd4, 0x8c, 0x9e, 0x50, 0xd2, 0x8d, 0x9e, 0x51, 0xd4, - 0x8c, 0x9e, 0x52, 0xd2, 0x8d, 0x9e, 0x53, 0xd4, 0x8c, 0x9e, 0x54, 0xd2, - 0x8d, 0x9e, 0x55, 0xd4, 0x8c, 0x9e, 0x56, 0xd2, 0x8d, 0x9e, 0x57, 0xd4, - 0x8c, 0x9e, 0x58, 0xd2, 0x8d, 0x9e, 0x58, 0xd4, 0x8c, 0x9e, 0x59, 0xd2, - 0x8d, 0x9e, 0x5a, 0xd1, 0x8d, 0x9e, 0x5b, 0xd2, 0x8d, 0x9e, 0x5c, 0xd1, - 0x8d, 0x9e, 0x5d, 0xd2, 0x8d, 0x9e, 0x5d, 0xd1, 0x8d, 0x9e, 0x5e, 0xd2, - 0x8d, 0x9e, 0x5f, 0xd1, 0x8d, 0x9e, 0x60, 0xd2, 0x8d, 0x9e, 0x60, 0xd1, - 0x8d, 0x9e, 0x61, 0xd2, 0x8d, 0x9e, 0x62, 0xd1, 0x8d, 0x9e, 0x63, 0xd2, - 0x8d, 0x9e, 0x63, 0xd1, 0x8d, 0x9e, 0x64, 0xd2, 0x8d, 0x9e, 0x65, 0xd1, - 0x8d, 0x9e, 0x66, 0xd2, 0x8d, 0x9e, 0x66, 0xd1, 0x8d, 0x9e, 0x67, 0xd2, - 0x8d, 0x9e, 0x68, 0xd1, 0x8d, 0x9e, 0x68, 0xd2, 0x8d, 0x9e, 0x69, 0xd1, - 0x8d, 0x9e, 0x6a, 0xd2, 0x8d, 0x9e, 0x6a, 0xd1, 0x8d, 0x9e, 0x6b, 0xd2, - 0x8d, 0x9e, 0x6c, 0xd1, 0x8d, 0x9e, 0x6c, 0xd2, 0x8d, 0x9e, 0x6d, 0xd1, - 0x8d, 0x9e, 0x6e, 0xd2, 0x8d, 0x9e, 0x6e, 0xd1, 0x8d, 0x9e, 0x6f, 0xd2, - 0x8d, 0x9e, 0x70, 0xd1, 0x8d, 0x9e, 0x70, 0xd2, 0x8d, 0x9e, 0x71, 0xd1, - 0x8d, 0x9e, 0x72, 0xd2, 0x8d, 0x9e, 0x72, 0xd1, 0x8d, 0x9e, 0x73, 0xd2, - 0x8d, 0x9e, 0x73, 0xd1, 0x8d, 0x9e, 0x74, 0xcf, 0x8e, 0x9e, 0x75, 0xd1, - 0x8d, 0x9e, 0x75, 0xcf, 0x8e, 0x9e, 0x76, 0xd1, 0x8d, 0x9e, 0x76, 0xcf, - 0x8e, 0x9e, 0x77, 0xd1, 0x8d, 0x9e, 0x78, 0xcf, 0x8e, 0x9e, 0x78, 0xd1, - 0x8d, 0x9e, 0x79, 0xcf, 0x8e, 0x9e, 0x79, 0xd1, 0x8d, 0x9e, 0x7a, 0xcf, - 0x8e, 0x9e, 0x7a, 0xd1, 0x8d, 0x9e, 0x7b, 0xcf, 0x8e, 0x9e, 0x7c, 0xd1, - 0x8d, 0x9e, 0x7c, 0xcf, 0x8e, 0x9e, 0x7d, 0xd1, 0x8d, 0x9e, 0x7d, 0xcf, - 0x8e, 0x9e, 0x7e, 0xd1, 0x8d, 0x9e, 0x7e, 0xcf, 0x8e, 0x9e, 0x7f, 0xd1, - 0x8d, 0x9e, 0x7f, 0xcf, 0x8e, 0x9e, 0x80, 0xd1, 0x8d, 0x9e, 0x81, 0xcf, - 0x8e, 0x9e, 0x81, 0xd1, 0x8d, 0x9e, 0x82, 0xcf, 0x8e, 0x9e, 0x82, 0xd1, - 0x8d, 0x9e, 0x83, 0xcf, 0x8e, 0x9e, 0x83, 0xd1, 0x8d, 0x9e, 0x84, 0xcf, - 0x8e, 0x9e, 0x84, 0xd1, 0x8d, 0x9e, 0x85, 0xcf, 0x8e, 0x9e, 0x85, 0xd1, - 0x8d, 0x9e, 0x86, 0xcf, 0x8e, 0x9e, 0x86, 0xce, 0x8e, 0x9e, 0x87, 0xcf, - 0x8e, 0x9e, 0x87, 0xce, 0x8e, 0x9e, 0x88, 0xcf, 0x8e, 0x9e, 0x88, 0xce, - 0x8e, 0x9e, 0x89, 0xcf, 0x8e, 0x9e, 0x89, 0xce, 0x8e, 0x9e, 0x8a, 0xcf, - 0x8e, 0x9e, 0x8a, 0xce, 0x8e, 0x9e, 0x8b, 0xcf, 0x8e, 0x9e, 0x8b, 0xce, - 0x8e, 0x9e, 0x8c, 0xcf, 0x8e, 0x9e, 0x8c, 0xce, 0x8e, 0x9e, 0x8d, 0xcf, - 0x8e, 0x9e, 0x8d, 0xce, 0x8e, 0x9e, 0x8e, 0xcf, 0x8e, 0x9e, 0x8d, 0xce, - 0x8e, 0x9e, 0x8e, 0xce, 0x8e, 0x9e, 0x8d, 0xce, 0x8f, 0x9e, 0x8e, 0xce, - 0x8f, 0x9e, 0x8d, 0xce, 0x90, 0x9e, 0x8e, 0xce, 0x90, 0x9e, 0x8d, 0xce, - 0x91, 0x9e, 0x8e, 0xce, 0x91, 0x9e, 0x8d, 0xce, 0x92, 0x9e, 0x8e, 0xce, - 0x92, 0x9e, 0x8d, 0xce, 0x93, 0x9e, 0x8e, 0xce, 0x93, 0x9e, 0x8d, 0xce, - 0x94, 0x9e, 0x8e, 0xce, 0x94, 0x9e, 0x8d, 0xce, 0x94, 0x9e, 0x8e, 0xce, - 0x95, 0x9e, 0x8e, 0xce, 0x95, 0x9a, 0x8e, 0xce, 0x96, 0x9e, 0x98, 0xce, - 0x96, 0x95, 0x98, 0xce, 0x97, 0x95, 0x98, 0xce, 0x97, 0x95, 0x98, 0xce, - 0x98, 0x95, 0x98, 0xce, 0x98, 0x95, 0x98, 0xce, 0x98, 0x95, 0x9c, 0xce, - 0x99, 0x96, 0x9d, 0xce, 0x99, 0x96, 0x9c, 0xce, 0x9a, 0x96, 0x9d, 0xce, - 0x9a, 0x96, 0x9c, 0xce, 0x9a, 0x96, 0x9d, 0xce, 0x9b, 0x96, 0x9c, 0xce, - 0x9b, 0x96, 0x9d, 0xce, 0x9c, 0x96, 0x9c, 0xce, 0x9c, 0x96, 0x9d, 0xce, - 0x9d, 0x96, 0x9d, 0xce, 0x9d, 0x96, 0x9d, 0xce, 0x9d, 0x96, 0x9e, 0xce, - 0x9e, 0x96, 0xa1, 0xce, 0x9e, 0x97, 0xa1, 0xce, 0x9f, 0x97, 0xa1, 0xce, - 0x9f, 0x97, 0xa1, 0xce, 0x9f, 0x97, 0xa1, 0xce, 0xa0, 0x97, 0xa1, 0xce, - 0xa0, 0x97, 0xa1, 0xce, 0xa1, 0x97, 0xa1, 0xce, 0xa1, 0x97, 0xa1, 0xce, - 0xa1, 0x97, 0xa2, 0xce, 0xa2, 0x97, 0xa2, 0xce, 0xa2, 0x97, 0xa3, 0xce, - 0xa3, 0x97, 0xa3, 0xce, 0xa3, 0x97, 0xa3, 0xce, 0xa3, 0x97, 0xa3, 0xce, - 0xa4, 0x97, 0xa3, 0xce, 0xa4, 0x97, 0xa3, 0xce, 0xa5, 0x97, 0xa3, 0xce, - 0xa5, 0x97, 0xa3, 0xce, 0xa5, 0x97, 0xa3, 0xce, 0xa6, 0x97, 0xa3, 0xce, - 0xa6, 0x97, 0xa3, 0xce, 0xa6, 0x97, 0xa3, 0xce, 0xa7, 0x97, 0xa3, 0xce, - 0xa7, 0x97, 0xa3, 0xce, 0xa8, 0x97, 0xa3, 0xce, 0xa8, 0x97, 0xa3, 0xce, - 0xa8, 0x97, 0xa3, 0xce, 0xa9, 0x97, 0xa3, 0xce, 0xa9, 0x97, 0xa3, 0xce, - 0xaa, 0x97, 0xa3, 0xce, 0xaa, 0x97, 0xa3, 0xce, 0xaa, 0x97, 0xa3, 0xce, - 0xab, 0x97, 0xa3, 0xce, 0xab, 0x97, 0xa3, 0xce, 0xab, 0x97, 0xa3, 0xce, - 0xac, 0x97, 0xa3, 0xce, 0xac, 0x97, 0xa3, 0xce, 0xac, 0x97, 0xa3, 0xce, - 0xad, 0x97, 0xa3, 0xce, 0xad, 0x97, 0xa3, 0xce, 0xae, 0x97, 0xa3, 0xce, - 0xae, 0x97, 0xa3, 0xce, 0xae, 0x97, 0xa3, 0xce, 0xaf, 0x97, 0xa3, 0xce, - 0xaf, 0x97, 0xa3, 0xce, 0xaf, 0x97, 0xa3, 0xce, 0xb0, 0x97, 0xa3, 0xce, - 0xb0, 0x97, 0xa3, 0xce, 0xb0, 0x97, 0xa3, 0xce, 0xb1, 0x97, 0xa3, 0xce, - 0xb1, 0x97, 0xa3, 0xce, 0xb2, 0x97, 0xa3, 0xce, 0xb2, 0x97, 0xa3, 0xce, - 0xb2, 0x97, 0xa3, 0xce, 0xb3, 0x97, 0xa3, 0xce, 0xb3, 0x97, 0xa3, 0xce, - 0xb3, 0x97, 0xa3, 0xce, 0xb4, 0x97, 0xa3, 0xce, 0xb4, 0x97, 0xa3, 0xce, - 0xb4, 0x97, 0xa3, 0xce, 0xb5, 0x97, 0xa3, 0xce, 0xb5, 0x97, 0xa3, 0xce, - 0xb5, 0x97, 0xa3, 0xce, 0xb6, 0x97, 0xa3, 0xce, 0xb6, 0x97, 0xa3, 0xce, - 0xb6, 0x97, 0xa4, 0xce, 0xb7, 0x94, 0xa3, 0xce, 0xb7, 0x97, 0xa4, 0xce, - 0xb7, 0x94, 0xa3, 0xce, 0xb8, 0x97, 0xa4, 0xce, 0xb8, 0x94, 0xa3, 0xce, - 0xb8, 0x97, 0xa4, 0xce, 0xb9, 0x94, 0xa3, 0xce, 0xb9, 0x97, 0xa4, 0xce, - 0xb9, 0x94, 0xa3, 0xce, 0xba, 0x97, 0xa4, 0xce, 0xba, 0x94, 0xa3, 0xce, - 0xba, 0x97, 0xa4, 0xce, 0xbb, 0x94, 0xa3, 0xce, 0xbb, 0x97, 0xa4, 0xce, - 0xbb, 0x94, 0xa3, 0xce, 0xbc, 0x97, 0xa4, 0xce, 0xbc, 0x94, 0xa3, 0xce, - 0xbc, 0x97, 0xd2, 0xce, 0xbd, 0xa7, 0xd2, 0xce, 0xbd, 0xa4, 0xd2, 0xce, - 0xbd, 0xa7, 0xd2, 0xce, 0xbe, 0xa4, 0xd2, 0xce, 0xbe, 0xa7, 0xd2, 0xce, - 0xbe, 0xa4, 0xd2, 0xce, 0xbf, 0xa7, 0xd2, 0xce, 0xbf, 0xa4, 0xd2, 0xce, - 0xbf, 0xa2, 0xd2, 0xce, 0xc0, 0xa4, 0xd2, 0xce, 0xc0, 0xa2, 0xd2, 0xce, - 0xc0, 0xa4, 0xd2, 0xce, 0xc1, 0xa2, 0xd2, 0xce, 0xc1, 0xa4, 0xd2, 0xce, - 0xc1, 0xa2, 0xd2, 0xce, 0xc1, 0xa4, 0xd2, 0xce, 0xc2, 0xa2, 0xd2, 0xce, - 0xc2, 0xa4, 0xd2, 0xce, 0xc2, 0xa2, 0xd2, 0xce, 0xc3, 0xa4, 0xd2, 0xce, - 0xc3, 0xa2, 0xd2, 0xce, 0xc3, 0xa4, 0xd2, 0xce, 0xc4, 0xa2, 0xd2, 0xce, - 0xc4, 0xa4, 0xd2, 0xce, 0xc4, 0xa2, 0xd2, 0xce, 0xc5, 0xa4, 0xd2, 0xce, - 0xc5, 0xa2, 0xd2, 0xce, 0xc5, 0xa4, 0xd2, 0xce, 0xc6, 0xa2, 0xd2, 0xce, - 0xc6, 0xa4, 0xd2, 0xce, 0xc6, 0xa2, 0xd2, 0xce, 0xc6, 0xa4, 0xd2, 0xce, - 0xc7, 0xa2, 0xd2, 0xce, 0xc7, 0xa4, 0xd2, 0xce, 0xc7, 0xa2, 0xd2, 0xce, - 0xc8, 0xa4, 0xd2, 0xce, 0xc8, 0xa2, 0xd3, 0xce, 0xc8, 0x9f, 0xd2, 0xce, - 0xc9, 0xa2, 0xd3, 0xce, 0xc9, 0x9f, 0xd2, 0xce, 0xc9, 0xa2, 0xd3, 0xce, - 0xc9, 0x9f, 0xd2, 0xce, 0xca, 0xa2, 0xd3, 0xce, 0xca, 0x9f, 0xd2, 0xce, - 0xca, 0xa2, 0xd3, 0xce, 0xcb, 0x9f, 0xd2, 0xce, 0xcb, 0xa2, 0xd3, 0xce, - 0xcb, 0x9f, 0xd2, 0xce, 0xcc, 0xa2, 0xd3, 0xce, 0xcc, 0x9f, 0xd2, 0xce, - 0xcc, 0xa2, 0xd3, 0xce, 0xcc, 0x9f, 0xd2, 0xce, 0xcd, 0xa2, 0xd3, 0xce, - 0xcd, 0x9f, 0xd2, 0xce, 0xcd, 0xa2, 0xd3, 0xce, 0xce, 0x9f, 0xd2, 0xce, - 0xce, 0xa2, 0xd3, 0xce, 0xce, 0x9f, 0xd3, 0xce, 0xce, 0x9e, 0xd3, 0xce, - 0xcf, 0x9f, 0xd3, 0xce, 0xcf, 0x9e, 0xd3, 0xce, 0xcf, 0x9f, 0xd3, 0xce, - 0xd0, 0x9e, 0xd3, 0xce, 0xd0, 0x9f, 0xd3, 0xce, 0xd0, 0x9e, 0xd3, 0xce, - 0xd0, 0x9f, 0xd3, 0xce, 0xd1, 0x9e, 0xd3, 0xce, 0xd1, 0x9f, 0xd3, 0xce, - 0xd1, 0x9e, 0xd3, 0xce, 0xd2, 0x9f, 0xd3, 0xce, 0xd2, 0x9e, 0xd3, 0xce, - 0xd2, 0x9f, 0xd3, 0xce, 0xd2, 0x9e, 0xd3, 0xce, 0xd3, 0x9f, 0xd3, 0xce, - 0xd2, 0x9e, 0xd3, 0xce, 0xd3, 0x9e, 0xd4, 0xce, 0xd2, 0x9e, 0xd4, 0xce, - 0xd3, 0x9e, 0xd4, 0xce, 0xd2, 0x9e, 0xd4, 0xce, 0xd3, 0x9e, 0xd5, 0xce, - 0xd2, 0x9e, 0xd5, 0xce, 0xd3, 0x9e, 0xd5, 0xcd, 0xd3, 0x9e, 0xd6, 0xce, - 0xd3, 0x9e, 0xd6, 0xcd, 0xd3, 0x9e, 0xd6, 0xce, 0xd3, 0x9e, 0xd6, 0xcd, - 0xd3, 0x9e, 0xd7, 0xce, 0xd3, 0x9e, 0xd7, 0xcd, 0xd3, 0x9e, 0xd7, 0xce, - 0xd3, 0x9e, 0xd7, 0xcd, 0xd3, 0x9e, 0xd8, 0xce, 0xd3, 0x9e, 0xd8, 0xcd, - 0xd3, 0x9e, 0xd8, 0xce, 0xd3, 0x9e, 0xd9, 0xc9, 0xda, 0x9e, 0xd9, 0xc9, - 0xd9, 0x9e, 0xd9, 0xc9, 0xda, 0x9e, 0xd9, 0xc9, 0xd9, 0x9e, 0xda, 0xc9, - 0xda, 0x9e, 0xda, 0xc9, 0xda, 0x9e, 0xda, 0xc9, 0xdc, 0x9e, 0xda, 0xc9, - 0xdd, 0x9e, 0xdb, 0xc9, 0xdc, 0x9e, 0xdb, 0xc9, 0xdd, 0x9e, 0xdb, 0xc9, - 0xdc, 0x9e, 0xdb, 0xc9, 0xdd, 0x9e, 0xdc, 0xc9, 0xdc, 0x9e, 0xdc, 0xc9, - 0xdd, 0x9e, 0xdc, 0xc9, 0xdc, 0x9e, 0xdd, 0xc9, 0xdd, 0x9e, 0xdd, 0xc9, - 0xdd, 0x9e, 0xdd, 0xca, 0xdf, 0x9e, 0xdd, 0xca, 0xdf, 0x9e, 0xde, 0xca, - 0xdf, 0x9e, 0xde, 0xca, 0xdf, 0x9e, 0xde, 0xca, 0xdf, 0x9e, 0xde, 0xca, - 0xdf, 0x9e, 0xdf, 0xca, 0xdf, 0x9e, 0xdf, 0xca, 0xdf, 0x9e, 0xdf, 0xca, - 0xdf, 0x9e, 0xdf, 0xca, 0xdf, 0x9e, 0xe0, 0xca, 0xe0, 0x9e, 0xe0, 0xca, - 0xe0, 0x9e, 0xe0, 0xca, 0xe0, 0x9e, 0xe1, 0xca, 0xe2, 0x9e, 0xe1, 0xca, - 0xe2, 0x9e, 0xe1, 0xca, 0xe2, 0x9e, 0xe1, 0xca, 0xe2, 0x9e, 0xe2, 0xca, - 0xe2, 0x9e, 0xe2, 0xca, 0xe2, 0x9e, 0xe2, 0xca, 0xe2, 0x9e, 0xe2, 0xca, - 0xe2, 0x9e, 0xe3, 0xca, 0xe3, 0x9e, 0xe3, 0xca, 0xe3, 0x9e, 0xe3, 0xca, - 0xe3, 0x9e, 0xe3, 0xcb, 0xe5, 0x9e, 0xe4, 0xcb, 0xe5, 0x9e, 0xe4, 0xcb, - 0xe5, 0x9e, 0xe4, 0xcb, 0xe5, 0x9e, 0xe4, 0xcb, 0xe5, 0x9e, 0xe5, 0xcb, - 0xe5, 0x9e, 0xe5, 0xcb, 0xe5, 0x9e, 0xe5, 0xcb, 0xe5, 0x9e, 0xe5, 0xcb, - 0xe5, 0x9e, 0xe6, 0xcb, 0xe6, 0x9e, 0xe6, 0xcb, 0xe6, 0x9e, 0xe6, 0xcc, - 0xe8, 0x9e, 0xe6, 0xcc, 0xe8, 0x9e, 0xe7, 0xcc, 0xe8, 0x9e, 0xe7, 0xcc, - 0xe8, 0x9e, 0xe7, 0xcc, 0xe8, 0x9e, 0xe7, 0xcc, 0xe8, 0x9e, 0xe8, 0xcc, - 0xe8, 0x9e, 0xe8, 0xcc, 0xe8, 0x9e, 0xe8, 0xcc, 0xe8, 0x9e, 0xe8, 0xcc, - 0xe8, 0x9e, 0xe9, 0xcc, 0xe9, 0x9e, 0xe9, 0xce, 0xeb, 0x9e, 0xe9, 0xce, - 0xeb, 0x9e, 0xe9, 0xce, 0xeb, 0x9e, 0xea, 0xce, 0xeb, 0x9e, 0xea, 0xce, - 0xeb, 0x9e, 0xea, 0xce, 0xeb, 0x9e, 0xea, 0xce, 0xeb, 0x9e, 0xeb, 0xce, - 0xeb, 0x9e, 0xeb, 0xce, 0xeb, 0x9d, 0xeb, 0xce, 0xeb, 0x9e, 0xeb, 0xce, - 0xeb, 0x9d, 0xeb, 0xce, 0xec, 0x9e, 0xeb, 0xce, 0xec, 0x9d, 0xeb, 0xce, - 0xec, 0x9e, 0xee, 0xce, 0xec, 0x9e, 0xee, 0xce, 0xec, 0x9e, 0xee, 0xce, - 0xed, 0x9e, 0xee, 0xce, 0xed, 0x9e, 0xee, 0xce, 0xed, 0x9e, 0xee, 0xce, - 0xed, 0x9e, 0xee, 0xce, 0xed, 0x9e, 0xee, 0xce, 0xed, 0x9e, 0xee, 0xce, - 0xed, 0x9e, 0xee, 0xce, 0xed, 0x9e, 0xef, 0xcd, 0xee, 0x9e, 0xef, 0xce, - 0xed, 0x9e, 0xef, 0xcd, 0xee, 0x9e, 0xef, 0xce, 0xed, 0x9e, 0xf0, 0xcd, - 0xee, 0x9e, 0xf0, 0xce, 0xed, 0x9e, 0xf0, 0xcd, 0xee, 0x9e, 0xf0, 0xce, - 0xed, 0x9e, 0xf1, 0xcd, 0xee, 0x9e, 0xf1, 0xce, 0xed, 0x9e, 0xf1, 0xcd, - 0xee, 0x9e, 0xf1, 0xce, 0xed, 0x9e, 0xf2, 0xcd, 0xee, 0x9e, 0xf2, 0xce, - 0xed, 0x9e, 0xf2, 0xcd, 0xee, 0x9e, 0xf2, 0xce, 0xed, 0x9e, 0xf2, 0xcd, - 0xee, 0x9e, 0xf3, 0xce, 0xed, 0x9e, 0xf3, 0xcd, 0xee, 0x9e, 0xf3, 0xce, - 0xed, 0x9e, 0xf3, 0xcd, 0xee, 0x9e, 0xf4, 0xce, 0xed, 0x9e, 0xf4, 0xc7, - 0xf5, 0x9e, 0xf4, 0xc7, 0xf5, 0x9e, 0xf4, 0xc7, 0xf5, 0x9e, 0xf5, 0xc7, - 0xf5, 0x9e, 0xf5, 0xc7, 0xf5, 0x9e, 0xf5, 0xc7, 0xf5, 0x9e, 0xf5, 0xc7, - 0xf5, 0x9e, 0xf5, 0xc7, 0xf5, 0x9e, 0xf6, 0xc7, 0xf6, 0x9e, 0xf6, 0xc7, - 0xf6, 0x9e, 0xf6, 0xc7, 0xf6, 0x9e, 0xf6, 0xc7, 0xf6, 0x9e, 0xf7, 0xc7, - 0xf7, 0x9e, 0xf7, 0xc7, 0xf7, 0x9e, 0xf7, 0xc7, 0xf7, 0x9e, 0xf7, 0xc7, - 0xf7, 0x9e, 0xf8, 0xc7, 0xf7, 0x9e, 0xf8, 0xc7, 0xf7, 0x9e, 0xf8, 0xc7, - 0xf7, 0x9e, 0xf8, 0xc7, 0xf7, 0x9e, 0xf8, 0xc7, 0xf7, 0x9e, 0xf9, 0xc7, - 0xf7, 0x9e, 0xf9, 0xc7, 0xf7, 0x9e, 0xf9, 0xc7, 0xf7, 0x9e, 0xf9, 0xc7, - 0xf7, 0x9e, 0xfa, 0xc7, 0xf7, 0x9e, 0xfa, 0xc7, 0xf7, 0x9e, 0xfa, 0xc7, - 0xf7, 0x9e, 0xfa, 0xc7, 0xf7, 0x9e, 0xfa, 0xc7, 0xf7, 0x9e, 0xfb, 0xc7, - 0xf7, 0x9e, 0xfb, 0xc7, 0xf7, 0x9e, 0xfb, 0xc7, 0xf7, 0x9e, 0xfb, 0xc7, - 0xf7, 0x9e, 0xfc, 0xc7, 0xf7, 0x9e, 0xfc, 0xc7, 0xf7, 0x9e, 0xfc, 0xc7, - 0xf7, 0x9e, 0xfc, 0xc7, 0xf7, 0x9e, 0xfc, 0xc7, 0xf7, 0x9e, 0xfd, 0xc7, - 0xf7, 0x9e, 0xfd, 0xc7, 0xf7, 0x9e, 0xfd, 0xc7, 0xf7, 0x9e, 0xfd, 0xc7, - 0xf7, 0x9e, 0xfe, 0xc7, 0xf7, 0x9e, 0xfe, 0xc6, 0xf8, 0x9e, 0xfe, 0xc7, - 0xf7, 0x9e, 0xfe, 0xc6, 0xf8, 0x9e, 0xfe, 0xc7, 0xf7, 0x9e, 0xff, 0xc6, - 0xf8, 0x9e, 0xff, 0xc7, 0xf7, 0x9e, 0x03, 0xd4, 0x8c, 0x9f, 0x0a, 0xd6, - 0x8c, 0x9f, 0x0f, 0xd4, 0x8c, 0x9f, 0x14, 0xd6, 0x8c, 0x9f, 0x17, 0xd4, - 0x8c, 0x9f, 0x1b, 0xd6, 0x8c, 0x9f, 0x1e, 0xd4, 0x8c, 0x9f, 0x20, 0xd6, - 0x8c, 0x9f, 0x23, 0xd4, 0x8c, 0x9f, 0x25, 0xd6, 0x8c, 0x9f, 0x27, 0xd4, - 0x8c, 0x9f, 0x29, 0xd6, 0x8c, 0x9f, 0x2b, 0xd4, 0x8c, 0x9f, 0x2d, 0xd6, - 0x8c, 0x9f, 0x2f, 0xd4, 0x8c, 0x9f, 0x31, 0xd3, 0x8d, 0x9f, 0x32, 0xd4, - 0x8c, 0x9f, 0x34, 0xd3, 0x8d, 0x9f, 0x35, 0xd4, 0x8c, 0x9f, 0x37, 0xd3, - 0x8d, 0x9f, 0x38, 0xd4, 0x8c, 0x9f, 0x3a, 0xd3, 0x8d, 0x9f, 0x3b, 0xd4, - 0x8c, 0x9f, 0x3c, 0xd3, 0x8d, 0x9f, 0x3e, 0xd4, 0x8c, 0x9f, 0x3f, 0xd3, - 0x8d, 0x9f, 0x40, 0xd4, 0x8c, 0x9f, 0x42, 0xd3, 0x8d, 0x9f, 0x43, 0xd4, - 0x8c, 0x9f, 0x44, 0xd3, 0x8d, 0x9f, 0x45, 0xd4, 0x8c, 0x9f, 0x46, 0xd3, - 0x8d, 0x9f, 0x47, 0xd4, 0x8c, 0x9f, 0x48, 0xd3, 0x8d, 0x9f, 0x49, 0xd4, - 0x8c, 0x9f, 0x4a, 0xd3, 0x8d, 0x9f, 0x4b, 0xd4, 0x8c, 0x9f, 0x4c, 0xd3, - 0x8d, 0x9f, 0x4d, 0xd4, 0x8c, 0x9f, 0x4e, 0xd3, 0x8d, 0x9f, 0x4f, 0xd4, - 0x8c, 0x9f, 0x50, 0xd3, 0x8d, 0x9f, 0x51, 0xd4, 0x8c, 0x9f, 0x52, 0xd3, - 0x8d, 0x9f, 0x53, 0xd0, 0x8d, 0x9f, 0x54, 0xd3, 0x8d, 0x9f, 0x55, 0xd0, - 0x8d, 0x9f, 0x56, 0xd3, 0x8d, 0x9f, 0x57, 0xd0, 0x8d, 0x9f, 0x58, 0xd3, - 0x8d, 0x9f, 0x58, 0xd0, 0x8d, 0x9f, 0x59, 0xd3, 0x8d, 0x9f, 0x5a, 0xd0, - 0x8d, 0x9f, 0x5b, 0xd3, 0x8d, 0x9f, 0x5c, 0xd0, 0x8d, 0x9f, 0x5d, 0xd3, - 0x8d, 0x9f, 0x5d, 0xd0, 0x8d, 0x9f, 0x5e, 0xd3, 0x8d, 0x9f, 0x5f, 0xd0, - 0x8d, 0x9f, 0x60, 0xd3, 0x8d, 0x9f, 0x60, 0xd0, 0x8d, 0x9f, 0x61, 0xd3, - 0x8d, 0x9f, 0x62, 0xd0, 0x8d, 0x9f, 0x63, 0xd3, 0x8d, 0x9f, 0x63, 0xd0, - 0x8d, 0x9f, 0x64, 0xd3, 0x8d, 0x9f, 0x65, 0xd0, 0x8d, 0x9f, 0x66, 0xd3, - 0x8d, 0x9f, 0x66, 0xd0, 0x8d, 0x9f, 0x67, 0xd3, 0x8d, 0x9f, 0x68, 0xd0, - 0x8d, 0x9f, 0x68, 0xd3, 0x8d, 0x9f, 0x69, 0xd0, 0x8d, 0x9f, 0x6a, 0xd3, - 0x8d, 0x9f, 0x6a, 0xd0, 0x8d, 0x9f, 0x6b, 0xd3, 0x8d, 0x9f, 0x6c, 0xd0, - 0x8d, 0x9f, 0x6c, 0xd3, 0x8d, 0x9f, 0x6d, 0xd0, 0x8d, 0x9f, 0x6e, 0xd3, - 0x8d, 0x9f, 0x6e, 0xd0, 0x8d, 0x9f, 0x6f, 0xd3, 0x8d, 0x9f, 0x70, 0xd0, - 0x8d, 0x9f, 0x70, 0xd3, 0x8d, 0x9f, 0x71, 0xd0, 0x8d, 0x9f, 0x72, 0xd3, - 0x8d, 0x9f, 0x72, 0xd0, 0x8d, 0x9f, 0x73, 0xd3, 0x8d, 0x9f, 0x73, 0xd0, - 0x8d, 0x9f, 0x74, 0xcf, 0x8e, 0x9f, 0x75, 0xd0, 0x8d, 0x9f, 0x75, 0xcf, - 0x8e, 0x9f, 0x76, 0xd0, 0x8d, 0x9f, 0x76, 0xcf, 0x8e, 0x9f, 0x77, 0xd0, - 0x8d, 0x9f, 0x78, 0xcf, 0x8e, 0x9f, 0x78, 0xd0, 0x8d, 0x9f, 0x79, 0xcf, - 0x8e, 0x9f, 0x79, 0xd0, 0x8d, 0x9f, 0x7a, 0xcf, 0x8e, 0x9f, 0x7a, 0xd0, - 0x8d, 0x9f, 0x7b, 0xcf, 0x8e, 0x9f, 0x7c, 0xd0, 0x8d, 0x9f, 0x7c, 0xcf, - 0x8e, 0x9f, 0x7d, 0xd0, 0x8d, 0x9f, 0x7d, 0xcf, 0x8e, 0x9f, 0x7e, 0xd0, - 0x8d, 0x9f, 0x7e, 0xcf, 0x8e, 0x9f, 0x7f, 0xd0, 0x8d, 0x9f, 0x7f, 0xcf, - 0x8e, 0x9f, 0x80, 0xd0, 0x8d, 0x9f, 0x81, 0xcf, 0x8e, 0x9f, 0x81, 0xd0, - 0x8d, 0x9f, 0x82, 0xcf, 0x8e, 0x9f, 0x82, 0xd0, 0x8d, 0x9f, 0x83, 0xcf, - 0x8e, 0x9f, 0x83, 0xd0, 0x8d, 0x9f, 0x84, 0xcf, 0x8e, 0x9f, 0x84, 0xd0, - 0x8d, 0x9f, 0x85, 0xcf, 0x8e, 0x9f, 0x85, 0xd0, 0x8d, 0x9f, 0x86, 0xcf, - 0x8e, 0x9f, 0x86, 0xd0, 0x8d, 0x9f, 0x87, 0xcf, 0x8e, 0x9f, 0x87, 0xd0, - 0x8d, 0x9f, 0x88, 0xcf, 0x8e, 0x9f, 0x88, 0xd0, 0x8d, 0x9f, 0x89, 0xcf, - 0x8e, 0x9f, 0x89, 0xd0, 0x8d, 0x9f, 0x8a, 0xcf, 0x8e, 0x9f, 0x8a, 0xcf, - 0x8e, 0x9f, 0x8b, 0xcf, 0x8e, 0x9f, 0x8b, 0xcf, 0x8e, 0x9f, 0x8c, 0xcf, - 0x8e, 0x9f, 0x8c, 0xcf, 0x8e, 0x9f, 0x8d, 0xcf, 0x8e, 0x9f, 0x8d, 0xcf, - 0x8e, 0x9f, 0x8e, 0xcf, 0x8e, 0x9e, 0x8d, 0xcf, 0x8e, 0x9f, 0x8e, 0xcf, - 0x8e, 0x9e, 0x8d, 0xcf, 0x8f, 0x9f, 0x8e, 0xcf, 0x8f, 0x9e, 0x8d, 0xcf, - 0x90, 0x9f, 0x8e, 0xcf, 0x90, 0x9e, 0x8d, 0xcf, 0x91, 0x9f, 0x8e, 0xcf, - 0x91, 0x9e, 0x8d, 0xcf, 0x92, 0x9f, 0x8e, 0xcf, 0x92, 0x9e, 0x8d, 0xcf, - 0x93, 0x9f, 0x8e, 0xcf, 0x93, 0x9e, 0x8d, 0xcf, 0x94, 0x9f, 0x8e, 0xcf, - 0x94, 0x9e, 0x8d, 0xcf, 0x94, 0x9f, 0x8e, 0xcf, 0x95, 0x9e, 0x8e, 0xcf, - 0x95, 0x9b, 0x8e, 0xcf, 0x96, 0x9e, 0x8e, 0xcf, 0x96, 0x9b, 0x9a, 0xcf, - 0x97, 0x96, 0x9a, 0xcf, 0x97, 0x96, 0x9a, 0xcf, 0x98, 0x96, 0x9a, 0xcf, - 0x98, 0x96, 0x9a, 0xcf, 0x98, 0x96, 0x9a, 0xcf, 0x99, 0x96, 0x9a, 0xcf, - 0x99, 0x96, 0x9a, 0xcf, 0x9a, 0x96, 0x9a, 0xcf, 0x9a, 0x96, 0x9a, 0xcf, - 0x9a, 0x96, 0x9b, 0xcf, 0x9b, 0x96, 0x9f, 0xcf, 0x9b, 0x97, 0x9f, 0xcf, - 0x9c, 0x97, 0x9f, 0xcf, 0x9c, 0x97, 0x9f, 0xcf, 0x9d, 0x97, 0x9f, 0xcf, - 0x9d, 0x97, 0x9f, 0xcf, 0x9d, 0x97, 0x9f, 0xcf, 0x9e, 0x97, 0x9f, 0xcf, - 0x9e, 0x97, 0x9f, 0xcf, 0x9f, 0x97, 0x9f, 0xcf, 0x9f, 0x97, 0x9f, 0xcf, - 0x9f, 0x97, 0xa0, 0xcf, 0xa0, 0x97, 0xa0, 0xcf, 0xa0, 0x97, 0xa3, 0xcf, - 0xa1, 0x98, 0xa1, 0xcf, 0xa1, 0x97, 0xa3, 0xcf, 0xa1, 0x98, 0xa2, 0xcf, - 0xa2, 0x97, 0xa3, 0xcf, 0xa2, 0x98, 0xa3, 0xcf, 0xa3, 0x97, 0xa3, 0xcf, - 0xa3, 0x98, 0xa3, 0xcf, 0xa3, 0x97, 0xa3, 0xcf, 0xa4, 0x98, 0xa3, 0xcf, - 0xa4, 0x97, 0xa3, 0xcf, 0xa5, 0x98, 0xa3, 0xcf, 0xa5, 0x97, 0xa3, 0xcf, - 0xa5, 0x98, 0xa3, 0xcf, 0xa6, 0x97, 0xa3, 0xcf, 0xa6, 0x98, 0xa3, 0xcf, - 0xa6, 0x97, 0xa3, 0xcf, 0xa7, 0x98, 0xa3, 0xcf, 0xa7, 0x97, 0xa3, 0xcf, - 0xa8, 0x98, 0xa3, 0xcf, 0xa8, 0x97, 0xa3, 0xcf, 0xa8, 0x98, 0xa3, 0xcf, - 0xa9, 0x97, 0xa3, 0xcf, 0xa9, 0x98, 0xa3, 0xcf, 0xaa, 0x97, 0xa3, 0xcf, - 0xaa, 0x98, 0xa3, 0xcf, 0xaa, 0x97, 0xa3, 0xcf, 0xab, 0x98, 0xa3, 0xcf, - 0xab, 0x97, 0xa3, 0xcf, 0xab, 0x98, 0xa3, 0xcf, 0xac, 0x97, 0xa3, 0xcf, - 0xac, 0x98, 0xa3, 0xcf, 0xac, 0x97, 0xa3, 0xcf, 0xad, 0x98, 0xa3, 0xcf, - 0xad, 0x97, 0xa3, 0xcf, 0xae, 0x98, 0xa3, 0xcf, 0xae, 0x97, 0xa3, 0xcf, - 0xae, 0x98, 0xa3, 0xcf, 0xaf, 0x97, 0xa3, 0xcf, 0xaf, 0x98, 0xa3, 0xcf, - 0xaf, 0x97, 0xa3, 0xcf, 0xb0, 0x98, 0xa3, 0xcf, 0xb0, 0x97, 0xa3, 0xcf, - 0xb0, 0x98, 0xa3, 0xcf, 0xb1, 0x97, 0xa3, 0xcf, 0xb1, 0x98, 0xa3, 0xcf, - 0xb2, 0x97, 0xa3, 0xcf, 0xb2, 0x98, 0xa3, 0xcf, 0xb2, 0x97, 0xa3, 0xcf, - 0xb3, 0x98, 0xa3, 0xcf, 0xb3, 0x97, 0xa3, 0xcf, 0xb3, 0x98, 0xa3, 0xcf, - 0xb4, 0x97, 0xa3, 0xcf, 0xb4, 0x98, 0xa3, 0xcf, 0xb4, 0x97, 0xa3, 0xcf, - 0xb5, 0x98, 0xa3, 0xcf, 0xb5, 0x97, 0xa3, 0xcf, 0xb5, 0x98, 0xa3, 0xcf, - 0xb6, 0x97, 0xa3, 0xcf, 0xb6, 0x98, 0xa3, 0xcf, 0xb6, 0x97, 0xa4, 0xcf, - 0xb7, 0x95, 0xa3, 0xcf, 0xb7, 0x97, 0xa4, 0xcf, 0xb7, 0x95, 0xa3, 0xcf, - 0xb8, 0x97, 0xa4, 0xcf, 0xb8, 0x95, 0xa3, 0xcf, 0xb8, 0x97, 0xa4, 0xcf, - 0xb9, 0x95, 0xa3, 0xcf, 0xb9, 0x97, 0xa4, 0xcf, 0xb9, 0x95, 0xa3, 0xcf, - 0xba, 0x97, 0xa4, 0xcf, 0xba, 0x95, 0xa3, 0xcf, 0xba, 0x97, 0xa4, 0xcf, - 0xbb, 0x95, 0xa3, 0xcf, 0xbb, 0x97, 0xa4, 0xcf, 0xbb, 0x95, 0xa3, 0xcf, - 0xbc, 0x97, 0xa4, 0xcf, 0xbc, 0x95, 0xa3, 0xcf, 0xbc, 0x97, 0xd2, 0xcf, - 0xbd, 0xa2, 0xd2, 0xcf, 0xbd, 0xa5, 0xd2, 0xcf, 0xbd, 0xa2, 0xd2, 0xcf, - 0xbe, 0xa5, 0xd2, 0xcf, 0xbe, 0xa2, 0xd2, 0xcf, 0xbe, 0xa5, 0xd2, 0xcf, - 0xbf, 0xa2, 0xd2, 0xcf, 0xbf, 0xa5, 0xd2, 0xcf, 0xbf, 0xa2, 0xd2, 0xcf, - 0xc0, 0xa5, 0xd2, 0xcf, 0xc0, 0xa2, 0xd2, 0xcf, 0xc0, 0xa5, 0xd2, 0xcf, - 0xc1, 0xa2, 0xd2, 0xcf, 0xc1, 0xa5, 0xd2, 0xcf, 0xc1, 0xa2, 0xd2, 0xcf, - 0xc1, 0xa5, 0xd2, 0xcf, 0xc2, 0xa2, 0xd2, 0xcf, 0xc2, 0xa5, 0xd2, 0xcf, - 0xc2, 0xa2, 0xd2, 0xcf, 0xc3, 0xa5, 0xd2, 0xcf, 0xc3, 0xa2, 0xd2, 0xcf, - 0xc3, 0xa5, 0xd2, 0xcf, 0xc4, 0xa2, 0xd2, 0xcf, 0xc4, 0xa5, 0xd2, 0xcf, - 0xc4, 0xa2, 0xd2, 0xcf, 0xc5, 0xa5, 0xd2, 0xcf, 0xc5, 0xa2, 0xd2, 0xcf, - 0xc5, 0xa5, 0xd2, 0xcf, 0xc6, 0xa2, 0xd2, 0xcf, 0xc6, 0xa5, 0xd2, 0xcf, - 0xc6, 0xa2, 0xd2, 0xcf, 0xc6, 0xa5, 0xd2, 0xcf, 0xc7, 0xa2, 0xd2, 0xcf, - 0xc7, 0xa5, 0xd2, 0xcf, 0xc7, 0xa2, 0xd2, 0xcf, 0xc8, 0xa5, 0xd2, 0xcf, - 0xc8, 0xa2, 0xd3, 0xcf, 0xc8, 0xa0, 0xd2, 0xcf, 0xc9, 0xa2, 0xd3, 0xcf, - 0xc9, 0xa0, 0xd2, 0xcf, 0xc9, 0xa2, 0xd3, 0xcf, 0xc9, 0xa0, 0xd2, 0xcf, - 0xca, 0xa2, 0xd3, 0xcf, 0xca, 0xa0, 0xd2, 0xcf, 0xca, 0xa2, 0xd3, 0xcf, - 0xcb, 0xa0, 0xd2, 0xcf, 0xcb, 0xa2, 0xd3, 0xcf, 0xcb, 0xa0, 0xd2, 0xcf, - 0xcc, 0xa2, 0xd3, 0xcf, 0xcc, 0xa0, 0xd2, 0xcf, 0xcc, 0xa2, 0xd3, 0xcf, - 0xcc, 0xa0, 0xd2, 0xcf, 0xcd, 0xa2, 0xd3, 0xcf, 0xcd, 0xa0, 0xd2, 0xcf, - 0xcd, 0xa2, 0xd3, 0xcf, 0xce, 0xa0, 0xd2, 0xcf, 0xce, 0xa2, 0xd3, 0xcf, - 0xce, 0xa0, 0xd2, 0xcf, 0xce, 0xa2, 0xd3, 0xcf, 0xcf, 0xa0, 0xd2, 0xcf, - 0xcf, 0xa2, 0xd3, 0xcf, 0xcf, 0xa0, 0xd2, 0xcf, 0xd0, 0xa2, 0xd3, 0xcf, - 0xd0, 0xa0, 0xd2, 0xcf, 0xd0, 0xa2, 0xd3, 0xcf, 0xd0, 0xa0, 0xd3, 0xcf, - 0xd1, 0x9f, 0xd3, 0xcf, 0xd1, 0xa0, 0xd3, 0xcf, 0xd1, 0x9f, 0xd3, 0xcf, - 0xd2, 0xa0, 0xd3, 0xcf, 0xd2, 0x9f, 0xd3, 0xcf, 0xd2, 0xa0, 0xd3, 0xcf, - 0xd2, 0x9f, 0xd3, 0xcf, 0xd3, 0xa0, 0xd3, 0xcf, 0xd2, 0x9f, 0xd3, 0xcf, - 0xd3, 0x9f, 0xd4, 0xcf, 0xd2, 0x9f, 0xd4, 0xcf, 0xd3, 0x9f, 0xd4, 0xcf, - 0xd2, 0x9f, 0xd4, 0xcf, 0xd3, 0x9f, 0xd5, 0xcf, 0xd2, 0x9f, 0xd5, 0xcf, - 0xd3, 0x9f, 0xd5, 0xcd, 0xd3, 0x9f, 0xd6, 0xcf, 0xd3, 0x9f, 0xd6, 0xcd, - 0xd3, 0x9f, 0xd6, 0xcf, 0xd3, 0x9f, 0xd6, 0xcd, 0xd3, 0x9f, 0xd7, 0xcf, - 0xd3, 0x9f, 0xd7, 0xcd, 0xd3, 0x9f, 0xd7, 0xcf, 0xd3, 0x9f, 0xd7, 0xcd, - 0xd3, 0x9f, 0xd8, 0xcf, 0xd3, 0x9f, 0xd8, 0xcd, 0xd3, 0x9f, 0xd8, 0xcf, - 0xd3, 0x9f, 0xd9, 0xcd, 0xd3, 0x9f, 0xd9, 0xc9, 0xdb, 0x9f, 0xd9, 0xc9, - 0xdb, 0x9f, 0xd9, 0xc9, 0xdb, 0x9f, 0xda, 0xc9, 0xdb, 0x9f, 0xda, 0xc9, - 0xdb, 0x9f, 0xda, 0xc9, 0xdb, 0x9f, 0xda, 0xc9, 0xdb, 0x9f, 0xdb, 0xc9, - 0xdb, 0x9f, 0xdb, 0xc9, 0xdb, 0x9f, 0xdb, 0xc9, 0xdb, 0x9f, 0xdb, 0xc9, - 0xdb, 0x9f, 0xdc, 0xc9, 0xde, 0x9f, 0xdc, 0xc9, 0xde, 0x9f, 0xdc, 0xc9, - 0xde, 0x9f, 0xdd, 0xc9, 0xde, 0x9f, 0xdd, 0xc9, 0xde, 0x9f, 0xdd, 0xc9, - 0xde, 0x9f, 0xdd, 0xc9, 0xde, 0x9f, 0xde, 0xc9, 0xde, 0x9f, 0xde, 0xc9, - 0xde, 0x9f, 0xde, 0xc9, 0xde, 0x9f, 0xde, 0xc9, 0xde, 0x9f, 0xdf, 0xca, - 0xe1, 0x9f, 0xdf, 0xca, 0xe1, 0x9f, 0xdf, 0xca, 0xe1, 0x9f, 0xdf, 0xca, - 0xe1, 0x9f, 0xe0, 0xca, 0xe1, 0x9f, 0xe0, 0xca, 0xe1, 0x9f, 0xe0, 0xca, - 0xe1, 0x9f, 0xe1, 0xca, 0xe1, 0x9f, 0xe1, 0xca, 0xe1, 0x9f, 0xe1, 0xca, - 0xe1, 0x9f, 0xe1, 0xca, 0xe1, 0x9f, 0xe2, 0xca, 0xe2, 0x9f, 0xe2, 0xca, - 0xe2, 0x9f, 0xe2, 0xcb, 0xe4, 0x9f, 0xe2, 0xcb, 0xe4, 0x9f, 0xe3, 0xcb, - 0xe4, 0x9f, 0xe3, 0xcb, 0xe4, 0x9f, 0xe3, 0xcb, 0xe4, 0x9f, 0xe3, 0xcb, - 0xe4, 0x9f, 0xe4, 0xcb, 0xe4, 0x9f, 0xe4, 0xcb, 0xe4, 0x9f, 0xe4, 0xcb, - 0xe4, 0x9f, 0xe4, 0xcb, 0xe4, 0x9f, 0xe5, 0xcb, 0xe5, 0x9f, 0xe5, 0xcb, - 0xe6, 0x9f, 0xe5, 0xcb, 0xe7, 0x9f, 0xe5, 0xcb, 0xe6, 0x9f, 0xe6, 0xcb, - 0xe7, 0x9f, 0xe6, 0xcb, 0xe6, 0x9f, 0xe6, 0xcb, 0xe7, 0x9f, 0xe6, 0xcb, - 0xe6, 0x9f, 0xe7, 0xcb, 0xe7, 0x9f, 0xe7, 0xcb, 0xe7, 0x9f, 0xe7, 0xcb, - 0xe7, 0x9f, 0xe7, 0xcc, 0xe9, 0x9f, 0xe8, 0xcc, 0xe9, 0x9f, 0xe8, 0xcc, - 0xe9, 0x9f, 0xe8, 0xcc, 0xe9, 0x9f, 0xe8, 0xcf, 0xeb, 0x9f, 0xe9, 0xd0, - 0xeb, 0x9f, 0xe9, 0xcf, 0xeb, 0x9f, 0xe9, 0xd0, 0xeb, 0x9f, 0xe9, 0xcf, - 0xeb, 0x9f, 0xea, 0xd0, 0xeb, 0x9f, 0xea, 0xcf, 0xeb, 0x9f, 0xea, 0xcf, - 0xeb, 0x9f, 0xea, 0xcf, 0xeb, 0x9f, 0xeb, 0xcf, 0xeb, 0x9f, 0xeb, 0xcf, - 0xeb, 0x9e, 0xeb, 0xcf, 0xeb, 0x9f, 0xeb, 0xcf, 0xeb, 0x9e, 0xeb, 0xcf, - 0xec, 0x9f, 0xeb, 0xcf, 0xec, 0x9e, 0xeb, 0xcf, 0xec, 0x9f, 0xee, 0xcf, - 0xec, 0x9f, 0xed, 0xcf, 0xec, 0xa1, 0xee, 0xcf, 0xed, 0x9f, 0xee, 0xcf, - 0xed, 0x9f, 0xee, 0xcf, 0xed, 0x9f, 0xee, 0xcf, 0xed, 0x9f, 0xee, 0xcf, - 0xed, 0x9f, 0xee, 0xcf, 0xed, 0x9f, 0xee, 0xcf, 0xed, 0x9f, 0xee, 0xcf, - 0xed, 0x9f, 0xef, 0xce, 0xee, 0x9f, 0xef, 0xcf, 0xed, 0x9f, 0xef, 0xce, - 0xee, 0x9f, 0xef, 0xcf, 0xed, 0x9f, 0xf0, 0xce, 0xee, 0x9f, 0xf0, 0xcf, - 0xed, 0x9f, 0xf0, 0xce, 0xee, 0x9f, 0xf0, 0xcf, 0xed, 0x9f, 0xf1, 0xce, - 0xee, 0x9f, 0xf1, 0xcf, 0xed, 0x9f, 0xf1, 0xce, 0xee, 0x9f, 0xf1, 0xcf, - 0xed, 0x9f, 0xf2, 0xce, 0xee, 0x9f, 0xf2, 0xcf, 0xed, 0x9f, 0xf2, 0xce, - 0xee, 0x9f, 0xf2, 0xcf, 0xed, 0x9f, 0xf2, 0xce, 0xee, 0x9f, 0xf3, 0xcf, - 0xed, 0x9f, 0xf3, 0xce, 0xee, 0x9f, 0xf3, 0xcf, 0xed, 0x9f, 0xf3, 0xce, - 0xee, 0x9f, 0xf4, 0xcf, 0xed, 0x9f, 0xf4, 0xce, 0xee, 0x9f, 0xf4, 0xc7, - 0xf6, 0x9f, 0xf4, 0xc7, 0xf6, 0x9f, 0xf5, 0xc7, 0xf6, 0x9f, 0xf5, 0xc7, - 0xf6, 0x9f, 0xf5, 0xc7, 0xf6, 0x9f, 0xf5, 0xc7, 0xf6, 0x9f, 0xf5, 0xc7, - 0xf6, 0x9f, 0xf6, 0xc7, 0xf6, 0x9f, 0xf6, 0xc7, 0xf6, 0x9f, 0xf6, 0xc7, - 0xf6, 0x9f, 0xf6, 0xc7, 0xf6, 0x9f, 0xf7, 0xc7, 0xf7, 0x9f, 0xf7, 0xc7, - 0xf7, 0x9f, 0xf7, 0xc7, 0xf7, 0x9f, 0xf7, 0xc7, 0xf7, 0x9f, 0xf8, 0xc7, - 0xf7, 0x9f, 0xf8, 0xc7, 0xf7, 0x9f, 0xf8, 0xc7, 0xf7, 0x9f, 0xf8, 0xc7, - 0xf7, 0x9f, 0xf8, 0xc7, 0xf7, 0x9f, 0xf9, 0xc7, 0xf7, 0x9f, 0xf9, 0xc7, - 0xf7, 0x9f, 0xf9, 0xc7, 0xf7, 0x9f, 0xf9, 0xc7, 0xf7, 0x9f, 0xfa, 0xc7, - 0xf7, 0x9f, 0xfa, 0xc7, 0xf7, 0x9f, 0xfa, 0xc7, 0xf7, 0x9f, 0xfa, 0xc7, - 0xf7, 0x9f, 0xfa, 0xc7, 0xf7, 0x9f, 0xfb, 0xc7, 0xf7, 0x9f, 0xfb, 0xc7, - 0xf7, 0x9f, 0xfb, 0xc7, 0xf7, 0x9f, 0xfb, 0xc7, 0xf7, 0x9f, 0xfc, 0xc7, - 0xf7, 0x9f, 0xfc, 0xc7, 0xf7, 0x9f, 0xfc, 0xc7, 0xf7, 0x9f, 0xfc, 0xc7, - 0xf7, 0x9f, 0xfc, 0xc7, 0xf7, 0x9f, 0xfd, 0xc7, 0xf7, 0x9f, 0xfd, 0xc7, - 0xf7, 0x9f, 0xfd, 0xc7, 0xf7, 0x9f, 0xfd, 0xc7, 0xf7, 0x9f, 0xfe, 0xc7, - 0xf7, 0x9f, 0xfe, 0xc7, 0xf7, 0x9f, 0xfe, 0xc7, 0xf7, 0x9f, 0xfe, 0xc7, - 0xf7, 0x9f, 0xfe, 0xc7, 0xf7, 0x9f, 0xff, 0xc7, 0xf7, 0x9f, 0xff, 0xc7, - 0xf7, 0x9f, 0x03, 0xd4, 0x8c, 0x9f, 0x0a, 0xd6, 0x8c, 0x9f, 0x0f, 0xd4, - 0x8c, 0x9f, 0x14, 0xd2, 0x8d, 0x9f, 0x17, 0xd4, 0x8c, 0x9f, 0x1b, 0xd2, - 0x8d, 0x9f, 0x1e, 0xd4, 0x8c, 0x9f, 0x20, 0xd2, 0x8d, 0x9f, 0x23, 0xd4, - 0x8c, 0x9f, 0x25, 0xd2, 0x8d, 0x9f, 0x27, 0xd4, 0x8c, 0x9f, 0x29, 0xd2, - 0x8d, 0x9f, 0x2b, 0xd4, 0x8c, 0x9f, 0x2d, 0xd2, 0x8d, 0x9f, 0x2f, 0xd4, - 0x8c, 0x9f, 0x31, 0xd2, 0x8d, 0x9f, 0x32, 0xd4, 0x8c, 0x9f, 0x34, 0xd2, - 0x8d, 0x9f, 0x35, 0xd4, 0x8c, 0x9f, 0x37, 0xd2, 0x8d, 0x9f, 0x38, 0xd4, - 0x8c, 0x9f, 0x3a, 0xd2, 0x8d, 0x9f, 0x3b, 0xd4, 0x8c, 0x9f, 0x3c, 0xd2, - 0x8d, 0x9f, 0x3e, 0xd4, 0x8c, 0x9f, 0x3f, 0xd2, 0x8d, 0x9f, 0x40, 0xd4, - 0x8c, 0x9f, 0x42, 0xd2, 0x8d, 0x9f, 0x43, 0xd4, 0x8c, 0x9f, 0x44, 0xd2, - 0x8d, 0x9f, 0x45, 0xd4, 0x8c, 0x9f, 0x46, 0xd2, 0x8d, 0x9f, 0x47, 0xd4, - 0x8c, 0x9f, 0x48, 0xd2, 0x8d, 0x9f, 0x49, 0xd4, 0x8c, 0x9f, 0x4a, 0xd2, - 0x8d, 0x9f, 0x4b, 0xd4, 0x8c, 0x9f, 0x4c, 0xd2, 0x8d, 0x9f, 0x4d, 0xd4, - 0x8c, 0x9f, 0x4e, 0xd2, 0x8d, 0x9f, 0x4f, 0xd4, 0x8c, 0x9f, 0x50, 0xd2, - 0x8d, 0x9f, 0x51, 0xd4, 0x8c, 0x9f, 0x52, 0xd2, 0x8d, 0x9f, 0x53, 0xd4, - 0x8c, 0x9f, 0x54, 0xd2, 0x8d, 0x9f, 0x55, 0xd4, 0x8c, 0x9f, 0x56, 0xd2, - 0x8d, 0x9f, 0x57, 0xd4, 0x8c, 0x9f, 0x58, 0xd2, 0x8d, 0x9f, 0x58, 0xd4, - 0x8c, 0x9f, 0x59, 0xd2, 0x8d, 0x9f, 0x5a, 0xd4, 0x8c, 0x9f, 0x5b, 0xd2, - 0x8d, 0x9f, 0x5c, 0xd4, 0x8c, 0x9f, 0x5d, 0xd2, 0x8d, 0x9f, 0x5d, 0xd4, - 0x8c, 0x9f, 0x5e, 0xd2, 0x8d, 0x9f, 0x5f, 0xd4, 0x8c, 0x9f, 0x60, 0xd2, - 0x8d, 0x9f, 0x60, 0xd4, 0x8c, 0x9f, 0x61, 0xd2, 0x8d, 0x9f, 0x62, 0xd4, - 0x8c, 0x9f, 0x63, 0xd2, 0x8d, 0x9f, 0x63, 0xd1, 0x8d, 0x9f, 0x64, 0xd2, - 0x8d, 0x9f, 0x65, 0xd1, 0x8d, 0x9f, 0x66, 0xd2, 0x8d, 0x9f, 0x66, 0xd1, - 0x8d, 0x9f, 0x67, 0xd2, 0x8d, 0x9f, 0x68, 0xd1, 0x8d, 0x9f, 0x68, 0xd2, - 0x8d, 0x9f, 0x69, 0xd1, 0x8d, 0x9f, 0x6a, 0xd2, 0x8d, 0x9f, 0x6a, 0xd1, - 0x8d, 0x9f, 0x6b, 0xd2, 0x8d, 0x9f, 0x6c, 0xd1, 0x8d, 0x9f, 0x6c, 0xd2, - 0x8d, 0x9f, 0x6d, 0xd1, 0x8d, 0x9f, 0x6e, 0xd2, 0x8d, 0x9f, 0x6e, 0xd1, - 0x8d, 0x9f, 0x6f, 0xd2, 0x8d, 0x9f, 0x70, 0xd1, 0x8d, 0x9f, 0x70, 0xd2, - 0x8d, 0x9f, 0x71, 0xd1, 0x8d, 0x9f, 0x72, 0xd2, 0x8d, 0x9f, 0x72, 0xd1, - 0x8d, 0x9f, 0x73, 0xd2, 0x8d, 0x9f, 0x73, 0xd1, 0x8d, 0x9f, 0x74, 0xd2, - 0x8d, 0x9f, 0x75, 0xd1, 0x8d, 0x9f, 0x75, 0xd2, 0x8d, 0x9f, 0x76, 0xd1, - 0x8d, 0x9f, 0x76, 0xd2, 0x8d, 0x9f, 0x77, 0xd1, 0x8d, 0x9f, 0x78, 0xd2, - 0x8d, 0x9f, 0x78, 0xd1, 0x8d, 0x9f, 0x79, 0xd2, 0x8d, 0x9f, 0x79, 0xd1, - 0x8d, 0x9f, 0x7a, 0xd2, 0x8d, 0x9f, 0x7a, 0xd1, 0x8d, 0x9f, 0x7b, 0xcf, - 0x8e, 0x9f, 0x7c, 0xd1, 0x8d, 0x9f, 0x7c, 0xcf, 0x8e, 0x9f, 0x7d, 0xd1, - 0x8d, 0x9f, 0x7d, 0xcf, 0x8e, 0x9f, 0x7e, 0xd1, 0x8d, 0x9f, 0x7e, 0xcf, - 0x8e, 0x9f, 0x7f, 0xd1, 0x8d, 0x9f, 0x7f, 0xcf, 0x8e, 0x9f, 0x80, 0xd1, - 0x8d, 0x9f, 0x81, 0xcf, 0x8e, 0x9f, 0x81, 0xd1, 0x8d, 0x9f, 0x82, 0xcf, - 0x8e, 0x9f, 0x82, 0xd1, 0x8d, 0x9f, 0x83, 0xcf, 0x8e, 0x9f, 0x83, 0xd1, - 0x8d, 0x9f, 0x84, 0xcf, 0x8e, 0x9f, 0x84, 0xd1, 0x8d, 0x9f, 0x85, 0xcf, - 0x8e, 0x9f, 0x85, 0xd1, 0x8d, 0x9f, 0x86, 0xcf, 0x8e, 0x9f, 0x86, 0xd1, - 0x8d, 0x9f, 0x87, 0xcf, 0x8e, 0x9f, 0x87, 0xd1, 0x8d, 0x9f, 0x88, 0xcf, - 0x8e, 0x9f, 0x88, 0xd1, 0x8d, 0x9f, 0x89, 0xcf, 0x8e, 0x9f, 0x89, 0xd1, - 0x8d, 0x9f, 0x8a, 0xcf, 0x8e, 0x9f, 0x8a, 0xcf, 0x8e, 0x9f, 0x8b, 0xcf, - 0x8e, 0x9f, 0x8b, 0xcf, 0x8e, 0x9f, 0x8c, 0xcf, 0x8e, 0x9f, 0x8c, 0xcf, - 0x8e, 0x9f, 0x8d, 0xcf, 0x8e, 0x9f, 0x8d, 0xcf, 0x8e, 0x9f, 0x8e, 0xcf, - 0x8e, 0x9e, 0x8d, 0xcf, 0x8e, 0x9f, 0x8e, 0xcf, 0x8e, 0x9e, 0x8d, 0xcf, - 0x8f, 0x9f, 0x8e, 0xcf, 0x8f, 0x9e, 0x8d, 0xcf, 0x90, 0x9f, 0x8e, 0xcf, - 0x90, 0x9e, 0x8d, 0xcf, 0x91, 0x9f, 0x8e, 0xcf, 0x91, 0x9e, 0x8d, 0xcf, - 0x92, 0x9f, 0x8e, 0xcf, 0x92, 0x9e, 0x8d, 0xcf, 0x93, 0x9f, 0x8e, 0xcf, - 0x93, 0x9e, 0x8d, 0xcf, 0x94, 0x9f, 0x8e, 0xcf, 0x94, 0x9e, 0x8d, 0xcf, - 0x94, 0x9f, 0x8e, 0xcf, 0x95, 0x9e, 0x8d, 0xcf, 0x95, 0x9f, 0x8e, 0xcf, - 0x96, 0x9e, 0x8d, 0xcf, 0x96, 0x9f, 0x98, 0xcf, 0x97, 0x95, 0x98, 0xcf, - 0x97, 0x95, 0x98, 0xcf, 0x98, 0x95, 0x98, 0xcf, 0x98, 0x95, 0x98, 0xcf, - 0x98, 0x95, 0x9c, 0xcf, 0x99, 0x96, 0x9d, 0xcf, 0x99, 0x96, 0x9c, 0xcf, - 0x9a, 0x96, 0x9d, 0xcf, 0x9a, 0x96, 0x9c, 0xcf, 0x9a, 0x96, 0x9d, 0xcf, - 0x9b, 0x96, 0x9c, 0xcf, 0x9b, 0x96, 0x9d, 0xcf, 0x9c, 0x96, 0x9c, 0xcf, - 0x9c, 0x96, 0x9d, 0xcf, 0x9d, 0x96, 0x9d, 0xcf, 0x9d, 0x96, 0xa1, 0xcf, - 0x9d, 0x97, 0xa1, 0xcf, 0x9e, 0x97, 0xa1, 0xcf, 0x9e, 0x97, 0xa1, 0xcf, - 0x9f, 0x97, 0xa1, 0xcf, 0x9f, 0x97, 0xa1, 0xcf, 0x9f, 0x97, 0xa1, 0xcf, - 0xa0, 0x97, 0xa1, 0xcf, 0xa0, 0x97, 0xa1, 0xcf, 0xa1, 0x97, 0xa1, 0xcf, - 0xa1, 0x97, 0xa1, 0xcf, 0xa1, 0x97, 0xa2, 0xcf, 0xa2, 0x97, 0xa2, 0xcf, - 0xa2, 0x97, 0xa3, 0xcf, 0xa3, 0x97, 0xa3, 0xcf, 0xa3, 0x97, 0xa3, 0xcf, - 0xa3, 0x97, 0xa3, 0xcf, 0xa4, 0x97, 0xa3, 0xcf, 0xa4, 0x97, 0xa3, 0xcf, - 0xa5, 0x97, 0xa3, 0xcf, 0xa5, 0x97, 0xa3, 0xcf, 0xa5, 0x97, 0xa3, 0xcf, - 0xa6, 0x97, 0xa3, 0xcf, 0xa6, 0x97, 0xa3, 0xcf, 0xa6, 0x97, 0xa3, 0xcf, - 0xa7, 0x97, 0xa3, 0xcf, 0xa7, 0x97, 0xa3, 0xcf, 0xa8, 0x97, 0xa3, 0xcf, - 0xa8, 0x97, 0xa3, 0xcf, 0xa8, 0x97, 0xa3, 0xcf, 0xa9, 0x97, 0xa3, 0xcf, - 0xa9, 0x97, 0xa3, 0xcf, 0xaa, 0x97, 0xa3, 0xcf, 0xaa, 0x97, 0xa3, 0xcf, - 0xaa, 0x97, 0xa3, 0xcf, 0xab, 0x97, 0xa3, 0xcf, 0xab, 0x97, 0xa3, 0xcf, - 0xab, 0x97, 0xa3, 0xcf, 0xac, 0x97, 0xa3, 0xcf, 0xac, 0x97, 0xa3, 0xcf, - 0xac, 0x97, 0xa3, 0xcf, 0xad, 0x97, 0xa3, 0xcf, 0xad, 0x97, 0xa3, 0xcf, - 0xae, 0x97, 0xa3, 0xcf, 0xae, 0x97, 0xa3, 0xcf, 0xae, 0x97, 0xa3, 0xcf, - 0xaf, 0x97, 0xa3, 0xcf, 0xaf, 0x97, 0xa3, 0xcf, 0xaf, 0x97, 0xa3, 0xcf, - 0xb0, 0x97, 0xa3, 0xcf, 0xb0, 0x97, 0xa3, 0xcf, 0xb0, 0x97, 0xa3, 0xcf, - 0xb1, 0x97, 0xa3, 0xcf, 0xb1, 0x97, 0xa3, 0xcf, 0xb2, 0x97, 0xa3, 0xcf, - 0xb2, 0x97, 0xa3, 0xcf, 0xb2, 0x97, 0xa3, 0xcf, 0xb3, 0x97, 0xa3, 0xcf, - 0xb3, 0x97, 0xa3, 0xcf, 0xb3, 0x97, 0xa3, 0xcf, 0xb4, 0x97, 0xa3, 0xcf, - 0xb4, 0x97, 0xa3, 0xcf, 0xb4, 0x97, 0xa3, 0xcf, 0xb5, 0x97, 0xa3, 0xcf, - 0xb5, 0x97, 0xa3, 0xcf, 0xb5, 0x97, 0xa3, 0xcf, 0xb6, 0x97, 0xa3, 0xcf, - 0xb6, 0x97, 0xa3, 0xcf, 0xb6, 0x97, 0xa3, 0xcf, 0xb7, 0x97, 0xa3, 0xcf, - 0xb7, 0x97, 0xa3, 0xcf, 0xb7, 0x97, 0xa3, 0xcf, 0xb8, 0x97, 0xa4, 0xcf, - 0xb8, 0x94, 0xa3, 0xcf, 0xb8, 0x97, 0xa4, 0xcf, 0xb9, 0x94, 0xa3, 0xcf, - 0xb9, 0x97, 0xa4, 0xcf, 0xb9, 0x94, 0xa3, 0xcf, 0xba, 0x97, 0xa4, 0xcf, - 0xba, 0x94, 0xa3, 0xcf, 0xba, 0x97, 0xa4, 0xcf, 0xbb, 0x94, 0xa3, 0xcf, - 0xbb, 0x97, 0xa4, 0xcf, 0xbb, 0x94, 0xa3, 0xcf, 0xbc, 0x97, 0xa4, 0xcf, - 0xbc, 0x94, 0xa3, 0xcf, 0xbc, 0x97, 0xd2, 0xcf, 0xbd, 0xa7, 0xd2, 0xcf, - 0xbd, 0xa4, 0xd2, 0xcf, 0xbd, 0xa7, 0xd2, 0xcf, 0xbe, 0xa4, 0xd2, 0xcf, - 0xbe, 0xa7, 0xd2, 0xcf, 0xbe, 0xa4, 0xd2, 0xcf, 0xbf, 0xa7, 0xd2, 0xcf, - 0xbf, 0xa4, 0xd2, 0xcf, 0xbf, 0xa7, 0xd2, 0xcf, 0xc0, 0xa4, 0xd2, 0xcf, - 0xc0, 0xa7, 0xd2, 0xcf, 0xc0, 0xa4, 0xd2, 0xcf, 0xc1, 0xa7, 0xd2, 0xcf, - 0xc1, 0xa4, 0xd2, 0xcf, 0xc1, 0xa7, 0xd2, 0xcf, 0xc1, 0xa4, 0xd2, 0xcf, - 0xc2, 0xa2, 0xd2, 0xcf, 0xc2, 0xa4, 0xd2, 0xcf, 0xc2, 0xa2, 0xd2, 0xcf, - 0xc3, 0xa4, 0xd2, 0xcf, 0xc3, 0xa2, 0xd2, 0xcf, 0xc3, 0xa4, 0xd2, 0xcf, - 0xc4, 0xa2, 0xd2, 0xcf, 0xc4, 0xa4, 0xd2, 0xcf, 0xc4, 0xa2, 0xd2, 0xcf, - 0xc5, 0xa4, 0xd2, 0xcf, 0xc5, 0xa2, 0xd2, 0xcf, 0xc5, 0xa4, 0xd2, 0xcf, - 0xc6, 0xa2, 0xd2, 0xcf, 0xc6, 0xa4, 0xd2, 0xcf, 0xc6, 0xa2, 0xd2, 0xcf, - 0xc6, 0xa4, 0xd2, 0xcf, 0xc7, 0xa2, 0xd2, 0xcf, 0xc7, 0xa4, 0xd2, 0xcf, - 0xc7, 0xa2, 0xd2, 0xcf, 0xc8, 0xa4, 0xd2, 0xcf, 0xc8, 0xa2, 0xd2, 0xcf, - 0xc8, 0xa4, 0xd2, 0xcf, 0xc9, 0xa2, 0xd2, 0xcf, 0xc9, 0xa4, 0xd2, 0xcf, - 0xc9, 0xa2, 0xd2, 0xcf, 0xc9, 0xa4, 0xd2, 0xcf, 0xca, 0xa2, 0xd2, 0xcf, - 0xca, 0xa4, 0xd2, 0xcf, 0xca, 0xa2, 0xd2, 0xcf, 0xcb, 0xa4, 0xd2, 0xcf, - 0xcb, 0xa2, 0xd2, 0xcf, 0xcb, 0xa4, 0xd2, 0xcf, 0xcc, 0xa2, 0xd3, 0xcf, - 0xcc, 0x9f, 0xd2, 0xcf, 0xcc, 0xa2, 0xd3, 0xcf, 0xcc, 0x9f, 0xd2, 0xcf, - 0xcd, 0xa2, 0xd3, 0xcf, 0xcd, 0x9f, 0xd2, 0xcf, 0xcd, 0xa2, 0xd3, 0xcf, - 0xce, 0x9f, 0xd2, 0xcf, 0xce, 0xa2, 0xd3, 0xcf, 0xce, 0x9f, 0xd2, 0xcf, - 0xce, 0xa2, 0xd3, 0xcf, 0xcf, 0x9f, 0xd2, 0xcf, 0xcf, 0xa2, 0xd3, 0xcf, - 0xcf, 0x9f, 0xd2, 0xcf, 0xd0, 0xa2, 0xd3, 0xcf, 0xd0, 0x9f, 0xd2, 0xcf, - 0xd0, 0xa2, 0xd3, 0xcf, 0xd0, 0x9f, 0xd3, 0xcf, 0xd1, 0x9f, 0xd3, 0xcf, - 0xd1, 0x9f, 0xd3, 0xcf, 0xd1, 0x9f, 0xd3, 0xcf, 0xd2, 0x9f, 0xd3, 0xcf, - 0xd2, 0x9f, 0xd3, 0xcf, 0xd2, 0x9f, 0xd3, 0xcf, 0xd2, 0x9f, 0xd3, 0xce, - 0xd3, 0x9f, 0xd3, 0xcf, 0xd2, 0x9f, 0xd3, 0xce, 0xd3, 0x9f, 0xd4, 0xcf, - 0xd2, 0x9f, 0xd4, 0xce, 0xd3, 0x9f, 0xd4, 0xcf, 0xd2, 0x9f, 0xd4, 0xce, - 0xd3, 0x9f, 0xd5, 0xcf, 0xd2, 0x9f, 0xd5, 0xce, 0xd3, 0x9f, 0xd5, 0xcf, - 0xd2, 0x9f, 0xd6, 0xce, 0xd3, 0x9f, 0xd6, 0xcf, 0xd2, 0x9f, 0xd6, 0xce, - 0xd3, 0x9f, 0xd6, 0xcf, 0xd2, 0x9f, 0xd7, 0xce, 0xd3, 0x9f, 0xd7, 0xcf, - 0xd2, 0x9f, 0xd7, 0xce, 0xd3, 0x9f, 0xd7, 0xcd, 0xd3, 0x9f, 0xd8, 0xce, - 0xd3, 0x9f, 0xd8, 0xcd, 0xd3, 0x9f, 0xd8, 0xce, 0xd3, 0x9f, 0xd9, 0xcd, - 0xd3, 0x9f, 0xd9, 0xce, 0xd3, 0x9f, 0xd9, 0xc9, 0xda, 0x9f, 0xd9, 0xc9, - 0xd9, 0x9f, 0xda, 0xc9, 0xda, 0x9f, 0xda, 0xc9, 0xda, 0x9f, 0xda, 0xc9, - 0xdc, 0x9f, 0xda, 0xc9, 0xdd, 0x9f, 0xdb, 0xc9, 0xdc, 0x9f, 0xdb, 0xc9, - 0xdd, 0x9f, 0xdb, 0xc9, 0xdc, 0x9f, 0xdb, 0xc9, 0xdd, 0x9f, 0xdc, 0xc9, - 0xdc, 0x9f, 0xdc, 0xc9, 0xdd, 0x9f, 0xdc, 0xc9, 0xdc, 0x9f, 0xdd, 0xc9, - 0xdd, 0x9f, 0xdd, 0xc9, 0xdd, 0x9f, 0xdd, 0xca, 0xdf, 0x9f, 0xdd, 0xca, - 0xdf, 0x9f, 0xde, 0xca, 0xdf, 0x9f, 0xde, 0xca, 0xdf, 0x9f, 0xde, 0xca, - 0xdf, 0x9f, 0xde, 0xca, 0xdf, 0x9f, 0xdf, 0xca, 0xdf, 0x9f, 0xdf, 0xca, - 0xdf, 0x9f, 0xdf, 0xca, 0xdf, 0x9f, 0xdf, 0xca, 0xdf, 0x9f, 0xe0, 0xca, - 0xe0, 0x9f, 0xe0, 0xca, 0xe2, 0x9f, 0xe0, 0xca, 0xe2, 0x9f, 0xe1, 0xca, - 0xe2, 0x9f, 0xe1, 0xca, 0xe2, 0x9f, 0xe1, 0xca, 0xe2, 0x9f, 0xe1, 0xca, - 0xe2, 0x9f, 0xe2, 0xca, 0xe2, 0x9f, 0xe2, 0xca, 0xe2, 0x9f, 0xe2, 0xca, - 0xe2, 0x9f, 0xe2, 0xca, 0xe2, 0x9f, 0xe3, 0xca, 0xe3, 0x9f, 0xe3, 0xca, - 0xe3, 0x9f, 0xe3, 0xca, 0xe3, 0x9f, 0xe3, 0xcb, 0xe5, 0x9f, 0xe4, 0xcb, - 0xe5, 0x9f, 0xe4, 0xcb, 0xe5, 0x9f, 0xe4, 0xcb, 0xe5, 0x9f, 0xe4, 0xcb, - 0xe5, 0x9f, 0xe5, 0xcb, 0xe5, 0x9f, 0xe5, 0xcb, 0xe5, 0x9f, 0xe5, 0xcb, - 0xe5, 0x9f, 0xe5, 0xcb, 0xe5, 0x9f, 0xe6, 0xcb, 0xe6, 0x9f, 0xe6, 0xcb, - 0xe6, 0x9f, 0xe6, 0xcc, 0xe8, 0x9f, 0xe6, 0xcc, 0xe8, 0x9f, 0xe7, 0xcc, - 0xe8, 0x9f, 0xe7, 0xcc, 0xe8, 0x9f, 0xe7, 0xcc, 0xe8, 0x9f, 0xe7, 0xcc, - 0xe8, 0x9f, 0xe8, 0xcc, 0xe8, 0x9f, 0xe8, 0xcc, 0xe8, 0x9f, 0xe8, 0xd0, - 0xeb, 0x9f, 0xe8, 0xcf, 0xeb, 0x9f, 0xe9, 0xd0, 0xeb, 0x9f, 0xe9, 0xcf, - 0xeb, 0x9f, 0xe9, 0xd0, 0xeb, 0x9f, 0xe9, 0xcf, 0xeb, 0x9f, 0xea, 0xd0, - 0xeb, 0x9f, 0xea, 0xcf, 0xeb, 0x9f, 0xea, 0xcf, 0xeb, 0x9f, 0xea, 0xcf, - 0xeb, 0x9f, 0xeb, 0xcf, 0xeb, 0x9f, 0xea, 0xcf, 0xeb, 0x9f, 0xeb, 0xcf, - 0xeb, 0x9f, 0xea, 0xcf, 0xeb, 0x9f, 0xeb, 0xcf, 0xec, 0x9f, 0xeb, 0xcf, - 0xec, 0x9d, 0xeb, 0xcf, 0xec, 0x9f, 0xee, 0xcf, 0xec, 0x9f, 0xed, 0xcf, - 0xec, 0xa1, 0xee, 0xcf, 0xed, 0x9f, 0xee, 0xcf, 0xed, 0x9f, 0xee, 0xcf, - 0xed, 0x9f, 0xee, 0xcf, 0xed, 0x9f, 0xee, 0xcf, 0xed, 0x9f, 0xee, 0xcf, - 0xed, 0x9f, 0xee, 0xcf, 0xed, 0x9f, 0xee, 0xcf, 0xed, 0x9f, 0xef, 0xcf, - 0xed, 0x9f, 0xef, 0xcf, 0xed, 0x9f, 0xef, 0xcf, 0xed, 0x9f, 0xef, 0xcf, - 0xed, 0x9f, 0xf0, 0xcd, 0xee, 0x9f, 0xf0, 0xcf, 0xed, 0x9f, 0xf0, 0xcd, - 0xee, 0x9f, 0xf0, 0xcf, 0xed, 0x9f, 0xf1, 0xcd, 0xee, 0x9f, 0xf1, 0xcf, - 0xed, 0x9f, 0xf1, 0xcd, 0xee, 0x9f, 0xf1, 0xcf, 0xed, 0x9f, 0xf2, 0xcd, - 0xee, 0x9f, 0xf2, 0xcf, 0xed, 0x9f, 0xf2, 0xcd, 0xee, 0x9f, 0xf2, 0xcf, - 0xed, 0x9f, 0xf2, 0xcd, 0xee, 0x9f, 0xf3, 0xcf, 0xed, 0x9f, 0xf3, 0xcd, - 0xee, 0x9f, 0xf3, 0xcf, 0xed, 0x9f, 0xf3, 0xcd, 0xee, 0x9f, 0xf4, 0xcf, - 0xed, 0x9f, 0xf4, 0xcd, 0xee, 0x9f, 0xf4, 0xcf, 0xed, 0x9f, 0xf4, 0xc7, - 0xf5, 0x9f, 0xf5, 0xc7, 0xf5, 0x9f, 0xf5, 0xc7, 0xf5, 0x9f, 0xf5, 0xc7, - 0xf5, 0x9f, 0xf5, 0xc7, 0xf5, 0x9f, 0xf5, 0xc7, 0xf5, 0x9f, 0xf6, 0xc7, - 0xf6, 0x9f, 0xf6, 0xc7, 0xf6, 0x9f, 0xf6, 0xc7, 0xf6, 0x9f, 0xf6, 0xc7, - 0xf6, 0x9f, 0xf7, 0xc7, 0xf7, 0x9f, 0xf7, 0xc7, 0xf7, 0x9f, 0xf7, 0xc7, - 0xf7, 0x9f, 0xf7, 0xc7, 0xf7, 0x9f, 0xf8, 0xc7, 0xf7, 0x9f, 0xf8, 0xc7, - 0xf7, 0x9f, 0xf8, 0xc7, 0xf7, 0x9f, 0xf8, 0xc7, 0xf7, 0x9f, 0xf8, 0xc7, - 0xf7, 0x9f, 0xf9, 0xc7, 0xf7, 0x9f, 0xf9, 0xc7, 0xf7, 0x9f, 0xf9, 0xc7, - 0xf7, 0x9f, 0xf9, 0xc7, 0xf7, 0x9f, 0xfa, 0xc7, 0xf7, 0x9f, 0xfa, 0xc7, - 0xf7, 0x9f, 0xfa, 0xc7, 0xf7, 0x9f, 0xfa, 0xc7, 0xf7, 0x9f, 0xfa, 0xc7, - 0xf7, 0x9f, 0xfb, 0xc7, 0xf7, 0x9f, 0xfb, 0xc7, 0xf7, 0x9f, 0xfb, 0xc7, - 0xf7, 0x9f, 0xfb, 0xc7, 0xf7, 0x9f, 0xfc, 0xc7, 0xf7, 0x9f, 0xfc, 0xc7, - 0xf7, 0x9f, 0xfc, 0xc7, 0xf7, 0x9f, 0xfc, 0xc7, 0xf7, 0x9f, 0xfc, 0xc7, - 0xf7, 0x9f, 0xfd, 0xc7, 0xf7, 0x9f, 0xfd, 0xc7, 0xf7, 0x9f, 0xfd, 0xc7, - 0xf7, 0x9f, 0xfd, 0xc7, 0xf7, 0x9f, 0xfe, 0xc7, 0xf7, 0x9f, 0xfe, 0xc6, - 0xf8, 0x9f, 0xfe, 0xc7, 0xf7, 0x9f, 0xfe, 0xc6, 0xf8, 0x9f, 0xfe, 0xc7, - 0xf7, 0x9f, 0xff, 0xc6, 0xf8, 0x9f, 0xff, 0xc7, 0xf7, 0x9f, 0x03, 0xd4, - 0x8c, 0xa0, 0x0a, 0xd6, 0x8c, 0xa0, 0x0f, 0xd4, 0x8c, 0xa0, 0x14, 0xd6, - 0x8c, 0xa0, 0x17, 0xd4, 0x8c, 0xa0, 0x1b, 0xd6, 0x8c, 0xa0, 0x1e, 0xd4, - 0x8c, 0xa0, 0x20, 0xd6, 0x8c, 0xa0, 0x23, 0xd4, 0x8c, 0xa0, 0x25, 0xd6, - 0x8c, 0xa0, 0x27, 0xd4, 0x8c, 0xa0, 0x29, 0xd6, 0x8c, 0xa0, 0x2b, 0xd4, - 0x8c, 0xa0, 0x2d, 0xd6, 0x8c, 0xa0, 0x2f, 0xd4, 0x8c, 0xa0, 0x31, 0xd6, - 0x8c, 0xa0, 0x32, 0xd4, 0x8c, 0xa0, 0x34, 0xd6, 0x8c, 0xa0, 0x35, 0xd4, - 0x8c, 0xa0, 0x37, 0xd6, 0x8c, 0xa0, 0x38, 0xd4, 0x8c, 0xa0, 0x3a, 0xd6, - 0x8c, 0xa0, 0x3b, 0xd4, 0x8c, 0xa0, 0x3c, 0xd6, 0x8c, 0xa0, 0x3e, 0xd4, - 0x8c, 0xa0, 0x3f, 0xd6, 0x8c, 0xa0, 0x40, 0xd4, 0x8c, 0xa0, 0x42, 0xd3, - 0x8d, 0xa0, 0x43, 0xd4, 0x8c, 0xa0, 0x44, 0xd3, 0x8d, 0xa0, 0x45, 0xd4, - 0x8c, 0xa0, 0x46, 0xd3, 0x8d, 0xa0, 0x47, 0xd4, 0x8c, 0xa0, 0x48, 0xd3, - 0x8d, 0xa0, 0x49, 0xd4, 0x8c, 0xa0, 0x4a, 0xd3, 0x8d, 0xa0, 0x4b, 0xd4, - 0x8c, 0xa0, 0x4c, 0xd3, 0x8d, 0xa0, 0x4d, 0xd4, 0x8c, 0xa0, 0x4e, 0xd3, - 0x8d, 0xa0, 0x4f, 0xd4, 0x8c, 0xa0, 0x50, 0xd3, 0x8d, 0xa0, 0x51, 0xd4, - 0x8c, 0xa0, 0x52, 0xd3, 0x8d, 0xa0, 0x53, 0xd4, 0x8c, 0xa0, 0x54, 0xd3, - 0x8d, 0xa0, 0x55, 0xd4, 0x8c, 0xa0, 0x56, 0xd3, 0x8d, 0xa0, 0x57, 0xd4, - 0x8c, 0xa0, 0x58, 0xd3, 0x8d, 0xa0, 0x58, 0xd4, 0x8c, 0xa0, 0x59, 0xd3, - 0x8d, 0xa0, 0x5a, 0xd4, 0x8c, 0xa0, 0x5b, 0xd3, 0x8d, 0xa0, 0x5c, 0xd4, - 0x8c, 0xa0, 0x5d, 0xd3, 0x8d, 0xa0, 0x5d, 0xd4, 0x8c, 0xa0, 0x5e, 0xd3, - 0x8d, 0xa0, 0x5f, 0xd4, 0x8c, 0xa0, 0x60, 0xd3, 0x8d, 0xa0, 0x60, 0xd0, - 0x8d, 0xa0, 0x61, 0xd3, 0x8d, 0xa0, 0x62, 0xd0, 0x8d, 0xa0, 0x63, 0xd3, - 0x8d, 0xa0, 0x63, 0xd0, 0x8d, 0xa0, 0x64, 0xd3, 0x8d, 0xa0, 0x65, 0xd0, - 0x8d, 0xa0, 0x66, 0xd3, 0x8d, 0xa0, 0x66, 0xd0, 0x8d, 0xa0, 0x67, 0xd3, - 0x8d, 0xa0, 0x68, 0xd0, 0x8d, 0xa0, 0x68, 0xd3, 0x8d, 0xa0, 0x69, 0xd0, - 0x8d, 0xa0, 0x6a, 0xd3, 0x8d, 0xa0, 0x6a, 0xd0, 0x8d, 0xa0, 0x6b, 0xd3, - 0x8d, 0xa0, 0x6c, 0xd0, 0x8d, 0xa0, 0x6c, 0xd3, 0x8d, 0xa0, 0x6d, 0xd0, - 0x8d, 0xa0, 0x6e, 0xd3, 0x8d, 0xa0, 0x6e, 0xd0, 0x8d, 0xa0, 0x6f, 0xd3, - 0x8d, 0xa0, 0x70, 0xd0, 0x8d, 0xa0, 0x70, 0xd3, 0x8d, 0xa0, 0x71, 0xd0, - 0x8d, 0xa0, 0x72, 0xd3, 0x8d, 0xa0, 0x72, 0xd0, 0x8d, 0xa0, 0x73, 0xd3, - 0x8d, 0xa0, 0x73, 0xd0, 0x8d, 0xa0, 0x74, 0xd3, 0x8d, 0xa0, 0x75, 0xd0, - 0x8d, 0xa0, 0x75, 0xd3, 0x8d, 0xa0, 0x76, 0xd0, 0x8d, 0xa0, 0x76, 0xd3, - 0x8d, 0xa0, 0x77, 0xd0, 0x8d, 0xa0, 0x78, 0xd3, 0x8d, 0xa0, 0x78, 0xd0, - 0x8d, 0xa0, 0x79, 0xd3, 0x8d, 0xa0, 0x79, 0xd0, 0x8d, 0xa0, 0x7a, 0xd3, - 0x8d, 0xa0, 0x7a, 0xd0, 0x8d, 0xa0, 0x7b, 0xcf, 0x8e, 0xa0, 0x7c, 0xd0, - 0x8d, 0xa0, 0x7c, 0xcf, 0x8e, 0xa0, 0x7d, 0xd0, 0x8d, 0xa0, 0x7d, 0xcf, - 0x8e, 0xa0, 0x7e, 0xd0, 0x8d, 0xa0, 0x7e, 0xcf, 0x8e, 0xa0, 0x7f, 0xd0, - 0x8d, 0xa0, 0x7f, 0xcf, 0x8e, 0xa0, 0x80, 0xd0, 0x8d, 0xa0, 0x81, 0xcf, - 0x8e, 0xa0, 0x81, 0xd0, 0x8d, 0xa0, 0x82, 0xcf, 0x8e, 0xa0, 0x82, 0xd0, - 0x8d, 0xa0, 0x83, 0xcf, 0x8e, 0xa0, 0x83, 0xd0, 0x8d, 0xa0, 0x84, 0xcf, - 0x8e, 0xa0, 0x84, 0xd0, 0x8d, 0xa0, 0x85, 0xcf, 0x8e, 0xa0, 0x85, 0xd0, - 0x8d, 0xa0, 0x86, 0xcf, 0x8e, 0xa0, 0x86, 0xd0, 0x8d, 0xa0, 0x87, 0xcf, - 0x8e, 0xa0, 0x87, 0xd0, 0x8d, 0xa0, 0x88, 0xcf, 0x8e, 0xa0, 0x88, 0xd0, - 0x8d, 0xa0, 0x89, 0xcf, 0x8e, 0xa0, 0x89, 0xd0, 0x8d, 0xa0, 0x8a, 0xcf, - 0x8e, 0xa0, 0x8a, 0xd0, 0x8d, 0xa0, 0x8b, 0xcf, 0x8e, 0xa0, 0x8b, 0xd0, - 0x8d, 0xa0, 0x8c, 0xcf, 0x8e, 0xa0, 0x8c, 0xcf, 0x8e, 0xa0, 0x8d, 0xcf, - 0x8e, 0xa0, 0x8d, 0xcf, 0x8e, 0xa0, 0x8d, 0xcf, 0x8e, 0xa0, 0x8d, 0xcf, - 0x8e, 0xa0, 0x8d, 0xcf, 0x8e, 0xa0, 0x8d, 0xcf, 0x8f, 0xa0, 0x8e, 0xcf, - 0x8f, 0x9e, 0x8d, 0xcf, 0x90, 0xa0, 0x8e, 0xcf, 0x90, 0x9e, 0x8d, 0xcf, - 0x91, 0xa0, 0x8e, 0xcf, 0x91, 0x9e, 0x8d, 0xcf, 0x92, 0xa0, 0x8e, 0xcf, - 0x92, 0x9e, 0x8d, 0xcf, 0x93, 0xa0, 0x8e, 0xcf, 0x93, 0x9e, 0x8d, 0xcf, - 0x94, 0xa0, 0x8e, 0xcf, 0x94, 0x9e, 0x8d, 0xcf, 0x94, 0xa0, 0x8e, 0xcf, - 0x95, 0x9e, 0x8d, 0xcf, 0x95, 0xa0, 0x8e, 0xcf, 0x96, 0x9e, 0x8d, 0xcf, - 0x96, 0xa0, 0x8e, 0xcf, 0x97, 0x9e, 0x9a, 0xcf, 0x97, 0x96, 0x9a, 0xcf, - 0x98, 0x96, 0x9a, 0xcf, 0x98, 0x96, 0x9a, 0xcf, 0x98, 0x96, 0x9a, 0xcf, - 0x99, 0x96, 0x9a, 0xcf, 0x99, 0x96, 0x9a, 0xcf, 0x9a, 0x96, 0x9a, 0xcf, - 0x9a, 0x96, 0x9a, 0xcf, 0x9a, 0x96, 0x9b, 0xcf, 0x9b, 0x96, 0x9f, 0xcf, - 0x9b, 0x97, 0x9f, 0xcf, 0x9c, 0x97, 0x9f, 0xcf, 0x9c, 0x97, 0x9f, 0xcf, - 0x9d, 0x97, 0x9f, 0xcf, 0x9d, 0x97, 0x9f, 0xcf, 0x9d, 0x97, 0x9f, 0xcf, - 0x9e, 0x97, 0x9f, 0xcf, 0x9e, 0x97, 0x9f, 0xcf, 0x9f, 0x97, 0x9f, 0xcf, - 0x9f, 0x97, 0x9f, 0xcf, 0x9f, 0x97, 0xa3, 0xcf, 0xa0, 0x98, 0xa0, 0xcf, - 0xa0, 0x97, 0xa3, 0xcf, 0xa1, 0x98, 0xa1, 0xcf, 0xa1, 0x97, 0xa3, 0xcf, - 0xa1, 0x98, 0xa2, 0xcf, 0xa2, 0x97, 0xa3, 0xcf, 0xa2, 0x98, 0xa3, 0xcf, - 0xa3, 0x97, 0xa3, 0xcf, 0xa3, 0x98, 0xa3, 0xcf, 0xa3, 0x97, 0xa3, 0xcf, - 0xa4, 0x98, 0xa3, 0xcf, 0xa4, 0x97, 0xa3, 0xcf, 0xa5, 0x98, 0xa3, 0xcf, - 0xa5, 0x97, 0xa3, 0xcf, 0xa5, 0x98, 0xa3, 0xcf, 0xa6, 0x97, 0xa3, 0xcf, - 0xa6, 0x98, 0xa3, 0xcf, 0xa6, 0x97, 0xa3, 0xcf, 0xa7, 0x98, 0xa3, 0xcf, - 0xa7, 0x97, 0xa3, 0xcf, 0xa8, 0x98, 0xa3, 0xcf, 0xa8, 0x97, 0xa3, 0xcf, - 0xa8, 0x98, 0xa3, 0xcf, 0xa9, 0x97, 0xa3, 0xcf, 0xa9, 0x98, 0xa3, 0xcf, - 0xaa, 0x97, 0xa3, 0xcf, 0xaa, 0x98, 0xa3, 0xcf, 0xaa, 0x97, 0xa3, 0xcf, - 0xab, 0x98, 0xa3, 0xcf, 0xab, 0x97, 0xa3, 0xcf, 0xab, 0x98, 0xa3, 0xcf, - 0xac, 0x97, 0xa3, 0xcf, 0xac, 0x98, 0xa3, 0xcf, 0xac, 0x97, 0xa3, 0xcf, - 0xad, 0x98, 0xa3, 0xcf, 0xad, 0x97, 0xa3, 0xcf, 0xae, 0x98, 0xa3, 0xcf, - 0xae, 0x97, 0xa3, 0xcf, 0xae, 0x98, 0xa3, 0xcf, 0xaf, 0x97, 0xa3, 0xcf, - 0xaf, 0x98, 0xa3, 0xcf, 0xaf, 0x97, 0xa3, 0xcf, 0xb0, 0x98, 0xa3, 0xcf, - 0xb0, 0x97, 0xa3, 0xcf, 0xb0, 0x98, 0xa3, 0xcf, 0xb1, 0x97, 0xa3, 0xcf, - 0xb1, 0x98, 0xa3, 0xcf, 0xb2, 0x97, 0xa3, 0xcf, 0xb2, 0x98, 0xa3, 0xcf, - 0xb2, 0x97, 0xa3, 0xcf, 0xb3, 0x98, 0xa3, 0xcf, 0xb3, 0x97, 0xa3, 0xcf, - 0xb3, 0x98, 0xa3, 0xcf, 0xb4, 0x97, 0xa3, 0xcf, 0xb4, 0x98, 0xa3, 0xcf, - 0xb4, 0x97, 0xa3, 0xcf, 0xb5, 0x98, 0xa3, 0xcf, 0xb5, 0x97, 0xa3, 0xcf, - 0xb5, 0x98, 0xa3, 0xcf, 0xb6, 0x97, 0xa3, 0xcf, 0xb6, 0x98, 0xa3, 0xcf, - 0xb6, 0x97, 0xa3, 0xcf, 0xb7, 0x98, 0xa3, 0xcf, 0xb7, 0x97, 0xa3, 0xcf, - 0xb7, 0x98, 0xa3, 0xcf, 0xb8, 0x97, 0xa4, 0xcf, 0xb8, 0x95, 0xa3, 0xcf, - 0xb8, 0x97, 0xa4, 0xcf, 0xb9, 0x95, 0xa3, 0xcf, 0xb9, 0x97, 0xa4, 0xcf, - 0xb9, 0x95, 0xa3, 0xcf, 0xba, 0x97, 0xa4, 0xcf, 0xba, 0x95, 0xa3, 0xcf, - 0xba, 0x97, 0xa4, 0xcf, 0xbb, 0x95, 0xa3, 0xcf, 0xbb, 0x97, 0xa4, 0xcf, - 0xbb, 0x95, 0xa3, 0xcf, 0xbc, 0x97, 0xa4, 0xcf, 0xbc, 0x95, 0xa3, 0xcf, - 0xbc, 0x97, 0xd2, 0xcf, 0xbd, 0xa8, 0xd2, 0xcf, 0xbd, 0xa5, 0xd2, 0xcf, - 0xbd, 0xa8, 0xd2, 0xcf, 0xbe, 0xa5, 0xd2, 0xcf, 0xbe, 0xa8, 0xd2, 0xcf, - 0xbe, 0xa5, 0xd2, 0xcf, 0xbf, 0xa8, 0xd2, 0xcf, 0xbf, 0xa5, 0xd2, 0xcf, - 0xbf, 0xa8, 0xd2, 0xcf, 0xc0, 0xa5, 0xd2, 0xcf, 0xc0, 0xa8, 0xd2, 0xcf, - 0xc0, 0xa5, 0xd2, 0xcf, 0xc1, 0xa2, 0xd2, 0xcf, 0xc1, 0xa5, 0xd2, 0xcf, - 0xc1, 0xa2, 0xd2, 0xcf, 0xc1, 0xa5, 0xd2, 0xcf, 0xc2, 0xa2, 0xd2, 0xcf, - 0xc2, 0xa5, 0xd2, 0xcf, 0xc2, 0xa2, 0xd2, 0xcf, 0xc3, 0xa5, 0xd2, 0xcf, - 0xc3, 0xa2, 0xd2, 0xcf, 0xc3, 0xa5, 0xd2, 0xcf, 0xc4, 0xa2, 0xd2, 0xcf, - 0xc4, 0xa5, 0xd2, 0xcf, 0xc4, 0xa2, 0xd2, 0xcf, 0xc5, 0xa5, 0xd2, 0xcf, - 0xc5, 0xa2, 0xd2, 0xcf, 0xc5, 0xa5, 0xd2, 0xcf, 0xc6, 0xa2, 0xd2, 0xcf, - 0xc6, 0xa5, 0xd2, 0xcf, 0xc6, 0xa2, 0xd2, 0xcf, 0xc6, 0xa5, 0xd2, 0xcf, - 0xc7, 0xa2, 0xd2, 0xcf, 0xc7, 0xa5, 0xd2, 0xcf, 0xc7, 0xa2, 0xd2, 0xcf, - 0xc8, 0xa5, 0xd2, 0xcf, 0xc8, 0xa2, 0xd2, 0xcf, 0xc8, 0xa5, 0xd2, 0xcf, - 0xc9, 0xa2, 0xd2, 0xcf, 0xc9, 0xa5, 0xd2, 0xcf, 0xc9, 0xa2, 0xd2, 0xcf, - 0xc9, 0xa5, 0xd2, 0xcf, 0xca, 0xa2, 0xd2, 0xcf, 0xca, 0xa5, 0xd2, 0xcf, - 0xca, 0xa2, 0xd2, 0xcf, 0xcb, 0xa5, 0xd2, 0xcf, 0xcb, 0xa2, 0xd2, 0xcf, - 0xcb, 0xa5, 0xd2, 0xcf, 0xcc, 0xa2, 0xd3, 0xcf, 0xcc, 0xa0, 0xd2, 0xcf, - 0xcc, 0xa2, 0xd3, 0xcf, 0xcc, 0xa0, 0xd2, 0xcf, 0xcd, 0xa2, 0xd3, 0xcf, - 0xcd, 0xa0, 0xd2, 0xcf, 0xcd, 0xa2, 0xd3, 0xcf, 0xce, 0xa0, 0xd2, 0xcf, - 0xce, 0xa2, 0xd3, 0xcf, 0xce, 0xa0, 0xd2, 0xcf, 0xce, 0xa2, 0xd3, 0xcf, - 0xcf, 0xa0, 0xd2, 0xcf, 0xcf, 0xa2, 0xd3, 0xcf, 0xcf, 0xa0, 0xd2, 0xcf, - 0xd0, 0xa2, 0xd3, 0xcf, 0xd0, 0xa0, 0xd2, 0xcf, 0xd0, 0xa2, 0xd3, 0xcf, - 0xd0, 0xa0, 0xd2, 0xcf, 0xd1, 0xa2, 0xd3, 0xcf, 0xd1, 0xa0, 0xd2, 0xcf, - 0xd1, 0xa2, 0xd3, 0xcf, 0xd2, 0xa0, 0xd3, 0xcf, 0xd2, 0xa0, 0xd3, 0xcf, - 0xd2, 0xa0, 0xd3, 0xcf, 0xd2, 0xa0, 0xd3, 0xcf, 0xd3, 0xa0, 0xd3, 0xcf, - 0xd2, 0xa0, 0xd3, 0xcf, 0xd3, 0xa0, 0xd4, 0xcf, 0xd2, 0xa0, 0xd4, 0xcf, - 0xd3, 0xa0, 0xd4, 0xcf, 0xd2, 0xa0, 0xd4, 0xcf, 0xd3, 0xa0, 0xd5, 0xcf, - 0xd2, 0xa0, 0xd5, 0xcf, 0xd3, 0xa0, 0xd5, 0xcf, 0xd2, 0xa0, 0xd6, 0xcf, - 0xd3, 0xa0, 0xd6, 0xcf, 0xd2, 0xa0, 0xd6, 0xcf, 0xd3, 0xa0, 0xd6, 0xcf, - 0xd2, 0xa0, 0xd7, 0xcf, 0xd3, 0xa0, 0xd7, 0xcf, 0xd2, 0xa0, 0xd7, 0xcf, - 0xd3, 0xa0, 0xd7, 0xcd, 0xd3, 0xa0, 0xd8, 0xcf, 0xd3, 0xa0, 0xd8, 0xcd, - 0xd3, 0xa0, 0xd8, 0xcf, 0xd3, 0xa0, 0xd9, 0xcd, 0xd3, 0xa0, 0xd9, 0xcf, - 0xd3, 0xa0, 0xd9, 0xc9, 0xdb, 0xa0, 0xd9, 0xc9, 0xdb, 0xa0, 0xda, 0xc9, - 0xdb, 0xa0, 0xda, 0xc9, 0xdb, 0xa0, 0xda, 0xc9, 0xdb, 0xa0, 0xda, 0xc9, - 0xdb, 0xa0, 0xdb, 0xc9, 0xdb, 0xa0, 0xdb, 0xc9, 0xdb, 0xa0, 0xdb, 0xc9, - 0xdb, 0xa0, 0xdb, 0xc9, 0xdb, 0xa0, 0xdc, 0xc9, 0xde, 0xa0, 0xdc, 0xc9, - 0xde, 0xa0, 0xdc, 0xc9, 0xde, 0xa0, 0xdd, 0xc9, 0xde, 0xa0, 0xdd, 0xc9, - 0xde, 0xa0, 0xdd, 0xc9, 0xde, 0xa0, 0xdd, 0xc9, 0xde, 0xa0, 0xde, 0xc9, - 0xde, 0xa0, 0xde, 0xc9, 0xde, 0xa0, 0xde, 0xc9, 0xde, 0xa0, 0xde, 0xc9, - 0xde, 0xa0, 0xdf, 0xca, 0xe1, 0xa0, 0xdf, 0xca, 0xe1, 0xa0, 0xdf, 0xca, - 0xe1, 0xa0, 0xdf, 0xca, 0xe1, 0xa0, 0xe0, 0xca, 0xe1, 0xa0, 0xe0, 0xca, - 0xe1, 0xa0, 0xe0, 0xca, 0xe1, 0xa0, 0xe1, 0xca, 0xe1, 0xa0, 0xe1, 0xca, - 0xe1, 0xa0, 0xe1, 0xca, 0xe1, 0xa0, 0xe1, 0xca, 0xe1, 0xa0, 0xe2, 0xcb, - 0xe4, 0xa0, 0xe2, 0xcb, 0xe4, 0xa0, 0xe2, 0xcb, 0xe4, 0xa0, 0xe2, 0xcb, - 0xe4, 0xa0, 0xe3, 0xcb, 0xe4, 0xa0, 0xe3, 0xcb, 0xe4, 0xa0, 0xe3, 0xcb, - 0xe4, 0xa0, 0xe3, 0xcb, 0xe4, 0xa0, 0xe4, 0xcb, 0xe4, 0xa0, 0xe4, 0xcb, - 0xe4, 0xa0, 0xe4, 0xcb, 0xe4, 0xa0, 0xe4, 0xcb, 0xe4, 0xa0, 0xe5, 0xcb, - 0xe5, 0xa0, 0xe5, 0xcb, 0xe6, 0xa0, 0xe5, 0xcb, 0xe7, 0xa0, 0xe5, 0xcb, - 0xe6, 0xa0, 0xe6, 0xcb, 0xe7, 0xa0, 0xe6, 0xcb, 0xe6, 0xa0, 0xe6, 0xcb, - 0xe7, 0xa0, 0xe6, 0xcb, 0xe6, 0xa0, 0xe7, 0xcb, 0xe7, 0xa0, 0xe7, 0xcb, - 0xe7, 0xa0, 0xe7, 0xcb, 0xe7, 0xa0, 0xe7, 0xcc, 0xe9, 0xa0, 0xe8, 0xd0, - 0xeb, 0xa0, 0xe8, 0xcf, 0xeb, 0xa0, 0xe8, 0xd0, 0xeb, 0xa0, 0xe8, 0xcf, - 0xeb, 0xa0, 0xe9, 0xd0, 0xeb, 0xa0, 0xe9, 0xcf, 0xeb, 0xa0, 0xe9, 0xd0, - 0xeb, 0xa0, 0xe9, 0xcf, 0xeb, 0xa0, 0xea, 0xd0, 0xeb, 0xa0, 0xea, 0xcf, - 0xeb, 0xa0, 0xea, 0xd0, 0xeb, 0xa0, 0xea, 0xcf, 0xeb, 0xa0, 0xeb, 0xcf, - 0xeb, 0xa0, 0xea, 0xcf, 0xeb, 0xa0, 0xeb, 0xcf, 0xeb, 0xa0, 0xea, 0xcf, - 0xeb, 0xa0, 0xeb, 0xcf, 0xec, 0xa0, 0xeb, 0xcf, 0xec, 0x9e, 0xeb, 0xcf, - 0xec, 0xa0, 0xee, 0xcf, 0xec, 0xa0, 0xed, 0xcf, 0xec, 0xa1, 0xee, 0xcf, - 0xed, 0xa0, 0xed, 0xcf, 0xed, 0xa1, 0xee, 0xcf, 0xed, 0xa0, 0xee, 0xcf, - 0xed, 0xa0, 0xee, 0xcf, 0xed, 0xa0, 0xee, 0xcf, 0xed, 0xa0, 0xee, 0xcf, - 0xed, 0xa0, 0xee, 0xcf, 0xed, 0xa0, 0xef, 0xcf, 0xed, 0xa0, 0xef, 0xcf, - 0xed, 0xa0, 0xef, 0xcf, 0xed, 0xa0, 0xef, 0xcf, 0xed, 0xa0, 0xf0, 0xce, - 0xee, 0xa0, 0xf0, 0xcf, 0xed, 0xa0, 0xf0, 0xce, 0xee, 0xa0, 0xf0, 0xcf, - 0xed, 0xa0, 0xf1, 0xce, 0xee, 0xa0, 0xf1, 0xcf, 0xed, 0xa0, 0xf1, 0xce, - 0xee, 0xa0, 0xf1, 0xcf, 0xed, 0xa0, 0xf2, 0xce, 0xee, 0xa0, 0xf2, 0xcf, - 0xed, 0xa0, 0xf2, 0xce, 0xee, 0xa0, 0xf2, 0xcf, 0xed, 0xa0, 0xf2, 0xce, - 0xee, 0xa0, 0xf3, 0xcf, 0xed, 0xa0, 0xf3, 0xce, 0xee, 0xa0, 0xf3, 0xcf, - 0xed, 0xa0, 0xf3, 0xce, 0xee, 0xa0, 0xf4, 0xcf, 0xed, 0xa0, 0xf4, 0xce, - 0xee, 0xa0, 0xf4, 0xcf, 0xed, 0xa0, 0xf4, 0xce, 0xee, 0xa0, 0xf5, 0xc7, - 0xf6, 0xa0, 0xf5, 0xc7, 0xf6, 0xa0, 0xf5, 0xc7, 0xf6, 0xa0, 0xf5, 0xc7, - 0xf6, 0xa0, 0xf5, 0xc7, 0xf6, 0xa0, 0xf6, 0xc7, 0xf6, 0xa0, 0xf6, 0xc7, - 0xf6, 0xa0, 0xf6, 0xc7, 0xf6, 0xa0, 0xf6, 0xc7, 0xf6, 0xa0, 0xf7, 0xc7, - 0xf7, 0xa0, 0xf7, 0xc7, 0xf7, 0xa0, 0xf7, 0xc7, 0xf7, 0xa0, 0xf7, 0xc7, - 0xf7, 0xa0, 0xf8, 0xc7, 0xf7, 0xa0, 0xf8, 0xc7, 0xf7, 0xa0, 0xf8, 0xc7, - 0xf7, 0xa0, 0xf8, 0xc7, 0xf7, 0xa0, 0xf8, 0xc7, 0xf7, 0xa0, 0xf9, 0xc7, - 0xf7, 0xa0, 0xf9, 0xc7, 0xf7, 0xa0, 0xf9, 0xc7, 0xf7, 0xa0, 0xf9, 0xc7, - 0xf7, 0xa0, 0xfa, 0xc7, 0xf7, 0xa0, 0xfa, 0xc7, 0xf7, 0xa0, 0xfa, 0xc7, - 0xf7, 0xa0, 0xfa, 0xc7, 0xf7, 0xa0, 0xfa, 0xc7, 0xf7, 0xa0, 0xfb, 0xc7, - 0xf7, 0xa0, 0xfb, 0xc7, 0xf7, 0xa0, 0xfb, 0xc7, 0xf7, 0xa0, 0xfb, 0xc7, - 0xf7, 0xa0, 0xfc, 0xc7, 0xf7, 0xa0, 0xfc, 0xc7, 0xf7, 0xa0, 0xfc, 0xc7, - 0xf7, 0xa0, 0xfc, 0xc7, 0xf7, 0xa0, 0xfc, 0xc7, 0xf7, 0xa0, 0xfd, 0xc7, - 0xf7, 0xa0, 0xfd, 0xc7, 0xf7, 0xa0, 0xfd, 0xc7, 0xf7, 0xa0, 0xfd, 0xc7, - 0xf7, 0xa0, 0xfe, 0xc7, 0xf7, 0xa0, 0xfe, 0xc7, 0xf7, 0xa0, 0xfe, 0xc7, - 0xf7, 0xa0, 0xfe, 0xc7, 0xf7, 0xa0, 0xfe, 0xc7, 0xf7, 0xa0, 0xff, 0xc7, - 0xf7, 0xa0, 0xff, 0xc7, 0xf7, 0xa0, 0x03, 0xd4, 0x8c, 0xa0, 0x0a, 0xd6, - 0x8c, 0xa0, 0x0f, 0xd4, 0x8c, 0xa0, 0x14, 0xd6, 0x8c, 0xa0, 0x17, 0xd4, - 0x8c, 0xa0, 0x1b, 0xd6, 0x8c, 0xa0, 0x1e, 0xd4, 0x8c, 0xa0, 0x20, 0xd6, - 0x8c, 0xa0, 0x23, 0xd4, 0x8c, 0xa0, 0x25, 0xd6, 0x8c, 0xa0, 0x27, 0xd4, - 0x8c, 0xa0, 0x29, 0xd6, 0x8c, 0xa0, 0x2b, 0xd4, 0x8c, 0xa0, 0x2d, 0xd6, - 0x8c, 0xa0, 0x2f, 0xd4, 0x8c, 0xa0, 0x31, 0xd2, 0x8d, 0xa0, 0x32, 0xd4, - 0x8c, 0xa0, 0x34, 0xd2, 0x8d, 0xa0, 0x35, 0xd4, 0x8c, 0xa0, 0x37, 0xd2, - 0x8d, 0xa0, 0x38, 0xd4, 0x8c, 0xa0, 0x3a, 0xd2, 0x8d, 0xa0, 0x3b, 0xd4, - 0x8c, 0xa0, 0x3c, 0xd2, 0x8d, 0xa0, 0x3e, 0xd4, 0x8c, 0xa0, 0x3f, 0xd2, - 0x8d, 0xa0, 0x40, 0xd4, 0x8c, 0xa0, 0x42, 0xd2, 0x8d, 0xa0, 0x43, 0xd4, - 0x8c, 0xa0, 0x44, 0xd2, 0x8d, 0xa0, 0x45, 0xd4, 0x8c, 0xa0, 0x46, 0xd2, - 0x8d, 0xa0, 0x47, 0xd4, 0x8c, 0xa0, 0x48, 0xd2, 0x8d, 0xa0, 0x49, 0xd4, - 0x8c, 0xa0, 0x4a, 0xd2, 0x8d, 0xa0, 0x4b, 0xd4, 0x8c, 0xa0, 0x4c, 0xd2, - 0x8d, 0xa0, 0x4d, 0xd4, 0x8c, 0xa0, 0x4e, 0xd2, 0x8d, 0xa0, 0x4f, 0xd4, - 0x8c, 0xa0, 0x50, 0xd2, 0x8d, 0xa0, 0x51, 0xd4, 0x8c, 0xa0, 0x52, 0xd2, - 0x8d, 0xa0, 0x53, 0xd4, 0x8c, 0xa0, 0x54, 0xd2, 0x8d, 0xa0, 0x55, 0xd4, - 0x8c, 0xa0, 0x56, 0xd2, 0x8d, 0xa0, 0x57, 0xd4, 0x8c, 0xa0, 0x58, 0xd2, - 0x8d, 0xa0, 0x58, 0xd4, 0x8c, 0xa0, 0x59, 0xd2, 0x8d, 0xa0, 0x5a, 0xd4, - 0x8c, 0xa0, 0x5b, 0xd2, 0x8d, 0xa0, 0x5c, 0xd4, 0x8c, 0xa0, 0x5d, 0xd2, - 0x8d, 0xa0, 0x5d, 0xd4, 0x8c, 0xa0, 0x5e, 0xd2, 0x8d, 0xa0, 0x5f, 0xd4, - 0x8c, 0xa0, 0x60, 0xd2, 0x8d, 0xa0, 0x60, 0xd4, 0x8c, 0xa0, 0x61, 0xd2, - 0x8d, 0xa0, 0x62, 0xd4, 0x8c, 0xa0, 0x63, 0xd2, 0x8d, 0xa0, 0x63, 0xd4, - 0x8c, 0xa0, 0x64, 0xd2, 0x8d, 0xa0, 0x65, 0xd4, 0x8c, 0xa0, 0x66, 0xd2, - 0x8d, 0xa0, 0x66, 0xd4, 0x8c, 0xa0, 0x67, 0xd2, 0x8d, 0xa0, 0x68, 0xd4, - 0x8c, 0xa0, 0x68, 0xd2, 0x8d, 0xa0, 0x69, 0xd4, 0x8c, 0xa0, 0x6a, 0xd2, - 0x8d, 0xa0, 0x6a, 0xd4, 0x8c, 0xa0, 0x6b, 0xd2, 0x8d, 0xa0, 0x6c, 0xd1, - 0x8d, 0xa0, 0x6c, 0xd2, 0x8d, 0xa0, 0x6d, 0xd1, 0x8d, 0xa0, 0x6e, 0xd2, - 0x8d, 0xa0, 0x6e, 0xd1, 0x8d, 0xa0, 0x6f, 0xd2, 0x8d, 0xa0, 0x70, 0xd1, - 0x8d, 0xa0, 0x70, 0xd2, 0x8d, 0xa0, 0x71, 0xd1, 0x8d, 0xa0, 0x72, 0xd2, - 0x8d, 0xa0, 0x72, 0xd1, 0x8d, 0xa0, 0x73, 0xd2, 0x8d, 0xa0, 0x73, 0xd1, - 0x8d, 0xa0, 0x74, 0xd2, 0x8d, 0xa0, 0x75, 0xd1, 0x8d, 0xa0, 0x75, 0xd2, - 0x8d, 0xa0, 0x76, 0xd1, 0x8d, 0xa0, 0x76, 0xd2, 0x8d, 0xa0, 0x77, 0xd1, - 0x8d, 0xa0, 0x78, 0xd2, 0x8d, 0xa0, 0x78, 0xd1, 0x8d, 0xa0, 0x79, 0xd2, - 0x8d, 0xa0, 0x79, 0xd1, 0x8d, 0xa0, 0x7a, 0xd2, 0x8d, 0xa0, 0x7a, 0xd1, - 0x8d, 0xa0, 0x7b, 0xd2, 0x8d, 0xa0, 0x7c, 0xd1, 0x8d, 0xa0, 0x7c, 0xd2, - 0x8d, 0xa0, 0x7d, 0xd1, 0x8d, 0xa0, 0x7d, 0xd2, 0x8d, 0xa0, 0x7e, 0xd1, - 0x8d, 0xa0, 0x7e, 0xd2, 0x8d, 0xa0, 0x7f, 0xd1, 0x8d, 0xa0, 0x7f, 0xd2, - 0x8d, 0xa0, 0x80, 0xd1, 0x8d, 0xa0, 0x81, 0xd2, 0x8d, 0xa0, 0x81, 0xd1, - 0x8d, 0xa0, 0x82, 0xd0, 0x8e, 0xa0, 0x82, 0xd1, 0x8d, 0xa0, 0x83, 0xd0, - 0x8e, 0xa0, 0x83, 0xd1, 0x8d, 0xa0, 0x84, 0xd0, 0x8e, 0xa0, 0x84, 0xd1, - 0x8d, 0xa0, 0x85, 0xd0, 0x8e, 0xa0, 0x85, 0xd1, 0x8d, 0xa0, 0x86, 0xd0, - 0x8e, 0xa0, 0x86, 0xd1, 0x8d, 0xa0, 0x87, 0xd0, 0x8e, 0xa0, 0x87, 0xd1, - 0x8d, 0xa0, 0x88, 0xd0, 0x8e, 0xa0, 0x88, 0xd1, 0x8d, 0xa0, 0x89, 0xd0, - 0x8e, 0xa0, 0x89, 0xd1, 0x8d, 0xa0, 0x8a, 0xd0, 0x8e, 0xa0, 0x8a, 0xd1, - 0x8d, 0xa0, 0x8b, 0xd0, 0x8e, 0xa0, 0x8b, 0xd1, 0x8d, 0xa0, 0x8c, 0xd0, - 0x8e, 0xa0, 0x8c, 0xd0, 0x8e, 0xa0, 0x8d, 0xd0, 0x8e, 0xa0, 0x8d, 0xd0, - 0x8e, 0xa0, 0x8d, 0xd0, 0x8e, 0xa0, 0x8d, 0xd0, 0x8e, 0xa0, 0x8d, 0xd0, - 0x8e, 0xa0, 0x8d, 0xd0, 0x8f, 0xa0, 0x8e, 0xd0, 0x8f, 0x9e, 0x8d, 0xd0, - 0x90, 0xa0, 0x8e, 0xd0, 0x90, 0x9e, 0x8d, 0xd0, 0x91, 0xa0, 0x8e, 0xd0, - 0x91, 0x9e, 0x8d, 0xd0, 0x92, 0xa0, 0x8e, 0xd0, 0x92, 0x9e, 0x8d, 0xd0, - 0x93, 0xa0, 0x8e, 0xd0, 0x93, 0x9e, 0x8d, 0xd0, 0x94, 0xa0, 0x8e, 0xd0, - 0x94, 0x9e, 0x8d, 0xd0, 0x94, 0xa0, 0x8e, 0xd0, 0x95, 0x9e, 0x8d, 0xd0, - 0x95, 0xa0, 0x8e, 0xd0, 0x96, 0x9e, 0x8d, 0xd0, 0x96, 0xa0, 0x8e, 0xd0, - 0x97, 0x9e, 0x8d, 0xd0, 0x97, 0xa0, 0x98, 0xd0, 0x98, 0x95, 0x98, 0xd0, - 0x98, 0x95, 0x98, 0xd0, 0x98, 0x95, 0x9c, 0xd0, 0x99, 0x96, 0x9d, 0xd0, - 0x99, 0x96, 0x9c, 0xd0, 0x9a, 0x96, 0x9d, 0xd0, 0x9a, 0x96, 0x9c, 0xd0, - 0x9a, 0x96, 0x9d, 0xd0, 0x9b, 0x96, 0x9c, 0xd0, 0x9b, 0x96, 0x9d, 0xd0, - 0x9c, 0x96, 0x9c, 0xd0, 0x9c, 0x96, 0x9d, 0xd0, 0x9d, 0x96, 0x9d, 0xd0, - 0x9d, 0x96, 0xa1, 0xd0, 0x9d, 0x97, 0xa1, 0xd0, 0x9e, 0x97, 0xa1, 0xd0, - 0x9e, 0x97, 0xa1, 0xd0, 0x9f, 0x97, 0xa1, 0xd0, 0x9f, 0x97, 0xa1, 0xd0, - 0x9f, 0x97, 0xa1, 0xd0, 0xa0, 0x97, 0xa1, 0xd0, 0xa0, 0x97, 0xa1, 0xd0, - 0xa1, 0x97, 0xa1, 0xd0, 0xa1, 0x97, 0xa1, 0xd0, 0xa1, 0x97, 0xa2, 0xd0, - 0xa2, 0x97, 0xa2, 0xd0, 0xa2, 0x97, 0xa3, 0xd0, 0xa3, 0x97, 0xa3, 0xd0, - 0xa3, 0x97, 0xa3, 0xd0, 0xa3, 0x97, 0xa3, 0xd0, 0xa4, 0x97, 0xa3, 0xd0, - 0xa4, 0x97, 0xa3, 0xd0, 0xa5, 0x97, 0xa3, 0xd0, 0xa5, 0x97, 0xa3, 0xd0, - 0xa5, 0x97, 0xa3, 0xd0, 0xa6, 0x97, 0xa3, 0xd0, 0xa6, 0x97, 0xa3, 0xd0, - 0xa6, 0x97, 0xa3, 0xd0, 0xa7, 0x97, 0xa3, 0xd0, 0xa7, 0x97, 0xa3, 0xd0, - 0xa8, 0x97, 0xa3, 0xd0, 0xa8, 0x97, 0xa3, 0xd0, 0xa8, 0x97, 0xa3, 0xd0, - 0xa9, 0x97, 0xa3, 0xd0, 0xa9, 0x97, 0xa3, 0xd0, 0xaa, 0x97, 0xa3, 0xd0, - 0xaa, 0x97, 0xa3, 0xd0, 0xaa, 0x97, 0xa3, 0xd0, 0xab, 0x97, 0xa3, 0xd0, - 0xab, 0x97, 0xa3, 0xd0, 0xab, 0x97, 0xa3, 0xd0, 0xac, 0x97, 0xa3, 0xd0, - 0xac, 0x97, 0xa3, 0xd0, 0xac, 0x97, 0xa3, 0xd0, 0xad, 0x97, 0xa3, 0xd0, - 0xad, 0x97, 0xa3, 0xd0, 0xae, 0x97, 0xa3, 0xd0, 0xae, 0x97, 0xa3, 0xd0, - 0xae, 0x97, 0xa3, 0xd0, 0xaf, 0x97, 0xa3, 0xd0, 0xaf, 0x97, 0xa3, 0xd0, - 0xaf, 0x97, 0xa3, 0xd0, 0xb0, 0x97, 0xa3, 0xd0, 0xb0, 0x97, 0xa3, 0xd0, - 0xb0, 0x97, 0xa3, 0xd0, 0xb1, 0x97, 0xa3, 0xd0, 0xb1, 0x97, 0xa3, 0xd0, - 0xb2, 0x97, 0xa3, 0xd0, 0xb2, 0x97, 0xa3, 0xd0, 0xb2, 0x97, 0xa3, 0xd0, - 0xb3, 0x97, 0xa3, 0xd0, 0xb3, 0x97, 0xa3, 0xd0, 0xb3, 0x97, 0xa3, 0xd0, - 0xb4, 0x97, 0xa3, 0xd0, 0xb4, 0x97, 0xa3, 0xd0, 0xb4, 0x97, 0xa3, 0xd0, - 0xb5, 0x97, 0xa3, 0xd0, 0xb5, 0x97, 0xa3, 0xd0, 0xb5, 0x97, 0xa3, 0xd0, - 0xb6, 0x97, 0xa3, 0xd0, 0xb6, 0x97, 0xa3, 0xd0, 0xb6, 0x97, 0xa3, 0xd0, - 0xb7, 0x97, 0xa3, 0xd0, 0xb7, 0x97, 0xa3, 0xd0, 0xb7, 0x97, 0xa3, 0xd0, - 0xb8, 0x97, 0xa3, 0xd0, 0xb8, 0x97, 0xa3, 0xd0, 0xb8, 0x97, 0xa3, 0xd0, - 0xb9, 0x97, 0xa3, 0xd0, 0xb9, 0x97, 0xa3, 0xd0, 0xb9, 0x97, 0xa3, 0xd0, - 0xba, 0x97, 0xa3, 0xd0, 0xba, 0x97, 0xa3, 0xd0, 0xba, 0x97, 0xa4, 0xd0, - 0xbb, 0x94, 0xa3, 0xd0, 0xbb, 0x97, 0xa4, 0xd0, 0xbb, 0x94, 0xa3, 0xd0, - 0xbc, 0x97, 0xa4, 0xd0, 0xbc, 0x94, 0xa3, 0xd0, 0xbc, 0x97, 0xd2, 0xd0, - 0xbd, 0xa7, 0xd2, 0xd0, 0xbd, 0xa4, 0xd2, 0xd0, 0xbd, 0xa7, 0xd2, 0xd0, - 0xbe, 0xa4, 0xd2, 0xd0, 0xbe, 0xa7, 0xd2, 0xd0, 0xbe, 0xa4, 0xd2, 0xd0, - 0xbf, 0xa7, 0xd2, 0xd0, 0xbf, 0xa4, 0xd2, 0xd0, 0xbf, 0xa7, 0xd2, 0xd0, - 0xc0, 0xa4, 0xd2, 0xd0, 0xc0, 0xa7, 0xd2, 0xd0, 0xc0, 0xa4, 0xd2, 0xd0, - 0xc1, 0xa7, 0xd2, 0xd0, 0xc1, 0xa4, 0xd2, 0xd0, 0xc1, 0xa7, 0xd2, 0xd0, - 0xc1, 0xa4, 0xd2, 0xd0, 0xc2, 0xa7, 0xd2, 0xd0, 0xc2, 0xa4, 0xd2, 0xd0, - 0xc2, 0xa7, 0xd2, 0xd0, 0xc3, 0xa4, 0xd2, 0xd0, 0xc3, 0xa7, 0xd2, 0xd0, - 0xc3, 0xa4, 0xd2, 0xd0, 0xc4, 0xa7, 0xd2, 0xd0, 0xc4, 0xa4, 0xd2, 0xd0, - 0xc4, 0xa7, 0xd2, 0xd0, 0xc5, 0xa4, 0xd2, 0xd0, 0xc5, 0xa7, 0xd2, 0xd0, - 0xc5, 0xa4, 0xd2, 0xd0, 0xc6, 0xa2, 0xd2, 0xd0, 0xc6, 0xa4, 0xd2, 0xd0, - 0xc6, 0xa2, 0xd2, 0xd0, 0xc6, 0xa4, 0xd2, 0xd0, 0xc7, 0xa2, 0xd2, 0xd0, - 0xc7, 0xa4, 0xd2, 0xd0, 0xc7, 0xa2, 0xd2, 0xd0, 0xc8, 0xa4, 0xd2, 0xd0, - 0xc8, 0xa2, 0xd2, 0xd0, 0xc8, 0xa4, 0xd2, 0xd0, 0xc9, 0xa2, 0xd2, 0xd0, - 0xc9, 0xa4, 0xd2, 0xd0, 0xc9, 0xa2, 0xd2, 0xd0, 0xc9, 0xa4, 0xd2, 0xd0, - 0xca, 0xa2, 0xd2, 0xd0, 0xca, 0xa4, 0xd2, 0xd0, 0xca, 0xa2, 0xd2, 0xd0, - 0xcb, 0xa4, 0xd2, 0xd0, 0xcb, 0xa2, 0xd2, 0xd0, 0xcb, 0xa4, 0xd2, 0xd0, - 0xcc, 0xa2, 0xd2, 0xd0, 0xcc, 0xa4, 0xd2, 0xd0, 0xcc, 0xa2, 0xd2, 0xd0, - 0xcc, 0xa4, 0xd2, 0xd0, 0xcd, 0xa2, 0xd2, 0xd0, 0xcd, 0xa4, 0xd2, 0xd0, - 0xcd, 0xa2, 0xd2, 0xd0, 0xce, 0xa4, 0xd2, 0xd0, 0xce, 0xa2, 0xd3, 0xd0, - 0xce, 0xa0, 0xd2, 0xd0, 0xce, 0xa2, 0xd3, 0xd0, 0xcf, 0xa0, 0xd2, 0xd0, - 0xcf, 0xa2, 0xd3, 0xd0, 0xcf, 0xa0, 0xd2, 0xd0, 0xd0, 0xa2, 0xd3, 0xd0, - 0xd0, 0xa0, 0xd2, 0xd0, 0xd0, 0xa2, 0xd3, 0xd0, 0xd0, 0xa0, 0xd2, 0xd0, - 0xd1, 0xa2, 0xd3, 0xd0, 0xd1, 0xa0, 0xd2, 0xd0, 0xd1, 0xa2, 0xd3, 0xd0, - 0xd2, 0xa0, 0xd3, 0xd0, 0xd2, 0xa0, 0xd3, 0xd0, 0xd2, 0xa0, 0xd3, 0xd0, - 0xd2, 0xa0, 0xd3, 0xd0, 0xd2, 0xa0, 0xd3, 0xd0, 0xd2, 0xa0, 0xd3, 0xd0, - 0xd2, 0xa0, 0xd4, 0xd0, 0xd2, 0xa0, 0xd4, 0xce, 0xd3, 0xa0, 0xd4, 0xd0, - 0xd2, 0xa0, 0xd4, 0xce, 0xd3, 0xa0, 0xd5, 0xd0, 0xd2, 0xa0, 0xd5, 0xce, - 0xd3, 0xa0, 0xd5, 0xd0, 0xd2, 0xa0, 0xd6, 0xce, 0xd3, 0xa0, 0xd6, 0xd0, - 0xd2, 0xa0, 0xd6, 0xce, 0xd3, 0xa0, 0xd6, 0xd0, 0xd2, 0xa0, 0xd7, 0xce, - 0xd3, 0xa0, 0xd7, 0xd0, 0xd2, 0xa0, 0xd7, 0xce, 0xd3, 0xa0, 0xd7, 0xd0, - 0xd2, 0xa0, 0xd8, 0xce, 0xd3, 0xa0, 0xd8, 0xd0, 0xd2, 0xa0, 0xd8, 0xce, - 0xd3, 0xa0, 0xd9, 0xd0, 0xd2, 0xa0, 0xd9, 0xce, 0xd3, 0xa0, 0xd9, 0xd0, - 0xd2, 0xa0, 0xd9, 0xc9, 0xd9, 0xa0, 0xda, 0xc9, 0xda, 0xa0, 0xda, 0xc9, - 0xda, 0xa0, 0xda, 0xc9, 0xdc, 0xa0, 0xda, 0xc9, 0xdd, 0xa0, 0xdb, 0xc9, - 0xdc, 0xa0, 0xdb, 0xc9, 0xdd, 0xa0, 0xdb, 0xc9, 0xdc, 0xa0, 0xdb, 0xc9, - 0xdd, 0xa0, 0xdc, 0xc9, 0xdc, 0xa0, 0xdc, 0xc9, 0xdd, 0xa0, 0xdc, 0xc9, - 0xdc, 0xa0, 0xdd, 0xc9, 0xdd, 0xa0, 0xdd, 0xc9, 0xdd, 0xa0, 0xdd, 0xca, - 0xdf, 0xa0, 0xdd, 0xca, 0xdf, 0xa0, 0xde, 0xca, 0xdf, 0xa0, 0xde, 0xca, - 0xdf, 0xa0, 0xde, 0xca, 0xdf, 0xa0, 0xde, 0xca, 0xdf, 0xa0, 0xdf, 0xca, - 0xdf, 0xa0, 0xdf, 0xca, 0xdf, 0xa0, 0xdf, 0xca, 0xdf, 0xa0, 0xdf, 0xca, - 0xdf, 0xa0, 0xe0, 0xca, 0xe0, 0xa0, 0xe0, 0xca, 0xe2, 0xa0, 0xe0, 0xca, - 0xe2, 0xa0, 0xe1, 0xca, 0xe2, 0xa0, 0xe1, 0xca, 0xe2, 0xa0, 0xe1, 0xca, - 0xe2, 0xa0, 0xe1, 0xca, 0xe2, 0xa0, 0xe2, 0xca, 0xe2, 0xa0, 0xe2, 0xca, - 0xe2, 0xa0, 0xe2, 0xca, 0xe2, 0xa0, 0xe2, 0xca, 0xe2, 0xa0, 0xe3, 0xca, - 0xe3, 0xa0, 0xe3, 0xcb, 0xe5, 0xa0, 0xe3, 0xcb, 0xe5, 0xa0, 0xe3, 0xcb, - 0xe5, 0xa0, 0xe4, 0xcb, 0xe5, 0xa0, 0xe4, 0xcb, 0xe5, 0xa0, 0xe4, 0xcb, - 0xe5, 0xa0, 0xe4, 0xcb, 0xe5, 0xa0, 0xe5, 0xcb, 0xe5, 0xa0, 0xe5, 0xcb, - 0xe5, 0xa0, 0xe5, 0xcb, 0xe5, 0xa0, 0xe5, 0xcb, 0xe5, 0xa0, 0xe6, 0xcb, - 0xe6, 0xa0, 0xe6, 0xcb, 0xe6, 0xa0, 0xe6, 0xcc, 0xe8, 0xa0, 0xe6, 0xcc, - 0xe8, 0xa0, 0xe7, 0xcc, 0xe8, 0xa0, 0xe7, 0xcc, 0xe8, 0xa0, 0xe7, 0xcc, - 0xe8, 0xa0, 0xe7, 0xd0, 0xeb, 0xa0, 0xe8, 0xd0, 0xeb, 0xa0, 0xe8, 0xd0, - 0xeb, 0xa0, 0xe8, 0xd0, 0xeb, 0xa0, 0xe8, 0xd0, 0xeb, 0xa0, 0xe9, 0xd0, - 0xeb, 0xa0, 0xe9, 0xd0, 0xeb, 0xa0, 0xe9, 0xd0, 0xeb, 0xa0, 0xe9, 0xd0, - 0xeb, 0xa0, 0xea, 0xd0, 0xeb, 0xa0, 0xea, 0xd0, 0xeb, 0xa0, 0xea, 0xd0, - 0xeb, 0xa0, 0xea, 0xd0, 0xeb, 0xa0, 0xeb, 0xd0, 0xeb, 0xa0, 0xea, 0xd0, - 0xeb, 0xa0, 0xeb, 0xd0, 0xeb, 0xa0, 0xea, 0xd0, 0xeb, 0xa0, 0xeb, 0xd0, - 0xec, 0xa0, 0xea, 0xd0, 0xec, 0xa0, 0xeb, 0xd0, 0xec, 0xa0, 0xee, 0xd0, - 0xec, 0xa0, 0xed, 0xd0, 0xec, 0xa1, 0xee, 0xd0, 0xed, 0xa0, 0xed, 0xd0, - 0xed, 0xa1, 0xee, 0xd0, 0xed, 0xa0, 0xee, 0xd0, 0xed, 0xa0, 0xee, 0xd0, - 0xed, 0xa0, 0xee, 0xd0, 0xed, 0xa0, 0xee, 0xd0, 0xed, 0xa0, 0xee, 0xd0, - 0xed, 0xa0, 0xef, 0xd0, 0xed, 0xa0, 0xef, 0xd0, 0xed, 0xa0, 0xef, 0xd0, - 0xed, 0xa0, 0xef, 0xd0, 0xed, 0xa0, 0xf0, 0xd0, 0xed, 0xa0, 0xf0, 0xd0, - 0xed, 0xa0, 0xf0, 0xd0, 0xed, 0xa0, 0xf0, 0xd0, 0xed, 0xa0, 0xf1, 0xd0, - 0xed, 0xa0, 0xf1, 0xd0, 0xed, 0xa0, 0xf1, 0xd0, 0xed, 0xa0, 0xf1, 0xd0, - 0xed, 0xa0, 0xf2, 0xcd, 0xee, 0xa0, 0xf2, 0xd0, 0xed, 0xa0, 0xf2, 0xcd, - 0xee, 0xa0, 0xf2, 0xd0, 0xed, 0xa0, 0xf2, 0xcd, 0xee, 0xa0, 0xf3, 0xd0, - 0xed, 0xa0, 0xf3, 0xcd, 0xee, 0xa0, 0xf3, 0xd0, 0xed, 0xa0, 0xf3, 0xcd, - 0xee, 0xa0, 0xf4, 0xd0, 0xed, 0xa0, 0xf4, 0xcd, 0xee, 0xa0, 0xf4, 0xd0, - 0xed, 0xa0, 0xf4, 0xcd, 0xee, 0xa0, 0xf5, 0xc7, 0xf5, 0xa0, 0xf5, 0xc7, - 0xf5, 0xa0, 0xf5, 0xc7, 0xf5, 0xa0, 0xf5, 0xc7, 0xf5, 0xa0, 0xf5, 0xc7, - 0xf5, 0xa0, 0xf6, 0xc7, 0xf6, 0xa0, 0xf6, 0xc7, 0xf6, 0xa0, 0xf6, 0xc7, - 0xf6, 0xa0, 0xf6, 0xc7, 0xf6, 0xa0, 0xf7, 0xc7, 0xf7, 0xa0, 0xf7, 0xc7, - 0xf7, 0xa0, 0xf7, 0xc7, 0xf7, 0xa0, 0xf7, 0xc7, 0xf7, 0xa0, 0xf8, 0xc7, - 0xf7, 0xa0, 0xf8, 0xc7, 0xf7, 0xa0, 0xf8, 0xc7, 0xf7, 0xa0, 0xf8, 0xc7, - 0xf7, 0xa0, 0xf8, 0xc7, 0xf7, 0xa0, 0xf9, 0xc7, 0xf7, 0xa0, 0xf9, 0xc7, - 0xf7, 0xa0, 0xf9, 0xc7, 0xf7, 0xa0, 0xf9, 0xc7, 0xf7, 0xa0, 0xfa, 0xc7, - 0xf7, 0xa0, 0xfa, 0xc7, 0xf7, 0xa0, 0xfa, 0xc7, 0xf7, 0xa0, 0xfa, 0xc7, - 0xf7, 0xa0, 0xfa, 0xc7, 0xf7, 0xa0, 0xfb, 0xc7, 0xf7, 0xa0, 0xfb, 0xc7, - 0xf7, 0xa0, 0xfb, 0xc7, 0xf7, 0xa0, 0xfb, 0xc7, 0xf7, 0xa0, 0xfc, 0xc7, - 0xf7, 0xa0, 0xfc, 0xc7, 0xf7, 0xa0, 0xfc, 0xc7, 0xf7, 0xa0, 0xfc, 0xc7, - 0xf7, 0xa0, 0xfc, 0xc7, 0xf7, 0xa0, 0xfd, 0xc7, 0xf7, 0xa0, 0xfd, 0xc7, - 0xf7, 0xa0, 0xfd, 0xc7, 0xf7, 0xa0, 0xfd, 0xc7, 0xf7, 0xa0, 0xfe, 0xc7, - 0xf7, 0xa0, 0xfe, 0xc7, 0xf7, 0xa0, 0xfe, 0xc7, 0xf7, 0xa0, 0xfe, 0xc7, - 0xf7, 0xa0, 0xfe, 0xc7, 0xf7, 0xa0, 0xff, 0xc6, 0xf8, 0xa0, 0xff, 0xc7, - 0xf7, 0xa0, 0x03, 0xd4, 0x8c, 0xa1, 0x0a, 0xd6, 0x8c, 0xa1, 0x0f, 0xd4, - 0x8c, 0xa1, 0x14, 0xd6, 0x8c, 0xa1, 0x17, 0xd4, 0x8c, 0xa1, 0x1b, 0xd6, - 0x8c, 0xa1, 0x1e, 0xd4, 0x8c, 0xa1, 0x20, 0xd6, 0x8c, 0xa1, 0x23, 0xd4, - 0x8c, 0xa1, 0x25, 0xd6, 0x8c, 0xa1, 0x27, 0xd4, 0x8c, 0xa1, 0x29, 0xd6, - 0x8c, 0xa1, 0x2b, 0xd4, 0x8c, 0xa1, 0x2d, 0xd6, 0x8c, 0xa1, 0x2f, 0xd4, - 0x8c, 0xa1, 0x31, 0xd6, 0x8c, 0xa1, 0x32, 0xd4, 0x8c, 0xa1, 0x34, 0xd6, - 0x8c, 0xa1, 0x35, 0xd4, 0x8c, 0xa1, 0x37, 0xd6, 0x8c, 0xa1, 0x38, 0xd4, - 0x8c, 0xa1, 0x3a, 0xd6, 0x8c, 0xa1, 0x3b, 0xd4, 0x8c, 0xa1, 0x3c, 0xd6, - 0x8c, 0xa1, 0x3e, 0xd4, 0x8c, 0xa1, 0x3f, 0xd6, 0x8c, 0xa1, 0x40, 0xd4, - 0x8c, 0xa1, 0x42, 0xd6, 0x8c, 0xa1, 0x43, 0xd4, 0x8c, 0xa1, 0x44, 0xd6, - 0x8c, 0xa1, 0x45, 0xd4, 0x8c, 0xa1, 0x46, 0xd6, 0x8c, 0xa1, 0x47, 0xd4, - 0x8c, 0xa1, 0x48, 0xd6, 0x8c, 0xa1, 0x49, 0xd4, 0x8c, 0xa1, 0x4a, 0xd6, - 0x8c, 0xa1, 0x4b, 0xd4, 0x8c, 0xa1, 0x4c, 0xd6, 0x8c, 0xa1, 0x4d, 0xd4, - 0x8c, 0xa1, 0x4e, 0xd3, 0x8d, 0xa1, 0x4f, 0xd4, 0x8c, 0xa1, 0x50, 0xd3, - 0x8d, 0xa1, 0x51, 0xd4, 0x8c, 0xa1, 0x52, 0xd3, 0x8d, 0xa1, 0x53, 0xd4, - 0x8c, 0xa1, 0x54, 0xd3, 0x8d, 0xa1, 0x55, 0xd4, 0x8c, 0xa1, 0x56, 0xd3, - 0x8d, 0xa1, 0x57, 0xd4, 0x8c, 0xa1, 0x58, 0xd3, 0x8d, 0xa1, 0x58, 0xd4, - 0x8c, 0xa1, 0x59, 0xd3, 0x8d, 0xa1, 0x5a, 0xd4, 0x8c, 0xa1, 0x5b, 0xd3, - 0x8d, 0xa1, 0x5c, 0xd4, 0x8c, 0xa1, 0x5d, 0xd3, 0x8d, 0xa1, 0x5d, 0xd4, - 0x8c, 0xa1, 0x5e, 0xd3, 0x8d, 0xa1, 0x5f, 0xd4, 0x8c, 0xa1, 0x60, 0xd3, - 0x8d, 0xa1, 0x60, 0xd4, 0x8c, 0xa1, 0x61, 0xd3, 0x8d, 0xa1, 0x62, 0xd4, - 0x8c, 0xa1, 0x63, 0xd3, 0x8d, 0xa1, 0x63, 0xd4, 0x8c, 0xa1, 0x64, 0xd3, - 0x8d, 0xa1, 0x65, 0xd4, 0x8c, 0xa1, 0x66, 0xd3, 0x8d, 0xa1, 0x66, 0xd4, - 0x8c, 0xa1, 0x67, 0xd3, 0x8d, 0xa1, 0x68, 0xd4, 0x8c, 0xa1, 0x68, 0xd3, - 0x8d, 0xa1, 0x69, 0xd0, 0x8d, 0xa1, 0x6a, 0xd3, 0x8d, 0xa1, 0x6a, 0xd0, - 0x8d, 0xa1, 0x6b, 0xd3, 0x8d, 0xa1, 0x6c, 0xd0, 0x8d, 0xa1, 0x6c, 0xd3, - 0x8d, 0xa1, 0x6d, 0xd0, 0x8d, 0xa1, 0x6e, 0xd3, 0x8d, 0xa1, 0x6e, 0xd0, - 0x8d, 0xa1, 0x6f, 0xd3, 0x8d, 0xa1, 0x70, 0xd0, 0x8d, 0xa1, 0x70, 0xd3, - 0x8d, 0xa1, 0x71, 0xd0, 0x8d, 0xa1, 0x72, 0xd3, 0x8d, 0xa1, 0x72, 0xd0, - 0x8d, 0xa1, 0x73, 0xd3, 0x8d, 0xa1, 0x73, 0xd0, 0x8d, 0xa1, 0x74, 0xd3, - 0x8d, 0xa1, 0x75, 0xd0, 0x8d, 0xa1, 0x75, 0xd3, 0x8d, 0xa1, 0x76, 0xd0, - 0x8d, 0xa1, 0x76, 0xd3, 0x8d, 0xa1, 0x77, 0xd0, 0x8d, 0xa1, 0x78, 0xd3, - 0x8d, 0xa1, 0x78, 0xd0, 0x8d, 0xa1, 0x79, 0xd3, 0x8d, 0xa1, 0x79, 0xd0, - 0x8d, 0xa1, 0x7a, 0xd3, 0x8d, 0xa1, 0x7a, 0xd0, 0x8d, 0xa1, 0x7b, 0xd3, - 0x8d, 0xa1, 0x7c, 0xd0, 0x8d, 0xa1, 0x7c, 0xd3, 0x8d, 0xa1, 0x7d, 0xd0, - 0x8d, 0xa1, 0x7d, 0xd3, 0x8d, 0xa1, 0x7e, 0xd0, 0x8d, 0xa1, 0x7e, 0xd3, - 0x8d, 0xa1, 0x7f, 0xd0, 0x8d, 0xa1, 0x7f, 0xd3, 0x8d, 0xa1, 0x80, 0xd0, - 0x8d, 0xa1, 0x81, 0xd3, 0x8d, 0xa1, 0x81, 0xd0, 0x8d, 0xa1, 0x82, 0xd0, - 0x8e, 0xa1, 0x82, 0xd0, 0x8d, 0xa1, 0x83, 0xd0, 0x8e, 0xa1, 0x83, 0xd0, - 0x8d, 0xa1, 0x84, 0xd0, 0x8e, 0xa1, 0x84, 0xd0, 0x8d, 0xa1, 0x85, 0xd0, - 0x8e, 0xa1, 0x85, 0xd0, 0x8d, 0xa1, 0x86, 0xd0, 0x8e, 0xa1, 0x86, 0xd0, - 0x8d, 0xa1, 0x87, 0xd0, 0x8e, 0xa1, 0x87, 0xd0, 0x8d, 0xa1, 0x88, 0xd0, - 0x8e, 0xa1, 0x88, 0xd0, 0x8d, 0xa1, 0x89, 0xd0, 0x8e, 0xa1, 0x89, 0xd0, - 0x8d, 0xa1, 0x8a, 0xd0, 0x8e, 0xa1, 0x8a, 0xd0, 0x8d, 0xa1, 0x8b, 0xd0, - 0x8e, 0xa1, 0x8b, 0xd0, 0x8d, 0xa1, 0x8c, 0xd0, 0x8e, 0xa1, 0x8c, 0xd0, - 0x8d, 0xa1, 0x8d, 0xd0, 0x8e, 0xa1, 0x8d, 0xd0, 0x8d, 0xa1, 0x8d, 0xd0, - 0x8e, 0xa1, 0x8d, 0xd0, 0x8e, 0xa1, 0x8d, 0xd0, 0x8e, 0xa1, 0x8d, 0xd0, - 0x8f, 0xa1, 0x8d, 0xd0, 0x8f, 0xa1, 0x8d, 0xd0, 0x90, 0xa1, 0x8d, 0xd0, - 0x90, 0xa1, 0x8d, 0xd0, 0x91, 0xa1, 0x8e, 0xd0, 0x91, 0x9e, 0x8d, 0xd0, - 0x92, 0xa1, 0x8e, 0xd0, 0x92, 0x9e, 0x8d, 0xd0, 0x93, 0xa1, 0x8e, 0xd0, - 0x93, 0x9e, 0x8d, 0xd0, 0x94, 0xa1, 0x8e, 0xd0, 0x94, 0x9e, 0x8d, 0xd0, - 0x94, 0xa1, 0x8e, 0xd0, 0x95, 0x9e, 0x8d, 0xd0, 0x95, 0xa1, 0x8e, 0xd0, - 0x96, 0x9e, 0x8d, 0xd0, 0x96, 0xa1, 0x8e, 0xd0, 0x97, 0x9e, 0x8d, 0xd0, - 0x97, 0xa1, 0x8e, 0xd0, 0x98, 0x9e, 0x9a, 0xd0, 0x98, 0x96, 0x9a, 0xd0, - 0x98, 0x96, 0x9a, 0xd0, 0x99, 0x96, 0x9a, 0xd0, 0x99, 0x96, 0x9a, 0xd0, - 0x9a, 0x96, 0x9a, 0xd0, 0x9a, 0x96, 0x9a, 0xd0, 0x9a, 0x96, 0x9b, 0xd0, - 0x9b, 0x96, 0x9f, 0xd0, 0x9b, 0x97, 0x9f, 0xd0, 0x9c, 0x97, 0x9f, 0xd0, - 0x9c, 0x97, 0x9f, 0xd0, 0x9d, 0x97, 0x9f, 0xd0, 0x9d, 0x97, 0x9f, 0xd0, - 0x9d, 0x97, 0x9f, 0xd0, 0x9e, 0x97, 0x9f, 0xd0, 0x9e, 0x97, 0x9f, 0xd0, - 0x9f, 0x97, 0x9f, 0xd0, 0x9f, 0x97, 0x9f, 0xd0, 0x9f, 0x97, 0xa3, 0xd0, - 0xa0, 0x98, 0xa0, 0xd0, 0xa0, 0x97, 0xa3, 0xd0, 0xa1, 0x98, 0xa1, 0xd0, - 0xa1, 0x97, 0xa3, 0xd0, 0xa1, 0x98, 0xa2, 0xd0, 0xa2, 0x97, 0xa3, 0xd0, - 0xa2, 0x98, 0xa3, 0xd0, 0xa3, 0x97, 0xa3, 0xd0, 0xa3, 0x98, 0xa3, 0xd0, - 0xa3, 0x97, 0xa3, 0xd0, 0xa4, 0x98, 0xa3, 0xd0, 0xa4, 0x97, 0xa3, 0xd0, - 0xa5, 0x98, 0xa3, 0xd0, 0xa5, 0x97, 0xa3, 0xd0, 0xa5, 0x98, 0xa3, 0xd0, - 0xa6, 0x97, 0xa3, 0xd0, 0xa6, 0x98, 0xa3, 0xd0, 0xa6, 0x97, 0xa3, 0xd0, - 0xa7, 0x98, 0xa3, 0xd0, 0xa7, 0x97, 0xa3, 0xd0, 0xa8, 0x98, 0xa3, 0xd0, - 0xa8, 0x97, 0xa3, 0xd0, 0xa8, 0x98, 0xa3, 0xd0, 0xa9, 0x97, 0xa3, 0xd0, - 0xa9, 0x98, 0xa3, 0xd0, 0xaa, 0x97, 0xa3, 0xd0, 0xaa, 0x98, 0xa3, 0xd0, - 0xaa, 0x97, 0xa3, 0xd0, 0xab, 0x98, 0xa3, 0xd0, 0xab, 0x97, 0xa3, 0xd0, - 0xab, 0x98, 0xa3, 0xd0, 0xac, 0x97, 0xa3, 0xd0, 0xac, 0x98, 0xa3, 0xd0, - 0xac, 0x97, 0xa3, 0xd0, 0xad, 0x98, 0xa3, 0xd0, 0xad, 0x97, 0xa3, 0xd0, - 0xae, 0x98, 0xa3, 0xd0, 0xae, 0x97, 0xa3, 0xd0, 0xae, 0x98, 0xa3, 0xd0, - 0xaf, 0x97, 0xa3, 0xd0, 0xaf, 0x98, 0xa3, 0xd0, 0xaf, 0x97, 0xa3, 0xd0, - 0xb0, 0x98, 0xa3, 0xd0, 0xb0, 0x97, 0xa3, 0xd0, 0xb0, 0x98, 0xa3, 0xd0, - 0xb1, 0x97, 0xa3, 0xd0, 0xb1, 0x98, 0xa3, 0xd0, 0xb2, 0x97, 0xa3, 0xd0, - 0xb2, 0x98, 0xa3, 0xd0, 0xb2, 0x97, 0xa3, 0xd0, 0xb3, 0x98, 0xa3, 0xd0, - 0xb3, 0x97, 0xa3, 0xd0, 0xb3, 0x98, 0xa3, 0xd0, 0xb4, 0x97, 0xa3, 0xd0, - 0xb4, 0x98, 0xa3, 0xd0, 0xb4, 0x97, 0xa3, 0xd0, 0xb5, 0x98, 0xa3, 0xd0, - 0xb5, 0x97, 0xa3, 0xd0, 0xb5, 0x98, 0xa3, 0xd0, 0xb6, 0x97, 0xa3, 0xd0, - 0xb6, 0x98, 0xa3, 0xd0, 0xb6, 0x97, 0xa3, 0xd0, 0xb7, 0x98, 0xa3, 0xd0, - 0xb7, 0x97, 0xa3, 0xd0, 0xb7, 0x98, 0xa3, 0xd0, 0xb8, 0x97, 0xa3, 0xd0, - 0xb8, 0x98, 0xa3, 0xd0, 0xb8, 0x97, 0xa3, 0xd0, 0xb9, 0x98, 0xa3, 0xd0, - 0xb9, 0x97, 0xa3, 0xd0, 0xb9, 0x98, 0xa3, 0xd0, 0xba, 0x97, 0xa3, 0xd0, - 0xba, 0x98, 0xa3, 0xd0, 0xba, 0x97, 0xa4, 0xd0, 0xbb, 0x95, 0xa3, 0xd0, - 0xbb, 0x97, 0xa4, 0xd0, 0xbb, 0x95, 0xa3, 0xd0, 0xbc, 0x97, 0xa4, 0xd0, - 0xbc, 0x95, 0xd2, 0xd0, 0xbc, 0xaa, 0xd2, 0xd0, 0xbd, 0xa8, 0xd2, 0xd0, - 0xbd, 0xaa, 0xd2, 0xd0, 0xbd, 0xa8, 0xd2, 0xd0, 0xbe, 0xaa, 0xd2, 0xd0, - 0xbe, 0xa8, 0xd2, 0xd0, 0xbe, 0xaa, 0xd2, 0xd0, 0xbf, 0xa8, 0xd2, 0xd0, - 0xbf, 0xa5, 0xd2, 0xd0, 0xbf, 0xa8, 0xd2, 0xd0, 0xc0, 0xa5, 0xd2, 0xd0, - 0xc0, 0xa8, 0xd2, 0xd0, 0xc0, 0xa5, 0xd2, 0xd0, 0xc1, 0xa8, 0xd2, 0xd0, - 0xc1, 0xa5, 0xd2, 0xd0, 0xc1, 0xa8, 0xd2, 0xd0, 0xc1, 0xa5, 0xd2, 0xd0, - 0xc2, 0xa8, 0xd2, 0xd0, 0xc2, 0xa5, 0xd2, 0xd0, 0xc2, 0xa8, 0xd2, 0xd0, - 0xc3, 0xa5, 0xd2, 0xd0, 0xc3, 0xa8, 0xd2, 0xd0, 0xc3, 0xa5, 0xd2, 0xd0, - 0xc4, 0xa8, 0xd2, 0xd0, 0xc4, 0xa5, 0xd2, 0xd0, 0xc4, 0xa2, 0xd2, 0xd0, - 0xc5, 0xa5, 0xd2, 0xd0, 0xc5, 0xa2, 0xd2, 0xd0, 0xc5, 0xa5, 0xd2, 0xd0, - 0xc6, 0xa2, 0xd2, 0xd0, 0xc6, 0xa5, 0xd2, 0xd0, 0xc6, 0xa2, 0xd2, 0xd0, - 0xc6, 0xa5, 0xd2, 0xd0, 0xc7, 0xa2, 0xd2, 0xd0, 0xc7, 0xa5, 0xd2, 0xd0, - 0xc7, 0xa2, 0xd2, 0xd0, 0xc8, 0xa5, 0xd2, 0xd0, 0xc8, 0xa2, 0xd2, 0xd0, - 0xc8, 0xa5, 0xd2, 0xd0, 0xc9, 0xa2, 0xd2, 0xd0, 0xc9, 0xa5, 0xd2, 0xd0, - 0xc9, 0xa2, 0xd2, 0xd0, 0xc9, 0xa5, 0xd2, 0xd0, 0xca, 0xa2, 0xd2, 0xd0, - 0xca, 0xa5, 0xd2, 0xd0, 0xca, 0xa2, 0xd2, 0xd0, 0xcb, 0xa5, 0xd2, 0xd0, - 0xcb, 0xa2, 0xd2, 0xd0, 0xcb, 0xa5, 0xd2, 0xd0, 0xcc, 0xa2, 0xd2, 0xd0, - 0xcc, 0xa5, 0xd2, 0xd0, 0xcc, 0xa2, 0xd2, 0xd0, 0xcc, 0xa5, 0xd2, 0xd0, - 0xcd, 0xa2, 0xd2, 0xd0, 0xcd, 0xa5, 0xd2, 0xd0, 0xcd, 0xa2, 0xd2, 0xd0, - 0xce, 0xa5, 0xd2, 0xd0, 0xce, 0xa2, 0xd3, 0xd0, 0xce, 0xa1, 0xd2, 0xd0, - 0xce, 0xa2, 0xd3, 0xd0, 0xcf, 0xa1, 0xd2, 0xd0, 0xcf, 0xa2, 0xd3, 0xd0, - 0xcf, 0xa1, 0xd2, 0xd0, 0xd0, 0xa2, 0xd3, 0xd0, 0xd0, 0xa1, 0xd2, 0xd0, - 0xd0, 0xa2, 0xd3, 0xd0, 0xd0, 0xa1, 0xd2, 0xd0, 0xd1, 0xa2, 0xd3, 0xd0, - 0xd1, 0xa1, 0xd2, 0xd0, 0xd1, 0xa2, 0xd3, 0xd0, 0xd2, 0xa1, 0xd2, 0xd0, - 0xd2, 0xa2, 0xd3, 0xd0, 0xd2, 0xa1, 0xd2, 0xd0, 0xd2, 0xa2, 0xd3, 0xd0, - 0xd2, 0xa1, 0xd3, 0xd0, 0xd2, 0xa1, 0xd3, 0xd0, 0xd2, 0xa1, 0xd4, 0xd0, - 0xd2, 0xa1, 0xd4, 0xcf, 0xd3, 0xa1, 0xd4, 0xd0, 0xd2, 0xa1, 0xd4, 0xcf, - 0xd3, 0xa1, 0xd5, 0xd0, 0xd2, 0xa1, 0xd5, 0xcf, 0xd3, 0xa1, 0xd5, 0xd0, - 0xd2, 0xa1, 0xd6, 0xcf, 0xd3, 0xa1, 0xd6, 0xd0, 0xd2, 0xa1, 0xd6, 0xcf, - 0xd3, 0xa1, 0xd6, 0xd0, 0xd2, 0xa1, 0xd7, 0xcf, 0xd3, 0xa1, 0xd7, 0xd0, - 0xd2, 0xa1, 0xd7, 0xcf, 0xd3, 0xa1, 0xd7, 0xd0, 0xd2, 0xa1, 0xd8, 0xcf, - 0xd3, 0xa1, 0xd8, 0xd0, 0xd2, 0xa1, 0xd8, 0xcf, 0xd3, 0xa1, 0xd9, 0xd0, - 0xd2, 0xa1, 0xd9, 0xcf, 0xd3, 0xa1, 0xd9, 0xd0, 0xd2, 0xa1, 0xd9, 0xcf, - 0xd3, 0xa1, 0xda, 0xc9, 0xdb, 0xa1, 0xda, 0xc9, 0xdb, 0xa1, 0xda, 0xc9, - 0xdb, 0xa1, 0xda, 0xc9, 0xdb, 0xa1, 0xdb, 0xc9, 0xdb, 0xa1, 0xdb, 0xc9, - 0xdb, 0xa1, 0xdb, 0xc9, 0xdb, 0xa1, 0xdb, 0xc9, 0xdb, 0xa1, 0xdc, 0xc9, - 0xde, 0xa1, 0xdc, 0xc9, 0xde, 0xa1, 0xdc, 0xc9, 0xde, 0xa1, 0xdd, 0xc9, - 0xde, 0xa1, 0xdd, 0xc9, 0xde, 0xa1, 0xdd, 0xc9, 0xde, 0xa1, 0xdd, 0xc9, - 0xde, 0xa1, 0xde, 0xc9, 0xde, 0xa1, 0xde, 0xc9, 0xde, 0xa1, 0xde, 0xc9, - 0xde, 0xa1, 0xde, 0xc9, 0xde, 0xa1, 0xdf, 0xca, 0xe1, 0xa1, 0xdf, 0xca, - 0xe1, 0xa1, 0xdf, 0xca, 0xe1, 0xa1, 0xdf, 0xca, 0xe1, 0xa1, 0xe0, 0xca, - 0xe1, 0xa1, 0xe0, 0xca, 0xe1, 0xa1, 0xe0, 0xca, 0xe1, 0xa1, 0xe1, 0xca, - 0xe1, 0xa1, 0xe1, 0xca, 0xe1, 0xa1, 0xe1, 0xca, 0xe1, 0xa1, 0xe1, 0xca, - 0xe1, 0xa1, 0xe2, 0xcb, 0xe4, 0xa1, 0xe2, 0xcb, 0xe4, 0xa1, 0xe2, 0xcb, - 0xe4, 0xa1, 0xe2, 0xcb, 0xe4, 0xa1, 0xe3, 0xcb, 0xe4, 0xa1, 0xe3, 0xcb, - 0xe4, 0xa1, 0xe3, 0xcb, 0xe4, 0xa1, 0xe3, 0xcb, 0xe4, 0xa1, 0xe4, 0xcb, - 0xe4, 0xa1, 0xe4, 0xcb, 0xe4, 0xa1, 0xe4, 0xcb, 0xe4, 0xa1, 0xe4, 0xcb, - 0xe6, 0xa1, 0xe5, 0xcb, 0xe7, 0xa1, 0xe5, 0xcb, 0xe6, 0xa1, 0xe5, 0xcb, - 0xe7, 0xa1, 0xe5, 0xcb, 0xe6, 0xa1, 0xe6, 0xcb, 0xe7, 0xa1, 0xe6, 0xcb, - 0xe6, 0xa1, 0xe6, 0xcb, 0xe7, 0xa1, 0xe6, 0xcb, 0xe6, 0xa1, 0xe7, 0xcb, - 0xe7, 0xa1, 0xe7, 0xd2, 0xea, 0xa1, 0xe7, 0xd0, 0xeb, 0xa1, 0xe7, 0xd2, - 0xea, 0xa1, 0xe8, 0xd0, 0xeb, 0xa1, 0xe8, 0xd2, 0xea, 0xa1, 0xe8, 0xd0, - 0xeb, 0xa1, 0xe8, 0xd2, 0xea, 0xa1, 0xe9, 0xd0, 0xeb, 0xa1, 0xe9, 0xd0, - 0xeb, 0xa1, 0xe9, 0xd0, 0xeb, 0xa1, 0xe9, 0xd0, 0xeb, 0xa1, 0xea, 0xd0, - 0xeb, 0xa1, 0xea, 0xd0, 0xeb, 0xa1, 0xea, 0xd0, 0xeb, 0xa1, 0xea, 0xd0, - 0xeb, 0xa1, 0xeb, 0xd0, 0xeb, 0xa0, 0xea, 0xd0, 0xeb, 0xa1, 0xeb, 0xd0, - 0xeb, 0xa0, 0xea, 0xd0, 0xeb, 0xa1, 0xeb, 0xd0, 0xec, 0xa0, 0xea, 0xd0, - 0xec, 0xa1, 0xed, 0xd0, 0xec, 0xa1, 0xee, 0xd0, 0xec, 0xa1, 0xed, 0xd0, - 0xec, 0xa1, 0xee, 0xd0, 0xed, 0xa1, 0xed, 0xd0, 0xed, 0xa1, 0xee, 0xd0, - 0xed, 0xa1, 0xed, 0xcf, 0xed, 0xa1, 0xee, 0xd0, 0xed, 0xa1, 0xee, 0xcf, - 0xed, 0xa1, 0xee, 0xd0, 0xed, 0xa1, 0xee, 0xcf, 0xed, 0xa1, 0xef, 0xd0, - 0xed, 0xa1, 0xef, 0xcf, 0xed, 0xa1, 0xef, 0xd0, 0xed, 0xa1, 0xef, 0xcf, - 0xed, 0xa1, 0xf0, 0xd0, 0xed, 0xa1, 0xf0, 0xcf, 0xed, 0xa1, 0xf0, 0xd0, - 0xed, 0xa1, 0xf0, 0xcf, 0xed, 0xa1, 0xf1, 0xd0, 0xed, 0xa1, 0xf1, 0xcf, - 0xed, 0xa1, 0xf1, 0xd0, 0xed, 0xa1, 0xf1, 0xcf, 0xed, 0xa1, 0xf2, 0xce, - 0xee, 0xa1, 0xf2, 0xcf, 0xed, 0xa1, 0xf2, 0xce, 0xee, 0xa1, 0xf2, 0xcf, - 0xed, 0xa1, 0xf2, 0xce, 0xee, 0xa1, 0xf3, 0xcf, 0xed, 0xa1, 0xf3, 0xce, - 0xee, 0xa1, 0xf3, 0xcf, 0xed, 0xa1, 0xf3, 0xce, 0xee, 0xa1, 0xf4, 0xcf, - 0xed, 0xa1, 0xf4, 0xce, 0xee, 0xa1, 0xf4, 0xcf, 0xed, 0xa1, 0xf4, 0xce, - 0xee, 0xa1, 0xf5, 0xcf, 0xed, 0xa1, 0xf5, 0xc7, 0xf6, 0xa1, 0xf5, 0xc7, - 0xf6, 0xa1, 0xf5, 0xc7, 0xf6, 0xa1, 0xf5, 0xc7, 0xf6, 0xa1, 0xf6, 0xc7, - 0xf6, 0xa1, 0xf6, 0xc7, 0xf6, 0xa1, 0xf6, 0xc7, 0xf6, 0xa1, 0xf6, 0xc7, - 0xf6, 0xa1, 0xf7, 0xc7, 0xf7, 0xa1, 0xf7, 0xc7, 0xf7, 0xa1, 0xf7, 0xc7, - 0xf7, 0xa1, 0xf7, 0xc7, 0xf7, 0xa1, 0xf8, 0xc7, 0xf7, 0xa1, 0xf8, 0xc7, - 0xf7, 0xa1, 0xf8, 0xc7, 0xf7, 0xa1, 0xf8, 0xc7, 0xf7, 0xa1, 0xf8, 0xc7, - 0xf7, 0xa1, 0xf9, 0xc7, 0xf7, 0xa1, 0xf9, 0xc7, 0xf7, 0xa1, 0xf9, 0xc7, - 0xf7, 0xa1, 0xf9, 0xc7, 0xf7, 0xa1, 0xfa, 0xc7, 0xf7, 0xa1, 0xfa, 0xc7, - 0xf7, 0xa1, 0xfa, 0xc7, 0xf7, 0xa1, 0xfa, 0xc7, 0xf7, 0xa1, 0xfa, 0xc7, - 0xf7, 0xa1, 0xfb, 0xc7, 0xf7, 0xa1, 0xfb, 0xc7, 0xf7, 0xa1, 0xfb, 0xc7, - 0xf7, 0xa1, 0xfb, 0xc7, 0xf7, 0xa1, 0xfc, 0xc7, 0xf7, 0xa1, 0xfc, 0xc7, - 0xf7, 0xa1, 0xfc, 0xc7, 0xf7, 0xa1, 0xfc, 0xc7, 0xf7, 0xa1, 0xfc, 0xc7, - 0xf7, 0xa1, 0xfd, 0xc7, 0xf7, 0xa1, 0xfd, 0xc7, 0xf7, 0xa1, 0xfd, 0xc7, - 0xf7, 0xa1, 0xfd, 0xc7, 0xf7, 0xa1, 0xfe, 0xc7, 0xf7, 0xa1, 0xfe, 0xc7, - 0xf7, 0xa1, 0xfe, 0xc7, 0xf7, 0xa1, 0xfe, 0xc7, 0xf7, 0xa1, 0xfe, 0xc7, - 0xf7, 0xa1, 0xff, 0xc7, 0xf7, 0xa1, 0xff, 0xc7, 0xf7, 0xa1, 0x03, 0xd4, - 0x8c, 0xa1, 0x0a, 0xd6, 0x8c, 0xa1, 0x0f, 0xd4, 0x8c, 0xa1, 0x14, 0xd6, - 0x8c, 0xa1, 0x17, 0xd4, 0x8c, 0xa1, 0x1b, 0xd6, 0x8c, 0xa1, 0x1e, 0xd4, - 0x8c, 0xa1, 0x20, 0xd6, 0x8c, 0xa1, 0x23, 0xd4, 0x8c, 0xa1, 0x25, 0xd6, - 0x8c, 0xa1, 0x27, 0xd4, 0x8c, 0xa1, 0x29, 0xd6, 0x8c, 0xa1, 0x2b, 0xd4, - 0x8c, 0xa1, 0x2d, 0xd6, 0x8c, 0xa1, 0x2f, 0xd4, 0x8c, 0xa1, 0x31, 0xd6, - 0x8c, 0xa1, 0x32, 0xd4, 0x8c, 0xa1, 0x34, 0xd6, 0x8c, 0xa1, 0x35, 0xd4, - 0x8c, 0xa1, 0x37, 0xd6, 0x8c, 0xa1, 0x38, 0xd4, 0x8c, 0xa1, 0x3a, 0xd6, - 0x8c, 0xa1, 0x3b, 0xd4, 0x8c, 0xa1, 0x3c, 0xd6, 0x8c, 0xa1, 0x3e, 0xd4, - 0x8c, 0xa1, 0x3f, 0xd6, 0x8c, 0xa1, 0x40, 0xd4, 0x8c, 0xa1, 0x42, 0xd6, - 0x8c, 0xa1, 0x43, 0xd4, 0x8c, 0xa1, 0x44, 0xd6, 0x8c, 0xa1, 0x45, 0xd4, - 0x8c, 0xa1, 0x46, 0xd2, 0x8d, 0xa1, 0x47, 0xd4, 0x8c, 0xa1, 0x48, 0xd2, - 0x8d, 0xa1, 0x49, 0xd4, 0x8c, 0xa1, 0x4a, 0xd2, 0x8d, 0xa1, 0x4b, 0xd4, - 0x8c, 0xa1, 0x4c, 0xd2, 0x8d, 0xa1, 0x4d, 0xd4, 0x8c, 0xa1, 0x4e, 0xd2, - 0x8d, 0xa1, 0x4f, 0xd4, 0x8c, 0xa1, 0x50, 0xd2, 0x8d, 0xa1, 0x51, 0xd4, - 0x8c, 0xa1, 0x52, 0xd2, 0x8d, 0xa1, 0x53, 0xd4, 0x8c, 0xa1, 0x54, 0xd2, - 0x8d, 0xa1, 0x55, 0xd4, 0x8c, 0xa1, 0x56, 0xd2, 0x8d, 0xa1, 0x57, 0xd4, - 0x8c, 0xa1, 0x58, 0xd2, 0x8d, 0xa1, 0x58, 0xd4, 0x8c, 0xa1, 0x59, 0xd2, - 0x8d, 0xa1, 0x5a, 0xd4, 0x8c, 0xa1, 0x5b, 0xd2, 0x8d, 0xa1, 0x5c, 0xd4, - 0x8c, 0xa1, 0x5d, 0xd2, 0x8d, 0xa1, 0x5d, 0xd4, 0x8c, 0xa1, 0x5e, 0xd2, - 0x8d, 0xa1, 0x5f, 0xd4, 0x8c, 0xa1, 0x60, 0xd2, 0x8d, 0xa1, 0x60, 0xd4, - 0x8c, 0xa1, 0x61, 0xd2, 0x8d, 0xa1, 0x62, 0xd4, 0x8c, 0xa1, 0x63, 0xd2, - 0x8d, 0xa1, 0x63, 0xd4, 0x8c, 0xa1, 0x64, 0xd2, 0x8d, 0xa1, 0x65, 0xd4, - 0x8c, 0xa1, 0x66, 0xd2, 0x8d, 0xa1, 0x66, 0xd4, 0x8c, 0xa1, 0x67, 0xd2, - 0x8d, 0xa1, 0x68, 0xd4, 0x8c, 0xa1, 0x68, 0xd2, 0x8d, 0xa1, 0x69, 0xd4, - 0x8c, 0xa1, 0x6a, 0xd2, 0x8d, 0xa1, 0x6a, 0xd4, 0x8c, 0xa1, 0x6b, 0xd2, - 0x8d, 0xa1, 0x6c, 0xd4, 0x8c, 0xa1, 0x6c, 0xd2, 0x8d, 0xa1, 0x6d, 0xd4, - 0x8c, 0xa1, 0x6e, 0xd2, 0x8d, 0xa1, 0x6e, 0xd4, 0x8c, 0xa1, 0x6f, 0xd2, - 0x8d, 0xa1, 0x70, 0xd4, 0x8c, 0xa1, 0x70, 0xd2, 0x8d, 0xa1, 0x71, 0xd4, - 0x8c, 0xa1, 0x72, 0xd2, 0x8d, 0xa1, 0x72, 0xd4, 0x8c, 0xa1, 0x73, 0xd2, - 0x8d, 0xa1, 0x73, 0xd1, 0x8d, 0xa1, 0x74, 0xd2, 0x8d, 0xa1, 0x75, 0xd1, - 0x8d, 0xa1, 0x75, 0xd2, 0x8d, 0xa1, 0x76, 0xd1, 0x8d, 0xa1, 0x76, 0xd2, - 0x8d, 0xa1, 0x77, 0xd1, 0x8d, 0xa1, 0x78, 0xd2, 0x8d, 0xa1, 0x78, 0xd1, - 0x8d, 0xa1, 0x79, 0xd2, 0x8d, 0xa1, 0x79, 0xd1, 0x8d, 0xa1, 0x7a, 0xd2, - 0x8d, 0xa1, 0x7a, 0xd1, 0x8d, 0xa1, 0x7b, 0xd2, 0x8d, 0xa1, 0x7c, 0xd1, - 0x8d, 0xa1, 0x7c, 0xd2, 0x8d, 0xa1, 0x7d, 0xd1, 0x8d, 0xa1, 0x7d, 0xd2, - 0x8d, 0xa1, 0x7e, 0xd1, 0x8d, 0xa1, 0x7e, 0xd2, 0x8d, 0xa1, 0x7f, 0xd1, - 0x8d, 0xa1, 0x7f, 0xd2, 0x8d, 0xa1, 0x80, 0xd1, 0x8d, 0xa1, 0x81, 0xd2, - 0x8d, 0xa1, 0x81, 0xd1, 0x8d, 0xa1, 0x82, 0xd2, 0x8d, 0xa1, 0x82, 0xd1, - 0x8d, 0xa1, 0x83, 0xd2, 0x8d, 0xa1, 0x83, 0xd1, 0x8d, 0xa1, 0x84, 0xd2, - 0x8d, 0xa1, 0x84, 0xd1, 0x8d, 0xa1, 0x85, 0xd2, 0x8d, 0xa1, 0x85, 0xd1, - 0x8d, 0xa1, 0x86, 0xd0, 0x8e, 0xa1, 0x86, 0xd1, 0x8d, 0xa1, 0x87, 0xd0, - 0x8e, 0xa1, 0x87, 0xd1, 0x8d, 0xa1, 0x88, 0xd0, 0x8e, 0xa1, 0x88, 0xd1, - 0x8d, 0xa1, 0x89, 0xd0, 0x8e, 0xa1, 0x89, 0xd1, 0x8d, 0xa1, 0x8a, 0xd0, - 0x8e, 0xa1, 0x8a, 0xd1, 0x8d, 0xa1, 0x8b, 0xd0, 0x8e, 0xa1, 0x8b, 0xd1, - 0x8d, 0xa1, 0x8c, 0xd0, 0x8e, 0xa1, 0x8c, 0xd1, 0x8d, 0xa1, 0x8d, 0xd0, - 0x8e, 0xa1, 0x8d, 0xd1, 0x8d, 0xa1, 0x8d, 0xd0, 0x8e, 0xa1, 0x8d, 0xd0, - 0x8e, 0xa1, 0x8d, 0xd0, 0x8e, 0xa1, 0x8d, 0xd0, 0x8f, 0xa1, 0x8d, 0xd0, - 0x8f, 0xa1, 0x8d, 0xd0, 0x90, 0xa1, 0x8d, 0xd0, 0x90, 0xa1, 0x8d, 0xd0, - 0x91, 0xa1, 0x8e, 0xd0, 0x91, 0x9e, 0x8d, 0xd0, 0x92, 0xa1, 0x8e, 0xd0, - 0x92, 0x9e, 0x8d, 0xd0, 0x93, 0xa1, 0x8e, 0xd0, 0x93, 0x9e, 0x8d, 0xd0, - 0x94, 0xa1, 0x8e, 0xd0, 0x94, 0x9e, 0x8d, 0xd0, 0x94, 0xa1, 0x8e, 0xd0, - 0x95, 0x9e, 0x8d, 0xd0, 0x95, 0xa1, 0x8e, 0xd0, 0x96, 0x9e, 0x8d, 0xd0, - 0x96, 0xa1, 0x8e, 0xd0, 0x97, 0x9e, 0x8d, 0xd0, 0x97, 0xa1, 0x8e, 0xd0, - 0x98, 0x9e, 0x98, 0xd0, 0x98, 0x95, 0x98, 0xd0, 0x98, 0x95, 0x9c, 0xd0, - 0x99, 0x96, 0x9d, 0xd0, 0x99, 0x96, 0x9c, 0xd0, 0x9a, 0x96, 0x9d, 0xd0, - 0x9a, 0x96, 0x9c, 0xd0, 0x9a, 0x96, 0x9d, 0xd0, 0x9b, 0x96, 0x9c, 0xd0, - 0x9b, 0x96, 0x9d, 0xd0, 0x9c, 0x96, 0x9c, 0xd0, 0x9c, 0x96, 0x9d, 0xd0, - 0x9d, 0x96, 0x9d, 0xd0, 0x9d, 0x96, 0xa1, 0xd0, 0x9d, 0x97, 0xa1, 0xd0, - 0x9e, 0x97, 0xa1, 0xd0, 0x9e, 0x97, 0xa1, 0xd0, 0x9f, 0x97, 0xa1, 0xd0, - 0x9f, 0x97, 0xa1, 0xd0, 0x9f, 0x97, 0xa1, 0xd0, 0xa0, 0x97, 0xa1, 0xd0, - 0xa0, 0x97, 0xa1, 0xd0, 0xa1, 0x97, 0xa1, 0xd0, 0xa1, 0x97, 0xa1, 0xd0, - 0xa1, 0x97, 0xa2, 0xd0, 0xa2, 0x97, 0xa2, 0xd0, 0xa2, 0x97, 0xa3, 0xd0, - 0xa3, 0x97, 0xa3, 0xd0, 0xa3, 0x97, 0xa3, 0xd0, 0xa3, 0x97, 0xa3, 0xd0, - 0xa4, 0x97, 0xa3, 0xd0, 0xa4, 0x97, 0xa3, 0xd0, 0xa5, 0x97, 0xa3, 0xd0, - 0xa5, 0x97, 0xa3, 0xd0, 0xa5, 0x97, 0xa3, 0xd0, 0xa6, 0x97, 0xa3, 0xd0, - 0xa6, 0x97, 0xa3, 0xd0, 0xa6, 0x97, 0xa3, 0xd0, 0xa7, 0x97, 0xa3, 0xd0, - 0xa7, 0x97, 0xa3, 0xd0, 0xa8, 0x97, 0xa3, 0xd0, 0xa8, 0x97, 0xa3, 0xd0, - 0xa8, 0x97, 0xa3, 0xd0, 0xa9, 0x97, 0xa3, 0xd0, 0xa9, 0x97, 0xa3, 0xd0, - 0xaa, 0x97, 0xa3, 0xd0, 0xaa, 0x97, 0xa3, 0xd0, 0xaa, 0x97, 0xa3, 0xd0, - 0xab, 0x97, 0xa3, 0xd0, 0xab, 0x97, 0xa3, 0xd0, 0xab, 0x97, 0xa3, 0xd0, - 0xac, 0x97, 0xa3, 0xd0, 0xac, 0x97, 0xa3, 0xd0, 0xac, 0x97, 0xa3, 0xd0, - 0xad, 0x97, 0xa3, 0xd0, 0xad, 0x97, 0xa3, 0xd0, 0xae, 0x97, 0xa3, 0xd0, - 0xae, 0x97, 0xa3, 0xd0, 0xae, 0x97, 0xa3, 0xd0, 0xaf, 0x97, 0xa3, 0xd0, - 0xaf, 0x97, 0xa3, 0xd0, 0xaf, 0x97, 0xa3, 0xd0, 0xb0, 0x97, 0xa3, 0xd0, - 0xb0, 0x97, 0xa3, 0xd0, 0xb0, 0x97, 0xa3, 0xd0, 0xb1, 0x97, 0xa3, 0xd0, - 0xb1, 0x97, 0xa3, 0xd0, 0xb2, 0x97, 0xa3, 0xd0, 0xb2, 0x97, 0xa3, 0xd0, - 0xb2, 0x97, 0xa3, 0xd0, 0xb3, 0x97, 0xa3, 0xd0, 0xb3, 0x97, 0xa3, 0xd0, - 0xb3, 0x97, 0xa3, 0xd0, 0xb4, 0x97, 0xa3, 0xd0, 0xb4, 0x97, 0xa3, 0xd0, - 0xb4, 0x97, 0xa3, 0xd0, 0xb5, 0x97, 0xa3, 0xd0, 0xb5, 0x97, 0xa3, 0xd0, - 0xb5, 0x97, 0xa3, 0xd0, 0xb6, 0x97, 0xa3, 0xd0, 0xb6, 0x97, 0xa3, 0xd0, - 0xb6, 0x97, 0xa3, 0xd0, 0xb7, 0x97, 0xa3, 0xd0, 0xb7, 0x97, 0xa3, 0xd0, - 0xb7, 0x97, 0xa3, 0xd0, 0xb8, 0x97, 0xa3, 0xd0, 0xb8, 0x97, 0xa3, 0xd0, - 0xb8, 0x97, 0xa3, 0xd0, 0xb9, 0x97, 0xa3, 0xd0, 0xb9, 0x97, 0xa3, 0xd0, - 0xb9, 0x97, 0xa3, 0xd0, 0xba, 0x97, 0xa3, 0xd0, 0xba, 0x97, 0xa3, 0xd0, - 0xba, 0x97, 0xa3, 0xd0, 0xbb, 0x97, 0xa3, 0xd0, 0xbb, 0x97, 0xa3, 0xd0, - 0xbb, 0x97, 0xa3, 0xd0, 0xbc, 0x97, 0xa4, 0xd0, 0xbc, 0x94, 0xd2, 0xd0, - 0xbc, 0xa4, 0xd2, 0xd0, 0xbd, 0xa7, 0xd2, 0xd0, 0xbd, 0xa4, 0xd2, 0xd0, - 0xbd, 0xa7, 0xd2, 0xd0, 0xbe, 0xa4, 0xd2, 0xd0, 0xbe, 0xa7, 0xd2, 0xd0, - 0xbe, 0xa4, 0xd2, 0xd0, 0xbf, 0xa7, 0xd2, 0xd0, 0xbf, 0xa4, 0xd2, 0xd0, - 0xbf, 0xa7, 0xd2, 0xd0, 0xc0, 0xa4, 0xd2, 0xd0, 0xc0, 0xa7, 0xd2, 0xd0, - 0xc0, 0xa4, 0xd2, 0xd0, 0xc1, 0xa7, 0xd2, 0xd0, 0xc1, 0xa4, 0xd2, 0xd0, - 0xc1, 0xa7, 0xd2, 0xd0, 0xc1, 0xa4, 0xd2, 0xd0, 0xc2, 0xa7, 0xd2, 0xd0, - 0xc2, 0xa4, 0xd2, 0xd0, 0xc2, 0xa7, 0xd2, 0xd0, 0xc3, 0xa4, 0xd2, 0xd0, - 0xc3, 0xa7, 0xd2, 0xd0, 0xc3, 0xa4, 0xd2, 0xd0, 0xc4, 0xa7, 0xd2, 0xd0, - 0xc4, 0xa4, 0xd2, 0xd0, 0xc4, 0xa7, 0xd2, 0xd0, 0xc5, 0xa4, 0xd2, 0xd0, - 0xc5, 0xa7, 0xd2, 0xd0, 0xc5, 0xa4, 0xd2, 0xd0, 0xc6, 0xa7, 0xd2, 0xd0, - 0xc6, 0xa4, 0xd2, 0xd0, 0xc6, 0xa7, 0xd2, 0xd0, 0xc6, 0xa4, 0xd2, 0xd0, - 0xc7, 0xa7, 0xd2, 0xd0, 0xc7, 0xa4, 0xd2, 0xd0, 0xc7, 0xa7, 0xd2, 0xd0, - 0xc8, 0xa4, 0xd2, 0xd0, 0xc8, 0xa2, 0xd2, 0xd0, 0xc8, 0xa4, 0xd2, 0xd0, - 0xc9, 0xa2, 0xd2, 0xd0, 0xc9, 0xa4, 0xd2, 0xd0, 0xc9, 0xa2, 0xd2, 0xd0, - 0xc9, 0xa4, 0xd2, 0xd0, 0xca, 0xa2, 0xd2, 0xd0, 0xca, 0xa4, 0xd2, 0xd0, - 0xca, 0xa2, 0xd2, 0xd0, 0xcb, 0xa4, 0xd2, 0xd0, 0xcb, 0xa2, 0xd2, 0xd0, - 0xcb, 0xa4, 0xd2, 0xd0, 0xcc, 0xa2, 0xd2, 0xd0, 0xcc, 0xa4, 0xd2, 0xd0, - 0xcc, 0xa2, 0xd2, 0xd0, 0xcc, 0xa4, 0xd2, 0xd0, 0xcd, 0xa2, 0xd2, 0xd0, - 0xcd, 0xa4, 0xd2, 0xd0, 0xcd, 0xa2, 0xd2, 0xd0, 0xce, 0xa4, 0xd2, 0xd0, - 0xce, 0xa2, 0xd2, 0xd0, 0xce, 0xa4, 0xd2, 0xd0, 0xce, 0xa2, 0xd2, 0xd0, - 0xcf, 0xa4, 0xd2, 0xd0, 0xcf, 0xa2, 0xd2, 0xd0, 0xcf, 0xa4, 0xd2, 0xd0, - 0xd0, 0xa2, 0xd2, 0xd0, 0xd0, 0xa4, 0xd2, 0xd0, 0xd0, 0xa2, 0xd3, 0xd0, - 0xd0, 0xa1, 0xd2, 0xd0, 0xd1, 0xa2, 0xd3, 0xd0, 0xd1, 0xa1, 0xd2, 0xd0, - 0xd1, 0xa2, 0xd3, 0xd0, 0xd2, 0xa1, 0xd2, 0xd0, 0xd2, 0xa2, 0xd3, 0xd0, - 0xd2, 0xa1, 0xd2, 0xd0, 0xd2, 0xa2, 0xd3, 0xd0, 0xd2, 0xa1, 0xd3, 0xd0, - 0xd2, 0xa1, 0xd3, 0xd0, 0xd2, 0xa1, 0xd4, 0xd0, 0xd2, 0xa1, 0xd4, 0xd0, - 0xd2, 0xa1, 0xd4, 0xd0, 0xd2, 0xa1, 0xd4, 0xd0, 0xd2, 0xa1, 0xd5, 0xd0, - 0xd2, 0xa1, 0xd5, 0xce, 0xd3, 0xa1, 0xd5, 0xd0, 0xd2, 0xa1, 0xd6, 0xce, - 0xd3, 0xa1, 0xd6, 0xd0, 0xd2, 0xa1, 0xd6, 0xce, 0xd3, 0xa1, 0xd6, 0xd0, - 0xd2, 0xa1, 0xd7, 0xce, 0xd3, 0xa1, 0xd7, 0xd0, 0xd2, 0xa1, 0xd7, 0xce, - 0xd3, 0xa1, 0xd7, 0xd0, 0xd2, 0xa1, 0xd8, 0xce, 0xd3, 0xa1, 0xd8, 0xd0, - 0xd2, 0xa1, 0xd8, 0xce, 0xd3, 0xa1, 0xd9, 0xd0, 0xd2, 0xa1, 0xd9, 0xce, - 0xd3, 0xa1, 0xd9, 0xd0, 0xd2, 0xa1, 0xd9, 0xce, 0xd3, 0xa1, 0xda, 0xc9, - 0xda, 0xa1, 0xda, 0xc9, 0xda, 0xa1, 0xda, 0xc9, 0xdc, 0xa1, 0xda, 0xc9, - 0xdd, 0xa1, 0xdb, 0xc9, 0xdc, 0xa1, 0xdb, 0xc9, 0xdd, 0xa1, 0xdb, 0xc9, - 0xdc, 0xa1, 0xdb, 0xc9, 0xdd, 0xa1, 0xdc, 0xc9, 0xdc, 0xa1, 0xdc, 0xc9, - 0xdd, 0xa1, 0xdc, 0xc9, 0xdc, 0xa1, 0xdd, 0xc9, 0xdd, 0xa1, 0xdd, 0xc9, - 0xdd, 0xa1, 0xdd, 0xca, 0xdf, 0xa1, 0xdd, 0xca, 0xdf, 0xa1, 0xde, 0xca, - 0xdf, 0xa1, 0xde, 0xca, 0xdf, 0xa1, 0xde, 0xca, 0xdf, 0xa1, 0xde, 0xca, - 0xdf, 0xa1, 0xdf, 0xca, 0xdf, 0xa1, 0xdf, 0xca, 0xdf, 0xa1, 0xdf, 0xca, - 0xdf, 0xa1, 0xdf, 0xca, 0xdf, 0xa1, 0xe0, 0xca, 0xe0, 0xa1, 0xe0, 0xca, - 0xe2, 0xa1, 0xe0, 0xca, 0xe2, 0xa1, 0xe1, 0xca, 0xe2, 0xa1, 0xe1, 0xca, - 0xe2, 0xa1, 0xe1, 0xca, 0xe2, 0xa1, 0xe1, 0xca, 0xe2, 0xa1, 0xe2, 0xca, - 0xe2, 0xa1, 0xe2, 0xca, 0xe2, 0xa1, 0xe2, 0xca, 0xe2, 0xa1, 0xe2, 0xca, - 0xe2, 0xa1, 0xe3, 0xca, 0xe3, 0xa1, 0xe3, 0xcb, 0xe5, 0xa1, 0xe3, 0xcb, - 0xe5, 0xa1, 0xe3, 0xcb, 0xe5, 0xa1, 0xe4, 0xcb, 0xe5, 0xa1, 0xe4, 0xcb, - 0xe5, 0xa1, 0xe4, 0xcb, 0xe5, 0xa1, 0xe4, 0xcb, 0xe5, 0xa1, 0xe5, 0xcb, - 0xe5, 0xa1, 0xe5, 0xcb, 0xe5, 0xa1, 0xe5, 0xcb, 0xe5, 0xa1, 0xe5, 0xcb, - 0xe5, 0xa1, 0xe6, 0xcc, 0xe8, 0xa1, 0xe6, 0xcc, 0xe8, 0xa1, 0xe6, 0xcc, - 0xe8, 0xa1, 0xe6, 0xcc, 0xe8, 0xa1, 0xe7, 0xd0, 0xeb, 0xa1, 0xe7, 0xd2, - 0xea, 0xa1, 0xe7, 0xd0, 0xeb, 0xa1, 0xe7, 0xd2, 0xea, 0xa1, 0xe8, 0xd0, - 0xeb, 0xa1, 0xe8, 0xd2, 0xea, 0xa1, 0xe8, 0xd0, 0xeb, 0xa1, 0xe8, 0xd2, - 0xea, 0xa1, 0xe9, 0xd0, 0xeb, 0xa1, 0xe9, 0xd0, 0xeb, 0xa1, 0xe9, 0xd0, - 0xeb, 0xa1, 0xe9, 0xd0, 0xeb, 0xa1, 0xea, 0xd0, 0xeb, 0xa1, 0xea, 0xd0, - 0xeb, 0xa1, 0xea, 0xd0, 0xeb, 0xa1, 0xea, 0xd0, 0xeb, 0xa1, 0xeb, 0xd0, - 0xeb, 0xa0, 0xea, 0xd0, 0xeb, 0xa1, 0xeb, 0xd0, 0xeb, 0xa0, 0xea, 0xd0, - 0xeb, 0xa1, 0xeb, 0xd0, 0xec, 0xa0, 0xea, 0xd0, 0xec, 0xa1, 0xed, 0xd0, - 0xec, 0xa1, 0xee, 0xd0, 0xec, 0xa1, 0xed, 0xd0, 0xec, 0xa1, 0xee, 0xd0, - 0xed, 0xa1, 0xed, 0xd0, 0xed, 0xa1, 0xee, 0xd0, 0xed, 0xa1, 0xed, 0xd0, - 0xed, 0xa1, 0xee, 0xd0, 0xed, 0xa1, 0xee, 0xd0, 0xed, 0xa1, 0xee, 0xd0, - 0xed, 0xa1, 0xee, 0xd0, 0xed, 0xa1, 0xef, 0xd0, 0xed, 0xa1, 0xef, 0xd0, - 0xed, 0xa1, 0xef, 0xd0, 0xed, 0xa1, 0xef, 0xd0, 0xed, 0xa1, 0xf0, 0xd0, - 0xed, 0xa1, 0xf0, 0xd0, 0xed, 0xa1, 0xf0, 0xd0, 0xed, 0xa1, 0xf0, 0xd0, - 0xed, 0xa1, 0xf1, 0xd0, 0xed, 0xa1, 0xf1, 0xd0, 0xed, 0xa1, 0xf1, 0xd0, - 0xed, 0xa1, 0xf1, 0xd0, 0xed, 0xa1, 0xf2, 0xd0, 0xed, 0xa1, 0xf2, 0xd0, - 0xed, 0xa1, 0xf2, 0xd0, 0xed, 0xa1, 0xf2, 0xd0, 0xed, 0xa1, 0xf2, 0xd0, - 0xed, 0xa1, 0xf3, 0xd0, 0xed, 0xa1, 0xf3, 0xd0, 0xed, 0xa1, 0xf3, 0xd0, - 0xed, 0xa1, 0xf3, 0xcd, 0xee, 0xa1, 0xf4, 0xd0, 0xed, 0xa1, 0xf4, 0xcd, - 0xee, 0xa1, 0xf4, 0xd0, 0xed, 0xa1, 0xf4, 0xcd, 0xee, 0xa1, 0xf5, 0xd0, - 0xed, 0xa1, 0xf5, 0xcd, 0xee, 0xa1, 0xf5, 0xc7, 0xf5, 0xa1, 0xf5, 0xc7, - 0xf5, 0xa1, 0xf5, 0xc7, 0xf5, 0xa1, 0xf6, 0xc7, 0xf6, 0xa1, 0xf6, 0xc7, - 0xf6, 0xa1, 0xf6, 0xc7, 0xf6, 0xa1, 0xf6, 0xc7, 0xf6, 0xa1, 0xf7, 0xc7, - 0xf7, 0xa1, 0xf7, 0xc7, 0xf7, 0xa1, 0xf7, 0xc7, 0xf7, 0xa1, 0xf7, 0xc7, - 0xf7, 0xa1, 0xf8, 0xc7, 0xf7, 0xa1, 0xf8, 0xc7, 0xf7, 0xa1, 0xf8, 0xc7, - 0xf7, 0xa1, 0xf8, 0xc7, 0xf7, 0xa1, 0xf8, 0xc7, 0xf7, 0xa1, 0xf9, 0xc7, - 0xf7, 0xa1, 0xf9, 0xc7, 0xf7, 0xa1, 0xf9, 0xc7, 0xf7, 0xa1, 0xf9, 0xc7, - 0xf7, 0xa1, 0xfa, 0xc7, 0xf7, 0xa1, 0xfa, 0xc7, 0xf7, 0xa1, 0xfa, 0xc7, - 0xf7, 0xa1, 0xfa, 0xc7, 0xf7, 0xa1, 0xfa, 0xc7, 0xf7, 0xa1, 0xfb, 0xc7, - 0xf7, 0xa1, 0xfb, 0xc7, 0xf7, 0xa1, 0xfb, 0xc7, 0xf7, 0xa1, 0xfb, 0xc7, - 0xf7, 0xa1, 0xfc, 0xc7, 0xf7, 0xa1, 0xfc, 0xc7, 0xf7, 0xa1, 0xfc, 0xc7, - 0xf7, 0xa1, 0xfc, 0xc7, 0xf7, 0xa1, 0xfc, 0xc7, 0xf7, 0xa1, 0xfd, 0xc7, - 0xf7, 0xa1, 0xfd, 0xc7, 0xf7, 0xa1, 0xfd, 0xc7, 0xf7, 0xa1, 0xfd, 0xc7, - 0xf7, 0xa1, 0xfe, 0xc7, 0xf7, 0xa1, 0xfe, 0xc7, 0xf7, 0xa1, 0xfe, 0xc7, - 0xf7, 0xa1, 0xfe, 0xc7, 0xf7, 0xa1, 0xfe, 0xc7, 0xf7, 0xa1, 0xff, 0xc6, - 0xf8, 0xa1, 0xff, 0xc7, 0xf7, 0xa1, 0x03, 0xd4, 0x8c, 0xa2, 0x0a, 0xd6, - 0x8c, 0xa2, 0x0f, 0xd4, 0x8c, 0xa2, 0x14, 0xd6, 0x8c, 0xa2, 0x17, 0xd4, - 0x8c, 0xa2, 0x1b, 0xd6, 0x8c, 0xa2, 0x1e, 0xd4, 0x8c, 0xa2, 0x20, 0xd6, - 0x8c, 0xa2, 0x23, 0xd4, 0x8c, 0xa2, 0x25, 0xd6, 0x8c, 0xa2, 0x27, 0xd4, - 0x8c, 0xa2, 0x29, 0xd6, 0x8c, 0xa2, 0x2b, 0xd4, 0x8c, 0xa2, 0x2d, 0xd6, - 0x8c, 0xa2, 0x2f, 0xd4, 0x8c, 0xa2, 0x31, 0xd6, 0x8c, 0xa2, 0x32, 0xd4, - 0x8c, 0xa2, 0x34, 0xd6, 0x8c, 0xa2, 0x35, 0xd4, 0x8c, 0xa2, 0x37, 0xd6, - 0x8c, 0xa2, 0x38, 0xd4, 0x8c, 0xa2, 0x3a, 0xd6, 0x8c, 0xa2, 0x3b, 0xd4, - 0x8c, 0xa2, 0x3c, 0xd6, 0x8c, 0xa2, 0x3e, 0xd4, 0x8c, 0xa2, 0x3f, 0xd6, - 0x8c, 0xa2, 0x40, 0xd4, 0x8c, 0xa2, 0x42, 0xd6, 0x8c, 0xa2, 0x43, 0xd4, - 0x8c, 0xa2, 0x44, 0xd6, 0x8c, 0xa2, 0x45, 0xd4, 0x8c, 0xa2, 0x46, 0xd6, - 0x8c, 0xa2, 0x47, 0xd4, 0x8c, 0xa2, 0x48, 0xd6, 0x8c, 0xa2, 0x49, 0xd4, - 0x8c, 0xa2, 0x4a, 0xd6, 0x8c, 0xa2, 0x4b, 0xd4, 0x8c, 0xa2, 0x4c, 0xd6, - 0x8c, 0xa2, 0x4d, 0xd4, 0x8c, 0xa2, 0x4e, 0xd6, 0x8c, 0xa2, 0x4f, 0xd4, - 0x8c, 0xa2, 0x50, 0xd6, 0x8c, 0xa2, 0x51, 0xd4, 0x8c, 0xa2, 0x52, 0xd6, - 0x8c, 0xa2, 0x53, 0xd4, 0x8c, 0xa2, 0x54, 0xd6, 0x8c, 0xa2, 0x55, 0xd4, - 0x8c, 0xa2, 0x56, 0xd6, 0x8c, 0xa2, 0x57, 0xd4, 0x8c, 0xa2, 0x58, 0xd6, - 0x8c, 0xa2, 0x58, 0xd4, 0x8c, 0xa2, 0x59, 0xd3, 0x8d, 0xa2, 0x5a, 0xd4, - 0x8c, 0xa2, 0x5b, 0xd3, 0x8d, 0xa2, 0x5c, 0xd4, 0x8c, 0xa2, 0x5d, 0xd3, - 0x8d, 0xa2, 0x5d, 0xd4, 0x8c, 0xa2, 0x5e, 0xd3, 0x8d, 0xa2, 0x5f, 0xd4, - 0x8c, 0xa2, 0x60, 0xd3, 0x8d, 0xa2, 0x60, 0xd4, 0x8c, 0xa2, 0x61, 0xd3, - 0x8d, 0xa2, 0x62, 0xd4, 0x8c, 0xa2, 0x63, 0xd3, 0x8d, 0xa2, 0x63, 0xd4, - 0x8c, 0xa2, 0x64, 0xd3, 0x8d, 0xa2, 0x65, 0xd4, 0x8c, 0xa2, 0x66, 0xd3, - 0x8d, 0xa2, 0x66, 0xd4, 0x8c, 0xa2, 0x67, 0xd3, 0x8d, 0xa2, 0x68, 0xd4, - 0x8c, 0xa2, 0x68, 0xd3, 0x8d, 0xa2, 0x69, 0xd4, 0x8c, 0xa2, 0x6a, 0xd3, - 0x8d, 0xa2, 0x6a, 0xd4, 0x8c, 0xa2, 0x6b, 0xd3, 0x8d, 0xa2, 0x6c, 0xd4, - 0x8c, 0xa2, 0x6c, 0xd3, 0x8d, 0xa2, 0x6d, 0xd4, 0x8c, 0xa2, 0x6e, 0xd3, - 0x8d, 0xa2, 0x6e, 0xd4, 0x8c, 0xa2, 0x6f, 0xd3, 0x8d, 0xa2, 0x70, 0xd4, - 0x8c, 0xa2, 0x70, 0xd3, 0x8d, 0xa2, 0x71, 0xd4, 0x8c, 0xa2, 0x72, 0xd3, - 0x8d, 0xa2, 0x72, 0xd4, 0x8c, 0xa2, 0x73, 0xd3, 0x8d, 0xa2, 0x73, 0xd0, - 0x8d, 0xa2, 0x74, 0xd3, 0x8d, 0xa2, 0x75, 0xd0, 0x8d, 0xa2, 0x75, 0xd3, - 0x8d, 0xa2, 0x76, 0xd0, 0x8d, 0xa2, 0x76, 0xd3, 0x8d, 0xa2, 0x77, 0xd0, - 0x8d, 0xa2, 0x78, 0xd3, 0x8d, 0xa2, 0x78, 0xd0, 0x8d, 0xa2, 0x79, 0xd3, - 0x8d, 0xa2, 0x79, 0xd0, 0x8d, 0xa2, 0x7a, 0xd3, 0x8d, 0xa2, 0x7a, 0xd0, - 0x8d, 0xa2, 0x7b, 0xd3, 0x8d, 0xa2, 0x7c, 0xd0, 0x8d, 0xa2, 0x7c, 0xd3, - 0x8d, 0xa2, 0x7d, 0xd0, 0x8d, 0xa2, 0x7d, 0xd3, 0x8d, 0xa2, 0x7e, 0xd0, - 0x8d, 0xa2, 0x7e, 0xd3, 0x8d, 0xa2, 0x7f, 0xd0, 0x8d, 0xa2, 0x7f, 0xd3, - 0x8d, 0xa2, 0x80, 0xd0, 0x8d, 0xa2, 0x81, 0xd3, 0x8d, 0xa2, 0x81, 0xd0, - 0x8d, 0xa2, 0x82, 0xd3, 0x8d, 0xa2, 0x82, 0xd0, 0x8d, 0xa2, 0x83, 0xd3, - 0x8d, 0xa2, 0x83, 0xd0, 0x8d, 0xa2, 0x84, 0xd3, 0x8d, 0xa2, 0x84, 0xd0, - 0x8d, 0xa2, 0x85, 0xd3, 0x8d, 0xa2, 0x85, 0xd0, 0x8d, 0xa2, 0x86, 0xd0, - 0x8e, 0xa2, 0x86, 0xd0, 0x8d, 0xa2, 0x87, 0xd0, 0x8e, 0xa2, 0x87, 0xd0, - 0x8d, 0xa2, 0x88, 0xd0, 0x8e, 0xa2, 0x88, 0xd0, 0x8d, 0xa2, 0x89, 0xd0, - 0x8e, 0xa2, 0x89, 0xd0, 0x8d, 0xa2, 0x8a, 0xd0, 0x8e, 0xa2, 0x8a, 0xd0, - 0x8d, 0xa2, 0x8b, 0xd0, 0x8e, 0xa2, 0x8b, 0xd0, 0x8d, 0xa2, 0x8c, 0xd0, - 0x8e, 0xa2, 0x8c, 0xd0, 0x8d, 0xa2, 0x8d, 0xd0, 0x8e, 0xa2, 0x8d, 0xd0, - 0x8d, 0xa1, 0x8d, 0xd0, 0x8e, 0xa2, 0x8d, 0xd0, 0x8e, 0xa1, 0x8d, 0xd0, - 0x8e, 0xa2, 0x8d, 0xd0, 0x8f, 0xa1, 0x8d, 0xd0, 0x8f, 0xa2, 0x8d, 0xd0, - 0x90, 0xa1, 0x8d, 0xd0, 0x90, 0xa2, 0x8d, 0xd0, 0x91, 0xa1, 0x8d, 0xd0, - 0x91, 0xa2, 0x8d, 0xd0, 0x92, 0xa1, 0x8d, 0xd0, 0x92, 0xa2, 0x8d, 0xd0, - 0x93, 0xa1, 0x8d, 0xd0, 0x93, 0xa2, 0x8d, 0xd0, 0x94, 0xa1, 0x8d, 0xd0, - 0x94, 0xa2, 0x8d, 0xd0, 0x94, 0xa1, 0x8e, 0xd0, 0x95, 0x9e, 0x8d, 0xd0, - 0x95, 0xa1, 0x8e, 0xd0, 0x96, 0x9e, 0x8d, 0xd0, 0x96, 0xa1, 0x8e, 0xd0, - 0x97, 0x9e, 0x8d, 0xd0, 0x97, 0xa1, 0x8e, 0xd0, 0x98, 0x9e, 0x8d, 0xd0, - 0x98, 0xa1, 0x9a, 0xd0, 0x98, 0x96, 0x9a, 0xd0, 0x99, 0x96, 0x9a, 0xd0, - 0x99, 0x96, 0x9a, 0xd0, 0x9a, 0x96, 0x9a, 0xd0, 0x9a, 0x96, 0x9a, 0xd0, - 0x9a, 0x96, 0x9b, 0xd0, 0x9b, 0x96, 0x9f, 0xd0, 0x9b, 0x97, 0x9f, 0xd0, - 0x9c, 0x97, 0x9f, 0xd0, 0x9c, 0x97, 0x9f, 0xd0, 0x9d, 0x97, 0x9f, 0xd0, - 0x9d, 0x97, 0x9f, 0xd0, 0x9d, 0x97, 0x9f, 0xd0, 0x9e, 0x97, 0x9f, 0xd0, - 0x9e, 0x97, 0x9f, 0xd0, 0x9f, 0x97, 0x9f, 0xd0, 0x9f, 0x97, 0x9f, 0xd0, - 0x9f, 0x97, 0xa3, 0xd0, 0xa0, 0x98, 0xa0, 0xd0, 0xa0, 0x97, 0xa3, 0xd0, - 0xa1, 0x98, 0xa1, 0xd0, 0xa1, 0x97, 0xa3, 0xd0, 0xa1, 0x98, 0xa2, 0xd0, - 0xa2, 0x97, 0xa3, 0xd0, 0xa2, 0x98, 0xa3, 0xd0, 0xa3, 0x97, 0xa3, 0xd0, - 0xa3, 0x98, 0xa3, 0xd0, 0xa3, 0x97, 0xa3, 0xd0, 0xa4, 0x98, 0xa3, 0xd0, - 0xa4, 0x97, 0xa3, 0xd0, 0xa5, 0x98, 0xa3, 0xd0, 0xa5, 0x97, 0xa3, 0xd0, - 0xa5, 0x98, 0xa3, 0xd0, 0xa6, 0x97, 0xa3, 0xd0, 0xa6, 0x98, 0xa3, 0xd0, - 0xa6, 0x97, 0xa3, 0xd0, 0xa7, 0x98, 0xa3, 0xd0, 0xa7, 0x97, 0xa3, 0xd0, - 0xa8, 0x98, 0xa3, 0xd0, 0xa8, 0x97, 0xa3, 0xd0, 0xa8, 0x98, 0xa3, 0xd0, - 0xa9, 0x97, 0xa3, 0xd0, 0xa9, 0x98, 0xa3, 0xd0, 0xaa, 0x97, 0xa3, 0xd0, - 0xaa, 0x98, 0xa3, 0xd0, 0xaa, 0x97, 0xa3, 0xd0, 0xab, 0x98, 0xa3, 0xd0, - 0xab, 0x97, 0xa3, 0xd0, 0xab, 0x98, 0xa3, 0xd0, 0xac, 0x97, 0xa3, 0xd0, - 0xac, 0x98, 0xa3, 0xd0, 0xac, 0x97, 0xa3, 0xd0, 0xad, 0x98, 0xa3, 0xd0, - 0xad, 0x97, 0xa3, 0xd0, 0xae, 0x98, 0xa3, 0xd0, 0xae, 0x97, 0xa3, 0xd0, - 0xae, 0x98, 0xa3, 0xd0, 0xaf, 0x97, 0xa3, 0xd0, 0xaf, 0x98, 0xa3, 0xd0, - 0xaf, 0x97, 0xa3, 0xd0, 0xb0, 0x98, 0xa3, 0xd0, 0xb0, 0x97, 0xa3, 0xd0, - 0xb0, 0x98, 0xa3, 0xd0, 0xb1, 0x97, 0xa3, 0xd0, 0xb1, 0x98, 0xa3, 0xd0, - 0xb2, 0x97, 0xa3, 0xd0, 0xb2, 0x98, 0xa3, 0xd0, 0xb2, 0x97, 0xa3, 0xd0, - 0xb3, 0x98, 0xa3, 0xd0, 0xb3, 0x97, 0xa3, 0xd0, 0xb3, 0x98, 0xa3, 0xd0, - 0xb4, 0x97, 0xa3, 0xd0, 0xb4, 0x98, 0xa3, 0xd0, 0xb4, 0x97, 0xa3, 0xd0, - 0xb5, 0x98, 0xa3, 0xd0, 0xb5, 0x97, 0xa3, 0xd0, 0xb5, 0x98, 0xa3, 0xd0, - 0xb6, 0x97, 0xa3, 0xd0, 0xb6, 0x98, 0xa3, 0xd0, 0xb6, 0x97, 0xa3, 0xd0, - 0xb7, 0x98, 0xa3, 0xd0, 0xb7, 0x97, 0xa3, 0xd0, 0xb7, 0x98, 0xa3, 0xd0, - 0xb8, 0x97, 0xa3, 0xd0, 0xb8, 0x98, 0xa3, 0xd0, 0xb8, 0x97, 0xa3, 0xd0, - 0xb9, 0x98, 0xa3, 0xd0, 0xb9, 0x97, 0xa3, 0xd0, 0xb9, 0x98, 0xa3, 0xd0, - 0xba, 0x97, 0xa3, 0xd0, 0xba, 0x98, 0xa3, 0xd0, 0xba, 0x97, 0xa3, 0xd0, - 0xbb, 0x98, 0xa3, 0xd0, 0xbb, 0x97, 0xa3, 0xd0, 0xbb, 0x98, 0xa3, 0xd0, - 0xbc, 0x97, 0xa4, 0xd0, 0xbc, 0x95, 0xd2, 0xd0, 0xbc, 0xaa, 0xd2, 0xd0, - 0xbd, 0xa8, 0xd2, 0xd0, 0xbd, 0xaa, 0xd2, 0xd0, 0xbd, 0xa8, 0xd2, 0xd0, - 0xbe, 0xaa, 0xd2, 0xd0, 0xbe, 0xa8, 0xd2, 0xd0, 0xbe, 0xaa, 0xd2, 0xd0, - 0xbf, 0xa8, 0xd2, 0xd0, 0xbf, 0xaa, 0xd2, 0xd0, 0xbf, 0xa8, 0xd2, 0xd0, - 0xc0, 0xaa, 0xd2, 0xd0, 0xc0, 0xa8, 0xd2, 0xd0, 0xc0, 0xaa, 0xd2, 0xd0, - 0xc1, 0xa8, 0xd2, 0xd0, 0xc1, 0xaa, 0xd2, 0xd0, 0xc1, 0xa8, 0xd2, 0xd0, - 0xc1, 0xa5, 0xd2, 0xd0, 0xc2, 0xa8, 0xd2, 0xd0, 0xc2, 0xa5, 0xd2, 0xd0, - 0xc2, 0xa8, 0xd2, 0xd0, 0xc3, 0xa5, 0xd2, 0xd0, 0xc3, 0xa8, 0xd2, 0xd0, - 0xc3, 0xa5, 0xd2, 0xd0, 0xc4, 0xa8, 0xd2, 0xd0, 0xc4, 0xa5, 0xd2, 0xd0, - 0xc4, 0xa8, 0xd2, 0xd0, 0xc5, 0xa5, 0xd2, 0xd0, 0xc5, 0xa8, 0xd2, 0xd0, - 0xc5, 0xa5, 0xd2, 0xd0, 0xc6, 0xa8, 0xd2, 0xd0, 0xc6, 0xa5, 0xd2, 0xd0, - 0xc6, 0xa8, 0xd2, 0xd0, 0xc6, 0xa5, 0xd2, 0xd0, 0xc7, 0xa8, 0xd2, 0xd0, - 0xc7, 0xa5, 0xd2, 0xd0, 0xc7, 0xa8, 0xd2, 0xd0, 0xc8, 0xa5, 0xd2, 0xd0, - 0xc8, 0xa2, 0xd2, 0xd0, 0xc8, 0xa5, 0xd2, 0xd0, 0xc9, 0xa2, 0xd2, 0xd0, - 0xc9, 0xa5, 0xd2, 0xd0, 0xc9, 0xa2, 0xd2, 0xd0, 0xc9, 0xa5, 0xd2, 0xd0, - 0xca, 0xa2, 0xd2, 0xd0, 0xca, 0xa5, 0xd2, 0xd0, 0xca, 0xa2, 0xd2, 0xd0, - 0xcb, 0xa5, 0xd2, 0xd0, 0xcb, 0xa2, 0xd2, 0xd0, 0xcb, 0xa5, 0xd2, 0xd0, - 0xcc, 0xa2, 0xd2, 0xd0, 0xcc, 0xa5, 0xd2, 0xd0, 0xcc, 0xa2, 0xd2, 0xd0, - 0xcc, 0xa5, 0xd2, 0xd0, 0xcd, 0xa2, 0xd2, 0xd0, 0xcd, 0xa5, 0xd2, 0xd0, - 0xcd, 0xa2, 0xd2, 0xd0, 0xce, 0xa5, 0xd2, 0xd0, 0xce, 0xa2, 0xd2, 0xd0, - 0xce, 0xa5, 0xd2, 0xd0, 0xce, 0xa2, 0xd2, 0xd0, 0xcf, 0xa5, 0xd2, 0xd0, - 0xcf, 0xa2, 0xd2, 0xd0, 0xcf, 0xa5, 0xd2, 0xd0, 0xd0, 0xa2, 0xd2, 0xd0, - 0xd0, 0xa5, 0xd2, 0xd0, 0xd0, 0xa2, 0xd3, 0xd0, 0xd0, 0xa2, 0xd2, 0xd0, - 0xd1, 0xa2, 0xd3, 0xd0, 0xd1, 0xa2, 0xd2, 0xd0, 0xd1, 0xa2, 0xd3, 0xd0, - 0xd2, 0xa2, 0xd2, 0xd0, 0xd2, 0xa2, 0xd3, 0xd0, 0xd2, 0xa2, 0xd2, 0xd0, - 0xd2, 0xa2, 0xd3, 0xd0, 0xd2, 0xa2, 0xd3, 0xd0, 0xd2, 0xa2, 0xd3, 0xd0, - 0xd2, 0xa2, 0xd4, 0xd0, 0xd2, 0xa2, 0xd4, 0xd0, 0xd2, 0xa2, 0xd4, 0xd0, - 0xd2, 0xa2, 0xd4, 0xd0, 0xd2, 0xa2, 0xd5, 0xd0, 0xd2, 0xa2, 0xd5, 0xcf, - 0xd3, 0xa2, 0xd5, 0xd0, 0xd2, 0xa2, 0xd6, 0xcf, 0xd3, 0xa2, 0xd6, 0xd0, - 0xd2, 0xa2, 0xd6, 0xcf, 0xd3, 0xa2, 0xd6, 0xd0, 0xd2, 0xa2, 0xd7, 0xcf, - 0xd3, 0xa2, 0xd7, 0xd0, 0xd2, 0xa2, 0xd7, 0xcf, 0xd3, 0xa2, 0xd7, 0xd0, - 0xd2, 0xa2, 0xd8, 0xcf, 0xd3, 0xa2, 0xd8, 0xd0, 0xd2, 0xa2, 0xd8, 0xcf, - 0xd3, 0xa2, 0xd9, 0xd0, 0xd2, 0xa2, 0xd9, 0xcf, 0xd3, 0xa2, 0xd9, 0xd0, - 0xd2, 0xa2, 0xd9, 0xcf, 0xd3, 0xa2, 0xda, 0xd0, 0xd2, 0xa2, 0xda, 0xc9, - 0xdb, 0xa2, 0xda, 0xc9, 0xdb, 0xa2, 0xda, 0xc9, 0xdb, 0xa2, 0xdb, 0xc9, - 0xdb, 0xa2, 0xdb, 0xc9, 0xdb, 0xa2, 0xdb, 0xc9, 0xdb, 0xa2, 0xdb, 0xc9, - 0xdb, 0xa2, 0xdc, 0xc9, 0xde, 0xa2, 0xdc, 0xc9, 0xde, 0xa2, 0xdc, 0xc9, - 0xde, 0xa2, 0xdd, 0xc9, 0xde, 0xa2, 0xdd, 0xc9, 0xde, 0xa2, 0xdd, 0xc9, - 0xde, 0xa2, 0xdd, 0xc9, 0xde, 0xa2, 0xde, 0xc9, 0xde, 0xa2, 0xde, 0xc9, - 0xde, 0xa2, 0xde, 0xc9, 0xde, 0xa2, 0xde, 0xc9, 0xde, 0xa2, 0xdf, 0xca, - 0xe1, 0xa2, 0xdf, 0xca, 0xe1, 0xa2, 0xdf, 0xca, 0xe1, 0xa2, 0xdf, 0xca, - 0xe1, 0xa2, 0xe0, 0xca, 0xe1, 0xa2, 0xe0, 0xca, 0xe1, 0xa2, 0xe0, 0xca, - 0xe1, 0xa2, 0xe1, 0xca, 0xe1, 0xa2, 0xe1, 0xca, 0xe1, 0xa2, 0xe1, 0xca, - 0xe1, 0xa2, 0xe1, 0xca, 0xe1, 0xa2, 0xe2, 0xcb, 0xe4, 0xa2, 0xe2, 0xcb, - 0xe4, 0xa2, 0xe2, 0xcb, 0xe4, 0xa2, 0xe2, 0xcb, 0xe4, 0xa2, 0xe3, 0xcb, - 0xe4, 0xa2, 0xe3, 0xcb, 0xe4, 0xa2, 0xe3, 0xcb, 0xe4, 0xa2, 0xe3, 0xcb, - 0xe4, 0xa2, 0xe4, 0xcb, 0xe4, 0xa2, 0xe4, 0xcb, 0xe4, 0xa2, 0xe4, 0xcb, - 0xe4, 0xa2, 0xe4, 0xcb, 0xe6, 0xa2, 0xe5, 0xcb, 0xe7, 0xa2, 0xe5, 0xcb, - 0xe6, 0xa2, 0xe5, 0xcb, 0xe7, 0xa2, 0xe5, 0xcb, 0xe6, 0xa2, 0xe6, 0xcb, - 0xe7, 0xa2, 0xe6, 0xcb, 0xe6, 0xa2, 0xe6, 0xd0, 0xeb, 0xa2, 0xe6, 0xd2, - 0xea, 0xa2, 0xe7, 0xd0, 0xeb, 0xa2, 0xe7, 0xd2, 0xea, 0xa2, 0xe7, 0xd0, - 0xeb, 0xa2, 0xe7, 0xd2, 0xea, 0xa2, 0xe8, 0xd0, 0xeb, 0xa2, 0xe8, 0xd2, - 0xea, 0xa2, 0xe8, 0xd0, 0xeb, 0xa2, 0xe8, 0xd2, 0xea, 0xa2, 0xe9, 0xd0, - 0xeb, 0xa2, 0xe9, 0xd2, 0xea, 0xa2, 0xe9, 0xd0, 0xeb, 0xa2, 0xe9, 0xd2, - 0xea, 0xa2, 0xea, 0xd0, 0xeb, 0xa2, 0xea, 0xd0, 0xeb, 0xa2, 0xea, 0xd0, - 0xeb, 0xa2, 0xea, 0xd0, 0xeb, 0xa2, 0xea, 0xd0, 0xeb, 0xa2, 0xea, 0xd0, - 0xeb, 0xa2, 0xea, 0xd0, 0xeb, 0xa2, 0xea, 0xd0, 0xeb, 0xa2, 0xeb, 0xd0, - 0xec, 0xa0, 0xea, 0xd0, 0xec, 0xa2, 0xed, 0xd0, 0xec, 0xa2, 0xee, 0xd0, - 0xec, 0xa2, 0xed, 0xd0, 0xec, 0xa2, 0xee, 0xd0, 0xed, 0xa2, 0xed, 0xd0, - 0xed, 0xa2, 0xee, 0xd0, 0xed, 0xa2, 0xed, 0xd0, 0xed, 0xa2, 0xee, 0xd0, - 0xed, 0xa2, 0xee, 0xd0, 0xed, 0xa2, 0xee, 0xd0, 0xed, 0xa2, 0xee, 0xcf, - 0xed, 0xa2, 0xef, 0xd0, 0xed, 0xa2, 0xef, 0xcf, 0xed, 0xa2, 0xef, 0xd0, - 0xed, 0xa2, 0xef, 0xcf, 0xed, 0xa2, 0xf0, 0xd0, 0xed, 0xa2, 0xf0, 0xcf, - 0xed, 0xa2, 0xf0, 0xd0, 0xed, 0xa2, 0xf0, 0xcf, 0xed, 0xa2, 0xf1, 0xd0, - 0xed, 0xa2, 0xf1, 0xcf, 0xed, 0xa2, 0xf1, 0xd0, 0xed, 0xa2, 0xf1, 0xcf, - 0xed, 0xa2, 0xf2, 0xd0, 0xed, 0xa2, 0xf2, 0xcf, 0xed, 0xa2, 0xf2, 0xd0, - 0xed, 0xa2, 0xf2, 0xcf, 0xed, 0xa2, 0xf2, 0xd0, 0xed, 0xa2, 0xf3, 0xcf, - 0xed, 0xa2, 0xf3, 0xd0, 0xed, 0xa2, 0xf3, 0xcf, 0xed, 0xa2, 0xf3, 0xce, - 0xee, 0xa2, 0xf4, 0xcf, 0xed, 0xa2, 0xf4, 0xce, 0xee, 0xa2, 0xf4, 0xcf, - 0xed, 0xa2, 0xf4, 0xce, 0xee, 0xa2, 0xf5, 0xcf, 0xed, 0xa2, 0xf5, 0xce, - 0xee, 0xa2, 0xf5, 0xc7, 0xf6, 0xa2, 0xf5, 0xc7, 0xf6, 0xa2, 0xf5, 0xc7, - 0xf6, 0xa2, 0xf6, 0xc7, 0xf6, 0xa2, 0xf6, 0xc7, 0xf6, 0xa2, 0xf6, 0xc7, - 0xf6, 0xa2, 0xf6, 0xc7, 0xf6, 0xa2, 0xf7, 0xc7, 0xf7, 0xa2, 0xf7, 0xc7, - 0xf7, 0xa2, 0xf7, 0xc7, 0xf7, 0xa2, 0xf7, 0xc7, 0xf7, 0xa2, 0xf8, 0xc7, - 0xf7, 0xa2, 0xf8, 0xc7, 0xf7, 0xa2, 0xf8, 0xc7, 0xf7, 0xa2, 0xf8, 0xc7, - 0xf7, 0xa2, 0xf8, 0xc7, 0xf7, 0xa2, 0xf9, 0xc7, 0xf7, 0xa2, 0xf9, 0xc7, - 0xf7, 0xa2, 0xf9, 0xc7, 0xf7, 0xa2, 0xf9, 0xc7, 0xf7, 0xa2, 0xfa, 0xc7, - 0xf7, 0xa2, 0xfa, 0xc7, 0xf7, 0xa2, 0xfa, 0xc7, 0xf7, 0xa2, 0xfa, 0xc7, - 0xf7, 0xa2, 0xfa, 0xc7, 0xf7, 0xa2, 0xfb, 0xc7, 0xf7, 0xa2, 0xfb, 0xc7, - 0xf7, 0xa2, 0xfb, 0xc7, 0xf7, 0xa2, 0xfb, 0xc7, 0xf7, 0xa2, 0xfc, 0xc7, - 0xf7, 0xa2, 0xfc, 0xc7, 0xf7, 0xa2, 0xfc, 0xc7, 0xf7, 0xa2, 0xfc, 0xc7, - 0xf7, 0xa2, 0xfc, 0xc7, 0xf7, 0xa2, 0xfd, 0xc7, 0xf7, 0xa2, 0xfd, 0xc7, - 0xf7, 0xa2, 0xfd, 0xc7, 0xf7, 0xa2, 0xfd, 0xc7, 0xf7, 0xa2, 0xfe, 0xc7, - 0xf7, 0xa2, 0xfe, 0xc7, 0xf7, 0xa2, 0xfe, 0xc7, 0xf7, 0xa2, 0xfe, 0xc7, - 0xf7, 0xa2, 0xfe, 0xc7, 0xf7, 0xa2, 0xff, 0xc7, 0xf7, 0xa2, 0xff, 0xc7, - 0xf7, 0xa2, 0x03, 0xd8, 0x8b, 0xa2, 0x0a, 0xd6, 0x8c, 0xa2, 0x0f, 0xd4, - 0x8c, 0xa2, 0x14, 0xd6, 0x8c, 0xa2, 0x17, 0xd4, 0x8c, 0xa2, 0x1b, 0xd6, - 0x8c, 0xa2, 0x1e, 0xd4, 0x8c, 0xa2, 0x20, 0xd6, 0x8c, 0xa2, 0x23, 0xd4, - 0x8c, 0xa2, 0x25, 0xd6, 0x8c, 0xa2, 0x27, 0xd4, 0x8c, 0xa2, 0x29, 0xd6, - 0x8c, 0xa2, 0x2b, 0xd4, 0x8c, 0xa2, 0x2d, 0xd6, 0x8c, 0xa2, 0x2f, 0xd4, - 0x8c, 0xa2, 0x31, 0xd6, 0x8c, 0xa2, 0x32, 0xd4, 0x8c, 0xa2, 0x34, 0xd6, - 0x8c, 0xa2, 0x35, 0xd4, 0x8c, 0xa2, 0x37, 0xd6, 0x8c, 0xa2, 0x38, 0xd4, - 0x8c, 0xa2, 0x3a, 0xd6, 0x8c, 0xa2, 0x3b, 0xd4, 0x8c, 0xa2, 0x3c, 0xd6, - 0x8c, 0xa2, 0x3e, 0xd4, 0x8c, 0xa2, 0x3f, 0xd6, 0x8c, 0xa2, 0x40, 0xd4, - 0x8c, 0xa2, 0x42, 0xd6, 0x8c, 0xa2, 0x43, 0xd4, 0x8c, 0xa2, 0x44, 0xd6, - 0x8c, 0xa2, 0x45, 0xd4, 0x8c, 0xa2, 0x46, 0xd6, 0x8c, 0xa2, 0x47, 0xd4, - 0x8c, 0xa2, 0x48, 0xd6, 0x8c, 0xa2, 0x49, 0xd4, 0x8c, 0xa2, 0x4a, 0xd6, - 0x8c, 0xa2, 0x4b, 0xd4, 0x8c, 0xa2, 0x4c, 0xd6, 0x8c, 0xa2, 0x4d, 0xd4, - 0x8c, 0xa2, 0x4e, 0xd6, 0x8c, 0xa2, 0x4f, 0xd4, 0x8c, 0xa2, 0x50, 0xd6, - 0x8c, 0xa2, 0x51, 0xd4, 0x8c, 0xa2, 0x52, 0xd2, 0x8d, 0xa2, 0x53, 0xd4, - 0x8c, 0xa2, 0x54, 0xd2, 0x8d, 0xa2, 0x55, 0xd4, 0x8c, 0xa2, 0x56, 0xd2, - 0x8d, 0xa2, 0x57, 0xd4, 0x8c, 0xa2, 0x58, 0xd2, 0x8d, 0xa2, 0x58, 0xd4, - 0x8c, 0xa2, 0x59, 0xd2, 0x8d, 0xa2, 0x5a, 0xd4, 0x8c, 0xa2, 0x5b, 0xd2, - 0x8d, 0xa2, 0x5c, 0xd4, 0x8c, 0xa2, 0x5d, 0xd2, 0x8d, 0xa2, 0x5d, 0xd4, - 0x8c, 0xa2, 0x5e, 0xd2, 0x8d, 0xa2, 0x5f, 0xd4, 0x8c, 0xa2, 0x60, 0xd2, - 0x8d, 0xa2, 0x60, 0xd4, 0x8c, 0xa2, 0x61, 0xd2, 0x8d, 0xa2, 0x62, 0xd4, - 0x8c, 0xa2, 0x63, 0xd2, 0x8d, 0xa2, 0x63, 0xd4, 0x8c, 0xa2, 0x64, 0xd2, - 0x8d, 0xa2, 0x65, 0xd4, 0x8c, 0xa2, 0x66, 0xd2, 0x8d, 0xa2, 0x66, 0xd4, - 0x8c, 0xa2, 0x67, 0xd2, 0x8d, 0xa2, 0x68, 0xd4, 0x8c, 0xa2, 0x68, 0xd2, - 0x8d, 0xa2, 0x69, 0xd4, 0x8c, 0xa2, 0x6a, 0xd2, 0x8d, 0xa2, 0x6a, 0xd4, - 0x8c, 0xa2, 0x6b, 0xd2, 0x8d, 0xa2, 0x6c, 0xd4, 0x8c, 0xa2, 0x6c, 0xd2, - 0x8d, 0xa2, 0x6d, 0xd4, 0x8c, 0xa2, 0x6e, 0xd2, 0x8d, 0xa2, 0x6e, 0xd4, - 0x8c, 0xa2, 0x6f, 0xd2, 0x8d, 0xa2, 0x70, 0xd4, 0x8c, 0xa2, 0x70, 0xd2, - 0x8d, 0xa2, 0x71, 0xd4, 0x8c, 0xa2, 0x72, 0xd2, 0x8d, 0xa2, 0x72, 0xd4, - 0x8c, 0xa2, 0x73, 0xd2, 0x8d, 0xa2, 0x73, 0xd4, 0x8c, 0xa2, 0x74, 0xd2, - 0x8d, 0xa2, 0x75, 0xd4, 0x8c, 0xa2, 0x75, 0xd2, 0x8d, 0xa2, 0x76, 0xd4, - 0x8c, 0xa2, 0x76, 0xd2, 0x8d, 0xa2, 0x77, 0xd4, 0x8c, 0xa2, 0x78, 0xd2, - 0x8d, 0xa2, 0x78, 0xd4, 0x8c, 0xa2, 0x79, 0xd2, 0x8d, 0xa2, 0x79, 0xd4, - 0x8c, 0xa2, 0x7a, 0xd2, 0x8d, 0xa2, 0x7a, 0xd1, 0x8d, 0xa2, 0x7b, 0xd2, - 0x8d, 0xa2, 0x7c, 0xd1, 0x8d, 0xa2, 0x7c, 0xd2, 0x8d, 0xa2, 0x7d, 0xd1, - 0x8d, 0xa2, 0x7d, 0xd2, 0x8d, 0xa2, 0x7e, 0xd1, 0x8d, 0xa2, 0x7e, 0xd2, - 0x8d, 0xa2, 0x7f, 0xd1, 0x8d, 0xa2, 0x7f, 0xd2, 0x8d, 0xa2, 0x80, 0xd1, - 0x8d, 0xa2, 0x81, 0xd2, 0x8d, 0xa2, 0x81, 0xd1, 0x8d, 0xa2, 0x82, 0xd2, - 0x8d, 0xa2, 0x82, 0xd1, 0x8d, 0xa2, 0x83, 0xd2, 0x8d, 0xa2, 0x83, 0xd1, - 0x8d, 0xa2, 0x84, 0xd2, 0x8d, 0xa2, 0x84, 0xd1, 0x8d, 0xa2, 0x85, 0xd2, - 0x8d, 0xa2, 0x85, 0xd1, 0x8d, 0xa2, 0x86, 0xd2, 0x8d, 0xa2, 0x86, 0xd1, - 0x8d, 0xa2, 0x87, 0xd2, 0x8d, 0xa2, 0x87, 0xd1, 0x8d, 0xa2, 0x88, 0xd2, - 0x8d, 0xa2, 0x88, 0xd1, 0x8d, 0xa2, 0x89, 0xd2, 0x8d, 0xa2, 0x89, 0xd1, - 0x8d, 0xa2, 0x8a, 0xd1, 0x8e, 0xa2, 0x8a, 0xd1, 0x8d, 0xa2, 0x8b, 0xd1, - 0x8e, 0xa2, 0x8b, 0xd1, 0x8d, 0xa2, 0x8c, 0xd1, 0x8e, 0xa2, 0x8c, 0xd1, - 0x8d, 0xa2, 0x8d, 0xd1, 0x8e, 0xa2, 0x8d, 0xd1, 0x8d, 0xa1, 0x8d, 0xd1, - 0x8e, 0xa2, 0x8d, 0xd1, 0x8e, 0xa1, 0x8d, 0xd1, 0x8e, 0xa2, 0x8d, 0xd1, - 0x8f, 0xa1, 0x8d, 0xd1, 0x8f, 0xa2, 0x8d, 0xd1, 0x90, 0xa1, 0x8d, 0xd1, - 0x90, 0xa2, 0x8d, 0xd1, 0x91, 0xa1, 0x8d, 0xd1, 0x91, 0xa2, 0x8d, 0xd1, - 0x92, 0xa1, 0x8d, 0xd1, 0x92, 0xa2, 0x8d, 0xd1, 0x93, 0xa1, 0x8d, 0xd1, - 0x93, 0xa2, 0x8d, 0xd1, 0x94, 0xa1, 0x8d, 0xd1, 0x94, 0xa2, 0x8d, 0xd1, - 0x94, 0xa1, 0x8e, 0xd1, 0x95, 0x9e, 0x8d, 0xd1, 0x95, 0xa1, 0x8e, 0xd1, - 0x96, 0x9e, 0x8d, 0xd1, 0x96, 0xa1, 0x8e, 0xd1, 0x97, 0x9e, 0x8d, 0xd1, - 0x97, 0xa1, 0x8e, 0xd1, 0x98, 0x9e, 0x8d, 0xd1, 0x98, 0xa1, 0x8e, 0xd1, - 0x98, 0x9e, 0x9c, 0xd1, 0x99, 0x96, 0x9d, 0xd1, 0x99, 0x96, 0x9c, 0xd1, - 0x9a, 0x96, 0x9d, 0xd1, 0x9a, 0x96, 0x9c, 0xd1, 0x9a, 0x96, 0x9d, 0xd1, - 0x9b, 0x96, 0x9c, 0xd1, 0x9b, 0x96, 0x9d, 0xd1, 0x9c, 0x96, 0x9c, 0xd1, - 0x9c, 0x96, 0x9d, 0xd1, 0x9d, 0x96, 0x9d, 0xd1, 0x9d, 0x96, 0xa1, 0xd1, - 0x9d, 0x97, 0xa1, 0xd1, 0x9e, 0x97, 0xa1, 0xd1, 0x9e, 0x97, 0xa1, 0xd1, - 0x9f, 0x97, 0xa1, 0xd1, 0x9f, 0x97, 0xa1, 0xd1, 0x9f, 0x97, 0xa1, 0xd1, - 0xa0, 0x97, 0xa1, 0xd1, 0xa0, 0x97, 0xa1, 0xd1, 0xa1, 0x97, 0xa1, 0xd1, - 0xa1, 0x97, 0xa1, 0xd1, 0xa1, 0x97, 0xa2, 0xd1, 0xa2, 0x97, 0xa2, 0xd1, - 0xa2, 0x97, 0xa3, 0xd1, 0xa3, 0x97, 0xa3, 0xd1, 0xa3, 0x97, 0xa3, 0xd1, - 0xa3, 0x97, 0xa3, 0xd1, 0xa4, 0x97, 0xa3, 0xd1, 0xa4, 0x97, 0xa3, 0xd1, - 0xa5, 0x97, 0xa3, 0xd1, 0xa5, 0x97, 0xa3, 0xd1, 0xa5, 0x97, 0xa3, 0xd1, - 0xa6, 0x97, 0xa3, 0xd1, 0xa6, 0x97, 0xa3, 0xd1, 0xa6, 0x97, 0xa3, 0xd1, - 0xa7, 0x97, 0xa3, 0xd1, 0xa7, 0x97, 0xa3, 0xd1, 0xa8, 0x97, 0xa3, 0xd1, - 0xa8, 0x97, 0xa3, 0xd1, 0xa8, 0x97, 0xa3, 0xd1, 0xa9, 0x97, 0xa3, 0xd1, - 0xa9, 0x97, 0xa3, 0xd1, 0xaa, 0x97, 0xa3, 0xd1, 0xaa, 0x97, 0xa3, 0xd1, - 0xaa, 0x97, 0xa3, 0xd1, 0xab, 0x97, 0xa3, 0xd1, 0xab, 0x97, 0xa3, 0xd1, - 0xab, 0x97, 0xa3, 0xd1, 0xac, 0x97, 0xa3, 0xd1, 0xac, 0x97, 0xa3, 0xd1, - 0xac, 0x97, 0xa3, 0xd1, 0xad, 0x97, 0xa3, 0xd1, 0xad, 0x97, 0xa3, 0xd1, - 0xae, 0x97, 0xa3, 0xd1, 0xae, 0x97, 0xa3, 0xd1, 0xae, 0x97, 0xa3, 0xd1, - 0xaf, 0x97, 0xa3, 0xd1, 0xaf, 0x97, 0xa3, 0xd1, 0xaf, 0x97, 0xa3, 0xd1, - 0xb0, 0x97, 0xa3, 0xd1, 0xb0, 0x97, 0xa3, 0xd1, 0xb0, 0x97, 0xa3, 0xd1, - 0xb1, 0x97, 0xa3, 0xd1, 0xb1, 0x97, 0xa3, 0xd1, 0xb2, 0x97, 0xa3, 0xd1, - 0xb2, 0x97, 0xa3, 0xd1, 0xb2, 0x97, 0xa3, 0xd1, 0xb3, 0x97, 0xa3, 0xd1, - 0xb3, 0x97, 0xa3, 0xd1, 0xb3, 0x97, 0xa3, 0xd1, 0xb4, 0x97, 0xa3, 0xd1, - 0xb4, 0x97, 0xa3, 0xd1, 0xb4, 0x97, 0xa3, 0xd1, 0xb5, 0x97, 0xa3, 0xd1, - 0xb5, 0x97, 0xa3, 0xd1, 0xb5, 0x97, 0xa3, 0xd1, 0xb6, 0x97, 0xa3, 0xd1, - 0xb6, 0x97, 0xa3, 0xd1, 0xb6, 0x97, 0xa3, 0xd1, 0xb7, 0x97, 0xa3, 0xd1, - 0xb7, 0x97, 0xa3, 0xd1, 0xb7, 0x97, 0xa3, 0xd1, 0xb8, 0x97, 0xa3, 0xd1, - 0xb8, 0x97, 0xa3, 0xd1, 0xb8, 0x97, 0xa3, 0xd1, 0xb9, 0x97, 0xa3, 0xd1, - 0xb9, 0x97, 0xa3, 0xd1, 0xb9, 0x97, 0xa3, 0xd1, 0xba, 0x97, 0xa3, 0xd1, - 0xba, 0x97, 0xa3, 0xd1, 0xba, 0x97, 0xa3, 0xd1, 0xbb, 0x97, 0xa3, 0xd1, - 0xbb, 0x97, 0xa3, 0xd1, 0xbb, 0x97, 0xa3, 0xd1, 0xbc, 0x97, 0xd2, 0xd1, - 0xbc, 0xa7, 0xd2, 0xd1, 0xbc, 0xaa, 0xd2, 0xd1, 0xbd, 0xa7, 0xd2, 0xd1, - 0xbd, 0xaa, 0xd2, 0xd1, 0xbd, 0xa7, 0xd2, 0xd1, 0xbe, 0xaa, 0xd2, 0xd1, - 0xbe, 0xa7, 0xd2, 0xd1, 0xbe, 0xaa, 0xd2, 0xd1, 0xbf, 0xa7, 0xd2, 0xd1, - 0xbf, 0xaa, 0xd2, 0xd1, 0xbf, 0xa7, 0xd2, 0xd1, 0xc0, 0xaa, 0xd2, 0xd1, - 0xc0, 0xa7, 0xd2, 0xd1, 0xc0, 0xa4, 0xd2, 0xd1, 0xc1, 0xa7, 0xd2, 0xd1, - 0xc1, 0xa4, 0xd2, 0xd1, 0xc1, 0xa7, 0xd2, 0xd1, 0xc1, 0xa4, 0xd2, 0xd1, - 0xc2, 0xa7, 0xd2, 0xd1, 0xc2, 0xa4, 0xd2, 0xd1, 0xc2, 0xa7, 0xd2, 0xd1, - 0xc3, 0xa4, 0xd2, 0xd1, 0xc3, 0xa7, 0xd2, 0xd1, 0xc3, 0xa4, 0xd2, 0xd1, - 0xc4, 0xa7, 0xd2, 0xd1, 0xc4, 0xa4, 0xd2, 0xd1, 0xc4, 0xa7, 0xd2, 0xd1, - 0xc5, 0xa4, 0xd2, 0xd1, 0xc5, 0xa7, 0xd2, 0xd1, 0xc5, 0xa4, 0xd2, 0xd1, - 0xc6, 0xa7, 0xd2, 0xd1, 0xc6, 0xa4, 0xd2, 0xd1, 0xc6, 0xa7, 0xd2, 0xd1, - 0xc6, 0xa4, 0xd2, 0xd1, 0xc7, 0xa7, 0xd2, 0xd1, 0xc7, 0xa4, 0xd2, 0xd1, - 0xc7, 0xa7, 0xd2, 0xd1, 0xc8, 0xa4, 0xd2, 0xd1, 0xc8, 0xa7, 0xd2, 0xd1, - 0xc8, 0xa4, 0xd2, 0xd1, 0xc9, 0xa7, 0xd2, 0xd1, 0xc9, 0xa4, 0xd2, 0xd1, - 0xc9, 0xa7, 0xd2, 0xd1, 0xc9, 0xa4, 0xd2, 0xd1, 0xca, 0xa7, 0xd2, 0xd1, - 0xca, 0xa4, 0xd2, 0xd1, 0xca, 0xa7, 0xd2, 0xd1, 0xcb, 0xa4, 0xd2, 0xd1, - 0xcb, 0xa7, 0xd2, 0xd1, 0xcb, 0xa4, 0xd2, 0xd1, 0xcc, 0xa2, 0xd2, 0xd1, - 0xcc, 0xa4, 0xd2, 0xd1, 0xcc, 0xa2, 0xd2, 0xd1, 0xcc, 0xa4, 0xd2, 0xd1, - 0xcd, 0xa2, 0xd2, 0xd1, 0xcd, 0xa4, 0xd2, 0xd1, 0xcd, 0xa2, 0xd2, 0xd1, - 0xce, 0xa4, 0xd2, 0xd1, 0xce, 0xa2, 0xd2, 0xd1, 0xce, 0xa4, 0xd2, 0xd1, - 0xce, 0xa2, 0xd2, 0xd1, 0xcf, 0xa4, 0xd2, 0xd1, 0xcf, 0xa2, 0xd2, 0xd1, - 0xcf, 0xa4, 0xd2, 0xd1, 0xd0, 0xa2, 0xd2, 0xd1, 0xd0, 0xa4, 0xd2, 0xd1, - 0xd0, 0xa2, 0xd2, 0xd1, 0xd0, 0xa4, 0xd2, 0xd1, 0xd1, 0xa2, 0xd2, 0xd1, - 0xd1, 0xa4, 0xd2, 0xd1, 0xd1, 0xa2, 0xd3, 0xd1, 0xd2, 0xa2, 0xd2, 0xd1, - 0xd2, 0xa2, 0xd3, 0xd1, 0xd2, 0xa2, 0xd2, 0xd0, 0xd2, 0xa2, 0xd3, 0xd1, - 0xd2, 0xa2, 0xd3, 0xd0, 0xd2, 0xa2, 0xd3, 0xd1, 0xd2, 0xa2, 0xd4, 0xd0, - 0xd2, 0xa2, 0xd4, 0xd1, 0xd2, 0xa2, 0xd4, 0xd0, 0xd2, 0xa2, 0xd4, 0xd1, - 0xd2, 0xa2, 0xd5, 0xd0, 0xd2, 0xa2, 0xd5, 0xd1, 0xd2, 0xa2, 0xd5, 0xd0, - 0xd2, 0xa2, 0xd6, 0xd1, 0xd2, 0xa2, 0xd6, 0xd0, 0xd2, 0xa2, 0xd6, 0xd1, - 0xd2, 0xa2, 0xd6, 0xd0, 0xd2, 0xa2, 0xd7, 0xd1, 0xd2, 0xa2, 0xd7, 0xd0, - 0xd2, 0xa2, 0xd7, 0xce, 0xd3, 0xa2, 0xd7, 0xd0, 0xd2, 0xa2, 0xd8, 0xce, - 0xd3, 0xa2, 0xd8, 0xd0, 0xd2, 0xa2, 0xd8, 0xce, 0xd3, 0xa2, 0xd9, 0xd0, - 0xd2, 0xa2, 0xd9, 0xce, 0xd3, 0xa2, 0xd9, 0xd0, 0xd2, 0xa2, 0xd9, 0xce, - 0xd3, 0xa2, 0xda, 0xd0, 0xd2, 0xa2, 0xda, 0xce, 0xd3, 0xa2, 0xda, 0xc9, - 0xdc, 0xa2, 0xda, 0xc9, 0xdd, 0xa2, 0xdb, 0xc9, 0xdc, 0xa2, 0xdb, 0xc9, - 0xdd, 0xa2, 0xdb, 0xc9, 0xdc, 0xa2, 0xdb, 0xc9, 0xdd, 0xa2, 0xdc, 0xc9, - 0xdc, 0xa2, 0xdc, 0xc9, 0xdd, 0xa2, 0xdc, 0xc9, 0xdc, 0xa2, 0xdd, 0xc9, - 0xdd, 0xa2, 0xdd, 0xc9, 0xdd, 0xa2, 0xdd, 0xca, 0xdf, 0xa2, 0xdd, 0xca, - 0xdf, 0xa2, 0xde, 0xca, 0xdf, 0xa2, 0xde, 0xca, 0xdf, 0xa2, 0xde, 0xca, - 0xdf, 0xa2, 0xde, 0xca, 0xdf, 0xa2, 0xdf, 0xca, 0xdf, 0xa2, 0xdf, 0xca, - 0xdf, 0xa2, 0xdf, 0xca, 0xdf, 0xa2, 0xdf, 0xca, 0xdf, 0xa2, 0xe0, 0xca, - 0xe0, 0xa2, 0xe0, 0xca, 0xe2, 0xa2, 0xe0, 0xca, 0xe2, 0xa2, 0xe1, 0xca, - 0xe2, 0xa2, 0xe1, 0xca, 0xe2, 0xa2, 0xe1, 0xca, 0xe2, 0xa2, 0xe1, 0xca, - 0xe2, 0xa2, 0xe2, 0xca, 0xe2, 0xa2, 0xe2, 0xca, 0xe2, 0xa2, 0xe2, 0xca, - 0xe2, 0xa2, 0xe2, 0xca, 0xe2, 0xa2, 0xe3, 0xca, 0xe3, 0xa2, 0xe3, 0xcb, - 0xe5, 0xa2, 0xe3, 0xcb, 0xe5, 0xa2, 0xe3, 0xcb, 0xe5, 0xa2, 0xe4, 0xcb, - 0xe5, 0xa2, 0xe4, 0xcb, 0xe5, 0xa2, 0xe4, 0xcb, 0xe5, 0xa2, 0xe4, 0xcb, - 0xe5, 0xa2, 0xe5, 0xcb, 0xe5, 0xa2, 0xe5, 0xcb, 0xe5, 0xa2, 0xe5, 0xcb, - 0xe5, 0xa2, 0xe5, 0xcb, 0xe5, 0xa2, 0xe6, 0xcc, 0xe8, 0xa2, 0xe6, 0xd2, - 0xea, 0xa2, 0xe6, 0xd3, 0xea, 0xa2, 0xe6, 0xd2, 0xea, 0xa2, 0xe7, 0xd1, - 0xeb, 0xa2, 0xe7, 0xd2, 0xea, 0xa2, 0xe7, 0xd1, 0xeb, 0xa2, 0xe7, 0xd2, - 0xea, 0xa2, 0xe8, 0xd1, 0xeb, 0xa2, 0xe8, 0xd2, 0xea, 0xa2, 0xe8, 0xd1, - 0xeb, 0xa2, 0xe8, 0xd2, 0xea, 0xa2, 0xe9, 0xd1, 0xeb, 0xa2, 0xe9, 0xd2, - 0xea, 0xa2, 0xe9, 0xd1, 0xeb, 0xa2, 0xe9, 0xd2, 0xea, 0xa2, 0xea, 0xd1, - 0xeb, 0xa2, 0xea, 0xd1, 0xeb, 0xa2, 0xea, 0xd1, 0xeb, 0xa2, 0xea, 0xd1, - 0xeb, 0xa2, 0xea, 0xd1, 0xeb, 0xa2, 0xea, 0xd1, 0xeb, 0xa2, 0xea, 0xd1, - 0xeb, 0xa2, 0xea, 0xd1, 0xeb, 0xa2, 0xeb, 0xd1, 0xec, 0xa0, 0xea, 0xd1, - 0xec, 0xa2, 0xed, 0xd1, 0xec, 0xa2, 0xed, 0xd1, 0xec, 0xa4, 0xed, 0xd1, - 0xec, 0xa2, 0xee, 0xd1, 0xed, 0xa2, 0xed, 0xd1, 0xed, 0xa2, 0xee, 0xd1, - 0xed, 0xa2, 0xed, 0xd1, 0xed, 0xa2, 0xee, 0xd1, 0xed, 0xa2, 0xee, 0xd1, - 0xed, 0xa2, 0xee, 0xd1, 0xed, 0xa2, 0xee, 0xd0, 0xed, 0xa2, 0xef, 0xd1, - 0xed, 0xa2, 0xef, 0xd0, 0xed, 0xa2, 0xef, 0xd1, 0xed, 0xa2, 0xef, 0xd0, - 0xed, 0xa2, 0xf0, 0xd1, 0xed, 0xa2, 0xf0, 0xd0, 0xed, 0xa2, 0xf0, 0xd1, - 0xed, 0xa2, 0xf0, 0xd0, 0xed, 0xa2, 0xf1, 0xd1, 0xed, 0xa2, 0xf1, 0xd0, - 0xed, 0xa2, 0xf1, 0xd1, 0xed, 0xa2, 0xf1, 0xd0, 0xed, 0xa2, 0xf2, 0xd1, - 0xed, 0xa2, 0xf2, 0xd0, 0xed, 0xa2, 0xf2, 0xd1, 0xed, 0xa2, 0xf2, 0xd0, - 0xed, 0xa2, 0xf2, 0xd1, 0xed, 0xa2, 0xf3, 0xd0, 0xed, 0xa2, 0xf3, 0xd1, - 0xed, 0xa2, 0xf3, 0xd0, 0xed, 0xa2, 0xf3, 0xd1, 0xed, 0xa2, 0xf4, 0xd0, - 0xed, 0xa2, 0xf4, 0xd1, 0xed, 0xa2, 0xf4, 0xd0, 0xed, 0xa2, 0xf4, 0xd1, - 0xed, 0xa2, 0xf5, 0xd0, 0xed, 0xa2, 0xf5, 0xd1, 0xed, 0xa2, 0xf5, 0xd0, - 0xed, 0xa2, 0xf5, 0xc7, 0xf5, 0xa2, 0xf5, 0xc7, 0xf5, 0xa2, 0xf6, 0xc7, - 0xf6, 0xa2, 0xf6, 0xc7, 0xf6, 0xa2, 0xf6, 0xc7, 0xf6, 0xa2, 0xf6, 0xc7, - 0xf6, 0xa2, 0xf7, 0xc7, 0xf7, 0xa2, 0xf7, 0xc7, 0xf7, 0xa2, 0xf7, 0xc7, - 0xf7, 0xa2, 0xf7, 0xc7, 0xf7, 0xa2, 0xf8, 0xc7, 0xf7, 0xa2, 0xf8, 0xc7, - 0xf7, 0xa2, 0xf8, 0xc7, 0xf7, 0xa2, 0xf8, 0xc7, 0xf7, 0xa2, 0xf8, 0xc7, - 0xf7, 0xa2, 0xf9, 0xc7, 0xf7, 0xa2, 0xf9, 0xc7, 0xf7, 0xa2, 0xf9, 0xc7, - 0xf7, 0xa2, 0xf9, 0xc7, 0xf7, 0xa2, 0xfa, 0xc7, 0xf7, 0xa2, 0xfa, 0xc7, - 0xf7, 0xa2, 0xfa, 0xc7, 0xf7, 0xa2, 0xfa, 0xc7, 0xf7, 0xa2, 0xfa, 0xc7, - 0xf7, 0xa2, 0xfb, 0xc7, 0xf7, 0xa2, 0xfb, 0xc7, 0xf7, 0xa2, 0xfb, 0xc7, - 0xf7, 0xa2, 0xfb, 0xc7, 0xf7, 0xa2, 0xfc, 0xc7, 0xf7, 0xa2, 0xfc, 0xc7, - 0xf7, 0xa2, 0xfc, 0xc7, 0xf7, 0xa2, 0xfc, 0xc7, 0xf7, 0xa2, 0xfc, 0xc7, - 0xf7, 0xa2, 0xfd, 0xc7, 0xf7, 0xa2, 0xfd, 0xc7, 0xf7, 0xa2, 0xfd, 0xc7, - 0xf7, 0xa2, 0xfd, 0xc7, 0xf7, 0xa2, 0xfe, 0xc7, 0xf7, 0xa2, 0xfe, 0xc7, - 0xf7, 0xa2, 0xfe, 0xc7, 0xf7, 0xa2, 0xfe, 0xc7, 0xf7, 0xa2, 0xfe, 0xc7, - 0xf7, 0xa2, 0xff, 0xc7, 0xf7, 0xa2, 0xff, 0xc7, 0xf7, 0xa2, 0x03, 0xd8, - 0x8b, 0xa3, 0x0a, 0xd6, 0x8c, 0xa3, 0x0f, 0xd4, 0x8c, 0xa3, 0x14, 0xd6, - 0x8c, 0xa3, 0x17, 0xd4, 0x8c, 0xa3, 0x1b, 0xd6, 0x8c, 0xa3, 0x1e, 0xd4, - 0x8c, 0xa3, 0x20, 0xd6, 0x8c, 0xa3, 0x23, 0xd4, 0x8c, 0xa3, 0x25, 0xd6, - 0x8c, 0xa3, 0x27, 0xd4, 0x8c, 0xa3, 0x29, 0xd6, 0x8c, 0xa3, 0x2b, 0xd4, - 0x8c, 0xa3, 0x2d, 0xd6, 0x8c, 0xa3, 0x2f, 0xd4, 0x8c, 0xa3, 0x31, 0xd6, - 0x8c, 0xa3, 0x32, 0xd4, 0x8c, 0xa3, 0x34, 0xd6, 0x8c, 0xa3, 0x35, 0xd4, - 0x8c, 0xa3, 0x37, 0xd6, 0x8c, 0xa3, 0x38, 0xd4, 0x8c, 0xa3, 0x3a, 0xd6, - 0x8c, 0xa3, 0x3b, 0xd4, 0x8c, 0xa3, 0x3c, 0xd6, 0x8c, 0xa3, 0x3e, 0xd4, - 0x8c, 0xa3, 0x3f, 0xd6, 0x8c, 0xa3, 0x40, 0xd4, 0x8c, 0xa3, 0x42, 0xd6, - 0x8c, 0xa3, 0x43, 0xd4, 0x8c, 0xa3, 0x44, 0xd6, 0x8c, 0xa3, 0x45, 0xd4, - 0x8c, 0xa3, 0x46, 0xd6, 0x8c, 0xa3, 0x47, 0xd4, 0x8c, 0xa3, 0x48, 0xd6, - 0x8c, 0xa3, 0x49, 0xd4, 0x8c, 0xa3, 0x4a, 0xd6, 0x8c, 0xa3, 0x4b, 0xd4, - 0x8c, 0xa3, 0x4c, 0xd6, 0x8c, 0xa3, 0x4d, 0xd4, 0x8c, 0xa3, 0x4e, 0xd6, - 0x8c, 0xa3, 0x4f, 0xd4, 0x8c, 0xa3, 0x50, 0xd6, 0x8c, 0xa3, 0x51, 0xd4, - 0x8c, 0xa3, 0x52, 0xd6, 0x8c, 0xa3, 0x53, 0xd4, 0x8c, 0xa3, 0x54, 0xd6, - 0x8c, 0xa3, 0x55, 0xd4, 0x8c, 0xa3, 0x56, 0xd6, 0x8c, 0xa3, 0x57, 0xd4, - 0x8c, 0xa3, 0x58, 0xd6, 0x8c, 0xa3, 0x58, 0xd4, 0x8c, 0xa3, 0x59, 0xd6, - 0x8c, 0xa3, 0x5a, 0xd4, 0x8c, 0xa3, 0x5b, 0xd6, 0x8c, 0xa3, 0x5c, 0xd4, - 0x8c, 0xa3, 0x5d, 0xd6, 0x8c, 0xa3, 0x5d, 0xd4, 0x8c, 0xa3, 0x5e, 0xd6, - 0x8c, 0xa3, 0x5f, 0xd4, 0x8c, 0xa3, 0x60, 0xd6, 0x8c, 0xa3, 0x60, 0xd4, - 0x8c, 0xa3, 0x61, 0xd6, 0x8c, 0xa3, 0x62, 0xd4, 0x8c, 0xa3, 0x63, 0xd3, - 0x8d, 0xa3, 0x63, 0xd4, 0x8c, 0xa3, 0x64, 0xd3, 0x8d, 0xa3, 0x65, 0xd4, - 0x8c, 0xa3, 0x66, 0xd3, 0x8d, 0xa3, 0x66, 0xd4, 0x8c, 0xa3, 0x67, 0xd3, - 0x8d, 0xa3, 0x68, 0xd4, 0x8c, 0xa3, 0x68, 0xd3, 0x8d, 0xa3, 0x69, 0xd4, - 0x8c, 0xa3, 0x6a, 0xd3, 0x8d, 0xa3, 0x6a, 0xd4, 0x8c, 0xa3, 0x6b, 0xd3, - 0x8d, 0xa3, 0x6c, 0xd4, 0x8c, 0xa3, 0x6c, 0xd3, 0x8d, 0xa3, 0x6d, 0xd4, - 0x8c, 0xa3, 0x6e, 0xd3, 0x8d, 0xa3, 0x6e, 0xd4, 0x8c, 0xa3, 0x6f, 0xd3, - 0x8d, 0xa3, 0x70, 0xd4, 0x8c, 0xa3, 0x70, 0xd3, 0x8d, 0xa3, 0x71, 0xd4, - 0x8c, 0xa3, 0x72, 0xd3, 0x8d, 0xa3, 0x72, 0xd4, 0x8c, 0xa3, 0x73, 0xd3, - 0x8d, 0xa3, 0x73, 0xd4, 0x8c, 0xa3, 0x74, 0xd3, 0x8d, 0xa3, 0x75, 0xd4, - 0x8c, 0xa3, 0x75, 0xd3, 0x8d, 0xa3, 0x76, 0xd4, 0x8c, 0xa3, 0x76, 0xd3, - 0x8d, 0xa3, 0x77, 0xd4, 0x8c, 0xa3, 0x78, 0xd3, 0x8d, 0xa3, 0x78, 0xd4, - 0x8c, 0xa3, 0x79, 0xd3, 0x8d, 0xa3, 0x79, 0xd4, 0x8c, 0xa3, 0x7a, 0xd3, - 0x8d, 0xa3, 0x7a, 0xd1, 0x8d, 0xa3, 0x7b, 0xd3, 0x8d, 0xa3, 0x7c, 0xd1, - 0x8d, 0xa3, 0x7c, 0xd3, 0x8d, 0xa3, 0x7d, 0xd1, 0x8d, 0xa3, 0x7d, 0xd3, - 0x8d, 0xa3, 0x7e, 0xd1, 0x8d, 0xa3, 0x7e, 0xd3, 0x8d, 0xa3, 0x7f, 0xd1, - 0x8d, 0xa3, 0x7f, 0xd3, 0x8d, 0xa3, 0x80, 0xd1, 0x8d, 0xa3, 0x81, 0xd3, - 0x8d, 0xa3, 0x81, 0xd1, 0x8d, 0xa3, 0x82, 0xd3, 0x8d, 0xa3, 0x82, 0xd1, - 0x8d, 0xa3, 0x83, 0xd3, 0x8d, 0xa3, 0x83, 0xd1, 0x8d, 0xa3, 0x84, 0xd3, - 0x8d, 0xa3, 0x84, 0xd1, 0x8d, 0xa3, 0x85, 0xd3, 0x8d, 0xa3, 0x85, 0xd1, - 0x8d, 0xa3, 0x86, 0xd3, 0x8d, 0xa3, 0x86, 0xd1, 0x8d, 0xa3, 0x87, 0xd3, - 0x8d, 0xa3, 0x87, 0xd1, 0x8d, 0xa3, 0x88, 0xd3, 0x8d, 0xa3, 0x88, 0xd1, - 0x8d, 0xa3, 0x89, 0xd3, 0x8d, 0xa3, 0x89, 0xd1, 0x8d, 0xa3, 0x8a, 0xd1, - 0x8e, 0xa3, 0x8a, 0xd1, 0x8d, 0xa3, 0x8b, 0xd1, 0x8e, 0xa3, 0x8b, 0xd1, - 0x8d, 0xa3, 0x8c, 0xd1, 0x8e, 0xa3, 0x8c, 0xd1, 0x8d, 0xa3, 0x8d, 0xd1, - 0x8e, 0xa3, 0x8c, 0xd1, 0x8d, 0xa3, 0x8d, 0xd1, 0x8e, 0xa3, 0x8c, 0xd1, - 0x8e, 0xa3, 0x8d, 0xd1, 0x8e, 0xa3, 0x8d, 0xd1, 0x8f, 0xa1, 0x8d, 0xd1, - 0x8f, 0xa3, 0x8d, 0xd1, 0x90, 0xa1, 0x8d, 0xd1, 0x90, 0xa3, 0x8d, 0xd1, - 0x91, 0xa1, 0x8d, 0xd1, 0x91, 0xa3, 0x8d, 0xd1, 0x92, 0xa1, 0x8d, 0xd1, - 0x92, 0xa3, 0x8d, 0xd1, 0x93, 0xa1, 0x8d, 0xd1, 0x93, 0xa3, 0x8d, 0xd1, - 0x94, 0xa1, 0x8d, 0xd1, 0x94, 0xa3, 0x8d, 0xd1, 0x94, 0xa1, 0x8d, 0xd1, - 0x95, 0xa3, 0x8d, 0xd1, 0x95, 0xa1, 0x8d, 0xd1, 0x96, 0xa3, 0x8d, 0xd1, - 0x96, 0xa1, 0x8d, 0xd1, 0x97, 0xa3, 0x8d, 0xd1, 0x97, 0xa1, 0x8d, 0xd1, - 0x98, 0xa3, 0x8d, 0xd1, 0x98, 0xa1, 0x8d, 0xd1, 0x98, 0xa3, 0x9a, 0xd1, - 0x99, 0x96, 0x9a, 0xd1, 0x99, 0x96, 0x9a, 0xd1, 0x9a, 0x96, 0x9a, 0xd1, - 0x9a, 0x96, 0x9a, 0xd1, 0x9a, 0x96, 0x9b, 0xd1, 0x9b, 0x96, 0x9f, 0xd1, - 0x9b, 0x97, 0x9f, 0xd1, 0x9c, 0x97, 0x9f, 0xd1, 0x9c, 0x97, 0x9f, 0xd1, - 0x9d, 0x97, 0x9f, 0xd1, 0x9d, 0x97, 0x9f, 0xd1, 0x9d, 0x97, 0x9f, 0xd1, - 0x9e, 0x97, 0x9f, 0xd1, 0x9e, 0x97, 0x9f, 0xd1, 0x9f, 0x97, 0x9f, 0xd1, - 0x9f, 0x97, 0x9f, 0xd1, 0x9f, 0x97, 0xa3, 0xd1, 0xa0, 0x98, 0xa0, 0xd1, - 0xa0, 0x97, 0xa3, 0xd1, 0xa1, 0x98, 0xa1, 0xd1, 0xa1, 0x97, 0xa3, 0xd1, - 0xa1, 0x98, 0xa2, 0xd1, 0xa2, 0x97, 0xa3, 0xd1, 0xa2, 0x98, 0xa3, 0xd1, - 0xa3, 0x97, 0xa3, 0xd1, 0xa3, 0x98, 0xa3, 0xd1, 0xa3, 0x97, 0xa3, 0xd1, - 0xa4, 0x98, 0xa3, 0xd1, 0xa4, 0x97, 0xa3, 0xd1, 0xa5, 0x98, 0xa3, 0xd1, - 0xa5, 0x97, 0xa3, 0xd1, 0xa5, 0x98, 0xa3, 0xd1, 0xa6, 0x97, 0xa3, 0xd1, - 0xa6, 0x98, 0xa3, 0xd1, 0xa6, 0x97, 0xa3, 0xd1, 0xa7, 0x98, 0xa3, 0xd1, - 0xa7, 0x97, 0xa3, 0xd1, 0xa8, 0x98, 0xa3, 0xd1, 0xa8, 0x97, 0xa3, 0xd1, - 0xa8, 0x98, 0xa3, 0xd1, 0xa9, 0x97, 0xa3, 0xd1, 0xa9, 0x98, 0xa3, 0xd1, - 0xaa, 0x97, 0xa3, 0xd1, 0xaa, 0x98, 0xa3, 0xd1, 0xaa, 0x97, 0xa3, 0xd1, - 0xab, 0x98, 0xa3, 0xd1, 0xab, 0x97, 0xa3, 0xd1, 0xab, 0x98, 0xa3, 0xd1, - 0xac, 0x97, 0xa3, 0xd1, 0xac, 0x98, 0xa3, 0xd1, 0xac, 0x97, 0xa3, 0xd1, - 0xad, 0x98, 0xa3, 0xd1, 0xad, 0x97, 0xa3, 0xd1, 0xae, 0x98, 0xa3, 0xd1, - 0xae, 0x97, 0xa3, 0xd1, 0xae, 0x98, 0xa3, 0xd1, 0xaf, 0x97, 0xa3, 0xd1, - 0xaf, 0x98, 0xa3, 0xd1, 0xaf, 0x97, 0xa3, 0xd1, 0xb0, 0x98, 0xa3, 0xd1, - 0xb0, 0x97, 0xa3, 0xd1, 0xb0, 0x98, 0xa3, 0xd1, 0xb1, 0x97, 0xa3, 0xd1, - 0xb1, 0x98, 0xa3, 0xd1, 0xb2, 0x97, 0xa3, 0xd1, 0xb2, 0x98, 0xa3, 0xd1, - 0xb2, 0x97, 0xa3, 0xd1, 0xb3, 0x98, 0xa3, 0xd1, 0xb3, 0x97, 0xa3, 0xd1, - 0xb3, 0x98, 0xa3, 0xd1, 0xb4, 0x97, 0xa3, 0xd1, 0xb4, 0x98, 0xa3, 0xd1, - 0xb4, 0x97, 0xa3, 0xd1, 0xb5, 0x98, 0xa3, 0xd1, 0xb5, 0x97, 0xa3, 0xd1, - 0xb5, 0x98, 0xa3, 0xd1, 0xb6, 0x97, 0xa3, 0xd1, 0xb6, 0x98, 0xa3, 0xd1, - 0xb6, 0x97, 0xa3, 0xd1, 0xb7, 0x98, 0xa3, 0xd1, 0xb7, 0x97, 0xa3, 0xd1, - 0xb7, 0x98, 0xa3, 0xd1, 0xb8, 0x97, 0xa3, 0xd1, 0xb8, 0x98, 0xa3, 0xd1, - 0xb8, 0x97, 0xa3, 0xd1, 0xb9, 0x98, 0xa3, 0xd1, 0xb9, 0x97, 0xa3, 0xd1, - 0xb9, 0x98, 0xa3, 0xd1, 0xba, 0x97, 0xa3, 0xd1, 0xba, 0x98, 0xa3, 0xd1, - 0xba, 0x97, 0xa3, 0xd1, 0xbb, 0x98, 0xa3, 0xd1, 0xbb, 0x97, 0xa3, 0xd1, - 0xbb, 0x98, 0xa3, 0xd1, 0xbc, 0x97, 0xd2, 0xd1, 0xbc, 0xa8, 0xd2, 0xd1, - 0xbc, 0xaa, 0xd2, 0xd1, 0xbd, 0xa8, 0xd2, 0xd1, 0xbd, 0xaa, 0xd2, 0xd1, - 0xbd, 0xa8, 0xd2, 0xd1, 0xbe, 0xaa, 0xd2, 0xd1, 0xbe, 0xa8, 0xd2, 0xd1, - 0xbe, 0xaa, 0xd2, 0xd1, 0xbf, 0xa8, 0xd2, 0xd1, 0xbf, 0xaa, 0xd2, 0xd1, - 0xbf, 0xa8, 0xd2, 0xd1, 0xc0, 0xaa, 0xd2, 0xd1, 0xc0, 0xa8, 0xd2, 0xd1, - 0xc0, 0xaa, 0xd2, 0xd1, 0xc1, 0xa8, 0xd2, 0xd1, 0xc1, 0xaa, 0xd2, 0xd1, - 0xc1, 0xa8, 0xd2, 0xd1, 0xc1, 0xaa, 0xd2, 0xd1, 0xc2, 0xa8, 0xd2, 0xd1, - 0xc2, 0xaa, 0xd2, 0xd1, 0xc2, 0xa8, 0xd2, 0xd1, 0xc3, 0xaa, 0xd2, 0xd1, - 0xc3, 0xa8, 0xd2, 0xd1, 0xc3, 0xaa, 0xd2, 0xd1, 0xc4, 0xa8, 0xd2, 0xd1, - 0xc4, 0xaa, 0xd2, 0xd1, 0xc4, 0xa8, 0xd2, 0xd1, 0xc5, 0xaa, 0xd2, 0xd1, - 0xc5, 0xa8, 0xd2, 0xd1, 0xc5, 0xa5, 0xd2, 0xd1, 0xc6, 0xa8, 0xd2, 0xd1, - 0xc6, 0xa5, 0xd2, 0xd1, 0xc6, 0xa8, 0xd2, 0xd1, 0xc6, 0xa5, 0xd2, 0xd1, - 0xc7, 0xa8, 0xd2, 0xd1, 0xc7, 0xa5, 0xd2, 0xd1, 0xc7, 0xa8, 0xd2, 0xd1, - 0xc8, 0xa5, 0xd2, 0xd1, 0xc8, 0xa8, 0xd2, 0xd1, 0xc8, 0xa5, 0xd2, 0xd1, - 0xc9, 0xa8, 0xd2, 0xd1, 0xc9, 0xa5, 0xd2, 0xd1, 0xc9, 0xa8, 0xd2, 0xd1, - 0xc9, 0xa5, 0xd2, 0xd1, 0xca, 0xa8, 0xd2, 0xd1, 0xca, 0xa5, 0xd2, 0xd1, - 0xca, 0xa8, 0xd2, 0xd1, 0xcb, 0xa5, 0xd2, 0xd1, 0xcb, 0xa8, 0xd2, 0xd1, - 0xcb, 0xa5, 0xd2, 0xd1, 0xcc, 0xa3, 0xd2, 0xd1, 0xcc, 0xa5, 0xd2, 0xd1, - 0xcc, 0xa3, 0xd2, 0xd1, 0xcc, 0xa5, 0xd2, 0xd1, 0xcd, 0xa3, 0xd2, 0xd1, - 0xcd, 0xa5, 0xd2, 0xd1, 0xcd, 0xa3, 0xd2, 0xd1, 0xce, 0xa5, 0xd2, 0xd1, - 0xce, 0xa3, 0xd2, 0xd1, 0xce, 0xa5, 0xd2, 0xd1, 0xce, 0xa3, 0xd2, 0xd1, - 0xcf, 0xa5, 0xd2, 0xd1, 0xcf, 0xa3, 0xd2, 0xd1, 0xcf, 0xa5, 0xd2, 0xd1, - 0xd0, 0xa3, 0xd2, 0xd1, 0xd0, 0xa5, 0xd2, 0xd1, 0xd0, 0xa3, 0xd2, 0xd1, - 0xd0, 0xa5, 0xd2, 0xd1, 0xd1, 0xa3, 0xd2, 0xd1, 0xd1, 0xa5, 0xd2, 0xd1, - 0xd1, 0xa3, 0xd3, 0xd1, 0xd2, 0xa3, 0xd2, 0xd1, 0xd2, 0xa3, 0xd3, 0xd1, - 0xd2, 0xa3, 0xd2, 0xd1, 0xd2, 0xa3, 0xd3, 0xd1, 0xd2, 0xa3, 0xd3, 0xd1, - 0xd2, 0xa3, 0xd3, 0xd1, 0xd2, 0xa3, 0xd4, 0xd0, 0xd2, 0xa3, 0xd4, 0xd1, - 0xd2, 0xa3, 0xd4, 0xd0, 0xd2, 0xa3, 0xd4, 0xd1, 0xd2, 0xa3, 0xd5, 0xd0, - 0xd2, 0xa3, 0xd5, 0xd1, 0xd2, 0xa3, 0xd5, 0xd0, 0xd2, 0xa3, 0xd6, 0xd1, - 0xd2, 0xa3, 0xd6, 0xd0, 0xd2, 0xa3, 0xd6, 0xd1, 0xd2, 0xa3, 0xd6, 0xd0, - 0xd2, 0xa3, 0xd7, 0xd1, 0xd2, 0xa3, 0xd7, 0xd0, 0xd2, 0xa3, 0xd7, 0xcf, - 0xd3, 0xa3, 0xd7, 0xd0, 0xd2, 0xa3, 0xd8, 0xcf, 0xd3, 0xa3, 0xd8, 0xd0, - 0xd2, 0xa3, 0xd8, 0xcf, 0xd3, 0xa3, 0xd9, 0xd0, 0xd2, 0xa3, 0xd9, 0xcf, - 0xd3, 0xa3, 0xd9, 0xd0, 0xd2, 0xa3, 0xd9, 0xcf, 0xd3, 0xa3, 0xda, 0xd0, - 0xd2, 0xa3, 0xda, 0xcf, 0xd3, 0xa3, 0xda, 0xd0, 0xd2, 0xa3, 0xda, 0xc9, - 0xdb, 0xa3, 0xdb, 0xc9, 0xdb, 0xa3, 0xdb, 0xc9, 0xdb, 0xa3, 0xdb, 0xc9, - 0xde, 0xa3, 0xdb, 0xc9, 0xde, 0xa3, 0xdc, 0xc9, 0xde, 0xa3, 0xdc, 0xc9, - 0xde, 0xa3, 0xdc, 0xc9, 0xde, 0xa3, 0xdd, 0xc9, 0xde, 0xa3, 0xdd, 0xc9, - 0xde, 0xa3, 0xdd, 0xc9, 0xde, 0xa3, 0xdd, 0xc9, 0xde, 0xa3, 0xde, 0xc9, - 0xde, 0xa3, 0xde, 0xc9, 0xde, 0xa3, 0xde, 0xc9, 0xde, 0xa3, 0xde, 0xc9, - 0xde, 0xa3, 0xdf, 0xca, 0xe1, 0xa3, 0xdf, 0xca, 0xe1, 0xa3, 0xdf, 0xca, - 0xe1, 0xa3, 0xdf, 0xca, 0xe1, 0xa3, 0xe0, 0xca, 0xe1, 0xa3, 0xe0, 0xca, - 0xe1, 0xa3, 0xe0, 0xca, 0xe1, 0xa3, 0xe1, 0xca, 0xe1, 0xa3, 0xe1, 0xca, - 0xe1, 0xa3, 0xe1, 0xca, 0xe1, 0xa3, 0xe1, 0xca, 0xe1, 0xa3, 0xe2, 0xcb, - 0xe4, 0xa3, 0xe2, 0xcb, 0xe4, 0xa3, 0xe2, 0xcb, 0xe4, 0xa3, 0xe2, 0xcb, - 0xe4, 0xa3, 0xe3, 0xcb, 0xe4, 0xa3, 0xe3, 0xcb, 0xe4, 0xa3, 0xe3, 0xcb, - 0xe4, 0xa3, 0xe3, 0xcb, 0xe4, 0xa3, 0xe4, 0xcb, 0xe4, 0xa3, 0xe4, 0xcb, - 0xe4, 0xa3, 0xe4, 0xcb, 0xe4, 0xa3, 0xe4, 0xcb, 0xe6, 0xa3, 0xe5, 0xcb, - 0xe7, 0xa3, 0xe5, 0xcb, 0xe6, 0xa3, 0xe5, 0xcb, 0xe7, 0xa3, 0xe5, 0xd2, - 0xea, 0xa3, 0xe6, 0xd3, 0xea, 0xa3, 0xe6, 0xd2, 0xea, 0xa3, 0xe6, 0xd3, - 0xea, 0xa3, 0xe6, 0xd2, 0xea, 0xa3, 0xe7, 0xd1, 0xeb, 0xa3, 0xe7, 0xd2, - 0xea, 0xa3, 0xe7, 0xd1, 0xeb, 0xa3, 0xe7, 0xd2, 0xea, 0xa3, 0xe8, 0xd1, - 0xeb, 0xa3, 0xe8, 0xd2, 0xea, 0xa3, 0xe8, 0xd1, 0xeb, 0xa3, 0xe8, 0xd2, - 0xea, 0xa3, 0xe9, 0xd1, 0xeb, 0xa3, 0xe9, 0xd2, 0xea, 0xa3, 0xe9, 0xd1, - 0xeb, 0xa3, 0xe9, 0xd2, 0xea, 0xa3, 0xea, 0xd1, 0xeb, 0xa3, 0xea, 0xd2, - 0xea, 0xa3, 0xea, 0xd1, 0xeb, 0xa3, 0xea, 0xd1, 0xeb, 0xa3, 0xea, 0xd1, - 0xeb, 0xa3, 0xea, 0xd1, 0xeb, 0xa3, 0xea, 0xd1, 0xeb, 0xa3, 0xea, 0xd1, - 0xeb, 0xa3, 0xea, 0xd1, 0xec, 0xa3, 0xea, 0xd1, 0xec, 0xa3, 0xed, 0xd1, - 0xec, 0xa3, 0xed, 0xd1, 0xec, 0xa5, 0xed, 0xd1, 0xec, 0xa3, 0xee, 0xd1, - 0xed, 0xa3, 0xed, 0xd1, 0xed, 0xa3, 0xee, 0xd1, 0xed, 0xa3, 0xed, 0xd1, - 0xed, 0xa3, 0xee, 0xd1, 0xed, 0xa3, 0xee, 0xd1, 0xed, 0xa3, 0xee, 0xd1, - 0xed, 0xa3, 0xee, 0xd1, 0xed, 0xa3, 0xef, 0xd1, 0xed, 0xa3, 0xef, 0xd1, - 0xed, 0xa3, 0xef, 0xd1, 0xed, 0xa3, 0xef, 0xcf, 0xed, 0xa3, 0xf0, 0xd1, - 0xed, 0xa3, 0xf0, 0xcf, 0xed, 0xa3, 0xf0, 0xd1, 0xed, 0xa3, 0xf0, 0xcf, - 0xed, 0xa3, 0xf1, 0xd1, 0xed, 0xa3, 0xf1, 0xcf, 0xed, 0xa3, 0xf1, 0xd1, - 0xed, 0xa3, 0xf1, 0xcf, 0xed, 0xa3, 0xf2, 0xd1, 0xed, 0xa3, 0xf2, 0xcf, - 0xed, 0xa3, 0xf2, 0xd1, 0xed, 0xa3, 0xf2, 0xcf, 0xed, 0xa3, 0xf2, 0xd1, - 0xed, 0xa3, 0xf3, 0xcf, 0xed, 0xa3, 0xf3, 0xd1, 0xed, 0xa3, 0xf3, 0xcf, - 0xed, 0xa3, 0xf3, 0xd1, 0xed, 0xa3, 0xf4, 0xcf, 0xed, 0xa3, 0xf4, 0xd1, - 0xed, 0xa3, 0xf4, 0xcf, 0xed, 0xa3, 0xf4, 0xd1, 0xed, 0xa3, 0xf5, 0xcf, - 0xed, 0xa3, 0xf5, 0xd1, 0xed, 0xa3, 0xf5, 0xcf, 0xed, 0xa3, 0xf5, 0xd1, - 0xed, 0xa3, 0xf5, 0xc7, 0xf6, 0xa3, 0xf6, 0xc7, 0xf6, 0xa3, 0xf6, 0xc7, - 0xf6, 0xa3, 0xf6, 0xc7, 0xf6, 0xa3, 0xf6, 0xc7, 0xf6, 0xa3, 0xf7, 0xc7, - 0xf7, 0xa3, 0xf7, 0xc7, 0xf7, 0xa3, 0xf7, 0xc7, 0xf7, 0xa3, 0xf7, 0xc7, - 0xf7, 0xa3, 0xf8, 0xc7, 0xf7, 0xa3, 0xf8, 0xc7, 0xf7, 0xa3, 0xf8, 0xc7, - 0xf7, 0xa3, 0xf8, 0xc7, 0xf7, 0xa3, 0xf8, 0xc7, 0xf7, 0xa3, 0xf9, 0xc7, - 0xf7, 0xa3, 0xf9, 0xc7, 0xf7, 0xa3, 0xf9, 0xc7, 0xf7, 0xa3, 0xf9, 0xc7, - 0xf7, 0xa3, 0xfa, 0xc7, 0xf7, 0xa3, 0xfa, 0xc7, 0xf7, 0xa3, 0xfa, 0xc7, - 0xf7, 0xa3, 0xfa, 0xc7, 0xf7, 0xa3, 0xfa, 0xc7, 0xf7, 0xa3, 0xfb, 0xc7, - 0xf7, 0xa3, 0xfb, 0xc7, 0xf7, 0xa3, 0xfb, 0xc7, 0xf7, 0xa3, 0xfb, 0xc7, - 0xf7, 0xa3, 0xfc, 0xc7, 0xf7, 0xa3, 0xfc, 0xc7, 0xf7, 0xa3, 0xfc, 0xc7, - 0xf7, 0xa3, 0xfc, 0xc7, 0xf7, 0xa3, 0xfc, 0xc7, 0xf7, 0xa3, 0xfd, 0xc7, - 0xf7, 0xa3, 0xfd, 0xc7, 0xf7, 0xa3, 0xfd, 0xc7, 0xf7, 0xa3, 0xfd, 0xc7, - 0xf7, 0xa3, 0xfe, 0xc7, 0xf7, 0xa3, 0xfe, 0xc7, 0xf7, 0xa3, 0xfe, 0xc7, - 0xf7, 0xa3, 0xfe, 0xc7, 0xf7, 0xa3, 0xfe, 0xc7, 0xf7, 0xa3, 0xff, 0xc7, - 0xf7, 0xa3, 0xff, 0xc7, 0xf7, 0xa3, 0x03, 0xd8, 0x8b, 0xa3, 0x0a, 0xd8, - 0x8b, 0xa3, 0x0f, 0xd8, 0x8b, 0xa3, 0x14, 0xd6, 0x8c, 0xa3, 0x17, 0xd8, - 0x8b, 0xa3, 0x1b, 0xd6, 0x8c, 0xa3, 0x1e, 0xd8, 0x8b, 0xa3, 0x20, 0xd6, - 0x8c, 0xa3, 0x23, 0xd8, 0x8b, 0xa3, 0x25, 0xd6, 0x8c, 0xa3, 0x27, 0xd8, - 0x8b, 0xa3, 0x29, 0xd6, 0x8c, 0xa3, 0x2b, 0xd8, 0x8b, 0xa3, 0x2d, 0xd6, - 0x8c, 0xa3, 0x2f, 0xd4, 0x8c, 0xa3, 0x31, 0xd6, 0x8c, 0xa3, 0x32, 0xd4, - 0x8c, 0xa3, 0x34, 0xd6, 0x8c, 0xa3, 0x35, 0xd4, 0x8c, 0xa3, 0x37, 0xd6, - 0x8c, 0xa3, 0x38, 0xd4, 0x8c, 0xa3, 0x3a, 0xd6, 0x8c, 0xa3, 0x3b, 0xd4, - 0x8c, 0xa3, 0x3c, 0xd6, 0x8c, 0xa3, 0x3e, 0xd4, 0x8c, 0xa3, 0x3f, 0xd6, - 0x8c, 0xa3, 0x40, 0xd4, 0x8c, 0xa3, 0x42, 0xd6, 0x8c, 0xa3, 0x43, 0xd4, - 0x8c, 0xa3, 0x44, 0xd6, 0x8c, 0xa3, 0x45, 0xd4, 0x8c, 0xa3, 0x46, 0xd6, - 0x8c, 0xa3, 0x47, 0xd4, 0x8c, 0xa3, 0x48, 0xd6, 0x8c, 0xa3, 0x49, 0xd4, - 0x8c, 0xa3, 0x4a, 0xd6, 0x8c, 0xa3, 0x4b, 0xd4, 0x8c, 0xa3, 0x4c, 0xd6, - 0x8c, 0xa3, 0x4d, 0xd4, 0x8c, 0xa3, 0x4e, 0xd6, 0x8c, 0xa3, 0x4f, 0xd4, - 0x8c, 0xa3, 0x50, 0xd6, 0x8c, 0xa3, 0x51, 0xd4, 0x8c, 0xa3, 0x52, 0xd6, - 0x8c, 0xa3, 0x53, 0xd4, 0x8c, 0xa3, 0x54, 0xd6, 0x8c, 0xa3, 0x55, 0xd4, - 0x8c, 0xa3, 0x56, 0xd6, 0x8c, 0xa3, 0x57, 0xd4, 0x8c, 0xa3, 0x58, 0xd6, - 0x8c, 0xa3, 0x58, 0xd4, 0x8c, 0xa3, 0x59, 0xd6, 0x8c, 0xa3, 0x5a, 0xd4, - 0x8c, 0xa3, 0x5b, 0xd6, 0x8c, 0xa3, 0x5c, 0xd4, 0x8c, 0xa3, 0x5d, 0xd6, - 0x8c, 0xa3, 0x5d, 0xd4, 0x8c, 0xa3, 0x5e, 0xd6, 0x8c, 0xa3, 0x5f, 0xd4, - 0x8c, 0xa3, 0x60, 0xd2, 0x8d, 0xa3, 0x60, 0xd4, 0x8c, 0xa3, 0x61, 0xd2, - 0x8d, 0xa3, 0x62, 0xd4, 0x8c, 0xa3, 0x63, 0xd2, 0x8d, 0xa3, 0x63, 0xd4, - 0x8c, 0xa3, 0x64, 0xd2, 0x8d, 0xa3, 0x65, 0xd4, 0x8c, 0xa3, 0x66, 0xd2, - 0x8d, 0xa3, 0x66, 0xd4, 0x8c, 0xa3, 0x67, 0xd2, 0x8d, 0xa3, 0x68, 0xd4, - 0x8c, 0xa3, 0x68, 0xd2, 0x8d, 0xa3, 0x69, 0xd4, 0x8c, 0xa3, 0x6a, 0xd2, - 0x8d, 0xa3, 0x6a, 0xd4, 0x8c, 0xa3, 0x6b, 0xd2, 0x8d, 0xa3, 0x6c, 0xd4, - 0x8c, 0xa3, 0x6c, 0xd2, 0x8d, 0xa3, 0x6d, 0xd4, 0x8c, 0xa3, 0x6e, 0xd2, - 0x8d, 0xa3, 0x6e, 0xd4, 0x8c, 0xa3, 0x6f, 0xd2, 0x8d, 0xa3, 0x70, 0xd4, - 0x8c, 0xa3, 0x70, 0xd2, 0x8d, 0xa3, 0x71, 0xd4, 0x8c, 0xa3, 0x72, 0xd2, - 0x8d, 0xa3, 0x72, 0xd4, 0x8c, 0xa3, 0x73, 0xd2, 0x8d, 0xa3, 0x73, 0xd4, - 0x8c, 0xa3, 0x74, 0xd2, 0x8d, 0xa3, 0x75, 0xd4, 0x8c, 0xa3, 0x75, 0xd2, - 0x8d, 0xa3, 0x76, 0xd4, 0x8c, 0xa3, 0x76, 0xd2, 0x8d, 0xa3, 0x77, 0xd4, - 0x8c, 0xa3, 0x78, 0xd2, 0x8d, 0xa3, 0x78, 0xd4, 0x8c, 0xa3, 0x79, 0xd2, - 0x8d, 0xa3, 0x79, 0xd4, 0x8c, 0xa3, 0x7a, 0xd2, 0x8d, 0xa3, 0x7a, 0xd4, - 0x8c, 0xa3, 0x7b, 0xd2, 0x8d, 0xa3, 0x7c, 0xd4, 0x8c, 0xa3, 0x7c, 0xd2, - 0x8d, 0xa3, 0x7d, 0xd4, 0x8c, 0xa3, 0x7d, 0xd2, 0x8d, 0xa3, 0x7e, 0xd4, - 0x8c, 0xa3, 0x7e, 0xd2, 0x8d, 0xa3, 0x7f, 0xd4, 0x8c, 0xa3, 0x7f, 0xd2, - 0x8d, 0xa3, 0x80, 0xd4, 0x8c, 0xa3, 0x81, 0xd2, 0x8d, 0xa3, 0x81, 0xd1, - 0x8d, 0xa3, 0x82, 0xd2, 0x8d, 0xa3, 0x82, 0xd1, 0x8d, 0xa3, 0x83, 0xd2, - 0x8d, 0xa3, 0x83, 0xd1, 0x8d, 0xa3, 0x84, 0xd2, 0x8d, 0xa3, 0x84, 0xd1, - 0x8d, 0xa3, 0x85, 0xd2, 0x8d, 0xa3, 0x85, 0xd1, 0x8d, 0xa3, 0x86, 0xd2, - 0x8d, 0xa3, 0x86, 0xd1, 0x8d, 0xa3, 0x87, 0xd2, 0x8d, 0xa3, 0x87, 0xd1, - 0x8d, 0xa3, 0x88, 0xd2, 0x8d, 0xa3, 0x88, 0xd1, 0x8d, 0xa3, 0x89, 0xd2, - 0x8d, 0xa3, 0x89, 0xd1, 0x8d, 0xa3, 0x8a, 0xd2, 0x8d, 0xa3, 0x8a, 0xd1, - 0x8d, 0xa3, 0x8b, 0xd2, 0x8d, 0xa3, 0x8b, 0xd1, 0x8d, 0xa3, 0x8c, 0xd1, - 0x8e, 0xa3, 0x8c, 0xd1, 0x8d, 0xa3, 0x8d, 0xd1, 0x8e, 0xa3, 0x8c, 0xd1, - 0x8d, 0xa3, 0x8d, 0xd1, 0x8e, 0xa3, 0x8c, 0xd1, 0x8e, 0xa3, 0x8d, 0xd1, - 0x8e, 0xa3, 0x8d, 0xd1, 0x8f, 0xa1, 0x8d, 0xd1, 0x8f, 0xa3, 0x8d, 0xd1, - 0x90, 0xa1, 0x8d, 0xd1, 0x90, 0xa3, 0x8d, 0xd1, 0x91, 0xa1, 0x8d, 0xd1, - 0x91, 0xa3, 0x8d, 0xd1, 0x92, 0xa1, 0x8d, 0xd1, 0x92, 0xa3, 0x8d, 0xd1, - 0x93, 0xa1, 0x8d, 0xd1, 0x93, 0xa3, 0x8d, 0xd1, 0x94, 0xa1, 0x8d, 0xd1, - 0x94, 0xa3, 0x8d, 0xd1, 0x94, 0xa1, 0x8d, 0xd1, 0x95, 0xa3, 0x8d, 0xd1, - 0x95, 0xa1, 0x8d, 0xd1, 0x96, 0xa3, 0x8d, 0xd1, 0x96, 0xa1, 0x8d, 0xd1, - 0x97, 0xa3, 0x8d, 0xd1, 0x97, 0xa1, 0x8d, 0xd1, 0x98, 0xa3, 0x8d, 0xd1, - 0x98, 0xa1, 0x8e, 0xd1, 0x98, 0x9e, 0x8d, 0xd1, 0x99, 0xa1, 0x9d, 0xd1, - 0x99, 0x96, 0x9c, 0xd1, 0x9a, 0x96, 0x9d, 0xd1, 0x9a, 0x96, 0x9c, 0xd1, - 0x9a, 0x96, 0x9d, 0xd1, 0x9b, 0x96, 0x9c, 0xd1, 0x9b, 0x96, 0x9d, 0xd1, - 0x9c, 0x96, 0x9c, 0xd1, 0x9c, 0x96, 0x9d, 0xd1, 0x9d, 0x96, 0x9d, 0xd1, - 0x9d, 0x96, 0xa1, 0xd1, 0x9d, 0x97, 0xa1, 0xd1, 0x9e, 0x97, 0xa1, 0xd1, - 0x9e, 0x97, 0xa1, 0xd1, 0x9f, 0x97, 0xa1, 0xd1, 0x9f, 0x97, 0xa1, 0xd1, - 0x9f, 0x97, 0xa1, 0xd1, 0xa0, 0x97, 0xa1, 0xd1, 0xa0, 0x97, 0xa1, 0xd1, - 0xa1, 0x97, 0xa1, 0xd1, 0xa1, 0x97, 0xa1, 0xd1, 0xa1, 0x97, 0xa2, 0xd1, - 0xa2, 0x97, 0xa2, 0xd1, 0xa2, 0x97, 0xa3, 0xd1, 0xa3, 0x97, 0xa3, 0xd1, - 0xa3, 0x97, 0xa3, 0xd1, 0xa3, 0x97, 0xa3, 0xd1, 0xa4, 0x97, 0xa3, 0xd1, - 0xa4, 0x97, 0xa3, 0xd1, 0xa5, 0x97, 0xa3, 0xd1, 0xa5, 0x97, 0xa3, 0xd1, - 0xa5, 0x97, 0xa3, 0xd1, 0xa6, 0x97, 0xa3, 0xd1, 0xa6, 0x97, 0xa3, 0xd1, - 0xa6, 0x97, 0xa3, 0xd1, 0xa7, 0x97, 0xa3, 0xd1, 0xa7, 0x97, 0xa3, 0xd1, - 0xa8, 0x97, 0xa3, 0xd1, 0xa8, 0x97, 0xa3, 0xd1, 0xa8, 0x97, 0xa3, 0xd1, - 0xa9, 0x97, 0xa3, 0xd1, 0xa9, 0x97, 0xa3, 0xd1, 0xaa, 0x97, 0xa3, 0xd1, - 0xaa, 0x97, 0xa3, 0xd1, 0xaa, 0x97, 0xa3, 0xd1, 0xab, 0x97, 0xa3, 0xd1, - 0xab, 0x97, 0xa3, 0xd1, 0xab, 0x97, 0xa3, 0xd1, 0xac, 0x97, 0xa3, 0xd1, - 0xac, 0x97, 0xa3, 0xd1, 0xac, 0x97, 0xa3, 0xd1, 0xad, 0x97, 0xa3, 0xd1, - 0xad, 0x97, 0xa3, 0xd1, 0xae, 0x97, 0xa3, 0xd1, 0xae, 0x97, 0xa3, 0xd1, - 0xae, 0x97, 0xa3, 0xd1, 0xaf, 0x97, 0xa3, 0xd1, 0xaf, 0x97, 0xa3, 0xd1, - 0xaf, 0x97, 0xa3, 0xd1, 0xb0, 0x97, 0xa3, 0xd1, 0xb0, 0x97, 0xa3, 0xd1, - 0xb0, 0x97, 0xa3, 0xd1, 0xb1, 0x97, 0xa3, 0xd1, 0xb1, 0x97, 0xa3, 0xd1, - 0xb2, 0x97, 0xa3, 0xd1, 0xb2, 0x97, 0xa3, 0xd1, 0xb2, 0x97, 0xa3, 0xd1, - 0xb3, 0x97, 0xa3, 0xd1, 0xb3, 0x97, 0xa3, 0xd1, 0xb3, 0x97, 0xa3, 0xd1, - 0xb4, 0x97, 0xa3, 0xd1, 0xb4, 0x97, 0xa3, 0xd1, 0xb4, 0x97, 0xa3, 0xd1, - 0xb5, 0x97, 0xa3, 0xd1, 0xb5, 0x97, 0xa3, 0xd1, 0xb5, 0x97, 0xa3, 0xd1, - 0xb6, 0x97, 0xa3, 0xd1, 0xb6, 0x97, 0xa3, 0xd1, 0xb6, 0x97, 0xa3, 0xd1, - 0xb7, 0x97, 0xa3, 0xd1, 0xb7, 0x97, 0xa3, 0xd1, 0xb7, 0x97, 0xa3, 0xd1, - 0xb8, 0x97, 0xa3, 0xd1, 0xb8, 0x97, 0xa3, 0xd1, 0xb8, 0x97, 0xa3, 0xd1, - 0xb9, 0x97, 0xa3, 0xd1, 0xb9, 0x97, 0xa3, 0xd1, 0xb9, 0x97, 0xa3, 0xd1, - 0xba, 0x97, 0xa3, 0xd1, 0xba, 0x97, 0xa3, 0xd1, 0xba, 0x97, 0xa3, 0xd1, - 0xbb, 0x97, 0xa3, 0xd1, 0xbb, 0x97, 0xa3, 0xd1, 0xbb, 0x97, 0xa3, 0xd1, - 0xbc, 0x97, 0xd2, 0xd1, 0xbc, 0xa7, 0xd2, 0xd1, 0xbc, 0xaa, 0xd2, 0xd1, - 0xbd, 0xa7, 0xd2, 0xd1, 0xbd, 0xaa, 0xd2, 0xd1, 0xbd, 0xa7, 0xd2, 0xd1, - 0xbe, 0xaa, 0xd2, 0xd1, 0xbe, 0xa7, 0xd2, 0xd1, 0xbe, 0xaa, 0xd2, 0xd1, - 0xbf, 0xa7, 0xd2, 0xd1, 0xbf, 0xaa, 0xd2, 0xd1, 0xbf, 0xa7, 0xd2, 0xd1, - 0xc0, 0xaa, 0xd2, 0xd1, 0xc0, 0xa7, 0xd2, 0xd1, 0xc0, 0xaa, 0xd2, 0xd1, - 0xc1, 0xa7, 0xd2, 0xd1, 0xc1, 0xaa, 0xd2, 0xd1, 0xc1, 0xa7, 0xd2, 0xd1, - 0xc1, 0xaa, 0xd2, 0xd1, 0xc2, 0xa7, 0xd2, 0xd1, 0xc2, 0xaa, 0xd2, 0xd1, - 0xc2, 0xa7, 0xd2, 0xd1, 0xc3, 0xaa, 0xd2, 0xd1, 0xc3, 0xa7, 0xd2, 0xd1, - 0xc3, 0xaa, 0xd2, 0xd1, 0xc4, 0xa7, 0xd2, 0xd1, 0xc4, 0xa4, 0xd2, 0xd1, - 0xc4, 0xa7, 0xd2, 0xd1, 0xc5, 0xa4, 0xd2, 0xd1, 0xc5, 0xa7, 0xd2, 0xd1, - 0xc5, 0xa4, 0xd2, 0xd1, 0xc6, 0xa7, 0xd2, 0xd1, 0xc6, 0xa4, 0xd2, 0xd1, - 0xc6, 0xa7, 0xd2, 0xd1, 0xc6, 0xa4, 0xd2, 0xd1, 0xc7, 0xa7, 0xd2, 0xd1, - 0xc7, 0xa4, 0xd2, 0xd1, 0xc7, 0xa7, 0xd2, 0xd1, 0xc8, 0xa4, 0xd2, 0xd1, - 0xc8, 0xa7, 0xd2, 0xd1, 0xc8, 0xa4, 0xd2, 0xd1, 0xc9, 0xa7, 0xd2, 0xd1, - 0xc9, 0xa4, 0xd2, 0xd1, 0xc9, 0xa7, 0xd2, 0xd1, 0xc9, 0xa4, 0xd2, 0xd1, - 0xca, 0xa7, 0xd2, 0xd1, 0xca, 0xa4, 0xd2, 0xd1, 0xca, 0xa7, 0xd2, 0xd1, - 0xcb, 0xa4, 0xd2, 0xd1, 0xcb, 0xa7, 0xd2, 0xd1, 0xcb, 0xa4, 0xd2, 0xd1, - 0xcc, 0xa7, 0xd2, 0xd1, 0xcc, 0xa4, 0xd2, 0xd1, 0xcc, 0xa7, 0xd2, 0xd1, - 0xcc, 0xa4, 0xd2, 0xd1, 0xcd, 0xa7, 0xd2, 0xd1, 0xcd, 0xa4, 0xd2, 0xd1, - 0xcd, 0xa7, 0xd2, 0xd1, 0xce, 0xa4, 0xd2, 0xd1, 0xce, 0xa3, 0xd2, 0xd1, - 0xce, 0xa4, 0xd2, 0xd1, 0xce, 0xa3, 0xd2, 0xd1, 0xcf, 0xa4, 0xd2, 0xd1, - 0xcf, 0xa3, 0xd2, 0xd1, 0xcf, 0xa4, 0xd2, 0xd1, 0xd0, 0xa3, 0xd2, 0xd1, - 0xd0, 0xa4, 0xd2, 0xd1, 0xd0, 0xa3, 0xd2, 0xd1, 0xd0, 0xa4, 0xd2, 0xd1, - 0xd1, 0xa3, 0xd2, 0xd1, 0xd1, 0xa4, 0xd2, 0xd1, 0xd1, 0xa3, 0xd2, 0xd1, - 0xd2, 0xa4, 0xd2, 0xd1, 0xd2, 0xa3, 0xd2, 0xd1, 0xd2, 0xa4, 0xd2, 0xd1, - 0xd2, 0xa3, 0xd3, 0xd1, 0xd2, 0xa3, 0xd3, 0xd1, 0xd2, 0xa3, 0xd3, 0xd1, - 0xd2, 0xa3, 0xd4, 0xd0, 0xd2, 0xa3, 0xd4, 0xd1, 0xd2, 0xa3, 0xd4, 0xd0, - 0xd2, 0xa3, 0xd4, 0xd1, 0xd2, 0xa3, 0xd5, 0xd0, 0xd2, 0xa3, 0xd5, 0xd1, - 0xd2, 0xa3, 0xd5, 0xd0, 0xd2, 0xa3, 0xd6, 0xd1, 0xd2, 0xa3, 0xd6, 0xd0, - 0xd2, 0xa3, 0xd6, 0xd1, 0xd2, 0xa3, 0xd6, 0xd0, 0xd2, 0xa3, 0xd7, 0xd1, - 0xd2, 0xa3, 0xd7, 0xd0, 0xd2, 0xa3, 0xd7, 0xd1, 0xd2, 0xa3, 0xd7, 0xd0, - 0xd2, 0xa3, 0xd8, 0xd1, 0xd2, 0xa3, 0xd8, 0xd0, 0xd2, 0xa3, 0xd8, 0xd1, - 0xd2, 0xa3, 0xd9, 0xd0, 0xd2, 0xa3, 0xd9, 0xd1, 0xd2, 0xa3, 0xd9, 0xd0, - 0xd2, 0xa3, 0xd9, 0xce, 0xd3, 0xa3, 0xda, 0xd0, 0xd2, 0xa3, 0xda, 0xce, - 0xd3, 0xa3, 0xda, 0xd0, 0xd2, 0xa3, 0xda, 0xc9, 0xdd, 0xa3, 0xdb, 0xc9, - 0xdc, 0xa3, 0xdb, 0xc9, 0xdd, 0xa3, 0xdb, 0xc9, 0xdc, 0xa3, 0xdb, 0xc9, - 0xdd, 0xa3, 0xdc, 0xc9, 0xdc, 0xa3, 0xdc, 0xc9, 0xdd, 0xa3, 0xdc, 0xc9, - 0xdc, 0xa3, 0xdd, 0xca, 0xdf, 0xa3, 0xdd, 0xca, 0xdf, 0xa3, 0xdd, 0xca, - 0xdf, 0xa3, 0xdd, 0xca, 0xdf, 0xa3, 0xde, 0xca, 0xdf, 0xa3, 0xde, 0xca, - 0xdf, 0xa3, 0xde, 0xca, 0xdf, 0xa3, 0xde, 0xca, 0xdf, 0xa3, 0xdf, 0xca, - 0xdf, 0xa3, 0xdf, 0xca, 0xdf, 0xa3, 0xdf, 0xca, 0xdf, 0xa3, 0xdf, 0xca, - 0xdf, 0xa3, 0xe0, 0xca, 0xe0, 0xa3, 0xe0, 0xca, 0xe2, 0xa3, 0xe0, 0xca, - 0xe2, 0xa3, 0xe1, 0xca, 0xe2, 0xa3, 0xe1, 0xca, 0xe2, 0xa3, 0xe1, 0xca, - 0xe2, 0xa3, 0xe1, 0xca, 0xe2, 0xa3, 0xe2, 0xca, 0xe2, 0xa3, 0xe2, 0xca, - 0xe2, 0xa3, 0xe2, 0xca, 0xe2, 0xa3, 0xe2, 0xca, 0xe2, 0xa3, 0xe3, 0xca, - 0xe3, 0xa3, 0xe3, 0xcb, 0xe5, 0xa3, 0xe3, 0xcb, 0xe5, 0xa3, 0xe3, 0xcb, - 0xe5, 0xa3, 0xe4, 0xcb, 0xe5, 0xa3, 0xe4, 0xcb, 0xe5, 0xa3, 0xe4, 0xcb, - 0xe5, 0xa3, 0xe4, 0xcb, 0xe5, 0xa3, 0xe5, 0xcb, 0xe5, 0xa3, 0xe5, 0xcb, - 0xe5, 0xa3, 0xe5, 0xd3, 0xea, 0xa3, 0xe5, 0xd2, 0xea, 0xa3, 0xe6, 0xd3, - 0xea, 0xa3, 0xe6, 0xd2, 0xea, 0xa3, 0xe6, 0xd3, 0xea, 0xa3, 0xe6, 0xd2, - 0xea, 0xa3, 0xe7, 0xd3, 0xea, 0xa3, 0xe7, 0xd2, 0xea, 0xa3, 0xe7, 0xd3, - 0xea, 0xa3, 0xe7, 0xd2, 0xea, 0xa3, 0xe8, 0xd3, 0xea, 0xa3, 0xe8, 0xd2, - 0xea, 0xa3, 0xe8, 0xd3, 0xea, 0xa3, 0xe8, 0xd2, 0xea, 0xa3, 0xe9, 0xd1, - 0xeb, 0xa3, 0xe9, 0xd2, 0xea, 0xa3, 0xe9, 0xd1, 0xeb, 0xa3, 0xe9, 0xd2, - 0xea, 0xa3, 0xea, 0xd1, 0xeb, 0xa3, 0xea, 0xd2, 0xea, 0xa3, 0xea, 0xd1, - 0xeb, 0xa3, 0xea, 0xd1, 0xeb, 0xa3, 0xea, 0xd1, 0xeb, 0xa3, 0xea, 0xd1, - 0xeb, 0xa3, 0xea, 0xd1, 0xeb, 0xa3, 0xea, 0xd1, 0xeb, 0xa3, 0xea, 0xd1, - 0xec, 0xa3, 0xea, 0xd1, 0xec, 0xa3, 0xed, 0xd1, 0xec, 0xa3, 0xed, 0xd1, - 0xec, 0xa4, 0xed, 0xd1, 0xec, 0xa3, 0xed, 0xd1, 0xed, 0xa4, 0xed, 0xd1, - 0xed, 0xa3, 0xee, 0xd1, 0xed, 0xa3, 0xed, 0xd1, 0xed, 0xa3, 0xee, 0xd1, - 0xed, 0xa3, 0xee, 0xd1, 0xed, 0xa3, 0xee, 0xd1, 0xed, 0xa3, 0xee, 0xd1, - 0xed, 0xa3, 0xef, 0xd1, 0xed, 0xa3, 0xef, 0xd1, 0xed, 0xa3, 0xef, 0xd1, - 0xed, 0xa3, 0xef, 0xd0, 0xed, 0xa3, 0xf0, 0xd1, 0xed, 0xa3, 0xf0, 0xd0, - 0xed, 0xa3, 0xf0, 0xd1, 0xed, 0xa3, 0xf0, 0xd0, 0xed, 0xa3, 0xf1, 0xd1, - 0xed, 0xa3, 0xf1, 0xd0, 0xed, 0xa3, 0xf1, 0xd1, 0xed, 0xa3, 0xf1, 0xd0, - 0xed, 0xa3, 0xf2, 0xd1, 0xed, 0xa3, 0xf2, 0xd0, 0xed, 0xa3, 0xf2, 0xd1, - 0xed, 0xa3, 0xf2, 0xd0, 0xed, 0xa3, 0xf2, 0xd1, 0xed, 0xa3, 0xf3, 0xd0, - 0xed, 0xa3, 0xf3, 0xd1, 0xed, 0xa3, 0xf3, 0xd0, 0xed, 0xa3, 0xf3, 0xd1, - 0xed, 0xa3, 0xf4, 0xd0, 0xed, 0xa3, 0xf4, 0xd1, 0xed, 0xa3, 0xf4, 0xd0, - 0xed, 0xa3, 0xf4, 0xd1, 0xed, 0xa3, 0xf5, 0xd0, 0xed, 0xa3, 0xf5, 0xd1, - 0xed, 0xa3, 0xf5, 0xd0, 0xed, 0xa3, 0xf5, 0xd1, 0xed, 0xa3, 0xf5, 0xd0, - 0xed, 0xa3, 0xf6, 0xc7, 0xf6, 0xa3, 0xf6, 0xc7, 0xf6, 0xa3, 0xf6, 0xc7, - 0xf6, 0xa3, 0xf6, 0xc7, 0xf6, 0xa3, 0xf7, 0xc7, 0xf7, 0xa3, 0xf7, 0xc7, - 0xf7, 0xa3, 0xf7, 0xc7, 0xf7, 0xa3, 0xf7, 0xc7, 0xf7, 0xa3, 0xf8, 0xc7, - 0xf7, 0xa3, 0xf8, 0xc7, 0xf7, 0xa3, 0xf8, 0xc7, 0xf7, 0xa3, 0xf8, 0xc7, - 0xf7, 0xa3, 0xf8, 0xc7, 0xf7, 0xa3, 0xf9, 0xc7, 0xf7, 0xa3, 0xf9, 0xc7, - 0xf7, 0xa3, 0xf9, 0xc7, 0xf7, 0xa3, 0xf9, 0xc7, 0xf7, 0xa3, 0xfa, 0xc7, - 0xf7, 0xa3, 0xfa, 0xc7, 0xf7, 0xa3, 0xfa, 0xc7, 0xf7, 0xa3, 0xfa, 0xc7, - 0xf7, 0xa3, 0xfa, 0xc7, 0xf7, 0xa3, 0xfb, 0xc7, 0xf7, 0xa3, 0xfb, 0xc7, - 0xf7, 0xa3, 0xfb, 0xc7, 0xf7, 0xa3, 0xfb, 0xc7, 0xf7, 0xa3, 0xfc, 0xc7, - 0xf7, 0xa3, 0xfc, 0xc7, 0xf7, 0xa3, 0xfc, 0xc7, 0xf7, 0xa3, 0xfc, 0xc7, - 0xf7, 0xa3, 0xfc, 0xc7, 0xf7, 0xa3, 0xfd, 0xc7, 0xf7, 0xa3, 0xfd, 0xc7, - 0xf7, 0xa3, 0xfd, 0xc7, 0xf7, 0xa3, 0xfd, 0xc7, 0xf7, 0xa3, 0xfe, 0xc7, - 0xf7, 0xa3, 0xfe, 0xc7, 0xf7, 0xa3, 0xfe, 0xc7, 0xf7, 0xa3, 0xfe, 0xc7, - 0xf7, 0xa3, 0xfe, 0xc7, 0xf7, 0xa3, 0xff, 0xc7, 0xf7, 0xa3, 0xff, 0xc7, - 0xf7, 0xa3, 0x03, 0xd8, 0x8b, 0xa4, 0x0a, 0xd6, 0x8c, 0xa4, 0x0f, 0xd8, - 0x8b, 0xa4, 0x14, 0xd6, 0x8c, 0xa4, 0x17, 0xd8, 0x8b, 0xa4, 0x1b, 0xd6, - 0x8c, 0xa4, 0x1e, 0xd8, 0x8b, 0xa4, 0x20, 0xd6, 0x8c, 0xa4, 0x23, 0xd8, - 0x8b, 0xa4, 0x25, 0xd6, 0x8c, 0xa4, 0x27, 0xd8, 0x8b, 0xa4, 0x29, 0xd6, - 0x8c, 0xa4, 0x2b, 0xd8, 0x8b, 0xa4, 0x2d, 0xd6, 0x8c, 0xa4, 0x2f, 0xd4, - 0x8c, 0xa4, 0x31, 0xd6, 0x8c, 0xa4, 0x32, 0xd4, 0x8c, 0xa4, 0x34, 0xd6, - 0x8c, 0xa4, 0x35, 0xd4, 0x8c, 0xa4, 0x37, 0xd6, 0x8c, 0xa4, 0x38, 0xd4, - 0x8c, 0xa4, 0x3a, 0xd6, 0x8c, 0xa4, 0x3b, 0xd4, 0x8c, 0xa4, 0x3c, 0xd6, - 0x8c, 0xa4, 0x3e, 0xd4, 0x8c, 0xa4, 0x3f, 0xd6, 0x8c, 0xa4, 0x40, 0xd4, - 0x8c, 0xa4, 0x42, 0xd6, 0x8c, 0xa4, 0x43, 0xd4, 0x8c, 0xa4, 0x44, 0xd6, - 0x8c, 0xa4, 0x45, 0xd4, 0x8c, 0xa4, 0x46, 0xd6, 0x8c, 0xa4, 0x47, 0xd4, - 0x8c, 0xa4, 0x48, 0xd6, 0x8c, 0xa4, 0x49, 0xd4, 0x8c, 0xa4, 0x4a, 0xd6, - 0x8c, 0xa4, 0x4b, 0xd4, 0x8c, 0xa4, 0x4c, 0xd6, 0x8c, 0xa4, 0x4d, 0xd4, - 0x8c, 0xa4, 0x4e, 0xd6, 0x8c, 0xa4, 0x4f, 0xd4, 0x8c, 0xa4, 0x50, 0xd6, - 0x8c, 0xa4, 0x51, 0xd4, 0x8c, 0xa4, 0x52, 0xd6, 0x8c, 0xa4, 0x53, 0xd4, - 0x8c, 0xa4, 0x54, 0xd6, 0x8c, 0xa4, 0x55, 0xd4, 0x8c, 0xa4, 0x56, 0xd6, - 0x8c, 0xa4, 0x57, 0xd4, 0x8c, 0xa4, 0x58, 0xd6, 0x8c, 0xa4, 0x58, 0xd4, - 0x8c, 0xa4, 0x59, 0xd6, 0x8c, 0xa4, 0x5a, 0xd4, 0x8c, 0xa4, 0x5b, 0xd6, - 0x8c, 0xa4, 0x5c, 0xd4, 0x8c, 0xa4, 0x5d, 0xd6, 0x8c, 0xa4, 0x5d, 0xd4, - 0x8c, 0xa4, 0x5e, 0xd6, 0x8c, 0xa4, 0x5f, 0xd4, 0x8c, 0xa4, 0x60, 0xd6, - 0x8c, 0xa4, 0x60, 0xd4, 0x8c, 0xa4, 0x61, 0xd6, 0x8c, 0xa4, 0x62, 0xd4, - 0x8c, 0xa4, 0x63, 0xd6, 0x8c, 0xa4, 0x63, 0xd4, 0x8c, 0xa4, 0x64, 0xd6, - 0x8c, 0xa4, 0x65, 0xd4, 0x8c, 0xa4, 0x66, 0xd6, 0x8c, 0xa4, 0x66, 0xd4, - 0x8c, 0xa4, 0x67, 0xd6, 0x8c, 0xa4, 0x68, 0xd4, 0x8c, 0xa4, 0x68, 0xd6, - 0x8c, 0xa4, 0x69, 0xd4, 0x8c, 0xa4, 0x6a, 0xd6, 0x8c, 0xa4, 0x6a, 0xd4, - 0x8c, 0xa4, 0x6b, 0xd3, 0x8d, 0xa4, 0x6c, 0xd4, 0x8c, 0xa4, 0x6c, 0xd3, - 0x8d, 0xa4, 0x6d, 0xd4, 0x8c, 0xa4, 0x6e, 0xd3, 0x8d, 0xa4, 0x6e, 0xd4, - 0x8c, 0xa4, 0x6f, 0xd3, 0x8d, 0xa4, 0x70, 0xd4, 0x8c, 0xa4, 0x70, 0xd3, - 0x8d, 0xa4, 0x71, 0xd4, 0x8c, 0xa4, 0x72, 0xd3, 0x8d, 0xa4, 0x72, 0xd4, - 0x8c, 0xa4, 0x73, 0xd3, 0x8d, 0xa4, 0x73, 0xd4, 0x8c, 0xa4, 0x74, 0xd3, - 0x8d, 0xa4, 0x75, 0xd4, 0x8c, 0xa4, 0x75, 0xd3, 0x8d, 0xa4, 0x76, 0xd4, - 0x8c, 0xa4, 0x76, 0xd3, 0x8d, 0xa4, 0x77, 0xd4, 0x8c, 0xa4, 0x78, 0xd3, - 0x8d, 0xa4, 0x78, 0xd4, 0x8c, 0xa4, 0x79, 0xd3, 0x8d, 0xa4, 0x79, 0xd4, - 0x8c, 0xa4, 0x7a, 0xd3, 0x8d, 0xa4, 0x7a, 0xd4, 0x8c, 0xa4, 0x7b, 0xd3, - 0x8d, 0xa4, 0x7c, 0xd4, 0x8c, 0xa4, 0x7c, 0xd3, 0x8d, 0xa4, 0x7d, 0xd4, - 0x8c, 0xa4, 0x7d, 0xd3, 0x8d, 0xa4, 0x7e, 0xd4, 0x8c, 0xa4, 0x7e, 0xd3, - 0x8d, 0xa4, 0x7f, 0xd4, 0x8c, 0xa4, 0x7f, 0xd3, 0x8d, 0xa4, 0x80, 0xd4, - 0x8c, 0xa4, 0x81, 0xd3, 0x8d, 0xa4, 0x81, 0xd2, 0x8d, 0xa4, 0x82, 0xd3, - 0x8d, 0xa4, 0x82, 0xd2, 0x8d, 0xa4, 0x83, 0xd3, 0x8d, 0xa4, 0x83, 0xd2, - 0x8d, 0xa4, 0x84, 0xd3, 0x8d, 0xa4, 0x84, 0xd2, 0x8d, 0xa4, 0x85, 0xd3, - 0x8d, 0xa4, 0x85, 0xd2, 0x8d, 0xa4, 0x86, 0xd3, 0x8d, 0xa4, 0x86, 0xd2, - 0x8d, 0xa4, 0x87, 0xd3, 0x8d, 0xa4, 0x87, 0xd2, 0x8d, 0xa4, 0x88, 0xd3, - 0x8d, 0xa4, 0x88, 0xd2, 0x8d, 0xa4, 0x89, 0xd3, 0x8d, 0xa4, 0x89, 0xd2, - 0x8d, 0xa4, 0x8a, 0xd3, 0x8d, 0xa4, 0x8a, 0xd2, 0x8d, 0xa4, 0x8b, 0xd3, - 0x8d, 0xa4, 0x8b, 0xd2, 0x8d, 0xa4, 0x8c, 0xd2, 0x8e, 0xa4, 0x8c, 0xd2, - 0x8d, 0xa4, 0x8d, 0xd2, 0x8e, 0xa4, 0x8c, 0xd2, 0x8d, 0xa4, 0x8d, 0xd2, - 0x8e, 0xa4, 0x8c, 0xd2, 0x8e, 0xa4, 0x8d, 0xd2, 0x8e, 0xa4, 0x8c, 0xd2, - 0x8f, 0xa4, 0x8d, 0xd2, 0x8f, 0xa4, 0x8c, 0xd2, 0x90, 0xa4, 0x8d, 0xd2, - 0x90, 0xa4, 0x8d, 0xd2, 0x91, 0xa1, 0x8d, 0xd2, 0x91, 0xa4, 0x8d, 0xd2, - 0x92, 0xa1, 0x8d, 0xd2, 0x92, 0xa4, 0x8d, 0xd2, 0x93, 0xa1, 0x8d, 0xd2, - 0x93, 0xa4, 0x8d, 0xd2, 0x94, 0xa1, 0x8d, 0xd2, 0x94, 0xa4, 0x8d, 0xd2, - 0x94, 0xa1, 0x8d, 0xd2, 0x95, 0xa4, 0x8d, 0xd2, 0x95, 0xa1, 0x8d, 0xd2, - 0x96, 0xa4, 0x8d, 0xd2, 0x96, 0xa1, 0x8d, 0xd2, 0x97, 0xa4, 0x8d, 0xd2, - 0x97, 0xa1, 0x8d, 0xd2, 0x98, 0xa4, 0x8d, 0xd2, 0x98, 0xa1, 0x8d, 0xd2, - 0x98, 0xa4, 0x8d, 0xd2, 0x99, 0xa1, 0x8d, 0xd2, 0x99, 0xa4, 0x9a, 0xd2, - 0x9a, 0x96, 0x9a, 0xd2, 0x9a, 0x96, 0x9f, 0xd2, 0x9a, 0x97, 0x9f, 0xd2, - 0x9b, 0x97, 0x9f, 0xd2, 0x9b, 0x97, 0x9f, 0xd2, 0x9c, 0x97, 0x9f, 0xd2, - 0x9c, 0x97, 0x9f, 0xd2, 0x9d, 0x97, 0x9f, 0xd2, 0x9d, 0x97, 0x9f, 0xd2, - 0x9d, 0x97, 0x9f, 0xd2, 0x9e, 0x97, 0x9f, 0xd2, 0x9e, 0x97, 0x9f, 0xd2, - 0x9f, 0x97, 0x9f, 0xd2, 0x9f, 0x97, 0x9f, 0xd2, 0x9f, 0x97, 0xa3, 0xd2, - 0xa0, 0x98, 0xa0, 0xd2, 0xa0, 0x97, 0xa3, 0xd2, 0xa1, 0x98, 0xa1, 0xd2, - 0xa1, 0x97, 0xa3, 0xd2, 0xa1, 0x98, 0xa2, 0xd2, 0xa2, 0x97, 0xa3, 0xd2, - 0xa2, 0x98, 0xa3, 0xd2, 0xa3, 0x97, 0xa3, 0xd2, 0xa3, 0x98, 0xa3, 0xd2, - 0xa3, 0x97, 0xa3, 0xd2, 0xa4, 0x98, 0xa3, 0xd2, 0xa4, 0x97, 0xa3, 0xd2, - 0xa5, 0x98, 0xa3, 0xd2, 0xa5, 0x97, 0xa3, 0xd2, 0xa5, 0x98, 0xa3, 0xd2, - 0xa6, 0x97, 0xa3, 0xd2, 0xa6, 0x98, 0xa3, 0xd2, 0xa6, 0x97, 0xa3, 0xd2, - 0xa7, 0x98, 0xa3, 0xd2, 0xa7, 0x97, 0xa3, 0xd2, 0xa8, 0x98, 0xa3, 0xd2, - 0xa8, 0x97, 0xa3, 0xd2, 0xa8, 0x98, 0xa3, 0xd2, 0xa9, 0x97, 0xa3, 0xd2, - 0xa9, 0x98, 0xa3, 0xd2, 0xaa, 0x97, 0xa3, 0xd2, 0xaa, 0x98, 0xa3, 0xd2, - 0xaa, 0x97, 0xa3, 0xd2, 0xab, 0x98, 0xa3, 0xd2, 0xab, 0x97, 0xa3, 0xd2, - 0xab, 0x98, 0xa3, 0xd2, 0xac, 0x97, 0xa3, 0xd2, 0xac, 0x98, 0xa3, 0xd2, - 0xac, 0x97, 0xa3, 0xd2, 0xad, 0x98, 0xa3, 0xd2, 0xad, 0x97, 0xa3, 0xd2, - 0xae, 0x98, 0xa3, 0xd2, 0xae, 0x97, 0xa3, 0xd2, 0xae, 0x98, 0xa3, 0xd2, - 0xaf, 0x97, 0xa3, 0xd2, 0xaf, 0x98, 0xa3, 0xd2, 0xaf, 0x97, 0xa3, 0xd2, - 0xb0, 0x98, 0xa3, 0xd2, 0xb0, 0x97, 0xa3, 0xd2, 0xb0, 0x98, 0xa3, 0xd2, - 0xb1, 0x97, 0xa3, 0xd2, 0xb1, 0x98, 0xa3, 0xd2, 0xb2, 0x97, 0xa3, 0xd2, - 0xb2, 0x98, 0xa3, 0xd2, 0xb2, 0x97, 0xa3, 0xd2, 0xb3, 0x98, 0xa3, 0xd2, - 0xb3, 0x97, 0xa3, 0xd2, 0xb3, 0x98, 0xa3, 0xd2, 0xb4, 0x97, 0xa3, 0xd2, - 0xb4, 0x98, 0xa3, 0xd2, 0xb4, 0x97, 0xa3, 0xd2, 0xb5, 0x98, 0xa3, 0xd2, - 0xb5, 0x97, 0xa3, 0xd2, 0xb5, 0x98, 0xa3, 0xd2, 0xb6, 0x97, 0xa3, 0xd2, - 0xb6, 0x98, 0xa3, 0xd2, 0xb6, 0x97, 0xa3, 0xd2, 0xb7, 0x98, 0xa3, 0xd2, - 0xb7, 0x97, 0xa3, 0xd2, 0xb7, 0x98, 0xa3, 0xd2, 0xb8, 0x97, 0xa3, 0xd2, - 0xb8, 0x98, 0xa3, 0xd2, 0xb8, 0x97, 0xa3, 0xd2, 0xb9, 0x98, 0xa3, 0xd2, - 0xb9, 0x97, 0xa3, 0xd2, 0xb9, 0x98, 0xa3, 0xd2, 0xba, 0x97, 0xa3, 0xd2, - 0xba, 0x98, 0xa3, 0xd2, 0xba, 0x97, 0xa3, 0xd2, 0xbb, 0x98, 0xa3, 0xd2, - 0xbb, 0x97, 0xa3, 0xd2, 0xbb, 0x98, 0xa3, 0xd2, 0xbc, 0x97, 0xd1, 0xd2, - 0xbc, 0xad, 0xd2, 0xd2, 0xbc, 0xaa, 0xd1, 0xd2, 0xbd, 0xad, 0xd2, 0xd2, - 0xbd, 0xaa, 0xd1, 0xd2, 0xbd, 0xad, 0xd2, 0xd2, 0xbe, 0xaa, 0xd1, 0xd2, - 0xbe, 0xad, 0xd2, 0xd2, 0xbe, 0xaa, 0xd2, 0xd2, 0xbf, 0xa8, 0xd2, 0xd2, - 0xbf, 0xaa, 0xd2, 0xd2, 0xbf, 0xa8, 0xd2, 0xd2, 0xc0, 0xaa, 0xd2, 0xd2, - 0xc0, 0xa8, 0xd2, 0xd2, 0xc0, 0xaa, 0xd2, 0xd2, 0xc1, 0xa8, 0xd2, 0xd2, - 0xc1, 0xaa, 0xd2, 0xd2, 0xc1, 0xa8, 0xd2, 0xd2, 0xc1, 0xaa, 0xd2, 0xd2, - 0xc2, 0xa8, 0xd2, 0xd2, 0xc2, 0xaa, 0xd2, 0xd2, 0xc2, 0xa8, 0xd2, 0xd2, - 0xc3, 0xaa, 0xd2, 0xd2, 0xc3, 0xa8, 0xd2, 0xd2, 0xc3, 0xaa, 0xd2, 0xd2, - 0xc4, 0xa8, 0xd2, 0xd2, 0xc4, 0xaa, 0xd2, 0xd2, 0xc4, 0xa8, 0xd2, 0xd2, - 0xc5, 0xaa, 0xd2, 0xd2, 0xc5, 0xa8, 0xd2, 0xd2, 0xc5, 0xaa, 0xd2, 0xd2, - 0xc6, 0xa8, 0xd2, 0xd2, 0xc6, 0xaa, 0xd2, 0xd2, 0xc6, 0xa8, 0xd2, 0xd2, - 0xc6, 0xaa, 0xd2, 0xd2, 0xc7, 0xa8, 0xd2, 0xd2, 0xc7, 0xaa, 0xd2, 0xd2, - 0xc7, 0xa8, 0xd2, 0xd2, 0xc8, 0xa5, 0xd2, 0xd2, 0xc8, 0xa8, 0xd2, 0xd2, - 0xc8, 0xa5, 0xd2, 0xd2, 0xc9, 0xa8, 0xd2, 0xd2, 0xc9, 0xa5, 0xd2, 0xd2, - 0xc9, 0xa8, 0xd2, 0xd2, 0xc9, 0xa5, 0xd2, 0xd2, 0xca, 0xa8, 0xd2, 0xd2, - 0xca, 0xa5, 0xd2, 0xd2, 0xca, 0xa8, 0xd2, 0xd2, 0xcb, 0xa5, 0xd2, 0xd2, - 0xcb, 0xa8, 0xd2, 0xd2, 0xcb, 0xa5, 0xd2, 0xd2, 0xcc, 0xa8, 0xd2, 0xd2, - 0xcc, 0xa5, 0xd2, 0xd2, 0xcc, 0xa8, 0xd2, 0xd2, 0xcc, 0xa5, 0xd2, 0xd2, - 0xcd, 0xa8, 0xd2, 0xd2, 0xcd, 0xa5, 0xd2, 0xd2, 0xcd, 0xa8, 0xd2, 0xd2, - 0xce, 0xa5, 0xd2, 0xd2, 0xce, 0xa4, 0xd2, 0xd2, 0xce, 0xa5, 0xd2, 0xd2, - 0xce, 0xa4, 0xd2, 0xd2, 0xcf, 0xa5, 0xd2, 0xd2, 0xcf, 0xa4, 0xd2, 0xd2, - 0xcf, 0xa5, 0xd2, 0xd2, 0xd0, 0xa4, 0xd2, 0xd2, 0xd0, 0xa5, 0xd2, 0xd2, - 0xd0, 0xa4, 0xd2, 0xd2, 0xd0, 0xa5, 0xd2, 0xd2, 0xd1, 0xa4, 0xd2, 0xd2, - 0xd1, 0xa5, 0xd2, 0xd2, 0xd1, 0xa4, 0xd2, 0xd2, 0xd2, 0xa5, 0xd2, 0xd2, - 0xd2, 0xa4, 0xd2, 0xd2, 0xd2, 0xa5, 0xd2, 0xd2, 0xd2, 0xa4, 0xd3, 0xd2, - 0xd2, 0xa4, 0xd3, 0xd2, 0xd2, 0xa4, 0xd3, 0xd2, 0xd2, 0xa4, 0xd4, 0xd2, - 0xd2, 0xa4, 0xd4, 0xd2, 0xd2, 0xa4, 0xd4, 0xd2, 0xd2, 0xa4, 0xd4, 0xd2, - 0xd2, 0xa4, 0xd5, 0xd0, 0xd2, 0xa4, 0xd5, 0xd2, 0xd2, 0xa4, 0xd5, 0xd0, - 0xd2, 0xa4, 0xd6, 0xd2, 0xd2, 0xa4, 0xd6, 0xd0, 0xd2, 0xa4, 0xd6, 0xd2, - 0xd2, 0xa4, 0xd6, 0xd0, 0xd2, 0xa4, 0xd7, 0xd2, 0xd2, 0xa4, 0xd7, 0xd0, - 0xd2, 0xa4, 0xd7, 0xd2, 0xd2, 0xa4, 0xd7, 0xd0, 0xd2, 0xa4, 0xd8, 0xd2, - 0xd2, 0xa4, 0xd8, 0xd0, 0xd2, 0xa4, 0xd8, 0xd2, 0xd2, 0xa4, 0xd9, 0xd0, - 0xd2, 0xa4, 0xd9, 0xd2, 0xd2, 0xa4, 0xd9, 0xd0, 0xd2, 0xa4, 0xd9, 0xcf, - 0xd3, 0xa4, 0xda, 0xd0, 0xd2, 0xa4, 0xda, 0xcf, 0xd3, 0xa4, 0xda, 0xd0, - 0xd2, 0xa4, 0xda, 0xcf, 0xd3, 0xa4, 0xdb, 0xc9, 0xdb, 0xa4, 0xdb, 0xc9, - 0xdb, 0xa4, 0xdb, 0xc9, 0xde, 0xa4, 0xdb, 0xc9, 0xde, 0xa4, 0xdc, 0xc9, - 0xde, 0xa4, 0xdc, 0xc9, 0xde, 0xa4, 0xdc, 0xc9, 0xde, 0xa4, 0xdd, 0xc9, - 0xde, 0xa4, 0xdd, 0xc9, 0xde, 0xa4, 0xdd, 0xc9, 0xde, 0xa4, 0xdd, 0xc9, - 0xde, 0xa4, 0xde, 0xc9, 0xde, 0xa4, 0xde, 0xc9, 0xde, 0xa4, 0xde, 0xca, - 0xe1, 0xa4, 0xde, 0xca, 0xe1, 0xa4, 0xdf, 0xca, 0xe1, 0xa4, 0xdf, 0xca, - 0xe1, 0xa4, 0xdf, 0xca, 0xe1, 0xa4, 0xdf, 0xca, 0xe1, 0xa4, 0xe0, 0xca, - 0xe1, 0xa4, 0xe0, 0xca, 0xe1, 0xa4, 0xe0, 0xca, 0xe1, 0xa4, 0xe1, 0xca, - 0xe1, 0xa4, 0xe1, 0xca, 0xe1, 0xa4, 0xe1, 0xca, 0xe1, 0xa4, 0xe1, 0xca, - 0xe1, 0xa4, 0xe2, 0xcb, 0xe4, 0xa4, 0xe2, 0xcb, 0xe4, 0xa4, 0xe2, 0xcb, - 0xe4, 0xa4, 0xe2, 0xcb, 0xe4, 0xa4, 0xe3, 0xcb, 0xe4, 0xa4, 0xe3, 0xcb, - 0xe4, 0xa4, 0xe3, 0xcb, 0xe4, 0xa4, 0xe3, 0xcb, 0xe4, 0xa4, 0xe4, 0xcb, - 0xe4, 0xa4, 0xe4, 0xcb, 0xe4, 0xa4, 0xe4, 0xcb, 0xe4, 0xa4, 0xe4, 0xcb, - 0xe6, 0xa4, 0xe5, 0xd3, 0xea, 0xa4, 0xe5, 0xd2, 0xea, 0xa4, 0xe5, 0xd3, - 0xea, 0xa4, 0xe5, 0xd2, 0xea, 0xa4, 0xe6, 0xd3, 0xea, 0xa4, 0xe6, 0xd2, - 0xea, 0xa4, 0xe6, 0xd3, 0xea, 0xa4, 0xe6, 0xd2, 0xea, 0xa4, 0xe7, 0xd3, - 0xea, 0xa4, 0xe7, 0xd2, 0xea, 0xa4, 0xe7, 0xd3, 0xea, 0xa4, 0xe7, 0xd2, - 0xea, 0xa4, 0xe8, 0xd3, 0xea, 0xa4, 0xe8, 0xd2, 0xea, 0xa4, 0xe8, 0xd3, - 0xea, 0xa4, 0xe8, 0xd2, 0xea, 0xa4, 0xe9, 0xd2, 0xeb, 0xa4, 0xe9, 0xd2, - 0xea, 0xa4, 0xe9, 0xd2, 0xeb, 0xa4, 0xe9, 0xd2, 0xea, 0xa4, 0xea, 0xd2, - 0xeb, 0xa4, 0xea, 0xd2, 0xea, 0xa4, 0xea, 0xd2, 0xeb, 0xa4, 0xea, 0xd2, - 0xea, 0xa3, 0xea, 0xd2, 0xeb, 0xa4, 0xea, 0xd2, 0xeb, 0xa3, 0xea, 0xd2, - 0xeb, 0xa4, 0xea, 0xd2, 0xeb, 0xa3, 0xea, 0xd2, 0xec, 0xa4, 0xea, 0xd2, - 0xec, 0xa3, 0xed, 0xd2, 0xec, 0xa4, 0xed, 0xd2, 0xec, 0xa5, 0xed, 0xd2, - 0xec, 0xa4, 0xed, 0xd2, 0xed, 0xa5, 0xed, 0xd2, 0xed, 0xa4, 0xee, 0xd2, - 0xed, 0xa4, 0xed, 0xd2, 0xed, 0xa4, 0xee, 0xd2, 0xed, 0xa4, 0xee, 0xd2, - 0xed, 0xa4, 0xee, 0xd2, 0xed, 0xa4, 0xee, 0xd2, 0xed, 0xa4, 0xef, 0xd2, - 0xed, 0xa4, 0xef, 0xd2, 0xed, 0xa4, 0xef, 0xd2, 0xed, 0xa4, 0xef, 0xd2, - 0xed, 0xa4, 0xf0, 0xd2, 0xed, 0xa4, 0xf0, 0xd2, 0xed, 0xa4, 0xf0, 0xd2, - 0xed, 0xa4, 0xf0, 0xd2, 0xed, 0xa4, 0xf1, 0xd2, 0xed, 0xa4, 0xf1, 0xd2, - 0xed, 0xa4, 0xf1, 0xd2, 0xed, 0xa4, 0xf1, 0xcf, 0xed, 0xa4, 0xf2, 0xd2, - 0xed, 0xa4, 0xf2, 0xcf, 0xed, 0xa4, 0xf2, 0xd2, 0xed, 0xa4, 0xf2, 0xcf, - 0xed, 0xa4, 0xf2, 0xd2, 0xed, 0xa4, 0xf3, 0xcf, 0xed, 0xa4, 0xf3, 0xd2, - 0xed, 0xa4, 0xf3, 0xcf, 0xed, 0xa4, 0xf3, 0xd2, 0xed, 0xa4, 0xf4, 0xcf, - 0xed, 0xa4, 0xf4, 0xd2, 0xed, 0xa4, 0xf4, 0xcf, 0xed, 0xa4, 0xf4, 0xd2, - 0xed, 0xa4, 0xf5, 0xcf, 0xed, 0xa4, 0xf5, 0xd2, 0xed, 0xa4, 0xf5, 0xcf, - 0xed, 0xa4, 0xf5, 0xd2, 0xed, 0xa4, 0xf5, 0xcf, 0xed, 0xa4, 0xf6, 0xd2, - 0xed, 0xa4, 0xf6, 0xc7, 0xf6, 0xa4, 0xf6, 0xc7, 0xf6, 0xa4, 0xf6, 0xc7, - 0xf6, 0xa4, 0xf7, 0xc7, 0xf7, 0xa4, 0xf7, 0xc7, 0xf7, 0xa4, 0xf7, 0xc7, - 0xf7, 0xa4, 0xf7, 0xc7, 0xf7, 0xa4, 0xf8, 0xc7, 0xf7, 0xa4, 0xf8, 0xc7, - 0xf7, 0xa4, 0xf8, 0xc7, 0xf7, 0xa4, 0xf8, 0xc7, 0xf7, 0xa4, 0xf8, 0xc7, - 0xf7, 0xa4, 0xf9, 0xc7, 0xf7, 0xa4, 0xf9, 0xc7, 0xf7, 0xa4, 0xf9, 0xc7, - 0xf7, 0xa4, 0xf9, 0xc7, 0xf7, 0xa4, 0xfa, 0xc7, 0xf7, 0xa4, 0xfa, 0xc7, - 0xf7, 0xa4, 0xfa, 0xc7, 0xf7, 0xa4, 0xfa, 0xc7, 0xf7, 0xa4, 0xfa, 0xc7, - 0xf7, 0xa4, 0xfb, 0xc7, 0xf7, 0xa4, 0xfb, 0xc7, 0xf7, 0xa4, 0xfb, 0xc7, - 0xf7, 0xa4, 0xfb, 0xc7, 0xf7, 0xa4, 0xfc, 0xc7, 0xf7, 0xa4, 0xfc, 0xc7, - 0xf7, 0xa4, 0xfc, 0xc7, 0xf7, 0xa4, 0xfc, 0xc7, 0xf7, 0xa4, 0xfc, 0xc7, - 0xf7, 0xa4, 0xfd, 0xc7, 0xf7, 0xa4, 0xfd, 0xc7, 0xf7, 0xa4, 0xfd, 0xc7, - 0xf7, 0xa4, 0xfd, 0xc7, 0xf7, 0xa4, 0xfe, 0xc7, 0xf7, 0xa4, 0xfe, 0xc7, - 0xf7, 0xa4, 0xfe, 0xc7, 0xf7, 0xa4, 0xfe, 0xc7, 0xf7, 0xa4, 0xfe, 0xc7, - 0xf7, 0xa4, 0xff, 0xc7, 0xf7, 0xa4, 0xff, 0xc7, 0xf7, 0xa4, 0x03, 0xd8, - 0x8b, 0xa4, 0x0a, 0xd8, 0x8b, 0xa4, 0x0f, 0xd8, 0x8b, 0xa4, 0x14, 0xd6, - 0x8c, 0xa4, 0x17, 0xd8, 0x8b, 0xa4, 0x1b, 0xd6, 0x8c, 0xa4, 0x1e, 0xd8, - 0x8b, 0xa4, 0x20, 0xd6, 0x8c, 0xa4, 0x23, 0xd8, 0x8b, 0xa4, 0x25, 0xd6, - 0x8c, 0xa4, 0x27, 0xd8, 0x8b, 0xa4, 0x29, 0xd6, 0x8c, 0xa4, 0x2b, 0xd8, - 0x8b, 0xa4, 0x2d, 0xd6, 0x8c, 0xa4, 0x2f, 0xd8, 0x8b, 0xa4, 0x31, 0xd6, - 0x8c, 0xa4, 0x32, 0xd8, 0x8b, 0xa4, 0x34, 0xd6, 0x8c, 0xa4, 0x35, 0xd8, - 0x8b, 0xa4, 0x37, 0xd6, 0x8c, 0xa4, 0x38, 0xd8, 0x8b, 0xa4, 0x3a, 0xd6, - 0x8c, 0xa4, 0x3b, 0xd8, 0x8b, 0xa4, 0x3c, 0xd6, 0x8c, 0xa4, 0x3e, 0xd8, - 0x8b, 0xa4, 0x3f, 0xd6, 0x8c, 0xa4, 0x40, 0xd8, 0x8b, 0xa4, 0x42, 0xd6, - 0x8c, 0xa4, 0x43, 0xd8, 0x8b, 0xa4, 0x44, 0xd6, 0x8c, 0xa4, 0x45, 0xd4, - 0x8c, 0xa4, 0x46, 0xd6, 0x8c, 0xa4, 0x47, 0xd4, 0x8c, 0xa4, 0x48, 0xd6, - 0x8c, 0xa4, 0x49, 0xd4, 0x8c, 0xa4, 0x4a, 0xd6, 0x8c, 0xa4, 0x4b, 0xd4, - 0x8c, 0xa4, 0x4c, 0xd6, 0x8c, 0xa4, 0x4d, 0xd4, 0x8c, 0xa4, 0x4e, 0xd6, - 0x8c, 0xa4, 0x4f, 0xd4, 0x8c, 0xa4, 0x50, 0xd6, 0x8c, 0xa4, 0x51, 0xd4, - 0x8c, 0xa4, 0x52, 0xd6, 0x8c, 0xa4, 0x53, 0xd4, 0x8c, 0xa4, 0x54, 0xd6, - 0x8c, 0xa4, 0x55, 0xd4, 0x8c, 0xa4, 0x56, 0xd6, 0x8c, 0xa4, 0x57, 0xd4, - 0x8c, 0xa4, 0x58, 0xd6, 0x8c, 0xa4, 0x58, 0xd4, 0x8c, 0xa4, 0x59, 0xd6, - 0x8c, 0xa4, 0x5a, 0xd4, 0x8c, 0xa4, 0x5b, 0xd6, 0x8c, 0xa4, 0x5c, 0xd4, - 0x8c, 0xa4, 0x5d, 0xd6, 0x8c, 0xa4, 0x5d, 0xd4, 0x8c, 0xa4, 0x5e, 0xd6, - 0x8c, 0xa4, 0x5f, 0xd4, 0x8c, 0xa4, 0x60, 0xd6, 0x8c, 0xa4, 0x60, 0xd4, - 0x8c, 0xa4, 0x61, 0xd6, 0x8c, 0xa4, 0x62, 0xd4, 0x8c, 0xa4, 0x63, 0xd6, - 0x8c, 0xa4, 0x63, 0xd4, 0x8c, 0xa4, 0x64, 0xd6, 0x8c, 0xa4, 0x65, 0xd4, - 0x8c, 0xa4, 0x66, 0xd6, 0x8c, 0xa4, 0x66, 0xd4, 0x8c, 0xa4, 0x67, 0xd6, - 0x8c, 0xa4, 0x68, 0xd4, 0x8c, 0xa4, 0x68, 0xd2, 0x8d, 0xa4, 0x69, 0xd4, - 0x8c, 0xa4, 0x6a, 0xd2, 0x8d, 0xa4, 0x6a, 0xd4, 0x8c, 0xa4, 0x6b, 0xd2, - 0x8d, 0xa4, 0x6c, 0xd4, 0x8c, 0xa4, 0x6c, 0xd2, 0x8d, 0xa4, 0x6d, 0xd4, - 0x8c, 0xa4, 0x6e, 0xd2, 0x8d, 0xa4, 0x6e, 0xd4, 0x8c, 0xa4, 0x6f, 0xd2, - 0x8d, 0xa4, 0x70, 0xd4, 0x8c, 0xa4, 0x70, 0xd2, 0x8d, 0xa4, 0x71, 0xd4, - 0x8c, 0xa4, 0x72, 0xd2, 0x8d, 0xa4, 0x72, 0xd4, 0x8c, 0xa4, 0x73, 0xd2, - 0x8d, 0xa4, 0x73, 0xd4, 0x8c, 0xa4, 0x74, 0xd2, 0x8d, 0xa4, 0x75, 0xd4, - 0x8c, 0xa4, 0x75, 0xd2, 0x8d, 0xa4, 0x76, 0xd4, 0x8c, 0xa4, 0x76, 0xd2, - 0x8d, 0xa4, 0x77, 0xd4, 0x8c, 0xa4, 0x78, 0xd2, 0x8d, 0xa4, 0x78, 0xd4, - 0x8c, 0xa4, 0x79, 0xd2, 0x8d, 0xa4, 0x79, 0xd4, 0x8c, 0xa4, 0x7a, 0xd2, - 0x8d, 0xa4, 0x7a, 0xd4, 0x8c, 0xa4, 0x7b, 0xd2, 0x8d, 0xa4, 0x7c, 0xd4, - 0x8c, 0xa4, 0x7c, 0xd2, 0x8d, 0xa4, 0x7d, 0xd4, 0x8c, 0xa4, 0x7d, 0xd2, - 0x8d, 0xa4, 0x7e, 0xd4, 0x8c, 0xa4, 0x7e, 0xd2, 0x8d, 0xa4, 0x7f, 0xd4, - 0x8c, 0xa4, 0x7f, 0xd2, 0x8d, 0xa4, 0x80, 0xd4, 0x8c, 0xa4, 0x81, 0xd2, - 0x8d, 0xa4, 0x81, 0xd4, 0x8c, 0xa4, 0x82, 0xd2, 0x8d, 0xa4, 0x82, 0xd4, - 0x8c, 0xa4, 0x83, 0xd2, 0x8d, 0xa4, 0x83, 0xd4, 0x8c, 0xa4, 0x84, 0xd2, - 0x8d, 0xa4, 0x84, 0xd4, 0x8c, 0xa4, 0x85, 0xd2, 0x8d, 0xa4, 0x85, 0xd2, - 0x8d, 0xa4, 0x86, 0xd2, 0x8d, 0xa4, 0x86, 0xd2, 0x8d, 0xa4, 0x87, 0xd2, - 0x8d, 0xa4, 0x87, 0xd2, 0x8d, 0xa4, 0x88, 0xd2, 0x8d, 0xa4, 0x88, 0xd2, - 0x8d, 0xa4, 0x89, 0xd2, 0x8d, 0xa4, 0x89, 0xd2, 0x8d, 0xa4, 0x8a, 0xd2, - 0x8d, 0xa4, 0x8a, 0xd2, 0x8d, 0xa4, 0x8b, 0xd2, 0x8d, 0xa4, 0x8b, 0xd2, - 0x8d, 0xa4, 0x8c, 0xd2, 0x8d, 0xa4, 0x8c, 0xd2, 0x8d, 0xa4, 0x8d, 0xd2, - 0x8d, 0xa4, 0x8c, 0xd2, 0x8d, 0xa4, 0x8d, 0xd2, 0x8e, 0xa4, 0x8c, 0xd2, - 0x8e, 0xa4, 0x8d, 0xd2, 0x8e, 0xa4, 0x8c, 0xd2, 0x8f, 0xa4, 0x8d, 0xd2, - 0x8f, 0xa4, 0x8c, 0xd2, 0x90, 0xa4, 0x8d, 0xd2, 0x90, 0xa4, 0x8d, 0xd2, - 0x91, 0xa1, 0x8d, 0xd2, 0x91, 0xa4, 0x8d, 0xd2, 0x92, 0xa1, 0x8d, 0xd2, - 0x92, 0xa4, 0x8d, 0xd2, 0x93, 0xa1, 0x8d, 0xd2, 0x93, 0xa4, 0x8d, 0xd2, - 0x94, 0xa1, 0x8d, 0xd2, 0x94, 0xa4, 0x8d, 0xd2, 0x94, 0xa1, 0x8d, 0xd2, - 0x95, 0xa4, 0x8d, 0xd2, 0x95, 0xa1, 0x8d, 0xd2, 0x96, 0xa4, 0x8d, 0xd2, - 0x96, 0xa1, 0x8d, 0xd2, 0x97, 0xa4, 0x8d, 0xd2, 0x97, 0xa1, 0x8d, 0xd2, - 0x98, 0xa4, 0x8d, 0xd2, 0x98, 0xa1, 0x8d, 0xd2, 0x98, 0xa4, 0x8d, 0xd2, - 0x99, 0xa1, 0x8d, 0xd2, 0x99, 0xa4, 0x9c, 0xd2, 0x9a, 0x96, 0x9d, 0xd2, - 0x9a, 0x96, 0x9c, 0xd2, 0x9a, 0x96, 0x9d, 0xd2, 0x9b, 0x96, 0x9c, 0xd2, - 0x9b, 0x96, 0x9d, 0xd2, 0x9c, 0x96, 0x9c, 0xd2, 0x9c, 0x96, 0xa1, 0xd2, - 0x9d, 0x97, 0xa1, 0xd2, 0x9d, 0x97, 0xa1, 0xd2, 0x9d, 0x97, 0xa1, 0xd2, - 0x9e, 0x97, 0xa1, 0xd2, 0x9e, 0x97, 0xa1, 0xd2, 0x9f, 0x97, 0xa1, 0xd2, - 0x9f, 0x97, 0xa1, 0xd2, 0x9f, 0x97, 0xa1, 0xd2, 0xa0, 0x97, 0xa1, 0xd2, - 0xa0, 0x97, 0xa1, 0xd2, 0xa1, 0x97, 0xa1, 0xd2, 0xa1, 0x97, 0xa1, 0xd2, - 0xa1, 0x97, 0xa2, 0xd2, 0xa2, 0x97, 0xa2, 0xd2, 0xa2, 0x97, 0xa3, 0xd2, - 0xa3, 0x97, 0xa3, 0xd2, 0xa3, 0x97, 0xa3, 0xd2, 0xa3, 0x97, 0xa3, 0xd2, - 0xa4, 0x97, 0xa3, 0xd2, 0xa4, 0x97, 0xa3, 0xd2, 0xa5, 0x97, 0xa3, 0xd2, - 0xa5, 0x97, 0xa3, 0xd2, 0xa5, 0x97, 0xa3, 0xd2, 0xa6, 0x97, 0xa3, 0xd2, - 0xa6, 0x97, 0xa3, 0xd2, 0xa6, 0x97, 0xa3, 0xd2, 0xa7, 0x97, 0xa3, 0xd2, - 0xa7, 0x97, 0xa3, 0xd2, 0xa8, 0x97, 0xa3, 0xd2, 0xa8, 0x97, 0xa3, 0xd2, - 0xa8, 0x97, 0xa3, 0xd2, 0xa9, 0x97, 0xa3, 0xd2, 0xa9, 0x97, 0xa3, 0xd2, - 0xaa, 0x97, 0xa3, 0xd2, 0xaa, 0x97, 0xa3, 0xd2, 0xaa, 0x97, 0xa3, 0xd2, - 0xab, 0x97, 0xa3, 0xd2, 0xab, 0x97, 0xa3, 0xd2, 0xab, 0x97, 0xa3, 0xd2, - 0xac, 0x97, 0xa3, 0xd2, 0xac, 0x97, 0xa3, 0xd2, 0xac, 0x97, 0xa3, 0xd2, - 0xad, 0x97, 0xa3, 0xd2, 0xad, 0x97, 0xa3, 0xd2, 0xae, 0x97, 0xa3, 0xd2, - 0xae, 0x97, 0xa3, 0xd2, 0xae, 0x97, 0xa3, 0xd2, 0xaf, 0x97, 0xa3, 0xd2, - 0xaf, 0x97, 0xa3, 0xd2, 0xaf, 0x97, 0xa3, 0xd2, 0xb0, 0x97, 0xa3, 0xd2, - 0xb0, 0x97, 0xa3, 0xd2, 0xb0, 0x97, 0xa3, 0xd2, 0xb1, 0x97, 0xa3, 0xd2, - 0xb1, 0x97, 0xa3, 0xd2, 0xb2, 0x97, 0xa3, 0xd2, 0xb2, 0x97, 0xa3, 0xd2, - 0xb2, 0x97, 0xa3, 0xd2, 0xb3, 0x97, 0xa3, 0xd2, 0xb3, 0x97, 0xa3, 0xd2, - 0xb3, 0x97, 0xa3, 0xd2, 0xb4, 0x97, 0xa3, 0xd2, 0xb4, 0x97, 0xa3, 0xd2, - 0xb4, 0x97, 0xa3, 0xd2, 0xb5, 0x97, 0xa3, 0xd2, 0xb5, 0x97, 0xa3, 0xd2, - 0xb5, 0x97, 0xa3, 0xd2, 0xb6, 0x97, 0xa3, 0xd2, 0xb6, 0x97, 0xa3, 0xd2, - 0xb6, 0x97, 0xa3, 0xd2, 0xb7, 0x97, 0xa3, 0xd2, 0xb7, 0x97, 0xa3, 0xd2, - 0xb7, 0x97, 0xa3, 0xd2, 0xb8, 0x97, 0xa3, 0xd2, 0xb8, 0x97, 0xa3, 0xd2, - 0xb8, 0x97, 0xa3, 0xd2, 0xb9, 0x97, 0xa3, 0xd2, 0xb9, 0x97, 0xa3, 0xd2, - 0xb9, 0x97, 0xa3, 0xd2, 0xba, 0x97, 0xa3, 0xd2, 0xba, 0x97, 0xa3, 0xd2, - 0xba, 0x97, 0xa3, 0xd2, 0xbb, 0x97, 0xa3, 0xd2, 0xbb, 0x97, 0xa3, 0xd2, - 0xbb, 0x97, 0xa3, 0xd2, 0xbc, 0x97, 0xd2, 0xd2, 0xbc, 0xa7, 0xd2, 0xd2, - 0xbc, 0xaa, 0xd2, 0xd2, 0xbd, 0xa7, 0xd2, 0xd2, 0xbd, 0xaa, 0xd2, 0xd2, - 0xbd, 0xa7, 0xd2, 0xd2, 0xbe, 0xaa, 0xd2, 0xd2, 0xbe, 0xa7, 0xd2, 0xd2, - 0xbe, 0xaa, 0xd2, 0xd2, 0xbf, 0xa7, 0xd2, 0xd2, 0xbf, 0xaa, 0xd2, 0xd2, - 0xbf, 0xa7, 0xd2, 0xd2, 0xc0, 0xaa, 0xd2, 0xd2, 0xc0, 0xa7, 0xd2, 0xd2, - 0xc0, 0xaa, 0xd2, 0xd2, 0xc1, 0xa7, 0xd2, 0xd2, 0xc1, 0xaa, 0xd2, 0xd2, - 0xc1, 0xa7, 0xd2, 0xd2, 0xc1, 0xaa, 0xd2, 0xd2, 0xc2, 0xa7, 0xd2, 0xd2, - 0xc2, 0xaa, 0xd2, 0xd2, 0xc2, 0xa7, 0xd2, 0xd2, 0xc3, 0xaa, 0xd2, 0xd2, - 0xc3, 0xa7, 0xd2, 0xd2, 0xc3, 0xaa, 0xd2, 0xd2, 0xc4, 0xa7, 0xd2, 0xd2, - 0xc4, 0xaa, 0xd2, 0xd2, 0xc4, 0xa7, 0xd2, 0xd2, 0xc5, 0xaa, 0xd2, 0xd2, - 0xc5, 0xa7, 0xd2, 0xd2, 0xc5, 0xaa, 0xd2, 0xd2, 0xc6, 0xa7, 0xd2, 0xd2, - 0xc6, 0xaa, 0xd2, 0xd2, 0xc6, 0xa7, 0xd2, 0xd2, 0xc6, 0xaa, 0xd2, 0xd2, - 0xc7, 0xa7, 0xd2, 0xd2, 0xc7, 0xaa, 0xd2, 0xd2, 0xc7, 0xa7, 0xd2, 0xd2, - 0xc8, 0xa4, 0xd2, 0xd2, 0xc8, 0xa7, 0xd2, 0xd2, 0xc8, 0xa4, 0xd2, 0xd2, - 0xc9, 0xa7, 0xd2, 0xd2, 0xc9, 0xa4, 0xd2, 0xd2, 0xc9, 0xa7, 0xd2, 0xd2, - 0xc9, 0xa4, 0xd2, 0xd2, 0xca, 0xa7, 0xd2, 0xd2, 0xca, 0xa4, 0xd2, 0xd2, - 0xca, 0xa7, 0xd2, 0xd2, 0xcb, 0xa4, 0xd2, 0xd2, 0xcb, 0xa7, 0xd2, 0xd2, - 0xcb, 0xa4, 0xd2, 0xd2, 0xcc, 0xa7, 0xd2, 0xd2, 0xcc, 0xa4, 0xd2, 0xd2, - 0xcc, 0xa7, 0xd2, 0xd2, 0xcc, 0xa4, 0xd2, 0xd2, 0xcd, 0xa7, 0xd2, 0xd2, - 0xcd, 0xa4, 0xd2, 0xd2, 0xcd, 0xa7, 0xd2, 0xd2, 0xce, 0xa4, 0xd2, 0xd2, - 0xce, 0xa7, 0xd2, 0xd2, 0xce, 0xa4, 0xd2, 0xd2, 0xce, 0xa7, 0xd2, 0xd2, - 0xcf, 0xa4, 0xd2, 0xd2, 0xcf, 0xa7, 0xd2, 0xd2, 0xcf, 0xa4, 0xd2, 0xd2, - 0xd0, 0xa7, 0xd2, 0xd2, 0xd0, 0xa4, 0xd2, 0xd2, 0xd0, 0xa4, 0xd2, 0xd2, - 0xd0, 0xa4, 0xd2, 0xd2, 0xd1, 0xa4, 0xd2, 0xd2, 0xd1, 0xa4, 0xd2, 0xd2, - 0xd1, 0xa4, 0xd2, 0xd2, 0xd2, 0xa4, 0xd2, 0xd2, 0xd2, 0xa4, 0xd2, 0xd1, - 0xd2, 0xa4, 0xd2, 0xd2, 0xd2, 0xa4, 0xd3, 0xd1, 0xd2, 0xa4, 0xd3, 0xd2, - 0xd2, 0xa4, 0xd3, 0xd1, 0xd2, 0xa4, 0xd4, 0xd2, 0xd2, 0xa4, 0xd4, 0xd1, - 0xd2, 0xa4, 0xd4, 0xd2, 0xd2, 0xa4, 0xd4, 0xd1, 0xd2, 0xa4, 0xd5, 0xd0, - 0xd2, 0xa4, 0xd5, 0xd1, 0xd2, 0xa4, 0xd5, 0xd0, 0xd2, 0xa4, 0xd6, 0xd1, - 0xd2, 0xa4, 0xd6, 0xd0, 0xd2, 0xa4, 0xd6, 0xd1, 0xd2, 0xa4, 0xd6, 0xd0, - 0xd2, 0xa4, 0xd7, 0xd1, 0xd2, 0xa4, 0xd7, 0xd0, 0xd2, 0xa4, 0xd7, 0xd1, - 0xd2, 0xa4, 0xd7, 0xd0, 0xd2, 0xa4, 0xd8, 0xd1, 0xd2, 0xa4, 0xd8, 0xd0, - 0xd2, 0xa4, 0xd8, 0xd1, 0xd2, 0xa4, 0xd9, 0xd0, 0xd2, 0xa4, 0xd9, 0xd1, - 0xd2, 0xa4, 0xd9, 0xd0, 0xd2, 0xa4, 0xd9, 0xd1, 0xd2, 0xa4, 0xda, 0xd0, - 0xd2, 0xa4, 0xda, 0xd1, 0xd2, 0xa4, 0xda, 0xd0, 0xd2, 0xa4, 0xda, 0xd1, - 0xd2, 0xa4, 0xdb, 0xd0, 0xd2, 0xa4, 0xdb, 0xc9, 0xdd, 0xa4, 0xdb, 0xc9, - 0xdc, 0xa4, 0xdb, 0xc9, 0xdd, 0xa4, 0xdc, 0xc9, 0xdc, 0xa4, 0xdc, 0xc9, - 0xdd, 0xa4, 0xdc, 0xc9, 0xdc, 0xa4, 0xdd, 0xca, 0xdf, 0xa4, 0xdd, 0xca, - 0xdf, 0xa4, 0xdd, 0xca, 0xdf, 0xa4, 0xdd, 0xca, 0xdf, 0xa4, 0xde, 0xca, - 0xdf, 0xa4, 0xde, 0xca, 0xdf, 0xa4, 0xde, 0xca, 0xdf, 0xa4, 0xde, 0xca, - 0xdf, 0xa4, 0xdf, 0xca, 0xdf, 0xa4, 0xdf, 0xca, 0xdf, 0xa4, 0xdf, 0xca, - 0xdf, 0xa4, 0xdf, 0xca, 0xe2, 0xa4, 0xe0, 0xca, 0xe2, 0xa4, 0xe0, 0xca, - 0xe2, 0xa4, 0xe0, 0xca, 0xe2, 0xa4, 0xe1, 0xca, 0xe2, 0xa4, 0xe1, 0xca, - 0xe2, 0xa4, 0xe1, 0xca, 0xe2, 0xa4, 0xe1, 0xca, 0xe2, 0xa4, 0xe2, 0xca, - 0xe2, 0xa4, 0xe2, 0xca, 0xe2, 0xa4, 0xe2, 0xca, 0xe2, 0xa4, 0xe2, 0xca, - 0xe2, 0xa4, 0xe3, 0xca, 0xe3, 0xa4, 0xe3, 0xcb, 0xe5, 0xa4, 0xe3, 0xcb, - 0xe5, 0xa4, 0xe3, 0xcb, 0xe5, 0xa4, 0xe4, 0xcb, 0xe5, 0xa4, 0xe4, 0xcb, - 0xe5, 0xa4, 0xe4, 0xcb, 0xe5, 0xa4, 0xe4, 0xd2, 0xea, 0xa4, 0xe5, 0xd3, - 0xea, 0xa4, 0xe5, 0xd2, 0xea, 0xa4, 0xe5, 0xd3, 0xea, 0xa4, 0xe5, 0xd2, - 0xea, 0xa4, 0xe6, 0xd3, 0xea, 0xa4, 0xe6, 0xd2, 0xea, 0xa4, 0xe6, 0xd3, - 0xea, 0xa4, 0xe6, 0xd2, 0xea, 0xa4, 0xe7, 0xd3, 0xea, 0xa4, 0xe7, 0xd2, - 0xea, 0xa4, 0xe7, 0xd3, 0xea, 0xa4, 0xe7, 0xd2, 0xea, 0xa4, 0xe8, 0xd3, - 0xea, 0xa4, 0xe8, 0xd2, 0xea, 0xa4, 0xe8, 0xd3, 0xea, 0xa4, 0xe8, 0xd2, - 0xea, 0xa4, 0xe9, 0xd3, 0xea, 0xa4, 0xe9, 0xd2, 0xea, 0xa4, 0xe9, 0xd3, - 0xea, 0xa4, 0xe9, 0xd2, 0xea, 0xa4, 0xea, 0xd2, 0xeb, 0xa4, 0xea, 0xd2, - 0xea, 0xa4, 0xea, 0xd2, 0xeb, 0xa4, 0xea, 0xd2, 0xea, 0xa3, 0xea, 0xd2, - 0xeb, 0xa4, 0xea, 0xd2, 0xeb, 0xa3, 0xea, 0xd2, 0xeb, 0xa4, 0xea, 0xd2, - 0xeb, 0xa3, 0xea, 0xd2, 0xec, 0xa4, 0xed, 0xd2, 0xec, 0xa4, 0xed, 0xd2, - 0xec, 0xa4, 0xed, 0xd2, 0xec, 0xa4, 0xed, 0xd2, 0xec, 0xa4, 0xed, 0xd2, - 0xed, 0xa4, 0xed, 0xd2, 0xed, 0xa4, 0xed, 0xd1, 0xed, 0xa4, 0xed, 0xd2, - 0xed, 0xa4, 0xee, 0xd1, 0xed, 0xa4, 0xee, 0xd2, 0xed, 0xa4, 0xee, 0xd1, - 0xed, 0xa4, 0xee, 0xd2, 0xed, 0xa4, 0xef, 0xd1, 0xed, 0xa4, 0xef, 0xd2, - 0xed, 0xa4, 0xef, 0xd1, 0xed, 0xa4, 0xef, 0xd2, 0xed, 0xa4, 0xf0, 0xd1, - 0xed, 0xa4, 0xf0, 0xd2, 0xed, 0xa4, 0xf0, 0xd1, 0xed, 0xa4, 0xf0, 0xd2, - 0xed, 0xa4, 0xf1, 0xd1, 0xed, 0xa4, 0xf1, 0xd2, 0xed, 0xa4, 0xf1, 0xd1, - 0xed, 0xa4, 0xf1, 0xd0, 0xed, 0xa4, 0xf2, 0xd1, 0xed, 0xa4, 0xf2, 0xd0, - 0xed, 0xa4, 0xf2, 0xd1, 0xed, 0xa4, 0xf2, 0xd0, 0xed, 0xa4, 0xf2, 0xd1, - 0xed, 0xa4, 0xf3, 0xd0, 0xed, 0xa4, 0xf3, 0xd1, 0xed, 0xa4, 0xf3, 0xd0, - 0xed, 0xa4, 0xf3, 0xd1, 0xed, 0xa4, 0xf4, 0xd0, 0xed, 0xa4, 0xf4, 0xd1, - 0xed, 0xa4, 0xf4, 0xd0, 0xed, 0xa4, 0xf4, 0xd1, 0xed, 0xa4, 0xf5, 0xd0, - 0xed, 0xa4, 0xf5, 0xd1, 0xed, 0xa4, 0xf5, 0xd0, 0xed, 0xa4, 0xf5, 0xd1, - 0xed, 0xa4, 0xf5, 0xd0, 0xed, 0xa4, 0xf6, 0xd1, 0xed, 0xa4, 0xf6, 0xd0, - 0xed, 0xa4, 0xf6, 0xc7, 0xf6, 0xa4, 0xf6, 0xc7, 0xf6, 0xa4, 0xf7, 0xc7, - 0xf7, 0xa4, 0xf7, 0xc7, 0xf7, 0xa4, 0xf7, 0xc7, 0xf7, 0xa4, 0xf7, 0xc7, - 0xf7, 0xa4, 0xf8, 0xc7, 0xf7, 0xa4, 0xf8, 0xc7, 0xf7, 0xa4, 0xf8, 0xc7, - 0xf7, 0xa4, 0xf8, 0xc7, 0xf7, 0xa4, 0xf8, 0xc7, 0xf7, 0xa4, 0xf9, 0xc7, - 0xf7, 0xa4, 0xf9, 0xc7, 0xf7, 0xa4, 0xf9, 0xc7, 0xf7, 0xa4, 0xf9, 0xc7, - 0xf7, 0xa4, 0xfa, 0xc7, 0xf7, 0xa4, 0xfa, 0xc7, 0xf7, 0xa4, 0xfa, 0xc7, - 0xf7, 0xa4, 0xfa, 0xc7, 0xf7, 0xa4, 0xfa, 0xc7, 0xf7, 0xa4, 0xfb, 0xc7, - 0xf7, 0xa4, 0xfb, 0xc7, 0xf7, 0xa4, 0xfb, 0xc7, 0xf7, 0xa4, 0xfb, 0xc7, - 0xf7, 0xa4, 0xfc, 0xc7, 0xf7, 0xa4, 0xfc, 0xc7, 0xf7, 0xa4, 0xfc, 0xc7, - 0xf7, 0xa4, 0xfc, 0xc7, 0xf7, 0xa4, 0xfc, 0xc7, 0xf7, 0xa4, 0xfd, 0xc7, - 0xf7, 0xa4, 0xfd, 0xc7, 0xf7, 0xa4, 0xfd, 0xc7, 0xf7, 0xa4, 0xfd, 0xc7, - 0xf7, 0xa4, 0xfe, 0xc7, 0xf7, 0xa4, 0xfe, 0xc7, 0xf7, 0xa4, 0xfe, 0xc7, - 0xf7, 0xa4, 0xfe, 0xc7, 0xf7, 0xa4, 0xfe, 0xc7, 0xf7, 0xa4, 0xff, 0xc7, - 0xf7, 0xa4, 0xff, 0xc7, 0xf7, 0xa4, 0x03, 0xd8, 0x8b, 0xa5, 0x0a, 0xd6, - 0x8c, 0xa5, 0x0f, 0xd8, 0x8b, 0xa5, 0x14, 0xd6, 0x8c, 0xa5, 0x17, 0xd8, - 0x8b, 0xa5, 0x1b, 0xd6, 0x8c, 0xa5, 0x1e, 0xd8, 0x8b, 0xa5, 0x20, 0xd6, - 0x8c, 0xa5, 0x23, 0xd8, 0x8b, 0xa5, 0x25, 0xd6, 0x8c, 0xa5, 0x27, 0xd8, - 0x8b, 0xa5, 0x29, 0xd6, 0x8c, 0xa5, 0x2b, 0xd8, 0x8b, 0xa5, 0x2d, 0xd6, - 0x8c, 0xa5, 0x2f, 0xd8, 0x8b, 0xa5, 0x31, 0xd6, 0x8c, 0xa5, 0x32, 0xd8, - 0x8b, 0xa5, 0x34, 0xd6, 0x8c, 0xa5, 0x35, 0xd8, 0x8b, 0xa5, 0x37, 0xd6, - 0x8c, 0xa5, 0x38, 0xd8, 0x8b, 0xa5, 0x3a, 0xd6, 0x8c, 0xa5, 0x3b, 0xd8, - 0x8b, 0xa5, 0x3c, 0xd6, 0x8c, 0xa5, 0x3e, 0xd8, 0x8b, 0xa5, 0x3f, 0xd6, - 0x8c, 0xa5, 0x40, 0xd8, 0x8b, 0xa5, 0x42, 0xd6, 0x8c, 0xa5, 0x43, 0xd8, - 0x8b, 0xa5, 0x44, 0xd6, 0x8c, 0xa5, 0x45, 0xd4, 0x8c, 0xa5, 0x46, 0xd6, - 0x8c, 0xa5, 0x47, 0xd4, 0x8c, 0xa5, 0x48, 0xd6, 0x8c, 0xa5, 0x49, 0xd4, - 0x8c, 0xa5, 0x4a, 0xd6, 0x8c, 0xa5, 0x4b, 0xd4, 0x8c, 0xa5, 0x4c, 0xd6, - 0x8c, 0xa5, 0x4d, 0xd4, 0x8c, 0xa5, 0x4e, 0xd6, 0x8c, 0xa5, 0x4f, 0xd4, - 0x8c, 0xa5, 0x50, 0xd6, 0x8c, 0xa5, 0x51, 0xd4, 0x8c, 0xa5, 0x52, 0xd6, - 0x8c, 0xa5, 0x53, 0xd4, 0x8c, 0xa5, 0x54, 0xd6, 0x8c, 0xa5, 0x55, 0xd4, - 0x8c, 0xa5, 0x56, 0xd6, 0x8c, 0xa5, 0x57, 0xd4, 0x8c, 0xa5, 0x58, 0xd6, - 0x8c, 0xa5, 0x58, 0xd4, 0x8c, 0xa5, 0x59, 0xd6, 0x8c, 0xa5, 0x5a, 0xd4, - 0x8c, 0xa5, 0x5b, 0xd6, 0x8c, 0xa5, 0x5c, 0xd4, 0x8c, 0xa5, 0x5d, 0xd6, - 0x8c, 0xa5, 0x5d, 0xd4, 0x8c, 0xa5, 0x5e, 0xd6, 0x8c, 0xa5, 0x5f, 0xd4, - 0x8c, 0xa5, 0x60, 0xd6, 0x8c, 0xa5, 0x60, 0xd4, 0x8c, 0xa5, 0x61, 0xd6, - 0x8c, 0xa5, 0x62, 0xd4, 0x8c, 0xa5, 0x63, 0xd6, 0x8c, 0xa5, 0x63, 0xd4, - 0x8c, 0xa5, 0x64, 0xd6, 0x8c, 0xa5, 0x65, 0xd4, 0x8c, 0xa5, 0x66, 0xd6, - 0x8c, 0xa5, 0x66, 0xd4, 0x8c, 0xa5, 0x67, 0xd6, 0x8c, 0xa5, 0x68, 0xd4, - 0x8c, 0xa5, 0x68, 0xd6, 0x8c, 0xa5, 0x69, 0xd4, 0x8c, 0xa5, 0x6a, 0xd6, - 0x8c, 0xa5, 0x6a, 0xd4, 0x8c, 0xa5, 0x6b, 0xd6, 0x8c, 0xa5, 0x6c, 0xd4, - 0x8c, 0xa5, 0x6c, 0xd6, 0x8c, 0xa5, 0x6d, 0xd4, 0x8c, 0xa5, 0x6e, 0xd6, - 0x8c, 0xa5, 0x6e, 0xd4, 0x8c, 0xa5, 0x6f, 0xd6, 0x8c, 0xa5, 0x70, 0xd4, - 0x8c, 0xa5, 0x70, 0xd6, 0x8c, 0xa5, 0x71, 0xd4, 0x8c, 0xa5, 0x72, 0xd6, - 0x8c, 0xa5, 0x72, 0xd4, 0x8c, 0xa5, 0x73, 0xd3, 0x8d, 0xa5, 0x73, 0xd4, - 0x8c, 0xa5, 0x74, 0xd3, 0x8d, 0xa5, 0x75, 0xd4, 0x8c, 0xa5, 0x75, 0xd3, - 0x8d, 0xa5, 0x76, 0xd4, 0x8c, 0xa5, 0x76, 0xd3, 0x8d, 0xa5, 0x77, 0xd4, - 0x8c, 0xa5, 0x78, 0xd3, 0x8d, 0xa5, 0x78, 0xd4, 0x8c, 0xa5, 0x79, 0xd3, - 0x8d, 0xa5, 0x79, 0xd4, 0x8c, 0xa5, 0x7a, 0xd3, 0x8d, 0xa5, 0x7a, 0xd4, - 0x8c, 0xa5, 0x7b, 0xd3, 0x8d, 0xa5, 0x7c, 0xd4, 0x8c, 0xa5, 0x7c, 0xd3, - 0x8d, 0xa5, 0x7d, 0xd4, 0x8c, 0xa5, 0x7d, 0xd3, 0x8d, 0xa5, 0x7e, 0xd4, - 0x8c, 0xa5, 0x7e, 0xd3, 0x8d, 0xa5, 0x7f, 0xd4, 0x8c, 0xa5, 0x7f, 0xd3, - 0x8d, 0xa5, 0x80, 0xd4, 0x8c, 0xa5, 0x81, 0xd3, 0x8d, 0xa5, 0x81, 0xd4, - 0x8c, 0xa5, 0x82, 0xd3, 0x8d, 0xa5, 0x82, 0xd4, 0x8c, 0xa5, 0x83, 0xd3, - 0x8d, 0xa5, 0x83, 0xd4, 0x8c, 0xa5, 0x84, 0xd3, 0x8d, 0xa5, 0x84, 0xd4, - 0x8c, 0xa5, 0x85, 0xd3, 0x8d, 0xa5, 0x85, 0xd2, 0x8d, 0xa5, 0x86, 0xd3, - 0x8d, 0xa5, 0x86, 0xd2, 0x8d, 0xa5, 0x87, 0xd3, 0x8d, 0xa5, 0x87, 0xd2, - 0x8d, 0xa5, 0x88, 0xd3, 0x8d, 0xa5, 0x88, 0xd2, 0x8d, 0xa5, 0x89, 0xd3, - 0x8d, 0xa5, 0x89, 0xd2, 0x8d, 0xa5, 0x8a, 0xd3, 0x8d, 0xa5, 0x8a, 0xd2, - 0x8d, 0xa5, 0x8b, 0xd3, 0x8d, 0xa5, 0x8b, 0xd2, 0x8d, 0xa5, 0x8c, 0xd3, - 0x8d, 0xa5, 0x8c, 0xd2, 0x8d, 0xa5, 0x8d, 0xd3, 0x8d, 0xa5, 0x8c, 0xd2, - 0x8d, 0xa5, 0x8d, 0xd2, 0x8e, 0xa5, 0x8c, 0xd2, 0x8e, 0xa5, 0x8d, 0xd2, - 0x8e, 0xa5, 0x8c, 0xd2, 0x8f, 0xa5, 0x8d, 0xd2, 0x8f, 0xa5, 0x8c, 0xd2, - 0x90, 0xa5, 0x8d, 0xd2, 0x90, 0xa5, 0x8c, 0xd2, 0x91, 0xa5, 0x8d, 0xd2, - 0x91, 0xa5, 0x8c, 0xd2, 0x92, 0xa5, 0x8d, 0xd2, 0x92, 0xa5, 0x8c, 0xd2, - 0x93, 0xa5, 0x8d, 0xd2, 0x93, 0xa5, 0x8c, 0xd2, 0x94, 0xa5, 0x8d, 0xd2, - 0x94, 0xa5, 0x8d, 0xd2, 0x94, 0xa1, 0x8d, 0xd2, 0x95, 0xa5, 0x8d, 0xd2, - 0x95, 0xa1, 0x8d, 0xd2, 0x96, 0xa5, 0x8d, 0xd2, 0x96, 0xa1, 0x8d, 0xd2, - 0x97, 0xa5, 0x8d, 0xd2, 0x97, 0xa1, 0x8d, 0xd2, 0x98, 0xa5, 0x8d, 0xd2, - 0x98, 0xa1, 0x8d, 0xd2, 0x98, 0xa5, 0x8d, 0xd2, 0x99, 0xa1, 0x8d, 0xd2, - 0x99, 0xa5, 0x8d, 0xd2, 0x9a, 0xa1, 0x9a, 0xd2, 0x9a, 0x96, 0x9f, 0xd2, - 0x9a, 0x97, 0x9f, 0xd2, 0x9b, 0x97, 0x9f, 0xd2, 0x9b, 0x97, 0x9f, 0xd2, - 0x9c, 0x97, 0x9f, 0xd2, 0x9c, 0x97, 0x9f, 0xd2, 0x9d, 0x97, 0x9f, 0xd2, - 0x9d, 0x97, 0x9f, 0xd2, 0x9d, 0x97, 0x9f, 0xd2, 0x9e, 0x97, 0x9f, 0xd2, - 0x9e, 0x97, 0x9f, 0xd2, 0x9f, 0x97, 0xa3, 0xd2, 0x9f, 0x98, 0x9f, 0xd2, - 0x9f, 0x97, 0xa3, 0xd2, 0xa0, 0x98, 0xa0, 0xd2, 0xa0, 0x97, 0xa3, 0xd2, - 0xa1, 0x98, 0xa1, 0xd2, 0xa1, 0x97, 0xa3, 0xd2, 0xa1, 0x98, 0xa2, 0xd2, - 0xa2, 0x97, 0xa3, 0xd2, 0xa2, 0x98, 0xa3, 0xd2, 0xa3, 0x97, 0xa3, 0xd2, - 0xa3, 0x98, 0xa3, 0xd2, 0xa3, 0x97, 0xa3, 0xd2, 0xa4, 0x98, 0xa3, 0xd2, - 0xa4, 0x97, 0xa3, 0xd2, 0xa5, 0x98, 0xa3, 0xd2, 0xa5, 0x97, 0xa3, 0xd2, - 0xa5, 0x98, 0xa3, 0xd2, 0xa6, 0x97, 0xa3, 0xd2, 0xa6, 0x98, 0xa3, 0xd2, - 0xa6, 0x97, 0xa3, 0xd2, 0xa7, 0x98, 0xa3, 0xd2, 0xa7, 0x97, 0xa3, 0xd2, - 0xa8, 0x98, 0xa3, 0xd2, 0xa8, 0x97, 0xa3, 0xd2, 0xa8, 0x98, 0xa3, 0xd2, - 0xa9, 0x97, 0xa3, 0xd2, 0xa9, 0x98, 0xa3, 0xd2, 0xaa, 0x97, 0xa3, 0xd2, - 0xaa, 0x98, 0xa3, 0xd2, 0xaa, 0x97, 0xa3, 0xd2, 0xab, 0x98, 0xa3, 0xd2, - 0xab, 0x97, 0xa3, 0xd2, 0xab, 0x98, 0xa3, 0xd2, 0xac, 0x97, 0xa3, 0xd2, - 0xac, 0x98, 0xa3, 0xd2, 0xac, 0x97, 0xa3, 0xd2, 0xad, 0x98, 0xa3, 0xd2, - 0xad, 0x97, 0xa3, 0xd2, 0xae, 0x98, 0xa3, 0xd2, 0xae, 0x97, 0xa3, 0xd2, - 0xae, 0x98, 0xa3, 0xd2, 0xaf, 0x97, 0xa3, 0xd2, 0xaf, 0x98, 0xa3, 0xd2, - 0xaf, 0x97, 0xa3, 0xd2, 0xb0, 0x98, 0xa3, 0xd2, 0xb0, 0x97, 0xa3, 0xd2, - 0xb0, 0x98, 0xa3, 0xd2, 0xb1, 0x97, 0xa3, 0xd2, 0xb1, 0x98, 0xa3, 0xd2, - 0xb2, 0x97, 0xa3, 0xd2, 0xb2, 0x98, 0xa3, 0xd2, 0xb2, 0x97, 0xa3, 0xd2, - 0xb3, 0x98, 0xa3, 0xd2, 0xb3, 0x97, 0xa3, 0xd2, 0xb3, 0x98, 0xa3, 0xd2, - 0xb4, 0x97, 0xa3, 0xd2, 0xb4, 0x98, 0xa3, 0xd2, 0xb4, 0x97, 0xa3, 0xd2, - 0xb5, 0x98, 0xa3, 0xd2, 0xb5, 0x97, 0xa3, 0xd2, 0xb5, 0x98, 0xa3, 0xd2, - 0xb6, 0x97, 0xa3, 0xd2, 0xb6, 0x98, 0xa3, 0xd2, 0xb6, 0x97, 0xa3, 0xd2, - 0xb7, 0x98, 0xa3, 0xd2, 0xb7, 0x97, 0xa3, 0xd2, 0xb7, 0x98, 0xa3, 0xd2, - 0xb8, 0x97, 0xa3, 0xd2, 0xb8, 0x98, 0xa3, 0xd2, 0xb8, 0x97, 0xa3, 0xd2, - 0xb9, 0x98, 0xa3, 0xd2, 0xb9, 0x97, 0xa3, 0xd2, 0xb9, 0x98, 0xa3, 0xd2, - 0xba, 0x97, 0xa3, 0xd2, 0xba, 0x98, 0xa3, 0xd2, 0xba, 0x97, 0xa3, 0xd2, - 0xbb, 0x98, 0xa3, 0xd2, 0xbb, 0x97, 0xa3, 0xd2, 0xbb, 0x98, 0xd2, 0xd2, - 0xbc, 0xaa, 0xd1, 0xd2, 0xbc, 0xad, 0xd2, 0xd2, 0xbc, 0xaa, 0xd1, 0xd2, - 0xbd, 0xad, 0xd2, 0xd2, 0xbd, 0xaa, 0xd1, 0xd2, 0xbd, 0xad, 0xd2, 0xd2, - 0xbe, 0xaa, 0xd1, 0xd2, 0xbe, 0xad, 0xd2, 0xd2, 0xbe, 0xaa, 0xd1, 0xd2, - 0xbf, 0xad, 0xd2, 0xd2, 0xbf, 0xaa, 0xd1, 0xd2, 0xbf, 0xad, 0xd2, 0xd2, - 0xc0, 0xaa, 0xd1, 0xd2, 0xc0, 0xad, 0xd2, 0xd2, 0xc0, 0xaa, 0xd1, 0xd2, - 0xc1, 0xad, 0xd2, 0xd2, 0xc1, 0xaa, 0xd2, 0xd2, 0xc1, 0xa8, 0xd2, 0xd2, - 0xc1, 0xaa, 0xd2, 0xd2, 0xc2, 0xa8, 0xd2, 0xd2, 0xc2, 0xaa, 0xd2, 0xd2, - 0xc2, 0xa8, 0xd2, 0xd2, 0xc3, 0xaa, 0xd2, 0xd2, 0xc3, 0xa8, 0xd2, 0xd2, - 0xc3, 0xaa, 0xd2, 0xd2, 0xc4, 0xa8, 0xd2, 0xd2, 0xc4, 0xaa, 0xd2, 0xd2, - 0xc4, 0xa8, 0xd2, 0xd2, 0xc5, 0xaa, 0xd2, 0xd2, 0xc5, 0xa8, 0xd2, 0xd2, - 0xc5, 0xaa, 0xd2, 0xd2, 0xc6, 0xa8, 0xd2, 0xd2, 0xc6, 0xaa, 0xd2, 0xd2, - 0xc6, 0xa8, 0xd2, 0xd2, 0xc6, 0xaa, 0xd2, 0xd2, 0xc7, 0xa8, 0xd2, 0xd2, - 0xc7, 0xaa, 0xd2, 0xd2, 0xc7, 0xa8, 0xd2, 0xd2, 0xc8, 0xaa, 0xd2, 0xd2, - 0xc8, 0xa8, 0xd2, 0xd2, 0xc8, 0xaa, 0xd2, 0xd2, 0xc9, 0xa8, 0xd2, 0xd2, - 0xc9, 0xaa, 0xd2, 0xd2, 0xc9, 0xa8, 0xd2, 0xd2, 0xc9, 0xaa, 0xd2, 0xd2, - 0xca, 0xa8, 0xd2, 0xd2, 0xca, 0xaa, 0xd2, 0xd2, 0xca, 0xa8, 0xd2, 0xd2, - 0xcb, 0xaa, 0xd2, 0xd2, 0xcb, 0xa8, 0xd2, 0xd2, 0xcb, 0xa5, 0xd2, 0xd2, - 0xcc, 0xa8, 0xd2, 0xd2, 0xcc, 0xa5, 0xd2, 0xd2, 0xcc, 0xa8, 0xd2, 0xd2, - 0xcc, 0xa5, 0xd2, 0xd2, 0xcd, 0xa8, 0xd2, 0xd2, 0xcd, 0xa5, 0xd2, 0xd2, - 0xcd, 0xa8, 0xd2, 0xd2, 0xce, 0xa5, 0xd2, 0xd2, 0xce, 0xa8, 0xd2, 0xd2, - 0xce, 0xa5, 0xd2, 0xd2, 0xce, 0xa8, 0xd2, 0xd2, 0xcf, 0xa5, 0xd2, 0xd2, - 0xcf, 0xa8, 0xd2, 0xd2, 0xcf, 0xa5, 0xd2, 0xd2, 0xd0, 0xa8, 0xd2, 0xd2, - 0xd0, 0xa5, 0xd2, 0xd2, 0xd0, 0xa5, 0xd2, 0xd2, 0xd0, 0xa5, 0xd2, 0xd2, - 0xd1, 0xa5, 0xd2, 0xd2, 0xd1, 0xa5, 0xd2, 0xd2, 0xd1, 0xa5, 0xd2, 0xd2, - 0xd2, 0xa5, 0xd2, 0xd2, 0xd2, 0xa5, 0xd2, 0xd2, 0xd2, 0xa5, 0xd2, 0xd2, - 0xd2, 0xa5, 0xd3, 0xd2, 0xd2, 0xa5, 0xd3, 0xd2, 0xd2, 0xa5, 0xd3, 0xd2, - 0xd2, 0xa5, 0xd4, 0xd2, 0xd2, 0xa5, 0xd4, 0xd2, 0xd2, 0xa5, 0xd4, 0xd2, - 0xd2, 0xa5, 0xd4, 0xd2, 0xd2, 0xa5, 0xd5, 0xd2, 0xd2, 0xa5, 0xd5, 0xd2, - 0xd2, 0xa5, 0xd5, 0xd2, 0xd2, 0xa5, 0xd6, 0xd2, 0xd2, 0xa5, 0xd6, 0xd2, - 0xd2, 0xa5, 0xd6, 0xd2, 0xd2, 0xa5, 0xd6, 0xd2, 0xd2, 0xa5, 0xd7, 0xd2, - 0xd2, 0xa5, 0xd7, 0xd0, 0xd2, 0xa5, 0xd7, 0xd2, 0xd2, 0xa5, 0xd7, 0xd0, - 0xd2, 0xa5, 0xd8, 0xd2, 0xd2, 0xa5, 0xd8, 0xd0, 0xd2, 0xa5, 0xd8, 0xd2, - 0xd2, 0xa5, 0xd9, 0xd0, 0xd2, 0xa5, 0xd9, 0xd2, 0xd2, 0xa5, 0xd9, 0xd0, - 0xd2, 0xa5, 0xd9, 0xd2, 0xd2, 0xa5, 0xda, 0xd0, 0xd2, 0xa5, 0xda, 0xd2, - 0xd2, 0xa5, 0xda, 0xd0, 0xd2, 0xa5, 0xda, 0xd2, 0xd2, 0xa5, 0xdb, 0xd0, - 0xd2, 0xa5, 0xdb, 0xc9, 0xdb, 0xa5, 0xdb, 0xc9, 0xde, 0xa5, 0xdb, 0xc9, - 0xde, 0xa5, 0xdc, 0xc9, 0xde, 0xa5, 0xdc, 0xc9, 0xde, 0xa5, 0xdc, 0xc9, - 0xde, 0xa5, 0xdd, 0xc9, 0xde, 0xa5, 0xdd, 0xc9, 0xde, 0xa5, 0xdd, 0xc9, - 0xde, 0xa5, 0xdd, 0xc9, 0xde, 0xa5, 0xde, 0xc9, 0xde, 0xa5, 0xde, 0xc9, - 0xde, 0xa5, 0xde, 0xca, 0xe1, 0xa5, 0xde, 0xca, 0xe1, 0xa5, 0xdf, 0xca, - 0xe1, 0xa5, 0xdf, 0xca, 0xe1, 0xa5, 0xdf, 0xca, 0xe1, 0xa5, 0xdf, 0xca, - 0xe1, 0xa5, 0xe0, 0xca, 0xe1, 0xa5, 0xe0, 0xca, 0xe1, 0xa5, 0xe0, 0xca, - 0xe1, 0xa5, 0xe1, 0xca, 0xe1, 0xa5, 0xe1, 0xca, 0xe1, 0xa5, 0xe1, 0xcb, - 0xe4, 0xa5, 0xe1, 0xcb, 0xe4, 0xa5, 0xe2, 0xcb, 0xe4, 0xa5, 0xe2, 0xcb, - 0xe4, 0xa5, 0xe2, 0xcb, 0xe4, 0xa5, 0xe2, 0xcb, 0xe4, 0xa5, 0xe3, 0xcb, - 0xe4, 0xa5, 0xe3, 0xcb, 0xe4, 0xa5, 0xe3, 0xcb, 0xe4, 0xa5, 0xe3, 0xcb, - 0xe4, 0xa5, 0xe4, 0xcb, 0xe4, 0xa5, 0xe4, 0xcb, 0xe4, 0xa5, 0xe4, 0xd3, - 0xea, 0xa5, 0xe4, 0xd2, 0xea, 0xa5, 0xe5, 0xd3, 0xea, 0xa5, 0xe5, 0xd2, - 0xea, 0xa5, 0xe5, 0xd3, 0xea, 0xa5, 0xe5, 0xd2, 0xea, 0xa5, 0xe6, 0xd3, - 0xea, 0xa5, 0xe6, 0xd2, 0xea, 0xa5, 0xe6, 0xd3, 0xea, 0xa5, 0xe6, 0xd2, - 0xea, 0xa5, 0xe7, 0xd3, 0xea, 0xa5, 0xe7, 0xd2, 0xea, 0xa5, 0xe7, 0xd3, - 0xea, 0xa5, 0xe7, 0xd2, 0xea, 0xa5, 0xe8, 0xd3, 0xea, 0xa5, 0xe8, 0xd2, - 0xea, 0xa5, 0xe8, 0xd3, 0xea, 0xa5, 0xe8, 0xd2, 0xea, 0xa5, 0xe9, 0xd3, - 0xea, 0xa5, 0xe9, 0xd2, 0xea, 0xa5, 0xe9, 0xd3, 0xea, 0xa5, 0xe9, 0xd2, - 0xea, 0xa5, 0xea, 0xd2, 0xeb, 0xa5, 0xea, 0xd2, 0xea, 0xa5, 0xea, 0xd2, - 0xeb, 0xa5, 0xea, 0xd2, 0xea, 0xa5, 0xea, 0xd2, 0xeb, 0xa5, 0xea, 0xd2, - 0xeb, 0xa5, 0xea, 0xd2, 0xeb, 0xa5, 0xea, 0xd2, 0xeb, 0xa3, 0xea, 0xd2, - 0xec, 0xa5, 0xed, 0xd2, 0xec, 0xa5, 0xed, 0xd2, 0xec, 0xa5, 0xed, 0xd2, - 0xec, 0xa5, 0xed, 0xd2, 0xec, 0xa5, 0xed, 0xd2, 0xed, 0xa5, 0xed, 0xd2, - 0xed, 0xa5, 0xed, 0xd2, 0xed, 0xa5, 0xed, 0xd2, 0xed, 0xa5, 0xee, 0xd2, - 0xed, 0xa5, 0xee, 0xd2, 0xed, 0xa5, 0xee, 0xd2, 0xed, 0xa5, 0xee, 0xd2, - 0xed, 0xa5, 0xef, 0xd2, 0xed, 0xa5, 0xef, 0xd2, 0xed, 0xa5, 0xef, 0xd2, - 0xed, 0xa5, 0xef, 0xd2, 0xed, 0xa5, 0xf0, 0xd2, 0xed, 0xa5, 0xf0, 0xd2, - 0xed, 0xa5, 0xf0, 0xd2, 0xed, 0xa5, 0xf0, 0xd2, 0xed, 0xa5, 0xf1, 0xd2, - 0xed, 0xa5, 0xf1, 0xd2, 0xed, 0xa5, 0xf1, 0xd2, 0xed, 0xa5, 0xf1, 0xd2, - 0xed, 0xa5, 0xf2, 0xd2, 0xed, 0xa5, 0xf2, 0xd2, 0xed, 0xa5, 0xf2, 0xd2, - 0xed, 0xa5, 0xf2, 0xd2, 0xed, 0xa5, 0xf2, 0xd2, 0xed, 0xa5, 0xf3, 0xd2, - 0xed, 0xa5, 0xf3, 0xd2, 0xed, 0xa5, 0xf3, 0xcf, 0xed, 0xa5, 0xf3, 0xd2, - 0xed, 0xa5, 0xf4, 0xcf, 0xed, 0xa5, 0xf4, 0xd2, 0xed, 0xa5, 0xf4, 0xcf, - 0xed, 0xa5, 0xf4, 0xd2, 0xed, 0xa5, 0xf5, 0xcf, 0xed, 0xa5, 0xf5, 0xd2, - 0xed, 0xa5, 0xf5, 0xcf, 0xed, 0xa5, 0xf5, 0xd2, 0xed, 0xa5, 0xf5, 0xcf, - 0xed, 0xa5, 0xf6, 0xd2, 0xed, 0xa5, 0xf6, 0xcf, 0xed, 0xa5, 0xf6, 0xc7, - 0xf6, 0xa5, 0xf6, 0xc7, 0xf6, 0xa5, 0xf7, 0xc7, 0xf7, 0xa5, 0xf7, 0xc7, - 0xf7, 0xa5, 0xf7, 0xc7, 0xf7, 0xa5, 0xf7, 0xc7, 0xf7, 0xa5, 0xf8, 0xc7, - 0xf7, 0xa5, 0xf8, 0xc7, 0xf7, 0xa5, 0xf8, 0xc7, 0xf7, 0xa5, 0xf8, 0xc7, - 0xf7, 0xa5, 0xf8, 0xc7, 0xf7, 0xa5, 0xf9, 0xc7, 0xf7, 0xa5, 0xf9, 0xc7, - 0xf7, 0xa5, 0xf9, 0xc7, 0xf7, 0xa5, 0xf9, 0xc7, 0xf7, 0xa5, 0xfa, 0xc7, - 0xf7, 0xa5, 0xfa, 0xc7, 0xf7, 0xa5, 0xfa, 0xc7, 0xf7, 0xa5, 0xfa, 0xc7, - 0xf7, 0xa5, 0xfa, 0xc7, 0xf7, 0xa5, 0xfb, 0xc7, 0xf7, 0xa5, 0xfb, 0xc7, - 0xf7, 0xa5, 0xfb, 0xc7, 0xf7, 0xa5, 0xfb, 0xc7, 0xf7, 0xa5, 0xfc, 0xc7, - 0xf7, 0xa5, 0xfc, 0xc7, 0xf7, 0xa5, 0xfc, 0xc7, 0xf7, 0xa5, 0xfc, 0xc7, - 0xf7, 0xa5, 0xfc, 0xc7, 0xf7, 0xa5, 0xfd, 0xc7, 0xf7, 0xa5, 0xfd, 0xc7, - 0xf7, 0xa5, 0xfd, 0xc7, 0xf7, 0xa5, 0xfd, 0xc7, 0xf7, 0xa5, 0xfe, 0xc7, - 0xf7, 0xa5, 0xfe, 0xc7, 0xf7, 0xa5, 0xfe, 0xc7, 0xf7, 0xa5, 0xfe, 0xc7, - 0xf7, 0xa5, 0xfe, 0xc7, 0xf7, 0xa5, 0xff, 0xc7, 0xf7, 0xa5, 0xff, 0xc7, - 0xf7, 0xa5, 0x03, 0xd8, 0x8b, 0xa5, 0x0a, 0xd8, 0x8b, 0xa5, 0x0f, 0xd8, - 0x8b, 0xa5, 0x14, 0xda, 0x8b, 0xa5, 0x17, 0xd8, 0x8b, 0xa5, 0x1b, 0xda, - 0x8b, 0xa5, 0x1e, 0xd8, 0x8b, 0xa5, 0x20, 0xda, 0x8b, 0xa5, 0x23, 0xd8, - 0x8b, 0xa5, 0x25, 0xda, 0x8b, 0xa5, 0x27, 0xd8, 0x8b, 0xa5, 0x29, 0xda, - 0x8b, 0xa5, 0x2b, 0xd8, 0x8b, 0xa5, 0x2d, 0xd6, 0x8c, 0xa5, 0x2f, 0xd8, - 0x8b, 0xa5, 0x31, 0xd6, 0x8c, 0xa5, 0x32, 0xd8, 0x8b, 0xa5, 0x34, 0xd6, - 0x8c, 0xa5, 0x35, 0xd8, 0x8b, 0xa5, 0x37, 0xd6, 0x8c, 0xa5, 0x38, 0xd8, - 0x8b, 0xa5, 0x3a, 0xd6, 0x8c, 0xa5, 0x3b, 0xd8, 0x8b, 0xa5, 0x3c, 0xd6, - 0x8c, 0xa5, 0x3e, 0xd8, 0x8b, 0xa5, 0x3f, 0xd6, 0x8c, 0xa5, 0x40, 0xd8, - 0x8b, 0xa5, 0x42, 0xd6, 0x8c, 0xa5, 0x43, 0xd8, 0x8b, 0xa5, 0x44, 0xd6, - 0x8c, 0xa5, 0x45, 0xd8, 0x8b, 0xa5, 0x46, 0xd6, 0x8c, 0xa5, 0x47, 0xd8, - 0x8b, 0xa5, 0x48, 0xd6, 0x8c, 0xa5, 0x49, 0xd8, 0x8b, 0xa5, 0x4a, 0xd6, - 0x8c, 0xa5, 0x4b, 0xd8, 0x8b, 0xa5, 0x4c, 0xd6, 0x8c, 0xa5, 0x4d, 0xd8, - 0x8b, 0xa5, 0x4e, 0xd6, 0x8c, 0xa5, 0x4f, 0xd8, 0x8b, 0xa5, 0x50, 0xd6, - 0x8c, 0xa5, 0x51, 0xd4, 0x8c, 0xa5, 0x52, 0xd6, 0x8c, 0xa5, 0x53, 0xd4, - 0x8c, 0xa5, 0x54, 0xd6, 0x8c, 0xa5, 0x55, 0xd4, 0x8c, 0xa5, 0x56, 0xd6, - 0x8c, 0xa5, 0x57, 0xd4, 0x8c, 0xa5, 0x58, 0xd6, 0x8c, 0xa5, 0x58, 0xd4, - 0x8c, 0xa5, 0x59, 0xd6, 0x8c, 0xa5, 0x5a, 0xd4, 0x8c, 0xa5, 0x5b, 0xd6, - 0x8c, 0xa5, 0x5c, 0xd4, 0x8c, 0xa5, 0x5d, 0xd6, 0x8c, 0xa5, 0x5d, 0xd4, - 0x8c, 0xa5, 0x5e, 0xd6, 0x8c, 0xa5, 0x5f, 0xd4, 0x8c, 0xa5, 0x60, 0xd6, - 0x8c, 0xa5, 0x60, 0xd4, 0x8c, 0xa5, 0x61, 0xd6, 0x8c, 0xa5, 0x62, 0xd4, - 0x8c, 0xa5, 0x63, 0xd6, 0x8c, 0xa5, 0x63, 0xd4, 0x8c, 0xa5, 0x64, 0xd6, - 0x8c, 0xa5, 0x65, 0xd4, 0x8c, 0xa5, 0x66, 0xd6, 0x8c, 0xa5, 0x66, 0xd4, - 0x8c, 0xa5, 0x67, 0xd6, 0x8c, 0xa5, 0x68, 0xd4, 0x8c, 0xa5, 0x68, 0xd6, - 0x8c, 0xa5, 0x69, 0xd4, 0x8c, 0xa5, 0x6a, 0xd6, 0x8c, 0xa5, 0x6a, 0xd4, - 0x8c, 0xa5, 0x6b, 0xd6, 0x8c, 0xa5, 0x6c, 0xd4, 0x8c, 0xa5, 0x6c, 0xd6, - 0x8c, 0xa5, 0x6d, 0xd4, 0x8c, 0xa5, 0x6e, 0xd6, 0x8c, 0xa5, 0x6e, 0xd4, - 0x8c, 0xa5, 0x6f, 0xd6, 0x8c, 0xa5, 0x70, 0xd4, 0x8c, 0xa5, 0x70, 0xd6, - 0x8c, 0xa5, 0x71, 0xd4, 0x8c, 0xa5, 0x72, 0xd6, 0x8c, 0xa5, 0x72, 0xd4, - 0x8c, 0xa5, 0x73, 0xd2, 0x8d, 0xa5, 0x73, 0xd4, 0x8c, 0xa5, 0x74, 0xd2, - 0x8d, 0xa5, 0x75, 0xd4, 0x8c, 0xa5, 0x75, 0xd2, 0x8d, 0xa5, 0x76, 0xd4, - 0x8c, 0xa5, 0x76, 0xd2, 0x8d, 0xa5, 0x77, 0xd4, 0x8c, 0xa5, 0x78, 0xd2, - 0x8d, 0xa5, 0x78, 0xd4, 0x8c, 0xa5, 0x79, 0xd2, 0x8d, 0xa5, 0x79, 0xd4, - 0x8c, 0xa5, 0x7a, 0xd2, 0x8d, 0xa5, 0x7a, 0xd4, 0x8c, 0xa5, 0x7b, 0xd2, - 0x8d, 0xa5, 0x7c, 0xd4, 0x8c, 0xa5, 0x7c, 0xd2, 0x8d, 0xa5, 0x7d, 0xd4, - 0x8c, 0xa5, 0x7d, 0xd2, 0x8d, 0xa5, 0x7e, 0xd4, 0x8c, 0xa5, 0x7e, 0xd2, - 0x8d, 0xa5, 0x7f, 0xd4, 0x8c, 0xa5, 0x7f, 0xd2, 0x8d, 0xa5, 0x80, 0xd4, - 0x8c, 0xa5, 0x81, 0xd2, 0x8d, 0xa5, 0x81, 0xd4, 0x8c, 0xa5, 0x82, 0xd2, - 0x8d, 0xa5, 0x82, 0xd4, 0x8c, 0xa5, 0x83, 0xd2, 0x8d, 0xa5, 0x83, 0xd4, - 0x8c, 0xa5, 0x84, 0xd2, 0x8d, 0xa5, 0x84, 0xd4, 0x8c, 0xa5, 0x85, 0xd2, - 0x8d, 0xa5, 0x85, 0xd4, 0x8c, 0xa5, 0x86, 0xd2, 0x8d, 0xa5, 0x86, 0xd4, - 0x8c, 0xa5, 0x87, 0xd2, 0x8d, 0xa5, 0x87, 0xd4, 0x8c, 0xa5, 0x88, 0xd2, - 0x8d, 0xa5, 0x88, 0xd4, 0x8c, 0xa5, 0x89, 0xd2, 0x8d, 0xa5, 0x89, 0xd2, - 0x8d, 0xa5, 0x8a, 0xd2, 0x8d, 0xa5, 0x8a, 0xd2, 0x8d, 0xa5, 0x8b, 0xd2, - 0x8d, 0xa5, 0x8b, 0xd2, 0x8d, 0xa5, 0x8c, 0xd2, 0x8d, 0xa5, 0x8c, 0xd2, - 0x8d, 0xa5, 0x8d, 0xd2, 0x8d, 0xa4, 0x8c, 0xd2, 0x8d, 0xa5, 0x8d, 0xd2, - 0x8e, 0xa4, 0x8c, 0xd2, 0x8e, 0xa5, 0x8d, 0xd2, 0x8e, 0xa4, 0x8c, 0xd2, - 0x8f, 0xa5, 0x8d, 0xd2, 0x8f, 0xa4, 0x8c, 0xd2, 0x90, 0xa5, 0x8d, 0xd2, - 0x90, 0xa4, 0x8c, 0xd2, 0x91, 0xa5, 0x8d, 0xd2, 0x91, 0xa4, 0x8c, 0xd2, - 0x92, 0xa5, 0x8d, 0xd2, 0x92, 0xa4, 0x8c, 0xd2, 0x93, 0xa5, 0x8d, 0xd2, - 0x93, 0xa4, 0x8c, 0xd2, 0x94, 0xa5, 0x8d, 0xd2, 0x94, 0xa4, 0x8d, 0xd2, - 0x94, 0xa1, 0x8d, 0xd2, 0x95, 0xa4, 0x8d, 0xd2, 0x95, 0xa1, 0x8d, 0xd2, - 0x96, 0xa4, 0x8d, 0xd2, 0x96, 0xa1, 0x8d, 0xd2, 0x97, 0xa4, 0x8d, 0xd2, - 0x97, 0xa1, 0x8d, 0xd2, 0x98, 0xa4, 0x8d, 0xd2, 0x98, 0xa1, 0x8d, 0xd2, - 0x98, 0xa4, 0x8d, 0xd2, 0x99, 0xa1, 0x8d, 0xd2, 0x99, 0xa4, 0x8d, 0xd2, - 0x9a, 0xa1, 0x8d, 0xd2, 0x9a, 0xa4, 0x9c, 0xd2, 0x9a, 0x96, 0x9d, 0xd2, - 0x9b, 0x96, 0x9c, 0xd2, 0x9b, 0x96, 0x9d, 0xd2, 0x9c, 0x96, 0x9c, 0xd2, - 0x9c, 0x96, 0xa1, 0xd2, 0x9d, 0x97, 0xa1, 0xd2, 0x9d, 0x97, 0xa1, 0xd2, - 0x9d, 0x97, 0xa1, 0xd2, 0x9e, 0x97, 0xa1, 0xd2, 0x9e, 0x97, 0xa1, 0xd2, - 0x9f, 0x97, 0xa1, 0xd2, 0x9f, 0x97, 0xa1, 0xd2, 0x9f, 0x97, 0xa1, 0xd2, - 0xa0, 0x97, 0xa1, 0xd2, 0xa0, 0x97, 0xa1, 0xd2, 0xa1, 0x97, 0xa1, 0xd2, - 0xa1, 0x97, 0xa1, 0xd2, 0xa1, 0x97, 0xa2, 0xd2, 0xa2, 0x97, 0xa2, 0xd2, - 0xa2, 0x97, 0xa3, 0xd2, 0xa3, 0x97, 0xa3, 0xd2, 0xa3, 0x97, 0xa3, 0xd2, - 0xa3, 0x97, 0xa3, 0xd2, 0xa4, 0x97, 0xa3, 0xd2, 0xa4, 0x97, 0xa3, 0xd2, - 0xa5, 0x97, 0xa3, 0xd2, 0xa5, 0x97, 0xa3, 0xd2, 0xa5, 0x97, 0xa3, 0xd2, - 0xa6, 0x97, 0xa3, 0xd2, 0xa6, 0x97, 0xa3, 0xd2, 0xa6, 0x97, 0xa3, 0xd2, - 0xa7, 0x97, 0xa3, 0xd2, 0xa7, 0x97, 0xa3, 0xd2, 0xa8, 0x97, 0xa3, 0xd2, - 0xa8, 0x97, 0xa3, 0xd2, 0xa8, 0x97, 0xa3, 0xd2, 0xa9, 0x97, 0xa3, 0xd2, - 0xa9, 0x97, 0xa3, 0xd2, 0xaa, 0x97, 0xa3, 0xd2, 0xaa, 0x97, 0xa3, 0xd2, - 0xaa, 0x97, 0xa3, 0xd2, 0xab, 0x97, 0xa3, 0xd2, 0xab, 0x97, 0xa3, 0xd2, - 0xab, 0x97, 0xa3, 0xd2, 0xac, 0x97, 0xa3, 0xd2, 0xac, 0x97, 0xa3, 0xd2, - 0xac, 0x97, 0xa3, 0xd2, 0xad, 0x97, 0xa3, 0xd2, 0xad, 0x97, 0xa3, 0xd2, - 0xae, 0x97, 0xa3, 0xd2, 0xae, 0x97, 0xa3, 0xd2, 0xae, 0x97, 0xa3, 0xd2, - 0xaf, 0x97, 0xa3, 0xd2, 0xaf, 0x97, 0xa3, 0xd2, 0xaf, 0x97, 0xa3, 0xd2, - 0xb0, 0x97, 0xa3, 0xd2, 0xb0, 0x97, 0xa3, 0xd2, 0xb0, 0x97, 0xa3, 0xd2, - 0xb1, 0x97, 0xa3, 0xd2, 0xb1, 0x97, 0xa3, 0xd2, 0xb2, 0x97, 0xa3, 0xd2, - 0xb2, 0x97, 0xa3, 0xd2, 0xb2, 0x97, 0xa3, 0xd2, 0xb3, 0x97, 0xa3, 0xd2, - 0xb3, 0x97, 0xa3, 0xd2, 0xb3, 0x97, 0xa3, 0xd2, 0xb4, 0x97, 0xa3, 0xd2, - 0xb4, 0x97, 0xa3, 0xd2, 0xb4, 0x97, 0xa3, 0xd2, 0xb5, 0x97, 0xa3, 0xd2, - 0xb5, 0x97, 0xa3, 0xd2, 0xb5, 0x97, 0xa3, 0xd2, 0xb6, 0x97, 0xa3, 0xd2, - 0xb6, 0x97, 0xa3, 0xd2, 0xb6, 0x97, 0xa3, 0xd2, 0xb7, 0x97, 0xa3, 0xd2, - 0xb7, 0x97, 0xa3, 0xd2, 0xb7, 0x97, 0xa3, 0xd2, 0xb8, 0x97, 0xa3, 0xd2, - 0xb8, 0x97, 0xa3, 0xd2, 0xb8, 0x97, 0xa3, 0xd2, 0xb9, 0x97, 0xa3, 0xd2, - 0xb9, 0x97, 0xa3, 0xd2, 0xb9, 0x97, 0xa3, 0xd2, 0xba, 0x97, 0xa3, 0xd2, - 0xba, 0x97, 0xa3, 0xd2, 0xba, 0x97, 0xa3, 0xd2, 0xbb, 0x97, 0xa3, 0xd2, - 0xbb, 0x97, 0xa3, 0xd2, 0xbb, 0x97, 0xd2, 0xd2, 0xbc, 0xaa, 0xd1, 0xd2, - 0xbc, 0xad, 0xd2, 0xd2, 0xbc, 0xaa, 0xd1, 0xd2, 0xbd, 0xad, 0xd2, 0xd2, - 0xbd, 0xaa, 0xd1, 0xd2, 0xbd, 0xad, 0xd2, 0xd2, 0xbe, 0xaa, 0xd1, 0xd2, - 0xbe, 0xad, 0xd2, 0xd2, 0xbe, 0xaa, 0xd1, 0xd2, 0xbf, 0xad, 0xd2, 0xd2, - 0xbf, 0xaa, 0xd1, 0xd2, 0xbf, 0xad, 0xd2, 0xd2, 0xc0, 0xaa, 0xd2, 0xd2, - 0xc0, 0xa7, 0xd2, 0xd2, 0xc0, 0xaa, 0xd2, 0xd2, 0xc1, 0xa7, 0xd2, 0xd2, - 0xc1, 0xaa, 0xd2, 0xd2, 0xc1, 0xa7, 0xd2, 0xd2, 0xc1, 0xaa, 0xd2, 0xd2, - 0xc2, 0xa7, 0xd2, 0xd2, 0xc2, 0xaa, 0xd2, 0xd2, 0xc2, 0xa7, 0xd2, 0xd2, - 0xc3, 0xaa, 0xd2, 0xd2, 0xc3, 0xa7, 0xd2, 0xd2, 0xc3, 0xaa, 0xd2, 0xd2, - 0xc4, 0xa7, 0xd2, 0xd2, 0xc4, 0xaa, 0xd2, 0xd2, 0xc4, 0xa7, 0xd2, 0xd2, - 0xc5, 0xaa, 0xd2, 0xd2, 0xc5, 0xa7, 0xd2, 0xd2, 0xc5, 0xaa, 0xd2, 0xd2, - 0xc6, 0xa7, 0xd2, 0xd2, 0xc6, 0xaa, 0xd2, 0xd2, 0xc6, 0xa7, 0xd2, 0xd2, - 0xc6, 0xaa, 0xd2, 0xd2, 0xc7, 0xa7, 0xd2, 0xd2, 0xc7, 0xaa, 0xd2, 0xd2, - 0xc7, 0xa7, 0xd2, 0xd2, 0xc8, 0xaa, 0xd2, 0xd2, 0xc8, 0xa7, 0xd2, 0xd2, - 0xc8, 0xaa, 0xd2, 0xd2, 0xc9, 0xa7, 0xd2, 0xd2, 0xc9, 0xaa, 0xd2, 0xd2, - 0xc9, 0xa7, 0xd2, 0xd2, 0xc9, 0xaa, 0xd2, 0xd2, 0xca, 0xa7, 0xd2, 0xd2, - 0xca, 0xaa, 0xd2, 0xd2, 0xca, 0xa7, 0xd2, 0xd2, 0xcb, 0xaa, 0xd2, 0xd2, - 0xcb, 0xa7, 0xd2, 0xd2, 0xcb, 0xa5, 0xd2, 0xd2, 0xcc, 0xa7, 0xd2, 0xd2, - 0xcc, 0xa5, 0xd2, 0xd2, 0xcc, 0xa7, 0xd2, 0xd2, 0xcc, 0xa5, 0xd2, 0xd2, - 0xcd, 0xa7, 0xd2, 0xd2, 0xcd, 0xa5, 0xd2, 0xd2, 0xcd, 0xa7, 0xd2, 0xd2, - 0xce, 0xa5, 0xd2, 0xd2, 0xce, 0xa7, 0xd2, 0xd2, 0xce, 0xa5, 0xd2, 0xd2, - 0xce, 0xa7, 0xd2, 0xd2, 0xcf, 0xa5, 0xd2, 0xd2, 0xcf, 0xa7, 0xd2, 0xd2, - 0xcf, 0xa5, 0xd2, 0xd2, 0xd0, 0xa7, 0xd2, 0xd2, 0xd0, 0xa5, 0xd2, 0xd2, - 0xd0, 0xa7, 0xd2, 0xd2, 0xd0, 0xa5, 0xd2, 0xd2, 0xd1, 0xa7, 0xd2, 0xd2, - 0xd1, 0xa5, 0xd2, 0xd2, 0xd1, 0xa5, 0xd2, 0xd2, 0xd2, 0xa5, 0xd2, 0xd2, - 0xd2, 0xa5, 0xd2, 0xd2, 0xd2, 0xa5, 0xd2, 0xd2, 0xd2, 0xa5, 0xd3, 0xd2, - 0xd2, 0xa5, 0xd3, 0xd2, 0xd2, 0xa5, 0xd3, 0xd1, 0xd2, 0xa5, 0xd4, 0xd2, - 0xd2, 0xa5, 0xd4, 0xd1, 0xd2, 0xa5, 0xd4, 0xd2, 0xd2, 0xa5, 0xd4, 0xd1, - 0xd2, 0xa5, 0xd5, 0xd2, 0xd2, 0xa5, 0xd5, 0xd1, 0xd2, 0xa5, 0xd5, 0xd2, - 0xd2, 0xa5, 0xd6, 0xd1, 0xd2, 0xa5, 0xd6, 0xd2, 0xd2, 0xa5, 0xd6, 0xd1, - 0xd2, 0xa5, 0xd6, 0xd2, 0xd2, 0xa5, 0xd7, 0xd1, 0xd2, 0xa5, 0xd7, 0xd0, - 0xd2, 0xa5, 0xd7, 0xd1, 0xd2, 0xa5, 0xd7, 0xd0, 0xd2, 0xa5, 0xd8, 0xd1, - 0xd2, 0xa5, 0xd8, 0xd0, 0xd2, 0xa5, 0xd8, 0xd1, 0xd2, 0xa5, 0xd9, 0xd0, - 0xd2, 0xa5, 0xd9, 0xd1, 0xd2, 0xa5, 0xd9, 0xd0, 0xd2, 0xa5, 0xd9, 0xd1, - 0xd2, 0xa5, 0xda, 0xd0, 0xd2, 0xa5, 0xda, 0xd1, 0xd2, 0xa5, 0xda, 0xd0, - 0xd2, 0xa5, 0xda, 0xd1, 0xd2, 0xa5, 0xdb, 0xd0, 0xd2, 0xa5, 0xdb, 0xd1, - 0xd2, 0xa5, 0xdb, 0xc9, 0xdc, 0xa5, 0xdb, 0xc9, 0xdd, 0xa5, 0xdc, 0xc9, - 0xdc, 0xa5, 0xdc, 0xc9, 0xdd, 0xa5, 0xdc, 0xc9, 0xdc, 0xa5, 0xdd, 0xca, - 0xdf, 0xa5, 0xdd, 0xca, 0xdf, 0xa5, 0xdd, 0xca, 0xdf, 0xa5, 0xdd, 0xca, - 0xdf, 0xa5, 0xde, 0xca, 0xdf, 0xa5, 0xde, 0xca, 0xdf, 0xa5, 0xde, 0xca, - 0xdf, 0xa5, 0xde, 0xca, 0xdf, 0xa5, 0xdf, 0xca, 0xdf, 0xa5, 0xdf, 0xca, - 0xdf, 0xa5, 0xdf, 0xca, 0xdf, 0xa5, 0xdf, 0xca, 0xe2, 0xa5, 0xe0, 0xca, - 0xe2, 0xa5, 0xe0, 0xca, 0xe2, 0xa5, 0xe0, 0xca, 0xe2, 0xa5, 0xe1, 0xca, - 0xe2, 0xa5, 0xe1, 0xca, 0xe2, 0xa5, 0xe1, 0xca, 0xe2, 0xa5, 0xe1, 0xca, - 0xe2, 0xa5, 0xe2, 0xca, 0xe2, 0xa5, 0xe2, 0xca, 0xe2, 0xa5, 0xe2, 0xca, - 0xe2, 0xa5, 0xe2, 0xcb, 0xe5, 0xa5, 0xe3, 0xcb, 0xe5, 0xa5, 0xe3, 0xcb, - 0xe5, 0xa5, 0xe3, 0xcb, 0xe5, 0xa5, 0xe3, 0xcb, 0xe5, 0xa5, 0xe4, 0xd3, - 0xea, 0xa5, 0xe4, 0xd5, 0xea, 0xa5, 0xe4, 0xd3, 0xea, 0xa5, 0xe4, 0xd5, - 0xea, 0xa5, 0xe5, 0xd3, 0xea, 0xa5, 0xe5, 0xd5, 0xea, 0xa5, 0xe5, 0xd3, - 0xea, 0xa5, 0xe5, 0xd5, 0xea, 0xa5, 0xe6, 0xd3, 0xea, 0xa5, 0xe6, 0xd5, - 0xea, 0xa5, 0xe6, 0xd3, 0xea, 0xa5, 0xe6, 0xd2, 0xea, 0xa5, 0xe7, 0xd3, - 0xea, 0xa5, 0xe7, 0xd2, 0xea, 0xa5, 0xe7, 0xd3, 0xea, 0xa5, 0xe7, 0xd2, - 0xea, 0xa5, 0xe8, 0xd3, 0xea, 0xa5, 0xe8, 0xd2, 0xea, 0xa5, 0xe8, 0xd3, - 0xea, 0xa5, 0xe8, 0xd2, 0xea, 0xa5, 0xe9, 0xd3, 0xea, 0xa5, 0xe9, 0xd2, - 0xea, 0xa5, 0xe9, 0xd3, 0xea, 0xa5, 0xe9, 0xd2, 0xea, 0xa5, 0xea, 0xd3, - 0xea, 0xa5, 0xea, 0xd2, 0xea, 0xa5, 0xea, 0xd2, 0xeb, 0xa5, 0xea, 0xd2, - 0xea, 0xa5, 0xea, 0xd2, 0xeb, 0xa5, 0xea, 0xd2, 0xeb, 0xa5, 0xea, 0xd2, - 0xeb, 0xa5, 0xea, 0xd2, 0xeb, 0xa3, 0xea, 0xd2, 0xec, 0xa5, 0xed, 0xd2, - 0xec, 0xa5, 0xed, 0xd2, 0xec, 0xa5, 0xed, 0xd2, 0xec, 0xa5, 0xed, 0xd2, - 0xec, 0xa5, 0xed, 0xd2, 0xed, 0xa5, 0xed, 0xd2, 0xed, 0xa5, 0xed, 0xd2, - 0xed, 0xa5, 0xed, 0xd2, 0xed, 0xa5, 0xee, 0xd2, 0xed, 0xa5, 0xee, 0xd2, - 0xed, 0xa5, 0xee, 0xd1, 0xed, 0xa5, 0xee, 0xd2, 0xed, 0xa5, 0xef, 0xd1, - 0xed, 0xa5, 0xef, 0xd2, 0xed, 0xa5, 0xef, 0xd1, 0xed, 0xa5, 0xef, 0xd2, - 0xed, 0xa5, 0xf0, 0xd1, 0xed, 0xa5, 0xf0, 0xd2, 0xed, 0xa5, 0xf0, 0xd1, - 0xed, 0xa5, 0xf0, 0xd2, 0xed, 0xa5, 0xf1, 0xd1, 0xed, 0xa5, 0xf1, 0xd2, - 0xed, 0xa5, 0xf1, 0xd1, 0xed, 0xa5, 0xf1, 0xd2, 0xed, 0xa5, 0xf2, 0xd1, - 0xed, 0xa5, 0xf2, 0xd2, 0xed, 0xa5, 0xf2, 0xd1, 0xed, 0xa5, 0xf2, 0xd2, - 0xed, 0xa5, 0xf2, 0xd1, 0xed, 0xa5, 0xf3, 0xd2, 0xed, 0xa5, 0xf3, 0xd1, - 0xed, 0xa5, 0xf3, 0xd0, 0xed, 0xa5, 0xf3, 0xd1, 0xed, 0xa5, 0xf4, 0xd0, - 0xed, 0xa5, 0xf4, 0xd1, 0xed, 0xa5, 0xf4, 0xd0, 0xed, 0xa5, 0xf4, 0xd1, - 0xed, 0xa5, 0xf5, 0xd0, 0xed, 0xa5, 0xf5, 0xd1, 0xed, 0xa5, 0xf5, 0xd0, - 0xed, 0xa5, 0xf5, 0xd1, 0xed, 0xa5, 0xf5, 0xd0, 0xed, 0xa5, 0xf6, 0xd1, - 0xed, 0xa5, 0xf6, 0xd0, 0xed, 0xa5, 0xf6, 0xd1, 0xed, 0xa5, 0xf6, 0xd0, - 0xed, 0xa5, 0xf7, 0xc7, 0xf7, 0xa5, 0xf7, 0xc7, 0xf7, 0xa5, 0xf7, 0xc7, - 0xf7, 0xa5, 0xf7, 0xc7, 0xf7, 0xa5, 0xf8, 0xc7, 0xf7, 0xa5, 0xf8, 0xc7, - 0xf7, 0xa5, 0xf8, 0xc7, 0xf7, 0xa5, 0xf8, 0xc7, 0xf7, 0xa5, 0xf8, 0xc7, - 0xf7, 0xa5, 0xf9, 0xc7, 0xf7, 0xa5, 0xf9, 0xc7, 0xf7, 0xa5, 0xf9, 0xc7, - 0xf7, 0xa5, 0xf9, 0xc7, 0xf7, 0xa5, 0xfa, 0xc7, 0xf7, 0xa5, 0xfa, 0xc7, - 0xf7, 0xa5, 0xfa, 0xc7, 0xf7, 0xa5, 0xfa, 0xc7, 0xf7, 0xa5, 0xfa, 0xc7, - 0xf7, 0xa5, 0xfb, 0xc7, 0xf7, 0xa5, 0xfb, 0xc7, 0xf7, 0xa5, 0xfb, 0xc7, - 0xf7, 0xa5, 0xfb, 0xc7, 0xf7, 0xa5, 0xfc, 0xc7, 0xf7, 0xa5, 0xfc, 0xc7, - 0xf7, 0xa5, 0xfc, 0xc7, 0xf7, 0xa5, 0xfc, 0xc7, 0xf7, 0xa5, 0xfc, 0xc7, - 0xf7, 0xa5, 0xfd, 0xc7, 0xf7, 0xa5, 0xfd, 0xc7, 0xf7, 0xa5, 0xfd, 0xc7, - 0xf7, 0xa5, 0xfd, 0xc7, 0xf7, 0xa5, 0xfe, 0xc7, 0xf7, 0xa5, 0xfe, 0xc7, - 0xf7, 0xa5, 0xfe, 0xc7, 0xf7, 0xa5, 0xfe, 0xc7, 0xf7, 0xa5, 0xfe, 0xc7, - 0xf7, 0xa5, 0xff, 0xc7, 0xf7, 0xa5, 0xff, 0xc7, 0xf7, 0xa5, 0x03, 0xd8, - 0x8b, 0xa6, 0x0a, 0xd8, 0x8b, 0xa6, 0x0f, 0xd8, 0x8b, 0xa6, 0x14, 0xd6, - 0x8c, 0xa6, 0x17, 0xd8, 0x8b, 0xa6, 0x1b, 0xd6, 0x8c, 0xa6, 0x1e, 0xd8, - 0x8b, 0xa6, 0x20, 0xd6, 0x8c, 0xa6, 0x23, 0xd8, 0x8b, 0xa6, 0x25, 0xd6, - 0x8c, 0xa6, 0x27, 0xd8, 0x8b, 0xa6, 0x29, 0xd6, 0x8c, 0xa6, 0x2b, 0xd8, - 0x8b, 0xa6, 0x2d, 0xd6, 0x8c, 0xa6, 0x2f, 0xd8, 0x8b, 0xa6, 0x31, 0xd6, - 0x8c, 0xa6, 0x32, 0xd8, 0x8b, 0xa6, 0x34, 0xd6, 0x8c, 0xa6, 0x35, 0xd8, - 0x8b, 0xa6, 0x37, 0xd6, 0x8c, 0xa6, 0x38, 0xd8, 0x8b, 0xa6, 0x3a, 0xd6, - 0x8c, 0xa6, 0x3b, 0xd8, 0x8b, 0xa6, 0x3c, 0xd6, 0x8c, 0xa6, 0x3e, 0xd8, - 0x8b, 0xa6, 0x3f, 0xd6, 0x8c, 0xa6, 0x40, 0xd8, 0x8b, 0xa6, 0x42, 0xd6, - 0x8c, 0xa6, 0x43, 0xd8, 0x8b, 0xa6, 0x44, 0xd6, 0x8c, 0xa6, 0x45, 0xd8, - 0x8b, 0xa6, 0x46, 0xd6, 0x8c, 0xa6, 0x47, 0xd8, 0x8b, 0xa6, 0x48, 0xd6, - 0x8c, 0xa6, 0x49, 0xd8, 0x8b, 0xa6, 0x4a, 0xd6, 0x8c, 0xa6, 0x4b, 0xd8, - 0x8b, 0xa6, 0x4c, 0xd6, 0x8c, 0xa6, 0x4d, 0xd8, 0x8b, 0xa6, 0x4e, 0xd6, - 0x8c, 0xa6, 0x4f, 0xd8, 0x8b, 0xa6, 0x50, 0xd6, 0x8c, 0xa6, 0x51, 0xd4, - 0x8c, 0xa6, 0x52, 0xd6, 0x8c, 0xa6, 0x53, 0xd4, 0x8c, 0xa6, 0x54, 0xd6, - 0x8c, 0xa6, 0x55, 0xd4, 0x8c, 0xa6, 0x56, 0xd6, 0x8c, 0xa6, 0x57, 0xd4, - 0x8c, 0xa6, 0x58, 0xd6, 0x8c, 0xa6, 0x58, 0xd4, 0x8c, 0xa6, 0x59, 0xd6, - 0x8c, 0xa6, 0x5a, 0xd4, 0x8c, 0xa6, 0x5b, 0xd6, 0x8c, 0xa6, 0x5c, 0xd4, - 0x8c, 0xa6, 0x5d, 0xd6, 0x8c, 0xa6, 0x5d, 0xd4, 0x8c, 0xa6, 0x5e, 0xd6, - 0x8c, 0xa6, 0x5f, 0xd4, 0x8c, 0xa6, 0x60, 0xd6, 0x8c, 0xa6, 0x60, 0xd4, - 0x8c, 0xa6, 0x61, 0xd6, 0x8c, 0xa6, 0x62, 0xd4, 0x8c, 0xa6, 0x63, 0xd6, - 0x8c, 0xa6, 0x63, 0xd4, 0x8c, 0xa6, 0x64, 0xd6, 0x8c, 0xa6, 0x65, 0xd4, - 0x8c, 0xa6, 0x66, 0xd6, 0x8c, 0xa6, 0x66, 0xd4, 0x8c, 0xa6, 0x67, 0xd6, - 0x8c, 0xa6, 0x68, 0xd4, 0x8c, 0xa6, 0x68, 0xd6, 0x8c, 0xa6, 0x69, 0xd4, - 0x8c, 0xa6, 0x6a, 0xd6, 0x8c, 0xa6, 0x6a, 0xd4, 0x8c, 0xa6, 0x6b, 0xd6, - 0x8c, 0xa6, 0x6c, 0xd4, 0x8c, 0xa6, 0x6c, 0xd6, 0x8c, 0xa6, 0x6d, 0xd4, - 0x8c, 0xa6, 0x6e, 0xd6, 0x8c, 0xa6, 0x6e, 0xd4, 0x8c, 0xa6, 0x6f, 0xd6, - 0x8c, 0xa6, 0x70, 0xd4, 0x8c, 0xa6, 0x70, 0xd6, 0x8c, 0xa6, 0x71, 0xd4, - 0x8c, 0xa6, 0x72, 0xd6, 0x8c, 0xa6, 0x72, 0xd4, 0x8c, 0xa6, 0x73, 0xd6, - 0x8c, 0xa6, 0x73, 0xd4, 0x8c, 0xa6, 0x74, 0xd6, 0x8c, 0xa6, 0x75, 0xd4, - 0x8c, 0xa6, 0x75, 0xd6, 0x8c, 0xa6, 0x76, 0xd4, 0x8c, 0xa6, 0x76, 0xd6, - 0x8c, 0xa6, 0x77, 0xd4, 0x8c, 0xa6, 0x78, 0xd6, 0x8c, 0xa6, 0x78, 0xd4, - 0x8c, 0xa6, 0x79, 0xd6, 0x8c, 0xa6, 0x79, 0xd4, 0x8c, 0xa6, 0x7a, 0xd3, - 0x8d, 0xa6, 0x7a, 0xd4, 0x8c, 0xa6, 0x7b, 0xd3, 0x8d, 0xa6, 0x7c, 0xd4, - 0x8c, 0xa6, 0x7c, 0xd3, 0x8d, 0xa6, 0x7d, 0xd4, 0x8c, 0xa6, 0x7d, 0xd3, - 0x8d, 0xa6, 0x7e, 0xd4, 0x8c, 0xa6, 0x7e, 0xd3, 0x8d, 0xa6, 0x7f, 0xd4, - 0x8c, 0xa6, 0x7f, 0xd3, 0x8d, 0xa6, 0x80, 0xd4, 0x8c, 0xa6, 0x81, 0xd3, - 0x8d, 0xa6, 0x81, 0xd4, 0x8c, 0xa6, 0x82, 0xd3, 0x8d, 0xa6, 0x82, 0xd4, - 0x8c, 0xa6, 0x83, 0xd3, 0x8d, 0xa6, 0x83, 0xd4, 0x8c, 0xa6, 0x84, 0xd3, - 0x8d, 0xa6, 0x84, 0xd4, 0x8c, 0xa6, 0x85, 0xd3, 0x8d, 0xa6, 0x85, 0xd4, - 0x8c, 0xa6, 0x86, 0xd3, 0x8d, 0xa6, 0x86, 0xd4, 0x8c, 0xa6, 0x87, 0xd3, - 0x8d, 0xa6, 0x87, 0xd4, 0x8c, 0xa6, 0x88, 0xd3, 0x8d, 0xa6, 0x88, 0xd4, - 0x8c, 0xa6, 0x89, 0xd3, 0x8d, 0xa6, 0x89, 0xd3, 0x8d, 0xa6, 0x8a, 0xd3, - 0x8d, 0xa6, 0x8a, 0xd3, 0x8d, 0xa6, 0x8b, 0xd3, 0x8d, 0xa6, 0x8b, 0xd3, - 0x8d, 0xa6, 0x8c, 0xd3, 0x8d, 0xa6, 0x8c, 0xd3, 0x8d, 0xa6, 0x8d, 0xd3, - 0x8d, 0xa5, 0x8c, 0xd3, 0x8d, 0xa6, 0x8d, 0xd3, 0x8e, 0xa5, 0x8c, 0xd3, - 0x8e, 0xa6, 0x8d, 0xd3, 0x8e, 0xa5, 0x8c, 0xd3, 0x8f, 0xa6, 0x8d, 0xd3, - 0x8f, 0xa5, 0x8c, 0xd3, 0x90, 0xa6, 0x8d, 0xd3, 0x90, 0xa5, 0x8c, 0xd3, - 0x91, 0xa6, 0x8d, 0xd3, 0x91, 0xa5, 0x8c, 0xd3, 0x92, 0xa6, 0x8d, 0xd3, - 0x92, 0xa5, 0x8c, 0xd3, 0x93, 0xa6, 0x8d, 0xd3, 0x93, 0xa5, 0x8c, 0xd3, - 0x94, 0xa6, 0x8d, 0xd3, 0x94, 0xa5, 0x8c, 0xd3, 0x94, 0xa6, 0x8d, 0xd3, - 0x95, 0xa5, 0x8c, 0xd3, 0x95, 0xa6, 0x8d, 0xd3, 0x96, 0xa5, 0x8c, 0xd3, - 0x96, 0xa6, 0x8d, 0xd3, 0x97, 0xa5, 0x8c, 0xd3, 0x97, 0xa6, 0x8d, 0xd3, - 0x98, 0xa5, 0x8d, 0xd3, 0x98, 0xa1, 0x8d, 0xd3, 0x98, 0xa5, 0x8d, 0xd3, - 0x99, 0xa1, 0x8d, 0xd3, 0x99, 0xa5, 0x8d, 0xd3, 0x9a, 0xa1, 0x8d, 0xd3, - 0x9a, 0xa5, 0x8d, 0xd3, 0x9a, 0xa1, 0x9f, 0xd3, 0x9b, 0x97, 0x9f, 0xd3, - 0x9b, 0x97, 0x9f, 0xd3, 0x9c, 0x97, 0x9f, 0xd3, 0x9c, 0x97, 0x9f, 0xd3, - 0x9d, 0x97, 0x9f, 0xd3, 0x9d, 0x97, 0x9f, 0xd3, 0x9d, 0x97, 0x9f, 0xd3, - 0x9e, 0x97, 0x9f, 0xd3, 0x9e, 0x97, 0x9f, 0xd3, 0x9f, 0x97, 0xa3, 0xd3, - 0x9f, 0x98, 0x9f, 0xd3, 0x9f, 0x97, 0xa3, 0xd3, 0xa0, 0x98, 0xa0, 0xd3, - 0xa0, 0x97, 0xa3, 0xd3, 0xa1, 0x98, 0xa1, 0xd3, 0xa1, 0x97, 0xa3, 0xd3, - 0xa1, 0x98, 0xa2, 0xd3, 0xa2, 0x97, 0xa3, 0xd3, 0xa2, 0x98, 0xa3, 0xd3, - 0xa3, 0x97, 0xa3, 0xd3, 0xa3, 0x98, 0xa3, 0xd3, 0xa3, 0x97, 0xa3, 0xd3, - 0xa4, 0x98, 0xa3, 0xd3, 0xa4, 0x97, 0xa3, 0xd3, 0xa5, 0x98, 0xa3, 0xd3, - 0xa5, 0x97, 0xa3, 0xd3, 0xa5, 0x98, 0xa3, 0xd3, 0xa6, 0x97, 0xa3, 0xd3, - 0xa6, 0x98, 0xa3, 0xd3, 0xa6, 0x97, 0xa3, 0xd3, 0xa7, 0x98, 0xa3, 0xd3, - 0xa7, 0x97, 0xa3, 0xd3, 0xa8, 0x98, 0xa3, 0xd3, 0xa8, 0x97, 0xa3, 0xd3, - 0xa8, 0x98, 0xa3, 0xd3, 0xa9, 0x97, 0xa3, 0xd3, 0xa9, 0x98, 0xa3, 0xd3, - 0xaa, 0x97, 0xa3, 0xd3, 0xaa, 0x98, 0xa3, 0xd3, 0xaa, 0x97, 0xa3, 0xd3, - 0xab, 0x98, 0xa3, 0xd3, 0xab, 0x97, 0xa3, 0xd3, 0xab, 0x98, 0xa3, 0xd3, - 0xac, 0x97, 0xa3, 0xd3, 0xac, 0x98, 0xa3, 0xd3, 0xac, 0x97, 0xa3, 0xd3, - 0xad, 0x98, 0xa3, 0xd3, 0xad, 0x97, 0xa3, 0xd3, 0xae, 0x98, 0xa3, 0xd3, - 0xae, 0x97, 0xa3, 0xd3, 0xae, 0x98, 0xa3, 0xd3, 0xaf, 0x97, 0xa3, 0xd3, - 0xaf, 0x98, 0xa3, 0xd3, 0xaf, 0x97, 0xa3, 0xd3, 0xb0, 0x98, 0xa3, 0xd3, - 0xb0, 0x97, 0xa3, 0xd3, 0xb0, 0x98, 0xa3, 0xd3, 0xb1, 0x97, 0xa3, 0xd3, - 0xb1, 0x98, 0xa3, 0xd3, 0xb2, 0x97, 0xa3, 0xd3, 0xb2, 0x98, 0xa3, 0xd3, - 0xb2, 0x97, 0xa3, 0xd3, 0xb3, 0x98, 0xa3, 0xd3, 0xb3, 0x97, 0xa3, 0xd3, - 0xb3, 0x98, 0xa3, 0xd3, 0xb4, 0x97, 0xa3, 0xd3, 0xb4, 0x98, 0xa3, 0xd3, - 0xb4, 0x97, 0xa3, 0xd3, 0xb5, 0x98, 0xa3, 0xd3, 0xb5, 0x97, 0xa3, 0xd3, - 0xb5, 0x98, 0xa3, 0xd3, 0xb6, 0x97, 0xa3, 0xd3, 0xb6, 0x98, 0xa3, 0xd3, - 0xb6, 0x97, 0xa3, 0xd3, 0xb7, 0x98, 0xa3, 0xd3, 0xb7, 0x97, 0xa3, 0xd3, - 0xb7, 0x98, 0xa3, 0xd3, 0xb8, 0x97, 0xa3, 0xd3, 0xb8, 0x98, 0xa3, 0xd3, - 0xb8, 0x97, 0xa3, 0xd3, 0xb9, 0x98, 0xa3, 0xd3, 0xb9, 0x97, 0xa3, 0xd3, - 0xb9, 0x98, 0xa3, 0xd3, 0xba, 0x97, 0xa3, 0xd3, 0xba, 0x98, 0xa3, 0xd3, - 0xba, 0x97, 0xa3, 0xd3, 0xbb, 0x98, 0xa3, 0xd3, 0xbb, 0x97, 0xd1, 0xd3, - 0xbb, 0xad, 0xd2, 0xd3, 0xbc, 0xaa, 0xd1, 0xd3, 0xbc, 0xad, 0xd2, 0xd3, - 0xbc, 0xaa, 0xd1, 0xd3, 0xbd, 0xad, 0xd2, 0xd3, 0xbd, 0xaa, 0xd1, 0xd3, - 0xbd, 0xad, 0xd2, 0xd3, 0xbe, 0xaa, 0xd1, 0xd3, 0xbe, 0xad, 0xd2, 0xd3, - 0xbe, 0xaa, 0xd1, 0xd3, 0xbf, 0xad, 0xd2, 0xd3, 0xbf, 0xaa, 0xd1, 0xd3, - 0xbf, 0xad, 0xd2, 0xd3, 0xc0, 0xaa, 0xd1, 0xd3, 0xc0, 0xad, 0xd2, 0xd3, - 0xc0, 0xaa, 0xd1, 0xd3, 0xc1, 0xad, 0xd2, 0xd3, 0xc1, 0xaa, 0xd1, 0xd3, - 0xc1, 0xad, 0xd2, 0xd3, 0xc1, 0xaa, 0xd1, 0xd3, 0xc2, 0xad, 0xd2, 0xd3, - 0xc2, 0xaa, 0xd1, 0xd3, 0xc2, 0xad, 0xd2, 0xd3, 0xc3, 0xaa, 0xd1, 0xd3, - 0xc3, 0xad, 0xd2, 0xd3, 0xc3, 0xaa, 0xd1, 0xd3, 0xc4, 0xad, 0xd2, 0xd3, - 0xc4, 0xaa, 0xd1, 0xd3, 0xc4, 0xad, 0xd2, 0xd3, 0xc5, 0xaa, 0xd2, 0xd3, - 0xc5, 0xa8, 0xd2, 0xd3, 0xc5, 0xaa, 0xd2, 0xd3, 0xc6, 0xa8, 0xd2, 0xd3, - 0xc6, 0xaa, 0xd2, 0xd3, 0xc6, 0xa8, 0xd2, 0xd3, 0xc6, 0xaa, 0xd2, 0xd3, - 0xc7, 0xa8, 0xd2, 0xd3, 0xc7, 0xaa, 0xd2, 0xd3, 0xc7, 0xa8, 0xd2, 0xd3, - 0xc8, 0xaa, 0xd2, 0xd3, 0xc8, 0xa8, 0xd2, 0xd3, 0xc8, 0xaa, 0xd2, 0xd3, - 0xc9, 0xa8, 0xd2, 0xd3, 0xc9, 0xaa, 0xd2, 0xd3, 0xc9, 0xa8, 0xd2, 0xd3, - 0xc9, 0xaa, 0xd2, 0xd3, 0xca, 0xa8, 0xd2, 0xd3, 0xca, 0xaa, 0xd2, 0xd3, - 0xca, 0xa8, 0xd2, 0xd3, 0xcb, 0xaa, 0xd2, 0xd3, 0xcb, 0xa8, 0xd2, 0xd3, - 0xcb, 0xaa, 0xd2, 0xd3, 0xcc, 0xa8, 0xd2, 0xd3, 0xcc, 0xaa, 0xd2, 0xd3, - 0xcc, 0xa8, 0xd2, 0xd3, 0xcc, 0xaa, 0xd2, 0xd3, 0xcd, 0xa8, 0xd2, 0xd3, - 0xcd, 0xaa, 0xd2, 0xd3, 0xcd, 0xa8, 0xd2, 0xd3, 0xce, 0xa6, 0xd2, 0xd3, - 0xce, 0xa8, 0xd2, 0xd3, 0xce, 0xa6, 0xd2, 0xd3, 0xce, 0xa8, 0xd2, 0xd3, - 0xcf, 0xa6, 0xd2, 0xd3, 0xcf, 0xa8, 0xd2, 0xd3, 0xcf, 0xa6, 0xd2, 0xd3, - 0xd0, 0xa8, 0xd2, 0xd3, 0xd0, 0xa6, 0xd2, 0xd3, 0xd0, 0xa8, 0xd2, 0xd3, - 0xd0, 0xa6, 0xd2, 0xd3, 0xd1, 0xa8, 0xd2, 0xd3, 0xd1, 0xa6, 0xd2, 0xd3, - 0xd1, 0xa6, 0xd2, 0xd3, 0xd2, 0xa6, 0xd2, 0xd3, 0xd2, 0xa6, 0xd2, 0xd3, - 0xd2, 0xa6, 0xd2, 0xd3, 0xd2, 0xa6, 0xd3, 0xd3, 0xd2, 0xa6, 0xd3, 0xd3, - 0xd2, 0xa6, 0xd3, 0xd2, 0xd2, 0xa6, 0xd4, 0xd3, 0xd2, 0xa6, 0xd4, 0xd2, - 0xd2, 0xa6, 0xd4, 0xd3, 0xd2, 0xa6, 0xd4, 0xd2, 0xd2, 0xa6, 0xd5, 0xd3, - 0xd2, 0xa6, 0xd5, 0xd2, 0xd2, 0xa6, 0xd5, 0xd3, 0xd2, 0xa6, 0xd6, 0xd2, - 0xd2, 0xa6, 0xd6, 0xd3, 0xd2, 0xa6, 0xd6, 0xd2, 0xd2, 0xa6, 0xd6, 0xd3, - 0xd2, 0xa6, 0xd7, 0xd2, 0xd2, 0xa6, 0xd7, 0xd3, 0xd2, 0xa6, 0xd7, 0xd2, - 0xd2, 0xa6, 0xd7, 0xd3, 0xd2, 0xa6, 0xd8, 0xd2, 0xd2, 0xa6, 0xd8, 0xd3, - 0xd2, 0xa6, 0xd8, 0xd2, 0xd2, 0xa6, 0xd9, 0xd3, 0xd2, 0xa6, 0xd9, 0xd2, - 0xd2, 0xa6, 0xd9, 0xd0, 0xd2, 0xa6, 0xd9, 0xd2, 0xd2, 0xa6, 0xda, 0xd0, - 0xd2, 0xa6, 0xda, 0xd2, 0xd2, 0xa6, 0xda, 0xd0, 0xd2, 0xa6, 0xda, 0xd2, - 0xd2, 0xa6, 0xdb, 0xd0, 0xd2, 0xa6, 0xdb, 0xd2, 0xd2, 0xa6, 0xdb, 0xc9, - 0xde, 0xa6, 0xdb, 0xc9, 0xde, 0xa6, 0xdc, 0xc9, 0xde, 0xa6, 0xdc, 0xc9, - 0xde, 0xa6, 0xdc, 0xc9, 0xde, 0xa6, 0xdd, 0xc9, 0xde, 0xa6, 0xdd, 0xc9, - 0xde, 0xa6, 0xdd, 0xc9, 0xde, 0xa6, 0xdd, 0xc9, 0xde, 0xa6, 0xde, 0xc9, - 0xde, 0xa6, 0xde, 0xc9, 0xde, 0xa6, 0xde, 0xca, 0xe1, 0xa6, 0xde, 0xca, - 0xe1, 0xa6, 0xdf, 0xca, 0xe1, 0xa6, 0xdf, 0xca, 0xe1, 0xa6, 0xdf, 0xca, - 0xe1, 0xa6, 0xdf, 0xca, 0xe1, 0xa6, 0xe0, 0xca, 0xe1, 0xa6, 0xe0, 0xca, - 0xe1, 0xa6, 0xe0, 0xca, 0xe1, 0xa6, 0xe1, 0xca, 0xe1, 0xa6, 0xe1, 0xca, - 0xe1, 0xa6, 0xe1, 0xcb, 0xe4, 0xa6, 0xe1, 0xcb, 0xe4, 0xa6, 0xe2, 0xcb, - 0xe4, 0xa6, 0xe2, 0xcb, 0xe4, 0xa6, 0xe2, 0xcb, 0xe4, 0xa6, 0xe2, 0xcb, - 0xe4, 0xa6, 0xe3, 0xcb, 0xe4, 0xa6, 0xe3, 0xcb, 0xe4, 0xa6, 0xe3, 0xcb, - 0xe4, 0xa6, 0xe3, 0xd5, 0xea, 0xa6, 0xe4, 0xd3, 0xea, 0xa6, 0xe4, 0xd5, - 0xea, 0xa6, 0xe4, 0xd3, 0xea, 0xa6, 0xe4, 0xd5, 0xea, 0xa6, 0xe5, 0xd3, - 0xea, 0xa6, 0xe5, 0xd5, 0xea, 0xa6, 0xe5, 0xd3, 0xea, 0xa6, 0xe5, 0xd5, - 0xea, 0xa6, 0xe6, 0xd3, 0xea, 0xa6, 0xe6, 0xd5, 0xea, 0xa6, 0xe6, 0xd3, - 0xea, 0xa6, 0xe6, 0xd3, 0xea, 0xa6, 0xe7, 0xd3, 0xea, 0xa6, 0xe7, 0xd3, - 0xea, 0xa6, 0xe7, 0xd3, 0xea, 0xa6, 0xe7, 0xd3, 0xea, 0xa6, 0xe8, 0xd3, - 0xea, 0xa6, 0xe8, 0xd3, 0xea, 0xa6, 0xe8, 0xd3, 0xea, 0xa6, 0xe8, 0xd3, - 0xea, 0xa6, 0xe9, 0xd3, 0xea, 0xa6, 0xe9, 0xd3, 0xea, 0xa6, 0xe9, 0xd3, - 0xea, 0xa6, 0xe9, 0xd3, 0xea, 0xa6, 0xea, 0xd3, 0xea, 0xa6, 0xea, 0xd3, - 0xea, 0xa6, 0xea, 0xd3, 0xeb, 0xa6, 0xea, 0xd3, 0xea, 0xa6, 0xea, 0xd3, - 0xeb, 0xa6, 0xea, 0xd3, 0xeb, 0xa6, 0xea, 0xd3, 0xeb, 0xa6, 0xea, 0xd3, - 0xeb, 0xa6, 0xea, 0xd3, 0xec, 0xa6, 0xed, 0xd3, 0xec, 0xa6, 0xed, 0xd3, - 0xec, 0xa6, 0xed, 0xd3, 0xec, 0xa6, 0xed, 0xd3, 0xec, 0xa6, 0xed, 0xd3, - 0xed, 0xa6, 0xed, 0xd3, 0xed, 0xa6, 0xed, 0xd3, 0xed, 0xa6, 0xed, 0xd3, - 0xed, 0xa6, 0xee, 0xd3, 0xed, 0xa6, 0xee, 0xd3, 0xed, 0xa6, 0xee, 0xd2, - 0xed, 0xa6, 0xee, 0xd3, 0xed, 0xa6, 0xef, 0xd2, 0xed, 0xa6, 0xef, 0xd3, - 0xed, 0xa6, 0xef, 0xd2, 0xed, 0xa6, 0xef, 0xd3, 0xed, 0xa6, 0xf0, 0xd2, - 0xed, 0xa6, 0xf0, 0xd3, 0xed, 0xa6, 0xf0, 0xd2, 0xed, 0xa6, 0xf0, 0xd3, - 0xed, 0xa6, 0xf1, 0xd2, 0xed, 0xa6, 0xf1, 0xd3, 0xed, 0xa6, 0xf1, 0xd2, - 0xed, 0xa6, 0xf1, 0xd3, 0xed, 0xa6, 0xf2, 0xd2, 0xed, 0xa6, 0xf2, 0xd3, - 0xed, 0xa6, 0xf2, 0xd2, 0xed, 0xa6, 0xf2, 0xd3, 0xed, 0xa6, 0xf2, 0xd2, - 0xed, 0xa6, 0xf3, 0xd3, 0xed, 0xa6, 0xf3, 0xd2, 0xed, 0xa6, 0xf3, 0xd3, - 0xed, 0xa6, 0xf3, 0xd2, 0xed, 0xa6, 0xf4, 0xd3, 0xed, 0xa6, 0xf4, 0xd2, - 0xed, 0xa6, 0xf4, 0xd3, 0xed, 0xa6, 0xf4, 0xd2, 0xed, 0xa6, 0xf5, 0xd3, - 0xed, 0xa6, 0xf5, 0xd2, 0xed, 0xa6, 0xf5, 0xd3, 0xed, 0xa6, 0xf5, 0xd2, - 0xed, 0xa6, 0xf5, 0xd3, 0xed, 0xa6, 0xf6, 0xd2, 0xed, 0xa6, 0xf6, 0xcf, - 0xed, 0xa6, 0xf6, 0xd2, 0xed, 0xa6, 0xf6, 0xcf, 0xed, 0xa6, 0xf7, 0xc7, - 0xf7, 0xa6, 0xf7, 0xc7, 0xf7, 0xa6, 0xf7, 0xc7, 0xf7, 0xa6, 0xf7, 0xc7, - 0xf7, 0xa6, 0xf8, 0xc7, 0xf7, 0xa6, 0xf8, 0xc7, 0xf7, 0xa6, 0xf8, 0xc7, - 0xf7, 0xa6, 0xf8, 0xc7, 0xf7, 0xa6, 0xf8, 0xc7, 0xf7, 0xa6, 0xf9, 0xc7, - 0xf7, 0xa6, 0xf9, 0xc7, 0xf7, 0xa6, 0xf9, 0xc7, 0xf7, 0xa6, 0xf9, 0xc7, - 0xf7, 0xa6, 0xfa, 0xc7, 0xf7, 0xa6, 0xfa, 0xc7, 0xf7, 0xa6, 0xfa, 0xc7, - 0xf7, 0xa6, 0xfa, 0xc7, 0xf7, 0xa6, 0xfa, 0xc7, 0xf7, 0xa6, 0xfb, 0xc7, - 0xf7, 0xa6, 0xfb, 0xc7, 0xf7, 0xa6, 0xfb, 0xc7, 0xf7, 0xa6, 0xfb, 0xc7, - 0xf7, 0xa6, 0xfc, 0xc7, 0xf7, 0xa6, 0xfc, 0xc7, 0xf7, 0xa6, 0xfc, 0xc7, - 0xf7, 0xa6, 0xfc, 0xc7, 0xf7, 0xa6, 0xfc, 0xc7, 0xf7, 0xa6, 0xfd, 0xc7, - 0xf7, 0xa6, 0xfd, 0xc7, 0xf7, 0xa6, 0xfd, 0xc7, 0xf7, 0xa6, 0xfd, 0xc7, - 0xf7, 0xa6, 0xfe, 0xc7, 0xf7, 0xa6, 0xfe, 0xc7, 0xf7, 0xa6, 0xfe, 0xc7, - 0xf7, 0xa6, 0xfe, 0xc7, 0xf7, 0xa6, 0xfe, 0xc7, 0xf7, 0xa6, 0xff, 0xc7, - 0xf7, 0xa6, 0xff, 0xc7, 0xf7, 0xa6, 0x03, 0xd8, 0x8b, 0xa6, 0x0a, 0xda, - 0x8b, 0xa6, 0x0f, 0xd8, 0x8b, 0xa6, 0x14, 0xda, 0x8b, 0xa6, 0x17, 0xd8, - 0x8b, 0xa6, 0x1b, 0xda, 0x8b, 0xa6, 0x1e, 0xd8, 0x8b, 0xa6, 0x20, 0xda, - 0x8b, 0xa6, 0x23, 0xd8, 0x8b, 0xa6, 0x25, 0xda, 0x8b, 0xa6, 0x27, 0xd8, - 0x8b, 0xa6, 0x29, 0xda, 0x8b, 0xa6, 0x2b, 0xd8, 0x8b, 0xa6, 0x2d, 0xda, - 0x8b, 0xa6, 0x2f, 0xd8, 0x8b, 0xa6, 0x31, 0xda, 0x8b, 0xa6, 0x32, 0xd8, - 0x8b, 0xa6, 0x34, 0xda, 0x8b, 0xa6, 0x35, 0xd8, 0x8b, 0xa6, 0x37, 0xda, - 0x8b, 0xa6, 0x38, 0xd8, 0x8b, 0xa6, 0x3a, 0xda, 0x8b, 0xa6, 0x3b, 0xd8, - 0x8b, 0xa6, 0x3c, 0xda, 0x8b, 0xa6, 0x3e, 0xd8, 0x8b, 0xa6, 0x3f, 0xd6, - 0x8c, 0xa6, 0x40, 0xd8, 0x8b, 0xa6, 0x42, 0xd6, 0x8c, 0xa6, 0x43, 0xd8, - 0x8b, 0xa6, 0x44, 0xd6, 0x8c, 0xa6, 0x45, 0xd8, 0x8b, 0xa6, 0x46, 0xd6, - 0x8c, 0xa6, 0x47, 0xd8, 0x8b, 0xa6, 0x48, 0xd6, 0x8c, 0xa6, 0x49, 0xd8, - 0x8b, 0xa6, 0x4a, 0xd6, 0x8c, 0xa6, 0x4b, 0xd8, 0x8b, 0xa6, 0x4c, 0xd6, - 0x8c, 0xa6, 0x4d, 0xd8, 0x8b, 0xa6, 0x4e, 0xd6, 0x8c, 0xa6, 0x4f, 0xd8, - 0x8b, 0xa6, 0x50, 0xd6, 0x8c, 0xa6, 0x51, 0xd8, 0x8b, 0xa6, 0x52, 0xd6, - 0x8c, 0xa6, 0x53, 0xd8, 0x8b, 0xa6, 0x54, 0xd6, 0x8c, 0xa6, 0x55, 0xd8, - 0x8b, 0xa6, 0x56, 0xd6, 0x8c, 0xa6, 0x57, 0xd8, 0x8b, 0xa6, 0x58, 0xd6, - 0x8c, 0xa6, 0x58, 0xd8, 0x8b, 0xa6, 0x59, 0xd6, 0x8c, 0xa6, 0x5a, 0xd8, - 0x8b, 0xa6, 0x5b, 0xd6, 0x8c, 0xa6, 0x5c, 0xd8, 0x8b, 0xa6, 0x5d, 0xd6, - 0x8c, 0xa6, 0x5d, 0xd8, 0x8b, 0xa6, 0x5e, 0xd6, 0x8c, 0xa6, 0x5f, 0xd4, - 0x8c, 0xa6, 0x60, 0xd6, 0x8c, 0xa6, 0x60, 0xd4, 0x8c, 0xa6, 0x61, 0xd6, - 0x8c, 0xa6, 0x62, 0xd4, 0x8c, 0xa6, 0x63, 0xd6, 0x8c, 0xa6, 0x63, 0xd4, - 0x8c, 0xa6, 0x64, 0xd6, 0x8c, 0xa6, 0x65, 0xd4, 0x8c, 0xa6, 0x66, 0xd6, - 0x8c, 0xa6, 0x66, 0xd4, 0x8c, 0xa6, 0x67, 0xd6, 0x8c, 0xa6, 0x68, 0xd4, - 0x8c, 0xa6, 0x68, 0xd6, 0x8c, 0xa6, 0x69, 0xd4, 0x8c, 0xa6, 0x6a, 0xd6, - 0x8c, 0xa6, 0x6a, 0xd4, 0x8c, 0xa6, 0x6b, 0xd6, 0x8c, 0xa6, 0x6c, 0xd4, - 0x8c, 0xa6, 0x6c, 0xd6, 0x8c, 0xa6, 0x6d, 0xd4, 0x8c, 0xa6, 0x6e, 0xd6, - 0x8c, 0xa6, 0x6e, 0xd4, 0x8c, 0xa6, 0x6f, 0xd6, 0x8c, 0xa6, 0x70, 0xd4, - 0x8c, 0xa6, 0x70, 0xd6, 0x8c, 0xa6, 0x71, 0xd4, 0x8c, 0xa6, 0x72, 0xd6, - 0x8c, 0xa6, 0x72, 0xd4, 0x8c, 0xa6, 0x73, 0xd6, 0x8c, 0xa6, 0x73, 0xd4, - 0x8c, 0xa6, 0x74, 0xd6, 0x8c, 0xa6, 0x75, 0xd4, 0x8c, 0xa6, 0x75, 0xd6, - 0x8c, 0xa6, 0x76, 0xd4, 0x8c, 0xa6, 0x76, 0xd6, 0x8c, 0xa6, 0x77, 0xd4, - 0x8c, 0xa6, 0x78, 0xd6, 0x8c, 0xa6, 0x78, 0xd4, 0x8c, 0xa6, 0x79, 0xd6, - 0x8c, 0xa6, 0x79, 0xd4, 0x8c, 0xa6, 0x7a, 0xd3, 0x8d, 0xa6, 0x7a, 0xd4, - 0x8c, 0xa6, 0x7b, 0xd3, 0x8d, 0xa6, 0x7c, 0xd4, 0x8c, 0xa6, 0x7c, 0xd3, - 0x8d, 0xa6, 0x7d, 0xd4, 0x8c, 0xa6, 0x7d, 0xd3, 0x8d, 0xa6, 0x7e, 0xd4, - 0x8c, 0xa6, 0x7e, 0xd3, 0x8d, 0xa6, 0x7f, 0xd4, 0x8c, 0xa6, 0x7f, 0xd3, - 0x8d, 0xa6, 0x80, 0xd4, 0x8c, 0xa6, 0x81, 0xd3, 0x8d, 0xa6, 0x81, 0xd4, - 0x8c, 0xa6, 0x82, 0xd3, 0x8d, 0xa6, 0x82, 0xd4, 0x8c, 0xa6, 0x83, 0xd3, - 0x8d, 0xa6, 0x83, 0xd4, 0x8c, 0xa6, 0x84, 0xd3, 0x8d, 0xa6, 0x84, 0xd4, - 0x8c, 0xa6, 0x85, 0xd3, 0x8d, 0xa6, 0x85, 0xd4, 0x8c, 0xa6, 0x86, 0xd3, - 0x8d, 0xa6, 0x86, 0xd4, 0x8c, 0xa6, 0x87, 0xd3, 0x8d, 0xa6, 0x87, 0xd4, - 0x8c, 0xa6, 0x88, 0xd3, 0x8d, 0xa6, 0x88, 0xd4, 0x8c, 0xa6, 0x89, 0xd3, - 0x8d, 0xa6, 0x89, 0xd4, 0x8c, 0xa6, 0x8a, 0xd3, 0x8d, 0xa6, 0x8a, 0xd4, - 0x8c, 0xa6, 0x8b, 0xd3, 0x8d, 0xa6, 0x8b, 0xd3, 0x8d, 0xa6, 0x8c, 0xd3, - 0x8d, 0xa6, 0x8c, 0xd3, 0x8d, 0xa6, 0x8c, 0xd3, 0x8d, 0xa6, 0x8c, 0xd3, - 0x8d, 0xa6, 0x8c, 0xd3, 0x8e, 0xa6, 0x8c, 0xd3, 0x8e, 0xa6, 0x8d, 0xd3, - 0x8e, 0xa4, 0x8c, 0xd3, 0x8f, 0xa6, 0x8d, 0xd3, 0x8f, 0xa4, 0x8c, 0xd3, - 0x90, 0xa6, 0x8d, 0xd3, 0x90, 0xa4, 0x8c, 0xd3, 0x91, 0xa6, 0x8d, 0xd3, - 0x91, 0xa4, 0x8c, 0xd3, 0x92, 0xa6, 0x8d, 0xd3, 0x92, 0xa4, 0x8c, 0xd3, - 0x93, 0xa6, 0x8d, 0xd3, 0x93, 0xa4, 0x8c, 0xd3, 0x94, 0xa6, 0x8d, 0xd3, - 0x94, 0xa4, 0x8c, 0xd3, 0x94, 0xa6, 0x8d, 0xd3, 0x95, 0xa4, 0x8c, 0xd3, - 0x95, 0xa6, 0x8d, 0xd3, 0x96, 0xa4, 0x8c, 0xd3, 0x96, 0xa6, 0x8d, 0xd3, - 0x97, 0xa4, 0x8c, 0xd3, 0x97, 0xa6, 0x8d, 0xd3, 0x98, 0xa4, 0x8d, 0xd3, - 0x98, 0xa1, 0x8d, 0xd3, 0x98, 0xa4, 0x8d, 0xd3, 0x99, 0xa1, 0x8d, 0xd3, - 0x99, 0xa4, 0x8d, 0xd3, 0x9a, 0xa1, 0x8d, 0xd3, 0x9a, 0xa4, 0x8d, 0xd3, - 0x9a, 0xa1, 0x9d, 0xd3, 0x9b, 0x96, 0x9c, 0xd3, 0x9b, 0x96, 0x9d, 0xd3, - 0x9c, 0x96, 0x9c, 0xd3, 0x9c, 0x96, 0xa1, 0xd3, 0x9d, 0x97, 0xa1, 0xd3, - 0x9d, 0x97, 0xa1, 0xd3, 0x9d, 0x97, 0xa1, 0xd3, 0x9e, 0x97, 0xa1, 0xd3, - 0x9e, 0x97, 0xa1, 0xd3, 0x9f, 0x97, 0xa1, 0xd3, 0x9f, 0x97, 0xa1, 0xd3, - 0x9f, 0x97, 0xa1, 0xd3, 0xa0, 0x97, 0xa1, 0xd3, 0xa0, 0x97, 0xa1, 0xd3, - 0xa1, 0x97, 0xa1, 0xd3, 0xa1, 0x97, 0xa1, 0xd3, 0xa1, 0x97, 0xa2, 0xd3, - 0xa2, 0x97, 0xa2, 0xd3, 0xa2, 0x97, 0xa3, 0xd3, 0xa3, 0x97, 0xa3, 0xd3, - 0xa3, 0x97, 0xa3, 0xd3, 0xa3, 0x97, 0xa3, 0xd3, 0xa4, 0x97, 0xa3, 0xd3, - 0xa4, 0x97, 0xa3, 0xd3, 0xa5, 0x97, 0xa3, 0xd3, 0xa5, 0x97, 0xa3, 0xd3, - 0xa5, 0x97, 0xa3, 0xd3, 0xa6, 0x97, 0xa3, 0xd3, 0xa6, 0x97, 0xa3, 0xd3, - 0xa6, 0x97, 0xa3, 0xd3, 0xa7, 0x97, 0xa3, 0xd3, 0xa7, 0x97, 0xa3, 0xd3, - 0xa8, 0x97, 0xa3, 0xd3, 0xa8, 0x97, 0xa3, 0xd3, 0xa8, 0x97, 0xa3, 0xd3, - 0xa9, 0x97, 0xa3, 0xd3, 0xa9, 0x97, 0xa3, 0xd3, 0xaa, 0x97, 0xa3, 0xd3, - 0xaa, 0x97, 0xa3, 0xd3, 0xaa, 0x97, 0xa3, 0xd3, 0xab, 0x97, 0xa3, 0xd3, - 0xab, 0x97, 0xa3, 0xd3, 0xab, 0x97, 0xa3, 0xd3, 0xac, 0x97, 0xa3, 0xd3, - 0xac, 0x97, 0xa3, 0xd3, 0xac, 0x97, 0xa3, 0xd3, 0xad, 0x97, 0xa3, 0xd3, - 0xad, 0x97, 0xa3, 0xd3, 0xae, 0x97, 0xa3, 0xd3, 0xae, 0x97, 0xa3, 0xd3, - 0xae, 0x97, 0xa3, 0xd3, 0xaf, 0x97, 0xa3, 0xd3, 0xaf, 0x97, 0xa3, 0xd3, - 0xaf, 0x97, 0xa3, 0xd3, 0xb0, 0x97, 0xa3, 0xd3, 0xb0, 0x97, 0xa3, 0xd3, - 0xb0, 0x97, 0xa3, 0xd3, 0xb1, 0x97, 0xa3, 0xd3, 0xb1, 0x97, 0xa3, 0xd3, - 0xb2, 0x97, 0xa3, 0xd3, 0xb2, 0x97, 0xa3, 0xd3, 0xb2, 0x97, 0xa3, 0xd3, - 0xb3, 0x97, 0xa3, 0xd3, 0xb3, 0x97, 0xa3, 0xd3, 0xb3, 0x97, 0xa3, 0xd3, - 0xb4, 0x97, 0xa3, 0xd3, 0xb4, 0x97, 0xa3, 0xd3, 0xb4, 0x97, 0xa3, 0xd3, - 0xb5, 0x97, 0xa3, 0xd3, 0xb5, 0x97, 0xa3, 0xd3, 0xb5, 0x97, 0xa3, 0xd3, - 0xb6, 0x97, 0xa3, 0xd3, 0xb6, 0x97, 0xa3, 0xd3, 0xb6, 0x97, 0xa3, 0xd3, - 0xb7, 0x97, 0xa3, 0xd3, 0xb7, 0x97, 0xa3, 0xd3, 0xb7, 0x97, 0xa3, 0xd3, - 0xb8, 0x97, 0xa3, 0xd3, 0xb8, 0x97, 0xa3, 0xd3, 0xb8, 0x97, 0xa3, 0xd3, - 0xb9, 0x97, 0xa3, 0xd3, 0xb9, 0x97, 0xa3, 0xd3, 0xb9, 0x97, 0xa3, 0xd3, - 0xba, 0x97, 0xa3, 0xd3, 0xba, 0x97, 0xa3, 0xd3, 0xba, 0x97, 0xa3, 0xd3, - 0xbb, 0x97, 0xa3, 0xd3, 0xbb, 0x97, 0xd1, 0xd3, 0xbb, 0xad, 0xd1, 0xd3, - 0xbc, 0xaf, 0xd1, 0xd3, 0xbc, 0xad, 0xd1, 0xd3, 0xbc, 0xaf, 0xd1, 0xd3, - 0xbd, 0xad, 0xd1, 0xd3, 0xbd, 0xaf, 0xd1, 0xd3, 0xbd, 0xad, 0xd1, 0xd3, - 0xbe, 0xaf, 0xd1, 0xd3, 0xbe, 0xad, 0xd2, 0xd3, 0xbe, 0xaa, 0xd1, 0xd3, - 0xbf, 0xad, 0xd2, 0xd3, 0xbf, 0xaa, 0xd1, 0xd3, 0xbf, 0xad, 0xd2, 0xd3, - 0xc0, 0xaa, 0xd1, 0xd3, 0xc0, 0xad, 0xd2, 0xd3, 0xc0, 0xaa, 0xd1, 0xd3, - 0xc1, 0xad, 0xd2, 0xd3, 0xc1, 0xaa, 0xd1, 0xd3, 0xc1, 0xad, 0xd2, 0xd3, - 0xc1, 0xaa, 0xd1, 0xd3, 0xc2, 0xad, 0xd2, 0xd3, 0xc2, 0xaa, 0xd1, 0xd3, - 0xc2, 0xad, 0xd2, 0xd3, 0xc3, 0xaa, 0xd1, 0xd3, 0xc3, 0xad, 0xd2, 0xd3, - 0xc3, 0xaa, 0xd2, 0xd3, 0xc4, 0xa7, 0xd2, 0xd3, 0xc4, 0xaa, 0xd2, 0xd3, - 0xc4, 0xa7, 0xd2, 0xd3, 0xc5, 0xaa, 0xd2, 0xd3, 0xc5, 0xa7, 0xd2, 0xd3, - 0xc5, 0xaa, 0xd2, 0xd3, 0xc6, 0xa7, 0xd2, 0xd3, 0xc6, 0xaa, 0xd2, 0xd3, - 0xc6, 0xa7, 0xd2, 0xd3, 0xc6, 0xaa, 0xd2, 0xd3, 0xc7, 0xa7, 0xd2, 0xd3, - 0xc7, 0xaa, 0xd2, 0xd3, 0xc7, 0xa7, 0xd2, 0xd3, 0xc8, 0xaa, 0xd2, 0xd3, - 0xc8, 0xa7, 0xd2, 0xd3, 0xc8, 0xaa, 0xd2, 0xd3, 0xc9, 0xa7, 0xd2, 0xd3, - 0xc9, 0xaa, 0xd2, 0xd3, 0xc9, 0xa7, 0xd2, 0xd3, 0xc9, 0xaa, 0xd2, 0xd3, - 0xca, 0xa7, 0xd2, 0xd3, 0xca, 0xaa, 0xd2, 0xd3, 0xca, 0xa7, 0xd2, 0xd3, - 0xcb, 0xaa, 0xd2, 0xd3, 0xcb, 0xa7, 0xd2, 0xd3, 0xcb, 0xaa, 0xd2, 0xd3, - 0xcc, 0xa7, 0xd2, 0xd3, 0xcc, 0xaa, 0xd2, 0xd3, 0xcc, 0xa7, 0xd2, 0xd3, - 0xcc, 0xaa, 0xd2, 0xd3, 0xcd, 0xa7, 0xd2, 0xd3, 0xcd, 0xaa, 0xd2, 0xd3, - 0xcd, 0xa7, 0xd2, 0xd3, 0xce, 0xa6, 0xd2, 0xd3, 0xce, 0xa7, 0xd2, 0xd3, - 0xce, 0xa6, 0xd2, 0xd3, 0xce, 0xa7, 0xd2, 0xd3, 0xcf, 0xa6, 0xd2, 0xd3, - 0xcf, 0xa7, 0xd2, 0xd3, 0xcf, 0xa6, 0xd2, 0xd3, 0xd0, 0xa7, 0xd2, 0xd3, - 0xd0, 0xa6, 0xd2, 0xd3, 0xd0, 0xa7, 0xd2, 0xd3, 0xd0, 0xa6, 0xd2, 0xd3, - 0xd1, 0xa7, 0xd2, 0xd3, 0xd1, 0xa6, 0xd2, 0xd3, 0xd1, 0xa7, 0xd2, 0xd3, - 0xd2, 0xa6, 0xd2, 0xd3, 0xd2, 0xa7, 0xd2, 0xd3, 0xd2, 0xa6, 0xd2, 0xd3, - 0xd2, 0xa6, 0xd3, 0xd3, 0xd2, 0xa6, 0xd3, 0xd3, 0xd2, 0xa6, 0xd3, 0xd3, - 0xd2, 0xa6, 0xd4, 0xd3, 0xd2, 0xa6, 0xd4, 0xd3, 0xd2, 0xa6, 0xd4, 0xd3, - 0xd2, 0xa6, 0xd4, 0xd1, 0xd2, 0xa6, 0xd5, 0xd3, 0xd2, 0xa6, 0xd5, 0xd1, - 0xd2, 0xa6, 0xd5, 0xd3, 0xd2, 0xa6, 0xd6, 0xd1, 0xd2, 0xa6, 0xd6, 0xd3, - 0xd2, 0xa6, 0xd6, 0xd1, 0xd2, 0xa6, 0xd6, 0xd3, 0xd2, 0xa6, 0xd7, 0xd1, - 0xd2, 0xa6, 0xd7, 0xd3, 0xd2, 0xa6, 0xd7, 0xd1, 0xd2, 0xa6, 0xd7, 0xd3, - 0xd2, 0xa6, 0xd8, 0xd1, 0xd2, 0xa6, 0xd8, 0xd3, 0xd2, 0xa6, 0xd8, 0xd1, - 0xd2, 0xa6, 0xd9, 0xd3, 0xd2, 0xa6, 0xd9, 0xd1, 0xd2, 0xa6, 0xd9, 0xd0, - 0xd2, 0xa6, 0xd9, 0xd1, 0xd2, 0xa6, 0xda, 0xd0, 0xd2, 0xa6, 0xda, 0xd1, - 0xd2, 0xa6, 0xda, 0xd0, 0xd2, 0xa6, 0xda, 0xd1, 0xd2, 0xa6, 0xdb, 0xd0, - 0xd2, 0xa6, 0xdb, 0xd1, 0xd2, 0xa6, 0xdb, 0xd0, 0xd2, 0xa6, 0xdb, 0xc9, - 0xdd, 0xa6, 0xdc, 0xc9, 0xdc, 0xa6, 0xdc, 0xc9, 0xdd, 0xa6, 0xdc, 0xc9, - 0xdc, 0xa6, 0xdd, 0xca, 0xdf, 0xa6, 0xdd, 0xca, 0xdf, 0xa6, 0xdd, 0xca, - 0xdf, 0xa6, 0xdd, 0xca, 0xdf, 0xa6, 0xde, 0xca, 0xdf, 0xa6, 0xde, 0xca, - 0xdf, 0xa6, 0xde, 0xca, 0xdf, 0xa6, 0xde, 0xca, 0xdf, 0xa6, 0xdf, 0xca, - 0xdf, 0xa6, 0xdf, 0xca, 0xdf, 0xa6, 0xdf, 0xca, 0xdf, 0xa6, 0xdf, 0xca, - 0xe2, 0xa6, 0xe0, 0xca, 0xe2, 0xa6, 0xe0, 0xca, 0xe2, 0xa6, 0xe0, 0xca, - 0xe2, 0xa6, 0xe1, 0xca, 0xe2, 0xa6, 0xe1, 0xca, 0xe2, 0xa6, 0xe1, 0xca, - 0xe2, 0xa6, 0xe1, 0xca, 0xe2, 0xa6, 0xe2, 0xca, 0xe2, 0xa6, 0xe2, 0xca, - 0xe2, 0xa6, 0xe2, 0xca, 0xe2, 0xa6, 0xe2, 0xcb, 0xe5, 0xa6, 0xe3, 0xcb, - 0xe5, 0xa6, 0xe3, 0xd5, 0xea, 0xa6, 0xe3, 0xd3, 0xea, 0xa6, 0xe3, 0xd5, - 0xea, 0xa6, 0xe4, 0xd3, 0xea, 0xa6, 0xe4, 0xd5, 0xea, 0xa6, 0xe4, 0xd3, - 0xea, 0xa6, 0xe4, 0xd5, 0xea, 0xa6, 0xe5, 0xd3, 0xea, 0xa6, 0xe5, 0xd5, - 0xea, 0xa6, 0xe5, 0xd3, 0xea, 0xa6, 0xe5, 0xd5, 0xea, 0xa6, 0xe6, 0xd3, - 0xea, 0xa6, 0xe6, 0xd5, 0xea, 0xa6, 0xe6, 0xd3, 0xea, 0xa6, 0xe6, 0xd5, - 0xea, 0xa6, 0xe7, 0xd3, 0xea, 0xa6, 0xe7, 0xd5, 0xea, 0xa6, 0xe7, 0xd3, - 0xea, 0xa6, 0xe7, 0xd5, 0xea, 0xa6, 0xe8, 0xd3, 0xea, 0xa6, 0xe8, 0xd5, - 0xea, 0xa6, 0xe8, 0xd3, 0xea, 0xa6, 0xe8, 0xd3, 0xea, 0xa6, 0xe9, 0xd3, - 0xea, 0xa6, 0xe9, 0xd3, 0xea, 0xa6, 0xe9, 0xd3, 0xea, 0xa6, 0xe9, 0xd3, - 0xea, 0xa6, 0xea, 0xd3, 0xea, 0xa6, 0xea, 0xd3, 0xea, 0xa6, 0xea, 0xd3, - 0xea, 0xa5, 0xea, 0xd3, 0xea, 0xa6, 0xea, 0xd3, 0xeb, 0xa5, 0xea, 0xd3, - 0xeb, 0xa6, 0xea, 0xd3, 0xeb, 0xa5, 0xea, 0xd3, 0xeb, 0xa6, 0xea, 0xd3, - 0xec, 0xa5, 0xed, 0xd3, 0xec, 0xa6, 0xed, 0xd3, 0xec, 0xa8, 0xed, 0xd3, - 0xec, 0xa6, 0xed, 0xd3, 0xec, 0xa6, 0xed, 0xd3, 0xed, 0xa6, 0xed, 0xd3, - 0xed, 0xa6, 0xed, 0xd3, 0xed, 0xa6, 0xed, 0xd3, 0xed, 0xa6, 0xee, 0xd3, - 0xed, 0xa6, 0xee, 0xd3, 0xed, 0xa6, 0xee, 0xd3, 0xed, 0xa6, 0xee, 0xd3, - 0xed, 0xa6, 0xef, 0xd3, 0xed, 0xa6, 0xef, 0xd3, 0xed, 0xa6, 0xef, 0xd1, - 0xed, 0xa6, 0xef, 0xd3, 0xed, 0xa6, 0xf0, 0xd1, 0xed, 0xa6, 0xf0, 0xd3, - 0xed, 0xa6, 0xf0, 0xd1, 0xed, 0xa6, 0xf0, 0xd3, 0xed, 0xa6, 0xf1, 0xd1, - 0xed, 0xa6, 0xf1, 0xd3, 0xed, 0xa6, 0xf1, 0xd1, 0xed, 0xa6, 0xf1, 0xd3, - 0xed, 0xa6, 0xf2, 0xd1, 0xed, 0xa6, 0xf2, 0xd3, 0xed, 0xa6, 0xf2, 0xd1, - 0xed, 0xa6, 0xf2, 0xd3, 0xed, 0xa6, 0xf2, 0xd1, 0xed, 0xa6, 0xf3, 0xd3, - 0xed, 0xa6, 0xf3, 0xd1, 0xed, 0xa6, 0xf3, 0xd3, 0xed, 0xa6, 0xf3, 0xd1, - 0xed, 0xa6, 0xf4, 0xd3, 0xed, 0xa6, 0xf4, 0xd1, 0xed, 0xa6, 0xf4, 0xd3, - 0xed, 0xa6, 0xf4, 0xd1, 0xed, 0xa6, 0xf5, 0xd3, 0xed, 0xa6, 0xf5, 0xd1, - 0xed, 0xa6, 0xf5, 0xd3, 0xed, 0xa6, 0xf5, 0xd1, 0xed, 0xa6, 0xf5, 0xd3, - 0xed, 0xa6, 0xf6, 0xd1, 0xed, 0xa6, 0xf6, 0xd0, 0xed, 0xa6, 0xf6, 0xd1, - 0xed, 0xa6, 0xf6, 0xd0, 0xed, 0xa6, 0xf7, 0xd1, 0xed, 0xa6, 0xf7, 0xd0, - 0xed, 0xa6, 0xf7, 0xc7, 0xf7, 0xa6, 0xf7, 0xc7, 0xf7, 0xa6, 0xf8, 0xc7, - 0xf7, 0xa6, 0xf8, 0xc7, 0xf7, 0xa6, 0xf8, 0xc7, 0xf7, 0xa6, 0xf8, 0xc7, - 0xf7, 0xa6, 0xf8, 0xc7, 0xf7, 0xa6, 0xf9, 0xc7, 0xf7, 0xa6, 0xf9, 0xc7, - 0xf7, 0xa6, 0xf9, 0xc7, 0xf7, 0xa6, 0xf9, 0xc7, 0xf7, 0xa6, 0xfa, 0xc7, - 0xf7, 0xa6, 0xfa, 0xc7, 0xf7, 0xa6, 0xfa, 0xc7, 0xf7, 0xa6, 0xfa, 0xc7, - 0xf7, 0xa6, 0xfa, 0xc7, 0xf7, 0xa6, 0xfb, 0xc7, 0xf7, 0xa6, 0xfb, 0xc7, - 0xf7, 0xa6, 0xfb, 0xc7, 0xf7, 0xa6, 0xfb, 0xc7, 0xf7, 0xa6, 0xfc, 0xc7, - 0xf7, 0xa6, 0xfc, 0xc7, 0xf7, 0xa6, 0xfc, 0xc7, 0xf7, 0xa6, 0xfc, 0xc7, - 0xf7, 0xa6, 0xfc, 0xc7, 0xf7, 0xa6, 0xfd, 0xc7, 0xf7, 0xa6, 0xfd, 0xc7, - 0xf7, 0xa6, 0xfd, 0xc7, 0xf7, 0xa6, 0xfd, 0xc7, 0xf7, 0xa6, 0xfe, 0xc7, - 0xf7, 0xa6, 0xfe, 0xc7, 0xf7, 0xa6, 0xfe, 0xc7, 0xf7, 0xa6, 0xfe, 0xc7, - 0xf7, 0xa6, 0xfe, 0xc7, 0xf7, 0xa6, 0xff, 0xc7, 0xf7, 0xa6, 0xff, 0xc7, - 0xf7, 0xa6, 0x03, 0xd8, 0x8b, 0xa7, 0x0a, 0xda, 0x8b, 0xa7, 0x0f, 0xd8, - 0x8b, 0xa7, 0x14, 0xda, 0x8b, 0xa7, 0x17, 0xd8, 0x8b, 0xa7, 0x1b, 0xda, - 0x8b, 0xa7, 0x1e, 0xd8, 0x8b, 0xa7, 0x20, 0xda, 0x8b, 0xa7, 0x23, 0xd8, - 0x8b, 0xa7, 0x25, 0xda, 0x8b, 0xa7, 0x27, 0xd8, 0x8b, 0xa7, 0x29, 0xda, - 0x8b, 0xa7, 0x2b, 0xd8, 0x8b, 0xa7, 0x2d, 0xd6, 0x8c, 0xa7, 0x2f, 0xd8, - 0x8b, 0xa7, 0x31, 0xd6, 0x8c, 0xa7, 0x32, 0xd8, 0x8b, 0xa7, 0x34, 0xd6, - 0x8c, 0xa7, 0x35, 0xd8, 0x8b, 0xa7, 0x37, 0xd6, 0x8c, 0xa7, 0x38, 0xd8, - 0x8b, 0xa7, 0x3a, 0xd6, 0x8c, 0xa7, 0x3b, 0xd8, 0x8b, 0xa7, 0x3c, 0xd6, - 0x8c, 0xa7, 0x3e, 0xd8, 0x8b, 0xa7, 0x3f, 0xd6, 0x8c, 0xa7, 0x40, 0xd8, - 0x8b, 0xa7, 0x42, 0xd6, 0x8c, 0xa7, 0x43, 0xd8, 0x8b, 0xa7, 0x44, 0xd6, - 0x8c, 0xa7, 0x45, 0xd8, 0x8b, 0xa7, 0x46, 0xd6, 0x8c, 0xa7, 0x47, 0xd8, - 0x8b, 0xa7, 0x48, 0xd6, 0x8c, 0xa7, 0x49, 0xd8, 0x8b, 0xa7, 0x4a, 0xd6, - 0x8c, 0xa7, 0x4b, 0xd8, 0x8b, 0xa7, 0x4c, 0xd6, 0x8c, 0xa7, 0x4d, 0xd8, - 0x8b, 0xa7, 0x4e, 0xd6, 0x8c, 0xa7, 0x4f, 0xd8, 0x8b, 0xa7, 0x50, 0xd6, - 0x8c, 0xa7, 0x51, 0xd8, 0x8b, 0xa7, 0x52, 0xd6, 0x8c, 0xa7, 0x53, 0xd8, - 0x8b, 0xa7, 0x54, 0xd6, 0x8c, 0xa7, 0x55, 0xd8, 0x8b, 0xa7, 0x56, 0xd6, - 0x8c, 0xa7, 0x57, 0xd8, 0x8b, 0xa7, 0x58, 0xd6, 0x8c, 0xa7, 0x58, 0xd8, - 0x8b, 0xa7, 0x59, 0xd6, 0x8c, 0xa7, 0x5a, 0xd8, 0x8b, 0xa7, 0x5b, 0xd6, - 0x8c, 0xa7, 0x5c, 0xd8, 0x8b, 0xa7, 0x5d, 0xd6, 0x8c, 0xa7, 0x5d, 0xd8, - 0x8b, 0xa7, 0x5e, 0xd6, 0x8c, 0xa7, 0x5f, 0xd4, 0x8c, 0xa7, 0x60, 0xd6, - 0x8c, 0xa7, 0x60, 0xd4, 0x8c, 0xa7, 0x61, 0xd6, 0x8c, 0xa7, 0x62, 0xd4, - 0x8c, 0xa7, 0x63, 0xd6, 0x8c, 0xa7, 0x63, 0xd4, 0x8c, 0xa7, 0x64, 0xd6, - 0x8c, 0xa7, 0x65, 0xd4, 0x8c, 0xa7, 0x66, 0xd6, 0x8c, 0xa7, 0x66, 0xd4, - 0x8c, 0xa7, 0x67, 0xd6, 0x8c, 0xa7, 0x68, 0xd4, 0x8c, 0xa7, 0x68, 0xd6, - 0x8c, 0xa7, 0x69, 0xd4, 0x8c, 0xa7, 0x6a, 0xd6, 0x8c, 0xa7, 0x6a, 0xd4, - 0x8c, 0xa7, 0x6b, 0xd6, 0x8c, 0xa7, 0x6c, 0xd4, 0x8c, 0xa7, 0x6c, 0xd6, - 0x8c, 0xa7, 0x6d, 0xd4, 0x8c, 0xa7, 0x6e, 0xd6, 0x8c, 0xa7, 0x6e, 0xd4, - 0x8c, 0xa7, 0x6f, 0xd6, 0x8c, 0xa7, 0x70, 0xd4, 0x8c, 0xa7, 0x70, 0xd6, - 0x8c, 0xa7, 0x71, 0xd4, 0x8c, 0xa7, 0x72, 0xd6, 0x8c, 0xa7, 0x72, 0xd4, - 0x8c, 0xa7, 0x73, 0xd6, 0x8c, 0xa7, 0x73, 0xd4, 0x8c, 0xa7, 0x74, 0xd6, - 0x8c, 0xa7, 0x75, 0xd4, 0x8c, 0xa7, 0x75, 0xd6, 0x8c, 0xa7, 0x76, 0xd4, - 0x8c, 0xa7, 0x76, 0xd6, 0x8c, 0xa7, 0x77, 0xd4, 0x8c, 0xa7, 0x78, 0xd6, - 0x8c, 0xa7, 0x78, 0xd4, 0x8c, 0xa7, 0x79, 0xd6, 0x8c, 0xa7, 0x79, 0xd4, - 0x8c, 0xa7, 0x7a, 0xd6, 0x8c, 0xa7, 0x7a, 0xd4, 0x8c, 0xa7, 0x7b, 0xd6, - 0x8c, 0xa7, 0x7c, 0xd4, 0x8c, 0xa7, 0x7c, 0xd6, 0x8c, 0xa7, 0x7d, 0xd4, - 0x8c, 0xa7, 0x7d, 0xd6, 0x8c, 0xa7, 0x7e, 0xd4, 0x8c, 0xa7, 0x7e, 0xd6, - 0x8c, 0xa7, 0x7f, 0xd4, 0x8c, 0xa7, 0x7f, 0xd6, 0x8c, 0xa7, 0x80, 0xd4, - 0x8c, 0xa7, 0x81, 0xd3, 0x8d, 0xa7, 0x81, 0xd4, 0x8c, 0xa7, 0x82, 0xd3, - 0x8d, 0xa7, 0x82, 0xd4, 0x8c, 0xa7, 0x83, 0xd3, 0x8d, 0xa7, 0x83, 0xd4, - 0x8c, 0xa7, 0x84, 0xd3, 0x8d, 0xa7, 0x84, 0xd4, 0x8c, 0xa7, 0x85, 0xd3, - 0x8d, 0xa7, 0x85, 0xd4, 0x8c, 0xa7, 0x86, 0xd3, 0x8d, 0xa7, 0x86, 0xd4, - 0x8c, 0xa7, 0x87, 0xd3, 0x8d, 0xa7, 0x87, 0xd4, 0x8c, 0xa7, 0x88, 0xd3, - 0x8d, 0xa7, 0x88, 0xd4, 0x8c, 0xa7, 0x89, 0xd3, 0x8d, 0xa7, 0x89, 0xd4, - 0x8c, 0xa7, 0x8a, 0xd3, 0x8d, 0xa7, 0x8a, 0xd4, 0x8c, 0xa7, 0x8b, 0xd3, - 0x8d, 0xa7, 0x8b, 0xd3, 0x8d, 0xa7, 0x8c, 0xd3, 0x8d, 0xa7, 0x8c, 0xd3, - 0x8d, 0xa7, 0x8c, 0xd3, 0x8d, 0xa7, 0x8c, 0xd3, 0x8d, 0xa7, 0x8c, 0xd3, - 0x8e, 0xa7, 0x8c, 0xd3, 0x8e, 0xa7, 0x8d, 0xd3, 0x8e, 0xa5, 0x8c, 0xd3, - 0x8f, 0xa7, 0x8d, 0xd3, 0x8f, 0xa5, 0x8c, 0xd3, 0x90, 0xa7, 0x8d, 0xd3, - 0x90, 0xa5, 0x8c, 0xd3, 0x91, 0xa7, 0x8d, 0xd3, 0x91, 0xa5, 0x8c, 0xd3, - 0x92, 0xa7, 0x8d, 0xd3, 0x92, 0xa5, 0x8c, 0xd3, 0x93, 0xa7, 0x8d, 0xd3, - 0x93, 0xa5, 0x8c, 0xd3, 0x94, 0xa7, 0x8d, 0xd3, 0x94, 0xa5, 0x8c, 0xd3, - 0x94, 0xa7, 0x8d, 0xd3, 0x95, 0xa5, 0x8c, 0xd3, 0x95, 0xa7, 0x8d, 0xd3, - 0x96, 0xa5, 0x8c, 0xd3, 0x96, 0xa7, 0x8d, 0xd3, 0x97, 0xa5, 0x8c, 0xd3, - 0x97, 0xa7, 0x8d, 0xd3, 0x98, 0xa5, 0x8c, 0xd3, 0x98, 0xa7, 0x8d, 0xd3, - 0x98, 0xa5, 0x8c, 0xd3, 0x99, 0xa7, 0x8d, 0xd3, 0x99, 0xa5, 0x8c, 0xd3, - 0x9a, 0xa7, 0x8d, 0xd3, 0x9a, 0xa5, 0x8c, 0xd3, 0x9a, 0xa7, 0x8d, 0xd3, - 0x9b, 0xa5, 0x9f, 0xd3, 0x9b, 0x97, 0x9f, 0xd3, 0x9c, 0x97, 0x9f, 0xd3, - 0x9c, 0x97, 0x9f, 0xd3, 0x9d, 0x97, 0x9f, 0xd3, 0x9d, 0x97, 0x9f, 0xd3, - 0x9d, 0x97, 0x9f, 0xd3, 0x9e, 0x97, 0x9f, 0xd3, 0x9e, 0x97, 0x9f, 0xd3, - 0x9f, 0x97, 0xa3, 0xd3, 0x9f, 0x98, 0x9f, 0xd3, 0x9f, 0x97, 0xa3, 0xd3, - 0xa0, 0x98, 0xa0, 0xd3, 0xa0, 0x97, 0xa3, 0xd3, 0xa1, 0x98, 0xa1, 0xd3, - 0xa1, 0x97, 0xa3, 0xd3, 0xa1, 0x98, 0xa2, 0xd3, 0xa2, 0x97, 0xa3, 0xd3, - 0xa2, 0x98, 0xa3, 0xd3, 0xa3, 0x97, 0xa3, 0xd3, 0xa3, 0x98, 0xa3, 0xd3, - 0xa3, 0x97, 0xa3, 0xd3, 0xa4, 0x98, 0xa3, 0xd3, 0xa4, 0x97, 0xa3, 0xd3, - 0xa5, 0x98, 0xa3, 0xd3, 0xa5, 0x97, 0xa3, 0xd3, 0xa5, 0x98, 0xa3, 0xd3, - 0xa6, 0x97, 0xa3, 0xd3, 0xa6, 0x98, 0xa3, 0xd3, 0xa6, 0x97, 0xa3, 0xd3, - 0xa7, 0x98, 0xa3, 0xd3, 0xa7, 0x97, 0xa3, 0xd3, 0xa8, 0x98, 0xa3, 0xd3, - 0xa8, 0x97, 0xa3, 0xd3, 0xa8, 0x98, 0xa3, 0xd3, 0xa9, 0x97, 0xa3, 0xd3, - 0xa9, 0x98, 0xa3, 0xd3, 0xaa, 0x97, 0xa3, 0xd3, 0xaa, 0x98, 0xa3, 0xd3, - 0xaa, 0x97, 0xa3, 0xd3, 0xab, 0x98, 0xa3, 0xd3, 0xab, 0x97, 0xa3, 0xd3, - 0xab, 0x98, 0xa3, 0xd3, 0xac, 0x97, 0xa3, 0xd3, 0xac, 0x98, 0xa3, 0xd3, - 0xac, 0x97, 0xa3, 0xd3, 0xad, 0x98, 0xa3, 0xd3, 0xad, 0x97, 0xa3, 0xd3, - 0xae, 0x98, 0xa3, 0xd3, 0xae, 0x97, 0xa3, 0xd3, 0xae, 0x98, 0xa3, 0xd3, - 0xaf, 0x97, 0xa3, 0xd3, 0xaf, 0x98, 0xa3, 0xd3, 0xaf, 0x97, 0xa3, 0xd3, - 0xb0, 0x98, 0xa3, 0xd3, 0xb0, 0x97, 0xa3, 0xd3, 0xb0, 0x98, 0xa3, 0xd3, - 0xb1, 0x97, 0xa3, 0xd3, 0xb1, 0x98, 0xa3, 0xd3, 0xb2, 0x97, 0xa3, 0xd3, - 0xb2, 0x98, 0xa3, 0xd3, 0xb2, 0x97, 0xa3, 0xd3, 0xb3, 0x98, 0xa3, 0xd3, - 0xb3, 0x97, 0xa3, 0xd3, 0xb3, 0x98, 0xa3, 0xd3, 0xb4, 0x97, 0xa3, 0xd3, - 0xb4, 0x98, 0xa3, 0xd3, 0xb4, 0x97, 0xa3, 0xd3, 0xb5, 0x98, 0xa3, 0xd3, - 0xb5, 0x97, 0xa3, 0xd3, 0xb5, 0x98, 0xa3, 0xd3, 0xb6, 0x97, 0xa3, 0xd3, - 0xb6, 0x98, 0xa3, 0xd3, 0xb6, 0x97, 0xa3, 0xd3, 0xb7, 0x98, 0xa3, 0xd3, - 0xb7, 0x97, 0xa3, 0xd3, 0xb7, 0x98, 0xa3, 0xd3, 0xb8, 0x97, 0xa3, 0xd3, - 0xb8, 0x98, 0xa3, 0xd3, 0xb8, 0x97, 0xa3, 0xd3, 0xb9, 0x98, 0xa3, 0xd3, - 0xb9, 0x97, 0xa3, 0xd3, 0xb9, 0x98, 0xa3, 0xd3, 0xba, 0x97, 0xa3, 0xd3, - 0xba, 0x98, 0xa3, 0xd3, 0xba, 0x97, 0xa3, 0xd3, 0xbb, 0x98, 0xa3, 0xd3, - 0xbb, 0x97, 0xd1, 0xd3, 0xbb, 0xad, 0xd2, 0xd3, 0xbc, 0xaa, 0xd1, 0xd3, - 0xbc, 0xad, 0xd2, 0xd3, 0xbc, 0xaa, 0xd1, 0xd3, 0xbd, 0xad, 0xd2, 0xd3, - 0xbd, 0xaa, 0xd1, 0xd3, 0xbd, 0xad, 0xd2, 0xd3, 0xbe, 0xaa, 0xd1, 0xd3, - 0xbe, 0xad, 0xd2, 0xd3, 0xbe, 0xaa, 0xd1, 0xd3, 0xbf, 0xad, 0xd2, 0xd3, - 0xbf, 0xaa, 0xd1, 0xd3, 0xbf, 0xad, 0xd2, 0xd3, 0xc0, 0xaa, 0xd1, 0xd3, - 0xc0, 0xad, 0xd2, 0xd3, 0xc0, 0xaa, 0xd1, 0xd3, 0xc1, 0xad, 0xd2, 0xd3, - 0xc1, 0xaa, 0xd1, 0xd3, 0xc1, 0xad, 0xd2, 0xd3, 0xc1, 0xaa, 0xd1, 0xd3, - 0xc2, 0xad, 0xd2, 0xd3, 0xc2, 0xaa, 0xd1, 0xd3, 0xc2, 0xad, 0xd2, 0xd3, - 0xc3, 0xaa, 0xd1, 0xd3, 0xc3, 0xad, 0xd2, 0xd3, 0xc3, 0xaa, 0xd1, 0xd3, - 0xc4, 0xad, 0xd2, 0xd3, 0xc4, 0xaa, 0xd1, 0xd3, 0xc4, 0xad, 0xd2, 0xd3, - 0xc5, 0xaa, 0xd1, 0xd3, 0xc5, 0xad, 0xd2, 0xd3, 0xc5, 0xaa, 0xd1, 0xd3, - 0xc6, 0xad, 0xd2, 0xd3, 0xc6, 0xaa, 0xd1, 0xd3, 0xc6, 0xad, 0xd2, 0xd3, - 0xc6, 0xaa, 0xd1, 0xd3, 0xc7, 0xad, 0xd2, 0xd3, 0xc7, 0xaa, 0xd2, 0xd3, - 0xc7, 0xa8, 0xd2, 0xd3, 0xc8, 0xaa, 0xd2, 0xd3, 0xc8, 0xa8, 0xd2, 0xd3, - 0xc8, 0xaa, 0xd2, 0xd3, 0xc9, 0xa8, 0xd2, 0xd3, 0xc9, 0xaa, 0xd2, 0xd3, - 0xc9, 0xa8, 0xd2, 0xd3, 0xc9, 0xaa, 0xd2, 0xd3, 0xca, 0xa8, 0xd2, 0xd3, - 0xca, 0xaa, 0xd2, 0xd3, 0xca, 0xa8, 0xd2, 0xd3, 0xcb, 0xaa, 0xd2, 0xd3, - 0xcb, 0xa8, 0xd2, 0xd3, 0xcb, 0xaa, 0xd2, 0xd3, 0xcc, 0xa8, 0xd2, 0xd3, - 0xcc, 0xaa, 0xd2, 0xd3, 0xcc, 0xa8, 0xd2, 0xd3, 0xcc, 0xaa, 0xd2, 0xd3, - 0xcd, 0xa8, 0xd2, 0xd3, 0xcd, 0xaa, 0xd2, 0xd3, 0xcd, 0xa8, 0xd2, 0xd3, - 0xce, 0xaa, 0xd2, 0xd3, 0xce, 0xa8, 0xd2, 0xd3, 0xce, 0xaa, 0xd2, 0xd3, - 0xce, 0xa8, 0xd2, 0xd3, 0xcf, 0xaa, 0xd2, 0xd3, 0xcf, 0xa8, 0xd2, 0xd3, - 0xcf, 0xaa, 0xd2, 0xd3, 0xd0, 0xa8, 0xd2, 0xd3, 0xd0, 0xa7, 0xd2, 0xd3, - 0xd0, 0xa8, 0xd2, 0xd3, 0xd0, 0xa7, 0xd2, 0xd3, 0xd1, 0xa8, 0xd2, 0xd3, - 0xd1, 0xa7, 0xd2, 0xd3, 0xd1, 0xa8, 0xd2, 0xd3, 0xd2, 0xa7, 0xd2, 0xd3, - 0xd2, 0xa8, 0xd2, 0xd3, 0xd2, 0xa7, 0xd2, 0xd3, 0xd2, 0xa7, 0xd3, 0xd3, - 0xd2, 0xa7, 0xd3, 0xd3, 0xd2, 0xa7, 0xd3, 0xd3, 0xd2, 0xa7, 0xd4, 0xd3, - 0xd2, 0xa7, 0xd4, 0xd3, 0xd2, 0xa7, 0xd4, 0xd3, 0xd2, 0xa7, 0xd4, 0xd2, - 0xd2, 0xa7, 0xd5, 0xd3, 0xd2, 0xa7, 0xd5, 0xd2, 0xd2, 0xa7, 0xd5, 0xd3, - 0xd2, 0xa7, 0xd6, 0xd2, 0xd2, 0xa7, 0xd6, 0xd3, 0xd2, 0xa7, 0xd6, 0xd2, - 0xd2, 0xa7, 0xd6, 0xd3, 0xd2, 0xa7, 0xd7, 0xd2, 0xd2, 0xa7, 0xd7, 0xd3, - 0xd2, 0xa7, 0xd7, 0xd2, 0xd2, 0xa7, 0xd7, 0xd3, 0xd2, 0xa7, 0xd8, 0xd2, - 0xd2, 0xa7, 0xd8, 0xd3, 0xd2, 0xa7, 0xd8, 0xd2, 0xd2, 0xa7, 0xd9, 0xd3, - 0xd2, 0xa7, 0xd9, 0xd2, 0xd2, 0xa7, 0xd9, 0xd3, 0xd2, 0xa7, 0xd9, 0xd2, - 0xd2, 0xa7, 0xda, 0xd3, 0xd2, 0xa7, 0xda, 0xd2, 0xd2, 0xa7, 0xda, 0xd3, - 0xd2, 0xa7, 0xda, 0xd2, 0xd2, 0xa7, 0xdb, 0xd3, 0xd2, 0xa7, 0xdb, 0xd2, - 0xd2, 0xa7, 0xdb, 0xd3, 0xd2, 0xa7, 0xdb, 0xd2, 0xd2, 0xa7, 0xdc, 0xc9, - 0xde, 0xa7, 0xdc, 0xc9, 0xde, 0xa7, 0xdc, 0xc9, 0xde, 0xa7, 0xdd, 0xc9, - 0xde, 0xa7, 0xdd, 0xc9, 0xde, 0xa7, 0xdd, 0xc9, 0xde, 0xa7, 0xdd, 0xc9, - 0xde, 0xa7, 0xde, 0xc9, 0xde, 0xa7, 0xde, 0xc9, 0xde, 0xa7, 0xde, 0xca, - 0xe1, 0xa7, 0xde, 0xca, 0xe1, 0xa7, 0xdf, 0xca, 0xe1, 0xa7, 0xdf, 0xca, - 0xe1, 0xa7, 0xdf, 0xca, 0xe1, 0xa7, 0xdf, 0xca, 0xe1, 0xa7, 0xe0, 0xca, - 0xe1, 0xa7, 0xe0, 0xca, 0xe1, 0xa7, 0xe0, 0xca, 0xe1, 0xa7, 0xe1, 0xca, - 0xe1, 0xa7, 0xe1, 0xca, 0xe1, 0xa7, 0xe1, 0xcb, 0xe4, 0xa7, 0xe1, 0xcb, - 0xe4, 0xa7, 0xe2, 0xcb, 0xe4, 0xa7, 0xe2, 0xcb, 0xe4, 0xa7, 0xe2, 0xcb, - 0xe4, 0xa7, 0xe2, 0xcb, 0xe4, 0xa7, 0xe3, 0xd6, 0xea, 0xa7, 0xe3, 0xd5, - 0xea, 0xa7, 0xe3, 0xd6, 0xea, 0xa7, 0xe3, 0xd5, 0xea, 0xa7, 0xe4, 0xd6, - 0xea, 0xa7, 0xe4, 0xd5, 0xea, 0xa7, 0xe4, 0xd3, 0xea, 0xa7, 0xe4, 0xd5, - 0xea, 0xa7, 0xe5, 0xd3, 0xea, 0xa7, 0xe5, 0xd5, 0xea, 0xa7, 0xe5, 0xd3, - 0xea, 0xa7, 0xe5, 0xd5, 0xea, 0xa7, 0xe6, 0xd3, 0xea, 0xa7, 0xe6, 0xd5, - 0xea, 0xa7, 0xe6, 0xd3, 0xea, 0xa7, 0xe6, 0xd5, 0xea, 0xa7, 0xe7, 0xd3, - 0xea, 0xa7, 0xe7, 0xd5, 0xea, 0xa7, 0xe7, 0xd3, 0xea, 0xa7, 0xe7, 0xd5, - 0xea, 0xa7, 0xe8, 0xd3, 0xea, 0xa7, 0xe8, 0xd5, 0xea, 0xa7, 0xe8, 0xd3, - 0xea, 0xa7, 0xe8, 0xd3, 0xea, 0xa7, 0xe9, 0xd3, 0xea, 0xa7, 0xe9, 0xd3, - 0xea, 0xa7, 0xe9, 0xd3, 0xea, 0xa7, 0xe9, 0xd3, 0xea, 0xa7, 0xea, 0xd3, - 0xea, 0xa7, 0xea, 0xd3, 0xea, 0xa7, 0xea, 0xd3, 0xea, 0xa6, 0xea, 0xd3, - 0xea, 0xa7, 0xea, 0xd3, 0xeb, 0xa6, 0xea, 0xd3, 0xeb, 0xa7, 0xea, 0xd3, - 0xeb, 0xa6, 0xea, 0xd3, 0xeb, 0xa7, 0xea, 0xd3, 0xec, 0xa6, 0xed, 0xd3, - 0xec, 0xa7, 0xed, 0xd3, 0xec, 0xa9, 0xed, 0xd3, 0xec, 0xa7, 0xed, 0xd3, - 0xec, 0xa7, 0xed, 0xd3, 0xed, 0xa7, 0xed, 0xd3, 0xed, 0xa7, 0xed, 0xd3, - 0xed, 0xa7, 0xed, 0xd3, 0xed, 0xa7, 0xee, 0xd3, 0xed, 0xa7, 0xee, 0xd3, - 0xed, 0xa7, 0xee, 0xd3, 0xed, 0xa7, 0xee, 0xd3, 0xed, 0xa7, 0xef, 0xd3, - 0xed, 0xa7, 0xef, 0xd3, 0xed, 0xa7, 0xef, 0xd2, 0xed, 0xa7, 0xef, 0xd3, - 0xed, 0xa7, 0xf0, 0xd2, 0xed, 0xa7, 0xf0, 0xd3, 0xed, 0xa7, 0xf0, 0xd2, - 0xed, 0xa7, 0xf0, 0xd3, 0xed, 0xa7, 0xf1, 0xd2, 0xed, 0xa7, 0xf1, 0xd3, - 0xed, 0xa7, 0xf1, 0xd2, 0xed, 0xa7, 0xf1, 0xd3, 0xed, 0xa7, 0xf2, 0xd2, - 0xed, 0xa7, 0xf2, 0xd3, 0xed, 0xa7, 0xf2, 0xd2, 0xed, 0xa7, 0xf2, 0xd3, - 0xed, 0xa7, 0xf2, 0xd2, 0xed, 0xa7, 0xf3, 0xd3, 0xed, 0xa7, 0xf3, 0xd2, - 0xed, 0xa7, 0xf3, 0xd3, 0xed, 0xa7, 0xf3, 0xd2, 0xed, 0xa7, 0xf4, 0xd3, - 0xed, 0xa7, 0xf4, 0xd2, 0xed, 0xa7, 0xf4, 0xd3, 0xed, 0xa7, 0xf4, 0xd2, - 0xed, 0xa7, 0xf5, 0xd3, 0xed, 0xa7, 0xf5, 0xd2, 0xed, 0xa7, 0xf5, 0xd3, - 0xed, 0xa7, 0xf5, 0xd2, 0xed, 0xa7, 0xf5, 0xd3, 0xed, 0xa7, 0xf6, 0xd2, - 0xed, 0xa7, 0xf6, 0xd3, 0xed, 0xa7, 0xf6, 0xd2, 0xed, 0xa7, 0xf6, 0xd3, - 0xed, 0xa7, 0xf7, 0xd2, 0xed, 0xa7, 0xf7, 0xc7, 0xf7, 0xa7, 0xf7, 0xc7, - 0xf7, 0xa7, 0xf7, 0xc7, 0xf7, 0xa7, 0xf8, 0xc7, 0xf7, 0xa7, 0xf8, 0xc7, - 0xf7, 0xa7, 0xf8, 0xc7, 0xf7, 0xa7, 0xf8, 0xc7, 0xf7, 0xa7, 0xf8, 0xc7, - 0xf7, 0xa7, 0xf9, 0xc7, 0xf7, 0xa7, 0xf9, 0xc7, 0xf7, 0xa7, 0xf9, 0xc7, - 0xf7, 0xa7, 0xf9, 0xc7, 0xf7, 0xa7, 0xfa, 0xc7, 0xf7, 0xa7, 0xfa, 0xc7, - 0xf7, 0xa7, 0xfa, 0xc7, 0xf7, 0xa7, 0xfa, 0xc7, 0xf7, 0xa7, 0xfa, 0xc7, - 0xf7, 0xa7, 0xfb, 0xc7, 0xf7, 0xa7, 0xfb, 0xc7, 0xf7, 0xa7, 0xfb, 0xc7, - 0xf7, 0xa7, 0xfb, 0xc7, 0xf7, 0xa7, 0xfc, 0xc7, 0xf7, 0xa7, 0xfc, 0xc7, - 0xf7, 0xa7, 0xfc, 0xc7, 0xf7, 0xa7, 0xfc, 0xc7, 0xf7, 0xa7, 0xfc, 0xc7, - 0xf7, 0xa7, 0xfd, 0xc7, 0xf7, 0xa7, 0xfd, 0xc7, 0xf7, 0xa7, 0xfd, 0xc7, - 0xf7, 0xa7, 0xfd, 0xc7, 0xf7, 0xa7, 0xfe, 0xc7, 0xf7, 0xa7, 0xfe, 0xc7, - 0xf7, 0xa7, 0xfe, 0xc7, 0xf7, 0xa7, 0xfe, 0xc7, 0xf7, 0xa7, 0xfe, 0xc7, - 0xf7, 0xa7, 0xff, 0xc7, 0xf7, 0xa7, 0xff, 0xc7, 0xf7, 0xa7, 0x03, 0xd8, - 0x8b, 0xa7, 0x0a, 0xda, 0x8b, 0xa7, 0x0f, 0xd8, 0x8b, 0xa7, 0x14, 0xda, - 0x8b, 0xa7, 0x17, 0xd8, 0x8b, 0xa7, 0x1b, 0xda, 0x8b, 0xa7, 0x1e, 0xd8, - 0x8b, 0xa7, 0x20, 0xda, 0x8b, 0xa7, 0x23, 0xd8, 0x8b, 0xa7, 0x25, 0xda, - 0x8b, 0xa7, 0x27, 0xd8, 0x8b, 0xa7, 0x29, 0xda, 0x8b, 0xa7, 0x2b, 0xd8, - 0x8b, 0xa7, 0x2d, 0xda, 0x8b, 0xa7, 0x2f, 0xd8, 0x8b, 0xa7, 0x31, 0xda, - 0x8b, 0xa7, 0x32, 0xd8, 0x8b, 0xa7, 0x34, 0xda, 0x8b, 0xa7, 0x35, 0xd8, - 0x8b, 0xa7, 0x37, 0xda, 0x8b, 0xa7, 0x38, 0xd8, 0x8b, 0xa7, 0x3a, 0xda, - 0x8b, 0xa7, 0x3b, 0xd8, 0x8b, 0xa7, 0x3c, 0xda, 0x8b, 0xa7, 0x3e, 0xd8, - 0x8b, 0xa7, 0x3f, 0xda, 0x8b, 0xa7, 0x40, 0xd8, 0x8b, 0xa7, 0x42, 0xda, - 0x8b, 0xa7, 0x43, 0xd8, 0x8b, 0xa7, 0x44, 0xda, 0x8b, 0xa7, 0x45, 0xd8, - 0x8b, 0xa7, 0x46, 0xda, 0x8b, 0xa7, 0x47, 0xd8, 0x8b, 0xa7, 0x48, 0xda, - 0x8b, 0xa7, 0x49, 0xd8, 0x8b, 0xa7, 0x4a, 0xda, 0x8b, 0xa7, 0x4b, 0xd8, - 0x8b, 0xa7, 0x4c, 0xd6, 0x8c, 0xa7, 0x4d, 0xd8, 0x8b, 0xa7, 0x4e, 0xd6, - 0x8c, 0xa7, 0x4f, 0xd8, 0x8b, 0xa7, 0x50, 0xd6, 0x8c, 0xa7, 0x51, 0xd8, - 0x8b, 0xa7, 0x52, 0xd6, 0x8c, 0xa7, 0x53, 0xd8, 0x8b, 0xa7, 0x54, 0xd6, - 0x8c, 0xa7, 0x55, 0xd8, 0x8b, 0xa7, 0x56, 0xd6, 0x8c, 0xa7, 0x57, 0xd8, - 0x8b, 0xa7, 0x58, 0xd6, 0x8c, 0xa7, 0x58, 0xd8, 0x8b, 0xa7, 0x59, 0xd6, - 0x8c, 0xa7, 0x5a, 0xd8, 0x8b, 0xa7, 0x5b, 0xd6, 0x8c, 0xa7, 0x5c, 0xd8, - 0x8b, 0xa7, 0x5d, 0xd6, 0x8c, 0xa7, 0x5d, 0xd8, 0x8b, 0xa7, 0x5e, 0xd6, - 0x8c, 0xa7, 0x5f, 0xd8, 0x8b, 0xa7, 0x60, 0xd6, 0x8c, 0xa7, 0x60, 0xd8, - 0x8b, 0xa7, 0x61, 0xd6, 0x8c, 0xa7, 0x62, 0xd8, 0x8b, 0xa7, 0x63, 0xd6, - 0x8c, 0xa7, 0x63, 0xd8, 0x8b, 0xa7, 0x64, 0xd6, 0x8c, 0xa7, 0x65, 0xd8, - 0x8b, 0xa7, 0x66, 0xd6, 0x8c, 0xa7, 0x66, 0xd8, 0x8b, 0xa7, 0x67, 0xd6, - 0x8c, 0xa7, 0x68, 0xd4, 0x8c, 0xa7, 0x68, 0xd6, 0x8c, 0xa7, 0x69, 0xd4, - 0x8c, 0xa7, 0x6a, 0xd6, 0x8c, 0xa7, 0x6a, 0xd4, 0x8c, 0xa7, 0x6b, 0xd6, - 0x8c, 0xa7, 0x6c, 0xd4, 0x8c, 0xa7, 0x6c, 0xd6, 0x8c, 0xa7, 0x6d, 0xd4, - 0x8c, 0xa7, 0x6e, 0xd6, 0x8c, 0xa7, 0x6e, 0xd4, 0x8c, 0xa7, 0x6f, 0xd6, - 0x8c, 0xa7, 0x70, 0xd4, 0x8c, 0xa7, 0x70, 0xd6, 0x8c, 0xa7, 0x71, 0xd4, - 0x8c, 0xa7, 0x72, 0xd6, 0x8c, 0xa7, 0x72, 0xd4, 0x8c, 0xa7, 0x73, 0xd6, - 0x8c, 0xa7, 0x73, 0xd4, 0x8c, 0xa7, 0x74, 0xd6, 0x8c, 0xa7, 0x75, 0xd4, - 0x8c, 0xa7, 0x75, 0xd6, 0x8c, 0xa7, 0x76, 0xd4, 0x8c, 0xa7, 0x76, 0xd6, - 0x8c, 0xa7, 0x77, 0xd4, 0x8c, 0xa7, 0x78, 0xd6, 0x8c, 0xa7, 0x78, 0xd4, - 0x8c, 0xa7, 0x79, 0xd6, 0x8c, 0xa7, 0x79, 0xd4, 0x8c, 0xa7, 0x7a, 0xd6, - 0x8c, 0xa7, 0x7a, 0xd4, 0x8c, 0xa7, 0x7b, 0xd6, 0x8c, 0xa7, 0x7c, 0xd4, - 0x8c, 0xa7, 0x7c, 0xd6, 0x8c, 0xa7, 0x7d, 0xd4, 0x8c, 0xa7, 0x7d, 0xd6, - 0x8c, 0xa7, 0x7e, 0xd4, 0x8c, 0xa7, 0x7e, 0xd6, 0x8c, 0xa7, 0x7f, 0xd4, - 0x8c, 0xa7, 0x7f, 0xd6, 0x8c, 0xa7, 0x80, 0xd4, 0x8c, 0xa7, 0x81, 0xd4, - 0x8d, 0xa7, 0x81, 0xd4, 0x8c, 0xa7, 0x82, 0xd4, 0x8d, 0xa7, 0x82, 0xd4, - 0x8c, 0xa7, 0x83, 0xd4, 0x8d, 0xa7, 0x83, 0xd4, 0x8c, 0xa7, 0x84, 0xd4, - 0x8d, 0xa7, 0x84, 0xd4, 0x8c, 0xa7, 0x85, 0xd4, 0x8d, 0xa7, 0x85, 0xd4, - 0x8c, 0xa7, 0x86, 0xd4, 0x8d, 0xa7, 0x86, 0xd4, 0x8c, 0xa7, 0x87, 0xd4, - 0x8d, 0xa7, 0x87, 0xd4, 0x8c, 0xa7, 0x88, 0xd4, 0x8d, 0xa7, 0x88, 0xd4, - 0x8c, 0xa7, 0x89, 0xd4, 0x8d, 0xa7, 0x89, 0xd4, 0x8c, 0xa7, 0x8a, 0xd4, - 0x8d, 0xa7, 0x8a, 0xd4, 0x8c, 0xa7, 0x8b, 0xd4, 0x8d, 0xa7, 0x8b, 0xd4, - 0x8c, 0xa7, 0x8c, 0xd4, 0x8d, 0xa7, 0x8c, 0xd4, 0x8c, 0xa7, 0x8c, 0xd4, - 0x8d, 0xa7, 0x8c, 0xd4, 0x8d, 0xa7, 0x8c, 0xd4, 0x8e, 0xa7, 0x8c, 0xd4, - 0x8e, 0xa7, 0x8c, 0xd4, 0x8e, 0xa7, 0x8c, 0xd4, 0x8f, 0xa7, 0x8c, 0xd4, - 0x8f, 0xa7, 0x8c, 0xd4, 0x90, 0xa7, 0x8d, 0xd4, 0x90, 0xa4, 0x8c, 0xd4, - 0x91, 0xa7, 0x8d, 0xd4, 0x91, 0xa4, 0x8c, 0xd4, 0x92, 0xa7, 0x8d, 0xd4, - 0x92, 0xa4, 0x8c, 0xd4, 0x93, 0xa7, 0x8d, 0xd4, 0x93, 0xa4, 0x8c, 0xd4, - 0x94, 0xa7, 0x8d, 0xd4, 0x94, 0xa4, 0x8c, 0xd4, 0x94, 0xa7, 0x8d, 0xd4, - 0x95, 0xa4, 0x8c, 0xd4, 0x95, 0xa7, 0x8d, 0xd4, 0x96, 0xa4, 0x8c, 0xd4, - 0x96, 0xa7, 0x8d, 0xd4, 0x97, 0xa4, 0x8c, 0xd4, 0x97, 0xa7, 0x8d, 0xd4, - 0x98, 0xa4, 0x8c, 0xd4, 0x98, 0xa7, 0x8d, 0xd4, 0x98, 0xa4, 0x8c, 0xd4, - 0x99, 0xa7, 0x8d, 0xd4, 0x99, 0xa4, 0x8c, 0xd4, 0x9a, 0xa7, 0x8d, 0xd4, - 0x9a, 0xa4, 0x8c, 0xd4, 0x9a, 0xa7, 0x8d, 0xd4, 0x9b, 0xa4, 0x8c, 0xd4, - 0x9b, 0xa7, 0x9d, 0xd4, 0x9c, 0x96, 0x9c, 0xd4, 0x9c, 0x96, 0xa1, 0xd4, - 0x9d, 0x97, 0xa1, 0xd4, 0x9d, 0x97, 0xa1, 0xd4, 0x9d, 0x97, 0xa1, 0xd4, - 0x9e, 0x97, 0xa1, 0xd4, 0x9e, 0x97, 0xa1, 0xd4, 0x9f, 0x97, 0xa1, 0xd4, - 0x9f, 0x97, 0xa1, 0xd4, 0x9f, 0x97, 0xa1, 0xd4, 0xa0, 0x97, 0xa1, 0xd4, - 0xa0, 0x97, 0xa1, 0xd4, 0xa1, 0x97, 0xa1, 0xd4, 0xa1, 0x97, 0xa1, 0xd4, - 0xa1, 0x97, 0xa2, 0xd4, 0xa2, 0x97, 0xa2, 0xd4, 0xa2, 0x97, 0xa3, 0xd4, - 0xa3, 0x97, 0xa3, 0xd4, 0xa3, 0x97, 0xa3, 0xd4, 0xa3, 0x97, 0xa3, 0xd4, - 0xa4, 0x97, 0xa3, 0xd4, 0xa4, 0x97, 0xa3, 0xd4, 0xa5, 0x97, 0xa3, 0xd4, - 0xa5, 0x97, 0xa3, 0xd4, 0xa5, 0x97, 0xa3, 0xd4, 0xa6, 0x97, 0xa3, 0xd4, - 0xa6, 0x97, 0xa3, 0xd4, 0xa6, 0x97, 0xa3, 0xd4, 0xa7, 0x97, 0xa3, 0xd4, - 0xa7, 0x97, 0xa3, 0xd4, 0xa8, 0x97, 0xa3, 0xd4, 0xa8, 0x97, 0xa3, 0xd4, - 0xa8, 0x97, 0xa3, 0xd4, 0xa9, 0x97, 0xa3, 0xd4, 0xa9, 0x97, 0xa3, 0xd4, - 0xaa, 0x97, 0xa3, 0xd4, 0xaa, 0x97, 0xa3, 0xd4, 0xaa, 0x97, 0xa3, 0xd4, - 0xab, 0x97, 0xa3, 0xd4, 0xab, 0x97, 0xa3, 0xd4, 0xab, 0x97, 0xa3, 0xd4, - 0xac, 0x97, 0xa3, 0xd4, 0xac, 0x97, 0xa3, 0xd4, 0xac, 0x97, 0xa3, 0xd4, - 0xad, 0x97, 0xa3, 0xd4, 0xad, 0x97, 0xa3, 0xd4, 0xae, 0x97, 0xa3, 0xd4, - 0xae, 0x97, 0xa3, 0xd4, 0xae, 0x97, 0xa3, 0xd4, 0xaf, 0x97, 0xa3, 0xd4, - 0xaf, 0x97, 0xa3, 0xd4, 0xaf, 0x97, 0xa3, 0xd4, 0xb0, 0x97, 0xa3, 0xd4, - 0xb0, 0x97, 0xa3, 0xd4, 0xb0, 0x97, 0xa3, 0xd4, 0xb1, 0x97, 0xa3, 0xd4, - 0xb1, 0x97, 0xa3, 0xd4, 0xb2, 0x97, 0xa3, 0xd4, 0xb2, 0x97, 0xa3, 0xd4, - 0xb2, 0x97, 0xa3, 0xd4, 0xb3, 0x97, 0xa3, 0xd4, 0xb3, 0x97, 0xa3, 0xd4, - 0xb3, 0x97, 0xa3, 0xd4, 0xb4, 0x97, 0xa3, 0xd4, 0xb4, 0x97, 0xa3, 0xd4, - 0xb4, 0x97, 0xa3, 0xd4, 0xb5, 0x97, 0xa3, 0xd4, 0xb5, 0x97, 0xa3, 0xd4, - 0xb5, 0x97, 0xa3, 0xd4, 0xb6, 0x97, 0xa3, 0xd4, 0xb6, 0x97, 0xa3, 0xd4, - 0xb6, 0x97, 0xa3, 0xd4, 0xb7, 0x97, 0xa3, 0xd4, 0xb7, 0x97, 0xa3, 0xd4, - 0xb7, 0x97, 0xa3, 0xd4, 0xb8, 0x97, 0xa3, 0xd4, 0xb8, 0x97, 0xa3, 0xd4, - 0xb8, 0x97, 0xa3, 0xd4, 0xb9, 0x97, 0xa3, 0xd4, 0xb9, 0x97, 0xa3, 0xd4, - 0xb9, 0x97, 0xa3, 0xd4, 0xba, 0x97, 0xa3, 0xd4, 0xba, 0x97, 0xa3, 0xd4, - 0xba, 0x97, 0xa3, 0xd4, 0xbb, 0x97, 0xa3, 0xd4, 0xbb, 0x97, 0xd1, 0xd4, - 0xbb, 0xad, 0xd1, 0xd4, 0xbc, 0xaf, 0xd1, 0xd4, 0xbc, 0xad, 0xd1, 0xd4, - 0xbc, 0xaf, 0xd1, 0xd4, 0xbd, 0xad, 0xd1, 0xd4, 0xbd, 0xaf, 0xd1, 0xd4, - 0xbd, 0xad, 0xd1, 0xd4, 0xbe, 0xaf, 0xd1, 0xd4, 0xbe, 0xad, 0xd1, 0xd4, - 0xbe, 0xaf, 0xd1, 0xd4, 0xbf, 0xad, 0xd1, 0xd4, 0xbf, 0xaf, 0xd1, 0xd4, - 0xbf, 0xad, 0xd1, 0xd4, 0xc0, 0xaf, 0xd1, 0xd4, 0xc0, 0xad, 0xd1, 0xd4, - 0xc0, 0xaf, 0xd1, 0xd4, 0xc1, 0xad, 0xd2, 0xd4, 0xc1, 0xaa, 0xd1, 0xd4, - 0xc1, 0xad, 0xd2, 0xd4, 0xc1, 0xaa, 0xd1, 0xd4, 0xc2, 0xad, 0xd2, 0xd4, - 0xc2, 0xaa, 0xd1, 0xd4, 0xc2, 0xad, 0xd2, 0xd4, 0xc3, 0xaa, 0xd1, 0xd4, - 0xc3, 0xad, 0xd2, 0xd4, 0xc3, 0xaa, 0xd1, 0xd4, 0xc4, 0xad, 0xd2, 0xd4, - 0xc4, 0xaa, 0xd1, 0xd4, 0xc4, 0xad, 0xd2, 0xd4, 0xc5, 0xaa, 0xd1, 0xd4, - 0xc5, 0xad, 0xd2, 0xd4, 0xc5, 0xaa, 0xd1, 0xd4, 0xc6, 0xad, 0xd2, 0xd4, - 0xc6, 0xaa, 0xd1, 0xd4, 0xc6, 0xad, 0xd2, 0xd4, 0xc6, 0xaa, 0xd1, 0xd4, - 0xc7, 0xad, 0xd2, 0xd4, 0xc7, 0xaa, 0xd2, 0xd4, 0xc7, 0xa7, 0xd2, 0xd4, - 0xc8, 0xaa, 0xd2, 0xd4, 0xc8, 0xa7, 0xd2, 0xd4, 0xc8, 0xaa, 0xd2, 0xd4, - 0xc9, 0xa7, 0xd2, 0xd4, 0xc9, 0xaa, 0xd2, 0xd4, 0xc9, 0xa7, 0xd2, 0xd4, - 0xc9, 0xaa, 0xd2, 0xd4, 0xca, 0xa7, 0xd2, 0xd4, 0xca, 0xaa, 0xd2, 0xd4, - 0xca, 0xa7, 0xd2, 0xd4, 0xcb, 0xaa, 0xd2, 0xd4, 0xcb, 0xa7, 0xd2, 0xd4, - 0xcb, 0xaa, 0xd2, 0xd4, 0xcc, 0xa7, 0xd2, 0xd4, 0xcc, 0xaa, 0xd2, 0xd4, - 0xcc, 0xa7, 0xd2, 0xd4, 0xcc, 0xaa, 0xd2, 0xd4, 0xcd, 0xa7, 0xd2, 0xd4, - 0xcd, 0xaa, 0xd2, 0xd4, 0xcd, 0xa7, 0xd2, 0xd4, 0xce, 0xaa, 0xd2, 0xd4, - 0xce, 0xa7, 0xd2, 0xd4, 0xce, 0xaa, 0xd2, 0xd4, 0xce, 0xa7, 0xd2, 0xd4, - 0xcf, 0xaa, 0xd2, 0xd4, 0xcf, 0xa7, 0xd2, 0xd4, 0xcf, 0xaa, 0xd2, 0xd4, - 0xd0, 0xa7, 0xd2, 0xd4, 0xd0, 0xa7, 0xd2, 0xd4, 0xd0, 0xa7, 0xd2, 0xd4, - 0xd0, 0xa7, 0xd2, 0xd4, 0xd1, 0xa7, 0xd2, 0xd4, 0xd1, 0xa7, 0xd2, 0xd4, - 0xd1, 0xa7, 0xd2, 0xd4, 0xd2, 0xa7, 0xd2, 0xd3, 0xd2, 0xa7, 0xd2, 0xd4, - 0xd2, 0xa7, 0xd2, 0xd3, 0xd2, 0xa7, 0xd3, 0xd4, 0xd2, 0xa7, 0xd3, 0xd3, - 0xd2, 0xa7, 0xd3, 0xd4, 0xd2, 0xa7, 0xd4, 0xd3, 0xd2, 0xa7, 0xd4, 0xd4, - 0xd2, 0xa7, 0xd4, 0xd3, 0xd2, 0xa7, 0xd4, 0xd4, 0xd2, 0xa7, 0xd5, 0xd3, - 0xd2, 0xa7, 0xd5, 0xd4, 0xd2, 0xa7, 0xd5, 0xd3, 0xd2, 0xa7, 0xd6, 0xd4, - 0xd2, 0xa7, 0xd6, 0xd3, 0xd2, 0xa7, 0xd6, 0xd4, 0xd2, 0xa7, 0xd6, 0xd3, - 0xd2, 0xa7, 0xd7, 0xd1, 0xd2, 0xa7, 0xd7, 0xd3, 0xd2, 0xa7, 0xd7, 0xd1, - 0xd2, 0xa7, 0xd7, 0xd3, 0xd2, 0xa7, 0xd8, 0xd1, 0xd2, 0xa7, 0xd8, 0xd3, - 0xd2, 0xa7, 0xd8, 0xd1, 0xd2, 0xa7, 0xd9, 0xd3, 0xd2, 0xa7, 0xd9, 0xd1, - 0xd2, 0xa7, 0xd9, 0xd3, 0xd2, 0xa7, 0xd9, 0xd1, 0xd2, 0xa7, 0xda, 0xd3, - 0xd2, 0xa7, 0xda, 0xd1, 0xd2, 0xa7, 0xda, 0xd3, 0xd2, 0xa7, 0xda, 0xd1, - 0xd2, 0xa7, 0xdb, 0xd3, 0xd2, 0xa7, 0xdb, 0xd1, 0xd2, 0xa7, 0xdb, 0xd3, - 0xd2, 0xa7, 0xdb, 0xd1, 0xd2, 0xa7, 0xdc, 0xd0, 0xd2, 0xa7, 0xdc, 0xca, - 0xdf, 0xa7, 0xdc, 0xc9, 0xdc, 0xa7, 0xdd, 0xca, 0xdf, 0xa7, 0xdd, 0xca, - 0xdf, 0xa7, 0xdd, 0xca, 0xdf, 0xa7, 0xdd, 0xca, 0xdf, 0xa7, 0xde, 0xca, - 0xdf, 0xa7, 0xde, 0xca, 0xdf, 0xa7, 0xde, 0xca, 0xdf, 0xa7, 0xde, 0xca, - 0xdf, 0xa7, 0xdf, 0xca, 0xdf, 0xa7, 0xdf, 0xca, 0xdf, 0xa7, 0xdf, 0xca, - 0xdf, 0xa7, 0xdf, 0xca, 0xe2, 0xa7, 0xe0, 0xca, 0xe2, 0xa7, 0xe0, 0xca, - 0xe2, 0xa7, 0xe0, 0xca, 0xe2, 0xa7, 0xe1, 0xca, 0xe2, 0xa7, 0xe1, 0xca, - 0xe2, 0xa7, 0xe1, 0xca, 0xe2, 0xa7, 0xe1, 0xca, 0xe2, 0xa7, 0xe2, 0xca, - 0xe2, 0xa7, 0xe2, 0xca, 0xe2, 0xa7, 0xe2, 0xd6, 0xea, 0xa7, 0xe2, 0xd5, - 0xea, 0xa7, 0xe3, 0xd6, 0xea, 0xa7, 0xe3, 0xd5, 0xea, 0xa7, 0xe3, 0xd6, - 0xea, 0xa7, 0xe3, 0xd5, 0xea, 0xa7, 0xe4, 0xd6, 0xea, 0xa7, 0xe4, 0xd5, - 0xea, 0xa7, 0xe4, 0xd4, 0xea, 0xa7, 0xe4, 0xd5, 0xea, 0xa7, 0xe5, 0xd4, - 0xea, 0xa7, 0xe5, 0xd5, 0xea, 0xa7, 0xe5, 0xd4, 0xea, 0xa7, 0xe5, 0xd5, - 0xea, 0xa7, 0xe6, 0xd4, 0xea, 0xa7, 0xe6, 0xd5, 0xea, 0xa7, 0xe6, 0xd4, - 0xea, 0xa7, 0xe6, 0xd5, 0xea, 0xa7, 0xe7, 0xd4, 0xea, 0xa7, 0xe7, 0xd5, - 0xea, 0xa7, 0xe7, 0xd4, 0xea, 0xa7, 0xe7, 0xd5, 0xea, 0xa7, 0xe8, 0xd4, - 0xea, 0xa7, 0xe8, 0xd5, 0xea, 0xa7, 0xe8, 0xd4, 0xea, 0xa7, 0xe8, 0xd5, - 0xea, 0xa7, 0xe9, 0xd4, 0xea, 0xa7, 0xe9, 0xd5, 0xea, 0xa7, 0xe9, 0xd4, - 0xea, 0xa7, 0xe9, 0xd4, 0xea, 0xa7, 0xea, 0xd4, 0xea, 0xa7, 0xea, 0xd4, - 0xea, 0xa7, 0xea, 0xd4, 0xea, 0xa7, 0xea, 0xd4, 0xea, 0xa7, 0xea, 0xd4, - 0xeb, 0xa7, 0xea, 0xd4, 0xeb, 0xa7, 0xea, 0xd4, 0xeb, 0xa5, 0xea, 0xd4, - 0xeb, 0xa7, 0xed, 0xd4, 0xec, 0xa8, 0xed, 0xd4, 0xec, 0xa7, 0xed, 0xd4, - 0xec, 0xa8, 0xed, 0xd4, 0xec, 0xa7, 0xed, 0xd4, 0xec, 0xa8, 0xed, 0xd4, - 0xed, 0xa7, 0xed, 0xd4, 0xed, 0xa7, 0xed, 0xd4, 0xed, 0xa7, 0xed, 0xd4, - 0xed, 0xa7, 0xee, 0xd4, 0xed, 0xa7, 0xee, 0xd4, 0xed, 0xa7, 0xee, 0xd4, - 0xed, 0xa7, 0xee, 0xd4, 0xed, 0xa7, 0xef, 0xd4, 0xed, 0xa7, 0xef, 0xd4, - 0xed, 0xa7, 0xef, 0xd4, 0xed, 0xa7, 0xef, 0xd4, 0xed, 0xa7, 0xf0, 0xd4, - 0xed, 0xa7, 0xf0, 0xd4, 0xed, 0xa7, 0xf0, 0xd4, 0xed, 0xa7, 0xf0, 0xd4, - 0xed, 0xa7, 0xf1, 0xd4, 0xed, 0xa7, 0xf1, 0xd4, 0xed, 0xa7, 0xf1, 0xd1, - 0xed, 0xa7, 0xf1, 0xd4, 0xed, 0xa7, 0xf2, 0xd1, 0xed, 0xa7, 0xf2, 0xd4, - 0xed, 0xa7, 0xf2, 0xd1, 0xed, 0xa7, 0xf2, 0xd4, 0xed, 0xa7, 0xf2, 0xd1, - 0xed, 0xa7, 0xf3, 0xd4, 0xed, 0xa7, 0xf3, 0xd1, 0xed, 0xa7, 0xf3, 0xd4, - 0xed, 0xa7, 0xf3, 0xd1, 0xed, 0xa7, 0xf4, 0xd4, 0xed, 0xa7, 0xf4, 0xd1, - 0xed, 0xa7, 0xf4, 0xd4, 0xed, 0xa7, 0xf4, 0xd1, 0xed, 0xa7, 0xf5, 0xd4, - 0xed, 0xa7, 0xf5, 0xd1, 0xed, 0xa7, 0xf5, 0xd4, 0xed, 0xa7, 0xf5, 0xd1, - 0xed, 0xa7, 0xf5, 0xd4, 0xed, 0xa7, 0xf6, 0xd1, 0xed, 0xa7, 0xf6, 0xd4, - 0xed, 0xa7, 0xf6, 0xd1, 0xed, 0xa7, 0xf6, 0xd4, 0xed, 0xa7, 0xf7, 0xd1, - 0xed, 0xa7, 0xf7, 0xd4, 0xed, 0xa7, 0xf7, 0xd1, 0xed, 0xa7, 0xf7, 0xc7, - 0xf7, 0xa7, 0xf8, 0xc7, 0xf7, 0xa7, 0xf8, 0xc7, 0xf7, 0xa7, 0xf8, 0xc7, - 0xf7, 0xa7, 0xf8, 0xc7, 0xf7, 0xa7, 0xf8, 0xc7, 0xf7, 0xa7, 0xf9, 0xc7, - 0xf7, 0xa7, 0xf9, 0xc7, 0xf7, 0xa7, 0xf9, 0xc7, 0xf7, 0xa7, 0xf9, 0xc7, - 0xf7, 0xa7, 0xfa, 0xc7, 0xf7, 0xa7, 0xfa, 0xc7, 0xf7, 0xa7, 0xfa, 0xc7, - 0xf7, 0xa7, 0xfa, 0xc7, 0xf7, 0xa7, 0xfa, 0xc7, 0xf7, 0xa7, 0xfb, 0xc7, - 0xf7, 0xa7, 0xfb, 0xc7, 0xf7, 0xa7, 0xfb, 0xc7, 0xf7, 0xa7, 0xfb, 0xc7, - 0xf7, 0xa7, 0xfc, 0xc7, 0xf7, 0xa7, 0xfc, 0xc7, 0xf7, 0xa7, 0xfc, 0xc7, - 0xf7, 0xa7, 0xfc, 0xc7, 0xf7, 0xa7, 0xfc, 0xc7, 0xf7, 0xa7, 0xfd, 0xc7, - 0xf7, 0xa7, 0xfd, 0xc7, 0xf7, 0xa7, 0xfd, 0xc7, 0xf7, 0xa7, 0xfd, 0xc7, - 0xf7, 0xa7, 0xfe, 0xc7, 0xf7, 0xa7, 0xfe, 0xc7, 0xf7, 0xa7, 0xfe, 0xc7, - 0xf7, 0xa7, 0xfe, 0xc7, 0xf7, 0xa7, 0xfe, 0xc7, 0xf7, 0xa7, 0xff, 0xc7, - 0xf7, 0xa7, 0xff, 0xc7, 0xf7, 0xa7, 0x03, 0xd8, 0x8b, 0xa8, 0x0a, 0xda, - 0x8b, 0xa8, 0x0f, 0xd8, 0x8b, 0xa8, 0x14, 0xda, 0x8b, 0xa8, 0x17, 0xd8, - 0x8b, 0xa8, 0x1b, 0xda, 0x8b, 0xa8, 0x1e, 0xd8, 0x8b, 0xa8, 0x20, 0xda, - 0x8b, 0xa8, 0x23, 0xd8, 0x8b, 0xa8, 0x25, 0xda, 0x8b, 0xa8, 0x27, 0xd8, - 0x8b, 0xa8, 0x29, 0xda, 0x8b, 0xa8, 0x2b, 0xd8, 0x8b, 0xa8, 0x2d, 0xda, - 0x8b, 0xa8, 0x2f, 0xd8, 0x8b, 0xa8, 0x31, 0xda, 0x8b, 0xa8, 0x32, 0xd8, - 0x8b, 0xa8, 0x34, 0xda, 0x8b, 0xa8, 0x35, 0xd8, 0x8b, 0xa8, 0x37, 0xda, - 0x8b, 0xa8, 0x38, 0xd8, 0x8b, 0xa8, 0x3a, 0xda, 0x8b, 0xa8, 0x3b, 0xd8, - 0x8b, 0xa8, 0x3c, 0xda, 0x8b, 0xa8, 0x3e, 0xd8, 0x8b, 0xa8, 0x3f, 0xda, - 0x8b, 0xa8, 0x40, 0xd8, 0x8b, 0xa8, 0x42, 0xda, 0x8b, 0xa8, 0x43, 0xd8, - 0x8b, 0xa8, 0x44, 0xd6, 0x8c, 0xa8, 0x45, 0xd8, 0x8b, 0xa8, 0x46, 0xd6, - 0x8c, 0xa8, 0x47, 0xd8, 0x8b, 0xa8, 0x48, 0xd6, 0x8c, 0xa8, 0x49, 0xd8, - 0x8b, 0xa8, 0x4a, 0xd6, 0x8c, 0xa8, 0x4b, 0xd8, 0x8b, 0xa8, 0x4c, 0xd6, - 0x8c, 0xa8, 0x4d, 0xd8, 0x8b, 0xa8, 0x4e, 0xd6, 0x8c, 0xa8, 0x4f, 0xd8, - 0x8b, 0xa8, 0x50, 0xd6, 0x8c, 0xa8, 0x51, 0xd8, 0x8b, 0xa8, 0x52, 0xd6, - 0x8c, 0xa8, 0x53, 0xd8, 0x8b, 0xa8, 0x54, 0xd6, 0x8c, 0xa8, 0x55, 0xd8, - 0x8b, 0xa8, 0x56, 0xd6, 0x8c, 0xa8, 0x57, 0xd8, 0x8b, 0xa8, 0x58, 0xd6, - 0x8c, 0xa8, 0x58, 0xd8, 0x8b, 0xa8, 0x59, 0xd6, 0x8c, 0xa8, 0x5a, 0xd8, - 0x8b, 0xa8, 0x5b, 0xd6, 0x8c, 0xa8, 0x5c, 0xd8, 0x8b, 0xa8, 0x5d, 0xd6, - 0x8c, 0xa8, 0x5d, 0xd8, 0x8b, 0xa8, 0x5e, 0xd6, 0x8c, 0xa8, 0x5f, 0xd8, - 0x8b, 0xa8, 0x60, 0xd6, 0x8c, 0xa8, 0x60, 0xd8, 0x8b, 0xa8, 0x61, 0xd6, - 0x8c, 0xa8, 0x62, 0xd8, 0x8b, 0xa8, 0x63, 0xd6, 0x8c, 0xa8, 0x63, 0xd8, - 0x8b, 0xa8, 0x64, 0xd6, 0x8c, 0xa8, 0x65, 0xd8, 0x8b, 0xa8, 0x66, 0xd6, - 0x8c, 0xa8, 0x66, 0xd8, 0x8b, 0xa8, 0x67, 0xd6, 0x8c, 0xa8, 0x68, 0xd4, - 0x8c, 0xa8, 0x68, 0xd6, 0x8c, 0xa8, 0x69, 0xd4, 0x8c, 0xa8, 0x6a, 0xd6, - 0x8c, 0xa8, 0x6a, 0xd4, 0x8c, 0xa8, 0x6b, 0xd6, 0x8c, 0xa8, 0x6c, 0xd4, - 0x8c, 0xa8, 0x6c, 0xd6, 0x8c, 0xa8, 0x6d, 0xd4, 0x8c, 0xa8, 0x6e, 0xd6, - 0x8c, 0xa8, 0x6e, 0xd4, 0x8c, 0xa8, 0x6f, 0xd6, 0x8c, 0xa8, 0x70, 0xd4, - 0x8c, 0xa8, 0x70, 0xd6, 0x8c, 0xa8, 0x71, 0xd4, 0x8c, 0xa8, 0x72, 0xd6, - 0x8c, 0xa8, 0x72, 0xd4, 0x8c, 0xa8, 0x73, 0xd6, 0x8c, 0xa8, 0x73, 0xd4, - 0x8c, 0xa8, 0x74, 0xd6, 0x8c, 0xa8, 0x75, 0xd4, 0x8c, 0xa8, 0x75, 0xd6, - 0x8c, 0xa8, 0x76, 0xd4, 0x8c, 0xa8, 0x76, 0xd6, 0x8c, 0xa8, 0x77, 0xd4, - 0x8c, 0xa8, 0x78, 0xd6, 0x8c, 0xa8, 0x78, 0xd4, 0x8c, 0xa8, 0x79, 0xd6, - 0x8c, 0xa8, 0x79, 0xd4, 0x8c, 0xa8, 0x7a, 0xd6, 0x8c, 0xa8, 0x7a, 0xd4, - 0x8c, 0xa8, 0x7b, 0xd6, 0x8c, 0xa8, 0x7c, 0xd4, 0x8c, 0xa8, 0x7c, 0xd6, - 0x8c, 0xa8, 0x7d, 0xd4, 0x8c, 0xa8, 0x7d, 0xd6, 0x8c, 0xa8, 0x7e, 0xd4, - 0x8c, 0xa8, 0x7e, 0xd6, 0x8c, 0xa8, 0x7f, 0xd4, 0x8c, 0xa8, 0x7f, 0xd6, - 0x8c, 0xa8, 0x80, 0xd4, 0x8c, 0xa8, 0x81, 0xd6, 0x8c, 0xa8, 0x81, 0xd4, - 0x8c, 0xa8, 0x82, 0xd6, 0x8c, 0xa8, 0x82, 0xd4, 0x8c, 0xa8, 0x83, 0xd6, - 0x8c, 0xa8, 0x83, 0xd4, 0x8c, 0xa8, 0x84, 0xd6, 0x8c, 0xa8, 0x84, 0xd4, - 0x8c, 0xa8, 0x85, 0xd4, 0x8d, 0xa8, 0x85, 0xd4, 0x8c, 0xa8, 0x86, 0xd4, - 0x8d, 0xa8, 0x86, 0xd4, 0x8c, 0xa8, 0x87, 0xd4, 0x8d, 0xa8, 0x87, 0xd4, - 0x8c, 0xa8, 0x88, 0xd4, 0x8d, 0xa8, 0x88, 0xd4, 0x8c, 0xa8, 0x89, 0xd4, - 0x8d, 0xa8, 0x89, 0xd4, 0x8c, 0xa8, 0x8a, 0xd4, 0x8d, 0xa8, 0x8a, 0xd4, - 0x8c, 0xa8, 0x8b, 0xd4, 0x8d, 0xa8, 0x8b, 0xd4, 0x8c, 0xa8, 0x8c, 0xd4, - 0x8d, 0xa8, 0x8c, 0xd4, 0x8c, 0xa8, 0x8c, 0xd4, 0x8d, 0xa8, 0x8c, 0xd4, - 0x8d, 0xa8, 0x8c, 0xd4, 0x8e, 0xa8, 0x8c, 0xd4, 0x8e, 0xa8, 0x8c, 0xd4, - 0x8e, 0xa8, 0x8c, 0xd4, 0x8f, 0xa8, 0x8c, 0xd4, 0x8f, 0xa8, 0x8c, 0xd4, - 0x90, 0xa8, 0x8d, 0xd4, 0x90, 0xa5, 0x8c, 0xd4, 0x91, 0xa8, 0x8d, 0xd4, - 0x91, 0xa5, 0x8c, 0xd4, 0x92, 0xa8, 0x8d, 0xd4, 0x92, 0xa5, 0x8c, 0xd4, - 0x93, 0xa8, 0x8d, 0xd4, 0x93, 0xa5, 0x8c, 0xd4, 0x94, 0xa8, 0x8d, 0xd4, - 0x94, 0xa5, 0x8c, 0xd4, 0x94, 0xa8, 0x8d, 0xd4, 0x95, 0xa5, 0x8c, 0xd4, - 0x95, 0xa8, 0x8d, 0xd4, 0x96, 0xa5, 0x8c, 0xd4, 0x96, 0xa8, 0x8d, 0xd4, - 0x97, 0xa5, 0x8c, 0xd4, 0x97, 0xa8, 0x8d, 0xd4, 0x98, 0xa5, 0x8c, 0xd4, - 0x98, 0xa8, 0x8d, 0xd4, 0x98, 0xa5, 0x8c, 0xd4, 0x99, 0xa8, 0x8d, 0xd4, - 0x99, 0xa5, 0x8c, 0xd4, 0x9a, 0xa8, 0x8d, 0xd4, 0x9a, 0xa5, 0x8c, 0xd4, - 0x9a, 0xa8, 0x8d, 0xd4, 0x9b, 0xa5, 0x8c, 0xd4, 0x9b, 0xa8, 0x8d, 0xd4, - 0x9c, 0xa5, 0x9f, 0xd4, 0x9c, 0x97, 0x9f, 0xd4, 0x9d, 0x97, 0x9f, 0xd4, - 0x9d, 0x97, 0x9f, 0xd4, 0x9d, 0x97, 0x9f, 0xd4, 0x9e, 0x97, 0x9f, 0xd4, - 0x9e, 0x97, 0x9f, 0xd4, 0x9f, 0x97, 0xa3, 0xd4, 0x9f, 0x98, 0x9f, 0xd4, - 0x9f, 0x97, 0xa3, 0xd4, 0xa0, 0x98, 0xa0, 0xd4, 0xa0, 0x97, 0xa3, 0xd4, - 0xa1, 0x98, 0xa1, 0xd4, 0xa1, 0x97, 0xa3, 0xd4, 0xa1, 0x98, 0xa2, 0xd4, - 0xa2, 0x97, 0xa3, 0xd4, 0xa2, 0x98, 0xa3, 0xd4, 0xa3, 0x97, 0xa3, 0xd4, - 0xa3, 0x98, 0xa3, 0xd4, 0xa3, 0x97, 0xa3, 0xd4, 0xa4, 0x98, 0xa3, 0xd4, - 0xa4, 0x97, 0xa3, 0xd4, 0xa5, 0x98, 0xa3, 0xd4, 0xa5, 0x97, 0xa3, 0xd4, - 0xa5, 0x98, 0xa3, 0xd4, 0xa6, 0x97, 0xa3, 0xd4, 0xa6, 0x98, 0xa3, 0xd4, - 0xa6, 0x97, 0xa3, 0xd4, 0xa7, 0x98, 0xa3, 0xd4, 0xa7, 0x97, 0xa3, 0xd4, - 0xa8, 0x98, 0xa3, 0xd4, 0xa8, 0x97, 0xa3, 0xd4, 0xa8, 0x98, 0xa3, 0xd4, - 0xa9, 0x97, 0xa3, 0xd4, 0xa9, 0x98, 0xa3, 0xd4, 0xaa, 0x97, 0xa3, 0xd4, - 0xaa, 0x98, 0xa3, 0xd4, 0xaa, 0x97, 0xa3, 0xd4, 0xab, 0x98, 0xa3, 0xd4, - 0xab, 0x97, 0xa3, 0xd4, 0xab, 0x98, 0xa3, 0xd4, 0xac, 0x97, 0xa3, 0xd4, - 0xac, 0x98, 0xa3, 0xd4, 0xac, 0x97, 0xa3, 0xd4, 0xad, 0x98, 0xa3, 0xd4, - 0xad, 0x97, 0xa3, 0xd4, 0xae, 0x98, 0xa3, 0xd4, 0xae, 0x97, 0xa3, 0xd4, - 0xae, 0x98, 0xa3, 0xd4, 0xaf, 0x97, 0xa3, 0xd4, 0xaf, 0x98, 0xa3, 0xd4, - 0xaf, 0x97, 0xa3, 0xd4, 0xb0, 0x98, 0xa3, 0xd4, 0xb0, 0x97, 0xa3, 0xd4, - 0xb0, 0x98, 0xa3, 0xd4, 0xb1, 0x97, 0xa3, 0xd4, 0xb1, 0x98, 0xa3, 0xd4, - 0xb2, 0x97, 0xa3, 0xd4, 0xb2, 0x98, 0xa3, 0xd4, 0xb2, 0x97, 0xa3, 0xd4, - 0xb3, 0x98, 0xa3, 0xd4, 0xb3, 0x97, 0xa3, 0xd4, 0xb3, 0x98, 0xa3, 0xd4, - 0xb4, 0x97, 0xa3, 0xd4, 0xb4, 0x98, 0xa3, 0xd4, 0xb4, 0x97, 0xa3, 0xd4, - 0xb5, 0x98, 0xa3, 0xd4, 0xb5, 0x97, 0xa3, 0xd4, 0xb5, 0x98, 0xa3, 0xd4, - 0xb6, 0x97, 0xa3, 0xd4, 0xb6, 0x98, 0xa3, 0xd4, 0xb6, 0x97, 0xa3, 0xd4, - 0xb7, 0x98, 0xa3, 0xd4, 0xb7, 0x97, 0xa3, 0xd4, 0xb7, 0x98, 0xa3, 0xd4, - 0xb8, 0x97, 0xa3, 0xd4, 0xb8, 0x98, 0xa3, 0xd4, 0xb8, 0x97, 0xa3, 0xd4, - 0xb9, 0x98, 0xa3, 0xd4, 0xb9, 0x97, 0xa3, 0xd4, 0xb9, 0x98, 0xa3, 0xd4, - 0xba, 0x97, 0xa3, 0xd4, 0xba, 0x98, 0xa3, 0xd4, 0xba, 0x97, 0xa3, 0xd4, - 0xbb, 0x98, 0xd1, 0xd4, 0xbb, 0xb0, 0xd1, 0xd4, 0xbb, 0xad, 0xd1, 0xd4, - 0xbc, 0xb0, 0xd1, 0xd4, 0xbc, 0xad, 0xd1, 0xd4, 0xbc, 0xb0, 0xd1, 0xd4, - 0xbd, 0xad, 0xd1, 0xd4, 0xbd, 0xb0, 0xd1, 0xd4, 0xbd, 0xad, 0xd1, 0xd4, - 0xbe, 0xb0, 0xd1, 0xd4, 0xbe, 0xad, 0xd1, 0xd4, 0xbe, 0xb0, 0xd1, 0xd4, - 0xbf, 0xad, 0xd1, 0xd4, 0xbf, 0xb0, 0xd1, 0xd4, 0xbf, 0xad, 0xd2, 0xd4, - 0xc0, 0xaa, 0xd1, 0xd4, 0xc0, 0xad, 0xd2, 0xd4, 0xc0, 0xaa, 0xd1, 0xd4, - 0xc1, 0xad, 0xd2, 0xd4, 0xc1, 0xaa, 0xd1, 0xd4, 0xc1, 0xad, 0xd2, 0xd4, - 0xc1, 0xaa, 0xd1, 0xd4, 0xc2, 0xad, 0xd2, 0xd4, 0xc2, 0xaa, 0xd1, 0xd4, - 0xc2, 0xad, 0xd2, 0xd4, 0xc3, 0xaa, 0xd1, 0xd4, 0xc3, 0xad, 0xd2, 0xd4, - 0xc3, 0xaa, 0xd1, 0xd4, 0xc4, 0xad, 0xd2, 0xd4, 0xc4, 0xaa, 0xd1, 0xd4, - 0xc4, 0xad, 0xd2, 0xd4, 0xc5, 0xaa, 0xd1, 0xd4, 0xc5, 0xad, 0xd2, 0xd4, - 0xc5, 0xaa, 0xd1, 0xd4, 0xc6, 0xad, 0xd2, 0xd4, 0xc6, 0xaa, 0xd1, 0xd4, - 0xc6, 0xad, 0xd2, 0xd4, 0xc6, 0xaa, 0xd1, 0xd4, 0xc7, 0xad, 0xd2, 0xd4, - 0xc7, 0xaa, 0xd1, 0xd4, 0xc7, 0xad, 0xd2, 0xd4, 0xc8, 0xaa, 0xd1, 0xd4, - 0xc8, 0xad, 0xd2, 0xd4, 0xc8, 0xaa, 0xd1, 0xd4, 0xc9, 0xad, 0xd2, 0xd4, - 0xc9, 0xaa, 0xd1, 0xd4, 0xc9, 0xad, 0xd2, 0xd4, 0xc9, 0xaa, 0xd1, 0xd4, - 0xca, 0xad, 0xd2, 0xd4, 0xca, 0xaa, 0xd1, 0xd4, 0xca, 0xad, 0xd2, 0xd4, - 0xcb, 0xaa, 0xd2, 0xd4, 0xcb, 0xa8, 0xd2, 0xd4, 0xcb, 0xaa, 0xd2, 0xd4, - 0xcc, 0xa8, 0xd2, 0xd4, 0xcc, 0xaa, 0xd2, 0xd4, 0xcc, 0xa8, 0xd2, 0xd4, - 0xcc, 0xaa, 0xd2, 0xd4, 0xcd, 0xa8, 0xd2, 0xd4, 0xcd, 0xaa, 0xd2, 0xd4, - 0xcd, 0xa8, 0xd2, 0xd4, 0xce, 0xaa, 0xd2, 0xd4, 0xce, 0xa8, 0xd2, 0xd4, - 0xce, 0xaa, 0xd2, 0xd4, 0xce, 0xa8, 0xd2, 0xd4, 0xcf, 0xaa, 0xd2, 0xd4, - 0xcf, 0xa8, 0xd2, 0xd4, 0xcf, 0xaa, 0xd2, 0xd4, 0xd0, 0xa8, 0xd2, 0xd4, - 0xd0, 0xaa, 0xd2, 0xd4, 0xd0, 0xa8, 0xd2, 0xd4, 0xd0, 0xaa, 0xd2, 0xd4, - 0xd1, 0xa8, 0xd2, 0xd4, 0xd1, 0xa8, 0xd2, 0xd4, 0xd1, 0xa8, 0xd2, 0xd4, - 0xd2, 0xa8, 0xd2, 0xd3, 0xd2, 0xa8, 0xd2, 0xd4, 0xd2, 0xa8, 0xd2, 0xd3, - 0xd2, 0xa8, 0xd3, 0xd4, 0xd2, 0xa8, 0xd3, 0xd3, 0xd2, 0xa8, 0xd3, 0xd4, - 0xd2, 0xa8, 0xd4, 0xd3, 0xd2, 0xa8, 0xd4, 0xd4, 0xd2, 0xa8, 0xd4, 0xd3, - 0xd2, 0xa8, 0xd4, 0xd4, 0xd2, 0xa8, 0xd5, 0xd3, 0xd2, 0xa8, 0xd5, 0xd4, - 0xd2, 0xa8, 0xd5, 0xd3, 0xd2, 0xa8, 0xd6, 0xd4, 0xd2, 0xa8, 0xd6, 0xd3, - 0xd2, 0xa8, 0xd6, 0xd4, 0xd2, 0xa8, 0xd6, 0xd3, 0xd2, 0xa8, 0xd7, 0xd2, - 0xd2, 0xa8, 0xd7, 0xd3, 0xd2, 0xa8, 0xd7, 0xd2, 0xd2, 0xa8, 0xd7, 0xd3, - 0xd2, 0xa8, 0xd8, 0xd2, 0xd2, 0xa8, 0xd8, 0xd3, 0xd2, 0xa8, 0xd8, 0xd2, - 0xd2, 0xa8, 0xd9, 0xd3, 0xd2, 0xa8, 0xd9, 0xd2, 0xd2, 0xa8, 0xd9, 0xd3, - 0xd2, 0xa8, 0xd9, 0xd2, 0xd2, 0xa8, 0xda, 0xd3, 0xd2, 0xa8, 0xda, 0xd2, - 0xd2, 0xa8, 0xda, 0xd3, 0xd2, 0xa8, 0xda, 0xd2, 0xd2, 0xa8, 0xdb, 0xd3, - 0xd2, 0xa8, 0xdb, 0xd2, 0xd2, 0xa8, 0xdb, 0xd3, 0xd2, 0xa8, 0xdb, 0xd2, - 0xd2, 0xa8, 0xdc, 0xd3, 0xd2, 0xa8, 0xdc, 0xc9, 0xde, 0xa8, 0xdc, 0xc9, - 0xde, 0xa8, 0xdd, 0xc9, 0xde, 0xa8, 0xdd, 0xc9, 0xde, 0xa8, 0xdd, 0xc9, - 0xde, 0xa8, 0xdd, 0xc9, 0xde, 0xa8, 0xde, 0xca, 0xe1, 0xa8, 0xde, 0xc9, - 0xde, 0xa8, 0xde, 0xca, 0xe1, 0xa8, 0xde, 0xca, 0xe1, 0xa8, 0xdf, 0xca, - 0xe1, 0xa8, 0xdf, 0xca, 0xe1, 0xa8, 0xdf, 0xca, 0xe1, 0xa8, 0xdf, 0xca, - 0xe1, 0xa8, 0xe0, 0xca, 0xe1, 0xa8, 0xe0, 0xca, 0xe1, 0xa8, 0xe0, 0xca, - 0xe1, 0xa8, 0xe1, 0xca, 0xe1, 0xa8, 0xe1, 0xca, 0xe1, 0xa8, 0xe1, 0xcb, - 0xe4, 0xa8, 0xe1, 0xcb, 0xe4, 0xa8, 0xe2, 0xcb, 0xe4, 0xa8, 0xe2, 0xd5, - 0xea, 0xa8, 0xe2, 0xd6, 0xea, 0xa8, 0xe2, 0xd5, 0xea, 0xa8, 0xe3, 0xd6, - 0xea, 0xa8, 0xe3, 0xd5, 0xea, 0xa8, 0xe3, 0xd6, 0xea, 0xa8, 0xe3, 0xd5, - 0xea, 0xa8, 0xe4, 0xd6, 0xea, 0xa8, 0xe4, 0xd5, 0xea, 0xa8, 0xe4, 0xd6, - 0xea, 0xa8, 0xe4, 0xd5, 0xea, 0xa8, 0xe5, 0xd6, 0xea, 0xa8, 0xe5, 0xd5, - 0xea, 0xa8, 0xe5, 0xd6, 0xea, 0xa8, 0xe5, 0xd5, 0xea, 0xa8, 0xe6, 0xd6, - 0xea, 0xa8, 0xe6, 0xd5, 0xea, 0xa8, 0xe6, 0xd4, 0xea, 0xa8, 0xe6, 0xd5, - 0xea, 0xa8, 0xe7, 0xd4, 0xea, 0xa8, 0xe7, 0xd5, 0xea, 0xa8, 0xe7, 0xd4, - 0xea, 0xa8, 0xe7, 0xd5, 0xea, 0xa8, 0xe8, 0xd4, 0xea, 0xa8, 0xe8, 0xd5, - 0xea, 0xa8, 0xe8, 0xd4, 0xea, 0xa8, 0xe8, 0xd5, 0xea, 0xa8, 0xe9, 0xd4, - 0xea, 0xa8, 0xe9, 0xd5, 0xea, 0xa8, 0xe9, 0xd4, 0xea, 0xa8, 0xe9, 0xd4, - 0xea, 0xa8, 0xea, 0xd4, 0xea, 0xa8, 0xea, 0xd4, 0xea, 0xa8, 0xea, 0xd4, - 0xea, 0xa8, 0xea, 0xd4, 0xea, 0xa8, 0xea, 0xd4, 0xeb, 0xa8, 0xea, 0xd4, - 0xeb, 0xa8, 0xea, 0xd4, 0xeb, 0xa6, 0xea, 0xd4, 0xeb, 0xa8, 0xed, 0xd4, - 0xec, 0xa9, 0xed, 0xd4, 0xec, 0xa8, 0xed, 0xd4, 0xec, 0xa9, 0xed, 0xd4, - 0xec, 0xa8, 0xed, 0xd4, 0xec, 0xa9, 0xed, 0xd4, 0xed, 0xa8, 0xed, 0xd4, - 0xed, 0xa8, 0xed, 0xd4, 0xed, 0xa8, 0xed, 0xd4, 0xed, 0xa8, 0xee, 0xd4, - 0xed, 0xa8, 0xee, 0xd4, 0xed, 0xa8, 0xee, 0xd4, 0xed, 0xa8, 0xee, 0xd4, - 0xed, 0xa8, 0xef, 0xd4, 0xed, 0xa8, 0xef, 0xd4, 0xed, 0xa8, 0xef, 0xd4, - 0xed, 0xa8, 0xef, 0xd4, 0xed, 0xa8, 0xf0, 0xd4, 0xed, 0xa8, 0xf0, 0xd4, - 0xed, 0xa8, 0xf0, 0xd4, 0xed, 0xa8, 0xf0, 0xd4, 0xed, 0xa8, 0xf1, 0xd4, - 0xed, 0xa8, 0xf1, 0xd4, 0xed, 0xa8, 0xf1, 0xd2, 0xed, 0xa8, 0xf1, 0xd4, - 0xed, 0xa8, 0xf2, 0xd2, 0xed, 0xa8, 0xf2, 0xd4, 0xed, 0xa8, 0xf2, 0xd2, - 0xed, 0xa8, 0xf2, 0xd4, 0xed, 0xa8, 0xf2, 0xd2, 0xed, 0xa8, 0xf3, 0xd4, - 0xed, 0xa8, 0xf3, 0xd2, 0xed, 0xa8, 0xf3, 0xd4, 0xed, 0xa8, 0xf3, 0xd2, - 0xed, 0xa8, 0xf4, 0xd4, 0xed, 0xa8, 0xf4, 0xd2, 0xed, 0xa8, 0xf4, 0xd4, - 0xed, 0xa8, 0xf4, 0xd2, 0xed, 0xa8, 0xf5, 0xd4, 0xed, 0xa8, 0xf5, 0xd2, - 0xed, 0xa8, 0xf5, 0xd4, 0xed, 0xa8, 0xf5, 0xd2, 0xed, 0xa8, 0xf5, 0xd4, - 0xed, 0xa8, 0xf6, 0xd2, 0xed, 0xa8, 0xf6, 0xd4, 0xed, 0xa8, 0xf6, 0xd2, - 0xed, 0xa8, 0xf6, 0xd4, 0xed, 0xa8, 0xf7, 0xd2, 0xed, 0xa8, 0xf7, 0xd4, - 0xed, 0xa8, 0xf7, 0xd2, 0xed, 0xa8, 0xf7, 0xc7, 0xf7, 0xa8, 0xf8, 0xc7, - 0xf7, 0xa8, 0xf8, 0xc7, 0xf7, 0xa8, 0xf8, 0xc7, 0xf7, 0xa8, 0xf8, 0xc7, - 0xf7, 0xa8, 0xf8, 0xc7, 0xf7, 0xa8, 0xf9, 0xc7, 0xf7, 0xa8, 0xf9, 0xc7, - 0xf7, 0xa8, 0xf9, 0xc7, 0xf7, 0xa8, 0xf9, 0xc7, 0xf7, 0xa8, 0xfa, 0xc7, - 0xf7, 0xa8, 0xfa, 0xc7, 0xf7, 0xa8, 0xfa, 0xc7, 0xf7, 0xa8, 0xfa, 0xc7, - 0xf7, 0xa8, 0xfa, 0xc7, 0xf7, 0xa8, 0xfb, 0xc7, 0xf7, 0xa8, 0xfb, 0xc7, - 0xf7, 0xa8, 0xfb, 0xc7, 0xf7, 0xa8, 0xfb, 0xc7, 0xf7, 0xa8, 0xfc, 0xc7, - 0xf7, 0xa8, 0xfc, 0xc7, 0xf7, 0xa8, 0xfc, 0xc7, 0xf7, 0xa8, 0xfc, 0xc7, - 0xf7, 0xa8, 0xfc, 0xc7, 0xf7, 0xa8, 0xfd, 0xc7, 0xf7, 0xa8, 0xfd, 0xc7, - 0xf7, 0xa8, 0xfd, 0xc7, 0xf7, 0xa8, 0xfd, 0xc7, 0xf7, 0xa8, 0xfe, 0xc7, - 0xf7, 0xa8, 0xfe, 0xc7, 0xf7, 0xa8, 0xfe, 0xc7, 0xf7, 0xa8, 0xfe, 0xc7, - 0xf7, 0xa8, 0xfe, 0xc7, 0xf7, 0xa8, 0xff, 0xc7, 0xf7, 0xa8, 0xff, 0xc7, - 0xf7, 0xa8, 0x03, 0xd8, 0x8b, 0xa8, 0x0a, 0xda, 0x8b, 0xa8, 0x0f, 0xd8, - 0x8b, 0xa8, 0x14, 0xda, 0x8b, 0xa8, 0x17, 0xd8, 0x8b, 0xa8, 0x1b, 0xda, - 0x8b, 0xa8, 0x1e, 0xd8, 0x8b, 0xa8, 0x20, 0xda, 0x8b, 0xa8, 0x23, 0xd8, - 0x8b, 0xa8, 0x25, 0xda, 0x8b, 0xa8, 0x27, 0xd8, 0x8b, 0xa8, 0x29, 0xda, - 0x8b, 0xa8, 0x2b, 0xd8, 0x8b, 0xa8, 0x2d, 0xda, 0x8b, 0xa8, 0x2f, 0xd8, - 0x8b, 0xa8, 0x31, 0xda, 0x8b, 0xa8, 0x32, 0xd8, 0x8b, 0xa8, 0x34, 0xda, - 0x8b, 0xa8, 0x35, 0xd8, 0x8b, 0xa8, 0x37, 0xda, 0x8b, 0xa8, 0x38, 0xd8, - 0x8b, 0xa8, 0x3a, 0xda, 0x8b, 0xa8, 0x3b, 0xd8, 0x8b, 0xa8, 0x3c, 0xda, - 0x8b, 0xa8, 0x3e, 0xd8, 0x8b, 0xa8, 0x3f, 0xda, 0x8b, 0xa8, 0x40, 0xd8, - 0x8b, 0xa8, 0x42, 0xda, 0x8b, 0xa8, 0x43, 0xd8, 0x8b, 0xa8, 0x44, 0xda, - 0x8b, 0xa8, 0x45, 0xd8, 0x8b, 0xa8, 0x46, 0xda, 0x8b, 0xa8, 0x47, 0xd8, - 0x8b, 0xa8, 0x48, 0xda, 0x8b, 0xa8, 0x49, 0xd8, 0x8b, 0xa8, 0x4a, 0xda, - 0x8b, 0xa8, 0x4b, 0xd8, 0x8b, 0xa8, 0x4c, 0xda, 0x8b, 0xa8, 0x4d, 0xd8, - 0x8b, 0xa8, 0x4e, 0xda, 0x8b, 0xa8, 0x4f, 0xd8, 0x8b, 0xa8, 0x50, 0xda, - 0x8b, 0xa8, 0x51, 0xd8, 0x8b, 0xa8, 0x52, 0xda, 0x8b, 0xa8, 0x53, 0xd8, - 0x8b, 0xa8, 0x54, 0xda, 0x8b, 0xa8, 0x55, 0xd8, 0x8b, 0xa8, 0x56, 0xda, - 0x8b, 0xa8, 0x57, 0xd8, 0x8b, 0xa8, 0x58, 0xd6, 0x8c, 0xa8, 0x58, 0xd8, - 0x8b, 0xa8, 0x59, 0xd6, 0x8c, 0xa8, 0x5a, 0xd8, 0x8b, 0xa8, 0x5b, 0xd6, - 0x8c, 0xa8, 0x5c, 0xd8, 0x8b, 0xa8, 0x5d, 0xd6, 0x8c, 0xa8, 0x5d, 0xd8, - 0x8b, 0xa8, 0x5e, 0xd6, 0x8c, 0xa8, 0x5f, 0xd8, 0x8b, 0xa8, 0x60, 0xd6, - 0x8c, 0xa8, 0x60, 0xd8, 0x8b, 0xa8, 0x61, 0xd6, 0x8c, 0xa8, 0x62, 0xd8, - 0x8b, 0xa8, 0x63, 0xd6, 0x8c, 0xa8, 0x63, 0xd8, 0x8b, 0xa8, 0x64, 0xd6, - 0x8c, 0xa8, 0x65, 0xd8, 0x8b, 0xa8, 0x66, 0xd6, 0x8c, 0xa8, 0x66, 0xd8, - 0x8b, 0xa8, 0x67, 0xd6, 0x8c, 0xa8, 0x68, 0xd8, 0x8b, 0xa8, 0x68, 0xd6, - 0x8c, 0xa8, 0x69, 0xd8, 0x8b, 0xa8, 0x6a, 0xd6, 0x8c, 0xa8, 0x6a, 0xd8, - 0x8b, 0xa8, 0x6b, 0xd6, 0x8c, 0xa8, 0x6c, 0xd8, 0x8b, 0xa8, 0x6c, 0xd6, - 0x8c, 0xa8, 0x6d, 0xd8, 0x8b, 0xa8, 0x6e, 0xd6, 0x8c, 0xa8, 0x6e, 0xd8, - 0x8b, 0xa8, 0x6f, 0xd6, 0x8c, 0xa8, 0x70, 0xd8, 0x8b, 0xa8, 0x70, 0xd6, - 0x8c, 0xa8, 0x71, 0xd8, 0x8b, 0xa8, 0x72, 0xd6, 0x8c, 0xa8, 0x72, 0xd4, - 0x8c, 0xa8, 0x73, 0xd6, 0x8c, 0xa8, 0x73, 0xd4, 0x8c, 0xa8, 0x74, 0xd6, - 0x8c, 0xa8, 0x75, 0xd4, 0x8c, 0xa8, 0x75, 0xd6, 0x8c, 0xa8, 0x76, 0xd4, - 0x8c, 0xa8, 0x76, 0xd6, 0x8c, 0xa8, 0x77, 0xd4, 0x8c, 0xa8, 0x78, 0xd6, - 0x8c, 0xa8, 0x78, 0xd4, 0x8c, 0xa8, 0x79, 0xd6, 0x8c, 0xa8, 0x79, 0xd4, - 0x8c, 0xa8, 0x7a, 0xd6, 0x8c, 0xa8, 0x7a, 0xd4, 0x8c, 0xa8, 0x7b, 0xd6, - 0x8c, 0xa8, 0x7c, 0xd4, 0x8c, 0xa8, 0x7c, 0xd6, 0x8c, 0xa8, 0x7d, 0xd4, - 0x8c, 0xa8, 0x7d, 0xd6, 0x8c, 0xa8, 0x7e, 0xd4, 0x8c, 0xa8, 0x7e, 0xd6, - 0x8c, 0xa8, 0x7f, 0xd4, 0x8c, 0xa8, 0x7f, 0xd6, 0x8c, 0xa8, 0x80, 0xd4, - 0x8c, 0xa8, 0x81, 0xd6, 0x8c, 0xa8, 0x81, 0xd4, 0x8c, 0xa8, 0x82, 0xd6, - 0x8c, 0xa8, 0x82, 0xd4, 0x8c, 0xa8, 0x83, 0xd6, 0x8c, 0xa8, 0x83, 0xd4, - 0x8c, 0xa8, 0x84, 0xd6, 0x8c, 0xa8, 0x84, 0xd4, 0x8c, 0xa8, 0x85, 0xd4, - 0x8d, 0xa8, 0x85, 0xd4, 0x8c, 0xa8, 0x86, 0xd4, 0x8d, 0xa8, 0x86, 0xd4, - 0x8c, 0xa8, 0x87, 0xd4, 0x8d, 0xa8, 0x87, 0xd4, 0x8c, 0xa8, 0x88, 0xd4, - 0x8d, 0xa8, 0x88, 0xd4, 0x8c, 0xa8, 0x89, 0xd4, 0x8d, 0xa8, 0x89, 0xd4, - 0x8c, 0xa8, 0x8a, 0xd4, 0x8d, 0xa8, 0x8a, 0xd4, 0x8c, 0xa8, 0x8b, 0xd4, - 0x8d, 0xa8, 0x8b, 0xd4, 0x8c, 0xa8, 0x8c, 0xd4, 0x8d, 0xa8, 0x8c, 0xd4, - 0x8c, 0xa7, 0x8c, 0xd4, 0x8d, 0xa8, 0x8c, 0xd4, 0x8d, 0xa7, 0x8c, 0xd4, - 0x8e, 0xa8, 0x8c, 0xd4, 0x8e, 0xa7, 0x8c, 0xd4, 0x8e, 0xa8, 0x8c, 0xd4, - 0x8f, 0xa7, 0x8c, 0xd4, 0x8f, 0xa8, 0x8c, 0xd4, 0x90, 0xa7, 0x8c, 0xd4, - 0x90, 0xa8, 0x8c, 0xd4, 0x91, 0xa7, 0x8c, 0xd4, 0x91, 0xa8, 0x8c, 0xd4, - 0x92, 0xa7, 0x8c, 0xd4, 0x92, 0xa8, 0x8c, 0xd4, 0x93, 0xa7, 0x8c, 0xd4, - 0x93, 0xa8, 0x8c, 0xd4, 0x94, 0xa7, 0x8d, 0xd4, 0x94, 0xa4, 0x8c, 0xd4, - 0x94, 0xa7, 0x8d, 0xd4, 0x95, 0xa4, 0x8c, 0xd4, 0x95, 0xa7, 0x8d, 0xd4, - 0x96, 0xa4, 0x8c, 0xd4, 0x96, 0xa7, 0x8d, 0xd4, 0x97, 0xa4, 0x8c, 0xd4, - 0x97, 0xa7, 0x8d, 0xd4, 0x98, 0xa4, 0x8c, 0xd4, 0x98, 0xa7, 0x8d, 0xd4, - 0x98, 0xa4, 0x8c, 0xd4, 0x99, 0xa7, 0x8d, 0xd4, 0x99, 0xa4, 0x8c, 0xd4, - 0x9a, 0xa7, 0x8d, 0xd4, 0x9a, 0xa4, 0x8c, 0xd4, 0x9a, 0xa7, 0x8d, 0xd4, - 0x9b, 0xa4, 0x8c, 0xd4, 0x9b, 0xa7, 0x8d, 0xd4, 0x9c, 0xa4, 0x9c, 0xd4, - 0x9c, 0x96, 0xa1, 0xd4, 0x9d, 0x97, 0xa1, 0xd4, 0x9d, 0x97, 0xa1, 0xd4, - 0x9d, 0x97, 0xa1, 0xd4, 0x9e, 0x97, 0xa1, 0xd4, 0x9e, 0x97, 0xa1, 0xd4, - 0x9f, 0x97, 0xa1, 0xd4, 0x9f, 0x97, 0xa1, 0xd4, 0x9f, 0x97, 0xa1, 0xd4, - 0xa0, 0x97, 0xa1, 0xd4, 0xa0, 0x97, 0xa1, 0xd4, 0xa1, 0x97, 0xa1, 0xd4, - 0xa1, 0x97, 0xa1, 0xd4, 0xa1, 0x97, 0xa2, 0xd4, 0xa2, 0x97, 0xa2, 0xd4, - 0xa2, 0x97, 0xa3, 0xd4, 0xa3, 0x97, 0xa3, 0xd4, 0xa3, 0x97, 0xa3, 0xd4, - 0xa3, 0x97, 0xa3, 0xd4, 0xa4, 0x97, 0xa3, 0xd4, 0xa4, 0x97, 0xa3, 0xd4, - 0xa5, 0x97, 0xa3, 0xd4, 0xa5, 0x97, 0xa3, 0xd4, 0xa5, 0x97, 0xa3, 0xd4, - 0xa6, 0x97, 0xa3, 0xd4, 0xa6, 0x97, 0xa3, 0xd4, 0xa6, 0x97, 0xa3, 0xd4, - 0xa7, 0x97, 0xa3, 0xd4, 0xa7, 0x97, 0xa3, 0xd4, 0xa8, 0x97, 0xa3, 0xd4, - 0xa8, 0x97, 0xa3, 0xd4, 0xa8, 0x97, 0xa3, 0xd4, 0xa9, 0x97, 0xa3, 0xd4, - 0xa9, 0x97, 0xa3, 0xd4, 0xaa, 0x97, 0xa3, 0xd4, 0xaa, 0x97, 0xa3, 0xd4, - 0xaa, 0x97, 0xa3, 0xd4, 0xab, 0x97, 0xa3, 0xd4, 0xab, 0x97, 0xa3, 0xd4, - 0xab, 0x97, 0xa3, 0xd4, 0xac, 0x97, 0xa3, 0xd4, 0xac, 0x97, 0xa3, 0xd4, - 0xac, 0x97, 0xa3, 0xd4, 0xad, 0x97, 0xa3, 0xd4, 0xad, 0x97, 0xa3, 0xd4, - 0xae, 0x97, 0xa3, 0xd4, 0xae, 0x97, 0xa3, 0xd4, 0xae, 0x97, 0xa3, 0xd4, - 0xaf, 0x97, 0xa3, 0xd4, 0xaf, 0x97, 0xa3, 0xd4, 0xaf, 0x97, 0xa3, 0xd4, - 0xb0, 0x97, 0xa3, 0xd4, 0xb0, 0x97, 0xa3, 0xd4, 0xb0, 0x97, 0xa3, 0xd4, - 0xb1, 0x97, 0xa3, 0xd4, 0xb1, 0x97, 0xa3, 0xd4, 0xb2, 0x97, 0xa3, 0xd4, - 0xb2, 0x97, 0xa3, 0xd4, 0xb2, 0x97, 0xa3, 0xd4, 0xb3, 0x97, 0xa3, 0xd4, - 0xb3, 0x97, 0xa3, 0xd4, 0xb3, 0x97, 0xa3, 0xd4, 0xb4, 0x97, 0xa3, 0xd4, - 0xb4, 0x97, 0xa3, 0xd4, 0xb4, 0x97, 0xa3, 0xd4, 0xb5, 0x97, 0xa3, 0xd4, - 0xb5, 0x97, 0xa3, 0xd4, 0xb5, 0x97, 0xa3, 0xd4, 0xb6, 0x97, 0xa3, 0xd4, - 0xb6, 0x97, 0xa3, 0xd4, 0xb6, 0x97, 0xa3, 0xd4, 0xb7, 0x97, 0xa3, 0xd4, - 0xb7, 0x97, 0xa3, 0xd4, 0xb7, 0x97, 0xa3, 0xd4, 0xb8, 0x97, 0xa3, 0xd4, - 0xb8, 0x97, 0xa3, 0xd4, 0xb8, 0x97, 0xa3, 0xd4, 0xb9, 0x97, 0xa3, 0xd4, - 0xb9, 0x97, 0xa3, 0xd4, 0xb9, 0x97, 0xa3, 0xd4, 0xba, 0x97, 0xa3, 0xd4, - 0xba, 0x97, 0xa3, 0xd4, 0xba, 0x97, 0xa3, 0xd4, 0xbb, 0x97, 0xd1, 0xd4, - 0xbb, 0xaf, 0xd1, 0xd4, 0xbb, 0xad, 0xd1, 0xd4, 0xbc, 0xaf, 0xd1, 0xd4, - 0xbc, 0xad, 0xd1, 0xd4, 0xbc, 0xaf, 0xd1, 0xd4, 0xbd, 0xad, 0xd1, 0xd4, - 0xbd, 0xaf, 0xd1, 0xd4, 0xbd, 0xad, 0xd1, 0xd4, 0xbe, 0xaf, 0xd1, 0xd4, - 0xbe, 0xad, 0xd1, 0xd4, 0xbe, 0xaf, 0xd1, 0xd4, 0xbf, 0xad, 0xd1, 0xd4, - 0xbf, 0xaf, 0xd1, 0xd4, 0xbf, 0xad, 0xd1, 0xd4, 0xc0, 0xaf, 0xd1, 0xd4, - 0xc0, 0xad, 0xd1, 0xd4, 0xc0, 0xaf, 0xd1, 0xd4, 0xc1, 0xad, 0xd1, 0xd4, - 0xc1, 0xaf, 0xd1, 0xd4, 0xc1, 0xad, 0xd1, 0xd4, 0xc1, 0xaf, 0xd1, 0xd4, - 0xc2, 0xad, 0xd1, 0xd4, 0xc2, 0xaf, 0xd1, 0xd4, 0xc2, 0xad, 0xd1, 0xd4, - 0xc3, 0xaf, 0xd1, 0xd4, 0xc3, 0xad, 0xd1, 0xd4, 0xc3, 0xaf, 0xd1, 0xd4, - 0xc4, 0xad, 0xd1, 0xd4, 0xc4, 0xaf, 0xd1, 0xd4, 0xc4, 0xad, 0xd2, 0xd4, - 0xc5, 0xaa, 0xd1, 0xd4, 0xc5, 0xad, 0xd2, 0xd4, 0xc5, 0xaa, 0xd1, 0xd4, - 0xc6, 0xad, 0xd2, 0xd4, 0xc6, 0xaa, 0xd1, 0xd4, 0xc6, 0xad, 0xd2, 0xd4, - 0xc6, 0xaa, 0xd1, 0xd4, 0xc7, 0xad, 0xd2, 0xd4, 0xc7, 0xaa, 0xd1, 0xd4, - 0xc7, 0xad, 0xd2, 0xd4, 0xc8, 0xaa, 0xd1, 0xd4, 0xc8, 0xad, 0xd2, 0xd4, - 0xc8, 0xaa, 0xd1, 0xd4, 0xc9, 0xad, 0xd2, 0xd4, 0xc9, 0xaa, 0xd1, 0xd4, - 0xc9, 0xad, 0xd2, 0xd4, 0xc9, 0xaa, 0xd1, 0xd4, 0xca, 0xad, 0xd2, 0xd4, - 0xca, 0xaa, 0xd1, 0xd4, 0xca, 0xad, 0xd2, 0xd4, 0xcb, 0xaa, 0xd2, 0xd4, - 0xcb, 0xa8, 0xd2, 0xd4, 0xcb, 0xaa, 0xd2, 0xd4, 0xcc, 0xa8, 0xd2, 0xd4, - 0xcc, 0xaa, 0xd2, 0xd4, 0xcc, 0xa8, 0xd2, 0xd4, 0xcc, 0xaa, 0xd2, 0xd4, - 0xcd, 0xa8, 0xd2, 0xd4, 0xcd, 0xaa, 0xd2, 0xd4, 0xcd, 0xa8, 0xd2, 0xd4, - 0xce, 0xaa, 0xd2, 0xd4, 0xce, 0xa8, 0xd2, 0xd4, 0xce, 0xaa, 0xd2, 0xd4, - 0xce, 0xa8, 0xd2, 0xd4, 0xcf, 0xaa, 0xd2, 0xd4, 0xcf, 0xa8, 0xd2, 0xd4, - 0xcf, 0xaa, 0xd2, 0xd4, 0xd0, 0xa8, 0xd2, 0xd4, 0xd0, 0xaa, 0xd2, 0xd4, - 0xd0, 0xa8, 0xd2, 0xd4, 0xd0, 0xaa, 0xd2, 0xd4, 0xd1, 0xa8, 0xd2, 0xd4, - 0xd1, 0xa8, 0xd2, 0xd4, 0xd1, 0xa8, 0xd2, 0xd4, 0xd2, 0xa8, 0xd2, 0xd4, - 0xd1, 0xa8, 0xd2, 0xd4, 0xd2, 0xa8, 0xd2, 0xd4, 0xd1, 0xa8, 0xd3, 0xd4, - 0xd2, 0xa8, 0xd3, 0xd3, 0xd2, 0xa8, 0xd3, 0xd4, 0xd2, 0xa8, 0xd4, 0xd3, - 0xd2, 0xa8, 0xd4, 0xd4, 0xd2, 0xa8, 0xd4, 0xd3, 0xd2, 0xa8, 0xd4, 0xd4, - 0xd2, 0xa8, 0xd5, 0xd3, 0xd2, 0xa8, 0xd5, 0xd4, 0xd2, 0xa8, 0xd5, 0xd3, - 0xd2, 0xa8, 0xd6, 0xd4, 0xd2, 0xa8, 0xd6, 0xd3, 0xd2, 0xa8, 0xd6, 0xd4, - 0xd2, 0xa8, 0xd6, 0xd3, 0xd2, 0xa8, 0xd7, 0xd4, 0xd2, 0xa8, 0xd7, 0xd3, - 0xd2, 0xa8, 0xd7, 0xd4, 0xd2, 0xa8, 0xd7, 0xd3, 0xd2, 0xa8, 0xd8, 0xd4, - 0xd2, 0xa8, 0xd8, 0xd3, 0xd2, 0xa8, 0xd8, 0xd4, 0xd2, 0xa8, 0xd9, 0xd3, - 0xd2, 0xa8, 0xd9, 0xd1, 0xd2, 0xa8, 0xd9, 0xd3, 0xd2, 0xa8, 0xd9, 0xd1, - 0xd2, 0xa8, 0xda, 0xd3, 0xd2, 0xa8, 0xda, 0xd1, 0xd2, 0xa8, 0xda, 0xd3, - 0xd2, 0xa8, 0xda, 0xd1, 0xd2, 0xa8, 0xdb, 0xd3, 0xd2, 0xa8, 0xdb, 0xd1, - 0xd2, 0xa8, 0xdb, 0xd3, 0xd2, 0xa8, 0xdb, 0xd1, 0xd2, 0xa8, 0xdc, 0xd3, - 0xd2, 0xa8, 0xdc, 0xd1, 0xd2, 0xa8, 0xdc, 0xca, 0xdf, 0xa8, 0xdd, 0xca, - 0xdf, 0xa8, 0xdd, 0xca, 0xdf, 0xa8, 0xdd, 0xca, 0xdf, 0xa8, 0xdd, 0xca, - 0xdf, 0xa8, 0xde, 0xca, 0xdf, 0xa8, 0xde, 0xca, 0xdf, 0xa8, 0xde, 0xca, - 0xdf, 0xa8, 0xde, 0xca, 0xdf, 0xa8, 0xdf, 0xca, 0xdf, 0xa8, 0xdf, 0xca, - 0xe2, 0xa8, 0xdf, 0xca, 0xdf, 0xa8, 0xdf, 0xca, 0xe2, 0xa8, 0xe0, 0xca, - 0xe2, 0xa8, 0xe0, 0xca, 0xe2, 0xa8, 0xe0, 0xca, 0xe2, 0xa8, 0xe1, 0xca, - 0xe2, 0xa8, 0xe1, 0xca, 0xe2, 0xa8, 0xe1, 0xca, 0xe2, 0xa8, 0xe1, 0xd5, - 0xea, 0xa8, 0xe2, 0xd6, 0xea, 0xa8, 0xe2, 0xd5, 0xea, 0xa8, 0xe2, 0xd6, - 0xea, 0xa8, 0xe2, 0xd5, 0xea, 0xa8, 0xe3, 0xd6, 0xea, 0xa8, 0xe3, 0xd5, - 0xea, 0xa8, 0xe3, 0xd6, 0xea, 0xa8, 0xe3, 0xd5, 0xea, 0xa8, 0xe4, 0xd6, - 0xea, 0xa8, 0xe4, 0xd5, 0xea, 0xa8, 0xe4, 0xd6, 0xea, 0xa8, 0xe4, 0xd5, - 0xea, 0xa8, 0xe5, 0xd6, 0xea, 0xa8, 0xe5, 0xd5, 0xea, 0xa8, 0xe5, 0xd6, - 0xea, 0xa8, 0xe5, 0xd5, 0xea, 0xa8, 0xe6, 0xd6, 0xea, 0xa8, 0xe6, 0xd5, - 0xea, 0xa8, 0xe6, 0xd4, 0xea, 0xa8, 0xe6, 0xd5, 0xea, 0xa8, 0xe7, 0xd4, - 0xea, 0xa8, 0xe7, 0xd5, 0xea, 0xa8, 0xe7, 0xd4, 0xea, 0xa8, 0xe7, 0xd5, - 0xea, 0xa8, 0xe8, 0xd4, 0xea, 0xa8, 0xe8, 0xd5, 0xea, 0xa8, 0xe8, 0xd4, - 0xea, 0xa8, 0xe8, 0xd5, 0xea, 0xa8, 0xe9, 0xd4, 0xea, 0xa8, 0xe9, 0xd5, - 0xea, 0xa8, 0xe9, 0xd4, 0xea, 0xa8, 0xe9, 0xd5, 0xea, 0xa8, 0xea, 0xd4, - 0xea, 0xa8, 0xea, 0xd4, 0xea, 0xa8, 0xea, 0xd4, 0xea, 0xa8, 0xea, 0xd4, - 0xea, 0xa8, 0xea, 0xd4, 0xeb, 0xa8, 0xea, 0xd4, 0xeb, 0xa8, 0xea, 0xd4, - 0xeb, 0xa8, 0xea, 0xd4, 0xeb, 0xa8, 0xed, 0xd4, 0xec, 0xa8, 0xed, 0xd4, - 0xec, 0xa8, 0xed, 0xd4, 0xec, 0xa8, 0xed, 0xd4, 0xec, 0xa8, 0xed, 0xd4, - 0xec, 0xa8, 0xed, 0xd4, 0xed, 0xa8, 0xed, 0xd4, 0xed, 0xa8, 0xed, 0xd4, - 0xed, 0xa8, 0xed, 0xd4, 0xed, 0xa8, 0xee, 0xd4, 0xed, 0xa8, 0xee, 0xd4, - 0xed, 0xa8, 0xee, 0xd4, 0xed, 0xa8, 0xee, 0xd4, 0xed, 0xa8, 0xef, 0xd4, - 0xed, 0xa8, 0xef, 0xd4, 0xed, 0xa8, 0xef, 0xd4, 0xed, 0xa8, 0xef, 0xd4, - 0xed, 0xa8, 0xf0, 0xd4, 0xed, 0xa8, 0xf0, 0xd4, 0xed, 0xa8, 0xf0, 0xd4, - 0xed, 0xa8, 0xf0, 0xd4, 0xed, 0xa8, 0xf1, 0xd4, 0xed, 0xa8, 0xf1, 0xd4, - 0xed, 0xa8, 0xf1, 0xd4, 0xed, 0xa8, 0xf1, 0xd4, 0xed, 0xa8, 0xf2, 0xd4, - 0xed, 0xa8, 0xf2, 0xd4, 0xed, 0xa8, 0xf2, 0xd4, 0xed, 0xa8, 0xf2, 0xd4, - 0xed, 0xa8, 0xf2, 0xd4, 0xed, 0xa8, 0xf3, 0xd4, 0xed, 0xa8, 0xf3, 0xd1, - 0xed, 0xa8, 0xf3, 0xd4, 0xed, 0xa8, 0xf3, 0xd1, 0xed, 0xa8, 0xf4, 0xd4, - 0xed, 0xa8, 0xf4, 0xd1, 0xed, 0xa8, 0xf4, 0xd4, 0xed, 0xa8, 0xf4, 0xd1, - 0xed, 0xa8, 0xf5, 0xd4, 0xed, 0xa8, 0xf5, 0xd1, 0xed, 0xa8, 0xf5, 0xd4, - 0xed, 0xa8, 0xf5, 0xd1, 0xed, 0xa8, 0xf5, 0xd4, 0xed, 0xa8, 0xf6, 0xd1, - 0xed, 0xa8, 0xf6, 0xd4, 0xed, 0xa8, 0xf6, 0xd1, 0xed, 0xa8, 0xf6, 0xd4, - 0xed, 0xa8, 0xf7, 0xd1, 0xed, 0xa8, 0xf7, 0xd4, 0xed, 0xa8, 0xf7, 0xd1, - 0xed, 0xa8, 0xf7, 0xd4, 0xed, 0xa8, 0xf8, 0xd1, 0xed, 0xa8, 0xf8, 0xc7, - 0xf7, 0xa8, 0xf8, 0xc7, 0xf7, 0xa8, 0xf8, 0xc7, 0xf7, 0xa8, 0xf8, 0xc7, - 0xf7, 0xa8, 0xf9, 0xc7, 0xf7, 0xa8, 0xf9, 0xc7, 0xf7, 0xa8, 0xf9, 0xc7, - 0xf7, 0xa8, 0xf9, 0xc7, 0xf7, 0xa8, 0xfa, 0xc7, 0xf7, 0xa8, 0xfa, 0xc7, - 0xf7, 0xa8, 0xfa, 0xc7, 0xf7, 0xa8, 0xfa, 0xc7, 0xf7, 0xa8, 0xfa, 0xc7, - 0xf7, 0xa8, 0xfb, 0xc7, 0xf7, 0xa8, 0xfb, 0xc7, 0xf7, 0xa8, 0xfb, 0xc7, - 0xf7, 0xa8, 0xfb, 0xc7, 0xf7, 0xa8, 0xfc, 0xc7, 0xf7, 0xa8, 0xfc, 0xc7, - 0xf7, 0xa8, 0xfc, 0xc7, 0xf7, 0xa8, 0xfc, 0xc7, 0xf7, 0xa8, 0xfc, 0xc7, - 0xf7, 0xa8, 0xfd, 0xc7, 0xf7, 0xa8, 0xfd, 0xc7, 0xf7, 0xa8, 0xfd, 0xc7, - 0xf7, 0xa8, 0xfd, 0xc7, 0xf7, 0xa8, 0xfe, 0xc7, 0xf7, 0xa8, 0xfe, 0xc7, - 0xf7, 0xa8, 0xfe, 0xc7, 0xf7, 0xa8, 0xfe, 0xc7, 0xf7, 0xa8, 0xfe, 0xc7, - 0xf7, 0xa8, 0xff, 0xc7, 0xf7, 0xa8, 0xff, 0xc7, 0xf7, 0xa8, 0x03, 0xdb, - 0x8a, 0xa9, 0x0a, 0xda, 0x8b, 0xa9, 0x0f, 0xdb, 0x8a, 0xa9, 0x14, 0xda, - 0x8b, 0xa9, 0x17, 0xdb, 0x8a, 0xa9, 0x1b, 0xda, 0x8b, 0xa9, 0x1e, 0xdb, - 0x8a, 0xa9, 0x20, 0xda, 0x8b, 0xa9, 0x23, 0xdb, 0x8a, 0xa9, 0x25, 0xda, - 0x8b, 0xa9, 0x27, 0xdb, 0x8a, 0xa9, 0x29, 0xda, 0x8b, 0xa9, 0x2b, 0xd8, - 0x8b, 0xa9, 0x2d, 0xda, 0x8b, 0xa9, 0x2f, 0xd8, 0x8b, 0xa9, 0x31, 0xda, - 0x8b, 0xa9, 0x32, 0xd8, 0x8b, 0xa9, 0x34, 0xda, 0x8b, 0xa9, 0x35, 0xd8, - 0x8b, 0xa9, 0x37, 0xda, 0x8b, 0xa9, 0x38, 0xd8, 0x8b, 0xa9, 0x3a, 0xda, - 0x8b, 0xa9, 0x3b, 0xd8, 0x8b, 0xa9, 0x3c, 0xda, 0x8b, 0xa9, 0x3e, 0xd8, - 0x8b, 0xa9, 0x3f, 0xda, 0x8b, 0xa9, 0x40, 0xd8, 0x8b, 0xa9, 0x42, 0xda, - 0x8b, 0xa9, 0x43, 0xd8, 0x8b, 0xa9, 0x44, 0xda, 0x8b, 0xa9, 0x45, 0xd8, - 0x8b, 0xa9, 0x46, 0xda, 0x8b, 0xa9, 0x47, 0xd8, 0x8b, 0xa9, 0x48, 0xda, - 0x8b, 0xa9, 0x49, 0xd8, 0x8b, 0xa9, 0x4a, 0xda, 0x8b, 0xa9, 0x4b, 0xd8, - 0x8b, 0xa9, 0x4c, 0xda, 0x8b, 0xa9, 0x4d, 0xd8, 0x8b, 0xa9, 0x4e, 0xda, - 0x8b, 0xa9, 0x4f, 0xd8, 0x8b, 0xa9, 0x50, 0xd6, 0x8c, 0xa9, 0x51, 0xd8, - 0x8b, 0xa9, 0x52, 0xd6, 0x8c, 0xa9, 0x53, 0xd8, 0x8b, 0xa9, 0x54, 0xd6, - 0x8c, 0xa9, 0x55, 0xd8, 0x8b, 0xa9, 0x56, 0xd6, 0x8c, 0xa9, 0x57, 0xd8, - 0x8b, 0xa9, 0x58, 0xd6, 0x8c, 0xa9, 0x58, 0xd8, 0x8b, 0xa9, 0x59, 0xd6, - 0x8c, 0xa9, 0x5a, 0xd8, 0x8b, 0xa9, 0x5b, 0xd6, 0x8c, 0xa9, 0x5c, 0xd8, - 0x8b, 0xa9, 0x5d, 0xd6, 0x8c, 0xa9, 0x5d, 0xd8, 0x8b, 0xa9, 0x5e, 0xd6, - 0x8c, 0xa9, 0x5f, 0xd8, 0x8b, 0xa9, 0x60, 0xd6, 0x8c, 0xa9, 0x60, 0xd8, - 0x8b, 0xa9, 0x61, 0xd6, 0x8c, 0xa9, 0x62, 0xd8, 0x8b, 0xa9, 0x63, 0xd6, - 0x8c, 0xa9, 0x63, 0xd8, 0x8b, 0xa9, 0x64, 0xd6, 0x8c, 0xa9, 0x65, 0xd8, - 0x8b, 0xa9, 0x66, 0xd6, 0x8c, 0xa9, 0x66, 0xd8, 0x8b, 0xa9, 0x67, 0xd6, - 0x8c, 0xa9, 0x68, 0xd8, 0x8b, 0xa9, 0x68, 0xd6, 0x8c, 0xa9, 0x69, 0xd8, - 0x8b, 0xa9, 0x6a, 0xd6, 0x8c, 0xa9, 0x6a, 0xd8, 0x8b, 0xa9, 0x6b, 0xd6, - 0x8c, 0xa9, 0x6c, 0xd8, 0x8b, 0xa9, 0x6c, 0xd6, 0x8c, 0xa9, 0x6d, 0xd8, - 0x8b, 0xa9, 0x6e, 0xd6, 0x8c, 0xa9, 0x6e, 0xd8, 0x8b, 0xa9, 0x6f, 0xd6, - 0x8c, 0xa9, 0x70, 0xd8, 0x8b, 0xa9, 0x70, 0xd6, 0x8c, 0xa9, 0x71, 0xd8, - 0x8b, 0xa9, 0x72, 0xd6, 0x8c, 0xa9, 0x72, 0xd4, 0x8c, 0xa9, 0x73, 0xd6, - 0x8c, 0xa9, 0x73, 0xd4, 0x8c, 0xa9, 0x74, 0xd6, 0x8c, 0xa9, 0x75, 0xd4, - 0x8c, 0xa9, 0x75, 0xd6, 0x8c, 0xa9, 0x76, 0xd4, 0x8c, 0xa9, 0x76, 0xd6, - 0x8c, 0xa9, 0x77, 0xd4, 0x8c, 0xa9, 0x78, 0xd6, 0x8c, 0xa9, 0x78, 0xd4, - 0x8c, 0xa9, 0x79, 0xd6, 0x8c, 0xa9, 0x79, 0xd4, 0x8c, 0xa9, 0x7a, 0xd6, - 0x8c, 0xa9, 0x7a, 0xd4, 0x8c, 0xa9, 0x7b, 0xd6, 0x8c, 0xa9, 0x7c, 0xd4, - 0x8c, 0xa9, 0x7c, 0xd6, 0x8c, 0xa9, 0x7d, 0xd4, 0x8c, 0xa9, 0x7d, 0xd6, - 0x8c, 0xa9, 0x7e, 0xd4, 0x8c, 0xa9, 0x7e, 0xd6, 0x8c, 0xa9, 0x7f, 0xd4, - 0x8c, 0xa9, 0x7f, 0xd6, 0x8c, 0xa9, 0x80, 0xd4, 0x8c, 0xa9, 0x81, 0xd6, - 0x8c, 0xa9, 0x81, 0xd4, 0x8c, 0xa9, 0x82, 0xd6, 0x8c, 0xa9, 0x82, 0xd4, - 0x8c, 0xa9, 0x83, 0xd6, 0x8c, 0xa9, 0x83, 0xd4, 0x8c, 0xa9, 0x84, 0xd6, - 0x8c, 0xa9, 0x84, 0xd4, 0x8c, 0xa9, 0x85, 0xd6, 0x8c, 0xa9, 0x85, 0xd4, - 0x8c, 0xa9, 0x86, 0xd6, 0x8c, 0xa9, 0x86, 0xd4, 0x8c, 0xa9, 0x87, 0xd6, - 0x8c, 0xa9, 0x87, 0xd4, 0x8c, 0xa9, 0x88, 0xd6, 0x8c, 0xa9, 0x88, 0xd4, - 0x8c, 0xa9, 0x89, 0xd4, 0x8d, 0xa9, 0x89, 0xd4, 0x8c, 0xa9, 0x8a, 0xd4, - 0x8d, 0xa9, 0x8a, 0xd4, 0x8c, 0xa9, 0x8b, 0xd4, 0x8d, 0xa9, 0x8b, 0xd4, - 0x8c, 0xa9, 0x8c, 0xd4, 0x8d, 0xa9, 0x8c, 0xd4, 0x8c, 0xa8, 0x8c, 0xd4, - 0x8d, 0xa9, 0x8c, 0xd4, 0x8d, 0xa8, 0x8c, 0xd4, 0x8e, 0xa9, 0x8c, 0xd4, - 0x8e, 0xa8, 0x8c, 0xd4, 0x8e, 0xa9, 0x8c, 0xd4, 0x8f, 0xa8, 0x8c, 0xd4, - 0x8f, 0xa9, 0x8c, 0xd4, 0x90, 0xa8, 0x8c, 0xd4, 0x90, 0xa9, 0x8c, 0xd4, - 0x91, 0xa8, 0x8c, 0xd4, 0x91, 0xa9, 0x8c, 0xd4, 0x92, 0xa8, 0x8c, 0xd4, - 0x92, 0xa9, 0x8c, 0xd4, 0x93, 0xa8, 0x8c, 0xd4, 0x93, 0xa9, 0x8c, 0xd4, - 0x94, 0xa8, 0x8d, 0xd4, 0x94, 0xa5, 0x8c, 0xd4, 0x94, 0xa8, 0x8d, 0xd4, - 0x95, 0xa5, 0x8c, 0xd4, 0x95, 0xa8, 0x8d, 0xd4, 0x96, 0xa5, 0x8c, 0xd4, - 0x96, 0xa8, 0x8d, 0xd4, 0x97, 0xa5, 0x8c, 0xd4, 0x97, 0xa8, 0x8d, 0xd4, - 0x98, 0xa5, 0x8c, 0xd4, 0x98, 0xa8, 0x8d, 0xd4, 0x98, 0xa5, 0x8c, 0xd4, - 0x99, 0xa8, 0x8d, 0xd4, 0x99, 0xa5, 0x8c, 0xd4, 0x9a, 0xa8, 0x8d, 0xd4, - 0x9a, 0xa5, 0x8c, 0xd4, 0x9a, 0xa8, 0x8d, 0xd4, 0x9b, 0xa5, 0x8c, 0xd4, - 0x9b, 0xa8, 0x8d, 0xd4, 0x9c, 0xa5, 0x8c, 0xd4, 0x9c, 0xa8, 0x9f, 0xd4, - 0x9d, 0x97, 0x9f, 0xd4, 0x9d, 0x97, 0x9f, 0xd4, 0x9d, 0x97, 0x9f, 0xd4, - 0x9e, 0x97, 0xa3, 0xd4, 0x9e, 0x98, 0x9f, 0xd4, 0x9f, 0x97, 0xa3, 0xd4, - 0x9f, 0x98, 0x9f, 0xd4, 0x9f, 0x97, 0xa3, 0xd4, 0xa0, 0x98, 0xa0, 0xd4, - 0xa0, 0x97, 0xa3, 0xd4, 0xa1, 0x98, 0xa1, 0xd4, 0xa1, 0x97, 0xa3, 0xd4, - 0xa1, 0x98, 0xa2, 0xd4, 0xa2, 0x97, 0xa3, 0xd4, 0xa2, 0x98, 0xa3, 0xd4, - 0xa3, 0x97, 0xa3, 0xd4, 0xa3, 0x98, 0xa3, 0xd4, 0xa3, 0x97, 0xa3, 0xd4, - 0xa4, 0x98, 0xa3, 0xd4, 0xa4, 0x97, 0xa3, 0xd4, 0xa5, 0x98, 0xa3, 0xd4, - 0xa5, 0x97, 0xa3, 0xd4, 0xa5, 0x98, 0xa3, 0xd4, 0xa6, 0x97, 0xa3, 0xd4, - 0xa6, 0x98, 0xa3, 0xd4, 0xa6, 0x97, 0xa3, 0xd4, 0xa7, 0x98, 0xa3, 0xd4, - 0xa7, 0x97, 0xa3, 0xd4, 0xa8, 0x98, 0xa3, 0xd4, 0xa8, 0x97, 0xa3, 0xd4, - 0xa8, 0x98, 0xa3, 0xd4, 0xa9, 0x97, 0xa3, 0xd4, 0xa9, 0x98, 0xa3, 0xd4, - 0xaa, 0x97, 0xa3, 0xd4, 0xaa, 0x98, 0xa3, 0xd4, 0xaa, 0x97, 0xa3, 0xd4, - 0xab, 0x98, 0xa3, 0xd4, 0xab, 0x97, 0xa3, 0xd4, 0xab, 0x98, 0xa3, 0xd4, - 0xac, 0x97, 0xa3, 0xd4, 0xac, 0x98, 0xa3, 0xd4, 0xac, 0x97, 0xa3, 0xd4, - 0xad, 0x98, 0xa3, 0xd4, 0xad, 0x97, 0xa3, 0xd4, 0xae, 0x98, 0xa3, 0xd4, - 0xae, 0x97, 0xa3, 0xd4, 0xae, 0x98, 0xa3, 0xd4, 0xaf, 0x97, 0xa3, 0xd4, - 0xaf, 0x98, 0xa3, 0xd4, 0xaf, 0x97, 0xa3, 0xd4, 0xb0, 0x98, 0xa3, 0xd4, - 0xb0, 0x97, 0xa3, 0xd4, 0xb0, 0x98, 0xa3, 0xd4, 0xb1, 0x97, 0xa3, 0xd4, - 0xb1, 0x98, 0xa3, 0xd4, 0xb2, 0x97, 0xa3, 0xd4, 0xb2, 0x98, 0xa3, 0xd4, - 0xb2, 0x97, 0xa3, 0xd4, 0xb3, 0x98, 0xa3, 0xd4, 0xb3, 0x97, 0xa3, 0xd4, - 0xb3, 0x98, 0xa3, 0xd4, 0xb4, 0x97, 0xa3, 0xd4, 0xb4, 0x98, 0xa3, 0xd4, - 0xb4, 0x97, 0xa3, 0xd4, 0xb5, 0x98, 0xa3, 0xd4, 0xb5, 0x97, 0xa3, 0xd4, - 0xb5, 0x98, 0xa3, 0xd4, 0xb6, 0x97, 0xa3, 0xd4, 0xb6, 0x98, 0xa3, 0xd4, - 0xb6, 0x97, 0xa3, 0xd4, 0xb7, 0x98, 0xa3, 0xd4, 0xb7, 0x97, 0xa3, 0xd4, - 0xb7, 0x98, 0xa3, 0xd4, 0xb8, 0x97, 0xa3, 0xd4, 0xb8, 0x98, 0xa3, 0xd4, - 0xb8, 0x97, 0xa3, 0xd4, 0xb9, 0x98, 0xa3, 0xd4, 0xb9, 0x97, 0xa3, 0xd4, - 0xb9, 0x98, 0xa3, 0xd4, 0xba, 0x97, 0xa3, 0xd4, 0xba, 0x98, 0xa3, 0xd4, - 0xba, 0x97, 0xa3, 0xd4, 0xbb, 0x98, 0xd1, 0xd4, 0xbb, 0xb0, 0xd1, 0xd4, - 0xbb, 0xad, 0xd1, 0xd4, 0xbc, 0xb0, 0xd1, 0xd4, 0xbc, 0xad, 0xd1, 0xd4, - 0xbc, 0xb0, 0xd1, 0xd4, 0xbd, 0xad, 0xd1, 0xd4, 0xbd, 0xb0, 0xd1, 0xd4, - 0xbd, 0xad, 0xd1, 0xd4, 0xbe, 0xb0, 0xd1, 0xd4, 0xbe, 0xad, 0xd1, 0xd4, - 0xbe, 0xb0, 0xd1, 0xd4, 0xbf, 0xad, 0xd1, 0xd4, 0xbf, 0xb0, 0xd1, 0xd4, - 0xbf, 0xad, 0xd1, 0xd4, 0xc0, 0xb0, 0xd1, 0xd4, 0xc0, 0xad, 0xd1, 0xd4, - 0xc0, 0xb0, 0xd1, 0xd4, 0xc1, 0xad, 0xd1, 0xd4, 0xc1, 0xb0, 0xd1, 0xd4, - 0xc1, 0xad, 0xd1, 0xd4, 0xc1, 0xb0, 0xd1, 0xd4, 0xc2, 0xad, 0xd1, 0xd4, - 0xc2, 0xb0, 0xd1, 0xd4, 0xc2, 0xad, 0xd1, 0xd4, 0xc3, 0xb0, 0xd1, 0xd4, - 0xc3, 0xad, 0xd2, 0xd4, 0xc3, 0xaa, 0xd1, 0xd4, 0xc4, 0xad, 0xd2, 0xd4, - 0xc4, 0xaa, 0xd1, 0xd4, 0xc4, 0xad, 0xd2, 0xd4, 0xc5, 0xaa, 0xd1, 0xd4, - 0xc5, 0xad, 0xd2, 0xd4, 0xc5, 0xaa, 0xd1, 0xd4, 0xc6, 0xad, 0xd2, 0xd4, - 0xc6, 0xaa, 0xd1, 0xd4, 0xc6, 0xad, 0xd2, 0xd4, 0xc6, 0xaa, 0xd1, 0xd4, - 0xc7, 0xad, 0xd2, 0xd4, 0xc7, 0xaa, 0xd1, 0xd4, 0xc7, 0xad, 0xd2, 0xd4, - 0xc8, 0xaa, 0xd1, 0xd4, 0xc8, 0xad, 0xd2, 0xd4, 0xc8, 0xaa, 0xd1, 0xd4, - 0xc9, 0xad, 0xd2, 0xd4, 0xc9, 0xaa, 0xd1, 0xd4, 0xc9, 0xad, 0xd2, 0xd4, - 0xc9, 0xaa, 0xd1, 0xd4, 0xca, 0xad, 0xd2, 0xd4, 0xca, 0xaa, 0xd1, 0xd4, - 0xca, 0xad, 0xd2, 0xd4, 0xcb, 0xaa, 0xd1, 0xd4, 0xcb, 0xad, 0xd2, 0xd4, - 0xcb, 0xaa, 0xd1, 0xd4, 0xcc, 0xad, 0xd2, 0xd4, 0xcc, 0xaa, 0xd1, 0xd4, - 0xcc, 0xad, 0xd2, 0xd4, 0xcc, 0xaa, 0xd1, 0xd4, 0xcd, 0xad, 0xd2, 0xd4, - 0xcd, 0xaa, 0xd2, 0xd4, 0xcd, 0xa9, 0xd2, 0xd4, 0xce, 0xaa, 0xd2, 0xd4, - 0xce, 0xa9, 0xd2, 0xd4, 0xce, 0xaa, 0xd2, 0xd4, 0xce, 0xa9, 0xd2, 0xd4, - 0xcf, 0xaa, 0xd2, 0xd4, 0xcf, 0xa9, 0xd2, 0xd4, 0xcf, 0xaa, 0xd2, 0xd4, - 0xd0, 0xa9, 0xd2, 0xd4, 0xd0, 0xaa, 0xd2, 0xd4, 0xd0, 0xa9, 0xd2, 0xd4, - 0xd0, 0xaa, 0xd2, 0xd4, 0xd1, 0xa9, 0xd2, 0xd4, 0xd1, 0xaa, 0xd2, 0xd4, - 0xd1, 0xa9, 0xd2, 0xd4, 0xd2, 0xaa, 0xd2, 0xd4, 0xd1, 0xa9, 0xd2, 0xd4, - 0xd2, 0xa9, 0xd2, 0xd4, 0xd1, 0xa9, 0xd3, 0xd4, 0xd2, 0xa9, 0xd3, 0xd3, - 0xd2, 0xa9, 0xd3, 0xd4, 0xd2, 0xa9, 0xd4, 0xd3, 0xd2, 0xa9, 0xd4, 0xd4, - 0xd2, 0xa9, 0xd4, 0xd3, 0xd2, 0xa9, 0xd4, 0xd4, 0xd2, 0xa9, 0xd5, 0xd3, - 0xd2, 0xa9, 0xd5, 0xd4, 0xd2, 0xa9, 0xd5, 0xd3, 0xd2, 0xa9, 0xd6, 0xd4, - 0xd2, 0xa9, 0xd6, 0xd3, 0xd2, 0xa9, 0xd6, 0xd4, 0xd2, 0xa9, 0xd6, 0xd3, - 0xd2, 0xa9, 0xd7, 0xd4, 0xd2, 0xa9, 0xd7, 0xd3, 0xd2, 0xa9, 0xd7, 0xd4, - 0xd2, 0xa9, 0xd7, 0xd3, 0xd2, 0xa9, 0xd8, 0xd4, 0xd2, 0xa9, 0xd8, 0xd3, - 0xd2, 0xa9, 0xd8, 0xd4, 0xd2, 0xa9, 0xd9, 0xd3, 0xd2, 0xa9, 0xd9, 0xd2, - 0xd2, 0xa9, 0xd9, 0xd3, 0xd2, 0xa9, 0xd9, 0xd2, 0xd2, 0xa9, 0xda, 0xd3, - 0xd2, 0xa9, 0xda, 0xd2, 0xd2, 0xa9, 0xda, 0xd3, 0xd2, 0xa9, 0xda, 0xd2, - 0xd2, 0xa9, 0xdb, 0xd3, 0xd2, 0xa9, 0xdb, 0xd2, 0xd2, 0xa9, 0xdb, 0xd3, - 0xd2, 0xa9, 0xdb, 0xd2, 0xd2, 0xa9, 0xdc, 0xd3, 0xd2, 0xa9, 0xdc, 0xd2, - 0xd2, 0xa9, 0xdc, 0xd3, 0xd2, 0xa9, 0xdd, 0xc9, 0xde, 0xa9, 0xdd, 0xc9, - 0xde, 0xa9, 0xdd, 0xc9, 0xde, 0xa9, 0xdd, 0xc9, 0xde, 0xa9, 0xde, 0xca, - 0xe1, 0xa9, 0xde, 0xca, 0xe1, 0xa9, 0xde, 0xca, 0xe1, 0xa9, 0xde, 0xca, - 0xe1, 0xa9, 0xdf, 0xca, 0xe1, 0xa9, 0xdf, 0xca, 0xe1, 0xa9, 0xdf, 0xca, - 0xe1, 0xa9, 0xdf, 0xca, 0xe1, 0xa9, 0xe0, 0xca, 0xe1, 0xa9, 0xe0, 0xca, - 0xe1, 0xa9, 0xe0, 0xca, 0xe1, 0xa9, 0xe1, 0xcb, 0xe4, 0xa9, 0xe1, 0xca, - 0xe1, 0xa9, 0xe1, 0xd6, 0xea, 0xa9, 0xe1, 0xd5, 0xea, 0xa9, 0xe2, 0xd6, - 0xea, 0xa9, 0xe2, 0xd5, 0xea, 0xa9, 0xe2, 0xd6, 0xea, 0xa9, 0xe2, 0xd5, - 0xea, 0xa9, 0xe3, 0xd6, 0xea, 0xa9, 0xe3, 0xd5, 0xea, 0xa9, 0xe3, 0xd6, - 0xea, 0xa9, 0xe3, 0xd5, 0xea, 0xa9, 0xe4, 0xd6, 0xea, 0xa9, 0xe4, 0xd5, - 0xea, 0xa9, 0xe4, 0xd6, 0xea, 0xa9, 0xe4, 0xd5, 0xea, 0xa9, 0xe5, 0xd6, - 0xea, 0xa9, 0xe5, 0xd5, 0xea, 0xa9, 0xe5, 0xd6, 0xea, 0xa9, 0xe5, 0xd5, - 0xea, 0xa9, 0xe6, 0xd6, 0xea, 0xa9, 0xe6, 0xd5, 0xea, 0xa9, 0xe6, 0xd6, - 0xea, 0xa9, 0xe6, 0xd5, 0xea, 0xa9, 0xe7, 0xd6, 0xea, 0xa9, 0xe7, 0xd5, - 0xea, 0xa9, 0xe7, 0xd6, 0xea, 0xa9, 0xe7, 0xd5, 0xea, 0xa9, 0xe8, 0xd6, - 0xea, 0xa9, 0xe8, 0xd5, 0xea, 0xa9, 0xe8, 0xd4, 0xea, 0xa9, 0xe8, 0xd5, - 0xea, 0xa9, 0xe9, 0xd4, 0xea, 0xa9, 0xe9, 0xd5, 0xea, 0xa9, 0xe9, 0xd4, - 0xea, 0xa9, 0xe9, 0xd5, 0xea, 0xa9, 0xea, 0xd4, 0xea, 0xa9, 0xea, 0xd4, - 0xea, 0xa9, 0xea, 0xd4, 0xea, 0xa9, 0xea, 0xd4, 0xea, 0xa9, 0xea, 0xd4, - 0xeb, 0xa9, 0xea, 0xd4, 0xeb, 0xa9, 0xea, 0xd4, 0xeb, 0xa9, 0xea, 0xd4, - 0xeb, 0xa9, 0xed, 0xd4, 0xec, 0xa9, 0xed, 0xd4, 0xec, 0xa9, 0xed, 0xd4, - 0xec, 0xa9, 0xed, 0xd4, 0xec, 0xa9, 0xed, 0xd4, 0xec, 0xa9, 0xed, 0xd4, - 0xed, 0xa9, 0xed, 0xd4, 0xed, 0xa9, 0xed, 0xd4, 0xed, 0xa9, 0xed, 0xd4, - 0xed, 0xa9, 0xee, 0xd4, 0xed, 0xa9, 0xee, 0xd4, 0xed, 0xa9, 0xee, 0xd4, - 0xed, 0xa9, 0xee, 0xd4, 0xed, 0xa9, 0xef, 0xd4, 0xed, 0xa9, 0xef, 0xd4, - 0xed, 0xa9, 0xef, 0xd4, 0xed, 0xa9, 0xef, 0xd4, 0xed, 0xa9, 0xf0, 0xd4, - 0xed, 0xa9, 0xf0, 0xd4, 0xed, 0xa9, 0xf0, 0xd4, 0xed, 0xa9, 0xf0, 0xd4, - 0xed, 0xa9, 0xf1, 0xd4, 0xed, 0xa9, 0xf1, 0xd4, 0xed, 0xa9, 0xf1, 0xd4, - 0xed, 0xa9, 0xf1, 0xd4, 0xed, 0xa9, 0xf2, 0xd4, 0xed, 0xa9, 0xf2, 0xd4, - 0xed, 0xa9, 0xf2, 0xd4, 0xed, 0xa9, 0xf2, 0xd4, 0xed, 0xa9, 0xf2, 0xd4, - 0xed, 0xa9, 0xf3, 0xd4, 0xed, 0xa9, 0xf3, 0xd2, 0xed, 0xa9, 0xf3, 0xd4, - 0xed, 0xa9, 0xf3, 0xd2, 0xed, 0xa9, 0xf4, 0xd4, 0xed, 0xa9, 0xf4, 0xd2, - 0xed, 0xa9, 0xf4, 0xd4, 0xed, 0xa9, 0xf4, 0xd2, 0xed, 0xa9, 0xf5, 0xd4, - 0xed, 0xa9, 0xf5, 0xd2, 0xed, 0xa9, 0xf5, 0xd4, 0xed, 0xa9, 0xf5, 0xd2, - 0xed, 0xa9, 0xf5, 0xd4, 0xed, 0xa9, 0xf6, 0xd2, 0xed, 0xa9, 0xf6, 0xd4, - 0xed, 0xa9, 0xf6, 0xd2, 0xed, 0xa9, 0xf6, 0xd4, 0xed, 0xa9, 0xf7, 0xd2, - 0xed, 0xa9, 0xf7, 0xd4, 0xed, 0xa9, 0xf7, 0xd2, 0xed, 0xa9, 0xf7, 0xd4, - 0xed, 0xa9, 0xf8, 0xd2, 0xed, 0xa9, 0xf8, 0xc7, 0xf7, 0xa9, 0xf8, 0xc7, - 0xf7, 0xa9, 0xf8, 0xc7, 0xf7, 0xa9, 0xf8, 0xc7, 0xf7, 0xa9, 0xf9, 0xc7, - 0xf7, 0xa9, 0xf9, 0xc7, 0xf7, 0xa9, 0xf9, 0xc7, 0xf7, 0xa9, 0xf9, 0xc7, - 0xf7, 0xa9, 0xfa, 0xc7, 0xf7, 0xa9, 0xfa, 0xc7, 0xf7, 0xa9, 0xfa, 0xc7, - 0xf7, 0xa9, 0xfa, 0xc7, 0xf7, 0xa9, 0xfa, 0xc7, 0xf7, 0xa9, 0xfb, 0xc7, - 0xf7, 0xa9, 0xfb, 0xc7, 0xf7, 0xa9, 0xfb, 0xc7, 0xf7, 0xa9, 0xfb, 0xc7, - 0xf7, 0xa9, 0xfc, 0xc7, 0xf7, 0xa9, 0xfc, 0xc7, 0xf7, 0xa9, 0xfc, 0xc7, - 0xf7, 0xa9, 0xfc, 0xc7, 0xf7, 0xa9, 0xfc, 0xc7, 0xf7, 0xa9, 0xfd, 0xc7, - 0xf7, 0xa9, 0xfd, 0xc7, 0xf7, 0xa9, 0xfd, 0xc7, 0xf7, 0xa9, 0xfd, 0xc7, - 0xf7, 0xa9, 0xfe, 0xc7, 0xf7, 0xa9, 0xfe, 0xc7, 0xf7, 0xa9, 0xfe, 0xc7, - 0xf7, 0xa9, 0xfe, 0xc7, 0xf7, 0xa9, 0xfe, 0xc7, 0xf7, 0xa9, 0xff, 0xc7, - 0xf7, 0xa9, 0xff, 0xc7, 0xf7, 0xa9, 0x03, 0xd8, 0x8b, 0xa9, 0x0a, 0xda, - 0x8b, 0xa9, 0x0f, 0xd8, 0x8b, 0xa9, 0x14, 0xda, 0x8b, 0xa9, 0x17, 0xd8, - 0x8b, 0xa9, 0x1b, 0xda, 0x8b, 0xa9, 0x1e, 0xd8, 0x8b, 0xa9, 0x20, 0xda, - 0x8b, 0xa9, 0x23, 0xd8, 0x8b, 0xa9, 0x25, 0xda, 0x8b, 0xa9, 0x27, 0xd8, - 0x8b, 0xa9, 0x29, 0xda, 0x8b, 0xa9, 0x2b, 0xd8, 0x8b, 0xa9, 0x2d, 0xda, - 0x8b, 0xa9, 0x2f, 0xd8, 0x8b, 0xa9, 0x31, 0xda, 0x8b, 0xa9, 0x32, 0xd8, - 0x8b, 0xa9, 0x34, 0xda, 0x8b, 0xa9, 0x35, 0xd8, 0x8b, 0xa9, 0x37, 0xda, - 0x8b, 0xa9, 0x38, 0xd8, 0x8b, 0xa9, 0x3a, 0xda, 0x8b, 0xa9, 0x3b, 0xd8, - 0x8b, 0xa9, 0x3c, 0xda, 0x8b, 0xa9, 0x3e, 0xd8, 0x8b, 0xa9, 0x3f, 0xda, - 0x8b, 0xa9, 0x40, 0xd8, 0x8b, 0xa9, 0x42, 0xda, 0x8b, 0xa9, 0x43, 0xd8, - 0x8b, 0xa9, 0x44, 0xda, 0x8b, 0xa9, 0x45, 0xd8, 0x8b, 0xa9, 0x46, 0xda, - 0x8b, 0xa9, 0x47, 0xd8, 0x8b, 0xa9, 0x48, 0xda, 0x8b, 0xa9, 0x49, 0xd8, - 0x8b, 0xa9, 0x4a, 0xda, 0x8b, 0xa9, 0x4b, 0xd8, 0x8b, 0xa9, 0x4c, 0xda, - 0x8b, 0xa9, 0x4d, 0xd8, 0x8b, 0xa9, 0x4e, 0xda, 0x8b, 0xa9, 0x4f, 0xd8, - 0x8b, 0xa9, 0x50, 0xda, 0x8b, 0xa9, 0x51, 0xd8, 0x8b, 0xa9, 0x52, 0xda, - 0x8b, 0xa9, 0x53, 0xd8, 0x8b, 0xa9, 0x54, 0xda, 0x8b, 0xa9, 0x55, 0xd8, - 0x8b, 0xa9, 0x56, 0xda, 0x8b, 0xa9, 0x57, 0xd8, 0x8b, 0xa9, 0x58, 0xda, - 0x8b, 0xa9, 0x58, 0xd8, 0x8b, 0xa9, 0x59, 0xda, 0x8b, 0xa9, 0x5a, 0xd8, - 0x8b, 0xa9, 0x5b, 0xda, 0x8b, 0xa9, 0x5c, 0xd8, 0x8b, 0xa9, 0x5d, 0xda, - 0x8b, 0xa9, 0x5d, 0xd8, 0x8b, 0xa9, 0x5e, 0xda, 0x8b, 0xa9, 0x5f, 0xd8, - 0x8b, 0xa9, 0x60, 0xda, 0x8b, 0xa9, 0x60, 0xd8, 0x8b, 0xa9, 0x61, 0xd6, - 0x8c, 0xa9, 0x62, 0xd8, 0x8b, 0xa9, 0x63, 0xd6, 0x8c, 0xa9, 0x63, 0xd8, - 0x8b, 0xa9, 0x64, 0xd6, 0x8c, 0xa9, 0x65, 0xd8, 0x8b, 0xa9, 0x66, 0xd6, - 0x8c, 0xa9, 0x66, 0xd8, 0x8b, 0xa9, 0x67, 0xd6, 0x8c, 0xa9, 0x68, 0xd8, - 0x8b, 0xa9, 0x68, 0xd6, 0x8c, 0xa9, 0x69, 0xd8, 0x8b, 0xa9, 0x6a, 0xd6, - 0x8c, 0xa9, 0x6a, 0xd8, 0x8b, 0xa9, 0x6b, 0xd6, 0x8c, 0xa9, 0x6c, 0xd8, - 0x8b, 0xa9, 0x6c, 0xd6, 0x8c, 0xa9, 0x6d, 0xd8, 0x8b, 0xa9, 0x6e, 0xd6, - 0x8c, 0xa9, 0x6e, 0xd8, 0x8b, 0xa9, 0x6f, 0xd6, 0x8c, 0xa9, 0x70, 0xd8, - 0x8b, 0xa9, 0x70, 0xd6, 0x8c, 0xa9, 0x71, 0xd8, 0x8b, 0xa9, 0x72, 0xd6, - 0x8c, 0xa9, 0x72, 0xd8, 0x8b, 0xa9, 0x73, 0xd6, 0x8c, 0xa9, 0x73, 0xd8, - 0x8b, 0xa9, 0x74, 0xd6, 0x8c, 0xa9, 0x75, 0xd8, 0x8b, 0xa9, 0x75, 0xd6, - 0x8c, 0xa9, 0x76, 0xd8, 0x8b, 0xa9, 0x76, 0xd6, 0x8c, 0xa9, 0x77, 0xd8, - 0x8b, 0xa9, 0x78, 0xd6, 0x8c, 0xa9, 0x78, 0xd8, 0x8b, 0xa9, 0x79, 0xd6, - 0x8c, 0xa9, 0x79, 0xd5, 0x8c, 0xa9, 0x7a, 0xd6, 0x8c, 0xa9, 0x7a, 0xd5, - 0x8c, 0xa9, 0x7b, 0xd6, 0x8c, 0xa9, 0x7c, 0xd5, 0x8c, 0xa9, 0x7c, 0xd6, - 0x8c, 0xa9, 0x7d, 0xd5, 0x8c, 0xa9, 0x7d, 0xd6, 0x8c, 0xa9, 0x7e, 0xd5, - 0x8c, 0xa9, 0x7e, 0xd6, 0x8c, 0xa9, 0x7f, 0xd5, 0x8c, 0xa9, 0x7f, 0xd6, - 0x8c, 0xa9, 0x80, 0xd5, 0x8c, 0xa9, 0x81, 0xd6, 0x8c, 0xa9, 0x81, 0xd5, - 0x8c, 0xa9, 0x82, 0xd6, 0x8c, 0xa9, 0x82, 0xd5, 0x8c, 0xa9, 0x83, 0xd6, - 0x8c, 0xa9, 0x83, 0xd5, 0x8c, 0xa9, 0x84, 0xd6, 0x8c, 0xa9, 0x84, 0xd5, - 0x8c, 0xa9, 0x85, 0xd6, 0x8c, 0xa9, 0x85, 0xd5, 0x8c, 0xa9, 0x86, 0xd6, - 0x8c, 0xa9, 0x86, 0xd5, 0x8c, 0xa9, 0x87, 0xd6, 0x8c, 0xa9, 0x87, 0xd5, - 0x8c, 0xa9, 0x88, 0xd6, 0x8c, 0xa9, 0x88, 0xd5, 0x8c, 0xa9, 0x89, 0xd5, - 0x8d, 0xa9, 0x89, 0xd5, 0x8c, 0xa9, 0x8a, 0xd5, 0x8d, 0xa9, 0x8a, 0xd5, - 0x8c, 0xa9, 0x8b, 0xd5, 0x8d, 0xa9, 0x8b, 0xd5, 0x8c, 0xa9, 0x8c, 0xd5, - 0x8d, 0xa9, 0x8b, 0xd5, 0x8c, 0xa9, 0x8c, 0xd5, 0x8d, 0xa9, 0x8b, 0xd5, - 0x8d, 0xa9, 0x8c, 0xd5, 0x8e, 0xa9, 0x8c, 0xd5, 0x8e, 0xa7, 0x8c, 0xd5, - 0x8e, 0xa9, 0x8c, 0xd5, 0x8f, 0xa7, 0x8c, 0xd5, 0x8f, 0xa9, 0x8c, 0xd5, - 0x90, 0xa7, 0x8c, 0xd5, 0x90, 0xa9, 0x8c, 0xd5, 0x91, 0xa7, 0x8c, 0xd5, - 0x91, 0xa9, 0x8c, 0xd5, 0x92, 0xa7, 0x8c, 0xd5, 0x92, 0xa9, 0x8c, 0xd5, - 0x93, 0xa7, 0x8c, 0xd5, 0x93, 0xa9, 0x8c, 0xd5, 0x94, 0xa7, 0x8c, 0xd5, - 0x94, 0xa9, 0x8c, 0xd5, 0x94, 0xa7, 0x8c, 0xd5, 0x95, 0xa9, 0x8c, 0xd5, - 0x95, 0xa7, 0x8c, 0xd5, 0x96, 0xa9, 0x8c, 0xd5, 0x96, 0xa7, 0x8c, 0xd5, - 0x97, 0xa9, 0x8c, 0xd5, 0x97, 0xa7, 0x8d, 0xd5, 0x98, 0xa4, 0x8c, 0xd5, - 0x98, 0xa7, 0x8d, 0xd5, 0x98, 0xa4, 0x8c, 0xd5, 0x99, 0xa7, 0x8d, 0xd5, - 0x99, 0xa4, 0x8c, 0xd5, 0x9a, 0xa7, 0x8d, 0xd5, 0x9a, 0xa4, 0x8c, 0xd5, - 0x9a, 0xa7, 0x8d, 0xd5, 0x9b, 0xa4, 0x8c, 0xd5, 0x9b, 0xa7, 0x8d, 0xd5, - 0x9c, 0xa4, 0x8c, 0xd5, 0x9c, 0xa7, 0xa1, 0xd5, 0x9d, 0x97, 0xa1, 0xd5, - 0x9d, 0x97, 0xa1, 0xd5, 0x9d, 0x97, 0xa1, 0xd5, 0x9e, 0x97, 0xa1, 0xd5, - 0x9e, 0x97, 0xa1, 0xd5, 0x9f, 0x97, 0xa1, 0xd5, 0x9f, 0x97, 0xa1, 0xd5, - 0x9f, 0x97, 0xa1, 0xd5, 0xa0, 0x97, 0xa1, 0xd5, 0xa0, 0x97, 0xa1, 0xd5, - 0xa1, 0x97, 0xa1, 0xd5, 0xa1, 0x97, 0xa1, 0xd5, 0xa1, 0x97, 0xa2, 0xd5, - 0xa2, 0x97, 0xa2, 0xd5, 0xa2, 0x97, 0xa3, 0xd5, 0xa3, 0x97, 0xa3, 0xd5, - 0xa3, 0x97, 0xa3, 0xd5, 0xa3, 0x97, 0xa3, 0xd5, 0xa4, 0x97, 0xa3, 0xd5, - 0xa4, 0x97, 0xa3, 0xd5, 0xa5, 0x97, 0xa3, 0xd5, 0xa5, 0x97, 0xa3, 0xd5, - 0xa5, 0x97, 0xa3, 0xd5, 0xa6, 0x97, 0xa3, 0xd5, 0xa6, 0x97, 0xa3, 0xd5, - 0xa6, 0x97, 0xa3, 0xd5, 0xa7, 0x97, 0xa3, 0xd5, 0xa7, 0x97, 0xa3, 0xd5, - 0xa8, 0x97, 0xa3, 0xd5, 0xa8, 0x97, 0xa3, 0xd5, 0xa8, 0x97, 0xa3, 0xd5, - 0xa9, 0x97, 0xa3, 0xd5, 0xa9, 0x97, 0xa3, 0xd5, 0xaa, 0x97, 0xa3, 0xd5, - 0xaa, 0x97, 0xa3, 0xd5, 0xaa, 0x97, 0xa3, 0xd5, 0xab, 0x97, 0xa3, 0xd5, - 0xab, 0x97, 0xa3, 0xd5, 0xab, 0x97, 0xa3, 0xd5, 0xac, 0x97, 0xa3, 0xd5, - 0xac, 0x97, 0xa3, 0xd5, 0xac, 0x97, 0xa3, 0xd5, 0xad, 0x97, 0xa3, 0xd5, - 0xad, 0x97, 0xa3, 0xd5, 0xae, 0x97, 0xa3, 0xd5, 0xae, 0x97, 0xa3, 0xd5, - 0xae, 0x97, 0xa3, 0xd5, 0xaf, 0x97, 0xa3, 0xd5, 0xaf, 0x97, 0xa3, 0xd5, - 0xaf, 0x97, 0xa3, 0xd5, 0xb0, 0x97, 0xa3, 0xd5, 0xb0, 0x97, 0xa3, 0xd5, - 0xb0, 0x97, 0xa3, 0xd5, 0xb1, 0x97, 0xa3, 0xd5, 0xb1, 0x97, 0xa3, 0xd5, - 0xb2, 0x97, 0xa3, 0xd5, 0xb2, 0x97, 0xa3, 0xd5, 0xb2, 0x97, 0xa3, 0xd5, - 0xb3, 0x97, 0xa3, 0xd5, 0xb3, 0x97, 0xa3, 0xd5, 0xb3, 0x97, 0xa3, 0xd5, - 0xb4, 0x97, 0xa3, 0xd5, 0xb4, 0x97, 0xa3, 0xd5, 0xb4, 0x97, 0xa3, 0xd5, - 0xb5, 0x97, 0xa3, 0xd5, 0xb5, 0x97, 0xa3, 0xd5, 0xb5, 0x97, 0xa3, 0xd5, - 0xb6, 0x97, 0xa3, 0xd5, 0xb6, 0x97, 0xa3, 0xd5, 0xb6, 0x97, 0xa3, 0xd5, - 0xb7, 0x97, 0xa3, 0xd5, 0xb7, 0x97, 0xa3, 0xd5, 0xb7, 0x97, 0xa3, 0xd5, - 0xb8, 0x97, 0xa3, 0xd5, 0xb8, 0x97, 0xa3, 0xd5, 0xb8, 0x97, 0xa3, 0xd5, - 0xb9, 0x97, 0xa3, 0xd5, 0xb9, 0x97, 0xa3, 0xd5, 0xb9, 0x97, 0xa3, 0xd5, - 0xba, 0x97, 0xa3, 0xd5, 0xba, 0x97, 0xa3, 0xd5, 0xba, 0x97, 0xd1, 0xd5, - 0xbb, 0xb2, 0xd1, 0xd5, 0xbb, 0xaf, 0xd1, 0xd5, 0xbb, 0xb2, 0xd1, 0xd5, - 0xbc, 0xaf, 0xd1, 0xd5, 0xbc, 0xb2, 0xd1, 0xd5, 0xbc, 0xaf, 0xd1, 0xd5, - 0xbd, 0xb2, 0xd1, 0xd5, 0xbd, 0xaf, 0xd1, 0xd5, 0xbd, 0xb2, 0xd1, 0xd5, - 0xbe, 0xaf, 0xd1, 0xd5, 0xbe, 0xad, 0xd1, 0xd5, 0xbe, 0xaf, 0xd1, 0xd5, - 0xbf, 0xad, 0xd1, 0xd5, 0xbf, 0xaf, 0xd1, 0xd5, 0xbf, 0xad, 0xd1, 0xd5, - 0xc0, 0xaf, 0xd1, 0xd5, 0xc0, 0xad, 0xd1, 0xd5, 0xc0, 0xaf, 0xd1, 0xd5, - 0xc1, 0xad, 0xd1, 0xd5, 0xc1, 0xaf, 0xd1, 0xd5, 0xc1, 0xad, 0xd1, 0xd5, - 0xc1, 0xaf, 0xd1, 0xd5, 0xc2, 0xad, 0xd1, 0xd5, 0xc2, 0xaf, 0xd1, 0xd5, - 0xc2, 0xad, 0xd1, 0xd5, 0xc3, 0xaf, 0xd1, 0xd5, 0xc3, 0xad, 0xd1, 0xd5, - 0xc3, 0xaf, 0xd1, 0xd5, 0xc4, 0xad, 0xd1, 0xd5, 0xc4, 0xaf, 0xd1, 0xd5, - 0xc4, 0xad, 0xd1, 0xd5, 0xc5, 0xaf, 0xd1, 0xd5, 0xc5, 0xad, 0xd1, 0xd5, - 0xc5, 0xaf, 0xd1, 0xd5, 0xc6, 0xad, 0xd1, 0xd5, 0xc6, 0xaf, 0xd1, 0xd5, - 0xc6, 0xad, 0xd1, 0xd5, 0xc6, 0xaf, 0xd1, 0xd5, 0xc7, 0xad, 0xd2, 0xd5, - 0xc7, 0xaa, 0xd1, 0xd5, 0xc7, 0xad, 0xd2, 0xd5, 0xc8, 0xaa, 0xd1, 0xd5, - 0xc8, 0xad, 0xd2, 0xd5, 0xc8, 0xaa, 0xd1, 0xd5, 0xc9, 0xad, 0xd2, 0xd5, - 0xc9, 0xaa, 0xd1, 0xd5, 0xc9, 0xad, 0xd2, 0xd5, 0xc9, 0xaa, 0xd1, 0xd5, - 0xca, 0xad, 0xd2, 0xd5, 0xca, 0xaa, 0xd1, 0xd5, 0xca, 0xad, 0xd2, 0xd5, - 0xcb, 0xaa, 0xd1, 0xd5, 0xcb, 0xad, 0xd2, 0xd5, 0xcb, 0xaa, 0xd1, 0xd5, - 0xcc, 0xad, 0xd2, 0xd5, 0xcc, 0xaa, 0xd1, 0xd5, 0xcc, 0xad, 0xd2, 0xd5, - 0xcc, 0xaa, 0xd1, 0xd5, 0xcd, 0xad, 0xd2, 0xd5, 0xcd, 0xaa, 0xd2, 0xd5, - 0xcd, 0xa9, 0xd2, 0xd5, 0xce, 0xaa, 0xd2, 0xd5, 0xce, 0xa9, 0xd2, 0xd5, - 0xce, 0xaa, 0xd2, 0xd5, 0xce, 0xa9, 0xd2, 0xd5, 0xcf, 0xaa, 0xd2, 0xd5, - 0xcf, 0xa9, 0xd2, 0xd5, 0xcf, 0xaa, 0xd2, 0xd5, 0xd0, 0xa9, 0xd2, 0xd5, - 0xd0, 0xaa, 0xd2, 0xd5, 0xd0, 0xa9, 0xd2, 0xd5, 0xd0, 0xaa, 0xd2, 0xd5, - 0xd1, 0xa9, 0xd2, 0xd5, 0xd1, 0xaa, 0xd2, 0xd5, 0xd1, 0xa9, 0xd2, 0xd5, - 0xd2, 0xaa, 0xd2, 0xd5, 0xd1, 0xa9, 0xd2, 0xd5, 0xd2, 0xa9, 0xd2, 0xd5, - 0xd1, 0xa9, 0xd3, 0xd5, 0xd2, 0xa9, 0xd3, 0xd5, 0xd1, 0xa9, 0xd3, 0xd5, - 0xd2, 0xa9, 0xd4, 0xd5, 0xd1, 0xa9, 0xd4, 0xd5, 0xd2, 0xa9, 0xd4, 0xd3, - 0xd2, 0xa9, 0xd4, 0xd5, 0xd2, 0xa9, 0xd5, 0xd3, 0xd2, 0xa9, 0xd5, 0xd5, - 0xd2, 0xa9, 0xd5, 0xd3, 0xd2, 0xa9, 0xd6, 0xd5, 0xd2, 0xa9, 0xd6, 0xd3, - 0xd2, 0xa9, 0xd6, 0xd5, 0xd2, 0xa9, 0xd6, 0xd3, 0xd2, 0xa9, 0xd7, 0xd5, - 0xd2, 0xa9, 0xd7, 0xd3, 0xd2, 0xa9, 0xd7, 0xd5, 0xd2, 0xa9, 0xd7, 0xd3, - 0xd2, 0xa9, 0xd8, 0xd5, 0xd2, 0xa9, 0xd8, 0xd3, 0xd2, 0xa9, 0xd8, 0xd5, - 0xd2, 0xa9, 0xd9, 0xd3, 0xd2, 0xa9, 0xd9, 0xd5, 0xd2, 0xa9, 0xd9, 0xd3, - 0xd2, 0xa9, 0xd9, 0xd5, 0xd2, 0xa9, 0xda, 0xd3, 0xd2, 0xa9, 0xda, 0xd5, - 0xd2, 0xa9, 0xda, 0xd3, 0xd2, 0xa9, 0xda, 0xd5, 0xd2, 0xa9, 0xdb, 0xd3, - 0xd2, 0xa9, 0xdb, 0xd5, 0xd2, 0xa9, 0xdb, 0xd3, 0xd2, 0xa9, 0xdb, 0xd5, - 0xd2, 0xa9, 0xdc, 0xd3, 0xd2, 0xa9, 0xdc, 0xd1, 0xd2, 0xa9, 0xdc, 0xd3, - 0xd2, 0xa9, 0xdd, 0xca, 0xdf, 0xa9, 0xdd, 0xca, 0xdf, 0xa9, 0xdd, 0xca, - 0xdf, 0xa9, 0xdd, 0xca, 0xdf, 0xa9, 0xde, 0xca, 0xdf, 0xa9, 0xde, 0xca, - 0xdf, 0xa9, 0xde, 0xca, 0xdf, 0xa9, 0xde, 0xca, 0xdf, 0xa9, 0xdf, 0xca, - 0xdf, 0xa9, 0xdf, 0xca, 0xe2, 0xa9, 0xdf, 0xca, 0xe2, 0xa9, 0xdf, 0xca, - 0xe2, 0xa9, 0xe0, 0xca, 0xe2, 0xa9, 0xe0, 0xca, 0xe2, 0xa9, 0xe0, 0xca, - 0xe2, 0xa9, 0xe1, 0xca, 0xe2, 0xa9, 0xe1, 0xd5, 0xea, 0xa9, 0xe1, 0xd6, - 0xea, 0xa9, 0xe1, 0xd5, 0xea, 0xa9, 0xe2, 0xd6, 0xea, 0xa9, 0xe2, 0xd5, - 0xea, 0xa9, 0xe2, 0xd6, 0xea, 0xa9, 0xe2, 0xd5, 0xea, 0xa9, 0xe3, 0xd6, - 0xea, 0xa9, 0xe3, 0xd5, 0xea, 0xa9, 0xe3, 0xd6, 0xea, 0xa9, 0xe3, 0xd5, - 0xea, 0xa9, 0xe4, 0xd6, 0xea, 0xa9, 0xe4, 0xd5, 0xea, 0xa9, 0xe4, 0xd6, - 0xea, 0xa9, 0xe4, 0xd5, 0xea, 0xa9, 0xe5, 0xd6, 0xea, 0xa9, 0xe5, 0xd5, - 0xea, 0xa9, 0xe5, 0xd6, 0xea, 0xa9, 0xe5, 0xd5, 0xea, 0xa9, 0xe6, 0xd6, - 0xea, 0xa9, 0xe6, 0xd5, 0xea, 0xa9, 0xe6, 0xd6, 0xea, 0xa9, 0xe6, 0xd5, - 0xea, 0xa9, 0xe7, 0xd6, 0xea, 0xa9, 0xe7, 0xd5, 0xea, 0xa9, 0xe7, 0xd6, - 0xea, 0xa9, 0xe7, 0xd5, 0xea, 0xa9, 0xe8, 0xd6, 0xea, 0xa9, 0xe8, 0xd5, - 0xea, 0xa9, 0xe8, 0xd5, 0xea, 0xa9, 0xe8, 0xd5, 0xea, 0xa9, 0xe9, 0xd5, - 0xea, 0xa9, 0xe9, 0xd5, 0xea, 0xa9, 0xe9, 0xd5, 0xea, 0xa9, 0xe9, 0xd5, - 0xea, 0xa9, 0xea, 0xd5, 0xea, 0xa9, 0xea, 0xd5, 0xea, 0xa8, 0xea, 0xd5, - 0xea, 0xa9, 0xea, 0xd5, 0xea, 0xa8, 0xea, 0xd5, 0xeb, 0xa9, 0xea, 0xd5, - 0xeb, 0xa8, 0xea, 0xd5, 0xeb, 0xa9, 0xea, 0xd5, 0xeb, 0xa8, 0xed, 0xd5, - 0xec, 0xa9, 0xed, 0xd5, 0xec, 0xa9, 0xed, 0xd5, 0xec, 0xa9, 0xed, 0xd5, - 0xec, 0xa9, 0xed, 0xd5, 0xec, 0xa9, 0xed, 0xd5, 0xed, 0xa9, 0xed, 0xd5, - 0xec, 0xa9, 0xed, 0xd5, 0xed, 0xa9, 0xed, 0xd5, 0xec, 0xa9, 0xee, 0xd5, - 0xed, 0xa9, 0xee, 0xd4, 0xed, 0xa9, 0xee, 0xd5, 0xed, 0xa9, 0xee, 0xd4, - 0xed, 0xa9, 0xef, 0xd5, 0xed, 0xa9, 0xef, 0xd4, 0xed, 0xa9, 0xef, 0xd5, - 0xed, 0xa9, 0xef, 0xd4, 0xed, 0xa9, 0xf0, 0xd5, 0xed, 0xa9, 0xf0, 0xd4, - 0xed, 0xa9, 0xf0, 0xd5, 0xed, 0xa9, 0xf0, 0xd4, 0xed, 0xa9, 0xf1, 0xd5, - 0xed, 0xa9, 0xf1, 0xd4, 0xed, 0xa9, 0xf1, 0xd5, 0xed, 0xa9, 0xf1, 0xd4, - 0xed, 0xa9, 0xf2, 0xd5, 0xed, 0xa9, 0xf2, 0xd4, 0xed, 0xa9, 0xf2, 0xd5, - 0xed, 0xa9, 0xf2, 0xd4, 0xed, 0xa9, 0xf2, 0xd5, 0xed, 0xa9, 0xf3, 0xd4, - 0xed, 0xa9, 0xf3, 0xd5, 0xed, 0xa9, 0xf3, 0xd4, 0xed, 0xa9, 0xf3, 0xd5, - 0xed, 0xa9, 0xf4, 0xd4, 0xed, 0xa9, 0xf4, 0xd5, 0xed, 0xa9, 0xf4, 0xd4, - 0xed, 0xa9, 0xf4, 0xd5, 0xed, 0xa9, 0xf5, 0xd4, 0xed, 0xa9, 0xf5, 0xd5, - 0xed, 0xa9, 0xf5, 0xd4, 0xed, 0xa9, 0xf5, 0xd5, 0xed, 0xa9, 0xf5, 0xd4, - 0xed, 0xa9, 0xf6, 0xd1, 0xed, 0xa9, 0xf6, 0xd4, 0xed, 0xa9, 0xf6, 0xd1, - 0xed, 0xa9, 0xf6, 0xd4, 0xed, 0xa9, 0xf7, 0xd1, 0xed, 0xa9, 0xf7, 0xd4, - 0xed, 0xa9, 0xf7, 0xd1, 0xed, 0xa9, 0xf7, 0xd4, 0xed, 0xa9, 0xf8, 0xd1, - 0xed, 0xa9, 0xf8, 0xd4, 0xed, 0xa9, 0xf8, 0xd1, 0xed, 0xa9, 0xf8, 0xd4, - 0xed, 0xa9, 0xf8, 0xc7, 0xf7, 0xa9, 0xf9, 0xc7, 0xf7, 0xa9, 0xf9, 0xc7, - 0xf7, 0xa9, 0xf9, 0xc7, 0xf7, 0xa9, 0xf9, 0xc7, 0xf7, 0xa9, 0xfa, 0xc7, - 0xf7, 0xa9, 0xfa, 0xc7, 0xf7, 0xa9, 0xfa, 0xc7, 0xf7, 0xa9, 0xfa, 0xc7, - 0xf7, 0xa9, 0xfa, 0xc7, 0xf7, 0xa9, 0xfb, 0xc7, 0xf7, 0xa9, 0xfb, 0xc7, - 0xf7, 0xa9, 0xfb, 0xc7, 0xf7, 0xa9, 0xfb, 0xc7, 0xf7, 0xa9, 0xfc, 0xc7, - 0xf7, 0xa9, 0xfc, 0xc7, 0xf7, 0xa9, 0xfc, 0xc7, 0xf7, 0xa9, 0xfc, 0xc7, - 0xf7, 0xa9, 0xfc, 0xc7, 0xf7, 0xa9, 0xfd, 0xc7, 0xf7, 0xa9, 0xfd, 0xc7, - 0xf7, 0xa9, 0xfd, 0xc7, 0xf7, 0xa9, 0xfd, 0xc7, 0xf7, 0xa9, 0xfe, 0xc7, - 0xf7, 0xa9, 0xfe, 0xc7, 0xf7, 0xa9, 0xfe, 0xc7, 0xf7, 0xa9, 0xfe, 0xc7, - 0xf7, 0xa9, 0xfe, 0xc7, 0xf7, 0xa9, 0xff, 0xc7, 0xf7, 0xa9, 0xff, 0xc7, - 0xf7, 0xa9, 0x03, 0xdb, 0x8a, 0xaa, 0x0a, 0xda, 0x8b, 0xaa, 0x0f, 0xdb, - 0x8a, 0xaa, 0x14, 0xda, 0x8b, 0xaa, 0x17, 0xdb, 0x8a, 0xaa, 0x1b, 0xda, - 0x8b, 0xaa, 0x1e, 0xdb, 0x8a, 0xaa, 0x20, 0xda, 0x8b, 0xaa, 0x23, 0xdb, - 0x8a, 0xaa, 0x25, 0xda, 0x8b, 0xaa, 0x27, 0xdb, 0x8a, 0xaa, 0x29, 0xda, - 0x8b, 0xaa, 0x2b, 0xdb, 0x8a, 0xaa, 0x2d, 0xda, 0x8b, 0xaa, 0x2f, 0xdb, - 0x8a, 0xaa, 0x31, 0xda, 0x8b, 0xaa, 0x32, 0xdb, 0x8a, 0xaa, 0x34, 0xda, - 0x8b, 0xaa, 0x35, 0xdb, 0x8a, 0xaa, 0x37, 0xda, 0x8b, 0xaa, 0x38, 0xdb, - 0x8a, 0xaa, 0x3a, 0xda, 0x8b, 0xaa, 0x3b, 0xdb, 0x8a, 0xaa, 0x3c, 0xda, - 0x8b, 0xaa, 0x3e, 0xd8, 0x8b, 0xaa, 0x3f, 0xda, 0x8b, 0xaa, 0x40, 0xd8, - 0x8b, 0xaa, 0x42, 0xda, 0x8b, 0xaa, 0x43, 0xd8, 0x8b, 0xaa, 0x44, 0xda, - 0x8b, 0xaa, 0x45, 0xd8, 0x8b, 0xaa, 0x46, 0xda, 0x8b, 0xaa, 0x47, 0xd8, - 0x8b, 0xaa, 0x48, 0xda, 0x8b, 0xaa, 0x49, 0xd8, 0x8b, 0xaa, 0x4a, 0xda, - 0x8b, 0xaa, 0x4b, 0xd8, 0x8b, 0xaa, 0x4c, 0xda, 0x8b, 0xaa, 0x4d, 0xd8, - 0x8b, 0xaa, 0x4e, 0xda, 0x8b, 0xaa, 0x4f, 0xd8, 0x8b, 0xaa, 0x50, 0xda, - 0x8b, 0xaa, 0x51, 0xd8, 0x8b, 0xaa, 0x52, 0xda, 0x8b, 0xaa, 0x53, 0xd8, - 0x8b, 0xaa, 0x54, 0xda, 0x8b, 0xaa, 0x55, 0xd8, 0x8b, 0xaa, 0x56, 0xda, - 0x8b, 0xaa, 0x57, 0xd8, 0x8b, 0xaa, 0x58, 0xda, 0x8b, 0xaa, 0x58, 0xd8, - 0x8b, 0xaa, 0x59, 0xda, 0x8b, 0xaa, 0x5a, 0xd8, 0x8b, 0xaa, 0x5b, 0xda, - 0x8b, 0xaa, 0x5c, 0xd8, 0x8b, 0xaa, 0x5d, 0xda, 0x8b, 0xaa, 0x5d, 0xd8, - 0x8b, 0xaa, 0x5e, 0xd6, 0x8c, 0xaa, 0x5f, 0xd8, 0x8b, 0xaa, 0x60, 0xd6, - 0x8c, 0xaa, 0x60, 0xd8, 0x8b, 0xaa, 0x61, 0xd6, 0x8c, 0xaa, 0x62, 0xd8, - 0x8b, 0xaa, 0x63, 0xd6, 0x8c, 0xaa, 0x63, 0xd8, 0x8b, 0xaa, 0x64, 0xd6, - 0x8c, 0xaa, 0x65, 0xd8, 0x8b, 0xaa, 0x66, 0xd6, 0x8c, 0xaa, 0x66, 0xd8, - 0x8b, 0xaa, 0x67, 0xd6, 0x8c, 0xaa, 0x68, 0xd8, 0x8b, 0xaa, 0x68, 0xd6, - 0x8c, 0xaa, 0x69, 0xd8, 0x8b, 0xaa, 0x6a, 0xd6, 0x8c, 0xaa, 0x6a, 0xd8, - 0x8b, 0xaa, 0x6b, 0xd6, 0x8c, 0xaa, 0x6c, 0xd8, 0x8b, 0xaa, 0x6c, 0xd6, - 0x8c, 0xaa, 0x6d, 0xd8, 0x8b, 0xaa, 0x6e, 0xd6, 0x8c, 0xaa, 0x6e, 0xd8, - 0x8b, 0xaa, 0x6f, 0xd6, 0x8c, 0xaa, 0x70, 0xd8, 0x8b, 0xaa, 0x70, 0xd6, - 0x8c, 0xaa, 0x71, 0xd8, 0x8b, 0xaa, 0x72, 0xd6, 0x8c, 0xaa, 0x72, 0xd8, - 0x8b, 0xaa, 0x73, 0xd6, 0x8c, 0xaa, 0x73, 0xd8, 0x8b, 0xaa, 0x74, 0xd6, - 0x8c, 0xaa, 0x75, 0xd8, 0x8b, 0xaa, 0x75, 0xd6, 0x8c, 0xaa, 0x76, 0xd8, - 0x8b, 0xaa, 0x76, 0xd6, 0x8c, 0xaa, 0x77, 0xd8, 0x8b, 0xaa, 0x78, 0xd6, - 0x8c, 0xaa, 0x78, 0xd8, 0x8b, 0xaa, 0x79, 0xd6, 0x8c, 0xaa, 0x79, 0xd5, - 0x8c, 0xaa, 0x7a, 0xd6, 0x8c, 0xaa, 0x7a, 0xd5, 0x8c, 0xaa, 0x7b, 0xd6, - 0x8c, 0xaa, 0x7c, 0xd5, 0x8c, 0xaa, 0x7c, 0xd6, 0x8c, 0xaa, 0x7d, 0xd5, - 0x8c, 0xaa, 0x7d, 0xd6, 0x8c, 0xaa, 0x7e, 0xd5, 0x8c, 0xaa, 0x7e, 0xd6, - 0x8c, 0xaa, 0x7f, 0xd5, 0x8c, 0xaa, 0x7f, 0xd6, 0x8c, 0xaa, 0x80, 0xd5, - 0x8c, 0xaa, 0x81, 0xd6, 0x8c, 0xaa, 0x81, 0xd5, 0x8c, 0xaa, 0x82, 0xd6, - 0x8c, 0xaa, 0x82, 0xd5, 0x8c, 0xaa, 0x83, 0xd6, 0x8c, 0xaa, 0x83, 0xd5, - 0x8c, 0xaa, 0x84, 0xd6, 0x8c, 0xaa, 0x84, 0xd5, 0x8c, 0xaa, 0x85, 0xd6, - 0x8c, 0xaa, 0x85, 0xd5, 0x8c, 0xaa, 0x86, 0xd6, 0x8c, 0xaa, 0x86, 0xd5, - 0x8c, 0xaa, 0x87, 0xd6, 0x8c, 0xaa, 0x87, 0xd5, 0x8c, 0xaa, 0x88, 0xd6, - 0x8c, 0xaa, 0x88, 0xd5, 0x8c, 0xaa, 0x89, 0xd6, 0x8c, 0xaa, 0x89, 0xd5, - 0x8c, 0xaa, 0x8a, 0xd6, 0x8c, 0xaa, 0x8a, 0xd5, 0x8c, 0xaa, 0x8b, 0xd5, - 0x8d, 0xaa, 0x8b, 0xd5, 0x8c, 0xaa, 0x8c, 0xd5, 0x8d, 0xaa, 0x8b, 0xd5, - 0x8c, 0xaa, 0x8c, 0xd5, 0x8d, 0xaa, 0x8b, 0xd5, 0x8d, 0xaa, 0x8c, 0xd5, - 0x8e, 0xaa, 0x8c, 0xd5, 0x8e, 0xa8, 0x8c, 0xd5, 0x8e, 0xaa, 0x8c, 0xd5, - 0x8f, 0xa8, 0x8c, 0xd5, 0x8f, 0xaa, 0x8c, 0xd5, 0x90, 0xa8, 0x8c, 0xd5, - 0x90, 0xaa, 0x8c, 0xd5, 0x91, 0xa8, 0x8c, 0xd5, 0x91, 0xaa, 0x8c, 0xd5, - 0x92, 0xa8, 0x8c, 0xd5, 0x92, 0xaa, 0x8c, 0xd5, 0x93, 0xa8, 0x8c, 0xd5, - 0x93, 0xaa, 0x8c, 0xd5, 0x94, 0xa8, 0x8c, 0xd5, 0x94, 0xaa, 0x8c, 0xd5, - 0x94, 0xa8, 0x8c, 0xd5, 0x95, 0xaa, 0x8c, 0xd5, 0x95, 0xa8, 0x8c, 0xd5, - 0x96, 0xaa, 0x8c, 0xd5, 0x96, 0xa8, 0x8c, 0xd5, 0x97, 0xaa, 0x8c, 0xd5, - 0x97, 0xa8, 0x8d, 0xd5, 0x98, 0xa5, 0x8c, 0xd5, 0x98, 0xa8, 0x8d, 0xd5, - 0x98, 0xa5, 0x8c, 0xd5, 0x99, 0xa8, 0x8d, 0xd5, 0x99, 0xa5, 0x8c, 0xd5, - 0x9a, 0xa8, 0x8d, 0xd5, 0x9a, 0xa5, 0x8c, 0xd5, 0x9a, 0xa8, 0x8d, 0xd5, - 0x9b, 0xa5, 0x8c, 0xd5, 0x9b, 0xa8, 0x8d, 0xd5, 0x9c, 0xa5, 0x8c, 0xd5, - 0x9c, 0xa8, 0x8d, 0xd5, 0x9d, 0xa5, 0x9f, 0xd5, 0x9d, 0x97, 0x9f, 0xd5, - 0x9d, 0x97, 0x9f, 0xd5, 0x9e, 0x97, 0xa3, 0xd5, 0x9e, 0x98, 0x9f, 0xd5, - 0x9f, 0x97, 0xa3, 0xd5, 0x9f, 0x98, 0x9f, 0xd5, 0x9f, 0x97, 0xa3, 0xd5, - 0xa0, 0x98, 0xa0, 0xd5, 0xa0, 0x97, 0xa3, 0xd5, 0xa1, 0x98, 0xa1, 0xd5, - 0xa1, 0x97, 0xa3, 0xd5, 0xa1, 0x98, 0xa2, 0xd5, 0xa2, 0x97, 0xa3, 0xd5, - 0xa2, 0x98, 0xa3, 0xd5, 0xa3, 0x97, 0xa3, 0xd5, 0xa3, 0x98, 0xa3, 0xd5, - 0xa3, 0x97, 0xa3, 0xd5, 0xa4, 0x98, 0xa3, 0xd5, 0xa4, 0x97, 0xa3, 0xd5, - 0xa5, 0x98, 0xa3, 0xd5, 0xa5, 0x97, 0xa3, 0xd5, 0xa5, 0x98, 0xa3, 0xd5, - 0xa6, 0x97, 0xa3, 0xd5, 0xa6, 0x98, 0xa3, 0xd5, 0xa6, 0x97, 0xa3, 0xd5, - 0xa7, 0x98, 0xa3, 0xd5, 0xa7, 0x97, 0xa3, 0xd5, 0xa8, 0x98, 0xa3, 0xd5, - 0xa8, 0x97, 0xa3, 0xd5, 0xa8, 0x98, 0xa3, 0xd5, 0xa9, 0x97, 0xa3, 0xd5, - 0xa9, 0x98, 0xa3, 0xd5, 0xaa, 0x97, 0xa3, 0xd5, 0xaa, 0x98, 0xa3, 0xd5, - 0xaa, 0x97, 0xa3, 0xd5, 0xab, 0x98, 0xa3, 0xd5, 0xab, 0x97, 0xa3, 0xd5, - 0xab, 0x98, 0xa3, 0xd5, 0xac, 0x97, 0xa3, 0xd5, 0xac, 0x98, 0xa3, 0xd5, - 0xac, 0x97, 0xa3, 0xd5, 0xad, 0x98, 0xa3, 0xd5, 0xad, 0x97, 0xa3, 0xd5, - 0xae, 0x98, 0xa3, 0xd5, 0xae, 0x97, 0xa3, 0xd5, 0xae, 0x98, 0xa3, 0xd5, - 0xaf, 0x97, 0xa3, 0xd5, 0xaf, 0x98, 0xa3, 0xd5, 0xaf, 0x97, 0xa3, 0xd5, - 0xb0, 0x98, 0xa3, 0xd5, 0xb0, 0x97, 0xa3, 0xd5, 0xb0, 0x98, 0xa3, 0xd5, - 0xb1, 0x97, 0xa3, 0xd5, 0xb1, 0x98, 0xa3, 0xd5, 0xb2, 0x97, 0xa3, 0xd5, - 0xb2, 0x98, 0xa3, 0xd5, 0xb2, 0x97, 0xa3, 0xd5, 0xb3, 0x98, 0xa3, 0xd5, - 0xb3, 0x97, 0xa3, 0xd5, 0xb3, 0x98, 0xa3, 0xd5, 0xb4, 0x97, 0xa3, 0xd5, - 0xb4, 0x98, 0xa3, 0xd5, 0xb4, 0x97, 0xa3, 0xd5, 0xb5, 0x98, 0xa3, 0xd5, - 0xb5, 0x97, 0xa3, 0xd5, 0xb5, 0x98, 0xa3, 0xd5, 0xb6, 0x97, 0xa3, 0xd5, - 0xb6, 0x98, 0xa3, 0xd5, 0xb6, 0x97, 0xa3, 0xd5, 0xb7, 0x98, 0xa3, 0xd5, - 0xb7, 0x97, 0xa3, 0xd5, 0xb7, 0x98, 0xa3, 0xd5, 0xb8, 0x97, 0xa3, 0xd5, - 0xb8, 0x98, 0xa3, 0xd5, 0xb8, 0x97, 0xa3, 0xd5, 0xb9, 0x98, 0xa3, 0xd5, - 0xb9, 0x97, 0xa3, 0xd5, 0xb9, 0x98, 0xa3, 0xd5, 0xba, 0x97, 0xa3, 0xd5, - 0xba, 0x98, 0xa3, 0xd5, 0xba, 0x97, 0xd1, 0xd5, 0xbb, 0xb3, 0xd1, 0xd5, - 0xbb, 0xb0, 0xd1, 0xd5, 0xbb, 0xad, 0xd1, 0xd5, 0xbc, 0xb0, 0xd1, 0xd5, - 0xbc, 0xad, 0xd1, 0xd5, 0xbc, 0xb0, 0xd1, 0xd5, 0xbd, 0xad, 0xd1, 0xd5, - 0xbd, 0xb0, 0xd1, 0xd5, 0xbd, 0xad, 0xd1, 0xd5, 0xbe, 0xb0, 0xd1, 0xd5, - 0xbe, 0xad, 0xd1, 0xd5, 0xbe, 0xb0, 0xd1, 0xd5, 0xbf, 0xad, 0xd1, 0xd5, - 0xbf, 0xb0, 0xd1, 0xd5, 0xbf, 0xad, 0xd1, 0xd5, 0xc0, 0xb0, 0xd1, 0xd5, - 0xc0, 0xad, 0xd1, 0xd5, 0xc0, 0xb0, 0xd1, 0xd5, 0xc1, 0xad, 0xd1, 0xd5, - 0xc1, 0xb0, 0xd1, 0xd5, 0xc1, 0xad, 0xd1, 0xd5, 0xc1, 0xb0, 0xd1, 0xd5, - 0xc2, 0xad, 0xd1, 0xd5, 0xc2, 0xb0, 0xd1, 0xd5, 0xc2, 0xad, 0xd1, 0xd5, - 0xc3, 0xb0, 0xd1, 0xd5, 0xc3, 0xad, 0xd1, 0xd5, 0xc3, 0xb0, 0xd1, 0xd5, - 0xc4, 0xad, 0xd1, 0xd5, 0xc4, 0xb0, 0xd1, 0xd5, 0xc4, 0xad, 0xd1, 0xd5, - 0xc5, 0xb0, 0xd1, 0xd5, 0xc5, 0xad, 0xd1, 0xd5, 0xc5, 0xb0, 0xd1, 0xd5, - 0xc6, 0xad, 0xd1, 0xd5, 0xc6, 0xb0, 0xd1, 0xd5, 0xc6, 0xad, 0xd1, 0xd5, - 0xc6, 0xb0, 0xd1, 0xd5, 0xc7, 0xad, 0xd2, 0xd5, 0xc7, 0xaa, 0xd1, 0xd5, - 0xc7, 0xad, 0xd2, 0xd5, 0xc8, 0xaa, 0xd1, 0xd5, 0xc8, 0xad, 0xd2, 0xd5, - 0xc8, 0xaa, 0xd1, 0xd5, 0xc9, 0xad, 0xd2, 0xd5, 0xc9, 0xaa, 0xd1, 0xd5, - 0xc9, 0xad, 0xd2, 0xd5, 0xc9, 0xaa, 0xd1, 0xd5, 0xca, 0xad, 0xd2, 0xd5, - 0xca, 0xaa, 0xd1, 0xd5, 0xca, 0xad, 0xd2, 0xd5, 0xcb, 0xaa, 0xd1, 0xd5, - 0xcb, 0xad, 0xd2, 0xd5, 0xcb, 0xaa, 0xd1, 0xd5, 0xcc, 0xad, 0xd2, 0xd5, - 0xcc, 0xaa, 0xd1, 0xd5, 0xcc, 0xad, 0xd2, 0xd5, 0xcc, 0xaa, 0xd1, 0xd5, - 0xcd, 0xad, 0xd2, 0xd5, 0xcd, 0xaa, 0xd1, 0xd5, 0xcd, 0xad, 0xd2, 0xd5, - 0xce, 0xaa, 0xd1, 0xd5, 0xce, 0xad, 0xd2, 0xd5, 0xce, 0xaa, 0xd1, 0xd5, - 0xce, 0xad, 0xd2, 0xd5, 0xcf, 0xaa, 0xd1, 0xd5, 0xcf, 0xad, 0xd2, 0xd5, - 0xcf, 0xaa, 0xd2, 0xd5, 0xd0, 0xaa, 0xd2, 0xd5, 0xd0, 0xaa, 0xd2, 0xd5, - 0xd0, 0xaa, 0xd2, 0xd5, 0xd0, 0xaa, 0xd2, 0xd5, 0xd1, 0xaa, 0xd2, 0xd5, - 0xd1, 0xaa, 0xd2, 0xd5, 0xd1, 0xaa, 0xd2, 0xd4, 0xd2, 0xaa, 0xd2, 0xd5, - 0xd1, 0xaa, 0xd2, 0xd4, 0xd2, 0xaa, 0xd2, 0xd5, 0xd1, 0xaa, 0xd3, 0xd4, - 0xd2, 0xaa, 0xd3, 0xd5, 0xd1, 0xaa, 0xd3, 0xd4, 0xd2, 0xaa, 0xd4, 0xd5, - 0xd1, 0xaa, 0xd4, 0xd4, 0xd2, 0xaa, 0xd4, 0xd3, 0xd2, 0xaa, 0xd4, 0xd4, - 0xd2, 0xaa, 0xd5, 0xd3, 0xd2, 0xaa, 0xd5, 0xd4, 0xd2, 0xaa, 0xd5, 0xd3, - 0xd2, 0xaa, 0xd6, 0xd4, 0xd2, 0xaa, 0xd6, 0xd3, 0xd2, 0xaa, 0xd6, 0xd4, - 0xd2, 0xaa, 0xd6, 0xd3, 0xd2, 0xaa, 0xd7, 0xd4, 0xd2, 0xaa, 0xd7, 0xd3, - 0xd2, 0xaa, 0xd7, 0xd4, 0xd2, 0xaa, 0xd7, 0xd3, 0xd2, 0xaa, 0xd8, 0xd4, - 0xd2, 0xaa, 0xd8, 0xd3, 0xd2, 0xaa, 0xd8, 0xd4, 0xd2, 0xaa, 0xd9, 0xd3, - 0xd2, 0xaa, 0xd9, 0xd4, 0xd2, 0xaa, 0xd9, 0xd3, 0xd2, 0xaa, 0xd9, 0xd4, - 0xd2, 0xaa, 0xda, 0xd3, 0xd2, 0xaa, 0xda, 0xd4, 0xd2, 0xaa, 0xda, 0xd3, - 0xd2, 0xaa, 0xda, 0xd4, 0xd2, 0xaa, 0xdb, 0xd3, 0xd2, 0xaa, 0xdb, 0xd4, - 0xd2, 0xaa, 0xdb, 0xd3, 0xd2, 0xaa, 0xdb, 0xd4, 0xd2, 0xaa, 0xdc, 0xd3, - 0xd2, 0xaa, 0xdc, 0xd2, 0xd2, 0xaa, 0xdc, 0xd3, 0xd2, 0xaa, 0xdd, 0xd2, - 0xd2, 0xaa, 0xdd, 0xc9, 0xde, 0xaa, 0xdd, 0xc9, 0xde, 0xaa, 0xdd, 0xc9, - 0xde, 0xaa, 0xde, 0xca, 0xe1, 0xaa, 0xde, 0xca, 0xe1, 0xaa, 0xde, 0xca, - 0xe1, 0xaa, 0xde, 0xca, 0xe1, 0xaa, 0xdf, 0xca, 0xe1, 0xaa, 0xdf, 0xca, - 0xe1, 0xaa, 0xdf, 0xca, 0xe1, 0xaa, 0xdf, 0xca, 0xe1, 0xaa, 0xe0, 0xca, - 0xe1, 0xaa, 0xe0, 0xca, 0xe1, 0xaa, 0xe0, 0xd8, 0xe9, 0xaa, 0xe1, 0xd6, - 0xea, 0xaa, 0xe1, 0xd8, 0xe9, 0xaa, 0xe1, 0xd6, 0xea, 0xaa, 0xe1, 0xd8, - 0xe9, 0xaa, 0xe2, 0xd6, 0xea, 0xaa, 0xe2, 0xd8, 0xe9, 0xaa, 0xe2, 0xd6, - 0xea, 0xaa, 0xe2, 0xd8, 0xe9, 0xaa, 0xe3, 0xd6, 0xea, 0xaa, 0xe3, 0xd8, - 0xe9, 0xaa, 0xe3, 0xd6, 0xea, 0xaa, 0xe3, 0xd8, 0xe9, 0xaa, 0xe4, 0xd6, - 0xea, 0xaa, 0xe4, 0xd5, 0xea, 0xaa, 0xe4, 0xd6, 0xea, 0xaa, 0xe4, 0xd5, - 0xea, 0xaa, 0xe5, 0xd6, 0xea, 0xaa, 0xe5, 0xd5, 0xea, 0xaa, 0xe5, 0xd6, - 0xea, 0xaa, 0xe5, 0xd5, 0xea, 0xaa, 0xe6, 0xd6, 0xea, 0xaa, 0xe6, 0xd5, - 0xea, 0xaa, 0xe6, 0xd6, 0xea, 0xaa, 0xe6, 0xd5, 0xea, 0xaa, 0xe7, 0xd6, - 0xea, 0xaa, 0xe7, 0xd5, 0xea, 0xaa, 0xe7, 0xd6, 0xea, 0xaa, 0xe7, 0xd5, - 0xea, 0xaa, 0xe8, 0xd6, 0xea, 0xaa, 0xe8, 0xd5, 0xea, 0xaa, 0xe8, 0xd6, - 0xea, 0xaa, 0xe8, 0xd5, 0xea, 0xaa, 0xe9, 0xd6, 0xea, 0xaa, 0xe9, 0xd5, - 0xea, 0xaa, 0xe9, 0xd5, 0xea, 0xaa, 0xe9, 0xd5, 0xea, 0xaa, 0xea, 0xd5, - 0xea, 0xaa, 0xea, 0xd5, 0xea, 0xa9, 0xea, 0xd5, 0xea, 0xaa, 0xea, 0xd5, - 0xea, 0xa9, 0xea, 0xd5, 0xeb, 0xaa, 0xea, 0xd5, 0xeb, 0xa9, 0xea, 0xd5, - 0xeb, 0xaa, 0xea, 0xd5, 0xeb, 0xa9, 0xed, 0xd5, 0xec, 0xaa, 0xed, 0xd5, - 0xec, 0xac, 0xed, 0xd5, 0xec, 0xaa, 0xed, 0xd5, 0xec, 0xaa, 0xed, 0xd5, - 0xec, 0xaa, 0xed, 0xd5, 0xed, 0xaa, 0xed, 0xd5, 0xec, 0xaa, 0xed, 0xd5, - 0xed, 0xaa, 0xed, 0xd5, 0xec, 0xaa, 0xee, 0xd5, 0xed, 0xaa, 0xee, 0xd4, - 0xed, 0xaa, 0xee, 0xd5, 0xed, 0xaa, 0xee, 0xd4, 0xed, 0xaa, 0xef, 0xd5, - 0xed, 0xaa, 0xef, 0xd4, 0xed, 0xaa, 0xef, 0xd5, 0xed, 0xaa, 0xef, 0xd4, - 0xed, 0xaa, 0xf0, 0xd5, 0xed, 0xaa, 0xf0, 0xd4, 0xed, 0xaa, 0xf0, 0xd5, - 0xed, 0xaa, 0xf0, 0xd4, 0xed, 0xaa, 0xf1, 0xd5, 0xed, 0xaa, 0xf1, 0xd4, - 0xed, 0xaa, 0xf1, 0xd5, 0xed, 0xaa, 0xf1, 0xd4, 0xed, 0xaa, 0xf2, 0xd5, - 0xed, 0xaa, 0xf2, 0xd4, 0xed, 0xaa, 0xf2, 0xd5, 0xed, 0xaa, 0xf2, 0xd4, - 0xed, 0xaa, 0xf2, 0xd5, 0xed, 0xaa, 0xf3, 0xd4, 0xed, 0xaa, 0xf3, 0xd5, - 0xed, 0xaa, 0xf3, 0xd4, 0xed, 0xaa, 0xf3, 0xd5, 0xed, 0xaa, 0xf4, 0xd4, - 0xed, 0xaa, 0xf4, 0xd5, 0xed, 0xaa, 0xf4, 0xd4, 0xed, 0xaa, 0xf4, 0xd5, - 0xed, 0xaa, 0xf5, 0xd4, 0xed, 0xaa, 0xf5, 0xd5, 0xed, 0xaa, 0xf5, 0xd4, - 0xed, 0xaa, 0xf5, 0xd5, 0xed, 0xaa, 0xf5, 0xd4, 0xed, 0xaa, 0xf6, 0xd2, - 0xed, 0xaa, 0xf6, 0xd4, 0xed, 0xaa, 0xf6, 0xd2, 0xed, 0xaa, 0xf6, 0xd4, - 0xed, 0xaa, 0xf7, 0xd2, 0xed, 0xaa, 0xf7, 0xd4, 0xed, 0xaa, 0xf7, 0xd2, - 0xed, 0xaa, 0xf7, 0xd4, 0xed, 0xaa, 0xf8, 0xd2, 0xed, 0xaa, 0xf8, 0xd4, - 0xed, 0xaa, 0xf8, 0xd2, 0xed, 0xaa, 0xf8, 0xd4, 0xed, 0xaa, 0xf8, 0xc7, - 0xf7, 0xaa, 0xf9, 0xc7, 0xf7, 0xaa, 0xf9, 0xc7, 0xf7, 0xaa, 0xf9, 0xc7, - 0xf7, 0xaa, 0xf9, 0xc7, 0xf7, 0xaa, 0xfa, 0xc7, 0xf7, 0xaa, 0xfa, 0xc7, - 0xf7, 0xaa, 0xfa, 0xc7, 0xf7, 0xaa, 0xfa, 0xc7, 0xf7, 0xaa, 0xfa, 0xc7, - 0xf7, 0xaa, 0xfb, 0xc7, 0xf7, 0xaa, 0xfb, 0xc7, 0xf7, 0xaa, 0xfb, 0xc7, - 0xf7, 0xaa, 0xfb, 0xc7, 0xf7, 0xaa, 0xfc, 0xc7, 0xf7, 0xaa, 0xfc, 0xc7, - 0xf7, 0xaa, 0xfc, 0xc7, 0xf7, 0xaa, 0xfc, 0xc7, 0xf7, 0xaa, 0xfc, 0xc7, - 0xf7, 0xaa, 0xfd, 0xc7, 0xf7, 0xaa, 0xfd, 0xc7, 0xf7, 0xaa, 0xfd, 0xc7, - 0xf7, 0xaa, 0xfd, 0xc7, 0xf7, 0xaa, 0xfe, 0xc7, 0xf7, 0xaa, 0xfe, 0xc7, - 0xf7, 0xaa, 0xfe, 0xc7, 0xf7, 0xaa, 0xfe, 0xc7, 0xf7, 0xaa, 0xfe, 0xc7, - 0xf7, 0xaa, 0xff, 0xc7, 0xf7, 0xaa, 0xff, 0xc7, 0xf7, 0xaa, 0x03, 0xdc, - 0x8a, 0xaa, 0x0a, 0xda, 0x8b, 0xaa, 0x0f, 0xdc, 0x8a, 0xaa, 0x14, 0xda, - 0x8b, 0xaa, 0x17, 0xdc, 0x8a, 0xaa, 0x1b, 0xda, 0x8b, 0xaa, 0x1e, 0xdc, - 0x8a, 0xaa, 0x20, 0xda, 0x8b, 0xaa, 0x23, 0xdc, 0x8a, 0xaa, 0x25, 0xda, - 0x8b, 0xaa, 0x27, 0xdc, 0x8a, 0xaa, 0x29, 0xda, 0x8b, 0xaa, 0x2b, 0xd8, - 0x8b, 0xaa, 0x2d, 0xda, 0x8b, 0xaa, 0x2f, 0xd8, 0x8b, 0xaa, 0x31, 0xda, - 0x8b, 0xaa, 0x32, 0xd8, 0x8b, 0xaa, 0x34, 0xda, 0x8b, 0xaa, 0x35, 0xd8, - 0x8b, 0xaa, 0x37, 0xda, 0x8b, 0xaa, 0x38, 0xd8, 0x8b, 0xaa, 0x3a, 0xda, - 0x8b, 0xaa, 0x3b, 0xd8, 0x8b, 0xaa, 0x3c, 0xda, 0x8b, 0xaa, 0x3e, 0xd8, - 0x8b, 0xaa, 0x3f, 0xda, 0x8b, 0xaa, 0x40, 0xd8, 0x8b, 0xaa, 0x42, 0xda, - 0x8b, 0xaa, 0x43, 0xd8, 0x8b, 0xaa, 0x44, 0xda, 0x8b, 0xaa, 0x45, 0xd8, - 0x8b, 0xaa, 0x46, 0xda, 0x8b, 0xaa, 0x47, 0xd8, 0x8b, 0xaa, 0x48, 0xda, - 0x8b, 0xaa, 0x49, 0xd8, 0x8b, 0xaa, 0x4a, 0xda, 0x8b, 0xaa, 0x4b, 0xd8, - 0x8b, 0xaa, 0x4c, 0xda, 0x8b, 0xaa, 0x4d, 0xd8, 0x8b, 0xaa, 0x4e, 0xda, - 0x8b, 0xaa, 0x4f, 0xd8, 0x8b, 0xaa, 0x50, 0xda, 0x8b, 0xaa, 0x51, 0xd8, - 0x8b, 0xaa, 0x52, 0xda, 0x8b, 0xaa, 0x53, 0xd8, 0x8b, 0xaa, 0x54, 0xda, - 0x8b, 0xaa, 0x55, 0xd8, 0x8b, 0xaa, 0x56, 0xda, 0x8b, 0xaa, 0x57, 0xd8, - 0x8b, 0xaa, 0x58, 0xda, 0x8b, 0xaa, 0x58, 0xd8, 0x8b, 0xaa, 0x59, 0xda, - 0x8b, 0xaa, 0x5a, 0xd8, 0x8b, 0xaa, 0x5b, 0xda, 0x8b, 0xaa, 0x5c, 0xd8, - 0x8b, 0xaa, 0x5d, 0xda, 0x8b, 0xaa, 0x5d, 0xd8, 0x8b, 0xaa, 0x5e, 0xda, - 0x8b, 0xaa, 0x5f, 0xd8, 0x8b, 0xaa, 0x60, 0xda, 0x8b, 0xaa, 0x60, 0xd8, - 0x8b, 0xaa, 0x61, 0xda, 0x8b, 0xaa, 0x62, 0xd8, 0x8b, 0xaa, 0x63, 0xda, - 0x8b, 0xaa, 0x63, 0xd8, 0x8b, 0xaa, 0x64, 0xda, 0x8b, 0xaa, 0x65, 0xd8, - 0x8b, 0xaa, 0x66, 0xda, 0x8b, 0xaa, 0x66, 0xd8, 0x8b, 0xaa, 0x67, 0xda, - 0x8b, 0xaa, 0x68, 0xd8, 0x8b, 0xaa, 0x68, 0xda, 0x8b, 0xaa, 0x69, 0xd8, - 0x8b, 0xaa, 0x6a, 0xd6, 0x8c, 0xaa, 0x6a, 0xd8, 0x8b, 0xaa, 0x6b, 0xd6, - 0x8c, 0xaa, 0x6c, 0xd8, 0x8b, 0xaa, 0x6c, 0xd6, 0x8c, 0xaa, 0x6d, 0xd8, - 0x8b, 0xaa, 0x6e, 0xd6, 0x8c, 0xaa, 0x6e, 0xd8, 0x8b, 0xaa, 0x6f, 0xd6, - 0x8c, 0xaa, 0x70, 0xd8, 0x8b, 0xaa, 0x70, 0xd6, 0x8c, 0xaa, 0x71, 0xd8, - 0x8b, 0xaa, 0x72, 0xd6, 0x8c, 0xaa, 0x72, 0xd8, 0x8b, 0xaa, 0x73, 0xd6, - 0x8c, 0xaa, 0x73, 0xd8, 0x8b, 0xaa, 0x74, 0xd6, 0x8c, 0xaa, 0x75, 0xd8, - 0x8b, 0xaa, 0x75, 0xd6, 0x8c, 0xaa, 0x76, 0xd8, 0x8b, 0xaa, 0x76, 0xd6, - 0x8c, 0xaa, 0x77, 0xd8, 0x8b, 0xaa, 0x78, 0xd6, 0x8c, 0xaa, 0x78, 0xd8, - 0x8b, 0xaa, 0x79, 0xd6, 0x8c, 0xaa, 0x79, 0xd8, 0x8b, 0xaa, 0x7a, 0xd6, - 0x8c, 0xaa, 0x7a, 0xd8, 0x8b, 0xaa, 0x7b, 0xd6, 0x8c, 0xaa, 0x7c, 0xd8, - 0x8b, 0xaa, 0x7c, 0xd6, 0x8c, 0xaa, 0x7d, 0xd8, 0x8b, 0xaa, 0x7d, 0xd6, - 0x8c, 0xaa, 0x7e, 0xd8, 0x8b, 0xaa, 0x7e, 0xd6, 0x8c, 0xaa, 0x7f, 0xd8, - 0x8b, 0xaa, 0x7f, 0xd6, 0x8c, 0xaa, 0x80, 0xd5, 0x8c, 0xaa, 0x81, 0xd6, - 0x8c, 0xaa, 0x81, 0xd5, 0x8c, 0xaa, 0x82, 0xd6, 0x8c, 0xaa, 0x82, 0xd5, - 0x8c, 0xaa, 0x83, 0xd6, 0x8c, 0xaa, 0x83, 0xd5, 0x8c, 0xaa, 0x84, 0xd6, - 0x8c, 0xaa, 0x84, 0xd5, 0x8c, 0xaa, 0x85, 0xd6, 0x8c, 0xaa, 0x85, 0xd5, - 0x8c, 0xaa, 0x86, 0xd6, 0x8c, 0xaa, 0x86, 0xd5, 0x8c, 0xaa, 0x87, 0xd6, - 0x8c, 0xaa, 0x87, 0xd5, 0x8c, 0xaa, 0x88, 0xd6, 0x8c, 0xaa, 0x88, 0xd5, - 0x8c, 0xaa, 0x89, 0xd6, 0x8c, 0xaa, 0x89, 0xd5, 0x8c, 0xaa, 0x8a, 0xd6, - 0x8c, 0xaa, 0x8a, 0xd5, 0x8c, 0xaa, 0x8b, 0xd5, 0x8d, 0xaa, 0x8b, 0xd5, - 0x8c, 0xaa, 0x8c, 0xd5, 0x8d, 0xaa, 0x8b, 0xd5, 0x8c, 0xaa, 0x8c, 0xd5, - 0x8d, 0xaa, 0x8b, 0xd5, 0x8d, 0xaa, 0x8c, 0xd5, 0x8e, 0xaa, 0x8b, 0xd5, - 0x8e, 0xaa, 0x8c, 0xd5, 0x8e, 0xaa, 0x8b, 0xd5, 0x8f, 0xaa, 0x8c, 0xd5, - 0x8f, 0xaa, 0x8c, 0xd5, 0x90, 0xa7, 0x8c, 0xd5, 0x90, 0xaa, 0x8c, 0xd5, - 0x91, 0xa7, 0x8c, 0xd5, 0x91, 0xaa, 0x8c, 0xd5, 0x92, 0xa7, 0x8c, 0xd5, - 0x92, 0xaa, 0x8c, 0xd5, 0x93, 0xa7, 0x8c, 0xd5, 0x93, 0xaa, 0x8c, 0xd5, - 0x94, 0xa7, 0x8c, 0xd5, 0x94, 0xaa, 0x8c, 0xd5, 0x94, 0xa7, 0x8c, 0xd5, - 0x95, 0xaa, 0x8c, 0xd5, 0x95, 0xa7, 0x8c, 0xd5, 0x96, 0xaa, 0x8c, 0xd5, - 0x96, 0xa7, 0x8c, 0xd5, 0x97, 0xaa, 0x8c, 0xd5, 0x97, 0xa7, 0x8c, 0xd5, - 0x98, 0xaa, 0x8c, 0xd5, 0x98, 0xa7, 0x8c, 0xd5, 0x98, 0xaa, 0x8c, 0xd5, - 0x99, 0xa7, 0x8c, 0xd5, 0x99, 0xaa, 0x8c, 0xd5, 0x9a, 0xa7, 0x8c, 0xd5, - 0x9a, 0xaa, 0x8c, 0xd5, 0x9a, 0xa7, 0x8c, 0xd5, 0x9b, 0xaa, 0x8c, 0xd5, - 0x9b, 0xa7, 0x8c, 0xd5, 0x9c, 0xaa, 0x8c, 0xd5, 0x9c, 0xa7, 0x8d, 0xd5, - 0x9d, 0xa4, 0x8c, 0xd5, 0x9d, 0xa7, 0xa1, 0xd5, 0x9d, 0x97, 0xa1, 0xd5, - 0x9e, 0x97, 0xa1, 0xd5, 0x9e, 0x97, 0xa1, 0xd5, 0x9f, 0x97, 0xa1, 0xd5, - 0x9f, 0x97, 0xa1, 0xd5, 0x9f, 0x97, 0xa1, 0xd5, 0xa0, 0x97, 0xa1, 0xd5, - 0xa0, 0x97, 0xa1, 0xd5, 0xa1, 0x97, 0xa1, 0xd5, 0xa1, 0x97, 0xa1, 0xd5, - 0xa1, 0x97, 0xa2, 0xd5, 0xa2, 0x97, 0xa2, 0xd5, 0xa2, 0x97, 0xa3, 0xd5, - 0xa3, 0x97, 0xa3, 0xd5, 0xa3, 0x97, 0xa3, 0xd5, 0xa3, 0x97, 0xa3, 0xd5, - 0xa4, 0x97, 0xa3, 0xd5, 0xa4, 0x97, 0xa3, 0xd5, 0xa5, 0x97, 0xa3, 0xd5, - 0xa5, 0x97, 0xa3, 0xd5, 0xa5, 0x97, 0xa3, 0xd5, 0xa6, 0x97, 0xa3, 0xd5, - 0xa6, 0x97, 0xa3, 0xd5, 0xa6, 0x97, 0xa3, 0xd5, 0xa7, 0x97, 0xa3, 0xd5, - 0xa7, 0x97, 0xa3, 0xd5, 0xa8, 0x97, 0xa3, 0xd5, 0xa8, 0x97, 0xa3, 0xd5, - 0xa8, 0x97, 0xa3, 0xd5, 0xa9, 0x97, 0xa3, 0xd5, 0xa9, 0x97, 0xa3, 0xd5, - 0xaa, 0x97, 0xa3, 0xd5, 0xaa, 0x97, 0xa3, 0xd5, 0xaa, 0x97, 0xa3, 0xd5, - 0xab, 0x97, 0xa3, 0xd5, 0xab, 0x97, 0xa3, 0xd5, 0xab, 0x97, 0xa3, 0xd5, - 0xac, 0x97, 0xa3, 0xd5, 0xac, 0x97, 0xa3, 0xd5, 0xac, 0x97, 0xa3, 0xd5, - 0xad, 0x97, 0xa3, 0xd5, 0xad, 0x97, 0xa3, 0xd5, 0xae, 0x97, 0xa3, 0xd5, - 0xae, 0x97, 0xa3, 0xd5, 0xae, 0x97, 0xa3, 0xd5, 0xaf, 0x97, 0xa3, 0xd5, - 0xaf, 0x97, 0xa3, 0xd5, 0xaf, 0x97, 0xa3, 0xd5, 0xb0, 0x97, 0xa3, 0xd5, - 0xb0, 0x97, 0xa3, 0xd5, 0xb0, 0x97, 0xa3, 0xd5, 0xb1, 0x97, 0xa3, 0xd5, - 0xb1, 0x97, 0xa3, 0xd5, 0xb2, 0x97, 0xa3, 0xd5, 0xb2, 0x97, 0xa3, 0xd5, - 0xb2, 0x97, 0xa3, 0xd5, 0xb3, 0x97, 0xa3, 0xd5, 0xb3, 0x97, 0xa3, 0xd5, - 0xb3, 0x97, 0xa3, 0xd5, 0xb4, 0x97, 0xa3, 0xd5, 0xb4, 0x97, 0xa3, 0xd5, - 0xb4, 0x97, 0xa3, 0xd5, 0xb5, 0x97, 0xa3, 0xd5, 0xb5, 0x97, 0xa3, 0xd5, - 0xb5, 0x97, 0xa3, 0xd5, 0xb6, 0x97, 0xa3, 0xd5, 0xb6, 0x97, 0xa3, 0xd5, - 0xb6, 0x97, 0xa3, 0xd5, 0xb7, 0x97, 0xa3, 0xd5, 0xb7, 0x97, 0xa3, 0xd5, - 0xb7, 0x97, 0xa3, 0xd5, 0xb8, 0x97, 0xa3, 0xd5, 0xb8, 0x97, 0xa3, 0xd5, - 0xb8, 0x97, 0xa3, 0xd5, 0xb9, 0x97, 0xa3, 0xd5, 0xb9, 0x97, 0xa3, 0xd5, - 0xb9, 0x97, 0xa3, 0xd5, 0xba, 0x97, 0xa3, 0xd5, 0xba, 0x97, 0xa3, 0xd5, - 0xba, 0x97, 0xd1, 0xd5, 0xbb, 0xb2, 0xd1, 0xd5, 0xbb, 0xaf, 0xd1, 0xd5, - 0xbb, 0xb2, 0xd1, 0xd5, 0xbc, 0xaf, 0xd1, 0xd5, 0xbc, 0xb2, 0xd1, 0xd5, - 0xbc, 0xaf, 0xd1, 0xd5, 0xbd, 0xb2, 0xd1, 0xd5, 0xbd, 0xaf, 0xd1, 0xd5, - 0xbd, 0xb2, 0xd1, 0xd5, 0xbe, 0xaf, 0xd1, 0xd5, 0xbe, 0xb2, 0xd1, 0xd5, - 0xbe, 0xaf, 0xd1, 0xd5, 0xbf, 0xb2, 0xd1, 0xd5, 0xbf, 0xaf, 0xd1, 0xd5, - 0xbf, 0xb2, 0xd1, 0xd5, 0xc0, 0xaf, 0xd1, 0xd5, 0xc0, 0xb2, 0xd1, 0xd5, - 0xc0, 0xaf, 0xd1, 0xd5, 0xc1, 0xad, 0xd1, 0xd5, 0xc1, 0xaf, 0xd1, 0xd5, - 0xc1, 0xad, 0xd1, 0xd5, 0xc1, 0xaf, 0xd1, 0xd5, 0xc2, 0xad, 0xd1, 0xd5, - 0xc2, 0xaf, 0xd1, 0xd5, 0xc2, 0xad, 0xd1, 0xd5, 0xc3, 0xaf, 0xd1, 0xd5, - 0xc3, 0xad, 0xd1, 0xd5, 0xc3, 0xaf, 0xd1, 0xd5, 0xc4, 0xad, 0xd1, 0xd5, - 0xc4, 0xaf, 0xd1, 0xd5, 0xc4, 0xad, 0xd1, 0xd5, 0xc5, 0xaf, 0xd1, 0xd5, - 0xc5, 0xad, 0xd1, 0xd5, 0xc5, 0xaf, 0xd1, 0xd5, 0xc6, 0xad, 0xd1, 0xd5, - 0xc6, 0xaf, 0xd1, 0xd5, 0xc6, 0xad, 0xd1, 0xd5, 0xc6, 0xaf, 0xd1, 0xd5, - 0xc7, 0xad, 0xd1, 0xd5, 0xc7, 0xaf, 0xd1, 0xd5, 0xc7, 0xad, 0xd1, 0xd5, - 0xc8, 0xaf, 0xd1, 0xd5, 0xc8, 0xad, 0xd1, 0xd5, 0xc8, 0xaf, 0xd1, 0xd5, - 0xc9, 0xad, 0xd1, 0xd5, 0xc9, 0xaf, 0xd1, 0xd5, 0xc9, 0xad, 0xd1, 0xd5, - 0xc9, 0xaf, 0xd1, 0xd5, 0xca, 0xad, 0xd1, 0xd5, 0xca, 0xaf, 0xd1, 0xd5, - 0xca, 0xad, 0xd2, 0xd5, 0xcb, 0xaa, 0xd1, 0xd5, 0xcb, 0xad, 0xd2, 0xd5, - 0xcb, 0xaa, 0xd1, 0xd5, 0xcc, 0xad, 0xd2, 0xd5, 0xcc, 0xaa, 0xd1, 0xd5, - 0xcc, 0xad, 0xd2, 0xd5, 0xcc, 0xaa, 0xd1, 0xd5, 0xcd, 0xad, 0xd2, 0xd5, - 0xcd, 0xaa, 0xd1, 0xd5, 0xcd, 0xad, 0xd2, 0xd5, 0xce, 0xaa, 0xd1, 0xd5, - 0xce, 0xad, 0xd2, 0xd5, 0xce, 0xaa, 0xd1, 0xd5, 0xce, 0xad, 0xd2, 0xd5, - 0xcf, 0xaa, 0xd1, 0xd5, 0xcf, 0xad, 0xd2, 0xd5, 0xcf, 0xaa, 0xd2, 0xd5, - 0xd0, 0xaa, 0xd2, 0xd5, 0xd0, 0xaa, 0xd2, 0xd5, 0xd0, 0xaa, 0xd2, 0xd5, - 0xd0, 0xaa, 0xd2, 0xd5, 0xd1, 0xaa, 0xd2, 0xd5, 0xd1, 0xaa, 0xd2, 0xd5, - 0xd1, 0xaa, 0xd2, 0xd5, 0xd2, 0xaa, 0xd2, 0xd5, 0xd1, 0xaa, 0xd2, 0xd5, - 0xd2, 0xaa, 0xd2, 0xd5, 0xd1, 0xaa, 0xd3, 0xd5, 0xd2, 0xaa, 0xd3, 0xd5, - 0xd1, 0xaa, 0xd3, 0xd5, 0xd2, 0xaa, 0xd4, 0xd5, 0xd1, 0xaa, 0xd4, 0xd5, - 0xd2, 0xaa, 0xd4, 0xd5, 0xd1, 0xaa, 0xd4, 0xd5, 0xd2, 0xaa, 0xd5, 0xd5, - 0xd1, 0xaa, 0xd5, 0xd5, 0xd2, 0xaa, 0xd5, 0xd5, 0xd1, 0xaa, 0xd6, 0xd5, - 0xd2, 0xaa, 0xd6, 0xd5, 0xd1, 0xaa, 0xd6, 0xd5, 0xd2, 0xaa, 0xd6, 0xd3, - 0xd2, 0xaa, 0xd7, 0xd5, 0xd2, 0xaa, 0xd7, 0xd3, 0xd2, 0xaa, 0xd7, 0xd5, - 0xd2, 0xaa, 0xd7, 0xd3, 0xd2, 0xaa, 0xd8, 0xd5, 0xd2, 0xaa, 0xd8, 0xd3, - 0xd2, 0xaa, 0xd8, 0xd5, 0xd2, 0xaa, 0xd9, 0xd3, 0xd2, 0xaa, 0xd9, 0xd5, - 0xd2, 0xaa, 0xd9, 0xd3, 0xd2, 0xaa, 0xd9, 0xd5, 0xd2, 0xaa, 0xda, 0xd3, - 0xd2, 0xaa, 0xda, 0xd5, 0xd2, 0xaa, 0xda, 0xd3, 0xd2, 0xaa, 0xda, 0xd5, - 0xd2, 0xaa, 0xdb, 0xd3, 0xd2, 0xaa, 0xdb, 0xd5, 0xd2, 0xaa, 0xdb, 0xd3, - 0xd2, 0xaa, 0xdb, 0xd5, 0xd2, 0xaa, 0xdc, 0xd3, 0xd2, 0xaa, 0xdc, 0xd5, - 0xd2, 0xaa, 0xdc, 0xd3, 0xd2, 0xaa, 0xdd, 0xd5, 0xd2, 0xaa, 0xdd, 0xd3, - 0xd2, 0xaa, 0xdd, 0xca, 0xdf, 0xaa, 0xdd, 0xca, 0xdf, 0xaa, 0xde, 0xca, - 0xdf, 0xaa, 0xde, 0xca, 0xdf, 0xaa, 0xde, 0xca, 0xdf, 0xaa, 0xde, 0xca, - 0xdf, 0xaa, 0xdf, 0xca, 0xdf, 0xaa, 0xdf, 0xca, 0xe2, 0xaa, 0xdf, 0xca, - 0xe2, 0xaa, 0xdf, 0xca, 0xe2, 0xaa, 0xe0, 0xca, 0xe2, 0xaa, 0xe0, 0xd6, - 0xea, 0xaa, 0xe0, 0xd8, 0xe9, 0xaa, 0xe1, 0xd6, 0xea, 0xaa, 0xe1, 0xd8, - 0xe9, 0xaa, 0xe1, 0xd6, 0xea, 0xaa, 0xe1, 0xd8, 0xe9, 0xaa, 0xe2, 0xd6, - 0xea, 0xaa, 0xe2, 0xd8, 0xe9, 0xaa, 0xe2, 0xd6, 0xea, 0xaa, 0xe2, 0xd8, - 0xe9, 0xaa, 0xe3, 0xd6, 0xea, 0xaa, 0xe3, 0xd8, 0xe9, 0xaa, 0xe3, 0xd6, - 0xea, 0xaa, 0xe3, 0xd8, 0xe9, 0xaa, 0xe4, 0xd6, 0xea, 0xaa, 0xe4, 0xd5, - 0xea, 0xaa, 0xe4, 0xd6, 0xea, 0xaa, 0xe4, 0xd5, 0xea, 0xaa, 0xe5, 0xd6, - 0xea, 0xaa, 0xe5, 0xd5, 0xea, 0xaa, 0xe5, 0xd6, 0xea, 0xaa, 0xe5, 0xd5, - 0xea, 0xaa, 0xe6, 0xd6, 0xea, 0xaa, 0xe6, 0xd5, 0xea, 0xaa, 0xe6, 0xd6, - 0xea, 0xaa, 0xe6, 0xd5, 0xea, 0xaa, 0xe7, 0xd6, 0xea, 0xaa, 0xe7, 0xd5, - 0xea, 0xaa, 0xe7, 0xd6, 0xea, 0xaa, 0xe7, 0xd5, 0xea, 0xaa, 0xe8, 0xd6, - 0xea, 0xaa, 0xe8, 0xd5, 0xea, 0xaa, 0xe8, 0xd6, 0xea, 0xaa, 0xe8, 0xd5, - 0xea, 0xaa, 0xe9, 0xd6, 0xea, 0xaa, 0xe9, 0xd5, 0xea, 0xaa, 0xe9, 0xd5, - 0xea, 0xaa, 0xe9, 0xd5, 0xea, 0xaa, 0xea, 0xd5, 0xea, 0xaa, 0xe9, 0xd5, - 0xea, 0xaa, 0xea, 0xd5, 0xea, 0xaa, 0xe9, 0xd5, 0xea, 0xaa, 0xea, 0xd5, - 0xeb, 0xaa, 0xea, 0xd5, 0xeb, 0xa8, 0xea, 0xd5, 0xeb, 0xaa, 0xea, 0xd5, - 0xeb, 0xa8, 0xed, 0xd5, 0xec, 0xaa, 0xed, 0xd5, 0xec, 0xac, 0xed, 0xd5, - 0xec, 0xaa, 0xed, 0xd5, 0xec, 0xaa, 0xed, 0xd5, 0xec, 0xaa, 0xed, 0xd5, - 0xed, 0xaa, 0xed, 0xd5, 0xec, 0xaa, 0xed, 0xd5, 0xed, 0xaa, 0xed, 0xd5, - 0xec, 0xaa, 0xee, 0xd5, 0xed, 0xaa, 0xee, 0xd5, 0xec, 0xaa, 0xee, 0xd5, - 0xed, 0xaa, 0xee, 0xd5, 0xec, 0xaa, 0xef, 0xd5, 0xed, 0xaa, 0xef, 0xd4, - 0xed, 0xaa, 0xef, 0xd5, 0xed, 0xaa, 0xef, 0xd4, 0xed, 0xaa, 0xf0, 0xd5, - 0xed, 0xaa, 0xf0, 0xd4, 0xed, 0xaa, 0xf0, 0xd5, 0xed, 0xaa, 0xf0, 0xd4, - 0xed, 0xaa, 0xf1, 0xd5, 0xed, 0xaa, 0xf1, 0xd4, 0xed, 0xaa, 0xf1, 0xd5, - 0xed, 0xaa, 0xf1, 0xd4, 0xed, 0xaa, 0xf2, 0xd5, 0xed, 0xaa, 0xf2, 0xd4, - 0xed, 0xaa, 0xf2, 0xd5, 0xed, 0xaa, 0xf2, 0xd4, 0xed, 0xaa, 0xf2, 0xd5, - 0xed, 0xaa, 0xf3, 0xd4, 0xed, 0xaa, 0xf3, 0xd5, 0xed, 0xaa, 0xf3, 0xd4, - 0xed, 0xaa, 0xf3, 0xd5, 0xed, 0xaa, 0xf4, 0xd4, 0xed, 0xaa, 0xf4, 0xd5, - 0xed, 0xaa, 0xf4, 0xd4, 0xed, 0xaa, 0xf4, 0xd5, 0xed, 0xaa, 0xf5, 0xd4, - 0xed, 0xaa, 0xf5, 0xd5, 0xed, 0xaa, 0xf5, 0xd4, 0xed, 0xaa, 0xf5, 0xd5, - 0xed, 0xaa, 0xf5, 0xd4, 0xed, 0xaa, 0xf6, 0xd5, 0xed, 0xaa, 0xf6, 0xd4, - 0xed, 0xaa, 0xf6, 0xd5, 0xed, 0xaa, 0xf6, 0xd4, 0xed, 0xaa, 0xf7, 0xd5, - 0xed, 0xaa, 0xf7, 0xd4, 0xed, 0xaa, 0xf7, 0xd5, 0xed, 0xaa, 0xf7, 0xd4, - 0xed, 0xaa, 0xf8, 0xd5, 0xed, 0xaa, 0xf8, 0xd4, 0xed, 0xaa, 0xf8, 0xd5, - 0xed, 0xaa, 0xf8, 0xd4, 0xed, 0xaa, 0xf8, 0xd5, 0xed, 0xaa, 0xf9, 0xd4, - 0xed, 0xaa, 0xf9, 0xc7, 0xf7, 0xaa, 0xf9, 0xc7, 0xf7, 0xaa, 0xf9, 0xc7, - 0xf7, 0xaa, 0xfa, 0xc7, 0xf7, 0xaa, 0xfa, 0xc7, 0xf7, 0xaa, 0xfa, 0xc7, - 0xf7, 0xaa, 0xfa, 0xc7, 0xf7, 0xaa, 0xfa, 0xc7, 0xf7, 0xaa, 0xfb, 0xc7, - 0xf7, 0xaa, 0xfb, 0xc7, 0xf7, 0xaa, 0xfb, 0xc7, 0xf7, 0xaa, 0xfb, 0xc7, - 0xf7, 0xaa, 0xfc, 0xc7, 0xf7, 0xaa, 0xfc, 0xc7, 0xf7, 0xaa, 0xfc, 0xc7, - 0xf7, 0xaa, 0xfc, 0xc7, 0xf7, 0xaa, 0xfc, 0xc7, 0xf7, 0xaa, 0xfd, 0xc7, - 0xf7, 0xaa, 0xfd, 0xc7, 0xf7, 0xaa, 0xfd, 0xc7, 0xf7, 0xaa, 0xfd, 0xc7, - 0xf7, 0xaa, 0xfe, 0xc7, 0xf7, 0xaa, 0xfe, 0xc7, 0xf7, 0xaa, 0xfe, 0xc7, - 0xf7, 0xaa, 0xfe, 0xc7, 0xf7, 0xaa, 0xfe, 0xc7, 0xf7, 0xaa, 0xff, 0xc7, - 0xf7, 0xaa, 0xff, 0xc7, 0xf7, 0xaa, 0x03, 0xdb, 0x8a, 0xab, 0x0a, 0xda, - 0x8b, 0xab, 0x0f, 0xdb, 0x8a, 0xab, 0x14, 0xda, 0x8b, 0xab, 0x17, 0xdb, - 0x8a, 0xab, 0x1b, 0xda, 0x8b, 0xab, 0x1e, 0xdb, 0x8a, 0xab, 0x20, 0xda, - 0x8b, 0xab, 0x23, 0xdb, 0x8a, 0xab, 0x25, 0xda, 0x8b, 0xab, 0x27, 0xdb, - 0x8a, 0xab, 0x29, 0xda, 0x8b, 0xab, 0x2b, 0xdb, 0x8a, 0xab, 0x2d, 0xda, - 0x8b, 0xab, 0x2f, 0xdb, 0x8a, 0xab, 0x31, 0xda, 0x8b, 0xab, 0x32, 0xdb, - 0x8a, 0xab, 0x34, 0xda, 0x8b, 0xab, 0x35, 0xdb, 0x8a, 0xab, 0x37, 0xda, - 0x8b, 0xab, 0x38, 0xdb, 0x8a, 0xab, 0x3a, 0xda, 0x8b, 0xab, 0x3b, 0xdb, - 0x8a, 0xab, 0x3c, 0xda, 0x8b, 0xab, 0x3e, 0xdb, 0x8a, 0xab, 0x3f, 0xda, - 0x8b, 0xab, 0x40, 0xdb, 0x8a, 0xab, 0x42, 0xda, 0x8b, 0xab, 0x43, 0xdb, - 0x8a, 0xab, 0x44, 0xda, 0x8b, 0xab, 0x45, 0xdb, 0x8a, 0xab, 0x46, 0xda, - 0x8b, 0xab, 0x47, 0xdb, 0x8a, 0xab, 0x48, 0xda, 0x8b, 0xab, 0x49, 0xdb, - 0x8a, 0xab, 0x4a, 0xda, 0x8b, 0xab, 0x4b, 0xd8, 0x8b, 0xab, 0x4c, 0xda, - 0x8b, 0xab, 0x4d, 0xd8, 0x8b, 0xab, 0x4e, 0xda, 0x8b, 0xab, 0x4f, 0xd8, - 0x8b, 0xab, 0x50, 0xda, 0x8b, 0xab, 0x51, 0xd8, 0x8b, 0xab, 0x52, 0xda, - 0x8b, 0xab, 0x53, 0xd8, 0x8b, 0xab, 0x54, 0xda, 0x8b, 0xab, 0x55, 0xd8, - 0x8b, 0xab, 0x56, 0xda, 0x8b, 0xab, 0x57, 0xd8, 0x8b, 0xab, 0x58, 0xda, - 0x8b, 0xab, 0x58, 0xd8, 0x8b, 0xab, 0x59, 0xda, 0x8b, 0xab, 0x5a, 0xd8, - 0x8b, 0xab, 0x5b, 0xda, 0x8b, 0xab, 0x5c, 0xd8, 0x8b, 0xab, 0x5d, 0xda, - 0x8b, 0xab, 0x5d, 0xd8, 0x8b, 0xab, 0x5e, 0xda, 0x8b, 0xab, 0x5f, 0xd8, - 0x8b, 0xab, 0x60, 0xda, 0x8b, 0xab, 0x60, 0xd8, 0x8b, 0xab, 0x61, 0xda, - 0x8b, 0xab, 0x62, 0xd8, 0x8b, 0xab, 0x63, 0xda, 0x8b, 0xab, 0x63, 0xd8, - 0x8b, 0xab, 0x64, 0xda, 0x8b, 0xab, 0x65, 0xd8, 0x8b, 0xab, 0x66, 0xda, - 0x8b, 0xab, 0x66, 0xd8, 0x8b, 0xab, 0x67, 0xd6, 0x8c, 0xab, 0x68, 0xd8, - 0x8b, 0xab, 0x68, 0xd6, 0x8c, 0xab, 0x69, 0xd8, 0x8b, 0xab, 0x6a, 0xd6, - 0x8c, 0xab, 0x6a, 0xd8, 0x8b, 0xab, 0x6b, 0xd6, 0x8c, 0xab, 0x6c, 0xd8, - 0x8b, 0xab, 0x6c, 0xd6, 0x8c, 0xab, 0x6d, 0xd8, 0x8b, 0xab, 0x6e, 0xd6, - 0x8c, 0xab, 0x6e, 0xd8, 0x8b, 0xab, 0x6f, 0xd6, 0x8c, 0xab, 0x70, 0xd8, - 0x8b, 0xab, 0x70, 0xd6, 0x8c, 0xab, 0x71, 0xd8, 0x8b, 0xab, 0x72, 0xd6, - 0x8c, 0xab, 0x72, 0xd8, 0x8b, 0xab, 0x73, 0xd6, 0x8c, 0xab, 0x73, 0xd8, - 0x8b, 0xab, 0x74, 0xd6, 0x8c, 0xab, 0x75, 0xd8, 0x8b, 0xab, 0x75, 0xd6, - 0x8c, 0xab, 0x76, 0xd8, 0x8b, 0xab, 0x76, 0xd6, 0x8c, 0xab, 0x77, 0xd8, - 0x8b, 0xab, 0x78, 0xd6, 0x8c, 0xab, 0x78, 0xd8, 0x8b, 0xab, 0x79, 0xd6, - 0x8c, 0xab, 0x79, 0xd8, 0x8b, 0xab, 0x7a, 0xd6, 0x8c, 0xab, 0x7a, 0xd8, - 0x8b, 0xab, 0x7b, 0xd6, 0x8c, 0xab, 0x7c, 0xd8, 0x8b, 0xab, 0x7c, 0xd6, - 0x8c, 0xab, 0x7d, 0xd8, 0x8b, 0xab, 0x7d, 0xd6, 0x8c, 0xab, 0x7e, 0xd8, - 0x8b, 0xab, 0x7e, 0xd6, 0x8c, 0xab, 0x7f, 0xd8, 0x8b, 0xab, 0x7f, 0xd6, - 0x8c, 0xab, 0x80, 0xd6, 0x8c, 0xab, 0x81, 0xd6, 0x8c, 0xab, 0x81, 0xd6, - 0x8c, 0xab, 0x82, 0xd6, 0x8c, 0xab, 0x82, 0xd6, 0x8c, 0xab, 0x83, 0xd6, - 0x8c, 0xab, 0x83, 0xd6, 0x8c, 0xab, 0x84, 0xd6, 0x8c, 0xab, 0x84, 0xd6, - 0x8c, 0xab, 0x85, 0xd6, 0x8c, 0xab, 0x85, 0xd6, 0x8c, 0xab, 0x86, 0xd6, - 0x8c, 0xab, 0x86, 0xd6, 0x8c, 0xab, 0x87, 0xd6, 0x8c, 0xab, 0x87, 0xd6, - 0x8c, 0xab, 0x88, 0xd6, 0x8c, 0xab, 0x88, 0xd6, 0x8c, 0xab, 0x89, 0xd6, - 0x8c, 0xab, 0x89, 0xd6, 0x8c, 0xab, 0x8a, 0xd6, 0x8c, 0xab, 0x8a, 0xd6, - 0x8c, 0xab, 0x8b, 0xd6, 0x8c, 0xab, 0x8b, 0xd6, 0x8c, 0xab, 0x8c, 0xd6, - 0x8c, 0xab, 0x8b, 0xd6, 0x8c, 0xab, 0x8c, 0xd6, 0x8d, 0xab, 0x8b, 0xd6, - 0x8d, 0xab, 0x8c, 0xd6, 0x8e, 0xab, 0x8b, 0xd6, 0x8e, 0xab, 0x8c, 0xd6, - 0x8e, 0xab, 0x8b, 0xd6, 0x8f, 0xab, 0x8c, 0xd6, 0x8f, 0xab, 0x8c, 0xd6, - 0x90, 0xa8, 0x8c, 0xd6, 0x90, 0xab, 0x8c, 0xd6, 0x91, 0xa8, 0x8c, 0xd6, - 0x91, 0xab, 0x8c, 0xd6, 0x92, 0xa8, 0x8c, 0xd6, 0x92, 0xab, 0x8c, 0xd6, - 0x93, 0xa8, 0x8c, 0xd6, 0x93, 0xab, 0x8c, 0xd6, 0x94, 0xa8, 0x8c, 0xd6, - 0x94, 0xab, 0x8c, 0xd6, 0x94, 0xa8, 0x8c, 0xd6, 0x95, 0xab, 0x8c, 0xd6, - 0x95, 0xa8, 0x8c, 0xd6, 0x96, 0xab, 0x8c, 0xd6, 0x96, 0xa8, 0x8c, 0xd6, - 0x97, 0xab, 0x8c, 0xd6, 0x97, 0xa8, 0x8c, 0xd6, 0x98, 0xab, 0x8c, 0xd6, - 0x98, 0xa8, 0x8c, 0xd6, 0x98, 0xab, 0x8c, 0xd6, 0x99, 0xa8, 0x8c, 0xd6, - 0x99, 0xab, 0x8c, 0xd6, 0x9a, 0xa8, 0x8c, 0xd6, 0x9a, 0xab, 0x8c, 0xd6, - 0x9a, 0xa8, 0x8c, 0xd6, 0x9b, 0xab, 0x8c, 0xd6, 0x9b, 0xa8, 0x8c, 0xd6, - 0x9c, 0xab, 0x8c, 0xd6, 0x9c, 0xa8, 0x8d, 0xd6, 0x9d, 0xa5, 0x8c, 0xd6, - 0x9d, 0xa8, 0x8d, 0xd6, 0x9d, 0xa5, 0x9f, 0xd6, 0x9e, 0x97, 0xa3, 0xd6, - 0x9e, 0x98, 0x9f, 0xd6, 0x9f, 0x97, 0xa3, 0xd6, 0x9f, 0x98, 0x9f, 0xd6, - 0x9f, 0x97, 0xa3, 0xd6, 0xa0, 0x98, 0xa0, 0xd6, 0xa0, 0x97, 0xa3, 0xd6, - 0xa1, 0x98, 0xa1, 0xd6, 0xa1, 0x97, 0xa3, 0xd6, 0xa1, 0x98, 0xa2, 0xd6, - 0xa2, 0x97, 0xa3, 0xd6, 0xa2, 0x98, 0xa3, 0xd6, 0xa3, 0x97, 0xa3, 0xd6, - 0xa3, 0x98, 0xa3, 0xd6, 0xa3, 0x97, 0xa3, 0xd6, 0xa4, 0x98, 0xa3, 0xd6, - 0xa4, 0x97, 0xa3, 0xd6, 0xa5, 0x98, 0xa3, 0xd6, 0xa5, 0x97, 0xa3, 0xd6, - 0xa5, 0x98, 0xa3, 0xd6, 0xa6, 0x97, 0xa3, 0xd6, 0xa6, 0x98, 0xa3, 0xd6, - 0xa6, 0x97, 0xa3, 0xd6, 0xa7, 0x98, 0xa3, 0xd6, 0xa7, 0x97, 0xa3, 0xd6, - 0xa8, 0x98, 0xa3, 0xd6, 0xa8, 0x97, 0xa3, 0xd6, 0xa8, 0x98, 0xa3, 0xd6, - 0xa9, 0x97, 0xa3, 0xd6, 0xa9, 0x98, 0xa3, 0xd6, 0xaa, 0x97, 0xa3, 0xd6, - 0xaa, 0x98, 0xa3, 0xd6, 0xaa, 0x97, 0xa3, 0xd6, 0xab, 0x98, 0xa3, 0xd6, - 0xab, 0x97, 0xa3, 0xd6, 0xab, 0x98, 0xa3, 0xd6, 0xac, 0x97, 0xa3, 0xd6, - 0xac, 0x98, 0xa3, 0xd6, 0xac, 0x97, 0xa3, 0xd6, 0xad, 0x98, 0xa3, 0xd6, - 0xad, 0x97, 0xa3, 0xd6, 0xae, 0x98, 0xa3, 0xd6, 0xae, 0x97, 0xa3, 0xd6, - 0xae, 0x98, 0xa3, 0xd6, 0xaf, 0x97, 0xa3, 0xd6, 0xaf, 0x98, 0xa3, 0xd6, - 0xaf, 0x97, 0xa3, 0xd6, 0xb0, 0x98, 0xa3, 0xd6, 0xb0, 0x97, 0xa3, 0xd6, - 0xb0, 0x98, 0xa3, 0xd6, 0xb1, 0x97, 0xa3, 0xd6, 0xb1, 0x98, 0xa3, 0xd6, - 0xb2, 0x97, 0xa3, 0xd6, 0xb2, 0x98, 0xa3, 0xd6, 0xb2, 0x97, 0xa3, 0xd6, - 0xb3, 0x98, 0xa3, 0xd6, 0xb3, 0x97, 0xa3, 0xd6, 0xb3, 0x98, 0xa3, 0xd6, - 0xb4, 0x97, 0xa3, 0xd6, 0xb4, 0x98, 0xa3, 0xd6, 0xb4, 0x97, 0xa3, 0xd6, - 0xb5, 0x98, 0xa3, 0xd6, 0xb5, 0x97, 0xa3, 0xd6, 0xb5, 0x98, 0xa3, 0xd6, - 0xb6, 0x97, 0xa3, 0xd6, 0xb6, 0x98, 0xa3, 0xd6, 0xb6, 0x97, 0xa3, 0xd6, - 0xb7, 0x98, 0xa3, 0xd6, 0xb7, 0x97, 0xa3, 0xd6, 0xb7, 0x98, 0xa3, 0xd6, - 0xb8, 0x97, 0xa3, 0xd6, 0xb8, 0x98, 0xa3, 0xd6, 0xb8, 0x97, 0xa3, 0xd6, - 0xb9, 0x98, 0xa3, 0xd6, 0xb9, 0x97, 0xa3, 0xd6, 0xb9, 0x98, 0xa3, 0xd6, - 0xba, 0x97, 0xa3, 0xd6, 0xba, 0x98, 0xd1, 0xd6, 0xba, 0xb0, 0xd1, 0xd6, - 0xbb, 0xb3, 0xd1, 0xd6, 0xbb, 0xb0, 0xd1, 0xd6, 0xbb, 0xb3, 0xd1, 0xd6, - 0xbc, 0xb0, 0xd1, 0xd6, 0xbc, 0xb3, 0xd1, 0xd6, 0xbc, 0xb0, 0xd1, 0xd6, - 0xbd, 0xb3, 0xd1, 0xd6, 0xbd, 0xb0, 0xd1, 0xd6, 0xbd, 0xb3, 0xd1, 0xd6, - 0xbe, 0xb0, 0xd1, 0xd6, 0xbe, 0xb3, 0xd1, 0xd6, 0xbe, 0xb0, 0xd1, 0xd6, - 0xbf, 0xb3, 0xd1, 0xd6, 0xbf, 0xb0, 0xd1, 0xd6, 0xbf, 0xad, 0xd1, 0xd6, - 0xc0, 0xb0, 0xd1, 0xd6, 0xc0, 0xad, 0xd1, 0xd6, 0xc0, 0xb0, 0xd1, 0xd6, - 0xc1, 0xad, 0xd1, 0xd6, 0xc1, 0xb0, 0xd1, 0xd6, 0xc1, 0xad, 0xd1, 0xd6, - 0xc1, 0xb0, 0xd1, 0xd6, 0xc2, 0xad, 0xd1, 0xd6, 0xc2, 0xb0, 0xd1, 0xd6, - 0xc2, 0xad, 0xd1, 0xd6, 0xc3, 0xb0, 0xd1, 0xd6, 0xc3, 0xad, 0xd1, 0xd6, - 0xc3, 0xb0, 0xd1, 0xd6, 0xc4, 0xad, 0xd1, 0xd6, 0xc4, 0xb0, 0xd1, 0xd6, - 0xc4, 0xad, 0xd1, 0xd6, 0xc5, 0xb0, 0xd1, 0xd6, 0xc5, 0xad, 0xd1, 0xd6, - 0xc5, 0xb0, 0xd1, 0xd6, 0xc6, 0xad, 0xd1, 0xd6, 0xc6, 0xb0, 0xd1, 0xd6, - 0xc6, 0xad, 0xd1, 0xd6, 0xc6, 0xb0, 0xd1, 0xd6, 0xc7, 0xad, 0xd1, 0xd6, - 0xc7, 0xb0, 0xd1, 0xd6, 0xc7, 0xad, 0xd1, 0xd6, 0xc8, 0xb0, 0xd1, 0xd6, - 0xc8, 0xad, 0xd1, 0xd6, 0xc8, 0xb0, 0xd1, 0xd6, 0xc9, 0xad, 0xd1, 0xd6, - 0xc9, 0xb0, 0xd1, 0xd6, 0xc9, 0xad, 0xd1, 0xd6, 0xc9, 0xb0, 0xd1, 0xd6, - 0xca, 0xad, 0xd1, 0xd6, 0xca, 0xb0, 0xd1, 0xd6, 0xca, 0xad, 0xd2, 0xd6, - 0xcb, 0xab, 0xd1, 0xd6, 0xcb, 0xad, 0xd2, 0xd6, 0xcb, 0xab, 0xd1, 0xd6, - 0xcc, 0xad, 0xd2, 0xd6, 0xcc, 0xab, 0xd1, 0xd6, 0xcc, 0xad, 0xd2, 0xd6, - 0xcc, 0xab, 0xd1, 0xd6, 0xcd, 0xad, 0xd2, 0xd6, 0xcd, 0xab, 0xd1, 0xd6, - 0xcd, 0xad, 0xd2, 0xd6, 0xce, 0xab, 0xd1, 0xd6, 0xce, 0xad, 0xd2, 0xd6, - 0xce, 0xab, 0xd1, 0xd6, 0xce, 0xad, 0xd2, 0xd6, 0xcf, 0xab, 0xd1, 0xd6, - 0xcf, 0xad, 0xd2, 0xd6, 0xcf, 0xab, 0xd1, 0xd6, 0xd0, 0xad, 0xd2, 0xd6, - 0xd0, 0xab, 0xd1, 0xd6, 0xd0, 0xad, 0xd2, 0xd6, 0xd0, 0xab, 0xd2, 0xd6, - 0xd1, 0xab, 0xd2, 0xd6, 0xd1, 0xab, 0xd2, 0xd6, 0xd1, 0xab, 0xd2, 0xd6, - 0xd1, 0xab, 0xd2, 0xd6, 0xd1, 0xab, 0xd2, 0xd6, 0xd1, 0xab, 0xd2, 0xd6, - 0xd1, 0xab, 0xd3, 0xd4, 0xd2, 0xab, 0xd3, 0xd6, 0xd1, 0xab, 0xd3, 0xd4, - 0xd2, 0xab, 0xd4, 0xd6, 0xd1, 0xab, 0xd4, 0xd4, 0xd2, 0xab, 0xd4, 0xd6, - 0xd1, 0xab, 0xd4, 0xd4, 0xd2, 0xab, 0xd5, 0xd6, 0xd1, 0xab, 0xd5, 0xd4, - 0xd2, 0xab, 0xd5, 0xd6, 0xd1, 0xab, 0xd6, 0xd4, 0xd2, 0xab, 0xd6, 0xd6, - 0xd1, 0xab, 0xd6, 0xd4, 0xd2, 0xab, 0xd6, 0xd3, 0xd2, 0xab, 0xd7, 0xd4, - 0xd2, 0xab, 0xd7, 0xd3, 0xd2, 0xab, 0xd7, 0xd4, 0xd2, 0xab, 0xd7, 0xd3, - 0xd2, 0xab, 0xd8, 0xd4, 0xd2, 0xab, 0xd8, 0xd3, 0xd2, 0xab, 0xd8, 0xd4, - 0xd2, 0xab, 0xd9, 0xd3, 0xd2, 0xab, 0xd9, 0xd4, 0xd2, 0xab, 0xd9, 0xd3, - 0xd2, 0xab, 0xd9, 0xd4, 0xd2, 0xab, 0xda, 0xd3, 0xd2, 0xab, 0xda, 0xd4, - 0xd2, 0xab, 0xda, 0xd3, 0xd2, 0xab, 0xda, 0xd4, 0xd2, 0xab, 0xdb, 0xd3, - 0xd2, 0xab, 0xdb, 0xd4, 0xd2, 0xab, 0xdb, 0xd3, 0xd2, 0xab, 0xdb, 0xd4, - 0xd2, 0xab, 0xdc, 0xd3, 0xd2, 0xab, 0xdc, 0xd4, 0xd2, 0xab, 0xdc, 0xd3, - 0xd2, 0xab, 0xdd, 0xd4, 0xd2, 0xab, 0xdd, 0xd3, 0xd2, 0xab, 0xdd, 0xc9, - 0xde, 0xab, 0xdd, 0xc9, 0xde, 0xab, 0xde, 0xca, 0xe1, 0xab, 0xde, 0xca, - 0xe1, 0xab, 0xde, 0xca, 0xe1, 0xab, 0xde, 0xca, 0xe1, 0xab, 0xdf, 0xca, - 0xe1, 0xab, 0xdf, 0xca, 0xe1, 0xab, 0xdf, 0xca, 0xe1, 0xab, 0xdf, 0xd6, - 0xea, 0xab, 0xe0, 0xd8, 0xe9, 0xab, 0xe0, 0xd6, 0xea, 0xab, 0xe0, 0xd8, - 0xe9, 0xab, 0xe1, 0xd6, 0xea, 0xab, 0xe1, 0xd8, 0xe9, 0xab, 0xe1, 0xd6, - 0xea, 0xab, 0xe1, 0xd8, 0xe9, 0xab, 0xe2, 0xd6, 0xea, 0xab, 0xe2, 0xd8, - 0xe9, 0xab, 0xe2, 0xd6, 0xea, 0xab, 0xe2, 0xd8, 0xe9, 0xab, 0xe3, 0xd6, - 0xea, 0xab, 0xe3, 0xd8, 0xe9, 0xab, 0xe3, 0xd6, 0xea, 0xab, 0xe3, 0xd8, - 0xe9, 0xab, 0xe4, 0xd6, 0xea, 0xab, 0xe4, 0xd8, 0xe9, 0xab, 0xe4, 0xd6, - 0xea, 0xab, 0xe4, 0xd8, 0xe9, 0xab, 0xe5, 0xd6, 0xea, 0xab, 0xe5, 0xd8, - 0xe9, 0xab, 0xe5, 0xd6, 0xea, 0xab, 0xe5, 0xd8, 0xe9, 0xab, 0xe6, 0xd6, - 0xea, 0xab, 0xe6, 0xd6, 0xea, 0xab, 0xe6, 0xd6, 0xea, 0xab, 0xe6, 0xd6, - 0xea, 0xab, 0xe7, 0xd6, 0xea, 0xab, 0xe7, 0xd6, 0xea, 0xab, 0xe7, 0xd6, - 0xea, 0xab, 0xe7, 0xd6, 0xea, 0xab, 0xe8, 0xd6, 0xea, 0xab, 0xe8, 0xd6, - 0xea, 0xab, 0xe8, 0xd6, 0xea, 0xab, 0xe8, 0xd6, 0xea, 0xab, 0xe9, 0xd6, - 0xea, 0xab, 0xe9, 0xd6, 0xea, 0xab, 0xe9, 0xd6, 0xea, 0xab, 0xe9, 0xd6, - 0xea, 0xab, 0xea, 0xd6, 0xea, 0xab, 0xe9, 0xd6, 0xea, 0xab, 0xea, 0xd6, - 0xea, 0xab, 0xe9, 0xd6, 0xea, 0xab, 0xea, 0xd6, 0xeb, 0xab, 0xea, 0xd6, - 0xeb, 0xa9, 0xea, 0xd6, 0xeb, 0xab, 0xed, 0xd6, 0xeb, 0xac, 0xed, 0xd6, - 0xec, 0xab, 0xed, 0xd6, 0xec, 0xac, 0xed, 0xd6, 0xec, 0xab, 0xed, 0xd6, - 0xec, 0xac, 0xed, 0xd6, 0xec, 0xab, 0xed, 0xd6, 0xed, 0xab, 0xed, 0xd6, - 0xec, 0xab, 0xed, 0xd6, 0xed, 0xab, 0xed, 0xd6, 0xec, 0xab, 0xee, 0xd6, - 0xed, 0xab, 0xee, 0xd6, 0xec, 0xab, 0xee, 0xd6, 0xed, 0xab, 0xee, 0xd6, - 0xec, 0xab, 0xef, 0xd6, 0xed, 0xab, 0xef, 0xd4, 0xed, 0xab, 0xef, 0xd6, - 0xed, 0xab, 0xef, 0xd4, 0xed, 0xab, 0xf0, 0xd6, 0xed, 0xab, 0xf0, 0xd4, - 0xed, 0xab, 0xf0, 0xd6, 0xed, 0xab, 0xf0, 0xd4, 0xed, 0xab, 0xf1, 0xd6, - 0xed, 0xab, 0xf1, 0xd4, 0xed, 0xab, 0xf1, 0xd6, 0xed, 0xab, 0xf1, 0xd4, - 0xed, 0xab, 0xf2, 0xd6, 0xed, 0xab, 0xf2, 0xd4, 0xed, 0xab, 0xf2, 0xd6, - 0xed, 0xab, 0xf2, 0xd4, 0xed, 0xab, 0xf2, 0xd6, 0xed, 0xab, 0xf3, 0xd4, - 0xed, 0xab, 0xf3, 0xd6, 0xed, 0xab, 0xf3, 0xd4, 0xed, 0xab, 0xf3, 0xd6, - 0xed, 0xab, 0xf4, 0xd4, 0xed, 0xab, 0xf4, 0xd6, 0xed, 0xab, 0xf4, 0xd4, - 0xed, 0xab, 0xf4, 0xd6, 0xed, 0xab, 0xf5, 0xd4, 0xed, 0xab, 0xf5, 0xd6, - 0xed, 0xab, 0xf5, 0xd4, 0xed, 0xab, 0xf5, 0xd6, 0xed, 0xab, 0xf5, 0xd4, - 0xed, 0xab, 0xf6, 0xd6, 0xed, 0xab, 0xf6, 0xd4, 0xed, 0xab, 0xf6, 0xd6, - 0xed, 0xab, 0xf6, 0xd4, 0xed, 0xab, 0xf7, 0xd6, 0xed, 0xab, 0xf7, 0xd4, - 0xed, 0xab, 0xf7, 0xd6, 0xed, 0xab, 0xf7, 0xd4, 0xed, 0xab, 0xf8, 0xd6, - 0xed, 0xab, 0xf8, 0xd4, 0xed, 0xab, 0xf8, 0xd6, 0xed, 0xab, 0xf8, 0xd4, - 0xed, 0xab, 0xf8, 0xd6, 0xed, 0xab, 0xf9, 0xd4, 0xed, 0xab, 0xf9, 0xc7, - 0xf7, 0xab, 0xf9, 0xc7, 0xf7, 0xab, 0xf9, 0xc7, 0xf7, 0xab, 0xfa, 0xc7, - 0xf7, 0xab, 0xfa, 0xc7, 0xf7, 0xab, 0xfa, 0xc7, 0xf7, 0xab, 0xfa, 0xc7, - 0xf7, 0xab, 0xfa, 0xc7, 0xf7, 0xab, 0xfb, 0xc7, 0xf7, 0xab, 0xfb, 0xc7, - 0xf7, 0xab, 0xfb, 0xc7, 0xf7, 0xab, 0xfb, 0xc7, 0xf7, 0xab, 0xfc, 0xc7, - 0xf7, 0xab, 0xfc, 0xc7, 0xf7, 0xab, 0xfc, 0xc7, 0xf7, 0xab, 0xfc, 0xc7, - 0xf7, 0xab, 0xfc, 0xc7, 0xf7, 0xab, 0xfd, 0xc7, 0xf7, 0xab, 0xfd, 0xc7, - 0xf7, 0xab, 0xfd, 0xc7, 0xf7, 0xab, 0xfd, 0xc7, 0xf7, 0xab, 0xfe, 0xc7, - 0xf7, 0xab, 0xfe, 0xc7, 0xf7, 0xab, 0xfe, 0xc7, 0xf7, 0xab, 0xfe, 0xc7, - 0xf7, 0xab, 0xfe, 0xc7, 0xf7, 0xab, 0xff, 0xc7, 0xf7, 0xab, 0xff, 0xc7, - 0xf7, 0xab, 0x03, 0xdc, 0x8a, 0xab, 0x0a, 0xda, 0x8b, 0xab, 0x0f, 0xdc, - 0x8a, 0xab, 0x14, 0xda, 0x8b, 0xab, 0x17, 0xdc, 0x8a, 0xab, 0x1b, 0xda, - 0x8b, 0xab, 0x1e, 0xdc, 0x8a, 0xab, 0x20, 0xda, 0x8b, 0xab, 0x23, 0xdc, - 0x8a, 0xab, 0x25, 0xda, 0x8b, 0xab, 0x27, 0xdc, 0x8a, 0xab, 0x29, 0xda, - 0x8b, 0xab, 0x2b, 0xdc, 0x8a, 0xab, 0x2d, 0xda, 0x8b, 0xab, 0x2f, 0xdc, - 0x8a, 0xab, 0x31, 0xda, 0x8b, 0xab, 0x32, 0xdc, 0x8a, 0xab, 0x34, 0xda, - 0x8b, 0xab, 0x35, 0xdc, 0x8a, 0xab, 0x37, 0xda, 0x8b, 0xab, 0x38, 0xdc, - 0x8a, 0xab, 0x3a, 0xda, 0x8b, 0xab, 0x3b, 0xdc, 0x8a, 0xab, 0x3c, 0xda, - 0x8b, 0xab, 0x3e, 0xdc, 0x8a, 0xab, 0x3f, 0xda, 0x8b, 0xab, 0x40, 0xdc, - 0x8a, 0xab, 0x42, 0xda, 0x8b, 0xab, 0x43, 0xd8, 0x8b, 0xab, 0x44, 0xda, - 0x8b, 0xab, 0x45, 0xd8, 0x8b, 0xab, 0x46, 0xda, 0x8b, 0xab, 0x47, 0xd8, - 0x8b, 0xab, 0x48, 0xda, 0x8b, 0xab, 0x49, 0xd8, 0x8b, 0xab, 0x4a, 0xda, - 0x8b, 0xab, 0x4b, 0xd8, 0x8b, 0xab, 0x4c, 0xda, 0x8b, 0xab, 0x4d, 0xd8, - 0x8b, 0xab, 0x4e, 0xda, 0x8b, 0xab, 0x4f, 0xd8, 0x8b, 0xab, 0x50, 0xda, - 0x8b, 0xab, 0x51, 0xd8, 0x8b, 0xab, 0x52, 0xda, 0x8b, 0xab, 0x53, 0xd8, - 0x8b, 0xab, 0x54, 0xda, 0x8b, 0xab, 0x55, 0xd8, 0x8b, 0xab, 0x56, 0xda, - 0x8b, 0xab, 0x57, 0xd8, 0x8b, 0xab, 0x58, 0xda, 0x8b, 0xab, 0x58, 0xd8, - 0x8b, 0xab, 0x59, 0xda, 0x8b, 0xab, 0x5a, 0xd8, 0x8b, 0xab, 0x5b, 0xda, - 0x8b, 0xab, 0x5c, 0xd8, 0x8b, 0xab, 0x5d, 0xda, 0x8b, 0xab, 0x5d, 0xd8, - 0x8b, 0xab, 0x5e, 0xda, 0x8b, 0xab, 0x5f, 0xd8, 0x8b, 0xab, 0x60, 0xda, - 0x8b, 0xab, 0x60, 0xd8, 0x8b, 0xab, 0x61, 0xda, 0x8b, 0xab, 0x62, 0xd8, - 0x8b, 0xab, 0x63, 0xda, 0x8b, 0xab, 0x63, 0xd8, 0x8b, 0xab, 0x64, 0xda, - 0x8b, 0xab, 0x65, 0xd8, 0x8b, 0xab, 0x66, 0xda, 0x8b, 0xab, 0x66, 0xd8, - 0x8b, 0xab, 0x67, 0xda, 0x8b, 0xab, 0x68, 0xd8, 0x8b, 0xab, 0x68, 0xda, - 0x8b, 0xab, 0x69, 0xd8, 0x8b, 0xab, 0x6a, 0xda, 0x8b, 0xab, 0x6a, 0xd8, - 0x8b, 0xab, 0x6b, 0xda, 0x8b, 0xab, 0x6c, 0xd8, 0x8b, 0xab, 0x6c, 0xda, - 0x8b, 0xab, 0x6d, 0xd8, 0x8b, 0xab, 0x6e, 0xda, 0x8b, 0xab, 0x6e, 0xd8, - 0x8b, 0xab, 0x6f, 0xda, 0x8b, 0xab, 0x70, 0xd8, 0x8b, 0xab, 0x70, 0xda, - 0x8b, 0xab, 0x71, 0xd8, 0x8b, 0xab, 0x72, 0xd6, 0x8c, 0xab, 0x72, 0xd8, - 0x8b, 0xab, 0x73, 0xd6, 0x8c, 0xab, 0x73, 0xd8, 0x8b, 0xab, 0x74, 0xd6, - 0x8c, 0xab, 0x75, 0xd8, 0x8b, 0xab, 0x75, 0xd6, 0x8c, 0xab, 0x76, 0xd8, - 0x8b, 0xab, 0x76, 0xd6, 0x8c, 0xab, 0x77, 0xd8, 0x8b, 0xab, 0x78, 0xd6, - 0x8c, 0xab, 0x78, 0xd8, 0x8b, 0xab, 0x79, 0xd6, 0x8c, 0xab, 0x79, 0xd8, - 0x8b, 0xab, 0x7a, 0xd6, 0x8c, 0xab, 0x7a, 0xd8, 0x8b, 0xab, 0x7b, 0xd6, - 0x8c, 0xab, 0x7c, 0xd8, 0x8b, 0xab, 0x7c, 0xd6, 0x8c, 0xab, 0x7d, 0xd8, - 0x8b, 0xab, 0x7d, 0xd6, 0x8c, 0xab, 0x7e, 0xd8, 0x8b, 0xab, 0x7e, 0xd6, - 0x8c, 0xab, 0x7f, 0xd8, 0x8b, 0xab, 0x7f, 0xd6, 0x8c, 0xab, 0x80, 0xd8, - 0x8b, 0xab, 0x81, 0xd6, 0x8c, 0xab, 0x81, 0xd8, 0x8b, 0xab, 0x82, 0xd6, - 0x8c, 0xab, 0x82, 0xd8, 0x8b, 0xab, 0x83, 0xd6, 0x8c, 0xab, 0x83, 0xd8, - 0x8b, 0xab, 0x84, 0xd6, 0x8c, 0xab, 0x84, 0xd6, 0x8c, 0xab, 0x85, 0xd6, - 0x8c, 0xab, 0x85, 0xd6, 0x8c, 0xab, 0x86, 0xd6, 0x8c, 0xab, 0x86, 0xd6, - 0x8c, 0xab, 0x87, 0xd6, 0x8c, 0xab, 0x87, 0xd6, 0x8c, 0xab, 0x88, 0xd6, - 0x8c, 0xab, 0x88, 0xd6, 0x8c, 0xab, 0x89, 0xd6, 0x8c, 0xab, 0x89, 0xd6, - 0x8c, 0xab, 0x8a, 0xd6, 0x8c, 0xab, 0x8a, 0xd6, 0x8c, 0xab, 0x8b, 0xd6, - 0x8c, 0xab, 0x8b, 0xd6, 0x8c, 0xab, 0x8c, 0xd6, 0x8c, 0xab, 0x8b, 0xd6, - 0x8c, 0xab, 0x8c, 0xd6, 0x8d, 0xab, 0x8b, 0xd6, 0x8d, 0xab, 0x8c, 0xd6, - 0x8e, 0xab, 0x8b, 0xd6, 0x8e, 0xab, 0x8c, 0xd6, 0x8e, 0xab, 0x8b, 0xd6, - 0x8f, 0xab, 0x8c, 0xd6, 0x8f, 0xab, 0x8b, 0xd6, 0x90, 0xab, 0x8c, 0xd6, - 0x90, 0xab, 0x8b, 0xd6, 0x91, 0xab, 0x8c, 0xd6, 0x91, 0xab, 0x8b, 0xd6, - 0x92, 0xab, 0x8c, 0xd6, 0x92, 0xab, 0x8b, 0xd6, 0x93, 0xab, 0x8c, 0xd6, - 0x93, 0xab, 0x8c, 0xd6, 0x94, 0xa7, 0x8c, 0xd6, 0x94, 0xab, 0x8c, 0xd6, - 0x94, 0xa7, 0x8c, 0xd6, 0x95, 0xab, 0x8c, 0xd6, 0x95, 0xa7, 0x8c, 0xd6, - 0x96, 0xab, 0x8c, 0xd6, 0x96, 0xa7, 0x8c, 0xd6, 0x97, 0xab, 0x8c, 0xd6, - 0x97, 0xa7, 0x8c, 0xd6, 0x98, 0xab, 0x8c, 0xd6, 0x98, 0xa7, 0x8c, 0xd6, - 0x98, 0xab, 0x8c, 0xd6, 0x99, 0xa7, 0x8c, 0xd6, 0x99, 0xab, 0x8c, 0xd6, - 0x9a, 0xa7, 0x8c, 0xd6, 0x9a, 0xab, 0x8c, 0xd6, 0x9a, 0xa7, 0x8c, 0xd6, - 0x9b, 0xab, 0x8c, 0xd6, 0x9b, 0xa7, 0x8c, 0xd6, 0x9c, 0xab, 0x8c, 0xd6, - 0x9c, 0xa7, 0x8c, 0xd6, 0x9d, 0xab, 0x8c, 0xd6, 0x9d, 0xa7, 0x8c, 0xd6, - 0x9d, 0xab, 0x8c, 0xd6, 0x9e, 0xa7, 0xa1, 0xd6, 0x9e, 0x97, 0xa1, 0xd6, - 0x9f, 0x97, 0xa1, 0xd6, 0x9f, 0x97, 0xa1, 0xd6, 0x9f, 0x97, 0xa1, 0xd6, - 0xa0, 0x97, 0xa1, 0xd6, 0xa0, 0x97, 0xa1, 0xd6, 0xa1, 0x97, 0xa1, 0xd6, - 0xa1, 0x97, 0xa1, 0xd6, 0xa1, 0x97, 0xa2, 0xd6, 0xa2, 0x97, 0xa2, 0xd6, - 0xa2, 0x97, 0xa3, 0xd6, 0xa3, 0x97, 0xa3, 0xd6, 0xa3, 0x97, 0xa3, 0xd6, - 0xa3, 0x97, 0xa3, 0xd6, 0xa4, 0x97, 0xa3, 0xd6, 0xa4, 0x97, 0xa3, 0xd6, - 0xa5, 0x97, 0xa3, 0xd6, 0xa5, 0x97, 0xa3, 0xd6, 0xa5, 0x97, 0xa3, 0xd6, - 0xa6, 0x97, 0xa3, 0xd6, 0xa6, 0x97, 0xa3, 0xd6, 0xa6, 0x97, 0xa3, 0xd6, - 0xa7, 0x97, 0xa3, 0xd6, 0xa7, 0x97, 0xa3, 0xd6, 0xa8, 0x97, 0xa3, 0xd6, - 0xa8, 0x97, 0xa3, 0xd6, 0xa8, 0x97, 0xa3, 0xd6, 0xa9, 0x97, 0xa3, 0xd6, - 0xa9, 0x97, 0xa3, 0xd6, 0xaa, 0x97, 0xa3, 0xd6, 0xaa, 0x97, 0xa3, 0xd6, - 0xaa, 0x97, 0xa3, 0xd6, 0xab, 0x97, 0xa3, 0xd6, 0xab, 0x97, 0xa3, 0xd6, - 0xab, 0x97, 0xa3, 0xd6, 0xac, 0x97, 0xa3, 0xd6, 0xac, 0x97, 0xa3, 0xd6, - 0xac, 0x97, 0xa3, 0xd6, 0xad, 0x97, 0xa3, 0xd6, 0xad, 0x97, 0xa3, 0xd6, - 0xae, 0x97, 0xa3, 0xd6, 0xae, 0x97, 0xa3, 0xd6, 0xae, 0x97, 0xa3, 0xd6, - 0xaf, 0x97, 0xa3, 0xd6, 0xaf, 0x97, 0xa3, 0xd6, 0xaf, 0x97, 0xa3, 0xd6, - 0xb0, 0x97, 0xa3, 0xd6, 0xb0, 0x97, 0xa3, 0xd6, 0xb0, 0x97, 0xa3, 0xd6, - 0xb1, 0x97, 0xa3, 0xd6, 0xb1, 0x97, 0xa3, 0xd6, 0xb2, 0x97, 0xa3, 0xd6, - 0xb2, 0x97, 0xa3, 0xd6, 0xb2, 0x97, 0xa3, 0xd6, 0xb3, 0x97, 0xa3, 0xd6, - 0xb3, 0x97, 0xa3, 0xd6, 0xb3, 0x97, 0xa3, 0xd6, 0xb4, 0x97, 0xa3, 0xd6, - 0xb4, 0x97, 0xa3, 0xd6, 0xb4, 0x97, 0xa3, 0xd6, 0xb5, 0x97, 0xa3, 0xd6, - 0xb5, 0x97, 0xa3, 0xd6, 0xb5, 0x97, 0xa3, 0xd6, 0xb6, 0x97, 0xa3, 0xd6, - 0xb6, 0x97, 0xa3, 0xd6, 0xb6, 0x97, 0xa3, 0xd6, 0xb7, 0x97, 0xa3, 0xd6, - 0xb7, 0x97, 0xa3, 0xd6, 0xb7, 0x97, 0xa3, 0xd6, 0xb8, 0x97, 0xa3, 0xd6, - 0xb8, 0x97, 0xa3, 0xd6, 0xb8, 0x97, 0xa3, 0xd6, 0xb9, 0x97, 0xa3, 0xd6, - 0xb9, 0x97, 0xa3, 0xd6, 0xb9, 0x97, 0xa3, 0xd6, 0xba, 0x97, 0xd1, 0xd6, - 0xba, 0xb2, 0xd1, 0xd6, 0xba, 0xaf, 0xd1, 0xd6, 0xbb, 0xb2, 0xd1, 0xd6, - 0xbb, 0xaf, 0xd1, 0xd6, 0xbb, 0xb2, 0xd1, 0xd6, 0xbc, 0xaf, 0xd1, 0xd6, - 0xbc, 0xb2, 0xd1, 0xd6, 0xbc, 0xaf, 0xd1, 0xd6, 0xbd, 0xb2, 0xd1, 0xd6, - 0xbd, 0xaf, 0xd1, 0xd6, 0xbd, 0xb2, 0xd1, 0xd6, 0xbe, 0xaf, 0xd1, 0xd6, - 0xbe, 0xb2, 0xd1, 0xd6, 0xbe, 0xaf, 0xd1, 0xd6, 0xbf, 0xb2, 0xd1, 0xd6, - 0xbf, 0xaf, 0xd1, 0xd6, 0xbf, 0xb2, 0xd1, 0xd6, 0xc0, 0xaf, 0xd1, 0xd6, - 0xc0, 0xb2, 0xd1, 0xd6, 0xc0, 0xaf, 0xd1, 0xd6, 0xc1, 0xb2, 0xd1, 0xd6, - 0xc1, 0xaf, 0xd1, 0xd6, 0xc1, 0xb2, 0xd1, 0xd6, 0xc1, 0xaf, 0xd1, 0xd6, - 0xc2, 0xb2, 0xd1, 0xd6, 0xc2, 0xaf, 0xd1, 0xd6, 0xc2, 0xb2, 0xd1, 0xd6, - 0xc3, 0xaf, 0xd1, 0xd6, 0xc3, 0xb2, 0xd1, 0xd6, 0xc3, 0xaf, 0xd1, 0xd6, - 0xc4, 0xb2, 0xd1, 0xd6, 0xc4, 0xaf, 0xd1, 0xd6, 0xc4, 0xad, 0xd1, 0xd6, - 0xc5, 0xaf, 0xd1, 0xd6, 0xc5, 0xad, 0xd1, 0xd6, 0xc5, 0xaf, 0xd1, 0xd6, - 0xc6, 0xad, 0xd1, 0xd6, 0xc6, 0xaf, 0xd1, 0xd6, 0xc6, 0xad, 0xd1, 0xd6, - 0xc6, 0xaf, 0xd1, 0xd6, 0xc7, 0xad, 0xd1, 0xd6, 0xc7, 0xaf, 0xd1, 0xd6, - 0xc7, 0xad, 0xd1, 0xd6, 0xc8, 0xaf, 0xd1, 0xd6, 0xc8, 0xad, 0xd1, 0xd6, - 0xc8, 0xaf, 0xd1, 0xd6, 0xc9, 0xad, 0xd1, 0xd6, 0xc9, 0xaf, 0xd1, 0xd6, - 0xc9, 0xad, 0xd1, 0xd6, 0xc9, 0xaf, 0xd1, 0xd6, 0xca, 0xad, 0xd1, 0xd6, - 0xca, 0xaf, 0xd1, 0xd6, 0xca, 0xad, 0xd1, 0xd6, 0xcb, 0xaf, 0xd1, 0xd6, - 0xcb, 0xad, 0xd1, 0xd6, 0xcb, 0xaf, 0xd1, 0xd6, 0xcc, 0xad, 0xd1, 0xd6, - 0xcc, 0xaf, 0xd1, 0xd6, 0xcc, 0xad, 0xd1, 0xd6, 0xcc, 0xaf, 0xd1, 0xd6, - 0xcd, 0xad, 0xd2, 0xd6, 0xcd, 0xab, 0xd1, 0xd6, 0xcd, 0xad, 0xd2, 0xd6, - 0xce, 0xab, 0xd1, 0xd6, 0xce, 0xad, 0xd2, 0xd6, 0xce, 0xab, 0xd1, 0xd6, - 0xce, 0xad, 0xd2, 0xd6, 0xcf, 0xab, 0xd1, 0xd6, 0xcf, 0xad, 0xd2, 0xd6, - 0xcf, 0xab, 0xd1, 0xd6, 0xd0, 0xad, 0xd2, 0xd6, 0xd0, 0xab, 0xd1, 0xd6, - 0xd0, 0xad, 0xd2, 0xd6, 0xd0, 0xab, 0xd2, 0xd6, 0xd1, 0xab, 0xd2, 0xd6, - 0xd1, 0xab, 0xd2, 0xd6, 0xd1, 0xab, 0xd2, 0xd6, 0xd1, 0xab, 0xd2, 0xd6, - 0xd1, 0xab, 0xd2, 0xd6, 0xd1, 0xab, 0xd2, 0xd6, 0xd1, 0xab, 0xd3, 0xd5, - 0xd2, 0xab, 0xd3, 0xd6, 0xd1, 0xab, 0xd3, 0xd5, 0xd2, 0xab, 0xd4, 0xd6, - 0xd1, 0xab, 0xd4, 0xd5, 0xd2, 0xab, 0xd4, 0xd6, 0xd1, 0xab, 0xd4, 0xd5, - 0xd2, 0xab, 0xd5, 0xd6, 0xd1, 0xab, 0xd5, 0xd5, 0xd2, 0xab, 0xd5, 0xd6, - 0xd1, 0xab, 0xd6, 0xd5, 0xd2, 0xab, 0xd6, 0xd6, 0xd1, 0xab, 0xd6, 0xd5, - 0xd2, 0xab, 0xd6, 0xd6, 0xd1, 0xab, 0xd7, 0xd5, 0xd2, 0xab, 0xd7, 0xd6, - 0xd1, 0xab, 0xd7, 0xd5, 0xd2, 0xab, 0xd7, 0xd6, 0xd1, 0xab, 0xd8, 0xd5, - 0xd2, 0xab, 0xd8, 0xd6, 0xd1, 0xab, 0xd8, 0xd5, 0xd2, 0xab, 0xd9, 0xd3, - 0xd2, 0xab, 0xd9, 0xd5, 0xd2, 0xab, 0xd9, 0xd3, 0xd2, 0xab, 0xd9, 0xd5, - 0xd2, 0xab, 0xda, 0xd3, 0xd2, 0xab, 0xda, 0xd5, 0xd2, 0xab, 0xda, 0xd3, - 0xd2, 0xab, 0xda, 0xd5, 0xd2, 0xab, 0xdb, 0xd3, 0xd2, 0xab, 0xdb, 0xd5, - 0xd2, 0xab, 0xdb, 0xd3, 0xd2, 0xab, 0xdb, 0xd5, 0xd2, 0xab, 0xdc, 0xd3, - 0xd2, 0xab, 0xdc, 0xd5, 0xd2, 0xab, 0xdc, 0xd3, 0xd2, 0xab, 0xdd, 0xd5, - 0xd2, 0xab, 0xdd, 0xd3, 0xd2, 0xab, 0xdd, 0xd5, 0xd2, 0xab, 0xdd, 0xca, - 0xdf, 0xab, 0xde, 0xca, 0xdf, 0xab, 0xde, 0xca, 0xdf, 0xab, 0xde, 0xca, - 0xdf, 0xab, 0xde, 0xca, 0xdf, 0xab, 0xdf, 0xca, 0xdf, 0xab, 0xdf, 0xca, - 0xe2, 0xab, 0xdf, 0xd8, 0xe9, 0xab, 0xdf, 0xd9, 0xe9, 0xab, 0xe0, 0xd8, - 0xe9, 0xab, 0xe0, 0xd9, 0xe9, 0xab, 0xe0, 0xd8, 0xe9, 0xab, 0xe1, 0xd6, - 0xea, 0xab, 0xe1, 0xd8, 0xe9, 0xab, 0xe1, 0xd6, 0xea, 0xab, 0xe1, 0xd8, - 0xe9, 0xab, 0xe2, 0xd6, 0xea, 0xab, 0xe2, 0xd8, 0xe9, 0xab, 0xe2, 0xd6, - 0xea, 0xab, 0xe2, 0xd8, 0xe9, 0xab, 0xe3, 0xd6, 0xea, 0xab, 0xe3, 0xd8, - 0xe9, 0xab, 0xe3, 0xd6, 0xea, 0xab, 0xe3, 0xd8, 0xe9, 0xab, 0xe4, 0xd6, - 0xea, 0xab, 0xe4, 0xd8, 0xe9, 0xab, 0xe4, 0xd6, 0xea, 0xab, 0xe4, 0xd8, - 0xe9, 0xab, 0xe5, 0xd6, 0xea, 0xab, 0xe5, 0xd8, 0xe9, 0xab, 0xe5, 0xd6, - 0xea, 0xab, 0xe5, 0xd8, 0xe9, 0xab, 0xe6, 0xd6, 0xea, 0xab, 0xe6, 0xd6, - 0xea, 0xab, 0xe6, 0xd6, 0xea, 0xab, 0xe6, 0xd6, 0xea, 0xab, 0xe7, 0xd6, - 0xea, 0xab, 0xe7, 0xd6, 0xea, 0xab, 0xe7, 0xd6, 0xea, 0xab, 0xe7, 0xd6, - 0xea, 0xab, 0xe8, 0xd6, 0xea, 0xab, 0xe8, 0xd6, 0xea, 0xab, 0xe8, 0xd6, - 0xea, 0xab, 0xe8, 0xd6, 0xea, 0xab, 0xe9, 0xd6, 0xea, 0xab, 0xe9, 0xd6, - 0xea, 0xab, 0xe9, 0xd6, 0xea, 0xab, 0xe9, 0xd6, 0xea, 0xab, 0xea, 0xd6, - 0xea, 0xab, 0xe9, 0xd6, 0xea, 0xab, 0xea, 0xd6, 0xea, 0xab, 0xe9, 0xd6, - 0xea, 0xab, 0xea, 0xd6, 0xeb, 0xab, 0xe9, 0xd6, 0xeb, 0xab, 0xea, 0xd6, - 0xeb, 0xab, 0xed, 0xd6, 0xeb, 0xac, 0xed, 0xd6, 0xec, 0xab, 0xed, 0xd6, - 0xec, 0xac, 0xed, 0xd6, 0xec, 0xab, 0xed, 0xd6, 0xec, 0xac, 0xed, 0xd6, - 0xec, 0xab, 0xed, 0xd6, 0xed, 0xab, 0xed, 0xd6, 0xec, 0xab, 0xed, 0xd6, - 0xed, 0xab, 0xed, 0xd6, 0xec, 0xab, 0xee, 0xd6, 0xed, 0xab, 0xee, 0xd6, - 0xec, 0xab, 0xee, 0xd6, 0xed, 0xab, 0xee, 0xd6, 0xec, 0xab, 0xef, 0xd6, - 0xed, 0xab, 0xef, 0xd6, 0xec, 0xab, 0xef, 0xd6, 0xed, 0xab, 0xef, 0xd6, - 0xec, 0xab, 0xf0, 0xd6, 0xed, 0xab, 0xf0, 0xd6, 0xec, 0xab, 0xf0, 0xd6, - 0xed, 0xab, 0xf0, 0xd6, 0xec, 0xab, 0xf1, 0xd6, 0xed, 0xab, 0xf1, 0xd4, - 0xed, 0xab, 0xf1, 0xd6, 0xed, 0xab, 0xf1, 0xd4, 0xed, 0xab, 0xf2, 0xd6, - 0xed, 0xab, 0xf2, 0xd4, 0xed, 0xab, 0xf2, 0xd6, 0xed, 0xab, 0xf2, 0xd4, - 0xed, 0xab, 0xf2, 0xd6, 0xed, 0xab, 0xf3, 0xd4, 0xed, 0xab, 0xf3, 0xd6, - 0xed, 0xab, 0xf3, 0xd4, 0xed, 0xab, 0xf3, 0xd6, 0xed, 0xab, 0xf4, 0xd4, - 0xed, 0xab, 0xf4, 0xd6, 0xed, 0xab, 0xf4, 0xd4, 0xed, 0xab, 0xf4, 0xd6, - 0xed, 0xab, 0xf5, 0xd4, 0xed, 0xab, 0xf5, 0xd6, 0xed, 0xab, 0xf5, 0xd4, - 0xed, 0xab, 0xf5, 0xd6, 0xed, 0xab, 0xf5, 0xd4, 0xed, 0xab, 0xf6, 0xd6, - 0xed, 0xab, 0xf6, 0xd4, 0xed, 0xab, 0xf6, 0xd6, 0xed, 0xab, 0xf6, 0xd4, - 0xed, 0xab, 0xf7, 0xd6, 0xed, 0xab, 0xf7, 0xd4, 0xed, 0xab, 0xf7, 0xd6, - 0xed, 0xab, 0xf7, 0xd4, 0xed, 0xab, 0xf8, 0xd6, 0xed, 0xab, 0xf8, 0xd4, - 0xed, 0xab, 0xf8, 0xd6, 0xed, 0xab, 0xf8, 0xd4, 0xed, 0xab, 0xf8, 0xd6, - 0xed, 0xab, 0xf9, 0xd4, 0xed, 0xab, 0xf9, 0xd6, 0xed, 0xab, 0xf9, 0xc7, - 0xf7, 0xab, 0xf9, 0xc7, 0xf7, 0xab, 0xfa, 0xc7, 0xf7, 0xab, 0xfa, 0xc7, - 0xf7, 0xab, 0xfa, 0xc7, 0xf7, 0xab, 0xfa, 0xc7, 0xf7, 0xab, 0xfa, 0xc7, - 0xf7, 0xab, 0xfb, 0xc7, 0xf7, 0xab, 0xfb, 0xc7, 0xf7, 0xab, 0xfb, 0xc7, - 0xf7, 0xab, 0xfb, 0xc7, 0xf7, 0xab, 0xfc, 0xc7, 0xf7, 0xab, 0xfc, 0xc7, - 0xf7, 0xab, 0xfc, 0xc7, 0xf7, 0xab, 0xfc, 0xc7, 0xf7, 0xab, 0xfc, 0xc7, - 0xf7, 0xab, 0xfd, 0xc7, 0xf7, 0xab, 0xfd, 0xc7, 0xf7, 0xab, 0xfd, 0xc7, - 0xf7, 0xab, 0xfd, 0xc7, 0xf7, 0xab, 0xfe, 0xc7, 0xf7, 0xab, 0xfe, 0xc7, - 0xf7, 0xab, 0xfe, 0xc7, 0xf7, 0xab, 0xfe, 0xc7, 0xf7, 0xab, 0xfe, 0xc7, - 0xf7, 0xab, 0xff, 0xc7, 0xf7, 0xab, 0xff, 0xc7, 0xf7, 0xab, 0x03, 0xdb, - 0x8a, 0xac, 0x0a, 0xdd, 0x8a, 0xac, 0x0f, 0xdb, 0x8a, 0xac, 0x14, 0xdd, - 0x8a, 0xac, 0x17, 0xdb, 0x8a, 0xac, 0x1b, 0xdd, 0x8a, 0xac, 0x1e, 0xdb, - 0x8a, 0xac, 0x20, 0xdd, 0x8a, 0xac, 0x23, 0xdb, 0x8a, 0xac, 0x25, 0xdd, - 0x8a, 0xac, 0x27, 0xdb, 0x8a, 0xac, 0x29, 0xda, 0x8b, 0xac, 0x2b, 0xdb, - 0x8a, 0xac, 0x2d, 0xda, 0x8b, 0xac, 0x2f, 0xdb, 0x8a, 0xac, 0x31, 0xda, - 0x8b, 0xac, 0x32, 0xdb, 0x8a, 0xac, 0x34, 0xda, 0x8b, 0xac, 0x35, 0xdb, - 0x8a, 0xac, 0x37, 0xda, 0x8b, 0xac, 0x38, 0xdb, 0x8a, 0xac, 0x3a, 0xda, - 0x8b, 0xac, 0x3b, 0xdb, 0x8a, 0xac, 0x3c, 0xda, 0x8b, 0xac, 0x3e, 0xdb, - 0x8a, 0xac, 0x3f, 0xda, 0x8b, 0xac, 0x40, 0xdb, 0x8a, 0xac, 0x42, 0xda, - 0x8b, 0xac, 0x43, 0xdb, 0x8a, 0xac, 0x44, 0xda, 0x8b, 0xac, 0x45, 0xdb, - 0x8a, 0xac, 0x46, 0xda, 0x8b, 0xac, 0x47, 0xdb, 0x8a, 0xac, 0x48, 0xda, - 0x8b, 0xac, 0x49, 0xdb, 0x8a, 0xac, 0x4a, 0xda, 0x8b, 0xac, 0x4b, 0xdb, - 0x8a, 0xac, 0x4c, 0xda, 0x8b, 0xac, 0x4d, 0xdb, 0x8a, 0xac, 0x4e, 0xda, - 0x8b, 0xac, 0x4f, 0xdb, 0x8a, 0xac, 0x50, 0xda, 0x8b, 0xac, 0x51, 0xdb, - 0x8a, 0xac, 0x52, 0xda, 0x8b, 0xac, 0x53, 0xdb, 0x8a, 0xac, 0x54, 0xda, - 0x8b, 0xac, 0x55, 0xdb, 0x8a, 0xac, 0x56, 0xda, 0x8b, 0xac, 0x57, 0xd8, - 0x8b, 0xac, 0x58, 0xda, 0x8b, 0xac, 0x58, 0xd8, 0x8b, 0xac, 0x59, 0xda, - 0x8b, 0xac, 0x5a, 0xd8, 0x8b, 0xac, 0x5b, 0xda, 0x8b, 0xac, 0x5c, 0xd8, - 0x8b, 0xac, 0x5d, 0xda, 0x8b, 0xac, 0x5d, 0xd8, 0x8b, 0xac, 0x5e, 0xda, - 0x8b, 0xac, 0x5f, 0xd8, 0x8b, 0xac, 0x60, 0xda, 0x8b, 0xac, 0x60, 0xd8, - 0x8b, 0xac, 0x61, 0xda, 0x8b, 0xac, 0x62, 0xd8, 0x8b, 0xac, 0x63, 0xda, - 0x8b, 0xac, 0x63, 0xd8, 0x8b, 0xac, 0x64, 0xda, 0x8b, 0xac, 0x65, 0xd8, - 0x8b, 0xac, 0x66, 0xda, 0x8b, 0xac, 0x66, 0xd8, 0x8b, 0xac, 0x67, 0xda, - 0x8b, 0xac, 0x68, 0xd8, 0x8b, 0xac, 0x68, 0xda, 0x8b, 0xac, 0x69, 0xd8, - 0x8b, 0xac, 0x6a, 0xda, 0x8b, 0xac, 0x6a, 0xd8, 0x8b, 0xac, 0x6b, 0xda, - 0x8b, 0xac, 0x6c, 0xd8, 0x8b, 0xac, 0x6c, 0xda, 0x8b, 0xac, 0x6d, 0xd8, - 0x8b, 0xac, 0x6e, 0xda, 0x8b, 0xac, 0x6e, 0xd8, 0x8b, 0xac, 0x6f, 0xda, - 0x8b, 0xac, 0x70, 0xd8, 0x8b, 0xac, 0x70, 0xda, 0x8b, 0xac, 0x71, 0xd8, - 0x8b, 0xac, 0x72, 0xd6, 0x8c, 0xac, 0x72, 0xd8, 0x8b, 0xac, 0x73, 0xd6, - 0x8c, 0xac, 0x73, 0xd8, 0x8b, 0xac, 0x74, 0xd6, 0x8c, 0xac, 0x75, 0xd8, - 0x8b, 0xac, 0x75, 0xd6, 0x8c, 0xac, 0x76, 0xd8, 0x8b, 0xac, 0x76, 0xd6, - 0x8c, 0xac, 0x77, 0xd8, 0x8b, 0xac, 0x78, 0xd6, 0x8c, 0xac, 0x78, 0xd8, - 0x8b, 0xac, 0x79, 0xd6, 0x8c, 0xac, 0x79, 0xd8, 0x8b, 0xac, 0x7a, 0xd6, - 0x8c, 0xac, 0x7a, 0xd8, 0x8b, 0xac, 0x7b, 0xd6, 0x8c, 0xac, 0x7c, 0xd8, - 0x8b, 0xac, 0x7c, 0xd6, 0x8c, 0xac, 0x7d, 0xd8, 0x8b, 0xac, 0x7d, 0xd6, - 0x8c, 0xac, 0x7e, 0xd8, 0x8b, 0xac, 0x7e, 0xd6, 0x8c, 0xac, 0x7f, 0xd8, - 0x8b, 0xac, 0x7f, 0xd6, 0x8c, 0xac, 0x80, 0xd8, 0x8b, 0xac, 0x81, 0xd6, - 0x8c, 0xac, 0x81, 0xd8, 0x8b, 0xac, 0x82, 0xd6, 0x8c, 0xac, 0x82, 0xd8, - 0x8b, 0xac, 0x83, 0xd6, 0x8c, 0xac, 0x83, 0xd8, 0x8b, 0xac, 0x84, 0xd6, - 0x8c, 0xac, 0x84, 0xd6, 0x8c, 0xac, 0x85, 0xd6, 0x8c, 0xac, 0x85, 0xd6, - 0x8c, 0xac, 0x86, 0xd6, 0x8c, 0xac, 0x86, 0xd6, 0x8c, 0xac, 0x87, 0xd6, - 0x8c, 0xac, 0x87, 0xd6, 0x8c, 0xac, 0x88, 0xd6, 0x8c, 0xac, 0x88, 0xd6, - 0x8c, 0xac, 0x89, 0xd6, 0x8c, 0xac, 0x89, 0xd6, 0x8c, 0xac, 0x8a, 0xd6, - 0x8c, 0xac, 0x8a, 0xd6, 0x8c, 0xac, 0x8b, 0xd6, 0x8c, 0xac, 0x8b, 0xd6, - 0x8c, 0xac, 0x8c, 0xd6, 0x8c, 0xab, 0x8b, 0xd6, 0x8c, 0xac, 0x8c, 0xd6, - 0x8d, 0xab, 0x8b, 0xd6, 0x8d, 0xac, 0x8c, 0xd6, 0x8e, 0xab, 0x8b, 0xd6, - 0x8e, 0xac, 0x8c, 0xd6, 0x8e, 0xab, 0x8b, 0xd6, 0x8f, 0xac, 0x8c, 0xd6, - 0x8f, 0xab, 0x8b, 0xd6, 0x90, 0xac, 0x8c, 0xd6, 0x90, 0xab, 0x8b, 0xd6, - 0x91, 0xac, 0x8c, 0xd6, 0x91, 0xab, 0x8b, 0xd6, 0x92, 0xac, 0x8c, 0xd6, - 0x92, 0xab, 0x8b, 0xd6, 0x93, 0xac, 0x8c, 0xd6, 0x93, 0xab, 0x8c, 0xd6, - 0x94, 0xa8, 0x8c, 0xd6, 0x94, 0xab, 0x8c, 0xd6, 0x94, 0xa8, 0x8c, 0xd6, - 0x95, 0xab, 0x8c, 0xd6, 0x95, 0xa8, 0x8c, 0xd6, 0x96, 0xab, 0x8c, 0xd6, - 0x96, 0xa8, 0x8c, 0xd6, 0x97, 0xab, 0x8c, 0xd6, 0x97, 0xa8, 0x8c, 0xd6, - 0x98, 0xab, 0x8c, 0xd6, 0x98, 0xa8, 0x8c, 0xd6, 0x98, 0xab, 0x8c, 0xd6, - 0x99, 0xa8, 0x8c, 0xd6, 0x99, 0xab, 0x8c, 0xd6, 0x9a, 0xa8, 0x8c, 0xd6, - 0x9a, 0xab, 0x8c, 0xd6, 0x9a, 0xa8, 0x8c, 0xd6, 0x9b, 0xab, 0x8c, 0xd6, - 0x9b, 0xa8, 0x8c, 0xd6, 0x9c, 0xab, 0x8c, 0xd6, 0x9c, 0xa8, 0x8c, 0xd6, - 0x9d, 0xab, 0x8c, 0xd6, 0x9d, 0xa8, 0x8c, 0xd6, 0x9d, 0xab, 0x8c, 0xd6, - 0x9e, 0xa8, 0xa3, 0xd6, 0x9e, 0x98, 0x9f, 0xd6, 0x9f, 0x97, 0xa3, 0xd6, - 0x9f, 0x98, 0x9f, 0xd6, 0x9f, 0x97, 0xa3, 0xd6, 0xa0, 0x98, 0xa0, 0xd6, - 0xa0, 0x97, 0xa3, 0xd6, 0xa1, 0x98, 0xa1, 0xd6, 0xa1, 0x97, 0xa3, 0xd6, - 0xa1, 0x98, 0xa2, 0xd6, 0xa2, 0x97, 0xa3, 0xd6, 0xa2, 0x98, 0xa3, 0xd6, - 0xa3, 0x97, 0xa3, 0xd6, 0xa3, 0x98, 0xa3, 0xd6, 0xa3, 0x97, 0xa3, 0xd6, - 0xa4, 0x98, 0xa3, 0xd6, 0xa4, 0x97, 0xa3, 0xd6, 0xa5, 0x98, 0xa3, 0xd6, - 0xa5, 0x97, 0xa3, 0xd6, 0xa5, 0x98, 0xa3, 0xd6, 0xa6, 0x97, 0xa3, 0xd6, - 0xa6, 0x98, 0xa3, 0xd6, 0xa6, 0x97, 0xa3, 0xd6, 0xa7, 0x98, 0xa3, 0xd6, - 0xa7, 0x97, 0xa3, 0xd6, 0xa8, 0x98, 0xa3, 0xd6, 0xa8, 0x97, 0xa3, 0xd6, - 0xa8, 0x98, 0xa3, 0xd6, 0xa9, 0x97, 0xa3, 0xd6, 0xa9, 0x98, 0xa3, 0xd6, - 0xaa, 0x97, 0xa3, 0xd6, 0xaa, 0x98, 0xa3, 0xd6, 0xaa, 0x97, 0xa3, 0xd6, - 0xab, 0x98, 0xa3, 0xd6, 0xab, 0x97, 0xa3, 0xd6, 0xab, 0x98, 0xa3, 0xd6, - 0xac, 0x97, 0xa3, 0xd6, 0xac, 0x98, 0xa3, 0xd6, 0xac, 0x97, 0xa3, 0xd6, - 0xad, 0x98, 0xa3, 0xd6, 0xad, 0x97, 0xa3, 0xd6, 0xae, 0x98, 0xa3, 0xd6, - 0xae, 0x97, 0xa3, 0xd6, 0xae, 0x98, 0xa3, 0xd6, 0xaf, 0x97, 0xa3, 0xd6, - 0xaf, 0x98, 0xa3, 0xd6, 0xaf, 0x97, 0xa3, 0xd6, 0xb0, 0x98, 0xa3, 0xd6, - 0xb0, 0x97, 0xa3, 0xd6, 0xb0, 0x98, 0xa3, 0xd6, 0xb1, 0x97, 0xa3, 0xd6, - 0xb1, 0x98, 0xa3, 0xd6, 0xb2, 0x97, 0xa3, 0xd6, 0xb2, 0x98, 0xa3, 0xd6, - 0xb2, 0x97, 0xa3, 0xd6, 0xb3, 0x98, 0xa3, 0xd6, 0xb3, 0x97, 0xa3, 0xd6, - 0xb3, 0x98, 0xa3, 0xd6, 0xb4, 0x97, 0xa3, 0xd6, 0xb4, 0x98, 0xa3, 0xd6, - 0xb4, 0x97, 0xa3, 0xd6, 0xb5, 0x98, 0xa3, 0xd6, 0xb5, 0x97, 0xa3, 0xd6, - 0xb5, 0x98, 0xa3, 0xd6, 0xb6, 0x97, 0xa3, 0xd6, 0xb6, 0x98, 0xa3, 0xd6, - 0xb6, 0x97, 0xa3, 0xd6, 0xb7, 0x98, 0xa3, 0xd6, 0xb7, 0x97, 0xa3, 0xd6, - 0xb7, 0x98, 0xa3, 0xd6, 0xb8, 0x97, 0xa3, 0xd6, 0xb8, 0x98, 0xa3, 0xd6, - 0xb8, 0x97, 0xa3, 0xd6, 0xb9, 0x98, 0xa3, 0xd6, 0xb9, 0x97, 0xa3, 0xd6, - 0xb9, 0x98, 0xa3, 0xd6, 0xba, 0x97, 0xd1, 0xd6, 0xba, 0xb3, 0xd0, 0xd6, - 0xba, 0xb5, 0xd1, 0xd6, 0xbb, 0xb3, 0xd0, 0xd6, 0xbb, 0xb5, 0xd1, 0xd6, - 0xbb, 0xb3, 0xd0, 0xd6, 0xbc, 0xb5, 0xd1, 0xd6, 0xbc, 0xb3, 0xd0, 0xd6, - 0xbc, 0xb5, 0xd1, 0xd6, 0xbd, 0xb3, 0xd0, 0xd6, 0xbd, 0xb5, 0xd1, 0xd6, - 0xbd, 0xb3, 0xd1, 0xd6, 0xbe, 0xb0, 0xd1, 0xd6, 0xbe, 0xb3, 0xd1, 0xd6, - 0xbe, 0xb0, 0xd1, 0xd6, 0xbf, 0xb3, 0xd1, 0xd6, 0xbf, 0xb0, 0xd1, 0xd6, - 0xbf, 0xb3, 0xd1, 0xd6, 0xc0, 0xb0, 0xd1, 0xd6, 0xc0, 0xb3, 0xd1, 0xd6, - 0xc0, 0xb0, 0xd1, 0xd6, 0xc1, 0xb3, 0xd1, 0xd6, 0xc1, 0xb0, 0xd1, 0xd6, - 0xc1, 0xb3, 0xd1, 0xd6, 0xc1, 0xb0, 0xd1, 0xd6, 0xc2, 0xb3, 0xd1, 0xd6, - 0xc2, 0xb0, 0xd1, 0xd6, 0xc2, 0xb3, 0xd1, 0xd6, 0xc3, 0xb0, 0xd1, 0xd6, - 0xc3, 0xad, 0xd1, 0xd6, 0xc3, 0xb0, 0xd1, 0xd6, 0xc4, 0xad, 0xd1, 0xd6, - 0xc4, 0xb0, 0xd1, 0xd6, 0xc4, 0xad, 0xd1, 0xd6, 0xc5, 0xb0, 0xd1, 0xd6, - 0xc5, 0xad, 0xd1, 0xd6, 0xc5, 0xb0, 0xd1, 0xd6, 0xc6, 0xad, 0xd1, 0xd6, - 0xc6, 0xb0, 0xd1, 0xd6, 0xc6, 0xad, 0xd1, 0xd6, 0xc6, 0xb0, 0xd1, 0xd6, - 0xc7, 0xad, 0xd1, 0xd6, 0xc7, 0xb0, 0xd1, 0xd6, 0xc7, 0xad, 0xd1, 0xd6, - 0xc8, 0xb0, 0xd1, 0xd6, 0xc8, 0xad, 0xd1, 0xd6, 0xc8, 0xb0, 0xd1, 0xd6, - 0xc9, 0xad, 0xd1, 0xd6, 0xc9, 0xb0, 0xd1, 0xd6, 0xc9, 0xad, 0xd1, 0xd6, - 0xc9, 0xb0, 0xd1, 0xd6, 0xca, 0xad, 0xd1, 0xd6, 0xca, 0xb0, 0xd1, 0xd6, - 0xca, 0xad, 0xd1, 0xd6, 0xcb, 0xb0, 0xd1, 0xd6, 0xcb, 0xad, 0xd1, 0xd6, - 0xcb, 0xb0, 0xd1, 0xd6, 0xcc, 0xad, 0xd1, 0xd6, 0xcc, 0xb0, 0xd1, 0xd6, - 0xcc, 0xad, 0xd1, 0xd6, 0xcc, 0xb0, 0xd1, 0xd6, 0xcd, 0xad, 0xd2, 0xd6, - 0xcd, 0xac, 0xd1, 0xd6, 0xcd, 0xad, 0xd2, 0xd6, 0xce, 0xac, 0xd1, 0xd6, - 0xce, 0xad, 0xd2, 0xd6, 0xce, 0xac, 0xd1, 0xd6, 0xce, 0xad, 0xd2, 0xd6, - 0xcf, 0xac, 0xd1, 0xd6, 0xcf, 0xad, 0xd2, 0xd6, 0xcf, 0xac, 0xd1, 0xd6, - 0xd0, 0xad, 0xd2, 0xd6, 0xd0, 0xac, 0xd1, 0xd6, 0xd0, 0xad, 0xd2, 0xd6, - 0xd0, 0xac, 0xd1, 0xd6, 0xd1, 0xad, 0xd2, 0xd6, 0xd1, 0xac, 0xd1, 0xd6, - 0xd1, 0xad, 0xd2, 0xd6, 0xd1, 0xac, 0xd2, 0xd6, 0xd1, 0xac, 0xd2, 0xd6, - 0xd1, 0xac, 0xd2, 0xd6, 0xd1, 0xac, 0xd3, 0xd6, 0xd1, 0xac, 0xd3, 0xd6, - 0xd1, 0xac, 0xd3, 0xd6, 0xd1, 0xac, 0xd4, 0xd6, 0xd1, 0xac, 0xd4, 0xd4, - 0xd2, 0xac, 0xd4, 0xd6, 0xd1, 0xac, 0xd4, 0xd4, 0xd2, 0xac, 0xd5, 0xd6, - 0xd1, 0xac, 0xd5, 0xd4, 0xd2, 0xac, 0xd5, 0xd6, 0xd1, 0xac, 0xd6, 0xd4, - 0xd2, 0xac, 0xd6, 0xd6, 0xd1, 0xac, 0xd6, 0xd4, 0xd2, 0xac, 0xd6, 0xd6, - 0xd1, 0xac, 0xd7, 0xd4, 0xd2, 0xac, 0xd7, 0xd6, 0xd1, 0xac, 0xd7, 0xd4, - 0xd2, 0xac, 0xd7, 0xd6, 0xd1, 0xac, 0xd8, 0xd4, 0xd2, 0xac, 0xd8, 0xd6, - 0xd1, 0xac, 0xd8, 0xd4, 0xd2, 0xac, 0xd9, 0xd3, 0xd2, 0xac, 0xd9, 0xd4, - 0xd2, 0xac, 0xd9, 0xd3, 0xd2, 0xac, 0xd9, 0xd4, 0xd2, 0xac, 0xda, 0xd3, - 0xd2, 0xac, 0xda, 0xd4, 0xd2, 0xac, 0xda, 0xd3, 0xd2, 0xac, 0xda, 0xd4, - 0xd2, 0xac, 0xdb, 0xd3, 0xd2, 0xac, 0xdb, 0xd4, 0xd2, 0xac, 0xdb, 0xd3, - 0xd2, 0xac, 0xdb, 0xd4, 0xd2, 0xac, 0xdc, 0xd3, 0xd2, 0xac, 0xdc, 0xd4, - 0xd2, 0xac, 0xdc, 0xd3, 0xd2, 0xac, 0xdd, 0xd4, 0xd2, 0xac, 0xdd, 0xd3, - 0xd2, 0xac, 0xdd, 0xd4, 0xd2, 0xac, 0xdd, 0xd3, 0xd2, 0xac, 0xde, 0xca, - 0xe1, 0xac, 0xde, 0xca, 0xe1, 0xac, 0xde, 0xca, 0xe1, 0xac, 0xde, 0xca, - 0xe1, 0xac, 0xdf, 0xd8, 0xe9, 0xac, 0xdf, 0xd9, 0xe9, 0xac, 0xdf, 0xd8, - 0xe9, 0xac, 0xdf, 0xd9, 0xe9, 0xac, 0xe0, 0xd8, 0xe9, 0xac, 0xe0, 0xd9, - 0xe9, 0xac, 0xe0, 0xd8, 0xe9, 0xac, 0xe1, 0xd6, 0xea, 0xac, 0xe1, 0xd8, - 0xe9, 0xac, 0xe1, 0xd6, 0xea, 0xac, 0xe1, 0xd8, 0xe9, 0xac, 0xe2, 0xd6, - 0xea, 0xac, 0xe2, 0xd8, 0xe9, 0xac, 0xe2, 0xd6, 0xea, 0xac, 0xe2, 0xd8, - 0xe9, 0xac, 0xe3, 0xd6, 0xea, 0xac, 0xe3, 0xd8, 0xe9, 0xac, 0xe3, 0xd6, - 0xea, 0xac, 0xe3, 0xd8, 0xe9, 0xac, 0xe4, 0xd6, 0xea, 0xac, 0xe4, 0xd8, - 0xe9, 0xac, 0xe4, 0xd6, 0xea, 0xac, 0xe4, 0xd8, 0xe9, 0xac, 0xe5, 0xd6, - 0xea, 0xac, 0xe5, 0xd8, 0xe9, 0xac, 0xe5, 0xd6, 0xea, 0xac, 0xe5, 0xd8, - 0xe9, 0xac, 0xe6, 0xd6, 0xea, 0xac, 0xe6, 0xd8, 0xe9, 0xac, 0xe6, 0xd6, - 0xea, 0xac, 0xe6, 0xd8, 0xe9, 0xac, 0xe7, 0xd6, 0xea, 0xac, 0xe7, 0xd8, - 0xe9, 0xac, 0xe7, 0xd6, 0xea, 0xac, 0xe7, 0xd8, 0xe9, 0xac, 0xe8, 0xd6, - 0xea, 0xac, 0xe8, 0xd6, 0xea, 0xac, 0xe8, 0xd6, 0xea, 0xac, 0xe8, 0xd6, - 0xea, 0xac, 0xe9, 0xd6, 0xea, 0xac, 0xe9, 0xd6, 0xea, 0xac, 0xe9, 0xd6, - 0xea, 0xac, 0xe9, 0xd6, 0xea, 0xac, 0xea, 0xd6, 0xea, 0xab, 0xe9, 0xd6, - 0xea, 0xac, 0xea, 0xd6, 0xea, 0xab, 0xe9, 0xd6, 0xea, 0xac, 0xea, 0xd6, - 0xeb, 0xab, 0xe9, 0xd6, 0xeb, 0xac, 0xea, 0xd6, 0xeb, 0xab, 0xed, 0xd6, - 0xeb, 0xac, 0xed, 0xd6, 0xec, 0xac, 0xed, 0xd6, 0xec, 0xac, 0xed, 0xd6, - 0xec, 0xac, 0xed, 0xd6, 0xec, 0xac, 0xed, 0xd6, 0xec, 0xac, 0xed, 0xd6, - 0xed, 0xac, 0xed, 0xd6, 0xec, 0xac, 0xed, 0xd6, 0xed, 0xac, 0xed, 0xd6, - 0xec, 0xac, 0xee, 0xd6, 0xed, 0xac, 0xee, 0xd6, 0xec, 0xac, 0xee, 0xd6, - 0xed, 0xac, 0xee, 0xd6, 0xec, 0xac, 0xef, 0xd6, 0xed, 0xac, 0xef, 0xd6, - 0xec, 0xac, 0xef, 0xd6, 0xed, 0xac, 0xef, 0xd6, 0xec, 0xac, 0xf0, 0xd6, - 0xed, 0xac, 0xf0, 0xd6, 0xec, 0xac, 0xf0, 0xd6, 0xed, 0xac, 0xf0, 0xd6, - 0xec, 0xac, 0xf1, 0xd6, 0xed, 0xac, 0xf1, 0xd4, 0xed, 0xac, 0xf1, 0xd6, - 0xed, 0xac, 0xf1, 0xd4, 0xed, 0xac, 0xf2, 0xd6, 0xed, 0xac, 0xf2, 0xd4, - 0xed, 0xac, 0xf2, 0xd6, 0xed, 0xac, 0xf2, 0xd4, 0xed, 0xac, 0xf2, 0xd6, - 0xed, 0xac, 0xf3, 0xd4, 0xed, 0xac, 0xf3, 0xd6, 0xed, 0xac, 0xf3, 0xd4, - 0xed, 0xac, 0xf3, 0xd6, 0xed, 0xac, 0xf4, 0xd4, 0xed, 0xac, 0xf4, 0xd6, - 0xed, 0xac, 0xf4, 0xd4, 0xed, 0xac, 0xf4, 0xd6, 0xed, 0xac, 0xf5, 0xd4, - 0xed, 0xac, 0xf5, 0xd6, 0xed, 0xac, 0xf5, 0xd4, 0xed, 0xac, 0xf5, 0xd6, - 0xed, 0xac, 0xf5, 0xd4, 0xed, 0xac, 0xf6, 0xd6, 0xed, 0xac, 0xf6, 0xd4, - 0xed, 0xac, 0xf6, 0xd6, 0xed, 0xac, 0xf6, 0xd4, 0xed, 0xac, 0xf7, 0xd6, - 0xed, 0xac, 0xf7, 0xd4, 0xed, 0xac, 0xf7, 0xd6, 0xed, 0xac, 0xf7, 0xd4, - 0xed, 0xac, 0xf8, 0xd6, 0xed, 0xac, 0xf8, 0xd4, 0xed, 0xac, 0xf8, 0xd6, - 0xed, 0xac, 0xf8, 0xd4, 0xed, 0xac, 0xf8, 0xd6, 0xed, 0xac, 0xf9, 0xd4, - 0xed, 0xac, 0xf9, 0xd6, 0xed, 0xac, 0xf9, 0xc7, 0xf7, 0xac, 0xf9, 0xc7, - 0xf7, 0xac, 0xfa, 0xc7, 0xf7, 0xac, 0xfa, 0xc7, 0xf7, 0xac, 0xfa, 0xc7, - 0xf7, 0xac, 0xfa, 0xc7, 0xf7, 0xac, 0xfa, 0xc7, 0xf7, 0xac, 0xfb, 0xc7, - 0xf7, 0xac, 0xfb, 0xc7, 0xf7, 0xac, 0xfb, 0xc7, 0xf7, 0xac, 0xfb, 0xc7, - 0xf7, 0xac, 0xfc, 0xc7, 0xf7, 0xac, 0xfc, 0xc7, 0xf7, 0xac, 0xfc, 0xc7, - 0xf7, 0xac, 0xfc, 0xc7, 0xf7, 0xac, 0xfc, 0xc7, 0xf7, 0xac, 0xfd, 0xc7, - 0xf7, 0xac, 0xfd, 0xc7, 0xf7, 0xac, 0xfd, 0xc7, 0xf7, 0xac, 0xfd, 0xc7, - 0xf7, 0xac, 0xfe, 0xc7, 0xf7, 0xac, 0xfe, 0xc7, 0xf7, 0xac, 0xfe, 0xc7, - 0xf7, 0xac, 0xfe, 0xc7, 0xf7, 0xac, 0xfe, 0xc7, 0xf7, 0xac, 0xff, 0xc7, - 0xf7, 0xac, 0xff, 0xc7, 0xf7, 0xac, 0x03, 0xdc, 0x8a, 0xac, 0x0a, 0xda, - 0x8b, 0xac, 0x0f, 0xdc, 0x8a, 0xac, 0x14, 0xda, 0x8b, 0xac, 0x17, 0xdc, - 0x8a, 0xac, 0x1b, 0xda, 0x8b, 0xac, 0x1e, 0xdc, 0x8a, 0xac, 0x20, 0xda, - 0x8b, 0xac, 0x23, 0xdc, 0x8a, 0xac, 0x25, 0xda, 0x8b, 0xac, 0x27, 0xdc, - 0x8a, 0xac, 0x29, 0xda, 0x8b, 0xac, 0x2b, 0xdc, 0x8a, 0xac, 0x2d, 0xda, - 0x8b, 0xac, 0x2f, 0xdc, 0x8a, 0xac, 0x31, 0xda, 0x8b, 0xac, 0x32, 0xdc, - 0x8a, 0xac, 0x34, 0xda, 0x8b, 0xac, 0x35, 0xdc, 0x8a, 0xac, 0x37, 0xda, - 0x8b, 0xac, 0x38, 0xdc, 0x8a, 0xac, 0x3a, 0xda, 0x8b, 0xac, 0x3b, 0xdc, - 0x8a, 0xac, 0x3c, 0xda, 0x8b, 0xac, 0x3e, 0xdc, 0x8a, 0xac, 0x3f, 0xda, - 0x8b, 0xac, 0x40, 0xdc, 0x8a, 0xac, 0x42, 0xda, 0x8b, 0xac, 0x43, 0xdc, - 0x8a, 0xac, 0x44, 0xda, 0x8b, 0xac, 0x45, 0xdc, 0x8a, 0xac, 0x46, 0xda, - 0x8b, 0xac, 0x47, 0xdc, 0x8a, 0xac, 0x48, 0xda, 0x8b, 0xac, 0x49, 0xdc, - 0x8a, 0xac, 0x4a, 0xda, 0x8b, 0xac, 0x4b, 0xdc, 0x8a, 0xac, 0x4c, 0xda, - 0x8b, 0xac, 0x4d, 0xdc, 0x8a, 0xac, 0x4e, 0xda, 0x8b, 0xac, 0x4f, 0xd8, - 0x8b, 0xac, 0x50, 0xda, 0x8b, 0xac, 0x51, 0xd8, 0x8b, 0xac, 0x52, 0xda, - 0x8b, 0xac, 0x53, 0xd8, 0x8b, 0xac, 0x54, 0xda, 0x8b, 0xac, 0x55, 0xd8, - 0x8b, 0xac, 0x56, 0xda, 0x8b, 0xac, 0x57, 0xd8, 0x8b, 0xac, 0x58, 0xda, - 0x8b, 0xac, 0x58, 0xd8, 0x8b, 0xac, 0x59, 0xda, 0x8b, 0xac, 0x5a, 0xd8, - 0x8b, 0xac, 0x5b, 0xda, 0x8b, 0xac, 0x5c, 0xd8, 0x8b, 0xac, 0x5d, 0xda, - 0x8b, 0xac, 0x5d, 0xd8, 0x8b, 0xac, 0x5e, 0xda, 0x8b, 0xac, 0x5f, 0xd8, - 0x8b, 0xac, 0x60, 0xda, 0x8b, 0xac, 0x60, 0xd8, 0x8b, 0xac, 0x61, 0xda, - 0x8b, 0xac, 0x62, 0xd8, 0x8b, 0xac, 0x63, 0xda, 0x8b, 0xac, 0x63, 0xd8, - 0x8b, 0xac, 0x64, 0xda, 0x8b, 0xac, 0x65, 0xd8, 0x8b, 0xac, 0x66, 0xda, - 0x8b, 0xac, 0x66, 0xd8, 0x8b, 0xac, 0x67, 0xda, 0x8b, 0xac, 0x68, 0xd8, - 0x8b, 0xac, 0x68, 0xda, 0x8b, 0xac, 0x69, 0xd8, 0x8b, 0xac, 0x6a, 0xda, - 0x8b, 0xac, 0x6a, 0xd8, 0x8b, 0xac, 0x6b, 0xda, 0x8b, 0xac, 0x6c, 0xd8, - 0x8b, 0xac, 0x6c, 0xda, 0x8b, 0xac, 0x6d, 0xd8, 0x8b, 0xac, 0x6e, 0xda, - 0x8b, 0xac, 0x6e, 0xd8, 0x8b, 0xac, 0x6f, 0xda, 0x8b, 0xac, 0x70, 0xd8, - 0x8b, 0xac, 0x70, 0xda, 0x8b, 0xac, 0x71, 0xd8, 0x8b, 0xac, 0x72, 0xda, - 0x8b, 0xac, 0x72, 0xd8, 0x8b, 0xac, 0x73, 0xda, 0x8b, 0xac, 0x73, 0xd8, - 0x8b, 0xac, 0x74, 0xda, 0x8b, 0xac, 0x75, 0xd8, 0x8b, 0xac, 0x75, 0xda, - 0x8b, 0xac, 0x76, 0xd8, 0x8b, 0xac, 0x76, 0xda, 0x8b, 0xac, 0x77, 0xd8, - 0x8b, 0xac, 0x78, 0xda, 0x8b, 0xac, 0x78, 0xd8, 0x8b, 0xac, 0x79, 0xd6, - 0x8c, 0xac, 0x79, 0xd8, 0x8b, 0xac, 0x7a, 0xd6, 0x8c, 0xac, 0x7a, 0xd8, - 0x8b, 0xac, 0x7b, 0xd6, 0x8c, 0xac, 0x7c, 0xd8, 0x8b, 0xac, 0x7c, 0xd6, - 0x8c, 0xac, 0x7d, 0xd8, 0x8b, 0xac, 0x7d, 0xd6, 0x8c, 0xac, 0x7e, 0xd8, - 0x8b, 0xac, 0x7e, 0xd6, 0x8c, 0xac, 0x7f, 0xd8, 0x8b, 0xac, 0x7f, 0xd6, - 0x8c, 0xac, 0x80, 0xd8, 0x8b, 0xac, 0x81, 0xd6, 0x8c, 0xac, 0x81, 0xd8, - 0x8b, 0xac, 0x82, 0xd6, 0x8c, 0xac, 0x82, 0xd8, 0x8b, 0xac, 0x83, 0xd6, - 0x8c, 0xac, 0x83, 0xd8, 0x8b, 0xac, 0x84, 0xd6, 0x8c, 0xac, 0x84, 0xd8, - 0x8b, 0xac, 0x85, 0xd6, 0x8c, 0xac, 0x85, 0xd8, 0x8b, 0xac, 0x86, 0xd6, - 0x8c, 0xac, 0x86, 0xd8, 0x8b, 0xac, 0x87, 0xd6, 0x8c, 0xac, 0x87, 0xd8, - 0x8b, 0xac, 0x88, 0xd6, 0x8c, 0xac, 0x88, 0xd6, 0x8c, 0xac, 0x89, 0xd6, - 0x8c, 0xac, 0x89, 0xd6, 0x8c, 0xac, 0x8a, 0xd6, 0x8c, 0xac, 0x8a, 0xd6, - 0x8c, 0xac, 0x8b, 0xd6, 0x8c, 0xac, 0x8b, 0xd6, 0x8c, 0xac, 0x8c, 0xd6, - 0x8c, 0xab, 0x8b, 0xd6, 0x8c, 0xac, 0x8c, 0xd6, 0x8d, 0xab, 0x8b, 0xd6, - 0x8d, 0xac, 0x8c, 0xd6, 0x8e, 0xab, 0x8b, 0xd6, 0x8e, 0xac, 0x8c, 0xd6, - 0x8e, 0xab, 0x8b, 0xd6, 0x8f, 0xac, 0x8c, 0xd6, 0x8f, 0xab, 0x8b, 0xd6, - 0x90, 0xac, 0x8c, 0xd6, 0x90, 0xab, 0x8b, 0xd6, 0x91, 0xac, 0x8c, 0xd6, - 0x91, 0xab, 0x8b, 0xd6, 0x92, 0xac, 0x8c, 0xd6, 0x92, 0xab, 0x8b, 0xd6, - 0x93, 0xac, 0x8c, 0xd6, 0x93, 0xab, 0x8b, 0xd6, 0x94, 0xac, 0x8c, 0xd6, - 0x94, 0xab, 0x8b, 0xd6, 0x94, 0xac, 0x8c, 0xd6, 0x95, 0xab, 0x8b, 0xd6, - 0x95, 0xac, 0x8c, 0xd6, 0x96, 0xab, 0x8b, 0xd6, 0x96, 0xac, 0x8c, 0xd6, - 0x97, 0xab, 0x8c, 0xd6, 0x97, 0xa7, 0x8c, 0xd6, 0x98, 0xab, 0x8c, 0xd6, - 0x98, 0xa7, 0x8c, 0xd6, 0x98, 0xab, 0x8c, 0xd6, 0x99, 0xa7, 0x8c, 0xd6, - 0x99, 0xab, 0x8c, 0xd6, 0x9a, 0xa7, 0x8c, 0xd6, 0x9a, 0xab, 0x8c, 0xd6, - 0x9a, 0xa7, 0x8c, 0xd6, 0x9b, 0xab, 0x8c, 0xd6, 0x9b, 0xa7, 0x8c, 0xd6, - 0x9c, 0xab, 0x8c, 0xd6, 0x9c, 0xa7, 0x8c, 0xd6, 0x9d, 0xab, 0x8c, 0xd6, - 0x9d, 0xa7, 0x8c, 0xd6, 0x9d, 0xab, 0x8c, 0xd6, 0x9e, 0xa7, 0x8c, 0xd6, - 0x9e, 0xab, 0xa1, 0xd6, 0x9f, 0x97, 0xa1, 0xd6, 0x9f, 0x97, 0xa1, 0xd6, - 0x9f, 0x97, 0xa1, 0xd6, 0xa0, 0x97, 0xa1, 0xd6, 0xa0, 0x97, 0xa1, 0xd6, - 0xa1, 0x97, 0xa1, 0xd6, 0xa1, 0x97, 0xa1, 0xd6, 0xa1, 0x97, 0xa2, 0xd6, - 0xa2, 0x97, 0xa2, 0xd6, 0xa2, 0x97, 0xa3, 0xd6, 0xa3, 0x97, 0xa3, 0xd6, - 0xa3, 0x97, 0xa3, 0xd6, 0xa3, 0x97, 0xa3, 0xd6, 0xa4, 0x97, 0xa3, 0xd6, - 0xa4, 0x97, 0xa3, 0xd6, 0xa5, 0x97, 0xa3, 0xd6, 0xa5, 0x97, 0xa3, 0xd6, - 0xa5, 0x97, 0xa3, 0xd6, 0xa6, 0x97, 0xa3, 0xd6, 0xa6, 0x97, 0xa3, 0xd6, - 0xa6, 0x97, 0xa3, 0xd6, 0xa7, 0x97, 0xa3, 0xd6, 0xa7, 0x97, 0xa3, 0xd6, - 0xa8, 0x97, 0xa3, 0xd6, 0xa8, 0x97, 0xa3, 0xd6, 0xa8, 0x97, 0xa3, 0xd6, - 0xa9, 0x97, 0xa3, 0xd6, 0xa9, 0x97, 0xa3, 0xd6, 0xaa, 0x97, 0xa3, 0xd6, - 0xaa, 0x97, 0xa3, 0xd6, 0xaa, 0x97, 0xa3, 0xd6, 0xab, 0x97, 0xa3, 0xd6, - 0xab, 0x97, 0xa3, 0xd6, 0xab, 0x97, 0xa3, 0xd6, 0xac, 0x97, 0xa3, 0xd6, - 0xac, 0x97, 0xa3, 0xd6, 0xac, 0x97, 0xa3, 0xd6, 0xad, 0x97, 0xa3, 0xd6, - 0xad, 0x97, 0xa3, 0xd6, 0xae, 0x97, 0xa3, 0xd6, 0xae, 0x97, 0xa3, 0xd6, - 0xae, 0x97, 0xa3, 0xd6, 0xaf, 0x97, 0xa3, 0xd6, 0xaf, 0x97, 0xa3, 0xd6, - 0xaf, 0x97, 0xa3, 0xd6, 0xb0, 0x97, 0xa3, 0xd6, 0xb0, 0x97, 0xa3, 0xd6, - 0xb0, 0x97, 0xa3, 0xd6, 0xb1, 0x97, 0xa3, 0xd6, 0xb1, 0x97, 0xa3, 0xd6, - 0xb2, 0x97, 0xa3, 0xd6, 0xb2, 0x97, 0xa3, 0xd6, 0xb2, 0x97, 0xa3, 0xd6, - 0xb3, 0x97, 0xa3, 0xd6, 0xb3, 0x97, 0xa3, 0xd6, 0xb3, 0x97, 0xa3, 0xd6, - 0xb4, 0x97, 0xa3, 0xd6, 0xb4, 0x97, 0xa3, 0xd6, 0xb4, 0x97, 0xa3, 0xd6, - 0xb5, 0x97, 0xa3, 0xd6, 0xb5, 0x97, 0xa3, 0xd6, 0xb5, 0x97, 0xa3, 0xd6, - 0xb6, 0x97, 0xa3, 0xd6, 0xb6, 0x97, 0xa3, 0xd6, 0xb6, 0x97, 0xa3, 0xd6, - 0xb7, 0x97, 0xa3, 0xd6, 0xb7, 0x97, 0xa3, 0xd6, 0xb7, 0x97, 0xa3, 0xd6, - 0xb8, 0x97, 0xa3, 0xd6, 0xb8, 0x97, 0xa3, 0xd6, 0xb8, 0x97, 0xa3, 0xd6, - 0xb9, 0x97, 0xa3, 0xd6, 0xb9, 0x97, 0xa3, 0xd6, 0xb9, 0x97, 0xa3, 0xd6, - 0xba, 0x97, 0xd1, 0xd6, 0xba, 0xb2, 0xd0, 0xd6, 0xba, 0xb5, 0xd1, 0xd6, - 0xbb, 0xb2, 0xd1, 0xd6, 0xbb, 0xaf, 0xd1, 0xd6, 0xbb, 0xb2, 0xd1, 0xd6, - 0xbc, 0xaf, 0xd1, 0xd6, 0xbc, 0xb2, 0xd1, 0xd6, 0xbc, 0xaf, 0xd1, 0xd6, - 0xbd, 0xb2, 0xd1, 0xd6, 0xbd, 0xaf, 0xd1, 0xd6, 0xbd, 0xb2, 0xd1, 0xd6, - 0xbe, 0xaf, 0xd1, 0xd6, 0xbe, 0xb2, 0xd1, 0xd6, 0xbe, 0xaf, 0xd1, 0xd6, - 0xbf, 0xb2, 0xd1, 0xd6, 0xbf, 0xaf, 0xd1, 0xd6, 0xbf, 0xb2, 0xd1, 0xd6, - 0xc0, 0xaf, 0xd1, 0xd6, 0xc0, 0xb2, 0xd1, 0xd6, 0xc0, 0xaf, 0xd1, 0xd6, - 0xc1, 0xb2, 0xd1, 0xd6, 0xc1, 0xaf, 0xd1, 0xd6, 0xc1, 0xb2, 0xd1, 0xd6, - 0xc1, 0xaf, 0xd1, 0xd6, 0xc2, 0xb2, 0xd1, 0xd6, 0xc2, 0xaf, 0xd1, 0xd6, - 0xc2, 0xb2, 0xd1, 0xd6, 0xc3, 0xaf, 0xd1, 0xd6, 0xc3, 0xb2, 0xd1, 0xd6, - 0xc3, 0xaf, 0xd1, 0xd6, 0xc4, 0xb2, 0xd1, 0xd6, 0xc4, 0xaf, 0xd1, 0xd6, - 0xc4, 0xb2, 0xd1, 0xd6, 0xc5, 0xaf, 0xd1, 0xd6, 0xc5, 0xb2, 0xd1, 0xd6, - 0xc5, 0xaf, 0xd1, 0xd6, 0xc6, 0xb2, 0xd1, 0xd6, 0xc6, 0xaf, 0xd1, 0xd6, - 0xc6, 0xb2, 0xd1, 0xd6, 0xc6, 0xaf, 0xd1, 0xd6, 0xc7, 0xad, 0xd1, 0xd6, - 0xc7, 0xaf, 0xd1, 0xd6, 0xc7, 0xad, 0xd1, 0xd6, 0xc8, 0xaf, 0xd1, 0xd6, - 0xc8, 0xad, 0xd1, 0xd6, 0xc8, 0xaf, 0xd1, 0xd6, 0xc9, 0xad, 0xd1, 0xd6, - 0xc9, 0xaf, 0xd1, 0xd6, 0xc9, 0xad, 0xd1, 0xd6, 0xc9, 0xaf, 0xd1, 0xd6, - 0xca, 0xad, 0xd1, 0xd6, 0xca, 0xaf, 0xd1, 0xd6, 0xca, 0xad, 0xd1, 0xd6, - 0xcb, 0xaf, 0xd1, 0xd6, 0xcb, 0xad, 0xd1, 0xd6, 0xcb, 0xaf, 0xd1, 0xd6, - 0xcc, 0xad, 0xd1, 0xd6, 0xcc, 0xaf, 0xd1, 0xd6, 0xcc, 0xad, 0xd1, 0xd6, - 0xcc, 0xaf, 0xd1, 0xd6, 0xcd, 0xad, 0xd1, 0xd6, 0xcd, 0xaf, 0xd1, 0xd6, - 0xcd, 0xad, 0xd1, 0xd6, 0xce, 0xaf, 0xd1, 0xd6, 0xce, 0xad, 0xd1, 0xd6, - 0xce, 0xaf, 0xd1, 0xd6, 0xce, 0xad, 0xd1, 0xd6, 0xcf, 0xaf, 0xd1, 0xd6, - 0xcf, 0xad, 0xd2, 0xd6, 0xcf, 0xac, 0xd1, 0xd6, 0xd0, 0xad, 0xd2, 0xd6, - 0xd0, 0xac, 0xd1, 0xd6, 0xd0, 0xad, 0xd2, 0xd6, 0xd0, 0xac, 0xd1, 0xd6, - 0xd1, 0xad, 0xd2, 0xd6, 0xd1, 0xac, 0xd1, 0xd6, 0xd1, 0xad, 0xd2, 0xd6, - 0xd1, 0xac, 0xd2, 0xd6, 0xd1, 0xac, 0xd2, 0xd6, 0xd1, 0xac, 0xd2, 0xd6, - 0xd1, 0xac, 0xd3, 0xd6, 0xd1, 0xac, 0xd3, 0xd6, 0xd1, 0xac, 0xd3, 0xd6, - 0xd1, 0xac, 0xd4, 0xd6, 0xd1, 0xac, 0xd4, 0xd5, 0xd2, 0xac, 0xd4, 0xd6, - 0xd1, 0xac, 0xd4, 0xd5, 0xd2, 0xac, 0xd5, 0xd6, 0xd1, 0xac, 0xd5, 0xd5, - 0xd2, 0xac, 0xd5, 0xd6, 0xd1, 0xac, 0xd6, 0xd5, 0xd2, 0xac, 0xd6, 0xd6, - 0xd1, 0xac, 0xd6, 0xd5, 0xd2, 0xac, 0xd6, 0xd6, 0xd1, 0xac, 0xd7, 0xd5, - 0xd2, 0xac, 0xd7, 0xd6, 0xd1, 0xac, 0xd7, 0xd5, 0xd2, 0xac, 0xd7, 0xd6, - 0xd1, 0xac, 0xd8, 0xd5, 0xd2, 0xac, 0xd8, 0xd6, 0xd1, 0xac, 0xd8, 0xd5, - 0xd2, 0xac, 0xd9, 0xd6, 0xd1, 0xac, 0xd9, 0xd5, 0xd2, 0xac, 0xd9, 0xd6, - 0xd1, 0xac, 0xd9, 0xd5, 0xd2, 0xac, 0xda, 0xd6, 0xd1, 0xac, 0xda, 0xd5, - 0xd2, 0xac, 0xda, 0xd6, 0xd1, 0xac, 0xda, 0xd5, 0xd2, 0xac, 0xdb, 0xd6, - 0xd1, 0xac, 0xdb, 0xd5, 0xd2, 0xac, 0xdb, 0xd6, 0xd1, 0xac, 0xdb, 0xd5, - 0xd2, 0xac, 0xdc, 0xd3, 0xd2, 0xac, 0xdc, 0xd5, 0xd2, 0xac, 0xdc, 0xd3, - 0xd2, 0xac, 0xdd, 0xd5, 0xd2, 0xac, 0xdd, 0xd3, 0xd2, 0xac, 0xdd, 0xd5, - 0xd2, 0xac, 0xdd, 0xd3, 0xd2, 0xac, 0xde, 0xca, 0xdf, 0xac, 0xde, 0xca, - 0xe0, 0xac, 0xde, 0xca, 0xdf, 0xac, 0xde, 0xd9, 0xe9, 0xac, 0xdf, 0xd8, - 0xe9, 0xac, 0xdf, 0xd9, 0xe9, 0xac, 0xdf, 0xd8, 0xe9, 0xac, 0xdf, 0xd9, - 0xe9, 0xac, 0xe0, 0xd8, 0xe9, 0xac, 0xe0, 0xd9, 0xe9, 0xac, 0xe0, 0xd8, - 0xe9, 0xac, 0xe1, 0xd9, 0xe9, 0xac, 0xe1, 0xd8, 0xe9, 0xac, 0xe1, 0xd9, - 0xe9, 0xac, 0xe1, 0xd8, 0xe9, 0xac, 0xe2, 0xd9, 0xe9, 0xac, 0xe2, 0xd8, - 0xe9, 0xac, 0xe2, 0xd9, 0xe9, 0xac, 0xe2, 0xd8, 0xe9, 0xac, 0xe3, 0xd9, - 0xe9, 0xac, 0xe3, 0xd8, 0xe9, 0xac, 0xe3, 0xd9, 0xe9, 0xac, 0xe3, 0xd8, - 0xe9, 0xac, 0xe4, 0xd6, 0xea, 0xac, 0xe4, 0xd8, 0xe9, 0xac, 0xe4, 0xd6, - 0xea, 0xac, 0xe4, 0xd8, 0xe9, 0xac, 0xe5, 0xd6, 0xea, 0xac, 0xe5, 0xd8, - 0xe9, 0xac, 0xe5, 0xd6, 0xea, 0xac, 0xe5, 0xd8, 0xe9, 0xac, 0xe6, 0xd6, - 0xea, 0xac, 0xe6, 0xd8, 0xe9, 0xac, 0xe6, 0xd6, 0xea, 0xac, 0xe6, 0xd8, - 0xe9, 0xac, 0xe7, 0xd6, 0xea, 0xac, 0xe7, 0xd8, 0xe9, 0xac, 0xe7, 0xd6, - 0xea, 0xac, 0xe7, 0xd8, 0xe9, 0xac, 0xe8, 0xd6, 0xea, 0xac, 0xe8, 0xd6, - 0xea, 0xac, 0xe8, 0xd6, 0xea, 0xac, 0xe8, 0xd6, 0xea, 0xac, 0xe9, 0xd6, - 0xea, 0xac, 0xe9, 0xd6, 0xea, 0xac, 0xe9, 0xd6, 0xea, 0xac, 0xe9, 0xd6, - 0xea, 0xac, 0xea, 0xd6, 0xea, 0xab, 0xe9, 0xd6, 0xea, 0xac, 0xea, 0xd6, - 0xea, 0xab, 0xe9, 0xd6, 0xea, 0xac, 0xea, 0xd6, 0xeb, 0xab, 0xe9, 0xd6, - 0xeb, 0xac, 0xea, 0xd6, 0xeb, 0xab, 0xed, 0xd6, 0xeb, 0xac, 0xed, 0xd6, - 0xec, 0xac, 0xed, 0xd6, 0xec, 0xac, 0xed, 0xd6, 0xec, 0xac, 0xed, 0xd6, - 0xec, 0xac, 0xed, 0xd6, 0xec, 0xac, 0xed, 0xd6, 0xed, 0xac, 0xed, 0xd6, - 0xec, 0xac, 0xed, 0xd6, 0xed, 0xac, 0xed, 0xd6, 0xec, 0xac, 0xee, 0xd6, - 0xed, 0xac, 0xee, 0xd6, 0xec, 0xac, 0xee, 0xd6, 0xed, 0xac, 0xee, 0xd6, - 0xec, 0xac, 0xef, 0xd6, 0xed, 0xac, 0xef, 0xd6, 0xec, 0xac, 0xef, 0xd6, - 0xed, 0xac, 0xef, 0xd6, 0xec, 0xac, 0xf0, 0xd6, 0xed, 0xac, 0xf0, 0xd6, - 0xec, 0xac, 0xf0, 0xd6, 0xed, 0xac, 0xf0, 0xd6, 0xec, 0xac, 0xf1, 0xd6, - 0xed, 0xac, 0xf1, 0xd6, 0xec, 0xac, 0xf1, 0xd6, 0xed, 0xac, 0xf1, 0xd6, - 0xec, 0xac, 0xf2, 0xd6, 0xed, 0xac, 0xf2, 0xd6, 0xec, 0xac, 0xf2, 0xd6, - 0xed, 0xac, 0xf2, 0xd6, 0xec, 0xac, 0xf2, 0xd6, 0xed, 0xac, 0xf3, 0xd4, - 0xed, 0xac, 0xf3, 0xd6, 0xed, 0xac, 0xf3, 0xd4, 0xed, 0xac, 0xf3, 0xd6, - 0xed, 0xac, 0xf4, 0xd4, 0xed, 0xac, 0xf4, 0xd6, 0xed, 0xac, 0xf4, 0xd4, - 0xed, 0xac, 0xf4, 0xd6, 0xed, 0xac, 0xf5, 0xd4, 0xed, 0xac, 0xf5, 0xd6, - 0xed, 0xac, 0xf5, 0xd4, 0xed, 0xac, 0xf5, 0xd6, 0xed, 0xac, 0xf5, 0xd4, - 0xed, 0xac, 0xf6, 0xd6, 0xed, 0xac, 0xf6, 0xd4, 0xed, 0xac, 0xf6, 0xd6, - 0xed, 0xac, 0xf6, 0xd4, 0xed, 0xac, 0xf7, 0xd6, 0xed, 0xac, 0xf7, 0xd4, - 0xed, 0xac, 0xf7, 0xd6, 0xed, 0xac, 0xf7, 0xd4, 0xed, 0xac, 0xf8, 0xd6, - 0xed, 0xac, 0xf8, 0xd4, 0xed, 0xac, 0xf8, 0xd6, 0xed, 0xac, 0xf8, 0xd4, - 0xed, 0xac, 0xf8, 0xd6, 0xed, 0xac, 0xf9, 0xd4, 0xed, 0xac, 0xf9, 0xd6, - 0xed, 0xac, 0xf9, 0xd4, 0xed, 0xac, 0xf9, 0xd6, 0xed, 0xac, 0xfa, 0xc7, - 0xf7, 0xac, 0xfa, 0xc7, 0xf7, 0xac, 0xfa, 0xc7, 0xf7, 0xac, 0xfa, 0xc7, - 0xf7, 0xac, 0xfa, 0xc7, 0xf7, 0xac, 0xfb, 0xc7, 0xf7, 0xac, 0xfb, 0xc7, - 0xf7, 0xac, 0xfb, 0xc7, 0xf7, 0xac, 0xfb, 0xc7, 0xf7, 0xac, 0xfc, 0xc7, - 0xf7, 0xac, 0xfc, 0xc7, 0xf7, 0xac, 0xfc, 0xc7, 0xf7, 0xac, 0xfc, 0xc7, - 0xf7, 0xac, 0xfc, 0xc7, 0xf7, 0xac, 0xfd, 0xc7, 0xf7, 0xac, 0xfd, 0xc7, - 0xf7, 0xac, 0xfd, 0xc7, 0xf7, 0xac, 0xfd, 0xc7, 0xf7, 0xac, 0xfe, 0xc7, - 0xf7, 0xac, 0xfe, 0xc7, 0xf7, 0xac, 0xfe, 0xc7, 0xf7, 0xac, 0xfe, 0xc7, - 0xf7, 0xac, 0xfe, 0xc7, 0xf7, 0xac, 0xff, 0xc7, 0xf7, 0xac, 0xff, 0xc7, - 0xf7, 0xac, 0x03, 0xdb, 0x8a, 0xad, 0x0a, 0xdd, 0x8a, 0xad, 0x0f, 0xdb, - 0x8a, 0xad, 0x14, 0xdd, 0x8a, 0xad, 0x17, 0xdb, 0x8a, 0xad, 0x1b, 0xdd, - 0x8a, 0xad, 0x1e, 0xdb, 0x8a, 0xad, 0x20, 0xdd, 0x8a, 0xad, 0x23, 0xdb, - 0x8a, 0xad, 0x25, 0xdd, 0x8a, 0xad, 0x27, 0xdb, 0x8a, 0xad, 0x29, 0xdd, - 0x8a, 0xad, 0x2b, 0xdb, 0x8a, 0xad, 0x2d, 0xdd, 0x8a, 0xad, 0x2f, 0xdb, - 0x8a, 0xad, 0x31, 0xdd, 0x8a, 0xad, 0x32, 0xdb, 0x8a, 0xad, 0x34, 0xdd, - 0x8a, 0xad, 0x35, 0xdb, 0x8a, 0xad, 0x37, 0xdd, 0x8a, 0xad, 0x38, 0xdb, - 0x8a, 0xad, 0x3a, 0xdd, 0x8a, 0xad, 0x3b, 0xdb, 0x8a, 0xad, 0x3c, 0xda, - 0x8b, 0xad, 0x3e, 0xdb, 0x8a, 0xad, 0x3f, 0xda, 0x8b, 0xad, 0x40, 0xdb, - 0x8a, 0xad, 0x42, 0xda, 0x8b, 0xad, 0x43, 0xdb, 0x8a, 0xad, 0x44, 0xda, - 0x8b, 0xad, 0x45, 0xdb, 0x8a, 0xad, 0x46, 0xda, 0x8b, 0xad, 0x47, 0xdb, - 0x8a, 0xad, 0x48, 0xda, 0x8b, 0xad, 0x49, 0xdb, 0x8a, 0xad, 0x4a, 0xda, - 0x8b, 0xad, 0x4b, 0xdb, 0x8a, 0xad, 0x4c, 0xda, 0x8b, 0xad, 0x4d, 0xdb, - 0x8a, 0xad, 0x4e, 0xda, 0x8b, 0xad, 0x4f, 0xdb, 0x8a, 0xad, 0x50, 0xda, - 0x8b, 0xad, 0x51, 0xdb, 0x8a, 0xad, 0x52, 0xda, 0x8b, 0xad, 0x53, 0xdb, - 0x8a, 0xad, 0x54, 0xda, 0x8b, 0xad, 0x55, 0xdb, 0x8a, 0xad, 0x56, 0xda, - 0x8b, 0xad, 0x57, 0xdb, 0x8a, 0xad, 0x58, 0xda, 0x8b, 0xad, 0x58, 0xdb, - 0x8a, 0xad, 0x59, 0xda, 0x8b, 0xad, 0x5a, 0xdb, 0x8a, 0xad, 0x5b, 0xda, - 0x8b, 0xad, 0x5c, 0xdb, 0x8a, 0xad, 0x5d, 0xda, 0x8b, 0xad, 0x5d, 0xdb, - 0x8a, 0xad, 0x5e, 0xda, 0x8b, 0xad, 0x5f, 0xdb, 0x8a, 0xad, 0x60, 0xda, - 0x8b, 0xad, 0x60, 0xd8, 0x8b, 0xad, 0x61, 0xda, 0x8b, 0xad, 0x62, 0xd8, - 0x8b, 0xad, 0x63, 0xda, 0x8b, 0xad, 0x63, 0xd8, 0x8b, 0xad, 0x64, 0xda, - 0x8b, 0xad, 0x65, 0xd8, 0x8b, 0xad, 0x66, 0xda, 0x8b, 0xad, 0x66, 0xd8, - 0x8b, 0xad, 0x67, 0xda, 0x8b, 0xad, 0x68, 0xd8, 0x8b, 0xad, 0x68, 0xda, - 0x8b, 0xad, 0x69, 0xd8, 0x8b, 0xad, 0x6a, 0xda, 0x8b, 0xad, 0x6a, 0xd8, - 0x8b, 0xad, 0x6b, 0xda, 0x8b, 0xad, 0x6c, 0xd8, 0x8b, 0xad, 0x6c, 0xda, - 0x8b, 0xad, 0x6d, 0xd8, 0x8b, 0xad, 0x6e, 0xda, 0x8b, 0xad, 0x6e, 0xd8, - 0x8b, 0xad, 0x6f, 0xda, 0x8b, 0xad, 0x70, 0xd8, 0x8b, 0xad, 0x70, 0xda, - 0x8b, 0xad, 0x71, 0xd8, 0x8b, 0xad, 0x72, 0xda, 0x8b, 0xad, 0x72, 0xd8, - 0x8b, 0xad, 0x73, 0xda, 0x8b, 0xad, 0x73, 0xd8, 0x8b, 0xad, 0x74, 0xda, - 0x8b, 0xad, 0x75, 0xd8, 0x8b, 0xad, 0x75, 0xda, 0x8b, 0xad, 0x76, 0xd8, - 0x8b, 0xad, 0x76, 0xda, 0x8b, 0xad, 0x77, 0xd8, 0x8b, 0xad, 0x78, 0xda, - 0x8b, 0xad, 0x78, 0xd8, 0x8b, 0xad, 0x79, 0xd7, 0x8c, 0xad, 0x79, 0xd8, - 0x8b, 0xad, 0x7a, 0xd7, 0x8c, 0xad, 0x7a, 0xd8, 0x8b, 0xad, 0x7b, 0xd7, - 0x8c, 0xad, 0x7c, 0xd8, 0x8b, 0xad, 0x7c, 0xd7, 0x8c, 0xad, 0x7d, 0xd8, - 0x8b, 0xad, 0x7d, 0xd7, 0x8c, 0xad, 0x7e, 0xd8, 0x8b, 0xad, 0x7e, 0xd7, - 0x8c, 0xad, 0x7f, 0xd8, 0x8b, 0xad, 0x7f, 0xd7, 0x8c, 0xad, 0x80, 0xd8, - 0x8b, 0xad, 0x81, 0xd7, 0x8c, 0xad, 0x81, 0xd8, 0x8b, 0xad, 0x82, 0xd7, - 0x8c, 0xad, 0x82, 0xd8, 0x8b, 0xad, 0x83, 0xd7, 0x8c, 0xad, 0x83, 0xd8, - 0x8b, 0xad, 0x84, 0xd7, 0x8c, 0xad, 0x84, 0xd8, 0x8b, 0xad, 0x85, 0xd7, - 0x8c, 0xad, 0x85, 0xd8, 0x8b, 0xad, 0x86, 0xd7, 0x8c, 0xad, 0x86, 0xd8, - 0x8b, 0xad, 0x87, 0xd7, 0x8c, 0xad, 0x87, 0xd8, 0x8b, 0xad, 0x88, 0xd7, - 0x8c, 0xad, 0x88, 0xd7, 0x8c, 0xad, 0x89, 0xd7, 0x8c, 0xad, 0x89, 0xd7, - 0x8c, 0xad, 0x8a, 0xd7, 0x8c, 0xad, 0x8a, 0xd7, 0x8c, 0xad, 0x8b, 0xd7, - 0x8c, 0xad, 0x8b, 0xd7, 0x8c, 0xad, 0x8b, 0xd7, 0x8c, 0xad, 0x8b, 0xd7, - 0x8c, 0xad, 0x8b, 0xd7, 0x8d, 0xad, 0x8b, 0xd7, 0x8d, 0xad, 0x8c, 0xd7, - 0x8e, 0xab, 0x8b, 0xd7, 0x8e, 0xad, 0x8c, 0xd7, 0x8e, 0xab, 0x8b, 0xd7, - 0x8f, 0xad, 0x8c, 0xd7, 0x8f, 0xab, 0x8b, 0xd7, 0x90, 0xad, 0x8c, 0xd7, - 0x90, 0xab, 0x8b, 0xd7, 0x91, 0xad, 0x8c, 0xd7, 0x91, 0xab, 0x8b, 0xd7, - 0x92, 0xad, 0x8c, 0xd7, 0x92, 0xab, 0x8b, 0xd7, 0x93, 0xad, 0x8c, 0xd7, - 0x93, 0xab, 0x8b, 0xd7, 0x94, 0xad, 0x8c, 0xd7, 0x94, 0xab, 0x8b, 0xd7, - 0x94, 0xad, 0x8c, 0xd7, 0x95, 0xab, 0x8b, 0xd7, 0x95, 0xad, 0x8c, 0xd7, - 0x96, 0xab, 0x8b, 0xd7, 0x96, 0xad, 0x8c, 0xd7, 0x97, 0xab, 0x8c, 0xd7, - 0x97, 0xa8, 0x8c, 0xd7, 0x98, 0xab, 0x8c, 0xd7, 0x98, 0xa8, 0x8c, 0xd7, - 0x98, 0xab, 0x8c, 0xd7, 0x99, 0xa8, 0x8c, 0xd7, 0x99, 0xab, 0x8c, 0xd7, - 0x9a, 0xa8, 0x8c, 0xd7, 0x9a, 0xab, 0x8c, 0xd7, 0x9a, 0xa8, 0x8c, 0xd7, - 0x9b, 0xab, 0x8c, 0xd7, 0x9b, 0xa8, 0x8c, 0xd7, 0x9c, 0xab, 0x8c, 0xd7, - 0x9c, 0xa8, 0x8c, 0xd7, 0x9d, 0xab, 0x8c, 0xd7, 0x9d, 0xa8, 0x8c, 0xd7, - 0x9d, 0xab, 0x8c, 0xd7, 0x9e, 0xa8, 0x8c, 0xd7, 0x9e, 0xab, 0x8c, 0xd7, - 0x9f, 0xa8, 0xa3, 0xd7, 0x9f, 0x98, 0x9f, 0xd7, 0x9f, 0x97, 0xa3, 0xd7, - 0xa0, 0x98, 0xa0, 0xd7, 0xa0, 0x97, 0xa3, 0xd7, 0xa1, 0x98, 0xa1, 0xd7, - 0xa1, 0x97, 0xa3, 0xd7, 0xa1, 0x98, 0xa2, 0xd7, 0xa2, 0x97, 0xa3, 0xd7, - 0xa2, 0x98, 0xa3, 0xd7, 0xa3, 0x97, 0xa3, 0xd7, 0xa3, 0x98, 0xa3, 0xd7, - 0xa3, 0x97, 0xa3, 0xd7, 0xa4, 0x98, 0xa3, 0xd7, 0xa4, 0x97, 0xa3, 0xd7, - 0xa5, 0x98, 0xa3, 0xd7, 0xa5, 0x97, 0xa3, 0xd7, 0xa5, 0x98, 0xa3, 0xd7, - 0xa6, 0x97, 0xa3, 0xd7, 0xa6, 0x98, 0xa3, 0xd7, 0xa6, 0x97, 0xa3, 0xd7, - 0xa7, 0x98, 0xa3, 0xd7, 0xa7, 0x97, 0xa3, 0xd7, 0xa8, 0x98, 0xa3, 0xd7, - 0xa8, 0x97, 0xa3, 0xd7, 0xa8, 0x98, 0xa3, 0xd7, 0xa9, 0x97, 0xa3, 0xd7, - 0xa9, 0x98, 0xa3, 0xd7, 0xaa, 0x97, 0xa3, 0xd7, 0xaa, 0x98, 0xa3, 0xd7, - 0xaa, 0x97, 0xa3, 0xd7, 0xab, 0x98, 0xa3, 0xd7, 0xab, 0x97, 0xa3, 0xd7, - 0xab, 0x98, 0xa3, 0xd7, 0xac, 0x97, 0xa3, 0xd7, 0xac, 0x98, 0xa3, 0xd7, - 0xac, 0x97, 0xa3, 0xd7, 0xad, 0x98, 0xa3, 0xd7, 0xad, 0x97, 0xa3, 0xd7, - 0xae, 0x98, 0xa3, 0xd7, 0xae, 0x97, 0xa3, 0xd7, 0xae, 0x98, 0xa3, 0xd7, - 0xaf, 0x97, 0xa3, 0xd7, 0xaf, 0x98, 0xa3, 0xd7, 0xaf, 0x97, 0xa3, 0xd7, - 0xb0, 0x98, 0xa3, 0xd7, 0xb0, 0x97, 0xa3, 0xd7, 0xb0, 0x98, 0xa3, 0xd7, - 0xb1, 0x97, 0xa3, 0xd7, 0xb1, 0x98, 0xa3, 0xd7, 0xb2, 0x97, 0xa3, 0xd7, - 0xb2, 0x98, 0xa3, 0xd7, 0xb2, 0x97, 0xa3, 0xd7, 0xb3, 0x98, 0xa3, 0xd7, - 0xb3, 0x97, 0xa3, 0xd7, 0xb3, 0x98, 0xa3, 0xd7, 0xb4, 0x97, 0xa3, 0xd7, - 0xb4, 0x98, 0xa3, 0xd7, 0xb4, 0x97, 0xa3, 0xd7, 0xb5, 0x98, 0xa3, 0xd7, - 0xb5, 0x97, 0xa3, 0xd7, 0xb5, 0x98, 0xa3, 0xd7, 0xb6, 0x97, 0xa3, 0xd7, - 0xb6, 0x98, 0xa3, 0xd7, 0xb6, 0x97, 0xa3, 0xd7, 0xb7, 0x98, 0xa3, 0xd7, - 0xb7, 0x97, 0xa3, 0xd7, 0xb7, 0x98, 0xa3, 0xd7, 0xb8, 0x97, 0xa3, 0xd7, - 0xb8, 0x98, 0xa3, 0xd7, 0xb8, 0x97, 0xa3, 0xd7, 0xb9, 0x98, 0xa3, 0xd7, - 0xb9, 0x97, 0xa3, 0xd7, 0xb9, 0x98, 0xd0, 0xd7, 0xba, 0xb5, 0xd1, 0xd7, - 0xba, 0xb3, 0xd0, 0xd7, 0xba, 0xb5, 0xd1, 0xd7, 0xbb, 0xb3, 0xd0, 0xd7, - 0xbb, 0xb5, 0xd1, 0xd7, 0xbb, 0xb3, 0xd0, 0xd7, 0xbc, 0xb5, 0xd1, 0xd7, - 0xbc, 0xb3, 0xd0, 0xd7, 0xbc, 0xb5, 0xd1, 0xd7, 0xbd, 0xb3, 0xd0, 0xd7, - 0xbd, 0xb5, 0xd1, 0xd7, 0xbd, 0xb3, 0xd0, 0xd7, 0xbe, 0xb5, 0xd1, 0xd7, - 0xbe, 0xb3, 0xd0, 0xd7, 0xbe, 0xb5, 0xd1, 0xd7, 0xbf, 0xb3, 0xd0, 0xd7, - 0xbf, 0xb5, 0xd1, 0xd7, 0xbf, 0xb3, 0xd0, 0xd7, 0xc0, 0xb5, 0xd1, 0xd7, - 0xc0, 0xb3, 0xd1, 0xd7, 0xc0, 0xb0, 0xd1, 0xd7, 0xc1, 0xb3, 0xd1, 0xd7, - 0xc1, 0xb0, 0xd1, 0xd7, 0xc1, 0xb3, 0xd1, 0xd7, 0xc1, 0xb0, 0xd1, 0xd7, - 0xc2, 0xb3, 0xd1, 0xd7, 0xc2, 0xb0, 0xd1, 0xd7, 0xc2, 0xb3, 0xd1, 0xd7, - 0xc3, 0xb0, 0xd1, 0xd7, 0xc3, 0xb3, 0xd1, 0xd7, 0xc3, 0xb0, 0xd1, 0xd7, - 0xc4, 0xb3, 0xd1, 0xd7, 0xc4, 0xb0, 0xd1, 0xd7, 0xc4, 0xb3, 0xd1, 0xd7, - 0xc5, 0xb0, 0xd1, 0xd7, 0xc5, 0xb3, 0xd1, 0xd7, 0xc5, 0xb0, 0xd1, 0xd7, - 0xc6, 0xb3, 0xd1, 0xd7, 0xc6, 0xb0, 0xd1, 0xd7, 0xc6, 0xb3, 0xd1, 0xd7, - 0xc6, 0xb0, 0xd1, 0xd7, 0xc7, 0xad, 0xd1, 0xd7, 0xc7, 0xb0, 0xd1, 0xd7, - 0xc7, 0xad, 0xd1, 0xd7, 0xc8, 0xb0, 0xd1, 0xd7, 0xc8, 0xad, 0xd1, 0xd7, - 0xc8, 0xb0, 0xd1, 0xd7, 0xc9, 0xad, 0xd1, 0xd7, 0xc9, 0xb0, 0xd1, 0xd7, - 0xc9, 0xad, 0xd1, 0xd7, 0xc9, 0xb0, 0xd1, 0xd7, 0xca, 0xad, 0xd1, 0xd7, - 0xca, 0xb0, 0xd1, 0xd7, 0xca, 0xad, 0xd1, 0xd7, 0xcb, 0xb0, 0xd1, 0xd7, - 0xcb, 0xad, 0xd1, 0xd7, 0xcb, 0xb0, 0xd1, 0xd7, 0xcc, 0xad, 0xd1, 0xd7, - 0xcc, 0xb0, 0xd1, 0xd7, 0xcc, 0xad, 0xd1, 0xd7, 0xcc, 0xb0, 0xd1, 0xd7, - 0xcd, 0xad, 0xd1, 0xd7, 0xcd, 0xb0, 0xd1, 0xd7, 0xcd, 0xad, 0xd1, 0xd7, - 0xce, 0xb0, 0xd1, 0xd7, 0xce, 0xad, 0xd1, 0xd7, 0xce, 0xb0, 0xd1, 0xd7, - 0xce, 0xad, 0xd1, 0xd7, 0xcf, 0xb0, 0xd1, 0xd7, 0xcf, 0xad, 0xd2, 0xd7, - 0xcf, 0xad, 0xd1, 0xd7, 0xd0, 0xad, 0xd2, 0xd7, 0xd0, 0xad, 0xd1, 0xd7, - 0xd0, 0xad, 0xd2, 0xd7, 0xd0, 0xad, 0xd1, 0xd7, 0xd1, 0xad, 0xd2, 0xd7, - 0xd1, 0xad, 0xd1, 0xd6, 0xd1, 0xad, 0xd2, 0xd7, 0xd1, 0xad, 0xd2, 0xd6, - 0xd1, 0xad, 0xd2, 0xd7, 0xd1, 0xad, 0xd2, 0xd6, 0xd1, 0xad, 0xd3, 0xd7, - 0xd1, 0xad, 0xd3, 0xd6, 0xd1, 0xad, 0xd3, 0xd7, 0xd1, 0xad, 0xd4, 0xd6, - 0xd1, 0xad, 0xd4, 0xd7, 0xd1, 0xad, 0xd4, 0xd6, 0xd1, 0xad, 0xd4, 0xd7, - 0xd1, 0xad, 0xd5, 0xd6, 0xd1, 0xad, 0xd5, 0xd7, 0xd1, 0xad, 0xd5, 0xd6, - 0xd1, 0xad, 0xd6, 0xd7, 0xd1, 0xad, 0xd6, 0xd6, 0xd1, 0xad, 0xd6, 0xd4, - 0xd2, 0xad, 0xd6, 0xd6, 0xd1, 0xad, 0xd7, 0xd4, 0xd2, 0xad, 0xd7, 0xd6, - 0xd1, 0xad, 0xd7, 0xd4, 0xd2, 0xad, 0xd7, 0xd6, 0xd1, 0xad, 0xd8, 0xd4, - 0xd2, 0xad, 0xd8, 0xd6, 0xd1, 0xad, 0xd8, 0xd4, 0xd2, 0xad, 0xd9, 0xd6, - 0xd1, 0xad, 0xd9, 0xd4, 0xd2, 0xad, 0xd9, 0xd6, 0xd1, 0xad, 0xd9, 0xd4, - 0xd2, 0xad, 0xda, 0xd6, 0xd1, 0xad, 0xda, 0xd4, 0xd2, 0xad, 0xda, 0xd6, - 0xd1, 0xad, 0xda, 0xd4, 0xd2, 0xad, 0xdb, 0xd6, 0xd1, 0xad, 0xdb, 0xd4, - 0xd2, 0xad, 0xdb, 0xd6, 0xd1, 0xad, 0xdb, 0xd4, 0xd2, 0xad, 0xdc, 0xd3, - 0xd2, 0xad, 0xdc, 0xd4, 0xd2, 0xad, 0xdc, 0xd3, 0xd2, 0xad, 0xdd, 0xd4, - 0xd2, 0xad, 0xdd, 0xd3, 0xd2, 0xad, 0xdd, 0xd4, 0xd2, 0xad, 0xdd, 0xd3, - 0xd2, 0xad, 0xde, 0xd4, 0xd2, 0xad, 0xde, 0xd9, 0xe9, 0xad, 0xde, 0xd8, - 0xe9, 0xad, 0xde, 0xd9, 0xe9, 0xad, 0xdf, 0xd8, 0xe9, 0xad, 0xdf, 0xd9, - 0xe9, 0xad, 0xdf, 0xd8, 0xe9, 0xad, 0xdf, 0xd9, 0xe9, 0xad, 0xe0, 0xd8, - 0xe9, 0xad, 0xe0, 0xd9, 0xe9, 0xad, 0xe0, 0xd8, 0xe9, 0xad, 0xe1, 0xd9, - 0xe9, 0xad, 0xe1, 0xd8, 0xe9, 0xad, 0xe1, 0xd9, 0xe9, 0xad, 0xe1, 0xd8, - 0xe9, 0xad, 0xe2, 0xd9, 0xe9, 0xad, 0xe2, 0xd8, 0xe9, 0xad, 0xe2, 0xd9, - 0xe9, 0xad, 0xe2, 0xd8, 0xe9, 0xad, 0xe3, 0xd9, 0xe9, 0xad, 0xe3, 0xd8, - 0xe9, 0xad, 0xe3, 0xd9, 0xe9, 0xad, 0xe3, 0xd8, 0xe9, 0xad, 0xe4, 0xd7, - 0xea, 0xad, 0xe4, 0xd8, 0xe9, 0xad, 0xe4, 0xd7, 0xea, 0xad, 0xe4, 0xd8, - 0xe9, 0xad, 0xe5, 0xd7, 0xea, 0xad, 0xe5, 0xd8, 0xe9, 0xad, 0xe5, 0xd7, - 0xea, 0xad, 0xe5, 0xd8, 0xe9, 0xad, 0xe6, 0xd7, 0xea, 0xad, 0xe6, 0xd8, - 0xe9, 0xad, 0xe6, 0xd7, 0xea, 0xad, 0xe6, 0xd8, 0xe9, 0xad, 0xe7, 0xd7, - 0xea, 0xad, 0xe7, 0xd8, 0xe9, 0xad, 0xe7, 0xd7, 0xea, 0xad, 0xe7, 0xd8, - 0xe9, 0xad, 0xe8, 0xd7, 0xea, 0xad, 0xe8, 0xd8, 0xe9, 0xad, 0xe8, 0xd7, - 0xea, 0xad, 0xe8, 0xd8, 0xe9, 0xad, 0xe9, 0xd7, 0xea, 0xad, 0xe9, 0xd7, - 0xea, 0xad, 0xe9, 0xd7, 0xea, 0xad, 0xe9, 0xd7, 0xea, 0xad, 0xe9, 0xd7, - 0xea, 0xad, 0xe9, 0xd7, 0xea, 0xad, 0xe9, 0xd7, 0xea, 0xad, 0xe9, 0xd7, - 0xea, 0xad, 0xea, 0xd7, 0xeb, 0xab, 0xe9, 0xd7, 0xeb, 0xad, 0xea, 0xd7, - 0xeb, 0xab, 0xed, 0xd7, 0xeb, 0xad, 0xed, 0xd7, 0xec, 0xad, 0xed, 0xd7, - 0xec, 0xad, 0xed, 0xd7, 0xec, 0xad, 0xed, 0xd7, 0xec, 0xad, 0xed, 0xd7, - 0xec, 0xad, 0xed, 0xd7, 0xec, 0xad, 0xed, 0xd7, 0xec, 0xad, 0xed, 0xd7, - 0xec, 0xad, 0xed, 0xd7, 0xec, 0xad, 0xee, 0xd6, 0xed, 0xad, 0xee, 0xd7, - 0xec, 0xad, 0xee, 0xd6, 0xed, 0xad, 0xee, 0xd7, 0xec, 0xad, 0xef, 0xd6, - 0xed, 0xad, 0xef, 0xd7, 0xec, 0xad, 0xef, 0xd6, 0xed, 0xad, 0xef, 0xd7, - 0xec, 0xad, 0xf0, 0xd6, 0xed, 0xad, 0xf0, 0xd7, 0xec, 0xad, 0xf0, 0xd6, - 0xed, 0xad, 0xf0, 0xd7, 0xec, 0xad, 0xf1, 0xd6, 0xed, 0xad, 0xf1, 0xd7, - 0xec, 0xad, 0xf1, 0xd6, 0xed, 0xad, 0xf1, 0xd7, 0xec, 0xad, 0xf2, 0xd6, - 0xed, 0xad, 0xf2, 0xd7, 0xec, 0xad, 0xf2, 0xd6, 0xed, 0xad, 0xf2, 0xd7, - 0xec, 0xad, 0xf2, 0xd6, 0xed, 0xad, 0xf3, 0xd4, 0xed, 0xad, 0xf3, 0xd6, - 0xed, 0xad, 0xf3, 0xd4, 0xed, 0xad, 0xf3, 0xd6, 0xed, 0xad, 0xf4, 0xd4, - 0xed, 0xad, 0xf4, 0xd6, 0xed, 0xad, 0xf4, 0xd4, 0xed, 0xad, 0xf4, 0xd6, - 0xed, 0xad, 0xf5, 0xd4, 0xed, 0xad, 0xf5, 0xd6, 0xed, 0xad, 0xf5, 0xd4, - 0xed, 0xad, 0xf5, 0xd6, 0xed, 0xad, 0xf5, 0xd4, 0xed, 0xad, 0xf6, 0xd6, - 0xed, 0xad, 0xf6, 0xd4, 0xed, 0xad, 0xf6, 0xd6, 0xed, 0xad, 0xf6, 0xd4, - 0xed, 0xad, 0xf7, 0xd6, 0xed, 0xad, 0xf7, 0xd4, 0xed, 0xad, 0xf7, 0xd6, - 0xed, 0xad, 0xf7, 0xd4, 0xed, 0xad, 0xf8, 0xd6, 0xed, 0xad, 0xf8, 0xd4, - 0xed, 0xad, 0xf8, 0xd6, 0xed, 0xad, 0xf8, 0xd4, 0xed, 0xad, 0xf8, 0xd6, - 0xed, 0xad, 0xf9, 0xd4, 0xed, 0xad, 0xf9, 0xd6, 0xed, 0xad, 0xf9, 0xd4, - 0xed, 0xad, 0xf9, 0xd6, 0xed, 0xad, 0xfa, 0xc7, 0xf7, 0xad, 0xfa, 0xc7, - 0xf7, 0xad, 0xfa, 0xc7, 0xf7, 0xad, 0xfa, 0xc7, 0xf7, 0xad, 0xfa, 0xc7, - 0xf7, 0xad, 0xfb, 0xc7, 0xf7, 0xad, 0xfb, 0xc7, 0xf7, 0xad, 0xfb, 0xc7, - 0xf7, 0xad, 0xfb, 0xc7, 0xf7, 0xad, 0xfc, 0xc7, 0xf7, 0xad, 0xfc, 0xc7, - 0xf7, 0xad, 0xfc, 0xc7, 0xf7, 0xad, 0xfc, 0xc7, 0xf7, 0xad, 0xfc, 0xc7, - 0xf7, 0xad, 0xfd, 0xc7, 0xf7, 0xad, 0xfd, 0xc7, 0xf7, 0xad, 0xfd, 0xc7, - 0xf7, 0xad, 0xfd, 0xc7, 0xf7, 0xad, 0xfe, 0xc7, 0xf7, 0xad, 0xfe, 0xc7, - 0xf7, 0xad, 0xfe, 0xc7, 0xf7, 0xad, 0xfe, 0xc7, 0xf7, 0xad, 0xfe, 0xc7, - 0xf7, 0xad, 0xff, 0xc7, 0xf7, 0xad, 0xff, 0xc7, 0xf7, 0xad, 0x03, 0xdc, - 0x8a, 0xad, 0x0a, 0xdd, 0x8a, 0xad, 0x0f, 0xdc, 0x8a, 0xad, 0x14, 0xdd, - 0x8a, 0xad, 0x17, 0xdc, 0x8a, 0xad, 0x1b, 0xdd, 0x8a, 0xad, 0x1e, 0xdc, - 0x8a, 0xad, 0x20, 0xdd, 0x8a, 0xad, 0x23, 0xdc, 0x8a, 0xad, 0x25, 0xdd, - 0x8a, 0xad, 0x27, 0xdc, 0x8a, 0xad, 0x29, 0xda, 0x8b, 0xad, 0x2b, 0xdc, - 0x8a, 0xad, 0x2d, 0xda, 0x8b, 0xad, 0x2f, 0xdc, 0x8a, 0xad, 0x31, 0xda, - 0x8b, 0xad, 0x32, 0xdc, 0x8a, 0xad, 0x34, 0xda, 0x8b, 0xad, 0x35, 0xdc, - 0x8a, 0xad, 0x37, 0xda, 0x8b, 0xad, 0x38, 0xdc, 0x8a, 0xad, 0x3a, 0xda, - 0x8b, 0xad, 0x3b, 0xdc, 0x8a, 0xad, 0x3c, 0xda, 0x8b, 0xad, 0x3e, 0xdc, - 0x8a, 0xad, 0x3f, 0xda, 0x8b, 0xad, 0x40, 0xdc, 0x8a, 0xad, 0x42, 0xda, - 0x8b, 0xad, 0x43, 0xdc, 0x8a, 0xad, 0x44, 0xda, 0x8b, 0xad, 0x45, 0xdc, - 0x8a, 0xad, 0x46, 0xda, 0x8b, 0xad, 0x47, 0xdc, 0x8a, 0xad, 0x48, 0xda, - 0x8b, 0xad, 0x49, 0xdc, 0x8a, 0xad, 0x4a, 0xda, 0x8b, 0xad, 0x4b, 0xdc, - 0x8a, 0xad, 0x4c, 0xda, 0x8b, 0xad, 0x4d, 0xdc, 0x8a, 0xad, 0x4e, 0xda, - 0x8b, 0xad, 0x4f, 0xdc, 0x8a, 0xad, 0x50, 0xda, 0x8b, 0xad, 0x51, 0xdc, - 0x8a, 0xad, 0x52, 0xda, 0x8b, 0xad, 0x53, 0xdc, 0x8a, 0xad, 0x54, 0xda, - 0x8b, 0xad, 0x55, 0xdc, 0x8a, 0xad, 0x56, 0xda, 0x8b, 0xad, 0x57, 0xdc, - 0x8a, 0xad, 0x58, 0xda, 0x8b, 0xad, 0x58, 0xdc, 0x8a, 0xad, 0x59, 0xda, - 0x8b, 0xad, 0x5a, 0xdc, 0x8a, 0xad, 0x5b, 0xda, 0x8b, 0xad, 0x5c, 0xdc, - 0x8a, 0xad, 0x5d, 0xda, 0x8b, 0xad, 0x5d, 0xd8, 0x8b, 0xad, 0x5e, 0xda, - 0x8b, 0xad, 0x5f, 0xd8, 0x8b, 0xad, 0x60, 0xda, 0x8b, 0xad, 0x60, 0xd8, - 0x8b, 0xad, 0x61, 0xda, 0x8b, 0xad, 0x62, 0xd8, 0x8b, 0xad, 0x63, 0xda, - 0x8b, 0xad, 0x63, 0xd8, 0x8b, 0xad, 0x64, 0xda, 0x8b, 0xad, 0x65, 0xd8, - 0x8b, 0xad, 0x66, 0xda, 0x8b, 0xad, 0x66, 0xd8, 0x8b, 0xad, 0x67, 0xda, - 0x8b, 0xad, 0x68, 0xd8, 0x8b, 0xad, 0x68, 0xda, 0x8b, 0xad, 0x69, 0xd8, - 0x8b, 0xad, 0x6a, 0xda, 0x8b, 0xad, 0x6a, 0xd8, 0x8b, 0xad, 0x6b, 0xda, - 0x8b, 0xad, 0x6c, 0xd8, 0x8b, 0xad, 0x6c, 0xda, 0x8b, 0xad, 0x6d, 0xd8, - 0x8b, 0xad, 0x6e, 0xda, 0x8b, 0xad, 0x6e, 0xd8, 0x8b, 0xad, 0x6f, 0xda, - 0x8b, 0xad, 0x70, 0xd8, 0x8b, 0xad, 0x70, 0xda, 0x8b, 0xad, 0x71, 0xd8, - 0x8b, 0xad, 0x72, 0xda, 0x8b, 0xad, 0x72, 0xd8, 0x8b, 0xad, 0x73, 0xda, - 0x8b, 0xad, 0x73, 0xd8, 0x8b, 0xad, 0x74, 0xda, 0x8b, 0xad, 0x75, 0xd8, - 0x8b, 0xad, 0x75, 0xda, 0x8b, 0xad, 0x76, 0xd8, 0x8b, 0xad, 0x76, 0xda, - 0x8b, 0xad, 0x77, 0xd8, 0x8b, 0xad, 0x78, 0xda, 0x8b, 0xad, 0x78, 0xd8, - 0x8b, 0xad, 0x79, 0xda, 0x8b, 0xad, 0x79, 0xd8, 0x8b, 0xad, 0x7a, 0xda, - 0x8b, 0xad, 0x7a, 0xd8, 0x8b, 0xad, 0x7b, 0xda, 0x8b, 0xad, 0x7c, 0xd8, - 0x8b, 0xad, 0x7c, 0xda, 0x8b, 0xad, 0x7d, 0xd8, 0x8b, 0xad, 0x7d, 0xda, - 0x8b, 0xad, 0x7e, 0xd8, 0x8b, 0xad, 0x7e, 0xda, 0x8b, 0xad, 0x7f, 0xd8, - 0x8b, 0xad, 0x7f, 0xd7, 0x8c, 0xad, 0x80, 0xd8, 0x8b, 0xad, 0x81, 0xd7, - 0x8c, 0xad, 0x81, 0xd8, 0x8b, 0xad, 0x82, 0xd7, 0x8c, 0xad, 0x82, 0xd8, - 0x8b, 0xad, 0x83, 0xd7, 0x8c, 0xad, 0x83, 0xd8, 0x8b, 0xad, 0x84, 0xd7, - 0x8c, 0xad, 0x84, 0xd8, 0x8b, 0xad, 0x85, 0xd7, 0x8c, 0xad, 0x85, 0xd8, - 0x8b, 0xad, 0x86, 0xd7, 0x8c, 0xad, 0x86, 0xd8, 0x8b, 0xad, 0x87, 0xd7, - 0x8c, 0xad, 0x87, 0xd8, 0x8b, 0xad, 0x88, 0xd7, 0x8c, 0xad, 0x88, 0xd8, - 0x8b, 0xad, 0x89, 0xd7, 0x8c, 0xad, 0x89, 0xd8, 0x8b, 0xad, 0x8a, 0xd7, - 0x8c, 0xad, 0x8a, 0xd7, 0x8c, 0xad, 0x8b, 0xd7, 0x8c, 0xad, 0x8b, 0xd7, - 0x8c, 0xad, 0x8b, 0xd7, 0x8c, 0xad, 0x8b, 0xd7, 0x8c, 0xad, 0x8b, 0xd7, - 0x8d, 0xad, 0x8b, 0xd7, 0x8d, 0xad, 0x8c, 0xd7, 0x8e, 0xab, 0x8b, 0xd7, - 0x8e, 0xad, 0x8c, 0xd7, 0x8e, 0xab, 0x8b, 0xd7, 0x8f, 0xad, 0x8c, 0xd7, - 0x8f, 0xab, 0x8b, 0xd7, 0x90, 0xad, 0x8c, 0xd7, 0x90, 0xab, 0x8b, 0xd7, - 0x91, 0xad, 0x8c, 0xd7, 0x91, 0xab, 0x8b, 0xd7, 0x92, 0xad, 0x8c, 0xd7, - 0x92, 0xab, 0x8b, 0xd7, 0x93, 0xad, 0x8c, 0xd7, 0x93, 0xab, 0x8b, 0xd7, - 0x94, 0xad, 0x8c, 0xd7, 0x94, 0xab, 0x8b, 0xd7, 0x94, 0xad, 0x8c, 0xd7, - 0x95, 0xab, 0x8b, 0xd7, 0x95, 0xad, 0x8c, 0xd7, 0x96, 0xab, 0x8b, 0xd7, - 0x96, 0xad, 0x8c, 0xd7, 0x97, 0xab, 0x8b, 0xd7, 0x97, 0xad, 0x8c, 0xd7, - 0x98, 0xab, 0x8b, 0xd7, 0x98, 0xad, 0x8c, 0xd7, 0x98, 0xab, 0x8b, 0xd7, - 0x99, 0xad, 0x8c, 0xd7, 0x99, 0xab, 0x8b, 0xd7, 0x9a, 0xad, 0x8c, 0xd7, - 0x9a, 0xab, 0x8b, 0xd7, 0x9a, 0xad, 0x8c, 0xd7, 0x9b, 0xab, 0x8b, 0xd7, - 0x9b, 0xad, 0x8c, 0xd7, 0x9c, 0xab, 0x8c, 0xd7, 0x9c, 0xa7, 0x8c, 0xd7, - 0x9d, 0xab, 0x8c, 0xd7, 0x9d, 0xa7, 0x8c, 0xd7, 0x9d, 0xab, 0x8c, 0xd7, - 0x9e, 0xa7, 0x8c, 0xd7, 0x9e, 0xab, 0x8c, 0xd7, 0x9f, 0xa7, 0x8c, 0xd7, - 0x9f, 0xab, 0xa1, 0xd7, 0x9f, 0x97, 0xa1, 0xd7, 0xa0, 0x97, 0xa1, 0xd7, - 0xa0, 0x97, 0xa1, 0xd7, 0xa1, 0x97, 0xa1, 0xd7, 0xa1, 0x97, 0xa1, 0xd7, - 0xa1, 0x97, 0xa2, 0xd7, 0xa2, 0x97, 0xa2, 0xd7, 0xa2, 0x97, 0xa3, 0xd7, - 0xa3, 0x97, 0xa3, 0xd7, 0xa3, 0x97, 0xa3, 0xd7, 0xa3, 0x97, 0xa3, 0xd7, - 0xa4, 0x97, 0xa3, 0xd7, 0xa4, 0x97, 0xa3, 0xd7, 0xa5, 0x97, 0xa3, 0xd7, - 0xa5, 0x97, 0xa3, 0xd7, 0xa5, 0x97, 0xa3, 0xd7, 0xa6, 0x97, 0xa3, 0xd7, - 0xa6, 0x97, 0xa3, 0xd7, 0xa6, 0x97, 0xa3, 0xd7, 0xa7, 0x97, 0xa3, 0xd7, - 0xa7, 0x97, 0xa3, 0xd7, 0xa8, 0x97, 0xa3, 0xd7, 0xa8, 0x97, 0xa3, 0xd7, - 0xa8, 0x97, 0xa3, 0xd7, 0xa9, 0x97, 0xa3, 0xd7, 0xa9, 0x97, 0xa3, 0xd7, - 0xaa, 0x97, 0xa3, 0xd7, 0xaa, 0x97, 0xa3, 0xd7, 0xaa, 0x97, 0xa3, 0xd7, - 0xab, 0x97, 0xa3, 0xd7, 0xab, 0x97, 0xa3, 0xd7, 0xab, 0x97, 0xa3, 0xd7, - 0xac, 0x97, 0xa3, 0xd7, 0xac, 0x97, 0xa3, 0xd7, 0xac, 0x97, 0xa3, 0xd7, - 0xad, 0x97, 0xa3, 0xd7, 0xad, 0x97, 0xa3, 0xd7, 0xae, 0x97, 0xa3, 0xd7, - 0xae, 0x97, 0xa3, 0xd7, 0xae, 0x97, 0xa3, 0xd7, 0xaf, 0x97, 0xa3, 0xd7, - 0xaf, 0x97, 0xa3, 0xd7, 0xaf, 0x97, 0xa3, 0xd7, 0xb0, 0x97, 0xa3, 0xd7, - 0xb0, 0x97, 0xa3, 0xd7, 0xb0, 0x97, 0xa3, 0xd7, 0xb1, 0x97, 0xa3, 0xd7, - 0xb1, 0x97, 0xa3, 0xd7, 0xb2, 0x97, 0xa3, 0xd7, 0xb2, 0x97, 0xa3, 0xd7, - 0xb2, 0x97, 0xa3, 0xd7, 0xb3, 0x97, 0xa3, 0xd7, 0xb3, 0x97, 0xa3, 0xd7, - 0xb3, 0x97, 0xa3, 0xd7, 0xb4, 0x97, 0xa3, 0xd7, 0xb4, 0x97, 0xa3, 0xd7, - 0xb4, 0x97, 0xa3, 0xd7, 0xb5, 0x97, 0xa3, 0xd7, 0xb5, 0x97, 0xa3, 0xd7, - 0xb5, 0x97, 0xa3, 0xd7, 0xb6, 0x97, 0xa3, 0xd7, 0xb6, 0x97, 0xa3, 0xd7, - 0xb6, 0x97, 0xa3, 0xd7, 0xb7, 0x97, 0xa3, 0xd7, 0xb7, 0x97, 0xa3, 0xd7, - 0xb7, 0x97, 0xa3, 0xd7, 0xb8, 0x97, 0xa3, 0xd7, 0xb8, 0x97, 0xa3, 0xd7, - 0xb8, 0x97, 0xa3, 0xd7, 0xb9, 0x97, 0xa3, 0xd7, 0xb9, 0x97, 0xa3, 0xd7, - 0xb9, 0x97, 0xd0, 0xd7, 0xba, 0xb5, 0xd1, 0xd7, 0xba, 0xb2, 0xd0, 0xd7, - 0xba, 0xb5, 0xd1, 0xd7, 0xbb, 0xb2, 0xd0, 0xd7, 0xbb, 0xb5, 0xd1, 0xd7, - 0xbb, 0xb2, 0xd0, 0xd7, 0xbc, 0xb5, 0xd1, 0xd7, 0xbc, 0xb2, 0xd0, 0xd7, - 0xbc, 0xb5, 0xd1, 0xd7, 0xbd, 0xb2, 0xd0, 0xd7, 0xbd, 0xb5, 0xd1, 0xd7, - 0xbd, 0xb2, 0xd0, 0xd7, 0xbe, 0xb5, 0xd1, 0xd7, 0xbe, 0xb2, 0xd0, 0xd7, - 0xbe, 0xb5, 0xd1, 0xd7, 0xbf, 0xb2, 0xd1, 0xd7, 0xbf, 0xaf, 0xd1, 0xd7, - 0xbf, 0xb2, 0xd1, 0xd7, 0xc0, 0xaf, 0xd1, 0xd7, 0xc0, 0xb2, 0xd1, 0xd7, - 0xc0, 0xaf, 0xd1, 0xd7, 0xc1, 0xb2, 0xd1, 0xd7, 0xc1, 0xaf, 0xd1, 0xd7, - 0xc1, 0xb2, 0xd1, 0xd7, 0xc1, 0xaf, 0xd1, 0xd7, 0xc2, 0xb2, 0xd1, 0xd7, - 0xc2, 0xaf, 0xd1, 0xd7, 0xc2, 0xb2, 0xd1, 0xd7, 0xc3, 0xaf, 0xd1, 0xd7, - 0xc3, 0xb2, 0xd1, 0xd7, 0xc3, 0xaf, 0xd1, 0xd7, 0xc4, 0xb2, 0xd1, 0xd7, - 0xc4, 0xaf, 0xd1, 0xd7, 0xc4, 0xb2, 0xd1, 0xd7, 0xc5, 0xaf, 0xd1, 0xd7, - 0xc5, 0xb2, 0xd1, 0xd7, 0xc5, 0xaf, 0xd1, 0xd7, 0xc6, 0xb2, 0xd1, 0xd7, - 0xc6, 0xaf, 0xd1, 0xd7, 0xc6, 0xb2, 0xd1, 0xd7, 0xc6, 0xaf, 0xd1, 0xd7, - 0xc7, 0xb2, 0xd1, 0xd7, 0xc7, 0xaf, 0xd1, 0xd7, 0xc7, 0xb2, 0xd1, 0xd7, - 0xc8, 0xaf, 0xd1, 0xd7, 0xc8, 0xb2, 0xd1, 0xd7, 0xc8, 0xaf, 0xd1, 0xd7, - 0xc9, 0xb2, 0xd1, 0xd7, 0xc9, 0xaf, 0xd1, 0xd7, 0xc9, 0xb2, 0xd1, 0xd7, - 0xc9, 0xaf, 0xd1, 0xd7, 0xca, 0xb2, 0xd1, 0xd7, 0xca, 0xaf, 0xd1, 0xd7, - 0xca, 0xad, 0xd1, 0xd7, 0xcb, 0xaf, 0xd1, 0xd7, 0xcb, 0xad, 0xd1, 0xd7, - 0xcb, 0xaf, 0xd1, 0xd7, 0xcc, 0xad, 0xd1, 0xd7, 0xcc, 0xaf, 0xd1, 0xd7, - 0xcc, 0xad, 0xd1, 0xd7, 0xcc, 0xaf, 0xd1, 0xd7, 0xcd, 0xad, 0xd1, 0xd7, - 0xcd, 0xaf, 0xd1, 0xd7, 0xcd, 0xad, 0xd1, 0xd7, 0xce, 0xaf, 0xd1, 0xd7, - 0xce, 0xad, 0xd1, 0xd7, 0xce, 0xaf, 0xd1, 0xd7, 0xce, 0xad, 0xd1, 0xd7, - 0xcf, 0xaf, 0xd1, 0xd7, 0xcf, 0xad, 0xd1, 0xd7, 0xcf, 0xaf, 0xd1, 0xd7, - 0xd0, 0xad, 0xd1, 0xd7, 0xd0, 0xaf, 0xd1, 0xd7, 0xd0, 0xad, 0xd2, 0xd7, - 0xd0, 0xad, 0xd1, 0xd7, 0xd1, 0xad, 0xd2, 0xd7, 0xd1, 0xad, 0xd1, 0xd6, - 0xd1, 0xad, 0xd2, 0xd7, 0xd1, 0xad, 0xd2, 0xd6, 0xd1, 0xad, 0xd2, 0xd7, - 0xd1, 0xad, 0xd2, 0xd6, 0xd1, 0xad, 0xd3, 0xd7, 0xd1, 0xad, 0xd3, 0xd6, - 0xd1, 0xad, 0xd3, 0xd7, 0xd1, 0xad, 0xd4, 0xd6, 0xd1, 0xad, 0xd4, 0xd7, - 0xd1, 0xad, 0xd4, 0xd6, 0xd1, 0xad, 0xd4, 0xd7, 0xd1, 0xad, 0xd5, 0xd6, - 0xd1, 0xad, 0xd5, 0xd7, 0xd1, 0xad, 0xd5, 0xd6, 0xd1, 0xad, 0xd6, 0xd7, - 0xd1, 0xad, 0xd6, 0xd6, 0xd1, 0xad, 0xd6, 0xd5, 0xd2, 0xad, 0xd6, 0xd6, - 0xd1, 0xad, 0xd7, 0xd5, 0xd2, 0xad, 0xd7, 0xd6, 0xd1, 0xad, 0xd7, 0xd5, - 0xd2, 0xad, 0xd7, 0xd6, 0xd1, 0xad, 0xd8, 0xd5, 0xd2, 0xad, 0xd8, 0xd6, - 0xd1, 0xad, 0xd8, 0xd5, 0xd2, 0xad, 0xd9, 0xd6, 0xd1, 0xad, 0xd9, 0xd5, - 0xd2, 0xad, 0xd9, 0xd6, 0xd1, 0xad, 0xd9, 0xd5, 0xd2, 0xad, 0xda, 0xd6, - 0xd1, 0xad, 0xda, 0xd5, 0xd2, 0xad, 0xda, 0xd6, 0xd1, 0xad, 0xda, 0xd5, - 0xd2, 0xad, 0xdb, 0xd6, 0xd1, 0xad, 0xdb, 0xd5, 0xd2, 0xad, 0xdb, 0xd6, - 0xd1, 0xad, 0xdb, 0xd5, 0xd2, 0xad, 0xdc, 0xd6, 0xd1, 0xad, 0xdc, 0xd5, - 0xd2, 0xad, 0xdc, 0xd6, 0xd1, 0xad, 0xdd, 0xd5, 0xd2, 0xad, 0xdd, 0xd6, - 0xd1, 0xad, 0xdd, 0xd5, 0xd2, 0xad, 0xdd, 0xd6, 0xd1, 0xad, 0xde, 0xd5, - 0xd2, 0xad, 0xde, 0xd9, 0xe9, 0xad, 0xde, 0xd8, 0xe9, 0xad, 0xde, 0xd9, - 0xe9, 0xad, 0xdf, 0xd8, 0xe9, 0xad, 0xdf, 0xd9, 0xe9, 0xad, 0xdf, 0xd8, - 0xe9, 0xad, 0xdf, 0xd9, 0xe9, 0xad, 0xe0, 0xd8, 0xe9, 0xad, 0xe0, 0xd9, - 0xe9, 0xad, 0xe0, 0xd8, 0xe9, 0xad, 0xe1, 0xd9, 0xe9, 0xad, 0xe1, 0xd8, - 0xe9, 0xad, 0xe1, 0xd9, 0xe9, 0xad, 0xe1, 0xd8, 0xe9, 0xad, 0xe2, 0xd9, - 0xe9, 0xad, 0xe2, 0xd8, 0xe9, 0xad, 0xe2, 0xd9, 0xe9, 0xad, 0xe2, 0xd8, - 0xe9, 0xad, 0xe3, 0xd9, 0xe9, 0xad, 0xe3, 0xd8, 0xe9, 0xad, 0xe3, 0xd9, - 0xe9, 0xad, 0xe3, 0xd8, 0xe9, 0xad, 0xe4, 0xd9, 0xe9, 0xad, 0xe4, 0xd8, - 0xe9, 0xad, 0xe4, 0xd9, 0xe9, 0xad, 0xe4, 0xd8, 0xe9, 0xad, 0xe5, 0xd9, - 0xe9, 0xad, 0xe5, 0xd8, 0xe9, 0xad, 0xe5, 0xd9, 0xe9, 0xad, 0xe5, 0xd8, - 0xe9, 0xad, 0xe6, 0xd7, 0xea, 0xad, 0xe6, 0xd8, 0xe9, 0xad, 0xe6, 0xd7, - 0xea, 0xad, 0xe6, 0xd8, 0xe9, 0xad, 0xe7, 0xd7, 0xea, 0xad, 0xe7, 0xd8, - 0xe9, 0xad, 0xe7, 0xd7, 0xea, 0xad, 0xe7, 0xd8, 0xe9, 0xad, 0xe8, 0xd7, - 0xea, 0xad, 0xe8, 0xd8, 0xe9, 0xad, 0xe8, 0xd7, 0xea, 0xad, 0xe8, 0xd8, - 0xe9, 0xad, 0xe9, 0xd7, 0xea, 0xad, 0xe9, 0xd7, 0xea, 0xad, 0xe9, 0xd7, - 0xea, 0xad, 0xe9, 0xd7, 0xea, 0xad, 0xe9, 0xd7, 0xea, 0xad, 0xe9, 0xd7, - 0xea, 0xad, 0xe9, 0xd7, 0xea, 0xad, 0xe9, 0xd7, 0xea, 0xad, 0xea, 0xd7, - 0xeb, 0xab, 0xe9, 0xd7, 0xeb, 0xad, 0xea, 0xd7, 0xeb, 0xab, 0xed, 0xd7, - 0xeb, 0xad, 0xec, 0xd7, 0xec, 0xaf, 0xed, 0xd7, 0xec, 0xad, 0xed, 0xd7, - 0xec, 0xad, 0xed, 0xd7, 0xec, 0xad, 0xed, 0xd7, 0xec, 0xad, 0xed, 0xd7, - 0xec, 0xad, 0xed, 0xd7, 0xec, 0xad, 0xed, 0xd7, 0xec, 0xad, 0xed, 0xd7, - 0xec, 0xad, 0xee, 0xd6, 0xed, 0xad, 0xee, 0xd7, 0xec, 0xad, 0xee, 0xd6, - 0xed, 0xad, 0xee, 0xd7, 0xec, 0xad, 0xef, 0xd6, 0xed, 0xad, 0xef, 0xd7, - 0xec, 0xad, 0xef, 0xd6, 0xed, 0xad, 0xef, 0xd7, 0xec, 0xad, 0xf0, 0xd6, - 0xed, 0xad, 0xf0, 0xd7, 0xec, 0xad, 0xf0, 0xd6, 0xed, 0xad, 0xf0, 0xd7, - 0xec, 0xad, 0xf1, 0xd6, 0xed, 0xad, 0xf1, 0xd7, 0xec, 0xad, 0xf1, 0xd6, - 0xed, 0xad, 0xf1, 0xd7, 0xec, 0xad, 0xf2, 0xd6, 0xed, 0xad, 0xf2, 0xd7, - 0xec, 0xad, 0xf2, 0xd6, 0xed, 0xad, 0xf2, 0xd7, 0xec, 0xad, 0xf2, 0xd6, - 0xed, 0xad, 0xf3, 0xd7, 0xec, 0xad, 0xf3, 0xd6, 0xed, 0xad, 0xf3, 0xd7, - 0xec, 0xad, 0xf3, 0xd6, 0xed, 0xad, 0xf4, 0xd7, 0xec, 0xad, 0xf4, 0xd6, - 0xed, 0xad, 0xf4, 0xd7, 0xec, 0xad, 0xf4, 0xd6, 0xed, 0xad, 0xf5, 0xd7, - 0xec, 0xad, 0xf5, 0xd6, 0xed, 0xad, 0xf5, 0xd7, 0xec, 0xad, 0xf5, 0xd6, - 0xed, 0xad, 0xf5, 0xd4, 0xed, 0xad, 0xf6, 0xd6, 0xed, 0xad, 0xf6, 0xd4, - 0xed, 0xad, 0xf6, 0xd6, 0xed, 0xad, 0xf6, 0xd4, 0xed, 0xad, 0xf7, 0xd6, - 0xed, 0xad, 0xf7, 0xd4, 0xed, 0xad, 0xf7, 0xd6, 0xed, 0xad, 0xf7, 0xd4, - 0xed, 0xad, 0xf8, 0xd6, 0xed, 0xad, 0xf8, 0xd4, 0xed, 0xad, 0xf8, 0xd6, - 0xed, 0xad, 0xf8, 0xd4, 0xed, 0xad, 0xf8, 0xd6, 0xed, 0xad, 0xf9, 0xd4, - 0xed, 0xad, 0xf9, 0xd6, 0xed, 0xad, 0xf9, 0xd4, 0xed, 0xad, 0xf9, 0xd6, - 0xed, 0xad, 0xfa, 0xd4, 0xed, 0xad, 0xfa, 0xd6, 0xed, 0xad, 0xfa, 0xd4, - 0xed, 0xad, 0xfa, 0xc7, 0xf7, 0xad, 0xfa, 0xc7, 0xf7, 0xad, 0xfb, 0xc7, - 0xf7, 0xad, 0xfb, 0xc7, 0xf7, 0xad, 0xfb, 0xc7, 0xf7, 0xad, 0xfb, 0xc7, - 0xf7, 0xad, 0xfc, 0xc7, 0xf7, 0xad, 0xfc, 0xc7, 0xf7, 0xad, 0xfc, 0xc7, - 0xf7, 0xad, 0xfc, 0xc7, 0xf7, 0xad, 0xfc, 0xc7, 0xf7, 0xad, 0xfd, 0xc7, - 0xf7, 0xad, 0xfd, 0xc7, 0xf7, 0xad, 0xfd, 0xc7, 0xf7, 0xad, 0xfd, 0xc7, - 0xf7, 0xad, 0xfe, 0xc7, 0xf7, 0xad, 0xfe, 0xc7, 0xf7, 0xad, 0xfe, 0xc7, - 0xf7, 0xad, 0xfe, 0xc7, 0xf7, 0xad, 0xfe, 0xc7, 0xf7, 0xad, 0xff, 0xc7, - 0xf7, 0xad, 0xff, 0xc7, 0xf7, 0xad, 0x03, 0xdb, 0x8a, 0xae, 0x0a, 0xdd, - 0x8a, 0xae, 0x0f, 0xdb, 0x8a, 0xae, 0x14, 0xdd, 0x8a, 0xae, 0x17, 0xdb, - 0x8a, 0xae, 0x1b, 0xdd, 0x8a, 0xae, 0x1e, 0xdb, 0x8a, 0xae, 0x20, 0xdd, - 0x8a, 0xae, 0x23, 0xdb, 0x8a, 0xae, 0x25, 0xdd, 0x8a, 0xae, 0x27, 0xdb, - 0x8a, 0xae, 0x29, 0xdd, 0x8a, 0xae, 0x2b, 0xdb, 0x8a, 0xae, 0x2d, 0xdd, - 0x8a, 0xae, 0x2f, 0xdb, 0x8a, 0xae, 0x31, 0xdd, 0x8a, 0xae, 0x32, 0xdb, - 0x8a, 0xae, 0x34, 0xdd, 0x8a, 0xae, 0x35, 0xdb, 0x8a, 0xae, 0x37, 0xdd, - 0x8a, 0xae, 0x38, 0xdb, 0x8a, 0xae, 0x3a, 0xdd, 0x8a, 0xae, 0x3b, 0xdb, - 0x8a, 0xae, 0x3c, 0xdd, 0x8a, 0xae, 0x3e, 0xdb, 0x8a, 0xae, 0x3f, 0xdd, - 0x8a, 0xae, 0x40, 0xdb, 0x8a, 0xae, 0x42, 0xdd, 0x8a, 0xae, 0x43, 0xdb, - 0x8a, 0xae, 0x44, 0xdd, 0x8a, 0xae, 0x45, 0xdb, 0x8a, 0xae, 0x46, 0xdd, - 0x8a, 0xae, 0x47, 0xdb, 0x8a, 0xae, 0x48, 0xdd, 0x8a, 0xae, 0x49, 0xdb, - 0x8a, 0xae, 0x4a, 0xda, 0x8b, 0xae, 0x4b, 0xdb, 0x8a, 0xae, 0x4c, 0xda, - 0x8b, 0xae, 0x4d, 0xdb, 0x8a, 0xae, 0x4e, 0xda, 0x8b, 0xae, 0x4f, 0xdb, - 0x8a, 0xae, 0x50, 0xda, 0x8b, 0xae, 0x51, 0xdb, 0x8a, 0xae, 0x52, 0xda, - 0x8b, 0xae, 0x53, 0xdb, 0x8a, 0xae, 0x54, 0xda, 0x8b, 0xae, 0x55, 0xdb, - 0x8a, 0xae, 0x56, 0xda, 0x8b, 0xae, 0x57, 0xdb, 0x8a, 0xae, 0x58, 0xda, - 0x8b, 0xae, 0x58, 0xdb, 0x8a, 0xae, 0x59, 0xda, 0x8b, 0xae, 0x5a, 0xdb, - 0x8a, 0xae, 0x5b, 0xda, 0x8b, 0xae, 0x5c, 0xdb, 0x8a, 0xae, 0x5d, 0xda, - 0x8b, 0xae, 0x5d, 0xdb, 0x8a, 0xae, 0x5e, 0xda, 0x8b, 0xae, 0x5f, 0xdb, - 0x8a, 0xae, 0x60, 0xda, 0x8b, 0xae, 0x60, 0xdb, 0x8a, 0xae, 0x61, 0xda, - 0x8b, 0xae, 0x62, 0xdb, 0x8a, 0xae, 0x63, 0xda, 0x8b, 0xae, 0x63, 0xdb, - 0x8a, 0xae, 0x64, 0xda, 0x8b, 0xae, 0x65, 0xdb, 0x8a, 0xae, 0x66, 0xda, - 0x8b, 0xae, 0x66, 0xdb, 0x8a, 0xae, 0x67, 0xda, 0x8b, 0xae, 0x68, 0xdb, - 0x8a, 0xae, 0x68, 0xda, 0x8b, 0xae, 0x69, 0xd8, 0x8b, 0xae, 0x6a, 0xda, - 0x8b, 0xae, 0x6a, 0xd8, 0x8b, 0xae, 0x6b, 0xda, 0x8b, 0xae, 0x6c, 0xd8, - 0x8b, 0xae, 0x6c, 0xda, 0x8b, 0xae, 0x6d, 0xd8, 0x8b, 0xae, 0x6e, 0xda, - 0x8b, 0xae, 0x6e, 0xd8, 0x8b, 0xae, 0x6f, 0xda, 0x8b, 0xae, 0x70, 0xd8, - 0x8b, 0xae, 0x70, 0xda, 0x8b, 0xae, 0x71, 0xd8, 0x8b, 0xae, 0x72, 0xda, - 0x8b, 0xae, 0x72, 0xd8, 0x8b, 0xae, 0x73, 0xda, 0x8b, 0xae, 0x73, 0xd8, - 0x8b, 0xae, 0x74, 0xda, 0x8b, 0xae, 0x75, 0xd8, 0x8b, 0xae, 0x75, 0xda, - 0x8b, 0xae, 0x76, 0xd8, 0x8b, 0xae, 0x76, 0xda, 0x8b, 0xae, 0x77, 0xd8, - 0x8b, 0xae, 0x78, 0xda, 0x8b, 0xae, 0x78, 0xd8, 0x8b, 0xae, 0x79, 0xda, - 0x8b, 0xae, 0x79, 0xd8, 0x8b, 0xae, 0x7a, 0xda, 0x8b, 0xae, 0x7a, 0xd8, - 0x8b, 0xae, 0x7b, 0xda, 0x8b, 0xae, 0x7c, 0xd8, 0x8b, 0xae, 0x7c, 0xda, - 0x8b, 0xae, 0x7d, 0xd8, 0x8b, 0xae, 0x7d, 0xda, 0x8b, 0xae, 0x7e, 0xd8, - 0x8b, 0xae, 0x7e, 0xda, 0x8b, 0xae, 0x7f, 0xd8, 0x8b, 0xae, 0x7f, 0xd7, - 0x8c, 0xae, 0x80, 0xd8, 0x8b, 0xae, 0x81, 0xd7, 0x8c, 0xae, 0x81, 0xd8, - 0x8b, 0xae, 0x82, 0xd7, 0x8c, 0xae, 0x82, 0xd8, 0x8b, 0xae, 0x83, 0xd7, - 0x8c, 0xae, 0x83, 0xd8, 0x8b, 0xae, 0x84, 0xd7, 0x8c, 0xae, 0x84, 0xd8, - 0x8b, 0xae, 0x85, 0xd7, 0x8c, 0xae, 0x85, 0xd8, 0x8b, 0xae, 0x86, 0xd7, - 0x8c, 0xae, 0x86, 0xd8, 0x8b, 0xae, 0x87, 0xd7, 0x8c, 0xae, 0x87, 0xd8, - 0x8b, 0xae, 0x88, 0xd7, 0x8c, 0xae, 0x88, 0xd8, 0x8b, 0xae, 0x89, 0xd7, - 0x8c, 0xae, 0x89, 0xd8, 0x8b, 0xae, 0x8a, 0xd7, 0x8c, 0xae, 0x8a, 0xd7, - 0x8c, 0xae, 0x8b, 0xd7, 0x8c, 0xae, 0x8b, 0xd7, 0x8c, 0xae, 0x8b, 0xd7, - 0x8c, 0xae, 0x8b, 0xd7, 0x8c, 0xae, 0x8b, 0xd7, 0x8d, 0xae, 0x8b, 0xd7, - 0x8d, 0xae, 0x8b, 0xd7, 0x8e, 0xae, 0x8b, 0xd7, 0x8e, 0xae, 0x8b, 0xd7, - 0x8e, 0xae, 0x8b, 0xd7, 0x8f, 0xae, 0x8c, 0xd7, 0x8f, 0xab, 0x8b, 0xd7, - 0x90, 0xae, 0x8c, 0xd7, 0x90, 0xab, 0x8b, 0xd7, 0x91, 0xae, 0x8c, 0xd7, - 0x91, 0xab, 0x8b, 0xd7, 0x92, 0xae, 0x8c, 0xd7, 0x92, 0xab, 0x8b, 0xd7, - 0x93, 0xae, 0x8c, 0xd7, 0x93, 0xab, 0x8b, 0xd7, 0x94, 0xae, 0x8c, 0xd7, - 0x94, 0xab, 0x8b, 0xd7, 0x94, 0xae, 0x8c, 0xd7, 0x95, 0xab, 0x8b, 0xd7, - 0x95, 0xae, 0x8c, 0xd7, 0x96, 0xab, 0x8b, 0xd7, 0x96, 0xae, 0x8c, 0xd7, - 0x97, 0xab, 0x8b, 0xd7, 0x97, 0xae, 0x8c, 0xd7, 0x98, 0xab, 0x8b, 0xd7, - 0x98, 0xae, 0x8c, 0xd7, 0x98, 0xab, 0x8b, 0xd7, 0x99, 0xae, 0x8c, 0xd7, - 0x99, 0xab, 0x8b, 0xd7, 0x9a, 0xae, 0x8c, 0xd7, 0x9a, 0xab, 0x8b, 0xd7, - 0x9a, 0xae, 0x8c, 0xd7, 0x9b, 0xab, 0x8b, 0xd7, 0x9b, 0xae, 0x8c, 0xd7, - 0x9c, 0xab, 0x8c, 0xd7, 0x9c, 0xa8, 0x8c, 0xd7, 0x9d, 0xab, 0x8c, 0xd7, - 0x9d, 0xa8, 0x8c, 0xd7, 0x9d, 0xab, 0x8c, 0xd7, 0x9e, 0xa8, 0x8c, 0xd7, - 0x9e, 0xab, 0x8c, 0xd7, 0x9f, 0xa8, 0x8c, 0xd7, 0x9f, 0xab, 0x8c, 0xd7, - 0x9f, 0xa8, 0xa3, 0xd7, 0xa0, 0x98, 0xa0, 0xd7, 0xa0, 0x97, 0xa3, 0xd7, - 0xa1, 0x98, 0xa1, 0xd7, 0xa1, 0x97, 0xa3, 0xd7, 0xa1, 0x98, 0xa2, 0xd7, - 0xa2, 0x97, 0xa3, 0xd7, 0xa2, 0x98, 0xa3, 0xd7, 0xa3, 0x97, 0xa3, 0xd7, - 0xa3, 0x98, 0xa3, 0xd7, 0xa3, 0x97, 0xa3, 0xd7, 0xa4, 0x98, 0xa3, 0xd7, - 0xa4, 0x97, 0xa3, 0xd7, 0xa5, 0x98, 0xa3, 0xd7, 0xa5, 0x97, 0xa3, 0xd7, - 0xa5, 0x98, 0xa3, 0xd7, 0xa6, 0x97, 0xa3, 0xd7, 0xa6, 0x98, 0xa3, 0xd7, - 0xa6, 0x97, 0xa3, 0xd7, 0xa7, 0x98, 0xa3, 0xd7, 0xa7, 0x97, 0xa3, 0xd7, - 0xa8, 0x98, 0xa3, 0xd7, 0xa8, 0x97, 0xa3, 0xd7, 0xa8, 0x98, 0xa3, 0xd7, - 0xa9, 0x97, 0xa3, 0xd7, 0xa9, 0x98, 0xa3, 0xd7, 0xaa, 0x97, 0xa3, 0xd7, - 0xaa, 0x98, 0xa3, 0xd7, 0xaa, 0x97, 0xa3, 0xd7, 0xab, 0x98, 0xa3, 0xd7, - 0xab, 0x97, 0xa3, 0xd7, 0xab, 0x98, 0xa3, 0xd7, 0xac, 0x97, 0xa3, 0xd7, - 0xac, 0x98, 0xa3, 0xd7, 0xac, 0x97, 0xa3, 0xd7, 0xad, 0x98, 0xa3, 0xd7, - 0xad, 0x97, 0xa3, 0xd7, 0xae, 0x98, 0xa3, 0xd7, 0xae, 0x97, 0xa3, 0xd7, - 0xae, 0x98, 0xa3, 0xd7, 0xaf, 0x97, 0xa3, 0xd7, 0xaf, 0x98, 0xa3, 0xd7, - 0xaf, 0x97, 0xa3, 0xd7, 0xb0, 0x98, 0xa3, 0xd7, 0xb0, 0x97, 0xa3, 0xd7, - 0xb0, 0x98, 0xa3, 0xd7, 0xb1, 0x97, 0xa3, 0xd7, 0xb1, 0x98, 0xa3, 0xd7, - 0xb2, 0x97, 0xa3, 0xd7, 0xb2, 0x98, 0xa3, 0xd7, 0xb2, 0x97, 0xa3, 0xd7, - 0xb3, 0x98, 0xa3, 0xd7, 0xb3, 0x97, 0xa3, 0xd7, 0xb3, 0x98, 0xa3, 0xd7, - 0xb4, 0x97, 0xa3, 0xd7, 0xb4, 0x98, 0xa3, 0xd7, 0xb4, 0x97, 0xa3, 0xd7, - 0xb5, 0x98, 0xa3, 0xd7, 0xb5, 0x97, 0xa3, 0xd7, 0xb5, 0x98, 0xa3, 0xd7, - 0xb6, 0x97, 0xa3, 0xd7, 0xb6, 0x98, 0xa3, 0xd7, 0xb6, 0x97, 0xa3, 0xd7, - 0xb7, 0x98, 0xa3, 0xd7, 0xb7, 0x97, 0xa3, 0xd7, 0xb7, 0x98, 0xa3, 0xd7, - 0xb8, 0x97, 0xa3, 0xd7, 0xb8, 0x98, 0xa3, 0xd7, 0xb8, 0x97, 0xa3, 0xd7, - 0xb9, 0x98, 0xa3, 0xd7, 0xb9, 0x97, 0xa3, 0xd7, 0xb9, 0x98, 0xd0, 0xd7, - 0xba, 0xb5, 0xd1, 0xd7, 0xba, 0xb3, 0xd0, 0xd7, 0xba, 0xb5, 0xd1, 0xd7, - 0xbb, 0xb3, 0xd0, 0xd7, 0xbb, 0xb5, 0xd1, 0xd7, 0xbb, 0xb3, 0xd0, 0xd7, - 0xbc, 0xb5, 0xd1, 0xd7, 0xbc, 0xb3, 0xd0, 0xd7, 0xbc, 0xb5, 0xd1, 0xd7, - 0xbd, 0xb3, 0xd0, 0xd7, 0xbd, 0xb5, 0xd1, 0xd7, 0xbd, 0xb3, 0xd0, 0xd7, - 0xbe, 0xb5, 0xd1, 0xd7, 0xbe, 0xb3, 0xd0, 0xd7, 0xbe, 0xb5, 0xd1, 0xd7, - 0xbf, 0xb3, 0xd0, 0xd7, 0xbf, 0xb5, 0xd1, 0xd7, 0xbf, 0xb3, 0xd0, 0xd7, - 0xc0, 0xb5, 0xd1, 0xd7, 0xc0, 0xb3, 0xd0, 0xd7, 0xc0, 0xb5, 0xd1, 0xd7, - 0xc1, 0xb3, 0xd0, 0xd7, 0xc1, 0xb5, 0xd1, 0xd7, 0xc1, 0xb3, 0xd0, 0xd7, - 0xc1, 0xb5, 0xd1, 0xd7, 0xc2, 0xb3, 0xd0, 0xd7, 0xc2, 0xb5, 0xd1, 0xd7, - 0xc2, 0xb3, 0xd0, 0xd7, 0xc3, 0xb5, 0xd1, 0xd7, 0xc3, 0xb3, 0xd0, 0xd7, - 0xc3, 0xb5, 0xd1, 0xd7, 0xc4, 0xb3, 0xd1, 0xd7, 0xc4, 0xb0, 0xd1, 0xd7, - 0xc4, 0xb3, 0xd1, 0xd7, 0xc5, 0xb0, 0xd1, 0xd7, 0xc5, 0xb3, 0xd1, 0xd7, - 0xc5, 0xb0, 0xd1, 0xd7, 0xc6, 0xb3, 0xd1, 0xd7, 0xc6, 0xb0, 0xd1, 0xd7, - 0xc6, 0xb3, 0xd1, 0xd7, 0xc6, 0xb0, 0xd1, 0xd7, 0xc7, 0xb3, 0xd1, 0xd7, - 0xc7, 0xb0, 0xd1, 0xd7, 0xc7, 0xb3, 0xd1, 0xd7, 0xc8, 0xb0, 0xd1, 0xd7, - 0xc8, 0xb3, 0xd1, 0xd7, 0xc8, 0xb0, 0xd1, 0xd7, 0xc9, 0xb3, 0xd1, 0xd7, - 0xc9, 0xb0, 0xd1, 0xd7, 0xc9, 0xb3, 0xd1, 0xd7, 0xc9, 0xb0, 0xd1, 0xd7, - 0xca, 0xb3, 0xd1, 0xd7, 0xca, 0xb0, 0xd1, 0xd7, 0xca, 0xae, 0xd1, 0xd7, - 0xcb, 0xb0, 0xd1, 0xd7, 0xcb, 0xae, 0xd1, 0xd7, 0xcb, 0xb0, 0xd1, 0xd7, - 0xcc, 0xae, 0xd1, 0xd7, 0xcc, 0xb0, 0xd1, 0xd7, 0xcc, 0xae, 0xd1, 0xd7, - 0xcc, 0xb0, 0xd1, 0xd7, 0xcd, 0xae, 0xd1, 0xd7, 0xcd, 0xb0, 0xd1, 0xd7, - 0xcd, 0xae, 0xd1, 0xd7, 0xce, 0xb0, 0xd1, 0xd7, 0xce, 0xae, 0xd1, 0xd7, - 0xce, 0xb0, 0xd1, 0xd7, 0xce, 0xae, 0xd1, 0xd7, 0xcf, 0xb0, 0xd1, 0xd7, - 0xcf, 0xae, 0xd1, 0xd7, 0xcf, 0xb0, 0xd1, 0xd7, 0xd0, 0xae, 0xd1, 0xd7, - 0xd0, 0xb0, 0xd1, 0xd7, 0xd0, 0xae, 0xd2, 0xd7, 0xd0, 0xae, 0xd1, 0xd7, - 0xd1, 0xae, 0xd2, 0xd7, 0xd1, 0xae, 0xd1, 0xd7, 0xd1, 0xae, 0xd2, 0xd7, - 0xd1, 0xae, 0xd2, 0xd7, 0xd1, 0xae, 0xd2, 0xd7, 0xd1, 0xae, 0xd2, 0xd6, - 0xd1, 0xae, 0xd3, 0xd7, 0xd1, 0xae, 0xd3, 0xd6, 0xd1, 0xae, 0xd3, 0xd7, - 0xd1, 0xae, 0xd4, 0xd6, 0xd1, 0xae, 0xd4, 0xd7, 0xd1, 0xae, 0xd4, 0xd6, - 0xd1, 0xae, 0xd4, 0xd7, 0xd1, 0xae, 0xd5, 0xd6, 0xd1, 0xae, 0xd5, 0xd7, - 0xd1, 0xae, 0xd5, 0xd6, 0xd1, 0xae, 0xd6, 0xd7, 0xd1, 0xae, 0xd6, 0xd6, - 0xd1, 0xae, 0xd6, 0xd7, 0xd1, 0xae, 0xd6, 0xd6, 0xd1, 0xae, 0xd7, 0xd7, - 0xd1, 0xae, 0xd7, 0xd6, 0xd1, 0xae, 0xd7, 0xd7, 0xd1, 0xae, 0xd7, 0xd6, - 0xd1, 0xae, 0xd8, 0xd7, 0xd1, 0xae, 0xd8, 0xd6, 0xd1, 0xae, 0xd8, 0xd4, - 0xd2, 0xae, 0xd9, 0xd6, 0xd1, 0xae, 0xd9, 0xd4, 0xd2, 0xae, 0xd9, 0xd6, - 0xd1, 0xae, 0xd9, 0xd4, 0xd2, 0xae, 0xda, 0xd6, 0xd1, 0xae, 0xda, 0xd4, - 0xd2, 0xae, 0xda, 0xd6, 0xd1, 0xae, 0xda, 0xd4, 0xd2, 0xae, 0xdb, 0xd6, - 0xd1, 0xae, 0xdb, 0xd4, 0xd2, 0xae, 0xdb, 0xd6, 0xd1, 0xae, 0xdb, 0xd4, - 0xd2, 0xae, 0xdc, 0xd6, 0xd1, 0xae, 0xdc, 0xd4, 0xd2, 0xae, 0xdc, 0xd6, - 0xd1, 0xae, 0xdd, 0xd4, 0xd2, 0xae, 0xdd, 0xd6, 0xd1, 0xae, 0xdd, 0xd4, - 0xd2, 0xae, 0xdd, 0xd6, 0xd1, 0xae, 0xde, 0xd4, 0xd2, 0xae, 0xde, 0xd9, - 0xe9, 0xae, 0xde, 0xda, 0xe9, 0xae, 0xde, 0xd9, 0xe9, 0xae, 0xdf, 0xda, - 0xe9, 0xae, 0xdf, 0xd9, 0xe9, 0xae, 0xdf, 0xda, 0xe9, 0xae, 0xdf, 0xd9, - 0xe9, 0xae, 0xe0, 0xda, 0xe9, 0xae, 0xe0, 0xd9, 0xe9, 0xae, 0xe0, 0xd8, - 0xe9, 0xae, 0xe1, 0xd9, 0xe9, 0xae, 0xe1, 0xd8, 0xe9, 0xae, 0xe1, 0xd9, - 0xe9, 0xae, 0xe1, 0xd8, 0xe9, 0xae, 0xe2, 0xd9, 0xe9, 0xae, 0xe2, 0xd8, - 0xe9, 0xae, 0xe2, 0xd9, 0xe9, 0xae, 0xe2, 0xd8, 0xe9, 0xae, 0xe3, 0xd9, - 0xe9, 0xae, 0xe3, 0xd8, 0xe9, 0xae, 0xe3, 0xd9, 0xe9, 0xae, 0xe3, 0xd8, - 0xe9, 0xae, 0xe4, 0xd9, 0xe9, 0xae, 0xe4, 0xd8, 0xe9, 0xae, 0xe4, 0xd9, - 0xe9, 0xae, 0xe4, 0xd8, 0xe9, 0xae, 0xe5, 0xd9, 0xe9, 0xae, 0xe5, 0xd8, - 0xe9, 0xae, 0xe5, 0xd9, 0xe9, 0xae, 0xe5, 0xd8, 0xe9, 0xae, 0xe6, 0xd7, - 0xea, 0xae, 0xe6, 0xd8, 0xe9, 0xae, 0xe6, 0xd7, 0xea, 0xae, 0xe6, 0xd8, - 0xe9, 0xae, 0xe7, 0xd7, 0xea, 0xae, 0xe7, 0xd8, 0xe9, 0xae, 0xe7, 0xd7, - 0xea, 0xae, 0xe7, 0xd8, 0xe9, 0xae, 0xe8, 0xd7, 0xea, 0xae, 0xe8, 0xd8, - 0xe9, 0xae, 0xe8, 0xd7, 0xea, 0xae, 0xe8, 0xd8, 0xe9, 0xae, 0xe9, 0xd7, - 0xea, 0xae, 0xe9, 0xd8, 0xe9, 0xae, 0xe9, 0xd7, 0xea, 0xae, 0xe9, 0xd8, - 0xe9, 0xae, 0xe9, 0xd7, 0xea, 0xae, 0xe9, 0xd7, 0xea, 0xae, 0xe9, 0xd7, - 0xea, 0xae, 0xe9, 0xd7, 0xea, 0xae, 0xe9, 0xd7, 0xeb, 0xae, 0xe9, 0xd7, - 0xeb, 0xae, 0xec, 0xd7, 0xeb, 0xb0, 0xed, 0xd7, 0xeb, 0xae, 0xec, 0xd7, - 0xec, 0xb0, 0xed, 0xd7, 0xec, 0xae, 0xed, 0xd7, 0xec, 0xae, 0xed, 0xd7, - 0xec, 0xae, 0xed, 0xd7, 0xec, 0xae, 0xed, 0xd7, 0xec, 0xae, 0xed, 0xd7, - 0xec, 0xae, 0xed, 0xd7, 0xec, 0xae, 0xed, 0xd7, 0xec, 0xae, 0xee, 0xd7, - 0xec, 0xae, 0xee, 0xd7, 0xec, 0xae, 0xee, 0xd7, 0xec, 0xae, 0xee, 0xd7, - 0xec, 0xae, 0xef, 0xd6, 0xed, 0xae, 0xef, 0xd7, 0xec, 0xae, 0xef, 0xd6, - 0xed, 0xae, 0xef, 0xd7, 0xec, 0xae, 0xf0, 0xd6, 0xed, 0xae, 0xf0, 0xd7, - 0xec, 0xae, 0xf0, 0xd6, 0xed, 0xae, 0xf0, 0xd7, 0xec, 0xae, 0xf1, 0xd6, - 0xed, 0xae, 0xf1, 0xd7, 0xec, 0xae, 0xf1, 0xd6, 0xed, 0xae, 0xf1, 0xd7, - 0xec, 0xae, 0xf2, 0xd6, 0xed, 0xae, 0xf2, 0xd7, 0xec, 0xae, 0xf2, 0xd6, - 0xed, 0xae, 0xf2, 0xd7, 0xec, 0xae, 0xf2, 0xd6, 0xed, 0xae, 0xf3, 0xd7, - 0xec, 0xae, 0xf3, 0xd6, 0xed, 0xae, 0xf3, 0xd7, 0xec, 0xae, 0xf3, 0xd6, - 0xed, 0xae, 0xf4, 0xd7, 0xec, 0xae, 0xf4, 0xd6, 0xed, 0xae, 0xf4, 0xd7, - 0xec, 0xae, 0xf4, 0xd6, 0xed, 0xae, 0xf5, 0xd7, 0xec, 0xae, 0xf5, 0xd6, - 0xed, 0xae, 0xf5, 0xd7, 0xec, 0xae, 0xf5, 0xd6, 0xed, 0xae, 0xf5, 0xd4, - 0xed, 0xae, 0xf6, 0xd6, 0xed, 0xae, 0xf6, 0xd4, 0xed, 0xae, 0xf6, 0xd6, - 0xed, 0xae, 0xf6, 0xd4, 0xed, 0xae, 0xf7, 0xd6, 0xed, 0xae, 0xf7, 0xd4, - 0xed, 0xae, 0xf7, 0xd6, 0xed, 0xae, 0xf7, 0xd4, 0xed, 0xae, 0xf8, 0xd6, - 0xed, 0xae, 0xf8, 0xd4, 0xed, 0xae, 0xf8, 0xd6, 0xed, 0xae, 0xf8, 0xd4, - 0xed, 0xae, 0xf8, 0xd6, 0xed, 0xae, 0xf9, 0xd4, 0xed, 0xae, 0xf9, 0xd6, - 0xed, 0xae, 0xf9, 0xd4, 0xed, 0xae, 0xf9, 0xd6, 0xed, 0xae, 0xfa, 0xd4, - 0xed, 0xae, 0xfa, 0xd6, 0xed, 0xae, 0xfa, 0xd4, 0xed, 0xae, 0xfa, 0xc7, - 0xf7, 0xae, 0xfa, 0xc7, 0xf7, 0xae, 0xfb, 0xc7, 0xf7, 0xae, 0xfb, 0xc7, - 0xf7, 0xae, 0xfb, 0xc7, 0xf7, 0xae, 0xfb, 0xc7, 0xf7, 0xae, 0xfc, 0xc7, - 0xf7, 0xae, 0xfc, 0xc7, 0xf7, 0xae, 0xfc, 0xc7, 0xf7, 0xae, 0xfc, 0xc7, - 0xf7, 0xae, 0xfc, 0xc7, 0xf7, 0xae, 0xfd, 0xc7, 0xf7, 0xae, 0xfd, 0xc7, - 0xf7, 0xae, 0xfd, 0xc7, 0xf7, 0xae, 0xfd, 0xc7, 0xf7, 0xae, 0xfe, 0xc7, - 0xf7, 0xae, 0xfe, 0xc7, 0xf7, 0xae, 0xfe, 0xc7, 0xf7, 0xae, 0xfe, 0xc7, - 0xf7, 0xae, 0xfe, 0xc7, 0xf7, 0xae, 0xff, 0xc7, 0xf7, 0xae, 0xff, 0xc7, - 0xf7, 0xae, 0x03, 0xdc, 0x8a, 0xae, 0x0a, 0xdd, 0x8a, 0xae, 0x0f, 0xdc, - 0x8a, 0xae, 0x14, 0xdd, 0x8a, 0xae, 0x17, 0xdc, 0x8a, 0xae, 0x1b, 0xdd, - 0x8a, 0xae, 0x1e, 0xdc, 0x8a, 0xae, 0x20, 0xdd, 0x8a, 0xae, 0x23, 0xdc, - 0x8a, 0xae, 0x25, 0xdd, 0x8a, 0xae, 0x27, 0xdc, 0x8a, 0xae, 0x29, 0xdd, - 0x8a, 0xae, 0x2b, 0xdc, 0x8a, 0xae, 0x2d, 0xdd, 0x8a, 0xae, 0x2f, 0xdc, - 0x8a, 0xae, 0x31, 0xdd, 0x8a, 0xae, 0x32, 0xdc, 0x8a, 0xae, 0x34, 0xdd, - 0x8a, 0xae, 0x35, 0xdc, 0x8a, 0xae, 0x37, 0xdd, 0x8a, 0xae, 0x38, 0xdc, - 0x8a, 0xae, 0x3a, 0xdd, 0x8a, 0xae, 0x3b, 0xdc, 0x8a, 0xae, 0x3c, 0xdd, - 0x8a, 0xae, 0x3e, 0xdc, 0x8a, 0xae, 0x3f, 0xdd, 0x8a, 0xae, 0x40, 0xdc, - 0x8a, 0xae, 0x42, 0xda, 0x8b, 0xae, 0x43, 0xdc, 0x8a, 0xae, 0x44, 0xda, - 0x8b, 0xae, 0x45, 0xdc, 0x8a, 0xae, 0x46, 0xda, 0x8b, 0xae, 0x47, 0xdc, - 0x8a, 0xae, 0x48, 0xda, 0x8b, 0xae, 0x49, 0xdc, 0x8a, 0xae, 0x4a, 0xda, - 0x8b, 0xae, 0x4b, 0xdc, 0x8a, 0xae, 0x4c, 0xda, 0x8b, 0xae, 0x4d, 0xdc, - 0x8a, 0xae, 0x4e, 0xda, 0x8b, 0xae, 0x4f, 0xdc, 0x8a, 0xae, 0x50, 0xda, - 0x8b, 0xae, 0x51, 0xdc, 0x8a, 0xae, 0x52, 0xda, 0x8b, 0xae, 0x53, 0xdc, - 0x8a, 0xae, 0x54, 0xda, 0x8b, 0xae, 0x55, 0xdc, 0x8a, 0xae, 0x56, 0xda, - 0x8b, 0xae, 0x57, 0xdc, 0x8a, 0xae, 0x58, 0xda, 0x8b, 0xae, 0x58, 0xdc, - 0x8a, 0xae, 0x59, 0xda, 0x8b, 0xae, 0x5a, 0xdc, 0x8a, 0xae, 0x5b, 0xda, - 0x8b, 0xae, 0x5c, 0xdc, 0x8a, 0xae, 0x5d, 0xda, 0x8b, 0xae, 0x5d, 0xdc, - 0x8a, 0xae, 0x5e, 0xda, 0x8b, 0xae, 0x5f, 0xdc, 0x8a, 0xae, 0x60, 0xda, - 0x8b, 0xae, 0x60, 0xdc, 0x8a, 0xae, 0x61, 0xda, 0x8b, 0xae, 0x62, 0xdc, - 0x8a, 0xae, 0x63, 0xda, 0x8b, 0xae, 0x63, 0xdc, 0x8a, 0xae, 0x64, 0xda, - 0x8b, 0xae, 0x65, 0xdc, 0x8a, 0xae, 0x66, 0xda, 0x8b, 0xae, 0x66, 0xd8, - 0x8b, 0xae, 0x67, 0xda, 0x8b, 0xae, 0x68, 0xd8, 0x8b, 0xae, 0x68, 0xda, - 0x8b, 0xae, 0x69, 0xd8, 0x8b, 0xae, 0x6a, 0xda, 0x8b, 0xae, 0x6a, 0xd8, - 0x8b, 0xae, 0x6b, 0xda, 0x8b, 0xae, 0x6c, 0xd8, 0x8b, 0xae, 0x6c, 0xda, - 0x8b, 0xae, 0x6d, 0xd8, 0x8b, 0xae, 0x6e, 0xda, 0x8b, 0xae, 0x6e, 0xd8, - 0x8b, 0xae, 0x6f, 0xda, 0x8b, 0xae, 0x70, 0xd8, 0x8b, 0xae, 0x70, 0xda, - 0x8b, 0xae, 0x71, 0xd8, 0x8b, 0xae, 0x72, 0xda, 0x8b, 0xae, 0x72, 0xd8, - 0x8b, 0xae, 0x73, 0xda, 0x8b, 0xae, 0x73, 0xd8, 0x8b, 0xae, 0x74, 0xda, - 0x8b, 0xae, 0x75, 0xd8, 0x8b, 0xae, 0x75, 0xda, 0x8b, 0xae, 0x76, 0xd8, - 0x8b, 0xae, 0x76, 0xda, 0x8b, 0xae, 0x77, 0xd8, 0x8b, 0xae, 0x78, 0xda, - 0x8b, 0xae, 0x78, 0xd8, 0x8b, 0xae, 0x79, 0xda, 0x8b, 0xae, 0x79, 0xd8, - 0x8b, 0xae, 0x7a, 0xda, 0x8b, 0xae, 0x7a, 0xd8, 0x8b, 0xae, 0x7b, 0xda, - 0x8b, 0xae, 0x7c, 0xd8, 0x8b, 0xae, 0x7c, 0xda, 0x8b, 0xae, 0x7d, 0xd8, - 0x8b, 0xae, 0x7d, 0xda, 0x8b, 0xae, 0x7e, 0xd8, 0x8b, 0xae, 0x7e, 0xda, - 0x8b, 0xae, 0x7f, 0xd8, 0x8b, 0xae, 0x7f, 0xda, 0x8b, 0xae, 0x80, 0xd8, - 0x8b, 0xae, 0x81, 0xda, 0x8b, 0xae, 0x81, 0xd8, 0x8b, 0xae, 0x82, 0xda, - 0x8b, 0xae, 0x82, 0xd8, 0x8b, 0xae, 0x83, 0xda, 0x8b, 0xae, 0x83, 0xd8, - 0x8b, 0xae, 0x84, 0xd7, 0x8c, 0xae, 0x84, 0xd8, 0x8b, 0xae, 0x85, 0xd7, - 0x8c, 0xae, 0x85, 0xd8, 0x8b, 0xae, 0x86, 0xd7, 0x8c, 0xae, 0x86, 0xd8, - 0x8b, 0xae, 0x87, 0xd7, 0x8c, 0xae, 0x87, 0xd8, 0x8b, 0xae, 0x88, 0xd7, - 0x8c, 0xae, 0x88, 0xd8, 0x8b, 0xae, 0x89, 0xd7, 0x8c, 0xae, 0x89, 0xd8, - 0x8b, 0xae, 0x8a, 0xd7, 0x8c, 0xae, 0x8a, 0xd8, 0x8b, 0xae, 0x8b, 0xd7, - 0x8c, 0xae, 0x8b, 0xd8, 0x8b, 0xae, 0x8b, 0xd7, 0x8c, 0xae, 0x8b, 0xd7, - 0x8c, 0xae, 0x8b, 0xd7, 0x8d, 0xae, 0x8b, 0xd7, 0x8d, 0xae, 0x8b, 0xd7, - 0x8e, 0xae, 0x8b, 0xd7, 0x8e, 0xae, 0x8b, 0xd7, 0x8e, 0xae, 0x8b, 0xd7, - 0x8f, 0xae, 0x8c, 0xd7, 0x8f, 0xab, 0x8b, 0xd7, 0x90, 0xae, 0x8c, 0xd7, - 0x90, 0xab, 0x8b, 0xd7, 0x91, 0xae, 0x8c, 0xd7, 0x91, 0xab, 0x8b, 0xd7, - 0x92, 0xae, 0x8c, 0xd7, 0x92, 0xab, 0x8b, 0xd7, 0x93, 0xae, 0x8c, 0xd7, - 0x93, 0xab, 0x8b, 0xd7, 0x94, 0xae, 0x8c, 0xd7, 0x94, 0xab, 0x8b, 0xd7, - 0x94, 0xae, 0x8c, 0xd7, 0x95, 0xab, 0x8b, 0xd7, 0x95, 0xae, 0x8c, 0xd7, - 0x96, 0xab, 0x8b, 0xd7, 0x96, 0xae, 0x8c, 0xd7, 0x97, 0xab, 0x8b, 0xd7, - 0x97, 0xae, 0x8c, 0xd7, 0x98, 0xab, 0x8b, 0xd7, 0x98, 0xae, 0x8c, 0xd7, - 0x98, 0xab, 0x8b, 0xd7, 0x99, 0xae, 0x8c, 0xd7, 0x99, 0xab, 0x8b, 0xd7, - 0x9a, 0xae, 0x8c, 0xd7, 0x9a, 0xab, 0x8b, 0xd7, 0x9a, 0xae, 0x8c, 0xd7, - 0x9b, 0xab, 0x8b, 0xd7, 0x9b, 0xae, 0x8c, 0xd7, 0x9c, 0xab, 0x8b, 0xd7, - 0x9c, 0xae, 0x8c, 0xd7, 0x9d, 0xab, 0x8b, 0xd7, 0x9d, 0xae, 0x8c, 0xd7, - 0x9d, 0xab, 0x8b, 0xd7, 0x9e, 0xae, 0x8c, 0xd7, 0x9e, 0xab, 0x8b, 0xd7, - 0x9f, 0xae, 0x8c, 0xd7, 0x9f, 0xab, 0x8b, 0xd7, 0x9f, 0xae, 0xa1, 0xd7, - 0xa0, 0x97, 0xa1, 0xd7, 0xa0, 0x97, 0xa1, 0xd7, 0xa1, 0x97, 0xa1, 0xd7, - 0xa1, 0x97, 0xa1, 0xd7, 0xa1, 0x97, 0xa2, 0xd7, 0xa2, 0x97, 0xa2, 0xd7, - 0xa2, 0x97, 0xa3, 0xd7, 0xa3, 0x97, 0xa3, 0xd7, 0xa3, 0x97, 0xa3, 0xd7, - 0xa3, 0x97, 0xa3, 0xd7, 0xa4, 0x97, 0xa3, 0xd7, 0xa4, 0x97, 0xa3, 0xd7, - 0xa5, 0x97, 0xa3, 0xd7, 0xa5, 0x97, 0xa3, 0xd7, 0xa5, 0x97, 0xa3, 0xd7, - 0xa6, 0x97, 0xa3, 0xd7, 0xa6, 0x97, 0xa3, 0xd7, 0xa6, 0x97, 0xa3, 0xd7, - 0xa7, 0x97, 0xa3, 0xd7, 0xa7, 0x97, 0xa3, 0xd7, 0xa8, 0x97, 0xa3, 0xd7, - 0xa8, 0x97, 0xa3, 0xd7, 0xa8, 0x97, 0xa3, 0xd7, 0xa9, 0x97, 0xa3, 0xd7, - 0xa9, 0x97, 0xa3, 0xd7, 0xaa, 0x97, 0xa3, 0xd7, 0xaa, 0x97, 0xa3, 0xd7, - 0xaa, 0x97, 0xa3, 0xd7, 0xab, 0x97, 0xa3, 0xd7, 0xab, 0x97, 0xa3, 0xd7, - 0xab, 0x97, 0xa3, 0xd7, 0xac, 0x97, 0xa3, 0xd7, 0xac, 0x97, 0xa3, 0xd7, - 0xac, 0x97, 0xa3, 0xd7, 0xad, 0x97, 0xa3, 0xd7, 0xad, 0x97, 0xa3, 0xd7, - 0xae, 0x97, 0xa3, 0xd7, 0xae, 0x97, 0xa3, 0xd7, 0xae, 0x97, 0xa3, 0xd7, - 0xaf, 0x97, 0xa3, 0xd7, 0xaf, 0x97, 0xa3, 0xd7, 0xaf, 0x97, 0xa3, 0xd7, - 0xb0, 0x97, 0xa3, 0xd7, 0xb0, 0x97, 0xa3, 0xd7, 0xb0, 0x97, 0xa3, 0xd7, - 0xb1, 0x97, 0xa3, 0xd7, 0xb1, 0x97, 0xa3, 0xd7, 0xb2, 0x97, 0xa3, 0xd7, - 0xb2, 0x97, 0xa3, 0xd7, 0xb2, 0x97, 0xa3, 0xd7, 0xb3, 0x97, 0xa3, 0xd7, - 0xb3, 0x97, 0xa3, 0xd7, 0xb3, 0x97, 0xa3, 0xd7, 0xb4, 0x97, 0xa3, 0xd7, - 0xb4, 0x97, 0xa3, 0xd7, 0xb4, 0x97, 0xa3, 0xd7, 0xb5, 0x97, 0xa3, 0xd7, - 0xb5, 0x97, 0xa3, 0xd7, 0xb5, 0x97, 0xa3, 0xd7, 0xb6, 0x97, 0xa3, 0xd7, - 0xb6, 0x97, 0xa3, 0xd7, 0xb6, 0x97, 0xa3, 0xd7, 0xb7, 0x97, 0xa3, 0xd7, - 0xb7, 0x97, 0xa3, 0xd7, 0xb7, 0x97, 0xa3, 0xd7, 0xb8, 0x97, 0xa3, 0xd7, - 0xb8, 0x97, 0xa3, 0xd7, 0xb8, 0x97, 0xa3, 0xd7, 0xb9, 0x97, 0xa3, 0xd7, - 0xb9, 0x97, 0xd1, 0xd7, 0xb9, 0xb2, 0xd0, 0xd7, 0xba, 0xb5, 0xd1, 0xd7, - 0xba, 0xb2, 0xd0, 0xd7, 0xba, 0xb5, 0xd1, 0xd7, 0xbb, 0xb2, 0xd0, 0xd7, - 0xbb, 0xb5, 0xd1, 0xd7, 0xbb, 0xb2, 0xd0, 0xd7, 0xbc, 0xb5, 0xd1, 0xd7, - 0xbc, 0xb2, 0xd0, 0xd7, 0xbc, 0xb5, 0xd1, 0xd7, 0xbd, 0xb2, 0xd0, 0xd7, - 0xbd, 0xb5, 0xd1, 0xd7, 0xbd, 0xb2, 0xd0, 0xd7, 0xbe, 0xb5, 0xd1, 0xd7, - 0xbe, 0xb2, 0xd0, 0xd7, 0xbe, 0xb5, 0xd1, 0xd7, 0xbf, 0xb2, 0xd0, 0xd7, - 0xbf, 0xb5, 0xd1, 0xd7, 0xbf, 0xb2, 0xd0, 0xd7, 0xc0, 0xb5, 0xd1, 0xd7, - 0xc0, 0xb2, 0xd0, 0xd7, 0xc0, 0xb5, 0xd1, 0xd7, 0xc1, 0xb2, 0xd0, 0xd7, - 0xc1, 0xb5, 0xd1, 0xd7, 0xc1, 0xb2, 0xd0, 0xd7, 0xc1, 0xb5, 0xd1, 0xd7, - 0xc2, 0xb2, 0xd0, 0xd7, 0xc2, 0xb5, 0xd1, 0xd7, 0xc2, 0xb2, 0xd1, 0xd7, - 0xc3, 0xaf, 0xd1, 0xd7, 0xc3, 0xb2, 0xd1, 0xd7, 0xc3, 0xaf, 0xd1, 0xd7, - 0xc4, 0xb2, 0xd1, 0xd7, 0xc4, 0xaf, 0xd1, 0xd7, 0xc4, 0xb2, 0xd1, 0xd7, - 0xc5, 0xaf, 0xd1, 0xd7, 0xc5, 0xb2, 0xd1, 0xd7, 0xc5, 0xaf, 0xd1, 0xd7, - 0xc6, 0xb2, 0xd1, 0xd7, 0xc6, 0xaf, 0xd1, 0xd7, 0xc6, 0xb2, 0xd1, 0xd7, - 0xc6, 0xaf, 0xd1, 0xd7, 0xc7, 0xb2, 0xd1, 0xd7, 0xc7, 0xaf, 0xd1, 0xd7, - 0xc7, 0xb2, 0xd1, 0xd7, 0xc8, 0xaf, 0xd1, 0xd7, 0xc8, 0xb2, 0xd1, 0xd7, - 0xc8, 0xaf, 0xd1, 0xd7, 0xc9, 0xb2, 0xd1, 0xd7, 0xc9, 0xaf, 0xd1, 0xd7, - 0xc9, 0xb2, 0xd1, 0xd7, 0xc9, 0xaf, 0xd1, 0xd7, 0xca, 0xb2, 0xd1, 0xd7, - 0xca, 0xaf, 0xd1, 0xd7, 0xca, 0xb2, 0xd1, 0xd7, 0xcb, 0xaf, 0xd1, 0xd7, - 0xcb, 0xb2, 0xd1, 0xd7, 0xcb, 0xaf, 0xd1, 0xd7, 0xcc, 0xb2, 0xd1, 0xd7, - 0xcc, 0xaf, 0xd1, 0xd7, 0xcc, 0xb2, 0xd1, 0xd7, 0xcc, 0xaf, 0xd1, 0xd7, - 0xcd, 0xae, 0xd1, 0xd7, 0xcd, 0xaf, 0xd1, 0xd7, 0xcd, 0xae, 0xd1, 0xd7, - 0xce, 0xaf, 0xd1, 0xd7, 0xce, 0xae, 0xd1, 0xd7, 0xce, 0xaf, 0xd1, 0xd7, - 0xce, 0xae, 0xd1, 0xd7, 0xcf, 0xaf, 0xd1, 0xd7, 0xcf, 0xae, 0xd1, 0xd7, - 0xcf, 0xaf, 0xd1, 0xd7, 0xd0, 0xae, 0xd1, 0xd7, 0xd0, 0xaf, 0xd1, 0xd7, - 0xd0, 0xae, 0xd1, 0xd7, 0xd0, 0xaf, 0xd1, 0xd7, 0xd1, 0xae, 0xd1, 0xd7, - 0xd1, 0xaf, 0xd1, 0xd7, 0xd1, 0xae, 0xd2, 0xd7, 0xd1, 0xae, 0xd2, 0xd7, - 0xd1, 0xae, 0xd2, 0xd7, 0xd1, 0xae, 0xd2, 0xd6, 0xd1, 0xae, 0xd3, 0xd7, - 0xd1, 0xae, 0xd3, 0xd6, 0xd1, 0xae, 0xd3, 0xd7, 0xd1, 0xae, 0xd4, 0xd6, - 0xd1, 0xae, 0xd4, 0xd7, 0xd1, 0xae, 0xd4, 0xd6, 0xd1, 0xae, 0xd4, 0xd7, - 0xd1, 0xae, 0xd5, 0xd6, 0xd1, 0xae, 0xd5, 0xd7, 0xd1, 0xae, 0xd5, 0xd6, - 0xd1, 0xae, 0xd6, 0xd7, 0xd1, 0xae, 0xd6, 0xd6, 0xd1, 0xae, 0xd6, 0xd7, - 0xd1, 0xae, 0xd6, 0xd6, 0xd1, 0xae, 0xd7, 0xd7, 0xd1, 0xae, 0xd7, 0xd6, - 0xd1, 0xae, 0xd7, 0xd7, 0xd1, 0xae, 0xd7, 0xd6, 0xd1, 0xae, 0xd8, 0xd7, - 0xd1, 0xae, 0xd8, 0xd6, 0xd1, 0xae, 0xd8, 0xd5, 0xd2, 0xae, 0xd9, 0xd6, - 0xd1, 0xae, 0xd9, 0xd5, 0xd2, 0xae, 0xd9, 0xd6, 0xd1, 0xae, 0xd9, 0xd5, - 0xd2, 0xae, 0xda, 0xd6, 0xd1, 0xae, 0xda, 0xd5, 0xd2, 0xae, 0xda, 0xd6, - 0xd1, 0xae, 0xda, 0xd5, 0xd2, 0xae, 0xdb, 0xd6, 0xd1, 0xae, 0xdb, 0xd5, - 0xd2, 0xae, 0xdb, 0xd6, 0xd1, 0xae, 0xdb, 0xd5, 0xd2, 0xae, 0xdc, 0xd6, - 0xd1, 0xae, 0xdc, 0xd5, 0xd2, 0xae, 0xdc, 0xd6, 0xd1, 0xae, 0xdd, 0xd5, - 0xd2, 0xae, 0xdd, 0xd6, 0xd1, 0xae, 0xdd, 0xd5, 0xd2, 0xae, 0xdd, 0xd6, - 0xd1, 0xae, 0xde, 0xd5, 0xd2, 0xae, 0xde, 0xd9, 0xe9, 0xae, 0xde, 0xdb, - 0xe9, 0xae, 0xde, 0xd9, 0xe9, 0xae, 0xdf, 0xdb, 0xe9, 0xae, 0xdf, 0xd9, - 0xe9, 0xae, 0xdf, 0xdb, 0xe9, 0xae, 0xdf, 0xd9, 0xe9, 0xae, 0xe0, 0xdb, - 0xe9, 0xae, 0xe0, 0xd9, 0xe9, 0xae, 0xe0, 0xd8, 0xe9, 0xae, 0xe1, 0xd9, - 0xe9, 0xae, 0xe1, 0xd8, 0xe9, 0xae, 0xe1, 0xd9, 0xe9, 0xae, 0xe1, 0xd8, - 0xe9, 0xae, 0xe2, 0xd9, 0xe9, 0xae, 0xe2, 0xd8, 0xe9, 0xae, 0xe2, 0xd9, - 0xe9, 0xae, 0xe2, 0xd8, 0xe9, 0xae, 0xe3, 0xd9, 0xe9, 0xae, 0xe3, 0xd8, - 0xe9, 0xae, 0xe3, 0xd9, 0xe9, 0xae, 0xe3, 0xd8, 0xe9, 0xae, 0xe4, 0xd9, - 0xe9, 0xae, 0xe4, 0xd8, 0xe9, 0xae, 0xe4, 0xd9, 0xe9, 0xae, 0xe4, 0xd8, - 0xe9, 0xae, 0xe5, 0xd9, 0xe9, 0xae, 0xe5, 0xd8, 0xe9, 0xae, 0xe5, 0xd9, - 0xe9, 0xae, 0xe5, 0xd8, 0xe9, 0xae, 0xe6, 0xd9, 0xe9, 0xae, 0xe6, 0xd8, - 0xe9, 0xae, 0xe6, 0xd9, 0xe9, 0xae, 0xe6, 0xd8, 0xe9, 0xae, 0xe7, 0xd9, - 0xe9, 0xae, 0xe7, 0xd8, 0xe9, 0xae, 0xe7, 0xd9, 0xe9, 0xae, 0xe7, 0xd8, - 0xe9, 0xae, 0xe8, 0xd7, 0xea, 0xae, 0xe8, 0xd8, 0xe9, 0xae, 0xe8, 0xd7, - 0xea, 0xae, 0xe8, 0xd8, 0xe9, 0xae, 0xe9, 0xd7, 0xea, 0xae, 0xe9, 0xd8, - 0xe9, 0xae, 0xe9, 0xd7, 0xea, 0xae, 0xe9, 0xd8, 0xe9, 0xae, 0xe9, 0xd7, - 0xea, 0xae, 0xe9, 0xd7, 0xea, 0xae, 0xe9, 0xd7, 0xea, 0xae, 0xe9, 0xd7, - 0xea, 0xae, 0xe9, 0xd7, 0xeb, 0xae, 0xe9, 0xd7, 0xeb, 0xae, 0xec, 0xd7, - 0xeb, 0xaf, 0xed, 0xd7, 0xeb, 0xae, 0xec, 0xd7, 0xec, 0xaf, 0xed, 0xd7, - 0xec, 0xae, 0xec, 0xd7, 0xec, 0xaf, 0xed, 0xd7, 0xec, 0xae, 0xed, 0xd7, - 0xec, 0xae, 0xed, 0xd7, 0xec, 0xae, 0xed, 0xd7, 0xec, 0xae, 0xed, 0xd7, - 0xec, 0xae, 0xed, 0xd7, 0xec, 0xae, 0xee, 0xd7, 0xec, 0xae, 0xee, 0xd7, - 0xec, 0xae, 0xee, 0xd7, 0xec, 0xae, 0xee, 0xd7, 0xec, 0xae, 0xef, 0xd6, - 0xed, 0xae, 0xef, 0xd7, 0xec, 0xae, 0xef, 0xd6, 0xed, 0xae, 0xef, 0xd7, - 0xec, 0xae, 0xf0, 0xd6, 0xed, 0xae, 0xf0, 0xd7, 0xec, 0xae, 0xf0, 0xd6, - 0xed, 0xae, 0xf0, 0xd7, 0xec, 0xae, 0xf1, 0xd6, 0xed, 0xae, 0xf1, 0xd7, - 0xec, 0xae, 0xf1, 0xd6, 0xed, 0xae, 0xf1, 0xd7, 0xec, 0xae, 0xf2, 0xd6, - 0xed, 0xae, 0xf2, 0xd7, 0xec, 0xae, 0xf2, 0xd6, 0xed, 0xae, 0xf2, 0xd7, - 0xec, 0xae, 0xf2, 0xd6, 0xed, 0xae, 0xf3, 0xd7, 0xec, 0xae, 0xf3, 0xd6, - 0xed, 0xae, 0xf3, 0xd7, 0xec, 0xae, 0xf3, 0xd6, 0xed, 0xae, 0xf4, 0xd7, - 0xec, 0xae, 0xf4, 0xd6, 0xed, 0xae, 0xf4, 0xd7, 0xec, 0xae, 0xf4, 0xd6, - 0xed, 0xae, 0xf5, 0xd7, 0xec, 0xae, 0xf5, 0xd6, 0xed, 0xae, 0xf5, 0xd7, - 0xec, 0xae, 0xf5, 0xd6, 0xed, 0xae, 0xf5, 0xd7, 0xec, 0xae, 0xf6, 0xd6, - 0xed, 0xae, 0xf6, 0xd7, 0xec, 0xae, 0xf6, 0xd6, 0xed, 0xae, 0xf6, 0xd7, - 0xec, 0xae, 0xf7, 0xd6, 0xed, 0xae, 0xf7, 0xd7, 0xec, 0xae, 0xf7, 0xd6, - 0xed, 0xae, 0xf7, 0xd7, 0xec, 0xae, 0xf8, 0xd6, 0xed, 0xae, 0xf8, 0xd7, - 0xec, 0xae, 0xf8, 0xd6, 0xed, 0xae, 0xf8, 0xd4, 0xed, 0xae, 0xf8, 0xd6, - 0xed, 0xae, 0xf9, 0xd4, 0xed, 0xae, 0xf9, 0xd6, 0xed, 0xae, 0xf9, 0xd4, - 0xed, 0xae, 0xf9, 0xd6, 0xed, 0xae, 0xfa, 0xd4, 0xed, 0xae, 0xfa, 0xd6, - 0xed, 0xae, 0xfa, 0xd4, 0xed, 0xae, 0xfa, 0xd6, 0xed, 0xae, 0xfa, 0xd4, - 0xed, 0xae, 0xfb, 0xc7, 0xf7, 0xae, 0xfb, 0xc7, 0xf7, 0xae, 0xfb, 0xc7, - 0xf7, 0xae, 0xfb, 0xc7, 0xf7, 0xae, 0xfc, 0xc7, 0xf7, 0xae, 0xfc, 0xc7, - 0xf7, 0xae, 0xfc, 0xc7, 0xf7, 0xae, 0xfc, 0xc7, 0xf7, 0xae, 0xfc, 0xc7, - 0xf7, 0xae, 0xfd, 0xc7, 0xf7, 0xae, 0xfd, 0xc7, 0xf7, 0xae, 0xfd, 0xc7, - 0xf7, 0xae, 0xfd, 0xc7, 0xf7, 0xae, 0xfe, 0xc7, 0xf7, 0xae, 0xfe, 0xc7, - 0xf7, 0xae, 0xfe, 0xc7, 0xf7, 0xae, 0xfe, 0xc7, 0xf7, 0xae, 0xfe, 0xc7, - 0xf7, 0xae, 0xff, 0xc7, 0xf7, 0xae, 0xff, 0xc7, 0xf7, 0xae, 0x03, 0xdb, - 0x8a, 0xaf, 0x0a, 0xdd, 0x8a, 0xaf, 0x0f, 0xdb, 0x8a, 0xaf, 0x14, 0xdd, - 0x8a, 0xaf, 0x17, 0xdb, 0x8a, 0xaf, 0x1b, 0xdd, 0x8a, 0xaf, 0x1e, 0xdb, - 0x8a, 0xaf, 0x20, 0xdd, 0x8a, 0xaf, 0x23, 0xdb, 0x8a, 0xaf, 0x25, 0xdd, - 0x8a, 0xaf, 0x27, 0xdb, 0x8a, 0xaf, 0x29, 0xdd, 0x8a, 0xaf, 0x2b, 0xdb, - 0x8a, 0xaf, 0x2d, 0xdd, 0x8a, 0xaf, 0x2f, 0xdb, 0x8a, 0xaf, 0x31, 0xdd, - 0x8a, 0xaf, 0x32, 0xdb, 0x8a, 0xaf, 0x34, 0xdd, 0x8a, 0xaf, 0x35, 0xdb, - 0x8a, 0xaf, 0x37, 0xdd, 0x8a, 0xaf, 0x38, 0xdb, 0x8a, 0xaf, 0x3a, 0xdd, - 0x8a, 0xaf, 0x3b, 0xdb, 0x8a, 0xaf, 0x3c, 0xdd, 0x8a, 0xaf, 0x3e, 0xdb, - 0x8a, 0xaf, 0x3f, 0xdd, 0x8a, 0xaf, 0x40, 0xdb, 0x8a, 0xaf, 0x42, 0xdd, - 0x8a, 0xaf, 0x43, 0xdb, 0x8a, 0xaf, 0x44, 0xdd, 0x8a, 0xaf, 0x45, 0xdb, - 0x8a, 0xaf, 0x46, 0xdd, 0x8a, 0xaf, 0x47, 0xdb, 0x8a, 0xaf, 0x48, 0xdd, - 0x8a, 0xaf, 0x49, 0xdb, 0x8a, 0xaf, 0x4a, 0xdd, 0x8a, 0xaf, 0x4b, 0xdb, - 0x8a, 0xaf, 0x4c, 0xdd, 0x8a, 0xaf, 0x4d, 0xdb, 0x8a, 0xaf, 0x4e, 0xdd, - 0x8a, 0xaf, 0x4f, 0xdb, 0x8a, 0xaf, 0x50, 0xdd, 0x8a, 0xaf, 0x51, 0xdb, - 0x8a, 0xaf, 0x52, 0xdd, 0x8a, 0xaf, 0x53, 0xdb, 0x8a, 0xaf, 0x54, 0xdd, - 0x8a, 0xaf, 0x55, 0xdb, 0x8a, 0xaf, 0x56, 0xda, 0x8b, 0xaf, 0x57, 0xdb, - 0x8a, 0xaf, 0x58, 0xda, 0x8b, 0xaf, 0x58, 0xdb, 0x8a, 0xaf, 0x59, 0xda, - 0x8b, 0xaf, 0x5a, 0xdb, 0x8a, 0xaf, 0x5b, 0xda, 0x8b, 0xaf, 0x5c, 0xdb, - 0x8a, 0xaf, 0x5d, 0xda, 0x8b, 0xaf, 0x5d, 0xdb, 0x8a, 0xaf, 0x5e, 0xda, - 0x8b, 0xaf, 0x5f, 0xdb, 0x8a, 0xaf, 0x60, 0xda, 0x8b, 0xaf, 0x60, 0xdb, - 0x8a, 0xaf, 0x61, 0xda, 0x8b, 0xaf, 0x62, 0xdb, 0x8a, 0xaf, 0x63, 0xda, - 0x8b, 0xaf, 0x63, 0xdb, 0x8a, 0xaf, 0x64, 0xda, 0x8b, 0xaf, 0x65, 0xdb, - 0x8a, 0xaf, 0x66, 0xda, 0x8b, 0xaf, 0x66, 0xdb, 0x8a, 0xaf, 0x67, 0xda, - 0x8b, 0xaf, 0x68, 0xdb, 0x8a, 0xaf, 0x68, 0xda, 0x8b, 0xaf, 0x69, 0xdb, - 0x8a, 0xaf, 0x6a, 0xda, 0x8b, 0xaf, 0x6a, 0xdb, 0x8a, 0xaf, 0x6b, 0xda, - 0x8b, 0xaf, 0x6c, 0xdb, 0x8a, 0xaf, 0x6c, 0xda, 0x8b, 0xaf, 0x6d, 0xdb, - 0x8a, 0xaf, 0x6e, 0xda, 0x8b, 0xaf, 0x6e, 0xdb, 0x8a, 0xaf, 0x6f, 0xda, - 0x8b, 0xaf, 0x70, 0xdb, 0x8a, 0xaf, 0x70, 0xda, 0x8b, 0xaf, 0x71, 0xd8, - 0x8b, 0xaf, 0x72, 0xda, 0x8b, 0xaf, 0x72, 0xd8, 0x8b, 0xaf, 0x73, 0xda, - 0x8b, 0xaf, 0x73, 0xd8, 0x8b, 0xaf, 0x74, 0xda, 0x8b, 0xaf, 0x75, 0xd8, - 0x8b, 0xaf, 0x75, 0xda, 0x8b, 0xaf, 0x76, 0xd8, 0x8b, 0xaf, 0x76, 0xda, - 0x8b, 0xaf, 0x77, 0xd8, 0x8b, 0xaf, 0x78, 0xda, 0x8b, 0xaf, 0x78, 0xd8, - 0x8b, 0xaf, 0x79, 0xda, 0x8b, 0xaf, 0x79, 0xd8, 0x8b, 0xaf, 0x7a, 0xda, - 0x8b, 0xaf, 0x7a, 0xd8, 0x8b, 0xaf, 0x7b, 0xda, 0x8b, 0xaf, 0x7c, 0xd8, - 0x8b, 0xaf, 0x7c, 0xda, 0x8b, 0xaf, 0x7d, 0xd8, 0x8b, 0xaf, 0x7d, 0xda, - 0x8b, 0xaf, 0x7e, 0xd8, 0x8b, 0xaf, 0x7e, 0xda, 0x8b, 0xaf, 0x7f, 0xd8, - 0x8b, 0xaf, 0x7f, 0xda, 0x8b, 0xaf, 0x80, 0xd8, 0x8b, 0xaf, 0x81, 0xda, - 0x8b, 0xaf, 0x81, 0xd8, 0x8b, 0xaf, 0x82, 0xda, 0x8b, 0xaf, 0x82, 0xd8, - 0x8b, 0xaf, 0x83, 0xda, 0x8b, 0xaf, 0x83, 0xd8, 0x8b, 0xaf, 0x84, 0xd8, - 0x8c, 0xaf, 0x84, 0xd8, 0x8b, 0xaf, 0x85, 0xd8, 0x8c, 0xaf, 0x85, 0xd8, - 0x8b, 0xaf, 0x86, 0xd8, 0x8c, 0xaf, 0x86, 0xd8, 0x8b, 0xaf, 0x87, 0xd8, - 0x8c, 0xaf, 0x87, 0xd8, 0x8b, 0xaf, 0x88, 0xd8, 0x8c, 0xaf, 0x88, 0xd8, - 0x8b, 0xaf, 0x89, 0xd8, 0x8c, 0xaf, 0x89, 0xd8, 0x8b, 0xaf, 0x8a, 0xd8, - 0x8c, 0xaf, 0x8a, 0xd8, 0x8b, 0xaf, 0x8b, 0xd8, 0x8c, 0xaf, 0x8b, 0xd8, - 0x8b, 0xaf, 0x8b, 0xd8, 0x8c, 0xaf, 0x8b, 0xd8, 0x8c, 0xaf, 0x8b, 0xd8, - 0x8d, 0xaf, 0x8b, 0xd8, 0x8d, 0xaf, 0x8b, 0xd8, 0x8e, 0xaf, 0x8b, 0xd8, - 0x8e, 0xaf, 0x8b, 0xd8, 0x8e, 0xaf, 0x8b, 0xd8, 0x8f, 0xaf, 0x8b, 0xd8, - 0x8f, 0xaf, 0x8b, 0xd8, 0x90, 0xaf, 0x8b, 0xd8, 0x90, 0xaf, 0x8b, 0xd8, - 0x91, 0xaf, 0x8b, 0xd8, 0x91, 0xaf, 0x8b, 0xd8, 0x92, 0xaf, 0x8b, 0xd8, - 0x92, 0xaf, 0x8b, 0xd8, 0x93, 0xaf, 0x8c, 0xd8, 0x93, 0xab, 0x8b, 0xd8, - 0x94, 0xaf, 0x8c, 0xd8, 0x94, 0xab, 0x8b, 0xd8, 0x94, 0xaf, 0x8c, 0xd8, - 0x95, 0xab, 0x8b, 0xd8, 0x95, 0xaf, 0x8c, 0xd8, 0x96, 0xab, 0x8b, 0xd8, - 0x96, 0xaf, 0x8c, 0xd8, 0x97, 0xab, 0x8b, 0xd8, 0x97, 0xaf, 0x8c, 0xd8, - 0x98, 0xab, 0x8b, 0xd8, 0x98, 0xaf, 0x8c, 0xd8, 0x98, 0xab, 0x8b, 0xd8, - 0x99, 0xaf, 0x8c, 0xd8, 0x99, 0xab, 0x8b, 0xd8, 0x9a, 0xaf, 0x8c, 0xd8, - 0x9a, 0xab, 0x8b, 0xd8, 0x9a, 0xaf, 0x8c, 0xd8, 0x9b, 0xab, 0x8b, 0xd8, - 0x9b, 0xaf, 0x8c, 0xd8, 0x9c, 0xab, 0x8b, 0xd8, 0x9c, 0xaf, 0x8c, 0xd8, - 0x9d, 0xab, 0x8b, 0xd8, 0x9d, 0xaf, 0x8c, 0xd8, 0x9d, 0xab, 0x8b, 0xd8, - 0x9e, 0xaf, 0x8c, 0xd8, 0x9e, 0xab, 0x8b, 0xd8, 0x9f, 0xaf, 0x8c, 0xd8, - 0x9f, 0xab, 0x8b, 0xd8, 0x9f, 0xaf, 0xa3, 0xd8, 0xa0, 0x98, 0xa0, 0xd8, - 0xa0, 0x97, 0xa3, 0xd8, 0xa1, 0x98, 0xa1, 0xd8, 0xa1, 0x97, 0xa3, 0xd8, - 0xa1, 0x98, 0xa2, 0xd8, 0xa2, 0x97, 0xa3, 0xd8, 0xa2, 0x98, 0xa3, 0xd8, - 0xa3, 0x97, 0xa3, 0xd8, 0xa3, 0x98, 0xa3, 0xd8, 0xa3, 0x97, 0xa3, 0xd8, - 0xa4, 0x98, 0xa3, 0xd8, 0xa4, 0x97, 0xa3, 0xd8, 0xa5, 0x98, 0xa3, 0xd8, - 0xa5, 0x97, 0xa3, 0xd8, 0xa5, 0x98, 0xa3, 0xd8, 0xa6, 0x97, 0xa3, 0xd8, - 0xa6, 0x98, 0xa3, 0xd8, 0xa6, 0x97, 0xa3, 0xd8, 0xa7, 0x98, 0xa3, 0xd8, - 0xa7, 0x97, 0xa3, 0xd8, 0xa8, 0x98, 0xa3, 0xd8, 0xa8, 0x97, 0xa3, 0xd8, - 0xa8, 0x98, 0xa3, 0xd8, 0xa9, 0x97, 0xa3, 0xd8, 0xa9, 0x98, 0xa3, 0xd8, - 0xaa, 0x97, 0xa3, 0xd8, 0xaa, 0x98, 0xa3, 0xd8, 0xaa, 0x97, 0xa3, 0xd8, - 0xab, 0x98, 0xa3, 0xd8, 0xab, 0x97, 0xa3, 0xd8, 0xab, 0x98, 0xa3, 0xd8, - 0xac, 0x97, 0xa3, 0xd8, 0xac, 0x98, 0xa3, 0xd8, 0xac, 0x97, 0xa3, 0xd8, - 0xad, 0x98, 0xa3, 0xd8, 0xad, 0x97, 0xa3, 0xd8, 0xae, 0x98, 0xa3, 0xd8, - 0xae, 0x97, 0xa3, 0xd8, 0xae, 0x98, 0xa3, 0xd8, 0xaf, 0x97, 0xa3, 0xd8, - 0xaf, 0x98, 0xa3, 0xd8, 0xaf, 0x97, 0xa3, 0xd8, 0xb0, 0x98, 0xa3, 0xd8, - 0xb0, 0x97, 0xa3, 0xd8, 0xb0, 0x98, 0xa3, 0xd8, 0xb1, 0x97, 0xa3, 0xd8, - 0xb1, 0x98, 0xa3, 0xd8, 0xb2, 0x97, 0xa3, 0xd8, 0xb2, 0x98, 0xa3, 0xd8, - 0xb2, 0x97, 0xa3, 0xd8, 0xb3, 0x98, 0xa3, 0xd8, 0xb3, 0x97, 0xa3, 0xd8, - 0xb3, 0x98, 0xa3, 0xd8, 0xb4, 0x97, 0xa3, 0xd8, 0xb4, 0x98, 0xa3, 0xd8, - 0xb4, 0x97, 0xa3, 0xd8, 0xb5, 0x98, 0xa3, 0xd8, 0xb5, 0x97, 0xa3, 0xd8, - 0xb5, 0x98, 0xa3, 0xd8, 0xb6, 0x97, 0xa3, 0xd8, 0xb6, 0x98, 0xa3, 0xd8, - 0xb6, 0x97, 0xa3, 0xd8, 0xb7, 0x98, 0xa3, 0xd8, 0xb7, 0x97, 0xa3, 0xd8, - 0xb7, 0x98, 0xa3, 0xd8, 0xb8, 0x97, 0xa3, 0xd8, 0xb8, 0x98, 0xa3, 0xd8, - 0xb8, 0x97, 0xa3, 0xd8, 0xb9, 0x98, 0xa3, 0xd8, 0xb9, 0x97, 0xd0, 0xd8, - 0xb9, 0xb8, 0xd0, 0xd8, 0xba, 0xb5, 0xd0, 0xd8, 0xba, 0xb8, 0xd0, 0xd8, - 0xba, 0xb5, 0xd0, 0xd8, 0xbb, 0xb8, 0xd0, 0xd8, 0xbb, 0xb5, 0xd0, 0xd8, - 0xbb, 0xb8, 0xd0, 0xd8, 0xbc, 0xb5, 0xd0, 0xd8, 0xbc, 0xb8, 0xd0, 0xd8, - 0xbc, 0xb5, 0xd0, 0xd8, 0xbd, 0xb8, 0xd0, 0xd8, 0xbd, 0xb5, 0xd1, 0xd8, - 0xbd, 0xb3, 0xd0, 0xd8, 0xbe, 0xb5, 0xd1, 0xd8, 0xbe, 0xb3, 0xd0, 0xd8, - 0xbe, 0xb5, 0xd1, 0xd8, 0xbf, 0xb3, 0xd0, 0xd8, 0xbf, 0xb5, 0xd1, 0xd8, - 0xbf, 0xb3, 0xd0, 0xd8, 0xc0, 0xb5, 0xd1, 0xd8, 0xc0, 0xb3, 0xd0, 0xd8, - 0xc0, 0xb5, 0xd1, 0xd8, 0xc1, 0xb3, 0xd0, 0xd8, 0xc1, 0xb5, 0xd1, 0xd8, - 0xc1, 0xb3, 0xd0, 0xd8, 0xc1, 0xb5, 0xd1, 0xd8, 0xc2, 0xb3, 0xd0, 0xd8, - 0xc2, 0xb5, 0xd1, 0xd8, 0xc2, 0xb3, 0xd0, 0xd8, 0xc3, 0xb5, 0xd1, 0xd8, - 0xc3, 0xb3, 0xd0, 0xd8, 0xc3, 0xb5, 0xd1, 0xd8, 0xc4, 0xb3, 0xd0, 0xd8, - 0xc4, 0xb5, 0xd1, 0xd8, 0xc4, 0xb3, 0xd0, 0xd8, 0xc5, 0xb5, 0xd1, 0xd8, - 0xc5, 0xb3, 0xd0, 0xd8, 0xc5, 0xb5, 0xd1, 0xd8, 0xc6, 0xb3, 0xd0, 0xd8, - 0xc6, 0xb5, 0xd1, 0xd8, 0xc6, 0xb3, 0xd1, 0xd8, 0xc6, 0xb0, 0xd1, 0xd8, - 0xc7, 0xb3, 0xd1, 0xd8, 0xc7, 0xb0, 0xd1, 0xd8, 0xc7, 0xb3, 0xd1, 0xd8, - 0xc8, 0xb0, 0xd1, 0xd8, 0xc8, 0xb3, 0xd1, 0xd8, 0xc8, 0xb0, 0xd1, 0xd8, - 0xc9, 0xb3, 0xd1, 0xd8, 0xc9, 0xb0, 0xd1, 0xd8, 0xc9, 0xb3, 0xd1, 0xd8, - 0xc9, 0xb0, 0xd1, 0xd8, 0xca, 0xb3, 0xd1, 0xd8, 0xca, 0xb0, 0xd1, 0xd8, - 0xca, 0xb3, 0xd1, 0xd8, 0xcb, 0xb0, 0xd1, 0xd8, 0xcb, 0xb3, 0xd1, 0xd8, - 0xcb, 0xb0, 0xd1, 0xd8, 0xcc, 0xb3, 0xd1, 0xd8, 0xcc, 0xb0, 0xd1, 0xd8, - 0xcc, 0xb3, 0xd1, 0xd8, 0xcc, 0xb0, 0xd1, 0xd8, 0xcd, 0xaf, 0xd1, 0xd8, - 0xcd, 0xb0, 0xd1, 0xd8, 0xcd, 0xaf, 0xd1, 0xd8, 0xce, 0xb0, 0xd1, 0xd8, - 0xce, 0xaf, 0xd1, 0xd8, 0xce, 0xb0, 0xd1, 0xd8, 0xce, 0xaf, 0xd1, 0xd8, - 0xcf, 0xb0, 0xd1, 0xd8, 0xcf, 0xaf, 0xd1, 0xd8, 0xcf, 0xb0, 0xd1, 0xd8, - 0xd0, 0xaf, 0xd1, 0xd8, 0xd0, 0xb0, 0xd1, 0xd8, 0xd0, 0xaf, 0xd1, 0xd8, - 0xd0, 0xb0, 0xd1, 0xd8, 0xd1, 0xaf, 0xd1, 0xd8, 0xd1, 0xb0, 0xd1, 0xd8, - 0xd1, 0xaf, 0xd2, 0xd8, 0xd1, 0xaf, 0xd2, 0xd8, 0xd1, 0xaf, 0xd2, 0xd8, - 0xd1, 0xaf, 0xd2, 0xd8, 0xd1, 0xaf, 0xd3, 0xd8, 0xd1, 0xaf, 0xd3, 0xd8, - 0xd1, 0xaf, 0xd3, 0xd8, 0xd1, 0xaf, 0xd4, 0xd6, 0xd1, 0xaf, 0xd4, 0xd8, - 0xd1, 0xaf, 0xd4, 0xd6, 0xd1, 0xaf, 0xd4, 0xd8, 0xd1, 0xaf, 0xd5, 0xd6, - 0xd1, 0xaf, 0xd5, 0xd8, 0xd1, 0xaf, 0xd5, 0xd6, 0xd1, 0xaf, 0xd6, 0xd8, - 0xd1, 0xaf, 0xd6, 0xd6, 0xd1, 0xaf, 0xd6, 0xd8, 0xd1, 0xaf, 0xd6, 0xd6, - 0xd1, 0xaf, 0xd7, 0xd8, 0xd1, 0xaf, 0xd7, 0xd6, 0xd1, 0xaf, 0xd7, 0xd8, - 0xd1, 0xaf, 0xd7, 0xd6, 0xd1, 0xaf, 0xd8, 0xd8, 0xd1, 0xaf, 0xd8, 0xd6, - 0xd1, 0xaf, 0xd8, 0xd8, 0xd1, 0xaf, 0xd9, 0xd6, 0xd1, 0xaf, 0xd9, 0xd8, - 0xd1, 0xaf, 0xd9, 0xd6, 0xd1, 0xaf, 0xd9, 0xd8, 0xd1, 0xaf, 0xda, 0xd6, - 0xd1, 0xaf, 0xda, 0xd8, 0xd1, 0xaf, 0xda, 0xd6, 0xd1, 0xaf, 0xda, 0xd8, - 0xd1, 0xaf, 0xdb, 0xd6, 0xd1, 0xaf, 0xdb, 0xd8, 0xd1, 0xaf, 0xdb, 0xd6, - 0xd1, 0xaf, 0xdb, 0xd4, 0xd2, 0xaf, 0xdc, 0xd6, 0xd1, 0xaf, 0xdc, 0xd4, - 0xd2, 0xaf, 0xdc, 0xd6, 0xd1, 0xaf, 0xdd, 0xd4, 0xd2, 0xaf, 0xdd, 0xd6, - 0xd1, 0xaf, 0xdd, 0xd4, 0xd2, 0xaf, 0xdd, 0xd6, 0xd1, 0xaf, 0xde, 0xda, - 0xe9, 0xaf, 0xde, 0xd9, 0xe9, 0xaf, 0xde, 0xda, 0xe9, 0xaf, 0xde, 0xd9, - 0xe9, 0xaf, 0xdf, 0xda, 0xe9, 0xaf, 0xdf, 0xd9, 0xe9, 0xaf, 0xdf, 0xda, - 0xe9, 0xaf, 0xdf, 0xd9, 0xe9, 0xaf, 0xe0, 0xda, 0xe9, 0xaf, 0xe0, 0xd9, - 0xe9, 0xaf, 0xe0, 0xda, 0xe9, 0xaf, 0xe1, 0xd9, 0xe9, 0xaf, 0xe1, 0xda, - 0xe9, 0xaf, 0xe1, 0xd9, 0xe9, 0xaf, 0xe1, 0xda, 0xe9, 0xaf, 0xe2, 0xd9, - 0xe9, 0xaf, 0xe2, 0xda, 0xe9, 0xaf, 0xe2, 0xd9, 0xe9, 0xaf, 0xe2, 0xda, - 0xe9, 0xaf, 0xe3, 0xd9, 0xe9, 0xaf, 0xe3, 0xda, 0xe9, 0xaf, 0xe3, 0xd9, - 0xe9, 0xaf, 0xe3, 0xd8, 0xe9, 0xaf, 0xe4, 0xd9, 0xe9, 0xaf, 0xe4, 0xd8, - 0xe9, 0xaf, 0xe4, 0xd9, 0xe9, 0xaf, 0xe4, 0xd8, 0xe9, 0xaf, 0xe5, 0xd9, - 0xe9, 0xaf, 0xe5, 0xd8, 0xe9, 0xaf, 0xe5, 0xd9, 0xe9, 0xaf, 0xe5, 0xd8, - 0xe9, 0xaf, 0xe6, 0xd9, 0xe9, 0xaf, 0xe6, 0xd8, 0xe9, 0xaf, 0xe6, 0xd9, - 0xe9, 0xaf, 0xe6, 0xd8, 0xe9, 0xaf, 0xe7, 0xd9, 0xe9, 0xaf, 0xe7, 0xd8, - 0xe9, 0xaf, 0xe7, 0xd9, 0xe9, 0xaf, 0xe7, 0xd8, 0xe9, 0xaf, 0xe8, 0xd8, - 0xea, 0xaf, 0xe8, 0xd8, 0xe9, 0xaf, 0xe8, 0xd8, 0xea, 0xaf, 0xe8, 0xd8, - 0xe9, 0xaf, 0xe9, 0xd8, 0xea, 0xaf, 0xe9, 0xd8, 0xe9, 0xaf, 0xe9, 0xd8, - 0xea, 0xaf, 0xe9, 0xd8, 0xe9, 0xae, 0xe9, 0xd8, 0xea, 0xaf, 0xe9, 0xd8, - 0xea, 0xae, 0xe9, 0xd8, 0xea, 0xaf, 0xe9, 0xd8, 0xea, 0xae, 0xe9, 0xd8, - 0xeb, 0xaf, 0xe9, 0xd8, 0xeb, 0xae, 0xec, 0xd8, 0xeb, 0xb0, 0xed, 0xd8, - 0xeb, 0xaf, 0xec, 0xd8, 0xec, 0xb0, 0xed, 0xd8, 0xec, 0xaf, 0xec, 0xd8, - 0xec, 0xb0, 0xed, 0xd8, 0xec, 0xaf, 0xed, 0xd8, 0xec, 0xaf, 0xed, 0xd8, - 0xec, 0xaf, 0xed, 0xd8, 0xec, 0xaf, 0xed, 0xd8, 0xec, 0xaf, 0xed, 0xd8, - 0xec, 0xaf, 0xee, 0xd8, 0xec, 0xaf, 0xee, 0xd8, 0xec, 0xaf, 0xee, 0xd8, - 0xec, 0xaf, 0xee, 0xd8, 0xec, 0xaf, 0xef, 0xd8, 0xec, 0xaf, 0xef, 0xd8, - 0xec, 0xaf, 0xef, 0xd8, 0xec, 0xaf, 0xef, 0xd8, 0xec, 0xaf, 0xf0, 0xd8, - 0xec, 0xaf, 0xf0, 0xd8, 0xec, 0xaf, 0xf0, 0xd8, 0xec, 0xaf, 0xf0, 0xd8, - 0xec, 0xaf, 0xf1, 0xd6, 0xed, 0xaf, 0xf1, 0xd8, 0xec, 0xaf, 0xf1, 0xd6, - 0xed, 0xaf, 0xf1, 0xd8, 0xec, 0xaf, 0xf2, 0xd6, 0xed, 0xaf, 0xf2, 0xd8, - 0xec, 0xaf, 0xf2, 0xd6, 0xed, 0xaf, 0xf2, 0xd8, 0xec, 0xaf, 0xf2, 0xd6, - 0xed, 0xaf, 0xf3, 0xd8, 0xec, 0xaf, 0xf3, 0xd6, 0xed, 0xaf, 0xf3, 0xd8, - 0xec, 0xaf, 0xf3, 0xd6, 0xed, 0xaf, 0xf4, 0xd8, 0xec, 0xaf, 0xf4, 0xd6, - 0xed, 0xaf, 0xf4, 0xd8, 0xec, 0xaf, 0xf4, 0xd6, 0xed, 0xaf, 0xf5, 0xd8, - 0xec, 0xaf, 0xf5, 0xd6, 0xed, 0xaf, 0xf5, 0xd8, 0xec, 0xaf, 0xf5, 0xd6, - 0xed, 0xaf, 0xf5, 0xd8, 0xec, 0xaf, 0xf6, 0xd6, 0xed, 0xaf, 0xf6, 0xd8, - 0xec, 0xaf, 0xf6, 0xd6, 0xed, 0xaf, 0xf6, 0xd8, 0xec, 0xaf, 0xf7, 0xd6, - 0xed, 0xaf, 0xf7, 0xd8, 0xec, 0xaf, 0xf7, 0xd6, 0xed, 0xaf, 0xf7, 0xd8, - 0xec, 0xaf, 0xf8, 0xd6, 0xed, 0xaf, 0xf8, 0xd8, 0xec, 0xaf, 0xf8, 0xd6, - 0xed, 0xaf, 0xf8, 0xd4, 0xed, 0xaf, 0xf8, 0xd6, 0xed, 0xaf, 0xf9, 0xd4, - 0xed, 0xaf, 0xf9, 0xd6, 0xed, 0xaf, 0xf9, 0xd4, 0xed, 0xaf, 0xf9, 0xd6, - 0xed, 0xaf, 0xfa, 0xd4, 0xed, 0xaf, 0xfa, 0xd6, 0xed, 0xaf, 0xfa, 0xd4, - 0xed, 0xaf, 0xfa, 0xd6, 0xed, 0xaf, 0xfa, 0xd4, 0xed, 0xaf, 0xfb, 0xc7, - 0xf7, 0xaf, 0xfb, 0xc7, 0xf7, 0xaf, 0xfb, 0xc7, 0xf7, 0xaf, 0xfb, 0xc7, - 0xf7, 0xaf, 0xfc, 0xc7, 0xf7, 0xaf, 0xfc, 0xc7, 0xf7, 0xaf, 0xfc, 0xc7, - 0xf7, 0xaf, 0xfc, 0xc7, 0xf7, 0xaf, 0xfc, 0xc7, 0xf7, 0xaf, 0xfd, 0xc7, - 0xf7, 0xaf, 0xfd, 0xc7, 0xf7, 0xaf, 0xfd, 0xc7, 0xf7, 0xaf, 0xfd, 0xc7, - 0xf7, 0xaf, 0xfe, 0xc7, 0xf7, 0xaf, 0xfe, 0xc7, 0xf7, 0xaf, 0xfe, 0xc7, - 0xf7, 0xaf, 0xfe, 0xc7, 0xf7, 0xaf, 0xfe, 0xc7, 0xf7, 0xaf, 0xff, 0xc7, - 0xf7, 0xaf, 0xff, 0xc7, 0xf7, 0xaf, 0x03, 0xdf, 0x89, 0xaf, 0x0a, 0xdd, - 0x8a, 0xaf, 0x0f, 0xdf, 0x89, 0xaf, 0x14, 0xdd, 0x8a, 0xaf, 0x17, 0xdf, - 0x89, 0xaf, 0x1b, 0xdd, 0x8a, 0xaf, 0x1e, 0xdf, 0x89, 0xaf, 0x20, 0xdd, - 0x8a, 0xaf, 0x23, 0xdf, 0x89, 0xaf, 0x25, 0xdd, 0x8a, 0xaf, 0x27, 0xdc, - 0x8a, 0xaf, 0x29, 0xdd, 0x8a, 0xaf, 0x2b, 0xdc, 0x8a, 0xaf, 0x2d, 0xdd, - 0x8a, 0xaf, 0x2f, 0xdc, 0x8a, 0xaf, 0x31, 0xdd, 0x8a, 0xaf, 0x32, 0xdc, - 0x8a, 0xaf, 0x34, 0xdd, 0x8a, 0xaf, 0x35, 0xdc, 0x8a, 0xaf, 0x37, 0xdd, - 0x8a, 0xaf, 0x38, 0xdc, 0x8a, 0xaf, 0x3a, 0xdd, 0x8a, 0xaf, 0x3b, 0xdc, - 0x8a, 0xaf, 0x3c, 0xdd, 0x8a, 0xaf, 0x3e, 0xdc, 0x8a, 0xaf, 0x3f, 0xdd, - 0x8a, 0xaf, 0x40, 0xdc, 0x8a, 0xaf, 0x42, 0xdd, 0x8a, 0xaf, 0x43, 0xdc, - 0x8a, 0xaf, 0x44, 0xdd, 0x8a, 0xaf, 0x45, 0xdc, 0x8a, 0xaf, 0x46, 0xdd, - 0x8a, 0xaf, 0x47, 0xdc, 0x8a, 0xaf, 0x48, 0xdd, 0x8a, 0xaf, 0x49, 0xdc, - 0x8a, 0xaf, 0x4a, 0xdd, 0x8a, 0xaf, 0x4b, 0xdc, 0x8a, 0xaf, 0x4c, 0xdd, - 0x8a, 0xaf, 0x4d, 0xdc, 0x8a, 0xaf, 0x4e, 0xda, 0x8b, 0xaf, 0x4f, 0xdc, - 0x8a, 0xaf, 0x50, 0xda, 0x8b, 0xaf, 0x51, 0xdc, 0x8a, 0xaf, 0x52, 0xda, - 0x8b, 0xaf, 0x53, 0xdc, 0x8a, 0xaf, 0x54, 0xda, 0x8b, 0xaf, 0x55, 0xdc, - 0x8a, 0xaf, 0x56, 0xda, 0x8b, 0xaf, 0x57, 0xdc, 0x8a, 0xaf, 0x58, 0xda, - 0x8b, 0xaf, 0x58, 0xdc, 0x8a, 0xaf, 0x59, 0xda, 0x8b, 0xaf, 0x5a, 0xdc, - 0x8a, 0xaf, 0x5b, 0xda, 0x8b, 0xaf, 0x5c, 0xdc, 0x8a, 0xaf, 0x5d, 0xda, - 0x8b, 0xaf, 0x5d, 0xdc, 0x8a, 0xaf, 0x5e, 0xda, 0x8b, 0xaf, 0x5f, 0xdc, - 0x8a, 0xaf, 0x60, 0xda, 0x8b, 0xaf, 0x60, 0xdc, 0x8a, 0xaf, 0x61, 0xda, - 0x8b, 0xaf, 0x62, 0xdc, 0x8a, 0xaf, 0x63, 0xda, 0x8b, 0xaf, 0x63, 0xdc, - 0x8a, 0xaf, 0x64, 0xda, 0x8b, 0xaf, 0x65, 0xdc, 0x8a, 0xaf, 0x66, 0xda, - 0x8b, 0xaf, 0x66, 0xdc, 0x8a, 0xaf, 0x67, 0xda, 0x8b, 0xaf, 0x68, 0xdc, - 0x8a, 0xaf, 0x68, 0xda, 0x8b, 0xaf, 0x69, 0xdc, 0x8a, 0xaf, 0x6a, 0xda, - 0x8b, 0xaf, 0x6a, 0xdc, 0x8a, 0xaf, 0x6b, 0xda, 0x8b, 0xaf, 0x6c, 0xdc, - 0x8a, 0xaf, 0x6c, 0xda, 0x8b, 0xaf, 0x6d, 0xdc, 0x8a, 0xaf, 0x6e, 0xda, - 0x8b, 0xaf, 0x6e, 0xdc, 0x8a, 0xaf, 0x6f, 0xda, 0x8b, 0xaf, 0x70, 0xdc, - 0x8a, 0xaf, 0x70, 0xda, 0x8b, 0xaf, 0x71, 0xd8, 0x8b, 0xaf, 0x72, 0xda, - 0x8b, 0xaf, 0x72, 0xd8, 0x8b, 0xaf, 0x73, 0xda, 0x8b, 0xaf, 0x73, 0xd8, - 0x8b, 0xaf, 0x74, 0xda, 0x8b, 0xaf, 0x75, 0xd8, 0x8b, 0xaf, 0x75, 0xda, - 0x8b, 0xaf, 0x76, 0xd8, 0x8b, 0xaf, 0x76, 0xda, 0x8b, 0xaf, 0x77, 0xd8, - 0x8b, 0xaf, 0x78, 0xda, 0x8b, 0xaf, 0x78, 0xd8, 0x8b, 0xaf, 0x79, 0xda, - 0x8b, 0xaf, 0x79, 0xd8, 0x8b, 0xaf, 0x7a, 0xda, 0x8b, 0xaf, 0x7a, 0xd8, - 0x8b, 0xaf, 0x7b, 0xda, 0x8b, 0xaf, 0x7c, 0xd8, 0x8b, 0xaf, 0x7c, 0xda, - 0x8b, 0xaf, 0x7d, 0xd8, 0x8b, 0xaf, 0x7d, 0xda, 0x8b, 0xaf, 0x7e, 0xd8, - 0x8b, 0xaf, 0x7e, 0xda, 0x8b, 0xaf, 0x7f, 0xd8, 0x8b, 0xaf, 0x7f, 0xda, - 0x8b, 0xaf, 0x80, 0xd8, 0x8b, 0xaf, 0x81, 0xda, 0x8b, 0xaf, 0x81, 0xd8, - 0x8b, 0xaf, 0x82, 0xda, 0x8b, 0xaf, 0x82, 0xd8, 0x8b, 0xaf, 0x83, 0xda, - 0x8b, 0xaf, 0x83, 0xd8, 0x8b, 0xaf, 0x84, 0xda, 0x8b, 0xaf, 0x84, 0xd8, - 0x8b, 0xaf, 0x85, 0xda, 0x8b, 0xaf, 0x85, 0xd8, 0x8b, 0xaf, 0x86, 0xda, - 0x8b, 0xaf, 0x86, 0xd8, 0x8b, 0xaf, 0x87, 0xda, 0x8b, 0xaf, 0x87, 0xd8, - 0x8b, 0xaf, 0x88, 0xd8, 0x8c, 0xaf, 0x88, 0xd8, 0x8b, 0xaf, 0x89, 0xd8, - 0x8c, 0xaf, 0x89, 0xd8, 0x8b, 0xaf, 0x8a, 0xd8, 0x8c, 0xaf, 0x8a, 0xd8, - 0x8b, 0xaf, 0x8b, 0xd8, 0x8c, 0xaf, 0x8b, 0xd8, 0x8b, 0xae, 0x8b, 0xd8, - 0x8c, 0xaf, 0x8b, 0xd8, 0x8c, 0xae, 0x8b, 0xd8, 0x8d, 0xaf, 0x8b, 0xd8, - 0x8d, 0xae, 0x8b, 0xd8, 0x8e, 0xaf, 0x8b, 0xd8, 0x8e, 0xae, 0x8b, 0xd8, - 0x8e, 0xaf, 0x8b, 0xd8, 0x8f, 0xae, 0x8b, 0xd8, 0x8f, 0xaf, 0x8b, 0xd8, - 0x90, 0xae, 0x8b, 0xd8, 0x90, 0xaf, 0x8b, 0xd8, 0x91, 0xae, 0x8b, 0xd8, - 0x91, 0xaf, 0x8b, 0xd8, 0x92, 0xae, 0x8b, 0xd8, 0x92, 0xaf, 0x8b, 0xd8, - 0x93, 0xae, 0x8c, 0xd8, 0x93, 0xab, 0x8b, 0xd8, 0x94, 0xae, 0x8c, 0xd8, - 0x94, 0xab, 0x8b, 0xd8, 0x94, 0xae, 0x8c, 0xd8, 0x95, 0xab, 0x8b, 0xd8, - 0x95, 0xae, 0x8c, 0xd8, 0x96, 0xab, 0x8b, 0xd8, 0x96, 0xae, 0x8c, 0xd8, - 0x97, 0xab, 0x8b, 0xd8, 0x97, 0xae, 0x8c, 0xd8, 0x98, 0xab, 0x8b, 0xd8, - 0x98, 0xae, 0x8c, 0xd8, 0x98, 0xab, 0x8b, 0xd8, 0x99, 0xae, 0x8c, 0xd8, - 0x99, 0xab, 0x8b, 0xd8, 0x9a, 0xae, 0x8c, 0xd8, 0x9a, 0xab, 0x8b, 0xd8, - 0x9a, 0xae, 0x8c, 0xd8, 0x9b, 0xab, 0x8b, 0xd8, 0x9b, 0xae, 0x8c, 0xd8, - 0x9c, 0xab, 0x8b, 0xd8, 0x9c, 0xae, 0x8c, 0xd8, 0x9d, 0xab, 0x8b, 0xd8, - 0x9d, 0xae, 0x8c, 0xd8, 0x9d, 0xab, 0x8b, 0xd8, 0x9e, 0xae, 0x8c, 0xd8, - 0x9e, 0xab, 0x8b, 0xd8, 0x9f, 0xae, 0x8c, 0xd8, 0x9f, 0xab, 0x8b, 0xd8, - 0x9f, 0xae, 0x8c, 0xd8, 0xa0, 0xab, 0xa1, 0xd8, 0xa0, 0x97, 0xa1, 0xd8, - 0xa1, 0x97, 0xa1, 0xd8, 0xa1, 0x97, 0xa1, 0xd8, 0xa1, 0x97, 0xa2, 0xd8, - 0xa2, 0x97, 0xa2, 0xd8, 0xa2, 0x97, 0xa3, 0xd8, 0xa3, 0x97, 0xa3, 0xd8, - 0xa3, 0x97, 0xa3, 0xd8, 0xa3, 0x97, 0xa3, 0xd8, 0xa4, 0x97, 0xa3, 0xd8, - 0xa4, 0x97, 0xa3, 0xd8, 0xa5, 0x97, 0xa3, 0xd8, 0xa5, 0x97, 0xa3, 0xd8, - 0xa5, 0x97, 0xa3, 0xd8, 0xa6, 0x97, 0xa3, 0xd8, 0xa6, 0x97, 0xa3, 0xd8, - 0xa6, 0x97, 0xa3, 0xd8, 0xa7, 0x97, 0xa3, 0xd8, 0xa7, 0x97, 0xa3, 0xd8, - 0xa8, 0x97, 0xa3, 0xd8, 0xa8, 0x97, 0xa3, 0xd8, 0xa8, 0x97, 0xa3, 0xd8, - 0xa9, 0x97, 0xa3, 0xd8, 0xa9, 0x97, 0xa3, 0xd8, 0xaa, 0x97, 0xa3, 0xd8, - 0xaa, 0x97, 0xa3, 0xd8, 0xaa, 0x97, 0xa3, 0xd8, 0xab, 0x97, 0xa3, 0xd8, - 0xab, 0x97, 0xa3, 0xd8, 0xab, 0x97, 0xa3, 0xd8, 0xac, 0x97, 0xa3, 0xd8, - 0xac, 0x97, 0xa3, 0xd8, 0xac, 0x97, 0xa3, 0xd8, 0xad, 0x97, 0xa3, 0xd8, - 0xad, 0x97, 0xa3, 0xd8, 0xae, 0x97, 0xa3, 0xd8, 0xae, 0x97, 0xa3, 0xd8, - 0xae, 0x97, 0xa3, 0xd8, 0xaf, 0x97, 0xa3, 0xd8, 0xaf, 0x97, 0xa3, 0xd8, - 0xaf, 0x97, 0xa3, 0xd8, 0xb0, 0x97, 0xa3, 0xd8, 0xb0, 0x97, 0xa3, 0xd8, - 0xb0, 0x97, 0xa3, 0xd8, 0xb1, 0x97, 0xa3, 0xd8, 0xb1, 0x97, 0xa3, 0xd8, - 0xb2, 0x97, 0xa3, 0xd8, 0xb2, 0x97, 0xa3, 0xd8, 0xb2, 0x97, 0xa3, 0xd8, - 0xb3, 0x97, 0xa3, 0xd8, 0xb3, 0x97, 0xa3, 0xd8, 0xb3, 0x97, 0xa3, 0xd8, - 0xb4, 0x97, 0xa3, 0xd8, 0xb4, 0x97, 0xa3, 0xd8, 0xb4, 0x97, 0xa3, 0xd8, - 0xb5, 0x97, 0xa3, 0xd8, 0xb5, 0x97, 0xa3, 0xd8, 0xb5, 0x97, 0xa3, 0xd8, - 0xb6, 0x97, 0xa3, 0xd8, 0xb6, 0x97, 0xa3, 0xd8, 0xb6, 0x97, 0xa3, 0xd8, - 0xb7, 0x97, 0xa3, 0xd8, 0xb7, 0x97, 0xa3, 0xd8, 0xb7, 0x97, 0xa3, 0xd8, - 0xb8, 0x97, 0xa3, 0xd8, 0xb8, 0x97, 0xa3, 0xd8, 0xb8, 0x97, 0xa3, 0xd8, - 0xb9, 0x97, 0xa3, 0xd8, 0xb9, 0x97, 0xd0, 0xd8, 0xb9, 0xb8, 0xd0, 0xd8, - 0xba, 0xb5, 0xd0, 0xd8, 0xba, 0xb8, 0xd0, 0xd8, 0xba, 0xb5, 0xd1, 0xd8, - 0xbb, 0xb2, 0xd0, 0xd8, 0xbb, 0xb5, 0xd1, 0xd8, 0xbb, 0xb2, 0xd0, 0xd8, - 0xbc, 0xb5, 0xd1, 0xd8, 0xbc, 0xb2, 0xd0, 0xd8, 0xbc, 0xb5, 0xd1, 0xd8, - 0xbd, 0xb2, 0xd0, 0xd8, 0xbd, 0xb5, 0xd1, 0xd8, 0xbd, 0xb2, 0xd0, 0xd8, - 0xbe, 0xb5, 0xd1, 0xd8, 0xbe, 0xb2, 0xd0, 0xd8, 0xbe, 0xb5, 0xd1, 0xd8, - 0xbf, 0xb2, 0xd0, 0xd8, 0xbf, 0xb5, 0xd1, 0xd8, 0xbf, 0xb2, 0xd0, 0xd8, - 0xc0, 0xb5, 0xd1, 0xd8, 0xc0, 0xb2, 0xd0, 0xd8, 0xc0, 0xb5, 0xd1, 0xd8, - 0xc1, 0xb2, 0xd0, 0xd8, 0xc1, 0xb5, 0xd1, 0xd8, 0xc1, 0xb2, 0xd0, 0xd8, - 0xc1, 0xb5, 0xd1, 0xd8, 0xc2, 0xb2, 0xd0, 0xd8, 0xc2, 0xb5, 0xd1, 0xd8, - 0xc2, 0xb2, 0xd0, 0xd8, 0xc3, 0xb5, 0xd1, 0xd8, 0xc3, 0xb2, 0xd0, 0xd8, - 0xc3, 0xb5, 0xd1, 0xd8, 0xc4, 0xb2, 0xd0, 0xd8, 0xc4, 0xb5, 0xd1, 0xd8, - 0xc4, 0xb2, 0xd0, 0xd8, 0xc5, 0xb5, 0xd1, 0xd8, 0xc5, 0xb2, 0xd0, 0xd8, - 0xc5, 0xb5, 0xd1, 0xd8, 0xc6, 0xb2, 0xd0, 0xd8, 0xc6, 0xb5, 0xd1, 0xd8, - 0xc6, 0xb2, 0xd1, 0xd8, 0xc6, 0xaf, 0xd1, 0xd8, 0xc7, 0xb2, 0xd1, 0xd8, - 0xc7, 0xaf, 0xd1, 0xd8, 0xc7, 0xb2, 0xd1, 0xd8, 0xc8, 0xaf, 0xd1, 0xd8, - 0xc8, 0xb2, 0xd1, 0xd8, 0xc8, 0xaf, 0xd1, 0xd8, 0xc9, 0xb2, 0xd1, 0xd8, - 0xc9, 0xaf, 0xd1, 0xd8, 0xc9, 0xb2, 0xd1, 0xd8, 0xc9, 0xaf, 0xd1, 0xd8, - 0xca, 0xb2, 0xd1, 0xd8, 0xca, 0xaf, 0xd1, 0xd8, 0xca, 0xb2, 0xd1, 0xd8, - 0xcb, 0xaf, 0xd1, 0xd8, 0xcb, 0xb2, 0xd1, 0xd8, 0xcb, 0xaf, 0xd1, 0xd8, - 0xcc, 0xb2, 0xd1, 0xd8, 0xcc, 0xaf, 0xd1, 0xd8, 0xcc, 0xb2, 0xd1, 0xd8, - 0xcc, 0xaf, 0xd1, 0xd8, 0xcd, 0xb2, 0xd1, 0xd8, 0xcd, 0xaf, 0xd1, 0xd8, - 0xcd, 0xb2, 0xd1, 0xd8, 0xce, 0xaf, 0xd1, 0xd8, 0xce, 0xb2, 0xd1, 0xd8, - 0xce, 0xaf, 0xd1, 0xd8, 0xce, 0xb2, 0xd1, 0xd8, 0xcf, 0xaf, 0xd1, 0xd8, - 0xcf, 0xaf, 0xd1, 0xd8, 0xcf, 0xaf, 0xd1, 0xd8, 0xd0, 0xaf, 0xd1, 0xd8, - 0xd0, 0xaf, 0xd1, 0xd8, 0xd0, 0xaf, 0xd1, 0xd8, 0xd0, 0xaf, 0xd1, 0xd8, - 0xd1, 0xaf, 0xd1, 0xd7, 0xd1, 0xaf, 0xd1, 0xd8, 0xd1, 0xaf, 0xd2, 0xd7, - 0xd1, 0xaf, 0xd2, 0xd8, 0xd1, 0xaf, 0xd2, 0xd7, 0xd1, 0xaf, 0xd2, 0xd8, - 0xd1, 0xaf, 0xd3, 0xd7, 0xd1, 0xaf, 0xd3, 0xd8, 0xd1, 0xaf, 0xd3, 0xd7, - 0xd1, 0xaf, 0xd4, 0xd6, 0xd1, 0xaf, 0xd4, 0xd7, 0xd1, 0xaf, 0xd4, 0xd6, - 0xd1, 0xaf, 0xd4, 0xd7, 0xd1, 0xaf, 0xd5, 0xd6, 0xd1, 0xaf, 0xd5, 0xd7, - 0xd1, 0xaf, 0xd5, 0xd6, 0xd1, 0xaf, 0xd6, 0xd7, 0xd1, 0xaf, 0xd6, 0xd6, - 0xd1, 0xaf, 0xd6, 0xd7, 0xd1, 0xaf, 0xd6, 0xd6, 0xd1, 0xaf, 0xd7, 0xd7, - 0xd1, 0xaf, 0xd7, 0xd6, 0xd1, 0xaf, 0xd7, 0xd7, 0xd1, 0xaf, 0xd7, 0xd6, - 0xd1, 0xaf, 0xd8, 0xd7, 0xd1, 0xaf, 0xd8, 0xd6, 0xd1, 0xaf, 0xd8, 0xd7, - 0xd1, 0xaf, 0xd9, 0xd6, 0xd1, 0xaf, 0xd9, 0xd7, 0xd1, 0xaf, 0xd9, 0xd6, - 0xd1, 0xaf, 0xd9, 0xd7, 0xd1, 0xaf, 0xda, 0xd6, 0xd1, 0xaf, 0xda, 0xd7, - 0xd1, 0xaf, 0xda, 0xd6, 0xd1, 0xaf, 0xda, 0xd7, 0xd1, 0xaf, 0xdb, 0xd6, - 0xd1, 0xaf, 0xdb, 0xd7, 0xd1, 0xaf, 0xdb, 0xd6, 0xd1, 0xaf, 0xdb, 0xd5, - 0xd2, 0xaf, 0xdc, 0xd6, 0xd1, 0xaf, 0xdc, 0xd5, 0xd2, 0xaf, 0xdc, 0xd6, - 0xd1, 0xaf, 0xdd, 0xd5, 0xd2, 0xaf, 0xdd, 0xd6, 0xd1, 0xaf, 0xdd, 0xd5, - 0xd2, 0xaf, 0xdd, 0xd6, 0xd1, 0xaf, 0xde, 0xdb, 0xe9, 0xaf, 0xde, 0xd9, - 0xe9, 0xaf, 0xde, 0xdb, 0xe9, 0xaf, 0xde, 0xd9, 0xe9, 0xaf, 0xdf, 0xdb, - 0xe9, 0xaf, 0xdf, 0xd9, 0xe9, 0xaf, 0xdf, 0xdb, 0xe9, 0xaf, 0xdf, 0xd9, - 0xe9, 0xaf, 0xe0, 0xdb, 0xe9, 0xaf, 0xe0, 0xd9, 0xe9, 0xaf, 0xe0, 0xdb, - 0xe9, 0xaf, 0xe1, 0xd9, 0xe9, 0xaf, 0xe1, 0xdb, 0xe9, 0xaf, 0xe1, 0xd9, - 0xe9, 0xaf, 0xe1, 0xdb, 0xe9, 0xaf, 0xe2, 0xd9, 0xe9, 0xaf, 0xe2, 0xdb, - 0xe9, 0xaf, 0xe2, 0xd9, 0xe9, 0xaf, 0xe2, 0xdb, 0xe9, 0xaf, 0xe3, 0xd9, - 0xe9, 0xaf, 0xe3, 0xdb, 0xe9, 0xaf, 0xe3, 0xd9, 0xe9, 0xaf, 0xe3, 0xd8, - 0xe9, 0xaf, 0xe4, 0xd9, 0xe9, 0xaf, 0xe4, 0xd8, 0xe9, 0xaf, 0xe4, 0xd9, - 0xe9, 0xaf, 0xe4, 0xd8, 0xe9, 0xaf, 0xe5, 0xd9, 0xe9, 0xaf, 0xe5, 0xd8, - 0xe9, 0xaf, 0xe5, 0xd9, 0xe9, 0xaf, 0xe5, 0xd8, 0xe9, 0xaf, 0xe6, 0xd9, - 0xe9, 0xaf, 0xe6, 0xd8, 0xe9, 0xaf, 0xe6, 0xd9, 0xe9, 0xaf, 0xe6, 0xd8, - 0xe9, 0xaf, 0xe7, 0xd9, 0xe9, 0xaf, 0xe7, 0xd8, 0xe9, 0xaf, 0xe7, 0xd9, - 0xe9, 0xaf, 0xe7, 0xd8, 0xe9, 0xaf, 0xe8, 0xd9, 0xe9, 0xaf, 0xe8, 0xd8, - 0xe9, 0xaf, 0xe8, 0xd9, 0xe9, 0xaf, 0xe8, 0xd8, 0xe9, 0xaf, 0xe9, 0xd8, - 0xea, 0xaf, 0xe9, 0xd8, 0xe9, 0xaf, 0xe9, 0xd8, 0xea, 0xaf, 0xe9, 0xd8, - 0xe9, 0xae, 0xe9, 0xd8, 0xea, 0xaf, 0xe9, 0xd8, 0xea, 0xae, 0xe9, 0xd8, - 0xea, 0xaf, 0xe9, 0xd8, 0xea, 0xae, 0xe9, 0xd8, 0xeb, 0xaf, 0xe9, 0xd8, - 0xeb, 0xae, 0xec, 0xd8, 0xeb, 0xaf, 0xed, 0xd8, 0xeb, 0xaf, 0xec, 0xd8, - 0xec, 0xaf, 0xed, 0xd8, 0xec, 0xaf, 0xec, 0xd8, 0xec, 0xaf, 0xed, 0xd8, - 0xec, 0xaf, 0xec, 0xd7, 0xec, 0xaf, 0xed, 0xd8, 0xec, 0xaf, 0xed, 0xd7, - 0xec, 0xaf, 0xed, 0xd8, 0xec, 0xaf, 0xed, 0xd7, 0xec, 0xaf, 0xee, 0xd8, - 0xec, 0xaf, 0xee, 0xd7, 0xec, 0xaf, 0xee, 0xd8, 0xec, 0xaf, 0xee, 0xd7, - 0xec, 0xaf, 0xef, 0xd8, 0xec, 0xaf, 0xef, 0xd7, 0xec, 0xaf, 0xef, 0xd8, - 0xec, 0xaf, 0xef, 0xd7, 0xec, 0xaf, 0xf0, 0xd8, 0xec, 0xaf, 0xf0, 0xd7, - 0xec, 0xaf, 0xf0, 0xd8, 0xec, 0xaf, 0xf0, 0xd7, 0xec, 0xaf, 0xf1, 0xd6, - 0xed, 0xaf, 0xf1, 0xd7, 0xec, 0xaf, 0xf1, 0xd6, 0xed, 0xaf, 0xf1, 0xd7, - 0xec, 0xaf, 0xf2, 0xd6, 0xed, 0xaf, 0xf2, 0xd7, 0xec, 0xaf, 0xf2, 0xd6, - 0xed, 0xaf, 0xf2, 0xd7, 0xec, 0xaf, 0xf2, 0xd6, 0xed, 0xaf, 0xf3, 0xd7, - 0xec, 0xaf, 0xf3, 0xd6, 0xed, 0xaf, 0xf3, 0xd7, 0xec, 0xaf, 0xf3, 0xd6, - 0xed, 0xaf, 0xf4, 0xd7, 0xec, 0xaf, 0xf4, 0xd6, 0xed, 0xaf, 0xf4, 0xd7, - 0xec, 0xaf, 0xf4, 0xd6, 0xed, 0xaf, 0xf5, 0xd7, 0xec, 0xaf, 0xf5, 0xd6, - 0xed, 0xaf, 0xf5, 0xd7, 0xec, 0xaf, 0xf5, 0xd6, 0xed, 0xaf, 0xf5, 0xd7, - 0xec, 0xaf, 0xf6, 0xd6, 0xed, 0xaf, 0xf6, 0xd7, 0xec, 0xaf, 0xf6, 0xd6, - 0xed, 0xaf, 0xf6, 0xd7, 0xec, 0xaf, 0xf7, 0xd6, 0xed, 0xaf, 0xf7, 0xd7, - 0xec, 0xaf, 0xf7, 0xd6, 0xed, 0xaf, 0xf7, 0xd7, 0xec, 0xaf, 0xf8, 0xd6, - 0xed, 0xaf, 0xf8, 0xd7, 0xec, 0xaf, 0xf8, 0xd6, 0xed, 0xaf, 0xf8, 0xd7, - 0xec, 0xaf, 0xf8, 0xd6, 0xed, 0xaf, 0xf9, 0xd7, 0xec, 0xaf, 0xf9, 0xd6, - 0xed, 0xaf, 0xf9, 0xd7, 0xec, 0xaf, 0xf9, 0xd6, 0xed, 0xaf, 0xfa, 0xd7, - 0xec, 0xaf, 0xfa, 0xd6, 0xed, 0xaf, 0xfa, 0xd7, 0xec, 0xaf, 0xfa, 0xd6, - 0xed, 0xaf, 0xfa, 0xd7, 0xec, 0xaf, 0xfb, 0xd6, 0xed, 0xaf, 0xfb, 0xd7, - 0xec, 0xaf, 0xfb, 0xd6, 0xed, 0xaf, 0xfb, 0xc7, 0xf7, 0xaf, 0xfc, 0xc7, - 0xf7, 0xaf, 0xfc, 0xc7, 0xf7, 0xaf, 0xfc, 0xc7, 0xf7, 0xaf, 0xfc, 0xc7, - 0xf7, 0xaf, 0xfc, 0xc7, 0xf7, 0xaf, 0xfd, 0xc7, 0xf7, 0xaf, 0xfd, 0xc7, - 0xf7, 0xaf, 0xfd, 0xc7, 0xf7, 0xaf, 0xfd, 0xc7, 0xf7, 0xaf, 0xfe, 0xc7, - 0xf7, 0xaf, 0xfe, 0xc7, 0xf7, 0xaf, 0xfe, 0xc7, 0xf7, 0xaf, 0xfe, 0xc7, - 0xf7, 0xaf, 0xfe, 0xc7, 0xf7, 0xaf, 0xff, 0xc7, 0xf7, 0xaf, 0xff, 0xc7, - 0xf7, 0xaf, 0x03, 0xdb, 0x8a, 0xb0, 0x0a, 0xdd, 0x8a, 0xb0, 0x0f, 0xdb, - 0x8a, 0xb0, 0x14, 0xdd, 0x8a, 0xb0, 0x17, 0xdb, 0x8a, 0xb0, 0x1b, 0xdd, - 0x8a, 0xb0, 0x1e, 0xdb, 0x8a, 0xb0, 0x20, 0xdd, 0x8a, 0xb0, 0x23, 0xdb, - 0x8a, 0xb0, 0x25, 0xdd, 0x8a, 0xb0, 0x27, 0xdb, 0x8a, 0xb0, 0x29, 0xdd, - 0x8a, 0xb0, 0x2b, 0xdb, 0x8a, 0xb0, 0x2d, 0xdd, 0x8a, 0xb0, 0x2f, 0xdb, - 0x8a, 0xb0, 0x31, 0xdd, 0x8a, 0xb0, 0x32, 0xdb, 0x8a, 0xb0, 0x34, 0xdd, - 0x8a, 0xb0, 0x35, 0xdb, 0x8a, 0xb0, 0x37, 0xdd, 0x8a, 0xb0, 0x38, 0xdb, - 0x8a, 0xb0, 0x3a, 0xdd, 0x8a, 0xb0, 0x3b, 0xdb, 0x8a, 0xb0, 0x3c, 0xdd, - 0x8a, 0xb0, 0x3e, 0xdb, 0x8a, 0xb0, 0x3f, 0xdd, 0x8a, 0xb0, 0x40, 0xdb, - 0x8a, 0xb0, 0x42, 0xdd, 0x8a, 0xb0, 0x43, 0xdb, 0x8a, 0xb0, 0x44, 0xdd, - 0x8a, 0xb0, 0x45, 0xdb, 0x8a, 0xb0, 0x46, 0xdd, 0x8a, 0xb0, 0x47, 0xdb, - 0x8a, 0xb0, 0x48, 0xdd, 0x8a, 0xb0, 0x49, 0xdb, 0x8a, 0xb0, 0x4a, 0xdd, - 0x8a, 0xb0, 0x4b, 0xdb, 0x8a, 0xb0, 0x4c, 0xdd, 0x8a, 0xb0, 0x4d, 0xdb, - 0x8a, 0xb0, 0x4e, 0xdd, 0x8a, 0xb0, 0x4f, 0xdb, 0x8a, 0xb0, 0x50, 0xdd, - 0x8a, 0xb0, 0x51, 0xdb, 0x8a, 0xb0, 0x52, 0xdd, 0x8a, 0xb0, 0x53, 0xdb, - 0x8a, 0xb0, 0x54, 0xdd, 0x8a, 0xb0, 0x55, 0xdb, 0x8a, 0xb0, 0x56, 0xdd, - 0x8a, 0xb0, 0x57, 0xdb, 0x8a, 0xb0, 0x58, 0xdd, 0x8a, 0xb0, 0x58, 0xdb, - 0x8a, 0xb0, 0x59, 0xdd, 0x8a, 0xb0, 0x5a, 0xdb, 0x8a, 0xb0, 0x5b, 0xdd, - 0x8a, 0xb0, 0x5c, 0xdb, 0x8a, 0xb0, 0x5d, 0xdd, 0x8a, 0xb0, 0x5d, 0xdb, - 0x8a, 0xb0, 0x5e, 0xdd, 0x8a, 0xb0, 0x5f, 0xdb, 0x8a, 0xb0, 0x60, 0xda, - 0x8b, 0xb0, 0x60, 0xdb, 0x8a, 0xb0, 0x61, 0xda, 0x8b, 0xb0, 0x62, 0xdb, - 0x8a, 0xb0, 0x63, 0xda, 0x8b, 0xb0, 0x63, 0xdb, 0x8a, 0xb0, 0x64, 0xda, - 0x8b, 0xb0, 0x65, 0xdb, 0x8a, 0xb0, 0x66, 0xda, 0x8b, 0xb0, 0x66, 0xdb, - 0x8a, 0xb0, 0x67, 0xda, 0x8b, 0xb0, 0x68, 0xdb, 0x8a, 0xb0, 0x68, 0xda, - 0x8b, 0xb0, 0x69, 0xdb, 0x8a, 0xb0, 0x6a, 0xda, 0x8b, 0xb0, 0x6a, 0xdb, - 0x8a, 0xb0, 0x6b, 0xda, 0x8b, 0xb0, 0x6c, 0xdb, 0x8a, 0xb0, 0x6c, 0xda, - 0x8b, 0xb0, 0x6d, 0xdb, 0x8a, 0xb0, 0x6e, 0xda, 0x8b, 0xb0, 0x6e, 0xdb, - 0x8a, 0xb0, 0x6f, 0xda, 0x8b, 0xb0, 0x70, 0xdb, 0x8a, 0xb0, 0x70, 0xda, - 0x8b, 0xb0, 0x71, 0xdb, 0x8a, 0xb0, 0x72, 0xda, 0x8b, 0xb0, 0x72, 0xdb, - 0x8a, 0xb0, 0x73, 0xda, 0x8b, 0xb0, 0x73, 0xdb, 0x8a, 0xb0, 0x74, 0xda, - 0x8b, 0xb0, 0x75, 0xdb, 0x8a, 0xb0, 0x75, 0xda, 0x8b, 0xb0, 0x76, 0xdb, - 0x8a, 0xb0, 0x76, 0xda, 0x8b, 0xb0, 0x77, 0xdb, 0x8a, 0xb0, 0x78, 0xda, - 0x8b, 0xb0, 0x78, 0xd8, 0x8b, 0xb0, 0x79, 0xda, 0x8b, 0xb0, 0x79, 0xd8, - 0x8b, 0xb0, 0x7a, 0xda, 0x8b, 0xb0, 0x7a, 0xd8, 0x8b, 0xb0, 0x7b, 0xda, - 0x8b, 0xb0, 0x7c, 0xd8, 0x8b, 0xb0, 0x7c, 0xda, 0x8b, 0xb0, 0x7d, 0xd8, - 0x8b, 0xb0, 0x7d, 0xda, 0x8b, 0xb0, 0x7e, 0xd8, 0x8b, 0xb0, 0x7e, 0xda, - 0x8b, 0xb0, 0x7f, 0xd8, 0x8b, 0xb0, 0x7f, 0xda, 0x8b, 0xb0, 0x80, 0xd8, - 0x8b, 0xb0, 0x81, 0xda, 0x8b, 0xb0, 0x81, 0xd8, 0x8b, 0xb0, 0x82, 0xda, - 0x8b, 0xb0, 0x82, 0xd8, 0x8b, 0xb0, 0x83, 0xda, 0x8b, 0xb0, 0x83, 0xd8, - 0x8b, 0xb0, 0x84, 0xda, 0x8b, 0xb0, 0x84, 0xd8, 0x8b, 0xb0, 0x85, 0xda, - 0x8b, 0xb0, 0x85, 0xd8, 0x8b, 0xb0, 0x86, 0xda, 0x8b, 0xb0, 0x86, 0xd8, - 0x8b, 0xb0, 0x87, 0xda, 0x8b, 0xb0, 0x87, 0xd8, 0x8b, 0xb0, 0x88, 0xd8, - 0x8c, 0xb0, 0x88, 0xd8, 0x8b, 0xb0, 0x89, 0xd8, 0x8c, 0xb0, 0x89, 0xd8, - 0x8b, 0xb0, 0x8a, 0xd8, 0x8c, 0xb0, 0x8a, 0xd8, 0x8b, 0xb0, 0x8b, 0xd8, - 0x8c, 0xb0, 0x8b, 0xd8, 0x8b, 0xaf, 0x8b, 0xd8, 0x8c, 0xb0, 0x8b, 0xd8, - 0x8c, 0xaf, 0x8b, 0xd8, 0x8d, 0xb0, 0x8b, 0xd8, 0x8d, 0xaf, 0x8b, 0xd8, - 0x8e, 0xb0, 0x8b, 0xd8, 0x8e, 0xaf, 0x8b, 0xd8, 0x8e, 0xb0, 0x8b, 0xd8, - 0x8f, 0xaf, 0x8b, 0xd8, 0x8f, 0xb0, 0x8b, 0xd8, 0x90, 0xaf, 0x8b, 0xd8, - 0x90, 0xb0, 0x8b, 0xd8, 0x91, 0xaf, 0x8b, 0xd8, 0x91, 0xb0, 0x8b, 0xd8, - 0x92, 0xaf, 0x8b, 0xd8, 0x92, 0xb0, 0x8b, 0xd8, 0x93, 0xaf, 0x8b, 0xd8, - 0x93, 0xb0, 0x8b, 0xd8, 0x94, 0xaf, 0x8b, 0xd8, 0x94, 0xb0, 0x8b, 0xd8, - 0x94, 0xaf, 0x8b, 0xd8, 0x95, 0xb0, 0x8b, 0xd8, 0x95, 0xaf, 0x8b, 0xd8, - 0x96, 0xb0, 0x8b, 0xd8, 0x96, 0xaf, 0x8c, 0xd8, 0x97, 0xab, 0x8b, 0xd8, - 0x97, 0xaf, 0x8c, 0xd8, 0x98, 0xab, 0x8b, 0xd8, 0x98, 0xaf, 0x8c, 0xd8, - 0x98, 0xab, 0x8b, 0xd8, 0x99, 0xaf, 0x8c, 0xd8, 0x99, 0xab, 0x8b, 0xd8, - 0x9a, 0xaf, 0x8c, 0xd8, 0x9a, 0xab, 0x8b, 0xd8, 0x9a, 0xaf, 0x8c, 0xd8, - 0x9b, 0xab, 0x8b, 0xd8, 0x9b, 0xaf, 0x8c, 0xd8, 0x9c, 0xab, 0x8b, 0xd8, - 0x9c, 0xaf, 0x8c, 0xd8, 0x9d, 0xab, 0x8b, 0xd8, 0x9d, 0xaf, 0x8c, 0xd8, - 0x9d, 0xab, 0x8b, 0xd8, 0x9e, 0xaf, 0x8c, 0xd8, 0x9e, 0xab, 0x8b, 0xd8, - 0x9f, 0xaf, 0x8c, 0xd8, 0x9f, 0xab, 0x8b, 0xd8, 0x9f, 0xaf, 0x8c, 0xd8, - 0xa0, 0xab, 0x8b, 0xd8, 0xa0, 0xaf, 0xa3, 0xd8, 0xa1, 0x98, 0xa1, 0xd8, - 0xa1, 0x97, 0xa3, 0xd8, 0xa1, 0x98, 0xa2, 0xd8, 0xa2, 0x97, 0xa3, 0xd8, - 0xa2, 0x98, 0xa3, 0xd8, 0xa3, 0x97, 0xa3, 0xd8, 0xa3, 0x98, 0xa3, 0xd8, - 0xa3, 0x97, 0xa3, 0xd8, 0xa4, 0x98, 0xa3, 0xd8, 0xa4, 0x97, 0xa3, 0xd8, - 0xa5, 0x98, 0xa3, 0xd8, 0xa5, 0x97, 0xa3, 0xd8, 0xa5, 0x98, 0xa3, 0xd8, - 0xa6, 0x97, 0xa3, 0xd8, 0xa6, 0x98, 0xa3, 0xd8, 0xa6, 0x97, 0xa3, 0xd8, - 0xa7, 0x98, 0xa3, 0xd8, 0xa7, 0x97, 0xa3, 0xd8, 0xa8, 0x98, 0xa3, 0xd8, - 0xa8, 0x97, 0xa3, 0xd8, 0xa8, 0x98, 0xa3, 0xd8, 0xa9, 0x97, 0xa3, 0xd8, - 0xa9, 0x98, 0xa3, 0xd8, 0xaa, 0x97, 0xa3, 0xd8, 0xaa, 0x98, 0xa3, 0xd8, - 0xaa, 0x97, 0xa3, 0xd8, 0xab, 0x98, 0xa3, 0xd8, 0xab, 0x97, 0xa3, 0xd8, - 0xab, 0x98, 0xa3, 0xd8, 0xac, 0x97, 0xa3, 0xd8, 0xac, 0x98, 0xa3, 0xd8, - 0xac, 0x97, 0xa3, 0xd8, 0xad, 0x98, 0xa3, 0xd8, 0xad, 0x97, 0xa3, 0xd8, - 0xae, 0x98, 0xa3, 0xd8, 0xae, 0x97, 0xa3, 0xd8, 0xae, 0x98, 0xa3, 0xd8, - 0xaf, 0x97, 0xa3, 0xd8, 0xaf, 0x98, 0xa3, 0xd8, 0xaf, 0x97, 0xa3, 0xd8, - 0xb0, 0x98, 0xa3, 0xd8, 0xb0, 0x97, 0xa3, 0xd8, 0xb0, 0x98, 0xa3, 0xd8, - 0xb1, 0x97, 0xa3, 0xd8, 0xb1, 0x98, 0xa3, 0xd8, 0xb2, 0x97, 0xa3, 0xd8, - 0xb2, 0x98, 0xa3, 0xd8, 0xb2, 0x97, 0xa3, 0xd8, 0xb3, 0x98, 0xa3, 0xd8, - 0xb3, 0x97, 0xa3, 0xd8, 0xb3, 0x98, 0xa3, 0xd8, 0xb4, 0x97, 0xa3, 0xd8, - 0xb4, 0x98, 0xa3, 0xd8, 0xb4, 0x97, 0xa3, 0xd8, 0xb5, 0x98, 0xa3, 0xd8, - 0xb5, 0x97, 0xa3, 0xd8, 0xb5, 0x98, 0xa3, 0xd8, 0xb6, 0x97, 0xa3, 0xd8, - 0xb6, 0x98, 0xa3, 0xd8, 0xb6, 0x97, 0xa3, 0xd8, 0xb7, 0x98, 0xa3, 0xd8, - 0xb7, 0x97, 0xa3, 0xd8, 0xb7, 0x98, 0xa3, 0xd8, 0xb8, 0x97, 0xa3, 0xd8, - 0xb8, 0x98, 0xa3, 0xd8, 0xb8, 0x97, 0xa3, 0xd8, 0xb9, 0x98, 0xd0, 0xd8, - 0xb9, 0xb5, 0xd0, 0xd8, 0xb9, 0xb8, 0xd0, 0xd8, 0xba, 0xb5, 0xd0, 0xd8, - 0xba, 0xb8, 0xd0, 0xd8, 0xba, 0xb5, 0xd0, 0xd8, 0xbb, 0xb8, 0xd0, 0xd8, - 0xbb, 0xb5, 0xd0, 0xd8, 0xbb, 0xb8, 0xd0, 0xd8, 0xbc, 0xb5, 0xd0, 0xd8, - 0xbc, 0xb8, 0xd0, 0xd8, 0xbc, 0xb5, 0xd0, 0xd8, 0xbd, 0xb8, 0xd0, 0xd8, - 0xbd, 0xb5, 0xd0, 0xd8, 0xbd, 0xb8, 0xd0, 0xd8, 0xbe, 0xb5, 0xd0, 0xd8, - 0xbe, 0xb8, 0xd0, 0xd8, 0xbe, 0xb5, 0xd0, 0xd8, 0xbf, 0xb8, 0xd0, 0xd8, - 0xbf, 0xb5, 0xd0, 0xd8, 0xbf, 0xb8, 0xd0, 0xd8, 0xc0, 0xb5, 0xd1, 0xd8, - 0xc0, 0xb3, 0xd0, 0xd8, 0xc0, 0xb5, 0xd1, 0xd8, 0xc1, 0xb3, 0xd0, 0xd8, - 0xc1, 0xb5, 0xd1, 0xd8, 0xc1, 0xb3, 0xd0, 0xd8, 0xc1, 0xb5, 0xd1, 0xd8, - 0xc2, 0xb3, 0xd0, 0xd8, 0xc2, 0xb5, 0xd1, 0xd8, 0xc2, 0xb3, 0xd0, 0xd8, - 0xc3, 0xb5, 0xd1, 0xd8, 0xc3, 0xb3, 0xd0, 0xd8, 0xc3, 0xb5, 0xd1, 0xd8, - 0xc4, 0xb3, 0xd0, 0xd8, 0xc4, 0xb5, 0xd1, 0xd8, 0xc4, 0xb3, 0xd0, 0xd8, - 0xc5, 0xb5, 0xd1, 0xd8, 0xc5, 0xb3, 0xd0, 0xd8, 0xc5, 0xb5, 0xd1, 0xd8, - 0xc6, 0xb3, 0xd0, 0xd8, 0xc6, 0xb5, 0xd1, 0xd8, 0xc6, 0xb3, 0xd0, 0xd8, - 0xc6, 0xb5, 0xd1, 0xd8, 0xc7, 0xb3, 0xd0, 0xd8, 0xc7, 0xb5, 0xd1, 0xd8, - 0xc7, 0xb3, 0xd0, 0xd8, 0xc8, 0xb5, 0xd1, 0xd8, 0xc8, 0xb3, 0xd0, 0xd8, - 0xc8, 0xb5, 0xd1, 0xd8, 0xc9, 0xb3, 0xd0, 0xd8, 0xc9, 0xb5, 0xd1, 0xd8, - 0xc9, 0xb3, 0xd0, 0xd8, 0xc9, 0xb5, 0xd1, 0xd8, 0xca, 0xb3, 0xd1, 0xd8, - 0xca, 0xb0, 0xd1, 0xd8, 0xca, 0xb3, 0xd1, 0xd8, 0xcb, 0xb0, 0xd1, 0xd8, - 0xcb, 0xb3, 0xd1, 0xd8, 0xcb, 0xb0, 0xd1, 0xd8, 0xcc, 0xb3, 0xd1, 0xd8, - 0xcc, 0xb0, 0xd1, 0xd8, 0xcc, 0xb3, 0xd1, 0xd8, 0xcc, 0xb0, 0xd1, 0xd8, - 0xcd, 0xb3, 0xd1, 0xd8, 0xcd, 0xb0, 0xd1, 0xd8, 0xcd, 0xb3, 0xd1, 0xd8, - 0xce, 0xb0, 0xd1, 0xd8, 0xce, 0xb3, 0xd1, 0xd8, 0xce, 0xb0, 0xd1, 0xd8, - 0xce, 0xb3, 0xd1, 0xd8, 0xcf, 0xb0, 0xd1, 0xd8, 0xcf, 0xb0, 0xd1, 0xd8, - 0xcf, 0xb0, 0xd1, 0xd8, 0xd0, 0xb0, 0xd1, 0xd8, 0xd0, 0xb0, 0xd1, 0xd8, - 0xd0, 0xb0, 0xd1, 0xd8, 0xd0, 0xb0, 0xd1, 0xd8, 0xd1, 0xb0, 0xd1, 0xd8, - 0xd1, 0xb0, 0xd1, 0xd8, 0xd1, 0xb0, 0xd2, 0xd8, 0xd1, 0xb0, 0xd2, 0xd8, - 0xd1, 0xb0, 0xd2, 0xd8, 0xd1, 0xb0, 0xd2, 0xd8, 0xd1, 0xb0, 0xd3, 0xd8, - 0xd1, 0xb0, 0xd3, 0xd8, 0xd1, 0xb0, 0xd3, 0xd8, 0xd1, 0xb0, 0xd4, 0xd8, - 0xd1, 0xb0, 0xd4, 0xd8, 0xd1, 0xb0, 0xd4, 0xd8, 0xd1, 0xb0, 0xd4, 0xd8, - 0xd1, 0xb0, 0xd5, 0xd8, 0xd1, 0xb0, 0xd5, 0xd8, 0xd1, 0xb0, 0xd5, 0xd8, - 0xd1, 0xb0, 0xd6, 0xd8, 0xd1, 0xb0, 0xd6, 0xd6, 0xd1, 0xb0, 0xd6, 0xd8, - 0xd1, 0xb0, 0xd6, 0xd6, 0xd1, 0xb0, 0xd7, 0xd8, 0xd1, 0xb0, 0xd7, 0xd6, - 0xd1, 0xb0, 0xd7, 0xd8, 0xd1, 0xb0, 0xd7, 0xd6, 0xd1, 0xb0, 0xd8, 0xd8, - 0xd1, 0xb0, 0xd8, 0xd6, 0xd1, 0xb0, 0xd8, 0xd8, 0xd1, 0xb0, 0xd9, 0xd6, - 0xd1, 0xb0, 0xd9, 0xd8, 0xd1, 0xb0, 0xd9, 0xd6, 0xd1, 0xb0, 0xd9, 0xd8, - 0xd1, 0xb0, 0xda, 0xd6, 0xd1, 0xb0, 0xda, 0xd8, 0xd1, 0xb0, 0xda, 0xd6, - 0xd1, 0xb0, 0xda, 0xd8, 0xd1, 0xb0, 0xdb, 0xd6, 0xd1, 0xb0, 0xdb, 0xd8, - 0xd1, 0xb0, 0xdb, 0xd6, 0xd1, 0xb0, 0xdb, 0xd8, 0xd1, 0xb0, 0xdc, 0xd6, - 0xd1, 0xb0, 0xdc, 0xd8, 0xd1, 0xb0, 0xdc, 0xd6, 0xd1, 0xb0, 0xdd, 0xd8, - 0xd1, 0xb0, 0xdd, 0xd6, 0xd1, 0xb0, 0xdd, 0xd8, 0xd1, 0xb0, 0xdd, 0xd6, - 0xd1, 0xb0, 0xde, 0xda, 0xe9, 0xb0, 0xde, 0xd9, 0xe9, 0xb0, 0xde, 0xda, - 0xe9, 0xb0, 0xde, 0xd9, 0xe9, 0xb0, 0xdf, 0xda, 0xe9, 0xb0, 0xdf, 0xd9, - 0xe9, 0xb0, 0xdf, 0xda, 0xe9, 0xb0, 0xdf, 0xd9, 0xe9, 0xb0, 0xe0, 0xda, - 0xe9, 0xb0, 0xe0, 0xd9, 0xe9, 0xb0, 0xe0, 0xda, 0xe9, 0xb0, 0xe1, 0xd9, - 0xe9, 0xb0, 0xe1, 0xda, 0xe9, 0xb0, 0xe1, 0xd9, 0xe9, 0xb0, 0xe1, 0xda, - 0xe9, 0xb0, 0xe2, 0xd9, 0xe9, 0xb0, 0xe2, 0xda, 0xe9, 0xb0, 0xe2, 0xd9, - 0xe9, 0xb0, 0xe2, 0xda, 0xe9, 0xb0, 0xe3, 0xd9, 0xe9, 0xb0, 0xe3, 0xda, - 0xe9, 0xb0, 0xe3, 0xd9, 0xe9, 0xb0, 0xe3, 0xda, 0xe9, 0xb0, 0xe4, 0xd9, - 0xe9, 0xb0, 0xe4, 0xda, 0xe9, 0xb0, 0xe4, 0xd9, 0xe9, 0xb0, 0xe4, 0xda, - 0xe9, 0xb0, 0xe5, 0xd9, 0xe9, 0xb0, 0xe5, 0xda, 0xe9, 0xb0, 0xe5, 0xd9, - 0xe9, 0xb0, 0xe5, 0xd8, 0xe9, 0xb0, 0xe6, 0xd9, 0xe9, 0xb0, 0xe6, 0xd8, - 0xe9, 0xb0, 0xe6, 0xd9, 0xe9, 0xb0, 0xe6, 0xd8, 0xe9, 0xb0, 0xe7, 0xd9, - 0xe9, 0xb0, 0xe7, 0xd8, 0xe9, 0xb0, 0xe7, 0xd9, 0xe9, 0xb0, 0xe7, 0xd8, - 0xe9, 0xb0, 0xe8, 0xd9, 0xe9, 0xb0, 0xe8, 0xd8, 0xe9, 0xb0, 0xe8, 0xd9, - 0xe9, 0xb0, 0xe8, 0xd8, 0xe9, 0xb0, 0xe9, 0xd8, 0xea, 0xb0, 0xe9, 0xd8, - 0xe9, 0xb0, 0xe9, 0xd8, 0xea, 0xb0, 0xe9, 0xd8, 0xe9, 0xb0, 0xe9, 0xd8, - 0xea, 0xb0, 0xe9, 0xd8, 0xea, 0xb0, 0xe9, 0xd8, 0xea, 0xb0, 0xe9, 0xd8, - 0xea, 0xae, 0xe9, 0xd8, 0xeb, 0xb0, 0xe9, 0xd8, 0xeb, 0xae, 0xec, 0xd8, - 0xeb, 0xb0, 0xed, 0xd8, 0xeb, 0xb0, 0xec, 0xd8, 0xec, 0xb0, 0xed, 0xd8, - 0xec, 0xb0, 0xec, 0xd8, 0xec, 0xb0, 0xed, 0xd8, 0xec, 0xb0, 0xec, 0xd8, - 0xec, 0xb0, 0xed, 0xd8, 0xec, 0xb0, 0xed, 0xd8, 0xec, 0xb0, 0xed, 0xd8, - 0xec, 0xb0, 0xed, 0xd8, 0xec, 0xb0, 0xee, 0xd8, 0xec, 0xb0, 0xee, 0xd8, - 0xec, 0xb0, 0xee, 0xd8, 0xec, 0xb0, 0xee, 0xd8, 0xec, 0xb0, 0xef, 0xd8, - 0xec, 0xb0, 0xef, 0xd8, 0xec, 0xb0, 0xef, 0xd8, 0xec, 0xb0, 0xef, 0xd8, - 0xec, 0xb0, 0xf0, 0xd8, 0xec, 0xb0, 0xf0, 0xd8, 0xec, 0xb0, 0xf0, 0xd8, - 0xec, 0xb0, 0xf0, 0xd8, 0xec, 0xb0, 0xf1, 0xd8, 0xec, 0xb0, 0xf1, 0xd8, - 0xec, 0xb0, 0xf1, 0xd8, 0xec, 0xb0, 0xf1, 0xd8, 0xec, 0xb0, 0xf2, 0xd8, - 0xec, 0xb0, 0xf2, 0xd8, 0xec, 0xb0, 0xf2, 0xd8, 0xec, 0xb0, 0xf2, 0xd8, - 0xec, 0xb0, 0xf2, 0xd6, 0xed, 0xb0, 0xf3, 0xd8, 0xec, 0xb0, 0xf3, 0xd6, - 0xed, 0xb0, 0xf3, 0xd8, 0xec, 0xb0, 0xf3, 0xd6, 0xed, 0xb0, 0xf4, 0xd8, - 0xec, 0xb0, 0xf4, 0xd6, 0xed, 0xb0, 0xf4, 0xd8, 0xec, 0xb0, 0xf4, 0xd6, - 0xed, 0xb0, 0xf5, 0xd8, 0xec, 0xb0, 0xf5, 0xd6, 0xed, 0xb0, 0xf5, 0xd8, - 0xec, 0xb0, 0xf5, 0xd6, 0xed, 0xb0, 0xf5, 0xd8, 0xec, 0xb0, 0xf6, 0xd6, - 0xed, 0xb0, 0xf6, 0xd8, 0xec, 0xb0, 0xf6, 0xd6, 0xed, 0xb0, 0xf6, 0xd8, - 0xec, 0xb0, 0xf7, 0xd6, 0xed, 0xb0, 0xf7, 0xd8, 0xec, 0xb0, 0xf7, 0xd6, - 0xed, 0xb0, 0xf7, 0xd8, 0xec, 0xb0, 0xf8, 0xd6, 0xed, 0xb0, 0xf8, 0xd8, - 0xec, 0xb0, 0xf8, 0xd6, 0xed, 0xb0, 0xf8, 0xd8, 0xec, 0xb0, 0xf8, 0xd6, - 0xed, 0xb0, 0xf9, 0xd8, 0xec, 0xb0, 0xf9, 0xd6, 0xed, 0xb0, 0xf9, 0xd8, - 0xec, 0xb0, 0xf9, 0xd6, 0xed, 0xb0, 0xfa, 0xd8, 0xec, 0xb0, 0xfa, 0xd6, - 0xed, 0xb0, 0xfa, 0xd8, 0xec, 0xb0, 0xfa, 0xd6, 0xed, 0xb0, 0xfa, 0xd8, - 0xec, 0xb0, 0xfb, 0xd6, 0xed, 0xb0, 0xfb, 0xd8, 0xec, 0xb0, 0xfb, 0xc7, - 0xf7, 0xb0, 0xfb, 0xc7, 0xf7, 0xb0, 0xfc, 0xc7, 0xf7, 0xb0, 0xfc, 0xc7, - 0xf7, 0xb0, 0xfc, 0xc7, 0xf7, 0xb0, 0xfc, 0xc7, 0xf7, 0xb0, 0xfc, 0xc7, - 0xf7, 0xb0, 0xfd, 0xc7, 0xf7, 0xb0, 0xfd, 0xc7, 0xf7, 0xb0, 0xfd, 0xc7, - 0xf7, 0xb0, 0xfd, 0xc7, 0xf7, 0xb0, 0xfe, 0xc7, 0xf7, 0xb0, 0xfe, 0xc7, - 0xf7, 0xb0, 0xfe, 0xc7, 0xf7, 0xb0, 0xfe, 0xc7, 0xf7, 0xb0, 0xfe, 0xc7, - 0xf7, 0xb0, 0xff, 0xc7, 0xf7, 0xb0, 0xff, 0xc7, 0xf7, 0xb0, 0x03, 0xdf, - 0x89, 0xb0, 0x0a, 0xdf, 0x89, 0xb0, 0x0f, 0xdf, 0x89, 0xb0, 0x14, 0xdd, - 0x8a, 0xb0, 0x17, 0xdf, 0x89, 0xb0, 0x1b, 0xdd, 0x8a, 0xb0, 0x1e, 0xdf, - 0x89, 0xb0, 0x20, 0xdd, 0x8a, 0xb0, 0x23, 0xdf, 0x89, 0xb0, 0x25, 0xdd, - 0x8a, 0xb0, 0x27, 0xdf, 0x89, 0xb0, 0x29, 0xdd, 0x8a, 0xb0, 0x2b, 0xdf, - 0x89, 0xb0, 0x2d, 0xdd, 0x8a, 0xb0, 0x2f, 0xdf, 0x89, 0xb0, 0x31, 0xdd, - 0x8a, 0xb0, 0x32, 0xdf, 0x89, 0xb0, 0x34, 0xdd, 0x8a, 0xb0, 0x35, 0xdf, - 0x89, 0xb0, 0x37, 0xdd, 0x8a, 0xb0, 0x38, 0xdf, 0x89, 0xb0, 0x3a, 0xdd, - 0x8a, 0xb0, 0x3b, 0xdc, 0x8a, 0xb0, 0x3c, 0xdd, 0x8a, 0xb0, 0x3e, 0xdc, - 0x8a, 0xb0, 0x3f, 0xdd, 0x8a, 0xb0, 0x40, 0xdc, 0x8a, 0xb0, 0x42, 0xdd, - 0x8a, 0xb0, 0x43, 0xdc, 0x8a, 0xb0, 0x44, 0xdd, 0x8a, 0xb0, 0x45, 0xdc, - 0x8a, 0xb0, 0x46, 0xdd, 0x8a, 0xb0, 0x47, 0xdc, 0x8a, 0xb0, 0x48, 0xdd, - 0x8a, 0xb0, 0x49, 0xdc, 0x8a, 0xb0, 0x4a, 0xdd, 0x8a, 0xb0, 0x4b, 0xdc, - 0x8a, 0xb0, 0x4c, 0xdd, 0x8a, 0xb0, 0x4d, 0xdc, 0x8a, 0xb0, 0x4e, 0xdd, - 0x8a, 0xb0, 0x4f, 0xdc, 0x8a, 0xb0, 0x50, 0xdd, 0x8a, 0xb0, 0x51, 0xdc, - 0x8a, 0xb0, 0x52, 0xdd, 0x8a, 0xb0, 0x53, 0xdc, 0x8a, 0xb0, 0x54, 0xdd, - 0x8a, 0xb0, 0x55, 0xdc, 0x8a, 0xb0, 0x56, 0xdd, 0x8a, 0xb0, 0x57, 0xdc, - 0x8a, 0xb0, 0x58, 0xdd, 0x8a, 0xb0, 0x58, 0xdc, 0x8a, 0xb0, 0x59, 0xdd, - 0x8a, 0xb0, 0x5a, 0xdc, 0x8a, 0xb0, 0x5b, 0xdd, 0x8a, 0xb0, 0x5c, 0xdc, - 0x8a, 0xb0, 0x5d, 0xda, 0x8b, 0xb0, 0x5d, 0xdc, 0x8a, 0xb0, 0x5e, 0xda, - 0x8b, 0xb0, 0x5f, 0xdc, 0x8a, 0xb0, 0x60, 0xda, 0x8b, 0xb0, 0x60, 0xdc, - 0x8a, 0xb0, 0x61, 0xda, 0x8b, 0xb0, 0x62, 0xdc, 0x8a, 0xb0, 0x63, 0xda, - 0x8b, 0xb0, 0x63, 0xdc, 0x8a, 0xb0, 0x64, 0xda, 0x8b, 0xb0, 0x65, 0xdc, - 0x8a, 0xb0, 0x66, 0xda, 0x8b, 0xb0, 0x66, 0xdc, 0x8a, 0xb0, 0x67, 0xda, - 0x8b, 0xb0, 0x68, 0xdc, 0x8a, 0xb0, 0x68, 0xda, 0x8b, 0xb0, 0x69, 0xdc, - 0x8a, 0xb0, 0x6a, 0xda, 0x8b, 0xb0, 0x6a, 0xdc, 0x8a, 0xb0, 0x6b, 0xda, - 0x8b, 0xb0, 0x6c, 0xdc, 0x8a, 0xb0, 0x6c, 0xda, 0x8b, 0xb0, 0x6d, 0xdc, - 0x8a, 0xb0, 0x6e, 0xda, 0x8b, 0xb0, 0x6e, 0xdc, 0x8a, 0xb0, 0x6f, 0xda, - 0x8b, 0xb0, 0x70, 0xdc, 0x8a, 0xb0, 0x70, 0xda, 0x8b, 0xb0, 0x71, 0xdc, - 0x8a, 0xb0, 0x72, 0xda, 0x8b, 0xb0, 0x72, 0xdc, 0x8a, 0xb0, 0x73, 0xda, - 0x8b, 0xb0, 0x73, 0xdc, 0x8a, 0xb0, 0x74, 0xda, 0x8b, 0xb0, 0x75, 0xdc, - 0x8a, 0xb0, 0x75, 0xda, 0x8b, 0xb0, 0x76, 0xdc, 0x8a, 0xb0, 0x76, 0xda, - 0x8b, 0xb0, 0x77, 0xdc, 0x8a, 0xb0, 0x78, 0xda, 0x8b, 0xb0, 0x78, 0xd9, - 0x8b, 0xb0, 0x79, 0xda, 0x8b, 0xb0, 0x79, 0xd9, 0x8b, 0xb0, 0x7a, 0xda, - 0x8b, 0xb0, 0x7a, 0xd9, 0x8b, 0xb0, 0x7b, 0xda, 0x8b, 0xb0, 0x7c, 0xd9, - 0x8b, 0xb0, 0x7c, 0xda, 0x8b, 0xb0, 0x7d, 0xd9, 0x8b, 0xb0, 0x7d, 0xda, - 0x8b, 0xb0, 0x7e, 0xd9, 0x8b, 0xb0, 0x7e, 0xda, 0x8b, 0xb0, 0x7f, 0xd9, - 0x8b, 0xb0, 0x7f, 0xda, 0x8b, 0xb0, 0x80, 0xd9, 0x8b, 0xb0, 0x81, 0xda, - 0x8b, 0xb0, 0x81, 0xd9, 0x8b, 0xb0, 0x82, 0xda, 0x8b, 0xb0, 0x82, 0xd9, - 0x8b, 0xb0, 0x83, 0xda, 0x8b, 0xb0, 0x83, 0xd9, 0x8b, 0xb0, 0x84, 0xda, - 0x8b, 0xb0, 0x84, 0xd9, 0x8b, 0xb0, 0x85, 0xda, 0x8b, 0xb0, 0x85, 0xd9, - 0x8b, 0xb0, 0x86, 0xda, 0x8b, 0xb0, 0x86, 0xd9, 0x8b, 0xb0, 0x87, 0xda, - 0x8b, 0xb0, 0x87, 0xd9, 0x8b, 0xb0, 0x88, 0xda, 0x8b, 0xb0, 0x88, 0xd9, - 0x8b, 0xb0, 0x89, 0xda, 0x8b, 0xb0, 0x89, 0xd9, 0x8b, 0xb0, 0x8a, 0xd9, - 0x8c, 0xb0, 0x8a, 0xd9, 0x8b, 0xb0, 0x8b, 0xd9, 0x8c, 0xb0, 0x8a, 0xd9, - 0x8b, 0xb0, 0x8b, 0xd9, 0x8c, 0xb0, 0x8a, 0xd9, 0x8c, 0xb0, 0x8b, 0xd9, - 0x8d, 0xb0, 0x8b, 0xd9, 0x8d, 0xae, 0x8b, 0xd9, 0x8e, 0xb0, 0x8b, 0xd9, - 0x8e, 0xae, 0x8b, 0xd9, 0x8e, 0xb0, 0x8b, 0xd9, 0x8f, 0xae, 0x8b, 0xd9, - 0x8f, 0xb0, 0x8b, 0xd9, 0x90, 0xae, 0x8b, 0xd9, 0x90, 0xb0, 0x8b, 0xd9, - 0x91, 0xae, 0x8b, 0xd9, 0x91, 0xb0, 0x8b, 0xd9, 0x92, 0xae, 0x8b, 0xd9, - 0x92, 0xb0, 0x8b, 0xd9, 0x93, 0xae, 0x8b, 0xd9, 0x93, 0xb0, 0x8b, 0xd9, - 0x94, 0xae, 0x8b, 0xd9, 0x94, 0xb0, 0x8b, 0xd9, 0x94, 0xae, 0x8b, 0xd9, - 0x95, 0xb0, 0x8b, 0xd9, 0x95, 0xae, 0x8b, 0xd9, 0x96, 0xb0, 0x8b, 0xd9, - 0x96, 0xae, 0x8c, 0xd9, 0x97, 0xab, 0x8b, 0xd9, 0x97, 0xae, 0x8c, 0xd9, - 0x98, 0xab, 0x8b, 0xd9, 0x98, 0xae, 0x8c, 0xd9, 0x98, 0xab, 0x8b, 0xd9, - 0x99, 0xae, 0x8c, 0xd9, 0x99, 0xab, 0x8b, 0xd9, 0x9a, 0xae, 0x8c, 0xd9, - 0x9a, 0xab, 0x8b, 0xd9, 0x9a, 0xae, 0x8c, 0xd9, 0x9b, 0xab, 0x8b, 0xd9, - 0x9b, 0xae, 0x8c, 0xd9, 0x9c, 0xab, 0x8b, 0xd9, 0x9c, 0xae, 0x8c, 0xd9, - 0x9d, 0xab, 0x8b, 0xd9, 0x9d, 0xae, 0x8c, 0xd9, 0x9d, 0xab, 0x8b, 0xd9, - 0x9e, 0xae, 0x8c, 0xd9, 0x9e, 0xab, 0x8b, 0xd9, 0x9f, 0xae, 0x8c, 0xd9, - 0x9f, 0xab, 0x8b, 0xd9, 0x9f, 0xae, 0x8c, 0xd9, 0xa0, 0xab, 0x8b, 0xd9, - 0xa0, 0xae, 0x8c, 0xd9, 0xa1, 0xab, 0xa1, 0xd9, 0xa1, 0x97, 0xa1, 0xd9, - 0xa1, 0x97, 0xa2, 0xd9, 0xa2, 0x97, 0xa2, 0xd9, 0xa2, 0x97, 0xa3, 0xd9, - 0xa3, 0x97, 0xa3, 0xd9, 0xa3, 0x97, 0xa3, 0xd9, 0xa3, 0x97, 0xa3, 0xd9, - 0xa4, 0x97, 0xa3, 0xd9, 0xa4, 0x97, 0xa3, 0xd9, 0xa5, 0x97, 0xa3, 0xd9, - 0xa5, 0x97, 0xa3, 0xd9, 0xa5, 0x97, 0xa3, 0xd9, 0xa6, 0x97, 0xa3, 0xd9, - 0xa6, 0x97, 0xa3, 0xd9, 0xa6, 0x97, 0xa3, 0xd9, 0xa7, 0x97, 0xa3, 0xd9, - 0xa7, 0x97, 0xa3, 0xd9, 0xa8, 0x97, 0xa3, 0xd9, 0xa8, 0x97, 0xa3, 0xd9, - 0xa8, 0x97, 0xa3, 0xd9, 0xa9, 0x97, 0xa3, 0xd9, 0xa9, 0x97, 0xa3, 0xd9, - 0xaa, 0x97, 0xa3, 0xd9, 0xaa, 0x97, 0xa3, 0xd9, 0xaa, 0x97, 0xa3, 0xd9, - 0xab, 0x97, 0xa3, 0xd9, 0xab, 0x97, 0xa3, 0xd9, 0xab, 0x97, 0xa3, 0xd9, - 0xac, 0x97, 0xa3, 0xd9, 0xac, 0x97, 0xa3, 0xd9, 0xac, 0x97, 0xa3, 0xd9, - 0xad, 0x97, 0xa3, 0xd9, 0xad, 0x97, 0xa3, 0xd9, 0xae, 0x97, 0xa3, 0xd9, - 0xae, 0x97, 0xa3, 0xd9, 0xae, 0x97, 0xa3, 0xd9, 0xaf, 0x97, 0xa3, 0xd9, - 0xaf, 0x97, 0xa3, 0xd9, 0xaf, 0x97, 0xa3, 0xd9, 0xb0, 0x97, 0xa3, 0xd9, - 0xb0, 0x97, 0xa3, 0xd9, 0xb0, 0x97, 0xa3, 0xd9, 0xb1, 0x97, 0xa3, 0xd9, - 0xb1, 0x97, 0xa3, 0xd9, 0xb2, 0x97, 0xa3, 0xd9, 0xb2, 0x97, 0xa3, 0xd9, - 0xb2, 0x97, 0xa3, 0xd9, 0xb3, 0x97, 0xa3, 0xd9, 0xb3, 0x97, 0xa3, 0xd9, - 0xb3, 0x97, 0xa3, 0xd9, 0xb4, 0x97, 0xa3, 0xd9, 0xb4, 0x97, 0xa3, 0xd9, - 0xb4, 0x97, 0xa3, 0xd9, 0xb5, 0x97, 0xa3, 0xd9, 0xb5, 0x97, 0xa3, 0xd9, - 0xb5, 0x97, 0xa3, 0xd9, 0xb6, 0x97, 0xa3, 0xd9, 0xb6, 0x97, 0xa3, 0xd9, - 0xb6, 0x97, 0xa3, 0xd9, 0xb7, 0x97, 0xa3, 0xd9, 0xb7, 0x97, 0xa3, 0xd9, - 0xb7, 0x97, 0xa3, 0xd9, 0xb8, 0x97, 0xa3, 0xd9, 0xb8, 0x97, 0xa3, 0xd9, - 0xb8, 0x97, 0xd0, 0xd9, 0xb9, 0xb8, 0xd0, 0xd9, 0xb9, 0xba, 0xd0, 0xd9, - 0xb9, 0xb8, 0xd0, 0xd9, 0xba, 0xb5, 0xd0, 0xd9, 0xba, 0xb8, 0xd0, 0xd9, - 0xba, 0xb5, 0xd0, 0xd9, 0xbb, 0xb8, 0xd0, 0xd9, 0xbb, 0xb5, 0xd0, 0xd9, - 0xbb, 0xb8, 0xd0, 0xd9, 0xbc, 0xb5, 0xd0, 0xd9, 0xbc, 0xb8, 0xd0, 0xd9, - 0xbc, 0xb5, 0xd0, 0xd9, 0xbd, 0xb8, 0xd0, 0xd9, 0xbd, 0xb5, 0xd0, 0xd9, - 0xbd, 0xb8, 0xd0, 0xd9, 0xbe, 0xb5, 0xd0, 0xd9, 0xbe, 0xb8, 0xd0, 0xd9, - 0xbe, 0xb5, 0xd1, 0xd9, 0xbf, 0xb2, 0xd0, 0xd9, 0xbf, 0xb5, 0xd1, 0xd9, - 0xbf, 0xb2, 0xd0, 0xd9, 0xc0, 0xb5, 0xd1, 0xd9, 0xc0, 0xb2, 0xd0, 0xd9, - 0xc0, 0xb5, 0xd1, 0xd9, 0xc1, 0xb2, 0xd0, 0xd9, 0xc1, 0xb5, 0xd1, 0xd9, - 0xc1, 0xb2, 0xd0, 0xd9, 0xc1, 0xb5, 0xd1, 0xd9, 0xc2, 0xb2, 0xd0, 0xd9, - 0xc2, 0xb5, 0xd1, 0xd9, 0xc2, 0xb2, 0xd0, 0xd9, 0xc3, 0xb5, 0xd1, 0xd9, - 0xc3, 0xb2, 0xd0, 0xd9, 0xc3, 0xb5, 0xd1, 0xd9, 0xc4, 0xb2, 0xd0, 0xd9, - 0xc4, 0xb5, 0xd1, 0xd9, 0xc4, 0xb2, 0xd0, 0xd9, 0xc5, 0xb5, 0xd1, 0xd9, - 0xc5, 0xb2, 0xd0, 0xd9, 0xc5, 0xb5, 0xd1, 0xd9, 0xc6, 0xb2, 0xd0, 0xd9, - 0xc6, 0xb5, 0xd1, 0xd9, 0xc6, 0xb2, 0xd0, 0xd9, 0xc6, 0xb5, 0xd1, 0xd9, - 0xc7, 0xb2, 0xd0, 0xd9, 0xc7, 0xb5, 0xd1, 0xd9, 0xc7, 0xb2, 0xd0, 0xd9, - 0xc8, 0xb5, 0xd1, 0xd9, 0xc8, 0xb2, 0xd0, 0xd9, 0xc8, 0xb5, 0xd1, 0xd9, - 0xc9, 0xb2, 0xd0, 0xd9, 0xc9, 0xb5, 0xd1, 0xd9, 0xc9, 0xb2, 0xd0, 0xd9, - 0xc9, 0xb5, 0xd1, 0xd9, 0xca, 0xb2, 0xd1, 0xd9, 0xca, 0xb0, 0xd1, 0xd9, - 0xca, 0xb2, 0xd1, 0xd9, 0xcb, 0xb0, 0xd1, 0xd9, 0xcb, 0xb2, 0xd1, 0xd9, - 0xcb, 0xb0, 0xd1, 0xd9, 0xcc, 0xb2, 0xd1, 0xd9, 0xcc, 0xb0, 0xd1, 0xd9, - 0xcc, 0xb2, 0xd1, 0xd9, 0xcc, 0xb0, 0xd1, 0xd9, 0xcd, 0xb2, 0xd1, 0xd9, - 0xcd, 0xb0, 0xd1, 0xd9, 0xcd, 0xb2, 0xd1, 0xd9, 0xce, 0xb0, 0xd1, 0xd9, - 0xce, 0xb2, 0xd1, 0xd9, 0xce, 0xb0, 0xd1, 0xd9, 0xce, 0xb2, 0xd1, 0xd9, - 0xcf, 0xb0, 0xd1, 0xd9, 0xcf, 0xb2, 0xd1, 0xd9, 0xcf, 0xb0, 0xd1, 0xd9, - 0xd0, 0xb2, 0xd1, 0xd9, 0xd0, 0xb0, 0xd1, 0xd9, 0xd0, 0xb0, 0xd1, 0xd9, - 0xd0, 0xb0, 0xd1, 0xd9, 0xd1, 0xb0, 0xd1, 0xd9, 0xd0, 0xb0, 0xd1, 0xd9, - 0xd1, 0xb0, 0xd2, 0xd9, 0xd0, 0xb0, 0xd2, 0xd9, 0xd1, 0xb0, 0xd2, 0xd7, - 0xd1, 0xb0, 0xd2, 0xd9, 0xd1, 0xb0, 0xd3, 0xd7, 0xd1, 0xb0, 0xd3, 0xd9, - 0xd1, 0xb0, 0xd3, 0xd7, 0xd1, 0xb0, 0xd4, 0xd9, 0xd1, 0xb0, 0xd4, 0xd7, - 0xd1, 0xb0, 0xd4, 0xd9, 0xd1, 0xb0, 0xd4, 0xd7, 0xd1, 0xb0, 0xd5, 0xd9, - 0xd1, 0xb0, 0xd5, 0xd7, 0xd1, 0xb0, 0xd5, 0xd9, 0xd1, 0xb0, 0xd6, 0xd7, - 0xd1, 0xb0, 0xd6, 0xd6, 0xd1, 0xb0, 0xd6, 0xd7, 0xd1, 0xb0, 0xd6, 0xd6, - 0xd1, 0xb0, 0xd7, 0xd7, 0xd1, 0xb0, 0xd7, 0xd6, 0xd1, 0xb0, 0xd7, 0xd7, - 0xd1, 0xb0, 0xd7, 0xd6, 0xd1, 0xb0, 0xd8, 0xd7, 0xd1, 0xb0, 0xd8, 0xd6, - 0xd1, 0xb0, 0xd8, 0xd7, 0xd1, 0xb0, 0xd9, 0xd6, 0xd1, 0xb0, 0xd9, 0xd7, - 0xd1, 0xb0, 0xd9, 0xd6, 0xd1, 0xb0, 0xd9, 0xd7, 0xd1, 0xb0, 0xda, 0xd6, - 0xd1, 0xb0, 0xda, 0xd7, 0xd1, 0xb0, 0xda, 0xd6, 0xd1, 0xb0, 0xda, 0xd7, - 0xd1, 0xb0, 0xdb, 0xd6, 0xd1, 0xb0, 0xdb, 0xd7, 0xd1, 0xb0, 0xdb, 0xd6, - 0xd1, 0xb0, 0xdb, 0xd7, 0xd1, 0xb0, 0xdc, 0xd6, 0xd1, 0xb0, 0xdc, 0xd7, - 0xd1, 0xb0, 0xdc, 0xd6, 0xd1, 0xb0, 0xdd, 0xd7, 0xd1, 0xb0, 0xdd, 0xd6, - 0xd1, 0xb0, 0xdd, 0xd7, 0xd1, 0xb0, 0xdd, 0xd6, 0xd1, 0xb0, 0xde, 0xdb, - 0xe9, 0xb0, 0xde, 0xd9, 0xe9, 0xb0, 0xde, 0xdb, 0xe9, 0xb0, 0xde, 0xd9, - 0xe9, 0xb0, 0xdf, 0xdb, 0xe9, 0xb0, 0xdf, 0xd9, 0xe9, 0xb0, 0xdf, 0xdb, - 0xe9, 0xb0, 0xdf, 0xd9, 0xe9, 0xb0, 0xe0, 0xdb, 0xe9, 0xb0, 0xe0, 0xd9, - 0xe9, 0xb0, 0xe0, 0xdb, 0xe9, 0xb0, 0xe1, 0xd9, 0xe9, 0xb0, 0xe1, 0xdb, - 0xe9, 0xb0, 0xe1, 0xd9, 0xe9, 0xb0, 0xe1, 0xdb, 0xe9, 0xb0, 0xe2, 0xd9, - 0xe9, 0xb0, 0xe2, 0xdb, 0xe9, 0xb0, 0xe2, 0xd9, 0xe9, 0xb0, 0xe2, 0xdb, - 0xe9, 0xb0, 0xe3, 0xd9, 0xe9, 0xb0, 0xe3, 0xdb, 0xe9, 0xb0, 0xe3, 0xd9, - 0xe9, 0xb0, 0xe3, 0xdb, 0xe9, 0xb0, 0xe4, 0xd9, 0xe9, 0xb0, 0xe4, 0xdb, - 0xe9, 0xb0, 0xe4, 0xd9, 0xe9, 0xb0, 0xe4, 0xdb, 0xe9, 0xb0, 0xe5, 0xd9, - 0xe9, 0xb0, 0xe5, 0xdb, 0xe9, 0xb0, 0xe5, 0xd9, 0xe9, 0xb0, 0xe5, 0xd9, - 0xe9, 0xb0, 0xe6, 0xd9, 0xe9, 0xb0, 0xe6, 0xd9, 0xe9, 0xb0, 0xe6, 0xd9, - 0xe9, 0xb0, 0xe6, 0xd9, 0xe9, 0xb0, 0xe7, 0xd9, 0xe9, 0xb0, 0xe7, 0xd9, - 0xe9, 0xb0, 0xe7, 0xd9, 0xe9, 0xb0, 0xe7, 0xd9, 0xe9, 0xb0, 0xe8, 0xd9, - 0xe9, 0xb0, 0xe8, 0xd9, 0xe9, 0xb0, 0xe8, 0xd9, 0xe9, 0xb0, 0xe8, 0xd9, - 0xe9, 0xb0, 0xe9, 0xd9, 0xe9, 0xb0, 0xe9, 0xd9, 0xe9, 0xb0, 0xe9, 0xd9, - 0xe9, 0xb0, 0xe9, 0xd9, 0xe9, 0xb0, 0xe9, 0xd9, 0xea, 0xb0, 0xe9, 0xd9, - 0xea, 0xb0, 0xe9, 0xd9, 0xea, 0xb0, 0xe9, 0xd9, 0xea, 0xae, 0xe9, 0xd9, - 0xeb, 0xb0, 0xe9, 0xd9, 0xeb, 0xae, 0xec, 0xd9, 0xeb, 0xb0, 0xed, 0xd9, - 0xeb, 0xb0, 0xec, 0xd9, 0xec, 0xb0, 0xed, 0xd9, 0xec, 0xb0, 0xec, 0xd9, - 0xec, 0xb0, 0xed, 0xd9, 0xec, 0xb0, 0xec, 0xd9, 0xec, 0xb0, 0xed, 0xd9, - 0xec, 0xb0, 0xed, 0xd9, 0xec, 0xb0, 0xed, 0xd9, 0xec, 0xb0, 0xed, 0xd7, - 0xec, 0xb0, 0xee, 0xd9, 0xec, 0xb0, 0xee, 0xd7, 0xec, 0xb0, 0xee, 0xd9, - 0xec, 0xb0, 0xee, 0xd7, 0xec, 0xb0, 0xef, 0xd9, 0xec, 0xb0, 0xef, 0xd7, - 0xec, 0xb0, 0xef, 0xd9, 0xec, 0xb0, 0xef, 0xd7, 0xec, 0xb0, 0xf0, 0xd9, - 0xec, 0xb0, 0xf0, 0xd7, 0xec, 0xb0, 0xf0, 0xd9, 0xec, 0xb0, 0xf0, 0xd7, - 0xec, 0xb0, 0xf1, 0xd9, 0xec, 0xb0, 0xf1, 0xd7, 0xec, 0xb0, 0xf1, 0xd9, - 0xec, 0xb0, 0xf1, 0xd7, 0xec, 0xb0, 0xf2, 0xd9, 0xec, 0xb0, 0xf2, 0xd7, - 0xec, 0xb0, 0xf2, 0xd9, 0xec, 0xb0, 0xf2, 0xd7, 0xec, 0xb0, 0xf2, 0xd6, - 0xed, 0xb0, 0xf3, 0xd7, 0xec, 0xb0, 0xf3, 0xd6, 0xed, 0xb0, 0xf3, 0xd7, - 0xec, 0xb0, 0xf3, 0xd6, 0xed, 0xb0, 0xf4, 0xd7, 0xec, 0xb0, 0xf4, 0xd6, - 0xed, 0xb0, 0xf4, 0xd7, 0xec, 0xb0, 0xf4, 0xd6, 0xed, 0xb0, 0xf5, 0xd7, - 0xec, 0xb0, 0xf5, 0xd6, 0xed, 0xb0, 0xf5, 0xd7, 0xec, 0xb0, 0xf5, 0xd6, - 0xed, 0xb0, 0xf5, 0xd7, 0xec, 0xb0, 0xf6, 0xd6, 0xed, 0xb0, 0xf6, 0xd7, - 0xec, 0xb0, 0xf6, 0xd6, 0xed, 0xb0, 0xf6, 0xd7, 0xec, 0xb0, 0xf7, 0xd6, - 0xed, 0xb0, 0xf7, 0xd7, 0xec, 0xb0, 0xf7, 0xd6, 0xed, 0xb0, 0xf7, 0xd7, - 0xec, 0xb0, 0xf8, 0xd6, 0xed, 0xb0, 0xf8, 0xd7, 0xec, 0xb0, 0xf8, 0xd6, - 0xed, 0xb0, 0xf8, 0xd7, 0xec, 0xb0, 0xf8, 0xd6, 0xed, 0xb0, 0xf9, 0xd7, - 0xec, 0xb0, 0xf9, 0xd6, 0xed, 0xb0, 0xf9, 0xd7, 0xec, 0xb0, 0xf9, 0xd6, - 0xed, 0xb0, 0xfa, 0xd7, 0xec, 0xb0, 0xfa, 0xd6, 0xed, 0xb0, 0xfa, 0xd7, - 0xec, 0xb0, 0xfa, 0xd6, 0xed, 0xb0, 0xfa, 0xd7, 0xec, 0xb0, 0xfb, 0xd6, - 0xed, 0xb0, 0xfb, 0xd7, 0xec, 0xb0, 0xfb, 0xd6, 0xed, 0xb0, 0xfb, 0xd7, - 0xec, 0xb0, 0xfc, 0xd6, 0xed, 0xb0, 0xfc, 0xc7, 0xf7, 0xb0, 0xfc, 0xc7, - 0xf7, 0xb0, 0xfc, 0xc7, 0xf7, 0xb0, 0xfc, 0xc7, 0xf7, 0xb0, 0xfd, 0xc7, - 0xf7, 0xb0, 0xfd, 0xc7, 0xf7, 0xb0, 0xfd, 0xc7, 0xf7, 0xb0, 0xfd, 0xc7, - 0xf7, 0xb0, 0xfe, 0xc7, 0xf7, 0xb0, 0xfe, 0xc7, 0xf7, 0xb0, 0xfe, 0xc7, - 0xf7, 0xb0, 0xfe, 0xc7, 0xf7, 0xb0, 0xfe, 0xc7, 0xf7, 0xb0, 0xff, 0xc7, - 0xf7, 0xb0, 0xff, 0xc7, 0xf7, 0xb0, 0x03, 0xdf, 0x89, 0xb1, 0x0a, 0xdd, - 0x8a, 0xb1, 0x0f, 0xdf, 0x89, 0xb1, 0x14, 0xdd, 0x8a, 0xb1, 0x17, 0xdf, - 0x89, 0xb1, 0x1b, 0xdd, 0x8a, 0xb1, 0x1e, 0xdf, 0x89, 0xb1, 0x20, 0xdd, - 0x8a, 0xb1, 0x23, 0xdf, 0x89, 0xb1, 0x25, 0xdd, 0x8a, 0xb1, 0x27, 0xdb, - 0x8a, 0xb1, 0x29, 0xdd, 0x8a, 0xb1, 0x2b, 0xdb, 0x8a, 0xb1, 0x2d, 0xdd, - 0x8a, 0xb1, 0x2f, 0xdb, 0x8a, 0xb1, 0x31, 0xdd, 0x8a, 0xb1, 0x32, 0xdb, - 0x8a, 0xb1, 0x34, 0xdd, 0x8a, 0xb1, 0x35, 0xdb, 0x8a, 0xb1, 0x37, 0xdd, - 0x8a, 0xb1, 0x38, 0xdb, 0x8a, 0xb1, 0x3a, 0xdd, 0x8a, 0xb1, 0x3b, 0xdb, - 0x8a, 0xb1, 0x3c, 0xdd, 0x8a, 0xb1, 0x3e, 0xdb, 0x8a, 0xb1, 0x3f, 0xdd, - 0x8a, 0xb1, 0x40, 0xdb, 0x8a, 0xb1, 0x42, 0xdd, 0x8a, 0xb1, 0x43, 0xdb, - 0x8a, 0xb1, 0x44, 0xdd, 0x8a, 0xb1, 0x45, 0xdb, 0x8a, 0xb1, 0x46, 0xdd, - 0x8a, 0xb1, 0x47, 0xdb, 0x8a, 0xb1, 0x48, 0xdd, 0x8a, 0xb1, 0x49, 0xdb, - 0x8a, 0xb1, 0x4a, 0xdd, 0x8a, 0xb1, 0x4b, 0xdb, 0x8a, 0xb1, 0x4c, 0xdd, - 0x8a, 0xb1, 0x4d, 0xdb, 0x8a, 0xb1, 0x4e, 0xdd, 0x8a, 0xb1, 0x4f, 0xdb, - 0x8a, 0xb1, 0x50, 0xdd, 0x8a, 0xb1, 0x51, 0xdb, 0x8a, 0xb1, 0x52, 0xdd, - 0x8a, 0xb1, 0x53, 0xdb, 0x8a, 0xb1, 0x54, 0xdd, 0x8a, 0xb1, 0x55, 0xdb, - 0x8a, 0xb1, 0x56, 0xdd, 0x8a, 0xb1, 0x57, 0xdb, 0x8a, 0xb1, 0x58, 0xdd, - 0x8a, 0xb1, 0x58, 0xdb, 0x8a, 0xb1, 0x59, 0xdd, 0x8a, 0xb1, 0x5a, 0xdb, - 0x8a, 0xb1, 0x5b, 0xdd, 0x8a, 0xb1, 0x5c, 0xdb, 0x8a, 0xb1, 0x5d, 0xdd, - 0x8a, 0xb1, 0x5d, 0xdb, 0x8a, 0xb1, 0x5e, 0xdd, 0x8a, 0xb1, 0x5f, 0xdb, - 0x8a, 0xb1, 0x60, 0xdd, 0x8a, 0xb1, 0x60, 0xdb, 0x8a, 0xb1, 0x61, 0xdd, - 0x8a, 0xb1, 0x62, 0xdb, 0x8a, 0xb1, 0x63, 0xdd, 0x8a, 0xb1, 0x63, 0xdb, - 0x8a, 0xb1, 0x64, 0xdd, 0x8a, 0xb1, 0x65, 0xdb, 0x8a, 0xb1, 0x66, 0xdd, - 0x8a, 0xb1, 0x66, 0xdb, 0x8a, 0xb1, 0x67, 0xdd, 0x8a, 0xb1, 0x68, 0xdb, - 0x8a, 0xb1, 0x68, 0xda, 0x8b, 0xb1, 0x69, 0xdb, 0x8a, 0xb1, 0x6a, 0xda, - 0x8b, 0xb1, 0x6a, 0xdb, 0x8a, 0xb1, 0x6b, 0xda, 0x8b, 0xb1, 0x6c, 0xdb, - 0x8a, 0xb1, 0x6c, 0xda, 0x8b, 0xb1, 0x6d, 0xdb, 0x8a, 0xb1, 0x6e, 0xda, - 0x8b, 0xb1, 0x6e, 0xdb, 0x8a, 0xb1, 0x6f, 0xda, 0x8b, 0xb1, 0x70, 0xdb, - 0x8a, 0xb1, 0x70, 0xda, 0x8b, 0xb1, 0x71, 0xdb, 0x8a, 0xb1, 0x72, 0xda, - 0x8b, 0xb1, 0x72, 0xdb, 0x8a, 0xb1, 0x73, 0xda, 0x8b, 0xb1, 0x73, 0xdb, - 0x8a, 0xb1, 0x74, 0xda, 0x8b, 0xb1, 0x75, 0xdb, 0x8a, 0xb1, 0x75, 0xda, - 0x8b, 0xb1, 0x76, 0xdb, 0x8a, 0xb1, 0x76, 0xda, 0x8b, 0xb1, 0x77, 0xdb, - 0x8a, 0xb1, 0x78, 0xda, 0x8b, 0xb1, 0x78, 0xdb, 0x8a, 0xb1, 0x79, 0xda, - 0x8b, 0xb1, 0x79, 0xdb, 0x8a, 0xb1, 0x7a, 0xda, 0x8b, 0xb1, 0x7a, 0xdb, - 0x8a, 0xb1, 0x7b, 0xda, 0x8b, 0xb1, 0x7c, 0xdb, 0x8a, 0xb1, 0x7c, 0xda, - 0x8b, 0xb1, 0x7d, 0xdb, 0x8a, 0xb1, 0x7d, 0xda, 0x8b, 0xb1, 0x7e, 0xdb, - 0x8a, 0xb1, 0x7e, 0xda, 0x8b, 0xb1, 0x7f, 0xd9, 0x8b, 0xb1, 0x7f, 0xda, - 0x8b, 0xb1, 0x80, 0xd9, 0x8b, 0xb1, 0x81, 0xda, 0x8b, 0xb1, 0x81, 0xd9, - 0x8b, 0xb1, 0x82, 0xda, 0x8b, 0xb1, 0x82, 0xd9, 0x8b, 0xb1, 0x83, 0xda, - 0x8b, 0xb1, 0x83, 0xd9, 0x8b, 0xb1, 0x84, 0xda, 0x8b, 0xb1, 0x84, 0xd9, - 0x8b, 0xb1, 0x85, 0xda, 0x8b, 0xb1, 0x85, 0xd9, 0x8b, 0xb1, 0x86, 0xda, - 0x8b, 0xb1, 0x86, 0xd9, 0x8b, 0xb1, 0x87, 0xda, 0x8b, 0xb1, 0x87, 0xd9, - 0x8b, 0xb1, 0x88, 0xda, 0x8b, 0xb1, 0x88, 0xd9, 0x8b, 0xb1, 0x89, 0xda, - 0x8b, 0xb1, 0x89, 0xd9, 0x8b, 0xb1, 0x8a, 0xd9, 0x8c, 0xb1, 0x8a, 0xd9, - 0x8b, 0xb1, 0x8b, 0xd9, 0x8c, 0xb1, 0x8a, 0xd9, 0x8b, 0xb1, 0x8b, 0xd9, - 0x8c, 0xb1, 0x8a, 0xd9, 0x8c, 0xb1, 0x8b, 0xd9, 0x8d, 0xb1, 0x8b, 0xd9, - 0x8d, 0xaf, 0x8b, 0xd9, 0x8e, 0xb1, 0x8b, 0xd9, 0x8e, 0xaf, 0x8b, 0xd9, - 0x8e, 0xb1, 0x8b, 0xd9, 0x8f, 0xaf, 0x8b, 0xd9, 0x8f, 0xb1, 0x8b, 0xd9, - 0x90, 0xaf, 0x8b, 0xd9, 0x90, 0xb1, 0x8b, 0xd9, 0x91, 0xaf, 0x8b, 0xd9, - 0x91, 0xb1, 0x8b, 0xd9, 0x92, 0xaf, 0x8b, 0xd9, 0x92, 0xb1, 0x8b, 0xd9, - 0x93, 0xaf, 0x8b, 0xd9, 0x93, 0xb1, 0x8b, 0xd9, 0x94, 0xaf, 0x8b, 0xd9, - 0x94, 0xb1, 0x8b, 0xd9, 0x94, 0xaf, 0x8b, 0xd9, 0x95, 0xb1, 0x8b, 0xd9, - 0x95, 0xaf, 0x8b, 0xd9, 0x96, 0xb1, 0x8b, 0xd9, 0x96, 0xaf, 0x8b, 0xd9, - 0x97, 0xb1, 0x8b, 0xd9, 0x97, 0xaf, 0x8b, 0xd9, 0x98, 0xb1, 0x8b, 0xd9, - 0x98, 0xaf, 0x8b, 0xd9, 0x98, 0xb1, 0x8b, 0xd9, 0x99, 0xaf, 0x8b, 0xd9, - 0x99, 0xb1, 0x8b, 0xd9, 0x9a, 0xaf, 0x8b, 0xd9, 0x9a, 0xb1, 0x8b, 0xd9, - 0x9a, 0xaf, 0x8b, 0xd9, 0x9b, 0xb1, 0x8b, 0xd9, 0x9b, 0xaf, 0x8c, 0xd9, - 0x9c, 0xab, 0x8b, 0xd9, 0x9c, 0xaf, 0x8c, 0xd9, 0x9d, 0xab, 0x8b, 0xd9, - 0x9d, 0xaf, 0x8c, 0xd9, 0x9d, 0xab, 0x8b, 0xd9, 0x9e, 0xaf, 0x8c, 0xd9, - 0x9e, 0xab, 0x8b, 0xd9, 0x9f, 0xaf, 0x8c, 0xd9, 0x9f, 0xab, 0x8b, 0xd9, - 0x9f, 0xaf, 0x8c, 0xd9, 0xa0, 0xab, 0x8b, 0xd9, 0xa0, 0xaf, 0x8c, 0xd9, - 0xa1, 0xab, 0x8b, 0xd9, 0xa1, 0xaf, 0xa3, 0xd9, 0xa1, 0x98, 0xa2, 0xd9, - 0xa2, 0x97, 0xa3, 0xd9, 0xa2, 0x98, 0xa3, 0xd9, 0xa3, 0x97, 0xa3, 0xd9, - 0xa3, 0x98, 0xa3, 0xd9, 0xa3, 0x97, 0xa3, 0xd9, 0xa4, 0x98, 0xa3, 0xd9, - 0xa4, 0x97, 0xa3, 0xd9, 0xa5, 0x98, 0xa3, 0xd9, 0xa5, 0x97, 0xa3, 0xd9, - 0xa5, 0x98, 0xa3, 0xd9, 0xa6, 0x97, 0xa3, 0xd9, 0xa6, 0x98, 0xa3, 0xd9, - 0xa6, 0x97, 0xa3, 0xd9, 0xa7, 0x98, 0xa3, 0xd9, 0xa7, 0x97, 0xa3, 0xd9, - 0xa8, 0x98, 0xa3, 0xd9, 0xa8, 0x97, 0xa3, 0xd9, 0xa8, 0x98, 0xa3, 0xd9, - 0xa9, 0x97, 0xa3, 0xd9, 0xa9, 0x98, 0xa3, 0xd9, 0xaa, 0x97, 0xa3, 0xd9, - 0xaa, 0x98, 0xa3, 0xd9, 0xaa, 0x97, 0xa3, 0xd9, 0xab, 0x98, 0xa3, 0xd9, - 0xab, 0x97, 0xa3, 0xd9, 0xab, 0x98, 0xa3, 0xd9, 0xac, 0x97, 0xa3, 0xd9, - 0xac, 0x98, 0xa3, 0xd9, 0xac, 0x97, 0xa3, 0xd9, 0xad, 0x98, 0xa3, 0xd9, - 0xad, 0x97, 0xa3, 0xd9, 0xae, 0x98, 0xa3, 0xd9, 0xae, 0x97, 0xa3, 0xd9, - 0xae, 0x98, 0xa3, 0xd9, 0xaf, 0x97, 0xa3, 0xd9, 0xaf, 0x98, 0xa3, 0xd9, - 0xaf, 0x97, 0xa3, 0xd9, 0xb0, 0x98, 0xa3, 0xd9, 0xb0, 0x97, 0xa3, 0xd9, - 0xb0, 0x98, 0xa3, 0xd9, 0xb1, 0x97, 0xa3, 0xd9, 0xb1, 0x98, 0xa3, 0xd9, - 0xb2, 0x97, 0xa3, 0xd9, 0xb2, 0x98, 0xa3, 0xd9, 0xb2, 0x97, 0xa3, 0xd9, - 0xb3, 0x98, 0xa3, 0xd9, 0xb3, 0x97, 0xa3, 0xd9, 0xb3, 0x98, 0xa3, 0xd9, - 0xb4, 0x97, 0xa3, 0xd9, 0xb4, 0x98, 0xa3, 0xd9, 0xb4, 0x97, 0xa3, 0xd9, - 0xb5, 0x98, 0xa3, 0xd9, 0xb5, 0x97, 0xa3, 0xd9, 0xb5, 0x98, 0xa3, 0xd9, - 0xb6, 0x97, 0xa3, 0xd9, 0xb6, 0x98, 0xa3, 0xd9, 0xb6, 0x97, 0xa3, 0xd9, - 0xb7, 0x98, 0xa3, 0xd9, 0xb7, 0x97, 0xa3, 0xd9, 0xb7, 0x98, 0xa3, 0xd9, - 0xb8, 0x97, 0xa3, 0xd9, 0xb8, 0x98, 0xa3, 0xd9, 0xb8, 0x97, 0xd0, 0xd9, - 0xb9, 0xb8, 0xd0, 0xd9, 0xb9, 0xb5, 0xd0, 0xd9, 0xb9, 0xb8, 0xd0, 0xd9, - 0xba, 0xb5, 0xd0, 0xd9, 0xba, 0xb8, 0xd0, 0xd9, 0xba, 0xb5, 0xd0, 0xd9, - 0xbb, 0xb8, 0xd0, 0xd9, 0xbb, 0xb5, 0xd0, 0xd9, 0xbb, 0xb8, 0xd0, 0xd9, - 0xbc, 0xb5, 0xd0, 0xd9, 0xbc, 0xb8, 0xd0, 0xd9, 0xbc, 0xb5, 0xd0, 0xd9, - 0xbd, 0xb8, 0xd0, 0xd9, 0xbd, 0xb5, 0xd0, 0xd9, 0xbd, 0xb8, 0xd0, 0xd9, - 0xbe, 0xb5, 0xd0, 0xd9, 0xbe, 0xb8, 0xd0, 0xd9, 0xbe, 0xb5, 0xd0, 0xd9, - 0xbf, 0xb8, 0xd0, 0xd9, 0xbf, 0xb5, 0xd0, 0xd9, 0xbf, 0xb8, 0xd0, 0xd9, - 0xc0, 0xb5, 0xd0, 0xd9, 0xc0, 0xb8, 0xd0, 0xd9, 0xc0, 0xb5, 0xd0, 0xd9, - 0xc1, 0xb8, 0xd0, 0xd9, 0xc1, 0xb5, 0xd0, 0xd9, 0xc1, 0xb8, 0xd0, 0xd9, - 0xc1, 0xb5, 0xd0, 0xd9, 0xc2, 0xb8, 0xd0, 0xd9, 0xc2, 0xb5, 0xd0, 0xd9, - 0xc2, 0xb8, 0xd0, 0xd9, 0xc3, 0xb5, 0xd0, 0xd9, 0xc3, 0xb8, 0xd0, 0xd9, - 0xc3, 0xb5, 0xd1, 0xd9, 0xc4, 0xb3, 0xd0, 0xd9, 0xc4, 0xb5, 0xd1, 0xd9, - 0xc4, 0xb3, 0xd0, 0xd9, 0xc5, 0xb5, 0xd1, 0xd9, 0xc5, 0xb3, 0xd0, 0xd9, - 0xc5, 0xb5, 0xd1, 0xd9, 0xc6, 0xb3, 0xd0, 0xd9, 0xc6, 0xb5, 0xd1, 0xd9, - 0xc6, 0xb3, 0xd0, 0xd9, 0xc6, 0xb5, 0xd1, 0xd9, 0xc7, 0xb3, 0xd0, 0xd9, - 0xc7, 0xb5, 0xd1, 0xd9, 0xc7, 0xb3, 0xd0, 0xd9, 0xc8, 0xb5, 0xd1, 0xd9, - 0xc8, 0xb3, 0xd0, 0xd9, 0xc8, 0xb5, 0xd1, 0xd9, 0xc9, 0xb3, 0xd0, 0xd9, - 0xc9, 0xb5, 0xd1, 0xd9, 0xc9, 0xb3, 0xd0, 0xd9, 0xc9, 0xb5, 0xd1, 0xd9, - 0xca, 0xb3, 0xd0, 0xd9, 0xca, 0xb5, 0xd1, 0xd9, 0xca, 0xb3, 0xd0, 0xd9, - 0xcb, 0xb5, 0xd1, 0xd9, 0xcb, 0xb3, 0xd0, 0xd9, 0xcb, 0xb5, 0xd1, 0xd9, - 0xcc, 0xb3, 0xd0, 0xd9, 0xcc, 0xb5, 0xd1, 0xd9, 0xcc, 0xb3, 0xd1, 0xd9, - 0xcc, 0xb1, 0xd1, 0xd9, 0xcd, 0xb3, 0xd1, 0xd9, 0xcd, 0xb1, 0xd1, 0xd9, - 0xcd, 0xb3, 0xd1, 0xd9, 0xce, 0xb1, 0xd1, 0xd9, 0xce, 0xb3, 0xd1, 0xd9, - 0xce, 0xb1, 0xd1, 0xd9, 0xce, 0xb3, 0xd1, 0xd9, 0xcf, 0xb1, 0xd1, 0xd9, - 0xcf, 0xb3, 0xd1, 0xd9, 0xcf, 0xb1, 0xd1, 0xd9, 0xd0, 0xb3, 0xd1, 0xd9, - 0xd0, 0xb1, 0xd1, 0xd9, 0xd0, 0xb1, 0xd1, 0xd9, 0xd0, 0xb1, 0xd1, 0xd9, - 0xd1, 0xb1, 0xd1, 0xd9, 0xd0, 0xb1, 0xd1, 0xd9, 0xd1, 0xb1, 0xd2, 0xd9, - 0xd0, 0xb1, 0xd2, 0xd9, 0xd1, 0xb1, 0xd2, 0xd8, 0xd1, 0xb1, 0xd2, 0xd9, - 0xd1, 0xb1, 0xd3, 0xd8, 0xd1, 0xb1, 0xd3, 0xd9, 0xd1, 0xb1, 0xd3, 0xd8, - 0xd1, 0xb1, 0xd4, 0xd9, 0xd1, 0xb1, 0xd4, 0xd8, 0xd1, 0xb1, 0xd4, 0xd9, - 0xd1, 0xb1, 0xd4, 0xd8, 0xd1, 0xb1, 0xd5, 0xd9, 0xd1, 0xb1, 0xd5, 0xd8, - 0xd1, 0xb1, 0xd5, 0xd9, 0xd1, 0xb1, 0xd6, 0xd8, 0xd1, 0xb1, 0xd6, 0xd9, - 0xd1, 0xb1, 0xd6, 0xd8, 0xd1, 0xb1, 0xd6, 0xd9, 0xd1, 0xb1, 0xd7, 0xd8, - 0xd1, 0xb1, 0xd7, 0xd9, 0xd1, 0xb1, 0xd7, 0xd8, 0xd1, 0xb1, 0xd7, 0xd9, - 0xd1, 0xb1, 0xd8, 0xd8, 0xd1, 0xb1, 0xd8, 0xd6, 0xd1, 0xb1, 0xd8, 0xd8, - 0xd1, 0xb1, 0xd9, 0xd6, 0xd1, 0xb1, 0xd9, 0xd8, 0xd1, 0xb1, 0xd9, 0xd6, - 0xd1, 0xb1, 0xd9, 0xd8, 0xd1, 0xb1, 0xda, 0xd6, 0xd1, 0xb1, 0xda, 0xd8, - 0xd1, 0xb1, 0xda, 0xd6, 0xd1, 0xb1, 0xda, 0xd8, 0xd1, 0xb1, 0xdb, 0xd6, - 0xd1, 0xb1, 0xdb, 0xd8, 0xd1, 0xb1, 0xdb, 0xd6, 0xd1, 0xb1, 0xdb, 0xd8, - 0xd1, 0xb1, 0xdc, 0xd6, 0xd1, 0xb1, 0xdc, 0xd8, 0xd1, 0xb1, 0xdc, 0xd6, - 0xd1, 0xb1, 0xdd, 0xd8, 0xd1, 0xb1, 0xdd, 0xd6, 0xd1, 0xb1, 0xdd, 0xd8, - 0xd1, 0xb1, 0xdd, 0xd6, 0xd1, 0xb1, 0xde, 0xda, 0xe9, 0xb1, 0xde, 0xdc, - 0xe9, 0xb1, 0xde, 0xda, 0xe9, 0xb1, 0xde, 0xdc, 0xe9, 0xb1, 0xdf, 0xda, - 0xe9, 0xb1, 0xdf, 0xdc, 0xe9, 0xb1, 0xdf, 0xda, 0xe9, 0xb1, 0xdf, 0xdc, - 0xe9, 0xb1, 0xe0, 0xda, 0xe9, 0xb1, 0xe0, 0xd9, 0xe9, 0xb1, 0xe0, 0xda, - 0xe9, 0xb1, 0xe1, 0xd9, 0xe9, 0xb1, 0xe1, 0xda, 0xe9, 0xb1, 0xe1, 0xd9, - 0xe9, 0xb1, 0xe1, 0xda, 0xe9, 0xb1, 0xe2, 0xd9, 0xe9, 0xb1, 0xe2, 0xda, - 0xe9, 0xb1, 0xe2, 0xd9, 0xe9, 0xb1, 0xe2, 0xda, 0xe9, 0xb1, 0xe3, 0xd9, - 0xe9, 0xb1, 0xe3, 0xda, 0xe9, 0xb1, 0xe3, 0xd9, 0xe9, 0xb1, 0xe3, 0xda, - 0xe9, 0xb1, 0xe4, 0xd9, 0xe9, 0xb1, 0xe4, 0xda, 0xe9, 0xb1, 0xe4, 0xd9, - 0xe9, 0xb1, 0xe4, 0xda, 0xe9, 0xb1, 0xe5, 0xd9, 0xe9, 0xb1, 0xe5, 0xda, - 0xe9, 0xb1, 0xe5, 0xd9, 0xe9, 0xb1, 0xe5, 0xda, 0xe9, 0xb1, 0xe6, 0xd9, - 0xe9, 0xb1, 0xe6, 0xda, 0xe9, 0xb1, 0xe6, 0xd9, 0xe9, 0xb1, 0xe6, 0xda, - 0xe9, 0xb1, 0xe7, 0xd9, 0xe9, 0xb1, 0xe7, 0xda, 0xe9, 0xb1, 0xe7, 0xd9, - 0xe9, 0xb1, 0xe7, 0xd9, 0xe9, 0xb1, 0xe8, 0xd9, 0xe9, 0xb1, 0xe8, 0xd9, - 0xe9, 0xb1, 0xe8, 0xd9, 0xe9, 0xb1, 0xe8, 0xd9, 0xe9, 0xb1, 0xe9, 0xd9, - 0xe9, 0xb1, 0xe9, 0xd9, 0xe9, 0xb1, 0xe9, 0xd9, 0xe9, 0xb1, 0xe9, 0xd9, - 0xe9, 0xb1, 0xe9, 0xd9, 0xea, 0xb1, 0xe9, 0xd9, 0xea, 0xb1, 0xe9, 0xd9, - 0xea, 0xb1, 0xe9, 0xd9, 0xea, 0xb1, 0xe9, 0xd9, 0xeb, 0xb1, 0xec, 0xd9, - 0xeb, 0xb3, 0xec, 0xd9, 0xeb, 0xb1, 0xec, 0xd9, 0xeb, 0xb3, 0xec, 0xd9, - 0xec, 0xb1, 0xed, 0xd9, 0xec, 0xb1, 0xec, 0xd9, 0xec, 0xb1, 0xed, 0xd9, - 0xec, 0xb1, 0xec, 0xd9, 0xec, 0xb1, 0xed, 0xd9, 0xec, 0xb1, 0xed, 0xd9, - 0xec, 0xb1, 0xed, 0xd9, 0xec, 0xb1, 0xed, 0xd8, 0xec, 0xb1, 0xee, 0xd9, - 0xec, 0xb1, 0xee, 0xd8, 0xec, 0xb1, 0xee, 0xd9, 0xec, 0xb1, 0xee, 0xd8, - 0xec, 0xb1, 0xef, 0xd9, 0xec, 0xb1, 0xef, 0xd8, 0xec, 0xb1, 0xef, 0xd9, - 0xec, 0xb1, 0xef, 0xd8, 0xec, 0xb1, 0xf0, 0xd9, 0xec, 0xb1, 0xf0, 0xd8, - 0xec, 0xb1, 0xf0, 0xd9, 0xec, 0xb1, 0xf0, 0xd8, 0xec, 0xb1, 0xf1, 0xd9, - 0xec, 0xb1, 0xf1, 0xd8, 0xec, 0xb1, 0xf1, 0xd9, 0xec, 0xb1, 0xf1, 0xd8, - 0xec, 0xb1, 0xf2, 0xd9, 0xec, 0xb1, 0xf2, 0xd8, 0xec, 0xb1, 0xf2, 0xd9, - 0xec, 0xb1, 0xf2, 0xd8, 0xec, 0xb1, 0xf2, 0xd9, 0xec, 0xb1, 0xf3, 0xd8, - 0xec, 0xb1, 0xf3, 0xd9, 0xec, 0xb1, 0xf3, 0xd8, 0xec, 0xb1, 0xf3, 0xd9, - 0xec, 0xb1, 0xf4, 0xd8, 0xec, 0xb1, 0xf4, 0xd9, 0xec, 0xb1, 0xf4, 0xd8, - 0xec, 0xb1, 0xf4, 0xd9, 0xec, 0xb1, 0xf5, 0xd8, 0xec, 0xb1, 0xf5, 0xd9, - 0xec, 0xb1, 0xf5, 0xd8, 0xec, 0xb1, 0xf5, 0xd6, 0xed, 0xb1, 0xf5, 0xd8, - 0xec, 0xb1, 0xf6, 0xd6, 0xed, 0xb1, 0xf6, 0xd8, 0xec, 0xb1, 0xf6, 0xd6, - 0xed, 0xb1, 0xf6, 0xd8, 0xec, 0xb1, 0xf7, 0xd6, 0xed, 0xb1, 0xf7, 0xd8, - 0xec, 0xb1, 0xf7, 0xd6, 0xed, 0xb1, 0xf7, 0xd8, 0xec, 0xb1, 0xf8, 0xd6, - 0xed, 0xb1, 0xf8, 0xd8, 0xec, 0xb1, 0xf8, 0xd6, 0xed, 0xb1, 0xf8, 0xd8, - 0xec, 0xb1, 0xf8, 0xd6, 0xed, 0xb1, 0xf9, 0xd8, 0xec, 0xb1, 0xf9, 0xd6, - 0xed, 0xb1, 0xf9, 0xd8, 0xec, 0xb1, 0xf9, 0xd6, 0xed, 0xb1, 0xfa, 0xd8, - 0xec, 0xb1, 0xfa, 0xd6, 0xed, 0xb1, 0xfa, 0xd8, 0xec, 0xb1, 0xfa, 0xd6, - 0xed, 0xb1, 0xfa, 0xd8, 0xec, 0xb1, 0xfb, 0xd6, 0xed, 0xb1, 0xfb, 0xd8, - 0xec, 0xb1, 0xfb, 0xd6, 0xed, 0xb1, 0xfb, 0xd8, 0xec, 0xb1, 0xfc, 0xd6, - 0xed, 0xb1, 0xfc, 0xc7, 0xf7, 0xb1, 0xfc, 0xc7, 0xf7, 0xb1, 0xfc, 0xc7, - 0xf7, 0xb1, 0xfc, 0xc7, 0xf7, 0xb1, 0xfd, 0xc7, 0xf7, 0xb1, 0xfd, 0xc7, - 0xf7, 0xb1, 0xfd, 0xc7, 0xf7, 0xb1, 0xfd, 0xc7, 0xf7, 0xb1, 0xfe, 0xc7, - 0xf7, 0xb1, 0xfe, 0xc7, 0xf7, 0xb1, 0xfe, 0xc7, 0xf7, 0xb1, 0xfe, 0xc7, - 0xf7, 0xb1, 0xfe, 0xc7, 0xf7, 0xb1, 0xff, 0xc7, 0xf7, 0xb1, 0xff, 0xc7, - 0xf7, 0xb1, 0x03, 0xdf, 0x89, 0xb1, 0x0a, 0xdf, 0x89, 0xb1, 0x0f, 0xdf, - 0x89, 0xb1, 0x14, 0xdf, 0x89, 0xb1, 0x17, 0xdf, 0x89, 0xb1, 0x1b, 0xdf, - 0x89, 0xb1, 0x1e, 0xdf, 0x89, 0xb1, 0x20, 0xdf, 0x89, 0xb1, 0x23, 0xdf, - 0x89, 0xb1, 0x25, 0xdf, 0x89, 0xb1, 0x27, 0xdf, 0x89, 0xb1, 0x29, 0xdf, - 0x89, 0xb1, 0x2b, 0xdf, 0x89, 0xb1, 0x2d, 0xdf, 0x89, 0xb1, 0x2f, 0xdf, - 0x89, 0xb1, 0x31, 0xdd, 0x8a, 0xb1, 0x32, 0xdf, 0x89, 0xb1, 0x34, 0xdd, - 0x8a, 0xb1, 0x35, 0xdf, 0x89, 0xb1, 0x37, 0xdd, 0x8a, 0xb1, 0x38, 0xdf, - 0x89, 0xb1, 0x3a, 0xdd, 0x8a, 0xb1, 0x3b, 0xdf, 0x89, 0xb1, 0x3c, 0xdd, - 0x8a, 0xb1, 0x3e, 0xdf, 0x89, 0xb1, 0x3f, 0xdd, 0x8a, 0xb1, 0x40, 0xdf, - 0x89, 0xb1, 0x42, 0xdd, 0x8a, 0xb1, 0x43, 0xdf, 0x89, 0xb1, 0x44, 0xdd, - 0x8a, 0xb1, 0x45, 0xdf, 0x89, 0xb1, 0x46, 0xdd, 0x8a, 0xb1, 0x47, 0xdf, - 0x89, 0xb1, 0x48, 0xdd, 0x8a, 0xb1, 0x49, 0xdc, 0x8a, 0xb1, 0x4a, 0xdd, - 0x8a, 0xb1, 0x4b, 0xdc, 0x8a, 0xb1, 0x4c, 0xdd, 0x8a, 0xb1, 0x4d, 0xdc, - 0x8a, 0xb1, 0x4e, 0xdd, 0x8a, 0xb1, 0x4f, 0xdc, 0x8a, 0xb1, 0x50, 0xdd, - 0x8a, 0xb1, 0x51, 0xdc, 0x8a, 0xb1, 0x52, 0xdd, 0x8a, 0xb1, 0x53, 0xdc, - 0x8a, 0xb1, 0x54, 0xdd, 0x8a, 0xb1, 0x55, 0xdc, 0x8a, 0xb1, 0x56, 0xdd, - 0x8a, 0xb1, 0x57, 0xdc, 0x8a, 0xb1, 0x58, 0xdd, 0x8a, 0xb1, 0x58, 0xdc, - 0x8a, 0xb1, 0x59, 0xdd, 0x8a, 0xb1, 0x5a, 0xdc, 0x8a, 0xb1, 0x5b, 0xdd, - 0x8a, 0xb1, 0x5c, 0xdc, 0x8a, 0xb1, 0x5d, 0xdd, 0x8a, 0xb1, 0x5d, 0xdc, - 0x8a, 0xb1, 0x5e, 0xdd, 0x8a, 0xb1, 0x5f, 0xdc, 0x8a, 0xb1, 0x60, 0xdd, - 0x8a, 0xb1, 0x60, 0xdc, 0x8a, 0xb1, 0x61, 0xdd, 0x8a, 0xb1, 0x62, 0xdc, - 0x8a, 0xb1, 0x63, 0xdd, 0x8a, 0xb1, 0x63, 0xdc, 0x8a, 0xb1, 0x64, 0xdd, - 0x8a, 0xb1, 0x65, 0xdc, 0x8a, 0xb1, 0x66, 0xda, 0x8b, 0xb1, 0x66, 0xdc, - 0x8a, 0xb1, 0x67, 0xda, 0x8b, 0xb1, 0x68, 0xdc, 0x8a, 0xb1, 0x68, 0xda, - 0x8b, 0xb1, 0x69, 0xdc, 0x8a, 0xb1, 0x6a, 0xda, 0x8b, 0xb1, 0x6a, 0xdc, - 0x8a, 0xb1, 0x6b, 0xda, 0x8b, 0xb1, 0x6c, 0xdc, 0x8a, 0xb1, 0x6c, 0xda, - 0x8b, 0xb1, 0x6d, 0xdc, 0x8a, 0xb1, 0x6e, 0xda, 0x8b, 0xb1, 0x6e, 0xdc, - 0x8a, 0xb1, 0x6f, 0xda, 0x8b, 0xb1, 0x70, 0xdc, 0x8a, 0xb1, 0x70, 0xda, - 0x8b, 0xb1, 0x71, 0xdc, 0x8a, 0xb1, 0x72, 0xda, 0x8b, 0xb1, 0x72, 0xdc, - 0x8a, 0xb1, 0x73, 0xda, 0x8b, 0xb1, 0x73, 0xdc, 0x8a, 0xb1, 0x74, 0xda, - 0x8b, 0xb1, 0x75, 0xdc, 0x8a, 0xb1, 0x75, 0xda, 0x8b, 0xb1, 0x76, 0xdc, - 0x8a, 0xb1, 0x76, 0xda, 0x8b, 0xb1, 0x77, 0xdc, 0x8a, 0xb1, 0x78, 0xda, - 0x8b, 0xb1, 0x78, 0xdc, 0x8a, 0xb1, 0x79, 0xda, 0x8b, 0xb1, 0x79, 0xdc, - 0x8a, 0xb1, 0x7a, 0xda, 0x8b, 0xb1, 0x7a, 0xdc, 0x8a, 0xb1, 0x7b, 0xda, - 0x8b, 0xb1, 0x7c, 0xdc, 0x8a, 0xb1, 0x7c, 0xda, 0x8b, 0xb1, 0x7d, 0xdc, - 0x8a, 0xb1, 0x7d, 0xda, 0x8b, 0xb1, 0x7e, 0xdc, 0x8a, 0xb1, 0x7e, 0xda, - 0x8b, 0xb1, 0x7f, 0xd9, 0x8b, 0xb1, 0x7f, 0xda, 0x8b, 0xb1, 0x80, 0xd9, - 0x8b, 0xb1, 0x81, 0xda, 0x8b, 0xb1, 0x81, 0xd9, 0x8b, 0xb1, 0x82, 0xda, - 0x8b, 0xb1, 0x82, 0xd9, 0x8b, 0xb1, 0x83, 0xda, 0x8b, 0xb1, 0x83, 0xd9, - 0x8b, 0xb1, 0x84, 0xda, 0x8b, 0xb1, 0x84, 0xd9, 0x8b, 0xb1, 0x85, 0xda, - 0x8b, 0xb1, 0x85, 0xd9, 0x8b, 0xb1, 0x86, 0xda, 0x8b, 0xb1, 0x86, 0xd9, - 0x8b, 0xb1, 0x87, 0xda, 0x8b, 0xb1, 0x87, 0xd9, 0x8b, 0xb1, 0x88, 0xda, - 0x8b, 0xb1, 0x88, 0xd9, 0x8b, 0xb1, 0x89, 0xda, 0x8b, 0xb1, 0x89, 0xd9, - 0x8b, 0xb1, 0x8a, 0xda, 0x8b, 0xb1, 0x8a, 0xd9, 0x8b, 0xb1, 0x8b, 0xda, - 0x8b, 0xb1, 0x8a, 0xd9, 0x8b, 0xb1, 0x8b, 0xd9, 0x8c, 0xb1, 0x8a, 0xd9, - 0x8c, 0xb1, 0x8b, 0xd9, 0x8d, 0xb1, 0x8a, 0xd9, 0x8d, 0xb1, 0x8b, 0xd9, - 0x8e, 0xb1, 0x8a, 0xd9, 0x8e, 0xb1, 0x8b, 0xd9, 0x8e, 0xb1, 0x8b, 0xd9, - 0x8f, 0xae, 0x8b, 0xd9, 0x8f, 0xb1, 0x8b, 0xd9, 0x90, 0xae, 0x8b, 0xd9, - 0x90, 0xb1, 0x8b, 0xd9, 0x91, 0xae, 0x8b, 0xd9, 0x91, 0xb1, 0x8b, 0xd9, - 0x92, 0xae, 0x8b, 0xd9, 0x92, 0xb1, 0x8b, 0xd9, 0x93, 0xae, 0x8b, 0xd9, - 0x93, 0xb1, 0x8b, 0xd9, 0x94, 0xae, 0x8b, 0xd9, 0x94, 0xb1, 0x8b, 0xd9, - 0x94, 0xae, 0x8b, 0xd9, 0x95, 0xb1, 0x8b, 0xd9, 0x95, 0xae, 0x8b, 0xd9, - 0x96, 0xb1, 0x8b, 0xd9, 0x96, 0xae, 0x8b, 0xd9, 0x97, 0xb1, 0x8b, 0xd9, - 0x97, 0xae, 0x8b, 0xd9, 0x98, 0xb1, 0x8b, 0xd9, 0x98, 0xae, 0x8b, 0xd9, - 0x98, 0xb1, 0x8b, 0xd9, 0x99, 0xae, 0x8b, 0xd9, 0x99, 0xb1, 0x8b, 0xd9, - 0x9a, 0xae, 0x8b, 0xd9, 0x9a, 0xb1, 0x8b, 0xd9, 0x9a, 0xae, 0x8b, 0xd9, - 0x9b, 0xb1, 0x8b, 0xd9, 0x9b, 0xae, 0x8c, 0xd9, 0x9c, 0xab, 0x8b, 0xd9, - 0x9c, 0xae, 0x8c, 0xd9, 0x9d, 0xab, 0x8b, 0xd9, 0x9d, 0xae, 0x8c, 0xd9, - 0x9d, 0xab, 0x8b, 0xd9, 0x9e, 0xae, 0x8c, 0xd9, 0x9e, 0xab, 0x8b, 0xd9, - 0x9f, 0xae, 0x8c, 0xd9, 0x9f, 0xab, 0x8b, 0xd9, 0x9f, 0xae, 0x8c, 0xd9, - 0xa0, 0xab, 0x8b, 0xd9, 0xa0, 0xae, 0x8c, 0xd9, 0xa1, 0xab, 0x8b, 0xd9, - 0xa1, 0xae, 0x8c, 0xd9, 0xa1, 0xab, 0xa2, 0xd9, 0xa2, 0x97, 0xa2, 0xd9, - 0xa2, 0x97, 0xa3, 0xd9, 0xa3, 0x97, 0xa3, 0xd9, 0xa3, 0x97, 0xa3, 0xd9, - 0xa3, 0x97, 0xa3, 0xd9, 0xa4, 0x97, 0xa3, 0xd9, 0xa4, 0x97, 0xa3, 0xd9, - 0xa5, 0x97, 0xa3, 0xd9, 0xa5, 0x97, 0xa3, 0xd9, 0xa5, 0x97, 0xa3, 0xd9, - 0xa6, 0x97, 0xa3, 0xd9, 0xa6, 0x97, 0xa3, 0xd9, 0xa6, 0x97, 0xa3, 0xd9, - 0xa7, 0x97, 0xa3, 0xd9, 0xa7, 0x97, 0xa3, 0xd9, 0xa8, 0x97, 0xa3, 0xd9, - 0xa8, 0x97, 0xa3, 0xd9, 0xa8, 0x97, 0xa3, 0xd9, 0xa9, 0x97, 0xa3, 0xd9, - 0xa9, 0x97, 0xa3, 0xd9, 0xaa, 0x97, 0xa3, 0xd9, 0xaa, 0x97, 0xa3, 0xd9, - 0xaa, 0x97, 0xa3, 0xd9, 0xab, 0x97, 0xa3, 0xd9, 0xab, 0x97, 0xa3, 0xd9, - 0xab, 0x97, 0xa3, 0xd9, 0xac, 0x97, 0xa3, 0xd9, 0xac, 0x97, 0xa3, 0xd9, - 0xac, 0x97, 0xa3, 0xd9, 0xad, 0x97, 0xa3, 0xd9, 0xad, 0x97, 0xa3, 0xd9, - 0xae, 0x97, 0xa3, 0xd9, 0xae, 0x97, 0xa3, 0xd9, 0xae, 0x97, 0xa3, 0xd9, - 0xaf, 0x97, 0xa3, 0xd9, 0xaf, 0x97, 0xa3, 0xd9, 0xaf, 0x97, 0xa3, 0xd9, - 0xb0, 0x97, 0xa3, 0xd9, 0xb0, 0x97, 0xa3, 0xd9, 0xb0, 0x97, 0xa3, 0xd9, - 0xb1, 0x97, 0xa3, 0xd9, 0xb1, 0x97, 0xa3, 0xd9, 0xb2, 0x97, 0xa3, 0xd9, - 0xb2, 0x97, 0xa3, 0xd9, 0xb2, 0x97, 0xa3, 0xd9, 0xb3, 0x97, 0xa3, 0xd9, - 0xb3, 0x97, 0xa3, 0xd9, 0xb3, 0x97, 0xa3, 0xd9, 0xb4, 0x97, 0xa3, 0xd9, - 0xb4, 0x97, 0xa3, 0xd9, 0xb4, 0x97, 0xa3, 0xd9, 0xb5, 0x97, 0xa3, 0xd9, - 0xb5, 0x97, 0xa3, 0xd9, 0xb5, 0x97, 0xa3, 0xd9, 0xb6, 0x97, 0xa3, 0xd9, - 0xb6, 0x97, 0xa3, 0xd9, 0xb6, 0x97, 0xa3, 0xd9, 0xb7, 0x97, 0xa3, 0xd9, - 0xb7, 0x97, 0xa3, 0xd9, 0xb7, 0x97, 0xa3, 0xd9, 0xb8, 0x97, 0xa3, 0xd9, - 0xb8, 0x97, 0xa3, 0xd9, 0xb8, 0x97, 0xd0, 0xd9, 0xb9, 0xb8, 0xd0, 0xd9, - 0xb9, 0xba, 0xd0, 0xd9, 0xb9, 0xb8, 0xd0, 0xd9, 0xba, 0xba, 0xd0, 0xd9, - 0xba, 0xb8, 0xd0, 0xd9, 0xba, 0xba, 0xd0, 0xd9, 0xbb, 0xb8, 0xd0, 0xd9, - 0xbb, 0xba, 0xd0, 0xd9, 0xbb, 0xb8, 0xd0, 0xd9, 0xbc, 0xba, 0xd0, 0xd9, - 0xbc, 0xb8, 0xd0, 0xd9, 0xbc, 0xba, 0xd0, 0xd9, 0xbd, 0xb8, 0xd0, 0xd9, - 0xbd, 0xb5, 0xd0, 0xd9, 0xbd, 0xb8, 0xd0, 0xd9, 0xbe, 0xb5, 0xd0, 0xd9, - 0xbe, 0xb8, 0xd0, 0xd9, 0xbe, 0xb5, 0xd0, 0xd9, 0xbf, 0xb8, 0xd0, 0xd9, - 0xbf, 0xb5, 0xd0, 0xd9, 0xbf, 0xb8, 0xd0, 0xd9, 0xc0, 0xb5, 0xd0, 0xd9, - 0xc0, 0xb8, 0xd0, 0xd9, 0xc0, 0xb5, 0xd0, 0xd9, 0xc1, 0xb8, 0xd0, 0xd9, - 0xc1, 0xb5, 0xd0, 0xd9, 0xc1, 0xb8, 0xd0, 0xd9, 0xc1, 0xb5, 0xd0, 0xd9, - 0xc2, 0xb8, 0xd0, 0xd9, 0xc2, 0xb5, 0xd1, 0xd9, 0xc2, 0xb2, 0xd0, 0xd9, - 0xc3, 0xb5, 0xd1, 0xd9, 0xc3, 0xb2, 0xd0, 0xd9, 0xc3, 0xb5, 0xd1, 0xd9, - 0xc4, 0xb2, 0xd0, 0xd9, 0xc4, 0xb5, 0xd1, 0xd9, 0xc4, 0xb2, 0xd0, 0xd9, - 0xc5, 0xb5, 0xd1, 0xd9, 0xc5, 0xb2, 0xd0, 0xd9, 0xc5, 0xb5, 0xd1, 0xd9, - 0xc6, 0xb2, 0xd0, 0xd9, 0xc6, 0xb5, 0xd1, 0xd9, 0xc6, 0xb2, 0xd0, 0xd9, - 0xc6, 0xb5, 0xd1, 0xd9, 0xc7, 0xb2, 0xd0, 0xd9, 0xc7, 0xb5, 0xd1, 0xd9, - 0xc7, 0xb2, 0xd0, 0xd9, 0xc8, 0xb5, 0xd1, 0xd9, 0xc8, 0xb2, 0xd0, 0xd9, - 0xc8, 0xb5, 0xd1, 0xd9, 0xc9, 0xb2, 0xd0, 0xd9, 0xc9, 0xb5, 0xd1, 0xd9, - 0xc9, 0xb2, 0xd0, 0xd9, 0xc9, 0xb5, 0xd1, 0xd9, 0xca, 0xb2, 0xd0, 0xd9, - 0xca, 0xb5, 0xd1, 0xd9, 0xca, 0xb2, 0xd0, 0xd9, 0xcb, 0xb5, 0xd1, 0xd9, - 0xcb, 0xb2, 0xd0, 0xd9, 0xcb, 0xb5, 0xd1, 0xd9, 0xcc, 0xb2, 0xd0, 0xd9, - 0xcc, 0xb5, 0xd1, 0xd9, 0xcc, 0xb2, 0xd1, 0xd9, 0xcc, 0xb1, 0xd1, 0xd9, - 0xcd, 0xb2, 0xd1, 0xd9, 0xcd, 0xb1, 0xd1, 0xd9, 0xcd, 0xb2, 0xd1, 0xd9, - 0xce, 0xb1, 0xd1, 0xd9, 0xce, 0xb2, 0xd1, 0xd9, 0xce, 0xb1, 0xd1, 0xd9, - 0xce, 0xb2, 0xd1, 0xd9, 0xcf, 0xb1, 0xd1, 0xd9, 0xcf, 0xb2, 0xd1, 0xd9, - 0xcf, 0xb1, 0xd1, 0xd9, 0xd0, 0xb2, 0xd1, 0xd9, 0xd0, 0xb1, 0xd1, 0xd9, - 0xd0, 0xb2, 0xd1, 0xd9, 0xd0, 0xb1, 0xd1, 0xd9, 0xd1, 0xb2, 0xd1, 0xd9, - 0xd0, 0xb1, 0xd1, 0xd9, 0xd1, 0xb1, 0xd2, 0xd9, 0xd0, 0xb1, 0xd2, 0xd9, - 0xd1, 0xb1, 0xd2, 0xd9, 0xd0, 0xb1, 0xd2, 0xd9, 0xd1, 0xb1, 0xd3, 0xd9, - 0xd0, 0xb1, 0xd3, 0xd9, 0xd1, 0xb1, 0xd3, 0xd7, 0xd1, 0xb1, 0xd4, 0xd9, - 0xd1, 0xb1, 0xd4, 0xd7, 0xd1, 0xb1, 0xd4, 0xd9, 0xd1, 0xb1, 0xd4, 0xd7, - 0xd1, 0xb1, 0xd5, 0xd9, 0xd1, 0xb1, 0xd5, 0xd7, 0xd1, 0xb1, 0xd5, 0xd9, - 0xd1, 0xb1, 0xd6, 0xd7, 0xd1, 0xb1, 0xd6, 0xd9, 0xd1, 0xb1, 0xd6, 0xd7, - 0xd1, 0xb1, 0xd6, 0xd9, 0xd1, 0xb1, 0xd7, 0xd7, 0xd1, 0xb1, 0xd7, 0xd9, - 0xd1, 0xb1, 0xd7, 0xd7, 0xd1, 0xb1, 0xd7, 0xd9, 0xd1, 0xb1, 0xd8, 0xd7, - 0xd1, 0xb1, 0xd8, 0xd6, 0xd1, 0xb1, 0xd8, 0xd7, 0xd1, 0xb1, 0xd9, 0xd6, - 0xd1, 0xb1, 0xd9, 0xd7, 0xd1, 0xb1, 0xd9, 0xd6, 0xd1, 0xb1, 0xd9, 0xd7, - 0xd1, 0xb1, 0xda, 0xd6, 0xd1, 0xb1, 0xda, 0xd7, 0xd1, 0xb1, 0xda, 0xd6, - 0xd1, 0xb1, 0xda, 0xd7, 0xd1, 0xb1, 0xdb, 0xd6, 0xd1, 0xb1, 0xdb, 0xd7, - 0xd1, 0xb1, 0xdb, 0xd6, 0xd1, 0xb1, 0xdb, 0xd7, 0xd1, 0xb1, 0xdc, 0xd6, - 0xd1, 0xb1, 0xdc, 0xd7, 0xd1, 0xb1, 0xdc, 0xd6, 0xd1, 0xb1, 0xdd, 0xd7, - 0xd1, 0xb1, 0xdd, 0xd6, 0xd1, 0xb1, 0xdd, 0xd7, 0xd1, 0xb1, 0xdd, 0xd6, - 0xd1, 0xb1, 0xde, 0xdb, 0xe9, 0xb1, 0xde, 0xdc, 0xe9, 0xb1, 0xde, 0xdb, - 0xe9, 0xb1, 0xde, 0xdc, 0xe9, 0xb1, 0xdf, 0xdb, 0xe9, 0xb1, 0xdf, 0xdc, - 0xe9, 0xb1, 0xdf, 0xdb, 0xe9, 0xb1, 0xdf, 0xdc, 0xe9, 0xb1, 0xe0, 0xdb, - 0xe9, 0xb1, 0xe0, 0xd9, 0xe9, 0xb1, 0xe0, 0xdb, 0xe9, 0xb1, 0xe1, 0xd9, - 0xe9, 0xb1, 0xe1, 0xdb, 0xe9, 0xb1, 0xe1, 0xd9, 0xe9, 0xb1, 0xe1, 0xdb, - 0xe9, 0xb1, 0xe2, 0xd9, 0xe9, 0xb1, 0xe2, 0xdb, 0xe9, 0xb1, 0xe2, 0xd9, - 0xe9, 0xb1, 0xe2, 0xdb, 0xe9, 0xb1, 0xe3, 0xd9, 0xe9, 0xb1, 0xe3, 0xdb, - 0xe9, 0xb1, 0xe3, 0xd9, 0xe9, 0xb1, 0xe3, 0xdb, 0xe9, 0xb1, 0xe4, 0xd9, - 0xe9, 0xb1, 0xe4, 0xdb, 0xe9, 0xb1, 0xe4, 0xd9, 0xe9, 0xb1, 0xe4, 0xdb, - 0xe9, 0xb1, 0xe5, 0xd9, 0xe9, 0xb1, 0xe5, 0xdb, 0xe9, 0xb1, 0xe5, 0xd9, - 0xe9, 0xb1, 0xe5, 0xdb, 0xe9, 0xb1, 0xe6, 0xd9, 0xe9, 0xb1, 0xe6, 0xdb, - 0xe9, 0xb1, 0xe6, 0xd9, 0xe9, 0xb1, 0xe6, 0xdb, 0xe9, 0xb1, 0xe7, 0xd9, - 0xe9, 0xb1, 0xe7, 0xdb, 0xe9, 0xb1, 0xe7, 0xd9, 0xe9, 0xb1, 0xe7, 0xd9, - 0xe9, 0xb1, 0xe8, 0xd9, 0xe9, 0xb1, 0xe8, 0xd9, 0xe9, 0xb1, 0xe8, 0xd9, - 0xe9, 0xb1, 0xe8, 0xd9, 0xe9, 0xb1, 0xe9, 0xd9, 0xe9, 0xb1, 0xe9, 0xd9, - 0xe9, 0xb1, 0xe9, 0xd9, 0xe9, 0xb0, 0xe9, 0xd9, 0xe9, 0xb1, 0xe9, 0xd9, - 0xea, 0xb0, 0xe9, 0xd9, 0xea, 0xb1, 0xe9, 0xd9, 0xea, 0xb0, 0xe9, 0xd9, - 0xea, 0xb1, 0xe9, 0xd9, 0xeb, 0xb0, 0xec, 0xd9, 0xeb, 0xb3, 0xec, 0xd9, - 0xeb, 0xb1, 0xec, 0xd9, 0xeb, 0xb3, 0xec, 0xd9, 0xec, 0xb1, 0xed, 0xd9, - 0xec, 0xb1, 0xec, 0xd9, 0xec, 0xb1, 0xed, 0xd9, 0xec, 0xb1, 0xec, 0xd9, - 0xec, 0xb1, 0xed, 0xd9, 0xec, 0xb1, 0xed, 0xd9, 0xec, 0xb1, 0xed, 0xd9, - 0xec, 0xb1, 0xed, 0xd9, 0xec, 0xb1, 0xee, 0xd9, 0xec, 0xb1, 0xee, 0xd9, - 0xec, 0xb1, 0xee, 0xd9, 0xec, 0xb1, 0xee, 0xd7, 0xec, 0xb1, 0xef, 0xd9, - 0xec, 0xb1, 0xef, 0xd7, 0xec, 0xb1, 0xef, 0xd9, 0xec, 0xb1, 0xef, 0xd7, - 0xec, 0xb1, 0xf0, 0xd9, 0xec, 0xb1, 0xf0, 0xd7, 0xec, 0xb1, 0xf0, 0xd9, - 0xec, 0xb1, 0xf0, 0xd7, 0xec, 0xb1, 0xf1, 0xd9, 0xec, 0xb1, 0xf1, 0xd7, - 0xec, 0xb1, 0xf1, 0xd9, 0xec, 0xb1, 0xf1, 0xd7, 0xec, 0xb1, 0xf2, 0xd9, - 0xec, 0xb1, 0xf2, 0xd7, 0xec, 0xb1, 0xf2, 0xd9, 0xec, 0xb1, 0xf2, 0xd7, - 0xec, 0xb1, 0xf2, 0xd9, 0xec, 0xb1, 0xf3, 0xd7, 0xec, 0xb1, 0xf3, 0xd9, - 0xec, 0xb1, 0xf3, 0xd7, 0xec, 0xb1, 0xf3, 0xd9, 0xec, 0xb1, 0xf4, 0xd7, - 0xec, 0xb1, 0xf4, 0xd9, 0xec, 0xb1, 0xf4, 0xd7, 0xec, 0xb1, 0xf4, 0xd9, - 0xec, 0xb1, 0xf5, 0xd7, 0xec, 0xb1, 0xf5, 0xd9, 0xec, 0xb1, 0xf5, 0xd7, - 0xec, 0xb1, 0xf5, 0xd6, 0xed, 0xb1, 0xf5, 0xd7, 0xec, 0xb1, 0xf6, 0xd6, - 0xed, 0xb1, 0xf6, 0xd7, 0xec, 0xb1, 0xf6, 0xd6, 0xed, 0xb1, 0xf6, 0xd7, - 0xec, 0xb1, 0xf7, 0xd6, 0xed, 0xb1, 0xf7, 0xd7, 0xec, 0xb1, 0xf7, 0xd6, - 0xed, 0xb1, 0xf7, 0xd7, 0xec, 0xb1, 0xf8, 0xd6, 0xed, 0xb1, 0xf8, 0xd7, - 0xec, 0xb1, 0xf8, 0xd6, 0xed, 0xb1, 0xf8, 0xd7, 0xec, 0xb1, 0xf8, 0xd6, - 0xed, 0xb1, 0xf9, 0xd7, 0xec, 0xb1, 0xf9, 0xd6, 0xed, 0xb1, 0xf9, 0xd7, - 0xec, 0xb1, 0xf9, 0xd6, 0xed, 0xb1, 0xfa, 0xd7, 0xec, 0xb1, 0xfa, 0xd6, - 0xed, 0xb1, 0xfa, 0xd7, 0xec, 0xb1, 0xfa, 0xd6, 0xed, 0xb1, 0xfa, 0xd7, - 0xec, 0xb1, 0xfb, 0xd6, 0xed, 0xb1, 0xfb, 0xd7, 0xec, 0xb1, 0xfb, 0xd6, - 0xed, 0xb1, 0xfb, 0xd7, 0xec, 0xb1, 0xfc, 0xd6, 0xed, 0xb1, 0xfc, 0xd7, - 0xec, 0xb1, 0xfc, 0xd6, 0xed, 0xb1, 0xfc, 0xc7, 0xf7, 0xb1, 0xfc, 0xc7, - 0xf7, 0xb1, 0xfd, 0xc7, 0xf7, 0xb1, 0xfd, 0xc7, 0xf7, 0xb1, 0xfd, 0xc7, - 0xf7, 0xb1, 0xfd, 0xc7, 0xf7, 0xb1, 0xfe, 0xc7, 0xf7, 0xb1, 0xfe, 0xc7, - 0xf7, 0xb1, 0xfe, 0xc7, 0xf7, 0xb1, 0xfe, 0xc7, 0xf7, 0xb1, 0xfe, 0xc7, - 0xf7, 0xb1, 0xff, 0xc7, 0xf7, 0xb1, 0xff, 0xc7, 0xf7, 0xb1, 0x03, 0xdf, - 0x89, 0xb2, 0x0a, 0xdd, 0x8a, 0xb2, 0x0f, 0xdf, 0x89, 0xb2, 0x14, 0xdd, - 0x8a, 0xb2, 0x17, 0xdf, 0x89, 0xb2, 0x1b, 0xdd, 0x8a, 0xb2, 0x1e, 0xdf, - 0x89, 0xb2, 0x20, 0xdd, 0x8a, 0xb2, 0x23, 0xdf, 0x89, 0xb2, 0x25, 0xdd, - 0x8a, 0xb2, 0x27, 0xdf, 0x89, 0xb2, 0x29, 0xdd, 0x8a, 0xb2, 0x2b, 0xdf, - 0x89, 0xb2, 0x2d, 0xdd, 0x8a, 0xb2, 0x2f, 0xdf, 0x89, 0xb2, 0x31, 0xdd, - 0x8a, 0xb2, 0x32, 0xdf, 0x89, 0xb2, 0x34, 0xdd, 0x8a, 0xb2, 0x35, 0xdf, - 0x89, 0xb2, 0x37, 0xdd, 0x8a, 0xb2, 0x38, 0xdf, 0x89, 0xb2, 0x3a, 0xdd, - 0x8a, 0xb2, 0x3b, 0xdf, 0x89, 0xb2, 0x3c, 0xdd, 0x8a, 0xb2, 0x3e, 0xdf, - 0x89, 0xb2, 0x3f, 0xdd, 0x8a, 0xb2, 0x40, 0xdb, 0x8a, 0xb2, 0x42, 0xdd, - 0x8a, 0xb2, 0x43, 0xdb, 0x8a, 0xb2, 0x44, 0xdd, 0x8a, 0xb2, 0x45, 0xdb, - 0x8a, 0xb2, 0x46, 0xdd, 0x8a, 0xb2, 0x47, 0xdb, 0x8a, 0xb2, 0x48, 0xdd, - 0x8a, 0xb2, 0x49, 0xdb, 0x8a, 0xb2, 0x4a, 0xdd, 0x8a, 0xb2, 0x4b, 0xdb, - 0x8a, 0xb2, 0x4c, 0xdd, 0x8a, 0xb2, 0x4d, 0xdb, 0x8a, 0xb2, 0x4e, 0xdd, - 0x8a, 0xb2, 0x4f, 0xdb, 0x8a, 0xb2, 0x50, 0xdd, 0x8a, 0xb2, 0x51, 0xdb, - 0x8a, 0xb2, 0x52, 0xdd, 0x8a, 0xb2, 0x53, 0xdb, 0x8a, 0xb2, 0x54, 0xdd, - 0x8a, 0xb2, 0x55, 0xdb, 0x8a, 0xb2, 0x56, 0xdd, 0x8a, 0xb2, 0x57, 0xdb, - 0x8a, 0xb2, 0x58, 0xdd, 0x8a, 0xb2, 0x58, 0xdb, 0x8a, 0xb2, 0x59, 0xdd, - 0x8a, 0xb2, 0x5a, 0xdb, 0x8a, 0xb2, 0x5b, 0xdd, 0x8a, 0xb2, 0x5c, 0xdb, - 0x8a, 0xb2, 0x5d, 0xdd, 0x8a, 0xb2, 0x5d, 0xdb, 0x8a, 0xb2, 0x5e, 0xdd, - 0x8a, 0xb2, 0x5f, 0xdb, 0x8a, 0xb2, 0x60, 0xdd, 0x8a, 0xb2, 0x60, 0xdb, - 0x8a, 0xb2, 0x61, 0xdd, 0x8a, 0xb2, 0x62, 0xdb, 0x8a, 0xb2, 0x63, 0xdd, - 0x8a, 0xb2, 0x63, 0xdb, 0x8a, 0xb2, 0x64, 0xdd, 0x8a, 0xb2, 0x65, 0xdb, - 0x8a, 0xb2, 0x66, 0xdd, 0x8a, 0xb2, 0x66, 0xdb, 0x8a, 0xb2, 0x67, 0xdd, - 0x8a, 0xb2, 0x68, 0xdb, 0x8a, 0xb2, 0x68, 0xdd, 0x8a, 0xb2, 0x69, 0xdb, - 0x8a, 0xb2, 0x6a, 0xdd, 0x8a, 0xb2, 0x6a, 0xdb, 0x8a, 0xb2, 0x6b, 0xdd, - 0x8a, 0xb2, 0x6c, 0xdb, 0x8a, 0xb2, 0x6c, 0xdd, 0x8a, 0xb2, 0x6d, 0xdb, - 0x8a, 0xb2, 0x6e, 0xdd, 0x8a, 0xb2, 0x6e, 0xdb, 0x8a, 0xb2, 0x6f, 0xdd, - 0x8a, 0xb2, 0x70, 0xdb, 0x8a, 0xb2, 0x70, 0xda, 0x8b, 0xb2, 0x71, 0xdb, - 0x8a, 0xb2, 0x72, 0xda, 0x8b, 0xb2, 0x72, 0xdb, 0x8a, 0xb2, 0x73, 0xda, - 0x8b, 0xb2, 0x73, 0xdb, 0x8a, 0xb2, 0x74, 0xda, 0x8b, 0xb2, 0x75, 0xdb, - 0x8a, 0xb2, 0x75, 0xda, 0x8b, 0xb2, 0x76, 0xdb, 0x8a, 0xb2, 0x76, 0xda, - 0x8b, 0xb2, 0x77, 0xdb, 0x8a, 0xb2, 0x78, 0xda, 0x8b, 0xb2, 0x78, 0xdb, - 0x8a, 0xb2, 0x79, 0xda, 0x8b, 0xb2, 0x79, 0xdb, 0x8a, 0xb2, 0x7a, 0xda, - 0x8b, 0xb2, 0x7a, 0xdb, 0x8a, 0xb2, 0x7b, 0xda, 0x8b, 0xb2, 0x7c, 0xdb, - 0x8a, 0xb2, 0x7c, 0xda, 0x8b, 0xb2, 0x7d, 0xdb, 0x8a, 0xb2, 0x7d, 0xda, - 0x8b, 0xb2, 0x7e, 0xdb, 0x8a, 0xb2, 0x7e, 0xda, 0x8b, 0xb2, 0x7f, 0xdb, - 0x8a, 0xb2, 0x7f, 0xda, 0x8b, 0xb2, 0x80, 0xdb, 0x8a, 0xb2, 0x81, 0xda, - 0x8b, 0xb2, 0x81, 0xdb, 0x8a, 0xb2, 0x82, 0xda, 0x8b, 0xb2, 0x82, 0xdb, - 0x8a, 0xb2, 0x83, 0xda, 0x8b, 0xb2, 0x83, 0xd9, 0x8b, 0xb2, 0x84, 0xda, - 0x8b, 0xb2, 0x84, 0xd9, 0x8b, 0xb2, 0x85, 0xda, 0x8b, 0xb2, 0x85, 0xd9, - 0x8b, 0xb2, 0x86, 0xda, 0x8b, 0xb2, 0x86, 0xd9, 0x8b, 0xb2, 0x87, 0xda, - 0x8b, 0xb2, 0x87, 0xd9, 0x8b, 0xb2, 0x88, 0xda, 0x8b, 0xb2, 0x88, 0xd9, - 0x8b, 0xb2, 0x89, 0xda, 0x8b, 0xb2, 0x89, 0xd9, 0x8b, 0xb2, 0x8a, 0xda, - 0x8b, 0xb2, 0x8a, 0xd9, 0x8b, 0xb2, 0x8b, 0xda, 0x8b, 0xb2, 0x8a, 0xd9, - 0x8b, 0xb2, 0x8b, 0xd9, 0x8c, 0xb2, 0x8a, 0xd9, 0x8c, 0xb2, 0x8b, 0xd9, - 0x8d, 0xb2, 0x8a, 0xd9, 0x8d, 0xb2, 0x8b, 0xd9, 0x8e, 0xb2, 0x8a, 0xd9, - 0x8e, 0xb2, 0x8b, 0xd9, 0x8e, 0xb2, 0x8b, 0xd9, 0x8f, 0xaf, 0x8b, 0xd9, - 0x8f, 0xb2, 0x8b, 0xd9, 0x90, 0xaf, 0x8b, 0xd9, 0x90, 0xb2, 0x8b, 0xd9, - 0x91, 0xaf, 0x8b, 0xd9, 0x91, 0xb2, 0x8b, 0xd9, 0x92, 0xaf, 0x8b, 0xd9, - 0x92, 0xb2, 0x8b, 0xd9, 0x93, 0xaf, 0x8b, 0xd9, 0x93, 0xb2, 0x8b, 0xd9, - 0x94, 0xaf, 0x8b, 0xd9, 0x94, 0xb2, 0x8b, 0xd9, 0x94, 0xaf, 0x8b, 0xd9, - 0x95, 0xb2, 0x8b, 0xd9, 0x95, 0xaf, 0x8b, 0xd9, 0x96, 0xb2, 0x8b, 0xd9, - 0x96, 0xaf, 0x8b, 0xd9, 0x97, 0xb2, 0x8b, 0xd9, 0x97, 0xaf, 0x8b, 0xd9, - 0x98, 0xb2, 0x8b, 0xd9, 0x98, 0xaf, 0x8b, 0xd9, 0x98, 0xb2, 0x8b, 0xd9, - 0x99, 0xaf, 0x8b, 0xd9, 0x99, 0xb2, 0x8b, 0xd9, 0x9a, 0xaf, 0x8b, 0xd9, - 0x9a, 0xb2, 0x8b, 0xd9, 0x9a, 0xaf, 0x8b, 0xd9, 0x9b, 0xb2, 0x8b, 0xd9, - 0x9b, 0xaf, 0x8b, 0xd9, 0x9c, 0xb2, 0x8b, 0xd9, 0x9c, 0xaf, 0x8b, 0xd9, - 0x9d, 0xb2, 0x8b, 0xd9, 0x9d, 0xaf, 0x8b, 0xd9, 0x9d, 0xb2, 0x8b, 0xd9, - 0x9e, 0xaf, 0x8b, 0xd9, 0x9e, 0xb2, 0x8b, 0xd9, 0x9f, 0xaf, 0x8b, 0xd9, - 0x9f, 0xb2, 0x8b, 0xd9, 0x9f, 0xaf, 0x8b, 0xd9, 0xa0, 0xb2, 0x8b, 0xd9, - 0xa0, 0xaf, 0x8c, 0xd9, 0xa1, 0xab, 0x8b, 0xd9, 0xa1, 0xaf, 0x8c, 0xd9, - 0xa1, 0xab, 0x8b, 0xd9, 0xa2, 0xaf, 0xa3, 0xd9, 0xa2, 0x98, 0xa3, 0xd9, - 0xa3, 0x97, 0xa3, 0xd9, 0xa3, 0x98, 0xa3, 0xd9, 0xa3, 0x97, 0xa3, 0xd9, - 0xa4, 0x98, 0xa3, 0xd9, 0xa4, 0x97, 0xa3, 0xd9, 0xa5, 0x98, 0xa3, 0xd9, - 0xa5, 0x97, 0xa3, 0xd9, 0xa5, 0x98, 0xa3, 0xd9, 0xa6, 0x97, 0xa3, 0xd9, - 0xa6, 0x98, 0xa3, 0xd9, 0xa6, 0x97, 0xa3, 0xd9, 0xa7, 0x98, 0xa3, 0xd9, - 0xa7, 0x97, 0xa3, 0xd9, 0xa8, 0x98, 0xa3, 0xd9, 0xa8, 0x97, 0xa3, 0xd9, - 0xa8, 0x98, 0xa3, 0xd9, 0xa9, 0x97, 0xa3, 0xd9, 0xa9, 0x98, 0xa3, 0xd9, - 0xaa, 0x97, 0xa3, 0xd9, 0xaa, 0x98, 0xa3, 0xd9, 0xaa, 0x97, 0xa3, 0xd9, - 0xab, 0x98, 0xa3, 0xd9, 0xab, 0x97, 0xa3, 0xd9, 0xab, 0x98, 0xa3, 0xd9, - 0xac, 0x97, 0xa3, 0xd9, 0xac, 0x98, 0xa3, 0xd9, 0xac, 0x97, 0xa3, 0xd9, - 0xad, 0x98, 0xa3, 0xd9, 0xad, 0x97, 0xa3, 0xd9, 0xae, 0x98, 0xa3, 0xd9, - 0xae, 0x97, 0xa3, 0xd9, 0xae, 0x98, 0xa3, 0xd9, 0xaf, 0x97, 0xa3, 0xd9, - 0xaf, 0x98, 0xa3, 0xd9, 0xaf, 0x97, 0xa3, 0xd9, 0xb0, 0x98, 0xa3, 0xd9, - 0xb0, 0x97, 0xa3, 0xd9, 0xb0, 0x98, 0xa3, 0xd9, 0xb1, 0x97, 0xa3, 0xd9, - 0xb1, 0x98, 0xa3, 0xd9, 0xb2, 0x97, 0xa3, 0xd9, 0xb2, 0x98, 0xa3, 0xd9, - 0xb2, 0x97, 0xa3, 0xd9, 0xb3, 0x98, 0xa3, 0xd9, 0xb3, 0x97, 0xa3, 0xd9, - 0xb3, 0x98, 0xa3, 0xd9, 0xb4, 0x97, 0xa3, 0xd9, 0xb4, 0x98, 0xa3, 0xd9, - 0xb4, 0x97, 0xa3, 0xd9, 0xb5, 0x98, 0xa3, 0xd9, 0xb5, 0x97, 0xa3, 0xd9, - 0xb5, 0x98, 0xa3, 0xd9, 0xb6, 0x97, 0xa3, 0xd9, 0xb6, 0x98, 0xa3, 0xd9, - 0xb6, 0x97, 0xa3, 0xd9, 0xb7, 0x98, 0xa3, 0xd9, 0xb7, 0x97, 0xa3, 0xd9, - 0xb7, 0x98, 0xa3, 0xd9, 0xb8, 0x97, 0xa3, 0xd9, 0xb8, 0x98, 0xd0, 0xd9, - 0xb8, 0xbb, 0xd0, 0xd9, 0xb9, 0xb8, 0xd0, 0xd9, 0xb9, 0xbb, 0xd0, 0xd9, - 0xb9, 0xb8, 0xd0, 0xd9, 0xba, 0xbb, 0xd0, 0xd9, 0xba, 0xb8, 0xd0, 0xd9, - 0xba, 0xb5, 0xd0, 0xd9, 0xbb, 0xb8, 0xd0, 0xd9, 0xbb, 0xb5, 0xd0, 0xd9, - 0xbb, 0xb8, 0xd0, 0xd9, 0xbc, 0xb5, 0xd0, 0xd9, 0xbc, 0xb8, 0xd0, 0xd9, - 0xbc, 0xb5, 0xd0, 0xd9, 0xbd, 0xb8, 0xd0, 0xd9, 0xbd, 0xb5, 0xd0, 0xd9, - 0xbd, 0xb8, 0xd0, 0xd9, 0xbe, 0xb5, 0xd0, 0xd9, 0xbe, 0xb8, 0xd0, 0xd9, - 0xbe, 0xb5, 0xd0, 0xd9, 0xbf, 0xb8, 0xd0, 0xd9, 0xbf, 0xb5, 0xd0, 0xd9, - 0xbf, 0xb8, 0xd0, 0xd9, 0xc0, 0xb5, 0xd0, 0xd9, 0xc0, 0xb8, 0xd0, 0xd9, - 0xc0, 0xb5, 0xd0, 0xd9, 0xc1, 0xb8, 0xd0, 0xd9, 0xc1, 0xb5, 0xd0, 0xd9, - 0xc1, 0xb8, 0xd0, 0xd9, 0xc1, 0xb5, 0xd0, 0xd9, 0xc2, 0xb8, 0xd0, 0xd9, - 0xc2, 0xb5, 0xd0, 0xd9, 0xc2, 0xb8, 0xd0, 0xd9, 0xc3, 0xb5, 0xd0, 0xd9, - 0xc3, 0xb8, 0xd0, 0xd9, 0xc3, 0xb5, 0xd0, 0xd9, 0xc4, 0xb8, 0xd0, 0xd9, - 0xc4, 0xb5, 0xd0, 0xd9, 0xc4, 0xb8, 0xd0, 0xd9, 0xc5, 0xb5, 0xd0, 0xd9, - 0xc5, 0xb8, 0xd0, 0xd9, 0xc5, 0xb5, 0xd0, 0xd9, 0xc6, 0xb8, 0xd0, 0xd9, - 0xc6, 0xb5, 0xd1, 0xd9, 0xc6, 0xb3, 0xd0, 0xd9, 0xc6, 0xb5, 0xd1, 0xd9, - 0xc7, 0xb3, 0xd0, 0xd9, 0xc7, 0xb5, 0xd1, 0xd9, 0xc7, 0xb3, 0xd0, 0xd9, - 0xc8, 0xb5, 0xd1, 0xd9, 0xc8, 0xb3, 0xd0, 0xd9, 0xc8, 0xb5, 0xd1, 0xd9, - 0xc9, 0xb3, 0xd0, 0xd9, 0xc9, 0xb5, 0xd1, 0xd9, 0xc9, 0xb3, 0xd0, 0xd9, - 0xc9, 0xb5, 0xd1, 0xd9, 0xca, 0xb3, 0xd0, 0xd9, 0xca, 0xb5, 0xd1, 0xd9, - 0xca, 0xb3, 0xd0, 0xd9, 0xcb, 0xb5, 0xd1, 0xd9, 0xcb, 0xb3, 0xd0, 0xd9, - 0xcb, 0xb5, 0xd1, 0xd9, 0xcc, 0xb3, 0xd0, 0xd9, 0xcc, 0xb5, 0xd1, 0xd9, - 0xcc, 0xb3, 0xd0, 0xd9, 0xcc, 0xb5, 0xd1, 0xd9, 0xcd, 0xb3, 0xd0, 0xd9, - 0xcd, 0xb5, 0xd1, 0xd9, 0xcd, 0xb3, 0xd0, 0xd9, 0xce, 0xb5, 0xd1, 0xd9, - 0xce, 0xb3, 0xd0, 0xd9, 0xce, 0xb5, 0xd1, 0xd9, 0xce, 0xb3, 0xd1, 0xd9, - 0xcf, 0xb2, 0xd1, 0xd9, 0xcf, 0xb3, 0xd1, 0xd9, 0xcf, 0xb2, 0xd1, 0xd9, - 0xd0, 0xb3, 0xd1, 0xd9, 0xd0, 0xb2, 0xd1, 0xd9, 0xd0, 0xb3, 0xd1, 0xd9, - 0xd0, 0xb2, 0xd1, 0xd9, 0xd1, 0xb3, 0xd1, 0xd9, 0xd0, 0xb2, 0xd1, 0xd9, - 0xd1, 0xb2, 0xd2, 0xd9, 0xd0, 0xb2, 0xd2, 0xd9, 0xd1, 0xb2, 0xd2, 0xd9, - 0xd0, 0xb2, 0xd2, 0xd9, 0xd1, 0xb2, 0xd3, 0xd9, 0xd0, 0xb2, 0xd3, 0xd9, - 0xd1, 0xb2, 0xd3, 0xd8, 0xd1, 0xb2, 0xd4, 0xd9, 0xd1, 0xb2, 0xd4, 0xd8, - 0xd1, 0xb2, 0xd4, 0xd9, 0xd1, 0xb2, 0xd4, 0xd8, 0xd1, 0xb2, 0xd5, 0xd9, - 0xd1, 0xb2, 0xd5, 0xd8, 0xd1, 0xb2, 0xd5, 0xd9, 0xd1, 0xb2, 0xd6, 0xd8, - 0xd1, 0xb2, 0xd6, 0xd9, 0xd1, 0xb2, 0xd6, 0xd8, 0xd1, 0xb2, 0xd6, 0xd9, - 0xd1, 0xb2, 0xd7, 0xd8, 0xd1, 0xb2, 0xd7, 0xd9, 0xd1, 0xb2, 0xd7, 0xd8, - 0xd1, 0xb2, 0xd7, 0xd9, 0xd1, 0xb2, 0xd8, 0xd8, 0xd1, 0xb2, 0xd8, 0xd9, - 0xd1, 0xb2, 0xd8, 0xd8, 0xd1, 0xb2, 0xd9, 0xd9, 0xd1, 0xb2, 0xd9, 0xd8, - 0xd1, 0xb2, 0xd9, 0xd9, 0xd1, 0xb2, 0xd9, 0xd8, 0xd1, 0xb2, 0xda, 0xd9, - 0xd1, 0xb2, 0xda, 0xd8, 0xd1, 0xb2, 0xda, 0xd9, 0xd1, 0xb2, 0xda, 0xd8, - 0xd1, 0xb2, 0xdb, 0xd9, 0xd1, 0xb2, 0xdb, 0xd8, 0xd1, 0xb2, 0xdb, 0xd6, - 0xd1, 0xb2, 0xdb, 0xd8, 0xd1, 0xb2, 0xdc, 0xd6, 0xd1, 0xb2, 0xdc, 0xd8, - 0xd1, 0xb2, 0xdc, 0xd6, 0xd1, 0xb2, 0xdd, 0xd8, 0xd1, 0xb2, 0xdd, 0xd6, - 0xd1, 0xb2, 0xdd, 0xd8, 0xd1, 0xb2, 0xdd, 0xdc, 0xe9, 0xb2, 0xde, 0xda, - 0xe9, 0xb2, 0xde, 0xdc, 0xe9, 0xb2, 0xde, 0xda, 0xe9, 0xb2, 0xde, 0xdc, - 0xe9, 0xb2, 0xdf, 0xda, 0xe9, 0xb2, 0xdf, 0xdc, 0xe9, 0xb2, 0xdf, 0xda, - 0xe9, 0xb2, 0xdf, 0xdc, 0xe9, 0xb2, 0xe0, 0xda, 0xe9, 0xb2, 0xe0, 0xdc, - 0xe9, 0xb2, 0xe0, 0xda, 0xe9, 0xb2, 0xe1, 0xdc, 0xe9, 0xb2, 0xe1, 0xda, - 0xe9, 0xb2, 0xe1, 0xdc, 0xe9, 0xb2, 0xe1, 0xda, 0xe9, 0xb2, 0xe2, 0xdc, - 0xe9, 0xb2, 0xe2, 0xda, 0xe9, 0xb2, 0xe2, 0xdc, 0xe9, 0xb2, 0xe2, 0xda, - 0xe9, 0xb2, 0xe3, 0xdc, 0xe9, 0xb2, 0xe3, 0xda, 0xe9, 0xb2, 0xe3, 0xd9, - 0xe9, 0xb2, 0xe3, 0xda, 0xe9, 0xb2, 0xe4, 0xd9, 0xe9, 0xb2, 0xe4, 0xda, - 0xe9, 0xb2, 0xe4, 0xd9, 0xe9, 0xb2, 0xe4, 0xda, 0xe9, 0xb2, 0xe5, 0xd9, - 0xe9, 0xb2, 0xe5, 0xda, 0xe9, 0xb2, 0xe5, 0xd9, 0xe9, 0xb2, 0xe5, 0xda, - 0xe9, 0xb2, 0xe6, 0xd9, 0xe9, 0xb2, 0xe6, 0xda, 0xe9, 0xb2, 0xe6, 0xd9, - 0xe9, 0xb2, 0xe6, 0xda, 0xe9, 0xb2, 0xe7, 0xd9, 0xe9, 0xb2, 0xe7, 0xda, - 0xe9, 0xb2, 0xe7, 0xd9, 0xe9, 0xb2, 0xe7, 0xda, 0xe9, 0xb2, 0xe8, 0xd9, - 0xe9, 0xb2, 0xe8, 0xda, 0xe9, 0xb2, 0xe8, 0xd9, 0xe9, 0xb2, 0xe8, 0xd9, - 0xe9, 0xb2, 0xe9, 0xd9, 0xe9, 0xb2, 0xe9, 0xd9, 0xe9, 0xb2, 0xe9, 0xd9, - 0xe9, 0xb1, 0xe9, 0xd9, 0xe9, 0xb2, 0xe9, 0xd9, 0xea, 0xb1, 0xe9, 0xd9, - 0xea, 0xb2, 0xe9, 0xd9, 0xea, 0xb1, 0xe9, 0xd9, 0xea, 0xb2, 0xe9, 0xd9, - 0xeb, 0xb1, 0xec, 0xd9, 0xeb, 0xb3, 0xec, 0xd9, 0xeb, 0xb2, 0xec, 0xd9, - 0xeb, 0xb3, 0xec, 0xd9, 0xec, 0xb2, 0xec, 0xd9, 0xec, 0xb3, 0xec, 0xd9, - 0xec, 0xb2, 0xed, 0xd9, 0xec, 0xb2, 0xec, 0xd9, 0xec, 0xb2, 0xed, 0xd9, - 0xec, 0xb2, 0xed, 0xd9, 0xec, 0xb2, 0xed, 0xd9, 0xec, 0xb2, 0xed, 0xd9, - 0xec, 0xb2, 0xee, 0xd9, 0xec, 0xb2, 0xee, 0xd9, 0xec, 0xb2, 0xee, 0xd9, - 0xec, 0xb2, 0xee, 0xd8, 0xec, 0xb2, 0xef, 0xd9, 0xec, 0xb2, 0xef, 0xd8, - 0xec, 0xb2, 0xef, 0xd9, 0xec, 0xb2, 0xef, 0xd8, 0xec, 0xb2, 0xf0, 0xd9, - 0xec, 0xb2, 0xf0, 0xd8, 0xec, 0xb2, 0xf0, 0xd9, 0xec, 0xb2, 0xf0, 0xd8, - 0xec, 0xb2, 0xf1, 0xd9, 0xec, 0xb2, 0xf1, 0xd8, 0xec, 0xb2, 0xf1, 0xd9, - 0xec, 0xb2, 0xf1, 0xd8, 0xec, 0xb2, 0xf2, 0xd9, 0xec, 0xb2, 0xf2, 0xd8, - 0xec, 0xb2, 0xf2, 0xd9, 0xec, 0xb2, 0xf2, 0xd8, 0xec, 0xb2, 0xf2, 0xd9, - 0xec, 0xb2, 0xf3, 0xd8, 0xec, 0xb2, 0xf3, 0xd9, 0xec, 0xb2, 0xf3, 0xd8, - 0xec, 0xb2, 0xf3, 0xd9, 0xec, 0xb2, 0xf4, 0xd8, 0xec, 0xb2, 0xf4, 0xd9, - 0xec, 0xb2, 0xf4, 0xd8, 0xec, 0xb2, 0xf4, 0xd9, 0xec, 0xb2, 0xf5, 0xd8, - 0xec, 0xb2, 0xf5, 0xd9, 0xec, 0xb2, 0xf5, 0xd8, 0xec, 0xb2, 0xf5, 0xd9, - 0xec, 0xb2, 0xf5, 0xd8, 0xec, 0xb2, 0xf6, 0xd9, 0xec, 0xb2, 0xf6, 0xd8, - 0xec, 0xb2, 0xf6, 0xd9, 0xec, 0xb2, 0xf6, 0xd8, 0xec, 0xb2, 0xf7, 0xd9, - 0xec, 0xb2, 0xf7, 0xd8, 0xec, 0xb2, 0xf7, 0xd9, 0xec, 0xb2, 0xf7, 0xd8, - 0xec, 0xb2, 0xf8, 0xd9, 0xec, 0xb2, 0xf8, 0xd8, 0xec, 0xb2, 0xf8, 0xd6, - 0xed, 0xb2, 0xf8, 0xd8, 0xec, 0xb2, 0xf8, 0xd6, 0xed, 0xb2, 0xf9, 0xd8, - 0xec, 0xb2, 0xf9, 0xd6, 0xed, 0xb2, 0xf9, 0xd8, 0xec, 0xb2, 0xf9, 0xd6, - 0xed, 0xb2, 0xfa, 0xd8, 0xec, 0xb2, 0xfa, 0xd6, 0xed, 0xb2, 0xfa, 0xd8, - 0xec, 0xb2, 0xfa, 0xd6, 0xed, 0xb2, 0xfa, 0xd8, 0xec, 0xb2, 0xfb, 0xd6, - 0xed, 0xb2, 0xfb, 0xd8, 0xec, 0xb2, 0xfb, 0xd6, 0xed, 0xb2, 0xfb, 0xd8, - 0xec, 0xb2, 0xfc, 0xd6, 0xed, 0xb2, 0xfc, 0xd8, 0xec, 0xb2, 0xfc, 0xd8, - 0xec, 0xb2, 0xfc, 0xc7, 0xf7, 0xb2, 0xfc, 0xc7, 0xf7, 0xb2, 0xfd, 0xc7, - 0xf7, 0xb2, 0xfd, 0xc7, 0xf7, 0xb2, 0xfd, 0xc7, 0xf7, 0xb2, 0xfd, 0xc7, - 0xf7, 0xb2, 0xfe, 0xc7, 0xf7, 0xb2, 0xfe, 0xc7, 0xf7, 0xb2, 0xfe, 0xc7, - 0xf7, 0xb2, 0xfe, 0xc7, 0xf7, 0xb2, 0xfe, 0xc7, 0xf7, 0xb2, 0xff, 0xc7, - 0xf7, 0xb2, 0xff, 0xc7, 0xf7, 0xb2, 0x03, 0xdf, 0x89, 0xb2, 0x0a, 0xdf, - 0x89, 0xb2, 0x0f, 0xdf, 0x89, 0xb2, 0x14, 0xdf, 0x89, 0xb2, 0x17, 0xdf, - 0x89, 0xb2, 0x1b, 0xdf, 0x89, 0xb2, 0x1e, 0xdf, 0x89, 0xb2, 0x20, 0xdf, - 0x89, 0xb2, 0x23, 0xdf, 0x89, 0xb2, 0x25, 0xdf, 0x89, 0xb2, 0x27, 0xdf, - 0x89, 0xb2, 0x29, 0xdf, 0x89, 0xb2, 0x2b, 0xdf, 0x89, 0xb2, 0x2d, 0xdf, - 0x89, 0xb2, 0x2f, 0xdf, 0x89, 0xb2, 0x31, 0xdf, 0x89, 0xb2, 0x32, 0xdf, - 0x89, 0xb2, 0x34, 0xdf, 0x89, 0xb2, 0x35, 0xdf, 0x89, 0xb2, 0x37, 0xdf, - 0x89, 0xb2, 0x38, 0xdf, 0x89, 0xb2, 0x3a, 0xdf, 0x89, 0xb2, 0x3b, 0xdf, - 0x89, 0xb2, 0x3c, 0xdf, 0x89, 0xb2, 0x3e, 0xdf, 0x89, 0xb2, 0x3f, 0xdf, - 0x89, 0xb2, 0x40, 0xdf, 0x89, 0xb2, 0x42, 0xdd, 0x8a, 0xb2, 0x43, 0xdf, - 0x89, 0xb2, 0x44, 0xdd, 0x8a, 0xb2, 0x45, 0xdf, 0x89, 0xb2, 0x46, 0xdd, - 0x8a, 0xb2, 0x47, 0xdf, 0x89, 0xb2, 0x48, 0xdd, 0x8a, 0xb2, 0x49, 0xdf, - 0x89, 0xb2, 0x4a, 0xdd, 0x8a, 0xb2, 0x4b, 0xdf, 0x89, 0xb2, 0x4c, 0xdd, - 0x8a, 0xb2, 0x4d, 0xdf, 0x89, 0xb2, 0x4e, 0xdd, 0x8a, 0xb2, 0x4f, 0xdf, - 0x89, 0xb2, 0x50, 0xdd, 0x8a, 0xb2, 0x51, 0xdf, 0x89, 0xb2, 0x52, 0xdd, - 0x8a, 0xb2, 0x53, 0xdf, 0x89, 0xb2, 0x54, 0xdd, 0x8a, 0xb2, 0x55, 0xdc, - 0x8a, 0xb2, 0x56, 0xdd, 0x8a, 0xb2, 0x57, 0xdc, 0x8a, 0xb2, 0x58, 0xdd, - 0x8a, 0xb2, 0x58, 0xdc, 0x8a, 0xb2, 0x59, 0xdd, 0x8a, 0xb2, 0x5a, 0xdc, - 0x8a, 0xb2, 0x5b, 0xdd, 0x8a, 0xb2, 0x5c, 0xdc, 0x8a, 0xb2, 0x5d, 0xdd, - 0x8a, 0xb2, 0x5d, 0xdc, 0x8a, 0xb2, 0x5e, 0xdd, 0x8a, 0xb2, 0x5f, 0xdc, - 0x8a, 0xb2, 0x60, 0xdd, 0x8a, 0xb2, 0x60, 0xdc, 0x8a, 0xb2, 0x61, 0xdd, - 0x8a, 0xb2, 0x62, 0xdc, 0x8a, 0xb2, 0x63, 0xdd, 0x8a, 0xb2, 0x63, 0xdc, - 0x8a, 0xb2, 0x64, 0xdd, 0x8a, 0xb2, 0x65, 0xdc, 0x8a, 0xb2, 0x66, 0xdd, - 0x8a, 0xb2, 0x66, 0xdc, 0x8a, 0xb2, 0x67, 0xdd, 0x8a, 0xb2, 0x68, 0xdc, - 0x8a, 0xb2, 0x68, 0xdd, 0x8a, 0xb2, 0x69, 0xdc, 0x8a, 0xb2, 0x6a, 0xdd, - 0x8a, 0xb2, 0x6a, 0xdc, 0x8a, 0xb2, 0x6b, 0xdd, 0x8a, 0xb2, 0x6c, 0xdc, - 0x8a, 0xb2, 0x6c, 0xdd, 0x8a, 0xb2, 0x6d, 0xdc, 0x8a, 0xb2, 0x6e, 0xdd, - 0x8a, 0xb2, 0x6e, 0xdc, 0x8a, 0xb2, 0x6f, 0xdd, 0x8a, 0xb2, 0x70, 0xdc, - 0x8a, 0xb2, 0x70, 0xda, 0x8b, 0xb2, 0x71, 0xdc, 0x8a, 0xb2, 0x72, 0xda, - 0x8b, 0xb2, 0x72, 0xdc, 0x8a, 0xb2, 0x73, 0xda, 0x8b, 0xb2, 0x73, 0xdc, - 0x8a, 0xb2, 0x74, 0xda, 0x8b, 0xb2, 0x75, 0xdc, 0x8a, 0xb2, 0x75, 0xda, - 0x8b, 0xb2, 0x76, 0xdc, 0x8a, 0xb2, 0x76, 0xda, 0x8b, 0xb2, 0x77, 0xdc, - 0x8a, 0xb2, 0x78, 0xda, 0x8b, 0xb2, 0x78, 0xdc, 0x8a, 0xb2, 0x79, 0xda, - 0x8b, 0xb2, 0x79, 0xdc, 0x8a, 0xb2, 0x7a, 0xda, 0x8b, 0xb2, 0x7a, 0xdc, - 0x8a, 0xb2, 0x7b, 0xda, 0x8b, 0xb2, 0x7c, 0xdc, 0x8a, 0xb2, 0x7c, 0xda, - 0x8b, 0xb2, 0x7d, 0xdc, 0x8a, 0xb2, 0x7d, 0xda, 0x8b, 0xb2, 0x7e, 0xdc, - 0x8a, 0xb2, 0x7e, 0xda, 0x8b, 0xb2, 0x7f, 0xdc, 0x8a, 0xb2, 0x7f, 0xda, - 0x8b, 0xb2, 0x80, 0xdc, 0x8a, 0xb2, 0x81, 0xda, 0x8b, 0xb2, 0x81, 0xdc, - 0x8a, 0xb2, 0x82, 0xda, 0x8b, 0xb2, 0x82, 0xdc, 0x8a, 0xb2, 0x83, 0xda, - 0x8b, 0xb2, 0x83, 0xda, 0x8b, 0xb2, 0x84, 0xda, 0x8b, 0xb2, 0x84, 0xda, - 0x8b, 0xb2, 0x85, 0xda, 0x8b, 0xb2, 0x85, 0xda, 0x8b, 0xb2, 0x86, 0xda, - 0x8b, 0xb2, 0x86, 0xda, 0x8b, 0xb2, 0x87, 0xda, 0x8b, 0xb2, 0x87, 0xda, - 0x8b, 0xb2, 0x88, 0xda, 0x8b, 0xb2, 0x88, 0xda, 0x8b, 0xb2, 0x89, 0xda, - 0x8b, 0xb2, 0x89, 0xda, 0x8b, 0xb2, 0x8a, 0xda, 0x8b, 0xb2, 0x8a, 0xda, - 0x8b, 0xb2, 0x8b, 0xda, 0x8b, 0xb1, 0x8a, 0xda, 0x8b, 0xb2, 0x8b, 0xda, - 0x8c, 0xb1, 0x8a, 0xda, 0x8c, 0xb2, 0x8b, 0xda, 0x8d, 0xb1, 0x8a, 0xda, - 0x8d, 0xb2, 0x8b, 0xda, 0x8e, 0xb1, 0x8a, 0xda, 0x8e, 0xb2, 0x8b, 0xda, - 0x8e, 0xb1, 0x8a, 0xda, 0x8f, 0xb2, 0x8b, 0xda, 0x8f, 0xb1, 0x8a, 0xda, - 0x90, 0xb2, 0x8b, 0xda, 0x90, 0xb1, 0x8a, 0xda, 0x91, 0xb2, 0x8b, 0xda, - 0x91, 0xb1, 0x8a, 0xda, 0x92, 0xb2, 0x8b, 0xda, 0x92, 0xb1, 0x8b, 0xda, - 0x93, 0xae, 0x8b, 0xda, 0x93, 0xb1, 0x8b, 0xda, 0x94, 0xae, 0x8b, 0xda, - 0x94, 0xb1, 0x8b, 0xda, 0x94, 0xae, 0x8b, 0xda, 0x95, 0xb1, 0x8b, 0xda, - 0x95, 0xae, 0x8b, 0xda, 0x96, 0xb1, 0x8b, 0xda, 0x96, 0xae, 0x8b, 0xda, - 0x97, 0xb1, 0x8b, 0xda, 0x97, 0xae, 0x8b, 0xda, 0x98, 0xb1, 0x8b, 0xda, - 0x98, 0xae, 0x8b, 0xda, 0x98, 0xb1, 0x8b, 0xda, 0x99, 0xae, 0x8b, 0xda, - 0x99, 0xb1, 0x8b, 0xda, 0x9a, 0xae, 0x8b, 0xda, 0x9a, 0xb1, 0x8b, 0xda, - 0x9a, 0xae, 0x8b, 0xda, 0x9b, 0xb1, 0x8b, 0xda, 0x9b, 0xae, 0x8b, 0xda, - 0x9c, 0xb1, 0x8b, 0xda, 0x9c, 0xae, 0x8b, 0xda, 0x9d, 0xb1, 0x8b, 0xda, - 0x9d, 0xae, 0x8b, 0xda, 0x9d, 0xb1, 0x8b, 0xda, 0x9e, 0xae, 0x8b, 0xda, - 0x9e, 0xb1, 0x8b, 0xda, 0x9f, 0xae, 0x8b, 0xda, 0x9f, 0xb1, 0x8b, 0xda, - 0x9f, 0xae, 0x8b, 0xda, 0xa0, 0xb1, 0x8b, 0xda, 0xa0, 0xae, 0x8c, 0xda, - 0xa1, 0xab, 0x8b, 0xda, 0xa1, 0xae, 0x8c, 0xda, 0xa1, 0xab, 0x8b, 0xda, - 0xa2, 0xae, 0x8c, 0xda, 0xa2, 0xab, 0xa3, 0xda, 0xa3, 0x97, 0xa3, 0xda, - 0xa3, 0x97, 0xa3, 0xda, 0xa3, 0x97, 0xa3, 0xda, 0xa4, 0x97, 0xa3, 0xda, - 0xa4, 0x97, 0xa3, 0xda, 0xa5, 0x97, 0xa3, 0xda, 0xa5, 0x97, 0xa3, 0xda, - 0xa5, 0x97, 0xa3, 0xda, 0xa6, 0x97, 0xa3, 0xda, 0xa6, 0x97, 0xa3, 0xda, - 0xa6, 0x97, 0xa3, 0xda, 0xa7, 0x97, 0xa3, 0xda, 0xa7, 0x97, 0xa3, 0xda, - 0xa8, 0x97, 0xa3, 0xda, 0xa8, 0x97, 0xa3, 0xda, 0xa8, 0x97, 0xa3, 0xda, - 0xa9, 0x97, 0xa3, 0xda, 0xa9, 0x97, 0xa3, 0xda, 0xaa, 0x97, 0xa3, 0xda, - 0xaa, 0x97, 0xa3, 0xda, 0xaa, 0x97, 0xa3, 0xda, 0xab, 0x97, 0xa3, 0xda, - 0xab, 0x97, 0xa3, 0xda, 0xab, 0x97, 0xa3, 0xda, 0xac, 0x97, 0xa3, 0xda, - 0xac, 0x97, 0xa3, 0xda, 0xac, 0x97, 0xa3, 0xda, 0xad, 0x97, 0xa3, 0xda, - 0xad, 0x97, 0xa3, 0xda, 0xae, 0x97, 0xa3, 0xda, 0xae, 0x97, 0xa3, 0xda, - 0xae, 0x97, 0xa3, 0xda, 0xaf, 0x97, 0xa3, 0xda, 0xaf, 0x97, 0xa3, 0xda, - 0xaf, 0x97, 0xa3, 0xda, 0xb0, 0x97, 0xa3, 0xda, 0xb0, 0x97, 0xa3, 0xda, - 0xb0, 0x97, 0xa3, 0xda, 0xb1, 0x97, 0xa3, 0xda, 0xb1, 0x97, 0xa3, 0xda, - 0xb2, 0x97, 0xa3, 0xda, 0xb2, 0x97, 0xa3, 0xda, 0xb2, 0x97, 0xa3, 0xda, - 0xb3, 0x97, 0xa3, 0xda, 0xb3, 0x97, 0xa3, 0xda, 0xb3, 0x97, 0xa3, 0xda, - 0xb4, 0x97, 0xa3, 0xda, 0xb4, 0x97, 0xa3, 0xda, 0xb4, 0x97, 0xa3, 0xda, - 0xb5, 0x97, 0xa3, 0xda, 0xb5, 0x97, 0xa3, 0xda, 0xb5, 0x97, 0xa3, 0xda, - 0xb6, 0x97, 0xa3, 0xda, 0xb6, 0x97, 0xa3, 0xda, 0xb6, 0x97, 0xa3, 0xda, - 0xb7, 0x97, 0xa3, 0xda, 0xb7, 0x97, 0xa3, 0xda, 0xb7, 0x97, 0xa3, 0xda, - 0xb8, 0x97, 0xd0, 0xda, 0xb8, 0xb8, 0xd0, 0xda, 0xb8, 0xba, 0xd0, 0xda, - 0xb9, 0xb8, 0xd0, 0xda, 0xb9, 0xba, 0xd0, 0xda, 0xb9, 0xb8, 0xd0, 0xda, - 0xba, 0xba, 0xd0, 0xda, 0xba, 0xb8, 0xd0, 0xda, 0xba, 0xba, 0xd0, 0xda, - 0xbb, 0xb8, 0xd0, 0xda, 0xbb, 0xba, 0xd0, 0xda, 0xbb, 0xb8, 0xd0, 0xda, - 0xbc, 0xba, 0xd0, 0xda, 0xbc, 0xb8, 0xd0, 0xda, 0xbc, 0xba, 0xd0, 0xda, - 0xbd, 0xb8, 0xd0, 0xda, 0xbd, 0xba, 0xd0, 0xda, 0xbd, 0xb8, 0xd0, 0xda, - 0xbe, 0xba, 0xd0, 0xda, 0xbe, 0xb8, 0xd0, 0xda, 0xbe, 0xba, 0xd0, 0xda, - 0xbf, 0xb8, 0xd0, 0xda, 0xbf, 0xba, 0xd0, 0xda, 0xbf, 0xb8, 0xd0, 0xda, - 0xc0, 0xb5, 0xd0, 0xda, 0xc0, 0xb8, 0xd0, 0xda, 0xc0, 0xb5, 0xd0, 0xda, - 0xc1, 0xb8, 0xd0, 0xda, 0xc1, 0xb5, 0xd0, 0xda, 0xc1, 0xb8, 0xd0, 0xda, - 0xc1, 0xb5, 0xd0, 0xda, 0xc2, 0xb8, 0xd0, 0xda, 0xc2, 0xb5, 0xd0, 0xda, - 0xc2, 0xb8, 0xd0, 0xda, 0xc3, 0xb5, 0xd0, 0xda, 0xc3, 0xb8, 0xd0, 0xda, - 0xc3, 0xb5, 0xd0, 0xda, 0xc4, 0xb8, 0xd0, 0xda, 0xc4, 0xb5, 0xd0, 0xda, - 0xc4, 0xb8, 0xd0, 0xda, 0xc5, 0xb5, 0xd0, 0xda, 0xc5, 0xb8, 0xd0, 0xda, - 0xc5, 0xb5, 0xd0, 0xda, 0xc6, 0xb8, 0xd0, 0xda, 0xc6, 0xb5, 0xd1, 0xda, - 0xc6, 0xb2, 0xd0, 0xda, 0xc6, 0xb5, 0xd1, 0xda, 0xc7, 0xb2, 0xd0, 0xda, - 0xc7, 0xb5, 0xd1, 0xda, 0xc7, 0xb2, 0xd0, 0xda, 0xc8, 0xb5, 0xd1, 0xda, - 0xc8, 0xb2, 0xd0, 0xda, 0xc8, 0xb5, 0xd1, 0xda, 0xc9, 0xb2, 0xd0, 0xda, - 0xc9, 0xb5, 0xd1, 0xda, 0xc9, 0xb2, 0xd0, 0xda, 0xc9, 0xb5, 0xd1, 0xda, - 0xca, 0xb2, 0xd0, 0xda, 0xca, 0xb5, 0xd1, 0xda, 0xca, 0xb2, 0xd0, 0xda, - 0xcb, 0xb5, 0xd1, 0xda, 0xcb, 0xb2, 0xd0, 0xda, 0xcb, 0xb5, 0xd1, 0xda, - 0xcc, 0xb2, 0xd0, 0xda, 0xcc, 0xb5, 0xd1, 0xda, 0xcc, 0xb2, 0xd0, 0xda, - 0xcc, 0xb5, 0xd1, 0xda, 0xcd, 0xb2, 0xd0, 0xda, 0xcd, 0xb5, 0xd1, 0xda, - 0xcd, 0xb2, 0xd0, 0xda, 0xce, 0xb5, 0xd1, 0xda, 0xce, 0xb2, 0xd0, 0xda, - 0xce, 0xb5, 0xd1, 0xda, 0xce, 0xb2, 0xd1, 0xda, 0xcf, 0xb2, 0xd1, 0xda, - 0xcf, 0xb2, 0xd1, 0xda, 0xcf, 0xb2, 0xd1, 0xda, 0xd0, 0xb2, 0xd1, 0xda, - 0xd0, 0xb2, 0xd1, 0xda, 0xd0, 0xb2, 0xd1, 0xda, 0xd0, 0xb2, 0xd1, 0xd9, - 0xd1, 0xb2, 0xd1, 0xda, 0xd0, 0xb2, 0xd1, 0xd9, 0xd1, 0xb2, 0xd2, 0xda, - 0xd0, 0xb2, 0xd2, 0xd9, 0xd1, 0xb2, 0xd2, 0xda, 0xd0, 0xb2, 0xd2, 0xd9, - 0xd1, 0xb2, 0xd3, 0xda, 0xd0, 0xb2, 0xd3, 0xd9, 0xd1, 0xb2, 0xd3, 0xda, - 0xd0, 0xb2, 0xd4, 0xd9, 0xd1, 0xb2, 0xd4, 0xda, 0xd0, 0xb2, 0xd4, 0xd9, - 0xd1, 0xb2, 0xd4, 0xda, 0xd0, 0xb2, 0xd5, 0xd9, 0xd1, 0xb2, 0xd5, 0xda, - 0xd0, 0xb2, 0xd5, 0xd9, 0xd1, 0xb2, 0xd6, 0xd7, 0xd1, 0xb2, 0xd6, 0xd9, - 0xd1, 0xb2, 0xd6, 0xd7, 0xd1, 0xb2, 0xd6, 0xd9, 0xd1, 0xb2, 0xd7, 0xd7, - 0xd1, 0xb2, 0xd7, 0xd9, 0xd1, 0xb2, 0xd7, 0xd7, 0xd1, 0xb2, 0xd7, 0xd9, - 0xd1, 0xb2, 0xd8, 0xd7, 0xd1, 0xb2, 0xd8, 0xd9, 0xd1, 0xb2, 0xd8, 0xd7, - 0xd1, 0xb2, 0xd9, 0xd9, 0xd1, 0xb2, 0xd9, 0xd7, 0xd1, 0xb2, 0xd9, 0xd9, - 0xd1, 0xb2, 0xd9, 0xd7, 0xd1, 0xb2, 0xda, 0xd9, 0xd1, 0xb2, 0xda, 0xd7, - 0xd1, 0xb2, 0xda, 0xd9, 0xd1, 0xb2, 0xda, 0xd7, 0xd1, 0xb2, 0xdb, 0xd9, - 0xd1, 0xb2, 0xdb, 0xd7, 0xd1, 0xb2, 0xdb, 0xd6, 0xd1, 0xb2, 0xdb, 0xd7, - 0xd1, 0xb2, 0xdc, 0xd6, 0xd1, 0xb2, 0xdc, 0xd7, 0xd1, 0xb2, 0xdc, 0xd6, - 0xd1, 0xb2, 0xdd, 0xd7, 0xd1, 0xb2, 0xdd, 0xd6, 0xd1, 0xb2, 0xdd, 0xd7, - 0xd1, 0xb2, 0xdd, 0xdc, 0xe9, 0xb2, 0xde, 0xdb, 0xe9, 0xb2, 0xde, 0xdc, - 0xe9, 0xb2, 0xde, 0xdb, 0xe9, 0xb2, 0xde, 0xdc, 0xe9, 0xb2, 0xdf, 0xdb, - 0xe9, 0xb2, 0xdf, 0xdc, 0xe9, 0xb2, 0xdf, 0xdb, 0xe9, 0xb2, 0xdf, 0xdc, - 0xe9, 0xb2, 0xe0, 0xdb, 0xe9, 0xb2, 0xe0, 0xdc, 0xe9, 0xb2, 0xe0, 0xdb, - 0xe9, 0xb2, 0xe1, 0xdc, 0xe9, 0xb2, 0xe1, 0xdb, 0xe9, 0xb2, 0xe1, 0xdc, - 0xe9, 0xb2, 0xe1, 0xdb, 0xe9, 0xb2, 0xe2, 0xdc, 0xe9, 0xb2, 0xe2, 0xdb, - 0xe9, 0xb2, 0xe2, 0xdc, 0xe9, 0xb2, 0xe2, 0xdb, 0xe9, 0xb2, 0xe3, 0xdc, - 0xe9, 0xb2, 0xe3, 0xdb, 0xe9, 0xb2, 0xe3, 0xda, 0xe9, 0xb2, 0xe3, 0xdb, - 0xe9, 0xb2, 0xe4, 0xda, 0xe9, 0xb2, 0xe4, 0xdb, 0xe9, 0xb2, 0xe4, 0xda, - 0xe9, 0xb2, 0xe4, 0xdb, 0xe9, 0xb2, 0xe5, 0xda, 0xe9, 0xb2, 0xe5, 0xdb, - 0xe9, 0xb2, 0xe5, 0xda, 0xe9, 0xb2, 0xe5, 0xdb, 0xe9, 0xb2, 0xe6, 0xda, - 0xe9, 0xb2, 0xe6, 0xdb, 0xe9, 0xb2, 0xe6, 0xda, 0xe9, 0xb2, 0xe6, 0xdb, - 0xe9, 0xb2, 0xe7, 0xda, 0xe9, 0xb2, 0xe7, 0xdb, 0xe9, 0xb2, 0xe7, 0xda, - 0xe9, 0xb2, 0xe7, 0xdb, 0xe9, 0xb2, 0xe8, 0xda, 0xe9, 0xb2, 0xe8, 0xdb, - 0xe9, 0xb2, 0xe8, 0xda, 0xe9, 0xb2, 0xe8, 0xda, 0xe9, 0xb2, 0xe9, 0xda, - 0xe9, 0xb2, 0xe9, 0xda, 0xe9, 0xb2, 0xe9, 0xda, 0xe9, 0xb2, 0xe9, 0xda, - 0xe9, 0xb2, 0xe9, 0xda, 0xea, 0xb2, 0xe9, 0xda, 0xea, 0xb2, 0xe9, 0xda, - 0xea, 0xb0, 0xe9, 0xda, 0xea, 0xb2, 0xe9, 0xda, 0xeb, 0xb0, 0xec, 0xda, - 0xeb, 0xb3, 0xec, 0xda, 0xeb, 0xb2, 0xec, 0xda, 0xeb, 0xb3, 0xec, 0xda, - 0xec, 0xb2, 0xec, 0xda, 0xec, 0xb3, 0xec, 0xda, 0xec, 0xb2, 0xed, 0xda, - 0xec, 0xb2, 0xec, 0xda, 0xec, 0xb2, 0xed, 0xda, 0xec, 0xb2, 0xed, 0xda, - 0xec, 0xb2, 0xed, 0xda, 0xec, 0xb2, 0xed, 0xda, 0xec, 0xb2, 0xee, 0xda, - 0xec, 0xb2, 0xee, 0xda, 0xec, 0xb2, 0xee, 0xda, 0xec, 0xb2, 0xee, 0xda, - 0xec, 0xb2, 0xef, 0xda, 0xec, 0xb2, 0xef, 0xda, 0xec, 0xb2, 0xef, 0xda, - 0xec, 0xb2, 0xef, 0xda, 0xec, 0xb2, 0xf0, 0xda, 0xec, 0xb2, 0xf0, 0xda, - 0xec, 0xb2, 0xf0, 0xda, 0xec, 0xb2, 0xf0, 0xd7, 0xec, 0xb2, 0xf1, 0xda, - 0xec, 0xb2, 0xf1, 0xd7, 0xec, 0xb2, 0xf1, 0xda, 0xec, 0xb2, 0xf1, 0xd7, - 0xec, 0xb2, 0xf2, 0xda, 0xec, 0xb2, 0xf2, 0xd7, 0xec, 0xb2, 0xf2, 0xda, - 0xec, 0xb2, 0xf2, 0xd7, 0xec, 0xb2, 0xf2, 0xda, 0xec, 0xb2, 0xf3, 0xd7, - 0xec, 0xb2, 0xf3, 0xda, 0xec, 0xb2, 0xf3, 0xd7, 0xec, 0xb2, 0xf3, 0xda, - 0xec, 0xb2, 0xf4, 0xd7, 0xec, 0xb2, 0xf4, 0xda, 0xec, 0xb2, 0xf4, 0xd7, - 0xec, 0xb2, 0xf4, 0xda, 0xec, 0xb2, 0xf5, 0xd7, 0xec, 0xb2, 0xf5, 0xda, - 0xec, 0xb2, 0xf5, 0xd7, 0xec, 0xb2, 0xf5, 0xda, 0xec, 0xb2, 0xf5, 0xd7, - 0xec, 0xb2, 0xf6, 0xda, 0xec, 0xb2, 0xf6, 0xd7, 0xec, 0xb2, 0xf6, 0xda, - 0xec, 0xb2, 0xf6, 0xd7, 0xec, 0xb2, 0xf7, 0xda, 0xec, 0xb2, 0xf7, 0xd7, - 0xec, 0xb2, 0xf7, 0xda, 0xec, 0xb2, 0xf7, 0xd7, 0xec, 0xb2, 0xf8, 0xda, - 0xec, 0xb2, 0xf8, 0xd7, 0xec, 0xb2, 0xf8, 0xd6, 0xed, 0xb2, 0xf8, 0xd7, - 0xec, 0xb2, 0xf8, 0xd6, 0xed, 0xb2, 0xf9, 0xd7, 0xec, 0xb2, 0xf9, 0xd6, - 0xed, 0xb2, 0xf9, 0xd7, 0xec, 0xb2, 0xf9, 0xd6, 0xed, 0xb2, 0xfa, 0xd7, - 0xec, 0xb2, 0xfa, 0xd6, 0xed, 0xb2, 0xfa, 0xd7, 0xec, 0xb2, 0xfa, 0xd6, - 0xed, 0xb2, 0xfa, 0xd7, 0xec, 0xb2, 0xfb, 0xd6, 0xed, 0xb2, 0xfb, 0xd7, - 0xec, 0xb2, 0xfb, 0xd6, 0xed, 0xb2, 0xfb, 0xd7, 0xec, 0xb2, 0xfc, 0xd6, - 0xed, 0xb2, 0xfc, 0xd7, 0xec, 0xb2, 0xfc, 0xd6, 0xed, 0xb2, 0xfc, 0xd7, - 0xec, 0xb2, 0xfc, 0xd6, 0xed, 0xb2, 0xfd, 0xc7, 0xf7, 0xb2, 0xfd, 0xc7, - 0xf7, 0xb2, 0xfd, 0xc7, 0xf7, 0xb2, 0xfd, 0xc7, 0xf7, 0xb2, 0xfe, 0xc7, - 0xf7, 0xb2, 0xfe, 0xc7, 0xf7, 0xb2, 0xfe, 0xc7, 0xf7, 0xb2, 0xfe, 0xc7, - 0xf7, 0xb2, 0xfe, 0xc7, 0xf7, 0xb2, 0xff, 0xc7, 0xf7, 0xb2, 0xff, 0xc7, - 0xf7, 0xb2, 0x03, 0xdf, 0x89, 0xb3, 0x0a, 0xdd, 0x8a, 0xb3, 0x0f, 0xdf, - 0x89, 0xb3, 0x14, 0xdd, 0x8a, 0xb3, 0x17, 0xdf, 0x89, 0xb3, 0x1b, 0xdd, - 0x8a, 0xb3, 0x1e, 0xdf, 0x89, 0xb3, 0x20, 0xdd, 0x8a, 0xb3, 0x23, 0xdf, - 0x89, 0xb3, 0x25, 0xdd, 0x8a, 0xb3, 0x27, 0xdf, 0x89, 0xb3, 0x29, 0xdd, - 0x8a, 0xb3, 0x2b, 0xdf, 0x89, 0xb3, 0x2d, 0xdd, 0x8a, 0xb3, 0x2f, 0xdf, - 0x89, 0xb3, 0x31, 0xdd, 0x8a, 0xb3, 0x32, 0xdf, 0x89, 0xb3, 0x34, 0xdd, - 0x8a, 0xb3, 0x35, 0xdf, 0x89, 0xb3, 0x37, 0xdd, 0x8a, 0xb3, 0x38, 0xdf, - 0x89, 0xb3, 0x3a, 0xdd, 0x8a, 0xb3, 0x3b, 0xdf, 0x89, 0xb3, 0x3c, 0xdd, - 0x8a, 0xb3, 0x3e, 0xdf, 0x89, 0xb3, 0x3f, 0xdd, 0x8a, 0xb3, 0x40, 0xdf, - 0x89, 0xb3, 0x42, 0xdd, 0x8a, 0xb3, 0x43, 0xdf, 0x89, 0xb3, 0x44, 0xdd, - 0x8a, 0xb3, 0x45, 0xdf, 0x89, 0xb3, 0x46, 0xdd, 0x8a, 0xb3, 0x47, 0xdf, - 0x89, 0xb3, 0x48, 0xdd, 0x8a, 0xb3, 0x49, 0xdf, 0x89, 0xb3, 0x4a, 0xdd, - 0x8a, 0xb3, 0x4b, 0xdf, 0x89, 0xb3, 0x4c, 0xdd, 0x8a, 0xb3, 0x4d, 0xdb, - 0x8a, 0xb3, 0x4e, 0xdd, 0x8a, 0xb3, 0x4f, 0xdb, 0x8a, 0xb3, 0x50, 0xdd, - 0x8a, 0xb3, 0x51, 0xdb, 0x8a, 0xb3, 0x52, 0xdd, 0x8a, 0xb3, 0x53, 0xdb, - 0x8a, 0xb3, 0x54, 0xdd, 0x8a, 0xb3, 0x55, 0xdb, 0x8a, 0xb3, 0x56, 0xdd, - 0x8a, 0xb3, 0x57, 0xdb, 0x8a, 0xb3, 0x58, 0xdd, 0x8a, 0xb3, 0x58, 0xdb, - 0x8a, 0xb3, 0x59, 0xdd, 0x8a, 0xb3, 0x5a, 0xdb, 0x8a, 0xb3, 0x5b, 0xdd, - 0x8a, 0xb3, 0x5c, 0xdb, 0x8a, 0xb3, 0x5d, 0xdd, 0x8a, 0xb3, 0x5d, 0xdb, - 0x8a, 0xb3, 0x5e, 0xdd, 0x8a, 0xb3, 0x5f, 0xdb, 0x8a, 0xb3, 0x60, 0xdd, - 0x8a, 0xb3, 0x60, 0xdb, 0x8a, 0xb3, 0x61, 0xdd, 0x8a, 0xb3, 0x62, 0xdb, - 0x8a, 0xb3, 0x63, 0xdd, 0x8a, 0xb3, 0x63, 0xdb, 0x8a, 0xb3, 0x64, 0xdd, - 0x8a, 0xb3, 0x65, 0xdb, 0x8a, 0xb3, 0x66, 0xdd, 0x8a, 0xb3, 0x66, 0xdb, - 0x8a, 0xb3, 0x67, 0xdd, 0x8a, 0xb3, 0x68, 0xdb, 0x8a, 0xb3, 0x68, 0xdd, - 0x8a, 0xb3, 0x69, 0xdb, 0x8a, 0xb3, 0x6a, 0xdd, 0x8a, 0xb3, 0x6a, 0xdb, - 0x8a, 0xb3, 0x6b, 0xdd, 0x8a, 0xb3, 0x6c, 0xdb, 0x8a, 0xb3, 0x6c, 0xdd, - 0x8a, 0xb3, 0x6d, 0xdb, 0x8a, 0xb3, 0x6e, 0xdd, 0x8a, 0xb3, 0x6e, 0xdb, - 0x8a, 0xb3, 0x6f, 0xdd, 0x8a, 0xb3, 0x70, 0xdb, 0x8a, 0xb3, 0x70, 0xdd, - 0x8a, 0xb3, 0x71, 0xdb, 0x8a, 0xb3, 0x72, 0xdd, 0x8a, 0xb3, 0x72, 0xdb, - 0x8a, 0xb3, 0x73, 0xdd, 0x8a, 0xb3, 0x73, 0xdb, 0x8a, 0xb3, 0x74, 0xdd, - 0x8a, 0xb3, 0x75, 0xdb, 0x8a, 0xb3, 0x75, 0xdd, 0x8a, 0xb3, 0x76, 0xdb, - 0x8a, 0xb3, 0x76, 0xdd, 0x8a, 0xb3, 0x77, 0xdb, 0x8a, 0xb3, 0x78, 0xda, - 0x8b, 0xb3, 0x78, 0xdb, 0x8a, 0xb3, 0x79, 0xda, 0x8b, 0xb3, 0x79, 0xdb, - 0x8a, 0xb3, 0x7a, 0xda, 0x8b, 0xb3, 0x7a, 0xdb, 0x8a, 0xb3, 0x7b, 0xda, - 0x8b, 0xb3, 0x7c, 0xdb, 0x8a, 0xb3, 0x7c, 0xda, 0x8b, 0xb3, 0x7d, 0xdb, - 0x8a, 0xb3, 0x7d, 0xda, 0x8b, 0xb3, 0x7e, 0xdb, 0x8a, 0xb3, 0x7e, 0xda, - 0x8b, 0xb3, 0x7f, 0xdb, 0x8a, 0xb3, 0x7f, 0xda, 0x8b, 0xb3, 0x80, 0xdb, - 0x8a, 0xb3, 0x81, 0xda, 0x8b, 0xb3, 0x81, 0xdb, 0x8a, 0xb3, 0x82, 0xda, - 0x8b, 0xb3, 0x82, 0xdb, 0x8a, 0xb3, 0x83, 0xda, 0x8b, 0xb3, 0x83, 0xdb, - 0x8a, 0xb3, 0x84, 0xda, 0x8b, 0xb3, 0x84, 0xdb, 0x8a, 0xb3, 0x85, 0xda, - 0x8b, 0xb3, 0x85, 0xdb, 0x8a, 0xb3, 0x86, 0xda, 0x8b, 0xb3, 0x86, 0xdb, - 0x8a, 0xb3, 0x87, 0xda, 0x8b, 0xb3, 0x87, 0xda, 0x8b, 0xb3, 0x88, 0xda, - 0x8b, 0xb3, 0x88, 0xda, 0x8b, 0xb3, 0x89, 0xda, 0x8b, 0xb3, 0x89, 0xda, - 0x8b, 0xb3, 0x8a, 0xda, 0x8b, 0xb3, 0x8a, 0xda, 0x8b, 0xb3, 0x8b, 0xda, - 0x8b, 0xb2, 0x8a, 0xda, 0x8b, 0xb3, 0x8b, 0xda, 0x8c, 0xb2, 0x8a, 0xda, - 0x8c, 0xb3, 0x8b, 0xda, 0x8d, 0xb2, 0x8a, 0xda, 0x8d, 0xb3, 0x8b, 0xda, - 0x8e, 0xb2, 0x8a, 0xda, 0x8e, 0xb3, 0x8b, 0xda, 0x8e, 0xb2, 0x8a, 0xda, - 0x8f, 0xb3, 0x8b, 0xda, 0x8f, 0xb2, 0x8a, 0xda, 0x90, 0xb3, 0x8b, 0xda, - 0x90, 0xb2, 0x8a, 0xda, 0x91, 0xb3, 0x8b, 0xda, 0x91, 0xb2, 0x8a, 0xda, - 0x92, 0xb3, 0x8b, 0xda, 0x92, 0xb2, 0x8b, 0xda, 0x93, 0xaf, 0x8b, 0xda, - 0x93, 0xb2, 0x8b, 0xda, 0x94, 0xaf, 0x8b, 0xda, 0x94, 0xb2, 0x8b, 0xda, - 0x94, 0xaf, 0x8b, 0xda, 0x95, 0xb2, 0x8b, 0xda, 0x95, 0xaf, 0x8b, 0xda, - 0x96, 0xb2, 0x8b, 0xda, 0x96, 0xaf, 0x8b, 0xda, 0x97, 0xb2, 0x8b, 0xda, - 0x97, 0xaf, 0x8b, 0xda, 0x98, 0xb2, 0x8b, 0xda, 0x98, 0xaf, 0x8b, 0xda, - 0x98, 0xb2, 0x8b, 0xda, 0x99, 0xaf, 0x8b, 0xda, 0x99, 0xb2, 0x8b, 0xda, - 0x9a, 0xaf, 0x8b, 0xda, 0x9a, 0xb2, 0x8b, 0xda, 0x9a, 0xaf, 0x8b, 0xda, - 0x9b, 0xb2, 0x8b, 0xda, 0x9b, 0xaf, 0x8b, 0xda, 0x9c, 0xb2, 0x8b, 0xda, - 0x9c, 0xaf, 0x8b, 0xda, 0x9d, 0xb2, 0x8b, 0xda, 0x9d, 0xaf, 0x8b, 0xda, - 0x9d, 0xb2, 0x8b, 0xda, 0x9e, 0xaf, 0x8b, 0xda, 0x9e, 0xb2, 0x8b, 0xda, - 0x9f, 0xaf, 0x8b, 0xda, 0x9f, 0xb2, 0x8b, 0xda, 0x9f, 0xaf, 0x8b, 0xda, - 0xa0, 0xb2, 0x8b, 0xda, 0xa0, 0xaf, 0x8b, 0xda, 0xa1, 0xb2, 0x8b, 0xda, - 0xa1, 0xaf, 0x8b, 0xda, 0xa1, 0xb2, 0x8b, 0xda, 0xa2, 0xaf, 0x8b, 0xda, - 0xa2, 0xb2, 0x8b, 0xda, 0xa3, 0xaf, 0xa3, 0xda, 0xa3, 0x98, 0xa3, 0xda, - 0xa3, 0x97, 0xa3, 0xda, 0xa4, 0x98, 0xa3, 0xda, 0xa4, 0x97, 0xa3, 0xda, - 0xa5, 0x98, 0xa3, 0xda, 0xa5, 0x97, 0xa3, 0xda, 0xa5, 0x98, 0xa3, 0xda, - 0xa6, 0x97, 0xa3, 0xda, 0xa6, 0x98, 0xa3, 0xda, 0xa6, 0x97, 0xa3, 0xda, - 0xa7, 0x98, 0xa3, 0xda, 0xa7, 0x97, 0xa3, 0xda, 0xa8, 0x98, 0xa3, 0xda, - 0xa8, 0x97, 0xa3, 0xda, 0xa8, 0x98, 0xa3, 0xda, 0xa9, 0x97, 0xa3, 0xda, - 0xa9, 0x98, 0xa3, 0xda, 0xaa, 0x97, 0xa3, 0xda, 0xaa, 0x98, 0xa3, 0xda, - 0xaa, 0x97, 0xa3, 0xda, 0xab, 0x98, 0xa3, 0xda, 0xab, 0x97, 0xa3, 0xda, - 0xab, 0x98, 0xa3, 0xda, 0xac, 0x97, 0xa3, 0xda, 0xac, 0x98, 0xa3, 0xda, - 0xac, 0x97, 0xa3, 0xda, 0xad, 0x98, 0xa3, 0xda, 0xad, 0x97, 0xa3, 0xda, - 0xae, 0x98, 0xa3, 0xda, 0xae, 0x97, 0xa3, 0xda, 0xae, 0x98, 0xa3, 0xda, - 0xaf, 0x97, 0xa3, 0xda, 0xaf, 0x98, 0xa3, 0xda, 0xaf, 0x97, 0xa3, 0xda, - 0xb0, 0x98, 0xa3, 0xda, 0xb0, 0x97, 0xa3, 0xda, 0xb0, 0x98, 0xa3, 0xda, - 0xb1, 0x97, 0xa3, 0xda, 0xb1, 0x98, 0xa3, 0xda, 0xb2, 0x97, 0xa3, 0xda, - 0xb2, 0x98, 0xa3, 0xda, 0xb2, 0x97, 0xa3, 0xda, 0xb3, 0x98, 0xa3, 0xda, - 0xb3, 0x97, 0xa3, 0xda, 0xb3, 0x98, 0xa3, 0xda, 0xb4, 0x97, 0xa3, 0xda, - 0xb4, 0x98, 0xa3, 0xda, 0xb4, 0x97, 0xa3, 0xda, 0xb5, 0x98, 0xa3, 0xda, - 0xb5, 0x97, 0xa3, 0xda, 0xb5, 0x98, 0xa3, 0xda, 0xb6, 0x97, 0xa3, 0xda, - 0xb6, 0x98, 0xa3, 0xda, 0xb6, 0x97, 0xa3, 0xda, 0xb7, 0x98, 0xa3, 0xda, - 0xb7, 0x97, 0xa3, 0xda, 0xb7, 0x98, 0xa3, 0xda, 0xb8, 0x97, 0xd0, 0xda, - 0xb8, 0xb8, 0xd0, 0xda, 0xb8, 0xbb, 0xd0, 0xda, 0xb9, 0xb8, 0xd0, 0xda, - 0xb9, 0xbb, 0xd0, 0xda, 0xb9, 0xb8, 0xd0, 0xda, 0xba, 0xbb, 0xd0, 0xda, - 0xba, 0xb8, 0xd0, 0xda, 0xba, 0xbb, 0xd0, 0xda, 0xbb, 0xb8, 0xd0, 0xda, - 0xbb, 0xbb, 0xd0, 0xda, 0xbb, 0xb8, 0xd0, 0xda, 0xbc, 0xbb, 0xd0, 0xda, - 0xbc, 0xb8, 0xd0, 0xda, 0xbc, 0xbb, 0xd0, 0xda, 0xbd, 0xb8, 0xd0, 0xda, - 0xbd, 0xbb, 0xd0, 0xda, 0xbd, 0xb8, 0xd0, 0xda, 0xbe, 0xbb, 0xd0, 0xda, - 0xbe, 0xb8, 0xd0, 0xda, 0xbe, 0xb5, 0xd0, 0xda, 0xbf, 0xb8, 0xd0, 0xda, - 0xbf, 0xb5, 0xd0, 0xda, 0xbf, 0xb8, 0xd0, 0xda, 0xc0, 0xb5, 0xd0, 0xda, - 0xc0, 0xb8, 0xd0, 0xda, 0xc0, 0xb5, 0xd0, 0xda, 0xc1, 0xb8, 0xd0, 0xda, - 0xc1, 0xb5, 0xd0, 0xda, 0xc1, 0xb8, 0xd0, 0xda, 0xc1, 0xb5, 0xd0, 0xda, - 0xc2, 0xb8, 0xd0, 0xda, 0xc2, 0xb5, 0xd0, 0xda, 0xc2, 0xb8, 0xd0, 0xda, - 0xc3, 0xb5, 0xd0, 0xda, 0xc3, 0xb8, 0xd0, 0xda, 0xc3, 0xb5, 0xd0, 0xda, - 0xc4, 0xb8, 0xd0, 0xda, 0xc4, 0xb5, 0xd0, 0xda, 0xc4, 0xb8, 0xd0, 0xda, - 0xc5, 0xb5, 0xd0, 0xda, 0xc5, 0xb8, 0xd0, 0xda, 0xc5, 0xb5, 0xd0, 0xda, - 0xc6, 0xb8, 0xd0, 0xda, 0xc6, 0xb5, 0xd0, 0xda, 0xc6, 0xb8, 0xd0, 0xda, - 0xc6, 0xb5, 0xd0, 0xda, 0xc7, 0xb8, 0xd0, 0xda, 0xc7, 0xb5, 0xd0, 0xda, - 0xc7, 0xb8, 0xd0, 0xda, 0xc8, 0xb5, 0xd0, 0xda, 0xc8, 0xb8, 0xd0, 0xda, - 0xc8, 0xb5, 0xd0, 0xda, 0xc9, 0xb8, 0xd0, 0xda, 0xc9, 0xb5, 0xd0, 0xda, - 0xc9, 0xb8, 0xd0, 0xda, 0xc9, 0xb5, 0xd1, 0xda, 0xca, 0xb3, 0xd0, 0xda, - 0xca, 0xb5, 0xd1, 0xda, 0xca, 0xb3, 0xd0, 0xda, 0xcb, 0xb5, 0xd1, 0xda, - 0xcb, 0xb3, 0xd0, 0xda, 0xcb, 0xb5, 0xd1, 0xda, 0xcc, 0xb3, 0xd0, 0xda, - 0xcc, 0xb5, 0xd1, 0xda, 0xcc, 0xb3, 0xd0, 0xda, 0xcc, 0xb5, 0xd1, 0xda, - 0xcd, 0xb3, 0xd0, 0xda, 0xcd, 0xb5, 0xd1, 0xda, 0xcd, 0xb3, 0xd0, 0xda, - 0xce, 0xb5, 0xd1, 0xda, 0xce, 0xb3, 0xd0, 0xda, 0xce, 0xb5, 0xd1, 0xda, - 0xce, 0xb3, 0xd0, 0xda, 0xcf, 0xb5, 0xd1, 0xda, 0xcf, 0xb3, 0xd0, 0xda, - 0xcf, 0xb5, 0xd1, 0xda, 0xd0, 0xb3, 0xd1, 0xda, 0xd0, 0xb3, 0xd1, 0xda, - 0xd0, 0xb3, 0xd1, 0xda, 0xd0, 0xb3, 0xd1, 0xd9, 0xd1, 0xb3, 0xd1, 0xda, - 0xd0, 0xb3, 0xd1, 0xd9, 0xd1, 0xb3, 0xd2, 0xda, 0xd0, 0xb3, 0xd2, 0xd9, - 0xd1, 0xb3, 0xd2, 0xda, 0xd0, 0xb3, 0xd2, 0xd9, 0xd1, 0xb3, 0xd3, 0xda, - 0xd0, 0xb3, 0xd3, 0xd9, 0xd1, 0xb3, 0xd3, 0xda, 0xd0, 0xb3, 0xd4, 0xd9, - 0xd1, 0xb3, 0xd4, 0xda, 0xd0, 0xb3, 0xd4, 0xd9, 0xd1, 0xb3, 0xd4, 0xda, - 0xd0, 0xb3, 0xd5, 0xd9, 0xd1, 0xb3, 0xd5, 0xda, 0xd0, 0xb3, 0xd5, 0xd9, - 0xd1, 0xb3, 0xd6, 0xd8, 0xd1, 0xb3, 0xd6, 0xd9, 0xd1, 0xb3, 0xd6, 0xd8, - 0xd1, 0xb3, 0xd6, 0xd9, 0xd1, 0xb3, 0xd7, 0xd8, 0xd1, 0xb3, 0xd7, 0xd9, - 0xd1, 0xb3, 0xd7, 0xd8, 0xd1, 0xb3, 0xd7, 0xd9, 0xd1, 0xb3, 0xd8, 0xd8, - 0xd1, 0xb3, 0xd8, 0xd9, 0xd1, 0xb3, 0xd8, 0xd8, 0xd1, 0xb3, 0xd9, 0xd9, - 0xd1, 0xb3, 0xd9, 0xd8, 0xd1, 0xb3, 0xd9, 0xd9, 0xd1, 0xb3, 0xd9, 0xd8, - 0xd1, 0xb3, 0xda, 0xd9, 0xd1, 0xb3, 0xda, 0xd8, 0xd1, 0xb3, 0xda, 0xd9, - 0xd1, 0xb3, 0xda, 0xd8, 0xd1, 0xb3, 0xdb, 0xd9, 0xd1, 0xb3, 0xdb, 0xd8, - 0xd1, 0xb3, 0xdb, 0xd9, 0xd1, 0xb3, 0xdb, 0xd8, 0xd1, 0xb3, 0xdc, 0xd9, - 0xd1, 0xb3, 0xdc, 0xd8, 0xd1, 0xb3, 0xdc, 0xd9, 0xd1, 0xb3, 0xdd, 0xd8, - 0xd1, 0xb3, 0xdd, 0xd9, 0xd1, 0xb3, 0xdd, 0xd8, 0xd1, 0xb3, 0xdd, 0xdc, - 0xe9, 0xb3, 0xde, 0xda, 0xe9, 0xb3, 0xde, 0xdc, 0xe9, 0xb3, 0xde, 0xda, - 0xe9, 0xb3, 0xde, 0xdc, 0xe9, 0xb3, 0xdf, 0xda, 0xe9, 0xb3, 0xdf, 0xdc, - 0xe9, 0xb3, 0xdf, 0xda, 0xe9, 0xb3, 0xdf, 0xdc, 0xe9, 0xb3, 0xe0, 0xda, - 0xe9, 0xb3, 0xe0, 0xdc, 0xe9, 0xb3, 0xe0, 0xda, 0xe9, 0xb3, 0xe1, 0xdc, - 0xe9, 0xb3, 0xe1, 0xda, 0xe9, 0xb3, 0xe1, 0xdc, 0xe9, 0xb3, 0xe1, 0xda, - 0xe9, 0xb3, 0xe2, 0xdc, 0xe9, 0xb3, 0xe2, 0xda, 0xe9, 0xb3, 0xe2, 0xdc, - 0xe9, 0xb3, 0xe2, 0xda, 0xe9, 0xb3, 0xe3, 0xdc, 0xe9, 0xb3, 0xe3, 0xda, - 0xe9, 0xb3, 0xe3, 0xdc, 0xe9, 0xb3, 0xe3, 0xda, 0xe9, 0xb3, 0xe4, 0xdc, - 0xe9, 0xb3, 0xe4, 0xda, 0xe9, 0xb3, 0xe4, 0xdc, 0xe9, 0xb3, 0xe4, 0xda, - 0xe9, 0xb3, 0xe5, 0xdc, 0xe9, 0xb3, 0xe5, 0xda, 0xe9, 0xb3, 0xe5, 0xda, - 0xe9, 0xb3, 0xe5, 0xda, 0xe9, 0xb3, 0xe6, 0xda, 0xe9, 0xb3, 0xe6, 0xda, - 0xe9, 0xb3, 0xe6, 0xda, 0xe9, 0xb3, 0xe6, 0xda, 0xe9, 0xb3, 0xe7, 0xda, - 0xe9, 0xb3, 0xe7, 0xda, 0xe9, 0xb3, 0xe7, 0xda, 0xe9, 0xb3, 0xe7, 0xda, - 0xe9, 0xb3, 0xe8, 0xda, 0xe9, 0xb3, 0xe8, 0xda, 0xe9, 0xb3, 0xe8, 0xda, - 0xe9, 0xb3, 0xe8, 0xda, 0xe9, 0xb3, 0xe9, 0xda, 0xe9, 0xb3, 0xe9, 0xda, - 0xe9, 0xb3, 0xe9, 0xda, 0xe9, 0xb3, 0xe9, 0xda, 0xe9, 0xb3, 0xe9, 0xda, - 0xea, 0xb3, 0xe9, 0xda, 0xea, 0xb3, 0xe9, 0xda, 0xea, 0xb1, 0xe9, 0xda, - 0xea, 0xb3, 0xe9, 0xda, 0xeb, 0xb1, 0xec, 0xda, 0xeb, 0xb3, 0xec, 0xda, - 0xeb, 0xb3, 0xec, 0xda, 0xeb, 0xb3, 0xec, 0xda, 0xec, 0xb3, 0xec, 0xda, - 0xec, 0xb3, 0xec, 0xda, 0xec, 0xb3, 0xec, 0xd9, 0xec, 0xb3, 0xec, 0xda, - 0xec, 0xb3, 0xed, 0xd9, 0xec, 0xb3, 0xed, 0xda, 0xec, 0xb3, 0xed, 0xd9, - 0xec, 0xb3, 0xed, 0xda, 0xec, 0xb3, 0xee, 0xd9, 0xec, 0xb3, 0xee, 0xda, - 0xec, 0xb3, 0xee, 0xd9, 0xec, 0xb3, 0xee, 0xda, 0xec, 0xb3, 0xef, 0xd9, - 0xec, 0xb3, 0xef, 0xda, 0xec, 0xb3, 0xef, 0xd9, 0xec, 0xb3, 0xef, 0xda, - 0xec, 0xb3, 0xf0, 0xd9, 0xec, 0xb3, 0xf0, 0xda, 0xec, 0xb3, 0xf0, 0xd9, - 0xec, 0xb3, 0xf0, 0xd8, 0xec, 0xb3, 0xf1, 0xd9, 0xec, 0xb3, 0xf1, 0xd8, - 0xec, 0xb3, 0xf1, 0xd9, 0xec, 0xb3, 0xf1, 0xd8, 0xec, 0xb3, 0xf2, 0xd9, - 0xec, 0xb3, 0xf2, 0xd8, 0xec, 0xb3, 0xf2, 0xd9, 0xec, 0xb3, 0xf2, 0xd8, - 0xec, 0xb3, 0xf2, 0xd9, 0xec, 0xb3, 0xf3, 0xd8, 0xec, 0xb3, 0xf3, 0xd9, - 0xec, 0xb3, 0xf3, 0xd8, 0xec, 0xb3, 0xf3, 0xd9, 0xec, 0xb3, 0xf4, 0xd8, - 0xec, 0xb3, 0xf4, 0xd9, 0xec, 0xb3, 0xf4, 0xd8, 0xec, 0xb3, 0xf4, 0xd9, - 0xec, 0xb3, 0xf5, 0xd8, 0xec, 0xb3, 0xf5, 0xd9, 0xec, 0xb3, 0xf5, 0xd8, - 0xec, 0xb3, 0xf5, 0xd9, 0xec, 0xb3, 0xf5, 0xd8, 0xec, 0xb3, 0xf6, 0xd9, - 0xec, 0xb3, 0xf6, 0xd8, 0xec, 0xb3, 0xf6, 0xd9, 0xec, 0xb3, 0xf6, 0xd8, - 0xec, 0xb3, 0xf7, 0xd9, 0xec, 0xb3, 0xf7, 0xd8, 0xec, 0xb3, 0xf7, 0xd9, - 0xec, 0xb3, 0xf7, 0xd8, 0xec, 0xb3, 0xf8, 0xd9, 0xec, 0xb3, 0xf8, 0xd8, - 0xec, 0xb3, 0xf8, 0xd9, 0xec, 0xb3, 0xf8, 0xd8, 0xec, 0xb3, 0xf8, 0xd9, - 0xec, 0xb3, 0xf9, 0xd8, 0xec, 0xb3, 0xf9, 0xd9, 0xec, 0xb3, 0xf9, 0xd8, - 0xec, 0xb3, 0xf9, 0xd9, 0xec, 0xb3, 0xfa, 0xd8, 0xec, 0xb3, 0xfa, 0xd9, - 0xec, 0xb3, 0xfa, 0xd8, 0xec, 0xb3, 0xfa, 0xd9, 0xec, 0xb3, 0xfa, 0xd8, - 0xec, 0xb3, 0xfb, 0xd9, 0xec, 0xb3, 0xfb, 0xd8, 0xec, 0xb3, 0xfb, 0xd9, - 0xec, 0xb3, 0xfb, 0xd8, 0xec, 0xb3, 0xfc, 0xd6, 0xed, 0xb3, 0xfc, 0xd8, - 0xec, 0xb3, 0xfc, 0xd8, 0xec, 0xb3, 0xfc, 0xd8, 0xec, 0xb3, 0xfc, 0xd8, - 0xec, 0xb3, 0xfd, 0xc7, 0xf7, 0xb3, 0xfd, 0xc7, 0xf7, 0xb3, 0xfd, 0xc7, - 0xf7, 0xb3, 0xfd, 0xc7, 0xf7, 0xb3, 0xfe, 0xc7, 0xf7, 0xb3, 0xfe, 0xc7, - 0xf7, 0xb3, 0xfe, 0xc7, 0xf7, 0xb3, 0xfe, 0xc7, 0xf7, 0xb3, 0xfe, 0xc7, - 0xf7, 0xb3, 0xff, 0xc7, 0xf7, 0xb3, 0xff, 0xc7, 0xf7, 0xb3, 0x03, 0xdf, - 0x89, 0xb3, 0x0a, 0xe1, 0x89, 0xb3, 0x0f, 0xdf, 0x89, 0xb3, 0x14, 0xdf, - 0x89, 0xb3, 0x17, 0xdf, 0x89, 0xb3, 0x1b, 0xdf, 0x89, 0xb3, 0x1e, 0xdf, - 0x89, 0xb3, 0x20, 0xdf, 0x89, 0xb3, 0x23, 0xdf, 0x89, 0xb3, 0x25, 0xdf, - 0x89, 0xb3, 0x27, 0xdf, 0x89, 0xb3, 0x29, 0xdf, 0x89, 0xb3, 0x2b, 0xdf, - 0x89, 0xb3, 0x2d, 0xdf, 0x89, 0xb3, 0x2f, 0xdf, 0x89, 0xb3, 0x31, 0xdf, - 0x89, 0xb3, 0x32, 0xdf, 0x89, 0xb3, 0x34, 0xdf, 0x89, 0xb3, 0x35, 0xdf, - 0x89, 0xb3, 0x37, 0xdf, 0x89, 0xb3, 0x38, 0xdf, 0x89, 0xb3, 0x3a, 0xdf, - 0x89, 0xb3, 0x3b, 0xdf, 0x89, 0xb3, 0x3c, 0xdf, 0x89, 0xb3, 0x3e, 0xdf, - 0x89, 0xb3, 0x3f, 0xdf, 0x89, 0xb3, 0x40, 0xdf, 0x89, 0xb3, 0x42, 0xdf, - 0x89, 0xb3, 0x43, 0xdf, 0x89, 0xb3, 0x44, 0xdf, 0x89, 0xb3, 0x45, 0xdf, - 0x89, 0xb3, 0x46, 0xdf, 0x89, 0xb3, 0x47, 0xdf, 0x89, 0xb3, 0x48, 0xdf, - 0x89, 0xb3, 0x49, 0xdf, 0x89, 0xb3, 0x4a, 0xdf, 0x89, 0xb3, 0x4b, 0xdf, - 0x89, 0xb3, 0x4c, 0xdf, 0x89, 0xb3, 0x4d, 0xdf, 0x89, 0xb3, 0x4e, 0xdd, - 0x8a, 0xb3, 0x4f, 0xdf, 0x89, 0xb3, 0x50, 0xdd, 0x8a, 0xb3, 0x51, 0xdf, - 0x89, 0xb3, 0x52, 0xdd, 0x8a, 0xb3, 0x53, 0xdf, 0x89, 0xb3, 0x54, 0xdd, - 0x8a, 0xb3, 0x55, 0xdf, 0x89, 0xb3, 0x56, 0xdd, 0x8a, 0xb3, 0x57, 0xdf, - 0x89, 0xb3, 0x58, 0xdd, 0x8a, 0xb3, 0x58, 0xdf, 0x89, 0xb3, 0x59, 0xdd, - 0x8a, 0xb3, 0x5a, 0xdf, 0x89, 0xb3, 0x5b, 0xdd, 0x8a, 0xb3, 0x5c, 0xdf, - 0x89, 0xb3, 0x5d, 0xdd, 0x8a, 0xb3, 0x5d, 0xdf, 0x89, 0xb3, 0x5e, 0xdd, - 0x8a, 0xb3, 0x5f, 0xdc, 0x8a, 0xb3, 0x60, 0xdd, 0x8a, 0xb3, 0x60, 0xdc, - 0x8a, 0xb3, 0x61, 0xdd, 0x8a, 0xb3, 0x62, 0xdc, 0x8a, 0xb3, 0x63, 0xdd, - 0x8a, 0xb3, 0x63, 0xdc, 0x8a, 0xb3, 0x64, 0xdd, 0x8a, 0xb3, 0x65, 0xdc, - 0x8a, 0xb3, 0x66, 0xdd, 0x8a, 0xb3, 0x66, 0xdc, 0x8a, 0xb3, 0x67, 0xdd, - 0x8a, 0xb3, 0x68, 0xdc, 0x8a, 0xb3, 0x68, 0xdd, 0x8a, 0xb3, 0x69, 0xdc, - 0x8a, 0xb3, 0x6a, 0xdd, 0x8a, 0xb3, 0x6a, 0xdc, 0x8a, 0xb3, 0x6b, 0xdd, - 0x8a, 0xb3, 0x6c, 0xdc, 0x8a, 0xb3, 0x6c, 0xdd, 0x8a, 0xb3, 0x6d, 0xdc, - 0x8a, 0xb3, 0x6e, 0xdd, 0x8a, 0xb3, 0x6e, 0xdc, 0x8a, 0xb3, 0x6f, 0xdd, - 0x8a, 0xb3, 0x70, 0xdc, 0x8a, 0xb3, 0x70, 0xdd, 0x8a, 0xb3, 0x71, 0xdc, - 0x8a, 0xb3, 0x72, 0xdd, 0x8a, 0xb3, 0x72, 0xdc, 0x8a, 0xb3, 0x73, 0xdd, - 0x8a, 0xb3, 0x73, 0xdc, 0x8a, 0xb3, 0x74, 0xdd, 0x8a, 0xb3, 0x75, 0xdc, - 0x8a, 0xb3, 0x75, 0xdd, 0x8a, 0xb3, 0x76, 0xdc, 0x8a, 0xb3, 0x76, 0xdd, - 0x8a, 0xb3, 0x77, 0xdc, 0x8a, 0xb3, 0x78, 0xda, 0x8b, 0xb3, 0x78, 0xdc, - 0x8a, 0xb3, 0x79, 0xda, 0x8b, 0xb3, 0x79, 0xdc, 0x8a, 0xb3, 0x7a, 0xda, - 0x8b, 0xb3, 0x7a, 0xdc, 0x8a, 0xb3, 0x7b, 0xda, 0x8b, 0xb3, 0x7c, 0xdc, - 0x8a, 0xb3, 0x7c, 0xda, 0x8b, 0xb3, 0x7d, 0xdc, 0x8a, 0xb3, 0x7d, 0xda, - 0x8b, 0xb3, 0x7e, 0xdc, 0x8a, 0xb3, 0x7e, 0xda, 0x8b, 0xb3, 0x7f, 0xdc, - 0x8a, 0xb3, 0x7f, 0xda, 0x8b, 0xb3, 0x80, 0xdc, 0x8a, 0xb3, 0x81, 0xda, - 0x8b, 0xb3, 0x81, 0xdc, 0x8a, 0xb3, 0x82, 0xda, 0x8b, 0xb3, 0x82, 0xdc, - 0x8a, 0xb3, 0x83, 0xda, 0x8b, 0xb3, 0x83, 0xdc, 0x8a, 0xb3, 0x84, 0xda, - 0x8b, 0xb3, 0x84, 0xdc, 0x8a, 0xb3, 0x85, 0xda, 0x8b, 0xb3, 0x85, 0xdc, - 0x8a, 0xb3, 0x86, 0xda, 0x8b, 0xb3, 0x86, 0xdc, 0x8a, 0xb3, 0x87, 0xda, - 0x8b, 0xb3, 0x87, 0xda, 0x8b, 0xb3, 0x88, 0xda, 0x8b, 0xb3, 0x88, 0xda, - 0x8b, 0xb3, 0x89, 0xda, 0x8b, 0xb3, 0x89, 0xda, 0x8b, 0xb3, 0x8a, 0xda, - 0x8b, 0xb3, 0x8a, 0xda, 0x8b, 0xb3, 0x8a, 0xda, 0x8b, 0xb3, 0x8a, 0xda, - 0x8b, 0xb3, 0x8a, 0xda, 0x8c, 0xb3, 0x8a, 0xda, 0x8c, 0xb3, 0x8b, 0xda, - 0x8d, 0xb1, 0x8a, 0xda, 0x8d, 0xb3, 0x8b, 0xda, 0x8e, 0xb1, 0x8a, 0xda, - 0x8e, 0xb3, 0x8b, 0xda, 0x8e, 0xb1, 0x8a, 0xda, 0x8f, 0xb3, 0x8b, 0xda, - 0x8f, 0xb1, 0x8a, 0xda, 0x90, 0xb3, 0x8b, 0xda, 0x90, 0xb1, 0x8a, 0xda, - 0x91, 0xb3, 0x8b, 0xda, 0x91, 0xb1, 0x8a, 0xda, 0x92, 0xb3, 0x8b, 0xda, - 0x92, 0xb1, 0x8a, 0xda, 0x93, 0xb3, 0x8b, 0xda, 0x93, 0xb1, 0x8a, 0xda, - 0x94, 0xb3, 0x8b, 0xda, 0x94, 0xb1, 0x8a, 0xda, 0x94, 0xb3, 0x8b, 0xda, - 0x95, 0xb1, 0x8a, 0xda, 0x95, 0xb3, 0x8b, 0xda, 0x96, 0xb1, 0x8b, 0xda, - 0x96, 0xae, 0x8b, 0xda, 0x97, 0xb1, 0x8b, 0xda, 0x97, 0xae, 0x8b, 0xda, - 0x98, 0xb1, 0x8b, 0xda, 0x98, 0xae, 0x8b, 0xda, 0x98, 0xb1, 0x8b, 0xda, - 0x99, 0xae, 0x8b, 0xda, 0x99, 0xb1, 0x8b, 0xda, 0x9a, 0xae, 0x8b, 0xda, - 0x9a, 0xb1, 0x8b, 0xda, 0x9a, 0xae, 0x8b, 0xda, 0x9b, 0xb1, 0x8b, 0xda, - 0x9b, 0xae, 0x8b, 0xda, 0x9c, 0xb1, 0x8b, 0xda, 0x9c, 0xae, 0x8b, 0xda, - 0x9d, 0xb1, 0x8b, 0xda, 0x9d, 0xae, 0x8b, 0xda, 0x9d, 0xb1, 0x8b, 0xda, - 0x9e, 0xae, 0x8b, 0xda, 0x9e, 0xb1, 0x8b, 0xda, 0x9f, 0xae, 0x8b, 0xda, - 0x9f, 0xb1, 0x8b, 0xda, 0x9f, 0xae, 0x8b, 0xda, 0xa0, 0xb1, 0x8b, 0xda, - 0xa0, 0xae, 0x8b, 0xda, 0xa1, 0xb1, 0x8b, 0xda, 0xa1, 0xae, 0x8b, 0xda, - 0xa1, 0xb1, 0x8b, 0xda, 0xa2, 0xae, 0x8b, 0xda, 0xa2, 0xb1, 0x8b, 0xda, - 0xa3, 0xae, 0xa3, 0xda, 0xa3, 0x97, 0xa3, 0xda, 0xa3, 0x97, 0xa3, 0xda, - 0xa4, 0x97, 0xa3, 0xda, 0xa4, 0x97, 0xa3, 0xda, 0xa5, 0x97, 0xa3, 0xda, - 0xa5, 0x97, 0xa3, 0xda, 0xa5, 0x97, 0xa3, 0xda, 0xa6, 0x97, 0xa3, 0xda, - 0xa6, 0x97, 0xa3, 0xda, 0xa6, 0x97, 0xa3, 0xda, 0xa7, 0x97, 0xa3, 0xda, - 0xa7, 0x97, 0xa3, 0xda, 0xa8, 0x97, 0xa3, 0xda, 0xa8, 0x97, 0xa3, 0xda, - 0xa8, 0x97, 0xa3, 0xda, 0xa9, 0x97, 0xa3, 0xda, 0xa9, 0x97, 0xa3, 0xda, - 0xaa, 0x97, 0xa3, 0xda, 0xaa, 0x97, 0xa3, 0xda, 0xaa, 0x97, 0xa3, 0xda, - 0xab, 0x97, 0xa3, 0xda, 0xab, 0x97, 0xa3, 0xda, 0xab, 0x97, 0xa3, 0xda, - 0xac, 0x97, 0xa3, 0xda, 0xac, 0x97, 0xa3, 0xda, 0xac, 0x97, 0xa3, 0xda, - 0xad, 0x97, 0xa3, 0xda, 0xad, 0x97, 0xa3, 0xda, 0xae, 0x97, 0xa3, 0xda, - 0xae, 0x97, 0xa3, 0xda, 0xae, 0x97, 0xa3, 0xda, 0xaf, 0x97, 0xa3, 0xda, - 0xaf, 0x97, 0xa3, 0xda, 0xaf, 0x97, 0xa3, 0xda, 0xb0, 0x97, 0xa3, 0xda, - 0xb0, 0x97, 0xa3, 0xda, 0xb0, 0x97, 0xa3, 0xda, 0xb1, 0x97, 0xa3, 0xda, - 0xb1, 0x97, 0xa3, 0xda, 0xb2, 0x97, 0xa3, 0xda, 0xb2, 0x97, 0xa3, 0xda, - 0xb2, 0x97, 0xa3, 0xda, 0xb3, 0x97, 0xa3, 0xda, 0xb3, 0x97, 0xa3, 0xda, - 0xb3, 0x97, 0xa3, 0xda, 0xb4, 0x97, 0xa3, 0xda, 0xb4, 0x97, 0xa3, 0xda, - 0xb4, 0x97, 0xa3, 0xda, 0xb5, 0x97, 0xa3, 0xda, 0xb5, 0x97, 0xa3, 0xda, - 0xb5, 0x97, 0xa3, 0xda, 0xb6, 0x97, 0xa3, 0xda, 0xb6, 0x97, 0xa3, 0xda, - 0xb6, 0x97, 0xa3, 0xda, 0xb7, 0x97, 0xa3, 0xda, 0xb7, 0x97, 0xa3, 0xda, - 0xb7, 0x97, 0xa3, 0xda, 0xb8, 0x97, 0xd0, 0xda, 0xb8, 0xbd, 0xd0, 0xda, - 0xb8, 0xba, 0xd0, 0xda, 0xb9, 0xb8, 0xd0, 0xda, 0xb9, 0xba, 0xd0, 0xda, - 0xb9, 0xb8, 0xd0, 0xda, 0xba, 0xba, 0xd0, 0xda, 0xba, 0xb8, 0xd0, 0xda, - 0xba, 0xba, 0xd0, 0xda, 0xbb, 0xb8, 0xd0, 0xda, 0xbb, 0xba, 0xd0, 0xda, - 0xbb, 0xb8, 0xd0, 0xda, 0xbc, 0xba, 0xd0, 0xda, 0xbc, 0xb8, 0xd0, 0xda, - 0xbc, 0xba, 0xd0, 0xda, 0xbd, 0xb8, 0xd0, 0xda, 0xbd, 0xba, 0xd0, 0xda, - 0xbd, 0xb8, 0xd0, 0xda, 0xbe, 0xba, 0xd0, 0xda, 0xbe, 0xb8, 0xd0, 0xda, - 0xbe, 0xba, 0xd0, 0xda, 0xbf, 0xb8, 0xd0, 0xda, 0xbf, 0xba, 0xd0, 0xda, - 0xbf, 0xb8, 0xd0, 0xda, 0xc0, 0xba, 0xd0, 0xda, 0xc0, 0xb8, 0xd0, 0xda, - 0xc0, 0xba, 0xd0, 0xda, 0xc1, 0xb8, 0xd0, 0xda, 0xc1, 0xba, 0xd0, 0xda, - 0xc1, 0xb8, 0xd0, 0xda, 0xc1, 0xba, 0xd0, 0xda, 0xc2, 0xb8, 0xd0, 0xda, - 0xc2, 0xba, 0xd0, 0xda, 0xc2, 0xb8, 0xd0, 0xda, 0xc3, 0xba, 0xd0, 0xda, - 0xc3, 0xb8, 0xd0, 0xda, 0xc3, 0xb5, 0xd0, 0xda, 0xc4, 0xb8, 0xd0, 0xda, - 0xc4, 0xb5, 0xd0, 0xda, 0xc4, 0xb8, 0xd0, 0xda, 0xc5, 0xb5, 0xd0, 0xda, - 0xc5, 0xb8, 0xd0, 0xda, 0xc5, 0xb5, 0xd0, 0xda, 0xc6, 0xb8, 0xd0, 0xda, - 0xc6, 0xb5, 0xd0, 0xda, 0xc6, 0xb8, 0xd0, 0xda, 0xc6, 0xb5, 0xd0, 0xda, - 0xc7, 0xb8, 0xd0, 0xda, 0xc7, 0xb5, 0xd0, 0xda, 0xc7, 0xb8, 0xd0, 0xda, - 0xc8, 0xb5, 0xd0, 0xda, 0xc8, 0xb8, 0xd0, 0xda, 0xc8, 0xb5, 0xd0, 0xda, - 0xc9, 0xb8, 0xd0, 0xda, 0xc9, 0xb5, 0xd0, 0xda, 0xc9, 0xb8, 0xd0, 0xda, - 0xc9, 0xb5, 0xd1, 0xda, 0xca, 0xb3, 0xd0, 0xda, 0xca, 0xb5, 0xd1, 0xda, - 0xca, 0xb3, 0xd0, 0xda, 0xcb, 0xb5, 0xd1, 0xda, 0xcb, 0xb3, 0xd0, 0xda, - 0xcb, 0xb5, 0xd1, 0xda, 0xcc, 0xb3, 0xd0, 0xda, 0xcc, 0xb5, 0xd1, 0xda, - 0xcc, 0xb3, 0xd0, 0xda, 0xcc, 0xb5, 0xd1, 0xda, 0xcd, 0xb3, 0xd0, 0xda, - 0xcd, 0xb5, 0xd1, 0xda, 0xcd, 0xb3, 0xd0, 0xda, 0xce, 0xb5, 0xd1, 0xda, - 0xce, 0xb3, 0xd0, 0xda, 0xce, 0xb5, 0xd1, 0xda, 0xce, 0xb3, 0xd0, 0xda, - 0xcf, 0xb5, 0xd1, 0xda, 0xcf, 0xb3, 0xd0, 0xda, 0xcf, 0xb5, 0xd1, 0xda, - 0xd0, 0xb3, 0xd1, 0xda, 0xd0, 0xb3, 0xd1, 0xda, 0xd0, 0xb3, 0xd1, 0xda, - 0xd0, 0xb3, 0xd1, 0xda, 0xd0, 0xb3, 0xd1, 0xda, 0xd0, 0xb3, 0xd1, 0xda, - 0xd0, 0xb3, 0xd2, 0xda, 0xd0, 0xb3, 0xd2, 0xd9, 0xd1, 0xb3, 0xd2, 0xda, - 0xd0, 0xb3, 0xd2, 0xd9, 0xd1, 0xb3, 0xd3, 0xda, 0xd0, 0xb3, 0xd3, 0xd9, - 0xd1, 0xb3, 0xd3, 0xda, 0xd0, 0xb3, 0xd4, 0xd9, 0xd1, 0xb3, 0xd4, 0xda, - 0xd0, 0xb3, 0xd4, 0xd9, 0xd1, 0xb3, 0xd4, 0xda, 0xd0, 0xb3, 0xd5, 0xd9, - 0xd1, 0xb3, 0xd5, 0xda, 0xd0, 0xb3, 0xd5, 0xd9, 0xd1, 0xb3, 0xd6, 0xda, - 0xd0, 0xb3, 0xd6, 0xd9, 0xd1, 0xb3, 0xd6, 0xda, 0xd0, 0xb3, 0xd6, 0xd9, - 0xd1, 0xb3, 0xd7, 0xda, 0xd0, 0xb3, 0xd7, 0xd9, 0xd1, 0xb3, 0xd7, 0xda, - 0xd0, 0xb3, 0xd7, 0xd9, 0xd1, 0xb3, 0xd8, 0xd7, 0xd1, 0xb3, 0xd8, 0xd9, - 0xd1, 0xb3, 0xd8, 0xd7, 0xd1, 0xb3, 0xd9, 0xd9, 0xd1, 0xb3, 0xd9, 0xd7, - 0xd1, 0xb3, 0xd9, 0xd9, 0xd1, 0xb3, 0xd9, 0xd7, 0xd1, 0xb3, 0xda, 0xd9, - 0xd1, 0xb3, 0xda, 0xd7, 0xd1, 0xb3, 0xda, 0xd9, 0xd1, 0xb3, 0xda, 0xd7, - 0xd1, 0xb3, 0xdb, 0xd9, 0xd1, 0xb3, 0xdb, 0xd7, 0xd1, 0xb3, 0xdb, 0xd9, - 0xd1, 0xb3, 0xdb, 0xd7, 0xd1, 0xb3, 0xdc, 0xd9, 0xd1, 0xb3, 0xdc, 0xd7, - 0xd1, 0xb3, 0xdc, 0xd9, 0xd1, 0xb3, 0xdd, 0xd7, 0xd1, 0xb3, 0xdd, 0xd9, - 0xd1, 0xb3, 0xdd, 0xd7, 0xd1, 0xb3, 0xdd, 0xdc, 0xe9, 0xb3, 0xde, 0xdd, - 0xe8, 0xb3, 0xde, 0xdc, 0xe9, 0xb3, 0xde, 0xdd, 0xe8, 0xb3, 0xde, 0xdc, - 0xe9, 0xb3, 0xdf, 0xdd, 0xe8, 0xb3, 0xdf, 0xdc, 0xe9, 0xb3, 0xdf, 0xdd, - 0xe8, 0xb3, 0xdf, 0xdc, 0xe9, 0xb3, 0xe0, 0xdb, 0xe9, 0xb3, 0xe0, 0xdc, - 0xe9, 0xb3, 0xe0, 0xdb, 0xe9, 0xb3, 0xe1, 0xdc, 0xe9, 0xb3, 0xe1, 0xdb, - 0xe9, 0xb3, 0xe1, 0xdc, 0xe9, 0xb3, 0xe1, 0xdb, 0xe9, 0xb3, 0xe2, 0xdc, - 0xe9, 0xb3, 0xe2, 0xdb, 0xe9, 0xb3, 0xe2, 0xdc, 0xe9, 0xb3, 0xe2, 0xdb, - 0xe9, 0xb3, 0xe3, 0xdc, 0xe9, 0xb3, 0xe3, 0xdb, 0xe9, 0xb3, 0xe3, 0xdc, - 0xe9, 0xb3, 0xe3, 0xdb, 0xe9, 0xb3, 0xe4, 0xdc, 0xe9, 0xb3, 0xe4, 0xdb, - 0xe9, 0xb3, 0xe4, 0xdc, 0xe9, 0xb3, 0xe4, 0xdb, 0xe9, 0xb3, 0xe5, 0xdc, - 0xe9, 0xb3, 0xe5, 0xdb, 0xe9, 0xb3, 0xe5, 0xda, 0xe9, 0xb3, 0xe5, 0xdb, - 0xe9, 0xb3, 0xe6, 0xda, 0xe9, 0xb3, 0xe6, 0xdb, 0xe9, 0xb3, 0xe6, 0xda, - 0xe9, 0xb3, 0xe6, 0xdb, 0xe9, 0xb3, 0xe7, 0xda, 0xe9, 0xb3, 0xe7, 0xdb, - 0xe9, 0xb3, 0xe7, 0xda, 0xe9, 0xb3, 0xe7, 0xdb, 0xe9, 0xb3, 0xe8, 0xda, - 0xe9, 0xb3, 0xe8, 0xdb, 0xe9, 0xb3, 0xe8, 0xda, 0xe9, 0xb3, 0xe8, 0xdb, - 0xe9, 0xb3, 0xe9, 0xda, 0xe9, 0xb3, 0xe9, 0xdb, 0xe9, 0xb3, 0xe9, 0xda, - 0xe9, 0xb3, 0xe9, 0xda, 0xe9, 0xb3, 0xe9, 0xda, 0xea, 0xb3, 0xe9, 0xda, - 0xea, 0xb3, 0xe9, 0xda, 0xea, 0xb3, 0xe9, 0xda, 0xea, 0xb3, 0xe9, 0xda, - 0xeb, 0xb3, 0xec, 0xda, 0xeb, 0xb3, 0xec, 0xda, 0xeb, 0xb3, 0xec, 0xda, - 0xeb, 0xb3, 0xec, 0xda, 0xec, 0xb3, 0xec, 0xda, 0xec, 0xb3, 0xec, 0xda, - 0xec, 0xb3, 0xec, 0xda, 0xec, 0xb3, 0xec, 0xda, 0xec, 0xb3, 0xed, 0xda, - 0xec, 0xb3, 0xed, 0xda, 0xec, 0xb3, 0xed, 0xda, 0xec, 0xb3, 0xed, 0xda, - 0xec, 0xb3, 0xee, 0xda, 0xec, 0xb3, 0xee, 0xda, 0xec, 0xb3, 0xee, 0xda, - 0xec, 0xb3, 0xee, 0xda, 0xec, 0xb3, 0xef, 0xda, 0xec, 0xb3, 0xef, 0xda, - 0xec, 0xb3, 0xef, 0xda, 0xec, 0xb3, 0xef, 0xda, 0xec, 0xb3, 0xf0, 0xda, - 0xec, 0xb3, 0xf0, 0xda, 0xec, 0xb3, 0xf0, 0xda, 0xec, 0xb3, 0xf0, 0xda, - 0xec, 0xb3, 0xf1, 0xda, 0xec, 0xb3, 0xf1, 0xda, 0xec, 0xb3, 0xf1, 0xda, - 0xec, 0xb3, 0xf1, 0xda, 0xec, 0xb3, 0xf2, 0xda, 0xec, 0xb3, 0xf2, 0xda, - 0xec, 0xb3, 0xf2, 0xda, 0xec, 0xb3, 0xf2, 0xd7, 0xec, 0xb3, 0xf2, 0xda, - 0xec, 0xb3, 0xf3, 0xd7, 0xec, 0xb3, 0xf3, 0xda, 0xec, 0xb3, 0xf3, 0xd7, - 0xec, 0xb3, 0xf3, 0xda, 0xec, 0xb3, 0xf4, 0xd7, 0xec, 0xb3, 0xf4, 0xda, - 0xec, 0xb3, 0xf4, 0xd7, 0xec, 0xb3, 0xf4, 0xda, 0xec, 0xb3, 0xf5, 0xd7, - 0xec, 0xb3, 0xf5, 0xda, 0xec, 0xb3, 0xf5, 0xd7, 0xec, 0xb3, 0xf5, 0xda, - 0xec, 0xb3, 0xf5, 0xd7, 0xec, 0xb3, 0xf6, 0xda, 0xec, 0xb3, 0xf6, 0xd7, - 0xec, 0xb3, 0xf6, 0xda, 0xec, 0xb3, 0xf6, 0xd7, 0xec, 0xb3, 0xf7, 0xda, - 0xec, 0xb3, 0xf7, 0xd7, 0xec, 0xb3, 0xf7, 0xda, 0xec, 0xb3, 0xf7, 0xd7, - 0xec, 0xb3, 0xf8, 0xda, 0xec, 0xb3, 0xf8, 0xd7, 0xec, 0xb3, 0xf8, 0xda, - 0xec, 0xb3, 0xf8, 0xd7, 0xec, 0xb3, 0xf8, 0xda, 0xec, 0xb3, 0xf9, 0xd7, - 0xec, 0xb3, 0xf9, 0xda, 0xec, 0xb3, 0xf9, 0xd7, 0xec, 0xb3, 0xf9, 0xda, - 0xec, 0xb3, 0xfa, 0xd7, 0xec, 0xb3, 0xfa, 0xda, 0xec, 0xb3, 0xfa, 0xd7, - 0xec, 0xb3, 0xfa, 0xda, 0xec, 0xb3, 0xfa, 0xd7, 0xec, 0xb3, 0xfb, 0xda, - 0xec, 0xb3, 0xfb, 0xd7, 0xec, 0xb3, 0xfb, 0xda, 0xec, 0xb3, 0xfb, 0xd7, - 0xec, 0xb3, 0xfc, 0xd6, 0xed, 0xb3, 0xfc, 0xd7, 0xec, 0xb3, 0xfc, 0xd7, - 0xec, 0xb3, 0xfc, 0xd7, 0xec, 0xb3, 0xfc, 0xd7, 0xec, 0xb3, 0xfd, 0xd7, - 0xec, 0xb3, 0xfd, 0xd7, 0xec, 0xb3, 0xfd, 0xd7, 0xec, 0xb3, 0xfd, 0xc7, - 0xf7, 0xb3, 0xfe, 0xc7, 0xf7, 0xb3, 0xfe, 0xc7, 0xf7, 0xb3, 0xfe, 0xc7, - 0xf7, 0xb3, 0xfe, 0xc7, 0xf7, 0xb3, 0xfe, 0xc7, 0xf7, 0xb3, 0xff, 0xc7, - 0xf7, 0xb3, 0xff, 0xc7, 0xf7, 0xb3, 0x03, 0xdf, 0x89, 0xb4, 0x0a, 0xe1, - 0x89, 0xb4, 0x0f, 0xdf, 0x89, 0xb4, 0x14, 0xdf, 0x89, 0xb4, 0x17, 0xdf, - 0x89, 0xb4, 0x1b, 0xdf, 0x89, 0xb4, 0x1e, 0xdf, 0x89, 0xb4, 0x20, 0xdf, - 0x89, 0xb4, 0x23, 0xdf, 0x89, 0xb4, 0x25, 0xdf, 0x89, 0xb4, 0x27, 0xdf, - 0x89, 0xb4, 0x29, 0xdf, 0x89, 0xb4, 0x2b, 0xdf, 0x89, 0xb4, 0x2d, 0xdf, - 0x89, 0xb4, 0x2f, 0xdf, 0x89, 0xb4, 0x31, 0xdf, 0x89, 0xb4, 0x32, 0xdf, - 0x89, 0xb4, 0x34, 0xdd, 0x8a, 0xb4, 0x35, 0xdf, 0x89, 0xb4, 0x37, 0xdd, - 0x8a, 0xb4, 0x38, 0xdf, 0x89, 0xb4, 0x3a, 0xdd, 0x8a, 0xb4, 0x3b, 0xdf, - 0x89, 0xb4, 0x3c, 0xdd, 0x8a, 0xb4, 0x3e, 0xdf, 0x89, 0xb4, 0x3f, 0xdd, - 0x8a, 0xb4, 0x40, 0xdf, 0x89, 0xb4, 0x42, 0xdd, 0x8a, 0xb4, 0x43, 0xdf, - 0x89, 0xb4, 0x44, 0xdd, 0x8a, 0xb4, 0x45, 0xdf, 0x89, 0xb4, 0x46, 0xdd, - 0x8a, 0xb4, 0x47, 0xdf, 0x89, 0xb4, 0x48, 0xdd, 0x8a, 0xb4, 0x49, 0xdf, - 0x89, 0xb4, 0x4a, 0xdd, 0x8a, 0xb4, 0x4b, 0xdf, 0x89, 0xb4, 0x4c, 0xdd, - 0x8a, 0xb4, 0x4d, 0xdf, 0x89, 0xb4, 0x4e, 0xdd, 0x8a, 0xb4, 0x4f, 0xdf, - 0x89, 0xb4, 0x50, 0xdd, 0x8a, 0xb4, 0x51, 0xdf, 0x89, 0xb4, 0x52, 0xdd, - 0x8a, 0xb4, 0x53, 0xdf, 0x89, 0xb4, 0x54, 0xdd, 0x8a, 0xb4, 0x55, 0xdf, - 0x89, 0xb4, 0x56, 0xdd, 0x8a, 0xb4, 0x57, 0xdf, 0x89, 0xb4, 0x58, 0xdd, - 0x8a, 0xb4, 0x58, 0xdf, 0x89, 0xb4, 0x59, 0xdd, 0x8a, 0xb4, 0x5a, 0xdf, - 0x89, 0xb4, 0x5b, 0xdd, 0x8a, 0xb4, 0x5c, 0xdb, 0x8a, 0xb4, 0x5d, 0xdd, - 0x8a, 0xb4, 0x5d, 0xdb, 0x8a, 0xb4, 0x5e, 0xdd, 0x8a, 0xb4, 0x5f, 0xdb, - 0x8a, 0xb4, 0x60, 0xdd, 0x8a, 0xb4, 0x60, 0xdb, 0x8a, 0xb4, 0x61, 0xdd, - 0x8a, 0xb4, 0x62, 0xdb, 0x8a, 0xb4, 0x63, 0xdd, 0x8a, 0xb4, 0x63, 0xdb, - 0x8a, 0xb4, 0x64, 0xdd, 0x8a, 0xb4, 0x65, 0xdb, 0x8a, 0xb4, 0x66, 0xdd, - 0x8a, 0xb4, 0x66, 0xdb, 0x8a, 0xb4, 0x67, 0xdd, 0x8a, 0xb4, 0x68, 0xdb, - 0x8a, 0xb4, 0x68, 0xdd, 0x8a, 0xb4, 0x69, 0xdb, 0x8a, 0xb4, 0x6a, 0xdd, - 0x8a, 0xb4, 0x6a, 0xdb, 0x8a, 0xb4, 0x6b, 0xdd, 0x8a, 0xb4, 0x6c, 0xdb, - 0x8a, 0xb4, 0x6c, 0xdd, 0x8a, 0xb4, 0x6d, 0xdb, 0x8a, 0xb4, 0x6e, 0xdd, - 0x8a, 0xb4, 0x6e, 0xdb, 0x8a, 0xb4, 0x6f, 0xdd, 0x8a, 0xb4, 0x70, 0xdb, - 0x8a, 0xb4, 0x70, 0xdd, 0x8a, 0xb4, 0x71, 0xdb, 0x8a, 0xb4, 0x72, 0xdd, - 0x8a, 0xb4, 0x72, 0xdb, 0x8a, 0xb4, 0x73, 0xdd, 0x8a, 0xb4, 0x73, 0xdb, - 0x8a, 0xb4, 0x74, 0xdd, 0x8a, 0xb4, 0x75, 0xdb, 0x8a, 0xb4, 0x75, 0xdd, - 0x8a, 0xb4, 0x76, 0xdb, 0x8a, 0xb4, 0x76, 0xdd, 0x8a, 0xb4, 0x77, 0xdb, - 0x8a, 0xb4, 0x78, 0xdd, 0x8a, 0xb4, 0x78, 0xdb, 0x8a, 0xb4, 0x79, 0xdd, - 0x8a, 0xb4, 0x79, 0xdb, 0x8a, 0xb4, 0x7a, 0xdd, 0x8a, 0xb4, 0x7a, 0xdb, - 0x8a, 0xb4, 0x7b, 0xdd, 0x8a, 0xb4, 0x7c, 0xdb, 0x8a, 0xb4, 0x7c, 0xdd, - 0x8a, 0xb4, 0x7d, 0xdb, 0x8a, 0xb4, 0x7d, 0xdd, 0x8a, 0xb4, 0x7e, 0xdb, - 0x8a, 0xb4, 0x7e, 0xda, 0x8b, 0xb4, 0x7f, 0xdb, 0x8a, 0xb4, 0x7f, 0xda, - 0x8b, 0xb4, 0x80, 0xdb, 0x8a, 0xb4, 0x81, 0xda, 0x8b, 0xb4, 0x81, 0xdb, - 0x8a, 0xb4, 0x82, 0xda, 0x8b, 0xb4, 0x82, 0xdb, 0x8a, 0xb4, 0x83, 0xda, - 0x8b, 0xb4, 0x83, 0xdb, 0x8a, 0xb4, 0x84, 0xda, 0x8b, 0xb4, 0x84, 0xdb, - 0x8a, 0xb4, 0x85, 0xda, 0x8b, 0xb4, 0x85, 0xdb, 0x8a, 0xb4, 0x86, 0xda, - 0x8b, 0xb4, 0x86, 0xdb, 0x8a, 0xb4, 0x87, 0xda, 0x8b, 0xb4, 0x87, 0xdb, - 0x8a, 0xb4, 0x88, 0xda, 0x8b, 0xb4, 0x88, 0xdb, 0x8a, 0xb4, 0x89, 0xda, - 0x8b, 0xb4, 0x89, 0xda, 0x8b, 0xb4, 0x8a, 0xda, 0x8b, 0xb4, 0x8a, 0xda, - 0x8b, 0xb4, 0x8a, 0xda, 0x8b, 0xb4, 0x8a, 0xda, 0x8b, 0xb4, 0x8a, 0xda, - 0x8c, 0xb4, 0x8a, 0xda, 0x8c, 0xb4, 0x8b, 0xda, 0x8d, 0xb2, 0x8a, 0xda, - 0x8d, 0xb4, 0x8b, 0xda, 0x8e, 0xb2, 0x8a, 0xda, 0x8e, 0xb4, 0x8b, 0xda, - 0x8e, 0xb2, 0x8a, 0xda, 0x8f, 0xb4, 0x8b, 0xda, 0x8f, 0xb2, 0x8a, 0xda, - 0x90, 0xb4, 0x8b, 0xda, 0x90, 0xb2, 0x8a, 0xda, 0x91, 0xb4, 0x8b, 0xda, - 0x91, 0xb2, 0x8a, 0xda, 0x92, 0xb4, 0x8b, 0xda, 0x92, 0xb2, 0x8a, 0xda, - 0x93, 0xb4, 0x8b, 0xda, 0x93, 0xb2, 0x8a, 0xda, 0x94, 0xb4, 0x8b, 0xda, - 0x94, 0xb2, 0x8a, 0xda, 0x94, 0xb4, 0x8b, 0xda, 0x95, 0xb2, 0x8a, 0xda, - 0x95, 0xb4, 0x8b, 0xda, 0x96, 0xb2, 0x8b, 0xda, 0x96, 0xaf, 0x8b, 0xda, - 0x97, 0xb2, 0x8b, 0xda, 0x97, 0xaf, 0x8b, 0xda, 0x98, 0xb2, 0x8b, 0xda, - 0x98, 0xaf, 0x8b, 0xda, 0x98, 0xb2, 0x8b, 0xda, 0x99, 0xaf, 0x8b, 0xda, - 0x99, 0xb2, 0x8b, 0xda, 0x9a, 0xaf, 0x8b, 0xda, 0x9a, 0xb2, 0x8b, 0xda, - 0x9a, 0xaf, 0x8b, 0xda, 0x9b, 0xb2, 0x8b, 0xda, 0x9b, 0xaf, 0x8b, 0xda, - 0x9c, 0xb2, 0x8b, 0xda, 0x9c, 0xaf, 0x8b, 0xda, 0x9d, 0xb2, 0x8b, 0xda, - 0x9d, 0xaf, 0x8b, 0xda, 0x9d, 0xb2, 0x8b, 0xda, 0x9e, 0xaf, 0x8b, 0xda, - 0x9e, 0xb2, 0x8b, 0xda, 0x9f, 0xaf, 0x8b, 0xda, 0x9f, 0xb2, 0x8b, 0xda, - 0x9f, 0xaf, 0x8b, 0xda, 0xa0, 0xb2, 0x8b, 0xda, 0xa0, 0xaf, 0x8b, 0xda, - 0xa1, 0xb2, 0x8b, 0xda, 0xa1, 0xaf, 0x8b, 0xda, 0xa1, 0xb2, 0x8b, 0xda, - 0xa2, 0xaf, 0x8b, 0xda, 0xa2, 0xb2, 0x8b, 0xda, 0xa3, 0xaf, 0xa3, 0xda, - 0xa3, 0x98, 0x8b, 0xda, 0xa3, 0xaf, 0xa3, 0xda, 0xa4, 0x98, 0xa3, 0xda, - 0xa4, 0x97, 0xa3, 0xda, 0xa5, 0x98, 0xa3, 0xda, 0xa5, 0x97, 0xa3, 0xda, - 0xa5, 0x98, 0xa3, 0xda, 0xa6, 0x97, 0xa3, 0xda, 0xa6, 0x98, 0xa3, 0xda, - 0xa6, 0x97, 0xa3, 0xda, 0xa7, 0x98, 0xa3, 0xda, 0xa7, 0x97, 0xa3, 0xda, - 0xa8, 0x98, 0xa3, 0xda, 0xa8, 0x97, 0xa3, 0xda, 0xa8, 0x98, 0xa3, 0xda, - 0xa9, 0x97, 0xa3, 0xda, 0xa9, 0x98, 0xa3, 0xda, 0xaa, 0x97, 0xa3, 0xda, - 0xaa, 0x98, 0xa3, 0xda, 0xaa, 0x97, 0xa3, 0xda, 0xab, 0x98, 0xa3, 0xda, - 0xab, 0x97, 0xa3, 0xda, 0xab, 0x98, 0xa3, 0xda, 0xac, 0x97, 0xa3, 0xda, - 0xac, 0x98, 0xa3, 0xda, 0xac, 0x97, 0xa3, 0xda, 0xad, 0x98, 0xa3, 0xda, - 0xad, 0x97, 0xa3, 0xda, 0xae, 0x98, 0xa3, 0xda, 0xae, 0x97, 0xa3, 0xda, - 0xae, 0x98, 0xa3, 0xda, 0xaf, 0x97, 0xa3, 0xda, 0xaf, 0x98, 0xa3, 0xda, - 0xaf, 0x97, 0xa3, 0xda, 0xb0, 0x98, 0xa3, 0xda, 0xb0, 0x97, 0xa3, 0xda, - 0xb0, 0x98, 0xa3, 0xda, 0xb1, 0x97, 0xa3, 0xda, 0xb1, 0x98, 0xa3, 0xda, - 0xb2, 0x97, 0xa3, 0xda, 0xb2, 0x98, 0xa3, 0xda, 0xb2, 0x97, 0xa3, 0xda, - 0xb3, 0x98, 0xa3, 0xda, 0xb3, 0x97, 0xa3, 0xda, 0xb3, 0x98, 0xa3, 0xda, - 0xb4, 0x97, 0xa3, 0xda, 0xb4, 0x98, 0xa3, 0xda, 0xb4, 0x97, 0xa3, 0xda, - 0xb5, 0x98, 0xa3, 0xda, 0xb5, 0x97, 0xa3, 0xda, 0xb5, 0x98, 0xa3, 0xda, - 0xb6, 0x97, 0xa3, 0xda, 0xb6, 0x98, 0xa3, 0xda, 0xb6, 0x97, 0xa3, 0xda, - 0xb7, 0x98, 0xa3, 0xda, 0xb7, 0x97, 0xa3, 0xda, 0xb7, 0x98, 0xd0, 0xda, - 0xb8, 0xbb, 0xd0, 0xda, 0xb8, 0xb8, 0xd0, 0xda, 0xb8, 0xbb, 0xd0, 0xda, - 0xb9, 0xb8, 0xd0, 0xda, 0xb9, 0xbb, 0xd0, 0xda, 0xb9, 0xb8, 0xd0, 0xda, - 0xba, 0xbb, 0xd0, 0xda, 0xba, 0xb8, 0xd0, 0xda, 0xba, 0xbb, 0xd0, 0xda, - 0xbb, 0xb8, 0xd0, 0xda, 0xbb, 0xbb, 0xd0, 0xda, 0xbb, 0xb8, 0xd0, 0xda, - 0xbc, 0xbb, 0xd0, 0xda, 0xbc, 0xb8, 0xd0, 0xda, 0xbc, 0xbb, 0xd0, 0xda, - 0xbd, 0xb8, 0xd0, 0xda, 0xbd, 0xbb, 0xd0, 0xda, 0xbd, 0xb8, 0xd0, 0xda, - 0xbe, 0xbb, 0xd0, 0xda, 0xbe, 0xb8, 0xd0, 0xda, 0xbe, 0xbb, 0xd0, 0xda, - 0xbf, 0xb8, 0xd0, 0xda, 0xbf, 0xbb, 0xd0, 0xda, 0xbf, 0xb8, 0xd0, 0xda, - 0xc0, 0xbb, 0xd0, 0xda, 0xc0, 0xb8, 0xd0, 0xda, 0xc0, 0xbb, 0xd0, 0xda, - 0xc1, 0xb8, 0xd0, 0xda, 0xc1, 0xbb, 0xd0, 0xda, 0xc1, 0xb8, 0xd0, 0xda, - 0xc1, 0xbb, 0xd0, 0xda, 0xc2, 0xb8, 0xd0, 0xda, 0xc2, 0xb5, 0xd0, 0xda, - 0xc2, 0xb8, 0xd0, 0xda, 0xc3, 0xb5, 0xd0, 0xda, 0xc3, 0xb8, 0xd0, 0xda, - 0xc3, 0xb5, 0xd0, 0xda, 0xc4, 0xb8, 0xd0, 0xda, 0xc4, 0xb5, 0xd0, 0xda, - 0xc4, 0xb8, 0xd0, 0xda, 0xc5, 0xb5, 0xd0, 0xda, 0xc5, 0xb8, 0xd0, 0xda, - 0xc5, 0xb5, 0xd0, 0xda, 0xc6, 0xb8, 0xd0, 0xda, 0xc6, 0xb5, 0xd0, 0xda, - 0xc6, 0xb8, 0xd0, 0xda, 0xc6, 0xb5, 0xd0, 0xda, 0xc7, 0xb8, 0xd0, 0xda, - 0xc7, 0xb5, 0xd0, 0xda, 0xc7, 0xb8, 0xd0, 0xda, 0xc8, 0xb5, 0xd0, 0xda, - 0xc8, 0xb8, 0xd0, 0xda, 0xc8, 0xb5, 0xd0, 0xda, 0xc9, 0xb8, 0xd0, 0xda, - 0xc9, 0xb5, 0xd0, 0xda, 0xc9, 0xb8, 0xd0, 0xda, 0xc9, 0xb5, 0xd0, 0xda, - 0xca, 0xb8, 0xd0, 0xda, 0xca, 0xb5, 0xd0, 0xda, 0xca, 0xb8, 0xd0, 0xda, - 0xcb, 0xb5, 0xd0, 0xda, 0xcb, 0xb8, 0xd0, 0xda, 0xcb, 0xb5, 0xd0, 0xda, - 0xcc, 0xb8, 0xd0, 0xda, 0xcc, 0xb5, 0xd1, 0xda, 0xcc, 0xb4, 0xd0, 0xda, - 0xcc, 0xb5, 0xd1, 0xda, 0xcd, 0xb4, 0xd0, 0xda, 0xcd, 0xb5, 0xd1, 0xda, - 0xcd, 0xb4, 0xd0, 0xda, 0xce, 0xb5, 0xd1, 0xda, 0xce, 0xb4, 0xd0, 0xda, - 0xce, 0xb5, 0xd1, 0xda, 0xce, 0xb4, 0xd0, 0xda, 0xcf, 0xb5, 0xd1, 0xda, - 0xcf, 0xb4, 0xd0, 0xda, 0xcf, 0xb5, 0xd1, 0xda, 0xd0, 0xb4, 0xd0, 0xda, - 0xd0, 0xb5, 0xd1, 0xda, 0xd0, 0xb4, 0xd0, 0xda, 0xd0, 0xb5, 0xd1, 0xda, - 0xd0, 0xb4, 0xd1, 0xda, 0xd0, 0xb4, 0xd1, 0xda, 0xd0, 0xb4, 0xd2, 0xda, - 0xd0, 0xb4, 0xd2, 0xd9, 0xd1, 0xb4, 0xd2, 0xda, 0xd0, 0xb4, 0xd2, 0xd9, - 0xd1, 0xb4, 0xd3, 0xda, 0xd0, 0xb4, 0xd3, 0xd9, 0xd1, 0xb4, 0xd3, 0xda, - 0xd0, 0xb4, 0xd4, 0xd9, 0xd1, 0xb4, 0xd4, 0xda, 0xd0, 0xb4, 0xd4, 0xd9, - 0xd1, 0xb4, 0xd4, 0xda, 0xd0, 0xb4, 0xd5, 0xd9, 0xd1, 0xb4, 0xd5, 0xda, - 0xd0, 0xb4, 0xd5, 0xd9, 0xd1, 0xb4, 0xd6, 0xda, 0xd0, 0xb4, 0xd6, 0xd9, - 0xd1, 0xb4, 0xd6, 0xda, 0xd0, 0xb4, 0xd6, 0xd9, 0xd1, 0xb4, 0xd7, 0xda, - 0xd0, 0xb4, 0xd7, 0xd9, 0xd1, 0xb4, 0xd7, 0xda, 0xd0, 0xb4, 0xd7, 0xd9, - 0xd1, 0xb4, 0xd8, 0xd8, 0xd1, 0xb4, 0xd8, 0xd9, 0xd1, 0xb4, 0xd8, 0xd8, - 0xd1, 0xb4, 0xd9, 0xd9, 0xd1, 0xb4, 0xd9, 0xd8, 0xd1, 0xb4, 0xd9, 0xd9, - 0xd1, 0xb4, 0xd9, 0xd8, 0xd1, 0xb4, 0xda, 0xd9, 0xd1, 0xb4, 0xda, 0xd8, - 0xd1, 0xb4, 0xda, 0xd9, 0xd1, 0xb4, 0xda, 0xd8, 0xd1, 0xb4, 0xdb, 0xd9, - 0xd1, 0xb4, 0xdb, 0xd8, 0xd1, 0xb4, 0xdb, 0xd9, 0xd1, 0xb4, 0xdb, 0xd8, - 0xd1, 0xb4, 0xdc, 0xd9, 0xd1, 0xb4, 0xdc, 0xd8, 0xd1, 0xb4, 0xdc, 0xd9, - 0xd1, 0xb4, 0xdd, 0xd8, 0xd1, 0xb4, 0xdd, 0xd9, 0xd1, 0xb4, 0xdd, 0xd8, - 0xd1, 0xb4, 0xdd, 0xdc, 0xe9, 0xb4, 0xde, 0xde, 0xe8, 0xb4, 0xde, 0xdc, - 0xe9, 0xb4, 0xde, 0xde, 0xe8, 0xb4, 0xde, 0xdc, 0xe9, 0xb4, 0xdf, 0xde, - 0xe8, 0xb4, 0xdf, 0xdc, 0xe9, 0xb4, 0xdf, 0xde, 0xe8, 0xb4, 0xdf, 0xdc, - 0xe9, 0xb4, 0xe0, 0xda, 0xe9, 0xb4, 0xe0, 0xdc, 0xe9, 0xb4, 0xe0, 0xda, - 0xe9, 0xb4, 0xe1, 0xdc, 0xe9, 0xb4, 0xe1, 0xda, 0xe9, 0xb4, 0xe1, 0xdc, - 0xe9, 0xb4, 0xe1, 0xda, 0xe9, 0xb4, 0xe2, 0xdc, 0xe9, 0xb4, 0xe2, 0xda, - 0xe9, 0xb4, 0xe2, 0xdc, 0xe9, 0xb4, 0xe2, 0xda, 0xe9, 0xb4, 0xe3, 0xdc, - 0xe9, 0xb4, 0xe3, 0xda, 0xe9, 0xb4, 0xe3, 0xdc, 0xe9, 0xb4, 0xe3, 0xda, - 0xe9, 0xb4, 0xe4, 0xdc, 0xe9, 0xb4, 0xe4, 0xda, 0xe9, 0xb4, 0xe4, 0xdc, - 0xe9, 0xb4, 0xe4, 0xda, 0xe9, 0xb4, 0xe5, 0xdc, 0xe9, 0xb4, 0xe5, 0xda, - 0xe9, 0xb4, 0xe5, 0xdc, 0xe9, 0xb4, 0xe5, 0xda, 0xe9, 0xb4, 0xe6, 0xdc, - 0xe9, 0xb4, 0xe6, 0xda, 0xe9, 0xb4, 0xe6, 0xdc, 0xe9, 0xb4, 0xe6, 0xda, - 0xe9, 0xb4, 0xe7, 0xdc, 0xe9, 0xb4, 0xe7, 0xda, 0xe9, 0xb4, 0xe7, 0xda, - 0xe9, 0xb4, 0xe7, 0xda, 0xe9, 0xb4, 0xe8, 0xda, 0xe9, 0xb4, 0xe8, 0xda, - 0xe9, 0xb4, 0xe8, 0xda, 0xe9, 0xb4, 0xe8, 0xda, 0xe9, 0xb4, 0xe9, 0xda, - 0xe9, 0xb4, 0xe9, 0xda, 0xe9, 0xb3, 0xe9, 0xda, 0xe9, 0xb4, 0xe9, 0xda, - 0xe9, 0xb3, 0xe9, 0xda, 0xea, 0xb4, 0xe9, 0xda, 0xea, 0xb3, 0xe9, 0xda, - 0xea, 0xb4, 0xe9, 0xda, 0xea, 0xb3, 0xe9, 0xda, 0xeb, 0xb4, 0xec, 0xda, - 0xeb, 0xb4, 0xec, 0xda, 0xeb, 0xb4, 0xec, 0xda, 0xeb, 0xb4, 0xec, 0xda, - 0xec, 0xb4, 0xec, 0xda, 0xec, 0xb4, 0xec, 0xda, 0xec, 0xb4, 0xec, 0xda, - 0xec, 0xb4, 0xec, 0xda, 0xec, 0xb4, 0xed, 0xda, 0xec, 0xb4, 0xed, 0xda, - 0xec, 0xb4, 0xed, 0xd9, 0xec, 0xb4, 0xed, 0xda, 0xec, 0xb4, 0xee, 0xd9, - 0xec, 0xb4, 0xee, 0xda, 0xec, 0xb4, 0xee, 0xd9, 0xec, 0xb4, 0xee, 0xda, - 0xec, 0xb4, 0xef, 0xd9, 0xec, 0xb4, 0xef, 0xda, 0xec, 0xb4, 0xef, 0xd9, - 0xec, 0xb4, 0xef, 0xda, 0xec, 0xb4, 0xf0, 0xd9, 0xec, 0xb4, 0xf0, 0xda, - 0xec, 0xb4, 0xf0, 0xd9, 0xec, 0xb4, 0xf0, 0xda, 0xec, 0xb4, 0xf1, 0xd9, - 0xec, 0xb4, 0xf1, 0xda, 0xec, 0xb4, 0xf1, 0xd9, 0xec, 0xb4, 0xf1, 0xda, - 0xec, 0xb4, 0xf2, 0xd9, 0xec, 0xb4, 0xf2, 0xda, 0xec, 0xb4, 0xf2, 0xd9, - 0xec, 0xb4, 0xf2, 0xd8, 0xec, 0xb4, 0xf2, 0xd9, 0xec, 0xb4, 0xf3, 0xd8, - 0xec, 0xb4, 0xf3, 0xd9, 0xec, 0xb4, 0xf3, 0xd8, 0xec, 0xb4, 0xf3, 0xd9, - 0xec, 0xb4, 0xf4, 0xd8, 0xec, 0xb4, 0xf4, 0xd9, 0xec, 0xb4, 0xf4, 0xd8, - 0xec, 0xb4, 0xf4, 0xd9, 0xec, 0xb4, 0xf5, 0xd8, 0xec, 0xb4, 0xf5, 0xd9, - 0xec, 0xb4, 0xf5, 0xd8, 0xec, 0xb4, 0xf5, 0xd9, 0xec, 0xb4, 0xf5, 0xd8, - 0xec, 0xb4, 0xf6, 0xd9, 0xec, 0xb4, 0xf6, 0xd8, 0xec, 0xb4, 0xf6, 0xd9, - 0xec, 0xb4, 0xf6, 0xd8, 0xec, 0xb4, 0xf7, 0xd9, 0xec, 0xb4, 0xf7, 0xd8, - 0xec, 0xb4, 0xf7, 0xd9, 0xec, 0xb4, 0xf7, 0xd8, 0xec, 0xb4, 0xf8, 0xd9, - 0xec, 0xb4, 0xf8, 0xd8, 0xec, 0xb4, 0xf8, 0xd9, 0xec, 0xb4, 0xf8, 0xd8, - 0xec, 0xb4, 0xf8, 0xd9, 0xec, 0xb4, 0xf9, 0xd8, 0xec, 0xb4, 0xf9, 0xd9, - 0xec, 0xb4, 0xf9, 0xd8, 0xec, 0xb4, 0xf9, 0xd9, 0xec, 0xb4, 0xfa, 0xd8, - 0xec, 0xb4, 0xfa, 0xd9, 0xec, 0xb4, 0xfa, 0xd8, 0xec, 0xb4, 0xfa, 0xd9, - 0xec, 0xb4, 0xfa, 0xd8, 0xec, 0xb4, 0xfb, 0xd9, 0xec, 0xb4, 0xfb, 0xd8, - 0xec, 0xb4, 0xfb, 0xd9, 0xec, 0xb4, 0xfb, 0xd8, 0xec, 0xb4, 0xfc, 0xd9, - 0xec, 0xb4, 0xfc, 0xd8, 0xec, 0xb4, 0xfc, 0xd8, 0xec, 0xb4, 0xfc, 0xd8, - 0xec, 0xb4, 0xfc, 0xd8, 0xec, 0xb4, 0xfd, 0xd8, 0xec, 0xb4, 0xfd, 0xd8, - 0xec, 0xb4, 0xfd, 0xd8, 0xec, 0xb4, 0xfd, 0xc7, 0xf7, 0xb4, 0xfe, 0xc7, - 0xf7, 0xb4, 0xfe, 0xc7, 0xf7, 0xb4, 0xfe, 0xc7, 0xf7, 0xb4, 0xfe, 0xc7, - 0xf7, 0xb4, 0xfe, 0xc7, 0xf7, 0xb4, 0xff, 0xc7, 0xf7, 0xb4, 0xff, 0xc7, - 0xf7, 0xb4, 0x03, 0xdf, 0x89, 0xb4, 0x0a, 0xe1, 0x89, 0xb4, 0x0f, 0xdf, - 0x89, 0xb4, 0x14, 0xe1, 0x89, 0xb4, 0x17, 0xdf, 0x89, 0xb4, 0x1b, 0xe1, - 0x89, 0xb4, 0x1e, 0xdf, 0x89, 0xb4, 0x20, 0xe1, 0x89, 0xb4, 0x23, 0xdf, - 0x89, 0xb4, 0x25, 0xe1, 0x89, 0xb4, 0x27, 0xdf, 0x89, 0xb4, 0x29, 0xe1, - 0x89, 0xb4, 0x2b, 0xdf, 0x89, 0xb4, 0x2d, 0xe1, 0x89, 0xb4, 0x2f, 0xdf, - 0x89, 0xb4, 0x31, 0xdf, 0x89, 0xb4, 0x32, 0xdf, 0x89, 0xb4, 0x34, 0xdf, - 0x89, 0xb4, 0x35, 0xdf, 0x89, 0xb4, 0x37, 0xdf, 0x89, 0xb4, 0x38, 0xdf, - 0x89, 0xb4, 0x3a, 0xdf, 0x89, 0xb4, 0x3b, 0xdf, 0x89, 0xb4, 0x3c, 0xdf, - 0x89, 0xb4, 0x3e, 0xdf, 0x89, 0xb4, 0x3f, 0xdf, 0x89, 0xb4, 0x40, 0xdf, - 0x89, 0xb4, 0x42, 0xdf, 0x89, 0xb4, 0x43, 0xdf, 0x89, 0xb4, 0x44, 0xdf, - 0x89, 0xb4, 0x45, 0xdf, 0x89, 0xb4, 0x46, 0xdf, 0x89, 0xb4, 0x47, 0xdf, - 0x89, 0xb4, 0x48, 0xdf, 0x89, 0xb4, 0x49, 0xdf, 0x89, 0xb4, 0x4a, 0xdf, - 0x89, 0xb4, 0x4b, 0xdf, 0x89, 0xb4, 0x4c, 0xdf, 0x89, 0xb4, 0x4d, 0xdf, - 0x89, 0xb4, 0x4e, 0xdf, 0x89, 0xb4, 0x4f, 0xdf, 0x89, 0xb4, 0x50, 0xdf, - 0x89, 0xb4, 0x51, 0xdf, 0x89, 0xb4, 0x52, 0xdf, 0x89, 0xb4, 0x53, 0xdf, - 0x89, 0xb4, 0x54, 0xdf, 0x89, 0xb4, 0x55, 0xdf, 0x89, 0xb4, 0x56, 0xdf, - 0x89, 0xb4, 0x57, 0xdf, 0x89, 0xb4, 0x58, 0xdf, 0x89, 0xb4, 0x58, 0xdf, - 0x89, 0xb4, 0x59, 0xdd, 0x8a, 0xb4, 0x5a, 0xdf, 0x89, 0xb4, 0x5b, 0xdd, - 0x8a, 0xb4, 0x5c, 0xdf, 0x89, 0xb4, 0x5d, 0xdd, 0x8a, 0xb4, 0x5d, 0xdf, - 0x89, 0xb4, 0x5e, 0xdd, 0x8a, 0xb4, 0x5f, 0xdf, 0x89, 0xb4, 0x60, 0xdd, - 0x8a, 0xb4, 0x60, 0xdf, 0x89, 0xb4, 0x61, 0xdd, 0x8a, 0xb4, 0x62, 0xdf, - 0x89, 0xb4, 0x63, 0xdd, 0x8a, 0xb4, 0x63, 0xdf, 0x89, 0xb4, 0x64, 0xdd, - 0x8a, 0xb4, 0x65, 0xdf, 0x89, 0xb4, 0x66, 0xdd, 0x8a, 0xb4, 0x66, 0xdf, - 0x89, 0xb4, 0x67, 0xdd, 0x8a, 0xb4, 0x68, 0xdc, 0x8a, 0xb4, 0x68, 0xdd, - 0x8a, 0xb4, 0x69, 0xdc, 0x8a, 0xb4, 0x6a, 0xdd, 0x8a, 0xb4, 0x6a, 0xdc, - 0x8a, 0xb4, 0x6b, 0xdd, 0x8a, 0xb4, 0x6c, 0xdc, 0x8a, 0xb4, 0x6c, 0xdd, - 0x8a, 0xb4, 0x6d, 0xdc, 0x8a, 0xb4, 0x6e, 0xdd, 0x8a, 0xb4, 0x6e, 0xdc, - 0x8a, 0xb4, 0x6f, 0xdd, 0x8a, 0xb4, 0x70, 0xdc, 0x8a, 0xb4, 0x70, 0xdd, - 0x8a, 0xb4, 0x71, 0xdc, 0x8a, 0xb4, 0x72, 0xdd, 0x8a, 0xb4, 0x72, 0xdc, - 0x8a, 0xb4, 0x73, 0xdd, 0x8a, 0xb4, 0x73, 0xdc, 0x8a, 0xb4, 0x74, 0xdd, - 0x8a, 0xb4, 0x75, 0xdc, 0x8a, 0xb4, 0x75, 0xdd, 0x8a, 0xb4, 0x76, 0xdc, - 0x8a, 0xb4, 0x76, 0xdd, 0x8a, 0xb4, 0x77, 0xdc, 0x8a, 0xb4, 0x78, 0xdd, - 0x8a, 0xb4, 0x78, 0xdc, 0x8a, 0xb4, 0x79, 0xdd, 0x8a, 0xb4, 0x79, 0xdc, - 0x8a, 0xb4, 0x7a, 0xdd, 0x8a, 0xb4, 0x7a, 0xdc, 0x8a, 0xb4, 0x7b, 0xdd, - 0x8a, 0xb4, 0x7c, 0xdc, 0x8a, 0xb4, 0x7c, 0xdd, 0x8a, 0xb4, 0x7d, 0xdc, - 0x8a, 0xb4, 0x7d, 0xdd, 0x8a, 0xb4, 0x7e, 0xdc, 0x8a, 0xb4, 0x7e, 0xdb, - 0x8b, 0xb4, 0x7f, 0xdc, 0x8a, 0xb4, 0x7f, 0xdb, 0x8b, 0xb4, 0x80, 0xdc, - 0x8a, 0xb4, 0x81, 0xdb, 0x8b, 0xb4, 0x81, 0xdc, 0x8a, 0xb4, 0x82, 0xdb, - 0x8b, 0xb4, 0x82, 0xdc, 0x8a, 0xb4, 0x83, 0xdb, 0x8b, 0xb4, 0x83, 0xdc, - 0x8a, 0xb4, 0x84, 0xdb, 0x8b, 0xb4, 0x84, 0xdc, 0x8a, 0xb4, 0x85, 0xdb, - 0x8b, 0xb4, 0x85, 0xdc, 0x8a, 0xb4, 0x86, 0xdb, 0x8b, 0xb4, 0x86, 0xdc, - 0x8a, 0xb4, 0x87, 0xdb, 0x8b, 0xb4, 0x87, 0xdc, 0x8a, 0xb4, 0x88, 0xdb, - 0x8b, 0xb4, 0x88, 0xdc, 0x8a, 0xb4, 0x89, 0xdb, 0x8b, 0xb4, 0x89, 0xdb, - 0x8b, 0xb4, 0x8a, 0xdb, 0x8b, 0xb4, 0x8a, 0xdb, 0x8b, 0xb4, 0x8a, 0xdb, - 0x8b, 0xb4, 0x8a, 0xdb, 0x8b, 0xb4, 0x8a, 0xdb, 0x8c, 0xb4, 0x8a, 0xdb, - 0x8c, 0xb4, 0x8a, 0xdb, 0x8d, 0xb4, 0x8a, 0xdb, 0x8d, 0xb4, 0x8a, 0xdb, - 0x8e, 0xb4, 0x8a, 0xdb, 0x8e, 0xb4, 0x8b, 0xdb, 0x8e, 0xb1, 0x8a, 0xdb, - 0x8f, 0xb4, 0x8b, 0xdb, 0x8f, 0xb1, 0x8a, 0xdb, 0x90, 0xb4, 0x8b, 0xdb, - 0x90, 0xb1, 0x8a, 0xdb, 0x91, 0xb4, 0x8b, 0xdb, 0x91, 0xb1, 0x8a, 0xdb, - 0x92, 0xb4, 0x8b, 0xdb, 0x92, 0xb1, 0x8a, 0xdb, 0x93, 0xb4, 0x8b, 0xdb, - 0x93, 0xb1, 0x8a, 0xdb, 0x94, 0xb4, 0x8b, 0xdb, 0x94, 0xb1, 0x8a, 0xdb, - 0x94, 0xb4, 0x8b, 0xdb, 0x95, 0xb1, 0x8a, 0xdb, 0x95, 0xb4, 0x8b, 0xdb, - 0x96, 0xb1, 0x8a, 0xdb, 0x96, 0xb4, 0x8b, 0xdb, 0x97, 0xb1, 0x8a, 0xdb, - 0x97, 0xb4, 0x8b, 0xdb, 0x98, 0xb1, 0x8a, 0xdb, 0x98, 0xb4, 0x8b, 0xdb, - 0x98, 0xb1, 0x8a, 0xdb, 0x99, 0xb4, 0x8b, 0xdb, 0x99, 0xb1, 0x8a, 0xdb, - 0x9a, 0xb4, 0x8b, 0xdb, 0x9a, 0xb1, 0x8a, 0xdb, 0x9a, 0xb4, 0x8b, 0xdb, - 0x9b, 0xb1, 0x8b, 0xdb, 0x9b, 0xae, 0x8b, 0xdb, 0x9c, 0xb1, 0x8b, 0xdb, - 0x9c, 0xae, 0x8b, 0xdb, 0x9d, 0xb1, 0x8b, 0xdb, 0x9d, 0xae, 0x8b, 0xdb, - 0x9d, 0xb1, 0x8b, 0xdb, 0x9e, 0xae, 0x8b, 0xdb, 0x9e, 0xb1, 0x8b, 0xdb, - 0x9f, 0xae, 0x8b, 0xdb, 0x9f, 0xb1, 0x8b, 0xdb, 0x9f, 0xae, 0x8b, 0xdb, - 0xa0, 0xb1, 0x8b, 0xdb, 0xa0, 0xae, 0x8b, 0xdb, 0xa1, 0xb1, 0x8b, 0xdb, - 0xa1, 0xae, 0x8b, 0xdb, 0xa1, 0xb1, 0x8b, 0xdb, 0xa2, 0xae, 0x8b, 0xdb, - 0xa2, 0xb1, 0x8b, 0xdb, 0xa3, 0xae, 0x8b, 0xdb, 0xa3, 0xb1, 0x8b, 0xdb, - 0xa3, 0xae, 0xa3, 0xdb, 0xa4, 0x97, 0xa3, 0xdb, 0xa4, 0x97, 0xa3, 0xdb, - 0xa5, 0x97, 0xa3, 0xdb, 0xa5, 0x97, 0xa3, 0xdb, 0xa5, 0x97, 0xa3, 0xdb, - 0xa6, 0x97, 0xa3, 0xdb, 0xa6, 0x97, 0xa3, 0xdb, 0xa6, 0x97, 0xa3, 0xdb, - 0xa7, 0x97, 0xa3, 0xdb, 0xa7, 0x97, 0xa3, 0xdb, 0xa8, 0x97, 0xa3, 0xdb, - 0xa8, 0x97, 0xa3, 0xdb, 0xa8, 0x97, 0xa3, 0xdb, 0xa9, 0x97, 0xa3, 0xdb, - 0xa9, 0x97, 0xa3, 0xdb, 0xaa, 0x97, 0xa3, 0xdb, 0xaa, 0x97, 0xa3, 0xdb, - 0xaa, 0x97, 0xa3, 0xdb, 0xab, 0x97, 0xa3, 0xdb, 0xab, 0x97, 0xa3, 0xdb, - 0xab, 0x97, 0xa3, 0xdb, 0xac, 0x97, 0xa3, 0xdb, 0xac, 0x97, 0xa3, 0xdb, - 0xac, 0x97, 0xa3, 0xdb, 0xad, 0x97, 0xa3, 0xdb, 0xad, 0x97, 0xa3, 0xdb, - 0xae, 0x97, 0xa3, 0xdb, 0xae, 0x97, 0xa3, 0xdb, 0xae, 0x97, 0xa3, 0xdb, - 0xaf, 0x97, 0xa3, 0xdb, 0xaf, 0x97, 0xa3, 0xdb, 0xaf, 0x97, 0xa3, 0xdb, - 0xb0, 0x97, 0xa3, 0xdb, 0xb0, 0x97, 0xa3, 0xdb, 0xb0, 0x97, 0xa3, 0xdb, - 0xb1, 0x97, 0xa3, 0xdb, 0xb1, 0x97, 0xa3, 0xdb, 0xb2, 0x97, 0xa3, 0xdb, - 0xb2, 0x97, 0xa3, 0xdb, 0xb2, 0x97, 0xa3, 0xdb, 0xb3, 0x97, 0xa3, 0xdb, - 0xb3, 0x97, 0xa3, 0xdb, 0xb3, 0x97, 0xa3, 0xdb, 0xb4, 0x97, 0xa3, 0xdb, - 0xb4, 0x97, 0xa3, 0xdb, 0xb4, 0x97, 0xa3, 0xdb, 0xb5, 0x97, 0xa3, 0xdb, - 0xb5, 0x97, 0xa3, 0xdb, 0xb5, 0x97, 0xa3, 0xdb, 0xb6, 0x97, 0xa3, 0xdb, - 0xb6, 0x97, 0xa3, 0xdb, 0xb6, 0x97, 0xa3, 0xdb, 0xb7, 0x97, 0xa3, 0xdb, - 0xb7, 0x97, 0xd0, 0xdb, 0xb7, 0xbd, 0xd0, 0xdb, 0xb8, 0xba, 0xd0, 0xdb, - 0xb8, 0xbd, 0xd0, 0xdb, 0xb8, 0xba, 0xd0, 0xdb, 0xb9, 0xbd, 0xd0, 0xdb, - 0xb9, 0xba, 0xd0, 0xdb, 0xb9, 0xbd, 0xd0, 0xdb, 0xba, 0xba, 0xd0, 0xdb, - 0xba, 0xbd, 0xd0, 0xdb, 0xba, 0xba, 0xd0, 0xdb, 0xbb, 0xbd, 0xd0, 0xdb, - 0xbb, 0xba, 0xd0, 0xdb, 0xbb, 0xbd, 0xd0, 0xdb, 0xbc, 0xba, 0xd0, 0xdb, - 0xbc, 0xbd, 0xd0, 0xdb, 0xbc, 0xba, 0xd0, 0xdb, 0xbd, 0xb8, 0xd0, 0xdb, - 0xbd, 0xba, 0xd0, 0xdb, 0xbd, 0xb8, 0xd0, 0xdb, 0xbe, 0xba, 0xd0, 0xdb, - 0xbe, 0xb8, 0xd0, 0xdb, 0xbe, 0xba, 0xd0, 0xdb, 0xbf, 0xb8, 0xd0, 0xdb, - 0xbf, 0xba, 0xd0, 0xdb, 0xbf, 0xb8, 0xd0, 0xdb, 0xc0, 0xba, 0xd0, 0xdb, - 0xc0, 0xb8, 0xd0, 0xdb, 0xc0, 0xba, 0xd0, 0xdb, 0xc1, 0xb8, 0xd0, 0xdb, - 0xc1, 0xba, 0xd0, 0xdb, 0xc1, 0xb8, 0xd0, 0xdb, 0xc1, 0xba, 0xd0, 0xdb, - 0xc2, 0xb8, 0xd0, 0xdb, 0xc2, 0xba, 0xd0, 0xdb, 0xc2, 0xb8, 0xd0, 0xdb, - 0xc3, 0xba, 0xd0, 0xdb, 0xc3, 0xb8, 0xd0, 0xdb, 0xc3, 0xba, 0xd0, 0xdb, - 0xc4, 0xb8, 0xd0, 0xdb, 0xc4, 0xba, 0xd0, 0xdb, 0xc4, 0xb8, 0xd0, 0xdb, - 0xc5, 0xba, 0xd0, 0xdb, 0xc5, 0xb8, 0xd0, 0xdb, 0xc5, 0xba, 0xd0, 0xdb, - 0xc6, 0xb8, 0xd0, 0xdb, 0xc6, 0xb5, 0xd0, 0xdb, 0xc6, 0xb8, 0xd0, 0xdb, - 0xc6, 0xb5, 0xd0, 0xdb, 0xc7, 0xb8, 0xd0, 0xdb, 0xc7, 0xb5, 0xd0, 0xdb, - 0xc7, 0xb8, 0xd0, 0xdb, 0xc8, 0xb5, 0xd0, 0xdb, 0xc8, 0xb8, 0xd0, 0xdb, - 0xc8, 0xb5, 0xd0, 0xdb, 0xc9, 0xb8, 0xd0, 0xdb, 0xc9, 0xb5, 0xd0, 0xdb, - 0xc9, 0xb8, 0xd0, 0xdb, 0xc9, 0xb5, 0xd0, 0xdb, 0xca, 0xb8, 0xd0, 0xdb, - 0xca, 0xb5, 0xd0, 0xdb, 0xca, 0xb8, 0xd0, 0xdb, 0xcb, 0xb5, 0xd0, 0xdb, - 0xcb, 0xb8, 0xd0, 0xdb, 0xcb, 0xb5, 0xd0, 0xdb, 0xcc, 0xb8, 0xd0, 0xdb, - 0xcc, 0xb5, 0xd1, 0xdb, 0xcc, 0xb4, 0xd0, 0xdb, 0xcc, 0xb5, 0xd1, 0xdb, - 0xcd, 0xb4, 0xd0, 0xdb, 0xcd, 0xb5, 0xd1, 0xdb, 0xcd, 0xb4, 0xd0, 0xdb, - 0xce, 0xb5, 0xd1, 0xdb, 0xce, 0xb4, 0xd0, 0xdb, 0xce, 0xb5, 0xd1, 0xdb, - 0xce, 0xb4, 0xd0, 0xdb, 0xcf, 0xb5, 0xd1, 0xdb, 0xcf, 0xb4, 0xd0, 0xdb, - 0xcf, 0xb5, 0xd1, 0xdb, 0xd0, 0xb4, 0xd0, 0xdb, 0xd0, 0xb5, 0xd1, 0xdb, - 0xd0, 0xb4, 0xd0, 0xdb, 0xd0, 0xb5, 0xd1, 0xdb, 0xd0, 0xb4, 0xd1, 0xdb, - 0xd0, 0xb4, 0xd1, 0xdb, 0xd0, 0xb4, 0xd2, 0xdb, 0xd0, 0xb4, 0xd2, 0xdb, - 0xd0, 0xb4, 0xd2, 0xdb, 0xd0, 0xb4, 0xd2, 0xdb, 0xd0, 0xb4, 0xd3, 0xdb, - 0xd0, 0xb4, 0xd3, 0xd9, 0xd1, 0xb4, 0xd3, 0xdb, 0xd0, 0xb4, 0xd4, 0xd9, - 0xd1, 0xb4, 0xd4, 0xdb, 0xd0, 0xb4, 0xd4, 0xd9, 0xd1, 0xb4, 0xd4, 0xdb, - 0xd0, 0xb4, 0xd5, 0xd9, 0xd1, 0xb4, 0xd5, 0xdb, 0xd0, 0xb4, 0xd5, 0xd9, - 0xd1, 0xb4, 0xd6, 0xdb, 0xd0, 0xb4, 0xd6, 0xd9, 0xd1, 0xb4, 0xd6, 0xdb, - 0xd0, 0xb4, 0xd6, 0xd9, 0xd1, 0xb4, 0xd7, 0xdb, 0xd0, 0xb4, 0xd7, 0xd9, - 0xd1, 0xb4, 0xd7, 0xdb, 0xd0, 0xb4, 0xd7, 0xd9, 0xd1, 0xb4, 0xd8, 0xdb, - 0xd0, 0xb4, 0xd8, 0xd9, 0xd1, 0xb4, 0xd8, 0xdb, 0xd0, 0xb4, 0xd9, 0xd9, - 0xd1, 0xb4, 0xd9, 0xdb, 0xd0, 0xb4, 0xd9, 0xd9, 0xd1, 0xb4, 0xd9, 0xdb, - 0xd0, 0xb4, 0xda, 0xd9, 0xd1, 0xb4, 0xda, 0xdb, 0xd0, 0xb4, 0xda, 0xd9, - 0xd1, 0xb4, 0xda, 0xdb, 0xd0, 0xb4, 0xdb, 0xd9, 0xd1, 0xb4, 0xdb, 0xd7, - 0xd1, 0xb4, 0xdb, 0xd9, 0xd1, 0xb4, 0xdb, 0xd7, 0xd1, 0xb4, 0xdc, 0xd9, - 0xd1, 0xb4, 0xdc, 0xd7, 0xd1, 0xb4, 0xdc, 0xd9, 0xd1, 0xb4, 0xdd, 0xd7, - 0xd1, 0xb4, 0xdd, 0xd9, 0xd1, 0xb4, 0xdd, 0xdd, 0xe8, 0xb4, 0xdd, 0xdc, - 0xe9, 0xb4, 0xde, 0xdd, 0xe8, 0xb4, 0xde, 0xdc, 0xe9, 0xb4, 0xde, 0xdd, - 0xe8, 0xb4, 0xde, 0xdc, 0xe9, 0xb4, 0xdf, 0xdd, 0xe8, 0xb4, 0xdf, 0xdc, - 0xe9, 0xb4, 0xdf, 0xdd, 0xe8, 0xb4, 0xdf, 0xdc, 0xe9, 0xb4, 0xe0, 0xdd, - 0xe8, 0xb4, 0xe0, 0xdc, 0xe9, 0xb4, 0xe0, 0xdd, 0xe8, 0xb4, 0xe1, 0xdc, - 0xe9, 0xb4, 0xe1, 0xdd, 0xe8, 0xb4, 0xe1, 0xdc, 0xe9, 0xb4, 0xe1, 0xdd, - 0xe8, 0xb4, 0xe2, 0xdc, 0xe9, 0xb4, 0xe2, 0xdd, 0xe8, 0xb4, 0xe2, 0xdc, - 0xe9, 0xb4, 0xe2, 0xdd, 0xe8, 0xb4, 0xe3, 0xdc, 0xe9, 0xb4, 0xe3, 0xdb, - 0xe9, 0xb4, 0xe3, 0xdc, 0xe9, 0xb4, 0xe3, 0xdb, 0xe9, 0xb4, 0xe4, 0xdc, - 0xe9, 0xb4, 0xe4, 0xdb, 0xe9, 0xb4, 0xe4, 0xdc, 0xe9, 0xb4, 0xe4, 0xdb, - 0xe9, 0xb4, 0xe5, 0xdc, 0xe9, 0xb4, 0xe5, 0xdb, 0xe9, 0xb4, 0xe5, 0xdc, - 0xe9, 0xb4, 0xe5, 0xdb, 0xe9, 0xb4, 0xe6, 0xdc, 0xe9, 0xb4, 0xe6, 0xdb, - 0xe9, 0xb4, 0xe6, 0xdc, 0xe9, 0xb4, 0xe6, 0xdb, 0xe9, 0xb4, 0xe7, 0xdc, - 0xe9, 0xb4, 0xe7, 0xdb, 0xe9, 0xb4, 0xe7, 0xdb, 0xe9, 0xb4, 0xe7, 0xdb, - 0xe9, 0xb4, 0xe8, 0xdb, 0xe9, 0xb4, 0xe8, 0xdb, 0xe9, 0xb4, 0xe8, 0xdb, - 0xe9, 0xb4, 0xe8, 0xdb, 0xe9, 0xb4, 0xe9, 0xdb, 0xe9, 0xb4, 0xe9, 0xdb, - 0xe9, 0xb3, 0xe9, 0xdb, 0xe9, 0xb4, 0xe9, 0xdb, 0xe9, 0xb3, 0xe9, 0xdb, - 0xea, 0xb4, 0xe9, 0xdb, 0xea, 0xb3, 0xe9, 0xdb, 0xea, 0xb4, 0xe9, 0xdb, - 0xea, 0xb3, 0xe9, 0xdb, 0xeb, 0xb4, 0xec, 0xdb, 0xeb, 0xb4, 0xec, 0xdb, - 0xeb, 0xb4, 0xec, 0xdb, 0xeb, 0xb4, 0xec, 0xdb, 0xec, 0xb4, 0xec, 0xdb, - 0xec, 0xb4, 0xec, 0xdb, 0xec, 0xb4, 0xec, 0xdb, 0xec, 0xb4, 0xec, 0xdb, - 0xec, 0xb4, 0xed, 0xdb, 0xec, 0xb4, 0xed, 0xdb, 0xec, 0xb4, 0xed, 0xda, - 0xec, 0xb4, 0xed, 0xdb, 0xec, 0xb4, 0xee, 0xda, 0xec, 0xb4, 0xee, 0xdb, - 0xec, 0xb4, 0xee, 0xda, 0xec, 0xb4, 0xee, 0xdb, 0xec, 0xb4, 0xef, 0xda, - 0xec, 0xb4, 0xef, 0xdb, 0xec, 0xb4, 0xef, 0xda, 0xec, 0xb4, 0xef, 0xdb, - 0xec, 0xb4, 0xf0, 0xda, 0xec, 0xb4, 0xf0, 0xdb, 0xec, 0xb4, 0xf0, 0xda, - 0xec, 0xb4, 0xf0, 0xdb, 0xec, 0xb4, 0xf1, 0xda, 0xec, 0xb4, 0xf1, 0xdb, - 0xec, 0xb4, 0xf1, 0xda, 0xec, 0xb4, 0xf1, 0xdb, 0xec, 0xb4, 0xf2, 0xda, - 0xec, 0xb4, 0xf2, 0xdb, 0xec, 0xb4, 0xf2, 0xda, 0xec, 0xb4, 0xf2, 0xdb, - 0xec, 0xb4, 0xf2, 0xda, 0xec, 0xb4, 0xf3, 0xdb, 0xec, 0xb4, 0xf3, 0xda, - 0xec, 0xb4, 0xf3, 0xdb, 0xec, 0xb4, 0xf3, 0xda, 0xec, 0xb4, 0xf4, 0xdb, - 0xec, 0xb4, 0xf4, 0xda, 0xec, 0xb4, 0xf4, 0xdb, 0xec, 0xb4, 0xf4, 0xda, - 0xec, 0xb4, 0xf5, 0xdb, 0xec, 0xb4, 0xf5, 0xda, 0xec, 0xb4, 0xf5, 0xd7, - 0xec, 0xb4, 0xf5, 0xda, 0xec, 0xb4, 0xf5, 0xd7, 0xec, 0xb4, 0xf6, 0xda, - 0xec, 0xb4, 0xf6, 0xd7, 0xec, 0xb4, 0xf6, 0xda, 0xec, 0xb4, 0xf6, 0xd7, - 0xec, 0xb4, 0xf7, 0xda, 0xec, 0xb4, 0xf7, 0xd7, 0xec, 0xb4, 0xf7, 0xda, - 0xec, 0xb4, 0xf7, 0xd7, 0xec, 0xb4, 0xf8, 0xda, 0xec, 0xb4, 0xf8, 0xd7, - 0xec, 0xb4, 0xf8, 0xda, 0xec, 0xb4, 0xf8, 0xd7, 0xec, 0xb4, 0xf8, 0xda, - 0xec, 0xb4, 0xf9, 0xd7, 0xec, 0xb4, 0xf9, 0xda, 0xec, 0xb4, 0xf9, 0xd7, - 0xec, 0xb4, 0xf9, 0xda, 0xec, 0xb4, 0xfa, 0xd7, 0xec, 0xb4, 0xfa, 0xda, - 0xec, 0xb4, 0xfa, 0xd7, 0xec, 0xb4, 0xfa, 0xda, 0xec, 0xb4, 0xfa, 0xd7, - 0xec, 0xb4, 0xfb, 0xda, 0xec, 0xb4, 0xfb, 0xd7, 0xec, 0xb4, 0xfb, 0xda, - 0xec, 0xb4, 0xfb, 0xd7, 0xec, 0xb4, 0xfc, 0xda, 0xec, 0xb4, 0xfc, 0xd7, - 0xec, 0xb4, 0xfc, 0xd7, 0xec, 0xb4, 0xfc, 0xd7, 0xec, 0xb4, 0xfc, 0xd7, - 0xec, 0xb4, 0xfd, 0xd7, 0xec, 0xb4, 0xfd, 0xd7, 0xec, 0xb4, 0xfd, 0xd7, - 0xec, 0xb4, 0xfd, 0xd7, 0xec, 0xb4, 0xfe, 0xd7, 0xec, 0xb4, 0xfe, 0xd7, - 0xec, 0xb4, 0xfe, 0xc7, 0xf7, 0xb4, 0xfe, 0xc7, 0xf7, 0xb4, 0xfe, 0xc7, - 0xf7, 0xb4, 0xff, 0xc7, 0xf7, 0xb4, 0xff, 0xc7, 0xf7, 0xb4, 0x03, 0xdf, - 0x89, 0xb5, 0x0a, 0xe1, 0x89, 0xb5, 0x0f, 0xdf, 0x89, 0xb5, 0x14, 0xe1, - 0x89, 0xb5, 0x17, 0xdf, 0x89, 0xb5, 0x1b, 0xe1, 0x89, 0xb5, 0x1e, 0xdf, - 0x89, 0xb5, 0x20, 0xe1, 0x89, 0xb5, 0x23, 0xdf, 0x89, 0xb5, 0x25, 0xe1, - 0x89, 0xb5, 0x27, 0xdf, 0x89, 0xb5, 0x29, 0xe1, 0x89, 0xb5, 0x2b, 0xdf, - 0x89, 0xb5, 0x2d, 0xe1, 0x89, 0xb5, 0x2f, 0xdf, 0x89, 0xb5, 0x31, 0xdf, - 0x89, 0xb5, 0x32, 0xdf, 0x89, 0xb5, 0x34, 0xdf, 0x89, 0xb5, 0x35, 0xdf, - 0x89, 0xb5, 0x37, 0xdf, 0x89, 0xb5, 0x38, 0xdf, 0x89, 0xb5, 0x3a, 0xdf, - 0x89, 0xb5, 0x3b, 0xdf, 0x89, 0xb5, 0x3c, 0xdf, 0x89, 0xb5, 0x3e, 0xdf, - 0x89, 0xb5, 0x3f, 0xdf, 0x89, 0xb5, 0x40, 0xdf, 0x89, 0xb5, 0x42, 0xdf, - 0x89, 0xb5, 0x43, 0xdf, 0x89, 0xb5, 0x44, 0xdf, 0x89, 0xb5, 0x45, 0xdf, - 0x89, 0xb5, 0x46, 0xdf, 0x89, 0xb5, 0x47, 0xdf, 0x89, 0xb5, 0x48, 0xdd, - 0x8a, 0xb5, 0x49, 0xdf, 0x89, 0xb5, 0x4a, 0xdd, 0x8a, 0xb5, 0x4b, 0xdf, - 0x89, 0xb5, 0x4c, 0xdd, 0x8a, 0xb5, 0x4d, 0xdf, 0x89, 0xb5, 0x4e, 0xdd, - 0x8a, 0xb5, 0x4f, 0xdf, 0x89, 0xb5, 0x50, 0xdd, 0x8a, 0xb5, 0x51, 0xdf, - 0x89, 0xb5, 0x52, 0xdd, 0x8a, 0xb5, 0x53, 0xdf, 0x89, 0xb5, 0x54, 0xdd, - 0x8a, 0xb5, 0x55, 0xdf, 0x89, 0xb5, 0x56, 0xdd, 0x8a, 0xb5, 0x57, 0xdf, - 0x89, 0xb5, 0x58, 0xdd, 0x8a, 0xb5, 0x58, 0xdf, 0x89, 0xb5, 0x59, 0xdd, - 0x8a, 0xb5, 0x5a, 0xdf, 0x89, 0xb5, 0x5b, 0xdd, 0x8a, 0xb5, 0x5c, 0xdf, - 0x89, 0xb5, 0x5d, 0xdd, 0x8a, 0xb5, 0x5d, 0xdf, 0x89, 0xb5, 0x5e, 0xdd, - 0x8a, 0xb5, 0x5f, 0xdf, 0x89, 0xb5, 0x60, 0xdd, 0x8a, 0xb5, 0x60, 0xdf, - 0x89, 0xb5, 0x61, 0xdd, 0x8a, 0xb5, 0x62, 0xdf, 0x89, 0xb5, 0x63, 0xdd, - 0x8a, 0xb5, 0x63, 0xdf, 0x89, 0xb5, 0x64, 0xdd, 0x8a, 0xb5, 0x65, 0xdb, - 0x8a, 0xb5, 0x66, 0xdd, 0x8a, 0xb5, 0x66, 0xdb, 0x8a, 0xb5, 0x67, 0xdd, - 0x8a, 0xb5, 0x68, 0xdb, 0x8a, 0xb5, 0x68, 0xdd, 0x8a, 0xb5, 0x69, 0xdb, - 0x8a, 0xb5, 0x6a, 0xdd, 0x8a, 0xb5, 0x6a, 0xdb, 0x8a, 0xb5, 0x6b, 0xdd, - 0x8a, 0xb5, 0x6c, 0xdb, 0x8a, 0xb5, 0x6c, 0xdd, 0x8a, 0xb5, 0x6d, 0xdb, - 0x8a, 0xb5, 0x6e, 0xdd, 0x8a, 0xb5, 0x6e, 0xdb, 0x8a, 0xb5, 0x6f, 0xdd, - 0x8a, 0xb5, 0x70, 0xdb, 0x8a, 0xb5, 0x70, 0xdd, 0x8a, 0xb5, 0x71, 0xdb, - 0x8a, 0xb5, 0x72, 0xdd, 0x8a, 0xb5, 0x72, 0xdb, 0x8a, 0xb5, 0x73, 0xdd, - 0x8a, 0xb5, 0x73, 0xdb, 0x8a, 0xb5, 0x74, 0xdd, 0x8a, 0xb5, 0x75, 0xdb, - 0x8a, 0xb5, 0x75, 0xdd, 0x8a, 0xb5, 0x76, 0xdb, 0x8a, 0xb5, 0x76, 0xdd, - 0x8a, 0xb5, 0x77, 0xdb, 0x8a, 0xb5, 0x78, 0xdd, 0x8a, 0xb5, 0x78, 0xdb, - 0x8a, 0xb5, 0x79, 0xdd, 0x8a, 0xb5, 0x79, 0xdb, 0x8a, 0xb5, 0x7a, 0xdd, - 0x8a, 0xb5, 0x7a, 0xdb, 0x8a, 0xb5, 0x7b, 0xdd, 0x8a, 0xb5, 0x7c, 0xdb, - 0x8a, 0xb5, 0x7c, 0xdd, 0x8a, 0xb5, 0x7d, 0xdb, 0x8a, 0xb5, 0x7d, 0xdd, - 0x8a, 0xb5, 0x7e, 0xdb, 0x8a, 0xb5, 0x7e, 0xdd, 0x8a, 0xb5, 0x7f, 0xdb, - 0x8a, 0xb5, 0x7f, 0xdd, 0x8a, 0xb5, 0x80, 0xdb, 0x8a, 0xb5, 0x81, 0xdd, - 0x8a, 0xb5, 0x81, 0xdb, 0x8a, 0xb5, 0x82, 0xdd, 0x8a, 0xb5, 0x82, 0xdb, - 0x8a, 0xb5, 0x83, 0xdb, 0x8b, 0xb5, 0x83, 0xdb, 0x8a, 0xb5, 0x84, 0xdb, - 0x8b, 0xb5, 0x84, 0xdb, 0x8a, 0xb5, 0x85, 0xdb, 0x8b, 0xb5, 0x85, 0xdb, - 0x8a, 0xb5, 0x86, 0xdb, 0x8b, 0xb5, 0x86, 0xdb, 0x8a, 0xb5, 0x87, 0xdb, - 0x8b, 0xb5, 0x87, 0xdb, 0x8a, 0xb5, 0x88, 0xdb, 0x8b, 0xb5, 0x88, 0xdb, - 0x8a, 0xb5, 0x89, 0xdb, 0x8b, 0xb5, 0x89, 0xdb, 0x8a, 0xb5, 0x8a, 0xdb, - 0x8b, 0xb5, 0x8a, 0xdb, 0x8a, 0xb5, 0x8a, 0xdb, 0x8b, 0xb5, 0x8a, 0xdb, - 0x8b, 0xb5, 0x8a, 0xdb, 0x8c, 0xb5, 0x8a, 0xdb, 0x8c, 0xb5, 0x8a, 0xdb, - 0x8d, 0xb5, 0x8a, 0xdb, 0x8d, 0xb5, 0x8a, 0xdb, 0x8e, 0xb5, 0x8a, 0xdb, - 0x8e, 0xb5, 0x8b, 0xdb, 0x8e, 0xb2, 0x8a, 0xdb, 0x8f, 0xb5, 0x8b, 0xdb, - 0x8f, 0xb2, 0x8a, 0xdb, 0x90, 0xb5, 0x8b, 0xdb, 0x90, 0xb2, 0x8a, 0xdb, - 0x91, 0xb5, 0x8b, 0xdb, 0x91, 0xb2, 0x8a, 0xdb, 0x92, 0xb5, 0x8b, 0xdb, - 0x92, 0xb2, 0x8a, 0xdb, 0x93, 0xb5, 0x8b, 0xdb, 0x93, 0xb2, 0x8a, 0xdb, - 0x94, 0xb5, 0x8b, 0xdb, 0x94, 0xb2, 0x8a, 0xdb, 0x94, 0xb5, 0x8b, 0xdb, - 0x95, 0xb2, 0x8a, 0xdb, 0x95, 0xb5, 0x8b, 0xdb, 0x96, 0xb2, 0x8a, 0xdb, - 0x96, 0xb5, 0x8b, 0xdb, 0x97, 0xb2, 0x8a, 0xdb, 0x97, 0xb5, 0x8b, 0xdb, - 0x98, 0xb2, 0x8a, 0xdb, 0x98, 0xb5, 0x8b, 0xdb, 0x98, 0xb2, 0x8a, 0xdb, - 0x99, 0xb5, 0x8b, 0xdb, 0x99, 0xb2, 0x8a, 0xdb, 0x9a, 0xb5, 0x8b, 0xdb, - 0x9a, 0xb2, 0x8a, 0xdb, 0x9a, 0xb5, 0x8b, 0xdb, 0x9b, 0xb2, 0x8b, 0xdb, - 0x9b, 0xaf, 0x8b, 0xdb, 0x9c, 0xb2, 0x8b, 0xdb, 0x9c, 0xaf, 0x8b, 0xdb, - 0x9d, 0xb2, 0x8b, 0xdb, 0x9d, 0xaf, 0x8b, 0xdb, 0x9d, 0xb2, 0x8b, 0xdb, - 0x9e, 0xaf, 0x8b, 0xdb, 0x9e, 0xb2, 0x8b, 0xdb, 0x9f, 0xaf, 0x8b, 0xdb, - 0x9f, 0xb2, 0x8b, 0xdb, 0x9f, 0xaf, 0x8b, 0xdb, 0xa0, 0xb2, 0x8b, 0xdb, - 0xa0, 0xaf, 0x8b, 0xdb, 0xa1, 0xb2, 0x8b, 0xdb, 0xa1, 0xaf, 0x8b, 0xdb, - 0xa1, 0xb2, 0x8b, 0xdb, 0xa2, 0xaf, 0x8b, 0xdb, 0xa2, 0xb2, 0x8b, 0xdb, - 0xa3, 0xaf, 0x8b, 0xdb, 0xa3, 0xb2, 0x8b, 0xdb, 0xa3, 0xaf, 0xa3, 0xdb, - 0xa4, 0x98, 0x8b, 0xdb, 0xa4, 0xaf, 0xa3, 0xdb, 0xa5, 0x98, 0xa3, 0xdb, - 0xa5, 0x97, 0xa3, 0xdb, 0xa5, 0x98, 0xa3, 0xdb, 0xa6, 0x97, 0xa3, 0xdb, - 0xa6, 0x98, 0xa3, 0xdb, 0xa6, 0x97, 0xa3, 0xdb, 0xa7, 0x98, 0xa3, 0xdb, - 0xa7, 0x97, 0xa3, 0xdb, 0xa8, 0x98, 0xa3, 0xdb, 0xa8, 0x97, 0xa3, 0xdb, - 0xa8, 0x98, 0xa3, 0xdb, 0xa9, 0x97, 0xa3, 0xdb, 0xa9, 0x98, 0xa3, 0xdb, - 0xaa, 0x97, 0xa3, 0xdb, 0xaa, 0x98, 0xa3, 0xdb, 0xaa, 0x97, 0xa3, 0xdb, - 0xab, 0x98, 0xa3, 0xdb, 0xab, 0x97, 0xa3, 0xdb, 0xab, 0x98, 0xa3, 0xdb, - 0xac, 0x97, 0xa3, 0xdb, 0xac, 0x98, 0xa3, 0xdb, 0xac, 0x97, 0xa3, 0xdb, - 0xad, 0x98, 0xa3, 0xdb, 0xad, 0x97, 0xa3, 0xdb, 0xae, 0x98, 0xa3, 0xdb, - 0xae, 0x97, 0xa3, 0xdb, 0xae, 0x98, 0xa3, 0xdb, 0xaf, 0x97, 0xa3, 0xdb, - 0xaf, 0x98, 0xa3, 0xdb, 0xaf, 0x97, 0xa3, 0xdb, 0xb0, 0x98, 0xa3, 0xdb, - 0xb0, 0x97, 0xa3, 0xdb, 0xb0, 0x98, 0xa3, 0xdb, 0xb1, 0x97, 0xa3, 0xdb, - 0xb1, 0x98, 0xa3, 0xdb, 0xb2, 0x97, 0xa3, 0xdb, 0xb2, 0x98, 0xa3, 0xdb, - 0xb2, 0x97, 0xa3, 0xdb, 0xb3, 0x98, 0xa3, 0xdb, 0xb3, 0x97, 0xa3, 0xdb, - 0xb3, 0x98, 0xa3, 0xdb, 0xb4, 0x97, 0xa3, 0xdb, 0xb4, 0x98, 0xa3, 0xdb, - 0xb4, 0x97, 0xa3, 0xdb, 0xb5, 0x98, 0xa3, 0xdb, 0xb5, 0x97, 0xa3, 0xdb, - 0xb5, 0x98, 0xa3, 0xdb, 0xb6, 0x97, 0xa3, 0xdb, 0xb6, 0x98, 0xa3, 0xdb, - 0xb6, 0x97, 0xa3, 0xdb, 0xb7, 0x98, 0xa3, 0xdb, 0xb7, 0x97, 0xd0, 0xdb, - 0xb7, 0xbe, 0xd0, 0xdb, 0xb8, 0xbb, 0xd0, 0xdb, 0xb8, 0xbe, 0xd0, 0xdb, - 0xb8, 0xbb, 0xd0, 0xdb, 0xb9, 0xbe, 0xd0, 0xdb, 0xb9, 0xbb, 0xd0, 0xdb, - 0xb9, 0xbe, 0xd0, 0xdb, 0xba, 0xbb, 0xd0, 0xdb, 0xba, 0xb8, 0xd0, 0xdb, - 0xba, 0xbb, 0xd0, 0xdb, 0xbb, 0xb8, 0xd0, 0xdb, 0xbb, 0xbb, 0xd0, 0xdb, - 0xbb, 0xb8, 0xd0, 0xdb, 0xbc, 0xbb, 0xd0, 0xdb, 0xbc, 0xb8, 0xd0, 0xdb, - 0xbc, 0xbb, 0xd0, 0xdb, 0xbd, 0xb8, 0xd0, 0xdb, 0xbd, 0xbb, 0xd0, 0xdb, - 0xbd, 0xb8, 0xd0, 0xdb, 0xbe, 0xbb, 0xd0, 0xdb, 0xbe, 0xb8, 0xd0, 0xdb, - 0xbe, 0xbb, 0xd0, 0xdb, 0xbf, 0xb8, 0xd0, 0xdb, 0xbf, 0xbb, 0xd0, 0xdb, - 0xbf, 0xb8, 0xd0, 0xdb, 0xc0, 0xbb, 0xd0, 0xdb, 0xc0, 0xb8, 0xd0, 0xdb, - 0xc0, 0xbb, 0xd0, 0xdb, 0xc1, 0xb8, 0xd0, 0xdb, 0xc1, 0xbb, 0xd0, 0xdb, - 0xc1, 0xb8, 0xd0, 0xdb, 0xc1, 0xbb, 0xd0, 0xdb, 0xc2, 0xb8, 0xd0, 0xdb, - 0xc2, 0xbb, 0xd0, 0xdb, 0xc2, 0xb8, 0xd0, 0xdb, 0xc3, 0xbb, 0xd0, 0xdb, - 0xc3, 0xb8, 0xd0, 0xdb, 0xc3, 0xbb, 0xd0, 0xdb, 0xc4, 0xb8, 0xd0, 0xdb, - 0xc4, 0xbb, 0xd0, 0xdb, 0xc4, 0xb8, 0xd0, 0xdb, 0xc5, 0xbb, 0xd0, 0xdb, - 0xc5, 0xb8, 0xd0, 0xdb, 0xc5, 0xbb, 0xd0, 0xdb, 0xc6, 0xb8, 0xd0, 0xdb, - 0xc6, 0xb5, 0xd0, 0xdb, 0xc6, 0xb8, 0xd0, 0xdb, 0xc6, 0xb5, 0xd0, 0xdb, - 0xc7, 0xb8, 0xd0, 0xdb, 0xc7, 0xb5, 0xd0, 0xdb, 0xc7, 0xb8, 0xd0, 0xdb, - 0xc8, 0xb5, 0xd0, 0xdb, 0xc8, 0xb8, 0xd0, 0xdb, 0xc8, 0xb5, 0xd0, 0xdb, - 0xc9, 0xb8, 0xd0, 0xdb, 0xc9, 0xb5, 0xd0, 0xdb, 0xc9, 0xb8, 0xd0, 0xdb, - 0xc9, 0xb5, 0xd0, 0xdb, 0xca, 0xb8, 0xd0, 0xdb, 0xca, 0xb5, 0xd0, 0xdb, - 0xca, 0xb8, 0xd0, 0xdb, 0xcb, 0xb5, 0xd0, 0xdb, 0xcb, 0xb8, 0xd0, 0xdb, - 0xcb, 0xb5, 0xd0, 0xdb, 0xcc, 0xb8, 0xd0, 0xdb, 0xcc, 0xb5, 0xd0, 0xdb, - 0xcc, 0xb8, 0xd0, 0xdb, 0xcc, 0xb5, 0xd0, 0xdb, 0xcd, 0xb8, 0xd0, 0xdb, - 0xcd, 0xb5, 0xd0, 0xdb, 0xcd, 0xb8, 0xd0, 0xdb, 0xce, 0xb5, 0xd0, 0xdb, - 0xce, 0xb8, 0xd0, 0xdb, 0xce, 0xb5, 0xd1, 0xdb, 0xce, 0xb5, 0xd0, 0xdb, - 0xcf, 0xb5, 0xd1, 0xdb, 0xcf, 0xb5, 0xd0, 0xdb, 0xcf, 0xb5, 0xd1, 0xdb, - 0xd0, 0xb5, 0xd0, 0xdb, 0xd0, 0xb5, 0xd1, 0xdb, 0xd0, 0xb5, 0xd0, 0xda, - 0xd0, 0xb5, 0xd1, 0xdb, 0xd0, 0xb5, 0xd1, 0xda, 0xd0, 0xb5, 0xd1, 0xdb, - 0xd0, 0xb5, 0xd2, 0xda, 0xd0, 0xb5, 0xd2, 0xdb, 0xd0, 0xb5, 0xd2, 0xda, - 0xd0, 0xb5, 0xd2, 0xdb, 0xd0, 0xb5, 0xd3, 0xda, 0xd0, 0xb5, 0xd3, 0xd9, - 0xd1, 0xb5, 0xd3, 0xda, 0xd0, 0xb5, 0xd4, 0xd9, 0xd1, 0xb5, 0xd4, 0xda, - 0xd0, 0xb5, 0xd4, 0xd9, 0xd1, 0xb5, 0xd4, 0xda, 0xd0, 0xb5, 0xd5, 0xd9, - 0xd1, 0xb5, 0xd5, 0xda, 0xd0, 0xb5, 0xd5, 0xd9, 0xd1, 0xb5, 0xd6, 0xda, - 0xd0, 0xb5, 0xd6, 0xd9, 0xd1, 0xb5, 0xd6, 0xda, 0xd0, 0xb5, 0xd6, 0xd9, - 0xd1, 0xb5, 0xd7, 0xda, 0xd0, 0xb5, 0xd7, 0xd9, 0xd1, 0xb5, 0xd7, 0xda, - 0xd0, 0xb5, 0xd7, 0xd9, 0xd1, 0xb5, 0xd8, 0xda, 0xd0, 0xb5, 0xd8, 0xd9, - 0xd1, 0xb5, 0xd8, 0xda, 0xd0, 0xb5, 0xd9, 0xd9, 0xd1, 0xb5, 0xd9, 0xda, - 0xd0, 0xb5, 0xd9, 0xd9, 0xd1, 0xb5, 0xd9, 0xda, 0xd0, 0xb5, 0xda, 0xd9, - 0xd1, 0xb5, 0xda, 0xda, 0xd0, 0xb5, 0xda, 0xd9, 0xd1, 0xb5, 0xda, 0xda, - 0xd0, 0xb5, 0xdb, 0xd9, 0xd1, 0xb5, 0xdb, 0xd8, 0xd1, 0xb5, 0xdb, 0xd9, - 0xd1, 0xb5, 0xdb, 0xd8, 0xd1, 0xb5, 0xdc, 0xd9, 0xd1, 0xb5, 0xdc, 0xd8, - 0xd1, 0xb5, 0xdc, 0xd9, 0xd1, 0xb5, 0xdd, 0xd8, 0xd1, 0xb5, 0xdd, 0xd9, - 0xd1, 0xb5, 0xdd, 0xde, 0xe8, 0xb5, 0xdd, 0xdc, 0xe9, 0xb5, 0xde, 0xde, - 0xe8, 0xb5, 0xde, 0xdc, 0xe9, 0xb5, 0xde, 0xde, 0xe8, 0xb5, 0xde, 0xdc, - 0xe9, 0xb5, 0xdf, 0xde, 0xe8, 0xb5, 0xdf, 0xdc, 0xe9, 0xb5, 0xdf, 0xde, - 0xe8, 0xb5, 0xdf, 0xdc, 0xe9, 0xb5, 0xe0, 0xde, 0xe8, 0xb5, 0xe0, 0xdc, - 0xe9, 0xb5, 0xe0, 0xde, 0xe8, 0xb5, 0xe1, 0xdc, 0xe9, 0xb5, 0xe1, 0xde, - 0xe8, 0xb5, 0xe1, 0xdc, 0xe9, 0xb5, 0xe1, 0xde, 0xe8, 0xb5, 0xe2, 0xdc, - 0xe9, 0xb5, 0xe2, 0xde, 0xe8, 0xb5, 0xe2, 0xdc, 0xe9, 0xb5, 0xe2, 0xde, - 0xe8, 0xb5, 0xe3, 0xdc, 0xe9, 0xb5, 0xe3, 0xdb, 0xe9, 0xb5, 0xe3, 0xdc, - 0xe9, 0xb5, 0xe3, 0xdb, 0xe9, 0xb5, 0xe4, 0xdc, 0xe9, 0xb5, 0xe4, 0xdb, - 0xe9, 0xb5, 0xe4, 0xdc, 0xe9, 0xb5, 0xe4, 0xdb, 0xe9, 0xb5, 0xe5, 0xdc, - 0xe9, 0xb5, 0xe5, 0xdb, 0xe9, 0xb5, 0xe5, 0xdc, 0xe9, 0xb5, 0xe5, 0xdb, - 0xe9, 0xb5, 0xe6, 0xdc, 0xe9, 0xb5, 0xe6, 0xdb, 0xe9, 0xb5, 0xe6, 0xdc, - 0xe9, 0xb5, 0xe6, 0xdb, 0xe9, 0xb5, 0xe7, 0xdc, 0xe9, 0xb5, 0xe7, 0xdb, - 0xe9, 0xb5, 0xe7, 0xdc, 0xe9, 0xb5, 0xe7, 0xdb, 0xe9, 0xb5, 0xe8, 0xdc, - 0xe9, 0xb5, 0xe8, 0xdb, 0xe9, 0xb5, 0xe8, 0xdb, 0xe9, 0xb5, 0xe8, 0xdb, - 0xe9, 0xb5, 0xe9, 0xdb, 0xe9, 0xb5, 0xe8, 0xdb, 0xe9, 0xb5, 0xe9, 0xdb, - 0xe9, 0xb5, 0xe8, 0xdb, 0xe9, 0xb5, 0xe9, 0xdb, 0xea, 0xb5, 0xe9, 0xdb, - 0xea, 0xb3, 0xe9, 0xdb, 0xea, 0xb5, 0xe9, 0xdb, 0xea, 0xb3, 0xec, 0xdb, - 0xeb, 0xb7, 0xec, 0xdb, 0xeb, 0xb5, 0xec, 0xdb, 0xeb, 0xb7, 0xec, 0xdb, - 0xeb, 0xb5, 0xec, 0xdb, 0xec, 0xb5, 0xec, 0xdb, 0xec, 0xb5, 0xec, 0xdb, - 0xec, 0xb5, 0xec, 0xdb, 0xec, 0xb5, 0xec, 0xdb, 0xec, 0xb5, 0xed, 0xdb, - 0xec, 0xb5, 0xed, 0xdb, 0xec, 0xb5, 0xed, 0xdb, 0xec, 0xb5, 0xed, 0xdb, - 0xec, 0xb5, 0xee, 0xdb, 0xec, 0xb5, 0xee, 0xdb, 0xec, 0xb5, 0xee, 0xd9, - 0xec, 0xb5, 0xee, 0xdb, 0xec, 0xb5, 0xef, 0xd9, 0xec, 0xb5, 0xef, 0xdb, - 0xec, 0xb5, 0xef, 0xd9, 0xec, 0xb5, 0xef, 0xdb, 0xec, 0xb5, 0xf0, 0xd9, - 0xec, 0xb5, 0xf0, 0xdb, 0xec, 0xb5, 0xf0, 0xd9, 0xec, 0xb5, 0xf0, 0xdb, - 0xec, 0xb5, 0xf1, 0xd9, 0xec, 0xb5, 0xf1, 0xdb, 0xec, 0xb5, 0xf1, 0xd9, - 0xec, 0xb5, 0xf1, 0xdb, 0xec, 0xb5, 0xf2, 0xd9, 0xec, 0xb5, 0xf2, 0xdb, - 0xec, 0xb5, 0xf2, 0xd9, 0xec, 0xb5, 0xf2, 0xdb, 0xec, 0xb5, 0xf2, 0xd9, - 0xec, 0xb5, 0xf3, 0xdb, 0xec, 0xb5, 0xf3, 0xd9, 0xec, 0xb5, 0xf3, 0xdb, - 0xec, 0xb5, 0xf3, 0xd9, 0xec, 0xb5, 0xf4, 0xdb, 0xec, 0xb5, 0xf4, 0xd9, - 0xec, 0xb5, 0xf4, 0xdb, 0xec, 0xb5, 0xf4, 0xd9, 0xec, 0xb5, 0xf5, 0xdb, - 0xec, 0xb5, 0xf5, 0xd9, 0xec, 0xb5, 0xf5, 0xd8, 0xec, 0xb5, 0xf5, 0xd9, - 0xec, 0xb5, 0xf5, 0xd8, 0xec, 0xb5, 0xf6, 0xd9, 0xec, 0xb5, 0xf6, 0xd8, - 0xec, 0xb5, 0xf6, 0xd9, 0xec, 0xb5, 0xf6, 0xd8, 0xec, 0xb5, 0xf7, 0xd9, - 0xec, 0xb5, 0xf7, 0xd8, 0xec, 0xb5, 0xf7, 0xd9, 0xec, 0xb5, 0xf7, 0xd8, - 0xec, 0xb5, 0xf8, 0xd9, 0xec, 0xb5, 0xf8, 0xd8, 0xec, 0xb5, 0xf8, 0xd9, - 0xec, 0xb5, 0xf8, 0xd8, 0xec, 0xb5, 0xf8, 0xd9, 0xec, 0xb5, 0xf9, 0xd8, - 0xec, 0xb5, 0xf9, 0xd9, 0xec, 0xb5, 0xf9, 0xd8, 0xec, 0xb5, 0xf9, 0xd9, - 0xec, 0xb5, 0xfa, 0xd8, 0xec, 0xb5, 0xfa, 0xd9, 0xec, 0xb5, 0xfa, 0xd8, - 0xec, 0xb5, 0xfa, 0xd9, 0xec, 0xb5, 0xfa, 0xd8, 0xec, 0xb5, 0xfb, 0xd9, - 0xec, 0xb5, 0xfb, 0xd8, 0xec, 0xb5, 0xfb, 0xd9, 0xec, 0xb5, 0xfb, 0xd8, - 0xec, 0xb5, 0xfc, 0xd9, 0xec, 0xb5, 0xfc, 0xd8, 0xec, 0xb5, 0xfc, 0xd8, - 0xec, 0xb5, 0xfc, 0xd8, 0xec, 0xb5, 0xfc, 0xd8, 0xec, 0xb5, 0xfd, 0xd8, - 0xec, 0xb5, 0xfd, 0xd8, 0xec, 0xb5, 0xfd, 0xd8, 0xec, 0xb5, 0xfd, 0xd8, - 0xec, 0xb5, 0xfe, 0xd8, 0xec, 0xb5, 0xfe, 0xd8, 0xec, 0xb5, 0xfe, 0xc7, - 0xf7, 0xb5, 0xfe, 0xc7, 0xf7, 0xb5, 0xfe, 0xc7, 0xf7, 0xb5, 0xff, 0xc7, - 0xf7, 0xb5, 0xff, 0xc7, 0xf7, 0xb5, 0x03, 0xdf, 0x89, 0xb5, 0x0a, 0xe1, - 0x89, 0xb5, 0x0f, 0xdf, 0x89, 0xb5, 0x14, 0xe1, 0x89, 0xb5, 0x17, 0xdf, - 0x89, 0xb5, 0x1b, 0xe1, 0x89, 0xb5, 0x1e, 0xdf, 0x89, 0xb5, 0x20, 0xe1, - 0x89, 0xb5, 0x23, 0xdf, 0x89, 0xb5, 0x25, 0xe1, 0x89, 0xb5, 0x27, 0xdf, - 0x89, 0xb5, 0x29, 0xe1, 0x89, 0xb5, 0x2b, 0xdf, 0x89, 0xb5, 0x2d, 0xe1, - 0x89, 0xb5, 0x2f, 0xdf, 0x89, 0xb5, 0x31, 0xe1, 0x89, 0xb5, 0x32, 0xdf, - 0x89, 0xb5, 0x34, 0xe1, 0x89, 0xb5, 0x35, 0xdf, 0x89, 0xb5, 0x37, 0xe1, - 0x89, 0xb5, 0x38, 0xdf, 0x89, 0xb5, 0x3a, 0xe1, 0x89, 0xb5, 0x3b, 0xdf, - 0x89, 0xb5, 0x3c, 0xe1, 0x89, 0xb5, 0x3e, 0xdf, 0x89, 0xb5, 0x3f, 0xe1, - 0x89, 0xb5, 0x40, 0xdf, 0x89, 0xb5, 0x42, 0xdf, 0x89, 0xb5, 0x43, 0xdf, - 0x89, 0xb5, 0x44, 0xdf, 0x89, 0xb5, 0x45, 0xdf, 0x89, 0xb5, 0x46, 0xdf, - 0x89, 0xb5, 0x47, 0xdf, 0x89, 0xb5, 0x48, 0xdf, 0x89, 0xb5, 0x49, 0xdf, - 0x89, 0xb5, 0x4a, 0xdf, 0x89, 0xb5, 0x4b, 0xdf, 0x89, 0xb5, 0x4c, 0xdf, - 0x89, 0xb5, 0x4d, 0xdf, 0x89, 0xb5, 0x4e, 0xdf, 0x89, 0xb5, 0x4f, 0xdf, - 0x89, 0xb5, 0x50, 0xdf, 0x89, 0xb5, 0x51, 0xdf, 0x89, 0xb5, 0x52, 0xdf, - 0x89, 0xb5, 0x53, 0xdf, 0x89, 0xb5, 0x54, 0xdf, 0x89, 0xb5, 0x55, 0xdf, - 0x89, 0xb5, 0x56, 0xdf, 0x89, 0xb5, 0x57, 0xdf, 0x89, 0xb5, 0x58, 0xdf, - 0x89, 0xb5, 0x58, 0xdf, 0x89, 0xb5, 0x59, 0xdf, 0x89, 0xb5, 0x5a, 0xdf, - 0x89, 0xb5, 0x5b, 0xdf, 0x89, 0xb5, 0x5c, 0xdf, 0x89, 0xb5, 0x5d, 0xdf, - 0x89, 0xb5, 0x5d, 0xdf, 0x89, 0xb5, 0x5e, 0xdf, 0x89, 0xb5, 0x5f, 0xdf, - 0x89, 0xb5, 0x60, 0xdf, 0x89, 0xb5, 0x60, 0xdf, 0x89, 0xb5, 0x61, 0xdf, - 0x89, 0xb5, 0x62, 0xdf, 0x89, 0xb5, 0x63, 0xdd, 0x8a, 0xb5, 0x63, 0xdf, - 0x89, 0xb5, 0x64, 0xdd, 0x8a, 0xb5, 0x65, 0xdf, 0x89, 0xb5, 0x66, 0xdd, - 0x8a, 0xb5, 0x66, 0xdf, 0x89, 0xb5, 0x67, 0xdd, 0x8a, 0xb5, 0x68, 0xdf, - 0x89, 0xb5, 0x68, 0xdd, 0x8a, 0xb5, 0x69, 0xdf, 0x89, 0xb5, 0x6a, 0xdd, - 0x8a, 0xb5, 0x6a, 0xdf, 0x89, 0xb5, 0x6b, 0xdd, 0x8a, 0xb5, 0x6c, 0xdf, - 0x89, 0xb5, 0x6c, 0xdd, 0x8a, 0xb5, 0x6d, 0xdf, 0x89, 0xb5, 0x6e, 0xdd, - 0x8a, 0xb5, 0x6e, 0xdf, 0x89, 0xb5, 0x6f, 0xdd, 0x8a, 0xb5, 0x70, 0xdc, - 0x8a, 0xb5, 0x70, 0xdd, 0x8a, 0xb5, 0x71, 0xdc, 0x8a, 0xb5, 0x72, 0xdd, - 0x8a, 0xb5, 0x72, 0xdc, 0x8a, 0xb5, 0x73, 0xdd, 0x8a, 0xb5, 0x73, 0xdc, - 0x8a, 0xb5, 0x74, 0xdd, 0x8a, 0xb5, 0x75, 0xdc, 0x8a, 0xb5, 0x75, 0xdd, - 0x8a, 0xb5, 0x76, 0xdc, 0x8a, 0xb5, 0x76, 0xdd, 0x8a, 0xb5, 0x77, 0xdc, - 0x8a, 0xb5, 0x78, 0xdd, 0x8a, 0xb5, 0x78, 0xdc, 0x8a, 0xb5, 0x79, 0xdd, - 0x8a, 0xb5, 0x79, 0xdc, 0x8a, 0xb5, 0x7a, 0xdd, 0x8a, 0xb5, 0x7a, 0xdc, - 0x8a, 0xb5, 0x7b, 0xdd, 0x8a, 0xb5, 0x7c, 0xdc, 0x8a, 0xb5, 0x7c, 0xdd, - 0x8a, 0xb5, 0x7d, 0xdc, 0x8a, 0xb5, 0x7d, 0xdd, 0x8a, 0xb5, 0x7e, 0xdc, - 0x8a, 0xb5, 0x7e, 0xdd, 0x8a, 0xb5, 0x7f, 0xdc, 0x8a, 0xb5, 0x7f, 0xdd, - 0x8a, 0xb5, 0x80, 0xdc, 0x8a, 0xb5, 0x81, 0xdd, 0x8a, 0xb5, 0x81, 0xdc, - 0x8a, 0xb5, 0x82, 0xdd, 0x8a, 0xb5, 0x82, 0xdc, 0x8a, 0xb5, 0x83, 0xdb, - 0x8b, 0xb5, 0x83, 0xdc, 0x8a, 0xb5, 0x84, 0xdb, 0x8b, 0xb5, 0x84, 0xdc, - 0x8a, 0xb5, 0x85, 0xdb, 0x8b, 0xb5, 0x85, 0xdc, 0x8a, 0xb5, 0x86, 0xdb, - 0x8b, 0xb5, 0x86, 0xdc, 0x8a, 0xb5, 0x87, 0xdb, 0x8b, 0xb5, 0x87, 0xdc, - 0x8a, 0xb5, 0x88, 0xdb, 0x8b, 0xb5, 0x88, 0xdc, 0x8a, 0xb5, 0x89, 0xdb, - 0x8b, 0xb5, 0x89, 0xdc, 0x8a, 0xb5, 0x8a, 0xdb, 0x8b, 0xb5, 0x8a, 0xdc, - 0x8a, 0xb5, 0x8a, 0xdb, 0x8b, 0xb5, 0x8a, 0xdb, 0x8b, 0xb5, 0x8a, 0xdb, - 0x8c, 0xb5, 0x8a, 0xdb, 0x8c, 0xb5, 0x8a, 0xdb, 0x8d, 0xb5, 0x8a, 0xdb, - 0x8d, 0xb5, 0x8a, 0xdb, 0x8e, 0xb5, 0x8a, 0xdb, 0x8e, 0xb5, 0x8a, 0xdb, - 0x8e, 0xb5, 0x8a, 0xdb, 0x8f, 0xb5, 0x8a, 0xdb, 0x8f, 0xb5, 0x8a, 0xdb, - 0x90, 0xb5, 0x8a, 0xdb, 0x90, 0xb5, 0x8a, 0xdb, 0x91, 0xb5, 0x8a, 0xdb, - 0x91, 0xb5, 0x8a, 0xdb, 0x92, 0xb5, 0x8b, 0xdb, 0x92, 0xb1, 0x8a, 0xdb, - 0x93, 0xb5, 0x8b, 0xdb, 0x93, 0xb1, 0x8a, 0xdb, 0x94, 0xb5, 0x8b, 0xdb, - 0x94, 0xb1, 0x8a, 0xdb, 0x94, 0xb5, 0x8b, 0xdb, 0x95, 0xb1, 0x8a, 0xdb, - 0x95, 0xb5, 0x8b, 0xdb, 0x96, 0xb1, 0x8a, 0xdb, 0x96, 0xb5, 0x8b, 0xdb, - 0x97, 0xb1, 0x8a, 0xdb, 0x97, 0xb5, 0x8b, 0xdb, 0x98, 0xb1, 0x8a, 0xdb, - 0x98, 0xb5, 0x8b, 0xdb, 0x98, 0xb1, 0x8a, 0xdb, 0x99, 0xb5, 0x8b, 0xdb, - 0x99, 0xb1, 0x8a, 0xdb, 0x9a, 0xb5, 0x8b, 0xdb, 0x9a, 0xb1, 0x8a, 0xdb, - 0x9a, 0xb5, 0x8b, 0xdb, 0x9b, 0xb1, 0x8a, 0xdb, 0x9b, 0xb5, 0x8b, 0xdb, - 0x9c, 0xb1, 0x8a, 0xdb, 0x9c, 0xb5, 0x8b, 0xdb, 0x9d, 0xb1, 0x8a, 0xdb, - 0x9d, 0xb5, 0x8b, 0xdb, 0x9d, 0xb1, 0x8a, 0xdb, 0x9e, 0xb5, 0x8b, 0xdb, - 0x9e, 0xb1, 0x8a, 0xdb, 0x9f, 0xb5, 0x8b, 0xdb, 0x9f, 0xb1, 0x8a, 0xdb, - 0x9f, 0xb5, 0x8b, 0xdb, 0xa0, 0xb1, 0x8b, 0xdb, 0xa0, 0xae, 0x8b, 0xdb, - 0xa1, 0xb1, 0x8b, 0xdb, 0xa1, 0xae, 0x8b, 0xdb, 0xa1, 0xb1, 0x8b, 0xdb, - 0xa2, 0xae, 0x8b, 0xdb, 0xa2, 0xb1, 0x8b, 0xdb, 0xa3, 0xae, 0x8b, 0xdb, - 0xa3, 0xb1, 0x8b, 0xdb, 0xa3, 0xae, 0x8b, 0xdb, 0xa4, 0xb1, 0x8b, 0xdb, - 0xa4, 0xae, 0xa3, 0xdb, 0xa5, 0x97, 0xa3, 0xdb, 0xa5, 0x97, 0xa3, 0xdb, - 0xa5, 0x97, 0xa3, 0xdb, 0xa6, 0x97, 0xa3, 0xdb, 0xa6, 0x97, 0xa3, 0xdb, - 0xa6, 0x97, 0xa3, 0xdb, 0xa7, 0x97, 0xa3, 0xdb, 0xa7, 0x97, 0xa3, 0xdb, - 0xa8, 0x97, 0xa3, 0xdb, 0xa8, 0x97, 0xa3, 0xdb, 0xa8, 0x97, 0xa3, 0xdb, - 0xa9, 0x97, 0xa3, 0xdb, 0xa9, 0x97, 0xa3, 0xdb, 0xaa, 0x97, 0xa3, 0xdb, - 0xaa, 0x97, 0xa3, 0xdb, 0xaa, 0x97, 0xa3, 0xdb, 0xab, 0x97, 0xa3, 0xdb, - 0xab, 0x97, 0xa3, 0xdb, 0xab, 0x97, 0xa3, 0xdb, 0xac, 0x97, 0xa3, 0xdb, - 0xac, 0x97, 0xa3, 0xdb, 0xac, 0x97, 0xa3, 0xdb, 0xad, 0x97, 0xa3, 0xdb, - 0xad, 0x97, 0xa3, 0xdb, 0xae, 0x97, 0xa3, 0xdb, 0xae, 0x97, 0xa3, 0xdb, - 0xae, 0x97, 0xa3, 0xdb, 0xaf, 0x97, 0xa3, 0xdb, 0xaf, 0x97, 0xa3, 0xdb, - 0xaf, 0x97, 0xa3, 0xdb, 0xb0, 0x97, 0xa3, 0xdb, 0xb0, 0x97, 0xa3, 0xdb, - 0xb0, 0x97, 0xa3, 0xdb, 0xb1, 0x97, 0xa3, 0xdb, 0xb1, 0x97, 0xa3, 0xdb, - 0xb2, 0x97, 0xa3, 0xdb, 0xb2, 0x97, 0xa3, 0xdb, 0xb2, 0x97, 0xa3, 0xdb, - 0xb3, 0x97, 0xa3, 0xdb, 0xb3, 0x97, 0xa3, 0xdb, 0xb3, 0x97, 0xa3, 0xdb, - 0xb4, 0x97, 0xa3, 0xdb, 0xb4, 0x97, 0xa3, 0xdb, 0xb4, 0x97, 0xa3, 0xdb, - 0xb5, 0x97, 0xa3, 0xdb, 0xb5, 0x97, 0xa3, 0xdb, 0xb5, 0x97, 0xa3, 0xdb, - 0xb6, 0x97, 0xa3, 0xdb, 0xb6, 0x97, 0xa3, 0xdb, 0xb6, 0x97, 0xa3, 0xdb, - 0xb7, 0x97, 0xd0, 0xdb, 0xb7, 0xba, 0xd0, 0xdb, 0xb7, 0xbd, 0xd0, 0xdb, - 0xb8, 0xba, 0xd0, 0xdb, 0xb8, 0xbd, 0xd0, 0xdb, 0xb8, 0xba, 0xd0, 0xdb, - 0xb9, 0xbd, 0xd0, 0xdb, 0xb9, 0xba, 0xd0, 0xdb, 0xb9, 0xbd, 0xd0, 0xdb, - 0xba, 0xba, 0xd0, 0xdb, 0xba, 0xbd, 0xd0, 0xdb, 0xba, 0xba, 0xd0, 0xdb, - 0xbb, 0xbd, 0xd0, 0xdb, 0xbb, 0xba, 0xd0, 0xdb, 0xbb, 0xbd, 0xd0, 0xdb, - 0xbc, 0xba, 0xd0, 0xdb, 0xbc, 0xbd, 0xd0, 0xdb, 0xbc, 0xba, 0xd0, 0xdb, - 0xbd, 0xbd, 0xd0, 0xdb, 0xbd, 0xba, 0xd0, 0xdb, 0xbd, 0xbd, 0xd0, 0xdb, - 0xbe, 0xba, 0xd0, 0xdb, 0xbe, 0xbd, 0xd0, 0xdb, 0xbe, 0xba, 0xd0, 0xdb, - 0xbf, 0xbd, 0xd0, 0xdb, 0xbf, 0xba, 0xd0, 0xdb, 0xbf, 0xb8, 0xd0, 0xdb, - 0xc0, 0xba, 0xd0, 0xdb, 0xc0, 0xb8, 0xd0, 0xdb, 0xc0, 0xba, 0xd0, 0xdb, - 0xc1, 0xb8, 0xd0, 0xdb, 0xc1, 0xba, 0xd0, 0xdb, 0xc1, 0xb8, 0xd0, 0xdb, - 0xc1, 0xba, 0xd0, 0xdb, 0xc2, 0xb8, 0xd0, 0xdb, 0xc2, 0xba, 0xd0, 0xdb, - 0xc2, 0xb8, 0xd0, 0xdb, 0xc3, 0xba, 0xd0, 0xdb, 0xc3, 0xb8, 0xd0, 0xdb, - 0xc3, 0xba, 0xd0, 0xdb, 0xc4, 0xb8, 0xd0, 0xdb, 0xc4, 0xba, 0xd0, 0xdb, - 0xc4, 0xb8, 0xd0, 0xdb, 0xc5, 0xba, 0xd0, 0xdb, 0xc5, 0xb8, 0xd0, 0xdb, - 0xc5, 0xba, 0xd0, 0xdb, 0xc6, 0xb8, 0xd0, 0xdb, 0xc6, 0xba, 0xd0, 0xdb, - 0xc6, 0xb8, 0xd0, 0xdb, 0xc6, 0xba, 0xd0, 0xdb, 0xc7, 0xb8, 0xd0, 0xdb, - 0xc7, 0xba, 0xd0, 0xdb, 0xc7, 0xb8, 0xd0, 0xdb, 0xc8, 0xba, 0xd0, 0xdb, - 0xc8, 0xb8, 0xd0, 0xdb, 0xc8, 0xba, 0xd0, 0xdb, 0xc9, 0xb8, 0xd0, 0xdb, - 0xc9, 0xba, 0xd0, 0xdb, 0xc9, 0xb8, 0xd0, 0xdb, 0xc9, 0xb5, 0xd0, 0xdb, - 0xca, 0xb8, 0xd0, 0xdb, 0xca, 0xb5, 0xd0, 0xdb, 0xca, 0xb8, 0xd0, 0xdb, - 0xcb, 0xb5, 0xd0, 0xdb, 0xcb, 0xb8, 0xd0, 0xdb, 0xcb, 0xb5, 0xd0, 0xdb, - 0xcc, 0xb8, 0xd0, 0xdb, 0xcc, 0xb5, 0xd0, 0xdb, 0xcc, 0xb8, 0xd0, 0xdb, - 0xcc, 0xb5, 0xd0, 0xdb, 0xcd, 0xb8, 0xd0, 0xdb, 0xcd, 0xb5, 0xd0, 0xdb, - 0xcd, 0xb8, 0xd0, 0xdb, 0xce, 0xb5, 0xd0, 0xdb, 0xce, 0xb8, 0xd0, 0xdb, - 0xce, 0xb5, 0xd1, 0xdb, 0xce, 0xb5, 0xd0, 0xdb, 0xcf, 0xb5, 0xd1, 0xdb, - 0xcf, 0xb5, 0xd0, 0xdb, 0xcf, 0xb5, 0xd1, 0xdb, 0xd0, 0xb5, 0xd0, 0xdb, - 0xd0, 0xb5, 0xd1, 0xdb, 0xd0, 0xb5, 0xd0, 0xdb, 0xd0, 0xb5, 0xd1, 0xdb, - 0xd0, 0xb5, 0xd1, 0xdb, 0xd0, 0xb5, 0xd1, 0xdb, 0xd0, 0xb5, 0xd2, 0xdb, - 0xd0, 0xb5, 0xd2, 0xdb, 0xd0, 0xb5, 0xd2, 0xdb, 0xd0, 0xb5, 0xd2, 0xdb, - 0xd0, 0xb5, 0xd3, 0xdb, 0xd0, 0xb5, 0xd3, 0xdb, 0xd0, 0xb5, 0xd3, 0xdb, - 0xd0, 0xb5, 0xd4, 0xdb, 0xd0, 0xb5, 0xd4, 0xdb, 0xd0, 0xb5, 0xd4, 0xdb, - 0xd0, 0xb5, 0xd4, 0xdb, 0xd0, 0xb5, 0xd5, 0xdb, 0xd0, 0xb5, 0xd5, 0xdb, - 0xd0, 0xb5, 0xd5, 0xd9, 0xd1, 0xb5, 0xd6, 0xdb, 0xd0, 0xb5, 0xd6, 0xd9, - 0xd1, 0xb5, 0xd6, 0xdb, 0xd0, 0xb5, 0xd6, 0xd9, 0xd1, 0xb5, 0xd7, 0xdb, - 0xd0, 0xb5, 0xd7, 0xd9, 0xd1, 0xb5, 0xd7, 0xdb, 0xd0, 0xb5, 0xd7, 0xd9, - 0xd1, 0xb5, 0xd8, 0xdb, 0xd0, 0xb5, 0xd8, 0xd9, 0xd1, 0xb5, 0xd8, 0xdb, - 0xd0, 0xb5, 0xd9, 0xd9, 0xd1, 0xb5, 0xd9, 0xdb, 0xd0, 0xb5, 0xd9, 0xd9, - 0xd1, 0xb5, 0xd9, 0xdb, 0xd0, 0xb5, 0xda, 0xd9, 0xd1, 0xb5, 0xda, 0xdb, - 0xd0, 0xb5, 0xda, 0xd9, 0xd1, 0xb5, 0xda, 0xdb, 0xd0, 0xb5, 0xdb, 0xd9, - 0xd1, 0xb5, 0xdb, 0xdb, 0xd0, 0xb5, 0xdb, 0xd9, 0xd1, 0xb5, 0xdb, 0xdb, - 0xd0, 0xb5, 0xdc, 0xd9, 0xd1, 0xb5, 0xdc, 0xdb, 0xd0, 0xb5, 0xdc, 0xd9, - 0xd1, 0xb5, 0xdd, 0xdb, 0xd0, 0xb5, 0xdd, 0xd9, 0xd1, 0xb5, 0xdd, 0xdd, - 0xe8, 0xb5, 0xdd, 0xdc, 0xe9, 0xb5, 0xde, 0xdd, 0xe8, 0xb5, 0xde, 0xdc, - 0xe9, 0xb5, 0xde, 0xdd, 0xe8, 0xb5, 0xde, 0xdc, 0xe9, 0xb5, 0xdf, 0xdd, - 0xe8, 0xb5, 0xdf, 0xdc, 0xe9, 0xb5, 0xdf, 0xdd, 0xe8, 0xb5, 0xdf, 0xdc, - 0xe9, 0xb5, 0xe0, 0xdd, 0xe8, 0xb5, 0xe0, 0xdc, 0xe9, 0xb5, 0xe0, 0xdd, - 0xe8, 0xb5, 0xe1, 0xdc, 0xe9, 0xb5, 0xe1, 0xdd, 0xe8, 0xb5, 0xe1, 0xdc, - 0xe9, 0xb5, 0xe1, 0xdd, 0xe8, 0xb5, 0xe2, 0xdc, 0xe9, 0xb5, 0xe2, 0xdd, - 0xe8, 0xb5, 0xe2, 0xdc, 0xe9, 0xb5, 0xe2, 0xdd, 0xe8, 0xb5, 0xe3, 0xdc, - 0xe9, 0xb5, 0xe3, 0xdd, 0xe8, 0xb5, 0xe3, 0xdc, 0xe9, 0xb5, 0xe3, 0xdd, - 0xe8, 0xb5, 0xe4, 0xdc, 0xe9, 0xb5, 0xe4, 0xdd, 0xe8, 0xb5, 0xe4, 0xdc, - 0xe9, 0xb5, 0xe4, 0xdd, 0xe8, 0xb5, 0xe5, 0xdc, 0xe9, 0xb5, 0xe5, 0xdb, - 0xe9, 0xb5, 0xe5, 0xdc, 0xe9, 0xb5, 0xe5, 0xdb, 0xe9, 0xb5, 0xe6, 0xdc, - 0xe9, 0xb5, 0xe6, 0xdb, 0xe9, 0xb5, 0xe6, 0xdc, 0xe9, 0xb5, 0xe6, 0xdb, - 0xe9, 0xb5, 0xe7, 0xdc, 0xe9, 0xb5, 0xe7, 0xdb, 0xe9, 0xb5, 0xe7, 0xdc, - 0xe9, 0xb5, 0xe7, 0xdb, 0xe9, 0xb5, 0xe8, 0xdc, 0xe9, 0xb5, 0xe8, 0xdb, - 0xe9, 0xb5, 0xe8, 0xdb, 0xe9, 0xb5, 0xe8, 0xdb, 0xe9, 0xb5, 0xe9, 0xdb, - 0xe9, 0xb5, 0xe8, 0xdb, 0xe9, 0xb5, 0xe9, 0xdb, 0xe9, 0xb5, 0xe8, 0xdb, - 0xe9, 0xb5, 0xe9, 0xdb, 0xea, 0xb5, 0xe9, 0xdb, 0xea, 0xb3, 0xe9, 0xdb, - 0xea, 0xb5, 0xe9, 0xdb, 0xea, 0xb3, 0xec, 0xdb, 0xeb, 0xb7, 0xec, 0xdb, - 0xeb, 0xb5, 0xec, 0xdb, 0xeb, 0xb7, 0xec, 0xdb, 0xeb, 0xb5, 0xec, 0xdb, - 0xec, 0xb5, 0xec, 0xdb, 0xec, 0xb5, 0xec, 0xdb, 0xec, 0xb5, 0xec, 0xdb, - 0xec, 0xb5, 0xec, 0xdb, 0xec, 0xb5, 0xed, 0xdb, 0xec, 0xb5, 0xed, 0xdb, - 0xec, 0xb5, 0xed, 0xdb, 0xec, 0xb5, 0xed, 0xdb, 0xec, 0xb5, 0xee, 0xdb, - 0xec, 0xb5, 0xee, 0xdb, 0xec, 0xb5, 0xee, 0xda, 0xec, 0xb5, 0xee, 0xdb, - 0xec, 0xb5, 0xef, 0xda, 0xec, 0xb5, 0xef, 0xdb, 0xec, 0xb5, 0xef, 0xda, - 0xec, 0xb5, 0xef, 0xdb, 0xec, 0xb5, 0xf0, 0xda, 0xec, 0xb5, 0xf0, 0xdb, - 0xec, 0xb5, 0xf0, 0xda, 0xec, 0xb5, 0xf0, 0xdb, 0xec, 0xb5, 0xf1, 0xda, - 0xec, 0xb5, 0xf1, 0xdb, 0xec, 0xb5, 0xf1, 0xda, 0xec, 0xb5, 0xf1, 0xdb, - 0xec, 0xb5, 0xf2, 0xda, 0xec, 0xb5, 0xf2, 0xdb, 0xec, 0xb5, 0xf2, 0xda, - 0xec, 0xb5, 0xf2, 0xdb, 0xec, 0xb5, 0xf2, 0xda, 0xec, 0xb5, 0xf3, 0xdb, - 0xec, 0xb5, 0xf3, 0xda, 0xec, 0xb5, 0xf3, 0xdb, 0xec, 0xb5, 0xf3, 0xda, - 0xec, 0xb5, 0xf4, 0xdb, 0xec, 0xb5, 0xf4, 0xda, 0xec, 0xb5, 0xf4, 0xdb, - 0xec, 0xb5, 0xf4, 0xda, 0xec, 0xb5, 0xf5, 0xdb, 0xec, 0xb5, 0xf5, 0xda, - 0xec, 0xb5, 0xf5, 0xdb, 0xec, 0xb5, 0xf5, 0xda, 0xec, 0xb5, 0xf5, 0xdb, - 0xec, 0xb5, 0xf6, 0xda, 0xec, 0xb5, 0xf6, 0xdb, 0xec, 0xb5, 0xf6, 0xda, - 0xec, 0xb5, 0xf6, 0xdb, 0xec, 0xb5, 0xf7, 0xda, 0xec, 0xb5, 0xf7, 0xdb, - 0xec, 0xb5, 0xf7, 0xda, 0xec, 0xb5, 0xf7, 0xdb, 0xec, 0xb5, 0xf8, 0xda, - 0xec, 0xb5, 0xf8, 0xd7, 0xec, 0xb5, 0xf8, 0xda, 0xec, 0xb5, 0xf8, 0xd7, - 0xec, 0xb5, 0xf8, 0xda, 0xec, 0xb5, 0xf9, 0xd7, 0xec, 0xb5, 0xf9, 0xda, - 0xec, 0xb5, 0xf9, 0xd7, 0xec, 0xb5, 0xf9, 0xda, 0xec, 0xb5, 0xfa, 0xd7, - 0xec, 0xb5, 0xfa, 0xda, 0xec, 0xb5, 0xfa, 0xd7, 0xec, 0xb5, 0xfa, 0xda, - 0xec, 0xb5, 0xfa, 0xd7, 0xec, 0xb5, 0xfb, 0xda, 0xec, 0xb5, 0xfb, 0xd7, - 0xec, 0xb5, 0xfb, 0xda, 0xec, 0xb5, 0xfb, 0xd7, 0xec, 0xb5, 0xfc, 0xda, - 0xec, 0xb5, 0xfc, 0xd7, 0xec, 0xb5, 0xfc, 0xda, 0xec, 0xb5, 0xfc, 0xd7, - 0xec, 0xb5, 0xfc, 0xda, 0xec, 0xb5, 0xfd, 0xd7, 0xec, 0xb5, 0xfd, 0xda, - 0xec, 0xb5, 0xfd, 0xd7, 0xec, 0xb5, 0xfd, 0xda, 0xec, 0xb5, 0xfe, 0xd7, - 0xec, 0xb5, 0xfe, 0xda, 0xec, 0xb5, 0xfe, 0xd7, 0xec, 0xb5, 0xfe, 0xda, - 0xec, 0xb5, 0xfe, 0xc7, 0xf7, 0xb5, 0xff, 0xda, 0xec, 0xb5, 0xff, 0xc7, - 0xf7, 0xb5, 0x03, 0xe2, 0x88, 0xb6, 0x0a, 0xe1, 0x89, 0xb6, 0x0f, 0xe2, - 0x88, 0xb6, 0x14, 0xe1, 0x89, 0xb6, 0x17, 0xe2, 0x88, 0xb6, 0x1b, 0xe1, - 0x89, 0xb6, 0x1e, 0xe2, 0x88, 0xb6, 0x20, 0xe1, 0x89, 0xb6, 0x23, 0xdf, - 0x89, 0xb6, 0x25, 0xe1, 0x89, 0xb6, 0x27, 0xdf, 0x89, 0xb6, 0x29, 0xe1, - 0x89, 0xb6, 0x2b, 0xdf, 0x89, 0xb6, 0x2d, 0xe1, 0x89, 0xb6, 0x2f, 0xdf, - 0x89, 0xb6, 0x31, 0xe1, 0x89, 0xb6, 0x32, 0xdf, 0x89, 0xb6, 0x34, 0xe1, - 0x89, 0xb6, 0x35, 0xdf, 0x89, 0xb6, 0x37, 0xe1, 0x89, 0xb6, 0x38, 0xdf, - 0x89, 0xb6, 0x3a, 0xe1, 0x89, 0xb6, 0x3b, 0xdf, 0x89, 0xb6, 0x3c, 0xe1, - 0x89, 0xb6, 0x3e, 0xdf, 0x89, 0xb6, 0x3f, 0xe1, 0x89, 0xb6, 0x40, 0xdf, - 0x89, 0xb6, 0x42, 0xdf, 0x89, 0xb6, 0x43, 0xdf, 0x89, 0xb6, 0x44, 0xdf, - 0x89, 0xb6, 0x45, 0xdf, 0x89, 0xb6, 0x46, 0xdf, 0x89, 0xb6, 0x47, 0xdf, - 0x89, 0xb6, 0x48, 0xdf, 0x89, 0xb6, 0x49, 0xdf, 0x89, 0xb6, 0x4a, 0xdf, - 0x89, 0xb6, 0x4b, 0xdf, 0x89, 0xb6, 0x4c, 0xdf, 0x89, 0xb6, 0x4d, 0xdf, - 0x89, 0xb6, 0x4e, 0xdf, 0x89, 0xb6, 0x4f, 0xdf, 0x89, 0xb6, 0x50, 0xdf, - 0x89, 0xb6, 0x51, 0xdf, 0x89, 0xb6, 0x52, 0xdf, 0x89, 0xb6, 0x53, 0xdf, - 0x89, 0xb6, 0x54, 0xdf, 0x89, 0xb6, 0x55, 0xdf, 0x89, 0xb6, 0x56, 0xdf, - 0x89, 0xb6, 0x57, 0xdf, 0x89, 0xb6, 0x58, 0xdd, 0x8a, 0xb6, 0x58, 0xdf, - 0x89, 0xb6, 0x59, 0xdd, 0x8a, 0xb6, 0x5a, 0xdf, 0x89, 0xb6, 0x5b, 0xdd, - 0x8a, 0xb6, 0x5c, 0xdf, 0x89, 0xb6, 0x5d, 0xdd, 0x8a, 0xb6, 0x5d, 0xdf, - 0x89, 0xb6, 0x5e, 0xdd, 0x8a, 0xb6, 0x5f, 0xdf, 0x89, 0xb6, 0x60, 0xdd, - 0x8a, 0xb6, 0x60, 0xdf, 0x89, 0xb6, 0x61, 0xdd, 0x8a, 0xb6, 0x62, 0xdf, - 0x89, 0xb6, 0x63, 0xdd, 0x8a, 0xb6, 0x63, 0xdf, 0x89, 0xb6, 0x64, 0xdd, - 0x8a, 0xb6, 0x65, 0xdf, 0x89, 0xb6, 0x66, 0xdd, 0x8a, 0xb6, 0x66, 0xdf, - 0x89, 0xb6, 0x67, 0xdd, 0x8a, 0xb6, 0x68, 0xdf, 0x89, 0xb6, 0x68, 0xdd, - 0x8a, 0xb6, 0x69, 0xdf, 0x89, 0xb6, 0x6a, 0xdd, 0x8a, 0xb6, 0x6a, 0xdf, - 0x89, 0xb6, 0x6b, 0xdd, 0x8a, 0xb6, 0x6c, 0xdf, 0x89, 0xb6, 0x6c, 0xdd, - 0x8a, 0xb6, 0x6d, 0xdf, 0x89, 0xb6, 0x6e, 0xdd, 0x8a, 0xb6, 0x6e, 0xdf, - 0x89, 0xb6, 0x6f, 0xdd, 0x8a, 0xb6, 0x70, 0xdb, 0x8a, 0xb6, 0x70, 0xdd, - 0x8a, 0xb6, 0x71, 0xdb, 0x8a, 0xb6, 0x72, 0xdd, 0x8a, 0xb6, 0x72, 0xdb, - 0x8a, 0xb6, 0x73, 0xdd, 0x8a, 0xb6, 0x73, 0xdb, 0x8a, 0xb6, 0x74, 0xdd, - 0x8a, 0xb6, 0x75, 0xdb, 0x8a, 0xb6, 0x75, 0xdd, 0x8a, 0xb6, 0x76, 0xdb, - 0x8a, 0xb6, 0x76, 0xdd, 0x8a, 0xb6, 0x77, 0xdb, 0x8a, 0xb6, 0x78, 0xdd, - 0x8a, 0xb6, 0x78, 0xdb, 0x8a, 0xb6, 0x79, 0xdd, 0x8a, 0xb6, 0x79, 0xdb, - 0x8a, 0xb6, 0x7a, 0xdd, 0x8a, 0xb6, 0x7a, 0xdb, 0x8a, 0xb6, 0x7b, 0xdd, - 0x8a, 0xb6, 0x7c, 0xdb, 0x8a, 0xb6, 0x7c, 0xdd, 0x8a, 0xb6, 0x7d, 0xdb, - 0x8a, 0xb6, 0x7d, 0xdd, 0x8a, 0xb6, 0x7e, 0xdb, 0x8a, 0xb6, 0x7e, 0xdd, - 0x8a, 0xb6, 0x7f, 0xdb, 0x8a, 0xb6, 0x7f, 0xdd, 0x8a, 0xb6, 0x80, 0xdb, - 0x8a, 0xb6, 0x81, 0xdd, 0x8a, 0xb6, 0x81, 0xdb, 0x8a, 0xb6, 0x82, 0xdd, - 0x8a, 0xb6, 0x82, 0xdb, 0x8a, 0xb6, 0x83, 0xdd, 0x8a, 0xb6, 0x83, 0xdb, - 0x8a, 0xb6, 0x84, 0xdd, 0x8a, 0xb6, 0x84, 0xdb, 0x8a, 0xb6, 0x85, 0xdd, - 0x8a, 0xb6, 0x85, 0xdb, 0x8a, 0xb6, 0x86, 0xdd, 0x8a, 0xb6, 0x86, 0xdb, - 0x8a, 0xb6, 0x87, 0xdb, 0x8b, 0xb6, 0x87, 0xdb, 0x8a, 0xb6, 0x88, 0xdb, - 0x8b, 0xb6, 0x88, 0xdb, 0x8a, 0xb6, 0x89, 0xdb, 0x8b, 0xb6, 0x89, 0xdb, - 0x8a, 0xb6, 0x8a, 0xdb, 0x8b, 0xb6, 0x8a, 0xdb, 0x8a, 0xb5, 0x8a, 0xdb, - 0x8b, 0xb6, 0x8a, 0xdb, 0x8b, 0xb5, 0x8a, 0xdb, 0x8c, 0xb6, 0x8a, 0xdb, - 0x8c, 0xb5, 0x8a, 0xdb, 0x8d, 0xb6, 0x8a, 0xdb, 0x8d, 0xb5, 0x8a, 0xdb, - 0x8e, 0xb6, 0x8a, 0xdb, 0x8e, 0xb5, 0x8a, 0xdb, 0x8e, 0xb6, 0x8a, 0xdb, - 0x8f, 0xb5, 0x8a, 0xdb, 0x8f, 0xb6, 0x8a, 0xdb, 0x90, 0xb5, 0x8a, 0xdb, - 0x90, 0xb6, 0x8a, 0xdb, 0x91, 0xb5, 0x8a, 0xdb, 0x91, 0xb6, 0x8a, 0xdb, - 0x92, 0xb5, 0x8b, 0xdb, 0x92, 0xb2, 0x8a, 0xdb, 0x93, 0xb5, 0x8b, 0xdb, - 0x93, 0xb2, 0x8a, 0xdb, 0x94, 0xb5, 0x8b, 0xdb, 0x94, 0xb2, 0x8a, 0xdb, - 0x94, 0xb5, 0x8b, 0xdb, 0x95, 0xb2, 0x8a, 0xdb, 0x95, 0xb5, 0x8b, 0xdb, - 0x96, 0xb2, 0x8a, 0xdb, 0x96, 0xb5, 0x8b, 0xdb, 0x97, 0xb2, 0x8a, 0xdb, - 0x97, 0xb5, 0x8b, 0xdb, 0x98, 0xb2, 0x8a, 0xdb, 0x98, 0xb5, 0x8b, 0xdb, - 0x98, 0xb2, 0x8a, 0xdb, 0x99, 0xb5, 0x8b, 0xdb, 0x99, 0xb2, 0x8a, 0xdb, - 0x9a, 0xb5, 0x8b, 0xdb, 0x9a, 0xb2, 0x8a, 0xdb, 0x9a, 0xb5, 0x8b, 0xdb, - 0x9b, 0xb2, 0x8a, 0xdb, 0x9b, 0xb5, 0x8b, 0xdb, 0x9c, 0xb2, 0x8a, 0xdb, - 0x9c, 0xb5, 0x8b, 0xdb, 0x9d, 0xb2, 0x8a, 0xdb, 0x9d, 0xb5, 0x8b, 0xdb, - 0x9d, 0xb2, 0x8a, 0xdb, 0x9e, 0xb5, 0x8b, 0xdb, 0x9e, 0xb2, 0x8a, 0xdb, - 0x9f, 0xb5, 0x8b, 0xdb, 0x9f, 0xb2, 0x8a, 0xdb, 0x9f, 0xb5, 0x8b, 0xdb, - 0xa0, 0xb2, 0x8b, 0xdb, 0xa0, 0xaf, 0x8b, 0xdb, 0xa1, 0xb2, 0x8b, 0xdb, - 0xa1, 0xaf, 0x8b, 0xdb, 0xa1, 0xb2, 0x8b, 0xdb, 0xa2, 0xaf, 0x8b, 0xdb, - 0xa2, 0xb2, 0x8b, 0xdb, 0xa3, 0xaf, 0x8b, 0xdb, 0xa3, 0xb2, 0x8b, 0xdb, - 0xa3, 0xaf, 0x8b, 0xdb, 0xa4, 0xb2, 0x8b, 0xdb, 0xa4, 0xaf, 0xa3, 0xdb, - 0xa5, 0x98, 0x8b, 0xdb, 0xa5, 0xaf, 0xa3, 0xdb, 0xa5, 0x98, 0xa3, 0xdb, - 0xa6, 0x97, 0xa3, 0xdb, 0xa6, 0x98, 0xa3, 0xdb, 0xa6, 0x97, 0xa3, 0xdb, - 0xa7, 0x98, 0xa3, 0xdb, 0xa7, 0x97, 0xa3, 0xdb, 0xa8, 0x98, 0xa3, 0xdb, - 0xa8, 0x97, 0xa3, 0xdb, 0xa8, 0x98, 0xa3, 0xdb, 0xa9, 0x97, 0xa3, 0xdb, - 0xa9, 0x98, 0xa3, 0xdb, 0xaa, 0x97, 0xa3, 0xdb, 0xaa, 0x98, 0xa3, 0xdb, - 0xaa, 0x97, 0xa3, 0xdb, 0xab, 0x98, 0xa3, 0xdb, 0xab, 0x97, 0xa3, 0xdb, - 0xab, 0x98, 0xa3, 0xdb, 0xac, 0x97, 0xa3, 0xdb, 0xac, 0x98, 0xa3, 0xdb, - 0xac, 0x97, 0xa3, 0xdb, 0xad, 0x98, 0xa3, 0xdb, 0xad, 0x97, 0xa3, 0xdb, - 0xae, 0x98, 0xa3, 0xdb, 0xae, 0x97, 0xa3, 0xdb, 0xae, 0x98, 0xa3, 0xdb, - 0xaf, 0x97, 0xa3, 0xdb, 0xaf, 0x98, 0xa3, 0xdb, 0xaf, 0x97, 0xa3, 0xdb, - 0xb0, 0x98, 0xa3, 0xdb, 0xb0, 0x97, 0xa3, 0xdb, 0xb0, 0x98, 0xa3, 0xdb, - 0xb1, 0x97, 0xa3, 0xdb, 0xb1, 0x98, 0xa3, 0xdb, 0xb2, 0x97, 0xa3, 0xdb, - 0xb2, 0x98, 0xa3, 0xdb, 0xb2, 0x97, 0xa3, 0xdb, 0xb3, 0x98, 0xa3, 0xdb, - 0xb3, 0x97, 0xa3, 0xdb, 0xb3, 0x98, 0xa3, 0xdb, 0xb4, 0x97, 0xa3, 0xdb, - 0xb4, 0x98, 0xa3, 0xdb, 0xb4, 0x97, 0xa3, 0xdb, 0xb5, 0x98, 0xa3, 0xdb, - 0xb5, 0x97, 0xa3, 0xdb, 0xb5, 0x98, 0xa3, 0xdb, 0xb6, 0x97, 0xa3, 0xdb, - 0xb6, 0x98, 0xa3, 0xdb, 0xb6, 0x97, 0xa3, 0xdb, 0xb7, 0x98, 0xcf, 0xdb, - 0xb7, 0xbf, 0xd0, 0xdb, 0xb7, 0xbe, 0xcf, 0xdb, 0xb8, 0xbf, 0xd0, 0xdb, - 0xb8, 0xbe, 0xd0, 0xdb, 0xb8, 0xbb, 0xd0, 0xdb, 0xb9, 0xbe, 0xd0, 0xdb, - 0xb9, 0xbb, 0xd0, 0xdb, 0xb9, 0xbe, 0xd0, 0xdb, 0xba, 0xbb, 0xd0, 0xdb, - 0xba, 0xbe, 0xd0, 0xdb, 0xba, 0xbb, 0xd0, 0xdb, 0xbb, 0xbe, 0xd0, 0xdb, - 0xbb, 0xbb, 0xd0, 0xdb, 0xbb, 0xbe, 0xd0, 0xdb, 0xbc, 0xbb, 0xd0, 0xdb, - 0xbc, 0xbe, 0xd0, 0xdb, 0xbc, 0xbb, 0xd0, 0xdb, 0xbd, 0xbe, 0xd0, 0xdb, - 0xbd, 0xbb, 0xd0, 0xdb, 0xbd, 0xbe, 0xd0, 0xdb, 0xbe, 0xbb, 0xd0, 0xdb, - 0xbe, 0xb8, 0xd0, 0xdb, 0xbe, 0xbb, 0xd0, 0xdb, 0xbf, 0xb8, 0xd0, 0xdb, - 0xbf, 0xbb, 0xd0, 0xdb, 0xbf, 0xb8, 0xd0, 0xdb, 0xc0, 0xbb, 0xd0, 0xdb, - 0xc0, 0xb8, 0xd0, 0xdb, 0xc0, 0xbb, 0xd0, 0xdb, 0xc1, 0xb8, 0xd0, 0xdb, - 0xc1, 0xbb, 0xd0, 0xdb, 0xc1, 0xb8, 0xd0, 0xdb, 0xc1, 0xbb, 0xd0, 0xdb, - 0xc2, 0xb8, 0xd0, 0xdb, 0xc2, 0xbb, 0xd0, 0xdb, 0xc2, 0xb8, 0xd0, 0xdb, - 0xc3, 0xbb, 0xd0, 0xdb, 0xc3, 0xb8, 0xd0, 0xdb, 0xc3, 0xbb, 0xd0, 0xdb, - 0xc4, 0xb8, 0xd0, 0xdb, 0xc4, 0xbb, 0xd0, 0xdb, 0xc4, 0xb8, 0xd0, 0xdb, - 0xc5, 0xbb, 0xd0, 0xdb, 0xc5, 0xb8, 0xd0, 0xdb, 0xc5, 0xbb, 0xd0, 0xdb, - 0xc6, 0xb8, 0xd0, 0xdb, 0xc6, 0xbb, 0xd0, 0xdb, 0xc6, 0xb8, 0xd0, 0xdb, - 0xc6, 0xbb, 0xd0, 0xdb, 0xc7, 0xb8, 0xd0, 0xdb, 0xc7, 0xbb, 0xd0, 0xdb, - 0xc7, 0xb8, 0xd0, 0xdb, 0xc8, 0xbb, 0xd0, 0xdb, 0xc8, 0xb8, 0xd0, 0xdb, - 0xc8, 0xbb, 0xd0, 0xdb, 0xc9, 0xb8, 0xd0, 0xdb, 0xc9, 0xbb, 0xd0, 0xdb, - 0xc9, 0xb8, 0xd0, 0xdb, 0xc9, 0xb6, 0xd0, 0xdb, 0xca, 0xb8, 0xd0, 0xdb, - 0xca, 0xb6, 0xd0, 0xdb, 0xca, 0xb8, 0xd0, 0xdb, 0xcb, 0xb6, 0xd0, 0xdb, - 0xcb, 0xb8, 0xd0, 0xdb, 0xcb, 0xb6, 0xd0, 0xdb, 0xcc, 0xb8, 0xd0, 0xdb, - 0xcc, 0xb6, 0xd0, 0xdb, 0xcc, 0xb8, 0xd0, 0xdb, 0xcc, 0xb6, 0xd0, 0xdb, - 0xcd, 0xb8, 0xd0, 0xdb, 0xcd, 0xb6, 0xd0, 0xdb, 0xcd, 0xb8, 0xd0, 0xdb, - 0xce, 0xb6, 0xd0, 0xdb, 0xce, 0xb8, 0xd0, 0xdb, 0xce, 0xb6, 0xd0, 0xdb, - 0xce, 0xb8, 0xd0, 0xdb, 0xcf, 0xb6, 0xd0, 0xdb, 0xcf, 0xb8, 0xd0, 0xdb, - 0xcf, 0xb6, 0xd1, 0xdb, 0xd0, 0xb6, 0xd0, 0xdb, 0xd0, 0xb6, 0xd1, 0xdb, - 0xd0, 0xb6, 0xd0, 0xdb, 0xd0, 0xb6, 0xd1, 0xdb, 0xd0, 0xb6, 0xd1, 0xdb, - 0xd0, 0xb6, 0xd1, 0xdb, 0xd0, 0xb6, 0xd2, 0xda, 0xd0, 0xb6, 0xd2, 0xdb, - 0xd0, 0xb6, 0xd2, 0xda, 0xd0, 0xb6, 0xd2, 0xdb, 0xd0, 0xb6, 0xd3, 0xda, - 0xd0, 0xb6, 0xd3, 0xdb, 0xd0, 0xb6, 0xd3, 0xda, 0xd0, 0xb6, 0xd4, 0xdb, - 0xd0, 0xb6, 0xd4, 0xda, 0xd0, 0xb6, 0xd4, 0xdb, 0xd0, 0xb6, 0xd4, 0xda, - 0xd0, 0xb6, 0xd5, 0xdb, 0xd0, 0xb6, 0xd5, 0xda, 0xd0, 0xb6, 0xd5, 0xd9, - 0xd1, 0xb6, 0xd6, 0xda, 0xd0, 0xb6, 0xd6, 0xd9, 0xd1, 0xb6, 0xd6, 0xda, - 0xd0, 0xb6, 0xd6, 0xd9, 0xd1, 0xb6, 0xd7, 0xda, 0xd0, 0xb6, 0xd7, 0xd9, - 0xd1, 0xb6, 0xd7, 0xda, 0xd0, 0xb6, 0xd7, 0xd9, 0xd1, 0xb6, 0xd8, 0xda, - 0xd0, 0xb6, 0xd8, 0xd9, 0xd1, 0xb6, 0xd8, 0xda, 0xd0, 0xb6, 0xd9, 0xd9, - 0xd1, 0xb6, 0xd9, 0xda, 0xd0, 0xb6, 0xd9, 0xd9, 0xd1, 0xb6, 0xd9, 0xda, - 0xd0, 0xb6, 0xda, 0xd9, 0xd1, 0xb6, 0xda, 0xda, 0xd0, 0xb6, 0xda, 0xd9, - 0xd1, 0xb6, 0xda, 0xda, 0xd0, 0xb6, 0xdb, 0xd9, 0xd1, 0xb6, 0xdb, 0xda, - 0xd0, 0xb6, 0xdb, 0xd9, 0xd1, 0xb6, 0xdb, 0xda, 0xd0, 0xb6, 0xdc, 0xd9, - 0xd1, 0xb6, 0xdc, 0xda, 0xd0, 0xb6, 0xdc, 0xd9, 0xd1, 0xb6, 0xdd, 0xda, - 0xd0, 0xb6, 0xdd, 0xd9, 0xd1, 0xb6, 0xdd, 0xde, 0xe8, 0xb6, 0xdd, 0xdc, - 0xe9, 0xb6, 0xde, 0xde, 0xe8, 0xb6, 0xde, 0xdc, 0xe9, 0xb6, 0xde, 0xde, - 0xe8, 0xb6, 0xde, 0xdc, 0xe9, 0xb6, 0xdf, 0xde, 0xe8, 0xb6, 0xdf, 0xdc, - 0xe9, 0xb6, 0xdf, 0xde, 0xe8, 0xb6, 0xdf, 0xdc, 0xe9, 0xb6, 0xe0, 0xde, - 0xe8, 0xb6, 0xe0, 0xdc, 0xe9, 0xb6, 0xe0, 0xde, 0xe8, 0xb6, 0xe1, 0xdc, - 0xe9, 0xb6, 0xe1, 0xde, 0xe8, 0xb6, 0xe1, 0xdc, 0xe9, 0xb6, 0xe1, 0xde, - 0xe8, 0xb6, 0xe2, 0xdc, 0xe9, 0xb6, 0xe2, 0xde, 0xe8, 0xb6, 0xe2, 0xdc, - 0xe9, 0xb6, 0xe2, 0xde, 0xe8, 0xb6, 0xe3, 0xdc, 0xe9, 0xb6, 0xe3, 0xde, - 0xe8, 0xb6, 0xe3, 0xdc, 0xe9, 0xb6, 0xe3, 0xde, 0xe8, 0xb6, 0xe4, 0xdc, - 0xe9, 0xb6, 0xe4, 0xde, 0xe8, 0xb6, 0xe4, 0xdc, 0xe9, 0xb6, 0xe4, 0xde, - 0xe8, 0xb6, 0xe5, 0xdc, 0xe9, 0xb6, 0xe5, 0xdb, 0xe9, 0xb6, 0xe5, 0xdc, - 0xe9, 0xb6, 0xe5, 0xdb, 0xe9, 0xb6, 0xe6, 0xdc, 0xe9, 0xb6, 0xe6, 0xdb, - 0xe9, 0xb6, 0xe6, 0xdc, 0xe9, 0xb6, 0xe6, 0xdb, 0xe9, 0xb6, 0xe7, 0xdc, - 0xe9, 0xb6, 0xe7, 0xdb, 0xe9, 0xb6, 0xe7, 0xdc, 0xe9, 0xb6, 0xe7, 0xdb, - 0xe9, 0xb6, 0xe8, 0xdc, 0xe9, 0xb6, 0xe8, 0xdb, 0xe9, 0xb6, 0xe8, 0xdc, - 0xe9, 0xb6, 0xe8, 0xdb, 0xe9, 0xb6, 0xe9, 0xdb, 0xe9, 0xb6, 0xe8, 0xdb, - 0xe9, 0xb6, 0xe9, 0xdb, 0xe9, 0xb6, 0xe8, 0xdb, 0xe9, 0xb6, 0xe9, 0xdb, - 0xea, 0xb6, 0xe8, 0xdb, 0xea, 0xb6, 0xe9, 0xdb, 0xea, 0xb6, 0xe8, 0xdb, - 0xea, 0xb6, 0xec, 0xdb, 0xeb, 0xb7, 0xec, 0xdb, 0xeb, 0xb6, 0xec, 0xdb, - 0xeb, 0xb7, 0xec, 0xdb, 0xeb, 0xb6, 0xec, 0xdb, 0xec, 0xb7, 0xec, 0xdb, - 0xec, 0xb6, 0xec, 0xdb, 0xec, 0xb6, 0xec, 0xdb, 0xec, 0xb6, 0xec, 0xdb, - 0xec, 0xb6, 0xed, 0xdb, 0xec, 0xb6, 0xed, 0xdb, 0xec, 0xb6, 0xed, 0xdb, - 0xec, 0xb6, 0xed, 0xdb, 0xec, 0xb6, 0xee, 0xdb, 0xec, 0xb6, 0xee, 0xdb, - 0xec, 0xb6, 0xee, 0xdb, 0xec, 0xb6, 0xee, 0xdb, 0xec, 0xb6, 0xef, 0xdb, - 0xec, 0xb6, 0xef, 0xdb, 0xec, 0xb6, 0xef, 0xdb, 0xec, 0xb6, 0xef, 0xdb, - 0xec, 0xb6, 0xf0, 0xdb, 0xec, 0xb6, 0xf0, 0xdb, 0xec, 0xb6, 0xf0, 0xd9, - 0xec, 0xb6, 0xf0, 0xdb, 0xec, 0xb6, 0xf1, 0xd9, 0xec, 0xb6, 0xf1, 0xdb, - 0xec, 0xb6, 0xf1, 0xd9, 0xec, 0xb6, 0xf1, 0xdb, 0xec, 0xb6, 0xf2, 0xd9, - 0xec, 0xb6, 0xf2, 0xdb, 0xec, 0xb6, 0xf2, 0xd9, 0xec, 0xb6, 0xf2, 0xdb, - 0xec, 0xb6, 0xf2, 0xd9, 0xec, 0xb6, 0xf3, 0xdb, 0xec, 0xb6, 0xf3, 0xd9, - 0xec, 0xb6, 0xf3, 0xdb, 0xec, 0xb6, 0xf3, 0xd9, 0xec, 0xb6, 0xf4, 0xdb, - 0xec, 0xb6, 0xf4, 0xd9, 0xec, 0xb6, 0xf4, 0xdb, 0xec, 0xb6, 0xf4, 0xd9, - 0xec, 0xb6, 0xf5, 0xdb, 0xec, 0xb6, 0xf5, 0xd9, 0xec, 0xb6, 0xf5, 0xdb, - 0xec, 0xb6, 0xf5, 0xd9, 0xec, 0xb6, 0xf5, 0xdb, 0xec, 0xb6, 0xf6, 0xd9, - 0xec, 0xb6, 0xf6, 0xdb, 0xec, 0xb6, 0xf6, 0xd9, 0xec, 0xb6, 0xf6, 0xdb, - 0xec, 0xb6, 0xf7, 0xd9, 0xec, 0xb6, 0xf7, 0xdb, 0xec, 0xb6, 0xf7, 0xd9, - 0xec, 0xb6, 0xf7, 0xdb, 0xec, 0xb6, 0xf8, 0xd9, 0xec, 0xb6, 0xf8, 0xd8, - 0xec, 0xb6, 0xf8, 0xd9, 0xec, 0xb6, 0xf8, 0xd8, 0xec, 0xb6, 0xf8, 0xd9, - 0xec, 0xb6, 0xf9, 0xd8, 0xec, 0xb6, 0xf9, 0xd9, 0xec, 0xb6, 0xf9, 0xd8, - 0xec, 0xb6, 0xf9, 0xd9, 0xec, 0xb6, 0xfa, 0xd8, 0xec, 0xb6, 0xfa, 0xd9, - 0xec, 0xb6, 0xfa, 0xd8, 0xec, 0xb6, 0xfa, 0xd9, 0xec, 0xb6, 0xfa, 0xd8, - 0xec, 0xb6, 0xfb, 0xd9, 0xec, 0xb6, 0xfb, 0xd8, 0xec, 0xb6, 0xfb, 0xd9, - 0xec, 0xb6, 0xfb, 0xd8, 0xec, 0xb6, 0xfc, 0xd9, 0xec, 0xb6, 0xfc, 0xd8, - 0xec, 0xb6, 0xfc, 0xd8, 0xec, 0xb6, 0xfc, 0xd8, 0xec, 0xb6, 0xfc, 0xd8, - 0xec, 0xb6, 0xfd, 0xd8, 0xec, 0xb6, 0xfd, 0xd8, 0xec, 0xb6, 0xfd, 0xd8, - 0xec, 0xb6, 0xfd, 0xd8, 0xec, 0xb6, 0xfe, 0xd8, 0xec, 0xb6, 0xfe, 0xd8, - 0xec, 0xb6, 0xfe, 0xd8, 0xec, 0xb6, 0xfe, 0xd8, 0xec, 0xb6, 0xfe, 0xc7, - 0xf7, 0xb6, 0xff, 0xd8, 0xec, 0xb6, 0xff, 0xc7, 0xf7, 0xb6, 0x03, 0xdf, - 0x89, 0xb6, 0x0a, 0xe1, 0x89, 0xb6, 0x0f, 0xdf, 0x89, 0xb6, 0x14, 0xe1, - 0x89, 0xb6, 0x17, 0xdf, 0x89, 0xb6, 0x1b, 0xe1, 0x89, 0xb6, 0x1e, 0xdf, - 0x89, 0xb6, 0x20, 0xe1, 0x89, 0xb6, 0x23, 0xdf, 0x89, 0xb6, 0x25, 0xe1, - 0x89, 0xb6, 0x27, 0xdf, 0x89, 0xb6, 0x29, 0xe1, 0x89, 0xb6, 0x2b, 0xdf, - 0x89, 0xb6, 0x2d, 0xe1, 0x89, 0xb6, 0x2f, 0xdf, 0x89, 0xb6, 0x31, 0xe1, - 0x89, 0xb6, 0x32, 0xdf, 0x89, 0xb6, 0x34, 0xe1, 0x89, 0xb6, 0x35, 0xdf, - 0x89, 0xb6, 0x37, 0xe1, 0x89, 0xb6, 0x38, 0xdf, 0x89, 0xb6, 0x3a, 0xe1, - 0x89, 0xb6, 0x3b, 0xdf, 0x89, 0xb6, 0x3c, 0xe1, 0x89, 0xb6, 0x3e, 0xdf, - 0x89, 0xb6, 0x3f, 0xe1, 0x89, 0xb6, 0x40, 0xdf, 0x89, 0xb6, 0x42, 0xe1, - 0x89, 0xb6, 0x43, 0xdf, 0x89, 0xb6, 0x44, 0xe1, 0x89, 0xb6, 0x45, 0xdf, - 0x89, 0xb6, 0x46, 0xe1, 0x89, 0xb6, 0x47, 0xdf, 0x89, 0xb6, 0x48, 0xe1, - 0x89, 0xb6, 0x49, 0xdf, 0x89, 0xb6, 0x4a, 0xe1, 0x89, 0xb6, 0x4b, 0xdf, - 0x89, 0xb6, 0x4c, 0xe1, 0x89, 0xb6, 0x4d, 0xdf, 0x89, 0xb6, 0x4e, 0xdf, - 0x89, 0xb6, 0x4f, 0xdf, 0x89, 0xb6, 0x50, 0xdf, 0x89, 0xb6, 0x51, 0xdf, - 0x89, 0xb6, 0x52, 0xdf, 0x89, 0xb6, 0x53, 0xdf, 0x89, 0xb6, 0x54, 0xdf, - 0x89, 0xb6, 0x55, 0xdf, 0x89, 0xb6, 0x56, 0xdf, 0x89, 0xb6, 0x57, 0xdf, - 0x89, 0xb6, 0x58, 0xdf, 0x89, 0xb6, 0x58, 0xdf, 0x89, 0xb6, 0x59, 0xdf, - 0x89, 0xb6, 0x5a, 0xdf, 0x89, 0xb6, 0x5b, 0xdf, 0x89, 0xb6, 0x5c, 0xdf, - 0x89, 0xb6, 0x5d, 0xdf, 0x89, 0xb6, 0x5d, 0xdf, 0x89, 0xb6, 0x5e, 0xdf, - 0x89, 0xb6, 0x5f, 0xdf, 0x89, 0xb6, 0x60, 0xdf, 0x89, 0xb6, 0x60, 0xdf, - 0x89, 0xb6, 0x61, 0xdf, 0x89, 0xb6, 0x62, 0xdf, 0x89, 0xb6, 0x63, 0xdf, - 0x89, 0xb6, 0x63, 0xdf, 0x89, 0xb6, 0x64, 0xdf, 0x89, 0xb6, 0x65, 0xdf, - 0x89, 0xb6, 0x66, 0xdf, 0x89, 0xb6, 0x66, 0xdf, 0x89, 0xb6, 0x67, 0xdf, - 0x89, 0xb6, 0x68, 0xdf, 0x89, 0xb6, 0x68, 0xdf, 0x89, 0xb6, 0x69, 0xdf, - 0x89, 0xb6, 0x6a, 0xdf, 0x89, 0xb6, 0x6a, 0xdf, 0x89, 0xb6, 0x6b, 0xdd, - 0x8a, 0xb6, 0x6c, 0xdf, 0x89, 0xb6, 0x6c, 0xdd, 0x8a, 0xb6, 0x6d, 0xdf, - 0x89, 0xb6, 0x6e, 0xdd, 0x8a, 0xb6, 0x6e, 0xdf, 0x89, 0xb6, 0x6f, 0xdd, - 0x8a, 0xb6, 0x70, 0xdf, 0x89, 0xb6, 0x70, 0xdd, 0x8a, 0xb6, 0x71, 0xdf, - 0x89, 0xb6, 0x72, 0xdd, 0x8a, 0xb6, 0x72, 0xdf, 0x89, 0xb6, 0x73, 0xdd, - 0x8a, 0xb6, 0x73, 0xdf, 0x89, 0xb6, 0x74, 0xdd, 0x8a, 0xb6, 0x75, 0xdf, - 0x89, 0xb6, 0x75, 0xdd, 0x8a, 0xb6, 0x76, 0xdf, 0x89, 0xb6, 0x76, 0xdd, - 0x8a, 0xb6, 0x77, 0xdc, 0x8a, 0xb6, 0x78, 0xdd, 0x8a, 0xb6, 0x78, 0xdc, - 0x8a, 0xb6, 0x79, 0xdd, 0x8a, 0xb6, 0x79, 0xdc, 0x8a, 0xb6, 0x7a, 0xdd, - 0x8a, 0xb6, 0x7a, 0xdc, 0x8a, 0xb6, 0x7b, 0xdd, 0x8a, 0xb6, 0x7c, 0xdc, - 0x8a, 0xb6, 0x7c, 0xdd, 0x8a, 0xb6, 0x7d, 0xdc, 0x8a, 0xb6, 0x7d, 0xdd, - 0x8a, 0xb6, 0x7e, 0xdc, 0x8a, 0xb6, 0x7e, 0xdd, 0x8a, 0xb6, 0x7f, 0xdc, - 0x8a, 0xb6, 0x7f, 0xdd, 0x8a, 0xb6, 0x80, 0xdc, 0x8a, 0xb6, 0x81, 0xdd, - 0x8a, 0xb6, 0x81, 0xdc, 0x8a, 0xb6, 0x82, 0xdd, 0x8a, 0xb6, 0x82, 0xdc, - 0x8a, 0xb6, 0x83, 0xdd, 0x8a, 0xb6, 0x83, 0xdc, 0x8a, 0xb6, 0x84, 0xdd, - 0x8a, 0xb6, 0x84, 0xdc, 0x8a, 0xb6, 0x85, 0xdd, 0x8a, 0xb6, 0x85, 0xdc, - 0x8a, 0xb6, 0x86, 0xdd, 0x8a, 0xb6, 0x86, 0xdc, 0x8a, 0xb6, 0x87, 0xdc, - 0x8b, 0xb6, 0x87, 0xdc, 0x8a, 0xb6, 0x88, 0xdc, 0x8b, 0xb6, 0x88, 0xdc, - 0x8a, 0xb6, 0x89, 0xdc, 0x8b, 0xb6, 0x89, 0xdc, 0x8a, 0xb6, 0x8a, 0xdc, - 0x8b, 0xb6, 0x8a, 0xdc, 0x8a, 0xb5, 0x8a, 0xdc, 0x8b, 0xb6, 0x8a, 0xdc, - 0x8b, 0xb5, 0x8a, 0xdc, 0x8c, 0xb6, 0x8a, 0xdc, 0x8c, 0xb5, 0x8a, 0xdc, - 0x8d, 0xb6, 0x8a, 0xdc, 0x8d, 0xb5, 0x8a, 0xdc, 0x8e, 0xb6, 0x8a, 0xdc, - 0x8e, 0xb5, 0x8a, 0xdc, 0x8e, 0xb6, 0x8a, 0xdc, 0x8f, 0xb5, 0x8a, 0xdc, - 0x8f, 0xb6, 0x8a, 0xdc, 0x90, 0xb5, 0x8a, 0xdc, 0x90, 0xb6, 0x8a, 0xdc, - 0x91, 0xb5, 0x8a, 0xdc, 0x91, 0xb6, 0x8a, 0xdc, 0x92, 0xb5, 0x8a, 0xdc, - 0x92, 0xb6, 0x8a, 0xdc, 0x93, 0xb5, 0x8a, 0xdc, 0x93, 0xb6, 0x8a, 0xdc, - 0x94, 0xb5, 0x8a, 0xdc, 0x94, 0xb6, 0x8a, 0xdc, 0x94, 0xb5, 0x8a, 0xdc, - 0x95, 0xb6, 0x8a, 0xdc, 0x95, 0xb5, 0x8b, 0xdc, 0x96, 0xb1, 0x8a, 0xdc, - 0x96, 0xb5, 0x8b, 0xdc, 0x97, 0xb1, 0x8a, 0xdc, 0x97, 0xb5, 0x8b, 0xdc, - 0x98, 0xb1, 0x8a, 0xdc, 0x98, 0xb5, 0x8b, 0xdc, 0x98, 0xb1, 0x8a, 0xdc, - 0x99, 0xb5, 0x8b, 0xdc, 0x99, 0xb1, 0x8a, 0xdc, 0x9a, 0xb5, 0x8b, 0xdc, - 0x9a, 0xb1, 0x8a, 0xdc, 0x9a, 0xb5, 0x8b, 0xdc, 0x9b, 0xb1, 0x8a, 0xdc, - 0x9b, 0xb5, 0x8b, 0xdc, 0x9c, 0xb1, 0x8a, 0xdc, 0x9c, 0xb5, 0x8b, 0xdc, - 0x9d, 0xb1, 0x8a, 0xdc, 0x9d, 0xb5, 0x8b, 0xdc, 0x9d, 0xb1, 0x8a, 0xdc, - 0x9e, 0xb5, 0x8b, 0xdc, 0x9e, 0xb1, 0x8a, 0xdc, 0x9f, 0xb5, 0x8b, 0xdc, - 0x9f, 0xb1, 0x8a, 0xdc, 0x9f, 0xb5, 0x8b, 0xdc, 0xa0, 0xb1, 0x8a, 0xdc, - 0xa0, 0xb5, 0x8b, 0xdc, 0xa1, 0xb1, 0x8a, 0xdc, 0xa1, 0xb5, 0x8b, 0xdc, - 0xa1, 0xb1, 0x8a, 0xdc, 0xa2, 0xb5, 0x8b, 0xdc, 0xa2, 0xb1, 0x8a, 0xdc, - 0xa3, 0xb5, 0x8b, 0xdc, 0xa3, 0xb1, 0x8a, 0xdc, 0xa3, 0xb5, 0x8b, 0xdc, - 0xa4, 0xb1, 0x8a, 0xdc, 0xa4, 0xb5, 0x8b, 0xdc, 0xa5, 0xb1, 0x8a, 0xdc, - 0xa5, 0xb5, 0xa3, 0xdc, 0xa5, 0x97, 0xa3, 0xdc, 0xa6, 0x97, 0xa3, 0xdc, - 0xa6, 0x97, 0xa3, 0xdc, 0xa6, 0x97, 0xa3, 0xdc, 0xa7, 0x97, 0xa3, 0xdc, - 0xa7, 0x97, 0xa3, 0xdc, 0xa8, 0x97, 0xa3, 0xdc, 0xa8, 0x97, 0xa3, 0xdc, - 0xa8, 0x97, 0xa3, 0xdc, 0xa9, 0x97, 0xa3, 0xdc, 0xa9, 0x97, 0xa3, 0xdc, - 0xaa, 0x97, 0xa3, 0xdc, 0xaa, 0x97, 0xa3, 0xdc, 0xaa, 0x97, 0xa3, 0xdc, - 0xab, 0x97, 0xa3, 0xdc, 0xab, 0x97, 0xa3, 0xdc, 0xab, 0x97, 0xa3, 0xdc, - 0xac, 0x97, 0xa3, 0xdc, 0xac, 0x97, 0xa3, 0xdc, 0xac, 0x97, 0xa3, 0xdc, - 0xad, 0x97, 0xa3, 0xdc, 0xad, 0x97, 0xa3, 0xdc, 0xae, 0x97, 0xa3, 0xdc, - 0xae, 0x97, 0xa3, 0xdc, 0xae, 0x97, 0xa3, 0xdc, 0xaf, 0x97, 0xa3, 0xdc, - 0xaf, 0x97, 0xa3, 0xdc, 0xaf, 0x97, 0xa3, 0xdc, 0xb0, 0x97, 0xa3, 0xdc, - 0xb0, 0x97, 0xa3, 0xdc, 0xb0, 0x97, 0xa3, 0xdc, 0xb1, 0x97, 0xa3, 0xdc, - 0xb1, 0x97, 0xa3, 0xdc, 0xb2, 0x97, 0xa3, 0xdc, 0xb2, 0x97, 0xa3, 0xdc, - 0xb2, 0x97, 0xa3, 0xdc, 0xb3, 0x97, 0xa3, 0xdc, 0xb3, 0x97, 0xa3, 0xdc, - 0xb3, 0x97, 0xa3, 0xdc, 0xb4, 0x97, 0xa3, 0xdc, 0xb4, 0x97, 0xa3, 0xdc, - 0xb4, 0x97, 0xa3, 0xdc, 0xb5, 0x97, 0xa3, 0xdc, 0xb5, 0x97, 0xa3, 0xdc, - 0xb5, 0x97, 0xa3, 0xdc, 0xb6, 0x97, 0xa3, 0xdc, 0xb6, 0x97, 0xa3, 0xdc, - 0xb6, 0x97, 0xd0, 0xdc, 0xb7, 0xbd, 0xd0, 0xdc, 0xb7, 0xba, 0xd0, 0xdc, - 0xb7, 0xbd, 0xd0, 0xdc, 0xb8, 0xba, 0xd0, 0xdc, 0xb8, 0xbd, 0xd0, 0xdc, - 0xb8, 0xba, 0xd0, 0xdc, 0xb9, 0xbd, 0xd0, 0xdc, 0xb9, 0xba, 0xd0, 0xdc, - 0xb9, 0xbd, 0xd0, 0xdc, 0xba, 0xba, 0xd0, 0xdc, 0xba, 0xbd, 0xd0, 0xdc, - 0xba, 0xba, 0xd0, 0xdc, 0xbb, 0xbd, 0xd0, 0xdc, 0xbb, 0xba, 0xd0, 0xdc, - 0xbb, 0xbd, 0xd0, 0xdc, 0xbc, 0xba, 0xd0, 0xdc, 0xbc, 0xbd, 0xd0, 0xdc, - 0xbc, 0xba, 0xd0, 0xdc, 0xbd, 0xbd, 0xd0, 0xdc, 0xbd, 0xba, 0xd0, 0xdc, - 0xbd, 0xbd, 0xd0, 0xdc, 0xbe, 0xba, 0xd0, 0xdc, 0xbe, 0xbd, 0xd0, 0xdc, - 0xbe, 0xba, 0xd0, 0xdc, 0xbf, 0xbd, 0xd0, 0xdc, 0xbf, 0xba, 0xd0, 0xdc, - 0xbf, 0xbd, 0xd0, 0xdc, 0xc0, 0xba, 0xd0, 0xdc, 0xc0, 0xbd, 0xd0, 0xdc, - 0xc0, 0xba, 0xd0, 0xdc, 0xc1, 0xbd, 0xd0, 0xdc, 0xc1, 0xba, 0xd0, 0xdc, - 0xc1, 0xbd, 0xd0, 0xdc, 0xc1, 0xba, 0xd0, 0xdc, 0xc2, 0xbd, 0xd0, 0xdc, - 0xc2, 0xba, 0xd0, 0xdc, 0xc2, 0xbd, 0xd0, 0xdc, 0xc3, 0xba, 0xd0, 0xdc, - 0xc3, 0xb8, 0xd0, 0xdc, 0xc3, 0xba, 0xd0, 0xdc, 0xc4, 0xb8, 0xd0, 0xdc, - 0xc4, 0xba, 0xd0, 0xdc, 0xc4, 0xb8, 0xd0, 0xdc, 0xc5, 0xba, 0xd0, 0xdc, - 0xc5, 0xb8, 0xd0, 0xdc, 0xc5, 0xba, 0xd0, 0xdc, 0xc6, 0xb8, 0xd0, 0xdc, - 0xc6, 0xba, 0xd0, 0xdc, 0xc6, 0xb8, 0xd0, 0xdc, 0xc6, 0xba, 0xd0, 0xdc, - 0xc7, 0xb8, 0xd0, 0xdc, 0xc7, 0xba, 0xd0, 0xdc, 0xc7, 0xb8, 0xd0, 0xdc, - 0xc8, 0xba, 0xd0, 0xdc, 0xc8, 0xb8, 0xd0, 0xdc, 0xc8, 0xba, 0xd0, 0xdc, - 0xc9, 0xb8, 0xd0, 0xdc, 0xc9, 0xba, 0xd0, 0xdc, 0xc9, 0xb8, 0xd0, 0xdc, - 0xc9, 0xba, 0xd0, 0xdc, 0xca, 0xb8, 0xd0, 0xdc, 0xca, 0xba, 0xd0, 0xdc, - 0xca, 0xb8, 0xd0, 0xdc, 0xcb, 0xba, 0xd0, 0xdc, 0xcb, 0xb8, 0xd0, 0xdc, - 0xcb, 0xba, 0xd0, 0xdc, 0xcc, 0xb8, 0xd0, 0xdc, 0xcc, 0xb6, 0xd0, 0xdc, - 0xcc, 0xb8, 0xd0, 0xdc, 0xcc, 0xb6, 0xd0, 0xdc, 0xcd, 0xb8, 0xd0, 0xdc, - 0xcd, 0xb6, 0xd0, 0xdc, 0xcd, 0xb8, 0xd0, 0xdc, 0xce, 0xb6, 0xd0, 0xdc, - 0xce, 0xb8, 0xd0, 0xdc, 0xce, 0xb6, 0xd0, 0xdc, 0xce, 0xb8, 0xd0, 0xdc, - 0xcf, 0xb6, 0xd0, 0xdc, 0xcf, 0xb8, 0xd0, 0xdc, 0xcf, 0xb6, 0xd1, 0xdc, - 0xd0, 0xb6, 0xd0, 0xdc, 0xd0, 0xb6, 0xd1, 0xdc, 0xd0, 0xb6, 0xd0, 0xdc, - 0xd0, 0xb6, 0xd1, 0xdc, 0xd0, 0xb6, 0xd1, 0xdc, 0xd0, 0xb6, 0xd1, 0xdc, - 0xd0, 0xb6, 0xd2, 0xdb, 0xd0, 0xb6, 0xd2, 0xdc, 0xd0, 0xb6, 0xd2, 0xdb, - 0xd0, 0xb6, 0xd2, 0xdc, 0xd0, 0xb6, 0xd3, 0xdb, 0xd0, 0xb6, 0xd3, 0xdc, - 0xd0, 0xb6, 0xd3, 0xdb, 0xd0, 0xb6, 0xd4, 0xdc, 0xd0, 0xb6, 0xd4, 0xdb, - 0xd0, 0xb6, 0xd4, 0xdc, 0xd0, 0xb6, 0xd4, 0xdb, 0xd0, 0xb6, 0xd5, 0xdc, - 0xd0, 0xb6, 0xd5, 0xdb, 0xd0, 0xb6, 0xd5, 0xdc, 0xd0, 0xb6, 0xd6, 0xdb, - 0xd0, 0xb6, 0xd6, 0xdc, 0xd0, 0xb6, 0xd6, 0xdb, 0xd0, 0xb6, 0xd6, 0xdc, - 0xd0, 0xb6, 0xd7, 0xdb, 0xd0, 0xb6, 0xd7, 0xdc, 0xd0, 0xb6, 0xd7, 0xdb, - 0xd0, 0xb6, 0xd7, 0xd9, 0xd1, 0xb6, 0xd8, 0xdb, 0xd0, 0xb6, 0xd8, 0xd9, - 0xd1, 0xb6, 0xd8, 0xdb, 0xd0, 0xb6, 0xd9, 0xd9, 0xd1, 0xb6, 0xd9, 0xdb, - 0xd0, 0xb6, 0xd9, 0xd9, 0xd1, 0xb6, 0xd9, 0xdb, 0xd0, 0xb6, 0xda, 0xd9, - 0xd1, 0xb6, 0xda, 0xdb, 0xd0, 0xb6, 0xda, 0xd9, 0xd1, 0xb6, 0xda, 0xdb, - 0xd0, 0xb6, 0xdb, 0xd9, 0xd1, 0xb6, 0xdb, 0xdb, 0xd0, 0xb6, 0xdb, 0xd9, - 0xd1, 0xb6, 0xdb, 0xdb, 0xd0, 0xb6, 0xdc, 0xd9, 0xd1, 0xb6, 0xdc, 0xdb, - 0xd0, 0xb6, 0xdc, 0xd9, 0xd1, 0xb6, 0xdd, 0xdb, 0xd0, 0xb6, 0xdd, 0xd9, - 0xd1, 0xb6, 0xdd, 0xdd, 0xe8, 0xb6, 0xdd, 0xdf, 0xe8, 0xb6, 0xde, 0xdd, - 0xe8, 0xb6, 0xde, 0xdf, 0xe8, 0xb6, 0xde, 0xdd, 0xe8, 0xb6, 0xde, 0xdf, - 0xe8, 0xb6, 0xdf, 0xdd, 0xe8, 0xb6, 0xdf, 0xdf, 0xe8, 0xb6, 0xdf, 0xdd, - 0xe8, 0xb6, 0xdf, 0xdc, 0xe9, 0xb6, 0xe0, 0xdd, 0xe8, 0xb6, 0xe0, 0xdc, - 0xe9, 0xb6, 0xe0, 0xdd, 0xe8, 0xb6, 0xe1, 0xdc, 0xe9, 0xb6, 0xe1, 0xdd, - 0xe8, 0xb6, 0xe1, 0xdc, 0xe9, 0xb6, 0xe1, 0xdd, 0xe8, 0xb6, 0xe2, 0xdc, - 0xe9, 0xb6, 0xe2, 0xdd, 0xe8, 0xb6, 0xe2, 0xdc, 0xe9, 0xb6, 0xe2, 0xdd, - 0xe8, 0xb6, 0xe3, 0xdc, 0xe9, 0xb6, 0xe3, 0xdd, 0xe8, 0xb6, 0xe3, 0xdc, - 0xe9, 0xb6, 0xe3, 0xdd, 0xe8, 0xb6, 0xe4, 0xdc, 0xe9, 0xb6, 0xe4, 0xdd, - 0xe8, 0xb6, 0xe4, 0xdc, 0xe9, 0xb6, 0xe4, 0xdd, 0xe8, 0xb6, 0xe5, 0xdc, - 0xe9, 0xb6, 0xe5, 0xdd, 0xe8, 0xb6, 0xe5, 0xdc, 0xe9, 0xb6, 0xe5, 0xdd, - 0xe8, 0xb6, 0xe6, 0xdc, 0xe9, 0xb6, 0xe6, 0xdd, 0xe8, 0xb6, 0xe6, 0xdc, - 0xe9, 0xb6, 0xe6, 0xdd, 0xe8, 0xb6, 0xe7, 0xdc, 0xe9, 0xb6, 0xe7, 0xdc, - 0xe9, 0xb6, 0xe7, 0xdc, 0xe9, 0xb6, 0xe7, 0xdc, 0xe9, 0xb6, 0xe8, 0xdc, - 0xe9, 0xb6, 0xe8, 0xdc, 0xe9, 0xb6, 0xe8, 0xdc, 0xe9, 0xb6, 0xe8, 0xdc, - 0xe9, 0xb6, 0xe9, 0xdc, 0xe9, 0xb6, 0xe8, 0xdc, 0xe9, 0xb6, 0xe9, 0xdc, - 0xe9, 0xb6, 0xe8, 0xdc, 0xe9, 0xb6, 0xe9, 0xdc, 0xea, 0xb6, 0xe8, 0xdc, - 0xea, 0xb6, 0xe9, 0xdc, 0xea, 0xb6, 0xe8, 0xdc, 0xea, 0xb6, 0xec, 0xdc, - 0xeb, 0xb7, 0xec, 0xdc, 0xeb, 0xb6, 0xec, 0xdc, 0xeb, 0xb7, 0xec, 0xdc, - 0xeb, 0xb6, 0xec, 0xdc, 0xec, 0xb7, 0xec, 0xdc, 0xec, 0xb6, 0xec, 0xdc, - 0xec, 0xb6, 0xec, 0xdc, 0xec, 0xb6, 0xec, 0xdc, 0xec, 0xb6, 0xed, 0xdc, - 0xec, 0xb6, 0xed, 0xdc, 0xec, 0xb6, 0xed, 0xdc, 0xec, 0xb6, 0xed, 0xdc, - 0xec, 0xb6, 0xee, 0xdc, 0xec, 0xb6, 0xee, 0xdc, 0xec, 0xb6, 0xee, 0xdc, - 0xec, 0xb6, 0xee, 0xdc, 0xec, 0xb6, 0xef, 0xdc, 0xec, 0xb6, 0xef, 0xdc, - 0xec, 0xb6, 0xef, 0xdc, 0xec, 0xb6, 0xef, 0xdc, 0xec, 0xb6, 0xf0, 0xdc, - 0xec, 0xb6, 0xf0, 0xdc, 0xec, 0xb6, 0xf0, 0xda, 0xec, 0xb6, 0xf0, 0xdc, - 0xec, 0xb6, 0xf1, 0xda, 0xec, 0xb6, 0xf1, 0xdc, 0xec, 0xb6, 0xf1, 0xda, - 0xec, 0xb6, 0xf1, 0xdc, 0xec, 0xb6, 0xf2, 0xda, 0xec, 0xb6, 0xf2, 0xdc, - 0xec, 0xb6, 0xf2, 0xda, 0xec, 0xb6, 0xf2, 0xdc, 0xec, 0xb6, 0xf2, 0xda, - 0xec, 0xb6, 0xf3, 0xdc, 0xec, 0xb6, 0xf3, 0xda, 0xec, 0xb6, 0xf3, 0xdc, - 0xec, 0xb6, 0xf3, 0xda, 0xec, 0xb6, 0xf4, 0xdc, 0xec, 0xb6, 0xf4, 0xda, - 0xec, 0xb6, 0xf4, 0xdc, 0xec, 0xb6, 0xf4, 0xda, 0xec, 0xb6, 0xf5, 0xdc, - 0xec, 0xb6, 0xf5, 0xda, 0xec, 0xb6, 0xf5, 0xdc, 0xec, 0xb6, 0xf5, 0xda, - 0xec, 0xb6, 0xf5, 0xdc, 0xec, 0xb6, 0xf6, 0xda, 0xec, 0xb6, 0xf6, 0xdc, - 0xec, 0xb6, 0xf6, 0xda, 0xec, 0xb6, 0xf6, 0xdc, 0xec, 0xb6, 0xf7, 0xda, - 0xec, 0xb6, 0xf7, 0xdc, 0xec, 0xb6, 0xf7, 0xda, 0xec, 0xb6, 0xf7, 0xdc, - 0xec, 0xb6, 0xf8, 0xda, 0xec, 0xb6, 0xf8, 0xdc, 0xec, 0xb6, 0xf8, 0xda, - 0xec, 0xb6, 0xf8, 0xdc, 0xec, 0xb6, 0xf8, 0xda, 0xec, 0xb6, 0xf9, 0xdc, - 0xec, 0xb6, 0xf9, 0xda, 0xec, 0xb6, 0xf9, 0xdc, 0xec, 0xb6, 0xf9, 0xda, - 0xec, 0xb6, 0xfa, 0xdc, 0xec, 0xb6, 0xfa, 0xda, 0xec, 0xb6, 0xfa, 0xdc, - 0xec, 0xb6, 0xfa, 0xda, 0xec, 0xb6, 0xfa, 0xdc, 0xec, 0xb6, 0xfb, 0xda, - 0xec, 0xb6, 0xfb, 0xdc, 0xec, 0xb6, 0xfb, 0xda, 0xec, 0xb6, 0xfb, 0xd7, - 0xec, 0xb6, 0xfc, 0xda, 0xec, 0xb6, 0xfc, 0xd7, 0xec, 0xb6, 0xfc, 0xda, - 0xec, 0xb6, 0xfc, 0xd7, 0xec, 0xb6, 0xfc, 0xda, 0xec, 0xb6, 0xfd, 0xd7, - 0xec, 0xb6, 0xfd, 0xda, 0xec, 0xb6, 0xfd, 0xd7, 0xec, 0xb6, 0xfd, 0xda, - 0xec, 0xb6, 0xfe, 0xd7, 0xec, 0xb6, 0xfe, 0xda, 0xec, 0xb6, 0xfe, 0xd7, - 0xec, 0xb6, 0xfe, 0xda, 0xec, 0xb6, 0xfe, 0xd7, 0xec, 0xb6, 0xff, 0xda, - 0xec, 0xb6, 0xff, 0xc7, 0xf7, 0xb6, 0x03, 0xe2, 0x88, 0xb7, 0x0a, 0xe1, - 0x89, 0xb7, 0x0f, 0xe2, 0x88, 0xb7, 0x14, 0xe1, 0x89, 0xb7, 0x17, 0xe2, - 0x88, 0xb7, 0x1b, 0xe1, 0x89, 0xb7, 0x1e, 0xe2, 0x88, 0xb7, 0x20, 0xe1, - 0x89, 0xb7, 0x23, 0xe2, 0x88, 0xb7, 0x25, 0xe1, 0x89, 0xb7, 0x27, 0xe2, - 0x88, 0xb7, 0x29, 0xe1, 0x89, 0xb7, 0x2b, 0xe2, 0x88, 0xb7, 0x2d, 0xe1, - 0x89, 0xb7, 0x2f, 0xe2, 0x88, 0xb7, 0x31, 0xe1, 0x89, 0xb7, 0x32, 0xe2, - 0x88, 0xb7, 0x34, 0xe1, 0x89, 0xb7, 0x35, 0xe2, 0x88, 0xb7, 0x37, 0xe1, - 0x89, 0xb7, 0x38, 0xdf, 0x89, 0xb7, 0x3a, 0xe1, 0x89, 0xb7, 0x3b, 0xdf, - 0x89, 0xb7, 0x3c, 0xe1, 0x89, 0xb7, 0x3e, 0xdf, 0x89, 0xb7, 0x3f, 0xe1, - 0x89, 0xb7, 0x40, 0xdf, 0x89, 0xb7, 0x42, 0xe1, 0x89, 0xb7, 0x43, 0xdf, - 0x89, 0xb7, 0x44, 0xe1, 0x89, 0xb7, 0x45, 0xdf, 0x89, 0xb7, 0x46, 0xe1, - 0x89, 0xb7, 0x47, 0xdf, 0x89, 0xb7, 0x48, 0xe1, 0x89, 0xb7, 0x49, 0xdf, - 0x89, 0xb7, 0x4a, 0xe1, 0x89, 0xb7, 0x4b, 0xdf, 0x89, 0xb7, 0x4c, 0xe1, - 0x89, 0xb7, 0x4d, 0xdf, 0x89, 0xb7, 0x4e, 0xdf, 0x89, 0xb7, 0x4f, 0xdf, - 0x89, 0xb7, 0x50, 0xdf, 0x89, 0xb7, 0x51, 0xdf, 0x89, 0xb7, 0x52, 0xdf, - 0x89, 0xb7, 0x53, 0xdf, 0x89, 0xb7, 0x54, 0xdf, 0x89, 0xb7, 0x55, 0xdf, - 0x89, 0xb7, 0x56, 0xdf, 0x89, 0xb7, 0x57, 0xdf, 0x89, 0xb7, 0x58, 0xdf, - 0x89, 0xb7, 0x58, 0xdf, 0x89, 0xb7, 0x59, 0xdf, 0x89, 0xb7, 0x5a, 0xdf, - 0x89, 0xb7, 0x5b, 0xdf, 0x89, 0xb7, 0x5c, 0xdf, 0x89, 0xb7, 0x5d, 0xdf, - 0x89, 0xb7, 0x5d, 0xdf, 0x89, 0xb7, 0x5e, 0xdf, 0x89, 0xb7, 0x5f, 0xdf, - 0x89, 0xb7, 0x60, 0xdf, 0x89, 0xb7, 0x60, 0xdf, 0x89, 0xb7, 0x61, 0xdf, - 0x89, 0xb7, 0x62, 0xdf, 0x89, 0xb7, 0x63, 0xdf, 0x89, 0xb7, 0x63, 0xdf, - 0x89, 0xb7, 0x64, 0xdd, 0x8a, 0xb7, 0x65, 0xdf, 0x89, 0xb7, 0x66, 0xdd, - 0x8a, 0xb7, 0x66, 0xdf, 0x89, 0xb7, 0x67, 0xdd, 0x8a, 0xb7, 0x68, 0xdf, - 0x89, 0xb7, 0x68, 0xdd, 0x8a, 0xb7, 0x69, 0xdf, 0x89, 0xb7, 0x6a, 0xdd, - 0x8a, 0xb7, 0x6a, 0xdf, 0x89, 0xb7, 0x6b, 0xdd, 0x8a, 0xb7, 0x6c, 0xdf, - 0x89, 0xb7, 0x6c, 0xdd, 0x8a, 0xb7, 0x6d, 0xdf, 0x89, 0xb7, 0x6e, 0xdd, - 0x8a, 0xb7, 0x6e, 0xdf, 0x89, 0xb7, 0x6f, 0xdd, 0x8a, 0xb7, 0x70, 0xdf, - 0x89, 0xb7, 0x70, 0xdd, 0x8a, 0xb7, 0x71, 0xdf, 0x89, 0xb7, 0x72, 0xdd, - 0x8a, 0xb7, 0x72, 0xdf, 0x89, 0xb7, 0x73, 0xdd, 0x8a, 0xb7, 0x73, 0xdf, - 0x89, 0xb7, 0x74, 0xdd, 0x8a, 0xb7, 0x75, 0xdf, 0x89, 0xb7, 0x75, 0xdd, - 0x8a, 0xb7, 0x76, 0xdf, 0x89, 0xb7, 0x76, 0xdd, 0x8a, 0xb7, 0x77, 0xdc, - 0x8a, 0xb7, 0x78, 0xdd, 0x8a, 0xb7, 0x78, 0xdc, 0x8a, 0xb7, 0x79, 0xdd, - 0x8a, 0xb7, 0x79, 0xdc, 0x8a, 0xb7, 0x7a, 0xdd, 0x8a, 0xb7, 0x7a, 0xdc, - 0x8a, 0xb7, 0x7b, 0xdd, 0x8a, 0xb7, 0x7c, 0xdc, 0x8a, 0xb7, 0x7c, 0xdd, - 0x8a, 0xb7, 0x7d, 0xdc, 0x8a, 0xb7, 0x7d, 0xdd, 0x8a, 0xb7, 0x7e, 0xdc, - 0x8a, 0xb7, 0x7e, 0xdd, 0x8a, 0xb7, 0x7f, 0xdc, 0x8a, 0xb7, 0x7f, 0xdd, - 0x8a, 0xb7, 0x80, 0xdc, 0x8a, 0xb7, 0x81, 0xdd, 0x8a, 0xb7, 0x81, 0xdc, - 0x8a, 0xb7, 0x82, 0xdd, 0x8a, 0xb7, 0x82, 0xdc, 0x8a, 0xb7, 0x83, 0xdd, - 0x8a, 0xb7, 0x83, 0xdc, 0x8a, 0xb7, 0x84, 0xdd, 0x8a, 0xb7, 0x84, 0xdc, - 0x8a, 0xb7, 0x85, 0xdd, 0x8a, 0xb7, 0x85, 0xdc, 0x8a, 0xb7, 0x86, 0xdd, - 0x8a, 0xb7, 0x86, 0xdc, 0x8a, 0xb7, 0x87, 0xdd, 0x8a, 0xb7, 0x87, 0xdc, - 0x8a, 0xb7, 0x88, 0xdd, 0x8a, 0xb7, 0x88, 0xdc, 0x8a, 0xb7, 0x89, 0xdc, - 0x8b, 0xb7, 0x89, 0xdc, 0x8a, 0xb7, 0x8a, 0xdc, 0x8b, 0xb7, 0x89, 0xdc, - 0x8a, 0xb7, 0x8a, 0xdc, 0x8b, 0xb7, 0x89, 0xdc, 0x8b, 0xb7, 0x8a, 0xdc, - 0x8c, 0xb7, 0x8a, 0xdc, 0x8c, 0xb5, 0x8a, 0xdc, 0x8d, 0xb7, 0x8a, 0xdc, - 0x8d, 0xb5, 0x8a, 0xdc, 0x8e, 0xb7, 0x8a, 0xdc, 0x8e, 0xb5, 0x8a, 0xdc, - 0x8e, 0xb7, 0x8a, 0xdc, 0x8f, 0xb5, 0x8a, 0xdc, 0x8f, 0xb7, 0x8a, 0xdc, - 0x90, 0xb5, 0x8a, 0xdc, 0x90, 0xb7, 0x8a, 0xdc, 0x91, 0xb5, 0x8a, 0xdc, - 0x91, 0xb7, 0x8a, 0xdc, 0x92, 0xb5, 0x8a, 0xdc, 0x92, 0xb7, 0x8a, 0xdc, - 0x93, 0xb5, 0x8a, 0xdc, 0x93, 0xb7, 0x8a, 0xdc, 0x94, 0xb5, 0x8a, 0xdc, - 0x94, 0xb7, 0x8a, 0xdc, 0x94, 0xb5, 0x8a, 0xdc, 0x95, 0xb7, 0x8a, 0xdc, - 0x95, 0xb5, 0x8b, 0xdc, 0x96, 0xb2, 0x8a, 0xdc, 0x96, 0xb5, 0x8b, 0xdc, - 0x97, 0xb2, 0x8a, 0xdc, 0x97, 0xb5, 0x8b, 0xdc, 0x98, 0xb2, 0x8a, 0xdc, - 0x98, 0xb5, 0x8b, 0xdc, 0x98, 0xb2, 0x8a, 0xdc, 0x99, 0xb5, 0x8b, 0xdc, - 0x99, 0xb2, 0x8a, 0xdc, 0x9a, 0xb5, 0x8b, 0xdc, 0x9a, 0xb2, 0x8a, 0xdc, - 0x9a, 0xb5, 0x8b, 0xdc, 0x9b, 0xb2, 0x8a, 0xdc, 0x9b, 0xb5, 0x8b, 0xdc, - 0x9c, 0xb2, 0x8a, 0xdc, 0x9c, 0xb5, 0x8b, 0xdc, 0x9d, 0xb2, 0x8a, 0xdc, - 0x9d, 0xb5, 0x8b, 0xdc, 0x9d, 0xb2, 0x8a, 0xdc, 0x9e, 0xb5, 0x8b, 0xdc, - 0x9e, 0xb2, 0x8a, 0xdc, 0x9f, 0xb5, 0x8b, 0xdc, 0x9f, 0xb2, 0x8a, 0xdc, - 0x9f, 0xb5, 0x8b, 0xdc, 0xa0, 0xb2, 0x8a, 0xdc, 0xa0, 0xb5, 0x8b, 0xdc, - 0xa1, 0xb2, 0x8a, 0xdc, 0xa1, 0xb5, 0x8b, 0xdc, 0xa1, 0xb2, 0x8a, 0xdc, - 0xa2, 0xb5, 0x8b, 0xdc, 0xa2, 0xb2, 0x8a, 0xdc, 0xa3, 0xb5, 0x8b, 0xdc, - 0xa3, 0xb2, 0x8a, 0xdc, 0xa3, 0xb5, 0x8b, 0xdc, 0xa4, 0xb2, 0x8a, 0xdc, - 0xa4, 0xb5, 0x8b, 0xdc, 0xa5, 0xb2, 0x8b, 0xdc, 0xa5, 0xaf, 0xa3, 0xdc, - 0xa5, 0x98, 0x8b, 0xdc, 0xa6, 0xaf, 0xa3, 0xdc, 0xa6, 0x98, 0xa3, 0xdc, - 0xa6, 0x97, 0xa3, 0xdc, 0xa7, 0x98, 0xa3, 0xdc, 0xa7, 0x97, 0xa3, 0xdc, - 0xa8, 0x98, 0xa3, 0xdc, 0xa8, 0x97, 0xa3, 0xdc, 0xa8, 0x98, 0xa3, 0xdc, - 0xa9, 0x97, 0xa3, 0xdc, 0xa9, 0x98, 0xa3, 0xdc, 0xaa, 0x97, 0xa3, 0xdc, - 0xaa, 0x98, 0xa3, 0xdc, 0xaa, 0x97, 0xa3, 0xdc, 0xab, 0x98, 0xa3, 0xdc, - 0xab, 0x97, 0xa3, 0xdc, 0xab, 0x98, 0xa3, 0xdc, 0xac, 0x97, 0xa3, 0xdc, - 0xac, 0x98, 0xa3, 0xdc, 0xac, 0x97, 0xa3, 0xdc, 0xad, 0x98, 0xa3, 0xdc, - 0xad, 0x97, 0xa3, 0xdc, 0xae, 0x98, 0xa3, 0xdc, 0xae, 0x97, 0xa3, 0xdc, - 0xae, 0x98, 0xa3, 0xdc, 0xaf, 0x97, 0xa3, 0xdc, 0xaf, 0x98, 0xa3, 0xdc, - 0xaf, 0x97, 0xa3, 0xdc, 0xb0, 0x98, 0xa3, 0xdc, 0xb0, 0x97, 0xa3, 0xdc, - 0xb0, 0x98, 0xa3, 0xdc, 0xb1, 0x97, 0xa3, 0xdc, 0xb1, 0x98, 0xa3, 0xdc, - 0xb2, 0x97, 0xa3, 0xdc, 0xb2, 0x98, 0xa3, 0xdc, 0xb2, 0x97, 0xa3, 0xdc, - 0xb3, 0x98, 0xa3, 0xdc, 0xb3, 0x97, 0xa3, 0xdc, 0xb3, 0x98, 0xa3, 0xdc, - 0xb4, 0x97, 0xa3, 0xdc, 0xb4, 0x98, 0xa3, 0xdc, 0xb4, 0x97, 0xa3, 0xdc, - 0xb5, 0x98, 0xa3, 0xdc, 0xb5, 0x97, 0xa3, 0xdc, 0xb5, 0x98, 0xa3, 0xdc, - 0xb6, 0x97, 0xa3, 0xdc, 0xb6, 0x98, 0xcf, 0xdc, 0xb6, 0xbf, 0xd0, 0xdc, - 0xb7, 0xbe, 0xcf, 0xdc, 0xb7, 0xbf, 0xd0, 0xdc, 0xb7, 0xbe, 0xcf, 0xdc, - 0xb8, 0xbf, 0xd0, 0xdc, 0xb8, 0xbe, 0xcf, 0xdc, 0xb8, 0xbf, 0xd0, 0xdc, - 0xb9, 0xbe, 0xcf, 0xdc, 0xb9, 0xbf, 0xd0, 0xdc, 0xb9, 0xbe, 0xcf, 0xdc, - 0xba, 0xbf, 0xd0, 0xdc, 0xba, 0xbe, 0xcf, 0xdc, 0xba, 0xbf, 0xd0, 0xdc, - 0xbb, 0xbe, 0xcf, 0xdc, 0xbb, 0xbf, 0xd0, 0xdc, 0xbb, 0xbe, 0xcf, 0xdc, - 0xbc, 0xbf, 0xd0, 0xdc, 0xbc, 0xbe, 0xd0, 0xdc, 0xbc, 0xbb, 0xd0, 0xdc, - 0xbd, 0xbe, 0xd0, 0xdc, 0xbd, 0xbb, 0xd0, 0xdc, 0xbd, 0xbe, 0xd0, 0xdc, - 0xbe, 0xbb, 0xd0, 0xdc, 0xbe, 0xbe, 0xd0, 0xdc, 0xbe, 0xbb, 0xd0, 0xdc, - 0xbf, 0xbe, 0xd0, 0xdc, 0xbf, 0xbb, 0xd0, 0xdc, 0xbf, 0xbe, 0xd0, 0xdc, - 0xc0, 0xbb, 0xd0, 0xdc, 0xc0, 0xbe, 0xd0, 0xdc, 0xc0, 0xbb, 0xd0, 0xdc, - 0xc1, 0xbe, 0xd0, 0xdc, 0xc1, 0xbb, 0xd0, 0xdc, 0xc1, 0xbe, 0xd0, 0xdc, - 0xc1, 0xbb, 0xd0, 0xdc, 0xc2, 0xb8, 0xd0, 0xdc, 0xc2, 0xbb, 0xd0, 0xdc, - 0xc2, 0xb8, 0xd0, 0xdc, 0xc3, 0xbb, 0xd0, 0xdc, 0xc3, 0xb8, 0xd0, 0xdc, - 0xc3, 0xbb, 0xd0, 0xdc, 0xc4, 0xb8, 0xd0, 0xdc, 0xc4, 0xbb, 0xd0, 0xdc, - 0xc4, 0xb8, 0xd0, 0xdc, 0xc5, 0xbb, 0xd0, 0xdc, 0xc5, 0xb8, 0xd0, 0xdc, - 0xc5, 0xbb, 0xd0, 0xdc, 0xc6, 0xb8, 0xd0, 0xdc, 0xc6, 0xbb, 0xd0, 0xdc, - 0xc6, 0xb8, 0xd0, 0xdc, 0xc6, 0xbb, 0xd0, 0xdc, 0xc7, 0xb8, 0xd0, 0xdc, - 0xc7, 0xbb, 0xd0, 0xdc, 0xc7, 0xb8, 0xd0, 0xdc, 0xc8, 0xbb, 0xd0, 0xdc, - 0xc8, 0xb8, 0xd0, 0xdc, 0xc8, 0xbb, 0xd0, 0xdc, 0xc9, 0xb8, 0xd0, 0xdc, - 0xc9, 0xbb, 0xd0, 0xdc, 0xc9, 0xb8, 0xd0, 0xdc, 0xc9, 0xbb, 0xd0, 0xdc, - 0xca, 0xb8, 0xd0, 0xdc, 0xca, 0xbb, 0xd0, 0xdc, 0xca, 0xb8, 0xd0, 0xdc, - 0xcb, 0xbb, 0xd0, 0xdc, 0xcb, 0xb8, 0xd0, 0xdc, 0xcb, 0xbb, 0xd0, 0xdc, - 0xcc, 0xb8, 0xd0, 0xdc, 0xcc, 0xb7, 0xd0, 0xdc, 0xcc, 0xb8, 0xd0, 0xdc, - 0xcc, 0xb7, 0xd0, 0xdc, 0xcd, 0xb8, 0xd0, 0xdc, 0xcd, 0xb7, 0xd0, 0xdc, - 0xcd, 0xb8, 0xd0, 0xdc, 0xce, 0xb7, 0xd0, 0xdc, 0xce, 0xb8, 0xd0, 0xdc, - 0xce, 0xb7, 0xd0, 0xdc, 0xce, 0xb8, 0xd0, 0xdc, 0xcf, 0xb7, 0xd0, 0xdc, - 0xcf, 0xb8, 0xd0, 0xdc, 0xcf, 0xb7, 0xd0, 0xdc, 0xd0, 0xb8, 0xd0, 0xdc, - 0xd0, 0xb7, 0xd1, 0xdc, 0xd0, 0xb7, 0xd0, 0xdc, 0xd0, 0xb7, 0xd1, 0xdc, - 0xd0, 0xb7, 0xd1, 0xdc, 0xd0, 0xb7, 0xd1, 0xdc, 0xd0, 0xb7, 0xd2, 0xdc, - 0xd0, 0xb7, 0xd2, 0xdc, 0xd0, 0xb7, 0xd2, 0xdc, 0xd0, 0xb7, 0xd2, 0xdc, - 0xd0, 0xb7, 0xd3, 0xda, 0xd0, 0xb7, 0xd3, 0xdc, 0xd0, 0xb7, 0xd3, 0xda, - 0xd0, 0xb7, 0xd4, 0xdc, 0xd0, 0xb7, 0xd4, 0xda, 0xd0, 0xb7, 0xd4, 0xdc, - 0xd0, 0xb7, 0xd4, 0xda, 0xd0, 0xb7, 0xd5, 0xdc, 0xd0, 0xb7, 0xd5, 0xda, - 0xd0, 0xb7, 0xd5, 0xdc, 0xd0, 0xb7, 0xd6, 0xda, 0xd0, 0xb7, 0xd6, 0xdc, - 0xd0, 0xb7, 0xd6, 0xda, 0xd0, 0xb7, 0xd6, 0xdc, 0xd0, 0xb7, 0xd7, 0xda, - 0xd0, 0xb7, 0xd7, 0xdc, 0xd0, 0xb7, 0xd7, 0xda, 0xd0, 0xb7, 0xd7, 0xd9, - 0xd1, 0xb7, 0xd8, 0xda, 0xd0, 0xb7, 0xd8, 0xd9, 0xd1, 0xb7, 0xd8, 0xda, - 0xd0, 0xb7, 0xd9, 0xd9, 0xd1, 0xb7, 0xd9, 0xda, 0xd0, 0xb7, 0xd9, 0xd9, - 0xd1, 0xb7, 0xd9, 0xda, 0xd0, 0xb7, 0xda, 0xd9, 0xd1, 0xb7, 0xda, 0xda, - 0xd0, 0xb7, 0xda, 0xd9, 0xd1, 0xb7, 0xda, 0xda, 0xd0, 0xb7, 0xdb, 0xd9, - 0xd1, 0xb7, 0xdb, 0xda, 0xd0, 0xb7, 0xdb, 0xd9, 0xd1, 0xb7, 0xdb, 0xda, - 0xd0, 0xb7, 0xdc, 0xd9, 0xd1, 0xb7, 0xdc, 0xda, 0xd0, 0xb7, 0xdc, 0xd9, - 0xd1, 0xb7, 0xdd, 0xda, 0xd0, 0xb7, 0xdd, 0xd9, 0xd1, 0xb7, 0xdd, 0xde, - 0xe8, 0xb7, 0xdd, 0xdf, 0xe8, 0xb7, 0xde, 0xde, 0xe8, 0xb7, 0xde, 0xdf, - 0xe8, 0xb7, 0xde, 0xde, 0xe8, 0xb7, 0xde, 0xdf, 0xe8, 0xb7, 0xdf, 0xde, - 0xe8, 0xb7, 0xdf, 0xdf, 0xe8, 0xb7, 0xdf, 0xde, 0xe8, 0xb7, 0xdf, 0xdc, - 0xe9, 0xb7, 0xe0, 0xde, 0xe8, 0xb7, 0xe0, 0xdc, 0xe9, 0xb7, 0xe0, 0xde, - 0xe8, 0xb7, 0xe1, 0xdc, 0xe9, 0xb7, 0xe1, 0xde, 0xe8, 0xb7, 0xe1, 0xdc, - 0xe9, 0xb7, 0xe1, 0xde, 0xe8, 0xb7, 0xe2, 0xdc, 0xe9, 0xb7, 0xe2, 0xde, - 0xe8, 0xb7, 0xe2, 0xdc, 0xe9, 0xb7, 0xe2, 0xde, 0xe8, 0xb7, 0xe3, 0xdc, - 0xe9, 0xb7, 0xe3, 0xde, 0xe8, 0xb7, 0xe3, 0xdc, 0xe9, 0xb7, 0xe3, 0xde, - 0xe8, 0xb7, 0xe4, 0xdc, 0xe9, 0xb7, 0xe4, 0xde, 0xe8, 0xb7, 0xe4, 0xdc, - 0xe9, 0xb7, 0xe4, 0xde, 0xe8, 0xb7, 0xe5, 0xdc, 0xe9, 0xb7, 0xe5, 0xde, - 0xe8, 0xb7, 0xe5, 0xdc, 0xe9, 0xb7, 0xe5, 0xde, 0xe8, 0xb7, 0xe6, 0xdc, - 0xe9, 0xb7, 0xe6, 0xde, 0xe8, 0xb7, 0xe6, 0xdc, 0xe9, 0xb7, 0xe6, 0xde, - 0xe8, 0xb7, 0xe7, 0xdc, 0xe9, 0xb7, 0xe7, 0xdc, 0xe9, 0xb7, 0xe7, 0xdc, - 0xe9, 0xb7, 0xe7, 0xdc, 0xe9, 0xb7, 0xe8, 0xdc, 0xe9, 0xb7, 0xe8, 0xdc, - 0xe9, 0xb7, 0xe8, 0xdc, 0xe9, 0xb7, 0xe8, 0xdc, 0xe9, 0xb7, 0xe9, 0xdc, - 0xe9, 0xb6, 0xe8, 0xdc, 0xe9, 0xb7, 0xe9, 0xdc, 0xe9, 0xb6, 0xe8, 0xdc, - 0xe9, 0xb7, 0xe9, 0xdc, 0xea, 0xb6, 0xe8, 0xdc, 0xea, 0xb7, 0xe9, 0xdc, - 0xea, 0xb6, 0xe8, 0xdc, 0xea, 0xb7, 0xec, 0xdc, 0xeb, 0xb7, 0xec, 0xdc, - 0xeb, 0xb7, 0xec, 0xdc, 0xeb, 0xb7, 0xec, 0xdc, 0xeb, 0xb7, 0xec, 0xdc, - 0xec, 0xb7, 0xec, 0xdc, 0xec, 0xb7, 0xec, 0xdb, 0xec, 0xb7, 0xec, 0xdc, - 0xec, 0xb7, 0xec, 0xdb, 0xec, 0xb7, 0xed, 0xdc, 0xec, 0xb7, 0xed, 0xdb, - 0xec, 0xb7, 0xed, 0xdc, 0xec, 0xb7, 0xed, 0xdb, 0xec, 0xb7, 0xee, 0xdc, - 0xec, 0xb7, 0xee, 0xdb, 0xec, 0xb7, 0xee, 0xdc, 0xec, 0xb7, 0xee, 0xdb, - 0xec, 0xb7, 0xef, 0xdc, 0xec, 0xb7, 0xef, 0xdb, 0xec, 0xb7, 0xef, 0xdc, - 0xec, 0xb7, 0xef, 0xdb, 0xec, 0xb7, 0xf0, 0xdc, 0xec, 0xb7, 0xf0, 0xdb, - 0xec, 0xb7, 0xf0, 0xdc, 0xec, 0xb7, 0xf0, 0xdb, 0xec, 0xb7, 0xf1, 0xdc, - 0xec, 0xb7, 0xf1, 0xdb, 0xec, 0xb7, 0xf1, 0xdc, 0xec, 0xb7, 0xf1, 0xdb, - 0xec, 0xb7, 0xf2, 0xdc, 0xec, 0xb7, 0xf2, 0xdb, 0xec, 0xb7, 0xf2, 0xd9, - 0xec, 0xb7, 0xf2, 0xdb, 0xec, 0xb7, 0xf2, 0xd9, 0xec, 0xb7, 0xf3, 0xdb, - 0xec, 0xb7, 0xf3, 0xd9, 0xec, 0xb7, 0xf3, 0xdb, 0xec, 0xb7, 0xf3, 0xd9, - 0xec, 0xb7, 0xf4, 0xdb, 0xec, 0xb7, 0xf4, 0xd9, 0xec, 0xb7, 0xf4, 0xdb, - 0xec, 0xb7, 0xf4, 0xd9, 0xec, 0xb7, 0xf5, 0xdb, 0xec, 0xb7, 0xf5, 0xd9, - 0xec, 0xb7, 0xf5, 0xdb, 0xec, 0xb7, 0xf5, 0xd9, 0xec, 0xb7, 0xf5, 0xdb, - 0xec, 0xb7, 0xf6, 0xd9, 0xec, 0xb7, 0xf6, 0xdb, 0xec, 0xb7, 0xf6, 0xd9, - 0xec, 0xb7, 0xf6, 0xdb, 0xec, 0xb7, 0xf7, 0xd9, 0xec, 0xb7, 0xf7, 0xdb, - 0xec, 0xb7, 0xf7, 0xd9, 0xec, 0xb7, 0xf7, 0xdb, 0xec, 0xb7, 0xf8, 0xd9, - 0xec, 0xb7, 0xf8, 0xdb, 0xec, 0xb7, 0xf8, 0xd9, 0xec, 0xb7, 0xf8, 0xdb, - 0xec, 0xb7, 0xf8, 0xd9, 0xec, 0xb7, 0xf9, 0xdb, 0xec, 0xb7, 0xf9, 0xd9, - 0xec, 0xb7, 0xf9, 0xdb, 0xec, 0xb7, 0xf9, 0xd9, 0xec, 0xb7, 0xfa, 0xdb, - 0xec, 0xb7, 0xfa, 0xd9, 0xec, 0xb7, 0xfa, 0xdb, 0xec, 0xb7, 0xfa, 0xd9, - 0xec, 0xb7, 0xfa, 0xdb, 0xec, 0xb7, 0xfb, 0xd9, 0xec, 0xb7, 0xfb, 0xdb, - 0xec, 0xb7, 0xfb, 0xd9, 0xec, 0xb7, 0xfb, 0xd8, 0xec, 0xb7, 0xfc, 0xd9, - 0xec, 0xb7, 0xfc, 0xd8, 0xec, 0xb7, 0xfc, 0xd9, 0xec, 0xb7, 0xfc, 0xd8, - 0xec, 0xb7, 0xfc, 0xd9, 0xec, 0xb7, 0xfd, 0xd8, 0xec, 0xb7, 0xfd, 0xd9, - 0xec, 0xb7, 0xfd, 0xd8, 0xec, 0xb7, 0xfd, 0xd9, 0xec, 0xb7, 0xfe, 0xd8, - 0xec, 0xb7, 0xfe, 0xd9, 0xec, 0xb7, 0xfe, 0xd8, 0xec, 0xb7, 0xfe, 0xd9, - 0xec, 0xb7, 0xfe, 0xd8, 0xec, 0xb7, 0xff, 0xd8, 0xec, 0xb7, 0xff, 0xc7, - 0xf7, 0xb7, 0x03, 0xe3, 0x88, 0xb7, 0x0a, 0xe1, 0x89, 0xb7, 0x0f, 0xe3, - 0x88, 0xb7, 0x14, 0xe1, 0x89, 0xb7, 0x17, 0xe3, 0x88, 0xb7, 0x1b, 0xe1, - 0x89, 0xb7, 0x1e, 0xe3, 0x88, 0xb7, 0x20, 0xe1, 0x89, 0xb7, 0x23, 0xdf, - 0x89, 0xb7, 0x25, 0xe1, 0x89, 0xb7, 0x27, 0xdf, 0x89, 0xb7, 0x29, 0xe1, - 0x89, 0xb7, 0x2b, 0xdf, 0x89, 0xb7, 0x2d, 0xe1, 0x89, 0xb7, 0x2f, 0xdf, - 0x89, 0xb7, 0x31, 0xe1, 0x89, 0xb7, 0x32, 0xdf, 0x89, 0xb7, 0x34, 0xe1, - 0x89, 0xb7, 0x35, 0xdf, 0x89, 0xb7, 0x37, 0xe1, 0x89, 0xb7, 0x38, 0xdf, - 0x89, 0xb7, 0x3a, 0xe1, 0x89, 0xb7, 0x3b, 0xdf, 0x89, 0xb7, 0x3c, 0xe1, - 0x89, 0xb7, 0x3e, 0xdf, 0x89, 0xb7, 0x3f, 0xe1, 0x89, 0xb7, 0x40, 0xdf, - 0x89, 0xb7, 0x42, 0xe1, 0x89, 0xb7, 0x43, 0xdf, 0x89, 0xb7, 0x44, 0xe1, - 0x89, 0xb7, 0x45, 0xdf, 0x89, 0xb7, 0x46, 0xe1, 0x89, 0xb7, 0x47, 0xdf, - 0x89, 0xb7, 0x48, 0xe1, 0x89, 0xb7, 0x49, 0xdf, 0x89, 0xb7, 0x4a, 0xe1, - 0x89, 0xb7, 0x4b, 0xdf, 0x89, 0xb7, 0x4c, 0xe1, 0x89, 0xb7, 0x4d, 0xdf, - 0x89, 0xb7, 0x4e, 0xe1, 0x89, 0xb7, 0x4f, 0xdf, 0x89, 0xb7, 0x50, 0xe1, - 0x89, 0xb7, 0x51, 0xdf, 0x89, 0xb7, 0x52, 0xe1, 0x89, 0xb7, 0x53, 0xdf, - 0x89, 0xb7, 0x54, 0xe1, 0x89, 0xb7, 0x55, 0xdf, 0x89, 0xb7, 0x56, 0xe1, - 0x89, 0xb7, 0x57, 0xdf, 0x89, 0xb7, 0x58, 0xe1, 0x89, 0xb7, 0x58, 0xdf, - 0x89, 0xb7, 0x59, 0xdf, 0x89, 0xb7, 0x5a, 0xdf, 0x89, 0xb7, 0x5b, 0xdf, - 0x89, 0xb7, 0x5c, 0xdf, 0x89, 0xb7, 0x5d, 0xdf, 0x89, 0xb7, 0x5d, 0xdf, - 0x89, 0xb7, 0x5e, 0xdf, 0x89, 0xb7, 0x5f, 0xdf, 0x89, 0xb7, 0x60, 0xdf, - 0x89, 0xb7, 0x60, 0xdf, 0x89, 0xb7, 0x61, 0xdf, 0x89, 0xb7, 0x62, 0xdf, - 0x89, 0xb7, 0x63, 0xdf, 0x89, 0xb7, 0x63, 0xdf, 0x89, 0xb7, 0x64, 0xdf, - 0x89, 0xb7, 0x65, 0xdf, 0x89, 0xb7, 0x66, 0xdf, 0x89, 0xb7, 0x66, 0xdf, - 0x89, 0xb7, 0x67, 0xdf, 0x89, 0xb7, 0x68, 0xdf, 0x89, 0xb7, 0x68, 0xdf, - 0x89, 0xb7, 0x69, 0xdf, 0x89, 0xb7, 0x6a, 0xdf, 0x89, 0xb7, 0x6a, 0xdf, - 0x89, 0xb7, 0x6b, 0xdf, 0x89, 0xb7, 0x6c, 0xdf, 0x89, 0xb7, 0x6c, 0xdf, - 0x89, 0xb7, 0x6d, 0xdf, 0x89, 0xb7, 0x6e, 0xdf, 0x89, 0xb7, 0x6e, 0xdf, - 0x89, 0xb7, 0x6f, 0xdf, 0x89, 0xb7, 0x70, 0xdf, 0x89, 0xb7, 0x70, 0xdf, - 0x89, 0xb7, 0x71, 0xdf, 0x89, 0xb7, 0x72, 0xdf, 0x89, 0xb7, 0x72, 0xdf, - 0x89, 0xb7, 0x73, 0xdd, 0x8a, 0xb7, 0x73, 0xdf, 0x89, 0xb7, 0x74, 0xdd, - 0x8a, 0xb7, 0x75, 0xdf, 0x89, 0xb7, 0x75, 0xdd, 0x8a, 0xb7, 0x76, 0xdf, - 0x89, 0xb7, 0x76, 0xdd, 0x8a, 0xb7, 0x77, 0xdf, 0x89, 0xb7, 0x78, 0xdd, - 0x8a, 0xb7, 0x78, 0xdf, 0x89, 0xb7, 0x79, 0xdd, 0x8a, 0xb7, 0x79, 0xdf, - 0x89, 0xb7, 0x7a, 0xdd, 0x8a, 0xb7, 0x7a, 0xdf, 0x89, 0xb7, 0x7b, 0xdd, - 0x8a, 0xb7, 0x7c, 0xdf, 0x89, 0xb7, 0x7c, 0xdd, 0x8a, 0xb7, 0x7d, 0xdf, - 0x89, 0xb7, 0x7d, 0xdd, 0x8a, 0xb7, 0x7e, 0xdc, 0x8a, 0xb7, 0x7e, 0xdd, - 0x8a, 0xb7, 0x7f, 0xdc, 0x8a, 0xb7, 0x7f, 0xdd, 0x8a, 0xb7, 0x80, 0xdc, - 0x8a, 0xb7, 0x81, 0xdd, 0x8a, 0xb7, 0x81, 0xdc, 0x8a, 0xb7, 0x82, 0xdd, - 0x8a, 0xb7, 0x82, 0xdc, 0x8a, 0xb7, 0x83, 0xdd, 0x8a, 0xb7, 0x83, 0xdc, - 0x8a, 0xb7, 0x84, 0xdd, 0x8a, 0xb7, 0x84, 0xdc, 0x8a, 0xb7, 0x85, 0xdd, - 0x8a, 0xb7, 0x85, 0xdc, 0x8a, 0xb7, 0x86, 0xdd, 0x8a, 0xb7, 0x86, 0xdc, - 0x8a, 0xb7, 0x87, 0xdd, 0x8a, 0xb7, 0x87, 0xdc, 0x8a, 0xb7, 0x88, 0xdd, - 0x8a, 0xb7, 0x88, 0xdc, 0x8a, 0xb7, 0x89, 0xdc, 0x8b, 0xb7, 0x89, 0xdc, - 0x8a, 0xb7, 0x8a, 0xdc, 0x8b, 0xb7, 0x89, 0xdc, 0x8a, 0xb7, 0x8a, 0xdc, - 0x8b, 0xb7, 0x89, 0xdc, 0x8b, 0xb7, 0x8a, 0xdc, 0x8c, 0xb7, 0x8a, 0xdc, - 0x8c, 0xb5, 0x8a, 0xdc, 0x8d, 0xb7, 0x8a, 0xdc, 0x8d, 0xb5, 0x8a, 0xdc, - 0x8e, 0xb7, 0x8a, 0xdc, 0x8e, 0xb5, 0x8a, 0xdc, 0x8e, 0xb7, 0x8a, 0xdc, - 0x8f, 0xb5, 0x8a, 0xdc, 0x8f, 0xb7, 0x8a, 0xdc, 0x90, 0xb5, 0x8a, 0xdc, - 0x90, 0xb7, 0x8a, 0xdc, 0x91, 0xb5, 0x8a, 0xdc, 0x91, 0xb7, 0x8a, 0xdc, - 0x92, 0xb5, 0x8a, 0xdc, 0x92, 0xb7, 0x8a, 0xdc, 0x93, 0xb5, 0x8a, 0xdc, - 0x93, 0xb7, 0x8a, 0xdc, 0x94, 0xb5, 0x8a, 0xdc, 0x94, 0xb7, 0x8a, 0xdc, - 0x94, 0xb5, 0x8a, 0xdc, 0x95, 0xb7, 0x8a, 0xdc, 0x95, 0xb5, 0x8a, 0xdc, - 0x96, 0xb7, 0x8a, 0xdc, 0x96, 0xb5, 0x8a, 0xdc, 0x97, 0xb7, 0x8a, 0xdc, - 0x97, 0xb5, 0x8a, 0xdc, 0x98, 0xb7, 0x8a, 0xdc, 0x98, 0xb5, 0x8a, 0xdc, - 0x98, 0xb7, 0x8a, 0xdc, 0x99, 0xb5, 0x8a, 0xdc, 0x99, 0xb7, 0x8a, 0xdc, - 0x9a, 0xb5, 0x8a, 0xdc, 0x9a, 0xb7, 0x8a, 0xdc, 0x9a, 0xb5, 0x8b, 0xdc, - 0x9b, 0xb1, 0x8a, 0xdc, 0x9b, 0xb5, 0x8b, 0xdc, 0x9c, 0xb1, 0x8a, 0xdc, - 0x9c, 0xb5, 0x8b, 0xdc, 0x9d, 0xb1, 0x8a, 0xdc, 0x9d, 0xb5, 0x8b, 0xdc, - 0x9d, 0xb1, 0x8a, 0xdc, 0x9e, 0xb5, 0x8b, 0xdc, 0x9e, 0xb1, 0x8a, 0xdc, - 0x9f, 0xb5, 0x8b, 0xdc, 0x9f, 0xb1, 0x8a, 0xdc, 0x9f, 0xb5, 0x8b, 0xdc, - 0xa0, 0xb1, 0x8a, 0xdc, 0xa0, 0xb5, 0x8b, 0xdc, 0xa1, 0xb1, 0x8a, 0xdc, - 0xa1, 0xb5, 0x8b, 0xdc, 0xa1, 0xb1, 0x8a, 0xdc, 0xa2, 0xb5, 0x8b, 0xdc, - 0xa2, 0xb1, 0x8a, 0xdc, 0xa3, 0xb5, 0x8b, 0xdc, 0xa3, 0xb1, 0x8a, 0xdc, - 0xa3, 0xb5, 0x8b, 0xdc, 0xa4, 0xb1, 0x8a, 0xdc, 0xa4, 0xb5, 0x8b, 0xdc, - 0xa5, 0xb1, 0x8a, 0xdc, 0xa5, 0xb5, 0x8b, 0xdc, 0xa5, 0xb1, 0x8a, 0xdc, - 0xa6, 0xb5, 0xa3, 0xdc, 0xa6, 0x97, 0xa3, 0xdc, 0xa6, 0x97, 0xa3, 0xdc, - 0xa7, 0x97, 0xa3, 0xdc, 0xa7, 0x97, 0xa3, 0xdc, 0xa8, 0x97, 0xa3, 0xdc, - 0xa8, 0x97, 0xa3, 0xdc, 0xa8, 0x97, 0xa3, 0xdc, 0xa9, 0x97, 0xa3, 0xdc, - 0xa9, 0x97, 0xa3, 0xdc, 0xaa, 0x97, 0xa3, 0xdc, 0xaa, 0x97, 0xa3, 0xdc, - 0xaa, 0x97, 0xa3, 0xdc, 0xab, 0x97, 0xa3, 0xdc, 0xab, 0x97, 0xa3, 0xdc, - 0xab, 0x97, 0xa3, 0xdc, 0xac, 0x97, 0xa3, 0xdc, 0xac, 0x97, 0xa3, 0xdc, - 0xac, 0x97, 0xa3, 0xdc, 0xad, 0x97, 0xa3, 0xdc, 0xad, 0x97, 0xa3, 0xdc, - 0xae, 0x97, 0xa3, 0xdc, 0xae, 0x97, 0xa3, 0xdc, 0xae, 0x97, 0xa3, 0xdc, - 0xaf, 0x97, 0xa3, 0xdc, 0xaf, 0x97, 0xa3, 0xdc, 0xaf, 0x97, 0xa3, 0xdc, - 0xb0, 0x97, 0xa3, 0xdc, 0xb0, 0x97, 0xa3, 0xdc, 0xb0, 0x97, 0xa3, 0xdc, - 0xb1, 0x97, 0xa3, 0xdc, 0xb1, 0x97, 0xa3, 0xdc, 0xb2, 0x97, 0xa3, 0xdc, - 0xb2, 0x97, 0xa3, 0xdc, 0xb2, 0x97, 0xa3, 0xdc, 0xb3, 0x97, 0xa3, 0xdc, - 0xb3, 0x97, 0xa3, 0xdc, 0xb3, 0x97, 0xa3, 0xdc, 0xb4, 0x97, 0xa3, 0xdc, - 0xb4, 0x97, 0xa3, 0xdc, 0xb4, 0x97, 0xa3, 0xdc, 0xb5, 0x97, 0xa3, 0xdc, - 0xb5, 0x97, 0xa3, 0xdc, 0xb5, 0x97, 0xa3, 0xdc, 0xb6, 0x97, 0xa3, 0xdc, - 0xb6, 0x97, 0xcf, 0xdc, 0xb6, 0xc0, 0xd0, 0xdc, 0xb7, 0xbd, 0xcf, 0xdc, - 0xb7, 0xc0, 0xd0, 0xdc, 0xb7, 0xbd, 0xcf, 0xdc, 0xb8, 0xc0, 0xd0, 0xdc, - 0xb8, 0xbd, 0xcf, 0xdc, 0xb8, 0xc0, 0xd0, 0xdc, 0xb9, 0xbd, 0xcf, 0xdc, - 0xb9, 0xc0, 0xd0, 0xdc, 0xb9, 0xbd, 0xd0, 0xdc, 0xba, 0xba, 0xd0, 0xdc, - 0xba, 0xbd, 0xd0, 0xdc, 0xba, 0xba, 0xd0, 0xdc, 0xbb, 0xbd, 0xd0, 0xdc, - 0xbb, 0xba, 0xd0, 0xdc, 0xbb, 0xbd, 0xd0, 0xdc, 0xbc, 0xba, 0xd0, 0xdc, - 0xbc, 0xbd, 0xd0, 0xdc, 0xbc, 0xba, 0xd0, 0xdc, 0xbd, 0xbd, 0xd0, 0xdc, - 0xbd, 0xba, 0xd0, 0xdc, 0xbd, 0xbd, 0xd0, 0xdc, 0xbe, 0xba, 0xd0, 0xdc, - 0xbe, 0xbd, 0xd0, 0xdc, 0xbe, 0xba, 0xd0, 0xdc, 0xbf, 0xbd, 0xd0, 0xdc, - 0xbf, 0xba, 0xd0, 0xdc, 0xbf, 0xbd, 0xd0, 0xdc, 0xc0, 0xba, 0xd0, 0xdc, - 0xc0, 0xbd, 0xd0, 0xdc, 0xc0, 0xba, 0xd0, 0xdc, 0xc1, 0xbd, 0xd0, 0xdc, - 0xc1, 0xba, 0xd0, 0xdc, 0xc1, 0xbd, 0xd0, 0xdc, 0xc1, 0xba, 0xd0, 0xdc, - 0xc2, 0xbd, 0xd0, 0xdc, 0xc2, 0xba, 0xd0, 0xdc, 0xc2, 0xbd, 0xd0, 0xdc, - 0xc3, 0xba, 0xd0, 0xdc, 0xc3, 0xbd, 0xd0, 0xdc, 0xc3, 0xba, 0xd0, 0xdc, - 0xc4, 0xbd, 0xd0, 0xdc, 0xc4, 0xba, 0xd0, 0xdc, 0xc4, 0xbd, 0xd0, 0xdc, - 0xc5, 0xba, 0xd0, 0xdc, 0xc5, 0xbd, 0xd0, 0xdc, 0xc5, 0xba, 0xd0, 0xdc, - 0xc6, 0xb8, 0xd0, 0xdc, 0xc6, 0xba, 0xd0, 0xdc, 0xc6, 0xb8, 0xd0, 0xdc, - 0xc6, 0xba, 0xd0, 0xdc, 0xc7, 0xb8, 0xd0, 0xdc, 0xc7, 0xba, 0xd0, 0xdc, - 0xc7, 0xb8, 0xd0, 0xdc, 0xc8, 0xba, 0xd0, 0xdc, 0xc8, 0xb8, 0xd0, 0xdc, - 0xc8, 0xba, 0xd0, 0xdc, 0xc9, 0xb8, 0xd0, 0xdc, 0xc9, 0xba, 0xd0, 0xdc, - 0xc9, 0xb8, 0xd0, 0xdc, 0xc9, 0xba, 0xd0, 0xdc, 0xca, 0xb8, 0xd0, 0xdc, - 0xca, 0xba, 0xd0, 0xdc, 0xca, 0xb8, 0xd0, 0xdc, 0xcb, 0xba, 0xd0, 0xdc, - 0xcb, 0xb8, 0xd0, 0xdc, 0xcb, 0xba, 0xd0, 0xdc, 0xcc, 0xb8, 0xd0, 0xdc, - 0xcc, 0xba, 0xd0, 0xdc, 0xcc, 0xb8, 0xd0, 0xdc, 0xcc, 0xba, 0xd0, 0xdc, - 0xcd, 0xb8, 0xd0, 0xdc, 0xcd, 0xba, 0xd0, 0xdc, 0xcd, 0xb8, 0xd0, 0xdc, - 0xce, 0xba, 0xd0, 0xdc, 0xce, 0xb8, 0xd0, 0xdc, 0xce, 0xb7, 0xd0, 0xdc, - 0xce, 0xb8, 0xd0, 0xdc, 0xcf, 0xb7, 0xd0, 0xdc, 0xcf, 0xb8, 0xd0, 0xdc, - 0xcf, 0xb7, 0xd0, 0xdc, 0xd0, 0xb8, 0xd0, 0xdc, 0xd0, 0xb7, 0xd1, 0xdc, - 0xd0, 0xb7, 0xd0, 0xdc, 0xd0, 0xb7, 0xd1, 0xdc, 0xd0, 0xb7, 0xd1, 0xdc, - 0xd0, 0xb7, 0xd1, 0xdc, 0xd0, 0xb7, 0xd2, 0xdc, 0xd0, 0xb7, 0xd2, 0xdc, - 0xd0, 0xb7, 0xd2, 0xdc, 0xd0, 0xb7, 0xd2, 0xdc, 0xd0, 0xb7, 0xd3, 0xdb, - 0xd0, 0xb7, 0xd3, 0xdc, 0xd0, 0xb7, 0xd3, 0xdb, 0xd0, 0xb7, 0xd4, 0xdc, - 0xd0, 0xb7, 0xd4, 0xdb, 0xd0, 0xb7, 0xd4, 0xdc, 0xd0, 0xb7, 0xd4, 0xdb, - 0xd0, 0xb7, 0xd5, 0xdc, 0xd0, 0xb7, 0xd5, 0xdb, 0xd0, 0xb7, 0xd5, 0xdc, - 0xd0, 0xb7, 0xd6, 0xdb, 0xd0, 0xb7, 0xd6, 0xdc, 0xd0, 0xb7, 0xd6, 0xdb, - 0xd0, 0xb7, 0xd6, 0xdc, 0xd0, 0xb7, 0xd7, 0xdb, 0xd0, 0xb7, 0xd7, 0xdc, - 0xd0, 0xb7, 0xd7, 0xdb, 0xd0, 0xb7, 0xd7, 0xdc, 0xd0, 0xb7, 0xd8, 0xdb, - 0xd0, 0xb7, 0xd8, 0xdc, 0xd0, 0xb7, 0xd8, 0xdb, 0xd0, 0xb7, 0xd9, 0xdc, - 0xd0, 0xb7, 0xd9, 0xdb, 0xd0, 0xb7, 0xd9, 0xdc, 0xd0, 0xb7, 0xd9, 0xdb, - 0xd0, 0xb7, 0xda, 0xdc, 0xd0, 0xb7, 0xda, 0xdb, 0xd0, 0xb7, 0xda, 0xdc, - 0xd0, 0xb7, 0xda, 0xdb, 0xd0, 0xb7, 0xdb, 0xd9, 0xd1, 0xb7, 0xdb, 0xdb, - 0xd0, 0xb7, 0xdb, 0xd9, 0xd1, 0xb7, 0xdb, 0xdb, 0xd0, 0xb7, 0xdc, 0xd9, - 0xd1, 0xb7, 0xdc, 0xdb, 0xd0, 0xb7, 0xdc, 0xd9, 0xd1, 0xb7, 0xdd, 0xdb, - 0xd0, 0xb7, 0xdd, 0xdf, 0xe8, 0xb7, 0xdd, 0xdd, 0xe8, 0xb7, 0xdd, 0xdf, - 0xe8, 0xb7, 0xde, 0xdd, 0xe8, 0xb7, 0xde, 0xdf, 0xe8, 0xb7, 0xde, 0xdd, - 0xe8, 0xb7, 0xde, 0xdf, 0xe8, 0xb7, 0xdf, 0xdd, 0xe8, 0xb7, 0xdf, 0xdf, - 0xe8, 0xb7, 0xdf, 0xdd, 0xe8, 0xb7, 0xdf, 0xdf, 0xe8, 0xb7, 0xe0, 0xdd, - 0xe8, 0xb7, 0xe0, 0xdf, 0xe8, 0xb7, 0xe0, 0xdd, 0xe8, 0xb7, 0xe1, 0xdf, - 0xe8, 0xb7, 0xe1, 0xdd, 0xe8, 0xb7, 0xe1, 0xdf, 0xe8, 0xb7, 0xe1, 0xdd, - 0xe8, 0xb7, 0xe2, 0xdf, 0xe8, 0xb7, 0xe2, 0xdd, 0xe8, 0xb7, 0xe2, 0xdf, - 0xe8, 0xb7, 0xe2, 0xdd, 0xe8, 0xb7, 0xe3, 0xdc, 0xe9, 0xb7, 0xe3, 0xdd, - 0xe8, 0xb7, 0xe3, 0xdc, 0xe9, 0xb7, 0xe3, 0xdd, 0xe8, 0xb7, 0xe4, 0xdc, - 0xe9, 0xb7, 0xe4, 0xdd, 0xe8, 0xb7, 0xe4, 0xdc, 0xe9, 0xb7, 0xe4, 0xdd, - 0xe8, 0xb7, 0xe5, 0xdc, 0xe9, 0xb7, 0xe5, 0xdd, 0xe8, 0xb7, 0xe5, 0xdc, - 0xe9, 0xb7, 0xe5, 0xdd, 0xe8, 0xb7, 0xe6, 0xdc, 0xe9, 0xb7, 0xe6, 0xdd, - 0xe8, 0xb7, 0xe6, 0xdc, 0xe9, 0xb7, 0xe6, 0xdd, 0xe8, 0xb7, 0xe7, 0xdc, - 0xe9, 0xb7, 0xe7, 0xdd, 0xe8, 0xb7, 0xe7, 0xdc, 0xe9, 0xb7, 0xe7, 0xdd, - 0xe8, 0xb7, 0xe8, 0xdc, 0xe9, 0xb7, 0xe8, 0xdc, 0xe9, 0xb7, 0xe8, 0xdc, - 0xe9, 0xb7, 0xe8, 0xdc, 0xe9, 0xb7, 0xe9, 0xdc, 0xe9, 0xb6, 0xe8, 0xdc, - 0xe9, 0xb7, 0xe9, 0xdc, 0xe9, 0xb6, 0xe8, 0xdc, 0xe9, 0xb7, 0xe9, 0xdc, - 0xea, 0xb6, 0xe8, 0xdc, 0xea, 0xb7, 0xe9, 0xdc, 0xea, 0xb6, 0xe8, 0xdc, - 0xea, 0xb7, 0xec, 0xdc, 0xeb, 0xb7, 0xec, 0xdc, 0xeb, 0xb7, 0xec, 0xdc, - 0xeb, 0xb7, 0xec, 0xdc, 0xeb, 0xb7, 0xec, 0xdc, 0xec, 0xb7, 0xec, 0xdc, - 0xec, 0xb7, 0xec, 0xdc, 0xec, 0xb7, 0xec, 0xdc, 0xec, 0xb7, 0xec, 0xdc, - 0xec, 0xb7, 0xed, 0xdc, 0xec, 0xb7, 0xed, 0xdc, 0xec, 0xb7, 0xed, 0xdc, - 0xec, 0xb7, 0xed, 0xdc, 0xec, 0xb7, 0xee, 0xdc, 0xec, 0xb7, 0xee, 0xdc, - 0xec, 0xb7, 0xee, 0xdc, 0xec, 0xb7, 0xee, 0xdc, 0xec, 0xb7, 0xef, 0xdc, - 0xec, 0xb7, 0xef, 0xdc, 0xec, 0xb7, 0xef, 0xdc, 0xec, 0xb7, 0xef, 0xdc, - 0xec, 0xb7, 0xf0, 0xdc, 0xec, 0xb7, 0xf0, 0xdc, 0xec, 0xb7, 0xf0, 0xdc, - 0xec, 0xb7, 0xf0, 0xdc, 0xec, 0xb7, 0xf1, 0xdc, 0xec, 0xb7, 0xf1, 0xdc, - 0xec, 0xb7, 0xf1, 0xdc, 0xec, 0xb7, 0xf1, 0xdc, 0xec, 0xb7, 0xf2, 0xdc, - 0xec, 0xb7, 0xf2, 0xdc, 0xec, 0xb7, 0xf2, 0xda, 0xec, 0xb7, 0xf2, 0xdc, - 0xec, 0xb7, 0xf2, 0xda, 0xec, 0xb7, 0xf3, 0xdc, 0xec, 0xb7, 0xf3, 0xda, - 0xec, 0xb7, 0xf3, 0xdc, 0xec, 0xb7, 0xf3, 0xda, 0xec, 0xb7, 0xf4, 0xdc, - 0xec, 0xb7, 0xf4, 0xda, 0xec, 0xb7, 0xf4, 0xdc, 0xec, 0xb7, 0xf4, 0xda, - 0xec, 0xb7, 0xf5, 0xdc, 0xec, 0xb7, 0xf5, 0xda, 0xec, 0xb7, 0xf5, 0xdc, - 0xec, 0xb7, 0xf5, 0xda, 0xec, 0xb7, 0xf5, 0xdc, 0xec, 0xb7, 0xf6, 0xda, - 0xec, 0xb7, 0xf6, 0xdc, 0xec, 0xb7, 0xf6, 0xda, 0xec, 0xb7, 0xf6, 0xdc, - 0xec, 0xb7, 0xf7, 0xda, 0xec, 0xb7, 0xf7, 0xdc, 0xec, 0xb7, 0xf7, 0xda, - 0xec, 0xb7, 0xf7, 0xdc, 0xec, 0xb7, 0xf8, 0xda, 0xec, 0xb7, 0xf8, 0xdc, - 0xec, 0xb7, 0xf8, 0xda, 0xec, 0xb7, 0xf8, 0xdc, 0xec, 0xb7, 0xf8, 0xda, - 0xec, 0xb7, 0xf9, 0xdc, 0xec, 0xb7, 0xf9, 0xda, 0xec, 0xb7, 0xf9, 0xdc, - 0xec, 0xb7, 0xf9, 0xda, 0xec, 0xb7, 0xfa, 0xdc, 0xec, 0xb7, 0xfa, 0xda, - 0xec, 0xb7, 0xfa, 0xdc, 0xec, 0xb7, 0xfa, 0xda, 0xec, 0xb7, 0xfa, 0xdc, - 0xec, 0xb7, 0xfb, 0xda, 0xec, 0xb7, 0xfb, 0xdc, 0xec, 0xb7, 0xfb, 0xda, - 0xec, 0xb7, 0xfb, 0xdc, 0xec, 0xb7, 0xfc, 0xda, 0xec, 0xb7, 0xfc, 0xdc, - 0xec, 0xb7, 0xfc, 0xda, 0xec, 0xb7, 0xfc, 0xdc, 0xec, 0xb7, 0xfc, 0xda, - 0xec, 0xb7, 0xfd, 0xdc, 0xec, 0xb7, 0xfd, 0xda, 0xec, 0xb7, 0xfd, 0xdc, - 0xec, 0xb7, 0xfd, 0xda, 0xec, 0xb7, 0xfe, 0xdc, 0xec, 0xb7, 0xfe, 0xda, - 0xec, 0xb7, 0xfe, 0xdc, 0xec, 0xb7, 0xfe, 0xda, 0xec, 0xb7, 0xfe, 0xdc, - 0xec, 0xb7, 0xff, 0xda, 0xec, 0xb7, 0xff, 0xd7, 0xec, 0xb7, 0x03, 0xe2, - 0x88, 0xb8, 0x0a, 0xe1, 0x89, 0xb8, 0x0f, 0xe2, 0x88, 0xb8, 0x14, 0xe1, - 0x89, 0xb8, 0x17, 0xe2, 0x88, 0xb8, 0x1b, 0xe1, 0x89, 0xb8, 0x1e, 0xe2, - 0x88, 0xb8, 0x20, 0xe1, 0x89, 0xb8, 0x23, 0xe2, 0x88, 0xb8, 0x25, 0xe1, - 0x89, 0xb8, 0x27, 0xe2, 0x88, 0xb8, 0x29, 0xe1, 0x89, 0xb8, 0x2b, 0xe2, - 0x88, 0xb8, 0x2d, 0xe1, 0x89, 0xb8, 0x2f, 0xe2, 0x88, 0xb8, 0x31, 0xe1, - 0x89, 0xb8, 0x32, 0xe2, 0x88, 0xb8, 0x34, 0xe1, 0x89, 0xb8, 0x35, 0xe2, - 0x88, 0xb8, 0x37, 0xe1, 0x89, 0xb8, 0x38, 0xe2, 0x88, 0xb8, 0x3a, 0xe1, - 0x89, 0xb8, 0x3b, 0xe2, 0x88, 0xb8, 0x3c, 0xe1, 0x89, 0xb8, 0x3e, 0xe2, - 0x88, 0xb8, 0x3f, 0xe1, 0x89, 0xb8, 0x40, 0xe2, 0x88, 0xb8, 0x42, 0xe1, - 0x89, 0xb8, 0x43, 0xe2, 0x88, 0xb8, 0x44, 0xe1, 0x89, 0xb8, 0x45, 0xe2, - 0x88, 0xb8, 0x46, 0xe1, 0x89, 0xb8, 0x47, 0xdf, 0x89, 0xb8, 0x48, 0xe1, - 0x89, 0xb8, 0x49, 0xdf, 0x89, 0xb8, 0x4a, 0xe1, 0x89, 0xb8, 0x4b, 0xdf, - 0x89, 0xb8, 0x4c, 0xe1, 0x89, 0xb8, 0x4d, 0xdf, 0x89, 0xb8, 0x4e, 0xe1, - 0x89, 0xb8, 0x4f, 0xdf, 0x89, 0xb8, 0x50, 0xe1, 0x89, 0xb8, 0x51, 0xdf, - 0x89, 0xb8, 0x52, 0xe1, 0x89, 0xb8, 0x53, 0xdf, 0x89, 0xb8, 0x54, 0xe1, - 0x89, 0xb8, 0x55, 0xdf, 0x89, 0xb8, 0x56, 0xe1, 0x89, 0xb8, 0x57, 0xdf, - 0x89, 0xb8, 0x58, 0xe1, 0x89, 0xb8, 0x58, 0xdf, 0x89, 0xb8, 0x59, 0xdf, - 0x89, 0xb8, 0x5a, 0xdf, 0x89, 0xb8, 0x5b, 0xdf, 0x89, 0xb8, 0x5c, 0xdf, - 0x89, 0xb8, 0x5d, 0xdf, 0x89, 0xb8, 0x5d, 0xdf, 0x89, 0xb8, 0x5e, 0xdf, - 0x89, 0xb8, 0x5f, 0xdf, 0x89, 0xb8, 0x60, 0xdf, 0x89, 0xb8, 0x60, 0xdf, - 0x89, 0xb8, 0x61, 0xdf, 0x89, 0xb8, 0x62, 0xdf, 0x89, 0xb8, 0x63, 0xdf, - 0x89, 0xb8, 0x63, 0xdf, 0x89, 0xb8, 0x64, 0xdf, 0x89, 0xb8, 0x65, 0xdf, - 0x89, 0xb8, 0x66, 0xdf, 0x89, 0xb8, 0x66, 0xdf, 0x89, 0xb8, 0x67, 0xdf, - 0x89, 0xb8, 0x68, 0xdf, 0x89, 0xb8, 0x68, 0xdf, 0x89, 0xb8, 0x69, 0xdf, - 0x89, 0xb8, 0x6a, 0xdf, 0x89, 0xb8, 0x6a, 0xdf, 0x89, 0xb8, 0x6b, 0xdf, - 0x89, 0xb8, 0x6c, 0xdf, 0x89, 0xb8, 0x6c, 0xdf, 0x89, 0xb8, 0x6d, 0xdf, - 0x89, 0xb8, 0x6e, 0xdf, 0x89, 0xb8, 0x6e, 0xdf, 0x89, 0xb8, 0x6f, 0xdd, - 0x8a, 0xb8, 0x70, 0xdf, 0x89, 0xb8, 0x70, 0xdd, 0x8a, 0xb8, 0x71, 0xdf, - 0x89, 0xb8, 0x72, 0xdd, 0x8a, 0xb8, 0x72, 0xdf, 0x89, 0xb8, 0x73, 0xdd, - 0x8a, 0xb8, 0x73, 0xdf, 0x89, 0xb8, 0x74, 0xdd, 0x8a, 0xb8, 0x75, 0xdf, - 0x89, 0xb8, 0x75, 0xdd, 0x8a, 0xb8, 0x76, 0xdf, 0x89, 0xb8, 0x76, 0xdd, - 0x8a, 0xb8, 0x77, 0xdf, 0x89, 0xb8, 0x78, 0xdd, 0x8a, 0xb8, 0x78, 0xdf, - 0x89, 0xb8, 0x79, 0xdd, 0x8a, 0xb8, 0x79, 0xdf, 0x89, 0xb8, 0x7a, 0xdd, - 0x8a, 0xb8, 0x7a, 0xdf, 0x89, 0xb8, 0x7b, 0xdd, 0x8a, 0xb8, 0x7c, 0xdf, - 0x89, 0xb8, 0x7c, 0xdd, 0x8a, 0xb8, 0x7d, 0xdf, 0x89, 0xb8, 0x7d, 0xdd, - 0x8a, 0xb8, 0x7e, 0xdd, 0x8a, 0xb8, 0x7e, 0xdd, 0x8a, 0xb8, 0x7f, 0xdd, - 0x8a, 0xb8, 0x7f, 0xdd, 0x8a, 0xb8, 0x80, 0xdd, 0x8a, 0xb8, 0x81, 0xdd, - 0x8a, 0xb8, 0x81, 0xdd, 0x8a, 0xb8, 0x82, 0xdd, 0x8a, 0xb8, 0x82, 0xdd, - 0x8a, 0xb8, 0x83, 0xdd, 0x8a, 0xb8, 0x83, 0xdd, 0x8a, 0xb8, 0x84, 0xdd, - 0x8a, 0xb8, 0x84, 0xdd, 0x8a, 0xb8, 0x85, 0xdd, 0x8a, 0xb8, 0x85, 0xdd, - 0x8a, 0xb8, 0x86, 0xdd, 0x8a, 0xb8, 0x86, 0xdd, 0x8a, 0xb8, 0x87, 0xdd, - 0x8a, 0xb8, 0x87, 0xdd, 0x8a, 0xb8, 0x88, 0xdd, 0x8a, 0xb8, 0x88, 0xdd, - 0x8a, 0xb8, 0x89, 0xdd, 0x8a, 0xb8, 0x89, 0xdd, 0x8a, 0xb8, 0x8a, 0xdd, - 0x8a, 0xb8, 0x89, 0xdd, 0x8a, 0xb8, 0x8a, 0xdd, 0x8b, 0xb8, 0x89, 0xdd, - 0x8b, 0xb8, 0x8a, 0xdd, 0x8c, 0xb8, 0x89, 0xdd, 0x8c, 0xb8, 0x8a, 0xdd, - 0x8d, 0xb8, 0x89, 0xdd, 0x8d, 0xb8, 0x8a, 0xdd, 0x8e, 0xb8, 0x8a, 0xdd, - 0x8e, 0xb5, 0x8a, 0xdd, 0x8e, 0xb8, 0x8a, 0xdd, 0x8f, 0xb5, 0x8a, 0xdd, - 0x8f, 0xb8, 0x8a, 0xdd, 0x90, 0xb5, 0x8a, 0xdd, 0x90, 0xb8, 0x8a, 0xdd, - 0x91, 0xb5, 0x8a, 0xdd, 0x91, 0xb8, 0x8a, 0xdd, 0x92, 0xb5, 0x8a, 0xdd, - 0x92, 0xb8, 0x8a, 0xdd, 0x93, 0xb5, 0x8a, 0xdd, 0x93, 0xb8, 0x8a, 0xdd, - 0x94, 0xb5, 0x8a, 0xdd, 0x94, 0xb8, 0x8a, 0xdd, 0x94, 0xb5, 0x8a, 0xdd, - 0x95, 0xb8, 0x8a, 0xdd, 0x95, 0xb5, 0x8a, 0xdd, 0x96, 0xb8, 0x8a, 0xdd, - 0x96, 0xb5, 0x8a, 0xdd, 0x97, 0xb8, 0x8a, 0xdd, 0x97, 0xb5, 0x8a, 0xdd, - 0x98, 0xb8, 0x8a, 0xdd, 0x98, 0xb5, 0x8a, 0xdd, 0x98, 0xb8, 0x8a, 0xdd, - 0x99, 0xb5, 0x8a, 0xdd, 0x99, 0xb8, 0x8a, 0xdd, 0x9a, 0xb5, 0x8a, 0xdd, - 0x9a, 0xb8, 0x8a, 0xdd, 0x9a, 0xb5, 0x8b, 0xdd, 0x9b, 0xb2, 0x8a, 0xdd, - 0x9b, 0xb5, 0x8b, 0xdd, 0x9c, 0xb2, 0x8a, 0xdd, 0x9c, 0xb5, 0x8b, 0xdd, - 0x9d, 0xb2, 0x8a, 0xdd, 0x9d, 0xb5, 0x8b, 0xdd, 0x9d, 0xb2, 0x8a, 0xdd, - 0x9e, 0xb5, 0x8b, 0xdd, 0x9e, 0xb2, 0x8a, 0xdd, 0x9f, 0xb5, 0x8b, 0xdd, - 0x9f, 0xb2, 0x8a, 0xdd, 0x9f, 0xb5, 0x8b, 0xdd, 0xa0, 0xb2, 0x8a, 0xdd, - 0xa0, 0xb5, 0x8b, 0xdd, 0xa1, 0xb2, 0x8a, 0xdd, 0xa1, 0xb5, 0x8b, 0xdd, - 0xa1, 0xb2, 0x8a, 0xdd, 0xa2, 0xb5, 0x8b, 0xdd, 0xa2, 0xb2, 0x8a, 0xdd, - 0xa3, 0xb5, 0x8b, 0xdd, 0xa3, 0xb2, 0x8a, 0xdd, 0xa3, 0xb5, 0x8b, 0xdd, - 0xa4, 0xb2, 0x8a, 0xdd, 0xa4, 0xb5, 0x8b, 0xdd, 0xa5, 0xb2, 0x8a, 0xdd, - 0xa5, 0xb5, 0x8b, 0xdd, 0xa5, 0xb2, 0x8a, 0xdd, 0xa6, 0xb5, 0xa3, 0xdd, - 0xa6, 0x98, 0x8a, 0xdd, 0xa6, 0xb5, 0xa3, 0xdd, 0xa7, 0x98, 0xa3, 0xdd, - 0xa7, 0x97, 0xa3, 0xdd, 0xa8, 0x98, 0xa3, 0xdd, 0xa8, 0x97, 0xa3, 0xdd, - 0xa8, 0x98, 0xa3, 0xdd, 0xa9, 0x97, 0xa3, 0xdd, 0xa9, 0x98, 0xa3, 0xdd, - 0xaa, 0x97, 0xa3, 0xdd, 0xaa, 0x98, 0xa3, 0xdd, 0xaa, 0x97, 0xa3, 0xdd, - 0xab, 0x98, 0xa3, 0xdd, 0xab, 0x97, 0xa3, 0xdd, 0xab, 0x98, 0xa3, 0xdd, - 0xac, 0x97, 0xa3, 0xdd, 0xac, 0x98, 0xa3, 0xdd, 0xac, 0x97, 0xa3, 0xdd, - 0xad, 0x98, 0xa3, 0xdd, 0xad, 0x97, 0xa3, 0xdd, 0xae, 0x98, 0xa3, 0xdd, - 0xae, 0x97, 0xa3, 0xdd, 0xae, 0x98, 0xa3, 0xdd, 0xaf, 0x97, 0xa3, 0xdd, - 0xaf, 0x98, 0xa3, 0xdd, 0xaf, 0x97, 0xa3, 0xdd, 0xb0, 0x98, 0xa3, 0xdd, - 0xb0, 0x97, 0xa3, 0xdd, 0xb0, 0x98, 0xa3, 0xdd, 0xb1, 0x97, 0xa3, 0xdd, - 0xb1, 0x98, 0xa3, 0xdd, 0xb2, 0x97, 0xa3, 0xdd, 0xb2, 0x98, 0xa3, 0xdd, - 0xb2, 0x97, 0xa3, 0xdd, 0xb3, 0x98, 0xa3, 0xdd, 0xb3, 0x97, 0xa3, 0xdd, - 0xb3, 0x98, 0xa3, 0xdd, 0xb4, 0x97, 0xa3, 0xdd, 0xb4, 0x98, 0xa3, 0xdd, - 0xb4, 0x97, 0xa3, 0xdd, 0xb5, 0x98, 0xa3, 0xdd, 0xb5, 0x97, 0xa3, 0xdd, - 0xb5, 0x98, 0xa3, 0xdd, 0xb6, 0x97, 0xa3, 0xdd, 0xb6, 0x98, 0xcf, 0xdd, - 0xb6, 0xbf, 0xd0, 0xdd, 0xb7, 0xbe, 0xcf, 0xdd, 0xb7, 0xbf, 0xd0, 0xdd, - 0xb7, 0xbe, 0xcf, 0xdd, 0xb8, 0xbf, 0xd0, 0xdd, 0xb8, 0xbe, 0xcf, 0xdd, - 0xb8, 0xbf, 0xd0, 0xdd, 0xb9, 0xbe, 0xcf, 0xdd, 0xb9, 0xbf, 0xd0, 0xdd, - 0xb9, 0xbe, 0xcf, 0xdd, 0xba, 0xbf, 0xd0, 0xdd, 0xba, 0xbe, 0xcf, 0xdd, - 0xba, 0xbf, 0xd0, 0xdd, 0xbb, 0xbe, 0xcf, 0xdd, 0xbb, 0xbf, 0xd0, 0xdd, - 0xbb, 0xbe, 0xcf, 0xdd, 0xbc, 0xbf, 0xd0, 0xdd, 0xbc, 0xbe, 0xcf, 0xdd, - 0xbc, 0xbf, 0xd0, 0xdd, 0xbd, 0xbe, 0xcf, 0xdd, 0xbd, 0xbf, 0xd0, 0xdd, - 0xbd, 0xbe, 0xcf, 0xdd, 0xbe, 0xbf, 0xd0, 0xdd, 0xbe, 0xbe, 0xcf, 0xdd, - 0xbe, 0xbf, 0xd0, 0xdd, 0xbf, 0xbe, 0xd0, 0xdd, 0xbf, 0xbb, 0xd0, 0xdd, - 0xbf, 0xbe, 0xd0, 0xdd, 0xc0, 0xbb, 0xd0, 0xdd, 0xc0, 0xbe, 0xd0, 0xdd, - 0xc0, 0xbb, 0xd0, 0xdd, 0xc1, 0xbe, 0xd0, 0xdd, 0xc1, 0xbb, 0xd0, 0xdd, - 0xc1, 0xbe, 0xd0, 0xdd, 0xc1, 0xbb, 0xd0, 0xdd, 0xc2, 0xbe, 0xd0, 0xdd, - 0xc2, 0xbb, 0xd0, 0xdd, 0xc2, 0xbe, 0xd0, 0xdd, 0xc3, 0xbb, 0xd0, 0xdd, - 0xc3, 0xbe, 0xd0, 0xdd, 0xc3, 0xbb, 0xd0, 0xdd, 0xc4, 0xbe, 0xd0, 0xdd, - 0xc4, 0xbb, 0xd0, 0xdd, 0xc4, 0xbe, 0xd0, 0xdd, 0xc5, 0xbb, 0xd0, 0xdd, - 0xc5, 0xbe, 0xd0, 0xdd, 0xc5, 0xbb, 0xd0, 0xdd, 0xc6, 0xb8, 0xd0, 0xdd, - 0xc6, 0xbb, 0xd0, 0xdd, 0xc6, 0xb8, 0xd0, 0xdd, 0xc6, 0xbb, 0xd0, 0xdd, - 0xc7, 0xb8, 0xd0, 0xdd, 0xc7, 0xbb, 0xd0, 0xdd, 0xc7, 0xb8, 0xd0, 0xdd, - 0xc8, 0xbb, 0xd0, 0xdd, 0xc8, 0xb8, 0xd0, 0xdd, 0xc8, 0xbb, 0xd0, 0xdd, - 0xc9, 0xb8, 0xd0, 0xdd, 0xc9, 0xbb, 0xd0, 0xdd, 0xc9, 0xb8, 0xd0, 0xdd, - 0xc9, 0xbb, 0xd0, 0xdd, 0xca, 0xb8, 0xd0, 0xdd, 0xca, 0xbb, 0xd0, 0xdd, - 0xca, 0xb8, 0xd0, 0xdd, 0xcb, 0xbb, 0xd0, 0xdd, 0xcb, 0xb8, 0xd0, 0xdd, - 0xcb, 0xbb, 0xd0, 0xdd, 0xcc, 0xb8, 0xd0, 0xdd, 0xcc, 0xbb, 0xd0, 0xdd, - 0xcc, 0xb8, 0xd0, 0xdd, 0xcc, 0xbb, 0xd0, 0xdd, 0xcd, 0xb8, 0xd0, 0xdd, - 0xcd, 0xbb, 0xd0, 0xdd, 0xcd, 0xb8, 0xd0, 0xdd, 0xce, 0xbb, 0xd0, 0xdd, - 0xce, 0xb8, 0xd0, 0xdd, 0xce, 0xb8, 0xd0, 0xdd, 0xce, 0xb8, 0xd0, 0xdd, - 0xcf, 0xb8, 0xd0, 0xdd, 0xcf, 0xb8, 0xd0, 0xdd, 0xcf, 0xb8, 0xd0, 0xdd, - 0xd0, 0xb8, 0xd0, 0xdd, 0xd0, 0xb8, 0xd0, 0xdc, 0xd0, 0xb8, 0xd0, 0xdd, - 0xd0, 0xb8, 0xd1, 0xdc, 0xd0, 0xb8, 0xd1, 0xdd, 0xd0, 0xb8, 0xd1, 0xdc, - 0xd0, 0xb8, 0xd2, 0xdd, 0xd0, 0xb8, 0xd2, 0xdc, 0xd0, 0xb8, 0xd2, 0xdd, - 0xd0, 0xb8, 0xd2, 0xdc, 0xd0, 0xb8, 0xd3, 0xdd, 0xd0, 0xb8, 0xd3, 0xdc, - 0xd0, 0xb8, 0xd3, 0xdd, 0xd0, 0xb8, 0xd4, 0xdc, 0xd0, 0xb8, 0xd4, 0xdd, - 0xd0, 0xb8, 0xd4, 0xdc, 0xd0, 0xb8, 0xd4, 0xdd, 0xd0, 0xb8, 0xd5, 0xdc, - 0xd0, 0xb8, 0xd5, 0xda, 0xd0, 0xb8, 0xd5, 0xdc, 0xd0, 0xb8, 0xd6, 0xda, - 0xd0, 0xb8, 0xd6, 0xdc, 0xd0, 0xb8, 0xd6, 0xda, 0xd0, 0xb8, 0xd6, 0xdc, - 0xd0, 0xb8, 0xd7, 0xda, 0xd0, 0xb8, 0xd7, 0xdc, 0xd0, 0xb8, 0xd7, 0xda, - 0xd0, 0xb8, 0xd7, 0xdc, 0xd0, 0xb8, 0xd8, 0xda, 0xd0, 0xb8, 0xd8, 0xdc, - 0xd0, 0xb8, 0xd8, 0xda, 0xd0, 0xb8, 0xd9, 0xdc, 0xd0, 0xb8, 0xd9, 0xda, - 0xd0, 0xb8, 0xd9, 0xdc, 0xd0, 0xb8, 0xd9, 0xda, 0xd0, 0xb8, 0xda, 0xdc, - 0xd0, 0xb8, 0xda, 0xda, 0xd0, 0xb8, 0xda, 0xdc, 0xd0, 0xb8, 0xda, 0xda, - 0xd0, 0xb8, 0xdb, 0xd9, 0xd1, 0xb8, 0xdb, 0xda, 0xd0, 0xb8, 0xdb, 0xd9, - 0xd1, 0xb8, 0xdb, 0xda, 0xd0, 0xb8, 0xdc, 0xd9, 0xd1, 0xb8, 0xdc, 0xda, - 0xd0, 0xb8, 0xdc, 0xd9, 0xd1, 0xb8, 0xdd, 0xda, 0xd0, 0xb8, 0xdd, 0xdf, - 0xe8, 0xb8, 0xdd, 0xde, 0xe8, 0xb8, 0xdd, 0xdf, 0xe8, 0xb8, 0xde, 0xde, - 0xe8, 0xb8, 0xde, 0xdf, 0xe8, 0xb8, 0xde, 0xde, 0xe8, 0xb8, 0xde, 0xdf, - 0xe8, 0xb8, 0xdf, 0xde, 0xe8, 0xb8, 0xdf, 0xdf, 0xe8, 0xb8, 0xdf, 0xde, - 0xe8, 0xb8, 0xdf, 0xdf, 0xe8, 0xb8, 0xe0, 0xde, 0xe8, 0xb8, 0xe0, 0xdf, - 0xe8, 0xb8, 0xe0, 0xde, 0xe8, 0xb8, 0xe1, 0xdf, 0xe8, 0xb8, 0xe1, 0xde, - 0xe8, 0xb8, 0xe1, 0xdf, 0xe8, 0xb8, 0xe1, 0xde, 0xe8, 0xb8, 0xe2, 0xdf, - 0xe8, 0xb8, 0xe2, 0xde, 0xe8, 0xb8, 0xe2, 0xdf, 0xe8, 0xb8, 0xe2, 0xde, - 0xe8, 0xb8, 0xe3, 0xdd, 0xe9, 0xb8, 0xe3, 0xde, 0xe8, 0xb8, 0xe3, 0xdd, - 0xe9, 0xb8, 0xe3, 0xde, 0xe8, 0xb8, 0xe4, 0xdd, 0xe9, 0xb8, 0xe4, 0xde, - 0xe8, 0xb8, 0xe4, 0xdd, 0xe9, 0xb8, 0xe4, 0xde, 0xe8, 0xb8, 0xe5, 0xdd, - 0xe9, 0xb8, 0xe5, 0xde, 0xe8, 0xb8, 0xe5, 0xdd, 0xe9, 0xb8, 0xe5, 0xde, - 0xe8, 0xb8, 0xe6, 0xdd, 0xe9, 0xb8, 0xe6, 0xde, 0xe8, 0xb8, 0xe6, 0xdd, - 0xe9, 0xb8, 0xe6, 0xde, 0xe8, 0xb8, 0xe7, 0xdd, 0xe9, 0xb8, 0xe7, 0xde, - 0xe8, 0xb8, 0xe7, 0xdd, 0xe9, 0xb8, 0xe7, 0xde, 0xe8, 0xb8, 0xe8, 0xdd, - 0xe9, 0xb8, 0xe8, 0xdd, 0xe9, 0xb8, 0xe8, 0xdd, 0xe9, 0xb8, 0xe8, 0xdd, - 0xe9, 0xb8, 0xe8, 0xdd, 0xe9, 0xb8, 0xe8, 0xdd, 0xe9, 0xb8, 0xe8, 0xdd, - 0xe9, 0xb8, 0xe8, 0xdd, 0xe9, 0xb8, 0xe9, 0xdd, 0xea, 0xb6, 0xe8, 0xdd, - 0xea, 0xb8, 0xe9, 0xdd, 0xea, 0xb6, 0xe8, 0xdd, 0xea, 0xb8, 0xec, 0xdd, - 0xeb, 0xb8, 0xec, 0xdd, 0xeb, 0xb8, 0xec, 0xdd, 0xeb, 0xb8, 0xec, 0xdd, - 0xeb, 0xb8, 0xec, 0xdd, 0xec, 0xb8, 0xec, 0xdd, 0xec, 0xb8, 0xec, 0xdd, - 0xec, 0xb8, 0xec, 0xdd, 0xec, 0xb8, 0xec, 0xdd, 0xec, 0xb8, 0xed, 0xdd, - 0xec, 0xb8, 0xed, 0xdb, 0xec, 0xb8, 0xed, 0xdd, 0xec, 0xb8, 0xed, 0xdb, - 0xec, 0xb8, 0xee, 0xdd, 0xec, 0xb8, 0xee, 0xdb, 0xec, 0xb8, 0xee, 0xdd, - 0xec, 0xb8, 0xee, 0xdb, 0xec, 0xb8, 0xef, 0xdd, 0xec, 0xb8, 0xef, 0xdb, - 0xec, 0xb8, 0xef, 0xdd, 0xec, 0xb8, 0xef, 0xdb, 0xec, 0xb8, 0xf0, 0xdd, - 0xec, 0xb8, 0xf0, 0xdb, 0xec, 0xb8, 0xf0, 0xdd, 0xec, 0xb8, 0xf0, 0xdb, - 0xec, 0xb8, 0xf1, 0xdd, 0xec, 0xb8, 0xf1, 0xdb, 0xec, 0xb8, 0xf1, 0xdd, - 0xec, 0xb8, 0xf1, 0xdb, 0xec, 0xb8, 0xf2, 0xdd, 0xec, 0xb8, 0xf2, 0xdb, - 0xec, 0xb8, 0xf2, 0xdd, 0xec, 0xb8, 0xf2, 0xdb, 0xec, 0xb8, 0xf2, 0xdd, - 0xec, 0xb8, 0xf3, 0xdb, 0xec, 0xb8, 0xf3, 0xdd, 0xec, 0xb8, 0xf3, 0xdb, - 0xec, 0xb8, 0xf3, 0xdd, 0xec, 0xb8, 0xf4, 0xdb, 0xec, 0xb8, 0xf4, 0xdd, - 0xec, 0xb8, 0xf4, 0xdb, 0xec, 0xb8, 0xf4, 0xdd, 0xec, 0xb8, 0xf5, 0xdb, - 0xec, 0xb8, 0xf5, 0xd9, 0xec, 0xb8, 0xf5, 0xdb, 0xec, 0xb8, 0xf5, 0xd9, - 0xec, 0xb8, 0xf5, 0xdb, 0xec, 0xb8, 0xf6, 0xd9, 0xec, 0xb8, 0xf6, 0xdb, - 0xec, 0xb8, 0xf6, 0xd9, 0xec, 0xb8, 0xf6, 0xdb, 0xec, 0xb8, 0xf7, 0xd9, - 0xec, 0xb8, 0xf7, 0xdb, 0xec, 0xb8, 0xf7, 0xd9, 0xec, 0xb8, 0xf7, 0xdb, - 0xec, 0xb8, 0xf8, 0xd9, 0xec, 0xb8, 0xf8, 0xdb, 0xec, 0xb8, 0xf8, 0xd9, - 0xec, 0xb8, 0xf8, 0xdb, 0xec, 0xb8, 0xf8, 0xd9, 0xec, 0xb8, 0xf9, 0xdb, - 0xec, 0xb8, 0xf9, 0xd9, 0xec, 0xb8, 0xf9, 0xdb, 0xec, 0xb8, 0xf9, 0xd9, - 0xec, 0xb8, 0xfa, 0xdb, 0xec, 0xb8, 0xfa, 0xd9, 0xec, 0xb8, 0xfa, 0xdb, - 0xec, 0xb8, 0xfa, 0xd9, 0xec, 0xb8, 0xfa, 0xdb, 0xec, 0xb8, 0xfb, 0xd9, - 0xec, 0xb8, 0xfb, 0xdb, 0xec, 0xb8, 0xfb, 0xd9, 0xec, 0xb8, 0xfb, 0xdb, - 0xec, 0xb8, 0xfc, 0xd9, 0xec, 0xb8, 0xfc, 0xdb, 0xec, 0xb8, 0xfc, 0xd9, - 0xec, 0xb8, 0xfc, 0xdb, 0xec, 0xb8, 0xfc, 0xd9, 0xec, 0xb8, 0xfd, 0xdb, - 0xec, 0xb8, 0xfd, 0xd9, 0xec, 0xb8, 0xfd, 0xdb, 0xec, 0xb8, 0xfd, 0xd9, - 0xec, 0xb8, 0xfe, 0xdb, 0xec, 0xb8, 0xfe, 0xd9, 0xec, 0xb8, 0xfe, 0xd8, - 0xec, 0xb8, 0xfe, 0xd9, 0xec, 0xb8, 0xfe, 0xd8, 0xec, 0xb8, 0xff, 0xd9, - 0xec, 0xb8, 0xff, 0xd8, 0xec, 0xb8, 0x03, 0xe3, 0x88, 0xb8, 0x0a, 0xe1, - 0x89, 0xb8, 0x0f, 0xe3, 0x88, 0xb8, 0x14, 0xe1, 0x89, 0xb8, 0x17, 0xe3, - 0x88, 0xb8, 0x1b, 0xe1, 0x89, 0xb8, 0x1e, 0xe3, 0x88, 0xb8, 0x20, 0xe1, - 0x89, 0xb8, 0x23, 0xe3, 0x88, 0xb8, 0x25, 0xe1, 0x89, 0xb8, 0x27, 0xe3, - 0x88, 0xb8, 0x29, 0xe1, 0x89, 0xb8, 0x2b, 0xe3, 0x88, 0xb8, 0x2d, 0xe1, - 0x89, 0xb8, 0x2f, 0xe3, 0x88, 0xb8, 0x31, 0xe1, 0x89, 0xb8, 0x32, 0xe3, - 0x88, 0xb8, 0x34, 0xe1, 0x89, 0xb8, 0x35, 0xe3, 0x88, 0xb8, 0x37, 0xe1, - 0x89, 0xb8, 0x38, 0xe3, 0x88, 0xb8, 0x3a, 0xe1, 0x89, 0xb8, 0x3b, 0xdf, - 0x89, 0xb8, 0x3c, 0xe1, 0x89, 0xb8, 0x3e, 0xdf, 0x89, 0xb8, 0x3f, 0xe1, - 0x89, 0xb8, 0x40, 0xdf, 0x89, 0xb8, 0x42, 0xe1, 0x89, 0xb8, 0x43, 0xdf, - 0x89, 0xb8, 0x44, 0xe1, 0x89, 0xb8, 0x45, 0xdf, 0x89, 0xb8, 0x46, 0xe1, - 0x89, 0xb8, 0x47, 0xdf, 0x89, 0xb8, 0x48, 0xe1, 0x89, 0xb8, 0x49, 0xdf, - 0x89, 0xb8, 0x4a, 0xe1, 0x89, 0xb8, 0x4b, 0xdf, 0x89, 0xb8, 0x4c, 0xe1, - 0x89, 0xb8, 0x4d, 0xdf, 0x89, 0xb8, 0x4e, 0xe1, 0x89, 0xb8, 0x4f, 0xdf, - 0x89, 0xb8, 0x50, 0xe1, 0x89, 0xb8, 0x51, 0xdf, 0x89, 0xb8, 0x52, 0xe1, - 0x89, 0xb8, 0x53, 0xdf, 0x89, 0xb8, 0x54, 0xe1, 0x89, 0xb8, 0x55, 0xdf, - 0x89, 0xb8, 0x56, 0xe1, 0x89, 0xb8, 0x57, 0xdf, 0x89, 0xb8, 0x58, 0xe1, - 0x89, 0xb8, 0x58, 0xdf, 0x89, 0xb8, 0x59, 0xe1, 0x89, 0xb8, 0x5a, 0xdf, - 0x89, 0xb8, 0x5b, 0xe1, 0x89, 0xb8, 0x5c, 0xdf, 0x89, 0xb8, 0x5d, 0xe1, - 0x89, 0xb8, 0x5d, 0xdf, 0x89, 0xb8, 0x5e, 0xe1, 0x89, 0xb8, 0x5f, 0xdf, - 0x89, 0xb8, 0x60, 0xe1, 0x89, 0xb8, 0x60, 0xdf, 0x89, 0xb8, 0x61, 0xe1, - 0x89, 0xb8, 0x62, 0xdf, 0x89, 0xb8, 0x63, 0xdf, 0x89, 0xb8, 0x63, 0xdf, - 0x89, 0xb8, 0x64, 0xdf, 0x89, 0xb8, 0x65, 0xdf, 0x89, 0xb8, 0x66, 0xdf, - 0x89, 0xb8, 0x66, 0xdf, 0x89, 0xb8, 0x67, 0xdf, 0x89, 0xb8, 0x68, 0xdf, - 0x89, 0xb8, 0x68, 0xdf, 0x89, 0xb8, 0x69, 0xdf, 0x89, 0xb8, 0x6a, 0xdf, - 0x89, 0xb8, 0x6a, 0xdf, 0x89, 0xb8, 0x6b, 0xdf, 0x89, 0xb8, 0x6c, 0xdf, - 0x89, 0xb8, 0x6c, 0xdf, 0x89, 0xb8, 0x6d, 0xdf, 0x89, 0xb8, 0x6e, 0xdf, - 0x89, 0xb8, 0x6e, 0xdf, 0x89, 0xb8, 0x6f, 0xdf, 0x89, 0xb8, 0x70, 0xdf, - 0x89, 0xb8, 0x70, 0xdf, 0x89, 0xb8, 0x71, 0xdf, 0x89, 0xb8, 0x72, 0xdf, - 0x89, 0xb8, 0x72, 0xdf, 0x89, 0xb8, 0x73, 0xdf, 0x89, 0xb8, 0x73, 0xdf, - 0x89, 0xb8, 0x74, 0xdf, 0x89, 0xb8, 0x75, 0xdf, 0x89, 0xb8, 0x75, 0xdf, - 0x89, 0xb8, 0x76, 0xdf, 0x89, 0xb8, 0x76, 0xdf, 0x89, 0xb8, 0x77, 0xdf, - 0x89, 0xb8, 0x78, 0xdf, 0x89, 0xb8, 0x78, 0xdf, 0x89, 0xb8, 0x79, 0xdf, - 0x89, 0xb8, 0x79, 0xdf, 0x89, 0xb8, 0x7a, 0xdd, 0x8a, 0xb8, 0x7a, 0xdf, - 0x89, 0xb8, 0x7b, 0xdd, 0x8a, 0xb8, 0x7c, 0xdf, 0x89, 0xb8, 0x7c, 0xdd, - 0x8a, 0xb8, 0x7d, 0xdf, 0x89, 0xb8, 0x7d, 0xdd, 0x8a, 0xb8, 0x7e, 0xdf, - 0x89, 0xb8, 0x7e, 0xdd, 0x8a, 0xb8, 0x7f, 0xdf, 0x89, 0xb8, 0x7f, 0xdd, - 0x8a, 0xb8, 0x80, 0xdf, 0x89, 0xb8, 0x81, 0xdd, 0x8a, 0xb8, 0x81, 0xdf, - 0x89, 0xb8, 0x82, 0xdd, 0x8a, 0xb8, 0x82, 0xdd, 0x8a, 0xb8, 0x83, 0xdd, - 0x8a, 0xb8, 0x83, 0xdd, 0x8a, 0xb8, 0x84, 0xdd, 0x8a, 0xb8, 0x84, 0xdd, - 0x8a, 0xb8, 0x85, 0xdd, 0x8a, 0xb8, 0x85, 0xdd, 0x8a, 0xb8, 0x86, 0xdd, - 0x8a, 0xb8, 0x86, 0xdd, 0x8a, 0xb8, 0x87, 0xdd, 0x8a, 0xb8, 0x87, 0xdd, - 0x8a, 0xb8, 0x88, 0xdd, 0x8a, 0xb8, 0x88, 0xdd, 0x8a, 0xb8, 0x89, 0xdd, - 0x8a, 0xb8, 0x89, 0xdd, 0x8a, 0xb8, 0x8a, 0xdd, 0x8a, 0xb8, 0x89, 0xdd, - 0x8a, 0xb8, 0x8a, 0xdd, 0x8b, 0xb8, 0x89, 0xdd, 0x8b, 0xb8, 0x8a, 0xdd, - 0x8c, 0xb8, 0x89, 0xdd, 0x8c, 0xb8, 0x8a, 0xdd, 0x8d, 0xb8, 0x89, 0xdd, - 0x8d, 0xb8, 0x8a, 0xdd, 0x8e, 0xb8, 0x8a, 0xdd, 0x8e, 0xb5, 0x8a, 0xdd, - 0x8e, 0xb8, 0x8a, 0xdd, 0x8f, 0xb5, 0x8a, 0xdd, 0x8f, 0xb8, 0x8a, 0xdd, - 0x90, 0xb5, 0x8a, 0xdd, 0x90, 0xb8, 0x8a, 0xdd, 0x91, 0xb5, 0x8a, 0xdd, - 0x91, 0xb8, 0x8a, 0xdd, 0x92, 0xb5, 0x8a, 0xdd, 0x92, 0xb8, 0x8a, 0xdd, - 0x93, 0xb5, 0x8a, 0xdd, 0x93, 0xb8, 0x8a, 0xdd, 0x94, 0xb5, 0x8a, 0xdd, - 0x94, 0xb8, 0x8a, 0xdd, 0x94, 0xb5, 0x8a, 0xdd, 0x95, 0xb8, 0x8a, 0xdd, - 0x95, 0xb5, 0x8a, 0xdd, 0x96, 0xb8, 0x8a, 0xdd, 0x96, 0xb5, 0x8a, 0xdd, - 0x97, 0xb8, 0x8a, 0xdd, 0x97, 0xb5, 0x8a, 0xdd, 0x98, 0xb8, 0x8a, 0xdd, - 0x98, 0xb5, 0x8a, 0xdd, 0x98, 0xb8, 0x8a, 0xdd, 0x99, 0xb5, 0x8a, 0xdd, - 0x99, 0xb8, 0x8a, 0xdd, 0x9a, 0xb5, 0x8a, 0xdd, 0x9a, 0xb8, 0x8a, 0xdd, - 0x9a, 0xb5, 0x8a, 0xdd, 0x9b, 0xb8, 0x8a, 0xdd, 0x9b, 0xb5, 0x8a, 0xdd, - 0x9c, 0xb8, 0x8a, 0xdd, 0x9c, 0xb5, 0x8a, 0xdd, 0x9d, 0xb8, 0x8a, 0xdd, - 0x9d, 0xb5, 0x8a, 0xdd, 0x9d, 0xb8, 0x8a, 0xdd, 0x9e, 0xb5, 0x8a, 0xdd, - 0x9e, 0xb8, 0x8a, 0xdd, 0x9f, 0xb5, 0x8a, 0xdd, 0x9f, 0xb8, 0x8a, 0xdd, - 0x9f, 0xb5, 0x8b, 0xdd, 0xa0, 0xb1, 0x8a, 0xdd, 0xa0, 0xb5, 0x8b, 0xdd, - 0xa1, 0xb1, 0x8a, 0xdd, 0xa1, 0xb5, 0x8b, 0xdd, 0xa1, 0xb1, 0x8a, 0xdd, - 0xa2, 0xb5, 0x8b, 0xdd, 0xa2, 0xb1, 0x8a, 0xdd, 0xa3, 0xb5, 0x8b, 0xdd, - 0xa3, 0xb1, 0x8a, 0xdd, 0xa3, 0xb5, 0x8b, 0xdd, 0xa4, 0xb1, 0x8a, 0xdd, - 0xa4, 0xb5, 0x8b, 0xdd, 0xa5, 0xb1, 0x8a, 0xdd, 0xa5, 0xb5, 0x8b, 0xdd, - 0xa5, 0xb1, 0x8a, 0xdd, 0xa6, 0xb5, 0x8b, 0xdd, 0xa6, 0xb1, 0x8a, 0xdd, - 0xa6, 0xb5, 0xa3, 0xdd, 0xa7, 0x97, 0xa3, 0xdd, 0xa7, 0x97, 0xa3, 0xdd, - 0xa8, 0x97, 0xa3, 0xdd, 0xa8, 0x97, 0xa3, 0xdd, 0xa8, 0x97, 0xa3, 0xdd, - 0xa9, 0x97, 0xa3, 0xdd, 0xa9, 0x97, 0xa3, 0xdd, 0xaa, 0x97, 0xa3, 0xdd, - 0xaa, 0x97, 0xa3, 0xdd, 0xaa, 0x97, 0xa3, 0xdd, 0xab, 0x97, 0xa3, 0xdd, - 0xab, 0x97, 0xa3, 0xdd, 0xab, 0x97, 0xa3, 0xdd, 0xac, 0x97, 0xa3, 0xdd, - 0xac, 0x97, 0xa3, 0xdd, 0xac, 0x97, 0xa3, 0xdd, 0xad, 0x97, 0xa3, 0xdd, - 0xad, 0x97, 0xa3, 0xdd, 0xae, 0x97, 0xa3, 0xdd, 0xae, 0x97, 0xa3, 0xdd, - 0xae, 0x97, 0xa3, 0xdd, 0xaf, 0x97, 0xa3, 0xdd, 0xaf, 0x97, 0xa3, 0xdd, - 0xaf, 0x97, 0xa3, 0xdd, 0xb0, 0x97, 0xa3, 0xdd, 0xb0, 0x97, 0xa3, 0xdd, - 0xb0, 0x97, 0xa3, 0xdd, 0xb1, 0x97, 0xa3, 0xdd, 0xb1, 0x97, 0xa3, 0xdd, - 0xb2, 0x97, 0xa3, 0xdd, 0xb2, 0x97, 0xa3, 0xdd, 0xb2, 0x97, 0xa3, 0xdd, - 0xb3, 0x97, 0xa3, 0xdd, 0xb3, 0x97, 0xa3, 0xdd, 0xb3, 0x97, 0xa3, 0xdd, - 0xb4, 0x97, 0xa3, 0xdd, 0xb4, 0x97, 0xa3, 0xdd, 0xb4, 0x97, 0xa3, 0xdd, - 0xb5, 0x97, 0xa3, 0xdd, 0xb5, 0x97, 0xa3, 0xdd, 0xb5, 0x97, 0xa3, 0xdd, - 0xb6, 0x97, 0xd0, 0xdd, 0xb6, 0xbd, 0xcf, 0xdd, 0xb6, 0xc0, 0xd0, 0xdd, - 0xb7, 0xbd, 0xcf, 0xdd, 0xb7, 0xc0, 0xd0, 0xdd, 0xb7, 0xbd, 0xcf, 0xdd, - 0xb8, 0xc0, 0xd0, 0xdd, 0xb8, 0xbd, 0xcf, 0xdd, 0xb8, 0xc0, 0xd0, 0xdd, - 0xb9, 0xbd, 0xcf, 0xdd, 0xb9, 0xc0, 0xd0, 0xdd, 0xb9, 0xbd, 0xcf, 0xdd, - 0xba, 0xc0, 0xd0, 0xdd, 0xba, 0xbd, 0xcf, 0xdd, 0xba, 0xc0, 0xd0, 0xdd, - 0xbb, 0xbd, 0xcf, 0xdd, 0xbb, 0xc0, 0xd0, 0xdd, 0xbb, 0xbd, 0xcf, 0xdd, - 0xbc, 0xc0, 0xd0, 0xdd, 0xbc, 0xbd, 0xcf, 0xdd, 0xbc, 0xc0, 0xd0, 0xdd, - 0xbd, 0xbd, 0xcf, 0xdd, 0xbd, 0xc0, 0xd0, 0xdd, 0xbd, 0xbd, 0xd0, 0xdd, - 0xbe, 0xba, 0xd0, 0xdd, 0xbe, 0xbd, 0xd0, 0xdd, 0xbe, 0xba, 0xd0, 0xdd, - 0xbf, 0xbd, 0xd0, 0xdd, 0xbf, 0xba, 0xd0, 0xdd, 0xbf, 0xbd, 0xd0, 0xdd, - 0xc0, 0xba, 0xd0, 0xdd, 0xc0, 0xbd, 0xd0, 0xdd, 0xc0, 0xba, 0xd0, 0xdd, - 0xc1, 0xbd, 0xd0, 0xdd, 0xc1, 0xba, 0xd0, 0xdd, 0xc1, 0xbd, 0xd0, 0xdd, - 0xc1, 0xba, 0xd0, 0xdd, 0xc2, 0xbd, 0xd0, 0xdd, 0xc2, 0xba, 0xd0, 0xdd, - 0xc2, 0xbd, 0xd0, 0xdd, 0xc3, 0xba, 0xd0, 0xdd, 0xc3, 0xbd, 0xd0, 0xdd, - 0xc3, 0xba, 0xd0, 0xdd, 0xc4, 0xbd, 0xd0, 0xdd, 0xc4, 0xba, 0xd0, 0xdd, - 0xc4, 0xbd, 0xd0, 0xdd, 0xc5, 0xba, 0xd0, 0xdd, 0xc5, 0xbd, 0xd0, 0xdd, - 0xc5, 0xba, 0xd0, 0xdd, 0xc6, 0xbd, 0xd0, 0xdd, 0xc6, 0xba, 0xd0, 0xdd, - 0xc6, 0xbd, 0xd0, 0xdd, 0xc6, 0xba, 0xd0, 0xdd, 0xc7, 0xbd, 0xd0, 0xdd, - 0xc7, 0xba, 0xd0, 0xdd, 0xc7, 0xbd, 0xd0, 0xdd, 0xc8, 0xba, 0xd0, 0xdd, - 0xc8, 0xbd, 0xd0, 0xdd, 0xc8, 0xba, 0xd0, 0xdd, 0xc9, 0xbd, 0xd0, 0xdd, - 0xc9, 0xba, 0xd0, 0xdd, 0xc9, 0xb8, 0xd0, 0xdd, 0xc9, 0xba, 0xd0, 0xdd, - 0xca, 0xb8, 0xd0, 0xdd, 0xca, 0xba, 0xd0, 0xdd, 0xca, 0xb8, 0xd0, 0xdd, - 0xcb, 0xba, 0xd0, 0xdd, 0xcb, 0xb8, 0xd0, 0xdd, 0xcb, 0xba, 0xd0, 0xdd, - 0xcc, 0xb8, 0xd0, 0xdd, 0xcc, 0xba, 0xd0, 0xdd, 0xcc, 0xb8, 0xd0, 0xdd, - 0xcc, 0xba, 0xd0, 0xdd, 0xcd, 0xb8, 0xd0, 0xdd, 0xcd, 0xba, 0xd0, 0xdd, - 0xcd, 0xb8, 0xd0, 0xdd, 0xce, 0xba, 0xd0, 0xdd, 0xce, 0xb8, 0xd0, 0xdd, - 0xce, 0xba, 0xd0, 0xdd, 0xce, 0xb8, 0xd0, 0xdd, 0xcf, 0xba, 0xd0, 0xdd, - 0xcf, 0xb8, 0xd0, 0xdd, 0xcf, 0xb8, 0xd0, 0xdd, 0xd0, 0xb8, 0xd0, 0xdd, - 0xd0, 0xb8, 0xd0, 0xdc, 0xd0, 0xb8, 0xd0, 0xdd, 0xd0, 0xb8, 0xd1, 0xdc, - 0xd0, 0xb8, 0xd1, 0xdd, 0xd0, 0xb8, 0xd1, 0xdc, 0xd0, 0xb8, 0xd2, 0xdd, - 0xd0, 0xb8, 0xd2, 0xdc, 0xd0, 0xb8, 0xd2, 0xdd, 0xd0, 0xb8, 0xd2, 0xdc, - 0xd0, 0xb8, 0xd3, 0xdd, 0xd0, 0xb8, 0xd3, 0xdc, 0xd0, 0xb8, 0xd3, 0xdd, - 0xd0, 0xb8, 0xd4, 0xdc, 0xd0, 0xb8, 0xd4, 0xdd, 0xd0, 0xb8, 0xd4, 0xdc, - 0xd0, 0xb8, 0xd4, 0xdd, 0xd0, 0xb8, 0xd5, 0xdc, 0xd0, 0xb8, 0xd5, 0xdb, - 0xd0, 0xb8, 0xd5, 0xdc, 0xd0, 0xb8, 0xd6, 0xdb, 0xd0, 0xb8, 0xd6, 0xdc, - 0xd0, 0xb8, 0xd6, 0xdb, 0xd0, 0xb8, 0xd6, 0xdc, 0xd0, 0xb8, 0xd7, 0xdb, - 0xd0, 0xb8, 0xd7, 0xdc, 0xd0, 0xb8, 0xd7, 0xdb, 0xd0, 0xb8, 0xd7, 0xdc, - 0xd0, 0xb8, 0xd8, 0xdb, 0xd0, 0xb8, 0xd8, 0xdc, 0xd0, 0xb8, 0xd8, 0xdb, - 0xd0, 0xb8, 0xd9, 0xdc, 0xd0, 0xb8, 0xd9, 0xdb, 0xd0, 0xb8, 0xd9, 0xdc, - 0xd0, 0xb8, 0xd9, 0xdb, 0xd0, 0xb8, 0xda, 0xdc, 0xd0, 0xb8, 0xda, 0xdb, - 0xd0, 0xb8, 0xda, 0xdc, 0xd0, 0xb8, 0xda, 0xdb, 0xd0, 0xb8, 0xdb, 0xdc, - 0xd0, 0xb8, 0xdb, 0xdb, 0xd0, 0xb8, 0xdb, 0xdc, 0xd0, 0xb8, 0xdb, 0xdb, - 0xd0, 0xb8, 0xdc, 0xdc, 0xd0, 0xb8, 0xdc, 0xdb, 0xd0, 0xb8, 0xdc, 0xdc, - 0xd0, 0xb8, 0xdd, 0xdb, 0xd0, 0xb8, 0xdd, 0xdf, 0xe8, 0xb8, 0xdd, 0xdd, - 0xe8, 0xb8, 0xdd, 0xdf, 0xe8, 0xb8, 0xde, 0xdd, 0xe8, 0xb8, 0xde, 0xdf, - 0xe8, 0xb8, 0xde, 0xdd, 0xe8, 0xb8, 0xde, 0xdf, 0xe8, 0xb8, 0xdf, 0xdd, - 0xe8, 0xb8, 0xdf, 0xdf, 0xe8, 0xb8, 0xdf, 0xdd, 0xe8, 0xb8, 0xdf, 0xdf, - 0xe8, 0xb8, 0xe0, 0xdd, 0xe8, 0xb8, 0xe0, 0xdf, 0xe8, 0xb8, 0xe0, 0xdd, - 0xe8, 0xb8, 0xe1, 0xdf, 0xe8, 0xb8, 0xe1, 0xdd, 0xe8, 0xb8, 0xe1, 0xdf, - 0xe8, 0xb8, 0xe1, 0xdd, 0xe8, 0xb8, 0xe2, 0xdf, 0xe8, 0xb8, 0xe2, 0xdd, - 0xe8, 0xb8, 0xe2, 0xdf, 0xe8, 0xb8, 0xe2, 0xdd, 0xe8, 0xb8, 0xe3, 0xdf, - 0xe8, 0xb8, 0xe3, 0xdd, 0xe8, 0xb8, 0xe3, 0xdf, 0xe8, 0xb8, 0xe3, 0xdd, - 0xe8, 0xb8, 0xe4, 0xdf, 0xe8, 0xb8, 0xe4, 0xdd, 0xe8, 0xb8, 0xe4, 0xdf, - 0xe8, 0xb8, 0xe4, 0xdd, 0xe8, 0xb8, 0xe5, 0xdd, 0xe9, 0xb8, 0xe5, 0xdd, - 0xe8, 0xb8, 0xe5, 0xdd, 0xe9, 0xb8, 0xe5, 0xdd, 0xe8, 0xb8, 0xe6, 0xdd, - 0xe9, 0xb8, 0xe6, 0xdd, 0xe8, 0xb8, 0xe6, 0xdd, 0xe9, 0xb8, 0xe6, 0xdd, - 0xe8, 0xb8, 0xe7, 0xdd, 0xe9, 0xb8, 0xe7, 0xdd, 0xe8, 0xb8, 0xe7, 0xdd, - 0xe9, 0xb8, 0xe7, 0xdd, 0xe8, 0xb8, 0xe8, 0xdd, 0xe9, 0xb8, 0xe8, 0xdd, - 0xe8, 0xb8, 0xe8, 0xdd, 0xe9, 0xb8, 0xe8, 0xdd, 0xe9, 0xb8, 0xe8, 0xdd, - 0xe9, 0xb8, 0xe8, 0xdd, 0xe9, 0xb8, 0xe8, 0xdd, 0xe9, 0xb8, 0xe8, 0xdd, - 0xe9, 0xb8, 0xe9, 0xdd, 0xea, 0xb6, 0xe8, 0xdd, 0xea, 0xb8, 0xe9, 0xdd, - 0xea, 0xb6, 0xec, 0xdd, 0xea, 0xba, 0xec, 0xdd, 0xeb, 0xb8, 0xec, 0xdd, - 0xeb, 0xba, 0xec, 0xdd, 0xeb, 0xb8, 0xec, 0xdd, 0xeb, 0xb8, 0xec, 0xdd, - 0xec, 0xb8, 0xec, 0xdd, 0xec, 0xb8, 0xec, 0xdd, 0xec, 0xb8, 0xec, 0xdd, - 0xec, 0xb8, 0xec, 0xdd, 0xec, 0xb8, 0xed, 0xdd, 0xec, 0xb8, 0xed, 0xdc, - 0xec, 0xb8, 0xed, 0xdd, 0xec, 0xb8, 0xed, 0xdc, 0xec, 0xb8, 0xee, 0xdd, - 0xec, 0xb8, 0xee, 0xdc, 0xec, 0xb8, 0xee, 0xdd, 0xec, 0xb8, 0xee, 0xdc, - 0xec, 0xb8, 0xef, 0xdd, 0xec, 0xb8, 0xef, 0xdc, 0xec, 0xb8, 0xef, 0xdd, - 0xec, 0xb8, 0xef, 0xdc, 0xec, 0xb8, 0xf0, 0xdd, 0xec, 0xb8, 0xf0, 0xdc, - 0xec, 0xb8, 0xf0, 0xdd, 0xec, 0xb8, 0xf0, 0xdc, 0xec, 0xb8, 0xf1, 0xdd, - 0xec, 0xb8, 0xf1, 0xdc, 0xec, 0xb8, 0xf1, 0xdd, 0xec, 0xb8, 0xf1, 0xdc, - 0xec, 0xb8, 0xf2, 0xdd, 0xec, 0xb8, 0xf2, 0xdc, 0xec, 0xb8, 0xf2, 0xdd, - 0xec, 0xb8, 0xf2, 0xdc, 0xec, 0xb8, 0xf2, 0xdd, 0xec, 0xb8, 0xf3, 0xdc, - 0xec, 0xb8, 0xf3, 0xdd, 0xec, 0xb8, 0xf3, 0xdc, 0xec, 0xb8, 0xf3, 0xdd, - 0xec, 0xb8, 0xf4, 0xdc, 0xec, 0xb8, 0xf4, 0xdd, 0xec, 0xb8, 0xf4, 0xdc, - 0xec, 0xb8, 0xf4, 0xdd, 0xec, 0xb8, 0xf5, 0xdc, 0xec, 0xb8, 0xf5, 0xda, - 0xec, 0xb8, 0xf5, 0xdc, 0xec, 0xb8, 0xf5, 0xda, 0xec, 0xb8, 0xf5, 0xdc, - 0xec, 0xb8, 0xf6, 0xda, 0xec, 0xb8, 0xf6, 0xdc, 0xec, 0xb8, 0xf6, 0xda, - 0xec, 0xb8, 0xf6, 0xdc, 0xec, 0xb8, 0xf7, 0xda, 0xec, 0xb8, 0xf7, 0xdc, - 0xec, 0xb8, 0xf7, 0xda, 0xec, 0xb8, 0xf7, 0xdc, 0xec, 0xb8, 0xf8, 0xda, - 0xec, 0xb8, 0xf8, 0xdc, 0xec, 0xb8, 0xf8, 0xda, 0xec, 0xb8, 0xf8, 0xdc, - 0xec, 0xb8, 0xf8, 0xda, 0xec, 0xb8, 0xf9, 0xdc, 0xec, 0xb8, 0xf9, 0xda, - 0xec, 0xb8, 0xf9, 0xdc, 0xec, 0xb8, 0xf9, 0xda, 0xec, 0xb8, 0xfa, 0xdc, - 0xec, 0xb8, 0xfa, 0xda, 0xec, 0xb8, 0xfa, 0xdc, 0xec, 0xb8, 0xfa, 0xda, - 0xec, 0xb8, 0xfa, 0xdc, 0xec, 0xb8, 0xfb, 0xda, 0xec, 0xb8, 0xfb, 0xdc, - 0xec, 0xb8, 0xfb, 0xda, 0xec, 0xb8, 0xfb, 0xdc, 0xec, 0xb8, 0xfc, 0xda, - 0xec, 0xb8, 0xfc, 0xdc, 0xec, 0xb8, 0xfc, 0xda, 0xec, 0xb8, 0xfc, 0xdc, - 0xec, 0xb8, 0xfc, 0xda, 0xec, 0xb8, 0xfd, 0xdc, 0xec, 0xb8, 0xfd, 0xda, - 0xec, 0xb8, 0xfd, 0xdc, 0xec, 0xb8, 0xfd, 0xda, 0xec, 0xb8, 0xfe, 0xdc, - 0xec, 0xb8, 0xfe, 0xda, 0xec, 0xb8, 0xfe, 0xdc, 0xec, 0xb8, 0xfe, 0xda, - 0xec, 0xb8, 0xfe, 0xdc, 0xec, 0xb8, 0xff, 0xda, 0xec, 0xb8, 0xff, 0xdc, - 0xec, 0xb8, 0x03, 0xe2, 0x88, 0xb9, 0x0a, 0xe4, 0x88, 0xb9, 0x0f, 0xe2, - 0x88, 0xb9, 0x14, 0xe4, 0x88, 0xb9, 0x17, 0xe2, 0x88, 0xb9, 0x1b, 0xe4, - 0x88, 0xb9, 0x1e, 0xe2, 0x88, 0xb9, 0x20, 0xe1, 0x89, 0xb9, 0x23, 0xe2, - 0x88, 0xb9, 0x25, 0xe1, 0x89, 0xb9, 0x27, 0xe2, 0x88, 0xb9, 0x29, 0xe1, - 0x89, 0xb9, 0x2b, 0xe2, 0x88, 0xb9, 0x2d, 0xe1, 0x89, 0xb9, 0x2f, 0xe2, - 0x88, 0xb9, 0x31, 0xe1, 0x89, 0xb9, 0x32, 0xe2, 0x88, 0xb9, 0x34, 0xe1, - 0x89, 0xb9, 0x35, 0xe2, 0x88, 0xb9, 0x37, 0xe1, 0x89, 0xb9, 0x38, 0xe2, - 0x88, 0xb9, 0x3a, 0xe1, 0x89, 0xb9, 0x3b, 0xe2, 0x88, 0xb9, 0x3c, 0xe1, - 0x89, 0xb9, 0x3e, 0xe2, 0x88, 0xb9, 0x3f, 0xe1, 0x89, 0xb9, 0x40, 0xe2, - 0x88, 0xb9, 0x42, 0xe1, 0x89, 0xb9, 0x43, 0xe2, 0x88, 0xb9, 0x44, 0xe1, - 0x89, 0xb9, 0x45, 0xe2, 0x88, 0xb9, 0x46, 0xe1, 0x89, 0xb9, 0x47, 0xe2, - 0x88, 0xb9, 0x48, 0xe1, 0x89, 0xb9, 0x49, 0xe2, 0x88, 0xb9, 0x4a, 0xe1, - 0x89, 0xb9, 0x4b, 0xe2, 0x88, 0xb9, 0x4c, 0xe1, 0x89, 0xb9, 0x4d, 0xe2, - 0x88, 0xb9, 0x4e, 0xe1, 0x89, 0xb9, 0x4f, 0xe2, 0x88, 0xb9, 0x50, 0xe1, - 0x89, 0xb9, 0x51, 0xe2, 0x88, 0xb9, 0x52, 0xe1, 0x89, 0xb9, 0x53, 0xdf, - 0x89, 0xb9, 0x54, 0xe1, 0x89, 0xb9, 0x55, 0xdf, 0x89, 0xb9, 0x56, 0xe1, - 0x89, 0xb9, 0x57, 0xdf, 0x89, 0xb9, 0x58, 0xe1, 0x89, 0xb9, 0x58, 0xdf, - 0x89, 0xb9, 0x59, 0xe1, 0x89, 0xb9, 0x5a, 0xdf, 0x89, 0xb9, 0x5b, 0xe1, - 0x89, 0xb9, 0x5c, 0xdf, 0x89, 0xb9, 0x5d, 0xe1, 0x89, 0xb9, 0x5d, 0xdf, - 0x89, 0xb9, 0x5e, 0xe1, 0x89, 0xb9, 0x5f, 0xdf, 0x89, 0xb9, 0x60, 0xe1, - 0x89, 0xb9, 0x60, 0xdf, 0x89, 0xb9, 0x61, 0xe1, 0x89, 0xb9, 0x62, 0xdf, - 0x89, 0xb9, 0x63, 0xdf, 0x89, 0xb9, 0x63, 0xdf, 0x89, 0xb9, 0x64, 0xdf, - 0x89, 0xb9, 0x65, 0xdf, 0x89, 0xb9, 0x66, 0xdf, 0x89, 0xb9, 0x66, 0xdf, - 0x89, 0xb9, 0x67, 0xdf, 0x89, 0xb9, 0x68, 0xdf, 0x89, 0xb9, 0x68, 0xdf, - 0x89, 0xb9, 0x69, 0xdf, 0x89, 0xb9, 0x6a, 0xdf, 0x89, 0xb9, 0x6a, 0xdf, - 0x89, 0xb9, 0x6b, 0xdf, 0x89, 0xb9, 0x6c, 0xdf, 0x89, 0xb9, 0x6c, 0xdf, - 0x89, 0xb9, 0x6d, 0xdf, 0x89, 0xb9, 0x6e, 0xdf, 0x89, 0xb9, 0x6e, 0xdf, - 0x89, 0xb9, 0x6f, 0xdf, 0x89, 0xb9, 0x70, 0xdf, 0x89, 0xb9, 0x70, 0xdf, - 0x89, 0xb9, 0x71, 0xdf, 0x89, 0xb9, 0x72, 0xdf, 0x89, 0xb9, 0x72, 0xdf, - 0x89, 0xb9, 0x73, 0xdf, 0x89, 0xb9, 0x73, 0xdf, 0x89, 0xb9, 0x74, 0xdf, - 0x89, 0xb9, 0x75, 0xdf, 0x89, 0xb9, 0x75, 0xdf, 0x89, 0xb9, 0x76, 0xdf, - 0x89, 0xb9, 0x76, 0xdf, 0x89, 0xb9, 0x77, 0xdf, 0x89, 0xb9, 0x78, 0xdf, - 0x89, 0xb9, 0x78, 0xdf, 0x89, 0xb9, 0x79, 0xdd, 0x8a, 0xb9, 0x79, 0xdf, - 0x89, 0xb9, 0x7a, 0xdd, 0x8a, 0xb9, 0x7a, 0xdf, 0x89, 0xb9, 0x7b, 0xdd, - 0x8a, 0xb9, 0x7c, 0xdf, 0x89, 0xb9, 0x7c, 0xdd, 0x8a, 0xb9, 0x7d, 0xdf, - 0x89, 0xb9, 0x7d, 0xdd, 0x8a, 0xb9, 0x7e, 0xdf, 0x89, 0xb9, 0x7e, 0xdd, - 0x8a, 0xb9, 0x7f, 0xdf, 0x89, 0xb9, 0x7f, 0xdd, 0x8a, 0xb9, 0x80, 0xdf, - 0x89, 0xb9, 0x81, 0xdd, 0x8a, 0xb9, 0x81, 0xdf, 0x89, 0xb9, 0x82, 0xdd, - 0x8a, 0xb9, 0x82, 0xdd, 0x8a, 0xb9, 0x83, 0xdd, 0x8a, 0xb9, 0x83, 0xdd, - 0x8a, 0xb9, 0x84, 0xdd, 0x8a, 0xb9, 0x84, 0xdd, 0x8a, 0xb9, 0x85, 0xdd, - 0x8a, 0xb9, 0x85, 0xdd, 0x8a, 0xb9, 0x86, 0xdd, 0x8a, 0xb9, 0x86, 0xdd, - 0x8a, 0xb9, 0x87, 0xdd, 0x8a, 0xb9, 0x87, 0xdd, 0x8a, 0xb9, 0x88, 0xdd, - 0x8a, 0xb9, 0x88, 0xdd, 0x8a, 0xb9, 0x89, 0xdd, 0x8a, 0xb9, 0x89, 0xdd, - 0x8a, 0xb9, 0x8a, 0xdd, 0x8a, 0xb8, 0x89, 0xdd, 0x8a, 0xb9, 0x8a, 0xdd, - 0x8b, 0xb8, 0x89, 0xdd, 0x8b, 0xb9, 0x8a, 0xdd, 0x8c, 0xb8, 0x89, 0xdd, - 0x8c, 0xb9, 0x8a, 0xdd, 0x8d, 0xb8, 0x89, 0xdd, 0x8d, 0xb9, 0x8a, 0xdd, - 0x8e, 0xb8, 0x89, 0xdd, 0x8e, 0xb9, 0x8a, 0xdd, 0x8e, 0xb8, 0x89, 0xdd, - 0x8f, 0xb9, 0x8a, 0xdd, 0x8f, 0xb8, 0x89, 0xdd, 0x90, 0xb9, 0x8a, 0xdd, - 0x90, 0xb8, 0x89, 0xdd, 0x91, 0xb9, 0x8a, 0xdd, 0x91, 0xb8, 0x8a, 0xdd, - 0x92, 0xb5, 0x8a, 0xdd, 0x92, 0xb8, 0x8a, 0xdd, 0x93, 0xb5, 0x8a, 0xdd, - 0x93, 0xb8, 0x8a, 0xdd, 0x94, 0xb5, 0x8a, 0xdd, 0x94, 0xb8, 0x8a, 0xdd, - 0x94, 0xb5, 0x8a, 0xdd, 0x95, 0xb8, 0x8a, 0xdd, 0x95, 0xb5, 0x8a, 0xdd, - 0x96, 0xb8, 0x8a, 0xdd, 0x96, 0xb5, 0x8a, 0xdd, 0x97, 0xb8, 0x8a, 0xdd, - 0x97, 0xb5, 0x8a, 0xdd, 0x98, 0xb8, 0x8a, 0xdd, 0x98, 0xb5, 0x8a, 0xdd, - 0x98, 0xb8, 0x8a, 0xdd, 0x99, 0xb5, 0x8a, 0xdd, 0x99, 0xb8, 0x8a, 0xdd, - 0x9a, 0xb5, 0x8a, 0xdd, 0x9a, 0xb8, 0x8a, 0xdd, 0x9a, 0xb5, 0x8a, 0xdd, - 0x9b, 0xb8, 0x8a, 0xdd, 0x9b, 0xb5, 0x8a, 0xdd, 0x9c, 0xb8, 0x8a, 0xdd, - 0x9c, 0xb5, 0x8a, 0xdd, 0x9d, 0xb8, 0x8a, 0xdd, 0x9d, 0xb5, 0x8a, 0xdd, - 0x9d, 0xb8, 0x8a, 0xdd, 0x9e, 0xb5, 0x8a, 0xdd, 0x9e, 0xb8, 0x8a, 0xdd, - 0x9f, 0xb5, 0x8a, 0xdd, 0x9f, 0xb8, 0x8a, 0xdd, 0x9f, 0xb5, 0x8b, 0xdd, - 0xa0, 0xb2, 0x8a, 0xdd, 0xa0, 0xb5, 0x8b, 0xdd, 0xa1, 0xb2, 0x8a, 0xdd, - 0xa1, 0xb5, 0x8b, 0xdd, 0xa1, 0xb2, 0x8a, 0xdd, 0xa2, 0xb5, 0x8b, 0xdd, - 0xa2, 0xb2, 0x8a, 0xdd, 0xa3, 0xb5, 0x8b, 0xdd, 0xa3, 0xb2, 0x8a, 0xdd, - 0xa3, 0xb5, 0x8b, 0xdd, 0xa4, 0xb2, 0x8a, 0xdd, 0xa4, 0xb5, 0x8b, 0xdd, - 0xa5, 0xb2, 0x8a, 0xdd, 0xa5, 0xb5, 0x8b, 0xdd, 0xa5, 0xb2, 0x8a, 0xdd, - 0xa6, 0xb5, 0x8b, 0xdd, 0xa6, 0xb2, 0x8a, 0xdd, 0xa6, 0xb5, 0xa3, 0xdd, - 0xa7, 0x98, 0x8a, 0xdd, 0xa7, 0xb5, 0xa3, 0xdd, 0xa8, 0x98, 0xa3, 0xdd, - 0xa8, 0x97, 0xa3, 0xdd, 0xa8, 0x98, 0xa3, 0xdd, 0xa9, 0x97, 0xa3, 0xdd, - 0xa9, 0x98, 0xa3, 0xdd, 0xaa, 0x97, 0xa3, 0xdd, 0xaa, 0x98, 0xa3, 0xdd, - 0xaa, 0x97, 0xa3, 0xdd, 0xab, 0x98, 0xa3, 0xdd, 0xab, 0x97, 0xa3, 0xdd, - 0xab, 0x98, 0xa3, 0xdd, 0xac, 0x97, 0xa3, 0xdd, 0xac, 0x98, 0xa3, 0xdd, - 0xac, 0x97, 0xa3, 0xdd, 0xad, 0x98, 0xa3, 0xdd, 0xad, 0x97, 0xa3, 0xdd, - 0xae, 0x98, 0xa3, 0xdd, 0xae, 0x97, 0xa3, 0xdd, 0xae, 0x98, 0xa3, 0xdd, - 0xaf, 0x97, 0xa3, 0xdd, 0xaf, 0x98, 0xa3, 0xdd, 0xaf, 0x97, 0xa3, 0xdd, - 0xb0, 0x98, 0xa3, 0xdd, 0xb0, 0x97, 0xa3, 0xdd, 0xb0, 0x98, 0xa3, 0xdd, - 0xb1, 0x97, 0xa3, 0xdd, 0xb1, 0x98, 0xa3, 0xdd, 0xb2, 0x97, 0xa3, 0xdd, - 0xb2, 0x98, 0xa3, 0xdd, 0xb2, 0x97, 0xa3, 0xdd, 0xb3, 0x98, 0xa3, 0xdd, - 0xb3, 0x97, 0xa3, 0xdd, 0xb3, 0x98, 0xa3, 0xdd, 0xb4, 0x97, 0xa3, 0xdd, - 0xb4, 0x98, 0xa3, 0xdd, 0xb4, 0x97, 0xa3, 0xdd, 0xb5, 0x98, 0xa3, 0xdd, - 0xb5, 0x97, 0xa3, 0xdd, 0xb5, 0x98, 0xcf, 0xdd, 0xb6, 0xbf, 0xcf, 0xdd, - 0xb6, 0xc2, 0xcf, 0xdd, 0xb6, 0xbf, 0xcf, 0xdd, 0xb7, 0xc2, 0xcf, 0xdd, - 0xb7, 0xbf, 0xcf, 0xdd, 0xb7, 0xc2, 0xcf, 0xdd, 0xb8, 0xbf, 0xd0, 0xdd, - 0xb8, 0xbe, 0xcf, 0xdd, 0xb8, 0xbf, 0xd0, 0xdd, 0xb9, 0xbe, 0xcf, 0xdd, - 0xb9, 0xbf, 0xd0, 0xdd, 0xb9, 0xbe, 0xcf, 0xdd, 0xba, 0xbf, 0xd0, 0xdd, - 0xba, 0xbe, 0xcf, 0xdd, 0xba, 0xbf, 0xd0, 0xdd, 0xbb, 0xbe, 0xcf, 0xdd, - 0xbb, 0xbf, 0xd0, 0xdd, 0xbb, 0xbe, 0xcf, 0xdd, 0xbc, 0xbf, 0xd0, 0xdd, - 0xbc, 0xbe, 0xcf, 0xdd, 0xbc, 0xbf, 0xd0, 0xdd, 0xbd, 0xbe, 0xcf, 0xdd, - 0xbd, 0xbf, 0xd0, 0xdd, 0xbd, 0xbe, 0xcf, 0xdd, 0xbe, 0xbf, 0xd0, 0xdd, - 0xbe, 0xbe, 0xcf, 0xdd, 0xbe, 0xbf, 0xd0, 0xdd, 0xbf, 0xbe, 0xcf, 0xdd, - 0xbf, 0xbf, 0xd0, 0xdd, 0xbf, 0xbe, 0xcf, 0xdd, 0xc0, 0xbf, 0xd0, 0xdd, - 0xc0, 0xbe, 0xcf, 0xdd, 0xc0, 0xbf, 0xd0, 0xdd, 0xc1, 0xbe, 0xcf, 0xdd, - 0xc1, 0xbf, 0xd0, 0xdd, 0xc1, 0xbe, 0xcf, 0xdd, 0xc1, 0xbf, 0xd0, 0xdd, - 0xc2, 0xbe, 0xcf, 0xdd, 0xc2, 0xbf, 0xd0, 0xdd, 0xc2, 0xbe, 0xd0, 0xdd, - 0xc3, 0xbb, 0xd0, 0xdd, 0xc3, 0xbe, 0xd0, 0xdd, 0xc3, 0xbb, 0xd0, 0xdd, - 0xc4, 0xbe, 0xd0, 0xdd, 0xc4, 0xbb, 0xd0, 0xdd, 0xc4, 0xbe, 0xd0, 0xdd, - 0xc5, 0xbb, 0xd0, 0xdd, 0xc5, 0xbe, 0xd0, 0xdd, 0xc5, 0xbb, 0xd0, 0xdd, - 0xc6, 0xbe, 0xd0, 0xdd, 0xc6, 0xbb, 0xd0, 0xdd, 0xc6, 0xbe, 0xd0, 0xdd, - 0xc6, 0xbb, 0xd0, 0xdd, 0xc7, 0xbe, 0xd0, 0xdd, 0xc7, 0xbb, 0xd0, 0xdd, - 0xc7, 0xbe, 0xd0, 0xdd, 0xc8, 0xbb, 0xd0, 0xdd, 0xc8, 0xbe, 0xd0, 0xdd, - 0xc8, 0xbb, 0xd0, 0xdd, 0xc9, 0xbe, 0xd0, 0xdd, 0xc9, 0xbb, 0xd0, 0xdd, - 0xc9, 0xb9, 0xd0, 0xdd, 0xc9, 0xbb, 0xd0, 0xdd, 0xca, 0xb9, 0xd0, 0xdd, - 0xca, 0xbb, 0xd0, 0xdd, 0xca, 0xb9, 0xd0, 0xdd, 0xcb, 0xbb, 0xd0, 0xdd, - 0xcb, 0xb9, 0xd0, 0xdd, 0xcb, 0xbb, 0xd0, 0xdd, 0xcc, 0xb9, 0xd0, 0xdd, - 0xcc, 0xbb, 0xd0, 0xdd, 0xcc, 0xb9, 0xd0, 0xdd, 0xcc, 0xbb, 0xd0, 0xdd, - 0xcd, 0xb9, 0xd0, 0xdd, 0xcd, 0xbb, 0xd0, 0xdd, 0xcd, 0xb9, 0xd0, 0xdd, - 0xce, 0xbb, 0xd0, 0xdd, 0xce, 0xb9, 0xd0, 0xdd, 0xce, 0xbb, 0xd0, 0xdd, - 0xce, 0xb9, 0xd0, 0xdd, 0xcf, 0xbb, 0xd0, 0xdd, 0xcf, 0xb9, 0xd0, 0xdd, - 0xcf, 0xb9, 0xd0, 0xdd, 0xd0, 0xb9, 0xd0, 0xdd, 0xd0, 0xb9, 0xd0, 0xdd, - 0xd0, 0xb9, 0xd0, 0xdd, 0xd0, 0xb9, 0xd1, 0xdd, 0xd0, 0xb9, 0xd1, 0xdd, - 0xd0, 0xb9, 0xd1, 0xdc, 0xd0, 0xb9, 0xd2, 0xdd, 0xd0, 0xb9, 0xd2, 0xdc, - 0xd0, 0xb9, 0xd2, 0xdd, 0xd0, 0xb9, 0xd2, 0xdc, 0xd0, 0xb9, 0xd3, 0xdd, - 0xd0, 0xb9, 0xd3, 0xdc, 0xd0, 0xb9, 0xd3, 0xdd, 0xd0, 0xb9, 0xd4, 0xdc, - 0xd0, 0xb9, 0xd4, 0xdd, 0xd0, 0xb9, 0xd4, 0xdc, 0xd0, 0xb9, 0xd4, 0xdd, - 0xd0, 0xb9, 0xd5, 0xdc, 0xd0, 0xb9, 0xd5, 0xdd, 0xd0, 0xb9, 0xd5, 0xdc, - 0xd0, 0xb9, 0xd6, 0xdd, 0xd0, 0xb9, 0xd6, 0xdc, 0xd0, 0xb9, 0xd6, 0xdd, - 0xd0, 0xb9, 0xd6, 0xdc, 0xd0, 0xb9, 0xd7, 0xdd, 0xd0, 0xb9, 0xd7, 0xdc, - 0xd0, 0xb9, 0xd7, 0xda, 0xd0, 0xb9, 0xd7, 0xdc, 0xd0, 0xb9, 0xd8, 0xda, - 0xd0, 0xb9, 0xd8, 0xdc, 0xd0, 0xb9, 0xd8, 0xda, 0xd0, 0xb9, 0xd9, 0xdc, - 0xd0, 0xb9, 0xd9, 0xda, 0xd0, 0xb9, 0xd9, 0xdc, 0xd0, 0xb9, 0xd9, 0xda, - 0xd0, 0xb9, 0xda, 0xdc, 0xd0, 0xb9, 0xda, 0xda, 0xd0, 0xb9, 0xda, 0xdc, - 0xd0, 0xb9, 0xda, 0xda, 0xd0, 0xb9, 0xdb, 0xdc, 0xd0, 0xb9, 0xdb, 0xda, - 0xd0, 0xb9, 0xdb, 0xdc, 0xd0, 0xb9, 0xdb, 0xda, 0xd0, 0xb9, 0xdc, 0xdc, - 0xd0, 0xb9, 0xdc, 0xda, 0xd0, 0xb9, 0xdc, 0xdc, 0xd0, 0xb9, 0xdd, 0xda, - 0xd0, 0xb9, 0xdd, 0xdf, 0xe8, 0xb9, 0xdd, 0xe0, 0xe8, 0xb9, 0xdd, 0xdf, - 0xe8, 0xb9, 0xde, 0xe0, 0xe8, 0xb9, 0xde, 0xdf, 0xe8, 0xb9, 0xde, 0xe0, - 0xe8, 0xb9, 0xde, 0xdf, 0xe8, 0xb9, 0xdf, 0xe0, 0xe8, 0xb9, 0xdf, 0xdf, - 0xe8, 0xb9, 0xdf, 0xde, 0xe8, 0xb9, 0xdf, 0xdf, 0xe8, 0xb9, 0xe0, 0xde, - 0xe8, 0xb9, 0xe0, 0xdf, 0xe8, 0xb9, 0xe0, 0xde, 0xe8, 0xb9, 0xe1, 0xdf, - 0xe8, 0xb9, 0xe1, 0xde, 0xe8, 0xb9, 0xe1, 0xdf, 0xe8, 0xb9, 0xe1, 0xde, - 0xe8, 0xb9, 0xe2, 0xdf, 0xe8, 0xb9, 0xe2, 0xde, 0xe8, 0xb9, 0xe2, 0xdf, - 0xe8, 0xb9, 0xe2, 0xde, 0xe8, 0xb9, 0xe3, 0xdf, 0xe8, 0xb9, 0xe3, 0xde, - 0xe8, 0xb9, 0xe3, 0xdf, 0xe8, 0xb9, 0xe3, 0xde, 0xe8, 0xb9, 0xe4, 0xdf, - 0xe8, 0xb9, 0xe4, 0xde, 0xe8, 0xb9, 0xe4, 0xdf, 0xe8, 0xb9, 0xe4, 0xde, - 0xe8, 0xb9, 0xe5, 0xdd, 0xe9, 0xb9, 0xe5, 0xde, 0xe8, 0xb9, 0xe5, 0xdd, - 0xe9, 0xb9, 0xe5, 0xde, 0xe8, 0xb9, 0xe6, 0xdd, 0xe9, 0xb9, 0xe6, 0xde, - 0xe8, 0xb9, 0xe6, 0xdd, 0xe9, 0xb9, 0xe6, 0xde, 0xe8, 0xb9, 0xe7, 0xdd, - 0xe9, 0xb9, 0xe7, 0xde, 0xe8, 0xb9, 0xe7, 0xdd, 0xe9, 0xb9, 0xe7, 0xde, - 0xe8, 0xb9, 0xe8, 0xdd, 0xe9, 0xb9, 0xe8, 0xde, 0xe8, 0xb9, 0xe8, 0xdd, - 0xe9, 0xb9, 0xe8, 0xde, 0xe8, 0xb9, 0xe8, 0xdd, 0xe9, 0xb9, 0xe8, 0xdd, - 0xe9, 0xb9, 0xe8, 0xdd, 0xe9, 0xb9, 0xe8, 0xdd, 0xe9, 0xb9, 0xe8, 0xdd, - 0xea, 0xb9, 0xe8, 0xdd, 0xea, 0xb9, 0xe8, 0xdd, 0xea, 0xb9, 0xec, 0xdd, - 0xea, 0xbb, 0xec, 0xdd, 0xeb, 0xb9, 0xec, 0xdd, 0xeb, 0xbb, 0xec, 0xdd, - 0xeb, 0xb9, 0xec, 0xdd, 0xeb, 0xb9, 0xec, 0xdd, 0xec, 0xb9, 0xec, 0xdd, - 0xec, 0xb9, 0xec, 0xdd, 0xec, 0xb9, 0xec, 0xdd, 0xec, 0xb9, 0xec, 0xdd, - 0xec, 0xb9, 0xed, 0xdd, 0xec, 0xb9, 0xed, 0xdd, 0xec, 0xb9, 0xed, 0xdd, - 0xec, 0xb9, 0xed, 0xdd, 0xec, 0xb9, 0xee, 0xdd, 0xec, 0xb9, 0xee, 0xdb, - 0xec, 0xb9, 0xee, 0xdd, 0xec, 0xb9, 0xee, 0xdb, 0xec, 0xb9, 0xef, 0xdd, - 0xec, 0xb9, 0xef, 0xdb, 0xec, 0xb9, 0xef, 0xdd, 0xec, 0xb9, 0xef, 0xdb, - 0xec, 0xb9, 0xf0, 0xdd, 0xec, 0xb9, 0xf0, 0xdb, 0xec, 0xb9, 0xf0, 0xdd, - 0xec, 0xb9, 0xf0, 0xdb, 0xec, 0xb9, 0xf1, 0xdd, 0xec, 0xb9, 0xf1, 0xdb, - 0xec, 0xb9, 0xf1, 0xdd, 0xec, 0xb9, 0xf1, 0xdb, 0xec, 0xb9, 0xf2, 0xdd, - 0xec, 0xb9, 0xf2, 0xdb, 0xec, 0xb9, 0xf2, 0xdd, 0xec, 0xb9, 0xf2, 0xdb, - 0xec, 0xb9, 0xf2, 0xdd, 0xec, 0xb9, 0xf3, 0xdb, 0xec, 0xb9, 0xf3, 0xdd, - 0xec, 0xb9, 0xf3, 0xdb, 0xec, 0xb9, 0xf3, 0xdd, 0xec, 0xb9, 0xf4, 0xdb, - 0xec, 0xb9, 0xf4, 0xdd, 0xec, 0xb9, 0xf4, 0xdb, 0xec, 0xb9, 0xf4, 0xdd, - 0xec, 0xb9, 0xf5, 0xdb, 0xec, 0xb9, 0xf5, 0xdd, 0xec, 0xb9, 0xf5, 0xdb, - 0xec, 0xb9, 0xf5, 0xdd, 0xec, 0xb9, 0xf5, 0xdb, 0xec, 0xb9, 0xf6, 0xdd, - 0xec, 0xb9, 0xf6, 0xdb, 0xec, 0xb9, 0xf6, 0xdd, 0xec, 0xb9, 0xf6, 0xdb, - 0xec, 0xb9, 0xf7, 0xdd, 0xec, 0xb9, 0xf7, 0xdb, 0xec, 0xb9, 0xf7, 0xdd, - 0xec, 0xb9, 0xf7, 0xdb, 0xec, 0xb9, 0xf8, 0xd9, 0xec, 0xb9, 0xf8, 0xdb, - 0xec, 0xb9, 0xf8, 0xd9, 0xec, 0xb9, 0xf8, 0xdb, 0xec, 0xb9, 0xf8, 0xd9, - 0xec, 0xb9, 0xf9, 0xdb, 0xec, 0xb9, 0xf9, 0xd9, 0xec, 0xb9, 0xf9, 0xdb, - 0xec, 0xb9, 0xf9, 0xd9, 0xec, 0xb9, 0xfa, 0xdb, 0xec, 0xb9, 0xfa, 0xd9, - 0xec, 0xb9, 0xfa, 0xdb, 0xec, 0xb9, 0xfa, 0xd9, 0xec, 0xb9, 0xfa, 0xdb, - 0xec, 0xb9, 0xfb, 0xd9, 0xec, 0xb9, 0xfb, 0xdb, 0xec, 0xb9, 0xfb, 0xd9, - 0xec, 0xb9, 0xfb, 0xdb, 0xec, 0xb9, 0xfc, 0xd9, 0xec, 0xb9, 0xfc, 0xdb, - 0xec, 0xb9, 0xfc, 0xd9, 0xec, 0xb9, 0xfc, 0xdb, 0xec, 0xb9, 0xfc, 0xd9, - 0xec, 0xb9, 0xfd, 0xdb, 0xec, 0xb9, 0xfd, 0xd9, 0xec, 0xb9, 0xfd, 0xdb, - 0xec, 0xb9, 0xfd, 0xd9, 0xec, 0xb9, 0xfe, 0xdb, 0xec, 0xb9, 0xfe, 0xd9, - 0xec, 0xb9, 0xfe, 0xdb, 0xec, 0xb9, 0xfe, 0xd9, 0xec, 0xb9, 0xfe, 0xdb, - 0xec, 0xb9, 0xff, 0xd9, 0xec, 0xb9, 0xff, 0xdb, 0xec, 0xb9, 0x03, 0xe3, - 0x88, 0xb9, 0x0a, 0xe1, 0x89, 0xb9, 0x0f, 0xe3, 0x88, 0xb9, 0x14, 0xe1, - 0x89, 0xb9, 0x17, 0xe3, 0x88, 0xb9, 0x1b, 0xe1, 0x89, 0xb9, 0x1e, 0xe3, - 0x88, 0xb9, 0x20, 0xe1, 0x89, 0xb9, 0x23, 0xe3, 0x88, 0xb9, 0x25, 0xe1, - 0x89, 0xb9, 0x27, 0xe3, 0x88, 0xb9, 0x29, 0xe1, 0x89, 0xb9, 0x2b, 0xe3, - 0x88, 0xb9, 0x2d, 0xe1, 0x89, 0xb9, 0x2f, 0xe3, 0x88, 0xb9, 0x31, 0xe1, - 0x89, 0xb9, 0x32, 0xe3, 0x88, 0xb9, 0x34, 0xe1, 0x89, 0xb9, 0x35, 0xe3, - 0x88, 0xb9, 0x37, 0xe1, 0x89, 0xb9, 0x38, 0xe3, 0x88, 0xb9, 0x3a, 0xe1, - 0x89, 0xb9, 0x3b, 0xe3, 0x88, 0xb9, 0x3c, 0xe1, 0x89, 0xb9, 0x3e, 0xe3, - 0x88, 0xb9, 0x3f, 0xe1, 0x89, 0xb9, 0x40, 0xe3, 0x88, 0xb9, 0x42, 0xe1, - 0x89, 0xb9, 0x43, 0xe3, 0x88, 0xb9, 0x44, 0xe1, 0x89, 0xb9, 0x45, 0xe3, - 0x88, 0xb9, 0x46, 0xe1, 0x89, 0xb9, 0x47, 0xe3, 0x88, 0xb9, 0x48, 0xe1, - 0x89, 0xb9, 0x49, 0xe3, 0x88, 0xb9, 0x4a, 0xe1, 0x89, 0xb9, 0x4b, 0xdf, - 0x89, 0xb9, 0x4c, 0xe1, 0x89, 0xb9, 0x4d, 0xdf, 0x89, 0xb9, 0x4e, 0xe1, - 0x89, 0xb9, 0x4f, 0xdf, 0x89, 0xb9, 0x50, 0xe1, 0x89, 0xb9, 0x51, 0xdf, - 0x89, 0xb9, 0x52, 0xe1, 0x89, 0xb9, 0x53, 0xdf, 0x89, 0xb9, 0x54, 0xe1, - 0x89, 0xb9, 0x55, 0xdf, 0x89, 0xb9, 0x56, 0xe1, 0x89, 0xb9, 0x57, 0xdf, - 0x89, 0xb9, 0x58, 0xe1, 0x89, 0xb9, 0x58, 0xdf, 0x89, 0xb9, 0x59, 0xe1, - 0x89, 0xb9, 0x5a, 0xdf, 0x89, 0xb9, 0x5b, 0xe1, 0x89, 0xb9, 0x5c, 0xdf, - 0x89, 0xb9, 0x5d, 0xe1, 0x89, 0xb9, 0x5d, 0xdf, 0x89, 0xb9, 0x5e, 0xe1, - 0x89, 0xb9, 0x5f, 0xdf, 0x89, 0xb9, 0x60, 0xe1, 0x89, 0xb9, 0x60, 0xdf, - 0x89, 0xb9, 0x61, 0xe1, 0x89, 0xb9, 0x62, 0xdf, 0x89, 0xb9, 0x63, 0xe1, - 0x89, 0xb9, 0x63, 0xdf, 0x89, 0xb9, 0x64, 0xe1, 0x89, 0xb9, 0x65, 0xdf, - 0x89, 0xb9, 0x66, 0xe1, 0x89, 0xb9, 0x66, 0xdf, 0x89, 0xb9, 0x67, 0xe1, - 0x89, 0xb9, 0x68, 0xdf, 0x89, 0xb9, 0x68, 0xe1, 0x89, 0xb9, 0x69, 0xdf, - 0x89, 0xb9, 0x6a, 0xe1, 0x89, 0xb9, 0x6a, 0xdf, 0x89, 0xb9, 0x6b, 0xdf, - 0x89, 0xb9, 0x6c, 0xdf, 0x89, 0xb9, 0x6c, 0xdf, 0x89, 0xb9, 0x6d, 0xdf, - 0x89, 0xb9, 0x6e, 0xdf, 0x89, 0xb9, 0x6e, 0xdf, 0x89, 0xb9, 0x6f, 0xdf, - 0x89, 0xb9, 0x70, 0xdf, 0x89, 0xb9, 0x70, 0xdf, 0x89, 0xb9, 0x71, 0xdf, - 0x89, 0xb9, 0x72, 0xdf, 0x89, 0xb9, 0x72, 0xdf, 0x89, 0xb9, 0x73, 0xdf, - 0x89, 0xb9, 0x73, 0xdf, 0x89, 0xb9, 0x74, 0xdf, 0x89, 0xb9, 0x75, 0xdf, - 0x89, 0xb9, 0x75, 0xdf, 0x89, 0xb9, 0x76, 0xdf, 0x89, 0xb9, 0x76, 0xdf, - 0x89, 0xb9, 0x77, 0xdf, 0x89, 0xb9, 0x78, 0xdf, 0x89, 0xb9, 0x78, 0xdf, - 0x89, 0xb9, 0x79, 0xdf, 0x89, 0xb9, 0x79, 0xdf, 0x89, 0xb9, 0x7a, 0xdf, - 0x89, 0xb9, 0x7a, 0xdf, 0x89, 0xb9, 0x7b, 0xdf, 0x89, 0xb9, 0x7c, 0xdf, - 0x89, 0xb9, 0x7c, 0xdf, 0x89, 0xb9, 0x7d, 0xdf, 0x89, 0xb9, 0x7d, 0xdf, - 0x89, 0xb9, 0x7e, 0xdf, 0x89, 0xb9, 0x7e, 0xdf, 0x89, 0xb9, 0x7f, 0xdf, - 0x89, 0xb9, 0x7f, 0xdf, 0x89, 0xb9, 0x80, 0xdf, 0x89, 0xb9, 0x81, 0xdd, - 0x8a, 0xb9, 0x81, 0xdf, 0x89, 0xb9, 0x82, 0xdd, 0x8a, 0xb9, 0x82, 0xdf, - 0x89, 0xb9, 0x83, 0xdd, 0x8a, 0xb9, 0x83, 0xdf, 0x89, 0xb9, 0x84, 0xdd, - 0x8a, 0xb9, 0x84, 0xdf, 0x89, 0xb9, 0x85, 0xdd, 0x8a, 0xb9, 0x85, 0xdf, - 0x89, 0xb9, 0x86, 0xdd, 0x8a, 0xb9, 0x86, 0xdd, 0x8a, 0xb9, 0x87, 0xdd, - 0x8a, 0xb9, 0x87, 0xdd, 0x8a, 0xb9, 0x88, 0xdd, 0x8a, 0xb9, 0x88, 0xdd, - 0x8a, 0xb9, 0x89, 0xdd, 0x8a, 0xb9, 0x89, 0xdd, 0x8a, 0xb9, 0x8a, 0xdd, - 0x8a, 0xb8, 0x89, 0xdd, 0x8a, 0xb9, 0x8a, 0xdd, 0x8b, 0xb8, 0x89, 0xdd, - 0x8b, 0xb9, 0x8a, 0xdd, 0x8c, 0xb8, 0x89, 0xdd, 0x8c, 0xb9, 0x8a, 0xdd, - 0x8d, 0xb8, 0x89, 0xdd, 0x8d, 0xb9, 0x8a, 0xdd, 0x8e, 0xb8, 0x89, 0xdd, - 0x8e, 0xb9, 0x8a, 0xdd, 0x8e, 0xb8, 0x89, 0xdd, 0x8f, 0xb9, 0x8a, 0xdd, - 0x8f, 0xb8, 0x89, 0xdd, 0x90, 0xb9, 0x8a, 0xdd, 0x90, 0xb8, 0x89, 0xdd, - 0x91, 0xb9, 0x8a, 0xdd, 0x91, 0xb8, 0x8a, 0xdd, 0x92, 0xb5, 0x8a, 0xdd, - 0x92, 0xb8, 0x8a, 0xdd, 0x93, 0xb5, 0x8a, 0xdd, 0x93, 0xb8, 0x8a, 0xdd, - 0x94, 0xb5, 0x8a, 0xdd, 0x94, 0xb8, 0x8a, 0xdd, 0x94, 0xb5, 0x8a, 0xdd, - 0x95, 0xb8, 0x8a, 0xdd, 0x95, 0xb5, 0x8a, 0xdd, 0x96, 0xb8, 0x8a, 0xdd, - 0x96, 0xb5, 0x8a, 0xdd, 0x97, 0xb8, 0x8a, 0xdd, 0x97, 0xb5, 0x8a, 0xdd, - 0x98, 0xb8, 0x8a, 0xdd, 0x98, 0xb5, 0x8a, 0xdd, 0x98, 0xb8, 0x8a, 0xdd, - 0x99, 0xb5, 0x8a, 0xdd, 0x99, 0xb8, 0x8a, 0xdd, 0x9a, 0xb5, 0x8a, 0xdd, - 0x9a, 0xb8, 0x8a, 0xdd, 0x9a, 0xb5, 0x8a, 0xdd, 0x9b, 0xb8, 0x8a, 0xdd, - 0x9b, 0xb5, 0x8a, 0xdd, 0x9c, 0xb8, 0x8a, 0xdd, 0x9c, 0xb5, 0x8a, 0xdd, - 0x9d, 0xb8, 0x8a, 0xdd, 0x9d, 0xb5, 0x8a, 0xdd, 0x9d, 0xb8, 0x8a, 0xdd, - 0x9e, 0xb5, 0x8a, 0xdd, 0x9e, 0xb8, 0x8a, 0xdd, 0x9f, 0xb5, 0x8a, 0xdd, - 0x9f, 0xb8, 0x8a, 0xdd, 0x9f, 0xb5, 0x8a, 0xdd, 0xa0, 0xb8, 0x8a, 0xdd, - 0xa0, 0xb5, 0x8a, 0xdd, 0xa1, 0xb8, 0x8a, 0xdd, 0xa1, 0xb5, 0x8a, 0xdd, - 0xa1, 0xb8, 0x8a, 0xdd, 0xa2, 0xb5, 0x8a, 0xdd, 0xa2, 0xb8, 0x8a, 0xdd, - 0xa3, 0xb5, 0x8a, 0xdd, 0xa3, 0xb8, 0x8a, 0xdd, 0xa3, 0xb5, 0x8a, 0xdd, - 0xa4, 0xb8, 0x8a, 0xdd, 0xa4, 0xb5, 0x8a, 0xdd, 0xa5, 0xb8, 0x8a, 0xdd, - 0xa5, 0xb5, 0x8a, 0xdd, 0xa5, 0xb8, 0x8a, 0xdd, 0xa6, 0xb5, 0x8b, 0xdd, - 0xa6, 0xb1, 0x8a, 0xdd, 0xa6, 0xb5, 0x8b, 0xdd, 0xa7, 0xb1, 0x8a, 0xdd, - 0xa7, 0xb5, 0xa3, 0xdd, 0xa8, 0x97, 0xa3, 0xdd, 0xa8, 0x97, 0xa3, 0xdd, - 0xa8, 0x97, 0xa3, 0xdd, 0xa9, 0x97, 0xa3, 0xdd, 0xa9, 0x97, 0xa3, 0xdd, - 0xaa, 0x97, 0xa3, 0xdd, 0xaa, 0x97, 0xa3, 0xdd, 0xaa, 0x97, 0xa3, 0xdd, - 0xab, 0x97, 0xa3, 0xdd, 0xab, 0x97, 0xa3, 0xdd, 0xab, 0x97, 0xa3, 0xdd, - 0xac, 0x97, 0xa3, 0xdd, 0xac, 0x97, 0xa3, 0xdd, 0xac, 0x97, 0xa3, 0xdd, - 0xad, 0x97, 0xa3, 0xdd, 0xad, 0x97, 0xa3, 0xdd, 0xae, 0x97, 0xa3, 0xdd, - 0xae, 0x97, 0xa3, 0xdd, 0xae, 0x97, 0xa3, 0xdd, 0xaf, 0x97, 0xa3, 0xdd, - 0xaf, 0x97, 0xa3, 0xdd, 0xaf, 0x97, 0xa3, 0xdd, 0xb0, 0x97, 0xa3, 0xdd, - 0xb0, 0x97, 0xa3, 0xdd, 0xb0, 0x97, 0xa3, 0xdd, 0xb1, 0x97, 0xa3, 0xdd, - 0xb1, 0x97, 0xa3, 0xdd, 0xb2, 0x97, 0xa3, 0xdd, 0xb2, 0x97, 0xa3, 0xdd, - 0xb2, 0x97, 0xa3, 0xdd, 0xb3, 0x97, 0xa3, 0xdd, 0xb3, 0x97, 0xa3, 0xdd, - 0xb3, 0x97, 0xa3, 0xdd, 0xb4, 0x97, 0xa3, 0xdd, 0xb4, 0x97, 0xa3, 0xdd, - 0xb4, 0x97, 0xa3, 0xdd, 0xb5, 0x97, 0xa3, 0xdd, 0xb5, 0x97, 0xd0, 0xdd, - 0xb5, 0xbd, 0xcf, 0xdd, 0xb6, 0xc0, 0xd0, 0xdd, 0xb6, 0xbd, 0xcf, 0xdd, - 0xb6, 0xc0, 0xd0, 0xdd, 0xb7, 0xbd, 0xcf, 0xdd, 0xb7, 0xc0, 0xd0, 0xdd, - 0xb7, 0xbd, 0xcf, 0xdd, 0xb8, 0xc0, 0xd0, 0xdd, 0xb8, 0xbd, 0xcf, 0xdd, - 0xb8, 0xc0, 0xd0, 0xdd, 0xb9, 0xbd, 0xcf, 0xdd, 0xb9, 0xc0, 0xd0, 0xdd, - 0xb9, 0xbd, 0xcf, 0xdd, 0xba, 0xc0, 0xd0, 0xdd, 0xba, 0xbd, 0xcf, 0xdd, - 0xba, 0xc0, 0xd0, 0xdd, 0xbb, 0xbd, 0xcf, 0xdd, 0xbb, 0xc0, 0xd0, 0xdd, - 0xbb, 0xbd, 0xcf, 0xdd, 0xbc, 0xc0, 0xd0, 0xdd, 0xbc, 0xbd, 0xcf, 0xdd, - 0xbc, 0xc0, 0xd0, 0xdd, 0xbd, 0xbd, 0xcf, 0xdd, 0xbd, 0xc0, 0xd0, 0xdd, - 0xbd, 0xbd, 0xcf, 0xdd, 0xbe, 0xc0, 0xd0, 0xdd, 0xbe, 0xbd, 0xcf, 0xdd, - 0xbe, 0xc0, 0xd0, 0xdd, 0xbf, 0xbd, 0xcf, 0xdd, 0xbf, 0xc0, 0xd0, 0xdd, - 0xbf, 0xbd, 0xcf, 0xdd, 0xc0, 0xc0, 0xd0, 0xdd, 0xc0, 0xbd, 0xcf, 0xdd, - 0xc0, 0xc0, 0xd0, 0xdd, 0xc1, 0xbd, 0xcf, 0xdd, 0xc1, 0xc0, 0xd0, 0xdd, - 0xc1, 0xbd, 0xd0, 0xdd, 0xc1, 0xba, 0xd0, 0xdd, 0xc2, 0xbd, 0xd0, 0xdd, - 0xc2, 0xba, 0xd0, 0xdd, 0xc2, 0xbd, 0xd0, 0xdd, 0xc3, 0xba, 0xd0, 0xdd, - 0xc3, 0xbd, 0xd0, 0xdd, 0xc3, 0xba, 0xd0, 0xdd, 0xc4, 0xbd, 0xd0, 0xdd, - 0xc4, 0xba, 0xd0, 0xdd, 0xc4, 0xbd, 0xd0, 0xdd, 0xc5, 0xba, 0xd0, 0xdd, - 0xc5, 0xbd, 0xd0, 0xdd, 0xc5, 0xba, 0xd0, 0xdd, 0xc6, 0xbd, 0xd0, 0xdd, - 0xc6, 0xba, 0xd0, 0xdd, 0xc6, 0xbd, 0xd0, 0xdd, 0xc6, 0xba, 0xd0, 0xdd, - 0xc7, 0xbd, 0xd0, 0xdd, 0xc7, 0xba, 0xd0, 0xdd, 0xc7, 0xbd, 0xd0, 0xdd, - 0xc8, 0xba, 0xd0, 0xdd, 0xc8, 0xbd, 0xd0, 0xdd, 0xc8, 0xba, 0xd0, 0xdd, - 0xc9, 0xbd, 0xd0, 0xdd, 0xc9, 0xba, 0xd0, 0xdd, 0xc9, 0xbd, 0xd0, 0xdd, - 0xc9, 0xba, 0xd0, 0xdd, 0xca, 0xbd, 0xd0, 0xdd, 0xca, 0xba, 0xd0, 0xdd, - 0xca, 0xbd, 0xd0, 0xdd, 0xcb, 0xba, 0xd0, 0xdd, 0xcb, 0xbd, 0xd0, 0xdd, - 0xcb, 0xba, 0xd0, 0xdd, 0xcc, 0xb9, 0xd0, 0xdd, 0xcc, 0xba, 0xd0, 0xdd, - 0xcc, 0xb9, 0xd0, 0xdd, 0xcc, 0xba, 0xd0, 0xdd, 0xcd, 0xb9, 0xd0, 0xdd, - 0xcd, 0xba, 0xd0, 0xdd, 0xcd, 0xb9, 0xd0, 0xdd, 0xce, 0xba, 0xd0, 0xdd, - 0xce, 0xb9, 0xd0, 0xdd, 0xce, 0xba, 0xd0, 0xdd, 0xce, 0xb9, 0xd0, 0xdd, - 0xcf, 0xba, 0xd0, 0xdd, 0xcf, 0xb9, 0xd0, 0xdd, 0xcf, 0xba, 0xd0, 0xdd, - 0xd0, 0xb9, 0xd0, 0xdd, 0xd0, 0xb9, 0xd0, 0xdd, 0xd0, 0xb9, 0xd0, 0xdd, - 0xd0, 0xb9, 0xd1, 0xdd, 0xd0, 0xb9, 0xd1, 0xdd, 0xd0, 0xb9, 0xd1, 0xdc, - 0xd0, 0xb9, 0xd2, 0xdd, 0xd0, 0xb9, 0xd2, 0xdc, 0xd0, 0xb9, 0xd2, 0xdd, - 0xd0, 0xb9, 0xd2, 0xdc, 0xd0, 0xb9, 0xd3, 0xdd, 0xd0, 0xb9, 0xd3, 0xdc, - 0xd0, 0xb9, 0xd3, 0xdd, 0xd0, 0xb9, 0xd4, 0xdc, 0xd0, 0xb9, 0xd4, 0xdd, - 0xd0, 0xb9, 0xd4, 0xdc, 0xd0, 0xb9, 0xd4, 0xdd, 0xd0, 0xb9, 0xd5, 0xdc, - 0xd0, 0xb9, 0xd5, 0xdd, 0xd0, 0xb9, 0xd5, 0xdc, 0xd0, 0xb9, 0xd6, 0xdd, - 0xd0, 0xb9, 0xd6, 0xdc, 0xd0, 0xb9, 0xd6, 0xdd, 0xd0, 0xb9, 0xd6, 0xdc, - 0xd0, 0xb9, 0xd7, 0xdd, 0xd0, 0xb9, 0xd7, 0xdc, 0xd0, 0xb9, 0xd7, 0xdb, - 0xd0, 0xb9, 0xd7, 0xdc, 0xd0, 0xb9, 0xd8, 0xdb, 0xd0, 0xb9, 0xd8, 0xdc, - 0xd0, 0xb9, 0xd8, 0xdb, 0xd0, 0xb9, 0xd9, 0xdc, 0xd0, 0xb9, 0xd9, 0xdb, - 0xd0, 0xb9, 0xd9, 0xdc, 0xd0, 0xb9, 0xd9, 0xdb, 0xd0, 0xb9, 0xda, 0xdc, - 0xd0, 0xb9, 0xda, 0xdb, 0xd0, 0xb9, 0xda, 0xdc, 0xd0, 0xb9, 0xda, 0xdb, - 0xd0, 0xb9, 0xdb, 0xdc, 0xd0, 0xb9, 0xdb, 0xdb, 0xd0, 0xb9, 0xdb, 0xdc, - 0xd0, 0xb9, 0xdb, 0xdb, 0xd0, 0xb9, 0xdc, 0xdc, 0xd0, 0xb9, 0xdc, 0xdb, - 0xd0, 0xb9, 0xdc, 0xdc, 0xd0, 0xb9, 0xdd, 0xdb, 0xd0, 0xb9, 0xdd, 0xdf, - 0xe8, 0xb9, 0xdd, 0xe1, 0xe8, 0xb9, 0xdd, 0xdf, 0xe8, 0xb9, 0xde, 0xe1, - 0xe8, 0xb9, 0xde, 0xdf, 0xe8, 0xb9, 0xde, 0xe1, 0xe8, 0xb9, 0xde, 0xdf, - 0xe8, 0xb9, 0xdf, 0xe1, 0xe8, 0xb9, 0xdf, 0xdf, 0xe8, 0xb9, 0xdf, 0xdd, - 0xe8, 0xb9, 0xdf, 0xdf, 0xe8, 0xb9, 0xe0, 0xdd, 0xe8, 0xb9, 0xe0, 0xdf, - 0xe8, 0xb9, 0xe0, 0xdd, 0xe8, 0xb9, 0xe1, 0xdf, 0xe8, 0xb9, 0xe1, 0xdd, - 0xe8, 0xb9, 0xe1, 0xdf, 0xe8, 0xb9, 0xe1, 0xdd, 0xe8, 0xb9, 0xe2, 0xdf, - 0xe8, 0xb9, 0xe2, 0xdd, 0xe8, 0xb9, 0xe2, 0xdf, 0xe8, 0xb9, 0xe2, 0xdd, - 0xe8, 0xb9, 0xe3, 0xdf, 0xe8, 0xb9, 0xe3, 0xdd, 0xe8, 0xb9, 0xe3, 0xdf, - 0xe8, 0xb9, 0xe3, 0xdd, 0xe8, 0xb9, 0xe4, 0xdf, 0xe8, 0xb9, 0xe4, 0xdd, - 0xe8, 0xb9, 0xe4, 0xdf, 0xe8, 0xb9, 0xe4, 0xdd, 0xe8, 0xb9, 0xe5, 0xdf, - 0xe8, 0xb9, 0xe5, 0xdd, 0xe8, 0xb9, 0xe5, 0xdf, 0xe8, 0xb9, 0xe5, 0xdd, - 0xe8, 0xb9, 0xe6, 0xdf, 0xe8, 0xb9, 0xe6, 0xdd, 0xe8, 0xb9, 0xe6, 0xdf, - 0xe8, 0xb9, 0xe6, 0xdd, 0xe8, 0xb9, 0xe7, 0xdd, 0xe9, 0xb9, 0xe7, 0xdd, - 0xe8, 0xb9, 0xe7, 0xdd, 0xe9, 0xb9, 0xe7, 0xdd, 0xe8, 0xb9, 0xe8, 0xdd, - 0xe9, 0xb9, 0xe8, 0xdd, 0xe8, 0xb9, 0xe8, 0xdd, 0xe9, 0xb9, 0xe8, 0xdd, - 0xe8, 0xb8, 0xe8, 0xdd, 0xe9, 0xb9, 0xe8, 0xdd, 0xe9, 0xb8, 0xe8, 0xdd, - 0xe9, 0xb9, 0xe8, 0xdd, 0xe9, 0xb8, 0xe8, 0xdd, 0xea, 0xb9, 0xe8, 0xdd, - 0xea, 0xb8, 0xe8, 0xdd, 0xea, 0xb9, 0xec, 0xdd, 0xea, 0xba, 0xec, 0xdd, - 0xeb, 0xb9, 0xec, 0xdd, 0xeb, 0xba, 0xec, 0xdd, 0xeb, 0xb9, 0xec, 0xdd, - 0xeb, 0xba, 0xec, 0xdd, 0xec, 0xb9, 0xec, 0xdd, 0xec, 0xb9, 0xec, 0xdd, - 0xec, 0xb9, 0xec, 0xdd, 0xec, 0xb9, 0xec, 0xdd, 0xec, 0xb9, 0xed, 0xdd, - 0xec, 0xb9, 0xed, 0xdd, 0xec, 0xb9, 0xed, 0xdd, 0xec, 0xb9, 0xed, 0xdd, - 0xec, 0xb9, 0xee, 0xdd, 0xec, 0xb9, 0xee, 0xdc, 0xec, 0xb9, 0xee, 0xdd, - 0xec, 0xb9, 0xee, 0xdc, 0xec, 0xb9, 0xef, 0xdd, 0xec, 0xb9, 0xef, 0xdc, - 0xec, 0xb9, 0xef, 0xdd, 0xec, 0xb9, 0xef, 0xdc, 0xec, 0xb9, 0xf0, 0xdd, - 0xec, 0xb9, 0xf0, 0xdc, 0xec, 0xb9, 0xf0, 0xdd, 0xec, 0xb9, 0xf0, 0xdc, - 0xec, 0xb9, 0xf1, 0xdd, 0xec, 0xb9, 0xf1, 0xdc, 0xec, 0xb9, 0xf1, 0xdd, - 0xec, 0xb9, 0xf1, 0xdc, 0xec, 0xb9, 0xf2, 0xdd, 0xec, 0xb9, 0xf2, 0xdc, - 0xec, 0xb9, 0xf2, 0xdd, 0xec, 0xb9, 0xf2, 0xdc, 0xec, 0xb9, 0xf2, 0xdd, - 0xec, 0xb9, 0xf3, 0xdc, 0xec, 0xb9, 0xf3, 0xdd, 0xec, 0xb9, 0xf3, 0xdc, - 0xec, 0xb9, 0xf3, 0xdd, 0xec, 0xb9, 0xf4, 0xdc, 0xec, 0xb9, 0xf4, 0xdd, - 0xec, 0xb9, 0xf4, 0xdc, 0xec, 0xb9, 0xf4, 0xdd, 0xec, 0xb9, 0xf5, 0xdc, - 0xec, 0xb9, 0xf5, 0xdd, 0xec, 0xb9, 0xf5, 0xdc, 0xec, 0xb9, 0xf5, 0xdd, - 0xec, 0xb9, 0xf5, 0xdc, 0xec, 0xb9, 0xf6, 0xdd, 0xec, 0xb9, 0xf6, 0xdc, - 0xec, 0xb9, 0xf6, 0xdd, 0xec, 0xb9, 0xf6, 0xdc, 0xec, 0xb9, 0xf7, 0xdd, - 0xec, 0xb9, 0xf7, 0xdc, 0xec, 0xb9, 0xf7, 0xdd, 0xec, 0xb9, 0xf7, 0xdc, - 0xec, 0xb9, 0xf8, 0xda, 0xec, 0xb9, 0xf8, 0xdc, 0xec, 0xb9, 0xf8, 0xda, - 0xec, 0xb9, 0xf8, 0xdc, 0xec, 0xb9, 0xf8, 0xda, 0xec, 0xb9, 0xf9, 0xdc, - 0xec, 0xb9, 0xf9, 0xda, 0xec, 0xb9, 0xf9, 0xdc, 0xec, 0xb9, 0xf9, 0xda, - 0xec, 0xb9, 0xfa, 0xdc, 0xec, 0xb9, 0xfa, 0xda, 0xec, 0xb9, 0xfa, 0xdc, - 0xec, 0xb9, 0xfa, 0xda, 0xec, 0xb9, 0xfa, 0xdc, 0xec, 0xb9, 0xfb, 0xda, - 0xec, 0xb9, 0xfb, 0xdc, 0xec, 0xb9, 0xfb, 0xda, 0xec, 0xb9, 0xfb, 0xdc, - 0xec, 0xb9, 0xfc, 0xda, 0xec, 0xb9, 0xfc, 0xdc, 0xec, 0xb9, 0xfc, 0xda, - 0xec, 0xb9, 0xfc, 0xdc, 0xec, 0xb9, 0xfc, 0xda, 0xec, 0xb9, 0xfd, 0xdc, - 0xec, 0xb9, 0xfd, 0xda, 0xec, 0xb9, 0xfd, 0xdc, 0xec, 0xb9, 0xfd, 0xda, - 0xec, 0xb9, 0xfe, 0xdc, 0xec, 0xb9, 0xfe, 0xda, 0xec, 0xb9, 0xfe, 0xdc, - 0xec, 0xb9, 0xfe, 0xda, 0xec, 0xb9, 0xfe, 0xdc, 0xec, 0xb9, 0xff, 0xda, - 0xec, 0xb9, 0xff, 0xdc, 0xec, 0xb9, 0x03, 0xe2, 0x88, 0xba, 0x0a, 0xe4, - 0x88, 0xba, 0x0f, 0xe2, 0x88, 0xba, 0x14, 0xe4, 0x88, 0xba, 0x17, 0xe2, - 0x88, 0xba, 0x1b, 0xe4, 0x88, 0xba, 0x1e, 0xe2, 0x88, 0xba, 0x20, 0xe4, - 0x88, 0xba, 0x23, 0xe2, 0x88, 0xba, 0x25, 0xe4, 0x88, 0xba, 0x27, 0xe2, - 0x88, 0xba, 0x29, 0xe4, 0x88, 0xba, 0x2b, 0xe2, 0x88, 0xba, 0x2d, 0xe4, - 0x88, 0xba, 0x2f, 0xe2, 0x88, 0xba, 0x31, 0xe4, 0x88, 0xba, 0x32, 0xe2, - 0x88, 0xba, 0x34, 0xe4, 0x88, 0xba, 0x35, 0xe2, 0x88, 0xba, 0x37, 0xe1, - 0x89, 0xba, 0x38, 0xe2, 0x88, 0xba, 0x3a, 0xe1, 0x89, 0xba, 0x3b, 0xe2, - 0x88, 0xba, 0x3c, 0xe1, 0x89, 0xba, 0x3e, 0xe2, 0x88, 0xba, 0x3f, 0xe1, - 0x89, 0xba, 0x40, 0xe2, 0x88, 0xba, 0x42, 0xe1, 0x89, 0xba, 0x43, 0xe2, - 0x88, 0xba, 0x44, 0xe1, 0x89, 0xba, 0x45, 0xe2, 0x88, 0xba, 0x46, 0xe1, - 0x89, 0xba, 0x47, 0xe2, 0x88, 0xba, 0x48, 0xe1, 0x89, 0xba, 0x49, 0xe2, - 0x88, 0xba, 0x4a, 0xe1, 0x89, 0xba, 0x4b, 0xe2, 0x88, 0xba, 0x4c, 0xe1, - 0x89, 0xba, 0x4d, 0xe2, 0x88, 0xba, 0x4e, 0xe1, 0x89, 0xba, 0x4f, 0xe2, - 0x88, 0xba, 0x50, 0xe1, 0x89, 0xba, 0x51, 0xe2, 0x88, 0xba, 0x52, 0xe1, - 0x89, 0xba, 0x53, 0xe2, 0x88, 0xba, 0x54, 0xe1, 0x89, 0xba, 0x55, 0xe2, - 0x88, 0xba, 0x56, 0xe1, 0x89, 0xba, 0x57, 0xe2, 0x88, 0xba, 0x58, 0xe1, - 0x89, 0xba, 0x58, 0xe2, 0x88, 0xba, 0x59, 0xe1, 0x89, 0xba, 0x5a, 0xe2, - 0x88, 0xba, 0x5b, 0xe1, 0x89, 0xba, 0x5c, 0xe2, 0x88, 0xba, 0x5d, 0xe1, - 0x89, 0xba, 0x5d, 0xdf, 0x89, 0xba, 0x5e, 0xe1, 0x89, 0xba, 0x5f, 0xdf, - 0x89, 0xba, 0x60, 0xe1, 0x89, 0xba, 0x60, 0xdf, 0x89, 0xba, 0x61, 0xe1, - 0x89, 0xba, 0x62, 0xdf, 0x89, 0xba, 0x63, 0xe1, 0x89, 0xba, 0x63, 0xdf, - 0x89, 0xba, 0x64, 0xe1, 0x89, 0xba, 0x65, 0xdf, 0x89, 0xba, 0x66, 0xe1, - 0x89, 0xba, 0x66, 0xdf, 0x89, 0xba, 0x67, 0xe1, 0x89, 0xba, 0x68, 0xdf, - 0x89, 0xba, 0x68, 0xe1, 0x89, 0xba, 0x69, 0xdf, 0x89, 0xba, 0x6a, 0xe1, - 0x89, 0xba, 0x6a, 0xdf, 0x89, 0xba, 0x6b, 0xdf, 0x89, 0xba, 0x6c, 0xdf, - 0x89, 0xba, 0x6c, 0xdf, 0x89, 0xba, 0x6d, 0xdf, 0x89, 0xba, 0x6e, 0xdf, - 0x89, 0xba, 0x6e, 0xdf, 0x89, 0xba, 0x6f, 0xdf, 0x89, 0xba, 0x70, 0xdf, - 0x89, 0xba, 0x70, 0xdf, 0x89, 0xba, 0x71, 0xdf, 0x89, 0xba, 0x72, 0xdf, - 0x89, 0xba, 0x72, 0xdf, 0x89, 0xba, 0x73, 0xdf, 0x89, 0xba, 0x73, 0xdf, - 0x89, 0xba, 0x74, 0xdf, 0x89, 0xba, 0x75, 0xdf, 0x89, 0xba, 0x75, 0xdf, - 0x89, 0xba, 0x76, 0xdf, 0x89, 0xba, 0x76, 0xdf, 0x89, 0xba, 0x77, 0xdf, - 0x89, 0xba, 0x78, 0xdf, 0x89, 0xba, 0x78, 0xdf, 0x89, 0xba, 0x79, 0xdf, - 0x89, 0xba, 0x79, 0xdf, 0x89, 0xba, 0x7a, 0xdf, 0x89, 0xba, 0x7a, 0xdf, - 0x89, 0xba, 0x7b, 0xdf, 0x89, 0xba, 0x7c, 0xdf, 0x89, 0xba, 0x7c, 0xdf, - 0x89, 0xba, 0x7d, 0xdf, 0x89, 0xba, 0x7d, 0xdf, 0x89, 0xba, 0x7e, 0xdf, - 0x89, 0xba, 0x7e, 0xdf, 0x89, 0xba, 0x7f, 0xdf, 0x89, 0xba, 0x7f, 0xdf, - 0x89, 0xba, 0x80, 0xdf, 0x89, 0xba, 0x81, 0xde, 0x8a, 0xba, 0x81, 0xdf, - 0x89, 0xba, 0x82, 0xde, 0x8a, 0xba, 0x82, 0xdf, 0x89, 0xba, 0x83, 0xde, - 0x8a, 0xba, 0x83, 0xdf, 0x89, 0xba, 0x84, 0xde, 0x8a, 0xba, 0x84, 0xdf, - 0x89, 0xba, 0x85, 0xde, 0x8a, 0xba, 0x85, 0xdf, 0x89, 0xba, 0x86, 0xde, - 0x8a, 0xba, 0x86, 0xde, 0x8a, 0xba, 0x87, 0xde, 0x8a, 0xba, 0x87, 0xde, - 0x8a, 0xba, 0x88, 0xde, 0x8a, 0xba, 0x88, 0xde, 0x8a, 0xba, 0x89, 0xde, - 0x8a, 0xba, 0x89, 0xde, 0x8a, 0xba, 0x89, 0xde, 0x8a, 0xba, 0x89, 0xde, - 0x8a, 0xba, 0x89, 0xde, 0x8b, 0xba, 0x89, 0xde, 0x8b, 0xba, 0x8a, 0xde, - 0x8c, 0xb8, 0x89, 0xde, 0x8c, 0xba, 0x8a, 0xde, 0x8d, 0xb8, 0x89, 0xde, - 0x8d, 0xba, 0x8a, 0xde, 0x8e, 0xb8, 0x89, 0xde, 0x8e, 0xba, 0x8a, 0xde, - 0x8e, 0xb8, 0x89, 0xde, 0x8f, 0xba, 0x8a, 0xde, 0x8f, 0xb8, 0x89, 0xde, - 0x90, 0xba, 0x8a, 0xde, 0x90, 0xb8, 0x89, 0xde, 0x91, 0xba, 0x8a, 0xde, - 0x91, 0xb8, 0x89, 0xde, 0x92, 0xba, 0x8a, 0xde, 0x92, 0xb8, 0x89, 0xde, - 0x93, 0xba, 0x8a, 0xde, 0x93, 0xb8, 0x89, 0xde, 0x94, 0xba, 0x8a, 0xde, - 0x94, 0xb8, 0x89, 0xde, 0x94, 0xba, 0x8a, 0xde, 0x95, 0xb8, 0x8a, 0xde, - 0x95, 0xb5, 0x8a, 0xde, 0x96, 0xb8, 0x8a, 0xde, 0x96, 0xb5, 0x8a, 0xde, - 0x97, 0xb8, 0x8a, 0xde, 0x97, 0xb5, 0x8a, 0xde, 0x98, 0xb8, 0x8a, 0xde, - 0x98, 0xb5, 0x8a, 0xde, 0x98, 0xb8, 0x8a, 0xde, 0x99, 0xb5, 0x8a, 0xde, - 0x99, 0xb8, 0x8a, 0xde, 0x9a, 0xb5, 0x8a, 0xde, 0x9a, 0xb8, 0x8a, 0xde, - 0x9a, 0xb5, 0x8a, 0xde, 0x9b, 0xb8, 0x8a, 0xde, 0x9b, 0xb5, 0x8a, 0xde, - 0x9c, 0xb8, 0x8a, 0xde, 0x9c, 0xb5, 0x8a, 0xde, 0x9d, 0xb8, 0x8a, 0xde, - 0x9d, 0xb5, 0x8a, 0xde, 0x9d, 0xb8, 0x8a, 0xde, 0x9e, 0xb5, 0x8a, 0xde, - 0x9e, 0xb8, 0x8a, 0xde, 0x9f, 0xb5, 0x8a, 0xde, 0x9f, 0xb8, 0x8a, 0xde, - 0x9f, 0xb5, 0x8a, 0xde, 0xa0, 0xb8, 0x8a, 0xde, 0xa0, 0xb5, 0x8a, 0xde, - 0xa1, 0xb8, 0x8a, 0xde, 0xa1, 0xb5, 0x8a, 0xde, 0xa1, 0xb8, 0x8a, 0xde, - 0xa2, 0xb5, 0x8a, 0xde, 0xa2, 0xb8, 0x8a, 0xde, 0xa3, 0xb5, 0x8a, 0xde, - 0xa3, 0xb8, 0x8a, 0xde, 0xa3, 0xb5, 0x8a, 0xde, 0xa4, 0xb8, 0x8a, 0xde, - 0xa4, 0xb5, 0x8b, 0xde, 0xa5, 0xb2, 0x8a, 0xde, 0xa5, 0xb5, 0x8b, 0xde, - 0xa5, 0xb2, 0x8a, 0xde, 0xa6, 0xb5, 0x8b, 0xde, 0xa6, 0xb2, 0x8a, 0xde, - 0xa6, 0xb5, 0x8b, 0xde, 0xa7, 0xb2, 0x8a, 0xde, 0xa7, 0xb5, 0xa3, 0xde, - 0xa8, 0x98, 0x8a, 0xde, 0xa8, 0xb5, 0xa3, 0xde, 0xa8, 0x98, 0xa3, 0xde, - 0xa9, 0x97, 0xa3, 0xde, 0xa9, 0x98, 0xa3, 0xde, 0xaa, 0x97, 0xa3, 0xde, - 0xaa, 0x98, 0xa3, 0xde, 0xaa, 0x97, 0xa3, 0xde, 0xab, 0x98, 0xa3, 0xde, - 0xab, 0x97, 0xa3, 0xde, 0xab, 0x98, 0xa3, 0xde, 0xac, 0x97, 0xa3, 0xde, - 0xac, 0x98, 0xa3, 0xde, 0xac, 0x97, 0xa3, 0xde, 0xad, 0x98, 0xa3, 0xde, - 0xad, 0x97, 0xa3, 0xde, 0xae, 0x98, 0xa3, 0xde, 0xae, 0x97, 0xa3, 0xde, - 0xae, 0x98, 0xa3, 0xde, 0xaf, 0x97, 0xa3, 0xde, 0xaf, 0x98, 0xa3, 0xde, - 0xaf, 0x97, 0xa3, 0xde, 0xb0, 0x98, 0xa3, 0xde, 0xb0, 0x97, 0xa3, 0xde, - 0xb0, 0x98, 0xa3, 0xde, 0xb1, 0x97, 0xa3, 0xde, 0xb1, 0x98, 0xa3, 0xde, - 0xb2, 0x97, 0xa3, 0xde, 0xb2, 0x98, 0xa3, 0xde, 0xb2, 0x97, 0xa3, 0xde, - 0xb3, 0x98, 0xa3, 0xde, 0xb3, 0x97, 0xa3, 0xde, 0xb3, 0x98, 0xa3, 0xde, - 0xb4, 0x97, 0xa3, 0xde, 0xb4, 0x98, 0xa3, 0xde, 0xb4, 0x97, 0xa3, 0xde, - 0xb5, 0x98, 0xcf, 0xde, 0xb5, 0xbf, 0xcf, 0xde, 0xb5, 0xc2, 0xcf, 0xde, - 0xb6, 0xbf, 0xcf, 0xde, 0xb6, 0xc2, 0xcf, 0xde, 0xb6, 0xbf, 0xcf, 0xde, - 0xb7, 0xc2, 0xcf, 0xde, 0xb7, 0xbf, 0xcf, 0xde, 0xb7, 0xc2, 0xcf, 0xde, - 0xb8, 0xbf, 0xcf, 0xde, 0xb8, 0xc2, 0xcf, 0xde, 0xb8, 0xbf, 0xcf, 0xde, - 0xb9, 0xc2, 0xcf, 0xde, 0xb9, 0xbf, 0xcf, 0xde, 0xb9, 0xc2, 0xcf, 0xde, - 0xba, 0xbf, 0xcf, 0xde, 0xba, 0xc2, 0xcf, 0xde, 0xba, 0xbf, 0xcf, 0xde, - 0xbb, 0xc2, 0xcf, 0xde, 0xbb, 0xbf, 0xcf, 0xde, 0xbb, 0xc2, 0xcf, 0xde, - 0xbc, 0xbf, 0xd0, 0xde, 0xbc, 0xbe, 0xcf, 0xde, 0xbc, 0xbf, 0xd0, 0xde, - 0xbd, 0xbe, 0xcf, 0xde, 0xbd, 0xbf, 0xd0, 0xde, 0xbd, 0xbe, 0xcf, 0xde, - 0xbe, 0xbf, 0xd0, 0xde, 0xbe, 0xbe, 0xcf, 0xde, 0xbe, 0xbf, 0xd0, 0xde, - 0xbf, 0xbe, 0xcf, 0xde, 0xbf, 0xbf, 0xd0, 0xde, 0xbf, 0xbe, 0xcf, 0xde, - 0xc0, 0xbf, 0xd0, 0xde, 0xc0, 0xbe, 0xcf, 0xde, 0xc0, 0xbf, 0xd0, 0xde, - 0xc1, 0xbe, 0xcf, 0xde, 0xc1, 0xbf, 0xd0, 0xde, 0xc1, 0xbe, 0xcf, 0xde, - 0xc1, 0xbf, 0xd0, 0xde, 0xc2, 0xbe, 0xcf, 0xde, 0xc2, 0xbf, 0xd0, 0xde, - 0xc2, 0xbe, 0xcf, 0xde, 0xc3, 0xbf, 0xd0, 0xde, 0xc3, 0xbe, 0xcf, 0xde, - 0xc3, 0xbf, 0xd0, 0xde, 0xc4, 0xbe, 0xcf, 0xde, 0xc4, 0xbf, 0xd0, 0xde, - 0xc4, 0xbe, 0xcf, 0xde, 0xc5, 0xbf, 0xd0, 0xde, 0xc5, 0xbe, 0xd0, 0xde, - 0xc5, 0xbb, 0xd0, 0xde, 0xc6, 0xbe, 0xd0, 0xde, 0xc6, 0xbb, 0xd0, 0xde, - 0xc6, 0xbe, 0xd0, 0xde, 0xc6, 0xbb, 0xd0, 0xde, 0xc7, 0xbe, 0xd0, 0xde, - 0xc7, 0xbb, 0xd0, 0xde, 0xc7, 0xbe, 0xd0, 0xde, 0xc8, 0xbb, 0xd0, 0xde, - 0xc8, 0xbe, 0xd0, 0xde, 0xc8, 0xbb, 0xd0, 0xde, 0xc9, 0xbe, 0xd0, 0xde, - 0xc9, 0xbb, 0xd0, 0xde, 0xc9, 0xbe, 0xd0, 0xde, 0xc9, 0xbb, 0xd0, 0xde, - 0xca, 0xbe, 0xd0, 0xde, 0xca, 0xbb, 0xd0, 0xde, 0xca, 0xbe, 0xd0, 0xde, - 0xcb, 0xbb, 0xd0, 0xde, 0xcb, 0xbe, 0xd0, 0xde, 0xcb, 0xbb, 0xd0, 0xde, - 0xcc, 0xba, 0xd0, 0xde, 0xcc, 0xbb, 0xd0, 0xde, 0xcc, 0xba, 0xd0, 0xde, - 0xcc, 0xbb, 0xd0, 0xde, 0xcd, 0xba, 0xd0, 0xde, 0xcd, 0xbb, 0xd0, 0xde, - 0xcd, 0xba, 0xd0, 0xde, 0xce, 0xbb, 0xd0, 0xde, 0xce, 0xba, 0xd0, 0xde, - 0xce, 0xbb, 0xd0, 0xde, 0xce, 0xba, 0xd0, 0xde, 0xcf, 0xbb, 0xd0, 0xde, - 0xcf, 0xba, 0xd0, 0xde, 0xcf, 0xbb, 0xd0, 0xde, 0xd0, 0xba, 0xd0, 0xde, - 0xd0, 0xba, 0xd0, 0xde, 0xd0, 0xba, 0xd0, 0xde, 0xd0, 0xba, 0xd1, 0xde, - 0xd0, 0xba, 0xd1, 0xde, 0xd0, 0xba, 0xd1, 0xde, 0xd0, 0xba, 0xd2, 0xde, - 0xd0, 0xba, 0xd2, 0xde, 0xd0, 0xba, 0xd2, 0xde, 0xd0, 0xba, 0xd2, 0xdc, - 0xd0, 0xba, 0xd3, 0xde, 0xd0, 0xba, 0xd3, 0xdc, 0xd0, 0xba, 0xd3, 0xde, - 0xd0, 0xba, 0xd4, 0xdc, 0xd0, 0xba, 0xd4, 0xde, 0xd0, 0xba, 0xd4, 0xdc, - 0xd0, 0xba, 0xd4, 0xde, 0xd0, 0xba, 0xd5, 0xdc, 0xd0, 0xba, 0xd5, 0xde, - 0xd0, 0xba, 0xd5, 0xdc, 0xd0, 0xba, 0xd6, 0xde, 0xd0, 0xba, 0xd6, 0xdc, - 0xd0, 0xba, 0xd6, 0xde, 0xd0, 0xba, 0xd6, 0xdc, 0xd0, 0xba, 0xd7, 0xde, - 0xd0, 0xba, 0xd7, 0xdc, 0xd0, 0xba, 0xd7, 0xde, 0xd0, 0xba, 0xd7, 0xdc, - 0xd0, 0xba, 0xd8, 0xde, 0xd0, 0xba, 0xd8, 0xdc, 0xd0, 0xba, 0xd8, 0xde, - 0xd0, 0xba, 0xd9, 0xdc, 0xd0, 0xba, 0xd9, 0xde, 0xd0, 0xba, 0xd9, 0xdc, - 0xd0, 0xba, 0xd9, 0xde, 0xd0, 0xba, 0xda, 0xdc, 0xd0, 0xba, 0xda, 0xde, - 0xd0, 0xba, 0xda, 0xdc, 0xd0, 0xba, 0xda, 0xda, 0xd0, 0xba, 0xdb, 0xdc, - 0xd0, 0xba, 0xdb, 0xda, 0xd0, 0xba, 0xdb, 0xdc, 0xd0, 0xba, 0xdb, 0xda, - 0xd0, 0xba, 0xdc, 0xdc, 0xd0, 0xba, 0xdc, 0xda, 0xd0, 0xba, 0xdc, 0xdc, - 0xd0, 0xba, 0xdd, 0xe0, 0xe8, 0xba, 0xdd, 0xdf, 0xe8, 0xba, 0xdd, 0xe0, - 0xe8, 0xba, 0xdd, 0xdf, 0xe8, 0xba, 0xde, 0xe0, 0xe8, 0xba, 0xde, 0xdf, - 0xe8, 0xba, 0xde, 0xe0, 0xe8, 0xba, 0xde, 0xdf, 0xe8, 0xba, 0xdf, 0xe0, - 0xe8, 0xba, 0xdf, 0xdf, 0xe8, 0xba, 0xdf, 0xe0, 0xe8, 0xba, 0xdf, 0xdf, - 0xe8, 0xba, 0xe0, 0xe0, 0xe8, 0xba, 0xe0, 0xdf, 0xe8, 0xba, 0xe0, 0xe0, - 0xe8, 0xba, 0xe1, 0xdf, 0xe8, 0xba, 0xe1, 0xe0, 0xe8, 0xba, 0xe1, 0xdf, - 0xe8, 0xba, 0xe1, 0xe0, 0xe8, 0xba, 0xe2, 0xdf, 0xe8, 0xba, 0xe2, 0xe0, - 0xe8, 0xba, 0xe2, 0xdf, 0xe8, 0xba, 0xe2, 0xde, 0xe8, 0xba, 0xe3, 0xdf, - 0xe8, 0xba, 0xe3, 0xde, 0xe8, 0xba, 0xe3, 0xdf, 0xe8, 0xba, 0xe3, 0xde, - 0xe8, 0xba, 0xe4, 0xdf, 0xe8, 0xba, 0xe4, 0xde, 0xe8, 0xba, 0xe4, 0xdf, - 0xe8, 0xba, 0xe4, 0xde, 0xe8, 0xba, 0xe5, 0xdf, 0xe8, 0xba, 0xe5, 0xde, - 0xe8, 0xba, 0xe5, 0xdf, 0xe8, 0xba, 0xe5, 0xde, 0xe8, 0xba, 0xe6, 0xdf, - 0xe8, 0xba, 0xe6, 0xde, 0xe8, 0xba, 0xe6, 0xdf, 0xe8, 0xba, 0xe6, 0xde, - 0xe8, 0xba, 0xe7, 0xde, 0xe9, 0xba, 0xe7, 0xde, 0xe8, 0xba, 0xe7, 0xde, - 0xe9, 0xba, 0xe7, 0xde, 0xe8, 0xba, 0xe8, 0xde, 0xe9, 0xba, 0xe8, 0xde, - 0xe8, 0xba, 0xe8, 0xde, 0xe9, 0xba, 0xe8, 0xde, 0xe8, 0xb9, 0xe8, 0xde, - 0xe9, 0xba, 0xe8, 0xde, 0xe9, 0xb9, 0xe8, 0xde, 0xe9, 0xba, 0xe8, 0xde, - 0xe9, 0xb9, 0xe8, 0xde, 0xea, 0xba, 0xe8, 0xde, 0xea, 0xb9, 0xe8, 0xde, - 0xea, 0xba, 0xec, 0xde, 0xea, 0xbb, 0xec, 0xde, 0xeb, 0xba, 0xec, 0xde, - 0xeb, 0xbb, 0xec, 0xde, 0xeb, 0xba, 0xec, 0xde, 0xeb, 0xbb, 0xec, 0xde, - 0xec, 0xba, 0xec, 0xde, 0xec, 0xba, 0xec, 0xde, 0xec, 0xba, 0xec, 0xde, - 0xec, 0xba, 0xec, 0xde, 0xec, 0xba, 0xed, 0xde, 0xec, 0xba, 0xed, 0xde, - 0xec, 0xba, 0xed, 0xde, 0xec, 0xba, 0xed, 0xde, 0xec, 0xba, 0xee, 0xde, - 0xec, 0xba, 0xee, 0xde, 0xec, 0xba, 0xee, 0xde, 0xec, 0xba, 0xee, 0xde, - 0xec, 0xba, 0xef, 0xde, 0xec, 0xba, 0xef, 0xde, 0xec, 0xba, 0xef, 0xde, - 0xec, 0xba, 0xef, 0xde, 0xec, 0xba, 0xf0, 0xde, 0xec, 0xba, 0xf0, 0xdb, - 0xec, 0xba, 0xf0, 0xde, 0xec, 0xba, 0xf0, 0xdb, 0xec, 0xba, 0xf1, 0xde, - 0xec, 0xba, 0xf1, 0xdb, 0xec, 0xba, 0xf1, 0xde, 0xec, 0xba, 0xf1, 0xdb, - 0xec, 0xba, 0xf2, 0xde, 0xec, 0xba, 0xf2, 0xdb, 0xec, 0xba, 0xf2, 0xde, - 0xec, 0xba, 0xf2, 0xdb, 0xec, 0xba, 0xf2, 0xde, 0xec, 0xba, 0xf3, 0xdb, - 0xec, 0xba, 0xf3, 0xde, 0xec, 0xba, 0xf3, 0xdb, 0xec, 0xba, 0xf3, 0xde, - 0xec, 0xba, 0xf4, 0xdb, 0xec, 0xba, 0xf4, 0xde, 0xec, 0xba, 0xf4, 0xdb, - 0xec, 0xba, 0xf4, 0xde, 0xec, 0xba, 0xf5, 0xdb, 0xec, 0xba, 0xf5, 0xde, - 0xec, 0xba, 0xf5, 0xdb, 0xec, 0xba, 0xf5, 0xde, 0xec, 0xba, 0xf5, 0xdb, - 0xec, 0xba, 0xf6, 0xde, 0xec, 0xba, 0xf6, 0xdb, 0xec, 0xba, 0xf6, 0xde, - 0xec, 0xba, 0xf6, 0xdb, 0xec, 0xba, 0xf7, 0xde, 0xec, 0xba, 0xf7, 0xdb, - 0xec, 0xba, 0xf7, 0xde, 0xec, 0xba, 0xf7, 0xdb, 0xec, 0xba, 0xf8, 0xde, - 0xec, 0xba, 0xf8, 0xdb, 0xec, 0xba, 0xf8, 0xde, 0xec, 0xba, 0xf8, 0xdb, - 0xec, 0xba, 0xf8, 0xde, 0xec, 0xba, 0xf9, 0xdb, 0xec, 0xba, 0xf9, 0xde, - 0xec, 0xba, 0xf9, 0xdb, 0xec, 0xba, 0xf9, 0xde, 0xec, 0xba, 0xfa, 0xdb, - 0xec, 0xba, 0xfa, 0xde, 0xec, 0xba, 0xfa, 0xdb, 0xec, 0xba, 0xfa, 0xde, - 0xec, 0xba, 0xfa, 0xdb, 0xec, 0xba, 0xfb, 0xde, 0xec, 0xba, 0xfb, 0xdb, - 0xec, 0xba, 0xfb, 0xd9, 0xec, 0xba, 0xfb, 0xdb, 0xec, 0xba, 0xfc, 0xd9, - 0xec, 0xba, 0xfc, 0xdb, 0xec, 0xba, 0xfc, 0xd9, 0xec, 0xba, 0xfc, 0xdb, - 0xec, 0xba, 0xfc, 0xd9, 0xec, 0xba, 0xfd, 0xdb, 0xec, 0xba, 0xfd, 0xd9, - 0xec, 0xba, 0xfd, 0xdb, 0xec, 0xba, 0xfd, 0xd9, 0xec, 0xba, 0xfe, 0xdb, - 0xec, 0xba, 0xfe, 0xd9, 0xec, 0xba, 0xfe, 0xdb, 0xec, 0xba, 0xfe, 0xd9, - 0xec, 0xba, 0xfe, 0xdb, 0xec, 0xba, 0xff, 0xd9, 0xec, 0xba, 0xff, 0xdb, - 0xec, 0xba, 0x03, 0xe3, 0x88, 0xba, 0x0a, 0xe4, 0x88, 0xba, 0x0f, 0xe3, - 0x88, 0xba, 0x14, 0xe4, 0x88, 0xba, 0x17, 0xe3, 0x88, 0xba, 0x1b, 0xe4, - 0x88, 0xba, 0x1e, 0xe3, 0x88, 0xba, 0x20, 0xe1, 0x89, 0xba, 0x23, 0xe3, - 0x88, 0xba, 0x25, 0xe1, 0x89, 0xba, 0x27, 0xe3, 0x88, 0xba, 0x29, 0xe1, - 0x89, 0xba, 0x2b, 0xe3, 0x88, 0xba, 0x2d, 0xe1, 0x89, 0xba, 0x2f, 0xe3, - 0x88, 0xba, 0x31, 0xe1, 0x89, 0xba, 0x32, 0xe3, 0x88, 0xba, 0x34, 0xe1, - 0x89, 0xba, 0x35, 0xe3, 0x88, 0xba, 0x37, 0xe1, 0x89, 0xba, 0x38, 0xe3, - 0x88, 0xba, 0x3a, 0xe1, 0x89, 0xba, 0x3b, 0xe3, 0x88, 0xba, 0x3c, 0xe1, - 0x89, 0xba, 0x3e, 0xe3, 0x88, 0xba, 0x3f, 0xe1, 0x89, 0xba, 0x40, 0xe3, - 0x88, 0xba, 0x42, 0xe1, 0x89, 0xba, 0x43, 0xe3, 0x88, 0xba, 0x44, 0xe1, - 0x89, 0xba, 0x45, 0xe3, 0x88, 0xba, 0x46, 0xe1, 0x89, 0xba, 0x47, 0xe3, - 0x88, 0xba, 0x48, 0xe1, 0x89, 0xba, 0x49, 0xe3, 0x88, 0xba, 0x4a, 0xe1, - 0x89, 0xba, 0x4b, 0xe3, 0x88, 0xba, 0x4c, 0xe1, 0x89, 0xba, 0x4d, 0xe3, - 0x88, 0xba, 0x4e, 0xe1, 0x89, 0xba, 0x4f, 0xe3, 0x88, 0xba, 0x50, 0xe1, - 0x89, 0xba, 0x51, 0xe3, 0x88, 0xba, 0x52, 0xe1, 0x89, 0xba, 0x53, 0xe3, - 0x88, 0xba, 0x54, 0xe1, 0x89, 0xba, 0x55, 0xe3, 0x88, 0xba, 0x56, 0xe1, - 0x89, 0xba, 0x57, 0xe3, 0x88, 0xba, 0x58, 0xe1, 0x89, 0xba, 0x58, 0xdf, - 0x89, 0xba, 0x59, 0xe1, 0x89, 0xba, 0x5a, 0xdf, 0x89, 0xba, 0x5b, 0xe1, - 0x89, 0xba, 0x5c, 0xdf, 0x89, 0xba, 0x5d, 0xe1, 0x89, 0xba, 0x5d, 0xdf, - 0x89, 0xba, 0x5e, 0xe1, 0x89, 0xba, 0x5f, 0xdf, 0x89, 0xba, 0x60, 0xe1, - 0x89, 0xba, 0x60, 0xdf, 0x89, 0xba, 0x61, 0xe1, 0x89, 0xba, 0x62, 0xdf, - 0x89, 0xba, 0x63, 0xe1, 0x89, 0xba, 0x63, 0xdf, 0x89, 0xba, 0x64, 0xe1, - 0x89, 0xba, 0x65, 0xdf, 0x89, 0xba, 0x66, 0xe1, 0x89, 0xba, 0x66, 0xdf, - 0x89, 0xba, 0x67, 0xe1, 0x89, 0xba, 0x68, 0xdf, 0x89, 0xba, 0x68, 0xe1, - 0x89, 0xba, 0x69, 0xdf, 0x89, 0xba, 0x6a, 0xe1, 0x89, 0xba, 0x6a, 0xdf, - 0x89, 0xba, 0x6b, 0xe1, 0x89, 0xba, 0x6c, 0xdf, 0x89, 0xba, 0x6c, 0xe1, - 0x89, 0xba, 0x6d, 0xdf, 0x89, 0xba, 0x6e, 0xe1, 0x89, 0xba, 0x6e, 0xdf, - 0x89, 0xba, 0x6f, 0xe1, 0x89, 0xba, 0x70, 0xdf, 0x89, 0xba, 0x70, 0xe1, - 0x89, 0xba, 0x71, 0xdf, 0x89, 0xba, 0x72, 0xe1, 0x89, 0xba, 0x72, 0xdf, - 0x89, 0xba, 0x73, 0xdf, 0x89, 0xba, 0x73, 0xdf, 0x89, 0xba, 0x74, 0xdf, - 0x89, 0xba, 0x75, 0xdf, 0x89, 0xba, 0x75, 0xdf, 0x89, 0xba, 0x76, 0xdf, - 0x89, 0xba, 0x76, 0xdf, 0x89, 0xba, 0x77, 0xdf, 0x89, 0xba, 0x78, 0xdf, - 0x89, 0xba, 0x78, 0xdf, 0x89, 0xba, 0x79, 0xdf, 0x89, 0xba, 0x79, 0xdf, - 0x89, 0xba, 0x7a, 0xdf, 0x89, 0xba, 0x7a, 0xdf, 0x89, 0xba, 0x7b, 0xdf, - 0x89, 0xba, 0x7c, 0xdf, 0x89, 0xba, 0x7c, 0xdf, 0x89, 0xba, 0x7d, 0xdf, - 0x89, 0xba, 0x7d, 0xdf, 0x89, 0xba, 0x7e, 0xdf, 0x89, 0xba, 0x7e, 0xdf, - 0x89, 0xba, 0x7f, 0xdf, 0x89, 0xba, 0x7f, 0xdf, 0x89, 0xba, 0x80, 0xdf, - 0x89, 0xba, 0x81, 0xdf, 0x89, 0xba, 0x81, 0xdf, 0x89, 0xba, 0x82, 0xdf, - 0x89, 0xba, 0x82, 0xdf, 0x89, 0xba, 0x83, 0xdf, 0x89, 0xba, 0x83, 0xdf, - 0x89, 0xba, 0x84, 0xdf, 0x89, 0xba, 0x84, 0xdf, 0x89, 0xba, 0x85, 0xdf, - 0x89, 0xba, 0x85, 0xdf, 0x89, 0xba, 0x86, 0xde, 0x8a, 0xba, 0x86, 0xdf, - 0x89, 0xba, 0x87, 0xde, 0x8a, 0xba, 0x87, 0xdf, 0x89, 0xba, 0x88, 0xde, - 0x8a, 0xba, 0x88, 0xde, 0x8a, 0xba, 0x89, 0xde, 0x8a, 0xba, 0x89, 0xde, - 0x8a, 0xba, 0x89, 0xde, 0x8a, 0xba, 0x89, 0xde, 0x8a, 0xba, 0x89, 0xde, - 0x8b, 0xba, 0x89, 0xde, 0x8b, 0xba, 0x8a, 0xde, 0x8c, 0xb8, 0x89, 0xde, - 0x8c, 0xba, 0x8a, 0xde, 0x8d, 0xb8, 0x89, 0xde, 0x8d, 0xba, 0x8a, 0xde, - 0x8e, 0xb8, 0x89, 0xde, 0x8e, 0xba, 0x8a, 0xde, 0x8e, 0xb8, 0x89, 0xde, - 0x8f, 0xba, 0x8a, 0xde, 0x8f, 0xb8, 0x89, 0xde, 0x90, 0xba, 0x8a, 0xde, - 0x90, 0xb8, 0x89, 0xde, 0x91, 0xba, 0x8a, 0xde, 0x91, 0xb8, 0x89, 0xde, - 0x92, 0xba, 0x8a, 0xde, 0x92, 0xb8, 0x89, 0xde, 0x93, 0xba, 0x8a, 0xde, - 0x93, 0xb8, 0x89, 0xde, 0x94, 0xba, 0x8a, 0xde, 0x94, 0xb8, 0x89, 0xde, - 0x94, 0xba, 0x8a, 0xde, 0x95, 0xb8, 0x8a, 0xde, 0x95, 0xb5, 0x8a, 0xde, - 0x96, 0xb8, 0x8a, 0xde, 0x96, 0xb5, 0x8a, 0xde, 0x97, 0xb8, 0x8a, 0xde, - 0x97, 0xb5, 0x8a, 0xde, 0x98, 0xb8, 0x8a, 0xde, 0x98, 0xb5, 0x8a, 0xde, - 0x98, 0xb8, 0x8a, 0xde, 0x99, 0xb5, 0x8a, 0xde, 0x99, 0xb8, 0x8a, 0xde, - 0x9a, 0xb5, 0x8a, 0xde, 0x9a, 0xb8, 0x8a, 0xde, 0x9a, 0xb5, 0x8a, 0xde, - 0x9b, 0xb8, 0x8a, 0xde, 0x9b, 0xb5, 0x8a, 0xde, 0x9c, 0xb8, 0x8a, 0xde, - 0x9c, 0xb5, 0x8a, 0xde, 0x9d, 0xb8, 0x8a, 0xde, 0x9d, 0xb5, 0x8a, 0xde, - 0x9d, 0xb8, 0x8a, 0xde, 0x9e, 0xb5, 0x8a, 0xde, 0x9e, 0xb8, 0x8a, 0xde, - 0x9f, 0xb5, 0x8a, 0xde, 0x9f, 0xb8, 0x8a, 0xde, 0x9f, 0xb5, 0x8a, 0xde, - 0xa0, 0xb8, 0x8a, 0xde, 0xa0, 0xb5, 0x8a, 0xde, 0xa1, 0xb8, 0x8a, 0xde, - 0xa1, 0xb5, 0x8a, 0xde, 0xa1, 0xb8, 0x8a, 0xde, 0xa2, 0xb5, 0x8a, 0xde, - 0xa2, 0xb8, 0x8a, 0xde, 0xa3, 0xb5, 0x8a, 0xde, 0xa3, 0xb8, 0x8a, 0xde, - 0xa3, 0xb5, 0x8a, 0xde, 0xa4, 0xb8, 0x8a, 0xde, 0xa4, 0xb5, 0x8a, 0xde, - 0xa5, 0xb8, 0x8a, 0xde, 0xa5, 0xb5, 0x8a, 0xde, 0xa5, 0xb8, 0x8a, 0xde, - 0xa6, 0xb5, 0x8a, 0xde, 0xa6, 0xb8, 0x8a, 0xde, 0xa6, 0xb5, 0x8a, 0xde, - 0xa7, 0xb8, 0x8a, 0xde, 0xa7, 0xb5, 0x8a, 0xde, 0xa8, 0xb8, 0x8a, 0xde, - 0xa8, 0xb5, 0xa3, 0xde, 0xa8, 0x97, 0xa3, 0xde, 0xa9, 0x97, 0xa3, 0xde, - 0xa9, 0x97, 0xa3, 0xde, 0xaa, 0x97, 0xa3, 0xde, 0xaa, 0x97, 0xa3, 0xde, - 0xaa, 0x97, 0xa3, 0xde, 0xab, 0x97, 0xa3, 0xde, 0xab, 0x97, 0xa3, 0xde, - 0xab, 0x97, 0xa3, 0xde, 0xac, 0x97, 0xa3, 0xde, 0xac, 0x97, 0xa3, 0xde, - 0xac, 0x97, 0xa3, 0xde, 0xad, 0x97, 0xa3, 0xde, 0xad, 0x97, 0xa3, 0xde, - 0xae, 0x97, 0xa3, 0xde, 0xae, 0x97, 0xa3, 0xde, 0xae, 0x97, 0xa3, 0xde, - 0xaf, 0x97, 0xa3, 0xde, 0xaf, 0x97, 0xa3, 0xde, 0xaf, 0x97, 0xa3, 0xde, - 0xb0, 0x97, 0xa3, 0xde, 0xb0, 0x97, 0xa3, 0xde, 0xb0, 0x97, 0xa3, 0xde, - 0xb1, 0x97, 0xa3, 0xde, 0xb1, 0x97, 0xa3, 0xde, 0xb2, 0x97, 0xa3, 0xde, - 0xb2, 0x97, 0xa3, 0xde, 0xb2, 0x97, 0xa3, 0xde, 0xb3, 0x97, 0xa3, 0xde, - 0xb3, 0x97, 0xa3, 0xde, 0xb3, 0x97, 0xa3, 0xde, 0xb4, 0x97, 0xa3, 0xde, - 0xb4, 0x97, 0xa3, 0xde, 0xb4, 0x97, 0xa3, 0xde, 0xb5, 0x97, 0xcf, 0xde, - 0xb5, 0xc0, 0xcf, 0xde, 0xb5, 0xc3, 0xcf, 0xde, 0xb6, 0xc0, 0xcf, 0xde, - 0xb6, 0xc3, 0xcf, 0xde, 0xb6, 0xc0, 0xcf, 0xde, 0xb7, 0xc3, 0xcf, 0xde, - 0xb7, 0xc0, 0xcf, 0xde, 0xb7, 0xc3, 0xcf, 0xde, 0xb8, 0xc0, 0xcf, 0xde, - 0xb8, 0xc3, 0xcf, 0xde, 0xb8, 0xc0, 0xcf, 0xde, 0xb9, 0xc3, 0xcf, 0xde, - 0xb9, 0xc0, 0xd0, 0xde, 0xb9, 0xbd, 0xcf, 0xde, 0xba, 0xc0, 0xd0, 0xde, - 0xba, 0xbd, 0xcf, 0xde, 0xba, 0xc0, 0xd0, 0xde, 0xbb, 0xbd, 0xcf, 0xde, - 0xbb, 0xc0, 0xd0, 0xde, 0xbb, 0xbd, 0xcf, 0xde, 0xbc, 0xc0, 0xd0, 0xde, - 0xbc, 0xbd, 0xcf, 0xde, 0xbc, 0xc0, 0xd0, 0xde, 0xbd, 0xbd, 0xcf, 0xde, - 0xbd, 0xc0, 0xd0, 0xde, 0xbd, 0xbd, 0xcf, 0xde, 0xbe, 0xc0, 0xd0, 0xde, - 0xbe, 0xbd, 0xcf, 0xde, 0xbe, 0xc0, 0xd0, 0xde, 0xbf, 0xbd, 0xcf, 0xde, - 0xbf, 0xc0, 0xd0, 0xde, 0xbf, 0xbd, 0xcf, 0xde, 0xc0, 0xc0, 0xd0, 0xde, - 0xc0, 0xbd, 0xcf, 0xde, 0xc0, 0xc0, 0xd0, 0xde, 0xc1, 0xbd, 0xcf, 0xde, - 0xc1, 0xc0, 0xd0, 0xde, 0xc1, 0xbd, 0xcf, 0xde, 0xc1, 0xc0, 0xd0, 0xde, - 0xc2, 0xbd, 0xcf, 0xde, 0xc2, 0xc0, 0xd0, 0xde, 0xc2, 0xbd, 0xcf, 0xde, - 0xc3, 0xc0, 0xd0, 0xde, 0xc3, 0xbd, 0xcf, 0xde, 0xc3, 0xc0, 0xd0, 0xde, - 0xc4, 0xbd, 0xcf, 0xde, 0xc4, 0xc0, 0xd0, 0xde, 0xc4, 0xbd, 0xcf, 0xde, - 0xc5, 0xc0, 0xd0, 0xde, 0xc5, 0xbd, 0xd0, 0xde, 0xc5, 0xba, 0xd0, 0xde, - 0xc6, 0xbd, 0xd0, 0xde, 0xc6, 0xba, 0xd0, 0xde, 0xc6, 0xbd, 0xd0, 0xde, - 0xc6, 0xba, 0xd0, 0xde, 0xc7, 0xbd, 0xd0, 0xde, 0xc7, 0xba, 0xd0, 0xde, - 0xc7, 0xbd, 0xd0, 0xde, 0xc8, 0xba, 0xd0, 0xde, 0xc8, 0xbd, 0xd0, 0xde, - 0xc8, 0xba, 0xd0, 0xde, 0xc9, 0xbd, 0xd0, 0xde, 0xc9, 0xba, 0xd0, 0xde, - 0xc9, 0xbd, 0xd0, 0xde, 0xc9, 0xba, 0xd0, 0xde, 0xca, 0xbd, 0xd0, 0xde, - 0xca, 0xba, 0xd0, 0xde, 0xca, 0xbd, 0xd0, 0xde, 0xcb, 0xba, 0xd0, 0xde, - 0xcb, 0xbd, 0xd0, 0xde, 0xcb, 0xba, 0xd0, 0xde, 0xcc, 0xbd, 0xd0, 0xde, - 0xcc, 0xba, 0xd0, 0xde, 0xcc, 0xbd, 0xd0, 0xde, 0xcc, 0xba, 0xd0, 0xde, - 0xcd, 0xbd, 0xd0, 0xde, 0xcd, 0xba, 0xd0, 0xde, 0xcd, 0xbd, 0xd0, 0xde, - 0xce, 0xba, 0xd0, 0xde, 0xce, 0xba, 0xd0, 0xde, 0xce, 0xba, 0xd0, 0xde, - 0xce, 0xba, 0xd0, 0xde, 0xcf, 0xba, 0xd0, 0xde, 0xcf, 0xba, 0xd0, 0xde, - 0xcf, 0xba, 0xd0, 0xde, 0xd0, 0xba, 0xd0, 0xdd, 0xd0, 0xba, 0xd0, 0xde, - 0xd0, 0xba, 0xd0, 0xdd, 0xd0, 0xba, 0xd1, 0xde, 0xd0, 0xba, 0xd1, 0xdd, - 0xd0, 0xba, 0xd1, 0xde, 0xd0, 0xba, 0xd2, 0xdd, 0xd0, 0xba, 0xd2, 0xde, - 0xd0, 0xba, 0xd2, 0xdd, 0xd0, 0xba, 0xd2, 0xdc, 0xd0, 0xba, 0xd3, 0xdd, - 0xd0, 0xba, 0xd3, 0xdc, 0xd0, 0xba, 0xd3, 0xdd, 0xd0, 0xba, 0xd4, 0xdc, - 0xd0, 0xba, 0xd4, 0xdd, 0xd0, 0xba, 0xd4, 0xdc, 0xd0, 0xba, 0xd4, 0xdd, - 0xd0, 0xba, 0xd5, 0xdc, 0xd0, 0xba, 0xd5, 0xdd, 0xd0, 0xba, 0xd5, 0xdc, - 0xd0, 0xba, 0xd6, 0xdd, 0xd0, 0xba, 0xd6, 0xdc, 0xd0, 0xba, 0xd6, 0xdd, - 0xd0, 0xba, 0xd6, 0xdc, 0xd0, 0xba, 0xd7, 0xdd, 0xd0, 0xba, 0xd7, 0xdc, - 0xd0, 0xba, 0xd7, 0xdd, 0xd0, 0xba, 0xd7, 0xdc, 0xd0, 0xba, 0xd8, 0xdd, - 0xd0, 0xba, 0xd8, 0xdc, 0xd0, 0xba, 0xd8, 0xdd, 0xd0, 0xba, 0xd9, 0xdc, - 0xd0, 0xba, 0xd9, 0xdd, 0xd0, 0xba, 0xd9, 0xdc, 0xd0, 0xba, 0xd9, 0xdd, - 0xd0, 0xba, 0xda, 0xdc, 0xd0, 0xba, 0xda, 0xdd, 0xd0, 0xba, 0xda, 0xdc, - 0xd0, 0xba, 0xda, 0xdb, 0xd0, 0xba, 0xdb, 0xdc, 0xd0, 0xba, 0xdb, 0xdb, - 0xd0, 0xba, 0xdb, 0xdc, 0xd0, 0xba, 0xdb, 0xdb, 0xd0, 0xba, 0xdc, 0xdc, - 0xd0, 0xba, 0xdc, 0xdb, 0xd0, 0xba, 0xdc, 0xdc, 0xd0, 0xba, 0xdd, 0xe1, - 0xe8, 0xba, 0xdd, 0xdf, 0xe8, 0xba, 0xdd, 0xe1, 0xe8, 0xba, 0xdd, 0xdf, - 0xe8, 0xba, 0xde, 0xe1, 0xe8, 0xba, 0xde, 0xdf, 0xe8, 0xba, 0xde, 0xe1, - 0xe8, 0xba, 0xde, 0xdf, 0xe8, 0xba, 0xdf, 0xe1, 0xe8, 0xba, 0xdf, 0xdf, - 0xe8, 0xba, 0xdf, 0xe1, 0xe8, 0xba, 0xdf, 0xdf, 0xe8, 0xba, 0xe0, 0xe1, - 0xe8, 0xba, 0xe0, 0xdf, 0xe8, 0xba, 0xe0, 0xe1, 0xe8, 0xba, 0xe1, 0xdf, - 0xe8, 0xba, 0xe1, 0xe1, 0xe8, 0xba, 0xe1, 0xdf, 0xe8, 0xba, 0xe1, 0xe1, - 0xe8, 0xba, 0xe2, 0xdf, 0xe8, 0xba, 0xe2, 0xe1, 0xe8, 0xba, 0xe2, 0xdf, - 0xe8, 0xba, 0xe2, 0xde, 0xe8, 0xba, 0xe3, 0xdf, 0xe8, 0xba, 0xe3, 0xde, - 0xe8, 0xba, 0xe3, 0xdf, 0xe8, 0xba, 0xe3, 0xde, 0xe8, 0xba, 0xe4, 0xdf, - 0xe8, 0xba, 0xe4, 0xde, 0xe8, 0xba, 0xe4, 0xdf, 0xe8, 0xba, 0xe4, 0xde, - 0xe8, 0xba, 0xe5, 0xdf, 0xe8, 0xba, 0xe5, 0xde, 0xe8, 0xba, 0xe5, 0xdf, - 0xe8, 0xba, 0xe5, 0xde, 0xe8, 0xba, 0xe6, 0xdf, 0xe8, 0xba, 0xe6, 0xde, - 0xe8, 0xba, 0xe6, 0xdf, 0xe8, 0xba, 0xe6, 0xde, 0xe8, 0xba, 0xe7, 0xdf, - 0xe8, 0xba, 0xe7, 0xde, 0xe8, 0xba, 0xe7, 0xdf, 0xe8, 0xba, 0xe7, 0xde, - 0xe8, 0xba, 0xe8, 0xde, 0xe9, 0xba, 0xe8, 0xde, 0xe8, 0xba, 0xe8, 0xde, - 0xe9, 0xba, 0xe8, 0xde, 0xe8, 0xba, 0xe8, 0xde, 0xe9, 0xba, 0xe8, 0xde, - 0xe9, 0xba, 0xe8, 0xde, 0xe9, 0xba, 0xe8, 0xde, 0xe9, 0xb8, 0xe8, 0xde, - 0xea, 0xba, 0xe8, 0xde, 0xea, 0xb8, 0xe8, 0xde, 0xea, 0xba, 0xec, 0xde, - 0xea, 0xba, 0xec, 0xde, 0xeb, 0xba, 0xec, 0xde, 0xeb, 0xba, 0xec, 0xde, - 0xeb, 0xba, 0xec, 0xde, 0xeb, 0xba, 0xec, 0xde, 0xec, 0xba, 0xec, 0xdd, - 0xec, 0xba, 0xec, 0xde, 0xec, 0xba, 0xec, 0xdd, 0xec, 0xba, 0xec, 0xde, - 0xec, 0xba, 0xed, 0xdd, 0xec, 0xba, 0xed, 0xde, 0xec, 0xba, 0xed, 0xdd, - 0xec, 0xba, 0xed, 0xde, 0xec, 0xba, 0xee, 0xdd, 0xec, 0xba, 0xee, 0xde, - 0xec, 0xba, 0xee, 0xdd, 0xec, 0xba, 0xee, 0xde, 0xec, 0xba, 0xef, 0xdd, - 0xec, 0xba, 0xef, 0xde, 0xec, 0xba, 0xef, 0xdd, 0xec, 0xba, 0xef, 0xde, - 0xec, 0xba, 0xf0, 0xdd, 0xec, 0xba, 0xf0, 0xdc, 0xec, 0xba, 0xf0, 0xdd, - 0xec, 0xba, 0xf0, 0xdc, 0xec, 0xba, 0xf1, 0xdd, 0xec, 0xba, 0xf1, 0xdc, - 0xec, 0xba, 0xf1, 0xdd, 0xec, 0xba, 0xf1, 0xdc, 0xec, 0xba, 0xf2, 0xdd, - 0xec, 0xba, 0xf2, 0xdc, 0xec, 0xba, 0xf2, 0xdd, 0xec, 0xba, 0xf2, 0xdc, - 0xec, 0xba, 0xf2, 0xdd, 0xec, 0xba, 0xf3, 0xdc, 0xec, 0xba, 0xf3, 0xdd, - 0xec, 0xba, 0xf3, 0xdc, 0xec, 0xba, 0xf3, 0xdd, 0xec, 0xba, 0xf4, 0xdc, - 0xec, 0xba, 0xf4, 0xdd, 0xec, 0xba, 0xf4, 0xdc, 0xec, 0xba, 0xf4, 0xdd, - 0xec, 0xba, 0xf5, 0xdc, 0xec, 0xba, 0xf5, 0xdd, 0xec, 0xba, 0xf5, 0xdc, - 0xec, 0xba, 0xf5, 0xdd, 0xec, 0xba, 0xf5, 0xdc, 0xec, 0xba, 0xf6, 0xdd, - 0xec, 0xba, 0xf6, 0xdc, 0xec, 0xba, 0xf6, 0xdd, 0xec, 0xba, 0xf6, 0xdc, - 0xec, 0xba, 0xf7, 0xdd, 0xec, 0xba, 0xf7, 0xdc, 0xec, 0xba, 0xf7, 0xdd, - 0xec, 0xba, 0xf7, 0xdc, 0xec, 0xba, 0xf8, 0xdd, 0xec, 0xba, 0xf8, 0xdc, - 0xec, 0xba, 0xf8, 0xdd, 0xec, 0xba, 0xf8, 0xdc, 0xec, 0xba, 0xf8, 0xdd, - 0xec, 0xba, 0xf9, 0xdc, 0xec, 0xba, 0xf9, 0xdd, 0xec, 0xba, 0xf9, 0xdc, - 0xec, 0xba, 0xf9, 0xdd, 0xec, 0xba, 0xfa, 0xdc, 0xec, 0xba, 0xfa, 0xdd, - 0xec, 0xba, 0xfa, 0xdc, 0xec, 0xba, 0xfa, 0xdd, 0xec, 0xba, 0xfa, 0xdc, - 0xec, 0xba, 0xfb, 0xdd, 0xec, 0xba, 0xfb, 0xdc, 0xec, 0xba, 0xfb, 0xda, - 0xec, 0xba, 0xfb, 0xdc, 0xec, 0xba, 0xfc, 0xda, 0xec, 0xba, 0xfc, 0xdc, - 0xec, 0xba, 0xfc, 0xda, 0xec, 0xba, 0xfc, 0xdc, 0xec, 0xba, 0xfc, 0xda, - 0xec, 0xba, 0xfd, 0xdc, 0xec, 0xba, 0xfd, 0xda, 0xec, 0xba, 0xfd, 0xdc, - 0xec, 0xba, 0xfd, 0xda, 0xec, 0xba, 0xfe, 0xdc, 0xec, 0xba, 0xfe, 0xda, - 0xec, 0xba, 0xfe, 0xdc, 0xec, 0xba, 0xfe, 0xda, 0xec, 0xba, 0xfe, 0xdc, - 0xec, 0xba, 0xff, 0xec, 0xf1, 0xba, 0xff, 0xec, 0xf1, 0xba, 0x03, 0xe2, - 0x88, 0xbb, 0x0a, 0xe4, 0x88, 0xbb, 0x0f, 0xe2, 0x88, 0xbb, 0x14, 0xe4, - 0x88, 0xbb, 0x17, 0xe2, 0x88, 0xbb, 0x1b, 0xe4, 0x88, 0xbb, 0x1e, 0xe2, - 0x88, 0xbb, 0x20, 0xe4, 0x88, 0xbb, 0x23, 0xe2, 0x88, 0xbb, 0x25, 0xe4, - 0x88, 0xbb, 0x27, 0xe2, 0x88, 0xbb, 0x29, 0xe4, 0x88, 0xbb, 0x2b, 0xe2, - 0x88, 0xbb, 0x2d, 0xe4, 0x88, 0xbb, 0x2f, 0xe2, 0x88, 0xbb, 0x31, 0xe4, - 0x88, 0xbb, 0x32, 0xe2, 0x88, 0xbb, 0x34, 0xe4, 0x88, 0xbb, 0x35, 0xe2, - 0x88, 0xbb, 0x37, 0xe4, 0x88, 0xbb, 0x38, 0xe2, 0x88, 0xbb, 0x3a, 0xe4, - 0x88, 0xbb, 0x3b, 0xe2, 0x88, 0xbb, 0x3c, 0xe4, 0x88, 0xbb, 0x3e, 0xe2, - 0x88, 0xbb, 0x3f, 0xe4, 0x88, 0xbb, 0x40, 0xe2, 0x88, 0xbb, 0x42, 0xe4, - 0x88, 0xbb, 0x43, 0xe2, 0x88, 0xbb, 0x44, 0xe4, 0x88, 0xbb, 0x45, 0xe2, - 0x88, 0xbb, 0x46, 0xe1, 0x89, 0xbb, 0x47, 0xe2, 0x88, 0xbb, 0x48, 0xe1, - 0x89, 0xbb, 0x49, 0xe2, 0x88, 0xbb, 0x4a, 0xe1, 0x89, 0xbb, 0x4b, 0xe2, - 0x88, 0xbb, 0x4c, 0xe1, 0x89, 0xbb, 0x4d, 0xe2, 0x88, 0xbb, 0x4e, 0xe1, - 0x89, 0xbb, 0x4f, 0xe2, 0x88, 0xbb, 0x50, 0xe1, 0x89, 0xbb, 0x51, 0xe2, - 0x88, 0xbb, 0x52, 0xe1, 0x89, 0xbb, 0x53, 0xe2, 0x88, 0xbb, 0x54, 0xe1, - 0x89, 0xbb, 0x55, 0xe2, 0x88, 0xbb, 0x56, 0xe1, 0x89, 0xbb, 0x57, 0xe2, - 0x88, 0xbb, 0x58, 0xe1, 0x89, 0xbb, 0x58, 0xe2, 0x88, 0xbb, 0x59, 0xe1, - 0x89, 0xbb, 0x5a, 0xe2, 0x88, 0xbb, 0x5b, 0xe1, 0x89, 0xbb, 0x5c, 0xe2, - 0x88, 0xbb, 0x5d, 0xe1, 0x89, 0xbb, 0x5d, 0xe2, 0x88, 0xbb, 0x5e, 0xe1, - 0x89, 0xbb, 0x5f, 0xe2, 0x88, 0xbb, 0x60, 0xe1, 0x89, 0xbb, 0x60, 0xe2, - 0x88, 0xbb, 0x61, 0xe1, 0x89, 0xbb, 0x62, 0xe2, 0x88, 0xbb, 0x63, 0xe1, - 0x89, 0xbb, 0x63, 0xe2, 0x88, 0xbb, 0x64, 0xe1, 0x89, 0xbb, 0x65, 0xe2, - 0x88, 0xbb, 0x66, 0xe1, 0x89, 0xbb, 0x66, 0xdf, 0x89, 0xbb, 0x67, 0xe1, - 0x89, 0xbb, 0x68, 0xdf, 0x89, 0xbb, 0x68, 0xe1, 0x89, 0xbb, 0x69, 0xdf, - 0x89, 0xbb, 0x6a, 0xe1, 0x89, 0xbb, 0x6a, 0xdf, 0x89, 0xbb, 0x6b, 0xe1, - 0x89, 0xbb, 0x6c, 0xdf, 0x89, 0xbb, 0x6c, 0xe1, 0x89, 0xbb, 0x6d, 0xdf, - 0x89, 0xbb, 0x6e, 0xe1, 0x89, 0xbb, 0x6e, 0xdf, 0x89, 0xbb, 0x6f, 0xe1, - 0x89, 0xbb, 0x70, 0xdf, 0x89, 0xbb, 0x70, 0xe1, 0x89, 0xbb, 0x71, 0xdf, - 0x89, 0xbb, 0x72, 0xe1, 0x89, 0xbb, 0x72, 0xdf, 0x89, 0xbb, 0x73, 0xdf, - 0x89, 0xbb, 0x73, 0xdf, 0x89, 0xbb, 0x74, 0xdf, 0x89, 0xbb, 0x75, 0xdf, - 0x89, 0xbb, 0x75, 0xdf, 0x89, 0xbb, 0x76, 0xdf, 0x89, 0xbb, 0x76, 0xdf, - 0x89, 0xbb, 0x77, 0xdf, 0x89, 0xbb, 0x78, 0xdf, 0x89, 0xbb, 0x78, 0xdf, - 0x89, 0xbb, 0x79, 0xdf, 0x89, 0xbb, 0x79, 0xdf, 0x89, 0xbb, 0x7a, 0xdf, - 0x89, 0xbb, 0x7a, 0xdf, 0x89, 0xbb, 0x7b, 0xdf, 0x89, 0xbb, 0x7c, 0xdf, - 0x89, 0xbb, 0x7c, 0xdf, 0x89, 0xbb, 0x7d, 0xdf, 0x89, 0xbb, 0x7d, 0xdf, - 0x89, 0xbb, 0x7e, 0xdf, 0x89, 0xbb, 0x7e, 0xdf, 0x89, 0xbb, 0x7f, 0xdf, - 0x89, 0xbb, 0x7f, 0xdf, 0x89, 0xbb, 0x80, 0xdf, 0x89, 0xbb, 0x81, 0xdf, - 0x89, 0xbb, 0x81, 0xdf, 0x89, 0xbb, 0x82, 0xdf, 0x89, 0xbb, 0x82, 0xdf, - 0x89, 0xbb, 0x83, 0xdf, 0x89, 0xbb, 0x83, 0xdf, 0x89, 0xbb, 0x84, 0xdf, - 0x89, 0xbb, 0x84, 0xdf, 0x89, 0xbb, 0x85, 0xdf, 0x89, 0xbb, 0x85, 0xdf, - 0x89, 0xbb, 0x86, 0xde, 0x8a, 0xbb, 0x86, 0xdf, 0x89, 0xbb, 0x87, 0xde, - 0x8a, 0xbb, 0x87, 0xdf, 0x89, 0xbb, 0x88, 0xde, 0x8a, 0xbb, 0x88, 0xde, - 0x8a, 0xbb, 0x89, 0xde, 0x8a, 0xbb, 0x89, 0xde, 0x8a, 0xbb, 0x89, 0xde, - 0x8a, 0xbb, 0x89, 0xde, 0x8a, 0xbb, 0x89, 0xde, 0x8b, 0xbb, 0x89, 0xde, - 0x8b, 0xbb, 0x89, 0xde, 0x8c, 0xbb, 0x89, 0xde, 0x8c, 0xbb, 0x89, 0xde, - 0x8d, 0xbb, 0x89, 0xde, 0x8d, 0xbb, 0x8a, 0xde, 0x8e, 0xb8, 0x89, 0xde, - 0x8e, 0xbb, 0x8a, 0xde, 0x8e, 0xb8, 0x89, 0xde, 0x8f, 0xbb, 0x8a, 0xde, - 0x8f, 0xb8, 0x89, 0xde, 0x90, 0xbb, 0x8a, 0xde, 0x90, 0xb8, 0x89, 0xde, - 0x91, 0xbb, 0x8a, 0xde, 0x91, 0xb8, 0x89, 0xde, 0x92, 0xbb, 0x8a, 0xde, - 0x92, 0xb8, 0x89, 0xde, 0x93, 0xbb, 0x8a, 0xde, 0x93, 0xb8, 0x89, 0xde, - 0x94, 0xbb, 0x8a, 0xde, 0x94, 0xb8, 0x89, 0xde, 0x94, 0xbb, 0x8a, 0xde, - 0x95, 0xb8, 0x89, 0xde, 0x95, 0xbb, 0x8a, 0xde, 0x96, 0xb8, 0x89, 0xde, - 0x96, 0xbb, 0x8a, 0xde, 0x97, 0xb8, 0x89, 0xde, 0x97, 0xbb, 0x8a, 0xde, - 0x98, 0xb8, 0x89, 0xde, 0x98, 0xbb, 0x8a, 0xde, 0x98, 0xb8, 0x89, 0xde, - 0x99, 0xbb, 0x8a, 0xde, 0x99, 0xb8, 0x89, 0xde, 0x9a, 0xbb, 0x8a, 0xde, - 0x9a, 0xb8, 0x8a, 0xde, 0x9a, 0xb5, 0x8a, 0xde, 0x9b, 0xb8, 0x8a, 0xde, - 0x9b, 0xb5, 0x8a, 0xde, 0x9c, 0xb8, 0x8a, 0xde, 0x9c, 0xb5, 0x8a, 0xde, - 0x9d, 0xb8, 0x8a, 0xde, 0x9d, 0xb5, 0x8a, 0xde, 0x9d, 0xb8, 0x8a, 0xde, - 0x9e, 0xb5, 0x8a, 0xde, 0x9e, 0xb8, 0x8a, 0xde, 0x9f, 0xb5, 0x8a, 0xde, - 0x9f, 0xb8, 0x8a, 0xde, 0x9f, 0xb5, 0x8a, 0xde, 0xa0, 0xb8, 0x8a, 0xde, - 0xa0, 0xb5, 0x8a, 0xde, 0xa1, 0xb8, 0x8a, 0xde, 0xa1, 0xb5, 0x8a, 0xde, - 0xa1, 0xb8, 0x8a, 0xde, 0xa2, 0xb5, 0x8a, 0xde, 0xa2, 0xb8, 0x8a, 0xde, - 0xa3, 0xb5, 0x8a, 0xde, 0xa3, 0xb8, 0x8a, 0xde, 0xa3, 0xb5, 0x8a, 0xde, - 0xa4, 0xb8, 0x8a, 0xde, 0xa4, 0xb5, 0x8a, 0xde, 0xa5, 0xb8, 0x8a, 0xde, - 0xa5, 0xb5, 0x8a, 0xde, 0xa5, 0xb8, 0x8a, 0xde, 0xa6, 0xb5, 0x8a, 0xde, - 0xa6, 0xb8, 0x8a, 0xde, 0xa6, 0xb5, 0x8a, 0xde, 0xa7, 0xb8, 0x8a, 0xde, - 0xa7, 0xb5, 0x8a, 0xde, 0xa8, 0xb8, 0x8a, 0xde, 0xa8, 0xb5, 0xa3, 0xde, - 0xa8, 0x98, 0x8a, 0xde, 0xa9, 0xb5, 0xa3, 0xde, 0xa9, 0x98, 0xa3, 0xde, - 0xaa, 0x97, 0xa3, 0xde, 0xaa, 0x98, 0xa3, 0xde, 0xaa, 0x97, 0xa3, 0xde, - 0xab, 0x98, 0xa3, 0xde, 0xab, 0x97, 0xa3, 0xde, 0xab, 0x98, 0xa3, 0xde, - 0xac, 0x97, 0xa3, 0xde, 0xac, 0x98, 0xa3, 0xde, 0xac, 0x97, 0xa3, 0xde, - 0xad, 0x98, 0xa3, 0xde, 0xad, 0x97, 0xa3, 0xde, 0xae, 0x98, 0xa3, 0xde, - 0xae, 0x97, 0xa3, 0xde, 0xae, 0x98, 0xa3, 0xde, 0xaf, 0x97, 0xa3, 0xde, - 0xaf, 0x98, 0xa3, 0xde, 0xaf, 0x97, 0xa3, 0xde, 0xb0, 0x98, 0xa3, 0xde, - 0xb0, 0x97, 0xa3, 0xde, 0xb0, 0x98, 0xa3, 0xde, 0xb1, 0x97, 0xa3, 0xde, - 0xb1, 0x98, 0xa3, 0xde, 0xb2, 0x97, 0xa3, 0xde, 0xb2, 0x98, 0xa3, 0xde, - 0xb2, 0x97, 0xa3, 0xde, 0xb3, 0x98, 0xa3, 0xde, 0xb3, 0x97, 0xa3, 0xde, - 0xb3, 0x98, 0xa3, 0xde, 0xb4, 0x97, 0xa3, 0xde, 0xb4, 0x98, 0xa3, 0xde, - 0xb4, 0x97, 0xa3, 0xde, 0xb5, 0x98, 0xcf, 0xde, 0xb5, 0xbf, 0xcf, 0xde, - 0xb5, 0xc2, 0xcf, 0xde, 0xb6, 0xbf, 0xcf, 0xde, 0xb6, 0xc2, 0xcf, 0xde, - 0xb6, 0xbf, 0xcf, 0xde, 0xb7, 0xc2, 0xcf, 0xde, 0xb7, 0xbf, 0xcf, 0xde, - 0xb7, 0xc2, 0xcf, 0xde, 0xb8, 0xbf, 0xcf, 0xde, 0xb8, 0xc2, 0xcf, 0xde, - 0xb8, 0xbf, 0xcf, 0xde, 0xb9, 0xc2, 0xcf, 0xde, 0xb9, 0xbf, 0xcf, 0xde, - 0xb9, 0xc2, 0xcf, 0xde, 0xba, 0xbf, 0xcf, 0xde, 0xba, 0xc2, 0xcf, 0xde, - 0xba, 0xbf, 0xcf, 0xde, 0xbb, 0xc2, 0xcf, 0xde, 0xbb, 0xbf, 0xcf, 0xde, - 0xbb, 0xc2, 0xcf, 0xde, 0xbc, 0xbf, 0xcf, 0xde, 0xbc, 0xc2, 0xcf, 0xde, - 0xbc, 0xbf, 0xcf, 0xde, 0xbd, 0xc2, 0xcf, 0xde, 0xbd, 0xbf, 0xcf, 0xde, - 0xbd, 0xc2, 0xcf, 0xde, 0xbe, 0xbf, 0xcf, 0xde, 0xbe, 0xc2, 0xcf, 0xde, - 0xbe, 0xbf, 0xd0, 0xde, 0xbf, 0xbe, 0xcf, 0xde, 0xbf, 0xbf, 0xd0, 0xde, - 0xbf, 0xbe, 0xcf, 0xde, 0xc0, 0xbf, 0xd0, 0xde, 0xc0, 0xbe, 0xcf, 0xde, - 0xc0, 0xbf, 0xd0, 0xde, 0xc1, 0xbe, 0xcf, 0xde, 0xc1, 0xbf, 0xd0, 0xde, - 0xc1, 0xbe, 0xcf, 0xde, 0xc1, 0xbf, 0xd0, 0xde, 0xc2, 0xbe, 0xcf, 0xde, - 0xc2, 0xbf, 0xd0, 0xde, 0xc2, 0xbe, 0xcf, 0xde, 0xc3, 0xbf, 0xd0, 0xde, - 0xc3, 0xbe, 0xcf, 0xde, 0xc3, 0xbf, 0xd0, 0xde, 0xc4, 0xbe, 0xcf, 0xde, - 0xc4, 0xbf, 0xd0, 0xde, 0xc4, 0xbe, 0xcf, 0xde, 0xc5, 0xbf, 0xd0, 0xde, - 0xc5, 0xbe, 0xcf, 0xde, 0xc5, 0xbf, 0xd0, 0xde, 0xc6, 0xbe, 0xcf, 0xde, - 0xc6, 0xbf, 0xd0, 0xde, 0xc6, 0xbe, 0xcf, 0xde, 0xc6, 0xbf, 0xd0, 0xde, - 0xc7, 0xbe, 0xcf, 0xde, 0xc7, 0xbf, 0xd0, 0xde, 0xc7, 0xbe, 0xcf, 0xde, - 0xc8, 0xbf, 0xd0, 0xde, 0xc8, 0xbe, 0xcf, 0xde, 0xc8, 0xbf, 0xd0, 0xde, - 0xc9, 0xbe, 0xd0, 0xde, 0xc9, 0xbb, 0xd0, 0xde, 0xc9, 0xbe, 0xd0, 0xde, - 0xc9, 0xbb, 0xd0, 0xde, 0xca, 0xbe, 0xd0, 0xde, 0xca, 0xbb, 0xd0, 0xde, - 0xca, 0xbe, 0xd0, 0xde, 0xcb, 0xbb, 0xd0, 0xde, 0xcb, 0xbe, 0xd0, 0xde, - 0xcb, 0xbb, 0xd0, 0xde, 0xcc, 0xbe, 0xd0, 0xde, 0xcc, 0xbb, 0xd0, 0xde, - 0xcc, 0xbe, 0xd0, 0xde, 0xcc, 0xbb, 0xd0, 0xde, 0xcd, 0xbe, 0xd0, 0xde, - 0xcd, 0xbb, 0xd0, 0xde, 0xcd, 0xbe, 0xd0, 0xde, 0xce, 0xbb, 0xd0, 0xde, - 0xce, 0xbb, 0xd0, 0xde, 0xce, 0xbb, 0xd0, 0xde, 0xce, 0xbb, 0xd0, 0xde, - 0xcf, 0xbb, 0xd0, 0xde, 0xcf, 0xbb, 0xd0, 0xde, 0xcf, 0xbb, 0xd0, 0xde, - 0xd0, 0xbb, 0xd0, 0xde, 0xd0, 0xbb, 0xd0, 0xde, 0xd0, 0xbb, 0xd0, 0xde, - 0xd0, 0xbb, 0xd1, 0xde, 0xd0, 0xbb, 0xd1, 0xde, 0xd0, 0xbb, 0xd1, 0xde, - 0xd0, 0xbb, 0xd2, 0xde, 0xd0, 0xbb, 0xd2, 0xde, 0xd0, 0xbb, 0xd2, 0xde, - 0xd0, 0xbb, 0xd2, 0xde, 0xd0, 0xbb, 0xd3, 0xde, 0xd0, 0xbb, 0xd3, 0xde, - 0xd0, 0xbb, 0xd3, 0xde, 0xd0, 0xbb, 0xd4, 0xde, 0xd0, 0xbb, 0xd4, 0xde, - 0xd0, 0xbb, 0xd4, 0xde, 0xd0, 0xbb, 0xd4, 0xde, 0xd0, 0xbb, 0xd5, 0xdc, - 0xd0, 0xbb, 0xd5, 0xde, 0xd0, 0xbb, 0xd5, 0xdc, 0xd0, 0xbb, 0xd6, 0xde, - 0xd0, 0xbb, 0xd6, 0xdc, 0xd0, 0xbb, 0xd6, 0xde, 0xd0, 0xbb, 0xd6, 0xdc, - 0xd0, 0xbb, 0xd7, 0xde, 0xd0, 0xbb, 0xd7, 0xdc, 0xd0, 0xbb, 0xd7, 0xde, - 0xd0, 0xbb, 0xd7, 0xdc, 0xd0, 0xbb, 0xd8, 0xde, 0xd0, 0xbb, 0xd8, 0xdc, - 0xd0, 0xbb, 0xd8, 0xde, 0xd0, 0xbb, 0xd9, 0xdc, 0xd0, 0xbb, 0xd9, 0xde, - 0xd0, 0xbb, 0xd9, 0xdc, 0xd0, 0xbb, 0xd9, 0xde, 0xd0, 0xbb, 0xda, 0xdc, - 0xd0, 0xbb, 0xda, 0xde, 0xd0, 0xbb, 0xda, 0xdc, 0xd0, 0xbb, 0xda, 0xde, - 0xd0, 0xbb, 0xdb, 0xdc, 0xd0, 0xbb, 0xdb, 0xde, 0xd0, 0xbb, 0xdb, 0xdc, - 0xd0, 0xbb, 0xdb, 0xde, 0xd0, 0xbb, 0xdc, 0xdc, 0xd0, 0xbb, 0xdc, 0xde, - 0xd0, 0xbb, 0xdc, 0xdc, 0xd0, 0xbb, 0xdd, 0xe0, 0xe8, 0xbb, 0xdd, 0xdf, - 0xe8, 0xbb, 0xdd, 0xe0, 0xe8, 0xbb, 0xdd, 0xdf, 0xe8, 0xbb, 0xde, 0xe0, - 0xe8, 0xbb, 0xde, 0xdf, 0xe8, 0xbb, 0xde, 0xe0, 0xe8, 0xbb, 0xde, 0xdf, - 0xe8, 0xbb, 0xdf, 0xe0, 0xe8, 0xbb, 0xdf, 0xdf, 0xe8, 0xbb, 0xdf, 0xe0, - 0xe8, 0xbb, 0xdf, 0xdf, 0xe8, 0xbb, 0xe0, 0xe0, 0xe8, 0xbb, 0xe0, 0xdf, - 0xe8, 0xbb, 0xe0, 0xe0, 0xe8, 0xbb, 0xe1, 0xdf, 0xe8, 0xbb, 0xe1, 0xe0, - 0xe8, 0xbb, 0xe1, 0xdf, 0xe8, 0xbb, 0xe1, 0xe0, 0xe8, 0xbb, 0xe2, 0xdf, - 0xe8, 0xbb, 0xe2, 0xe0, 0xe8, 0xbb, 0xe2, 0xdf, 0xe8, 0xbb, 0xe2, 0xe0, - 0xe8, 0xbb, 0xe3, 0xdf, 0xe8, 0xbb, 0xe3, 0xe0, 0xe8, 0xbb, 0xe3, 0xdf, - 0xe8, 0xbb, 0xe3, 0xe0, 0xe8, 0xbb, 0xe4, 0xdf, 0xe8, 0xbb, 0xe4, 0xe0, - 0xe8, 0xbb, 0xe4, 0xdf, 0xe8, 0xbb, 0xe4, 0xde, 0xe8, 0xbb, 0xe5, 0xdf, - 0xe8, 0xbb, 0xe5, 0xde, 0xe8, 0xbb, 0xe5, 0xdf, 0xe8, 0xbb, 0xe5, 0xde, - 0xe8, 0xbb, 0xe6, 0xdf, 0xe8, 0xbb, 0xe6, 0xde, 0xe8, 0xbb, 0xe6, 0xdf, - 0xe8, 0xbb, 0xe6, 0xde, 0xe8, 0xbb, 0xe7, 0xdf, 0xe8, 0xbb, 0xe7, 0xde, - 0xe8, 0xbb, 0xe7, 0xdf, 0xe8, 0xbb, 0xe7, 0xde, 0xe8, 0xbb, 0xe8, 0xde, - 0xe9, 0xbb, 0xe8, 0xde, 0xe8, 0xbb, 0xe8, 0xde, 0xe9, 0xbb, 0xe8, 0xde, - 0xe8, 0xbb, 0xe8, 0xde, 0xe9, 0xbb, 0xe8, 0xde, 0xe9, 0xbb, 0xe8, 0xde, - 0xe9, 0xbb, 0xe8, 0xde, 0xe9, 0xb9, 0xe8, 0xde, 0xea, 0xbb, 0xe8, 0xde, - 0xea, 0xb9, 0xe8, 0xde, 0xea, 0xbb, 0xec, 0xde, 0xea, 0xbb, 0xec, 0xde, - 0xeb, 0xbb, 0xec, 0xde, 0xeb, 0xbb, 0xec, 0xde, 0xeb, 0xbb, 0xec, 0xde, - 0xeb, 0xbb, 0xec, 0xde, 0xec, 0xbb, 0xec, 0xde, 0xec, 0xbb, 0xec, 0xde, - 0xec, 0xbb, 0xec, 0xde, 0xec, 0xbb, 0xec, 0xde, 0xec, 0xbb, 0xed, 0xde, - 0xec, 0xbb, 0xed, 0xde, 0xec, 0xbb, 0xed, 0xde, 0xec, 0xbb, 0xed, 0xde, - 0xec, 0xbb, 0xee, 0xde, 0xec, 0xbb, 0xee, 0xde, 0xec, 0xbb, 0xee, 0xde, - 0xec, 0xbb, 0xee, 0xde, 0xec, 0xbb, 0xef, 0xde, 0xec, 0xbb, 0xef, 0xde, - 0xec, 0xbb, 0xef, 0xde, 0xec, 0xbb, 0xef, 0xde, 0xec, 0xbb, 0xf0, 0xde, - 0xec, 0xbb, 0xf0, 0xde, 0xec, 0xbb, 0xf0, 0xde, 0xec, 0xbb, 0xf0, 0xde, - 0xec, 0xbb, 0xf1, 0xde, 0xec, 0xbb, 0xf1, 0xde, 0xec, 0xbb, 0xf1, 0xde, - 0xec, 0xbb, 0xf1, 0xde, 0xec, 0xbb, 0xf2, 0xde, 0xec, 0xbb, 0xf2, 0xdb, - 0xec, 0xbb, 0xf2, 0xde, 0xec, 0xbb, 0xf2, 0xdb, 0xec, 0xbb, 0xf2, 0xde, - 0xec, 0xbb, 0xf3, 0xdb, 0xec, 0xbb, 0xf3, 0xde, 0xec, 0xbb, 0xf3, 0xdb, - 0xec, 0xbb, 0xf3, 0xde, 0xec, 0xbb, 0xf4, 0xdb, 0xec, 0xbb, 0xf4, 0xde, - 0xec, 0xbb, 0xf4, 0xdb, 0xec, 0xbb, 0xf4, 0xde, 0xec, 0xbb, 0xf5, 0xdb, - 0xec, 0xbb, 0xf5, 0xde, 0xec, 0xbb, 0xf5, 0xdb, 0xec, 0xbb, 0xf5, 0xde, - 0xec, 0xbb, 0xf5, 0xdb, 0xec, 0xbb, 0xf6, 0xde, 0xec, 0xbb, 0xf6, 0xdb, - 0xec, 0xbb, 0xf6, 0xde, 0xec, 0xbb, 0xf6, 0xdb, 0xec, 0xbb, 0xf7, 0xde, - 0xec, 0xbb, 0xf7, 0xdb, 0xec, 0xbb, 0xf7, 0xde, 0xec, 0xbb, 0xf7, 0xdb, - 0xec, 0xbb, 0xf8, 0xde, 0xec, 0xbb, 0xf8, 0xdb, 0xec, 0xbb, 0xf8, 0xde, - 0xec, 0xbb, 0xf8, 0xdb, 0xec, 0xbb, 0xf8, 0xde, 0xec, 0xbb, 0xf9, 0xdb, - 0xec, 0xbb, 0xf9, 0xde, 0xec, 0xbb, 0xf9, 0xdb, 0xec, 0xbb, 0xf9, 0xde, - 0xec, 0xbb, 0xfa, 0xdb, 0xec, 0xbb, 0xfa, 0xde, 0xec, 0xbb, 0xfa, 0xdb, - 0xec, 0xbb, 0xfa, 0xde, 0xec, 0xbb, 0xfa, 0xdb, 0xec, 0xbb, 0xfb, 0xde, - 0xec, 0xbb, 0xfb, 0xdb, 0xec, 0xbb, 0xfb, 0xde, 0xec, 0xbb, 0xfb, 0xdb, - 0xec, 0xbb, 0xfc, 0xde, 0xec, 0xbb, 0xfc, 0xdb, 0xec, 0xbb, 0xfc, 0xde, - 0xec, 0xbb, 0xfc, 0xdb, 0xec, 0xbb, 0xfc, 0xde, 0xec, 0xbb, 0xfd, 0xdb, - 0xec, 0xbb, 0xfd, 0xde, 0xec, 0xbb, 0xfd, 0xdb, 0xec, 0xbb, 0xfd, 0xde, - 0xec, 0xbb, 0xfe, 0xdb, 0xec, 0xbb, 0xfe, 0xde, 0xec, 0xbb, 0xfe, 0xdb, - 0xec, 0xbb, 0xfe, 0xde, 0xec, 0xbb, 0xfe, 0xdb, 0xec, 0xbb, 0xff, 0xec, - 0xf1, 0xbb, 0xff, 0xec, 0xf1, 0xbb, 0x03, 0xe3, 0x88, 0xbb, 0x0a, 0xe4, - 0x88, 0xbb, 0x0f, 0xe3, 0x88, 0xbb, 0x14, 0xe4, 0x88, 0xbb, 0x17, 0xe3, - 0x88, 0xbb, 0x1b, 0xe4, 0x88, 0xbb, 0x1e, 0xe3, 0x88, 0xbb, 0x20, 0xe4, - 0x88, 0xbb, 0x23, 0xe3, 0x88, 0xbb, 0x25, 0xe4, 0x88, 0xbb, 0x27, 0xe3, - 0x88, 0xbb, 0x29, 0xe4, 0x88, 0xbb, 0x2b, 0xe3, 0x88, 0xbb, 0x2d, 0xe4, - 0x88, 0xbb, 0x2f, 0xe3, 0x88, 0xbb, 0x31, 0xe4, 0x88, 0xbb, 0x32, 0xe3, - 0x88, 0xbb, 0x34, 0xe4, 0x88, 0xbb, 0x35, 0xe3, 0x88, 0xbb, 0x37, 0xe4, - 0x88, 0xbb, 0x38, 0xe3, 0x88, 0xbb, 0x3a, 0xe4, 0x88, 0xbb, 0x3b, 0xe3, - 0x88, 0xbb, 0x3c, 0xe1, 0x89, 0xbb, 0x3e, 0xe3, 0x88, 0xbb, 0x3f, 0xe1, - 0x89, 0xbb, 0x40, 0xe3, 0x88, 0xbb, 0x42, 0xe1, 0x89, 0xbb, 0x43, 0xe3, - 0x88, 0xbb, 0x44, 0xe1, 0x89, 0xbb, 0x45, 0xe3, 0x88, 0xbb, 0x46, 0xe1, - 0x89, 0xbb, 0x47, 0xe3, 0x88, 0xbb, 0x48, 0xe1, 0x89, 0xbb, 0x49, 0xe3, - 0x88, 0xbb, 0x4a, 0xe1, 0x89, 0xbb, 0x4b, 0xe3, 0x88, 0xbb, 0x4c, 0xe1, - 0x89, 0xbb, 0x4d, 0xe3, 0x88, 0xbb, 0x4e, 0xe1, 0x89, 0xbb, 0x4f, 0xe3, - 0x88, 0xbb, 0x50, 0xe1, 0x89, 0xbb, 0x51, 0xe3, 0x88, 0xbb, 0x52, 0xe1, - 0x89, 0xbb, 0x53, 0xe3, 0x88, 0xbb, 0x54, 0xe1, 0x89, 0xbb, 0x55, 0xe3, - 0x88, 0xbb, 0x56, 0xe1, 0x89, 0xbb, 0x57, 0xe3, 0x88, 0xbb, 0x58, 0xe1, - 0x89, 0xbb, 0x58, 0xe3, 0x88, 0xbb, 0x59, 0xe1, 0x89, 0xbb, 0x5a, 0xe3, - 0x88, 0xbb, 0x5b, 0xe1, 0x89, 0xbb, 0x5c, 0xe3, 0x88, 0xbb, 0x5d, 0xe1, - 0x89, 0xbb, 0x5d, 0xe3, 0x88, 0xbb, 0x5e, 0xe1, 0x89, 0xbb, 0x5f, 0xe3, - 0x88, 0xbb, 0x60, 0xe1, 0x89, 0xbb, 0x60, 0xe3, 0x88, 0xbb, 0x61, 0xe1, - 0x89, 0xbb, 0x62, 0xe3, 0x88, 0xbb, 0x63, 0xe1, 0x89, 0xbb, 0x63, 0xdf, - 0x89, 0xbb, 0x64, 0xe1, 0x89, 0xbb, 0x65, 0xdf, 0x89, 0xbb, 0x66, 0xe1, - 0x89, 0xbb, 0x66, 0xdf, 0x89, 0xbb, 0x67, 0xe1, 0x89, 0xbb, 0x68, 0xdf, - 0x89, 0xbb, 0x68, 0xe1, 0x89, 0xbb, 0x69, 0xdf, 0x89, 0xbb, 0x6a, 0xe1, - 0x89, 0xbb, 0x6a, 0xdf, 0x89, 0xbb, 0x6b, 0xe1, 0x89, 0xbb, 0x6c, 0xdf, - 0x89, 0xbb, 0x6c, 0xe1, 0x89, 0xbb, 0x6d, 0xdf, 0x89, 0xbb, 0x6e, 0xe1, - 0x89, 0xbb, 0x6e, 0xdf, 0x89, 0xbb, 0x6f, 0xe1, 0x89, 0xbb, 0x70, 0xdf, - 0x89, 0xbb, 0x70, 0xe1, 0x89, 0xbb, 0x71, 0xdf, 0x89, 0xbb, 0x72, 0xe1, - 0x89, 0xbb, 0x72, 0xdf, 0x89, 0xbb, 0x73, 0xe1, 0x89, 0xbb, 0x73, 0xdf, - 0x89, 0xbb, 0x74, 0xe1, 0x89, 0xbb, 0x75, 0xdf, 0x89, 0xbb, 0x75, 0xe1, - 0x89, 0xbb, 0x76, 0xdf, 0x89, 0xbb, 0x76, 0xe1, 0x89, 0xbb, 0x77, 0xdf, - 0x89, 0xbb, 0x78, 0xe1, 0x89, 0xbb, 0x78, 0xdf, 0x89, 0xbb, 0x79, 0xe1, - 0x89, 0xbb, 0x79, 0xdf, 0x89, 0xbb, 0x7a, 0xdf, 0x89, 0xbb, 0x7a, 0xdf, - 0x89, 0xbb, 0x7b, 0xdf, 0x89, 0xbb, 0x7c, 0xdf, 0x89, 0xbb, 0x7c, 0xdf, - 0x89, 0xbb, 0x7d, 0xdf, 0x89, 0xbb, 0x7d, 0xdf, 0x89, 0xbb, 0x7e, 0xdf, - 0x89, 0xbb, 0x7e, 0xdf, 0x89, 0xbb, 0x7f, 0xdf, 0x89, 0xbb, 0x7f, 0xdf, - 0x89, 0xbb, 0x80, 0xdf, 0x89, 0xbb, 0x81, 0xdf, 0x89, 0xbb, 0x81, 0xdf, - 0x89, 0xbb, 0x82, 0xdf, 0x89, 0xbb, 0x82, 0xdf, 0x89, 0xbb, 0x83, 0xdf, - 0x89, 0xbb, 0x83, 0xdf, 0x89, 0xbb, 0x84, 0xdf, 0x89, 0xbb, 0x84, 0xdf, - 0x89, 0xbb, 0x85, 0xdf, 0x89, 0xbb, 0x85, 0xdf, 0x89, 0xbb, 0x86, 0xdf, - 0x89, 0xbb, 0x86, 0xdf, 0x89, 0xbb, 0x87, 0xdf, 0x89, 0xbb, 0x87, 0xdf, - 0x89, 0xbb, 0x88, 0xdf, 0x89, 0xbb, 0x88, 0xdf, 0x89, 0xbb, 0x89, 0xde, - 0x8a, 0xbb, 0x89, 0xdf, 0x89, 0xbb, 0x89, 0xde, 0x8a, 0xbb, 0x89, 0xde, - 0x8a, 0xbb, 0x89, 0xde, 0x8b, 0xbb, 0x89, 0xde, 0x8b, 0xbb, 0x89, 0xde, - 0x8c, 0xbb, 0x89, 0xde, 0x8c, 0xbb, 0x89, 0xde, 0x8d, 0xbb, 0x89, 0xde, - 0x8d, 0xbb, 0x8a, 0xde, 0x8e, 0xb8, 0x89, 0xde, 0x8e, 0xbb, 0x8a, 0xde, - 0x8e, 0xb8, 0x89, 0xde, 0x8f, 0xbb, 0x8a, 0xde, 0x8f, 0xb8, 0x89, 0xde, - 0x90, 0xbb, 0x8a, 0xde, 0x90, 0xb8, 0x89, 0xde, 0x91, 0xbb, 0x8a, 0xde, - 0x91, 0xb8, 0x89, 0xde, 0x92, 0xbb, 0x8a, 0xde, 0x92, 0xb8, 0x89, 0xde, - 0x93, 0xbb, 0x8a, 0xde, 0x93, 0xb8, 0x89, 0xde, 0x94, 0xbb, 0x8a, 0xde, - 0x94, 0xb8, 0x89, 0xde, 0x94, 0xbb, 0x8a, 0xde, 0x95, 0xb8, 0x89, 0xde, - 0x95, 0xbb, 0x8a, 0xde, 0x96, 0xb8, 0x89, 0xde, 0x96, 0xbb, 0x8a, 0xde, - 0x97, 0xb8, 0x89, 0xde, 0x97, 0xbb, 0x8a, 0xde, 0x98, 0xb8, 0x89, 0xde, - 0x98, 0xbb, 0x8a, 0xde, 0x98, 0xb8, 0x89, 0xde, 0x99, 0xbb, 0x8a, 0xde, - 0x99, 0xb8, 0x89, 0xde, 0x9a, 0xbb, 0x8a, 0xde, 0x9a, 0xb8, 0x8a, 0xde, - 0x9a, 0xb5, 0x8a, 0xde, 0x9b, 0xb8, 0x8a, 0xde, 0x9b, 0xb5, 0x8a, 0xde, - 0x9c, 0xb8, 0x8a, 0xde, 0x9c, 0xb5, 0x8a, 0xde, 0x9d, 0xb8, 0x8a, 0xde, - 0x9d, 0xb5, 0x8a, 0xde, 0x9d, 0xb8, 0x8a, 0xde, 0x9e, 0xb5, 0x8a, 0xde, - 0x9e, 0xb8, 0x8a, 0xde, 0x9f, 0xb5, 0x8a, 0xde, 0x9f, 0xb8, 0x8a, 0xde, - 0x9f, 0xb5, 0x8a, 0xde, 0xa0, 0xb8, 0x8a, 0xde, 0xa0, 0xb5, 0x8a, 0xde, - 0xa1, 0xb8, 0x8a, 0xde, 0xa1, 0xb5, 0x8a, 0xde, 0xa1, 0xb8, 0x8a, 0xde, - 0xa2, 0xb5, 0x8a, 0xde, 0xa2, 0xb8, 0x8a, 0xde, 0xa3, 0xb5, 0x8a, 0xde, - 0xa3, 0xb8, 0x8a, 0xde, 0xa3, 0xb5, 0x8a, 0xde, 0xa4, 0xb8, 0x8a, 0xde, - 0xa4, 0xb5, 0x8a, 0xde, 0xa5, 0xb8, 0x8a, 0xde, 0xa5, 0xb5, 0x8a, 0xde, - 0xa5, 0xb8, 0x8a, 0xde, 0xa6, 0xb5, 0x8a, 0xde, 0xa6, 0xb8, 0x8a, 0xde, - 0xa6, 0xb5, 0x8a, 0xde, 0xa7, 0xb8, 0x8a, 0xde, 0xa7, 0xb5, 0x8a, 0xde, - 0xa8, 0xb8, 0x8a, 0xde, 0xa8, 0xb5, 0x8a, 0xde, 0xa8, 0xb8, 0x8a, 0xde, - 0xa9, 0xb5, 0xa3, 0xde, 0xa9, 0x97, 0xa3, 0xde, 0xaa, 0x97, 0xa3, 0xde, - 0xaa, 0x97, 0xa3, 0xde, 0xaa, 0x97, 0xa3, 0xde, 0xab, 0x97, 0xa3, 0xde, - 0xab, 0x97, 0xa3, 0xde, 0xab, 0x97, 0xa3, 0xde, 0xac, 0x97, 0xa3, 0xde, - 0xac, 0x97, 0xa3, 0xde, 0xac, 0x97, 0xa3, 0xde, 0xad, 0x97, 0xa3, 0xde, - 0xad, 0x97, 0xa3, 0xde, 0xae, 0x97, 0xa3, 0xde, 0xae, 0x97, 0xa3, 0xde, - 0xae, 0x97, 0xa3, 0xde, 0xaf, 0x97, 0xa3, 0xde, 0xaf, 0x97, 0xa3, 0xde, - 0xaf, 0x97, 0xa3, 0xde, 0xb0, 0x97, 0xa3, 0xde, 0xb0, 0x97, 0xa3, 0xde, - 0xb0, 0x97, 0xa3, 0xde, 0xb1, 0x97, 0xa3, 0xde, 0xb1, 0x97, 0xa3, 0xde, - 0xb2, 0x97, 0xa3, 0xde, 0xb2, 0x97, 0xa3, 0xde, 0xb2, 0x97, 0xa3, 0xde, - 0xb3, 0x97, 0xa3, 0xde, 0xb3, 0x97, 0xa3, 0xde, 0xb3, 0x97, 0xa3, 0xde, - 0xb4, 0x97, 0xa3, 0xde, 0xb4, 0x97, 0xa3, 0xde, 0xb4, 0x97, 0xcf, 0xde, - 0xb5, 0xc3, 0xcf, 0xde, 0xb5, 0xc5, 0xcf, 0xde, 0xb5, 0xc3, 0xcf, 0xde, - 0xb6, 0xc5, 0xcf, 0xde, 0xb6, 0xc3, 0xcf, 0xde, 0xb6, 0xc5, 0xcf, 0xde, - 0xb7, 0xc3, 0xcf, 0xde, 0xb7, 0xc5, 0xcf, 0xde, 0xb7, 0xc3, 0xcf, 0xde, - 0xb8, 0xc0, 0xcf, 0xde, 0xb8, 0xc3, 0xcf, 0xde, 0xb8, 0xc0, 0xcf, 0xde, - 0xb9, 0xc3, 0xcf, 0xde, 0xb9, 0xc0, 0xcf, 0xde, 0xb9, 0xc3, 0xcf, 0xde, - 0xba, 0xc0, 0xcf, 0xde, 0xba, 0xc3, 0xcf, 0xde, 0xba, 0xc0, 0xcf, 0xde, - 0xbb, 0xc3, 0xcf, 0xde, 0xbb, 0xc0, 0xcf, 0xde, 0xbb, 0xc3, 0xcf, 0xde, - 0xbc, 0xc0, 0xcf, 0xde, 0xbc, 0xc3, 0xcf, 0xde, 0xbc, 0xc0, 0xcf, 0xde, - 0xbd, 0xc3, 0xcf, 0xde, 0xbd, 0xc0, 0xd0, 0xde, 0xbd, 0xbd, 0xcf, 0xde, - 0xbe, 0xc0, 0xd0, 0xde, 0xbe, 0xbd, 0xcf, 0xde, 0xbe, 0xc0, 0xd0, 0xde, - 0xbf, 0xbd, 0xcf, 0xde, 0xbf, 0xc0, 0xd0, 0xde, 0xbf, 0xbd, 0xcf, 0xde, - 0xc0, 0xc0, 0xd0, 0xde, 0xc0, 0xbd, 0xcf, 0xde, 0xc0, 0xc0, 0xd0, 0xde, - 0xc1, 0xbd, 0xcf, 0xde, 0xc1, 0xc0, 0xd0, 0xde, 0xc1, 0xbd, 0xcf, 0xde, - 0xc1, 0xc0, 0xd0, 0xde, 0xc2, 0xbd, 0xcf, 0xde, 0xc2, 0xc0, 0xd0, 0xde, - 0xc2, 0xbd, 0xcf, 0xde, 0xc3, 0xc0, 0xd0, 0xde, 0xc3, 0xbd, 0xcf, 0xde, - 0xc3, 0xc0, 0xd0, 0xde, 0xc4, 0xbd, 0xcf, 0xde, 0xc4, 0xc0, 0xd0, 0xde, - 0xc4, 0xbd, 0xcf, 0xde, 0xc5, 0xc0, 0xd0, 0xde, 0xc5, 0xbd, 0xcf, 0xde, - 0xc5, 0xc0, 0xd0, 0xde, 0xc6, 0xbd, 0xcf, 0xde, 0xc6, 0xc0, 0xd0, 0xde, - 0xc6, 0xbd, 0xcf, 0xde, 0xc6, 0xc0, 0xd0, 0xde, 0xc7, 0xbd, 0xcf, 0xde, - 0xc7, 0xc0, 0xd0, 0xde, 0xc7, 0xbd, 0xcf, 0xde, 0xc8, 0xc0, 0xd0, 0xde, - 0xc8, 0xbd, 0xcf, 0xde, 0xc8, 0xc0, 0xd0, 0xde, 0xc9, 0xbd, 0xd0, 0xde, - 0xc9, 0xbb, 0xd0, 0xde, 0xc9, 0xbd, 0xd0, 0xde, 0xc9, 0xbb, 0xd0, 0xde, - 0xca, 0xbd, 0xd0, 0xde, 0xca, 0xbb, 0xd0, 0xde, 0xca, 0xbd, 0xd0, 0xde, - 0xcb, 0xbb, 0xd0, 0xde, 0xcb, 0xbd, 0xd0, 0xde, 0xcb, 0xbb, 0xd0, 0xde, - 0xcc, 0xbd, 0xd0, 0xde, 0xcc, 0xbb, 0xd0, 0xde, 0xcc, 0xbd, 0xd0, 0xde, - 0xcc, 0xbb, 0xd0, 0xde, 0xcd, 0xbd, 0xd0, 0xde, 0xcd, 0xbb, 0xd0, 0xde, - 0xcd, 0xbd, 0xd0, 0xde, 0xce, 0xbb, 0xd0, 0xde, 0xce, 0xbd, 0xd0, 0xde, - 0xce, 0xbb, 0xd0, 0xde, 0xce, 0xbd, 0xd0, 0xde, 0xcf, 0xbb, 0xd0, 0xde, - 0xcf, 0xbb, 0xd0, 0xde, 0xcf, 0xbb, 0xd0, 0xde, 0xd0, 0xbb, 0xd0, 0xde, - 0xcf, 0xbb, 0xd0, 0xde, 0xd0, 0xbb, 0xd0, 0xde, 0xcf, 0xbb, 0xd1, 0xde, - 0xd0, 0xbb, 0xd1, 0xdd, 0xd0, 0xbb, 0xd1, 0xde, 0xd0, 0xbb, 0xd2, 0xdd, - 0xd0, 0xbb, 0xd2, 0xde, 0xd0, 0xbb, 0xd2, 0xdd, 0xd0, 0xbb, 0xd2, 0xde, - 0xd0, 0xbb, 0xd3, 0xdd, 0xd0, 0xbb, 0xd3, 0xde, 0xd0, 0xbb, 0xd3, 0xdd, - 0xd0, 0xbb, 0xd4, 0xde, 0xd0, 0xbb, 0xd4, 0xdd, 0xd0, 0xbb, 0xd4, 0xde, - 0xd0, 0xbb, 0xd4, 0xdd, 0xd0, 0xbb, 0xd5, 0xdc, 0xd0, 0xbb, 0xd5, 0xdd, - 0xd0, 0xbb, 0xd5, 0xdc, 0xd0, 0xbb, 0xd6, 0xdd, 0xd0, 0xbb, 0xd6, 0xdc, - 0xd0, 0xbb, 0xd6, 0xdd, 0xd0, 0xbb, 0xd6, 0xdc, 0xd0, 0xbb, 0xd7, 0xdd, - 0xd0, 0xbb, 0xd7, 0xdc, 0xd0, 0xbb, 0xd7, 0xdd, 0xd0, 0xbb, 0xd7, 0xdc, - 0xd0, 0xbb, 0xd8, 0xdd, 0xd0, 0xbb, 0xd8, 0xdc, 0xd0, 0xbb, 0xd8, 0xdd, - 0xd0, 0xbb, 0xd9, 0xdc, 0xd0, 0xbb, 0xd9, 0xdd, 0xd0, 0xbb, 0xd9, 0xdc, - 0xd0, 0xbb, 0xd9, 0xdd, 0xd0, 0xbb, 0xda, 0xdc, 0xd0, 0xbb, 0xda, 0xdd, - 0xd0, 0xbb, 0xda, 0xdc, 0xd0, 0xbb, 0xda, 0xdd, 0xd0, 0xbb, 0xdb, 0xdc, - 0xd0, 0xbb, 0xdb, 0xdd, 0xd0, 0xbb, 0xdb, 0xdc, 0xd0, 0xbb, 0xdb, 0xdd, - 0xd0, 0xbb, 0xdc, 0xdc, 0xd0, 0xbb, 0xdc, 0xdd, 0xd0, 0xbb, 0xdc, 0xdc, - 0xd0, 0xbb, 0xdd, 0xe1, 0xe8, 0xbb, 0xdd, 0xdf, 0xe8, 0xbb, 0xdd, 0xe1, - 0xe8, 0xbb, 0xdd, 0xdf, 0xe8, 0xbb, 0xde, 0xe1, 0xe8, 0xbb, 0xde, 0xdf, - 0xe8, 0xbb, 0xde, 0xe1, 0xe8, 0xbb, 0xde, 0xdf, 0xe8, 0xbb, 0xdf, 0xe1, - 0xe8, 0xbb, 0xdf, 0xdf, 0xe8, 0xbb, 0xdf, 0xe1, 0xe8, 0xbb, 0xdf, 0xdf, - 0xe8, 0xbb, 0xe0, 0xe1, 0xe8, 0xbb, 0xe0, 0xdf, 0xe8, 0xbb, 0xe0, 0xe1, - 0xe8, 0xbb, 0xe1, 0xdf, 0xe8, 0xbb, 0xe1, 0xe1, 0xe8, 0xbb, 0xe1, 0xdf, - 0xe8, 0xbb, 0xe1, 0xe1, 0xe8, 0xbb, 0xe2, 0xdf, 0xe8, 0xbb, 0xe2, 0xe1, - 0xe8, 0xbb, 0xe2, 0xdf, 0xe8, 0xbb, 0xe2, 0xe1, 0xe8, 0xbb, 0xe3, 0xdf, - 0xe8, 0xbb, 0xe3, 0xe1, 0xe8, 0xbb, 0xe3, 0xdf, 0xe8, 0xbb, 0xe3, 0xe1, - 0xe8, 0xbb, 0xe4, 0xdf, 0xe8, 0xbb, 0xe4, 0xe1, 0xe8, 0xbb, 0xe4, 0xdf, - 0xe8, 0xbb, 0xe4, 0xde, 0xe8, 0xbb, 0xe5, 0xdf, 0xe8, 0xbb, 0xe5, 0xde, - 0xe8, 0xbb, 0xe5, 0xdf, 0xe8, 0xbb, 0xe5, 0xde, 0xe8, 0xbb, 0xe6, 0xdf, - 0xe8, 0xbb, 0xe6, 0xde, 0xe8, 0xbb, 0xe6, 0xdf, 0xe8, 0xbb, 0xe6, 0xde, - 0xe8, 0xbb, 0xe7, 0xdf, 0xe8, 0xbb, 0xe7, 0xde, 0xe8, 0xbb, 0xe7, 0xdf, - 0xe8, 0xbb, 0xe7, 0xde, 0xe8, 0xbb, 0xe8, 0xdf, 0xe8, 0xbb, 0xe8, 0xde, - 0xe8, 0xbb, 0xe8, 0xdf, 0xe8, 0xbb, 0xe8, 0xde, 0xe8, 0xbb, 0xe8, 0xde, - 0xe9, 0xbb, 0xe8, 0xde, 0xe9, 0xbb, 0xe8, 0xde, 0xe9, 0xbb, 0xe8, 0xde, - 0xe9, 0xbb, 0xe8, 0xde, 0xea, 0xbb, 0xe8, 0xde, 0xea, 0xbb, 0xe8, 0xde, - 0xea, 0xbb, 0xec, 0xde, 0xea, 0xbb, 0xec, 0xde, 0xeb, 0xbb, 0xec, 0xde, - 0xeb, 0xbb, 0xec, 0xde, 0xeb, 0xbb, 0xec, 0xde, 0xeb, 0xbb, 0xec, 0xde, - 0xec, 0xbb, 0xec, 0xde, 0xeb, 0xbb, 0xec, 0xde, 0xec, 0xbb, 0xec, 0xde, - 0xeb, 0xbb, 0xec, 0xde, 0xec, 0xbb, 0xed, 0xdd, 0xec, 0xbb, 0xed, 0xde, - 0xec, 0xbb, 0xed, 0xdd, 0xec, 0xbb, 0xed, 0xde, 0xec, 0xbb, 0xee, 0xdd, - 0xec, 0xbb, 0xee, 0xde, 0xec, 0xbb, 0xee, 0xdd, 0xec, 0xbb, 0xee, 0xde, - 0xec, 0xbb, 0xef, 0xdd, 0xec, 0xbb, 0xef, 0xde, 0xec, 0xbb, 0xef, 0xdd, - 0xec, 0xbb, 0xef, 0xde, 0xec, 0xbb, 0xf0, 0xdd, 0xec, 0xbb, 0xf0, 0xde, - 0xec, 0xbb, 0xf0, 0xdd, 0xec, 0xbb, 0xf0, 0xde, 0xec, 0xbb, 0xf1, 0xdd, - 0xec, 0xbb, 0xf1, 0xde, 0xec, 0xbb, 0xf1, 0xdd, 0xec, 0xbb, 0xf1, 0xde, - 0xec, 0xbb, 0xf2, 0xdd, 0xec, 0xbb, 0xf2, 0xdc, 0xec, 0xbb, 0xf2, 0xdd, - 0xec, 0xbb, 0xf2, 0xdc, 0xec, 0xbb, 0xf2, 0xdd, 0xec, 0xbb, 0xf3, 0xdc, - 0xec, 0xbb, 0xf3, 0xdd, 0xec, 0xbb, 0xf3, 0xdc, 0xec, 0xbb, 0xf3, 0xdd, - 0xec, 0xbb, 0xf4, 0xdc, 0xec, 0xbb, 0xf4, 0xdd, 0xec, 0xbb, 0xf4, 0xdc, - 0xec, 0xbb, 0xf4, 0xdd, 0xec, 0xbb, 0xf5, 0xdc, 0xec, 0xbb, 0xf5, 0xdd, - 0xec, 0xbb, 0xf5, 0xdc, 0xec, 0xbb, 0xf5, 0xdd, 0xec, 0xbb, 0xf5, 0xdc, - 0xec, 0xbb, 0xf6, 0xdd, 0xec, 0xbb, 0xf6, 0xdc, 0xec, 0xbb, 0xf6, 0xdd, - 0xec, 0xbb, 0xf6, 0xdc, 0xec, 0xbb, 0xf7, 0xdd, 0xec, 0xbb, 0xf7, 0xdc, - 0xec, 0xbb, 0xf7, 0xdd, 0xec, 0xbb, 0xf7, 0xdc, 0xec, 0xbb, 0xf8, 0xdd, - 0xec, 0xbb, 0xf8, 0xdc, 0xec, 0xbb, 0xf8, 0xdd, 0xec, 0xbb, 0xf8, 0xdc, - 0xec, 0xbb, 0xf8, 0xdd, 0xec, 0xbb, 0xf9, 0xdc, 0xec, 0xbb, 0xf9, 0xdd, - 0xec, 0xbb, 0xf9, 0xdc, 0xec, 0xbb, 0xf9, 0xdd, 0xec, 0xbb, 0xfa, 0xdc, - 0xec, 0xbb, 0xfa, 0xdd, 0xec, 0xbb, 0xfa, 0xdc, 0xec, 0xbb, 0xfa, 0xdd, - 0xec, 0xbb, 0xfa, 0xdc, 0xec, 0xbb, 0xfb, 0xdd, 0xec, 0xbb, 0xfb, 0xdc, - 0xec, 0xbb, 0xfb, 0xdd, 0xec, 0xbb, 0xfb, 0xdc, 0xec, 0xbb, 0xfc, 0xdd, - 0xec, 0xbb, 0xfc, 0xdc, 0xec, 0xbb, 0xfc, 0xdd, 0xec, 0xbb, 0xfc, 0xdc, - 0xec, 0xbb, 0xfc, 0xdd, 0xec, 0xbb, 0xfd, 0xdc, 0xec, 0xbb, 0xfd, 0xdd, - 0xec, 0xbb, 0xfd, 0xdc, 0xec, 0xbb, 0xfd, 0xdd, 0xec, 0xbb, 0xfe, 0xec, - 0xf1, 0xbb, 0xfe, 0xec, 0xf1, 0xbb, 0xfe, 0xec, 0xf1, 0xbb, 0xfe, 0xec, - 0xf1, 0xbb, 0xfe, 0xec, 0xf1, 0xbb, 0xff, 0xec, 0xf1, 0xbb, 0xff, 0xec, - 0xf1, 0xbb, 0x03, 0xe2, 0x88, 0xbc, 0x0a, 0xe4, 0x88, 0xbc, 0x0f, 0xe2, - 0x88, 0xbc, 0x14, 0xe4, 0x88, 0xbc, 0x17, 0xe2, 0x88, 0xbc, 0x1b, 0xe4, - 0x88, 0xbc, 0x1e, 0xe2, 0x88, 0xbc, 0x20, 0xe4, 0x88, 0xbc, 0x23, 0xe2, - 0x88, 0xbc, 0x25, 0xe4, 0x88, 0xbc, 0x27, 0xe2, 0x88, 0xbc, 0x29, 0xe4, - 0x88, 0xbc, 0x2b, 0xe2, 0x88, 0xbc, 0x2d, 0xe4, 0x88, 0xbc, 0x2f, 0xe2, - 0x88, 0xbc, 0x31, 0xe4, 0x88, 0xbc, 0x32, 0xe2, 0x88, 0xbc, 0x34, 0xe4, - 0x88, 0xbc, 0x35, 0xe2, 0x88, 0xbc, 0x37, 0xe4, 0x88, 0xbc, 0x38, 0xe2, - 0x88, 0xbc, 0x3a, 0xe4, 0x88, 0xbc, 0x3b, 0xe2, 0x88, 0xbc, 0x3c, 0xe4, - 0x88, 0xbc, 0x3e, 0xe2, 0x88, 0xbc, 0x3f, 0xe4, 0x88, 0xbc, 0x40, 0xe2, - 0x88, 0xbc, 0x42, 0xe4, 0x88, 0xbc, 0x43, 0xe2, 0x88, 0xbc, 0x44, 0xe4, - 0x88, 0xbc, 0x45, 0xe2, 0x88, 0xbc, 0x46, 0xe4, 0x88, 0xbc, 0x47, 0xe2, - 0x88, 0xbc, 0x48, 0xe4, 0x88, 0xbc, 0x49, 0xe2, 0x88, 0xbc, 0x4a, 0xe4, - 0x88, 0xbc, 0x4b, 0xe2, 0x88, 0xbc, 0x4c, 0xe4, 0x88, 0xbc, 0x4d, 0xe2, - 0x88, 0xbc, 0x4e, 0xe4, 0x88, 0xbc, 0x4f, 0xe2, 0x88, 0xbc, 0x50, 0xe4, - 0x88, 0xbc, 0x51, 0xe2, 0x88, 0xbc, 0x52, 0xe1, 0x89, 0xbc, 0x53, 0xe2, - 0x88, 0xbc, 0x54, 0xe1, 0x89, 0xbc, 0x55, 0xe2, 0x88, 0xbc, 0x56, 0xe1, - 0x89, 0xbc, 0x57, 0xe2, 0x88, 0xbc, 0x58, 0xe1, 0x89, 0xbc, 0x58, 0xe2, - 0x88, 0xbc, 0x59, 0xe1, 0x89, 0xbc, 0x5a, 0xe2, 0x88, 0xbc, 0x5b, 0xe1, - 0x89, 0xbc, 0x5c, 0xe2, 0x88, 0xbc, 0x5d, 0xe1, 0x89, 0xbc, 0x5d, 0xe2, - 0x88, 0xbc, 0x5e, 0xe1, 0x89, 0xbc, 0x5f, 0xe2, 0x88, 0xbc, 0x60, 0xe1, - 0x89, 0xbc, 0x60, 0xe2, 0x88, 0xbc, 0x61, 0xe1, 0x89, 0xbc, 0x62, 0xe2, - 0x88, 0xbc, 0x63, 0xe1, 0x89, 0xbc, 0x63, 0xe2, 0x88, 0xbc, 0x64, 0xe1, - 0x89, 0xbc, 0x65, 0xe2, 0x88, 0xbc, 0x66, 0xe1, 0x89, 0xbc, 0x66, 0xe2, - 0x88, 0xbc, 0x67, 0xe1, 0x89, 0xbc, 0x68, 0xe2, 0x88, 0xbc, 0x68, 0xe1, - 0x89, 0xbc, 0x69, 0xe2, 0x88, 0xbc, 0x6a, 0xe1, 0x89, 0xbc, 0x6a, 0xe2, - 0x88, 0xbc, 0x6b, 0xe1, 0x89, 0xbc, 0x6c, 0xe2, 0x88, 0xbc, 0x6c, 0xe1, - 0x89, 0xbc, 0x6d, 0xe2, 0x88, 0xbc, 0x6e, 0xe1, 0x89, 0xbc, 0x6e, 0xdf, - 0x89, 0xbc, 0x6f, 0xe1, 0x89, 0xbc, 0x70, 0xdf, 0x89, 0xbc, 0x70, 0xe1, - 0x89, 0xbc, 0x71, 0xdf, 0x89, 0xbc, 0x72, 0xe1, 0x89, 0xbc, 0x72, 0xdf, - 0x89, 0xbc, 0x73, 0xe1, 0x89, 0xbc, 0x73, 0xdf, 0x89, 0xbc, 0x74, 0xe1, - 0x89, 0xbc, 0x75, 0xdf, 0x89, 0xbc, 0x75, 0xe1, 0x89, 0xbc, 0x76, 0xdf, - 0x89, 0xbc, 0x76, 0xe1, 0x89, 0xbc, 0x77, 0xdf, 0x89, 0xbc, 0x78, 0xe1, - 0x89, 0xbc, 0x78, 0xdf, 0x89, 0xbc, 0x79, 0xe1, 0x89, 0xbc, 0x79, 0xdf, - 0x89, 0xbc, 0x7a, 0xdf, 0x89, 0xbc, 0x7a, 0xdf, 0x89, 0xbc, 0x7b, 0xdf, - 0x89, 0xbc, 0x7c, 0xdf, 0x89, 0xbc, 0x7c, 0xdf, 0x89, 0xbc, 0x7d, 0xdf, - 0x89, 0xbc, 0x7d, 0xdf, 0x89, 0xbc, 0x7e, 0xdf, 0x89, 0xbc, 0x7e, 0xdf, - 0x89, 0xbc, 0x7f, 0xdf, 0x89, 0xbc, 0x7f, 0xdf, 0x89, 0xbc, 0x80, 0xdf, - 0x89, 0xbc, 0x81, 0xdf, 0x89, 0xbc, 0x81, 0xdf, 0x89, 0xbc, 0x82, 0xdf, - 0x89, 0xbc, 0x82, 0xdf, 0x89, 0xbc, 0x83, 0xdf, 0x89, 0xbc, 0x83, 0xdf, - 0x89, 0xbc, 0x84, 0xdf, 0x89, 0xbc, 0x84, 0xdf, 0x89, 0xbc, 0x85, 0xdf, - 0x89, 0xbc, 0x85, 0xdf, 0x89, 0xbc, 0x86, 0xdf, 0x89, 0xbc, 0x86, 0xdf, - 0x89, 0xbc, 0x87, 0xdf, 0x89, 0xbc, 0x87, 0xdf, 0x89, 0xbc, 0x88, 0xdf, - 0x89, 0xbc, 0x88, 0xdf, 0x89, 0xbc, 0x89, 0xdf, 0x8a, 0xbc, 0x89, 0xdf, - 0x89, 0xbc, 0x89, 0xdf, 0x8a, 0xbc, 0x89, 0xdf, 0x8a, 0xbc, 0x89, 0xdf, - 0x8b, 0xbc, 0x89, 0xdf, 0x8b, 0xbc, 0x89, 0xdf, 0x8c, 0xbc, 0x89, 0xdf, - 0x8c, 0xbc, 0x89, 0xdf, 0x8d, 0xbc, 0x89, 0xdf, 0x8d, 0xbc, 0x89, 0xdf, - 0x8e, 0xbc, 0x89, 0xdf, 0x8e, 0xbc, 0x89, 0xdf, 0x8e, 0xbc, 0x89, 0xdf, - 0x8f, 0xbc, 0x89, 0xdf, 0x8f, 0xbc, 0x89, 0xdf, 0x90, 0xbc, 0x89, 0xdf, - 0x90, 0xbc, 0x89, 0xdf, 0x91, 0xbc, 0x8a, 0xdf, 0x91, 0xb8, 0x89, 0xdf, - 0x92, 0xbc, 0x8a, 0xdf, 0x92, 0xb8, 0x89, 0xdf, 0x93, 0xbc, 0x8a, 0xdf, - 0x93, 0xb8, 0x89, 0xdf, 0x94, 0xbc, 0x8a, 0xdf, 0x94, 0xb8, 0x89, 0xdf, - 0x94, 0xbc, 0x8a, 0xdf, 0x95, 0xb8, 0x89, 0xdf, 0x95, 0xbc, 0x8a, 0xdf, - 0x96, 0xb8, 0x89, 0xdf, 0x96, 0xbc, 0x8a, 0xdf, 0x97, 0xb8, 0x89, 0xdf, - 0x97, 0xbc, 0x8a, 0xdf, 0x98, 0xb8, 0x89, 0xdf, 0x98, 0xbc, 0x8a, 0xdf, - 0x98, 0xb8, 0x89, 0xdf, 0x99, 0xbc, 0x8a, 0xdf, 0x99, 0xb8, 0x89, 0xdf, - 0x9a, 0xbc, 0x8a, 0xdf, 0x9a, 0xb8, 0x89, 0xdf, 0x9a, 0xbc, 0x8a, 0xdf, - 0x9b, 0xb8, 0x89, 0xdf, 0x9b, 0xbc, 0x8a, 0xdf, 0x9c, 0xb8, 0x89, 0xdf, - 0x9c, 0xbc, 0x8a, 0xdf, 0x9d, 0xb8, 0x89, 0xdf, 0x9d, 0xbc, 0x8a, 0xdf, - 0x9d, 0xb8, 0x89, 0xdf, 0x9e, 0xbc, 0x8a, 0xdf, 0x9e, 0xb8, 0x89, 0xdf, - 0x9f, 0xbc, 0x8a, 0xdf, 0x9f, 0xb8, 0x8a, 0xdf, 0x9f, 0xb5, 0x8a, 0xdf, - 0xa0, 0xb8, 0x8a, 0xdf, 0xa0, 0xb5, 0x8a, 0xdf, 0xa1, 0xb8, 0x8a, 0xdf, - 0xa1, 0xb5, 0x8a, 0xdf, 0xa1, 0xb8, 0x8a, 0xdf, 0xa2, 0xb5, 0x8a, 0xdf, - 0xa2, 0xb8, 0x8a, 0xdf, 0xa3, 0xb5, 0x8a, 0xdf, 0xa3, 0xb8, 0x8a, 0xdf, - 0xa3, 0xb5, 0x8a, 0xdf, 0xa4, 0xb8, 0x8a, 0xdf, 0xa4, 0xb5, 0x8a, 0xdf, - 0xa5, 0xb8, 0x8a, 0xdf, 0xa5, 0xb5, 0x8a, 0xdf, 0xa5, 0xb8, 0x8a, 0xdf, - 0xa6, 0xb5, 0x8a, 0xdf, 0xa6, 0xb8, 0x8a, 0xdf, 0xa6, 0xb5, 0x8a, 0xdf, - 0xa7, 0xb8, 0x8a, 0xdf, 0xa7, 0xb5, 0x8a, 0xdf, 0xa8, 0xb8, 0x8a, 0xdf, - 0xa8, 0xb5, 0x8a, 0xdf, 0xa8, 0xb8, 0x8a, 0xdf, 0xa9, 0xb5, 0xa3, 0xdf, - 0xa9, 0x98, 0x8a, 0xdf, 0xaa, 0xb5, 0xa3, 0xdf, 0xaa, 0x98, 0xa3, 0xdf, - 0xaa, 0x97, 0xa3, 0xdf, 0xab, 0x98, 0xa3, 0xdf, 0xab, 0x97, 0xa3, 0xdf, - 0xab, 0x98, 0xa3, 0xdf, 0xac, 0x97, 0xa3, 0xdf, 0xac, 0x98, 0xa3, 0xdf, - 0xac, 0x97, 0xa3, 0xdf, 0xad, 0x98, 0xa3, 0xdf, 0xad, 0x97, 0xa3, 0xdf, - 0xae, 0x98, 0xa3, 0xdf, 0xae, 0x97, 0xa3, 0xdf, 0xae, 0x98, 0xa3, 0xdf, - 0xaf, 0x97, 0xa3, 0xdf, 0xaf, 0x98, 0xa3, 0xdf, 0xaf, 0x97, 0xa3, 0xdf, - 0xb0, 0x98, 0xa3, 0xdf, 0xb0, 0x97, 0xa3, 0xdf, 0xb0, 0x98, 0xa3, 0xdf, - 0xb1, 0x97, 0xa3, 0xdf, 0xb1, 0x98, 0xa3, 0xdf, 0xb2, 0x97, 0xa3, 0xdf, - 0xb2, 0x98, 0xa3, 0xdf, 0xb2, 0x97, 0xa3, 0xdf, 0xb3, 0x98, 0xa3, 0xdf, - 0xb3, 0x97, 0xa3, 0xdf, 0xb3, 0x98, 0xa3, 0xdf, 0xb4, 0x97, 0xa3, 0xdf, - 0xb4, 0x98, 0xcf, 0xdf, 0xb4, 0xc5, 0xcf, 0xdf, 0xb5, 0xc2, 0xcf, 0xdf, - 0xb5, 0xbf, 0xcf, 0xdf, 0xb5, 0xc2, 0xcf, 0xdf, 0xb6, 0xbf, 0xcf, 0xdf, - 0xb6, 0xc2, 0xcf, 0xdf, 0xb6, 0xbf, 0xcf, 0xdf, 0xb7, 0xc2, 0xcf, 0xdf, - 0xb7, 0xbf, 0xcf, 0xdf, 0xb7, 0xc2, 0xcf, 0xdf, 0xb8, 0xbf, 0xcf, 0xdf, - 0xb8, 0xc2, 0xcf, 0xdf, 0xb8, 0xbf, 0xcf, 0xdf, 0xb9, 0xc2, 0xcf, 0xdf, - 0xb9, 0xbf, 0xcf, 0xdf, 0xb9, 0xc2, 0xcf, 0xdf, 0xba, 0xbf, 0xcf, 0xdf, - 0xba, 0xc2, 0xcf, 0xdf, 0xba, 0xbf, 0xcf, 0xdf, 0xbb, 0xc2, 0xcf, 0xdf, - 0xbb, 0xbf, 0xcf, 0xdf, 0xbb, 0xc2, 0xcf, 0xdf, 0xbc, 0xbf, 0xcf, 0xdf, - 0xbc, 0xc2, 0xcf, 0xdf, 0xbc, 0xbf, 0xcf, 0xdf, 0xbd, 0xc2, 0xcf, 0xdf, - 0xbd, 0xbf, 0xcf, 0xdf, 0xbd, 0xc2, 0xcf, 0xdf, 0xbe, 0xbf, 0xcf, 0xdf, - 0xbe, 0xc2, 0xcf, 0xdf, 0xbe, 0xbf, 0xcf, 0xdf, 0xbf, 0xc2, 0xcf, 0xdf, - 0xbf, 0xbf, 0xcf, 0xdf, 0xbf, 0xc2, 0xcf, 0xdf, 0xc0, 0xbf, 0xcf, 0xdf, - 0xc0, 0xc2, 0xcf, 0xdf, 0xc0, 0xbf, 0xcf, 0xdf, 0xc1, 0xc2, 0xcf, 0xdf, - 0xc1, 0xbf, 0xcf, 0xdf, 0xc1, 0xc2, 0xcf, 0xdf, 0xc1, 0xbf, 0xcf, 0xdf, - 0xc2, 0xc2, 0xcf, 0xdf, 0xc2, 0xbf, 0xd0, 0xdf, 0xc2, 0xbe, 0xcf, 0xdf, - 0xc3, 0xbf, 0xd0, 0xdf, 0xc3, 0xbe, 0xcf, 0xdf, 0xc3, 0xbf, 0xd0, 0xdf, - 0xc4, 0xbe, 0xcf, 0xdf, 0xc4, 0xbf, 0xd0, 0xdf, 0xc4, 0xbe, 0xcf, 0xdf, - 0xc5, 0xbf, 0xd0, 0xdf, 0xc5, 0xbe, 0xcf, 0xdf, 0xc5, 0xbf, 0xd0, 0xdf, - 0xc6, 0xbe, 0xcf, 0xdf, 0xc6, 0xbf, 0xd0, 0xdf, 0xc6, 0xbe, 0xcf, 0xdf, - 0xc6, 0xbf, 0xd0, 0xdf, 0xc7, 0xbe, 0xcf, 0xdf, 0xc7, 0xbf, 0xd0, 0xdf, - 0xc7, 0xbe, 0xcf, 0xdf, 0xc8, 0xbf, 0xd0, 0xdf, 0xc8, 0xbe, 0xcf, 0xdf, - 0xc8, 0xbf, 0xd0, 0xdf, 0xc9, 0xbe, 0xcf, 0xdf, 0xc9, 0xbf, 0xd0, 0xdf, - 0xc9, 0xbe, 0xcf, 0xdf, 0xc9, 0xbf, 0xd0, 0xdf, 0xca, 0xbe, 0xcf, 0xdf, - 0xca, 0xbf, 0xd0, 0xdf, 0xca, 0xbe, 0xcf, 0xdf, 0xcb, 0xbf, 0xd0, 0xdf, - 0xcb, 0xbe, 0xd0, 0xdf, 0xcb, 0xbc, 0xd0, 0xdf, 0xcc, 0xbe, 0xd0, 0xdf, - 0xcc, 0xbc, 0xd0, 0xdf, 0xcc, 0xbe, 0xd0, 0xdf, 0xcc, 0xbc, 0xd0, 0xdf, - 0xcd, 0xbe, 0xd0, 0xdf, 0xcd, 0xbc, 0xd0, 0xdf, 0xcd, 0xbe, 0xd0, 0xdf, - 0xce, 0xbc, 0xd0, 0xdf, 0xce, 0xbe, 0xd0, 0xdf, 0xce, 0xbc, 0xd0, 0xdf, - 0xce, 0xbe, 0xd0, 0xdf, 0xcf, 0xbc, 0xd0, 0xdf, 0xcf, 0xbc, 0xd0, 0xdf, - 0xcf, 0xbc, 0xd0, 0xdf, 0xd0, 0xbc, 0xd0, 0xdf, 0xcf, 0xbc, 0xd0, 0xdf, - 0xd0, 0xbc, 0xd0, 0xdf, 0xcf, 0xbc, 0xd1, 0xdf, 0xd0, 0xbc, 0xd1, 0xde, - 0xd0, 0xbc, 0xd1, 0xdf, 0xd0, 0xbc, 0xd2, 0xde, 0xd0, 0xbc, 0xd2, 0xdf, - 0xd0, 0xbc, 0xd2, 0xde, 0xd0, 0xbc, 0xd2, 0xdf, 0xd0, 0xbc, 0xd3, 0xde, - 0xd0, 0xbc, 0xd3, 0xdf, 0xd0, 0xbc, 0xd3, 0xde, 0xd0, 0xbc, 0xd4, 0xdf, - 0xd0, 0xbc, 0xd4, 0xde, 0xd0, 0xbc, 0xd4, 0xdf, 0xd0, 0xbc, 0xd4, 0xde, - 0xd0, 0xbc, 0xd5, 0xdf, 0xd0, 0xbc, 0xd5, 0xde, 0xd0, 0xbc, 0xd5, 0xdf, - 0xd0, 0xbc, 0xd6, 0xde, 0xd0, 0xbc, 0xd6, 0xdf, 0xd0, 0xbc, 0xd6, 0xde, - 0xd0, 0xbc, 0xd6, 0xdf, 0xd0, 0xbc, 0xd7, 0xde, 0xd0, 0xbc, 0xd7, 0xdc, - 0xd0, 0xbc, 0xd7, 0xde, 0xd0, 0xbc, 0xd7, 0xdc, 0xd0, 0xbc, 0xd8, 0xde, - 0xd0, 0xbc, 0xd8, 0xdc, 0xd0, 0xbc, 0xd8, 0xde, 0xd0, 0xbc, 0xd9, 0xdc, - 0xd0, 0xbc, 0xd9, 0xde, 0xd0, 0xbc, 0xd9, 0xdc, 0xd0, 0xbc, 0xd9, 0xde, - 0xd0, 0xbc, 0xda, 0xdc, 0xd0, 0xbc, 0xda, 0xde, 0xd0, 0xbc, 0xda, 0xdc, - 0xd0, 0xbc, 0xda, 0xde, 0xd0, 0xbc, 0xdb, 0xdc, 0xd0, 0xbc, 0xdb, 0xde, - 0xd0, 0xbc, 0xdb, 0xdc, 0xd0, 0xbc, 0xdb, 0xde, 0xd0, 0xbc, 0xdc, 0xdc, - 0xd0, 0xbc, 0xdc, 0xde, 0xd0, 0xbc, 0xdc, 0xdc, 0xd0, 0xbc, 0xdd, 0xe0, - 0xe8, 0xbc, 0xdd, 0xe2, 0xe8, 0xbc, 0xdd, 0xe0, 0xe8, 0xbc, 0xdd, 0xe2, - 0xe8, 0xbc, 0xde, 0xe0, 0xe8, 0xbc, 0xde, 0xe2, 0xe8, 0xbc, 0xde, 0xe0, - 0xe8, 0xbc, 0xde, 0xe2, 0xe8, 0xbc, 0xdf, 0xe0, 0xe8, 0xbc, 0xdf, 0xdf, - 0xe8, 0xbc, 0xdf, 0xe0, 0xe8, 0xbc, 0xdf, 0xdf, 0xe8, 0xbc, 0xe0, 0xe0, - 0xe8, 0xbc, 0xe0, 0xdf, 0xe8, 0xbc, 0xe0, 0xe0, 0xe8, 0xbc, 0xe1, 0xdf, - 0xe8, 0xbc, 0xe1, 0xe0, 0xe8, 0xbc, 0xe1, 0xdf, 0xe8, 0xbc, 0xe1, 0xe0, - 0xe8, 0xbc, 0xe2, 0xdf, 0xe8, 0xbc, 0xe2, 0xe0, 0xe8, 0xbc, 0xe2, 0xdf, - 0xe8, 0xbc, 0xe2, 0xe0, 0xe8, 0xbc, 0xe3, 0xdf, 0xe8, 0xbc, 0xe3, 0xe0, - 0xe8, 0xbc, 0xe3, 0xdf, 0xe8, 0xbc, 0xe3, 0xe0, 0xe8, 0xbc, 0xe4, 0xdf, - 0xe8, 0xbc, 0xe4, 0xe0, 0xe8, 0xbc, 0xe4, 0xdf, 0xe8, 0xbc, 0xe4, 0xe0, - 0xe8, 0xbc, 0xe5, 0xdf, 0xe8, 0xbc, 0xe5, 0xe0, 0xe8, 0xbc, 0xe5, 0xdf, - 0xe8, 0xbc, 0xe5, 0xe0, 0xe8, 0xbc, 0xe6, 0xdf, 0xe8, 0xbc, 0xe6, 0xe0, - 0xe8, 0xbc, 0xe6, 0xdf, 0xe8, 0xbc, 0xe6, 0xdf, 0xe8, 0xbc, 0xe7, 0xdf, - 0xe8, 0xbc, 0xe7, 0xdf, 0xe8, 0xbc, 0xe7, 0xdf, 0xe8, 0xbc, 0xe7, 0xdf, - 0xe8, 0xbc, 0xe8, 0xdf, 0xe8, 0xbc, 0xe8, 0xdf, 0xe8, 0xbc, 0xe8, 0xdf, - 0xe8, 0xbc, 0xe8, 0xdf, 0xe8, 0xbc, 0xe8, 0xdf, 0xe9, 0xbc, 0xe8, 0xdf, - 0xe9, 0xbc, 0xe8, 0xdf, 0xe9, 0xbc, 0xe8, 0xdf, 0xe9, 0xbc, 0xe8, 0xdf, - 0xea, 0xbc, 0xe8, 0xdf, 0xea, 0xbc, 0xec, 0xdf, 0xea, 0xbe, 0xec, 0xdf, - 0xea, 0xbc, 0xec, 0xdf, 0xeb, 0xbe, 0xec, 0xdf, 0xeb, 0xbc, 0xec, 0xdf, - 0xeb, 0xbc, 0xec, 0xdf, 0xeb, 0xbc, 0xec, 0xdf, 0xec, 0xbc, 0xec, 0xdf, - 0xeb, 0xbc, 0xec, 0xdf, 0xec, 0xbc, 0xec, 0xdf, 0xeb, 0xbc, 0xec, 0xdf, - 0xec, 0xbc, 0xed, 0xde, 0xec, 0xbc, 0xed, 0xdf, 0xec, 0xbc, 0xed, 0xde, - 0xec, 0xbc, 0xed, 0xdf, 0xec, 0xbc, 0xee, 0xde, 0xec, 0xbc, 0xee, 0xdf, - 0xec, 0xbc, 0xee, 0xde, 0xec, 0xbc, 0xee, 0xdf, 0xec, 0xbc, 0xef, 0xde, - 0xec, 0xbc, 0xef, 0xdf, 0xec, 0xbc, 0xef, 0xde, 0xec, 0xbc, 0xef, 0xdf, - 0xec, 0xbc, 0xf0, 0xde, 0xec, 0xbc, 0xf0, 0xdf, 0xec, 0xbc, 0xf0, 0xde, - 0xec, 0xbc, 0xf0, 0xdf, 0xec, 0xbc, 0xf1, 0xde, 0xec, 0xbc, 0xf1, 0xdf, - 0xec, 0xbc, 0xf1, 0xde, 0xec, 0xbc, 0xf1, 0xdf, 0xec, 0xbc, 0xf2, 0xde, - 0xec, 0xbc, 0xf2, 0xdf, 0xec, 0xbc, 0xf2, 0xde, 0xec, 0xbc, 0xf2, 0xdf, - 0xec, 0xbc, 0xf2, 0xde, 0xec, 0xbc, 0xf3, 0xdf, 0xec, 0xbc, 0xf3, 0xde, - 0xec, 0xbc, 0xf3, 0xdf, 0xec, 0xbc, 0xf3, 0xde, 0xec, 0xbc, 0xf4, 0xdf, - 0xec, 0xbc, 0xf4, 0xde, 0xec, 0xbc, 0xf4, 0xdf, 0xec, 0xbc, 0xf4, 0xde, - 0xec, 0xbc, 0xf5, 0xdb, 0xec, 0xbc, 0xf5, 0xde, 0xec, 0xbc, 0xf5, 0xdb, - 0xec, 0xbc, 0xf5, 0xde, 0xec, 0xbc, 0xf5, 0xdb, 0xec, 0xbc, 0xf6, 0xde, - 0xec, 0xbc, 0xf6, 0xdb, 0xec, 0xbc, 0xf6, 0xde, 0xec, 0xbc, 0xf6, 0xdb, - 0xec, 0xbc, 0xf7, 0xde, 0xec, 0xbc, 0xf7, 0xdb, 0xec, 0xbc, 0xf7, 0xde, - 0xec, 0xbc, 0xf7, 0xdb, 0xec, 0xbc, 0xf8, 0xde, 0xec, 0xbc, 0xf8, 0xdb, - 0xec, 0xbc, 0xf8, 0xde, 0xec, 0xbc, 0xf8, 0xdb, 0xec, 0xbc, 0xf8, 0xde, - 0xec, 0xbc, 0xf9, 0xdb, 0xec, 0xbc, 0xf9, 0xde, 0xec, 0xbc, 0xf9, 0xdb, - 0xec, 0xbc, 0xf9, 0xde, 0xec, 0xbc, 0xfa, 0xdb, 0xec, 0xbc, 0xfa, 0xde, - 0xec, 0xbc, 0xfa, 0xdb, 0xec, 0xbc, 0xfa, 0xde, 0xec, 0xbc, 0xfa, 0xdb, - 0xec, 0xbc, 0xfb, 0xde, 0xec, 0xbc, 0xfb, 0xdb, 0xec, 0xbc, 0xfb, 0xde, - 0xec, 0xbc, 0xfb, 0xdb, 0xec, 0xbc, 0xfc, 0xde, 0xec, 0xbc, 0xfc, 0xdb, - 0xec, 0xbc, 0xfc, 0xde, 0xec, 0xbc, 0xfc, 0xdb, 0xec, 0xbc, 0xfc, 0xde, - 0xec, 0xbc, 0xfd, 0xdb, 0xec, 0xbc, 0xfd, 0xde, 0xec, 0xbc, 0xfd, 0xdb, - 0xec, 0xbc, 0xfd, 0xde, 0xec, 0xbc, 0xfe, 0xec, 0xf1, 0xbc, 0xfe, 0xec, - 0xf1, 0xbc, 0xfe, 0xec, 0xf1, 0xbc, 0xfe, 0xec, 0xf1, 0xbc, 0xfe, 0xec, - 0xf1, 0xbc, 0xff, 0xec, 0xf1, 0xbc, 0xff, 0xec, 0xf1, 0xbc, 0x03, 0xe6, - 0x87, 0xbc, 0x0a, 0xe4, 0x88, 0xbc, 0x0f, 0xe6, 0x87, 0xbc, 0x14, 0xe4, - 0x88, 0xbc, 0x17, 0xe6, 0x87, 0xbc, 0x1b, 0xe4, 0x88, 0xbc, 0x1e, 0xe3, - 0x88, 0xbc, 0x20, 0xe4, 0x88, 0xbc, 0x23, 0xe3, 0x88, 0xbc, 0x25, 0xe4, - 0x88, 0xbc, 0x27, 0xe3, 0x88, 0xbc, 0x29, 0xe4, 0x88, 0xbc, 0x2b, 0xe3, - 0x88, 0xbc, 0x2d, 0xe4, 0x88, 0xbc, 0x2f, 0xe3, 0x88, 0xbc, 0x31, 0xe4, - 0x88, 0xbc, 0x32, 0xe3, 0x88, 0xbc, 0x34, 0xe4, 0x88, 0xbc, 0x35, 0xe3, - 0x88, 0xbc, 0x37, 0xe4, 0x88, 0xbc, 0x38, 0xe3, 0x88, 0xbc, 0x3a, 0xe4, - 0x88, 0xbc, 0x3b, 0xe3, 0x88, 0xbc, 0x3c, 0xe4, 0x88, 0xbc, 0x3e, 0xe3, - 0x88, 0xbc, 0x3f, 0xe4, 0x88, 0xbc, 0x40, 0xe3, 0x88, 0xbc, 0x42, 0xe4, - 0x88, 0xbc, 0x43, 0xe3, 0x88, 0xbc, 0x44, 0xe4, 0x88, 0xbc, 0x45, 0xe3, - 0x88, 0xbc, 0x46, 0xe4, 0x88, 0xbc, 0x47, 0xe3, 0x88, 0xbc, 0x48, 0xe4, - 0x88, 0xbc, 0x49, 0xe3, 0x88, 0xbc, 0x4a, 0xe1, 0x89, 0xbc, 0x4b, 0xe3, - 0x88, 0xbc, 0x4c, 0xe1, 0x89, 0xbc, 0x4d, 0xe3, 0x88, 0xbc, 0x4e, 0xe1, - 0x89, 0xbc, 0x4f, 0xe3, 0x88, 0xbc, 0x50, 0xe1, 0x89, 0xbc, 0x51, 0xe3, - 0x88, 0xbc, 0x52, 0xe1, 0x89, 0xbc, 0x53, 0xe3, 0x88, 0xbc, 0x54, 0xe1, - 0x89, 0xbc, 0x55, 0xe3, 0x88, 0xbc, 0x56, 0xe1, 0x89, 0xbc, 0x57, 0xe3, - 0x88, 0xbc, 0x58, 0xe1, 0x89, 0xbc, 0x58, 0xe3, 0x88, 0xbc, 0x59, 0xe1, - 0x89, 0xbc, 0x5a, 0xe3, 0x88, 0xbc, 0x5b, 0xe1, 0x89, 0xbc, 0x5c, 0xe3, - 0x88, 0xbc, 0x5d, 0xe1, 0x89, 0xbc, 0x5d, 0xe3, 0x88, 0xbc, 0x5e, 0xe1, - 0x89, 0xbc, 0x5f, 0xe3, 0x88, 0xbc, 0x60, 0xe1, 0x89, 0xbc, 0x60, 0xe3, - 0x88, 0xbc, 0x61, 0xe1, 0x89, 0xbc, 0x62, 0xe3, 0x88, 0xbc, 0x63, 0xe1, - 0x89, 0xbc, 0x63, 0xe3, 0x88, 0xbc, 0x64, 0xe1, 0x89, 0xbc, 0x65, 0xe3, - 0x88, 0xbc, 0x66, 0xe1, 0x89, 0xbc, 0x66, 0xe3, 0x88, 0xbc, 0x67, 0xe1, - 0x89, 0xbc, 0x68, 0xe3, 0x88, 0xbc, 0x68, 0xe1, 0x89, 0xbc, 0x69, 0xe3, - 0x88, 0xbc, 0x6a, 0xe1, 0x89, 0xbc, 0x6a, 0xe3, 0x88, 0xbc, 0x6b, 0xe1, - 0x89, 0xbc, 0x6c, 0xe3, 0x88, 0xbc, 0x6c, 0xe1, 0x89, 0xbc, 0x6d, 0xdf, - 0x89, 0xbc, 0x6e, 0xe1, 0x89, 0xbc, 0x6e, 0xdf, 0x89, 0xbc, 0x6f, 0xe1, - 0x89, 0xbc, 0x70, 0xdf, 0x89, 0xbc, 0x70, 0xe1, 0x89, 0xbc, 0x71, 0xdf, - 0x89, 0xbc, 0x72, 0xe1, 0x89, 0xbc, 0x72, 0xdf, 0x89, 0xbc, 0x73, 0xe1, - 0x89, 0xbc, 0x73, 0xdf, 0x89, 0xbc, 0x74, 0xe1, 0x89, 0xbc, 0x75, 0xdf, - 0x89, 0xbc, 0x75, 0xe1, 0x89, 0xbc, 0x76, 0xdf, 0x89, 0xbc, 0x76, 0xe1, - 0x89, 0xbc, 0x77, 0xdf, 0x89, 0xbc, 0x78, 0xe1, 0x89, 0xbc, 0x78, 0xdf, - 0x89, 0xbc, 0x79, 0xe1, 0x89, 0xbc, 0x79, 0xdf, 0x89, 0xbc, 0x7a, 0xe1, - 0x89, 0xbc, 0x7a, 0xdf, 0x89, 0xbc, 0x7b, 0xe1, 0x89, 0xbc, 0x7c, 0xdf, - 0x89, 0xbc, 0x7c, 0xe1, 0x89, 0xbc, 0x7d, 0xdf, 0x89, 0xbc, 0x7d, 0xe1, - 0x89, 0xbc, 0x7e, 0xdf, 0x89, 0xbc, 0x7e, 0xe1, 0x89, 0xbc, 0x7f, 0xdf, - 0x89, 0xbc, 0x7f, 0xe1, 0x89, 0xbc, 0x80, 0xdf, 0x89, 0xbc, 0x81, 0xdf, - 0x89, 0xbc, 0x81, 0xdf, 0x89, 0xbc, 0x82, 0xdf, 0x89, 0xbc, 0x82, 0xdf, - 0x89, 0xbc, 0x83, 0xdf, 0x89, 0xbc, 0x83, 0xdf, 0x89, 0xbc, 0x84, 0xdf, - 0x89, 0xbc, 0x84, 0xdf, 0x89, 0xbc, 0x85, 0xdf, 0x89, 0xbc, 0x85, 0xdf, - 0x89, 0xbc, 0x86, 0xdf, 0x89, 0xbc, 0x86, 0xdf, 0x89, 0xbc, 0x87, 0xdf, - 0x89, 0xbc, 0x87, 0xdf, 0x89, 0xbc, 0x88, 0xdf, 0x89, 0xbc, 0x88, 0xdf, - 0x89, 0xbc, 0x89, 0xdf, 0x8a, 0xbc, 0x89, 0xdf, 0x89, 0xbb, 0x89, 0xdf, - 0x8a, 0xbc, 0x89, 0xdf, 0x8a, 0xbb, 0x89, 0xdf, 0x8b, 0xbc, 0x89, 0xdf, - 0x8b, 0xbb, 0x89, 0xdf, 0x8c, 0xbc, 0x89, 0xdf, 0x8c, 0xbb, 0x89, 0xdf, - 0x8d, 0xbc, 0x89, 0xdf, 0x8d, 0xbb, 0x89, 0xdf, 0x8e, 0xbc, 0x89, 0xdf, - 0x8e, 0xbb, 0x89, 0xdf, 0x8e, 0xbc, 0x89, 0xdf, 0x8f, 0xbb, 0x89, 0xdf, - 0x8f, 0xbc, 0x89, 0xdf, 0x90, 0xbb, 0x89, 0xdf, 0x90, 0xbc, 0x89, 0xdf, - 0x91, 0xbb, 0x8a, 0xdf, 0x91, 0xb8, 0x89, 0xdf, 0x92, 0xbb, 0x8a, 0xdf, - 0x92, 0xb8, 0x89, 0xdf, 0x93, 0xbb, 0x8a, 0xdf, 0x93, 0xb8, 0x89, 0xdf, - 0x94, 0xbb, 0x8a, 0xdf, 0x94, 0xb8, 0x89, 0xdf, 0x94, 0xbb, 0x8a, 0xdf, - 0x95, 0xb8, 0x89, 0xdf, 0x95, 0xbb, 0x8a, 0xdf, 0x96, 0xb8, 0x89, 0xdf, - 0x96, 0xbb, 0x8a, 0xdf, 0x97, 0xb8, 0x89, 0xdf, 0x97, 0xbb, 0x8a, 0xdf, - 0x98, 0xb8, 0x89, 0xdf, 0x98, 0xbb, 0x8a, 0xdf, 0x98, 0xb8, 0x89, 0xdf, - 0x99, 0xbb, 0x8a, 0xdf, 0x99, 0xb8, 0x89, 0xdf, 0x9a, 0xbb, 0x8a, 0xdf, - 0x9a, 0xb8, 0x89, 0xdf, 0x9a, 0xbb, 0x8a, 0xdf, 0x9b, 0xb8, 0x89, 0xdf, - 0x9b, 0xbb, 0x8a, 0xdf, 0x9c, 0xb8, 0x89, 0xdf, 0x9c, 0xbb, 0x8a, 0xdf, - 0x9d, 0xb8, 0x89, 0xdf, 0x9d, 0xbb, 0x8a, 0xdf, 0x9d, 0xb8, 0x89, 0xdf, - 0x9e, 0xbb, 0x8a, 0xdf, 0x9e, 0xb8, 0x89, 0xdf, 0x9f, 0xbb, 0x8a, 0xdf, - 0x9f, 0xb8, 0x8a, 0xdf, 0x9f, 0xb5, 0x8a, 0xdf, 0xa0, 0xb8, 0x8a, 0xdf, - 0xa0, 0xb5, 0x8a, 0xdf, 0xa1, 0xb8, 0x8a, 0xdf, 0xa1, 0xb5, 0x8a, 0xdf, - 0xa1, 0xb8, 0x8a, 0xdf, 0xa2, 0xb5, 0x8a, 0xdf, 0xa2, 0xb8, 0x8a, 0xdf, - 0xa3, 0xb5, 0x8a, 0xdf, 0xa3, 0xb8, 0x8a, 0xdf, 0xa3, 0xb5, 0x8a, 0xdf, - 0xa4, 0xb8, 0x8a, 0xdf, 0xa4, 0xb5, 0x8a, 0xdf, 0xa5, 0xb8, 0x8a, 0xdf, - 0xa5, 0xb5, 0x8a, 0xdf, 0xa5, 0xb8, 0x8a, 0xdf, 0xa6, 0xb5, 0x8a, 0xdf, - 0xa6, 0xb8, 0x8a, 0xdf, 0xa6, 0xb5, 0x8a, 0xdf, 0xa7, 0xb8, 0x8a, 0xdf, - 0xa7, 0xb5, 0x8a, 0xdf, 0xa8, 0xb8, 0x8a, 0xdf, 0xa8, 0xb5, 0x8a, 0xdf, - 0xa8, 0xb8, 0x8a, 0xdf, 0xa9, 0xb5, 0x8a, 0xdf, 0xa9, 0xb8, 0x8a, 0xdf, - 0xaa, 0xb5, 0xa3, 0xdf, 0xaa, 0x97, 0xa3, 0xdf, 0xaa, 0x97, 0xa3, 0xdf, - 0xab, 0x97, 0xa3, 0xdf, 0xab, 0x97, 0xa3, 0xdf, 0xab, 0x97, 0xa3, 0xdf, - 0xac, 0x97, 0xa3, 0xdf, 0xac, 0x97, 0xa3, 0xdf, 0xac, 0x97, 0xa3, 0xdf, - 0xad, 0x97, 0xa3, 0xdf, 0xad, 0x97, 0xa3, 0xdf, 0xae, 0x97, 0xa3, 0xdf, - 0xae, 0x97, 0xa3, 0xdf, 0xae, 0x97, 0xa3, 0xdf, 0xaf, 0x97, 0xa3, 0xdf, - 0xaf, 0x97, 0xa3, 0xdf, 0xaf, 0x97, 0xa3, 0xdf, 0xb0, 0x97, 0xa3, 0xdf, - 0xb0, 0x97, 0xa3, 0xdf, 0xb0, 0x97, 0xa3, 0xdf, 0xb1, 0x97, 0xa3, 0xdf, - 0xb1, 0x97, 0xa3, 0xdf, 0xb2, 0x97, 0xa3, 0xdf, 0xb2, 0x97, 0xa3, 0xdf, - 0xb2, 0x97, 0xa3, 0xdf, 0xb3, 0x97, 0xa3, 0xdf, 0xb3, 0x97, 0xa3, 0xdf, - 0xb3, 0x97, 0xa3, 0xdf, 0xb4, 0x97, 0xa3, 0xdf, 0xb4, 0x97, 0xcf, 0xdf, - 0xb4, 0xc5, 0xcf, 0xdf, 0xb5, 0xc3, 0xcf, 0xdf, 0xb5, 0xc5, 0xcf, 0xdf, - 0xb5, 0xc3, 0xcf, 0xdf, 0xb6, 0xc5, 0xcf, 0xdf, 0xb6, 0xc3, 0xcf, 0xdf, - 0xb6, 0xc5, 0xcf, 0xdf, 0xb7, 0xc3, 0xcf, 0xdf, 0xb7, 0xc5, 0xcf, 0xdf, - 0xb7, 0xc3, 0xcf, 0xdf, 0xb8, 0xc5, 0xcf, 0xdf, 0xb8, 0xc3, 0xcf, 0xdf, - 0xb8, 0xc5, 0xcf, 0xdf, 0xb9, 0xc3, 0xcf, 0xdf, 0xb9, 0xc5, 0xcf, 0xdf, - 0xb9, 0xc3, 0xcf, 0xdf, 0xba, 0xc5, 0xcf, 0xdf, 0xba, 0xc3, 0xcf, 0xdf, - 0xba, 0xc5, 0xcf, 0xdf, 0xbb, 0xc3, 0xcf, 0xdf, 0xbb, 0xc5, 0xcf, 0xdf, - 0xbb, 0xc3, 0xcf, 0xdf, 0xbc, 0xc0, 0xcf, 0xdf, 0xbc, 0xc3, 0xcf, 0xdf, - 0xbc, 0xc0, 0xcf, 0xdf, 0xbd, 0xc3, 0xcf, 0xdf, 0xbd, 0xc0, 0xcf, 0xdf, - 0xbd, 0xc3, 0xcf, 0xdf, 0xbe, 0xc0, 0xcf, 0xdf, 0xbe, 0xc3, 0xcf, 0xdf, - 0xbe, 0xc0, 0xcf, 0xdf, 0xbf, 0xc3, 0xcf, 0xdf, 0xbf, 0xc0, 0xcf, 0xdf, - 0xbf, 0xc3, 0xcf, 0xdf, 0xc0, 0xc0, 0xcf, 0xdf, 0xc0, 0xc3, 0xcf, 0xdf, - 0xc0, 0xc0, 0xcf, 0xdf, 0xc1, 0xc3, 0xcf, 0xdf, 0xc1, 0xc0, 0xd0, 0xdf, - 0xc1, 0xbd, 0xcf, 0xdf, 0xc1, 0xc0, 0xd0, 0xdf, 0xc2, 0xbd, 0xcf, 0xdf, - 0xc2, 0xc0, 0xd0, 0xdf, 0xc2, 0xbd, 0xcf, 0xdf, 0xc3, 0xc0, 0xd0, 0xdf, - 0xc3, 0xbd, 0xcf, 0xdf, 0xc3, 0xc0, 0xd0, 0xdf, 0xc4, 0xbd, 0xcf, 0xdf, - 0xc4, 0xc0, 0xd0, 0xdf, 0xc4, 0xbd, 0xcf, 0xdf, 0xc5, 0xc0, 0xd0, 0xdf, - 0xc5, 0xbd, 0xcf, 0xdf, 0xc5, 0xc0, 0xd0, 0xdf, 0xc6, 0xbd, 0xcf, 0xdf, - 0xc6, 0xc0, 0xd0, 0xdf, 0xc6, 0xbd, 0xcf, 0xdf, 0xc6, 0xc0, 0xd0, 0xdf, - 0xc7, 0xbd, 0xcf, 0xdf, 0xc7, 0xc0, 0xd0, 0xdf, 0xc7, 0xbd, 0xcf, 0xdf, - 0xc8, 0xc0, 0xd0, 0xdf, 0xc8, 0xbd, 0xcf, 0xdf, 0xc8, 0xc0, 0xd0, 0xdf, - 0xc9, 0xbd, 0xcf, 0xdf, 0xc9, 0xc0, 0xd0, 0xdf, 0xc9, 0xbd, 0xcf, 0xdf, - 0xc9, 0xc0, 0xd0, 0xdf, 0xca, 0xbd, 0xcf, 0xdf, 0xca, 0xc0, 0xd0, 0xdf, - 0xca, 0xbd, 0xcf, 0xdf, 0xcb, 0xc0, 0xd0, 0xdf, 0xcb, 0xbd, 0xd0, 0xdf, - 0xcb, 0xbc, 0xd0, 0xdf, 0xcc, 0xbd, 0xd0, 0xdf, 0xcc, 0xbc, 0xd0, 0xdf, - 0xcc, 0xbd, 0xd0, 0xdf, 0xcc, 0xbc, 0xd0, 0xdf, 0xcd, 0xbd, 0xd0, 0xdf, - 0xcd, 0xbc, 0xd0, 0xdf, 0xcd, 0xbd, 0xd0, 0xdf, 0xce, 0xbc, 0xd0, 0xdf, - 0xce, 0xbd, 0xd0, 0xdf, 0xce, 0xbc, 0xd0, 0xdf, 0xce, 0xbd, 0xd0, 0xdf, - 0xcf, 0xbc, 0xd0, 0xdf, 0xcf, 0xbd, 0xd0, 0xdf, 0xcf, 0xbc, 0xd0, 0xdf, - 0xd0, 0xbc, 0xd0, 0xdf, 0xcf, 0xbc, 0xd0, 0xdf, 0xd0, 0xbc, 0xd0, 0xdf, - 0xcf, 0xbc, 0xd1, 0xdf, 0xd0, 0xbc, 0xd1, 0xdf, 0xcf, 0xbc, 0xd1, 0xdf, - 0xd0, 0xbc, 0xd2, 0xdf, 0xcf, 0xbc, 0xd2, 0xdf, 0xd0, 0xbc, 0xd2, 0xdd, - 0xd0, 0xbc, 0xd2, 0xdf, 0xd0, 0xbc, 0xd3, 0xdd, 0xd0, 0xbc, 0xd3, 0xdf, - 0xd0, 0xbc, 0xd3, 0xdd, 0xd0, 0xbc, 0xd4, 0xdf, 0xd0, 0xbc, 0xd4, 0xdd, - 0xd0, 0xbc, 0xd4, 0xdf, 0xd0, 0xbc, 0xd4, 0xdd, 0xd0, 0xbc, 0xd5, 0xdf, - 0xd0, 0xbc, 0xd5, 0xdd, 0xd0, 0xbc, 0xd5, 0xdf, 0xd0, 0xbc, 0xd6, 0xdd, - 0xd0, 0xbc, 0xd6, 0xdf, 0xd0, 0xbc, 0xd6, 0xdd, 0xd0, 0xbc, 0xd6, 0xdf, - 0xd0, 0xbc, 0xd7, 0xdd, 0xd0, 0xbc, 0xd7, 0xdc, 0xd0, 0xbc, 0xd7, 0xdd, - 0xd0, 0xbc, 0xd7, 0xdc, 0xd0, 0xbc, 0xd8, 0xdd, 0xd0, 0xbc, 0xd8, 0xdc, - 0xd0, 0xbc, 0xd8, 0xdd, 0xd0, 0xbc, 0xd9, 0xdc, 0xd0, 0xbc, 0xd9, 0xdd, - 0xd0, 0xbc, 0xd9, 0xdc, 0xd0, 0xbc, 0xd9, 0xdd, 0xd0, 0xbc, 0xda, 0xdc, - 0xd0, 0xbc, 0xda, 0xdd, 0xd0, 0xbc, 0xda, 0xdc, 0xd0, 0xbc, 0xda, 0xdd, - 0xd0, 0xbc, 0xdb, 0xdc, 0xd0, 0xbc, 0xdb, 0xdd, 0xd0, 0xbc, 0xdb, 0xdc, - 0xd0, 0xbc, 0xdb, 0xdd, 0xd0, 0xbc, 0xdc, 0xdc, 0xd0, 0xbc, 0xdc, 0xdd, - 0xd0, 0xbc, 0xdc, 0xdc, 0xd0, 0xbc, 0xdd, 0xe1, 0xe8, 0xbc, 0xdd, 0xe2, - 0xe8, 0xbc, 0xdd, 0xe1, 0xe8, 0xbc, 0xdd, 0xe2, 0xe8, 0xbc, 0xde, 0xe1, - 0xe8, 0xbc, 0xde, 0xe2, 0xe8, 0xbc, 0xde, 0xe1, 0xe8, 0xbc, 0xde, 0xe2, - 0xe8, 0xbc, 0xdf, 0xe1, 0xe8, 0xbc, 0xdf, 0xdf, 0xe8, 0xbc, 0xdf, 0xe1, - 0xe8, 0xbc, 0xdf, 0xdf, 0xe8, 0xbc, 0xe0, 0xe1, 0xe8, 0xbc, 0xe0, 0xdf, - 0xe8, 0xbc, 0xe0, 0xe1, 0xe8, 0xbc, 0xe1, 0xdf, 0xe8, 0xbc, 0xe1, 0xe1, - 0xe8, 0xbc, 0xe1, 0xdf, 0xe8, 0xbc, 0xe1, 0xe1, 0xe8, 0xbc, 0xe2, 0xdf, - 0xe8, 0xbc, 0xe2, 0xe1, 0xe8, 0xbc, 0xe2, 0xdf, 0xe8, 0xbc, 0xe2, 0xe1, - 0xe8, 0xbc, 0xe3, 0xdf, 0xe8, 0xbc, 0xe3, 0xe1, 0xe8, 0xbc, 0xe3, 0xdf, - 0xe8, 0xbc, 0xe3, 0xe1, 0xe8, 0xbc, 0xe4, 0xdf, 0xe8, 0xbc, 0xe4, 0xe1, - 0xe8, 0xbc, 0xe4, 0xdf, 0xe8, 0xbc, 0xe4, 0xe1, 0xe8, 0xbc, 0xe5, 0xdf, - 0xe8, 0xbc, 0xe5, 0xe1, 0xe8, 0xbc, 0xe5, 0xdf, 0xe8, 0xbc, 0xe5, 0xe1, - 0xe8, 0xbc, 0xe6, 0xdf, 0xe8, 0xbc, 0xe6, 0xe1, 0xe8, 0xbc, 0xe6, 0xdf, - 0xe8, 0xbc, 0xe6, 0xdf, 0xe8, 0xbc, 0xe7, 0xdf, 0xe8, 0xbc, 0xe7, 0xdf, - 0xe8, 0xbc, 0xe7, 0xdf, 0xe8, 0xbc, 0xe7, 0xdf, 0xe8, 0xbc, 0xe8, 0xdf, - 0xe8, 0xbc, 0xe8, 0xdf, 0xe8, 0xbc, 0xe8, 0xdf, 0xe8, 0xbb, 0xe8, 0xdf, - 0xe8, 0xbc, 0xe8, 0xdf, 0xe9, 0xbb, 0xe8, 0xdf, 0xe9, 0xbc, 0xe8, 0xdf, - 0xe9, 0xbb, 0xe8, 0xdf, 0xe9, 0xbc, 0xe8, 0xdf, 0xea, 0xbb, 0xe8, 0xdf, - 0xea, 0xbc, 0xec, 0xdf, 0xea, 0xbe, 0xec, 0xdf, 0xea, 0xbc, 0xec, 0xdf, - 0xeb, 0xbe, 0xec, 0xdf, 0xeb, 0xbc, 0xec, 0xdf, 0xeb, 0xbc, 0xec, 0xdf, - 0xeb, 0xbc, 0xec, 0xdf, 0xec, 0xbc, 0xec, 0xdf, 0xeb, 0xbc, 0xec, 0xdf, - 0xec, 0xbc, 0xec, 0xdf, 0xeb, 0xbc, 0xec, 0xdf, 0xec, 0xbc, 0xed, 0xdf, - 0xeb, 0xbc, 0xed, 0xdf, 0xec, 0xbc, 0xed, 0xdf, 0xeb, 0xbc, 0xed, 0xdf, - 0xec, 0xbc, 0xee, 0xdd, 0xec, 0xbc, 0xee, 0xdf, 0xec, 0xbc, 0xee, 0xdd, - 0xec, 0xbc, 0xee, 0xdf, 0xec, 0xbc, 0xef, 0xdd, 0xec, 0xbc, 0xef, 0xdf, - 0xec, 0xbc, 0xef, 0xdd, 0xec, 0xbc, 0xef, 0xdf, 0xec, 0xbc, 0xf0, 0xdd, - 0xec, 0xbc, 0xf0, 0xdf, 0xec, 0xbc, 0xf0, 0xdd, 0xec, 0xbc, 0xf0, 0xdf, - 0xec, 0xbc, 0xf1, 0xdd, 0xec, 0xbc, 0xf1, 0xdf, 0xec, 0xbc, 0xf1, 0xdd, - 0xec, 0xbc, 0xf1, 0xdf, 0xec, 0xbc, 0xf2, 0xdd, 0xec, 0xbc, 0xf2, 0xdf, - 0xec, 0xbc, 0xf2, 0xdd, 0xec, 0xbc, 0xf2, 0xdf, 0xec, 0xbc, 0xf2, 0xdd, - 0xec, 0xbc, 0xf3, 0xdf, 0xec, 0xbc, 0xf3, 0xdd, 0xec, 0xbc, 0xf3, 0xdf, - 0xec, 0xbc, 0xf3, 0xdd, 0xec, 0xbc, 0xf4, 0xdf, 0xec, 0xbc, 0xf4, 0xdd, - 0xec, 0xbc, 0xf4, 0xdf, 0xec, 0xbc, 0xf4, 0xdd, 0xec, 0xbc, 0xf5, 0xdc, - 0xec, 0xbc, 0xf5, 0xdd, 0xec, 0xbc, 0xf5, 0xdc, 0xec, 0xbc, 0xf5, 0xdd, - 0xec, 0xbc, 0xf5, 0xdc, 0xec, 0xbc, 0xf6, 0xdd, 0xec, 0xbc, 0xf6, 0xdc, - 0xec, 0xbc, 0xf6, 0xdd, 0xec, 0xbc, 0xf6, 0xdc, 0xec, 0xbc, 0xf7, 0xdd, - 0xec, 0xbc, 0xf7, 0xdc, 0xec, 0xbc, 0xf7, 0xdd, 0xec, 0xbc, 0xf7, 0xdc, - 0xec, 0xbc, 0xf8, 0xdd, 0xec, 0xbc, 0xf8, 0xdc, 0xec, 0xbc, 0xf8, 0xdd, - 0xec, 0xbc, 0xf8, 0xdc, 0xec, 0xbc, 0xf8, 0xdd, 0xec, 0xbc, 0xf9, 0xdc, - 0xec, 0xbc, 0xf9, 0xdd, 0xec, 0xbc, 0xf9, 0xdc, 0xec, 0xbc, 0xf9, 0xdd, - 0xec, 0xbc, 0xfa, 0xdc, 0xec, 0xbc, 0xfa, 0xdd, 0xec, 0xbc, 0xfa, 0xdc, - 0xec, 0xbc, 0xfa, 0xdd, 0xec, 0xbc, 0xfa, 0xdc, 0xec, 0xbc, 0xfb, 0xdd, - 0xec, 0xbc, 0xfb, 0xdc, 0xec, 0xbc, 0xfb, 0xdd, 0xec, 0xbc, 0xfb, 0xdc, - 0xec, 0xbc, 0xfc, 0xdd, 0xec, 0xbc, 0xfc, 0xdc, 0xec, 0xbc, 0xfc, 0xdd, - 0xec, 0xbc, 0xfc, 0xec, 0xf1, 0xbc, 0xfc, 0xec, 0xf1, 0xbc, 0xfd, 0xec, - 0xf1, 0xbc, 0xfd, 0xec, 0xf1, 0xbc, 0xfd, 0xec, 0xf1, 0xbc, 0xfd, 0xec, - 0xf1, 0xbc, 0xfe, 0xec, 0xf1, 0xbc, 0xfe, 0xec, 0xf1, 0xbc, 0xfe, 0xec, - 0xf1, 0xbc, 0xfe, 0xec, 0xf1, 0xbc, 0xfe, 0xec, 0xf1, 0xbc, 0xff, 0xec, - 0xf1, 0xbc, 0xff, 0xec, 0xf1, 0xbc, 0x03, 0xe2, 0x88, 0xbd, 0x0a, 0xe4, - 0x88, 0xbd, 0x0f, 0xe2, 0x88, 0xbd, 0x14, 0xe4, 0x88, 0xbd, 0x17, 0xe2, - 0x88, 0xbd, 0x1b, 0xe4, 0x88, 0xbd, 0x1e, 0xe2, 0x88, 0xbd, 0x20, 0xe4, - 0x88, 0xbd, 0x23, 0xe2, 0x88, 0xbd, 0x25, 0xe4, 0x88, 0xbd, 0x27, 0xe2, - 0x88, 0xbd, 0x29, 0xe4, 0x88, 0xbd, 0x2b, 0xe2, 0x88, 0xbd, 0x2d, 0xe4, - 0x88, 0xbd, 0x2f, 0xe2, 0x88, 0xbd, 0x31, 0xe4, 0x88, 0xbd, 0x32, 0xe2, - 0x88, 0xbd, 0x34, 0xe4, 0x88, 0xbd, 0x35, 0xe2, 0x88, 0xbd, 0x37, 0xe4, - 0x88, 0xbd, 0x38, 0xe2, 0x88, 0xbd, 0x3a, 0xe4, 0x88, 0xbd, 0x3b, 0xe2, - 0x88, 0xbd, 0x3c, 0xe4, 0x88, 0xbd, 0x3e, 0xe2, 0x88, 0xbd, 0x3f, 0xe4, - 0x88, 0xbd, 0x40, 0xe2, 0x88, 0xbd, 0x42, 0xe4, 0x88, 0xbd, 0x43, 0xe2, - 0x88, 0xbd, 0x44, 0xe4, 0x88, 0xbd, 0x45, 0xe2, 0x88, 0xbd, 0x46, 0xe4, - 0x88, 0xbd, 0x47, 0xe2, 0x88, 0xbd, 0x48, 0xe4, 0x88, 0xbd, 0x49, 0xe2, - 0x88, 0xbd, 0x4a, 0xe4, 0x88, 0xbd, 0x4b, 0xe2, 0x88, 0xbd, 0x4c, 0xe4, - 0x88, 0xbd, 0x4d, 0xe2, 0x88, 0xbd, 0x4e, 0xe4, 0x88, 0xbd, 0x4f, 0xe2, - 0x88, 0xbd, 0x50, 0xe4, 0x88, 0xbd, 0x51, 0xe2, 0x88, 0xbd, 0x52, 0xe4, - 0x88, 0xbd, 0x53, 0xe2, 0x88, 0xbd, 0x54, 0xe4, 0x88, 0xbd, 0x55, 0xe2, - 0x88, 0xbd, 0x56, 0xe4, 0x88, 0xbd, 0x57, 0xe2, 0x88, 0xbd, 0x58, 0xe4, - 0x88, 0xbd, 0x58, 0xe2, 0x88, 0xbd, 0x59, 0xe4, 0x88, 0xbd, 0x5a, 0xe2, - 0x88, 0xbd, 0x5b, 0xe4, 0x88, 0xbd, 0x5c, 0xe2, 0x88, 0xbd, 0x5d, 0xe1, - 0x89, 0xbd, 0x5d, 0xe2, 0x88, 0xbd, 0x5e, 0xe1, 0x89, 0xbd, 0x5f, 0xe2, - 0x88, 0xbd, 0x60, 0xe1, 0x89, 0xbd, 0x60, 0xe2, 0x88, 0xbd, 0x61, 0xe1, - 0x89, 0xbd, 0x62, 0xe2, 0x88, 0xbd, 0x63, 0xe1, 0x89, 0xbd, 0x63, 0xe2, - 0x88, 0xbd, 0x64, 0xe1, 0x89, 0xbd, 0x65, 0xe2, 0x88, 0xbd, 0x66, 0xe1, - 0x89, 0xbd, 0x66, 0xe2, 0x88, 0xbd, 0x67, 0xe1, 0x89, 0xbd, 0x68, 0xe2, - 0x88, 0xbd, 0x68, 0xe1, 0x89, 0xbd, 0x69, 0xe2, 0x88, 0xbd, 0x6a, 0xe1, - 0x89, 0xbd, 0x6a, 0xe2, 0x88, 0xbd, 0x6b, 0xe1, 0x89, 0xbd, 0x6c, 0xe2, - 0x88, 0xbd, 0x6c, 0xe1, 0x89, 0xbd, 0x6d, 0xe2, 0x88, 0xbd, 0x6e, 0xe1, - 0x89, 0xbd, 0x6e, 0xe2, 0x88, 0xbd, 0x6f, 0xe1, 0x89, 0xbd, 0x70, 0xe2, - 0x88, 0xbd, 0x70, 0xe1, 0x89, 0xbd, 0x71, 0xe2, 0x88, 0xbd, 0x72, 0xe1, - 0x89, 0xbd, 0x72, 0xe2, 0x88, 0xbd, 0x73, 0xe1, 0x89, 0xbd, 0x73, 0xe2, - 0x88, 0xbd, 0x74, 0xe1, 0x89, 0xbd, 0x75, 0xe2, 0x88, 0xbd, 0x75, 0xe1, - 0x89, 0xbd, 0x76, 0xdf, 0x89, 0xbd, 0x76, 0xe1, 0x89, 0xbd, 0x77, 0xdf, - 0x89, 0xbd, 0x78, 0xe1, 0x89, 0xbd, 0x78, 0xdf, 0x89, 0xbd, 0x79, 0xe1, - 0x89, 0xbd, 0x79, 0xdf, 0x89, 0xbd, 0x7a, 0xe1, 0x89, 0xbd, 0x7a, 0xdf, - 0x89, 0xbd, 0x7b, 0xe1, 0x89, 0xbd, 0x7c, 0xdf, 0x89, 0xbd, 0x7c, 0xe1, - 0x89, 0xbd, 0x7d, 0xdf, 0x89, 0xbd, 0x7d, 0xe1, 0x89, 0xbd, 0x7e, 0xdf, - 0x89, 0xbd, 0x7e, 0xe1, 0x89, 0xbd, 0x7f, 0xdf, 0x89, 0xbd, 0x7f, 0xe1, - 0x89, 0xbd, 0x80, 0xdf, 0x89, 0xbd, 0x81, 0xdf, 0x89, 0xbd, 0x81, 0xdf, - 0x89, 0xbd, 0x82, 0xdf, 0x89, 0xbd, 0x82, 0xdf, 0x89, 0xbd, 0x83, 0xdf, - 0x89, 0xbd, 0x83, 0xdf, 0x89, 0xbd, 0x84, 0xdf, 0x89, 0xbd, 0x84, 0xdf, - 0x89, 0xbd, 0x85, 0xdf, 0x89, 0xbd, 0x85, 0xdf, 0x89, 0xbd, 0x86, 0xdf, - 0x89, 0xbd, 0x86, 0xdf, 0x89, 0xbd, 0x87, 0xdf, 0x89, 0xbd, 0x87, 0xdf, - 0x89, 0xbd, 0x88, 0xdf, 0x89, 0xbd, 0x88, 0xdf, 0x89, 0xbd, 0x89, 0xdf, - 0x8a, 0xbd, 0x89, 0xdf, 0x89, 0xbc, 0x89, 0xdf, 0x8a, 0xbd, 0x89, 0xdf, - 0x8a, 0xbc, 0x89, 0xdf, 0x8b, 0xbd, 0x89, 0xdf, 0x8b, 0xbc, 0x89, 0xdf, - 0x8c, 0xbd, 0x89, 0xdf, 0x8c, 0xbc, 0x89, 0xdf, 0x8d, 0xbd, 0x89, 0xdf, - 0x8d, 0xbc, 0x89, 0xdf, 0x8e, 0xbd, 0x89, 0xdf, 0x8e, 0xbc, 0x89, 0xdf, - 0x8e, 0xbd, 0x89, 0xdf, 0x8f, 0xbc, 0x89, 0xdf, 0x8f, 0xbd, 0x89, 0xdf, - 0x90, 0xbc, 0x89, 0xdf, 0x90, 0xbd, 0x89, 0xdf, 0x91, 0xbc, 0x89, 0xdf, - 0x91, 0xbd, 0x89, 0xdf, 0x92, 0xbc, 0x89, 0xdf, 0x92, 0xbd, 0x89, 0xdf, - 0x93, 0xbc, 0x89, 0xdf, 0x93, 0xbd, 0x89, 0xdf, 0x94, 0xbc, 0x89, 0xdf, - 0x94, 0xbd, 0x89, 0xdf, 0x94, 0xbc, 0x8a, 0xdf, 0x95, 0xb8, 0x89, 0xdf, - 0x95, 0xbc, 0x8a, 0xdf, 0x96, 0xb8, 0x89, 0xdf, 0x96, 0xbc, 0x8a, 0xdf, - 0x97, 0xb8, 0x89, 0xdf, 0x97, 0xbc, 0x8a, 0xdf, 0x98, 0xb8, 0x89, 0xdf, - 0x98, 0xbc, 0x8a, 0xdf, 0x98, 0xb8, 0x89, 0xdf, 0x99, 0xbc, 0x8a, 0xdf, - 0x99, 0xb8, 0x89, 0xdf, 0x9a, 0xbc, 0x8a, 0xdf, 0x9a, 0xb8, 0x89, 0xdf, - 0x9a, 0xbc, 0x8a, 0xdf, 0x9b, 0xb8, 0x89, 0xdf, 0x9b, 0xbc, 0x8a, 0xdf, - 0x9c, 0xb8, 0x89, 0xdf, 0x9c, 0xbc, 0x8a, 0xdf, 0x9d, 0xb8, 0x89, 0xdf, - 0x9d, 0xbc, 0x8a, 0xdf, 0x9d, 0xb8, 0x89, 0xdf, 0x9e, 0xbc, 0x8a, 0xdf, - 0x9e, 0xb8, 0x89, 0xdf, 0x9f, 0xbc, 0x8a, 0xdf, 0x9f, 0xb8, 0x89, 0xdf, - 0x9f, 0xbc, 0x8a, 0xdf, 0xa0, 0xb8, 0x89, 0xdf, 0xa0, 0xbc, 0x8a, 0xdf, - 0xa1, 0xb8, 0x89, 0xdf, 0xa1, 0xbc, 0x8a, 0xdf, 0xa1, 0xb8, 0x89, 0xdf, - 0xa2, 0xbc, 0x8a, 0xdf, 0xa2, 0xb8, 0x89, 0xdf, 0xa3, 0xbc, 0x8a, 0xdf, - 0xa3, 0xb8, 0x89, 0xdf, 0xa3, 0xbc, 0x8a, 0xdf, 0xa4, 0xb8, 0x89, 0xdf, - 0xa4, 0xbc, 0x8a, 0xdf, 0xa5, 0xb8, 0x89, 0xdf, 0xa5, 0xbc, 0x8a, 0xdf, - 0xa5, 0xb8, 0x8a, 0xdf, 0xa6, 0xb5, 0x8a, 0xdf, 0xa6, 0xb8, 0x8a, 0xdf, - 0xa6, 0xb5, 0x8a, 0xdf, 0xa7, 0xb8, 0x8a, 0xdf, 0xa7, 0xb5, 0x8a, 0xdf, - 0xa8, 0xb8, 0x8a, 0xdf, 0xa8, 0xb5, 0x8a, 0xdf, 0xa8, 0xb8, 0x8a, 0xdf, - 0xa9, 0xb5, 0x8a, 0xdf, 0xa9, 0xb8, 0x8a, 0xdf, 0xaa, 0xb5, 0xa3, 0xdf, - 0xaa, 0x98, 0x8a, 0xdf, 0xaa, 0xb5, 0xa3, 0xdf, 0xab, 0x98, 0xa3, 0xdf, - 0xab, 0x97, 0xa3, 0xdf, 0xab, 0x98, 0xa3, 0xdf, 0xac, 0x97, 0xa3, 0xdf, - 0xac, 0x98, 0xa3, 0xdf, 0xac, 0x97, 0xa3, 0xdf, 0xad, 0x98, 0xa3, 0xdf, - 0xad, 0x97, 0xa3, 0xdf, 0xae, 0x98, 0xa3, 0xdf, 0xae, 0x97, 0xa3, 0xdf, - 0xae, 0x98, 0xa3, 0xdf, 0xaf, 0x97, 0xa3, 0xdf, 0xaf, 0x98, 0xa3, 0xdf, - 0xaf, 0x97, 0xa3, 0xdf, 0xb0, 0x98, 0xa3, 0xdf, 0xb0, 0x97, 0xa3, 0xdf, - 0xb0, 0x98, 0xa3, 0xdf, 0xb1, 0x97, 0xa3, 0xdf, 0xb1, 0x98, 0xa3, 0xdf, - 0xb2, 0x97, 0xa3, 0xdf, 0xb2, 0x98, 0xa3, 0xdf, 0xb2, 0x97, 0xa3, 0xdf, - 0xb3, 0x98, 0xa3, 0xdf, 0xb3, 0x97, 0xa3, 0xdf, 0xb3, 0x98, 0xa3, 0xdf, - 0xb4, 0x97, 0xce, 0xdf, 0xb4, 0xc7, 0xcf, 0xdf, 0xb4, 0xc5, 0xcf, 0xdf, - 0xb5, 0xc2, 0xcf, 0xdf, 0xb5, 0xc5, 0xcf, 0xdf, 0xb5, 0xc2, 0xcf, 0xdf, - 0xb6, 0xc5, 0xcf, 0xdf, 0xb6, 0xc2, 0xcf, 0xdf, 0xb6, 0xc5, 0xcf, 0xdf, - 0xb7, 0xc2, 0xcf, 0xdf, 0xb7, 0xc5, 0xcf, 0xdf, 0xb7, 0xc2, 0xcf, 0xdf, - 0xb8, 0xc5, 0xcf, 0xdf, 0xb8, 0xc2, 0xcf, 0xdf, 0xb8, 0xc5, 0xcf, 0xdf, - 0xb9, 0xc2, 0xcf, 0xdf, 0xb9, 0xbf, 0xcf, 0xdf, 0xb9, 0xc2, 0xcf, 0xdf, - 0xba, 0xbf, 0xcf, 0xdf, 0xba, 0xc2, 0xcf, 0xdf, 0xba, 0xbf, 0xcf, 0xdf, - 0xbb, 0xc2, 0xcf, 0xdf, 0xbb, 0xbf, 0xcf, 0xdf, 0xbb, 0xc2, 0xcf, 0xdf, - 0xbc, 0xbf, 0xcf, 0xdf, 0xbc, 0xc2, 0xcf, 0xdf, 0xbc, 0xbf, 0xcf, 0xdf, - 0xbd, 0xc2, 0xcf, 0xdf, 0xbd, 0xbf, 0xcf, 0xdf, 0xbd, 0xc2, 0xcf, 0xdf, - 0xbe, 0xbf, 0xcf, 0xdf, 0xbe, 0xc2, 0xcf, 0xdf, 0xbe, 0xbf, 0xcf, 0xdf, - 0xbf, 0xc2, 0xcf, 0xdf, 0xbf, 0xbf, 0xcf, 0xdf, 0xbf, 0xc2, 0xcf, 0xdf, - 0xc0, 0xbf, 0xcf, 0xdf, 0xc0, 0xc2, 0xcf, 0xdf, 0xc0, 0xbf, 0xcf, 0xdf, - 0xc1, 0xc2, 0xcf, 0xdf, 0xc1, 0xbf, 0xcf, 0xdf, 0xc1, 0xc2, 0xcf, 0xdf, - 0xc1, 0xbf, 0xcf, 0xdf, 0xc2, 0xc2, 0xcf, 0xdf, 0xc2, 0xbf, 0xcf, 0xdf, - 0xc2, 0xc2, 0xcf, 0xdf, 0xc3, 0xbf, 0xcf, 0xdf, 0xc3, 0xc2, 0xcf, 0xdf, - 0xc3, 0xbf, 0xcf, 0xdf, 0xc4, 0xc2, 0xcf, 0xdf, 0xc4, 0xbf, 0xcf, 0xdf, - 0xc4, 0xc2, 0xcf, 0xdf, 0xc5, 0xbf, 0xd0, 0xdf, 0xc5, 0xbe, 0xcf, 0xdf, - 0xc5, 0xbf, 0xd0, 0xdf, 0xc6, 0xbe, 0xcf, 0xdf, 0xc6, 0xbf, 0xd0, 0xdf, - 0xc6, 0xbe, 0xcf, 0xdf, 0xc6, 0xbf, 0xd0, 0xdf, 0xc7, 0xbe, 0xcf, 0xdf, - 0xc7, 0xbf, 0xd0, 0xdf, 0xc7, 0xbe, 0xcf, 0xdf, 0xc8, 0xbf, 0xd0, 0xdf, - 0xc8, 0xbe, 0xcf, 0xdf, 0xc8, 0xbf, 0xd0, 0xdf, 0xc9, 0xbe, 0xcf, 0xdf, - 0xc9, 0xbf, 0xd0, 0xdf, 0xc9, 0xbe, 0xcf, 0xdf, 0xc9, 0xbf, 0xd0, 0xdf, - 0xca, 0xbe, 0xcf, 0xdf, 0xca, 0xbf, 0xd0, 0xdf, 0xca, 0xbe, 0xcf, 0xdf, - 0xcb, 0xbf, 0xd0, 0xdf, 0xcb, 0xbe, 0xcf, 0xdf, 0xcb, 0xbf, 0xd0, 0xdf, - 0xcc, 0xbe, 0xcf, 0xdf, 0xcc, 0xbf, 0xd0, 0xdf, 0xcc, 0xbe, 0xcf, 0xdf, - 0xcc, 0xbf, 0xd0, 0xdf, 0xcd, 0xbe, 0xcf, 0xdf, 0xcd, 0xbf, 0xd0, 0xdf, - 0xcd, 0xbe, 0xd0, 0xdf, 0xce, 0xbd, 0xd0, 0xdf, 0xce, 0xbe, 0xd0, 0xdf, - 0xce, 0xbd, 0xd0, 0xdf, 0xce, 0xbe, 0xd0, 0xdf, 0xcf, 0xbd, 0xd0, 0xdf, - 0xcf, 0xbe, 0xd0, 0xdf, 0xcf, 0xbd, 0xd0, 0xdf, 0xd0, 0xbd, 0xd0, 0xdf, - 0xcf, 0xbd, 0xd0, 0xdf, 0xd0, 0xbd, 0xd0, 0xdf, 0xcf, 0xbd, 0xd1, 0xdf, - 0xd0, 0xbd, 0xd1, 0xdf, 0xcf, 0xbd, 0xd1, 0xdf, 0xd0, 0xbd, 0xd2, 0xdf, - 0xcf, 0xbd, 0xd2, 0xdf, 0xd0, 0xbd, 0xd2, 0xde, 0xd0, 0xbd, 0xd2, 0xdf, - 0xd0, 0xbd, 0xd3, 0xde, 0xd0, 0xbd, 0xd3, 0xdf, 0xd0, 0xbd, 0xd3, 0xde, - 0xd0, 0xbd, 0xd4, 0xdf, 0xd0, 0xbd, 0xd4, 0xde, 0xd0, 0xbd, 0xd4, 0xdf, - 0xd0, 0xbd, 0xd4, 0xde, 0xd0, 0xbd, 0xd5, 0xdf, 0xd0, 0xbd, 0xd5, 0xde, - 0xd0, 0xbd, 0xd5, 0xdf, 0xd0, 0xbd, 0xd6, 0xde, 0xd0, 0xbd, 0xd6, 0xdf, - 0xd0, 0xbd, 0xd6, 0xde, 0xd0, 0xbd, 0xd6, 0xdf, 0xd0, 0xbd, 0xd7, 0xde, - 0xd0, 0xbd, 0xd7, 0xdf, 0xd0, 0xbd, 0xd7, 0xde, 0xd0, 0xbd, 0xd7, 0xdf, - 0xd0, 0xbd, 0xd8, 0xde, 0xd0, 0xbd, 0xd8, 0xdf, 0xd0, 0xbd, 0xd8, 0xde, - 0xd0, 0xbd, 0xd9, 0xdf, 0xd0, 0xbd, 0xd9, 0xde, 0xd0, 0xbd, 0xd9, 0xdf, - 0xd0, 0xbd, 0xd9, 0xde, 0xd0, 0xbd, 0xda, 0xdf, 0xd0, 0xbd, 0xda, 0xde, - 0xd0, 0xbd, 0xda, 0xdc, 0xd0, 0xbd, 0xda, 0xde, 0xd0, 0xbd, 0xdb, 0xdc, - 0xd0, 0xbd, 0xdb, 0xde, 0xd0, 0xbd, 0xdb, 0xdc, 0xd0, 0xbd, 0xdb, 0xde, - 0xd0, 0xbd, 0xdc, 0xdc, 0xd0, 0xbd, 0xdc, 0xde, 0xd0, 0xbd, 0xdc, 0xe2, - 0xe8, 0xbd, 0xdd, 0xe0, 0xe8, 0xbd, 0xdd, 0xe2, 0xe8, 0xbd, 0xdd, 0xe0, - 0xe8, 0xbd, 0xdd, 0xe2, 0xe8, 0xbd, 0xde, 0xe0, 0xe8, 0xbd, 0xde, 0xe2, - 0xe8, 0xbd, 0xde, 0xe0, 0xe8, 0xbd, 0xde, 0xe2, 0xe8, 0xbd, 0xdf, 0xe0, - 0xe8, 0xbd, 0xdf, 0xe2, 0xe8, 0xbd, 0xdf, 0xe0, 0xe8, 0xbd, 0xdf, 0xe2, - 0xe8, 0xbd, 0xe0, 0xe0, 0xe8, 0xbd, 0xe0, 0xe2, 0xe8, 0xbd, 0xe0, 0xe0, - 0xe8, 0xbd, 0xe1, 0xe2, 0xe8, 0xbd, 0xe1, 0xe0, 0xe8, 0xbd, 0xe1, 0xe2, - 0xe8, 0xbd, 0xe1, 0xe0, 0xe8, 0xbd, 0xe2, 0xe2, 0xe8, 0xbd, 0xe2, 0xe0, - 0xe8, 0xbd, 0xe2, 0xdf, 0xe8, 0xbd, 0xe2, 0xe0, 0xe8, 0xbd, 0xe3, 0xdf, - 0xe8, 0xbd, 0xe3, 0xe0, 0xe8, 0xbd, 0xe3, 0xdf, 0xe8, 0xbd, 0xe3, 0xe0, - 0xe8, 0xbd, 0xe4, 0xdf, 0xe8, 0xbd, 0xe4, 0xe0, 0xe8, 0xbd, 0xe4, 0xdf, - 0xe8, 0xbd, 0xe4, 0xe0, 0xe8, 0xbd, 0xe5, 0xdf, 0xe8, 0xbd, 0xe5, 0xe0, - 0xe8, 0xbd, 0xe5, 0xdf, 0xe8, 0xbd, 0xe5, 0xe0, 0xe8, 0xbd, 0xe6, 0xdf, - 0xe8, 0xbd, 0xe6, 0xe0, 0xe8, 0xbd, 0xe6, 0xdf, 0xe8, 0xbd, 0xe6, 0xe0, - 0xe8, 0xbd, 0xe7, 0xdf, 0xe8, 0xbd, 0xe7, 0xe0, 0xe8, 0xbd, 0xe7, 0xdf, - 0xe8, 0xbd, 0xe7, 0xdf, 0xe8, 0xbd, 0xe8, 0xdf, 0xe8, 0xbd, 0xe8, 0xdf, - 0xe8, 0xbd, 0xe8, 0xdf, 0xe8, 0xbc, 0xe8, 0xdf, 0xe8, 0xbd, 0xe8, 0xdf, - 0xe9, 0xbc, 0xe8, 0xdf, 0xe9, 0xbd, 0xe8, 0xdf, 0xe9, 0xbc, 0xe8, 0xdf, - 0xe9, 0xbd, 0xe8, 0xdf, 0xea, 0xbc, 0xe8, 0xdf, 0xea, 0xbd, 0xec, 0xdf, - 0xea, 0xbe, 0xec, 0xdf, 0xea, 0xbd, 0xec, 0xdf, 0xeb, 0xbe, 0xec, 0xdf, - 0xeb, 0xbd, 0xec, 0xdf, 0xeb, 0xbe, 0xec, 0xdf, 0xeb, 0xbd, 0xec, 0xdf, - 0xec, 0xbd, 0xec, 0xdf, 0xeb, 0xbd, 0xec, 0xdf, 0xec, 0xbd, 0xec, 0xdf, - 0xeb, 0xbd, 0xec, 0xdf, 0xec, 0xbd, 0xed, 0xdf, 0xeb, 0xbd, 0xed, 0xdf, - 0xec, 0xbd, 0xed, 0xdf, 0xeb, 0xbd, 0xed, 0xdf, 0xec, 0xbd, 0xee, 0xde, - 0xec, 0xbd, 0xee, 0xdf, 0xec, 0xbd, 0xee, 0xde, 0xec, 0xbd, 0xee, 0xdf, - 0xec, 0xbd, 0xef, 0xde, 0xec, 0xbd, 0xef, 0xdf, 0xec, 0xbd, 0xef, 0xde, - 0xec, 0xbd, 0xef, 0xdf, 0xec, 0xbd, 0xf0, 0xde, 0xec, 0xbd, 0xf0, 0xdf, - 0xec, 0xbd, 0xf0, 0xde, 0xec, 0xbd, 0xf0, 0xdf, 0xec, 0xbd, 0xf1, 0xde, - 0xec, 0xbd, 0xf1, 0xdf, 0xec, 0xbd, 0xf1, 0xde, 0xec, 0xbd, 0xf1, 0xdf, - 0xec, 0xbd, 0xf2, 0xde, 0xec, 0xbd, 0xf2, 0xdf, 0xec, 0xbd, 0xf2, 0xde, - 0xec, 0xbd, 0xf2, 0xdf, 0xec, 0xbd, 0xf2, 0xde, 0xec, 0xbd, 0xf3, 0xdf, - 0xec, 0xbd, 0xf3, 0xde, 0xec, 0xbd, 0xf3, 0xdf, 0xec, 0xbd, 0xf3, 0xde, - 0xec, 0xbd, 0xf4, 0xdf, 0xec, 0xbd, 0xf4, 0xde, 0xec, 0xbd, 0xf4, 0xdf, - 0xec, 0xbd, 0xf4, 0xde, 0xec, 0xbd, 0xf5, 0xdf, 0xec, 0xbd, 0xf5, 0xde, - 0xec, 0xbd, 0xf5, 0xdf, 0xec, 0xbd, 0xf5, 0xde, 0xec, 0xbd, 0xf5, 0xdf, - 0xec, 0xbd, 0xf6, 0xde, 0xec, 0xbd, 0xf6, 0xdf, 0xec, 0xbd, 0xf6, 0xde, - 0xec, 0xbd, 0xf6, 0xdf, 0xec, 0xbd, 0xf7, 0xde, 0xec, 0xbd, 0xf7, 0xdf, - 0xec, 0xbd, 0xf7, 0xde, 0xec, 0xbd, 0xf7, 0xdb, 0xec, 0xbd, 0xf8, 0xde, - 0xec, 0xbd, 0xf8, 0xdb, 0xec, 0xbd, 0xf8, 0xde, 0xec, 0xbd, 0xf8, 0xdb, - 0xec, 0xbd, 0xf8, 0xde, 0xec, 0xbd, 0xf9, 0xdb, 0xec, 0xbd, 0xf9, 0xde, - 0xec, 0xbd, 0xf9, 0xdb, 0xec, 0xbd, 0xf9, 0xde, 0xec, 0xbd, 0xfa, 0xdb, - 0xec, 0xbd, 0xfa, 0xde, 0xec, 0xbd, 0xfa, 0xdb, 0xec, 0xbd, 0xfa, 0xde, - 0xec, 0xbd, 0xfa, 0xdb, 0xec, 0xbd, 0xfb, 0xde, 0xec, 0xbd, 0xfb, 0xdb, - 0xec, 0xbd, 0xfb, 0xde, 0xec, 0xbd, 0xfb, 0xdb, 0xec, 0xbd, 0xfc, 0xde, - 0xec, 0xbd, 0xfc, 0xdb, 0xec, 0xbd, 0xfc, 0xde, 0xec, 0xbd, 0xfc, 0xec, - 0xf1, 0xbd, 0xfc, 0xec, 0xf1, 0xbd, 0xfd, 0xec, 0xf1, 0xbd, 0xfd, 0xec, - 0xf1, 0xbd, 0xfd, 0xec, 0xf1, 0xbd, 0xfd, 0xec, 0xf1, 0xbd, 0xfe, 0xec, - 0xf1, 0xbd, 0xfe, 0xec, 0xf1, 0xbd, 0xfe, 0xec, 0xf1, 0xbd, 0xfe, 0xec, - 0xf1, 0xbd, 0xfe, 0xec, 0xf1, 0xbd, 0xff, 0xec, 0xf1, 0xbd, 0xff, 0xec, - 0xf1, 0xbd, 0x03, 0xe6, 0x87, 0xbd, 0x0a, 0xe4, 0x88, 0xbd, 0x0f, 0xe6, - 0x87, 0xbd, 0x14, 0xe4, 0x88, 0xbd, 0x17, 0xe6, 0x87, 0xbd, 0x1b, 0xe4, - 0x88, 0xbd, 0x1e, 0xe6, 0x87, 0xbd, 0x20, 0xe4, 0x88, 0xbd, 0x23, 0xe6, - 0x87, 0xbd, 0x25, 0xe4, 0x88, 0xbd, 0x27, 0xe6, 0x87, 0xbd, 0x29, 0xe4, - 0x88, 0xbd, 0x2b, 0xe6, 0x87, 0xbd, 0x2d, 0xe4, 0x88, 0xbd, 0x2f, 0xe6, - 0x87, 0xbd, 0x31, 0xe4, 0x88, 0xbd, 0x32, 0xe6, 0x87, 0xbd, 0x34, 0xe4, - 0x88, 0xbd, 0x35, 0xe3, 0x88, 0xbd, 0x37, 0xe4, 0x88, 0xbd, 0x38, 0xe3, - 0x88, 0xbd, 0x3a, 0xe4, 0x88, 0xbd, 0x3b, 0xe3, 0x88, 0xbd, 0x3c, 0xe4, - 0x88, 0xbd, 0x3e, 0xe3, 0x88, 0xbd, 0x3f, 0xe4, 0x88, 0xbd, 0x40, 0xe3, - 0x88, 0xbd, 0x42, 0xe4, 0x88, 0xbd, 0x43, 0xe3, 0x88, 0xbd, 0x44, 0xe4, - 0x88, 0xbd, 0x45, 0xe3, 0x88, 0xbd, 0x46, 0xe4, 0x88, 0xbd, 0x47, 0xe3, - 0x88, 0xbd, 0x48, 0xe4, 0x88, 0xbd, 0x49, 0xe3, 0x88, 0xbd, 0x4a, 0xe4, - 0x88, 0xbd, 0x4b, 0xe3, 0x88, 0xbd, 0x4c, 0xe4, 0x88, 0xbd, 0x4d, 0xe3, - 0x88, 0xbd, 0x4e, 0xe4, 0x88, 0xbd, 0x4f, 0xe3, 0x88, 0xbd, 0x50, 0xe4, - 0x88, 0xbd, 0x51, 0xe3, 0x88, 0xbd, 0x52, 0xe4, 0x88, 0xbd, 0x53, 0xe3, - 0x88, 0xbd, 0x54, 0xe4, 0x88, 0xbd, 0x55, 0xe3, 0x88, 0xbd, 0x56, 0xe4, - 0x88, 0xbd, 0x57, 0xe3, 0x88, 0xbd, 0x58, 0xe4, 0x88, 0xbd, 0x58, 0xe3, - 0x88, 0xbd, 0x59, 0xe1, 0x89, 0xbd, 0x5a, 0xe3, 0x88, 0xbd, 0x5b, 0xe1, - 0x89, 0xbd, 0x5c, 0xe3, 0x88, 0xbd, 0x5d, 0xe1, 0x89, 0xbd, 0x5d, 0xe3, - 0x88, 0xbd, 0x5e, 0xe1, 0x89, 0xbd, 0x5f, 0xe3, 0x88, 0xbd, 0x60, 0xe1, - 0x89, 0xbd, 0x60, 0xe3, 0x88, 0xbd, 0x61, 0xe1, 0x89, 0xbd, 0x62, 0xe3, - 0x88, 0xbd, 0x63, 0xe1, 0x89, 0xbd, 0x63, 0xe3, 0x88, 0xbd, 0x64, 0xe1, - 0x89, 0xbd, 0x65, 0xe3, 0x88, 0xbd, 0x66, 0xe1, 0x89, 0xbd, 0x66, 0xe3, - 0x88, 0xbd, 0x67, 0xe1, 0x89, 0xbd, 0x68, 0xe3, 0x88, 0xbd, 0x68, 0xe1, - 0x89, 0xbd, 0x69, 0xe3, 0x88, 0xbd, 0x6a, 0xe1, 0x89, 0xbd, 0x6a, 0xe3, - 0x88, 0xbd, 0x6b, 0xe1, 0x89, 0xbd, 0x6c, 0xe3, 0x88, 0xbd, 0x6c, 0xe1, - 0x89, 0xbd, 0x6d, 0xe3, 0x88, 0xbd, 0x6e, 0xe1, 0x89, 0xbd, 0x6e, 0xe3, - 0x88, 0xbd, 0x6f, 0xe1, 0x89, 0xbd, 0x70, 0xe3, 0x88, 0xbd, 0x70, 0xe1, - 0x89, 0xbd, 0x71, 0xe3, 0x88, 0xbd, 0x72, 0xe1, 0x89, 0xbd, 0x72, 0xe3, - 0x88, 0xbd, 0x73, 0xe1, 0x89, 0xbd, 0x73, 0xe3, 0x88, 0xbd, 0x74, 0xe1, - 0x89, 0xbd, 0x75, 0xe3, 0x88, 0xbd, 0x75, 0xe1, 0x89, 0xbd, 0x76, 0xdf, - 0x89, 0xbd, 0x76, 0xe1, 0x89, 0xbd, 0x77, 0xdf, 0x89, 0xbd, 0x78, 0xe1, - 0x89, 0xbd, 0x78, 0xdf, 0x89, 0xbd, 0x79, 0xe1, 0x89, 0xbd, 0x79, 0xdf, - 0x89, 0xbd, 0x7a, 0xe1, 0x89, 0xbd, 0x7a, 0xdf, 0x89, 0xbd, 0x7b, 0xe1, - 0x89, 0xbd, 0x7c, 0xdf, 0x89, 0xbd, 0x7c, 0xe1, 0x89, 0xbd, 0x7d, 0xdf, - 0x89, 0xbd, 0x7d, 0xe1, 0x89, 0xbd, 0x7e, 0xdf, 0x89, 0xbd, 0x7e, 0xe1, - 0x89, 0xbd, 0x7f, 0xdf, 0x89, 0xbd, 0x7f, 0xe1, 0x89, 0xbd, 0x80, 0xdf, - 0x89, 0xbd, 0x81, 0xe1, 0x89, 0xbd, 0x81, 0xdf, 0x89, 0xbd, 0x82, 0xe1, - 0x89, 0xbd, 0x82, 0xdf, 0x89, 0xbd, 0x83, 0xe1, 0x89, 0xbd, 0x83, 0xdf, - 0x89, 0xbd, 0x84, 0xe1, 0x89, 0xbd, 0x84, 0xdf, 0x89, 0xbd, 0x85, 0xe1, - 0x89, 0xbd, 0x85, 0xdf, 0x89, 0xbd, 0x86, 0xdf, 0x89, 0xbd, 0x86, 0xdf, - 0x89, 0xbd, 0x87, 0xdf, 0x89, 0xbd, 0x87, 0xdf, 0x89, 0xbd, 0x88, 0xdf, - 0x89, 0xbd, 0x88, 0xdf, 0x89, 0xbd, 0x89, 0xdf, 0x8a, 0xbd, 0x88, 0xdf, - 0x89, 0xbd, 0x89, 0xdf, 0x8a, 0xbd, 0x88, 0xdf, 0x8a, 0xbd, 0x89, 0xdf, - 0x8b, 0xbd, 0x89, 0xdf, 0x8b, 0xbb, 0x89, 0xdf, 0x8c, 0xbd, 0x89, 0xdf, - 0x8c, 0xbb, 0x89, 0xdf, 0x8d, 0xbd, 0x89, 0xdf, 0x8d, 0xbb, 0x89, 0xdf, - 0x8e, 0xbd, 0x89, 0xdf, 0x8e, 0xbb, 0x89, 0xdf, 0x8e, 0xbd, 0x89, 0xdf, - 0x8f, 0xbb, 0x89, 0xdf, 0x8f, 0xbd, 0x89, 0xdf, 0x90, 0xbb, 0x89, 0xdf, - 0x90, 0xbd, 0x89, 0xdf, 0x91, 0xbb, 0x89, 0xdf, 0x91, 0xbd, 0x89, 0xdf, - 0x92, 0xbb, 0x89, 0xdf, 0x92, 0xbd, 0x89, 0xdf, 0x93, 0xbb, 0x89, 0xdf, - 0x93, 0xbd, 0x89, 0xdf, 0x94, 0xbb, 0x89, 0xdf, 0x94, 0xbd, 0x89, 0xdf, - 0x94, 0xbb, 0x8a, 0xdf, 0x95, 0xb8, 0x89, 0xdf, 0x95, 0xbb, 0x8a, 0xdf, - 0x96, 0xb8, 0x89, 0xdf, 0x96, 0xbb, 0x8a, 0xdf, 0x97, 0xb8, 0x89, 0xdf, - 0x97, 0xbb, 0x8a, 0xdf, 0x98, 0xb8, 0x89, 0xdf, 0x98, 0xbb, 0x8a, 0xdf, - 0x98, 0xb8, 0x89, 0xdf, 0x99, 0xbb, 0x8a, 0xdf, 0x99, 0xb8, 0x89, 0xdf, - 0x9a, 0xbb, 0x8a, 0xdf, 0x9a, 0xb8, 0x89, 0xdf, 0x9a, 0xbb, 0x8a, 0xdf, - 0x9b, 0xb8, 0x89, 0xdf, 0x9b, 0xbb, 0x8a, 0xdf, 0x9c, 0xb8, 0x89, 0xdf, - 0x9c, 0xbb, 0x8a, 0xdf, 0x9d, 0xb8, 0x89, 0xdf, 0x9d, 0xbb, 0x8a, 0xdf, - 0x9d, 0xb8, 0x89, 0xdf, 0x9e, 0xbb, 0x8a, 0xdf, 0x9e, 0xb8, 0x89, 0xdf, - 0x9f, 0xbb, 0x8a, 0xdf, 0x9f, 0xb8, 0x89, 0xdf, 0x9f, 0xbb, 0x8a, 0xdf, - 0xa0, 0xb8, 0x89, 0xdf, 0xa0, 0xbb, 0x8a, 0xdf, 0xa1, 0xb8, 0x89, 0xdf, - 0xa1, 0xbb, 0x8a, 0xdf, 0xa1, 0xb8, 0x89, 0xdf, 0xa2, 0xbb, 0x8a, 0xdf, - 0xa2, 0xb8, 0x89, 0xdf, 0xa3, 0xbb, 0x8a, 0xdf, 0xa3, 0xb8, 0x89, 0xdf, - 0xa3, 0xbb, 0x8a, 0xdf, 0xa4, 0xb8, 0x8a, 0xdf, 0xa4, 0xb5, 0x8a, 0xdf, - 0xa5, 0xb8, 0x8a, 0xdf, 0xa5, 0xb5, 0x8a, 0xdf, 0xa5, 0xb8, 0x8a, 0xdf, - 0xa6, 0xb5, 0x8a, 0xdf, 0xa6, 0xb8, 0x8a, 0xdf, 0xa6, 0xb5, 0x8a, 0xdf, - 0xa7, 0xb8, 0x8a, 0xdf, 0xa7, 0xb5, 0x8a, 0xdf, 0xa8, 0xb8, 0x8a, 0xdf, - 0xa8, 0xb5, 0x8a, 0xdf, 0xa8, 0xb8, 0x8a, 0xdf, 0xa9, 0xb5, 0x8a, 0xdf, - 0xa9, 0xb8, 0x8a, 0xdf, 0xaa, 0xb5, 0x8a, 0xdf, 0xaa, 0xb8, 0x8a, 0xdf, - 0xaa, 0xb5, 0xa3, 0xdf, 0xab, 0x97, 0xa3, 0xdf, 0xab, 0x97, 0xa3, 0xdf, - 0xab, 0x97, 0xa3, 0xdf, 0xac, 0x97, 0xa3, 0xdf, 0xac, 0x97, 0xa3, 0xdf, - 0xac, 0x97, 0xa3, 0xdf, 0xad, 0x97, 0xa3, 0xdf, 0xad, 0x97, 0xa3, 0xdf, - 0xae, 0x97, 0xa3, 0xdf, 0xae, 0x97, 0xa3, 0xdf, 0xae, 0x97, 0xa3, 0xdf, - 0xaf, 0x97, 0xa3, 0xdf, 0xaf, 0x97, 0xa3, 0xdf, 0xaf, 0x97, 0xa3, 0xdf, - 0xb0, 0x97, 0xa3, 0xdf, 0xb0, 0x97, 0xa3, 0xdf, 0xb0, 0x97, 0xa3, 0xdf, - 0xb1, 0x97, 0xa3, 0xdf, 0xb1, 0x97, 0xa3, 0xdf, 0xb2, 0x97, 0xa3, 0xdf, - 0xb2, 0x97, 0xa3, 0xdf, 0xb2, 0x97, 0xa3, 0xdf, 0xb3, 0x97, 0xa3, 0xdf, - 0xb3, 0x97, 0xa3, 0xdf, 0xb3, 0x97, 0xcf, 0xdf, 0xb4, 0xc5, 0xce, 0xdf, - 0xb4, 0xc8, 0xcf, 0xdf, 0xb4, 0xc5, 0xcf, 0xdf, 0xb5, 0xc3, 0xcf, 0xdf, - 0xb5, 0xc5, 0xcf, 0xdf, 0xb5, 0xc3, 0xcf, 0xdf, 0xb6, 0xc5, 0xcf, 0xdf, - 0xb6, 0xc3, 0xcf, 0xdf, 0xb6, 0xc5, 0xcf, 0xdf, 0xb7, 0xc3, 0xcf, 0xdf, - 0xb7, 0xc5, 0xcf, 0xdf, 0xb7, 0xc3, 0xcf, 0xdf, 0xb8, 0xc5, 0xcf, 0xdf, - 0xb8, 0xc3, 0xcf, 0xdf, 0xb8, 0xc5, 0xcf, 0xdf, 0xb9, 0xc3, 0xcf, 0xdf, - 0xb9, 0xc5, 0xcf, 0xdf, 0xb9, 0xc3, 0xcf, 0xdf, 0xba, 0xc5, 0xcf, 0xdf, - 0xba, 0xc3, 0xcf, 0xdf, 0xba, 0xc5, 0xcf, 0xdf, 0xbb, 0xc3, 0xcf, 0xdf, - 0xbb, 0xc5, 0xcf, 0xdf, 0xbb, 0xc3, 0xcf, 0xdf, 0xbc, 0xc5, 0xcf, 0xdf, - 0xbc, 0xc3, 0xcf, 0xdf, 0xbc, 0xc5, 0xcf, 0xdf, 0xbd, 0xc3, 0xcf, 0xdf, - 0xbd, 0xc5, 0xcf, 0xdf, 0xbd, 0xc3, 0xcf, 0xdf, 0xbe, 0xc5, 0xcf, 0xdf, - 0xbe, 0xc3, 0xcf, 0xdf, 0xbe, 0xc0, 0xcf, 0xdf, 0xbf, 0xc3, 0xcf, 0xdf, - 0xbf, 0xc0, 0xcf, 0xdf, 0xbf, 0xc3, 0xcf, 0xdf, 0xc0, 0xc0, 0xcf, 0xdf, - 0xc0, 0xc3, 0xcf, 0xdf, 0xc0, 0xc0, 0xcf, 0xdf, 0xc1, 0xc3, 0xcf, 0xdf, - 0xc1, 0xc0, 0xcf, 0xdf, 0xc1, 0xc3, 0xcf, 0xdf, 0xc1, 0xc0, 0xcf, 0xdf, - 0xc2, 0xc3, 0xcf, 0xdf, 0xc2, 0xc0, 0xcf, 0xdf, 0xc2, 0xc3, 0xcf, 0xdf, - 0xc3, 0xc0, 0xcf, 0xdf, 0xc3, 0xc3, 0xcf, 0xdf, 0xc3, 0xc0, 0xcf, 0xdf, - 0xc4, 0xc3, 0xcf, 0xdf, 0xc4, 0xc0, 0xcf, 0xdf, 0xc4, 0xc3, 0xcf, 0xdf, - 0xc5, 0xc0, 0xd0, 0xdf, 0xc5, 0xbd, 0xcf, 0xdf, 0xc5, 0xc0, 0xd0, 0xdf, - 0xc6, 0xbd, 0xcf, 0xdf, 0xc6, 0xc0, 0xd0, 0xdf, 0xc6, 0xbd, 0xcf, 0xdf, - 0xc6, 0xc0, 0xd0, 0xdf, 0xc7, 0xbd, 0xcf, 0xdf, 0xc7, 0xc0, 0xd0, 0xdf, - 0xc7, 0xbd, 0xcf, 0xdf, 0xc8, 0xc0, 0xd0, 0xdf, 0xc8, 0xbd, 0xcf, 0xdf, - 0xc8, 0xc0, 0xd0, 0xdf, 0xc9, 0xbd, 0xcf, 0xdf, 0xc9, 0xc0, 0xd0, 0xdf, - 0xc9, 0xbd, 0xcf, 0xdf, 0xc9, 0xc0, 0xd0, 0xdf, 0xca, 0xbd, 0xcf, 0xdf, - 0xca, 0xc0, 0xd0, 0xdf, 0xca, 0xbd, 0xcf, 0xdf, 0xcb, 0xc0, 0xd0, 0xdf, - 0xcb, 0xbd, 0xcf, 0xdf, 0xcb, 0xc0, 0xd0, 0xdf, 0xcc, 0xbd, 0xcf, 0xdf, - 0xcc, 0xc0, 0xd0, 0xdf, 0xcc, 0xbd, 0xcf, 0xdf, 0xcc, 0xc0, 0xd0, 0xdf, - 0xcd, 0xbd, 0xcf, 0xdf, 0xcd, 0xc0, 0xd0, 0xdf, 0xcd, 0xbd, 0xd0, 0xdf, - 0xce, 0xbd, 0xd0, 0xdf, 0xce, 0xbd, 0xd0, 0xdf, 0xce, 0xbd, 0xd0, 0xdf, - 0xce, 0xbd, 0xd0, 0xdf, 0xcf, 0xbd, 0xd0, 0xdf, 0xcf, 0xbd, 0xd0, 0xdf, - 0xcf, 0xbd, 0xd0, 0xdf, 0xd0, 0xbd, 0xd0, 0xdf, 0xcf, 0xbd, 0xd0, 0xdf, - 0xd0, 0xbd, 0xd0, 0xdf, 0xcf, 0xbd, 0xd1, 0xdf, 0xd0, 0xbd, 0xd1, 0xdf, - 0xcf, 0xbd, 0xd1, 0xdf, 0xd0, 0xbd, 0xd2, 0xdf, 0xcf, 0xbd, 0xd2, 0xdf, - 0xd0, 0xbd, 0xd2, 0xdf, 0xcf, 0xbd, 0xd2, 0xdf, 0xd0, 0xbd, 0xd3, 0xdf, - 0xcf, 0xbd, 0xd3, 0xdf, 0xd0, 0xbd, 0xd3, 0xdf, 0xcf, 0xbd, 0xd4, 0xdf, - 0xd0, 0xbd, 0xd4, 0xdf, 0xcf, 0xbd, 0xd4, 0xdf, 0xd0, 0xbd, 0xd4, 0xdd, - 0xd0, 0xbd, 0xd5, 0xdf, 0xd0, 0xbd, 0xd5, 0xdd, 0xd0, 0xbd, 0xd5, 0xdf, - 0xd0, 0xbd, 0xd6, 0xdd, 0xd0, 0xbd, 0xd6, 0xdf, 0xd0, 0xbd, 0xd6, 0xdd, - 0xd0, 0xbd, 0xd6, 0xdf, 0xd0, 0xbd, 0xd7, 0xdd, 0xd0, 0xbd, 0xd7, 0xdf, - 0xd0, 0xbd, 0xd7, 0xdd, 0xd0, 0xbd, 0xd7, 0xdf, 0xd0, 0xbd, 0xd8, 0xdd, - 0xd0, 0xbd, 0xd8, 0xdf, 0xd0, 0xbd, 0xd8, 0xdd, 0xd0, 0xbd, 0xd9, 0xdf, - 0xd0, 0xbd, 0xd9, 0xdd, 0xd0, 0xbd, 0xd9, 0xdf, 0xd0, 0xbd, 0xd9, 0xdd, - 0xd0, 0xbd, 0xda, 0xdf, 0xd0, 0xbd, 0xda, 0xdd, 0xd0, 0xbd, 0xda, 0xdc, - 0xd0, 0xbd, 0xda, 0xdd, 0xd0, 0xbd, 0xdb, 0xdc, 0xd0, 0xbd, 0xdb, 0xdd, - 0xd0, 0xbd, 0xdb, 0xdc, 0xd0, 0xbd, 0xdb, 0xdd, 0xd0, 0xbd, 0xdc, 0xdc, - 0xd0, 0xbd, 0xdc, 0xdd, 0xd0, 0xbd, 0xdc, 0xe2, 0xe8, 0xbd, 0xdd, 0xe1, - 0xe8, 0xbd, 0xdd, 0xe2, 0xe8, 0xbd, 0xdd, 0xe1, 0xe8, 0xbd, 0xdd, 0xe2, - 0xe8, 0xbd, 0xde, 0xe1, 0xe8, 0xbd, 0xde, 0xe2, 0xe8, 0xbd, 0xde, 0xe1, - 0xe8, 0xbd, 0xde, 0xe2, 0xe8, 0xbd, 0xdf, 0xe1, 0xe8, 0xbd, 0xdf, 0xe2, - 0xe8, 0xbd, 0xdf, 0xe1, 0xe8, 0xbd, 0xdf, 0xe2, 0xe8, 0xbd, 0xe0, 0xe1, - 0xe8, 0xbd, 0xe0, 0xe2, 0xe8, 0xbd, 0xe0, 0xe1, 0xe8, 0xbd, 0xe1, 0xe2, - 0xe8, 0xbd, 0xe1, 0xe1, 0xe8, 0xbd, 0xe1, 0xe2, 0xe8, 0xbd, 0xe1, 0xe1, - 0xe8, 0xbd, 0xe2, 0xe2, 0xe8, 0xbd, 0xe2, 0xe1, 0xe8, 0xbd, 0xe2, 0xdf, - 0xe8, 0xbd, 0xe2, 0xe1, 0xe8, 0xbd, 0xe3, 0xdf, 0xe8, 0xbd, 0xe3, 0xe1, - 0xe8, 0xbd, 0xe3, 0xdf, 0xe8, 0xbd, 0xe3, 0xe1, 0xe8, 0xbd, 0xe4, 0xdf, - 0xe8, 0xbd, 0xe4, 0xe1, 0xe8, 0xbd, 0xe4, 0xdf, 0xe8, 0xbd, 0xe4, 0xe1, - 0xe8, 0xbd, 0xe5, 0xdf, 0xe8, 0xbd, 0xe5, 0xe1, 0xe8, 0xbd, 0xe5, 0xdf, - 0xe8, 0xbd, 0xe5, 0xe1, 0xe8, 0xbd, 0xe6, 0xdf, 0xe8, 0xbd, 0xe6, 0xe1, - 0xe8, 0xbd, 0xe6, 0xdf, 0xe8, 0xbd, 0xe6, 0xe1, 0xe8, 0xbd, 0xe7, 0xdf, - 0xe8, 0xbd, 0xe7, 0xe1, 0xe8, 0xbd, 0xe7, 0xdf, 0xe8, 0xbd, 0xe7, 0xdf, - 0xe8, 0xbd, 0xe8, 0xdf, 0xe8, 0xbd, 0xe8, 0xdf, 0xe8, 0xbd, 0xe8, 0xdf, - 0xe8, 0xbd, 0xe8, 0xdf, 0xe8, 0xbd, 0xe8, 0xdf, 0xe9, 0xbd, 0xe8, 0xdf, - 0xe9, 0xbd, 0xe8, 0xdf, 0xe9, 0xbb, 0xe8, 0xdf, 0xe9, 0xbd, 0xe8, 0xdf, - 0xea, 0xbb, 0xe8, 0xdf, 0xea, 0xbd, 0xec, 0xdf, 0xea, 0xbe, 0xec, 0xdf, - 0xea, 0xbd, 0xec, 0xdf, 0xeb, 0xbe, 0xec, 0xdf, 0xeb, 0xbd, 0xec, 0xdf, - 0xeb, 0xbe, 0xec, 0xdf, 0xeb, 0xbd, 0xec, 0xdf, 0xec, 0xbd, 0xec, 0xdf, - 0xeb, 0xbd, 0xec, 0xdf, 0xec, 0xbd, 0xec, 0xdf, 0xeb, 0xbd, 0xec, 0xdf, - 0xec, 0xbd, 0xed, 0xdf, 0xeb, 0xbd, 0xed, 0xdf, 0xec, 0xbd, 0xed, 0xdf, - 0xeb, 0xbd, 0xed, 0xdf, 0xec, 0xbd, 0xee, 0xdf, 0xeb, 0xbd, 0xee, 0xdf, - 0xec, 0xbd, 0xee, 0xdf, 0xeb, 0xbd, 0xee, 0xdf, 0xec, 0xbd, 0xef, 0xdf, - 0xeb, 0xbd, 0xef, 0xdf, 0xec, 0xbd, 0xef, 0xdf, 0xeb, 0xbd, 0xef, 0xdf, - 0xec, 0xbd, 0xf0, 0xdd, 0xec, 0xbd, 0xf0, 0xdf, 0xec, 0xbd, 0xf0, 0xdd, - 0xec, 0xbd, 0xf0, 0xdf, 0xec, 0xbd, 0xf1, 0xdd, 0xec, 0xbd, 0xf1, 0xdf, - 0xec, 0xbd, 0xf1, 0xdd, 0xec, 0xbd, 0xf1, 0xdf, 0xec, 0xbd, 0xf2, 0xdd, - 0xec, 0xbd, 0xf2, 0xdf, 0xec, 0xbd, 0xf2, 0xdd, 0xec, 0xbd, 0xf2, 0xdf, - 0xec, 0xbd, 0xf2, 0xdd, 0xec, 0xbd, 0xf3, 0xdf, 0xec, 0xbd, 0xf3, 0xdd, - 0xec, 0xbd, 0xf3, 0xdf, 0xec, 0xbd, 0xf3, 0xdd, 0xec, 0xbd, 0xf4, 0xdf, - 0xec, 0xbd, 0xf4, 0xdd, 0xec, 0xbd, 0xf4, 0xdf, 0xec, 0xbd, 0xf4, 0xdd, - 0xec, 0xbd, 0xf5, 0xdf, 0xec, 0xbd, 0xf5, 0xdd, 0xec, 0xbd, 0xf5, 0xdf, - 0xec, 0xbd, 0xf5, 0xdd, 0xec, 0xbd, 0xf5, 0xdf, 0xec, 0xbd, 0xf6, 0xdd, - 0xec, 0xbd, 0xf6, 0xdf, 0xec, 0xbd, 0xf6, 0xdd, 0xec, 0xbd, 0xf6, 0xdf, - 0xec, 0xbd, 0xf7, 0xdd, 0xec, 0xbd, 0xf7, 0xdf, 0xec, 0xbd, 0xf7, 0xdd, - 0xec, 0xbd, 0xf7, 0xdc, 0xec, 0xbd, 0xf8, 0xdd, 0xec, 0xbd, 0xf8, 0xdc, - 0xec, 0xbd, 0xf8, 0xdd, 0xec, 0xbd, 0xf8, 0xdc, 0xec, 0xbd, 0xf8, 0xdd, - 0xec, 0xbd, 0xf9, 0xdc, 0xec, 0xbd, 0xf9, 0xdd, 0xec, 0xbd, 0xf9, 0xdc, - 0xec, 0xbd, 0xf9, 0xdd, 0xec, 0xbd, 0xfa, 0xdc, 0xec, 0xbd, 0xfa, 0xdd, - 0xec, 0xbd, 0xfa, 0xdc, 0xec, 0xbd, 0xfa, 0xdd, 0xec, 0xbd, 0xfa, 0xdc, - 0xec, 0xbd, 0xfb, 0xdd, 0xec, 0xbd, 0xfb, 0xec, 0xf1, 0xbd, 0xfb, 0xdd, - 0xec, 0xbd, 0xfb, 0xec, 0xf1, 0xbd, 0xfc, 0xec, 0xf1, 0xbd, 0xfc, 0xec, - 0xf1, 0xbd, 0xfc, 0xec, 0xf1, 0xbd, 0xfc, 0xec, 0xf1, 0xbd, 0xfc, 0xec, - 0xf1, 0xbd, 0xfd, 0xec, 0xf1, 0xbd, 0xfd, 0xec, 0xf1, 0xbd, 0xfd, 0xec, - 0xf1, 0xbd, 0xfd, 0xec, 0xf1, 0xbd, 0xfe, 0xec, 0xf1, 0xbd, 0xfe, 0xec, - 0xf1, 0xbd, 0xfe, 0xec, 0xf1, 0xbd, 0xfe, 0xec, 0xf1, 0xbd, 0xfe, 0xec, - 0xf1, 0xbd, 0xff, 0xec, 0xf1, 0xbd, 0xff, 0xec, 0xf1, 0xbd, 0x03, 0xe6, - 0x87, 0xbe, 0x0a, 0xe4, 0x88, 0xbe, 0x0f, 0xe6, 0x87, 0xbe, 0x14, 0xe4, - 0x88, 0xbe, 0x17, 0xe6, 0x87, 0xbe, 0x1b, 0xe4, 0x88, 0xbe, 0x1e, 0xe2, - 0x88, 0xbe, 0x20, 0xe4, 0x88, 0xbe, 0x23, 0xe2, 0x88, 0xbe, 0x25, 0xe4, - 0x88, 0xbe, 0x27, 0xe2, 0x88, 0xbe, 0x29, 0xe4, 0x88, 0xbe, 0x2b, 0xe2, - 0x88, 0xbe, 0x2d, 0xe4, 0x88, 0xbe, 0x2f, 0xe2, 0x88, 0xbe, 0x31, 0xe4, - 0x88, 0xbe, 0x32, 0xe2, 0x88, 0xbe, 0x34, 0xe4, 0x88, 0xbe, 0x35, 0xe2, - 0x88, 0xbe, 0x37, 0xe4, 0x88, 0xbe, 0x38, 0xe2, 0x88, 0xbe, 0x3a, 0xe4, - 0x88, 0xbe, 0x3b, 0xe2, 0x88, 0xbe, 0x3c, 0xe4, 0x88, 0xbe, 0x3e, 0xe2, - 0x88, 0xbe, 0x3f, 0xe4, 0x88, 0xbe, 0x40, 0xe2, 0x88, 0xbe, 0x42, 0xe4, - 0x88, 0xbe, 0x43, 0xe2, 0x88, 0xbe, 0x44, 0xe4, 0x88, 0xbe, 0x45, 0xe2, - 0x88, 0xbe, 0x46, 0xe4, 0x88, 0xbe, 0x47, 0xe2, 0x88, 0xbe, 0x48, 0xe4, - 0x88, 0xbe, 0x49, 0xe2, 0x88, 0xbe, 0x4a, 0xe4, 0x88, 0xbe, 0x4b, 0xe2, - 0x88, 0xbe, 0x4c, 0xe4, 0x88, 0xbe, 0x4d, 0xe2, 0x88, 0xbe, 0x4e, 0xe4, - 0x88, 0xbe, 0x4f, 0xe2, 0x88, 0xbe, 0x50, 0xe4, 0x88, 0xbe, 0x51, 0xe2, - 0x88, 0xbe, 0x52, 0xe4, 0x88, 0xbe, 0x53, 0xe2, 0x88, 0xbe, 0x54, 0xe4, - 0x88, 0xbe, 0x55, 0xe2, 0x88, 0xbe, 0x56, 0xe4, 0x88, 0xbe, 0x57, 0xe2, - 0x88, 0xbe, 0x58, 0xe4, 0x88, 0xbe, 0x58, 0xe2, 0x88, 0xbe, 0x59, 0xe4, - 0x88, 0xbe, 0x5a, 0xe2, 0x88, 0xbe, 0x5b, 0xe4, 0x88, 0xbe, 0x5c, 0xe2, - 0x88, 0xbe, 0x5d, 0xe4, 0x88, 0xbe, 0x5d, 0xe2, 0x88, 0xbe, 0x5e, 0xe4, - 0x88, 0xbe, 0x5f, 0xe2, 0x88, 0xbe, 0x60, 0xe4, 0x88, 0xbe, 0x60, 0xe2, - 0x88, 0xbe, 0x61, 0xe4, 0x88, 0xbe, 0x62, 0xe2, 0x88, 0xbe, 0x63, 0xe4, - 0x88, 0xbe, 0x63, 0xe2, 0x88, 0xbe, 0x64, 0xe4, 0x88, 0xbe, 0x65, 0xe2, - 0x88, 0xbe, 0x66, 0xe1, 0x89, 0xbe, 0x66, 0xe2, 0x88, 0xbe, 0x67, 0xe1, - 0x89, 0xbe, 0x68, 0xe2, 0x88, 0xbe, 0x68, 0xe1, 0x89, 0xbe, 0x69, 0xe2, - 0x88, 0xbe, 0x6a, 0xe1, 0x89, 0xbe, 0x6a, 0xe2, 0x88, 0xbe, 0x6b, 0xe1, - 0x89, 0xbe, 0x6c, 0xe2, 0x88, 0xbe, 0x6c, 0xe1, 0x89, 0xbe, 0x6d, 0xe2, - 0x88, 0xbe, 0x6e, 0xe1, 0x89, 0xbe, 0x6e, 0xe2, 0x88, 0xbe, 0x6f, 0xe1, - 0x89, 0xbe, 0x70, 0xe2, 0x88, 0xbe, 0x70, 0xe1, 0x89, 0xbe, 0x71, 0xe2, - 0x88, 0xbe, 0x72, 0xe1, 0x89, 0xbe, 0x72, 0xe2, 0x88, 0xbe, 0x73, 0xe1, - 0x89, 0xbe, 0x73, 0xe2, 0x88, 0xbe, 0x74, 0xe1, 0x89, 0xbe, 0x75, 0xe2, - 0x88, 0xbe, 0x75, 0xe1, 0x89, 0xbe, 0x76, 0xe2, 0x88, 0xbe, 0x76, 0xe1, - 0x89, 0xbe, 0x77, 0xe2, 0x88, 0xbe, 0x78, 0xe1, 0x89, 0xbe, 0x78, 0xe2, - 0x88, 0xbe, 0x79, 0xe1, 0x89, 0xbe, 0x79, 0xe2, 0x88, 0xbe, 0x7a, 0xe1, - 0x89, 0xbe, 0x7a, 0xe2, 0x88, 0xbe, 0x7b, 0xe1, 0x89, 0xbe, 0x7c, 0xe0, - 0x89, 0xbe, 0x7c, 0xe1, 0x89, 0xbe, 0x7d, 0xe0, 0x89, 0xbe, 0x7d, 0xe1, - 0x89, 0xbe, 0x7e, 0xe0, 0x89, 0xbe, 0x7e, 0xe1, 0x89, 0xbe, 0x7f, 0xe0, - 0x89, 0xbe, 0x7f, 0xe1, 0x89, 0xbe, 0x80, 0xe0, 0x89, 0xbe, 0x81, 0xe1, - 0x89, 0xbe, 0x81, 0xe0, 0x89, 0xbe, 0x82, 0xe1, 0x89, 0xbe, 0x82, 0xe0, - 0x89, 0xbe, 0x83, 0xe1, 0x89, 0xbe, 0x83, 0xe0, 0x89, 0xbe, 0x84, 0xe1, - 0x89, 0xbe, 0x84, 0xe0, 0x89, 0xbe, 0x85, 0xe1, 0x89, 0xbe, 0x85, 0xe0, - 0x89, 0xbe, 0x86, 0xe0, 0x89, 0xbe, 0x86, 0xe0, 0x89, 0xbe, 0x87, 0xe0, - 0x89, 0xbe, 0x87, 0xe0, 0x89, 0xbe, 0x88, 0xe0, 0x89, 0xbe, 0x88, 0xe0, - 0x89, 0xbe, 0x89, 0xe0, 0x8a, 0xbe, 0x88, 0xe0, 0x89, 0xbe, 0x89, 0xe0, - 0x8a, 0xbe, 0x88, 0xe0, 0x8a, 0xbe, 0x89, 0xe0, 0x8b, 0xbe, 0x89, 0xe0, - 0x8b, 0xbc, 0x89, 0xe0, 0x8c, 0xbe, 0x89, 0xe0, 0x8c, 0xbc, 0x89, 0xe0, - 0x8d, 0xbe, 0x89, 0xe0, 0x8d, 0xbc, 0x89, 0xe0, 0x8e, 0xbe, 0x89, 0xe0, - 0x8e, 0xbc, 0x89, 0xe0, 0x8e, 0xbe, 0x89, 0xe0, 0x8f, 0xbc, 0x89, 0xe0, - 0x8f, 0xbe, 0x89, 0xe0, 0x90, 0xbc, 0x89, 0xe0, 0x90, 0xbe, 0x89, 0xe0, - 0x91, 0xbc, 0x89, 0xe0, 0x91, 0xbe, 0x89, 0xe0, 0x92, 0xbc, 0x89, 0xe0, - 0x92, 0xbe, 0x89, 0xe0, 0x93, 0xbc, 0x89, 0xe0, 0x93, 0xbe, 0x89, 0xe0, - 0x94, 0xbc, 0x89, 0xe0, 0x94, 0xbe, 0x89, 0xe0, 0x94, 0xbc, 0x89, 0xe0, - 0x95, 0xbe, 0x89, 0xe0, 0x95, 0xbc, 0x89, 0xe0, 0x96, 0xbe, 0x89, 0xe0, - 0x96, 0xbc, 0x89, 0xe0, 0x97, 0xbe, 0x89, 0xe0, 0x97, 0xbc, 0x89, 0xe0, - 0x98, 0xbe, 0x89, 0xe0, 0x98, 0xbc, 0x89, 0xe0, 0x98, 0xbe, 0x89, 0xe0, - 0x99, 0xbc, 0x89, 0xe0, 0x99, 0xbe, 0x89, 0xe0, 0x9a, 0xbc, 0x8a, 0xe0, - 0x9a, 0xb8, 0x89, 0xe0, 0x9a, 0xbc, 0x8a, 0xe0, 0x9b, 0xb8, 0x89, 0xe0, - 0x9b, 0xbc, 0x8a, 0xe0, 0x9c, 0xb8, 0x89, 0xe0, 0x9c, 0xbc, 0x8a, 0xe0, - 0x9d, 0xb8, 0x89, 0xe0, 0x9d, 0xbc, 0x8a, 0xe0, 0x9d, 0xb8, 0x89, 0xe0, - 0x9e, 0xbc, 0x8a, 0xe0, 0x9e, 0xb8, 0x89, 0xe0, 0x9f, 0xbc, 0x8a, 0xe0, - 0x9f, 0xb8, 0x89, 0xe0, 0x9f, 0xbc, 0x8a, 0xe0, 0xa0, 0xb8, 0x89, 0xe0, - 0xa0, 0xbc, 0x8a, 0xe0, 0xa1, 0xb8, 0x89, 0xe0, 0xa1, 0xbc, 0x8a, 0xe0, - 0xa1, 0xb8, 0x89, 0xe0, 0xa2, 0xbc, 0x8a, 0xe0, 0xa2, 0xb8, 0x89, 0xe0, - 0xa3, 0xbc, 0x8a, 0xe0, 0xa3, 0xb8, 0x89, 0xe0, 0xa3, 0xbc, 0x8a, 0xe0, - 0xa4, 0xb8, 0x89, 0xe0, 0xa4, 0xbc, 0x8a, 0xe0, 0xa5, 0xb8, 0x89, 0xe0, - 0xa5, 0xbc, 0x8a, 0xe0, 0xa5, 0xb8, 0x89, 0xe0, 0xa6, 0xbc, 0x8a, 0xe0, - 0xa6, 0xb8, 0x89, 0xe0, 0xa6, 0xbc, 0x8a, 0xe0, 0xa7, 0xb8, 0x89, 0xe0, - 0xa7, 0xbc, 0x8a, 0xe0, 0xa8, 0xb8, 0x89, 0xe0, 0xa8, 0xbc, 0x8a, 0xe0, - 0xa8, 0xb8, 0x89, 0xe0, 0xa9, 0xbc, 0x8a, 0xe0, 0xa9, 0xb8, 0x89, 0xe0, - 0xaa, 0xbc, 0x8a, 0xe0, 0xaa, 0xb8, 0x8a, 0xe0, 0xaa, 0xb5, 0xa3, 0xe0, - 0xab, 0x98, 0x8a, 0xe0, 0xab, 0xb5, 0xa3, 0xe0, 0xab, 0x98, 0xa3, 0xe0, - 0xac, 0x97, 0xa3, 0xe0, 0xac, 0x98, 0xa3, 0xe0, 0xac, 0x97, 0xa3, 0xe0, - 0xad, 0x98, 0xa3, 0xe0, 0xad, 0x97, 0xa3, 0xe0, 0xae, 0x98, 0xa3, 0xe0, - 0xae, 0x97, 0xa3, 0xe0, 0xae, 0x98, 0xa3, 0xe0, 0xaf, 0x97, 0xa3, 0xe0, - 0xaf, 0x98, 0xa3, 0xe0, 0xaf, 0x97, 0xa3, 0xe0, 0xb0, 0x98, 0xa3, 0xe0, - 0xb0, 0x97, 0xa3, 0xe0, 0xb0, 0x98, 0xa3, 0xe0, 0xb1, 0x97, 0xa3, 0xe0, - 0xb1, 0x98, 0xa3, 0xe0, 0xb2, 0x97, 0xa3, 0xe0, 0xb2, 0x98, 0xa3, 0xe0, - 0xb2, 0x97, 0xa3, 0xe0, 0xb3, 0x98, 0xa3, 0xe0, 0xb3, 0x97, 0xa3, 0xe0, - 0xb3, 0x98, 0xcf, 0xe0, 0xb4, 0xc5, 0xce, 0xe0, 0xb4, 0xc7, 0xcf, 0xe0, - 0xb4, 0xc5, 0xce, 0xe0, 0xb5, 0xc7, 0xcf, 0xe0, 0xb5, 0xc5, 0xce, 0xe0, - 0xb5, 0xc7, 0xcf, 0xe0, 0xb6, 0xc5, 0xce, 0xe0, 0xb6, 0xc7, 0xcf, 0xe0, - 0xb6, 0xc5, 0xce, 0xe0, 0xb7, 0xc7, 0xcf, 0xe0, 0xb7, 0xc5, 0xcf, 0xe0, - 0xb7, 0xc2, 0xcf, 0xe0, 0xb8, 0xc5, 0xcf, 0xe0, 0xb8, 0xc2, 0xcf, 0xe0, - 0xb8, 0xc5, 0xcf, 0xe0, 0xb9, 0xc2, 0xcf, 0xe0, 0xb9, 0xc5, 0xcf, 0xe0, - 0xb9, 0xc2, 0xcf, 0xe0, 0xba, 0xc5, 0xcf, 0xe0, 0xba, 0xc2, 0xcf, 0xe0, - 0xba, 0xc5, 0xcf, 0xe0, 0xbb, 0xc2, 0xcf, 0xe0, 0xbb, 0xc5, 0xcf, 0xe0, - 0xbb, 0xc2, 0xcf, 0xe0, 0xbc, 0xc5, 0xcf, 0xe0, 0xbc, 0xc2, 0xcf, 0xe0, - 0xbc, 0xc5, 0xcf, 0xe0, 0xbd, 0xc2, 0xcf, 0xe0, 0xbd, 0xbf, 0xcf, 0xe0, - 0xbd, 0xc2, 0xcf, 0xe0, 0xbe, 0xbf, 0xcf, 0xe0, 0xbe, 0xc2, 0xcf, 0xe0, - 0xbe, 0xbf, 0xcf, 0xe0, 0xbf, 0xc2, 0xcf, 0xe0, 0xbf, 0xbf, 0xcf, 0xe0, - 0xbf, 0xc2, 0xcf, 0xe0, 0xc0, 0xbf, 0xcf, 0xe0, 0xc0, 0xc2, 0xcf, 0xe0, - 0xc0, 0xbf, 0xcf, 0xe0, 0xc1, 0xc2, 0xcf, 0xe0, 0xc1, 0xbf, 0xcf, 0xe0, - 0xc1, 0xc2, 0xcf, 0xe0, 0xc1, 0xbf, 0xcf, 0xe0, 0xc2, 0xc2, 0xcf, 0xe0, - 0xc2, 0xbf, 0xcf, 0xe0, 0xc2, 0xc2, 0xcf, 0xe0, 0xc3, 0xbf, 0xcf, 0xe0, - 0xc3, 0xc2, 0xcf, 0xe0, 0xc3, 0xbf, 0xcf, 0xe0, 0xc4, 0xc2, 0xcf, 0xe0, - 0xc4, 0xbf, 0xcf, 0xe0, 0xc4, 0xc2, 0xcf, 0xe0, 0xc5, 0xbf, 0xcf, 0xe0, - 0xc5, 0xc2, 0xcf, 0xe0, 0xc5, 0xbf, 0xcf, 0xe0, 0xc6, 0xc2, 0xcf, 0xe0, - 0xc6, 0xbf, 0xcf, 0xe0, 0xc6, 0xc2, 0xcf, 0xe0, 0xc6, 0xbf, 0xcf, 0xe0, - 0xc7, 0xc2, 0xcf, 0xe0, 0xc7, 0xbf, 0xcf, 0xe0, 0xc7, 0xc2, 0xcf, 0xe0, - 0xc8, 0xbf, 0xcf, 0xe0, 0xc8, 0xc2, 0xcf, 0xe0, 0xc8, 0xbf, 0xd0, 0xe0, - 0xc9, 0xbe, 0xcf, 0xe0, 0xc9, 0xbf, 0xd0, 0xe0, 0xc9, 0xbe, 0xcf, 0xe0, - 0xc9, 0xbf, 0xd0, 0xe0, 0xca, 0xbe, 0xcf, 0xe0, 0xca, 0xbf, 0xd0, 0xe0, - 0xca, 0xbe, 0xcf, 0xe0, 0xcb, 0xbf, 0xd0, 0xe0, 0xcb, 0xbe, 0xcf, 0xe0, - 0xcb, 0xbf, 0xd0, 0xe0, 0xcc, 0xbe, 0xcf, 0xe0, 0xcc, 0xbf, 0xd0, 0xe0, - 0xcc, 0xbe, 0xcf, 0xe0, 0xcc, 0xbf, 0xd0, 0xe0, 0xcd, 0xbe, 0xcf, 0xe0, - 0xcd, 0xbf, 0xd0, 0xe0, 0xcd, 0xbe, 0xcf, 0xe0, 0xce, 0xbf, 0xd0, 0xe0, - 0xce, 0xbe, 0xcf, 0xe0, 0xce, 0xbf, 0xd0, 0xe0, 0xce, 0xbe, 0xd0, 0xe0, - 0xcf, 0xbe, 0xd0, 0xe0, 0xcf, 0xbe, 0xd0, 0xe0, 0xcf, 0xbe, 0xd0, 0xdf, - 0xd0, 0xbe, 0xd0, 0xe0, 0xcf, 0xbe, 0xd0, 0xdf, 0xd0, 0xbe, 0xd0, 0xe0, - 0xcf, 0xbe, 0xd1, 0xdf, 0xd0, 0xbe, 0xd1, 0xe0, 0xcf, 0xbe, 0xd1, 0xdf, - 0xd0, 0xbe, 0xd2, 0xe0, 0xcf, 0xbe, 0xd2, 0xdf, 0xd0, 0xbe, 0xd2, 0xe0, - 0xcf, 0xbe, 0xd2, 0xdf, 0xd0, 0xbe, 0xd3, 0xe0, 0xcf, 0xbe, 0xd3, 0xdf, - 0xd0, 0xbe, 0xd3, 0xe0, 0xcf, 0xbe, 0xd4, 0xdf, 0xd0, 0xbe, 0xd4, 0xe0, - 0xcf, 0xbe, 0xd4, 0xdf, 0xd0, 0xbe, 0xd4, 0xde, 0xd0, 0xbe, 0xd5, 0xdf, - 0xd0, 0xbe, 0xd5, 0xde, 0xd0, 0xbe, 0xd5, 0xdf, 0xd0, 0xbe, 0xd6, 0xde, - 0xd0, 0xbe, 0xd6, 0xdf, 0xd0, 0xbe, 0xd6, 0xde, 0xd0, 0xbe, 0xd6, 0xdf, - 0xd0, 0xbe, 0xd7, 0xde, 0xd0, 0xbe, 0xd7, 0xdf, 0xd0, 0xbe, 0xd7, 0xde, - 0xd0, 0xbe, 0xd7, 0xdf, 0xd0, 0xbe, 0xd8, 0xde, 0xd0, 0xbe, 0xd8, 0xdf, - 0xd0, 0xbe, 0xd8, 0xde, 0xd0, 0xbe, 0xd9, 0xdf, 0xd0, 0xbe, 0xd9, 0xde, - 0xd0, 0xbe, 0xd9, 0xdf, 0xd0, 0xbe, 0xd9, 0xde, 0xd0, 0xbe, 0xda, 0xdf, - 0xd0, 0xbe, 0xda, 0xde, 0xd0, 0xbe, 0xda, 0xdf, 0xd0, 0xbe, 0xda, 0xde, - 0xd0, 0xbe, 0xdb, 0xdf, 0xd0, 0xbe, 0xdb, 0xde, 0xd0, 0xbe, 0xdb, 0xdf, - 0xd0, 0xbe, 0xdb, 0xde, 0xd0, 0xbe, 0xdc, 0xdf, 0xd0, 0xbe, 0xdc, 0xde, - 0xd0, 0xbe, 0xdc, 0xe2, 0xe8, 0xbe, 0xdd, 0xe0, 0xe8, 0xbe, 0xdd, 0xe2, - 0xe8, 0xbe, 0xdd, 0xe0, 0xe8, 0xbe, 0xdd, 0xe2, 0xe8, 0xbe, 0xde, 0xe0, - 0xe8, 0xbe, 0xde, 0xe2, 0xe8, 0xbe, 0xde, 0xe0, 0xe8, 0xbe, 0xde, 0xe2, - 0xe8, 0xbe, 0xdf, 0xe0, 0xe8, 0xbe, 0xdf, 0xe2, 0xe8, 0xbe, 0xdf, 0xe0, - 0xe8, 0xbe, 0xdf, 0xe2, 0xe8, 0xbe, 0xe0, 0xe0, 0xe8, 0xbe, 0xe0, 0xe2, - 0xe8, 0xbe, 0xe0, 0xe0, 0xe8, 0xbe, 0xe1, 0xe2, 0xe8, 0xbe, 0xe1, 0xe0, - 0xe8, 0xbe, 0xe1, 0xe2, 0xe8, 0xbe, 0xe1, 0xe0, 0xe8, 0xbe, 0xe2, 0xe2, - 0xe8, 0xbe, 0xe2, 0xe0, 0xe8, 0xbe, 0xe2, 0xe2, 0xe8, 0xbe, 0xe2, 0xe0, - 0xe8, 0xbe, 0xe3, 0xe2, 0xe8, 0xbe, 0xe3, 0xe0, 0xe8, 0xbe, 0xe3, 0xe2, - 0xe8, 0xbe, 0xe3, 0xe0, 0xe8, 0xbe, 0xe4, 0xe2, 0xe8, 0xbe, 0xe4, 0xe0, - 0xe8, 0xbe, 0xe4, 0xe0, 0xe8, 0xbe, 0xe4, 0xe0, 0xe8, 0xbe, 0xe5, 0xe0, - 0xe8, 0xbe, 0xe5, 0xe0, 0xe8, 0xbe, 0xe5, 0xe0, 0xe8, 0xbe, 0xe5, 0xe0, - 0xe8, 0xbe, 0xe6, 0xe0, 0xe8, 0xbe, 0xe6, 0xe0, 0xe8, 0xbe, 0xe6, 0xe0, - 0xe8, 0xbe, 0xe6, 0xe0, 0xe8, 0xbe, 0xe7, 0xe0, 0xe8, 0xbe, 0xe7, 0xe0, - 0xe8, 0xbe, 0xe7, 0xe0, 0xe8, 0xbe, 0xe7, 0xe0, 0xe8, 0xbe, 0xe8, 0xe0, - 0xe8, 0xbe, 0xe8, 0xe0, 0xe8, 0xbe, 0xe8, 0xe0, 0xe8, 0xbe, 0xe8, 0xe0, - 0xe8, 0xbe, 0xe8, 0xe0, 0xe9, 0xbe, 0xe8, 0xe0, 0xe9, 0xbe, 0xe8, 0xe0, - 0xe9, 0xbc, 0xe8, 0xe0, 0xe9, 0xbe, 0xe8, 0xe0, 0xea, 0xbc, 0xe8, 0xe0, - 0xea, 0xbe, 0xec, 0xe0, 0xea, 0xbe, 0xec, 0xe0, 0xea, 0xbe, 0xec, 0xe0, - 0xeb, 0xbe, 0xec, 0xe0, 0xeb, 0xbe, 0xec, 0xe0, 0xeb, 0xbe, 0xec, 0xe0, - 0xeb, 0xbe, 0xec, 0xdf, 0xec, 0xbe, 0xec, 0xe0, 0xeb, 0xbe, 0xec, 0xdf, - 0xec, 0xbe, 0xec, 0xe0, 0xeb, 0xbe, 0xec, 0xdf, 0xec, 0xbe, 0xed, 0xe0, - 0xeb, 0xbe, 0xed, 0xdf, 0xec, 0xbe, 0xed, 0xe0, 0xeb, 0xbe, 0xed, 0xdf, - 0xec, 0xbe, 0xee, 0xe0, 0xeb, 0xbe, 0xee, 0xdf, 0xec, 0xbe, 0xee, 0xe0, - 0xeb, 0xbe, 0xee, 0xdf, 0xec, 0xbe, 0xef, 0xe0, 0xeb, 0xbe, 0xef, 0xdf, - 0xec, 0xbe, 0xef, 0xe0, 0xeb, 0xbe, 0xef, 0xdf, 0xec, 0xbe, 0xf0, 0xde, - 0xec, 0xbe, 0xf0, 0xdf, 0xec, 0xbe, 0xf0, 0xde, 0xec, 0xbe, 0xf0, 0xdf, - 0xec, 0xbe, 0xf1, 0xde, 0xec, 0xbe, 0xf1, 0xdf, 0xec, 0xbe, 0xf1, 0xde, - 0xec, 0xbe, 0xf1, 0xdf, 0xec, 0xbe, 0xf2, 0xde, 0xec, 0xbe, 0xf2, 0xdf, - 0xec, 0xbe, 0xf2, 0xde, 0xec, 0xbe, 0xf2, 0xdf, 0xec, 0xbe, 0xf2, 0xde, - 0xec, 0xbe, 0xf3, 0xdf, 0xec, 0xbe, 0xf3, 0xde, 0xec, 0xbe, 0xf3, 0xdf, - 0xec, 0xbe, 0xf3, 0xde, 0xec, 0xbe, 0xf4, 0xdf, 0xec, 0xbe, 0xf4, 0xde, - 0xec, 0xbe, 0xf4, 0xdf, 0xec, 0xbe, 0xf4, 0xde, 0xec, 0xbe, 0xf5, 0xdf, - 0xec, 0xbe, 0xf5, 0xde, 0xec, 0xbe, 0xf5, 0xdf, 0xec, 0xbe, 0xf5, 0xde, - 0xec, 0xbe, 0xf5, 0xdf, 0xec, 0xbe, 0xf6, 0xde, 0xec, 0xbe, 0xf6, 0xdf, - 0xec, 0xbe, 0xf6, 0xde, 0xec, 0xbe, 0xf6, 0xdf, 0xec, 0xbe, 0xf7, 0xde, - 0xec, 0xbe, 0xf7, 0xdf, 0xec, 0xbe, 0xf7, 0xde, 0xec, 0xbe, 0xf7, 0xdf, - 0xec, 0xbe, 0xf8, 0xde, 0xec, 0xbe, 0xf8, 0xdf, 0xec, 0xbe, 0xf8, 0xde, - 0xec, 0xbe, 0xf8, 0xdf, 0xec, 0xbe, 0xf8, 0xde, 0xec, 0xbe, 0xf9, 0xdf, - 0xec, 0xbe, 0xf9, 0xde, 0xec, 0xbe, 0xf9, 0xdf, 0xec, 0xbe, 0xf9, 0xde, - 0xec, 0xbe, 0xfa, 0xdf, 0xec, 0xbe, 0xfa, 0xde, 0xec, 0xbe, 0xfa, 0xdf, - 0xec, 0xbe, 0xfa, 0xde, 0xec, 0xbe, 0xfa, 0xdf, 0xec, 0xbe, 0xfb, 0xde, - 0xec, 0xbe, 0xfb, 0xec, 0xf1, 0xbe, 0xfb, 0xde, 0xec, 0xbe, 0xfb, 0xec, - 0xf1, 0xbe, 0xfc, 0xec, 0xf1, 0xbe, 0xfc, 0xec, 0xf1, 0xbe, 0xfc, 0xec, - 0xf1, 0xbe, 0xfc, 0xec, 0xf1, 0xbe, 0xfc, 0xec, 0xf1, 0xbe, 0xfd, 0xec, - 0xf1, 0xbe, 0xfd, 0xec, 0xf1, 0xbe, 0xfd, 0xec, 0xf1, 0xbe, 0xfd, 0xec, - 0xf1, 0xbe, 0xfe, 0xec, 0xf1, 0xbe, 0xfe, 0xec, 0xf1, 0xbe, 0xfe, 0xec, - 0xf1, 0xbe, 0xfe, 0xec, 0xf1, 0xbe, 0xfe, 0xec, 0xf1, 0xbe, 0xff, 0xec, - 0xf1, 0xbe, 0xff, 0xec, 0xf1, 0xbe, 0x03, 0xe6, 0x87, 0xbe, 0x0a, 0xe6, - 0x87, 0xbe, 0x0f, 0xe6, 0x87, 0xbe, 0x14, 0xe4, 0x88, 0xbe, 0x17, 0xe6, - 0x87, 0xbe, 0x1b, 0xe4, 0x88, 0xbe, 0x1e, 0xe6, 0x87, 0xbe, 0x20, 0xe4, - 0x88, 0xbe, 0x23, 0xe6, 0x87, 0xbe, 0x25, 0xe4, 0x88, 0xbe, 0x27, 0xe6, - 0x87, 0xbe, 0x29, 0xe4, 0x88, 0xbe, 0x2b, 0xe6, 0x87, 0xbe, 0x2d, 0xe4, - 0x88, 0xbe, 0x2f, 0xe6, 0x87, 0xbe, 0x31, 0xe4, 0x88, 0xbe, 0x32, 0xe6, - 0x87, 0xbe, 0x34, 0xe4, 0x88, 0xbe, 0x35, 0xe6, 0x87, 0xbe, 0x37, 0xe4, - 0x88, 0xbe, 0x38, 0xe6, 0x87, 0xbe, 0x3a, 0xe4, 0x88, 0xbe, 0x3b, 0xe6, - 0x87, 0xbe, 0x3c, 0xe4, 0x88, 0xbe, 0x3e, 0xe6, 0x87, 0xbe, 0x3f, 0xe4, - 0x88, 0xbe, 0x40, 0xe6, 0x87, 0xbe, 0x42, 0xe4, 0x88, 0xbe, 0x43, 0xe6, - 0x87, 0xbe, 0x44, 0xe4, 0x88, 0xbe, 0x45, 0xe3, 0x88, 0xbe, 0x46, 0xe4, - 0x88, 0xbe, 0x47, 0xe3, 0x88, 0xbe, 0x48, 0xe4, 0x88, 0xbe, 0x49, 0xe3, - 0x88, 0xbe, 0x4a, 0xe4, 0x88, 0xbe, 0x4b, 0xe3, 0x88, 0xbe, 0x4c, 0xe4, - 0x88, 0xbe, 0x4d, 0xe3, 0x88, 0xbe, 0x4e, 0xe4, 0x88, 0xbe, 0x4f, 0xe3, - 0x88, 0xbe, 0x50, 0xe4, 0x88, 0xbe, 0x51, 0xe3, 0x88, 0xbe, 0x52, 0xe4, - 0x88, 0xbe, 0x53, 0xe3, 0x88, 0xbe, 0x54, 0xe4, 0x88, 0xbe, 0x55, 0xe3, - 0x88, 0xbe, 0x56, 0xe4, 0x88, 0xbe, 0x57, 0xe3, 0x88, 0xbe, 0x58, 0xe4, - 0x88, 0xbe, 0x58, 0xe3, 0x88, 0xbe, 0x59, 0xe4, 0x88, 0xbe, 0x5a, 0xe3, - 0x88, 0xbe, 0x5b, 0xe4, 0x88, 0xbe, 0x5c, 0xe3, 0x88, 0xbe, 0x5d, 0xe4, - 0x88, 0xbe, 0x5d, 0xe3, 0x88, 0xbe, 0x5e, 0xe4, 0x88, 0xbe, 0x5f, 0xe3, - 0x88, 0xbe, 0x60, 0xe4, 0x88, 0xbe, 0x60, 0xe3, 0x88, 0xbe, 0x61, 0xe4, - 0x88, 0xbe, 0x62, 0xe3, 0x88, 0xbe, 0x63, 0xe1, 0x89, 0xbe, 0x63, 0xe3, - 0x88, 0xbe, 0x64, 0xe1, 0x89, 0xbe, 0x65, 0xe3, 0x88, 0xbe, 0x66, 0xe1, - 0x89, 0xbe, 0x66, 0xe3, 0x88, 0xbe, 0x67, 0xe1, 0x89, 0xbe, 0x68, 0xe3, - 0x88, 0xbe, 0x68, 0xe1, 0x89, 0xbe, 0x69, 0xe3, 0x88, 0xbe, 0x6a, 0xe1, - 0x89, 0xbe, 0x6a, 0xe3, 0x88, 0xbe, 0x6b, 0xe1, 0x89, 0xbe, 0x6c, 0xe3, - 0x88, 0xbe, 0x6c, 0xe1, 0x89, 0xbe, 0x6d, 0xe3, 0x88, 0xbe, 0x6e, 0xe1, - 0x89, 0xbe, 0x6e, 0xe3, 0x88, 0xbe, 0x6f, 0xe1, 0x89, 0xbe, 0x70, 0xe3, - 0x88, 0xbe, 0x70, 0xe1, 0x89, 0xbe, 0x71, 0xe3, 0x88, 0xbe, 0x72, 0xe1, - 0x89, 0xbe, 0x72, 0xe3, 0x88, 0xbe, 0x73, 0xe1, 0x89, 0xbe, 0x73, 0xe3, - 0x88, 0xbe, 0x74, 0xe1, 0x89, 0xbe, 0x75, 0xe3, 0x88, 0xbe, 0x75, 0xe1, - 0x89, 0xbe, 0x76, 0xe3, 0x88, 0xbe, 0x76, 0xe1, 0x89, 0xbe, 0x77, 0xe3, - 0x88, 0xbe, 0x78, 0xe1, 0x89, 0xbe, 0x78, 0xe3, 0x88, 0xbe, 0x79, 0xe1, - 0x89, 0xbe, 0x79, 0xe3, 0x88, 0xbe, 0x7a, 0xe1, 0x89, 0xbe, 0x7a, 0xe3, - 0x88, 0xbe, 0x7b, 0xe1, 0x89, 0xbe, 0x7c, 0xe0, 0x89, 0xbe, 0x7c, 0xe1, - 0x89, 0xbe, 0x7d, 0xe0, 0x89, 0xbe, 0x7d, 0xe1, 0x89, 0xbe, 0x7e, 0xe0, - 0x89, 0xbe, 0x7e, 0xe1, 0x89, 0xbe, 0x7f, 0xe0, 0x89, 0xbe, 0x7f, 0xe1, - 0x89, 0xbe, 0x80, 0xe0, 0x89, 0xbe, 0x81, 0xe1, 0x89, 0xbe, 0x81, 0xe0, - 0x89, 0xbe, 0x82, 0xe1, 0x89, 0xbe, 0x82, 0xe0, 0x89, 0xbe, 0x83, 0xe1, - 0x89, 0xbe, 0x83, 0xe0, 0x89, 0xbe, 0x84, 0xe1, 0x89, 0xbe, 0x84, 0xe0, - 0x89, 0xbe, 0x85, 0xe1, 0x89, 0xbe, 0x85, 0xe0, 0x89, 0xbe, 0x86, 0xe1, - 0x89, 0xbe, 0x86, 0xe0, 0x89, 0xbe, 0x87, 0xe1, 0x89, 0xbe, 0x87, 0xe0, - 0x89, 0xbe, 0x88, 0xe1, 0x89, 0xbe, 0x88, 0xe0, 0x89, 0xbe, 0x89, 0xe1, - 0x89, 0xbe, 0x88, 0xe0, 0x89, 0xbe, 0x89, 0xe0, 0x8a, 0xbe, 0x88, 0xe0, - 0x8a, 0xbe, 0x89, 0xe0, 0x8b, 0xbe, 0x88, 0xe0, 0x8b, 0xbe, 0x89, 0xe0, - 0x8c, 0xbe, 0x88, 0xe0, 0x8c, 0xbe, 0x89, 0xe0, 0x8d, 0xbe, 0x89, 0xe0, - 0x8d, 0xbb, 0x89, 0xe0, 0x8e, 0xbe, 0x89, 0xe0, 0x8e, 0xbb, 0x89, 0xe0, - 0x8e, 0xbe, 0x89, 0xe0, 0x8f, 0xbb, 0x89, 0xe0, 0x8f, 0xbe, 0x89, 0xe0, - 0x90, 0xbb, 0x89, 0xe0, 0x90, 0xbe, 0x89, 0xe0, 0x91, 0xbb, 0x89, 0xe0, - 0x91, 0xbe, 0x89, 0xe0, 0x92, 0xbb, 0x89, 0xe0, 0x92, 0xbe, 0x89, 0xe0, - 0x93, 0xbb, 0x89, 0xe0, 0x93, 0xbe, 0x89, 0xe0, 0x94, 0xbb, 0x89, 0xe0, - 0x94, 0xbe, 0x89, 0xe0, 0x94, 0xbb, 0x89, 0xe0, 0x95, 0xbe, 0x89, 0xe0, - 0x95, 0xbb, 0x89, 0xe0, 0x96, 0xbe, 0x89, 0xe0, 0x96, 0xbb, 0x89, 0xe0, - 0x97, 0xbe, 0x89, 0xe0, 0x97, 0xbb, 0x89, 0xe0, 0x98, 0xbe, 0x89, 0xe0, - 0x98, 0xbb, 0x89, 0xe0, 0x98, 0xbe, 0x89, 0xe0, 0x99, 0xbb, 0x89, 0xe0, - 0x99, 0xbe, 0x89, 0xe0, 0x9a, 0xbb, 0x8a, 0xe0, 0x9a, 0xb8, 0x89, 0xe0, - 0x9a, 0xbb, 0x8a, 0xe0, 0x9b, 0xb8, 0x89, 0xe0, 0x9b, 0xbb, 0x8a, 0xe0, - 0x9c, 0xb8, 0x89, 0xe0, 0x9c, 0xbb, 0x8a, 0xe0, 0x9d, 0xb8, 0x89, 0xe0, - 0x9d, 0xbb, 0x8a, 0xe0, 0x9d, 0xb8, 0x89, 0xe0, 0x9e, 0xbb, 0x8a, 0xe0, - 0x9e, 0xb8, 0x89, 0xe0, 0x9f, 0xbb, 0x8a, 0xe0, 0x9f, 0xb8, 0x89, 0xe0, - 0x9f, 0xbb, 0x8a, 0xe0, 0xa0, 0xb8, 0x89, 0xe0, 0xa0, 0xbb, 0x8a, 0xe0, - 0xa1, 0xb8, 0x89, 0xe0, 0xa1, 0xbb, 0x8a, 0xe0, 0xa1, 0xb8, 0x89, 0xe0, - 0xa2, 0xbb, 0x8a, 0xe0, 0xa2, 0xb8, 0x89, 0xe0, 0xa3, 0xbb, 0x8a, 0xe0, - 0xa3, 0xb8, 0x89, 0xe0, 0xa3, 0xbb, 0x8a, 0xe0, 0xa4, 0xb8, 0x89, 0xe0, - 0xa4, 0xbb, 0x8a, 0xe0, 0xa5, 0xb8, 0x89, 0xe0, 0xa5, 0xbb, 0x8a, 0xe0, - 0xa5, 0xb8, 0x89, 0xe0, 0xa6, 0xbb, 0x8a, 0xe0, 0xa6, 0xb8, 0x89, 0xe0, - 0xa6, 0xbb, 0x8a, 0xe0, 0xa7, 0xb8, 0x89, 0xe0, 0xa7, 0xbb, 0x8a, 0xe0, - 0xa8, 0xb8, 0x89, 0xe0, 0xa8, 0xbb, 0x8a, 0xe0, 0xa8, 0xb8, 0x8a, 0xe0, - 0xa9, 0xb5, 0x8a, 0xe0, 0xa9, 0xb8, 0x8a, 0xe0, 0xaa, 0xb5, 0x8a, 0xe0, - 0xaa, 0xb8, 0x8a, 0xe0, 0xaa, 0xb5, 0x8a, 0xe0, 0xab, 0xb8, 0x8a, 0xe0, - 0xab, 0xb5, 0x8a, 0xe0, 0xab, 0xb8, 0xa3, 0xe0, 0xac, 0x97, 0xa3, 0xe0, - 0xac, 0x97, 0xa3, 0xe0, 0xac, 0x97, 0xa3, 0xe0, 0xad, 0x97, 0xa3, 0xe0, - 0xad, 0x97, 0xa3, 0xe0, 0xae, 0x97, 0xa3, 0xe0, 0xae, 0x97, 0xa3, 0xe0, - 0xae, 0x97, 0xa3, 0xe0, 0xaf, 0x97, 0xa3, 0xe0, 0xaf, 0x97, 0xa3, 0xe0, - 0xaf, 0x97, 0xa3, 0xe0, 0xb0, 0x97, 0xa3, 0xe0, 0xb0, 0x97, 0xa3, 0xe0, - 0xb0, 0x97, 0xa3, 0xe0, 0xb1, 0x97, 0xa3, 0xe0, 0xb1, 0x97, 0xa3, 0xe0, - 0xb2, 0x97, 0xa3, 0xe0, 0xb2, 0x97, 0xa3, 0xe0, 0xb2, 0x97, 0xa3, 0xe0, - 0xb3, 0x97, 0xa3, 0xe0, 0xb3, 0x97, 0xce, 0xe0, 0xb3, 0xc8, 0xcf, 0xe0, - 0xb4, 0xc5, 0xce, 0xe0, 0xb4, 0xc8, 0xcf, 0xe0, 0xb4, 0xc5, 0xce, 0xe0, - 0xb5, 0xc8, 0xcf, 0xe0, 0xb5, 0xc5, 0xce, 0xe0, 0xb5, 0xc8, 0xcf, 0xe0, - 0xb6, 0xc5, 0xce, 0xe0, 0xb6, 0xc8, 0xcf, 0xe0, 0xb6, 0xc5, 0xce, 0xe0, - 0xb7, 0xc8, 0xcf, 0xe0, 0xb7, 0xc5, 0xcf, 0xe0, 0xb7, 0xc3, 0xcf, 0xe0, - 0xb8, 0xc5, 0xcf, 0xe0, 0xb8, 0xc3, 0xcf, 0xe0, 0xb8, 0xc5, 0xcf, 0xe0, - 0xb9, 0xc3, 0xcf, 0xe0, 0xb9, 0xc5, 0xcf, 0xe0, 0xb9, 0xc3, 0xcf, 0xe0, - 0xba, 0xc5, 0xcf, 0xe0, 0xba, 0xc3, 0xcf, 0xe0, 0xba, 0xc5, 0xcf, 0xe0, - 0xbb, 0xc3, 0xcf, 0xe0, 0xbb, 0xc5, 0xcf, 0xe0, 0xbb, 0xc3, 0xcf, 0xe0, - 0xbc, 0xc5, 0xcf, 0xe0, 0xbc, 0xc3, 0xcf, 0xe0, 0xbc, 0xc5, 0xcf, 0xe0, - 0xbd, 0xc3, 0xcf, 0xe0, 0xbd, 0xc5, 0xcf, 0xe0, 0xbd, 0xc3, 0xcf, 0xe0, - 0xbe, 0xc5, 0xcf, 0xe0, 0xbe, 0xc3, 0xcf, 0xe0, 0xbe, 0xc5, 0xcf, 0xe0, - 0xbf, 0xc3, 0xcf, 0xe0, 0xbf, 0xc5, 0xcf, 0xe0, 0xbf, 0xc3, 0xcf, 0xe0, - 0xc0, 0xc5, 0xcf, 0xe0, 0xc0, 0xc3, 0xcf, 0xe0, 0xc0, 0xc5, 0xcf, 0xe0, - 0xc1, 0xc3, 0xcf, 0xe0, 0xc1, 0xc5, 0xcf, 0xe0, 0xc1, 0xc3, 0xcf, 0xe0, - 0xc1, 0xc5, 0xcf, 0xe0, 0xc2, 0xc3, 0xcf, 0xe0, 0xc2, 0xc0, 0xcf, 0xe0, - 0xc2, 0xc3, 0xcf, 0xe0, 0xc3, 0xc0, 0xcf, 0xe0, 0xc3, 0xc3, 0xcf, 0xe0, - 0xc3, 0xc0, 0xcf, 0xe0, 0xc4, 0xc3, 0xcf, 0xe0, 0xc4, 0xc0, 0xcf, 0xe0, - 0xc4, 0xc3, 0xcf, 0xe0, 0xc5, 0xc0, 0xcf, 0xe0, 0xc5, 0xc3, 0xcf, 0xe0, - 0xc5, 0xc0, 0xcf, 0xe0, 0xc6, 0xc3, 0xcf, 0xe0, 0xc6, 0xc0, 0xcf, 0xe0, - 0xc6, 0xc3, 0xcf, 0xe0, 0xc6, 0xc0, 0xcf, 0xe0, 0xc7, 0xc3, 0xcf, 0xe0, - 0xc7, 0xc0, 0xcf, 0xe0, 0xc7, 0xc3, 0xcf, 0xe0, 0xc8, 0xc0, 0xcf, 0xe0, - 0xc8, 0xc3, 0xcf, 0xe0, 0xc8, 0xc0, 0xd0, 0xe0, 0xc9, 0xbe, 0xcf, 0xe0, - 0xc9, 0xc0, 0xd0, 0xe0, 0xc9, 0xbe, 0xcf, 0xe0, 0xc9, 0xc0, 0xd0, 0xe0, - 0xca, 0xbe, 0xcf, 0xe0, 0xca, 0xc0, 0xd0, 0xe0, 0xca, 0xbe, 0xcf, 0xe0, - 0xcb, 0xc0, 0xd0, 0xe0, 0xcb, 0xbe, 0xcf, 0xe0, 0xcb, 0xc0, 0xd0, 0xe0, - 0xcc, 0xbe, 0xcf, 0xe0, 0xcc, 0xc0, 0xd0, 0xe0, 0xcc, 0xbe, 0xcf, 0xe0, - 0xcc, 0xc0, 0xd0, 0xe0, 0xcd, 0xbe, 0xcf, 0xe0, 0xcd, 0xc0, 0xd0, 0xe0, - 0xcd, 0xbe, 0xcf, 0xe0, 0xce, 0xc0, 0xd0, 0xe0, 0xce, 0xbe, 0xcf, 0xe0, - 0xce, 0xc0, 0xd0, 0xe0, 0xce, 0xbe, 0xd0, 0xe0, 0xcf, 0xbe, 0xd0, 0xe0, - 0xcf, 0xbe, 0xd0, 0xe0, 0xcf, 0xbe, 0xd0, 0xe0, 0xcf, 0xbe, 0xd0, 0xe0, - 0xcf, 0xbe, 0xd0, 0xe0, 0xcf, 0xbe, 0xd0, 0xe0, 0xcf, 0xbe, 0xd1, 0xdf, - 0xd0, 0xbe, 0xd1, 0xe0, 0xcf, 0xbe, 0xd1, 0xdf, 0xd0, 0xbe, 0xd2, 0xe0, - 0xcf, 0xbe, 0xd2, 0xdf, 0xd0, 0xbe, 0xd2, 0xe0, 0xcf, 0xbe, 0xd2, 0xdf, - 0xd0, 0xbe, 0xd3, 0xe0, 0xcf, 0xbe, 0xd3, 0xdf, 0xd0, 0xbe, 0xd3, 0xe0, - 0xcf, 0xbe, 0xd4, 0xdf, 0xd0, 0xbe, 0xd4, 0xe0, 0xcf, 0xbe, 0xd4, 0xdf, - 0xd0, 0xbe, 0xd4, 0xe0, 0xcf, 0xbe, 0xd5, 0xdf, 0xd0, 0xbe, 0xd5, 0xe0, - 0xcf, 0xbe, 0xd5, 0xdf, 0xd0, 0xbe, 0xd6, 0xe0, 0xcf, 0xbe, 0xd6, 0xdf, - 0xd0, 0xbe, 0xd6, 0xe0, 0xcf, 0xbe, 0xd6, 0xdf, 0xd0, 0xbe, 0xd7, 0xdd, - 0xd0, 0xbe, 0xd7, 0xdf, 0xd0, 0xbe, 0xd7, 0xdd, 0xd0, 0xbe, 0xd7, 0xdf, - 0xd0, 0xbe, 0xd8, 0xdd, 0xd0, 0xbe, 0xd8, 0xdf, 0xd0, 0xbe, 0xd8, 0xdd, - 0xd0, 0xbe, 0xd9, 0xdf, 0xd0, 0xbe, 0xd9, 0xdd, 0xd0, 0xbe, 0xd9, 0xdf, - 0xd0, 0xbe, 0xd9, 0xdd, 0xd0, 0xbe, 0xda, 0xdf, 0xd0, 0xbe, 0xda, 0xdd, - 0xd0, 0xbe, 0xda, 0xdf, 0xd0, 0xbe, 0xda, 0xdd, 0xd0, 0xbe, 0xdb, 0xdf, - 0xd0, 0xbe, 0xdb, 0xdd, 0xd0, 0xbe, 0xdb, 0xdf, 0xd0, 0xbe, 0xdb, 0xdd, - 0xd0, 0xbe, 0xdc, 0xdf, 0xd0, 0xbe, 0xdc, 0xdd, 0xd0, 0xbe, 0xdc, 0xe2, - 0xe8, 0xbe, 0xdd, 0xe3, 0xe7, 0xbe, 0xdd, 0xe2, 0xe8, 0xbe, 0xdd, 0xe3, - 0xe7, 0xbe, 0xdd, 0xe2, 0xe8, 0xbe, 0xde, 0xe3, 0xe7, 0xbe, 0xde, 0xe2, - 0xe8, 0xbe, 0xde, 0xe3, 0xe7, 0xbe, 0xde, 0xe2, 0xe8, 0xbe, 0xdf, 0xe1, - 0xe8, 0xbe, 0xdf, 0xe2, 0xe8, 0xbe, 0xdf, 0xe1, 0xe8, 0xbe, 0xdf, 0xe2, - 0xe8, 0xbe, 0xe0, 0xe1, 0xe8, 0xbe, 0xe0, 0xe2, 0xe8, 0xbe, 0xe0, 0xe1, - 0xe8, 0xbe, 0xe1, 0xe2, 0xe8, 0xbe, 0xe1, 0xe1, 0xe8, 0xbe, 0xe1, 0xe2, - 0xe8, 0xbe, 0xe1, 0xe1, 0xe8, 0xbe, 0xe2, 0xe2, 0xe8, 0xbe, 0xe2, 0xe1, - 0xe8, 0xbe, 0xe2, 0xe2, 0xe8, 0xbe, 0xe2, 0xe1, 0xe8, 0xbe, 0xe3, 0xe2, - 0xe8, 0xbe, 0xe3, 0xe1, 0xe8, 0xbe, 0xe3, 0xe2, 0xe8, 0xbe, 0xe3, 0xe1, - 0xe8, 0xbe, 0xe4, 0xe2, 0xe8, 0xbe, 0xe4, 0xe1, 0xe8, 0xbe, 0xe4, 0xe0, - 0xe8, 0xbe, 0xe4, 0xe1, 0xe8, 0xbe, 0xe5, 0xe0, 0xe8, 0xbe, 0xe5, 0xe1, - 0xe8, 0xbe, 0xe5, 0xe0, 0xe8, 0xbe, 0xe5, 0xe1, 0xe8, 0xbe, 0xe6, 0xe0, - 0xe8, 0xbe, 0xe6, 0xe1, 0xe8, 0xbe, 0xe6, 0xe0, 0xe8, 0xbe, 0xe6, 0xe1, - 0xe8, 0xbe, 0xe7, 0xe0, 0xe8, 0xbe, 0xe7, 0xe1, 0xe8, 0xbe, 0xe7, 0xe0, - 0xe8, 0xbe, 0xe7, 0xe1, 0xe8, 0xbe, 0xe8, 0xe0, 0xe8, 0xbe, 0xe8, 0xe1, - 0xe8, 0xbe, 0xe8, 0xe0, 0xe8, 0xbe, 0xe8, 0xe0, 0xe8, 0xbe, 0xe8, 0xe0, - 0xe9, 0xbe, 0xe8, 0xe0, 0xe9, 0xbe, 0xe8, 0xe0, 0xe9, 0xbe, 0xe8, 0xe0, - 0xe9, 0xbe, 0xe8, 0xe0, 0xea, 0xbe, 0xe8, 0xe0, 0xea, 0xbe, 0xec, 0xe0, - 0xea, 0xbe, 0xec, 0xe0, 0xea, 0xbe, 0xec, 0xe0, 0xeb, 0xbe, 0xec, 0xe0, - 0xeb, 0xbe, 0xec, 0xe0, 0xeb, 0xbe, 0xec, 0xe0, 0xeb, 0xbe, 0xec, 0xdf, - 0xec, 0xbe, 0xec, 0xe0, 0xeb, 0xbe, 0xec, 0xdf, 0xec, 0xbe, 0xec, 0xe0, - 0xeb, 0xbe, 0xec, 0xdf, 0xec, 0xbe, 0xed, 0xe0, 0xeb, 0xbe, 0xed, 0xdf, - 0xec, 0xbe, 0xed, 0xe0, 0xeb, 0xbe, 0xed, 0xdf, 0xec, 0xbe, 0xee, 0xe0, - 0xeb, 0xbe, 0xee, 0xdf, 0xec, 0xbe, 0xee, 0xe0, 0xeb, 0xbe, 0xee, 0xdf, - 0xec, 0xbe, 0xef, 0xe0, 0xeb, 0xbe, 0xef, 0xdf, 0xec, 0xbe, 0xef, 0xe0, - 0xeb, 0xbe, 0xef, 0xdf, 0xec, 0xbe, 0xf0, 0xe0, 0xeb, 0xbe, 0xf0, 0xdf, - 0xec, 0xbe, 0xf0, 0xe0, 0xeb, 0xbe, 0xf0, 0xdf, 0xec, 0xbe, 0xf1, 0xe0, - 0xeb, 0xbe, 0xf1, 0xdf, 0xec, 0xbe, 0xf1, 0xe0, 0xeb, 0xbe, 0xf1, 0xdf, - 0xec, 0xbe, 0xf2, 0xdd, 0xec, 0xbe, 0xf2, 0xdf, 0xec, 0xbe, 0xf2, 0xdd, - 0xec, 0xbe, 0xf2, 0xdf, 0xec, 0xbe, 0xf2, 0xdd, 0xec, 0xbe, 0xf3, 0xdf, - 0xec, 0xbe, 0xf3, 0xdd, 0xec, 0xbe, 0xf3, 0xdf, 0xec, 0xbe, 0xf3, 0xdd, - 0xec, 0xbe, 0xf4, 0xdf, 0xec, 0xbe, 0xf4, 0xdd, 0xec, 0xbe, 0xf4, 0xdf, - 0xec, 0xbe, 0xf4, 0xdd, 0xec, 0xbe, 0xf5, 0xdf, 0xec, 0xbe, 0xf5, 0xdd, - 0xec, 0xbe, 0xf5, 0xdf, 0xec, 0xbe, 0xf5, 0xdd, 0xec, 0xbe, 0xf5, 0xdf, - 0xec, 0xbe, 0xf6, 0xdd, 0xec, 0xbe, 0xf6, 0xdf, 0xec, 0xbe, 0xf6, 0xdd, - 0xec, 0xbe, 0xf6, 0xdf, 0xec, 0xbe, 0xf7, 0xdd, 0xec, 0xbe, 0xf7, 0xdf, - 0xec, 0xbe, 0xf7, 0xdd, 0xec, 0xbe, 0xf7, 0xdf, 0xec, 0xbe, 0xf8, 0xdd, - 0xec, 0xbe, 0xf8, 0xdf, 0xec, 0xbe, 0xf8, 0xdd, 0xec, 0xbe, 0xf8, 0xdf, - 0xec, 0xbe, 0xf8, 0xdd, 0xec, 0xbe, 0xf9, 0xdf, 0xec, 0xbe, 0xf9, 0xdd, - 0xec, 0xbe, 0xf9, 0xdf, 0xec, 0xbe, 0xf9, 0xdd, 0xec, 0xbe, 0xfa, 0xec, - 0xf1, 0xbe, 0xfa, 0xdd, 0xec, 0xbe, 0xfa, 0xec, 0xf1, 0xbe, 0xfa, 0xec, - 0xf1, 0xbe, 0xfa, 0xec, 0xf1, 0xbe, 0xfb, 0xec, 0xf1, 0xbe, 0xfb, 0xec, - 0xf1, 0xbe, 0xfb, 0xec, 0xf1, 0xbe, 0xfb, 0xec, 0xf1, 0xbe, 0xfc, 0xec, - 0xf1, 0xbe, 0xfc, 0xec, 0xf1, 0xbe, 0xfc, 0xec, 0xf1, 0xbe, 0xfc, 0xec, - 0xf1, 0xbe, 0xfc, 0xec, 0xf1, 0xbe, 0xfd, 0xec, 0xf1, 0xbe, 0xfd, 0xec, - 0xf1, 0xbe, 0xfd, 0xec, 0xf1, 0xbe, 0xfd, 0xec, 0xf1, 0xbe, 0xfe, 0xec, - 0xf1, 0xbe, 0xfe, 0xec, 0xf1, 0xbe, 0xfe, 0xec, 0xf1, 0xbe, 0xfe, 0xec, - 0xf1, 0xbe, 0xfe, 0xec, 0xf1, 0xbe, 0xff, 0xec, 0xf1, 0xbe, 0xff, 0xec, - 0xf1, 0xbe, 0x03, 0xe6, 0x87, 0xbf, 0x0a, 0xe4, 0x88, 0xbf, 0x0f, 0xe6, - 0x87, 0xbf, 0x14, 0xe4, 0x88, 0xbf, 0x17, 0xe6, 0x87, 0xbf, 0x1b, 0xe4, - 0x88, 0xbf, 0x1e, 0xe6, 0x87, 0xbf, 0x20, 0xe4, 0x88, 0xbf, 0x23, 0xe6, - 0x87, 0xbf, 0x25, 0xe4, 0x88, 0xbf, 0x27, 0xe6, 0x87, 0xbf, 0x29, 0xe4, - 0x88, 0xbf, 0x2b, 0xe6, 0x87, 0xbf, 0x2d, 0xe4, 0x88, 0xbf, 0x2f, 0xe6, - 0x87, 0xbf, 0x31, 0xe4, 0x88, 0xbf, 0x32, 0xe6, 0x87, 0xbf, 0x34, 0xe4, - 0x88, 0xbf, 0x35, 0xe6, 0x87, 0xbf, 0x37, 0xe4, 0x88, 0xbf, 0x38, 0xe6, - 0x87, 0xbf, 0x3a, 0xe4, 0x88, 0xbf, 0x3b, 0xe2, 0x88, 0xbf, 0x3c, 0xe4, - 0x88, 0xbf, 0x3e, 0xe2, 0x88, 0xbf, 0x3f, 0xe4, 0x88, 0xbf, 0x40, 0xe2, - 0x88, 0xbf, 0x42, 0xe4, 0x88, 0xbf, 0x43, 0xe2, 0x88, 0xbf, 0x44, 0xe4, - 0x88, 0xbf, 0x45, 0xe2, 0x88, 0xbf, 0x46, 0xe4, 0x88, 0xbf, 0x47, 0xe2, - 0x88, 0xbf, 0x48, 0xe4, 0x88, 0xbf, 0x49, 0xe2, 0x88, 0xbf, 0x4a, 0xe4, - 0x88, 0xbf, 0x4b, 0xe2, 0x88, 0xbf, 0x4c, 0xe4, 0x88, 0xbf, 0x4d, 0xe2, - 0x88, 0xbf, 0x4e, 0xe4, 0x88, 0xbf, 0x4f, 0xe2, 0x88, 0xbf, 0x50, 0xe4, - 0x88, 0xbf, 0x51, 0xe2, 0x88, 0xbf, 0x52, 0xe4, 0x88, 0xbf, 0x53, 0xe2, - 0x88, 0xbf, 0x54, 0xe4, 0x88, 0xbf, 0x55, 0xe2, 0x88, 0xbf, 0x56, 0xe4, - 0x88, 0xbf, 0x57, 0xe2, 0x88, 0xbf, 0x58, 0xe4, 0x88, 0xbf, 0x58, 0xe2, - 0x88, 0xbf, 0x59, 0xe4, 0x88, 0xbf, 0x5a, 0xe2, 0x88, 0xbf, 0x5b, 0xe4, - 0x88, 0xbf, 0x5c, 0xe2, 0x88, 0xbf, 0x5d, 0xe4, 0x88, 0xbf, 0x5d, 0xe2, - 0x88, 0xbf, 0x5e, 0xe4, 0x88, 0xbf, 0x5f, 0xe2, 0x88, 0xbf, 0x60, 0xe4, - 0x88, 0xbf, 0x60, 0xe2, 0x88, 0xbf, 0x61, 0xe4, 0x88, 0xbf, 0x62, 0xe2, - 0x88, 0xbf, 0x63, 0xe4, 0x88, 0xbf, 0x63, 0xe2, 0x88, 0xbf, 0x64, 0xe4, - 0x88, 0xbf, 0x65, 0xe2, 0x88, 0xbf, 0x66, 0xe4, 0x88, 0xbf, 0x66, 0xe2, - 0x88, 0xbf, 0x67, 0xe4, 0x88, 0xbf, 0x68, 0xe2, 0x88, 0xbf, 0x68, 0xe4, - 0x88, 0xbf, 0x69, 0xe2, 0x88, 0xbf, 0x6a, 0xe4, 0x88, 0xbf, 0x6a, 0xe2, - 0x88, 0xbf, 0x6b, 0xe4, 0x88, 0xbf, 0x6c, 0xe2, 0x88, 0xbf, 0x6c, 0xe4, - 0x88, 0xbf, 0x6d, 0xe2, 0x88, 0xbf, 0x6e, 0xe1, 0x89, 0xbf, 0x6e, 0xe2, - 0x88, 0xbf, 0x6f, 0xe1, 0x89, 0xbf, 0x70, 0xe2, 0x88, 0xbf, 0x70, 0xe1, - 0x89, 0xbf, 0x71, 0xe2, 0x88, 0xbf, 0x72, 0xe1, 0x89, 0xbf, 0x72, 0xe2, - 0x88, 0xbf, 0x73, 0xe1, 0x89, 0xbf, 0x73, 0xe2, 0x88, 0xbf, 0x74, 0xe1, - 0x89, 0xbf, 0x75, 0xe2, 0x88, 0xbf, 0x75, 0xe1, 0x89, 0xbf, 0x76, 0xe2, - 0x88, 0xbf, 0x76, 0xe1, 0x89, 0xbf, 0x77, 0xe2, 0x88, 0xbf, 0x78, 0xe1, - 0x89, 0xbf, 0x78, 0xe2, 0x88, 0xbf, 0x79, 0xe1, 0x89, 0xbf, 0x79, 0xe2, - 0x88, 0xbf, 0x7a, 0xe1, 0x89, 0xbf, 0x7a, 0xe2, 0x88, 0xbf, 0x7b, 0xe1, - 0x89, 0xbf, 0x7c, 0xe2, 0x88, 0xbf, 0x7c, 0xe1, 0x89, 0xbf, 0x7d, 0xe2, - 0x88, 0xbf, 0x7d, 0xe1, 0x89, 0xbf, 0x7e, 0xe2, 0x88, 0xbf, 0x7e, 0xe1, - 0x89, 0xbf, 0x7f, 0xe2, 0x88, 0xbf, 0x7f, 0xe1, 0x89, 0xbf, 0x80, 0xe2, - 0x88, 0xbf, 0x81, 0xe1, 0x89, 0xbf, 0x81, 0xe0, 0x89, 0xbf, 0x82, 0xe1, - 0x89, 0xbf, 0x82, 0xe0, 0x89, 0xbf, 0x83, 0xe1, 0x89, 0xbf, 0x83, 0xe0, - 0x89, 0xbf, 0x84, 0xe1, 0x89, 0xbf, 0x84, 0xe0, 0x89, 0xbf, 0x85, 0xe1, - 0x89, 0xbf, 0x85, 0xe0, 0x89, 0xbf, 0x86, 0xe1, 0x89, 0xbf, 0x86, 0xe0, - 0x89, 0xbf, 0x87, 0xe1, 0x89, 0xbf, 0x87, 0xe0, 0x89, 0xbf, 0x88, 0xe1, - 0x89, 0xbf, 0x88, 0xe0, 0x89, 0xbf, 0x89, 0xe1, 0x89, 0xbf, 0x88, 0xe0, - 0x89, 0xbf, 0x89, 0xe0, 0x8a, 0xbf, 0x88, 0xe0, 0x8a, 0xbf, 0x89, 0xe0, - 0x8b, 0xbf, 0x88, 0xe0, 0x8b, 0xbf, 0x89, 0xe0, 0x8c, 0xbf, 0x88, 0xe0, - 0x8c, 0xbf, 0x89, 0xe0, 0x8d, 0xbf, 0x89, 0xe0, 0x8d, 0xbc, 0x89, 0xe0, - 0x8e, 0xbf, 0x89, 0xe0, 0x8e, 0xbc, 0x89, 0xe0, 0x8e, 0xbf, 0x89, 0xe0, - 0x8f, 0xbc, 0x89, 0xe0, 0x8f, 0xbf, 0x89, 0xe0, 0x90, 0xbc, 0x89, 0xe0, - 0x90, 0xbf, 0x89, 0xe0, 0x91, 0xbc, 0x89, 0xe0, 0x91, 0xbf, 0x89, 0xe0, - 0x92, 0xbc, 0x89, 0xe0, 0x92, 0xbf, 0x89, 0xe0, 0x93, 0xbc, 0x89, 0xe0, - 0x93, 0xbf, 0x89, 0xe0, 0x94, 0xbc, 0x89, 0xe0, 0x94, 0xbf, 0x89, 0xe0, - 0x94, 0xbc, 0x89, 0xe0, 0x95, 0xbf, 0x89, 0xe0, 0x95, 0xbc, 0x89, 0xe0, - 0x96, 0xbf, 0x89, 0xe0, 0x96, 0xbc, 0x89, 0xe0, 0x97, 0xbf, 0x89, 0xe0, - 0x97, 0xbc, 0x89, 0xe0, 0x98, 0xbf, 0x89, 0xe0, 0x98, 0xbc, 0x89, 0xe0, - 0x98, 0xbf, 0x89, 0xe0, 0x99, 0xbc, 0x89, 0xe0, 0x99, 0xbf, 0x89, 0xe0, - 0x9a, 0xbc, 0x89, 0xe0, 0x9a, 0xbf, 0x89, 0xe0, 0x9a, 0xbc, 0x89, 0xe0, - 0x9b, 0xbf, 0x89, 0xe0, 0x9b, 0xbc, 0x89, 0xe0, 0x9c, 0xbf, 0x89, 0xe0, - 0x9c, 0xbc, 0x89, 0xe0, 0x9d, 0xbf, 0x89, 0xe0, 0x9d, 0xbc, 0x89, 0xe0, - 0x9d, 0xbf, 0x89, 0xe0, 0x9e, 0xbc, 0x89, 0xe0, 0x9e, 0xbf, 0x89, 0xe0, - 0x9f, 0xbc, 0x8a, 0xe0, 0x9f, 0xb8, 0x89, 0xe0, 0x9f, 0xbc, 0x8a, 0xe0, - 0xa0, 0xb8, 0x89, 0xe0, 0xa0, 0xbc, 0x8a, 0xe0, 0xa1, 0xb8, 0x89, 0xe0, - 0xa1, 0xbc, 0x8a, 0xe0, 0xa1, 0xb8, 0x89, 0xe0, 0xa2, 0xbc, 0x8a, 0xe0, - 0xa2, 0xb8, 0x89, 0xe0, 0xa3, 0xbc, 0x8a, 0xe0, 0xa3, 0xb8, 0x89, 0xe0, - 0xa3, 0xbc, 0x8a, 0xe0, 0xa4, 0xb8, 0x89, 0xe0, 0xa4, 0xbc, 0x8a, 0xe0, - 0xa5, 0xb8, 0x89, 0xe0, 0xa5, 0xbc, 0x8a, 0xe0, 0xa5, 0xb8, 0x89, 0xe0, - 0xa6, 0xbc, 0x8a, 0xe0, 0xa6, 0xb8, 0x89, 0xe0, 0xa6, 0xbc, 0x8a, 0xe0, - 0xa7, 0xb8, 0x89, 0xe0, 0xa7, 0xbc, 0x8a, 0xe0, 0xa8, 0xb8, 0x89, 0xe0, - 0xa8, 0xbc, 0x8a, 0xe0, 0xa8, 0xb8, 0x89, 0xe0, 0xa9, 0xbc, 0x8a, 0xe0, - 0xa9, 0xb8, 0x89, 0xe0, 0xaa, 0xbc, 0x8a, 0xe0, 0xaa, 0xb8, 0x89, 0xe0, - 0xaa, 0xbc, 0x8a, 0xe0, 0xab, 0xb8, 0x89, 0xe0, 0xab, 0xbc, 0xa3, 0xe0, - 0xab, 0x98, 0x89, 0xe0, 0xac, 0xbc, 0xa3, 0xe0, 0xac, 0x98, 0xa3, 0xe0, - 0xac, 0x97, 0xa3, 0xe0, 0xad, 0x98, 0xa3, 0xe0, 0xad, 0x97, 0xa3, 0xe0, - 0xae, 0x98, 0xa3, 0xe0, 0xae, 0x97, 0xa3, 0xe0, 0xae, 0x98, 0xa3, 0xe0, - 0xaf, 0x97, 0xa3, 0xe0, 0xaf, 0x98, 0xa3, 0xe0, 0xaf, 0x97, 0xa3, 0xe0, - 0xb0, 0x98, 0xa3, 0xe0, 0xb0, 0x97, 0xa3, 0xe0, 0xb0, 0x98, 0xa3, 0xe0, - 0xb1, 0x97, 0xa3, 0xe0, 0xb1, 0x98, 0xa3, 0xe0, 0xb2, 0x97, 0xa3, 0xe0, - 0xb2, 0x98, 0xa3, 0xe0, 0xb2, 0x97, 0xa3, 0xe0, 0xb3, 0x98, 0xcf, 0xe0, - 0xb3, 0xc5, 0xce, 0xe0, 0xb3, 0xc7, 0xcf, 0xe0, 0xb4, 0xc5, 0xce, 0xe0, - 0xb4, 0xc7, 0xcf, 0xe0, 0xb4, 0xc5, 0xce, 0xe0, 0xb5, 0xc7, 0xcf, 0xe0, - 0xb5, 0xc5, 0xce, 0xe0, 0xb5, 0xc7, 0xcf, 0xe0, 0xb6, 0xc5, 0xce, 0xe0, - 0xb6, 0xc7, 0xcf, 0xe0, 0xb6, 0xc5, 0xce, 0xe0, 0xb7, 0xc7, 0xcf, 0xe0, - 0xb7, 0xc5, 0xce, 0xe0, 0xb7, 0xc7, 0xcf, 0xe0, 0xb8, 0xc5, 0xce, 0xe0, - 0xb8, 0xc7, 0xcf, 0xe0, 0xb8, 0xc5, 0xce, 0xe0, 0xb9, 0xc7, 0xcf, 0xe0, - 0xb9, 0xc5, 0xce, 0xe0, 0xb9, 0xc7, 0xcf, 0xe0, 0xba, 0xc5, 0xce, 0xe0, - 0xba, 0xc7, 0xcf, 0xe0, 0xba, 0xc5, 0xce, 0xe0, 0xbb, 0xc7, 0xcf, 0xe0, - 0xbb, 0xc5, 0xcf, 0xe0, 0xbb, 0xc2, 0xcf, 0xe0, 0xbc, 0xc5, 0xcf, 0xe0, - 0xbc, 0xc2, 0xcf, 0xe0, 0xbc, 0xc5, 0xcf, 0xe0, 0xbd, 0xc2, 0xcf, 0xe0, - 0xbd, 0xc5, 0xcf, 0xe0, 0xbd, 0xc2, 0xcf, 0xe0, 0xbe, 0xc5, 0xcf, 0xe0, - 0xbe, 0xc2, 0xcf, 0xe0, 0xbe, 0xc5, 0xcf, 0xe0, 0xbf, 0xc2, 0xcf, 0xe0, - 0xbf, 0xc5, 0xcf, 0xe0, 0xbf, 0xc2, 0xcf, 0xe0, 0xc0, 0xc5, 0xcf, 0xe0, - 0xc0, 0xc2, 0xcf, 0xe0, 0xc0, 0xc5, 0xcf, 0xe0, 0xc1, 0xc2, 0xcf, 0xe0, - 0xc1, 0xbf, 0xcf, 0xe0, 0xc1, 0xc2, 0xcf, 0xe0, 0xc1, 0xbf, 0xcf, 0xe0, - 0xc2, 0xc2, 0xcf, 0xe0, 0xc2, 0xbf, 0xcf, 0xe0, 0xc2, 0xc2, 0xcf, 0xe0, - 0xc3, 0xbf, 0xcf, 0xe0, 0xc3, 0xc2, 0xcf, 0xe0, 0xc3, 0xbf, 0xcf, 0xe0, - 0xc4, 0xc2, 0xcf, 0xe0, 0xc4, 0xbf, 0xcf, 0xe0, 0xc4, 0xc2, 0xcf, 0xe0, - 0xc5, 0xbf, 0xcf, 0xe0, 0xc5, 0xc2, 0xcf, 0xe0, 0xc5, 0xbf, 0xcf, 0xe0, - 0xc6, 0xc2, 0xcf, 0xe0, 0xc6, 0xbf, 0xcf, 0xe0, 0xc6, 0xc2, 0xcf, 0xe0, - 0xc6, 0xbf, 0xcf, 0xe0, 0xc7, 0xc2, 0xcf, 0xe0, 0xc7, 0xbf, 0xcf, 0xe0, - 0xc7, 0xc2, 0xcf, 0xe0, 0xc8, 0xbf, 0xcf, 0xe0, 0xc8, 0xc2, 0xcf, 0xe0, - 0xc8, 0xbf, 0xcf, 0xe0, 0xc9, 0xc2, 0xcf, 0xe0, 0xc9, 0xbf, 0xcf, 0xe0, - 0xc9, 0xc2, 0xcf, 0xe0, 0xc9, 0xbf, 0xcf, 0xe0, 0xca, 0xc2, 0xcf, 0xe0, - 0xca, 0xbf, 0xcf, 0xe0, 0xca, 0xc2, 0xcf, 0xe0, 0xcb, 0xbf, 0xd0, 0xe0, - 0xcb, 0xbf, 0xcf, 0xe0, 0xcb, 0xbf, 0xd0, 0xe0, 0xcc, 0xbf, 0xcf, 0xe0, - 0xcc, 0xbf, 0xd0, 0xe0, 0xcc, 0xbf, 0xcf, 0xe0, 0xcc, 0xbf, 0xd0, 0xe0, - 0xcd, 0xbf, 0xcf, 0xe0, 0xcd, 0xbf, 0xd0, 0xe0, 0xcd, 0xbf, 0xcf, 0xe0, - 0xce, 0xbf, 0xd0, 0xe0, 0xce, 0xbf, 0xcf, 0xe0, 0xce, 0xbf, 0xd0, 0xe0, - 0xce, 0xbf, 0xcf, 0xe0, 0xcf, 0xbf, 0xd0, 0xe0, 0xcf, 0xbf, 0xd0, 0xe0, - 0xcf, 0xbf, 0xd0, 0xe0, 0xcf, 0xbf, 0xd0, 0xe0, 0xcf, 0xbf, 0xd0, 0xe0, - 0xcf, 0xbf, 0xd0, 0xe0, 0xcf, 0xbf, 0xd1, 0xdf, 0xd0, 0xbf, 0xd1, 0xe0, - 0xcf, 0xbf, 0xd1, 0xdf, 0xd0, 0xbf, 0xd2, 0xe0, 0xcf, 0xbf, 0xd2, 0xdf, - 0xd0, 0xbf, 0xd2, 0xe0, 0xcf, 0xbf, 0xd2, 0xdf, 0xd0, 0xbf, 0xd3, 0xe0, - 0xcf, 0xbf, 0xd3, 0xdf, 0xd0, 0xbf, 0xd3, 0xe0, 0xcf, 0xbf, 0xd4, 0xdf, - 0xd0, 0xbf, 0xd4, 0xe0, 0xcf, 0xbf, 0xd4, 0xdf, 0xd0, 0xbf, 0xd4, 0xe0, - 0xcf, 0xbf, 0xd5, 0xdf, 0xd0, 0xbf, 0xd5, 0xe0, 0xcf, 0xbf, 0xd5, 0xdf, - 0xd0, 0xbf, 0xd6, 0xe0, 0xcf, 0xbf, 0xd6, 0xdf, 0xd0, 0xbf, 0xd6, 0xe0, - 0xcf, 0xbf, 0xd6, 0xdf, 0xd0, 0xbf, 0xd7, 0xde, 0xd0, 0xbf, 0xd7, 0xdf, - 0xd0, 0xbf, 0xd7, 0xde, 0xd0, 0xbf, 0xd7, 0xdf, 0xd0, 0xbf, 0xd8, 0xde, - 0xd0, 0xbf, 0xd8, 0xdf, 0xd0, 0xbf, 0xd8, 0xde, 0xd0, 0xbf, 0xd9, 0xdf, - 0xd0, 0xbf, 0xd9, 0xde, 0xd0, 0xbf, 0xd9, 0xdf, 0xd0, 0xbf, 0xd9, 0xde, - 0xd0, 0xbf, 0xda, 0xdf, 0xd0, 0xbf, 0xda, 0xde, 0xd0, 0xbf, 0xda, 0xdf, - 0xd0, 0xbf, 0xda, 0xde, 0xd0, 0xbf, 0xdb, 0xdf, 0xd0, 0xbf, 0xdb, 0xde, - 0xd0, 0xbf, 0xdb, 0xdf, 0xd0, 0xbf, 0xdb, 0xde, 0xd0, 0xbf, 0xdc, 0xdf, - 0xd0, 0xbf, 0xdc, 0xde, 0xd0, 0xbf, 0xdc, 0xe2, 0xe8, 0xbf, 0xdd, 0xe3, - 0xe7, 0xbf, 0xdd, 0xe2, 0xe8, 0xbf, 0xdd, 0xe3, 0xe7, 0xbf, 0xdd, 0xe2, - 0xe8, 0xbf, 0xde, 0xe3, 0xe7, 0xbf, 0xde, 0xe2, 0xe8, 0xbf, 0xde, 0xe3, - 0xe7, 0xbf, 0xde, 0xe2, 0xe8, 0xbf, 0xdf, 0xe0, 0xe8, 0xbf, 0xdf, 0xe2, - 0xe8, 0xbf, 0xdf, 0xe0, 0xe8, 0xbf, 0xdf, 0xe2, 0xe8, 0xbf, 0xe0, 0xe0, - 0xe8, 0xbf, 0xe0, 0xe2, 0xe8, 0xbf, 0xe0, 0xe0, 0xe8, 0xbf, 0xe1, 0xe2, - 0xe8, 0xbf, 0xe1, 0xe0, 0xe8, 0xbf, 0xe1, 0xe2, 0xe8, 0xbf, 0xe1, 0xe0, - 0xe8, 0xbf, 0xe2, 0xe2, 0xe8, 0xbf, 0xe2, 0xe0, 0xe8, 0xbf, 0xe2, 0xe2, - 0xe8, 0xbf, 0xe2, 0xe0, 0xe8, 0xbf, 0xe3, 0xe2, 0xe8, 0xbf, 0xe3, 0xe0, - 0xe8, 0xbf, 0xe3, 0xe2, 0xe8, 0xbf, 0xe3, 0xe0, 0xe8, 0xbf, 0xe4, 0xe2, - 0xe8, 0xbf, 0xe4, 0xe0, 0xe8, 0xbf, 0xe4, 0xe2, 0xe8, 0xbf, 0xe4, 0xe0, - 0xe8, 0xbf, 0xe5, 0xe2, 0xe8, 0xbf, 0xe5, 0xe0, 0xe8, 0xbf, 0xe5, 0xe2, - 0xe8, 0xbf, 0xe5, 0xe0, 0xe8, 0xbf, 0xe6, 0xe2, 0xe8, 0xbf, 0xe6, 0xe0, - 0xe8, 0xbf, 0xe6, 0xe0, 0xe8, 0xbf, 0xe6, 0xe0, 0xe8, 0xbf, 0xe7, 0xe0, - 0xe8, 0xbf, 0xe7, 0xe0, 0xe8, 0xbf, 0xe7, 0xe0, 0xe8, 0xbf, 0xe7, 0xe0, - 0xe8, 0xbf, 0xe8, 0xe0, 0xe8, 0xbf, 0xe8, 0xe0, 0xe8, 0xbe, 0xe8, 0xe0, - 0xe8, 0xbf, 0xe8, 0xe0, 0xe8, 0xbe, 0xe8, 0xe0, 0xe9, 0xbf, 0xe8, 0xe0, - 0xe9, 0xbe, 0xe8, 0xe0, 0xe9, 0xbf, 0xe8, 0xe0, 0xe9, 0xbe, 0xe8, 0xe0, - 0xea, 0xbf, 0xec, 0xe0, 0xea, 0xbf, 0xec, 0xe0, 0xea, 0xbf, 0xec, 0xe0, - 0xea, 0xbf, 0xec, 0xe0, 0xeb, 0xbf, 0xec, 0xe0, 0xeb, 0xbf, 0xec, 0xe0, - 0xeb, 0xbf, 0xec, 0xe0, 0xeb, 0xbf, 0xec, 0xe0, 0xeb, 0xbf, 0xec, 0xe0, - 0xeb, 0xbf, 0xec, 0xe0, 0xeb, 0xbf, 0xec, 0xe0, 0xeb, 0xbf, 0xec, 0xdf, - 0xec, 0xbf, 0xed, 0xe0, 0xeb, 0xbf, 0xed, 0xdf, 0xec, 0xbf, 0xed, 0xe0, - 0xeb, 0xbf, 0xed, 0xdf, 0xec, 0xbf, 0xee, 0xe0, 0xeb, 0xbf, 0xee, 0xdf, - 0xec, 0xbf, 0xee, 0xe0, 0xeb, 0xbf, 0xee, 0xdf, 0xec, 0xbf, 0xef, 0xe0, - 0xeb, 0xbf, 0xef, 0xdf, 0xec, 0xbf, 0xef, 0xe0, 0xeb, 0xbf, 0xef, 0xdf, - 0xec, 0xbf, 0xf0, 0xe0, 0xeb, 0xbf, 0xf0, 0xdf, 0xec, 0xbf, 0xf0, 0xe0, - 0xeb, 0xbf, 0xf0, 0xdf, 0xec, 0xbf, 0xf1, 0xe0, 0xeb, 0xbf, 0xf1, 0xdf, - 0xec, 0xbf, 0xf1, 0xe0, 0xeb, 0xbf, 0xf1, 0xdf, 0xec, 0xbf, 0xf2, 0xde, - 0xec, 0xbf, 0xf2, 0xdf, 0xec, 0xbf, 0xf2, 0xde, 0xec, 0xbf, 0xf2, 0xdf, - 0xec, 0xbf, 0xf2, 0xde, 0xec, 0xbf, 0xf3, 0xdf, 0xec, 0xbf, 0xf3, 0xde, - 0xec, 0xbf, 0xf3, 0xdf, 0xec, 0xbf, 0xf3, 0xde, 0xec, 0xbf, 0xf4, 0xdf, - 0xec, 0xbf, 0xf4, 0xde, 0xec, 0xbf, 0xf4, 0xdf, 0xec, 0xbf, 0xf4, 0xde, - 0xec, 0xbf, 0xf5, 0xdf, 0xec, 0xbf, 0xf5, 0xde, 0xec, 0xbf, 0xf5, 0xdf, - 0xec, 0xbf, 0xf5, 0xde, 0xec, 0xbf, 0xf5, 0xdf, 0xec, 0xbf, 0xf6, 0xde, - 0xec, 0xbf, 0xf6, 0xdf, 0xec, 0xbf, 0xf6, 0xde, 0xec, 0xbf, 0xf6, 0xdf, - 0xec, 0xbf, 0xf7, 0xde, 0xec, 0xbf, 0xf7, 0xdf, 0xec, 0xbf, 0xf7, 0xde, - 0xec, 0xbf, 0xf7, 0xdf, 0xec, 0xbf, 0xf8, 0xde, 0xec, 0xbf, 0xf8, 0xdf, - 0xec, 0xbf, 0xf8, 0xde, 0xec, 0xbf, 0xf8, 0xdf, 0xec, 0xbf, 0xf8, 0xde, - 0xec, 0xbf, 0xf9, 0xdf, 0xec, 0xbf, 0xf9, 0xde, 0xec, 0xbf, 0xf9, 0xdf, - 0xec, 0xbf, 0xf9, 0xde, 0xec, 0xbf, 0xfa, 0xec, 0xf1, 0xbf, 0xfa, 0xde, - 0xec, 0xbf, 0xfa, 0xec, 0xf1, 0xbf, 0xfa, 0xec, 0xf1, 0xbf, 0xfa, 0xec, - 0xf1, 0xbf, 0xfb, 0xec, 0xf1, 0xbf, 0xfb, 0xec, 0xf1, 0xbf, 0xfb, 0xec, - 0xf1, 0xbf, 0xfb, 0xec, 0xf1, 0xbf, 0xfc, 0xec, 0xf1, 0xbf, 0xfc, 0xec, - 0xf1, 0xbf, 0xfc, 0xec, 0xf1, 0xbf, 0xfc, 0xec, 0xf1, 0xbf, 0xfc, 0xec, - 0xf1, 0xbf, 0xfd, 0xec, 0xf1, 0xbf, 0xfd, 0xec, 0xf1, 0xbf, 0xfd, 0xec, - 0xf1, 0xbf, 0xfd, 0xec, 0xf1, 0xbf, 0xfe, 0xec, 0xf1, 0xbf, 0xfe, 0xec, - 0xf1, 0xbf, 0xfe, 0xec, 0xf1, 0xbf, 0xfe, 0xec, 0xf1, 0xbf, 0xfe, 0xec, - 0xf1, 0xbf, 0xff, 0xec, 0xf1, 0xbf, 0xff, 0xec, 0xf1, 0xbf, 0x03, 0xe6, - 0x87, 0xbf, 0x0a, 0xe6, 0x87, 0xbf, 0x0f, 0xe6, 0x87, 0xbf, 0x14, 0xe4, - 0x88, 0xbf, 0x17, 0xe6, 0x87, 0xbf, 0x1b, 0xe4, 0x88, 0xbf, 0x1e, 0xe6, - 0x87, 0xbf, 0x20, 0xe4, 0x88, 0xbf, 0x23, 0xe6, 0x87, 0xbf, 0x25, 0xe4, - 0x88, 0xbf, 0x27, 0xe6, 0x87, 0xbf, 0x29, 0xe4, 0x88, 0xbf, 0x2b, 0xe6, - 0x87, 0xbf, 0x2d, 0xe4, 0x88, 0xbf, 0x2f, 0xe6, 0x87, 0xbf, 0x31, 0xe4, - 0x88, 0xbf, 0x32, 0xe6, 0x87, 0xbf, 0x34, 0xe4, 0x88, 0xbf, 0x35, 0xe6, - 0x87, 0xbf, 0x37, 0xe4, 0x88, 0xbf, 0x38, 0xe6, 0x87, 0xbf, 0x3a, 0xe4, - 0x88, 0xbf, 0x3b, 0xe6, 0x87, 0xbf, 0x3c, 0xe4, 0x88, 0xbf, 0x3e, 0xe6, - 0x87, 0xbf, 0x3f, 0xe4, 0x88, 0xbf, 0x40, 0xe6, 0x87, 0xbf, 0x42, 0xe4, - 0x88, 0xbf, 0x43, 0xe6, 0x87, 0xbf, 0x44, 0xe4, 0x88, 0xbf, 0x45, 0xe6, - 0x87, 0xbf, 0x46, 0xe4, 0x88, 0xbf, 0x47, 0xe6, 0x87, 0xbf, 0x48, 0xe4, - 0x88, 0xbf, 0x49, 0xe6, 0x87, 0xbf, 0x4a, 0xe4, 0x88, 0xbf, 0x4b, 0xe6, - 0x87, 0xbf, 0x4c, 0xe4, 0x88, 0xbf, 0x4d, 0xe6, 0x87, 0xbf, 0x4e, 0xe4, - 0x88, 0xbf, 0x4f, 0xe6, 0x87, 0xbf, 0x50, 0xe4, 0x88, 0xbf, 0x51, 0xe3, - 0x88, 0xbf, 0x52, 0xe4, 0x88, 0xbf, 0x53, 0xe3, 0x88, 0xbf, 0x54, 0xe4, - 0x88, 0xbf, 0x55, 0xe3, 0x88, 0xbf, 0x56, 0xe4, 0x88, 0xbf, 0x57, 0xe3, - 0x88, 0xbf, 0x58, 0xe4, 0x88, 0xbf, 0x58, 0xe3, 0x88, 0xbf, 0x59, 0xe4, - 0x88, 0xbf, 0x5a, 0xe3, 0x88, 0xbf, 0x5b, 0xe4, 0x88, 0xbf, 0x5c, 0xe3, - 0x88, 0xbf, 0x5d, 0xe4, 0x88, 0xbf, 0x5d, 0xe3, 0x88, 0xbf, 0x5e, 0xe4, - 0x88, 0xbf, 0x5f, 0xe3, 0x88, 0xbf, 0x60, 0xe4, 0x88, 0xbf, 0x60, 0xe3, - 0x88, 0xbf, 0x61, 0xe4, 0x88, 0xbf, 0x62, 0xe3, 0x88, 0xbf, 0x63, 0xe4, - 0x88, 0xbf, 0x63, 0xe3, 0x88, 0xbf, 0x64, 0xe4, 0x88, 0xbf, 0x65, 0xe3, - 0x88, 0xbf, 0x66, 0xe4, 0x88, 0xbf, 0x66, 0xe3, 0x88, 0xbf, 0x67, 0xe4, - 0x88, 0xbf, 0x68, 0xe3, 0x88, 0xbf, 0x68, 0xe4, 0x88, 0xbf, 0x69, 0xe3, - 0x88, 0xbf, 0x6a, 0xe4, 0x88, 0xbf, 0x6a, 0xe3, 0x88, 0xbf, 0x6b, 0xe4, - 0x88, 0xbf, 0x6c, 0xe3, 0x88, 0xbf, 0x6c, 0xe4, 0x88, 0xbf, 0x6d, 0xe3, - 0x88, 0xbf, 0x6e, 0xe1, 0x89, 0xbf, 0x6e, 0xe3, 0x88, 0xbf, 0x6f, 0xe1, - 0x89, 0xbf, 0x70, 0xe3, 0x88, 0xbf, 0x70, 0xe1, 0x89, 0xbf, 0x71, 0xe3, - 0x88, 0xbf, 0x72, 0xe1, 0x89, 0xbf, 0x72, 0xe3, 0x88, 0xbf, 0x73, 0xe1, - 0x89, 0xbf, 0x73, 0xe3, 0x88, 0xbf, 0x74, 0xe1, 0x89, 0xbf, 0x75, 0xe3, - 0x88, 0xbf, 0x75, 0xe1, 0x89, 0xbf, 0x76, 0xe3, 0x88, 0xbf, 0x76, 0xe1, - 0x89, 0xbf, 0x77, 0xe3, 0x88, 0xbf, 0x78, 0xe1, 0x89, 0xbf, 0x78, 0xe3, - 0x88, 0xbf, 0x79, 0xe1, 0x89, 0xbf, 0x79, 0xe3, 0x88, 0xbf, 0x7a, 0xe1, - 0x89, 0xbf, 0x7a, 0xe3, 0x88, 0xbf, 0x7b, 0xe1, 0x89, 0xbf, 0x7c, 0xe3, - 0x88, 0xbf, 0x7c, 0xe1, 0x89, 0xbf, 0x7d, 0xe3, 0x88, 0xbf, 0x7d, 0xe1, - 0x89, 0xbf, 0x7e, 0xe3, 0x88, 0xbf, 0x7e, 0xe1, 0x89, 0xbf, 0x7f, 0xe3, - 0x88, 0xbf, 0x7f, 0xe1, 0x89, 0xbf, 0x80, 0xe3, 0x88, 0xbf, 0x81, 0xe1, - 0x89, 0xbf, 0x81, 0xe1, 0x89, 0xbf, 0x82, 0xe1, 0x89, 0xbf, 0x82, 0xe1, - 0x89, 0xbf, 0x83, 0xe1, 0x89, 0xbf, 0x83, 0xe1, 0x89, 0xbf, 0x84, 0xe1, - 0x89, 0xbf, 0x84, 0xe1, 0x89, 0xbf, 0x85, 0xe1, 0x89, 0xbf, 0x85, 0xe1, - 0x89, 0xbf, 0x86, 0xe1, 0x89, 0xbf, 0x86, 0xe1, 0x89, 0xbf, 0x87, 0xe1, - 0x89, 0xbf, 0x87, 0xe1, 0x89, 0xbf, 0x88, 0xe1, 0x89, 0xbf, 0x88, 0xe1, - 0x89, 0xbf, 0x89, 0xe1, 0x89, 0xbe, 0x88, 0xe1, 0x89, 0xbf, 0x89, 0xe1, - 0x8a, 0xbe, 0x88, 0xe1, 0x8a, 0xbf, 0x89, 0xe1, 0x8b, 0xbe, 0x88, 0xe1, - 0x8b, 0xbf, 0x89, 0xe1, 0x8c, 0xbe, 0x88, 0xe1, 0x8c, 0xbf, 0x89, 0xe1, - 0x8d, 0xbe, 0x88, 0xe1, 0x8d, 0xbf, 0x89, 0xe1, 0x8e, 0xbe, 0x88, 0xe1, - 0x8e, 0xbf, 0x89, 0xe1, 0x8e, 0xbe, 0x88, 0xe1, 0x8f, 0xbf, 0x89, 0xe1, - 0x8f, 0xbe, 0x88, 0xe1, 0x90, 0xbf, 0x89, 0xe1, 0x90, 0xbe, 0x89, 0xe1, - 0x91, 0xbb, 0x89, 0xe1, 0x91, 0xbe, 0x89, 0xe1, 0x92, 0xbb, 0x89, 0xe1, - 0x92, 0xbe, 0x89, 0xe1, 0x93, 0xbb, 0x89, 0xe1, 0x93, 0xbe, 0x89, 0xe1, - 0x94, 0xbb, 0x89, 0xe1, 0x94, 0xbe, 0x89, 0xe1, 0x94, 0xbb, 0x89, 0xe1, - 0x95, 0xbe, 0x89, 0xe1, 0x95, 0xbb, 0x89, 0xe1, 0x96, 0xbe, 0x89, 0xe1, - 0x96, 0xbb, 0x89, 0xe1, 0x97, 0xbe, 0x89, 0xe1, 0x97, 0xbb, 0x89, 0xe1, - 0x98, 0xbe, 0x89, 0xe1, 0x98, 0xbb, 0x89, 0xe1, 0x98, 0xbe, 0x89, 0xe1, - 0x99, 0xbb, 0x89, 0xe1, 0x99, 0xbe, 0x89, 0xe1, 0x9a, 0xbb, 0x89, 0xe1, - 0x9a, 0xbe, 0x89, 0xe1, 0x9a, 0xbb, 0x89, 0xe1, 0x9b, 0xbe, 0x89, 0xe1, - 0x9b, 0xbb, 0x89, 0xe1, 0x9c, 0xbe, 0x89, 0xe1, 0x9c, 0xbb, 0x89, 0xe1, - 0x9d, 0xbe, 0x89, 0xe1, 0x9d, 0xbb, 0x89, 0xe1, 0x9d, 0xbe, 0x89, 0xe1, - 0x9e, 0xbb, 0x89, 0xe1, 0x9e, 0xbe, 0x89, 0xe1, 0x9f, 0xbb, 0x8a, 0xe1, - 0x9f, 0xb8, 0x89, 0xe1, 0x9f, 0xbb, 0x8a, 0xe1, 0xa0, 0xb8, 0x89, 0xe1, - 0xa0, 0xbb, 0x8a, 0xe1, 0xa1, 0xb8, 0x89, 0xe1, 0xa1, 0xbb, 0x8a, 0xe1, - 0xa1, 0xb8, 0x89, 0xe1, 0xa2, 0xbb, 0x8a, 0xe1, 0xa2, 0xb8, 0x89, 0xe1, - 0xa3, 0xbb, 0x8a, 0xe1, 0xa3, 0xb8, 0x89, 0xe1, 0xa3, 0xbb, 0x8a, 0xe1, - 0xa4, 0xb8, 0x89, 0xe1, 0xa4, 0xbb, 0x8a, 0xe1, 0xa5, 0xb8, 0x89, 0xe1, - 0xa5, 0xbb, 0x8a, 0xe1, 0xa5, 0xb8, 0x89, 0xe1, 0xa6, 0xbb, 0x8a, 0xe1, - 0xa6, 0xb8, 0x89, 0xe1, 0xa6, 0xbb, 0x8a, 0xe1, 0xa7, 0xb8, 0x89, 0xe1, - 0xa7, 0xbb, 0x8a, 0xe1, 0xa8, 0xb8, 0x89, 0xe1, 0xa8, 0xbb, 0x8a, 0xe1, - 0xa8, 0xb8, 0x89, 0xe1, 0xa9, 0xbb, 0x8a, 0xe1, 0xa9, 0xb8, 0x89, 0xe1, - 0xaa, 0xbb, 0x8a, 0xe1, 0xaa, 0xb8, 0x89, 0xe1, 0xaa, 0xbb, 0x8a, 0xe1, - 0xab, 0xb8, 0x89, 0xe1, 0xab, 0xbb, 0x8a, 0xe1, 0xab, 0xb8, 0x89, 0xe1, - 0xac, 0xbb, 0x8a, 0xe1, 0xac, 0xb8, 0xa3, 0xe1, 0xac, 0x97, 0xa3, 0xe1, - 0xad, 0x97, 0xa3, 0xe1, 0xad, 0x97, 0xa3, 0xe1, 0xae, 0x97, 0xa3, 0xe1, - 0xae, 0x97, 0xa3, 0xe1, 0xae, 0x97, 0xa3, 0xe1, 0xaf, 0x97, 0xa3, 0xe1, - 0xaf, 0x97, 0xa3, 0xe1, 0xaf, 0x97, 0xa3, 0xe1, 0xb0, 0x97, 0xa3, 0xe1, - 0xb0, 0x97, 0xa3, 0xe1, 0xb0, 0x97, 0xa3, 0xe1, 0xb1, 0x97, 0xa3, 0xe1, - 0xb1, 0x97, 0xa3, 0xe1, 0xb2, 0x97, 0xa3, 0xe1, 0xb2, 0x97, 0xa3, 0xe1, - 0xb2, 0x97, 0xce, 0xe1, 0xb3, 0xc8, 0xcf, 0xe1, 0xb3, 0xc5, 0xce, 0xe1, - 0xb3, 0xc8, 0xcf, 0xe1, 0xb4, 0xc5, 0xce, 0xe1, 0xb4, 0xc8, 0xcf, 0xe1, - 0xb4, 0xc5, 0xce, 0xe1, 0xb5, 0xc8, 0xcf, 0xe1, 0xb5, 0xc5, 0xce, 0xe1, - 0xb5, 0xc8, 0xcf, 0xe1, 0xb6, 0xc5, 0xce, 0xe1, 0xb6, 0xc8, 0xcf, 0xe1, - 0xb6, 0xc5, 0xce, 0xe1, 0xb7, 0xc8, 0xcf, 0xe1, 0xb7, 0xc5, 0xce, 0xe1, - 0xb7, 0xc8, 0xcf, 0xe1, 0xb8, 0xc5, 0xce, 0xe1, 0xb8, 0xc8, 0xcf, 0xe1, - 0xb8, 0xc5, 0xce, 0xe1, 0xb9, 0xc8, 0xcf, 0xe1, 0xb9, 0xc5, 0xce, 0xe1, - 0xb9, 0xc8, 0xcf, 0xe1, 0xba, 0xc5, 0xce, 0xe1, 0xba, 0xc8, 0xcf, 0xe1, - 0xba, 0xc5, 0xce, 0xe1, 0xbb, 0xc8, 0xcf, 0xe1, 0xbb, 0xc5, 0xcf, 0xe1, - 0xbb, 0xc3, 0xcf, 0xe1, 0xbc, 0xc5, 0xcf, 0xe1, 0xbc, 0xc3, 0xcf, 0xe1, - 0xbc, 0xc5, 0xcf, 0xe1, 0xbd, 0xc3, 0xcf, 0xe1, 0xbd, 0xc5, 0xcf, 0xe1, - 0xbd, 0xc3, 0xcf, 0xe1, 0xbe, 0xc5, 0xcf, 0xe1, 0xbe, 0xc3, 0xcf, 0xe1, - 0xbe, 0xc5, 0xcf, 0xe1, 0xbf, 0xc3, 0xcf, 0xe1, 0xbf, 0xc5, 0xcf, 0xe1, - 0xbf, 0xc3, 0xcf, 0xe1, 0xc0, 0xc5, 0xcf, 0xe1, 0xc0, 0xc3, 0xcf, 0xe1, - 0xc0, 0xc5, 0xcf, 0xe1, 0xc1, 0xc3, 0xcf, 0xe1, 0xc1, 0xc5, 0xcf, 0xe1, - 0xc1, 0xc3, 0xcf, 0xe1, 0xc1, 0xc5, 0xcf, 0xe1, 0xc2, 0xc3, 0xcf, 0xe1, - 0xc2, 0xc5, 0xcf, 0xe1, 0xc2, 0xc3, 0xcf, 0xe1, 0xc3, 0xc5, 0xcf, 0xe1, - 0xc3, 0xc3, 0xcf, 0xe1, 0xc3, 0xc5, 0xcf, 0xe1, 0xc4, 0xc3, 0xcf, 0xe1, - 0xc4, 0xc5, 0xcf, 0xe1, 0xc4, 0xc3, 0xcf, 0xe1, 0xc5, 0xc0, 0xcf, 0xe1, - 0xc5, 0xc3, 0xcf, 0xe1, 0xc5, 0xc0, 0xcf, 0xe1, 0xc6, 0xc3, 0xcf, 0xe1, - 0xc6, 0xc0, 0xcf, 0xe1, 0xc6, 0xc3, 0xcf, 0xe1, 0xc6, 0xc0, 0xcf, 0xe1, - 0xc7, 0xc3, 0xcf, 0xe1, 0xc7, 0xc0, 0xcf, 0xe1, 0xc7, 0xc3, 0xcf, 0xe1, - 0xc8, 0xc0, 0xcf, 0xe1, 0xc8, 0xc3, 0xcf, 0xe1, 0xc8, 0xc0, 0xcf, 0xe1, - 0xc9, 0xc3, 0xcf, 0xe1, 0xc9, 0xc0, 0xcf, 0xe1, 0xc9, 0xc3, 0xcf, 0xe1, - 0xc9, 0xc0, 0xcf, 0xe1, 0xca, 0xc3, 0xcf, 0xe1, 0xca, 0xc0, 0xcf, 0xe1, - 0xca, 0xc3, 0xcf, 0xe1, 0xcb, 0xc0, 0xd0, 0xe1, 0xcb, 0xbf, 0xcf, 0xe1, - 0xcb, 0xc0, 0xd0, 0xe1, 0xcc, 0xbf, 0xcf, 0xe1, 0xcc, 0xc0, 0xd0, 0xe1, - 0xcc, 0xbf, 0xcf, 0xe1, 0xcc, 0xc0, 0xd0, 0xe1, 0xcd, 0xbf, 0xcf, 0xe1, - 0xcd, 0xc0, 0xd0, 0xe1, 0xcd, 0xbf, 0xcf, 0xe1, 0xce, 0xc0, 0xd0, 0xe1, - 0xce, 0xbf, 0xcf, 0xe1, 0xce, 0xc0, 0xd0, 0xe1, 0xce, 0xbf, 0xcf, 0xe1, - 0xcf, 0xc0, 0xd0, 0xe1, 0xcf, 0xbf, 0xd0, 0xe1, 0xcf, 0xbf, 0xd0, 0xe1, - 0xcf, 0xbf, 0xd0, 0xe1, 0xcf, 0xbf, 0xd0, 0xe1, 0xcf, 0xbf, 0xd0, 0xe1, - 0xcf, 0xbf, 0xd1, 0xe1, 0xcf, 0xbf, 0xd1, 0xe1, 0xcf, 0xbf, 0xd1, 0xe1, - 0xcf, 0xbf, 0xd2, 0xe1, 0xcf, 0xbf, 0xd2, 0xdf, 0xd0, 0xbf, 0xd2, 0xe1, - 0xcf, 0xbf, 0xd2, 0xdf, 0xd0, 0xbf, 0xd3, 0xe1, 0xcf, 0xbf, 0xd3, 0xdf, - 0xd0, 0xbf, 0xd3, 0xe1, 0xcf, 0xbf, 0xd4, 0xdf, 0xd0, 0xbf, 0xd4, 0xe1, - 0xcf, 0xbf, 0xd4, 0xdf, 0xd0, 0xbf, 0xd4, 0xe1, 0xcf, 0xbf, 0xd5, 0xdf, - 0xd0, 0xbf, 0xd5, 0xe1, 0xcf, 0xbf, 0xd5, 0xdf, 0xd0, 0xbf, 0xd6, 0xe1, - 0xcf, 0xbf, 0xd6, 0xdf, 0xd0, 0xbf, 0xd6, 0xe1, 0xcf, 0xbf, 0xd6, 0xdf, - 0xd0, 0xbf, 0xd7, 0xe1, 0xcf, 0xbf, 0xd7, 0xdf, 0xd0, 0xbf, 0xd7, 0xe1, - 0xcf, 0xbf, 0xd7, 0xdf, 0xd0, 0xbf, 0xd8, 0xe1, 0xcf, 0xbf, 0xd8, 0xdf, - 0xd0, 0xbf, 0xd8, 0xe1, 0xcf, 0xbf, 0xd9, 0xdf, 0xd0, 0xbf, 0xd9, 0xe1, - 0xcf, 0xbf, 0xd9, 0xdf, 0xd0, 0xbf, 0xd9, 0xe1, 0xcf, 0xbf, 0xda, 0xdf, - 0xd0, 0xbf, 0xda, 0xdd, 0xd0, 0xbf, 0xda, 0xdf, 0xd0, 0xbf, 0xda, 0xdd, - 0xd0, 0xbf, 0xdb, 0xdf, 0xd0, 0xbf, 0xdb, 0xdd, 0xd0, 0xbf, 0xdb, 0xdf, - 0xd0, 0xbf, 0xdb, 0xdd, 0xd0, 0xbf, 0xdc, 0xdf, 0xd0, 0xbf, 0xdc, 0xe3, - 0xe7, 0xbf, 0xdc, 0xe2, 0xe8, 0xbf, 0xdd, 0xe3, 0xe7, 0xbf, 0xdd, 0xe2, - 0xe8, 0xbf, 0xdd, 0xe3, 0xe7, 0xbf, 0xdd, 0xe2, 0xe8, 0xbf, 0xde, 0xe3, - 0xe7, 0xbf, 0xde, 0xe2, 0xe8, 0xbf, 0xde, 0xe3, 0xe7, 0xbf, 0xde, 0xe2, - 0xe8, 0xbf, 0xdf, 0xe3, 0xe7, 0xbf, 0xdf, 0xe2, 0xe8, 0xbf, 0xdf, 0xe3, - 0xe7, 0xbf, 0xdf, 0xe2, 0xe8, 0xbf, 0xe0, 0xe3, 0xe7, 0xbf, 0xe0, 0xe2, - 0xe8, 0xbf, 0xe0, 0xe3, 0xe7, 0xbf, 0xe1, 0xe2, 0xe8, 0xbf, 0xe1, 0xe3, - 0xe7, 0xbf, 0xe1, 0xe2, 0xe8, 0xbf, 0xe1, 0xe3, 0xe7, 0xbf, 0xe2, 0xe2, - 0xe8, 0xbf, 0xe2, 0xe1, 0xe8, 0xbf, 0xe2, 0xe2, 0xe8, 0xbf, 0xe2, 0xe1, - 0xe8, 0xbf, 0xe3, 0xe2, 0xe8, 0xbf, 0xe3, 0xe1, 0xe8, 0xbf, 0xe3, 0xe2, - 0xe8, 0xbf, 0xe3, 0xe1, 0xe8, 0xbf, 0xe4, 0xe2, 0xe8, 0xbf, 0xe4, 0xe1, - 0xe8, 0xbf, 0xe4, 0xe2, 0xe8, 0xbf, 0xe4, 0xe1, 0xe8, 0xbf, 0xe5, 0xe2, - 0xe8, 0xbf, 0xe5, 0xe1, 0xe8, 0xbf, 0xe5, 0xe2, 0xe8, 0xbf, 0xe5, 0xe1, - 0xe8, 0xbf, 0xe6, 0xe2, 0xe8, 0xbf, 0xe6, 0xe1, 0xe8, 0xbf, 0xe6, 0xe1, - 0xe8, 0xbf, 0xe6, 0xe1, 0xe8, 0xbf, 0xe7, 0xe1, 0xe8, 0xbf, 0xe7, 0xe1, - 0xe8, 0xbf, 0xe7, 0xe1, 0xe8, 0xbf, 0xe7, 0xe1, 0xe8, 0xbf, 0xe8, 0xe1, - 0xe8, 0xbf, 0xe8, 0xe1, 0xe8, 0xbe, 0xe8, 0xe1, 0xe8, 0xbf, 0xe8, 0xe1, - 0xe8, 0xbe, 0xe8, 0xe1, 0xe9, 0xbf, 0xe8, 0xe1, 0xe9, 0xbe, 0xe8, 0xe1, - 0xe9, 0xbf, 0xe8, 0xe1, 0xe9, 0xbe, 0xe8, 0xe1, 0xea, 0xbf, 0xeb, 0xe1, - 0xea, 0xc1, 0xec, 0xe1, 0xea, 0xbf, 0xeb, 0xe1, 0xea, 0xc1, 0xec, 0xe1, - 0xeb, 0xbf, 0xec, 0xe1, 0xeb, 0xbf, 0xec, 0xe1, 0xeb, 0xbf, 0xec, 0xe1, - 0xeb, 0xbf, 0xec, 0xe1, 0xeb, 0xbf, 0xec, 0xe1, 0xeb, 0xbf, 0xec, 0xe1, - 0xeb, 0xbf, 0xec, 0xe1, 0xeb, 0xbf, 0xec, 0xdf, 0xec, 0xbf, 0xed, 0xe1, - 0xeb, 0xbf, 0xed, 0xdf, 0xec, 0xbf, 0xed, 0xe1, 0xeb, 0xbf, 0xed, 0xdf, - 0xec, 0xbf, 0xee, 0xe1, 0xeb, 0xbf, 0xee, 0xdf, 0xec, 0xbf, 0xee, 0xe1, - 0xeb, 0xbf, 0xee, 0xdf, 0xec, 0xbf, 0xef, 0xe1, 0xeb, 0xbf, 0xef, 0xdf, - 0xec, 0xbf, 0xef, 0xe1, 0xeb, 0xbf, 0xef, 0xdf, 0xec, 0xbf, 0xf0, 0xe1, - 0xeb, 0xbf, 0xf0, 0xdf, 0xec, 0xbf, 0xf0, 0xe1, 0xeb, 0xbf, 0xf0, 0xdf, - 0xec, 0xbf, 0xf1, 0xe1, 0xeb, 0xbf, 0xf1, 0xdf, 0xec, 0xbf, 0xf1, 0xe1, - 0xeb, 0xbf, 0xf1, 0xdf, 0xec, 0xbf, 0xf2, 0xe1, 0xeb, 0xbf, 0xf2, 0xdf, - 0xec, 0xbf, 0xf2, 0xe1, 0xeb, 0xbf, 0xf2, 0xdf, 0xec, 0xbf, 0xf2, 0xe1, - 0xeb, 0xbf, 0xf3, 0xdf, 0xec, 0xbf, 0xf3, 0xe1, 0xeb, 0xbf, 0xf3, 0xdf, - 0xec, 0xbf, 0xf3, 0xe1, 0xeb, 0xbf, 0xf4, 0xdf, 0xec, 0xbf, 0xf4, 0xe1, - 0xeb, 0xbf, 0xf4, 0xdf, 0xec, 0xbf, 0xf4, 0xdd, 0xec, 0xbf, 0xf5, 0xdf, - 0xec, 0xbf, 0xf5, 0xdd, 0xec, 0xbf, 0xf5, 0xdf, 0xec, 0xbf, 0xf5, 0xdd, - 0xec, 0xbf, 0xf5, 0xdf, 0xec, 0xbf, 0xf6, 0xdd, 0xec, 0xbf, 0xf6, 0xdf, - 0xec, 0xbf, 0xf6, 0xdd, 0xec, 0xbf, 0xf6, 0xdf, 0xec, 0xbf, 0xf7, 0xdd, - 0xec, 0xbf, 0xf7, 0xdf, 0xec, 0xbf, 0xf7, 0xdd, 0xec, 0xbf, 0xf7, 0xdf, - 0xec, 0xbf, 0xf8, 0xdd, 0xec, 0xbf, 0xf8, 0xdf, 0xec, 0xbf, 0xf8, 0xdd, - 0xec, 0xbf, 0xf8, 0xdf, 0xec, 0xbf, 0xf8, 0xdd, 0xec, 0xbf, 0xf9, 0xec, - 0xf1, 0xbf, 0xf9, 0xec, 0xf1, 0xbf, 0xf9, 0xec, 0xf1, 0xbf, 0xf9, 0xec, - 0xf1, 0xbf, 0xfa, 0xec, 0xf1, 0xbf, 0xfa, 0xec, 0xf1, 0xbf, 0xfa, 0xec, - 0xf1, 0xbf, 0xfa, 0xec, 0xf1, 0xbf, 0xfa, 0xec, 0xf1, 0xbf, 0xfb, 0xec, - 0xf1, 0xbf, 0xfb, 0xec, 0xf1, 0xbf, 0xfb, 0xec, 0xf1, 0xbf, 0xfb, 0xec, - 0xf1, 0xbf, 0xfc, 0xec, 0xf1, 0xbf, 0xfc, 0xec, 0xf1, 0xbf, 0xfc, 0xec, - 0xf1, 0xbf, 0xfc, 0xec, 0xf1, 0xbf, 0xfc, 0xec, 0xf1, 0xbf, 0xfd, 0xec, - 0xf1, 0xbf, 0xfd, 0xec, 0xf1, 0xbf, 0xfd, 0xec, 0xf1, 0xbf, 0xfd, 0xec, - 0xf1, 0xbf, 0xfe, 0xec, 0xf1, 0xbf, 0xfe, 0xec, 0xf1, 0xbf, 0xfe, 0xec, - 0xf1, 0xbf, 0xfe, 0xec, 0xf1, 0xbf, 0xfe, 0xec, 0xf1, 0xbf, 0xff, 0xec, - 0xf1, 0xbf, 0xff, 0xec, 0xf1, 0xbf, 0x03, 0xe6, 0x87, 0xbf, 0x0a, 0xe4, - 0x88, 0xbf, 0x0f, 0xe6, 0x87, 0xbf, 0x14, 0xe4, 0x88, 0xbf, 0x17, 0xe6, - 0x87, 0xbf, 0x1b, 0xe4, 0x88, 0xbf, 0x1e, 0xe6, 0x87, 0xbf, 0x20, 0xe4, - 0x88, 0xbf, 0x23, 0xe6, 0x87, 0xbf, 0x25, 0xe4, 0x88, 0xbf, 0x27, 0xe6, - 0x87, 0xbf, 0x29, 0xe4, 0x88, 0xbf, 0x2b, 0xe6, 0x87, 0xbf, 0x2d, 0xe4, - 0x88, 0xbf, 0x2f, 0xe6, 0x87, 0xbf, 0x31, 0xe4, 0x88, 0xbf, 0x32, 0xe6, - 0x87, 0xbf, 0x34, 0xe4, 0x88, 0xbf, 0x35, 0xe6, 0x87, 0xbf, 0x37, 0xe4, - 0x88, 0xbf, 0x38, 0xe6, 0x87, 0xbf, 0x3a, 0xe4, 0x88, 0xbf, 0x3b, 0xe6, - 0x87, 0xbf, 0x3c, 0xe4, 0x88, 0xbf, 0x3e, 0xe6, 0x87, 0xbf, 0x3f, 0xe4, - 0x88, 0xbf, 0x40, 0xe6, 0x87, 0xbf, 0x42, 0xe4, 0x88, 0xbf, 0x43, 0xe6, - 0x87, 0xbf, 0x44, 0xe4, 0x88, 0xbf, 0x45, 0xe6, 0x87, 0xbf, 0x46, 0xe4, - 0x88, 0xbf, 0x47, 0xe6, 0x87, 0xbf, 0x48, 0xe4, 0x88, 0xbf, 0x49, 0xe2, - 0x88, 0xbf, 0x4a, 0xe4, 0x88, 0xbf, 0x4b, 0xe2, 0x88, 0xbf, 0x4c, 0xe4, - 0x88, 0xbf, 0x4d, 0xe2, 0x88, 0xbf, 0x4e, 0xe4, 0x88, 0xbf, 0x4f, 0xe2, - 0x88, 0xbf, 0x50, 0xe4, 0x88, 0xbf, 0x51, 0xe2, 0x88, 0xbf, 0x52, 0xe4, - 0x88, 0xbf, 0x53, 0xe2, 0x88, 0xbf, 0x54, 0xe4, 0x88, 0xbf, 0x55, 0xe2, - 0x88, 0xbf, 0x56, 0xe4, 0x88, 0xbf, 0x57, 0xe2, 0x88, 0xbf, 0x58, 0xe4, - 0x88, 0xbf, 0x58, 0xe2, 0x88, 0xbf, 0x59, 0xe4, 0x88, 0xbf, 0x5a, 0xe2, - 0x88, 0xbf, 0x5b, 0xe4, 0x88, 0xbf, 0x5c, 0xe2, 0x88, 0xbf, 0x5d, 0xe4, - 0x88, 0xbf, 0x5d, 0xe2, 0x88, 0xbf, 0x5e, 0xe4, 0x88, 0xbf, 0x5f, 0xe2, - 0x88, 0xbf, 0x60, 0xe4, 0x88, 0xbf, 0x60, 0xe2, 0x88, 0xbf, 0x61, 0xe4, - 0x88, 0xbf, 0x62, 0xe2, 0x88, 0xbf, 0x63, 0xe4, 0x88, 0xbf, 0x63, 0xe2, - 0x88, 0xbf, 0x64, 0xe4, 0x88, 0xbf, 0x65, 0xe2, 0x88, 0xbf, 0x66, 0xe4, - 0x88, 0xbf, 0x66, 0xe2, 0x88, 0xbf, 0x67, 0xe4, 0x88, 0xbf, 0x68, 0xe2, - 0x88, 0xbf, 0x68, 0xe4, 0x88, 0xbf, 0x69, 0xe2, 0x88, 0xbf, 0x6a, 0xe4, - 0x88, 0xbf, 0x6a, 0xe2, 0x88, 0xbf, 0x6b, 0xe4, 0x88, 0xbf, 0x6c, 0xe2, - 0x88, 0xbf, 0x6c, 0xe4, 0x88, 0xbf, 0x6d, 0xe2, 0x88, 0xbf, 0x6e, 0xe4, - 0x88, 0xbf, 0x6e, 0xe2, 0x88, 0xbf, 0x6f, 0xe4, 0x88, 0xbf, 0x70, 0xe2, - 0x88, 0xbf, 0x70, 0xe4, 0x88, 0xbf, 0x71, 0xe2, 0x88, 0xbf, 0x72, 0xe4, - 0x88, 0xbf, 0x72, 0xe2, 0x88, 0xbf, 0x73, 0xe4, 0x88, 0xbf, 0x73, 0xe2, - 0x88, 0xbf, 0x74, 0xe4, 0x88, 0xbf, 0x75, 0xe2, 0x88, 0xbf, 0x75, 0xe1, - 0x89, 0xbf, 0x76, 0xe2, 0x88, 0xbf, 0x76, 0xe1, 0x89, 0xbf, 0x77, 0xe2, - 0x88, 0xbf, 0x78, 0xe1, 0x89, 0xbf, 0x78, 0xe2, 0x88, 0xbf, 0x79, 0xe1, - 0x89, 0xbf, 0x79, 0xe2, 0x88, 0xbf, 0x7a, 0xe1, 0x89, 0xbf, 0x7a, 0xe2, - 0x88, 0xbf, 0x7b, 0xe1, 0x89, 0xbf, 0x7c, 0xe2, 0x88, 0xbf, 0x7c, 0xe1, - 0x89, 0xbf, 0x7d, 0xe2, 0x88, 0xbf, 0x7d, 0xe1, 0x89, 0xbf, 0x7e, 0xe2, - 0x88, 0xbf, 0x7e, 0xe1, 0x89, 0xbf, 0x7f, 0xe2, 0x88, 0xbf, 0x7f, 0xe1, - 0x89, 0xbf, 0x80, 0xe2, 0x88, 0xbf, 0x81, 0xe1, 0x89, 0xbf, 0x81, 0xe2, - 0x88, 0xbf, 0x82, 0xe1, 0x89, 0xbf, 0x82, 0xe2, 0x88, 0xbf, 0x83, 0xe1, - 0x89, 0xbf, 0x83, 0xe2, 0x88, 0xbf, 0x84, 0xe1, 0x89, 0xbf, 0x84, 0xe1, - 0x89, 0xbf, 0x85, 0xe1, 0x89, 0xbf, 0x85, 0xe1, 0x89, 0xbf, 0x86, 0xe1, - 0x89, 0xbf, 0x86, 0xe1, 0x89, 0xbf, 0x87, 0xe1, 0x89, 0xbf, 0x87, 0xe1, - 0x89, 0xbf, 0x88, 0xe1, 0x89, 0xbf, 0x88, 0xe1, 0x89, 0xbf, 0x89, 0xe1, - 0x89, 0xbf, 0x88, 0xe1, 0x89, 0xbf, 0x89, 0xe1, 0x8a, 0xbf, 0x88, 0xe1, - 0x8a, 0xbf, 0x89, 0xe1, 0x8b, 0xbf, 0x88, 0xe1, 0x8b, 0xbf, 0x89, 0xe1, - 0x8c, 0xbf, 0x88, 0xe1, 0x8c, 0xbf, 0x89, 0xe1, 0x8d, 0xbf, 0x88, 0xe1, - 0x8d, 0xbf, 0x89, 0xe1, 0x8e, 0xbf, 0x88, 0xe1, 0x8e, 0xbf, 0x89, 0xe1, - 0x8e, 0xbf, 0x88, 0xe1, 0x8f, 0xbf, 0x89, 0xe1, 0x8f, 0xbf, 0x88, 0xe1, - 0x90, 0xbf, 0x89, 0xe1, 0x90, 0xbf, 0x89, 0xe1, 0x91, 0xbc, 0x89, 0xe1, - 0x91, 0xbf, 0x89, 0xe1, 0x92, 0xbc, 0x89, 0xe1, 0x92, 0xbf, 0x89, 0xe1, - 0x93, 0xbc, 0x89, 0xe1, 0x93, 0xbf, 0x89, 0xe1, 0x94, 0xbc, 0x89, 0xe1, - 0x94, 0xbf, 0x89, 0xe1, 0x94, 0xbc, 0x89, 0xe1, 0x95, 0xbf, 0x89, 0xe1, - 0x95, 0xbc, 0x89, 0xe1, 0x96, 0xbf, 0x89, 0xe1, 0x96, 0xbc, 0x89, 0xe1, - 0x97, 0xbf, 0x89, 0xe1, 0x97, 0xbc, 0x89, 0xe1, 0x98, 0xbf, 0x89, 0xe1, - 0x98, 0xbc, 0x89, 0xe1, 0x98, 0xbf, 0x89, 0xe1, 0x99, 0xbc, 0x89, 0xe1, - 0x99, 0xbf, 0x89, 0xe1, 0x9a, 0xbc, 0x89, 0xe1, 0x9a, 0xbf, 0x89, 0xe1, - 0x9a, 0xbc, 0x89, 0xe1, 0x9b, 0xbf, 0x89, 0xe1, 0x9b, 0xbc, 0x89, 0xe1, - 0x9c, 0xbf, 0x89, 0xe1, 0x9c, 0xbc, 0x89, 0xe1, 0x9d, 0xbf, 0x89, 0xe1, - 0x9d, 0xbc, 0x89, 0xe1, 0x9d, 0xbf, 0x89, 0xe1, 0x9e, 0xbc, 0x89, 0xe1, - 0x9e, 0xbf, 0x89, 0xe1, 0x9f, 0xbc, 0x89, 0xe1, 0x9f, 0xbf, 0x89, 0xe1, - 0x9f, 0xbc, 0x89, 0xe1, 0xa0, 0xbf, 0x89, 0xe1, 0xa0, 0xbc, 0x89, 0xe1, - 0xa1, 0xbf, 0x89, 0xe1, 0xa1, 0xbc, 0x89, 0xe1, 0xa1, 0xbf, 0x89, 0xe1, - 0xa2, 0xbc, 0x89, 0xe1, 0xa2, 0xbf, 0x89, 0xe1, 0xa3, 0xbc, 0x89, 0xe1, - 0xa3, 0xbf, 0x89, 0xe1, 0xa3, 0xbc, 0x89, 0xe1, 0xa4, 0xbf, 0x89, 0xe1, - 0xa4, 0xbc, 0x89, 0xe1, 0xa5, 0xbf, 0x89, 0xe1, 0xa5, 0xbc, 0x8a, 0xe1, - 0xa5, 0xb8, 0x89, 0xe1, 0xa6, 0xbc, 0x8a, 0xe1, 0xa6, 0xb8, 0x89, 0xe1, - 0xa6, 0xbc, 0x8a, 0xe1, 0xa7, 0xb8, 0x89, 0xe1, 0xa7, 0xbc, 0x8a, 0xe1, - 0xa8, 0xb8, 0x89, 0xe1, 0xa8, 0xbc, 0x8a, 0xe1, 0xa8, 0xb8, 0x89, 0xe1, - 0xa9, 0xbc, 0x8a, 0xe1, 0xa9, 0xb8, 0x89, 0xe1, 0xaa, 0xbc, 0x8a, 0xe1, - 0xaa, 0xb8, 0x89, 0xe1, 0xaa, 0xbc, 0x8a, 0xe1, 0xab, 0xb8, 0x89, 0xe1, - 0xab, 0xbc, 0x8a, 0xe1, 0xab, 0xb8, 0x89, 0xe1, 0xac, 0xbc, 0xa3, 0xe1, - 0xac, 0x98, 0x89, 0xe1, 0xac, 0xbc, 0xa3, 0xe1, 0xad, 0x98, 0xa3, 0xe1, - 0xad, 0x97, 0xa3, 0xe1, 0xae, 0x98, 0xa3, 0xe1, 0xae, 0x97, 0xa3, 0xe1, - 0xae, 0x98, 0xa3, 0xe1, 0xaf, 0x97, 0xa3, 0xe1, 0xaf, 0x98, 0xa3, 0xe1, - 0xaf, 0x97, 0xa3, 0xe1, 0xb0, 0x98, 0xa3, 0xe1, 0xb0, 0x97, 0xa3, 0xe1, - 0xb0, 0x98, 0xa3, 0xe1, 0xb1, 0x97, 0xa3, 0xe1, 0xb1, 0x98, 0xa3, 0xe1, - 0xb2, 0x97, 0xa3, 0xe1, 0xb2, 0x98, 0xce, 0xe1, 0xb2, 0xca, 0xce, 0xe1, - 0xb3, 0xc7, 0xce, 0xe1, 0xb3, 0xca, 0xce, 0xe1, 0xb3, 0xc7, 0xce, 0xe1, - 0xb4, 0xca, 0xce, 0xe1, 0xb4, 0xc7, 0xcf, 0xe1, 0xb4, 0xc5, 0xce, 0xe1, - 0xb5, 0xc7, 0xcf, 0xe1, 0xb5, 0xc5, 0xce, 0xe1, 0xb5, 0xc7, 0xcf, 0xe1, - 0xb6, 0xc5, 0xce, 0xe1, 0xb6, 0xc7, 0xcf, 0xe1, 0xb6, 0xc5, 0xce, 0xe1, - 0xb7, 0xc7, 0xcf, 0xe1, 0xb7, 0xc5, 0xce, 0xe1, 0xb7, 0xc7, 0xcf, 0xe1, - 0xb8, 0xc5, 0xce, 0xe1, 0xb8, 0xc7, 0xcf, 0xe1, 0xb8, 0xc5, 0xce, 0xe1, - 0xb9, 0xc7, 0xcf, 0xe1, 0xb9, 0xc5, 0xce, 0xe1, 0xb9, 0xc7, 0xcf, 0xe1, - 0xba, 0xc5, 0xce, 0xe1, 0xba, 0xc7, 0xcf, 0xe1, 0xba, 0xc5, 0xce, 0xe1, - 0xbb, 0xc7, 0xcf, 0xe1, 0xbb, 0xc5, 0xce, 0xe1, 0xbb, 0xc7, 0xcf, 0xe1, - 0xbc, 0xc5, 0xce, 0xe1, 0xbc, 0xc7, 0xcf, 0xe1, 0xbc, 0xc5, 0xce, 0xe1, - 0xbd, 0xc7, 0xcf, 0xe1, 0xbd, 0xc5, 0xce, 0xe1, 0xbd, 0xc7, 0xcf, 0xe1, - 0xbe, 0xc5, 0xcf, 0xe1, 0xbe, 0xc2, 0xcf, 0xe1, 0xbe, 0xc5, 0xcf, 0xe1, - 0xbf, 0xc2, 0xcf, 0xe1, 0xbf, 0xc5, 0xcf, 0xe1, 0xbf, 0xc2, 0xcf, 0xe1, - 0xc0, 0xc5, 0xcf, 0xe1, 0xc0, 0xc2, 0xcf, 0xe1, 0xc0, 0xc5, 0xcf, 0xe1, - 0xc1, 0xc2, 0xcf, 0xe1, 0xc1, 0xc5, 0xcf, 0xe1, 0xc1, 0xc2, 0xcf, 0xe1, - 0xc1, 0xc5, 0xcf, 0xe1, 0xc2, 0xc2, 0xcf, 0xe1, 0xc2, 0xc5, 0xcf, 0xe1, - 0xc2, 0xc2, 0xcf, 0xe1, 0xc3, 0xc5, 0xcf, 0xe1, 0xc3, 0xc2, 0xcf, 0xe1, - 0xc3, 0xc5, 0xcf, 0xe1, 0xc4, 0xc2, 0xcf, 0xe1, 0xc4, 0xc5, 0xcf, 0xe1, - 0xc4, 0xc2, 0xcf, 0xe1, 0xc5, 0xbf, 0xcf, 0xe1, 0xc5, 0xc2, 0xcf, 0xe1, - 0xc5, 0xbf, 0xcf, 0xe1, 0xc6, 0xc2, 0xcf, 0xe1, 0xc6, 0xbf, 0xcf, 0xe1, - 0xc6, 0xc2, 0xcf, 0xe1, 0xc6, 0xbf, 0xcf, 0xe1, 0xc7, 0xc2, 0xcf, 0xe1, - 0xc7, 0xbf, 0xcf, 0xe1, 0xc7, 0xc2, 0xcf, 0xe1, 0xc8, 0xbf, 0xcf, 0xe1, - 0xc8, 0xc2, 0xcf, 0xe1, 0xc8, 0xbf, 0xcf, 0xe1, 0xc9, 0xc2, 0xcf, 0xe1, - 0xc9, 0xbf, 0xcf, 0xe1, 0xc9, 0xc2, 0xcf, 0xe1, 0xc9, 0xbf, 0xcf, 0xe1, - 0xca, 0xc2, 0xcf, 0xe1, 0xca, 0xbf, 0xcf, 0xe1, 0xca, 0xc2, 0xcf, 0xe1, - 0xcb, 0xbf, 0xcf, 0xe1, 0xcb, 0xc2, 0xcf, 0xe1, 0xcb, 0xbf, 0xcf, 0xe1, - 0xcc, 0xc2, 0xcf, 0xe1, 0xcc, 0xbf, 0xcf, 0xe1, 0xcc, 0xc2, 0xcf, 0xe1, - 0xcc, 0xbf, 0xcf, 0xe1, 0xcd, 0xc2, 0xcf, 0xe1, 0xcd, 0xbf, 0xd0, 0xe1, - 0xcd, 0xbf, 0xcf, 0xe1, 0xce, 0xbf, 0xd0, 0xe1, 0xce, 0xbf, 0xcf, 0xe1, - 0xce, 0xbf, 0xd0, 0xe1, 0xce, 0xbf, 0xcf, 0xe1, 0xcf, 0xbf, 0xd0, 0xe1, - 0xcf, 0xbf, 0xcf, 0xe0, 0xcf, 0xbf, 0xd0, 0xe1, 0xcf, 0xbf, 0xd0, 0xe0, - 0xcf, 0xbf, 0xd0, 0xe1, 0xcf, 0xbf, 0xd0, 0xe0, 0xcf, 0xbf, 0xd1, 0xe1, - 0xcf, 0xbf, 0xd1, 0xe0, 0xcf, 0xbf, 0xd1, 0xe1, 0xcf, 0xbf, 0xd2, 0xe0, - 0xcf, 0xbf, 0xd2, 0xdf, 0xd0, 0xbf, 0xd2, 0xe0, 0xcf, 0xbf, 0xd2, 0xdf, - 0xd0, 0xbf, 0xd3, 0xe0, 0xcf, 0xbf, 0xd3, 0xdf, 0xd0, 0xbf, 0xd3, 0xe0, - 0xcf, 0xbf, 0xd4, 0xdf, 0xd0, 0xbf, 0xd4, 0xe0, 0xcf, 0xbf, 0xd4, 0xdf, - 0xd0, 0xbf, 0xd4, 0xe0, 0xcf, 0xbf, 0xd5, 0xdf, 0xd0, 0xbf, 0xd5, 0xe0, - 0xcf, 0xbf, 0xd5, 0xdf, 0xd0, 0xbf, 0xd6, 0xe0, 0xcf, 0xbf, 0xd6, 0xdf, - 0xd0, 0xbf, 0xd6, 0xe0, 0xcf, 0xbf, 0xd6, 0xdf, 0xd0, 0xbf, 0xd7, 0xe0, - 0xcf, 0xbf, 0xd7, 0xdf, 0xd0, 0xbf, 0xd7, 0xe0, 0xcf, 0xbf, 0xd7, 0xdf, - 0xd0, 0xbf, 0xd8, 0xe0, 0xcf, 0xbf, 0xd8, 0xdf, 0xd0, 0xbf, 0xd8, 0xe0, - 0xcf, 0xbf, 0xd9, 0xdf, 0xd0, 0xbf, 0xd9, 0xe0, 0xcf, 0xbf, 0xd9, 0xdf, - 0xd0, 0xbf, 0xd9, 0xe0, 0xcf, 0xbf, 0xda, 0xdf, 0xd0, 0xbf, 0xda, 0xde, - 0xd0, 0xbf, 0xda, 0xdf, 0xd0, 0xbf, 0xda, 0xde, 0xd0, 0xbf, 0xdb, 0xdf, - 0xd0, 0xbf, 0xdb, 0xde, 0xd0, 0xbf, 0xdb, 0xdf, 0xd0, 0xbf, 0xdb, 0xde, - 0xd0, 0xbf, 0xdc, 0xdf, 0xd0, 0xbf, 0xdc, 0xe3, 0xe7, 0xbf, 0xdc, 0xe2, - 0xe8, 0xbf, 0xdd, 0xe3, 0xe7, 0xbf, 0xdd, 0xe2, 0xe8, 0xbf, 0xdd, 0xe3, - 0xe7, 0xbf, 0xdd, 0xe2, 0xe8, 0xbf, 0xde, 0xe3, 0xe7, 0xbf, 0xde, 0xe2, - 0xe8, 0xbf, 0xde, 0xe3, 0xe7, 0xbf, 0xde, 0xe2, 0xe8, 0xbf, 0xdf, 0xe3, - 0xe7, 0xbf, 0xdf, 0xe2, 0xe8, 0xbf, 0xdf, 0xe3, 0xe7, 0xbf, 0xdf, 0xe2, - 0xe8, 0xbf, 0xe0, 0xe3, 0xe7, 0xbf, 0xe0, 0xe2, 0xe8, 0xbf, 0xe0, 0xe3, - 0xe7, 0xbf, 0xe1, 0xe2, 0xe8, 0xbf, 0xe1, 0xe3, 0xe7, 0xbf, 0xe1, 0xe2, - 0xe8, 0xbf, 0xe1, 0xe3, 0xe7, 0xbf, 0xe2, 0xe2, 0xe8, 0xbf, 0xe2, 0xe1, - 0xe8, 0xbf, 0xe2, 0xe2, 0xe8, 0xbf, 0xe2, 0xe1, 0xe8, 0xbf, 0xe3, 0xe2, - 0xe8, 0xbf, 0xe3, 0xe1, 0xe8, 0xbf, 0xe3, 0xe2, 0xe8, 0xbf, 0xe3, 0xe1, - 0xe8, 0xbf, 0xe4, 0xe2, 0xe8, 0xbf, 0xe4, 0xe1, 0xe8, 0xbf, 0xe4, 0xe2, - 0xe8, 0xbf, 0xe4, 0xe1, 0xe8, 0xbf, 0xe5, 0xe2, 0xe8, 0xbf, 0xe5, 0xe1, - 0xe8, 0xbf, 0xe5, 0xe2, 0xe8, 0xbf, 0xe5, 0xe1, 0xe8, 0xbf, 0xe6, 0xe2, - 0xe8, 0xbf, 0xe6, 0xe1, 0xe8, 0xbf, 0xe6, 0xe2, 0xe8, 0xbf, 0xe6, 0xe1, - 0xe8, 0xbf, 0xe7, 0xe2, 0xe8, 0xbf, 0xe7, 0xe1, 0xe8, 0xbf, 0xe7, 0xe1, - 0xe8, 0xbf, 0xe7, 0xe1, 0xe8, 0xbf, 0xe8, 0xe1, 0xe8, 0xbf, 0xe7, 0xe1, - 0xe8, 0xbf, 0xe8, 0xe1, 0xe8, 0xbf, 0xe7, 0xe1, 0xe8, 0xbf, 0xe8, 0xe1, - 0xe9, 0xbf, 0xe8, 0xe1, 0xe9, 0xbe, 0xe8, 0xe1, 0xe9, 0xbf, 0xe8, 0xe1, - 0xe9, 0xbe, 0xe8, 0xe1, 0xea, 0xbf, 0xeb, 0xe1, 0xea, 0xc1, 0xec, 0xe1, - 0xea, 0xbf, 0xeb, 0xe1, 0xea, 0xc1, 0xec, 0xe1, 0xeb, 0xbf, 0xec, 0xe1, - 0xeb, 0xbf, 0xec, 0xe1, 0xeb, 0xbf, 0xec, 0xe1, 0xeb, 0xbf, 0xec, 0xe1, - 0xeb, 0xbf, 0xec, 0xe1, 0xeb, 0xbf, 0xec, 0xe1, 0xeb, 0xbf, 0xec, 0xe1, - 0xeb, 0xbf, 0xec, 0xe1, 0xeb, 0xbf, 0xed, 0xe1, 0xeb, 0xbf, 0xed, 0xe1, - 0xeb, 0xbf, 0xed, 0xe1, 0xeb, 0xbf, 0xed, 0xdf, 0xec, 0xbf, 0xee, 0xe1, - 0xeb, 0xbf, 0xee, 0xdf, 0xec, 0xbf, 0xee, 0xe1, 0xeb, 0xbf, 0xee, 0xdf, - 0xec, 0xbf, 0xef, 0xe1, 0xeb, 0xbf, 0xef, 0xdf, 0xec, 0xbf, 0xef, 0xe1, - 0xeb, 0xbf, 0xef, 0xdf, 0xec, 0xbf, 0xf0, 0xe1, 0xeb, 0xbf, 0xf0, 0xdf, - 0xec, 0xbf, 0xf0, 0xe1, 0xeb, 0xbf, 0xf0, 0xdf, 0xec, 0xbf, 0xf1, 0xe1, - 0xeb, 0xbf, 0xf1, 0xdf, 0xec, 0xbf, 0xf1, 0xe1, 0xeb, 0xbf, 0xf1, 0xdf, - 0xec, 0xbf, 0xf2, 0xe1, 0xeb, 0xbf, 0xf2, 0xdf, 0xec, 0xbf, 0xf2, 0xe1, - 0xeb, 0xbf, 0xf2, 0xdf, 0xec, 0xbf, 0xf2, 0xe1, 0xeb, 0xbf, 0xf3, 0xdf, - 0xec, 0xbf, 0xf3, 0xe1, 0xeb, 0xbf, 0xf3, 0xdf, 0xec, 0xbf, 0xf3, 0xe1, - 0xeb, 0xbf, 0xf4, 0xdf, 0xec, 0xbf, 0xf4, 0xe1, 0xeb, 0xbf, 0xf4, 0xdf, - 0xec, 0xbf, 0xf4, 0xde, 0xec, 0xbf, 0xf5, 0xdf, 0xec, 0xbf, 0xf5, 0xde, - 0xec, 0xbf, 0xf5, 0xdf, 0xec, 0xbf, 0xf5, 0xde, 0xec, 0xbf, 0xf5, 0xdf, - 0xec, 0xbf, 0xf6, 0xde, 0xec, 0xbf, 0xf6, 0xdf, 0xec, 0xbf, 0xf6, 0xde, - 0xec, 0xbf, 0xf6, 0xdf, 0xec, 0xbf, 0xf7, 0xde, 0xec, 0xbf, 0xf7, 0xdf, - 0xec, 0xbf, 0xf7, 0xde, 0xec, 0xbf, 0xf7, 0xdf, 0xec, 0xbf, 0xf8, 0xde, - 0xec, 0xbf, 0xf8, 0xdf, 0xec, 0xbf, 0xf8, 0xde, 0xec, 0xbf, 0xf8, 0xdf, - 0xec, 0xbf, 0xf8, 0xde, 0xec, 0xbf, 0xf9, 0xec, 0xf1, 0xbf, 0xf9, 0xec, - 0xf1, 0xbf, 0xf9, 0xec, 0xf1, 0xbf, 0xf9, 0xec, 0xf1, 0xbf, 0xfa, 0xec, - 0xf1, 0xbf, 0xfa, 0xec, 0xf1, 0xbf, 0xfa, 0xec, 0xf1, 0xbf, 0xfa, 0xec, - 0xf1, 0xbf, 0xfa, 0xec, 0xf1, 0xbf, 0xfb, 0xec, 0xf1, 0xbf, 0xfb, 0xec, - 0xf1, 0xbf, 0xfb, 0xec, 0xf1, 0xbf, 0xfb, 0xec, 0xf1, 0xbf, 0xfc, 0xec, - 0xf1, 0xbf, 0xfc, 0xec, 0xf1, 0xbf, 0xfc, 0xec, 0xf1, 0xbf, 0xfc, 0xec, - 0xf1, 0xbf, 0xfc, 0xec, 0xf1, 0xbf, 0xfd, 0xec, 0xf1, 0xbf, 0xfd, 0xec, - 0xf1, 0xbf, 0xfd, 0xec, 0xf1, 0xbf, 0xfd, 0xec, 0xf1, 0xbf, 0xfe, 0xec, - 0xf1, 0xbf, 0xfe, 0xec, 0xf1, 0xbf, 0xfe, 0xec, 0xf1, 0xbf, 0xfe, 0xec, - 0xf1, 0xbf, 0xfe, 0xec, 0xf1, 0xbf, 0xff, 0xec, 0xf1, 0xbf, 0xff, 0xec, - 0xf1, 0xbf, 0x03, 0xe6, 0x87, 0xc0, 0x0a, 0xe6, 0x87, 0xc0, 0x0f, 0xe6, - 0x87, 0xc0, 0x14, 0xe4, 0x88, 0xc0, 0x17, 0xe6, 0x87, 0xc0, 0x1b, 0xe4, - 0x88, 0xc0, 0x1e, 0xe6, 0x87, 0xc0, 0x20, 0xe4, 0x88, 0xc0, 0x23, 0xe6, - 0x87, 0xc0, 0x25, 0xe4, 0x88, 0xc0, 0x27, 0xe6, 0x87, 0xc0, 0x29, 0xe4, - 0x88, 0xc0, 0x2b, 0xe6, 0x87, 0xc0, 0x2d, 0xe4, 0x88, 0xc0, 0x2f, 0xe6, - 0x87, 0xc0, 0x31, 0xe4, 0x88, 0xc0, 0x32, 0xe6, 0x87, 0xc0, 0x34, 0xe4, - 0x88, 0xc0, 0x35, 0xe6, 0x87, 0xc0, 0x37, 0xe4, 0x88, 0xc0, 0x38, 0xe6, - 0x87, 0xc0, 0x3a, 0xe4, 0x88, 0xc0, 0x3b, 0xe6, 0x87, 0xc0, 0x3c, 0xe4, - 0x88, 0xc0, 0x3e, 0xe6, 0x87, 0xc0, 0x3f, 0xe4, 0x88, 0xc0, 0x40, 0xe6, - 0x87, 0xc0, 0x42, 0xe4, 0x88, 0xc0, 0x43, 0xe6, 0x87, 0xc0, 0x44, 0xe4, - 0x88, 0xc0, 0x45, 0xe6, 0x87, 0xc0, 0x46, 0xe4, 0x88, 0xc0, 0x47, 0xe6, - 0x87, 0xc0, 0x48, 0xe4, 0x88, 0xc0, 0x49, 0xe6, 0x87, 0xc0, 0x4a, 0xe4, - 0x88, 0xc0, 0x4b, 0xe6, 0x87, 0xc0, 0x4c, 0xe4, 0x88, 0xc0, 0x4d, 0xe6, - 0x87, 0xc0, 0x4e, 0xe4, 0x88, 0xc0, 0x4f, 0xe6, 0x87, 0xc0, 0x50, 0xe4, - 0x88, 0xc0, 0x51, 0xe6, 0x87, 0xc0, 0x52, 0xe4, 0x88, 0xc0, 0x53, 0xe6, - 0x87, 0xc0, 0x54, 0xe4, 0x88, 0xc0, 0x55, 0xe6, 0x87, 0xc0, 0x56, 0xe4, - 0x88, 0xc0, 0x57, 0xe6, 0x87, 0xc0, 0x58, 0xe4, 0x88, 0xc0, 0x58, 0xe6, - 0x87, 0xc0, 0x59, 0xe4, 0x88, 0xc0, 0x5a, 0xe6, 0x87, 0xc0, 0x5b, 0xe4, - 0x88, 0xc0, 0x5c, 0xe3, 0x88, 0xc0, 0x5d, 0xe4, 0x88, 0xc0, 0x5d, 0xe3, - 0x88, 0xc0, 0x5e, 0xe4, 0x88, 0xc0, 0x5f, 0xe3, 0x88, 0xc0, 0x60, 0xe4, - 0x88, 0xc0, 0x60, 0xe3, 0x88, 0xc0, 0x61, 0xe4, 0x88, 0xc0, 0x62, 0xe3, - 0x88, 0xc0, 0x63, 0xe4, 0x88, 0xc0, 0x63, 0xe3, 0x88, 0xc0, 0x64, 0xe4, - 0x88, 0xc0, 0x65, 0xe3, 0x88, 0xc0, 0x66, 0xe4, 0x88, 0xc0, 0x66, 0xe3, - 0x88, 0xc0, 0x67, 0xe4, 0x88, 0xc0, 0x68, 0xe3, 0x88, 0xc0, 0x68, 0xe4, - 0x88, 0xc0, 0x69, 0xe3, 0x88, 0xc0, 0x6a, 0xe4, 0x88, 0xc0, 0x6a, 0xe3, - 0x88, 0xc0, 0x6b, 0xe4, 0x88, 0xc0, 0x6c, 0xe3, 0x88, 0xc0, 0x6c, 0xe4, - 0x88, 0xc0, 0x6d, 0xe3, 0x88, 0xc0, 0x6e, 0xe4, 0x88, 0xc0, 0x6e, 0xe3, - 0x88, 0xc0, 0x6f, 0xe4, 0x88, 0xc0, 0x70, 0xe3, 0x88, 0xc0, 0x70, 0xe4, - 0x88, 0xc0, 0x71, 0xe3, 0x88, 0xc0, 0x72, 0xe4, 0x88, 0xc0, 0x72, 0xe3, - 0x88, 0xc0, 0x73, 0xe4, 0x88, 0xc0, 0x73, 0xe3, 0x88, 0xc0, 0x74, 0xe4, - 0x88, 0xc0, 0x75, 0xe3, 0x88, 0xc0, 0x75, 0xe1, 0x89, 0xc0, 0x76, 0xe3, - 0x88, 0xc0, 0x76, 0xe1, 0x89, 0xc0, 0x77, 0xe3, 0x88, 0xc0, 0x78, 0xe1, - 0x89, 0xc0, 0x78, 0xe3, 0x88, 0xc0, 0x79, 0xe1, 0x89, 0xc0, 0x79, 0xe3, - 0x88, 0xc0, 0x7a, 0xe1, 0x89, 0xc0, 0x7a, 0xe3, 0x88, 0xc0, 0x7b, 0xe1, - 0x89, 0xc0, 0x7c, 0xe3, 0x88, 0xc0, 0x7c, 0xe1, 0x89, 0xc0, 0x7d, 0xe3, - 0x88, 0xc0, 0x7d, 0xe1, 0x89, 0xc0, 0x7e, 0xe3, 0x88, 0xc0, 0x7e, 0xe1, - 0x89, 0xc0, 0x7f, 0xe3, 0x88, 0xc0, 0x7f, 0xe1, 0x89, 0xc0, 0x80, 0xe3, - 0x88, 0xc0, 0x81, 0xe1, 0x89, 0xc0, 0x81, 0xe3, 0x88, 0xc0, 0x82, 0xe1, - 0x89, 0xc0, 0x82, 0xe3, 0x88, 0xc0, 0x83, 0xe1, 0x89, 0xc0, 0x83, 0xe3, - 0x88, 0xc0, 0x84, 0xe1, 0x89, 0xc0, 0x84, 0xe1, 0x89, 0xc0, 0x85, 0xe1, - 0x89, 0xc0, 0x85, 0xe1, 0x89, 0xc0, 0x86, 0xe1, 0x89, 0xc0, 0x86, 0xe1, - 0x89, 0xc0, 0x87, 0xe1, 0x89, 0xc0, 0x87, 0xe1, 0x89, 0xc0, 0x88, 0xe1, - 0x89, 0xc0, 0x88, 0xe1, 0x89, 0xc0, 0x88, 0xe1, 0x89, 0xc0, 0x88, 0xe1, - 0x89, 0xc0, 0x88, 0xe1, 0x8a, 0xc0, 0x88, 0xe1, 0x8a, 0xc0, 0x89, 0xe1, - 0x8b, 0xbe, 0x88, 0xe1, 0x8b, 0xc0, 0x89, 0xe1, 0x8c, 0xbe, 0x88, 0xe1, - 0x8c, 0xc0, 0x89, 0xe1, 0x8d, 0xbe, 0x88, 0xe1, 0x8d, 0xc0, 0x89, 0xe1, - 0x8e, 0xbe, 0x88, 0xe1, 0x8e, 0xc0, 0x89, 0xe1, 0x8e, 0xbe, 0x88, 0xe1, - 0x8f, 0xc0, 0x89, 0xe1, 0x8f, 0xbe, 0x88, 0xe1, 0x90, 0xc0, 0x89, 0xe1, - 0x90, 0xbe, 0x88, 0xe1, 0x91, 0xc0, 0x89, 0xe1, 0x91, 0xbe, 0x88, 0xe1, - 0x92, 0xc0, 0x89, 0xe1, 0x92, 0xbe, 0x88, 0xe1, 0x93, 0xc0, 0x89, 0xe1, - 0x93, 0xbe, 0x88, 0xe1, 0x94, 0xc0, 0x89, 0xe1, 0x94, 0xbe, 0x89, 0xe1, - 0x94, 0xbb, 0x89, 0xe1, 0x95, 0xbe, 0x89, 0xe1, 0x95, 0xbb, 0x89, 0xe1, - 0x96, 0xbe, 0x89, 0xe1, 0x96, 0xbb, 0x89, 0xe1, 0x97, 0xbe, 0x89, 0xe1, - 0x97, 0xbb, 0x89, 0xe1, 0x98, 0xbe, 0x89, 0xe1, 0x98, 0xbb, 0x89, 0xe1, - 0x98, 0xbe, 0x89, 0xe1, 0x99, 0xbb, 0x89, 0xe1, 0x99, 0xbe, 0x89, 0xe1, - 0x9a, 0xbb, 0x89, 0xe1, 0x9a, 0xbe, 0x89, 0xe1, 0x9a, 0xbb, 0x89, 0xe1, - 0x9b, 0xbe, 0x89, 0xe1, 0x9b, 0xbb, 0x89, 0xe1, 0x9c, 0xbe, 0x89, 0xe1, - 0x9c, 0xbb, 0x89, 0xe1, 0x9d, 0xbe, 0x89, 0xe1, 0x9d, 0xbb, 0x89, 0xe1, - 0x9d, 0xbe, 0x89, 0xe1, 0x9e, 0xbb, 0x89, 0xe1, 0x9e, 0xbe, 0x89, 0xe1, - 0x9f, 0xbb, 0x89, 0xe1, 0x9f, 0xbe, 0x89, 0xe1, 0x9f, 0xbb, 0x89, 0xe1, - 0xa0, 0xbe, 0x89, 0xe1, 0xa0, 0xbb, 0x89, 0xe1, 0xa1, 0xbe, 0x89, 0xe1, - 0xa1, 0xbb, 0x89, 0xe1, 0xa1, 0xbe, 0x89, 0xe1, 0xa2, 0xbb, 0x89, 0xe1, - 0xa2, 0xbe, 0x89, 0xe1, 0xa3, 0xbb, 0x89, 0xe1, 0xa3, 0xbe, 0x89, 0xe1, - 0xa3, 0xbb, 0x8a, 0xe1, 0xa4, 0xb8, 0x89, 0xe1, 0xa4, 0xbb, 0x8a, 0xe1, - 0xa5, 0xb8, 0x89, 0xe1, 0xa5, 0xbb, 0x8a, 0xe1, 0xa5, 0xb8, 0x89, 0xe1, - 0xa6, 0xbb, 0x8a, 0xe1, 0xa6, 0xb8, 0x89, 0xe1, 0xa6, 0xbb, 0x8a, 0xe1, - 0xa7, 0xb8, 0x89, 0xe1, 0xa7, 0xbb, 0x8a, 0xe1, 0xa8, 0xb8, 0x89, 0xe1, - 0xa8, 0xbb, 0x8a, 0xe1, 0xa8, 0xb8, 0x89, 0xe1, 0xa9, 0xbb, 0x8a, 0xe1, - 0xa9, 0xb8, 0x89, 0xe1, 0xaa, 0xbb, 0x8a, 0xe1, 0xaa, 0xb8, 0x89, 0xe1, - 0xaa, 0xbb, 0x8a, 0xe1, 0xab, 0xb8, 0x89, 0xe1, 0xab, 0xbb, 0x8a, 0xe1, - 0xab, 0xb8, 0x89, 0xe1, 0xac, 0xbb, 0x8a, 0xe1, 0xac, 0xb8, 0x89, 0xe1, - 0xac, 0xbb, 0x8a, 0xe1, 0xad, 0xb8, 0xa3, 0xe1, 0xad, 0x97, 0xa3, 0xe1, - 0xae, 0x97, 0xa3, 0xe1, 0xae, 0x97, 0xa3, 0xe1, 0xae, 0x97, 0xa3, 0xe1, - 0xaf, 0x97, 0xa3, 0xe1, 0xaf, 0x97, 0xa3, 0xe1, 0xaf, 0x97, 0xa3, 0xe1, - 0xb0, 0x97, 0xa3, 0xe1, 0xb0, 0x97, 0xa3, 0xe1, 0xb0, 0x97, 0xa3, 0xe1, - 0xb1, 0x97, 0xa3, 0xe1, 0xb1, 0x97, 0xa3, 0xe1, 0xb2, 0x97, 0xa3, 0xe1, - 0xb2, 0x97, 0xcf, 0xe1, 0xb2, 0xc5, 0xce, 0xe1, 0xb3, 0xc8, 0xcf, 0xe1, - 0xb3, 0xc5, 0xce, 0xe1, 0xb3, 0xc8, 0xcf, 0xe1, 0xb4, 0xc5, 0xce, 0xe1, - 0xb4, 0xc8, 0xcf, 0xe1, 0xb4, 0xc5, 0xce, 0xe1, 0xb5, 0xc8, 0xcf, 0xe1, - 0xb5, 0xc5, 0xce, 0xe1, 0xb5, 0xc8, 0xcf, 0xe1, 0xb6, 0xc5, 0xce, 0xe1, - 0xb6, 0xc8, 0xcf, 0xe1, 0xb6, 0xc5, 0xce, 0xe1, 0xb7, 0xc8, 0xcf, 0xe1, - 0xb7, 0xc5, 0xce, 0xe1, 0xb7, 0xc8, 0xcf, 0xe1, 0xb8, 0xc5, 0xce, 0xe1, - 0xb8, 0xc8, 0xcf, 0xe1, 0xb8, 0xc5, 0xce, 0xe1, 0xb9, 0xc8, 0xcf, 0xe1, - 0xb9, 0xc5, 0xce, 0xe1, 0xb9, 0xc8, 0xcf, 0xe1, 0xba, 0xc5, 0xce, 0xe1, - 0xba, 0xc8, 0xcf, 0xe1, 0xba, 0xc5, 0xce, 0xe1, 0xbb, 0xc8, 0xcf, 0xe1, - 0xbb, 0xc5, 0xce, 0xe1, 0xbb, 0xc8, 0xcf, 0xe1, 0xbc, 0xc5, 0xce, 0xe1, - 0xbc, 0xc8, 0xcf, 0xe1, 0xbc, 0xc5, 0xce, 0xe1, 0xbd, 0xc8, 0xcf, 0xe1, - 0xbd, 0xc5, 0xce, 0xe1, 0xbd, 0xc8, 0xcf, 0xe1, 0xbe, 0xc5, 0xcf, 0xe1, - 0xbe, 0xc3, 0xcf, 0xe1, 0xbe, 0xc5, 0xcf, 0xe1, 0xbf, 0xc3, 0xcf, 0xe1, - 0xbf, 0xc5, 0xcf, 0xe1, 0xbf, 0xc3, 0xcf, 0xe1, 0xc0, 0xc5, 0xcf, 0xe1, - 0xc0, 0xc3, 0xcf, 0xe1, 0xc0, 0xc5, 0xcf, 0xe1, 0xc1, 0xc3, 0xcf, 0xe1, - 0xc1, 0xc5, 0xcf, 0xe1, 0xc1, 0xc3, 0xcf, 0xe1, 0xc1, 0xc5, 0xcf, 0xe1, - 0xc2, 0xc3, 0xcf, 0xe1, 0xc2, 0xc5, 0xcf, 0xe1, 0xc2, 0xc3, 0xcf, 0xe1, - 0xc3, 0xc5, 0xcf, 0xe1, 0xc3, 0xc3, 0xcf, 0xe1, 0xc3, 0xc5, 0xcf, 0xe1, - 0xc4, 0xc3, 0xcf, 0xe1, 0xc4, 0xc5, 0xcf, 0xe1, 0xc4, 0xc3, 0xcf, 0xe1, - 0xc5, 0xc5, 0xcf, 0xe1, 0xc5, 0xc3, 0xcf, 0xe1, 0xc5, 0xc5, 0xcf, 0xe1, - 0xc6, 0xc3, 0xcf, 0xe1, 0xc6, 0xc5, 0xcf, 0xe1, 0xc6, 0xc3, 0xcf, 0xe1, - 0xc6, 0xc5, 0xcf, 0xe1, 0xc7, 0xc3, 0xcf, 0xe1, 0xc7, 0xc5, 0xcf, 0xe1, - 0xc7, 0xc3, 0xcf, 0xe1, 0xc8, 0xc5, 0xcf, 0xe1, 0xc8, 0xc3, 0xcf, 0xe1, - 0xc8, 0xc0, 0xcf, 0xe1, 0xc9, 0xc3, 0xcf, 0xe1, 0xc9, 0xc0, 0xcf, 0xe1, - 0xc9, 0xc3, 0xcf, 0xe1, 0xc9, 0xc0, 0xcf, 0xe1, 0xca, 0xc3, 0xcf, 0xe1, - 0xca, 0xc0, 0xcf, 0xe1, 0xca, 0xc3, 0xcf, 0xe1, 0xcb, 0xc0, 0xcf, 0xe1, - 0xcb, 0xc3, 0xcf, 0xe1, 0xcb, 0xc0, 0xcf, 0xe1, 0xcc, 0xc3, 0xcf, 0xe1, - 0xcc, 0xc0, 0xcf, 0xe1, 0xcc, 0xc3, 0xcf, 0xe1, 0xcc, 0xc0, 0xcf, 0xe1, - 0xcd, 0xc3, 0xcf, 0xe1, 0xcd, 0xc0, 0xd0, 0xe1, 0xcd, 0xc0, 0xcf, 0xe1, - 0xce, 0xc0, 0xd0, 0xe1, 0xce, 0xc0, 0xcf, 0xe1, 0xce, 0xc0, 0xd0, 0xe1, - 0xce, 0xc0, 0xcf, 0xe1, 0xcf, 0xc0, 0xd0, 0xe1, 0xcf, 0xc0, 0xcf, 0xe1, - 0xcf, 0xc0, 0xd0, 0xe1, 0xcf, 0xc0, 0xd0, 0xe1, 0xcf, 0xc0, 0xd0, 0xe1, - 0xcf, 0xc0, 0xd0, 0xe1, 0xcf, 0xc0, 0xd1, 0xe1, 0xcf, 0xc0, 0xd1, 0xe1, - 0xcf, 0xc0, 0xd1, 0xe1, 0xcf, 0xc0, 0xd2, 0xe1, 0xcf, 0xc0, 0xd2, 0xe1, - 0xcf, 0xc0, 0xd2, 0xe1, 0xcf, 0xc0, 0xd2, 0xe1, 0xcf, 0xc0, 0xd3, 0xe1, - 0xcf, 0xc0, 0xd3, 0xe1, 0xcf, 0xc0, 0xd3, 0xe1, 0xcf, 0xc0, 0xd4, 0xe1, - 0xcf, 0xc0, 0xd4, 0xe1, 0xcf, 0xc0, 0xd4, 0xdf, 0xd0, 0xc0, 0xd4, 0xe1, - 0xcf, 0xc0, 0xd5, 0xdf, 0xd0, 0xc0, 0xd5, 0xe1, 0xcf, 0xc0, 0xd5, 0xdf, - 0xd0, 0xc0, 0xd6, 0xe1, 0xcf, 0xc0, 0xd6, 0xdf, 0xd0, 0xc0, 0xd6, 0xe1, - 0xcf, 0xc0, 0xd6, 0xdf, 0xd0, 0xc0, 0xd7, 0xe1, 0xcf, 0xc0, 0xd7, 0xdf, - 0xd0, 0xc0, 0xd7, 0xe1, 0xcf, 0xc0, 0xd7, 0xdf, 0xd0, 0xc0, 0xd8, 0xe1, - 0xcf, 0xc0, 0xd8, 0xdf, 0xd0, 0xc0, 0xd8, 0xe1, 0xcf, 0xc0, 0xd9, 0xdf, - 0xd0, 0xc0, 0xd9, 0xe1, 0xcf, 0xc0, 0xd9, 0xdf, 0xd0, 0xc0, 0xd9, 0xe1, - 0xcf, 0xc0, 0xda, 0xdf, 0xd0, 0xc0, 0xda, 0xe1, 0xcf, 0xc0, 0xda, 0xdf, - 0xd0, 0xc0, 0xda, 0xe1, 0xcf, 0xc0, 0xdb, 0xdf, 0xd0, 0xc0, 0xdb, 0xe1, - 0xcf, 0xc0, 0xdb, 0xdf, 0xd0, 0xc0, 0xdb, 0xe1, 0xcf, 0xc0, 0xdc, 0xdf, - 0xd0, 0xc0, 0xdc, 0xe3, 0xe7, 0xc0, 0xdc, 0xe2, 0xe8, 0xc0, 0xdd, 0xe3, - 0xe7, 0xc0, 0xdd, 0xe2, 0xe8, 0xc0, 0xdd, 0xe3, 0xe7, 0xc0, 0xdd, 0xe2, - 0xe8, 0xc0, 0xde, 0xe3, 0xe7, 0xc0, 0xde, 0xe2, 0xe8, 0xc0, 0xde, 0xe3, - 0xe7, 0xc0, 0xde, 0xe2, 0xe8, 0xc0, 0xdf, 0xe3, 0xe7, 0xc0, 0xdf, 0xe2, - 0xe8, 0xc0, 0xdf, 0xe3, 0xe7, 0xc0, 0xdf, 0xe2, 0xe8, 0xc0, 0xe0, 0xe3, - 0xe7, 0xc0, 0xe0, 0xe2, 0xe8, 0xc0, 0xe0, 0xe3, 0xe7, 0xc0, 0xe1, 0xe2, - 0xe8, 0xc0, 0xe1, 0xe3, 0xe7, 0xc0, 0xe1, 0xe2, 0xe8, 0xc0, 0xe1, 0xe3, - 0xe7, 0xc0, 0xe2, 0xe2, 0xe8, 0xc0, 0xe2, 0xe3, 0xe7, 0xc0, 0xe2, 0xe2, - 0xe8, 0xc0, 0xe2, 0xe3, 0xe7, 0xc0, 0xe3, 0xe2, 0xe8, 0xc0, 0xe3, 0xe3, - 0xe7, 0xc0, 0xe3, 0xe2, 0xe8, 0xc0, 0xe3, 0xe3, 0xe7, 0xc0, 0xe4, 0xe2, - 0xe8, 0xc0, 0xe4, 0xe1, 0xe8, 0xc0, 0xe4, 0xe2, 0xe8, 0xc0, 0xe4, 0xe1, - 0xe8, 0xc0, 0xe5, 0xe2, 0xe8, 0xc0, 0xe5, 0xe1, 0xe8, 0xc0, 0xe5, 0xe2, - 0xe8, 0xc0, 0xe5, 0xe1, 0xe8, 0xc0, 0xe6, 0xe2, 0xe8, 0xc0, 0xe6, 0xe1, - 0xe8, 0xc0, 0xe6, 0xe2, 0xe8, 0xc0, 0xe6, 0xe1, 0xe8, 0xc0, 0xe7, 0xe2, - 0xe8, 0xc0, 0xe7, 0xe1, 0xe8, 0xc0, 0xe7, 0xe1, 0xe8, 0xc0, 0xe7, 0xe1, - 0xe8, 0xc0, 0xe8, 0xe1, 0xe8, 0xc0, 0xe7, 0xe1, 0xe8, 0xc0, 0xe8, 0xe1, - 0xe8, 0xc0, 0xe7, 0xe1, 0xe8, 0xc0, 0xe8, 0xe1, 0xe9, 0xc0, 0xe8, 0xe1, - 0xe9, 0xbe, 0xe8, 0xe1, 0xe9, 0xc0, 0xe8, 0xe1, 0xe9, 0xbe, 0xe8, 0xe1, - 0xea, 0xc0, 0xeb, 0xe1, 0xea, 0xc1, 0xec, 0xe1, 0xea, 0xc0, 0xeb, 0xe1, - 0xea, 0xc1, 0xec, 0xe1, 0xeb, 0xc0, 0xeb, 0xe1, 0xeb, 0xc1, 0xec, 0xe1, - 0xeb, 0xc0, 0xec, 0xe1, 0xeb, 0xc0, 0xec, 0xe1, 0xeb, 0xc0, 0xec, 0xe1, - 0xeb, 0xc0, 0xec, 0xe1, 0xeb, 0xc0, 0xec, 0xe1, 0xeb, 0xc0, 0xec, 0xe1, - 0xeb, 0xc0, 0xed, 0xe1, 0xeb, 0xc0, 0xed, 0xe1, 0xeb, 0xc0, 0xed, 0xe1, - 0xeb, 0xc0, 0xed, 0xdf, 0xec, 0xc0, 0xee, 0xe1, 0xeb, 0xc0, 0xee, 0xdf, - 0xec, 0xc0, 0xee, 0xe1, 0xeb, 0xc0, 0xee, 0xdf, 0xec, 0xc0, 0xef, 0xe1, - 0xeb, 0xc0, 0xef, 0xdf, 0xec, 0xc0, 0xef, 0xe1, 0xeb, 0xc0, 0xef, 0xdf, - 0xec, 0xc0, 0xf0, 0xe1, 0xeb, 0xc0, 0xf0, 0xdf, 0xec, 0xc0, 0xf0, 0xe1, - 0xeb, 0xc0, 0xf0, 0xdf, 0xec, 0xc0, 0xf1, 0xe1, 0xeb, 0xc0, 0xf1, 0xdf, - 0xec, 0xc0, 0xf1, 0xe1, 0xeb, 0xc0, 0xf1, 0xdf, 0xec, 0xc0, 0xf2, 0xe1, - 0xeb, 0xc0, 0xf2, 0xdf, 0xec, 0xc0, 0xf2, 0xe1, 0xeb, 0xc0, 0xf2, 0xdf, - 0xec, 0xc0, 0xf2, 0xe1, 0xeb, 0xc0, 0xf3, 0xdf, 0xec, 0xc0, 0xf3, 0xe1, - 0xeb, 0xc0, 0xf3, 0xdf, 0xec, 0xc0, 0xf3, 0xe1, 0xeb, 0xc0, 0xf4, 0xdf, - 0xec, 0xc0, 0xf4, 0xe1, 0xeb, 0xc0, 0xf4, 0xdf, 0xec, 0xc0, 0xf4, 0xe1, - 0xeb, 0xc0, 0xf5, 0xdf, 0xec, 0xc0, 0xf5, 0xe1, 0xeb, 0xc0, 0xf5, 0xdf, - 0xec, 0xc0, 0xf5, 0xe1, 0xeb, 0xc0, 0xf5, 0xdf, 0xec, 0xc0, 0xf6, 0xe1, - 0xeb, 0xc0, 0xf6, 0xdf, 0xec, 0xc0, 0xf6, 0xe1, 0xeb, 0xc0, 0xf6, 0xdf, - 0xec, 0xc0, 0xf7, 0xe1, 0xeb, 0xc0, 0xf7, 0xdf, 0xec, 0xc0, 0xf7, 0xdd, - 0xec, 0xc0, 0xf7, 0xdf, 0xec, 0xc0, 0xf8, 0xdd, 0xec, 0xc0, 0xf8, 0xec, - 0xf1, 0xc0, 0xf8, 0xec, 0xf1, 0xc0, 0xf8, 0xec, 0xf1, 0xc0, 0xf8, 0xec, - 0xf1, 0xc0, 0xf9, 0xec, 0xf1, 0xc0, 0xf9, 0xec, 0xf1, 0xc0, 0xf9, 0xec, - 0xf1, 0xc0, 0xf9, 0xec, 0xf1, 0xc0, 0xfa, 0xec, 0xf1, 0xc0, 0xfa, 0xec, - 0xf1, 0xc0, 0xfa, 0xec, 0xf1, 0xc0, 0xfa, 0xec, 0xf1, 0xc0, 0xfa, 0xec, - 0xf1, 0xc0, 0xfb, 0xec, 0xf1, 0xc0, 0xfb, 0xec, 0xf1, 0xc0, 0xfb, 0xec, - 0xf1, 0xc0, 0xfb, 0xec, 0xf1, 0xc0, 0xfc, 0xec, 0xf1, 0xc0, 0xfc, 0xec, - 0xf1, 0xc0, 0xfc, 0xec, 0xf1, 0xc0, 0xfc, 0xec, 0xf1, 0xc0, 0xfc, 0xec, - 0xf1, 0xc0, 0xfd, 0xec, 0xf1, 0xc0, 0xfd, 0xec, 0xf1, 0xc0, 0xfd, 0xec, - 0xf1, 0xc0, 0xfd, 0xec, 0xf1, 0xc0, 0xfe, 0xec, 0xf1, 0xc0, 0xfe, 0xec, - 0xf1, 0xc0, 0xfe, 0xec, 0xf1, 0xc0, 0xfe, 0xec, 0xf1, 0xc0, 0xfe, 0xec, - 0xf1, 0xc0, 0xff, 0xec, 0xf1, 0xc0, 0xff, 0xec, 0xf1, 0xc0, 0x03, 0xe6, - 0x87, 0xc0, 0x0a, 0xe6, 0x87, 0xc0, 0x0f, 0xe6, 0x87, 0xc0, 0x14, 0xe7, - 0x87, 0xc0, 0x17, 0xe6, 0x87, 0xc0, 0x1b, 0xe4, 0x88, 0xc0, 0x1e, 0xe6, - 0x87, 0xc0, 0x20, 0xe4, 0x88, 0xc0, 0x23, 0xe6, 0x87, 0xc0, 0x25, 0xe4, - 0x88, 0xc0, 0x27, 0xe6, 0x87, 0xc0, 0x29, 0xe4, 0x88, 0xc0, 0x2b, 0xe6, - 0x87, 0xc0, 0x2d, 0xe4, 0x88, 0xc0, 0x2f, 0xe6, 0x87, 0xc0, 0x31, 0xe4, - 0x88, 0xc0, 0x32, 0xe6, 0x87, 0xc0, 0x34, 0xe4, 0x88, 0xc0, 0x35, 0xe6, - 0x87, 0xc0, 0x37, 0xe4, 0x88, 0xc0, 0x38, 0xe6, 0x87, 0xc0, 0x3a, 0xe4, - 0x88, 0xc0, 0x3b, 0xe6, 0x87, 0xc0, 0x3c, 0xe4, 0x88, 0xc0, 0x3e, 0xe6, - 0x87, 0xc0, 0x3f, 0xe4, 0x88, 0xc0, 0x40, 0xe6, 0x87, 0xc0, 0x42, 0xe4, - 0x88, 0xc0, 0x43, 0xe6, 0x87, 0xc0, 0x44, 0xe4, 0x88, 0xc0, 0x45, 0xe6, - 0x87, 0xc0, 0x46, 0xe4, 0x88, 0xc0, 0x47, 0xe6, 0x87, 0xc0, 0x48, 0xe4, - 0x88, 0xc0, 0x49, 0xe6, 0x87, 0xc0, 0x4a, 0xe4, 0x88, 0xc0, 0x4b, 0xe6, - 0x87, 0xc0, 0x4c, 0xe4, 0x88, 0xc0, 0x4d, 0xe6, 0x87, 0xc0, 0x4e, 0xe4, - 0x88, 0xc0, 0x4f, 0xe6, 0x87, 0xc0, 0x50, 0xe4, 0x88, 0xc0, 0x51, 0xe6, - 0x87, 0xc0, 0x52, 0xe4, 0x88, 0xc0, 0x53, 0xe6, 0x87, 0xc0, 0x54, 0xe4, - 0x88, 0xc0, 0x55, 0xe6, 0x87, 0xc0, 0x56, 0xe4, 0x88, 0xc0, 0x57, 0xe6, - 0x87, 0xc0, 0x58, 0xe4, 0x88, 0xc0, 0x58, 0xe2, 0x88, 0xc0, 0x59, 0xe4, - 0x88, 0xc0, 0x5a, 0xe2, 0x88, 0xc0, 0x5b, 0xe4, 0x88, 0xc0, 0x5c, 0xe2, - 0x88, 0xc0, 0x5d, 0xe4, 0x88, 0xc0, 0x5d, 0xe2, 0x88, 0xc0, 0x5e, 0xe4, - 0x88, 0xc0, 0x5f, 0xe2, 0x88, 0xc0, 0x60, 0xe4, 0x88, 0xc0, 0x60, 0xe2, - 0x88, 0xc0, 0x61, 0xe4, 0x88, 0xc0, 0x62, 0xe2, 0x88, 0xc0, 0x63, 0xe4, - 0x88, 0xc0, 0x63, 0xe2, 0x88, 0xc0, 0x64, 0xe4, 0x88, 0xc0, 0x65, 0xe2, - 0x88, 0xc0, 0x66, 0xe4, 0x88, 0xc0, 0x66, 0xe2, 0x88, 0xc0, 0x67, 0xe4, - 0x88, 0xc0, 0x68, 0xe2, 0x88, 0xc0, 0x68, 0xe4, 0x88, 0xc0, 0x69, 0xe2, - 0x88, 0xc0, 0x6a, 0xe4, 0x88, 0xc0, 0x6a, 0xe2, 0x88, 0xc0, 0x6b, 0xe4, - 0x88, 0xc0, 0x6c, 0xe2, 0x88, 0xc0, 0x6c, 0xe4, 0x88, 0xc0, 0x6d, 0xe2, - 0x88, 0xc0, 0x6e, 0xe4, 0x88, 0xc0, 0x6e, 0xe2, 0x88, 0xc0, 0x6f, 0xe4, - 0x88, 0xc0, 0x70, 0xe2, 0x88, 0xc0, 0x70, 0xe4, 0x88, 0xc0, 0x71, 0xe2, - 0x88, 0xc0, 0x72, 0xe4, 0x88, 0xc0, 0x72, 0xe2, 0x88, 0xc0, 0x73, 0xe4, - 0x88, 0xc0, 0x73, 0xe2, 0x88, 0xc0, 0x74, 0xe4, 0x88, 0xc0, 0x75, 0xe2, - 0x88, 0xc0, 0x75, 0xe4, 0x88, 0xc0, 0x76, 0xe2, 0x88, 0xc0, 0x76, 0xe4, - 0x88, 0xc0, 0x77, 0xe2, 0x88, 0xc0, 0x78, 0xe4, 0x88, 0xc0, 0x78, 0xe2, - 0x88, 0xc0, 0x79, 0xe4, 0x88, 0xc0, 0x79, 0xe2, 0x88, 0xc0, 0x7a, 0xe4, - 0x88, 0xc0, 0x7a, 0xe2, 0x88, 0xc0, 0x7b, 0xe4, 0x88, 0xc0, 0x7c, 0xe2, - 0x88, 0xc0, 0x7c, 0xe1, 0x89, 0xc0, 0x7d, 0xe2, 0x88, 0xc0, 0x7d, 0xe1, - 0x89, 0xc0, 0x7e, 0xe2, 0x88, 0xc0, 0x7e, 0xe1, 0x89, 0xc0, 0x7f, 0xe2, - 0x88, 0xc0, 0x7f, 0xe1, 0x89, 0xc0, 0x80, 0xe2, 0x88, 0xc0, 0x81, 0xe1, - 0x89, 0xc0, 0x81, 0xe2, 0x88, 0xc0, 0x82, 0xe1, 0x89, 0xc0, 0x82, 0xe2, - 0x88, 0xc0, 0x83, 0xe1, 0x89, 0xc0, 0x83, 0xe2, 0x88, 0xc0, 0x84, 0xe1, - 0x89, 0xc0, 0x84, 0xe2, 0x88, 0xc0, 0x85, 0xe1, 0x89, 0xc0, 0x85, 0xe2, - 0x88, 0xc0, 0x86, 0xe1, 0x89, 0xc0, 0x86, 0xe2, 0x88, 0xc0, 0x87, 0xe1, - 0x89, 0xc0, 0x87, 0xe1, 0x89, 0xc0, 0x88, 0xe1, 0x89, 0xc0, 0x88, 0xe1, - 0x89, 0xc0, 0x88, 0xe1, 0x89, 0xc0, 0x88, 0xe1, 0x89, 0xc0, 0x88, 0xe1, - 0x8a, 0xc0, 0x88, 0xe1, 0x8a, 0xc0, 0x89, 0xe1, 0x8b, 0xbf, 0x88, 0xe1, - 0x8b, 0xc0, 0x89, 0xe1, 0x8c, 0xbf, 0x88, 0xe1, 0x8c, 0xc0, 0x89, 0xe1, - 0x8d, 0xbf, 0x88, 0xe1, 0x8d, 0xc0, 0x89, 0xe1, 0x8e, 0xbf, 0x88, 0xe1, - 0x8e, 0xc0, 0x89, 0xe1, 0x8e, 0xbf, 0x88, 0xe1, 0x8f, 0xc0, 0x89, 0xe1, - 0x8f, 0xbf, 0x88, 0xe1, 0x90, 0xc0, 0x89, 0xe1, 0x90, 0xbf, 0x88, 0xe1, - 0x91, 0xc0, 0x89, 0xe1, 0x91, 0xbf, 0x88, 0xe1, 0x92, 0xc0, 0x89, 0xe1, - 0x92, 0xbf, 0x88, 0xe1, 0x93, 0xc0, 0x89, 0xe1, 0x93, 0xbf, 0x88, 0xe1, - 0x94, 0xc0, 0x89, 0xe1, 0x94, 0xbf, 0x89, 0xe1, 0x94, 0xbc, 0x89, 0xe1, - 0x95, 0xbf, 0x89, 0xe1, 0x95, 0xbc, 0x89, 0xe1, 0x96, 0xbf, 0x89, 0xe1, - 0x96, 0xbc, 0x89, 0xe1, 0x97, 0xbf, 0x89, 0xe1, 0x97, 0xbc, 0x89, 0xe1, - 0x98, 0xbf, 0x89, 0xe1, 0x98, 0xbc, 0x89, 0xe1, 0x98, 0xbf, 0x89, 0xe1, - 0x99, 0xbc, 0x89, 0xe1, 0x99, 0xbf, 0x89, 0xe1, 0x9a, 0xbc, 0x89, 0xe1, - 0x9a, 0xbf, 0x89, 0xe1, 0x9a, 0xbc, 0x89, 0xe1, 0x9b, 0xbf, 0x89, 0xe1, - 0x9b, 0xbc, 0x89, 0xe1, 0x9c, 0xbf, 0x89, 0xe1, 0x9c, 0xbc, 0x89, 0xe1, - 0x9d, 0xbf, 0x89, 0xe1, 0x9d, 0xbc, 0x89, 0xe1, 0x9d, 0xbf, 0x89, 0xe1, - 0x9e, 0xbc, 0x89, 0xe1, 0x9e, 0xbf, 0x89, 0xe1, 0x9f, 0xbc, 0x89, 0xe1, - 0x9f, 0xbf, 0x89, 0xe1, 0x9f, 0xbc, 0x89, 0xe1, 0xa0, 0xbf, 0x89, 0xe1, - 0xa0, 0xbc, 0x89, 0xe1, 0xa1, 0xbf, 0x89, 0xe1, 0xa1, 0xbc, 0x89, 0xe1, - 0xa1, 0xbf, 0x89, 0xe1, 0xa2, 0xbc, 0x89, 0xe1, 0xa2, 0xbf, 0x89, 0xe1, - 0xa3, 0xbc, 0x89, 0xe1, 0xa3, 0xbf, 0x89, 0xe1, 0xa3, 0xbc, 0x89, 0xe1, - 0xa4, 0xbf, 0x89, 0xe1, 0xa4, 0xbc, 0x89, 0xe1, 0xa5, 0xbf, 0x89, 0xe1, - 0xa5, 0xbc, 0x89, 0xe1, 0xa5, 0xbf, 0x89, 0xe1, 0xa6, 0xbc, 0x89, 0xe1, - 0xa6, 0xbf, 0x89, 0xe1, 0xa6, 0xbc, 0x89, 0xe1, 0xa7, 0xbf, 0x89, 0xe1, - 0xa7, 0xbc, 0x89, 0xe1, 0xa8, 0xbf, 0x89, 0xe1, 0xa8, 0xbc, 0x89, 0xe1, - 0xa8, 0xbf, 0x89, 0xe1, 0xa9, 0xbc, 0x89, 0xe1, 0xa9, 0xbf, 0x89, 0xe1, - 0xaa, 0xbc, 0x8a, 0xe1, 0xaa, 0xb8, 0x89, 0xe1, 0xaa, 0xbc, 0x8a, 0xe1, - 0xab, 0xb8, 0x89, 0xe1, 0xab, 0xbc, 0x8a, 0xe1, 0xab, 0xb8, 0x89, 0xe1, - 0xac, 0xbc, 0x8a, 0xe1, 0xac, 0xb8, 0x89, 0xe1, 0xac, 0xbc, 0x8a, 0xe1, - 0xad, 0xb8, 0x89, 0xe1, 0xad, 0xbc, 0xa3, 0xe1, 0xae, 0x98, 0xa3, 0xe1, - 0xae, 0x97, 0xa3, 0xe1, 0xae, 0x98, 0xa3, 0xe1, 0xaf, 0x97, 0xa3, 0xe1, - 0xaf, 0x98, 0xa3, 0xe1, 0xaf, 0x97, 0xa3, 0xe1, 0xb0, 0x98, 0xa3, 0xe1, - 0xb0, 0x97, 0xa3, 0xe1, 0xb0, 0x98, 0xa3, 0xe1, 0xb1, 0x97, 0xa3, 0xe1, - 0xb1, 0x98, 0xa3, 0xe1, 0xb2, 0x97, 0xce, 0xe1, 0xb2, 0xc7, 0xce, 0xe1, - 0xb2, 0xca, 0xce, 0xe1, 0xb3, 0xc7, 0xce, 0xe1, 0xb3, 0xca, 0xce, 0xe1, - 0xb3, 0xc7, 0xce, 0xe1, 0xb4, 0xca, 0xce, 0xe1, 0xb4, 0xc7, 0xce, 0xe1, - 0xb4, 0xca, 0xce, 0xe1, 0xb5, 0xc7, 0xce, 0xe1, 0xb5, 0xca, 0xce, 0xe1, - 0xb5, 0xc7, 0xce, 0xe1, 0xb6, 0xca, 0xce, 0xe1, 0xb6, 0xc7, 0xce, 0xe1, - 0xb6, 0xca, 0xce, 0xe1, 0xb7, 0xc7, 0xcf, 0xe1, 0xb7, 0xc5, 0xce, 0xe1, - 0xb7, 0xc7, 0xcf, 0xe1, 0xb8, 0xc5, 0xce, 0xe1, 0xb8, 0xc7, 0xcf, 0xe1, - 0xb8, 0xc5, 0xce, 0xe1, 0xb9, 0xc7, 0xcf, 0xe1, 0xb9, 0xc5, 0xce, 0xe1, - 0xb9, 0xc7, 0xcf, 0xe1, 0xba, 0xc5, 0xce, 0xe1, 0xba, 0xc7, 0xcf, 0xe1, - 0xba, 0xc5, 0xce, 0xe1, 0xbb, 0xc7, 0xcf, 0xe1, 0xbb, 0xc5, 0xce, 0xe1, - 0xbb, 0xc7, 0xcf, 0xe1, 0xbc, 0xc5, 0xce, 0xe1, 0xbc, 0xc7, 0xcf, 0xe1, - 0xbc, 0xc5, 0xce, 0xe1, 0xbd, 0xc7, 0xcf, 0xe1, 0xbd, 0xc5, 0xce, 0xe1, - 0xbd, 0xc7, 0xcf, 0xe1, 0xbe, 0xc5, 0xce, 0xe1, 0xbe, 0xc7, 0xcf, 0xe1, - 0xbe, 0xc5, 0xce, 0xe1, 0xbf, 0xc7, 0xcf, 0xe1, 0xbf, 0xc5, 0xce, 0xe1, - 0xbf, 0xc7, 0xcf, 0xe1, 0xc0, 0xc5, 0xce, 0xe1, 0xc0, 0xc7, 0xcf, 0xe1, - 0xc0, 0xc5, 0xce, 0xe1, 0xc1, 0xc7, 0xcf, 0xe1, 0xc1, 0xc5, 0xce, 0xe1, - 0xc1, 0xc7, 0xcf, 0xe1, 0xc1, 0xc5, 0xcf, 0xe1, 0xc2, 0xc2, 0xcf, 0xe1, - 0xc2, 0xc5, 0xcf, 0xe1, 0xc2, 0xc2, 0xcf, 0xe1, 0xc3, 0xc5, 0xcf, 0xe1, - 0xc3, 0xc2, 0xcf, 0xe1, 0xc3, 0xc5, 0xcf, 0xe1, 0xc4, 0xc2, 0xcf, 0xe1, - 0xc4, 0xc5, 0xcf, 0xe1, 0xc4, 0xc2, 0xcf, 0xe1, 0xc5, 0xc5, 0xcf, 0xe1, - 0xc5, 0xc2, 0xcf, 0xe1, 0xc5, 0xc5, 0xcf, 0xe1, 0xc6, 0xc2, 0xcf, 0xe1, - 0xc6, 0xc5, 0xcf, 0xe1, 0xc6, 0xc2, 0xcf, 0xe1, 0xc6, 0xc5, 0xcf, 0xe1, - 0xc7, 0xc2, 0xcf, 0xe1, 0xc7, 0xc5, 0xcf, 0xe1, 0xc7, 0xc2, 0xcf, 0xe1, - 0xc8, 0xc5, 0xcf, 0xe1, 0xc8, 0xc2, 0xcf, 0xe1, 0xc8, 0xc0, 0xcf, 0xe1, - 0xc9, 0xc2, 0xcf, 0xe1, 0xc9, 0xc0, 0xcf, 0xe1, 0xc9, 0xc2, 0xcf, 0xe1, - 0xc9, 0xc0, 0xcf, 0xe1, 0xca, 0xc2, 0xcf, 0xe1, 0xca, 0xc0, 0xcf, 0xe1, - 0xca, 0xc2, 0xcf, 0xe1, 0xcb, 0xc0, 0xcf, 0xe1, 0xcb, 0xc2, 0xcf, 0xe1, - 0xcb, 0xc0, 0xcf, 0xe1, 0xcc, 0xc2, 0xcf, 0xe1, 0xcc, 0xc0, 0xcf, 0xe1, - 0xcc, 0xc2, 0xcf, 0xe1, 0xcc, 0xc0, 0xcf, 0xe1, 0xcd, 0xc2, 0xcf, 0xe1, - 0xcd, 0xc0, 0xcf, 0xe1, 0xcd, 0xc2, 0xcf, 0xe1, 0xce, 0xc0, 0xcf, 0xe1, - 0xce, 0xc2, 0xcf, 0xe1, 0xce, 0xc0, 0xd0, 0xe1, 0xce, 0xc0, 0xcf, 0xe1, - 0xcf, 0xc0, 0xd0, 0xe1, 0xcf, 0xc0, 0xcf, 0xe1, 0xcf, 0xc0, 0xd0, 0xe1, - 0xcf, 0xc0, 0xd0, 0xe1, 0xcf, 0xc0, 0xd0, 0xe1, 0xcf, 0xc0, 0xd0, 0xe0, - 0xcf, 0xc0, 0xd1, 0xe1, 0xcf, 0xc0, 0xd1, 0xe0, 0xcf, 0xc0, 0xd1, 0xe1, - 0xcf, 0xc0, 0xd2, 0xe0, 0xcf, 0xc0, 0xd2, 0xe1, 0xcf, 0xc0, 0xd2, 0xe0, - 0xcf, 0xc0, 0xd2, 0xe1, 0xcf, 0xc0, 0xd3, 0xe0, 0xcf, 0xc0, 0xd3, 0xe1, - 0xcf, 0xc0, 0xd3, 0xe0, 0xcf, 0xc0, 0xd4, 0xe1, 0xcf, 0xc0, 0xd4, 0xe0, - 0xcf, 0xc0, 0xd4, 0xdf, 0xd0, 0xc0, 0xd4, 0xe0, 0xcf, 0xc0, 0xd5, 0xdf, - 0xd0, 0xc0, 0xd5, 0xe0, 0xcf, 0xc0, 0xd5, 0xdf, 0xd0, 0xc0, 0xd6, 0xe0, - 0xcf, 0xc0, 0xd6, 0xdf, 0xd0, 0xc0, 0xd6, 0xe0, 0xcf, 0xc0, 0xd6, 0xdf, - 0xd0, 0xc0, 0xd7, 0xe0, 0xcf, 0xc0, 0xd7, 0xdf, 0xd0, 0xc0, 0xd7, 0xe0, - 0xcf, 0xc0, 0xd7, 0xdf, 0xd0, 0xc0, 0xd8, 0xe0, 0xcf, 0xc0, 0xd8, 0xdf, - 0xd0, 0xc0, 0xd8, 0xe0, 0xcf, 0xc0, 0xd9, 0xdf, 0xd0, 0xc0, 0xd9, 0xe0, - 0xcf, 0xc0, 0xd9, 0xdf, 0xd0, 0xc0, 0xd9, 0xe0, 0xcf, 0xc0, 0xda, 0xdf, - 0xd0, 0xc0, 0xda, 0xe0, 0xcf, 0xc0, 0xda, 0xdf, 0xd0, 0xc0, 0xda, 0xe0, - 0xcf, 0xc0, 0xdb, 0xdf, 0xd0, 0xc0, 0xdb, 0xe0, 0xcf, 0xc0, 0xdb, 0xdf, - 0xd0, 0xc0, 0xdb, 0xe0, 0xcf, 0xc0, 0xdc, 0xdf, 0xd0, 0xc0, 0xdc, 0xe3, - 0xe7, 0xc0, 0xdc, 0xe2, 0xe8, 0xc0, 0xdd, 0xe3, 0xe7, 0xc0, 0xdd, 0xe2, - 0xe8, 0xc0, 0xdd, 0xe3, 0xe7, 0xc0, 0xdd, 0xe2, 0xe8, 0xc0, 0xde, 0xe3, - 0xe7, 0xc0, 0xde, 0xe2, 0xe8, 0xc0, 0xde, 0xe3, 0xe7, 0xc0, 0xde, 0xe2, - 0xe8, 0xc0, 0xdf, 0xe3, 0xe7, 0xc0, 0xdf, 0xe2, 0xe8, 0xc0, 0xdf, 0xe3, - 0xe7, 0xc0, 0xdf, 0xe2, 0xe8, 0xc0, 0xe0, 0xe3, 0xe7, 0xc0, 0xe0, 0xe2, - 0xe8, 0xc0, 0xe0, 0xe3, 0xe7, 0xc0, 0xe1, 0xe2, 0xe8, 0xc0, 0xe1, 0xe3, - 0xe7, 0xc0, 0xe1, 0xe2, 0xe8, 0xc0, 0xe1, 0xe3, 0xe7, 0xc0, 0xe2, 0xe2, - 0xe8, 0xc0, 0xe2, 0xe3, 0xe7, 0xc0, 0xe2, 0xe2, 0xe8, 0xc0, 0xe2, 0xe3, - 0xe7, 0xc0, 0xe3, 0xe2, 0xe8, 0xc0, 0xe3, 0xe3, 0xe7, 0xc0, 0xe3, 0xe2, - 0xe8, 0xc0, 0xe3, 0xe3, 0xe7, 0xc0, 0xe4, 0xe2, 0xe8, 0xc0, 0xe4, 0xe1, - 0xe8, 0xc0, 0xe4, 0xe2, 0xe8, 0xc0, 0xe4, 0xe1, 0xe8, 0xc0, 0xe5, 0xe2, - 0xe8, 0xc0, 0xe5, 0xe1, 0xe8, 0xc0, 0xe5, 0xe2, 0xe8, 0xc0, 0xe5, 0xe1, - 0xe8, 0xc0, 0xe6, 0xe2, 0xe8, 0xc0, 0xe6, 0xe1, 0xe8, 0xc0, 0xe6, 0xe2, - 0xe8, 0xc0, 0xe6, 0xe1, 0xe8, 0xc0, 0xe7, 0xe2, 0xe8, 0xc0, 0xe7, 0xe1, - 0xe8, 0xc0, 0xe7, 0xe2, 0xe8, 0xc0, 0xe7, 0xe1, 0xe8, 0xc0, 0xe8, 0xe2, - 0xe8, 0xc0, 0xe7, 0xe1, 0xe8, 0xc0, 0xe8, 0xe1, 0xe8, 0xc0, 0xe7, 0xe1, - 0xe8, 0xc0, 0xe8, 0xe1, 0xe9, 0xc0, 0xe7, 0xe1, 0xe9, 0xc0, 0xe8, 0xe1, - 0xe9, 0xc0, 0xe7, 0xe1, 0xe9, 0xc0, 0xe8, 0xe1, 0xea, 0xc0, 0xeb, 0xe1, - 0xea, 0xc1, 0xec, 0xe1, 0xea, 0xc0, 0xeb, 0xe1, 0xea, 0xc1, 0xec, 0xe1, - 0xeb, 0xc0, 0xeb, 0xe1, 0xeb, 0xc1, 0xec, 0xe1, 0xeb, 0xc0, 0xec, 0xe1, - 0xeb, 0xc0, 0xec, 0xe1, 0xeb, 0xc0, 0xec, 0xe1, 0xeb, 0xc0, 0xec, 0xe1, - 0xeb, 0xc0, 0xec, 0xe1, 0xeb, 0xc0, 0xec, 0xe1, 0xeb, 0xc0, 0xed, 0xe1, - 0xeb, 0xc0, 0xed, 0xe1, 0xeb, 0xc0, 0xed, 0xe1, 0xeb, 0xc0, 0xed, 0xe1, - 0xeb, 0xc0, 0xee, 0xe1, 0xeb, 0xc0, 0xee, 0xe1, 0xeb, 0xc0, 0xee, 0xe1, - 0xeb, 0xc0, 0xee, 0xe1, 0xeb, 0xc0, 0xef, 0xe1, 0xeb, 0xc0, 0xef, 0xe1, - 0xeb, 0xc0, 0xef, 0xe1, 0xeb, 0xc0, 0xef, 0xdf, 0xec, 0xc0, 0xf0, 0xe1, - 0xeb, 0xc0, 0xf0, 0xdf, 0xec, 0xc0, 0xf0, 0xe1, 0xeb, 0xc0, 0xf0, 0xdf, - 0xec, 0xc0, 0xf1, 0xe1, 0xeb, 0xc0, 0xf1, 0xdf, 0xec, 0xc0, 0xf1, 0xe1, - 0xeb, 0xc0, 0xf1, 0xdf, 0xec, 0xc0, 0xf2, 0xe1, 0xeb, 0xc0, 0xf2, 0xdf, - 0xec, 0xc0, 0xf2, 0xe1, 0xeb, 0xc0, 0xf2, 0xdf, 0xec, 0xc0, 0xf2, 0xe1, - 0xeb, 0xc0, 0xf3, 0xdf, 0xec, 0xc0, 0xf3, 0xe1, 0xeb, 0xc0, 0xf3, 0xdf, - 0xec, 0xc0, 0xf3, 0xe1, 0xeb, 0xc0, 0xf4, 0xdf, 0xec, 0xc0, 0xf4, 0xe1, - 0xeb, 0xc0, 0xf4, 0xdf, 0xec, 0xc0, 0xf4, 0xe1, 0xeb, 0xc0, 0xf5, 0xdf, - 0xec, 0xc0, 0xf5, 0xe1, 0xeb, 0xc0, 0xf5, 0xdf, 0xec, 0xc0, 0xf5, 0xe1, - 0xeb, 0xc0, 0xf5, 0xdf, 0xec, 0xc0, 0xf6, 0xe1, 0xeb, 0xc0, 0xf6, 0xdf, - 0xec, 0xc0, 0xf6, 0xe1, 0xeb, 0xc0, 0xf6, 0xdf, 0xec, 0xc0, 0xf7, 0xe1, - 0xeb, 0xc0, 0xf7, 0xdf, 0xec, 0xc0, 0xf7, 0xde, 0xec, 0xc0, 0xf7, 0xdf, - 0xec, 0xc0, 0xf8, 0xde, 0xec, 0xc0, 0xf8, 0xec, 0xf1, 0xc0, 0xf8, 0xec, - 0xf1, 0xc0, 0xf8, 0xec, 0xf1, 0xc0, 0xf8, 0xec, 0xf1, 0xc0, 0xf9, 0xec, - 0xf1, 0xc0, 0xf9, 0xec, 0xf1, 0xc0, 0xf9, 0xec, 0xf1, 0xc0, 0xf9, 0xec, - 0xf1, 0xc0, 0xfa, 0xec, 0xf1, 0xc0, 0xfa, 0xec, 0xf1, 0xc0, 0xfa, 0xec, - 0xf1, 0xc0, 0xfa, 0xec, 0xf1, 0xc0, 0xfa, 0xec, 0xf1, 0xc0, 0xfb, 0xec, - 0xf1, 0xc0, 0xfb, 0xec, 0xf1, 0xc0, 0xfb, 0xec, 0xf1, 0xc0, 0xfb, 0xec, - 0xf1, 0xc0, 0xfc, 0xec, 0xf1, 0xc0, 0xfc, 0xec, 0xf1, 0xc0, 0xfc, 0xec, - 0xf1, 0xc0, 0xfc, 0xec, 0xf1, 0xc0, 0xfc, 0xec, 0xf1, 0xc0, 0xfd, 0xec, - 0xf1, 0xc0, 0xfd, 0xec, 0xf1, 0xc0, 0xfd, 0xec, 0xf1, 0xc0, 0xfd, 0xec, - 0xf1, 0xc0, 0xfe, 0xec, 0xf1, 0xc0, 0xfe, 0xec, 0xf1, 0xc0, 0xfe, 0xec, - 0xf1, 0xc0, 0xfe, 0xec, 0xf1, 0xc0, 0xfe, 0xec, 0xf1, 0xc0, 0xff, 0xec, - 0xf1, 0xc0, 0xff, 0xec, 0xf1, 0xc0, 0x03, 0xe6, 0x87, 0xc1, 0x0a, 0xe6, - 0x87, 0xc1, 0x0f, 0xe6, 0x87, 0xc1, 0x14, 0xe8, 0x87, 0xc1, 0x17, 0xe6, - 0x87, 0xc1, 0x1b, 0xe4, 0x88, 0xc1, 0x1e, 0xe6, 0x87, 0xc1, 0x20, 0xe4, - 0x88, 0xc1, 0x23, 0xe6, 0x87, 0xc1, 0x25, 0xe4, 0x88, 0xc1, 0x27, 0xe6, - 0x87, 0xc1, 0x29, 0xe4, 0x88, 0xc1, 0x2b, 0xe6, 0x87, 0xc1, 0x2d, 0xe4, - 0x88, 0xc1, 0x2f, 0xe6, 0x87, 0xc1, 0x31, 0xe4, 0x88, 0xc1, 0x32, 0xe6, - 0x87, 0xc1, 0x34, 0xe4, 0x88, 0xc1, 0x35, 0xe6, 0x87, 0xc1, 0x37, 0xe4, - 0x88, 0xc1, 0x38, 0xe6, 0x87, 0xc1, 0x3a, 0xe4, 0x88, 0xc1, 0x3b, 0xe6, - 0x87, 0xc1, 0x3c, 0xe4, 0x88, 0xc1, 0x3e, 0xe6, 0x87, 0xc1, 0x3f, 0xe4, - 0x88, 0xc1, 0x40, 0xe6, 0x87, 0xc1, 0x42, 0xe4, 0x88, 0xc1, 0x43, 0xe6, - 0x87, 0xc1, 0x44, 0xe4, 0x88, 0xc1, 0x45, 0xe6, 0x87, 0xc1, 0x46, 0xe4, - 0x88, 0xc1, 0x47, 0xe6, 0x87, 0xc1, 0x48, 0xe4, 0x88, 0xc1, 0x49, 0xe6, - 0x87, 0xc1, 0x4a, 0xe4, 0x88, 0xc1, 0x4b, 0xe6, 0x87, 0xc1, 0x4c, 0xe4, - 0x88, 0xc1, 0x4d, 0xe6, 0x87, 0xc1, 0x4e, 0xe4, 0x88, 0xc1, 0x4f, 0xe6, - 0x87, 0xc1, 0x50, 0xe4, 0x88, 0xc1, 0x51, 0xe6, 0x87, 0xc1, 0x52, 0xe4, - 0x88, 0xc1, 0x53, 0xe6, 0x87, 0xc1, 0x54, 0xe4, 0x88, 0xc1, 0x55, 0xe6, - 0x87, 0xc1, 0x56, 0xe4, 0x88, 0xc1, 0x57, 0xe6, 0x87, 0xc1, 0x58, 0xe4, - 0x88, 0xc1, 0x58, 0xe6, 0x87, 0xc1, 0x59, 0xe4, 0x88, 0xc1, 0x5a, 0xe6, - 0x87, 0xc1, 0x5b, 0xe4, 0x88, 0xc1, 0x5c, 0xe6, 0x87, 0xc1, 0x5d, 0xe4, - 0x88, 0xc1, 0x5d, 0xe6, 0x87, 0xc1, 0x5e, 0xe4, 0x88, 0xc1, 0x5f, 0xe6, - 0x87, 0xc1, 0x60, 0xe4, 0x88, 0xc1, 0x60, 0xe6, 0x87, 0xc1, 0x61, 0xe4, - 0x88, 0xc1, 0x62, 0xe6, 0x87, 0xc1, 0x63, 0xe4, 0x88, 0xc1, 0x63, 0xe6, - 0x87, 0xc1, 0x64, 0xe4, 0x88, 0xc1, 0x65, 0xe3, 0x88, 0xc1, 0x66, 0xe4, - 0x88, 0xc1, 0x66, 0xe3, 0x88, 0xc1, 0x67, 0xe4, 0x88, 0xc1, 0x68, 0xe3, - 0x88, 0xc1, 0x68, 0xe4, 0x88, 0xc1, 0x69, 0xe3, 0x88, 0xc1, 0x6a, 0xe4, - 0x88, 0xc1, 0x6a, 0xe3, 0x88, 0xc1, 0x6b, 0xe4, 0x88, 0xc1, 0x6c, 0xe3, - 0x88, 0xc1, 0x6c, 0xe4, 0x88, 0xc1, 0x6d, 0xe3, 0x88, 0xc1, 0x6e, 0xe4, - 0x88, 0xc1, 0x6e, 0xe3, 0x88, 0xc1, 0x6f, 0xe4, 0x88, 0xc1, 0x70, 0xe3, - 0x88, 0xc1, 0x70, 0xe4, 0x88, 0xc1, 0x71, 0xe3, 0x88, 0xc1, 0x72, 0xe4, - 0x88, 0xc1, 0x72, 0xe3, 0x88, 0xc1, 0x73, 0xe4, 0x88, 0xc1, 0x73, 0xe3, - 0x88, 0xc1, 0x74, 0xe4, 0x88, 0xc1, 0x75, 0xe3, 0x88, 0xc1, 0x75, 0xe4, - 0x88, 0xc1, 0x76, 0xe3, 0x88, 0xc1, 0x76, 0xe4, 0x88, 0xc1, 0x77, 0xe3, - 0x88, 0xc1, 0x78, 0xe4, 0x88, 0xc1, 0x78, 0xe3, 0x88, 0xc1, 0x79, 0xe4, - 0x88, 0xc1, 0x79, 0xe3, 0x88, 0xc1, 0x7a, 0xe4, 0x88, 0xc1, 0x7a, 0xe3, - 0x88, 0xc1, 0x7b, 0xe4, 0x88, 0xc1, 0x7c, 0xe3, 0x88, 0xc1, 0x7c, 0xe2, - 0x89, 0xc1, 0x7d, 0xe3, 0x88, 0xc1, 0x7d, 0xe2, 0x89, 0xc1, 0x7e, 0xe3, - 0x88, 0xc1, 0x7e, 0xe2, 0x89, 0xc1, 0x7f, 0xe3, 0x88, 0xc1, 0x7f, 0xe2, - 0x89, 0xc1, 0x80, 0xe3, 0x88, 0xc1, 0x81, 0xe2, 0x89, 0xc1, 0x81, 0xe3, - 0x88, 0xc1, 0x82, 0xe2, 0x89, 0xc1, 0x82, 0xe3, 0x88, 0xc1, 0x83, 0xe2, - 0x89, 0xc1, 0x83, 0xe3, 0x88, 0xc1, 0x84, 0xe2, 0x89, 0xc1, 0x84, 0xe3, - 0x88, 0xc1, 0x85, 0xe2, 0x89, 0xc1, 0x85, 0xe3, 0x88, 0xc1, 0x86, 0xe2, - 0x89, 0xc1, 0x86, 0xe3, 0x88, 0xc1, 0x87, 0xe2, 0x89, 0xc1, 0x87, 0xe2, - 0x89, 0xc1, 0x88, 0xe2, 0x89, 0xc1, 0x88, 0xe2, 0x89, 0xc1, 0x88, 0xe2, - 0x89, 0xc1, 0x88, 0xe2, 0x89, 0xc1, 0x88, 0xe2, 0x8a, 0xc1, 0x88, 0xe2, - 0x8a, 0xc1, 0x88, 0xe2, 0x8b, 0xc1, 0x88, 0xe2, 0x8b, 0xc1, 0x88, 0xe2, - 0x8c, 0xc1, 0x88, 0xe2, 0x8c, 0xc1, 0x89, 0xe2, 0x8d, 0xbe, 0x88, 0xe2, - 0x8d, 0xc1, 0x89, 0xe2, 0x8e, 0xbe, 0x88, 0xe2, 0x8e, 0xc1, 0x89, 0xe2, - 0x8e, 0xbe, 0x88, 0xe2, 0x8f, 0xc1, 0x89, 0xe2, 0x8f, 0xbe, 0x88, 0xe2, - 0x90, 0xc1, 0x89, 0xe2, 0x90, 0xbe, 0x88, 0xe2, 0x91, 0xc1, 0x89, 0xe2, - 0x91, 0xbe, 0x88, 0xe2, 0x92, 0xc1, 0x89, 0xe2, 0x92, 0xbe, 0x88, 0xe2, - 0x93, 0xc1, 0x89, 0xe2, 0x93, 0xbe, 0x88, 0xe2, 0x94, 0xc1, 0x89, 0xe2, - 0x94, 0xbe, 0x88, 0xe2, 0x94, 0xc1, 0x89, 0xe2, 0x95, 0xbe, 0x88, 0xe2, - 0x95, 0xc1, 0x89, 0xe2, 0x96, 0xbe, 0x88, 0xe2, 0x96, 0xc1, 0x89, 0xe2, - 0x97, 0xbe, 0x88, 0xe2, 0x97, 0xc1, 0x89, 0xe2, 0x98, 0xbe, 0x88, 0xe2, - 0x98, 0xc1, 0x89, 0xe2, 0x98, 0xbe, 0x88, 0xe2, 0x99, 0xc1, 0x89, 0xe2, - 0x99, 0xbe, 0x89, 0xe2, 0x9a, 0xbb, 0x89, 0xe2, 0x9a, 0xbe, 0x89, 0xe2, - 0x9a, 0xbb, 0x89, 0xe2, 0x9b, 0xbe, 0x89, 0xe2, 0x9b, 0xbb, 0x89, 0xe2, - 0x9c, 0xbe, 0x89, 0xe2, 0x9c, 0xbb, 0x89, 0xe2, 0x9d, 0xbe, 0x89, 0xe2, - 0x9d, 0xbb, 0x89, 0xe2, 0x9d, 0xbe, 0x89, 0xe2, 0x9e, 0xbb, 0x89, 0xe2, - 0x9e, 0xbe, 0x89, 0xe2, 0x9f, 0xbb, 0x89, 0xe2, 0x9f, 0xbe, 0x89, 0xe2, - 0x9f, 0xbb, 0x89, 0xe2, 0xa0, 0xbe, 0x89, 0xe2, 0xa0, 0xbb, 0x89, 0xe2, - 0xa1, 0xbe, 0x89, 0xe2, 0xa1, 0xbb, 0x89, 0xe2, 0xa1, 0xbe, 0x89, 0xe2, - 0xa2, 0xbb, 0x89, 0xe2, 0xa2, 0xbe, 0x89, 0xe2, 0xa3, 0xbb, 0x89, 0xe2, - 0xa3, 0xbe, 0x89, 0xe2, 0xa3, 0xbb, 0x89, 0xe2, 0xa4, 0xbe, 0x89, 0xe2, - 0xa4, 0xbb, 0x89, 0xe2, 0xa5, 0xbe, 0x89, 0xe2, 0xa5, 0xbb, 0x89, 0xe2, - 0xa5, 0xbe, 0x89, 0xe2, 0xa6, 0xbb, 0x89, 0xe2, 0xa6, 0xbe, 0x89, 0xe2, - 0xa6, 0xbb, 0x89, 0xe2, 0xa7, 0xbe, 0x89, 0xe2, 0xa7, 0xbb, 0x89, 0xe2, - 0xa8, 0xbe, 0x89, 0xe2, 0xa8, 0xbb, 0x8a, 0xe2, 0xa8, 0xb8, 0x89, 0xe2, - 0xa9, 0xbb, 0x8a, 0xe2, 0xa9, 0xb8, 0x89, 0xe2, 0xaa, 0xbb, 0x8a, 0xe2, - 0xaa, 0xb8, 0x89, 0xe2, 0xaa, 0xbb, 0x8a, 0xe2, 0xab, 0xb8, 0x89, 0xe2, - 0xab, 0xbb, 0x8a, 0xe2, 0xab, 0xb8, 0x89, 0xe2, 0xac, 0xbb, 0x8a, 0xe2, - 0xac, 0xb8, 0x89, 0xe2, 0xac, 0xbb, 0x8a, 0xe2, 0xad, 0xb8, 0x89, 0xe2, - 0xad, 0xbb, 0x8a, 0xe2, 0xae, 0xb8, 0xa3, 0xe2, 0xae, 0x97, 0xa3, 0xe2, - 0xae, 0x97, 0xa3, 0xe2, 0xaf, 0x97, 0xa3, 0xe2, 0xaf, 0x97, 0xa3, 0xe2, - 0xaf, 0x97, 0xa3, 0xe2, 0xb0, 0x97, 0xa3, 0xe2, 0xb0, 0x97, 0xa3, 0xe2, - 0xb0, 0x97, 0xa3, 0xe2, 0xb1, 0x97, 0xa3, 0xe2, 0xb1, 0x97, 0xa3, 0xe2, - 0xb2, 0x97, 0xce, 0xe2, 0xb2, 0xc8, 0xce, 0xe2, 0xb2, 0xcb, 0xce, 0xe2, - 0xb3, 0xc8, 0xce, 0xe2, 0xb3, 0xcb, 0xce, 0xe2, 0xb3, 0xc8, 0xce, 0xe2, - 0xb4, 0xcb, 0xce, 0xe2, 0xb4, 0xc8, 0xcf, 0xe2, 0xb4, 0xc5, 0xce, 0xe2, - 0xb5, 0xc8, 0xcf, 0xe2, 0xb5, 0xc5, 0xce, 0xe2, 0xb5, 0xc8, 0xcf, 0xe2, - 0xb6, 0xc5, 0xce, 0xe2, 0xb6, 0xc8, 0xcf, 0xe2, 0xb6, 0xc5, 0xce, 0xe2, - 0xb7, 0xc8, 0xcf, 0xe2, 0xb7, 0xc5, 0xce, 0xe2, 0xb7, 0xc8, 0xcf, 0xe2, - 0xb8, 0xc5, 0xce, 0xe2, 0xb8, 0xc8, 0xcf, 0xe2, 0xb8, 0xc5, 0xce, 0xe2, - 0xb9, 0xc8, 0xcf, 0xe2, 0xb9, 0xc5, 0xce, 0xe2, 0xb9, 0xc8, 0xcf, 0xe2, - 0xba, 0xc5, 0xce, 0xe2, 0xba, 0xc8, 0xcf, 0xe2, 0xba, 0xc5, 0xce, 0xe2, - 0xbb, 0xc8, 0xcf, 0xe2, 0xbb, 0xc5, 0xce, 0xe2, 0xbb, 0xc8, 0xcf, 0xe2, - 0xbc, 0xc5, 0xce, 0xe2, 0xbc, 0xc8, 0xcf, 0xe2, 0xbc, 0xc5, 0xce, 0xe2, - 0xbd, 0xc8, 0xcf, 0xe2, 0xbd, 0xc5, 0xce, 0xe2, 0xbd, 0xc8, 0xcf, 0xe2, - 0xbe, 0xc5, 0xce, 0xe2, 0xbe, 0xc8, 0xcf, 0xe2, 0xbe, 0xc5, 0xce, 0xe2, - 0xbf, 0xc8, 0xcf, 0xe2, 0xbf, 0xc5, 0xce, 0xe2, 0xbf, 0xc8, 0xcf, 0xe2, - 0xc0, 0xc5, 0xce, 0xe2, 0xc0, 0xc8, 0xcf, 0xe2, 0xc0, 0xc5, 0xce, 0xe2, - 0xc1, 0xc8, 0xcf, 0xe2, 0xc1, 0xc5, 0xce, 0xe2, 0xc1, 0xc8, 0xcf, 0xe2, - 0xc1, 0xc5, 0xcf, 0xe2, 0xc2, 0xc3, 0xcf, 0xe2, 0xc2, 0xc5, 0xcf, 0xe2, - 0xc2, 0xc3, 0xcf, 0xe2, 0xc3, 0xc5, 0xcf, 0xe2, 0xc3, 0xc3, 0xcf, 0xe2, - 0xc3, 0xc5, 0xcf, 0xe2, 0xc4, 0xc3, 0xcf, 0xe2, 0xc4, 0xc5, 0xcf, 0xe2, - 0xc4, 0xc3, 0xcf, 0xe2, 0xc5, 0xc5, 0xcf, 0xe2, 0xc5, 0xc3, 0xcf, 0xe2, - 0xc5, 0xc5, 0xcf, 0xe2, 0xc6, 0xc3, 0xcf, 0xe2, 0xc6, 0xc5, 0xcf, 0xe2, - 0xc6, 0xc3, 0xcf, 0xe2, 0xc6, 0xc5, 0xcf, 0xe2, 0xc7, 0xc3, 0xcf, 0xe2, - 0xc7, 0xc5, 0xcf, 0xe2, 0xc7, 0xc3, 0xcf, 0xe2, 0xc8, 0xc5, 0xcf, 0xe2, - 0xc8, 0xc3, 0xcf, 0xe2, 0xc8, 0xc5, 0xcf, 0xe2, 0xc9, 0xc3, 0xcf, 0xe2, - 0xc9, 0xc5, 0xcf, 0xe2, 0xc9, 0xc3, 0xcf, 0xe2, 0xc9, 0xc5, 0xcf, 0xe2, - 0xca, 0xc3, 0xcf, 0xe2, 0xca, 0xc5, 0xcf, 0xe2, 0xca, 0xc3, 0xcf, 0xe2, - 0xcb, 0xc1, 0xcf, 0xe2, 0xcb, 0xc3, 0xcf, 0xe2, 0xcb, 0xc1, 0xcf, 0xe2, - 0xcc, 0xc3, 0xcf, 0xe2, 0xcc, 0xc1, 0xcf, 0xe2, 0xcc, 0xc3, 0xcf, 0xe2, - 0xcc, 0xc1, 0xcf, 0xe2, 0xcd, 0xc3, 0xcf, 0xe2, 0xcd, 0xc1, 0xcf, 0xe2, - 0xcd, 0xc3, 0xcf, 0xe2, 0xce, 0xc1, 0xcf, 0xe2, 0xce, 0xc3, 0xcf, 0xe2, - 0xce, 0xc1, 0xd0, 0xe2, 0xce, 0xc1, 0xcf, 0xe2, 0xcf, 0xc1, 0xd0, 0xe2, - 0xcf, 0xc1, 0xcf, 0xe2, 0xcf, 0xc1, 0xd0, 0xe2, 0xcf, 0xc1, 0xd0, 0xe2, - 0xcf, 0xc1, 0xd0, 0xe2, 0xcf, 0xc1, 0xd0, 0xe1, 0xcf, 0xc1, 0xd1, 0xe2, - 0xcf, 0xc1, 0xd1, 0xe1, 0xcf, 0xc1, 0xd1, 0xe2, 0xcf, 0xc1, 0xd2, 0xe1, - 0xcf, 0xc1, 0xd2, 0xe2, 0xcf, 0xc1, 0xd2, 0xe1, 0xcf, 0xc1, 0xd2, 0xe2, - 0xcf, 0xc1, 0xd3, 0xe1, 0xcf, 0xc1, 0xd3, 0xe2, 0xcf, 0xc1, 0xd3, 0xe1, - 0xcf, 0xc1, 0xd4, 0xe2, 0xcf, 0xc1, 0xd4, 0xe1, 0xcf, 0xc1, 0xd4, 0xe2, - 0xcf, 0xc1, 0xd4, 0xe1, 0xcf, 0xc1, 0xd5, 0xe2, 0xcf, 0xc1, 0xd5, 0xe1, - 0xcf, 0xc1, 0xd5, 0xe2, 0xcf, 0xc1, 0xd6, 0xe1, 0xcf, 0xc1, 0xd6, 0xe2, - 0xcf, 0xc1, 0xd6, 0xe1, 0xcf, 0xc1, 0xd6, 0xdf, 0xd0, 0xc1, 0xd7, 0xe1, - 0xcf, 0xc1, 0xd7, 0xdf, 0xd0, 0xc1, 0xd7, 0xe1, 0xcf, 0xc1, 0xd7, 0xdf, - 0xd0, 0xc1, 0xd8, 0xe1, 0xcf, 0xc1, 0xd8, 0xdf, 0xd0, 0xc1, 0xd8, 0xe1, - 0xcf, 0xc1, 0xd9, 0xdf, 0xd0, 0xc1, 0xd9, 0xe1, 0xcf, 0xc1, 0xd9, 0xdf, - 0xd0, 0xc1, 0xd9, 0xe1, 0xcf, 0xc1, 0xda, 0xdf, 0xd0, 0xc1, 0xda, 0xe1, - 0xcf, 0xc1, 0xda, 0xdf, 0xd0, 0xc1, 0xda, 0xe1, 0xcf, 0xc1, 0xdb, 0xdf, - 0xd0, 0xc1, 0xdb, 0xe1, 0xcf, 0xc1, 0xdb, 0xdf, 0xd0, 0xc1, 0xdb, 0xe1, - 0xcf, 0xc1, 0xdc, 0xdf, 0xd0, 0xc1, 0xdc, 0xe3, 0xe7, 0xc1, 0xdc, 0xe5, - 0xe7, 0xc1, 0xdd, 0xe3, 0xe7, 0xc1, 0xdd, 0xe5, 0xe7, 0xc1, 0xdd, 0xe3, - 0xe7, 0xc1, 0xdd, 0xe5, 0xe7, 0xc1, 0xde, 0xe3, 0xe7, 0xc1, 0xde, 0xe5, - 0xe7, 0xc1, 0xde, 0xe3, 0xe7, 0xc1, 0xde, 0xe2, 0xe8, 0xc1, 0xdf, 0xe3, - 0xe7, 0xc1, 0xdf, 0xe2, 0xe8, 0xc1, 0xdf, 0xe3, 0xe7, 0xc1, 0xdf, 0xe2, - 0xe8, 0xc1, 0xe0, 0xe3, 0xe7, 0xc1, 0xe0, 0xe2, 0xe8, 0xc1, 0xe0, 0xe3, - 0xe7, 0xc1, 0xe1, 0xe2, 0xe8, 0xc1, 0xe1, 0xe3, 0xe7, 0xc1, 0xe1, 0xe2, - 0xe8, 0xc1, 0xe1, 0xe3, 0xe7, 0xc1, 0xe2, 0xe2, 0xe8, 0xc1, 0xe2, 0xe3, - 0xe7, 0xc1, 0xe2, 0xe2, 0xe8, 0xc1, 0xe2, 0xe3, 0xe7, 0xc1, 0xe3, 0xe2, - 0xe8, 0xc1, 0xe3, 0xe3, 0xe7, 0xc1, 0xe3, 0xe2, 0xe8, 0xc1, 0xe3, 0xe3, - 0xe7, 0xc1, 0xe4, 0xe2, 0xe8, 0xc1, 0xe4, 0xe3, 0xe7, 0xc1, 0xe4, 0xe2, - 0xe8, 0xc1, 0xe4, 0xe3, 0xe7, 0xc1, 0xe5, 0xe2, 0xe8, 0xc1, 0xe5, 0xe3, - 0xe7, 0xc1, 0xe5, 0xe2, 0xe8, 0xc1, 0xe5, 0xe3, 0xe7, 0xc1, 0xe6, 0xe2, - 0xe8, 0xc1, 0xe6, 0xe2, 0xe8, 0xc1, 0xe6, 0xe2, 0xe8, 0xc1, 0xe6, 0xe2, - 0xe8, 0xc1, 0xe7, 0xe2, 0xe8, 0xc1, 0xe7, 0xe2, 0xe8, 0xc1, 0xe7, 0xe2, - 0xe8, 0xc1, 0xe7, 0xe2, 0xe8, 0xc1, 0xe8, 0xe2, 0xe8, 0xc1, 0xe7, 0xe2, - 0xe8, 0xc1, 0xe8, 0xe2, 0xe8, 0xc1, 0xe7, 0xe2, 0xe8, 0xc1, 0xe8, 0xe2, - 0xe9, 0xc1, 0xe7, 0xe2, 0xe9, 0xc1, 0xe8, 0xe2, 0xe9, 0xc1, 0xe7, 0xe2, - 0xe9, 0xc1, 0xe8, 0xe2, 0xea, 0xc1, 0xeb, 0xe2, 0xea, 0xc1, 0xec, 0xe2, - 0xea, 0xc1, 0xeb, 0xe2, 0xea, 0xc1, 0xec, 0xe2, 0xeb, 0xc1, 0xeb, 0xe2, - 0xeb, 0xc1, 0xec, 0xe2, 0xeb, 0xc1, 0xeb, 0xe1, 0xeb, 0xc1, 0xec, 0xe2, - 0xeb, 0xc1, 0xec, 0xe1, 0xeb, 0xc1, 0xec, 0xe2, 0xeb, 0xc1, 0xec, 0xe1, - 0xeb, 0xc1, 0xec, 0xe2, 0xeb, 0xc1, 0xed, 0xe1, 0xeb, 0xc1, 0xed, 0xe2, - 0xeb, 0xc1, 0xed, 0xe1, 0xeb, 0xc1, 0xed, 0xe2, 0xeb, 0xc1, 0xee, 0xe1, - 0xeb, 0xc1, 0xee, 0xe2, 0xeb, 0xc1, 0xee, 0xe1, 0xeb, 0xc1, 0xee, 0xe2, - 0xeb, 0xc1, 0xef, 0xe1, 0xeb, 0xc1, 0xef, 0xe2, 0xeb, 0xc1, 0xef, 0xe1, - 0xeb, 0xc1, 0xef, 0xdf, 0xec, 0xc1, 0xf0, 0xe1, 0xeb, 0xc1, 0xf0, 0xdf, - 0xec, 0xc1, 0xf0, 0xe1, 0xeb, 0xc1, 0xf0, 0xdf, 0xec, 0xc1, 0xf1, 0xe1, - 0xeb, 0xc1, 0xf1, 0xdf, 0xec, 0xc1, 0xf1, 0xe1, 0xeb, 0xc1, 0xf1, 0xdf, - 0xec, 0xc1, 0xf2, 0xe1, 0xeb, 0xc1, 0xf2, 0xdf, 0xec, 0xc1, 0xf2, 0xe1, - 0xeb, 0xc1, 0xf2, 0xdf, 0xec, 0xc1, 0xf2, 0xe1, 0xeb, 0xc1, 0xf3, 0xdf, - 0xec, 0xc1, 0xf3, 0xe1, 0xeb, 0xc1, 0xf3, 0xdf, 0xec, 0xc1, 0xf3, 0xe1, - 0xeb, 0xc1, 0xf4, 0xdf, 0xec, 0xc1, 0xf4, 0xe1, 0xeb, 0xc1, 0xf4, 0xdf, - 0xec, 0xc1, 0xf4, 0xe1, 0xeb, 0xc1, 0xf5, 0xdf, 0xec, 0xc1, 0xf5, 0xe1, - 0xeb, 0xc1, 0xf5, 0xdf, 0xec, 0xc1, 0xf5, 0xe1, 0xeb, 0xc1, 0xf5, 0xdf, - 0xec, 0xc1, 0xf6, 0xe1, 0xeb, 0xc1, 0xf6, 0xdf, 0xec, 0xc1, 0xf6, 0xe1, - 0xeb, 0xc1, 0xf6, 0xdf, 0xec, 0xc1, 0xf7, 0xe1, 0xeb, 0xc1, 0xf7, 0xec, - 0xf1, 0xc1, 0xf7, 0xec, 0xf1, 0xc1, 0xf7, 0xec, 0xf1, 0xc1, 0xf8, 0xec, - 0xf1, 0xc1, 0xf8, 0xec, 0xf1, 0xc1, 0xf8, 0xec, 0xf1, 0xc1, 0xf8, 0xec, - 0xf1, 0xc1, 0xf8, 0xec, 0xf1, 0xc1, 0xf9, 0xec, 0xf1, 0xc1, 0xf9, 0xec, - 0xf1, 0xc1, 0xf9, 0xec, 0xf1, 0xc1, 0xf9, 0xec, 0xf1, 0xc1, 0xfa, 0xec, - 0xf1, 0xc1, 0xfa, 0xec, 0xf1, 0xc1, 0xfa, 0xec, 0xf1, 0xc1, 0xfa, 0xec, - 0xf1, 0xc1, 0xfa, 0xec, 0xf1, 0xc1, 0xfb, 0xec, 0xf1, 0xc1, 0xfb, 0xec, - 0xf1, 0xc1, 0xfb, 0xec, 0xf1, 0xc1, 0xfb, 0xec, 0xf1, 0xc1, 0xfc, 0xec, - 0xf1, 0xc1, 0xfc, 0xec, 0xf1, 0xc1, 0xfc, 0xec, 0xf1, 0xc1, 0xfc, 0xec, - 0xf1, 0xc1, 0xfc, 0xec, 0xf1, 0xc1, 0xfd, 0xec, 0xf1, 0xc1, 0xfd, 0xec, - 0xf1, 0xc1, 0xfd, 0xec, 0xf1, 0xc1, 0xfd, 0xec, 0xf1, 0xc1, 0xfe, 0xec, - 0xf1, 0xc1, 0xfe, 0xec, 0xf1, 0xc1, 0xfe, 0xec, 0xf1, 0xc1, 0xfe, 0xec, - 0xf1, 0xc1, 0xfe, 0xec, 0xf1, 0xc1, 0xff, 0xec, 0xf1, 0xc1, 0xff, 0xec, - 0xf1, 0xc1, 0x03, 0xe6, 0x87, 0xc1, 0x0a, 0xe7, 0x87, 0xc1, 0x0f, 0xe6, - 0x87, 0xc1, 0x14, 0xe7, 0x87, 0xc1, 0x17, 0xe6, 0x87, 0xc1, 0x1b, 0xe7, - 0x87, 0xc1, 0x1e, 0xe6, 0x87, 0xc1, 0x20, 0xe7, 0x87, 0xc1, 0x23, 0xe6, - 0x87, 0xc1, 0x25, 0xe7, 0x87, 0xc1, 0x27, 0xe6, 0x87, 0xc1, 0x29, 0xe7, - 0x87, 0xc1, 0x2b, 0xe6, 0x87, 0xc1, 0x2d, 0xe7, 0x87, 0xc1, 0x2f, 0xe6, - 0x87, 0xc1, 0x31, 0xe7, 0x87, 0xc1, 0x32, 0xe6, 0x87, 0xc1, 0x34, 0xe7, - 0x87, 0xc1, 0x35, 0xe6, 0x87, 0xc1, 0x37, 0xe7, 0x87, 0xc1, 0x38, 0xe6, - 0x87, 0xc1, 0x3a, 0xe4, 0x88, 0xc1, 0x3b, 0xe6, 0x87, 0xc1, 0x3c, 0xe4, - 0x88, 0xc1, 0x3e, 0xe6, 0x87, 0xc1, 0x3f, 0xe4, 0x88, 0xc1, 0x40, 0xe6, - 0x87, 0xc1, 0x42, 0xe4, 0x88, 0xc1, 0x43, 0xe6, 0x87, 0xc1, 0x44, 0xe4, - 0x88, 0xc1, 0x45, 0xe6, 0x87, 0xc1, 0x46, 0xe4, 0x88, 0xc1, 0x47, 0xe6, - 0x87, 0xc1, 0x48, 0xe4, 0x88, 0xc1, 0x49, 0xe6, 0x87, 0xc1, 0x4a, 0xe4, - 0x88, 0xc1, 0x4b, 0xe6, 0x87, 0xc1, 0x4c, 0xe4, 0x88, 0xc1, 0x4d, 0xe6, - 0x87, 0xc1, 0x4e, 0xe4, 0x88, 0xc1, 0x4f, 0xe6, 0x87, 0xc1, 0x50, 0xe4, - 0x88, 0xc1, 0x51, 0xe6, 0x87, 0xc1, 0x52, 0xe4, 0x88, 0xc1, 0x53, 0xe6, - 0x87, 0xc1, 0x54, 0xe4, 0x88, 0xc1, 0x55, 0xe6, 0x87, 0xc1, 0x56, 0xe4, - 0x88, 0xc1, 0x57, 0xe6, 0x87, 0xc1, 0x58, 0xe4, 0x88, 0xc1, 0x58, 0xe6, - 0x87, 0xc1, 0x59, 0xe4, 0x88, 0xc1, 0x5a, 0xe6, 0x87, 0xc1, 0x5b, 0xe4, - 0x88, 0xc1, 0x5c, 0xe6, 0x87, 0xc1, 0x5d, 0xe4, 0x88, 0xc1, 0x5d, 0xe6, - 0x87, 0xc1, 0x5e, 0xe4, 0x88, 0xc1, 0x5f, 0xe6, 0x87, 0xc1, 0x60, 0xe4, - 0x88, 0xc1, 0x60, 0xe6, 0x87, 0xc1, 0x61, 0xe4, 0x88, 0xc1, 0x62, 0xe2, - 0x88, 0xc1, 0x63, 0xe4, 0x88, 0xc1, 0x63, 0xe2, 0x88, 0xc1, 0x64, 0xe4, - 0x88, 0xc1, 0x65, 0xe2, 0x88, 0xc1, 0x66, 0xe4, 0x88, 0xc1, 0x66, 0xe2, - 0x88, 0xc1, 0x67, 0xe4, 0x88, 0xc1, 0x68, 0xe2, 0x88, 0xc1, 0x68, 0xe4, - 0x88, 0xc1, 0x69, 0xe2, 0x88, 0xc1, 0x6a, 0xe4, 0x88, 0xc1, 0x6a, 0xe2, - 0x88, 0xc1, 0x6b, 0xe4, 0x88, 0xc1, 0x6c, 0xe2, 0x88, 0xc1, 0x6c, 0xe4, - 0x88, 0xc1, 0x6d, 0xe2, 0x88, 0xc1, 0x6e, 0xe4, 0x88, 0xc1, 0x6e, 0xe2, - 0x88, 0xc1, 0x6f, 0xe4, 0x88, 0xc1, 0x70, 0xe2, 0x88, 0xc1, 0x70, 0xe4, - 0x88, 0xc1, 0x71, 0xe2, 0x88, 0xc1, 0x72, 0xe4, 0x88, 0xc1, 0x72, 0xe2, - 0x88, 0xc1, 0x73, 0xe4, 0x88, 0xc1, 0x73, 0xe2, 0x88, 0xc1, 0x74, 0xe4, - 0x88, 0xc1, 0x75, 0xe2, 0x88, 0xc1, 0x75, 0xe4, 0x88, 0xc1, 0x76, 0xe2, - 0x88, 0xc1, 0x76, 0xe4, 0x88, 0xc1, 0x77, 0xe2, 0x88, 0xc1, 0x78, 0xe4, - 0x88, 0xc1, 0x78, 0xe2, 0x88, 0xc1, 0x79, 0xe4, 0x88, 0xc1, 0x79, 0xe2, - 0x88, 0xc1, 0x7a, 0xe4, 0x88, 0xc1, 0x7a, 0xe2, 0x88, 0xc1, 0x7b, 0xe4, - 0x88, 0xc1, 0x7c, 0xe2, 0x88, 0xc1, 0x7c, 0xe4, 0x88, 0xc1, 0x7d, 0xe2, - 0x88, 0xc1, 0x7d, 0xe4, 0x88, 0xc1, 0x7e, 0xe2, 0x88, 0xc1, 0x7e, 0xe4, - 0x88, 0xc1, 0x7f, 0xe2, 0x88, 0xc1, 0x7f, 0xe4, 0x88, 0xc1, 0x80, 0xe2, - 0x88, 0xc1, 0x81, 0xe2, 0x89, 0xc1, 0x81, 0xe2, 0x88, 0xc1, 0x82, 0xe2, - 0x89, 0xc1, 0x82, 0xe2, 0x88, 0xc1, 0x83, 0xe2, 0x89, 0xc1, 0x83, 0xe2, - 0x88, 0xc1, 0x84, 0xe2, 0x89, 0xc1, 0x84, 0xe2, 0x88, 0xc1, 0x85, 0xe2, - 0x89, 0xc1, 0x85, 0xe2, 0x88, 0xc1, 0x86, 0xe2, 0x89, 0xc1, 0x86, 0xe2, - 0x88, 0xc1, 0x87, 0xe2, 0x89, 0xc1, 0x87, 0xe2, 0x88, 0xc1, 0x88, 0xe2, - 0x89, 0xc1, 0x88, 0xe2, 0x88, 0xc1, 0x88, 0xe2, 0x89, 0xc1, 0x88, 0xe2, - 0x89, 0xc1, 0x88, 0xe2, 0x8a, 0xc1, 0x88, 0xe2, 0x8a, 0xc1, 0x88, 0xe2, - 0x8b, 0xc1, 0x88, 0xe2, 0x8b, 0xc1, 0x88, 0xe2, 0x8c, 0xc1, 0x88, 0xe2, - 0x8c, 0xc1, 0x89, 0xe2, 0x8d, 0xbf, 0x88, 0xe2, 0x8d, 0xc1, 0x89, 0xe2, - 0x8e, 0xbf, 0x88, 0xe2, 0x8e, 0xc1, 0x89, 0xe2, 0x8e, 0xbf, 0x88, 0xe2, - 0x8f, 0xc1, 0x89, 0xe2, 0x8f, 0xbf, 0x88, 0xe2, 0x90, 0xc1, 0x89, 0xe2, - 0x90, 0xbf, 0x88, 0xe2, 0x91, 0xc1, 0x89, 0xe2, 0x91, 0xbf, 0x88, 0xe2, - 0x92, 0xc1, 0x89, 0xe2, 0x92, 0xbf, 0x88, 0xe2, 0x93, 0xc1, 0x89, 0xe2, - 0x93, 0xbf, 0x88, 0xe2, 0x94, 0xc1, 0x89, 0xe2, 0x94, 0xbf, 0x88, 0xe2, - 0x94, 0xc1, 0x89, 0xe2, 0x95, 0xbf, 0x88, 0xe2, 0x95, 0xc1, 0x89, 0xe2, - 0x96, 0xbf, 0x88, 0xe2, 0x96, 0xc1, 0x89, 0xe2, 0x97, 0xbf, 0x88, 0xe2, - 0x97, 0xc1, 0x89, 0xe2, 0x98, 0xbf, 0x88, 0xe2, 0x98, 0xc1, 0x89, 0xe2, - 0x98, 0xbf, 0x88, 0xe2, 0x99, 0xc1, 0x89, 0xe2, 0x99, 0xbf, 0x89, 0xe2, - 0x9a, 0xbc, 0x89, 0xe2, 0x9a, 0xbf, 0x89, 0xe2, 0x9a, 0xbc, 0x89, 0xe2, - 0x9b, 0xbf, 0x89, 0xe2, 0x9b, 0xbc, 0x89, 0xe2, 0x9c, 0xbf, 0x89, 0xe2, - 0x9c, 0xbc, 0x89, 0xe2, 0x9d, 0xbf, 0x89, 0xe2, 0x9d, 0xbc, 0x89, 0xe2, - 0x9d, 0xbf, 0x89, 0xe2, 0x9e, 0xbc, 0x89, 0xe2, 0x9e, 0xbf, 0x89, 0xe2, - 0x9f, 0xbc, 0x89, 0xe2, 0x9f, 0xbf, 0x89, 0xe2, 0x9f, 0xbc, 0x89, 0xe2, - 0xa0, 0xbf, 0x89, 0xe2, 0xa0, 0xbc, 0x89, 0xe2, 0xa1, 0xbf, 0x89, 0xe2, - 0xa1, 0xbc, 0x89, 0xe2, 0xa1, 0xbf, 0x89, 0xe2, 0xa2, 0xbc, 0x89, 0xe2, - 0xa2, 0xbf, 0x89, 0xe2, 0xa3, 0xbc, 0x89, 0xe2, 0xa3, 0xbf, 0x89, 0xe2, - 0xa3, 0xbc, 0x89, 0xe2, 0xa4, 0xbf, 0x89, 0xe2, 0xa4, 0xbc, 0x89, 0xe2, - 0xa5, 0xbf, 0x89, 0xe2, 0xa5, 0xbc, 0x89, 0xe2, 0xa5, 0xbf, 0x89, 0xe2, - 0xa6, 0xbc, 0x89, 0xe2, 0xa6, 0xbf, 0x89, 0xe2, 0xa6, 0xbc, 0x89, 0xe2, - 0xa7, 0xbf, 0x89, 0xe2, 0xa7, 0xbc, 0x89, 0xe2, 0xa8, 0xbf, 0x89, 0xe2, - 0xa8, 0xbc, 0x89, 0xe2, 0xa8, 0xbf, 0x89, 0xe2, 0xa9, 0xbc, 0x89, 0xe2, - 0xa9, 0xbf, 0x89, 0xe2, 0xaa, 0xbc, 0x89, 0xe2, 0xaa, 0xbf, 0x89, 0xe2, - 0xaa, 0xbc, 0x89, 0xe2, 0xab, 0xbf, 0x89, 0xe2, 0xab, 0xbc, 0x89, 0xe2, - 0xab, 0xbf, 0x89, 0xe2, 0xac, 0xbc, 0x89, 0xe2, 0xac, 0xbf, 0x89, 0xe2, - 0xac, 0xbc, 0x89, 0xe2, 0xad, 0xbf, 0x89, 0xe2, 0xad, 0xbc, 0x89, 0xe2, - 0xae, 0xbf, 0x89, 0xe2, 0xae, 0xbc, 0xa3, 0xe2, 0xae, 0x98, 0x89, 0xe2, - 0xaf, 0xbc, 0xa3, 0xe2, 0xaf, 0x98, 0xa3, 0xe2, 0xaf, 0x97, 0xa3, 0xe2, - 0xb0, 0x98, 0xa3, 0xe2, 0xb0, 0x97, 0xa3, 0xe2, 0xb0, 0x98, 0xa3, 0xe2, - 0xb1, 0x97, 0xa3, 0xe2, 0xb1, 0x98, 0xce, 0xe2, 0xb2, 0xca, 0xce, 0xe2, - 0xb2, 0xc7, 0xce, 0xe2, 0xb2, 0xca, 0xce, 0xe2, 0xb3, 0xc7, 0xce, 0xe2, - 0xb3, 0xca, 0xce, 0xe2, 0xb3, 0xc7, 0xce, 0xe2, 0xb4, 0xca, 0xce, 0xe2, - 0xb4, 0xc7, 0xce, 0xe2, 0xb4, 0xca, 0xce, 0xe2, 0xb5, 0xc7, 0xce, 0xe2, - 0xb5, 0xca, 0xce, 0xe2, 0xb5, 0xc7, 0xce, 0xe2, 0xb6, 0xca, 0xce, 0xe2, - 0xb6, 0xc7, 0xce, 0xe2, 0xb6, 0xca, 0xce, 0xe2, 0xb7, 0xc7, 0xce, 0xe2, - 0xb7, 0xca, 0xce, 0xe2, 0xb7, 0xc7, 0xce, 0xe2, 0xb8, 0xca, 0xce, 0xe2, - 0xb8, 0xc7, 0xce, 0xe2, 0xb8, 0xca, 0xce, 0xe2, 0xb9, 0xc7, 0xce, 0xe2, - 0xb9, 0xca, 0xce, 0xe2, 0xb9, 0xc7, 0xce, 0xe2, 0xba, 0xca, 0xce, 0xe2, - 0xba, 0xc7, 0xce, 0xe2, 0xba, 0xca, 0xce, 0xe2, 0xbb, 0xc7, 0xcf, 0xe2, - 0xbb, 0xc5, 0xce, 0xe2, 0xbb, 0xc7, 0xcf, 0xe2, 0xbc, 0xc5, 0xce, 0xe2, - 0xbc, 0xc7, 0xcf, 0xe2, 0xbc, 0xc5, 0xce, 0xe2, 0xbd, 0xc7, 0xcf, 0xe2, - 0xbd, 0xc5, 0xce, 0xe2, 0xbd, 0xc7, 0xcf, 0xe2, 0xbe, 0xc5, 0xce, 0xe2, - 0xbe, 0xc7, 0xcf, 0xe2, 0xbe, 0xc5, 0xce, 0xe2, 0xbf, 0xc7, 0xcf, 0xe2, - 0xbf, 0xc5, 0xce, 0xe2, 0xbf, 0xc7, 0xcf, 0xe2, 0xc0, 0xc5, 0xce, 0xe2, - 0xc0, 0xc7, 0xcf, 0xe2, 0xc0, 0xc5, 0xce, 0xe2, 0xc1, 0xc7, 0xcf, 0xe2, - 0xc1, 0xc5, 0xce, 0xe2, 0xc1, 0xc7, 0xcf, 0xe2, 0xc1, 0xc5, 0xce, 0xe2, - 0xc2, 0xc7, 0xcf, 0xe2, 0xc2, 0xc5, 0xce, 0xe2, 0xc2, 0xc7, 0xcf, 0xe2, - 0xc3, 0xc5, 0xce, 0xe2, 0xc3, 0xc7, 0xcf, 0xe2, 0xc3, 0xc5, 0xce, 0xe2, - 0xc4, 0xc7, 0xcf, 0xe2, 0xc4, 0xc5, 0xcf, 0xe2, 0xc4, 0xc2, 0xcf, 0xe2, - 0xc5, 0xc5, 0xcf, 0xe2, 0xc5, 0xc2, 0xcf, 0xe2, 0xc5, 0xc5, 0xcf, 0xe2, - 0xc6, 0xc2, 0xcf, 0xe2, 0xc6, 0xc5, 0xcf, 0xe2, 0xc6, 0xc2, 0xcf, 0xe2, - 0xc6, 0xc5, 0xcf, 0xe2, 0xc7, 0xc2, 0xcf, 0xe2, 0xc7, 0xc5, 0xcf, 0xe2, - 0xc7, 0xc2, 0xcf, 0xe2, 0xc8, 0xc5, 0xcf, 0xe2, 0xc8, 0xc2, 0xcf, 0xe2, - 0xc8, 0xc5, 0xcf, 0xe2, 0xc9, 0xc2, 0xcf, 0xe2, 0xc9, 0xc5, 0xcf, 0xe2, - 0xc9, 0xc2, 0xcf, 0xe2, 0xc9, 0xc5, 0xcf, 0xe2, 0xca, 0xc2, 0xcf, 0xe2, - 0xca, 0xc5, 0xcf, 0xe2, 0xca, 0xc2, 0xcf, 0xe2, 0xcb, 0xc1, 0xcf, 0xe2, - 0xcb, 0xc2, 0xcf, 0xe2, 0xcb, 0xc1, 0xcf, 0xe2, 0xcc, 0xc2, 0xcf, 0xe2, - 0xcc, 0xc1, 0xcf, 0xe2, 0xcc, 0xc2, 0xcf, 0xe2, 0xcc, 0xc1, 0xcf, 0xe2, - 0xcd, 0xc2, 0xcf, 0xe2, 0xcd, 0xc1, 0xcf, 0xe2, 0xcd, 0xc2, 0xcf, 0xe2, - 0xce, 0xc1, 0xcf, 0xe2, 0xce, 0xc2, 0xcf, 0xe2, 0xce, 0xc1, 0xcf, 0xe2, - 0xce, 0xc2, 0xcf, 0xe2, 0xcf, 0xc1, 0xd0, 0xe2, 0xcf, 0xc1, 0xcf, 0xe2, - 0xcf, 0xc1, 0xd0, 0xe2, 0xcf, 0xc1, 0xd0, 0xe2, 0xcf, 0xc1, 0xd0, 0xe2, - 0xcf, 0xc1, 0xd0, 0xe2, 0xcf, 0xc1, 0xd1, 0xe2, 0xcf, 0xc1, 0xd1, 0xe2, - 0xcf, 0xc1, 0xd1, 0xe2, 0xcf, 0xc1, 0xd2, 0xe0, 0xcf, 0xc1, 0xd2, 0xe2, - 0xcf, 0xc1, 0xd2, 0xe0, 0xcf, 0xc1, 0xd2, 0xe2, 0xcf, 0xc1, 0xd3, 0xe0, - 0xcf, 0xc1, 0xd3, 0xe2, 0xcf, 0xc1, 0xd3, 0xe0, 0xcf, 0xc1, 0xd4, 0xe2, - 0xcf, 0xc1, 0xd4, 0xe0, 0xcf, 0xc1, 0xd4, 0xe2, 0xcf, 0xc1, 0xd4, 0xe0, - 0xcf, 0xc1, 0xd5, 0xe2, 0xcf, 0xc1, 0xd5, 0xe0, 0xcf, 0xc1, 0xd5, 0xe2, - 0xcf, 0xc1, 0xd6, 0xe0, 0xcf, 0xc1, 0xd6, 0xe2, 0xcf, 0xc1, 0xd6, 0xe0, - 0xcf, 0xc1, 0xd6, 0xdf, 0xd0, 0xc1, 0xd7, 0xe0, 0xcf, 0xc1, 0xd7, 0xdf, - 0xd0, 0xc1, 0xd7, 0xe0, 0xcf, 0xc1, 0xd7, 0xdf, 0xd0, 0xc1, 0xd8, 0xe0, - 0xcf, 0xc1, 0xd8, 0xdf, 0xd0, 0xc1, 0xd8, 0xe0, 0xcf, 0xc1, 0xd9, 0xdf, - 0xd0, 0xc1, 0xd9, 0xe0, 0xcf, 0xc1, 0xd9, 0xdf, 0xd0, 0xc1, 0xd9, 0xe0, - 0xcf, 0xc1, 0xda, 0xdf, 0xd0, 0xc1, 0xda, 0xe0, 0xcf, 0xc1, 0xda, 0xdf, - 0xd0, 0xc1, 0xda, 0xe0, 0xcf, 0xc1, 0xdb, 0xdf, 0xd0, 0xc1, 0xdb, 0xe0, - 0xcf, 0xc1, 0xdb, 0xdf, 0xd0, 0xc1, 0xdb, 0xe0, 0xcf, 0xc1, 0xdc, 0xdf, - 0xd0, 0xc1, 0xdc, 0xe3, 0xe7, 0xc1, 0xdc, 0xe5, 0xe7, 0xc1, 0xdd, 0xe3, - 0xe7, 0xc1, 0xdd, 0xe5, 0xe7, 0xc1, 0xdd, 0xe3, 0xe7, 0xc1, 0xdd, 0xe5, - 0xe7, 0xc1, 0xde, 0xe3, 0xe7, 0xc1, 0xde, 0xe5, 0xe7, 0xc1, 0xde, 0xe3, - 0xe7, 0xc1, 0xde, 0xe2, 0xe8, 0xc1, 0xdf, 0xe3, 0xe7, 0xc1, 0xdf, 0xe2, - 0xe8, 0xc1, 0xdf, 0xe3, 0xe7, 0xc1, 0xdf, 0xe2, 0xe8, 0xc1, 0xe0, 0xe3, - 0xe7, 0xc1, 0xe0, 0xe2, 0xe8, 0xc1, 0xe0, 0xe3, 0xe7, 0xc1, 0xe1, 0xe2, - 0xe8, 0xc1, 0xe1, 0xe3, 0xe7, 0xc1, 0xe1, 0xe2, 0xe8, 0xc1, 0xe1, 0xe3, - 0xe7, 0xc1, 0xe2, 0xe2, 0xe8, 0xc1, 0xe2, 0xe3, 0xe7, 0xc1, 0xe2, 0xe2, - 0xe8, 0xc1, 0xe2, 0xe3, 0xe7, 0xc1, 0xe3, 0xe2, 0xe8, 0xc1, 0xe3, 0xe3, - 0xe7, 0xc1, 0xe3, 0xe2, 0xe8, 0xc1, 0xe3, 0xe3, 0xe7, 0xc1, 0xe4, 0xe2, - 0xe8, 0xc1, 0xe4, 0xe3, 0xe7, 0xc1, 0xe4, 0xe2, 0xe8, 0xc1, 0xe4, 0xe3, - 0xe7, 0xc1, 0xe5, 0xe2, 0xe8, 0xc1, 0xe5, 0xe3, 0xe7, 0xc1, 0xe5, 0xe2, - 0xe8, 0xc1, 0xe5, 0xe3, 0xe7, 0xc1, 0xe6, 0xe2, 0xe8, 0xc1, 0xe6, 0xe2, - 0xe8, 0xc1, 0xe6, 0xe2, 0xe8, 0xc1, 0xe6, 0xe2, 0xe8, 0xc1, 0xe7, 0xe2, - 0xe8, 0xc1, 0xe7, 0xe2, 0xe8, 0xc1, 0xe7, 0xe2, 0xe8, 0xc1, 0xe7, 0xe2, - 0xe8, 0xc1, 0xe8, 0xe2, 0xe8, 0xc0, 0xe7, 0xe2, 0xe8, 0xc1, 0xe8, 0xe2, - 0xe8, 0xc0, 0xe7, 0xe2, 0xe8, 0xc1, 0xe8, 0xe2, 0xe9, 0xc0, 0xe7, 0xe2, - 0xe9, 0xc1, 0xe8, 0xe2, 0xe9, 0xc0, 0xe7, 0xe2, 0xe9, 0xc1, 0xec, 0xe2, - 0xea, 0xc1, 0xeb, 0xe2, 0xea, 0xc1, 0xec, 0xe2, 0xea, 0xc1, 0xeb, 0xe2, - 0xea, 0xc1, 0xec, 0xe2, 0xeb, 0xc1, 0xeb, 0xe2, 0xeb, 0xc1, 0xec, 0xe2, - 0xeb, 0xc1, 0xeb, 0xe1, 0xeb, 0xc1, 0xec, 0xe2, 0xeb, 0xc1, 0xec, 0xe1, - 0xeb, 0xc1, 0xec, 0xe2, 0xeb, 0xc1, 0xec, 0xe1, 0xeb, 0xc1, 0xec, 0xe2, - 0xeb, 0xc1, 0xed, 0xe1, 0xeb, 0xc1, 0xed, 0xe2, 0xeb, 0xc1, 0xed, 0xe1, - 0xeb, 0xc1, 0xed, 0xe2, 0xeb, 0xc1, 0xee, 0xe1, 0xeb, 0xc1, 0xee, 0xe2, - 0xeb, 0xc1, 0xee, 0xe1, 0xeb, 0xc1, 0xee, 0xe2, 0xeb, 0xc1, 0xef, 0xe1, - 0xeb, 0xc1, 0xef, 0xe2, 0xeb, 0xc1, 0xef, 0xe1, 0xeb, 0xc1, 0xef, 0xe2, - 0xeb, 0xc1, 0xf0, 0xe1, 0xeb, 0xc1, 0xf0, 0xe2, 0xeb, 0xc1, 0xf0, 0xe1, - 0xeb, 0xc1, 0xf0, 0xe2, 0xeb, 0xc1, 0xf1, 0xe1, 0xeb, 0xc1, 0xf1, 0xe2, - 0xeb, 0xc1, 0xf1, 0xe1, 0xeb, 0xc1, 0xf1, 0xdf, 0xec, 0xc1, 0xf2, 0xe1, - 0xeb, 0xc1, 0xf2, 0xdf, 0xec, 0xc1, 0xf2, 0xe1, 0xeb, 0xc1, 0xf2, 0xdf, - 0xec, 0xc1, 0xf2, 0xe1, 0xeb, 0xc1, 0xf3, 0xdf, 0xec, 0xc1, 0xf3, 0xe1, - 0xeb, 0xc1, 0xf3, 0xdf, 0xec, 0xc1, 0xf3, 0xe1, 0xeb, 0xc1, 0xf4, 0xdf, - 0xec, 0xc1, 0xf4, 0xe1, 0xeb, 0xc1, 0xf4, 0xdf, 0xec, 0xc1, 0xf4, 0xe1, - 0xeb, 0xc1, 0xf5, 0xdf, 0xec, 0xc1, 0xf5, 0xe1, 0xeb, 0xc1, 0xf5, 0xdf, - 0xec, 0xc1, 0xf5, 0xe1, 0xeb, 0xc1, 0xf5, 0xdf, 0xec, 0xc1, 0xf6, 0xe1, - 0xeb, 0xc1, 0xf6, 0xdf, 0xec, 0xc1, 0xf6, 0xe1, 0xeb, 0xc1, 0xf6, 0xdf, - 0xec, 0xc1, 0xf7, 0xe1, 0xeb, 0xc1, 0xf7, 0xec, 0xf1, 0xc1, 0xf7, 0xec, - 0xf1, 0xc1, 0xf7, 0xec, 0xf1, 0xc1, 0xf8, 0xec, 0xf1, 0xc1, 0xf8, 0xec, - 0xf1, 0xc1, 0xf8, 0xec, 0xf1, 0xc1, 0xf8, 0xec, 0xf1, 0xc1, 0xf8, 0xec, - 0xf1, 0xc1, 0xf9, 0xec, 0xf1, 0xc1, 0xf9, 0xec, 0xf1, 0xc1, 0xf9, 0xec, - 0xf1, 0xc1, 0xf9, 0xec, 0xf1, 0xc1, 0xfa, 0xec, 0xf1, 0xc1, 0xfa, 0xec, - 0xf1, 0xc1, 0xfa, 0xec, 0xf1, 0xc1, 0xfa, 0xec, 0xf1, 0xc1, 0xfa, 0xec, - 0xf1, 0xc1, 0xfb, 0xec, 0xf1, 0xc1, 0xfb, 0xec, 0xf1, 0xc1, 0xfb, 0xec, - 0xf1, 0xc1, 0xfb, 0xec, 0xf1, 0xc1, 0xfc, 0xec, 0xf1, 0xc1, 0xfc, 0xec, - 0xf1, 0xc1, 0xfc, 0xec, 0xf1, 0xc1, 0xfc, 0xec, 0xf1, 0xc1, 0xfc, 0xec, - 0xf1, 0xc1, 0xfd, 0xec, 0xf1, 0xc1, 0xfd, 0xec, 0xf1, 0xc1, 0xfd, 0xec, - 0xf1, 0xc1, 0xfd, 0xec, 0xf1, 0xc1, 0xfe, 0xec, 0xf1, 0xc1, 0xfe, 0xec, - 0xf1, 0xc1, 0xfe, 0xec, 0xf1, 0xc1, 0xfe, 0xec, 0xf1, 0xc1, 0xfe, 0xec, - 0xf1, 0xc1, 0xff, 0xec, 0xf1, 0xc1, 0xff, 0xec, 0xf1, 0xc1, 0x03, 0xe6, - 0x87, 0xc2, 0x0a, 0xe6, 0x87, 0xc2, 0x0f, 0xe6, 0x87, 0xc2, 0x14, 0xe8, - 0x87, 0xc2, 0x17, 0xe6, 0x87, 0xc2, 0x1b, 0xe8, 0x87, 0xc2, 0x1e, 0xe6, - 0x87, 0xc2, 0x20, 0xe8, 0x87, 0xc2, 0x23, 0xe6, 0x87, 0xc2, 0x25, 0xe8, - 0x87, 0xc2, 0x27, 0xe6, 0x87, 0xc2, 0x29, 0xe8, 0x87, 0xc2, 0x2b, 0xe6, - 0x87, 0xc2, 0x2d, 0xe8, 0x87, 0xc2, 0x2f, 0xe6, 0x87, 0xc2, 0x31, 0xe8, - 0x87, 0xc2, 0x32, 0xe6, 0x87, 0xc2, 0x34, 0xe8, 0x87, 0xc2, 0x35, 0xe6, - 0x87, 0xc2, 0x37, 0xe8, 0x87, 0xc2, 0x38, 0xe6, 0x87, 0xc2, 0x3a, 0xe4, - 0x88, 0xc2, 0x3b, 0xe6, 0x87, 0xc2, 0x3c, 0xe4, 0x88, 0xc2, 0x3e, 0xe6, - 0x87, 0xc2, 0x3f, 0xe4, 0x88, 0xc2, 0x40, 0xe6, 0x87, 0xc2, 0x42, 0xe4, - 0x88, 0xc2, 0x43, 0xe6, 0x87, 0xc2, 0x44, 0xe4, 0x88, 0xc2, 0x45, 0xe6, - 0x87, 0xc2, 0x46, 0xe4, 0x88, 0xc2, 0x47, 0xe6, 0x87, 0xc2, 0x48, 0xe4, - 0x88, 0xc2, 0x49, 0xe6, 0x87, 0xc2, 0x4a, 0xe4, 0x88, 0xc2, 0x4b, 0xe6, - 0x87, 0xc2, 0x4c, 0xe4, 0x88, 0xc2, 0x4d, 0xe6, 0x87, 0xc2, 0x4e, 0xe4, - 0x88, 0xc2, 0x4f, 0xe6, 0x87, 0xc2, 0x50, 0xe4, 0x88, 0xc2, 0x51, 0xe6, - 0x87, 0xc2, 0x52, 0xe4, 0x88, 0xc2, 0x53, 0xe6, 0x87, 0xc2, 0x54, 0xe4, - 0x88, 0xc2, 0x55, 0xe6, 0x87, 0xc2, 0x56, 0xe4, 0x88, 0xc2, 0x57, 0xe6, - 0x87, 0xc2, 0x58, 0xe4, 0x88, 0xc2, 0x58, 0xe6, 0x87, 0xc2, 0x59, 0xe4, - 0x88, 0xc2, 0x5a, 0xe6, 0x87, 0xc2, 0x5b, 0xe4, 0x88, 0xc2, 0x5c, 0xe6, - 0x87, 0xc2, 0x5d, 0xe4, 0x88, 0xc2, 0x5d, 0xe6, 0x87, 0xc2, 0x5e, 0xe4, - 0x88, 0xc2, 0x5f, 0xe6, 0x87, 0xc2, 0x60, 0xe4, 0x88, 0xc2, 0x60, 0xe6, - 0x87, 0xc2, 0x61, 0xe4, 0x88, 0xc2, 0x62, 0xe6, 0x87, 0xc2, 0x63, 0xe4, - 0x88, 0xc2, 0x63, 0xe6, 0x87, 0xc2, 0x64, 0xe4, 0x88, 0xc2, 0x65, 0xe6, - 0x87, 0xc2, 0x66, 0xe4, 0x88, 0xc2, 0x66, 0xe6, 0x87, 0xc2, 0x67, 0xe4, - 0x88, 0xc2, 0x68, 0xe6, 0x87, 0xc2, 0x68, 0xe4, 0x88, 0xc2, 0x69, 0xe6, - 0x87, 0xc2, 0x6a, 0xe4, 0x88, 0xc2, 0x6a, 0xe6, 0x87, 0xc2, 0x6b, 0xe4, - 0x88, 0xc2, 0x6c, 0xe6, 0x87, 0xc2, 0x6c, 0xe4, 0x88, 0xc2, 0x6d, 0xe3, - 0x88, 0xc2, 0x6e, 0xe4, 0x88, 0xc2, 0x6e, 0xe3, 0x88, 0xc2, 0x6f, 0xe4, - 0x88, 0xc2, 0x70, 0xe3, 0x88, 0xc2, 0x70, 0xe4, 0x88, 0xc2, 0x71, 0xe3, - 0x88, 0xc2, 0x72, 0xe4, 0x88, 0xc2, 0x72, 0xe3, 0x88, 0xc2, 0x73, 0xe4, - 0x88, 0xc2, 0x73, 0xe3, 0x88, 0xc2, 0x74, 0xe4, 0x88, 0xc2, 0x75, 0xe3, - 0x88, 0xc2, 0x75, 0xe4, 0x88, 0xc2, 0x76, 0xe3, 0x88, 0xc2, 0x76, 0xe4, - 0x88, 0xc2, 0x77, 0xe3, 0x88, 0xc2, 0x78, 0xe4, 0x88, 0xc2, 0x78, 0xe3, - 0x88, 0xc2, 0x79, 0xe4, 0x88, 0xc2, 0x79, 0xe3, 0x88, 0xc2, 0x7a, 0xe4, - 0x88, 0xc2, 0x7a, 0xe3, 0x88, 0xc2, 0x7b, 0xe4, 0x88, 0xc2, 0x7c, 0xe3, - 0x88, 0xc2, 0x7c, 0xe4, 0x88, 0xc2, 0x7d, 0xe3, 0x88, 0xc2, 0x7d, 0xe4, - 0x88, 0xc2, 0x7e, 0xe3, 0x88, 0xc2, 0x7e, 0xe4, 0x88, 0xc2, 0x7f, 0xe3, - 0x88, 0xc2, 0x7f, 0xe4, 0x88, 0xc2, 0x80, 0xe3, 0x88, 0xc2, 0x81, 0xe2, - 0x89, 0xc2, 0x81, 0xe3, 0x88, 0xc2, 0x82, 0xe2, 0x89, 0xc2, 0x82, 0xe3, - 0x88, 0xc2, 0x83, 0xe2, 0x89, 0xc2, 0x83, 0xe3, 0x88, 0xc2, 0x84, 0xe2, - 0x89, 0xc2, 0x84, 0xe3, 0x88, 0xc2, 0x85, 0xe2, 0x89, 0xc2, 0x85, 0xe3, - 0x88, 0xc2, 0x86, 0xe2, 0x89, 0xc2, 0x86, 0xe3, 0x88, 0xc2, 0x87, 0xe2, - 0x89, 0xc2, 0x87, 0xe3, 0x88, 0xc2, 0x88, 0xe2, 0x89, 0xc2, 0x88, 0xe3, - 0x88, 0xc2, 0x88, 0xe2, 0x89, 0xc2, 0x88, 0xe2, 0x89, 0xc2, 0x88, 0xe2, - 0x8a, 0xc2, 0x88, 0xe2, 0x8a, 0xc2, 0x88, 0xe2, 0x8b, 0xc2, 0x88, 0xe2, - 0x8b, 0xc2, 0x88, 0xe2, 0x8c, 0xc2, 0x88, 0xe2, 0x8c, 0xc2, 0x88, 0xe2, - 0x8d, 0xc2, 0x88, 0xe2, 0x8d, 0xc2, 0x88, 0xe2, 0x8e, 0xc2, 0x88, 0xe2, - 0x8e, 0xc2, 0x88, 0xe2, 0x8e, 0xc2, 0x88, 0xe2, 0x8f, 0xc2, 0x88, 0xe2, - 0x8f, 0xc2, 0x88, 0xe2, 0x90, 0xc2, 0x89, 0xe2, 0x90, 0xbe, 0x88, 0xe2, - 0x91, 0xc2, 0x89, 0xe2, 0x91, 0xbe, 0x88, 0xe2, 0x92, 0xc2, 0x89, 0xe2, - 0x92, 0xbe, 0x88, 0xe2, 0x93, 0xc2, 0x89, 0xe2, 0x93, 0xbe, 0x88, 0xe2, - 0x94, 0xc2, 0x89, 0xe2, 0x94, 0xbe, 0x88, 0xe2, 0x94, 0xc2, 0x89, 0xe2, - 0x95, 0xbe, 0x88, 0xe2, 0x95, 0xc2, 0x89, 0xe2, 0x96, 0xbe, 0x88, 0xe2, - 0x96, 0xc2, 0x89, 0xe2, 0x97, 0xbe, 0x88, 0xe2, 0x97, 0xc2, 0x89, 0xe2, - 0x98, 0xbe, 0x88, 0xe2, 0x98, 0xc2, 0x89, 0xe2, 0x98, 0xbe, 0x88, 0xe2, - 0x99, 0xc2, 0x89, 0xe2, 0x99, 0xbe, 0x88, 0xe2, 0x9a, 0xc2, 0x89, 0xe2, - 0x9a, 0xbe, 0x88, 0xe2, 0x9a, 0xc2, 0x89, 0xe2, 0x9b, 0xbe, 0x88, 0xe2, - 0x9b, 0xc2, 0x89, 0xe2, 0x9c, 0xbe, 0x88, 0xe2, 0x9c, 0xc2, 0x89, 0xe2, - 0x9d, 0xbe, 0x88, 0xe2, 0x9d, 0xc2, 0x89, 0xe2, 0x9d, 0xbe, 0x88, 0xe2, - 0x9e, 0xc2, 0x89, 0xe2, 0x9e, 0xbe, 0x89, 0xe2, 0x9f, 0xbb, 0x89, 0xe2, - 0x9f, 0xbe, 0x89, 0xe2, 0x9f, 0xbb, 0x89, 0xe2, 0xa0, 0xbe, 0x89, 0xe2, - 0xa0, 0xbb, 0x89, 0xe2, 0xa1, 0xbe, 0x89, 0xe2, 0xa1, 0xbb, 0x89, 0xe2, - 0xa1, 0xbe, 0x89, 0xe2, 0xa2, 0xbb, 0x89, 0xe2, 0xa2, 0xbe, 0x89, 0xe2, - 0xa3, 0xbb, 0x89, 0xe2, 0xa3, 0xbe, 0x89, 0xe2, 0xa3, 0xbb, 0x89, 0xe2, - 0xa4, 0xbe, 0x89, 0xe2, 0xa4, 0xbb, 0x89, 0xe2, 0xa5, 0xbe, 0x89, 0xe2, - 0xa5, 0xbb, 0x89, 0xe2, 0xa5, 0xbe, 0x89, 0xe2, 0xa6, 0xbb, 0x89, 0xe2, - 0xa6, 0xbe, 0x89, 0xe2, 0xa6, 0xbb, 0x89, 0xe2, 0xa7, 0xbe, 0x89, 0xe2, - 0xa7, 0xbb, 0x89, 0xe2, 0xa8, 0xbe, 0x89, 0xe2, 0xa8, 0xbb, 0x89, 0xe2, - 0xa8, 0xbe, 0x89, 0xe2, 0xa9, 0xbb, 0x89, 0xe2, 0xa9, 0xbe, 0x89, 0xe2, - 0xaa, 0xbb, 0x89, 0xe2, 0xaa, 0xbe, 0x89, 0xe2, 0xaa, 0xbb, 0x89, 0xe2, - 0xab, 0xbe, 0x89, 0xe2, 0xab, 0xbb, 0x89, 0xe2, 0xab, 0xbe, 0x89, 0xe2, - 0xac, 0xbb, 0x89, 0xe2, 0xac, 0xbe, 0x89, 0xe2, 0xac, 0xbb, 0x8a, 0xe2, - 0xad, 0xb8, 0x89, 0xe2, 0xad, 0xbb, 0x8a, 0xe2, 0xae, 0xb8, 0x89, 0xe2, - 0xae, 0xbb, 0x8a, 0xe2, 0xae, 0xb8, 0xa3, 0xe2, 0xaf, 0x97, 0xa3, 0xe2, - 0xaf, 0x97, 0xa3, 0xe2, 0xaf, 0x97, 0xa8, 0xe2, 0xb0, 0xef, 0xa3, 0xe2, - 0xb0, 0x97, 0xa8, 0xe2, 0xb0, 0xef, 0xac, 0xe2, 0xb1, 0xf0, 0xce, 0xe2, - 0xb1, 0xcd, 0xce, 0xe2, 0xb2, 0xcb, 0xce, 0xe2, 0xb2, 0xcd, 0xce, 0xe2, - 0xb2, 0xcb, 0xce, 0xe2, 0xb3, 0xcd, 0xce, 0xe2, 0xb3, 0xcb, 0xce, 0xe2, - 0xb3, 0xcd, 0xce, 0xe2, 0xb4, 0xcb, 0xce, 0xe2, 0xb4, 0xc8, 0xce, 0xe2, - 0xb4, 0xcb, 0xce, 0xe2, 0xb5, 0xc8, 0xce, 0xe2, 0xb5, 0xcb, 0xce, 0xe2, - 0xb5, 0xc8, 0xce, 0xe2, 0xb6, 0xcb, 0xce, 0xe2, 0xb6, 0xc8, 0xce, 0xe2, - 0xb6, 0xcb, 0xce, 0xe2, 0xb7, 0xc8, 0xce, 0xe2, 0xb7, 0xcb, 0xce, 0xe2, - 0xb7, 0xc8, 0xce, 0xe2, 0xb8, 0xcb, 0xce, 0xe2, 0xb8, 0xc8, 0xcf, 0xe2, - 0xb8, 0xc5, 0xce, 0xe2, 0xb9, 0xc8, 0xcf, 0xe2, 0xb9, 0xc5, 0xce, 0xe2, - 0xb9, 0xc8, 0xcf, 0xe2, 0xba, 0xc5, 0xce, 0xe2, 0xba, 0xc8, 0xcf, 0xe2, - 0xba, 0xc5, 0xce, 0xe2, 0xbb, 0xc8, 0xcf, 0xe2, 0xbb, 0xc5, 0xce, 0xe2, - 0xbb, 0xc8, 0xcf, 0xe2, 0xbc, 0xc5, 0xce, 0xe2, 0xbc, 0xc8, 0xcf, 0xe2, - 0xbc, 0xc5, 0xce, 0xe2, 0xbd, 0xc8, 0xcf, 0xe2, 0xbd, 0xc5, 0xce, 0xe2, - 0xbd, 0xc8, 0xcf, 0xe2, 0xbe, 0xc5, 0xce, 0xe2, 0xbe, 0xc8, 0xcf, 0xe2, - 0xbe, 0xc5, 0xce, 0xe2, 0xbf, 0xc8, 0xcf, 0xe2, 0xbf, 0xc5, 0xce, 0xe2, - 0xbf, 0xc8, 0xcf, 0xe2, 0xc0, 0xc5, 0xce, 0xe2, 0xc0, 0xc8, 0xcf, 0xe2, - 0xc0, 0xc5, 0xce, 0xe2, 0xc1, 0xc8, 0xcf, 0xe2, 0xc1, 0xc5, 0xce, 0xe2, - 0xc1, 0xc8, 0xcf, 0xe2, 0xc1, 0xc5, 0xce, 0xe2, 0xc2, 0xc8, 0xcf, 0xe2, - 0xc2, 0xc5, 0xce, 0xe2, 0xc2, 0xc8, 0xcf, 0xe2, 0xc3, 0xc5, 0xce, 0xe2, - 0xc3, 0xc8, 0xcf, 0xe2, 0xc3, 0xc5, 0xce, 0xe2, 0xc4, 0xc8, 0xcf, 0xe2, - 0xc4, 0xc5, 0xcf, 0xe2, 0xc4, 0xc3, 0xcf, 0xe2, 0xc5, 0xc5, 0xcf, 0xe2, - 0xc5, 0xc3, 0xcf, 0xe2, 0xc5, 0xc5, 0xcf, 0xe2, 0xc6, 0xc3, 0xcf, 0xe2, - 0xc6, 0xc5, 0xcf, 0xe2, 0xc6, 0xc3, 0xcf, 0xe2, 0xc6, 0xc5, 0xcf, 0xe2, - 0xc7, 0xc3, 0xcf, 0xe2, 0xc7, 0xc5, 0xcf, 0xe2, 0xc7, 0xc3, 0xcf, 0xe2, - 0xc8, 0xc5, 0xcf, 0xe2, 0xc8, 0xc3, 0xcf, 0xe2, 0xc8, 0xc5, 0xcf, 0xe2, - 0xc9, 0xc3, 0xcf, 0xe2, 0xc9, 0xc5, 0xcf, 0xe2, 0xc9, 0xc3, 0xcf, 0xe2, - 0xc9, 0xc5, 0xcf, 0xe2, 0xca, 0xc3, 0xcf, 0xe2, 0xca, 0xc5, 0xcf, 0xe2, - 0xca, 0xc3, 0xcf, 0xe2, 0xcb, 0xc5, 0xcf, 0xe2, 0xcb, 0xc3, 0xcf, 0xe2, - 0xcb, 0xc5, 0xcf, 0xe2, 0xcc, 0xc3, 0xcf, 0xe2, 0xcc, 0xc5, 0xcf, 0xe2, - 0xcc, 0xc3, 0xcf, 0xe2, 0xcc, 0xc5, 0xcf, 0xe2, 0xcd, 0xc3, 0xcf, 0xe2, - 0xcd, 0xc2, 0xcf, 0xe2, 0xcd, 0xc3, 0xcf, 0xe2, 0xce, 0xc2, 0xcf, 0xe2, - 0xce, 0xc3, 0xcf, 0xe2, 0xce, 0xc2, 0xcf, 0xe2, 0xce, 0xc3, 0xcf, 0xe2, - 0xcf, 0xc2, 0xd0, 0xe2, 0xcf, 0xc2, 0xcf, 0xe2, 0xcf, 0xc2, 0xd0, 0xe2, - 0xcf, 0xc2, 0xd0, 0xe2, 0xcf, 0xc2, 0xd0, 0xe2, 0xcf, 0xc2, 0xd0, 0xe2, - 0xcf, 0xc2, 0xd1, 0xe2, 0xcf, 0xc2, 0xd1, 0xe2, 0xcf, 0xc2, 0xd1, 0xe2, - 0xcf, 0xc2, 0xd2, 0xe1, 0xcf, 0xc2, 0xd2, 0xe2, 0xcf, 0xc2, 0xd2, 0xe1, - 0xcf, 0xc2, 0xd2, 0xe2, 0xcf, 0xc2, 0xd3, 0xe1, 0xcf, 0xc2, 0xd3, 0xe2, - 0xcf, 0xc2, 0xd3, 0xe1, 0xcf, 0xc2, 0xd4, 0xe2, 0xcf, 0xc2, 0xd4, 0xe1, - 0xcf, 0xc2, 0xd4, 0xe2, 0xcf, 0xc2, 0xd4, 0xe1, 0xcf, 0xc2, 0xd5, 0xe2, - 0xcf, 0xc2, 0xd5, 0xe1, 0xcf, 0xc2, 0xd5, 0xe2, 0xcf, 0xc2, 0xd6, 0xe1, - 0xcf, 0xc2, 0xd6, 0xe2, 0xcf, 0xc2, 0xd6, 0xe1, 0xcf, 0xc2, 0xd6, 0xe2, - 0xcf, 0xc2, 0xd7, 0xe1, 0xcf, 0xc2, 0xd7, 0xe2, 0xcf, 0xc2, 0xd7, 0xe1, - 0xcf, 0xc2, 0xd7, 0xe2, 0xcf, 0xc2, 0xd8, 0xe1, 0xcf, 0xc2, 0xd8, 0xe2, - 0xcf, 0xc2, 0xd8, 0xe1, 0xcf, 0xc2, 0xd9, 0xe2, 0xcf, 0xc2, 0xd9, 0xe1, - 0xcf, 0xc2, 0xd9, 0xe2, 0xcf, 0xc2, 0xd9, 0xe1, 0xcf, 0xc2, 0xda, 0xdf, - 0xd0, 0xc2, 0xda, 0xe1, 0xcf, 0xc2, 0xda, 0xdf, 0xd0, 0xc2, 0xda, 0xe1, - 0xcf, 0xc2, 0xdb, 0xdf, 0xd0, 0xc2, 0xdb, 0xe1, 0xcf, 0xc2, 0xdb, 0xdf, - 0xd0, 0xc2, 0xdb, 0xe1, 0xcf, 0xc2, 0xdc, 0xe5, 0xe7, 0xc2, 0xdc, 0xe3, - 0xe7, 0xc2, 0xdc, 0xe5, 0xe7, 0xc2, 0xdd, 0xe3, 0xe7, 0xc2, 0xdd, 0xe5, - 0xe7, 0xc2, 0xdd, 0xe3, 0xe7, 0xc2, 0xdd, 0xe5, 0xe7, 0xc2, 0xde, 0xe3, - 0xe7, 0xc2, 0xde, 0xe5, 0xe7, 0xc2, 0xde, 0xe3, 0xe7, 0xc2, 0xde, 0xe5, - 0xe7, 0xc2, 0xdf, 0xe3, 0xe7, 0xc2, 0xdf, 0xe5, 0xe7, 0xc2, 0xdf, 0xe3, - 0xe7, 0xc2, 0xdf, 0xe5, 0xe7, 0xc2, 0xe0, 0xe3, 0xe7, 0xc2, 0xe0, 0xe5, - 0xe7, 0xc2, 0xe0, 0xe3, 0xe7, 0xc2, 0xe1, 0xe5, 0xe7, 0xc2, 0xe1, 0xe3, - 0xe7, 0xc2, 0xe1, 0xe5, 0xe7, 0xc2, 0xe1, 0xe3, 0xe7, 0xc2, 0xe2, 0xe2, - 0xe8, 0xc2, 0xe2, 0xe3, 0xe7, 0xc2, 0xe2, 0xe2, 0xe8, 0xc2, 0xe2, 0xe3, - 0xe7, 0xc2, 0xe3, 0xe2, 0xe8, 0xc2, 0xe3, 0xe3, 0xe7, 0xc2, 0xe3, 0xe2, - 0xe8, 0xc2, 0xe3, 0xe3, 0xe7, 0xc2, 0xe4, 0xe2, 0xe8, 0xc2, 0xe4, 0xe3, - 0xe7, 0xc2, 0xe4, 0xe2, 0xe8, 0xc2, 0xe4, 0xe3, 0xe7, 0xc2, 0xe5, 0xe2, - 0xe8, 0xc2, 0xe5, 0xe3, 0xe7, 0xc2, 0xe5, 0xe2, 0xe8, 0xc2, 0xe5, 0xe3, - 0xe7, 0xc2, 0xe6, 0xe2, 0xe8, 0xc2, 0xe6, 0xe3, 0xe7, 0xc2, 0xe6, 0xe2, - 0xe8, 0xc2, 0xe6, 0xe3, 0xe7, 0xc2, 0xe7, 0xe2, 0xe8, 0xc2, 0xe7, 0xe2, - 0xe8, 0xc2, 0xe7, 0xe2, 0xe8, 0xc2, 0xe7, 0xe2, 0xe8, 0xc2, 0xe8, 0xe2, - 0xe8, 0xc1, 0xe7, 0xe2, 0xe8, 0xc2, 0xe8, 0xe2, 0xe8, 0xc1, 0xe7, 0xe2, - 0xe8, 0xc2, 0xe8, 0xe2, 0xe9, 0xc1, 0xe7, 0xe2, 0xe9, 0xc2, 0xe8, 0xe2, - 0xe9, 0xc1, 0xe7, 0xe2, 0xe9, 0xc2, 0xec, 0xe2, 0xea, 0xc2, 0xeb, 0xe2, - 0xea, 0xc2, 0xec, 0xe2, 0xea, 0xc2, 0xeb, 0xe2, 0xea, 0xc2, 0xec, 0xe2, - 0xeb, 0xc2, 0xeb, 0xe2, 0xeb, 0xc2, 0xec, 0xe2, 0xeb, 0xc2, 0xeb, 0xe2, - 0xeb, 0xc2, 0xec, 0xe2, 0xeb, 0xc2, 0xec, 0xe2, 0xeb, 0xc2, 0xec, 0xe2, - 0xeb, 0xc2, 0xec, 0xe1, 0xeb, 0xc2, 0xec, 0xe2, 0xeb, 0xc2, 0xed, 0xe1, - 0xeb, 0xc2, 0xed, 0xe2, 0xeb, 0xc2, 0xed, 0xe1, 0xeb, 0xc2, 0xed, 0xe2, - 0xeb, 0xc2, 0xee, 0xe1, 0xeb, 0xc2, 0xee, 0xe2, 0xeb, 0xc2, 0xee, 0xe1, - 0xeb, 0xc2, 0xee, 0xe2, 0xeb, 0xc2, 0xef, 0xe1, 0xeb, 0xc2, 0xef, 0xe2, - 0xeb, 0xc2, 0xef, 0xe1, 0xeb, 0xc2, 0xef, 0xe2, 0xeb, 0xc2, 0xf0, 0xe1, - 0xeb, 0xc2, 0xf0, 0xe2, 0xeb, 0xc2, 0xf0, 0xe1, 0xeb, 0xc2, 0xf0, 0xe2, - 0xeb, 0xc2, 0xf1, 0xe1, 0xeb, 0xc2, 0xf1, 0xe2, 0xeb, 0xc2, 0xf1, 0xe1, - 0xeb, 0xc2, 0xf1, 0xdf, 0xec, 0xc2, 0xf2, 0xe1, 0xeb, 0xc2, 0xf2, 0xdf, - 0xec, 0xc2, 0xf2, 0xe1, 0xeb, 0xc2, 0xf2, 0xdf, 0xec, 0xc2, 0xf2, 0xe1, - 0xeb, 0xc2, 0xf3, 0xdf, 0xec, 0xc2, 0xf3, 0xe1, 0xeb, 0xc2, 0xf3, 0xdf, - 0xec, 0xc2, 0xf3, 0xe1, 0xeb, 0xc2, 0xf4, 0xdf, 0xec, 0xc2, 0xf4, 0xe1, - 0xeb, 0xc2, 0xf4, 0xdf, 0xec, 0xc2, 0xf4, 0xe1, 0xeb, 0xc2, 0xf5, 0xdf, - 0xec, 0xc2, 0xf5, 0xe1, 0xeb, 0xc2, 0xf5, 0xdf, 0xec, 0xc2, 0xf5, 0xe1, - 0xeb, 0xc2, 0xf5, 0xdf, 0xec, 0xc2, 0xf6, 0xe1, 0xeb, 0xc2, 0xf6, 0xec, - 0xf1, 0xc2, 0xf6, 0xec, 0xf1, 0xc2, 0xf6, 0xec, 0xf1, 0xc2, 0xf7, 0xec, - 0xf1, 0xc2, 0xf7, 0xec, 0xf1, 0xc2, 0xf7, 0xec, 0xf1, 0xc2, 0xf7, 0xec, - 0xf1, 0xc2, 0xf8, 0xec, 0xf1, 0xc2, 0xf8, 0xec, 0xf1, 0xc2, 0xf8, 0xec, - 0xf1, 0xc2, 0xf8, 0xec, 0xf1, 0xc2, 0xf8, 0xec, 0xf1, 0xc2, 0xf9, 0xec, - 0xf1, 0xc2, 0xf9, 0xec, 0xf1, 0xc2, 0xf9, 0xec, 0xf1, 0xc2, 0xf9, 0xec, - 0xf1, 0xc2, 0xfa, 0xec, 0xf1, 0xc2, 0xfa, 0xec, 0xf1, 0xc2, 0xfa, 0xec, - 0xf1, 0xc2, 0xfa, 0xec, 0xf1, 0xc2, 0xfa, 0xec, 0xf1, 0xc2, 0xfb, 0xec, - 0xf1, 0xc2, 0xfb, 0xec, 0xf1, 0xc2, 0xfb, 0xec, 0xf1, 0xc2, 0xfb, 0xec, - 0xf1, 0xc2, 0xfc, 0xec, 0xf1, 0xc2, 0xfc, 0xec, 0xf1, 0xc2, 0xfc, 0xec, - 0xf1, 0xc2, 0xfc, 0xec, 0xf1, 0xc2, 0xfc, 0xec, 0xf1, 0xc2, 0xfd, 0xec, - 0xf1, 0xc2, 0xfd, 0xec, 0xf1, 0xc2, 0xfd, 0xec, 0xf1, 0xc2, 0xfd, 0xec, - 0xf1, 0xc2, 0xfe, 0xec, 0xf1, 0xc2, 0xfe, 0xec, 0xf1, 0xc2, 0xfe, 0xec, - 0xf1, 0xc2, 0xfe, 0xec, 0xf1, 0xc2, 0xfe, 0xec, 0xf1, 0xc2, 0xff, 0xec, - 0xf1, 0xc2, 0xff, 0xec, 0xf1, 0xc2, 0x03, 0xe9, 0x86, 0xc2, 0x0a, 0xe7, - 0x87, 0xc2, 0x0f, 0xe9, 0x86, 0xc2, 0x14, 0xe7, 0x87, 0xc2, 0x17, 0xe6, - 0x87, 0xc2, 0x1b, 0xe7, 0x87, 0xc2, 0x1e, 0xe6, 0x87, 0xc2, 0x20, 0xe7, - 0x87, 0xc2, 0x23, 0xe6, 0x87, 0xc2, 0x25, 0xe7, 0x87, 0xc2, 0x27, 0xe6, - 0x87, 0xc2, 0x29, 0xe7, 0x87, 0xc2, 0x2b, 0xe6, 0x87, 0xc2, 0x2d, 0xe7, - 0x87, 0xc2, 0x2f, 0xe6, 0x87, 0xc2, 0x31, 0xe7, 0x87, 0xc2, 0x32, 0xe6, - 0x87, 0xc2, 0x34, 0xe7, 0x87, 0xc2, 0x35, 0xe6, 0x87, 0xc2, 0x37, 0xe7, - 0x87, 0xc2, 0x38, 0xe6, 0x87, 0xc2, 0x3a, 0xe7, 0x87, 0xc2, 0x3b, 0xe6, - 0x87, 0xc2, 0x3c, 0xe7, 0x87, 0xc2, 0x3e, 0xe6, 0x87, 0xc2, 0x3f, 0xe7, - 0x87, 0xc2, 0x40, 0xe6, 0x87, 0xc2, 0x42, 0xe7, 0x87, 0xc2, 0x43, 0xe6, - 0x87, 0xc2, 0x44, 0xe7, 0x87, 0xc2, 0x45, 0xe6, 0x87, 0xc2, 0x46, 0xe7, - 0x87, 0xc2, 0x47, 0xe6, 0x87, 0xc2, 0x48, 0xe4, 0x88, 0xc2, 0x49, 0xe6, - 0x87, 0xc2, 0x4a, 0xe4, 0x88, 0xc2, 0x4b, 0xe6, 0x87, 0xc2, 0x4c, 0xe4, - 0x88, 0xc2, 0x4d, 0xe6, 0x87, 0xc2, 0x4e, 0xe4, 0x88, 0xc2, 0x4f, 0xe6, - 0x87, 0xc2, 0x50, 0xe4, 0x88, 0xc2, 0x51, 0xe6, 0x87, 0xc2, 0x52, 0xe4, - 0x88, 0xc2, 0x53, 0xe6, 0x87, 0xc2, 0x54, 0xe4, 0x88, 0xc2, 0x55, 0xe6, - 0x87, 0xc2, 0x56, 0xe4, 0x88, 0xc2, 0x57, 0xe6, 0x87, 0xc2, 0x58, 0xe4, - 0x88, 0xc2, 0x58, 0xe6, 0x87, 0xc2, 0x59, 0xe4, 0x88, 0xc2, 0x5a, 0xe6, - 0x87, 0xc2, 0x5b, 0xe4, 0x88, 0xc2, 0x5c, 0xe6, 0x87, 0xc2, 0x5d, 0xe4, - 0x88, 0xc2, 0x5d, 0xe6, 0x87, 0xc2, 0x5e, 0xe4, 0x88, 0xc2, 0x5f, 0xe6, - 0x87, 0xc2, 0x60, 0xe4, 0x88, 0xc2, 0x60, 0xe6, 0x87, 0xc2, 0x61, 0xe4, - 0x88, 0xc2, 0x62, 0xe6, 0x87, 0xc2, 0x63, 0xe4, 0x88, 0xc2, 0x63, 0xe6, - 0x87, 0xc2, 0x64, 0xe4, 0x88, 0xc2, 0x65, 0xe6, 0x87, 0xc2, 0x66, 0xe4, - 0x88, 0xc2, 0x66, 0xe6, 0x87, 0xc2, 0x67, 0xe4, 0x88, 0xc2, 0x68, 0xe6, - 0x87, 0xc2, 0x68, 0xe4, 0x88, 0xc2, 0x69, 0xe6, 0x87, 0xc2, 0x6a, 0xe4, - 0x88, 0xc2, 0x6a, 0xe6, 0x87, 0xc2, 0x6b, 0xe4, 0x88, 0xc2, 0x6c, 0xe6, - 0x87, 0xc2, 0x6c, 0xe4, 0x88, 0xc2, 0x6d, 0xe2, 0x88, 0xc2, 0x6e, 0xe4, - 0x88, 0xc2, 0x6e, 0xe2, 0x88, 0xc2, 0x6f, 0xe4, 0x88, 0xc2, 0x70, 0xe2, - 0x88, 0xc2, 0x70, 0xe4, 0x88, 0xc2, 0x71, 0xe2, 0x88, 0xc2, 0x72, 0xe4, - 0x88, 0xc2, 0x72, 0xe2, 0x88, 0xc2, 0x73, 0xe4, 0x88, 0xc2, 0x73, 0xe2, - 0x88, 0xc2, 0x74, 0xe4, 0x88, 0xc2, 0x75, 0xe2, 0x88, 0xc2, 0x75, 0xe4, - 0x88, 0xc2, 0x76, 0xe2, 0x88, 0xc2, 0x76, 0xe4, 0x88, 0xc2, 0x77, 0xe2, - 0x88, 0xc2, 0x78, 0xe4, 0x88, 0xc2, 0x78, 0xe2, 0x88, 0xc2, 0x79, 0xe4, - 0x88, 0xc2, 0x79, 0xe2, 0x88, 0xc2, 0x7a, 0xe4, 0x88, 0xc2, 0x7a, 0xe2, - 0x88, 0xc2, 0x7b, 0xe4, 0x88, 0xc2, 0x7c, 0xe2, 0x88, 0xc2, 0x7c, 0xe4, - 0x88, 0xc2, 0x7d, 0xe2, 0x88, 0xc2, 0x7d, 0xe4, 0x88, 0xc2, 0x7e, 0xe2, - 0x88, 0xc2, 0x7e, 0xe4, 0x88, 0xc2, 0x7f, 0xe2, 0x88, 0xc2, 0x7f, 0xe4, - 0x88, 0xc2, 0x80, 0xe2, 0x88, 0xc2, 0x81, 0xe4, 0x88, 0xc2, 0x81, 0xe2, - 0x88, 0xc2, 0x82, 0xe4, 0x88, 0xc2, 0x82, 0xe2, 0x88, 0xc2, 0x83, 0xe4, - 0x88, 0xc2, 0x83, 0xe2, 0x88, 0xc2, 0x84, 0xe2, 0x89, 0xc2, 0x84, 0xe2, - 0x88, 0xc2, 0x85, 0xe2, 0x89, 0xc2, 0x85, 0xe2, 0x88, 0xc2, 0x86, 0xe2, - 0x89, 0xc2, 0x86, 0xe2, 0x88, 0xc2, 0x87, 0xe2, 0x89, 0xc2, 0x87, 0xe2, - 0x88, 0xc2, 0x88, 0xe2, 0x89, 0xc2, 0x88, 0xe2, 0x88, 0xc1, 0x88, 0xe2, - 0x89, 0xc2, 0x88, 0xe2, 0x89, 0xc1, 0x88, 0xe2, 0x8a, 0xc2, 0x88, 0xe2, - 0x8a, 0xc1, 0x88, 0xe2, 0x8b, 0xc2, 0x88, 0xe2, 0x8b, 0xc1, 0x88, 0xe2, - 0x8c, 0xc2, 0x88, 0xe2, 0x8c, 0xc1, 0x88, 0xe2, 0x8d, 0xc2, 0x88, 0xe2, - 0x8d, 0xc1, 0x88, 0xe2, 0x8e, 0xc2, 0x88, 0xe2, 0x8e, 0xc1, 0x88, 0xe2, - 0x8e, 0xc2, 0x88, 0xe2, 0x8f, 0xc1, 0x88, 0xe2, 0x8f, 0xc2, 0x88, 0xe2, - 0x90, 0xc1, 0x89, 0xe2, 0x90, 0xbf, 0x88, 0xe2, 0x91, 0xc1, 0x89, 0xe2, - 0x91, 0xbf, 0x88, 0xe2, 0x92, 0xc1, 0x89, 0xe2, 0x92, 0xbf, 0x88, 0xe2, - 0x93, 0xc1, 0x89, 0xe2, 0x93, 0xbf, 0x88, 0xe2, 0x94, 0xc1, 0x89, 0xe2, - 0x94, 0xbf, 0x88, 0xe2, 0x94, 0xc1, 0x89, 0xe2, 0x95, 0xbf, 0x88, 0xe2, - 0x95, 0xc1, 0x89, 0xe2, 0x96, 0xbf, 0x88, 0xe2, 0x96, 0xc1, 0x89, 0xe2, - 0x97, 0xbf, 0x88, 0xe2, 0x97, 0xc1, 0x89, 0xe2, 0x98, 0xbf, 0x88, 0xe2, - 0x98, 0xc1, 0x89, 0xe2, 0x98, 0xbf, 0x88, 0xe2, 0x99, 0xc1, 0x89, 0xe2, - 0x99, 0xbf, 0x88, 0xe2, 0x9a, 0xc1, 0x89, 0xe2, 0x9a, 0xbf, 0x88, 0xe2, - 0x9a, 0xc1, 0x89, 0xe2, 0x9b, 0xbf, 0x88, 0xe2, 0x9b, 0xc1, 0x89, 0xe2, - 0x9c, 0xbf, 0x88, 0xe2, 0x9c, 0xc1, 0x89, 0xe2, 0x9d, 0xbf, 0x88, 0xe2, - 0x9d, 0xc1, 0x89, 0xe2, 0x9d, 0xbf, 0x88, 0xe2, 0x9e, 0xc1, 0x89, 0xe2, - 0x9e, 0xbf, 0x89, 0xe2, 0x9f, 0xbc, 0x89, 0xe2, 0x9f, 0xbf, 0x89, 0xe2, - 0x9f, 0xbc, 0x89, 0xe2, 0xa0, 0xbf, 0x89, 0xe2, 0xa0, 0xbc, 0x89, 0xe2, - 0xa1, 0xbf, 0x89, 0xe2, 0xa1, 0xbc, 0x89, 0xe2, 0xa1, 0xbf, 0x89, 0xe2, - 0xa2, 0xbc, 0x89, 0xe2, 0xa2, 0xbf, 0x89, 0xe2, 0xa3, 0xbc, 0x89, 0xe2, - 0xa3, 0xbf, 0x89, 0xe2, 0xa3, 0xbc, 0x89, 0xe2, 0xa4, 0xbf, 0x89, 0xe2, - 0xa4, 0xbc, 0x89, 0xe2, 0xa5, 0xbf, 0x89, 0xe2, 0xa5, 0xbc, 0x89, 0xe2, - 0xa5, 0xbf, 0x89, 0xe2, 0xa6, 0xbc, 0x89, 0xe2, 0xa6, 0xbf, 0x89, 0xe2, - 0xa6, 0xbc, 0x89, 0xe2, 0xa7, 0xbf, 0x89, 0xe2, 0xa7, 0xbc, 0x89, 0xe2, - 0xa8, 0xbf, 0x89, 0xe2, 0xa8, 0xbc, 0x89, 0xe2, 0xa8, 0xbf, 0x89, 0xe2, - 0xa9, 0xbc, 0x89, 0xe2, 0xa9, 0xbf, 0x89, 0xe2, 0xaa, 0xbc, 0x89, 0xe2, - 0xaa, 0xbf, 0x89, 0xe2, 0xaa, 0xbc, 0x89, 0xe2, 0xab, 0xbf, 0x89, 0xe2, - 0xab, 0xbc, 0x89, 0xe2, 0xab, 0xbf, 0x89, 0xe2, 0xac, 0xbc, 0x89, 0xe2, - 0xac, 0xbf, 0x89, 0xe2, 0xac, 0xbc, 0x89, 0xe2, 0xad, 0xbf, 0x89, 0xe2, - 0xad, 0xbc, 0x89, 0xe2, 0xae, 0xbf, 0x89, 0xe2, 0xae, 0xbc, 0x89, 0xe2, - 0xae, 0xbf, 0xa6, 0xe2, 0xaf, 0xee, 0xab, 0xe2, 0xaf, 0xef, 0xaa, 0xe2, - 0xaf, 0xef, 0xab, 0xe2, 0xb0, 0xef, 0xaa, 0xe2, 0xb0, 0xef, 0xab, 0xe2, - 0xb0, 0xef, 0xaa, 0xe2, 0xb1, 0xef, 0xab, 0xe2, 0xb1, 0xef, 0xce, 0xe2, - 0xb2, 0xca, 0xce, 0xe2, 0xb2, 0xc7, 0xce, 0xe2, 0xb2, 0xca, 0xce, 0xe2, - 0xb3, 0xc7, 0xce, 0xe2, 0xb3, 0xca, 0xce, 0xe2, 0xb3, 0xc7, 0xce, 0xe2, - 0xb4, 0xca, 0xce, 0xe2, 0xb4, 0xc7, 0xce, 0xe2, 0xb4, 0xca, 0xce, 0xe2, - 0xb5, 0xc7, 0xce, 0xe2, 0xb5, 0xca, 0xce, 0xe2, 0xb5, 0xc7, 0xce, 0xe2, - 0xb6, 0xca, 0xce, 0xe2, 0xb6, 0xc7, 0xce, 0xe2, 0xb6, 0xca, 0xce, 0xe2, - 0xb7, 0xc7, 0xce, 0xe2, 0xb7, 0xca, 0xce, 0xe2, 0xb7, 0xc7, 0xce, 0xe2, - 0xb8, 0xca, 0xce, 0xe2, 0xb8, 0xc7, 0xce, 0xe2, 0xb8, 0xca, 0xce, 0xe2, - 0xb9, 0xc7, 0xce, 0xe2, 0xb9, 0xca, 0xce, 0xe2, 0xb9, 0xc7, 0xce, 0xe2, - 0xba, 0xca, 0xce, 0xe2, 0xba, 0xc7, 0xce, 0xe2, 0xba, 0xca, 0xce, 0xe2, - 0xbb, 0xc7, 0xce, 0xe2, 0xbb, 0xca, 0xce, 0xe2, 0xbb, 0xc7, 0xce, 0xe2, - 0xbc, 0xca, 0xce, 0xe2, 0xbc, 0xc7, 0xce, 0xe2, 0xbc, 0xca, 0xce, 0xe2, - 0xbd, 0xc7, 0xce, 0xe2, 0xbd, 0xca, 0xce, 0xe2, 0xbd, 0xc7, 0xcf, 0xe2, - 0xbe, 0xc5, 0xce, 0xe2, 0xbe, 0xc7, 0xcf, 0xe2, 0xbe, 0xc5, 0xce, 0xe2, - 0xbf, 0xc7, 0xcf, 0xe2, 0xbf, 0xc5, 0xce, 0xe2, 0xbf, 0xc7, 0xcf, 0xe2, - 0xc0, 0xc5, 0xce, 0xe2, 0xc0, 0xc7, 0xcf, 0xe2, 0xc0, 0xc5, 0xce, 0xe2, - 0xc1, 0xc7, 0xcf, 0xe2, 0xc1, 0xc5, 0xce, 0xe2, 0xc1, 0xc7, 0xcf, 0xe2, - 0xc1, 0xc5, 0xce, 0xe2, 0xc2, 0xc7, 0xcf, 0xe2, 0xc2, 0xc5, 0xce, 0xe2, - 0xc2, 0xc7, 0xcf, 0xe2, 0xc3, 0xc5, 0xce, 0xe2, 0xc3, 0xc7, 0xcf, 0xe2, - 0xc3, 0xc5, 0xce, 0xe2, 0xc4, 0xc7, 0xcf, 0xe2, 0xc4, 0xc5, 0xce, 0xe2, - 0xc4, 0xc7, 0xcf, 0xe2, 0xc5, 0xc5, 0xce, 0xe2, 0xc5, 0xc7, 0xcf, 0xe2, - 0xc5, 0xc5, 0xce, 0xe2, 0xc6, 0xc7, 0xcf, 0xe2, 0xc6, 0xc5, 0xce, 0xe2, - 0xc6, 0xc7, 0xcf, 0xe2, 0xc6, 0xc5, 0xce, 0xe2, 0xc7, 0xc7, 0xcf, 0xe2, - 0xc7, 0xc5, 0xce, 0xe2, 0xc7, 0xc7, 0xcf, 0xe2, 0xc8, 0xc5, 0xcf, 0xe2, - 0xc8, 0xc2, 0xcf, 0xe2, 0xc8, 0xc5, 0xcf, 0xe2, 0xc9, 0xc2, 0xcf, 0xe2, - 0xc9, 0xc5, 0xcf, 0xe2, 0xc9, 0xc2, 0xcf, 0xe2, 0xc9, 0xc5, 0xcf, 0xe2, - 0xca, 0xc2, 0xcf, 0xe2, 0xca, 0xc5, 0xcf, 0xe2, 0xca, 0xc2, 0xcf, 0xe2, - 0xcb, 0xc5, 0xcf, 0xe2, 0xcb, 0xc2, 0xcf, 0xe2, 0xcb, 0xc5, 0xcf, 0xe2, - 0xcc, 0xc2, 0xcf, 0xe2, 0xcc, 0xc5, 0xcf, 0xe2, 0xcc, 0xc2, 0xcf, 0xe2, - 0xcc, 0xc5, 0xcf, 0xe2, 0xcd, 0xc2, 0xcf, 0xe2, 0xcd, 0xc2, 0xcf, 0xe2, - 0xcd, 0xc2, 0xcf, 0xe2, 0xce, 0xc2, 0xcf, 0xe2, 0xce, 0xc2, 0xcf, 0xe2, - 0xce, 0xc2, 0xcf, 0xe2, 0xce, 0xc2, 0xcf, 0xe2, 0xcf, 0xc2, 0xcf, 0xe2, - 0xcf, 0xc2, 0xcf, 0xe2, 0xcf, 0xc2, 0xd0, 0xe2, 0xcf, 0xc2, 0xd0, 0xe2, - 0xcf, 0xc2, 0xd0, 0xe2, 0xcf, 0xc2, 0xd0, 0xe2, 0xcf, 0xc2, 0xd1, 0xe2, - 0xcf, 0xc2, 0xd1, 0xe2, 0xcf, 0xc2, 0xd1, 0xe2, 0xcf, 0xc2, 0xd2, 0xe2, - 0xcf, 0xc2, 0xd2, 0xe2, 0xcf, 0xc2, 0xd2, 0xe2, 0xcf, 0xc2, 0xd2, 0xe2, - 0xcf, 0xc2, 0xd3, 0xe2, 0xcf, 0xc2, 0xd3, 0xe2, 0xcf, 0xc2, 0xd3, 0xe2, - 0xcf, 0xc2, 0xd4, 0xe2, 0xcf, 0xc2, 0xd4, 0xe0, 0xcf, 0xc2, 0xd4, 0xe2, - 0xcf, 0xc2, 0xd4, 0xe0, 0xcf, 0xc2, 0xd5, 0xe2, 0xcf, 0xc2, 0xd5, 0xe0, - 0xcf, 0xc2, 0xd5, 0xe2, 0xcf, 0xc2, 0xd6, 0xe0, 0xcf, 0xc2, 0xd6, 0xe2, - 0xcf, 0xc2, 0xd6, 0xe0, 0xcf, 0xc2, 0xd6, 0xe2, 0xcf, 0xc2, 0xd7, 0xe0, - 0xcf, 0xc2, 0xd7, 0xe2, 0xcf, 0xc2, 0xd7, 0xe0, 0xcf, 0xc2, 0xd7, 0xe2, - 0xcf, 0xc2, 0xd8, 0xe0, 0xcf, 0xc2, 0xd8, 0xe2, 0xcf, 0xc2, 0xd8, 0xe0, - 0xcf, 0xc2, 0xd9, 0xe2, 0xcf, 0xc2, 0xd9, 0xe0, 0xcf, 0xc2, 0xd9, 0xe2, - 0xcf, 0xc2, 0xd9, 0xe0, 0xcf, 0xc2, 0xda, 0xdf, 0xd0, 0xc2, 0xda, 0xe0, - 0xcf, 0xc2, 0xda, 0xdf, 0xd0, 0xc2, 0xda, 0xe0, 0xcf, 0xc2, 0xdb, 0xdf, - 0xd0, 0xc2, 0xdb, 0xe0, 0xcf, 0xc2, 0xdb, 0xdf, 0xd0, 0xc2, 0xdb, 0xe0, - 0xcf, 0xc2, 0xdc, 0xe5, 0xe7, 0xc2, 0xdc, 0xe3, 0xe7, 0xc2, 0xdc, 0xe5, - 0xe7, 0xc2, 0xdd, 0xe3, 0xe7, 0xc2, 0xdd, 0xe5, 0xe7, 0xc2, 0xdd, 0xe3, - 0xe7, 0xc2, 0xdd, 0xe5, 0xe7, 0xc2, 0xde, 0xe3, 0xe7, 0xc2, 0xde, 0xe5, - 0xe7, 0xc2, 0xde, 0xe3, 0xe7, 0xc2, 0xde, 0xe5, 0xe7, 0xc2, 0xdf, 0xe3, - 0xe7, 0xc2, 0xdf, 0xe5, 0xe7, 0xc2, 0xdf, 0xe3, 0xe7, 0xc2, 0xdf, 0xe5, - 0xe7, 0xc2, 0xe0, 0xe3, 0xe7, 0xc2, 0xe0, 0xe5, 0xe7, 0xc2, 0xe0, 0xe3, - 0xe7, 0xc2, 0xe1, 0xe5, 0xe7, 0xc2, 0xe1, 0xe3, 0xe7, 0xc2, 0xe1, 0xe5, - 0xe7, 0xc2, 0xe1, 0xe3, 0xe7, 0xc2, 0xe2, 0xe2, 0xe8, 0xc2, 0xe2, 0xe3, - 0xe7, 0xc2, 0xe2, 0xe2, 0xe8, 0xc2, 0xe2, 0xe3, 0xe7, 0xc2, 0xe3, 0xe2, - 0xe8, 0xc2, 0xe3, 0xe3, 0xe7, 0xc2, 0xe3, 0xe2, 0xe8, 0xc2, 0xe3, 0xe3, - 0xe7, 0xc2, 0xe4, 0xe2, 0xe8, 0xc2, 0xe4, 0xe3, 0xe7, 0xc2, 0xe4, 0xe2, - 0xe8, 0xc2, 0xe4, 0xe3, 0xe7, 0xc2, 0xe5, 0xe2, 0xe8, 0xc2, 0xe5, 0xe3, - 0xe7, 0xc2, 0xe5, 0xe2, 0xe8, 0xc2, 0xe5, 0xe3, 0xe7, 0xc2, 0xe6, 0xe2, - 0xe8, 0xc2, 0xe6, 0xe3, 0xe7, 0xc2, 0xe6, 0xe2, 0xe8, 0xc2, 0xe6, 0xe3, - 0xe7, 0xc2, 0xe7, 0xe2, 0xe8, 0xc2, 0xe7, 0xe2, 0xe8, 0xc2, 0xe7, 0xe2, - 0xe8, 0xc2, 0xe7, 0xe2, 0xe8, 0xc2, 0xe7, 0xe2, 0xe8, 0xc2, 0xe7, 0xe2, - 0xe8, 0xc2, 0xe7, 0xe2, 0xe8, 0xc2, 0xe7, 0xe2, 0xe8, 0xc2, 0xe8, 0xe2, - 0xe9, 0xc0, 0xe7, 0xe2, 0xe9, 0xc2, 0xe8, 0xe2, 0xe9, 0xc0, 0xe7, 0xe2, - 0xe9, 0xc2, 0xec, 0xe2, 0xea, 0xc2, 0xeb, 0xe2, 0xea, 0xc2, 0xec, 0xe2, - 0xea, 0xc2, 0xeb, 0xe2, 0xea, 0xc2, 0xec, 0xe2, 0xeb, 0xc2, 0xeb, 0xe2, - 0xeb, 0xc2, 0xec, 0xe2, 0xeb, 0xc2, 0xeb, 0xe2, 0xeb, 0xc2, 0xec, 0xe2, - 0xeb, 0xc2, 0xec, 0xe2, 0xeb, 0xc2, 0xec, 0xe2, 0xeb, 0xc2, 0xec, 0xe1, - 0xeb, 0xc2, 0xec, 0xe2, 0xeb, 0xc2, 0xed, 0xe1, 0xeb, 0xc2, 0xed, 0xe2, - 0xeb, 0xc2, 0xed, 0xe1, 0xeb, 0xc2, 0xed, 0xe2, 0xeb, 0xc2, 0xee, 0xe1, - 0xeb, 0xc2, 0xee, 0xe2, 0xeb, 0xc2, 0xee, 0xe1, 0xeb, 0xc2, 0xee, 0xe2, - 0xeb, 0xc2, 0xef, 0xe1, 0xeb, 0xc2, 0xef, 0xe2, 0xeb, 0xc2, 0xef, 0xe1, - 0xeb, 0xc2, 0xef, 0xe2, 0xeb, 0xc2, 0xf0, 0xe1, 0xeb, 0xc2, 0xf0, 0xe2, - 0xeb, 0xc2, 0xf0, 0xe1, 0xeb, 0xc2, 0xf0, 0xe2, 0xeb, 0xc2, 0xf1, 0xe1, - 0xeb, 0xc2, 0xf1, 0xe2, 0xeb, 0xc2, 0xf1, 0xe1, 0xeb, 0xc2, 0xf1, 0xe2, - 0xeb, 0xc2, 0xf2, 0xe1, 0xeb, 0xc2, 0xf2, 0xe2, 0xeb, 0xc2, 0xf2, 0xe1, - 0xeb, 0xc2, 0xf2, 0xe2, 0xeb, 0xc2, 0xf2, 0xe1, 0xeb, 0xc2, 0xf3, 0xe2, - 0xeb, 0xc2, 0xf3, 0xe1, 0xeb, 0xc2, 0xf3, 0xe2, 0xeb, 0xc2, 0xf3, 0xe1, - 0xeb, 0xc2, 0xf4, 0xe2, 0xeb, 0xc2, 0xf4, 0xe1, 0xeb, 0xc2, 0xf4, 0xdf, - 0xec, 0xc2, 0xf4, 0xe1, 0xeb, 0xc2, 0xf5, 0xdf, 0xec, 0xc2, 0xf5, 0xe1, - 0xeb, 0xc2, 0xf5, 0xdf, 0xec, 0xc2, 0xf5, 0xe1, 0xeb, 0xc2, 0xf5, 0xdf, - 0xec, 0xc2, 0xf6, 0xe1, 0xeb, 0xc2, 0xf6, 0xec, 0xf1, 0xc2, 0xf6, 0xec, - 0xf1, 0xc2, 0xf6, 0xec, 0xf1, 0xc2, 0xf7, 0xec, 0xf1, 0xc2, 0xf7, 0xec, - 0xf1, 0xc2, 0xf7, 0xec, 0xf1, 0xc2, 0xf7, 0xec, 0xf1, 0xc2, 0xf8, 0xec, - 0xf1, 0xc2, 0xf8, 0xec, 0xf1, 0xc2, 0xf8, 0xec, 0xf1, 0xc2, 0xf8, 0xec, - 0xf1, 0xc2, 0xf8, 0xec, 0xf1, 0xc2, 0xf9, 0xec, 0xf1, 0xc2, 0xf9, 0xec, - 0xf1, 0xc2, 0xf9, 0xec, 0xf1, 0xc2, 0xf9, 0xec, 0xf1, 0xc2, 0xfa, 0xec, - 0xf1, 0xc2, 0xfa, 0xec, 0xf1, 0xc2, 0xfa, 0xec, 0xf1, 0xc2, 0xfa, 0xec, - 0xf1, 0xc2, 0xfa, 0xec, 0xf1, 0xc2, 0xfb, 0xec, 0xf1, 0xc2, 0xfb, 0xec, - 0xf1, 0xc2, 0xfb, 0xec, 0xf1, 0xc2, 0xfb, 0xec, 0xf1, 0xc2, 0xfc, 0xec, - 0xf1, 0xc2, 0xfc, 0xec, 0xf1, 0xc2, 0xfc, 0xec, 0xf1, 0xc2, 0xfc, 0xec, - 0xf1, 0xc2, 0xfc, 0xec, 0xf1, 0xc2, 0xfd, 0xec, 0xf1, 0xc2, 0xfd, 0xec, - 0xf1, 0xc2, 0xfd, 0xec, 0xf1, 0xc2, 0xfd, 0xec, 0xf1, 0xc2, 0xfe, 0xec, - 0xf1, 0xc2, 0xfe, 0xec, 0xf1, 0xc2, 0xfe, 0xec, 0xf1, 0xc2, 0xfe, 0xec, - 0xf1, 0xc2, 0xfe, 0xec, 0xf1, 0xc2, 0xff, 0xec, 0xf1, 0xc2, 0xff, 0xec, - 0xf1, 0xc2, 0x03, 0xe6, 0x87, 0xc3, 0x0a, 0xe6, 0x87, 0xc3, 0x0f, 0xe6, - 0x87, 0xc3, 0x14, 0xe8, 0x87, 0xc3, 0x17, 0xe6, 0x87, 0xc3, 0x1b, 0xe8, - 0x87, 0xc3, 0x1e, 0xe6, 0x87, 0xc3, 0x20, 0xe8, 0x87, 0xc3, 0x23, 0xe6, - 0x87, 0xc3, 0x25, 0xe8, 0x87, 0xc3, 0x27, 0xe6, 0x87, 0xc3, 0x29, 0xe8, - 0x87, 0xc3, 0x2b, 0xe6, 0x87, 0xc3, 0x2d, 0xe8, 0x87, 0xc3, 0x2f, 0xe6, - 0x87, 0xc3, 0x31, 0xe8, 0x87, 0xc3, 0x32, 0xe6, 0x87, 0xc3, 0x34, 0xe8, - 0x87, 0xc3, 0x35, 0xe6, 0x87, 0xc3, 0x37, 0xe8, 0x87, 0xc3, 0x38, 0xe6, - 0x87, 0xc3, 0x3a, 0xe8, 0x87, 0xc3, 0x3b, 0xe6, 0x87, 0xc3, 0x3c, 0xe8, - 0x87, 0xc3, 0x3e, 0xe6, 0x87, 0xc3, 0x3f, 0xe8, 0x87, 0xc3, 0x40, 0xe6, - 0x87, 0xc3, 0x42, 0xe8, 0x87, 0xc3, 0x43, 0xe6, 0x87, 0xc3, 0x44, 0xe8, - 0x87, 0xc3, 0x45, 0xe6, 0x87, 0xc3, 0x46, 0xe8, 0x87, 0xc3, 0x47, 0xe6, - 0x87, 0xc3, 0x48, 0xe4, 0x88, 0xc3, 0x49, 0xe6, 0x87, 0xc3, 0x4a, 0xe4, - 0x88, 0xc3, 0x4b, 0xe6, 0x87, 0xc3, 0x4c, 0xe4, 0x88, 0xc3, 0x4d, 0xe6, - 0x87, 0xc3, 0x4e, 0xe4, 0x88, 0xc3, 0x4f, 0xe6, 0x87, 0xc3, 0x50, 0xe4, - 0x88, 0xc3, 0x51, 0xe6, 0x87, 0xc3, 0x52, 0xe4, 0x88, 0xc3, 0x53, 0xe6, - 0x87, 0xc3, 0x54, 0xe4, 0x88, 0xc3, 0x55, 0xe6, 0x87, 0xc3, 0x56, 0xe4, - 0x88, 0xc3, 0x57, 0xe6, 0x87, 0xc3, 0x58, 0xe4, 0x88, 0xc3, 0x58, 0xe6, - 0x87, 0xc3, 0x59, 0xe4, 0x88, 0xc3, 0x5a, 0xe6, 0x87, 0xc3, 0x5b, 0xe4, - 0x88, 0xc3, 0x5c, 0xe6, 0x87, 0xc3, 0x5d, 0xe4, 0x88, 0xc3, 0x5d, 0xe6, - 0x87, 0xc3, 0x5e, 0xe4, 0x88, 0xc3, 0x5f, 0xe6, 0x87, 0xc3, 0x60, 0xe4, - 0x88, 0xc3, 0x60, 0xe6, 0x87, 0xc3, 0x61, 0xe4, 0x88, 0xc3, 0x62, 0xe6, - 0x87, 0xc3, 0x63, 0xe4, 0x88, 0xc3, 0x63, 0xe6, 0x87, 0xc3, 0x64, 0xe4, - 0x88, 0xc3, 0x65, 0xe6, 0x87, 0xc3, 0x66, 0xe4, 0x88, 0xc3, 0x66, 0xe6, - 0x87, 0xc3, 0x67, 0xe4, 0x88, 0xc3, 0x68, 0xe6, 0x87, 0xc3, 0x68, 0xe4, - 0x88, 0xc3, 0x69, 0xe6, 0x87, 0xc3, 0x6a, 0xe4, 0x88, 0xc3, 0x6a, 0xe6, - 0x87, 0xc3, 0x6b, 0xe4, 0x88, 0xc3, 0x6c, 0xe6, 0x87, 0xc3, 0x6c, 0xe4, - 0x88, 0xc3, 0x6d, 0xe6, 0x87, 0xc3, 0x6e, 0xe4, 0x88, 0xc3, 0x6e, 0xe6, - 0x87, 0xc3, 0x6f, 0xe4, 0x88, 0xc3, 0x70, 0xe6, 0x87, 0xc3, 0x70, 0xe4, - 0x88, 0xc3, 0x71, 0xe6, 0x87, 0xc3, 0x72, 0xe4, 0x88, 0xc3, 0x72, 0xe6, - 0x87, 0xc3, 0x73, 0xe4, 0x88, 0xc3, 0x73, 0xe6, 0x87, 0xc3, 0x74, 0xe4, - 0x88, 0xc3, 0x75, 0xe3, 0x88, 0xc3, 0x75, 0xe4, 0x88, 0xc3, 0x76, 0xe3, - 0x88, 0xc3, 0x76, 0xe4, 0x88, 0xc3, 0x77, 0xe3, 0x88, 0xc3, 0x78, 0xe4, - 0x88, 0xc3, 0x78, 0xe3, 0x88, 0xc3, 0x79, 0xe4, 0x88, 0xc3, 0x79, 0xe3, - 0x88, 0xc3, 0x7a, 0xe4, 0x88, 0xc3, 0x7a, 0xe3, 0x88, 0xc3, 0x7b, 0xe4, - 0x88, 0xc3, 0x7c, 0xe3, 0x88, 0xc3, 0x7c, 0xe4, 0x88, 0xc3, 0x7d, 0xe3, - 0x88, 0xc3, 0x7d, 0xe4, 0x88, 0xc3, 0x7e, 0xe3, 0x88, 0xc3, 0x7e, 0xe4, - 0x88, 0xc3, 0x7f, 0xe3, 0x88, 0xc3, 0x7f, 0xe4, 0x88, 0xc3, 0x80, 0xe3, - 0x88, 0xc3, 0x81, 0xe4, 0x88, 0xc3, 0x81, 0xe3, 0x88, 0xc3, 0x82, 0xe4, - 0x88, 0xc3, 0x82, 0xe3, 0x88, 0xc3, 0x83, 0xe4, 0x88, 0xc3, 0x83, 0xe3, - 0x88, 0xc3, 0x84, 0xe3, 0x89, 0xc3, 0x84, 0xe3, 0x88, 0xc3, 0x85, 0xe3, - 0x89, 0xc3, 0x85, 0xe3, 0x88, 0xc3, 0x86, 0xe3, 0x89, 0xc3, 0x86, 0xe3, - 0x88, 0xc3, 0x87, 0xe3, 0x89, 0xc3, 0x87, 0xe3, 0x88, 0xc3, 0x88, 0xe3, - 0x89, 0xc3, 0x88, 0xe3, 0x88, 0xc2, 0x88, 0xe3, 0x89, 0xc3, 0x88, 0xe3, - 0x89, 0xc2, 0x88, 0xe3, 0x8a, 0xc3, 0x88, 0xe3, 0x8a, 0xc2, 0x88, 0xe3, - 0x8b, 0xc3, 0x88, 0xe3, 0x8b, 0xc2, 0x88, 0xe3, 0x8c, 0xc3, 0x88, 0xe3, - 0x8c, 0xc2, 0x88, 0xe3, 0x8d, 0xc3, 0x88, 0xe3, 0x8d, 0xc2, 0x88, 0xe3, - 0x8e, 0xc3, 0x88, 0xe3, 0x8e, 0xc2, 0x88, 0xe3, 0x8e, 0xc3, 0x88, 0xe3, - 0x8f, 0xc2, 0x88, 0xe3, 0x8f, 0xc3, 0x88, 0xe3, 0x90, 0xc2, 0x88, 0xe3, - 0x90, 0xc3, 0x88, 0xe3, 0x91, 0xc2, 0x88, 0xe3, 0x91, 0xc3, 0x88, 0xe3, - 0x92, 0xc2, 0x88, 0xe3, 0x92, 0xc3, 0x88, 0xe3, 0x93, 0xc2, 0x88, 0xe3, - 0x93, 0xc3, 0x88, 0xe3, 0x94, 0xc2, 0x89, 0xe3, 0x94, 0xbe, 0x88, 0xe3, - 0x94, 0xc2, 0x89, 0xe3, 0x95, 0xbe, 0x88, 0xe3, 0x95, 0xc2, 0x89, 0xe3, - 0x96, 0xbe, 0x88, 0xe3, 0x96, 0xc2, 0x89, 0xe3, 0x97, 0xbe, 0x88, 0xe3, - 0x97, 0xc2, 0x89, 0xe3, 0x98, 0xbe, 0x88, 0xe3, 0x98, 0xc2, 0x89, 0xe3, - 0x98, 0xbe, 0x88, 0xe3, 0x99, 0xc2, 0x89, 0xe3, 0x99, 0xbe, 0x88, 0xe3, - 0x9a, 0xc2, 0x89, 0xe3, 0x9a, 0xbe, 0x88, 0xe3, 0x9a, 0xc2, 0x89, 0xe3, - 0x9b, 0xbe, 0x88, 0xe3, 0x9b, 0xc2, 0x89, 0xe3, 0x9c, 0xbe, 0x88, 0xe3, - 0x9c, 0xc2, 0x89, 0xe3, 0x9d, 0xbe, 0x88, 0xe3, 0x9d, 0xc2, 0x89, 0xe3, - 0x9d, 0xbe, 0x88, 0xe3, 0x9e, 0xc2, 0x89, 0xe3, 0x9e, 0xbe, 0x88, 0xe3, - 0x9f, 0xc2, 0x89, 0xe3, 0x9f, 0xbe, 0x88, 0xe3, 0x9f, 0xc2, 0x89, 0xe3, - 0xa0, 0xbe, 0x88, 0xe3, 0xa0, 0xc2, 0x89, 0xe3, 0xa1, 0xbe, 0x88, 0xe3, - 0xa1, 0xc2, 0x89, 0xe3, 0xa1, 0xbe, 0x88, 0xe3, 0xa2, 0xc2, 0x89, 0xe3, - 0xa2, 0xbe, 0x88, 0xe3, 0xa3, 0xc2, 0x89, 0xe3, 0xa3, 0xbe, 0x88, 0xe3, - 0xa3, 0xc2, 0x89, 0xe3, 0xa4, 0xbe, 0x88, 0xe3, 0xa4, 0xc2, 0x89, 0xe3, - 0xa5, 0xbe, 0x89, 0xe3, 0xa5, 0xbb, 0x89, 0xe3, 0xa5, 0xbe, 0x89, 0xe3, - 0xa6, 0xbb, 0x89, 0xe3, 0xa6, 0xbe, 0x89, 0xe3, 0xa6, 0xbb, 0x89, 0xe3, - 0xa7, 0xbe, 0x89, 0xe3, 0xa7, 0xbb, 0x89, 0xe3, 0xa8, 0xbe, 0x89, 0xe3, - 0xa8, 0xbb, 0x89, 0xe3, 0xa8, 0xbe, 0x89, 0xe3, 0xa9, 0xbb, 0x89, 0xe3, - 0xa9, 0xbe, 0x89, 0xe3, 0xaa, 0xbb, 0x89, 0xe3, 0xaa, 0xbe, 0x89, 0xe3, - 0xaa, 0xbb, 0x89, 0xe3, 0xab, 0xbe, 0x89, 0xe3, 0xab, 0xbb, 0x89, 0xe3, - 0xab, 0xbe, 0x89, 0xe3, 0xac, 0xbb, 0x89, 0xe3, 0xac, 0xbe, 0x89, 0xe3, - 0xac, 0xbb, 0x89, 0xe3, 0xad, 0xbe, 0x89, 0xe3, 0xad, 0xbb, 0x89, 0xe3, - 0xae, 0xbe, 0x89, 0xe3, 0xae, 0xbb, 0xa8, 0xe3, 0xae, 0xef, 0xa8, 0xe3, - 0xaf, 0xef, 0xa8, 0xe3, 0xaf, 0xef, 0xa8, 0xe3, 0xaf, 0xef, 0xa8, 0xe3, - 0xb0, 0xef, 0xac, 0xe3, 0xb0, 0xf0, 0xa8, 0xe3, 0xb0, 0xef, 0xac, 0xe3, - 0xb1, 0xf0, 0xac, 0xe3, 0xb1, 0xf0, 0xac, 0xe3, 0xb2, 0xf0, 0xce, 0xe3, - 0xb2, 0xcd, 0xce, 0xe3, 0xb2, 0xcb, 0xce, 0xe3, 0xb3, 0xcd, 0xce, 0xe3, - 0xb3, 0xcb, 0xce, 0xe3, 0xb3, 0xcd, 0xce, 0xe3, 0xb4, 0xcb, 0xce, 0xe3, - 0xb4, 0xcd, 0xce, 0xe3, 0xb4, 0xcb, 0xce, 0xe3, 0xb5, 0xcd, 0xce, 0xe3, - 0xb5, 0xcb, 0xce, 0xe3, 0xb5, 0xcd, 0xce, 0xe3, 0xb6, 0xcb, 0xce, 0xe3, - 0xb6, 0xcd, 0xce, 0xe3, 0xb6, 0xcb, 0xce, 0xe3, 0xb7, 0xc8, 0xce, 0xe3, - 0xb7, 0xcb, 0xce, 0xe3, 0xb7, 0xc8, 0xce, 0xe3, 0xb8, 0xcb, 0xce, 0xe3, - 0xb8, 0xc8, 0xce, 0xe3, 0xb8, 0xcb, 0xce, 0xe3, 0xb9, 0xc8, 0xce, 0xe3, - 0xb9, 0xcb, 0xce, 0xe3, 0xb9, 0xc8, 0xce, 0xe3, 0xba, 0xcb, 0xce, 0xe3, - 0xba, 0xc8, 0xce, 0xe3, 0xba, 0xcb, 0xce, 0xe3, 0xbb, 0xc8, 0xce, 0xe3, - 0xbb, 0xcb, 0xce, 0xe3, 0xbb, 0xc8, 0xce, 0xe3, 0xbc, 0xcb, 0xce, 0xe3, - 0xbc, 0xc8, 0xcf, 0xe3, 0xbc, 0xc5, 0xce, 0xe3, 0xbd, 0xc8, 0xcf, 0xe3, - 0xbd, 0xc5, 0xce, 0xe3, 0xbd, 0xc8, 0xcf, 0xe3, 0xbe, 0xc5, 0xce, 0xe3, - 0xbe, 0xc8, 0xcf, 0xe3, 0xbe, 0xc5, 0xce, 0xe3, 0xbf, 0xc8, 0xcf, 0xe3, - 0xbf, 0xc5, 0xce, 0xe3, 0xbf, 0xc8, 0xcf, 0xe3, 0xc0, 0xc5, 0xce, 0xe3, - 0xc0, 0xc8, 0xcf, 0xe3, 0xc0, 0xc5, 0xce, 0xe3, 0xc1, 0xc8, 0xcf, 0xe3, - 0xc1, 0xc5, 0xce, 0xe3, 0xc1, 0xc8, 0xcf, 0xe3, 0xc1, 0xc5, 0xce, 0xe3, - 0xc2, 0xc8, 0xcf, 0xe3, 0xc2, 0xc5, 0xce, 0xe3, 0xc2, 0xc8, 0xcf, 0xe3, - 0xc3, 0xc5, 0xce, 0xe3, 0xc3, 0xc8, 0xcf, 0xe3, 0xc3, 0xc5, 0xce, 0xe3, - 0xc4, 0xc8, 0xcf, 0xe3, 0xc4, 0xc5, 0xce, 0xe3, 0xc4, 0xc8, 0xcf, 0xe3, - 0xc5, 0xc5, 0xce, 0xe3, 0xc5, 0xc8, 0xcf, 0xe3, 0xc5, 0xc5, 0xce, 0xe3, - 0xc6, 0xc8, 0xcf, 0xe3, 0xc6, 0xc5, 0xce, 0xe3, 0xc6, 0xc8, 0xcf, 0xe3, - 0xc6, 0xc5, 0xce, 0xe3, 0xc7, 0xc8, 0xcf, 0xe3, 0xc7, 0xc5, 0xce, 0xe3, - 0xc7, 0xc8, 0xcf, 0xe3, 0xc8, 0xc5, 0xcf, 0xe3, 0xc8, 0xc3, 0xcf, 0xe3, - 0xc8, 0xc5, 0xcf, 0xe3, 0xc9, 0xc3, 0xcf, 0xe3, 0xc9, 0xc5, 0xcf, 0xe3, - 0xc9, 0xc3, 0xcf, 0xe3, 0xc9, 0xc5, 0xcf, 0xe3, 0xca, 0xc3, 0xcf, 0xe3, - 0xca, 0xc5, 0xcf, 0xe3, 0xca, 0xc3, 0xcf, 0xe3, 0xcb, 0xc5, 0xcf, 0xe3, - 0xcb, 0xc3, 0xcf, 0xe3, 0xcb, 0xc5, 0xcf, 0xe3, 0xcc, 0xc3, 0xcf, 0xe3, - 0xcc, 0xc5, 0xcf, 0xe3, 0xcc, 0xc3, 0xcf, 0xe3, 0xcc, 0xc5, 0xcf, 0xe3, - 0xcd, 0xc3, 0xcf, 0xe3, 0xcd, 0xc5, 0xcf, 0xe3, 0xcd, 0xc3, 0xcf, 0xe3, - 0xce, 0xc5, 0xcf, 0xe3, 0xce, 0xc3, 0xcf, 0xe3, 0xce, 0xc3, 0xcf, 0xe3, - 0xce, 0xc3, 0xcf, 0xe3, 0xcf, 0xc3, 0xcf, 0xe2, 0xcf, 0xc3, 0xcf, 0xe3, - 0xcf, 0xc3, 0xd0, 0xe2, 0xcf, 0xc3, 0xd0, 0xe3, 0xcf, 0xc3, 0xd0, 0xe2, - 0xcf, 0xc3, 0xd0, 0xe3, 0xcf, 0xc3, 0xd1, 0xe2, 0xcf, 0xc3, 0xd1, 0xe3, - 0xcf, 0xc3, 0xd1, 0xe2, 0xcf, 0xc3, 0xd2, 0xe3, 0xcf, 0xc3, 0xd2, 0xe2, - 0xcf, 0xc3, 0xd2, 0xe3, 0xcf, 0xc3, 0xd2, 0xe2, 0xcf, 0xc3, 0xd3, 0xe3, - 0xcf, 0xc3, 0xd3, 0xe2, 0xcf, 0xc3, 0xd3, 0xe3, 0xcf, 0xc3, 0xd4, 0xe2, - 0xcf, 0xc3, 0xd4, 0xe1, 0xcf, 0xc3, 0xd4, 0xe2, 0xcf, 0xc3, 0xd4, 0xe1, - 0xcf, 0xc3, 0xd5, 0xe2, 0xcf, 0xc3, 0xd5, 0xe1, 0xcf, 0xc3, 0xd5, 0xe2, - 0xcf, 0xc3, 0xd6, 0xe1, 0xcf, 0xc3, 0xd6, 0xe2, 0xcf, 0xc3, 0xd6, 0xe1, - 0xcf, 0xc3, 0xd6, 0xe2, 0xcf, 0xc3, 0xd7, 0xe1, 0xcf, 0xc3, 0xd7, 0xe2, - 0xcf, 0xc3, 0xd7, 0xe1, 0xcf, 0xc3, 0xd7, 0xe2, 0xcf, 0xc3, 0xd8, 0xe1, - 0xcf, 0xc3, 0xd8, 0xe2, 0xcf, 0xc3, 0xd8, 0xe1, 0xcf, 0xc3, 0xd9, 0xe2, - 0xcf, 0xc3, 0xd9, 0xe1, 0xcf, 0xc3, 0xd9, 0xe2, 0xcf, 0xc3, 0xd9, 0xe1, - 0xcf, 0xc3, 0xda, 0xe2, 0xcf, 0xc3, 0xda, 0xe1, 0xcf, 0xc3, 0xda, 0xe2, - 0xcf, 0xc3, 0xda, 0xe1, 0xcf, 0xc3, 0xdb, 0xe2, 0xcf, 0xc3, 0xdb, 0xe1, - 0xcf, 0xc3, 0xdb, 0xe2, 0xcf, 0xc3, 0xdb, 0xe1, 0xcf, 0xc3, 0xdc, 0xe5, - 0xe7, 0xc3, 0xdc, 0xe3, 0xe7, 0xc3, 0xdc, 0xe5, 0xe7, 0xc3, 0xdd, 0xe3, - 0xe7, 0xc3, 0xdd, 0xe5, 0xe7, 0xc3, 0xdd, 0xe3, 0xe7, 0xc3, 0xdd, 0xe5, - 0xe7, 0xc3, 0xde, 0xe3, 0xe7, 0xc3, 0xde, 0xe5, 0xe7, 0xc3, 0xde, 0xe3, - 0xe7, 0xc3, 0xde, 0xe5, 0xe7, 0xc3, 0xdf, 0xe3, 0xe7, 0xc3, 0xdf, 0xe5, - 0xe7, 0xc3, 0xdf, 0xe3, 0xe7, 0xc3, 0xdf, 0xe5, 0xe7, 0xc3, 0xe0, 0xe3, - 0xe7, 0xc3, 0xe0, 0xe5, 0xe7, 0xc3, 0xe0, 0xe3, 0xe7, 0xc3, 0xe1, 0xe5, - 0xe7, 0xc3, 0xe1, 0xe3, 0xe7, 0xc3, 0xe1, 0xe5, 0xe7, 0xc3, 0xe1, 0xe3, - 0xe7, 0xc3, 0xe2, 0xe5, 0xe7, 0xc3, 0xe2, 0xe3, 0xe7, 0xc3, 0xe2, 0xe5, - 0xe7, 0xc3, 0xe2, 0xe3, 0xe7, 0xc3, 0xe3, 0xe5, 0xe7, 0xc3, 0xe3, 0xe3, - 0xe7, 0xc3, 0xe3, 0xe5, 0xe7, 0xc3, 0xe3, 0xe3, 0xe7, 0xc3, 0xe4, 0xe3, - 0xe8, 0xc3, 0xe4, 0xe3, 0xe7, 0xc3, 0xe4, 0xe3, 0xe8, 0xc3, 0xe4, 0xe3, - 0xe7, 0xc3, 0xe5, 0xe3, 0xe8, 0xc3, 0xe5, 0xe3, 0xe7, 0xc3, 0xe5, 0xe3, - 0xe8, 0xc3, 0xe5, 0xe3, 0xe7, 0xc3, 0xe6, 0xe3, 0xe8, 0xc3, 0xe6, 0xe3, - 0xe7, 0xc3, 0xe6, 0xe3, 0xe8, 0xc3, 0xe6, 0xe3, 0xe7, 0xc3, 0xe7, 0xe3, - 0xe8, 0xc3, 0xe7, 0xe3, 0xe7, 0xc3, 0xe7, 0xe3, 0xe8, 0xc3, 0xe7, 0xe3, - 0xe7, 0xc3, 0xe7, 0xe3, 0xe8, 0xc3, 0xe7, 0xe3, 0xe8, 0xc3, 0xe7, 0xe3, - 0xe8, 0xc3, 0xe7, 0xe3, 0xe8, 0xc3, 0xe8, 0xe3, 0xe9, 0xc1, 0xe7, 0xe3, - 0xe9, 0xc3, 0xe8, 0xe3, 0xe9, 0xc1, 0xe7, 0xe3, 0xe9, 0xc3, 0xeb, 0xe3, - 0xea, 0xc5, 0xeb, 0xe3, 0xea, 0xc3, 0xeb, 0xe3, 0xea, 0xc5, 0xeb, 0xe3, - 0xea, 0xc3, 0xec, 0xe3, 0xeb, 0xc3, 0xeb, 0xe3, 0xeb, 0xc3, 0xec, 0xe3, - 0xeb, 0xc3, 0xeb, 0xe3, 0xeb, 0xc3, 0xec, 0xe3, 0xeb, 0xc3, 0xec, 0xe3, - 0xeb, 0xc3, 0xec, 0xe3, 0xeb, 0xc3, 0xec, 0xe3, 0xeb, 0xc3, 0xec, 0xe3, - 0xeb, 0xc3, 0xed, 0xe3, 0xeb, 0xc3, 0xed, 0xe3, 0xeb, 0xc3, 0xed, 0xe1, - 0xeb, 0xc3, 0xed, 0xe3, 0xeb, 0xc3, 0xee, 0xe1, 0xeb, 0xc3, 0xee, 0xe3, - 0xeb, 0xc3, 0xee, 0xe1, 0xeb, 0xc3, 0xee, 0xe3, 0xeb, 0xc3, 0xef, 0xe1, - 0xeb, 0xc3, 0xef, 0xe3, 0xeb, 0xc3, 0xef, 0xe1, 0xeb, 0xc3, 0xef, 0xe3, - 0xeb, 0xc3, 0xf0, 0xe1, 0xeb, 0xc3, 0xf0, 0xe3, 0xeb, 0xc3, 0xf0, 0xe1, - 0xeb, 0xc3, 0xf0, 0xe3, 0xeb, 0xc3, 0xf1, 0xe1, 0xeb, 0xc3, 0xf1, 0xe3, - 0xeb, 0xc3, 0xf1, 0xe1, 0xeb, 0xc3, 0xf1, 0xe3, 0xeb, 0xc3, 0xf2, 0xe1, - 0xeb, 0xc3, 0xf2, 0xe3, 0xeb, 0xc3, 0xf2, 0xe1, 0xeb, 0xc3, 0xf2, 0xe3, - 0xeb, 0xc3, 0xf2, 0xe1, 0xeb, 0xc3, 0xf3, 0xe3, 0xeb, 0xc3, 0xf3, 0xe1, - 0xeb, 0xc3, 0xf3, 0xe3, 0xeb, 0xc3, 0xf3, 0xe1, 0xeb, 0xc3, 0xf4, 0xe3, - 0xeb, 0xc3, 0xf4, 0xe1, 0xeb, 0xc3, 0xf4, 0xdf, 0xec, 0xc3, 0xf4, 0xe1, - 0xeb, 0xc3, 0xf5, 0xdf, 0xec, 0xc3, 0xf5, 0xe1, 0xeb, 0xc3, 0xf5, 0xec, - 0xf1, 0xc3, 0xf5, 0xec, 0xf1, 0xc3, 0xf5, 0xec, 0xf1, 0xc3, 0xf6, 0xec, - 0xf1, 0xc3, 0xf6, 0xec, 0xf1, 0xc3, 0xf6, 0xec, 0xf1, 0xc3, 0xf6, 0xec, - 0xf1, 0xc3, 0xf7, 0xec, 0xf1, 0xc3, 0xf7, 0xec, 0xf1, 0xc3, 0xf7, 0xec, - 0xf1, 0xc3, 0xf7, 0xec, 0xf1, 0xc3, 0xf8, 0xec, 0xf1, 0xc3, 0xf8, 0xec, - 0xf1, 0xc3, 0xf8, 0xec, 0xf1, 0xc3, 0xf8, 0xec, 0xf1, 0xc3, 0xf8, 0xec, - 0xf1, 0xc3, 0xf9, 0xec, 0xf1, 0xc3, 0xf9, 0xec, 0xf1, 0xc3, 0xf9, 0xec, - 0xf1, 0xc3, 0xf9, 0xec, 0xf1, 0xc3, 0xfa, 0xec, 0xf1, 0xc3, 0xfa, 0xec, - 0xf1, 0xc3, 0xfa, 0xec, 0xf1, 0xc3, 0xfa, 0xec, 0xf1, 0xc3, 0xfa, 0xec, - 0xf1, 0xc3, 0xfb, 0xec, 0xf1, 0xc3, 0xfb, 0xec, 0xf1, 0xc3, 0xfb, 0xec, - 0xf1, 0xc3, 0xfb, 0xec, 0xf1, 0xc3, 0xfc, 0xec, 0xf1, 0xc3, 0xfc, 0xec, - 0xf1, 0xc3, 0xfc, 0xec, 0xf1, 0xc3, 0xfc, 0xec, 0xf1, 0xc3, 0xfc, 0xec, - 0xf1, 0xc3, 0xfd, 0xec, 0xf1, 0xc3, 0xfd, 0xec, 0xf1, 0xc3, 0xfd, 0xec, - 0xf1, 0xc3, 0xfd, 0xec, 0xf1, 0xc3, 0xfe, 0xec, 0xf1, 0xc3, 0xfe, 0xec, - 0xf1, 0xc3, 0xfe, 0xec, 0xf1, 0xc3, 0xfe, 0xec, 0xf1, 0xc3, 0xfe, 0xec, - 0xf1, 0xc3, 0xff, 0xec, 0xf1, 0xc3, 0xff, 0xec, 0xf1, 0xc3, 0x03, 0xe9, - 0x86, 0xc3, 0x0a, 0xe7, 0x87, 0xc3, 0x0f, 0xe9, 0x86, 0xc3, 0x14, 0xe7, - 0x87, 0xc3, 0x17, 0xe9, 0x86, 0xc3, 0x1b, 0xe7, 0x87, 0xc3, 0x1e, 0xe9, - 0x86, 0xc3, 0x20, 0xe7, 0x87, 0xc3, 0x23, 0xe9, 0x86, 0xc3, 0x25, 0xe7, - 0x87, 0xc3, 0x27, 0xe9, 0x86, 0xc3, 0x29, 0xe7, 0x87, 0xc3, 0x2b, 0xe9, - 0x86, 0xc3, 0x2d, 0xe7, 0x87, 0xc3, 0x2f, 0xe9, 0x86, 0xc3, 0x31, 0xe7, - 0x87, 0xc3, 0x32, 0xe6, 0x87, 0xc3, 0x34, 0xe7, 0x87, 0xc3, 0x35, 0xe6, - 0x87, 0xc3, 0x37, 0xe7, 0x87, 0xc3, 0x38, 0xe6, 0x87, 0xc3, 0x3a, 0xe7, - 0x87, 0xc3, 0x3b, 0xe6, 0x87, 0xc3, 0x3c, 0xe7, 0x87, 0xc3, 0x3e, 0xe6, - 0x87, 0xc3, 0x3f, 0xe7, 0x87, 0xc3, 0x40, 0xe6, 0x87, 0xc3, 0x42, 0xe7, - 0x87, 0xc3, 0x43, 0xe6, 0x87, 0xc3, 0x44, 0xe7, 0x87, 0xc3, 0x45, 0xe6, - 0x87, 0xc3, 0x46, 0xe7, 0x87, 0xc3, 0x47, 0xe6, 0x87, 0xc3, 0x48, 0xe7, - 0x87, 0xc3, 0x49, 0xe6, 0x87, 0xc3, 0x4a, 0xe7, 0x87, 0xc3, 0x4b, 0xe6, - 0x87, 0xc3, 0x4c, 0xe7, 0x87, 0xc3, 0x4d, 0xe6, 0x87, 0xc3, 0x4e, 0xe7, - 0x87, 0xc3, 0x4f, 0xe6, 0x87, 0xc3, 0x50, 0xe7, 0x87, 0xc3, 0x51, 0xe6, - 0x87, 0xc3, 0x52, 0xe7, 0x87, 0xc3, 0x53, 0xe6, 0x87, 0xc3, 0x54, 0xe7, - 0x87, 0xc3, 0x55, 0xe6, 0x87, 0xc3, 0x56, 0xe7, 0x87, 0xc3, 0x57, 0xe6, - 0x87, 0xc3, 0x58, 0xe4, 0x88, 0xc3, 0x58, 0xe6, 0x87, 0xc3, 0x59, 0xe4, - 0x88, 0xc3, 0x5a, 0xe6, 0x87, 0xc3, 0x5b, 0xe4, 0x88, 0xc3, 0x5c, 0xe6, - 0x87, 0xc3, 0x5d, 0xe4, 0x88, 0xc3, 0x5d, 0xe6, 0x87, 0xc3, 0x5e, 0xe4, - 0x88, 0xc3, 0x5f, 0xe6, 0x87, 0xc3, 0x60, 0xe4, 0x88, 0xc3, 0x60, 0xe6, - 0x87, 0xc3, 0x61, 0xe4, 0x88, 0xc3, 0x62, 0xe6, 0x87, 0xc3, 0x63, 0xe4, - 0x88, 0xc3, 0x63, 0xe6, 0x87, 0xc3, 0x64, 0xe4, 0x88, 0xc3, 0x65, 0xe6, - 0x87, 0xc3, 0x66, 0xe4, 0x88, 0xc3, 0x66, 0xe6, 0x87, 0xc3, 0x67, 0xe4, - 0x88, 0xc3, 0x68, 0xe6, 0x87, 0xc3, 0x68, 0xe4, 0x88, 0xc3, 0x69, 0xe6, - 0x87, 0xc3, 0x6a, 0xe4, 0x88, 0xc3, 0x6a, 0xe6, 0x87, 0xc3, 0x6b, 0xe4, - 0x88, 0xc3, 0x6c, 0xe6, 0x87, 0xc3, 0x6c, 0xe4, 0x88, 0xc3, 0x6d, 0xe6, - 0x87, 0xc3, 0x6e, 0xe4, 0x88, 0xc3, 0x6e, 0xe6, 0x87, 0xc3, 0x6f, 0xe4, - 0x88, 0xc3, 0x70, 0xe6, 0x87, 0xc3, 0x70, 0xe4, 0x88, 0xc3, 0x71, 0xe6, - 0x87, 0xc3, 0x72, 0xe4, 0x88, 0xc3, 0x72, 0xe6, 0x87, 0xc3, 0x73, 0xe4, - 0x88, 0xc3, 0x73, 0xe6, 0x87, 0xc3, 0x74, 0xe4, 0x88, 0xc3, 0x75, 0xe3, - 0x88, 0xc3, 0x75, 0xe4, 0x88, 0xc3, 0x76, 0xe3, 0x88, 0xc3, 0x76, 0xe4, - 0x88, 0xc3, 0x77, 0xe3, 0x88, 0xc3, 0x78, 0xe4, 0x88, 0xc3, 0x78, 0xe3, - 0x88, 0xc3, 0x79, 0xe4, 0x88, 0xc3, 0x79, 0xe3, 0x88, 0xc3, 0x7a, 0xe4, - 0x88, 0xc3, 0x7a, 0xe3, 0x88, 0xc3, 0x7b, 0xe4, 0x88, 0xc3, 0x7c, 0xe3, - 0x88, 0xc3, 0x7c, 0xe4, 0x88, 0xc3, 0x7d, 0xe3, 0x88, 0xc3, 0x7d, 0xe4, - 0x88, 0xc3, 0x7e, 0xe3, 0x88, 0xc3, 0x7e, 0xe4, 0x88, 0xc3, 0x7f, 0xe3, - 0x88, 0xc3, 0x7f, 0xe4, 0x88, 0xc3, 0x80, 0xe3, 0x88, 0xc3, 0x81, 0xe4, - 0x88, 0xc3, 0x81, 0xe3, 0x88, 0xc3, 0x82, 0xe4, 0x88, 0xc3, 0x82, 0xe3, - 0x88, 0xc3, 0x83, 0xe4, 0x88, 0xc3, 0x83, 0xe3, 0x88, 0xc3, 0x84, 0xe4, - 0x88, 0xc3, 0x84, 0xe3, 0x88, 0xc3, 0x85, 0xe4, 0x88, 0xc3, 0x85, 0xe3, - 0x88, 0xc3, 0x86, 0xe4, 0x88, 0xc3, 0x86, 0xe3, 0x88, 0xc3, 0x87, 0xe3, - 0x89, 0xc3, 0x87, 0xe3, 0x88, 0xc3, 0x88, 0xe3, 0x89, 0xc3, 0x87, 0xe3, - 0x88, 0xc3, 0x88, 0xe3, 0x89, 0xc3, 0x87, 0xe3, 0x89, 0xc3, 0x88, 0xe3, - 0x8a, 0xc3, 0x88, 0xe3, 0x8a, 0xc1, 0x88, 0xe3, 0x8b, 0xc3, 0x88, 0xe3, - 0x8b, 0xc1, 0x88, 0xe3, 0x8c, 0xc3, 0x88, 0xe3, 0x8c, 0xc1, 0x88, 0xe3, - 0x8d, 0xc3, 0x88, 0xe3, 0x8d, 0xc1, 0x88, 0xe3, 0x8e, 0xc3, 0x88, 0xe3, - 0x8e, 0xc1, 0x88, 0xe3, 0x8e, 0xc3, 0x88, 0xe3, 0x8f, 0xc1, 0x88, 0xe3, - 0x8f, 0xc3, 0x88, 0xe3, 0x90, 0xc1, 0x88, 0xe3, 0x90, 0xc3, 0x88, 0xe3, - 0x91, 0xc1, 0x88, 0xe3, 0x91, 0xc3, 0x88, 0xe3, 0x92, 0xc1, 0x88, 0xe3, - 0x92, 0xc3, 0x88, 0xe3, 0x93, 0xc1, 0x88, 0xe3, 0x93, 0xc3, 0x88, 0xe3, - 0x94, 0xc1, 0x89, 0xe3, 0x94, 0xbf, 0x88, 0xe3, 0x94, 0xc1, 0x89, 0xe3, - 0x95, 0xbf, 0x88, 0xe3, 0x95, 0xc1, 0x89, 0xe3, 0x96, 0xbf, 0x88, 0xe3, - 0x96, 0xc1, 0x89, 0xe3, 0x97, 0xbf, 0x88, 0xe3, 0x97, 0xc1, 0x89, 0xe3, - 0x98, 0xbf, 0x88, 0xe3, 0x98, 0xc1, 0x89, 0xe3, 0x98, 0xbf, 0x88, 0xe3, - 0x99, 0xc1, 0x89, 0xe3, 0x99, 0xbf, 0x88, 0xe3, 0x9a, 0xc1, 0x89, 0xe3, - 0x9a, 0xbf, 0x88, 0xe3, 0x9a, 0xc1, 0x89, 0xe3, 0x9b, 0xbf, 0x88, 0xe3, - 0x9b, 0xc1, 0x89, 0xe3, 0x9c, 0xbf, 0x88, 0xe3, 0x9c, 0xc1, 0x89, 0xe3, - 0x9d, 0xbf, 0x88, 0xe3, 0x9d, 0xc1, 0x89, 0xe3, 0x9d, 0xbf, 0x88, 0xe3, - 0x9e, 0xc1, 0x89, 0xe3, 0x9e, 0xbf, 0x88, 0xe3, 0x9f, 0xc1, 0x89, 0xe3, - 0x9f, 0xbf, 0x88, 0xe3, 0x9f, 0xc1, 0x89, 0xe3, 0xa0, 0xbf, 0x88, 0xe3, - 0xa0, 0xc1, 0x89, 0xe3, 0xa1, 0xbf, 0x88, 0xe3, 0xa1, 0xc1, 0x89, 0xe3, - 0xa1, 0xbf, 0x88, 0xe3, 0xa2, 0xc1, 0x89, 0xe3, 0xa2, 0xbf, 0x88, 0xe3, - 0xa3, 0xc1, 0x89, 0xe3, 0xa3, 0xbf, 0x89, 0xe3, 0xa3, 0xbc, 0x89, 0xe3, - 0xa4, 0xbf, 0x89, 0xe3, 0xa4, 0xbc, 0x89, 0xe3, 0xa5, 0xbf, 0x89, 0xe3, - 0xa5, 0xbc, 0x89, 0xe3, 0xa5, 0xbf, 0x89, 0xe3, 0xa6, 0xbc, 0x89, 0xe3, - 0xa6, 0xbf, 0x89, 0xe3, 0xa6, 0xbc, 0x89, 0xe3, 0xa7, 0xbf, 0x89, 0xe3, - 0xa7, 0xbc, 0x89, 0xe3, 0xa8, 0xbf, 0x89, 0xe3, 0xa8, 0xbc, 0x89, 0xe3, - 0xa8, 0xbf, 0x89, 0xe3, 0xa9, 0xbc, 0x89, 0xe3, 0xa9, 0xbf, 0x89, 0xe3, - 0xaa, 0xbc, 0x89, 0xe3, 0xaa, 0xbf, 0x89, 0xe3, 0xaa, 0xbc, 0x89, 0xe3, - 0xab, 0xbf, 0x89, 0xe3, 0xab, 0xbc, 0x89, 0xe3, 0xab, 0xbf, 0x89, 0xe3, - 0xac, 0xbc, 0x89, 0xe3, 0xac, 0xbf, 0x89, 0xe3, 0xac, 0xbc, 0x89, 0xe3, - 0xad, 0xbf, 0x89, 0xe3, 0xad, 0xbc, 0xa6, 0xe3, 0xae, 0xee, 0xa6, 0xe3, - 0xae, 0xee, 0xab, 0xe3, 0xae, 0xef, 0xa6, 0xe3, 0xaf, 0xee, 0xab, 0xe3, - 0xaf, 0xef, 0xaa, 0xe3, 0xaf, 0xef, 0xab, 0xe3, 0xb0, 0xef, 0xaa, 0xe3, - 0xb0, 0xef, 0xab, 0xe3, 0xb0, 0xef, 0xaa, 0xe3, 0xb1, 0xef, 0xab, 0xe3, - 0xb1, 0xef, 0xaa, 0xe3, 0xb2, 0xef, 0xce, 0xe3, 0xb2, 0xcd, 0xce, 0xe3, - 0xb2, 0xca, 0xce, 0xe3, 0xb3, 0xcd, 0xce, 0xe3, 0xb3, 0xca, 0xce, 0xe3, - 0xb3, 0xcd, 0xce, 0xe3, 0xb4, 0xca, 0xce, 0xe3, 0xb4, 0xc7, 0xce, 0xe3, - 0xb4, 0xca, 0xce, 0xe3, 0xb5, 0xc7, 0xce, 0xe3, 0xb5, 0xca, 0xce, 0xe3, - 0xb5, 0xc7, 0xce, 0xe3, 0xb6, 0xca, 0xce, 0xe3, 0xb6, 0xc7, 0xce, 0xe3, - 0xb6, 0xca, 0xce, 0xe3, 0xb7, 0xc7, 0xce, 0xe3, 0xb7, 0xca, 0xce, 0xe3, - 0xb7, 0xc7, 0xce, 0xe3, 0xb8, 0xca, 0xce, 0xe3, 0xb8, 0xc7, 0xce, 0xe3, - 0xb8, 0xca, 0xce, 0xe3, 0xb9, 0xc7, 0xce, 0xe3, 0xb9, 0xca, 0xce, 0xe3, - 0xb9, 0xc7, 0xce, 0xe3, 0xba, 0xca, 0xce, 0xe3, 0xba, 0xc7, 0xce, 0xe3, - 0xba, 0xca, 0xce, 0xe3, 0xbb, 0xc7, 0xce, 0xe3, 0xbb, 0xca, 0xce, 0xe3, - 0xbb, 0xc7, 0xce, 0xe3, 0xbc, 0xca, 0xce, 0xe3, 0xbc, 0xc7, 0xce, 0xe3, - 0xbc, 0xca, 0xce, 0xe3, 0xbd, 0xc7, 0xce, 0xe3, 0xbd, 0xca, 0xce, 0xe3, - 0xbd, 0xc7, 0xce, 0xe3, 0xbe, 0xca, 0xce, 0xe3, 0xbe, 0xc7, 0xce, 0xe3, - 0xbe, 0xca, 0xce, 0xe3, 0xbf, 0xc7, 0xce, 0xe3, 0xbf, 0xca, 0xce, 0xe3, - 0xbf, 0xc7, 0xce, 0xe3, 0xc0, 0xca, 0xce, 0xe3, 0xc0, 0xc7, 0xce, 0xe3, - 0xc0, 0xca, 0xce, 0xe3, 0xc1, 0xc7, 0xce, 0xe3, 0xc1, 0xca, 0xce, 0xe3, - 0xc1, 0xc7, 0xcf, 0xe3, 0xc1, 0xc5, 0xce, 0xe3, 0xc2, 0xc7, 0xcf, 0xe3, - 0xc2, 0xc5, 0xce, 0xe3, 0xc2, 0xc7, 0xcf, 0xe3, 0xc3, 0xc5, 0xce, 0xe3, - 0xc3, 0xc7, 0xcf, 0xe3, 0xc3, 0xc5, 0xce, 0xe3, 0xc4, 0xc7, 0xcf, 0xe3, - 0xc4, 0xc5, 0xce, 0xe3, 0xc4, 0xc7, 0xcf, 0xe3, 0xc5, 0xc5, 0xce, 0xe3, - 0xc5, 0xc7, 0xcf, 0xe3, 0xc5, 0xc5, 0xce, 0xe3, 0xc6, 0xc7, 0xcf, 0xe3, - 0xc6, 0xc5, 0xce, 0xe3, 0xc6, 0xc7, 0xcf, 0xe3, 0xc6, 0xc5, 0xce, 0xe3, - 0xc7, 0xc7, 0xcf, 0xe3, 0xc7, 0xc5, 0xce, 0xe3, 0xc7, 0xc7, 0xcf, 0xe3, - 0xc8, 0xc5, 0xce, 0xe3, 0xc8, 0xc7, 0xcf, 0xe3, 0xc8, 0xc5, 0xce, 0xe3, - 0xc9, 0xc7, 0xcf, 0xe3, 0xc9, 0xc5, 0xce, 0xe3, 0xc9, 0xc7, 0xcf, 0xe3, - 0xc9, 0xc5, 0xce, 0xe3, 0xca, 0xc7, 0xcf, 0xe3, 0xca, 0xc5, 0xcf, 0xe3, - 0xca, 0xc3, 0xcf, 0xe3, 0xcb, 0xc5, 0xcf, 0xe3, 0xcb, 0xc3, 0xcf, 0xe3, - 0xcb, 0xc5, 0xcf, 0xe3, 0xcc, 0xc3, 0xcf, 0xe3, 0xcc, 0xc5, 0xcf, 0xe3, - 0xcc, 0xc3, 0xcf, 0xe3, 0xcc, 0xc5, 0xcf, 0xe3, 0xcd, 0xc3, 0xcf, 0xe3, - 0xcd, 0xc5, 0xcf, 0xe3, 0xcd, 0xc3, 0xcf, 0xe3, 0xce, 0xc5, 0xcf, 0xe3, - 0xce, 0xc3, 0xcf, 0xe3, 0xce, 0xc3, 0xcf, 0xe3, 0xce, 0xc3, 0xcf, 0xe3, - 0xcf, 0xc3, 0xcf, 0xe3, 0xce, 0xc3, 0xcf, 0xe3, 0xcf, 0xc3, 0xd0, 0xe3, - 0xce, 0xc3, 0xd0, 0xe3, 0xcf, 0xc3, 0xd0, 0xe2, 0xcf, 0xc3, 0xd0, 0xe3, - 0xcf, 0xc3, 0xd1, 0xe2, 0xcf, 0xc3, 0xd1, 0xe3, 0xcf, 0xc3, 0xd1, 0xe2, - 0xcf, 0xc3, 0xd2, 0xe3, 0xcf, 0xc3, 0xd2, 0xe2, 0xcf, 0xc3, 0xd2, 0xe3, - 0xcf, 0xc3, 0xd2, 0xe2, 0xcf, 0xc3, 0xd3, 0xe3, 0xcf, 0xc3, 0xd3, 0xe2, - 0xcf, 0xc3, 0xd3, 0xe3, 0xcf, 0xc3, 0xd4, 0xe2, 0xcf, 0xc3, 0xd4, 0xe3, - 0xcf, 0xc3, 0xd4, 0xe2, 0xcf, 0xc3, 0xd4, 0xe3, 0xcf, 0xc3, 0xd5, 0xe2, - 0xcf, 0xc3, 0xd5, 0xe3, 0xcf, 0xc3, 0xd5, 0xe2, 0xcf, 0xc3, 0xd6, 0xe3, - 0xcf, 0xc3, 0xd6, 0xe2, 0xcf, 0xc3, 0xd6, 0xe0, 0xcf, 0xc3, 0xd6, 0xe2, - 0xcf, 0xc3, 0xd7, 0xe0, 0xcf, 0xc3, 0xd7, 0xe2, 0xcf, 0xc3, 0xd7, 0xe0, - 0xcf, 0xc3, 0xd7, 0xe2, 0xcf, 0xc3, 0xd8, 0xe0, 0xcf, 0xc3, 0xd8, 0xe2, - 0xcf, 0xc3, 0xd8, 0xe0, 0xcf, 0xc3, 0xd9, 0xe2, 0xcf, 0xc3, 0xd9, 0xe0, - 0xcf, 0xc3, 0xd9, 0xe2, 0xcf, 0xc3, 0xd9, 0xe0, 0xcf, 0xc3, 0xda, 0xe2, - 0xcf, 0xc3, 0xda, 0xe0, 0xcf, 0xc3, 0xda, 0xe2, 0xcf, 0xc3, 0xda, 0xe0, - 0xcf, 0xc3, 0xdb, 0xe2, 0xcf, 0xc3, 0xdb, 0xe0, 0xcf, 0xc3, 0xdb, 0xe2, - 0xcf, 0xc3, 0xdb, 0xe0, 0xcf, 0xc3, 0xdc, 0xe5, 0xe7, 0xc3, 0xdc, 0xe6, - 0xe7, 0xc3, 0xdc, 0xe5, 0xe7, 0xc3, 0xdd, 0xe6, 0xe7, 0xc3, 0xdd, 0xe5, - 0xe7, 0xc3, 0xdd, 0xe6, 0xe7, 0xc3, 0xdd, 0xe5, 0xe7, 0xc3, 0xde, 0xe6, - 0xe7, 0xc3, 0xde, 0xe5, 0xe7, 0xc3, 0xde, 0xe3, 0xe7, 0xc3, 0xde, 0xe5, - 0xe7, 0xc3, 0xdf, 0xe3, 0xe7, 0xc3, 0xdf, 0xe5, 0xe7, 0xc3, 0xdf, 0xe3, - 0xe7, 0xc3, 0xdf, 0xe5, 0xe7, 0xc3, 0xe0, 0xe3, 0xe7, 0xc3, 0xe0, 0xe5, - 0xe7, 0xc3, 0xe0, 0xe3, 0xe7, 0xc3, 0xe1, 0xe5, 0xe7, 0xc3, 0xe1, 0xe3, - 0xe7, 0xc3, 0xe1, 0xe5, 0xe7, 0xc3, 0xe1, 0xe3, 0xe7, 0xc3, 0xe2, 0xe5, - 0xe7, 0xc3, 0xe2, 0xe3, 0xe7, 0xc3, 0xe2, 0xe5, 0xe7, 0xc3, 0xe2, 0xe3, - 0xe7, 0xc3, 0xe3, 0xe5, 0xe7, 0xc3, 0xe3, 0xe3, 0xe7, 0xc3, 0xe3, 0xe5, - 0xe7, 0xc3, 0xe3, 0xe3, 0xe7, 0xc3, 0xe4, 0xe3, 0xe8, 0xc3, 0xe4, 0xe3, - 0xe7, 0xc3, 0xe4, 0xe3, 0xe8, 0xc3, 0xe4, 0xe3, 0xe7, 0xc3, 0xe5, 0xe3, - 0xe8, 0xc3, 0xe5, 0xe3, 0xe7, 0xc3, 0xe5, 0xe3, 0xe8, 0xc3, 0xe5, 0xe3, - 0xe7, 0xc3, 0xe6, 0xe3, 0xe8, 0xc3, 0xe6, 0xe3, 0xe7, 0xc3, 0xe6, 0xe3, - 0xe8, 0xc3, 0xe6, 0xe3, 0xe7, 0xc3, 0xe7, 0xe3, 0xe8, 0xc3, 0xe7, 0xe3, - 0xe7, 0xc3, 0xe7, 0xe3, 0xe8, 0xc3, 0xe7, 0xe3, 0xe7, 0xc3, 0xe7, 0xe3, - 0xe8, 0xc3, 0xe7, 0xe3, 0xe8, 0xc3, 0xe7, 0xe3, 0xe8, 0xc3, 0xe7, 0xe3, - 0xe8, 0xc3, 0xe7, 0xe3, 0xe9, 0xc3, 0xe7, 0xe3, 0xe9, 0xc3, 0xe7, 0xe3, - 0xe9, 0xc3, 0xe7, 0xe3, 0xe9, 0xc3, 0xeb, 0xe3, 0xea, 0xc5, 0xeb, 0xe3, - 0xea, 0xc3, 0xeb, 0xe3, 0xea, 0xc5, 0xeb, 0xe3, 0xea, 0xc3, 0xec, 0xe3, - 0xeb, 0xc3, 0xeb, 0xe3, 0xeb, 0xc3, 0xec, 0xe3, 0xeb, 0xc3, 0xeb, 0xe3, - 0xeb, 0xc3, 0xec, 0xe3, 0xeb, 0xc3, 0xec, 0xe3, 0xeb, 0xc3, 0xec, 0xe3, - 0xeb, 0xc3, 0xec, 0xe3, 0xeb, 0xc3, 0xec, 0xe3, 0xeb, 0xc3, 0xed, 0xe3, - 0xeb, 0xc3, 0xed, 0xe3, 0xeb, 0xc3, 0xed, 0xe1, 0xeb, 0xc3, 0xed, 0xe3, - 0xeb, 0xc3, 0xee, 0xe1, 0xeb, 0xc3, 0xee, 0xe3, 0xeb, 0xc3, 0xee, 0xe1, - 0xeb, 0xc3, 0xee, 0xe3, 0xeb, 0xc3, 0xef, 0xe1, 0xeb, 0xc3, 0xef, 0xe3, - 0xeb, 0xc3, 0xef, 0xe1, 0xeb, 0xc3, 0xef, 0xe3, 0xeb, 0xc3, 0xf0, 0xe1, - 0xeb, 0xc3, 0xf0, 0xe3, 0xeb, 0xc3, 0xf0, 0xe1, 0xeb, 0xc3, 0xf0, 0xe3, - 0xeb, 0xc3, 0xf1, 0xe1, 0xeb, 0xc3, 0xf1, 0xe3, 0xeb, 0xc3, 0xf1, 0xe1, - 0xeb, 0xc3, 0xf1, 0xe3, 0xeb, 0xc3, 0xf2, 0xe1, 0xeb, 0xc3, 0xf2, 0xe3, - 0xeb, 0xc3, 0xf2, 0xe1, 0xeb, 0xc3, 0xf2, 0xe3, 0xeb, 0xc3, 0xf2, 0xe1, - 0xeb, 0xc3, 0xf3, 0xe3, 0xeb, 0xc3, 0xf3, 0xe1, 0xeb, 0xc3, 0xf3, 0xe3, - 0xeb, 0xc3, 0xf3, 0xe1, 0xeb, 0xc3, 0xf4, 0xe3, 0xeb, 0xc3, 0xf4, 0xe1, - 0xeb, 0xc3, 0xf4, 0xe3, 0xeb, 0xc3, 0xf4, 0xe1, 0xeb, 0xc3, 0xf5, 0xe3, - 0xeb, 0xc3, 0xf5, 0xe1, 0xeb, 0xc3, 0xf5, 0xec, 0xf1, 0xc3, 0xf5, 0xec, - 0xf1, 0xc3, 0xf5, 0xec, 0xf1, 0xc3, 0xf6, 0xec, 0xf1, 0xc3, 0xf6, 0xec, - 0xf1, 0xc3, 0xf6, 0xec, 0xf1, 0xc3, 0xf6, 0xec, 0xf1, 0xc3, 0xf7, 0xec, - 0xf1, 0xc3, 0xf7, 0xec, 0xf1, 0xc3, 0xf7, 0xec, 0xf1, 0xc3, 0xf7, 0xec, - 0xf1, 0xc3, 0xf8, 0xec, 0xf1, 0xc3, 0xf8, 0xec, 0xf1, 0xc3, 0xf8, 0xec, - 0xf1, 0xc3, 0xf8, 0xec, 0xf1, 0xc3, 0xf8, 0xec, 0xf1, 0xc3, 0xf9, 0xec, - 0xf1, 0xc3, 0xf9, 0xec, 0xf1, 0xc3, 0xf9, 0xec, 0xf1, 0xc3, 0xf9, 0xec, - 0xf1, 0xc3, 0xfa, 0xec, 0xf1, 0xc3, 0xfa, 0xec, 0xf1, 0xc3, 0xfa, 0xec, - 0xf1, 0xc3, 0xfa, 0xec, 0xf1, 0xc3, 0xfa, 0xec, 0xf1, 0xc3, 0xfb, 0xec, - 0xf1, 0xc3, 0xfb, 0xec, 0xf1, 0xc3, 0xfb, 0xec, 0xf1, 0xc3, 0xfb, 0xec, - 0xf1, 0xc3, 0xfc, 0xec, 0xf1, 0xc3, 0xfc, 0xec, 0xf1, 0xc3, 0xfc, 0xec, - 0xf1, 0xc3, 0xfc, 0xec, 0xf1, 0xc3, 0xfc, 0xec, 0xf1, 0xc3, 0xfd, 0xec, - 0xf1, 0xc3, 0xfd, 0xec, 0xf1, 0xc3, 0xfd, 0xec, 0xf1, 0xc3, 0xfd, 0xec, - 0xf1, 0xc3, 0xfe, 0xec, 0xf1, 0xc3, 0xfe, 0xec, 0xf1, 0xc3, 0xfe, 0xec, - 0xf1, 0xc3, 0xfe, 0xec, 0xf1, 0xc3, 0xfe, 0xec, 0xf1, 0xc3, 0xff, 0xec, - 0xf1, 0xc3, 0xff, 0xec, 0xf1, 0xc3, 0x03, 0xe9, 0x86, 0xc4, 0x0a, 0xe8, - 0x87, 0xc4, 0x0f, 0xe9, 0x86, 0xc4, 0x14, 0xe8, 0x87, 0xc4, 0x17, 0xe6, - 0x87, 0xc4, 0x1b, 0xe8, 0x87, 0xc4, 0x1e, 0xe6, 0x87, 0xc4, 0x20, 0xe8, - 0x87, 0xc4, 0x23, 0xe6, 0x87, 0xc4, 0x25, 0xe8, 0x87, 0xc4, 0x27, 0xe6, - 0x87, 0xc4, 0x29, 0xe8, 0x87, 0xc4, 0x2b, 0xe6, 0x87, 0xc4, 0x2d, 0xe8, - 0x87, 0xc4, 0x2f, 0xe6, 0x87, 0xc4, 0x31, 0xe8, 0x87, 0xc4, 0x32, 0xe6, - 0x87, 0xc4, 0x34, 0xe8, 0x87, 0xc4, 0x35, 0xe6, 0x87, 0xc4, 0x37, 0xe8, - 0x87, 0xc4, 0x38, 0xe6, 0x87, 0xc4, 0x3a, 0xe8, 0x87, 0xc4, 0x3b, 0xe6, - 0x87, 0xc4, 0x3c, 0xe8, 0x87, 0xc4, 0x3e, 0xe6, 0x87, 0xc4, 0x3f, 0xe8, - 0x87, 0xc4, 0x40, 0xe6, 0x87, 0xc4, 0x42, 0xe8, 0x87, 0xc4, 0x43, 0xe6, - 0x87, 0xc4, 0x44, 0xe8, 0x87, 0xc4, 0x45, 0xe6, 0x87, 0xc4, 0x46, 0xe8, - 0x87, 0xc4, 0x47, 0xe6, 0x87, 0xc4, 0x48, 0xe8, 0x87, 0xc4, 0x49, 0xe6, - 0x87, 0xc4, 0x4a, 0xe8, 0x87, 0xc4, 0x4b, 0xe6, 0x87, 0xc4, 0x4c, 0xe8, - 0x87, 0xc4, 0x4d, 0xe6, 0x87, 0xc4, 0x4e, 0xe8, 0x87, 0xc4, 0x4f, 0xe6, - 0x87, 0xc4, 0x50, 0xe8, 0x87, 0xc4, 0x51, 0xe6, 0x87, 0xc4, 0x52, 0xe8, - 0x87, 0xc4, 0x53, 0xe6, 0x87, 0xc4, 0x54, 0xe8, 0x87, 0xc4, 0x55, 0xe6, - 0x87, 0xc4, 0x56, 0xe8, 0x87, 0xc4, 0x57, 0xe6, 0x87, 0xc4, 0x58, 0xe4, - 0x88, 0xc4, 0x58, 0xe6, 0x87, 0xc4, 0x59, 0xe4, 0x88, 0xc4, 0x5a, 0xe6, - 0x87, 0xc4, 0x5b, 0xe4, 0x88, 0xc4, 0x5c, 0xe6, 0x87, 0xc4, 0x5d, 0xe4, - 0x88, 0xc4, 0x5d, 0xe6, 0x87, 0xc4, 0x5e, 0xe4, 0x88, 0xc4, 0x5f, 0xe6, - 0x87, 0xc4, 0x60, 0xe4, 0x88, 0xc4, 0x60, 0xe6, 0x87, 0xc4, 0x61, 0xe4, - 0x88, 0xc4, 0x62, 0xe6, 0x87, 0xc4, 0x63, 0xe4, 0x88, 0xc4, 0x63, 0xe6, - 0x87, 0xc4, 0x64, 0xe4, 0x88, 0xc4, 0x65, 0xe6, 0x87, 0xc4, 0x66, 0xe4, - 0x88, 0xc4, 0x66, 0xe6, 0x87, 0xc4, 0x67, 0xe4, 0x88, 0xc4, 0x68, 0xe6, - 0x87, 0xc4, 0x68, 0xe4, 0x88, 0xc4, 0x69, 0xe6, 0x87, 0xc4, 0x6a, 0xe4, - 0x88, 0xc4, 0x6a, 0xe6, 0x87, 0xc4, 0x6b, 0xe4, 0x88, 0xc4, 0x6c, 0xe6, - 0x87, 0xc4, 0x6c, 0xe4, 0x88, 0xc4, 0x6d, 0xe6, 0x87, 0xc4, 0x6e, 0xe4, - 0x88, 0xc4, 0x6e, 0xe6, 0x87, 0xc4, 0x6f, 0xe4, 0x88, 0xc4, 0x70, 0xe6, - 0x87, 0xc4, 0x70, 0xe4, 0x88, 0xc4, 0x71, 0xe6, 0x87, 0xc4, 0x72, 0xe4, - 0x88, 0xc4, 0x72, 0xe6, 0x87, 0xc4, 0x73, 0xe4, 0x88, 0xc4, 0x73, 0xe6, - 0x87, 0xc4, 0x74, 0xe4, 0x88, 0xc4, 0x75, 0xe6, 0x87, 0xc4, 0x75, 0xe4, - 0x88, 0xc4, 0x76, 0xe6, 0x87, 0xc4, 0x76, 0xe4, 0x88, 0xc4, 0x77, 0xe6, - 0x87, 0xc4, 0x78, 0xe4, 0x88, 0xc4, 0x78, 0xe6, 0x87, 0xc4, 0x79, 0xe4, - 0x88, 0xc4, 0x79, 0xe6, 0x87, 0xc4, 0x7a, 0xe4, 0x88, 0xc4, 0x7a, 0xe6, - 0x87, 0xc4, 0x7b, 0xe4, 0x88, 0xc4, 0x7c, 0xe3, 0x88, 0xc4, 0x7c, 0xe4, - 0x88, 0xc4, 0x7d, 0xe3, 0x88, 0xc4, 0x7d, 0xe4, 0x88, 0xc4, 0x7e, 0xe3, - 0x88, 0xc4, 0x7e, 0xe4, 0x88, 0xc4, 0x7f, 0xe3, 0x88, 0xc4, 0x7f, 0xe4, - 0x88, 0xc4, 0x80, 0xe3, 0x88, 0xc4, 0x81, 0xe4, 0x88, 0xc4, 0x81, 0xe3, - 0x88, 0xc4, 0x82, 0xe4, 0x88, 0xc4, 0x82, 0xe3, 0x88, 0xc4, 0x83, 0xe4, - 0x88, 0xc4, 0x83, 0xe3, 0x88, 0xc4, 0x84, 0xe4, 0x88, 0xc4, 0x84, 0xe3, - 0x88, 0xc4, 0x85, 0xe4, 0x88, 0xc4, 0x85, 0xe3, 0x88, 0xc4, 0x86, 0xe4, - 0x88, 0xc4, 0x86, 0xe3, 0x88, 0xc4, 0x87, 0xe3, 0x89, 0xc4, 0x87, 0xe3, - 0x88, 0xc4, 0x88, 0xe3, 0x89, 0xc4, 0x87, 0xe3, 0x88, 0xc4, 0x88, 0xe3, - 0x89, 0xc4, 0x87, 0xe3, 0x89, 0xc4, 0x88, 0xe3, 0x8a, 0xc4, 0x88, 0xe3, - 0x8a, 0xc2, 0x88, 0xe3, 0x8b, 0xc4, 0x88, 0xe3, 0x8b, 0xc2, 0x88, 0xe3, - 0x8c, 0xc4, 0x88, 0xe3, 0x8c, 0xc2, 0x88, 0xe3, 0x8d, 0xc4, 0x88, 0xe3, - 0x8d, 0xc2, 0x88, 0xe3, 0x8e, 0xc4, 0x88, 0xe3, 0x8e, 0xc2, 0x88, 0xe3, - 0x8e, 0xc4, 0x88, 0xe3, 0x8f, 0xc2, 0x88, 0xe3, 0x8f, 0xc4, 0x88, 0xe3, - 0x90, 0xc2, 0x88, 0xe3, 0x90, 0xc4, 0x88, 0xe3, 0x91, 0xc2, 0x88, 0xe3, - 0x91, 0xc4, 0x88, 0xe3, 0x92, 0xc2, 0x88, 0xe3, 0x92, 0xc4, 0x88, 0xe3, - 0x93, 0xc2, 0x88, 0xe3, 0x93, 0xc4, 0x88, 0xe3, 0x94, 0xc2, 0x88, 0xe3, - 0x94, 0xc4, 0x88, 0xe3, 0x94, 0xc2, 0x88, 0xe3, 0x95, 0xc4, 0x88, 0xe3, - 0x95, 0xc2, 0x88, 0xe3, 0x96, 0xc4, 0x88, 0xe3, 0x96, 0xc2, 0x88, 0xe3, - 0x97, 0xc4, 0x88, 0xe3, 0x97, 0xc2, 0x88, 0xe3, 0x98, 0xc4, 0x88, 0xe3, - 0x98, 0xc2, 0x88, 0xe3, 0x98, 0xc4, 0x88, 0xe3, 0x99, 0xc2, 0x89, 0xe3, - 0x99, 0xbe, 0x88, 0xe3, 0x9a, 0xc2, 0x89, 0xe3, 0x9a, 0xbe, 0x88, 0xe3, - 0x9a, 0xc2, 0x89, 0xe3, 0x9b, 0xbe, 0x88, 0xe3, 0x9b, 0xc2, 0x89, 0xe3, - 0x9c, 0xbe, 0x88, 0xe3, 0x9c, 0xc2, 0x89, 0xe3, 0x9d, 0xbe, 0x88, 0xe3, - 0x9d, 0xc2, 0x89, 0xe3, 0x9d, 0xbe, 0x88, 0xe3, 0x9e, 0xc2, 0x89, 0xe3, - 0x9e, 0xbe, 0x88, 0xe3, 0x9f, 0xc2, 0x89, 0xe3, 0x9f, 0xbe, 0x88, 0xe3, - 0x9f, 0xc2, 0x89, 0xe3, 0xa0, 0xbe, 0x88, 0xe3, 0xa0, 0xc2, 0x89, 0xe3, - 0xa1, 0xbe, 0x88, 0xe3, 0xa1, 0xc2, 0x89, 0xe3, 0xa1, 0xbe, 0x88, 0xe3, - 0xa2, 0xc2, 0x89, 0xe3, 0xa2, 0xbe, 0x88, 0xe3, 0xa3, 0xc2, 0x89, 0xe3, - 0xa3, 0xbe, 0x88, 0xe3, 0xa3, 0xc2, 0x89, 0xe3, 0xa4, 0xbe, 0x88, 0xe3, - 0xa4, 0xc2, 0x89, 0xe3, 0xa5, 0xbe, 0x88, 0xe3, 0xa5, 0xc2, 0x89, 0xe3, - 0xa5, 0xbe, 0x88, 0xe3, 0xa6, 0xc2, 0x89, 0xe3, 0xa6, 0xbe, 0x88, 0xe3, - 0xa6, 0xc2, 0x89, 0xe3, 0xa7, 0xbe, 0x88, 0xe3, 0xa7, 0xc2, 0x89, 0xe3, - 0xa8, 0xbe, 0x88, 0xe3, 0xa8, 0xc2, 0x89, 0xe3, 0xa8, 0xbe, 0x88, 0xe3, - 0xa9, 0xc2, 0x89, 0xe3, 0xa9, 0xbe, 0x89, 0xe3, 0xaa, 0xbb, 0x89, 0xe3, - 0xaa, 0xbe, 0x89, 0xe3, 0xaa, 0xbb, 0x89, 0xe3, 0xab, 0xbe, 0x89, 0xe3, - 0xab, 0xbb, 0x89, 0xe3, 0xab, 0xbe, 0x89, 0xe3, 0xac, 0xbb, 0x89, 0xe3, - 0xac, 0xbe, 0x89, 0xe3, 0xac, 0xbb, 0x89, 0xe3, 0xad, 0xbe, 0xa8, 0xe3, - 0xad, 0xef, 0xa8, 0xe3, 0xae, 0xef, 0xa8, 0xe3, 0xae, 0xef, 0xa8, 0xe3, - 0xae, 0xef, 0xa8, 0xe3, 0xaf, 0xef, 0xa8, 0xe3, 0xaf, 0xef, 0xa8, 0xe3, - 0xaf, 0xef, 0xa8, 0xe3, 0xb0, 0xef, 0xac, 0xe3, 0xb0, 0xf0, 0xa8, 0xe3, - 0xb0, 0xef, 0xac, 0xe3, 0xb1, 0xf0, 0xac, 0xe3, 0xb1, 0xf0, 0xac, 0xe3, - 0xb2, 0xf0, 0xac, 0xe3, 0xb2, 0xf0, 0xce, 0xe3, 0xb2, 0xcb, 0xce, 0xe3, - 0xb3, 0xcd, 0xce, 0xe3, 0xb3, 0xcb, 0xce, 0xe3, 0xb3, 0xcd, 0xce, 0xe3, - 0xb4, 0xcb, 0xce, 0xe3, 0xb4, 0xcd, 0xce, 0xe3, 0xb4, 0xcb, 0xce, 0xe3, - 0xb5, 0xcd, 0xce, 0xe3, 0xb5, 0xcb, 0xce, 0xe3, 0xb5, 0xcd, 0xce, 0xe3, - 0xb6, 0xcb, 0xce, 0xe3, 0xb6, 0xcd, 0xce, 0xe3, 0xb6, 0xcb, 0xce, 0xe3, - 0xb7, 0xcd, 0xce, 0xe3, 0xb7, 0xcb, 0xce, 0xe3, 0xb7, 0xcd, 0xce, 0xe3, - 0xb8, 0xcb, 0xce, 0xe3, 0xb8, 0xcd, 0xce, 0xe3, 0xb8, 0xcb, 0xce, 0xe3, - 0xb9, 0xcd, 0xce, 0xe3, 0xb9, 0xcb, 0xce, 0xe3, 0xb9, 0xcd, 0xce, 0xe3, - 0xba, 0xcb, 0xce, 0xe3, 0xba, 0xcd, 0xce, 0xe3, 0xba, 0xcb, 0xce, 0xe3, - 0xbb, 0xc8, 0xce, 0xe3, 0xbb, 0xcb, 0xce, 0xe3, 0xbb, 0xc8, 0xce, 0xe3, - 0xbc, 0xcb, 0xce, 0xe3, 0xbc, 0xc8, 0xce, 0xe3, 0xbc, 0xcb, 0xce, 0xe3, - 0xbd, 0xc8, 0xce, 0xe3, 0xbd, 0xcb, 0xce, 0xe3, 0xbd, 0xc8, 0xce, 0xe3, - 0xbe, 0xcb, 0xce, 0xe3, 0xbe, 0xc8, 0xce, 0xe3, 0xbe, 0xcb, 0xce, 0xe3, - 0xbf, 0xc8, 0xce, 0xe3, 0xbf, 0xcb, 0xce, 0xe3, 0xbf, 0xc8, 0xce, 0xe3, - 0xc0, 0xcb, 0xce, 0xe3, 0xc0, 0xc8, 0xcf, 0xe3, 0xc0, 0xc5, 0xce, 0xe3, - 0xc1, 0xc8, 0xcf, 0xe3, 0xc1, 0xc5, 0xce, 0xe3, 0xc1, 0xc8, 0xcf, 0xe3, - 0xc1, 0xc5, 0xce, 0xe3, 0xc2, 0xc8, 0xcf, 0xe3, 0xc2, 0xc5, 0xce, 0xe3, - 0xc2, 0xc8, 0xcf, 0xe3, 0xc3, 0xc5, 0xce, 0xe3, 0xc3, 0xc8, 0xcf, 0xe3, - 0xc3, 0xc5, 0xce, 0xe3, 0xc4, 0xc8, 0xcf, 0xe3, 0xc4, 0xc5, 0xce, 0xe3, - 0xc4, 0xc8, 0xcf, 0xe3, 0xc5, 0xc5, 0xce, 0xe3, 0xc5, 0xc8, 0xcf, 0xe3, - 0xc5, 0xc5, 0xce, 0xe3, 0xc6, 0xc8, 0xcf, 0xe3, 0xc6, 0xc5, 0xce, 0xe3, - 0xc6, 0xc8, 0xcf, 0xe3, 0xc6, 0xc5, 0xce, 0xe3, 0xc7, 0xc8, 0xcf, 0xe3, - 0xc7, 0xc5, 0xce, 0xe3, 0xc7, 0xc8, 0xcf, 0xe3, 0xc8, 0xc5, 0xce, 0xe3, - 0xc8, 0xc8, 0xcf, 0xe3, 0xc8, 0xc5, 0xce, 0xe3, 0xc9, 0xc8, 0xcf, 0xe3, - 0xc9, 0xc5, 0xce, 0xe3, 0xc9, 0xc8, 0xcf, 0xe3, 0xc9, 0xc5, 0xce, 0xe3, - 0xca, 0xc8, 0xcf, 0xe3, 0xca, 0xc5, 0xcf, 0xe3, 0xca, 0xc4, 0xcf, 0xe3, - 0xcb, 0xc5, 0xcf, 0xe3, 0xcb, 0xc4, 0xcf, 0xe3, 0xcb, 0xc5, 0xcf, 0xe3, - 0xcc, 0xc4, 0xcf, 0xe3, 0xcc, 0xc5, 0xcf, 0xe3, 0xcc, 0xc4, 0xcf, 0xe3, - 0xcc, 0xc5, 0xcf, 0xe3, 0xcd, 0xc4, 0xcf, 0xe3, 0xcd, 0xc5, 0xcf, 0xe3, - 0xcd, 0xc4, 0xcf, 0xe3, 0xce, 0xc5, 0xcf, 0xe3, 0xce, 0xc4, 0xcf, 0xe3, - 0xce, 0xc5, 0xcf, 0xe3, 0xce, 0xc4, 0xcf, 0xe3, 0xcf, 0xc4, 0xcf, 0xe3, - 0xce, 0xc4, 0xcf, 0xe3, 0xcf, 0xc4, 0xd0, 0xe3, 0xce, 0xc4, 0xd0, 0xe3, - 0xcf, 0xc4, 0xd0, 0xe2, 0xcf, 0xc4, 0xd0, 0xe3, 0xcf, 0xc4, 0xd1, 0xe2, - 0xcf, 0xc4, 0xd1, 0xe3, 0xcf, 0xc4, 0xd1, 0xe2, 0xcf, 0xc4, 0xd2, 0xe3, - 0xcf, 0xc4, 0xd2, 0xe2, 0xcf, 0xc4, 0xd2, 0xe3, 0xcf, 0xc4, 0xd2, 0xe2, - 0xcf, 0xc4, 0xd3, 0xe3, 0xcf, 0xc4, 0xd3, 0xe2, 0xcf, 0xc4, 0xd3, 0xe3, - 0xcf, 0xc4, 0xd4, 0xe2, 0xcf, 0xc4, 0xd4, 0xe3, 0xcf, 0xc4, 0xd4, 0xe2, - 0xcf, 0xc4, 0xd4, 0xe3, 0xcf, 0xc4, 0xd5, 0xe2, 0xcf, 0xc4, 0xd5, 0xe3, - 0xcf, 0xc4, 0xd5, 0xe2, 0xcf, 0xc4, 0xd6, 0xe3, 0xcf, 0xc4, 0xd6, 0xe2, - 0xcf, 0xc4, 0xd6, 0xe1, 0xcf, 0xc4, 0xd6, 0xe2, 0xcf, 0xc4, 0xd7, 0xe1, - 0xcf, 0xc4, 0xd7, 0xe2, 0xcf, 0xc4, 0xd7, 0xe1, 0xcf, 0xc4, 0xd7, 0xe2, - 0xcf, 0xc4, 0xd8, 0xe1, 0xcf, 0xc4, 0xd8, 0xe2, 0xcf, 0xc4, 0xd8, 0xe1, - 0xcf, 0xc4, 0xd9, 0xe2, 0xcf, 0xc4, 0xd9, 0xe1, 0xcf, 0xc4, 0xd9, 0xe2, - 0xcf, 0xc4, 0xd9, 0xe1, 0xcf, 0xc4, 0xda, 0xe2, 0xcf, 0xc4, 0xda, 0xe1, - 0xcf, 0xc4, 0xda, 0xe2, 0xcf, 0xc4, 0xda, 0xe1, 0xcf, 0xc4, 0xdb, 0xe2, - 0xcf, 0xc4, 0xdb, 0xe1, 0xcf, 0xc4, 0xdb, 0xe2, 0xcf, 0xc4, 0xdb, 0xe1, - 0xcf, 0xc4, 0xdc, 0xe5, 0xe7, 0xc4, 0xdc, 0xe6, 0xe7, 0xc4, 0xdc, 0xe5, - 0xe7, 0xc4, 0xdd, 0xe6, 0xe7, 0xc4, 0xdd, 0xe5, 0xe7, 0xc4, 0xdd, 0xe6, - 0xe7, 0xc4, 0xdd, 0xe5, 0xe7, 0xc4, 0xde, 0xe6, 0xe7, 0xc4, 0xde, 0xe5, - 0xe7, 0xc4, 0xde, 0xe3, 0xe7, 0xc4, 0xde, 0xe5, 0xe7, 0xc4, 0xdf, 0xe3, - 0xe7, 0xc4, 0xdf, 0xe5, 0xe7, 0xc4, 0xdf, 0xe3, 0xe7, 0xc4, 0xdf, 0xe5, - 0xe7, 0xc4, 0xe0, 0xe3, 0xe7, 0xc4, 0xe0, 0xe5, 0xe7, 0xc4, 0xe0, 0xe3, - 0xe7, 0xc4, 0xe1, 0xe5, 0xe7, 0xc4, 0xe1, 0xe3, 0xe7, 0xc4, 0xe1, 0xe5, - 0xe7, 0xc4, 0xe1, 0xe3, 0xe7, 0xc4, 0xe2, 0xe5, 0xe7, 0xc4, 0xe2, 0xe3, - 0xe7, 0xc4, 0xe2, 0xe5, 0xe7, 0xc4, 0xe2, 0xe3, 0xe7, 0xc4, 0xe3, 0xe5, - 0xe7, 0xc4, 0xe3, 0xe3, 0xe7, 0xc4, 0xe3, 0xe5, 0xe7, 0xc4, 0xe3, 0xe3, - 0xe7, 0xc4, 0xe4, 0xe5, 0xe7, 0xc4, 0xe4, 0xe3, 0xe7, 0xc4, 0xe4, 0xe5, - 0xe7, 0xc4, 0xe4, 0xe3, 0xe7, 0xc4, 0xe5, 0xe5, 0xe7, 0xc4, 0xe5, 0xe3, - 0xe7, 0xc4, 0xe5, 0xe5, 0xe7, 0xc4, 0xe5, 0xe3, 0xe7, 0xc4, 0xe6, 0xe3, - 0xe8, 0xc4, 0xe6, 0xe3, 0xe7, 0xc4, 0xe6, 0xe3, 0xe8, 0xc4, 0xe6, 0xe3, - 0xe7, 0xc4, 0xe7, 0xe3, 0xe8, 0xc4, 0xe7, 0xe3, 0xe7, 0xc4, 0xe7, 0xe3, - 0xe8, 0xc4, 0xe7, 0xe3, 0xe7, 0xc3, 0xe7, 0xe3, 0xe8, 0xc4, 0xe7, 0xe3, - 0xe8, 0xc3, 0xe7, 0xe3, 0xe8, 0xc4, 0xe7, 0xe3, 0xe8, 0xc3, 0xe7, 0xe3, - 0xe9, 0xc4, 0xe7, 0xe3, 0xe9, 0xc3, 0xe7, 0xe3, 0xe9, 0xc4, 0xeb, 0xe3, - 0xe9, 0xc4, 0xeb, 0xe3, 0xea, 0xc5, 0xeb, 0xe3, 0xea, 0xc4, 0xeb, 0xe3, - 0xea, 0xc5, 0xeb, 0xe3, 0xea, 0xc4, 0xeb, 0xe3, 0xeb, 0xc5, 0xeb, 0xe3, - 0xeb, 0xc4, 0xec, 0xe3, 0xeb, 0xc4, 0xeb, 0xe3, 0xeb, 0xc4, 0xec, 0xe3, - 0xeb, 0xc4, 0xec, 0xe3, 0xeb, 0xc4, 0xec, 0xe3, 0xeb, 0xc4, 0xec, 0xe3, - 0xeb, 0xc4, 0xec, 0xe3, 0xeb, 0xc4, 0xed, 0xe3, 0xeb, 0xc4, 0xed, 0xe3, - 0xeb, 0xc4, 0xed, 0xe3, 0xeb, 0xc4, 0xed, 0xe3, 0xeb, 0xc4, 0xee, 0xe3, - 0xeb, 0xc4, 0xee, 0xe3, 0xeb, 0xc4, 0xee, 0xe3, 0xeb, 0xc4, 0xee, 0xe3, - 0xeb, 0xc4, 0xef, 0xe3, 0xeb, 0xc4, 0xef, 0xe3, 0xeb, 0xc4, 0xef, 0xe1, - 0xeb, 0xc4, 0xef, 0xe3, 0xeb, 0xc4, 0xf0, 0xe1, 0xeb, 0xc4, 0xf0, 0xe3, - 0xeb, 0xc4, 0xf0, 0xe1, 0xeb, 0xc4, 0xf0, 0xe3, 0xeb, 0xc4, 0xf1, 0xe1, - 0xeb, 0xc4, 0xf1, 0xe3, 0xeb, 0xc4, 0xf1, 0xe1, 0xeb, 0xc4, 0xf1, 0xe3, - 0xeb, 0xc4, 0xf2, 0xe1, 0xeb, 0xc4, 0xf2, 0xe3, 0xeb, 0xc4, 0xf2, 0xe1, - 0xeb, 0xc4, 0xf2, 0xe3, 0xeb, 0xc4, 0xf2, 0xe1, 0xeb, 0xc4, 0xf3, 0xe3, - 0xeb, 0xc4, 0xf3, 0xe1, 0xeb, 0xc4, 0xf3, 0xe3, 0xeb, 0xc4, 0xf3, 0xe1, - 0xeb, 0xc4, 0xf4, 0xe3, 0xeb, 0xc4, 0xf4, 0xe1, 0xeb, 0xc4, 0xf4, 0xec, - 0xf1, 0xc4, 0xf4, 0xec, 0xf1, 0xc4, 0xf5, 0xec, 0xf1, 0xc4, 0xf5, 0xec, - 0xf1, 0xc4, 0xf5, 0xec, 0xf1, 0xc4, 0xf5, 0xec, 0xf1, 0xc4, 0xf5, 0xec, - 0xf1, 0xc4, 0xf6, 0xec, 0xf1, 0xc4, 0xf6, 0xec, 0xf1, 0xc4, 0xf6, 0xec, - 0xf1, 0xc4, 0xf6, 0xec, 0xf1, 0xc4, 0xf7, 0xec, 0xf1, 0xc4, 0xf7, 0xec, - 0xf1, 0xc4, 0xf7, 0xec, 0xf1, 0xc4, 0xf7, 0xec, 0xf1, 0xc4, 0xf8, 0xec, - 0xf1, 0xc4, 0xf8, 0xec, 0xf1, 0xc4, 0xf8, 0xec, 0xf1, 0xc4, 0xf8, 0xec, - 0xf1, 0xc4, 0xf8, 0xec, 0xf1, 0xc4, 0xf9, 0xec, 0xf1, 0xc4, 0xf9, 0xec, - 0xf1, 0xc4, 0xf9, 0xec, 0xf1, 0xc4, 0xf9, 0xec, 0xf1, 0xc4, 0xfa, 0xec, - 0xf1, 0xc4, 0xfa, 0xec, 0xf1, 0xc4, 0xfa, 0xec, 0xf1, 0xc4, 0xfa, 0xec, - 0xf1, 0xc4, 0xfa, 0xec, 0xf1, 0xc4, 0xfb, 0xec, 0xf1, 0xc4, 0xfb, 0xec, - 0xf1, 0xc4, 0xfb, 0xec, 0xf1, 0xc4, 0xfb, 0xec, 0xf1, 0xc4, 0xfc, 0xec, - 0xf1, 0xc4, 0xfc, 0xec, 0xf1, 0xc4, 0xfc, 0xec, 0xf1, 0xc4, 0xfc, 0xec, - 0xf1, 0xc4, 0xfc, 0xec, 0xf1, 0xc4, 0xfd, 0xec, 0xf1, 0xc4, 0xfd, 0xec, - 0xf1, 0xc4, 0xfd, 0xec, 0xf1, 0xc4, 0xfd, 0xec, 0xf1, 0xc4, 0xfe, 0xec, - 0xf1, 0xc4, 0xfe, 0xec, 0xf1, 0xc4, 0xfe, 0xec, 0xf1, 0xc4, 0xfe, 0xec, - 0xf1, 0xc4, 0xfe, 0xec, 0xf1, 0xc4, 0xff, 0xec, 0xf1, 0xc4, 0xff, 0xec, - 0xf1, 0xc4, 0x03, 0xe9, 0x86, 0xc4, 0x0a, 0xe7, 0x87, 0xc4, 0x0f, 0xe9, - 0x86, 0xc4, 0x14, 0xe7, 0x87, 0xc4, 0x17, 0xe9, 0x86, 0xc4, 0x1b, 0xe7, - 0x87, 0xc4, 0x1e, 0xe9, 0x86, 0xc4, 0x20, 0xe7, 0x87, 0xc4, 0x23, 0xe9, - 0x86, 0xc4, 0x25, 0xe7, 0x87, 0xc4, 0x27, 0xe9, 0x86, 0xc4, 0x29, 0xe7, - 0x87, 0xc4, 0x2b, 0xe9, 0x86, 0xc4, 0x2d, 0xe7, 0x87, 0xc4, 0x2f, 0xe9, - 0x86, 0xc4, 0x31, 0xe7, 0x87, 0xc4, 0x32, 0xe9, 0x86, 0xc4, 0x34, 0xe7, - 0x87, 0xc4, 0x35, 0xe9, 0x86, 0xc4, 0x37, 0xe7, 0x87, 0xc4, 0x38, 0xe9, - 0x86, 0xc4, 0x3a, 0xe7, 0x87, 0xc4, 0x3b, 0xe9, 0x86, 0xc4, 0x3c, 0xe7, - 0x87, 0xc4, 0x3e, 0xe9, 0x86, 0xc4, 0x3f, 0xe7, 0x87, 0xc4, 0x40, 0xe9, - 0x86, 0xc4, 0x42, 0xe7, 0x87, 0xc4, 0x43, 0xe6, 0x87, 0xc4, 0x44, 0xe7, - 0x87, 0xc4, 0x45, 0xe6, 0x87, 0xc4, 0x46, 0xe7, 0x87, 0xc4, 0x47, 0xe6, - 0x87, 0xc4, 0x48, 0xe7, 0x87, 0xc4, 0x49, 0xe6, 0x87, 0xc4, 0x4a, 0xe7, - 0x87, 0xc4, 0x4b, 0xe6, 0x87, 0xc4, 0x4c, 0xe7, 0x87, 0xc4, 0x4d, 0xe6, - 0x87, 0xc4, 0x4e, 0xe7, 0x87, 0xc4, 0x4f, 0xe6, 0x87, 0xc4, 0x50, 0xe7, - 0x87, 0xc4, 0x51, 0xe6, 0x87, 0xc4, 0x52, 0xe7, 0x87, 0xc4, 0x53, 0xe6, - 0x87, 0xc4, 0x54, 0xe7, 0x87, 0xc4, 0x55, 0xe6, 0x87, 0xc4, 0x56, 0xe7, - 0x87, 0xc4, 0x57, 0xe6, 0x87, 0xc4, 0x58, 0xe7, 0x87, 0xc4, 0x58, 0xe6, - 0x87, 0xc4, 0x59, 0xe7, 0x87, 0xc4, 0x5a, 0xe6, 0x87, 0xc4, 0x5b, 0xe7, - 0x87, 0xc4, 0x5c, 0xe6, 0x87, 0xc4, 0x5d, 0xe7, 0x87, 0xc4, 0x5d, 0xe6, - 0x87, 0xc4, 0x5e, 0xe7, 0x87, 0xc4, 0x5f, 0xe6, 0x87, 0xc4, 0x60, 0xe7, - 0x87, 0xc4, 0x60, 0xe6, 0x87, 0xc4, 0x61, 0xe4, 0x88, 0xc4, 0x62, 0xe6, - 0x87, 0xc4, 0x63, 0xe4, 0x88, 0xc4, 0x63, 0xe6, 0x87, 0xc4, 0x64, 0xe4, - 0x88, 0xc4, 0x65, 0xe6, 0x87, 0xc4, 0x66, 0xe4, 0x88, 0xc4, 0x66, 0xe6, - 0x87, 0xc4, 0x67, 0xe4, 0x88, 0xc4, 0x68, 0xe6, 0x87, 0xc4, 0x68, 0xe4, - 0x88, 0xc4, 0x69, 0xe6, 0x87, 0xc4, 0x6a, 0xe4, 0x88, 0xc4, 0x6a, 0xe6, - 0x87, 0xc4, 0x6b, 0xe4, 0x88, 0xc4, 0x6c, 0xe6, 0x87, 0xc4, 0x6c, 0xe4, - 0x88, 0xc4, 0x6d, 0xe6, 0x87, 0xc4, 0x6e, 0xe4, 0x88, 0xc4, 0x6e, 0xe6, - 0x87, 0xc4, 0x6f, 0xe4, 0x88, 0xc4, 0x70, 0xe6, 0x87, 0xc4, 0x70, 0xe4, - 0x88, 0xc4, 0x71, 0xe6, 0x87, 0xc4, 0x72, 0xe4, 0x88, 0xc4, 0x72, 0xe6, - 0x87, 0xc4, 0x73, 0xe4, 0x88, 0xc4, 0x73, 0xe6, 0x87, 0xc4, 0x74, 0xe4, - 0x88, 0xc4, 0x75, 0xe6, 0x87, 0xc4, 0x75, 0xe4, 0x88, 0xc4, 0x76, 0xe6, - 0x87, 0xc4, 0x76, 0xe4, 0x88, 0xc4, 0x77, 0xe6, 0x87, 0xc4, 0x78, 0xe4, - 0x88, 0xc4, 0x78, 0xe6, 0x87, 0xc4, 0x79, 0xe4, 0x88, 0xc4, 0x79, 0xe6, - 0x87, 0xc4, 0x7a, 0xe4, 0x88, 0xc4, 0x7a, 0xe6, 0x87, 0xc4, 0x7b, 0xe4, - 0x88, 0xc4, 0x7c, 0xe3, 0x88, 0xc4, 0x7c, 0xe4, 0x88, 0xc4, 0x7d, 0xe3, - 0x88, 0xc4, 0x7d, 0xe4, 0x88, 0xc4, 0x7e, 0xe3, 0x88, 0xc4, 0x7e, 0xe4, - 0x88, 0xc4, 0x7f, 0xe3, 0x88, 0xc4, 0x7f, 0xe4, 0x88, 0xc4, 0x80, 0xe3, - 0x88, 0xc4, 0x81, 0xe4, 0x88, 0xc4, 0x81, 0xe3, 0x88, 0xc4, 0x82, 0xe4, - 0x88, 0xc4, 0x82, 0xe3, 0x88, 0xc4, 0x83, 0xe4, 0x88, 0xc4, 0x83, 0xe3, - 0x88, 0xc4, 0x84, 0xe4, 0x88, 0xc4, 0x84, 0xe3, 0x88, 0xc4, 0x85, 0xe4, - 0x88, 0xc4, 0x85, 0xe3, 0x88, 0xc4, 0x86, 0xe4, 0x88, 0xc4, 0x86, 0xe3, - 0x88, 0xc4, 0x87, 0xe4, 0x88, 0xc4, 0x87, 0xe3, 0x88, 0xc4, 0x88, 0xe4, - 0x88, 0xc4, 0x87, 0xe3, 0x88, 0xc4, 0x88, 0xe3, 0x89, 0xc4, 0x87, 0xe3, - 0x89, 0xc4, 0x88, 0xe3, 0x8a, 0xc4, 0x87, 0xe3, 0x8a, 0xc4, 0x88, 0xe3, - 0x8b, 0xc4, 0x87, 0xe3, 0x8b, 0xc4, 0x88, 0xe3, 0x8c, 0xc4, 0x88, 0xe3, - 0x8c, 0xc1, 0x88, 0xe3, 0x8d, 0xc4, 0x88, 0xe3, 0x8d, 0xc1, 0x88, 0xe3, - 0x8e, 0xc4, 0x88, 0xe3, 0x8e, 0xc1, 0x88, 0xe3, 0x8e, 0xc4, 0x88, 0xe3, - 0x8f, 0xc1, 0x88, 0xe3, 0x8f, 0xc4, 0x88, 0xe3, 0x90, 0xc1, 0x88, 0xe3, - 0x90, 0xc4, 0x88, 0xe3, 0x91, 0xc1, 0x88, 0xe3, 0x91, 0xc4, 0x88, 0xe3, - 0x92, 0xc1, 0x88, 0xe3, 0x92, 0xc4, 0x88, 0xe3, 0x93, 0xc1, 0x88, 0xe3, - 0x93, 0xc4, 0x88, 0xe3, 0x94, 0xc1, 0x88, 0xe3, 0x94, 0xc4, 0x88, 0xe3, - 0x94, 0xc1, 0x88, 0xe3, 0x95, 0xc4, 0x88, 0xe3, 0x95, 0xc1, 0x88, 0xe3, - 0x96, 0xc4, 0x88, 0xe3, 0x96, 0xc1, 0x88, 0xe3, 0x97, 0xc4, 0x88, 0xe3, - 0x97, 0xc1, 0x88, 0xe3, 0x98, 0xc4, 0x88, 0xe3, 0x98, 0xc1, 0x88, 0xe3, - 0x98, 0xc4, 0x88, 0xe3, 0x99, 0xc1, 0x89, 0xe3, 0x99, 0xbf, 0x88, 0xe3, - 0x9a, 0xc1, 0x89, 0xe3, 0x9a, 0xbf, 0x88, 0xe3, 0x9a, 0xc1, 0x89, 0xe3, - 0x9b, 0xbf, 0x88, 0xe3, 0x9b, 0xc1, 0x89, 0xe3, 0x9c, 0xbf, 0x88, 0xe3, - 0x9c, 0xc1, 0x89, 0xe3, 0x9d, 0xbf, 0x88, 0xe3, 0x9d, 0xc1, 0x89, 0xe3, - 0x9d, 0xbf, 0x88, 0xe3, 0x9e, 0xc1, 0x89, 0xe3, 0x9e, 0xbf, 0x88, 0xe3, - 0x9f, 0xc1, 0x89, 0xe3, 0x9f, 0xbf, 0x88, 0xe3, 0x9f, 0xc1, 0x89, 0xe3, - 0xa0, 0xbf, 0x88, 0xe3, 0xa0, 0xc1, 0x89, 0xe3, 0xa1, 0xbf, 0x88, 0xe3, - 0xa1, 0xc1, 0x89, 0xe3, 0xa1, 0xbf, 0x88, 0xe3, 0xa2, 0xc1, 0x89, 0xe3, - 0xa2, 0xbf, 0x88, 0xe3, 0xa3, 0xc1, 0x89, 0xe3, 0xa3, 0xbf, 0x88, 0xe3, - 0xa3, 0xc1, 0x89, 0xe3, 0xa4, 0xbf, 0x88, 0xe3, 0xa4, 0xc1, 0x89, 0xe3, - 0xa5, 0xbf, 0x88, 0xe3, 0xa5, 0xc1, 0x89, 0xe3, 0xa5, 0xbf, 0x88, 0xe3, - 0xa6, 0xc1, 0x89, 0xe3, 0xa6, 0xbf, 0x88, 0xe3, 0xa6, 0xc1, 0x89, 0xe3, - 0xa7, 0xbf, 0x88, 0xe3, 0xa7, 0xc1, 0x89, 0xe3, 0xa8, 0xbf, 0x89, 0xe3, - 0xa8, 0xbc, 0x89, 0xe3, 0xa8, 0xbf, 0x89, 0xe3, 0xa9, 0xbc, 0x89, 0xe3, - 0xa9, 0xbf, 0x89, 0xe3, 0xaa, 0xbc, 0x89, 0xe3, 0xaa, 0xbf, 0x89, 0xe3, - 0xaa, 0xbc, 0x89, 0xe3, 0xab, 0xbf, 0x89, 0xe3, 0xab, 0xbc, 0x89, 0xe3, - 0xab, 0xbf, 0x89, 0xe3, 0xac, 0xbc, 0x89, 0xe3, 0xac, 0xbf, 0xa6, 0xe3, - 0xac, 0xee, 0xa6, 0xe3, 0xad, 0xee, 0xa6, 0xe3, 0xad, 0xee, 0xa6, 0xe3, - 0xae, 0xee, 0xa6, 0xe3, 0xae, 0xee, 0xab, 0xe3, 0xae, 0xef, 0xaa, 0xe3, - 0xaf, 0xef, 0xab, 0xe3, 0xaf, 0xef, 0xaa, 0xe3, 0xaf, 0xef, 0xab, 0xe3, - 0xb0, 0xef, 0xaa, 0xe3, 0xb0, 0xef, 0xab, 0xe3, 0xb0, 0xef, 0xaa, 0xe3, - 0xb1, 0xef, 0xab, 0xe3, 0xb1, 0xef, 0xaa, 0xe3, 0xb2, 0xef, 0xab, 0xe3, - 0xb2, 0xef, 0xaf, 0xe3, 0xb2, 0xf0, 0xce, 0xe3, 0xb3, 0xcd, 0xce, 0xe3, - 0xb3, 0xca, 0xce, 0xe3, 0xb3, 0xcd, 0xce, 0xe3, 0xb4, 0xca, 0xce, 0xe3, - 0xb4, 0xcd, 0xce, 0xe3, 0xb4, 0xca, 0xce, 0xe3, 0xb5, 0xcd, 0xce, 0xe3, - 0xb5, 0xca, 0xce, 0xe3, 0xb5, 0xcd, 0xce, 0xe3, 0xb6, 0xca, 0xce, 0xe3, - 0xb6, 0xcd, 0xce, 0xe3, 0xb6, 0xca, 0xce, 0xe3, 0xb7, 0xcd, 0xce, 0xe3, - 0xb7, 0xca, 0xce, 0xe3, 0xb7, 0xcd, 0xce, 0xe3, 0xb8, 0xca, 0xce, 0xe3, - 0xb8, 0xc7, 0xce, 0xe3, 0xb8, 0xca, 0xce, 0xe3, 0xb9, 0xc7, 0xce, 0xe3, - 0xb9, 0xca, 0xce, 0xe3, 0xb9, 0xc7, 0xce, 0xe3, 0xba, 0xca, 0xce, 0xe3, - 0xba, 0xc7, 0xce, 0xe3, 0xba, 0xca, 0xce, 0xe3, 0xbb, 0xc7, 0xce, 0xe3, - 0xbb, 0xca, 0xce, 0xe3, 0xbb, 0xc7, 0xce, 0xe3, 0xbc, 0xca, 0xce, 0xe3, - 0xbc, 0xc7, 0xce, 0xe3, 0xbc, 0xca, 0xce, 0xe3, 0xbd, 0xc7, 0xce, 0xe3, - 0xbd, 0xca, 0xce, 0xe3, 0xbd, 0xc7, 0xce, 0xe3, 0xbe, 0xca, 0xce, 0xe3, - 0xbe, 0xc7, 0xce, 0xe3, 0xbe, 0xca, 0xce, 0xe3, 0xbf, 0xc7, 0xce, 0xe3, - 0xbf, 0xca, 0xce, 0xe3, 0xbf, 0xc7, 0xce, 0xe3, 0xc0, 0xca, 0xce, 0xe3, - 0xc0, 0xc7, 0xce, 0xe3, 0xc0, 0xca, 0xce, 0xe3, 0xc1, 0xc7, 0xce, 0xe3, - 0xc1, 0xca, 0xce, 0xe3, 0xc1, 0xc7, 0xce, 0xe3, 0xc1, 0xca, 0xce, 0xe3, - 0xc2, 0xc7, 0xce, 0xe3, 0xc2, 0xca, 0xce, 0xe3, 0xc2, 0xc7, 0xce, 0xe3, - 0xc3, 0xca, 0xce, 0xe3, 0xc3, 0xc7, 0xce, 0xe3, 0xc3, 0xca, 0xce, 0xe3, - 0xc4, 0xc7, 0xcf, 0xe3, 0xc4, 0xc5, 0xce, 0xe3, 0xc4, 0xc7, 0xcf, 0xe3, - 0xc5, 0xc5, 0xce, 0xe3, 0xc5, 0xc7, 0xcf, 0xe3, 0xc5, 0xc5, 0xce, 0xe3, - 0xc6, 0xc7, 0xcf, 0xe3, 0xc6, 0xc5, 0xce, 0xe3, 0xc6, 0xc7, 0xcf, 0xe3, - 0xc6, 0xc5, 0xce, 0xe3, 0xc7, 0xc7, 0xcf, 0xe3, 0xc7, 0xc5, 0xce, 0xe3, - 0xc7, 0xc7, 0xcf, 0xe3, 0xc8, 0xc5, 0xce, 0xe3, 0xc8, 0xc7, 0xcf, 0xe3, - 0xc8, 0xc5, 0xce, 0xe3, 0xc9, 0xc7, 0xcf, 0xe3, 0xc9, 0xc5, 0xce, 0xe3, - 0xc9, 0xc7, 0xcf, 0xe3, 0xc9, 0xc5, 0xce, 0xe3, 0xca, 0xc7, 0xcf, 0xe3, - 0xca, 0xc5, 0xce, 0xe3, 0xca, 0xc7, 0xcf, 0xe3, 0xcb, 0xc5, 0xce, 0xe3, - 0xcb, 0xc7, 0xcf, 0xe3, 0xcb, 0xc5, 0xce, 0xe3, 0xcc, 0xc7, 0xcf, 0xe3, - 0xcc, 0xc5, 0xce, 0xe3, 0xcc, 0xc7, 0xcf, 0xe3, 0xcc, 0xc5, 0xcf, 0xe3, - 0xcd, 0xc4, 0xcf, 0xe3, 0xcd, 0xc5, 0xcf, 0xe3, 0xcd, 0xc4, 0xcf, 0xe3, - 0xce, 0xc5, 0xcf, 0xe3, 0xce, 0xc4, 0xcf, 0xe3, 0xce, 0xc5, 0xcf, 0xe3, - 0xce, 0xc4, 0xcf, 0xe3, 0xcf, 0xc4, 0xcf, 0xe3, 0xce, 0xc4, 0xcf, 0xe3, - 0xcf, 0xc4, 0xd0, 0xe3, 0xce, 0xc4, 0xd0, 0xe3, 0xcf, 0xc4, 0xd0, 0xe3, - 0xce, 0xc4, 0xd0, 0xe3, 0xcf, 0xc4, 0xd1, 0xe3, 0xce, 0xc4, 0xd1, 0xe3, - 0xcf, 0xc4, 0xd1, 0xe2, 0xcf, 0xc4, 0xd2, 0xe3, 0xcf, 0xc4, 0xd2, 0xe2, - 0xcf, 0xc4, 0xd2, 0xe3, 0xcf, 0xc4, 0xd2, 0xe2, 0xcf, 0xc4, 0xd3, 0xe3, - 0xcf, 0xc4, 0xd3, 0xe2, 0xcf, 0xc4, 0xd3, 0xe3, 0xcf, 0xc4, 0xd4, 0xe2, - 0xcf, 0xc4, 0xd4, 0xe3, 0xcf, 0xc4, 0xd4, 0xe2, 0xcf, 0xc4, 0xd4, 0xe3, - 0xcf, 0xc4, 0xd5, 0xe2, 0xcf, 0xc4, 0xd5, 0xe3, 0xcf, 0xc4, 0xd5, 0xe2, - 0xcf, 0xc4, 0xd6, 0xe3, 0xcf, 0xc4, 0xd6, 0xe2, 0xcf, 0xc4, 0xd6, 0xe3, - 0xcf, 0xc4, 0xd6, 0xe2, 0xcf, 0xc4, 0xd7, 0xe3, 0xcf, 0xc4, 0xd7, 0xe2, - 0xcf, 0xc4, 0xd7, 0xe3, 0xcf, 0xc4, 0xd7, 0xe2, 0xcf, 0xc4, 0xd8, 0xe3, - 0xcf, 0xc4, 0xd8, 0xe2, 0xcf, 0xc4, 0xd8, 0xe3, 0xcf, 0xc4, 0xd9, 0xe2, - 0xcf, 0xc4, 0xd9, 0xe3, 0xcf, 0xc4, 0xd9, 0xe2, 0xcf, 0xc4, 0xd9, 0xe0, - 0xcf, 0xc4, 0xda, 0xe2, 0xcf, 0xc4, 0xda, 0xe0, 0xcf, 0xc4, 0xda, 0xe2, - 0xcf, 0xc4, 0xda, 0xe0, 0xcf, 0xc4, 0xdb, 0xe2, 0xcf, 0xc4, 0xdb, 0xe0, - 0xcf, 0xc4, 0xdb, 0xe2, 0xcf, 0xc4, 0xdb, 0xe6, 0xe7, 0xc4, 0xdc, 0xe5, - 0xe7, 0xc4, 0xdc, 0xe6, 0xe7, 0xc4, 0xdc, 0xe5, 0xe7, 0xc4, 0xdd, 0xe6, - 0xe7, 0xc4, 0xdd, 0xe5, 0xe7, 0xc4, 0xdd, 0xe6, 0xe7, 0xc4, 0xdd, 0xe5, - 0xe7, 0xc4, 0xde, 0xe6, 0xe7, 0xc4, 0xde, 0xe5, 0xe7, 0xc4, 0xde, 0xe6, - 0xe7, 0xc4, 0xde, 0xe5, 0xe7, 0xc4, 0xdf, 0xe6, 0xe7, 0xc4, 0xdf, 0xe5, - 0xe7, 0xc4, 0xdf, 0xe6, 0xe7, 0xc4, 0xdf, 0xe5, 0xe7, 0xc4, 0xe0, 0xe6, - 0xe7, 0xc4, 0xe0, 0xe5, 0xe7, 0xc4, 0xe0, 0xe6, 0xe7, 0xc4, 0xe1, 0xe5, - 0xe7, 0xc4, 0xe1, 0xe6, 0xe7, 0xc4, 0xe1, 0xe5, 0xe7, 0xc4, 0xe1, 0xe3, - 0xe7, 0xc4, 0xe2, 0xe5, 0xe7, 0xc4, 0xe2, 0xe3, 0xe7, 0xc4, 0xe2, 0xe5, - 0xe7, 0xc4, 0xe2, 0xe3, 0xe7, 0xc4, 0xe3, 0xe5, 0xe7, 0xc4, 0xe3, 0xe3, - 0xe7, 0xc4, 0xe3, 0xe5, 0xe7, 0xc4, 0xe3, 0xe3, 0xe7, 0xc4, 0xe4, 0xe5, - 0xe7, 0xc4, 0xe4, 0xe3, 0xe7, 0xc4, 0xe4, 0xe5, 0xe7, 0xc4, 0xe4, 0xe3, - 0xe7, 0xc4, 0xe5, 0xe5, 0xe7, 0xc4, 0xe5, 0xe3, 0xe7, 0xc4, 0xe5, 0xe5, - 0xe7, 0xc4, 0xe5, 0xe3, 0xe7, 0xc4, 0xe6, 0xe3, 0xe8, 0xc4, 0xe6, 0xe3, - 0xe7, 0xc4, 0xe6, 0xe3, 0xe8, 0xc4, 0xe6, 0xe3, 0xe7, 0xc4, 0xe7, 0xe3, - 0xe8, 0xc4, 0xe7, 0xe3, 0xe7, 0xc4, 0xe7, 0xe3, 0xe8, 0xc4, 0xe7, 0xe3, - 0xe7, 0xc3, 0xe7, 0xe3, 0xe8, 0xc4, 0xe7, 0xe3, 0xe8, 0xc3, 0xe7, 0xe3, - 0xe8, 0xc4, 0xe7, 0xe3, 0xe8, 0xc3, 0xe7, 0xe3, 0xe9, 0xc4, 0xe7, 0xe3, - 0xe9, 0xc3, 0xe7, 0xe3, 0xe9, 0xc4, 0xeb, 0xe3, 0xe9, 0xc4, 0xeb, 0xe3, - 0xea, 0xc5, 0xeb, 0xe3, 0xea, 0xc4, 0xeb, 0xe3, 0xea, 0xc5, 0xeb, 0xe3, - 0xea, 0xc4, 0xeb, 0xe3, 0xeb, 0xc5, 0xeb, 0xe3, 0xeb, 0xc4, 0xec, 0xe3, - 0xeb, 0xc4, 0xeb, 0xe3, 0xeb, 0xc4, 0xec, 0xe3, 0xeb, 0xc4, 0xec, 0xe3, - 0xeb, 0xc4, 0xec, 0xe3, 0xeb, 0xc4, 0xec, 0xe3, 0xeb, 0xc4, 0xec, 0xe3, - 0xeb, 0xc4, 0xed, 0xe3, 0xeb, 0xc4, 0xed, 0xe3, 0xeb, 0xc4, 0xed, 0xe3, - 0xeb, 0xc4, 0xed, 0xe3, 0xeb, 0xc4, 0xee, 0xe3, 0xeb, 0xc4, 0xee, 0xe3, - 0xeb, 0xc4, 0xee, 0xe3, 0xeb, 0xc4, 0xee, 0xe3, 0xeb, 0xc4, 0xef, 0xe3, - 0xeb, 0xc4, 0xef, 0xe3, 0xeb, 0xc4, 0xef, 0xe1, 0xeb, 0xc4, 0xef, 0xe3, - 0xeb, 0xc4, 0xf0, 0xe1, 0xeb, 0xc4, 0xf0, 0xe3, 0xeb, 0xc4, 0xf0, 0xe1, - 0xeb, 0xc4, 0xf0, 0xe3, 0xeb, 0xc4, 0xf1, 0xe1, 0xeb, 0xc4, 0xf1, 0xe3, - 0xeb, 0xc4, 0xf1, 0xe1, 0xeb, 0xc4, 0xf1, 0xe3, 0xeb, 0xc4, 0xf2, 0xe1, - 0xeb, 0xc4, 0xf2, 0xe3, 0xeb, 0xc4, 0xf2, 0xe1, 0xeb, 0xc4, 0xf2, 0xe3, - 0xeb, 0xc4, 0xf2, 0xe1, 0xeb, 0xc4, 0xf3, 0xe3, 0xeb, 0xc4, 0xf3, 0xe1, - 0xeb, 0xc4, 0xf3, 0xe3, 0xeb, 0xc4, 0xf3, 0xe1, 0xeb, 0xc4, 0xf4, 0xe3, - 0xeb, 0xc4, 0xf4, 0xe1, 0xeb, 0xc4, 0xf4, 0xec, 0xf1, 0xc4, 0xf4, 0xec, - 0xf0, 0xc4, 0xf5, 0xec, 0xf1, 0xc4, 0xf5, 0xec, 0xf1, 0xc4, 0xf5, 0xec, - 0xf1, 0xc4, 0xf5, 0xec, 0xf1, 0xc4, 0xf5, 0xec, 0xf1, 0xc4, 0xf6, 0xec, - 0xf1, 0xc4, 0xf6, 0xec, 0xf1, 0xc4, 0xf6, 0xec, 0xf1, 0xc4, 0xf6, 0xec, - 0xf1, 0xc4, 0xf7, 0xec, 0xf1, 0xc4, 0xf7, 0xec, 0xf1, 0xc4, 0xf7, 0xec, - 0xf1, 0xc4, 0xf7, 0xec, 0xf1, 0xc4, 0xf8, 0xec, 0xf1, 0xc4, 0xf8, 0xec, - 0xf1, 0xc4, 0xf8, 0xec, 0xf1, 0xc4, 0xf8, 0xec, 0xf1, 0xc4, 0xf8, 0xec, - 0xf1, 0xc4, 0xf9, 0xec, 0xf1, 0xc4, 0xf9, 0xec, 0xf1, 0xc4, 0xf9, 0xec, - 0xf1, 0xc4, 0xf9, 0xec, 0xf1, 0xc4, 0xfa, 0xec, 0xf1, 0xc4, 0xfa, 0xec, - 0xf1, 0xc4, 0xfa, 0xec, 0xf1, 0xc4, 0xfa, 0xec, 0xf1, 0xc4, 0xfa, 0xec, - 0xf1, 0xc4, 0xfb, 0xec, 0xf1, 0xc4, 0xfb, 0xec, 0xf1, 0xc4, 0xfb, 0xec, - 0xf1, 0xc4, 0xfb, 0xec, 0xf1, 0xc4, 0xfc, 0xec, 0xf1, 0xc4, 0xfc, 0xec, - 0xf1, 0xc4, 0xfc, 0xec, 0xf1, 0xc4, 0xfc, 0xec, 0xf1, 0xc4, 0xfc, 0xec, - 0xf1, 0xc4, 0xfd, 0xec, 0xf1, 0xc4, 0xfd, 0xec, 0xf1, 0xc4, 0xfd, 0xec, - 0xf1, 0xc4, 0xfd, 0xec, 0xf1, 0xc4, 0xfe, 0xec, 0xf1, 0xc4, 0xfe, 0xec, - 0xf1, 0xc4, 0xfe, 0xec, 0xf1, 0xc4, 0xfe, 0xec, 0xf1, 0xc4, 0xfe, 0xec, - 0xf1, 0xc4, 0xff, 0xec, 0xf1, 0xc4, 0xff, 0xec, 0xf1, 0xc4, 0x03, 0xe9, - 0x86, 0xc5, 0x0a, 0xe8, 0x87, 0xc5, 0x0f, 0xe9, 0x86, 0xc5, 0x14, 0xe8, - 0x87, 0xc5, 0x17, 0xe9, 0x86, 0xc5, 0x1b, 0xe8, 0x87, 0xc5, 0x1e, 0xe9, - 0x86, 0xc5, 0x20, 0xe8, 0x87, 0xc5, 0x23, 0xe9, 0x86, 0xc5, 0x25, 0xe8, - 0x87, 0xc5, 0x27, 0xe9, 0x86, 0xc5, 0x29, 0xe8, 0x87, 0xc5, 0x2b, 0xe9, - 0x86, 0xc5, 0x2d, 0xe8, 0x87, 0xc5, 0x2f, 0xe9, 0x86, 0xc5, 0x31, 0xe8, - 0x87, 0xc5, 0x32, 0xe9, 0x86, 0xc5, 0x34, 0xe8, 0x87, 0xc5, 0x35, 0xe9, - 0x86, 0xc5, 0x37, 0xe8, 0x87, 0xc5, 0x38, 0xe6, 0x87, 0xc5, 0x3a, 0xe8, - 0x87, 0xc5, 0x3b, 0xe6, 0x87, 0xc5, 0x3c, 0xe8, 0x87, 0xc5, 0x3e, 0xe6, - 0x87, 0xc5, 0x3f, 0xe8, 0x87, 0xc5, 0x40, 0xe6, 0x87, 0xc5, 0x42, 0xe8, - 0x87, 0xc5, 0x43, 0xe6, 0x87, 0xc5, 0x44, 0xe8, 0x87, 0xc5, 0x45, 0xe6, - 0x87, 0xc5, 0x46, 0xe8, 0x87, 0xc5, 0x47, 0xe6, 0x87, 0xc5, 0x48, 0xe8, - 0x87, 0xc5, 0x49, 0xe6, 0x87, 0xc5, 0x4a, 0xe8, 0x87, 0xc5, 0x4b, 0xe6, - 0x87, 0xc5, 0x4c, 0xe8, 0x87, 0xc5, 0x4d, 0xe6, 0x87, 0xc5, 0x4e, 0xe8, - 0x87, 0xc5, 0x4f, 0xe6, 0x87, 0xc5, 0x50, 0xe8, 0x87, 0xc5, 0x51, 0xe6, - 0x87, 0xc5, 0x52, 0xe8, 0x87, 0xc5, 0x53, 0xe6, 0x87, 0xc5, 0x54, 0xe8, - 0x87, 0xc5, 0x55, 0xe6, 0x87, 0xc5, 0x56, 0xe8, 0x87, 0xc5, 0x57, 0xe6, - 0x87, 0xc5, 0x58, 0xe8, 0x87, 0xc5, 0x58, 0xe6, 0x87, 0xc5, 0x59, 0xe8, - 0x87, 0xc5, 0x5a, 0xe6, 0x87, 0xc5, 0x5b, 0xe8, 0x87, 0xc5, 0x5c, 0xe6, - 0x87, 0xc5, 0x5d, 0xe8, 0x87, 0xc5, 0x5d, 0xe6, 0x87, 0xc5, 0x5e, 0xe8, - 0x87, 0xc5, 0x5f, 0xe6, 0x87, 0xc5, 0x60, 0xe8, 0x87, 0xc5, 0x60, 0xe6, - 0x87, 0xc5, 0x61, 0xe4, 0x88, 0xc5, 0x62, 0xe6, 0x87, 0xc5, 0x63, 0xe4, - 0x88, 0xc5, 0x63, 0xe6, 0x87, 0xc5, 0x64, 0xe4, 0x88, 0xc5, 0x65, 0xe6, - 0x87, 0xc5, 0x66, 0xe4, 0x88, 0xc5, 0x66, 0xe6, 0x87, 0xc5, 0x67, 0xe4, - 0x88, 0xc5, 0x68, 0xe6, 0x87, 0xc5, 0x68, 0xe4, 0x88, 0xc5, 0x69, 0xe6, - 0x87, 0xc5, 0x6a, 0xe4, 0x88, 0xc5, 0x6a, 0xe6, 0x87, 0xc5, 0x6b, 0xe4, - 0x88, 0xc5, 0x6c, 0xe6, 0x87, 0xc5, 0x6c, 0xe4, 0x88, 0xc5, 0x6d, 0xe6, - 0x87, 0xc5, 0x6e, 0xe4, 0x88, 0xc5, 0x6e, 0xe6, 0x87, 0xc5, 0x6f, 0xe4, - 0x88, 0xc5, 0x70, 0xe6, 0x87, 0xc5, 0x70, 0xe4, 0x88, 0xc5, 0x71, 0xe6, - 0x87, 0xc5, 0x72, 0xe4, 0x88, 0xc5, 0x72, 0xe6, 0x87, 0xc5, 0x73, 0xe4, - 0x88, 0xc5, 0x73, 0xe6, 0x87, 0xc5, 0x74, 0xe4, 0x88, 0xc5, 0x75, 0xe6, - 0x87, 0xc5, 0x75, 0xe4, 0x88, 0xc5, 0x76, 0xe6, 0x87, 0xc5, 0x76, 0xe4, - 0x88, 0xc5, 0x77, 0xe6, 0x87, 0xc5, 0x78, 0xe4, 0x88, 0xc5, 0x78, 0xe6, - 0x87, 0xc5, 0x79, 0xe4, 0x88, 0xc5, 0x79, 0xe6, 0x87, 0xc5, 0x7a, 0xe4, - 0x88, 0xc5, 0x7a, 0xe6, 0x87, 0xc5, 0x7b, 0xe4, 0x88, 0xc5, 0x7c, 0xe6, - 0x87, 0xc5, 0x7c, 0xe4, 0x88, 0xc5, 0x7d, 0xe6, 0x87, 0xc5, 0x7d, 0xe4, - 0x88, 0xc5, 0x7e, 0xe6, 0x87, 0xc5, 0x7e, 0xe4, 0x88, 0xc5, 0x7f, 0xe6, - 0x87, 0xc5, 0x7f, 0xe4, 0x88, 0xc5, 0x80, 0xe4, 0x88, 0xc5, 0x81, 0xe4, - 0x88, 0xc5, 0x81, 0xe4, 0x88, 0xc5, 0x82, 0xe4, 0x88, 0xc5, 0x82, 0xe4, - 0x88, 0xc5, 0x83, 0xe4, 0x88, 0xc5, 0x83, 0xe4, 0x88, 0xc5, 0x84, 0xe4, - 0x88, 0xc5, 0x84, 0xe4, 0x88, 0xc5, 0x85, 0xe4, 0x88, 0xc5, 0x85, 0xe4, - 0x88, 0xc5, 0x86, 0xe4, 0x88, 0xc5, 0x86, 0xe4, 0x88, 0xc5, 0x87, 0xe4, - 0x88, 0xc5, 0x87, 0xe4, 0x88, 0xc5, 0x88, 0xe4, 0x88, 0xc5, 0x87, 0xe4, - 0x88, 0xc5, 0x88, 0xe4, 0x89, 0xc5, 0x87, 0xe4, 0x89, 0xc5, 0x88, 0xe4, - 0x8a, 0xc5, 0x87, 0xe4, 0x8a, 0xc5, 0x88, 0xe4, 0x8b, 0xc5, 0x87, 0xe4, - 0x8b, 0xc5, 0x88, 0xe4, 0x8c, 0xc5, 0x88, 0xe4, 0x8c, 0xc2, 0x88, 0xe4, - 0x8d, 0xc5, 0x88, 0xe4, 0x8d, 0xc2, 0x88, 0xe4, 0x8e, 0xc5, 0x88, 0xe4, - 0x8e, 0xc2, 0x88, 0xe4, 0x8e, 0xc5, 0x88, 0xe4, 0x8f, 0xc2, 0x88, 0xe4, - 0x8f, 0xc5, 0x88, 0xe4, 0x90, 0xc2, 0x88, 0xe4, 0x90, 0xc5, 0x88, 0xe4, - 0x91, 0xc2, 0x88, 0xe4, 0x91, 0xc5, 0x88, 0xe4, 0x92, 0xc2, 0x88, 0xe4, - 0x92, 0xc5, 0x88, 0xe4, 0x93, 0xc2, 0x88, 0xe4, 0x93, 0xc5, 0x88, 0xe4, - 0x94, 0xc2, 0x88, 0xe4, 0x94, 0xc5, 0x88, 0xe4, 0x94, 0xc2, 0x88, 0xe4, - 0x95, 0xc5, 0x88, 0xe4, 0x95, 0xc2, 0x88, 0xe4, 0x96, 0xc5, 0x88, 0xe4, - 0x96, 0xc2, 0x88, 0xe4, 0x97, 0xc5, 0x88, 0xe4, 0x97, 0xc2, 0x88, 0xe4, - 0x98, 0xc5, 0x88, 0xe4, 0x98, 0xc2, 0x88, 0xe4, 0x98, 0xc5, 0x88, 0xe4, - 0x99, 0xc2, 0x88, 0xe4, 0x99, 0xc5, 0x88, 0xe4, 0x9a, 0xc2, 0x88, 0xe4, - 0x9a, 0xc5, 0x88, 0xe4, 0x9a, 0xc2, 0x88, 0xe4, 0x9b, 0xc5, 0x88, 0xe4, - 0x9b, 0xc2, 0x88, 0xe4, 0x9c, 0xc5, 0x88, 0xe4, 0x9c, 0xc2, 0x88, 0xe4, - 0x9d, 0xc5, 0x88, 0xe4, 0x9d, 0xc2, 0x88, 0xe4, 0x9d, 0xc5, 0x88, 0xe4, - 0x9e, 0xc2, 0x89, 0xe4, 0x9e, 0xbe, 0x88, 0xe4, 0x9f, 0xc2, 0x89, 0xe4, - 0x9f, 0xbe, 0x88, 0xe4, 0x9f, 0xc2, 0x89, 0xe4, 0xa0, 0xbe, 0x88, 0xe4, - 0xa0, 0xc2, 0x89, 0xe4, 0xa1, 0xbe, 0x88, 0xe4, 0xa1, 0xc2, 0x89, 0xe4, - 0xa1, 0xbe, 0x88, 0xe4, 0xa2, 0xc2, 0x89, 0xe4, 0xa2, 0xbe, 0x88, 0xe4, - 0xa3, 0xc2, 0x89, 0xe4, 0xa3, 0xbe, 0x88, 0xe4, 0xa3, 0xc2, 0x89, 0xe4, - 0xa4, 0xbe, 0x88, 0xe4, 0xa4, 0xc2, 0x89, 0xe4, 0xa5, 0xbe, 0x88, 0xe4, - 0xa5, 0xc2, 0x89, 0xe4, 0xa5, 0xbe, 0x88, 0xe4, 0xa6, 0xc2, 0x89, 0xe4, - 0xa6, 0xbe, 0x88, 0xe4, 0xa6, 0xc2, 0x89, 0xe4, 0xa7, 0xbe, 0x88, 0xe4, - 0xa7, 0xc2, 0x89, 0xe4, 0xa8, 0xbe, 0x88, 0xe4, 0xa8, 0xc2, 0x89, 0xe4, - 0xa8, 0xbe, 0x88, 0xe4, 0xa9, 0xc2, 0x89, 0xe4, 0xa9, 0xbe, 0x88, 0xe4, - 0xaa, 0xc2, 0x89, 0xe4, 0xaa, 0xbe, 0x88, 0xe4, 0xaa, 0xc2, 0x89, 0xe4, - 0xab, 0xbe, 0x88, 0xe4, 0xab, 0xc2, 0x89, 0xe4, 0xab, 0xbe, 0x88, 0xe4, - 0xac, 0xc2, 0xa8, 0xe4, 0xac, 0xef, 0xa8, 0xe4, 0xac, 0xef, 0xa8, 0xe4, - 0xad, 0xef, 0xa8, 0xe4, 0xad, 0xef, 0xa8, 0xe4, 0xae, 0xef, 0xa8, 0xe4, - 0xae, 0xef, 0xa8, 0xe4, 0xae, 0xef, 0xa8, 0xe4, 0xaf, 0xef, 0xa8, 0xe4, - 0xaf, 0xef, 0xa8, 0xe4, 0xaf, 0xef, 0xa8, 0xe4, 0xb0, 0xef, 0xac, 0xe4, - 0xb0, 0xf0, 0xac, 0xe4, 0xb0, 0xf0, 0xac, 0xe4, 0xb1, 0xf0, 0xac, 0xe4, - 0xb1, 0xf0, 0xac, 0xe4, 0xb2, 0xf0, 0xac, 0xe4, 0xb2, 0xf0, 0xac, 0xe4, - 0xb2, 0xf0, 0xce, 0xe4, 0xb3, 0xcd, 0xce, 0xe4, 0xb3, 0xd0, 0xce, 0xe4, - 0xb3, 0xcd, 0xce, 0xe4, 0xb4, 0xcb, 0xce, 0xe4, 0xb4, 0xcd, 0xce, 0xe4, - 0xb4, 0xcb, 0xce, 0xe4, 0xb5, 0xcd, 0xce, 0xe4, 0xb5, 0xcb, 0xce, 0xe4, - 0xb5, 0xcd, 0xce, 0xe4, 0xb6, 0xcb, 0xce, 0xe4, 0xb6, 0xcd, 0xce, 0xe4, - 0xb6, 0xcb, 0xce, 0xe4, 0xb7, 0xcd, 0xce, 0xe4, 0xb7, 0xcb, 0xce, 0xe4, - 0xb7, 0xcd, 0xce, 0xe4, 0xb8, 0xcb, 0xce, 0xe4, 0xb8, 0xcd, 0xce, 0xe4, - 0xb8, 0xcb, 0xce, 0xe4, 0xb9, 0xcd, 0xce, 0xe4, 0xb9, 0xcb, 0xce, 0xe4, - 0xb9, 0xcd, 0xce, 0xe4, 0xba, 0xcb, 0xce, 0xe4, 0xba, 0xcd, 0xce, 0xe4, - 0xba, 0xcb, 0xce, 0xe4, 0xbb, 0xcd, 0xce, 0xe4, 0xbb, 0xcb, 0xce, 0xe4, - 0xbb, 0xcd, 0xce, 0xe4, 0xbc, 0xcb, 0xce, 0xe4, 0xbc, 0xcd, 0xce, 0xe4, - 0xbc, 0xcb, 0xce, 0xe4, 0xbd, 0xcd, 0xce, 0xe4, 0xbd, 0xcb, 0xce, 0xe4, - 0xbd, 0xc8, 0xce, 0xe4, 0xbe, 0xcb, 0xce, 0xe4, 0xbe, 0xc8, 0xce, 0xe4, - 0xbe, 0xcb, 0xce, 0xe4, 0xbf, 0xc8, 0xce, 0xe4, 0xbf, 0xcb, 0xce, 0xe4, - 0xbf, 0xc8, 0xce, 0xe4, 0xc0, 0xcb, 0xce, 0xe4, 0xc0, 0xc8, 0xce, 0xe4, - 0xc0, 0xcb, 0xce, 0xe4, 0xc1, 0xc8, 0xce, 0xe4, 0xc1, 0xcb, 0xce, 0xe4, - 0xc1, 0xc8, 0xce, 0xe4, 0xc1, 0xcb, 0xce, 0xe4, 0xc2, 0xc8, 0xce, 0xe4, - 0xc2, 0xcb, 0xce, 0xe4, 0xc2, 0xc8, 0xce, 0xe4, 0xc3, 0xcb, 0xce, 0xe4, - 0xc3, 0xc8, 0xce, 0xe4, 0xc3, 0xcb, 0xce, 0xe4, 0xc4, 0xc8, 0xcf, 0xe4, - 0xc4, 0xc5, 0xce, 0xe4, 0xc4, 0xc8, 0xcf, 0xe4, 0xc5, 0xc5, 0xce, 0xe4, - 0xc5, 0xc8, 0xcf, 0xe4, 0xc5, 0xc5, 0xce, 0xe4, 0xc6, 0xc8, 0xcf, 0xe4, - 0xc6, 0xc5, 0xce, 0xe4, 0xc6, 0xc8, 0xcf, 0xe4, 0xc6, 0xc5, 0xce, 0xe4, - 0xc7, 0xc8, 0xcf, 0xe4, 0xc7, 0xc5, 0xce, 0xe4, 0xc7, 0xc8, 0xcf, 0xe4, - 0xc8, 0xc5, 0xce, 0xe4, 0xc8, 0xc8, 0xcf, 0xe4, 0xc8, 0xc5, 0xce, 0xe4, - 0xc9, 0xc8, 0xcf, 0xe4, 0xc9, 0xc5, 0xce, 0xe4, 0xc9, 0xc8, 0xcf, 0xe4, - 0xc9, 0xc5, 0xce, 0xe4, 0xca, 0xc8, 0xcf, 0xe4, 0xca, 0xc5, 0xce, 0xe4, - 0xca, 0xc8, 0xcf, 0xe4, 0xcb, 0xc5, 0xce, 0xe4, 0xcb, 0xc8, 0xcf, 0xe4, - 0xcb, 0xc5, 0xce, 0xe4, 0xcc, 0xc8, 0xcf, 0xe4, 0xcc, 0xc5, 0xce, 0xe4, - 0xcc, 0xc8, 0xcf, 0xe4, 0xcc, 0xc5, 0xcf, 0xe4, 0xcd, 0xc5, 0xcf, 0xe4, - 0xcd, 0xc5, 0xcf, 0xe4, 0xcd, 0xc5, 0xcf, 0xe4, 0xce, 0xc5, 0xcf, 0xe4, - 0xce, 0xc5, 0xcf, 0xe4, 0xce, 0xc5, 0xcf, 0xe4, 0xce, 0xc5, 0xcf, 0xe3, - 0xcf, 0xc5, 0xcf, 0xe4, 0xce, 0xc5, 0xcf, 0xe3, 0xcf, 0xc5, 0xd0, 0xe4, - 0xce, 0xc5, 0xd0, 0xe3, 0xcf, 0xc5, 0xd0, 0xe4, 0xce, 0xc5, 0xd0, 0xe3, - 0xcf, 0xc5, 0xd1, 0xe4, 0xce, 0xc5, 0xd1, 0xe3, 0xcf, 0xc5, 0xd1, 0xe2, - 0xcf, 0xc5, 0xd2, 0xe3, 0xcf, 0xc5, 0xd2, 0xe2, 0xcf, 0xc5, 0xd2, 0xe3, - 0xcf, 0xc5, 0xd2, 0xe2, 0xcf, 0xc5, 0xd3, 0xe3, 0xcf, 0xc5, 0xd3, 0xe2, - 0xcf, 0xc5, 0xd3, 0xe3, 0xcf, 0xc5, 0xd4, 0xe2, 0xcf, 0xc5, 0xd4, 0xe3, - 0xcf, 0xc5, 0xd4, 0xe2, 0xcf, 0xc5, 0xd4, 0xe3, 0xcf, 0xc5, 0xd5, 0xe2, - 0xcf, 0xc5, 0xd5, 0xe3, 0xcf, 0xc5, 0xd5, 0xe2, 0xcf, 0xc5, 0xd6, 0xe3, - 0xcf, 0xc5, 0xd6, 0xe2, 0xcf, 0xc5, 0xd6, 0xe3, 0xcf, 0xc5, 0xd6, 0xe2, - 0xcf, 0xc5, 0xd7, 0xe3, 0xcf, 0xc5, 0xd7, 0xe2, 0xcf, 0xc5, 0xd7, 0xe3, - 0xcf, 0xc5, 0xd7, 0xe2, 0xcf, 0xc5, 0xd8, 0xe3, 0xcf, 0xc5, 0xd8, 0xe2, - 0xcf, 0xc5, 0xd8, 0xe3, 0xcf, 0xc5, 0xd9, 0xe2, 0xcf, 0xc5, 0xd9, 0xe3, - 0xcf, 0xc5, 0xd9, 0xe2, 0xcf, 0xc5, 0xd9, 0xe1, 0xcf, 0xc5, 0xda, 0xe2, - 0xcf, 0xc5, 0xda, 0xe1, 0xcf, 0xc5, 0xda, 0xe2, 0xcf, 0xc5, 0xda, 0xe1, - 0xcf, 0xc5, 0xdb, 0xe2, 0xcf, 0xc5, 0xdb, 0xe1, 0xcf, 0xc5, 0xdb, 0xe2, - 0xcf, 0xc5, 0xdb, 0xe6, 0xe7, 0xc5, 0xdc, 0xe5, 0xe7, 0xc5, 0xdc, 0xe6, - 0xe7, 0xc5, 0xdc, 0xe5, 0xe7, 0xc5, 0xdd, 0xe6, 0xe7, 0xc5, 0xdd, 0xe5, - 0xe7, 0xc5, 0xdd, 0xe6, 0xe7, 0xc5, 0xdd, 0xe5, 0xe7, 0xc5, 0xde, 0xe6, - 0xe7, 0xc5, 0xde, 0xe5, 0xe7, 0xc5, 0xde, 0xe6, 0xe7, 0xc5, 0xde, 0xe5, - 0xe7, 0xc5, 0xdf, 0xe6, 0xe7, 0xc5, 0xdf, 0xe5, 0xe7, 0xc5, 0xdf, 0xe6, - 0xe7, 0xc5, 0xdf, 0xe5, 0xe7, 0xc5, 0xe0, 0xe6, 0xe7, 0xc5, 0xe0, 0xe5, - 0xe7, 0xc5, 0xe0, 0xe6, 0xe7, 0xc5, 0xe1, 0xe5, 0xe7, 0xc5, 0xe1, 0xe6, - 0xe7, 0xc5, 0xe1, 0xe5, 0xe7, 0xc5, 0xe1, 0xe4, 0xe7, 0xc5, 0xe2, 0xe5, - 0xe7, 0xc5, 0xe2, 0xe4, 0xe7, 0xc5, 0xe2, 0xe5, 0xe7, 0xc5, 0xe2, 0xe4, - 0xe7, 0xc5, 0xe3, 0xe5, 0xe7, 0xc5, 0xe3, 0xe4, 0xe7, 0xc5, 0xe3, 0xe5, - 0xe7, 0xc5, 0xe3, 0xe4, 0xe7, 0xc5, 0xe4, 0xe5, 0xe7, 0xc5, 0xe4, 0xe4, - 0xe7, 0xc5, 0xe4, 0xe5, 0xe7, 0xc5, 0xe4, 0xe4, 0xe7, 0xc5, 0xe5, 0xe5, - 0xe7, 0xc5, 0xe5, 0xe4, 0xe7, 0xc5, 0xe5, 0xe5, 0xe7, 0xc5, 0xe5, 0xe4, - 0xe7, 0xc5, 0xe6, 0xe5, 0xe7, 0xc5, 0xe6, 0xe4, 0xe7, 0xc5, 0xe6, 0xe5, - 0xe7, 0xc5, 0xe6, 0xe4, 0xe7, 0xc5, 0xe7, 0xe4, 0xe8, 0xc5, 0xe7, 0xe4, - 0xe7, 0xc5, 0xe7, 0xe4, 0xe8, 0xc5, 0xe7, 0xe4, 0xe7, 0xc5, 0xe7, 0xe4, - 0xe8, 0xc5, 0xe7, 0xe4, 0xe8, 0xc5, 0xe7, 0xe4, 0xe8, 0xc5, 0xe7, 0xe4, - 0xe8, 0xc3, 0xe7, 0xe4, 0xe9, 0xc5, 0xe7, 0xe4, 0xe9, 0xc3, 0xe7, 0xe4, - 0xe9, 0xc5, 0xeb, 0xe4, 0xe9, 0xc5, 0xeb, 0xe4, 0xea, 0xc5, 0xeb, 0xe4, - 0xea, 0xc5, 0xeb, 0xe4, 0xea, 0xc5, 0xeb, 0xe4, 0xea, 0xc5, 0xeb, 0xe4, - 0xeb, 0xc5, 0xeb, 0xe4, 0xeb, 0xc5, 0xeb, 0xe3, 0xeb, 0xc5, 0xeb, 0xe4, - 0xeb, 0xc5, 0xec, 0xe3, 0xeb, 0xc5, 0xec, 0xe4, 0xeb, 0xc5, 0xec, 0xe3, - 0xeb, 0xc5, 0xec, 0xe4, 0xeb, 0xc5, 0xec, 0xe3, 0xeb, 0xc5, 0xed, 0xe4, - 0xeb, 0xc5, 0xed, 0xe3, 0xeb, 0xc5, 0xed, 0xe4, 0xeb, 0xc5, 0xed, 0xe3, - 0xeb, 0xc5, 0xee, 0xe4, 0xeb, 0xc5, 0xee, 0xe3, 0xeb, 0xc5, 0xee, 0xe4, - 0xeb, 0xc5, 0xee, 0xe3, 0xeb, 0xc5, 0xef, 0xe4, 0xeb, 0xc5, 0xef, 0xe3, - 0xeb, 0xc5, 0xef, 0xe4, 0xeb, 0xc5, 0xef, 0xe3, 0xeb, 0xc5, 0xf0, 0xe4, - 0xeb, 0xc5, 0xf0, 0xe3, 0xeb, 0xc5, 0xf0, 0xe4, 0xeb, 0xc5, 0xf0, 0xe3, - 0xeb, 0xc5, 0xf1, 0xe4, 0xeb, 0xc5, 0xf1, 0xe3, 0xeb, 0xc5, 0xf1, 0xe1, - 0xeb, 0xc5, 0xf1, 0xe3, 0xeb, 0xc5, 0xf2, 0xe1, 0xeb, 0xc5, 0xf2, 0xe3, - 0xeb, 0xc5, 0xf2, 0xe1, 0xeb, 0xc5, 0xf2, 0xe3, 0xeb, 0xc5, 0xf2, 0xe1, - 0xeb, 0xc5, 0xf3, 0xe3, 0xeb, 0xc5, 0xf3, 0xe1, 0xeb, 0xc5, 0xf3, 0xe3, - 0xeb, 0xc5, 0xf3, 0xe1, 0xeb, 0xc5, 0xf4, 0xec, 0xf1, 0xc5, 0xf4, 0xec, - 0xf1, 0xc5, 0xf4, 0xec, 0xf1, 0xc5, 0xf4, 0xec, 0xf1, 0xc5, 0xf5, 0xec, - 0xf1, 0xc5, 0xf5, 0xec, 0xf1, 0xc5, 0xf5, 0xec, 0xf1, 0xc5, 0xf5, 0xec, - 0xf1, 0xc5, 0xf5, 0xec, 0xf1, 0xc5, 0xf6, 0xec, 0xf1, 0xc5, 0xf6, 0xec, - 0xf1, 0xc5, 0xf6, 0xec, 0xf1, 0xc5, 0xf6, 0xec, 0xf1, 0xc5, 0xf7, 0xec, - 0xf1, 0xc5, 0xf7, 0xec, 0xf1, 0xc5, 0xf7, 0xec, 0xf1, 0xc5, 0xf7, 0xec, - 0xf1, 0xc5, 0xf8, 0xec, 0xf1, 0xc5, 0xf8, 0xec, 0xf1, 0xc5, 0xf8, 0xec, - 0xf1, 0xc5, 0xf8, 0xec, 0xf1, 0xc5, 0xf8, 0xec, 0xf1, 0xc5, 0xf9, 0xec, - 0xf1, 0xc5, 0xf9, 0xec, 0xf1, 0xc5, 0xf9, 0xec, 0xf1, 0xc5, 0xf9, 0xec, - 0xf1, 0xc5, 0xfa, 0xec, 0xf1, 0xc5, 0xfa, 0xec, 0xf1, 0xc5, 0xfa, 0xec, - 0xf1, 0xc5, 0xfa, 0xec, 0xf1, 0xc5, 0xfa, 0xec, 0xf1, 0xc5, 0xfb, 0xec, - 0xf1, 0xc5, 0xfb, 0xec, 0xf1, 0xc5, 0xfb, 0xec, 0xf1, 0xc5, 0xfb, 0xec, - 0xf1, 0xc5, 0xfc, 0xec, 0xf1, 0xc5, 0xfc, 0xec, 0xf1, 0xc5, 0xfc, 0xec, - 0xf1, 0xc5, 0xfc, 0xec, 0xf1, 0xc5, 0xfc, 0xec, 0xf1, 0xc5, 0xfd, 0xec, - 0xf1, 0xc5, 0xfd, 0xec, 0xf1, 0xc5, 0xfd, 0xec, 0xf1, 0xc5, 0xfd, 0xec, - 0xf1, 0xc5, 0xfe, 0xec, 0xf1, 0xc5, 0xfe, 0xec, 0xf1, 0xc5, 0xfe, 0xec, - 0xf1, 0xc5, 0xfe, 0xec, 0xf1, 0xc5, 0xfe, 0xec, 0xf1, 0xc5, 0xff, 0xec, - 0xf1, 0xc5, 0xff, 0xec, 0xf1, 0xc5, 0x03, 0xe9, 0x86, 0xc5, 0x0a, 0xe7, - 0x87, 0xc5, 0x0f, 0xe9, 0x86, 0xc5, 0x14, 0xe7, 0x87, 0xc5, 0x17, 0xe9, - 0x86, 0xc5, 0x1b, 0xe7, 0x87, 0xc5, 0x1e, 0xe9, 0x86, 0xc5, 0x20, 0xe7, - 0x87, 0xc5, 0x23, 0xe9, 0x86, 0xc5, 0x25, 0xe7, 0x87, 0xc5, 0x27, 0xe9, - 0x86, 0xc5, 0x29, 0xe7, 0x87, 0xc5, 0x2b, 0xe9, 0x86, 0xc5, 0x2d, 0xe7, - 0x87, 0xc5, 0x2f, 0xe9, 0x86, 0xc5, 0x31, 0xe7, 0x87, 0xc5, 0x32, 0xe9, - 0x86, 0xc5, 0x34, 0xe7, 0x87, 0xc5, 0x35, 0xe9, 0x86, 0xc5, 0x37, 0xe7, - 0x87, 0xc5, 0x38, 0xe9, 0x86, 0xc5, 0x3a, 0xe7, 0x87, 0xc5, 0x3b, 0xe9, - 0x86, 0xc5, 0x3c, 0xe7, 0x87, 0xc5, 0x3e, 0xe9, 0x86, 0xc5, 0x3f, 0xe7, - 0x87, 0xc5, 0x40, 0xe9, 0x86, 0xc5, 0x42, 0xe7, 0x87, 0xc5, 0x43, 0xe9, - 0x86, 0xc5, 0x44, 0xe7, 0x87, 0xc5, 0x45, 0xe9, 0x86, 0xc5, 0x46, 0xe7, - 0x87, 0xc5, 0x47, 0xe9, 0x86, 0xc5, 0x48, 0xe7, 0x87, 0xc5, 0x49, 0xe9, - 0x86, 0xc5, 0x4a, 0xe7, 0x87, 0xc5, 0x4b, 0xe9, 0x86, 0xc5, 0x4c, 0xe7, - 0x87, 0xc5, 0x4d, 0xe9, 0x86, 0xc5, 0x4e, 0xe7, 0x87, 0xc5, 0x4f, 0xe6, - 0x87, 0xc5, 0x50, 0xe7, 0x87, 0xc5, 0x51, 0xe6, 0x87, 0xc5, 0x52, 0xe7, - 0x87, 0xc5, 0x53, 0xe6, 0x87, 0xc5, 0x54, 0xe7, 0x87, 0xc5, 0x55, 0xe6, - 0x87, 0xc5, 0x56, 0xe7, 0x87, 0xc5, 0x57, 0xe6, 0x87, 0xc5, 0x58, 0xe7, - 0x87, 0xc5, 0x58, 0xe6, 0x87, 0xc5, 0x59, 0xe7, 0x87, 0xc5, 0x5a, 0xe6, - 0x87, 0xc5, 0x5b, 0xe7, 0x87, 0xc5, 0x5c, 0xe6, 0x87, 0xc5, 0x5d, 0xe7, - 0x87, 0xc5, 0x5d, 0xe6, 0x87, 0xc5, 0x5e, 0xe7, 0x87, 0xc5, 0x5f, 0xe6, - 0x87, 0xc5, 0x60, 0xe7, 0x87, 0xc5, 0x60, 0xe6, 0x87, 0xc5, 0x61, 0xe7, - 0x87, 0xc5, 0x62, 0xe6, 0x87, 0xc5, 0x63, 0xe7, 0x87, 0xc5, 0x63, 0xe6, - 0x87, 0xc5, 0x64, 0xe7, 0x87, 0xc5, 0x65, 0xe6, 0x87, 0xc5, 0x66, 0xe7, - 0x87, 0xc5, 0x66, 0xe6, 0x87, 0xc5, 0x67, 0xe7, 0x87, 0xc5, 0x68, 0xe6, - 0x87, 0xc5, 0x68, 0xe7, 0x87, 0xc5, 0x69, 0xe6, 0x87, 0xc5, 0x6a, 0xe7, - 0x87, 0xc5, 0x6a, 0xe6, 0x87, 0xc5, 0x6b, 0xe7, 0x87, 0xc5, 0x6c, 0xe6, - 0x87, 0xc5, 0x6c, 0xe4, 0x88, 0xc5, 0x6d, 0xe6, 0x87, 0xc5, 0x6e, 0xe4, - 0x88, 0xc5, 0x6e, 0xe6, 0x87, 0xc5, 0x6f, 0xe4, 0x88, 0xc5, 0x70, 0xe6, - 0x87, 0xc5, 0x70, 0xe4, 0x88, 0xc5, 0x71, 0xe6, 0x87, 0xc5, 0x72, 0xe4, - 0x88, 0xc5, 0x72, 0xe6, 0x87, 0xc5, 0x73, 0xe4, 0x88, 0xc5, 0x73, 0xe6, - 0x87, 0xc5, 0x74, 0xe4, 0x88, 0xc5, 0x75, 0xe6, 0x87, 0xc5, 0x75, 0xe4, - 0x88, 0xc5, 0x76, 0xe6, 0x87, 0xc5, 0x76, 0xe4, 0x88, 0xc5, 0x77, 0xe6, - 0x87, 0xc5, 0x78, 0xe4, 0x88, 0xc5, 0x78, 0xe6, 0x87, 0xc5, 0x79, 0xe4, - 0x88, 0xc5, 0x79, 0xe6, 0x87, 0xc5, 0x7a, 0xe4, 0x88, 0xc5, 0x7a, 0xe6, - 0x87, 0xc5, 0x7b, 0xe4, 0x88, 0xc5, 0x7c, 0xe6, 0x87, 0xc5, 0x7c, 0xe4, - 0x88, 0xc5, 0x7d, 0xe6, 0x87, 0xc5, 0x7d, 0xe4, 0x88, 0xc5, 0x7e, 0xe6, - 0x87, 0xc5, 0x7e, 0xe4, 0x88, 0xc5, 0x7f, 0xe6, 0x87, 0xc5, 0x7f, 0xe4, - 0x88, 0xc5, 0x80, 0xe4, 0x88, 0xc5, 0x81, 0xe4, 0x88, 0xc5, 0x81, 0xe4, - 0x88, 0xc5, 0x82, 0xe4, 0x88, 0xc5, 0x82, 0xe4, 0x88, 0xc5, 0x83, 0xe4, - 0x88, 0xc5, 0x83, 0xe4, 0x88, 0xc5, 0x84, 0xe4, 0x88, 0xc5, 0x84, 0xe4, - 0x88, 0xc5, 0x85, 0xe4, 0x88, 0xc5, 0x85, 0xe4, 0x88, 0xc5, 0x86, 0xe4, - 0x88, 0xc5, 0x86, 0xe4, 0x88, 0xc5, 0x87, 0xe4, 0x88, 0xc5, 0x87, 0xe4, - 0x88, 0xc5, 0x88, 0xe4, 0x88, 0xc4, 0x87, 0xe4, 0x88, 0xc5, 0x88, 0xe4, - 0x89, 0xc4, 0x87, 0xe4, 0x89, 0xc5, 0x88, 0xe4, 0x8a, 0xc4, 0x87, 0xe4, - 0x8a, 0xc5, 0x88, 0xe4, 0x8b, 0xc4, 0x87, 0xe4, 0x8b, 0xc5, 0x88, 0xe4, - 0x8c, 0xc4, 0x87, 0xe4, 0x8c, 0xc5, 0x88, 0xe4, 0x8d, 0xc4, 0x87, 0xe4, - 0x8d, 0xc5, 0x88, 0xe4, 0x8e, 0xc4, 0x87, 0xe4, 0x8e, 0xc5, 0x88, 0xe4, - 0x8e, 0xc4, 0x87, 0xe4, 0x8f, 0xc5, 0x88, 0xe4, 0x8f, 0xc4, 0x88, 0xe4, - 0x90, 0xc1, 0x88, 0xe4, 0x90, 0xc4, 0x88, 0xe4, 0x91, 0xc1, 0x88, 0xe4, - 0x91, 0xc4, 0x88, 0xe4, 0x92, 0xc1, 0x88, 0xe4, 0x92, 0xc4, 0x88, 0xe4, - 0x93, 0xc1, 0x88, 0xe4, 0x93, 0xc4, 0x88, 0xe4, 0x94, 0xc1, 0x88, 0xe4, - 0x94, 0xc4, 0x88, 0xe4, 0x94, 0xc1, 0x88, 0xe4, 0x95, 0xc4, 0x88, 0xe4, - 0x95, 0xc1, 0x88, 0xe4, 0x96, 0xc4, 0x88, 0xe4, 0x96, 0xc1, 0x88, 0xe4, - 0x97, 0xc4, 0x88, 0xe4, 0x97, 0xc1, 0x88, 0xe4, 0x98, 0xc4, 0x88, 0xe4, - 0x98, 0xc1, 0x88, 0xe4, 0x98, 0xc4, 0x88, 0xe4, 0x99, 0xc1, 0x88, 0xe4, - 0x99, 0xc4, 0x88, 0xe4, 0x9a, 0xc1, 0x88, 0xe4, 0x9a, 0xc4, 0x88, 0xe4, - 0x9a, 0xc1, 0x88, 0xe4, 0x9b, 0xc4, 0x88, 0xe4, 0x9b, 0xc1, 0x88, 0xe4, - 0x9c, 0xc4, 0x88, 0xe4, 0x9c, 0xc1, 0x88, 0xe4, 0x9d, 0xc4, 0x88, 0xe4, - 0x9d, 0xc1, 0x88, 0xe4, 0x9d, 0xc4, 0x88, 0xe4, 0x9e, 0xc1, 0x89, 0xe4, - 0x9e, 0xbf, 0x88, 0xe4, 0x9f, 0xc1, 0x89, 0xe4, 0x9f, 0xbf, 0x88, 0xe4, - 0x9f, 0xc1, 0x89, 0xe4, 0xa0, 0xbf, 0x88, 0xe4, 0xa0, 0xc1, 0x89, 0xe4, - 0xa1, 0xbf, 0x88, 0xe4, 0xa1, 0xc1, 0x89, 0xe4, 0xa1, 0xbf, 0x88, 0xe4, - 0xa2, 0xc1, 0x89, 0xe4, 0xa2, 0xbf, 0x88, 0xe4, 0xa3, 0xc1, 0x89, 0xe4, - 0xa3, 0xbf, 0x88, 0xe4, 0xa3, 0xc1, 0x89, 0xe4, 0xa4, 0xbf, 0x88, 0xe4, - 0xa4, 0xc1, 0x89, 0xe4, 0xa5, 0xbf, 0x88, 0xe4, 0xa5, 0xc1, 0x89, 0xe4, - 0xa5, 0xbf, 0x88, 0xe4, 0xa6, 0xc1, 0x89, 0xe4, 0xa6, 0xbf, 0x88, 0xe4, - 0xa6, 0xc1, 0x89, 0xe4, 0xa7, 0xbf, 0x88, 0xe4, 0xa7, 0xc1, 0x89, 0xe4, - 0xa8, 0xbf, 0x88, 0xe4, 0xa8, 0xc1, 0x89, 0xe4, 0xa8, 0xbf, 0x88, 0xe4, - 0xa9, 0xc1, 0x89, 0xe4, 0xa9, 0xbf, 0x88, 0xe4, 0xaa, 0xc1, 0x89, 0xe4, - 0xaa, 0xbf, 0x88, 0xe4, 0xaa, 0xc1, 0x89, 0xe4, 0xab, 0xbf, 0x88, 0xe4, - 0xab, 0xc1, 0x89, 0xe4, 0xab, 0xbf, 0xa6, 0xe4, 0xac, 0xee, 0xa6, 0xe4, - 0xac, 0xee, 0xa6, 0xe4, 0xac, 0xee, 0xa6, 0xe4, 0xad, 0xee, 0xa6, 0xe4, - 0xad, 0xee, 0xab, 0xe4, 0xae, 0xef, 0xa6, 0xe4, 0xae, 0xee, 0xab, 0xe4, - 0xae, 0xef, 0xaa, 0xe4, 0xaf, 0xef, 0xab, 0xe4, 0xaf, 0xef, 0xaa, 0xe4, - 0xaf, 0xef, 0xab, 0xe4, 0xb0, 0xef, 0xaa, 0xe4, 0xb0, 0xef, 0xab, 0xe4, - 0xb0, 0xef, 0xaa, 0xe4, 0xb1, 0xef, 0xab, 0xe4, 0xb1, 0xef, 0xaa, 0xe4, - 0xb2, 0xef, 0xab, 0xe4, 0xb2, 0xef, 0xaf, 0xe4, 0xb2, 0xf0, 0xab, 0xe4, - 0xb3, 0xef, 0xce, 0xe4, 0xb3, 0xca, 0xce, 0xe4, 0xb3, 0xcd, 0xce, 0xe4, - 0xb4, 0xca, 0xce, 0xe4, 0xb4, 0xcd, 0xce, 0xe4, 0xb4, 0xca, 0xce, 0xe4, - 0xb5, 0xcd, 0xce, 0xe4, 0xb5, 0xca, 0xce, 0xe4, 0xb5, 0xcd, 0xce, 0xe4, - 0xb6, 0xca, 0xce, 0xe4, 0xb6, 0xcd, 0xce, 0xe4, 0xb6, 0xca, 0xce, 0xe4, - 0xb7, 0xcd, 0xce, 0xe4, 0xb7, 0xca, 0xce, 0xe4, 0xb7, 0xcd, 0xce, 0xe4, - 0xb8, 0xca, 0xce, 0xe4, 0xb8, 0xcd, 0xce, 0xe4, 0xb8, 0xca, 0xce, 0xe4, - 0xb9, 0xcd, 0xce, 0xe4, 0xb9, 0xca, 0xce, 0xe4, 0xb9, 0xcd, 0xce, 0xe4, - 0xba, 0xca, 0xce, 0xe4, 0xba, 0xcd, 0xce, 0xe4, 0xba, 0xca, 0xce, 0xe4, - 0xbb, 0xcd, 0xce, 0xe4, 0xbb, 0xca, 0xce, 0xe4, 0xbb, 0xcd, 0xce, 0xe4, - 0xbc, 0xca, 0xce, 0xe4, 0xbc, 0xc7, 0xce, 0xe4, 0xbc, 0xca, 0xce, 0xe4, - 0xbd, 0xc7, 0xce, 0xe4, 0xbd, 0xca, 0xce, 0xe4, 0xbd, 0xc7, 0xce, 0xe4, - 0xbe, 0xca, 0xce, 0xe4, 0xbe, 0xc7, 0xce, 0xe4, 0xbe, 0xca, 0xce, 0xe4, - 0xbf, 0xc7, 0xce, 0xe4, 0xbf, 0xca, 0xce, 0xe4, 0xbf, 0xc7, 0xce, 0xe4, - 0xc0, 0xca, 0xce, 0xe4, 0xc0, 0xc7, 0xce, 0xe4, 0xc0, 0xca, 0xce, 0xe4, - 0xc1, 0xc7, 0xce, 0xe4, 0xc1, 0xca, 0xce, 0xe4, 0xc1, 0xc7, 0xce, 0xe4, - 0xc1, 0xca, 0xce, 0xe4, 0xc2, 0xc7, 0xce, 0xe4, 0xc2, 0xca, 0xce, 0xe4, - 0xc2, 0xc7, 0xce, 0xe4, 0xc3, 0xca, 0xce, 0xe4, 0xc3, 0xc7, 0xce, 0xe4, - 0xc3, 0xca, 0xce, 0xe4, 0xc4, 0xc7, 0xce, 0xe4, 0xc4, 0xca, 0xce, 0xe4, - 0xc4, 0xc7, 0xce, 0xe4, 0xc5, 0xca, 0xce, 0xe4, 0xc5, 0xc7, 0xce, 0xe4, - 0xc5, 0xca, 0xce, 0xe4, 0xc6, 0xc7, 0xce, 0xe4, 0xc6, 0xca, 0xce, 0xe4, - 0xc6, 0xc7, 0xce, 0xe4, 0xc6, 0xca, 0xce, 0xe4, 0xc7, 0xc7, 0xce, 0xe4, - 0xc7, 0xca, 0xce, 0xe4, 0xc7, 0xc7, 0xcf, 0xe4, 0xc8, 0xc5, 0xce, 0xe4, - 0xc8, 0xc7, 0xcf, 0xe4, 0xc8, 0xc5, 0xce, 0xe4, 0xc9, 0xc7, 0xcf, 0xe4, - 0xc9, 0xc5, 0xce, 0xe4, 0xc9, 0xc7, 0xcf, 0xe4, 0xc9, 0xc5, 0xce, 0xe4, - 0xca, 0xc7, 0xcf, 0xe4, 0xca, 0xc5, 0xce, 0xe4, 0xca, 0xc7, 0xcf, 0xe4, - 0xcb, 0xc5, 0xce, 0xe4, 0xcb, 0xc7, 0xcf, 0xe4, 0xcb, 0xc5, 0xce, 0xe4, - 0xcc, 0xc7, 0xcf, 0xe4, 0xcc, 0xc5, 0xce, 0xe4, 0xcc, 0xc7, 0xcf, 0xe4, - 0xcc, 0xc5, 0xce, 0xe4, 0xcd, 0xc7, 0xcf, 0xe4, 0xcd, 0xc5, 0xce, 0xe4, - 0xcd, 0xc7, 0xcf, 0xe4, 0xce, 0xc5, 0xcf, 0xe4, 0xce, 0xc5, 0xcf, 0xe4, - 0xce, 0xc5, 0xcf, 0xe4, 0xce, 0xc5, 0xcf, 0xe3, 0xcf, 0xc5, 0xcf, 0xe4, - 0xce, 0xc5, 0xcf, 0xe3, 0xcf, 0xc5, 0xd0, 0xe4, 0xce, 0xc5, 0xd0, 0xe3, - 0xcf, 0xc5, 0xd0, 0xe4, 0xce, 0xc5, 0xd0, 0xe3, 0xcf, 0xc5, 0xd1, 0xe4, - 0xce, 0xc5, 0xd1, 0xe3, 0xcf, 0xc5, 0xd1, 0xe4, 0xce, 0xc5, 0xd2, 0xe3, - 0xcf, 0xc5, 0xd2, 0xe4, 0xce, 0xc5, 0xd2, 0xe3, 0xcf, 0xc5, 0xd2, 0xe4, - 0xce, 0xc5, 0xd3, 0xe3, 0xcf, 0xc5, 0xd3, 0xe4, 0xce, 0xc5, 0xd3, 0xe3, - 0xcf, 0xc5, 0xd4, 0xe2, 0xcf, 0xc5, 0xd4, 0xe3, 0xcf, 0xc5, 0xd4, 0xe2, - 0xcf, 0xc5, 0xd4, 0xe3, 0xcf, 0xc5, 0xd5, 0xe2, 0xcf, 0xc5, 0xd5, 0xe3, - 0xcf, 0xc5, 0xd5, 0xe2, 0xcf, 0xc5, 0xd6, 0xe3, 0xcf, 0xc5, 0xd6, 0xe2, - 0xcf, 0xc5, 0xd6, 0xe3, 0xcf, 0xc5, 0xd6, 0xe2, 0xcf, 0xc5, 0xd7, 0xe3, - 0xcf, 0xc5, 0xd7, 0xe2, 0xcf, 0xc5, 0xd7, 0xe3, 0xcf, 0xc5, 0xd7, 0xe2, - 0xcf, 0xc5, 0xd8, 0xe3, 0xcf, 0xc5, 0xd8, 0xe2, 0xcf, 0xc5, 0xd8, 0xe3, - 0xcf, 0xc5, 0xd9, 0xe2, 0xcf, 0xc5, 0xd9, 0xe3, 0xcf, 0xc5, 0xd9, 0xe2, - 0xcf, 0xc5, 0xd9, 0xe3, 0xcf, 0xc5, 0xda, 0xe2, 0xcf, 0xc5, 0xda, 0xe3, - 0xcf, 0xc5, 0xda, 0xe2, 0xcf, 0xc5, 0xda, 0xe3, 0xcf, 0xc5, 0xdb, 0xe2, - 0xcf, 0xc5, 0xdb, 0xe3, 0xcf, 0xc5, 0xdb, 0xe2, 0xcf, 0xc5, 0xdb, 0xe6, - 0xe7, 0xc5, 0xdc, 0xe5, 0xe7, 0xc5, 0xdc, 0xe6, 0xe7, 0xc5, 0xdc, 0xe5, - 0xe7, 0xc5, 0xdd, 0xe6, 0xe7, 0xc5, 0xdd, 0xe5, 0xe7, 0xc5, 0xdd, 0xe6, - 0xe7, 0xc5, 0xdd, 0xe5, 0xe7, 0xc5, 0xde, 0xe6, 0xe7, 0xc5, 0xde, 0xe5, - 0xe7, 0xc5, 0xde, 0xe6, 0xe7, 0xc5, 0xde, 0xe5, 0xe7, 0xc5, 0xdf, 0xe6, - 0xe7, 0xc5, 0xdf, 0xe5, 0xe7, 0xc5, 0xdf, 0xe6, 0xe7, 0xc5, 0xdf, 0xe5, - 0xe7, 0xc5, 0xe0, 0xe6, 0xe7, 0xc5, 0xe0, 0xe5, 0xe7, 0xc5, 0xe0, 0xe6, - 0xe7, 0xc5, 0xe1, 0xe5, 0xe7, 0xc5, 0xe1, 0xe6, 0xe7, 0xc5, 0xe1, 0xe5, - 0xe7, 0xc5, 0xe1, 0xe6, 0xe7, 0xc5, 0xe2, 0xe5, 0xe7, 0xc5, 0xe2, 0xe6, - 0xe7, 0xc5, 0xe2, 0xe5, 0xe7, 0xc5, 0xe2, 0xe6, 0xe7, 0xc5, 0xe3, 0xe5, - 0xe7, 0xc5, 0xe3, 0xe6, 0xe7, 0xc5, 0xe3, 0xe5, 0xe7, 0xc5, 0xe3, 0xe4, - 0xe7, 0xc5, 0xe4, 0xe5, 0xe7, 0xc5, 0xe4, 0xe4, 0xe7, 0xc5, 0xe4, 0xe5, - 0xe7, 0xc5, 0xe4, 0xe4, 0xe7, 0xc5, 0xe5, 0xe5, 0xe7, 0xc5, 0xe5, 0xe4, - 0xe7, 0xc5, 0xe5, 0xe5, 0xe7, 0xc5, 0xe5, 0xe4, 0xe7, 0xc5, 0xe6, 0xe5, - 0xe7, 0xc5, 0xe6, 0xe4, 0xe7, 0xc5, 0xe6, 0xe5, 0xe7, 0xc5, 0xe6, 0xe4, - 0xe7, 0xc5, 0xe7, 0xe4, 0xe8, 0xc5, 0xe7, 0xe4, 0xe7, 0xc5, 0xe7, 0xe4, - 0xe8, 0xc5, 0xe7, 0xe4, 0xe7, 0xc5, 0xe7, 0xe4, 0xe8, 0xc5, 0xe7, 0xe4, - 0xe8, 0xc5, 0xe7, 0xe4, 0xe8, 0xc5, 0xe7, 0xe4, 0xe8, 0xc3, 0xe7, 0xe4, - 0xe9, 0xc5, 0xe7, 0xe4, 0xe9, 0xc3, 0xe7, 0xe4, 0xe9, 0xc5, 0xeb, 0xe4, - 0xe9, 0xc5, 0xeb, 0xe4, 0xea, 0xc5, 0xeb, 0xe4, 0xea, 0xc5, 0xeb, 0xe4, - 0xea, 0xc5, 0xeb, 0xe4, 0xea, 0xc5, 0xeb, 0xe4, 0xeb, 0xc5, 0xeb, 0xe4, - 0xeb, 0xc5, 0xeb, 0xe3, 0xeb, 0xc5, 0xeb, 0xe4, 0xeb, 0xc5, 0xec, 0xe3, - 0xeb, 0xc5, 0xec, 0xe4, 0xeb, 0xc5, 0xec, 0xe3, 0xeb, 0xc5, 0xec, 0xe4, - 0xeb, 0xc5, 0xec, 0xe3, 0xeb, 0xc5, 0xed, 0xe4, 0xeb, 0xc5, 0xed, 0xe3, - 0xeb, 0xc5, 0xed, 0xe4, 0xeb, 0xc5, 0xed, 0xe3, 0xeb, 0xc5, 0xee, 0xe4, - 0xeb, 0xc5, 0xee, 0xe3, 0xeb, 0xc5, 0xee, 0xe4, 0xeb, 0xc5, 0xee, 0xe3, - 0xeb, 0xc5, 0xef, 0xe4, 0xeb, 0xc5, 0xef, 0xe3, 0xeb, 0xc5, 0xef, 0xe4, - 0xeb, 0xc5, 0xef, 0xe3, 0xeb, 0xc5, 0xf0, 0xe4, 0xeb, 0xc5, 0xf0, 0xe3, - 0xeb, 0xc5, 0xf0, 0xe4, 0xeb, 0xc5, 0xf0, 0xe3, 0xeb, 0xc5, 0xf1, 0xe4, - 0xeb, 0xc5, 0xf1, 0xe3, 0xeb, 0xc5, 0xf1, 0xe1, 0xeb, 0xc5, 0xf1, 0xe3, - 0xeb, 0xc5, 0xf2, 0xe1, 0xeb, 0xc5, 0xf2, 0xe3, 0xeb, 0xc5, 0xf2, 0xe1, - 0xeb, 0xc5, 0xf2, 0xe3, 0xeb, 0xc5, 0xf2, 0xe1, 0xeb, 0xc5, 0xf3, 0xe3, - 0xeb, 0xc5, 0xf3, 0xe1, 0xeb, 0xc5, 0xf3, 0xe3, 0xeb, 0xc5, 0xf3, 0xec, - 0xf0, 0xc5, 0xf4, 0xec, 0xf1, 0xc5, 0xf4, 0xec, 0xf0, 0xc5, 0xf4, 0xec, - 0xf1, 0xc5, 0xf4, 0xec, 0xf0, 0xc5, 0xf5, 0xec, 0xf1, 0xc5, 0xf5, 0xec, - 0xf1, 0xc5, 0xf5, 0xec, 0xf1, 0xc5, 0xf5, 0xec, 0xf1, 0xc5, 0xf5, 0xec, - 0xf1, 0xc5, 0xf6, 0xec, 0xf1, 0xc5, 0xf6, 0xec, 0xf1, 0xc5, 0xf6, 0xec, - 0xf1, 0xc5, 0xf6, 0xec, 0xf1, 0xc5, 0xf7, 0xec, 0xf1, 0xc5, 0xf7, 0xec, - 0xf1, 0xc5, 0xf7, 0xec, 0xf1, 0xc5, 0xf7, 0xec, 0xf1, 0xc5, 0xf8, 0xec, - 0xf1, 0xc5, 0xf8, 0xec, 0xf1, 0xc5, 0xf8, 0xec, 0xf1, 0xc5, 0xf8, 0xec, - 0xf1, 0xc5, 0xf8, 0xec, 0xf1, 0xc5, 0xf9, 0xec, 0xf1, 0xc5, 0xf9, 0xec, - 0xf1, 0xc5, 0xf9, 0xec, 0xf1, 0xc5, 0xf9, 0xec, 0xf1, 0xc5, 0xfa, 0xec, - 0xf1, 0xc5, 0xfa, 0xec, 0xf1, 0xc5, 0xfa, 0xec, 0xf1, 0xc5, 0xfa, 0xec, - 0xf1, 0xc5, 0xfa, 0xec, 0xf1, 0xc5, 0xfb, 0xec, 0xf1, 0xc5, 0xfb, 0xec, - 0xf1, 0xc5, 0xfb, 0xec, 0xf1, 0xc5, 0xfb, 0xec, 0xf1, 0xc5, 0xfc, 0xec, - 0xf1, 0xc5, 0xfc, 0xec, 0xf1, 0xc5, 0xfc, 0xec, 0xf1, 0xc5, 0xfc, 0xec, - 0xf1, 0xc5, 0xfc, 0xec, 0xf1, 0xc5, 0xfd, 0xec, 0xf1, 0xc5, 0xfd, 0xec, - 0xf1, 0xc5, 0xfd, 0xec, 0xf1, 0xc5, 0xfd, 0xec, 0xf1, 0xc5, 0xfe, 0xec, - 0xf1, 0xc5, 0xfe, 0xec, 0xf1, 0xc5, 0xfe, 0xec, 0xf1, 0xc5, 0xfe, 0xec, - 0xf1, 0xc5, 0xfe, 0xec, 0xf1, 0xc5, 0xff, 0xec, 0xf1, 0xc5, 0xff, 0xec, - 0xf1, 0xc5, 0x03, 0xe9, 0x86, 0xc6, 0x0a, 0xeb, 0x86, 0xc6, 0x0f, 0xe9, - 0x86, 0xc6, 0x14, 0xe8, 0x87, 0xc6, 0x17, 0xe9, 0x86, 0xc6, 0x1b, 0xe8, - 0x87, 0xc6, 0x1e, 0xe9, 0x86, 0xc6, 0x20, 0xe8, 0x87, 0xc6, 0x23, 0xe9, - 0x86, 0xc6, 0x25, 0xe8, 0x87, 0xc6, 0x27, 0xe9, 0x86, 0xc6, 0x29, 0xe8, - 0x87, 0xc6, 0x2b, 0xe9, 0x86, 0xc6, 0x2d, 0xe8, 0x87, 0xc6, 0x2f, 0xe9, - 0x86, 0xc6, 0x31, 0xe8, 0x87, 0xc6, 0x32, 0xe9, 0x86, 0xc6, 0x34, 0xe8, - 0x87, 0xc6, 0x35, 0xe9, 0x86, 0xc6, 0x37, 0xe8, 0x87, 0xc6, 0x38, 0xe9, - 0x86, 0xc6, 0x3a, 0xe8, 0x87, 0xc6, 0x3b, 0xe9, 0x86, 0xc6, 0x3c, 0xe8, - 0x87, 0xc6, 0x3e, 0xe9, 0x86, 0xc6, 0x3f, 0xe8, 0x87, 0xc6, 0x40, 0xe9, - 0x86, 0xc6, 0x42, 0xe8, 0x87, 0xc6, 0x43, 0xe9, 0x86, 0xc6, 0x44, 0xe8, - 0x87, 0xc6, 0x45, 0xe9, 0x86, 0xc6, 0x46, 0xe8, 0x87, 0xc6, 0x47, 0xe6, - 0x87, 0xc6, 0x48, 0xe8, 0x87, 0xc6, 0x49, 0xe6, 0x87, 0xc6, 0x4a, 0xe8, - 0x87, 0xc6, 0x4b, 0xe6, 0x87, 0xc6, 0x4c, 0xe8, 0x87, 0xc6, 0x4d, 0xe6, - 0x87, 0xc6, 0x4e, 0xe8, 0x87, 0xc6, 0x4f, 0xe6, 0x87, 0xc6, 0x50, 0xe8, - 0x87, 0xc6, 0x51, 0xe6, 0x87, 0xc6, 0x52, 0xe8, 0x87, 0xc6, 0x53, 0xe6, - 0x87, 0xc6, 0x54, 0xe8, 0x87, 0xc6, 0x55, 0xe6, 0x87, 0xc6, 0x56, 0xe8, - 0x87, 0xc6, 0x57, 0xe6, 0x87, 0xc6, 0x58, 0xe8, 0x87, 0xc6, 0x58, 0xe6, - 0x87, 0xc6, 0x59, 0xe8, 0x87, 0xc6, 0x5a, 0xe6, 0x87, 0xc6, 0x5b, 0xe8, - 0x87, 0xc6, 0x5c, 0xe6, 0x87, 0xc6, 0x5d, 0xe8, 0x87, 0xc6, 0x5d, 0xe6, - 0x87, 0xc6, 0x5e, 0xe8, 0x87, 0xc6, 0x5f, 0xe6, 0x87, 0xc6, 0x60, 0xe8, - 0x87, 0xc6, 0x60, 0xe6, 0x87, 0xc6, 0x61, 0xe8, 0x87, 0xc6, 0x62, 0xe6, - 0x87, 0xc6, 0x63, 0xe8, 0x87, 0xc6, 0x63, 0xe6, 0x87, 0xc6, 0x64, 0xe8, - 0x87, 0xc6, 0x65, 0xe6, 0x87, 0xc6, 0x66, 0xe8, 0x87, 0xc6, 0x66, 0xe6, - 0x87, 0xc6, 0x67, 0xe8, 0x87, 0xc6, 0x68, 0xe6, 0x87, 0xc6, 0x68, 0xe8, - 0x87, 0xc6, 0x69, 0xe6, 0x87, 0xc6, 0x6a, 0xe8, 0x87, 0xc6, 0x6a, 0xe6, - 0x87, 0xc6, 0x6b, 0xe8, 0x87, 0xc6, 0x6c, 0xe6, 0x87, 0xc6, 0x6c, 0xe4, - 0x88, 0xc6, 0x6d, 0xe6, 0x87, 0xc6, 0x6e, 0xe4, 0x88, 0xc6, 0x6e, 0xe6, - 0x87, 0xc6, 0x6f, 0xe4, 0x88, 0xc6, 0x70, 0xe6, 0x87, 0xc6, 0x70, 0xe4, - 0x88, 0xc6, 0x71, 0xe6, 0x87, 0xc6, 0x72, 0xe4, 0x88, 0xc6, 0x72, 0xe6, - 0x87, 0xc6, 0x73, 0xe4, 0x88, 0xc6, 0x73, 0xe6, 0x87, 0xc6, 0x74, 0xe4, - 0x88, 0xc6, 0x75, 0xe6, 0x87, 0xc6, 0x75, 0xe4, 0x88, 0xc6, 0x76, 0xe6, - 0x87, 0xc6, 0x76, 0xe4, 0x88, 0xc6, 0x77, 0xe6, 0x87, 0xc6, 0x78, 0xe4, - 0x88, 0xc6, 0x78, 0xe6, 0x87, 0xc6, 0x79, 0xe4, 0x88, 0xc6, 0x79, 0xe6, - 0x87, 0xc6, 0x7a, 0xe4, 0x88, 0xc6, 0x7a, 0xe6, 0x87, 0xc6, 0x7b, 0xe4, - 0x88, 0xc6, 0x7c, 0xe6, 0x87, 0xc6, 0x7c, 0xe4, 0x88, 0xc6, 0x7d, 0xe6, - 0x87, 0xc6, 0x7d, 0xe4, 0x88, 0xc6, 0x7e, 0xe6, 0x87, 0xc6, 0x7e, 0xe4, - 0x88, 0xc6, 0x7f, 0xe6, 0x87, 0xc6, 0x7f, 0xe4, 0x88, 0xc6, 0x80, 0xe6, - 0x87, 0xc6, 0x81, 0xe4, 0x88, 0xc6, 0x81, 0xe6, 0x87, 0xc6, 0x82, 0xe4, - 0x88, 0xc6, 0x82, 0xe6, 0x87, 0xc6, 0x83, 0xe4, 0x88, 0xc6, 0x83, 0xe6, - 0x87, 0xc6, 0x84, 0xe4, 0x88, 0xc6, 0x84, 0xe4, 0x88, 0xc6, 0x85, 0xe4, - 0x88, 0xc6, 0x85, 0xe4, 0x88, 0xc6, 0x86, 0xe4, 0x88, 0xc6, 0x86, 0xe4, - 0x88, 0xc6, 0x87, 0xe4, 0x88, 0xc6, 0x87, 0xe4, 0x88, 0xc6, 0x88, 0xe4, - 0x88, 0xc5, 0x87, 0xe4, 0x88, 0xc6, 0x88, 0xe4, 0x89, 0xc5, 0x87, 0xe4, - 0x89, 0xc6, 0x88, 0xe4, 0x8a, 0xc5, 0x87, 0xe4, 0x8a, 0xc6, 0x88, 0xe4, - 0x8b, 0xc5, 0x87, 0xe4, 0x8b, 0xc6, 0x88, 0xe4, 0x8c, 0xc5, 0x87, 0xe4, - 0x8c, 0xc6, 0x88, 0xe4, 0x8d, 0xc5, 0x87, 0xe4, 0x8d, 0xc6, 0x88, 0xe4, - 0x8e, 0xc5, 0x87, 0xe4, 0x8e, 0xc6, 0x88, 0xe4, 0x8e, 0xc5, 0x87, 0xe4, - 0x8f, 0xc6, 0x88, 0xe4, 0x8f, 0xc5, 0x88, 0xe4, 0x90, 0xc2, 0x88, 0xe4, - 0x90, 0xc5, 0x88, 0xe4, 0x91, 0xc2, 0x88, 0xe4, 0x91, 0xc5, 0x88, 0xe4, - 0x92, 0xc2, 0x88, 0xe4, 0x92, 0xc5, 0x88, 0xe4, 0x93, 0xc2, 0x88, 0xe4, - 0x93, 0xc5, 0x88, 0xe4, 0x94, 0xc2, 0x88, 0xe4, 0x94, 0xc5, 0x88, 0xe4, - 0x94, 0xc2, 0x88, 0xe4, 0x95, 0xc5, 0x88, 0xe4, 0x95, 0xc2, 0x88, 0xe4, - 0x96, 0xc5, 0x88, 0xe4, 0x96, 0xc2, 0x88, 0xe4, 0x97, 0xc5, 0x88, 0xe4, - 0x97, 0xc2, 0x88, 0xe4, 0x98, 0xc5, 0x88, 0xe4, 0x98, 0xc2, 0x88, 0xe4, - 0x98, 0xc5, 0x88, 0xe4, 0x99, 0xc2, 0x88, 0xe4, 0x99, 0xc5, 0x88, 0xe4, - 0x9a, 0xc2, 0x88, 0xe4, 0x9a, 0xc5, 0x88, 0xe4, 0x9a, 0xc2, 0x88, 0xe4, - 0x9b, 0xc5, 0x88, 0xe4, 0x9b, 0xc2, 0x88, 0xe4, 0x9c, 0xc5, 0x88, 0xe4, - 0x9c, 0xc2, 0x88, 0xe4, 0x9d, 0xc5, 0x88, 0xe4, 0x9d, 0xc2, 0x88, 0xe4, - 0x9d, 0xc5, 0x88, 0xe4, 0x9e, 0xc2, 0x88, 0xe4, 0x9e, 0xc5, 0x88, 0xe4, - 0x9f, 0xc2, 0x88, 0xe4, 0x9f, 0xc5, 0x88, 0xe4, 0x9f, 0xc2, 0x88, 0xe4, - 0xa0, 0xc5, 0x88, 0xe4, 0xa0, 0xc2, 0x88, 0xe4, 0xa1, 0xc5, 0x88, 0xe4, - 0xa1, 0xc2, 0x88, 0xe4, 0xa1, 0xc5, 0x88, 0xe4, 0xa2, 0xc2, 0x88, 0xe4, - 0xa2, 0xc5, 0x88, 0xe4, 0xa3, 0xc2, 0x88, 0xe4, 0xa3, 0xc5, 0x88, 0xe4, - 0xa3, 0xc2, 0x88, 0xe4, 0xa4, 0xc5, 0x88, 0xe4, 0xa4, 0xc2, 0x89, 0xe4, - 0xa5, 0xbe, 0x88, 0xe4, 0xa5, 0xc2, 0x89, 0xe4, 0xa5, 0xbe, 0x88, 0xe4, - 0xa6, 0xc2, 0x89, 0xe4, 0xa6, 0xbe, 0x88, 0xe4, 0xa6, 0xc2, 0x89, 0xe4, - 0xa7, 0xbe, 0x88, 0xe4, 0xa7, 0xc2, 0x89, 0xe4, 0xa8, 0xbe, 0x88, 0xe4, - 0xa8, 0xc2, 0x89, 0xe4, 0xa8, 0xbe, 0x88, 0xe4, 0xa9, 0xc2, 0x89, 0xe4, - 0xa9, 0xbe, 0x88, 0xe4, 0xaa, 0xc2, 0x89, 0xe4, 0xaa, 0xbe, 0x88, 0xe4, - 0xaa, 0xc2, 0x89, 0xe4, 0xab, 0xbe, 0xa4, 0xe4, 0xab, 0xee, 0xa8, 0xe4, - 0xab, 0xef, 0xa4, 0xe4, 0xac, 0xee, 0xa8, 0xe4, 0xac, 0xef, 0xa8, 0xe4, - 0xac, 0xef, 0xa8, 0xe4, 0xad, 0xef, 0xa8, 0xe4, 0xad, 0xef, 0xa8, 0xe4, - 0xae, 0xef, 0xa8, 0xe4, 0xae, 0xef, 0xa8, 0xe4, 0xae, 0xef, 0xa8, 0xe4, - 0xaf, 0xef, 0xa8, 0xe4, 0xaf, 0xef, 0xac, 0xe4, 0xaf, 0xf0, 0xa8, 0xe4, - 0xb0, 0xef, 0xac, 0xe4, 0xb0, 0xf0, 0xac, 0xe4, 0xb0, 0xf0, 0xac, 0xe4, - 0xb1, 0xf0, 0xac, 0xe4, 0xb1, 0xf0, 0xac, 0xe4, 0xb2, 0xf0, 0xac, 0xe4, - 0xb2, 0xf0, 0xac, 0xe4, 0xb2, 0xf0, 0xac, 0xe4, 0xb3, 0xf0, 0xac, 0xe4, - 0xb3, 0xf0, 0xce, 0xe4, 0xb3, 0xcd, 0xce, 0xe4, 0xb4, 0xd0, 0xce, 0xe4, - 0xb4, 0xcd, 0xce, 0xe4, 0xb4, 0xd0, 0xce, 0xe4, 0xb5, 0xcd, 0xce, 0xe4, - 0xb5, 0xd0, 0xce, 0xe4, 0xb5, 0xcd, 0xce, 0xe4, 0xb6, 0xd0, 0xce, 0xe4, - 0xb6, 0xcd, 0xce, 0xe4, 0xb6, 0xcb, 0xce, 0xe4, 0xb7, 0xcd, 0xce, 0xe4, - 0xb7, 0xcb, 0xce, 0xe4, 0xb7, 0xcd, 0xce, 0xe4, 0xb8, 0xcb, 0xce, 0xe4, - 0xb8, 0xcd, 0xce, 0xe4, 0xb8, 0xcb, 0xce, 0xe4, 0xb9, 0xcd, 0xce, 0xe4, - 0xb9, 0xcb, 0xce, 0xe4, 0xb9, 0xcd, 0xce, 0xe4, 0xba, 0xcb, 0xce, 0xe4, - 0xba, 0xcd, 0xce, 0xe4, 0xba, 0xcb, 0xce, 0xe4, 0xbb, 0xcd, 0xce, 0xe4, - 0xbb, 0xcb, 0xce, 0xe4, 0xbb, 0xcd, 0xce, 0xe4, 0xbc, 0xcb, 0xce, 0xe4, - 0xbc, 0xcd, 0xce, 0xe4, 0xbc, 0xcb, 0xce, 0xe4, 0xbd, 0xcd, 0xce, 0xe4, - 0xbd, 0xcb, 0xce, 0xe4, 0xbd, 0xcd, 0xce, 0xe4, 0xbe, 0xcb, 0xce, 0xe4, - 0xbe, 0xcd, 0xce, 0xe4, 0xbe, 0xcb, 0xce, 0xe4, 0xbf, 0xcd, 0xce, 0xe4, - 0xbf, 0xcb, 0xce, 0xe4, 0xbf, 0xcd, 0xce, 0xe4, 0xc0, 0xcb, 0xce, 0xe4, - 0xc0, 0xcd, 0xce, 0xe4, 0xc0, 0xcb, 0xce, 0xe4, 0xc1, 0xcd, 0xce, 0xe4, - 0xc1, 0xcb, 0xce, 0xe4, 0xc1, 0xc8, 0xce, 0xe4, 0xc1, 0xcb, 0xce, 0xe4, - 0xc2, 0xc8, 0xce, 0xe4, 0xc2, 0xcb, 0xce, 0xe4, 0xc2, 0xc8, 0xce, 0xe4, - 0xc3, 0xcb, 0xce, 0xe4, 0xc3, 0xc8, 0xce, 0xe4, 0xc3, 0xcb, 0xce, 0xe4, - 0xc4, 0xc8, 0xce, 0xe4, 0xc4, 0xcb, 0xce, 0xe4, 0xc4, 0xc8, 0xce, 0xe4, - 0xc5, 0xcb, 0xce, 0xe4, 0xc5, 0xc8, 0xce, 0xe4, 0xc5, 0xcb, 0xce, 0xe4, - 0xc6, 0xc8, 0xce, 0xe4, 0xc6, 0xcb, 0xce, 0xe4, 0xc6, 0xc8, 0xce, 0xe4, - 0xc6, 0xcb, 0xce, 0xe4, 0xc7, 0xc8, 0xce, 0xe4, 0xc7, 0xcb, 0xce, 0xe4, - 0xc7, 0xc8, 0xcf, 0xe4, 0xc8, 0xc6, 0xce, 0xe4, 0xc8, 0xc8, 0xcf, 0xe4, - 0xc8, 0xc6, 0xce, 0xe4, 0xc9, 0xc8, 0xcf, 0xe4, 0xc9, 0xc6, 0xce, 0xe4, - 0xc9, 0xc8, 0xcf, 0xe4, 0xc9, 0xc6, 0xce, 0xe4, 0xca, 0xc8, 0xcf, 0xe4, - 0xca, 0xc6, 0xce, 0xe4, 0xca, 0xc8, 0xcf, 0xe4, 0xcb, 0xc6, 0xce, 0xe4, - 0xcb, 0xc8, 0xcf, 0xe4, 0xcb, 0xc6, 0xce, 0xe4, 0xcc, 0xc8, 0xcf, 0xe4, - 0xcc, 0xc6, 0xce, 0xe4, 0xcc, 0xc8, 0xcf, 0xe4, 0xcc, 0xc6, 0xce, 0xe4, - 0xcd, 0xc8, 0xcf, 0xe4, 0xcd, 0xc6, 0xce, 0xe4, 0xcd, 0xc8, 0xcf, 0xe4, - 0xce, 0xc6, 0xcf, 0xe4, 0xce, 0xc6, 0xcf, 0xe4, 0xce, 0xc6, 0xcf, 0xe4, - 0xce, 0xc6, 0xcf, 0xe4, 0xce, 0xc6, 0xcf, 0xe4, 0xce, 0xc6, 0xcf, 0xe4, - 0xce, 0xc6, 0xd0, 0xe4, 0xce, 0xc6, 0xd0, 0xe3, 0xcf, 0xc6, 0xd0, 0xe4, - 0xce, 0xc6, 0xd0, 0xe3, 0xcf, 0xc6, 0xd1, 0xe4, 0xce, 0xc6, 0xd1, 0xe3, - 0xcf, 0xc6, 0xd1, 0xe4, 0xce, 0xc6, 0xd2, 0xe3, 0xcf, 0xc6, 0xd2, 0xe4, - 0xce, 0xc6, 0xd2, 0xe3, 0xcf, 0xc6, 0xd2, 0xe4, 0xce, 0xc6, 0xd3, 0xe3, - 0xcf, 0xc6, 0xd3, 0xe4, 0xce, 0xc6, 0xd3, 0xe3, 0xcf, 0xc6, 0xd4, 0xe2, - 0xcf, 0xc6, 0xd4, 0xe3, 0xcf, 0xc6, 0xd4, 0xe2, 0xcf, 0xc6, 0xd4, 0xe3, - 0xcf, 0xc6, 0xd5, 0xe2, 0xcf, 0xc6, 0xd5, 0xe3, 0xcf, 0xc6, 0xd5, 0xe2, - 0xcf, 0xc6, 0xd6, 0xe3, 0xcf, 0xc6, 0xd6, 0xe2, 0xcf, 0xc6, 0xd6, 0xe3, - 0xcf, 0xc6, 0xd6, 0xe2, 0xcf, 0xc6, 0xd7, 0xe3, 0xcf, 0xc6, 0xd7, 0xe2, - 0xcf, 0xc6, 0xd7, 0xe3, 0xcf, 0xc6, 0xd7, 0xe2, 0xcf, 0xc6, 0xd8, 0xe3, - 0xcf, 0xc6, 0xd8, 0xe2, 0xcf, 0xc6, 0xd8, 0xe3, 0xcf, 0xc6, 0xd9, 0xe2, - 0xcf, 0xc6, 0xd9, 0xe3, 0xcf, 0xc6, 0xd9, 0xe2, 0xcf, 0xc6, 0xd9, 0xe3, - 0xcf, 0xc6, 0xda, 0xe2, 0xcf, 0xc6, 0xda, 0xe3, 0xcf, 0xc6, 0xda, 0xe2, - 0xcf, 0xc6, 0xda, 0xe3, 0xcf, 0xc6, 0xdb, 0xe2, 0xcf, 0xc6, 0xdb, 0xe3, - 0xcf, 0xc6, 0xdb, 0xe2, 0xcf, 0xc6, 0xdb, 0xe6, 0xe7, 0xc6, 0xdc, 0xe5, - 0xe7, 0xc6, 0xdc, 0xe6, 0xe7, 0xc6, 0xdc, 0xe5, 0xe7, 0xc6, 0xdd, 0xe6, - 0xe7, 0xc6, 0xdd, 0xe5, 0xe7, 0xc6, 0xdd, 0xe6, 0xe7, 0xc6, 0xdd, 0xe5, - 0xe7, 0xc6, 0xde, 0xe6, 0xe7, 0xc6, 0xde, 0xe5, 0xe7, 0xc6, 0xde, 0xe6, - 0xe7, 0xc6, 0xde, 0xe5, 0xe7, 0xc6, 0xdf, 0xe6, 0xe7, 0xc6, 0xdf, 0xe5, - 0xe7, 0xc6, 0xdf, 0xe6, 0xe7, 0xc6, 0xdf, 0xe5, 0xe7, 0xc6, 0xe0, 0xe6, - 0xe7, 0xc6, 0xe0, 0xe5, 0xe7, 0xc6, 0xe0, 0xe6, 0xe7, 0xc6, 0xe1, 0xe5, - 0xe7, 0xc6, 0xe1, 0xe6, 0xe7, 0xc6, 0xe1, 0xe5, 0xe7, 0xc6, 0xe1, 0xe6, - 0xe7, 0xc6, 0xe2, 0xe5, 0xe7, 0xc6, 0xe2, 0xe6, 0xe7, 0xc6, 0xe2, 0xe5, - 0xe7, 0xc6, 0xe2, 0xe6, 0xe7, 0xc6, 0xe3, 0xe5, 0xe7, 0xc6, 0xe3, 0xe6, - 0xe7, 0xc6, 0xe3, 0xe5, 0xe7, 0xc6, 0xe3, 0xe4, 0xe7, 0xc6, 0xe4, 0xe5, - 0xe7, 0xc6, 0xe4, 0xe4, 0xe7, 0xc6, 0xe4, 0xe5, 0xe7, 0xc6, 0xe4, 0xe4, - 0xe7, 0xc6, 0xe5, 0xe5, 0xe7, 0xc6, 0xe5, 0xe4, 0xe7, 0xc6, 0xe5, 0xe5, - 0xe7, 0xc6, 0xe5, 0xe4, 0xe7, 0xc6, 0xe6, 0xe5, 0xe7, 0xc6, 0xe6, 0xe4, - 0xe7, 0xc6, 0xe6, 0xe5, 0xe7, 0xc6, 0xe6, 0xe4, 0xe7, 0xc6, 0xe7, 0xe5, - 0xe7, 0xc6, 0xe7, 0xe4, 0xe7, 0xc6, 0xe7, 0xe5, 0xe7, 0xc6, 0xe7, 0xe4, - 0xe7, 0xc6, 0xe7, 0xe4, 0xe8, 0xc6, 0xe7, 0xe4, 0xe8, 0xc6, 0xe7, 0xe4, - 0xe8, 0xc6, 0xe7, 0xe4, 0xe8, 0xc6, 0xe7, 0xe4, 0xe9, 0xc6, 0xe7, 0xe4, - 0xe9, 0xc6, 0xe7, 0xe4, 0xe9, 0xc6, 0xeb, 0xe4, 0xe9, 0xc6, 0xeb, 0xe4, - 0xea, 0xc6, 0xeb, 0xe4, 0xea, 0xc6, 0xeb, 0xe4, 0xea, 0xc6, 0xeb, 0xe4, - 0xea, 0xc6, 0xeb, 0xe4, 0xeb, 0xc6, 0xeb, 0xe4, 0xeb, 0xc6, 0xeb, 0xe4, - 0xeb, 0xc6, 0xeb, 0xe4, 0xeb, 0xc6, 0xec, 0xe4, 0xeb, 0xc6, 0xec, 0xe4, - 0xeb, 0xc6, 0xec, 0xe3, 0xeb, 0xc6, 0xec, 0xe4, 0xeb, 0xc6, 0xec, 0xe3, - 0xeb, 0xc6, 0xed, 0xe4, 0xeb, 0xc6, 0xed, 0xe3, 0xeb, 0xc6, 0xed, 0xe4, - 0xeb, 0xc6, 0xed, 0xe3, 0xeb, 0xc6, 0xee, 0xe4, 0xeb, 0xc6, 0xee, 0xe3, - 0xeb, 0xc6, 0xee, 0xe4, 0xeb, 0xc6, 0xee, 0xe3, 0xeb, 0xc6, 0xef, 0xe4, - 0xeb, 0xc6, 0xef, 0xe3, 0xeb, 0xc6, 0xef, 0xe4, 0xeb, 0xc6, 0xef, 0xe3, - 0xeb, 0xc6, 0xf0, 0xe4, 0xeb, 0xc6, 0xf0, 0xe3, 0xeb, 0xc6, 0xf0, 0xe4, - 0xeb, 0xc6, 0xf0, 0xe3, 0xeb, 0xc6, 0xf1, 0xe4, 0xeb, 0xc6, 0xf1, 0xe3, - 0xeb, 0xc6, 0xf1, 0xe4, 0xeb, 0xc6, 0xf1, 0xe3, 0xeb, 0xc6, 0xf2, 0xe4, - 0xeb, 0xc6, 0xf2, 0xe3, 0xeb, 0xc6, 0xf2, 0xe4, 0xeb, 0xc6, 0xf2, 0xe3, - 0xeb, 0xc6, 0xf2, 0xe4, 0xeb, 0xc6, 0xf3, 0xe3, 0xeb, 0xc6, 0xf3, 0xec, - 0xf1, 0xc6, 0xf3, 0xec, 0xf1, 0xc6, 0xf3, 0xec, 0xf1, 0xc6, 0xf4, 0xec, - 0xf1, 0xc6, 0xf4, 0xec, 0xf1, 0xc6, 0xf4, 0xec, 0xf1, 0xc6, 0xf4, 0xec, - 0xf1, 0xc6, 0xf5, 0xec, 0xf1, 0xc6, 0xf5, 0xec, 0xf1, 0xc6, 0xf5, 0xec, - 0xf1, 0xc6, 0xf5, 0xec, 0xf1, 0xc6, 0xf5, 0xec, 0xf1, 0xc6, 0xf6, 0xec, - 0xf1, 0xc6, 0xf6, 0xec, 0xf1, 0xc6, 0xf6, 0xec, 0xf1, 0xc6, 0xf6, 0xec, - 0xf1, 0xc6, 0xf7, 0xec, 0xf1, 0xc6, 0xf7, 0xec, 0xf1, 0xc6, 0xf7, 0xec, - 0xf1, 0xc6, 0xf7, 0xec, 0xf1, 0xc6, 0xf8, 0xec, 0xf1, 0xc6, 0xf8, 0xec, - 0xf1, 0xc6, 0xf8, 0xec, 0xf1, 0xc6, 0xf8, 0xec, 0xf1, 0xc6, 0xf8, 0xec, - 0xf1, 0xc6, 0xf9, 0xec, 0xf1, 0xc6, 0xf9, 0xec, 0xf1, 0xc6, 0xf9, 0xec, - 0xf1, 0xc6, 0xf9, 0xec, 0xf1, 0xc6, 0xfa, 0xec, 0xf1, 0xc6, 0xfa, 0xec, - 0xf1, 0xc6, 0xfa, 0xec, 0xf1, 0xc6, 0xfa, 0xec, 0xf1, 0xc6, 0xfa, 0xec, - 0xf1, 0xc6, 0xfb, 0xec, 0xf1, 0xc6, 0xfb, 0xec, 0xf1, 0xc6, 0xfb, 0xec, - 0xf1, 0xc6, 0xfb, 0xec, 0xf1, 0xc6, 0xfc, 0xec, 0xf1, 0xc6, 0xfc, 0xec, - 0xf1, 0xc6, 0xfc, 0xec, 0xf1, 0xc6, 0xfc, 0xec, 0xf1, 0xc6, 0xfc, 0xec, - 0xf1, 0xc6, 0xfd, 0xec, 0xf1, 0xc6, 0xfd, 0xec, 0xf1, 0xc6, 0xfd, 0xec, - 0xf1, 0xc6, 0xfd, 0xec, 0xf1, 0xc6, 0xfe, 0xec, 0xf1, 0xc6, 0xfe, 0xec, - 0xf1, 0xc6, 0xfe, 0xec, 0xf1, 0xc6, 0xfe, 0xec, 0xf1, 0xc6, 0xfe, 0xec, - 0xf1, 0xc6, 0xff, 0xec, 0xf1, 0xc6, 0xff, 0xec, 0xf1, 0xc6, 0x03, 0xe9, - 0x86, 0xc6, 0x0a, 0xe7, 0x87, 0xc6, 0x0f, 0xe9, 0x86, 0xc6, 0x14, 0xe7, - 0x87, 0xc6, 0x17, 0xe9, 0x86, 0xc6, 0x1b, 0xe7, 0x87, 0xc6, 0x1e, 0xe9, - 0x86, 0xc6, 0x20, 0xe7, 0x87, 0xc6, 0x23, 0xe9, 0x86, 0xc6, 0x25, 0xe7, - 0x87, 0xc6, 0x27, 0xe9, 0x86, 0xc6, 0x29, 0xe7, 0x87, 0xc6, 0x2b, 0xe9, - 0x86, 0xc6, 0x2d, 0xe7, 0x87, 0xc6, 0x2f, 0xe9, 0x86, 0xc6, 0x31, 0xe7, - 0x87, 0xc6, 0x32, 0xe9, 0x86, 0xc6, 0x34, 0xe7, 0x87, 0xc6, 0x35, 0xe9, - 0x86, 0xc6, 0x37, 0xe7, 0x87, 0xc6, 0x38, 0xe9, 0x86, 0xc6, 0x3a, 0xe7, - 0x87, 0xc6, 0x3b, 0xe9, 0x86, 0xc6, 0x3c, 0xe7, 0x87, 0xc6, 0x3e, 0xe9, - 0x86, 0xc6, 0x3f, 0xe7, 0x87, 0xc6, 0x40, 0xe9, 0x86, 0xc6, 0x42, 0xe7, - 0x87, 0xc6, 0x43, 0xe9, 0x86, 0xc6, 0x44, 0xe7, 0x87, 0xc6, 0x45, 0xe9, - 0x86, 0xc6, 0x46, 0xe7, 0x87, 0xc6, 0x47, 0xe9, 0x86, 0xc6, 0x48, 0xe7, - 0x87, 0xc6, 0x49, 0xe9, 0x86, 0xc6, 0x4a, 0xe7, 0x87, 0xc6, 0x4b, 0xe9, - 0x86, 0xc6, 0x4c, 0xe7, 0x87, 0xc6, 0x4d, 0xe9, 0x86, 0xc6, 0x4e, 0xe7, - 0x87, 0xc6, 0x4f, 0xe9, 0x86, 0xc6, 0x50, 0xe7, 0x87, 0xc6, 0x51, 0xe9, - 0x86, 0xc6, 0x52, 0xe7, 0x87, 0xc6, 0x53, 0xe9, 0x86, 0xc6, 0x54, 0xe7, - 0x87, 0xc6, 0x55, 0xe9, 0x86, 0xc6, 0x56, 0xe7, 0x87, 0xc6, 0x57, 0xe9, - 0x86, 0xc6, 0x58, 0xe7, 0x87, 0xc6, 0x58, 0xe9, 0x86, 0xc6, 0x59, 0xe7, - 0x87, 0xc6, 0x5a, 0xe6, 0x87, 0xc6, 0x5b, 0xe7, 0x87, 0xc6, 0x5c, 0xe6, - 0x87, 0xc6, 0x5d, 0xe7, 0x87, 0xc6, 0x5d, 0xe6, 0x87, 0xc6, 0x5e, 0xe7, - 0x87, 0xc6, 0x5f, 0xe6, 0x87, 0xc6, 0x60, 0xe7, 0x87, 0xc6, 0x60, 0xe6, - 0x87, 0xc6, 0x61, 0xe7, 0x87, 0xc6, 0x62, 0xe6, 0x87, 0xc6, 0x63, 0xe7, - 0x87, 0xc6, 0x63, 0xe6, 0x87, 0xc6, 0x64, 0xe7, 0x87, 0xc6, 0x65, 0xe6, - 0x87, 0xc6, 0x66, 0xe7, 0x87, 0xc6, 0x66, 0xe6, 0x87, 0xc6, 0x67, 0xe7, - 0x87, 0xc6, 0x68, 0xe6, 0x87, 0xc6, 0x68, 0xe7, 0x87, 0xc6, 0x69, 0xe6, - 0x87, 0xc6, 0x6a, 0xe7, 0x87, 0xc6, 0x6a, 0xe6, 0x87, 0xc6, 0x6b, 0xe7, - 0x87, 0xc6, 0x6c, 0xe6, 0x87, 0xc6, 0x6c, 0xe7, 0x87, 0xc6, 0x6d, 0xe6, - 0x87, 0xc6, 0x6e, 0xe7, 0x87, 0xc6, 0x6e, 0xe6, 0x87, 0xc6, 0x6f, 0xe7, - 0x87, 0xc6, 0x70, 0xe6, 0x87, 0xc6, 0x70, 0xe7, 0x87, 0xc6, 0x71, 0xe6, - 0x87, 0xc6, 0x72, 0xe7, 0x87, 0xc6, 0x72, 0xe6, 0x87, 0xc6, 0x73, 0xe7, - 0x87, 0xc6, 0x73, 0xe6, 0x87, 0xc6, 0x74, 0xe4, 0x88, 0xc6, 0x75, 0xe6, - 0x87, 0xc6, 0x75, 0xe4, 0x88, 0xc6, 0x76, 0xe6, 0x87, 0xc6, 0x76, 0xe4, - 0x88, 0xc6, 0x77, 0xe6, 0x87, 0xc6, 0x78, 0xe4, 0x88, 0xc6, 0x78, 0xe6, - 0x87, 0xc6, 0x79, 0xe4, 0x88, 0xc6, 0x79, 0xe6, 0x87, 0xc6, 0x7a, 0xe4, - 0x88, 0xc6, 0x7a, 0xe6, 0x87, 0xc6, 0x7b, 0xe4, 0x88, 0xc6, 0x7c, 0xe6, - 0x87, 0xc6, 0x7c, 0xe4, 0x88, 0xc6, 0x7d, 0xe6, 0x87, 0xc6, 0x7d, 0xe4, - 0x88, 0xc6, 0x7e, 0xe6, 0x87, 0xc6, 0x7e, 0xe4, 0x88, 0xc6, 0x7f, 0xe6, - 0x87, 0xc6, 0x7f, 0xe4, 0x88, 0xc6, 0x80, 0xe6, 0x87, 0xc6, 0x81, 0xe4, - 0x88, 0xc6, 0x81, 0xe6, 0x87, 0xc6, 0x82, 0xe4, 0x88, 0xc6, 0x82, 0xe6, - 0x87, 0xc6, 0x83, 0xe4, 0x88, 0xc6, 0x83, 0xe6, 0x87, 0xc6, 0x84, 0xe4, - 0x88, 0xc6, 0x84, 0xe4, 0x88, 0xc6, 0x85, 0xe4, 0x88, 0xc6, 0x85, 0xe4, - 0x88, 0xc6, 0x86, 0xe4, 0x88, 0xc6, 0x86, 0xe4, 0x88, 0xc6, 0x87, 0xe4, - 0x88, 0xc6, 0x87, 0xe4, 0x88, 0xc6, 0x87, 0xe4, 0x88, 0xc6, 0x87, 0xe4, - 0x88, 0xc6, 0x87, 0xe4, 0x89, 0xc6, 0x87, 0xe4, 0x89, 0xc6, 0x88, 0xe4, - 0x8a, 0xc4, 0x87, 0xe4, 0x8a, 0xc6, 0x88, 0xe4, 0x8b, 0xc4, 0x87, 0xe4, - 0x8b, 0xc6, 0x88, 0xe4, 0x8c, 0xc4, 0x87, 0xe4, 0x8c, 0xc6, 0x88, 0xe4, - 0x8d, 0xc4, 0x87, 0xe4, 0x8d, 0xc6, 0x88, 0xe4, 0x8e, 0xc4, 0x87, 0xe4, - 0x8e, 0xc6, 0x88, 0xe4, 0x8e, 0xc4, 0x87, 0xe4, 0x8f, 0xc6, 0x88, 0xe4, - 0x8f, 0xc4, 0x87, 0xe4, 0x90, 0xc6, 0x88, 0xe4, 0x90, 0xc4, 0x87, 0xe4, - 0x91, 0xc6, 0x88, 0xe4, 0x91, 0xc4, 0x87, 0xe4, 0x92, 0xc6, 0x88, 0xe4, - 0x92, 0xc4, 0x87, 0xe4, 0x93, 0xc6, 0x88, 0xe4, 0x93, 0xc4, 0x88, 0xe4, - 0x94, 0xc1, 0x88, 0xe4, 0x94, 0xc4, 0x88, 0xe4, 0x94, 0xc1, 0x88, 0xe4, - 0x95, 0xc4, 0x88, 0xe4, 0x95, 0xc1, 0x88, 0xe4, 0x96, 0xc4, 0x88, 0xe4, - 0x96, 0xc1, 0x88, 0xe4, 0x97, 0xc4, 0x88, 0xe4, 0x97, 0xc1, 0x88, 0xe4, - 0x98, 0xc4, 0x88, 0xe4, 0x98, 0xc1, 0x88, 0xe4, 0x98, 0xc4, 0x88, 0xe4, - 0x99, 0xc1, 0x88, 0xe4, 0x99, 0xc4, 0x88, 0xe4, 0x9a, 0xc1, 0x88, 0xe4, - 0x9a, 0xc4, 0x88, 0xe4, 0x9a, 0xc1, 0x88, 0xe4, 0x9b, 0xc4, 0x88, 0xe4, - 0x9b, 0xc1, 0x88, 0xe4, 0x9c, 0xc4, 0x88, 0xe4, 0x9c, 0xc1, 0x88, 0xe4, - 0x9d, 0xc4, 0x88, 0xe4, 0x9d, 0xc1, 0x88, 0xe4, 0x9d, 0xc4, 0x88, 0xe4, - 0x9e, 0xc1, 0x88, 0xe4, 0x9e, 0xc4, 0x88, 0xe4, 0x9f, 0xc1, 0x88, 0xe4, - 0x9f, 0xc4, 0x88, 0xe4, 0x9f, 0xc1, 0x88, 0xe4, 0xa0, 0xc4, 0x88, 0xe4, - 0xa0, 0xc1, 0x88, 0xe4, 0xa1, 0xc4, 0x88, 0xe4, 0xa1, 0xc1, 0x88, 0xe4, - 0xa1, 0xc4, 0x88, 0xe4, 0xa2, 0xc1, 0x88, 0xe4, 0xa2, 0xc4, 0x88, 0xe4, - 0xa3, 0xc1, 0x89, 0xe4, 0xa3, 0xbf, 0x88, 0xe4, 0xa3, 0xc1, 0x89, 0xe4, - 0xa4, 0xbf, 0x88, 0xe4, 0xa4, 0xc1, 0x89, 0xe4, 0xa5, 0xbf, 0x88, 0xe4, - 0xa5, 0xc1, 0x89, 0xe4, 0xa5, 0xbf, 0x88, 0xe4, 0xa6, 0xc1, 0x89, 0xe4, - 0xa6, 0xbf, 0x88, 0xe4, 0xa6, 0xc1, 0x89, 0xe4, 0xa7, 0xbf, 0x88, 0xe4, - 0xa7, 0xc1, 0x89, 0xe4, 0xa8, 0xbf, 0x88, 0xe4, 0xa8, 0xc1, 0x89, 0xe4, - 0xa8, 0xbf, 0x88, 0xe4, 0xa9, 0xc1, 0x89, 0xe4, 0xa9, 0xbf, 0x88, 0xe4, - 0xaa, 0xc1, 0x89, 0xe4, 0xaa, 0xbf, 0x88, 0xe4, 0xaa, 0xc1, 0xa6, 0xe4, - 0xab, 0xee, 0xa6, 0xe4, 0xab, 0xee, 0xa6, 0xe4, 0xab, 0xee, 0xa6, 0xe4, - 0xac, 0xee, 0xa6, 0xe4, 0xac, 0xee, 0xa6, 0xe4, 0xac, 0xee, 0xa6, 0xe4, - 0xad, 0xee, 0xa6, 0xe4, 0xad, 0xee, 0xab, 0xe4, 0xae, 0xef, 0xa6, 0xe4, - 0xae, 0xee, 0xab, 0xe4, 0xae, 0xef, 0xaa, 0xe4, 0xaf, 0xef, 0xab, 0xe4, - 0xaf, 0xef, 0xaa, 0xe4, 0xaf, 0xef, 0xab, 0xe4, 0xb0, 0xef, 0xaa, 0xe4, - 0xb0, 0xef, 0xab, 0xe4, 0xb0, 0xef, 0xaa, 0xe4, 0xb1, 0xef, 0xab, 0xe4, - 0xb1, 0xef, 0xaf, 0xe4, 0xb2, 0xf0, 0xab, 0xe4, 0xb2, 0xef, 0xaf, 0xe4, - 0xb2, 0xf0, 0xae, 0xe4, 0xb3, 0xf0, 0xaf, 0xe4, 0xb3, 0xf0, 0xce, 0xe4, - 0xb3, 0xcd, 0xce, 0xe4, 0xb4, 0xca, 0xce, 0xe4, 0xb4, 0xcd, 0xce, 0xe4, - 0xb4, 0xca, 0xce, 0xe4, 0xb5, 0xcd, 0xce, 0xe4, 0xb5, 0xca, 0xce, 0xe4, - 0xb5, 0xcd, 0xce, 0xe4, 0xb6, 0xca, 0xce, 0xe4, 0xb6, 0xcd, 0xce, 0xe4, - 0xb6, 0xca, 0xce, 0xe4, 0xb7, 0xcd, 0xce, 0xe4, 0xb7, 0xca, 0xce, 0xe4, - 0xb7, 0xcd, 0xce, 0xe4, 0xb8, 0xca, 0xce, 0xe4, 0xb8, 0xcd, 0xce, 0xe4, - 0xb8, 0xca, 0xce, 0xe4, 0xb9, 0xcd, 0xce, 0xe4, 0xb9, 0xca, 0xce, 0xe4, - 0xb9, 0xcd, 0xce, 0xe4, 0xba, 0xca, 0xce, 0xe4, 0xba, 0xcd, 0xce, 0xe4, - 0xba, 0xca, 0xce, 0xe4, 0xbb, 0xcd, 0xce, 0xe4, 0xbb, 0xca, 0xce, 0xe4, - 0xbb, 0xcd, 0xce, 0xe4, 0xbc, 0xca, 0xce, 0xe4, 0xbc, 0xcd, 0xce, 0xe4, - 0xbc, 0xca, 0xce, 0xe4, 0xbd, 0xcd, 0xce, 0xe4, 0xbd, 0xca, 0xce, 0xe4, - 0xbd, 0xcd, 0xce, 0xe4, 0xbe, 0xca, 0xce, 0xe4, 0xbe, 0xcd, 0xce, 0xe4, - 0xbe, 0xca, 0xce, 0xe4, 0xbf, 0xcd, 0xce, 0xe4, 0xbf, 0xca, 0xce, 0xe4, - 0xbf, 0xcd, 0xce, 0xe4, 0xc0, 0xca, 0xce, 0xe4, 0xc0, 0xc7, 0xce, 0xe4, - 0xc0, 0xca, 0xce, 0xe4, 0xc1, 0xc7, 0xce, 0xe4, 0xc1, 0xca, 0xce, 0xe4, - 0xc1, 0xc7, 0xce, 0xe4, 0xc1, 0xca, 0xce, 0xe4, 0xc2, 0xc7, 0xce, 0xe4, - 0xc2, 0xca, 0xce, 0xe4, 0xc2, 0xc7, 0xce, 0xe4, 0xc3, 0xca, 0xce, 0xe4, - 0xc3, 0xc7, 0xce, 0xe4, 0xc3, 0xca, 0xce, 0xe4, 0xc4, 0xc7, 0xce, 0xe4, - 0xc4, 0xca, 0xce, 0xe4, 0xc4, 0xc7, 0xce, 0xe4, 0xc5, 0xca, 0xce, 0xe4, - 0xc5, 0xc7, 0xce, 0xe4, 0xc5, 0xca, 0xce, 0xe4, 0xc6, 0xc7, 0xce, 0xe4, - 0xc6, 0xca, 0xce, 0xe4, 0xc6, 0xc7, 0xce, 0xe4, 0xc6, 0xca, 0xce, 0xe4, - 0xc7, 0xc7, 0xce, 0xe4, 0xc7, 0xca, 0xce, 0xe4, 0xc7, 0xc7, 0xce, 0xe4, - 0xc8, 0xca, 0xce, 0xe4, 0xc8, 0xc7, 0xce, 0xe4, 0xc8, 0xca, 0xce, 0xe4, - 0xc9, 0xc7, 0xce, 0xe4, 0xc9, 0xca, 0xce, 0xe4, 0xc9, 0xc7, 0xce, 0xe4, - 0xc9, 0xca, 0xce, 0xe4, 0xca, 0xc7, 0xcf, 0xe4, 0xca, 0xc6, 0xce, 0xe4, - 0xca, 0xc7, 0xcf, 0xe4, 0xcb, 0xc6, 0xce, 0xe4, 0xcb, 0xc7, 0xcf, 0xe4, - 0xcb, 0xc6, 0xce, 0xe4, 0xcc, 0xc7, 0xcf, 0xe4, 0xcc, 0xc6, 0xce, 0xe4, - 0xcc, 0xc7, 0xcf, 0xe4, 0xcc, 0xc6, 0xce, 0xe4, 0xcd, 0xc7, 0xcf, 0xe4, - 0xcd, 0xc6, 0xce, 0xe4, 0xcd, 0xc7, 0xcf, 0xe4, 0xce, 0xc6, 0xce, 0xe4, - 0xce, 0xc7, 0xcf, 0xe4, 0xce, 0xc6, 0xcf, 0xe4, 0xce, 0xc6, 0xcf, 0xe4, - 0xce, 0xc6, 0xcf, 0xe4, 0xce, 0xc6, 0xcf, 0xe4, 0xce, 0xc6, 0xd0, 0xe4, - 0xce, 0xc6, 0xd0, 0xe3, 0xcf, 0xc6, 0xd0, 0xe4, 0xce, 0xc6, 0xd0, 0xe3, - 0xcf, 0xc6, 0xd1, 0xe4, 0xce, 0xc6, 0xd1, 0xe3, 0xcf, 0xc6, 0xd1, 0xe4, - 0xce, 0xc6, 0xd2, 0xe3, 0xcf, 0xc6, 0xd2, 0xe4, 0xce, 0xc6, 0xd2, 0xe3, - 0xcf, 0xc6, 0xd2, 0xe4, 0xce, 0xc6, 0xd3, 0xe3, 0xcf, 0xc6, 0xd3, 0xe4, - 0xce, 0xc6, 0xd3, 0xe3, 0xcf, 0xc6, 0xd4, 0xe4, 0xce, 0xc6, 0xd4, 0xe3, - 0xcf, 0xc6, 0xd4, 0xe4, 0xce, 0xc6, 0xd4, 0xe3, 0xcf, 0xc6, 0xd5, 0xe4, - 0xce, 0xc6, 0xd5, 0xe3, 0xcf, 0xc6, 0xd5, 0xe4, 0xce, 0xc6, 0xd6, 0xe3, - 0xcf, 0xc6, 0xd6, 0xe2, 0xcf, 0xc6, 0xd6, 0xe3, 0xcf, 0xc6, 0xd6, 0xe2, - 0xcf, 0xc6, 0xd7, 0xe3, 0xcf, 0xc6, 0xd7, 0xe2, 0xcf, 0xc6, 0xd7, 0xe3, - 0xcf, 0xc6, 0xd7, 0xe2, 0xcf, 0xc6, 0xd8, 0xe3, 0xcf, 0xc6, 0xd8, 0xe2, - 0xcf, 0xc6, 0xd8, 0xe3, 0xcf, 0xc6, 0xd9, 0xe2, 0xcf, 0xc6, 0xd9, 0xe3, - 0xcf, 0xc6, 0xd9, 0xe2, 0xcf, 0xc6, 0xd9, 0xe3, 0xcf, 0xc6, 0xda, 0xe2, - 0xcf, 0xc6, 0xda, 0xe3, 0xcf, 0xc6, 0xda, 0xe2, 0xcf, 0xc6, 0xda, 0xe3, - 0xcf, 0xc6, 0xdb, 0xe2, 0xcf, 0xc6, 0xdb, 0xe3, 0xcf, 0xc6, 0xdb, 0xe2, - 0xcf, 0xc6, 0xdb, 0xe6, 0xe7, 0xc6, 0xdc, 0xe7, 0xe7, 0xc6, 0xdc, 0xe6, - 0xe7, 0xc6, 0xdc, 0xe7, 0xe7, 0xc6, 0xdd, 0xe6, 0xe7, 0xc6, 0xdd, 0xe7, - 0xe7, 0xc6, 0xdd, 0xe6, 0xe7, 0xc6, 0xdd, 0xe7, 0xe7, 0xc6, 0xde, 0xe6, - 0xe7, 0xc6, 0xde, 0xe5, 0xe7, 0xc6, 0xde, 0xe6, 0xe7, 0xc6, 0xde, 0xe5, - 0xe7, 0xc6, 0xdf, 0xe6, 0xe7, 0xc6, 0xdf, 0xe5, 0xe7, 0xc6, 0xdf, 0xe6, - 0xe7, 0xc6, 0xdf, 0xe5, 0xe7, 0xc6, 0xe0, 0xe6, 0xe7, 0xc6, 0xe0, 0xe5, - 0xe7, 0xc6, 0xe0, 0xe6, 0xe7, 0xc6, 0xe1, 0xe5, 0xe7, 0xc6, 0xe1, 0xe6, - 0xe7, 0xc6, 0xe1, 0xe5, 0xe7, 0xc6, 0xe1, 0xe6, 0xe7, 0xc6, 0xe2, 0xe5, - 0xe7, 0xc6, 0xe2, 0xe6, 0xe7, 0xc6, 0xe2, 0xe5, 0xe7, 0xc6, 0xe2, 0xe6, - 0xe7, 0xc6, 0xe3, 0xe5, 0xe7, 0xc6, 0xe3, 0xe6, 0xe7, 0xc6, 0xe3, 0xe5, - 0xe7, 0xc6, 0xe3, 0xe6, 0xe7, 0xc6, 0xe4, 0xe5, 0xe7, 0xc6, 0xe4, 0xe6, - 0xe7, 0xc6, 0xe4, 0xe5, 0xe7, 0xc6, 0xe4, 0xe6, 0xe7, 0xc6, 0xe5, 0xe5, - 0xe7, 0xc6, 0xe5, 0xe6, 0xe7, 0xc6, 0xe5, 0xe5, 0xe7, 0xc6, 0xe5, 0xe4, - 0xe7, 0xc6, 0xe6, 0xe5, 0xe7, 0xc6, 0xe6, 0xe4, 0xe7, 0xc6, 0xe6, 0xe5, - 0xe7, 0xc6, 0xe6, 0xe4, 0xe7, 0xc6, 0xe7, 0xe5, 0xe7, 0xc6, 0xe7, 0xe4, - 0xe7, 0xc6, 0xe7, 0xe5, 0xe7, 0xc6, 0xe7, 0xe4, 0xe7, 0xc6, 0xe7, 0xe4, - 0xe8, 0xc6, 0xe7, 0xe4, 0xe8, 0xc6, 0xe7, 0xe4, 0xe8, 0xc6, 0xe7, 0xe4, - 0xe8, 0xc6, 0xe7, 0xe4, 0xe9, 0xc6, 0xe7, 0xe4, 0xe9, 0xc6, 0xe7, 0xe4, - 0xe9, 0xc6, 0xeb, 0xe4, 0xe9, 0xc8, 0xeb, 0xe4, 0xea, 0xc6, 0xeb, 0xe4, - 0xea, 0xc8, 0xeb, 0xe4, 0xea, 0xc6, 0xeb, 0xe4, 0xea, 0xc6, 0xeb, 0xe4, - 0xeb, 0xc6, 0xeb, 0xe4, 0xeb, 0xc6, 0xeb, 0xe4, 0xeb, 0xc6, 0xeb, 0xe4, - 0xeb, 0xc6, 0xec, 0xe4, 0xeb, 0xc6, 0xec, 0xe4, 0xeb, 0xc6, 0xec, 0xe3, - 0xeb, 0xc6, 0xec, 0xe4, 0xeb, 0xc6, 0xec, 0xe3, 0xeb, 0xc6, 0xed, 0xe4, - 0xeb, 0xc6, 0xed, 0xe3, 0xeb, 0xc6, 0xed, 0xe4, 0xeb, 0xc6, 0xed, 0xe3, - 0xeb, 0xc6, 0xee, 0xe4, 0xeb, 0xc6, 0xee, 0xe3, 0xeb, 0xc6, 0xee, 0xe4, - 0xeb, 0xc6, 0xee, 0xe3, 0xeb, 0xc6, 0xef, 0xe4, 0xeb, 0xc6, 0xef, 0xe3, - 0xeb, 0xc6, 0xef, 0xe4, 0xeb, 0xc6, 0xef, 0xe3, 0xeb, 0xc6, 0xf0, 0xe4, - 0xeb, 0xc6, 0xf0, 0xe3, 0xeb, 0xc6, 0xf0, 0xe4, 0xeb, 0xc6, 0xf0, 0xe3, - 0xeb, 0xc6, 0xf1, 0xe4, 0xeb, 0xc6, 0xf1, 0xe3, 0xeb, 0xc6, 0xf1, 0xe4, - 0xeb, 0xc6, 0xf1, 0xe3, 0xeb, 0xc6, 0xf2, 0xe4, 0xeb, 0xc6, 0xf2, 0xe3, - 0xeb, 0xc6, 0xf2, 0xe4, 0xeb, 0xc6, 0xf2, 0xe3, 0xeb, 0xc6, 0xf2, 0xec, - 0xf0, 0xc6, 0xf3, 0xe3, 0xeb, 0xc6, 0xf3, 0xec, 0xf0, 0xc6, 0xf3, 0xec, - 0xf1, 0xc6, 0xf3, 0xec, 0xf0, 0xc6, 0xf4, 0xec, 0xf1, 0xc6, 0xf4, 0xec, - 0xf0, 0xc6, 0xf4, 0xec, 0xf1, 0xc6, 0xf4, 0xec, 0xf1, 0xc6, 0xf5, 0xec, - 0xf1, 0xc6, 0xf5, 0xec, 0xf1, 0xc6, 0xf5, 0xec, 0xf1, 0xc6, 0xf5, 0xec, - 0xf1, 0xc6, 0xf5, 0xec, 0xf1, 0xc6, 0xf6, 0xec, 0xf1, 0xc6, 0xf6, 0xec, - 0xf1, 0xc6, 0xf6, 0xec, 0xf1, 0xc6, 0xf6, 0xec, 0xf1, 0xc6, 0xf7, 0xec, - 0xf1, 0xc6, 0xf7, 0xec, 0xf1, 0xc6, 0xf7, 0xec, 0xf1, 0xc6, 0xf7, 0xec, - 0xf1, 0xc6, 0xf8, 0xec, 0xf1, 0xc6, 0xf8, 0xec, 0xf1, 0xc6, 0xf8, 0xec, - 0xf1, 0xc6, 0xf8, 0xec, 0xf1, 0xc6, 0xf8, 0xec, 0xf1, 0xc6, 0xf9, 0xec, - 0xf1, 0xc6, 0xf9, 0xec, 0xf1, 0xc6, 0xf9, 0xec, 0xf1, 0xc6, 0xf9, 0xec, - 0xf1, 0xc6, 0xfa, 0xec, 0xf1, 0xc6, 0xfa, 0xec, 0xf1, 0xc6, 0xfa, 0xec, - 0xf1, 0xc6, 0xfa, 0xec, 0xf1, 0xc6, 0xfa, 0xec, 0xf1, 0xc6, 0xfb, 0xec, - 0xf1, 0xc6, 0xfb, 0xec, 0xf1, 0xc6, 0xfb, 0xec, 0xf1, 0xc6, 0xfb, 0xec, - 0xf1, 0xc6, 0xfc, 0xec, 0xf1, 0xc6, 0xfc, 0xec, 0xf1, 0xc6, 0xfc, 0xec, - 0xf1, 0xc6, 0xfc, 0xec, 0xf1, 0xc6, 0xfc, 0xec, 0xf1, 0xc6, 0xfd, 0xec, - 0xf1, 0xc6, 0xfd, 0xec, 0xf1, 0xc6, 0xfd, 0xec, 0xf1, 0xc6, 0xfd, 0xec, - 0xf1, 0xc6, 0xfe, 0xec, 0xf1, 0xc6, 0xfe, 0xec, 0xf1, 0xc6, 0xfe, 0xec, - 0xf1, 0xc6, 0xfe, 0xec, 0xf1, 0xc6, 0xfe, 0xec, 0xf1, 0xc6, 0xff, 0xec, - 0xf1, 0xc6, 0xff, 0xec, 0xf1, 0xc6, 0x03, 0xe9, 0x86, 0xc7, 0x0a, 0xeb, - 0x86, 0xc7, 0x0f, 0xe9, 0x86, 0xc7, 0x14, 0xeb, 0x86, 0xc7, 0x17, 0xe9, - 0x86, 0xc7, 0x1b, 0xeb, 0x86, 0xc7, 0x1e, 0xe9, 0x86, 0xc7, 0x20, 0xeb, - 0x86, 0xc7, 0x23, 0xe9, 0x86, 0xc7, 0x25, 0xeb, 0x86, 0xc7, 0x27, 0xe9, - 0x86, 0xc7, 0x29, 0xeb, 0x86, 0xc7, 0x2b, 0xe9, 0x86, 0xc7, 0x2d, 0xeb, - 0x86, 0xc7, 0x2f, 0xe9, 0x86, 0xc7, 0x31, 0xe8, 0x87, 0xc7, 0x32, 0xe9, - 0x86, 0xc7, 0x34, 0xe8, 0x87, 0xc7, 0x35, 0xe9, 0x86, 0xc7, 0x37, 0xe8, - 0x87, 0xc7, 0x38, 0xe9, 0x86, 0xc7, 0x3a, 0xe8, 0x87, 0xc7, 0x3b, 0xe9, - 0x86, 0xc7, 0x3c, 0xe8, 0x87, 0xc7, 0x3e, 0xe9, 0x86, 0xc7, 0x3f, 0xe8, - 0x87, 0xc7, 0x40, 0xe9, 0x86, 0xc7, 0x42, 0xe8, 0x87, 0xc7, 0x43, 0xe9, - 0x86, 0xc7, 0x44, 0xe8, 0x87, 0xc7, 0x45, 0xe9, 0x86, 0xc7, 0x46, 0xe8, - 0x87, 0xc7, 0x47, 0xe9, 0x86, 0xc7, 0x48, 0xe8, 0x87, 0xc7, 0x49, 0xe9, - 0x86, 0xc7, 0x4a, 0xe8, 0x87, 0xc7, 0x4b, 0xe9, 0x86, 0xc7, 0x4c, 0xe8, - 0x87, 0xc7, 0x4d, 0xe9, 0x86, 0xc7, 0x4e, 0xe8, 0x87, 0xc7, 0x4f, 0xe9, - 0x86, 0xc7, 0x50, 0xe8, 0x87, 0xc7, 0x51, 0xe9, 0x86, 0xc7, 0x52, 0xe8, - 0x87, 0xc7, 0x53, 0xe9, 0x86, 0xc7, 0x54, 0xe8, 0x87, 0xc7, 0x55, 0xe9, - 0x86, 0xc7, 0x56, 0xe8, 0x87, 0xc7, 0x57, 0xe6, 0x87, 0xc7, 0x58, 0xe8, - 0x87, 0xc7, 0x58, 0xe6, 0x87, 0xc7, 0x59, 0xe8, 0x87, 0xc7, 0x5a, 0xe6, - 0x87, 0xc7, 0x5b, 0xe8, 0x87, 0xc7, 0x5c, 0xe6, 0x87, 0xc7, 0x5d, 0xe8, - 0x87, 0xc7, 0x5d, 0xe6, 0x87, 0xc7, 0x5e, 0xe8, 0x87, 0xc7, 0x5f, 0xe6, - 0x87, 0xc7, 0x60, 0xe8, 0x87, 0xc7, 0x60, 0xe6, 0x87, 0xc7, 0x61, 0xe8, - 0x87, 0xc7, 0x62, 0xe6, 0x87, 0xc7, 0x63, 0xe8, 0x87, 0xc7, 0x63, 0xe6, - 0x87, 0xc7, 0x64, 0xe8, 0x87, 0xc7, 0x65, 0xe6, 0x87, 0xc7, 0x66, 0xe8, - 0x87, 0xc7, 0x66, 0xe6, 0x87, 0xc7, 0x67, 0xe8, 0x87, 0xc7, 0x68, 0xe6, - 0x87, 0xc7, 0x68, 0xe8, 0x87, 0xc7, 0x69, 0xe6, 0x87, 0xc7, 0x6a, 0xe8, - 0x87, 0xc7, 0x6a, 0xe6, 0x87, 0xc7, 0x6b, 0xe8, 0x87, 0xc7, 0x6c, 0xe6, - 0x87, 0xc7, 0x6c, 0xe8, 0x87, 0xc7, 0x6d, 0xe6, 0x87, 0xc7, 0x6e, 0xe8, - 0x87, 0xc7, 0x6e, 0xe6, 0x87, 0xc7, 0x6f, 0xe8, 0x87, 0xc7, 0x70, 0xe6, - 0x87, 0xc7, 0x70, 0xe8, 0x87, 0xc7, 0x71, 0xe6, 0x87, 0xc7, 0x72, 0xe8, - 0x87, 0xc7, 0x72, 0xe6, 0x87, 0xc7, 0x73, 0xe8, 0x87, 0xc7, 0x73, 0xe6, - 0x87, 0xc7, 0x74, 0xe5, 0x88, 0xc7, 0x75, 0xe6, 0x87, 0xc7, 0x75, 0xe5, - 0x88, 0xc7, 0x76, 0xe6, 0x87, 0xc7, 0x76, 0xe5, 0x88, 0xc7, 0x77, 0xe6, - 0x87, 0xc7, 0x78, 0xe5, 0x88, 0xc7, 0x78, 0xe6, 0x87, 0xc7, 0x79, 0xe5, - 0x88, 0xc7, 0x79, 0xe6, 0x87, 0xc7, 0x7a, 0xe5, 0x88, 0xc7, 0x7a, 0xe6, - 0x87, 0xc7, 0x7b, 0xe5, 0x88, 0xc7, 0x7c, 0xe6, 0x87, 0xc7, 0x7c, 0xe5, - 0x88, 0xc7, 0x7d, 0xe6, 0x87, 0xc7, 0x7d, 0xe5, 0x88, 0xc7, 0x7e, 0xe6, - 0x87, 0xc7, 0x7e, 0xe5, 0x88, 0xc7, 0x7f, 0xe6, 0x87, 0xc7, 0x7f, 0xe5, - 0x88, 0xc7, 0x80, 0xe6, 0x87, 0xc7, 0x81, 0xe5, 0x88, 0xc7, 0x81, 0xe6, - 0x87, 0xc7, 0x82, 0xe5, 0x88, 0xc7, 0x82, 0xe6, 0x87, 0xc7, 0x83, 0xe5, - 0x88, 0xc7, 0x83, 0xe6, 0x87, 0xc7, 0x84, 0xe5, 0x88, 0xc7, 0x84, 0xe6, - 0x87, 0xc7, 0x85, 0xe5, 0x88, 0xc7, 0x85, 0xe6, 0x87, 0xc7, 0x86, 0xe5, - 0x88, 0xc7, 0x86, 0xe5, 0x88, 0xc7, 0x87, 0xe5, 0x88, 0xc7, 0x87, 0xe5, - 0x88, 0xc7, 0x87, 0xe5, 0x88, 0xc7, 0x87, 0xe5, 0x88, 0xc7, 0x87, 0xe5, - 0x89, 0xc7, 0x87, 0xe5, 0x89, 0xc7, 0x88, 0xe5, 0x8a, 0xc5, 0x87, 0xe5, - 0x8a, 0xc7, 0x88, 0xe5, 0x8b, 0xc5, 0x87, 0xe5, 0x8b, 0xc7, 0x88, 0xe5, - 0x8c, 0xc5, 0x87, 0xe5, 0x8c, 0xc7, 0x88, 0xe5, 0x8d, 0xc5, 0x87, 0xe5, - 0x8d, 0xc7, 0x88, 0xe5, 0x8e, 0xc5, 0x87, 0xe5, 0x8e, 0xc7, 0x88, 0xe5, - 0x8e, 0xc5, 0x87, 0xe5, 0x8f, 0xc7, 0x88, 0xe5, 0x8f, 0xc5, 0x87, 0xe5, - 0x90, 0xc7, 0x88, 0xe5, 0x90, 0xc5, 0x87, 0xe5, 0x91, 0xc7, 0x88, 0xe5, - 0x91, 0xc5, 0x87, 0xe5, 0x92, 0xc7, 0x88, 0xe5, 0x92, 0xc5, 0x87, 0xe5, - 0x93, 0xc7, 0x88, 0xe5, 0x93, 0xc5, 0x88, 0xe5, 0x94, 0xc2, 0x88, 0xe5, - 0x94, 0xc5, 0x88, 0xe5, 0x94, 0xc2, 0x88, 0xe5, 0x95, 0xc5, 0x88, 0xe5, - 0x95, 0xc2, 0x88, 0xe5, 0x96, 0xc5, 0x88, 0xe5, 0x96, 0xc2, 0x88, 0xe5, - 0x97, 0xc5, 0x88, 0xe5, 0x97, 0xc2, 0x88, 0xe5, 0x98, 0xc5, 0x88, 0xe5, - 0x98, 0xc2, 0x88, 0xe5, 0x98, 0xc5, 0x88, 0xe5, 0x99, 0xc2, 0x88, 0xe5, - 0x99, 0xc5, 0x88, 0xe5, 0x9a, 0xc2, 0x88, 0xe5, 0x9a, 0xc5, 0x88, 0xe5, - 0x9a, 0xc2, 0x88, 0xe5, 0x9b, 0xc5, 0x88, 0xe5, 0x9b, 0xc2, 0x88, 0xe5, - 0x9c, 0xc5, 0x88, 0xe5, 0x9c, 0xc2, 0x88, 0xe5, 0x9d, 0xc5, 0x88, 0xe5, - 0x9d, 0xc2, 0x88, 0xe5, 0x9d, 0xc5, 0x88, 0xe5, 0x9e, 0xc2, 0x88, 0xe5, - 0x9e, 0xc5, 0x88, 0xe5, 0x9f, 0xc2, 0x88, 0xe5, 0x9f, 0xc5, 0x88, 0xe5, - 0x9f, 0xc2, 0x88, 0xe5, 0xa0, 0xc5, 0x88, 0xe5, 0xa0, 0xc2, 0x88, 0xe5, - 0xa1, 0xc5, 0x88, 0xe5, 0xa1, 0xc2, 0x88, 0xe5, 0xa1, 0xc5, 0x88, 0xe5, - 0xa2, 0xc2, 0x88, 0xe5, 0xa2, 0xc5, 0x88, 0xe5, 0xa3, 0xc2, 0x88, 0xe5, - 0xa3, 0xc5, 0x88, 0xe5, 0xa3, 0xc2, 0x88, 0xe5, 0xa4, 0xc5, 0x88, 0xe5, - 0xa4, 0xc2, 0x88, 0xe5, 0xa5, 0xc5, 0x88, 0xe5, 0xa5, 0xc2, 0x88, 0xe5, - 0xa5, 0xc5, 0x88, 0xe5, 0xa6, 0xc2, 0x88, 0xe5, 0xa6, 0xc5, 0x88, 0xe5, - 0xa6, 0xc2, 0x88, 0xe5, 0xa7, 0xc5, 0x88, 0xe5, 0xa7, 0xc2, 0x88, 0xe5, - 0xa8, 0xc5, 0x88, 0xe5, 0xa8, 0xc2, 0x88, 0xe5, 0xa8, 0xc5, 0x88, 0xe5, - 0xa9, 0xc2, 0x89, 0xe5, 0xa9, 0xbe, 0x88, 0xe5, 0xaa, 0xc2, 0xa4, 0xe5, - 0xaa, 0xee, 0xa4, 0xe5, 0xaa, 0xee, 0xa4, 0xe5, 0xab, 0xee, 0xa4, 0xe5, - 0xab, 0xee, 0xa8, 0xe5, 0xab, 0xef, 0xa4, 0xe5, 0xac, 0xee, 0xa8, 0xe5, - 0xac, 0xef, 0xa8, 0xe5, 0xac, 0xef, 0xa8, 0xe5, 0xad, 0xef, 0xa8, 0xe5, - 0xad, 0xef, 0xa8, 0xe5, 0xae, 0xef, 0xa8, 0xe5, 0xae, 0xef, 0xa8, 0xe5, - 0xae, 0xef, 0xa8, 0xe5, 0xaf, 0xef, 0xa8, 0xe5, 0xaf, 0xef, 0xac, 0xe5, - 0xaf, 0xf0, 0xa8, 0xe5, 0xb0, 0xef, 0xac, 0xe5, 0xb0, 0xf0, 0xac, 0xe5, - 0xb0, 0xf0, 0xac, 0xe5, 0xb1, 0xf0, 0xac, 0xe5, 0xb1, 0xf0, 0xac, 0xe5, - 0xb2, 0xf0, 0xac, 0xe5, 0xb2, 0xf0, 0xac, 0xe5, 0xb2, 0xf0, 0xac, 0xe5, - 0xb3, 0xf0, 0xac, 0xe5, 0xb3, 0xf0, 0xb0, 0xe5, 0xb3, 0xf1, 0xce, 0xe5, - 0xb4, 0xd0, 0xce, 0xe5, 0xb4, 0xcd, 0xce, 0xe5, 0xb4, 0xd0, 0xce, 0xe5, - 0xb5, 0xcd, 0xce, 0xe5, 0xb5, 0xd0, 0xce, 0xe5, 0xb5, 0xcd, 0xce, 0xe5, - 0xb6, 0xd0, 0xce, 0xe5, 0xb6, 0xcd, 0xce, 0xe5, 0xb6, 0xd0, 0xce, 0xe5, - 0xb7, 0xcd, 0xce, 0xe5, 0xb7, 0xd0, 0xce, 0xe5, 0xb7, 0xcd, 0xce, 0xe5, - 0xb8, 0xd0, 0xce, 0xe5, 0xb8, 0xcd, 0xce, 0xe5, 0xb8, 0xd0, 0xce, 0xe5, - 0xb9, 0xcd, 0xce, 0xe5, 0xb9, 0xd0, 0xce, 0xe5, 0xb9, 0xcd, 0xce, 0xe5, - 0xba, 0xd0, 0xce, 0xe5, 0xba, 0xcd, 0xce, 0xe5, 0xba, 0xcb, 0xce, 0xe5, - 0xbb, 0xcd, 0xce, 0xe5, 0xbb, 0xcb, 0xce, 0xe5, 0xbb, 0xcd, 0xce, 0xe5, - 0xbc, 0xcb, 0xce, 0xe5, 0xbc, 0xcd, 0xce, 0xe5, 0xbc, 0xcb, 0xce, 0xe5, - 0xbd, 0xcd, 0xce, 0xe5, 0xbd, 0xcb, 0xce, 0xe5, 0xbd, 0xcd, 0xce, 0xe5, - 0xbe, 0xcb, 0xce, 0xe5, 0xbe, 0xcd, 0xce, 0xe5, 0xbe, 0xcb, 0xce, 0xe5, - 0xbf, 0xcd, 0xce, 0xe5, 0xbf, 0xcb, 0xce, 0xe5, 0xbf, 0xcd, 0xce, 0xe5, - 0xc0, 0xcb, 0xce, 0xe5, 0xc0, 0xcd, 0xce, 0xe5, 0xc0, 0xcb, 0xce, 0xe5, - 0xc1, 0xcd, 0xce, 0xe5, 0xc1, 0xcb, 0xce, 0xe5, 0xc1, 0xcd, 0xce, 0xe5, - 0xc1, 0xcb, 0xce, 0xe5, 0xc2, 0xcd, 0xce, 0xe5, 0xc2, 0xcb, 0xce, 0xe5, - 0xc2, 0xcd, 0xce, 0xe5, 0xc3, 0xcb, 0xce, 0xe5, 0xc3, 0xcd, 0xce, 0xe5, - 0xc3, 0xcb, 0xce, 0xe5, 0xc4, 0xc8, 0xce, 0xe5, 0xc4, 0xcb, 0xce, 0xe5, - 0xc4, 0xc8, 0xce, 0xe5, 0xc5, 0xcb, 0xce, 0xe5, 0xc5, 0xc8, 0xce, 0xe5, - 0xc5, 0xcb, 0xce, 0xe5, 0xc6, 0xc8, 0xce, 0xe5, 0xc6, 0xcb, 0xce, 0xe5, - 0xc6, 0xc8, 0xce, 0xe5, 0xc6, 0xcb, 0xce, 0xe5, 0xc7, 0xc8, 0xce, 0xe5, - 0xc7, 0xcb, 0xce, 0xe5, 0xc7, 0xc8, 0xce, 0xe5, 0xc8, 0xcb, 0xce, 0xe5, - 0xc8, 0xc8, 0xce, 0xe5, 0xc8, 0xcb, 0xce, 0xe5, 0xc9, 0xc8, 0xce, 0xe5, - 0xc9, 0xcb, 0xce, 0xe5, 0xc9, 0xc8, 0xce, 0xe5, 0xc9, 0xcb, 0xce, 0xe5, - 0xca, 0xc8, 0xcf, 0xe5, 0xca, 0xc7, 0xce, 0xe5, 0xca, 0xc8, 0xcf, 0xe5, - 0xcb, 0xc7, 0xce, 0xe5, 0xcb, 0xc8, 0xcf, 0xe5, 0xcb, 0xc7, 0xce, 0xe5, - 0xcc, 0xc8, 0xcf, 0xe5, 0xcc, 0xc7, 0xce, 0xe5, 0xcc, 0xc8, 0xcf, 0xe5, - 0xcc, 0xc7, 0xce, 0xe5, 0xcd, 0xc8, 0xcf, 0xe5, 0xcd, 0xc7, 0xce, 0xe5, - 0xcd, 0xc8, 0xcf, 0xe5, 0xce, 0xc7, 0xce, 0xe5, 0xce, 0xc8, 0xcf, 0xe5, - 0xce, 0xc7, 0xcf, 0xe5, 0xce, 0xc7, 0xcf, 0xe5, 0xce, 0xc7, 0xcf, 0xe5, - 0xce, 0xc7, 0xcf, 0xe5, 0xce, 0xc7, 0xd0, 0xe5, 0xce, 0xc7, 0xd0, 0xe5, - 0xce, 0xc7, 0xd0, 0xe5, 0xce, 0xc7, 0xd0, 0xe5, 0xce, 0xc7, 0xd1, 0xe5, - 0xce, 0xc7, 0xd1, 0xe3, 0xcf, 0xc7, 0xd1, 0xe5, 0xce, 0xc7, 0xd2, 0xe3, - 0xcf, 0xc7, 0xd2, 0xe5, 0xce, 0xc7, 0xd2, 0xe3, 0xcf, 0xc7, 0xd2, 0xe5, - 0xce, 0xc7, 0xd3, 0xe3, 0xcf, 0xc7, 0xd3, 0xe5, 0xce, 0xc7, 0xd3, 0xe3, - 0xcf, 0xc7, 0xd4, 0xe5, 0xce, 0xc7, 0xd4, 0xe3, 0xcf, 0xc7, 0xd4, 0xe5, - 0xce, 0xc7, 0xd4, 0xe3, 0xcf, 0xc7, 0xd5, 0xe5, 0xce, 0xc7, 0xd5, 0xe3, - 0xcf, 0xc7, 0xd5, 0xe5, 0xce, 0xc7, 0xd6, 0xe3, 0xcf, 0xc7, 0xd6, 0xe2, - 0xcf, 0xc7, 0xd6, 0xe3, 0xcf, 0xc7, 0xd6, 0xe2, 0xcf, 0xc7, 0xd7, 0xe3, - 0xcf, 0xc7, 0xd7, 0xe2, 0xcf, 0xc7, 0xd7, 0xe3, 0xcf, 0xc7, 0xd7, 0xe2, - 0xcf, 0xc7, 0xd8, 0xe3, 0xcf, 0xc7, 0xd8, 0xe2, 0xcf, 0xc7, 0xd8, 0xe3, - 0xcf, 0xc7, 0xd9, 0xe2, 0xcf, 0xc7, 0xd9, 0xe3, 0xcf, 0xc7, 0xd9, 0xe2, - 0xcf, 0xc7, 0xd9, 0xe3, 0xcf, 0xc7, 0xda, 0xe2, 0xcf, 0xc7, 0xda, 0xe3, - 0xcf, 0xc7, 0xda, 0xe2, 0xcf, 0xc7, 0xda, 0xe3, 0xcf, 0xc7, 0xdb, 0xe2, - 0xcf, 0xc7, 0xdb, 0xe3, 0xcf, 0xc7, 0xdb, 0xe2, 0xcf, 0xc7, 0xdb, 0xe6, - 0xe7, 0xc7, 0xdc, 0xe8, 0xe7, 0xc7, 0xdc, 0xe6, 0xe7, 0xc7, 0xdc, 0xe8, - 0xe7, 0xc7, 0xdd, 0xe6, 0xe7, 0xc7, 0xdd, 0xe8, 0xe7, 0xc7, 0xdd, 0xe6, - 0xe7, 0xc7, 0xdd, 0xe8, 0xe7, 0xc7, 0xde, 0xe6, 0xe7, 0xc7, 0xde, 0xe5, - 0xe7, 0xc7, 0xde, 0xe6, 0xe7, 0xc7, 0xde, 0xe5, 0xe7, 0xc7, 0xdf, 0xe6, - 0xe7, 0xc7, 0xdf, 0xe5, 0xe7, 0xc7, 0xdf, 0xe6, 0xe7, 0xc7, 0xdf, 0xe5, - 0xe7, 0xc7, 0xe0, 0xe6, 0xe7, 0xc7, 0xe0, 0xe5, 0xe7, 0xc7, 0xe0, 0xe6, - 0xe7, 0xc7, 0xe1, 0xe5, 0xe7, 0xc7, 0xe1, 0xe6, 0xe7, 0xc7, 0xe1, 0xe5, - 0xe7, 0xc7, 0xe1, 0xe6, 0xe7, 0xc7, 0xe2, 0xe5, 0xe7, 0xc7, 0xe2, 0xe6, - 0xe7, 0xc7, 0xe2, 0xe5, 0xe7, 0xc7, 0xe2, 0xe6, 0xe7, 0xc7, 0xe3, 0xe5, - 0xe7, 0xc7, 0xe3, 0xe6, 0xe7, 0xc7, 0xe3, 0xe5, 0xe7, 0xc7, 0xe3, 0xe6, - 0xe7, 0xc7, 0xe4, 0xe5, 0xe7, 0xc7, 0xe4, 0xe6, 0xe7, 0xc7, 0xe4, 0xe5, - 0xe7, 0xc7, 0xe4, 0xe6, 0xe7, 0xc7, 0xe5, 0xe5, 0xe7, 0xc7, 0xe5, 0xe6, - 0xe7, 0xc7, 0xe5, 0xe5, 0xe7, 0xc7, 0xe5, 0xe5, 0xe7, 0xc7, 0xe6, 0xe5, - 0xe7, 0xc7, 0xe6, 0xe5, 0xe7, 0xc7, 0xe6, 0xe5, 0xe7, 0xc7, 0xe6, 0xe5, - 0xe7, 0xc7, 0xe7, 0xe5, 0xe7, 0xc7, 0xe7, 0xe5, 0xe7, 0xc7, 0xe7, 0xe5, - 0xe7, 0xc6, 0xe7, 0xe5, 0xe7, 0xc7, 0xe7, 0xe5, 0xe8, 0xc6, 0xe7, 0xe5, - 0xe8, 0xc7, 0xe7, 0xe5, 0xe8, 0xc6, 0xe7, 0xe5, 0xe8, 0xc7, 0xe7, 0xe5, - 0xe9, 0xc6, 0xe7, 0xe5, 0xe9, 0xc7, 0xeb, 0xe5, 0xe9, 0xc7, 0xeb, 0xe5, - 0xe9, 0xc9, 0xeb, 0xe5, 0xea, 0xc7, 0xeb, 0xe5, 0xea, 0xc9, 0xeb, 0xe5, - 0xea, 0xc7, 0xeb, 0xe5, 0xea, 0xc7, 0xeb, 0xe5, 0xeb, 0xc7, 0xeb, 0xe5, - 0xeb, 0xc7, 0xeb, 0xe5, 0xeb, 0xc7, 0xeb, 0xe5, 0xeb, 0xc7, 0xec, 0xe5, - 0xeb, 0xc7, 0xec, 0xe5, 0xeb, 0xc7, 0xec, 0xe5, 0xeb, 0xc7, 0xec, 0xe5, - 0xeb, 0xc7, 0xec, 0xe5, 0xeb, 0xc7, 0xed, 0xe5, 0xeb, 0xc7, 0xed, 0xe3, - 0xeb, 0xc7, 0xed, 0xe5, 0xeb, 0xc7, 0xed, 0xe3, 0xeb, 0xc7, 0xee, 0xe5, - 0xeb, 0xc7, 0xee, 0xe3, 0xeb, 0xc7, 0xee, 0xe5, 0xeb, 0xc7, 0xee, 0xe3, - 0xeb, 0xc7, 0xef, 0xe5, 0xeb, 0xc7, 0xef, 0xe3, 0xeb, 0xc7, 0xef, 0xe5, - 0xeb, 0xc7, 0xef, 0xe3, 0xeb, 0xc7, 0xf0, 0xe5, 0xeb, 0xc7, 0xf0, 0xe3, - 0xeb, 0xc7, 0xf0, 0xe5, 0xeb, 0xc7, 0xf0, 0xe3, 0xeb, 0xc7, 0xf1, 0xe5, - 0xeb, 0xc7, 0xf1, 0xe3, 0xeb, 0xc7, 0xf1, 0xe5, 0xeb, 0xc7, 0xf1, 0xe3, - 0xeb, 0xc7, 0xf2, 0xe5, 0xeb, 0xc7, 0xf2, 0xe3, 0xeb, 0xc7, 0xf2, 0xe5, - 0xeb, 0xc7, 0xf2, 0xec, 0xf1, 0xc7, 0xf2, 0xec, 0xf1, 0xc7, 0xf3, 0xec, - 0xf1, 0xc7, 0xf3, 0xec, 0xf1, 0xc7, 0xf3, 0xec, 0xf1, 0xc7, 0xf3, 0xec, - 0xf1, 0xc7, 0xf4, 0xec, 0xf1, 0xc7, 0xf4, 0xec, 0xf1, 0xc7, 0xf4, 0xec, - 0xf1, 0xc7, 0xf4, 0xec, 0xf1, 0xc7, 0xf5, 0xec, 0xf1, 0xc7, 0xf5, 0xec, - 0xf1, 0xc7, 0xf5, 0xec, 0xf1, 0xc7, 0xf5, 0xec, 0xf1, 0xc7, 0xf5, 0xec, - 0xf1, 0xc7, 0xf6, 0xec, 0xf1, 0xc7, 0xf6, 0xec, 0xf1, 0xc7, 0xf6, 0xec, - 0xf1, 0xc7, 0xf6, 0xec, 0xf1, 0xc7, 0xf7, 0xec, 0xf1, 0xc7, 0xf7, 0xec, - 0xf1, 0xc7, 0xf7, 0xec, 0xf1, 0xc7, 0xf7, 0xec, 0xf1, 0xc7, 0xf8, 0xec, - 0xf1, 0xc7, 0xf8, 0xec, 0xf1, 0xc7, 0xf8, 0xec, 0xf1, 0xc7, 0xf8, 0xec, - 0xf1, 0xc7, 0xf8, 0xec, 0xf1, 0xc7, 0xf9, 0xec, 0xf1, 0xc7, 0xf9, 0xec, - 0xf1, 0xc7, 0xf9, 0xec, 0xf1, 0xc7, 0xf9, 0xec, 0xf1, 0xc7, 0xfa, 0xec, - 0xf1, 0xc7, 0xfa, 0xec, 0xf1, 0xc7, 0xfa, 0xec, 0xf1, 0xc7, 0xfa, 0xec, - 0xf1, 0xc7, 0xfa, 0xec, 0xf1, 0xc7, 0xfb, 0xec, 0xf1, 0xc7, 0xfb, 0xec, - 0xf1, 0xc7, 0xfb, 0xec, 0xf1, 0xc7, 0xfb, 0xec, 0xf1, 0xc7, 0xfc, 0xec, - 0xf1, 0xc7, 0xfc, 0xec, 0xf1, 0xc7, 0xfc, 0xec, 0xf1, 0xc7, 0xfc, 0xec, - 0xf1, 0xc7, 0xfc, 0xec, 0xf1, 0xc7, 0xfd, 0xec, 0xf1, 0xc7, 0xfd, 0xec, - 0xf1, 0xc7, 0xfd, 0xec, 0xf1, 0xc7, 0xfd, 0xec, 0xf1, 0xc7, 0xfe, 0xec, - 0xf1, 0xc7, 0xfe, 0xec, 0xf1, 0xc7, 0xfe, 0xec, 0xf1, 0xc7, 0xfe, 0xec, - 0xf1, 0xc7, 0xfe, 0xec, 0xf1, 0xc7, 0xff, 0xec, 0xf1, 0xc7, 0xff, 0xec, - 0xf1, 0xc7, 0x03, 0xe9, 0x86, 0xc7, 0x0a, 0xeb, 0x86, 0xc7, 0x0f, 0xe9, - 0x86, 0xc7, 0x14, 0xe7, 0x87, 0xc7, 0x17, 0xe9, 0x86, 0xc7, 0x1b, 0xe7, - 0x87, 0xc7, 0x1e, 0xe9, 0x86, 0xc7, 0x20, 0xe7, 0x87, 0xc7, 0x23, 0xe9, - 0x86, 0xc7, 0x25, 0xe7, 0x87, 0xc7, 0x27, 0xe9, 0x86, 0xc7, 0x29, 0xe7, - 0x87, 0xc7, 0x2b, 0xe9, 0x86, 0xc7, 0x2d, 0xe7, 0x87, 0xc7, 0x2f, 0xe9, - 0x86, 0xc7, 0x31, 0xe7, 0x87, 0xc7, 0x32, 0xe9, 0x86, 0xc7, 0x34, 0xe7, - 0x87, 0xc7, 0x35, 0xe9, 0x86, 0xc7, 0x37, 0xe7, 0x87, 0xc7, 0x38, 0xe9, - 0x86, 0xc7, 0x3a, 0xe7, 0x87, 0xc7, 0x3b, 0xe9, 0x86, 0xc7, 0x3c, 0xe7, - 0x87, 0xc7, 0x3e, 0xe9, 0x86, 0xc7, 0x3f, 0xe7, 0x87, 0xc7, 0x40, 0xe9, - 0x86, 0xc7, 0x42, 0xe7, 0x87, 0xc7, 0x43, 0xe9, 0x86, 0xc7, 0x44, 0xe7, - 0x87, 0xc7, 0x45, 0xe9, 0x86, 0xc7, 0x46, 0xe7, 0x87, 0xc7, 0x47, 0xe9, - 0x86, 0xc7, 0x48, 0xe7, 0x87, 0xc7, 0x49, 0xe9, 0x86, 0xc7, 0x4a, 0xe7, - 0x87, 0xc7, 0x4b, 0xe9, 0x86, 0xc7, 0x4c, 0xe7, 0x87, 0xc7, 0x4d, 0xe9, - 0x86, 0xc7, 0x4e, 0xe7, 0x87, 0xc7, 0x4f, 0xe9, 0x86, 0xc7, 0x50, 0xe7, - 0x87, 0xc7, 0x51, 0xe9, 0x86, 0xc7, 0x52, 0xe7, 0x87, 0xc7, 0x53, 0xe9, - 0x86, 0xc7, 0x54, 0xe7, 0x87, 0xc7, 0x55, 0xe9, 0x86, 0xc7, 0x56, 0xe7, - 0x87, 0xc7, 0x57, 0xe9, 0x86, 0xc7, 0x58, 0xe7, 0x87, 0xc7, 0x58, 0xe9, - 0x86, 0xc7, 0x59, 0xe7, 0x87, 0xc7, 0x5a, 0xe9, 0x86, 0xc7, 0x5b, 0xe7, - 0x87, 0xc7, 0x5c, 0xe9, 0x86, 0xc7, 0x5d, 0xe7, 0x87, 0xc7, 0x5d, 0xe9, - 0x86, 0xc7, 0x5e, 0xe7, 0x87, 0xc7, 0x5f, 0xe9, 0x86, 0xc7, 0x60, 0xe7, - 0x87, 0xc7, 0x60, 0xe9, 0x86, 0xc7, 0x61, 0xe7, 0x87, 0xc7, 0x62, 0xe9, - 0x86, 0xc7, 0x63, 0xe7, 0x87, 0xc7, 0x63, 0xe6, 0x87, 0xc7, 0x64, 0xe7, - 0x87, 0xc7, 0x65, 0xe6, 0x87, 0xc7, 0x66, 0xe7, 0x87, 0xc7, 0x66, 0xe6, - 0x87, 0xc7, 0x67, 0xe7, 0x87, 0xc7, 0x68, 0xe6, 0x87, 0xc7, 0x68, 0xe7, - 0x87, 0xc7, 0x69, 0xe6, 0x87, 0xc7, 0x6a, 0xe7, 0x87, 0xc7, 0x6a, 0xe6, - 0x87, 0xc7, 0x6b, 0xe7, 0x87, 0xc7, 0x6c, 0xe6, 0x87, 0xc7, 0x6c, 0xe7, - 0x87, 0xc7, 0x6d, 0xe6, 0x87, 0xc7, 0x6e, 0xe7, 0x87, 0xc7, 0x6e, 0xe6, - 0x87, 0xc7, 0x6f, 0xe7, 0x87, 0xc7, 0x70, 0xe6, 0x87, 0xc7, 0x70, 0xe7, - 0x87, 0xc7, 0x71, 0xe6, 0x87, 0xc7, 0x72, 0xe7, 0x87, 0xc7, 0x72, 0xe6, - 0x87, 0xc7, 0x73, 0xe7, 0x87, 0xc7, 0x73, 0xe6, 0x87, 0xc7, 0x74, 0xe7, - 0x87, 0xc7, 0x75, 0xe6, 0x87, 0xc7, 0x75, 0xe7, 0x87, 0xc7, 0x76, 0xe6, - 0x87, 0xc7, 0x76, 0xe7, 0x87, 0xc7, 0x77, 0xe6, 0x87, 0xc7, 0x78, 0xe7, - 0x87, 0xc7, 0x78, 0xe6, 0x87, 0xc7, 0x79, 0xe7, 0x87, 0xc7, 0x79, 0xe6, - 0x87, 0xc7, 0x7a, 0xe7, 0x87, 0xc7, 0x7a, 0xe6, 0x87, 0xc7, 0x7b, 0xe5, - 0x88, 0xc7, 0x7c, 0xe6, 0x87, 0xc7, 0x7c, 0xe5, 0x88, 0xc7, 0x7d, 0xe6, - 0x87, 0xc7, 0x7d, 0xe5, 0x88, 0xc7, 0x7e, 0xe6, 0x87, 0xc7, 0x7e, 0xe5, - 0x88, 0xc7, 0x7f, 0xe6, 0x87, 0xc7, 0x7f, 0xe5, 0x88, 0xc7, 0x80, 0xe6, - 0x87, 0xc7, 0x81, 0xe5, 0x88, 0xc7, 0x81, 0xe6, 0x87, 0xc7, 0x82, 0xe5, - 0x88, 0xc7, 0x82, 0xe6, 0x87, 0xc7, 0x83, 0xe5, 0x88, 0xc7, 0x83, 0xe6, - 0x87, 0xc7, 0x84, 0xe5, 0x88, 0xc7, 0x84, 0xe6, 0x87, 0xc7, 0x85, 0xe5, - 0x88, 0xc7, 0x85, 0xe6, 0x87, 0xc7, 0x86, 0xe5, 0x88, 0xc7, 0x86, 0xe5, - 0x88, 0xc7, 0x87, 0xe5, 0x88, 0xc7, 0x87, 0xe5, 0x88, 0xc7, 0x87, 0xe5, - 0x88, 0xc7, 0x87, 0xe5, 0x88, 0xc7, 0x87, 0xe5, 0x89, 0xc7, 0x87, 0xe5, - 0x89, 0xc7, 0x87, 0xe5, 0x8a, 0xc7, 0x87, 0xe5, 0x8a, 0xc7, 0x87, 0xe5, - 0x8b, 0xc7, 0x87, 0xe5, 0x8b, 0xc7, 0x88, 0xe5, 0x8c, 0xc4, 0x87, 0xe5, - 0x8c, 0xc7, 0x88, 0xe5, 0x8d, 0xc4, 0x87, 0xe5, 0x8d, 0xc7, 0x88, 0xe5, - 0x8e, 0xc4, 0x87, 0xe5, 0x8e, 0xc7, 0x88, 0xe5, 0x8e, 0xc4, 0x87, 0xe5, - 0x8f, 0xc7, 0x88, 0xe5, 0x8f, 0xc4, 0x87, 0xe5, 0x90, 0xc7, 0x88, 0xe5, - 0x90, 0xc4, 0x87, 0xe5, 0x91, 0xc7, 0x88, 0xe5, 0x91, 0xc4, 0x87, 0xe5, - 0x92, 0xc7, 0x88, 0xe5, 0x92, 0xc4, 0x87, 0xe5, 0x93, 0xc7, 0x88, 0xe5, - 0x93, 0xc4, 0x87, 0xe5, 0x94, 0xc7, 0x88, 0xe5, 0x94, 0xc4, 0x87, 0xe5, - 0x94, 0xc7, 0x88, 0xe5, 0x95, 0xc4, 0x87, 0xe5, 0x95, 0xc7, 0x88, 0xe5, - 0x96, 0xc4, 0x87, 0xe5, 0x96, 0xc7, 0x88, 0xe5, 0x97, 0xc4, 0x87, 0xe5, - 0x97, 0xc7, 0x88, 0xe5, 0x98, 0xc4, 0x87, 0xe5, 0x98, 0xc7, 0x88, 0xe5, - 0x98, 0xc4, 0x88, 0xe5, 0x99, 0xc1, 0x88, 0xe5, 0x99, 0xc4, 0x88, 0xe5, - 0x9a, 0xc1, 0x88, 0xe5, 0x9a, 0xc4, 0x88, 0xe5, 0x9a, 0xc1, 0x88, 0xe5, - 0x9b, 0xc4, 0x88, 0xe5, 0x9b, 0xc1, 0x88, 0xe5, 0x9c, 0xc4, 0x88, 0xe5, - 0x9c, 0xc1, 0x88, 0xe5, 0x9d, 0xc4, 0x88, 0xe5, 0x9d, 0xc1, 0x88, 0xe5, - 0x9d, 0xc4, 0x88, 0xe5, 0x9e, 0xc1, 0x88, 0xe5, 0x9e, 0xc4, 0x88, 0xe5, - 0x9f, 0xc1, 0x88, 0xe5, 0x9f, 0xc4, 0x88, 0xe5, 0x9f, 0xc1, 0x88, 0xe5, - 0xa0, 0xc4, 0x88, 0xe5, 0xa0, 0xc1, 0x88, 0xe5, 0xa1, 0xc4, 0x88, 0xe5, - 0xa1, 0xc1, 0x88, 0xe5, 0xa1, 0xc4, 0x88, 0xe5, 0xa2, 0xc1, 0x88, 0xe5, - 0xa2, 0xc4, 0x88, 0xe5, 0xa3, 0xc1, 0x88, 0xe5, 0xa3, 0xc4, 0x88, 0xe5, - 0xa3, 0xc1, 0x88, 0xe5, 0xa4, 0xc4, 0x88, 0xe5, 0xa4, 0xc1, 0x88, 0xe5, - 0xa5, 0xc4, 0x88, 0xe5, 0xa5, 0xc1, 0x88, 0xe5, 0xa5, 0xc4, 0x88, 0xe5, - 0xa6, 0xc1, 0x88, 0xe5, 0xa6, 0xc4, 0x88, 0xe5, 0xa6, 0xc1, 0x88, 0xe5, - 0xa7, 0xc4, 0x88, 0xe5, 0xa7, 0xc1, 0x89, 0xe5, 0xa8, 0xbf, 0x88, 0xe5, - 0xa8, 0xc1, 0x89, 0xe5, 0xa8, 0xbf, 0x88, 0xe5, 0xa9, 0xc1, 0x89, 0xe5, - 0xa9, 0xbf, 0xa6, 0xe5, 0xaa, 0xee, 0xa2, 0xe5, 0xaa, 0xed, 0xa6, 0xe5, - 0xaa, 0xee, 0xa6, 0xe5, 0xab, 0xee, 0xa6, 0xe5, 0xab, 0xee, 0xa6, 0xe5, - 0xab, 0xee, 0xa6, 0xe5, 0xac, 0xee, 0xa6, 0xe5, 0xac, 0xee, 0xa6, 0xe5, - 0xac, 0xee, 0xa6, 0xe5, 0xad, 0xee, 0xa6, 0xe5, 0xad, 0xee, 0xab, 0xe5, - 0xae, 0xef, 0xa6, 0xe5, 0xae, 0xee, 0xab, 0xe5, 0xae, 0xef, 0xaa, 0xe5, - 0xaf, 0xef, 0xab, 0xe5, 0xaf, 0xef, 0xaa, 0xe5, 0xaf, 0xef, 0xab, 0xe5, - 0xb0, 0xef, 0xaa, 0xe5, 0xb0, 0xef, 0xab, 0xe5, 0xb0, 0xef, 0xaa, 0xe5, - 0xb1, 0xef, 0xab, 0xe5, 0xb1, 0xef, 0xaf, 0xe5, 0xb2, 0xf0, 0xab, 0xe5, - 0xb2, 0xef, 0xaf, 0xe5, 0xb2, 0xf0, 0xae, 0xe5, 0xb3, 0xf0, 0xaf, 0xe5, - 0xb3, 0xf0, 0xae, 0xe5, 0xb3, 0xf0, 0xaf, 0xe5, 0xb4, 0xf0, 0xce, 0xe5, - 0xb4, 0xcd, 0xce, 0xe5, 0xb4, 0xd0, 0xce, 0xe5, 0xb5, 0xcd, 0xce, 0xe5, - 0xb5, 0xd0, 0xce, 0xe5, 0xb5, 0xcd, 0xce, 0xe5, 0xb6, 0xd0, 0xce, 0xe5, - 0xb6, 0xcd, 0xce, 0xe5, 0xb6, 0xd0, 0xce, 0xe5, 0xb7, 0xcd, 0xce, 0xe5, - 0xb7, 0xd0, 0xce, 0xe5, 0xb7, 0xcd, 0xce, 0xe5, 0xb8, 0xca, 0xce, 0xe5, - 0xb8, 0xcd, 0xce, 0xe5, 0xb8, 0xca, 0xce, 0xe5, 0xb9, 0xcd, 0xce, 0xe5, - 0xb9, 0xca, 0xce, 0xe5, 0xb9, 0xcd, 0xce, 0xe5, 0xba, 0xca, 0xce, 0xe5, - 0xba, 0xcd, 0xce, 0xe5, 0xba, 0xca, 0xce, 0xe5, 0xbb, 0xcd, 0xce, 0xe5, - 0xbb, 0xca, 0xce, 0xe5, 0xbb, 0xcd, 0xce, 0xe5, 0xbc, 0xca, 0xce, 0xe5, - 0xbc, 0xcd, 0xce, 0xe5, 0xbc, 0xca, 0xce, 0xe5, 0xbd, 0xcd, 0xce, 0xe5, - 0xbd, 0xca, 0xce, 0xe5, 0xbd, 0xcd, 0xce, 0xe5, 0xbe, 0xca, 0xce, 0xe5, - 0xbe, 0xcd, 0xce, 0xe5, 0xbe, 0xca, 0xce, 0xe5, 0xbf, 0xcd, 0xce, 0xe5, - 0xbf, 0xca, 0xce, 0xe5, 0xbf, 0xcd, 0xce, 0xe5, 0xc0, 0xca, 0xce, 0xe5, - 0xc0, 0xcd, 0xce, 0xe5, 0xc0, 0xca, 0xce, 0xe5, 0xc1, 0xcd, 0xce, 0xe5, - 0xc1, 0xca, 0xce, 0xe5, 0xc1, 0xcd, 0xce, 0xe5, 0xc1, 0xca, 0xce, 0xe5, - 0xc2, 0xcd, 0xce, 0xe5, 0xc2, 0xca, 0xce, 0xe5, 0xc2, 0xcd, 0xce, 0xe5, - 0xc3, 0xca, 0xce, 0xe5, 0xc3, 0xcd, 0xce, 0xe5, 0xc3, 0xca, 0xce, 0xe5, - 0xc4, 0xc7, 0xce, 0xe5, 0xc4, 0xca, 0xce, 0xe5, 0xc4, 0xc7, 0xce, 0xe5, - 0xc5, 0xca, 0xce, 0xe5, 0xc5, 0xc7, 0xce, 0xe5, 0xc5, 0xca, 0xce, 0xe5, - 0xc6, 0xc7, 0xce, 0xe5, 0xc6, 0xca, 0xce, 0xe5, 0xc6, 0xc7, 0xce, 0xe5, - 0xc6, 0xca, 0xce, 0xe5, 0xc7, 0xc7, 0xce, 0xe5, 0xc7, 0xca, 0xce, 0xe5, - 0xc7, 0xc7, 0xce, 0xe5, 0xc8, 0xca, 0xce, 0xe5, 0xc8, 0xc7, 0xce, 0xe5, - 0xc8, 0xca, 0xce, 0xe5, 0xc9, 0xc7, 0xce, 0xe5, 0xc9, 0xca, 0xce, 0xe5, - 0xc9, 0xc7, 0xce, 0xe5, 0xc9, 0xca, 0xce, 0xe5, 0xca, 0xc7, 0xce, 0xe5, - 0xca, 0xca, 0xce, 0xe5, 0xca, 0xc7, 0xce, 0xe5, 0xcb, 0xca, 0xce, 0xe5, - 0xcb, 0xc7, 0xce, 0xe5, 0xcb, 0xca, 0xce, 0xe5, 0xcc, 0xc7, 0xce, 0xe5, - 0xcc, 0xca, 0xce, 0xe5, 0xcc, 0xc7, 0xcf, 0xe5, 0xcc, 0xc7, 0xce, 0xe5, - 0xcd, 0xc7, 0xcf, 0xe5, 0xcd, 0xc7, 0xce, 0xe5, 0xcd, 0xc7, 0xcf, 0xe5, - 0xce, 0xc7, 0xce, 0xe5, 0xce, 0xc7, 0xcf, 0xe5, 0xce, 0xc7, 0xce, 0xe4, - 0xce, 0xc7, 0xcf, 0xe5, 0xce, 0xc7, 0xcf, 0xe4, 0xce, 0xc7, 0xcf, 0xe5, - 0xce, 0xc7, 0xd0, 0xe4, 0xce, 0xc7, 0xd0, 0xe5, 0xce, 0xc7, 0xd0, 0xe4, - 0xce, 0xc7, 0xd0, 0xe5, 0xce, 0xc7, 0xd1, 0xe4, 0xce, 0xc7, 0xd1, 0xe3, - 0xcf, 0xc7, 0xd1, 0xe4, 0xce, 0xc7, 0xd2, 0xe3, 0xcf, 0xc7, 0xd2, 0xe4, - 0xce, 0xc7, 0xd2, 0xe3, 0xcf, 0xc7, 0xd2, 0xe4, 0xce, 0xc7, 0xd3, 0xe3, - 0xcf, 0xc7, 0xd3, 0xe4, 0xce, 0xc7, 0xd3, 0xe3, 0xcf, 0xc7, 0xd4, 0xe4, - 0xce, 0xc7, 0xd4, 0xe3, 0xcf, 0xc7, 0xd4, 0xe4, 0xce, 0xc7, 0xd4, 0xe3, - 0xcf, 0xc7, 0xd5, 0xe4, 0xce, 0xc7, 0xd5, 0xe3, 0xcf, 0xc7, 0xd5, 0xe4, - 0xce, 0xc7, 0xd6, 0xe3, 0xcf, 0xc7, 0xd6, 0xe4, 0xce, 0xc7, 0xd6, 0xe3, - 0xcf, 0xc7, 0xd6, 0xe4, 0xce, 0xc7, 0xd7, 0xe3, 0xcf, 0xc7, 0xd7, 0xe4, - 0xce, 0xc7, 0xd7, 0xe3, 0xcf, 0xc7, 0xd7, 0xe4, 0xce, 0xc7, 0xd8, 0xe3, - 0xcf, 0xc7, 0xd8, 0xe4, 0xce, 0xc7, 0xd8, 0xe3, 0xcf, 0xc7, 0xd9, 0xe4, - 0xce, 0xc7, 0xd9, 0xe3, 0xcf, 0xc7, 0xd9, 0xe2, 0xcf, 0xc7, 0xd9, 0xe3, - 0xcf, 0xc7, 0xda, 0xe2, 0xcf, 0xc7, 0xda, 0xe3, 0xcf, 0xc7, 0xda, 0xe2, - 0xcf, 0xc7, 0xda, 0xe3, 0xcf, 0xc7, 0xdb, 0xe2, 0xcf, 0xc7, 0xdb, 0xe3, - 0xcf, 0xc7, 0xdb, 0xe7, 0xe7, 0xc7, 0xdb, 0xe6, 0xe7, 0xc7, 0xdc, 0xe7, - 0xe7, 0xc7, 0xdc, 0xe6, 0xe7, 0xc7, 0xdc, 0xe7, 0xe7, 0xc7, 0xdd, 0xe6, - 0xe7, 0xc7, 0xdd, 0xe7, 0xe7, 0xc7, 0xdd, 0xe6, 0xe7, 0xc7, 0xdd, 0xe7, - 0xe7, 0xc7, 0xde, 0xe6, 0xe7, 0xc7, 0xde, 0xe7, 0xe7, 0xc7, 0xde, 0xe6, - 0xe7, 0xc7, 0xde, 0xe7, 0xe7, 0xc7, 0xdf, 0xe6, 0xe7, 0xc7, 0xdf, 0xe7, - 0xe7, 0xc7, 0xdf, 0xe6, 0xe7, 0xc7, 0xdf, 0xe7, 0xe7, 0xc7, 0xe0, 0xe6, - 0xe7, 0xc7, 0xe0, 0xe7, 0xe7, 0xc7, 0xe0, 0xe6, 0xe7, 0xc7, 0xe1, 0xe7, - 0xe7, 0xc7, 0xe1, 0xe6, 0xe7, 0xc7, 0xe1, 0xe5, 0xe7, 0xc7, 0xe1, 0xe6, - 0xe7, 0xc7, 0xe2, 0xe5, 0xe7, 0xc7, 0xe2, 0xe6, 0xe7, 0xc7, 0xe2, 0xe5, - 0xe7, 0xc7, 0xe2, 0xe6, 0xe7, 0xc7, 0xe3, 0xe5, 0xe7, 0xc7, 0xe3, 0xe6, - 0xe7, 0xc7, 0xe3, 0xe5, 0xe7, 0xc7, 0xe3, 0xe6, 0xe7, 0xc7, 0xe4, 0xe5, - 0xe7, 0xc7, 0xe4, 0xe6, 0xe7, 0xc7, 0xe4, 0xe5, 0xe7, 0xc7, 0xe4, 0xe6, - 0xe7, 0xc7, 0xe5, 0xe5, 0xe7, 0xc7, 0xe5, 0xe6, 0xe7, 0xc7, 0xe5, 0xe5, - 0xe7, 0xc7, 0xe5, 0xe6, 0xe7, 0xc7, 0xe6, 0xe5, 0xe7, 0xc7, 0xe6, 0xe6, - 0xe7, 0xc7, 0xe6, 0xe5, 0xe7, 0xc7, 0xe6, 0xe5, 0xe7, 0xc7, 0xe7, 0xe5, - 0xe7, 0xc7, 0xe7, 0xe5, 0xe7, 0xc7, 0xe7, 0xe5, 0xe7, 0xc6, 0xe7, 0xe5, - 0xe7, 0xc7, 0xe7, 0xe5, 0xe8, 0xc6, 0xe7, 0xe5, 0xe8, 0xc7, 0xe7, 0xe5, - 0xe8, 0xc6, 0xe7, 0xe5, 0xe8, 0xc7, 0xe7, 0xe5, 0xe9, 0xc6, 0xe7, 0xe5, - 0xe9, 0xc7, 0xeb, 0xe5, 0xe9, 0xc7, 0xeb, 0xe5, 0xe9, 0xc8, 0xeb, 0xe5, - 0xea, 0xc7, 0xeb, 0xe5, 0xea, 0xc8, 0xeb, 0xe5, 0xea, 0xc7, 0xeb, 0xe5, - 0xea, 0xc8, 0xeb, 0xe5, 0xeb, 0xc7, 0xeb, 0xe5, 0xeb, 0xc7, 0xeb, 0xe5, - 0xeb, 0xc7, 0xeb, 0xe5, 0xeb, 0xc7, 0xec, 0xe5, 0xeb, 0xc7, 0xec, 0xe5, - 0xeb, 0xc7, 0xec, 0xe5, 0xeb, 0xc7, 0xec, 0xe5, 0xeb, 0xc7, 0xec, 0xe5, - 0xeb, 0xc7, 0xed, 0xe5, 0xeb, 0xc7, 0xed, 0xe3, 0xeb, 0xc7, 0xed, 0xe5, - 0xeb, 0xc7, 0xed, 0xe3, 0xeb, 0xc7, 0xee, 0xe5, 0xeb, 0xc7, 0xee, 0xe3, - 0xeb, 0xc7, 0xee, 0xe5, 0xeb, 0xc7, 0xee, 0xe3, 0xeb, 0xc7, 0xef, 0xe5, - 0xeb, 0xc7, 0xef, 0xe3, 0xeb, 0xc7, 0xef, 0xe5, 0xeb, 0xc7, 0xef, 0xe3, - 0xeb, 0xc7, 0xf0, 0xe5, 0xeb, 0xc7, 0xf0, 0xe3, 0xeb, 0xc7, 0xf0, 0xe5, - 0xeb, 0xc7, 0xf0, 0xe3, 0xeb, 0xc7, 0xf1, 0xe5, 0xeb, 0xc7, 0xf1, 0xe3, - 0xeb, 0xc7, 0xf1, 0xe5, 0xeb, 0xc7, 0xf1, 0xe3, 0xeb, 0xc7, 0xf2, 0xe5, - 0xeb, 0xc7, 0xf2, 0xe3, 0xeb, 0xc7, 0xf2, 0xec, 0xf0, 0xc7, 0xf2, 0xec, - 0xf0, 0xc7, 0xf2, 0xec, 0xf0, 0xc7, 0xf3, 0xec, 0xf0, 0xc7, 0xf3, 0xec, - 0xf0, 0xc7, 0xf3, 0xec, 0xf1, 0xc7, 0xf3, 0xec, 0xf0, 0xc7, 0xf4, 0xec, - 0xf1, 0xc7, 0xf4, 0xec, 0xf0, 0xc7, 0xf4, 0xec, 0xf1, 0xc7, 0xf4, 0xec, - 0xf1, 0xc7, 0xf5, 0xec, 0xf1, 0xc7, 0xf5, 0xec, 0xf1, 0xc7, 0xf5, 0xec, - 0xf1, 0xc7, 0xf5, 0xec, 0xf1, 0xc7, 0xf5, 0xec, 0xf1, 0xc7, 0xf6, 0xec, - 0xf1, 0xc7, 0xf6, 0xec, 0xf1, 0xc7, 0xf6, 0xec, 0xf1, 0xc7, 0xf6, 0xec, - 0xf1, 0xc7, 0xf7, 0xec, 0xf1, 0xc7, 0xf7, 0xec, 0xf1, 0xc7, 0xf7, 0xec, - 0xf1, 0xc7, 0xf7, 0xec, 0xf1, 0xc7, 0xf8, 0xec, 0xf1, 0xc7, 0xf8, 0xec, - 0xf1, 0xc7, 0xf8, 0xec, 0xf1, 0xc7, 0xf8, 0xec, 0xf1, 0xc7, 0xf8, 0xec, - 0xf1, 0xc7, 0xf9, 0xec, 0xf1, 0xc7, 0xf9, 0xec, 0xf1, 0xc7, 0xf9, 0xec, - 0xf1, 0xc7, 0xf9, 0xec, 0xf1, 0xc7, 0xfa, 0xec, 0xf1, 0xc7, 0xfa, 0xec, - 0xf1, 0xc7, 0xfa, 0xec, 0xf1, 0xc7, 0xfa, 0xec, 0xf1, 0xc7, 0xfa, 0xec, - 0xf1, 0xc7, 0xfb, 0xec, 0xf1, 0xc7, 0xfb, 0xec, 0xf1, 0xc7, 0xfb, 0xec, - 0xf1, 0xc7, 0xfb, 0xec, 0xf1, 0xc7, 0xfc, 0xec, 0xf1, 0xc7, 0xfc, 0xec, - 0xf1, 0xc7, 0xfc, 0xec, 0xf1, 0xc7, 0xfc, 0xec, 0xf1, 0xc7, 0xfc, 0xec, - 0xf1, 0xc7, 0xfd, 0xec, 0xf1, 0xc7, 0xfd, 0xec, 0xf1, 0xc7, 0xfd, 0xec, - 0xf1, 0xc7, 0xfd, 0xec, 0xf1, 0xc7, 0xfe, 0xec, 0xf1, 0xc7, 0xfe, 0xec, - 0xf1, 0xc7, 0xfe, 0xec, 0xf1, 0xc7, 0xfe, 0xec, 0xf1, 0xc7, 0xfe, 0xec, - 0xf1, 0xc7, 0xff, 0xec, 0xf1, 0xc7, 0xff, 0xec, 0xf1, 0xc7, 0x03, 0xe9, - 0x86, 0xc8, 0x0a, 0xeb, 0x86, 0xc8, 0x0f, 0xe9, 0x86, 0xc8, 0x14, 0xeb, - 0x86, 0xc8, 0x17, 0xe9, 0x86, 0xc8, 0x1b, 0xeb, 0x86, 0xc8, 0x1e, 0xe9, - 0x86, 0xc8, 0x20, 0xeb, 0x86, 0xc8, 0x23, 0xe9, 0x86, 0xc8, 0x25, 0xeb, - 0x86, 0xc8, 0x27, 0xe9, 0x86, 0xc8, 0x29, 0xeb, 0x86, 0xc8, 0x2b, 0xe9, - 0x86, 0xc8, 0x2d, 0xeb, 0x86, 0xc8, 0x2f, 0xe9, 0x86, 0xc8, 0x31, 0xeb, - 0x86, 0xc8, 0x32, 0xe9, 0x86, 0xc8, 0x34, 0xeb, 0x86, 0xc8, 0x35, 0xe9, - 0x86, 0xc8, 0x37, 0xeb, 0x86, 0xc8, 0x38, 0xe9, 0x86, 0xc8, 0x3a, 0xeb, - 0x86, 0xc8, 0x3b, 0xe9, 0x86, 0xc8, 0x3c, 0xeb, 0x86, 0xc8, 0x3e, 0xe9, - 0x86, 0xc8, 0x3f, 0xeb, 0x86, 0xc8, 0x40, 0xe9, 0x86, 0xc8, 0x42, 0xe8, - 0x87, 0xc8, 0x43, 0xe9, 0x86, 0xc8, 0x44, 0xe8, 0x87, 0xc8, 0x45, 0xe9, - 0x86, 0xc8, 0x46, 0xe8, 0x87, 0xc8, 0x47, 0xe9, 0x86, 0xc8, 0x48, 0xe8, - 0x87, 0xc8, 0x49, 0xe9, 0x86, 0xc8, 0x4a, 0xe8, 0x87, 0xc8, 0x4b, 0xe9, - 0x86, 0xc8, 0x4c, 0xe8, 0x87, 0xc8, 0x4d, 0xe9, 0x86, 0xc8, 0x4e, 0xe8, - 0x87, 0xc8, 0x4f, 0xe9, 0x86, 0xc8, 0x50, 0xe8, 0x87, 0xc8, 0x51, 0xe9, - 0x86, 0xc8, 0x52, 0xe8, 0x87, 0xc8, 0x53, 0xe9, 0x86, 0xc8, 0x54, 0xe8, - 0x87, 0xc8, 0x55, 0xe9, 0x86, 0xc8, 0x56, 0xe8, 0x87, 0xc8, 0x57, 0xe9, - 0x86, 0xc8, 0x58, 0xe8, 0x87, 0xc8, 0x58, 0xe9, 0x86, 0xc8, 0x59, 0xe8, - 0x87, 0xc8, 0x5a, 0xe9, 0x86, 0xc8, 0x5b, 0xe8, 0x87, 0xc8, 0x5c, 0xe9, - 0x86, 0xc8, 0x5d, 0xe8, 0x87, 0xc8, 0x5d, 0xe9, 0x86, 0xc8, 0x5e, 0xe8, - 0x87, 0xc8, 0x5f, 0xe9, 0x86, 0xc8, 0x60, 0xe8, 0x87, 0xc8, 0x60, 0xe6, - 0x87, 0xc8, 0x61, 0xe8, 0x87, 0xc8, 0x62, 0xe6, 0x87, 0xc8, 0x63, 0xe8, - 0x87, 0xc8, 0x63, 0xe6, 0x87, 0xc8, 0x64, 0xe8, 0x87, 0xc8, 0x65, 0xe6, - 0x87, 0xc8, 0x66, 0xe8, 0x87, 0xc8, 0x66, 0xe6, 0x87, 0xc8, 0x67, 0xe8, - 0x87, 0xc8, 0x68, 0xe6, 0x87, 0xc8, 0x68, 0xe8, 0x87, 0xc8, 0x69, 0xe6, - 0x87, 0xc8, 0x6a, 0xe8, 0x87, 0xc8, 0x6a, 0xe6, 0x87, 0xc8, 0x6b, 0xe8, - 0x87, 0xc8, 0x6c, 0xe6, 0x87, 0xc8, 0x6c, 0xe8, 0x87, 0xc8, 0x6d, 0xe6, - 0x87, 0xc8, 0x6e, 0xe8, 0x87, 0xc8, 0x6e, 0xe6, 0x87, 0xc8, 0x6f, 0xe8, - 0x87, 0xc8, 0x70, 0xe6, 0x87, 0xc8, 0x70, 0xe8, 0x87, 0xc8, 0x71, 0xe6, - 0x87, 0xc8, 0x72, 0xe8, 0x87, 0xc8, 0x72, 0xe6, 0x87, 0xc8, 0x73, 0xe8, - 0x87, 0xc8, 0x73, 0xe6, 0x87, 0xc8, 0x74, 0xe8, 0x87, 0xc8, 0x75, 0xe6, - 0x87, 0xc8, 0x75, 0xe8, 0x87, 0xc8, 0x76, 0xe6, 0x87, 0xc8, 0x76, 0xe8, - 0x87, 0xc8, 0x77, 0xe6, 0x87, 0xc8, 0x78, 0xe8, 0x87, 0xc8, 0x78, 0xe6, - 0x87, 0xc8, 0x79, 0xe8, 0x87, 0xc8, 0x79, 0xe6, 0x87, 0xc8, 0x7a, 0xe8, - 0x87, 0xc8, 0x7a, 0xe6, 0x87, 0xc8, 0x7b, 0xe5, 0x88, 0xc8, 0x7c, 0xe6, - 0x87, 0xc8, 0x7c, 0xe5, 0x88, 0xc8, 0x7d, 0xe6, 0x87, 0xc8, 0x7d, 0xe5, - 0x88, 0xc8, 0x7e, 0xe6, 0x87, 0xc8, 0x7e, 0xe5, 0x88, 0xc8, 0x7f, 0xe6, - 0x87, 0xc8, 0x7f, 0xe5, 0x88, 0xc8, 0x80, 0xe6, 0x87, 0xc8, 0x81, 0xe5, - 0x88, 0xc8, 0x81, 0xe6, 0x87, 0xc8, 0x82, 0xe5, 0x88, 0xc8, 0x82, 0xe6, - 0x87, 0xc8, 0x83, 0xe5, 0x88, 0xc8, 0x83, 0xe6, 0x87, 0xc8, 0x84, 0xe5, - 0x88, 0xc8, 0x84, 0xe6, 0x87, 0xc8, 0x85, 0xe5, 0x88, 0xc8, 0x85, 0xe6, - 0x87, 0xc8, 0x86, 0xe5, 0x88, 0xc8, 0x86, 0xe6, 0x87, 0xc8, 0x87, 0xe5, - 0x88, 0xc8, 0x87, 0xe6, 0x87, 0xc8, 0x87, 0xe5, 0x88, 0xc8, 0x87, 0xe5, - 0x88, 0xc8, 0x87, 0xe5, 0x89, 0xc8, 0x87, 0xe5, 0x89, 0xc8, 0x87, 0xe5, - 0x8a, 0xc8, 0x87, 0xe5, 0x8a, 0xc8, 0x87, 0xe5, 0x8b, 0xc8, 0x87, 0xe5, - 0x8b, 0xc8, 0x88, 0xe5, 0x8c, 0xc5, 0x87, 0xe5, 0x8c, 0xc8, 0x88, 0xe5, - 0x8d, 0xc5, 0x87, 0xe5, 0x8d, 0xc8, 0x88, 0xe5, 0x8e, 0xc5, 0x87, 0xe5, - 0x8e, 0xc8, 0x88, 0xe5, 0x8e, 0xc5, 0x87, 0xe5, 0x8f, 0xc8, 0x88, 0xe5, - 0x8f, 0xc5, 0x87, 0xe5, 0x90, 0xc8, 0x88, 0xe5, 0x90, 0xc5, 0x87, 0xe5, - 0x91, 0xc8, 0x88, 0xe5, 0x91, 0xc5, 0x87, 0xe5, 0x92, 0xc8, 0x88, 0xe5, - 0x92, 0xc5, 0x87, 0xe5, 0x93, 0xc8, 0x88, 0xe5, 0x93, 0xc5, 0x87, 0xe5, - 0x94, 0xc8, 0x88, 0xe5, 0x94, 0xc5, 0x87, 0xe5, 0x94, 0xc8, 0x88, 0xe5, - 0x95, 0xc5, 0x87, 0xe5, 0x95, 0xc8, 0x88, 0xe5, 0x96, 0xc5, 0x87, 0xe5, - 0x96, 0xc8, 0x88, 0xe5, 0x97, 0xc5, 0x87, 0xe5, 0x97, 0xc8, 0x88, 0xe5, - 0x98, 0xc5, 0x87, 0xe5, 0x98, 0xc8, 0x88, 0xe5, 0x98, 0xc5, 0x88, 0xe5, - 0x99, 0xc2, 0x88, 0xe5, 0x99, 0xc5, 0x88, 0xe5, 0x9a, 0xc2, 0x88, 0xe5, - 0x9a, 0xc5, 0x88, 0xe5, 0x9a, 0xc2, 0x88, 0xe5, 0x9b, 0xc5, 0x88, 0xe5, - 0x9b, 0xc2, 0x88, 0xe5, 0x9c, 0xc5, 0x88, 0xe5, 0x9c, 0xc2, 0x88, 0xe5, - 0x9d, 0xc5, 0x88, 0xe5, 0x9d, 0xc2, 0x88, 0xe5, 0x9d, 0xc5, 0x88, 0xe5, - 0x9e, 0xc2, 0x88, 0xe5, 0x9e, 0xc5, 0x88, 0xe5, 0x9f, 0xc2, 0x88, 0xe5, - 0x9f, 0xc5, 0x88, 0xe5, 0x9f, 0xc2, 0x88, 0xe5, 0xa0, 0xc5, 0x88, 0xe5, - 0xa0, 0xc2, 0x88, 0xe5, 0xa1, 0xc5, 0x88, 0xe5, 0xa1, 0xc2, 0x88, 0xe5, - 0xa1, 0xc5, 0x88, 0xe5, 0xa2, 0xc2, 0x88, 0xe5, 0xa2, 0xc5, 0x88, 0xe5, - 0xa3, 0xc2, 0x88, 0xe5, 0xa3, 0xc5, 0x88, 0xe5, 0xa3, 0xc2, 0x88, 0xe5, - 0xa4, 0xc5, 0x88, 0xe5, 0xa4, 0xc2, 0x88, 0xe5, 0xa5, 0xc5, 0x88, 0xe5, - 0xa5, 0xc2, 0x88, 0xe5, 0xa5, 0xc5, 0x88, 0xe5, 0xa6, 0xc2, 0x88, 0xe5, - 0xa6, 0xc5, 0x88, 0xe5, 0xa6, 0xc2, 0x88, 0xe5, 0xa7, 0xc5, 0x88, 0xe5, - 0xa7, 0xc2, 0x88, 0xe5, 0xa8, 0xc5, 0x88, 0xe5, 0xa8, 0xc2, 0x88, 0xe5, - 0xa8, 0xc5, 0x88, 0xe5, 0xa9, 0xc2, 0xa4, 0xe5, 0xa9, 0xee, 0xa4, 0xe5, - 0xaa, 0xee, 0xa4, 0xe5, 0xaa, 0xee, 0xa4, 0xe5, 0xaa, 0xee, 0xa4, 0xe5, - 0xab, 0xee, 0xa4, 0xe5, 0xab, 0xee, 0xa8, 0xe5, 0xab, 0xef, 0xa4, 0xe5, - 0xac, 0xee, 0xa8, 0xe5, 0xac, 0xef, 0xa8, 0xe5, 0xac, 0xef, 0xa8, 0xe5, - 0xad, 0xef, 0xa8, 0xe5, 0xad, 0xef, 0xa8, 0xe5, 0xae, 0xef, 0xa8, 0xe5, - 0xae, 0xef, 0xa8, 0xe5, 0xae, 0xef, 0xa8, 0xe5, 0xaf, 0xef, 0xa8, 0xe5, - 0xaf, 0xef, 0xac, 0xe5, 0xaf, 0xf0, 0xa8, 0xe5, 0xb0, 0xef, 0xac, 0xe5, - 0xb0, 0xf0, 0xac, 0xe5, 0xb0, 0xf0, 0xac, 0xe5, 0xb1, 0xf0, 0xac, 0xe5, - 0xb1, 0xf0, 0xac, 0xe5, 0xb2, 0xf0, 0xac, 0xe5, 0xb2, 0xf0, 0xac, 0xe5, - 0xb2, 0xf0, 0xac, 0xe5, 0xb3, 0xf0, 0xac, 0xe5, 0xb3, 0xf0, 0xb0, 0xe5, - 0xb3, 0xf1, 0xac, 0xe5, 0xb4, 0xf0, 0xb0, 0xe5, 0xb4, 0xf1, 0xce, 0xe5, - 0xb4, 0xd0, 0xce, 0xe5, 0xb5, 0xcd, 0xce, 0xe5, 0xb5, 0xd0, 0xce, 0xe5, - 0xb5, 0xcd, 0xce, 0xe5, 0xb6, 0xd0, 0xce, 0xe5, 0xb6, 0xcd, 0xce, 0xe5, - 0xb6, 0xd0, 0xce, 0xe5, 0xb7, 0xcd, 0xce, 0xe5, 0xb7, 0xd0, 0xce, 0xe5, - 0xb7, 0xcd, 0xce, 0xe5, 0xb8, 0xd0, 0xce, 0xe5, 0xb8, 0xcd, 0xce, 0xe5, - 0xb8, 0xd0, 0xce, 0xe5, 0xb9, 0xcd, 0xce, 0xe5, 0xb9, 0xd0, 0xce, 0xe5, - 0xb9, 0xcd, 0xce, 0xe5, 0xba, 0xd0, 0xce, 0xe5, 0xba, 0xcd, 0xce, 0xe5, - 0xba, 0xd0, 0xce, 0xe5, 0xbb, 0xcd, 0xce, 0xe5, 0xbb, 0xd0, 0xce, 0xe5, - 0xbb, 0xcd, 0xce, 0xe5, 0xbc, 0xd0, 0xce, 0xe5, 0xbc, 0xcd, 0xce, 0xe5, - 0xbc, 0xd0, 0xce, 0xe5, 0xbd, 0xcd, 0xce, 0xe5, 0xbd, 0xcb, 0xce, 0xe5, - 0xbd, 0xcd, 0xce, 0xe5, 0xbe, 0xcb, 0xce, 0xe5, 0xbe, 0xcd, 0xce, 0xe5, - 0xbe, 0xcb, 0xce, 0xe5, 0xbf, 0xcd, 0xce, 0xe5, 0xbf, 0xcb, 0xce, 0xe5, - 0xbf, 0xcd, 0xce, 0xe5, 0xc0, 0xcb, 0xce, 0xe5, 0xc0, 0xcd, 0xce, 0xe5, - 0xc0, 0xcb, 0xce, 0xe5, 0xc1, 0xcd, 0xce, 0xe5, 0xc1, 0xcb, 0xce, 0xe5, - 0xc1, 0xcd, 0xce, 0xe5, 0xc1, 0xcb, 0xce, 0xe5, 0xc2, 0xcd, 0xce, 0xe5, - 0xc2, 0xcb, 0xce, 0xe5, 0xc2, 0xcd, 0xce, 0xe5, 0xc3, 0xcb, 0xce, 0xe5, - 0xc3, 0xcd, 0xce, 0xe5, 0xc3, 0xcb, 0xce, 0xe5, 0xc4, 0xcd, 0xce, 0xe5, - 0xc4, 0xcb, 0xce, 0xe5, 0xc4, 0xcd, 0xce, 0xe5, 0xc5, 0xcb, 0xce, 0xe5, - 0xc5, 0xcd, 0xce, 0xe5, 0xc5, 0xcb, 0xce, 0xe5, 0xc6, 0xcd, 0xce, 0xe5, - 0xc6, 0xcb, 0xce, 0xe5, 0xc6, 0xcd, 0xce, 0xe5, 0xc6, 0xcb, 0xce, 0xe5, - 0xc7, 0xcd, 0xce, 0xe5, 0xc7, 0xcb, 0xce, 0xe5, 0xc7, 0xc8, 0xce, 0xe5, - 0xc8, 0xcb, 0xce, 0xe5, 0xc8, 0xc8, 0xce, 0xe5, 0xc8, 0xcb, 0xce, 0xe5, - 0xc9, 0xc8, 0xce, 0xe5, 0xc9, 0xcb, 0xce, 0xe5, 0xc9, 0xc8, 0xce, 0xe5, - 0xc9, 0xcb, 0xce, 0xe5, 0xca, 0xc8, 0xce, 0xe5, 0xca, 0xcb, 0xce, 0xe5, - 0xca, 0xc8, 0xce, 0xe5, 0xcb, 0xcb, 0xce, 0xe5, 0xcb, 0xc8, 0xce, 0xe5, - 0xcb, 0xcb, 0xce, 0xe5, 0xcc, 0xc8, 0xce, 0xe5, 0xcc, 0xcb, 0xce, 0xe5, - 0xcc, 0xc8, 0xcf, 0xe5, 0xcc, 0xc8, 0xce, 0xe5, 0xcd, 0xc8, 0xcf, 0xe5, - 0xcd, 0xc8, 0xce, 0xe5, 0xcd, 0xc8, 0xcf, 0xe5, 0xce, 0xc8, 0xce, 0xe5, - 0xce, 0xc8, 0xcf, 0xe5, 0xce, 0xc8, 0xce, 0xe5, 0xce, 0xc8, 0xcf, 0xe5, - 0xce, 0xc8, 0xcf, 0xe5, 0xce, 0xc8, 0xcf, 0xe5, 0xce, 0xc8, 0xd0, 0xe5, - 0xce, 0xc8, 0xd0, 0xe5, 0xce, 0xc8, 0xd0, 0xe5, 0xce, 0xc8, 0xd0, 0xe5, - 0xce, 0xc8, 0xd1, 0xe5, 0xce, 0xc8, 0xd1, 0xe5, 0xce, 0xc8, 0xd1, 0xe5, - 0xce, 0xc8, 0xd2, 0xe5, 0xce, 0xc8, 0xd2, 0xe5, 0xce, 0xc8, 0xd2, 0xe5, - 0xce, 0xc8, 0xd2, 0xe5, 0xce, 0xc8, 0xd3, 0xe5, 0xce, 0xc8, 0xd3, 0xe5, - 0xce, 0xc8, 0xd3, 0xe3, 0xcf, 0xc8, 0xd4, 0xe5, 0xce, 0xc8, 0xd4, 0xe3, - 0xcf, 0xc8, 0xd4, 0xe5, 0xce, 0xc8, 0xd4, 0xe3, 0xcf, 0xc8, 0xd5, 0xe5, - 0xce, 0xc8, 0xd5, 0xe3, 0xcf, 0xc8, 0xd5, 0xe5, 0xce, 0xc8, 0xd6, 0xe3, - 0xcf, 0xc8, 0xd6, 0xe5, 0xce, 0xc8, 0xd6, 0xe3, 0xcf, 0xc8, 0xd6, 0xe5, - 0xce, 0xc8, 0xd7, 0xe3, 0xcf, 0xc8, 0xd7, 0xe5, 0xce, 0xc8, 0xd7, 0xe3, - 0xcf, 0xc8, 0xd7, 0xe5, 0xce, 0xc8, 0xd8, 0xe3, 0xcf, 0xc8, 0xd8, 0xe5, - 0xce, 0xc8, 0xd8, 0xe3, 0xcf, 0xc8, 0xd9, 0xe5, 0xce, 0xc8, 0xd9, 0xe3, - 0xcf, 0xc8, 0xd9, 0xe2, 0xcf, 0xc8, 0xd9, 0xe3, 0xcf, 0xc8, 0xda, 0xe2, - 0xcf, 0xc8, 0xda, 0xe3, 0xcf, 0xc8, 0xda, 0xe2, 0xcf, 0xc8, 0xda, 0xe3, - 0xcf, 0xc8, 0xdb, 0xe2, 0xcf, 0xc8, 0xdb, 0xe3, 0xcf, 0xc8, 0xdb, 0xe8, - 0xe7, 0xc8, 0xdb, 0xe6, 0xe7, 0xc8, 0xdc, 0xe8, 0xe7, 0xc8, 0xdc, 0xe6, - 0xe7, 0xc8, 0xdc, 0xe8, 0xe7, 0xc8, 0xdd, 0xe6, 0xe7, 0xc8, 0xdd, 0xe8, - 0xe7, 0xc8, 0xdd, 0xe6, 0xe7, 0xc8, 0xdd, 0xe8, 0xe7, 0xc8, 0xde, 0xe6, - 0xe7, 0xc8, 0xde, 0xe8, 0xe7, 0xc8, 0xde, 0xe6, 0xe7, 0xc8, 0xde, 0xe8, - 0xe7, 0xc8, 0xdf, 0xe6, 0xe7, 0xc8, 0xdf, 0xe8, 0xe7, 0xc8, 0xdf, 0xe6, - 0xe7, 0xc8, 0xdf, 0xe8, 0xe7, 0xc8, 0xe0, 0xe6, 0xe7, 0xc8, 0xe0, 0xe8, - 0xe7, 0xc8, 0xe0, 0xe6, 0xe7, 0xc8, 0xe1, 0xe8, 0xe7, 0xc8, 0xe1, 0xe6, - 0xe7, 0xc8, 0xe1, 0xe5, 0xe7, 0xc8, 0xe1, 0xe6, 0xe7, 0xc8, 0xe2, 0xe5, - 0xe7, 0xc8, 0xe2, 0xe6, 0xe7, 0xc8, 0xe2, 0xe5, 0xe7, 0xc8, 0xe2, 0xe6, - 0xe7, 0xc8, 0xe3, 0xe5, 0xe7, 0xc8, 0xe3, 0xe6, 0xe7, 0xc8, 0xe3, 0xe5, - 0xe7, 0xc8, 0xe3, 0xe6, 0xe7, 0xc8, 0xe4, 0xe5, 0xe7, 0xc8, 0xe4, 0xe6, - 0xe7, 0xc8, 0xe4, 0xe5, 0xe7, 0xc8, 0xe4, 0xe6, 0xe7, 0xc8, 0xe5, 0xe5, - 0xe7, 0xc8, 0xe5, 0xe6, 0xe7, 0xc8, 0xe5, 0xe5, 0xe7, 0xc8, 0xe5, 0xe6, - 0xe7, 0xc8, 0xe6, 0xe5, 0xe7, 0xc8, 0xe6, 0xe6, 0xe7, 0xc8, 0xe6, 0xe5, - 0xe7, 0xc8, 0xe6, 0xe5, 0xe7, 0xc8, 0xe7, 0xe5, 0xe7, 0xc8, 0xe7, 0xe5, - 0xe7, 0xc8, 0xe7, 0xe5, 0xe7, 0xc8, 0xe7, 0xe5, 0xe7, 0xc8, 0xe7, 0xe5, - 0xe8, 0xc8, 0xe7, 0xe5, 0xe8, 0xc8, 0xe7, 0xe5, 0xe8, 0xc6, 0xe7, 0xe5, - 0xe8, 0xc8, 0xe7, 0xe5, 0xe9, 0xc6, 0xe7, 0xe5, 0xe9, 0xc8, 0xeb, 0xe5, - 0xe9, 0xc8, 0xeb, 0xe5, 0xe9, 0xc9, 0xeb, 0xe5, 0xea, 0xc8, 0xeb, 0xe5, - 0xea, 0xc9, 0xeb, 0xe5, 0xea, 0xc8, 0xeb, 0xe5, 0xea, 0xc9, 0xeb, 0xe5, - 0xeb, 0xc8, 0xeb, 0xe5, 0xeb, 0xc8, 0xeb, 0xe5, 0xeb, 0xc8, 0xeb, 0xe5, - 0xeb, 0xc8, 0xec, 0xe5, 0xeb, 0xc8, 0xec, 0xe5, 0xeb, 0xc8, 0xec, 0xe5, - 0xeb, 0xc8, 0xec, 0xe5, 0xeb, 0xc8, 0xec, 0xe5, 0xeb, 0xc8, 0xed, 0xe5, - 0xeb, 0xc8, 0xed, 0xe5, 0xeb, 0xc8, 0xed, 0xe5, 0xeb, 0xc8, 0xed, 0xe5, - 0xeb, 0xc8, 0xee, 0xe5, 0xeb, 0xc8, 0xee, 0xe5, 0xeb, 0xc8, 0xee, 0xe5, - 0xeb, 0xc8, 0xee, 0xe5, 0xeb, 0xc8, 0xef, 0xe5, 0xeb, 0xc8, 0xef, 0xe3, - 0xeb, 0xc8, 0xef, 0xe5, 0xeb, 0xc8, 0xef, 0xe3, 0xeb, 0xc8, 0xf0, 0xe5, - 0xeb, 0xc8, 0xf0, 0xe3, 0xeb, 0xc8, 0xf0, 0xe5, 0xeb, 0xc8, 0xf0, 0xe3, - 0xeb, 0xc8, 0xf1, 0xe5, 0xeb, 0xc8, 0xf1, 0xe3, 0xeb, 0xc8, 0xf1, 0xe5, - 0xeb, 0xc8, 0xf1, 0xe3, 0xeb, 0xc8, 0xf2, 0xe5, 0xeb, 0xc8, 0xf2, 0xec, - 0xf1, 0xc8, 0xf2, 0xec, 0xf1, 0xc8, 0xf2, 0xec, 0xf1, 0xc8, 0xf2, 0xec, - 0xf1, 0xc8, 0xf3, 0xec, 0xf1, 0xc8, 0xf3, 0xec, 0xf1, 0xc8, 0xf3, 0xec, - 0xf1, 0xc8, 0xf3, 0xec, 0xf1, 0xc8, 0xf4, 0xec, 0xf1, 0xc8, 0xf4, 0xec, - 0xf1, 0xc8, 0xf4, 0xec, 0xf1, 0xc8, 0xf4, 0xec, 0xf1, 0xc8, 0xf5, 0xec, - 0xf1, 0xc8, 0xf5, 0xec, 0xf1, 0xc8, 0xf5, 0xec, 0xf1, 0xc8, 0xf5, 0xec, - 0xf1, 0xc8, 0xf5, 0xec, 0xf1, 0xc8, 0xf6, 0xec, 0xf1, 0xc8, 0xf6, 0xec, - 0xf1, 0xc8, 0xf6, 0xec, 0xf1, 0xc8, 0xf6, 0xec, 0xf1, 0xc8, 0xf7, 0xec, - 0xf1, 0xc8, 0xf7, 0xec, 0xf1, 0xc8, 0xf7, 0xec, 0xf1, 0xc8, 0xf7, 0xec, - 0xf1, 0xc8, 0xf8, 0xec, 0xf1, 0xc8, 0xf8, 0xec, 0xf1, 0xc8, 0xf8, 0xec, - 0xf1, 0xc8, 0xf8, 0xec, 0xf1, 0xc8, 0xf8, 0xec, 0xf1, 0xc8, 0xf9, 0xec, - 0xf1, 0xc8, 0xf9, 0xec, 0xf1, 0xc8, 0xf9, 0xec, 0xf1, 0xc8, 0xf9, 0xec, - 0xf1, 0xc8, 0xfa, 0xec, 0xf1, 0xc8, 0xfa, 0xec, 0xf1, 0xc8, 0xfa, 0xec, - 0xf1, 0xc8, 0xfa, 0xec, 0xf1, 0xc8, 0xfa, 0xec, 0xf1, 0xc8, 0xfb, 0xec, - 0xf1, 0xc8, 0xfb, 0xec, 0xf1, 0xc8, 0xfb, 0xec, 0xf1, 0xc8, 0xfb, 0xec, - 0xf1, 0xc8, 0xfc, 0xec, 0xf1, 0xc8, 0xfc, 0xec, 0xf1, 0xc8, 0xfc, 0xec, - 0xf1, 0xc8, 0xfc, 0xec, 0xf1, 0xc8, 0xfc, 0xec, 0xf1, 0xc8, 0xfd, 0xec, - 0xf1, 0xc8, 0xfd, 0xec, 0xf1, 0xc8, 0xfd, 0xec, 0xf1, 0xc8, 0xfd, 0xec, - 0xf1, 0xc8, 0xfe, 0xec, 0xf1, 0xc8, 0xfe, 0xec, 0xf1, 0xc8, 0xfe, 0xec, - 0xf1, 0xc8, 0xfe, 0xec, 0xf1, 0xc8, 0xfe, 0xec, 0xf1, 0xc8, 0xff, 0xec, - 0xf1, 0xc8, 0xff, 0xec, 0xf1, 0xc8, 0x03, 0xe9, 0x86, 0xc8, 0x0a, 0xeb, - 0x86, 0xc8, 0x0f, 0xe9, 0x86, 0xc8, 0x14, 0xeb, 0x86, 0xc8, 0x17, 0xe9, - 0x86, 0xc8, 0x1b, 0xeb, 0x86, 0xc8, 0x1e, 0xe9, 0x86, 0xc8, 0x20, 0xeb, - 0x86, 0xc8, 0x23, 0xe9, 0x86, 0xc8, 0x25, 0xeb, 0x86, 0xc8, 0x27, 0xe9, - 0x86, 0xc8, 0x29, 0xeb, 0x86, 0xc8, 0x2b, 0xe9, 0x86, 0xc8, 0x2d, 0xeb, - 0x86, 0xc8, 0x2f, 0xe9, 0x86, 0xc8, 0x31, 0xeb, 0x86, 0xc8, 0x32, 0xe9, - 0x86, 0xc8, 0x34, 0xeb, 0x86, 0xc8, 0x35, 0xe9, 0x86, 0xc8, 0x37, 0xe7, - 0x87, 0xc8, 0x38, 0xe9, 0x86, 0xc8, 0x3a, 0xe7, 0x87, 0xc8, 0x3b, 0xe9, - 0x86, 0xc8, 0x3c, 0xe7, 0x87, 0xc8, 0x3e, 0xe9, 0x86, 0xc8, 0x3f, 0xe7, - 0x87, 0xc8, 0x40, 0xe9, 0x86, 0xc8, 0x42, 0xe7, 0x87, 0xc8, 0x43, 0xe9, - 0x86, 0xc8, 0x44, 0xe7, 0x87, 0xc8, 0x45, 0xe9, 0x86, 0xc8, 0x46, 0xe7, - 0x87, 0xc8, 0x47, 0xe9, 0x86, 0xc8, 0x48, 0xe7, 0x87, 0xc8, 0x49, 0xe9, - 0x86, 0xc8, 0x4a, 0xe7, 0x87, 0xc8, 0x4b, 0xe9, 0x86, 0xc8, 0x4c, 0xe7, - 0x87, 0xc8, 0x4d, 0xe9, 0x86, 0xc8, 0x4e, 0xe7, 0x87, 0xc8, 0x4f, 0xe9, - 0x86, 0xc8, 0x50, 0xe7, 0x87, 0xc8, 0x51, 0xe9, 0x86, 0xc8, 0x52, 0xe7, - 0x87, 0xc8, 0x53, 0xe9, 0x86, 0xc8, 0x54, 0xe7, 0x87, 0xc8, 0x55, 0xe9, - 0x86, 0xc8, 0x56, 0xe7, 0x87, 0xc8, 0x57, 0xe9, 0x86, 0xc8, 0x58, 0xe7, - 0x87, 0xc8, 0x58, 0xe9, 0x86, 0xc8, 0x59, 0xe7, 0x87, 0xc8, 0x5a, 0xe9, - 0x86, 0xc8, 0x5b, 0xe7, 0x87, 0xc8, 0x5c, 0xe9, 0x86, 0xc8, 0x5d, 0xe7, - 0x87, 0xc8, 0x5d, 0xe9, 0x86, 0xc8, 0x5e, 0xe7, 0x87, 0xc8, 0x5f, 0xe9, - 0x86, 0xc8, 0x60, 0xe7, 0x87, 0xc8, 0x60, 0xe9, 0x86, 0xc8, 0x61, 0xe7, - 0x87, 0xc8, 0x62, 0xe9, 0x86, 0xc8, 0x63, 0xe7, 0x87, 0xc8, 0x63, 0xe9, - 0x86, 0xc8, 0x64, 0xe7, 0x87, 0xc8, 0x65, 0xe9, 0x86, 0xc8, 0x66, 0xe7, - 0x87, 0xc8, 0x66, 0xe9, 0x86, 0xc8, 0x67, 0xe7, 0x87, 0xc8, 0x68, 0xe9, - 0x86, 0xc8, 0x68, 0xe7, 0x87, 0xc8, 0x69, 0xe9, 0x86, 0xc8, 0x6a, 0xe7, - 0x87, 0xc8, 0x6a, 0xe9, 0x86, 0xc8, 0x6b, 0xe7, 0x87, 0xc8, 0x6c, 0xe6, - 0x87, 0xc8, 0x6c, 0xe7, 0x87, 0xc8, 0x6d, 0xe6, 0x87, 0xc8, 0x6e, 0xe7, - 0x87, 0xc8, 0x6e, 0xe6, 0x87, 0xc8, 0x6f, 0xe7, 0x87, 0xc8, 0x70, 0xe6, - 0x87, 0xc8, 0x70, 0xe7, 0x87, 0xc8, 0x71, 0xe6, 0x87, 0xc8, 0x72, 0xe7, - 0x87, 0xc8, 0x72, 0xe6, 0x87, 0xc8, 0x73, 0xe7, 0x87, 0xc8, 0x73, 0xe6, - 0x87, 0xc8, 0x74, 0xe7, 0x87, 0xc8, 0x75, 0xe6, 0x87, 0xc8, 0x75, 0xe7, - 0x87, 0xc8, 0x76, 0xe6, 0x87, 0xc8, 0x76, 0xe7, 0x87, 0xc8, 0x77, 0xe6, - 0x87, 0xc8, 0x78, 0xe7, 0x87, 0xc8, 0x78, 0xe6, 0x87, 0xc8, 0x79, 0xe7, - 0x87, 0xc8, 0x79, 0xe6, 0x87, 0xc8, 0x7a, 0xe7, 0x87, 0xc8, 0x7a, 0xe6, - 0x87, 0xc8, 0x7b, 0xe7, 0x87, 0xc8, 0x7c, 0xe6, 0x87, 0xc8, 0x7c, 0xe7, - 0x87, 0xc8, 0x7d, 0xe6, 0x87, 0xc8, 0x7d, 0xe7, 0x87, 0xc8, 0x7e, 0xe6, - 0x87, 0xc8, 0x7e, 0xe7, 0x87, 0xc8, 0x7f, 0xe6, 0x87, 0xc8, 0x7f, 0xe5, - 0x88, 0xc8, 0x80, 0xe6, 0x87, 0xc8, 0x81, 0xe5, 0x88, 0xc8, 0x81, 0xe6, - 0x87, 0xc8, 0x82, 0xe5, 0x88, 0xc8, 0x82, 0xe6, 0x87, 0xc8, 0x83, 0xe5, - 0x88, 0xc8, 0x83, 0xe6, 0x87, 0xc8, 0x84, 0xe5, 0x88, 0xc8, 0x84, 0xe6, - 0x87, 0xc8, 0x85, 0xe5, 0x88, 0xc8, 0x85, 0xe6, 0x87, 0xc8, 0x86, 0xe5, - 0x88, 0xc8, 0x86, 0xe6, 0x87, 0xc8, 0x87, 0xe5, 0x88, 0xc8, 0x87, 0xe6, - 0x87, 0xc8, 0x87, 0xe5, 0x88, 0xc8, 0x87, 0xe5, 0x88, 0xc8, 0x87, 0xe5, - 0x89, 0xc8, 0x87, 0xe5, 0x89, 0xc8, 0x87, 0xe5, 0x8a, 0xc8, 0x87, 0xe5, - 0x8a, 0xc8, 0x87, 0xe5, 0x8b, 0xc8, 0x87, 0xe5, 0x8b, 0xc8, 0x87, 0xe5, - 0x8c, 0xc8, 0x87, 0xe5, 0x8c, 0xc8, 0x87, 0xe5, 0x8d, 0xc8, 0x87, 0xe5, - 0x8d, 0xc8, 0x87, 0xe5, 0x8e, 0xc8, 0x87, 0xe5, 0x8e, 0xc8, 0x87, 0xe5, - 0x8e, 0xc8, 0x87, 0xe5, 0x8f, 0xc8, 0x88, 0xe5, 0x8f, 0xc4, 0x87, 0xe5, - 0x90, 0xc8, 0x88, 0xe5, 0x90, 0xc4, 0x87, 0xe5, 0x91, 0xc8, 0x88, 0xe5, - 0x91, 0xc4, 0x87, 0xe5, 0x92, 0xc8, 0x88, 0xe5, 0x92, 0xc4, 0x87, 0xe5, - 0x93, 0xc8, 0x88, 0xe5, 0x93, 0xc4, 0x87, 0xe5, 0x94, 0xc8, 0x88, 0xe5, - 0x94, 0xc4, 0x87, 0xe5, 0x94, 0xc8, 0x88, 0xe5, 0x95, 0xc4, 0x87, 0xe5, - 0x95, 0xc8, 0x88, 0xe5, 0x96, 0xc4, 0x87, 0xe5, 0x96, 0xc8, 0x88, 0xe5, - 0x97, 0xc4, 0x87, 0xe5, 0x97, 0xc8, 0x88, 0xe5, 0x98, 0xc4, 0x87, 0xe5, - 0x98, 0xc8, 0x88, 0xe5, 0x98, 0xc4, 0x87, 0xe5, 0x99, 0xc8, 0x88, 0xe5, - 0x99, 0xc4, 0x87, 0xe5, 0x9a, 0xc8, 0x88, 0xe5, 0x9a, 0xc4, 0x87, 0xe5, - 0x9a, 0xc8, 0x88, 0xe5, 0x9b, 0xc4, 0x87, 0xe5, 0x9b, 0xc8, 0x88, 0xe5, - 0x9c, 0xc4, 0x87, 0xe5, 0x9c, 0xc8, 0x88, 0xe5, 0x9d, 0xc4, 0x87, 0xe5, - 0x9d, 0xc8, 0x88, 0xe5, 0x9d, 0xc4, 0x88, 0xe5, 0x9e, 0xc1, 0x88, 0xe5, - 0x9e, 0xc4, 0x88, 0xe5, 0x9f, 0xc1, 0x88, 0xe5, 0x9f, 0xc4, 0x88, 0xe5, - 0x9f, 0xc1, 0x88, 0xe5, 0xa0, 0xc4, 0x88, 0xe5, 0xa0, 0xc1, 0x88, 0xe5, - 0xa1, 0xc4, 0x88, 0xe5, 0xa1, 0xc1, 0x88, 0xe5, 0xa1, 0xc4, 0x88, 0xe5, - 0xa2, 0xc1, 0x88, 0xe5, 0xa2, 0xc4, 0x88, 0xe5, 0xa3, 0xc1, 0x88, 0xe5, - 0xa3, 0xc4, 0x88, 0xe5, 0xa3, 0xc1, 0x88, 0xe5, 0xa4, 0xc4, 0x88, 0xe5, - 0xa4, 0xc1, 0x88, 0xe5, 0xa5, 0xc4, 0x88, 0xe5, 0xa5, 0xc1, 0x88, 0xe5, - 0xa5, 0xc4, 0x88, 0xe5, 0xa6, 0xc1, 0x88, 0xe5, 0xa6, 0xc4, 0x88, 0xe5, - 0xa6, 0xc1, 0x88, 0xe5, 0xa7, 0xc4, 0x88, 0xe5, 0xa7, 0xc1, 0x88, 0xe5, - 0xa8, 0xc4, 0x88, 0xe5, 0xa8, 0xc1, 0xa2, 0xe5, 0xa8, 0xed, 0xa2, 0xe5, - 0xa9, 0xed, 0xa2, 0xe5, 0xa9, 0xed, 0xa6, 0xe5, 0xaa, 0xee, 0xa2, 0xe5, - 0xaa, 0xed, 0xa6, 0xe5, 0xaa, 0xee, 0xa6, 0xe5, 0xab, 0xee, 0xa6, 0xe5, - 0xab, 0xee, 0xa6, 0xe5, 0xab, 0xee, 0xa6, 0xe5, 0xac, 0xee, 0xa6, 0xe5, - 0xac, 0xee, 0xa6, 0xe5, 0xac, 0xee, 0xa6, 0xe5, 0xad, 0xee, 0xa6, 0xe5, - 0xad, 0xee, 0xab, 0xe5, 0xae, 0xef, 0xa6, 0xe5, 0xae, 0xee, 0xab, 0xe5, - 0xae, 0xef, 0xaa, 0xe5, 0xaf, 0xef, 0xab, 0xe5, 0xaf, 0xef, 0xaa, 0xe5, - 0xaf, 0xef, 0xab, 0xe5, 0xb0, 0xef, 0xaa, 0xe5, 0xb0, 0xef, 0xab, 0xe5, - 0xb0, 0xef, 0xaa, 0xe5, 0xb1, 0xef, 0xab, 0xe5, 0xb1, 0xef, 0xaf, 0xe5, - 0xb2, 0xf0, 0xab, 0xe5, 0xb2, 0xef, 0xaf, 0xe5, 0xb2, 0xf0, 0xae, 0xe5, - 0xb3, 0xf0, 0xaf, 0xe5, 0xb3, 0xf0, 0xae, 0xe5, 0xb3, 0xf0, 0xaf, 0xe5, - 0xb4, 0xf0, 0xae, 0xe5, 0xb4, 0xf0, 0xce, 0xe5, 0xb4, 0xd0, 0xcd, 0xe5, - 0xb5, 0xd2, 0xce, 0xe5, 0xb5, 0xd0, 0xcd, 0xe5, 0xb5, 0xd2, 0xce, 0xe5, - 0xb6, 0xd0, 0xce, 0xe5, 0xb6, 0xcd, 0xce, 0xe5, 0xb6, 0xd0, 0xce, 0xe5, - 0xb7, 0xcd, 0xce, 0xe5, 0xb7, 0xd0, 0xce, 0xe5, 0xb7, 0xcd, 0xce, 0xe5, - 0xb8, 0xd0, 0xce, 0xe5, 0xb8, 0xcd, 0xce, 0xe5, 0xb8, 0xd0, 0xce, 0xe5, - 0xb9, 0xcd, 0xce, 0xe5, 0xb9, 0xd0, 0xce, 0xe5, 0xb9, 0xcd, 0xce, 0xe5, - 0xba, 0xd0, 0xce, 0xe5, 0xba, 0xcd, 0xce, 0xe5, 0xba, 0xd0, 0xce, 0xe5, - 0xbb, 0xcd, 0xce, 0xe5, 0xbb, 0xd0, 0xce, 0xe5, 0xbb, 0xcd, 0xce, 0xe5, - 0xbc, 0xca, 0xce, 0xe5, 0xbc, 0xcd, 0xce, 0xe5, 0xbc, 0xca, 0xce, 0xe5, - 0xbd, 0xcd, 0xce, 0xe5, 0xbd, 0xca, 0xce, 0xe5, 0xbd, 0xcd, 0xce, 0xe5, - 0xbe, 0xca, 0xce, 0xe5, 0xbe, 0xcd, 0xce, 0xe5, 0xbe, 0xca, 0xce, 0xe5, - 0xbf, 0xcd, 0xce, 0xe5, 0xbf, 0xca, 0xce, 0xe5, 0xbf, 0xcd, 0xce, 0xe5, - 0xc0, 0xca, 0xce, 0xe5, 0xc0, 0xcd, 0xce, 0xe5, 0xc0, 0xca, 0xce, 0xe5, - 0xc1, 0xcd, 0xce, 0xe5, 0xc1, 0xca, 0xce, 0xe5, 0xc1, 0xcd, 0xce, 0xe5, - 0xc1, 0xca, 0xce, 0xe5, 0xc2, 0xcd, 0xce, 0xe5, 0xc2, 0xca, 0xce, 0xe5, - 0xc2, 0xcd, 0xce, 0xe5, 0xc3, 0xca, 0xce, 0xe5, 0xc3, 0xcd, 0xce, 0xe5, - 0xc3, 0xca, 0xce, 0xe5, 0xc4, 0xcd, 0xce, 0xe5, 0xc4, 0xca, 0xce, 0xe5, - 0xc4, 0xcd, 0xce, 0xe5, 0xc5, 0xca, 0xce, 0xe5, 0xc5, 0xcd, 0xce, 0xe5, - 0xc5, 0xca, 0xce, 0xe5, 0xc6, 0xcd, 0xce, 0xe5, 0xc6, 0xca, 0xce, 0xe5, - 0xc6, 0xcd, 0xce, 0xe5, 0xc6, 0xca, 0xce, 0xe5, 0xc7, 0xcd, 0xce, 0xe5, - 0xc7, 0xca, 0xce, 0xe5, 0xc7, 0xc8, 0xce, 0xe5, 0xc8, 0xca, 0xce, 0xe5, - 0xc8, 0xc8, 0xce, 0xe5, 0xc8, 0xca, 0xce, 0xe5, 0xc9, 0xc8, 0xce, 0xe5, - 0xc9, 0xca, 0xce, 0xe5, 0xc9, 0xc8, 0xce, 0xe5, 0xc9, 0xca, 0xce, 0xe5, - 0xca, 0xc8, 0xce, 0xe5, 0xca, 0xca, 0xce, 0xe5, 0xca, 0xc8, 0xce, 0xe5, - 0xcb, 0xca, 0xce, 0xe5, 0xcb, 0xc8, 0xce, 0xe5, 0xcb, 0xca, 0xce, 0xe5, - 0xcc, 0xc8, 0xce, 0xe5, 0xcc, 0xca, 0xce, 0xe5, 0xcc, 0xc8, 0xce, 0xe5, - 0xcc, 0xca, 0xce, 0xe5, 0xcd, 0xc8, 0xce, 0xe5, 0xcd, 0xca, 0xce, 0xe5, - 0xcd, 0xc8, 0xcf, 0xe5, 0xce, 0xc8, 0xce, 0xe5, 0xce, 0xc8, 0xcf, 0xe5, - 0xce, 0xc8, 0xce, 0xe5, 0xce, 0xc8, 0xcf, 0xe5, 0xce, 0xc8, 0xcf, 0xe5, - 0xce, 0xc8, 0xcf, 0xe5, 0xce, 0xc8, 0xd0, 0xe4, 0xce, 0xc8, 0xd0, 0xe5, - 0xce, 0xc8, 0xd0, 0xe4, 0xce, 0xc8, 0xd0, 0xe5, 0xce, 0xc8, 0xd1, 0xe4, - 0xce, 0xc8, 0xd1, 0xe5, 0xce, 0xc8, 0xd1, 0xe4, 0xce, 0xc8, 0xd2, 0xe5, - 0xce, 0xc8, 0xd2, 0xe4, 0xce, 0xc8, 0xd2, 0xe5, 0xce, 0xc8, 0xd2, 0xe4, - 0xce, 0xc8, 0xd3, 0xe5, 0xce, 0xc8, 0xd3, 0xe4, 0xce, 0xc8, 0xd3, 0xe3, - 0xcf, 0xc8, 0xd4, 0xe4, 0xce, 0xc8, 0xd4, 0xe3, 0xcf, 0xc8, 0xd4, 0xe4, - 0xce, 0xc8, 0xd4, 0xe3, 0xcf, 0xc8, 0xd5, 0xe4, 0xce, 0xc8, 0xd5, 0xe3, - 0xcf, 0xc8, 0xd5, 0xe4, 0xce, 0xc8, 0xd6, 0xe3, 0xcf, 0xc8, 0xd6, 0xe4, - 0xce, 0xc8, 0xd6, 0xe3, 0xcf, 0xc8, 0xd6, 0xe4, 0xce, 0xc8, 0xd7, 0xe3, - 0xcf, 0xc8, 0xd7, 0xe4, 0xce, 0xc8, 0xd7, 0xe3, 0xcf, 0xc8, 0xd7, 0xe4, - 0xce, 0xc8, 0xd8, 0xe3, 0xcf, 0xc8, 0xd8, 0xe4, 0xce, 0xc8, 0xd8, 0xe3, - 0xcf, 0xc8, 0xd9, 0xe4, 0xce, 0xc8, 0xd9, 0xe3, 0xcf, 0xc8, 0xd9, 0xe4, - 0xce, 0xc8, 0xd9, 0xe3, 0xcf, 0xc8, 0xda, 0xe4, 0xce, 0xc8, 0xda, 0xe3, - 0xcf, 0xc8, 0xda, 0xe4, 0xce, 0xc8, 0xda, 0xe3, 0xcf, 0xc8, 0xdb, 0xe4, - 0xce, 0xc8, 0xdb, 0xe3, 0xcf, 0xc8, 0xdb, 0xe7, 0xe7, 0xc8, 0xdb, 0xe6, - 0xe7, 0xc8, 0xdc, 0xe7, 0xe7, 0xc8, 0xdc, 0xe6, 0xe7, 0xc8, 0xdc, 0xe7, - 0xe7, 0xc8, 0xdd, 0xe6, 0xe7, 0xc8, 0xdd, 0xe7, 0xe7, 0xc8, 0xdd, 0xe6, - 0xe7, 0xc8, 0xdd, 0xe7, 0xe7, 0xc8, 0xde, 0xe6, 0xe7, 0xc8, 0xde, 0xe7, - 0xe7, 0xc8, 0xde, 0xe6, 0xe7, 0xc8, 0xde, 0xe7, 0xe7, 0xc8, 0xdf, 0xe6, - 0xe7, 0xc8, 0xdf, 0xe7, 0xe7, 0xc8, 0xdf, 0xe6, 0xe7, 0xc8, 0xdf, 0xe7, - 0xe7, 0xc8, 0xe0, 0xe6, 0xe7, 0xc8, 0xe0, 0xe7, 0xe7, 0xc8, 0xe0, 0xe6, - 0xe7, 0xc8, 0xe1, 0xe7, 0xe7, 0xc8, 0xe1, 0xe6, 0xe7, 0xc8, 0xe1, 0xe7, - 0xe7, 0xc8, 0xe1, 0xe6, 0xe7, 0xc8, 0xe2, 0xe7, 0xe7, 0xc8, 0xe2, 0xe6, - 0xe7, 0xc8, 0xe2, 0xe7, 0xe7, 0xc8, 0xe2, 0xe6, 0xe7, 0xc8, 0xe3, 0xe7, - 0xe7, 0xc8, 0xe3, 0xe6, 0xe7, 0xc8, 0xe3, 0xe5, 0xe7, 0xc8, 0xe3, 0xe6, - 0xe7, 0xc8, 0xe4, 0xe5, 0xe7, 0xc8, 0xe4, 0xe6, 0xe7, 0xc8, 0xe4, 0xe5, - 0xe7, 0xc8, 0xe4, 0xe6, 0xe7, 0xc8, 0xe5, 0xe5, 0xe7, 0xc8, 0xe5, 0xe6, - 0xe7, 0xc8, 0xe5, 0xe5, 0xe7, 0xc8, 0xe5, 0xe6, 0xe7, 0xc8, 0xe6, 0xe5, - 0xe7, 0xc8, 0xe6, 0xe6, 0xe7, 0xc8, 0xe6, 0xe5, 0xe7, 0xc8, 0xe6, 0xe6, - 0xe7, 0xc8, 0xe7, 0xe5, 0xe7, 0xc8, 0xe7, 0xe6, 0xe7, 0xc8, 0xe7, 0xe5, - 0xe7, 0xc8, 0xe7, 0xe5, 0xe7, 0xc8, 0xe7, 0xe5, 0xe8, 0xc8, 0xe7, 0xe5, - 0xe8, 0xc8, 0xe7, 0xe5, 0xe8, 0xc6, 0xe7, 0xe5, 0xe8, 0xc8, 0xe7, 0xe5, - 0xe9, 0xc6, 0xe7, 0xe5, 0xe9, 0xc8, 0xeb, 0xe5, 0xe9, 0xc8, 0xeb, 0xe5, - 0xe9, 0xc8, 0xeb, 0xe5, 0xea, 0xc8, 0xeb, 0xe5, 0xea, 0xc8, 0xeb, 0xe5, - 0xea, 0xc8, 0xeb, 0xe5, 0xea, 0xc8, 0xeb, 0xe5, 0xeb, 0xc8, 0xeb, 0xe5, - 0xeb, 0xc8, 0xeb, 0xe5, 0xeb, 0xc8, 0xeb, 0xe5, 0xeb, 0xc8, 0xec, 0xe5, - 0xeb, 0xc8, 0xec, 0xe5, 0xeb, 0xc8, 0xec, 0xe5, 0xeb, 0xc8, 0xec, 0xe5, - 0xeb, 0xc8, 0xec, 0xe5, 0xeb, 0xc8, 0xed, 0xe5, 0xeb, 0xc8, 0xed, 0xe5, - 0xeb, 0xc8, 0xed, 0xe5, 0xeb, 0xc8, 0xed, 0xe5, 0xeb, 0xc8, 0xee, 0xe5, - 0xeb, 0xc8, 0xee, 0xe5, 0xeb, 0xc8, 0xee, 0xe5, 0xeb, 0xc8, 0xee, 0xe5, - 0xeb, 0xc8, 0xef, 0xe5, 0xeb, 0xc8, 0xef, 0xe3, 0xeb, 0xc8, 0xef, 0xe5, - 0xeb, 0xc8, 0xef, 0xe3, 0xeb, 0xc8, 0xf0, 0xe5, 0xeb, 0xc8, 0xf0, 0xe3, - 0xeb, 0xc8, 0xf0, 0xe5, 0xeb, 0xc8, 0xf0, 0xe3, 0xeb, 0xc8, 0xf1, 0xe5, - 0xeb, 0xc8, 0xf1, 0xe3, 0xeb, 0xc8, 0xf1, 0xe5, 0xeb, 0xc8, 0xf1, 0xec, - 0xf0, 0xc8, 0xf2, 0xec, 0xf0, 0xc8, 0xf2, 0xec, 0xf0, 0xc8, 0xf2, 0xec, - 0xf0, 0xc8, 0xf2, 0xec, 0xf0, 0xc8, 0xf2, 0xec, 0xf0, 0xc8, 0xf3, 0xec, - 0xf0, 0xc8, 0xf3, 0xec, 0xf0, 0xc8, 0xf3, 0xec, 0xf1, 0xc8, 0xf3, 0xec, - 0xf0, 0xc8, 0xf4, 0xec, 0xf1, 0xc8, 0xf4, 0xec, 0xf1, 0xc8, 0xf4, 0xec, - 0xf1, 0xc8, 0xf4, 0xec, 0xf1, 0xc8, 0xf5, 0xec, 0xf1, 0xc8, 0xf5, 0xec, - 0xf1, 0xc8, 0xf5, 0xec, 0xf1, 0xc8, 0xf5, 0xec, 0xf1, 0xc8, 0xf5, 0xec, - 0xf1, 0xc8, 0xf6, 0xec, 0xf1, 0xc8, 0xf6, 0xec, 0xf1, 0xc8, 0xf6, 0xec, - 0xf1, 0xc8, 0xf6, 0xec, 0xf1, 0xc8, 0xf7, 0xec, 0xf1, 0xc8, 0xf7, 0xec, - 0xf1, 0xc8, 0xf7, 0xec, 0xf1, 0xc8, 0xf7, 0xec, 0xf1, 0xc8, 0xf8, 0xec, - 0xf1, 0xc8, 0xf8, 0xec, 0xf1, 0xc8, 0xf8, 0xec, 0xf1, 0xc8, 0xf8, 0xec, - 0xf1, 0xc8, 0xf8, 0xec, 0xf1, 0xc8, 0xf9, 0xec, 0xf1, 0xc8, 0xf9, 0xec, - 0xf1, 0xc8, 0xf9, 0xec, 0xf1, 0xc8, 0xf9, 0xec, 0xf1, 0xc8, 0xfa, 0xec, - 0xf1, 0xc8, 0xfa, 0xec, 0xf1, 0xc8, 0xfa, 0xec, 0xf1, 0xc8, 0xfa, 0xec, - 0xf1, 0xc8, 0xfa, 0xec, 0xf1, 0xc8, 0xfb, 0xec, 0xf1, 0xc8, 0xfb, 0xec, - 0xf1, 0xc8, 0xfb, 0xec, 0xf1, 0xc8, 0xfb, 0xec, 0xf1, 0xc8, 0xfc, 0xec, - 0xf1, 0xc8, 0xfc, 0xec, 0xf1, 0xc8, 0xfc, 0xec, 0xf1, 0xc8, 0xfc, 0xec, - 0xf1, 0xc8, 0xfc, 0xec, 0xf1, 0xc8, 0xfd, 0xec, 0xf1, 0xc8, 0xfd, 0xec, - 0xf1, 0xc8, 0xfd, 0xec, 0xf1, 0xc8, 0xfd, 0xec, 0xf1, 0xc8, 0xfe, 0xec, - 0xf1, 0xc8, 0xfe, 0xec, 0xf1, 0xc8, 0xfe, 0xec, 0xf1, 0xc8, 0xfe, 0xec, - 0xf1, 0xc8, 0xfe, 0xec, 0xf1, 0xc8, 0xff, 0xec, 0xf1, 0xc8, 0xff, 0xec, - 0xf1, 0xc8, 0x03, 0xec, 0x85, 0xc9, 0x0a, 0xeb, 0x86, 0xc9, 0x0f, 0xe9, - 0x86, 0xc9, 0x14, 0xeb, 0x86, 0xc9, 0x17, 0xe9, 0x86, 0xc9, 0x1b, 0xeb, - 0x86, 0xc9, 0x1e, 0xe9, 0x86, 0xc9, 0x20, 0xeb, 0x86, 0xc9, 0x23, 0xe9, - 0x86, 0xc9, 0x25, 0xeb, 0x86, 0xc9, 0x27, 0xe9, 0x86, 0xc9, 0x29, 0xeb, - 0x86, 0xc9, 0x2b, 0xe9, 0x86, 0xc9, 0x2d, 0xeb, 0x86, 0xc9, 0x2f, 0xe9, - 0x86, 0xc9, 0x31, 0xeb, 0x86, 0xc9, 0x32, 0xe9, 0x86, 0xc9, 0x34, 0xeb, - 0x86, 0xc9, 0x35, 0xe9, 0x86, 0xc9, 0x37, 0xeb, 0x86, 0xc9, 0x38, 0xe9, - 0x86, 0xc9, 0x3a, 0xeb, 0x86, 0xc9, 0x3b, 0xe9, 0x86, 0xc9, 0x3c, 0xeb, - 0x86, 0xc9, 0x3e, 0xe9, 0x86, 0xc9, 0x3f, 0xeb, 0x86, 0xc9, 0x40, 0xe9, - 0x86, 0xc9, 0x42, 0xeb, 0x86, 0xc9, 0x43, 0xe9, 0x86, 0xc9, 0x44, 0xeb, - 0x86, 0xc9, 0x45, 0xe9, 0x86, 0xc9, 0x46, 0xeb, 0x86, 0xc9, 0x47, 0xe9, - 0x86, 0xc9, 0x48, 0xeb, 0x86, 0xc9, 0x49, 0xe9, 0x86, 0xc9, 0x4a, 0xeb, - 0x86, 0xc9, 0x4b, 0xe9, 0x86, 0xc9, 0x4c, 0xeb, 0x86, 0xc9, 0x4d, 0xe9, - 0x86, 0xc9, 0x4e, 0xe8, 0x87, 0xc9, 0x4f, 0xe9, 0x86, 0xc9, 0x50, 0xe8, - 0x87, 0xc9, 0x51, 0xe9, 0x86, 0xc9, 0x52, 0xe8, 0x87, 0xc9, 0x53, 0xe9, - 0x86, 0xc9, 0x54, 0xe8, 0x87, 0xc9, 0x55, 0xe9, 0x86, 0xc9, 0x56, 0xe8, - 0x87, 0xc9, 0x57, 0xe9, 0x86, 0xc9, 0x58, 0xe8, 0x87, 0xc9, 0x58, 0xe9, - 0x86, 0xc9, 0x59, 0xe8, 0x87, 0xc9, 0x5a, 0xe9, 0x86, 0xc9, 0x5b, 0xe8, - 0x87, 0xc9, 0x5c, 0xe9, 0x86, 0xc9, 0x5d, 0xe8, 0x87, 0xc9, 0x5d, 0xe9, - 0x86, 0xc9, 0x5e, 0xe8, 0x87, 0xc9, 0x5f, 0xe9, 0x86, 0xc9, 0x60, 0xe8, - 0x87, 0xc9, 0x60, 0xe9, 0x86, 0xc9, 0x61, 0xe8, 0x87, 0xc9, 0x62, 0xe9, - 0x86, 0xc9, 0x63, 0xe8, 0x87, 0xc9, 0x63, 0xe9, 0x86, 0xc9, 0x64, 0xe8, - 0x87, 0xc9, 0x65, 0xe9, 0x86, 0xc9, 0x66, 0xe8, 0x87, 0xc9, 0x66, 0xe9, - 0x86, 0xc9, 0x67, 0xe8, 0x87, 0xc9, 0x68, 0xe9, 0x86, 0xc9, 0x68, 0xe8, - 0x87, 0xc9, 0x69, 0xe9, 0x86, 0xc9, 0x6a, 0xe8, 0x87, 0xc9, 0x6a, 0xe9, - 0x86, 0xc9, 0x6b, 0xe8, 0x87, 0xc9, 0x6c, 0xe6, 0x87, 0xc9, 0x6c, 0xe8, - 0x87, 0xc9, 0x6d, 0xe6, 0x87, 0xc9, 0x6e, 0xe8, 0x87, 0xc9, 0x6e, 0xe6, - 0x87, 0xc9, 0x6f, 0xe8, 0x87, 0xc9, 0x70, 0xe6, 0x87, 0xc9, 0x70, 0xe8, - 0x87, 0xc9, 0x71, 0xe6, 0x87, 0xc9, 0x72, 0xe8, 0x87, 0xc9, 0x72, 0xe6, - 0x87, 0xc9, 0x73, 0xe8, 0x87, 0xc9, 0x73, 0xe6, 0x87, 0xc9, 0x74, 0xe8, - 0x87, 0xc9, 0x75, 0xe6, 0x87, 0xc9, 0x75, 0xe8, 0x87, 0xc9, 0x76, 0xe6, - 0x87, 0xc9, 0x76, 0xe8, 0x87, 0xc9, 0x77, 0xe6, 0x87, 0xc9, 0x78, 0xe8, - 0x87, 0xc9, 0x78, 0xe6, 0x87, 0xc9, 0x79, 0xe8, 0x87, 0xc9, 0x79, 0xe6, - 0x87, 0xc9, 0x7a, 0xe8, 0x87, 0xc9, 0x7a, 0xe6, 0x87, 0xc9, 0x7b, 0xe8, - 0x87, 0xc9, 0x7c, 0xe6, 0x87, 0xc9, 0x7c, 0xe8, 0x87, 0xc9, 0x7d, 0xe6, - 0x87, 0xc9, 0x7d, 0xe8, 0x87, 0xc9, 0x7e, 0xe6, 0x87, 0xc9, 0x7e, 0xe8, - 0x87, 0xc9, 0x7f, 0xe6, 0x87, 0xc9, 0x7f, 0xe6, 0x88, 0xc9, 0x80, 0xe6, - 0x87, 0xc9, 0x81, 0xe6, 0x88, 0xc9, 0x81, 0xe6, 0x87, 0xc9, 0x82, 0xe6, - 0x88, 0xc9, 0x82, 0xe6, 0x87, 0xc9, 0x83, 0xe6, 0x88, 0xc9, 0x83, 0xe6, - 0x87, 0xc9, 0x84, 0xe6, 0x88, 0xc9, 0x84, 0xe6, 0x87, 0xc9, 0x85, 0xe6, - 0x88, 0xc9, 0x85, 0xe6, 0x87, 0xc9, 0x86, 0xe6, 0x88, 0xc9, 0x86, 0xe6, - 0x87, 0xc9, 0x87, 0xe6, 0x88, 0xc9, 0x87, 0xe6, 0x87, 0xc8, 0x87, 0xe6, - 0x88, 0xc9, 0x87, 0xe6, 0x88, 0xc8, 0x87, 0xe6, 0x89, 0xc9, 0x87, 0xe6, - 0x89, 0xc8, 0x87, 0xe6, 0x8a, 0xc9, 0x87, 0xe6, 0x8a, 0xc8, 0x87, 0xe6, - 0x8b, 0xc9, 0x87, 0xe6, 0x8b, 0xc8, 0x87, 0xe6, 0x8c, 0xc9, 0x87, 0xe6, - 0x8c, 0xc8, 0x87, 0xe6, 0x8d, 0xc9, 0x87, 0xe6, 0x8d, 0xc8, 0x87, 0xe6, - 0x8e, 0xc9, 0x87, 0xe6, 0x8e, 0xc8, 0x87, 0xe6, 0x8e, 0xc9, 0x87, 0xe6, - 0x8f, 0xc8, 0x88, 0xe6, 0x8f, 0xc5, 0x87, 0xe6, 0x90, 0xc8, 0x88, 0xe6, - 0x90, 0xc5, 0x87, 0xe6, 0x91, 0xc8, 0x88, 0xe6, 0x91, 0xc5, 0x87, 0xe6, - 0x92, 0xc8, 0x88, 0xe6, 0x92, 0xc5, 0x87, 0xe6, 0x93, 0xc8, 0x88, 0xe6, - 0x93, 0xc5, 0x87, 0xe6, 0x94, 0xc8, 0x88, 0xe6, 0x94, 0xc5, 0x87, 0xe6, - 0x94, 0xc8, 0x88, 0xe6, 0x95, 0xc5, 0x87, 0xe6, 0x95, 0xc8, 0x88, 0xe6, - 0x96, 0xc5, 0x87, 0xe6, 0x96, 0xc8, 0x88, 0xe6, 0x97, 0xc5, 0x87, 0xe6, - 0x97, 0xc8, 0x88, 0xe6, 0x98, 0xc5, 0x87, 0xe6, 0x98, 0xc8, 0x88, 0xe6, - 0x98, 0xc5, 0x87, 0xe6, 0x99, 0xc8, 0x88, 0xe6, 0x99, 0xc5, 0x87, 0xe6, - 0x9a, 0xc8, 0x88, 0xe6, 0x9a, 0xc5, 0x87, 0xe6, 0x9a, 0xc8, 0x88, 0xe6, - 0x9b, 0xc5, 0x87, 0xe6, 0x9b, 0xc8, 0x88, 0xe6, 0x9c, 0xc5, 0x87, 0xe6, - 0x9c, 0xc8, 0x88, 0xe6, 0x9d, 0xc5, 0x87, 0xe6, 0x9d, 0xc8, 0x88, 0xe6, - 0x9d, 0xc5, 0x88, 0xe6, 0x9e, 0xc2, 0x88, 0xe6, 0x9e, 0xc5, 0x88, 0xe6, - 0x9f, 0xc2, 0x88, 0xe6, 0x9f, 0xc5, 0x88, 0xe6, 0x9f, 0xc2, 0x88, 0xe6, - 0xa0, 0xc5, 0x88, 0xe6, 0xa0, 0xc2, 0x88, 0xe6, 0xa1, 0xc5, 0x88, 0xe6, - 0xa1, 0xc2, 0x88, 0xe6, 0xa1, 0xc5, 0x88, 0xe6, 0xa2, 0xc2, 0x88, 0xe6, - 0xa2, 0xc5, 0x88, 0xe6, 0xa3, 0xc2, 0x88, 0xe6, 0xa3, 0xc5, 0x88, 0xe6, - 0xa3, 0xc2, 0x88, 0xe6, 0xa4, 0xc5, 0x88, 0xe6, 0xa4, 0xc2, 0x88, 0xe6, - 0xa5, 0xc5, 0x88, 0xe6, 0xa5, 0xc2, 0x88, 0xe6, 0xa5, 0xc5, 0x88, 0xe6, - 0xa6, 0xc2, 0x88, 0xe6, 0xa6, 0xc5, 0x88, 0xe6, 0xa6, 0xc2, 0x88, 0xe6, - 0xa7, 0xc5, 0x88, 0xe6, 0xa7, 0xc2, 0x88, 0xe6, 0xa8, 0xc5, 0xa4, 0xe6, - 0xa8, 0xee, 0xa4, 0xe6, 0xa8, 0xee, 0xa4, 0xe6, 0xa9, 0xee, 0xa4, 0xe6, - 0xa9, 0xee, 0xa4, 0xe6, 0xaa, 0xee, 0xa4, 0xe6, 0xaa, 0xee, 0xa4, 0xe6, - 0xaa, 0xee, 0xa4, 0xe6, 0xab, 0xee, 0xa4, 0xe6, 0xab, 0xee, 0xa8, 0xe6, - 0xab, 0xef, 0xa4, 0xe6, 0xac, 0xee, 0xa8, 0xe6, 0xac, 0xef, 0xa8, 0xe6, - 0xac, 0xef, 0xa8, 0xe6, 0xad, 0xef, 0xa8, 0xe6, 0xad, 0xef, 0xa8, 0xe6, - 0xae, 0xef, 0xa8, 0xe6, 0xae, 0xef, 0xa8, 0xe6, 0xae, 0xef, 0xa8, 0xe6, - 0xaf, 0xef, 0xa8, 0xe6, 0xaf, 0xef, 0xac, 0xe6, 0xaf, 0xf0, 0xa8, 0xe6, - 0xb0, 0xef, 0xac, 0xe6, 0xb0, 0xf0, 0xac, 0xe6, 0xb0, 0xf0, 0xac, 0xe6, - 0xb1, 0xf0, 0xac, 0xe6, 0xb1, 0xf0, 0xac, 0xe6, 0xb2, 0xf0, 0xac, 0xe6, - 0xb2, 0xf0, 0xac, 0xe6, 0xb2, 0xf0, 0xac, 0xe6, 0xb3, 0xf0, 0xac, 0xe6, - 0xb3, 0xf0, 0xb0, 0xe6, 0xb3, 0xf1, 0xac, 0xe6, 0xb4, 0xf0, 0xb0, 0xe6, - 0xb4, 0xf1, 0xb0, 0xe6, 0xb4, 0xf1, 0xce, 0xe6, 0xb5, 0xcd, 0xce, 0xe6, - 0xb5, 0xd0, 0xce, 0xe6, 0xb5, 0xcd, 0xce, 0xe6, 0xb6, 0xd0, 0xce, 0xe6, - 0xb6, 0xcd, 0xce, 0xe6, 0xb6, 0xd0, 0xce, 0xe6, 0xb7, 0xcd, 0xce, 0xe6, - 0xb7, 0xd0, 0xce, 0xe6, 0xb7, 0xcd, 0xce, 0xe6, 0xb8, 0xd0, 0xce, 0xe6, - 0xb8, 0xcd, 0xce, 0xe6, 0xb8, 0xd0, 0xce, 0xe6, 0xb9, 0xcd, 0xce, 0xe6, - 0xb9, 0xd0, 0xce, 0xe6, 0xb9, 0xcd, 0xce, 0xe6, 0xba, 0xd0, 0xce, 0xe6, - 0xba, 0xcd, 0xce, 0xe6, 0xba, 0xd0, 0xce, 0xe6, 0xbb, 0xcd, 0xce, 0xe6, - 0xbb, 0xd0, 0xce, 0xe6, 0xbb, 0xcd, 0xce, 0xe6, 0xbc, 0xd0, 0xce, 0xe6, - 0xbc, 0xcd, 0xce, 0xe6, 0xbc, 0xd0, 0xce, 0xe6, 0xbd, 0xcd, 0xce, 0xe6, - 0xbd, 0xd0, 0xce, 0xe6, 0xbd, 0xcd, 0xce, 0xe6, 0xbe, 0xd0, 0xce, 0xe6, - 0xbe, 0xcd, 0xce, 0xe6, 0xbe, 0xd0, 0xce, 0xe6, 0xbf, 0xcd, 0xce, 0xe6, - 0xbf, 0xd0, 0xce, 0xe6, 0xbf, 0xcd, 0xce, 0xe6, 0xc0, 0xd0, 0xce, 0xe6, - 0xc0, 0xcd, 0xce, 0xe6, 0xc0, 0xd0, 0xce, 0xe6, 0xc1, 0xcd, 0xce, 0xe6, - 0xc1, 0xcb, 0xce, 0xe6, 0xc1, 0xcd, 0xce, 0xe6, 0xc1, 0xcb, 0xce, 0xe6, - 0xc2, 0xcd, 0xce, 0xe6, 0xc2, 0xcb, 0xce, 0xe6, 0xc2, 0xcd, 0xce, 0xe6, - 0xc3, 0xcb, 0xce, 0xe6, 0xc3, 0xcd, 0xce, 0xe6, 0xc3, 0xcb, 0xce, 0xe6, - 0xc4, 0xcd, 0xce, 0xe6, 0xc4, 0xcb, 0xce, 0xe6, 0xc4, 0xcd, 0xce, 0xe6, - 0xc5, 0xcb, 0xce, 0xe6, 0xc5, 0xcd, 0xce, 0xe6, 0xc5, 0xcb, 0xce, 0xe6, - 0xc6, 0xcd, 0xce, 0xe6, 0xc6, 0xcb, 0xce, 0xe6, 0xc6, 0xcd, 0xce, 0xe6, - 0xc6, 0xcb, 0xce, 0xe6, 0xc7, 0xcd, 0xce, 0xe6, 0xc7, 0xcb, 0xce, 0xe6, - 0xc7, 0xcd, 0xce, 0xe6, 0xc8, 0xcb, 0xce, 0xe6, 0xc8, 0xcd, 0xce, 0xe6, - 0xc8, 0xcb, 0xce, 0xe6, 0xc9, 0xcd, 0xce, 0xe6, 0xc9, 0xcb, 0xce, 0xe6, - 0xc9, 0xcd, 0xce, 0xe6, 0xc9, 0xcb, 0xce, 0xe6, 0xca, 0xc9, 0xce, 0xe6, - 0xca, 0xcb, 0xce, 0xe6, 0xca, 0xc9, 0xce, 0xe6, 0xcb, 0xcb, 0xce, 0xe6, - 0xcb, 0xc9, 0xce, 0xe6, 0xcb, 0xcb, 0xce, 0xe6, 0xcc, 0xc9, 0xce, 0xe6, - 0xcc, 0xcb, 0xce, 0xe6, 0xcc, 0xc9, 0xce, 0xe6, 0xcc, 0xcb, 0xce, 0xe6, - 0xcd, 0xc9, 0xce, 0xe6, 0xcd, 0xcb, 0xce, 0xe6, 0xcd, 0xc9, 0xcf, 0xe6, - 0xce, 0xc9, 0xce, 0xe6, 0xce, 0xc9, 0xcf, 0xe6, 0xce, 0xc9, 0xce, 0xe6, - 0xce, 0xc9, 0xcf, 0xe6, 0xce, 0xc9, 0xcf, 0xe6, 0xce, 0xc9, 0xcf, 0xe6, - 0xce, 0xc9, 0xd0, 0xe5, 0xce, 0xc9, 0xd0, 0xe6, 0xce, 0xc9, 0xd0, 0xe5, - 0xce, 0xc9, 0xd0, 0xe6, 0xce, 0xc9, 0xd1, 0xe5, 0xce, 0xc9, 0xd1, 0xe6, - 0xce, 0xc9, 0xd1, 0xe5, 0xce, 0xc9, 0xd2, 0xe6, 0xce, 0xc9, 0xd2, 0xe5, - 0xce, 0xc9, 0xd2, 0xe6, 0xce, 0xc9, 0xd2, 0xe5, 0xce, 0xc9, 0xd3, 0xe6, - 0xce, 0xc9, 0xd3, 0xe5, 0xce, 0xc9, 0xd3, 0xe6, 0xce, 0xc9, 0xd4, 0xe5, - 0xce, 0xc9, 0xd4, 0xe6, 0xce, 0xc9, 0xd4, 0xe5, 0xce, 0xc9, 0xd4, 0xe6, - 0xce, 0xc9, 0xd5, 0xe5, 0xce, 0xc9, 0xd5, 0xe6, 0xce, 0xc9, 0xd5, 0xe5, - 0xce, 0xc9, 0xd6, 0xe3, 0xcf, 0xc9, 0xd6, 0xe5, 0xce, 0xc9, 0xd6, 0xe3, - 0xcf, 0xc9, 0xd6, 0xe5, 0xce, 0xc9, 0xd7, 0xe3, 0xcf, 0xc9, 0xd7, 0xe5, - 0xce, 0xc9, 0xd7, 0xe3, 0xcf, 0xc9, 0xd7, 0xe5, 0xce, 0xc9, 0xd8, 0xe3, - 0xcf, 0xc9, 0xd8, 0xe5, 0xce, 0xc9, 0xd8, 0xe3, 0xcf, 0xc9, 0xd9, 0xe5, - 0xce, 0xc9, 0xd9, 0xe3, 0xcf, 0xc9, 0xd9, 0xe5, 0xce, 0xc9, 0xd9, 0xe3, - 0xcf, 0xc9, 0xda, 0xe5, 0xce, 0xc9, 0xda, 0xe3, 0xcf, 0xc9, 0xda, 0xe5, - 0xce, 0xc9, 0xda, 0xe3, 0xcf, 0xc9, 0xdb, 0xe5, 0xce, 0xc9, 0xdb, 0xe3, - 0xcf, 0xc9, 0xdb, 0xe8, 0xe7, 0xc9, 0xdb, 0xe9, 0xe6, 0xc9, 0xdc, 0xe8, - 0xe7, 0xc9, 0xdc, 0xe9, 0xe6, 0xc9, 0xdc, 0xe8, 0xe7, 0xc9, 0xdd, 0xe9, - 0xe6, 0xc9, 0xdd, 0xe8, 0xe7, 0xc9, 0xdd, 0xe9, 0xe6, 0xc9, 0xdd, 0xe8, - 0xe7, 0xc9, 0xde, 0xe6, 0xe7, 0xc9, 0xde, 0xe8, 0xe7, 0xc9, 0xde, 0xe6, - 0xe7, 0xc9, 0xde, 0xe8, 0xe7, 0xc9, 0xdf, 0xe6, 0xe7, 0xc9, 0xdf, 0xe8, - 0xe7, 0xc9, 0xdf, 0xe6, 0xe7, 0xc9, 0xdf, 0xe8, 0xe7, 0xc9, 0xe0, 0xe6, - 0xe7, 0xc9, 0xe0, 0xe8, 0xe7, 0xc9, 0xe0, 0xe6, 0xe7, 0xc9, 0xe1, 0xe8, - 0xe7, 0xc9, 0xe1, 0xe6, 0xe7, 0xc9, 0xe1, 0xe8, 0xe7, 0xc9, 0xe1, 0xe6, - 0xe7, 0xc9, 0xe2, 0xe8, 0xe7, 0xc9, 0xe2, 0xe6, 0xe7, 0xc9, 0xe2, 0xe8, - 0xe7, 0xc9, 0xe2, 0xe6, 0xe7, 0xc9, 0xe3, 0xe8, 0xe7, 0xc9, 0xe3, 0xe6, - 0xe7, 0xc9, 0xe3, 0xe6, 0xe7, 0xc9, 0xe3, 0xe6, 0xe7, 0xc9, 0xe4, 0xe6, - 0xe7, 0xc9, 0xe4, 0xe6, 0xe7, 0xc9, 0xe4, 0xe6, 0xe7, 0xc9, 0xe4, 0xe6, - 0xe7, 0xc9, 0xe5, 0xe6, 0xe7, 0xc9, 0xe5, 0xe6, 0xe7, 0xc9, 0xe5, 0xe6, - 0xe7, 0xc9, 0xe5, 0xe6, 0xe7, 0xc9, 0xe6, 0xe6, 0xe7, 0xc9, 0xe6, 0xe6, - 0xe7, 0xc9, 0xe6, 0xe6, 0xe7, 0xc9, 0xe6, 0xe6, 0xe7, 0xc9, 0xe7, 0xe6, - 0xe7, 0xc9, 0xe7, 0xe6, 0xe7, 0xc9, 0xe7, 0xe6, 0xe7, 0xc9, 0xe7, 0xe6, - 0xe7, 0xc9, 0xe7, 0xe6, 0xe8, 0xc9, 0xe7, 0xe6, 0xe8, 0xc9, 0xe7, 0xe6, - 0xe8, 0xc9, 0xe7, 0xe6, 0xe8, 0xc9, 0xe7, 0xe6, 0xe9, 0xc9, 0xe7, 0xe6, - 0xe9, 0xc9, 0xeb, 0xe6, 0xe9, 0xc9, 0xeb, 0xe6, 0xe9, 0xc9, 0xeb, 0xe6, - 0xea, 0xc9, 0xeb, 0xe6, 0xea, 0xc9, 0xeb, 0xe6, 0xea, 0xc9, 0xeb, 0xe6, - 0xea, 0xc9, 0xeb, 0xe6, 0xeb, 0xc9, 0xeb, 0xe5, 0xeb, 0xc9, 0xeb, 0xe6, - 0xeb, 0xc9, 0xeb, 0xe5, 0xeb, 0xc9, 0xec, 0xe6, 0xeb, 0xc9, 0xec, 0xe5, - 0xeb, 0xc9, 0xec, 0xe6, 0xeb, 0xc9, 0xec, 0xe5, 0xeb, 0xc9, 0xec, 0xe6, - 0xeb, 0xc9, 0xed, 0xe5, 0xeb, 0xc9, 0xed, 0xe6, 0xeb, 0xc9, 0xed, 0xe5, - 0xeb, 0xc9, 0xed, 0xe6, 0xeb, 0xc9, 0xee, 0xe5, 0xeb, 0xc9, 0xee, 0xe6, - 0xeb, 0xc9, 0xee, 0xe5, 0xeb, 0xc9, 0xee, 0xe6, 0xeb, 0xc9, 0xef, 0xe5, - 0xeb, 0xc9, 0xef, 0xe6, 0xeb, 0xc9, 0xef, 0xe5, 0xeb, 0xc9, 0xef, 0xe6, - 0xeb, 0xc9, 0xf0, 0xe5, 0xeb, 0xc9, 0xf0, 0xe6, 0xeb, 0xc9, 0xf0, 0xe5, - 0xeb, 0xc9, 0xf0, 0xe6, 0xeb, 0xc9, 0xf1, 0xe5, 0xeb, 0xc9, 0xf1, 0xe3, - 0xeb, 0xc9, 0xf1, 0xec, 0xf1, 0xc9, 0xf1, 0xec, 0xf1, 0xc9, 0xf2, 0xec, - 0xf1, 0xc9, 0xf2, 0xec, 0xf1, 0xc9, 0xf2, 0xec, 0xf1, 0xc9, 0xf2, 0xec, - 0xf1, 0xc9, 0xf2, 0xec, 0xf1, 0xc9, 0xf3, 0xec, 0xf1, 0xc9, 0xf3, 0xec, - 0xf1, 0xc9, 0xf3, 0xec, 0xf1, 0xc9, 0xf3, 0xec, 0xf1, 0xc9, 0xf4, 0xec, - 0xf1, 0xc9, 0xf4, 0xec, 0xf1, 0xc9, 0xf4, 0xec, 0xf1, 0xc9, 0xf4, 0xec, - 0xf1, 0xc9, 0xf5, 0xec, 0xf1, 0xc9, 0xf5, 0xec, 0xf1, 0xc9, 0xf5, 0xec, - 0xf1, 0xc9, 0xf5, 0xec, 0xf1, 0xc9, 0xf5, 0xec, 0xf1, 0xc9, 0xf6, 0xec, - 0xf1, 0xc9, 0xf6, 0xec, 0xf1, 0xc9, 0xf6, 0xec, 0xf1, 0xc9, 0xf6, 0xec, - 0xf1, 0xc9, 0xf7, 0xec, 0xf1, 0xc9, 0xf7, 0xec, 0xf1, 0xc9, 0xf7, 0xec, - 0xf1, 0xc9, 0xf7, 0xec, 0xf1, 0xc9, 0xf8, 0xec, 0xf1, 0xc9, 0xf8, 0xec, - 0xf1, 0xc9, 0xf8, 0xec, 0xf1, 0xc9, 0xf8, 0xec, 0xf1, 0xc9, 0xf8, 0xec, - 0xf1, 0xc9, 0xf9, 0xec, 0xf1, 0xc9, 0xf9, 0xec, 0xf1, 0xc9, 0xf9, 0xec, - 0xf1, 0xc9, 0xf9, 0xec, 0xf1, 0xc9, 0xfa, 0xec, 0xf1, 0xc9, 0xfa, 0xec, - 0xf1, 0xc9, 0xfa, 0xec, 0xf1, 0xc9, 0xfa, 0xec, 0xf1, 0xc9, 0xfa, 0xec, - 0xf1, 0xc9, 0xfb, 0xec, 0xf1, 0xc9, 0xfb, 0xec, 0xf1, 0xc9, 0xfb, 0xec, - 0xf1, 0xc9, 0xfb, 0xec, 0xf1, 0xc9, 0xfc, 0xec, 0xf1, 0xc9, 0xfc, 0xec, - 0xf1, 0xc9, 0xfc, 0xec, 0xf1, 0xc9, 0xfc, 0xec, 0xf1, 0xc9, 0xfc, 0xec, - 0xf1, 0xc9, 0xfd, 0xec, 0xf1, 0xc9, 0xfd, 0xec, 0xf1, 0xc9, 0xfd, 0xec, - 0xf1, 0xc9, 0xfd, 0xec, 0xf1, 0xc9, 0xfe, 0xec, 0xf1, 0xc9, 0xfe, 0xec, - 0xf1, 0xc9, 0xfe, 0xec, 0xf1, 0xc9, 0xfe, 0xec, 0xf1, 0xc9, 0xfe, 0xec, - 0xf1, 0xc9, 0xff, 0xec, 0xf1, 0xc9, 0xff, 0xec, 0xf1, 0xc9, 0x03, 0xe9, - 0x86, 0xc9, 0x0a, 0xeb, 0x86, 0xc9, 0x0f, 0xe9, 0x86, 0xc9, 0x14, 0xeb, - 0x86, 0xc9, 0x17, 0xe9, 0x86, 0xc9, 0x1b, 0xeb, 0x86, 0xc9, 0x1e, 0xe9, - 0x86, 0xc9, 0x20, 0xeb, 0x86, 0xc9, 0x23, 0xe9, 0x86, 0xc9, 0x25, 0xeb, - 0x86, 0xc9, 0x27, 0xe9, 0x86, 0xc9, 0x29, 0xeb, 0x86, 0xc9, 0x2b, 0xe9, - 0x86, 0xc9, 0x2d, 0xeb, 0x86, 0xc9, 0x2f, 0xe9, 0x86, 0xc9, 0x31, 0xeb, - 0x86, 0xc9, 0x32, 0xe9, 0x86, 0xc9, 0x34, 0xeb, 0x86, 0xc9, 0x35, 0xe9, - 0x86, 0xc9, 0x37, 0xeb, 0x86, 0xc9, 0x38, 0xe9, 0x86, 0xc9, 0x3a, 0xeb, - 0x86, 0xc9, 0x3b, 0xe9, 0x86, 0xc9, 0x3c, 0xeb, 0x86, 0xc9, 0x3e, 0xe9, - 0x86, 0xc9, 0x3f, 0xeb, 0x86, 0xc9, 0x40, 0xe9, 0x86, 0xc9, 0x42, 0xeb, - 0x86, 0xc9, 0x43, 0xe9, 0x86, 0xc9, 0x44, 0xeb, 0x86, 0xc9, 0x45, 0xe9, - 0x86, 0xc9, 0x46, 0xe7, 0x87, 0xc9, 0x47, 0xe9, 0x86, 0xc9, 0x48, 0xe7, - 0x87, 0xc9, 0x49, 0xe9, 0x86, 0xc9, 0x4a, 0xe7, 0x87, 0xc9, 0x4b, 0xe9, - 0x86, 0xc9, 0x4c, 0xe7, 0x87, 0xc9, 0x4d, 0xe9, 0x86, 0xc9, 0x4e, 0xe7, - 0x87, 0xc9, 0x4f, 0xe9, 0x86, 0xc9, 0x50, 0xe7, 0x87, 0xc9, 0x51, 0xe9, - 0x86, 0xc9, 0x52, 0xe7, 0x87, 0xc9, 0x53, 0xe9, 0x86, 0xc9, 0x54, 0xe7, - 0x87, 0xc9, 0x55, 0xe9, 0x86, 0xc9, 0x56, 0xe7, 0x87, 0xc9, 0x57, 0xe9, - 0x86, 0xc9, 0x58, 0xe7, 0x87, 0xc9, 0x58, 0xe9, 0x86, 0xc9, 0x59, 0xe7, - 0x87, 0xc9, 0x5a, 0xe9, 0x86, 0xc9, 0x5b, 0xe7, 0x87, 0xc9, 0x5c, 0xe9, - 0x86, 0xc9, 0x5d, 0xe7, 0x87, 0xc9, 0x5d, 0xe9, 0x86, 0xc9, 0x5e, 0xe7, - 0x87, 0xc9, 0x5f, 0xe9, 0x86, 0xc9, 0x60, 0xe7, 0x87, 0xc9, 0x60, 0xe9, - 0x86, 0xc9, 0x61, 0xe7, 0x87, 0xc9, 0x62, 0xe9, 0x86, 0xc9, 0x63, 0xe7, - 0x87, 0xc9, 0x63, 0xe9, 0x86, 0xc9, 0x64, 0xe7, 0x87, 0xc9, 0x65, 0xe9, - 0x86, 0xc9, 0x66, 0xe7, 0x87, 0xc9, 0x66, 0xe9, 0x86, 0xc9, 0x67, 0xe7, - 0x87, 0xc9, 0x68, 0xe9, 0x86, 0xc9, 0x68, 0xe7, 0x87, 0xc9, 0x69, 0xe9, - 0x86, 0xc9, 0x6a, 0xe7, 0x87, 0xc9, 0x6a, 0xe9, 0x86, 0xc9, 0x6b, 0xe7, - 0x87, 0xc9, 0x6c, 0xe9, 0x86, 0xc9, 0x6c, 0xe7, 0x87, 0xc9, 0x6d, 0xe9, - 0x86, 0xc9, 0x6e, 0xe7, 0x87, 0xc9, 0x6e, 0xe9, 0x86, 0xc9, 0x6f, 0xe7, - 0x87, 0xc9, 0x70, 0xe9, 0x86, 0xc9, 0x70, 0xe7, 0x87, 0xc9, 0x71, 0xe9, - 0x86, 0xc9, 0x72, 0xe7, 0x87, 0xc9, 0x72, 0xe9, 0x86, 0xc9, 0x73, 0xe7, - 0x87, 0xc9, 0x73, 0xe6, 0x87, 0xc9, 0x74, 0xe7, 0x87, 0xc9, 0x75, 0xe6, - 0x87, 0xc9, 0x75, 0xe7, 0x87, 0xc9, 0x76, 0xe6, 0x87, 0xc9, 0x76, 0xe7, - 0x87, 0xc9, 0x77, 0xe6, 0x87, 0xc9, 0x78, 0xe7, 0x87, 0xc9, 0x78, 0xe6, - 0x87, 0xc9, 0x79, 0xe7, 0x87, 0xc9, 0x79, 0xe6, 0x87, 0xc9, 0x7a, 0xe7, - 0x87, 0xc9, 0x7a, 0xe6, 0x87, 0xc9, 0x7b, 0xe7, 0x87, 0xc9, 0x7c, 0xe6, - 0x87, 0xc9, 0x7c, 0xe7, 0x87, 0xc9, 0x7d, 0xe6, 0x87, 0xc9, 0x7d, 0xe7, - 0x87, 0xc9, 0x7e, 0xe6, 0x87, 0xc9, 0x7e, 0xe7, 0x87, 0xc9, 0x7f, 0xe6, - 0x87, 0xc9, 0x7f, 0xe7, 0x87, 0xc9, 0x80, 0xe6, 0x87, 0xc9, 0x81, 0xe7, - 0x87, 0xc9, 0x81, 0xe6, 0x87, 0xc9, 0x82, 0xe7, 0x87, 0xc9, 0x82, 0xe6, - 0x87, 0xc9, 0x83, 0xe7, 0x87, 0xc9, 0x83, 0xe6, 0x87, 0xc9, 0x84, 0xe6, - 0x88, 0xc9, 0x84, 0xe6, 0x87, 0xc9, 0x85, 0xe6, 0x88, 0xc9, 0x85, 0xe6, - 0x87, 0xc9, 0x86, 0xe6, 0x88, 0xc9, 0x86, 0xe6, 0x87, 0xc9, 0x87, 0xe6, - 0x88, 0xc9, 0x87, 0xe6, 0x87, 0xc8, 0x87, 0xe6, 0x88, 0xc9, 0x87, 0xe6, - 0x88, 0xc8, 0x87, 0xe6, 0x89, 0xc9, 0x87, 0xe6, 0x89, 0xc8, 0x87, 0xe6, - 0x8a, 0xc9, 0x87, 0xe6, 0x8a, 0xc8, 0x87, 0xe6, 0x8b, 0xc9, 0x87, 0xe6, - 0x8b, 0xc8, 0x87, 0xe6, 0x8c, 0xc9, 0x87, 0xe6, 0x8c, 0xc8, 0x87, 0xe6, - 0x8d, 0xc9, 0x87, 0xe6, 0x8d, 0xc8, 0x87, 0xe6, 0x8e, 0xc9, 0x87, 0xe6, - 0x8e, 0xc8, 0x87, 0xe6, 0x8e, 0xc9, 0x87, 0xe6, 0x8f, 0xc8, 0x87, 0xe6, - 0x8f, 0xc9, 0x87, 0xe6, 0x90, 0xc8, 0x87, 0xe6, 0x90, 0xc9, 0x87, 0xe6, - 0x91, 0xc8, 0x87, 0xe6, 0x91, 0xc9, 0x87, 0xe6, 0x92, 0xc8, 0x87, 0xe6, - 0x92, 0xc9, 0x87, 0xe6, 0x93, 0xc8, 0x88, 0xe6, 0x93, 0xc4, 0x87, 0xe6, - 0x94, 0xc8, 0x88, 0xe6, 0x94, 0xc4, 0x87, 0xe6, 0x94, 0xc8, 0x88, 0xe6, - 0x95, 0xc4, 0x87, 0xe6, 0x95, 0xc8, 0x88, 0xe6, 0x96, 0xc4, 0x87, 0xe6, - 0x96, 0xc8, 0x88, 0xe6, 0x97, 0xc4, 0x87, 0xe6, 0x97, 0xc8, 0x88, 0xe6, - 0x98, 0xc4, 0x87, 0xe6, 0x98, 0xc8, 0x88, 0xe6, 0x98, 0xc4, 0x87, 0xe6, - 0x99, 0xc8, 0x88, 0xe6, 0x99, 0xc4, 0x87, 0xe6, 0x9a, 0xc8, 0x88, 0xe6, - 0x9a, 0xc4, 0x87, 0xe6, 0x9a, 0xc8, 0x88, 0xe6, 0x9b, 0xc4, 0x87, 0xe6, - 0x9b, 0xc8, 0x88, 0xe6, 0x9c, 0xc4, 0x87, 0xe6, 0x9c, 0xc8, 0x88, 0xe6, - 0x9d, 0xc4, 0x87, 0xe6, 0x9d, 0xc8, 0x88, 0xe6, 0x9d, 0xc4, 0x87, 0xe6, - 0x9e, 0xc8, 0x88, 0xe6, 0x9e, 0xc4, 0x87, 0xe6, 0x9f, 0xc8, 0x88, 0xe6, - 0x9f, 0xc4, 0x87, 0xe6, 0x9f, 0xc8, 0x88, 0xe6, 0xa0, 0xc4, 0x87, 0xe6, - 0xa0, 0xc8, 0x88, 0xe6, 0xa1, 0xc4, 0x87, 0xe6, 0xa1, 0xc8, 0x88, 0xe6, - 0xa1, 0xc4, 0x87, 0xe6, 0xa2, 0xc8, 0x88, 0xe6, 0xa2, 0xc4, 0x87, 0xe6, - 0xa3, 0xc8, 0x88, 0xe6, 0xa3, 0xc4, 0x87, 0xe6, 0xa3, 0xc8, 0x88, 0xe6, - 0xa4, 0xc4, 0x88, 0xe6, 0xa4, 0xc1, 0x88, 0xe6, 0xa5, 0xc4, 0x88, 0xe6, - 0xa5, 0xc1, 0x88, 0xe6, 0xa5, 0xc4, 0x88, 0xe6, 0xa6, 0xc1, 0x88, 0xe6, - 0xa6, 0xc4, 0x88, 0xe6, 0xa6, 0xc1, 0x88, 0xe6, 0xa7, 0xc4, 0xa2, 0xe6, - 0xa7, 0xed, 0xa2, 0xe6, 0xa8, 0xed, 0xa2, 0xe6, 0xa8, 0xed, 0xa2, 0xe6, - 0xa8, 0xed, 0xa2, 0xe6, 0xa9, 0xed, 0xa2, 0xe6, 0xa9, 0xed, 0xa6, 0xe6, - 0xaa, 0xee, 0xa6, 0xe6, 0xaa, 0xee, 0xa6, 0xe6, 0xaa, 0xee, 0xa6, 0xe6, - 0xab, 0xee, 0xa6, 0xe6, 0xab, 0xee, 0xa6, 0xe6, 0xab, 0xee, 0xa6, 0xe6, - 0xac, 0xee, 0xa6, 0xe6, 0xac, 0xee, 0xa6, 0xe6, 0xac, 0xee, 0xa6, 0xe6, - 0xad, 0xee, 0xa6, 0xe6, 0xad, 0xee, 0xab, 0xe6, 0xae, 0xef, 0xa6, 0xe6, - 0xae, 0xee, 0xab, 0xe6, 0xae, 0xef, 0xaa, 0xe6, 0xaf, 0xef, 0xab, 0xe6, - 0xaf, 0xef, 0xaa, 0xe6, 0xaf, 0xef, 0xab, 0xe6, 0xb0, 0xef, 0xaa, 0xe6, - 0xb0, 0xef, 0xab, 0xe6, 0xb0, 0xef, 0xaa, 0xe6, 0xb1, 0xef, 0xab, 0xe6, - 0xb1, 0xef, 0xaf, 0xe6, 0xb2, 0xf0, 0xab, 0xe6, 0xb2, 0xef, 0xaf, 0xe6, - 0xb2, 0xf0, 0xae, 0xe6, 0xb3, 0xf0, 0xaf, 0xe6, 0xb3, 0xf0, 0xae, 0xe6, - 0xb3, 0xf0, 0xaf, 0xe6, 0xb4, 0xf0, 0xae, 0xe6, 0xb4, 0xf0, 0xaf, 0xe6, - 0xb4, 0xf0, 0xae, 0xe6, 0xb5, 0xf0, 0xce, 0xe6, 0xb5, 0xd0, 0xcd, 0xe6, - 0xb5, 0xd2, 0xce, 0xe6, 0xb6, 0xd0, 0xcd, 0xe6, 0xb6, 0xd2, 0xce, 0xe6, - 0xb6, 0xd0, 0xcd, 0xe6, 0xb7, 0xd2, 0xce, 0xe6, 0xb7, 0xd0, 0xcd, 0xe6, - 0xb7, 0xd2, 0xce, 0xe6, 0xb8, 0xd0, 0xcd, 0xe6, 0xb8, 0xd2, 0xce, 0xe6, - 0xb8, 0xd0, 0xcd, 0xe6, 0xb9, 0xd2, 0xce, 0xe6, 0xb9, 0xd0, 0xcd, 0xe6, - 0xb9, 0xd2, 0xce, 0xe6, 0xba, 0xd0, 0xce, 0xe6, 0xba, 0xcd, 0xce, 0xe6, - 0xba, 0xd0, 0xce, 0xe6, 0xbb, 0xcd, 0xce, 0xe6, 0xbb, 0xd0, 0xce, 0xe6, - 0xbb, 0xcd, 0xce, 0xe6, 0xbc, 0xd0, 0xce, 0xe6, 0xbc, 0xcd, 0xce, 0xe6, - 0xbc, 0xd0, 0xce, 0xe6, 0xbd, 0xcd, 0xce, 0xe6, 0xbd, 0xd0, 0xce, 0xe6, - 0xbd, 0xcd, 0xce, 0xe6, 0xbe, 0xd0, 0xce, 0xe6, 0xbe, 0xcd, 0xce, 0xe6, - 0xbe, 0xd0, 0xce, 0xe6, 0xbf, 0xcd, 0xce, 0xe6, 0xbf, 0xd0, 0xce, 0xe6, - 0xbf, 0xcd, 0xce, 0xe6, 0xc0, 0xca, 0xce, 0xe6, 0xc0, 0xcd, 0xce, 0xe6, - 0xc0, 0xca, 0xce, 0xe6, 0xc1, 0xcd, 0xce, 0xe6, 0xc1, 0xca, 0xce, 0xe6, - 0xc1, 0xcd, 0xce, 0xe6, 0xc1, 0xca, 0xce, 0xe6, 0xc2, 0xcd, 0xce, 0xe6, - 0xc2, 0xca, 0xce, 0xe6, 0xc2, 0xcd, 0xce, 0xe6, 0xc3, 0xca, 0xce, 0xe6, - 0xc3, 0xcd, 0xce, 0xe6, 0xc3, 0xca, 0xce, 0xe6, 0xc4, 0xcd, 0xce, 0xe6, - 0xc4, 0xca, 0xce, 0xe6, 0xc4, 0xcd, 0xce, 0xe6, 0xc5, 0xca, 0xce, 0xe6, - 0xc5, 0xcd, 0xce, 0xe6, 0xc5, 0xca, 0xce, 0xe6, 0xc6, 0xcd, 0xce, 0xe6, - 0xc6, 0xca, 0xce, 0xe6, 0xc6, 0xcd, 0xce, 0xe6, 0xc6, 0xca, 0xce, 0xe6, - 0xc7, 0xcd, 0xce, 0xe6, 0xc7, 0xca, 0xce, 0xe6, 0xc7, 0xcd, 0xce, 0xe6, - 0xc8, 0xca, 0xce, 0xe6, 0xc8, 0xcd, 0xce, 0xe6, 0xc8, 0xca, 0xce, 0xe6, - 0xc9, 0xcd, 0xce, 0xe6, 0xc9, 0xca, 0xce, 0xe6, 0xc9, 0xcd, 0xce, 0xe6, - 0xc9, 0xca, 0xce, 0xe6, 0xca, 0xc9, 0xce, 0xe6, 0xca, 0xca, 0xce, 0xe6, - 0xca, 0xc9, 0xce, 0xe6, 0xcb, 0xca, 0xce, 0xe6, 0xcb, 0xc9, 0xce, 0xe6, - 0xcb, 0xca, 0xce, 0xe6, 0xcc, 0xc9, 0xce, 0xe6, 0xcc, 0xca, 0xce, 0xe6, - 0xcc, 0xc9, 0xce, 0xe6, 0xcc, 0xca, 0xce, 0xe6, 0xcd, 0xc9, 0xce, 0xe6, - 0xcd, 0xca, 0xce, 0xe6, 0xcd, 0xc9, 0xce, 0xe6, 0xce, 0xca, 0xce, 0xe6, - 0xce, 0xc9, 0xcf, 0xe6, 0xce, 0xc9, 0xce, 0xe6, 0xce, 0xc9, 0xcf, 0xe6, - 0xce, 0xc9, 0xcf, 0xe6, 0xce, 0xc9, 0xcf, 0xe6, 0xce, 0xc9, 0xd0, 0xe6, - 0xce, 0xc9, 0xd0, 0xe6, 0xce, 0xc9, 0xd0, 0xe6, 0xce, 0xc9, 0xd0, 0xe6, - 0xce, 0xc9, 0xd1, 0xe4, 0xce, 0xc9, 0xd1, 0xe6, 0xce, 0xc9, 0xd1, 0xe4, - 0xce, 0xc9, 0xd2, 0xe6, 0xce, 0xc9, 0xd2, 0xe4, 0xce, 0xc9, 0xd2, 0xe6, - 0xce, 0xc9, 0xd2, 0xe4, 0xce, 0xc9, 0xd3, 0xe6, 0xce, 0xc9, 0xd3, 0xe4, - 0xce, 0xc9, 0xd3, 0xe6, 0xce, 0xc9, 0xd4, 0xe4, 0xce, 0xc9, 0xd4, 0xe6, - 0xce, 0xc9, 0xd4, 0xe4, 0xce, 0xc9, 0xd4, 0xe6, 0xce, 0xc9, 0xd5, 0xe4, - 0xce, 0xc9, 0xd5, 0xe6, 0xce, 0xc9, 0xd5, 0xe4, 0xce, 0xc9, 0xd6, 0xe3, - 0xcf, 0xc9, 0xd6, 0xe4, 0xce, 0xc9, 0xd6, 0xe3, 0xcf, 0xc9, 0xd6, 0xe4, - 0xce, 0xc9, 0xd7, 0xe3, 0xcf, 0xc9, 0xd7, 0xe4, 0xce, 0xc9, 0xd7, 0xe3, - 0xcf, 0xc9, 0xd7, 0xe4, 0xce, 0xc9, 0xd8, 0xe3, 0xcf, 0xc9, 0xd8, 0xe4, - 0xce, 0xc9, 0xd8, 0xe3, 0xcf, 0xc9, 0xd9, 0xe4, 0xce, 0xc9, 0xd9, 0xe3, - 0xcf, 0xc9, 0xd9, 0xe4, 0xce, 0xc9, 0xd9, 0xe3, 0xcf, 0xc9, 0xda, 0xe4, - 0xce, 0xc9, 0xda, 0xe3, 0xcf, 0xc9, 0xda, 0xe4, 0xce, 0xc9, 0xda, 0xe3, - 0xcf, 0xc9, 0xdb, 0xe4, 0xce, 0xc9, 0xdb, 0xe3, 0xcf, 0xc9, 0xdb, 0xe7, - 0xe7, 0xc9, 0xdb, 0xe9, 0xe6, 0xc9, 0xdc, 0xe7, 0xe7, 0xc9, 0xdc, 0xe9, - 0xe6, 0xc9, 0xdc, 0xe7, 0xe7, 0xc9, 0xdd, 0xe9, 0xe6, 0xc9, 0xdd, 0xe7, - 0xe7, 0xc9, 0xdd, 0xe9, 0xe6, 0xc9, 0xdd, 0xe7, 0xe7, 0xc9, 0xde, 0xe6, - 0xe7, 0xc9, 0xde, 0xe7, 0xe7, 0xc9, 0xde, 0xe6, 0xe7, 0xc9, 0xde, 0xe7, - 0xe7, 0xc9, 0xdf, 0xe6, 0xe7, 0xc9, 0xdf, 0xe7, 0xe7, 0xc9, 0xdf, 0xe6, - 0xe7, 0xc9, 0xdf, 0xe7, 0xe7, 0xc9, 0xe0, 0xe6, 0xe7, 0xc9, 0xe0, 0xe7, - 0xe7, 0xc9, 0xe0, 0xe6, 0xe7, 0xc9, 0xe1, 0xe7, 0xe7, 0xc9, 0xe1, 0xe6, - 0xe7, 0xc9, 0xe1, 0xe7, 0xe7, 0xc9, 0xe1, 0xe6, 0xe7, 0xc9, 0xe2, 0xe7, - 0xe7, 0xc9, 0xe2, 0xe6, 0xe7, 0xc9, 0xe2, 0xe7, 0xe7, 0xc9, 0xe2, 0xe6, - 0xe7, 0xc9, 0xe3, 0xe7, 0xe7, 0xc9, 0xe3, 0xe6, 0xe7, 0xc9, 0xe3, 0xe7, - 0xe7, 0xc9, 0xe3, 0xe6, 0xe7, 0xc9, 0xe4, 0xe7, 0xe7, 0xc9, 0xe4, 0xe6, - 0xe7, 0xc9, 0xe4, 0xe7, 0xe7, 0xc9, 0xe4, 0xe6, 0xe7, 0xc9, 0xe5, 0xe7, - 0xe7, 0xc9, 0xe5, 0xe6, 0xe7, 0xc9, 0xe5, 0xe6, 0xe7, 0xc9, 0xe5, 0xe6, - 0xe7, 0xc9, 0xe6, 0xe6, 0xe7, 0xc9, 0xe6, 0xe6, 0xe7, 0xc9, 0xe6, 0xe6, - 0xe7, 0xc9, 0xe6, 0xe6, 0xe7, 0xc9, 0xe7, 0xe6, 0xe7, 0xc9, 0xe7, 0xe6, - 0xe7, 0xc8, 0xe7, 0xe6, 0xe7, 0xc9, 0xe7, 0xe6, 0xe7, 0xc8, 0xe7, 0xe6, - 0xe8, 0xc9, 0xe7, 0xe6, 0xe8, 0xc8, 0xe7, 0xe6, 0xe8, 0xc9, 0xe7, 0xe6, - 0xe8, 0xc8, 0xe7, 0xe6, 0xe9, 0xc9, 0xeb, 0xe6, 0xe9, 0xc9, 0xeb, 0xe6, - 0xe9, 0xc9, 0xeb, 0xe6, 0xe9, 0xc9, 0xeb, 0xe6, 0xea, 0xc9, 0xeb, 0xe6, - 0xea, 0xc9, 0xeb, 0xe6, 0xea, 0xc9, 0xeb, 0xe6, 0xea, 0xc9, 0xeb, 0xe6, - 0xeb, 0xc9, 0xeb, 0xe6, 0xea, 0xc9, 0xeb, 0xe6, 0xeb, 0xc9, 0xeb, 0xe6, - 0xea, 0xc9, 0xec, 0xe6, 0xeb, 0xc9, 0xec, 0xe5, 0xeb, 0xc9, 0xec, 0xe6, - 0xeb, 0xc9, 0xec, 0xe5, 0xeb, 0xc9, 0xec, 0xe6, 0xeb, 0xc9, 0xed, 0xe5, - 0xeb, 0xc9, 0xed, 0xe6, 0xeb, 0xc9, 0xed, 0xe5, 0xeb, 0xc9, 0xed, 0xe6, - 0xeb, 0xc9, 0xee, 0xe5, 0xeb, 0xc9, 0xee, 0xe6, 0xeb, 0xc9, 0xee, 0xe5, - 0xeb, 0xc9, 0xee, 0xe6, 0xeb, 0xc9, 0xef, 0xe5, 0xeb, 0xc9, 0xef, 0xe6, - 0xeb, 0xc9, 0xef, 0xe5, 0xeb, 0xc9, 0xef, 0xe6, 0xeb, 0xc9, 0xf0, 0xe5, - 0xeb, 0xc9, 0xf0, 0xe6, 0xeb, 0xc9, 0xf0, 0xe5, 0xeb, 0xc9, 0xf0, 0xe6, - 0xeb, 0xc9, 0xf1, 0xec, 0xf0, 0xc9, 0xf1, 0xec, 0xf0, 0xc9, 0xf1, 0xec, - 0xf0, 0xc9, 0xf1, 0xec, 0xf0, 0xc9, 0xf2, 0xec, 0xf0, 0xc9, 0xf2, 0xec, - 0xf0, 0xc9, 0xf2, 0xec, 0xf0, 0xc9, 0xf2, 0xec, 0xf0, 0xc9, 0xf2, 0xec, - 0xf0, 0xc9, 0xf3, 0xec, 0xf1, 0xc9, 0xf3, 0xec, 0xf0, 0xc9, 0xf3, 0xec, - 0xf1, 0xc9, 0xf3, 0xec, 0xf0, 0xc9, 0xf4, 0xec, 0xf1, 0xc9, 0xf4, 0xec, - 0xf1, 0xc9, 0xf4, 0xec, 0xf1, 0xc9, 0xf4, 0xec, 0xf1, 0xc9, 0xf5, 0xec, - 0xf1, 0xc9, 0xf5, 0xec, 0xf1, 0xc9, 0xf5, 0xec, 0xf1, 0xc9, 0xf5, 0xec, - 0xf1, 0xc9, 0xf5, 0xec, 0xf1, 0xc9, 0xf6, 0xec, 0xf1, 0xc9, 0xf6, 0xec, - 0xf1, 0xc9, 0xf6, 0xec, 0xf1, 0xc9, 0xf6, 0xec, 0xf1, 0xc9, 0xf7, 0xec, - 0xf1, 0xc9, 0xf7, 0xec, 0xf1, 0xc9, 0xf7, 0xec, 0xf1, 0xc9, 0xf7, 0xec, - 0xf1, 0xc9, 0xf8, 0xec, 0xf1, 0xc9, 0xf8, 0xec, 0xf1, 0xc9, 0xf8, 0xec, - 0xf1, 0xc9, 0xf8, 0xec, 0xf1, 0xc9, 0xf8, 0xec, 0xf1, 0xc9, 0xf9, 0xec, - 0xf1, 0xc9, 0xf9, 0xec, 0xf1, 0xc9, 0xf9, 0xec, 0xf1, 0xc9, 0xf9, 0xec, - 0xf1, 0xc9, 0xfa, 0xec, 0xf1, 0xc9, 0xfa, 0xec, 0xf1, 0xc9, 0xfa, 0xec, - 0xf1, 0xc9, 0xfa, 0xec, 0xf1, 0xc9, 0xfa, 0xec, 0xf1, 0xc9, 0xfb, 0xec, - 0xf1, 0xc9, 0xfb, 0xec, 0xf1, 0xc9, 0xfb, 0xec, 0xf1, 0xc9, 0xfb, 0xec, - 0xf1, 0xc9, 0xfc, 0xec, 0xf1, 0xc9, 0xfc, 0xec, 0xf1, 0xc9, 0xfc, 0xec, - 0xf1, 0xc9, 0xfc, 0xec, 0xf1, 0xc9, 0xfc, 0xec, 0xf1, 0xc9, 0xfd, 0xec, - 0xf1, 0xc9, 0xfd, 0xec, 0xf1, 0xc9, 0xfd, 0xec, 0xf1, 0xc9, 0xfd, 0xec, - 0xf1, 0xc9, 0xfe, 0xec, 0xf1, 0xc9, 0xfe, 0xec, 0xf1, 0xc9, 0xfe, 0xec, - 0xf1, 0xc9, 0xfe, 0xec, 0xf1, 0xc9, 0xfe, 0xec, 0xf1, 0xc9, 0xff, 0xec, - 0xf1, 0xc9, 0xff, 0xec, 0xf1, 0xc9, 0x03, 0xec, 0x85, 0xca, 0x0a, 0xeb, - 0x86, 0xca, 0x0f, 0xec, 0x85, 0xca, 0x14, 0xeb, 0x86, 0xca, 0x17, 0xec, - 0x85, 0xca, 0x1b, 0xeb, 0x86, 0xca, 0x1e, 0xec, 0x85, 0xca, 0x20, 0xeb, - 0x86, 0xca, 0x23, 0xec, 0x85, 0xca, 0x25, 0xeb, 0x86, 0xca, 0x27, 0xec, - 0x85, 0xca, 0x29, 0xeb, 0x86, 0xca, 0x2b, 0xec, 0x85, 0xca, 0x2d, 0xeb, - 0x86, 0xca, 0x2f, 0xe9, 0x86, 0xca, 0x31, 0xeb, 0x86, 0xca, 0x32, 0xe9, - 0x86, 0xca, 0x34, 0xeb, 0x86, 0xca, 0x35, 0xe9, 0x86, 0xca, 0x37, 0xeb, - 0x86, 0xca, 0x38, 0xe9, 0x86, 0xca, 0x3a, 0xeb, 0x86, 0xca, 0x3b, 0xe9, - 0x86, 0xca, 0x3c, 0xeb, 0x86, 0xca, 0x3e, 0xe9, 0x86, 0xca, 0x3f, 0xeb, - 0x86, 0xca, 0x40, 0xe9, 0x86, 0xca, 0x42, 0xeb, 0x86, 0xca, 0x43, 0xe9, - 0x86, 0xca, 0x44, 0xeb, 0x86, 0xca, 0x45, 0xe9, 0x86, 0xca, 0x46, 0xeb, - 0x86, 0xca, 0x47, 0xe9, 0x86, 0xca, 0x48, 0xeb, 0x86, 0xca, 0x49, 0xe9, - 0x86, 0xca, 0x4a, 0xeb, 0x86, 0xca, 0x4b, 0xe9, 0x86, 0xca, 0x4c, 0xeb, - 0x86, 0xca, 0x4d, 0xe9, 0x86, 0xca, 0x4e, 0xeb, 0x86, 0xca, 0x4f, 0xe9, - 0x86, 0xca, 0x50, 0xeb, 0x86, 0xca, 0x51, 0xe9, 0x86, 0xca, 0x52, 0xeb, - 0x86, 0xca, 0x53, 0xe9, 0x86, 0xca, 0x54, 0xeb, 0x86, 0xca, 0x55, 0xe9, - 0x86, 0xca, 0x56, 0xeb, 0x86, 0xca, 0x57, 0xe9, 0x86, 0xca, 0x58, 0xeb, - 0x86, 0xca, 0x58, 0xe9, 0x86, 0xca, 0x59, 0xe8, 0x87, 0xca, 0x5a, 0xe9, - 0x86, 0xca, 0x5b, 0xe8, 0x87, 0xca, 0x5c, 0xe9, 0x86, 0xca, 0x5d, 0xe8, - 0x87, 0xca, 0x5d, 0xe9, 0x86, 0xca, 0x5e, 0xe8, 0x87, 0xca, 0x5f, 0xe9, - 0x86, 0xca, 0x60, 0xe8, 0x87, 0xca, 0x60, 0xe9, 0x86, 0xca, 0x61, 0xe8, - 0x87, 0xca, 0x62, 0xe9, 0x86, 0xca, 0x63, 0xe8, 0x87, 0xca, 0x63, 0xe9, - 0x86, 0xca, 0x64, 0xe8, 0x87, 0xca, 0x65, 0xe9, 0x86, 0xca, 0x66, 0xe8, - 0x87, 0xca, 0x66, 0xe9, 0x86, 0xca, 0x67, 0xe8, 0x87, 0xca, 0x68, 0xe9, - 0x86, 0xca, 0x68, 0xe8, 0x87, 0xca, 0x69, 0xe9, 0x86, 0xca, 0x6a, 0xe8, - 0x87, 0xca, 0x6a, 0xe9, 0x86, 0xca, 0x6b, 0xe8, 0x87, 0xca, 0x6c, 0xe9, - 0x86, 0xca, 0x6c, 0xe8, 0x87, 0xca, 0x6d, 0xe9, 0x86, 0xca, 0x6e, 0xe8, - 0x87, 0xca, 0x6e, 0xe9, 0x86, 0xca, 0x6f, 0xe8, 0x87, 0xca, 0x70, 0xe9, - 0x86, 0xca, 0x70, 0xe8, 0x87, 0xca, 0x71, 0xe9, 0x86, 0xca, 0x72, 0xe8, - 0x87, 0xca, 0x72, 0xe9, 0x86, 0xca, 0x73, 0xe8, 0x87, 0xca, 0x73, 0xe6, - 0x87, 0xca, 0x74, 0xe8, 0x87, 0xca, 0x75, 0xe6, 0x87, 0xca, 0x75, 0xe8, - 0x87, 0xca, 0x76, 0xe6, 0x87, 0xca, 0x76, 0xe8, 0x87, 0xca, 0x77, 0xe6, - 0x87, 0xca, 0x78, 0xe8, 0x87, 0xca, 0x78, 0xe6, 0x87, 0xca, 0x79, 0xe8, - 0x87, 0xca, 0x79, 0xe6, 0x87, 0xca, 0x7a, 0xe8, 0x87, 0xca, 0x7a, 0xe6, - 0x87, 0xca, 0x7b, 0xe8, 0x87, 0xca, 0x7c, 0xe6, 0x87, 0xca, 0x7c, 0xe8, - 0x87, 0xca, 0x7d, 0xe6, 0x87, 0xca, 0x7d, 0xe8, 0x87, 0xca, 0x7e, 0xe6, - 0x87, 0xca, 0x7e, 0xe8, 0x87, 0xca, 0x7f, 0xe6, 0x87, 0xca, 0x7f, 0xe8, - 0x87, 0xca, 0x80, 0xe6, 0x87, 0xca, 0x81, 0xe8, 0x87, 0xca, 0x81, 0xe6, - 0x87, 0xca, 0x82, 0xe8, 0x87, 0xca, 0x82, 0xe6, 0x87, 0xca, 0x83, 0xe8, - 0x87, 0xca, 0x83, 0xe6, 0x87, 0xca, 0x84, 0xe6, 0x88, 0xca, 0x84, 0xe6, - 0x87, 0xca, 0x85, 0xe6, 0x88, 0xca, 0x85, 0xe6, 0x87, 0xca, 0x86, 0xe6, - 0x88, 0xca, 0x86, 0xe6, 0x87, 0xca, 0x87, 0xe6, 0x88, 0xca, 0x86, 0xe6, - 0x87, 0xca, 0x87, 0xe6, 0x88, 0xca, 0x86, 0xe6, 0x88, 0xca, 0x87, 0xe6, - 0x89, 0xca, 0x87, 0xe6, 0x89, 0xc8, 0x87, 0xe6, 0x8a, 0xca, 0x87, 0xe6, - 0x8a, 0xc8, 0x87, 0xe6, 0x8b, 0xca, 0x87, 0xe6, 0x8b, 0xc8, 0x87, 0xe6, - 0x8c, 0xca, 0x87, 0xe6, 0x8c, 0xc8, 0x87, 0xe6, 0x8d, 0xca, 0x87, 0xe6, - 0x8d, 0xc8, 0x87, 0xe6, 0x8e, 0xca, 0x87, 0xe6, 0x8e, 0xc8, 0x87, 0xe6, - 0x8e, 0xca, 0x87, 0xe6, 0x8f, 0xc8, 0x87, 0xe6, 0x8f, 0xca, 0x87, 0xe6, - 0x90, 0xc8, 0x87, 0xe6, 0x90, 0xca, 0x87, 0xe6, 0x91, 0xc8, 0x87, 0xe6, - 0x91, 0xca, 0x87, 0xe6, 0x92, 0xc8, 0x87, 0xe6, 0x92, 0xca, 0x87, 0xe6, - 0x93, 0xc8, 0x88, 0xe6, 0x93, 0xc5, 0x87, 0xe6, 0x94, 0xc8, 0x88, 0xe6, - 0x94, 0xc5, 0x87, 0xe6, 0x94, 0xc8, 0x88, 0xe6, 0x95, 0xc5, 0x87, 0xe6, - 0x95, 0xc8, 0x88, 0xe6, 0x96, 0xc5, 0x87, 0xe6, 0x96, 0xc8, 0x88, 0xe6, - 0x97, 0xc5, 0x87, 0xe6, 0x97, 0xc8, 0x88, 0xe6, 0x98, 0xc5, 0x87, 0xe6, - 0x98, 0xc8, 0x88, 0xe6, 0x98, 0xc5, 0x87, 0xe6, 0x99, 0xc8, 0x88, 0xe6, - 0x99, 0xc5, 0x87, 0xe6, 0x9a, 0xc8, 0x88, 0xe6, 0x9a, 0xc5, 0x87, 0xe6, - 0x9a, 0xc8, 0x88, 0xe6, 0x9b, 0xc5, 0x87, 0xe6, 0x9b, 0xc8, 0x88, 0xe6, - 0x9c, 0xc5, 0x87, 0xe6, 0x9c, 0xc8, 0x88, 0xe6, 0x9d, 0xc5, 0x87, 0xe6, - 0x9d, 0xc8, 0x88, 0xe6, 0x9d, 0xc5, 0x87, 0xe6, 0x9e, 0xc8, 0x88, 0xe6, - 0x9e, 0xc5, 0x87, 0xe6, 0x9f, 0xc8, 0x88, 0xe6, 0x9f, 0xc5, 0x87, 0xe6, - 0x9f, 0xc8, 0x88, 0xe6, 0xa0, 0xc5, 0x87, 0xe6, 0xa0, 0xc8, 0x88, 0xe6, - 0xa1, 0xc5, 0x87, 0xe6, 0xa1, 0xc8, 0x88, 0xe6, 0xa1, 0xc5, 0x87, 0xe6, - 0xa2, 0xc8, 0x88, 0xe6, 0xa2, 0xc5, 0x88, 0xe6, 0xa3, 0xc2, 0x88, 0xe6, - 0xa3, 0xc5, 0x88, 0xe6, 0xa3, 0xc2, 0x88, 0xe6, 0xa4, 0xc5, 0x88, 0xe6, - 0xa4, 0xc2, 0x88, 0xe6, 0xa5, 0xc5, 0x88, 0xe6, 0xa5, 0xc2, 0x88, 0xe6, - 0xa5, 0xc5, 0x88, 0xe6, 0xa6, 0xc2, 0x88, 0xe6, 0xa6, 0xc5, 0x88, 0xe6, - 0xa6, 0xc2, 0xa0, 0xe6, 0xa7, 0xed, 0xa4, 0xe6, 0xa7, 0xee, 0xa4, 0xe6, - 0xa8, 0xee, 0xa4, 0xe6, 0xa8, 0xee, 0xa4, 0xe6, 0xa8, 0xee, 0xa4, 0xe6, - 0xa9, 0xee, 0xa4, 0xe6, 0xa9, 0xee, 0xa4, 0xe6, 0xaa, 0xee, 0xa4, 0xe6, - 0xaa, 0xee, 0xa4, 0xe6, 0xaa, 0xee, 0xa4, 0xe6, 0xab, 0xee, 0xa4, 0xe6, - 0xab, 0xee, 0xa8, 0xe6, 0xab, 0xef, 0xa8, 0xe6, 0xac, 0xef, 0xa8, 0xe6, - 0xac, 0xef, 0xa8, 0xe6, 0xac, 0xef, 0xa8, 0xe6, 0xad, 0xef, 0xa8, 0xe6, - 0xad, 0xef, 0xa8, 0xe6, 0xae, 0xef, 0xa8, 0xe6, 0xae, 0xef, 0xa8, 0xe6, - 0xae, 0xef, 0xa8, 0xe6, 0xaf, 0xef, 0xa8, 0xe6, 0xaf, 0xef, 0xac, 0xe6, - 0xaf, 0xf0, 0xa8, 0xe6, 0xb0, 0xef, 0xac, 0xe6, 0xb0, 0xf0, 0xac, 0xe6, - 0xb0, 0xf0, 0xac, 0xe6, 0xb1, 0xf0, 0xac, 0xe6, 0xb1, 0xf0, 0xac, 0xe6, - 0xb2, 0xf0, 0xac, 0xe6, 0xb2, 0xf0, 0xac, 0xe6, 0xb2, 0xf0, 0xac, 0xe6, - 0xb3, 0xf0, 0xac, 0xe6, 0xb3, 0xf0, 0xb0, 0xe6, 0xb3, 0xf1, 0xac, 0xe6, - 0xb4, 0xf0, 0xb0, 0xe6, 0xb4, 0xf1, 0xb0, 0xe6, 0xb4, 0xf1, 0xb0, 0xe6, - 0xb5, 0xf1, 0xce, 0xe6, 0xb5, 0xd0, 0xcd, 0xe6, 0xb5, 0xd3, 0xce, 0xe6, - 0xb6, 0xd0, 0xcd, 0xe6, 0xb6, 0xd3, 0xce, 0xe6, 0xb6, 0xd0, 0xcd, 0xe6, - 0xb7, 0xd3, 0xce, 0xe6, 0xb7, 0xd0, 0xce, 0xe6, 0xb7, 0xcd, 0xce, 0xe6, - 0xb8, 0xd0, 0xce, 0xe6, 0xb8, 0xcd, 0xce, 0xe6, 0xb8, 0xd0, 0xce, 0xe6, - 0xb9, 0xcd, 0xce, 0xe6, 0xb9, 0xd0, 0xce, 0xe6, 0xb9, 0xcd, 0xce, 0xe6, - 0xba, 0xd0, 0xce, 0xe6, 0xba, 0xcd, 0xce, 0xe6, 0xba, 0xd0, 0xce, 0xe6, - 0xbb, 0xcd, 0xce, 0xe6, 0xbb, 0xd0, 0xce, 0xe6, 0xbb, 0xcd, 0xce, 0xe6, - 0xbc, 0xd0, 0xce, 0xe6, 0xbc, 0xcd, 0xce, 0xe6, 0xbc, 0xd0, 0xce, 0xe6, - 0xbd, 0xcd, 0xce, 0xe6, 0xbd, 0xd0, 0xce, 0xe6, 0xbd, 0xcd, 0xce, 0xe6, - 0xbe, 0xd0, 0xce, 0xe6, 0xbe, 0xcd, 0xce, 0xe6, 0xbe, 0xd0, 0xce, 0xe6, - 0xbf, 0xcd, 0xce, 0xe6, 0xbf, 0xd0, 0xce, 0xe6, 0xbf, 0xcd, 0xce, 0xe6, - 0xc0, 0xd0, 0xce, 0xe6, 0xc0, 0xcd, 0xce, 0xe6, 0xc0, 0xd0, 0xce, 0xe6, - 0xc1, 0xcd, 0xce, 0xe6, 0xc1, 0xd0, 0xce, 0xe6, 0xc1, 0xcd, 0xce, 0xe6, - 0xc1, 0xd0, 0xce, 0xe6, 0xc2, 0xcd, 0xce, 0xe6, 0xc2, 0xd0, 0xce, 0xe6, - 0xc2, 0xcd, 0xce, 0xe6, 0xc3, 0xd0, 0xce, 0xe6, 0xc3, 0xcd, 0xce, 0xe6, - 0xc3, 0xcb, 0xce, 0xe6, 0xc4, 0xcd, 0xce, 0xe6, 0xc4, 0xcb, 0xce, 0xe6, - 0xc4, 0xcd, 0xce, 0xe6, 0xc5, 0xcb, 0xce, 0xe6, 0xc5, 0xcd, 0xce, 0xe6, - 0xc5, 0xcb, 0xce, 0xe6, 0xc6, 0xcd, 0xce, 0xe6, 0xc6, 0xcb, 0xce, 0xe6, - 0xc6, 0xcd, 0xce, 0xe6, 0xc6, 0xcb, 0xce, 0xe6, 0xc7, 0xcd, 0xce, 0xe6, - 0xc7, 0xcb, 0xce, 0xe6, 0xc7, 0xcd, 0xce, 0xe6, 0xc8, 0xcb, 0xce, 0xe6, - 0xc8, 0xcd, 0xce, 0xe6, 0xc8, 0xcb, 0xce, 0xe6, 0xc9, 0xcd, 0xce, 0xe6, - 0xc9, 0xcb, 0xce, 0xe6, 0xc9, 0xcd, 0xce, 0xe6, 0xc9, 0xcb, 0xce, 0xe6, - 0xca, 0xcd, 0xce, 0xe6, 0xca, 0xcb, 0xce, 0xe6, 0xca, 0xcd, 0xce, 0xe6, - 0xcb, 0xcb, 0xce, 0xe6, 0xcb, 0xcd, 0xce, 0xe6, 0xcb, 0xcb, 0xce, 0xe6, - 0xcc, 0xcd, 0xce, 0xe6, 0xcc, 0xcb, 0xce, 0xe6, 0xcc, 0xca, 0xce, 0xe6, - 0xcc, 0xcb, 0xce, 0xe6, 0xcd, 0xca, 0xce, 0xe6, 0xcd, 0xcb, 0xce, 0xe6, - 0xcd, 0xca, 0xce, 0xe6, 0xce, 0xcb, 0xce, 0xe6, 0xce, 0xca, 0xcf, 0xe6, - 0xce, 0xca, 0xce, 0xe6, 0xce, 0xca, 0xcf, 0xe6, 0xce, 0xca, 0xcf, 0xe6, - 0xce, 0xca, 0xcf, 0xe6, 0xce, 0xca, 0xd0, 0xe6, 0xce, 0xca, 0xd0, 0xe6, - 0xce, 0xca, 0xd0, 0xe6, 0xce, 0xca, 0xd0, 0xe6, 0xce, 0xca, 0xd1, 0xe5, - 0xce, 0xca, 0xd1, 0xe6, 0xce, 0xca, 0xd1, 0xe5, 0xce, 0xca, 0xd2, 0xe6, - 0xce, 0xca, 0xd2, 0xe5, 0xce, 0xca, 0xd2, 0xe6, 0xce, 0xca, 0xd2, 0xe5, - 0xce, 0xca, 0xd3, 0xe6, 0xce, 0xca, 0xd3, 0xe5, 0xce, 0xca, 0xd3, 0xe6, - 0xce, 0xca, 0xd4, 0xe5, 0xce, 0xca, 0xd4, 0xe6, 0xce, 0xca, 0xd4, 0xe5, - 0xce, 0xca, 0xd4, 0xe6, 0xce, 0xca, 0xd5, 0xe5, 0xce, 0xca, 0xd5, 0xe6, - 0xce, 0xca, 0xd5, 0xe5, 0xce, 0xca, 0xd6, 0xe6, 0xce, 0xca, 0xd6, 0xe5, - 0xce, 0xca, 0xd6, 0xe6, 0xce, 0xca, 0xd6, 0xe5, 0xce, 0xca, 0xd7, 0xe6, - 0xce, 0xca, 0xd7, 0xe5, 0xce, 0xca, 0xd7, 0xe6, 0xce, 0xca, 0xd7, 0xe5, - 0xce, 0xca, 0xd8, 0xe6, 0xce, 0xca, 0xd8, 0xe5, 0xce, 0xca, 0xd8, 0xe6, - 0xce, 0xca, 0xd9, 0xe5, 0xce, 0xca, 0xd9, 0xe3, 0xcf, 0xca, 0xd9, 0xe5, - 0xce, 0xca, 0xd9, 0xe3, 0xcf, 0xca, 0xda, 0xe5, 0xce, 0xca, 0xda, 0xe3, - 0xcf, 0xca, 0xda, 0xe5, 0xce, 0xca, 0xda, 0xe3, 0xcf, 0xca, 0xdb, 0xe5, - 0xce, 0xca, 0xdb, 0xe9, 0xe6, 0xca, 0xdb, 0xe8, 0xe7, 0xca, 0xdb, 0xe9, - 0xe6, 0xca, 0xdc, 0xe8, 0xe7, 0xca, 0xdc, 0xe9, 0xe6, 0xca, 0xdc, 0xe8, - 0xe7, 0xca, 0xdd, 0xe9, 0xe6, 0xca, 0xdd, 0xe8, 0xe7, 0xca, 0xdd, 0xe9, - 0xe6, 0xca, 0xdd, 0xe8, 0xe7, 0xca, 0xde, 0xe9, 0xe6, 0xca, 0xde, 0xe8, - 0xe7, 0xca, 0xde, 0xe9, 0xe6, 0xca, 0xde, 0xe8, 0xe7, 0xca, 0xdf, 0xe9, - 0xe6, 0xca, 0xdf, 0xe8, 0xe7, 0xca, 0xdf, 0xe9, 0xe6, 0xca, 0xdf, 0xe8, - 0xe7, 0xca, 0xe0, 0xe9, 0xe6, 0xca, 0xe0, 0xe8, 0xe7, 0xca, 0xe0, 0xe9, - 0xe6, 0xca, 0xe1, 0xe8, 0xe7, 0xca, 0xe1, 0xe6, 0xe7, 0xca, 0xe1, 0xe8, - 0xe7, 0xca, 0xe1, 0xe6, 0xe7, 0xca, 0xe2, 0xe8, 0xe7, 0xca, 0xe2, 0xe6, - 0xe7, 0xca, 0xe2, 0xe8, 0xe7, 0xca, 0xe2, 0xe6, 0xe7, 0xca, 0xe3, 0xe8, - 0xe7, 0xca, 0xe3, 0xe6, 0xe7, 0xca, 0xe3, 0xe8, 0xe7, 0xca, 0xe3, 0xe6, - 0xe7, 0xca, 0xe4, 0xe8, 0xe7, 0xca, 0xe4, 0xe6, 0xe7, 0xca, 0xe4, 0xe8, - 0xe7, 0xca, 0xe4, 0xe6, 0xe7, 0xca, 0xe5, 0xe8, 0xe7, 0xca, 0xe5, 0xe6, - 0xe7, 0xca, 0xe5, 0xe6, 0xe7, 0xca, 0xe5, 0xe6, 0xe7, 0xca, 0xe6, 0xe6, - 0xe7, 0xca, 0xe6, 0xe6, 0xe7, 0xca, 0xe6, 0xe6, 0xe7, 0xca, 0xe6, 0xe6, - 0xe7, 0xca, 0xe7, 0xe6, 0xe7, 0xca, 0xe7, 0xe6, 0xe7, 0xc9, 0xe7, 0xe6, - 0xe7, 0xca, 0xe7, 0xe6, 0xe7, 0xc9, 0xe7, 0xe6, 0xe8, 0xca, 0xe7, 0xe6, - 0xe8, 0xc9, 0xe7, 0xe6, 0xe8, 0xca, 0xe7, 0xe6, 0xe8, 0xc9, 0xe7, 0xe6, - 0xe9, 0xca, 0xeb, 0xe6, 0xe9, 0xca, 0xeb, 0xe6, 0xe9, 0xcc, 0xeb, 0xe6, - 0xe9, 0xca, 0xeb, 0xe6, 0xea, 0xcc, 0xeb, 0xe6, 0xea, 0xca, 0xeb, 0xe6, - 0xea, 0xca, 0xeb, 0xe6, 0xea, 0xca, 0xeb, 0xe6, 0xeb, 0xca, 0xeb, 0xe6, - 0xea, 0xca, 0xeb, 0xe6, 0xeb, 0xca, 0xeb, 0xe6, 0xea, 0xca, 0xec, 0xe6, - 0xeb, 0xca, 0xec, 0xe5, 0xeb, 0xca, 0xec, 0xe6, 0xeb, 0xca, 0xec, 0xe5, - 0xeb, 0xca, 0xec, 0xe6, 0xeb, 0xca, 0xed, 0xe5, 0xeb, 0xca, 0xed, 0xe6, - 0xeb, 0xca, 0xed, 0xe5, 0xeb, 0xca, 0xed, 0xe6, 0xeb, 0xca, 0xee, 0xe5, - 0xeb, 0xca, 0xee, 0xe6, 0xeb, 0xca, 0xee, 0xe5, 0xeb, 0xca, 0xee, 0xe6, - 0xeb, 0xca, 0xef, 0xe5, 0xeb, 0xca, 0xef, 0xe6, 0xeb, 0xca, 0xef, 0xe5, - 0xeb, 0xca, 0xef, 0xe6, 0xeb, 0xca, 0xf0, 0xe5, 0xeb, 0xca, 0xf0, 0xe6, - 0xeb, 0xca, 0xf0, 0xe5, 0xeb, 0xca, 0xf0, 0xec, 0xee, 0xca, 0xf1, 0xec, - 0xf1, 0xca, 0xf1, 0xec, 0xf1, 0xca, 0xf1, 0xec, 0xf1, 0xca, 0xf1, 0xec, - 0xf1, 0xca, 0xf2, 0xec, 0xf1, 0xca, 0xf2, 0xec, 0xf1, 0xca, 0xf2, 0xec, - 0xf1, 0xca, 0xf2, 0xec, 0xf1, 0xca, 0xf2, 0xec, 0xf1, 0xca, 0xf3, 0xec, - 0xf1, 0xca, 0xf3, 0xec, 0xf1, 0xca, 0xf3, 0xec, 0xf1, 0xca, 0xf3, 0xec, - 0xf1, 0xca, 0xf4, 0xec, 0xf1, 0xca, 0xf4, 0xec, 0xf1, 0xca, 0xf4, 0xec, - 0xf1, 0xca, 0xf4, 0xec, 0xf1, 0xca, 0xf5, 0xec, 0xf1, 0xca, 0xf5, 0xec, - 0xf1, 0xca, 0xf5, 0xec, 0xf1, 0xca, 0xf5, 0xec, 0xf1, 0xca, 0xf5, 0xec, - 0xf1, 0xca, 0xf6, 0xec, 0xf1, 0xca, 0xf6, 0xec, 0xf1, 0xca, 0xf6, 0xec, - 0xf1, 0xca, 0xf6, 0xec, 0xf1, 0xca, 0xf7, 0xec, 0xf1, 0xca, 0xf7, 0xec, - 0xf1, 0xca, 0xf7, 0xec, 0xf1, 0xca, 0xf7, 0xec, 0xf1, 0xca, 0xf8, 0xec, - 0xf1, 0xca, 0xf8, 0xec, 0xf1, 0xca, 0xf8, 0xec, 0xf1, 0xca, 0xf8, 0xec, - 0xf1, 0xca, 0xf8, 0xec, 0xf1, 0xca, 0xf9, 0xec, 0xf1, 0xca, 0xf9, 0xec, - 0xf1, 0xca, 0xf9, 0xec, 0xf1, 0xca, 0xf9, 0xec, 0xf1, 0xca, 0xfa, 0xec, - 0xf1, 0xca, 0xfa, 0xec, 0xf1, 0xca, 0xfa, 0xec, 0xf1, 0xca, 0xfa, 0xec, - 0xf1, 0xca, 0xfa, 0xec, 0xf1, 0xca, 0xfb, 0xec, 0xf1, 0xca, 0xfb, 0xec, - 0xf1, 0xca, 0xfb, 0xec, 0xf1, 0xca, 0xfb, 0xec, 0xf1, 0xca, 0xfc, 0xec, - 0xf1, 0xca, 0xfc, 0xec, 0xf1, 0xca, 0xfc, 0xec, 0xf1, 0xca, 0xfc, 0xec, - 0xf1, 0xca, 0xfc, 0xec, 0xf1, 0xca, 0xfd, 0xec, 0xf1, 0xca, 0xfd, 0xec, - 0xf1, 0xca, 0xfd, 0xec, 0xf1, 0xca, 0xfd, 0xec, 0xf1, 0xca, 0xfe, 0xec, - 0xf1, 0xca, 0xfe, 0xec, 0xf1, 0xca, 0xfe, 0xec, 0xf1, 0xca, 0xfe, 0xec, - 0xf1, 0xca, 0xfe, 0xec, 0xf1, 0xca, 0xff, 0xec, 0xf1, 0xca, 0xff, 0xec, - 0xf1, 0xca, 0x03, 0xec, 0x85, 0xca, 0x0a, 0xeb, 0x86, 0xca, 0x0f, 0xe9, - 0x86, 0xca, 0x14, 0xeb, 0x86, 0xca, 0x17, 0xe9, 0x86, 0xca, 0x1b, 0xeb, - 0x86, 0xca, 0x1e, 0xe9, 0x86, 0xca, 0x20, 0xeb, 0x86, 0xca, 0x23, 0xe9, - 0x86, 0xca, 0x25, 0xeb, 0x86, 0xca, 0x27, 0xe9, 0x86, 0xca, 0x29, 0xeb, - 0x86, 0xca, 0x2b, 0xe9, 0x86, 0xca, 0x2d, 0xeb, 0x86, 0xca, 0x2f, 0xe9, - 0x86, 0xca, 0x31, 0xeb, 0x86, 0xca, 0x32, 0xe9, 0x86, 0xca, 0x34, 0xeb, - 0x86, 0xca, 0x35, 0xe9, 0x86, 0xca, 0x37, 0xeb, 0x86, 0xca, 0x38, 0xe9, - 0x86, 0xca, 0x3a, 0xeb, 0x86, 0xca, 0x3b, 0xe9, 0x86, 0xca, 0x3c, 0xeb, - 0x86, 0xca, 0x3e, 0xe9, 0x86, 0xca, 0x3f, 0xeb, 0x86, 0xca, 0x40, 0xe9, - 0x86, 0xca, 0x42, 0xeb, 0x86, 0xca, 0x43, 0xe9, 0x86, 0xca, 0x44, 0xeb, - 0x86, 0xca, 0x45, 0xe9, 0x86, 0xca, 0x46, 0xeb, 0x86, 0xca, 0x47, 0xe9, - 0x86, 0xca, 0x48, 0xeb, 0x86, 0xca, 0x49, 0xe9, 0x86, 0xca, 0x4a, 0xeb, - 0x86, 0xca, 0x4b, 0xe9, 0x86, 0xca, 0x4c, 0xeb, 0x86, 0xca, 0x4d, 0xe9, - 0x86, 0xca, 0x4e, 0xeb, 0x86, 0xca, 0x4f, 0xe9, 0x86, 0xca, 0x50, 0xeb, - 0x86, 0xca, 0x51, 0xe9, 0x86, 0xca, 0x52, 0xeb, 0x86, 0xca, 0x53, 0xe9, - 0x86, 0xca, 0x54, 0xeb, 0x86, 0xca, 0x55, 0xe9, 0x86, 0xca, 0x56, 0xe7, - 0x87, 0xca, 0x57, 0xe9, 0x86, 0xca, 0x58, 0xe7, 0x87, 0xca, 0x58, 0xe9, - 0x86, 0xca, 0x59, 0xe7, 0x87, 0xca, 0x5a, 0xe9, 0x86, 0xca, 0x5b, 0xe7, - 0x87, 0xca, 0x5c, 0xe9, 0x86, 0xca, 0x5d, 0xe7, 0x87, 0xca, 0x5d, 0xe9, - 0x86, 0xca, 0x5e, 0xe7, 0x87, 0xca, 0x5f, 0xe9, 0x86, 0xca, 0x60, 0xe7, - 0x87, 0xca, 0x60, 0xe9, 0x86, 0xca, 0x61, 0xe7, 0x87, 0xca, 0x62, 0xe9, - 0x86, 0xca, 0x63, 0xe7, 0x87, 0xca, 0x63, 0xe9, 0x86, 0xca, 0x64, 0xe7, - 0x87, 0xca, 0x65, 0xe9, 0x86, 0xca, 0x66, 0xe7, 0x87, 0xca, 0x66, 0xe9, - 0x86, 0xca, 0x67, 0xe7, 0x87, 0xca, 0x68, 0xe9, 0x86, 0xca, 0x68, 0xe7, - 0x87, 0xca, 0x69, 0xe9, 0x86, 0xca, 0x6a, 0xe7, 0x87, 0xca, 0x6a, 0xe9, - 0x86, 0xca, 0x6b, 0xe7, 0x87, 0xca, 0x6c, 0xe9, 0x86, 0xca, 0x6c, 0xe7, - 0x87, 0xca, 0x6d, 0xe9, 0x86, 0xca, 0x6e, 0xe7, 0x87, 0xca, 0x6e, 0xe9, - 0x86, 0xca, 0x6f, 0xe7, 0x87, 0xca, 0x70, 0xe9, 0x86, 0xca, 0x70, 0xe7, - 0x87, 0xca, 0x71, 0xe9, 0x86, 0xca, 0x72, 0xe7, 0x87, 0xca, 0x72, 0xe9, - 0x86, 0xca, 0x73, 0xe7, 0x87, 0xca, 0x73, 0xe9, 0x86, 0xca, 0x74, 0xe7, - 0x87, 0xca, 0x75, 0xe9, 0x86, 0xca, 0x75, 0xe7, 0x87, 0xca, 0x76, 0xe9, - 0x86, 0xca, 0x76, 0xe7, 0x87, 0xca, 0x77, 0xe9, 0x86, 0xca, 0x78, 0xe7, - 0x87, 0xca, 0x78, 0xe9, 0x86, 0xca, 0x79, 0xe7, 0x87, 0xca, 0x79, 0xe9, - 0x86, 0xca, 0x7a, 0xe7, 0x87, 0xca, 0x7a, 0xe6, 0x87, 0xca, 0x7b, 0xe7, - 0x87, 0xca, 0x7c, 0xe6, 0x87, 0xca, 0x7c, 0xe7, 0x87, 0xca, 0x7d, 0xe6, - 0x87, 0xca, 0x7d, 0xe7, 0x87, 0xca, 0x7e, 0xe6, 0x87, 0xca, 0x7e, 0xe7, - 0x87, 0xca, 0x7f, 0xe6, 0x87, 0xca, 0x7f, 0xe7, 0x87, 0xca, 0x80, 0xe6, - 0x87, 0xca, 0x81, 0xe7, 0x87, 0xca, 0x81, 0xe6, 0x87, 0xca, 0x82, 0xe7, - 0x87, 0xca, 0x82, 0xe6, 0x87, 0xca, 0x83, 0xe7, 0x87, 0xca, 0x83, 0xe6, - 0x87, 0xca, 0x84, 0xe7, 0x87, 0xca, 0x84, 0xe6, 0x87, 0xca, 0x85, 0xe7, - 0x87, 0xca, 0x85, 0xe6, 0x87, 0xca, 0x86, 0xe6, 0x88, 0xca, 0x86, 0xe6, - 0x87, 0xca, 0x87, 0xe6, 0x88, 0xca, 0x86, 0xe6, 0x87, 0xca, 0x87, 0xe6, - 0x88, 0xca, 0x86, 0xe6, 0x88, 0xca, 0x87, 0xe6, 0x89, 0xca, 0x87, 0xe6, - 0x89, 0xc8, 0x87, 0xe6, 0x8a, 0xca, 0x87, 0xe6, 0x8a, 0xc8, 0x87, 0xe6, - 0x8b, 0xca, 0x87, 0xe6, 0x8b, 0xc8, 0x87, 0xe6, 0x8c, 0xca, 0x87, 0xe6, - 0x8c, 0xc8, 0x87, 0xe6, 0x8d, 0xca, 0x87, 0xe6, 0x8d, 0xc8, 0x87, 0xe6, - 0x8e, 0xca, 0x87, 0xe6, 0x8e, 0xc8, 0x87, 0xe6, 0x8e, 0xca, 0x87, 0xe6, - 0x8f, 0xc8, 0x87, 0xe6, 0x8f, 0xca, 0x87, 0xe6, 0x90, 0xc8, 0x87, 0xe6, - 0x90, 0xca, 0x87, 0xe6, 0x91, 0xc8, 0x87, 0xe6, 0x91, 0xca, 0x87, 0xe6, - 0x92, 0xc8, 0x87, 0xe6, 0x92, 0xca, 0x87, 0xe6, 0x93, 0xc8, 0x87, 0xe6, - 0x93, 0xca, 0x87, 0xe6, 0x94, 0xc8, 0x87, 0xe6, 0x94, 0xca, 0x87, 0xe6, - 0x94, 0xc8, 0x87, 0xe6, 0x95, 0xca, 0x87, 0xe6, 0x95, 0xc8, 0x87, 0xe6, - 0x96, 0xca, 0x87, 0xe6, 0x96, 0xc8, 0x87, 0xe6, 0x97, 0xca, 0x87, 0xe6, - 0x97, 0xc8, 0x87, 0xe6, 0x98, 0xca, 0x87, 0xe6, 0x98, 0xc8, 0x88, 0xe6, - 0x98, 0xc4, 0x87, 0xe6, 0x99, 0xc8, 0x88, 0xe6, 0x99, 0xc4, 0x87, 0xe6, - 0x9a, 0xc8, 0x88, 0xe6, 0x9a, 0xc4, 0x87, 0xe6, 0x9a, 0xc8, 0x88, 0xe6, - 0x9b, 0xc4, 0x87, 0xe6, 0x9b, 0xc8, 0x88, 0xe6, 0x9c, 0xc4, 0x87, 0xe6, - 0x9c, 0xc8, 0x88, 0xe6, 0x9d, 0xc4, 0x87, 0xe6, 0x9d, 0xc8, 0x88, 0xe6, - 0x9d, 0xc4, 0x87, 0xe6, 0x9e, 0xc8, 0x88, 0xe6, 0x9e, 0xc4, 0x87, 0xe6, - 0x9f, 0xc8, 0x88, 0xe6, 0x9f, 0xc4, 0x87, 0xe6, 0x9f, 0xc8, 0x88, 0xe6, - 0xa0, 0xc4, 0x87, 0xe6, 0xa0, 0xc8, 0x88, 0xe6, 0xa1, 0xc4, 0x87, 0xe6, - 0xa1, 0xc8, 0x88, 0xe6, 0xa1, 0xc4, 0x87, 0xe6, 0xa2, 0xc8, 0x88, 0xe6, - 0xa2, 0xc4, 0x87, 0xe6, 0xa3, 0xc8, 0x88, 0xe6, 0xa3, 0xc4, 0x87, 0xe6, - 0xa3, 0xc8, 0x88, 0xe6, 0xa4, 0xc4, 0x87, 0xe6, 0xa4, 0xc8, 0x88, 0xe6, - 0xa5, 0xc4, 0x87, 0xe6, 0xa5, 0xc8, 0x88, 0xe6, 0xa5, 0xc4, 0x87, 0xe6, - 0xa6, 0xc8, 0xa2, 0xe6, 0xa6, 0xed, 0xa2, 0xe6, 0xa6, 0xed, 0xa2, 0xe6, - 0xa7, 0xed, 0xa2, 0xe6, 0xa7, 0xed, 0xa2, 0xe6, 0xa8, 0xed, 0xa2, 0xe6, - 0xa8, 0xed, 0xa2, 0xe6, 0xa8, 0xed, 0xa6, 0xe6, 0xa9, 0xee, 0xa2, 0xe6, - 0xa9, 0xed, 0xa6, 0xe6, 0xaa, 0xee, 0xa6, 0xe6, 0xaa, 0xee, 0xa6, 0xe6, - 0xaa, 0xee, 0xa6, 0xe6, 0xab, 0xee, 0xa6, 0xe6, 0xab, 0xee, 0xa6, 0xe6, - 0xab, 0xee, 0xa6, 0xe6, 0xac, 0xee, 0xa6, 0xe6, 0xac, 0xee, 0xa6, 0xe6, - 0xac, 0xee, 0xa6, 0xe6, 0xad, 0xee, 0xa6, 0xe6, 0xad, 0xee, 0xab, 0xe6, - 0xae, 0xef, 0xaa, 0xe6, 0xae, 0xef, 0xab, 0xe6, 0xae, 0xef, 0xaa, 0xe6, - 0xaf, 0xef, 0xab, 0xe6, 0xaf, 0xef, 0xaa, 0xe6, 0xaf, 0xef, 0xab, 0xe6, - 0xb0, 0xef, 0xaa, 0xe6, 0xb0, 0xef, 0xab, 0xe6, 0xb0, 0xef, 0xaa, 0xe6, - 0xb1, 0xef, 0xab, 0xe6, 0xb1, 0xef, 0xaf, 0xe6, 0xb2, 0xf0, 0xab, 0xe6, - 0xb2, 0xef, 0xaf, 0xe6, 0xb2, 0xf0, 0xae, 0xe6, 0xb3, 0xf0, 0xaf, 0xe6, - 0xb3, 0xf0, 0xae, 0xe6, 0xb3, 0xf0, 0xaf, 0xe6, 0xb4, 0xf0, 0xae, 0xe6, - 0xb4, 0xf0, 0xaf, 0xe6, 0xb4, 0xf0, 0xae, 0xe6, 0xb5, 0xf0, 0xaf, 0xe6, - 0xb5, 0xf0, 0xcd, 0xe6, 0xb5, 0xd2, 0xce, 0xe6, 0xb6, 0xd0, 0xcd, 0xe6, - 0xb6, 0xd2, 0xce, 0xe6, 0xb6, 0xd0, 0xcd, 0xe6, 0xb7, 0xd2, 0xce, 0xe6, - 0xb7, 0xd0, 0xcd, 0xe6, 0xb7, 0xd2, 0xce, 0xe6, 0xb8, 0xd0, 0xcd, 0xe6, - 0xb8, 0xd2, 0xce, 0xe6, 0xb8, 0xd0, 0xcd, 0xe6, 0xb9, 0xd2, 0xce, 0xe6, - 0xb9, 0xd0, 0xcd, 0xe6, 0xb9, 0xd2, 0xce, 0xe6, 0xba, 0xd0, 0xcd, 0xe6, - 0xba, 0xd2, 0xce, 0xe6, 0xba, 0xd0, 0xcd, 0xe6, 0xbb, 0xd2, 0xce, 0xe6, - 0xbb, 0xd0, 0xcd, 0xe6, 0xbb, 0xd2, 0xce, 0xe6, 0xbc, 0xd0, 0xcd, 0xe6, - 0xbc, 0xd2, 0xce, 0xe6, 0xbc, 0xd0, 0xce, 0xe6, 0xbd, 0xcd, 0xce, 0xe6, - 0xbd, 0xd0, 0xce, 0xe6, 0xbd, 0xcd, 0xce, 0xe6, 0xbe, 0xd0, 0xce, 0xe6, - 0xbe, 0xcd, 0xce, 0xe6, 0xbe, 0xd0, 0xce, 0xe6, 0xbf, 0xcd, 0xce, 0xe6, - 0xbf, 0xd0, 0xce, 0xe6, 0xbf, 0xcd, 0xce, 0xe6, 0xc0, 0xd0, 0xce, 0xe6, - 0xc0, 0xcd, 0xce, 0xe6, 0xc0, 0xd0, 0xce, 0xe6, 0xc1, 0xcd, 0xce, 0xe6, - 0xc1, 0xd0, 0xce, 0xe6, 0xc1, 0xcd, 0xce, 0xe6, 0xc1, 0xd0, 0xce, 0xe6, - 0xc2, 0xcd, 0xce, 0xe6, 0xc2, 0xd0, 0xce, 0xe6, 0xc2, 0xcd, 0xce, 0xe6, - 0xc3, 0xd0, 0xce, 0xe6, 0xc3, 0xcd, 0xce, 0xe6, 0xc3, 0xca, 0xce, 0xe6, - 0xc4, 0xcd, 0xce, 0xe6, 0xc4, 0xca, 0xce, 0xe6, 0xc4, 0xcd, 0xce, 0xe6, - 0xc5, 0xca, 0xce, 0xe6, 0xc5, 0xcd, 0xce, 0xe6, 0xc5, 0xca, 0xce, 0xe6, - 0xc6, 0xcd, 0xce, 0xe6, 0xc6, 0xca, 0xce, 0xe6, 0xc6, 0xcd, 0xce, 0xe6, - 0xc6, 0xca, 0xce, 0xe6, 0xc7, 0xcd, 0xce, 0xe6, 0xc7, 0xca, 0xce, 0xe6, - 0xc7, 0xcd, 0xce, 0xe6, 0xc8, 0xca, 0xce, 0xe6, 0xc8, 0xcd, 0xce, 0xe6, - 0xc8, 0xca, 0xce, 0xe6, 0xc9, 0xcd, 0xce, 0xe6, 0xc9, 0xca, 0xce, 0xe6, - 0xc9, 0xcd, 0xce, 0xe6, 0xc9, 0xca, 0xce, 0xe6, 0xca, 0xcd, 0xce, 0xe6, - 0xca, 0xca, 0xce, 0xe6, 0xca, 0xcd, 0xce, 0xe6, 0xcb, 0xca, 0xce, 0xe6, - 0xcb, 0xcd, 0xce, 0xe6, 0xcb, 0xca, 0xce, 0xe6, 0xcc, 0xcd, 0xce, 0xe6, - 0xcc, 0xca, 0xce, 0xe6, 0xcc, 0xca, 0xce, 0xe6, 0xcc, 0xca, 0xce, 0xe6, - 0xcd, 0xca, 0xce, 0xe6, 0xcd, 0xca, 0xce, 0xe6, 0xcd, 0xca, 0xce, 0xe6, - 0xce, 0xca, 0xce, 0xe6, 0xce, 0xca, 0xce, 0xe6, 0xce, 0xca, 0xce, 0xe6, - 0xce, 0xca, 0xcf, 0xe6, 0xce, 0xca, 0xcf, 0xe6, 0xce, 0xca, 0xcf, 0xe6, - 0xce, 0xca, 0xd0, 0xe6, 0xce, 0xca, 0xd0, 0xe6, 0xce, 0xca, 0xd0, 0xe6, - 0xce, 0xca, 0xd0, 0xe6, 0xce, 0xca, 0xd1, 0xe6, 0xce, 0xca, 0xd1, 0xe6, - 0xce, 0xca, 0xd1, 0xe6, 0xce, 0xca, 0xd2, 0xe6, 0xce, 0xca, 0xd2, 0xe6, - 0xce, 0xca, 0xd2, 0xe6, 0xce, 0xca, 0xd2, 0xe6, 0xce, 0xca, 0xd3, 0xe6, - 0xce, 0xca, 0xd3, 0xe4, 0xce, 0xca, 0xd3, 0xe6, 0xce, 0xca, 0xd4, 0xe4, - 0xce, 0xca, 0xd4, 0xe6, 0xce, 0xca, 0xd4, 0xe4, 0xce, 0xca, 0xd4, 0xe6, - 0xce, 0xca, 0xd5, 0xe4, 0xce, 0xca, 0xd5, 0xe6, 0xce, 0xca, 0xd5, 0xe4, - 0xce, 0xca, 0xd6, 0xe6, 0xce, 0xca, 0xd6, 0xe4, 0xce, 0xca, 0xd6, 0xe6, - 0xce, 0xca, 0xd6, 0xe4, 0xce, 0xca, 0xd7, 0xe6, 0xce, 0xca, 0xd7, 0xe4, - 0xce, 0xca, 0xd7, 0xe6, 0xce, 0xca, 0xd7, 0xe4, 0xce, 0xca, 0xd8, 0xe6, - 0xce, 0xca, 0xd8, 0xe4, 0xce, 0xca, 0xd8, 0xe6, 0xce, 0xca, 0xd9, 0xe4, - 0xce, 0xca, 0xd9, 0xe3, 0xcf, 0xca, 0xd9, 0xe4, 0xce, 0xca, 0xd9, 0xe3, - 0xcf, 0xca, 0xda, 0xe4, 0xce, 0xca, 0xda, 0xe3, 0xcf, 0xca, 0xda, 0xe4, - 0xce, 0xca, 0xda, 0xe3, 0xcf, 0xca, 0xdb, 0xe4, 0xce, 0xca, 0xdb, 0xe9, - 0xe6, 0xca, 0xdb, 0xe7, 0xe7, 0xca, 0xdb, 0xe9, 0xe6, 0xca, 0xdc, 0xe7, - 0xe7, 0xca, 0xdc, 0xe9, 0xe6, 0xca, 0xdc, 0xe7, 0xe7, 0xca, 0xdd, 0xe9, - 0xe6, 0xca, 0xdd, 0xe7, 0xe7, 0xca, 0xdd, 0xe9, 0xe6, 0xca, 0xdd, 0xe7, - 0xe7, 0xca, 0xde, 0xe9, 0xe6, 0xca, 0xde, 0xe7, 0xe7, 0xca, 0xde, 0xe9, - 0xe6, 0xca, 0xde, 0xe7, 0xe7, 0xca, 0xdf, 0xe9, 0xe6, 0xca, 0xdf, 0xe7, - 0xe7, 0xca, 0xdf, 0xe9, 0xe6, 0xca, 0xdf, 0xe7, 0xe7, 0xca, 0xe0, 0xe9, - 0xe6, 0xca, 0xe0, 0xe7, 0xe7, 0xca, 0xe0, 0xe9, 0xe6, 0xca, 0xe1, 0xe7, - 0xe7, 0xca, 0xe1, 0xe6, 0xe7, 0xca, 0xe1, 0xe7, 0xe7, 0xca, 0xe1, 0xe6, - 0xe7, 0xca, 0xe2, 0xe7, 0xe7, 0xca, 0xe2, 0xe6, 0xe7, 0xca, 0xe2, 0xe7, - 0xe7, 0xca, 0xe2, 0xe6, 0xe7, 0xca, 0xe3, 0xe7, 0xe7, 0xca, 0xe3, 0xe6, - 0xe7, 0xca, 0xe3, 0xe7, 0xe7, 0xca, 0xe3, 0xe6, 0xe7, 0xca, 0xe4, 0xe7, - 0xe7, 0xca, 0xe4, 0xe6, 0xe7, 0xca, 0xe4, 0xe7, 0xe7, 0xca, 0xe4, 0xe6, - 0xe7, 0xca, 0xe5, 0xe7, 0xe7, 0xca, 0xe5, 0xe6, 0xe7, 0xca, 0xe5, 0xe7, - 0xe7, 0xca, 0xe5, 0xe6, 0xe7, 0xca, 0xe6, 0xe7, 0xe7, 0xca, 0xe6, 0xe6, - 0xe7, 0xca, 0xe6, 0xe6, 0xe7, 0xca, 0xe6, 0xe6, 0xe7, 0xca, 0xe7, 0xe6, - 0xe7, 0xca, 0xe6, 0xe6, 0xe7, 0xca, 0xe7, 0xe6, 0xe7, 0xca, 0xe6, 0xe6, - 0xe7, 0xca, 0xe7, 0xe6, 0xe8, 0xca, 0xe7, 0xe6, 0xe8, 0xc8, 0xe7, 0xe6, - 0xe8, 0xca, 0xe7, 0xe6, 0xe8, 0xc8, 0xe7, 0xe6, 0xe9, 0xca, 0xeb, 0xe6, - 0xe9, 0xca, 0xeb, 0xe6, 0xe9, 0xcc, 0xeb, 0xe6, 0xe9, 0xca, 0xeb, 0xe6, - 0xea, 0xcc, 0xeb, 0xe6, 0xea, 0xca, 0xeb, 0xe6, 0xea, 0xca, 0xeb, 0xe6, - 0xea, 0xca, 0xeb, 0xe6, 0xeb, 0xca, 0xeb, 0xe6, 0xea, 0xca, 0xeb, 0xe6, - 0xeb, 0xca, 0xeb, 0xe6, 0xea, 0xca, 0xec, 0xe6, 0xeb, 0xca, 0xec, 0xe6, - 0xea, 0xca, 0xec, 0xe6, 0xeb, 0xca, 0xec, 0xe6, 0xea, 0xca, 0xec, 0xe6, - 0xeb, 0xca, 0xed, 0xe5, 0xeb, 0xca, 0xed, 0xe6, 0xeb, 0xca, 0xed, 0xe5, - 0xeb, 0xca, 0xed, 0xe6, 0xeb, 0xca, 0xee, 0xe5, 0xeb, 0xca, 0xee, 0xe6, - 0xeb, 0xca, 0xee, 0xe5, 0xeb, 0xca, 0xee, 0xe6, 0xeb, 0xca, 0xef, 0xe5, - 0xeb, 0xca, 0xef, 0xe6, 0xeb, 0xca, 0xef, 0xe5, 0xeb, 0xca, 0xef, 0xe6, - 0xeb, 0xca, 0xf0, 0xe5, 0xeb, 0xca, 0xf0, 0xe6, 0xeb, 0xca, 0xf0, 0xec, - 0xf0, 0xca, 0xf0, 0xec, 0xf0, 0xca, 0xf1, 0xec, 0xf0, 0xca, 0xf1, 0xec, - 0xf0, 0xca, 0xf1, 0xec, 0xf0, 0xca, 0xf1, 0xec, 0xf0, 0xca, 0xf2, 0xec, - 0xf0, 0xca, 0xf2, 0xec, 0xf0, 0xca, 0xf2, 0xec, 0xf0, 0xca, 0xf2, 0xec, - 0xf0, 0xca, 0xf2, 0xec, 0xf0, 0xca, 0xf3, 0xec, 0xf1, 0xca, 0xf3, 0xec, - 0xf0, 0xca, 0xf3, 0xec, 0xf1, 0xca, 0xf3, 0xec, 0xf1, 0xca, 0xf4, 0xec, - 0xf1, 0xca, 0xf4, 0xec, 0xf1, 0xca, 0xf4, 0xec, 0xf1, 0xca, 0xf4, 0xec, - 0xf1, 0xca, 0xf5, 0xec, 0xf1, 0xca, 0xf5, 0xec, 0xf1, 0xca, 0xf5, 0xec, - 0xf1, 0xca, 0xf5, 0xec, 0xf1, 0xca, 0xf5, 0xec, 0xf1, 0xca, 0xf6, 0xec, - 0xf1, 0xca, 0xf6, 0xec, 0xf1, 0xca, 0xf6, 0xec, 0xf1, 0xca, 0xf6, 0xec, - 0xf1, 0xca, 0xf7, 0xec, 0xf1, 0xca, 0xf7, 0xec, 0xf1, 0xca, 0xf7, 0xec, - 0xf1, 0xca, 0xf7, 0xec, 0xf1, 0xca, 0xf8, 0xec, 0xf1, 0xca, 0xf8, 0xec, - 0xf1, 0xca, 0xf8, 0xec, 0xf1, 0xca, 0xf8, 0xec, 0xf1, 0xca, 0xf8, 0xec, - 0xf1, 0xca, 0xf9, 0xec, 0xf1, 0xca, 0xf9, 0xec, 0xf1, 0xca, 0xf9, 0xec, - 0xf1, 0xca, 0xf9, 0xec, 0xf1, 0xca, 0xfa, 0xec, 0xf1, 0xca, 0xfa, 0xec, - 0xf1, 0xca, 0xfa, 0xec, 0xf1, 0xca, 0xfa, 0xec, 0xf1, 0xca, 0xfa, 0xec, - 0xf1, 0xca, 0xfb, 0xec, 0xf1, 0xca, 0xfb, 0xec, 0xf1, 0xca, 0xfb, 0xec, - 0xf1, 0xca, 0xfb, 0xec, 0xf1, 0xca, 0xfc, 0xec, 0xf1, 0xca, 0xfc, 0xec, - 0xf1, 0xca, 0xfc, 0xec, 0xf1, 0xca, 0xfc, 0xec, 0xf1, 0xca, 0xfc, 0xec, - 0xf1, 0xca, 0xfd, 0xec, 0xf1, 0xca, 0xfd, 0xec, 0xf1, 0xca, 0xfd, 0xec, - 0xf1, 0xca, 0xfd, 0xec, 0xf1, 0xca, 0xfe, 0xec, 0xf1, 0xca, 0xfe, 0xec, - 0xf1, 0xca, 0xfe, 0xec, 0xf1, 0xca, 0xfe, 0xec, 0xf1, 0xca, 0xfe, 0xec, - 0xf1, 0xca, 0xff, 0xec, 0xf1, 0xca, 0xff, 0xec, 0xf1, 0xca, 0x03, 0xec, - 0x85, 0xcb, 0x0a, 0xec, 0x85, 0xcb, 0x0f, 0xec, 0x85, 0xcb, 0x14, 0xec, - 0x85, 0xcb, 0x17, 0xec, 0x85, 0xcb, 0x1b, 0xec, 0x85, 0xcb, 0x1e, 0xec, - 0x85, 0xcb, 0x20, 0xeb, 0x86, 0xcb, 0x23, 0xec, 0x85, 0xcb, 0x25, 0xeb, - 0x86, 0xcb, 0x27, 0xec, 0x85, 0xcb, 0x29, 0xeb, 0x86, 0xcb, 0x2b, 0xec, - 0x85, 0xcb, 0x2d, 0xeb, 0x86, 0xcb, 0x2f, 0xec, 0x85, 0xcb, 0x31, 0xeb, - 0x86, 0xcb, 0x32, 0xec, 0x85, 0xcb, 0x34, 0xeb, 0x86, 0xcb, 0x35, 0xec, - 0x85, 0xcb, 0x37, 0xeb, 0x86, 0xcb, 0x38, 0xec, 0x85, 0xcb, 0x3a, 0xeb, - 0x86, 0xcb, 0x3b, 0xec, 0x85, 0xcb, 0x3c, 0xeb, 0x86, 0xcb, 0x3e, 0xec, - 0x85, 0xcb, 0x3f, 0xeb, 0x86, 0xcb, 0x40, 0xe9, 0x86, 0xcb, 0x42, 0xeb, - 0x86, 0xcb, 0x43, 0xe9, 0x86, 0xcb, 0x44, 0xeb, 0x86, 0xcb, 0x45, 0xe9, - 0x86, 0xcb, 0x46, 0xeb, 0x86, 0xcb, 0x47, 0xe9, 0x86, 0xcb, 0x48, 0xeb, - 0x86, 0xcb, 0x49, 0xe9, 0x86, 0xcb, 0x4a, 0xeb, 0x86, 0xcb, 0x4b, 0xe9, - 0x86, 0xcb, 0x4c, 0xeb, 0x86, 0xcb, 0x4d, 0xe9, 0x86, 0xcb, 0x4e, 0xeb, - 0x86, 0xcb, 0x4f, 0xe9, 0x86, 0xcb, 0x50, 0xeb, 0x86, 0xcb, 0x51, 0xe9, - 0x86, 0xcb, 0x52, 0xeb, 0x86, 0xcb, 0x53, 0xe9, 0x86, 0xcb, 0x54, 0xeb, - 0x86, 0xcb, 0x55, 0xe9, 0x86, 0xcb, 0x56, 0xeb, 0x86, 0xcb, 0x57, 0xe9, - 0x86, 0xcb, 0x58, 0xeb, 0x86, 0xcb, 0x58, 0xe9, 0x86, 0xcb, 0x59, 0xeb, - 0x86, 0xcb, 0x5a, 0xe9, 0x86, 0xcb, 0x5b, 0xeb, 0x86, 0xcb, 0x5c, 0xe9, - 0x86, 0xcb, 0x5d, 0xeb, 0x86, 0xcb, 0x5d, 0xe9, 0x86, 0xcb, 0x5e, 0xeb, - 0x86, 0xcb, 0x5f, 0xe9, 0x86, 0xcb, 0x60, 0xeb, 0x86, 0xcb, 0x60, 0xe9, - 0x86, 0xcb, 0x61, 0xeb, 0x86, 0xcb, 0x62, 0xe9, 0x86, 0xcb, 0x63, 0xe8, - 0x87, 0xcb, 0x63, 0xe9, 0x86, 0xcb, 0x64, 0xe8, 0x87, 0xcb, 0x65, 0xe9, - 0x86, 0xcb, 0x66, 0xe8, 0x87, 0xcb, 0x66, 0xe9, 0x86, 0xcb, 0x67, 0xe8, - 0x87, 0xcb, 0x68, 0xe9, 0x86, 0xcb, 0x68, 0xe8, 0x87, 0xcb, 0x69, 0xe9, - 0x86, 0xcb, 0x6a, 0xe8, 0x87, 0xcb, 0x6a, 0xe9, 0x86, 0xcb, 0x6b, 0xe8, - 0x87, 0xcb, 0x6c, 0xe9, 0x86, 0xcb, 0x6c, 0xe8, 0x87, 0xcb, 0x6d, 0xe9, - 0x86, 0xcb, 0x6e, 0xe8, 0x87, 0xcb, 0x6e, 0xe9, 0x86, 0xcb, 0x6f, 0xe8, - 0x87, 0xcb, 0x70, 0xe9, 0x86, 0xcb, 0x70, 0xe8, 0x87, 0xcb, 0x71, 0xe9, - 0x86, 0xcb, 0x72, 0xe8, 0x87, 0xcb, 0x72, 0xe9, 0x86, 0xcb, 0x73, 0xe8, - 0x87, 0xcb, 0x73, 0xe9, 0x86, 0xcb, 0x74, 0xe8, 0x87, 0xcb, 0x75, 0xe9, - 0x86, 0xcb, 0x75, 0xe8, 0x87, 0xcb, 0x76, 0xe9, 0x86, 0xcb, 0x76, 0xe8, - 0x87, 0xcb, 0x77, 0xe9, 0x86, 0xcb, 0x78, 0xe8, 0x87, 0xcb, 0x78, 0xe9, - 0x86, 0xcb, 0x79, 0xe8, 0x87, 0xcb, 0x79, 0xe9, 0x86, 0xcb, 0x7a, 0xe8, - 0x87, 0xcb, 0x7a, 0xe7, 0x87, 0xcb, 0x7b, 0xe8, 0x87, 0xcb, 0x7c, 0xe7, - 0x87, 0xcb, 0x7c, 0xe8, 0x87, 0xcb, 0x7d, 0xe7, 0x87, 0xcb, 0x7d, 0xe8, - 0x87, 0xcb, 0x7e, 0xe7, 0x87, 0xcb, 0x7e, 0xe8, 0x87, 0xcb, 0x7f, 0xe7, - 0x87, 0xcb, 0x7f, 0xe8, 0x87, 0xcb, 0x80, 0xe7, 0x87, 0xcb, 0x81, 0xe8, - 0x87, 0xcb, 0x81, 0xe7, 0x87, 0xcb, 0x82, 0xe8, 0x87, 0xcb, 0x82, 0xe7, - 0x87, 0xcb, 0x83, 0xe8, 0x87, 0xcb, 0x83, 0xe7, 0x87, 0xcb, 0x84, 0xe8, - 0x87, 0xcb, 0x84, 0xe7, 0x87, 0xcb, 0x85, 0xe8, 0x87, 0xcb, 0x85, 0xe7, - 0x87, 0xcb, 0x86, 0xe7, 0x88, 0xcb, 0x86, 0xe7, 0x87, 0xcb, 0x87, 0xe7, - 0x88, 0xcb, 0x86, 0xe7, 0x87, 0xcb, 0x87, 0xe7, 0x88, 0xcb, 0x86, 0xe7, - 0x88, 0xcb, 0x87, 0xe7, 0x89, 0xcb, 0x86, 0xe7, 0x89, 0xcb, 0x87, 0xe7, - 0x8a, 0xcb, 0x86, 0xe7, 0x8a, 0xcb, 0x87, 0xe7, 0x8b, 0xcb, 0x87, 0xe7, - 0x8b, 0xc8, 0x87, 0xe7, 0x8c, 0xcb, 0x87, 0xe7, 0x8c, 0xc8, 0x87, 0xe7, - 0x8d, 0xcb, 0x87, 0xe7, 0x8d, 0xc8, 0x87, 0xe7, 0x8e, 0xcb, 0x87, 0xe7, - 0x8e, 0xc8, 0x87, 0xe7, 0x8e, 0xcb, 0x87, 0xe7, 0x8f, 0xc8, 0x87, 0xe7, - 0x8f, 0xcb, 0x87, 0xe7, 0x90, 0xc8, 0x87, 0xe7, 0x90, 0xcb, 0x87, 0xe7, - 0x91, 0xc8, 0x87, 0xe7, 0x91, 0xcb, 0x87, 0xe7, 0x92, 0xc8, 0x87, 0xe7, - 0x92, 0xcb, 0x87, 0xe7, 0x93, 0xc8, 0x87, 0xe7, 0x93, 0xcb, 0x87, 0xe7, - 0x94, 0xc8, 0x87, 0xe7, 0x94, 0xcb, 0x87, 0xe7, 0x94, 0xc8, 0x87, 0xe7, - 0x95, 0xcb, 0x87, 0xe7, 0x95, 0xc8, 0x87, 0xe7, 0x96, 0xcb, 0x87, 0xe7, - 0x96, 0xc8, 0x87, 0xe7, 0x97, 0xcb, 0x87, 0xe7, 0x97, 0xc8, 0x87, 0xe7, - 0x98, 0xcb, 0x87, 0xe7, 0x98, 0xc8, 0x88, 0xe7, 0x98, 0xc5, 0x87, 0xe7, - 0x99, 0xc8, 0x88, 0xe7, 0x99, 0xc5, 0x87, 0xe7, 0x9a, 0xc8, 0x88, 0xe7, - 0x9a, 0xc5, 0x87, 0xe7, 0x9a, 0xc8, 0x88, 0xe7, 0x9b, 0xc5, 0x87, 0xe7, - 0x9b, 0xc8, 0x88, 0xe7, 0x9c, 0xc5, 0x87, 0xe7, 0x9c, 0xc8, 0x88, 0xe7, - 0x9d, 0xc5, 0x87, 0xe7, 0x9d, 0xc8, 0x88, 0xe7, 0x9d, 0xc5, 0x87, 0xe7, - 0x9e, 0xc8, 0x88, 0xe7, 0x9e, 0xc5, 0x87, 0xe7, 0x9f, 0xc8, 0x88, 0xe7, - 0x9f, 0xc5, 0x87, 0xe7, 0x9f, 0xc8, 0x88, 0xe7, 0xa0, 0xc5, 0x87, 0xe7, - 0xa0, 0xc8, 0x88, 0xe7, 0xa1, 0xc5, 0x87, 0xe7, 0xa1, 0xc8, 0x88, 0xe7, - 0xa1, 0xc5, 0x87, 0xe7, 0xa2, 0xc8, 0x88, 0xe7, 0xa2, 0xc5, 0x87, 0xe7, - 0xa3, 0xc8, 0x88, 0xe7, 0xa3, 0xc5, 0x87, 0xe7, 0xa3, 0xc8, 0x88, 0xe7, - 0xa4, 0xc5, 0x87, 0xe7, 0xa4, 0xc8, 0x88, 0xe7, 0xa5, 0xc5, 0x87, 0xe7, - 0xa5, 0xc8, 0x88, 0xe7, 0xa5, 0xc5, 0x9f, 0xe7, 0xa6, 0xed, 0xa0, 0xe7, - 0xa6, 0xed, 0xa4, 0xe7, 0xa6, 0xee, 0xa0, 0xe7, 0xa7, 0xed, 0xa4, 0xe7, - 0xa7, 0xee, 0xa4, 0xe7, 0xa8, 0xee, 0xa4, 0xe7, 0xa8, 0xee, 0xa4, 0xe7, - 0xa8, 0xee, 0xa4, 0xe7, 0xa9, 0xee, 0xa4, 0xe7, 0xa9, 0xee, 0xa4, 0xe7, - 0xaa, 0xee, 0xa4, 0xe7, 0xaa, 0xee, 0xa4, 0xe7, 0xaa, 0xee, 0xa8, 0xe7, - 0xab, 0xef, 0xa4, 0xe7, 0xab, 0xee, 0xa8, 0xe7, 0xab, 0xef, 0xa8, 0xe7, - 0xac, 0xef, 0xa8, 0xe7, 0xac, 0xef, 0xa8, 0xe7, 0xac, 0xef, 0xa8, 0xe7, - 0xad, 0xef, 0xa8, 0xe7, 0xad, 0xef, 0xa8, 0xe7, 0xae, 0xef, 0xa8, 0xe7, - 0xae, 0xef, 0xa8, 0xe7, 0xae, 0xef, 0xa8, 0xe7, 0xaf, 0xef, 0xa8, 0xe7, - 0xaf, 0xef, 0xac, 0xe7, 0xaf, 0xf0, 0xac, 0xe7, 0xb0, 0xf0, 0xac, 0xe7, - 0xb0, 0xf0, 0xac, 0xe7, 0xb0, 0xf0, 0xac, 0xe7, 0xb1, 0xf0, 0xac, 0xe7, - 0xb1, 0xf0, 0xac, 0xe7, 0xb2, 0xf0, 0xac, 0xe7, 0xb2, 0xf0, 0xac, 0xe7, - 0xb2, 0xf0, 0xac, 0xe7, 0xb3, 0xf0, 0xac, 0xe7, 0xb3, 0xf0, 0xb0, 0xe7, - 0xb3, 0xf1, 0xac, 0xe7, 0xb4, 0xf0, 0xb0, 0xe7, 0xb4, 0xf1, 0xb0, 0xe7, - 0xb4, 0xf1, 0xb0, 0xe7, 0xb5, 0xf1, 0xb0, 0xe7, 0xb5, 0xf1, 0xb0, 0xe7, - 0xb5, 0xf1, 0xce, 0xe7, 0xb6, 0xd0, 0xcd, 0xe7, 0xb6, 0xd3, 0xce, 0xe7, - 0xb6, 0xd0, 0xcd, 0xe7, 0xb7, 0xd3, 0xce, 0xe7, 0xb7, 0xd0, 0xcd, 0xe7, - 0xb7, 0xd3, 0xce, 0xe7, 0xb8, 0xd0, 0xcd, 0xe7, 0xb8, 0xd3, 0xce, 0xe7, - 0xb8, 0xd0, 0xcd, 0xe7, 0xb9, 0xd3, 0xce, 0xe7, 0xb9, 0xd0, 0xcd, 0xe7, - 0xb9, 0xd3, 0xce, 0xe7, 0xba, 0xd0, 0xcd, 0xe7, 0xba, 0xd3, 0xce, 0xe7, - 0xba, 0xd0, 0xcd, 0xe7, 0xbb, 0xd3, 0xce, 0xe7, 0xbb, 0xd0, 0xce, 0xe7, - 0xbb, 0xcd, 0xce, 0xe7, 0xbc, 0xd0, 0xce, 0xe7, 0xbc, 0xcd, 0xce, 0xe7, - 0xbc, 0xd0, 0xce, 0xe7, 0xbd, 0xcd, 0xce, 0xe7, 0xbd, 0xd0, 0xce, 0xe7, - 0xbd, 0xcd, 0xce, 0xe7, 0xbe, 0xd0, 0xce, 0xe7, 0xbe, 0xcd, 0xce, 0xe7, - 0xbe, 0xd0, 0xce, 0xe7, 0xbf, 0xcd, 0xce, 0xe7, 0xbf, 0xd0, 0xce, 0xe7, - 0xbf, 0xcd, 0xce, 0xe7, 0xc0, 0xd0, 0xce, 0xe7, 0xc0, 0xcd, 0xce, 0xe7, - 0xc0, 0xd0, 0xce, 0xe7, 0xc1, 0xcd, 0xce, 0xe7, 0xc1, 0xd0, 0xce, 0xe7, - 0xc1, 0xcd, 0xce, 0xe7, 0xc1, 0xd0, 0xce, 0xe7, 0xc2, 0xcd, 0xce, 0xe7, - 0xc2, 0xd0, 0xce, 0xe7, 0xc2, 0xcd, 0xce, 0xe7, 0xc3, 0xd0, 0xce, 0xe7, - 0xc3, 0xcd, 0xce, 0xe7, 0xc3, 0xd0, 0xce, 0xe7, 0xc4, 0xcd, 0xce, 0xe7, - 0xc4, 0xd0, 0xce, 0xe7, 0xc4, 0xcd, 0xce, 0xe7, 0xc5, 0xd0, 0xce, 0xe7, - 0xc5, 0xcd, 0xce, 0xe7, 0xc5, 0xd0, 0xce, 0xe7, 0xc6, 0xcd, 0xce, 0xe7, - 0xc6, 0xd0, 0xce, 0xe7, 0xc6, 0xcd, 0xce, 0xe7, 0xc6, 0xd0, 0xce, 0xe7, - 0xc7, 0xcd, 0xce, 0xe7, 0xc7, 0xcb, 0xce, 0xe7, 0xc7, 0xcd, 0xce, 0xe7, - 0xc8, 0xcb, 0xce, 0xe7, 0xc8, 0xcd, 0xce, 0xe7, 0xc8, 0xcb, 0xce, 0xe7, - 0xc9, 0xcd, 0xce, 0xe7, 0xc9, 0xcb, 0xce, 0xe7, 0xc9, 0xcd, 0xce, 0xe7, - 0xc9, 0xcb, 0xce, 0xe7, 0xca, 0xcd, 0xce, 0xe7, 0xca, 0xcb, 0xce, 0xe7, - 0xca, 0xcd, 0xce, 0xe7, 0xcb, 0xcb, 0xce, 0xe7, 0xcb, 0xcd, 0xce, 0xe7, - 0xcb, 0xcb, 0xce, 0xe7, 0xcc, 0xcd, 0xce, 0xe7, 0xcc, 0xcb, 0xce, 0xe7, - 0xcc, 0xcd, 0xce, 0xe7, 0xcc, 0xcb, 0xce, 0xe7, 0xcd, 0xcd, 0xce, 0xe7, - 0xcd, 0xcb, 0xce, 0xe7, 0xcd, 0xcb, 0xce, 0xe7, 0xce, 0xcb, 0xce, 0xe7, - 0xce, 0xcb, 0xce, 0xe6, 0xce, 0xcb, 0xce, 0xe7, 0xce, 0xcb, 0xcf, 0xe6, - 0xce, 0xcb, 0xcf, 0xe7, 0xce, 0xcb, 0xcf, 0xe6, 0xce, 0xcb, 0xd0, 0xe7, - 0xce, 0xcb, 0xd0, 0xe6, 0xce, 0xcb, 0xd0, 0xe7, 0xce, 0xcb, 0xd0, 0xe6, - 0xce, 0xcb, 0xd1, 0xe7, 0xce, 0xcb, 0xd1, 0xe6, 0xce, 0xcb, 0xd1, 0xe7, - 0xce, 0xcb, 0xd2, 0xe6, 0xce, 0xcb, 0xd2, 0xe7, 0xce, 0xcb, 0xd2, 0xe6, - 0xce, 0xcb, 0xd2, 0xe7, 0xce, 0xcb, 0xd3, 0xe6, 0xce, 0xcb, 0xd3, 0xe5, - 0xce, 0xcb, 0xd3, 0xe6, 0xce, 0xcb, 0xd4, 0xe5, 0xce, 0xcb, 0xd4, 0xe6, - 0xce, 0xcb, 0xd4, 0xe5, 0xce, 0xcb, 0xd4, 0xe6, 0xce, 0xcb, 0xd5, 0xe5, - 0xce, 0xcb, 0xd5, 0xe6, 0xce, 0xcb, 0xd5, 0xe5, 0xce, 0xcb, 0xd6, 0xe6, - 0xce, 0xcb, 0xd6, 0xe5, 0xce, 0xcb, 0xd6, 0xe6, 0xce, 0xcb, 0xd6, 0xe5, - 0xce, 0xcb, 0xd7, 0xe6, 0xce, 0xcb, 0xd7, 0xe5, 0xce, 0xcb, 0xd7, 0xe6, - 0xce, 0xcb, 0xd7, 0xe5, 0xce, 0xcb, 0xd8, 0xe6, 0xce, 0xcb, 0xd8, 0xe5, - 0xce, 0xcb, 0xd8, 0xe6, 0xce, 0xcb, 0xd9, 0xe5, 0xce, 0xcb, 0xd9, 0xe6, - 0xce, 0xcb, 0xd9, 0xe5, 0xce, 0xcb, 0xd9, 0xe6, 0xce, 0xcb, 0xda, 0xe5, - 0xce, 0xcb, 0xda, 0xe6, 0xce, 0xcb, 0xda, 0xe5, 0xce, 0xcb, 0xda, 0xe6, - 0xce, 0xcb, 0xdb, 0xe5, 0xce, 0xcb, 0xdb, 0xe9, 0xe6, 0xcb, 0xdb, 0xe8, - 0xe7, 0xcb, 0xdb, 0xe9, 0xe6, 0xcb, 0xdc, 0xe8, 0xe7, 0xcb, 0xdc, 0xe9, - 0xe6, 0xcb, 0xdc, 0xe8, 0xe7, 0xcb, 0xdd, 0xe9, 0xe6, 0xcb, 0xdd, 0xe8, - 0xe7, 0xcb, 0xdd, 0xe9, 0xe6, 0xcb, 0xdd, 0xe8, 0xe7, 0xcb, 0xde, 0xe9, - 0xe6, 0xcb, 0xde, 0xe8, 0xe7, 0xcb, 0xde, 0xe9, 0xe6, 0xcb, 0xde, 0xe8, - 0xe7, 0xcb, 0xdf, 0xe9, 0xe6, 0xcb, 0xdf, 0xe8, 0xe7, 0xcb, 0xdf, 0xe9, - 0xe6, 0xcb, 0xdf, 0xe8, 0xe7, 0xcb, 0xe0, 0xe9, 0xe6, 0xcb, 0xe0, 0xe8, - 0xe7, 0xcb, 0xe0, 0xe9, 0xe6, 0xcb, 0xe1, 0xe8, 0xe7, 0xcb, 0xe1, 0xe9, - 0xe6, 0xcb, 0xe1, 0xe8, 0xe7, 0xcb, 0xe1, 0xe9, 0xe6, 0xcb, 0xe2, 0xe8, - 0xe7, 0xcb, 0xe2, 0xe9, 0xe6, 0xcb, 0xe2, 0xe8, 0xe7, 0xcb, 0xe2, 0xe9, - 0xe6, 0xcb, 0xe3, 0xe8, 0xe7, 0xcb, 0xe3, 0xe7, 0xe7, 0xcb, 0xe3, 0xe8, - 0xe7, 0xcb, 0xe3, 0xe7, 0xe7, 0xcb, 0xe4, 0xe8, 0xe7, 0xcb, 0xe4, 0xe7, - 0xe7, 0xcb, 0xe4, 0xe8, 0xe7, 0xcb, 0xe4, 0xe7, 0xe7, 0xcb, 0xe5, 0xe8, - 0xe7, 0xcb, 0xe5, 0xe7, 0xe7, 0xcb, 0xe5, 0xe8, 0xe7, 0xcb, 0xe5, 0xe7, - 0xe7, 0xcb, 0xe6, 0xe8, 0xe7, 0xcb, 0xe6, 0xe7, 0xe7, 0xcb, 0xe6, 0xe7, - 0xe7, 0xcb, 0xe6, 0xe7, 0xe7, 0xcb, 0xe7, 0xe7, 0xe7, 0xcb, 0xe6, 0xe7, - 0xe7, 0xcb, 0xe7, 0xe7, 0xe7, 0xcb, 0xe6, 0xe7, 0xe7, 0xcb, 0xe7, 0xe7, - 0xe8, 0xcb, 0xe7, 0xe7, 0xe8, 0xc9, 0xe7, 0xe7, 0xe8, 0xcb, 0xe7, 0xe7, - 0xe8, 0xc9, 0xe7, 0xe7, 0xe9, 0xcb, 0xeb, 0xe7, 0xe9, 0xcb, 0xeb, 0xe7, - 0xe9, 0xcc, 0xeb, 0xe7, 0xe9, 0xcb, 0xeb, 0xe7, 0xea, 0xcc, 0xeb, 0xe7, - 0xea, 0xcb, 0xeb, 0xe7, 0xea, 0xcc, 0xeb, 0xe7, 0xea, 0xcb, 0xeb, 0xe7, - 0xeb, 0xcb, 0xeb, 0xe7, 0xea, 0xcb, 0xeb, 0xe7, 0xeb, 0xcb, 0xeb, 0xe7, - 0xea, 0xcb, 0xec, 0xe7, 0xeb, 0xcb, 0xec, 0xe7, 0xea, 0xcb, 0xec, 0xe7, - 0xeb, 0xcb, 0xec, 0xe7, 0xea, 0xcb, 0xec, 0xe7, 0xeb, 0xcb, 0xed, 0xe5, - 0xeb, 0xcb, 0xed, 0xe7, 0xeb, 0xcb, 0xed, 0xe5, 0xeb, 0xcb, 0xed, 0xe7, - 0xeb, 0xcb, 0xee, 0xe5, 0xeb, 0xcb, 0xee, 0xe7, 0xeb, 0xcb, 0xee, 0xe5, - 0xeb, 0xcb, 0xee, 0xe7, 0xeb, 0xcb, 0xef, 0xe5, 0xeb, 0xcb, 0xef, 0xe7, - 0xeb, 0xcb, 0xef, 0xe5, 0xeb, 0xcb, 0xef, 0xe7, 0xeb, 0xcb, 0xf0, 0xe5, - 0xeb, 0xcb, 0xf0, 0xec, 0xee, 0xcb, 0xf0, 0xec, 0xee, 0xcb, 0xf0, 0xec, - 0xee, 0xcb, 0xf1, 0xec, 0xf1, 0xcb, 0xf1, 0xec, 0xf1, 0xcb, 0xf1, 0xec, - 0xf1, 0xcb, 0xf1, 0xec, 0xf1, 0xcb, 0xf2, 0xec, 0xf1, 0xcb, 0xf2, 0xec, - 0xf1, 0xcb, 0xf2, 0xec, 0xf1, 0xcb, 0xf2, 0xec, 0xf1, 0xcb, 0xf2, 0xec, - 0xf1, 0xcb, 0xf3, 0xec, 0xf1, 0xcb, 0xf3, 0xec, 0xf1, 0xcb, 0xf3, 0xec, - 0xf1, 0xcb, 0xf3, 0xec, 0xf1, 0xcb, 0xf4, 0xec, 0xf1, 0xcb, 0xf4, 0xec, - 0xf1, 0xcb, 0xf4, 0xec, 0xf1, 0xcb, 0xf4, 0xec, 0xf1, 0xcb, 0xf5, 0xec, - 0xf1, 0xcb, 0xf5, 0xec, 0xf1, 0xcb, 0xf5, 0xec, 0xf1, 0xcb, 0xf5, 0xec, - 0xf1, 0xcb, 0xf5, 0xec, 0xf1, 0xcb, 0xf6, 0xec, 0xf1, 0xcb, 0xf6, 0xec, - 0xf1, 0xcb, 0xf6, 0xec, 0xf1, 0xcb, 0xf6, 0xec, 0xf1, 0xcb, 0xf7, 0xec, - 0xf1, 0xcb, 0xf7, 0xec, 0xf1, 0xcb, 0xf7, 0xec, 0xf1, 0xcb, 0xf7, 0xec, - 0xf1, 0xcb, 0xf8, 0xec, 0xf1, 0xcb, 0xf8, 0xec, 0xf1, 0xcb, 0xf8, 0xec, - 0xf1, 0xcb, 0xf8, 0xec, 0xf1, 0xcb, 0xf8, 0xec, 0xf1, 0xcb, 0xf9, 0xec, - 0xf1, 0xcb, 0xf9, 0xec, 0xf1, 0xcb, 0xf9, 0xec, 0xf1, 0xcb, 0xf9, 0xec, - 0xf1, 0xcb, 0xfa, 0xec, 0xf1, 0xcb, 0xfa, 0xec, 0xf1, 0xcb, 0xfa, 0xec, - 0xf1, 0xcb, 0xfa, 0xec, 0xf1, 0xcb, 0xfa, 0xec, 0xf1, 0xcb, 0xfb, 0xec, - 0xf1, 0xcb, 0xfb, 0xec, 0xf1, 0xcb, 0xfb, 0xec, 0xf1, 0xcb, 0xfb, 0xec, - 0xf1, 0xcb, 0xfc, 0xec, 0xf1, 0xcb, 0xfc, 0xec, 0xf1, 0xcb, 0xfc, 0xec, - 0xf1, 0xcb, 0xfc, 0xec, 0xf1, 0xcb, 0xfc, 0xec, 0xf1, 0xcb, 0xfd, 0xec, - 0xf1, 0xcb, 0xfd, 0xec, 0xf1, 0xcb, 0xfd, 0xec, 0xf1, 0xcb, 0xfd, 0xec, - 0xf1, 0xcb, 0xfe, 0xec, 0xf1, 0xcb, 0xfe, 0xec, 0xf1, 0xcb, 0xfe, 0xec, - 0xf1, 0xcb, 0xfe, 0xec, 0xf1, 0xcb, 0xfe, 0xec, 0xf1, 0xcb, 0xff, 0xec, - 0xf1, 0xcb, 0xff, 0xec, 0xf1, 0xcb, 0x03, 0xec, 0x85, 0xcb, 0x0a, 0xec, - 0x85, 0xcb, 0x0f, 0xec, 0x85, 0xcb, 0x14, 0xec, 0x85, 0xcb, 0x17, 0xec, - 0x85, 0xcb, 0x1b, 0xec, 0x85, 0xcb, 0x1e, 0xec, 0x85, 0xcb, 0x20, 0xeb, - 0x86, 0xcb, 0x23, 0xec, 0x85, 0xcb, 0x25, 0xeb, 0x86, 0xcb, 0x27, 0xec, - 0x85, 0xcb, 0x29, 0xeb, 0x86, 0xcb, 0x2b, 0xec, 0x85, 0xcb, 0x2d, 0xeb, - 0x86, 0xcb, 0x2f, 0xec, 0x85, 0xcb, 0x31, 0xeb, 0x86, 0xcb, 0x32, 0xec, - 0x85, 0xcb, 0x34, 0xeb, 0x86, 0xcb, 0x35, 0xe9, 0x86, 0xcb, 0x37, 0xeb, - 0x86, 0xcb, 0x38, 0xe9, 0x86, 0xcb, 0x3a, 0xeb, 0x86, 0xcb, 0x3b, 0xe9, - 0x86, 0xcb, 0x3c, 0xeb, 0x86, 0xcb, 0x3e, 0xe9, 0x86, 0xcb, 0x3f, 0xeb, - 0x86, 0xcb, 0x40, 0xe9, 0x86, 0xcb, 0x42, 0xeb, 0x86, 0xcb, 0x43, 0xe9, - 0x86, 0xcb, 0x44, 0xeb, 0x86, 0xcb, 0x45, 0xe9, 0x86, 0xcb, 0x46, 0xeb, - 0x86, 0xcb, 0x47, 0xe9, 0x86, 0xcb, 0x48, 0xeb, 0x86, 0xcb, 0x49, 0xe9, - 0x86, 0xcb, 0x4a, 0xeb, 0x86, 0xcb, 0x4b, 0xe9, 0x86, 0xcb, 0x4c, 0xeb, - 0x86, 0xcb, 0x4d, 0xe9, 0x86, 0xcb, 0x4e, 0xeb, 0x86, 0xcb, 0x4f, 0xe9, - 0x86, 0xcb, 0x50, 0xeb, 0x86, 0xcb, 0x51, 0xe9, 0x86, 0xcb, 0x52, 0xeb, - 0x86, 0xcb, 0x53, 0xe9, 0x86, 0xcb, 0x54, 0xeb, 0x86, 0xcb, 0x55, 0xe9, - 0x86, 0xcb, 0x56, 0xeb, 0x86, 0xcb, 0x57, 0xe9, 0x86, 0xcb, 0x58, 0xeb, - 0x86, 0xcb, 0x58, 0xe9, 0x86, 0xcb, 0x59, 0xeb, 0x86, 0xcb, 0x5a, 0xe9, - 0x86, 0xcb, 0x5b, 0xeb, 0x86, 0xcb, 0x5c, 0xe9, 0x86, 0xcb, 0x5d, 0xeb, - 0x86, 0xcb, 0x5d, 0xe9, 0x86, 0xcb, 0x5e, 0xeb, 0x86, 0xcb, 0x5f, 0xe9, - 0x86, 0xcb, 0x60, 0xe7, 0x87, 0xcb, 0x60, 0xe9, 0x86, 0xcb, 0x61, 0xe7, - 0x87, 0xcb, 0x62, 0xe9, 0x86, 0xcb, 0x63, 0xe7, 0x87, 0xcb, 0x63, 0xe9, - 0x86, 0xcb, 0x64, 0xe7, 0x87, 0xcb, 0x65, 0xe9, 0x86, 0xcb, 0x66, 0xe7, - 0x87, 0xcb, 0x66, 0xe9, 0x86, 0xcb, 0x67, 0xe7, 0x87, 0xcb, 0x68, 0xe9, - 0x86, 0xcb, 0x68, 0xe7, 0x87, 0xcb, 0x69, 0xe9, 0x86, 0xcb, 0x6a, 0xe7, - 0x87, 0xcb, 0x6a, 0xe9, 0x86, 0xcb, 0x6b, 0xe7, 0x87, 0xcb, 0x6c, 0xe9, - 0x86, 0xcb, 0x6c, 0xe7, 0x87, 0xcb, 0x6d, 0xe9, 0x86, 0xcb, 0x6e, 0xe7, - 0x87, 0xcb, 0x6e, 0xe9, 0x86, 0xcb, 0x6f, 0xe7, 0x87, 0xcb, 0x70, 0xe9, - 0x86, 0xcb, 0x70, 0xe7, 0x87, 0xcb, 0x71, 0xe9, 0x86, 0xcb, 0x72, 0xe7, - 0x87, 0xcb, 0x72, 0xe9, 0x86, 0xcb, 0x73, 0xe7, 0x87, 0xcb, 0x73, 0xe9, - 0x86, 0xcb, 0x74, 0xe7, 0x87, 0xcb, 0x75, 0xe9, 0x86, 0xcb, 0x75, 0xe7, - 0x87, 0xcb, 0x76, 0xe9, 0x86, 0xcb, 0x76, 0xe7, 0x87, 0xcb, 0x77, 0xe9, - 0x86, 0xcb, 0x78, 0xe7, 0x87, 0xcb, 0x78, 0xe9, 0x86, 0xcb, 0x79, 0xe7, - 0x87, 0xcb, 0x79, 0xe9, 0x86, 0xcb, 0x7a, 0xe7, 0x87, 0xcb, 0x7a, 0xe9, - 0x86, 0xcb, 0x7b, 0xe7, 0x87, 0xcb, 0x7c, 0xe9, 0x86, 0xcb, 0x7c, 0xe7, - 0x87, 0xcb, 0x7d, 0xe9, 0x86, 0xcb, 0x7d, 0xe7, 0x87, 0xcb, 0x7e, 0xe9, - 0x86, 0xcb, 0x7e, 0xe7, 0x87, 0xcb, 0x7f, 0xe7, 0x87, 0xcb, 0x7f, 0xe7, - 0x87, 0xcb, 0x80, 0xe7, 0x87, 0xcb, 0x81, 0xe7, 0x87, 0xcb, 0x81, 0xe7, - 0x87, 0xcb, 0x82, 0xe7, 0x87, 0xcb, 0x82, 0xe7, 0x87, 0xcb, 0x83, 0xe7, - 0x87, 0xcb, 0x83, 0xe7, 0x87, 0xcb, 0x84, 0xe7, 0x87, 0xcb, 0x84, 0xe7, - 0x87, 0xcb, 0x85, 0xe7, 0x87, 0xcb, 0x85, 0xe7, 0x87, 0xcb, 0x86, 0xe7, - 0x87, 0xcb, 0x86, 0xe7, 0x87, 0xcb, 0x87, 0xe7, 0x87, 0xcb, 0x86, 0xe7, - 0x87, 0xcb, 0x87, 0xe7, 0x88, 0xcb, 0x86, 0xe7, 0x88, 0xcb, 0x87, 0xe7, - 0x89, 0xcb, 0x86, 0xe7, 0x89, 0xcb, 0x87, 0xe7, 0x8a, 0xcb, 0x86, 0xe7, - 0x8a, 0xcb, 0x87, 0xe7, 0x8b, 0xcb, 0x87, 0xe7, 0x8b, 0xc8, 0x87, 0xe7, - 0x8c, 0xcb, 0x87, 0xe7, 0x8c, 0xc8, 0x87, 0xe7, 0x8d, 0xcb, 0x87, 0xe7, - 0x8d, 0xc8, 0x87, 0xe7, 0x8e, 0xcb, 0x87, 0xe7, 0x8e, 0xc8, 0x87, 0xe7, - 0x8e, 0xcb, 0x87, 0xe7, 0x8f, 0xc8, 0x87, 0xe7, 0x8f, 0xcb, 0x87, 0xe7, - 0x90, 0xc8, 0x87, 0xe7, 0x90, 0xcb, 0x87, 0xe7, 0x91, 0xc8, 0x87, 0xe7, - 0x91, 0xcb, 0x87, 0xe7, 0x92, 0xc8, 0x87, 0xe7, 0x92, 0xcb, 0x87, 0xe7, - 0x93, 0xc8, 0x87, 0xe7, 0x93, 0xcb, 0x87, 0xe7, 0x94, 0xc8, 0x87, 0xe7, - 0x94, 0xcb, 0x87, 0xe7, 0x94, 0xc8, 0x87, 0xe7, 0x95, 0xcb, 0x87, 0xe7, - 0x95, 0xc8, 0x87, 0xe7, 0x96, 0xcb, 0x87, 0xe7, 0x96, 0xc8, 0x87, 0xe7, - 0x97, 0xcb, 0x87, 0xe7, 0x97, 0xc8, 0x87, 0xe7, 0x98, 0xcb, 0x87, 0xe7, - 0x98, 0xc8, 0x87, 0xe7, 0x98, 0xcb, 0x87, 0xe7, 0x99, 0xc8, 0x87, 0xe7, - 0x99, 0xcb, 0x87, 0xe7, 0x9a, 0xc8, 0x87, 0xe7, 0x9a, 0xcb, 0x87, 0xe7, - 0x9a, 0xc8, 0x87, 0xe7, 0x9b, 0xcb, 0x87, 0xe7, 0x9b, 0xc8, 0x87, 0xe7, - 0x9c, 0xcb, 0x87, 0xe7, 0x9c, 0xc8, 0x87, 0xe7, 0x9d, 0xcb, 0x87, 0xe7, - 0x9d, 0xc8, 0x88, 0xe7, 0x9d, 0xc4, 0x87, 0xe7, 0x9e, 0xc8, 0x88, 0xe7, - 0x9e, 0xc4, 0x87, 0xe7, 0x9f, 0xc8, 0x88, 0xe7, 0x9f, 0xc4, 0x87, 0xe7, - 0x9f, 0xc8, 0x88, 0xe7, 0xa0, 0xc4, 0x87, 0xe7, 0xa0, 0xc8, 0x88, 0xe7, - 0xa1, 0xc4, 0x87, 0xe7, 0xa1, 0xc8, 0x88, 0xe7, 0xa1, 0xc4, 0x87, 0xe7, - 0xa2, 0xc8, 0x88, 0xe7, 0xa2, 0xc4, 0x87, 0xe7, 0xa3, 0xc8, 0x88, 0xe7, - 0xa3, 0xc4, 0x87, 0xe7, 0xa3, 0xc8, 0x88, 0xe7, 0xa4, 0xc4, 0x87, 0xe7, - 0xa4, 0xc8, 0x88, 0xe7, 0xa5, 0xc4, 0x87, 0xe7, 0xa5, 0xc8, 0xa2, 0xe7, - 0xa5, 0xed, 0xa2, 0xe7, 0xa6, 0xed, 0xa2, 0xe7, 0xa6, 0xed, 0xa2, 0xe7, - 0xa6, 0xed, 0xa2, 0xe7, 0xa7, 0xed, 0xa2, 0xe7, 0xa7, 0xed, 0xa2, 0xe7, - 0xa8, 0xed, 0xa2, 0xe7, 0xa8, 0xed, 0xa2, 0xe7, 0xa8, 0xed, 0xa6, 0xe7, - 0xa9, 0xee, 0xa2, 0xe7, 0xa9, 0xed, 0xa6, 0xe7, 0xaa, 0xee, 0xa6, 0xe7, - 0xaa, 0xee, 0xa6, 0xe7, 0xaa, 0xee, 0xa6, 0xe7, 0xab, 0xee, 0xa6, 0xe7, - 0xab, 0xee, 0xa6, 0xe7, 0xab, 0xee, 0xa6, 0xe7, 0xac, 0xee, 0xa6, 0xe7, - 0xac, 0xee, 0xa6, 0xe7, 0xac, 0xee, 0xab, 0xe7, 0xad, 0xef, 0xa6, 0xe7, - 0xad, 0xee, 0xab, 0xe7, 0xae, 0xef, 0xaa, 0xe7, 0xae, 0xef, 0xab, 0xe7, - 0xae, 0xef, 0xaa, 0xe7, 0xaf, 0xef, 0xab, 0xe7, 0xaf, 0xef, 0xaa, 0xe7, - 0xaf, 0xef, 0xab, 0xe7, 0xb0, 0xef, 0xaa, 0xe7, 0xb0, 0xef, 0xab, 0xe7, - 0xb0, 0xef, 0xaa, 0xe7, 0xb1, 0xef, 0xab, 0xe7, 0xb1, 0xef, 0xaf, 0xe7, - 0xb2, 0xf0, 0xae, 0xe7, 0xb2, 0xf0, 0xaf, 0xe7, 0xb2, 0xf0, 0xae, 0xe7, - 0xb3, 0xf0, 0xaf, 0xe7, 0xb3, 0xf0, 0xae, 0xe7, 0xb3, 0xf0, 0xaf, 0xe7, - 0xb4, 0xf0, 0xae, 0xe7, 0xb4, 0xf0, 0xaf, 0xe7, 0xb4, 0xf0, 0xae, 0xe7, - 0xb5, 0xf0, 0xaf, 0xe7, 0xb5, 0xf0, 0xb3, 0xe7, 0xb5, 0xf1, 0xce, 0xe7, - 0xb6, 0xd0, 0xcd, 0xe7, 0xb6, 0xd2, 0xce, 0xe7, 0xb6, 0xd0, 0xcd, 0xe7, - 0xb7, 0xd2, 0xce, 0xe7, 0xb7, 0xd0, 0xcd, 0xe7, 0xb7, 0xd2, 0xce, 0xe7, - 0xb8, 0xd0, 0xcd, 0xe7, 0xb8, 0xd2, 0xce, 0xe7, 0xb8, 0xd0, 0xcd, 0xe7, - 0xb9, 0xd2, 0xce, 0xe7, 0xb9, 0xd0, 0xcd, 0xe7, 0xb9, 0xd2, 0xce, 0xe7, - 0xba, 0xd0, 0xcd, 0xe7, 0xba, 0xd2, 0xce, 0xe7, 0xba, 0xd0, 0xcd, 0xe7, - 0xbb, 0xd2, 0xce, 0xe7, 0xbb, 0xd0, 0xcd, 0xe7, 0xbb, 0xd2, 0xce, 0xe7, - 0xbc, 0xd0, 0xcd, 0xe7, 0xbc, 0xd2, 0xce, 0xe7, 0xbc, 0xd0, 0xcd, 0xe7, - 0xbd, 0xd2, 0xce, 0xe7, 0xbd, 0xd0, 0xcd, 0xe7, 0xbd, 0xd2, 0xce, 0xe7, - 0xbe, 0xd0, 0xcd, 0xe7, 0xbe, 0xd2, 0xce, 0xe7, 0xbe, 0xd0, 0xcd, 0xe7, - 0xbf, 0xd2, 0xce, 0xe7, 0xbf, 0xd0, 0xcd, 0xe7, 0xbf, 0xd2, 0xce, 0xe7, - 0xc0, 0xd0, 0xcd, 0xe7, 0xc0, 0xd2, 0xce, 0xe7, 0xc0, 0xd0, 0xce, 0xe7, - 0xc1, 0xcd, 0xce, 0xe7, 0xc1, 0xd0, 0xce, 0xe7, 0xc1, 0xcd, 0xce, 0xe7, - 0xc1, 0xd0, 0xce, 0xe7, 0xc2, 0xcd, 0xce, 0xe7, 0xc2, 0xd0, 0xce, 0xe7, - 0xc2, 0xcd, 0xce, 0xe7, 0xc3, 0xd0, 0xce, 0xe7, 0xc3, 0xcd, 0xce, 0xe7, - 0xc3, 0xd0, 0xce, 0xe7, 0xc4, 0xcd, 0xce, 0xe7, 0xc4, 0xd0, 0xce, 0xe7, - 0xc4, 0xcd, 0xce, 0xe7, 0xc5, 0xd0, 0xce, 0xe7, 0xc5, 0xcd, 0xce, 0xe7, - 0xc5, 0xd0, 0xce, 0xe7, 0xc6, 0xcd, 0xce, 0xe7, 0xc6, 0xd0, 0xce, 0xe7, - 0xc6, 0xcd, 0xce, 0xe7, 0xc6, 0xd0, 0xce, 0xe7, 0xc7, 0xcd, 0xce, 0xe7, - 0xc7, 0xcb, 0xce, 0xe7, 0xc7, 0xcd, 0xce, 0xe7, 0xc8, 0xcb, 0xce, 0xe7, - 0xc8, 0xcd, 0xce, 0xe7, 0xc8, 0xcb, 0xce, 0xe7, 0xc9, 0xcd, 0xce, 0xe7, - 0xc9, 0xcb, 0xce, 0xe7, 0xc9, 0xcd, 0xce, 0xe7, 0xc9, 0xcb, 0xce, 0xe7, - 0xca, 0xcd, 0xce, 0xe7, 0xca, 0xcb, 0xce, 0xe7, 0xca, 0xcd, 0xce, 0xe7, - 0xcb, 0xcb, 0xce, 0xe7, 0xcb, 0xcd, 0xce, 0xe7, 0xcb, 0xcb, 0xce, 0xe7, - 0xcc, 0xcd, 0xce, 0xe7, 0xcc, 0xcb, 0xce, 0xe7, 0xcc, 0xcd, 0xce, 0xe7, - 0xcc, 0xcb, 0xce, 0xe7, 0xcd, 0xcd, 0xce, 0xe7, 0xcd, 0xcb, 0xce, 0xe7, - 0xcd, 0xcb, 0xce, 0xe7, 0xce, 0xcb, 0xce, 0xe7, 0xce, 0xcb, 0xce, 0xe7, - 0xce, 0xcb, 0xce, 0xe7, 0xce, 0xcb, 0xcf, 0xe7, 0xce, 0xcb, 0xcf, 0xe7, - 0xce, 0xcb, 0xcf, 0xe6, 0xce, 0xcb, 0xd0, 0xe7, 0xce, 0xcb, 0xd0, 0xe6, - 0xce, 0xcb, 0xd0, 0xe7, 0xce, 0xcb, 0xd0, 0xe6, 0xce, 0xcb, 0xd1, 0xe7, - 0xce, 0xcb, 0xd1, 0xe6, 0xce, 0xcb, 0xd1, 0xe7, 0xce, 0xcb, 0xd2, 0xe6, - 0xce, 0xcb, 0xd2, 0xe7, 0xce, 0xcb, 0xd2, 0xe6, 0xce, 0xcb, 0xd2, 0xe7, - 0xce, 0xcb, 0xd3, 0xe6, 0xce, 0xcb, 0xd3, 0xe7, 0xce, 0xcb, 0xd3, 0xe6, - 0xce, 0xcb, 0xd4, 0xe7, 0xce, 0xcb, 0xd4, 0xe6, 0xce, 0xcb, 0xd4, 0xe7, - 0xce, 0xcb, 0xd4, 0xe6, 0xce, 0xcb, 0xd5, 0xe7, 0xce, 0xcb, 0xd5, 0xe6, - 0xce, 0xcb, 0xd5, 0xe4, 0xce, 0xcb, 0xd6, 0xe6, 0xce, 0xcb, 0xd6, 0xe4, - 0xce, 0xcb, 0xd6, 0xe6, 0xce, 0xcb, 0xd6, 0xe4, 0xce, 0xcb, 0xd7, 0xe6, - 0xce, 0xcb, 0xd7, 0xe4, 0xce, 0xcb, 0xd7, 0xe6, 0xce, 0xcb, 0xd7, 0xe4, - 0xce, 0xcb, 0xd8, 0xe6, 0xce, 0xcb, 0xd8, 0xe4, 0xce, 0xcb, 0xd8, 0xe6, - 0xce, 0xcb, 0xd9, 0xe4, 0xce, 0xcb, 0xd9, 0xe6, 0xce, 0xcb, 0xd9, 0xe4, - 0xce, 0xcb, 0xd9, 0xe6, 0xce, 0xcb, 0xda, 0xe4, 0xce, 0xcb, 0xda, 0xe6, - 0xce, 0xcb, 0xda, 0xe4, 0xce, 0xcb, 0xda, 0xe6, 0xce, 0xcb, 0xdb, 0xe4, - 0xce, 0xcb, 0xdb, 0xe9, 0xe6, 0xcb, 0xdb, 0xe7, 0xe7, 0xcb, 0xdb, 0xe9, - 0xe6, 0xcb, 0xdc, 0xe7, 0xe7, 0xcb, 0xdc, 0xe9, 0xe6, 0xcb, 0xdc, 0xe7, - 0xe7, 0xcb, 0xdd, 0xe9, 0xe6, 0xcb, 0xdd, 0xe7, 0xe7, 0xcb, 0xdd, 0xe9, - 0xe6, 0xcb, 0xdd, 0xe7, 0xe7, 0xcb, 0xde, 0xe9, 0xe6, 0xcb, 0xde, 0xe7, - 0xe7, 0xcb, 0xde, 0xe9, 0xe6, 0xcb, 0xde, 0xe7, 0xe7, 0xcb, 0xdf, 0xe9, - 0xe6, 0xcb, 0xdf, 0xe7, 0xe7, 0xcb, 0xdf, 0xe9, 0xe6, 0xcb, 0xdf, 0xe7, - 0xe7, 0xcb, 0xe0, 0xe9, 0xe6, 0xcb, 0xe0, 0xe7, 0xe7, 0xcb, 0xe0, 0xe9, - 0xe6, 0xcb, 0xe1, 0xe7, 0xe7, 0xcb, 0xe1, 0xe9, 0xe6, 0xcb, 0xe1, 0xe7, - 0xe7, 0xcb, 0xe1, 0xe9, 0xe6, 0xcb, 0xe2, 0xe7, 0xe7, 0xcb, 0xe2, 0xe9, - 0xe6, 0xcb, 0xe2, 0xe7, 0xe7, 0xcb, 0xe2, 0xe9, 0xe6, 0xcb, 0xe3, 0xe7, - 0xe7, 0xcb, 0xe3, 0xe7, 0xe7, 0xcb, 0xe3, 0xe7, 0xe7, 0xcb, 0xe3, 0xe7, - 0xe7, 0xcb, 0xe4, 0xe7, 0xe7, 0xcb, 0xe4, 0xe7, 0xe7, 0xcb, 0xe4, 0xe7, - 0xe7, 0xcb, 0xe4, 0xe7, 0xe7, 0xcb, 0xe5, 0xe7, 0xe7, 0xcb, 0xe5, 0xe7, - 0xe7, 0xcb, 0xe5, 0xe7, 0xe7, 0xcb, 0xe5, 0xe7, 0xe7, 0xcb, 0xe6, 0xe7, - 0xe7, 0xcb, 0xe6, 0xe7, 0xe7, 0xcb, 0xe6, 0xe7, 0xe7, 0xcb, 0xe6, 0xe7, - 0xe7, 0xcb, 0xe7, 0xe7, 0xe7, 0xcb, 0xe6, 0xe7, 0xe7, 0xcb, 0xe7, 0xe7, - 0xe7, 0xcb, 0xe6, 0xe7, 0xe7, 0xcb, 0xe7, 0xe7, 0xe8, 0xcb, 0xe6, 0xe7, - 0xe8, 0xcb, 0xe7, 0xe7, 0xe8, 0xcb, 0xe6, 0xe7, 0xe8, 0xcb, 0xe7, 0xe7, - 0xe9, 0xcb, 0xeb, 0xe7, 0xe9, 0xcb, 0xeb, 0xe7, 0xe9, 0xcc, 0xeb, 0xe7, - 0xe9, 0xcb, 0xeb, 0xe7, 0xea, 0xcc, 0xeb, 0xe7, 0xea, 0xcb, 0xeb, 0xe7, - 0xea, 0xcc, 0xeb, 0xe7, 0xea, 0xcb, 0xeb, 0xe7, 0xeb, 0xcb, 0xeb, 0xe7, - 0xea, 0xcb, 0xeb, 0xe7, 0xeb, 0xcb, 0xeb, 0xe7, 0xea, 0xcb, 0xec, 0xe7, - 0xeb, 0xcb, 0xec, 0xe7, 0xea, 0xcb, 0xec, 0xe7, 0xeb, 0xcb, 0xec, 0xe7, - 0xea, 0xcb, 0xec, 0xe7, 0xeb, 0xcb, 0xed, 0xe7, 0xea, 0xcb, 0xed, 0xe7, - 0xeb, 0xcb, 0xed, 0xe7, 0xea, 0xcb, 0xed, 0xe7, 0xeb, 0xcb, 0xee, 0xe7, - 0xea, 0xcb, 0xee, 0xe7, 0xeb, 0xcb, 0xee, 0xe7, 0xea, 0xcb, 0xee, 0xe7, - 0xeb, 0xcb, 0xef, 0xe5, 0xeb, 0xcb, 0xef, 0xe7, 0xeb, 0xcb, 0xef, 0xe5, - 0xeb, 0xcb, 0xef, 0xec, 0xef, 0xcb, 0xf0, 0xec, 0xf0, 0xcb, 0xf0, 0xec, - 0xf0, 0xcb, 0xf0, 0xec, 0xf0, 0xcb, 0xf0, 0xec, 0xf0, 0xcb, 0xf1, 0xec, - 0xf0, 0xcb, 0xf1, 0xec, 0xf0, 0xcb, 0xf1, 0xec, 0xf0, 0xcb, 0xf1, 0xec, - 0xf0, 0xcb, 0xf2, 0xec, 0xf0, 0xcb, 0xf2, 0xec, 0xf0, 0xcb, 0xf2, 0xec, - 0xf0, 0xcb, 0xf2, 0xec, 0xf1, 0xcb, 0xf2, 0xec, 0xf0, 0xcb, 0xf3, 0xec, - 0xf1, 0xcb, 0xf3, 0xec, 0xf0, 0xcb, 0xf3, 0xec, 0xf1, 0xcb, 0xf3, 0xec, - 0xf1, 0xcb, 0xf4, 0xec, 0xf1, 0xcb, 0xf4, 0xec, 0xf1, 0xcb, 0xf4, 0xec, - 0xf1, 0xcb, 0xf4, 0xec, 0xf1, 0xcb, 0xf5, 0xec, 0xf1, 0xcb, 0xf5, 0xec, - 0xf1, 0xcb, 0xf5, 0xec, 0xf1, 0xcb, 0xf5, 0xec, 0xf1, 0xcb, 0xf5, 0xec, - 0xf1, 0xcb, 0xf6, 0xec, 0xf1, 0xcb, 0xf6, 0xec, 0xf1, 0xcb, 0xf6, 0xec, - 0xf1, 0xcb, 0xf6, 0xec, 0xf1, 0xcb, 0xf7, 0xec, 0xf1, 0xcb, 0xf7, 0xec, - 0xf1, 0xcb, 0xf7, 0xec, 0xf1, 0xcb, 0xf7, 0xec, 0xf1, 0xcb, 0xf8, 0xec, - 0xf1, 0xcb, 0xf8, 0xec, 0xf1, 0xcb, 0xf8, 0xec, 0xf1, 0xcb, 0xf8, 0xec, - 0xf1, 0xcb, 0xf8, 0xec, 0xf1, 0xcb, 0xf9, 0xec, 0xf1, 0xcb, 0xf9, 0xec, - 0xf1, 0xcb, 0xf9, 0xec, 0xf1, 0xcb, 0xf9, 0xec, 0xf1, 0xcb, 0xfa, 0xec, - 0xf1, 0xcb, 0xfa, 0xec, 0xf1, 0xcb, 0xfa, 0xec, 0xf1, 0xcb, 0xfa, 0xec, - 0xf1, 0xcb, 0xfa, 0xec, 0xf1, 0xcb, 0xfb, 0xec, 0xf1, 0xcb, 0xfb, 0xec, - 0xf1, 0xcb, 0xfb, 0xec, 0xf1, 0xcb, 0xfb, 0xec, 0xf1, 0xcb, 0xfc, 0xec, - 0xf1, 0xcb, 0xfc, 0xec, 0xf1, 0xcb, 0xfc, 0xec, 0xf1, 0xcb, 0xfc, 0xec, - 0xf1, 0xcb, 0xfc, 0xec, 0xf1, 0xcb, 0xfd, 0xec, 0xf1, 0xcb, 0xfd, 0xec, - 0xf1, 0xcb, 0xfd, 0xec, 0xf1, 0xcb, 0xfd, 0xec, 0xf1, 0xcb, 0xfe, 0xec, - 0xf1, 0xcb, 0xfe, 0xec, 0xf1, 0xcb, 0xfe, 0xec, 0xf1, 0xcb, 0xfe, 0xec, - 0xf1, 0xcb, 0xfe, 0xec, 0xf1, 0xcb, 0xff, 0xec, 0xf1, 0xcb, 0xff, 0xec, - 0xf1, 0xcb, 0x03, 0xec, 0x85, 0xcc, 0x0a, 0xec, 0x85, 0xcc, 0x0f, 0xec, - 0x85, 0xcc, 0x14, 0xec, 0x85, 0xcc, 0x17, 0xec, 0x85, 0xcc, 0x1b, 0xec, - 0x85, 0xcc, 0x1e, 0xec, 0x85, 0xcc, 0x20, 0xeb, 0x86, 0xcc, 0x23, 0xec, - 0x85, 0xcc, 0x25, 0xeb, 0x86, 0xcc, 0x27, 0xec, 0x85, 0xcc, 0x29, 0xeb, - 0x86, 0xcc, 0x2b, 0xec, 0x85, 0xcc, 0x2d, 0xeb, 0x86, 0xcc, 0x2f, 0xec, - 0x85, 0xcc, 0x31, 0xeb, 0x86, 0xcc, 0x32, 0xec, 0x85, 0xcc, 0x34, 0xeb, - 0x86, 0xcc, 0x35, 0xec, 0x85, 0xcc, 0x37, 0xeb, 0x86, 0xcc, 0x38, 0xec, - 0x85, 0xcc, 0x3a, 0xeb, 0x86, 0xcc, 0x3b, 0xec, 0x85, 0xcc, 0x3c, 0xeb, - 0x86, 0xcc, 0x3e, 0xec, 0x85, 0xcc, 0x3f, 0xeb, 0x86, 0xcc, 0x40, 0xec, - 0x85, 0xcc, 0x42, 0xeb, 0x86, 0xcc, 0x43, 0xec, 0x85, 0xcc, 0x44, 0xeb, - 0x86, 0xcc, 0x45, 0xec, 0x85, 0xcc, 0x46, 0xeb, 0x86, 0xcc, 0x47, 0xec, - 0x85, 0xcc, 0x48, 0xeb, 0x86, 0xcc, 0x49, 0xec, 0x85, 0xcc, 0x4a, 0xeb, - 0x86, 0xcc, 0x4b, 0xec, 0x85, 0xcc, 0x4c, 0xeb, 0x86, 0xcc, 0x4d, 0xe9, - 0x86, 0xcc, 0x4e, 0xeb, 0x86, 0xcc, 0x4f, 0xe9, 0x86, 0xcc, 0x50, 0xeb, - 0x86, 0xcc, 0x51, 0xe9, 0x86, 0xcc, 0x52, 0xeb, 0x86, 0xcc, 0x53, 0xe9, - 0x86, 0xcc, 0x54, 0xeb, 0x86, 0xcc, 0x55, 0xe9, 0x86, 0xcc, 0x56, 0xeb, - 0x86, 0xcc, 0x57, 0xe9, 0x86, 0xcc, 0x58, 0xeb, 0x86, 0xcc, 0x58, 0xe9, - 0x86, 0xcc, 0x59, 0xeb, 0x86, 0xcc, 0x5a, 0xe9, 0x86, 0xcc, 0x5b, 0xeb, - 0x86, 0xcc, 0x5c, 0xe9, 0x86, 0xcc, 0x5d, 0xeb, 0x86, 0xcc, 0x5d, 0xe9, - 0x86, 0xcc, 0x5e, 0xeb, 0x86, 0xcc, 0x5f, 0xe9, 0x86, 0xcc, 0x60, 0xeb, - 0x86, 0xcc, 0x60, 0xe9, 0x86, 0xcc, 0x61, 0xeb, 0x86, 0xcc, 0x62, 0xe9, - 0x86, 0xcc, 0x63, 0xeb, 0x86, 0xcc, 0x63, 0xe9, 0x86, 0xcc, 0x64, 0xeb, - 0x86, 0xcc, 0x65, 0xe9, 0x86, 0xcc, 0x66, 0xeb, 0x86, 0xcc, 0x66, 0xe9, - 0x86, 0xcc, 0x67, 0xeb, 0x86, 0xcc, 0x68, 0xe9, 0x86, 0xcc, 0x68, 0xeb, - 0x86, 0xcc, 0x69, 0xe9, 0x86, 0xcc, 0x6a, 0xeb, 0x86, 0xcc, 0x6a, 0xe9, - 0x86, 0xcc, 0x6b, 0xe8, 0x87, 0xcc, 0x6c, 0xe9, 0x86, 0xcc, 0x6c, 0xe8, - 0x87, 0xcc, 0x6d, 0xe9, 0x86, 0xcc, 0x6e, 0xe8, 0x87, 0xcc, 0x6e, 0xe9, - 0x86, 0xcc, 0x6f, 0xe8, 0x87, 0xcc, 0x70, 0xe9, 0x86, 0xcc, 0x70, 0xe8, - 0x87, 0xcc, 0x71, 0xe9, 0x86, 0xcc, 0x72, 0xe8, 0x87, 0xcc, 0x72, 0xe9, - 0x86, 0xcc, 0x73, 0xe8, 0x87, 0xcc, 0x73, 0xe9, 0x86, 0xcc, 0x74, 0xe8, - 0x87, 0xcc, 0x75, 0xe9, 0x86, 0xcc, 0x75, 0xe8, 0x87, 0xcc, 0x76, 0xe9, - 0x86, 0xcc, 0x76, 0xe8, 0x87, 0xcc, 0x77, 0xe9, 0x86, 0xcc, 0x78, 0xe8, - 0x87, 0xcc, 0x78, 0xe9, 0x86, 0xcc, 0x79, 0xe8, 0x87, 0xcc, 0x79, 0xe9, - 0x86, 0xcc, 0x7a, 0xe8, 0x87, 0xcc, 0x7a, 0xe9, 0x86, 0xcc, 0x7b, 0xe8, - 0x87, 0xcc, 0x7c, 0xe9, 0x86, 0xcc, 0x7c, 0xe8, 0x87, 0xcc, 0x7d, 0xe9, - 0x86, 0xcc, 0x7d, 0xe8, 0x87, 0xcc, 0x7e, 0xe9, 0x86, 0xcc, 0x7e, 0xe8, - 0x87, 0xcc, 0x7f, 0xe7, 0x87, 0xcc, 0x7f, 0xe8, 0x87, 0xcc, 0x80, 0xe7, - 0x87, 0xcc, 0x81, 0xe8, 0x87, 0xcc, 0x81, 0xe7, 0x87, 0xcc, 0x82, 0xe8, - 0x87, 0xcc, 0x82, 0xe7, 0x87, 0xcc, 0x83, 0xe8, 0x87, 0xcc, 0x83, 0xe7, - 0x87, 0xcc, 0x84, 0xe8, 0x87, 0xcc, 0x84, 0xe7, 0x87, 0xcc, 0x85, 0xe8, - 0x87, 0xcc, 0x85, 0xe7, 0x87, 0xcc, 0x86, 0xe8, 0x87, 0xcc, 0x86, 0xe7, - 0x87, 0xcc, 0x87, 0xe8, 0x87, 0xcc, 0x86, 0xe7, 0x87, 0xcc, 0x87, 0xe7, - 0x88, 0xcc, 0x86, 0xe7, 0x88, 0xcc, 0x87, 0xe7, 0x89, 0xcc, 0x86, 0xe7, - 0x89, 0xcc, 0x87, 0xe7, 0x8a, 0xcc, 0x86, 0xe7, 0x8a, 0xcc, 0x87, 0xe7, - 0x8b, 0xcc, 0x86, 0xe7, 0x8b, 0xcc, 0x87, 0xe7, 0x8c, 0xcc, 0x86, 0xe7, - 0x8c, 0xcc, 0x87, 0xe7, 0x8d, 0xcc, 0x86, 0xe7, 0x8d, 0xcc, 0x87, 0xe7, - 0x8e, 0xcc, 0x86, 0xe7, 0x8e, 0xcc, 0x87, 0xe7, 0x8e, 0xcc, 0x87, 0xe7, - 0x8f, 0xc8, 0x87, 0xe7, 0x8f, 0xcc, 0x87, 0xe7, 0x90, 0xc8, 0x87, 0xe7, - 0x90, 0xcc, 0x87, 0xe7, 0x91, 0xc8, 0x87, 0xe7, 0x91, 0xcc, 0x87, 0xe7, - 0x92, 0xc8, 0x87, 0xe7, 0x92, 0xcc, 0x87, 0xe7, 0x93, 0xc8, 0x87, 0xe7, - 0x93, 0xcc, 0x87, 0xe7, 0x94, 0xc8, 0x87, 0xe7, 0x94, 0xcc, 0x87, 0xe7, - 0x94, 0xc8, 0x87, 0xe7, 0x95, 0xcc, 0x87, 0xe7, 0x95, 0xc8, 0x87, 0xe7, - 0x96, 0xcc, 0x87, 0xe7, 0x96, 0xc8, 0x87, 0xe7, 0x97, 0xcc, 0x87, 0xe7, - 0x97, 0xc8, 0x87, 0xe7, 0x98, 0xcc, 0x87, 0xe7, 0x98, 0xc8, 0x87, 0xe7, - 0x98, 0xcc, 0x87, 0xe7, 0x99, 0xc8, 0x87, 0xe7, 0x99, 0xcc, 0x87, 0xe7, - 0x9a, 0xc8, 0x87, 0xe7, 0x9a, 0xcc, 0x87, 0xe7, 0x9a, 0xc8, 0x87, 0xe7, - 0x9b, 0xcc, 0x87, 0xe7, 0x9b, 0xc8, 0x87, 0xe7, 0x9c, 0xcc, 0x87, 0xe7, - 0x9c, 0xc8, 0x87, 0xe7, 0x9d, 0xcc, 0x87, 0xe7, 0x9d, 0xc8, 0x88, 0xe7, - 0x9d, 0xc5, 0x87, 0xe7, 0x9e, 0xc8, 0x88, 0xe7, 0x9e, 0xc5, 0x87, 0xe7, - 0x9f, 0xc8, 0x88, 0xe7, 0x9f, 0xc5, 0x87, 0xe7, 0x9f, 0xc8, 0x88, 0xe7, - 0xa0, 0xc5, 0x87, 0xe7, 0xa0, 0xc8, 0x88, 0xe7, 0xa1, 0xc5, 0x87, 0xe7, - 0xa1, 0xc8, 0x88, 0xe7, 0xa1, 0xc5, 0x87, 0xe7, 0xa2, 0xc8, 0x88, 0xe7, - 0xa2, 0xc5, 0x87, 0xe7, 0xa3, 0xc8, 0x88, 0xe7, 0xa3, 0xc5, 0x87, 0xe7, - 0xa3, 0xc8, 0x88, 0xe7, 0xa4, 0xc5, 0x87, 0xe7, 0xa4, 0xc8, 0xa0, 0xe7, - 0xa5, 0xed, 0x9f, 0xe7, 0xa5, 0xed, 0xa0, 0xe7, 0xa5, 0xed, 0x9f, 0xe7, - 0xa6, 0xed, 0xa0, 0xe7, 0xa6, 0xed, 0xa4, 0xe7, 0xa6, 0xee, 0xa0, 0xe7, - 0xa7, 0xed, 0xa4, 0xe7, 0xa7, 0xee, 0xa4, 0xe7, 0xa8, 0xee, 0xa4, 0xe7, - 0xa8, 0xee, 0xa4, 0xe7, 0xa8, 0xee, 0xa4, 0xe7, 0xa9, 0xee, 0xa4, 0xe7, - 0xa9, 0xee, 0xa4, 0xe7, 0xaa, 0xee, 0xa4, 0xe7, 0xaa, 0xee, 0xa4, 0xe7, - 0xaa, 0xee, 0xa8, 0xe7, 0xab, 0xef, 0xa4, 0xe7, 0xab, 0xee, 0xa8, 0xe7, - 0xab, 0xef, 0xa8, 0xe7, 0xac, 0xef, 0xa8, 0xe7, 0xac, 0xef, 0xa8, 0xe7, - 0xac, 0xef, 0xa8, 0xe7, 0xad, 0xef, 0xa8, 0xe7, 0xad, 0xef, 0xa8, 0xe7, - 0xae, 0xef, 0xa8, 0xe7, 0xae, 0xef, 0xa8, 0xe7, 0xae, 0xef, 0xac, 0xe7, - 0xaf, 0xf0, 0xa8, 0xe7, 0xaf, 0xef, 0xac, 0xe7, 0xaf, 0xf0, 0xac, 0xe7, - 0xb0, 0xf0, 0xac, 0xe7, 0xb0, 0xf0, 0xac, 0xe7, 0xb0, 0xf0, 0xac, 0xe7, - 0xb1, 0xf0, 0xac, 0xe7, 0xb1, 0xf0, 0xac, 0xe7, 0xb2, 0xf0, 0xac, 0xe7, - 0xb2, 0xf0, 0xac, 0xe7, 0xb2, 0xf0, 0xac, 0xe7, 0xb3, 0xf0, 0xac, 0xe7, - 0xb3, 0xf0, 0xb0, 0xe7, 0xb3, 0xf1, 0xb0, 0xe7, 0xb4, 0xf1, 0xb0, 0xe7, - 0xb4, 0xf1, 0xb0, 0xe7, 0xb4, 0xf1, 0xb0, 0xe7, 0xb5, 0xf1, 0xb0, 0xe7, - 0xb5, 0xf1, 0xb0, 0xe7, 0xb5, 0xf1, 0xb0, 0xe7, 0xb6, 0xf1, 0xcd, 0xe7, - 0xb6, 0xd3, 0xce, 0xe7, 0xb6, 0xd0, 0xcd, 0xe7, 0xb7, 0xd3, 0xce, 0xe7, - 0xb7, 0xd0, 0xcd, 0xe7, 0xb7, 0xd3, 0xce, 0xe7, 0xb8, 0xd0, 0xcd, 0xe7, - 0xb8, 0xd3, 0xce, 0xe7, 0xb8, 0xd0, 0xcd, 0xe7, 0xb9, 0xd3, 0xce, 0xe7, - 0xb9, 0xd0, 0xcd, 0xe7, 0xb9, 0xd3, 0xce, 0xe7, 0xba, 0xd0, 0xcd, 0xe7, - 0xba, 0xd3, 0xce, 0xe7, 0xba, 0xd0, 0xcd, 0xe7, 0xbb, 0xd3, 0xce, 0xe7, - 0xbb, 0xd0, 0xcd, 0xe7, 0xbb, 0xd3, 0xce, 0xe7, 0xbc, 0xd0, 0xcd, 0xe7, - 0xbc, 0xd3, 0xce, 0xe7, 0xbc, 0xd0, 0xcd, 0xe7, 0xbd, 0xd3, 0xce, 0xe7, - 0xbd, 0xd0, 0xcd, 0xe7, 0xbd, 0xd3, 0xce, 0xe7, 0xbe, 0xd0, 0xcd, 0xe7, - 0xbe, 0xd3, 0xce, 0xe7, 0xbe, 0xd0, 0xcd, 0xe7, 0xbf, 0xd3, 0xce, 0xe7, - 0xbf, 0xd0, 0xce, 0xe7, 0xbf, 0xcd, 0xce, 0xe7, 0xc0, 0xd0, 0xce, 0xe7, - 0xc0, 0xcd, 0xce, 0xe7, 0xc0, 0xd0, 0xce, 0xe7, 0xc1, 0xcd, 0xce, 0xe7, - 0xc1, 0xd0, 0xce, 0xe7, 0xc1, 0xcd, 0xce, 0xe7, 0xc1, 0xd0, 0xce, 0xe7, - 0xc2, 0xcd, 0xce, 0xe7, 0xc2, 0xd0, 0xce, 0xe7, 0xc2, 0xcd, 0xce, 0xe7, - 0xc3, 0xd0, 0xce, 0xe7, 0xc3, 0xcd, 0xce, 0xe7, 0xc3, 0xd0, 0xce, 0xe7, - 0xc4, 0xcd, 0xce, 0xe7, 0xc4, 0xd0, 0xce, 0xe7, 0xc4, 0xcd, 0xce, 0xe7, - 0xc5, 0xd0, 0xce, 0xe7, 0xc5, 0xcd, 0xce, 0xe7, 0xc5, 0xd0, 0xce, 0xe7, - 0xc6, 0xcd, 0xce, 0xe7, 0xc6, 0xd0, 0xce, 0xe7, 0xc6, 0xcd, 0xce, 0xe7, - 0xc6, 0xd0, 0xce, 0xe7, 0xc7, 0xcd, 0xce, 0xe7, 0xc7, 0xd0, 0xce, 0xe7, - 0xc7, 0xcd, 0xce, 0xe7, 0xc8, 0xd0, 0xce, 0xe7, 0xc8, 0xcd, 0xce, 0xe7, - 0xc8, 0xd0, 0xce, 0xe7, 0xc9, 0xcd, 0xce, 0xe7, 0xc9, 0xd0, 0xce, 0xe7, - 0xc9, 0xcd, 0xce, 0xe7, 0xc9, 0xcc, 0xce, 0xe7, 0xca, 0xcd, 0xce, 0xe7, - 0xca, 0xcc, 0xce, 0xe7, 0xca, 0xcd, 0xce, 0xe7, 0xcb, 0xcc, 0xce, 0xe7, - 0xcb, 0xcd, 0xce, 0xe7, 0xcb, 0xcc, 0xce, 0xe7, 0xcc, 0xcd, 0xce, 0xe7, - 0xcc, 0xcc, 0xce, 0xe7, 0xcc, 0xcd, 0xce, 0xe7, 0xcc, 0xcc, 0xce, 0xe7, - 0xcd, 0xcd, 0xce, 0xe7, 0xcd, 0xcc, 0xce, 0xe7, 0xcd, 0xcd, 0xce, 0xe7, - 0xce, 0xcc, 0xce, 0xe7, 0xce, 0xcc, 0xce, 0xe7, 0xce, 0xcc, 0xce, 0xe7, - 0xce, 0xcc, 0xcf, 0xe7, 0xce, 0xcc, 0xcf, 0xe7, 0xce, 0xcc, 0xcf, 0xe6, - 0xce, 0xcc, 0xd0, 0xe7, 0xce, 0xcc, 0xd0, 0xe6, 0xce, 0xcc, 0xd0, 0xe7, - 0xce, 0xcc, 0xd0, 0xe6, 0xce, 0xcc, 0xd1, 0xe7, 0xce, 0xcc, 0xd1, 0xe6, - 0xce, 0xcc, 0xd1, 0xe7, 0xce, 0xcc, 0xd2, 0xe6, 0xce, 0xcc, 0xd2, 0xe7, - 0xce, 0xcc, 0xd2, 0xe6, 0xce, 0xcc, 0xd2, 0xe7, 0xce, 0xcc, 0xd3, 0xe6, - 0xce, 0xcc, 0xd3, 0xe7, 0xce, 0xcc, 0xd3, 0xe6, 0xce, 0xcc, 0xd4, 0xe7, - 0xce, 0xcc, 0xd4, 0xe6, 0xce, 0xcc, 0xd4, 0xe7, 0xce, 0xcc, 0xd4, 0xe6, - 0xce, 0xcc, 0xd5, 0xe7, 0xce, 0xcc, 0xd5, 0xe6, 0xce, 0xcc, 0xd5, 0xe5, - 0xce, 0xcc, 0xd6, 0xe6, 0xce, 0xcc, 0xd6, 0xe5, 0xce, 0xcc, 0xd6, 0xe6, - 0xce, 0xcc, 0xd6, 0xe5, 0xce, 0xcc, 0xd7, 0xe6, 0xce, 0xcc, 0xd7, 0xe5, - 0xce, 0xcc, 0xd7, 0xe6, 0xce, 0xcc, 0xd7, 0xe5, 0xce, 0xcc, 0xd8, 0xe6, - 0xce, 0xcc, 0xd8, 0xe5, 0xce, 0xcc, 0xd8, 0xe6, 0xce, 0xcc, 0xd9, 0xe5, - 0xce, 0xcc, 0xd9, 0xe6, 0xce, 0xcc, 0xd9, 0xe5, 0xce, 0xcc, 0xd9, 0xe6, - 0xce, 0xcc, 0xda, 0xe5, 0xce, 0xcc, 0xda, 0xe6, 0xce, 0xcc, 0xda, 0xe5, - 0xce, 0xcc, 0xda, 0xe6, 0xce, 0xcc, 0xdb, 0xe5, 0xce, 0xcc, 0xdb, 0xe9, - 0xe6, 0xcc, 0xdb, 0xea, 0xe6, 0xcc, 0xdb, 0xe9, 0xe6, 0xcc, 0xdc, 0xea, - 0xe6, 0xcc, 0xdc, 0xe9, 0xe6, 0xcc, 0xdc, 0xea, 0xe6, 0xcc, 0xdd, 0xe9, - 0xe6, 0xcc, 0xdd, 0xea, 0xe6, 0xcc, 0xdd, 0xe9, 0xe6, 0xcc, 0xdd, 0xe8, - 0xe7, 0xcc, 0xde, 0xe9, 0xe6, 0xcc, 0xde, 0xe8, 0xe7, 0xcc, 0xde, 0xe9, - 0xe6, 0xcc, 0xde, 0xe8, 0xe7, 0xcc, 0xdf, 0xe9, 0xe6, 0xcc, 0xdf, 0xe8, - 0xe7, 0xcc, 0xdf, 0xe9, 0xe6, 0xcc, 0xdf, 0xe8, 0xe7, 0xcc, 0xe0, 0xe9, - 0xe6, 0xcc, 0xe0, 0xe8, 0xe7, 0xcc, 0xe0, 0xe9, 0xe6, 0xcc, 0xe1, 0xe8, - 0xe7, 0xcc, 0xe1, 0xe9, 0xe6, 0xcc, 0xe1, 0xe8, 0xe7, 0xcc, 0xe1, 0xe9, - 0xe6, 0xcc, 0xe2, 0xe8, 0xe7, 0xcc, 0xe2, 0xe9, 0xe6, 0xcc, 0xe2, 0xe8, - 0xe7, 0xcc, 0xe2, 0xe9, 0xe6, 0xcc, 0xe3, 0xe8, 0xe7, 0xcc, 0xe3, 0xe9, - 0xe6, 0xcc, 0xe3, 0xe8, 0xe7, 0xcc, 0xe3, 0xe9, 0xe6, 0xcc, 0xe4, 0xe8, - 0xe7, 0xcc, 0xe4, 0xe9, 0xe6, 0xcc, 0xe4, 0xe8, 0xe7, 0xcc, 0xe4, 0xe9, - 0xe6, 0xcc, 0xe5, 0xe8, 0xe7, 0xcc, 0xe5, 0xe7, 0xe7, 0xcc, 0xe5, 0xe8, - 0xe7, 0xcc, 0xe5, 0xe7, 0xe7, 0xcc, 0xe6, 0xe8, 0xe7, 0xcc, 0xe6, 0xe7, - 0xe7, 0xcc, 0xe6, 0xe8, 0xe7, 0xcc, 0xe6, 0xe7, 0xe7, 0xcc, 0xe7, 0xe8, - 0xe7, 0xcc, 0xe6, 0xe7, 0xe7, 0xcc, 0xe7, 0xe7, 0xe7, 0xcc, 0xe6, 0xe7, - 0xe7, 0xcc, 0xe7, 0xe7, 0xe8, 0xcc, 0xe6, 0xe7, 0xe8, 0xcc, 0xe7, 0xe7, - 0xe8, 0xcc, 0xe6, 0xe7, 0xe8, 0xcc, 0xe7, 0xe7, 0xe9, 0xcc, 0xeb, 0xe7, - 0xe9, 0xcc, 0xeb, 0xe7, 0xe9, 0xcc, 0xeb, 0xe7, 0xe9, 0xcc, 0xeb, 0xe7, - 0xea, 0xcc, 0xeb, 0xe7, 0xea, 0xcc, 0xeb, 0xe7, 0xea, 0xcc, 0xeb, 0xe7, - 0xea, 0xcc, 0xeb, 0xe7, 0xeb, 0xcc, 0xeb, 0xe7, 0xea, 0xcc, 0xeb, 0xe7, - 0xeb, 0xcc, 0xeb, 0xe7, 0xea, 0xcc, 0xec, 0xe7, 0xeb, 0xcc, 0xec, 0xe7, - 0xea, 0xcc, 0xec, 0xe7, 0xeb, 0xcc, 0xec, 0xe7, 0xea, 0xcc, 0xec, 0xe7, - 0xeb, 0xcc, 0xed, 0xe7, 0xea, 0xcc, 0xed, 0xe7, 0xeb, 0xcc, 0xed, 0xe7, - 0xea, 0xcc, 0xed, 0xe7, 0xeb, 0xcc, 0xee, 0xe7, 0xea, 0xcc, 0xee, 0xe7, - 0xeb, 0xcc, 0xee, 0xe7, 0xea, 0xcc, 0xee, 0xe7, 0xeb, 0xcc, 0xef, 0xe5, - 0xeb, 0xcc, 0xef, 0xe7, 0xeb, 0xcc, 0xef, 0xec, 0xee, 0xcc, 0xef, 0xec, - 0xee, 0xcc, 0xf0, 0xec, 0xee, 0xcc, 0xf0, 0xec, 0xee, 0xcc, 0xf0, 0xec, - 0xee, 0xcc, 0xf0, 0xec, 0xee, 0xcc, 0xf1, 0xec, 0xf1, 0xcc, 0xf1, 0xec, - 0xf1, 0xcc, 0xf1, 0xec, 0xf1, 0xcc, 0xf1, 0xec, 0xf1, 0xcc, 0xf2, 0xec, - 0xf1, 0xcc, 0xf2, 0xec, 0xf1, 0xcc, 0xf2, 0xec, 0xf1, 0xcc, 0xf2, 0xec, - 0xf1, 0xcc, 0xf2, 0xec, 0xf1, 0xcc, 0xf3, 0xec, 0xf1, 0xcc, 0xf3, 0xec, - 0xf1, 0xcc, 0xf3, 0xec, 0xf1, 0xcc, 0xf3, 0xec, 0xf1, 0xcc, 0xf4, 0xec, - 0xf1, 0xcc, 0xf4, 0xec, 0xf1, 0xcc, 0xf4, 0xec, 0xf1, 0xcc, 0xf4, 0xec, - 0xf1, 0xcc, 0xf5, 0xec, 0xf1, 0xcc, 0xf5, 0xec, 0xf1, 0xcc, 0xf5, 0xec, - 0xf1, 0xcc, 0xf5, 0xec, 0xf1, 0xcc, 0xf5, 0xec, 0xf1, 0xcc, 0xf6, 0xec, - 0xf1, 0xcc, 0xf6, 0xec, 0xf1, 0xcc, 0xf6, 0xec, 0xf1, 0xcc, 0xf6, 0xec, - 0xf1, 0xcc, 0xf7, 0xec, 0xf1, 0xcc, 0xf7, 0xec, 0xf1, 0xcc, 0xf7, 0xec, - 0xf1, 0xcc, 0xf7, 0xec, 0xf1, 0xcc, 0xf8, 0xec, 0xf1, 0xcc, 0xf8, 0xec, - 0xf1, 0xcc, 0xf8, 0xec, 0xf1, 0xcc, 0xf8, 0xec, 0xf1, 0xcc, 0xf8, 0xec, - 0xf1, 0xcc, 0xf9, 0xec, 0xf1, 0xcc, 0xf9, 0xec, 0xf1, 0xcc, 0xf9, 0xec, - 0xf1, 0xcc, 0xf9, 0xec, 0xf1, 0xcc, 0xfa, 0xec, 0xf1, 0xcc, 0xfa, 0xec, - 0xf1, 0xcc, 0xfa, 0xec, 0xf1, 0xcc, 0xfa, 0xec, 0xf1, 0xcc, 0xfa, 0xec, - 0xf1, 0xcc, 0xfb, 0xec, 0xf1, 0xcc, 0xfb, 0xec, 0xf1, 0xcc, 0xfb, 0xec, - 0xf1, 0xcc, 0xfb, 0xec, 0xf1, 0xcc, 0xfc, 0xec, 0xf1, 0xcc, 0xfc, 0xec, - 0xf1, 0xcc, 0xfc, 0xec, 0xf1, 0xcc, 0xfc, 0xec, 0xf1, 0xcc, 0xfc, 0xec, - 0xf1, 0xcc, 0xfd, 0xec, 0xf1, 0xcc, 0xfd, 0xec, 0xf1, 0xcc, 0xfd, 0xec, - 0xf1, 0xcc, 0xfd, 0xec, 0xf1, 0xcc, 0xfe, 0xec, 0xf1, 0xcc, 0xfe, 0xec, - 0xf1, 0xcc, 0xfe, 0xec, 0xf1, 0xcc, 0xfe, 0xec, 0xf1, 0xcc, 0xfe, 0xec, - 0xf1, 0xcc, 0xff, 0xec, 0xf1, 0xcc, 0xff, 0xec, 0xf1, 0xcc, 0x03, 0xec, - 0x85, 0xcc, 0x0a, 0xec, 0x85, 0xcc, 0x0f, 0xec, 0x85, 0xcc, 0x14, 0xec, - 0x85, 0xcc, 0x17, 0xec, 0x85, 0xcc, 0x1b, 0xec, 0x85, 0xcc, 0x1e, 0xec, - 0x85, 0xcc, 0x20, 0xeb, 0x86, 0xcc, 0x23, 0xec, 0x85, 0xcc, 0x25, 0xeb, - 0x86, 0xcc, 0x27, 0xec, 0x85, 0xcc, 0x29, 0xeb, 0x86, 0xcc, 0x2b, 0xec, - 0x85, 0xcc, 0x2d, 0xeb, 0x86, 0xcc, 0x2f, 0xec, 0x85, 0xcc, 0x31, 0xeb, - 0x86, 0xcc, 0x32, 0xec, 0x85, 0xcc, 0x34, 0xeb, 0x86, 0xcc, 0x35, 0xec, - 0x85, 0xcc, 0x37, 0xeb, 0x86, 0xcc, 0x38, 0xec, 0x85, 0xcc, 0x3a, 0xeb, - 0x86, 0xcc, 0x3b, 0xec, 0x85, 0xcc, 0x3c, 0xeb, 0x86, 0xcc, 0x3e, 0xec, - 0x85, 0xcc, 0x3f, 0xeb, 0x86, 0xcc, 0x40, 0xec, 0x85, 0xcc, 0x42, 0xeb, - 0x86, 0xcc, 0x43, 0xec, 0x85, 0xcc, 0x44, 0xeb, 0x86, 0xcc, 0x45, 0xe9, - 0x86, 0xcc, 0x46, 0xeb, 0x86, 0xcc, 0x47, 0xe9, 0x86, 0xcc, 0x48, 0xeb, - 0x86, 0xcc, 0x49, 0xe9, 0x86, 0xcc, 0x4a, 0xeb, 0x86, 0xcc, 0x4b, 0xe9, - 0x86, 0xcc, 0x4c, 0xeb, 0x86, 0xcc, 0x4d, 0xe9, 0x86, 0xcc, 0x4e, 0xeb, - 0x86, 0xcc, 0x4f, 0xe9, 0x86, 0xcc, 0x50, 0xeb, 0x86, 0xcc, 0x51, 0xe9, - 0x86, 0xcc, 0x52, 0xeb, 0x86, 0xcc, 0x53, 0xe9, 0x86, 0xcc, 0x54, 0xeb, - 0x86, 0xcc, 0x55, 0xe9, 0x86, 0xcc, 0x56, 0xeb, 0x86, 0xcc, 0x57, 0xe9, - 0x86, 0xcc, 0x58, 0xeb, 0x86, 0xcc, 0x58, 0xe9, 0x86, 0xcc, 0x59, 0xeb, - 0x86, 0xcc, 0x5a, 0xe9, 0x86, 0xcc, 0x5b, 0xeb, 0x86, 0xcc, 0x5c, 0xe9, - 0x86, 0xcc, 0x5d, 0xeb, 0x86, 0xcc, 0x5d, 0xe9, 0x86, 0xcc, 0x5e, 0xeb, - 0x86, 0xcc, 0x5f, 0xe9, 0x86, 0xcc, 0x60, 0xeb, 0x86, 0xcc, 0x60, 0xe9, - 0x86, 0xcc, 0x61, 0xeb, 0x86, 0xcc, 0x62, 0xe9, 0x86, 0xcc, 0x63, 0xeb, - 0x86, 0xcc, 0x63, 0xe9, 0x86, 0xcc, 0x64, 0xeb, 0x86, 0xcc, 0x65, 0xe9, - 0x86, 0xcc, 0x66, 0xeb, 0x86, 0xcc, 0x66, 0xe9, 0x86, 0xcc, 0x67, 0xeb, - 0x86, 0xcc, 0x68, 0xe9, 0x86, 0xcc, 0x68, 0xeb, 0x86, 0xcc, 0x69, 0xe9, - 0x86, 0xcc, 0x6a, 0xeb, 0x86, 0xcc, 0x6a, 0xe9, 0x86, 0xcc, 0x6b, 0xe7, - 0x87, 0xcc, 0x6c, 0xe9, 0x86, 0xcc, 0x6c, 0xe7, 0x87, 0xcc, 0x6d, 0xe9, - 0x86, 0xcc, 0x6e, 0xe7, 0x87, 0xcc, 0x6e, 0xe9, 0x86, 0xcc, 0x6f, 0xe7, - 0x87, 0xcc, 0x70, 0xe9, 0x86, 0xcc, 0x70, 0xe7, 0x87, 0xcc, 0x71, 0xe9, - 0x86, 0xcc, 0x72, 0xe7, 0x87, 0xcc, 0x72, 0xe9, 0x86, 0xcc, 0x73, 0xe7, - 0x87, 0xcc, 0x73, 0xe9, 0x86, 0xcc, 0x74, 0xe7, 0x87, 0xcc, 0x75, 0xe9, - 0x86, 0xcc, 0x75, 0xe7, 0x87, 0xcc, 0x76, 0xe9, 0x86, 0xcc, 0x76, 0xe7, - 0x87, 0xcc, 0x77, 0xe9, 0x86, 0xcc, 0x78, 0xe7, 0x87, 0xcc, 0x78, 0xe9, - 0x86, 0xcc, 0x79, 0xe7, 0x87, 0xcc, 0x79, 0xe9, 0x86, 0xcc, 0x7a, 0xe7, - 0x87, 0xcc, 0x7a, 0xe9, 0x86, 0xcc, 0x7b, 0xe7, 0x87, 0xcc, 0x7c, 0xe9, - 0x86, 0xcc, 0x7c, 0xe7, 0x87, 0xcc, 0x7d, 0xe9, 0x86, 0xcc, 0x7d, 0xe7, - 0x87, 0xcc, 0x7e, 0xe9, 0x86, 0xcc, 0x7e, 0xe7, 0x87, 0xcc, 0x7f, 0xe9, - 0x86, 0xcc, 0x7f, 0xe7, 0x87, 0xcc, 0x80, 0xe9, 0x86, 0xcc, 0x81, 0xe7, - 0x87, 0xcc, 0x81, 0xe9, 0x86, 0xcc, 0x82, 0xe7, 0x87, 0xcc, 0x82, 0xe9, - 0x86, 0xcc, 0x83, 0xe7, 0x87, 0xcc, 0x83, 0xe7, 0x87, 0xcc, 0x84, 0xe7, - 0x87, 0xcc, 0x84, 0xe7, 0x87, 0xcc, 0x85, 0xe7, 0x87, 0xcc, 0x85, 0xe7, - 0x87, 0xcc, 0x86, 0xe7, 0x87, 0xcc, 0x86, 0xe7, 0x87, 0xcc, 0x87, 0xe7, - 0x87, 0xcb, 0x86, 0xe7, 0x87, 0xcc, 0x87, 0xe7, 0x88, 0xcb, 0x86, 0xe7, - 0x88, 0xcc, 0x87, 0xe7, 0x89, 0xcb, 0x86, 0xe7, 0x89, 0xcc, 0x87, 0xe7, - 0x8a, 0xcb, 0x86, 0xe7, 0x8a, 0xcc, 0x87, 0xe7, 0x8b, 0xcb, 0x86, 0xe7, - 0x8b, 0xcc, 0x87, 0xe7, 0x8c, 0xcb, 0x86, 0xe7, 0x8c, 0xcc, 0x87, 0xe7, - 0x8d, 0xcb, 0x86, 0xe7, 0x8d, 0xcc, 0x87, 0xe7, 0x8e, 0xcb, 0x86, 0xe7, - 0x8e, 0xcc, 0x87, 0xe7, 0x8e, 0xcb, 0x87, 0xe7, 0x8f, 0xc8, 0x87, 0xe7, - 0x8f, 0xcb, 0x87, 0xe7, 0x90, 0xc8, 0x87, 0xe7, 0x90, 0xcb, 0x87, 0xe7, - 0x91, 0xc8, 0x87, 0xe7, 0x91, 0xcb, 0x87, 0xe7, 0x92, 0xc8, 0x87, 0xe7, - 0x92, 0xcb, 0x87, 0xe7, 0x93, 0xc8, 0x87, 0xe7, 0x93, 0xcb, 0x87, 0xe7, - 0x94, 0xc8, 0x87, 0xe7, 0x94, 0xcb, 0x87, 0xe7, 0x94, 0xc8, 0x87, 0xe7, - 0x95, 0xcb, 0x87, 0xe7, 0x95, 0xc8, 0x87, 0xe7, 0x96, 0xcb, 0x87, 0xe7, - 0x96, 0xc8, 0x87, 0xe7, 0x97, 0xcb, 0x87, 0xe7, 0x97, 0xc8, 0x87, 0xe7, - 0x98, 0xcb, 0x87, 0xe7, 0x98, 0xc8, 0x87, 0xe7, 0x98, 0xcb, 0x87, 0xe7, - 0x99, 0xc8, 0x87, 0xe7, 0x99, 0xcb, 0x87, 0xe7, 0x9a, 0xc8, 0x87, 0xe7, - 0x9a, 0xcb, 0x87, 0xe7, 0x9a, 0xc8, 0x87, 0xe7, 0x9b, 0xcb, 0x87, 0xe7, - 0x9b, 0xc8, 0x87, 0xe7, 0x9c, 0xcb, 0x87, 0xe7, 0x9c, 0xc8, 0x87, 0xe7, - 0x9d, 0xcb, 0x87, 0xe7, 0x9d, 0xc8, 0x87, 0xe7, 0x9d, 0xcb, 0x87, 0xe7, - 0x9e, 0xc8, 0x87, 0xe7, 0x9e, 0xcb, 0x87, 0xe7, 0x9f, 0xc8, 0x87, 0xe7, - 0x9f, 0xcb, 0x87, 0xe7, 0x9f, 0xc8, 0x87, 0xe7, 0xa0, 0xcb, 0x87, 0xe7, - 0xa0, 0xc8, 0x87, 0xe7, 0xa1, 0xcb, 0x87, 0xe7, 0xa1, 0xc8, 0x87, 0xe7, - 0xa1, 0xcb, 0x87, 0xe7, 0xa2, 0xc8, 0x87, 0xe7, 0xa2, 0xcb, 0x87, 0xe7, - 0xa3, 0xc8, 0x87, 0xe7, 0xa3, 0xcb, 0x87, 0xe7, 0xa3, 0xc8, 0x88, 0xe7, - 0xa4, 0xc4, 0x9e, 0xe7, 0xa4, 0xec, 0xa2, 0xe7, 0xa5, 0xed, 0x9e, 0xe7, - 0xa5, 0xec, 0xa2, 0xe7, 0xa5, 0xed, 0xa2, 0xe7, 0xa6, 0xed, 0xa2, 0xe7, - 0xa6, 0xed, 0xa2, 0xe7, 0xa6, 0xed, 0xa2, 0xe7, 0xa7, 0xed, 0xa2, 0xe7, - 0xa7, 0xed, 0xa2, 0xe7, 0xa8, 0xed, 0xa2, 0xe7, 0xa8, 0xed, 0xa2, 0xe7, - 0xa8, 0xed, 0xa6, 0xe7, 0xa9, 0xee, 0xa2, 0xe7, 0xa9, 0xed, 0xa6, 0xe7, - 0xaa, 0xee, 0xa6, 0xe7, 0xaa, 0xee, 0xa6, 0xe7, 0xaa, 0xee, 0xa6, 0xe7, - 0xab, 0xee, 0xa6, 0xe7, 0xab, 0xee, 0xa6, 0xe7, 0xab, 0xee, 0xa6, 0xe7, - 0xac, 0xee, 0xa6, 0xe7, 0xac, 0xee, 0xa6, 0xe7, 0xac, 0xee, 0xab, 0xe7, - 0xad, 0xef, 0xa6, 0xe7, 0xad, 0xee, 0xab, 0xe7, 0xae, 0xef, 0xaa, 0xe7, - 0xae, 0xef, 0xab, 0xe7, 0xae, 0xef, 0xaa, 0xe7, 0xaf, 0xef, 0xab, 0xe7, - 0xaf, 0xef, 0xaa, 0xe7, 0xaf, 0xef, 0xab, 0xe7, 0xb0, 0xef, 0xaa, 0xe7, - 0xb0, 0xef, 0xab, 0xe7, 0xb0, 0xef, 0xaf, 0xe7, 0xb1, 0xf0, 0xab, 0xe7, - 0xb1, 0xef, 0xaf, 0xe7, 0xb2, 0xf0, 0xae, 0xe7, 0xb2, 0xf0, 0xaf, 0xe7, - 0xb2, 0xf0, 0xae, 0xe7, 0xb3, 0xf0, 0xaf, 0xe7, 0xb3, 0xf0, 0xae, 0xe7, - 0xb3, 0xf0, 0xaf, 0xe7, 0xb4, 0xf0, 0xae, 0xe7, 0xb4, 0xf0, 0xaf, 0xe7, - 0xb4, 0xf0, 0xae, 0xe7, 0xb5, 0xf0, 0xaf, 0xe7, 0xb5, 0xf0, 0xb3, 0xe7, - 0xb5, 0xf1, 0xb2, 0xe7, 0xb6, 0xf1, 0xb3, 0xe7, 0xb6, 0xf1, 0xcd, 0xe7, - 0xb6, 0xd5, 0xcd, 0xe7, 0xb7, 0xd2, 0xcd, 0xe7, 0xb7, 0xd5, 0xcd, 0xe7, - 0xb7, 0xd2, 0xcd, 0xe7, 0xb8, 0xd5, 0xcd, 0xe7, 0xb8, 0xd2, 0xcd, 0xe7, - 0xb8, 0xd5, 0xcd, 0xe7, 0xb9, 0xd2, 0xcd, 0xe7, 0xb9, 0xd5, 0xcd, 0xe7, - 0xb9, 0xd2, 0xce, 0xe7, 0xba, 0xd0, 0xcd, 0xe7, 0xba, 0xd2, 0xce, 0xe7, - 0xba, 0xd0, 0xcd, 0xe7, 0xbb, 0xd2, 0xce, 0xe7, 0xbb, 0xd0, 0xcd, 0xe7, - 0xbb, 0xd2, 0xce, 0xe7, 0xbc, 0xd0, 0xcd, 0xe7, 0xbc, 0xd2, 0xce, 0xe7, - 0xbc, 0xd0, 0xcd, 0xe7, 0xbd, 0xd2, 0xce, 0xe7, 0xbd, 0xd0, 0xcd, 0xe7, - 0xbd, 0xd2, 0xce, 0xe7, 0xbe, 0xd0, 0xcd, 0xe7, 0xbe, 0xd2, 0xce, 0xe7, - 0xbe, 0xd0, 0xcd, 0xe7, 0xbf, 0xd2, 0xce, 0xe7, 0xbf, 0xd0, 0xcd, 0xe7, - 0xbf, 0xd2, 0xce, 0xe7, 0xc0, 0xd0, 0xcd, 0xe7, 0xc0, 0xd2, 0xce, 0xe7, - 0xc0, 0xd0, 0xcd, 0xe7, 0xc1, 0xd2, 0xce, 0xe7, 0xc1, 0xd0, 0xcd, 0xe7, - 0xc1, 0xd2, 0xce, 0xe7, 0xc1, 0xd0, 0xcd, 0xe7, 0xc2, 0xd2, 0xce, 0xe7, - 0xc2, 0xd0, 0xcd, 0xe7, 0xc2, 0xd2, 0xce, 0xe7, 0xc3, 0xd0, 0xce, 0xe7, - 0xc3, 0xcd, 0xce, 0xe7, 0xc3, 0xd0, 0xce, 0xe7, 0xc4, 0xcd, 0xce, 0xe7, - 0xc4, 0xd0, 0xce, 0xe7, 0xc4, 0xcd, 0xce, 0xe7, 0xc5, 0xd0, 0xce, 0xe7, - 0xc5, 0xcd, 0xce, 0xe7, 0xc5, 0xd0, 0xce, 0xe7, 0xc6, 0xcd, 0xce, 0xe7, - 0xc6, 0xd0, 0xce, 0xe7, 0xc6, 0xcd, 0xce, 0xe7, 0xc6, 0xd0, 0xce, 0xe7, - 0xc7, 0xcd, 0xce, 0xe7, 0xc7, 0xd0, 0xce, 0xe7, 0xc7, 0xcd, 0xce, 0xe7, - 0xc8, 0xd0, 0xce, 0xe7, 0xc8, 0xcd, 0xce, 0xe7, 0xc8, 0xd0, 0xce, 0xe7, - 0xc9, 0xcd, 0xce, 0xe7, 0xc9, 0xd0, 0xce, 0xe7, 0xc9, 0xcd, 0xce, 0xe7, - 0xc9, 0xcc, 0xce, 0xe7, 0xca, 0xcd, 0xce, 0xe7, 0xca, 0xcc, 0xce, 0xe7, - 0xca, 0xcd, 0xce, 0xe7, 0xcb, 0xcc, 0xce, 0xe7, 0xcb, 0xcd, 0xce, 0xe7, - 0xcb, 0xcc, 0xce, 0xe7, 0xcc, 0xcd, 0xce, 0xe7, 0xcc, 0xcc, 0xce, 0xe7, - 0xcc, 0xcd, 0xce, 0xe7, 0xcc, 0xcc, 0xce, 0xe7, 0xcd, 0xcd, 0xce, 0xe7, - 0xcd, 0xcc, 0xce, 0xe7, 0xcd, 0xcd, 0xce, 0xe7, 0xce, 0xcc, 0xce, 0xe7, - 0xce, 0xcc, 0xce, 0xe7, 0xce, 0xcc, 0xce, 0xe7, 0xce, 0xcc, 0xcf, 0xe7, - 0xce, 0xcc, 0xcf, 0xe7, 0xce, 0xcc, 0xcf, 0xe7, 0xce, 0xcc, 0xd0, 0xe7, - 0xce, 0xcc, 0xd0, 0xe7, 0xce, 0xcc, 0xd0, 0xe7, 0xce, 0xcc, 0xd0, 0xe6, - 0xce, 0xcc, 0xd1, 0xe7, 0xce, 0xcc, 0xd1, 0xe6, 0xce, 0xcc, 0xd1, 0xe7, - 0xce, 0xcc, 0xd2, 0xe6, 0xce, 0xcc, 0xd2, 0xe7, 0xce, 0xcc, 0xd2, 0xe6, - 0xce, 0xcc, 0xd2, 0xe7, 0xce, 0xcc, 0xd3, 0xe6, 0xce, 0xcc, 0xd3, 0xe7, - 0xce, 0xcc, 0xd3, 0xe6, 0xce, 0xcc, 0xd4, 0xe7, 0xce, 0xcc, 0xd4, 0xe6, - 0xce, 0xcc, 0xd4, 0xe7, 0xce, 0xcc, 0xd4, 0xe6, 0xce, 0xcc, 0xd5, 0xe7, - 0xce, 0xcc, 0xd5, 0xe6, 0xce, 0xcc, 0xd5, 0xe7, 0xce, 0xcc, 0xd6, 0xe6, - 0xce, 0xcc, 0xd6, 0xe7, 0xce, 0xcc, 0xd6, 0xe6, 0xce, 0xcc, 0xd6, 0xe7, - 0xce, 0xcc, 0xd7, 0xe6, 0xce, 0xcc, 0xd7, 0xe7, 0xce, 0xcc, 0xd7, 0xe6, - 0xce, 0xcc, 0xd7, 0xe7, 0xce, 0xcc, 0xd8, 0xe6, 0xce, 0xcc, 0xd8, 0xe7, - 0xce, 0xcc, 0xd8, 0xe6, 0xce, 0xcc, 0xd9, 0xe4, 0xce, 0xcc, 0xd9, 0xe6, - 0xce, 0xcc, 0xd9, 0xe4, 0xce, 0xcc, 0xd9, 0xe6, 0xce, 0xcc, 0xda, 0xe4, - 0xce, 0xcc, 0xda, 0xe6, 0xce, 0xcc, 0xda, 0xe4, 0xce, 0xcc, 0xda, 0xe6, - 0xce, 0xcc, 0xdb, 0xe4, 0xce, 0xcc, 0xdb, 0xe9, 0xe6, 0xcc, 0xdb, 0xea, - 0xe6, 0xcc, 0xdb, 0xe9, 0xe6, 0xcc, 0xdc, 0xea, 0xe6, 0xcc, 0xdc, 0xe9, - 0xe6, 0xcc, 0xdc, 0xea, 0xe6, 0xcc, 0xdd, 0xe9, 0xe6, 0xcc, 0xdd, 0xea, - 0xe6, 0xcc, 0xdd, 0xe9, 0xe6, 0xcc, 0xdd, 0xe7, 0xe7, 0xcc, 0xde, 0xe9, - 0xe6, 0xcc, 0xde, 0xe7, 0xe7, 0xcc, 0xde, 0xe9, 0xe6, 0xcc, 0xde, 0xe7, - 0xe7, 0xcc, 0xdf, 0xe9, 0xe6, 0xcc, 0xdf, 0xe7, 0xe7, 0xcc, 0xdf, 0xe9, - 0xe6, 0xcc, 0xdf, 0xe7, 0xe7, 0xcc, 0xe0, 0xe9, 0xe6, 0xcc, 0xe0, 0xe7, - 0xe7, 0xcc, 0xe0, 0xe9, 0xe6, 0xcc, 0xe1, 0xe7, 0xe7, 0xcc, 0xe1, 0xe9, - 0xe6, 0xcc, 0xe1, 0xe7, 0xe7, 0xcc, 0xe1, 0xe9, 0xe6, 0xcc, 0xe2, 0xe7, - 0xe7, 0xcc, 0xe2, 0xe9, 0xe6, 0xcc, 0xe2, 0xe7, 0xe7, 0xcc, 0xe2, 0xe9, - 0xe6, 0xcc, 0xe3, 0xe7, 0xe7, 0xcc, 0xe3, 0xe9, 0xe6, 0xcc, 0xe3, 0xe7, - 0xe7, 0xcc, 0xe3, 0xe9, 0xe6, 0xcc, 0xe4, 0xe7, 0xe7, 0xcc, 0xe4, 0xe9, - 0xe6, 0xcc, 0xe4, 0xe7, 0xe7, 0xcc, 0xe4, 0xe9, 0xe6, 0xcc, 0xe5, 0xe7, - 0xe7, 0xcc, 0xe5, 0xe7, 0xe7, 0xcc, 0xe5, 0xe7, 0xe7, 0xcc, 0xe5, 0xe7, - 0xe7, 0xcc, 0xe6, 0xe7, 0xe7, 0xcc, 0xe6, 0xe7, 0xe7, 0xcc, 0xe6, 0xe7, - 0xe7, 0xcc, 0xe6, 0xe7, 0xe7, 0xcc, 0xe7, 0xe7, 0xe7, 0xcb, 0xe6, 0xe7, - 0xe7, 0xcc, 0xe7, 0xe7, 0xe7, 0xcb, 0xe6, 0xe7, 0xe7, 0xcc, 0xe7, 0xe7, - 0xe8, 0xcb, 0xe6, 0xe7, 0xe8, 0xcc, 0xe7, 0xe7, 0xe8, 0xcb, 0xe6, 0xe7, - 0xe8, 0xcc, 0xeb, 0xe7, 0xe9, 0xcc, 0xeb, 0xe7, 0xe9, 0xcc, 0xeb, 0xe7, - 0xe9, 0xcc, 0xeb, 0xe7, 0xe9, 0xcc, 0xeb, 0xe7, 0xea, 0xcc, 0xeb, 0xe7, - 0xea, 0xcc, 0xeb, 0xe7, 0xea, 0xcc, 0xeb, 0xe7, 0xea, 0xcc, 0xeb, 0xe7, - 0xeb, 0xcc, 0xeb, 0xe7, 0xea, 0xcc, 0xeb, 0xe7, 0xeb, 0xcc, 0xeb, 0xe7, - 0xea, 0xcc, 0xec, 0xe7, 0xeb, 0xcc, 0xec, 0xe7, 0xea, 0xcc, 0xec, 0xe7, - 0xeb, 0xcc, 0xec, 0xe7, 0xea, 0xcc, 0xec, 0xe7, 0xeb, 0xcc, 0xed, 0xe7, - 0xea, 0xcc, 0xed, 0xe7, 0xeb, 0xcc, 0xed, 0xe7, 0xea, 0xcc, 0xed, 0xe7, - 0xeb, 0xcc, 0xee, 0xe7, 0xea, 0xcc, 0xee, 0xe7, 0xeb, 0xcc, 0xee, 0xe7, - 0xea, 0xcc, 0xee, 0xe7, 0xeb, 0xcc, 0xef, 0xeb, 0xed, 0xcc, 0xef, 0xec, - 0xef, 0xcc, 0xef, 0xec, 0xef, 0xcc, 0xef, 0xec, 0xef, 0xcc, 0xf0, 0xec, - 0xf0, 0xcc, 0xf0, 0xec, 0xf0, 0xcc, 0xf0, 0xec, 0xf0, 0xcc, 0xf0, 0xec, - 0xf0, 0xcc, 0xf1, 0xec, 0xf0, 0xcc, 0xf1, 0xec, 0xf0, 0xcc, 0xf1, 0xec, - 0xf0, 0xcc, 0xf1, 0xec, 0xf0, 0xcc, 0xf2, 0xec, 0xf0, 0xcc, 0xf2, 0xec, - 0xf0, 0xcc, 0xf2, 0xec, 0xf0, 0xcc, 0xf2, 0xec, 0xf1, 0xcc, 0xf2, 0xec, - 0xf0, 0xcc, 0xf3, 0xec, 0xf1, 0xcc, 0xf3, 0xec, 0xf1, 0xcc, 0xf3, 0xec, - 0xf1, 0xcc, 0xf3, 0xec, 0xf1, 0xcc, 0xf4, 0xec, 0xf1, 0xcc, 0xf4, 0xec, - 0xf1, 0xcc, 0xf4, 0xec, 0xf1, 0xcc, 0xf4, 0xec, 0xf1, 0xcc, 0xf5, 0xec, - 0xf1, 0xcc, 0xf5, 0xec, 0xf1, 0xcc, 0xf5, 0xec, 0xf1, 0xcc, 0xf5, 0xec, - 0xf1, 0xcc, 0xf5, 0xec, 0xf1, 0xcc, 0xf6, 0xec, 0xf1, 0xcc, 0xf6, 0xec, - 0xf1, 0xcc, 0xf6, 0xec, 0xf1, 0xcc, 0xf6, 0xec, 0xf1, 0xcc, 0xf7, 0xec, - 0xf1, 0xcc, 0xf7, 0xec, 0xf1, 0xcc, 0xf7, 0xec, 0xf1, 0xcc, 0xf7, 0xec, - 0xf1, 0xcc, 0xf8, 0xec, 0xf1, 0xcc, 0xf8, 0xec, 0xf1, 0xcc, 0xf8, 0xec, - 0xf1, 0xcc, 0xf8, 0xec, 0xf1, 0xcc, 0xf8, 0xec, 0xf1, 0xcc, 0xf9, 0xec, - 0xf1, 0xcc, 0xf9, 0xec, 0xf1, 0xcc, 0xf9, 0xec, 0xf1, 0xcc, 0xf9, 0xec, - 0xf1, 0xcc, 0xfa, 0xec, 0xf1, 0xcc, 0xfa, 0xec, 0xf1, 0xcc, 0xfa, 0xec, - 0xf1, 0xcc, 0xfa, 0xec, 0xf1, 0xcc, 0xfa, 0xec, 0xf1, 0xcc, 0xfb, 0xec, - 0xf1, 0xcc, 0xfb, 0xec, 0xf1, 0xcc, 0xfb, 0xec, 0xf1, 0xcc, 0xfb, 0xec, - 0xf1, 0xcc, 0xfc, 0xec, 0xf1, 0xcc, 0xfc, 0xec, 0xf1, 0xcc, 0xfc, 0xec, - 0xf1, 0xcc, 0xfc, 0xec, 0xf1, 0xcc, 0xfc, 0xec, 0xf1, 0xcc, 0xfd, 0xec, - 0xf1, 0xcc, 0xfd, 0xec, 0xf1, 0xcc, 0xfd, 0xec, 0xf1, 0xcc, 0xfd, 0xec, - 0xf1, 0xcc, 0xfe, 0xec, 0xf1, 0xcc, 0xfe, 0xec, 0xf1, 0xcc, 0xfe, 0xec, - 0xf1, 0xcc, 0xfe, 0xec, 0xf1, 0xcc, 0xfe, 0xec, 0xf1, 0xcc, 0xff, 0xec, - 0xf1, 0xcc, 0xff, 0xec, 0xf1, 0xcc, 0x03, 0xec, 0x85, 0xcd, 0x0a, 0xec, - 0x85, 0xcd, 0x0f, 0xec, 0x85, 0xcd, 0x14, 0xec, 0x85, 0xcd, 0x17, 0xec, - 0x85, 0xcd, 0x1b, 0xec, 0x85, 0xcd, 0x1e, 0xec, 0x85, 0xcd, 0x20, 0xeb, - 0x86, 0xcd, 0x23, 0xec, 0x85, 0xcd, 0x25, 0xeb, 0x86, 0xcd, 0x27, 0xec, - 0x85, 0xcd, 0x29, 0xeb, 0x86, 0xcd, 0x2b, 0xec, 0x85, 0xcd, 0x2d, 0xeb, - 0x86, 0xcd, 0x2f, 0xec, 0x85, 0xcd, 0x31, 0xeb, 0x86, 0xcd, 0x32, 0xec, - 0x85, 0xcd, 0x34, 0xeb, 0x86, 0xcd, 0x35, 0xec, 0x85, 0xcd, 0x37, 0xeb, - 0x86, 0xcd, 0x38, 0xec, 0x85, 0xcd, 0x3a, 0xeb, 0x86, 0xcd, 0x3b, 0xec, - 0x85, 0xcd, 0x3c, 0xeb, 0x86, 0xcd, 0x3e, 0xec, 0x85, 0xcd, 0x3f, 0xeb, - 0x86, 0xcd, 0x40, 0xec, 0x85, 0xcd, 0x42, 0xeb, 0x86, 0xcd, 0x43, 0xec, - 0x85, 0xcd, 0x44, 0xeb, 0x86, 0xcd, 0x45, 0xec, 0x85, 0xcd, 0x46, 0xeb, - 0x86, 0xcd, 0x47, 0xec, 0x85, 0xcd, 0x48, 0xeb, 0x86, 0xcd, 0x49, 0xec, - 0x85, 0xcd, 0x4a, 0xeb, 0x86, 0xcd, 0x4b, 0xec, 0x85, 0xcd, 0x4c, 0xeb, - 0x86, 0xcd, 0x4d, 0xec, 0x85, 0xcd, 0x4e, 0xeb, 0x86, 0xcd, 0x4f, 0xec, - 0x85, 0xcd, 0x50, 0xeb, 0x86, 0xcd, 0x51, 0xec, 0x85, 0xcd, 0x52, 0xeb, - 0x86, 0xcd, 0x53, 0xec, 0x85, 0xcd, 0x54, 0xeb, 0x86, 0xcd, 0x55, 0xec, - 0x85, 0xcd, 0x56, 0xeb, 0x86, 0xcd, 0x57, 0xec, 0x85, 0xcd, 0x58, 0xeb, - 0x86, 0xcd, 0x58, 0xe9, 0x86, 0xcd, 0x59, 0xeb, 0x86, 0xcd, 0x5a, 0xe9, - 0x86, 0xcd, 0x5b, 0xeb, 0x86, 0xcd, 0x5c, 0xe9, 0x86, 0xcd, 0x5d, 0xeb, - 0x86, 0xcd, 0x5d, 0xe9, 0x86, 0xcd, 0x5e, 0xeb, 0x86, 0xcd, 0x5f, 0xe9, - 0x86, 0xcd, 0x60, 0xeb, 0x86, 0xcd, 0x60, 0xe9, 0x86, 0xcd, 0x61, 0xeb, - 0x86, 0xcd, 0x62, 0xe9, 0x86, 0xcd, 0x63, 0xeb, 0x86, 0xcd, 0x63, 0xe9, - 0x86, 0xcd, 0x64, 0xeb, 0x86, 0xcd, 0x65, 0xe9, 0x86, 0xcd, 0x66, 0xeb, - 0x86, 0xcd, 0x66, 0xe9, 0x86, 0xcd, 0x67, 0xeb, 0x86, 0xcd, 0x68, 0xe9, - 0x86, 0xcd, 0x68, 0xeb, 0x86, 0xcd, 0x69, 0xe9, 0x86, 0xcd, 0x6a, 0xeb, - 0x86, 0xcd, 0x6a, 0xe9, 0x86, 0xcd, 0x6b, 0xeb, 0x86, 0xcd, 0x6c, 0xe9, - 0x86, 0xcd, 0x6c, 0xeb, 0x86, 0xcd, 0x6d, 0xe9, 0x86, 0xcd, 0x6e, 0xeb, - 0x86, 0xcd, 0x6e, 0xe9, 0x86, 0xcd, 0x6f, 0xeb, 0x86, 0xcd, 0x70, 0xe9, - 0x86, 0xcd, 0x70, 0xeb, 0x86, 0xcd, 0x71, 0xe9, 0x86, 0xcd, 0x72, 0xeb, - 0x86, 0xcd, 0x72, 0xe9, 0x86, 0xcd, 0x73, 0xe8, 0x87, 0xcd, 0x73, 0xe9, - 0x86, 0xcd, 0x74, 0xe8, 0x87, 0xcd, 0x75, 0xe9, 0x86, 0xcd, 0x75, 0xe8, - 0x87, 0xcd, 0x76, 0xe9, 0x86, 0xcd, 0x76, 0xe8, 0x87, 0xcd, 0x77, 0xe9, - 0x86, 0xcd, 0x78, 0xe8, 0x87, 0xcd, 0x78, 0xe9, 0x86, 0xcd, 0x79, 0xe8, - 0x87, 0xcd, 0x79, 0xe9, 0x86, 0xcd, 0x7a, 0xe8, 0x87, 0xcd, 0x7a, 0xe9, - 0x86, 0xcd, 0x7b, 0xe8, 0x87, 0xcd, 0x7c, 0xe9, 0x86, 0xcd, 0x7c, 0xe8, - 0x87, 0xcd, 0x7d, 0xe9, 0x86, 0xcd, 0x7d, 0xe8, 0x87, 0xcd, 0x7e, 0xe9, - 0x86, 0xcd, 0x7e, 0xe8, 0x87, 0xcd, 0x7f, 0xe9, 0x86, 0xcd, 0x7f, 0xe8, - 0x87, 0xcd, 0x80, 0xe9, 0x86, 0xcd, 0x81, 0xe8, 0x87, 0xcd, 0x81, 0xe9, - 0x86, 0xcd, 0x82, 0xe8, 0x87, 0xcd, 0x82, 0xe9, 0x86, 0xcd, 0x83, 0xe8, - 0x87, 0xcd, 0x83, 0xe8, 0x87, 0xcd, 0x84, 0xe8, 0x87, 0xcd, 0x84, 0xe8, - 0x87, 0xcd, 0x85, 0xe8, 0x87, 0xcd, 0x85, 0xe8, 0x87, 0xcd, 0x86, 0xe8, - 0x87, 0xcd, 0x86, 0xe8, 0x87, 0xcd, 0x87, 0xe8, 0x87, 0xcc, 0x86, 0xe8, - 0x87, 0xcd, 0x87, 0xe8, 0x88, 0xcc, 0x86, 0xe8, 0x88, 0xcd, 0x87, 0xe8, - 0x89, 0xcc, 0x86, 0xe8, 0x89, 0xcd, 0x87, 0xe8, 0x8a, 0xcc, 0x86, 0xe8, - 0x8a, 0xcd, 0x87, 0xe8, 0x8b, 0xcc, 0x86, 0xe8, 0x8b, 0xcd, 0x87, 0xe8, - 0x8c, 0xcc, 0x86, 0xe8, 0x8c, 0xcd, 0x87, 0xe8, 0x8d, 0xcc, 0x86, 0xe8, - 0x8d, 0xcd, 0x87, 0xe8, 0x8e, 0xcc, 0x86, 0xe8, 0x8e, 0xcd, 0x87, 0xe8, - 0x8e, 0xcc, 0x86, 0xe8, 0x8f, 0xcd, 0x87, 0xe8, 0x8f, 0xcc, 0x86, 0xe8, - 0x90, 0xcd, 0x87, 0xe8, 0x90, 0xcc, 0x86, 0xe8, 0x91, 0xcd, 0x87, 0xe8, - 0x91, 0xcc, 0x86, 0xe8, 0x92, 0xcd, 0x87, 0xe8, 0x92, 0xcc, 0x87, 0xe8, - 0x93, 0xc8, 0x87, 0xe8, 0x93, 0xcc, 0x87, 0xe8, 0x94, 0xc8, 0x87, 0xe8, - 0x94, 0xcc, 0x87, 0xe8, 0x94, 0xc8, 0x87, 0xe8, 0x95, 0xcc, 0x87, 0xe8, - 0x95, 0xc8, 0x87, 0xe8, 0x96, 0xcc, 0x87, 0xe8, 0x96, 0xc8, 0x87, 0xe8, - 0x97, 0xcc, 0x87, 0xe8, 0x97, 0xc8, 0x87, 0xe8, 0x98, 0xcc, 0x87, 0xe8, - 0x98, 0xc8, 0x87, 0xe8, 0x98, 0xcc, 0x87, 0xe8, 0x99, 0xc8, 0x87, 0xe8, - 0x99, 0xcc, 0x87, 0xe8, 0x9a, 0xc8, 0x87, 0xe8, 0x9a, 0xcc, 0x87, 0xe8, - 0x9a, 0xc8, 0x87, 0xe8, 0x9b, 0xcc, 0x87, 0xe8, 0x9b, 0xc8, 0x87, 0xe8, - 0x9c, 0xcc, 0x87, 0xe8, 0x9c, 0xc8, 0x87, 0xe8, 0x9d, 0xcc, 0x87, 0xe8, - 0x9d, 0xc8, 0x87, 0xe8, 0x9d, 0xcc, 0x87, 0xe8, 0x9e, 0xc8, 0x87, 0xe8, - 0x9e, 0xcc, 0x87, 0xe8, 0x9f, 0xc8, 0x87, 0xe8, 0x9f, 0xcc, 0x87, 0xe8, - 0x9f, 0xc8, 0x87, 0xe8, 0xa0, 0xcc, 0x87, 0xe8, 0xa0, 0xc8, 0x87, 0xe8, - 0xa1, 0xcc, 0x87, 0xe8, 0xa1, 0xc8, 0x87, 0xe8, 0xa1, 0xcc, 0x87, 0xe8, - 0xa2, 0xc8, 0x87, 0xe8, 0xa2, 0xcc, 0x87, 0xe8, 0xa3, 0xc8, 0x87, 0xe8, - 0xa3, 0xcc, 0x87, 0xe8, 0xa3, 0xc8, 0xa0, 0xe8, 0xa4, 0xed, 0x9f, 0xe8, - 0xa4, 0xed, 0xa0, 0xe8, 0xa5, 0xed, 0x9f, 0xe8, 0xa5, 0xed, 0xa0, 0xe8, - 0xa5, 0xed, 0x9f, 0xe8, 0xa6, 0xed, 0xa0, 0xe8, 0xa6, 0xed, 0xa4, 0xe8, - 0xa6, 0xee, 0xa4, 0xe8, 0xa7, 0xee, 0xa4, 0xe8, 0xa7, 0xee, 0xa4, 0xe8, - 0xa8, 0xee, 0xa4, 0xe8, 0xa8, 0xee, 0xa4, 0xe8, 0xa8, 0xee, 0xa4, 0xe8, - 0xa9, 0xee, 0xa4, 0xe8, 0xa9, 0xee, 0xa4, 0xe8, 0xaa, 0xee, 0xa4, 0xe8, - 0xaa, 0xee, 0xa4, 0xe8, 0xaa, 0xee, 0xa8, 0xe8, 0xab, 0xef, 0xa4, 0xe8, - 0xab, 0xee, 0xa8, 0xe8, 0xab, 0xef, 0xa8, 0xe8, 0xac, 0xef, 0xa8, 0xe8, - 0xac, 0xef, 0xa8, 0xe8, 0xac, 0xef, 0xa8, 0xe8, 0xad, 0xef, 0xa8, 0xe8, - 0xad, 0xef, 0xa8, 0xe8, 0xae, 0xef, 0xa8, 0xe8, 0xae, 0xef, 0xa8, 0xe8, - 0xae, 0xef, 0xac, 0xe8, 0xaf, 0xf0, 0xa8, 0xe8, 0xaf, 0xef, 0xac, 0xe8, - 0xaf, 0xf0, 0xac, 0xe8, 0xb0, 0xf0, 0xac, 0xe8, 0xb0, 0xf0, 0xac, 0xe8, - 0xb0, 0xf0, 0xac, 0xe8, 0xb1, 0xf0, 0xac, 0xe8, 0xb1, 0xf0, 0xac, 0xe8, - 0xb2, 0xf0, 0xac, 0xe8, 0xb2, 0xf0, 0xac, 0xe8, 0xb2, 0xf0, 0xb0, 0xe8, - 0xb3, 0xf1, 0xac, 0xe8, 0xb3, 0xf0, 0xb0, 0xe8, 0xb3, 0xf1, 0xb0, 0xe8, - 0xb4, 0xf1, 0xb0, 0xe8, 0xb4, 0xf1, 0xb0, 0xe8, 0xb4, 0xf1, 0xb0, 0xe8, - 0xb5, 0xf1, 0xb0, 0xe8, 0xb5, 0xf1, 0xb0, 0xe8, 0xb5, 0xf1, 0xb0, 0xe8, - 0xb6, 0xf1, 0xb0, 0xe8, 0xb6, 0xf1, 0xcd, 0xe8, 0xb6, 0xd6, 0xcd, 0xe8, - 0xb7, 0xd3, 0xce, 0xe8, 0xb7, 0xd0, 0xcd, 0xe8, 0xb7, 0xd3, 0xce, 0xe8, - 0xb8, 0xd0, 0xcd, 0xe8, 0xb8, 0xd3, 0xce, 0xe8, 0xb8, 0xd0, 0xcd, 0xe8, - 0xb9, 0xd3, 0xce, 0xe8, 0xb9, 0xd0, 0xcd, 0xe8, 0xb9, 0xd3, 0xce, 0xe8, - 0xba, 0xd0, 0xcd, 0xe8, 0xba, 0xd3, 0xce, 0xe8, 0xba, 0xd0, 0xcd, 0xe8, - 0xbb, 0xd3, 0xce, 0xe8, 0xbb, 0xd0, 0xcd, 0xe8, 0xbb, 0xd3, 0xce, 0xe8, - 0xbc, 0xd0, 0xcd, 0xe8, 0xbc, 0xd3, 0xce, 0xe8, 0xbc, 0xd0, 0xcd, 0xe8, - 0xbd, 0xd3, 0xce, 0xe8, 0xbd, 0xd0, 0xcd, 0xe8, 0xbd, 0xd3, 0xce, 0xe8, - 0xbe, 0xd0, 0xcd, 0xe8, 0xbe, 0xd3, 0xce, 0xe8, 0xbe, 0xd0, 0xcd, 0xe8, - 0xbf, 0xd3, 0xce, 0xe8, 0xbf, 0xd0, 0xcd, 0xe8, 0xbf, 0xd3, 0xce, 0xe8, - 0xc0, 0xd0, 0xcd, 0xe8, 0xc0, 0xd3, 0xce, 0xe8, 0xc0, 0xd0, 0xcd, 0xe8, - 0xc1, 0xd3, 0xce, 0xe8, 0xc1, 0xd0, 0xcd, 0xe8, 0xc1, 0xd3, 0xce, 0xe8, - 0xc1, 0xd0, 0xcd, 0xe8, 0xc2, 0xd3, 0xce, 0xe8, 0xc2, 0xd0, 0xcd, 0xe8, - 0xc2, 0xd3, 0xce, 0xe8, 0xc3, 0xd0, 0xce, 0xe8, 0xc3, 0xcd, 0xce, 0xe8, - 0xc3, 0xd0, 0xce, 0xe8, 0xc4, 0xcd, 0xce, 0xe8, 0xc4, 0xd0, 0xce, 0xe8, - 0xc4, 0xcd, 0xce, 0xe8, 0xc5, 0xd0, 0xce, 0xe8, 0xc5, 0xcd, 0xce, 0xe8, - 0xc5, 0xd0, 0xce, 0xe8, 0xc6, 0xcd, 0xce, 0xe8, 0xc6, 0xd0, 0xce, 0xe8, - 0xc6, 0xcd, 0xce, 0xe8, 0xc6, 0xd0, 0xce, 0xe8, 0xc7, 0xcd, 0xce, 0xe8, - 0xc7, 0xd0, 0xce, 0xe8, 0xc7, 0xcd, 0xce, 0xe8, 0xc8, 0xd0, 0xce, 0xe8, - 0xc8, 0xcd, 0xce, 0xe8, 0xc8, 0xd0, 0xce, 0xe8, 0xc9, 0xcd, 0xce, 0xe8, - 0xc9, 0xd0, 0xce, 0xe8, 0xc9, 0xcd, 0xce, 0xe8, 0xc9, 0xd0, 0xce, 0xe8, - 0xca, 0xcd, 0xce, 0xe8, 0xca, 0xd0, 0xce, 0xe8, 0xca, 0xcd, 0xce, 0xe8, - 0xcb, 0xd0, 0xce, 0xe8, 0xcb, 0xcd, 0xce, 0xe8, 0xcb, 0xd0, 0xce, 0xe8, - 0xcc, 0xcd, 0xce, 0xe8, 0xcc, 0xcd, 0xce, 0xe8, 0xcc, 0xcd, 0xce, 0xe8, - 0xcc, 0xcd, 0xce, 0xe8, 0xcd, 0xcd, 0xce, 0xe8, 0xcd, 0xcd, 0xce, 0xe8, - 0xcd, 0xcd, 0xce, 0xe8, 0xce, 0xcd, 0xce, 0xe7, 0xce, 0xcd, 0xce, 0xe8, - 0xce, 0xcd, 0xce, 0xe7, 0xce, 0xcd, 0xcf, 0xe8, 0xce, 0xcd, 0xcf, 0xe7, - 0xce, 0xcd, 0xcf, 0xe8, 0xce, 0xcd, 0xd0, 0xe7, 0xce, 0xcd, 0xd0, 0xe8, - 0xce, 0xcd, 0xd0, 0xe7, 0xce, 0xcd, 0xd0, 0xe6, 0xce, 0xcd, 0xd1, 0xe7, - 0xce, 0xcd, 0xd1, 0xe6, 0xce, 0xcd, 0xd1, 0xe7, 0xce, 0xcd, 0xd2, 0xe6, - 0xce, 0xcd, 0xd2, 0xe7, 0xce, 0xcd, 0xd2, 0xe6, 0xce, 0xcd, 0xd2, 0xe7, - 0xce, 0xcd, 0xd3, 0xe6, 0xce, 0xcd, 0xd3, 0xe7, 0xce, 0xcd, 0xd3, 0xe6, - 0xce, 0xcd, 0xd4, 0xe7, 0xce, 0xcd, 0xd4, 0xe6, 0xce, 0xcd, 0xd4, 0xe7, - 0xce, 0xcd, 0xd4, 0xe6, 0xce, 0xcd, 0xd5, 0xe7, 0xce, 0xcd, 0xd5, 0xe6, - 0xce, 0xcd, 0xd5, 0xe7, 0xce, 0xcd, 0xd6, 0xe6, 0xce, 0xcd, 0xd6, 0xe7, - 0xce, 0xcd, 0xd6, 0xe6, 0xce, 0xcd, 0xd6, 0xe7, 0xce, 0xcd, 0xd7, 0xe6, - 0xce, 0xcd, 0xd7, 0xe7, 0xce, 0xcd, 0xd7, 0xe6, 0xce, 0xcd, 0xd7, 0xe7, - 0xce, 0xcd, 0xd8, 0xe6, 0xce, 0xcd, 0xd8, 0xe7, 0xce, 0xcd, 0xd8, 0xe6, - 0xce, 0xcd, 0xd9, 0xe5, 0xce, 0xcd, 0xd9, 0xe6, 0xce, 0xcd, 0xd9, 0xe5, - 0xce, 0xcd, 0xd9, 0xe6, 0xce, 0xcd, 0xda, 0xe5, 0xce, 0xcd, 0xda, 0xe6, - 0xce, 0xcd, 0xda, 0xe5, 0xce, 0xcd, 0xda, 0xe6, 0xce, 0xcd, 0xdb, 0xea, - 0xe6, 0xcd, 0xdb, 0xe9, 0xe6, 0xcd, 0xdb, 0xea, 0xe6, 0xcd, 0xdb, 0xe9, - 0xe6, 0xcd, 0xdc, 0xea, 0xe6, 0xcd, 0xdc, 0xe9, 0xe6, 0xcd, 0xdc, 0xea, - 0xe6, 0xcd, 0xdd, 0xe9, 0xe6, 0xcd, 0xdd, 0xea, 0xe6, 0xcd, 0xdd, 0xe9, - 0xe6, 0xcd, 0xdd, 0xea, 0xe6, 0xcd, 0xde, 0xe9, 0xe6, 0xcd, 0xde, 0xea, - 0xe6, 0xcd, 0xde, 0xe9, 0xe6, 0xcd, 0xde, 0xea, 0xe6, 0xcd, 0xdf, 0xe9, - 0xe6, 0xcd, 0xdf, 0xea, 0xe6, 0xcd, 0xdf, 0xe9, 0xe6, 0xcd, 0xdf, 0xea, - 0xe6, 0xcd, 0xe0, 0xe9, 0xe6, 0xcd, 0xe0, 0xea, 0xe6, 0xcd, 0xe0, 0xe9, - 0xe6, 0xcd, 0xe1, 0xe8, 0xe7, 0xcd, 0xe1, 0xe9, 0xe6, 0xcd, 0xe1, 0xe8, - 0xe7, 0xcd, 0xe1, 0xe9, 0xe6, 0xcd, 0xe2, 0xe8, 0xe7, 0xcd, 0xe2, 0xe9, - 0xe6, 0xcd, 0xe2, 0xe8, 0xe7, 0xcd, 0xe2, 0xe9, 0xe6, 0xcd, 0xe3, 0xe8, - 0xe7, 0xcd, 0xe3, 0xe9, 0xe6, 0xcd, 0xe3, 0xe8, 0xe7, 0xcd, 0xe3, 0xe9, - 0xe6, 0xcd, 0xe4, 0xe8, 0xe7, 0xcd, 0xe4, 0xe9, 0xe6, 0xcd, 0xe4, 0xe8, - 0xe7, 0xcd, 0xe4, 0xe9, 0xe6, 0xcd, 0xe5, 0xe8, 0xe7, 0xcd, 0xe5, 0xe9, - 0xe6, 0xcd, 0xe5, 0xe8, 0xe7, 0xcd, 0xe5, 0xe9, 0xe6, 0xcd, 0xe6, 0xe8, - 0xe7, 0xcd, 0xe6, 0xe8, 0xe7, 0xcd, 0xe6, 0xe8, 0xe7, 0xcd, 0xe6, 0xe8, - 0xe7, 0xcd, 0xe7, 0xe8, 0xe7, 0xcc, 0xe6, 0xe8, 0xe7, 0xcd, 0xe7, 0xe8, - 0xe7, 0xcc, 0xe6, 0xe8, 0xe7, 0xcd, 0xe7, 0xe8, 0xe8, 0xcc, 0xe6, 0xe8, - 0xe8, 0xcd, 0xe7, 0xe8, 0xe8, 0xcc, 0xe6, 0xe8, 0xe8, 0xcd, 0xeb, 0xe8, - 0xe9, 0xcd, 0xeb, 0xe8, 0xe9, 0xcd, 0xeb, 0xe8, 0xe9, 0xcd, 0xeb, 0xe8, - 0xe9, 0xcd, 0xeb, 0xe8, 0xea, 0xcd, 0xeb, 0xe8, 0xea, 0xcd, 0xeb, 0xe8, - 0xea, 0xcd, 0xeb, 0xe8, 0xea, 0xcd, 0xeb, 0xe8, 0xea, 0xcd, 0xeb, 0xe8, - 0xea, 0xcd, 0xeb, 0xe8, 0xea, 0xcd, 0xeb, 0xe8, 0xea, 0xcd, 0xec, 0xe7, - 0xeb, 0xcd, 0xec, 0xe8, 0xea, 0xcd, 0xec, 0xe7, 0xeb, 0xcd, 0xec, 0xe8, - 0xea, 0xcd, 0xec, 0xe7, 0xeb, 0xcd, 0xed, 0xe8, 0xea, 0xcd, 0xed, 0xe7, - 0xeb, 0xcd, 0xed, 0xe8, 0xea, 0xcd, 0xed, 0xe7, 0xeb, 0xcd, 0xee, 0xe8, - 0xea, 0xcd, 0xee, 0xe7, 0xeb, 0xcd, 0xee, 0xec, 0xee, 0xcd, 0xee, 0xec, - 0xee, 0xcd, 0xef, 0xec, 0xee, 0xcd, 0xef, 0xec, 0xee, 0xcd, 0xef, 0xec, - 0xee, 0xcd, 0xef, 0xec, 0xee, 0xcd, 0xf0, 0xec, 0xee, 0xcd, 0xf0, 0xec, - 0xee, 0xcd, 0xf0, 0xec, 0xee, 0xcd, 0xf0, 0xec, 0xee, 0xcd, 0xf1, 0xec, - 0xf1, 0xcd, 0xf1, 0xec, 0xf1, 0xcd, 0xf1, 0xec, 0xf1, 0xcd, 0xf1, 0xec, - 0xf1, 0xcd, 0xf2, 0xec, 0xf1, 0xcd, 0xf2, 0xec, 0xf1, 0xcd, 0xf2, 0xec, - 0xf1, 0xcd, 0xf2, 0xec, 0xf1, 0xcd, 0xf2, 0xec, 0xf1, 0xcd, 0xf3, 0xec, - 0xf1, 0xcd, 0xf3, 0xec, 0xf1, 0xcd, 0xf3, 0xec, 0xf1, 0xcd, 0xf3, 0xec, - 0xf1, 0xcd, 0xf4, 0xec, 0xf1, 0xcd, 0xf4, 0xec, 0xf1, 0xcd, 0xf4, 0xec, - 0xf1, 0xcd, 0xf4, 0xec, 0xf1, 0xcd, 0xf5, 0xec, 0xf1, 0xcd, 0xf5, 0xec, - 0xf1, 0xcd, 0xf5, 0xec, 0xf1, 0xcd, 0xf5, 0xec, 0xf1, 0xcd, 0xf5, 0xec, - 0xf1, 0xcd, 0xf6, 0xec, 0xf1, 0xcd, 0xf6, 0xec, 0xf1, 0xcd, 0xf6, 0xec, - 0xf1, 0xcd, 0xf6, 0xec, 0xf1, 0xcd, 0xf7, 0xec, 0xf1, 0xcd, 0xf7, 0xec, - 0xf1, 0xcd, 0xf7, 0xec, 0xf1, 0xcd, 0xf7, 0xec, 0xf1, 0xcd, 0xf8, 0xec, - 0xf1, 0xcd, 0xf8, 0xec, 0xf1, 0xcd, 0xf8, 0xec, 0xf1, 0xcd, 0xf8, 0xec, - 0xf1, 0xcd, 0xf8, 0xec, 0xf1, 0xcd, 0xf9, 0xec, 0xf1, 0xcd, 0xf9, 0xec, - 0xf1, 0xcd, 0xf9, 0xec, 0xf1, 0xcd, 0xf9, 0xec, 0xf1, 0xcd, 0xfa, 0xec, - 0xf1, 0xcd, 0xfa, 0xec, 0xf1, 0xcd, 0xfa, 0xec, 0xf1, 0xcd, 0xfa, 0xec, - 0xf1, 0xcd, 0xfa, 0xec, 0xf1, 0xcd, 0xfb, 0xec, 0xf1, 0xcd, 0xfb, 0xec, - 0xf1, 0xcd, 0xfb, 0xec, 0xf1, 0xcd, 0xfb, 0xec, 0xf1, 0xcd, 0xfc, 0xec, - 0xf1, 0xcd, 0xfc, 0xec, 0xf1, 0xcd, 0xfc, 0xec, 0xf1, 0xcd, 0xfc, 0xec, - 0xf1, 0xcd, 0xfc, 0xec, 0xf1, 0xcd, 0xfd, 0xec, 0xf1, 0xcd, 0xfd, 0xec, - 0xf1, 0xcd, 0xfd, 0xec, 0xf1, 0xcd, 0xfd, 0xec, 0xf1, 0xcd, 0xfe, 0xec, - 0xf1, 0xcd, 0xfe, 0xec, 0xf1, 0xcd, 0xfe, 0xec, 0xf1, 0xcd, 0xfe, 0xec, - 0xf1, 0xcd, 0xfe, 0xec, 0xf1, 0xcd, 0xff, 0xec, 0xf1, 0xcd, 0xff, 0xec, - 0xf1, 0xcd, 0x03, 0xec, 0x85, 0xcd, 0x0a, 0xec, 0x85, 0xcd, 0x0f, 0xec, - 0x85, 0xcd, 0x14, 0xec, 0x85, 0xcd, 0x17, 0xec, 0x85, 0xcd, 0x1b, 0xec, - 0x85, 0xcd, 0x1e, 0xec, 0x85, 0xcd, 0x20, 0xee, 0x85, 0xcd, 0x23, 0xec, - 0x85, 0xcd, 0x25, 0xee, 0x85, 0xcd, 0x27, 0xec, 0x85, 0xcd, 0x29, 0xee, - 0x85, 0xcd, 0x2b, 0xec, 0x85, 0xcd, 0x2d, 0xeb, 0x86, 0xcd, 0x2f, 0xec, - 0x85, 0xcd, 0x31, 0xeb, 0x86, 0xcd, 0x32, 0xec, 0x85, 0xcd, 0x34, 0xeb, - 0x86, 0xcd, 0x35, 0xec, 0x85, 0xcd, 0x37, 0xeb, 0x86, 0xcd, 0x38, 0xec, - 0x85, 0xcd, 0x3a, 0xeb, 0x86, 0xcd, 0x3b, 0xec, 0x85, 0xcd, 0x3c, 0xeb, - 0x86, 0xcd, 0x3e, 0xec, 0x85, 0xcd, 0x3f, 0xeb, 0x86, 0xcd, 0x40, 0xec, - 0x85, 0xcd, 0x42, 0xeb, 0x86, 0xcd, 0x43, 0xec, 0x85, 0xcd, 0x44, 0xeb, - 0x86, 0xcd, 0x45, 0xec, 0x85, 0xcd, 0x46, 0xeb, 0x86, 0xcd, 0x47, 0xec, - 0x85, 0xcd, 0x48, 0xeb, 0x86, 0xcd, 0x49, 0xec, 0x85, 0xcd, 0x4a, 0xeb, - 0x86, 0xcd, 0x4b, 0xec, 0x85, 0xcd, 0x4c, 0xeb, 0x86, 0xcd, 0x4d, 0xec, - 0x85, 0xcd, 0x4e, 0xeb, 0x86, 0xcd, 0x4f, 0xec, 0x85, 0xcd, 0x50, 0xeb, - 0x86, 0xcd, 0x51, 0xec, 0x85, 0xcd, 0x52, 0xeb, 0x86, 0xcd, 0x53, 0xec, - 0x85, 0xcd, 0x54, 0xeb, 0x86, 0xcd, 0x55, 0xe9, 0x86, 0xcd, 0x56, 0xeb, - 0x86, 0xcd, 0x57, 0xe9, 0x86, 0xcd, 0x58, 0xeb, 0x86, 0xcd, 0x58, 0xe9, - 0x86, 0xcd, 0x59, 0xeb, 0x86, 0xcd, 0x5a, 0xe9, 0x86, 0xcd, 0x5b, 0xeb, - 0x86, 0xcd, 0x5c, 0xe9, 0x86, 0xcd, 0x5d, 0xeb, 0x86, 0xcd, 0x5d, 0xe9, - 0x86, 0xcd, 0x5e, 0xeb, 0x86, 0xcd, 0x5f, 0xe9, 0x86, 0xcd, 0x60, 0xeb, - 0x86, 0xcd, 0x60, 0xe9, 0x86, 0xcd, 0x61, 0xeb, 0x86, 0xcd, 0x62, 0xe9, - 0x86, 0xcd, 0x63, 0xeb, 0x86, 0xcd, 0x63, 0xe9, 0x86, 0xcd, 0x64, 0xeb, - 0x86, 0xcd, 0x65, 0xe9, 0x86, 0xcd, 0x66, 0xeb, 0x86, 0xcd, 0x66, 0xe9, - 0x86, 0xcd, 0x67, 0xeb, 0x86, 0xcd, 0x68, 0xe9, 0x86, 0xcd, 0x68, 0xeb, - 0x86, 0xcd, 0x69, 0xe9, 0x86, 0xcd, 0x6a, 0xeb, 0x86, 0xcd, 0x6a, 0xe9, - 0x86, 0xcd, 0x6b, 0xeb, 0x86, 0xcd, 0x6c, 0xe9, 0x86, 0xcd, 0x6c, 0xeb, - 0x86, 0xcd, 0x6d, 0xe9, 0x86, 0xcd, 0x6e, 0xeb, 0x86, 0xcd, 0x6e, 0xe9, - 0x86, 0xcd, 0x6f, 0xeb, 0x86, 0xcd, 0x70, 0xe9, 0x86, 0xcd, 0x70, 0xeb, - 0x86, 0xcd, 0x71, 0xe9, 0x86, 0xcd, 0x72, 0xeb, 0x86, 0xcd, 0x72, 0xe9, - 0x86, 0xcd, 0x73, 0xe8, 0x87, 0xcd, 0x73, 0xe9, 0x86, 0xcd, 0x74, 0xe8, - 0x87, 0xcd, 0x75, 0xe9, 0x86, 0xcd, 0x75, 0xe8, 0x87, 0xcd, 0x76, 0xe9, - 0x86, 0xcd, 0x76, 0xe8, 0x87, 0xcd, 0x77, 0xe9, 0x86, 0xcd, 0x78, 0xe8, - 0x87, 0xcd, 0x78, 0xe9, 0x86, 0xcd, 0x79, 0xe8, 0x87, 0xcd, 0x79, 0xe9, - 0x86, 0xcd, 0x7a, 0xe8, 0x87, 0xcd, 0x7a, 0xe9, 0x86, 0xcd, 0x7b, 0xe8, - 0x87, 0xcd, 0x7c, 0xe9, 0x86, 0xcd, 0x7c, 0xe8, 0x87, 0xcd, 0x7d, 0xe9, - 0x86, 0xcd, 0x7d, 0xe8, 0x87, 0xcd, 0x7e, 0xe9, 0x86, 0xcd, 0x7e, 0xe8, - 0x87, 0xcd, 0x7f, 0xe9, 0x86, 0xcd, 0x7f, 0xe8, 0x87, 0xcd, 0x80, 0xe9, - 0x86, 0xcd, 0x81, 0xe8, 0x87, 0xcd, 0x81, 0xe9, 0x86, 0xcd, 0x82, 0xe8, - 0x87, 0xcd, 0x82, 0xe9, 0x86, 0xcd, 0x83, 0xe8, 0x87, 0xcd, 0x83, 0xe9, - 0x86, 0xcd, 0x84, 0xe8, 0x87, 0xcd, 0x84, 0xe9, 0x86, 0xcd, 0x85, 0xe8, - 0x87, 0xcd, 0x85, 0xe8, 0x87, 0xcd, 0x86, 0xe8, 0x87, 0xcd, 0x86, 0xe8, - 0x87, 0xcd, 0x86, 0xe8, 0x87, 0xcd, 0x86, 0xe8, 0x87, 0xcd, 0x86, 0xe8, - 0x88, 0xcd, 0x86, 0xe8, 0x88, 0xcd, 0x87, 0xe8, 0x89, 0xcb, 0x86, 0xe8, - 0x89, 0xcd, 0x87, 0xe8, 0x8a, 0xcb, 0x86, 0xe8, 0x8a, 0xcd, 0x87, 0xe8, - 0x8b, 0xcb, 0x86, 0xe8, 0x8b, 0xcd, 0x87, 0xe8, 0x8c, 0xcb, 0x86, 0xe8, - 0x8c, 0xcd, 0x87, 0xe8, 0x8d, 0xcb, 0x86, 0xe8, 0x8d, 0xcd, 0x87, 0xe8, - 0x8e, 0xcb, 0x86, 0xe8, 0x8e, 0xcd, 0x87, 0xe8, 0x8e, 0xcb, 0x86, 0xe8, - 0x8f, 0xcd, 0x87, 0xe8, 0x8f, 0xcb, 0x86, 0xe8, 0x90, 0xcd, 0x87, 0xe8, - 0x90, 0xcb, 0x86, 0xe8, 0x91, 0xcd, 0x87, 0xe8, 0x91, 0xcb, 0x86, 0xe8, - 0x92, 0xcd, 0x87, 0xe8, 0x92, 0xcb, 0x87, 0xe8, 0x93, 0xc8, 0x87, 0xe8, - 0x93, 0xcb, 0x87, 0xe8, 0x94, 0xc8, 0x87, 0xe8, 0x94, 0xcb, 0x87, 0xe8, - 0x94, 0xc8, 0x87, 0xe8, 0x95, 0xcb, 0x87, 0xe8, 0x95, 0xc8, 0x87, 0xe8, - 0x96, 0xcb, 0x87, 0xe8, 0x96, 0xc8, 0x87, 0xe8, 0x97, 0xcb, 0x87, 0xe8, - 0x97, 0xc8, 0x87, 0xe8, 0x98, 0xcb, 0x87, 0xe8, 0x98, 0xc8, 0x87, 0xe8, - 0x98, 0xcb, 0x87, 0xe8, 0x99, 0xc8, 0x87, 0xe8, 0x99, 0xcb, 0x87, 0xe8, - 0x9a, 0xc8, 0x87, 0xe8, 0x9a, 0xcb, 0x87, 0xe8, 0x9a, 0xc8, 0x87, 0xe8, - 0x9b, 0xcb, 0x87, 0xe8, 0x9b, 0xc8, 0x87, 0xe8, 0x9c, 0xcb, 0x87, 0xe8, - 0x9c, 0xc8, 0x87, 0xe8, 0x9d, 0xcb, 0x87, 0xe8, 0x9d, 0xc8, 0x87, 0xe8, - 0x9d, 0xcb, 0x87, 0xe8, 0x9e, 0xc8, 0x87, 0xe8, 0x9e, 0xcb, 0x87, 0xe8, - 0x9f, 0xc8, 0x87, 0xe8, 0x9f, 0xcb, 0x87, 0xe8, 0x9f, 0xc8, 0x87, 0xe8, - 0xa0, 0xcb, 0x87, 0xe8, 0xa0, 0xc8, 0x87, 0xe8, 0xa1, 0xcb, 0x87, 0xe8, - 0xa1, 0xc8, 0x87, 0xe8, 0xa1, 0xcb, 0x87, 0xe8, 0xa2, 0xc8, 0x87, 0xe8, - 0xa2, 0xcb, 0x87, 0xe8, 0xa3, 0xc8, 0x9d, 0xe8, 0xa3, 0xec, 0x9e, 0xe8, - 0xa3, 0xec, 0x9d, 0xe8, 0xa4, 0xec, 0x9e, 0xe8, 0xa4, 0xec, 0xa2, 0xe8, - 0xa5, 0xed, 0xa2, 0xe8, 0xa5, 0xed, 0xa2, 0xe8, 0xa5, 0xed, 0xa2, 0xe8, - 0xa6, 0xed, 0xa2, 0xe8, 0xa6, 0xed, 0xa2, 0xe8, 0xa6, 0xed, 0xa2, 0xe8, - 0xa7, 0xed, 0xa2, 0xe8, 0xa7, 0xed, 0xa2, 0xe8, 0xa8, 0xed, 0xa2, 0xe8, - 0xa8, 0xed, 0xa2, 0xe8, 0xa8, 0xed, 0xa6, 0xe8, 0xa9, 0xee, 0xa6, 0xe8, - 0xa9, 0xee, 0xa6, 0xe8, 0xaa, 0xee, 0xa6, 0xe8, 0xaa, 0xee, 0xa6, 0xe8, - 0xaa, 0xee, 0xa6, 0xe8, 0xab, 0xee, 0xa6, 0xe8, 0xab, 0xee, 0xa6, 0xe8, - 0xab, 0xee, 0xa6, 0xe8, 0xac, 0xee, 0xa6, 0xe8, 0xac, 0xee, 0xa6, 0xe8, - 0xac, 0xee, 0xab, 0xe8, 0xad, 0xef, 0xa6, 0xe8, 0xad, 0xee, 0xab, 0xe8, - 0xae, 0xef, 0xaa, 0xe8, 0xae, 0xef, 0xab, 0xe8, 0xae, 0xef, 0xaa, 0xe8, - 0xaf, 0xef, 0xab, 0xe8, 0xaf, 0xef, 0xaa, 0xe8, 0xaf, 0xef, 0xab, 0xe8, - 0xb0, 0xef, 0xaa, 0xe8, 0xb0, 0xef, 0xab, 0xe8, 0xb0, 0xef, 0xaf, 0xe8, - 0xb1, 0xf0, 0xab, 0xe8, 0xb1, 0xef, 0xaf, 0xe8, 0xb2, 0xf0, 0xae, 0xe8, - 0xb2, 0xf0, 0xaf, 0xe8, 0xb2, 0xf0, 0xae, 0xe8, 0xb3, 0xf0, 0xaf, 0xe8, - 0xb3, 0xf0, 0xae, 0xe8, 0xb3, 0xf0, 0xaf, 0xe8, 0xb4, 0xf0, 0xae, 0xe8, - 0xb4, 0xf0, 0xaf, 0xe8, 0xb4, 0xf0, 0xb3, 0xe8, 0xb5, 0xf1, 0xaf, 0xe8, - 0xb5, 0xf0, 0xb3, 0xe8, 0xb5, 0xf1, 0xb2, 0xe8, 0xb6, 0xf1, 0xb3, 0xe8, - 0xb6, 0xf1, 0xb2, 0xe8, 0xb6, 0xf1, 0xcd, 0xe8, 0xb7, 0xd2, 0xcd, 0xe8, - 0xb7, 0xd5, 0xcd, 0xe8, 0xb7, 0xd2, 0xcd, 0xe8, 0xb8, 0xd5, 0xcd, 0xe8, - 0xb8, 0xd2, 0xcd, 0xe8, 0xb8, 0xd5, 0xcd, 0xe8, 0xb9, 0xd2, 0xcd, 0xe8, - 0xb9, 0xd5, 0xcd, 0xe8, 0xb9, 0xd2, 0xcd, 0xe8, 0xba, 0xd5, 0xcd, 0xe8, - 0xba, 0xd2, 0xcd, 0xe8, 0xba, 0xd5, 0xcd, 0xe8, 0xbb, 0xd2, 0xcd, 0xe8, - 0xbb, 0xd5, 0xcd, 0xe8, 0xbb, 0xd2, 0xcd, 0xe8, 0xbc, 0xd5, 0xcd, 0xe8, - 0xbc, 0xd2, 0xce, 0xe8, 0xbc, 0xd0, 0xcd, 0xe8, 0xbd, 0xd2, 0xce, 0xe8, - 0xbd, 0xd0, 0xcd, 0xe8, 0xbd, 0xd2, 0xce, 0xe8, 0xbe, 0xd0, 0xcd, 0xe8, - 0xbe, 0xd2, 0xce, 0xe8, 0xbe, 0xd0, 0xcd, 0xe8, 0xbf, 0xd2, 0xce, 0xe8, - 0xbf, 0xd0, 0xcd, 0xe8, 0xbf, 0xd2, 0xce, 0xe8, 0xc0, 0xd0, 0xcd, 0xe8, - 0xc0, 0xd2, 0xce, 0xe8, 0xc0, 0xd0, 0xcd, 0xe8, 0xc1, 0xd2, 0xce, 0xe8, - 0xc1, 0xd0, 0xcd, 0xe8, 0xc1, 0xd2, 0xce, 0xe8, 0xc1, 0xd0, 0xcd, 0xe8, - 0xc2, 0xd2, 0xce, 0xe8, 0xc2, 0xd0, 0xcd, 0xe8, 0xc2, 0xd2, 0xce, 0xe8, - 0xc3, 0xd0, 0xcd, 0xe8, 0xc3, 0xd2, 0xce, 0xe8, 0xc3, 0xd0, 0xcd, 0xe8, - 0xc4, 0xd2, 0xce, 0xe8, 0xc4, 0xd0, 0xcd, 0xe8, 0xc4, 0xd2, 0xce, 0xe8, - 0xc5, 0xd0, 0xcd, 0xe8, 0xc5, 0xd2, 0xce, 0xe8, 0xc5, 0xd0, 0xcd, 0xe8, - 0xc6, 0xd2, 0xce, 0xe8, 0xc6, 0xd0, 0xcd, 0xe8, 0xc6, 0xd2, 0xce, 0xe8, - 0xc6, 0xd0, 0xce, 0xe8, 0xc7, 0xcd, 0xce, 0xe8, 0xc7, 0xd0, 0xce, 0xe8, - 0xc7, 0xcd, 0xce, 0xe8, 0xc8, 0xd0, 0xce, 0xe8, 0xc8, 0xcd, 0xce, 0xe8, - 0xc8, 0xd0, 0xce, 0xe8, 0xc9, 0xcd, 0xce, 0xe8, 0xc9, 0xd0, 0xce, 0xe8, - 0xc9, 0xcd, 0xce, 0xe8, 0xc9, 0xd0, 0xce, 0xe8, 0xca, 0xcd, 0xce, 0xe8, - 0xca, 0xd0, 0xce, 0xe8, 0xca, 0xcd, 0xce, 0xe8, 0xcb, 0xd0, 0xce, 0xe8, - 0xcb, 0xcd, 0xce, 0xe8, 0xcb, 0xd0, 0xce, 0xe8, 0xcc, 0xcd, 0xce, 0xe8, - 0xcc, 0xcd, 0xce, 0xe8, 0xcc, 0xcd, 0xce, 0xe8, 0xcc, 0xcd, 0xce, 0xe8, - 0xcd, 0xcd, 0xce, 0xe8, 0xcd, 0xcd, 0xce, 0xe8, 0xcd, 0xcd, 0xce, 0xe8, - 0xce, 0xcd, 0xce, 0xe7, 0xce, 0xcd, 0xce, 0xe8, 0xce, 0xcd, 0xce, 0xe7, - 0xce, 0xcd, 0xcf, 0xe8, 0xce, 0xcd, 0xcf, 0xe7, 0xce, 0xcd, 0xcf, 0xe8, - 0xce, 0xcd, 0xd0, 0xe7, 0xce, 0xcd, 0xd0, 0xe8, 0xce, 0xcd, 0xd0, 0xe7, - 0xce, 0xcd, 0xd0, 0xe8, 0xce, 0xcd, 0xd1, 0xe7, 0xce, 0xcd, 0xd1, 0xe8, - 0xce, 0xcd, 0xd1, 0xe7, 0xce, 0xcd, 0xd2, 0xe8, 0xce, 0xcd, 0xd2, 0xe7, - 0xce, 0xcd, 0xd2, 0xe8, 0xce, 0xcd, 0xd2, 0xe7, 0xce, 0xcd, 0xd3, 0xe6, - 0xce, 0xcd, 0xd3, 0xe7, 0xce, 0xcd, 0xd3, 0xe6, 0xce, 0xcd, 0xd4, 0xe7, - 0xce, 0xcd, 0xd4, 0xe6, 0xce, 0xcd, 0xd4, 0xe7, 0xce, 0xcd, 0xd4, 0xe6, - 0xce, 0xcd, 0xd5, 0xe7, 0xce, 0xcd, 0xd5, 0xe6, 0xce, 0xcd, 0xd5, 0xe7, - 0xce, 0xcd, 0xd6, 0xe6, 0xce, 0xcd, 0xd6, 0xe7, 0xce, 0xcd, 0xd6, 0xe6, - 0xce, 0xcd, 0xd6, 0xe7, 0xce, 0xcd, 0xd7, 0xe6, 0xce, 0xcd, 0xd7, 0xe7, - 0xce, 0xcd, 0xd7, 0xe6, 0xce, 0xcd, 0xd7, 0xe7, 0xce, 0xcd, 0xd8, 0xe6, - 0xce, 0xcd, 0xd8, 0xe7, 0xce, 0xcd, 0xd8, 0xe6, 0xce, 0xcd, 0xd9, 0xe7, - 0xce, 0xcd, 0xd9, 0xe6, 0xce, 0xcd, 0xd9, 0xe7, 0xce, 0xcd, 0xd9, 0xe6, - 0xce, 0xcd, 0xda, 0xe7, 0xce, 0xcd, 0xda, 0xe6, 0xce, 0xcd, 0xda, 0xe7, - 0xce, 0xcd, 0xda, 0xe6, 0xce, 0xcd, 0xdb, 0xea, 0xe6, 0xcd, 0xdb, 0xe9, - 0xe6, 0xcd, 0xdb, 0xea, 0xe6, 0xcd, 0xdb, 0xe9, 0xe6, 0xcd, 0xdc, 0xea, - 0xe6, 0xcd, 0xdc, 0xe9, 0xe6, 0xcd, 0xdc, 0xea, 0xe6, 0xcd, 0xdd, 0xe9, - 0xe6, 0xcd, 0xdd, 0xea, 0xe6, 0xcd, 0xdd, 0xe9, 0xe6, 0xcd, 0xdd, 0xea, - 0xe6, 0xcd, 0xde, 0xe9, 0xe6, 0xcd, 0xde, 0xea, 0xe6, 0xcd, 0xde, 0xe9, - 0xe6, 0xcd, 0xde, 0xea, 0xe6, 0xcd, 0xdf, 0xe9, 0xe6, 0xcd, 0xdf, 0xea, - 0xe6, 0xcd, 0xdf, 0xe9, 0xe6, 0xcd, 0xdf, 0xea, 0xe6, 0xcd, 0xe0, 0xe9, - 0xe6, 0xcd, 0xe0, 0xea, 0xe6, 0xcd, 0xe0, 0xe9, 0xe6, 0xcd, 0xe1, 0xe8, - 0xe7, 0xcd, 0xe1, 0xe9, 0xe6, 0xcd, 0xe1, 0xe8, 0xe7, 0xcd, 0xe1, 0xe9, - 0xe6, 0xcd, 0xe2, 0xe8, 0xe7, 0xcd, 0xe2, 0xe9, 0xe6, 0xcd, 0xe2, 0xe8, - 0xe7, 0xcd, 0xe2, 0xe9, 0xe6, 0xcd, 0xe3, 0xe8, 0xe7, 0xcd, 0xe3, 0xe9, - 0xe6, 0xcd, 0xe3, 0xe8, 0xe7, 0xcd, 0xe3, 0xe9, 0xe6, 0xcd, 0xe4, 0xe8, - 0xe7, 0xcd, 0xe4, 0xe9, 0xe6, 0xcd, 0xe4, 0xe8, 0xe7, 0xcd, 0xe4, 0xe9, - 0xe6, 0xcd, 0xe5, 0xe8, 0xe7, 0xcd, 0xe5, 0xe9, 0xe6, 0xcd, 0xe5, 0xe8, - 0xe7, 0xcd, 0xe5, 0xe9, 0xe6, 0xcd, 0xe6, 0xe8, 0xe7, 0xcd, 0xe6, 0xe8, - 0xe7, 0xcd, 0xe6, 0xe8, 0xe7, 0xcd, 0xe6, 0xe8, 0xe7, 0xcd, 0xe6, 0xe8, - 0xe7, 0xcd, 0xe6, 0xe8, 0xe7, 0xcd, 0xe6, 0xe8, 0xe7, 0xcd, 0xe6, 0xe8, - 0xe7, 0xcd, 0xe7, 0xe8, 0xe8, 0xcb, 0xe6, 0xe8, 0xe8, 0xcd, 0xe7, 0xe8, - 0xe8, 0xcb, 0xe6, 0xe8, 0xe8, 0xcd, 0xeb, 0xe8, 0xe9, 0xcd, 0xeb, 0xe8, - 0xe9, 0xcd, 0xeb, 0xe8, 0xe9, 0xcd, 0xeb, 0xe8, 0xe9, 0xcd, 0xeb, 0xe8, - 0xea, 0xcd, 0xeb, 0xe8, 0xea, 0xcd, 0xeb, 0xe8, 0xea, 0xcd, 0xeb, 0xe8, - 0xea, 0xcd, 0xeb, 0xe8, 0xea, 0xcd, 0xeb, 0xe8, 0xea, 0xcd, 0xeb, 0xe8, - 0xea, 0xcd, 0xeb, 0xe8, 0xea, 0xcd, 0xec, 0xe7, 0xeb, 0xcd, 0xec, 0xe8, - 0xea, 0xcd, 0xec, 0xe7, 0xeb, 0xcd, 0xec, 0xe8, 0xea, 0xcd, 0xec, 0xe7, - 0xeb, 0xcd, 0xed, 0xe8, 0xea, 0xcd, 0xed, 0xe7, 0xeb, 0xcd, 0xed, 0xe8, - 0xea, 0xcd, 0xed, 0xe7, 0xeb, 0xcd, 0xee, 0xe8, 0xea, 0xcd, 0xee, 0xe7, - 0xeb, 0xcd, 0xee, 0xeb, 0xed, 0xcd, 0xee, 0xec, 0xee, 0xcd, 0xef, 0xec, - 0xef, 0xcd, 0xef, 0xec, 0xef, 0xcd, 0xef, 0xec, 0xef, 0xcd, 0xef, 0xec, - 0xef, 0xcd, 0xf0, 0xec, 0xf0, 0xcd, 0xf0, 0xec, 0xf0, 0xcd, 0xf0, 0xec, - 0xf0, 0xcd, 0xf0, 0xec, 0xf0, 0xcd, 0xf1, 0xec, 0xf0, 0xcd, 0xf1, 0xec, - 0xf0, 0xcd, 0xf1, 0xec, 0xf0, 0xcd, 0xf1, 0xec, 0xf0, 0xcd, 0xf2, 0xec, - 0xf0, 0xcd, 0xf2, 0xec, 0xf0, 0xcd, 0xf2, 0xec, 0xf0, 0xcd, 0xf2, 0xec, - 0xf1, 0xcd, 0xf2, 0xec, 0xf0, 0xcd, 0xf3, 0xec, 0xf1, 0xcd, 0xf3, 0xec, - 0xf1, 0xcd, 0xf3, 0xec, 0xf1, 0xcd, 0xf3, 0xec, 0xf1, 0xcd, 0xf4, 0xec, - 0xf1, 0xcd, 0xf4, 0xec, 0xf1, 0xcd, 0xf4, 0xec, 0xf1, 0xcd, 0xf4, 0xec, - 0xf1, 0xcd, 0xf5, 0xec, 0xf1, 0xcd, 0xf5, 0xec, 0xf1, 0xcd, 0xf5, 0xec, - 0xf1, 0xcd, 0xf5, 0xec, 0xf1, 0xcd, 0xf5, 0xec, 0xf1, 0xcd, 0xf6, 0xec, - 0xf1, 0xcd, 0xf6, 0xec, 0xf1, 0xcd, 0xf6, 0xec, 0xf1, 0xcd, 0xf6, 0xec, - 0xf1, 0xcd, 0xf7, 0xec, 0xf1, 0xcd, 0xf7, 0xec, 0xf1, 0xcd, 0xf7, 0xec, - 0xf1, 0xcd, 0xf7, 0xec, 0xf1, 0xcd, 0xf8, 0xec, 0xf1, 0xcd, 0xf8, 0xec, - 0xf1, 0xcd, 0xf8, 0xec, 0xf1, 0xcd, 0xf8, 0xec, 0xf1, 0xcd, 0xf8, 0xec, - 0xf1, 0xcd, 0xf9, 0xec, 0xf1, 0xcd, 0xf9, 0xec, 0xf1, 0xcd, 0xf9, 0xec, - 0xf1, 0xcd, 0xf9, 0xec, 0xf1, 0xcd, 0xfa, 0xec, 0xf1, 0xcd, 0xfa, 0xec, - 0xf1, 0xcd, 0xfa, 0xec, 0xf1, 0xcd, 0xfa, 0xec, 0xf1, 0xcd, 0xfa, 0xec, - 0xf1, 0xcd, 0xfb, 0xec, 0xf1, 0xcd, 0xfb, 0xec, 0xf1, 0xcd, 0xfb, 0xec, - 0xf1, 0xcd, 0xfb, 0xec, 0xf1, 0xcd, 0xfc, 0xec, 0xf1, 0xcd, 0xfc, 0xec, - 0xf1, 0xcd, 0xfc, 0xec, 0xf1, 0xcd, 0xfc, 0xec, 0xf1, 0xcd, 0xfc, 0xec, - 0xf1, 0xcd, 0xfd, 0xec, 0xf1, 0xcd, 0xfd, 0xec, 0xf1, 0xcd, 0xfd, 0xec, - 0xf1, 0xcd, 0xfd, 0xec, 0xf1, 0xcd, 0xfe, 0xec, 0xf1, 0xcd, 0xfe, 0xec, - 0xf1, 0xcd, 0xfe, 0xec, 0xf1, 0xcd, 0xfe, 0xec, 0xf1, 0xcd, 0xfe, 0xec, - 0xf1, 0xcd, 0xff, 0xec, 0xf1, 0xcd, 0xff, 0xec, 0xf1, 0xcd, 0x03, 0xec, - 0x85, 0xce, 0x0a, 0xec, 0x85, 0xce, 0x0f, 0xec, 0x85, 0xce, 0x14, 0xec, - 0x85, 0xce, 0x17, 0xec, 0x85, 0xce, 0x1b, 0xec, 0x85, 0xce, 0x1e, 0xec, - 0x85, 0xce, 0x20, 0xeb, 0x86, 0xce, 0x23, 0xec, 0x85, 0xce, 0x25, 0xeb, - 0x86, 0xce, 0x27, 0xec, 0x85, 0xce, 0x29, 0xeb, 0x86, 0xce, 0x2b, 0xec, - 0x85, 0xce, 0x2d, 0xeb, 0x86, 0xce, 0x2f, 0xec, 0x85, 0xce, 0x31, 0xeb, - 0x86, 0xce, 0x32, 0xec, 0x85, 0xce, 0x34, 0xeb, 0x86, 0xce, 0x35, 0xec, - 0x85, 0xce, 0x37, 0xeb, 0x86, 0xce, 0x38, 0xec, 0x85, 0xce, 0x3a, 0xeb, - 0x86, 0xce, 0x3b, 0xec, 0x85, 0xce, 0x3c, 0xeb, 0x86, 0xce, 0x3e, 0xec, - 0x85, 0xce, 0x3f, 0xeb, 0x86, 0xce, 0x40, 0xec, 0x85, 0xce, 0x42, 0xeb, - 0x86, 0xce, 0x43, 0xec, 0x85, 0xce, 0x44, 0xeb, 0x86, 0xce, 0x45, 0xec, - 0x85, 0xce, 0x46, 0xeb, 0x86, 0xce, 0x47, 0xec, 0x85, 0xce, 0x48, 0xeb, - 0x86, 0xce, 0x49, 0xec, 0x85, 0xce, 0x4a, 0xeb, 0x86, 0xce, 0x4b, 0xec, - 0x85, 0xce, 0x4c, 0xeb, 0x86, 0xce, 0x4d, 0xec, 0x85, 0xce, 0x4e, 0xeb, - 0x86, 0xce, 0x4f, 0xec, 0x85, 0xce, 0x50, 0xeb, 0x86, 0xce, 0x51, 0xec, - 0x85, 0xce, 0x52, 0xeb, 0x86, 0xce, 0x53, 0xec, 0x85, 0xce, 0x54, 0xeb, - 0x86, 0xce, 0x55, 0xec, 0x85, 0xce, 0x56, 0xeb, 0x86, 0xce, 0x57, 0xec, - 0x85, 0xce, 0x58, 0xeb, 0x86, 0xce, 0x58, 0xec, 0x85, 0xce, 0x59, 0xeb, - 0x86, 0xce, 0x5a, 0xec, 0x85, 0xce, 0x5b, 0xeb, 0x86, 0xce, 0x5c, 0xec, - 0x85, 0xce, 0x5d, 0xeb, 0x86, 0xce, 0x5d, 0xec, 0x85, 0xce, 0x5e, 0xeb, - 0x86, 0xce, 0x5f, 0xec, 0x85, 0xce, 0x60, 0xeb, 0x86, 0xce, 0x60, 0xec, - 0x85, 0xce, 0x61, 0xeb, 0x86, 0xce, 0x62, 0xe9, 0x86, 0xce, 0x63, 0xeb, - 0x86, 0xce, 0x63, 0xe9, 0x86, 0xce, 0x64, 0xeb, 0x86, 0xce, 0x65, 0xe9, - 0x86, 0xce, 0x66, 0xeb, 0x86, 0xce, 0x66, 0xe9, 0x86, 0xce, 0x67, 0xeb, - 0x86, 0xce, 0x68, 0xe9, 0x86, 0xce, 0x68, 0xeb, 0x86, 0xce, 0x69, 0xe9, - 0x86, 0xce, 0x6a, 0xeb, 0x86, 0xce, 0x6a, 0xe9, 0x86, 0xce, 0x6b, 0xeb, - 0x86, 0xce, 0x6c, 0xe9, 0x86, 0xce, 0x6c, 0xeb, 0x86, 0xce, 0x6d, 0xe9, - 0x86, 0xce, 0x6e, 0xeb, 0x86, 0xce, 0x6e, 0xe9, 0x86, 0xce, 0x6f, 0xeb, - 0x86, 0xce, 0x70, 0xe9, 0x86, 0xce, 0x70, 0xeb, 0x86, 0xce, 0x71, 0xe9, - 0x86, 0xce, 0x72, 0xeb, 0x86, 0xce, 0x72, 0xe9, 0x86, 0xce, 0x73, 0xeb, - 0x86, 0xce, 0x73, 0xe9, 0x86, 0xce, 0x74, 0xeb, 0x86, 0xce, 0x75, 0xe9, - 0x86, 0xce, 0x75, 0xeb, 0x86, 0xce, 0x76, 0xe9, 0x86, 0xce, 0x76, 0xeb, - 0x86, 0xce, 0x77, 0xe9, 0x86, 0xce, 0x78, 0xeb, 0x86, 0xce, 0x78, 0xe9, - 0x86, 0xce, 0x79, 0xeb, 0x86, 0xce, 0x79, 0xe9, 0x86, 0xce, 0x7a, 0xe8, - 0x87, 0xce, 0x7a, 0xe9, 0x86, 0xce, 0x7b, 0xe8, 0x87, 0xce, 0x7c, 0xe9, - 0x86, 0xce, 0x7c, 0xe8, 0x87, 0xce, 0x7d, 0xe9, 0x86, 0xce, 0x7d, 0xe8, - 0x87, 0xce, 0x7e, 0xe9, 0x86, 0xce, 0x7e, 0xe8, 0x87, 0xce, 0x7f, 0xe9, - 0x86, 0xce, 0x7f, 0xe8, 0x87, 0xce, 0x80, 0xe9, 0x86, 0xce, 0x81, 0xe8, - 0x87, 0xce, 0x81, 0xe9, 0x86, 0xce, 0x82, 0xe8, 0x87, 0xce, 0x82, 0xe9, - 0x86, 0xce, 0x83, 0xe8, 0x87, 0xce, 0x83, 0xe9, 0x86, 0xce, 0x84, 0xe8, - 0x87, 0xce, 0x84, 0xe9, 0x86, 0xce, 0x85, 0xe8, 0x87, 0xce, 0x85, 0xe8, - 0x87, 0xce, 0x86, 0xe8, 0x87, 0xce, 0x86, 0xe8, 0x87, 0xce, 0x86, 0xe8, - 0x87, 0xce, 0x86, 0xe8, 0x87, 0xce, 0x86, 0xe8, 0x88, 0xce, 0x86, 0xe8, - 0x88, 0xce, 0x87, 0xe8, 0x89, 0xcc, 0x86, 0xe8, 0x89, 0xce, 0x87, 0xe8, - 0x8a, 0xcc, 0x86, 0xe8, 0x8a, 0xce, 0x87, 0xe8, 0x8b, 0xcc, 0x86, 0xe8, - 0x8b, 0xce, 0x87, 0xe8, 0x8c, 0xcc, 0x86, 0xe8, 0x8c, 0xce, 0x87, 0xe8, - 0x8d, 0xcc, 0x86, 0xe8, 0x8d, 0xce, 0x87, 0xe8, 0x8e, 0xcc, 0x86, 0xe8, - 0x8e, 0xce, 0x87, 0xe8, 0x8e, 0xcc, 0x86, 0xe8, 0x8f, 0xce, 0x87, 0xe8, - 0x8f, 0xcc, 0x86, 0xe8, 0x90, 0xce, 0x87, 0xe8, 0x90, 0xcc, 0x86, 0xe8, - 0x91, 0xce, 0x87, 0xe8, 0x91, 0xcc, 0x86, 0xe8, 0x92, 0xce, 0x87, 0xe8, - 0x92, 0xcc, 0x86, 0xe8, 0x93, 0xce, 0x87, 0xe8, 0x93, 0xcc, 0x86, 0xe8, - 0x94, 0xce, 0x87, 0xe8, 0x94, 0xcc, 0x86, 0xe8, 0x94, 0xce, 0x87, 0xe8, - 0x95, 0xcc, 0x86, 0xe8, 0x95, 0xce, 0x87, 0xe8, 0x96, 0xcc, 0x86, 0xe8, - 0x96, 0xce, 0x87, 0xe8, 0x97, 0xcc, 0x86, 0xe8, 0x97, 0xce, 0x87, 0xe8, - 0x98, 0xcc, 0x87, 0xe8, 0x98, 0xc8, 0x87, 0xe8, 0x98, 0xcc, 0x87, 0xe8, - 0x99, 0xc8, 0x87, 0xe8, 0x99, 0xcc, 0x87, 0xe8, 0x9a, 0xc8, 0x87, 0xe8, - 0x9a, 0xcc, 0x87, 0xe8, 0x9a, 0xc8, 0x87, 0xe8, 0x9b, 0xcc, 0x87, 0xe8, - 0x9b, 0xc8, 0x87, 0xe8, 0x9c, 0xcc, 0x87, 0xe8, 0x9c, 0xc8, 0x87, 0xe8, - 0x9d, 0xcc, 0x87, 0xe8, 0x9d, 0xc8, 0x87, 0xe8, 0x9d, 0xcc, 0x87, 0xe8, - 0x9e, 0xc8, 0x87, 0xe8, 0x9e, 0xcc, 0x87, 0xe8, 0x9f, 0xc8, 0x87, 0xe8, - 0x9f, 0xcc, 0x87, 0xe8, 0x9f, 0xc8, 0x87, 0xe8, 0xa0, 0xcc, 0x87, 0xe8, - 0xa0, 0xc8, 0x87, 0xe8, 0xa1, 0xcc, 0x87, 0xe8, 0xa1, 0xc8, 0x87, 0xe8, - 0xa1, 0xcc, 0x87, 0xe8, 0xa2, 0xc8, 0x87, 0xe8, 0xa2, 0xcc, 0x9f, 0xe8, - 0xa3, 0xed, 0xa0, 0xe8, 0xa3, 0xed, 0x9f, 0xe8, 0xa3, 0xed, 0xa0, 0xe8, - 0xa4, 0xed, 0x9f, 0xe8, 0xa4, 0xed, 0xa0, 0xe8, 0xa5, 0xed, 0x9f, 0xe8, - 0xa5, 0xed, 0xa0, 0xe8, 0xa5, 0xed, 0x9f, 0xe8, 0xa6, 0xed, 0xa0, 0xe8, - 0xa6, 0xed, 0xa4, 0xe8, 0xa6, 0xee, 0xa4, 0xe8, 0xa7, 0xee, 0xa4, 0xe8, - 0xa7, 0xee, 0xa4, 0xe8, 0xa8, 0xee, 0xa4, 0xe8, 0xa8, 0xee, 0xa4, 0xe8, - 0xa8, 0xee, 0xa4, 0xe8, 0xa9, 0xee, 0xa4, 0xe8, 0xa9, 0xee, 0xa4, 0xe8, - 0xaa, 0xee, 0xa4, 0xe8, 0xaa, 0xee, 0xa4, 0xe8, 0xaa, 0xee, 0xa8, 0xe8, - 0xab, 0xef, 0xa8, 0xe8, 0xab, 0xef, 0xa8, 0xe8, 0xab, 0xef, 0xa8, 0xe8, - 0xac, 0xef, 0xa8, 0xe8, 0xac, 0xef, 0xa8, 0xe8, 0xac, 0xef, 0xa8, 0xe8, - 0xad, 0xef, 0xa8, 0xe8, 0xad, 0xef, 0xa8, 0xe8, 0xae, 0xef, 0xa8, 0xe8, - 0xae, 0xef, 0xa8, 0xe8, 0xae, 0xef, 0xac, 0xe8, 0xaf, 0xf0, 0xa8, 0xe8, - 0xaf, 0xef, 0xac, 0xe8, 0xaf, 0xf0, 0xac, 0xe8, 0xb0, 0xf0, 0xac, 0xe8, - 0xb0, 0xf0, 0xac, 0xe8, 0xb0, 0xf0, 0xac, 0xe8, 0xb1, 0xf0, 0xac, 0xe8, - 0xb1, 0xf0, 0xac, 0xe8, 0xb2, 0xf0, 0xac, 0xe8, 0xb2, 0xf0, 0xac, 0xe8, - 0xb2, 0xf0, 0xb0, 0xe8, 0xb3, 0xf1, 0xac, 0xe8, 0xb3, 0xf0, 0xb0, 0xe8, - 0xb3, 0xf1, 0xb0, 0xe8, 0xb4, 0xf1, 0xb0, 0xe8, 0xb4, 0xf1, 0xb0, 0xe8, - 0xb4, 0xf1, 0xb0, 0xe8, 0xb5, 0xf1, 0xb0, 0xe8, 0xb5, 0xf1, 0xb0, 0xe8, - 0xb5, 0xf1, 0xb0, 0xe8, 0xb6, 0xf1, 0xb0, 0xe8, 0xb6, 0xf1, 0xb4, 0xe8, - 0xb6, 0xf2, 0xb0, 0xe8, 0xb7, 0xf1, 0xcd, 0xe8, 0xb7, 0xd6, 0xcd, 0xe8, - 0xb7, 0xd3, 0xcd, 0xe8, 0xb8, 0xd6, 0xcd, 0xe8, 0xb8, 0xd3, 0xcd, 0xe8, - 0xb8, 0xd6, 0xcd, 0xe8, 0xb9, 0xd3, 0xcd, 0xe8, 0xb9, 0xd6, 0xcd, 0xe8, - 0xb9, 0xd3, 0xcd, 0xe8, 0xba, 0xd6, 0xcd, 0xe8, 0xba, 0xd3, 0xcd, 0xe8, - 0xba, 0xd6, 0xcd, 0xe8, 0xbb, 0xd3, 0xce, 0xe8, 0xbb, 0xd0, 0xcd, 0xe8, - 0xbb, 0xd3, 0xce, 0xe8, 0xbc, 0xd0, 0xcd, 0xe8, 0xbc, 0xd3, 0xce, 0xe8, - 0xbc, 0xd0, 0xcd, 0xe8, 0xbd, 0xd3, 0xce, 0xe8, 0xbd, 0xd0, 0xcd, 0xe8, - 0xbd, 0xd3, 0xce, 0xe8, 0xbe, 0xd0, 0xcd, 0xe8, 0xbe, 0xd3, 0xce, 0xe8, - 0xbe, 0xd0, 0xcd, 0xe8, 0xbf, 0xd3, 0xce, 0xe8, 0xbf, 0xd0, 0xcd, 0xe8, - 0xbf, 0xd3, 0xce, 0xe8, 0xc0, 0xd0, 0xcd, 0xe8, 0xc0, 0xd3, 0xce, 0xe8, - 0xc0, 0xd0, 0xcd, 0xe8, 0xc1, 0xd3, 0xce, 0xe8, 0xc1, 0xd0, 0xcd, 0xe8, - 0xc1, 0xd3, 0xce, 0xe8, 0xc1, 0xd0, 0xcd, 0xe8, 0xc2, 0xd3, 0xce, 0xe8, - 0xc2, 0xd0, 0xcd, 0xe8, 0xc2, 0xd3, 0xce, 0xe8, 0xc3, 0xd0, 0xcd, 0xe8, - 0xc3, 0xd3, 0xce, 0xe8, 0xc3, 0xd0, 0xcd, 0xe8, 0xc4, 0xd3, 0xce, 0xe8, - 0xc4, 0xd0, 0xcd, 0xe8, 0xc4, 0xd3, 0xce, 0xe8, 0xc5, 0xd0, 0xcd, 0xe8, - 0xc5, 0xd3, 0xce, 0xe8, 0xc5, 0xd0, 0xcd, 0xe8, 0xc6, 0xd3, 0xce, 0xe8, - 0xc6, 0xd0, 0xcd, 0xe8, 0xc6, 0xd3, 0xce, 0xe8, 0xc6, 0xd0, 0xce, 0xe8, - 0xc7, 0xce, 0xce, 0xe8, 0xc7, 0xd0, 0xce, 0xe8, 0xc7, 0xce, 0xce, 0xe8, - 0xc8, 0xd0, 0xce, 0xe8, 0xc8, 0xce, 0xce, 0xe8, 0xc8, 0xd0, 0xce, 0xe8, - 0xc9, 0xce, 0xce, 0xe8, 0xc9, 0xd0, 0xce, 0xe8, 0xc9, 0xce, 0xce, 0xe8, - 0xc9, 0xd0, 0xce, 0xe8, 0xca, 0xce, 0xce, 0xe8, 0xca, 0xd0, 0xce, 0xe8, - 0xca, 0xce, 0xce, 0xe8, 0xcb, 0xd0, 0xce, 0xe8, 0xcb, 0xce, 0xce, 0xe8, - 0xcb, 0xd0, 0xce, 0xe8, 0xcc, 0xce, 0xce, 0xe8, 0xcc, 0xd0, 0xce, 0xe8, - 0xcc, 0xce, 0xce, 0xe8, 0xcc, 0xd0, 0xce, 0xe8, 0xcd, 0xce, 0xce, 0xe8, - 0xcd, 0xce, 0xce, 0xe8, 0xcd, 0xce, 0xce, 0xe8, 0xce, 0xce, 0xce, 0xe8, - 0xcd, 0xce, 0xce, 0xe8, 0xce, 0xce, 0xce, 0xe8, 0xcd, 0xce, 0xcf, 0xe8, - 0xce, 0xce, 0xcf, 0xe7, 0xce, 0xce, 0xcf, 0xe8, 0xce, 0xce, 0xd0, 0xe7, - 0xce, 0xce, 0xd0, 0xe8, 0xce, 0xce, 0xd0, 0xe7, 0xce, 0xce, 0xd0, 0xe8, - 0xce, 0xce, 0xd1, 0xe7, 0xce, 0xce, 0xd1, 0xe8, 0xce, 0xce, 0xd1, 0xe7, - 0xce, 0xce, 0xd2, 0xe8, 0xce, 0xce, 0xd2, 0xe7, 0xce, 0xce, 0xd2, 0xe8, - 0xce, 0xce, 0xd2, 0xe7, 0xce, 0xce, 0xd3, 0xe6, 0xce, 0xce, 0xd3, 0xe7, - 0xce, 0xce, 0xd3, 0xe6, 0xce, 0xce, 0xd4, 0xe7, 0xce, 0xce, 0xd4, 0xe6, - 0xce, 0xce, 0xd4, 0xe7, 0xce, 0xce, 0xd4, 0xe6, 0xce, 0xce, 0xd5, 0xe7, - 0xce, 0xce, 0xd5, 0xe6, 0xce, 0xce, 0xd5, 0xe7, 0xce, 0xce, 0xd6, 0xe6, - 0xce, 0xce, 0xd6, 0xe7, 0xce, 0xce, 0xd6, 0xe6, 0xce, 0xce, 0xd6, 0xe7, - 0xce, 0xce, 0xd7, 0xe6, 0xce, 0xce, 0xd7, 0xe7, 0xce, 0xce, 0xd7, 0xe6, - 0xce, 0xce, 0xd7, 0xe7, 0xce, 0xce, 0xd8, 0xe6, 0xce, 0xce, 0xd8, 0xe7, - 0xce, 0xce, 0xd8, 0xe6, 0xce, 0xce, 0xd9, 0xe7, 0xce, 0xce, 0xd9, 0xe6, - 0xce, 0xce, 0xd9, 0xe7, 0xce, 0xce, 0xd9, 0xe6, 0xce, 0xce, 0xda, 0xe7, - 0xce, 0xce, 0xda, 0xe6, 0xce, 0xce, 0xda, 0xe7, 0xce, 0xce, 0xda, 0xe6, - 0xce, 0xce, 0xdb, 0xea, 0xe6, 0xce, 0xdb, 0xe9, 0xe6, 0xce, 0xdb, 0xea, - 0xe6, 0xce, 0xdb, 0xe9, 0xe6, 0xce, 0xdc, 0xea, 0xe6, 0xce, 0xdc, 0xe9, - 0xe6, 0xce, 0xdc, 0xea, 0xe6, 0xce, 0xdd, 0xe9, 0xe6, 0xce, 0xdd, 0xea, - 0xe6, 0xce, 0xdd, 0xe9, 0xe6, 0xce, 0xdd, 0xea, 0xe6, 0xce, 0xde, 0xe9, - 0xe6, 0xce, 0xde, 0xea, 0xe6, 0xce, 0xde, 0xe9, 0xe6, 0xce, 0xde, 0xea, - 0xe6, 0xce, 0xdf, 0xe9, 0xe6, 0xce, 0xdf, 0xea, 0xe6, 0xce, 0xdf, 0xe9, - 0xe6, 0xce, 0xdf, 0xea, 0xe6, 0xce, 0xe0, 0xe9, 0xe6, 0xce, 0xe0, 0xea, - 0xe6, 0xce, 0xe0, 0xe9, 0xe6, 0xce, 0xe1, 0xea, 0xe6, 0xce, 0xe1, 0xe9, - 0xe6, 0xce, 0xe1, 0xea, 0xe6, 0xce, 0xe1, 0xe9, 0xe6, 0xce, 0xe2, 0xea, - 0xe6, 0xce, 0xe2, 0xe9, 0xe6, 0xce, 0xe2, 0xea, 0xe6, 0xce, 0xe2, 0xe9, - 0xe6, 0xce, 0xe3, 0xe8, 0xe7, 0xce, 0xe3, 0xe9, 0xe6, 0xce, 0xe3, 0xe8, - 0xe7, 0xce, 0xe3, 0xe9, 0xe6, 0xce, 0xe4, 0xe8, 0xe7, 0xce, 0xe4, 0xe9, - 0xe6, 0xce, 0xe4, 0xe8, 0xe7, 0xce, 0xe4, 0xe9, 0xe6, 0xce, 0xe5, 0xe8, - 0xe7, 0xce, 0xe5, 0xe9, 0xe6, 0xce, 0xe5, 0xe8, 0xe7, 0xce, 0xe5, 0xe9, - 0xe6, 0xce, 0xe6, 0xe8, 0xe7, 0xce, 0xe6, 0xe9, 0xe6, 0xce, 0xe6, 0xe8, - 0xe7, 0xce, 0xe6, 0xe9, 0xe6, 0xce, 0xe6, 0xe8, 0xe7, 0xce, 0xe6, 0xe8, - 0xe7, 0xce, 0xe6, 0xe8, 0xe7, 0xce, 0xe6, 0xe8, 0xe7, 0xce, 0xe7, 0xe8, - 0xe8, 0xcc, 0xe6, 0xe8, 0xe8, 0xce, 0xe7, 0xe8, 0xe8, 0xcc, 0xe6, 0xe8, - 0xe8, 0xce, 0xeb, 0xe8, 0xe9, 0xce, 0xea, 0xe8, 0xe9, 0xd0, 0xeb, 0xe8, - 0xe9, 0xce, 0xea, 0xe8, 0xe9, 0xd0, 0xeb, 0xe8, 0xea, 0xce, 0xeb, 0xe8, - 0xea, 0xce, 0xeb, 0xe8, 0xea, 0xce, 0xeb, 0xe8, 0xea, 0xce, 0xeb, 0xe8, - 0xea, 0xce, 0xeb, 0xe8, 0xea, 0xce, 0xeb, 0xe8, 0xea, 0xce, 0xeb, 0xe8, - 0xea, 0xce, 0xec, 0xe8, 0xea, 0xce, 0xec, 0xe8, 0xea, 0xce, 0xec, 0xe8, - 0xea, 0xce, 0xec, 0xe8, 0xea, 0xce, 0xec, 0xe7, 0xeb, 0xce, 0xed, 0xe8, - 0xea, 0xce, 0xed, 0xe7, 0xeb, 0xce, 0xed, 0xe8, 0xea, 0xce, 0xed, 0xe7, - 0xeb, 0xce, 0xee, 0xec, 0xee, 0xce, 0xee, 0xec, 0xee, 0xce, 0xee, 0xec, - 0xee, 0xce, 0xee, 0xec, 0xee, 0xce, 0xef, 0xec, 0xee, 0xce, 0xef, 0xec, - 0xee, 0xce, 0xef, 0xec, 0xee, 0xce, 0xef, 0xec, 0xee, 0xce, 0xf0, 0xec, - 0xee, 0xce, 0xf0, 0xec, 0xee, 0xce, 0xf0, 0xec, 0xf0, 0xce, 0xf0, 0xec, - 0xf0, 0xce, 0xf1, 0xec, 0xf1, 0xce, 0xf1, 0xec, 0xf1, 0xce, 0xf1, 0xec, - 0xf1, 0xce, 0xf1, 0xec, 0xf1, 0xce, 0xf2, 0xec, 0xf1, 0xce, 0xf2, 0xec, - 0xf1, 0xce, 0xf2, 0xec, 0xf1, 0xce, 0xf2, 0xec, 0xf1, 0xce, 0xf2, 0xec, - 0xf1, 0xce, 0xf3, 0xec, 0xf1, 0xce, 0xf3, 0xec, 0xf1, 0xce, 0xf3, 0xec, - 0xf1, 0xce, 0xf3, 0xec, 0xf1, 0xce, 0xf4, 0xec, 0xf1, 0xce, 0xf4, 0xec, - 0xf1, 0xce, 0xf4, 0xec, 0xf1, 0xce, 0xf4, 0xec, 0xf1, 0xce, 0xf5, 0xec, - 0xf1, 0xce, 0xf5, 0xec, 0xf1, 0xce, 0xf5, 0xec, 0xf1, 0xce, 0xf5, 0xec, - 0xf1, 0xce, 0xf5, 0xec, 0xf1, 0xce, 0xf6, 0xec, 0xf1, 0xce, 0xf6, 0xec, - 0xf1, 0xce, 0xf6, 0xec, 0xf1, 0xce, 0xf6, 0xec, 0xf1, 0xce, 0xf7, 0xec, - 0xf1, 0xce, 0xf7, 0xec, 0xf1, 0xce, 0xf7, 0xec, 0xf1, 0xce, 0xf7, 0xec, - 0xf1, 0xce, 0xf8, 0xec, 0xf1, 0xce, 0xf8, 0xec, 0xf1, 0xce, 0xf8, 0xec, - 0xf1, 0xce, 0xf8, 0xec, 0xf1, 0xce, 0xf8, 0xec, 0xf1, 0xce, 0xf9, 0xec, - 0xf1, 0xce, 0xf9, 0xec, 0xf1, 0xce, 0xf9, 0xec, 0xf1, 0xce, 0xf9, 0xec, - 0xf1, 0xce, 0xfa, 0xec, 0xf1, 0xce, 0xfa, 0xec, 0xf1, 0xce, 0xfa, 0xec, - 0xf1, 0xce, 0xfa, 0xec, 0xf1, 0xce, 0xfa, 0xec, 0xf1, 0xce, 0xfb, 0xec, - 0xf1, 0xce, 0xfb, 0xec, 0xf1, 0xce, 0xfb, 0xec, 0xf1, 0xce, 0xfb, 0xec, - 0xf1, 0xce, 0xfc, 0xec, 0xf1, 0xce, 0xfc, 0xec, 0xf1, 0xce, 0xfc, 0xec, - 0xf1, 0xce, 0xfc, 0xec, 0xf1, 0xce, 0xfc, 0xec, 0xf1, 0xce, 0xfd, 0xec, - 0xf1, 0xce, 0xfd, 0xec, 0xf1, 0xce, 0xfd, 0xec, 0xf1, 0xce, 0xfd, 0xec, - 0xf1, 0xce, 0xfe, 0xec, 0xf1, 0xce, 0xfe, 0xec, 0xf1, 0xce, 0xfe, 0xec, - 0xf1, 0xce, 0xfe, 0xec, 0xf1, 0xce, 0xfe, 0xec, 0xf1, 0xce, 0xff, 0xec, - 0xf1, 0xce, 0xff, 0xec, 0xf1, 0xce, 0x03, 0xec, 0x85, 0xce, 0x0a, 0xee, - 0x85, 0xce, 0x0f, 0xec, 0x85, 0xce, 0x14, 0xee, 0x85, 0xce, 0x17, 0xec, - 0x85, 0xce, 0x1b, 0xee, 0x85, 0xce, 0x1e, 0xec, 0x85, 0xce, 0x20, 0xee, - 0x85, 0xce, 0x23, 0xec, 0x85, 0xce, 0x25, 0xee, 0x85, 0xce, 0x27, 0xec, - 0x85, 0xce, 0x29, 0xee, 0x85, 0xce, 0x2b, 0xec, 0x85, 0xce, 0x2d, 0xee, - 0x85, 0xce, 0x2f, 0xec, 0x85, 0xce, 0x31, 0xee, 0x85, 0xce, 0x32, 0xec, - 0x85, 0xce, 0x34, 0xee, 0x85, 0xce, 0x35, 0xec, 0x85, 0xce, 0x37, 0xee, - 0x85, 0xce, 0x38, 0xec, 0x85, 0xce, 0x3a, 0xee, 0x85, 0xce, 0x3b, 0xec, - 0x85, 0xce, 0x3c, 0xee, 0x85, 0xce, 0x3e, 0xec, 0x85, 0xce, 0x3f, 0xeb, - 0x86, 0xce, 0x40, 0xec, 0x85, 0xce, 0x42, 0xeb, 0x86, 0xce, 0x43, 0xec, - 0x85, 0xce, 0x44, 0xeb, 0x86, 0xce, 0x45, 0xec, 0x85, 0xce, 0x46, 0xeb, - 0x86, 0xce, 0x47, 0xec, 0x85, 0xce, 0x48, 0xeb, 0x86, 0xce, 0x49, 0xec, - 0x85, 0xce, 0x4a, 0xeb, 0x86, 0xce, 0x4b, 0xec, 0x85, 0xce, 0x4c, 0xeb, - 0x86, 0xce, 0x4d, 0xec, 0x85, 0xce, 0x4e, 0xeb, 0x86, 0xce, 0x4f, 0xec, - 0x85, 0xce, 0x50, 0xeb, 0x86, 0xce, 0x51, 0xec, 0x85, 0xce, 0x52, 0xeb, - 0x86, 0xce, 0x53, 0xec, 0x85, 0xce, 0x54, 0xeb, 0x86, 0xce, 0x55, 0xec, - 0x85, 0xce, 0x56, 0xeb, 0x86, 0xce, 0x57, 0xec, 0x85, 0xce, 0x58, 0xeb, - 0x86, 0xce, 0x58, 0xec, 0x85, 0xce, 0x59, 0xeb, 0x86, 0xce, 0x5a, 0xec, - 0x85, 0xce, 0x5b, 0xeb, 0x86, 0xce, 0x5c, 0xec, 0x85, 0xce, 0x5d, 0xeb, - 0x86, 0xce, 0x5d, 0xec, 0x85, 0xce, 0x5e, 0xeb, 0x86, 0xce, 0x5f, 0xe9, - 0x86, 0xce, 0x60, 0xeb, 0x86, 0xce, 0x60, 0xe9, 0x86, 0xce, 0x61, 0xeb, - 0x86, 0xce, 0x62, 0xe9, 0x86, 0xce, 0x63, 0xeb, 0x86, 0xce, 0x63, 0xe9, - 0x86, 0xce, 0x64, 0xeb, 0x86, 0xce, 0x65, 0xe9, 0x86, 0xce, 0x66, 0xeb, - 0x86, 0xce, 0x66, 0xe9, 0x86, 0xce, 0x67, 0xeb, 0x86, 0xce, 0x68, 0xe9, - 0x86, 0xce, 0x68, 0xeb, 0x86, 0xce, 0x69, 0xe9, 0x86, 0xce, 0x6a, 0xeb, - 0x86, 0xce, 0x6a, 0xe9, 0x86, 0xce, 0x6b, 0xeb, 0x86, 0xce, 0x6c, 0xe9, - 0x86, 0xce, 0x6c, 0xeb, 0x86, 0xce, 0x6d, 0xe9, 0x86, 0xce, 0x6e, 0xeb, - 0x86, 0xce, 0x6e, 0xe9, 0x86, 0xce, 0x6f, 0xeb, 0x86, 0xce, 0x70, 0xe9, - 0x86, 0xce, 0x70, 0xeb, 0x86, 0xce, 0x71, 0xe9, 0x86, 0xce, 0x72, 0xeb, - 0x86, 0xce, 0x72, 0xe9, 0x86, 0xce, 0x73, 0xeb, 0x86, 0xce, 0x73, 0xe9, - 0x86, 0xce, 0x74, 0xeb, 0x86, 0xce, 0x75, 0xe9, 0x86, 0xce, 0x75, 0xeb, - 0x86, 0xce, 0x76, 0xe9, 0x86, 0xce, 0x76, 0xeb, 0x86, 0xce, 0x77, 0xe9, - 0x86, 0xce, 0x78, 0xeb, 0x86, 0xce, 0x78, 0xe9, 0x86, 0xce, 0x79, 0xeb, - 0x86, 0xce, 0x79, 0xe9, 0x86, 0xce, 0x7a, 0xe8, 0x87, 0xce, 0x7a, 0xe9, - 0x86, 0xce, 0x7b, 0xe8, 0x87, 0xce, 0x7c, 0xe9, 0x86, 0xce, 0x7c, 0xe8, - 0x87, 0xce, 0x7d, 0xe9, 0x86, 0xce, 0x7d, 0xe8, 0x87, 0xce, 0x7e, 0xe9, - 0x86, 0xce, 0x7e, 0xe8, 0x87, 0xce, 0x7f, 0xe9, 0x86, 0xce, 0x7f, 0xe8, - 0x87, 0xce, 0x80, 0xe9, 0x86, 0xce, 0x81, 0xe8, 0x87, 0xce, 0x81, 0xe9, - 0x86, 0xce, 0x82, 0xe8, 0x87, 0xce, 0x82, 0xe9, 0x86, 0xce, 0x83, 0xe8, - 0x87, 0xce, 0x83, 0xe9, 0x86, 0xce, 0x84, 0xe8, 0x87, 0xce, 0x84, 0xe9, - 0x86, 0xce, 0x85, 0xe8, 0x87, 0xce, 0x85, 0xe9, 0x86, 0xce, 0x86, 0xe8, - 0x87, 0xce, 0x86, 0xe9, 0x86, 0xce, 0x86, 0xe8, 0x87, 0xce, 0x86, 0xe8, - 0x87, 0xce, 0x86, 0xe8, 0x88, 0xce, 0x86, 0xe8, 0x88, 0xce, 0x86, 0xe8, - 0x89, 0xce, 0x86, 0xe8, 0x89, 0xce, 0x86, 0xe8, 0x8a, 0xce, 0x86, 0xe8, - 0x8a, 0xce, 0x87, 0xe8, 0x8b, 0xcb, 0x86, 0xe8, 0x8b, 0xce, 0x87, 0xe8, - 0x8c, 0xcb, 0x86, 0xe8, 0x8c, 0xce, 0x87, 0xe8, 0x8d, 0xcb, 0x86, 0xe8, - 0x8d, 0xce, 0x87, 0xe8, 0x8e, 0xcb, 0x86, 0xe8, 0x8e, 0xce, 0x87, 0xe8, - 0x8e, 0xcb, 0x86, 0xe8, 0x8f, 0xce, 0x87, 0xe8, 0x8f, 0xcb, 0x86, 0xe8, - 0x90, 0xce, 0x87, 0xe8, 0x90, 0xcb, 0x86, 0xe8, 0x91, 0xce, 0x87, 0xe8, - 0x91, 0xcb, 0x86, 0xe8, 0x92, 0xce, 0x87, 0xe8, 0x92, 0xcb, 0x86, 0xe8, - 0x93, 0xce, 0x87, 0xe8, 0x93, 0xcb, 0x86, 0xe8, 0x94, 0xce, 0x87, 0xe8, - 0x94, 0xcb, 0x86, 0xe8, 0x94, 0xce, 0x87, 0xe8, 0x95, 0xcb, 0x86, 0xe8, - 0x95, 0xce, 0x87, 0xe8, 0x96, 0xcb, 0x86, 0xe8, 0x96, 0xce, 0x87, 0xe8, - 0x97, 0xcb, 0x86, 0xe8, 0x97, 0xce, 0x87, 0xe8, 0x98, 0xcb, 0x87, 0xe8, - 0x98, 0xc8, 0x87, 0xe8, 0x98, 0xcb, 0x87, 0xe8, 0x99, 0xc8, 0x87, 0xe8, - 0x99, 0xcb, 0x87, 0xe8, 0x9a, 0xc8, 0x87, 0xe8, 0x9a, 0xcb, 0x87, 0xe8, - 0x9a, 0xc8, 0x87, 0xe8, 0x9b, 0xcb, 0x87, 0xe8, 0x9b, 0xc8, 0x87, 0xe8, - 0x9c, 0xcb, 0x87, 0xe8, 0x9c, 0xc8, 0x87, 0xe8, 0x9d, 0xcb, 0x87, 0xe8, - 0x9d, 0xc8, 0x87, 0xe8, 0x9d, 0xcb, 0x87, 0xe8, 0x9e, 0xc8, 0x87, 0xe8, - 0x9e, 0xcb, 0x87, 0xe8, 0x9f, 0xc8, 0x87, 0xe8, 0x9f, 0xcb, 0x87, 0xe8, - 0x9f, 0xc8, 0x87, 0xe8, 0xa0, 0xcb, 0x87, 0xe8, 0xa0, 0xc8, 0x87, 0xe8, - 0xa1, 0xcb, 0x87, 0xe8, 0xa1, 0xc8, 0x87, 0xe8, 0xa1, 0xcb, 0x9e, 0xe8, - 0xa2, 0xec, 0x9d, 0xe8, 0xa2, 0xec, 0x9e, 0xe8, 0xa3, 0xec, 0x9d, 0xe8, - 0xa3, 0xec, 0x9e, 0xe8, 0xa3, 0xec, 0x9d, 0xe8, 0xa4, 0xec, 0x9e, 0xe8, - 0xa4, 0xec, 0xa2, 0xe8, 0xa5, 0xed, 0xa2, 0xe8, 0xa5, 0xed, 0xa2, 0xe8, - 0xa5, 0xed, 0xa2, 0xe8, 0xa6, 0xed, 0xa2, 0xe8, 0xa6, 0xed, 0xa2, 0xe8, - 0xa6, 0xed, 0xa2, 0xe8, 0xa7, 0xed, 0xa2, 0xe8, 0xa7, 0xed, 0xa2, 0xe8, - 0xa8, 0xed, 0xa2, 0xe8, 0xa8, 0xed, 0xa2, 0xe8, 0xa8, 0xed, 0xa6, 0xe8, - 0xa9, 0xee, 0xa6, 0xe8, 0xa9, 0xee, 0xa6, 0xe8, 0xaa, 0xee, 0xa6, 0xe8, - 0xaa, 0xee, 0xa6, 0xe8, 0xaa, 0xee, 0xa6, 0xe8, 0xab, 0xee, 0xa6, 0xe8, - 0xab, 0xee, 0xa6, 0xe8, 0xab, 0xee, 0xa6, 0xe8, 0xac, 0xee, 0xa6, 0xe8, - 0xac, 0xee, 0xa6, 0xe8, 0xac, 0xee, 0xab, 0xe8, 0xad, 0xef, 0xaa, 0xe8, - 0xad, 0xef, 0xab, 0xe8, 0xae, 0xef, 0xaa, 0xe8, 0xae, 0xef, 0xab, 0xe8, - 0xae, 0xef, 0xaa, 0xe8, 0xaf, 0xef, 0xab, 0xe8, 0xaf, 0xef, 0xaa, 0xe8, - 0xaf, 0xef, 0xab, 0xe8, 0xb0, 0xef, 0xaa, 0xe8, 0xb0, 0xef, 0xab, 0xe8, - 0xb0, 0xef, 0xaf, 0xe8, 0xb1, 0xf0, 0xab, 0xe8, 0xb1, 0xef, 0xaf, 0xe8, - 0xb2, 0xf0, 0xae, 0xe8, 0xb2, 0xf0, 0xaf, 0xe8, 0xb2, 0xf0, 0xae, 0xe8, - 0xb3, 0xf0, 0xaf, 0xe8, 0xb3, 0xf0, 0xae, 0xe8, 0xb3, 0xf0, 0xaf, 0xe8, - 0xb4, 0xf0, 0xae, 0xe8, 0xb4, 0xf0, 0xaf, 0xe8, 0xb4, 0xf0, 0xb3, 0xe8, - 0xb5, 0xf1, 0xaf, 0xe8, 0xb5, 0xf0, 0xb3, 0xe8, 0xb5, 0xf1, 0xb2, 0xe8, - 0xb6, 0xf1, 0xb3, 0xe8, 0xb6, 0xf1, 0xb2, 0xe8, 0xb6, 0xf1, 0xb3, 0xe8, - 0xb7, 0xf1, 0xb2, 0xe8, 0xb7, 0xf1, 0xcd, 0xe8, 0xb7, 0xd2, 0xcd, 0xe8, - 0xb8, 0xd5, 0xcd, 0xe8, 0xb8, 0xd2, 0xcd, 0xe8, 0xb8, 0xd5, 0xcd, 0xe8, - 0xb9, 0xd2, 0xcd, 0xe8, 0xb9, 0xd5, 0xcd, 0xe8, 0xb9, 0xd2, 0xcd, 0xe8, - 0xba, 0xd5, 0xcd, 0xe8, 0xba, 0xd2, 0xcd, 0xe8, 0xba, 0xd5, 0xcd, 0xe8, - 0xbb, 0xd2, 0xcd, 0xe8, 0xbb, 0xd5, 0xcd, 0xe8, 0xbb, 0xd2, 0xcd, 0xe8, - 0xbc, 0xd5, 0xcd, 0xe8, 0xbc, 0xd2, 0xcd, 0xe8, 0xbc, 0xd5, 0xcd, 0xe8, - 0xbd, 0xd2, 0xcd, 0xe8, 0xbd, 0xd5, 0xcd, 0xe8, 0xbd, 0xd2, 0xcd, 0xe8, - 0xbe, 0xd5, 0xcd, 0xe8, 0xbe, 0xd2, 0xcd, 0xe8, 0xbe, 0xd5, 0xcd, 0xe8, - 0xbf, 0xd2, 0xcd, 0xe8, 0xbf, 0xd5, 0xcd, 0xe8, 0xbf, 0xd2, 0xcd, 0xe8, - 0xc0, 0xd5, 0xcd, 0xe8, 0xc0, 0xd2, 0xce, 0xe8, 0xc0, 0xd0, 0xcd, 0xe8, - 0xc1, 0xd2, 0xce, 0xe8, 0xc1, 0xd0, 0xcd, 0xe8, 0xc1, 0xd2, 0xce, 0xe8, - 0xc1, 0xd0, 0xcd, 0xe8, 0xc2, 0xd2, 0xce, 0xe8, 0xc2, 0xd0, 0xcd, 0xe8, - 0xc2, 0xd2, 0xce, 0xe8, 0xc3, 0xd0, 0xcd, 0xe8, 0xc3, 0xd2, 0xce, 0xe8, - 0xc3, 0xd0, 0xcd, 0xe8, 0xc4, 0xd2, 0xce, 0xe8, 0xc4, 0xd0, 0xcd, 0xe8, - 0xc4, 0xd2, 0xce, 0xe8, 0xc5, 0xd0, 0xcd, 0xe8, 0xc5, 0xd2, 0xce, 0xe8, - 0xc5, 0xd0, 0xcd, 0xe8, 0xc6, 0xd2, 0xce, 0xe8, 0xc6, 0xd0, 0xcd, 0xe8, - 0xc6, 0xd2, 0xce, 0xe8, 0xc6, 0xd0, 0xcd, 0xe8, 0xc7, 0xd2, 0xce, 0xe8, - 0xc7, 0xd0, 0xcd, 0xe8, 0xc7, 0xd2, 0xce, 0xe8, 0xc8, 0xd0, 0xcd, 0xe8, - 0xc8, 0xd2, 0xce, 0xe8, 0xc8, 0xd0, 0xcd, 0xe8, 0xc9, 0xd2, 0xce, 0xe8, - 0xc9, 0xd0, 0xce, 0xe8, 0xc9, 0xce, 0xce, 0xe8, 0xc9, 0xd0, 0xce, 0xe8, - 0xca, 0xce, 0xce, 0xe8, 0xca, 0xd0, 0xce, 0xe8, 0xca, 0xce, 0xce, 0xe8, - 0xcb, 0xd0, 0xce, 0xe8, 0xcb, 0xce, 0xce, 0xe8, 0xcb, 0xd0, 0xce, 0xe8, - 0xcc, 0xce, 0xce, 0xe8, 0xcc, 0xd0, 0xce, 0xe8, 0xcc, 0xce, 0xce, 0xe8, - 0xcc, 0xd0, 0xce, 0xe8, 0xcd, 0xce, 0xce, 0xe8, 0xcd, 0xce, 0xce, 0xe8, - 0xcd, 0xce, 0xce, 0xe8, 0xce, 0xce, 0xce, 0xe8, 0xcd, 0xce, 0xce, 0xe8, - 0xce, 0xce, 0xce, 0xe8, 0xcd, 0xce, 0xcf, 0xe8, 0xce, 0xce, 0xcf, 0xe7, - 0xce, 0xce, 0xcf, 0xe8, 0xce, 0xce, 0xd0, 0xe7, 0xce, 0xce, 0xd0, 0xe8, - 0xce, 0xce, 0xd0, 0xe7, 0xce, 0xce, 0xd0, 0xe8, 0xce, 0xce, 0xd1, 0xe7, - 0xce, 0xce, 0xd1, 0xe8, 0xce, 0xce, 0xd1, 0xe7, 0xce, 0xce, 0xd2, 0xe8, - 0xce, 0xce, 0xd2, 0xe7, 0xce, 0xce, 0xd2, 0xe8, 0xce, 0xce, 0xd2, 0xe7, - 0xce, 0xce, 0xd3, 0xe8, 0xce, 0xce, 0xd3, 0xe7, 0xce, 0xce, 0xd3, 0xe8, - 0xce, 0xce, 0xd4, 0xe7, 0xce, 0xce, 0xd4, 0xe8, 0xce, 0xce, 0xd4, 0xe7, - 0xce, 0xce, 0xd4, 0xe8, 0xce, 0xce, 0xd5, 0xe7, 0xce, 0xce, 0xd5, 0xe6, - 0xce, 0xce, 0xd5, 0xe7, 0xce, 0xce, 0xd6, 0xe6, 0xce, 0xce, 0xd6, 0xe7, - 0xce, 0xce, 0xd6, 0xe6, 0xce, 0xce, 0xd6, 0xe7, 0xce, 0xce, 0xd7, 0xe6, - 0xce, 0xce, 0xd7, 0xe7, 0xce, 0xce, 0xd7, 0xe6, 0xce, 0xce, 0xd7, 0xe7, - 0xce, 0xce, 0xd8, 0xe6, 0xce, 0xce, 0xd8, 0xe7, 0xce, 0xce, 0xd8, 0xe6, - 0xce, 0xce, 0xd9, 0xe7, 0xce, 0xce, 0xd9, 0xe6, 0xce, 0xce, 0xd9, 0xe7, - 0xce, 0xce, 0xd9, 0xe6, 0xce, 0xce, 0xda, 0xe7, 0xce, 0xce, 0xda, 0xe6, - 0xce, 0xce, 0xda, 0xe7, 0xce, 0xce, 0xda, 0xe6, 0xce, 0xce, 0xdb, 0xea, - 0xe6, 0xce, 0xdb, 0xeb, 0xe6, 0xce, 0xdb, 0xea, 0xe6, 0xce, 0xdb, 0xeb, - 0xe6, 0xce, 0xdc, 0xea, 0xe6, 0xce, 0xdc, 0xeb, 0xe6, 0xce, 0xdc, 0xea, - 0xe6, 0xce, 0xdd, 0xeb, 0xe6, 0xce, 0xdd, 0xea, 0xe6, 0xce, 0xdd, 0xe9, - 0xe6, 0xce, 0xdd, 0xea, 0xe6, 0xce, 0xde, 0xe9, 0xe6, 0xce, 0xde, 0xea, - 0xe6, 0xce, 0xde, 0xe9, 0xe6, 0xce, 0xde, 0xea, 0xe6, 0xce, 0xdf, 0xe9, - 0xe6, 0xce, 0xdf, 0xea, 0xe6, 0xce, 0xdf, 0xe9, 0xe6, 0xce, 0xdf, 0xea, - 0xe6, 0xce, 0xe0, 0xe9, 0xe6, 0xce, 0xe0, 0xea, 0xe6, 0xce, 0xe0, 0xe9, - 0xe6, 0xce, 0xe1, 0xea, 0xe6, 0xce, 0xe1, 0xe9, 0xe6, 0xce, 0xe1, 0xea, - 0xe6, 0xce, 0xe1, 0xe9, 0xe6, 0xce, 0xe2, 0xea, 0xe6, 0xce, 0xe2, 0xe9, - 0xe6, 0xce, 0xe2, 0xea, 0xe6, 0xce, 0xe2, 0xe9, 0xe6, 0xce, 0xe3, 0xe8, - 0xe7, 0xce, 0xe3, 0xe9, 0xe6, 0xce, 0xe3, 0xe8, 0xe7, 0xce, 0xe3, 0xe9, - 0xe6, 0xce, 0xe4, 0xe8, 0xe7, 0xce, 0xe4, 0xe9, 0xe6, 0xce, 0xe4, 0xe8, - 0xe7, 0xce, 0xe4, 0xe9, 0xe6, 0xce, 0xe5, 0xe8, 0xe7, 0xce, 0xe5, 0xe9, - 0xe6, 0xce, 0xe5, 0xe8, 0xe7, 0xce, 0xe5, 0xe9, 0xe6, 0xce, 0xe6, 0xe8, - 0xe7, 0xce, 0xe6, 0xe9, 0xe6, 0xce, 0xe6, 0xe8, 0xe7, 0xce, 0xe6, 0xe9, - 0xe6, 0xce, 0xe6, 0xe8, 0xe7, 0xce, 0xe6, 0xe8, 0xe7, 0xce, 0xe6, 0xe8, - 0xe7, 0xce, 0xe6, 0xe8, 0xe7, 0xce, 0xe6, 0xe8, 0xe8, 0xce, 0xe6, 0xe8, - 0xe8, 0xce, 0xe6, 0xe8, 0xe8, 0xce, 0xe6, 0xe8, 0xe8, 0xce, 0xeb, 0xe8, - 0xe9, 0xce, 0xea, 0xe8, 0xe9, 0xd0, 0xeb, 0xe8, 0xe9, 0xce, 0xea, 0xe8, - 0xe9, 0xd0, 0xeb, 0xe8, 0xea, 0xce, 0xeb, 0xe8, 0xea, 0xce, 0xeb, 0xe8, - 0xea, 0xce, 0xeb, 0xe8, 0xea, 0xce, 0xeb, 0xe8, 0xea, 0xce, 0xeb, 0xe8, - 0xea, 0xce, 0xeb, 0xe8, 0xea, 0xce, 0xeb, 0xe8, 0xea, 0xce, 0xec, 0xe8, - 0xea, 0xce, 0xec, 0xe8, 0xea, 0xce, 0xec, 0xe8, 0xea, 0xce, 0xec, 0xe8, - 0xea, 0xce, 0xec, 0xe7, 0xeb, 0xce, 0xed, 0xe8, 0xea, 0xce, 0xed, 0xe7, - 0xeb, 0xce, 0xed, 0xe8, 0xea, 0xce, 0xed, 0xeb, 0xec, 0xce, 0xee, 0xeb, - 0xed, 0xce, 0xee, 0xeb, 0xec, 0xce, 0xee, 0xeb, 0xed, 0xce, 0xee, 0xec, - 0xee, 0xce, 0xef, 0xec, 0xef, 0xce, 0xef, 0xec, 0xef, 0xce, 0xef, 0xec, - 0xef, 0xce, 0xef, 0xec, 0xef, 0xce, 0xf0, 0xec, 0xf0, 0xce, 0xf0, 0xec, - 0xf0, 0xce, 0xf0, 0xec, 0xf0, 0xce, 0xf0, 0xec, 0xf0, 0xce, 0xf1, 0xec, - 0xf0, 0xce, 0xf1, 0xec, 0xf0, 0xce, 0xf1, 0xec, 0xf0, 0xce, 0xf1, 0xec, - 0xf0, 0xce, 0xf2, 0xec, 0xf0, 0xce, 0xf2, 0xec, 0xf0, 0xce, 0xf2, 0xec, - 0xf0, 0xce, 0xf2, 0xec, 0xf1, 0xce, 0xf2, 0xec, 0xf1, 0xce, 0xf3, 0xec, - 0xf1, 0xce, 0xf3, 0xec, 0xf1, 0xce, 0xf3, 0xec, 0xf1, 0xce, 0xf3, 0xec, - 0xf1, 0xce, 0xf4, 0xec, 0xf1, 0xce, 0xf4, 0xec, 0xf1, 0xce, 0xf4, 0xec, - 0xf1, 0xce, 0xf4, 0xec, 0xf1, 0xce, 0xf5, 0xec, 0xf1, 0xce, 0xf5, 0xec, - 0xf1, 0xce, 0xf5, 0xec, 0xf1, 0xce, 0xf5, 0xec, 0xf1, 0xce, 0xf5, 0xec, - 0xf1, 0xce, 0xf6, 0xec, 0xf1, 0xce, 0xf6, 0xec, 0xf1, 0xce, 0xf6, 0xec, - 0xf1, 0xce, 0xf6, 0xec, 0xf1, 0xce, 0xf7, 0xec, 0xf1, 0xce, 0xf7, 0xec, - 0xf1, 0xce, 0xf7, 0xec, 0xf1, 0xce, 0xf7, 0xec, 0xf1, 0xce, 0xf8, 0xec, - 0xf1, 0xce, 0xf8, 0xec, 0xf1, 0xce, 0xf8, 0xec, 0xf1, 0xce, 0xf8, 0xec, - 0xf1, 0xce, 0xf8, 0xec, 0xf1, 0xce, 0xf9, 0xec, 0xf1, 0xce, 0xf9, 0xec, - 0xf1, 0xce, 0xf9, 0xec, 0xf1, 0xce, 0xf9, 0xec, 0xf1, 0xce, 0xfa, 0xec, - 0xf1, 0xce, 0xfa, 0xec, 0xf1, 0xce, 0xfa, 0xec, 0xf1, 0xce, 0xfa, 0xec, - 0xf1, 0xce, 0xfa, 0xec, 0xf1, 0xce, 0xfb, 0xec, 0xf1, 0xce, 0xfb, 0xec, - 0xf1, 0xce, 0xfb, 0xec, 0xf1, 0xce, 0xfb, 0xec, 0xf1, 0xce, 0xfc, 0xec, - 0xf1, 0xce, 0xfc, 0xec, 0xf1, 0xce, 0xfc, 0xec, 0xf1, 0xce, 0xfc, 0xec, - 0xf1, 0xce, 0xfc, 0xec, 0xf1, 0xce, 0xfd, 0xec, 0xf1, 0xce, 0xfd, 0xec, - 0xf1, 0xce, 0xfd, 0xec, 0xf1, 0xce, 0xfd, 0xec, 0xf1, 0xce, 0xfe, 0xec, - 0xf1, 0xce, 0xfe, 0xec, 0xf1, 0xce, 0xfe, 0xec, 0xf1, 0xce, 0xfe, 0xec, - 0xf1, 0xce, 0xfe, 0xec, 0xf1, 0xce, 0xff, 0xec, 0xf1, 0xce, 0xff, 0xec, - 0xf1, 0xce, 0x03, 0xec, 0x85, 0xcf, 0x0a, 0xec, 0x85, 0xcf, 0x0f, 0xec, - 0x85, 0xcf, 0x14, 0xec, 0x85, 0xcf, 0x17, 0xec, 0x85, 0xcf, 0x1b, 0xec, - 0x85, 0xcf, 0x1e, 0xec, 0x85, 0xcf, 0x20, 0xee, 0x85, 0xcf, 0x23, 0xec, - 0x85, 0xcf, 0x25, 0xee, 0x85, 0xcf, 0x27, 0xec, 0x85, 0xcf, 0x29, 0xee, - 0x85, 0xcf, 0x2b, 0xec, 0x85, 0xcf, 0x2d, 0xee, 0x85, 0xcf, 0x2f, 0xec, - 0x85, 0xcf, 0x31, 0xee, 0x85, 0xcf, 0x32, 0xec, 0x85, 0xcf, 0x34, 0xeb, - 0x86, 0xcf, 0x35, 0xec, 0x85, 0xcf, 0x37, 0xeb, 0x86, 0xcf, 0x38, 0xec, - 0x85, 0xcf, 0x3a, 0xeb, 0x86, 0xcf, 0x3b, 0xec, 0x85, 0xcf, 0x3c, 0xeb, - 0x86, 0xcf, 0x3e, 0xec, 0x85, 0xcf, 0x3f, 0xeb, 0x86, 0xcf, 0x40, 0xec, - 0x85, 0xcf, 0x42, 0xeb, 0x86, 0xcf, 0x43, 0xec, 0x85, 0xcf, 0x44, 0xeb, - 0x86, 0xcf, 0x45, 0xec, 0x85, 0xcf, 0x46, 0xeb, 0x86, 0xcf, 0x47, 0xec, - 0x85, 0xcf, 0x48, 0xeb, 0x86, 0xcf, 0x49, 0xec, 0x85, 0xcf, 0x4a, 0xeb, - 0x86, 0xcf, 0x4b, 0xec, 0x85, 0xcf, 0x4c, 0xeb, 0x86, 0xcf, 0x4d, 0xec, - 0x85, 0xcf, 0x4e, 0xeb, 0x86, 0xcf, 0x4f, 0xec, 0x85, 0xcf, 0x50, 0xeb, - 0x86, 0xcf, 0x51, 0xec, 0x85, 0xcf, 0x52, 0xeb, 0x86, 0xcf, 0x53, 0xec, - 0x85, 0xcf, 0x54, 0xeb, 0x86, 0xcf, 0x55, 0xec, 0x85, 0xcf, 0x56, 0xeb, - 0x86, 0xcf, 0x57, 0xec, 0x85, 0xcf, 0x58, 0xeb, 0x86, 0xcf, 0x58, 0xec, - 0x85, 0xcf, 0x59, 0xeb, 0x86, 0xcf, 0x5a, 0xec, 0x85, 0xcf, 0x5b, 0xeb, - 0x86, 0xcf, 0x5c, 0xec, 0x85, 0xcf, 0x5d, 0xeb, 0x86, 0xcf, 0x5d, 0xec, - 0x85, 0xcf, 0x5e, 0xeb, 0x86, 0xcf, 0x5f, 0xec, 0x85, 0xcf, 0x60, 0xeb, - 0x86, 0xcf, 0x60, 0xec, 0x85, 0xcf, 0x61, 0xeb, 0x86, 0xcf, 0x62, 0xec, - 0x85, 0xcf, 0x63, 0xeb, 0x86, 0xcf, 0x63, 0xec, 0x85, 0xcf, 0x64, 0xeb, - 0x86, 0xcf, 0x65, 0xec, 0x85, 0xcf, 0x66, 0xeb, 0x86, 0xcf, 0x66, 0xec, - 0x85, 0xcf, 0x67, 0xeb, 0x86, 0xcf, 0x68, 0xec, 0x85, 0xcf, 0x68, 0xeb, - 0x86, 0xcf, 0x69, 0xec, 0x85, 0xcf, 0x6a, 0xeb, 0x86, 0xcf, 0x6a, 0xe9, - 0x86, 0xcf, 0x6b, 0xeb, 0x86, 0xcf, 0x6c, 0xe9, 0x86, 0xcf, 0x6c, 0xeb, - 0x86, 0xcf, 0x6d, 0xe9, 0x86, 0xcf, 0x6e, 0xeb, 0x86, 0xcf, 0x6e, 0xe9, - 0x86, 0xcf, 0x6f, 0xeb, 0x86, 0xcf, 0x70, 0xe9, 0x86, 0xcf, 0x70, 0xeb, - 0x86, 0xcf, 0x71, 0xe9, 0x86, 0xcf, 0x72, 0xeb, 0x86, 0xcf, 0x72, 0xe9, - 0x86, 0xcf, 0x73, 0xeb, 0x86, 0xcf, 0x73, 0xe9, 0x86, 0xcf, 0x74, 0xeb, - 0x86, 0xcf, 0x75, 0xe9, 0x86, 0xcf, 0x75, 0xeb, 0x86, 0xcf, 0x76, 0xe9, - 0x86, 0xcf, 0x76, 0xeb, 0x86, 0xcf, 0x77, 0xe9, 0x86, 0xcf, 0x78, 0xeb, - 0x86, 0xcf, 0x78, 0xe9, 0x86, 0xcf, 0x79, 0xeb, 0x86, 0xcf, 0x79, 0xe9, - 0x86, 0xcf, 0x7a, 0xeb, 0x86, 0xcf, 0x7a, 0xe9, 0x86, 0xcf, 0x7b, 0xeb, - 0x86, 0xcf, 0x7c, 0xe9, 0x86, 0xcf, 0x7c, 0xeb, 0x86, 0xcf, 0x7d, 0xe9, - 0x86, 0xcf, 0x7d, 0xeb, 0x86, 0xcf, 0x7e, 0xe9, 0x86, 0xcf, 0x7e, 0xe9, - 0x87, 0xcf, 0x7f, 0xe9, 0x86, 0xcf, 0x7f, 0xe9, 0x87, 0xcf, 0x80, 0xe9, - 0x86, 0xcf, 0x81, 0xe9, 0x87, 0xcf, 0x81, 0xe9, 0x86, 0xcf, 0x82, 0xe9, - 0x87, 0xcf, 0x82, 0xe9, 0x86, 0xcf, 0x83, 0xe9, 0x87, 0xcf, 0x83, 0xe9, - 0x86, 0xcf, 0x84, 0xe9, 0x87, 0xcf, 0x84, 0xe9, 0x86, 0xcf, 0x85, 0xe9, - 0x87, 0xcf, 0x85, 0xe9, 0x86, 0xcf, 0x86, 0xe9, 0x87, 0xcf, 0x86, 0xe9, - 0x87, 0xcf, 0x86, 0xe9, 0x87, 0xcf, 0x86, 0xe9, 0x87, 0xcf, 0x86, 0xe9, - 0x88, 0xcf, 0x86, 0xe9, 0x88, 0xcf, 0x86, 0xe9, 0x89, 0xcf, 0x86, 0xe9, - 0x89, 0xcf, 0x86, 0xe9, 0x8a, 0xcf, 0x86, 0xe9, 0x8a, 0xcf, 0x87, 0xe9, - 0x8b, 0xcc, 0x86, 0xe9, 0x8b, 0xcf, 0x87, 0xe9, 0x8c, 0xcc, 0x86, 0xe9, - 0x8c, 0xcf, 0x87, 0xe9, 0x8d, 0xcc, 0x86, 0xe9, 0x8d, 0xcf, 0x87, 0xe9, - 0x8e, 0xcc, 0x86, 0xe9, 0x8e, 0xcf, 0x87, 0xe9, 0x8e, 0xcc, 0x86, 0xe9, - 0x8f, 0xcf, 0x87, 0xe9, 0x8f, 0xcc, 0x86, 0xe9, 0x90, 0xcf, 0x87, 0xe9, - 0x90, 0xcc, 0x86, 0xe9, 0x91, 0xcf, 0x87, 0xe9, 0x91, 0xcc, 0x86, 0xe9, - 0x92, 0xcf, 0x87, 0xe9, 0x92, 0xcc, 0x86, 0xe9, 0x93, 0xcf, 0x87, 0xe9, - 0x93, 0xcc, 0x86, 0xe9, 0x94, 0xcf, 0x87, 0xe9, 0x94, 0xcc, 0x86, 0xe9, - 0x94, 0xcf, 0x87, 0xe9, 0x95, 0xcc, 0x86, 0xe9, 0x95, 0xcf, 0x87, 0xe9, - 0x96, 0xcc, 0x86, 0xe9, 0x96, 0xcf, 0x87, 0xe9, 0x97, 0xcc, 0x86, 0xe9, - 0x97, 0xcf, 0x87, 0xe9, 0x98, 0xcc, 0x86, 0xe9, 0x98, 0xcf, 0x87, 0xe9, - 0x98, 0xcc, 0x86, 0xe9, 0x99, 0xcf, 0x87, 0xe9, 0x99, 0xcc, 0x86, 0xe9, - 0x9a, 0xcf, 0x87, 0xe9, 0x9a, 0xcc, 0x86, 0xe9, 0x9a, 0xcf, 0x87, 0xe9, - 0x9b, 0xcc, 0x86, 0xe9, 0x9b, 0xcf, 0x87, 0xe9, 0x9c, 0xcc, 0x86, 0xe9, - 0x9c, 0xcf, 0x87, 0xe9, 0x9d, 0xcc, 0x87, 0xe9, 0x9d, 0xc8, 0x87, 0xe9, - 0x9d, 0xcc, 0x87, 0xe9, 0x9e, 0xc8, 0x87, 0xe9, 0x9e, 0xcc, 0x87, 0xe9, - 0x9f, 0xc8, 0x87, 0xe9, 0x9f, 0xcc, 0x87, 0xe9, 0x9f, 0xc8, 0x87, 0xe9, - 0xa0, 0xcc, 0x87, 0xe9, 0xa0, 0xc8, 0x87, 0xe9, 0xa1, 0xcc, 0x87, 0xe9, - 0xa1, 0xc8, 0xa0, 0xe9, 0xa1, 0xed, 0x9b, 0xe9, 0xa2, 0xec, 0xa0, 0xe9, - 0xa2, 0xed, 0x9f, 0xe9, 0xa3, 0xed, 0xa0, 0xe9, 0xa3, 0xed, 0x9f, 0xe9, - 0xa3, 0xed, 0xa0, 0xe9, 0xa4, 0xed, 0x9f, 0xe9, 0xa4, 0xed, 0xa0, 0xe9, - 0xa5, 0xed, 0x9f, 0xe9, 0xa5, 0xed, 0xa0, 0xe9, 0xa5, 0xed, 0x9f, 0xe9, - 0xa6, 0xed, 0xa0, 0xe9, 0xa6, 0xed, 0xa4, 0xe9, 0xa6, 0xee, 0xa4, 0xe9, - 0xa7, 0xee, 0xa4, 0xe9, 0xa7, 0xee, 0xa4, 0xe9, 0xa8, 0xee, 0xa4, 0xe9, - 0xa8, 0xee, 0xa4, 0xe9, 0xa8, 0xee, 0xa4, 0xe9, 0xa9, 0xee, 0xa4, 0xe9, - 0xa9, 0xee, 0xa4, 0xe9, 0xaa, 0xee, 0xa4, 0xe9, 0xaa, 0xee, 0xa4, 0xe9, - 0xaa, 0xee, 0xa8, 0xe9, 0xab, 0xef, 0xa8, 0xe9, 0xab, 0xef, 0xa8, 0xe9, - 0xab, 0xef, 0xa8, 0xe9, 0xac, 0xef, 0xa8, 0xe9, 0xac, 0xef, 0xa8, 0xe9, - 0xac, 0xef, 0xa8, 0xe9, 0xad, 0xef, 0xa8, 0xe9, 0xad, 0xef, 0xa8, 0xe9, - 0xae, 0xef, 0xa8, 0xe9, 0xae, 0xef, 0xa8, 0xe9, 0xae, 0xef, 0xac, 0xe9, - 0xaf, 0xf0, 0xac, 0xe9, 0xaf, 0xf0, 0xac, 0xe9, 0xaf, 0xf0, 0xac, 0xe9, - 0xb0, 0xf0, 0xac, 0xe9, 0xb0, 0xf0, 0xac, 0xe9, 0xb0, 0xf0, 0xac, 0xe9, - 0xb1, 0xf0, 0xac, 0xe9, 0xb1, 0xf0, 0xac, 0xe9, 0xb2, 0xf0, 0xac, 0xe9, - 0xb2, 0xf0, 0xac, 0xe9, 0xb2, 0xf0, 0xb0, 0xe9, 0xb3, 0xf1, 0xac, 0xe9, - 0xb3, 0xf0, 0xb0, 0xe9, 0xb3, 0xf1, 0xb0, 0xe9, 0xb4, 0xf1, 0xb0, 0xe9, - 0xb4, 0xf1, 0xb0, 0xe9, 0xb4, 0xf1, 0xb0, 0xe9, 0xb5, 0xf1, 0xb0, 0xe9, - 0xb5, 0xf1, 0xb0, 0xe9, 0xb5, 0xf1, 0xb0, 0xe9, 0xb6, 0xf1, 0xb0, 0xe9, - 0xb6, 0xf1, 0xb4, 0xe9, 0xb6, 0xf2, 0xb0, 0xe9, 0xb7, 0xf1, 0xb4, 0xe9, - 0xb7, 0xf2, 0xcd, 0xe9, 0xb7, 0xd8, 0xcd, 0xe9, 0xb8, 0xd6, 0xcd, 0xe9, - 0xb8, 0xd8, 0xcd, 0xe9, 0xb8, 0xd6, 0xcd, 0xe9, 0xb9, 0xd8, 0xcd, 0xe9, - 0xb9, 0xd6, 0xcd, 0xe9, 0xb9, 0xd3, 0xcd, 0xe9, 0xba, 0xd6, 0xcd, 0xe9, - 0xba, 0xd3, 0xcd, 0xe9, 0xba, 0xd6, 0xcd, 0xe9, 0xbb, 0xd3, 0xcd, 0xe9, - 0xbb, 0xd6, 0xcd, 0xe9, 0xbb, 0xd3, 0xcd, 0xe9, 0xbc, 0xd6, 0xcd, 0xe9, - 0xbc, 0xd3, 0xcd, 0xe9, 0xbc, 0xd6, 0xcd, 0xe9, 0xbd, 0xd3, 0xcd, 0xe9, - 0xbd, 0xd6, 0xcd, 0xe9, 0xbd, 0xd3, 0xcd, 0xe9, 0xbe, 0xd6, 0xcd, 0xe9, - 0xbe, 0xd3, 0xcd, 0xe9, 0xbe, 0xd6, 0xcd, 0xe9, 0xbf, 0xd3, 0xce, 0xe9, - 0xbf, 0xd0, 0xcd, 0xe9, 0xbf, 0xd3, 0xce, 0xe9, 0xc0, 0xd0, 0xcd, 0xe9, - 0xc0, 0xd3, 0xce, 0xe9, 0xc0, 0xd0, 0xcd, 0xe9, 0xc1, 0xd3, 0xce, 0xe9, - 0xc1, 0xd0, 0xcd, 0xe9, 0xc1, 0xd3, 0xce, 0xe9, 0xc1, 0xd0, 0xcd, 0xe9, - 0xc2, 0xd3, 0xce, 0xe9, 0xc2, 0xd0, 0xcd, 0xe9, 0xc2, 0xd3, 0xce, 0xe9, - 0xc3, 0xd0, 0xcd, 0xe9, 0xc3, 0xd3, 0xce, 0xe9, 0xc3, 0xd0, 0xcd, 0xe9, - 0xc4, 0xd3, 0xce, 0xe9, 0xc4, 0xd0, 0xcd, 0xe9, 0xc4, 0xd3, 0xce, 0xe9, - 0xc5, 0xd0, 0xcd, 0xe9, 0xc5, 0xd3, 0xce, 0xe9, 0xc5, 0xd0, 0xcd, 0xe9, - 0xc6, 0xd3, 0xce, 0xe9, 0xc6, 0xd0, 0xcd, 0xe9, 0xc6, 0xd3, 0xce, 0xe9, - 0xc6, 0xd0, 0xcd, 0xe9, 0xc7, 0xd3, 0xce, 0xe9, 0xc7, 0xd0, 0xcd, 0xe9, - 0xc7, 0xd3, 0xce, 0xe9, 0xc8, 0xd0, 0xcd, 0xe9, 0xc8, 0xd3, 0xce, 0xe9, - 0xc8, 0xd0, 0xcd, 0xe9, 0xc9, 0xd3, 0xce, 0xe9, 0xc9, 0xd0, 0xce, 0xe9, - 0xc9, 0xcf, 0xce, 0xe9, 0xc9, 0xd0, 0xce, 0xe9, 0xca, 0xcf, 0xce, 0xe9, - 0xca, 0xd0, 0xce, 0xe9, 0xca, 0xcf, 0xce, 0xe9, 0xcb, 0xd0, 0xce, 0xe9, - 0xcb, 0xcf, 0xce, 0xe9, 0xcb, 0xd0, 0xce, 0xe9, 0xcc, 0xcf, 0xce, 0xe9, - 0xcc, 0xd0, 0xce, 0xe9, 0xcc, 0xcf, 0xce, 0xe9, 0xcc, 0xd0, 0xce, 0xe9, - 0xcd, 0xcf, 0xce, 0xe9, 0xcd, 0xd0, 0xce, 0xe9, 0xcd, 0xcf, 0xce, 0xe9, - 0xce, 0xcf, 0xce, 0xe9, 0xcd, 0xcf, 0xce, 0xe9, 0xce, 0xcf, 0xce, 0xe9, - 0xcd, 0xcf, 0xcf, 0xe9, 0xce, 0xcf, 0xcf, 0xe9, 0xcd, 0xcf, 0xcf, 0xe9, - 0xce, 0xcf, 0xd0, 0xe9, 0xcd, 0xcf, 0xd0, 0xe9, 0xce, 0xcf, 0xd0, 0xe7, - 0xce, 0xcf, 0xd0, 0xe9, 0xce, 0xcf, 0xd1, 0xe7, 0xce, 0xcf, 0xd1, 0xe9, - 0xce, 0xcf, 0xd1, 0xe7, 0xce, 0xcf, 0xd2, 0xe9, 0xce, 0xcf, 0xd2, 0xe7, - 0xce, 0xcf, 0xd2, 0xe9, 0xce, 0xcf, 0xd2, 0xe7, 0xce, 0xcf, 0xd3, 0xe9, - 0xce, 0xcf, 0xd3, 0xe7, 0xce, 0xcf, 0xd3, 0xe9, 0xce, 0xcf, 0xd4, 0xe7, - 0xce, 0xcf, 0xd4, 0xe9, 0xce, 0xcf, 0xd4, 0xe7, 0xce, 0xcf, 0xd4, 0xe9, - 0xce, 0xcf, 0xd5, 0xe7, 0xce, 0xcf, 0xd5, 0xe6, 0xce, 0xcf, 0xd5, 0xe7, - 0xce, 0xcf, 0xd6, 0xe6, 0xce, 0xcf, 0xd6, 0xe7, 0xce, 0xcf, 0xd6, 0xe6, - 0xce, 0xcf, 0xd6, 0xe7, 0xce, 0xcf, 0xd7, 0xe6, 0xce, 0xcf, 0xd7, 0xe7, - 0xce, 0xcf, 0xd7, 0xe6, 0xce, 0xcf, 0xd7, 0xe7, 0xce, 0xcf, 0xd8, 0xe6, - 0xce, 0xcf, 0xd8, 0xe7, 0xce, 0xcf, 0xd8, 0xe6, 0xce, 0xcf, 0xd9, 0xe7, - 0xce, 0xcf, 0xd9, 0xe6, 0xce, 0xcf, 0xd9, 0xe7, 0xce, 0xcf, 0xd9, 0xe6, - 0xce, 0xcf, 0xda, 0xe7, 0xce, 0xcf, 0xda, 0xe6, 0xce, 0xcf, 0xda, 0xe7, - 0xce, 0xcf, 0xda, 0xe6, 0xce, 0xcf, 0xdb, 0xea, 0xe6, 0xcf, 0xdb, 0xec, - 0xe6, 0xcf, 0xdb, 0xea, 0xe6, 0xcf, 0xdb, 0xec, 0xe6, 0xcf, 0xdc, 0xea, - 0xe6, 0xcf, 0xdc, 0xec, 0xe6, 0xcf, 0xdc, 0xea, 0xe6, 0xcf, 0xdd, 0xec, - 0xe6, 0xcf, 0xdd, 0xea, 0xe6, 0xcf, 0xdd, 0xe9, 0xe6, 0xcf, 0xdd, 0xea, - 0xe6, 0xcf, 0xde, 0xe9, 0xe6, 0xcf, 0xde, 0xea, 0xe6, 0xcf, 0xde, 0xe9, - 0xe6, 0xcf, 0xde, 0xea, 0xe6, 0xcf, 0xdf, 0xe9, 0xe6, 0xcf, 0xdf, 0xea, - 0xe6, 0xcf, 0xdf, 0xe9, 0xe6, 0xcf, 0xdf, 0xea, 0xe6, 0xcf, 0xe0, 0xe9, - 0xe6, 0xcf, 0xe0, 0xea, 0xe6, 0xcf, 0xe0, 0xe9, 0xe6, 0xcf, 0xe1, 0xea, - 0xe6, 0xcf, 0xe1, 0xe9, 0xe6, 0xcf, 0xe1, 0xea, 0xe6, 0xcf, 0xe1, 0xe9, - 0xe6, 0xcf, 0xe2, 0xea, 0xe6, 0xcf, 0xe2, 0xe9, 0xe6, 0xcf, 0xe2, 0xea, - 0xe6, 0xcf, 0xe2, 0xe9, 0xe6, 0xcf, 0xe3, 0xea, 0xe6, 0xcf, 0xe3, 0xe9, - 0xe6, 0xcf, 0xe3, 0xea, 0xe6, 0xcf, 0xe3, 0xe9, 0xe6, 0xcf, 0xe4, 0xea, - 0xe6, 0xcf, 0xe4, 0xe9, 0xe6, 0xcf, 0xe4, 0xea, 0xe6, 0xcf, 0xe4, 0xe9, - 0xe6, 0xcf, 0xe5, 0xe9, 0xe7, 0xcf, 0xe5, 0xe9, 0xe6, 0xcf, 0xe5, 0xe9, - 0xe7, 0xcf, 0xe5, 0xe9, 0xe6, 0xcf, 0xe6, 0xe9, 0xe7, 0xcf, 0xe6, 0xe9, - 0xe6, 0xcf, 0xe6, 0xe9, 0xe7, 0xcf, 0xe6, 0xe9, 0xe6, 0xce, 0xe6, 0xe9, - 0xe7, 0xcf, 0xe6, 0xe9, 0xe7, 0xce, 0xe6, 0xe9, 0xe7, 0xcf, 0xe6, 0xe9, - 0xe7, 0xce, 0xe6, 0xe9, 0xe8, 0xcf, 0xe6, 0xe9, 0xe8, 0xce, 0xe6, 0xe9, - 0xe8, 0xcf, 0xe6, 0xe9, 0xe8, 0xce, 0xeb, 0xe9, 0xe9, 0xcf, 0xea, 0xe9, - 0xe9, 0xd0, 0xeb, 0xe9, 0xe9, 0xcf, 0xea, 0xe9, 0xe9, 0xd0, 0xeb, 0xe9, - 0xea, 0xcf, 0xea, 0xe9, 0xea, 0xd0, 0xeb, 0xe9, 0xea, 0xcf, 0xeb, 0xe9, - 0xea, 0xcf, 0xeb, 0xe9, 0xea, 0xcf, 0xeb, 0xe9, 0xea, 0xcf, 0xeb, 0xe9, - 0xea, 0xcf, 0xeb, 0xe9, 0xea, 0xcf, 0xec, 0xe9, 0xea, 0xcf, 0xec, 0xe9, - 0xea, 0xcf, 0xec, 0xe9, 0xea, 0xcf, 0xec, 0xe9, 0xea, 0xcf, 0xec, 0xe9, - 0xea, 0xcf, 0xed, 0xe9, 0xea, 0xcf, 0xed, 0xec, 0xed, 0xcf, 0xed, 0xec, - 0xed, 0xcf, 0xed, 0xec, 0xed, 0xcf, 0xee, 0xec, 0xee, 0xcf, 0xee, 0xec, - 0xee, 0xcf, 0xee, 0xec, 0xee, 0xcf, 0xee, 0xec, 0xee, 0xcf, 0xef, 0xec, - 0xee, 0xcf, 0xef, 0xec, 0xee, 0xcf, 0xef, 0xec, 0xee, 0xcf, 0xef, 0xec, - 0xee, 0xcf, 0xf0, 0xec, 0xee, 0xcf, 0xf0, 0xec, 0xee, 0xcf, 0xf0, 0xec, - 0xf0, 0xcf, 0xf0, 0xec, 0xf0, 0xcf, 0xf1, 0xec, 0xf1, 0xcf, 0xf1, 0xec, - 0xf1, 0xcf, 0xf1, 0xec, 0xf1, 0xcf, 0xf1, 0xec, 0xf1, 0xcf, 0xf2, 0xec, - 0xf1, 0xcf, 0xf2, 0xec, 0xf1, 0xcf, 0xf2, 0xec, 0xf1, 0xcf, 0xf2, 0xec, - 0xf1, 0xcf, 0xf2, 0xec, 0xf1, 0xcf, 0xf3, 0xec, 0xf1, 0xcf, 0xf3, 0xec, - 0xf1, 0xcf, 0xf3, 0xec, 0xf1, 0xcf, 0xf3, 0xec, 0xf1, 0xcf, 0xf4, 0xec, - 0xf1, 0xcf, 0xf4, 0xec, 0xf1, 0xcf, 0xf4, 0xec, 0xf1, 0xcf, 0xf4, 0xec, - 0xf1, 0xcf, 0xf5, 0xec, 0xf1, 0xcf, 0xf5, 0xec, 0xf1, 0xcf, 0xf5, 0xec, - 0xf1, 0xcf, 0xf5, 0xec, 0xf1, 0xcf, 0xf5, 0xec, 0xf1, 0xcf, 0xf6, 0xec, - 0xf1, 0xcf, 0xf6, 0xec, 0xf1, 0xcf, 0xf6, 0xec, 0xf1, 0xcf, 0xf6, 0xec, - 0xf1, 0xcf, 0xf7, 0xec, 0xf1, 0xcf, 0xf7, 0xec, 0xf1, 0xcf, 0xf7, 0xec, - 0xf1, 0xcf, 0xf7, 0xec, 0xf1, 0xcf, 0xf8, 0xec, 0xf1, 0xcf, 0xf8, 0xec, - 0xf1, 0xcf, 0xf8, 0xec, 0xf1, 0xcf, 0xf8, 0xec, 0xf1, 0xcf, 0xf8, 0xec, - 0xf1, 0xcf, 0xf9, 0xec, 0xf1, 0xcf, 0xf9, 0xec, 0xf1, 0xcf, 0xf9, 0xec, - 0xf1, 0xcf, 0xf9, 0xec, 0xf1, 0xcf, 0xfa, 0xec, 0xf1, 0xcf, 0xfa, 0xec, - 0xf1, 0xcf, 0xfa, 0xec, 0xf1, 0xcf, 0xfa, 0xec, 0xf1, 0xcf, 0xfa, 0xec, - 0xf1, 0xcf, 0xfb, 0xec, 0xf1, 0xcf, 0xfb, 0xec, 0xf1, 0xcf, 0xfb, 0xec, - 0xf1, 0xcf, 0xfb, 0xec, 0xf1, 0xcf, 0xfc, 0xec, 0xf1, 0xcf, 0xfc, 0xec, - 0xf1, 0xcf, 0xfc, 0xec, 0xf1, 0xcf, 0xfc, 0xec, 0xf1, 0xcf, 0xfc, 0xec, - 0xf1, 0xcf, 0xfd, 0xec, 0xf1, 0xcf, 0xfd, 0xec, 0xf1, 0xcf, 0xfd, 0xec, - 0xf1, 0xcf, 0xfd, 0xec, 0xf1, 0xcf, 0xfe, 0xec, 0xf1, 0xcf, 0xfe, 0xec, - 0xf1, 0xcf, 0xfe, 0xec, 0xf1, 0xcf, 0xfe, 0xec, 0xf1, 0xcf, 0xfe, 0xec, - 0xf1, 0xcf, 0xff, 0xec, 0xf1, 0xcf, 0xff, 0xec, 0xf1, 0xcf, 0x03, 0xec, - 0x85, 0xcf, 0x0a, 0xee, 0x85, 0xcf, 0x0f, 0xec, 0x85, 0xcf, 0x14, 0xee, - 0x85, 0xcf, 0x17, 0xec, 0x85, 0xcf, 0x1b, 0xee, 0x85, 0xcf, 0x1e, 0xec, - 0x85, 0xcf, 0x20, 0xee, 0x85, 0xcf, 0x23, 0xec, 0x85, 0xcf, 0x25, 0xee, - 0x85, 0xcf, 0x27, 0xec, 0x85, 0xcf, 0x29, 0xee, 0x85, 0xcf, 0x2b, 0xec, - 0x85, 0xcf, 0x2d, 0xee, 0x85, 0xcf, 0x2f, 0xec, 0x85, 0xcf, 0x31, 0xee, - 0x85, 0xcf, 0x32, 0xec, 0x85, 0xcf, 0x34, 0xee, 0x85, 0xcf, 0x35, 0xec, - 0x85, 0xcf, 0x37, 0xee, 0x85, 0xcf, 0x38, 0xec, 0x85, 0xcf, 0x3a, 0xee, - 0x85, 0xcf, 0x3b, 0xec, 0x85, 0xcf, 0x3c, 0xee, 0x85, 0xcf, 0x3e, 0xec, - 0x85, 0xcf, 0x3f, 0xee, 0x85, 0xcf, 0x40, 0xec, 0x85, 0xcf, 0x42, 0xee, - 0x85, 0xcf, 0x43, 0xec, 0x85, 0xcf, 0x44, 0xee, 0x85, 0xcf, 0x45, 0xec, - 0x85, 0xcf, 0x46, 0xee, 0x85, 0xcf, 0x47, 0xec, 0x85, 0xcf, 0x48, 0xee, - 0x85, 0xcf, 0x49, 0xec, 0x85, 0xcf, 0x4a, 0xee, 0x85, 0xcf, 0x4b, 0xec, - 0x85, 0xcf, 0x4c, 0xeb, 0x86, 0xcf, 0x4d, 0xec, 0x85, 0xcf, 0x4e, 0xeb, - 0x86, 0xcf, 0x4f, 0xec, 0x85, 0xcf, 0x50, 0xeb, 0x86, 0xcf, 0x51, 0xec, - 0x85, 0xcf, 0x52, 0xeb, 0x86, 0xcf, 0x53, 0xec, 0x85, 0xcf, 0x54, 0xeb, - 0x86, 0xcf, 0x55, 0xec, 0x85, 0xcf, 0x56, 0xeb, 0x86, 0xcf, 0x57, 0xec, - 0x85, 0xcf, 0x58, 0xeb, 0x86, 0xcf, 0x58, 0xec, 0x85, 0xcf, 0x59, 0xeb, - 0x86, 0xcf, 0x5a, 0xec, 0x85, 0xcf, 0x5b, 0xeb, 0x86, 0xcf, 0x5c, 0xec, - 0x85, 0xcf, 0x5d, 0xeb, 0x86, 0xcf, 0x5d, 0xec, 0x85, 0xcf, 0x5e, 0xeb, - 0x86, 0xcf, 0x5f, 0xec, 0x85, 0xcf, 0x60, 0xeb, 0x86, 0xcf, 0x60, 0xec, - 0x85, 0xcf, 0x61, 0xeb, 0x86, 0xcf, 0x62, 0xec, 0x85, 0xcf, 0x63, 0xeb, - 0x86, 0xcf, 0x63, 0xec, 0x85, 0xcf, 0x64, 0xeb, 0x86, 0xcf, 0x65, 0xec, - 0x85, 0xcf, 0x66, 0xeb, 0x86, 0xcf, 0x66, 0xec, 0x85, 0xcf, 0x67, 0xeb, - 0x86, 0xcf, 0x68, 0xec, 0x85, 0xcf, 0x68, 0xeb, 0x86, 0xcf, 0x69, 0xec, - 0x85, 0xcf, 0x6a, 0xeb, 0x86, 0xcf, 0x6a, 0xe9, 0x86, 0xcf, 0x6b, 0xeb, - 0x86, 0xcf, 0x6c, 0xe9, 0x86, 0xcf, 0x6c, 0xeb, 0x86, 0xcf, 0x6d, 0xe9, - 0x86, 0xcf, 0x6e, 0xeb, 0x86, 0xcf, 0x6e, 0xe9, 0x86, 0xcf, 0x6f, 0xeb, - 0x86, 0xcf, 0x70, 0xe9, 0x86, 0xcf, 0x70, 0xeb, 0x86, 0xcf, 0x71, 0xe9, - 0x86, 0xcf, 0x72, 0xeb, 0x86, 0xcf, 0x72, 0xe9, 0x86, 0xcf, 0x73, 0xeb, - 0x86, 0xcf, 0x73, 0xe9, 0x86, 0xcf, 0x74, 0xeb, 0x86, 0xcf, 0x75, 0xe9, - 0x86, 0xcf, 0x75, 0xeb, 0x86, 0xcf, 0x76, 0xe9, 0x86, 0xcf, 0x76, 0xeb, - 0x86, 0xcf, 0x77, 0xe9, 0x86, 0xcf, 0x78, 0xeb, 0x86, 0xcf, 0x78, 0xe9, - 0x86, 0xcf, 0x79, 0xeb, 0x86, 0xcf, 0x79, 0xe9, 0x86, 0xcf, 0x7a, 0xeb, - 0x86, 0xcf, 0x7a, 0xe9, 0x86, 0xcf, 0x7b, 0xeb, 0x86, 0xcf, 0x7c, 0xe9, - 0x86, 0xcf, 0x7c, 0xeb, 0x86, 0xcf, 0x7d, 0xe9, 0x86, 0xcf, 0x7d, 0xeb, - 0x86, 0xcf, 0x7e, 0xe9, 0x86, 0xcf, 0x7e, 0xe9, 0x87, 0xcf, 0x7f, 0xe9, - 0x86, 0xcf, 0x7f, 0xe9, 0x87, 0xcf, 0x80, 0xe9, 0x86, 0xcf, 0x81, 0xe9, - 0x87, 0xcf, 0x81, 0xe9, 0x86, 0xcf, 0x82, 0xe9, 0x87, 0xcf, 0x82, 0xe9, - 0x86, 0xcf, 0x83, 0xe9, 0x87, 0xcf, 0x83, 0xe9, 0x86, 0xcf, 0x84, 0xe9, - 0x87, 0xcf, 0x84, 0xe9, 0x86, 0xcf, 0x85, 0xe9, 0x87, 0xcf, 0x85, 0xe9, - 0x86, 0xcf, 0x86, 0xe9, 0x87, 0xcf, 0x86, 0xe9, 0x86, 0xce, 0x86, 0xe9, - 0x87, 0xcf, 0x86, 0xe9, 0x87, 0xce, 0x86, 0xe9, 0x88, 0xcf, 0x86, 0xe9, - 0x88, 0xce, 0x86, 0xe9, 0x89, 0xcf, 0x86, 0xe9, 0x89, 0xce, 0x86, 0xe9, - 0x8a, 0xcf, 0x86, 0xe9, 0x8a, 0xce, 0x86, 0xe9, 0x8b, 0xcf, 0x86, 0xe9, - 0x8b, 0xce, 0x86, 0xe9, 0x8c, 0xcf, 0x86, 0xe9, 0x8c, 0xce, 0x86, 0xe9, - 0x8d, 0xcf, 0x86, 0xe9, 0x8d, 0xce, 0x86, 0xe9, 0x8e, 0xcf, 0x86, 0xe9, - 0x8e, 0xce, 0x87, 0xe9, 0x8e, 0xcb, 0x86, 0xe9, 0x8f, 0xce, 0x87, 0xe9, - 0x8f, 0xcb, 0x86, 0xe9, 0x90, 0xce, 0x87, 0xe9, 0x90, 0xcb, 0x86, 0xe9, - 0x91, 0xce, 0x87, 0xe9, 0x91, 0xcb, 0x86, 0xe9, 0x92, 0xce, 0x87, 0xe9, - 0x92, 0xcb, 0x86, 0xe9, 0x93, 0xce, 0x87, 0xe9, 0x93, 0xcb, 0x86, 0xe9, - 0x94, 0xce, 0x87, 0xe9, 0x94, 0xcb, 0x86, 0xe9, 0x94, 0xce, 0x87, 0xe9, - 0x95, 0xcb, 0x86, 0xe9, 0x95, 0xce, 0x87, 0xe9, 0x96, 0xcb, 0x86, 0xe9, - 0x96, 0xce, 0x87, 0xe9, 0x97, 0xcb, 0x86, 0xe9, 0x97, 0xce, 0x87, 0xe9, - 0x98, 0xcb, 0x86, 0xe9, 0x98, 0xce, 0x87, 0xe9, 0x98, 0xcb, 0x86, 0xe9, - 0x99, 0xce, 0x87, 0xe9, 0x99, 0xcb, 0x86, 0xe9, 0x9a, 0xce, 0x87, 0xe9, - 0x9a, 0xcb, 0x86, 0xe9, 0x9a, 0xce, 0x87, 0xe9, 0x9b, 0xcb, 0x86, 0xe9, - 0x9b, 0xce, 0x87, 0xe9, 0x9c, 0xcb, 0x86, 0xe9, 0x9c, 0xce, 0x87, 0xe9, - 0x9d, 0xcb, 0x87, 0xe9, 0x9d, 0xc8, 0x87, 0xe9, 0x9d, 0xcb, 0x87, 0xe9, - 0x9e, 0xc8, 0x87, 0xe9, 0x9e, 0xcb, 0x87, 0xe9, 0x9f, 0xc8, 0x87, 0xe9, - 0x9f, 0xcb, 0x87, 0xe9, 0x9f, 0xc8, 0x87, 0xe9, 0xa0, 0xcb, 0x87, 0xe9, - 0xa0, 0xc8, 0x87, 0xe9, 0xa1, 0xcb, 0x9e, 0xe9, 0xa1, 0xec, 0x9d, 0xe9, - 0xa1, 0xec, 0x9e, 0xe9, 0xa2, 0xec, 0x9d, 0xe9, 0xa2, 0xec, 0x9e, 0xe9, - 0xa3, 0xec, 0x9d, 0xe9, 0xa3, 0xec, 0x9e, 0xe9, 0xa3, 0xec, 0xa2, 0xe9, - 0xa4, 0xed, 0x9e, 0xe9, 0xa4, 0xec, 0xa2, 0xe9, 0xa5, 0xed, 0xa2, 0xe9, - 0xa5, 0xed, 0xa2, 0xe9, 0xa5, 0xed, 0xa2, 0xe9, 0xa6, 0xed, 0xa2, 0xe9, - 0xa6, 0xed, 0xa2, 0xe9, 0xa6, 0xed, 0xa2, 0xe9, 0xa7, 0xed, 0xa2, 0xe9, - 0xa7, 0xed, 0xa2, 0xe9, 0xa8, 0xed, 0xa2, 0xe9, 0xa8, 0xed, 0xa2, 0xe9, - 0xa8, 0xed, 0xa6, 0xe9, 0xa9, 0xee, 0xa6, 0xe9, 0xa9, 0xee, 0xa6, 0xe9, - 0xaa, 0xee, 0xa6, 0xe9, 0xaa, 0xee, 0xa6, 0xe9, 0xaa, 0xee, 0xa6, 0xe9, - 0xab, 0xee, 0xa6, 0xe9, 0xab, 0xee, 0xa6, 0xe9, 0xab, 0xee, 0xa6, 0xe9, - 0xac, 0xee, 0xa6, 0xe9, 0xac, 0xee, 0xa6, 0xe9, 0xac, 0xee, 0xab, 0xe9, - 0xad, 0xef, 0xaa, 0xe9, 0xad, 0xef, 0xab, 0xe9, 0xae, 0xef, 0xaa, 0xe9, - 0xae, 0xef, 0xab, 0xe9, 0xae, 0xef, 0xaa, 0xe9, 0xaf, 0xef, 0xab, 0xe9, - 0xaf, 0xef, 0xaa, 0xe9, 0xaf, 0xef, 0xab, 0xe9, 0xb0, 0xef, 0xaa, 0xe9, - 0xb0, 0xef, 0xab, 0xe9, 0xb0, 0xef, 0xaf, 0xe9, 0xb1, 0xf0, 0xae, 0xe9, - 0xb1, 0xf0, 0xaf, 0xe9, 0xb2, 0xf0, 0xae, 0xe9, 0xb2, 0xf0, 0xaf, 0xe9, - 0xb2, 0xf0, 0xae, 0xe9, 0xb3, 0xf0, 0xaf, 0xe9, 0xb3, 0xf0, 0xae, 0xe9, - 0xb3, 0xf0, 0xaf, 0xe9, 0xb4, 0xf0, 0xae, 0xe9, 0xb4, 0xf0, 0xaf, 0xe9, - 0xb4, 0xf0, 0xb3, 0xe9, 0xb5, 0xf1, 0xaf, 0xe9, 0xb5, 0xf0, 0xb3, 0xe9, - 0xb5, 0xf1, 0xb2, 0xe9, 0xb6, 0xf1, 0xb3, 0xe9, 0xb6, 0xf1, 0xb2, 0xe9, - 0xb6, 0xf1, 0xb3, 0xe9, 0xb7, 0xf1, 0xb2, 0xe9, 0xb7, 0xf1, 0xb3, 0xe9, - 0xb7, 0xf1, 0xcd, 0xe9, 0xb8, 0xd5, 0xcd, 0xe9, 0xb8, 0xd2, 0xcd, 0xe9, - 0xb8, 0xd5, 0xcd, 0xe9, 0xb9, 0xd2, 0xcd, 0xe9, 0xb9, 0xd5, 0xcd, 0xe9, - 0xb9, 0xd2, 0xcd, 0xe9, 0xba, 0xd5, 0xcd, 0xe9, 0xba, 0xd2, 0xcd, 0xe9, - 0xba, 0xd5, 0xcd, 0xe9, 0xbb, 0xd2, 0xcd, 0xe9, 0xbb, 0xd5, 0xcd, 0xe9, - 0xbb, 0xd2, 0xcd, 0xe9, 0xbc, 0xd5, 0xcd, 0xe9, 0xbc, 0xd2, 0xcd, 0xe9, - 0xbc, 0xd5, 0xcd, 0xe9, 0xbd, 0xd2, 0xcd, 0xe9, 0xbd, 0xd5, 0xcd, 0xe9, - 0xbd, 0xd2, 0xcd, 0xe9, 0xbe, 0xd5, 0xcd, 0xe9, 0xbe, 0xd2, 0xcd, 0xe9, - 0xbe, 0xd5, 0xcd, 0xe9, 0xbf, 0xd2, 0xcd, 0xe9, 0xbf, 0xd5, 0xcd, 0xe9, - 0xbf, 0xd2, 0xcd, 0xe9, 0xc0, 0xd5, 0xcd, 0xe9, 0xc0, 0xd2, 0xcd, 0xe9, - 0xc0, 0xd5, 0xcd, 0xe9, 0xc1, 0xd2, 0xcd, 0xe9, 0xc1, 0xd5, 0xcd, 0xe9, - 0xc1, 0xd2, 0xcd, 0xe9, 0xc1, 0xd5, 0xcd, 0xe9, 0xc2, 0xd2, 0xcd, 0xe9, - 0xc2, 0xd5, 0xcd, 0xe9, 0xc2, 0xd2, 0xce, 0xe9, 0xc3, 0xd0, 0xcd, 0xe9, - 0xc3, 0xd2, 0xce, 0xe9, 0xc3, 0xd0, 0xcd, 0xe9, 0xc4, 0xd2, 0xce, 0xe9, - 0xc4, 0xd0, 0xcd, 0xe9, 0xc4, 0xd2, 0xce, 0xe9, 0xc5, 0xd0, 0xcd, 0xe9, - 0xc5, 0xd2, 0xce, 0xe9, 0xc5, 0xd0, 0xcd, 0xe9, 0xc6, 0xd2, 0xce, 0xe9, - 0xc6, 0xd0, 0xcd, 0xe9, 0xc6, 0xd2, 0xce, 0xe9, 0xc6, 0xd0, 0xcd, 0xe9, - 0xc7, 0xd2, 0xce, 0xe9, 0xc7, 0xd0, 0xcd, 0xe9, 0xc7, 0xd2, 0xce, 0xe9, - 0xc8, 0xd0, 0xcd, 0xe9, 0xc8, 0xd2, 0xce, 0xe9, 0xc8, 0xd0, 0xcd, 0xe9, - 0xc9, 0xd2, 0xce, 0xe9, 0xc9, 0xd0, 0xcd, 0xe9, 0xc9, 0xd2, 0xce, 0xe9, - 0xc9, 0xd0, 0xcd, 0xe9, 0xca, 0xd2, 0xce, 0xe9, 0xca, 0xd0, 0xcd, 0xe9, - 0xca, 0xd2, 0xce, 0xe9, 0xcb, 0xd0, 0xcd, 0xe9, 0xcb, 0xd2, 0xce, 0xe9, - 0xcb, 0xd0, 0xce, 0xe9, 0xcc, 0xcf, 0xce, 0xe9, 0xcc, 0xd0, 0xce, 0xe9, - 0xcc, 0xcf, 0xce, 0xe9, 0xcc, 0xd0, 0xce, 0xe9, 0xcd, 0xcf, 0xce, 0xe9, - 0xcd, 0xd0, 0xce, 0xe9, 0xcd, 0xcf, 0xce, 0xe9, 0xce, 0xcf, 0xce, 0xe9, - 0xcd, 0xcf, 0xce, 0xe9, 0xce, 0xcf, 0xce, 0xe9, 0xcd, 0xcf, 0xcf, 0xe9, - 0xce, 0xcf, 0xcf, 0xe9, 0xcd, 0xcf, 0xcf, 0xe9, 0xce, 0xcf, 0xd0, 0xe9, - 0xcd, 0xcf, 0xd0, 0xe9, 0xce, 0xcf, 0xd0, 0xe7, 0xce, 0xcf, 0xd0, 0xe9, - 0xce, 0xcf, 0xd1, 0xe7, 0xce, 0xcf, 0xd1, 0xe9, 0xce, 0xcf, 0xd1, 0xe7, - 0xce, 0xcf, 0xd2, 0xe9, 0xce, 0xcf, 0xd2, 0xe7, 0xce, 0xcf, 0xd2, 0xe9, - 0xce, 0xcf, 0xd2, 0xe7, 0xce, 0xcf, 0xd3, 0xe9, 0xce, 0xcf, 0xd3, 0xe7, - 0xce, 0xcf, 0xd3, 0xe9, 0xce, 0xcf, 0xd4, 0xe7, 0xce, 0xcf, 0xd4, 0xe9, - 0xce, 0xcf, 0xd4, 0xe7, 0xce, 0xcf, 0xd4, 0xe9, 0xce, 0xcf, 0xd5, 0xe7, - 0xce, 0xcf, 0xd5, 0xe9, 0xce, 0xcf, 0xd5, 0xe7, 0xce, 0xcf, 0xd6, 0xe9, - 0xce, 0xcf, 0xd6, 0xe7, 0xce, 0xcf, 0xd6, 0xe9, 0xce, 0xcf, 0xd6, 0xe7, - 0xce, 0xcf, 0xd7, 0xe9, 0xce, 0xcf, 0xd7, 0xe7, 0xce, 0xcf, 0xd7, 0xe9, - 0xce, 0xcf, 0xd7, 0xe7, 0xce, 0xcf, 0xd8, 0xe9, 0xce, 0xcf, 0xd8, 0xe7, - 0xce, 0xcf, 0xd8, 0xe6, 0xce, 0xcf, 0xd9, 0xe7, 0xce, 0xcf, 0xd9, 0xe6, - 0xce, 0xcf, 0xd9, 0xe7, 0xce, 0xcf, 0xd9, 0xe6, 0xce, 0xcf, 0xda, 0xe7, - 0xce, 0xcf, 0xda, 0xe6, 0xce, 0xcf, 0xda, 0xe7, 0xce, 0xcf, 0xda, 0xeb, - 0xe6, 0xcf, 0xdb, 0xea, 0xe6, 0xcf, 0xdb, 0xeb, 0xe6, 0xcf, 0xdb, 0xea, - 0xe6, 0xcf, 0xdb, 0xeb, 0xe6, 0xcf, 0xdc, 0xea, 0xe6, 0xcf, 0xdc, 0xeb, - 0xe6, 0xcf, 0xdc, 0xea, 0xe6, 0xcf, 0xdd, 0xeb, 0xe6, 0xcf, 0xdd, 0xea, - 0xe6, 0xcf, 0xdd, 0xeb, 0xe6, 0xcf, 0xdd, 0xea, 0xe6, 0xcf, 0xde, 0xeb, - 0xe6, 0xcf, 0xde, 0xea, 0xe6, 0xcf, 0xde, 0xeb, 0xe6, 0xcf, 0xde, 0xea, - 0xe6, 0xcf, 0xdf, 0xeb, 0xe6, 0xcf, 0xdf, 0xea, 0xe6, 0xcf, 0xdf, 0xeb, - 0xe6, 0xcf, 0xdf, 0xea, 0xe6, 0xcf, 0xe0, 0xeb, 0xe6, 0xcf, 0xe0, 0xea, - 0xe6, 0xcf, 0xe0, 0xe9, 0xe6, 0xcf, 0xe1, 0xea, 0xe6, 0xcf, 0xe1, 0xe9, - 0xe6, 0xcf, 0xe1, 0xea, 0xe6, 0xcf, 0xe1, 0xe9, 0xe6, 0xcf, 0xe2, 0xea, - 0xe6, 0xcf, 0xe2, 0xe9, 0xe6, 0xcf, 0xe2, 0xea, 0xe6, 0xcf, 0xe2, 0xe9, - 0xe6, 0xcf, 0xe3, 0xea, 0xe6, 0xcf, 0xe3, 0xe9, 0xe6, 0xcf, 0xe3, 0xea, - 0xe6, 0xcf, 0xe3, 0xe9, 0xe6, 0xcf, 0xe4, 0xea, 0xe6, 0xcf, 0xe4, 0xe9, - 0xe6, 0xcf, 0xe4, 0xea, 0xe6, 0xcf, 0xe4, 0xe9, 0xe6, 0xcf, 0xe5, 0xe9, - 0xe7, 0xcf, 0xe5, 0xe9, 0xe6, 0xcf, 0xe5, 0xe9, 0xe7, 0xcf, 0xe5, 0xe9, - 0xe6, 0xcf, 0xe6, 0xe9, 0xe7, 0xcf, 0xe6, 0xe9, 0xe6, 0xcf, 0xe6, 0xe9, - 0xe7, 0xcf, 0xe6, 0xe9, 0xe6, 0xce, 0xe6, 0xe9, 0xe7, 0xcf, 0xe6, 0xe9, - 0xe7, 0xce, 0xe6, 0xe9, 0xe7, 0xcf, 0xe6, 0xe9, 0xe7, 0xce, 0xe6, 0xe9, - 0xe8, 0xcf, 0xe6, 0xe9, 0xe8, 0xce, 0xe6, 0xe9, 0xe8, 0xcf, 0xe6, 0xe9, - 0xe8, 0xce, 0xeb, 0xe9, 0xe9, 0xcf, 0xea, 0xe9, 0xe9, 0xd0, 0xeb, 0xe9, - 0xe9, 0xcf, 0xea, 0xe9, 0xe9, 0xd0, 0xeb, 0xe9, 0xea, 0xcf, 0xea, 0xe9, - 0xea, 0xd0, 0xeb, 0xe9, 0xea, 0xcf, 0xeb, 0xe9, 0xea, 0xcf, 0xeb, 0xe9, - 0xea, 0xcf, 0xeb, 0xe9, 0xea, 0xcf, 0xeb, 0xe9, 0xea, 0xcf, 0xeb, 0xe9, - 0xea, 0xcf, 0xec, 0xe9, 0xea, 0xcf, 0xec, 0xe9, 0xea, 0xcf, 0xec, 0xe9, - 0xea, 0xcf, 0xec, 0xe9, 0xea, 0xcf, 0xec, 0xe9, 0xea, 0xcf, 0xed, 0xeb, - 0xed, 0xcf, 0xed, 0xeb, 0xec, 0xcf, 0xed, 0xeb, 0xed, 0xcf, 0xed, 0xeb, - 0xec, 0xcf, 0xee, 0xeb, 0xed, 0xcf, 0xee, 0xeb, 0xec, 0xcf, 0xee, 0xeb, - 0xed, 0xcf, 0xee, 0xec, 0xee, 0xcf, 0xef, 0xec, 0xef, 0xcf, 0xef, 0xec, - 0xef, 0xcf, 0xef, 0xec, 0xef, 0xcf, 0xef, 0xec, 0xef, 0xcf, 0xf0, 0xec, - 0xf0, 0xcf, 0xf0, 0xec, 0xf0, 0xcf, 0xf0, 0xec, 0xf0, 0xcf, 0xf0, 0xec, - 0xf0, 0xcf, 0xf1, 0xec, 0xf0, 0xcf, 0xf1, 0xec, 0xf0, 0xcf, 0xf1, 0xec, - 0xf0, 0xcf, 0xf1, 0xec, 0xf0, 0xcf, 0xf2, 0xec, 0xf0, 0xcf, 0xf2, 0xec, - 0xf1, 0xcf, 0xf2, 0xec, 0xf0, 0xcf, 0xf2, 0xec, 0xf1, 0xcf, 0xf2, 0xec, - 0xf1, 0xcf, 0xf3, 0xec, 0xf1, 0xcf, 0xf3, 0xec, 0xf1, 0xcf, 0xf3, 0xec, - 0xf1, 0xcf, 0xf3, 0xec, 0xf1, 0xcf, 0xf4, 0xec, 0xf1, 0xcf, 0xf4, 0xec, - 0xf1, 0xcf, 0xf4, 0xec, 0xf1, 0xcf, 0xf4, 0xec, 0xf1, 0xcf, 0xf5, 0xec, - 0xf1, 0xcf, 0xf5, 0xec, 0xf1, 0xcf, 0xf5, 0xec, 0xf1, 0xcf, 0xf5, 0xec, - 0xf1, 0xcf, 0xf5, 0xec, 0xf1, 0xcf, 0xf6, 0xec, 0xf1, 0xcf, 0xf6, 0xec, - 0xf1, 0xcf, 0xf6, 0xec, 0xf1, 0xcf, 0xf6, 0xec, 0xf1, 0xcf, 0xf7, 0xec, - 0xf1, 0xcf, 0xf7, 0xec, 0xf1, 0xcf, 0xf7, 0xec, 0xf1, 0xcf, 0xf7, 0xec, - 0xf1, 0xcf, 0xf8, 0xec, 0xf1, 0xcf, 0xf8, 0xec, 0xf1, 0xcf, 0xf8, 0xec, - 0xf1, 0xcf, 0xf8, 0xec, 0xf1, 0xcf, 0xf8, 0xec, 0xf1, 0xcf, 0xf9, 0xec, - 0xf1, 0xcf, 0xf9, 0xec, 0xf1, 0xcf, 0xf9, 0xec, 0xf1, 0xcf, 0xf9, 0xec, - 0xf1, 0xcf, 0xfa, 0xec, 0xf1, 0xcf, 0xfa, 0xec, 0xf1, 0xcf, 0xfa, 0xec, - 0xf1, 0xcf, 0xfa, 0xec, 0xf1, 0xcf, 0xfa, 0xec, 0xf1, 0xcf, 0xfb, 0xec, - 0xf1, 0xcf, 0xfb, 0xec, 0xf1, 0xcf, 0xfb, 0xec, 0xf1, 0xcf, 0xfb, 0xec, - 0xf1, 0xcf, 0xfc, 0xec, 0xf1, 0xcf, 0xfc, 0xec, 0xf1, 0xcf, 0xfc, 0xec, - 0xf1, 0xcf, 0xfc, 0xec, 0xf1, 0xcf, 0xfc, 0xec, 0xf1, 0xcf, 0xfd, 0xec, - 0xf1, 0xcf, 0xfd, 0xec, 0xf1, 0xcf, 0xfd, 0xec, 0xf1, 0xcf, 0xfd, 0xec, - 0xf1, 0xcf, 0xfe, 0xec, 0xf1, 0xcf, 0xfe, 0xec, 0xf1, 0xcf, 0xfe, 0xec, - 0xf1, 0xcf, 0xfe, 0xec, 0xf1, 0xcf, 0xfe, 0xec, 0xf1, 0xcf, 0xff, 0xec, - 0xf1, 0xcf, 0xff, 0xec, 0xf1, 0xcf, 0x03, 0xec, 0x85, 0xd0, 0x0a, 0xec, - 0x85, 0xd0, 0x0f, 0xec, 0x85, 0xd0, 0x14, 0xec, 0x85, 0xd0, 0x17, 0xec, - 0x85, 0xd0, 0x1b, 0xec, 0x85, 0xd0, 0x1e, 0xec, 0x85, 0xd0, 0x20, 0xee, - 0x85, 0xd0, 0x23, 0xec, 0x85, 0xd0, 0x25, 0xee, 0x85, 0xd0, 0x27, 0xec, - 0x85, 0xd0, 0x29, 0xee, 0x85, 0xd0, 0x2b, 0xec, 0x85, 0xd0, 0x2d, 0xee, - 0x85, 0xd0, 0x2f, 0xec, 0x85, 0xd0, 0x31, 0xee, 0x85, 0xd0, 0x32, 0xec, - 0x85, 0xd0, 0x34, 0xee, 0x85, 0xd0, 0x35, 0xec, 0x85, 0xd0, 0x37, 0xee, - 0x85, 0xd0, 0x38, 0xec, 0x85, 0xd0, 0x3a, 0xee, 0x85, 0xd0, 0x3b, 0xec, - 0x85, 0xd0, 0x3c, 0xee, 0x85, 0xd0, 0x3e, 0xec, 0x85, 0xd0, 0x3f, 0xee, - 0x85, 0xd0, 0x40, 0xec, 0x85, 0xd0, 0x42, 0xee, 0x85, 0xd0, 0x43, 0xec, - 0x85, 0xd0, 0x44, 0xeb, 0x86, 0xd0, 0x45, 0xec, 0x85, 0xd0, 0x46, 0xeb, - 0x86, 0xd0, 0x47, 0xec, 0x85, 0xd0, 0x48, 0xeb, 0x86, 0xd0, 0x49, 0xec, - 0x85, 0xd0, 0x4a, 0xeb, 0x86, 0xd0, 0x4b, 0xec, 0x85, 0xd0, 0x4c, 0xeb, - 0x86, 0xd0, 0x4d, 0xec, 0x85, 0xd0, 0x4e, 0xeb, 0x86, 0xd0, 0x4f, 0xec, - 0x85, 0xd0, 0x50, 0xeb, 0x86, 0xd0, 0x51, 0xec, 0x85, 0xd0, 0x52, 0xeb, - 0x86, 0xd0, 0x53, 0xec, 0x85, 0xd0, 0x54, 0xeb, 0x86, 0xd0, 0x55, 0xec, - 0x85, 0xd0, 0x56, 0xeb, 0x86, 0xd0, 0x57, 0xec, 0x85, 0xd0, 0x58, 0xeb, - 0x86, 0xd0, 0x58, 0xec, 0x85, 0xd0, 0x59, 0xeb, 0x86, 0xd0, 0x5a, 0xec, - 0x85, 0xd0, 0x5b, 0xeb, 0x86, 0xd0, 0x5c, 0xec, 0x85, 0xd0, 0x5d, 0xeb, - 0x86, 0xd0, 0x5d, 0xec, 0x85, 0xd0, 0x5e, 0xeb, 0x86, 0xd0, 0x5f, 0xec, - 0x85, 0xd0, 0x60, 0xeb, 0x86, 0xd0, 0x60, 0xec, 0x85, 0xd0, 0x61, 0xeb, - 0x86, 0xd0, 0x62, 0xec, 0x85, 0xd0, 0x63, 0xeb, 0x86, 0xd0, 0x63, 0xec, - 0x85, 0xd0, 0x64, 0xeb, 0x86, 0xd0, 0x65, 0xec, 0x85, 0xd0, 0x66, 0xeb, - 0x86, 0xd0, 0x66, 0xec, 0x85, 0xd0, 0x67, 0xeb, 0x86, 0xd0, 0x68, 0xec, - 0x85, 0xd0, 0x68, 0xeb, 0x86, 0xd0, 0x69, 0xec, 0x85, 0xd0, 0x6a, 0xeb, - 0x86, 0xd0, 0x6a, 0xec, 0x85, 0xd0, 0x6b, 0xeb, 0x86, 0xd0, 0x6c, 0xec, - 0x85, 0xd0, 0x6c, 0xeb, 0x86, 0xd0, 0x6d, 0xec, 0x85, 0xd0, 0x6e, 0xeb, - 0x86, 0xd0, 0x6e, 0xec, 0x85, 0xd0, 0x6f, 0xeb, 0x86, 0xd0, 0x70, 0xec, - 0x85, 0xd0, 0x70, 0xeb, 0x86, 0xd0, 0x71, 0xec, 0x85, 0xd0, 0x72, 0xeb, - 0x86, 0xd0, 0x72, 0xe9, 0x86, 0xd0, 0x73, 0xeb, 0x86, 0xd0, 0x73, 0xe9, - 0x86, 0xd0, 0x74, 0xeb, 0x86, 0xd0, 0x75, 0xe9, 0x86, 0xd0, 0x75, 0xeb, - 0x86, 0xd0, 0x76, 0xe9, 0x86, 0xd0, 0x76, 0xeb, 0x86, 0xd0, 0x77, 0xe9, - 0x86, 0xd0, 0x78, 0xeb, 0x86, 0xd0, 0x78, 0xe9, 0x86, 0xd0, 0x79, 0xeb, - 0x86, 0xd0, 0x79, 0xe9, 0x86, 0xd0, 0x7a, 0xeb, 0x86, 0xd0, 0x7a, 0xe9, - 0x86, 0xd0, 0x7b, 0xeb, 0x86, 0xd0, 0x7c, 0xe9, 0x86, 0xd0, 0x7c, 0xeb, - 0x86, 0xd0, 0x7d, 0xe9, 0x86, 0xd0, 0x7d, 0xeb, 0x86, 0xd0, 0x7e, 0xe9, - 0x86, 0xd0, 0x7e, 0xeb, 0x86, 0xd0, 0x7f, 0xe9, 0x86, 0xd0, 0x7f, 0xeb, - 0x86, 0xd0, 0x80, 0xe9, 0x86, 0xd0, 0x81, 0xeb, 0x86, 0xd0, 0x81, 0xe9, - 0x86, 0xd0, 0x82, 0xeb, 0x86, 0xd0, 0x82, 0xe9, 0x86, 0xd0, 0x83, 0xe9, - 0x87, 0xd0, 0x83, 0xe9, 0x86, 0xd0, 0x84, 0xe9, 0x87, 0xd0, 0x84, 0xe9, - 0x86, 0xd0, 0x85, 0xe9, 0x87, 0xd0, 0x85, 0xe9, 0x86, 0xd0, 0x86, 0xe9, - 0x87, 0xd0, 0x86, 0xe9, 0x86, 0xcf, 0x86, 0xe9, 0x87, 0xd0, 0x86, 0xe9, - 0x87, 0xcf, 0x86, 0xe9, 0x88, 0xd0, 0x86, 0xe9, 0x88, 0xcf, 0x86, 0xe9, - 0x89, 0xd0, 0x86, 0xe9, 0x89, 0xcf, 0x86, 0xe9, 0x8a, 0xd0, 0x86, 0xe9, - 0x8a, 0xcf, 0x86, 0xe9, 0x8b, 0xd0, 0x86, 0xe9, 0x8b, 0xcf, 0x86, 0xe9, - 0x8c, 0xd0, 0x86, 0xe9, 0x8c, 0xcf, 0x86, 0xe9, 0x8d, 0xd0, 0x86, 0xe9, - 0x8d, 0xcf, 0x86, 0xe9, 0x8e, 0xd0, 0x86, 0xe9, 0x8e, 0xcf, 0x87, 0xe9, - 0x8e, 0xcc, 0x86, 0xe9, 0x8f, 0xcf, 0x87, 0xe9, 0x8f, 0xcc, 0x86, 0xe9, - 0x90, 0xcf, 0x87, 0xe9, 0x90, 0xcc, 0x86, 0xe9, 0x91, 0xcf, 0x87, 0xe9, - 0x91, 0xcc, 0x86, 0xe9, 0x92, 0xcf, 0x87, 0xe9, 0x92, 0xcc, 0x86, 0xe9, - 0x93, 0xcf, 0x87, 0xe9, 0x93, 0xcc, 0x86, 0xe9, 0x94, 0xcf, 0x87, 0xe9, - 0x94, 0xcc, 0x86, 0xe9, 0x94, 0xcf, 0x87, 0xe9, 0x95, 0xcc, 0x86, 0xe9, - 0x95, 0xcf, 0x87, 0xe9, 0x96, 0xcc, 0x86, 0xe9, 0x96, 0xcf, 0x87, 0xe9, - 0x97, 0xcc, 0x86, 0xe9, 0x97, 0xcf, 0x87, 0xe9, 0x98, 0xcc, 0x86, 0xe9, - 0x98, 0xcf, 0x87, 0xe9, 0x98, 0xcc, 0x86, 0xe9, 0x99, 0xcf, 0x87, 0xe9, - 0x99, 0xcc, 0x86, 0xe9, 0x9a, 0xcf, 0x87, 0xe9, 0x9a, 0xcc, 0x86, 0xe9, - 0x9a, 0xcf, 0x87, 0xe9, 0x9b, 0xcc, 0x86, 0xe9, 0x9b, 0xcf, 0x87, 0xe9, - 0x9c, 0xcc, 0x86, 0xe9, 0x9c, 0xcf, 0x87, 0xe9, 0x9d, 0xcc, 0x86, 0xe9, - 0x9d, 0xcf, 0x87, 0xe9, 0x9d, 0xcc, 0x86, 0xe9, 0x9e, 0xcf, 0x87, 0xe9, - 0x9e, 0xcc, 0x86, 0xe9, 0x9f, 0xcf, 0x87, 0xe9, 0x9f, 0xcc, 0x86, 0xe9, - 0x9f, 0xcf, 0x87, 0xe9, 0xa0, 0xcc, 0x9b, 0xe9, 0xa0, 0xec, 0x9b, 0xe9, - 0xa1, 0xec, 0x9b, 0xe9, 0xa1, 0xec, 0xa0, 0xe9, 0xa1, 0xed, 0x9b, 0xe9, - 0xa2, 0xec, 0xa0, 0xe9, 0xa2, 0xed, 0x9f, 0xe9, 0xa3, 0xed, 0xa0, 0xe9, - 0xa3, 0xed, 0x9f, 0xe9, 0xa3, 0xed, 0xa0, 0xe9, 0xa4, 0xed, 0x9f, 0xe9, - 0xa4, 0xed, 0xa0, 0xe9, 0xa5, 0xed, 0x9f, 0xe9, 0xa5, 0xed, 0xa0, 0xe9, - 0xa5, 0xed, 0xa4, 0xe9, 0xa6, 0xee, 0xa0, 0xe9, 0xa6, 0xed, 0xa4, 0xe9, - 0xa6, 0xee, 0xa4, 0xe9, 0xa7, 0xee, 0xa4, 0xe9, 0xa7, 0xee, 0xa4, 0xe9, - 0xa8, 0xee, 0xa4, 0xe9, 0xa8, 0xee, 0xa4, 0xe9, 0xa8, 0xee, 0xa4, 0xe9, - 0xa9, 0xee, 0xa4, 0xe9, 0xa9, 0xee, 0xa4, 0xe9, 0xaa, 0xee, 0xa4, 0xe9, - 0xaa, 0xee, 0xa4, 0xe9, 0xaa, 0xee, 0xa8, 0xe9, 0xab, 0xef, 0xa8, 0xe9, - 0xab, 0xef, 0xa8, 0xe9, 0xab, 0xef, 0xa8, 0xe9, 0xac, 0xef, 0xa8, 0xe9, - 0xac, 0xef, 0xa8, 0xe9, 0xac, 0xef, 0xa8, 0xe9, 0xad, 0xef, 0xa8, 0xe9, - 0xad, 0xef, 0xa8, 0xe9, 0xae, 0xef, 0xa8, 0xe9, 0xae, 0xef, 0xa8, 0xe9, - 0xae, 0xef, 0xac, 0xe9, 0xaf, 0xf0, 0xac, 0xe9, 0xaf, 0xf0, 0xac, 0xe9, - 0xaf, 0xf0, 0xac, 0xe9, 0xb0, 0xf0, 0xac, 0xe9, 0xb0, 0xf0, 0xac, 0xe9, - 0xb0, 0xf0, 0xac, 0xe9, 0xb1, 0xf0, 0xac, 0xe9, 0xb1, 0xf0, 0xac, 0xe9, - 0xb2, 0xf0, 0xac, 0xe9, 0xb2, 0xf0, 0xac, 0xe9, 0xb2, 0xf0, 0xb0, 0xe9, - 0xb3, 0xf1, 0xb0, 0xe9, 0xb3, 0xf1, 0xb0, 0xe9, 0xb3, 0xf1, 0xb0, 0xe9, - 0xb4, 0xf1, 0xb0, 0xe9, 0xb4, 0xf1, 0xb0, 0xe9, 0xb4, 0xf1, 0xb0, 0xe9, - 0xb5, 0xf1, 0xb0, 0xe9, 0xb5, 0xf1, 0xb0, 0xe9, 0xb5, 0xf1, 0xb0, 0xe9, - 0xb6, 0xf1, 0xb0, 0xe9, 0xb6, 0xf1, 0xb4, 0xe9, 0xb6, 0xf2, 0xb0, 0xe9, - 0xb7, 0xf1, 0xb4, 0xe9, 0xb7, 0xf2, 0xb4, 0xe9, 0xb7, 0xf2, 0xb4, 0xe9, - 0xb8, 0xf2, 0xcd, 0xe9, 0xb8, 0xd8, 0xcd, 0xe9, 0xb8, 0xd6, 0xcd, 0xe9, - 0xb9, 0xd8, 0xcd, 0xe9, 0xb9, 0xd6, 0xcd, 0xe9, 0xb9, 0xd8, 0xcd, 0xe9, - 0xba, 0xd6, 0xcd, 0xe9, 0xba, 0xd8, 0xcd, 0xe9, 0xba, 0xd6, 0xcd, 0xe9, - 0xbb, 0xd8, 0xcd, 0xe9, 0xbb, 0xd6, 0xcd, 0xe9, 0xbb, 0xd8, 0xcd, 0xe9, - 0xbc, 0xd6, 0xcd, 0xe9, 0xbc, 0xd3, 0xcd, 0xe9, 0xbc, 0xd6, 0xcd, 0xe9, - 0xbd, 0xd3, 0xcd, 0xe9, 0xbd, 0xd6, 0xcd, 0xe9, 0xbd, 0xd3, 0xcd, 0xe9, - 0xbe, 0xd6, 0xcd, 0xe9, 0xbe, 0xd3, 0xcd, 0xe9, 0xbe, 0xd6, 0xcd, 0xe9, - 0xbf, 0xd3, 0xcd, 0xe9, 0xbf, 0xd6, 0xcd, 0xe9, 0xbf, 0xd3, 0xcd, 0xe9, - 0xc0, 0xd6, 0xcd, 0xe9, 0xc0, 0xd3, 0xcd, 0xe9, 0xc0, 0xd6, 0xcd, 0xe9, - 0xc1, 0xd3, 0xcd, 0xe9, 0xc1, 0xd6, 0xcd, 0xe9, 0xc1, 0xd3, 0xcd, 0xe9, - 0xc1, 0xd6, 0xcd, 0xe9, 0xc2, 0xd3, 0xcd, 0xe9, 0xc2, 0xd6, 0xcd, 0xe9, - 0xc2, 0xd3, 0xce, 0xe9, 0xc3, 0xd0, 0xcd, 0xe9, 0xc3, 0xd3, 0xce, 0xe9, - 0xc3, 0xd0, 0xcd, 0xe9, 0xc4, 0xd3, 0xce, 0xe9, 0xc4, 0xd0, 0xcd, 0xe9, - 0xc4, 0xd3, 0xce, 0xe9, 0xc5, 0xd0, 0xcd, 0xe9, 0xc5, 0xd3, 0xce, 0xe9, - 0xc5, 0xd0, 0xcd, 0xe9, 0xc6, 0xd3, 0xce, 0xe9, 0xc6, 0xd0, 0xcd, 0xe9, - 0xc6, 0xd3, 0xce, 0xe9, 0xc6, 0xd0, 0xcd, 0xe9, 0xc7, 0xd3, 0xce, 0xe9, - 0xc7, 0xd0, 0xcd, 0xe9, 0xc7, 0xd3, 0xce, 0xe9, 0xc8, 0xd0, 0xcd, 0xe9, - 0xc8, 0xd3, 0xce, 0xe9, 0xc8, 0xd0, 0xcd, 0xe9, 0xc9, 0xd3, 0xce, 0xe9, - 0xc9, 0xd0, 0xcd, 0xe9, 0xc9, 0xd3, 0xce, 0xe9, 0xc9, 0xd0, 0xcd, 0xe9, - 0xca, 0xd3, 0xce, 0xe9, 0xca, 0xd0, 0xcd, 0xe9, 0xca, 0xd3, 0xce, 0xe9, - 0xcb, 0xd0, 0xcd, 0xe9, 0xcb, 0xd3, 0xce, 0xe9, 0xcb, 0xd0, 0xce, 0xe9, - 0xcc, 0xd0, 0xce, 0xe9, 0xcc, 0xd0, 0xce, 0xe9, 0xcc, 0xd0, 0xce, 0xe9, - 0xcc, 0xd0, 0xce, 0xe9, 0xcd, 0xd0, 0xce, 0xe9, 0xcd, 0xd0, 0xce, 0xe9, - 0xcd, 0xd0, 0xce, 0xe9, 0xce, 0xd0, 0xce, 0xe9, 0xcd, 0xd0, 0xce, 0xe9, - 0xce, 0xd0, 0xce, 0xe9, 0xcd, 0xd0, 0xcf, 0xe9, 0xce, 0xd0, 0xcf, 0xe9, - 0xcd, 0xd0, 0xcf, 0xe9, 0xce, 0xd0, 0xd0, 0xe9, 0xcd, 0xd0, 0xd0, 0xe9, - 0xce, 0xd0, 0xd0, 0xe9, 0xcd, 0xd0, 0xd0, 0xe9, 0xce, 0xd0, 0xd1, 0xe9, - 0xcd, 0xd0, 0xd1, 0xe9, 0xce, 0xd0, 0xd1, 0xe9, 0xcd, 0xd0, 0xd2, 0xe9, - 0xce, 0xd0, 0xd2, 0xe9, 0xcd, 0xd0, 0xd2, 0xe9, 0xce, 0xd0, 0xd2, 0xe7, - 0xce, 0xd0, 0xd3, 0xe9, 0xce, 0xd0, 0xd3, 0xe7, 0xce, 0xd0, 0xd3, 0xe9, - 0xce, 0xd0, 0xd4, 0xe7, 0xce, 0xd0, 0xd4, 0xe9, 0xce, 0xd0, 0xd4, 0xe7, - 0xce, 0xd0, 0xd4, 0xe9, 0xce, 0xd0, 0xd5, 0xe7, 0xce, 0xd0, 0xd5, 0xe9, - 0xce, 0xd0, 0xd5, 0xe7, 0xce, 0xd0, 0xd6, 0xe9, 0xce, 0xd0, 0xd6, 0xe7, - 0xce, 0xd0, 0xd6, 0xe9, 0xce, 0xd0, 0xd6, 0xe7, 0xce, 0xd0, 0xd7, 0xe9, - 0xce, 0xd0, 0xd7, 0xe7, 0xce, 0xd0, 0xd7, 0xe9, 0xce, 0xd0, 0xd7, 0xe7, - 0xce, 0xd0, 0xd8, 0xe9, 0xce, 0xd0, 0xd8, 0xe7, 0xce, 0xd0, 0xd8, 0xe6, - 0xce, 0xd0, 0xd9, 0xe7, 0xce, 0xd0, 0xd9, 0xe6, 0xce, 0xd0, 0xd9, 0xe7, - 0xce, 0xd0, 0xd9, 0xe6, 0xce, 0xd0, 0xda, 0xe7, 0xce, 0xd0, 0xda, 0xe6, - 0xce, 0xd0, 0xda, 0xe7, 0xce, 0xd0, 0xda, 0xec, 0xe6, 0xd0, 0xdb, 0xea, - 0xe6, 0xd0, 0xdb, 0xec, 0xe6, 0xd0, 0xdb, 0xea, 0xe6, 0xd0, 0xdb, 0xec, - 0xe6, 0xd0, 0xdc, 0xea, 0xe6, 0xd0, 0xdc, 0xec, 0xe6, 0xd0, 0xdc, 0xea, - 0xe6, 0xd0, 0xdd, 0xec, 0xe6, 0xd0, 0xdd, 0xea, 0xe6, 0xd0, 0xdd, 0xec, - 0xe6, 0xd0, 0xdd, 0xea, 0xe6, 0xd0, 0xde, 0xec, 0xe6, 0xd0, 0xde, 0xea, - 0xe6, 0xd0, 0xde, 0xec, 0xe6, 0xd0, 0xde, 0xea, 0xe6, 0xd0, 0xdf, 0xec, - 0xe6, 0xd0, 0xdf, 0xea, 0xe6, 0xd0, 0xdf, 0xec, 0xe6, 0xd0, 0xdf, 0xea, - 0xe6, 0xd0, 0xe0, 0xec, 0xe6, 0xd0, 0xe0, 0xea, 0xe6, 0xd0, 0xe0, 0xe9, - 0xe6, 0xd0, 0xe1, 0xea, 0xe6, 0xd0, 0xe1, 0xe9, 0xe6, 0xd0, 0xe1, 0xea, - 0xe6, 0xd0, 0xe1, 0xe9, 0xe6, 0xd0, 0xe2, 0xea, 0xe6, 0xd0, 0xe2, 0xe9, - 0xe6, 0xd0, 0xe2, 0xea, 0xe6, 0xd0, 0xe2, 0xe9, 0xe6, 0xd0, 0xe3, 0xea, - 0xe6, 0xd0, 0xe3, 0xe9, 0xe6, 0xd0, 0xe3, 0xea, 0xe6, 0xd0, 0xe3, 0xe9, - 0xe6, 0xd0, 0xe4, 0xea, 0xe6, 0xd0, 0xe4, 0xe9, 0xe6, 0xd0, 0xe4, 0xea, - 0xe6, 0xd0, 0xe4, 0xe9, 0xe6, 0xd0, 0xe5, 0xea, 0xe6, 0xd0, 0xe5, 0xe9, - 0xe6, 0xd0, 0xe5, 0xea, 0xe6, 0xd0, 0xe5, 0xe9, 0xe6, 0xd0, 0xe6, 0xe9, - 0xe7, 0xd0, 0xe6, 0xe9, 0xe6, 0xd0, 0xe6, 0xe9, 0xe7, 0xd0, 0xe6, 0xe9, - 0xe6, 0xd0, 0xe6, 0xe9, 0xe7, 0xd0, 0xe6, 0xe9, 0xe7, 0xd0, 0xe6, 0xe9, - 0xe7, 0xd0, 0xe6, 0xe9, 0xe7, 0xce, 0xe6, 0xe9, 0xe8, 0xd0, 0xe6, 0xe9, - 0xe8, 0xce, 0xe6, 0xe9, 0xe8, 0xd0, 0xea, 0xe9, 0xe8, 0xd0, 0xeb, 0xe9, - 0xe9, 0xd0, 0xea, 0xe9, 0xe9, 0xd0, 0xeb, 0xe9, 0xe9, 0xd0, 0xea, 0xe9, - 0xe9, 0xd0, 0xeb, 0xe9, 0xea, 0xd0, 0xea, 0xe9, 0xea, 0xd0, 0xeb, 0xe9, - 0xea, 0xd0, 0xea, 0xe9, 0xea, 0xd0, 0xeb, 0xe9, 0xea, 0xd0, 0xeb, 0xe9, - 0xea, 0xd0, 0xeb, 0xe9, 0xea, 0xd0, 0xeb, 0xe9, 0xea, 0xd0, 0xec, 0xe9, - 0xea, 0xd0, 0xec, 0xe9, 0xea, 0xd0, 0xec, 0xe9, 0xea, 0xd0, 0xec, 0xe9, - 0xea, 0xd0, 0xec, 0xe9, 0xea, 0xd0, 0xed, 0xec, 0xed, 0xd0, 0xed, 0xec, - 0xed, 0xd0, 0xed, 0xec, 0xed, 0xd0, 0xed, 0xec, 0xed, 0xd0, 0xee, 0xec, - 0xee, 0xd0, 0xee, 0xec, 0xee, 0xd0, 0xee, 0xec, 0xee, 0xd0, 0xee, 0xec, - 0xee, 0xd0, 0xef, 0xec, 0xee, 0xd0, 0xef, 0xec, 0xee, 0xd0, 0xef, 0xec, - 0xee, 0xd0, 0xef, 0xec, 0xee, 0xd0, 0xf0, 0xec, 0xee, 0xd0, 0xf0, 0xec, - 0xee, 0xd0, 0xf0, 0xec, 0xf0, 0xd0, 0xf0, 0xec, 0xf0, 0xd0, 0xf1, 0xec, - 0xf1, 0xd0, 0xf1, 0xec, 0xf1, 0xd0, 0xf1, 0xec, 0xf1, 0xd0, 0xf1, 0xec, - 0xf1, 0xd0, 0xf2, 0xec, 0xf1, 0xd0, 0xf2, 0xec, 0xf1, 0xd0, 0xf2, 0xec, - 0xf1, 0xd0, 0xf2, 0xec, 0xf1, 0xd0, 0xf2, 0xec, 0xf1, 0xd0, 0xf3, 0xec, - 0xf1, 0xd0, 0xf3, 0xec, 0xf1, 0xd0, 0xf3, 0xec, 0xf1, 0xd0, 0xf3, 0xec, - 0xf1, 0xd0, 0xf4, 0xec, 0xf1, 0xd0, 0xf4, 0xec, 0xf1, 0xd0, 0xf4, 0xec, - 0xf1, 0xd0, 0xf4, 0xec, 0xf1, 0xd0, 0xf5, 0xec, 0xf1, 0xd0, 0xf5, 0xec, - 0xf1, 0xd0, 0xf5, 0xec, 0xf1, 0xd0, 0xf5, 0xec, 0xf1, 0xd0, 0xf5, 0xec, - 0xf1, 0xd0, 0xf6, 0xec, 0xf1, 0xd0, 0xf6, 0xec, 0xf1, 0xd0, 0xf6, 0xec, - 0xf1, 0xd0, 0xf6, 0xec, 0xf1, 0xd0, 0xf7, 0xec, 0xf1, 0xd0, 0xf7, 0xec, - 0xf1, 0xd0, 0xf7, 0xec, 0xf1, 0xd0, 0xf7, 0xec, 0xf1, 0xd0, 0xf8, 0xec, - 0xf1, 0xd0, 0xf8, 0xec, 0xf1, 0xd0, 0xf8, 0xec, 0xf1, 0xd0, 0xf8, 0xec, - 0xf1, 0xd0, 0xf8, 0xec, 0xf1, 0xd0, 0xf9, 0xec, 0xf1, 0xd0, 0xf9, 0xec, - 0xf1, 0xd0, 0xf9, 0xec, 0xf1, 0xd0, 0xf9, 0xec, 0xf1, 0xd0, 0xfa, 0xec, - 0xf1, 0xd0, 0xfa, 0xec, 0xf1, 0xd0, 0xfa, 0xec, 0xf1, 0xd0, 0xfa, 0xec, - 0xf1, 0xd0, 0xfa, 0xec, 0xf1, 0xd0, 0xfb, 0xec, 0xf1, 0xd0, 0xfb, 0xec, - 0xf1, 0xd0, 0xfb, 0xec, 0xf1, 0xd0, 0xfb, 0xec, 0xf1, 0xd0, 0xfc, 0xec, - 0xf1, 0xd0, 0xfc, 0xec, 0xf1, 0xd0, 0xfc, 0xec, 0xf1, 0xd0, 0xfc, 0xec, - 0xf1, 0xd0, 0xfc, 0xec, 0xf1, 0xd0, 0xfd, 0xec, 0xf1, 0xd0, 0xfd, 0xec, - 0xf1, 0xd0, 0xfd, 0xec, 0xf1, 0xd0, 0xfd, 0xec, 0xf1, 0xd0, 0xfe, 0xec, - 0xf1, 0xd0, 0xfe, 0xec, 0xf1, 0xd0, 0xfe, 0xec, 0xf1, 0xd0, 0xfe, 0xec, - 0xf1, 0xd0, 0xfe, 0xec, 0xf1, 0xd0, 0xff, 0xec, 0xf1, 0xd0, 0xff, 0xec, - 0xf1, 0xd0, 0x03, 0xef, 0x84, 0xd0, 0x0a, 0xee, 0x85, 0xd0, 0x0f, 0xef, - 0x84, 0xd0, 0x14, 0xee, 0x85, 0xd0, 0x17, 0xef, 0x84, 0xd0, 0x1b, 0xee, - 0x85, 0xd0, 0x1e, 0xef, 0x84, 0xd0, 0x20, 0xee, 0x85, 0xd0, 0x23, 0xef, - 0x84, 0xd0, 0x25, 0xee, 0x85, 0xd0, 0x27, 0xef, 0x84, 0xd0, 0x29, 0xee, - 0x85, 0xd0, 0x2b, 0xec, 0x85, 0xd0, 0x2d, 0xee, 0x85, 0xd0, 0x2f, 0xec, - 0x85, 0xd0, 0x31, 0xee, 0x85, 0xd0, 0x32, 0xec, 0x85, 0xd0, 0x34, 0xee, - 0x85, 0xd0, 0x35, 0xec, 0x85, 0xd0, 0x37, 0xee, 0x85, 0xd0, 0x38, 0xec, - 0x85, 0xd0, 0x3a, 0xee, 0x85, 0xd0, 0x3b, 0xec, 0x85, 0xd0, 0x3c, 0xee, - 0x85, 0xd0, 0x3e, 0xec, 0x85, 0xd0, 0x3f, 0xee, 0x85, 0xd0, 0x40, 0xec, - 0x85, 0xd0, 0x42, 0xee, 0x85, 0xd0, 0x43, 0xec, 0x85, 0xd0, 0x44, 0xee, - 0x85, 0xd0, 0x45, 0xec, 0x85, 0xd0, 0x46, 0xee, 0x85, 0xd0, 0x47, 0xec, - 0x85, 0xd0, 0x48, 0xee, 0x85, 0xd0, 0x49, 0xec, 0x85, 0xd0, 0x4a, 0xee, - 0x85, 0xd0, 0x4b, 0xec, 0x85, 0xd0, 0x4c, 0xee, 0x85, 0xd0, 0x4d, 0xec, - 0x85, 0xd0, 0x4e, 0xee, 0x85, 0xd0, 0x4f, 0xec, 0x85, 0xd0, 0x50, 0xee, - 0x85, 0xd0, 0x51, 0xec, 0x85, 0xd0, 0x52, 0xee, 0x85, 0xd0, 0x53, 0xec, - 0x85, 0xd0, 0x54, 0xee, 0x85, 0xd0, 0x55, 0xec, 0x85, 0xd0, 0x56, 0xee, - 0x85, 0xd0, 0x57, 0xec, 0x85, 0xd0, 0x58, 0xeb, 0x86, 0xd0, 0x58, 0xec, - 0x85, 0xd0, 0x59, 0xeb, 0x86, 0xd0, 0x5a, 0xec, 0x85, 0xd0, 0x5b, 0xeb, - 0x86, 0xd0, 0x5c, 0xec, 0x85, 0xd0, 0x5d, 0xeb, 0x86, 0xd0, 0x5d, 0xec, - 0x85, 0xd0, 0x5e, 0xeb, 0x86, 0xd0, 0x5f, 0xec, 0x85, 0xd0, 0x60, 0xeb, - 0x86, 0xd0, 0x60, 0xec, 0x85, 0xd0, 0x61, 0xeb, 0x86, 0xd0, 0x62, 0xec, - 0x85, 0xd0, 0x63, 0xeb, 0x86, 0xd0, 0x63, 0xec, 0x85, 0xd0, 0x64, 0xeb, - 0x86, 0xd0, 0x65, 0xec, 0x85, 0xd0, 0x66, 0xeb, 0x86, 0xd0, 0x66, 0xec, - 0x85, 0xd0, 0x67, 0xeb, 0x86, 0xd0, 0x68, 0xec, 0x85, 0xd0, 0x68, 0xeb, - 0x86, 0xd0, 0x69, 0xec, 0x85, 0xd0, 0x6a, 0xeb, 0x86, 0xd0, 0x6a, 0xec, - 0x85, 0xd0, 0x6b, 0xeb, 0x86, 0xd0, 0x6c, 0xec, 0x85, 0xd0, 0x6c, 0xeb, - 0x86, 0xd0, 0x6d, 0xec, 0x85, 0xd0, 0x6e, 0xeb, 0x86, 0xd0, 0x6e, 0xec, - 0x85, 0xd0, 0x6f, 0xeb, 0x86, 0xd0, 0x70, 0xec, 0x85, 0xd0, 0x70, 0xeb, - 0x86, 0xd0, 0x71, 0xec, 0x85, 0xd0, 0x72, 0xeb, 0x86, 0xd0, 0x72, 0xe9, - 0x86, 0xd0, 0x73, 0xeb, 0x86, 0xd0, 0x73, 0xe9, 0x86, 0xd0, 0x74, 0xeb, - 0x86, 0xd0, 0x75, 0xe9, 0x86, 0xd0, 0x75, 0xeb, 0x86, 0xd0, 0x76, 0xe9, - 0x86, 0xd0, 0x76, 0xeb, 0x86, 0xd0, 0x77, 0xe9, 0x86, 0xd0, 0x78, 0xeb, - 0x86, 0xd0, 0x78, 0xe9, 0x86, 0xd0, 0x79, 0xeb, 0x86, 0xd0, 0x79, 0xe9, - 0x86, 0xd0, 0x7a, 0xeb, 0x86, 0xd0, 0x7a, 0xe9, 0x86, 0xd0, 0x7b, 0xeb, - 0x86, 0xd0, 0x7c, 0xe9, 0x86, 0xd0, 0x7c, 0xeb, 0x86, 0xd0, 0x7d, 0xe9, - 0x86, 0xd0, 0x7d, 0xeb, 0x86, 0xd0, 0x7e, 0xe9, 0x86, 0xd0, 0x7e, 0xeb, - 0x86, 0xd0, 0x7f, 0xe9, 0x86, 0xd0, 0x7f, 0xeb, 0x86, 0xd0, 0x80, 0xe9, - 0x86, 0xd0, 0x81, 0xeb, 0x86, 0xd0, 0x81, 0xe9, 0x86, 0xd0, 0x82, 0xeb, - 0x86, 0xd0, 0x82, 0xe9, 0x86, 0xd0, 0x83, 0xe9, 0x87, 0xd0, 0x83, 0xe9, - 0x86, 0xd0, 0x84, 0xe9, 0x87, 0xd0, 0x84, 0xe9, 0x86, 0xd0, 0x85, 0xe9, - 0x87, 0xd0, 0x85, 0xe9, 0x86, 0xd0, 0x86, 0xe9, 0x87, 0xd0, 0x85, 0xe9, - 0x86, 0xd0, 0x86, 0xe9, 0x87, 0xd0, 0x85, 0xe9, 0x87, 0xd0, 0x86, 0xe9, - 0x88, 0xd0, 0x86, 0xe9, 0x88, 0xce, 0x86, 0xe9, 0x89, 0xd0, 0x86, 0xe9, - 0x89, 0xce, 0x86, 0xe9, 0x8a, 0xd0, 0x86, 0xe9, 0x8a, 0xce, 0x86, 0xe9, - 0x8b, 0xd0, 0x86, 0xe9, 0x8b, 0xce, 0x86, 0xe9, 0x8c, 0xd0, 0x86, 0xe9, - 0x8c, 0xce, 0x86, 0xe9, 0x8d, 0xd0, 0x86, 0xe9, 0x8d, 0xce, 0x86, 0xe9, - 0x8e, 0xd0, 0x86, 0xe9, 0x8e, 0xce, 0x86, 0xe9, 0x8e, 0xd0, 0x86, 0xe9, - 0x8f, 0xce, 0x86, 0xe9, 0x8f, 0xd0, 0x86, 0xe9, 0x90, 0xce, 0x86, 0xe9, - 0x90, 0xd0, 0x86, 0xe9, 0x91, 0xce, 0x86, 0xe9, 0x91, 0xd0, 0x86, 0xe9, - 0x92, 0xce, 0x87, 0xe9, 0x92, 0xcb, 0x86, 0xe9, 0x93, 0xce, 0x87, 0xe9, - 0x93, 0xcb, 0x86, 0xe9, 0x94, 0xce, 0x87, 0xe9, 0x94, 0xcb, 0x86, 0xe9, - 0x94, 0xce, 0x87, 0xe9, 0x95, 0xcb, 0x86, 0xe9, 0x95, 0xce, 0x87, 0xe9, - 0x96, 0xcb, 0x86, 0xe9, 0x96, 0xce, 0x87, 0xe9, 0x97, 0xcb, 0x86, 0xe9, - 0x97, 0xce, 0x87, 0xe9, 0x98, 0xcb, 0x86, 0xe9, 0x98, 0xce, 0x87, 0xe9, - 0x98, 0xcb, 0x86, 0xe9, 0x99, 0xce, 0x87, 0xe9, 0x99, 0xcb, 0x86, 0xe9, - 0x9a, 0xce, 0x87, 0xe9, 0x9a, 0xcb, 0x86, 0xe9, 0x9a, 0xce, 0x87, 0xe9, - 0x9b, 0xcb, 0x86, 0xe9, 0x9b, 0xce, 0x87, 0xe9, 0x9c, 0xcb, 0x86, 0xe9, - 0x9c, 0xce, 0x87, 0xe9, 0x9d, 0xcb, 0x86, 0xe9, 0x9d, 0xce, 0x87, 0xe9, - 0x9d, 0xcb, 0x86, 0xe9, 0x9e, 0xce, 0x87, 0xe9, 0x9e, 0xcb, 0x86, 0xe9, - 0x9f, 0xce, 0x87, 0xe9, 0x9f, 0xcb, 0x86, 0xe9, 0x9f, 0xce, 0x9d, 0xe9, - 0xa0, 0xec, 0x9e, 0xe9, 0xa0, 0xec, 0x9d, 0xe9, 0xa1, 0xec, 0x9e, 0xe9, - 0xa1, 0xec, 0x9d, 0xe9, 0xa1, 0xec, 0x9e, 0xe9, 0xa2, 0xec, 0x9d, 0xe9, - 0xa2, 0xec, 0x9e, 0xe9, 0xa3, 0xec, 0x9d, 0xe9, 0xa3, 0xec, 0x9e, 0xe9, - 0xa3, 0xec, 0xa2, 0xe9, 0xa4, 0xed, 0x9e, 0xe9, 0xa4, 0xec, 0xa2, 0xe9, - 0xa5, 0xed, 0xa2, 0xe9, 0xa5, 0xed, 0xa2, 0xe9, 0xa5, 0xed, 0xa2, 0xe9, - 0xa6, 0xed, 0xa2, 0xe9, 0xa6, 0xed, 0xa2, 0xe9, 0xa6, 0xed, 0xa2, 0xe9, - 0xa7, 0xed, 0xa2, 0xe9, 0xa7, 0xed, 0xa2, 0xe9, 0xa8, 0xed, 0xa6, 0xe9, - 0xa8, 0xee, 0xa2, 0xe9, 0xa8, 0xed, 0xa6, 0xe9, 0xa9, 0xee, 0xa6, 0xe9, - 0xa9, 0xee, 0xa6, 0xe9, 0xaa, 0xee, 0xa6, 0xe9, 0xaa, 0xee, 0xa6, 0xe9, - 0xaa, 0xee, 0xa6, 0xe9, 0xab, 0xee, 0xa6, 0xe9, 0xab, 0xee, 0xa6, 0xe9, - 0xab, 0xee, 0xa6, 0xe9, 0xac, 0xee, 0xa6, 0xe9, 0xac, 0xee, 0xa6, 0xe9, - 0xac, 0xee, 0xab, 0xe9, 0xad, 0xef, 0xaa, 0xe9, 0xad, 0xef, 0xab, 0xe9, - 0xae, 0xef, 0xaa, 0xe9, 0xae, 0xef, 0xab, 0xe9, 0xae, 0xef, 0xaa, 0xe9, - 0xaf, 0xef, 0xab, 0xe9, 0xaf, 0xef, 0xaa, 0xe9, 0xaf, 0xef, 0xab, 0xe9, - 0xb0, 0xef, 0xaa, 0xe9, 0xb0, 0xef, 0xab, 0xe9, 0xb0, 0xef, 0xaf, 0xe9, - 0xb1, 0xf0, 0xae, 0xe9, 0xb1, 0xf0, 0xaf, 0xe9, 0xb2, 0xf0, 0xae, 0xe9, - 0xb2, 0xf0, 0xaf, 0xe9, 0xb2, 0xf0, 0xae, 0xe9, 0xb3, 0xf0, 0xaf, 0xe9, - 0xb3, 0xf0, 0xae, 0xe9, 0xb3, 0xf0, 0xaf, 0xe9, 0xb4, 0xf0, 0xae, 0xe9, - 0xb4, 0xf0, 0xaf, 0xe9, 0xb4, 0xf0, 0xb3, 0xe9, 0xb5, 0xf1, 0xb2, 0xe9, - 0xb5, 0xf1, 0xb3, 0xe9, 0xb5, 0xf1, 0xb2, 0xe9, 0xb6, 0xf1, 0xb3, 0xe9, - 0xb6, 0xf1, 0xb2, 0xe9, 0xb6, 0xf1, 0xb3, 0xe9, 0xb7, 0xf1, 0xb2, 0xe9, - 0xb7, 0xf1, 0xb3, 0xe9, 0xb7, 0xf1, 0xb2, 0xe9, 0xb8, 0xf1, 0xcd, 0xe9, - 0xb8, 0xd8, 0xcd, 0xe9, 0xb8, 0xd5, 0xcd, 0xe9, 0xb9, 0xd8, 0xcd, 0xe9, - 0xb9, 0xd5, 0xcd, 0xe9, 0xb9, 0xd8, 0xcd, 0xe9, 0xba, 0xd5, 0xcd, 0xe9, - 0xba, 0xd8, 0xcd, 0xe9, 0xba, 0xd5, 0xcd, 0xe9, 0xbb, 0xd2, 0xcd, 0xe9, - 0xbb, 0xd5, 0xcd, 0xe9, 0xbb, 0xd2, 0xcd, 0xe9, 0xbc, 0xd5, 0xcd, 0xe9, - 0xbc, 0xd2, 0xcd, 0xe9, 0xbc, 0xd5, 0xcd, 0xe9, 0xbd, 0xd2, 0xcd, 0xe9, - 0xbd, 0xd5, 0xcd, 0xe9, 0xbd, 0xd2, 0xcd, 0xe9, 0xbe, 0xd5, 0xcd, 0xe9, - 0xbe, 0xd2, 0xcd, 0xe9, 0xbe, 0xd5, 0xcd, 0xe9, 0xbf, 0xd2, 0xcd, 0xe9, - 0xbf, 0xd5, 0xcd, 0xe9, 0xbf, 0xd2, 0xcd, 0xe9, 0xc0, 0xd5, 0xcd, 0xe9, - 0xc0, 0xd2, 0xcd, 0xe9, 0xc0, 0xd5, 0xcd, 0xe9, 0xc1, 0xd2, 0xcd, 0xe9, - 0xc1, 0xd5, 0xcd, 0xe9, 0xc1, 0xd2, 0xcd, 0xe9, 0xc1, 0xd5, 0xcd, 0xe9, - 0xc2, 0xd2, 0xcd, 0xe9, 0xc2, 0xd5, 0xcd, 0xe9, 0xc2, 0xd2, 0xcd, 0xe9, - 0xc3, 0xd5, 0xcd, 0xe9, 0xc3, 0xd2, 0xcd, 0xe9, 0xc3, 0xd5, 0xcd, 0xe9, - 0xc4, 0xd2, 0xcd, 0xe9, 0xc4, 0xd5, 0xcd, 0xe9, 0xc4, 0xd2, 0xcd, 0xe9, - 0xc5, 0xd5, 0xcd, 0xe9, 0xc5, 0xd2, 0xcd, 0xe9, 0xc5, 0xd5, 0xcd, 0xe9, - 0xc6, 0xd2, 0xcd, 0xe9, 0xc6, 0xd5, 0xcd, 0xe9, 0xc6, 0xd2, 0xce, 0xe9, - 0xc6, 0xd0, 0xcd, 0xe9, 0xc7, 0xd2, 0xce, 0xe9, 0xc7, 0xd0, 0xcd, 0xe9, - 0xc7, 0xd2, 0xce, 0xe9, 0xc8, 0xd0, 0xcd, 0xe9, 0xc8, 0xd2, 0xce, 0xe9, - 0xc8, 0xd0, 0xcd, 0xe9, 0xc9, 0xd2, 0xce, 0xe9, 0xc9, 0xd0, 0xcd, 0xe9, - 0xc9, 0xd2, 0xce, 0xe9, 0xc9, 0xd0, 0xcd, 0xe9, 0xca, 0xd2, 0xce, 0xe9, - 0xca, 0xd0, 0xcd, 0xe9, 0xca, 0xd2, 0xce, 0xe9, 0xcb, 0xd0, 0xcd, 0xe9, - 0xcb, 0xd2, 0xce, 0xe9, 0xcb, 0xd0, 0xcd, 0xe9, 0xcc, 0xd2, 0xce, 0xe9, - 0xcc, 0xd0, 0xcd, 0xe9, 0xcc, 0xd2, 0xce, 0xe9, 0xcc, 0xd0, 0xce, 0xe9, - 0xcd, 0xd0, 0xce, 0xe9, 0xcd, 0xd0, 0xce, 0xe9, 0xcd, 0xd0, 0xce, 0xe9, - 0xce, 0xd0, 0xce, 0xe9, 0xcd, 0xd0, 0xce, 0xe9, 0xce, 0xd0, 0xce, 0xe9, - 0xcd, 0xd0, 0xcf, 0xe9, 0xce, 0xd0, 0xcf, 0xe9, 0xcd, 0xd0, 0xcf, 0xe9, - 0xce, 0xd0, 0xd0, 0xe9, 0xcd, 0xd0, 0xd0, 0xe9, 0xce, 0xd0, 0xd0, 0xe9, - 0xcd, 0xd0, 0xd0, 0xe9, 0xce, 0xd0, 0xd1, 0xe9, 0xcd, 0xd0, 0xd1, 0xe9, - 0xce, 0xd0, 0xd1, 0xe9, 0xcd, 0xd0, 0xd2, 0xe9, 0xce, 0xd0, 0xd2, 0xe9, - 0xcd, 0xd0, 0xd2, 0xe9, 0xce, 0xd0, 0xd2, 0xe7, 0xce, 0xd0, 0xd3, 0xe9, - 0xce, 0xd0, 0xd3, 0xe7, 0xce, 0xd0, 0xd3, 0xe9, 0xce, 0xd0, 0xd4, 0xe7, - 0xce, 0xd0, 0xd4, 0xe9, 0xce, 0xd0, 0xd4, 0xe7, 0xce, 0xd0, 0xd4, 0xe9, - 0xce, 0xd0, 0xd5, 0xe7, 0xce, 0xd0, 0xd5, 0xe9, 0xce, 0xd0, 0xd5, 0xe7, - 0xce, 0xd0, 0xd6, 0xe9, 0xce, 0xd0, 0xd6, 0xe7, 0xce, 0xd0, 0xd6, 0xe9, - 0xce, 0xd0, 0xd6, 0xe7, 0xce, 0xd0, 0xd7, 0xe9, 0xce, 0xd0, 0xd7, 0xe7, - 0xce, 0xd0, 0xd7, 0xe9, 0xce, 0xd0, 0xd7, 0xe7, 0xce, 0xd0, 0xd8, 0xe9, - 0xce, 0xd0, 0xd8, 0xe7, 0xce, 0xd0, 0xd8, 0xe9, 0xce, 0xd0, 0xd9, 0xe7, - 0xce, 0xd0, 0xd9, 0xe9, 0xce, 0xd0, 0xd9, 0xe7, 0xce, 0xd0, 0xd9, 0xe9, - 0xce, 0xd0, 0xda, 0xe7, 0xce, 0xd0, 0xda, 0xe9, 0xce, 0xd0, 0xda, 0xe7, - 0xce, 0xd0, 0xda, 0xeb, 0xe6, 0xd0, 0xdb, 0xea, 0xe6, 0xd0, 0xdb, 0xeb, - 0xe6, 0xd0, 0xdb, 0xea, 0xe6, 0xd0, 0xdb, 0xeb, 0xe6, 0xd0, 0xdc, 0xea, - 0xe6, 0xd0, 0xdc, 0xeb, 0xe6, 0xd0, 0xdc, 0xea, 0xe6, 0xd0, 0xdd, 0xeb, - 0xe6, 0xd0, 0xdd, 0xea, 0xe6, 0xd0, 0xdd, 0xeb, 0xe6, 0xd0, 0xdd, 0xea, - 0xe6, 0xd0, 0xde, 0xeb, 0xe6, 0xd0, 0xde, 0xea, 0xe6, 0xd0, 0xde, 0xeb, - 0xe6, 0xd0, 0xde, 0xea, 0xe6, 0xd0, 0xdf, 0xeb, 0xe6, 0xd0, 0xdf, 0xea, - 0xe6, 0xd0, 0xdf, 0xeb, 0xe6, 0xd0, 0xdf, 0xea, 0xe6, 0xd0, 0xe0, 0xeb, - 0xe6, 0xd0, 0xe0, 0xea, 0xe6, 0xd0, 0xe0, 0xeb, 0xe6, 0xd0, 0xe1, 0xea, - 0xe6, 0xd0, 0xe1, 0xeb, 0xe6, 0xd0, 0xe1, 0xea, 0xe6, 0xd0, 0xe1, 0xeb, - 0xe6, 0xd0, 0xe2, 0xea, 0xe6, 0xd0, 0xe2, 0xeb, 0xe6, 0xd0, 0xe2, 0xea, - 0xe6, 0xd0, 0xe2, 0xe9, 0xe6, 0xd0, 0xe3, 0xea, 0xe6, 0xd0, 0xe3, 0xe9, - 0xe6, 0xd0, 0xe3, 0xea, 0xe6, 0xd0, 0xe3, 0xe9, 0xe6, 0xd0, 0xe4, 0xea, - 0xe6, 0xd0, 0xe4, 0xe9, 0xe6, 0xd0, 0xe4, 0xea, 0xe6, 0xd0, 0xe4, 0xe9, - 0xe6, 0xd0, 0xe5, 0xea, 0xe6, 0xd0, 0xe5, 0xe9, 0xe6, 0xd0, 0xe5, 0xea, - 0xe6, 0xd0, 0xe5, 0xe9, 0xe6, 0xd0, 0xe6, 0xe9, 0xe7, 0xd0, 0xe6, 0xe9, - 0xe6, 0xd0, 0xe6, 0xe9, 0xe7, 0xd0, 0xe6, 0xe9, 0xe6, 0xd0, 0xe6, 0xe9, - 0xe7, 0xd0, 0xe6, 0xe9, 0xe7, 0xd0, 0xe6, 0xe9, 0xe7, 0xd0, 0xe6, 0xe9, - 0xe7, 0xce, 0xe6, 0xe9, 0xe8, 0xd0, 0xe6, 0xe9, 0xe8, 0xce, 0xe6, 0xe9, - 0xe8, 0xd0, 0xea, 0xe9, 0xe8, 0xd0, 0xeb, 0xe9, 0xe9, 0xd0, 0xea, 0xe9, - 0xe9, 0xd0, 0xeb, 0xe9, 0xe9, 0xd0, 0xea, 0xe9, 0xe9, 0xd0, 0xeb, 0xe9, - 0xea, 0xd0, 0xea, 0xe9, 0xea, 0xd0, 0xeb, 0xe9, 0xea, 0xd0, 0xea, 0xe9, - 0xea, 0xd0, 0xeb, 0xe9, 0xea, 0xd0, 0xeb, 0xe9, 0xea, 0xd0, 0xeb, 0xe9, - 0xea, 0xd0, 0xeb, 0xe9, 0xea, 0xd0, 0xec, 0xe9, 0xea, 0xd0, 0xec, 0xe9, - 0xea, 0xd0, 0xec, 0xe9, 0xea, 0xd0, 0xec, 0xeb, 0xec, 0xd0, 0xec, 0xeb, - 0xec, 0xd0, 0xed, 0xeb, 0xed, 0xd0, 0xed, 0xeb, 0xec, 0xd0, 0xed, 0xeb, - 0xed, 0xd0, 0xed, 0xeb, 0xec, 0xd0, 0xee, 0xeb, 0xed, 0xd0, 0xee, 0xec, - 0xee, 0xd0, 0xee, 0xec, 0xee, 0xd0, 0xee, 0xec, 0xee, 0xd0, 0xef, 0xec, - 0xef, 0xd0, 0xef, 0xec, 0xef, 0xd0, 0xef, 0xec, 0xef, 0xd0, 0xef, 0xec, - 0xef, 0xd0, 0xf0, 0xec, 0xf0, 0xd0, 0xf0, 0xec, 0xf0, 0xd0, 0xf0, 0xec, - 0xf0, 0xd0, 0xf0, 0xec, 0xf0, 0xd0, 0xf1, 0xec, 0xf0, 0xd0, 0xf1, 0xec, - 0xf0, 0xd0, 0xf1, 0xec, 0xf0, 0xd0, 0xf1, 0xec, 0xf0, 0xd0, 0xf2, 0xec, - 0xf0, 0xd0, 0xf2, 0xec, 0xf1, 0xd0, 0xf2, 0xec, 0xf1, 0xd0, 0xf2, 0xec, - 0xf1, 0xd0, 0xf2, 0xec, 0xf1, 0xd0, 0xf3, 0xec, 0xf1, 0xd0, 0xf3, 0xec, - 0xf1, 0xd0, 0xf3, 0xec, 0xf1, 0xd0, 0xf3, 0xec, 0xf1, 0xd0, 0xf4, 0xec, - 0xf1, 0xd0, 0xf4, 0xec, 0xf1, 0xd0, 0xf4, 0xec, 0xf1, 0xd0, 0xf4, 0xec, - 0xf1, 0xd0, 0xf5, 0xec, 0xf1, 0xd0, 0xf5, 0xec, 0xf1, 0xd0, 0xf5, 0xec, - 0xf1, 0xd0, 0xf5, 0xec, 0xf1, 0xd0, 0xf5, 0xec, 0xf1, 0xd0, 0xf6, 0xec, - 0xf1, 0xd0, 0xf6, 0xec, 0xf1, 0xd0, 0xf6, 0xec, 0xf1, 0xd0, 0xf6, 0xec, - 0xf1, 0xd0, 0xf7, 0xec, 0xf1, 0xd0, 0xf7, 0xec, 0xf1, 0xd0, 0xf7, 0xec, - 0xf1, 0xd0, 0xf7, 0xec, 0xf1, 0xd0, 0xf8, 0xec, 0xf1, 0xd0, 0xf8, 0xec, - 0xf1, 0xd0, 0xf8, 0xec, 0xf1, 0xd0, 0xf8, 0xec, 0xf1, 0xd0, 0xf8, 0xec, - 0xf1, 0xd0, 0xf9, 0xec, 0xf1, 0xd0, 0xf9, 0xec, 0xf1, 0xd0, 0xf9, 0xec, - 0xf1, 0xd0, 0xf9, 0xec, 0xf1, 0xd0, 0xfa, 0xec, 0xf1, 0xd0, 0xfa, 0xec, - 0xf1, 0xd0, 0xfa, 0xec, 0xf1, 0xd0, 0xfa, 0xec, 0xf1, 0xd0, 0xfa, 0xec, - 0xf1, 0xd0, 0xfb, 0xec, 0xf1, 0xd0, 0xfb, 0xec, 0xf1, 0xd0, 0xfb, 0xec, - 0xf1, 0xd0, 0xfb, 0xec, 0xf1, 0xd0, 0xfc, 0xec, 0xf1, 0xd0, 0xfc, 0xec, - 0xf1, 0xd0, 0xfc, 0xec, 0xf1, 0xd0, 0xfc, 0xec, 0xf1, 0xd0, 0xfc, 0xec, - 0xf1, 0xd0, 0xfd, 0xec, 0xf1, 0xd0, 0xfd, 0xec, 0xf1, 0xd0, 0xfd, 0xec, - 0xf1, 0xd0, 0xfd, 0xec, 0xf1, 0xd0, 0xfe, 0xec, 0xf1, 0xd0, 0xfe, 0xec, - 0xf1, 0xd0, 0xfe, 0xec, 0xf1, 0xd0, 0xfe, 0xec, 0xf1, 0xd0, 0xfe, 0xec, - 0xf1, 0xd0, 0xff, 0xec, 0xf1, 0xd0, 0xff, 0xec, 0xf1, 0xd0, 0x03, 0xec, - 0x85, 0xd1, 0x0a, 0xee, 0x85, 0xd1, 0x0f, 0xec, 0x85, 0xd1, 0x14, 0xee, - 0x85, 0xd1, 0x17, 0xec, 0x85, 0xd1, 0x1b, 0xee, 0x85, 0xd1, 0x1e, 0xec, - 0x85, 0xd1, 0x20, 0xee, 0x85, 0xd1, 0x23, 0xec, 0x85, 0xd1, 0x25, 0xee, - 0x85, 0xd1, 0x27, 0xec, 0x85, 0xd1, 0x29, 0xee, 0x85, 0xd1, 0x2b, 0xec, - 0x85, 0xd1, 0x2d, 0xee, 0x85, 0xd1, 0x2f, 0xec, 0x85, 0xd1, 0x31, 0xee, - 0x85, 0xd1, 0x32, 0xec, 0x85, 0xd1, 0x34, 0xee, 0x85, 0xd1, 0x35, 0xec, - 0x85, 0xd1, 0x37, 0xee, 0x85, 0xd1, 0x38, 0xec, 0x85, 0xd1, 0x3a, 0xee, - 0x85, 0xd1, 0x3b, 0xec, 0x85, 0xd1, 0x3c, 0xee, 0x85, 0xd1, 0x3e, 0xec, - 0x85, 0xd1, 0x3f, 0xee, 0x85, 0xd1, 0x40, 0xec, 0x85, 0xd1, 0x42, 0xee, - 0x85, 0xd1, 0x43, 0xec, 0x85, 0xd1, 0x44, 0xee, 0x85, 0xd1, 0x45, 0xec, - 0x85, 0xd1, 0x46, 0xee, 0x85, 0xd1, 0x47, 0xec, 0x85, 0xd1, 0x48, 0xee, - 0x85, 0xd1, 0x49, 0xec, 0x85, 0xd1, 0x4a, 0xee, 0x85, 0xd1, 0x4b, 0xec, - 0x85, 0xd1, 0x4c, 0xee, 0x85, 0xd1, 0x4d, 0xec, 0x85, 0xd1, 0x4e, 0xee, - 0x85, 0xd1, 0x4f, 0xec, 0x85, 0xd1, 0x50, 0xee, 0x85, 0xd1, 0x51, 0xec, - 0x85, 0xd1, 0x52, 0xee, 0x85, 0xd1, 0x53, 0xec, 0x85, 0xd1, 0x54, 0xeb, - 0x86, 0xd1, 0x55, 0xec, 0x85, 0xd1, 0x56, 0xeb, 0x86, 0xd1, 0x57, 0xec, - 0x85, 0xd1, 0x58, 0xeb, 0x86, 0xd1, 0x58, 0xec, 0x85, 0xd1, 0x59, 0xeb, - 0x86, 0xd1, 0x5a, 0xec, 0x85, 0xd1, 0x5b, 0xeb, 0x86, 0xd1, 0x5c, 0xec, - 0x85, 0xd1, 0x5d, 0xeb, 0x86, 0xd1, 0x5d, 0xec, 0x85, 0xd1, 0x5e, 0xeb, - 0x86, 0xd1, 0x5f, 0xec, 0x85, 0xd1, 0x60, 0xeb, 0x86, 0xd1, 0x60, 0xec, - 0x85, 0xd1, 0x61, 0xeb, 0x86, 0xd1, 0x62, 0xec, 0x85, 0xd1, 0x63, 0xeb, - 0x86, 0xd1, 0x63, 0xec, 0x85, 0xd1, 0x64, 0xeb, 0x86, 0xd1, 0x65, 0xec, - 0x85, 0xd1, 0x66, 0xeb, 0x86, 0xd1, 0x66, 0xec, 0x85, 0xd1, 0x67, 0xeb, - 0x86, 0xd1, 0x68, 0xec, 0x85, 0xd1, 0x68, 0xeb, 0x86, 0xd1, 0x69, 0xec, - 0x85, 0xd1, 0x6a, 0xeb, 0x86, 0xd1, 0x6a, 0xec, 0x85, 0xd1, 0x6b, 0xeb, - 0x86, 0xd1, 0x6c, 0xec, 0x85, 0xd1, 0x6c, 0xeb, 0x86, 0xd1, 0x6d, 0xec, - 0x85, 0xd1, 0x6e, 0xeb, 0x86, 0xd1, 0x6e, 0xec, 0x85, 0xd1, 0x6f, 0xeb, - 0x86, 0xd1, 0x70, 0xec, 0x85, 0xd1, 0x70, 0xeb, 0x86, 0xd1, 0x71, 0xec, - 0x85, 0xd1, 0x72, 0xeb, 0x86, 0xd1, 0x72, 0xec, 0x85, 0xd1, 0x73, 0xeb, - 0x86, 0xd1, 0x73, 0xec, 0x85, 0xd1, 0x74, 0xeb, 0x86, 0xd1, 0x75, 0xec, - 0x85, 0xd1, 0x75, 0xeb, 0x86, 0xd1, 0x76, 0xec, 0x85, 0xd1, 0x76, 0xeb, - 0x86, 0xd1, 0x77, 0xec, 0x85, 0xd1, 0x78, 0xeb, 0x86, 0xd1, 0x78, 0xec, - 0x85, 0xd1, 0x79, 0xeb, 0x86, 0xd1, 0x79, 0xea, 0x86, 0xd1, 0x7a, 0xeb, - 0x86, 0xd1, 0x7a, 0xea, 0x86, 0xd1, 0x7b, 0xeb, 0x86, 0xd1, 0x7c, 0xea, - 0x86, 0xd1, 0x7c, 0xeb, 0x86, 0xd1, 0x7d, 0xea, 0x86, 0xd1, 0x7d, 0xeb, - 0x86, 0xd1, 0x7e, 0xea, 0x86, 0xd1, 0x7e, 0xeb, 0x86, 0xd1, 0x7f, 0xea, - 0x86, 0xd1, 0x7f, 0xeb, 0x86, 0xd1, 0x80, 0xea, 0x86, 0xd1, 0x81, 0xeb, - 0x86, 0xd1, 0x81, 0xea, 0x86, 0xd1, 0x82, 0xeb, 0x86, 0xd1, 0x82, 0xea, - 0x86, 0xd1, 0x83, 0xeb, 0x86, 0xd1, 0x83, 0xea, 0x86, 0xd1, 0x84, 0xeb, - 0x86, 0xd1, 0x84, 0xea, 0x86, 0xd1, 0x85, 0xea, 0x87, 0xd1, 0x85, 0xea, - 0x86, 0xd1, 0x86, 0xea, 0x87, 0xd1, 0x85, 0xea, 0x86, 0xd1, 0x86, 0xea, - 0x87, 0xd1, 0x85, 0xea, 0x87, 0xd1, 0x86, 0xea, 0x88, 0xd1, 0x86, 0xea, - 0x88, 0xcf, 0x86, 0xea, 0x89, 0xd1, 0x86, 0xea, 0x89, 0xcf, 0x86, 0xea, - 0x8a, 0xd1, 0x86, 0xea, 0x8a, 0xcf, 0x86, 0xea, 0x8b, 0xd1, 0x86, 0xea, - 0x8b, 0xcf, 0x86, 0xea, 0x8c, 0xd1, 0x86, 0xea, 0x8c, 0xcf, 0x86, 0xea, - 0x8d, 0xd1, 0x86, 0xea, 0x8d, 0xcf, 0x86, 0xea, 0x8e, 0xd1, 0x86, 0xea, - 0x8e, 0xcf, 0x86, 0xea, 0x8e, 0xd1, 0x86, 0xea, 0x8f, 0xcf, 0x86, 0xea, - 0x8f, 0xd1, 0x86, 0xea, 0x90, 0xcf, 0x86, 0xea, 0x90, 0xd1, 0x86, 0xea, - 0x91, 0xcf, 0x86, 0xea, 0x91, 0xd1, 0x86, 0xea, 0x92, 0xcf, 0x87, 0xea, - 0x92, 0xcc, 0x86, 0xea, 0x93, 0xcf, 0x87, 0xea, 0x93, 0xcc, 0x86, 0xea, - 0x94, 0xcf, 0x87, 0xea, 0x94, 0xcc, 0x86, 0xea, 0x94, 0xcf, 0x87, 0xea, - 0x95, 0xcc, 0x86, 0xea, 0x95, 0xcf, 0x87, 0xea, 0x96, 0xcc, 0x86, 0xea, - 0x96, 0xcf, 0x87, 0xea, 0x97, 0xcc, 0x86, 0xea, 0x97, 0xcf, 0x87, 0xea, - 0x98, 0xcc, 0x86, 0xea, 0x98, 0xcf, 0x87, 0xea, 0x98, 0xcc, 0x86, 0xea, - 0x99, 0xcf, 0x87, 0xea, 0x99, 0xcc, 0x86, 0xea, 0x9a, 0xcf, 0x87, 0xea, - 0x9a, 0xcc, 0x86, 0xea, 0x9a, 0xcf, 0x87, 0xea, 0x9b, 0xcc, 0x86, 0xea, - 0x9b, 0xcf, 0x87, 0xea, 0x9c, 0xcc, 0x86, 0xea, 0x9c, 0xcf, 0x87, 0xea, - 0x9d, 0xcc, 0x86, 0xea, 0x9d, 0xcf, 0x87, 0xea, 0x9d, 0xcc, 0x86, 0xea, - 0x9e, 0xcf, 0x87, 0xea, 0x9e, 0xcc, 0x86, 0xea, 0x9f, 0xcf, 0x87, 0xea, - 0x9f, 0xcc, 0x9b, 0xea, 0x9f, 0xec, 0x9b, 0xea, 0xa0, 0xec, 0x9b, 0xea, - 0xa0, 0xec, 0x9b, 0xea, 0xa1, 0xec, 0x9b, 0xea, 0xa1, 0xec, 0xa0, 0xea, - 0xa1, 0xed, 0x9b, 0xea, 0xa2, 0xec, 0xa0, 0xea, 0xa2, 0xed, 0x9f, 0xea, - 0xa3, 0xed, 0xa0, 0xea, 0xa3, 0xed, 0x9f, 0xea, 0xa3, 0xed, 0xa0, 0xea, - 0xa4, 0xed, 0x9f, 0xea, 0xa4, 0xed, 0xa0, 0xea, 0xa5, 0xed, 0x9f, 0xea, - 0xa5, 0xed, 0xa0, 0xea, 0xa5, 0xed, 0xa4, 0xea, 0xa6, 0xee, 0xa0, 0xea, - 0xa6, 0xed, 0xa4, 0xea, 0xa6, 0xee, 0xa4, 0xea, 0xa7, 0xee, 0xa4, 0xea, - 0xa7, 0xee, 0xa4, 0xea, 0xa8, 0xee, 0xa4, 0xea, 0xa8, 0xee, 0xa4, 0xea, - 0xa8, 0xee, 0xa4, 0xea, 0xa9, 0xee, 0xa4, 0xea, 0xa9, 0xee, 0xa4, 0xea, - 0xaa, 0xee, 0xa8, 0xea, 0xaa, 0xef, 0xa4, 0xea, 0xaa, 0xee, 0xa8, 0xea, - 0xab, 0xef, 0xa8, 0xea, 0xab, 0xef, 0xa8, 0xea, 0xab, 0xef, 0xa8, 0xea, - 0xac, 0xef, 0xa8, 0xea, 0xac, 0xef, 0xa8, 0xea, 0xac, 0xef, 0xa8, 0xea, - 0xad, 0xef, 0xa8, 0xea, 0xad, 0xef, 0xa8, 0xea, 0xae, 0xef, 0xa8, 0xea, - 0xae, 0xef, 0xa8, 0xea, 0xae, 0xef, 0xac, 0xea, 0xaf, 0xf0, 0xac, 0xea, - 0xaf, 0xf0, 0xac, 0xea, 0xaf, 0xf0, 0xac, 0xea, 0xb0, 0xf0, 0xac, 0xea, - 0xb0, 0xf0, 0xac, 0xea, 0xb0, 0xf0, 0xac, 0xea, 0xb1, 0xf0, 0xac, 0xea, - 0xb1, 0xf0, 0xac, 0xea, 0xb2, 0xf0, 0xac, 0xea, 0xb2, 0xf0, 0xac, 0xea, - 0xb2, 0xf0, 0xb0, 0xea, 0xb3, 0xf1, 0xb0, 0xea, 0xb3, 0xf1, 0xb0, 0xea, - 0xb3, 0xf1, 0xb0, 0xea, 0xb4, 0xf1, 0xb0, 0xea, 0xb4, 0xf1, 0xb0, 0xea, - 0xb4, 0xf1, 0xb0, 0xea, 0xb5, 0xf1, 0xb0, 0xea, 0xb5, 0xf1, 0xb0, 0xea, - 0xb5, 0xf1, 0xb0, 0xea, 0xb6, 0xf1, 0xb0, 0xea, 0xb6, 0xf1, 0xb4, 0xea, - 0xb6, 0xf2, 0xb4, 0xea, 0xb7, 0xf2, 0xb4, 0xea, 0xb7, 0xf2, 0xb4, 0xea, - 0xb7, 0xf2, 0xb4, 0xea, 0xb8, 0xf2, 0xb4, 0xea, 0xb8, 0xf2, 0xcd, 0xea, - 0xb8, 0xd6, 0xcd, 0xea, 0xb9, 0xd8, 0xcd, 0xea, 0xb9, 0xd6, 0xcd, 0xea, - 0xb9, 0xd8, 0xcd, 0xea, 0xba, 0xd6, 0xcd, 0xea, 0xba, 0xd8, 0xcd, 0xea, - 0xba, 0xd6, 0xcd, 0xea, 0xbb, 0xd8, 0xcd, 0xea, 0xbb, 0xd6, 0xcd, 0xea, - 0xbb, 0xd8, 0xcd, 0xea, 0xbc, 0xd6, 0xcd, 0xea, 0xbc, 0xd8, 0xcd, 0xea, - 0xbc, 0xd6, 0xcd, 0xea, 0xbd, 0xd8, 0xcd, 0xea, 0xbd, 0xd6, 0xcd, 0xea, - 0xbd, 0xd8, 0xcd, 0xea, 0xbe, 0xd6, 0xcd, 0xea, 0xbe, 0xd8, 0xcd, 0xea, - 0xbe, 0xd6, 0xcd, 0xea, 0xbf, 0xd8, 0xcd, 0xea, 0xbf, 0xd6, 0xcd, 0xea, - 0xbf, 0xd8, 0xcd, 0xea, 0xc0, 0xd6, 0xcd, 0xea, 0xc0, 0xd3, 0xcd, 0xea, - 0xc0, 0xd6, 0xcd, 0xea, 0xc1, 0xd3, 0xcd, 0xea, 0xc1, 0xd6, 0xcd, 0xea, - 0xc1, 0xd3, 0xcd, 0xea, 0xc1, 0xd6, 0xcd, 0xea, 0xc2, 0xd3, 0xcd, 0xea, - 0xc2, 0xd6, 0xcd, 0xea, 0xc2, 0xd3, 0xcd, 0xea, 0xc3, 0xd6, 0xcd, 0xea, - 0xc3, 0xd3, 0xcd, 0xea, 0xc3, 0xd6, 0xcd, 0xea, 0xc4, 0xd3, 0xcd, 0xea, - 0xc4, 0xd6, 0xcd, 0xea, 0xc4, 0xd3, 0xcd, 0xea, 0xc5, 0xd6, 0xcd, 0xea, - 0xc5, 0xd3, 0xcd, 0xea, 0xc5, 0xd6, 0xcd, 0xea, 0xc6, 0xd3, 0xcd, 0xea, - 0xc6, 0xd6, 0xcd, 0xea, 0xc6, 0xd3, 0xce, 0xea, 0xc6, 0xd1, 0xcd, 0xea, - 0xc7, 0xd3, 0xce, 0xea, 0xc7, 0xd1, 0xcd, 0xea, 0xc7, 0xd3, 0xce, 0xea, - 0xc8, 0xd1, 0xcd, 0xea, 0xc8, 0xd3, 0xce, 0xea, 0xc8, 0xd1, 0xcd, 0xea, - 0xc9, 0xd3, 0xce, 0xea, 0xc9, 0xd1, 0xcd, 0xea, 0xc9, 0xd3, 0xce, 0xea, - 0xc9, 0xd1, 0xcd, 0xea, 0xca, 0xd3, 0xce, 0xea, 0xca, 0xd1, 0xcd, 0xea, - 0xca, 0xd3, 0xce, 0xea, 0xcb, 0xd1, 0xcd, 0xea, 0xcb, 0xd3, 0xce, 0xea, - 0xcb, 0xd1, 0xcd, 0xea, 0xcc, 0xd3, 0xce, 0xea, 0xcc, 0xd1, 0xcd, 0xea, - 0xcc, 0xd3, 0xce, 0xea, 0xcc, 0xd1, 0xce, 0xea, 0xcd, 0xd1, 0xce, 0xea, - 0xcd, 0xd1, 0xce, 0xea, 0xcd, 0xd1, 0xce, 0xea, 0xcd, 0xd1, 0xce, 0xea, - 0xcd, 0xd1, 0xce, 0xea, 0xcd, 0xd1, 0xce, 0xea, 0xcd, 0xd1, 0xcf, 0xe9, - 0xce, 0xd1, 0xcf, 0xea, 0xcd, 0xd1, 0xcf, 0xe9, 0xce, 0xd1, 0xd0, 0xea, - 0xcd, 0xd1, 0xd0, 0xe9, 0xce, 0xd1, 0xd0, 0xea, 0xcd, 0xd1, 0xd0, 0xe9, - 0xce, 0xd1, 0xd1, 0xea, 0xcd, 0xd1, 0xd1, 0xe9, 0xce, 0xd1, 0xd1, 0xea, - 0xcd, 0xd1, 0xd2, 0xe9, 0xce, 0xd1, 0xd2, 0xea, 0xcd, 0xd1, 0xd2, 0xe9, - 0xce, 0xd1, 0xd2, 0xea, 0xcd, 0xd1, 0xd3, 0xe9, 0xce, 0xd1, 0xd3, 0xea, - 0xcd, 0xd1, 0xd3, 0xe9, 0xce, 0xd1, 0xd4, 0xea, 0xcd, 0xd1, 0xd4, 0xe9, - 0xce, 0xd1, 0xd4, 0xea, 0xcd, 0xd1, 0xd4, 0xe9, 0xce, 0xd1, 0xd5, 0xe7, - 0xce, 0xd1, 0xd5, 0xe9, 0xce, 0xd1, 0xd5, 0xe7, 0xce, 0xd1, 0xd6, 0xe9, - 0xce, 0xd1, 0xd6, 0xe7, 0xce, 0xd1, 0xd6, 0xe9, 0xce, 0xd1, 0xd6, 0xe7, - 0xce, 0xd1, 0xd7, 0xe9, 0xce, 0xd1, 0xd7, 0xe7, 0xce, 0xd1, 0xd7, 0xe9, - 0xce, 0xd1, 0xd7, 0xe7, 0xce, 0xd1, 0xd8, 0xe9, 0xce, 0xd1, 0xd8, 0xe7, - 0xce, 0xd1, 0xd8, 0xe9, 0xce, 0xd1, 0xd9, 0xe7, 0xce, 0xd1, 0xd9, 0xe9, - 0xce, 0xd1, 0xd9, 0xe7, 0xce, 0xd1, 0xd9, 0xe9, 0xce, 0xd1, 0xda, 0xe7, - 0xce, 0xd1, 0xda, 0xe9, 0xce, 0xd1, 0xda, 0xe7, 0xce, 0xd1, 0xda, 0xec, - 0xe6, 0xd1, 0xdb, 0xec, 0xe6, 0xd1, 0xdb, 0xec, 0xe6, 0xd1, 0xdb, 0xec, - 0xe6, 0xd1, 0xdb, 0xec, 0xe6, 0xd1, 0xdc, 0xec, 0xe6, 0xd1, 0xdc, 0xec, - 0xe6, 0xd1, 0xdc, 0xec, 0xe6, 0xd1, 0xdd, 0xec, 0xe6, 0xd1, 0xdd, 0xea, - 0xe6, 0xd1, 0xdd, 0xec, 0xe6, 0xd1, 0xdd, 0xea, 0xe6, 0xd1, 0xde, 0xec, - 0xe6, 0xd1, 0xde, 0xea, 0xe6, 0xd1, 0xde, 0xec, 0xe6, 0xd1, 0xde, 0xea, - 0xe6, 0xd1, 0xdf, 0xec, 0xe6, 0xd1, 0xdf, 0xea, 0xe6, 0xd1, 0xdf, 0xec, - 0xe6, 0xd1, 0xdf, 0xea, 0xe6, 0xd1, 0xe0, 0xec, 0xe6, 0xd1, 0xe0, 0xea, - 0xe6, 0xd1, 0xe0, 0xec, 0xe6, 0xd1, 0xe1, 0xea, 0xe6, 0xd1, 0xe1, 0xec, - 0xe6, 0xd1, 0xe1, 0xea, 0xe6, 0xd1, 0xe1, 0xec, 0xe6, 0xd1, 0xe2, 0xea, - 0xe6, 0xd1, 0xe2, 0xec, 0xe6, 0xd1, 0xe2, 0xea, 0xe6, 0xd1, 0xe2, 0xea, - 0xe6, 0xd1, 0xe3, 0xea, 0xe6, 0xd1, 0xe3, 0xea, 0xe6, 0xd1, 0xe3, 0xea, - 0xe6, 0xd1, 0xe3, 0xea, 0xe6, 0xd1, 0xe4, 0xea, 0xe6, 0xd1, 0xe4, 0xea, - 0xe6, 0xd1, 0xe4, 0xea, 0xe6, 0xd1, 0xe4, 0xea, 0xe6, 0xd1, 0xe5, 0xea, - 0xe6, 0xd1, 0xe5, 0xea, 0xe6, 0xd1, 0xe5, 0xea, 0xe6, 0xd1, 0xe5, 0xea, - 0xe6, 0xd1, 0xe6, 0xea, 0xe6, 0xd1, 0xe6, 0xea, 0xe6, 0xd1, 0xe6, 0xea, - 0xe6, 0xd1, 0xe6, 0xea, 0xe6, 0xd1, 0xe6, 0xea, 0xe7, 0xd1, 0xe6, 0xea, - 0xe7, 0xd1, 0xe6, 0xea, 0xe7, 0xd1, 0xe6, 0xea, 0xe7, 0xd1, 0xe6, 0xea, - 0xe8, 0xd1, 0xe6, 0xea, 0xe8, 0xd1, 0xe6, 0xea, 0xe8, 0xd1, 0xea, 0xea, - 0xe8, 0xd1, 0xeb, 0xea, 0xe9, 0xd1, 0xea, 0xea, 0xe9, 0xd1, 0xeb, 0xea, - 0xe9, 0xd1, 0xea, 0xea, 0xe9, 0xd1, 0xeb, 0xea, 0xea, 0xd1, 0xea, 0xea, - 0xea, 0xd1, 0xeb, 0xea, 0xea, 0xd1, 0xea, 0xea, 0xea, 0xd1, 0xeb, 0xea, - 0xea, 0xd1, 0xeb, 0xea, 0xea, 0xd1, 0xeb, 0xea, 0xea, 0xd1, 0xeb, 0xe9, - 0xea, 0xd1, 0xec, 0xea, 0xea, 0xd1, 0xec, 0xe9, 0xea, 0xd1, 0xec, 0xeb, - 0xeb, 0xd1, 0xec, 0xec, 0xec, 0xd1, 0xec, 0xec, 0xec, 0xd1, 0xed, 0xec, - 0xed, 0xd1, 0xed, 0xec, 0xed, 0xd1, 0xed, 0xec, 0xed, 0xd1, 0xed, 0xec, - 0xed, 0xd1, 0xee, 0xec, 0xee, 0xd1, 0xee, 0xec, 0xee, 0xd1, 0xee, 0xec, - 0xee, 0xd1, 0xee, 0xec, 0xee, 0xd1, 0xef, 0xec, 0xee, 0xd1, 0xef, 0xec, - 0xee, 0xd1, 0xef, 0xec, 0xee, 0xd1, 0xef, 0xec, 0xee, 0xd1, 0xf0, 0xec, - 0xf0, 0xd1, 0xf0, 0xec, 0xf0, 0xd1, 0xf0, 0xec, 0xf0, 0xd1, 0xf0, 0xec, - 0xf0, 0xd1, 0xf1, 0xec, 0xf1, 0xd1, 0xf1, 0xec, 0xf1, 0xd1, 0xf1, 0xec, - 0xf1, 0xd1, 0xf1, 0xec, 0xf1, 0xd1, 0xf2, 0xec, 0xf1, 0xd1, 0xf2, 0xec, - 0xf1, 0xd1, 0xf2, 0xec, 0xf1, 0xd1, 0xf2, 0xec, 0xf1, 0xd1, 0xf2, 0xec, - 0xf1, 0xd1, 0xf3, 0xec, 0xf1, 0xd1, 0xf3, 0xec, 0xf1, 0xd1, 0xf3, 0xec, - 0xf1, 0xd1, 0xf3, 0xec, 0xf1, 0xd1, 0xf4, 0xec, 0xf1, 0xd1, 0xf4, 0xec, - 0xf1, 0xd1, 0xf4, 0xec, 0xf1, 0xd1, 0xf4, 0xec, 0xf1, 0xd1, 0xf5, 0xec, - 0xf1, 0xd1, 0xf5, 0xec, 0xf1, 0xd1, 0xf5, 0xec, 0xf1, 0xd1, 0xf5, 0xec, - 0xf1, 0xd1, 0xf5, 0xec, 0xf1, 0xd1, 0xf6, 0xec, 0xf1, 0xd1, 0xf6, 0xec, - 0xf1, 0xd1, 0xf6, 0xec, 0xf1, 0xd1, 0xf6, 0xec, 0xf1, 0xd1, 0xf7, 0xec, - 0xf1, 0xd1, 0xf7, 0xec, 0xf1, 0xd1, 0xf7, 0xec, 0xf1, 0xd1, 0xf7, 0xec, - 0xf1, 0xd1, 0xf8, 0xec, 0xf1, 0xd1, 0xf8, 0xec, 0xf1, 0xd1, 0xf8, 0xec, - 0xf1, 0xd1, 0xf8, 0xec, 0xf1, 0xd1, 0xf8, 0xec, 0xf1, 0xd1, 0xf9, 0xec, - 0xf1, 0xd1, 0xf9, 0xec, 0xf1, 0xd1, 0xf9, 0xec, 0xf1, 0xd1, 0xf9, 0xec, - 0xf1, 0xd1, 0xfa, 0xec, 0xf1, 0xd1, 0xfa, 0xec, 0xf1, 0xd1, 0xfa, 0xec, - 0xf1, 0xd1, 0xfa, 0xec, 0xf1, 0xd1, 0xfa, 0xec, 0xf1, 0xd1, 0xfb, 0xec, - 0xf1, 0xd1, 0xfb, 0xec, 0xf1, 0xd1, 0xfb, 0xec, 0xf1, 0xd1, 0xfb, 0xec, - 0xf1, 0xd1, 0xfc, 0xec, 0xf1, 0xd1, 0xfc, 0xec, 0xf1, 0xd1, 0xfc, 0xec, - 0xf1, 0xd1, 0xfc, 0xec, 0xf1, 0xd1, 0xfc, 0xec, 0xf1, 0xd1, 0xfd, 0xec, - 0xf1, 0xd1, 0xfd, 0xec, 0xf1, 0xd1, 0xfd, 0xec, 0xf1, 0xd1, 0xfd, 0xec, - 0xf1, 0xd1, 0xfe, 0xec, 0xf1, 0xd1, 0xfe, 0xec, 0xf1, 0xd1, 0xfe, 0xec, - 0xf1, 0xd1, 0xfe, 0xec, 0xf1, 0xd1, 0xfe, 0xec, 0xf1, 0xd1, 0xff, 0xec, - 0xf1, 0xd1, 0xff, 0xec, 0xf1, 0xd1, 0x03, 0xef, 0x84, 0xd1, 0x0a, 0xee, - 0x85, 0xd1, 0x0f, 0xef, 0x84, 0xd1, 0x14, 0xee, 0x85, 0xd1, 0x17, 0xef, - 0x84, 0xd1, 0x1b, 0xee, 0x85, 0xd1, 0x1e, 0xef, 0x84, 0xd1, 0x20, 0xee, - 0x85, 0xd1, 0x23, 0xef, 0x84, 0xd1, 0x25, 0xee, 0x85, 0xd1, 0x27, 0xef, - 0x84, 0xd1, 0x29, 0xee, 0x85, 0xd1, 0x2b, 0xef, 0x84, 0xd1, 0x2d, 0xee, - 0x85, 0xd1, 0x2f, 0xef, 0x84, 0xd1, 0x31, 0xee, 0x85, 0xd1, 0x32, 0xef, - 0x84, 0xd1, 0x34, 0xee, 0x85, 0xd1, 0x35, 0xef, 0x84, 0xd1, 0x37, 0xee, - 0x85, 0xd1, 0x38, 0xef, 0x84, 0xd1, 0x3a, 0xee, 0x85, 0xd1, 0x3b, 0xef, - 0x84, 0xd1, 0x3c, 0xee, 0x85, 0xd1, 0x3e, 0xec, 0x85, 0xd1, 0x3f, 0xee, - 0x85, 0xd1, 0x40, 0xec, 0x85, 0xd1, 0x42, 0xee, 0x85, 0xd1, 0x43, 0xec, - 0x85, 0xd1, 0x44, 0xee, 0x85, 0xd1, 0x45, 0xec, 0x85, 0xd1, 0x46, 0xee, - 0x85, 0xd1, 0x47, 0xec, 0x85, 0xd1, 0x48, 0xee, 0x85, 0xd1, 0x49, 0xec, - 0x85, 0xd1, 0x4a, 0xee, 0x85, 0xd1, 0x4b, 0xec, 0x85, 0xd1, 0x4c, 0xee, - 0x85, 0xd1, 0x4d, 0xec, 0x85, 0xd1, 0x4e, 0xee, 0x85, 0xd1, 0x4f, 0xec, - 0x85, 0xd1, 0x50, 0xee, 0x85, 0xd1, 0x51, 0xec, 0x85, 0xd1, 0x52, 0xee, - 0x85, 0xd1, 0x53, 0xec, 0x85, 0xd1, 0x54, 0xee, 0x85, 0xd1, 0x55, 0xec, - 0x85, 0xd1, 0x56, 0xee, 0x85, 0xd1, 0x57, 0xec, 0x85, 0xd1, 0x58, 0xee, - 0x85, 0xd1, 0x58, 0xec, 0x85, 0xd1, 0x59, 0xee, 0x85, 0xd1, 0x5a, 0xec, - 0x85, 0xd1, 0x5b, 0xee, 0x85, 0xd1, 0x5c, 0xec, 0x85, 0xd1, 0x5d, 0xee, - 0x85, 0xd1, 0x5d, 0xec, 0x85, 0xd1, 0x5e, 0xee, 0x85, 0xd1, 0x5f, 0xec, - 0x85, 0xd1, 0x60, 0xee, 0x85, 0xd1, 0x60, 0xec, 0x85, 0xd1, 0x61, 0xeb, - 0x86, 0xd1, 0x62, 0xec, 0x85, 0xd1, 0x63, 0xeb, 0x86, 0xd1, 0x63, 0xec, - 0x85, 0xd1, 0x64, 0xeb, 0x86, 0xd1, 0x65, 0xec, 0x85, 0xd1, 0x66, 0xeb, - 0x86, 0xd1, 0x66, 0xec, 0x85, 0xd1, 0x67, 0xeb, 0x86, 0xd1, 0x68, 0xec, - 0x85, 0xd1, 0x68, 0xeb, 0x86, 0xd1, 0x69, 0xec, 0x85, 0xd1, 0x6a, 0xeb, - 0x86, 0xd1, 0x6a, 0xec, 0x85, 0xd1, 0x6b, 0xeb, 0x86, 0xd1, 0x6c, 0xec, - 0x85, 0xd1, 0x6c, 0xeb, 0x86, 0xd1, 0x6d, 0xec, 0x85, 0xd1, 0x6e, 0xeb, - 0x86, 0xd1, 0x6e, 0xec, 0x85, 0xd1, 0x6f, 0xeb, 0x86, 0xd1, 0x70, 0xec, - 0x85, 0xd1, 0x70, 0xeb, 0x86, 0xd1, 0x71, 0xec, 0x85, 0xd1, 0x72, 0xeb, - 0x86, 0xd1, 0x72, 0xec, 0x85, 0xd1, 0x73, 0xeb, 0x86, 0xd1, 0x73, 0xec, - 0x85, 0xd1, 0x74, 0xeb, 0x86, 0xd1, 0x75, 0xec, 0x85, 0xd1, 0x75, 0xeb, - 0x86, 0xd1, 0x76, 0xec, 0x85, 0xd1, 0x76, 0xeb, 0x86, 0xd1, 0x77, 0xec, - 0x85, 0xd1, 0x78, 0xeb, 0x86, 0xd1, 0x78, 0xec, 0x85, 0xd1, 0x79, 0xeb, - 0x86, 0xd1, 0x79, 0xea, 0x86, 0xd1, 0x7a, 0xeb, 0x86, 0xd1, 0x7a, 0xea, - 0x86, 0xd1, 0x7b, 0xeb, 0x86, 0xd1, 0x7c, 0xea, 0x86, 0xd1, 0x7c, 0xeb, - 0x86, 0xd1, 0x7d, 0xea, 0x86, 0xd1, 0x7d, 0xeb, 0x86, 0xd1, 0x7e, 0xea, - 0x86, 0xd1, 0x7e, 0xeb, 0x86, 0xd1, 0x7f, 0xea, 0x86, 0xd1, 0x7f, 0xeb, - 0x86, 0xd1, 0x80, 0xea, 0x86, 0xd1, 0x81, 0xeb, 0x86, 0xd1, 0x81, 0xea, - 0x86, 0xd1, 0x82, 0xeb, 0x86, 0xd1, 0x82, 0xea, 0x86, 0xd1, 0x83, 0xeb, - 0x86, 0xd1, 0x83, 0xea, 0x86, 0xd1, 0x84, 0xeb, 0x86, 0xd1, 0x84, 0xea, - 0x86, 0xd1, 0x85, 0xea, 0x87, 0xd1, 0x85, 0xea, 0x86, 0xd1, 0x86, 0xea, - 0x87, 0xd1, 0x85, 0xea, 0x86, 0xd1, 0x86, 0xea, 0x87, 0xd1, 0x85, 0xea, - 0x87, 0xd1, 0x86, 0xea, 0x88, 0xd1, 0x85, 0xea, 0x88, 0xd1, 0x86, 0xea, - 0x89, 0xd1, 0x85, 0xea, 0x89, 0xd1, 0x86, 0xea, 0x8a, 0xd1, 0x86, 0xea, - 0x8a, 0xce, 0x86, 0xea, 0x8b, 0xd1, 0x86, 0xea, 0x8b, 0xce, 0x86, 0xea, - 0x8c, 0xd1, 0x86, 0xea, 0x8c, 0xce, 0x86, 0xea, 0x8d, 0xd1, 0x86, 0xea, - 0x8d, 0xce, 0x86, 0xea, 0x8e, 0xd1, 0x86, 0xea, 0x8e, 0xce, 0x86, 0xea, - 0x8e, 0xd1, 0x86, 0xea, 0x8f, 0xce, 0x86, 0xea, 0x8f, 0xd1, 0x86, 0xea, - 0x90, 0xce, 0x86, 0xea, 0x90, 0xd1, 0x86, 0xea, 0x91, 0xce, 0x86, 0xea, - 0x91, 0xd1, 0x86, 0xea, 0x92, 0xce, 0x86, 0xea, 0x92, 0xd1, 0x86, 0xea, - 0x93, 0xce, 0x86, 0xea, 0x93, 0xd1, 0x86, 0xea, 0x94, 0xce, 0x86, 0xea, - 0x94, 0xd1, 0x86, 0xea, 0x94, 0xce, 0x86, 0xea, 0x95, 0xd1, 0x86, 0xea, - 0x95, 0xce, 0x86, 0xea, 0x96, 0xd1, 0x86, 0xea, 0x96, 0xce, 0x86, 0xea, - 0x97, 0xd1, 0x86, 0xea, 0x97, 0xce, 0x87, 0xea, 0x98, 0xcb, 0x86, 0xea, - 0x98, 0xce, 0x87, 0xea, 0x98, 0xcb, 0x86, 0xea, 0x99, 0xce, 0x87, 0xea, - 0x99, 0xcb, 0x86, 0xea, 0x9a, 0xce, 0x87, 0xea, 0x9a, 0xcb, 0x86, 0xea, - 0x9a, 0xce, 0x87, 0xea, 0x9b, 0xcb, 0x86, 0xea, 0x9b, 0xce, 0x87, 0xea, - 0x9c, 0xcb, 0x86, 0xea, 0x9c, 0xce, 0x87, 0xea, 0x9d, 0xcb, 0x86, 0xea, - 0x9d, 0xce, 0x87, 0xea, 0x9d, 0xcb, 0x86, 0xea, 0x9e, 0xce, 0x87, 0xea, - 0x9e, 0xcb, 0x99, 0xea, 0x9f, 0xeb, 0x99, 0xea, 0x9f, 0xeb, 0x9e, 0xea, - 0x9f, 0xec, 0x9d, 0xea, 0xa0, 0xec, 0x9e, 0xea, 0xa0, 0xec, 0x9d, 0xea, - 0xa1, 0xec, 0x9e, 0xea, 0xa1, 0xec, 0x9d, 0xea, 0xa1, 0xec, 0x9e, 0xea, - 0xa2, 0xec, 0x9d, 0xea, 0xa2, 0xec, 0x9e, 0xea, 0xa3, 0xec, 0x9d, 0xea, - 0xa3, 0xec, 0x9e, 0xea, 0xa3, 0xec, 0xa2, 0xea, 0xa4, 0xed, 0x9e, 0xea, - 0xa4, 0xec, 0xa2, 0xea, 0xa5, 0xed, 0xa2, 0xea, 0xa5, 0xed, 0xa2, 0xea, - 0xa5, 0xed, 0xa2, 0xea, 0xa6, 0xed, 0xa2, 0xea, 0xa6, 0xed, 0xa2, 0xea, - 0xa6, 0xed, 0xa2, 0xea, 0xa7, 0xed, 0xa2, 0xea, 0xa7, 0xed, 0xa2, 0xea, - 0xa8, 0xed, 0xa6, 0xea, 0xa8, 0xee, 0xa2, 0xea, 0xa8, 0xed, 0xa6, 0xea, - 0xa9, 0xee, 0xa6, 0xea, 0xa9, 0xee, 0xa6, 0xea, 0xaa, 0xee, 0xa6, 0xea, - 0xaa, 0xee, 0xa6, 0xea, 0xaa, 0xee, 0xa6, 0xea, 0xab, 0xee, 0xa6, 0xea, - 0xab, 0xee, 0xa6, 0xea, 0xab, 0xee, 0xa6, 0xea, 0xac, 0xee, 0xab, 0xea, - 0xac, 0xef, 0xa6, 0xea, 0xac, 0xee, 0xab, 0xea, 0xad, 0xef, 0xaa, 0xea, - 0xad, 0xef, 0xab, 0xea, 0xae, 0xef, 0xaa, 0xea, 0xae, 0xef, 0xab, 0xea, - 0xae, 0xef, 0xaa, 0xea, 0xaf, 0xef, 0xab, 0xea, 0xaf, 0xef, 0xaa, 0xea, - 0xaf, 0xef, 0xab, 0xea, 0xb0, 0xef, 0xaa, 0xea, 0xb0, 0xef, 0xab, 0xea, - 0xb0, 0xef, 0xaf, 0xea, 0xb1, 0xf0, 0xae, 0xea, 0xb1, 0xf0, 0xaf, 0xea, - 0xb2, 0xf0, 0xae, 0xea, 0xb2, 0xf0, 0xaf, 0xea, 0xb2, 0xf0, 0xae, 0xea, - 0xb3, 0xf0, 0xaf, 0xea, 0xb3, 0xf0, 0xae, 0xea, 0xb3, 0xf0, 0xaf, 0xea, - 0xb4, 0xf0, 0xae, 0xea, 0xb4, 0xf0, 0xaf, 0xea, 0xb4, 0xf0, 0xb3, 0xea, - 0xb5, 0xf1, 0xb2, 0xea, 0xb5, 0xf1, 0xb3, 0xea, 0xb5, 0xf1, 0xb2, 0xea, - 0xb6, 0xf1, 0xb3, 0xea, 0xb6, 0xf1, 0xb2, 0xea, 0xb6, 0xf1, 0xb3, 0xea, - 0xb7, 0xf1, 0xb2, 0xea, 0xb7, 0xf1, 0xb3, 0xea, 0xb7, 0xf1, 0xb2, 0xea, - 0xb8, 0xf1, 0xb3, 0xea, 0xb8, 0xf1, 0xb6, 0xea, 0xb8, 0xf2, 0xcd, 0xea, - 0xb9, 0xd8, 0xcd, 0xea, 0xb9, 0xd5, 0xcd, 0xea, 0xb9, 0xd8, 0xcd, 0xea, - 0xba, 0xd5, 0xcd, 0xea, 0xba, 0xd8, 0xcd, 0xea, 0xba, 0xd5, 0xcd, 0xea, - 0xbb, 0xd8, 0xcd, 0xea, 0xbb, 0xd5, 0xcd, 0xea, 0xbb, 0xd8, 0xcd, 0xea, - 0xbc, 0xd5, 0xcd, 0xea, 0xbc, 0xd8, 0xcd, 0xea, 0xbc, 0xd5, 0xcd, 0xea, - 0xbd, 0xd8, 0xcd, 0xea, 0xbd, 0xd5, 0xcd, 0xea, 0xbd, 0xd8, 0xcd, 0xea, - 0xbe, 0xd5, 0xcd, 0xea, 0xbe, 0xd8, 0xcd, 0xea, 0xbe, 0xd5, 0xcd, 0xea, - 0xbf, 0xd2, 0xcd, 0xea, 0xbf, 0xd5, 0xcd, 0xea, 0xbf, 0xd2, 0xcd, 0xea, - 0xc0, 0xd5, 0xcd, 0xea, 0xc0, 0xd2, 0xcd, 0xea, 0xc0, 0xd5, 0xcd, 0xea, - 0xc1, 0xd2, 0xcd, 0xea, 0xc1, 0xd5, 0xcd, 0xea, 0xc1, 0xd2, 0xcd, 0xea, - 0xc1, 0xd5, 0xcd, 0xea, 0xc2, 0xd2, 0xcd, 0xea, 0xc2, 0xd5, 0xcd, 0xea, - 0xc2, 0xd2, 0xcd, 0xea, 0xc3, 0xd5, 0xcd, 0xea, 0xc3, 0xd2, 0xcd, 0xea, - 0xc3, 0xd5, 0xcd, 0xea, 0xc4, 0xd2, 0xcd, 0xea, 0xc4, 0xd5, 0xcd, 0xea, - 0xc4, 0xd2, 0xcd, 0xea, 0xc5, 0xd5, 0xcd, 0xea, 0xc5, 0xd2, 0xcd, 0xea, - 0xc5, 0xd5, 0xcd, 0xea, 0xc6, 0xd2, 0xcd, 0xea, 0xc6, 0xd5, 0xcd, 0xea, - 0xc6, 0xd2, 0xcd, 0xea, 0xc6, 0xd5, 0xcd, 0xea, 0xc7, 0xd2, 0xcd, 0xea, - 0xc7, 0xd5, 0xcd, 0xea, 0xc7, 0xd2, 0xcd, 0xea, 0xc8, 0xd5, 0xcd, 0xea, - 0xc8, 0xd2, 0xcd, 0xea, 0xc8, 0xd5, 0xcd, 0xea, 0xc9, 0xd2, 0xce, 0xea, - 0xc9, 0xd1, 0xcd, 0xea, 0xc9, 0xd2, 0xce, 0xea, 0xc9, 0xd1, 0xcd, 0xea, - 0xca, 0xd2, 0xce, 0xea, 0xca, 0xd1, 0xcd, 0xea, 0xca, 0xd2, 0xce, 0xea, - 0xcb, 0xd1, 0xcd, 0xea, 0xcb, 0xd2, 0xce, 0xea, 0xcb, 0xd1, 0xcd, 0xea, - 0xcc, 0xd2, 0xce, 0xea, 0xcc, 0xd1, 0xcd, 0xea, 0xcc, 0xd2, 0xce, 0xea, - 0xcc, 0xd1, 0xcd, 0xea, 0xcd, 0xd2, 0xce, 0xea, 0xcd, 0xd1, 0xce, 0xea, - 0xcd, 0xd1, 0xce, 0xea, 0xcd, 0xd1, 0xce, 0xea, 0xcd, 0xd1, 0xce, 0xea, - 0xcd, 0xd1, 0xce, 0xea, 0xcd, 0xd1, 0xcf, 0xe9, 0xce, 0xd1, 0xcf, 0xea, - 0xcd, 0xd1, 0xcf, 0xe9, 0xce, 0xd1, 0xd0, 0xea, 0xcd, 0xd1, 0xd0, 0xe9, - 0xce, 0xd1, 0xd0, 0xea, 0xcd, 0xd1, 0xd0, 0xe9, 0xce, 0xd1, 0xd1, 0xea, - 0xcd, 0xd1, 0xd1, 0xe9, 0xce, 0xd1, 0xd1, 0xea, 0xcd, 0xd1, 0xd2, 0xe9, - 0xce, 0xd1, 0xd2, 0xea, 0xcd, 0xd1, 0xd2, 0xe9, 0xce, 0xd1, 0xd2, 0xea, - 0xcd, 0xd1, 0xd3, 0xe9, 0xce, 0xd1, 0xd3, 0xea, 0xcd, 0xd1, 0xd3, 0xe9, - 0xce, 0xd1, 0xd4, 0xea, 0xcd, 0xd1, 0xd4, 0xe9, 0xce, 0xd1, 0xd4, 0xea, - 0xcd, 0xd1, 0xd4, 0xe9, 0xce, 0xd1, 0xd5, 0xe7, 0xce, 0xd1, 0xd5, 0xe9, - 0xce, 0xd1, 0xd5, 0xe7, 0xce, 0xd1, 0xd6, 0xe9, 0xce, 0xd1, 0xd6, 0xe7, - 0xce, 0xd1, 0xd6, 0xe9, 0xce, 0xd1, 0xd6, 0xe7, 0xce, 0xd1, 0xd7, 0xe9, - 0xce, 0xd1, 0xd7, 0xe7, 0xce, 0xd1, 0xd7, 0xe9, 0xce, 0xd1, 0xd7, 0xe7, - 0xce, 0xd1, 0xd8, 0xe9, 0xce, 0xd1, 0xd8, 0xe7, 0xce, 0xd1, 0xd8, 0xe9, - 0xce, 0xd1, 0xd9, 0xe7, 0xce, 0xd1, 0xd9, 0xe9, 0xce, 0xd1, 0xd9, 0xe7, - 0xce, 0xd1, 0xd9, 0xe9, 0xce, 0xd1, 0xda, 0xe7, 0xce, 0xd1, 0xda, 0xe9, - 0xce, 0xd1, 0xda, 0xe7, 0xce, 0xd1, 0xda, 0xeb, 0xe6, 0xd1, 0xdb, 0xed, - 0xe6, 0xd1, 0xdb, 0xeb, 0xe6, 0xd1, 0xdb, 0xed, 0xe6, 0xd1, 0xdb, 0xeb, - 0xe6, 0xd1, 0xdc, 0xed, 0xe6, 0xd1, 0xdc, 0xeb, 0xe6, 0xd1, 0xdc, 0xed, - 0xe6, 0xd1, 0xdd, 0xeb, 0xe6, 0xd1, 0xdd, 0xea, 0xe6, 0xd1, 0xdd, 0xeb, - 0xe6, 0xd1, 0xdd, 0xea, 0xe6, 0xd1, 0xde, 0xeb, 0xe6, 0xd1, 0xde, 0xea, - 0xe6, 0xd1, 0xde, 0xeb, 0xe6, 0xd1, 0xde, 0xea, 0xe6, 0xd1, 0xdf, 0xeb, - 0xe6, 0xd1, 0xdf, 0xea, 0xe6, 0xd1, 0xdf, 0xeb, 0xe6, 0xd1, 0xdf, 0xea, - 0xe6, 0xd1, 0xe0, 0xeb, 0xe6, 0xd1, 0xe0, 0xea, 0xe6, 0xd1, 0xe0, 0xeb, - 0xe6, 0xd1, 0xe1, 0xea, 0xe6, 0xd1, 0xe1, 0xeb, 0xe6, 0xd1, 0xe1, 0xea, - 0xe6, 0xd1, 0xe1, 0xeb, 0xe6, 0xd1, 0xe2, 0xea, 0xe6, 0xd1, 0xe2, 0xeb, - 0xe6, 0xd1, 0xe2, 0xea, 0xe6, 0xd1, 0xe2, 0xeb, 0xe6, 0xd1, 0xe3, 0xea, - 0xe6, 0xd1, 0xe3, 0xeb, 0xe6, 0xd1, 0xe3, 0xea, 0xe6, 0xd1, 0xe3, 0xeb, - 0xe6, 0xd1, 0xe4, 0xea, 0xe6, 0xd1, 0xe4, 0xeb, 0xe6, 0xd1, 0xe4, 0xea, - 0xe6, 0xd1, 0xe4, 0xea, 0xe6, 0xd1, 0xe5, 0xea, 0xe6, 0xd1, 0xe5, 0xea, - 0xe6, 0xd1, 0xe5, 0xea, 0xe6, 0xd1, 0xe5, 0xea, 0xe6, 0xd1, 0xe6, 0xea, - 0xe6, 0xd1, 0xe6, 0xea, 0xe6, 0xd1, 0xe6, 0xea, 0xe6, 0xd1, 0xe6, 0xea, - 0xe6, 0xd1, 0xe6, 0xea, 0xe7, 0xd1, 0xe6, 0xea, 0xe7, 0xd1, 0xe6, 0xea, - 0xe7, 0xd1, 0xe6, 0xea, 0xe7, 0xd1, 0xe6, 0xea, 0xe8, 0xd1, 0xe6, 0xea, - 0xe8, 0xd1, 0xe6, 0xea, 0xe8, 0xd1, 0xea, 0xea, 0xe8, 0xd1, 0xea, 0xea, - 0xe9, 0xd3, 0xea, 0xea, 0xe9, 0xd1, 0xea, 0xea, 0xe9, 0xd3, 0xea, 0xea, - 0xe9, 0xd1, 0xeb, 0xea, 0xea, 0xd1, 0xea, 0xea, 0xea, 0xd1, 0xeb, 0xea, - 0xea, 0xd1, 0xea, 0xea, 0xea, 0xd1, 0xeb, 0xea, 0xea, 0xd1, 0xeb, 0xea, - 0xea, 0xd1, 0xeb, 0xea, 0xea, 0xd1, 0xeb, 0xe9, 0xea, 0xd1, 0xec, 0xea, - 0xea, 0xd1, 0xec, 0xeb, 0xec, 0xd1, 0xec, 0xeb, 0xec, 0xd1, 0xec, 0xeb, - 0xec, 0xd1, 0xec, 0xeb, 0xec, 0xd1, 0xed, 0xeb, 0xed, 0xd1, 0xed, 0xeb, - 0xec, 0xd1, 0xed, 0xeb, 0xed, 0xd1, 0xed, 0xeb, 0xec, 0xd1, 0xee, 0xeb, - 0xed, 0xd1, 0xee, 0xec, 0xee, 0xd1, 0xee, 0xec, 0xee, 0xd1, 0xee, 0xec, - 0xee, 0xd1, 0xef, 0xec, 0xef, 0xd1, 0xef, 0xec, 0xef, 0xd1, 0xef, 0xec, - 0xef, 0xd1, 0xef, 0xec, 0xef, 0xd1, 0xf0, 0xec, 0xf0, 0xd1, 0xf0, 0xec, - 0xf0, 0xd1, 0xf0, 0xec, 0xf0, 0xd1, 0xf0, 0xec, 0xf0, 0xd1, 0xf1, 0xec, - 0xf0, 0xd1, 0xf1, 0xec, 0xf0, 0xd1, 0xf1, 0xec, 0xf0, 0xd1, 0xf1, 0xec, - 0xf1, 0xd1, 0xf2, 0xec, 0xf0, 0xd1, 0xf2, 0xec, 0xf1, 0xd1, 0xf2, 0xec, - 0xf1, 0xd1, 0xf2, 0xec, 0xf1, 0xd1, 0xf2, 0xec, 0xf1, 0xd1, 0xf3, 0xec, - 0xf1, 0xd1, 0xf3, 0xec, 0xf1, 0xd1, 0xf3, 0xec, 0xf1, 0xd1, 0xf3, 0xec, - 0xf1, 0xd1, 0xf4, 0xec, 0xf1, 0xd1, 0xf4, 0xec, 0xf1, 0xd1, 0xf4, 0xec, - 0xf1, 0xd1, 0xf4, 0xec, 0xf1, 0xd1, 0xf5, 0xec, 0xf1, 0xd1, 0xf5, 0xec, - 0xf1, 0xd1, 0xf5, 0xec, 0xf1, 0xd1, 0xf5, 0xec, 0xf1, 0xd1, 0xf5, 0xec, - 0xf1, 0xd1, 0xf6, 0xec, 0xf1, 0xd1, 0xf6, 0xec, 0xf1, 0xd1, 0xf6, 0xec, - 0xf1, 0xd1, 0xf6, 0xec, 0xf1, 0xd1, 0xf7, 0xec, 0xf1, 0xd1, 0xf7, 0xec, - 0xf1, 0xd1, 0xf7, 0xec, 0xf1, 0xd1, 0xf7, 0xec, 0xf1, 0xd1, 0xf8, 0xec, - 0xf1, 0xd1, 0xf8, 0xec, 0xf1, 0xd1, 0xf8, 0xec, 0xf1, 0xd1, 0xf8, 0xec, - 0xf1, 0xd1, 0xf8, 0xec, 0xf1, 0xd1, 0xf9, 0xec, 0xf1, 0xd1, 0xf9, 0xec, - 0xf1, 0xd1, 0xf9, 0xec, 0xf1, 0xd1, 0xf9, 0xec, 0xf1, 0xd1, 0xfa, 0xec, - 0xf1, 0xd1, 0xfa, 0xec, 0xf1, 0xd1, 0xfa, 0xec, 0xf1, 0xd1, 0xfa, 0xec, - 0xf1, 0xd1, 0xfa, 0xec, 0xf1, 0xd1, 0xfb, 0xec, 0xf1, 0xd1, 0xfb, 0xec, - 0xf1, 0xd1, 0xfb, 0xec, 0xf1, 0xd1, 0xfb, 0xec, 0xf1, 0xd1, 0xfc, 0xec, - 0xf1, 0xd1, 0xfc, 0xec, 0xf1, 0xd1, 0xfc, 0xec, 0xf1, 0xd1, 0xfc, 0xec, - 0xf1, 0xd1, 0xfc, 0xec, 0xf1, 0xd1, 0xfd, 0xec, 0xf1, 0xd1, 0xfd, 0xec, - 0xf1, 0xd1, 0xfd, 0xec, 0xf1, 0xd1, 0xfd, 0xec, 0xf1, 0xd1, 0xfe, 0xec, - 0xf1, 0xd1, 0xfe, 0xec, 0xf1, 0xd1, 0xfe, 0xec, 0xf1, 0xd1, 0xfe, 0xec, - 0xf1, 0xd1, 0xfe, 0xec, 0xf1, 0xd1, 0xff, 0xec, 0xf1, 0xd1, 0xff, 0xec, - 0xf1, 0xd1, 0x03, 0xef, 0x84, 0xd2, 0x0a, 0xee, 0x85, 0xd2, 0x0f, 0xef, - 0x84, 0xd2, 0x14, 0xee, 0x85, 0xd2, 0x17, 0xef, 0x84, 0xd2, 0x1b, 0xee, - 0x85, 0xd2, 0x1e, 0xef, 0x84, 0xd2, 0x20, 0xee, 0x85, 0xd2, 0x23, 0xef, - 0x84, 0xd2, 0x25, 0xee, 0x85, 0xd2, 0x27, 0xef, 0x84, 0xd2, 0x29, 0xee, - 0x85, 0xd2, 0x2b, 0xef, 0x84, 0xd2, 0x2d, 0xee, 0x85, 0xd2, 0x2f, 0xef, - 0x84, 0xd2, 0x31, 0xee, 0x85, 0xd2, 0x32, 0xec, 0x85, 0xd2, 0x34, 0xee, - 0x85, 0xd2, 0x35, 0xec, 0x85, 0xd2, 0x37, 0xee, 0x85, 0xd2, 0x38, 0xec, - 0x85, 0xd2, 0x3a, 0xee, 0x85, 0xd2, 0x3b, 0xec, 0x85, 0xd2, 0x3c, 0xee, - 0x85, 0xd2, 0x3e, 0xec, 0x85, 0xd2, 0x3f, 0xee, 0x85, 0xd2, 0x40, 0xec, - 0x85, 0xd2, 0x42, 0xee, 0x85, 0xd2, 0x43, 0xec, 0x85, 0xd2, 0x44, 0xee, - 0x85, 0xd2, 0x45, 0xec, 0x85, 0xd2, 0x46, 0xee, 0x85, 0xd2, 0x47, 0xec, - 0x85, 0xd2, 0x48, 0xee, 0x85, 0xd2, 0x49, 0xec, 0x85, 0xd2, 0x4a, 0xee, - 0x85, 0xd2, 0x4b, 0xec, 0x85, 0xd2, 0x4c, 0xee, 0x85, 0xd2, 0x4d, 0xec, - 0x85, 0xd2, 0x4e, 0xee, 0x85, 0xd2, 0x4f, 0xec, 0x85, 0xd2, 0x50, 0xee, - 0x85, 0xd2, 0x51, 0xec, 0x85, 0xd2, 0x52, 0xee, 0x85, 0xd2, 0x53, 0xec, - 0x85, 0xd2, 0x54, 0xee, 0x85, 0xd2, 0x55, 0xec, 0x85, 0xd2, 0x56, 0xee, - 0x85, 0xd2, 0x57, 0xec, 0x85, 0xd2, 0x58, 0xee, 0x85, 0xd2, 0x58, 0xec, - 0x85, 0xd2, 0x59, 0xee, 0x85, 0xd2, 0x5a, 0xec, 0x85, 0xd2, 0x5b, 0xee, - 0x85, 0xd2, 0x5c, 0xec, 0x85, 0xd2, 0x5d, 0xee, 0x85, 0xd2, 0x5d, 0xec, - 0x85, 0xd2, 0x5e, 0xeb, 0x86, 0xd2, 0x5f, 0xec, 0x85, 0xd2, 0x60, 0xeb, - 0x86, 0xd2, 0x60, 0xec, 0x85, 0xd2, 0x61, 0xeb, 0x86, 0xd2, 0x62, 0xec, - 0x85, 0xd2, 0x63, 0xeb, 0x86, 0xd2, 0x63, 0xec, 0x85, 0xd2, 0x64, 0xeb, - 0x86, 0xd2, 0x65, 0xec, 0x85, 0xd2, 0x66, 0xeb, 0x86, 0xd2, 0x66, 0xec, - 0x85, 0xd2, 0x67, 0xeb, 0x86, 0xd2, 0x68, 0xec, 0x85, 0xd2, 0x68, 0xeb, - 0x86, 0xd2, 0x69, 0xec, 0x85, 0xd2, 0x6a, 0xeb, 0x86, 0xd2, 0x6a, 0xec, - 0x85, 0xd2, 0x6b, 0xeb, 0x86, 0xd2, 0x6c, 0xec, 0x85, 0xd2, 0x6c, 0xeb, - 0x86, 0xd2, 0x6d, 0xec, 0x85, 0xd2, 0x6e, 0xeb, 0x86, 0xd2, 0x6e, 0xec, - 0x85, 0xd2, 0x6f, 0xeb, 0x86, 0xd2, 0x70, 0xec, 0x85, 0xd2, 0x70, 0xeb, - 0x86, 0xd2, 0x71, 0xec, 0x85, 0xd2, 0x72, 0xeb, 0x86, 0xd2, 0x72, 0xec, - 0x85, 0xd2, 0x73, 0xeb, 0x86, 0xd2, 0x73, 0xec, 0x85, 0xd2, 0x74, 0xeb, - 0x86, 0xd2, 0x75, 0xec, 0x85, 0xd2, 0x75, 0xeb, 0x86, 0xd2, 0x76, 0xec, - 0x85, 0xd2, 0x76, 0xeb, 0x86, 0xd2, 0x77, 0xec, 0x85, 0xd2, 0x78, 0xeb, - 0x86, 0xd2, 0x78, 0xec, 0x85, 0xd2, 0x79, 0xeb, 0x86, 0xd2, 0x79, 0xec, - 0x85, 0xd2, 0x7a, 0xeb, 0x86, 0xd2, 0x7a, 0xec, 0x85, 0xd2, 0x7b, 0xeb, - 0x86, 0xd2, 0x7c, 0xec, 0x85, 0xd2, 0x7c, 0xeb, 0x86, 0xd2, 0x7d, 0xec, - 0x85, 0xd2, 0x7d, 0xeb, 0x86, 0xd2, 0x7e, 0xea, 0x86, 0xd2, 0x7e, 0xeb, - 0x86, 0xd2, 0x7f, 0xea, 0x86, 0xd2, 0x7f, 0xeb, 0x86, 0xd2, 0x80, 0xea, - 0x86, 0xd2, 0x81, 0xeb, 0x86, 0xd2, 0x81, 0xea, 0x86, 0xd2, 0x82, 0xeb, - 0x86, 0xd2, 0x82, 0xea, 0x86, 0xd2, 0x83, 0xeb, 0x86, 0xd2, 0x83, 0xea, - 0x86, 0xd2, 0x84, 0xeb, 0x86, 0xd2, 0x84, 0xea, 0x86, 0xd2, 0x85, 0xeb, - 0x86, 0xd2, 0x85, 0xea, 0x86, 0xd2, 0x86, 0xea, 0x87, 0xd2, 0x85, 0xea, - 0x86, 0xd2, 0x86, 0xea, 0x87, 0xd2, 0x85, 0xea, 0x87, 0xd2, 0x86, 0xea, - 0x88, 0xd2, 0x85, 0xea, 0x88, 0xd2, 0x86, 0xea, 0x89, 0xd2, 0x85, 0xea, - 0x89, 0xd2, 0x86, 0xea, 0x8a, 0xd2, 0x86, 0xea, 0x8a, 0xcf, 0x86, 0xea, - 0x8b, 0xd2, 0x86, 0xea, 0x8b, 0xcf, 0x86, 0xea, 0x8c, 0xd2, 0x86, 0xea, - 0x8c, 0xcf, 0x86, 0xea, 0x8d, 0xd2, 0x86, 0xea, 0x8d, 0xcf, 0x86, 0xea, - 0x8e, 0xd2, 0x86, 0xea, 0x8e, 0xcf, 0x86, 0xea, 0x8e, 0xd2, 0x86, 0xea, - 0x8f, 0xcf, 0x86, 0xea, 0x8f, 0xd2, 0x86, 0xea, 0x90, 0xcf, 0x86, 0xea, - 0x90, 0xd2, 0x86, 0xea, 0x91, 0xcf, 0x86, 0xea, 0x91, 0xd2, 0x86, 0xea, - 0x92, 0xcf, 0x86, 0xea, 0x92, 0xd2, 0x86, 0xea, 0x93, 0xcf, 0x86, 0xea, - 0x93, 0xd2, 0x86, 0xea, 0x94, 0xcf, 0x86, 0xea, 0x94, 0xd2, 0x86, 0xea, - 0x94, 0xcf, 0x86, 0xea, 0x95, 0xd2, 0x86, 0xea, 0x95, 0xcf, 0x86, 0xea, - 0x96, 0xd2, 0x86, 0xea, 0x96, 0xcf, 0x86, 0xea, 0x97, 0xd2, 0x86, 0xea, - 0x97, 0xcf, 0x87, 0xea, 0x98, 0xcc, 0x86, 0xea, 0x98, 0xcf, 0x87, 0xea, - 0x98, 0xcc, 0x86, 0xea, 0x99, 0xcf, 0x87, 0xea, 0x99, 0xcc, 0x86, 0xea, - 0x9a, 0xcf, 0x87, 0xea, 0x9a, 0xcc, 0x86, 0xea, 0x9a, 0xcf, 0x87, 0xea, - 0x9b, 0xcc, 0x86, 0xea, 0x9b, 0xcf, 0x87, 0xea, 0x9c, 0xcc, 0x86, 0xea, - 0x9c, 0xcf, 0x87, 0xea, 0x9d, 0xcc, 0x86, 0xea, 0x9d, 0xcf, 0x87, 0xea, - 0x9d, 0xcc, 0x86, 0xea, 0x9e, 0xcf, 0x9b, 0xea, 0x9e, 0xec, 0x9b, 0xea, - 0x9f, 0xec, 0x9b, 0xea, 0x9f, 0xec, 0x9b, 0xea, 0x9f, 0xec, 0x9b, 0xea, - 0xa0, 0xec, 0x9b, 0xea, 0xa0, 0xec, 0x9b, 0xea, 0xa1, 0xec, 0x9b, 0xea, - 0xa1, 0xec, 0xa0, 0xea, 0xa1, 0xed, 0x9f, 0xea, 0xa2, 0xed, 0xa0, 0xea, - 0xa2, 0xed, 0x9f, 0xea, 0xa3, 0xed, 0xa0, 0xea, 0xa3, 0xed, 0x9f, 0xea, - 0xa3, 0xed, 0xa0, 0xea, 0xa4, 0xed, 0x9f, 0xea, 0xa4, 0xed, 0xa0, 0xea, - 0xa5, 0xed, 0x9f, 0xea, 0xa5, 0xed, 0xa0, 0xea, 0xa5, 0xed, 0xa4, 0xea, - 0xa6, 0xee, 0xa0, 0xea, 0xa6, 0xed, 0xa4, 0xea, 0xa6, 0xee, 0xa4, 0xea, - 0xa7, 0xee, 0xa4, 0xea, 0xa7, 0xee, 0xa4, 0xea, 0xa8, 0xee, 0xa4, 0xea, - 0xa8, 0xee, 0xa4, 0xea, 0xa8, 0xee, 0xa4, 0xea, 0xa9, 0xee, 0xa4, 0xea, - 0xa9, 0xee, 0xa4, 0xea, 0xaa, 0xee, 0xa8, 0xea, 0xaa, 0xef, 0xa4, 0xea, - 0xaa, 0xee, 0xa8, 0xea, 0xab, 0xef, 0xa8, 0xea, 0xab, 0xef, 0xa8, 0xea, - 0xab, 0xef, 0xa8, 0xea, 0xac, 0xef, 0xa8, 0xea, 0xac, 0xef, 0xa8, 0xea, - 0xac, 0xef, 0xa8, 0xea, 0xad, 0xef, 0xa8, 0xea, 0xad, 0xef, 0xa8, 0xea, - 0xae, 0xef, 0xac, 0xea, 0xae, 0xf0, 0xa8, 0xea, 0xae, 0xef, 0xac, 0xea, - 0xaf, 0xf0, 0xac, 0xea, 0xaf, 0xf0, 0xac, 0xea, 0xaf, 0xf0, 0xac, 0xea, - 0xb0, 0xf0, 0xac, 0xea, 0xb0, 0xf0, 0xac, 0xea, 0xb0, 0xf0, 0xac, 0xea, - 0xb1, 0xf0, 0xac, 0xea, 0xb1, 0xf0, 0xac, 0xea, 0xb2, 0xf0, 0xac, 0xea, - 0xb2, 0xf0, 0xac, 0xea, 0xb2, 0xf0, 0xb0, 0xea, 0xb3, 0xf1, 0xb0, 0xea, - 0xb3, 0xf1, 0xb0, 0xea, 0xb3, 0xf1, 0xb0, 0xea, 0xb4, 0xf1, 0xb0, 0xea, - 0xb4, 0xf1, 0xb0, 0xea, 0xb4, 0xf1, 0xb0, 0xea, 0xb5, 0xf1, 0xb0, 0xea, - 0xb5, 0xf1, 0xb0, 0xea, 0xb5, 0xf1, 0xb0, 0xea, 0xb6, 0xf1, 0xb0, 0xea, - 0xb6, 0xf1, 0xb4, 0xea, 0xb6, 0xf2, 0xb4, 0xea, 0xb7, 0xf2, 0xb4, 0xea, - 0xb7, 0xf2, 0xb4, 0xea, 0xb7, 0xf2, 0xb4, 0xea, 0xb8, 0xf2, 0xb4, 0xea, - 0xb8, 0xf2, 0xb4, 0xea, 0xb8, 0xf2, 0xcd, 0xea, 0xb9, 0xd8, 0xcd, 0xea, - 0xb9, 0xd6, 0xcd, 0xea, 0xb9, 0xd8, 0xcd, 0xea, 0xba, 0xd6, 0xcd, 0xea, - 0xba, 0xd8, 0xcd, 0xea, 0xba, 0xd6, 0xcd, 0xea, 0xbb, 0xd8, 0xcd, 0xea, - 0xbb, 0xd6, 0xcd, 0xea, 0xbb, 0xd8, 0xcd, 0xea, 0xbc, 0xd6, 0xcd, 0xea, - 0xbc, 0xd8, 0xcd, 0xea, 0xbc, 0xd6, 0xcd, 0xea, 0xbd, 0xd8, 0xcd, 0xea, - 0xbd, 0xd6, 0xcd, 0xea, 0xbd, 0xd8, 0xcd, 0xea, 0xbe, 0xd6, 0xcd, 0xea, - 0xbe, 0xd8, 0xcd, 0xea, 0xbe, 0xd6, 0xcd, 0xea, 0xbf, 0xd8, 0xcd, 0xea, - 0xbf, 0xd6, 0xcd, 0xea, 0xbf, 0xd8, 0xcd, 0xea, 0xc0, 0xd6, 0xcd, 0xea, - 0xc0, 0xd8, 0xcd, 0xea, 0xc0, 0xd6, 0xcd, 0xea, 0xc1, 0xd8, 0xcd, 0xea, - 0xc1, 0xd6, 0xcd, 0xea, 0xc1, 0xd8, 0xcd, 0xea, 0xc1, 0xd6, 0xcd, 0xea, - 0xc2, 0xd8, 0xcd, 0xea, 0xc2, 0xd6, 0xcd, 0xea, 0xc2, 0xd3, 0xcd, 0xea, - 0xc3, 0xd6, 0xcd, 0xea, 0xc3, 0xd3, 0xcd, 0xea, 0xc3, 0xd6, 0xcd, 0xea, - 0xc4, 0xd3, 0xcd, 0xea, 0xc4, 0xd6, 0xcd, 0xea, 0xc4, 0xd3, 0xcd, 0xea, - 0xc5, 0xd6, 0xcd, 0xea, 0xc5, 0xd3, 0xcd, 0xea, 0xc5, 0xd6, 0xcd, 0xea, - 0xc6, 0xd3, 0xcd, 0xea, 0xc6, 0xd6, 0xcd, 0xea, 0xc6, 0xd3, 0xcd, 0xea, - 0xc6, 0xd6, 0xcd, 0xea, 0xc7, 0xd3, 0xcd, 0xea, 0xc7, 0xd6, 0xcd, 0xea, - 0xc7, 0xd3, 0xcd, 0xea, 0xc8, 0xd6, 0xcd, 0xea, 0xc8, 0xd3, 0xcd, 0xea, - 0xc8, 0xd6, 0xcd, 0xea, 0xc9, 0xd3, 0xce, 0xea, 0xc9, 0xd2, 0xcd, 0xea, - 0xc9, 0xd3, 0xce, 0xea, 0xc9, 0xd2, 0xcd, 0xea, 0xca, 0xd3, 0xce, 0xea, - 0xca, 0xd2, 0xcd, 0xea, 0xca, 0xd3, 0xce, 0xea, 0xcb, 0xd2, 0xcd, 0xea, - 0xcb, 0xd3, 0xce, 0xea, 0xcb, 0xd2, 0xcd, 0xea, 0xcc, 0xd3, 0xce, 0xea, - 0xcc, 0xd2, 0xcd, 0xea, 0xcc, 0xd3, 0xce, 0xea, 0xcc, 0xd2, 0xcd, 0xea, - 0xcd, 0xd3, 0xce, 0xea, 0xcd, 0xd2, 0xce, 0xea, 0xcd, 0xd2, 0xce, 0xea, - 0xcd, 0xd2, 0xce, 0xea, 0xcd, 0xd2, 0xce, 0xea, 0xcd, 0xd2, 0xce, 0xea, - 0xcd, 0xd2, 0xcf, 0xea, 0xcd, 0xd2, 0xcf, 0xea, 0xcd, 0xd2, 0xcf, 0xea, - 0xcd, 0xd2, 0xd0, 0xea, 0xcd, 0xd2, 0xd0, 0xe9, 0xce, 0xd2, 0xd0, 0xea, - 0xcd, 0xd2, 0xd0, 0xe9, 0xce, 0xd2, 0xd1, 0xea, 0xcd, 0xd2, 0xd1, 0xe9, - 0xce, 0xd2, 0xd1, 0xea, 0xcd, 0xd2, 0xd2, 0xe9, 0xce, 0xd2, 0xd2, 0xea, - 0xcd, 0xd2, 0xd2, 0xe9, 0xce, 0xd2, 0xd2, 0xea, 0xcd, 0xd2, 0xd3, 0xe9, - 0xce, 0xd2, 0xd3, 0xea, 0xcd, 0xd2, 0xd3, 0xe9, 0xce, 0xd2, 0xd4, 0xea, - 0xcd, 0xd2, 0xd4, 0xe9, 0xce, 0xd2, 0xd4, 0xea, 0xcd, 0xd2, 0xd4, 0xe9, - 0xce, 0xd2, 0xd5, 0xea, 0xcd, 0xd2, 0xd5, 0xe9, 0xce, 0xd2, 0xd5, 0xea, - 0xcd, 0xd2, 0xd6, 0xe9, 0xce, 0xd2, 0xd6, 0xea, 0xcd, 0xd2, 0xd6, 0xe9, - 0xce, 0xd2, 0xd6, 0xea, 0xcd, 0xd2, 0xd7, 0xe9, 0xce, 0xd2, 0xd7, 0xea, - 0xcd, 0xd2, 0xd7, 0xe9, 0xce, 0xd2, 0xd7, 0xea, 0xcd, 0xd2, 0xd8, 0xe9, - 0xce, 0xd2, 0xd8, 0xe7, 0xce, 0xd2, 0xd8, 0xe9, 0xce, 0xd2, 0xd9, 0xe7, - 0xce, 0xd2, 0xd9, 0xe9, 0xce, 0xd2, 0xd9, 0xe7, 0xce, 0xd2, 0xd9, 0xe9, - 0xce, 0xd2, 0xda, 0xe7, 0xce, 0xd2, 0xda, 0xe9, 0xce, 0xd2, 0xda, 0xec, - 0xe6, 0xd2, 0xda, 0xec, 0xe6, 0xd2, 0xdb, 0xec, 0xe6, 0xd2, 0xdb, 0xec, - 0xe6, 0xd2, 0xdb, 0xec, 0xe6, 0xd2, 0xdb, 0xec, 0xe6, 0xd2, 0xdc, 0xec, - 0xe6, 0xd2, 0xdc, 0xec, 0xe6, 0xd2, 0xdc, 0xec, 0xe6, 0xd2, 0xdd, 0xec, - 0xe6, 0xd2, 0xdd, 0xec, 0xe6, 0xd2, 0xdd, 0xec, 0xe6, 0xd2, 0xdd, 0xec, - 0xe6, 0xd2, 0xde, 0xec, 0xe6, 0xd2, 0xde, 0xec, 0xe6, 0xd2, 0xde, 0xec, - 0xe6, 0xd2, 0xde, 0xec, 0xe6, 0xd2, 0xdf, 0xec, 0xe6, 0xd2, 0xdf, 0xec, - 0xe6, 0xd2, 0xdf, 0xec, 0xe6, 0xd2, 0xdf, 0xec, 0xe6, 0xd2, 0xe0, 0xec, - 0xe6, 0xd2, 0xe0, 0xea, 0xe6, 0xd2, 0xe0, 0xec, 0xe6, 0xd2, 0xe1, 0xea, - 0xe6, 0xd2, 0xe1, 0xec, 0xe6, 0xd2, 0xe1, 0xea, 0xe6, 0xd2, 0xe1, 0xec, - 0xe6, 0xd2, 0xe2, 0xea, 0xe6, 0xd2, 0xe2, 0xec, 0xe6, 0xd2, 0xe2, 0xea, - 0xe6, 0xd2, 0xe2, 0xec, 0xe6, 0xd2, 0xe3, 0xea, 0xe6, 0xd2, 0xe3, 0xec, - 0xe6, 0xd2, 0xe3, 0xea, 0xe6, 0xd2, 0xe3, 0xec, 0xe6, 0xd2, 0xe4, 0xea, - 0xe6, 0xd2, 0xe4, 0xec, 0xe6, 0xd2, 0xe4, 0xea, 0xe6, 0xd2, 0xe4, 0xea, - 0xe6, 0xd2, 0xe5, 0xea, 0xe6, 0xd2, 0xe5, 0xea, 0xe6, 0xd2, 0xe5, 0xea, - 0xe6, 0xd2, 0xe5, 0xea, 0xe6, 0xd2, 0xe6, 0xea, 0xe6, 0xd2, 0xe6, 0xea, - 0xe6, 0xd2, 0xe6, 0xea, 0xe6, 0xd1, 0xe6, 0xea, 0xe6, 0xd2, 0xe6, 0xea, - 0xe7, 0xd1, 0xe6, 0xea, 0xe7, 0xd2, 0xe6, 0xea, 0xe7, 0xd1, 0xe6, 0xea, - 0xe7, 0xd2, 0xe8, 0xea, 0xe8, 0xd5, 0xe6, 0xea, 0xe8, 0xd2, 0xe8, 0xea, - 0xe8, 0xd5, 0xea, 0xea, 0xe8, 0xd2, 0xe8, 0xea, 0xe9, 0xd5, 0xea, 0xea, - 0xe9, 0xd2, 0xeb, 0xea, 0xe9, 0xd2, 0xea, 0xea, 0xe9, 0xd2, 0xeb, 0xea, - 0xea, 0xd2, 0xea, 0xea, 0xea, 0xd2, 0xeb, 0xea, 0xea, 0xd2, 0xea, 0xea, - 0xea, 0xd2, 0xeb, 0xea, 0xea, 0xd2, 0xeb, 0xea, 0xea, 0xd2, 0xeb, 0xea, - 0xea, 0xd2, 0xeb, 0xeb, 0xeb, 0xd2, 0xec, 0xeb, 0xeb, 0xd2, 0xec, 0xeb, - 0xeb, 0xd2, 0xec, 0xeb, 0xeb, 0xd2, 0xec, 0xec, 0xec, 0xd2, 0xec, 0xec, - 0xec, 0xd2, 0xed, 0xec, 0xed, 0xd2, 0xed, 0xec, 0xed, 0xd2, 0xed, 0xec, - 0xed, 0xd2, 0xed, 0xec, 0xed, 0xd2, 0xee, 0xec, 0xee, 0xd2, 0xee, 0xec, - 0xee, 0xd2, 0xee, 0xec, 0xee, 0xd2, 0xee, 0xec, 0xee, 0xd2, 0xef, 0xec, - 0xee, 0xd2, 0xef, 0xec, 0xee, 0xd2, 0xef, 0xec, 0xee, 0xd2, 0xef, 0xec, - 0xee, 0xd2, 0xf0, 0xec, 0xf0, 0xd2, 0xf0, 0xec, 0xf0, 0xd2, 0xf0, 0xec, - 0xf0, 0xd2, 0xf0, 0xec, 0xf0, 0xd2, 0xf1, 0xec, 0xf1, 0xd2, 0xf1, 0xec, - 0xf1, 0xd2, 0xf1, 0xec, 0xf1, 0xd2, 0xf1, 0xec, 0xf1, 0xd2, 0xf2, 0xec, - 0xf1, 0xd2, 0xf2, 0xec, 0xf1, 0xd2, 0xf2, 0xec, 0xf1, 0xd2, 0xf2, 0xec, - 0xf1, 0xd2, 0xf2, 0xec, 0xf1, 0xd2, 0xf3, 0xec, 0xf1, 0xd2, 0xf3, 0xec, - 0xf1, 0xd2, 0xf3, 0xec, 0xf1, 0xd2, 0xf3, 0xec, 0xf1, 0xd2, 0xf4, 0xec, - 0xf1, 0xd2, 0xf4, 0xec, 0xf1, 0xd2, 0xf4, 0xec, 0xf1, 0xd2, 0xf4, 0xec, - 0xf1, 0xd2, 0xf5, 0xec, 0xf1, 0xd2, 0xf5, 0xec, 0xf1, 0xd2, 0xf5, 0xec, - 0xf1, 0xd2, 0xf5, 0xec, 0xf1, 0xd2, 0xf5, 0xec, 0xf1, 0xd2, 0xf6, 0xec, - 0xf1, 0xd2, 0xf6, 0xec, 0xf1, 0xd2, 0xf6, 0xec, 0xf1, 0xd2, 0xf6, 0xec, - 0xf1, 0xd2, 0xf7, 0xec, 0xf1, 0xd2, 0xf7, 0xec, 0xf1, 0xd2, 0xf7, 0xec, - 0xf1, 0xd2, 0xf7, 0xec, 0xf1, 0xd2, 0xf8, 0xec, 0xf1, 0xd2, 0xf8, 0xec, - 0xf1, 0xd2, 0xf8, 0xec, 0xf1, 0xd2, 0xf8, 0xec, 0xf1, 0xd2, 0xf8, 0xec, - 0xf1, 0xd2, 0xf9, 0xec, 0xf1, 0xd2, 0xf9, 0xec, 0xf1, 0xd2, 0xf9, 0xec, - 0xf1, 0xd2, 0xf9, 0xec, 0xf1, 0xd2, 0xfa, 0xec, 0xf1, 0xd2, 0xfa, 0xec, - 0xf1, 0xd2, 0xfa, 0xec, 0xf1, 0xd2, 0xfa, 0xec, 0xf1, 0xd2, 0xfa, 0xec, - 0xf1, 0xd2, 0xfb, 0xec, 0xf1, 0xd2, 0xfb, 0xec, 0xf1, 0xd2, 0xfb, 0xec, - 0xf1, 0xd2, 0xfb, 0xec, 0xf1, 0xd2, 0xfc, 0xec, 0xf1, 0xd2, 0xfc, 0xec, - 0xf1, 0xd2, 0xfc, 0xec, 0xf1, 0xd2, 0xfc, 0xec, 0xf1, 0xd2, 0xfc, 0xec, - 0xf1, 0xd2, 0xfd, 0xec, 0xf1, 0xd2, 0xfd, 0xec, 0xf1, 0xd2, 0xfd, 0xec, - 0xf1, 0xd2, 0xfd, 0xec, 0xf1, 0xd2, 0xfe, 0xec, 0xf1, 0xd2, 0xfe, 0xec, - 0xf1, 0xd2, 0xfe, 0xec, 0xf1, 0xd2, 0xfe, 0xec, 0xf1, 0xd2, 0xfe, 0xec, - 0xf1, 0xd2, 0xff, 0xec, 0xf1, 0xd2, 0xff, 0xec, 0xf1, 0xd2, 0x03, 0xef, - 0x84, 0xd2, 0x0a, 0xee, 0x85, 0xd2, 0x0f, 0xef, 0x84, 0xd2, 0x14, 0xee, - 0x85, 0xd2, 0x17, 0xef, 0x84, 0xd2, 0x1b, 0xee, 0x85, 0xd2, 0x1e, 0xef, - 0x84, 0xd2, 0x20, 0xee, 0x85, 0xd2, 0x23, 0xef, 0x84, 0xd2, 0x25, 0xee, - 0x85, 0xd2, 0x27, 0xef, 0x84, 0xd2, 0x29, 0xee, 0x85, 0xd2, 0x2b, 0xef, - 0x84, 0xd2, 0x2d, 0xee, 0x85, 0xd2, 0x2f, 0xef, 0x84, 0xd2, 0x31, 0xee, - 0x85, 0xd2, 0x32, 0xef, 0x84, 0xd2, 0x34, 0xee, 0x85, 0xd2, 0x35, 0xef, - 0x84, 0xd2, 0x37, 0xee, 0x85, 0xd2, 0x38, 0xef, 0x84, 0xd2, 0x3a, 0xee, - 0x85, 0xd2, 0x3b, 0xef, 0x84, 0xd2, 0x3c, 0xee, 0x85, 0xd2, 0x3e, 0xef, - 0x84, 0xd2, 0x3f, 0xee, 0x85, 0xd2, 0x40, 0xef, 0x84, 0xd2, 0x42, 0xee, - 0x85, 0xd2, 0x43, 0xef, 0x84, 0xd2, 0x44, 0xee, 0x85, 0xd2, 0x45, 0xef, - 0x84, 0xd2, 0x46, 0xee, 0x85, 0xd2, 0x47, 0xef, 0x84, 0xd2, 0x48, 0xee, - 0x85, 0xd2, 0x49, 0xef, 0x84, 0xd2, 0x4a, 0xee, 0x85, 0xd2, 0x4b, 0xec, - 0x85, 0xd2, 0x4c, 0xee, 0x85, 0xd2, 0x4d, 0xec, 0x85, 0xd2, 0x4e, 0xee, - 0x85, 0xd2, 0x4f, 0xec, 0x85, 0xd2, 0x50, 0xee, 0x85, 0xd2, 0x51, 0xec, - 0x85, 0xd2, 0x52, 0xee, 0x85, 0xd2, 0x53, 0xec, 0x85, 0xd2, 0x54, 0xee, - 0x85, 0xd2, 0x55, 0xec, 0x85, 0xd2, 0x56, 0xee, 0x85, 0xd2, 0x57, 0xec, - 0x85, 0xd2, 0x58, 0xee, 0x85, 0xd2, 0x58, 0xec, 0x85, 0xd2, 0x59, 0xee, - 0x85, 0xd2, 0x5a, 0xec, 0x85, 0xd2, 0x5b, 0xee, 0x85, 0xd2, 0x5c, 0xec, - 0x85, 0xd2, 0x5d, 0xee, 0x85, 0xd2, 0x5d, 0xec, 0x85, 0xd2, 0x5e, 0xee, - 0x85, 0xd2, 0x5f, 0xec, 0x85, 0xd2, 0x60, 0xee, 0x85, 0xd2, 0x60, 0xec, - 0x85, 0xd2, 0x61, 0xee, 0x85, 0xd2, 0x62, 0xec, 0x85, 0xd2, 0x63, 0xee, - 0x85, 0xd2, 0x63, 0xec, 0x85, 0xd2, 0x64, 0xee, 0x85, 0xd2, 0x65, 0xec, - 0x85, 0xd2, 0x66, 0xee, 0x85, 0xd2, 0x66, 0xec, 0x85, 0xd2, 0x67, 0xee, - 0x85, 0xd2, 0x68, 0xec, 0x85, 0xd2, 0x68, 0xee, 0x85, 0xd2, 0x69, 0xec, - 0x85, 0xd2, 0x6a, 0xeb, 0x86, 0xd2, 0x6a, 0xec, 0x85, 0xd2, 0x6b, 0xeb, - 0x86, 0xd2, 0x6c, 0xec, 0x85, 0xd2, 0x6c, 0xeb, 0x86, 0xd2, 0x6d, 0xec, - 0x85, 0xd2, 0x6e, 0xeb, 0x86, 0xd2, 0x6e, 0xec, 0x85, 0xd2, 0x6f, 0xeb, - 0x86, 0xd2, 0x70, 0xec, 0x85, 0xd2, 0x70, 0xeb, 0x86, 0xd2, 0x71, 0xec, - 0x85, 0xd2, 0x72, 0xeb, 0x86, 0xd2, 0x72, 0xec, 0x85, 0xd2, 0x73, 0xeb, - 0x86, 0xd2, 0x73, 0xec, 0x85, 0xd2, 0x74, 0xeb, 0x86, 0xd2, 0x75, 0xec, - 0x85, 0xd2, 0x75, 0xeb, 0x86, 0xd2, 0x76, 0xec, 0x85, 0xd2, 0x76, 0xeb, - 0x86, 0xd2, 0x77, 0xec, 0x85, 0xd2, 0x78, 0xeb, 0x86, 0xd2, 0x78, 0xec, - 0x85, 0xd2, 0x79, 0xeb, 0x86, 0xd2, 0x79, 0xec, 0x85, 0xd2, 0x7a, 0xeb, - 0x86, 0xd2, 0x7a, 0xec, 0x85, 0xd2, 0x7b, 0xeb, 0x86, 0xd2, 0x7c, 0xec, - 0x85, 0xd2, 0x7c, 0xeb, 0x86, 0xd2, 0x7d, 0xec, 0x85, 0xd2, 0x7d, 0xeb, - 0x86, 0xd2, 0x7e, 0xea, 0x86, 0xd2, 0x7e, 0xeb, 0x86, 0xd2, 0x7f, 0xea, - 0x86, 0xd2, 0x7f, 0xeb, 0x86, 0xd2, 0x80, 0xea, 0x86, 0xd2, 0x81, 0xeb, - 0x86, 0xd2, 0x81, 0xea, 0x86, 0xd2, 0x82, 0xeb, 0x86, 0xd2, 0x82, 0xea, - 0x86, 0xd2, 0x83, 0xeb, 0x86, 0xd2, 0x83, 0xea, 0x86, 0xd2, 0x84, 0xeb, - 0x86, 0xd2, 0x84, 0xea, 0x86, 0xd2, 0x85, 0xeb, 0x86, 0xd2, 0x85, 0xea, - 0x86, 0xd2, 0x86, 0xea, 0x87, 0xd2, 0x85, 0xea, 0x86, 0xd2, 0x86, 0xea, - 0x87, 0xd2, 0x85, 0xea, 0x87, 0xd2, 0x86, 0xea, 0x88, 0xd2, 0x85, 0xea, - 0x88, 0xd2, 0x86, 0xea, 0x89, 0xd2, 0x85, 0xea, 0x89, 0xd2, 0x86, 0xea, - 0x8a, 0xd2, 0x85, 0xea, 0x8a, 0xd2, 0x86, 0xea, 0x8b, 0xd2, 0x85, 0xea, - 0x8b, 0xd2, 0x86, 0xea, 0x8c, 0xd2, 0x85, 0xea, 0x8c, 0xd2, 0x86, 0xea, - 0x8d, 0xd2, 0x85, 0xea, 0x8d, 0xd2, 0x86, 0xea, 0x8e, 0xd2, 0x86, 0xea, - 0x8e, 0xce, 0x86, 0xea, 0x8e, 0xd2, 0x86, 0xea, 0x8f, 0xce, 0x86, 0xea, - 0x8f, 0xd2, 0x86, 0xea, 0x90, 0xce, 0x86, 0xea, 0x90, 0xd2, 0x86, 0xea, - 0x91, 0xce, 0x86, 0xea, 0x91, 0xd2, 0x86, 0xea, 0x92, 0xce, 0x86, 0xea, - 0x92, 0xd2, 0x86, 0xea, 0x93, 0xce, 0x86, 0xea, 0x93, 0xd2, 0x86, 0xea, - 0x94, 0xce, 0x86, 0xea, 0x94, 0xd2, 0x86, 0xea, 0x94, 0xce, 0x86, 0xea, - 0x95, 0xd2, 0x86, 0xea, 0x95, 0xce, 0x86, 0xea, 0x96, 0xd2, 0x86, 0xea, - 0x96, 0xce, 0x86, 0xea, 0x97, 0xd2, 0x86, 0xea, 0x97, 0xce, 0x86, 0xea, - 0x98, 0xd2, 0x86, 0xea, 0x98, 0xce, 0x86, 0xea, 0x98, 0xd2, 0x86, 0xea, - 0x99, 0xce, 0x86, 0xea, 0x99, 0xd2, 0x86, 0xea, 0x9a, 0xce, 0x86, 0xea, - 0x9a, 0xd2, 0x86, 0xea, 0x9a, 0xce, 0x86, 0xea, 0x9b, 0xd2, 0x86, 0xea, - 0x9b, 0xce, 0x86, 0xea, 0x9c, 0xd2, 0x86, 0xea, 0x9c, 0xce, 0x87, 0xea, - 0x9d, 0xcb, 0x86, 0xea, 0x9d, 0xce, 0x99, 0xea, 0x9d, 0xeb, 0x99, 0xea, - 0x9e, 0xeb, 0x99, 0xea, 0x9e, 0xeb, 0x99, 0xea, 0x9f, 0xeb, 0x99, 0xea, - 0x9f, 0xeb, 0x9e, 0xea, 0x9f, 0xec, 0x9d, 0xea, 0xa0, 0xec, 0x9e, 0xea, - 0xa0, 0xec, 0x9d, 0xea, 0xa1, 0xec, 0x9e, 0xea, 0xa1, 0xec, 0x9d, 0xea, - 0xa1, 0xec, 0x9e, 0xea, 0xa2, 0xec, 0x9d, 0xea, 0xa2, 0xec, 0x9e, 0xea, - 0xa3, 0xec, 0x9d, 0xea, 0xa3, 0xec, 0x9e, 0xea, 0xa3, 0xec, 0xa2, 0xea, - 0xa4, 0xed, 0xa2, 0xea, 0xa4, 0xed, 0xa2, 0xea, 0xa5, 0xed, 0xa2, 0xea, - 0xa5, 0xed, 0xa2, 0xea, 0xa5, 0xed, 0xa2, 0xea, 0xa6, 0xed, 0xa2, 0xea, - 0xa6, 0xed, 0xa2, 0xea, 0xa6, 0xed, 0xa2, 0xea, 0xa7, 0xed, 0xa2, 0xea, - 0xa7, 0xed, 0xa2, 0xea, 0xa8, 0xed, 0xa6, 0xea, 0xa8, 0xee, 0xa2, 0xea, - 0xa8, 0xed, 0xa6, 0xea, 0xa9, 0xee, 0xa6, 0xea, 0xa9, 0xee, 0xa6, 0xea, - 0xaa, 0xee, 0xa6, 0xea, 0xaa, 0xee, 0xa6, 0xea, 0xaa, 0xee, 0xa6, 0xea, - 0xab, 0xee, 0xa6, 0xea, 0xab, 0xee, 0xa6, 0xea, 0xab, 0xee, 0xa6, 0xea, - 0xac, 0xee, 0xab, 0xea, 0xac, 0xef, 0xa6, 0xea, 0xac, 0xee, 0xab, 0xea, - 0xad, 0xef, 0xaa, 0xea, 0xad, 0xef, 0xab, 0xea, 0xae, 0xef, 0xaa, 0xea, - 0xae, 0xef, 0xab, 0xea, 0xae, 0xef, 0xaa, 0xea, 0xaf, 0xef, 0xab, 0xea, - 0xaf, 0xef, 0xaa, 0xea, 0xaf, 0xef, 0xab, 0xea, 0xb0, 0xef, 0xaf, 0xea, - 0xb0, 0xf0, 0xab, 0xea, 0xb0, 0xef, 0xaf, 0xea, 0xb1, 0xf0, 0xae, 0xea, - 0xb1, 0xf0, 0xaf, 0xea, 0xb2, 0xf0, 0xae, 0xea, 0xb2, 0xf0, 0xaf, 0xea, - 0xb2, 0xf0, 0xae, 0xea, 0xb3, 0xf0, 0xaf, 0xea, 0xb3, 0xf0, 0xae, 0xea, - 0xb3, 0xf0, 0xaf, 0xea, 0xb4, 0xf0, 0xae, 0xea, 0xb4, 0xf0, 0xaf, 0xea, - 0xb4, 0xf0, 0xb3, 0xea, 0xb5, 0xf1, 0xb2, 0xea, 0xb5, 0xf1, 0xb3, 0xea, - 0xb5, 0xf1, 0xb2, 0xea, 0xb6, 0xf1, 0xb3, 0xea, 0xb6, 0xf1, 0xb2, 0xea, - 0xb6, 0xf1, 0xb3, 0xea, 0xb7, 0xf1, 0xb2, 0xea, 0xb7, 0xf1, 0xb3, 0xea, - 0xb7, 0xf1, 0xb2, 0xea, 0xb8, 0xf1, 0xb3, 0xea, 0xb8, 0xf1, 0xb6, 0xea, - 0xb8, 0xf2, 0xb6, 0xea, 0xb9, 0xf2, 0xcd, 0xea, 0xb9, 0xd5, 0xcd, 0xea, - 0xb9, 0xd8, 0xcd, 0xea, 0xba, 0xd5, 0xcd, 0xea, 0xba, 0xd8, 0xcd, 0xea, - 0xba, 0xd5, 0xcd, 0xea, 0xbb, 0xd8, 0xcd, 0xea, 0xbb, 0xd5, 0xcd, 0xea, - 0xbb, 0xd8, 0xcd, 0xea, 0xbc, 0xd5, 0xcd, 0xea, 0xbc, 0xd8, 0xcd, 0xea, - 0xbc, 0xd5, 0xcd, 0xea, 0xbd, 0xd8, 0xcd, 0xea, 0xbd, 0xd5, 0xcd, 0xea, - 0xbd, 0xd8, 0xcd, 0xea, 0xbe, 0xd5, 0xcd, 0xea, 0xbe, 0xd8, 0xcd, 0xea, - 0xbe, 0xd5, 0xcd, 0xea, 0xbf, 0xd8, 0xcd, 0xea, 0xbf, 0xd5, 0xcd, 0xea, - 0xbf, 0xd8, 0xcd, 0xea, 0xc0, 0xd5, 0xcd, 0xea, 0xc0, 0xd8, 0xcd, 0xea, - 0xc0, 0xd5, 0xcd, 0xea, 0xc1, 0xd8, 0xcd, 0xea, 0xc1, 0xd5, 0xcd, 0xea, - 0xc1, 0xd8, 0xcd, 0xea, 0xc1, 0xd5, 0xcd, 0xea, 0xc2, 0xd8, 0xcd, 0xea, - 0xc2, 0xd5, 0xcd, 0xea, 0xc2, 0xd2, 0xcd, 0xea, 0xc3, 0xd5, 0xcd, 0xea, - 0xc3, 0xd2, 0xcd, 0xea, 0xc3, 0xd5, 0xcd, 0xea, 0xc4, 0xd2, 0xcd, 0xea, - 0xc4, 0xd5, 0xcd, 0xea, 0xc4, 0xd2, 0xcd, 0xea, 0xc5, 0xd5, 0xcd, 0xea, - 0xc5, 0xd2, 0xcd, 0xea, 0xc5, 0xd5, 0xcd, 0xea, 0xc6, 0xd2, 0xcd, 0xea, - 0xc6, 0xd5, 0xcd, 0xea, 0xc6, 0xd2, 0xcd, 0xea, 0xc6, 0xd5, 0xcd, 0xea, - 0xc7, 0xd2, 0xcd, 0xea, 0xc7, 0xd5, 0xcd, 0xea, 0xc7, 0xd2, 0xcd, 0xea, - 0xc8, 0xd5, 0xcd, 0xea, 0xc8, 0xd2, 0xcd, 0xea, 0xc8, 0xd5, 0xcd, 0xea, - 0xc9, 0xd2, 0xcd, 0xea, 0xc9, 0xd5, 0xcd, 0xea, 0xc9, 0xd2, 0xcd, 0xea, - 0xc9, 0xd5, 0xcd, 0xea, 0xca, 0xd2, 0xcd, 0xea, 0xca, 0xd5, 0xcd, 0xea, - 0xca, 0xd2, 0xcd, 0xea, 0xcb, 0xd5, 0xcd, 0xea, 0xcb, 0xd2, 0xce, 0xea, - 0xcb, 0xd2, 0xcd, 0xea, 0xcc, 0xd2, 0xce, 0xea, 0xcc, 0xd2, 0xcd, 0xea, - 0xcc, 0xd2, 0xce, 0xea, 0xcc, 0xd2, 0xcd, 0xea, 0xcd, 0xd2, 0xce, 0xea, - 0xcd, 0xd2, 0xcd, 0xea, 0xcd, 0xd2, 0xce, 0xea, 0xcd, 0xd2, 0xce, 0xea, - 0xcd, 0xd2, 0xce, 0xea, 0xcd, 0xd2, 0xce, 0xea, 0xcd, 0xd2, 0xcf, 0xea, - 0xcd, 0xd2, 0xcf, 0xea, 0xcd, 0xd2, 0xcf, 0xea, 0xcd, 0xd2, 0xd0, 0xea, - 0xcd, 0xd2, 0xd0, 0xe9, 0xce, 0xd2, 0xd0, 0xea, 0xcd, 0xd2, 0xd0, 0xe9, - 0xce, 0xd2, 0xd1, 0xea, 0xcd, 0xd2, 0xd1, 0xe9, 0xce, 0xd2, 0xd1, 0xea, - 0xcd, 0xd2, 0xd2, 0xe9, 0xce, 0xd2, 0xd2, 0xea, 0xcd, 0xd2, 0xd2, 0xe9, - 0xce, 0xd2, 0xd2, 0xea, 0xcd, 0xd2, 0xd3, 0xe9, 0xce, 0xd2, 0xd3, 0xea, - 0xcd, 0xd2, 0xd3, 0xe9, 0xce, 0xd2, 0xd4, 0xea, 0xcd, 0xd2, 0xd4, 0xe9, - 0xce, 0xd2, 0xd4, 0xea, 0xcd, 0xd2, 0xd4, 0xe9, 0xce, 0xd2, 0xd5, 0xea, - 0xcd, 0xd2, 0xd5, 0xe9, 0xce, 0xd2, 0xd5, 0xea, 0xcd, 0xd2, 0xd6, 0xe9, - 0xce, 0xd2, 0xd6, 0xea, 0xcd, 0xd2, 0xd6, 0xe9, 0xce, 0xd2, 0xd6, 0xea, - 0xcd, 0xd2, 0xd7, 0xe9, 0xce, 0xd2, 0xd7, 0xea, 0xcd, 0xd2, 0xd7, 0xe9, - 0xce, 0xd2, 0xd7, 0xea, 0xcd, 0xd2, 0xd8, 0xe9, 0xce, 0xd2, 0xd8, 0xe7, - 0xce, 0xd2, 0xd8, 0xe9, 0xce, 0xd2, 0xd9, 0xe7, 0xce, 0xd2, 0xd9, 0xe9, - 0xce, 0xd2, 0xd9, 0xe7, 0xce, 0xd2, 0xd9, 0xe9, 0xce, 0xd2, 0xda, 0xe7, - 0xce, 0xd2, 0xda, 0xe9, 0xce, 0xd2, 0xda, 0xed, 0xe6, 0xd2, 0xda, 0xeb, - 0xe6, 0xd2, 0xdb, 0xed, 0xe6, 0xd2, 0xdb, 0xeb, 0xe6, 0xd2, 0xdb, 0xed, - 0xe6, 0xd2, 0xdb, 0xeb, 0xe6, 0xd2, 0xdc, 0xed, 0xe6, 0xd2, 0xdc, 0xeb, - 0xe6, 0xd2, 0xdc, 0xed, 0xe6, 0xd2, 0xdd, 0xeb, 0xe6, 0xd2, 0xdd, 0xed, - 0xe6, 0xd2, 0xdd, 0xeb, 0xe6, 0xd2, 0xdd, 0xed, 0xe6, 0xd2, 0xde, 0xeb, - 0xe6, 0xd2, 0xde, 0xed, 0xe6, 0xd2, 0xde, 0xeb, 0xe6, 0xd2, 0xde, 0xed, - 0xe6, 0xd2, 0xdf, 0xeb, 0xe6, 0xd2, 0xdf, 0xed, 0xe6, 0xd2, 0xdf, 0xeb, - 0xe6, 0xd2, 0xdf, 0xed, 0xe6, 0xd2, 0xe0, 0xeb, 0xe6, 0xd2, 0xe0, 0xea, - 0xe6, 0xd2, 0xe0, 0xeb, 0xe6, 0xd2, 0xe1, 0xea, 0xe6, 0xd2, 0xe1, 0xeb, - 0xe6, 0xd2, 0xe1, 0xea, 0xe6, 0xd2, 0xe1, 0xeb, 0xe6, 0xd2, 0xe2, 0xea, - 0xe6, 0xd2, 0xe2, 0xeb, 0xe6, 0xd2, 0xe2, 0xea, 0xe6, 0xd2, 0xe2, 0xeb, - 0xe6, 0xd2, 0xe3, 0xea, 0xe6, 0xd2, 0xe3, 0xeb, 0xe6, 0xd2, 0xe3, 0xea, - 0xe6, 0xd2, 0xe3, 0xeb, 0xe6, 0xd2, 0xe4, 0xea, 0xe6, 0xd2, 0xe4, 0xeb, - 0xe6, 0xd2, 0xe4, 0xea, 0xe6, 0xd2, 0xe4, 0xeb, 0xe6, 0xd2, 0xe5, 0xea, - 0xe6, 0xd2, 0xe5, 0xeb, 0xe6, 0xd2, 0xe5, 0xea, 0xe6, 0xd2, 0xe5, 0xea, - 0xe6, 0xd2, 0xe6, 0xea, 0xe6, 0xd2, 0xe6, 0xea, 0xe6, 0xd2, 0xe6, 0xea, - 0xe6, 0xd1, 0xe6, 0xea, 0xe6, 0xd2, 0xe6, 0xea, 0xe7, 0xd1, 0xe6, 0xea, - 0xe7, 0xd2, 0xe6, 0xea, 0xe7, 0xd1, 0xe6, 0xea, 0xe7, 0xd2, 0xe8, 0xea, - 0xe8, 0xd5, 0xe8, 0xea, 0xe8, 0xd5, 0xe8, 0xea, 0xe8, 0xd5, 0xe8, 0xea, - 0xe8, 0xd5, 0xe9, 0xea, 0xe9, 0xd5, 0xea, 0xea, 0xe9, 0xd2, 0xea, 0xea, - 0xe9, 0xd3, 0xea, 0xea, 0xe9, 0xd2, 0xea, 0xea, 0xea, 0xd3, 0xea, 0xea, - 0xea, 0xd2, 0xeb, 0xea, 0xea, 0xd2, 0xea, 0xea, 0xea, 0xd2, 0xeb, 0xea, - 0xea, 0xd2, 0xeb, 0xea, 0xea, 0xd2, 0xeb, 0xea, 0xea, 0xd2, 0xeb, 0xeb, - 0xeb, 0xd2, 0xec, 0xeb, 0xec, 0xd2, 0xec, 0xeb, 0xec, 0xd2, 0xec, 0xeb, - 0xec, 0xd2, 0xec, 0xeb, 0xec, 0xd2, 0xec, 0xeb, 0xec, 0xd2, 0xed, 0xeb, - 0xed, 0xd2, 0xed, 0xeb, 0xec, 0xd2, 0xed, 0xeb, 0xed, 0xd2, 0xed, 0xeb, - 0xec, 0xd2, 0xee, 0xeb, 0xed, 0xd2, 0xee, 0xec, 0xee, 0xd2, 0xee, 0xec, - 0xee, 0xd2, 0xee, 0xec, 0xee, 0xd2, 0xef, 0xec, 0xef, 0xd2, 0xef, 0xec, - 0xef, 0xd2, 0xef, 0xec, 0xef, 0xd2, 0xef, 0xec, 0xef, 0xd2, 0xf0, 0xec, - 0xf0, 0xd2, 0xf0, 0xec, 0xf0, 0xd2, 0xf0, 0xec, 0xf0, 0xd2, 0xf0, 0xec, - 0xf0, 0xd2, 0xf1, 0xec, 0xf0, 0xd2, 0xf1, 0xec, 0xf0, 0xd2, 0xf1, 0xec, - 0xf0, 0xd2, 0xf1, 0xec, 0xf1, 0xd2, 0xf2, 0xec, 0xf1, 0xd2, 0xf2, 0xec, - 0xf1, 0xd2, 0xf2, 0xec, 0xf1, 0xd2, 0xf2, 0xec, 0xf1, 0xd2, 0xf2, 0xec, - 0xf1, 0xd2, 0xf3, 0xec, 0xf1, 0xd2, 0xf3, 0xec, 0xf1, 0xd2, 0xf3, 0xec, - 0xf1, 0xd2, 0xf3, 0xec, 0xf1, 0xd2, 0xf4, 0xec, 0xf1, 0xd2, 0xf4, 0xec, - 0xf1, 0xd2, 0xf4, 0xec, 0xf1, 0xd2, 0xf4, 0xec, 0xf1, 0xd2, 0xf5, 0xec, - 0xf1, 0xd2, 0xf5, 0xec, 0xf1, 0xd2, 0xf5, 0xec, 0xf1, 0xd2, 0xf5, 0xec, - 0xf1, 0xd2, 0xf5, 0xec, 0xf1, 0xd2, 0xf6, 0xec, 0xf1, 0xd2, 0xf6, 0xec, - 0xf1, 0xd2, 0xf6, 0xec, 0xf1, 0xd2, 0xf6, 0xec, 0xf1, 0xd2, 0xf7, 0xec, - 0xf1, 0xd2, 0xf7, 0xec, 0xf1, 0xd2, 0xf7, 0xec, 0xf1, 0xd2, 0xf7, 0xec, - 0xf1, 0xd2, 0xf8, 0xec, 0xf1, 0xd2, 0xf8, 0xec, 0xf1, 0xd2, 0xf8, 0xec, - 0xf1, 0xd2, 0xf8, 0xec, 0xf1, 0xd2, 0xf8, 0xec, 0xf1, 0xd2, 0xf9, 0xec, - 0xf1, 0xd2, 0xf9, 0xec, 0xf1, 0xd2, 0xf9, 0xec, 0xf1, 0xd2, 0xf9, 0xec, - 0xf1, 0xd2, 0xfa, 0xec, 0xf1, 0xd2, 0xfa, 0xec, 0xf1, 0xd2, 0xfa, 0xec, - 0xf1, 0xd2, 0xfa, 0xec, 0xf1, 0xd2, 0xfa, 0xec, 0xf1, 0xd2, 0xfb, 0xec, - 0xf1, 0xd2, 0xfb, 0xec, 0xf1, 0xd2, 0xfb, 0xec, 0xf1, 0xd2, 0xfb, 0xec, - 0xf1, 0xd2, 0xfc, 0xec, 0xf1, 0xd2, 0xfc, 0xec, 0xf1, 0xd2, 0xfc, 0xec, - 0xf1, 0xd2, 0xfc, 0xec, 0xf1, 0xd2, 0xfc, 0xec, 0xf1, 0xd2, 0xfd, 0xec, - 0xf1, 0xd2, 0xfd, 0xec, 0xf1, 0xd2, 0xfd, 0xec, 0xf1, 0xd2, 0xfd, 0xec, - 0xf1, 0xd2, 0xfe, 0xec, 0xf1, 0xd2, 0xfe, 0xec, 0xf1, 0xd2, 0xfe, 0xec, - 0xf1, 0xd2, 0xfe, 0xec, 0xf1, 0xd2, 0xfe, 0xec, 0xf1, 0xd2, 0xff, 0xec, - 0xf1, 0xd2, 0xff, 0xec, 0xf1, 0xd2, 0x03, 0xef, 0x84, 0xd3, 0x0a, 0xee, - 0x85, 0xd3, 0x0f, 0xef, 0x84, 0xd3, 0x14, 0xee, 0x85, 0xd3, 0x17, 0xef, - 0x84, 0xd3, 0x1b, 0xee, 0x85, 0xd3, 0x1e, 0xef, 0x84, 0xd3, 0x20, 0xee, - 0x85, 0xd3, 0x23, 0xef, 0x84, 0xd3, 0x25, 0xee, 0x85, 0xd3, 0x27, 0xef, - 0x84, 0xd3, 0x29, 0xee, 0x85, 0xd3, 0x2b, 0xef, 0x84, 0xd3, 0x2d, 0xee, - 0x85, 0xd3, 0x2f, 0xef, 0x84, 0xd3, 0x31, 0xee, 0x85, 0xd3, 0x32, 0xef, - 0x84, 0xd3, 0x34, 0xee, 0x85, 0xd3, 0x35, 0xef, 0x84, 0xd3, 0x37, 0xee, - 0x85, 0xd3, 0x38, 0xef, 0x84, 0xd3, 0x3a, 0xee, 0x85, 0xd3, 0x3b, 0xef, - 0x84, 0xd3, 0x3c, 0xee, 0x85, 0xd3, 0x3e, 0xef, 0x84, 0xd3, 0x3f, 0xee, - 0x85, 0xd3, 0x40, 0xef, 0x84, 0xd3, 0x42, 0xee, 0x85, 0xd3, 0x43, 0xec, - 0x85, 0xd3, 0x44, 0xee, 0x85, 0xd3, 0x45, 0xec, 0x85, 0xd3, 0x46, 0xee, - 0x85, 0xd3, 0x47, 0xec, 0x85, 0xd3, 0x48, 0xee, 0x85, 0xd3, 0x49, 0xec, - 0x85, 0xd3, 0x4a, 0xee, 0x85, 0xd3, 0x4b, 0xec, 0x85, 0xd3, 0x4c, 0xee, - 0x85, 0xd3, 0x4d, 0xec, 0x85, 0xd3, 0x4e, 0xee, 0x85, 0xd3, 0x4f, 0xec, - 0x85, 0xd3, 0x50, 0xee, 0x85, 0xd3, 0x51, 0xec, 0x85, 0xd3, 0x52, 0xee, - 0x85, 0xd3, 0x53, 0xec, 0x85, 0xd3, 0x54, 0xee, 0x85, 0xd3, 0x55, 0xec, - 0x85, 0xd3, 0x56, 0xee, 0x85, 0xd3, 0x57, 0xec, 0x85, 0xd3, 0x58, 0xee, - 0x85, 0xd3, 0x58, 0xec, 0x85, 0xd3, 0x59, 0xee, 0x85, 0xd3, 0x5a, 0xec, - 0x85, 0xd3, 0x5b, 0xee, 0x85, 0xd3, 0x5c, 0xec, 0x85, 0xd3, 0x5d, 0xee, - 0x85, 0xd3, 0x5d, 0xec, 0x85, 0xd3, 0x5e, 0xee, 0x85, 0xd3, 0x5f, 0xec, - 0x85, 0xd3, 0x60, 0xee, 0x85, 0xd3, 0x60, 0xec, 0x85, 0xd3, 0x61, 0xee, - 0x85, 0xd3, 0x62, 0xec, 0x85, 0xd3, 0x63, 0xee, 0x85, 0xd3, 0x63, 0xec, - 0x85, 0xd3, 0x64, 0xee, 0x85, 0xd3, 0x65, 0xec, 0x85, 0xd3, 0x66, 0xee, - 0x85, 0xd3, 0x66, 0xec, 0x85, 0xd3, 0x67, 0xee, 0x85, 0xd3, 0x68, 0xec, - 0x85, 0xd3, 0x68, 0xee, 0x85, 0xd3, 0x69, 0xec, 0x85, 0xd3, 0x6a, 0xeb, - 0x86, 0xd3, 0x6a, 0xec, 0x85, 0xd3, 0x6b, 0xeb, 0x86, 0xd3, 0x6c, 0xec, - 0x85, 0xd3, 0x6c, 0xeb, 0x86, 0xd3, 0x6d, 0xec, 0x85, 0xd3, 0x6e, 0xeb, - 0x86, 0xd3, 0x6e, 0xec, 0x85, 0xd3, 0x6f, 0xeb, 0x86, 0xd3, 0x70, 0xec, - 0x85, 0xd3, 0x70, 0xeb, 0x86, 0xd3, 0x71, 0xec, 0x85, 0xd3, 0x72, 0xeb, - 0x86, 0xd3, 0x72, 0xec, 0x85, 0xd3, 0x73, 0xeb, 0x86, 0xd3, 0x73, 0xec, - 0x85, 0xd3, 0x74, 0xeb, 0x86, 0xd3, 0x75, 0xec, 0x85, 0xd3, 0x75, 0xeb, - 0x86, 0xd3, 0x76, 0xec, 0x85, 0xd3, 0x76, 0xeb, 0x86, 0xd3, 0x77, 0xec, - 0x85, 0xd3, 0x78, 0xeb, 0x86, 0xd3, 0x78, 0xec, 0x85, 0xd3, 0x79, 0xeb, - 0x86, 0xd3, 0x79, 0xec, 0x85, 0xd3, 0x7a, 0xeb, 0x86, 0xd3, 0x7a, 0xec, - 0x85, 0xd3, 0x7b, 0xeb, 0x86, 0xd3, 0x7c, 0xec, 0x85, 0xd3, 0x7c, 0xeb, - 0x86, 0xd3, 0x7d, 0xec, 0x85, 0xd3, 0x7d, 0xeb, 0x86, 0xd3, 0x7e, 0xec, - 0x85, 0xd3, 0x7e, 0xeb, 0x86, 0xd3, 0x7f, 0xec, 0x85, 0xd3, 0x7f, 0xeb, - 0x86, 0xd3, 0x80, 0xec, 0x85, 0xd3, 0x81, 0xeb, 0x86, 0xd3, 0x81, 0xec, - 0x85, 0xd3, 0x82, 0xeb, 0x86, 0xd3, 0x82, 0xeb, 0x86, 0xd3, 0x83, 0xeb, - 0x86, 0xd3, 0x83, 0xeb, 0x86, 0xd3, 0x84, 0xeb, 0x86, 0xd3, 0x84, 0xeb, - 0x86, 0xd3, 0x85, 0xeb, 0x86, 0xd3, 0x85, 0xeb, 0x86, 0xd3, 0x86, 0xeb, - 0x86, 0xd2, 0x85, 0xeb, 0x86, 0xd3, 0x86, 0xeb, 0x87, 0xd2, 0x85, 0xeb, - 0x87, 0xd3, 0x86, 0xeb, 0x88, 0xd2, 0x85, 0xeb, 0x88, 0xd3, 0x86, 0xeb, - 0x89, 0xd2, 0x85, 0xeb, 0x89, 0xd3, 0x86, 0xeb, 0x8a, 0xd2, 0x85, 0xeb, - 0x8a, 0xd3, 0x86, 0xeb, 0x8b, 0xd2, 0x85, 0xeb, 0x8b, 0xd3, 0x86, 0xeb, - 0x8c, 0xd2, 0x85, 0xeb, 0x8c, 0xd3, 0x86, 0xeb, 0x8d, 0xd2, 0x85, 0xeb, - 0x8d, 0xd3, 0x86, 0xeb, 0x8e, 0xd2, 0x86, 0xeb, 0x8e, 0xcf, 0x86, 0xeb, - 0x8e, 0xd2, 0x86, 0xeb, 0x8f, 0xcf, 0x86, 0xeb, 0x8f, 0xd2, 0x86, 0xeb, - 0x90, 0xcf, 0x86, 0xeb, 0x90, 0xd2, 0x86, 0xeb, 0x91, 0xcf, 0x86, 0xeb, - 0x91, 0xd2, 0x86, 0xeb, 0x92, 0xcf, 0x86, 0xeb, 0x92, 0xd2, 0x86, 0xeb, - 0x93, 0xcf, 0x86, 0xeb, 0x93, 0xd2, 0x86, 0xeb, 0x94, 0xcf, 0x86, 0xeb, - 0x94, 0xd2, 0x86, 0xeb, 0x94, 0xcf, 0x86, 0xeb, 0x95, 0xd2, 0x86, 0xeb, - 0x95, 0xcf, 0x86, 0xeb, 0x96, 0xd2, 0x86, 0xeb, 0x96, 0xcf, 0x86, 0xeb, - 0x97, 0xd2, 0x86, 0xeb, 0x97, 0xcf, 0x86, 0xeb, 0x98, 0xd2, 0x86, 0xeb, - 0x98, 0xcf, 0x86, 0xeb, 0x98, 0xd2, 0x86, 0xeb, 0x99, 0xcf, 0x86, 0xeb, - 0x99, 0xd2, 0x86, 0xeb, 0x9a, 0xcf, 0x86, 0xeb, 0x9a, 0xd2, 0x86, 0xeb, - 0x9a, 0xcf, 0x86, 0xeb, 0x9b, 0xd2, 0x86, 0xeb, 0x9b, 0xcf, 0x86, 0xeb, - 0x9c, 0xd2, 0x86, 0xeb, 0x9c, 0xcf, 0x87, 0xeb, 0x9d, 0xcc, 0x9b, 0xeb, - 0x9d, 0xec, 0x9b, 0xeb, 0x9d, 0xec, 0x9b, 0xeb, 0x9e, 0xec, 0x9b, 0xeb, - 0x9e, 0xec, 0x9b, 0xeb, 0x9f, 0xec, 0x9b, 0xeb, 0x9f, 0xec, 0x9b, 0xeb, - 0x9f, 0xec, 0x9b, 0xeb, 0xa0, 0xec, 0x9b, 0xeb, 0xa0, 0xec, 0x9b, 0xeb, - 0xa1, 0xec, 0x9b, 0xeb, 0xa1, 0xec, 0xa0, 0xeb, 0xa1, 0xed, 0x9f, 0xeb, - 0xa2, 0xed, 0xa0, 0xeb, 0xa2, 0xed, 0x9f, 0xeb, 0xa3, 0xed, 0xa0, 0xeb, - 0xa3, 0xed, 0x9f, 0xeb, 0xa3, 0xed, 0xa0, 0xeb, 0xa4, 0xed, 0x9f, 0xeb, - 0xa4, 0xed, 0xa0, 0xeb, 0xa5, 0xed, 0x9f, 0xeb, 0xa5, 0xed, 0xa0, 0xeb, - 0xa5, 0xed, 0xa4, 0xeb, 0xa6, 0xee, 0xa4, 0xeb, 0xa6, 0xee, 0xa4, 0xeb, - 0xa6, 0xee, 0xa4, 0xeb, 0xa7, 0xee, 0xa4, 0xeb, 0xa7, 0xee, 0xa4, 0xeb, - 0xa8, 0xee, 0xa4, 0xeb, 0xa8, 0xee, 0xa4, 0xeb, 0xa8, 0xee, 0xa4, 0xeb, - 0xa9, 0xee, 0xa4, 0xeb, 0xa9, 0xee, 0xa4, 0xeb, 0xaa, 0xee, 0xa8, 0xeb, - 0xaa, 0xef, 0xa4, 0xeb, 0xaa, 0xee, 0xa8, 0xeb, 0xab, 0xef, 0xa8, 0xeb, - 0xab, 0xef, 0xa8, 0xeb, 0xab, 0xef, 0xa8, 0xeb, 0xac, 0xef, 0xa8, 0xeb, - 0xac, 0xef, 0xa8, 0xeb, 0xac, 0xef, 0xa8, 0xeb, 0xad, 0xef, 0xa8, 0xeb, - 0xad, 0xef, 0xa8, 0xeb, 0xae, 0xef, 0xac, 0xeb, 0xae, 0xf0, 0xa8, 0xeb, - 0xae, 0xef, 0xac, 0xeb, 0xaf, 0xf0, 0xac, 0xeb, 0xaf, 0xf0, 0xac, 0xeb, - 0xaf, 0xf0, 0xac, 0xeb, 0xb0, 0xf0, 0xac, 0xeb, 0xb0, 0xf0, 0xac, 0xeb, - 0xb0, 0xf0, 0xac, 0xeb, 0xb1, 0xf0, 0xac, 0xeb, 0xb1, 0xf0, 0xac, 0xeb, - 0xb2, 0xf0, 0xb0, 0xeb, 0xb2, 0xf1, 0xac, 0xeb, 0xb2, 0xf0, 0xb0, 0xeb, - 0xb3, 0xf1, 0xb0, 0xeb, 0xb3, 0xf1, 0xb0, 0xeb, 0xb3, 0xf1, 0xb0, 0xeb, - 0xb4, 0xf1, 0xb0, 0xeb, 0xb4, 0xf1, 0xb0, 0xeb, 0xb4, 0xf1, 0xb0, 0xeb, - 0xb5, 0xf1, 0xb0, 0xeb, 0xb5, 0xf1, 0xb0, 0xeb, 0xb5, 0xf1, 0xb0, 0xeb, - 0xb6, 0xf1, 0xb0, 0xeb, 0xb6, 0xf1, 0xb4, 0xeb, 0xb6, 0xf2, 0xb4, 0xeb, - 0xb7, 0xf2, 0xb4, 0xeb, 0xb7, 0xf2, 0xb4, 0xeb, 0xb7, 0xf2, 0xb4, 0xeb, - 0xb8, 0xf2, 0xb4, 0xeb, 0xb8, 0xf2, 0xb4, 0xeb, 0xb8, 0xf2, 0xb4, 0xeb, - 0xb9, 0xf2, 0xb4, 0xeb, 0xb9, 0xf2, 0xcd, 0xeb, 0xb9, 0xd8, 0xcc, 0xeb, - 0xba, 0xdb, 0xcd, 0xeb, 0xba, 0xd8, 0xcc, 0xeb, 0xba, 0xdb, 0xcd, 0xeb, - 0xbb, 0xd8, 0xcc, 0xeb, 0xbb, 0xdb, 0xcd, 0xeb, 0xbb, 0xd8, 0xcd, 0xeb, - 0xbc, 0xd6, 0xcd, 0xeb, 0xbc, 0xd8, 0xcd, 0xeb, 0xbc, 0xd6, 0xcd, 0xeb, - 0xbd, 0xd8, 0xcd, 0xeb, 0xbd, 0xd6, 0xcd, 0xeb, 0xbd, 0xd8, 0xcd, 0xeb, - 0xbe, 0xd6, 0xcd, 0xeb, 0xbe, 0xd8, 0xcd, 0xeb, 0xbe, 0xd6, 0xcd, 0xeb, - 0xbf, 0xd8, 0xcd, 0xeb, 0xbf, 0xd6, 0xcd, 0xeb, 0xbf, 0xd8, 0xcd, 0xeb, - 0xc0, 0xd6, 0xcd, 0xeb, 0xc0, 0xd8, 0xcd, 0xeb, 0xc0, 0xd6, 0xcd, 0xeb, - 0xc1, 0xd8, 0xcd, 0xeb, 0xc1, 0xd6, 0xcd, 0xeb, 0xc1, 0xd8, 0xcd, 0xeb, - 0xc1, 0xd6, 0xcd, 0xeb, 0xc2, 0xd8, 0xcd, 0xeb, 0xc2, 0xd6, 0xcd, 0xeb, - 0xc2, 0xd8, 0xcd, 0xeb, 0xc3, 0xd6, 0xcd, 0xeb, 0xc3, 0xd8, 0xcd, 0xeb, - 0xc3, 0xd6, 0xcd, 0xeb, 0xc4, 0xd8, 0xcd, 0xeb, 0xc4, 0xd6, 0xcd, 0xeb, - 0xc4, 0xd8, 0xcd, 0xeb, 0xc5, 0xd6, 0xcd, 0xeb, 0xc5, 0xd8, 0xcd, 0xeb, - 0xc5, 0xd6, 0xcd, 0xeb, 0xc6, 0xd8, 0xcd, 0xeb, 0xc6, 0xd6, 0xcd, 0xeb, - 0xc6, 0xd3, 0xcd, 0xeb, 0xc6, 0xd6, 0xcd, 0xeb, 0xc7, 0xd3, 0xcd, 0xeb, - 0xc7, 0xd6, 0xcd, 0xeb, 0xc7, 0xd3, 0xcd, 0xeb, 0xc8, 0xd6, 0xcd, 0xeb, - 0xc8, 0xd3, 0xcd, 0xeb, 0xc8, 0xd6, 0xcd, 0xeb, 0xc9, 0xd3, 0xcd, 0xeb, - 0xc9, 0xd6, 0xcd, 0xeb, 0xc9, 0xd3, 0xcd, 0xeb, 0xc9, 0xd6, 0xcd, 0xeb, - 0xca, 0xd3, 0xcd, 0xeb, 0xca, 0xd6, 0xcd, 0xeb, 0xca, 0xd3, 0xcd, 0xeb, - 0xcb, 0xd6, 0xcd, 0xeb, 0xcb, 0xd3, 0xce, 0xeb, 0xcb, 0xd3, 0xcd, 0xeb, - 0xcc, 0xd3, 0xce, 0xeb, 0xcc, 0xd3, 0xcd, 0xeb, 0xcc, 0xd3, 0xce, 0xeb, - 0xcc, 0xd3, 0xcd, 0xeb, 0xcd, 0xd3, 0xce, 0xeb, 0xcd, 0xd3, 0xcd, 0xea, - 0xcd, 0xd3, 0xce, 0xeb, 0xcd, 0xd3, 0xce, 0xea, 0xcd, 0xd3, 0xce, 0xeb, - 0xcd, 0xd3, 0xce, 0xea, 0xcd, 0xd3, 0xcf, 0xeb, 0xcd, 0xd3, 0xcf, 0xea, - 0xcd, 0xd3, 0xcf, 0xeb, 0xcd, 0xd3, 0xd0, 0xea, 0xcd, 0xd3, 0xd0, 0xeb, - 0xcd, 0xd3, 0xd0, 0xea, 0xcd, 0xd3, 0xd0, 0xeb, 0xcd, 0xd3, 0xd1, 0xea, - 0xcd, 0xd3, 0xd1, 0xeb, 0xcd, 0xd3, 0xd1, 0xea, 0xcd, 0xd3, 0xd2, 0xeb, - 0xcd, 0xd3, 0xd2, 0xea, 0xcd, 0xd3, 0xd2, 0xe9, 0xce, 0xd3, 0xd2, 0xea, - 0xcd, 0xd3, 0xd3, 0xe9, 0xce, 0xd3, 0xd3, 0xea, 0xcd, 0xd3, 0xd3, 0xe9, - 0xce, 0xd3, 0xd4, 0xea, 0xcd, 0xd3, 0xd4, 0xe9, 0xce, 0xd3, 0xd4, 0xea, - 0xcd, 0xd3, 0xd4, 0xe9, 0xce, 0xd3, 0xd5, 0xea, 0xcd, 0xd3, 0xd5, 0xe9, - 0xce, 0xd3, 0xd5, 0xea, 0xcd, 0xd3, 0xd6, 0xe9, 0xce, 0xd3, 0xd6, 0xea, - 0xcd, 0xd3, 0xd6, 0xe9, 0xce, 0xd3, 0xd6, 0xea, 0xcd, 0xd3, 0xd7, 0xe9, - 0xce, 0xd3, 0xd7, 0xea, 0xcd, 0xd3, 0xd7, 0xe9, 0xce, 0xd3, 0xd7, 0xea, - 0xcd, 0xd3, 0xd8, 0xe9, 0xce, 0xd3, 0xd8, 0xea, 0xcd, 0xd3, 0xd8, 0xe9, - 0xce, 0xd3, 0xd9, 0xea, 0xcd, 0xd3, 0xd9, 0xe9, 0xce, 0xd3, 0xd9, 0xea, - 0xcd, 0xd3, 0xd9, 0xe9, 0xce, 0xd3, 0xda, 0xea, 0xcd, 0xd3, 0xda, 0xe9, - 0xce, 0xd3, 0xda, 0xec, 0xe6, 0xd3, 0xda, 0xec, 0xe6, 0xd3, 0xdb, 0xec, - 0xe6, 0xd3, 0xdb, 0xec, 0xe6, 0xd3, 0xdb, 0xec, 0xe6, 0xd3, 0xdb, 0xec, - 0xe6, 0xd3, 0xdc, 0xec, 0xe6, 0xd3, 0xdc, 0xec, 0xe6, 0xd3, 0xdc, 0xec, - 0xe6, 0xd3, 0xdd, 0xec, 0xe6, 0xd3, 0xdd, 0xec, 0xe6, 0xd3, 0xdd, 0xec, - 0xe6, 0xd3, 0xdd, 0xec, 0xe6, 0xd3, 0xde, 0xec, 0xe6, 0xd3, 0xde, 0xec, - 0xe6, 0xd3, 0xde, 0xec, 0xe6, 0xd3, 0xde, 0xec, 0xe6, 0xd3, 0xdf, 0xec, - 0xe6, 0xd3, 0xdf, 0xec, 0xe6, 0xd3, 0xdf, 0xec, 0xe6, 0xd3, 0xdf, 0xec, - 0xe6, 0xd3, 0xe0, 0xec, 0xe6, 0xd3, 0xe0, 0xec, 0xe6, 0xd3, 0xe0, 0xec, - 0xe6, 0xd3, 0xe1, 0xec, 0xe6, 0xd3, 0xe1, 0xec, 0xe6, 0xd3, 0xe1, 0xec, - 0xe6, 0xd3, 0xe1, 0xec, 0xe6, 0xd3, 0xe2, 0xec, 0xe6, 0xd3, 0xe2, 0xec, - 0xe6, 0xd3, 0xe2, 0xeb, 0xe6, 0xd3, 0xe2, 0xec, 0xe6, 0xd3, 0xe3, 0xeb, - 0xe6, 0xd3, 0xe3, 0xec, 0xe6, 0xd3, 0xe3, 0xeb, 0xe6, 0xd3, 0xe3, 0xec, - 0xe6, 0xd3, 0xe4, 0xeb, 0xe6, 0xd3, 0xe4, 0xec, 0xe6, 0xd3, 0xe4, 0xeb, - 0xe6, 0xd3, 0xe4, 0xec, 0xe6, 0xd3, 0xe5, 0xeb, 0xe6, 0xd3, 0xe5, 0xec, - 0xe6, 0xd3, 0xe5, 0xeb, 0xe6, 0xd3, 0xe5, 0xeb, 0xe6, 0xd3, 0xe6, 0xeb, - 0xe6, 0xd3, 0xe6, 0xeb, 0xe6, 0xd3, 0xe6, 0xeb, 0xe6, 0xd3, 0xe6, 0xeb, - 0xe6, 0xd3, 0xe6, 0xeb, 0xe7, 0xd3, 0xe6, 0xeb, 0xe7, 0xd3, 0xe8, 0xeb, - 0xe7, 0xd5, 0xe6, 0xeb, 0xe7, 0xd3, 0xe8, 0xeb, 0xe8, 0xd5, 0xe8, 0xeb, - 0xe8, 0xd6, 0xe8, 0xeb, 0xe8, 0xd5, 0xe8, 0xeb, 0xe8, 0xd6, 0xe8, 0xeb, - 0xe9, 0xd5, 0xea, 0xeb, 0xe9, 0xd3, 0xeb, 0xeb, 0xe9, 0xd3, 0xea, 0xeb, - 0xe9, 0xd3, 0xeb, 0xeb, 0xea, 0xd3, 0xea, 0xeb, 0xea, 0xd3, 0xeb, 0xeb, - 0xea, 0xd3, 0xea, 0xeb, 0xea, 0xd3, 0xeb, 0xeb, 0xea, 0xd3, 0xeb, 0xeb, - 0xeb, 0xd3, 0xeb, 0xeb, 0xeb, 0xd3, 0xeb, 0xeb, 0xeb, 0xd3, 0xec, 0xeb, - 0xeb, 0xd3, 0xec, 0xec, 0xec, 0xd3, 0xec, 0xec, 0xec, 0xd3, 0xec, 0xec, - 0xec, 0xd3, 0xec, 0xec, 0xec, 0xd3, 0xed, 0xec, 0xed, 0xd3, 0xed, 0xec, - 0xed, 0xd3, 0xed, 0xec, 0xed, 0xd3, 0xed, 0xec, 0xed, 0xd3, 0xee, 0xec, - 0xee, 0xd3, 0xee, 0xec, 0xee, 0xd3, 0xee, 0xec, 0xee, 0xd3, 0xee, 0xec, - 0xee, 0xd3, 0xef, 0xec, 0xee, 0xd3, 0xef, 0xec, 0xee, 0xd3, 0xef, 0xec, - 0xee, 0xd3, 0xef, 0xec, 0xee, 0xd3, 0xf0, 0xec, 0xf0, 0xd3, 0xf0, 0xec, - 0xf0, 0xd3, 0xf0, 0xec, 0xf0, 0xd3, 0xf0, 0xec, 0xf0, 0xd3, 0xf1, 0xec, - 0xf1, 0xd3, 0xf1, 0xec, 0xf1, 0xd3, 0xf1, 0xec, 0xf1, 0xd3, 0xf1, 0xec, - 0xf1, 0xd3, 0xf2, 0xec, 0xf1, 0xd3, 0xf2, 0xec, 0xf1, 0xd3, 0xf2, 0xec, - 0xf1, 0xd3, 0xf2, 0xec, 0xf1, 0xd3, 0xf2, 0xec, 0xf1, 0xd3, 0xf3, 0xec, - 0xf1, 0xd3, 0xf3, 0xec, 0xf1, 0xd3, 0xf3, 0xec, 0xf1, 0xd3, 0xf3, 0xec, - 0xf1, 0xd3, 0xf4, 0xec, 0xf1, 0xd3, 0xf4, 0xec, 0xf1, 0xd3, 0xf4, 0xec, - 0xf1, 0xd3, 0xf4, 0xec, 0xf1, 0xd3, 0xf5, 0xec, 0xf1, 0xd3, 0xf5, 0xec, - 0xf1, 0xd3, 0xf5, 0xec, 0xf1, 0xd3, 0xf5, 0xec, 0xf1, 0xd3, 0xf5, 0xec, - 0xf1, 0xd3, 0xf6, 0xec, 0xf1, 0xd3, 0xf6, 0xec, 0xf1, 0xd3, 0xf6, 0xec, - 0xf1, 0xd3, 0xf6, 0xec, 0xf1, 0xd3, 0xf7, 0xec, 0xf1, 0xd3, 0xf7, 0xec, - 0xf1, 0xd3, 0xf7, 0xec, 0xf1, 0xd3, 0xf7, 0xec, 0xf1, 0xd3, 0xf8, 0xec, - 0xf1, 0xd3, 0xf8, 0xec, 0xf1, 0xd3, 0xf8, 0xec, 0xf1, 0xd3, 0xf8, 0xec, - 0xf1, 0xd3, 0xf8, 0xec, 0xf1, 0xd3, 0xf9, 0xec, 0xf1, 0xd3, 0xf9, 0xec, - 0xf1, 0xd3, 0xf9, 0xec, 0xf1, 0xd3, 0xf9, 0xec, 0xf1, 0xd3, 0xfa, 0xec, - 0xf1, 0xd3, 0xfa, 0xec, 0xf1, 0xd3, 0xfa, 0xec, 0xf1, 0xd3, 0xfa, 0xec, - 0xf1, 0xd3, 0xfa, 0xec, 0xf1, 0xd3, 0xfb, 0xec, 0xf1, 0xd3, 0xfb, 0xec, - 0xf1, 0xd3, 0xfb, 0xec, 0xf1, 0xd3, 0xfb, 0xec, 0xf1, 0xd3, 0xfc, 0xec, - 0xf1, 0xd3, 0xfc, 0xec, 0xf1, 0xd3, 0xfc, 0xec, 0xf1, 0xd3, 0xfc, 0xec, - 0xf1, 0xd3, 0xfc, 0xec, 0xf1, 0xd3, 0xfd, 0xec, 0xf1, 0xd3, 0xfd, 0xec, - 0xf1, 0xd3, 0xfd, 0xec, 0xf1, 0xd3, 0xfd, 0xec, 0xf1, 0xd3, 0xfe, 0xec, - 0xf1, 0xd3, 0xfe, 0xec, 0xf1, 0xd3, 0xfe, 0xec, 0xf1, 0xd3, 0xfe, 0xec, - 0xf1, 0xd3, 0xfe, 0xec, 0xf1, 0xd3, 0xff, 0xec, 0xf1, 0xd3, 0xff, 0xec, - 0xf1, 0xd3, 0x03, 0xef, 0x84, 0xd3, 0x0a, 0xee, 0x85, 0xd3, 0x0f, 0xef, - 0x84, 0xd3, 0x14, 0xee, 0x85, 0xd3, 0x17, 0xef, 0x84, 0xd3, 0x1b, 0xee, - 0x85, 0xd3, 0x1e, 0xef, 0x84, 0xd3, 0x20, 0xee, 0x85, 0xd3, 0x23, 0xef, - 0x84, 0xd3, 0x25, 0xee, 0x85, 0xd3, 0x27, 0xef, 0x84, 0xd3, 0x29, 0xee, - 0x85, 0xd3, 0x2b, 0xef, 0x84, 0xd3, 0x2d, 0xee, 0x85, 0xd3, 0x2f, 0xef, - 0x84, 0xd3, 0x31, 0xee, 0x85, 0xd3, 0x32, 0xef, 0x84, 0xd3, 0x34, 0xee, - 0x85, 0xd3, 0x35, 0xef, 0x84, 0xd3, 0x37, 0xee, 0x85, 0xd3, 0x38, 0xef, - 0x84, 0xd3, 0x3a, 0xee, 0x85, 0xd3, 0x3b, 0xef, 0x84, 0xd3, 0x3c, 0xee, - 0x85, 0xd3, 0x3e, 0xef, 0x84, 0xd3, 0x3f, 0xee, 0x85, 0xd3, 0x40, 0xef, - 0x84, 0xd3, 0x42, 0xee, 0x85, 0xd3, 0x43, 0xef, 0x84, 0xd3, 0x44, 0xee, - 0x85, 0xd3, 0x45, 0xef, 0x84, 0xd3, 0x46, 0xee, 0x85, 0xd3, 0x47, 0xef, - 0x84, 0xd3, 0x48, 0xee, 0x85, 0xd3, 0x49, 0xef, 0x84, 0xd3, 0x4a, 0xee, - 0x85, 0xd3, 0x4b, 0xef, 0x84, 0xd3, 0x4c, 0xee, 0x85, 0xd3, 0x4d, 0xef, - 0x84, 0xd3, 0x4e, 0xee, 0x85, 0xd3, 0x4f, 0xef, 0x84, 0xd3, 0x50, 0xee, - 0x85, 0xd3, 0x51, 0xef, 0x84, 0xd3, 0x52, 0xee, 0x85, 0xd3, 0x53, 0xef, - 0x84, 0xd3, 0x54, 0xee, 0x85, 0xd3, 0x55, 0xef, 0x84, 0xd3, 0x56, 0xee, - 0x85, 0xd3, 0x57, 0xec, 0x85, 0xd3, 0x58, 0xee, 0x85, 0xd3, 0x58, 0xec, - 0x85, 0xd3, 0x59, 0xee, 0x85, 0xd3, 0x5a, 0xec, 0x85, 0xd3, 0x5b, 0xee, - 0x85, 0xd3, 0x5c, 0xec, 0x85, 0xd3, 0x5d, 0xee, 0x85, 0xd3, 0x5d, 0xec, - 0x85, 0xd3, 0x5e, 0xee, 0x85, 0xd3, 0x5f, 0xec, 0x85, 0xd3, 0x60, 0xee, - 0x85, 0xd3, 0x60, 0xec, 0x85, 0xd3, 0x61, 0xee, 0x85, 0xd3, 0x62, 0xec, - 0x85, 0xd3, 0x63, 0xee, 0x85, 0xd3, 0x63, 0xec, 0x85, 0xd3, 0x64, 0xee, - 0x85, 0xd3, 0x65, 0xec, 0x85, 0xd3, 0x66, 0xee, 0x85, 0xd3, 0x66, 0xec, - 0x85, 0xd3, 0x67, 0xee, 0x85, 0xd3, 0x68, 0xec, 0x85, 0xd3, 0x68, 0xee, - 0x85, 0xd3, 0x69, 0xec, 0x85, 0xd3, 0x6a, 0xee, 0x85, 0xd3, 0x6a, 0xec, - 0x85, 0xd3, 0x6b, 0xee, 0x85, 0xd3, 0x6c, 0xec, 0x85, 0xd3, 0x6c, 0xee, - 0x85, 0xd3, 0x6d, 0xec, 0x85, 0xd3, 0x6e, 0xee, 0x85, 0xd3, 0x6e, 0xec, - 0x85, 0xd3, 0x6f, 0xee, 0x85, 0xd3, 0x70, 0xec, 0x85, 0xd3, 0x70, 0xee, - 0x85, 0xd3, 0x71, 0xec, 0x85, 0xd3, 0x72, 0xeb, 0x86, 0xd3, 0x72, 0xec, - 0x85, 0xd3, 0x73, 0xeb, 0x86, 0xd3, 0x73, 0xec, 0x85, 0xd3, 0x74, 0xeb, - 0x86, 0xd3, 0x75, 0xec, 0x85, 0xd3, 0x75, 0xeb, 0x86, 0xd3, 0x76, 0xec, - 0x85, 0xd3, 0x76, 0xeb, 0x86, 0xd3, 0x77, 0xec, 0x85, 0xd3, 0x78, 0xeb, - 0x86, 0xd3, 0x78, 0xec, 0x85, 0xd3, 0x79, 0xeb, 0x86, 0xd3, 0x79, 0xec, - 0x85, 0xd3, 0x7a, 0xeb, 0x86, 0xd3, 0x7a, 0xec, 0x85, 0xd3, 0x7b, 0xeb, - 0x86, 0xd3, 0x7c, 0xec, 0x85, 0xd3, 0x7c, 0xeb, 0x86, 0xd3, 0x7d, 0xec, - 0x85, 0xd3, 0x7d, 0xeb, 0x86, 0xd3, 0x7e, 0xec, 0x85, 0xd3, 0x7e, 0xeb, - 0x86, 0xd3, 0x7f, 0xec, 0x85, 0xd3, 0x7f, 0xeb, 0x86, 0xd3, 0x80, 0xec, - 0x85, 0xd3, 0x81, 0xeb, 0x86, 0xd3, 0x81, 0xec, 0x85, 0xd3, 0x82, 0xeb, - 0x86, 0xd3, 0x82, 0xeb, 0x86, 0xd3, 0x83, 0xeb, 0x86, 0xd3, 0x83, 0xeb, - 0x86, 0xd3, 0x84, 0xeb, 0x86, 0xd3, 0x84, 0xeb, 0x86, 0xd3, 0x85, 0xeb, - 0x86, 0xd3, 0x85, 0xeb, 0x86, 0xd3, 0x86, 0xeb, 0x86, 0xd2, 0x85, 0xeb, - 0x86, 0xd3, 0x86, 0xeb, 0x87, 0xd2, 0x85, 0xeb, 0x87, 0xd3, 0x86, 0xeb, - 0x88, 0xd2, 0x85, 0xeb, 0x88, 0xd3, 0x86, 0xeb, 0x89, 0xd2, 0x85, 0xeb, - 0x89, 0xd3, 0x86, 0xeb, 0x8a, 0xd2, 0x85, 0xeb, 0x8a, 0xd3, 0x86, 0xeb, - 0x8b, 0xd2, 0x85, 0xeb, 0x8b, 0xd3, 0x86, 0xeb, 0x8c, 0xd2, 0x85, 0xeb, - 0x8c, 0xd3, 0x86, 0xeb, 0x8d, 0xd2, 0x85, 0xeb, 0x8d, 0xd3, 0x86, 0xeb, - 0x8e, 0xd2, 0x85, 0xeb, 0x8e, 0xd3, 0x86, 0xeb, 0x8e, 0xd2, 0x85, 0xeb, - 0x8f, 0xd3, 0x86, 0xeb, 0x8f, 0xd2, 0x85, 0xeb, 0x90, 0xd3, 0x86, 0xeb, - 0x90, 0xd2, 0x85, 0xeb, 0x91, 0xd3, 0x86, 0xeb, 0x91, 0xd2, 0x86, 0xeb, - 0x92, 0xce, 0x86, 0xeb, 0x92, 0xd2, 0x86, 0xeb, 0x93, 0xce, 0x86, 0xeb, - 0x93, 0xd2, 0x86, 0xeb, 0x94, 0xce, 0x86, 0xeb, 0x94, 0xd2, 0x86, 0xeb, - 0x94, 0xce, 0x86, 0xeb, 0x95, 0xd2, 0x86, 0xeb, 0x95, 0xce, 0x86, 0xeb, - 0x96, 0xd2, 0x86, 0xeb, 0x96, 0xce, 0x86, 0xeb, 0x97, 0xd2, 0x86, 0xeb, - 0x97, 0xce, 0x86, 0xeb, 0x98, 0xd2, 0x86, 0xeb, 0x98, 0xce, 0x86, 0xeb, - 0x98, 0xd2, 0x86, 0xeb, 0x99, 0xce, 0x86, 0xeb, 0x99, 0xd2, 0x86, 0xeb, - 0x9a, 0xce, 0x86, 0xeb, 0x9a, 0xd2, 0x86, 0xeb, 0x9a, 0xce, 0x86, 0xeb, - 0x9b, 0xd2, 0x86, 0xeb, 0x9b, 0xce, 0x86, 0xeb, 0x9c, 0xd2, 0x99, 0xeb, - 0x9c, 0xeb, 0x99, 0xeb, 0x9d, 0xeb, 0x99, 0xeb, 0x9d, 0xeb, 0x99, 0xeb, - 0x9d, 0xeb, 0x99, 0xeb, 0x9e, 0xeb, 0x99, 0xeb, 0x9e, 0xeb, 0x99, 0xeb, - 0x9f, 0xeb, 0x99, 0xeb, 0x9f, 0xeb, 0x9e, 0xeb, 0x9f, 0xec, 0x9d, 0xeb, - 0xa0, 0xec, 0x9e, 0xeb, 0xa0, 0xec, 0x9d, 0xeb, 0xa1, 0xec, 0x9e, 0xeb, - 0xa1, 0xec, 0x9d, 0xeb, 0xa1, 0xec, 0x9e, 0xeb, 0xa2, 0xec, 0x9d, 0xeb, - 0xa2, 0xec, 0x9e, 0xeb, 0xa3, 0xec, 0x9d, 0xeb, 0xa3, 0xec, 0x9e, 0xeb, - 0xa3, 0xec, 0xa2, 0xeb, 0xa4, 0xed, 0xa2, 0xeb, 0xa4, 0xed, 0xa2, 0xeb, - 0xa5, 0xed, 0xa2, 0xeb, 0xa5, 0xed, 0xa2, 0xeb, 0xa5, 0xed, 0xa2, 0xeb, - 0xa6, 0xed, 0xa2, 0xeb, 0xa6, 0xed, 0xa2, 0xeb, 0xa6, 0xed, 0xa2, 0xeb, - 0xa7, 0xed, 0xa2, 0xeb, 0xa7, 0xed, 0xa2, 0xeb, 0xa8, 0xed, 0xa6, 0xeb, - 0xa8, 0xee, 0xa6, 0xeb, 0xa8, 0xee, 0xa6, 0xeb, 0xa9, 0xee, 0xa6, 0xeb, - 0xa9, 0xee, 0xa6, 0xeb, 0xaa, 0xee, 0xa6, 0xeb, 0xaa, 0xee, 0xa6, 0xeb, - 0xaa, 0xee, 0xa6, 0xeb, 0xab, 0xee, 0xa6, 0xeb, 0xab, 0xee, 0xa6, 0xeb, - 0xab, 0xee, 0xa6, 0xeb, 0xac, 0xee, 0xab, 0xeb, 0xac, 0xef, 0xa6, 0xeb, - 0xac, 0xee, 0xab, 0xeb, 0xad, 0xef, 0xaa, 0xeb, 0xad, 0xef, 0xab, 0xeb, - 0xae, 0xef, 0xaa, 0xeb, 0xae, 0xef, 0xab, 0xeb, 0xae, 0xef, 0xaa, 0xeb, - 0xaf, 0xef, 0xab, 0xeb, 0xaf, 0xef, 0xaa, 0xeb, 0xaf, 0xef, 0xab, 0xeb, - 0xb0, 0xef, 0xaf, 0xeb, 0xb0, 0xf0, 0xab, 0xeb, 0xb0, 0xef, 0xaf, 0xeb, - 0xb1, 0xf0, 0xae, 0xeb, 0xb1, 0xf0, 0xaf, 0xeb, 0xb2, 0xf0, 0xae, 0xeb, - 0xb2, 0xf0, 0xaf, 0xeb, 0xb2, 0xf0, 0xae, 0xeb, 0xb3, 0xf0, 0xaf, 0xeb, - 0xb3, 0xf0, 0xae, 0xeb, 0xb3, 0xf0, 0xaf, 0xeb, 0xb4, 0xf0, 0xb3, 0xeb, - 0xb4, 0xf1, 0xaf, 0xeb, 0xb4, 0xf0, 0xb3, 0xeb, 0xb5, 0xf1, 0xb2, 0xeb, - 0xb5, 0xf1, 0xb3, 0xeb, 0xb5, 0xf1, 0xb2, 0xeb, 0xb6, 0xf1, 0xb3, 0xeb, - 0xb6, 0xf1, 0xb2, 0xeb, 0xb6, 0xf1, 0xb3, 0xeb, 0xb7, 0xf1, 0xb2, 0xeb, - 0xb7, 0xf1, 0xb3, 0xeb, 0xb7, 0xf1, 0xb2, 0xeb, 0xb8, 0xf1, 0xb3, 0xeb, - 0xb8, 0xf1, 0xb6, 0xeb, 0xb8, 0xf2, 0xb6, 0xeb, 0xb9, 0xf2, 0xb6, 0xeb, - 0xb9, 0xf2, 0xb6, 0xeb, 0xb9, 0xf2, 0xcc, 0xeb, 0xba, 0xdb, 0xcd, 0xeb, - 0xba, 0xd8, 0xcd, 0xeb, 0xba, 0xd5, 0xcd, 0xeb, 0xbb, 0xd8, 0xcd, 0xeb, - 0xbb, 0xd5, 0xcd, 0xeb, 0xbb, 0xd8, 0xcd, 0xeb, 0xbc, 0xd5, 0xcd, 0xeb, - 0xbc, 0xd8, 0xcd, 0xeb, 0xbc, 0xd5, 0xcd, 0xeb, 0xbd, 0xd8, 0xcd, 0xeb, - 0xbd, 0xd5, 0xcd, 0xeb, 0xbd, 0xd8, 0xcd, 0xeb, 0xbe, 0xd5, 0xcd, 0xeb, - 0xbe, 0xd8, 0xcd, 0xeb, 0xbe, 0xd5, 0xcd, 0xeb, 0xbf, 0xd8, 0xcd, 0xeb, - 0xbf, 0xd5, 0xcd, 0xeb, 0xbf, 0xd8, 0xcd, 0xeb, 0xc0, 0xd5, 0xcd, 0xeb, - 0xc0, 0xd8, 0xcd, 0xeb, 0xc0, 0xd5, 0xcd, 0xeb, 0xc1, 0xd8, 0xcd, 0xeb, - 0xc1, 0xd5, 0xcd, 0xeb, 0xc1, 0xd8, 0xcd, 0xeb, 0xc1, 0xd5, 0xcd, 0xeb, - 0xc2, 0xd8, 0xcd, 0xeb, 0xc2, 0xd5, 0xcd, 0xeb, 0xc2, 0xd8, 0xcd, 0xeb, - 0xc3, 0xd5, 0xcd, 0xeb, 0xc3, 0xd8, 0xcd, 0xeb, 0xc3, 0xd5, 0xcd, 0xeb, - 0xc4, 0xd8, 0xcd, 0xeb, 0xc4, 0xd5, 0xcd, 0xeb, 0xc4, 0xd8, 0xcd, 0xeb, - 0xc5, 0xd5, 0xcd, 0xeb, 0xc5, 0xd8, 0xcd, 0xeb, 0xc5, 0xd5, 0xcd, 0xeb, - 0xc6, 0xd8, 0xcd, 0xeb, 0xc6, 0xd5, 0xcd, 0xeb, 0xc6, 0xd3, 0xcd, 0xeb, - 0xc6, 0xd5, 0xcd, 0xeb, 0xc7, 0xd3, 0xcd, 0xeb, 0xc7, 0xd5, 0xcd, 0xeb, - 0xc7, 0xd3, 0xcd, 0xeb, 0xc8, 0xd5, 0xcd, 0xeb, 0xc8, 0xd3, 0xcd, 0xeb, - 0xc8, 0xd5, 0xcd, 0xeb, 0xc9, 0xd3, 0xcd, 0xeb, 0xc9, 0xd5, 0xcd, 0xeb, - 0xc9, 0xd3, 0xcd, 0xeb, 0xc9, 0xd5, 0xcd, 0xeb, 0xca, 0xd3, 0xcd, 0xeb, - 0xca, 0xd5, 0xcd, 0xeb, 0xca, 0xd3, 0xcd, 0xeb, 0xcb, 0xd5, 0xcd, 0xeb, - 0xcb, 0xd3, 0xcd, 0xeb, 0xcb, 0xd5, 0xcd, 0xeb, 0xcc, 0xd3, 0xcd, 0xeb, - 0xcc, 0xd5, 0xcd, 0xeb, 0xcc, 0xd3, 0xce, 0xeb, 0xcc, 0xd3, 0xcd, 0xeb, - 0xcd, 0xd3, 0xce, 0xeb, 0xcd, 0xd3, 0xcd, 0xeb, 0xcd, 0xd3, 0xce, 0xeb, - 0xcd, 0xd3, 0xce, 0xeb, 0xcd, 0xd3, 0xce, 0xeb, 0xcd, 0xd3, 0xce, 0xea, - 0xcd, 0xd3, 0xcf, 0xeb, 0xcd, 0xd3, 0xcf, 0xea, 0xcd, 0xd3, 0xcf, 0xeb, - 0xcd, 0xd3, 0xd0, 0xea, 0xcd, 0xd3, 0xd0, 0xeb, 0xcd, 0xd3, 0xd0, 0xea, - 0xcd, 0xd3, 0xd0, 0xeb, 0xcd, 0xd3, 0xd1, 0xea, 0xcd, 0xd3, 0xd1, 0xeb, - 0xcd, 0xd3, 0xd1, 0xea, 0xcd, 0xd3, 0xd2, 0xeb, 0xcd, 0xd3, 0xd2, 0xea, - 0xcd, 0xd3, 0xd2, 0xe9, 0xce, 0xd3, 0xd2, 0xea, 0xcd, 0xd3, 0xd3, 0xe9, - 0xce, 0xd3, 0xd3, 0xea, 0xcd, 0xd3, 0xd3, 0xe9, 0xce, 0xd3, 0xd4, 0xea, - 0xcd, 0xd3, 0xd4, 0xe9, 0xce, 0xd3, 0xd4, 0xea, 0xcd, 0xd3, 0xd4, 0xe9, - 0xce, 0xd3, 0xd5, 0xea, 0xcd, 0xd3, 0xd5, 0xe9, 0xce, 0xd3, 0xd5, 0xea, - 0xcd, 0xd3, 0xd6, 0xe9, 0xce, 0xd3, 0xd6, 0xea, 0xcd, 0xd3, 0xd6, 0xe9, - 0xce, 0xd3, 0xd6, 0xea, 0xcd, 0xd3, 0xd7, 0xe9, 0xce, 0xd3, 0xd7, 0xea, - 0xcd, 0xd3, 0xd7, 0xe9, 0xce, 0xd3, 0xd7, 0xea, 0xcd, 0xd3, 0xd8, 0xe9, - 0xce, 0xd3, 0xd8, 0xea, 0xcd, 0xd3, 0xd8, 0xe9, 0xce, 0xd3, 0xd9, 0xea, - 0xcd, 0xd3, 0xd9, 0xe9, 0xce, 0xd3, 0xd9, 0xea, 0xcd, 0xd3, 0xd9, 0xe9, - 0xce, 0xd3, 0xda, 0xea, 0xcd, 0xd3, 0xda, 0xe9, 0xce, 0xd3, 0xda, 0xed, - 0xe6, 0xd3, 0xda, 0xeb, 0xe6, 0xd3, 0xdb, 0xed, 0xe6, 0xd3, 0xdb, 0xeb, - 0xe6, 0xd3, 0xdb, 0xed, 0xe6, 0xd3, 0xdb, 0xeb, 0xe6, 0xd3, 0xdc, 0xed, - 0xe6, 0xd3, 0xdc, 0xeb, 0xe6, 0xd3, 0xdc, 0xed, 0xe6, 0xd3, 0xdd, 0xeb, - 0xe6, 0xd3, 0xdd, 0xed, 0xe6, 0xd3, 0xdd, 0xeb, 0xe6, 0xd3, 0xdd, 0xed, - 0xe6, 0xd3, 0xde, 0xeb, 0xe6, 0xd3, 0xde, 0xed, 0xe6, 0xd3, 0xde, 0xeb, - 0xe6, 0xd3, 0xde, 0xed, 0xe6, 0xd3, 0xdf, 0xeb, 0xe6, 0xd3, 0xdf, 0xed, - 0xe6, 0xd3, 0xdf, 0xeb, 0xe6, 0xd3, 0xdf, 0xed, 0xe6, 0xd3, 0xe0, 0xeb, - 0xe6, 0xd3, 0xe0, 0xed, 0xe6, 0xd3, 0xe0, 0xeb, 0xe6, 0xd3, 0xe1, 0xed, - 0xe6, 0xd3, 0xe1, 0xeb, 0xe6, 0xd3, 0xe1, 0xed, 0xe6, 0xd3, 0xe1, 0xeb, - 0xe6, 0xd3, 0xe2, 0xed, 0xe6, 0xd3, 0xe2, 0xeb, 0xe6, 0xd3, 0xe2, 0xeb, - 0xe6, 0xd3, 0xe2, 0xeb, 0xe6, 0xd3, 0xe3, 0xeb, 0xe6, 0xd3, 0xe3, 0xeb, - 0xe6, 0xd3, 0xe3, 0xeb, 0xe6, 0xd3, 0xe3, 0xeb, 0xe6, 0xd3, 0xe4, 0xeb, - 0xe6, 0xd3, 0xe4, 0xeb, 0xe6, 0xd3, 0xe4, 0xeb, 0xe6, 0xd3, 0xe4, 0xeb, - 0xe6, 0xd3, 0xe5, 0xeb, 0xe6, 0xd3, 0xe5, 0xeb, 0xe6, 0xd3, 0xe5, 0xeb, - 0xe6, 0xd3, 0xe5, 0xeb, 0xe6, 0xd3, 0xe6, 0xeb, 0xe6, 0xd3, 0xe6, 0xeb, - 0xe6, 0xd3, 0xe6, 0xeb, 0xe6, 0xd3, 0xe6, 0xeb, 0xe6, 0xd3, 0xe6, 0xeb, - 0xe7, 0xd3, 0xe6, 0xeb, 0xe7, 0xd3, 0xe8, 0xeb, 0xe7, 0xd5, 0xe8, 0xeb, - 0xe7, 0xd5, 0xe8, 0xeb, 0xe8, 0xd5, 0xe8, 0xeb, 0xe8, 0xd5, 0xe8, 0xeb, - 0xe8, 0xd5, 0xe8, 0xeb, 0xe8, 0xd5, 0xe9, 0xeb, 0xe9, 0xd5, 0xe9, 0xeb, - 0xe9, 0xd5, 0xea, 0xeb, 0xe9, 0xd3, 0xea, 0xeb, 0xe9, 0xd3, 0xea, 0xeb, - 0xea, 0xd3, 0xea, 0xeb, 0xea, 0xd3, 0xea, 0xea, 0xea, 0xd3, 0xea, 0xeb, - 0xea, 0xd3, 0xeb, 0xeb, 0xeb, 0xd3, 0xeb, 0xeb, 0xeb, 0xd3, 0xeb, 0xeb, - 0xeb, 0xd3, 0xeb, 0xeb, 0xeb, 0xd3, 0xec, 0xeb, 0xec, 0xd3, 0xec, 0xeb, - 0xec, 0xd3, 0xec, 0xeb, 0xec, 0xd3, 0xec, 0xeb, 0xec, 0xd3, 0xec, 0xeb, - 0xec, 0xd3, 0xed, 0xeb, 0xed, 0xd3, 0xed, 0xeb, 0xec, 0xd3, 0xed, 0xeb, - 0xed, 0xd3, 0xed, 0xec, 0xed, 0xd3, 0xee, 0xec, 0xee, 0xd3, 0xee, 0xec, - 0xee, 0xd3, 0xee, 0xec, 0xee, 0xd3, 0xee, 0xec, 0xee, 0xd3, 0xef, 0xec, - 0xef, 0xd3, 0xef, 0xec, 0xef, 0xd3, 0xef, 0xec, 0xef, 0xd3, 0xef, 0xec, - 0xef, 0xd3, 0xf0, 0xec, 0xf0, 0xd3, 0xf0, 0xec, 0xf0, 0xd3, 0xf0, 0xec, - 0xf0, 0xd3, 0xf0, 0xec, 0xf0, 0xd3, 0xf1, 0xec, 0xf0, 0xd3, 0xf1, 0xec, - 0xf0, 0xd3, 0xf1, 0xec, 0xf0, 0xd3, 0xf1, 0xec, 0xf1, 0xd3, 0xf2, 0xec, - 0xf1, 0xd3, 0xf2, 0xec, 0xf1, 0xd3, 0xf2, 0xec, 0xf1, 0xd3, 0xf2, 0xec, - 0xf1, 0xd3, 0xf2, 0xec, 0xf1, 0xd3, 0xf3, 0xec, 0xf1, 0xd3, 0xf3, 0xec, - 0xf1, 0xd3, 0xf3, 0xec, 0xf1, 0xd3, 0xf3, 0xec, 0xf1, 0xd3, 0xf4, 0xec, - 0xf1, 0xd3, 0xf4, 0xec, 0xf1, 0xd3, 0xf4, 0xec, 0xf1, 0xd3, 0xf4, 0xec, - 0xf1, 0xd3, 0xf5, 0xec, 0xf1, 0xd3, 0xf5, 0xec, 0xf1, 0xd3, 0xf5, 0xec, - 0xf1, 0xd3, 0xf5, 0xec, 0xf1, 0xd3, 0xf5, 0xec, 0xf1, 0xd3, 0xf6, 0xec, - 0xf1, 0xd3, 0xf6, 0xec, 0xf1, 0xd3, 0xf6, 0xec, 0xf1, 0xd3, 0xf6, 0xec, - 0xf1, 0xd3, 0xf7, 0xec, 0xf1, 0xd3, 0xf7, 0xec, 0xf1, 0xd3, 0xf7, 0xec, - 0xf1, 0xd3, 0xf7, 0xec, 0xf1, 0xd3, 0xf8, 0xec, 0xf1, 0xd3, 0xf8, 0xec, - 0xf1, 0xd3, 0xf8, 0xec, 0xf1, 0xd3, 0xf8, 0xec, 0xf1, 0xd3, 0xf8, 0xec, - 0xf1, 0xd3, 0xf9, 0xec, 0xf1, 0xd3, 0xf9, 0xec, 0xf1, 0xd3, 0xf9, 0xec, - 0xf1, 0xd3, 0xf9, 0xec, 0xf1, 0xd3, 0xfa, 0xec, 0xf1, 0xd3, 0xfa, 0xec, - 0xf1, 0xd3, 0xfa, 0xec, 0xf1, 0xd3, 0xfa, 0xec, 0xf1, 0xd3, 0xfa, 0xec, - 0xf1, 0xd3, 0xfb, 0xec, 0xf1, 0xd3, 0xfb, 0xec, 0xf1, 0xd3, 0xfb, 0xec, - 0xf1, 0xd3, 0xfb, 0xec, 0xf1, 0xd3, 0xfc, 0xec, 0xf1, 0xd3, 0xfc, 0xec, - 0xf1, 0xd3, 0xfc, 0xec, 0xf1, 0xd3, 0xfc, 0xec, 0xf1, 0xd3, 0xfc, 0xec, - 0xf1, 0xd3, 0xfd, 0xec, 0xf1, 0xd3, 0xfd, 0xec, 0xf1, 0xd3, 0xfd, 0xec, - 0xf1, 0xd3, 0xfd, 0xec, 0xf1, 0xd3, 0xfe, 0xec, 0xf1, 0xd3, 0xfe, 0xec, - 0xf1, 0xd3, 0xfe, 0xec, 0xf1, 0xd3, 0xfe, 0xec, 0xf1, 0xd3, 0xfe, 0xec, - 0xf1, 0xd3, 0xff, 0xec, 0xf1, 0xd3, 0xff, 0xec, 0xf1, 0xd3, 0x03, 0xef, - 0x84, 0xd4, 0x0a, 0xf1, 0x84, 0xd4, 0x0f, 0xef, 0x84, 0xd4, 0x14, 0xf1, - 0x84, 0xd4, 0x17, 0xef, 0x84, 0xd4, 0x1b, 0xf1, 0x84, 0xd4, 0x1e, 0xef, - 0x84, 0xd4, 0x20, 0xf1, 0x84, 0xd4, 0x23, 0xef, 0x84, 0xd4, 0x25, 0xf1, - 0x84, 0xd4, 0x27, 0xef, 0x84, 0xd4, 0x29, 0xee, 0x85, 0xd4, 0x2b, 0xef, - 0x84, 0xd4, 0x2d, 0xee, 0x85, 0xd4, 0x2f, 0xef, 0x84, 0xd4, 0x31, 0xee, - 0x85, 0xd4, 0x32, 0xef, 0x84, 0xd4, 0x34, 0xee, 0x85, 0xd4, 0x35, 0xef, - 0x84, 0xd4, 0x37, 0xee, 0x85, 0xd4, 0x38, 0xef, 0x84, 0xd4, 0x3a, 0xee, - 0x85, 0xd4, 0x3b, 0xef, 0x84, 0xd4, 0x3c, 0xee, 0x85, 0xd4, 0x3e, 0xef, - 0x84, 0xd4, 0x3f, 0xee, 0x85, 0xd4, 0x40, 0xef, 0x84, 0xd4, 0x42, 0xee, - 0x85, 0xd4, 0x43, 0xef, 0x84, 0xd4, 0x44, 0xee, 0x85, 0xd4, 0x45, 0xef, - 0x84, 0xd4, 0x46, 0xee, 0x85, 0xd4, 0x47, 0xef, 0x84, 0xd4, 0x48, 0xee, - 0x85, 0xd4, 0x49, 0xef, 0x84, 0xd4, 0x4a, 0xee, 0x85, 0xd4, 0x4b, 0xef, - 0x84, 0xd4, 0x4c, 0xee, 0x85, 0xd4, 0x4d, 0xef, 0x84, 0xd4, 0x4e, 0xee, - 0x85, 0xd4, 0x4f, 0xef, 0x84, 0xd4, 0x50, 0xee, 0x85, 0xd4, 0x51, 0xef, - 0x84, 0xd4, 0x52, 0xee, 0x85, 0xd4, 0x53, 0xec, 0x85, 0xd4, 0x54, 0xee, - 0x85, 0xd4, 0x55, 0xec, 0x85, 0xd4, 0x56, 0xee, 0x85, 0xd4, 0x57, 0xec, - 0x85, 0xd4, 0x58, 0xee, 0x85, 0xd4, 0x58, 0xec, 0x85, 0xd4, 0x59, 0xee, - 0x85, 0xd4, 0x5a, 0xec, 0x85, 0xd4, 0x5b, 0xee, 0x85, 0xd4, 0x5c, 0xec, - 0x85, 0xd4, 0x5d, 0xee, 0x85, 0xd4, 0x5d, 0xec, 0x85, 0xd4, 0x5e, 0xee, - 0x85, 0xd4, 0x5f, 0xec, 0x85, 0xd4, 0x60, 0xee, 0x85, 0xd4, 0x60, 0xec, - 0x85, 0xd4, 0x61, 0xee, 0x85, 0xd4, 0x62, 0xec, 0x85, 0xd4, 0x63, 0xee, - 0x85, 0xd4, 0x63, 0xec, 0x85, 0xd4, 0x64, 0xee, 0x85, 0xd4, 0x65, 0xec, - 0x85, 0xd4, 0x66, 0xee, 0x85, 0xd4, 0x66, 0xec, 0x85, 0xd4, 0x67, 0xee, - 0x85, 0xd4, 0x68, 0xec, 0x85, 0xd4, 0x68, 0xee, 0x85, 0xd4, 0x69, 0xec, - 0x85, 0xd4, 0x6a, 0xee, 0x85, 0xd4, 0x6a, 0xec, 0x85, 0xd4, 0x6b, 0xee, - 0x85, 0xd4, 0x6c, 0xec, 0x85, 0xd4, 0x6c, 0xee, 0x85, 0xd4, 0x6d, 0xec, - 0x85, 0xd4, 0x6e, 0xee, 0x85, 0xd4, 0x6e, 0xec, 0x85, 0xd4, 0x6f, 0xee, - 0x85, 0xd4, 0x70, 0xec, 0x85, 0xd4, 0x70, 0xee, 0x85, 0xd4, 0x71, 0xec, - 0x85, 0xd4, 0x72, 0xeb, 0x86, 0xd4, 0x72, 0xec, 0x85, 0xd4, 0x73, 0xeb, - 0x86, 0xd4, 0x73, 0xec, 0x85, 0xd4, 0x74, 0xeb, 0x86, 0xd4, 0x75, 0xec, - 0x85, 0xd4, 0x75, 0xeb, 0x86, 0xd4, 0x76, 0xec, 0x85, 0xd4, 0x76, 0xeb, - 0x86, 0xd4, 0x77, 0xec, 0x85, 0xd4, 0x78, 0xeb, 0x86, 0xd4, 0x78, 0xec, - 0x85, 0xd4, 0x79, 0xeb, 0x86, 0xd4, 0x79, 0xec, 0x85, 0xd4, 0x7a, 0xeb, - 0x86, 0xd4, 0x7a, 0xec, 0x85, 0xd4, 0x7b, 0xeb, 0x86, 0xd4, 0x7c, 0xec, - 0x85, 0xd4, 0x7c, 0xeb, 0x86, 0xd4, 0x7d, 0xec, 0x85, 0xd4, 0x7d, 0xeb, - 0x86, 0xd4, 0x7e, 0xec, 0x85, 0xd4, 0x7e, 0xeb, 0x86, 0xd4, 0x7f, 0xec, - 0x85, 0xd4, 0x7f, 0xeb, 0x86, 0xd4, 0x80, 0xec, 0x85, 0xd4, 0x81, 0xeb, - 0x86, 0xd4, 0x81, 0xec, 0x85, 0xd4, 0x82, 0xeb, 0x86, 0xd4, 0x82, 0xec, - 0x85, 0xd4, 0x83, 0xeb, 0x86, 0xd4, 0x83, 0xec, 0x85, 0xd4, 0x84, 0xeb, - 0x86, 0xd4, 0x84, 0xeb, 0x86, 0xd4, 0x85, 0xeb, 0x86, 0xd4, 0x85, 0xeb, - 0x86, 0xd4, 0x85, 0xeb, 0x86, 0xd4, 0x85, 0xeb, 0x86, 0xd4, 0x85, 0xeb, - 0x87, 0xd4, 0x85, 0xeb, 0x87, 0xd4, 0x86, 0xeb, 0x88, 0xd2, 0x85, 0xeb, - 0x88, 0xd4, 0x86, 0xeb, 0x89, 0xd2, 0x85, 0xeb, 0x89, 0xd4, 0x86, 0xeb, - 0x8a, 0xd2, 0x85, 0xeb, 0x8a, 0xd4, 0x86, 0xeb, 0x8b, 0xd2, 0x85, 0xeb, - 0x8b, 0xd4, 0x86, 0xeb, 0x8c, 0xd2, 0x85, 0xeb, 0x8c, 0xd4, 0x86, 0xeb, - 0x8d, 0xd2, 0x85, 0xeb, 0x8d, 0xd4, 0x86, 0xeb, 0x8e, 0xd2, 0x85, 0xeb, - 0x8e, 0xd4, 0x86, 0xeb, 0x8e, 0xd2, 0x85, 0xeb, 0x8f, 0xd4, 0x86, 0xeb, - 0x8f, 0xd2, 0x85, 0xeb, 0x90, 0xd4, 0x86, 0xeb, 0x90, 0xd2, 0x85, 0xeb, - 0x91, 0xd4, 0x86, 0xeb, 0x91, 0xd2, 0x86, 0xeb, 0x92, 0xcf, 0x86, 0xeb, - 0x92, 0xd2, 0x86, 0xeb, 0x93, 0xcf, 0x86, 0xeb, 0x93, 0xd2, 0x86, 0xeb, - 0x94, 0xcf, 0x86, 0xeb, 0x94, 0xd2, 0x86, 0xeb, 0x94, 0xcf, 0x86, 0xeb, - 0x95, 0xd2, 0x86, 0xeb, 0x95, 0xcf, 0x86, 0xeb, 0x96, 0xd2, 0x86, 0xeb, - 0x96, 0xcf, 0x86, 0xeb, 0x97, 0xd2, 0x86, 0xeb, 0x97, 0xcf, 0x86, 0xeb, - 0x98, 0xd2, 0x86, 0xeb, 0x98, 0xcf, 0x86, 0xeb, 0x98, 0xd2, 0x86, 0xeb, - 0x99, 0xcf, 0x86, 0xeb, 0x99, 0xd2, 0x86, 0xeb, 0x9a, 0xcf, 0x86, 0xeb, - 0x9a, 0xd2, 0x86, 0xeb, 0x9a, 0xcf, 0x86, 0xeb, 0x9b, 0xd2, 0x86, 0xeb, - 0x9b, 0xcf, 0x97, 0xeb, 0x9c, 0xeb, 0x9b, 0xeb, 0x9c, 0xec, 0x97, 0xeb, - 0x9d, 0xeb, 0x9b, 0xeb, 0x9d, 0xec, 0x9b, 0xeb, 0x9d, 0xec, 0x9b, 0xeb, - 0x9e, 0xec, 0x9b, 0xeb, 0x9e, 0xec, 0x9b, 0xeb, 0x9f, 0xec, 0x9b, 0xeb, - 0x9f, 0xec, 0x9b, 0xeb, 0x9f, 0xec, 0x9b, 0xeb, 0xa0, 0xec, 0x9b, 0xeb, - 0xa0, 0xec, 0x9b, 0xeb, 0xa1, 0xec, 0x9b, 0xeb, 0xa1, 0xec, 0xa0, 0xeb, - 0xa1, 0xed, 0x9f, 0xeb, 0xa2, 0xed, 0xa0, 0xeb, 0xa2, 0xed, 0x9f, 0xeb, - 0xa3, 0xed, 0xa0, 0xeb, 0xa3, 0xed, 0x9f, 0xeb, 0xa3, 0xed, 0xa0, 0xeb, - 0xa4, 0xed, 0x9f, 0xeb, 0xa4, 0xed, 0xa0, 0xeb, 0xa5, 0xed, 0x9f, 0xeb, - 0xa5, 0xed, 0xa0, 0xeb, 0xa5, 0xed, 0xa4, 0xeb, 0xa6, 0xee, 0xa4, 0xeb, - 0xa6, 0xee, 0xa4, 0xeb, 0xa6, 0xee, 0xa4, 0xeb, 0xa7, 0xee, 0xa4, 0xeb, - 0xa7, 0xee, 0xa4, 0xeb, 0xa8, 0xee, 0xa4, 0xeb, 0xa8, 0xee, 0xa4, 0xeb, - 0xa8, 0xee, 0xa4, 0xeb, 0xa9, 0xee, 0xa4, 0xeb, 0xa9, 0xee, 0xa4, 0xeb, - 0xaa, 0xee, 0xa8, 0xeb, 0xaa, 0xef, 0xa8, 0xeb, 0xaa, 0xef, 0xa8, 0xeb, - 0xab, 0xef, 0xa8, 0xeb, 0xab, 0xef, 0xa8, 0xeb, 0xab, 0xef, 0xa8, 0xeb, - 0xac, 0xef, 0xa8, 0xeb, 0xac, 0xef, 0xa8, 0xeb, 0xac, 0xef, 0xa8, 0xeb, - 0xad, 0xef, 0xa8, 0xeb, 0xad, 0xef, 0xa8, 0xeb, 0xae, 0xef, 0xac, 0xeb, - 0xae, 0xf0, 0xa8, 0xeb, 0xae, 0xef, 0xac, 0xeb, 0xaf, 0xf0, 0xac, 0xeb, - 0xaf, 0xf0, 0xac, 0xeb, 0xaf, 0xf0, 0xac, 0xeb, 0xb0, 0xf0, 0xac, 0xeb, - 0xb0, 0xf0, 0xac, 0xeb, 0xb0, 0xf0, 0xac, 0xeb, 0xb1, 0xf0, 0xac, 0xeb, - 0xb1, 0xf0, 0xac, 0xeb, 0xb2, 0xf0, 0xb0, 0xeb, 0xb2, 0xf1, 0xac, 0xeb, - 0xb2, 0xf0, 0xb0, 0xeb, 0xb3, 0xf1, 0xb0, 0xeb, 0xb3, 0xf1, 0xb0, 0xeb, - 0xb3, 0xf1, 0xb0, 0xeb, 0xb4, 0xf1, 0xb0, 0xeb, 0xb4, 0xf1, 0xb0, 0xeb, - 0xb4, 0xf1, 0xb0, 0xeb, 0xb5, 0xf1, 0xb0, 0xeb, 0xb5, 0xf1, 0xb0, 0xeb, - 0xb5, 0xf1, 0xb4, 0xeb, 0xb6, 0xf2, 0xb0, 0xeb, 0xb6, 0xf1, 0xb4, 0xeb, - 0xb6, 0xf2, 0xb4, 0xeb, 0xb7, 0xf2, 0xb4, 0xeb, 0xb7, 0xf2, 0xb4, 0xeb, - 0xb7, 0xf2, 0xb4, 0xeb, 0xb8, 0xf2, 0xb4, 0xeb, 0xb8, 0xf2, 0xb4, 0xeb, - 0xb8, 0xf2, 0xb4, 0xeb, 0xb9, 0xf2, 0xb4, 0xeb, 0xb9, 0xf2, 0xb4, 0xeb, - 0xb9, 0xf2, 0xcc, 0xeb, 0xba, 0xdb, 0xcd, 0xeb, 0xba, 0xd8, 0xcc, 0xeb, - 0xba, 0xdb, 0xcd, 0xeb, 0xbb, 0xd8, 0xcc, 0xeb, 0xbb, 0xdb, 0xcd, 0xeb, - 0xbb, 0xd8, 0xcc, 0xeb, 0xbc, 0xdb, 0xcd, 0xeb, 0xbc, 0xd8, 0xcc, 0xeb, - 0xbc, 0xdb, 0xcd, 0xeb, 0xbd, 0xd8, 0xcc, 0xeb, 0xbd, 0xdb, 0xcd, 0xeb, - 0xbd, 0xd8, 0xcc, 0xeb, 0xbe, 0xdb, 0xcd, 0xeb, 0xbe, 0xd8, 0xcc, 0xeb, - 0xbe, 0xdb, 0xcd, 0xeb, 0xbf, 0xd8, 0xcc, 0xeb, 0xbf, 0xdb, 0xcd, 0xeb, - 0xbf, 0xd8, 0xcd, 0xeb, 0xc0, 0xd6, 0xcd, 0xeb, 0xc0, 0xd8, 0xcd, 0xeb, - 0xc0, 0xd6, 0xcd, 0xeb, 0xc1, 0xd8, 0xcd, 0xeb, 0xc1, 0xd6, 0xcd, 0xeb, - 0xc1, 0xd8, 0xcd, 0xeb, 0xc1, 0xd6, 0xcd, 0xeb, 0xc2, 0xd8, 0xcd, 0xeb, - 0xc2, 0xd6, 0xcd, 0xeb, 0xc2, 0xd8, 0xcd, 0xeb, 0xc3, 0xd6, 0xcd, 0xeb, - 0xc3, 0xd8, 0xcd, 0xeb, 0xc3, 0xd6, 0xcd, 0xeb, 0xc4, 0xd8, 0xcd, 0xeb, - 0xc4, 0xd6, 0xcd, 0xeb, 0xc4, 0xd8, 0xcd, 0xeb, 0xc5, 0xd6, 0xcd, 0xeb, - 0xc5, 0xd8, 0xcd, 0xeb, 0xc5, 0xd6, 0xcd, 0xeb, 0xc6, 0xd8, 0xcd, 0xeb, - 0xc6, 0xd6, 0xcd, 0xeb, 0xc6, 0xd8, 0xcd, 0xeb, 0xc6, 0xd6, 0xcd, 0xeb, - 0xc7, 0xd8, 0xcd, 0xeb, 0xc7, 0xd6, 0xcd, 0xeb, 0xc7, 0xd8, 0xcd, 0xeb, - 0xc8, 0xd6, 0xcd, 0xeb, 0xc8, 0xd8, 0xcd, 0xeb, 0xc8, 0xd6, 0xcd, 0xeb, - 0xc9, 0xd4, 0xcd, 0xeb, 0xc9, 0xd6, 0xcd, 0xeb, 0xc9, 0xd4, 0xcd, 0xeb, - 0xc9, 0xd6, 0xcd, 0xeb, 0xca, 0xd4, 0xcd, 0xeb, 0xca, 0xd6, 0xcd, 0xeb, - 0xca, 0xd4, 0xcd, 0xeb, 0xcb, 0xd6, 0xcd, 0xeb, 0xcb, 0xd4, 0xcd, 0xeb, - 0xcb, 0xd6, 0xcd, 0xeb, 0xcc, 0xd4, 0xcd, 0xeb, 0xcc, 0xd6, 0xcd, 0xeb, - 0xcc, 0xd4, 0xce, 0xeb, 0xcc, 0xd4, 0xcd, 0xeb, 0xcd, 0xd4, 0xce, 0xeb, - 0xcd, 0xd4, 0xcd, 0xeb, 0xcd, 0xd4, 0xce, 0xeb, 0xcd, 0xd4, 0xce, 0xeb, - 0xcd, 0xd4, 0xce, 0xeb, 0xcd, 0xd4, 0xce, 0xea, 0xcd, 0xd4, 0xcf, 0xeb, - 0xcd, 0xd4, 0xcf, 0xea, 0xcd, 0xd4, 0xcf, 0xeb, 0xcd, 0xd4, 0xd0, 0xea, - 0xcd, 0xd4, 0xd0, 0xeb, 0xcd, 0xd4, 0xd0, 0xea, 0xcd, 0xd4, 0xd0, 0xeb, - 0xcd, 0xd4, 0xd1, 0xea, 0xcd, 0xd4, 0xd1, 0xeb, 0xcd, 0xd4, 0xd1, 0xea, - 0xcd, 0xd4, 0xd2, 0xeb, 0xcd, 0xd4, 0xd2, 0xea, 0xcd, 0xd4, 0xd2, 0xeb, - 0xcd, 0xd4, 0xd2, 0xea, 0xcd, 0xd4, 0xd3, 0xeb, 0xcd, 0xd4, 0xd3, 0xea, - 0xcd, 0xd4, 0xd3, 0xeb, 0xcd, 0xd4, 0xd4, 0xea, 0xcd, 0xd4, 0xd4, 0xeb, - 0xcd, 0xd4, 0xd4, 0xea, 0xcd, 0xd4, 0xd4, 0xe9, 0xce, 0xd4, 0xd5, 0xea, - 0xcd, 0xd4, 0xd5, 0xe9, 0xce, 0xd4, 0xd5, 0xea, 0xcd, 0xd4, 0xd6, 0xe9, - 0xce, 0xd4, 0xd6, 0xea, 0xcd, 0xd4, 0xd6, 0xe9, 0xce, 0xd4, 0xd6, 0xea, - 0xcd, 0xd4, 0xd7, 0xe9, 0xce, 0xd4, 0xd7, 0xea, 0xcd, 0xd4, 0xd7, 0xe9, - 0xce, 0xd4, 0xd7, 0xea, 0xcd, 0xd4, 0xd8, 0xe9, 0xce, 0xd4, 0xd8, 0xea, - 0xcd, 0xd4, 0xd8, 0xe9, 0xce, 0xd4, 0xd9, 0xea, 0xcd, 0xd4, 0xd9, 0xe9, - 0xce, 0xd4, 0xd9, 0xea, 0xcd, 0xd4, 0xd9, 0xe9, 0xce, 0xd4, 0xda, 0xea, - 0xcd, 0xd4, 0xda, 0xe9, 0xce, 0xd4, 0xda, 0xec, 0xe6, 0xd4, 0xda, 0xee, - 0xe5, 0xd4, 0xdb, 0xec, 0xe6, 0xd4, 0xdb, 0xee, 0xe5, 0xd4, 0xdb, 0xec, - 0xe6, 0xd4, 0xdb, 0xee, 0xe5, 0xd4, 0xdc, 0xec, 0xe6, 0xd4, 0xdc, 0xee, - 0xe5, 0xd4, 0xdc, 0xec, 0xe6, 0xd4, 0xdd, 0xec, 0xe6, 0xd4, 0xdd, 0xec, - 0xe6, 0xd4, 0xdd, 0xec, 0xe6, 0xd4, 0xdd, 0xec, 0xe6, 0xd4, 0xde, 0xec, - 0xe6, 0xd4, 0xde, 0xec, 0xe6, 0xd4, 0xde, 0xec, 0xe6, 0xd4, 0xde, 0xec, - 0xe6, 0xd4, 0xdf, 0xec, 0xe6, 0xd4, 0xdf, 0xec, 0xe6, 0xd4, 0xdf, 0xec, - 0xe6, 0xd4, 0xdf, 0xec, 0xe6, 0xd4, 0xe0, 0xec, 0xe6, 0xd4, 0xe0, 0xec, - 0xe6, 0xd4, 0xe0, 0xec, 0xe6, 0xd4, 0xe1, 0xec, 0xe6, 0xd4, 0xe1, 0xec, - 0xe6, 0xd4, 0xe1, 0xec, 0xe6, 0xd4, 0xe1, 0xec, 0xe6, 0xd4, 0xe2, 0xec, - 0xe6, 0xd4, 0xe2, 0xec, 0xe6, 0xd4, 0xe2, 0xec, 0xe6, 0xd4, 0xe2, 0xec, - 0xe6, 0xd4, 0xe3, 0xec, 0xe6, 0xd4, 0xe3, 0xec, 0xe6, 0xd4, 0xe3, 0xec, - 0xe6, 0xd4, 0xe3, 0xec, 0xe6, 0xd4, 0xe4, 0xec, 0xe6, 0xd4, 0xe4, 0xec, - 0xe6, 0xd4, 0xe4, 0xeb, 0xe6, 0xd4, 0xe4, 0xec, 0xe6, 0xd4, 0xe5, 0xeb, - 0xe6, 0xd4, 0xe5, 0xec, 0xe6, 0xd4, 0xe5, 0xeb, 0xe6, 0xd4, 0xe5, 0xec, - 0xe6, 0xd4, 0xe6, 0xeb, 0xe6, 0xd4, 0xe6, 0xec, 0xe6, 0xd4, 0xe6, 0xeb, - 0xe6, 0xd4, 0xe6, 0xeb, 0xe6, 0xd4, 0xe6, 0xeb, 0xe7, 0xd4, 0xe6, 0xeb, - 0xe7, 0xd4, 0xe8, 0xeb, 0xe7, 0xd5, 0xe8, 0xeb, 0xe7, 0xd6, 0xe8, 0xeb, - 0xe8, 0xd5, 0xe8, 0xeb, 0xe8, 0xd6, 0xe8, 0xeb, 0xe8, 0xd5, 0xe8, 0xeb, - 0xe8, 0xd6, 0xe9, 0xeb, 0xe9, 0xd6, 0xe9, 0xeb, 0xe9, 0xd6, 0xe9, 0xeb, - 0xe9, 0xd6, 0xe9, 0xeb, 0xe9, 0xd6, 0xea, 0xeb, 0xea, 0xd6, 0xea, 0xeb, - 0xea, 0xd3, 0xeb, 0xeb, 0xea, 0xd3, 0xea, 0xeb, 0xea, 0xd3, 0xeb, 0xeb, - 0xeb, 0xd3, 0xeb, 0xeb, 0xeb, 0xd3, 0xeb, 0xeb, 0xeb, 0xd3, 0xeb, 0xec, - 0xeb, 0xd4, 0xec, 0xec, 0xec, 0xd4, 0xec, 0xec, 0xec, 0xd4, 0xec, 0xec, - 0xec, 0xd4, 0xec, 0xec, 0xec, 0xd4, 0xec, 0xec, 0xec, 0xd4, 0xed, 0xec, - 0xed, 0xd4, 0xed, 0xec, 0xed, 0xd4, 0xed, 0xec, 0xed, 0xd4, 0xed, 0xec, - 0xed, 0xd4, 0xee, 0xec, 0xee, 0xd4, 0xee, 0xec, 0xee, 0xd4, 0xee, 0xec, - 0xee, 0xd4, 0xee, 0xec, 0xee, 0xd4, 0xef, 0xec, 0xee, 0xd4, 0xef, 0xec, - 0xee, 0xd4, 0xef, 0xec, 0xef, 0xd4, 0xef, 0xec, 0xef, 0xd4, 0xf0, 0xec, - 0xf0, 0xd4, 0xf0, 0xec, 0xf0, 0xd4, 0xf0, 0xec, 0xf0, 0xd4, 0xf0, 0xec, - 0xf0, 0xd4, 0xf1, 0xec, 0xf1, 0xd4, 0xf1, 0xec, 0xf1, 0xd4, 0xf1, 0xec, - 0xf1, 0xd4, 0xf1, 0xec, 0xf1, 0xd4, 0xf2, 0xec, 0xf1, 0xd4, 0xf2, 0xec, - 0xf1, 0xd4, 0xf2, 0xec, 0xf1, 0xd4, 0xf2, 0xec, 0xf1, 0xd4, 0xf2, 0xec, - 0xf1, 0xd4, 0xf3, 0xec, 0xf1, 0xd4, 0xf3, 0xec, 0xf1, 0xd4, 0xf3, 0xec, - 0xf1, 0xd4, 0xf3, 0xec, 0xf1, 0xd4, 0xf4, 0xec, 0xf1, 0xd4, 0xf4, 0xec, - 0xf1, 0xd4, 0xf4, 0xec, 0xf1, 0xd4, 0xf4, 0xec, 0xf1, 0xd4, 0xf5, 0xec, - 0xf1, 0xd4, 0xf5, 0xec, 0xf1, 0xd4, 0xf5, 0xec, 0xf1, 0xd4, 0xf5, 0xec, - 0xf1, 0xd4, 0xf5, 0xec, 0xf1, 0xd4, 0xf6, 0xec, 0xf1, 0xd4, 0xf6, 0xec, - 0xf1, 0xd4, 0xf6, 0xec, 0xf1, 0xd4, 0xf6, 0xec, 0xf1, 0xd4, 0xf7, 0xec, - 0xf1, 0xd4, 0xf7, 0xec, 0xf1, 0xd4, 0xf7, 0xec, 0xf1, 0xd4, 0xf7, 0xec, - 0xf1, 0xd4, 0xf8, 0xec, 0xf1, 0xd4, 0xf8, 0xec, 0xf1, 0xd4, 0xf8, 0xec, - 0xf1, 0xd4, 0xf8, 0xec, 0xf1, 0xd4, 0xf8, 0xec, 0xf1, 0xd4, 0xf9, 0xec, - 0xf1, 0xd4, 0xf9, 0xec, 0xf1, 0xd4, 0xf9, 0xec, 0xf1, 0xd4, 0xf9, 0xec, - 0xf1, 0xd4, 0xfa, 0xec, 0xf1, 0xd4, 0xfa, 0xec, 0xf1, 0xd4, 0xfa, 0xec, - 0xf1, 0xd4, 0xfa, 0xec, 0xf1, 0xd4, 0xfa, 0xec, 0xf1, 0xd4, 0xfb, 0xec, - 0xf1, 0xd4, 0xfb, 0xec, 0xf1, 0xd4, 0xfb, 0xec, 0xf1, 0xd4, 0xfb, 0xec, - 0xf1, 0xd4, 0xfc, 0xec, 0xf1, 0xd4, 0xfc, 0xec, 0xf1, 0xd4, 0xfc, 0xec, - 0xf1, 0xd4, 0xfc, 0xec, 0xf1, 0xd4, 0xfc, 0xec, 0xf1, 0xd4, 0xfd, 0xec, - 0xf1, 0xd4, 0xfd, 0xec, 0xf1, 0xd4, 0xfd, 0xec, 0xf1, 0xd4, 0xfd, 0xec, - 0xf1, 0xd4, 0xfe, 0xec, 0xf1, 0xd4, 0xfe, 0xec, 0xf1, 0xd4, 0xfe, 0xec, - 0xf1, 0xd4, 0xfe, 0xec, 0xf1, 0xd4, 0xfe, 0xec, 0xf1, 0xd4, 0xff, 0xec, - 0xf1, 0xd4, 0xff, 0xec, 0xf1, 0xd4, 0x03, 0xef, 0x84, 0xd4, 0x0a, 0xee, - 0x85, 0xd4, 0x0f, 0xef, 0x84, 0xd4, 0x14, 0xee, 0x85, 0xd4, 0x17, 0xef, - 0x84, 0xd4, 0x1b, 0xee, 0x85, 0xd4, 0x1e, 0xef, 0x84, 0xd4, 0x20, 0xee, - 0x85, 0xd4, 0x23, 0xef, 0x84, 0xd4, 0x25, 0xee, 0x85, 0xd4, 0x27, 0xef, - 0x84, 0xd4, 0x29, 0xee, 0x85, 0xd4, 0x2b, 0xef, 0x84, 0xd4, 0x2d, 0xee, - 0x85, 0xd4, 0x2f, 0xef, 0x84, 0xd4, 0x31, 0xee, 0x85, 0xd4, 0x32, 0xef, - 0x84, 0xd4, 0x34, 0xee, 0x85, 0xd4, 0x35, 0xef, 0x84, 0xd4, 0x37, 0xee, - 0x85, 0xd4, 0x38, 0xef, 0x84, 0xd4, 0x3a, 0xee, 0x85, 0xd4, 0x3b, 0xef, - 0x84, 0xd4, 0x3c, 0xee, 0x85, 0xd4, 0x3e, 0xef, 0x84, 0xd4, 0x3f, 0xee, - 0x85, 0xd4, 0x40, 0xef, 0x84, 0xd4, 0x42, 0xee, 0x85, 0xd4, 0x43, 0xef, - 0x84, 0xd4, 0x44, 0xee, 0x85, 0xd4, 0x45, 0xef, 0x84, 0xd4, 0x46, 0xee, - 0x85, 0xd4, 0x47, 0xef, 0x84, 0xd4, 0x48, 0xee, 0x85, 0xd4, 0x49, 0xef, - 0x84, 0xd4, 0x4a, 0xee, 0x85, 0xd4, 0x4b, 0xef, 0x84, 0xd4, 0x4c, 0xee, - 0x85, 0xd4, 0x4d, 0xef, 0x84, 0xd4, 0x4e, 0xee, 0x85, 0xd4, 0x4f, 0xef, - 0x84, 0xd4, 0x50, 0xee, 0x85, 0xd4, 0x51, 0xef, 0x84, 0xd4, 0x52, 0xee, - 0x85, 0xd4, 0x53, 0xef, 0x84, 0xd4, 0x54, 0xee, 0x85, 0xd4, 0x55, 0xef, - 0x84, 0xd4, 0x56, 0xee, 0x85, 0xd4, 0x57, 0xef, 0x84, 0xd4, 0x58, 0xee, - 0x85, 0xd4, 0x58, 0xef, 0x84, 0xd4, 0x59, 0xee, 0x85, 0xd4, 0x5a, 0xef, - 0x84, 0xd4, 0x5b, 0xee, 0x85, 0xd4, 0x5c, 0xef, 0x84, 0xd4, 0x5d, 0xee, - 0x85, 0xd4, 0x5d, 0xef, 0x84, 0xd4, 0x5e, 0xee, 0x85, 0xd4, 0x5f, 0xef, - 0x84, 0xd4, 0x60, 0xee, 0x85, 0xd4, 0x60, 0xec, 0x85, 0xd4, 0x61, 0xee, - 0x85, 0xd4, 0x62, 0xec, 0x85, 0xd4, 0x63, 0xee, 0x85, 0xd4, 0x63, 0xec, - 0x85, 0xd4, 0x64, 0xee, 0x85, 0xd4, 0x65, 0xec, 0x85, 0xd4, 0x66, 0xee, - 0x85, 0xd4, 0x66, 0xec, 0x85, 0xd4, 0x67, 0xee, 0x85, 0xd4, 0x68, 0xec, - 0x85, 0xd4, 0x68, 0xee, 0x85, 0xd4, 0x69, 0xec, 0x85, 0xd4, 0x6a, 0xee, - 0x85, 0xd4, 0x6a, 0xec, 0x85, 0xd4, 0x6b, 0xee, 0x85, 0xd4, 0x6c, 0xec, - 0x85, 0xd4, 0x6c, 0xee, 0x85, 0xd4, 0x6d, 0xec, 0x85, 0xd4, 0x6e, 0xee, - 0x85, 0xd4, 0x6e, 0xec, 0x85, 0xd4, 0x6f, 0xee, 0x85, 0xd4, 0x70, 0xec, - 0x85, 0xd4, 0x70, 0xee, 0x85, 0xd4, 0x71, 0xec, 0x85, 0xd4, 0x72, 0xee, - 0x85, 0xd4, 0x72, 0xec, 0x85, 0xd4, 0x73, 0xee, 0x85, 0xd4, 0x73, 0xec, - 0x85, 0xd4, 0x74, 0xee, 0x85, 0xd4, 0x75, 0xec, 0x85, 0xd4, 0x75, 0xee, - 0x85, 0xd4, 0x76, 0xec, 0x85, 0xd4, 0x76, 0xee, 0x85, 0xd4, 0x77, 0xec, - 0x85, 0xd4, 0x78, 0xee, 0x85, 0xd4, 0x78, 0xec, 0x85, 0xd4, 0x79, 0xeb, - 0x86, 0xd4, 0x79, 0xec, 0x85, 0xd4, 0x7a, 0xeb, 0x86, 0xd4, 0x7a, 0xec, - 0x85, 0xd4, 0x7b, 0xeb, 0x86, 0xd4, 0x7c, 0xec, 0x85, 0xd4, 0x7c, 0xeb, - 0x86, 0xd4, 0x7d, 0xec, 0x85, 0xd4, 0x7d, 0xeb, 0x86, 0xd4, 0x7e, 0xec, - 0x85, 0xd4, 0x7e, 0xeb, 0x86, 0xd4, 0x7f, 0xec, 0x85, 0xd4, 0x7f, 0xeb, - 0x86, 0xd4, 0x80, 0xec, 0x85, 0xd4, 0x81, 0xeb, 0x86, 0xd4, 0x81, 0xec, - 0x85, 0xd4, 0x82, 0xeb, 0x86, 0xd4, 0x82, 0xec, 0x85, 0xd4, 0x83, 0xeb, - 0x86, 0xd4, 0x83, 0xec, 0x85, 0xd4, 0x84, 0xeb, 0x86, 0xd4, 0x84, 0xeb, - 0x86, 0xd4, 0x85, 0xeb, 0x86, 0xd4, 0x85, 0xeb, 0x86, 0xd4, 0x85, 0xeb, - 0x86, 0xd4, 0x85, 0xeb, 0x86, 0xd4, 0x85, 0xeb, 0x87, 0xd4, 0x85, 0xeb, - 0x87, 0xd4, 0x86, 0xeb, 0x88, 0xd2, 0x85, 0xeb, 0x88, 0xd4, 0x86, 0xeb, - 0x89, 0xd2, 0x85, 0xeb, 0x89, 0xd4, 0x86, 0xeb, 0x8a, 0xd2, 0x85, 0xeb, - 0x8a, 0xd4, 0x86, 0xeb, 0x8b, 0xd2, 0x85, 0xeb, 0x8b, 0xd4, 0x86, 0xeb, - 0x8c, 0xd2, 0x85, 0xeb, 0x8c, 0xd4, 0x86, 0xeb, 0x8d, 0xd2, 0x85, 0xeb, - 0x8d, 0xd4, 0x86, 0xeb, 0x8e, 0xd2, 0x85, 0xeb, 0x8e, 0xd4, 0x86, 0xeb, - 0x8e, 0xd2, 0x85, 0xeb, 0x8f, 0xd4, 0x86, 0xeb, 0x8f, 0xd2, 0x85, 0xeb, - 0x90, 0xd4, 0x86, 0xeb, 0x90, 0xd2, 0x85, 0xeb, 0x91, 0xd4, 0x86, 0xeb, - 0x91, 0xd2, 0x85, 0xeb, 0x92, 0xd4, 0x86, 0xeb, 0x92, 0xd2, 0x85, 0xeb, - 0x93, 0xd4, 0x86, 0xeb, 0x93, 0xd2, 0x85, 0xeb, 0x94, 0xd4, 0x86, 0xeb, - 0x94, 0xd2, 0x85, 0xeb, 0x94, 0xd4, 0x86, 0xeb, 0x95, 0xd2, 0x85, 0xeb, - 0x95, 0xd4, 0x86, 0xeb, 0x96, 0xd2, 0x85, 0xeb, 0x96, 0xd4, 0x86, 0xeb, - 0x97, 0xd2, 0x86, 0xeb, 0x97, 0xce, 0x86, 0xeb, 0x98, 0xd2, 0x86, 0xeb, - 0x98, 0xce, 0x86, 0xeb, 0x98, 0xd2, 0x86, 0xeb, 0x99, 0xce, 0x86, 0xeb, - 0x99, 0xd2, 0x86, 0xeb, 0x9a, 0xce, 0x86, 0xeb, 0x9a, 0xd2, 0x86, 0xeb, - 0x9a, 0xce, 0x86, 0xeb, 0x9b, 0xd2, 0x99, 0xeb, 0x9b, 0xeb, 0x99, 0xeb, - 0x9c, 0xeb, 0x99, 0xeb, 0x9c, 0xeb, 0x99, 0xeb, 0x9d, 0xeb, 0x99, 0xeb, - 0x9d, 0xeb, 0x99, 0xeb, 0x9d, 0xeb, 0x99, 0xeb, 0x9e, 0xeb, 0x99, 0xeb, - 0x9e, 0xeb, 0x9e, 0xeb, 0x9f, 0xec, 0x99, 0xeb, 0x9f, 0xeb, 0x9e, 0xeb, - 0x9f, 0xec, 0x9d, 0xeb, 0xa0, 0xec, 0x9e, 0xeb, 0xa0, 0xec, 0x9d, 0xeb, - 0xa1, 0xec, 0x9e, 0xeb, 0xa1, 0xec, 0x9d, 0xeb, 0xa1, 0xec, 0x9e, 0xeb, - 0xa2, 0xec, 0x9d, 0xeb, 0xa2, 0xec, 0x9e, 0xeb, 0xa3, 0xec, 0x9d, 0xeb, - 0xa3, 0xec, 0x9e, 0xeb, 0xa3, 0xec, 0xa2, 0xeb, 0xa4, 0xed, 0xa2, 0xeb, - 0xa4, 0xed, 0xa2, 0xeb, 0xa5, 0xed, 0xa2, 0xeb, 0xa5, 0xed, 0xa2, 0xeb, - 0xa5, 0xed, 0xa2, 0xeb, 0xa6, 0xed, 0xa2, 0xeb, 0xa6, 0xed, 0xa2, 0xeb, - 0xa6, 0xed, 0xa2, 0xeb, 0xa7, 0xed, 0xa2, 0xeb, 0xa7, 0xed, 0xa2, 0xeb, - 0xa8, 0xed, 0xa6, 0xeb, 0xa8, 0xee, 0xa6, 0xeb, 0xa8, 0xee, 0xa6, 0xeb, - 0xa9, 0xee, 0xa6, 0xeb, 0xa9, 0xee, 0xa6, 0xeb, 0xaa, 0xee, 0xa6, 0xeb, - 0xaa, 0xee, 0xa6, 0xeb, 0xaa, 0xee, 0xa6, 0xeb, 0xab, 0xee, 0xa6, 0xeb, - 0xab, 0xee, 0xa6, 0xeb, 0xab, 0xee, 0xa6, 0xeb, 0xac, 0xee, 0xab, 0xeb, - 0xac, 0xef, 0xaa, 0xeb, 0xac, 0xef, 0xab, 0xeb, 0xad, 0xef, 0xaa, 0xeb, - 0xad, 0xef, 0xab, 0xeb, 0xae, 0xef, 0xaa, 0xeb, 0xae, 0xef, 0xab, 0xeb, - 0xae, 0xef, 0xaa, 0xeb, 0xaf, 0xef, 0xab, 0xeb, 0xaf, 0xef, 0xaa, 0xeb, - 0xaf, 0xef, 0xab, 0xeb, 0xb0, 0xef, 0xaf, 0xeb, 0xb0, 0xf0, 0xab, 0xeb, - 0xb0, 0xef, 0xaf, 0xeb, 0xb1, 0xf0, 0xae, 0xeb, 0xb1, 0xf0, 0xaf, 0xeb, - 0xb2, 0xf0, 0xae, 0xeb, 0xb2, 0xf0, 0xaf, 0xeb, 0xb2, 0xf0, 0xae, 0xeb, - 0xb3, 0xf0, 0xaf, 0xeb, 0xb3, 0xf0, 0xae, 0xeb, 0xb3, 0xf0, 0xaf, 0xeb, - 0xb4, 0xf0, 0xb3, 0xeb, 0xb4, 0xf1, 0xaf, 0xeb, 0xb4, 0xf0, 0xb3, 0xeb, - 0xb5, 0xf1, 0xb2, 0xeb, 0xb5, 0xf1, 0xb3, 0xeb, 0xb5, 0xf1, 0xb2, 0xeb, - 0xb6, 0xf1, 0xb3, 0xeb, 0xb6, 0xf1, 0xb2, 0xeb, 0xb6, 0xf1, 0xb3, 0xeb, - 0xb7, 0xf1, 0xb2, 0xeb, 0xb7, 0xf1, 0xb3, 0xeb, 0xb7, 0xf1, 0xb6, 0xeb, - 0xb8, 0xf2, 0xb3, 0xeb, 0xb8, 0xf1, 0xb6, 0xeb, 0xb8, 0xf2, 0xb6, 0xeb, - 0xb9, 0xf2, 0xb6, 0xeb, 0xb9, 0xf2, 0xb6, 0xeb, 0xb9, 0xf2, 0xb6, 0xeb, - 0xba, 0xf2, 0xcd, 0xeb, 0xba, 0xd8, 0xcc, 0xeb, 0xba, 0xdb, 0xcd, 0xeb, - 0xbb, 0xd8, 0xcc, 0xeb, 0xbb, 0xdb, 0xcd, 0xeb, 0xbb, 0xd8, 0xcc, 0xeb, - 0xbc, 0xdb, 0xcd, 0xeb, 0xbc, 0xd8, 0xcc, 0xeb, 0xbc, 0xdb, 0xcd, 0xeb, - 0xbd, 0xd8, 0xcc, 0xeb, 0xbd, 0xdb, 0xcd, 0xeb, 0xbd, 0xd8, 0xcc, 0xeb, - 0xbe, 0xdb, 0xcd, 0xeb, 0xbe, 0xd8, 0xcd, 0xeb, 0xbe, 0xd5, 0xcd, 0xeb, - 0xbf, 0xd8, 0xcd, 0xeb, 0xbf, 0xd5, 0xcd, 0xeb, 0xbf, 0xd8, 0xcd, 0xeb, - 0xc0, 0xd5, 0xcd, 0xeb, 0xc0, 0xd8, 0xcd, 0xeb, 0xc0, 0xd5, 0xcd, 0xeb, - 0xc1, 0xd8, 0xcd, 0xeb, 0xc1, 0xd5, 0xcd, 0xeb, 0xc1, 0xd8, 0xcd, 0xeb, - 0xc1, 0xd5, 0xcd, 0xeb, 0xc2, 0xd8, 0xcd, 0xeb, 0xc2, 0xd5, 0xcd, 0xeb, - 0xc2, 0xd8, 0xcd, 0xeb, 0xc3, 0xd5, 0xcd, 0xeb, 0xc3, 0xd8, 0xcd, 0xeb, - 0xc3, 0xd5, 0xcd, 0xeb, 0xc4, 0xd8, 0xcd, 0xeb, 0xc4, 0xd5, 0xcd, 0xeb, - 0xc4, 0xd8, 0xcd, 0xeb, 0xc5, 0xd5, 0xcd, 0xeb, 0xc5, 0xd8, 0xcd, 0xeb, - 0xc5, 0xd5, 0xcd, 0xeb, 0xc6, 0xd8, 0xcd, 0xeb, 0xc6, 0xd5, 0xcd, 0xeb, - 0xc6, 0xd8, 0xcd, 0xeb, 0xc6, 0xd5, 0xcd, 0xeb, 0xc7, 0xd8, 0xcd, 0xeb, - 0xc7, 0xd5, 0xcd, 0xeb, 0xc7, 0xd8, 0xcd, 0xeb, 0xc8, 0xd5, 0xcd, 0xeb, - 0xc8, 0xd8, 0xcd, 0xeb, 0xc8, 0xd5, 0xcd, 0xeb, 0xc9, 0xd4, 0xcd, 0xeb, - 0xc9, 0xd5, 0xcd, 0xeb, 0xc9, 0xd4, 0xcd, 0xeb, 0xc9, 0xd5, 0xcd, 0xeb, - 0xca, 0xd4, 0xcd, 0xeb, 0xca, 0xd5, 0xcd, 0xeb, 0xca, 0xd4, 0xcd, 0xeb, - 0xcb, 0xd5, 0xcd, 0xeb, 0xcb, 0xd4, 0xcd, 0xeb, 0xcb, 0xd5, 0xcd, 0xeb, - 0xcc, 0xd4, 0xcd, 0xeb, 0xcc, 0xd5, 0xcd, 0xeb, 0xcc, 0xd4, 0xcd, 0xeb, - 0xcc, 0xd5, 0xcd, 0xeb, 0xcd, 0xd4, 0xce, 0xeb, 0xcd, 0xd4, 0xcd, 0xeb, - 0xcd, 0xd4, 0xce, 0xeb, 0xcd, 0xd4, 0xce, 0xeb, 0xcd, 0xd4, 0xce, 0xeb, - 0xcd, 0xd4, 0xce, 0xeb, 0xcd, 0xd4, 0xcf, 0xeb, 0xcd, 0xd4, 0xcf, 0xeb, - 0xcd, 0xd4, 0xcf, 0xeb, 0xcd, 0xd4, 0xd0, 0xea, 0xcd, 0xd4, 0xd0, 0xeb, - 0xcd, 0xd4, 0xd0, 0xea, 0xcd, 0xd4, 0xd0, 0xeb, 0xcd, 0xd4, 0xd1, 0xea, - 0xcd, 0xd4, 0xd1, 0xeb, 0xcd, 0xd4, 0xd1, 0xea, 0xcd, 0xd4, 0xd2, 0xeb, - 0xcd, 0xd4, 0xd2, 0xea, 0xcd, 0xd4, 0xd2, 0xeb, 0xcd, 0xd4, 0xd2, 0xea, - 0xcd, 0xd4, 0xd3, 0xeb, 0xcd, 0xd4, 0xd3, 0xea, 0xcd, 0xd4, 0xd3, 0xeb, - 0xcd, 0xd4, 0xd4, 0xea, 0xcd, 0xd4, 0xd4, 0xeb, 0xcd, 0xd4, 0xd4, 0xea, - 0xcd, 0xd4, 0xd4, 0xe9, 0xce, 0xd4, 0xd5, 0xea, 0xcd, 0xd4, 0xd5, 0xe9, - 0xce, 0xd4, 0xd5, 0xea, 0xcd, 0xd4, 0xd6, 0xe9, 0xce, 0xd4, 0xd6, 0xea, - 0xcd, 0xd4, 0xd6, 0xe9, 0xce, 0xd4, 0xd6, 0xea, 0xcd, 0xd4, 0xd7, 0xe9, - 0xce, 0xd4, 0xd7, 0xea, 0xcd, 0xd4, 0xd7, 0xe9, 0xce, 0xd4, 0xd7, 0xea, - 0xcd, 0xd4, 0xd8, 0xe9, 0xce, 0xd4, 0xd8, 0xea, 0xcd, 0xd4, 0xd8, 0xe9, - 0xce, 0xd4, 0xd9, 0xea, 0xcd, 0xd4, 0xd9, 0xe9, 0xce, 0xd4, 0xd9, 0xea, - 0xcd, 0xd4, 0xd9, 0xe9, 0xce, 0xd4, 0xda, 0xea, 0xcd, 0xd4, 0xda, 0xe9, - 0xce, 0xd4, 0xda, 0xed, 0xe6, 0xd4, 0xda, 0xee, 0xe5, 0xd4, 0xdb, 0xed, - 0xe6, 0xd4, 0xdb, 0xee, 0xe5, 0xd4, 0xdb, 0xed, 0xe6, 0xd4, 0xdb, 0xee, - 0xe5, 0xd4, 0xdc, 0xed, 0xe6, 0xd4, 0xdc, 0xee, 0xe5, 0xd4, 0xdc, 0xed, - 0xe6, 0xd4, 0xdd, 0xeb, 0xe6, 0xd4, 0xdd, 0xed, 0xe6, 0xd4, 0xdd, 0xeb, - 0xe6, 0xd4, 0xdd, 0xed, 0xe6, 0xd4, 0xde, 0xeb, 0xe6, 0xd4, 0xde, 0xed, - 0xe6, 0xd4, 0xde, 0xeb, 0xe6, 0xd4, 0xde, 0xed, 0xe6, 0xd4, 0xdf, 0xeb, - 0xe6, 0xd4, 0xdf, 0xed, 0xe6, 0xd4, 0xdf, 0xeb, 0xe6, 0xd4, 0xdf, 0xed, - 0xe6, 0xd4, 0xe0, 0xeb, 0xe6, 0xd4, 0xe0, 0xed, 0xe6, 0xd4, 0xe0, 0xeb, - 0xe6, 0xd4, 0xe1, 0xed, 0xe6, 0xd4, 0xe1, 0xeb, 0xe6, 0xd4, 0xe1, 0xed, - 0xe6, 0xd4, 0xe1, 0xeb, 0xe6, 0xd4, 0xe2, 0xed, 0xe6, 0xd4, 0xe2, 0xeb, - 0xe6, 0xd4, 0xe2, 0xed, 0xe6, 0xd4, 0xe2, 0xeb, 0xe6, 0xd4, 0xe3, 0xed, - 0xe6, 0xd4, 0xe3, 0xeb, 0xe6, 0xd4, 0xe3, 0xed, 0xe6, 0xd4, 0xe3, 0xeb, - 0xe6, 0xd4, 0xe4, 0xed, 0xe6, 0xd4, 0xe4, 0xeb, 0xe6, 0xd4, 0xe4, 0xeb, - 0xe6, 0xd4, 0xe4, 0xeb, 0xe6, 0xd4, 0xe5, 0xeb, 0xe6, 0xd4, 0xe5, 0xeb, - 0xe6, 0xd4, 0xe5, 0xeb, 0xe6, 0xd4, 0xe5, 0xeb, 0xe6, 0xd4, 0xe6, 0xeb, - 0xe6, 0xd4, 0xe6, 0xeb, 0xe6, 0xd3, 0xe6, 0xeb, 0xe6, 0xd4, 0xe6, 0xeb, - 0xe6, 0xd3, 0xe6, 0xeb, 0xe7, 0xd4, 0xe6, 0xeb, 0xe7, 0xd3, 0xe8, 0xeb, - 0xe7, 0xd5, 0xe8, 0xeb, 0xe7, 0xd5, 0xe8, 0xeb, 0xe8, 0xd5, 0xe8, 0xeb, - 0xe8, 0xd5, 0xe8, 0xeb, 0xe8, 0xd5, 0xe8, 0xeb, 0xe8, 0xd5, 0xe9, 0xeb, - 0xe9, 0xd5, 0xe9, 0xeb, 0xe9, 0xd5, 0xe9, 0xeb, 0xe9, 0xd5, 0xe9, 0xeb, - 0xe9, 0xd5, 0xea, 0xeb, 0xea, 0xd3, 0xea, 0xeb, 0xea, 0xd3, 0xea, 0xeb, - 0xea, 0xd3, 0xea, 0xeb, 0xea, 0xd3, 0xeb, 0xeb, 0xeb, 0xd3, 0xeb, 0xeb, - 0xeb, 0xd3, 0xeb, 0xeb, 0xeb, 0xd3, 0xeb, 0xeb, 0xeb, 0xd3, 0xec, 0xeb, - 0xec, 0xd3, 0xec, 0xeb, 0xec, 0xd3, 0xec, 0xeb, 0xec, 0xd3, 0xec, 0xeb, - 0xec, 0xd3, 0xec, 0xeb, 0xec, 0xd3, 0xed, 0xeb, 0xed, 0xd3, 0xed, 0xec, - 0xed, 0xd4, 0xed, 0xec, 0xed, 0xd4, 0xed, 0xec, 0xed, 0xd4, 0xee, 0xec, - 0xee, 0xd4, 0xee, 0xec, 0xee, 0xd4, 0xee, 0xec, 0xee, 0xd4, 0xee, 0xec, - 0xee, 0xd4, 0xef, 0xec, 0xef, 0xd4, 0xef, 0xec, 0xef, 0xd4, 0xef, 0xec, - 0xef, 0xd4, 0xef, 0xec, 0xef, 0xd4, 0xf0, 0xec, 0xf0, 0xd4, 0xf0, 0xec, - 0xf0, 0xd4, 0xf0, 0xec, 0xf0, 0xd4, 0xf0, 0xec, 0xf0, 0xd4, 0xf1, 0xec, - 0xf0, 0xd4, 0xf1, 0xec, 0xf1, 0xd4, 0xf1, 0xec, 0xf1, 0xd4, 0xf1, 0xec, - 0xf1, 0xd4, 0xf2, 0xec, 0xf1, 0xd4, 0xf2, 0xec, 0xf1, 0xd4, 0xf2, 0xec, - 0xf1, 0xd4, 0xf2, 0xec, 0xf1, 0xd4, 0xf2, 0xec, 0xf1, 0xd4, 0xf3, 0xec, - 0xf1, 0xd4, 0xf3, 0xec, 0xf1, 0xd4, 0xf3, 0xec, 0xf1, 0xd4, 0xf3, 0xec, - 0xf1, 0xd4, 0xf4, 0xec, 0xf1, 0xd4, 0xf4, 0xec, 0xf1, 0xd4, 0xf4, 0xec, - 0xf1, 0xd4, 0xf4, 0xec, 0xf1, 0xd4, 0xf5, 0xec, 0xf1, 0xd4, 0xf5, 0xec, - 0xf1, 0xd4, 0xf5, 0xec, 0xf1, 0xd4, 0xf5, 0xec, 0xf1, 0xd4, 0xf5, 0xec, - 0xf1, 0xd4, 0xf6, 0xec, 0xf1, 0xd4, 0xf6, 0xec, 0xf1, 0xd4, 0xf6, 0xec, - 0xf1, 0xd4, 0xf6, 0xec, 0xf1, 0xd4, 0xf7, 0xec, 0xf1, 0xd4, 0xf7, 0xec, - 0xf1, 0xd4, 0xf7, 0xec, 0xf1, 0xd4, 0xf7, 0xec, 0xf1, 0xd4, 0xf8, 0xec, - 0xf1, 0xd4, 0xf8, 0xec, 0xf1, 0xd4, 0xf8, 0xec, 0xf1, 0xd4, 0xf8, 0xec, - 0xf1, 0xd4, 0xf8, 0xec, 0xf1, 0xd4, 0xf9, 0xec, 0xf1, 0xd4, 0xf9, 0xec, - 0xf1, 0xd4, 0xf9, 0xec, 0xf1, 0xd4, 0xf9, 0xec, 0xf1, 0xd4, 0xfa, 0xec, - 0xf1, 0xd4, 0xfa, 0xec, 0xf1, 0xd4, 0xfa, 0xec, 0xf1, 0xd4, 0xfa, 0xec, - 0xf1, 0xd4, 0xfa, 0xec, 0xf1, 0xd4, 0xfb, 0xec, 0xf1, 0xd4, 0xfb, 0xec, - 0xf1, 0xd4, 0xfb, 0xec, 0xf1, 0xd4, 0xfb, 0xec, 0xf1, 0xd4, 0xfc, 0xec, - 0xf1, 0xd4, 0xfc, 0xec, 0xf1, 0xd4, 0xfc, 0xec, 0xf1, 0xd4, 0xfc, 0xec, - 0xf1, 0xd4, 0xfc, 0xec, 0xf1, 0xd4, 0xfd, 0xec, 0xf1, 0xd4, 0xfd, 0xec, - 0xf1, 0xd4, 0xfd, 0xec, 0xf1, 0xd4, 0xfd, 0xec, 0xf1, 0xd4, 0xfe, 0xec, - 0xf1, 0xd4, 0xfe, 0xec, 0xf1, 0xd4, 0xfe, 0xec, 0xf1, 0xd4, 0xfe, 0xec, - 0xf1, 0xd4, 0xfe, 0xec, 0xf1, 0xd4, 0xff, 0xec, 0xf1, 0xd4, 0xff, 0xec, - 0xf1, 0xd4, 0x03, 0xef, 0x84, 0xd5, 0x0a, 0xf1, 0x84, 0xd5, 0x0f, 0xef, - 0x84, 0xd5, 0x14, 0xf1, 0x84, 0xd5, 0x17, 0xef, 0x84, 0xd5, 0x1b, 0xf1, - 0x84, 0xd5, 0x1e, 0xef, 0x84, 0xd5, 0x20, 0xf1, 0x84, 0xd5, 0x23, 0xef, - 0x84, 0xd5, 0x25, 0xf1, 0x84, 0xd5, 0x27, 0xef, 0x84, 0xd5, 0x29, 0xf1, - 0x84, 0xd5, 0x2b, 0xef, 0x84, 0xd5, 0x2d, 0xf1, 0x84, 0xd5, 0x2f, 0xef, - 0x84, 0xd5, 0x31, 0xf1, 0x84, 0xd5, 0x32, 0xef, 0x84, 0xd5, 0x34, 0xf1, - 0x84, 0xd5, 0x35, 0xef, 0x84, 0xd5, 0x37, 0xf1, 0x84, 0xd5, 0x38, 0xef, - 0x84, 0xd5, 0x3a, 0xf1, 0x84, 0xd5, 0x3b, 0xef, 0x84, 0xd5, 0x3c, 0xee, - 0x85, 0xd5, 0x3e, 0xef, 0x84, 0xd5, 0x3f, 0xee, 0x85, 0xd5, 0x40, 0xef, - 0x84, 0xd5, 0x42, 0xee, 0x85, 0xd5, 0x43, 0xef, 0x84, 0xd5, 0x44, 0xee, - 0x85, 0xd5, 0x45, 0xef, 0x84, 0xd5, 0x46, 0xee, 0x85, 0xd5, 0x47, 0xef, - 0x84, 0xd5, 0x48, 0xee, 0x85, 0xd5, 0x49, 0xef, 0x84, 0xd5, 0x4a, 0xee, - 0x85, 0xd5, 0x4b, 0xef, 0x84, 0xd5, 0x4c, 0xee, 0x85, 0xd5, 0x4d, 0xef, - 0x84, 0xd5, 0x4e, 0xee, 0x85, 0xd5, 0x4f, 0xef, 0x84, 0xd5, 0x50, 0xee, - 0x85, 0xd5, 0x51, 0xef, 0x84, 0xd5, 0x52, 0xee, 0x85, 0xd5, 0x53, 0xef, - 0x84, 0xd5, 0x54, 0xee, 0x85, 0xd5, 0x55, 0xef, 0x84, 0xd5, 0x56, 0xee, - 0x85, 0xd5, 0x57, 0xef, 0x84, 0xd5, 0x58, 0xee, 0x85, 0xd5, 0x58, 0xef, - 0x84, 0xd5, 0x59, 0xee, 0x85, 0xd5, 0x5a, 0xef, 0x84, 0xd5, 0x5b, 0xee, - 0x85, 0xd5, 0x5c, 0xef, 0x84, 0xd5, 0x5d, 0xee, 0x85, 0xd5, 0x5d, 0xec, - 0x85, 0xd5, 0x5e, 0xee, 0x85, 0xd5, 0x5f, 0xec, 0x85, 0xd5, 0x60, 0xee, - 0x85, 0xd5, 0x60, 0xec, 0x85, 0xd5, 0x61, 0xee, 0x85, 0xd5, 0x62, 0xec, - 0x85, 0xd5, 0x63, 0xee, 0x85, 0xd5, 0x63, 0xec, 0x85, 0xd5, 0x64, 0xee, - 0x85, 0xd5, 0x65, 0xec, 0x85, 0xd5, 0x66, 0xee, 0x85, 0xd5, 0x66, 0xec, - 0x85, 0xd5, 0x67, 0xee, 0x85, 0xd5, 0x68, 0xec, 0x85, 0xd5, 0x68, 0xee, - 0x85, 0xd5, 0x69, 0xec, 0x85, 0xd5, 0x6a, 0xee, 0x85, 0xd5, 0x6a, 0xec, - 0x85, 0xd5, 0x6b, 0xee, 0x85, 0xd5, 0x6c, 0xec, 0x85, 0xd5, 0x6c, 0xee, - 0x85, 0xd5, 0x6d, 0xec, 0x85, 0xd5, 0x6e, 0xee, 0x85, 0xd5, 0x6e, 0xec, - 0x85, 0xd5, 0x6f, 0xee, 0x85, 0xd5, 0x70, 0xec, 0x85, 0xd5, 0x70, 0xee, - 0x85, 0xd5, 0x71, 0xec, 0x85, 0xd5, 0x72, 0xee, 0x85, 0xd5, 0x72, 0xec, - 0x85, 0xd5, 0x73, 0xee, 0x85, 0xd5, 0x73, 0xec, 0x85, 0xd5, 0x74, 0xee, - 0x85, 0xd5, 0x75, 0xec, 0x85, 0xd5, 0x75, 0xee, 0x85, 0xd5, 0x76, 0xec, - 0x85, 0xd5, 0x76, 0xee, 0x85, 0xd5, 0x77, 0xec, 0x85, 0xd5, 0x78, 0xee, - 0x85, 0xd5, 0x78, 0xec, 0x85, 0xd5, 0x79, 0xec, 0x86, 0xd5, 0x79, 0xec, - 0x85, 0xd5, 0x7a, 0xec, 0x86, 0xd5, 0x7a, 0xec, 0x85, 0xd5, 0x7b, 0xec, - 0x86, 0xd5, 0x7c, 0xec, 0x85, 0xd5, 0x7c, 0xec, 0x86, 0xd5, 0x7d, 0xec, - 0x85, 0xd5, 0x7d, 0xec, 0x86, 0xd5, 0x7e, 0xec, 0x85, 0xd5, 0x7e, 0xec, - 0x86, 0xd5, 0x7f, 0xec, 0x85, 0xd5, 0x7f, 0xec, 0x86, 0xd5, 0x80, 0xec, - 0x85, 0xd5, 0x81, 0xec, 0x86, 0xd5, 0x81, 0xec, 0x85, 0xd5, 0x82, 0xec, - 0x86, 0xd5, 0x82, 0xec, 0x85, 0xd5, 0x83, 0xec, 0x86, 0xd5, 0x83, 0xec, - 0x85, 0xd5, 0x84, 0xec, 0x86, 0xd5, 0x84, 0xec, 0x85, 0xd5, 0x85, 0xec, - 0x86, 0xd5, 0x85, 0xec, 0x86, 0xd5, 0x85, 0xec, 0x86, 0xd5, 0x85, 0xec, - 0x86, 0xd5, 0x85, 0xec, 0x87, 0xd5, 0x85, 0xec, 0x87, 0xd5, 0x85, 0xec, - 0x88, 0xd5, 0x85, 0xec, 0x88, 0xd5, 0x85, 0xec, 0x89, 0xd5, 0x85, 0xec, - 0x89, 0xd5, 0x86, 0xec, 0x8a, 0xd2, 0x85, 0xec, 0x8a, 0xd5, 0x86, 0xec, - 0x8b, 0xd2, 0x85, 0xec, 0x8b, 0xd5, 0x86, 0xec, 0x8c, 0xd2, 0x85, 0xec, - 0x8c, 0xd5, 0x86, 0xec, 0x8d, 0xd2, 0x85, 0xec, 0x8d, 0xd5, 0x86, 0xec, - 0x8e, 0xd2, 0x85, 0xec, 0x8e, 0xd5, 0x86, 0xec, 0x8e, 0xd2, 0x85, 0xec, - 0x8f, 0xd5, 0x86, 0xec, 0x8f, 0xd2, 0x85, 0xec, 0x90, 0xd5, 0x86, 0xec, - 0x90, 0xd2, 0x85, 0xec, 0x91, 0xd5, 0x86, 0xec, 0x91, 0xd2, 0x85, 0xec, - 0x92, 0xd5, 0x86, 0xec, 0x92, 0xd2, 0x85, 0xec, 0x93, 0xd5, 0x86, 0xec, - 0x93, 0xd2, 0x85, 0xec, 0x94, 0xd5, 0x86, 0xec, 0x94, 0xd2, 0x85, 0xec, - 0x94, 0xd5, 0x86, 0xec, 0x95, 0xd2, 0x85, 0xec, 0x95, 0xd5, 0x86, 0xec, - 0x96, 0xd2, 0x85, 0xec, 0x96, 0xd5, 0x86, 0xec, 0x97, 0xd2, 0x86, 0xec, - 0x97, 0xcf, 0x86, 0xec, 0x98, 0xd2, 0x86, 0xec, 0x98, 0xcf, 0x86, 0xec, - 0x98, 0xd2, 0x86, 0xec, 0x99, 0xcf, 0x86, 0xec, 0x99, 0xd2, 0x86, 0xec, - 0x9a, 0xcf, 0x86, 0xec, 0x9a, 0xd2, 0x96, 0xec, 0x9a, 0xeb, 0x97, 0xec, - 0x9b, 0xeb, 0x96, 0xec, 0x9b, 0xeb, 0x97, 0xec, 0x9c, 0xeb, 0x9b, 0xec, - 0x9c, 0xec, 0x9b, 0xec, 0x9d, 0xec, 0x9b, 0xec, 0x9d, 0xec, 0x9b, 0xec, - 0x9d, 0xec, 0x9b, 0xec, 0x9e, 0xec, 0x9b, 0xec, 0x9e, 0xec, 0x9b, 0xec, - 0x9f, 0xec, 0x9b, 0xec, 0x9f, 0xec, 0x9b, 0xec, 0x9f, 0xec, 0x9b, 0xec, - 0xa0, 0xec, 0x9b, 0xec, 0xa0, 0xec, 0xa0, 0xec, 0xa1, 0xed, 0x9b, 0xec, - 0xa1, 0xec, 0xa0, 0xec, 0xa1, 0xed, 0x9f, 0xec, 0xa2, 0xed, 0xa0, 0xec, - 0xa2, 0xed, 0x9f, 0xec, 0xa3, 0xed, 0xa0, 0xec, 0xa3, 0xed, 0x9f, 0xec, - 0xa3, 0xed, 0xa0, 0xec, 0xa4, 0xed, 0x9f, 0xec, 0xa4, 0xed, 0xa0, 0xec, - 0xa5, 0xed, 0x9f, 0xec, 0xa5, 0xed, 0xa0, 0xec, 0xa5, 0xed, 0xa4, 0xec, - 0xa6, 0xee, 0xa4, 0xec, 0xa6, 0xee, 0xa4, 0xec, 0xa6, 0xee, 0xa4, 0xec, - 0xa7, 0xee, 0xa4, 0xec, 0xa7, 0xee, 0xa4, 0xec, 0xa8, 0xee, 0xa4, 0xec, - 0xa8, 0xee, 0xa4, 0xec, 0xa8, 0xee, 0xa4, 0xec, 0xa9, 0xee, 0xa4, 0xec, - 0xa9, 0xee, 0xa4, 0xec, 0xaa, 0xee, 0xa8, 0xec, 0xaa, 0xef, 0xa8, 0xec, - 0xaa, 0xef, 0xa8, 0xec, 0xab, 0xef, 0xa8, 0xec, 0xab, 0xef, 0xa8, 0xec, - 0xab, 0xef, 0xa8, 0xec, 0xac, 0xef, 0xa8, 0xec, 0xac, 0xef, 0xa8, 0xec, - 0xac, 0xef, 0xa8, 0xec, 0xad, 0xef, 0xa8, 0xec, 0xad, 0xef, 0xa8, 0xec, - 0xae, 0xef, 0xac, 0xec, 0xae, 0xf0, 0xac, 0xec, 0xae, 0xf0, 0xac, 0xec, - 0xaf, 0xf0, 0xac, 0xec, 0xaf, 0xf0, 0xac, 0xec, 0xaf, 0xf0, 0xac, 0xec, - 0xb0, 0xf0, 0xac, 0xec, 0xb0, 0xf0, 0xac, 0xec, 0xb0, 0xf0, 0xac, 0xec, - 0xb1, 0xf0, 0xac, 0xec, 0xb1, 0xf0, 0xac, 0xec, 0xb2, 0xf0, 0xb0, 0xec, - 0xb2, 0xf1, 0xac, 0xec, 0xb2, 0xf0, 0xb0, 0xec, 0xb3, 0xf1, 0xb0, 0xec, - 0xb3, 0xf1, 0xb0, 0xec, 0xb3, 0xf1, 0xb0, 0xec, 0xb4, 0xf1, 0xb0, 0xec, - 0xb4, 0xf1, 0xb0, 0xec, 0xb4, 0xf1, 0xb0, 0xec, 0xb5, 0xf1, 0xb0, 0xec, - 0xb5, 0xf1, 0xb0, 0xec, 0xb5, 0xf1, 0xb4, 0xec, 0xb6, 0xf2, 0xb0, 0xec, - 0xb6, 0xf1, 0xb4, 0xec, 0xb6, 0xf2, 0xb4, 0xec, 0xb7, 0xf2, 0xb4, 0xec, - 0xb7, 0xf2, 0xb4, 0xec, 0xb7, 0xf2, 0xb4, 0xec, 0xb8, 0xf2, 0xb4, 0xec, - 0xb8, 0xf2, 0xb4, 0xec, 0xb8, 0xf2, 0xb4, 0xec, 0xb9, 0xf2, 0xb4, 0xec, - 0xb9, 0xf2, 0xb8, 0xec, 0xb9, 0xf3, 0xb4, 0xec, 0xba, 0xf2, 0xcd, 0xec, - 0xba, 0xd8, 0xcc, 0xec, 0xba, 0xdb, 0xcd, 0xec, 0xbb, 0xd8, 0xcc, 0xec, - 0xbb, 0xdb, 0xcd, 0xec, 0xbb, 0xd8, 0xcc, 0xec, 0xbc, 0xdb, 0xcd, 0xec, - 0xbc, 0xd8, 0xcc, 0xec, 0xbc, 0xdb, 0xcd, 0xec, 0xbd, 0xd8, 0xcc, 0xec, - 0xbd, 0xdb, 0xcd, 0xec, 0xbd, 0xd8, 0xcc, 0xec, 0xbe, 0xdb, 0xcd, 0xec, - 0xbe, 0xd8, 0xcc, 0xec, 0xbe, 0xdb, 0xcd, 0xec, 0xbf, 0xd8, 0xcc, 0xec, - 0xbf, 0xdb, 0xcd, 0xec, 0xbf, 0xd8, 0xcc, 0xec, 0xc0, 0xdb, 0xcd, 0xec, - 0xc0, 0xd8, 0xcc, 0xec, 0xc0, 0xdb, 0xcd, 0xec, 0xc1, 0xd8, 0xcc, 0xec, - 0xc1, 0xdb, 0xcd, 0xec, 0xc1, 0xd8, 0xcc, 0xec, 0xc1, 0xdb, 0xcd, 0xec, - 0xc2, 0xd8, 0xcd, 0xec, 0xc2, 0xd6, 0xcd, 0xec, 0xc2, 0xd8, 0xcd, 0xec, - 0xc3, 0xd6, 0xcd, 0xec, 0xc3, 0xd8, 0xcd, 0xec, 0xc3, 0xd6, 0xcd, 0xec, - 0xc4, 0xd8, 0xcd, 0xec, 0xc4, 0xd6, 0xcd, 0xec, 0xc4, 0xd8, 0xcd, 0xec, - 0xc5, 0xd6, 0xcd, 0xec, 0xc5, 0xd8, 0xcd, 0xec, 0xc5, 0xd6, 0xcd, 0xec, - 0xc6, 0xd8, 0xcd, 0xec, 0xc6, 0xd6, 0xcd, 0xec, 0xc6, 0xd8, 0xcd, 0xec, - 0xc6, 0xd6, 0xcd, 0xec, 0xc7, 0xd8, 0xcd, 0xec, 0xc7, 0xd6, 0xcd, 0xec, - 0xc7, 0xd8, 0xcd, 0xec, 0xc8, 0xd6, 0xcd, 0xec, 0xc8, 0xd8, 0xcd, 0xec, - 0xc8, 0xd6, 0xcd, 0xec, 0xc9, 0xd8, 0xcd, 0xec, 0xc9, 0xd6, 0xcd, 0xec, - 0xc9, 0xd8, 0xcd, 0xec, 0xc9, 0xd6, 0xcd, 0xec, 0xca, 0xd8, 0xcd, 0xec, - 0xca, 0xd6, 0xcd, 0xec, 0xca, 0xd8, 0xcd, 0xec, 0xcb, 0xd6, 0xcd, 0xec, - 0xcb, 0xd5, 0xcd, 0xec, 0xcb, 0xd6, 0xcd, 0xec, 0xcc, 0xd5, 0xcd, 0xec, - 0xcc, 0xd6, 0xcd, 0xec, 0xcc, 0xd5, 0xcd, 0xec, 0xcc, 0xd6, 0xcd, 0xec, - 0xcd, 0xd5, 0xce, 0xec, 0xcd, 0xd5, 0xcd, 0xec, 0xcd, 0xd5, 0xce, 0xec, - 0xcd, 0xd5, 0xce, 0xec, 0xcd, 0xd5, 0xce, 0xec, 0xcd, 0xd5, 0xce, 0xec, - 0xcd, 0xd5, 0xcf, 0xec, 0xcd, 0xd5, 0xcf, 0xec, 0xcd, 0xd5, 0xcf, 0xec, - 0xcd, 0xd5, 0xd0, 0xea, 0xcd, 0xd5, 0xd0, 0xec, 0xcd, 0xd5, 0xd0, 0xea, - 0xcd, 0xd5, 0xd0, 0xec, 0xcd, 0xd5, 0xd1, 0xea, 0xcd, 0xd5, 0xd1, 0xec, - 0xcd, 0xd5, 0xd1, 0xea, 0xcd, 0xd5, 0xd2, 0xec, 0xcd, 0xd5, 0xd2, 0xea, - 0xcd, 0xd5, 0xd2, 0xec, 0xcd, 0xd5, 0xd2, 0xea, 0xcd, 0xd5, 0xd3, 0xec, - 0xcd, 0xd5, 0xd3, 0xea, 0xcd, 0xd5, 0xd3, 0xec, 0xcd, 0xd5, 0xd4, 0xea, - 0xcd, 0xd5, 0xd4, 0xec, 0xcd, 0xd5, 0xd4, 0xea, 0xcd, 0xd5, 0xd4, 0xec, - 0xcd, 0xd5, 0xd5, 0xea, 0xcd, 0xd5, 0xd5, 0xec, 0xcd, 0xd5, 0xd5, 0xea, - 0xcd, 0xd5, 0xd6, 0xec, 0xcd, 0xd5, 0xd6, 0xea, 0xcd, 0xd5, 0xd6, 0xec, - 0xcd, 0xd5, 0xd6, 0xea, 0xcd, 0xd5, 0xd7, 0xec, 0xcd, 0xd5, 0xd7, 0xea, - 0xcd, 0xd5, 0xd7, 0xec, 0xcd, 0xd5, 0xd7, 0xea, 0xcd, 0xd5, 0xd8, 0xe9, - 0xce, 0xd5, 0xd8, 0xea, 0xcd, 0xd5, 0xd8, 0xe9, 0xce, 0xd5, 0xd9, 0xea, - 0xcd, 0xd5, 0xd9, 0xe9, 0xce, 0xd5, 0xd9, 0xea, 0xcd, 0xd5, 0xd9, 0xe9, - 0xce, 0xd5, 0xda, 0xea, 0xcd, 0xd5, 0xda, 0xee, 0xe5, 0xd5, 0xda, 0xec, - 0xe6, 0xd5, 0xda, 0xee, 0xe5, 0xd5, 0xdb, 0xec, 0xe6, 0xd5, 0xdb, 0xee, - 0xe5, 0xd5, 0xdb, 0xec, 0xe6, 0xd5, 0xdb, 0xee, 0xe5, 0xd5, 0xdc, 0xec, - 0xe6, 0xd5, 0xdc, 0xee, 0xe5, 0xd5, 0xdc, 0xec, 0xe6, 0xd5, 0xdd, 0xee, - 0xe5, 0xd5, 0xdd, 0xec, 0xe6, 0xd5, 0xdd, 0xee, 0xe5, 0xd5, 0xdd, 0xec, - 0xe6, 0xd5, 0xde, 0xee, 0xe5, 0xd5, 0xde, 0xec, 0xe6, 0xd5, 0xde, 0xee, - 0xe5, 0xd5, 0xde, 0xec, 0xe6, 0xd5, 0xdf, 0xee, 0xe5, 0xd5, 0xdf, 0xec, - 0xe6, 0xd5, 0xdf, 0xee, 0xe5, 0xd5, 0xdf, 0xec, 0xe6, 0xd5, 0xe0, 0xec, - 0xe6, 0xd5, 0xe0, 0xec, 0xe6, 0xd5, 0xe0, 0xec, 0xe6, 0xd5, 0xe1, 0xec, - 0xe6, 0xd5, 0xe1, 0xec, 0xe6, 0xd5, 0xe1, 0xec, 0xe6, 0xd5, 0xe1, 0xec, - 0xe6, 0xd5, 0xe2, 0xec, 0xe6, 0xd5, 0xe2, 0xec, 0xe6, 0xd5, 0xe2, 0xec, - 0xe6, 0xd5, 0xe2, 0xec, 0xe6, 0xd5, 0xe3, 0xec, 0xe6, 0xd5, 0xe3, 0xec, - 0xe6, 0xd5, 0xe3, 0xec, 0xe6, 0xd5, 0xe3, 0xec, 0xe6, 0xd5, 0xe4, 0xec, - 0xe6, 0xd5, 0xe4, 0xec, 0xe6, 0xd5, 0xe4, 0xec, 0xe6, 0xd5, 0xe4, 0xec, - 0xe6, 0xd5, 0xe5, 0xec, 0xe6, 0xd5, 0xe5, 0xec, 0xe6, 0xd5, 0xe5, 0xec, - 0xe6, 0xd5, 0xe5, 0xec, 0xe6, 0xd5, 0xe6, 0xec, 0xe6, 0xd5, 0xe6, 0xec, - 0xe6, 0xd4, 0xe6, 0xec, 0xe6, 0xd5, 0xe6, 0xec, 0xe6, 0xd4, 0xe6, 0xec, - 0xe7, 0xd5, 0xe6, 0xec, 0xe7, 0xd4, 0xe8, 0xec, 0xe7, 0xd5, 0xe8, 0xec, - 0xe7, 0xd6, 0xe8, 0xeb, 0xe8, 0xd5, 0xe8, 0xec, 0xe8, 0xd6, 0xe8, 0xec, - 0xe8, 0xd6, 0xe8, 0xec, 0xe8, 0xd6, 0xe9, 0xec, 0xe9, 0xd6, 0xe9, 0xec, - 0xe9, 0xd6, 0xe9, 0xec, 0xe9, 0xd6, 0xe9, 0xec, 0xe9, 0xd6, 0xea, 0xec, - 0xea, 0xd6, 0xea, 0xec, 0xea, 0xd6, 0xea, 0xec, 0xea, 0xd6, 0xea, 0xec, - 0xea, 0xd6, 0xeb, 0xec, 0xeb, 0xd6, 0xeb, 0xec, 0xeb, 0xd4, 0xec, 0xec, - 0xeb, 0xd4, 0xeb, 0xec, 0xeb, 0xd4, 0xec, 0xec, 0xec, 0xd4, 0xec, 0xec, - 0xec, 0xd4, 0xec, 0xec, 0xec, 0xd4, 0xec, 0xec, 0xec, 0xd4, 0xec, 0xec, - 0xec, 0xd4, 0xed, 0xec, 0xed, 0xd4, 0xed, 0xec, 0xed, 0xd4, 0xed, 0xec, - 0xed, 0xd4, 0xed, 0xec, 0xed, 0xd4, 0xee, 0xec, 0xee, 0xd4, 0xee, 0xec, - 0xee, 0xd4, 0xee, 0xec, 0xee, 0xd4, 0xee, 0xec, 0xee, 0xd4, 0xef, 0xec, - 0xef, 0xd5, 0xef, 0xec, 0xef, 0xd5, 0xef, 0xec, 0xef, 0xd5, 0xef, 0xec, - 0xef, 0xd5, 0xf0, 0xec, 0xf0, 0xd5, 0xf0, 0xec, 0xf0, 0xd5, 0xf0, 0xec, - 0xf0, 0xd5, 0xf0, 0xec, 0xf0, 0xd5, 0xf1, 0xec, 0xf1, 0xd5, 0xf1, 0xec, - 0xf1, 0xd5, 0xf1, 0xec, 0xf1, 0xd5, 0xf1, 0xec, 0xf1, 0xd5, 0xf2, 0xec, - 0xf1, 0xd5, 0xf2, 0xec, 0xf1, 0xd5, 0xf2, 0xec, 0xf1, 0xd5, 0xf2, 0xec, - 0xf1, 0xd5, 0xf2, 0xec, 0xf1, 0xd5, 0xf3, 0xec, 0xf1, 0xd5, 0xf3, 0xec, - 0xf1, 0xd5, 0xf3, 0xec, 0xf1, 0xd5, 0xf3, 0xec, 0xf1, 0xd5, 0xf4, 0xec, - 0xf1, 0xd5, 0xf4, 0xec, 0xf1, 0xd5, 0xf4, 0xec, 0xf1, 0xd5, 0xf4, 0xec, - 0xf1, 0xd5, 0xf5, 0xec, 0xf1, 0xd5, 0xf5, 0xec, 0xf1, 0xd5, 0xf5, 0xec, - 0xf1, 0xd5, 0xf5, 0xec, 0xf1, 0xd5, 0xf5, 0xec, 0xf1, 0xd5, 0xf6, 0xec, - 0xf1, 0xd5, 0xf6, 0xec, 0xf1, 0xd5, 0xf6, 0xec, 0xf1, 0xd5, 0xf6, 0xec, - 0xf1, 0xd5, 0xf7, 0xec, 0xf1, 0xd5, 0xf7, 0xec, 0xf1, 0xd5, 0xf7, 0xec, - 0xf1, 0xd5, 0xf7, 0xec, 0xf1, 0xd5, 0xf8, 0xec, 0xf1, 0xd5, 0xf8, 0xec, - 0xf1, 0xd5, 0xf8, 0xec, 0xf1, 0xd5, 0xf8, 0xec, 0xf1, 0xd5, 0xf8, 0xec, - 0xf1, 0xd5, 0xf9, 0xec, 0xf1, 0xd5, 0xf9, 0xec, 0xf1, 0xd5, 0xf9, 0xec, - 0xf1, 0xd5, 0xf9, 0xec, 0xf1, 0xd5, 0xfa, 0xec, 0xf1, 0xd5, 0xfa, 0xec, - 0xf1, 0xd5, 0xfa, 0xec, 0xf1, 0xd5, 0xfa, 0xec, 0xf1, 0xd5, 0xfa, 0xec, - 0xf1, 0xd5, 0xfb, 0xec, 0xf1, 0xd5, 0xfb, 0xec, 0xf1, 0xd5, 0xfb, 0xec, - 0xf1, 0xd5, 0xfb, 0xec, 0xf1, 0xd5, 0xfc, 0xec, 0xf1, 0xd5, 0xfc, 0xec, - 0xf1, 0xd5, 0xfc, 0xec, 0xf1, 0xd5, 0xfc, 0xec, 0xf1, 0xd5, 0xfc, 0xec, - 0xf1, 0xd5, 0xfd, 0xec, 0xf1, 0xd5, 0xfd, 0xec, 0xf1, 0xd5, 0xfd, 0xec, - 0xf1, 0xd5, 0xfd, 0xec, 0xf1, 0xd5, 0xfe, 0xec, 0xf1, 0xd5, 0xfe, 0xec, - 0xf1, 0xd5, 0xfe, 0xec, 0xf1, 0xd5, 0xfe, 0xec, 0xf1, 0xd5, 0xfe, 0xec, - 0xf1, 0xd5, 0xff, 0xec, 0xf1, 0xd5, 0xff, 0xec, 0xf1, 0xd5, 0x03, 0xef, - 0x84, 0xd5, 0x0a, 0xf1, 0x84, 0xd5, 0x0f, 0xef, 0x84, 0xd5, 0x14, 0xf1, - 0x84, 0xd5, 0x17, 0xef, 0x84, 0xd5, 0x1b, 0xf1, 0x84, 0xd5, 0x1e, 0xef, - 0x84, 0xd5, 0x20, 0xf1, 0x84, 0xd5, 0x23, 0xef, 0x84, 0xd5, 0x25, 0xf1, - 0x84, 0xd5, 0x27, 0xef, 0x84, 0xd5, 0x29, 0xf1, 0x84, 0xd5, 0x2b, 0xef, - 0x84, 0xd5, 0x2d, 0xf1, 0x84, 0xd5, 0x2f, 0xef, 0x84, 0xd5, 0x31, 0xee, - 0x85, 0xd5, 0x32, 0xef, 0x84, 0xd5, 0x34, 0xee, 0x85, 0xd5, 0x35, 0xef, - 0x84, 0xd5, 0x37, 0xee, 0x85, 0xd5, 0x38, 0xef, 0x84, 0xd5, 0x3a, 0xee, - 0x85, 0xd5, 0x3b, 0xef, 0x84, 0xd5, 0x3c, 0xee, 0x85, 0xd5, 0x3e, 0xef, - 0x84, 0xd5, 0x3f, 0xee, 0x85, 0xd5, 0x40, 0xef, 0x84, 0xd5, 0x42, 0xee, - 0x85, 0xd5, 0x43, 0xef, 0x84, 0xd5, 0x44, 0xee, 0x85, 0xd5, 0x45, 0xef, - 0x84, 0xd5, 0x46, 0xee, 0x85, 0xd5, 0x47, 0xef, 0x84, 0xd5, 0x48, 0xee, - 0x85, 0xd5, 0x49, 0xef, 0x84, 0xd5, 0x4a, 0xee, 0x85, 0xd5, 0x4b, 0xef, - 0x84, 0xd5, 0x4c, 0xee, 0x85, 0xd5, 0x4d, 0xef, 0x84, 0xd5, 0x4e, 0xee, - 0x85, 0xd5, 0x4f, 0xef, 0x84, 0xd5, 0x50, 0xee, 0x85, 0xd5, 0x51, 0xef, - 0x84, 0xd5, 0x52, 0xee, 0x85, 0xd5, 0x53, 0xef, 0x84, 0xd5, 0x54, 0xee, - 0x85, 0xd5, 0x55, 0xef, 0x84, 0xd5, 0x56, 0xee, 0x85, 0xd5, 0x57, 0xef, - 0x84, 0xd5, 0x58, 0xee, 0x85, 0xd5, 0x58, 0xef, 0x84, 0xd5, 0x59, 0xee, - 0x85, 0xd5, 0x5a, 0xef, 0x84, 0xd5, 0x5b, 0xee, 0x85, 0xd5, 0x5c, 0xef, - 0x84, 0xd5, 0x5d, 0xee, 0x85, 0xd5, 0x5d, 0xef, 0x84, 0xd5, 0x5e, 0xee, - 0x85, 0xd5, 0x5f, 0xef, 0x84, 0xd5, 0x60, 0xee, 0x85, 0xd5, 0x60, 0xef, - 0x84, 0xd5, 0x61, 0xee, 0x85, 0xd5, 0x62, 0xef, 0x84, 0xd5, 0x63, 0xee, - 0x85, 0xd5, 0x63, 0xef, 0x84, 0xd5, 0x64, 0xee, 0x85, 0xd5, 0x65, 0xef, - 0x84, 0xd5, 0x66, 0xee, 0x85, 0xd5, 0x66, 0xef, 0x84, 0xd5, 0x67, 0xee, - 0x85, 0xd5, 0x68, 0xef, 0x84, 0xd5, 0x68, 0xee, 0x85, 0xd5, 0x69, 0xec, - 0x85, 0xd5, 0x6a, 0xee, 0x85, 0xd5, 0x6a, 0xec, 0x85, 0xd5, 0x6b, 0xee, - 0x85, 0xd5, 0x6c, 0xec, 0x85, 0xd5, 0x6c, 0xee, 0x85, 0xd5, 0x6d, 0xec, - 0x85, 0xd5, 0x6e, 0xee, 0x85, 0xd5, 0x6e, 0xec, 0x85, 0xd5, 0x6f, 0xee, - 0x85, 0xd5, 0x70, 0xec, 0x85, 0xd5, 0x70, 0xee, 0x85, 0xd5, 0x71, 0xec, - 0x85, 0xd5, 0x72, 0xee, 0x85, 0xd5, 0x72, 0xec, 0x85, 0xd5, 0x73, 0xee, - 0x85, 0xd5, 0x73, 0xec, 0x85, 0xd5, 0x74, 0xee, 0x85, 0xd5, 0x75, 0xec, - 0x85, 0xd5, 0x75, 0xee, 0x85, 0xd5, 0x76, 0xec, 0x85, 0xd5, 0x76, 0xee, - 0x85, 0xd5, 0x77, 0xec, 0x85, 0xd5, 0x78, 0xee, 0x85, 0xd5, 0x78, 0xec, - 0x85, 0xd5, 0x79, 0xee, 0x85, 0xd5, 0x79, 0xec, 0x85, 0xd5, 0x7a, 0xee, - 0x85, 0xd5, 0x7a, 0xec, 0x85, 0xd5, 0x7b, 0xee, 0x85, 0xd5, 0x7c, 0xec, - 0x85, 0xd5, 0x7c, 0xee, 0x85, 0xd5, 0x7d, 0xec, 0x85, 0xd5, 0x7d, 0xec, - 0x86, 0xd5, 0x7e, 0xec, 0x85, 0xd5, 0x7e, 0xec, 0x86, 0xd5, 0x7f, 0xec, - 0x85, 0xd5, 0x7f, 0xec, 0x86, 0xd5, 0x80, 0xec, 0x85, 0xd5, 0x81, 0xec, - 0x86, 0xd5, 0x81, 0xec, 0x85, 0xd5, 0x82, 0xec, 0x86, 0xd5, 0x82, 0xec, - 0x85, 0xd5, 0x83, 0xec, 0x86, 0xd5, 0x83, 0xec, 0x85, 0xd5, 0x84, 0xec, - 0x86, 0xd5, 0x84, 0xec, 0x85, 0xd5, 0x85, 0xec, 0x86, 0xd5, 0x85, 0xec, - 0x86, 0xd5, 0x85, 0xec, 0x86, 0xd5, 0x85, 0xec, 0x86, 0xd5, 0x85, 0xec, - 0x87, 0xd5, 0x85, 0xec, 0x87, 0xd5, 0x85, 0xec, 0x88, 0xd5, 0x85, 0xec, - 0x88, 0xd5, 0x85, 0xec, 0x89, 0xd5, 0x85, 0xec, 0x89, 0xd5, 0x86, 0xec, - 0x8a, 0xd2, 0x85, 0xec, 0x8a, 0xd5, 0x86, 0xec, 0x8b, 0xd2, 0x85, 0xec, - 0x8b, 0xd5, 0x86, 0xec, 0x8c, 0xd2, 0x85, 0xec, 0x8c, 0xd5, 0x86, 0xec, - 0x8d, 0xd2, 0x85, 0xec, 0x8d, 0xd5, 0x86, 0xec, 0x8e, 0xd2, 0x85, 0xec, - 0x8e, 0xd5, 0x86, 0xec, 0x8e, 0xd2, 0x85, 0xec, 0x8f, 0xd5, 0x86, 0xec, - 0x8f, 0xd2, 0x85, 0xec, 0x90, 0xd5, 0x86, 0xec, 0x90, 0xd2, 0x85, 0xec, - 0x91, 0xd5, 0x86, 0xec, 0x91, 0xd2, 0x85, 0xec, 0x92, 0xd5, 0x86, 0xec, - 0x92, 0xd2, 0x85, 0xec, 0x93, 0xd5, 0x86, 0xec, 0x93, 0xd2, 0x85, 0xec, - 0x94, 0xd5, 0x86, 0xec, 0x94, 0xd2, 0x85, 0xec, 0x94, 0xd5, 0x86, 0xec, - 0x95, 0xd2, 0x85, 0xec, 0x95, 0xd5, 0x86, 0xec, 0x96, 0xd2, 0x85, 0xec, - 0x96, 0xd5, 0x86, 0xec, 0x97, 0xd2, 0x85, 0xec, 0x97, 0xd5, 0x86, 0xec, - 0x98, 0xd2, 0x85, 0xec, 0x98, 0xd5, 0x86, 0xec, 0x98, 0xd2, 0x85, 0xec, - 0x99, 0xd5, 0x86, 0xec, 0x99, 0xd2, 0x94, 0xec, 0x9a, 0xea, 0x99, 0xec, - 0x9a, 0xeb, 0x99, 0xec, 0x9a, 0xeb, 0x99, 0xec, 0x9b, 0xeb, 0x99, 0xec, - 0x9b, 0xeb, 0x99, 0xec, 0x9c, 0xeb, 0x99, 0xec, 0x9c, 0xeb, 0x99, 0xec, - 0x9d, 0xeb, 0x99, 0xec, 0x9d, 0xeb, 0x99, 0xec, 0x9d, 0xeb, 0x99, 0xec, - 0x9e, 0xeb, 0x99, 0xec, 0x9e, 0xeb, 0x9e, 0xec, 0x9f, 0xec, 0x9d, 0xec, - 0x9f, 0xec, 0x9e, 0xec, 0x9f, 0xec, 0x9d, 0xec, 0xa0, 0xec, 0x9e, 0xec, - 0xa0, 0xec, 0x9d, 0xec, 0xa1, 0xec, 0x9e, 0xec, 0xa1, 0xec, 0x9d, 0xec, - 0xa1, 0xec, 0x9e, 0xec, 0xa2, 0xec, 0x9d, 0xec, 0xa2, 0xec, 0x9e, 0xec, - 0xa3, 0xec, 0xa2, 0xec, 0xa3, 0xed, 0x9e, 0xec, 0xa3, 0xec, 0xa2, 0xec, - 0xa4, 0xed, 0xa2, 0xec, 0xa4, 0xed, 0xa2, 0xec, 0xa5, 0xed, 0xa2, 0xec, - 0xa5, 0xed, 0xa2, 0xec, 0xa5, 0xed, 0xa2, 0xec, 0xa6, 0xed, 0xa2, 0xec, - 0xa6, 0xed, 0xa2, 0xec, 0xa6, 0xed, 0xa2, 0xec, 0xa7, 0xed, 0xa2, 0xec, - 0xa7, 0xed, 0xa2, 0xec, 0xa8, 0xed, 0xa6, 0xec, 0xa8, 0xee, 0xa6, 0xec, - 0xa8, 0xee, 0xa6, 0xec, 0xa9, 0xee, 0xa6, 0xec, 0xa9, 0xee, 0xa6, 0xec, - 0xaa, 0xee, 0xa6, 0xec, 0xaa, 0xee, 0xa6, 0xec, 0xaa, 0xee, 0xa6, 0xec, - 0xab, 0xee, 0xa6, 0xec, 0xab, 0xee, 0xa6, 0xec, 0xab, 0xee, 0xa6, 0xec, - 0xac, 0xee, 0xab, 0xec, 0xac, 0xef, 0xaa, 0xec, 0xac, 0xef, 0xab, 0xec, - 0xad, 0xef, 0xaa, 0xec, 0xad, 0xef, 0xab, 0xec, 0xae, 0xef, 0xaa, 0xec, - 0xae, 0xef, 0xab, 0xec, 0xae, 0xef, 0xaa, 0xec, 0xaf, 0xef, 0xab, 0xec, - 0xaf, 0xef, 0xaa, 0xec, 0xaf, 0xef, 0xab, 0xec, 0xb0, 0xef, 0xaf, 0xec, - 0xb0, 0xf0, 0xae, 0xec, 0xb0, 0xf0, 0xaf, 0xec, 0xb1, 0xf0, 0xae, 0xec, - 0xb1, 0xf0, 0xaf, 0xec, 0xb2, 0xf0, 0xae, 0xec, 0xb2, 0xf0, 0xaf, 0xec, - 0xb2, 0xf0, 0xae, 0xec, 0xb3, 0xf0, 0xaf, 0xec, 0xb3, 0xf0, 0xae, 0xec, - 0xb3, 0xf0, 0xaf, 0xec, 0xb4, 0xf0, 0xb3, 0xec, 0xb4, 0xf1, 0xaf, 0xec, - 0xb4, 0xf0, 0xb3, 0xec, 0xb5, 0xf1, 0xb2, 0xec, 0xb5, 0xf1, 0xb3, 0xec, - 0xb5, 0xf1, 0xb2, 0xec, 0xb6, 0xf1, 0xb3, 0xec, 0xb6, 0xf1, 0xb2, 0xec, - 0xb6, 0xf1, 0xb3, 0xec, 0xb7, 0xf1, 0xb2, 0xec, 0xb7, 0xf1, 0xb3, 0xec, - 0xb7, 0xf1, 0xb6, 0xec, 0xb8, 0xf2, 0xb3, 0xec, 0xb8, 0xf1, 0xb6, 0xec, - 0xb8, 0xf2, 0xb6, 0xec, 0xb9, 0xf2, 0xb6, 0xec, 0xb9, 0xf2, 0xb6, 0xec, - 0xb9, 0xf2, 0xb6, 0xec, 0xba, 0xf2, 0xb6, 0xec, 0xba, 0xf2, 0xcc, 0xec, - 0xba, 0xdb, 0xcc, 0xec, 0xbb, 0xdd, 0xcc, 0xec, 0xbb, 0xdb, 0xcd, 0xec, - 0xbb, 0xd8, 0xcc, 0xec, 0xbc, 0xdb, 0xcd, 0xec, 0xbc, 0xd8, 0xcc, 0xec, - 0xbc, 0xdb, 0xcd, 0xec, 0xbd, 0xd8, 0xcc, 0xec, 0xbd, 0xdb, 0xcd, 0xec, - 0xbd, 0xd8, 0xcc, 0xec, 0xbe, 0xdb, 0xcd, 0xec, 0xbe, 0xd8, 0xcc, 0xec, - 0xbe, 0xdb, 0xcd, 0xec, 0xbf, 0xd8, 0xcc, 0xec, 0xbf, 0xdb, 0xcd, 0xec, - 0xbf, 0xd8, 0xcc, 0xec, 0xc0, 0xdb, 0xcd, 0xec, 0xc0, 0xd8, 0xcc, 0xec, - 0xc0, 0xdb, 0xcd, 0xec, 0xc1, 0xd8, 0xcc, 0xec, 0xc1, 0xdb, 0xcd, 0xec, - 0xc1, 0xd8, 0xcc, 0xec, 0xc1, 0xdb, 0xcd, 0xec, 0xc2, 0xd8, 0xcd, 0xec, - 0xc2, 0xd5, 0xcd, 0xec, 0xc2, 0xd8, 0xcd, 0xec, 0xc3, 0xd5, 0xcd, 0xec, - 0xc3, 0xd8, 0xcd, 0xec, 0xc3, 0xd5, 0xcd, 0xec, 0xc4, 0xd8, 0xcd, 0xec, - 0xc4, 0xd5, 0xcd, 0xec, 0xc4, 0xd8, 0xcd, 0xec, 0xc5, 0xd5, 0xcd, 0xec, - 0xc5, 0xd8, 0xcd, 0xec, 0xc5, 0xd5, 0xcd, 0xec, 0xc6, 0xd8, 0xcd, 0xec, - 0xc6, 0xd5, 0xcd, 0xec, 0xc6, 0xd8, 0xcd, 0xec, 0xc6, 0xd5, 0xcd, 0xec, - 0xc7, 0xd8, 0xcd, 0xec, 0xc7, 0xd5, 0xcd, 0xec, 0xc7, 0xd8, 0xcd, 0xec, - 0xc8, 0xd5, 0xcd, 0xec, 0xc8, 0xd8, 0xcd, 0xec, 0xc8, 0xd5, 0xcd, 0xec, - 0xc9, 0xd8, 0xcd, 0xec, 0xc9, 0xd5, 0xcd, 0xec, 0xc9, 0xd8, 0xcd, 0xec, - 0xc9, 0xd5, 0xcd, 0xec, 0xca, 0xd8, 0xcd, 0xec, 0xca, 0xd5, 0xcd, 0xec, - 0xca, 0xd8, 0xcd, 0xec, 0xcb, 0xd5, 0xcd, 0xec, 0xcb, 0xd5, 0xcd, 0xec, - 0xcb, 0xd5, 0xcd, 0xec, 0xcc, 0xd5, 0xcd, 0xec, 0xcc, 0xd5, 0xcd, 0xec, - 0xcc, 0xd5, 0xcd, 0xec, 0xcc, 0xd5, 0xcd, 0xec, 0xcd, 0xd5, 0xcd, 0xeb, - 0xcd, 0xd5, 0xcd, 0xec, 0xcd, 0xd5, 0xce, 0xeb, 0xcd, 0xd5, 0xce, 0xec, - 0xcd, 0xd5, 0xce, 0xeb, 0xcd, 0xd5, 0xce, 0xec, 0xcd, 0xd5, 0xcf, 0xeb, - 0xcd, 0xd5, 0xcf, 0xec, 0xcd, 0xd5, 0xcf, 0xeb, 0xcd, 0xd5, 0xd0, 0xec, - 0xcd, 0xd5, 0xd0, 0xeb, 0xcd, 0xd5, 0xd0, 0xec, 0xcd, 0xd5, 0xd0, 0xeb, - 0xcd, 0xd5, 0xd1, 0xec, 0xcd, 0xd5, 0xd1, 0xeb, 0xcd, 0xd5, 0xd1, 0xec, - 0xcd, 0xd5, 0xd2, 0xeb, 0xcd, 0xd5, 0xd2, 0xea, 0xcd, 0xd5, 0xd2, 0xeb, - 0xcd, 0xd5, 0xd2, 0xea, 0xcd, 0xd5, 0xd3, 0xeb, 0xcd, 0xd5, 0xd3, 0xea, - 0xcd, 0xd5, 0xd3, 0xeb, 0xcd, 0xd5, 0xd4, 0xea, 0xcd, 0xd5, 0xd4, 0xeb, - 0xcd, 0xd5, 0xd4, 0xea, 0xcd, 0xd5, 0xd4, 0xeb, 0xcd, 0xd5, 0xd5, 0xea, - 0xcd, 0xd5, 0xd5, 0xeb, 0xcd, 0xd5, 0xd5, 0xea, 0xcd, 0xd5, 0xd6, 0xeb, - 0xcd, 0xd5, 0xd6, 0xea, 0xcd, 0xd5, 0xd6, 0xeb, 0xcd, 0xd5, 0xd6, 0xea, - 0xcd, 0xd5, 0xd7, 0xeb, 0xcd, 0xd5, 0xd7, 0xea, 0xcd, 0xd5, 0xd7, 0xeb, - 0xcd, 0xd5, 0xd7, 0xea, 0xcd, 0xd5, 0xd8, 0xe9, 0xce, 0xd5, 0xd8, 0xea, - 0xcd, 0xd5, 0xd8, 0xe9, 0xce, 0xd5, 0xd9, 0xea, 0xcd, 0xd5, 0xd9, 0xe9, - 0xce, 0xd5, 0xd9, 0xea, 0xcd, 0xd5, 0xd9, 0xe9, 0xce, 0xd5, 0xda, 0xea, - 0xcd, 0xd5, 0xda, 0xee, 0xe5, 0xd5, 0xda, 0xed, 0xe6, 0xd5, 0xda, 0xee, - 0xe5, 0xd5, 0xdb, 0xed, 0xe6, 0xd5, 0xdb, 0xee, 0xe5, 0xd5, 0xdb, 0xed, - 0xe6, 0xd5, 0xdb, 0xee, 0xe5, 0xd5, 0xdc, 0xed, 0xe6, 0xd5, 0xdc, 0xee, - 0xe5, 0xd5, 0xdc, 0xed, 0xe6, 0xd5, 0xdd, 0xee, 0xe5, 0xd5, 0xdd, 0xed, - 0xe6, 0xd5, 0xdd, 0xee, 0xe5, 0xd5, 0xdd, 0xed, 0xe6, 0xd5, 0xde, 0xee, - 0xe5, 0xd5, 0xde, 0xed, 0xe6, 0xd5, 0xde, 0xee, 0xe5, 0xd5, 0xde, 0xed, - 0xe6, 0xd5, 0xdf, 0xee, 0xe5, 0xd5, 0xdf, 0xed, 0xe6, 0xd5, 0xdf, 0xee, - 0xe5, 0xd5, 0xdf, 0xed, 0xe6, 0xd5, 0xe0, 0xec, 0xe6, 0xd5, 0xe0, 0xed, - 0xe6, 0xd5, 0xe0, 0xec, 0xe6, 0xd5, 0xe1, 0xed, 0xe6, 0xd5, 0xe1, 0xec, - 0xe6, 0xd5, 0xe1, 0xed, 0xe6, 0xd5, 0xe1, 0xec, 0xe6, 0xd5, 0xe2, 0xed, - 0xe6, 0xd5, 0xe2, 0xec, 0xe6, 0xd5, 0xe2, 0xed, 0xe6, 0xd5, 0xe2, 0xec, - 0xe6, 0xd5, 0xe3, 0xed, 0xe6, 0xd5, 0xe3, 0xec, 0xe6, 0xd5, 0xe3, 0xed, - 0xe6, 0xd5, 0xe3, 0xec, 0xe6, 0xd5, 0xe4, 0xed, 0xe6, 0xd5, 0xe4, 0xec, - 0xe6, 0xd5, 0xe4, 0xed, 0xe6, 0xd5, 0xe4, 0xec, 0xe6, 0xd5, 0xe5, 0xed, - 0xe6, 0xd5, 0xe5, 0xec, 0xe6, 0xd5, 0xe5, 0xec, 0xe6, 0xd5, 0xe5, 0xec, - 0xe6, 0xd5, 0xe6, 0xec, 0xe6, 0xd5, 0xe5, 0xec, 0xe6, 0xd5, 0xe6, 0xec, - 0xe6, 0xd5, 0xe5, 0xec, 0xe6, 0xd5, 0xe6, 0xec, 0xe7, 0xd5, 0xe8, 0xec, - 0xe7, 0xd5, 0xe8, 0xec, 0xe7, 0xd5, 0xe8, 0xec, 0xe7, 0xd5, 0xe8, 0xeb, - 0xe8, 0xd5, 0xe8, 0xeb, 0xe8, 0xd5, 0xe8, 0xeb, 0xe8, 0xd5, 0xe8, 0xeb, - 0xe8, 0xd5, 0xe9, 0xeb, 0xe9, 0xd5, 0xe9, 0xeb, 0xe9, 0xd5, 0xe9, 0xeb, - 0xe9, 0xd5, 0xe9, 0xec, 0xe9, 0xd6, 0xea, 0xec, 0xea, 0xd6, 0xea, 0xec, - 0xea, 0xd6, 0xea, 0xec, 0xea, 0xd6, 0xea, 0xec, 0xea, 0xd6, 0xeb, 0xec, - 0xeb, 0xd6, 0xeb, 0xec, 0xeb, 0xd6, 0xeb, 0xec, 0xeb, 0xd6, 0xeb, 0xec, - 0xeb, 0xd6, 0xec, 0xec, 0xec, 0xd6, 0xec, 0xec, 0xec, 0xd6, 0xec, 0xec, - 0xec, 0xd6, 0xec, 0xec, 0xec, 0xd6, 0xed, 0xec, 0xec, 0xd4, 0xed, 0xec, - 0xed, 0xd4, 0xed, 0xec, 0xed, 0xd4, 0xed, 0xec, 0xed, 0xd4, 0xed, 0xec, - 0xed, 0xd4, 0xee, 0xec, 0xee, 0xd4, 0xee, 0xec, 0xee, 0xd4, 0xee, 0xec, - 0xee, 0xd4, 0xee, 0xec, 0xee, 0xd4, 0xef, 0xec, 0xef, 0xd4, 0xef, 0xec, - 0xef, 0xd4, 0xef, 0xec, 0xef, 0xd4, 0xef, 0xec, 0xef, 0xd4, 0xf0, 0xec, - 0xf0, 0xd4, 0xf0, 0xec, 0xf0, 0xd4, 0xf0, 0xec, 0xf0, 0xd4, 0xf0, 0xec, - 0xf0, 0xd5, 0xf1, 0xec, 0xf1, 0xd5, 0xf1, 0xec, 0xf1, 0xd5, 0xf1, 0xec, - 0xf1, 0xd5, 0xf1, 0xec, 0xf1, 0xd5, 0xf2, 0xec, 0xf1, 0xd5, 0xf2, 0xec, - 0xf1, 0xd5, 0xf2, 0xec, 0xf1, 0xd5, 0xf2, 0xec, 0xf1, 0xd5, 0xf2, 0xec, - 0xf1, 0xd5, 0xf3, 0xec, 0xf1, 0xd5, 0xf3, 0xec, 0xf1, 0xd5, 0xf3, 0xec, - 0xf1, 0xd5, 0xf3, 0xec, 0xf1, 0xd5, 0xf4, 0xec, 0xf1, 0xd5, 0xf4, 0xec, - 0xf1, 0xd5, 0xf4, 0xec, 0xf1, 0xd5, 0xf4, 0xec, 0xf1, 0xd5, 0xf5, 0xec, - 0xf1, 0xd5, 0xf5, 0xec, 0xf1, 0xd5, 0xf5, 0xec, 0xf1, 0xd5, 0xf5, 0xec, - 0xf1, 0xd5, 0xf5, 0xec, 0xf1, 0xd5, 0xf6, 0xec, 0xf1, 0xd5, 0xf6, 0xec, - 0xf1, 0xd5, 0xf6, 0xec, 0xf1, 0xd5, 0xf6, 0xec, 0xf1, 0xd5, 0xf7, 0xec, - 0xf1, 0xd5, 0xf7, 0xec, 0xf1, 0xd5, 0xf7, 0xec, 0xf1, 0xd5, 0xf7, 0xec, - 0xf1, 0xd5, 0xf8, 0xec, 0xf1, 0xd5, 0xf8, 0xec, 0xf1, 0xd5, 0xf8, 0xec, - 0xf1, 0xd5, 0xf8, 0xec, 0xf1, 0xd5, 0xf8, 0xec, 0xf1, 0xd5, 0xf9, 0xec, - 0xf1, 0xd5, 0xf9, 0xec, 0xf1, 0xd5, 0xf9, 0xec, 0xf1, 0xd5, 0xf9, 0xec, - 0xf1, 0xd5, 0xfa, 0xec, 0xf1, 0xd5, 0xfa, 0xec, 0xf1, 0xd5, 0xfa, 0xec, - 0xf1, 0xd5, 0xfa, 0xec, 0xf1, 0xd5, 0xfa, 0xec, 0xf1, 0xd5, 0xfb, 0xec, - 0xf1, 0xd5, 0xfb, 0xec, 0xf1, 0xd5, 0xfb, 0xec, 0xf1, 0xd5, 0xfb, 0xec, - 0xf1, 0xd5, 0xfc, 0xec, 0xf1, 0xd5, 0xfc, 0xec, 0xf1, 0xd5, 0xfc, 0xec, - 0xf1, 0xd5, 0xfc, 0xec, 0xf1, 0xd5, 0xfc, 0xec, 0xf1, 0xd5, 0xfd, 0xec, - 0xf1, 0xd5, 0xfd, 0xec, 0xf1, 0xd5, 0xfd, 0xec, 0xf1, 0xd5, 0xfd, 0xec, - 0xf1, 0xd5, 0xfe, 0xec, 0xf1, 0xd5, 0xfe, 0xec, 0xf1, 0xd5, 0xfe, 0xec, - 0xf1, 0xd5, 0xfe, 0xec, 0xf1, 0xd5, 0xfe, 0xec, 0xf1, 0xd5, 0xff, 0xec, - 0xf1, 0xd5, 0xff, 0xec, 0xf1, 0xd5, 0x03, 0xef, 0x84, 0xd6, 0x0a, 0xf1, - 0x84, 0xd6, 0x0f, 0xef, 0x84, 0xd6, 0x14, 0xf1, 0x84, 0xd6, 0x17, 0xef, - 0x84, 0xd6, 0x1b, 0xf1, 0x84, 0xd6, 0x1e, 0xef, 0x84, 0xd6, 0x20, 0xf1, - 0x84, 0xd6, 0x23, 0xef, 0x84, 0xd6, 0x25, 0xf1, 0x84, 0xd6, 0x27, 0xef, - 0x84, 0xd6, 0x29, 0xf1, 0x84, 0xd6, 0x2b, 0xef, 0x84, 0xd6, 0x2d, 0xf1, - 0x84, 0xd6, 0x2f, 0xef, 0x84, 0xd6, 0x31, 0xf1, 0x84, 0xd6, 0x32, 0xef, - 0x84, 0xd6, 0x34, 0xf1, 0x84, 0xd6, 0x35, 0xef, 0x84, 0xd6, 0x37, 0xf1, - 0x84, 0xd6, 0x38, 0xef, 0x84, 0xd6, 0x3a, 0xf1, 0x84, 0xd6, 0x3b, 0xef, - 0x84, 0xd6, 0x3c, 0xf1, 0x84, 0xd6, 0x3e, 0xef, 0x84, 0xd6, 0x3f, 0xf1, - 0x84, 0xd6, 0x40, 0xef, 0x84, 0xd6, 0x42, 0xf1, 0x84, 0xd6, 0x43, 0xef, - 0x84, 0xd6, 0x44, 0xf1, 0x84, 0xd6, 0x45, 0xef, 0x84, 0xd6, 0x46, 0xf1, - 0x84, 0xd6, 0x47, 0xef, 0x84, 0xd6, 0x48, 0xf1, 0x84, 0xd6, 0x49, 0xef, - 0x84, 0xd6, 0x4a, 0xee, 0x85, 0xd6, 0x4b, 0xef, 0x84, 0xd6, 0x4c, 0xee, - 0x85, 0xd6, 0x4d, 0xef, 0x84, 0xd6, 0x4e, 0xee, 0x85, 0xd6, 0x4f, 0xef, - 0x84, 0xd6, 0x50, 0xee, 0x85, 0xd6, 0x51, 0xef, 0x84, 0xd6, 0x52, 0xee, - 0x85, 0xd6, 0x53, 0xef, 0x84, 0xd6, 0x54, 0xee, 0x85, 0xd6, 0x55, 0xef, - 0x84, 0xd6, 0x56, 0xee, 0x85, 0xd6, 0x57, 0xef, 0x84, 0xd6, 0x58, 0xee, - 0x85, 0xd6, 0x58, 0xef, 0x84, 0xd6, 0x59, 0xee, 0x85, 0xd6, 0x5a, 0xef, - 0x84, 0xd6, 0x5b, 0xee, 0x85, 0xd6, 0x5c, 0xef, 0x84, 0xd6, 0x5d, 0xee, - 0x85, 0xd6, 0x5d, 0xef, 0x84, 0xd6, 0x5e, 0xee, 0x85, 0xd6, 0x5f, 0xef, - 0x84, 0xd6, 0x60, 0xee, 0x85, 0xd6, 0x60, 0xef, 0x84, 0xd6, 0x61, 0xee, - 0x85, 0xd6, 0x62, 0xef, 0x84, 0xd6, 0x63, 0xee, 0x85, 0xd6, 0x63, 0xef, - 0x84, 0xd6, 0x64, 0xee, 0x85, 0xd6, 0x65, 0xef, 0x84, 0xd6, 0x66, 0xee, - 0x85, 0xd6, 0x66, 0xef, 0x84, 0xd6, 0x67, 0xee, 0x85, 0xd6, 0x68, 0xef, - 0x84, 0xd6, 0x68, 0xee, 0x85, 0xd6, 0x69, 0xec, 0x85, 0xd6, 0x6a, 0xee, - 0x85, 0xd6, 0x6a, 0xec, 0x85, 0xd6, 0x6b, 0xee, 0x85, 0xd6, 0x6c, 0xec, - 0x85, 0xd6, 0x6c, 0xee, 0x85, 0xd6, 0x6d, 0xec, 0x85, 0xd6, 0x6e, 0xee, - 0x85, 0xd6, 0x6e, 0xec, 0x85, 0xd6, 0x6f, 0xee, 0x85, 0xd6, 0x70, 0xec, - 0x85, 0xd6, 0x70, 0xee, 0x85, 0xd6, 0x71, 0xec, 0x85, 0xd6, 0x72, 0xee, - 0x85, 0xd6, 0x72, 0xec, 0x85, 0xd6, 0x73, 0xee, 0x85, 0xd6, 0x73, 0xec, - 0x85, 0xd6, 0x74, 0xee, 0x85, 0xd6, 0x75, 0xec, 0x85, 0xd6, 0x75, 0xee, - 0x85, 0xd6, 0x76, 0xec, 0x85, 0xd6, 0x76, 0xee, 0x85, 0xd6, 0x77, 0xec, - 0x85, 0xd6, 0x78, 0xee, 0x85, 0xd6, 0x78, 0xec, 0x85, 0xd6, 0x79, 0xee, - 0x85, 0xd6, 0x79, 0xec, 0x85, 0xd6, 0x7a, 0xee, 0x85, 0xd6, 0x7a, 0xec, - 0x85, 0xd6, 0x7b, 0xee, 0x85, 0xd6, 0x7c, 0xec, 0x85, 0xd6, 0x7c, 0xee, - 0x85, 0xd6, 0x7d, 0xec, 0x85, 0xd6, 0x7d, 0xec, 0x86, 0xd6, 0x7e, 0xec, - 0x85, 0xd6, 0x7e, 0xec, 0x86, 0xd6, 0x7f, 0xec, 0x85, 0xd6, 0x7f, 0xec, - 0x86, 0xd6, 0x80, 0xec, 0x85, 0xd6, 0x81, 0xec, 0x86, 0xd6, 0x81, 0xec, - 0x85, 0xd6, 0x82, 0xec, 0x86, 0xd6, 0x82, 0xec, 0x85, 0xd6, 0x83, 0xec, - 0x86, 0xd6, 0x83, 0xec, 0x85, 0xd6, 0x84, 0xec, 0x86, 0xd6, 0x84, 0xec, - 0x85, 0xd6, 0x85, 0xec, 0x86, 0xd6, 0x85, 0xec, 0x85, 0xd5, 0x85, 0xec, - 0x86, 0xd6, 0x85, 0xec, 0x86, 0xd5, 0x85, 0xec, 0x87, 0xd6, 0x85, 0xec, - 0x87, 0xd5, 0x85, 0xec, 0x88, 0xd6, 0x85, 0xec, 0x88, 0xd5, 0x85, 0xec, - 0x89, 0xd6, 0x85, 0xec, 0x89, 0xd5, 0x85, 0xec, 0x8a, 0xd6, 0x85, 0xec, - 0x8a, 0xd5, 0x85, 0xec, 0x8b, 0xd6, 0x85, 0xec, 0x8b, 0xd5, 0x85, 0xec, - 0x8c, 0xd6, 0x85, 0xec, 0x8c, 0xd5, 0x85, 0xec, 0x8d, 0xd6, 0x85, 0xec, - 0x8d, 0xd5, 0x86, 0xec, 0x8e, 0xd2, 0x85, 0xec, 0x8e, 0xd5, 0x86, 0xec, - 0x8e, 0xd2, 0x85, 0xec, 0x8f, 0xd5, 0x86, 0xec, 0x8f, 0xd2, 0x85, 0xec, - 0x90, 0xd5, 0x86, 0xec, 0x90, 0xd2, 0x85, 0xec, 0x91, 0xd5, 0x86, 0xec, - 0x91, 0xd2, 0x85, 0xec, 0x92, 0xd5, 0x86, 0xec, 0x92, 0xd2, 0x85, 0xec, - 0x93, 0xd5, 0x86, 0xec, 0x93, 0xd2, 0x85, 0xec, 0x94, 0xd5, 0x86, 0xec, - 0x94, 0xd2, 0x85, 0xec, 0x94, 0xd5, 0x86, 0xec, 0x95, 0xd2, 0x85, 0xec, - 0x95, 0xd5, 0x86, 0xec, 0x96, 0xd2, 0x85, 0xec, 0x96, 0xd5, 0x86, 0xec, - 0x97, 0xd2, 0x85, 0xec, 0x97, 0xd5, 0x86, 0xec, 0x98, 0xd2, 0x85, 0xec, - 0x98, 0xd5, 0x86, 0xec, 0x98, 0xd2, 0x85, 0xec, 0x99, 0xd5, 0x97, 0xec, - 0x99, 0xeb, 0x96, 0xec, 0x9a, 0xeb, 0x97, 0xec, 0x9a, 0xeb, 0x96, 0xec, - 0x9a, 0xeb, 0x97, 0xec, 0x9b, 0xeb, 0x96, 0xec, 0x9b, 0xeb, 0x97, 0xec, - 0x9c, 0xeb, 0x9b, 0xec, 0x9c, 0xec, 0x9b, 0xec, 0x9d, 0xec, 0x9b, 0xec, - 0x9d, 0xec, 0x9b, 0xec, 0x9d, 0xec, 0x9b, 0xec, 0x9e, 0xec, 0x9b, 0xec, - 0x9e, 0xec, 0x9b, 0xec, 0x9f, 0xec, 0x9b, 0xec, 0x9f, 0xec, 0x9b, 0xec, - 0x9f, 0xec, 0x9b, 0xec, 0xa0, 0xec, 0x9b, 0xec, 0xa0, 0xec, 0xa0, 0xec, - 0xa1, 0xed, 0x9f, 0xec, 0xa1, 0xed, 0xa0, 0xec, 0xa1, 0xed, 0x9f, 0xec, - 0xa2, 0xed, 0xa0, 0xec, 0xa2, 0xed, 0x9f, 0xec, 0xa3, 0xed, 0xa0, 0xec, - 0xa3, 0xed, 0x9f, 0xec, 0xa3, 0xed, 0xa0, 0xec, 0xa4, 0xed, 0x9f, 0xec, - 0xa4, 0xed, 0xa0, 0xec, 0xa5, 0xed, 0xa4, 0xec, 0xa5, 0xee, 0xa0, 0xec, - 0xa5, 0xed, 0xa4, 0xec, 0xa6, 0xee, 0xa4, 0xec, 0xa6, 0xee, 0xa4, 0xec, - 0xa6, 0xee, 0xa4, 0xec, 0xa7, 0xee, 0xa4, 0xec, 0xa7, 0xee, 0xa4, 0xec, - 0xa8, 0xee, 0xa4, 0xec, 0xa8, 0xee, 0xa4, 0xec, 0xa8, 0xee, 0xa4, 0xec, - 0xa9, 0xee, 0xa4, 0xec, 0xa9, 0xee, 0xa4, 0xec, 0xaa, 0xee, 0xa8, 0xec, - 0xaa, 0xef, 0xa8, 0xec, 0xaa, 0xef, 0xa8, 0xec, 0xab, 0xef, 0xa8, 0xec, - 0xab, 0xef, 0xa8, 0xec, 0xab, 0xef, 0xa8, 0xec, 0xac, 0xef, 0xa8, 0xec, - 0xac, 0xef, 0xa8, 0xec, 0xac, 0xef, 0xa8, 0xec, 0xad, 0xef, 0xa8, 0xec, - 0xad, 0xef, 0xa8, 0xec, 0xae, 0xef, 0xac, 0xec, 0xae, 0xf0, 0xac, 0xec, - 0xae, 0xf0, 0xac, 0xec, 0xaf, 0xf0, 0xac, 0xec, 0xaf, 0xf0, 0xac, 0xec, - 0xaf, 0xf0, 0xac, 0xec, 0xb0, 0xf0, 0xac, 0xec, 0xb0, 0xf0, 0xac, 0xec, - 0xb0, 0xf0, 0xac, 0xec, 0xb1, 0xf0, 0xac, 0xec, 0xb1, 0xf0, 0xac, 0xec, - 0xb2, 0xf0, 0xb0, 0xec, 0xb2, 0xf1, 0xb0, 0xec, 0xb2, 0xf1, 0xb0, 0xec, - 0xb3, 0xf1, 0xb0, 0xec, 0xb3, 0xf1, 0xb0, 0xec, 0xb3, 0xf1, 0xb0, 0xec, - 0xb4, 0xf1, 0xb0, 0xec, 0xb4, 0xf1, 0xb0, 0xec, 0xb4, 0xf1, 0xb0, 0xec, - 0xb5, 0xf1, 0xb0, 0xec, 0xb5, 0xf1, 0xb0, 0xec, 0xb5, 0xf1, 0xb4, 0xec, - 0xb6, 0xf2, 0xb0, 0xec, 0xb6, 0xf1, 0xb4, 0xec, 0xb6, 0xf2, 0xb4, 0xec, - 0xb7, 0xf2, 0xb4, 0xec, 0xb7, 0xf2, 0xb4, 0xec, 0xb7, 0xf2, 0xb4, 0xec, - 0xb8, 0xf2, 0xb4, 0xec, 0xb8, 0xf2, 0xb4, 0xec, 0xb8, 0xf2, 0xb4, 0xec, - 0xb9, 0xf2, 0xb4, 0xec, 0xb9, 0xf2, 0xb8, 0xec, 0xb9, 0xf3, 0xb4, 0xec, - 0xba, 0xf2, 0xb8, 0xec, 0xba, 0xf3, 0xb8, 0xec, 0xba, 0xf3, 0xcd, 0xec, - 0xbb, 0xd8, 0xcc, 0xec, 0xbb, 0xdb, 0xcd, 0xec, 0xbb, 0xd8, 0xcc, 0xec, - 0xbc, 0xdb, 0xcd, 0xec, 0xbc, 0xd8, 0xcc, 0xec, 0xbc, 0xdb, 0xcd, 0xec, - 0xbd, 0xd8, 0xcc, 0xec, 0xbd, 0xdb, 0xcd, 0xec, 0xbd, 0xd8, 0xcc, 0xec, - 0xbe, 0xdb, 0xcd, 0xec, 0xbe, 0xd8, 0xcc, 0xec, 0xbe, 0xdb, 0xcd, 0xec, - 0xbf, 0xd8, 0xcc, 0xec, 0xbf, 0xdb, 0xcd, 0xec, 0xbf, 0xd8, 0xcc, 0xec, - 0xc0, 0xdb, 0xcd, 0xec, 0xc0, 0xd8, 0xcc, 0xec, 0xc0, 0xdb, 0xcd, 0xec, - 0xc1, 0xd8, 0xcc, 0xec, 0xc1, 0xdb, 0xcd, 0xec, 0xc1, 0xd8, 0xcc, 0xec, - 0xc1, 0xdb, 0xcd, 0xec, 0xc2, 0xd8, 0xcc, 0xec, 0xc2, 0xdb, 0xcd, 0xec, - 0xc2, 0xd8, 0xcc, 0xec, 0xc3, 0xdb, 0xcd, 0xec, 0xc3, 0xd8, 0xcc, 0xec, - 0xc3, 0xdb, 0xcd, 0xec, 0xc4, 0xd8, 0xcc, 0xec, 0xc4, 0xdb, 0xcd, 0xec, - 0xc4, 0xd8, 0xcc, 0xec, 0xc5, 0xdb, 0xcd, 0xec, 0xc5, 0xd8, 0xcc, 0xec, - 0xc5, 0xdb, 0xcd, 0xec, 0xc6, 0xd8, 0xcd, 0xec, 0xc6, 0xd6, 0xcd, 0xec, - 0xc6, 0xd8, 0xcd, 0xec, 0xc6, 0xd6, 0xcd, 0xec, 0xc7, 0xd8, 0xcd, 0xec, - 0xc7, 0xd6, 0xcd, 0xec, 0xc7, 0xd8, 0xcd, 0xec, 0xc8, 0xd6, 0xcd, 0xec, - 0xc8, 0xd8, 0xcd, 0xec, 0xc8, 0xd6, 0xcd, 0xec, 0xc9, 0xd8, 0xcd, 0xec, - 0xc9, 0xd6, 0xcd, 0xec, 0xc9, 0xd8, 0xcd, 0xec, 0xc9, 0xd6, 0xcd, 0xec, - 0xca, 0xd8, 0xcd, 0xec, 0xca, 0xd6, 0xcd, 0xec, 0xca, 0xd8, 0xcd, 0xec, - 0xcb, 0xd6, 0xcd, 0xec, 0xcb, 0xd8, 0xcd, 0xec, 0xcb, 0xd6, 0xcd, 0xec, - 0xcc, 0xd8, 0xcd, 0xec, 0xcc, 0xd6, 0xcd, 0xec, 0xcc, 0xd6, 0xcd, 0xec, - 0xcc, 0xd6, 0xcd, 0xec, 0xcd, 0xd6, 0xcd, 0xec, 0xcd, 0xd6, 0xcd, 0xec, - 0xcd, 0xd6, 0xce, 0xec, 0xcd, 0xd6, 0xce, 0xec, 0xcd, 0xd6, 0xce, 0xec, - 0xcd, 0xd6, 0xce, 0xec, 0xcd, 0xd6, 0xcf, 0xec, 0xcd, 0xd6, 0xcf, 0xec, - 0xcd, 0xd6, 0xcf, 0xec, 0xcd, 0xd6, 0xd0, 0xec, 0xcd, 0xd6, 0xd0, 0xec, - 0xcd, 0xd6, 0xd0, 0xec, 0xcd, 0xd6, 0xd0, 0xec, 0xcd, 0xd6, 0xd1, 0xec, - 0xcd, 0xd6, 0xd1, 0xec, 0xcd, 0xd6, 0xd1, 0xec, 0xcd, 0xd6, 0xd2, 0xec, - 0xcd, 0xd6, 0xd2, 0xea, 0xcd, 0xd6, 0xd2, 0xec, 0xcd, 0xd6, 0xd2, 0xea, - 0xcd, 0xd6, 0xd3, 0xec, 0xcd, 0xd6, 0xd3, 0xea, 0xcd, 0xd6, 0xd3, 0xec, - 0xcd, 0xd6, 0xd4, 0xea, 0xcd, 0xd6, 0xd4, 0xec, 0xcd, 0xd6, 0xd4, 0xea, - 0xcd, 0xd6, 0xd4, 0xec, 0xcd, 0xd6, 0xd5, 0xea, 0xcd, 0xd6, 0xd5, 0xec, - 0xcd, 0xd6, 0xd5, 0xea, 0xcd, 0xd6, 0xd6, 0xec, 0xcd, 0xd6, 0xd6, 0xea, - 0xcd, 0xd6, 0xd6, 0xec, 0xcd, 0xd6, 0xd6, 0xea, 0xcd, 0xd6, 0xd7, 0xec, - 0xcd, 0xd6, 0xd7, 0xea, 0xcd, 0xd6, 0xd7, 0xec, 0xcd, 0xd6, 0xd7, 0xea, - 0xcd, 0xd6, 0xd8, 0xec, 0xcd, 0xd6, 0xd8, 0xea, 0xcd, 0xd6, 0xd8, 0xec, - 0xcd, 0xd6, 0xd9, 0xea, 0xcd, 0xd6, 0xd9, 0xec, 0xcd, 0xd6, 0xd9, 0xea, - 0xcd, 0xd6, 0xd9, 0xec, 0xcd, 0xd6, 0xda, 0xea, 0xcd, 0xd6, 0xda, 0xee, - 0xe5, 0xd6, 0xda, 0xec, 0xe6, 0xd6, 0xda, 0xee, 0xe5, 0xd6, 0xdb, 0xec, - 0xe6, 0xd6, 0xdb, 0xee, 0xe5, 0xd6, 0xdb, 0xec, 0xe6, 0xd6, 0xdb, 0xee, - 0xe5, 0xd6, 0xdc, 0xec, 0xe6, 0xd6, 0xdc, 0xee, 0xe5, 0xd6, 0xdc, 0xec, - 0xe6, 0xd6, 0xdd, 0xee, 0xe5, 0xd6, 0xdd, 0xec, 0xe6, 0xd6, 0xdd, 0xee, - 0xe5, 0xd6, 0xdd, 0xec, 0xe6, 0xd6, 0xde, 0xee, 0xe5, 0xd6, 0xde, 0xec, - 0xe6, 0xd6, 0xde, 0xee, 0xe5, 0xd6, 0xde, 0xec, 0xe6, 0xd6, 0xdf, 0xee, - 0xe5, 0xd6, 0xdf, 0xec, 0xe6, 0xd6, 0xdf, 0xee, 0xe5, 0xd6, 0xdf, 0xec, - 0xe6, 0xd6, 0xe0, 0xee, 0xe5, 0xd6, 0xe0, 0xec, 0xe6, 0xd6, 0xe0, 0xee, - 0xe5, 0xd6, 0xe1, 0xec, 0xe6, 0xd6, 0xe1, 0xee, 0xe5, 0xd6, 0xe1, 0xec, - 0xe6, 0xd6, 0xe1, 0xee, 0xe5, 0xd6, 0xe2, 0xec, 0xe6, 0xd6, 0xe2, 0xec, - 0xe6, 0xd6, 0xe2, 0xec, 0xe6, 0xd6, 0xe2, 0xec, 0xe6, 0xd6, 0xe3, 0xec, - 0xe6, 0xd6, 0xe3, 0xec, 0xe6, 0xd6, 0xe3, 0xec, 0xe6, 0xd6, 0xe3, 0xec, - 0xe6, 0xd6, 0xe4, 0xec, 0xe6, 0xd6, 0xe4, 0xec, 0xe6, 0xd6, 0xe4, 0xec, - 0xe6, 0xd6, 0xe4, 0xec, 0xe6, 0xd6, 0xe5, 0xec, 0xe6, 0xd6, 0xe5, 0xec, - 0xe6, 0xd6, 0xe5, 0xec, 0xe6, 0xd6, 0xe5, 0xec, 0xe6, 0xd6, 0xe6, 0xec, - 0xe6, 0xd6, 0xe5, 0xec, 0xe6, 0xd6, 0xe6, 0xec, 0xe6, 0xd6, 0xe5, 0xec, - 0xe6, 0xd6, 0xe6, 0xec, 0xe7, 0xd6, 0xe8, 0xec, 0xe7, 0xd6, 0xe8, 0xec, - 0xe7, 0xd6, 0xe8, 0xec, 0xe7, 0xd6, 0xe8, 0xec, 0xe7, 0xd6, 0xe8, 0xec, - 0xe8, 0xd6, 0xe8, 0xec, 0xe8, 0xd6, 0xe8, 0xec, 0xe8, 0xd6, 0xe9, 0xec, - 0xe9, 0xd6, 0xe9, 0xec, 0xe9, 0xd6, 0xe9, 0xec, 0xe9, 0xd6, 0xe9, 0xec, - 0xe9, 0xd6, 0xea, 0xec, 0xea, 0xd6, 0xea, 0xec, 0xea, 0xd6, 0xea, 0xec, - 0xea, 0xd6, 0xea, 0xec, 0xea, 0xd6, 0xeb, 0xec, 0xeb, 0xd6, 0xea, 0xec, - 0xeb, 0xd6, 0xeb, 0xec, 0xeb, 0xd6, 0xeb, 0xec, 0xeb, 0xd7, 0xec, 0xec, - 0xec, 0xd7, 0xec, 0xec, 0xec, 0xd7, 0xec, 0xec, 0xec, 0xd7, 0xec, 0xec, - 0xec, 0xd7, 0xec, 0xec, 0xec, 0xd7, 0xed, 0xec, 0xed, 0xd7, 0xed, 0xec, - 0xed, 0xd7, 0xed, 0xec, 0xed, 0xd7, 0xed, 0xec, 0xed, 0xd7, 0xed, 0xec, - 0xee, 0xd7, 0xee, 0xec, 0xee, 0xd4, 0xef, 0xec, 0xee, 0xd5, 0xef, 0xec, - 0xee, 0xd5, 0xef, 0xec, 0xef, 0xd5, 0xef, 0xec, 0xef, 0xd5, 0xef, 0xec, - 0xef, 0xd5, 0xef, 0xec, 0xef, 0xd5, 0xf0, 0xec, 0xf0, 0xd5, 0xf0, 0xec, - 0xf0, 0xd5, 0xf0, 0xec, 0xf0, 0xd5, 0xf0, 0xec, 0xf0, 0xd5, 0xf1, 0xec, - 0xf1, 0xd5, 0xf1, 0xec, 0xf1, 0xd5, 0xf1, 0xec, 0xf1, 0xd5, 0xf1, 0xec, - 0xf1, 0xd5, 0xf2, 0xec, 0xf1, 0xd6, 0xf2, 0xec, 0xf1, 0xd6, 0xf2, 0xec, - 0xf1, 0xd6, 0xf2, 0xec, 0xf1, 0xd6, 0xf2, 0xec, 0xf1, 0xd6, 0xf3, 0xec, - 0xf1, 0xd6, 0xf3, 0xec, 0xf1, 0xd6, 0xf3, 0xec, 0xf1, 0xd6, 0xf3, 0xec, - 0xf1, 0xd6, 0xf4, 0xec, 0xf1, 0xd6, 0xf4, 0xec, 0xf1, 0xd6, 0xf4, 0xec, - 0xf1, 0xd6, 0xf4, 0xec, 0xf1, 0xd6, 0xf5, 0xec, 0xf1, 0xd6, 0xf5, 0xec, - 0xf1, 0xd6, 0xf5, 0xec, 0xf1, 0xd6, 0xf5, 0xec, 0xf1, 0xd6, 0xf5, 0xec, - 0xf1, 0xd6, 0xf6, 0xec, 0xf1, 0xd6, 0xf6, 0xec, 0xf1, 0xd6, 0xf6, 0xec, - 0xf1, 0xd6, 0xf6, 0xec, 0xf1, 0xd6, 0xf7, 0xec, 0xf1, 0xd6, 0xf7, 0xec, - 0xf1, 0xd6, 0xf7, 0xec, 0xf1, 0xd6, 0xf7, 0xec, 0xf1, 0xd6, 0xf8, 0xec, - 0xf1, 0xd6, 0xf8, 0xec, 0xf1, 0xd6, 0xf8, 0xec, 0xf1, 0xd6, 0xf8, 0xec, - 0xf1, 0xd6, 0xf8, 0xec, 0xf1, 0xd6, 0xf9, 0xec, 0xf1, 0xd6, 0xf9, 0xec, - 0xf1, 0xd6, 0xf9, 0xec, 0xf1, 0xd6, 0xf9, 0xec, 0xf1, 0xd6, 0xfa, 0xec, - 0xf1, 0xd6, 0xfa, 0xec, 0xf1, 0xd6, 0xfa, 0xec, 0xf1, 0xd6, 0xfa, 0xec, - 0xf1, 0xd6, 0xfa, 0xec, 0xf1, 0xd6, 0xfb, 0xec, 0xf1, 0xd6, 0xfb, 0xec, - 0xf1, 0xd6, 0xfb, 0xec, 0xf1, 0xd6, 0xfb, 0xec, 0xf1, 0xd6, 0xfc, 0xec, - 0xf1, 0xd6, 0xfc, 0xec, 0xf1, 0xd6, 0xfc, 0xec, 0xf1, 0xd6, 0xfc, 0xec, - 0xf1, 0xd6, 0xfc, 0xec, 0xf1, 0xd6, 0xfd, 0xec, 0xf1, 0xd6, 0xfd, 0xec, - 0xf1, 0xd6, 0xfd, 0xec, 0xf1, 0xd6, 0xfd, 0xec, 0xf1, 0xd6, 0xfe, 0xec, - 0xf1, 0xd6, 0xfe, 0xec, 0xf1, 0xd6, 0xfe, 0xec, 0xf1, 0xd6, 0xfe, 0xec, - 0xf1, 0xd6, 0xfe, 0xec, 0xf1, 0xd6, 0xff, 0xec, 0xf1, 0xd6, 0xff, 0xec, - 0xf1, 0xd6, 0x03, 0xef, 0x84, 0xd6, 0x0a, 0xf1, 0x84, 0xd6, 0x0f, 0xef, - 0x84, 0xd6, 0x14, 0xf1, 0x84, 0xd6, 0x17, 0xef, 0x84, 0xd6, 0x1b, 0xf1, - 0x84, 0xd6, 0x1e, 0xef, 0x84, 0xd6, 0x20, 0xf1, 0x84, 0xd6, 0x23, 0xef, - 0x84, 0xd6, 0x25, 0xf1, 0x84, 0xd6, 0x27, 0xef, 0x84, 0xd6, 0x29, 0xf1, - 0x84, 0xd6, 0x2b, 0xef, 0x84, 0xd6, 0x2d, 0xf1, 0x84, 0xd6, 0x2f, 0xef, - 0x84, 0xd6, 0x31, 0xf1, 0x84, 0xd6, 0x32, 0xef, 0x84, 0xd6, 0x34, 0xf1, - 0x84, 0xd6, 0x35, 0xef, 0x84, 0xd6, 0x37, 0xf1, 0x84, 0xd6, 0x38, 0xef, - 0x84, 0xd6, 0x3a, 0xf1, 0x84, 0xd6, 0x3b, 0xef, 0x84, 0xd6, 0x3c, 0xf1, - 0x84, 0xd6, 0x3e, 0xef, 0x84, 0xd6, 0x3f, 0xf1, 0x84, 0xd6, 0x40, 0xef, - 0x84, 0xd6, 0x42, 0xee, 0x85, 0xd6, 0x43, 0xef, 0x84, 0xd6, 0x44, 0xee, - 0x85, 0xd6, 0x45, 0xef, 0x84, 0xd6, 0x46, 0xee, 0x85, 0xd6, 0x47, 0xef, - 0x84, 0xd6, 0x48, 0xee, 0x85, 0xd6, 0x49, 0xef, 0x84, 0xd6, 0x4a, 0xee, - 0x85, 0xd6, 0x4b, 0xef, 0x84, 0xd6, 0x4c, 0xee, 0x85, 0xd6, 0x4d, 0xef, - 0x84, 0xd6, 0x4e, 0xee, 0x85, 0xd6, 0x4f, 0xef, 0x84, 0xd6, 0x50, 0xee, - 0x85, 0xd6, 0x51, 0xef, 0x84, 0xd6, 0x52, 0xee, 0x85, 0xd6, 0x53, 0xef, - 0x84, 0xd6, 0x54, 0xee, 0x85, 0xd6, 0x55, 0xef, 0x84, 0xd6, 0x56, 0xee, - 0x85, 0xd6, 0x57, 0xef, 0x84, 0xd6, 0x58, 0xee, 0x85, 0xd6, 0x58, 0xef, - 0x84, 0xd6, 0x59, 0xee, 0x85, 0xd6, 0x5a, 0xef, 0x84, 0xd6, 0x5b, 0xee, - 0x85, 0xd6, 0x5c, 0xef, 0x84, 0xd6, 0x5d, 0xee, 0x85, 0xd6, 0x5d, 0xef, - 0x84, 0xd6, 0x5e, 0xee, 0x85, 0xd6, 0x5f, 0xef, 0x84, 0xd6, 0x60, 0xee, - 0x85, 0xd6, 0x60, 0xef, 0x84, 0xd6, 0x61, 0xee, 0x85, 0xd6, 0x62, 0xef, - 0x84, 0xd6, 0x63, 0xee, 0x85, 0xd6, 0x63, 0xef, 0x84, 0xd6, 0x64, 0xee, - 0x85, 0xd6, 0x65, 0xef, 0x84, 0xd6, 0x66, 0xee, 0x85, 0xd6, 0x66, 0xef, - 0x84, 0xd6, 0x67, 0xee, 0x85, 0xd6, 0x68, 0xef, 0x84, 0xd6, 0x68, 0xee, - 0x85, 0xd6, 0x69, 0xef, 0x84, 0xd6, 0x6a, 0xee, 0x85, 0xd6, 0x6a, 0xef, - 0x84, 0xd6, 0x6b, 0xee, 0x85, 0xd6, 0x6c, 0xef, 0x84, 0xd6, 0x6c, 0xee, - 0x85, 0xd6, 0x6d, 0xef, 0x84, 0xd6, 0x6e, 0xee, 0x85, 0xd6, 0x6e, 0xef, - 0x84, 0xd6, 0x6f, 0xee, 0x85, 0xd6, 0x70, 0xef, 0x84, 0xd6, 0x70, 0xee, - 0x85, 0xd6, 0x71, 0xec, 0x85, 0xd6, 0x72, 0xee, 0x85, 0xd6, 0x72, 0xec, - 0x85, 0xd6, 0x73, 0xee, 0x85, 0xd6, 0x73, 0xec, 0x85, 0xd6, 0x74, 0xee, - 0x85, 0xd6, 0x75, 0xec, 0x85, 0xd6, 0x75, 0xee, 0x85, 0xd6, 0x76, 0xec, - 0x85, 0xd6, 0x76, 0xee, 0x85, 0xd6, 0x77, 0xec, 0x85, 0xd6, 0x78, 0xee, - 0x85, 0xd6, 0x78, 0xec, 0x85, 0xd6, 0x79, 0xee, 0x85, 0xd6, 0x79, 0xec, - 0x85, 0xd6, 0x7a, 0xee, 0x85, 0xd6, 0x7a, 0xec, 0x85, 0xd6, 0x7b, 0xee, - 0x85, 0xd6, 0x7c, 0xec, 0x85, 0xd6, 0x7c, 0xee, 0x85, 0xd6, 0x7d, 0xec, - 0x85, 0xd6, 0x7d, 0xee, 0x85, 0xd6, 0x7e, 0xec, 0x85, 0xd6, 0x7e, 0xee, - 0x85, 0xd6, 0x7f, 0xec, 0x85, 0xd6, 0x7f, 0xee, 0x85, 0xd6, 0x80, 0xec, - 0x85, 0xd6, 0x81, 0xee, 0x85, 0xd6, 0x81, 0xec, 0x85, 0xd6, 0x82, 0xec, - 0x86, 0xd6, 0x82, 0xec, 0x85, 0xd6, 0x83, 0xec, 0x86, 0xd6, 0x83, 0xec, - 0x85, 0xd6, 0x84, 0xec, 0x86, 0xd6, 0x84, 0xec, 0x85, 0xd6, 0x85, 0xec, - 0x86, 0xd6, 0x85, 0xec, 0x85, 0xd5, 0x85, 0xec, 0x86, 0xd6, 0x85, 0xec, - 0x86, 0xd5, 0x85, 0xec, 0x87, 0xd6, 0x85, 0xec, 0x87, 0xd5, 0x85, 0xec, - 0x88, 0xd6, 0x85, 0xec, 0x88, 0xd5, 0x85, 0xec, 0x89, 0xd6, 0x85, 0xec, - 0x89, 0xd5, 0x85, 0xec, 0x8a, 0xd6, 0x85, 0xec, 0x8a, 0xd5, 0x85, 0xec, - 0x8b, 0xd6, 0x85, 0xec, 0x8b, 0xd5, 0x85, 0xec, 0x8c, 0xd6, 0x85, 0xec, - 0x8c, 0xd5, 0x85, 0xec, 0x8d, 0xd6, 0x85, 0xec, 0x8d, 0xd5, 0x86, 0xec, - 0x8e, 0xd2, 0x85, 0xec, 0x8e, 0xd5, 0x86, 0xec, 0x8e, 0xd2, 0x85, 0xec, - 0x8f, 0xd5, 0x86, 0xec, 0x8f, 0xd2, 0x85, 0xec, 0x90, 0xd5, 0x86, 0xec, - 0x90, 0xd2, 0x85, 0xec, 0x91, 0xd5, 0x86, 0xec, 0x91, 0xd2, 0x85, 0xec, - 0x92, 0xd5, 0x86, 0xec, 0x92, 0xd2, 0x85, 0xec, 0x93, 0xd5, 0x86, 0xec, - 0x93, 0xd2, 0x85, 0xec, 0x94, 0xd5, 0x86, 0xec, 0x94, 0xd2, 0x85, 0xec, - 0x94, 0xd5, 0x86, 0xec, 0x95, 0xd2, 0x85, 0xec, 0x95, 0xd5, 0x86, 0xec, - 0x96, 0xd2, 0x85, 0xec, 0x96, 0xd5, 0x86, 0xec, 0x97, 0xd2, 0x85, 0xec, - 0x97, 0xd5, 0x86, 0xec, 0x98, 0xd2, 0x85, 0xec, 0x98, 0xd5, 0x86, 0xec, - 0x98, 0xd2, 0x94, 0xec, 0x99, 0xea, 0x94, 0xec, 0x99, 0xea, 0x94, 0xec, - 0x9a, 0xea, 0x99, 0xec, 0x9a, 0xeb, 0x99, 0xec, 0x9a, 0xeb, 0x99, 0xec, - 0x9b, 0xeb, 0x99, 0xec, 0x9b, 0xeb, 0x99, 0xec, 0x9c, 0xeb, 0x99, 0xec, - 0x9c, 0xeb, 0x99, 0xec, 0x9d, 0xeb, 0x99, 0xec, 0x9d, 0xeb, 0x99, 0xec, - 0x9d, 0xeb, 0x99, 0xec, 0x9e, 0xeb, 0x99, 0xec, 0x9e, 0xeb, 0x9e, 0xec, - 0x9f, 0xec, 0x9d, 0xec, 0x9f, 0xec, 0x9e, 0xec, 0x9f, 0xec, 0x9d, 0xec, - 0xa0, 0xec, 0x9e, 0xec, 0xa0, 0xec, 0x9d, 0xec, 0xa1, 0xec, 0x9e, 0xec, - 0xa1, 0xec, 0x9d, 0xec, 0xa1, 0xec, 0x9e, 0xec, 0xa2, 0xec, 0x9d, 0xec, - 0xa2, 0xec, 0x9e, 0xec, 0xa3, 0xec, 0xa2, 0xec, 0xa3, 0xed, 0xa2, 0xec, - 0xa3, 0xed, 0xa2, 0xec, 0xa4, 0xed, 0xa2, 0xec, 0xa4, 0xed, 0xa2, 0xec, - 0xa5, 0xed, 0xa2, 0xec, 0xa5, 0xed, 0xa2, 0xec, 0xa5, 0xed, 0xa2, 0xec, - 0xa6, 0xed, 0xa2, 0xec, 0xa6, 0xed, 0xa2, 0xec, 0xa6, 0xed, 0xa2, 0xec, - 0xa7, 0xed, 0xa6, 0xec, 0xa7, 0xee, 0xa2, 0xec, 0xa8, 0xed, 0xa6, 0xec, - 0xa8, 0xee, 0xa6, 0xec, 0xa8, 0xee, 0xa6, 0xec, 0xa9, 0xee, 0xa6, 0xec, - 0xa9, 0xee, 0xa6, 0xec, 0xaa, 0xee, 0xa6, 0xec, 0xaa, 0xee, 0xa6, 0xec, - 0xaa, 0xee, 0xa6, 0xec, 0xab, 0xee, 0xa6, 0xec, 0xab, 0xee, 0xa6, 0xec, - 0xab, 0xee, 0xa6, 0xec, 0xac, 0xee, 0xab, 0xec, 0xac, 0xef, 0xaa, 0xec, - 0xac, 0xef, 0xab, 0xec, 0xad, 0xef, 0xaa, 0xec, 0xad, 0xef, 0xab, 0xec, - 0xae, 0xef, 0xaa, 0xec, 0xae, 0xef, 0xab, 0xec, 0xae, 0xef, 0xaa, 0xec, - 0xaf, 0xef, 0xab, 0xec, 0xaf, 0xef, 0xaa, 0xec, 0xaf, 0xef, 0xab, 0xec, - 0xb0, 0xef, 0xaf, 0xec, 0xb0, 0xf0, 0xae, 0xec, 0xb0, 0xf0, 0xaf, 0xec, - 0xb1, 0xf0, 0xae, 0xec, 0xb1, 0xf0, 0xaf, 0xec, 0xb2, 0xf0, 0xae, 0xec, - 0xb2, 0xf0, 0xaf, 0xec, 0xb2, 0xf0, 0xae, 0xec, 0xb3, 0xf0, 0xaf, 0xec, - 0xb3, 0xf0, 0xae, 0xec, 0xb3, 0xf0, 0xaf, 0xec, 0xb4, 0xf0, 0xb3, 0xec, - 0xb4, 0xf1, 0xb2, 0xec, 0xb4, 0xf1, 0xb3, 0xec, 0xb5, 0xf1, 0xb2, 0xec, - 0xb5, 0xf1, 0xb3, 0xec, 0xb5, 0xf1, 0xb2, 0xec, 0xb6, 0xf1, 0xb3, 0xec, - 0xb6, 0xf1, 0xb2, 0xec, 0xb6, 0xf1, 0xb3, 0xec, 0xb7, 0xf1, 0xb2, 0xec, - 0xb7, 0xf1, 0xb3, 0xec, 0xb7, 0xf1, 0xb6, 0xec, 0xb8, 0xf2, 0xb3, 0xec, - 0xb8, 0xf1, 0xb6, 0xec, 0xb8, 0xf2, 0xb6, 0xec, 0xb9, 0xf2, 0xb6, 0xec, - 0xb9, 0xf2, 0xb6, 0xec, 0xb9, 0xf2, 0xb6, 0xec, 0xba, 0xf2, 0xb6, 0xec, - 0xba, 0xf2, 0xb6, 0xec, 0xba, 0xf2, 0xcc, 0xec, 0xbb, 0xdd, 0xcc, 0xec, - 0xbb, 0xdb, 0xcc, 0xec, 0xbb, 0xdd, 0xcc, 0xec, 0xbc, 0xdb, 0xcc, 0xec, - 0xbc, 0xdd, 0xcc, 0xec, 0xbc, 0xdb, 0xcc, 0xec, 0xbd, 0xdd, 0xcc, 0xec, - 0xbd, 0xdb, 0xcc, 0xec, 0xbd, 0xdd, 0xcc, 0xec, 0xbe, 0xdb, 0xcc, 0xec, - 0xbe, 0xdd, 0xcc, 0xec, 0xbe, 0xdb, 0xcc, 0xec, 0xbf, 0xdd, 0xcc, 0xec, - 0xbf, 0xdb, 0xcd, 0xec, 0xbf, 0xd8, 0xcc, 0xec, 0xc0, 0xdb, 0xcd, 0xec, - 0xc0, 0xd8, 0xcc, 0xec, 0xc0, 0xdb, 0xcd, 0xec, 0xc1, 0xd8, 0xcc, 0xec, - 0xc1, 0xdb, 0xcd, 0xec, 0xc1, 0xd8, 0xcc, 0xec, 0xc1, 0xdb, 0xcd, 0xec, - 0xc2, 0xd8, 0xcc, 0xec, 0xc2, 0xdb, 0xcd, 0xec, 0xc2, 0xd8, 0xcc, 0xec, - 0xc3, 0xdb, 0xcd, 0xec, 0xc3, 0xd8, 0xcc, 0xec, 0xc3, 0xdb, 0xcd, 0xec, - 0xc4, 0xd8, 0xcc, 0xec, 0xc4, 0xdb, 0xcd, 0xec, 0xc4, 0xd8, 0xcc, 0xec, - 0xc5, 0xdb, 0xcd, 0xec, 0xc5, 0xd8, 0xcc, 0xec, 0xc5, 0xdb, 0xcd, 0xec, - 0xc6, 0xd8, 0xcd, 0xec, 0xc6, 0xd6, 0xcd, 0xec, 0xc6, 0xd8, 0xcd, 0xec, - 0xc6, 0xd6, 0xcd, 0xec, 0xc7, 0xd8, 0xcd, 0xec, 0xc7, 0xd6, 0xcd, 0xec, - 0xc7, 0xd8, 0xcd, 0xec, 0xc8, 0xd6, 0xcd, 0xec, 0xc8, 0xd8, 0xcd, 0xec, - 0xc8, 0xd6, 0xcd, 0xec, 0xc9, 0xd8, 0xcd, 0xec, 0xc9, 0xd6, 0xcd, 0xec, - 0xc9, 0xd8, 0xcd, 0xec, 0xc9, 0xd6, 0xcd, 0xec, 0xca, 0xd8, 0xcd, 0xec, - 0xca, 0xd6, 0xcd, 0xec, 0xca, 0xd8, 0xcd, 0xec, 0xcb, 0xd6, 0xcd, 0xec, - 0xcb, 0xd8, 0xcd, 0xec, 0xcb, 0xd6, 0xcd, 0xec, 0xcc, 0xd8, 0xcd, 0xec, - 0xcc, 0xd6, 0xcd, 0xec, 0xcc, 0xd6, 0xcd, 0xec, 0xcc, 0xd6, 0xcd, 0xec, - 0xcd, 0xd6, 0xcd, 0xec, 0xcc, 0xd6, 0xcd, 0xec, 0xcd, 0xd6, 0xce, 0xec, - 0xcc, 0xd6, 0xce, 0xec, 0xcd, 0xd6, 0xce, 0xeb, 0xcd, 0xd6, 0xce, 0xec, - 0xcd, 0xd6, 0xcf, 0xeb, 0xcd, 0xd6, 0xcf, 0xec, 0xcd, 0xd6, 0xcf, 0xeb, - 0xcd, 0xd6, 0xd0, 0xec, 0xcd, 0xd6, 0xd0, 0xeb, 0xcd, 0xd6, 0xd0, 0xec, - 0xcd, 0xd6, 0xd0, 0xeb, 0xcd, 0xd6, 0xd1, 0xec, 0xcd, 0xd6, 0xd1, 0xeb, - 0xcd, 0xd6, 0xd1, 0xec, 0xcd, 0xd6, 0xd2, 0xeb, 0xcd, 0xd6, 0xd2, 0xec, - 0xcd, 0xd6, 0xd2, 0xeb, 0xcd, 0xd6, 0xd2, 0xec, 0xcd, 0xd6, 0xd3, 0xeb, - 0xcd, 0xd6, 0xd3, 0xec, 0xcd, 0xd6, 0xd3, 0xeb, 0xcd, 0xd6, 0xd4, 0xec, - 0xcd, 0xd6, 0xd4, 0xeb, 0xcd, 0xd6, 0xd4, 0xea, 0xcd, 0xd6, 0xd4, 0xeb, - 0xcd, 0xd6, 0xd5, 0xea, 0xcd, 0xd6, 0xd5, 0xeb, 0xcd, 0xd6, 0xd5, 0xea, - 0xcd, 0xd6, 0xd6, 0xeb, 0xcd, 0xd6, 0xd6, 0xea, 0xcd, 0xd6, 0xd6, 0xeb, - 0xcd, 0xd6, 0xd6, 0xea, 0xcd, 0xd6, 0xd7, 0xeb, 0xcd, 0xd6, 0xd7, 0xea, - 0xcd, 0xd6, 0xd7, 0xeb, 0xcd, 0xd6, 0xd7, 0xea, 0xcd, 0xd6, 0xd8, 0xeb, - 0xcd, 0xd6, 0xd8, 0xea, 0xcd, 0xd6, 0xd8, 0xeb, 0xcd, 0xd6, 0xd9, 0xea, - 0xcd, 0xd6, 0xd9, 0xeb, 0xcd, 0xd6, 0xd9, 0xea, 0xcd, 0xd6, 0xd9, 0xeb, - 0xcd, 0xd6, 0xda, 0xea, 0xcd, 0xd6, 0xda, 0xee, 0xe5, 0xd6, 0xda, 0xef, - 0xe5, 0xd6, 0xda, 0xee, 0xe5, 0xd6, 0xdb, 0xef, 0xe5, 0xd6, 0xdb, 0xee, - 0xe5, 0xd6, 0xdb, 0xef, 0xe5, 0xd6, 0xdb, 0xee, 0xe5, 0xd6, 0xdc, 0xef, - 0xe5, 0xd6, 0xdc, 0xee, 0xe5, 0xd6, 0xdc, 0xed, 0xe6, 0xd6, 0xdd, 0xee, - 0xe5, 0xd6, 0xdd, 0xed, 0xe6, 0xd6, 0xdd, 0xee, 0xe5, 0xd6, 0xdd, 0xed, - 0xe6, 0xd6, 0xde, 0xee, 0xe5, 0xd6, 0xde, 0xed, 0xe6, 0xd6, 0xde, 0xee, - 0xe5, 0xd6, 0xde, 0xed, 0xe6, 0xd6, 0xdf, 0xee, 0xe5, 0xd6, 0xdf, 0xed, - 0xe6, 0xd6, 0xdf, 0xee, 0xe5, 0xd6, 0xdf, 0xed, 0xe6, 0xd6, 0xe0, 0xee, - 0xe5, 0xd6, 0xe0, 0xed, 0xe6, 0xd6, 0xe0, 0xee, 0xe5, 0xd6, 0xe1, 0xed, - 0xe6, 0xd6, 0xe1, 0xee, 0xe5, 0xd6, 0xe1, 0xed, 0xe6, 0xd6, 0xe1, 0xee, - 0xe5, 0xd6, 0xe2, 0xed, 0xe6, 0xd6, 0xe2, 0xec, 0xe6, 0xd6, 0xe2, 0xed, - 0xe6, 0xd6, 0xe2, 0xec, 0xe6, 0xd6, 0xe3, 0xed, 0xe6, 0xd6, 0xe3, 0xec, - 0xe6, 0xd6, 0xe3, 0xed, 0xe6, 0xd6, 0xe3, 0xec, 0xe6, 0xd6, 0xe4, 0xed, - 0xe6, 0xd6, 0xe4, 0xec, 0xe6, 0xd6, 0xe4, 0xed, 0xe6, 0xd6, 0xe4, 0xec, - 0xe6, 0xd6, 0xe5, 0xed, 0xe6, 0xd6, 0xe5, 0xec, 0xe6, 0xd6, 0xe5, 0xed, - 0xe6, 0xd6, 0xe5, 0xec, 0xe6, 0xd6, 0xe6, 0xed, 0xe6, 0xd6, 0xe5, 0xec, - 0xe6, 0xd6, 0xe6, 0xec, 0xe6, 0xd6, 0xe5, 0xec, 0xe6, 0xd6, 0xe6, 0xec, - 0xe7, 0xd6, 0xe8, 0xec, 0xe7, 0xd6, 0xe8, 0xec, 0xe7, 0xd6, 0xe8, 0xec, - 0xe7, 0xd6, 0xe8, 0xec, 0xe7, 0xd6, 0xe8, 0xec, 0xe7, 0xd6, 0xe8, 0xeb, - 0xe8, 0xd6, 0xe8, 0xeb, 0xe8, 0xd6, 0xe9, 0xeb, 0xe9, 0xd6, 0xe9, 0xec, - 0xe9, 0xd6, 0xe9, 0xec, 0xea, 0xd6, 0xe9, 0xec, 0xe9, 0xd6, 0xea, 0xec, - 0xea, 0xd6, 0xea, 0xec, 0xea, 0xd6, 0xea, 0xec, 0xea, 0xd6, 0xea, 0xec, - 0xea, 0xd6, 0xeb, 0xec, 0xeb, 0xd6, 0xeb, 0xec, 0xeb, 0xd6, 0xeb, 0xec, - 0xeb, 0xd6, 0xeb, 0xec, 0xeb, 0xd6, 0xec, 0xec, 0xec, 0xd6, 0xec, 0xec, - 0xec, 0xd6, 0xec, 0xec, 0xec, 0xd6, 0xec, 0xec, 0xec, 0xd6, 0xec, 0xec, - 0xec, 0xd7, 0xed, 0xec, 0xed, 0xd7, 0xed, 0xec, 0xed, 0xd7, 0xed, 0xec, - 0xed, 0xd7, 0xed, 0xec, 0xed, 0xd7, 0xee, 0xec, 0xee, 0xd7, 0xee, 0xec, - 0xee, 0xd7, 0xee, 0xec, 0xee, 0xd7, 0xee, 0xec, 0xee, 0xd7, 0xef, 0xec, - 0xef, 0xd7, 0xee, 0xec, 0xef, 0xd7, 0xef, 0xec, 0xef, 0xd7, 0xef, 0xec, - 0xef, 0xd4, 0xf0, 0xec, 0xf0, 0xd4, 0xf0, 0xec, 0xf0, 0xd5, 0xf1, 0xec, - 0xf0, 0xd5, 0xf0, 0xec, 0xf0, 0xd5, 0xf1, 0xec, 0xf1, 0xd5, 0xf1, 0xec, - 0xf1, 0xd5, 0xf1, 0xec, 0xf1, 0xd5, 0xf1, 0xec, 0xf1, 0xd5, 0xf2, 0xec, - 0xf1, 0xd6, 0xf2, 0xec, 0xf1, 0xd6, 0xf2, 0xec, 0xf1, 0xd6, 0xf2, 0xec, - 0xf1, 0xd6, 0xf2, 0xec, 0xf1, 0xd6, 0xf3, 0xec, 0xf1, 0xd6, 0xf3, 0xec, - 0xf1, 0xd6, 0xf3, 0xec, 0xf1, 0xd6, 0xf3, 0xec, 0xf1, 0xd6, 0xf4, 0xec, - 0xf1, 0xd6, 0xf4, 0xec, 0xf1, 0xd6, 0xf4, 0xec, 0xf1, 0xd6, 0xf4, 0xec, - 0xf1, 0xd6, 0xf5, 0xec, 0xf1, 0xd6, 0xf5, 0xec, 0xf1, 0xd6, 0xf5, 0xec, - 0xf1, 0xd6, 0xf5, 0xec, 0xf1, 0xd6, 0xf5, 0xec, 0xf1, 0xd6, 0xf6, 0xec, - 0xf1, 0xd6, 0xf6, 0xec, 0xf1, 0xd6, 0xf6, 0xec, 0xf1, 0xd6, 0xf6, 0xec, - 0xf1, 0xd6, 0xf7, 0xec, 0xf1, 0xd6, 0xf7, 0xec, 0xf1, 0xd6, 0xf7, 0xec, - 0xf1, 0xd6, 0xf7, 0xec, 0xf1, 0xd6, 0xf8, 0xec, 0xf1, 0xd6, 0xf8, 0xec, - 0xf1, 0xd6, 0xf8, 0xec, 0xf1, 0xd6, 0xf8, 0xec, 0xf1, 0xd6, 0xf8, 0xec, - 0xf1, 0xd6, 0xf9, 0xec, 0xf1, 0xd6, 0xf9, 0xec, 0xf1, 0xd6, 0xf9, 0xec, - 0xf1, 0xd6, 0xf9, 0xec, 0xf1, 0xd6, 0xfa, 0xec, 0xf1, 0xd6, 0xfa, 0xec, - 0xf1, 0xd6, 0xfa, 0xec, 0xf1, 0xd6, 0xfa, 0xec, 0xf1, 0xd6, 0xfa, 0xec, - 0xf1, 0xd6, 0xfb, 0xec, 0xf1, 0xd6, 0xfb, 0xec, 0xf1, 0xd6, 0xfb, 0xec, - 0xf1, 0xd6, 0xfb, 0xec, 0xf1, 0xd6, 0xfc, 0xec, 0xf1, 0xd6, 0xfc, 0xec, - 0xf1, 0xd6, 0xfc, 0xec, 0xf1, 0xd6, 0xfc, 0xec, 0xf1, 0xd6, 0xfc, 0xec, - 0xf1, 0xd6, 0xfd, 0xec, 0xf1, 0xd6, 0xfd, 0xec, 0xf1, 0xd6, 0xfd, 0xec, - 0xf1, 0xd6, 0xfd, 0xec, 0xf1, 0xd6, 0xfe, 0xec, 0xf1, 0xd6, 0xfe, 0xec, - 0xf1, 0xd6, 0xfe, 0xec, 0xf1, 0xd6, 0xfe, 0xec, 0xf1, 0xd6, 0xfe, 0xec, - 0xf1, 0xd6, 0xff, 0xec, 0xf1, 0xd6, 0xff, 0xec, 0xf1, 0xd6, 0x03, 0xef, - 0x84, 0xd7, 0x0a, 0xf1, 0x84, 0xd7, 0x0f, 0xef, 0x84, 0xd7, 0x14, 0xf1, - 0x84, 0xd7, 0x17, 0xef, 0x84, 0xd7, 0x1b, 0xf1, 0x84, 0xd7, 0x1e, 0xef, - 0x84, 0xd7, 0x20, 0xf1, 0x84, 0xd7, 0x23, 0xef, 0x84, 0xd7, 0x25, 0xf1, - 0x84, 0xd7, 0x27, 0xef, 0x84, 0xd7, 0x29, 0xf1, 0x84, 0xd7, 0x2b, 0xef, - 0x84, 0xd7, 0x2d, 0xf1, 0x84, 0xd7, 0x2f, 0xef, 0x84, 0xd7, 0x31, 0xf1, - 0x84, 0xd7, 0x32, 0xef, 0x84, 0xd7, 0x34, 0xf1, 0x84, 0xd7, 0x35, 0xef, - 0x84, 0xd7, 0x37, 0xf1, 0x84, 0xd7, 0x38, 0xef, 0x84, 0xd7, 0x3a, 0xf1, - 0x84, 0xd7, 0x3b, 0xef, 0x84, 0xd7, 0x3c, 0xf1, 0x84, 0xd7, 0x3e, 0xef, - 0x84, 0xd7, 0x3f, 0xf1, 0x84, 0xd7, 0x40, 0xef, 0x84, 0xd7, 0x42, 0xf1, - 0x84, 0xd7, 0x43, 0xef, 0x84, 0xd7, 0x44, 0xf1, 0x84, 0xd7, 0x45, 0xef, - 0x84, 0xd7, 0x46, 0xf1, 0x84, 0xd7, 0x47, 0xef, 0x84, 0xd7, 0x48, 0xf1, - 0x84, 0xd7, 0x49, 0xef, 0x84, 0xd7, 0x4a, 0xf1, 0x84, 0xd7, 0x4b, 0xef, - 0x84, 0xd7, 0x4c, 0xf1, 0x84, 0xd7, 0x4d, 0xef, 0x84, 0xd7, 0x4e, 0xf1, - 0x84, 0xd7, 0x4f, 0xef, 0x84, 0xd7, 0x50, 0xf1, 0x84, 0xd7, 0x51, 0xef, - 0x84, 0xd7, 0x52, 0xf1, 0x84, 0xd7, 0x53, 0xef, 0x84, 0xd7, 0x54, 0xf1, - 0x84, 0xd7, 0x55, 0xef, 0x84, 0xd7, 0x56, 0xee, 0x85, 0xd7, 0x57, 0xef, - 0x84, 0xd7, 0x58, 0xee, 0x85, 0xd7, 0x58, 0xef, 0x84, 0xd7, 0x59, 0xee, - 0x85, 0xd7, 0x5a, 0xef, 0x84, 0xd7, 0x5b, 0xee, 0x85, 0xd7, 0x5c, 0xef, - 0x84, 0xd7, 0x5d, 0xee, 0x85, 0xd7, 0x5d, 0xef, 0x84, 0xd7, 0x5e, 0xee, - 0x85, 0xd7, 0x5f, 0xef, 0x84, 0xd7, 0x60, 0xee, 0x85, 0xd7, 0x60, 0xef, - 0x84, 0xd7, 0x61, 0xee, 0x85, 0xd7, 0x62, 0xef, 0x84, 0xd7, 0x63, 0xee, - 0x85, 0xd7, 0x63, 0xef, 0x84, 0xd7, 0x64, 0xee, 0x85, 0xd7, 0x65, 0xef, - 0x84, 0xd7, 0x66, 0xee, 0x85, 0xd7, 0x66, 0xef, 0x84, 0xd7, 0x67, 0xee, - 0x85, 0xd7, 0x68, 0xef, 0x84, 0xd7, 0x68, 0xee, 0x85, 0xd7, 0x69, 0xef, - 0x84, 0xd7, 0x6a, 0xee, 0x85, 0xd7, 0x6a, 0xef, 0x84, 0xd7, 0x6b, 0xee, - 0x85, 0xd7, 0x6c, 0xef, 0x84, 0xd7, 0x6c, 0xee, 0x85, 0xd7, 0x6d, 0xef, - 0x84, 0xd7, 0x6e, 0xee, 0x85, 0xd7, 0x6e, 0xef, 0x84, 0xd7, 0x6f, 0xee, - 0x85, 0xd7, 0x70, 0xef, 0x84, 0xd7, 0x70, 0xee, 0x85, 0xd7, 0x71, 0xec, - 0x85, 0xd7, 0x72, 0xee, 0x85, 0xd7, 0x72, 0xec, 0x85, 0xd7, 0x73, 0xee, - 0x85, 0xd7, 0x73, 0xec, 0x85, 0xd7, 0x74, 0xee, 0x85, 0xd7, 0x75, 0xec, - 0x85, 0xd7, 0x75, 0xee, 0x85, 0xd7, 0x76, 0xec, 0x85, 0xd7, 0x76, 0xee, - 0x85, 0xd7, 0x77, 0xec, 0x85, 0xd7, 0x78, 0xee, 0x85, 0xd7, 0x78, 0xec, - 0x85, 0xd7, 0x79, 0xee, 0x85, 0xd7, 0x79, 0xec, 0x85, 0xd7, 0x7a, 0xee, - 0x85, 0xd7, 0x7a, 0xec, 0x85, 0xd7, 0x7b, 0xee, 0x85, 0xd7, 0x7c, 0xec, - 0x85, 0xd7, 0x7c, 0xee, 0x85, 0xd7, 0x7d, 0xec, 0x85, 0xd7, 0x7d, 0xee, - 0x85, 0xd7, 0x7e, 0xec, 0x85, 0xd7, 0x7e, 0xee, 0x85, 0xd7, 0x7f, 0xec, - 0x85, 0xd7, 0x7f, 0xee, 0x85, 0xd7, 0x80, 0xec, 0x85, 0xd7, 0x81, 0xee, - 0x85, 0xd7, 0x81, 0xec, 0x85, 0xd7, 0x82, 0xec, 0x86, 0xd7, 0x82, 0xec, - 0x85, 0xd7, 0x83, 0xec, 0x86, 0xd7, 0x83, 0xec, 0x85, 0xd7, 0x84, 0xec, - 0x86, 0xd7, 0x84, 0xec, 0x85, 0xd7, 0x85, 0xec, 0x86, 0xd7, 0x84, 0xec, - 0x85, 0xd7, 0x85, 0xec, 0x86, 0xd7, 0x84, 0xec, 0x86, 0xd7, 0x85, 0xec, - 0x87, 0xd7, 0x85, 0xec, 0x87, 0xd5, 0x85, 0xec, 0x88, 0xd7, 0x85, 0xec, - 0x88, 0xd5, 0x85, 0xec, 0x89, 0xd7, 0x85, 0xec, 0x89, 0xd5, 0x85, 0xec, - 0x8a, 0xd7, 0x85, 0xec, 0x8a, 0xd5, 0x85, 0xec, 0x8b, 0xd7, 0x85, 0xec, - 0x8b, 0xd5, 0x85, 0xec, 0x8c, 0xd7, 0x85, 0xec, 0x8c, 0xd5, 0x85, 0xec, - 0x8d, 0xd7, 0x85, 0xec, 0x8d, 0xd5, 0x85, 0xec, 0x8e, 0xd7, 0x85, 0xec, - 0x8e, 0xd5, 0x85, 0xec, 0x8e, 0xd7, 0x85, 0xec, 0x8f, 0xd5, 0x85, 0xec, - 0x8f, 0xd7, 0x85, 0xec, 0x90, 0xd5, 0x85, 0xec, 0x90, 0xd7, 0x85, 0xec, - 0x91, 0xd5, 0x86, 0xec, 0x91, 0xd2, 0x85, 0xec, 0x92, 0xd5, 0x86, 0xec, - 0x92, 0xd2, 0x85, 0xec, 0x93, 0xd5, 0x86, 0xec, 0x93, 0xd2, 0x85, 0xec, - 0x94, 0xd5, 0x86, 0xec, 0x94, 0xd2, 0x85, 0xec, 0x94, 0xd5, 0x86, 0xec, - 0x95, 0xd2, 0x85, 0xec, 0x95, 0xd5, 0x86, 0xec, 0x96, 0xd2, 0x85, 0xec, - 0x96, 0xd5, 0x86, 0xec, 0x97, 0xd2, 0x85, 0xec, 0x97, 0xd5, 0x86, 0xec, - 0x98, 0xd2, 0x85, 0xec, 0x98, 0xd5, 0x97, 0xec, 0x98, 0xeb, 0x96, 0xec, - 0x99, 0xeb, 0x97, 0xec, 0x99, 0xeb, 0x96, 0xec, 0x9a, 0xeb, 0x97, 0xec, - 0x9a, 0xeb, 0x96, 0xec, 0x9a, 0xeb, 0x97, 0xec, 0x9b, 0xeb, 0x96, 0xec, - 0x9b, 0xeb, 0x97, 0xec, 0x9c, 0xeb, 0x9b, 0xec, 0x9c, 0xec, 0x9b, 0xec, - 0x9d, 0xec, 0x9b, 0xec, 0x9d, 0xec, 0x9b, 0xec, 0x9d, 0xec, 0x9b, 0xec, - 0x9e, 0xec, 0x9b, 0xec, 0x9e, 0xec, 0x9b, 0xec, 0x9f, 0xec, 0x9b, 0xec, - 0x9f, 0xec, 0x9b, 0xec, 0x9f, 0xec, 0x9b, 0xec, 0xa0, 0xec, 0x9b, 0xec, - 0xa0, 0xec, 0xa0, 0xec, 0xa1, 0xed, 0x9f, 0xec, 0xa1, 0xed, 0xa0, 0xec, - 0xa1, 0xed, 0x9f, 0xec, 0xa2, 0xed, 0xa0, 0xec, 0xa2, 0xed, 0x9f, 0xec, - 0xa3, 0xed, 0xa0, 0xec, 0xa3, 0xed, 0x9f, 0xec, 0xa3, 0xed, 0xa0, 0xec, - 0xa4, 0xed, 0x9f, 0xec, 0xa4, 0xed, 0xa0, 0xec, 0xa5, 0xed, 0xa4, 0xec, - 0xa5, 0xee, 0xa4, 0xec, 0xa5, 0xee, 0xa4, 0xec, 0xa6, 0xee, 0xa4, 0xec, - 0xa6, 0xee, 0xa4, 0xec, 0xa6, 0xee, 0xa4, 0xec, 0xa7, 0xee, 0xa4, 0xec, - 0xa7, 0xee, 0xa4, 0xec, 0xa8, 0xee, 0xa4, 0xec, 0xa8, 0xee, 0xa4, 0xec, - 0xa8, 0xee, 0xa4, 0xec, 0xa9, 0xee, 0xa8, 0xec, 0xa9, 0xef, 0xa4, 0xec, - 0xaa, 0xee, 0xa8, 0xec, 0xaa, 0xef, 0xa8, 0xec, 0xaa, 0xef, 0xa8, 0xec, - 0xab, 0xef, 0xa8, 0xec, 0xab, 0xef, 0xa8, 0xec, 0xab, 0xef, 0xa8, 0xec, - 0xac, 0xef, 0xa8, 0xec, 0xac, 0xef, 0xa8, 0xec, 0xac, 0xef, 0xa8, 0xec, - 0xad, 0xef, 0xa8, 0xec, 0xad, 0xef, 0xa8, 0xec, 0xae, 0xef, 0xac, 0xec, - 0xae, 0xf0, 0xac, 0xec, 0xae, 0xf0, 0xac, 0xec, 0xaf, 0xf0, 0xac, 0xec, - 0xaf, 0xf0, 0xac, 0xec, 0xaf, 0xf0, 0xac, 0xec, 0xb0, 0xf0, 0xac, 0xec, - 0xb0, 0xf0, 0xac, 0xec, 0xb0, 0xf0, 0xac, 0xec, 0xb1, 0xf0, 0xac, 0xec, - 0xb1, 0xf0, 0xac, 0xec, 0xb2, 0xf0, 0xb0, 0xec, 0xb2, 0xf1, 0xb0, 0xec, - 0xb2, 0xf1, 0xb0, 0xec, 0xb3, 0xf1, 0xb0, 0xec, 0xb3, 0xf1, 0xb0, 0xec, - 0xb3, 0xf1, 0xb0, 0xec, 0xb4, 0xf1, 0xb0, 0xec, 0xb4, 0xf1, 0xb0, 0xec, - 0xb4, 0xf1, 0xb0, 0xec, 0xb5, 0xf1, 0xb0, 0xec, 0xb5, 0xf1, 0xb0, 0xec, - 0xb5, 0xf1, 0xb4, 0xec, 0xb6, 0xf2, 0xb4, 0xec, 0xb6, 0xf2, 0xb4, 0xec, - 0xb6, 0xf2, 0xb4, 0xec, 0xb7, 0xf2, 0xb4, 0xec, 0xb7, 0xf2, 0xb4, 0xec, - 0xb7, 0xf2, 0xb4, 0xec, 0xb8, 0xf2, 0xb4, 0xec, 0xb8, 0xf2, 0xb4, 0xec, - 0xb8, 0xf2, 0xb4, 0xec, 0xb9, 0xf2, 0xb4, 0xec, 0xb9, 0xf2, 0xb8, 0xec, - 0xb9, 0xf3, 0xb4, 0xec, 0xba, 0xf2, 0xb8, 0xec, 0xba, 0xf3, 0xb8, 0xec, - 0xba, 0xf3, 0xb8, 0xec, 0xbb, 0xf3, 0xcc, 0xec, 0xbb, 0xdb, 0xcc, 0xec, - 0xbb, 0xde, 0xcc, 0xec, 0xbc, 0xdb, 0xcc, 0xec, 0xbc, 0xde, 0xcc, 0xec, - 0xbc, 0xdb, 0xcc, 0xec, 0xbd, 0xde, 0xcc, 0xec, 0xbd, 0xdb, 0xcc, 0xec, - 0xbd, 0xde, 0xcc, 0xec, 0xbe, 0xdb, 0xcd, 0xec, 0xbe, 0xd8, 0xcc, 0xec, - 0xbe, 0xdb, 0xcd, 0xec, 0xbf, 0xd8, 0xcc, 0xec, 0xbf, 0xdb, 0xcd, 0xec, - 0xbf, 0xd8, 0xcc, 0xec, 0xc0, 0xdb, 0xcd, 0xec, 0xc0, 0xd8, 0xcc, 0xec, - 0xc0, 0xdb, 0xcd, 0xec, 0xc1, 0xd8, 0xcc, 0xec, 0xc1, 0xdb, 0xcd, 0xec, - 0xc1, 0xd8, 0xcc, 0xec, 0xc1, 0xdb, 0xcd, 0xec, 0xc2, 0xd8, 0xcc, 0xec, - 0xc2, 0xdb, 0xcd, 0xec, 0xc2, 0xd8, 0xcc, 0xec, 0xc3, 0xdb, 0xcd, 0xec, - 0xc3, 0xd8, 0xcc, 0xec, 0xc3, 0xdb, 0xcd, 0xec, 0xc4, 0xd8, 0xcc, 0xec, - 0xc4, 0xdb, 0xcd, 0xec, 0xc4, 0xd8, 0xcc, 0xec, 0xc5, 0xdb, 0xcd, 0xec, - 0xc5, 0xd8, 0xcc, 0xec, 0xc5, 0xdb, 0xcd, 0xec, 0xc6, 0xd8, 0xcc, 0xec, - 0xc6, 0xdb, 0xcd, 0xec, 0xc6, 0xd8, 0xcc, 0xec, 0xc6, 0xdb, 0xcd, 0xec, - 0xc7, 0xd8, 0xcc, 0xec, 0xc7, 0xdb, 0xcd, 0xec, 0xc7, 0xd8, 0xcc, 0xec, - 0xc8, 0xdb, 0xcd, 0xec, 0xc8, 0xd8, 0xcd, 0xec, 0xc8, 0xd7, 0xcd, 0xec, - 0xc9, 0xd8, 0xcd, 0xec, 0xc9, 0xd7, 0xcd, 0xec, 0xc9, 0xd8, 0xcd, 0xec, - 0xc9, 0xd7, 0xcd, 0xec, 0xca, 0xd8, 0xcd, 0xec, 0xca, 0xd7, 0xcd, 0xec, - 0xca, 0xd8, 0xcd, 0xec, 0xcb, 0xd7, 0xcd, 0xec, 0xcb, 0xd8, 0xcd, 0xec, - 0xcb, 0xd7, 0xcd, 0xec, 0xcc, 0xd8, 0xcd, 0xec, 0xcc, 0xd7, 0xcd, 0xec, - 0xcc, 0xd8, 0xcd, 0xec, 0xcc, 0xd7, 0xcd, 0xec, 0xcd, 0xd7, 0xcd, 0xec, - 0xcc, 0xd7, 0xcd, 0xec, 0xcd, 0xd7, 0xce, 0xec, 0xcc, 0xd7, 0xce, 0xec, - 0xcd, 0xd7, 0xce, 0xec, 0xcd, 0xd7, 0xce, 0xec, 0xcd, 0xd7, 0xcf, 0xec, - 0xcd, 0xd7, 0xcf, 0xec, 0xcd, 0xd7, 0xcf, 0xec, 0xcd, 0xd7, 0xd0, 0xec, - 0xcd, 0xd7, 0xd0, 0xec, 0xcd, 0xd7, 0xd0, 0xec, 0xcd, 0xd7, 0xd0, 0xec, - 0xcd, 0xd7, 0xd1, 0xec, 0xcd, 0xd7, 0xd1, 0xec, 0xcd, 0xd7, 0xd1, 0xec, - 0xcd, 0xd7, 0xd2, 0xec, 0xcd, 0xd7, 0xd2, 0xec, 0xcd, 0xd7, 0xd2, 0xec, - 0xcd, 0xd7, 0xd2, 0xec, 0xcd, 0xd7, 0xd3, 0xec, 0xcd, 0xd7, 0xd3, 0xec, - 0xcd, 0xd7, 0xd3, 0xec, 0xcd, 0xd7, 0xd4, 0xec, 0xcd, 0xd7, 0xd4, 0xec, - 0xcd, 0xd7, 0xd4, 0xea, 0xcd, 0xd7, 0xd4, 0xec, 0xcd, 0xd7, 0xd5, 0xea, - 0xcd, 0xd7, 0xd5, 0xec, 0xcd, 0xd7, 0xd5, 0xea, 0xcd, 0xd7, 0xd6, 0xec, - 0xcd, 0xd7, 0xd6, 0xea, 0xcd, 0xd7, 0xd6, 0xec, 0xcd, 0xd7, 0xd6, 0xea, - 0xcd, 0xd7, 0xd7, 0xec, 0xcd, 0xd7, 0xd7, 0xea, 0xcd, 0xd7, 0xd7, 0xec, - 0xcd, 0xd7, 0xd7, 0xea, 0xcd, 0xd7, 0xd8, 0xec, 0xcd, 0xd7, 0xd8, 0xea, - 0xcd, 0xd7, 0xd8, 0xec, 0xcd, 0xd7, 0xd9, 0xea, 0xcd, 0xd7, 0xd9, 0xec, - 0xcd, 0xd7, 0xd9, 0xea, 0xcd, 0xd7, 0xd9, 0xec, 0xcd, 0xd7, 0xda, 0xea, - 0xcd, 0xd7, 0xda, 0xee, 0xe5, 0xd7, 0xda, 0xef, 0xe5, 0xd7, 0xda, 0xee, - 0xe5, 0xd7, 0xdb, 0xef, 0xe5, 0xd7, 0xdb, 0xee, 0xe5, 0xd7, 0xdb, 0xef, - 0xe5, 0xd7, 0xdb, 0xee, 0xe5, 0xd7, 0xdc, 0xef, 0xe5, 0xd7, 0xdc, 0xee, - 0xe5, 0xd7, 0xdc, 0xec, 0xe6, 0xd7, 0xdd, 0xee, 0xe5, 0xd7, 0xdd, 0xec, - 0xe6, 0xd7, 0xdd, 0xee, 0xe5, 0xd7, 0xdd, 0xec, 0xe6, 0xd7, 0xde, 0xee, - 0xe5, 0xd7, 0xde, 0xec, 0xe6, 0xd7, 0xde, 0xee, 0xe5, 0xd7, 0xde, 0xec, - 0xe6, 0xd7, 0xdf, 0xee, 0xe5, 0xd7, 0xdf, 0xec, 0xe6, 0xd7, 0xdf, 0xee, - 0xe5, 0xd7, 0xdf, 0xec, 0xe6, 0xd7, 0xe0, 0xee, 0xe5, 0xd7, 0xe0, 0xec, - 0xe6, 0xd7, 0xe0, 0xee, 0xe5, 0xd7, 0xe1, 0xec, 0xe6, 0xd7, 0xe1, 0xee, - 0xe5, 0xd7, 0xe1, 0xec, 0xe6, 0xd7, 0xe1, 0xee, 0xe5, 0xd7, 0xe2, 0xec, - 0xe6, 0xd7, 0xe2, 0xee, 0xe5, 0xd7, 0xe2, 0xec, 0xe6, 0xd7, 0xe2, 0xee, - 0xe5, 0xd7, 0xe3, 0xec, 0xe6, 0xd7, 0xe3, 0xee, 0xe5, 0xd7, 0xe3, 0xec, - 0xe6, 0xd7, 0xe3, 0xee, 0xe5, 0xd7, 0xe4, 0xec, 0xe6, 0xd7, 0xe4, 0xec, - 0xe6, 0xd7, 0xe4, 0xec, 0xe6, 0xd7, 0xe4, 0xec, 0xe6, 0xd7, 0xe5, 0xec, - 0xe6, 0xd7, 0xe5, 0xec, 0xe6, 0xd7, 0xe5, 0xec, 0xe6, 0xd7, 0xe5, 0xec, - 0xe6, 0xd7, 0xe6, 0xec, 0xe6, 0xd6, 0xe5, 0xec, 0xe6, 0xd7, 0xe6, 0xec, - 0xe6, 0xd6, 0xe5, 0xec, 0xe6, 0xd7, 0xe8, 0xec, 0xe7, 0xd7, 0xe7, 0xec, - 0xe7, 0xd8, 0xe8, 0xec, 0xe7, 0xd7, 0xe8, 0xec, 0xe7, 0xd7, 0xe8, 0xec, - 0xe7, 0xd7, 0xe8, 0xec, 0xe7, 0xd7, 0xe8, 0xec, 0xe8, 0xd7, 0xe8, 0xec, - 0xe8, 0xd7, 0xe9, 0xec, 0xe9, 0xd7, 0xe9, 0xec, 0xe9, 0xd7, 0xe9, 0xec, - 0xe9, 0xd7, 0xe9, 0xec, 0xe9, 0xd7, 0xea, 0xec, 0xea, 0xd7, 0xea, 0xec, - 0xea, 0xd7, 0xea, 0xec, 0xea, 0xd7, 0xea, 0xec, 0xeb, 0xd7, 0xeb, 0xec, - 0xeb, 0xd7, 0xeb, 0xec, 0xeb, 0xd7, 0xeb, 0xec, 0xeb, 0xd7, 0xeb, 0xec, - 0xeb, 0xd7, 0xec, 0xec, 0xec, 0xd7, 0xec, 0xec, 0xec, 0xd7, 0xec, 0xec, - 0xec, 0xd7, 0xec, 0xec, 0xec, 0xd7, 0xec, 0xec, 0xec, 0xd7, 0xed, 0xec, - 0xed, 0xd7, 0xed, 0xec, 0xed, 0xd7, 0xed, 0xec, 0xed, 0xd7, 0xed, 0xec, - 0xed, 0xd7, 0xed, 0xec, 0xee, 0xd7, 0xee, 0xec, 0xee, 0xd8, 0xee, 0xec, - 0xee, 0xd8, 0xee, 0xec, 0xee, 0xd8, 0xef, 0xec, 0xef, 0xd8, 0xef, 0xec, - 0xef, 0xd8, 0xef, 0xec, 0xef, 0xd8, 0xef, 0xec, 0xef, 0xd8, 0xf0, 0xec, - 0xf0, 0xd8, 0xf0, 0xec, 0xf0, 0xd8, 0xf0, 0xec, 0xf0, 0xd8, 0xf0, 0xec, - 0xf0, 0xd8, 0xf0, 0xec, 0xf1, 0xd8, 0xf1, 0xec, 0xf1, 0xd8, 0xf2, 0xec, - 0xf1, 0xd7, 0xf2, 0xec, 0xf1, 0xd7, 0xf2, 0xec, 0xf1, 0xd7, 0xf2, 0xec, - 0xf1, 0xd7, 0xf2, 0xec, 0xf1, 0xd7, 0xf2, 0xec, 0xf1, 0xd7, 0xf2, 0xec, - 0xf1, 0xd7, 0xf3, 0xec, 0xf1, 0xd7, 0xf3, 0xec, 0xf1, 0xd7, 0xf3, 0xec, - 0xf1, 0xd7, 0xf3, 0xec, 0xf1, 0xd7, 0xf4, 0xec, 0xf1, 0xd7, 0xf4, 0xec, - 0xf1, 0xd7, 0xf4, 0xec, 0xf1, 0xd7, 0xf4, 0xec, 0xf1, 0xd7, 0xf5, 0xec, - 0xf1, 0xd7, 0xf5, 0xec, 0xf1, 0xd7, 0xf5, 0xec, 0xf1, 0xd7, 0xf5, 0xec, - 0xf1, 0xd7, 0xf5, 0xec, 0xf1, 0xd7, 0xf6, 0xec, 0xf1, 0xd7, 0xf6, 0xec, - 0xf1, 0xd7, 0xf6, 0xec, 0xf1, 0xd7, 0xf6, 0xec, 0xf1, 0xd7, 0xf7, 0xec, - 0xf1, 0xd7, 0xf7, 0xec, 0xf1, 0xd7, 0xf7, 0xec, 0xf1, 0xd7, 0xf7, 0xec, - 0xf1, 0xd7, 0xf8, 0xec, 0xf1, 0xd7, 0xf8, 0xec, 0xf1, 0xd7, 0xf8, 0xec, - 0xf1, 0xd7, 0xf8, 0xec, 0xf1, 0xd7, 0xf8, 0xec, 0xf1, 0xd7, 0xf9, 0xec, - 0xf1, 0xd7, 0xf9, 0xec, 0xf1, 0xd7, 0xf9, 0xec, 0xf1, 0xd7, 0xf9, 0xec, - 0xf1, 0xd7, 0xfa, 0xec, 0xf1, 0xd7, 0xfa, 0xec, 0xf1, 0xd7, 0xfa, 0xec, - 0xf1, 0xd7, 0xfa, 0xec, 0xf1, 0xd7, 0xfa, 0xec, 0xf1, 0xd7, 0xfb, 0xec, - 0xf1, 0xd7, 0xfb, 0xec, 0xf1, 0xd7, 0xfb, 0xec, 0xf1, 0xd7, 0xfb, 0xec, - 0xf1, 0xd7, 0xfc, 0xec, 0xf1, 0xd7, 0xfc, 0xec, 0xf1, 0xd7, 0xfc, 0xec, - 0xf1, 0xd7, 0xfc, 0xec, 0xf1, 0xd7, 0xfc, 0xec, 0xf1, 0xd7, 0xfd, 0xec, - 0xf1, 0xd7, 0xfd, 0xec, 0xf1, 0xd7, 0xfd, 0xec, 0xf1, 0xd7, 0xfd, 0xec, - 0xf1, 0xd7, 0xfe, 0xec, 0xf1, 0xd7, 0xfe, 0xec, 0xf1, 0xd7, 0xfe, 0xec, - 0xf1, 0xd7, 0xfe, 0xec, 0xf1, 0xd7, 0xfe, 0xec, 0xf1, 0xd7, 0xff, 0xec, - 0xf1, 0xd7, 0xff, 0xec, 0xf1, 0xd7, 0x03, 0xef, 0x84, 0xd7, 0x0a, 0xf1, - 0x84, 0xd7, 0x0f, 0xef, 0x84, 0xd7, 0x14, 0xf1, 0x84, 0xd7, 0x17, 0xef, - 0x84, 0xd7, 0x1b, 0xf1, 0x84, 0xd7, 0x1e, 0xef, 0x84, 0xd7, 0x20, 0xf1, - 0x84, 0xd7, 0x23, 0xef, 0x84, 0xd7, 0x25, 0xf1, 0x84, 0xd7, 0x27, 0xef, - 0x84, 0xd7, 0x29, 0xf1, 0x84, 0xd7, 0x2b, 0xef, 0x84, 0xd7, 0x2d, 0xf1, - 0x84, 0xd7, 0x2f, 0xef, 0x84, 0xd7, 0x31, 0xf1, 0x84, 0xd7, 0x32, 0xef, - 0x84, 0xd7, 0x34, 0xf1, 0x84, 0xd7, 0x35, 0xef, 0x84, 0xd7, 0x37, 0xf1, - 0x84, 0xd7, 0x38, 0xef, 0x84, 0xd7, 0x3a, 0xf1, 0x84, 0xd7, 0x3b, 0xef, - 0x84, 0xd7, 0x3c, 0xf1, 0x84, 0xd7, 0x3e, 0xef, 0x84, 0xd7, 0x3f, 0xf1, - 0x84, 0xd7, 0x40, 0xef, 0x84, 0xd7, 0x42, 0xf1, 0x84, 0xd7, 0x43, 0xef, - 0x84, 0xd7, 0x44, 0xf1, 0x84, 0xd7, 0x45, 0xef, 0x84, 0xd7, 0x46, 0xf1, - 0x84, 0xd7, 0x47, 0xef, 0x84, 0xd7, 0x48, 0xf1, 0x84, 0xd7, 0x49, 0xef, - 0x84, 0xd7, 0x4a, 0xf1, 0x84, 0xd7, 0x4b, 0xef, 0x84, 0xd7, 0x4c, 0xf1, - 0x84, 0xd7, 0x4d, 0xef, 0x84, 0xd7, 0x4e, 0xf1, 0x84, 0xd7, 0x4f, 0xef, - 0x84, 0xd7, 0x50, 0xf1, 0x84, 0xd7, 0x51, 0xef, 0x84, 0xd7, 0x52, 0xee, - 0x85, 0xd7, 0x53, 0xef, 0x84, 0xd7, 0x54, 0xee, 0x85, 0xd7, 0x55, 0xef, - 0x84, 0xd7, 0x56, 0xee, 0x85, 0xd7, 0x57, 0xef, 0x84, 0xd7, 0x58, 0xee, - 0x85, 0xd7, 0x58, 0xef, 0x84, 0xd7, 0x59, 0xee, 0x85, 0xd7, 0x5a, 0xef, - 0x84, 0xd7, 0x5b, 0xee, 0x85, 0xd7, 0x5c, 0xef, 0x84, 0xd7, 0x5d, 0xee, - 0x85, 0xd7, 0x5d, 0xef, 0x84, 0xd7, 0x5e, 0xee, 0x85, 0xd7, 0x5f, 0xef, - 0x84, 0xd7, 0x60, 0xee, 0x85, 0xd7, 0x60, 0xef, 0x84, 0xd7, 0x61, 0xee, - 0x85, 0xd7, 0x62, 0xef, 0x84, 0xd7, 0x63, 0xee, 0x85, 0xd7, 0x63, 0xef, - 0x84, 0xd7, 0x64, 0xee, 0x85, 0xd7, 0x65, 0xef, 0x84, 0xd7, 0x66, 0xee, - 0x85, 0xd7, 0x66, 0xef, 0x84, 0xd7, 0x67, 0xee, 0x85, 0xd7, 0x68, 0xef, - 0x84, 0xd7, 0x68, 0xee, 0x85, 0xd7, 0x69, 0xef, 0x84, 0xd7, 0x6a, 0xee, - 0x85, 0xd7, 0x6a, 0xef, 0x84, 0xd7, 0x6b, 0xee, 0x85, 0xd7, 0x6c, 0xef, - 0x84, 0xd7, 0x6c, 0xee, 0x85, 0xd7, 0x6d, 0xef, 0x84, 0xd7, 0x6e, 0xee, - 0x85, 0xd7, 0x6e, 0xef, 0x84, 0xd7, 0x6f, 0xee, 0x85, 0xd7, 0x70, 0xef, - 0x84, 0xd7, 0x70, 0xee, 0x85, 0xd7, 0x71, 0xef, 0x84, 0xd7, 0x72, 0xee, - 0x85, 0xd7, 0x72, 0xef, 0x84, 0xd7, 0x73, 0xee, 0x85, 0xd7, 0x73, 0xef, - 0x84, 0xd7, 0x74, 0xee, 0x85, 0xd7, 0x75, 0xef, 0x84, 0xd7, 0x75, 0xee, - 0x85, 0xd7, 0x76, 0xef, 0x84, 0xd7, 0x76, 0xee, 0x85, 0xd7, 0x77, 0xef, - 0x84, 0xd7, 0x78, 0xee, 0x85, 0xd7, 0x78, 0xed, 0x85, 0xd7, 0x79, 0xee, - 0x85, 0xd7, 0x79, 0xed, 0x85, 0xd7, 0x7a, 0xee, 0x85, 0xd7, 0x7a, 0xed, - 0x85, 0xd7, 0x7b, 0xee, 0x85, 0xd7, 0x7c, 0xed, 0x85, 0xd7, 0x7c, 0xee, - 0x85, 0xd7, 0x7d, 0xed, 0x85, 0xd7, 0x7d, 0xee, 0x85, 0xd7, 0x7e, 0xed, - 0x85, 0xd7, 0x7e, 0xee, 0x85, 0xd7, 0x7f, 0xed, 0x85, 0xd7, 0x7f, 0xee, - 0x85, 0xd7, 0x80, 0xed, 0x85, 0xd7, 0x81, 0xee, 0x85, 0xd7, 0x81, 0xed, - 0x85, 0xd7, 0x82, 0xee, 0x85, 0xd7, 0x82, 0xed, 0x85, 0xd7, 0x83, 0xee, - 0x85, 0xd7, 0x83, 0xed, 0x85, 0xd7, 0x84, 0xed, 0x86, 0xd7, 0x84, 0xed, - 0x85, 0xd7, 0x85, 0xed, 0x86, 0xd7, 0x84, 0xed, 0x85, 0xd7, 0x85, 0xed, - 0x86, 0xd7, 0x84, 0xed, 0x86, 0xd7, 0x85, 0xed, 0x87, 0xd7, 0x85, 0xed, - 0x87, 0xd5, 0x85, 0xed, 0x88, 0xd7, 0x85, 0xed, 0x88, 0xd5, 0x85, 0xed, - 0x89, 0xd7, 0x85, 0xed, 0x89, 0xd5, 0x85, 0xed, 0x8a, 0xd7, 0x85, 0xed, - 0x8a, 0xd5, 0x85, 0xed, 0x8b, 0xd7, 0x85, 0xed, 0x8b, 0xd5, 0x85, 0xed, - 0x8c, 0xd7, 0x85, 0xed, 0x8c, 0xd5, 0x85, 0xed, 0x8d, 0xd7, 0x85, 0xed, - 0x8d, 0xd5, 0x85, 0xed, 0x8e, 0xd7, 0x85, 0xed, 0x8e, 0xd5, 0x85, 0xed, - 0x8e, 0xd7, 0x85, 0xed, 0x8f, 0xd5, 0x85, 0xed, 0x8f, 0xd7, 0x85, 0xed, - 0x90, 0xd5, 0x85, 0xed, 0x90, 0xd7, 0x85, 0xed, 0x91, 0xd5, 0x86, 0xed, - 0x91, 0xd2, 0x85, 0xed, 0x92, 0xd5, 0x86, 0xed, 0x92, 0xd2, 0x85, 0xed, - 0x93, 0xd5, 0x86, 0xed, 0x93, 0xd2, 0x85, 0xed, 0x94, 0xd5, 0x86, 0xed, - 0x94, 0xd2, 0x85, 0xed, 0x94, 0xd5, 0x86, 0xed, 0x95, 0xd2, 0x85, 0xed, - 0x95, 0xd5, 0x86, 0xed, 0x96, 0xd2, 0x85, 0xed, 0x96, 0xd5, 0x86, 0xed, - 0x97, 0xd2, 0x85, 0xed, 0x97, 0xd5, 0x94, 0xed, 0x98, 0xea, 0x94, 0xed, - 0x98, 0xea, 0x94, 0xed, 0x98, 0xea, 0x94, 0xed, 0x99, 0xea, 0x94, 0xed, - 0x99, 0xea, 0x94, 0xed, 0x9a, 0xea, 0x99, 0xed, 0x9a, 0xeb, 0x99, 0xed, - 0x9a, 0xeb, 0x99, 0xed, 0x9b, 0xeb, 0x99, 0xed, 0x9b, 0xeb, 0x99, 0xed, - 0x9c, 0xeb, 0x99, 0xed, 0x9c, 0xeb, 0x99, 0xed, 0x9d, 0xeb, 0x99, 0xed, - 0x9d, 0xeb, 0x99, 0xed, 0x9d, 0xeb, 0x99, 0xed, 0x9e, 0xeb, 0x99, 0xed, - 0x9e, 0xeb, 0x9e, 0xed, 0x9f, 0xec, 0x9d, 0xed, 0x9f, 0xec, 0x9e, 0xed, - 0x9f, 0xec, 0x9d, 0xed, 0xa0, 0xec, 0x9e, 0xed, 0xa0, 0xec, 0x9d, 0xed, - 0xa1, 0xec, 0x9e, 0xed, 0xa1, 0xec, 0x9d, 0xed, 0xa1, 0xec, 0x9e, 0xed, - 0xa2, 0xec, 0x9d, 0xed, 0xa2, 0xec, 0x9e, 0xed, 0xa3, 0xec, 0xa2, 0xed, - 0xa3, 0xed, 0xa2, 0xed, 0xa3, 0xed, 0xa2, 0xed, 0xa4, 0xed, 0xa2, 0xed, - 0xa4, 0xed, 0xa2, 0xed, 0xa5, 0xed, 0xa2, 0xed, 0xa5, 0xed, 0xa2, 0xed, - 0xa5, 0xed, 0xa2, 0xed, 0xa6, 0xed, 0xa2, 0xed, 0xa6, 0xed, 0xa2, 0xed, - 0xa6, 0xed, 0xa2, 0xed, 0xa7, 0xed, 0xa6, 0xed, 0xa7, 0xee, 0xa6, 0xed, - 0xa8, 0xee, 0xa6, 0xed, 0xa8, 0xee, 0xa6, 0xed, 0xa8, 0xee, 0xa6, 0xed, - 0xa9, 0xee, 0xa6, 0xed, 0xa9, 0xee, 0xa6, 0xed, 0xaa, 0xee, 0xa6, 0xed, - 0xaa, 0xee, 0xa6, 0xed, 0xaa, 0xee, 0xa6, 0xed, 0xab, 0xee, 0xa6, 0xed, - 0xab, 0xee, 0xab, 0xed, 0xab, 0xef, 0xa6, 0xed, 0xac, 0xee, 0xab, 0xed, - 0xac, 0xef, 0xaa, 0xed, 0xac, 0xef, 0xab, 0xed, 0xad, 0xef, 0xaa, 0xed, - 0xad, 0xef, 0xab, 0xed, 0xae, 0xef, 0xaa, 0xed, 0xae, 0xef, 0xab, 0xed, - 0xae, 0xef, 0xaa, 0xed, 0xaf, 0xef, 0xab, 0xed, 0xaf, 0xef, 0xaa, 0xed, - 0xaf, 0xef, 0xab, 0xed, 0xb0, 0xef, 0xaf, 0xed, 0xb0, 0xf0, 0xae, 0xed, - 0xb0, 0xf0, 0xaf, 0xed, 0xb1, 0xf0, 0xae, 0xed, 0xb1, 0xf0, 0xaf, 0xed, - 0xb2, 0xf0, 0xae, 0xed, 0xb2, 0xf0, 0xaf, 0xed, 0xb2, 0xf0, 0xae, 0xed, - 0xb3, 0xf0, 0xaf, 0xed, 0xb3, 0xf0, 0xae, 0xed, 0xb3, 0xf0, 0xaf, 0xed, - 0xb4, 0xf0, 0xb3, 0xed, 0xb4, 0xf1, 0xb2, 0xed, 0xb4, 0xf1, 0xb3, 0xed, - 0xb5, 0xf1, 0xb2, 0xed, 0xb5, 0xf1, 0xb3, 0xed, 0xb5, 0xf1, 0xb2, 0xed, - 0xb6, 0xf1, 0xb3, 0xed, 0xb6, 0xf1, 0xb2, 0xed, 0xb6, 0xf1, 0xb3, 0xed, - 0xb7, 0xf1, 0xb2, 0xed, 0xb7, 0xf1, 0xb3, 0xed, 0xb7, 0xf1, 0xb6, 0xed, - 0xb8, 0xf2, 0xb6, 0xed, 0xb8, 0xf2, 0xb6, 0xed, 0xb8, 0xf2, 0xb6, 0xed, - 0xb9, 0xf2, 0xb6, 0xed, 0xb9, 0xf2, 0xb6, 0xed, 0xb9, 0xf2, 0xb6, 0xed, - 0xba, 0xf2, 0xb6, 0xed, 0xba, 0xf2, 0xb6, 0xed, 0xba, 0xf2, 0xb6, 0xed, - 0xbb, 0xf2, 0xb6, 0xed, 0xbb, 0xf2, 0xcc, 0xed, 0xbb, 0xdd, 0xcc, 0xed, - 0xbc, 0xdb, 0xcc, 0xed, 0xbc, 0xdd, 0xcc, 0xed, 0xbc, 0xdb, 0xcc, 0xed, - 0xbd, 0xdd, 0xcc, 0xed, 0xbd, 0xdb, 0xcc, 0xed, 0xbd, 0xdd, 0xcc, 0xed, - 0xbe, 0xdb, 0xcc, 0xed, 0xbe, 0xdd, 0xcc, 0xed, 0xbe, 0xdb, 0xcc, 0xed, - 0xbf, 0xdd, 0xcc, 0xed, 0xbf, 0xdb, 0xcc, 0xed, 0xbf, 0xdd, 0xcc, 0xed, - 0xc0, 0xdb, 0xcc, 0xed, 0xc0, 0xdd, 0xcc, 0xed, 0xc0, 0xdb, 0xcc, 0xed, - 0xc1, 0xdd, 0xcc, 0xed, 0xc1, 0xdb, 0xcc, 0xed, 0xc1, 0xdd, 0xcc, 0xed, - 0xc1, 0xdb, 0xcd, 0xed, 0xc2, 0xd8, 0xcc, 0xed, 0xc2, 0xdb, 0xcd, 0xed, - 0xc2, 0xd8, 0xcc, 0xed, 0xc3, 0xdb, 0xcd, 0xed, 0xc3, 0xd8, 0xcc, 0xed, - 0xc3, 0xdb, 0xcd, 0xed, 0xc4, 0xd8, 0xcc, 0xed, 0xc4, 0xdb, 0xcd, 0xed, - 0xc4, 0xd8, 0xcc, 0xed, 0xc5, 0xdb, 0xcd, 0xed, 0xc5, 0xd8, 0xcc, 0xed, - 0xc5, 0xdb, 0xcd, 0xed, 0xc6, 0xd8, 0xcc, 0xed, 0xc6, 0xdb, 0xcd, 0xed, - 0xc6, 0xd8, 0xcc, 0xed, 0xc6, 0xdb, 0xcd, 0xed, 0xc7, 0xd8, 0xcc, 0xed, - 0xc7, 0xdb, 0xcd, 0xed, 0xc7, 0xd8, 0xcc, 0xed, 0xc8, 0xdb, 0xcd, 0xed, - 0xc8, 0xd8, 0xcd, 0xed, 0xc8, 0xd7, 0xcd, 0xed, 0xc9, 0xd8, 0xcd, 0xed, - 0xc9, 0xd7, 0xcd, 0xed, 0xc9, 0xd8, 0xcd, 0xed, 0xc9, 0xd7, 0xcd, 0xed, - 0xca, 0xd8, 0xcd, 0xed, 0xca, 0xd7, 0xcd, 0xed, 0xca, 0xd8, 0xcd, 0xed, - 0xcb, 0xd7, 0xcd, 0xed, 0xcb, 0xd8, 0xcd, 0xed, 0xcb, 0xd7, 0xcd, 0xed, - 0xcc, 0xd8, 0xcd, 0xed, 0xcc, 0xd7, 0xcd, 0xed, 0xcc, 0xd8, 0xcd, 0xed, - 0xcc, 0xd7, 0xcd, 0xed, 0xcd, 0xd7, 0xcd, 0xed, 0xcc, 0xd7, 0xcd, 0xed, - 0xcd, 0xd7, 0xce, 0xed, 0xcc, 0xd7, 0xce, 0xed, 0xcd, 0xd7, 0xce, 0xed, - 0xcc, 0xd7, 0xce, 0xed, 0xcd, 0xd7, 0xcf, 0xed, 0xcc, 0xd7, 0xcf, 0xed, - 0xcd, 0xd7, 0xcf, 0xeb, 0xcd, 0xd7, 0xd0, 0xed, 0xcd, 0xd7, 0xd0, 0xeb, - 0xcd, 0xd7, 0xd0, 0xed, 0xcd, 0xd7, 0xd0, 0xeb, 0xcd, 0xd7, 0xd1, 0xed, - 0xcd, 0xd7, 0xd1, 0xeb, 0xcd, 0xd7, 0xd1, 0xed, 0xcd, 0xd7, 0xd2, 0xeb, - 0xcd, 0xd7, 0xd2, 0xed, 0xcd, 0xd7, 0xd2, 0xeb, 0xcd, 0xd7, 0xd2, 0xed, - 0xcd, 0xd7, 0xd3, 0xeb, 0xcd, 0xd7, 0xd3, 0xed, 0xcd, 0xd7, 0xd3, 0xeb, - 0xcd, 0xd7, 0xd4, 0xed, 0xcd, 0xd7, 0xd4, 0xeb, 0xcd, 0xd7, 0xd4, 0xed, - 0xcd, 0xd7, 0xd4, 0xeb, 0xcd, 0xd7, 0xd5, 0xed, 0xcd, 0xd7, 0xd5, 0xeb, - 0xcd, 0xd7, 0xd5, 0xed, 0xcd, 0xd7, 0xd6, 0xeb, 0xcd, 0xd7, 0xd6, 0xed, - 0xcd, 0xd7, 0xd6, 0xeb, 0xcd, 0xd7, 0xd6, 0xed, 0xcd, 0xd7, 0xd7, 0xeb, - 0xcd, 0xd7, 0xd7, 0xed, 0xcd, 0xd7, 0xd7, 0xeb, 0xcd, 0xd7, 0xd7, 0xea, - 0xcd, 0xd7, 0xd8, 0xeb, 0xcd, 0xd7, 0xd8, 0xea, 0xcd, 0xd7, 0xd8, 0xeb, - 0xcd, 0xd7, 0xd9, 0xea, 0xcd, 0xd7, 0xd9, 0xeb, 0xcd, 0xd7, 0xd9, 0xea, - 0xcd, 0xd7, 0xd9, 0xeb, 0xcd, 0xd7, 0xda, 0xef, 0xe5, 0xd7, 0xda, 0xee, - 0xe5, 0xd7, 0xda, 0xef, 0xe5, 0xd7, 0xda, 0xee, 0xe5, 0xd7, 0xdb, 0xef, - 0xe5, 0xd7, 0xdb, 0xee, 0xe5, 0xd7, 0xdb, 0xef, 0xe5, 0xd7, 0xdb, 0xee, - 0xe5, 0xd7, 0xdc, 0xef, 0xe5, 0xd7, 0xdc, 0xee, 0xe5, 0xd7, 0xdc, 0xef, - 0xe5, 0xd7, 0xdd, 0xee, 0xe5, 0xd7, 0xdd, 0xef, 0xe5, 0xd7, 0xdd, 0xee, - 0xe5, 0xd7, 0xdd, 0xef, 0xe5, 0xd7, 0xde, 0xee, 0xe5, 0xd7, 0xde, 0xef, - 0xe5, 0xd7, 0xde, 0xee, 0xe5, 0xd7, 0xde, 0xef, 0xe5, 0xd7, 0xdf, 0xee, - 0xe5, 0xd7, 0xdf, 0xef, 0xe5, 0xd7, 0xdf, 0xee, 0xe5, 0xd7, 0xdf, 0xed, - 0xe6, 0xd7, 0xe0, 0xee, 0xe5, 0xd7, 0xe0, 0xed, 0xe6, 0xd7, 0xe0, 0xee, - 0xe5, 0xd7, 0xe1, 0xed, 0xe6, 0xd7, 0xe1, 0xee, 0xe5, 0xd7, 0xe1, 0xed, - 0xe6, 0xd7, 0xe1, 0xee, 0xe5, 0xd7, 0xe2, 0xed, 0xe6, 0xd7, 0xe2, 0xee, - 0xe5, 0xd7, 0xe2, 0xed, 0xe6, 0xd7, 0xe2, 0xee, 0xe5, 0xd7, 0xe3, 0xed, - 0xe6, 0xd7, 0xe3, 0xee, 0xe5, 0xd7, 0xe3, 0xed, 0xe6, 0xd7, 0xe3, 0xee, - 0xe5, 0xd7, 0xe4, 0xed, 0xe6, 0xd7, 0xe4, 0xed, 0xe6, 0xd7, 0xe4, 0xed, - 0xe6, 0xd7, 0xe4, 0xed, 0xe6, 0xd7, 0xe5, 0xed, 0xe6, 0xd7, 0xe5, 0xed, - 0xe6, 0xd7, 0xe5, 0xed, 0xe6, 0xd7, 0xe5, 0xed, 0xe6, 0xd7, 0xe6, 0xed, - 0xe6, 0xd6, 0xe5, 0xed, 0xe6, 0xd7, 0xe6, 0xed, 0xe6, 0xd6, 0xe5, 0xed, - 0xe6, 0xd7, 0xe8, 0xed, 0xe7, 0xd7, 0xe7, 0xed, 0xe7, 0xd8, 0xe8, 0xed, - 0xe7, 0xd7, 0xe8, 0xed, 0xe7, 0xd7, 0xe8, 0xed, 0xe7, 0xd7, 0xe8, 0xed, - 0xe7, 0xd7, 0xe8, 0xed, 0xe7, 0xd7, 0xe8, 0xed, 0xe7, 0xd7, 0xe9, 0xec, - 0xea, 0xd7, 0xe9, 0xec, 0xe9, 0xd7, 0xe9, 0xec, 0xea, 0xd7, 0xe9, 0xec, - 0xe9, 0xd7, 0xea, 0xec, 0xea, 0xd7, 0xea, 0xec, 0xea, 0xd7, 0xea, 0xec, - 0xea, 0xd7, 0xea, 0xec, 0xea, 0xd7, 0xeb, 0xec, 0xeb, 0xd7, 0xeb, 0xec, - 0xeb, 0xd7, 0xeb, 0xec, 0xeb, 0xd7, 0xeb, 0xec, 0xeb, 0xd7, 0xec, 0xec, - 0xec, 0xd7, 0xec, 0xec, 0xec, 0xd7, 0xec, 0xec, 0xec, 0xd7, 0xec, 0xec, - 0xec, 0xd7, 0xec, 0xec, 0xec, 0xd7, 0xed, 0xec, 0xed, 0xd7, 0xed, 0xec, - 0xed, 0xd7, 0xed, 0xec, 0xed, 0xd7, 0xed, 0xec, 0xed, 0xd7, 0xee, 0xec, - 0xee, 0xd7, 0xee, 0xec, 0xee, 0xd7, 0xee, 0xec, 0xee, 0xd7, 0xee, 0xec, - 0xee, 0xd7, 0xef, 0xec, 0xef, 0xd7, 0xee, 0xed, 0xef, 0xd7, 0xef, 0xed, - 0xef, 0xd7, 0xef, 0xed, 0xef, 0xd8, 0xf0, 0xed, 0xf0, 0xd8, 0xf0, 0xed, - 0xf0, 0xd8, 0xf0, 0xed, 0xf0, 0xd8, 0xf0, 0xed, 0xf0, 0xd8, 0xf1, 0xed, - 0xf1, 0xd8, 0xf1, 0xed, 0xf1, 0xd7, 0xf2, 0xed, 0xf1, 0xd7, 0xf1, 0xec, - 0xf1, 0xd7, 0xf2, 0xed, 0xf1, 0xd7, 0xf2, 0xec, 0xf1, 0xd7, 0xf2, 0xed, - 0xf1, 0xd7, 0xf2, 0xec, 0xf1, 0xd7, 0xf2, 0xed, 0xf1, 0xd7, 0xf3, 0xec, - 0xf1, 0xd7, 0xf3, 0xed, 0xf1, 0xd7, 0xf3, 0xec, 0xf1, 0xd7, 0xf3, 0xed, - 0xf1, 0xd7, 0xf4, 0xec, 0xf1, 0xd7, 0xf4, 0xed, 0xf1, 0xd7, 0xf4, 0xec, - 0xf1, 0xd7, 0xf4, 0xed, 0xf1, 0xd7, 0xf5, 0xec, 0xf1, 0xd7, 0xf5, 0xed, - 0xf1, 0xd7, 0xf5, 0xec, 0xf1, 0xd7, 0xf5, 0xed, 0xf1, 0xd7, 0xf5, 0xec, - 0xf1, 0xd7, 0xf6, 0xed, 0xf1, 0xd7, 0xf6, 0xec, 0xf1, 0xd7, 0xf6, 0xed, - 0xf1, 0xd7, 0xf6, 0xec, 0xf1, 0xd7, 0xf7, 0xed, 0xf1, 0xd7, 0xf7, 0xec, - 0xf1, 0xd7, 0xf7, 0xed, 0xf1, 0xd7, 0xf7, 0xec, 0xf1, 0xd7, 0xf8, 0xed, - 0xf1, 0xd7, 0xf8, 0xec, 0xf1, 0xd7, 0xf8, 0xed, 0xf1, 0xd7, 0xf8, 0xec, - 0xf1, 0xd7, 0xf8, 0xed, 0xf1, 0xd7, 0xf9, 0xec, 0xf1, 0xd7, 0xf9, 0xed, - 0xf1, 0xd7, 0xf9, 0xec, 0xf1, 0xd7, 0xf9, 0xed, 0xf1, 0xd7, 0xfa, 0xec, - 0xf1, 0xd7, 0xfa, 0xed, 0xf1, 0xd7, 0xfa, 0xec, 0xf1, 0xd7, 0xfa, 0xed, - 0xf1, 0xd7, 0xfa, 0xec, 0xf1, 0xd7, 0xfb, 0xed, 0xf1, 0xd7, 0xfb, 0xec, - 0xf1, 0xd7, 0xfb, 0xed, 0xf1, 0xd7, 0xfb, 0xec, 0xf1, 0xd7, 0xfc, 0xed, - 0xf1, 0xd7, 0xfc, 0xec, 0xf1, 0xd7, 0xfc, 0xed, 0xf1, 0xd7, 0xfc, 0xec, - 0xf1, 0xd7, 0xfc, 0xed, 0xf1, 0xd7, 0xfd, 0xec, 0xf1, 0xd7, 0xfd, 0xed, - 0xf1, 0xd7, 0xfd, 0xec, 0xf1, 0xd7, 0xfd, 0xed, 0xf1, 0xd7, 0xfe, 0xec, - 0xf1, 0xd7, 0xfe, 0xed, 0xf1, 0xd7, 0xfe, 0xec, 0xf1, 0xd7, 0xfe, 0xed, - 0xf1, 0xd7, 0xfe, 0xec, 0xf1, 0xd7, 0xff, 0xec, 0xf1, 0xd7, 0xff, 0xec, - 0xf1, 0xd7, 0x03, 0xef, 0x84, 0xd8, 0x0a, 0xf1, 0x84, 0xd8, 0x0f, 0xef, - 0x84, 0xd8, 0x14, 0xf1, 0x84, 0xd8, 0x17, 0xef, 0x84, 0xd8, 0x1b, 0xf1, - 0x84, 0xd8, 0x1e, 0xef, 0x84, 0xd8, 0x20, 0xf1, 0x84, 0xd8, 0x23, 0xef, - 0x84, 0xd8, 0x25, 0xf1, 0x84, 0xd8, 0x27, 0xef, 0x84, 0xd8, 0x29, 0xf1, - 0x84, 0xd8, 0x2b, 0xef, 0x84, 0xd8, 0x2d, 0xf1, 0x84, 0xd8, 0x2f, 0xef, - 0x84, 0xd8, 0x31, 0xf1, 0x84, 0xd8, 0x32, 0xef, 0x84, 0xd8, 0x34, 0xf1, - 0x84, 0xd8, 0x35, 0xef, 0x84, 0xd8, 0x37, 0xf1, 0x84, 0xd8, 0x38, 0xef, - 0x84, 0xd8, 0x3a, 0xf1, 0x84, 0xd8, 0x3b, 0xef, 0x84, 0xd8, 0x3c, 0xf1, - 0x84, 0xd8, 0x3e, 0xef, 0x84, 0xd8, 0x3f, 0xf1, 0x84, 0xd8, 0x40, 0xef, - 0x84, 0xd8, 0x42, 0xf1, 0x84, 0xd8, 0x43, 0xef, 0x84, 0xd8, 0x44, 0xf1, - 0x84, 0xd8, 0x45, 0xef, 0x84, 0xd8, 0x46, 0xf1, 0x84, 0xd8, 0x47, 0xef, - 0x84, 0xd8, 0x48, 0xf1, 0x84, 0xd8, 0x49, 0xef, 0x84, 0xd8, 0x4a, 0xf1, - 0x84, 0xd8, 0x4b, 0xef, 0x84, 0xd8, 0x4c, 0xf1, 0x84, 0xd8, 0x4d, 0xef, - 0x84, 0xd8, 0x4e, 0xf1, 0x84, 0xd8, 0x4f, 0xef, 0x84, 0xd8, 0x50, 0xf1, - 0x84, 0xd8, 0x51, 0xef, 0x84, 0xd8, 0x52, 0xf1, 0x84, 0xd8, 0x53, 0xef, - 0x84, 0xd8, 0x54, 0xf1, 0x84, 0xd8, 0x55, 0xef, 0x84, 0xd8, 0x56, 0xf1, - 0x84, 0xd8, 0x57, 0xef, 0x84, 0xd8, 0x58, 0xf1, 0x84, 0xd8, 0x58, 0xef, - 0x84, 0xd8, 0x59, 0xf1, 0x84, 0xd8, 0x5a, 0xef, 0x84, 0xd8, 0x5b, 0xf1, - 0x84, 0xd8, 0x5c, 0xef, 0x84, 0xd8, 0x5d, 0xf1, 0x84, 0xd8, 0x5d, 0xef, - 0x84, 0xd8, 0x5e, 0xf1, 0x84, 0xd8, 0x5f, 0xef, 0x84, 0xd8, 0x60, 0xee, - 0x85, 0xd8, 0x60, 0xef, 0x84, 0xd8, 0x61, 0xee, 0x85, 0xd8, 0x62, 0xef, - 0x84, 0xd8, 0x63, 0xee, 0x85, 0xd8, 0x63, 0xef, 0x84, 0xd8, 0x64, 0xee, - 0x85, 0xd8, 0x65, 0xef, 0x84, 0xd8, 0x66, 0xee, 0x85, 0xd8, 0x66, 0xef, - 0x84, 0xd8, 0x67, 0xee, 0x85, 0xd8, 0x68, 0xef, 0x84, 0xd8, 0x68, 0xee, - 0x85, 0xd8, 0x69, 0xef, 0x84, 0xd8, 0x6a, 0xee, 0x85, 0xd8, 0x6a, 0xef, - 0x84, 0xd8, 0x6b, 0xee, 0x85, 0xd8, 0x6c, 0xef, 0x84, 0xd8, 0x6c, 0xee, - 0x85, 0xd8, 0x6d, 0xef, 0x84, 0xd8, 0x6e, 0xee, 0x85, 0xd8, 0x6e, 0xef, - 0x84, 0xd8, 0x6f, 0xee, 0x85, 0xd8, 0x70, 0xef, 0x84, 0xd8, 0x70, 0xee, - 0x85, 0xd8, 0x71, 0xef, 0x84, 0xd8, 0x72, 0xee, 0x85, 0xd8, 0x72, 0xef, - 0x84, 0xd8, 0x73, 0xee, 0x85, 0xd8, 0x73, 0xef, 0x84, 0xd8, 0x74, 0xee, - 0x85, 0xd8, 0x75, 0xef, 0x84, 0xd8, 0x75, 0xee, 0x85, 0xd8, 0x76, 0xef, - 0x84, 0xd8, 0x76, 0xee, 0x85, 0xd8, 0x77, 0xef, 0x84, 0xd8, 0x78, 0xee, - 0x85, 0xd8, 0x78, 0xed, 0x85, 0xd8, 0x79, 0xee, 0x85, 0xd8, 0x79, 0xed, - 0x85, 0xd8, 0x7a, 0xee, 0x85, 0xd8, 0x7a, 0xed, 0x85, 0xd8, 0x7b, 0xee, - 0x85, 0xd8, 0x7c, 0xed, 0x85, 0xd8, 0x7c, 0xee, 0x85, 0xd8, 0x7d, 0xed, - 0x85, 0xd8, 0x7d, 0xee, 0x85, 0xd8, 0x7e, 0xed, 0x85, 0xd8, 0x7e, 0xee, - 0x85, 0xd8, 0x7f, 0xed, 0x85, 0xd8, 0x7f, 0xee, 0x85, 0xd8, 0x80, 0xed, - 0x85, 0xd8, 0x81, 0xee, 0x85, 0xd8, 0x81, 0xed, 0x85, 0xd8, 0x82, 0xee, - 0x85, 0xd8, 0x82, 0xed, 0x85, 0xd8, 0x83, 0xee, 0x85, 0xd8, 0x83, 0xed, - 0x85, 0xd8, 0x84, 0xed, 0x86, 0xd8, 0x84, 0xed, 0x85, 0xd8, 0x85, 0xed, - 0x86, 0xd8, 0x84, 0xed, 0x85, 0xd8, 0x85, 0xed, 0x86, 0xd8, 0x84, 0xed, - 0x86, 0xd8, 0x85, 0xed, 0x87, 0xd8, 0x84, 0xed, 0x87, 0xd8, 0x85, 0xed, - 0x88, 0xd8, 0x84, 0xed, 0x88, 0xd8, 0x85, 0xed, 0x89, 0xd8, 0x85, 0xed, - 0x89, 0xd5, 0x85, 0xed, 0x8a, 0xd8, 0x85, 0xed, 0x8a, 0xd5, 0x85, 0xed, - 0x8b, 0xd8, 0x85, 0xed, 0x8b, 0xd5, 0x85, 0xed, 0x8c, 0xd8, 0x85, 0xed, - 0x8c, 0xd5, 0x85, 0xed, 0x8d, 0xd8, 0x85, 0xed, 0x8d, 0xd5, 0x85, 0xed, - 0x8e, 0xd8, 0x85, 0xed, 0x8e, 0xd5, 0x85, 0xed, 0x8e, 0xd8, 0x85, 0xed, - 0x8f, 0xd5, 0x85, 0xed, 0x8f, 0xd8, 0x85, 0xed, 0x90, 0xd5, 0x85, 0xed, - 0x90, 0xd8, 0x85, 0xed, 0x91, 0xd5, 0x85, 0xed, 0x91, 0xd8, 0x85, 0xed, - 0x92, 0xd5, 0x85, 0xed, 0x92, 0xd8, 0x85, 0xed, 0x93, 0xd5, 0x85, 0xed, - 0x93, 0xd8, 0x85, 0xed, 0x94, 0xd5, 0x85, 0xed, 0x94, 0xd8, 0x85, 0xed, - 0x94, 0xd5, 0x85, 0xed, 0x95, 0xd8, 0x85, 0xed, 0x95, 0xd5, 0x85, 0xed, - 0x96, 0xd8, 0x85, 0xed, 0x96, 0xd5, 0x86, 0xed, 0x97, 0xd2, 0x92, 0xed, - 0x97, 0xea, 0x97, 0xed, 0x98, 0xeb, 0x96, 0xed, 0x98, 0xeb, 0x97, 0xed, - 0x98, 0xeb, 0x96, 0xed, 0x99, 0xeb, 0x97, 0xed, 0x99, 0xeb, 0x96, 0xed, - 0x9a, 0xeb, 0x97, 0xed, 0x9a, 0xeb, 0x96, 0xed, 0x9a, 0xeb, 0x97, 0xed, - 0x9b, 0xeb, 0x96, 0xed, 0x9b, 0xeb, 0x97, 0xed, 0x9c, 0xeb, 0x9b, 0xed, - 0x9c, 0xec, 0x9b, 0xed, 0x9d, 0xec, 0x9b, 0xed, 0x9d, 0xec, 0x9b, 0xed, - 0x9d, 0xec, 0x9b, 0xed, 0x9e, 0xec, 0x9b, 0xed, 0x9e, 0xec, 0x9b, 0xed, - 0x9f, 0xec, 0x9b, 0xed, 0x9f, 0xec, 0x9b, 0xed, 0x9f, 0xec, 0x9b, 0xed, - 0xa0, 0xec, 0x9b, 0xed, 0xa0, 0xec, 0xa0, 0xed, 0xa1, 0xed, 0x9f, 0xed, - 0xa1, 0xed, 0xa0, 0xed, 0xa1, 0xed, 0x9f, 0xed, 0xa2, 0xed, 0xa0, 0xed, - 0xa2, 0xed, 0x9f, 0xed, 0xa3, 0xed, 0xa0, 0xed, 0xa3, 0xed, 0x9f, 0xed, - 0xa3, 0xed, 0xa0, 0xed, 0xa4, 0xed, 0x9f, 0xed, 0xa4, 0xed, 0xa0, 0xed, - 0xa5, 0xed, 0xa4, 0xed, 0xa5, 0xee, 0xa4, 0xed, 0xa5, 0xee, 0xa4, 0xed, - 0xa6, 0xee, 0xa4, 0xed, 0xa6, 0xee, 0xa4, 0xed, 0xa6, 0xee, 0xa4, 0xed, - 0xa7, 0xee, 0xa4, 0xed, 0xa7, 0xee, 0xa4, 0xed, 0xa8, 0xee, 0xa4, 0xed, - 0xa8, 0xee, 0xa4, 0xed, 0xa8, 0xee, 0xa4, 0xed, 0xa9, 0xee, 0xa8, 0xed, - 0xa9, 0xef, 0xa8, 0xed, 0xaa, 0xef, 0xa8, 0xed, 0xaa, 0xef, 0xa8, 0xed, - 0xaa, 0xef, 0xa8, 0xed, 0xab, 0xef, 0xa8, 0xed, 0xab, 0xef, 0xa8, 0xed, - 0xab, 0xef, 0xa8, 0xed, 0xac, 0xef, 0xa8, 0xed, 0xac, 0xef, 0xa8, 0xed, - 0xac, 0xef, 0xa8, 0xed, 0xad, 0xef, 0xac, 0xed, 0xad, 0xf0, 0xa8, 0xed, - 0xae, 0xef, 0xac, 0xed, 0xae, 0xf0, 0xac, 0xed, 0xae, 0xf0, 0xac, 0xed, - 0xaf, 0xf0, 0xac, 0xed, 0xaf, 0xf0, 0xac, 0xed, 0xaf, 0xf0, 0xac, 0xed, - 0xb0, 0xf0, 0xac, 0xed, 0xb0, 0xf0, 0xac, 0xed, 0xb0, 0xf0, 0xac, 0xed, - 0xb1, 0xf0, 0xac, 0xed, 0xb1, 0xf0, 0xac, 0xed, 0xb2, 0xf0, 0xb0, 0xed, - 0xb2, 0xf1, 0xb0, 0xed, 0xb2, 0xf1, 0xb0, 0xed, 0xb3, 0xf1, 0xb0, 0xed, - 0xb3, 0xf1, 0xb0, 0xed, 0xb3, 0xf1, 0xb0, 0xed, 0xb4, 0xf1, 0xb0, 0xed, - 0xb4, 0xf1, 0xb0, 0xed, 0xb4, 0xf1, 0xb0, 0xed, 0xb5, 0xf1, 0xb0, 0xed, - 0xb5, 0xf1, 0xb0, 0xed, 0xb5, 0xf1, 0xb4, 0xed, 0xb6, 0xf2, 0xb4, 0xed, - 0xb6, 0xf2, 0xb4, 0xed, 0xb6, 0xf2, 0xb4, 0xed, 0xb7, 0xf2, 0xb4, 0xed, - 0xb7, 0xf2, 0xb4, 0xed, 0xb7, 0xf2, 0xb4, 0xed, 0xb8, 0xf2, 0xb4, 0xed, - 0xb8, 0xf2, 0xb4, 0xed, 0xb8, 0xf2, 0xb4, 0xed, 0xb9, 0xf2, 0xb4, 0xed, - 0xb9, 0xf2, 0xb8, 0xed, 0xb9, 0xf3, 0xb8, 0xed, 0xba, 0xf3, 0xb8, 0xed, - 0xba, 0xf3, 0xb8, 0xed, 0xba, 0xf3, 0xb8, 0xed, 0xbb, 0xf3, 0xb8, 0xed, - 0xbb, 0xf3, 0xb8, 0xed, 0xbb, 0xf3, 0xcc, 0xed, 0xbc, 0xdb, 0xcc, 0xed, - 0xbc, 0xde, 0xcc, 0xed, 0xbc, 0xdb, 0xcc, 0xed, 0xbd, 0xde, 0xcc, 0xed, - 0xbd, 0xdb, 0xcc, 0xed, 0xbd, 0xde, 0xcc, 0xed, 0xbe, 0xdb, 0xcc, 0xed, - 0xbe, 0xde, 0xcc, 0xed, 0xbe, 0xdb, 0xcc, 0xed, 0xbf, 0xde, 0xcc, 0xed, - 0xbf, 0xdb, 0xcc, 0xed, 0xbf, 0xde, 0xcc, 0xed, 0xc0, 0xdb, 0xcc, 0xed, - 0xc0, 0xde, 0xcc, 0xed, 0xc0, 0xdb, 0xcc, 0xed, 0xc1, 0xde, 0xcc, 0xed, - 0xc1, 0xdb, 0xcc, 0xed, 0xc1, 0xde, 0xcc, 0xed, 0xc1, 0xdb, 0xcd, 0xed, - 0xc2, 0xd8, 0xcc, 0xed, 0xc2, 0xdb, 0xcd, 0xed, 0xc2, 0xd8, 0xcc, 0xed, - 0xc3, 0xdb, 0xcd, 0xed, 0xc3, 0xd8, 0xcc, 0xed, 0xc3, 0xdb, 0xcd, 0xed, - 0xc4, 0xd8, 0xcc, 0xed, 0xc4, 0xdb, 0xcd, 0xed, 0xc4, 0xd8, 0xcc, 0xed, - 0xc5, 0xdb, 0xcd, 0xed, 0xc5, 0xd8, 0xcc, 0xed, 0xc5, 0xdb, 0xcd, 0xed, - 0xc6, 0xd8, 0xcc, 0xed, 0xc6, 0xdb, 0xcd, 0xed, 0xc6, 0xd8, 0xcc, 0xed, - 0xc6, 0xdb, 0xcd, 0xed, 0xc7, 0xd8, 0xcc, 0xed, 0xc7, 0xdb, 0xcd, 0xed, - 0xc7, 0xd8, 0xcc, 0xed, 0xc8, 0xdb, 0xcd, 0xed, 0xc8, 0xd8, 0xcc, 0xed, - 0xc8, 0xdb, 0xcd, 0xed, 0xc9, 0xd8, 0xcc, 0xed, 0xc9, 0xdb, 0xcd, 0xed, - 0xc9, 0xd8, 0xcc, 0xed, 0xc9, 0xdb, 0xcd, 0xed, 0xca, 0xd8, 0xcc, 0xed, - 0xca, 0xdb, 0xcd, 0xed, 0xca, 0xd8, 0xcd, 0xed, 0xcb, 0xd8, 0xcd, 0xed, - 0xcb, 0xd8, 0xcd, 0xed, 0xcb, 0xd8, 0xcd, 0xed, 0xcc, 0xd8, 0xcd, 0xed, - 0xcc, 0xd8, 0xcd, 0xed, 0xcc, 0xd8, 0xcd, 0xed, 0xcc, 0xd8, 0xcd, 0xec, - 0xcd, 0xd8, 0xcd, 0xed, 0xcc, 0xd8, 0xcd, 0xec, 0xcd, 0xd8, 0xce, 0xed, - 0xcc, 0xd8, 0xce, 0xec, 0xcd, 0xd8, 0xce, 0xed, 0xcc, 0xd8, 0xce, 0xec, - 0xcd, 0xd8, 0xcf, 0xed, 0xcc, 0xd8, 0xcf, 0xec, 0xcd, 0xd8, 0xcf, 0xec, - 0xcd, 0xd8, 0xd0, 0xec, 0xcd, 0xd8, 0xd0, 0xec, 0xcd, 0xd8, 0xd0, 0xec, - 0xcd, 0xd8, 0xd0, 0xec, 0xcd, 0xd8, 0xd1, 0xec, 0xcd, 0xd8, 0xd1, 0xec, - 0xcd, 0xd8, 0xd1, 0xec, 0xcd, 0xd8, 0xd2, 0xec, 0xcd, 0xd8, 0xd2, 0xec, - 0xcd, 0xd8, 0xd2, 0xec, 0xcd, 0xd8, 0xd2, 0xec, 0xcd, 0xd8, 0xd3, 0xec, - 0xcd, 0xd8, 0xd3, 0xec, 0xcd, 0xd8, 0xd3, 0xec, 0xcd, 0xd8, 0xd4, 0xec, - 0xcd, 0xd8, 0xd4, 0xec, 0xcd, 0xd8, 0xd4, 0xec, 0xcd, 0xd8, 0xd4, 0xec, - 0xcd, 0xd8, 0xd5, 0xec, 0xcd, 0xd8, 0xd5, 0xec, 0xcd, 0xd8, 0xd5, 0xec, - 0xcd, 0xd8, 0xd6, 0xec, 0xcd, 0xd8, 0xd6, 0xec, 0xcd, 0xd8, 0xd6, 0xec, - 0xcd, 0xd8, 0xd6, 0xec, 0xcd, 0xd8, 0xd7, 0xec, 0xcd, 0xd8, 0xd7, 0xec, - 0xcd, 0xd8, 0xd7, 0xec, 0xcd, 0xd8, 0xd7, 0xea, 0xcd, 0xd8, 0xd8, 0xec, - 0xcd, 0xd8, 0xd8, 0xea, 0xcd, 0xd8, 0xd8, 0xec, 0xcd, 0xd8, 0xd9, 0xea, - 0xcd, 0xd8, 0xd9, 0xec, 0xcd, 0xd8, 0xd9, 0xea, 0xcd, 0xd8, 0xd9, 0xec, - 0xcd, 0xd8, 0xda, 0xef, 0xe5, 0xd8, 0xda, 0xee, 0xe5, 0xd8, 0xda, 0xef, - 0xe5, 0xd8, 0xda, 0xee, 0xe5, 0xd8, 0xdb, 0xef, 0xe5, 0xd8, 0xdb, 0xee, - 0xe5, 0xd8, 0xdb, 0xef, 0xe5, 0xd8, 0xdb, 0xee, 0xe5, 0xd8, 0xdc, 0xef, - 0xe5, 0xd8, 0xdc, 0xee, 0xe5, 0xd8, 0xdc, 0xef, 0xe5, 0xd8, 0xdd, 0xee, - 0xe5, 0xd8, 0xdd, 0xef, 0xe5, 0xd8, 0xdd, 0xee, 0xe5, 0xd8, 0xdd, 0xef, - 0xe5, 0xd8, 0xde, 0xee, 0xe5, 0xd8, 0xde, 0xef, 0xe5, 0xd8, 0xde, 0xee, - 0xe5, 0xd8, 0xde, 0xef, 0xe5, 0xd8, 0xdf, 0xee, 0xe5, 0xd8, 0xdf, 0xef, - 0xe5, 0xd8, 0xdf, 0xee, 0xe5, 0xd8, 0xdf, 0xed, 0xe6, 0xd8, 0xe0, 0xee, - 0xe5, 0xd8, 0xe0, 0xed, 0xe6, 0xd8, 0xe0, 0xee, 0xe5, 0xd8, 0xe1, 0xed, - 0xe6, 0xd8, 0xe1, 0xee, 0xe5, 0xd8, 0xe1, 0xed, 0xe6, 0xd8, 0xe1, 0xee, - 0xe5, 0xd8, 0xe2, 0xed, 0xe6, 0xd8, 0xe2, 0xee, 0xe5, 0xd8, 0xe2, 0xed, - 0xe6, 0xd8, 0xe2, 0xee, 0xe5, 0xd8, 0xe3, 0xed, 0xe6, 0xd8, 0xe3, 0xee, - 0xe5, 0xd8, 0xe3, 0xed, 0xe6, 0xd8, 0xe3, 0xee, 0xe5, 0xd8, 0xe4, 0xed, - 0xe6, 0xd8, 0xe4, 0xee, 0xe5, 0xd8, 0xe4, 0xed, 0xe6, 0xd8, 0xe4, 0xee, - 0xe5, 0xd8, 0xe5, 0xed, 0xe6, 0xd8, 0xe5, 0xed, 0xe6, 0xd8, 0xe5, 0xed, - 0xe6, 0xd8, 0xe5, 0xed, 0xe6, 0xd8, 0xe5, 0xed, 0xe6, 0xd8, 0xe5, 0xed, - 0xe6, 0xd8, 0xe5, 0xed, 0xe6, 0xd8, 0xe5, 0xed, 0xe6, 0xd8, 0xe8, 0xed, - 0xe7, 0xd8, 0xe7, 0xed, 0xe7, 0xd8, 0xe8, 0xed, 0xe7, 0xd8, 0xe7, 0xec, - 0xe7, 0xd8, 0xe8, 0xed, 0xe7, 0xd8, 0xe8, 0xec, 0xe7, 0xd8, 0xe8, 0xed, - 0xe7, 0xd8, 0xe8, 0xec, 0xe7, 0xd8, 0xe9, 0xec, 0xe9, 0xd8, 0xe9, 0xec, - 0xe9, 0xd8, 0xe9, 0xec, 0xe9, 0xd8, 0xe9, 0xec, 0xe9, 0xd8, 0xea, 0xec, - 0xea, 0xd8, 0xea, 0xec, 0xeb, 0xd8, 0xea, 0xec, 0xeb, 0xd8, 0xea, 0xec, - 0xeb, 0xd8, 0xeb, 0xec, 0xeb, 0xd8, 0xeb, 0xec, 0xeb, 0xd8, 0xeb, 0xec, - 0xeb, 0xd8, 0xeb, 0xec, 0xeb, 0xd8, 0xec, 0xec, 0xec, 0xd8, 0xec, 0xec, - 0xec, 0xd8, 0xec, 0xec, 0xec, 0xd8, 0xec, 0xec, 0xec, 0xd8, 0xec, 0xec, - 0xec, 0xd8, 0xed, 0xec, 0xed, 0xd8, 0xed, 0xec, 0xed, 0xd8, 0xed, 0xec, - 0xee, 0xd8, 0xed, 0xec, 0xed, 0xd8, 0xee, 0xec, 0xee, 0xd8, 0xee, 0xec, - 0xee, 0xd8, 0xee, 0xec, 0xee, 0xd8, 0xee, 0xec, 0xee, 0xd8, 0xef, 0xec, - 0xef, 0xd8, 0xef, 0xec, 0xef, 0xd8, 0xef, 0xec, 0xef, 0xd8, 0xef, 0xec, - 0xef, 0xd8, 0xf0, 0xec, 0xf0, 0xd8, 0xf0, 0xec, 0xf0, 0xd8, 0xf0, 0xec, - 0xf0, 0xd8, 0xf0, 0xed, 0xf0, 0xd8, 0xf0, 0xed, 0xf1, 0xd8, 0xf1, 0xed, - 0xf1, 0xd8, 0xf2, 0xed, 0xf1, 0xd8, 0xf1, 0xec, 0xf1, 0xd8, 0xf2, 0xed, - 0xf1, 0xd8, 0xf2, 0xec, 0xf1, 0xd8, 0xf2, 0xed, 0xf1, 0xd8, 0xf2, 0xec, - 0xf1, 0xd8, 0xf2, 0xed, 0xf1, 0xd8, 0xf3, 0xec, 0xf1, 0xd8, 0xf3, 0xed, - 0xf1, 0xd8, 0xf3, 0xec, 0xf1, 0xd8, 0xf3, 0xed, 0xf1, 0xd8, 0xf4, 0xec, - 0xf1, 0xd8, 0xf4, 0xed, 0xf1, 0xd8, 0xf4, 0xec, 0xf1, 0xd8, 0xf4, 0xed, - 0xf1, 0xd8, 0xf5, 0xec, 0xf1, 0xd8, 0xf5, 0xed, 0xf1, 0xd8, 0xf5, 0xec, - 0xf1, 0xd8, 0xf5, 0xed, 0xf1, 0xd8, 0xf5, 0xec, 0xf1, 0xd8, 0xf6, 0xed, - 0xf1, 0xd8, 0xf6, 0xec, 0xf1, 0xd8, 0xf6, 0xed, 0xf1, 0xd8, 0xf6, 0xec, - 0xf1, 0xd8, 0xf7, 0xed, 0xf1, 0xd8, 0xf7, 0xec, 0xf1, 0xd8, 0xf7, 0xed, - 0xf1, 0xd8, 0xf7, 0xec, 0xf1, 0xd8, 0xf8, 0xed, 0xf1, 0xd8, 0xf8, 0xec, - 0xf1, 0xd8, 0xf8, 0xed, 0xf1, 0xd8, 0xf8, 0xec, 0xf1, 0xd8, 0xf8, 0xed, - 0xf1, 0xd8, 0xf9, 0xec, 0xf1, 0xd8, 0xf9, 0xed, 0xf1, 0xd8, 0xf9, 0xec, - 0xf1, 0xd8, 0xf9, 0xed, 0xf1, 0xd8, 0xfa, 0xec, 0xf1, 0xd8, 0xfa, 0xed, - 0xf1, 0xd8, 0xfa, 0xec, 0xf1, 0xd8, 0xfa, 0xed, 0xf1, 0xd8, 0xfa, 0xec, - 0xf1, 0xd8, 0xfb, 0xed, 0xf1, 0xd8, 0xfb, 0xec, 0xf1, 0xd8, 0xfb, 0xed, - 0xf1, 0xd8, 0xfb, 0xec, 0xf1, 0xd8, 0xfc, 0xed, 0xf1, 0xd8, 0xfc, 0xec, - 0xf1, 0xd8, 0xfc, 0xed, 0xf1, 0xd8, 0xfc, 0xec, 0xf1, 0xd8, 0xfc, 0xed, - 0xf1, 0xd8, 0xfd, 0xec, 0xf1, 0xd8, 0xfd, 0xed, 0xf1, 0xd8, 0xfd, 0xec, - 0xf1, 0xd8, 0xfd, 0xed, 0xf1, 0xd8, 0xfe, 0xec, 0xf1, 0xd8, 0xfe, 0xed, - 0xf1, 0xd8, 0xfe, 0xec, 0xf1, 0xd8, 0xfe, 0xed, 0xf1, 0xd8, 0xfe, 0xec, - 0xf1, 0xd8, 0xff, 0xec, 0xf1, 0xd8, 0xff, 0xec, 0xf1, 0xd8, 0x03, 0xf2, - 0x83, 0xd8, 0x0a, 0xf2, 0x83, 0xd8, 0x0f, 0xf2, 0x83, 0xd8, 0x14, 0xf1, - 0x84, 0xd8, 0x17, 0xf2, 0x83, 0xd8, 0x1b, 0xf1, 0x84, 0xd8, 0x1e, 0xf2, - 0x83, 0xd8, 0x20, 0xf1, 0x84, 0xd8, 0x23, 0xf2, 0x83, 0xd8, 0x25, 0xf1, - 0x84, 0xd8, 0x27, 0xf2, 0x83, 0xd8, 0x29, 0xf1, 0x84, 0xd8, 0x2b, 0xf2, - 0x83, 0xd8, 0x2d, 0xf1, 0x84, 0xd8, 0x2f, 0xef, 0x84, 0xd8, 0x31, 0xf1, - 0x84, 0xd8, 0x32, 0xef, 0x84, 0xd8, 0x34, 0xf1, 0x84, 0xd8, 0x35, 0xef, - 0x84, 0xd8, 0x37, 0xf1, 0x84, 0xd8, 0x38, 0xef, 0x84, 0xd8, 0x3a, 0xf1, - 0x84, 0xd8, 0x3b, 0xef, 0x84, 0xd8, 0x3c, 0xf1, 0x84, 0xd8, 0x3e, 0xef, - 0x84, 0xd8, 0x3f, 0xf1, 0x84, 0xd8, 0x40, 0xef, 0x84, 0xd8, 0x42, 0xf1, - 0x84, 0xd8, 0x43, 0xef, 0x84, 0xd8, 0x44, 0xf1, 0x84, 0xd8, 0x45, 0xef, - 0x84, 0xd8, 0x46, 0xf1, 0x84, 0xd8, 0x47, 0xef, 0x84, 0xd8, 0x48, 0xf1, - 0x84, 0xd8, 0x49, 0xef, 0x84, 0xd8, 0x4a, 0xf1, 0x84, 0xd8, 0x4b, 0xef, - 0x84, 0xd8, 0x4c, 0xf1, 0x84, 0xd8, 0x4d, 0xef, 0x84, 0xd8, 0x4e, 0xf1, - 0x84, 0xd8, 0x4f, 0xef, 0x84, 0xd8, 0x50, 0xf1, 0x84, 0xd8, 0x51, 0xef, - 0x84, 0xd8, 0x52, 0xf1, 0x84, 0xd8, 0x53, 0xef, 0x84, 0xd8, 0x54, 0xf1, - 0x84, 0xd8, 0x55, 0xef, 0x84, 0xd8, 0x56, 0xf1, 0x84, 0xd8, 0x57, 0xef, - 0x84, 0xd8, 0x58, 0xf1, 0x84, 0xd8, 0x58, 0xef, 0x84, 0xd8, 0x59, 0xf1, - 0x84, 0xd8, 0x5a, 0xef, 0x84, 0xd8, 0x5b, 0xf1, 0x84, 0xd8, 0x5c, 0xef, - 0x84, 0xd8, 0x5d, 0xee, 0x85, 0xd8, 0x5d, 0xef, 0x84, 0xd8, 0x5e, 0xee, - 0x85, 0xd8, 0x5f, 0xef, 0x84, 0xd8, 0x60, 0xee, 0x85, 0xd8, 0x60, 0xef, - 0x84, 0xd8, 0x61, 0xee, 0x85, 0xd8, 0x62, 0xef, 0x84, 0xd8, 0x63, 0xee, - 0x85, 0xd8, 0x63, 0xef, 0x84, 0xd8, 0x64, 0xee, 0x85, 0xd8, 0x65, 0xef, - 0x84, 0xd8, 0x66, 0xee, 0x85, 0xd8, 0x66, 0xef, 0x84, 0xd8, 0x67, 0xee, - 0x85, 0xd8, 0x68, 0xef, 0x84, 0xd8, 0x68, 0xee, 0x85, 0xd8, 0x69, 0xef, - 0x84, 0xd8, 0x6a, 0xee, 0x85, 0xd8, 0x6a, 0xef, 0x84, 0xd8, 0x6b, 0xee, - 0x85, 0xd8, 0x6c, 0xef, 0x84, 0xd8, 0x6c, 0xee, 0x85, 0xd8, 0x6d, 0xef, - 0x84, 0xd8, 0x6e, 0xee, 0x85, 0xd8, 0x6e, 0xef, 0x84, 0xd8, 0x6f, 0xee, - 0x85, 0xd8, 0x70, 0xef, 0x84, 0xd8, 0x70, 0xee, 0x85, 0xd8, 0x71, 0xef, - 0x84, 0xd8, 0x72, 0xee, 0x85, 0xd8, 0x72, 0xef, 0x84, 0xd8, 0x73, 0xee, - 0x85, 0xd8, 0x73, 0xef, 0x84, 0xd8, 0x74, 0xee, 0x85, 0xd8, 0x75, 0xef, - 0x84, 0xd8, 0x75, 0xee, 0x85, 0xd8, 0x76, 0xef, 0x84, 0xd8, 0x76, 0xee, - 0x85, 0xd8, 0x77, 0xef, 0x84, 0xd8, 0x78, 0xee, 0x85, 0xd8, 0x78, 0xef, - 0x84, 0xd8, 0x79, 0xee, 0x85, 0xd8, 0x79, 0xef, 0x84, 0xd8, 0x7a, 0xee, - 0x85, 0xd8, 0x7a, 0xef, 0x84, 0xd8, 0x7b, 0xee, 0x85, 0xd8, 0x7c, 0xef, - 0x84, 0xd8, 0x7c, 0xee, 0x85, 0xd8, 0x7d, 0xed, 0x85, 0xd8, 0x7d, 0xee, - 0x85, 0xd8, 0x7e, 0xed, 0x85, 0xd8, 0x7e, 0xee, 0x85, 0xd8, 0x7f, 0xed, - 0x85, 0xd8, 0x7f, 0xee, 0x85, 0xd8, 0x80, 0xed, 0x85, 0xd8, 0x81, 0xee, - 0x85, 0xd8, 0x81, 0xed, 0x85, 0xd8, 0x82, 0xee, 0x85, 0xd8, 0x82, 0xed, - 0x85, 0xd8, 0x83, 0xee, 0x85, 0xd8, 0x83, 0xed, 0x85, 0xd8, 0x84, 0xee, - 0x85, 0xd8, 0x84, 0xed, 0x85, 0xd8, 0x85, 0xed, 0x86, 0xd8, 0x84, 0xed, - 0x85, 0xd8, 0x85, 0xed, 0x86, 0xd8, 0x84, 0xed, 0x86, 0xd8, 0x85, 0xed, - 0x87, 0xd8, 0x84, 0xed, 0x87, 0xd8, 0x85, 0xed, 0x88, 0xd8, 0x84, 0xed, - 0x88, 0xd8, 0x85, 0xed, 0x89, 0xd8, 0x85, 0xed, 0x89, 0xd5, 0x85, 0xed, - 0x8a, 0xd8, 0x85, 0xed, 0x8a, 0xd5, 0x85, 0xed, 0x8b, 0xd8, 0x85, 0xed, - 0x8b, 0xd5, 0x85, 0xed, 0x8c, 0xd8, 0x85, 0xed, 0x8c, 0xd5, 0x85, 0xed, - 0x8d, 0xd8, 0x85, 0xed, 0x8d, 0xd5, 0x85, 0xed, 0x8e, 0xd8, 0x85, 0xed, - 0x8e, 0xd5, 0x85, 0xed, 0x8e, 0xd8, 0x85, 0xed, 0x8f, 0xd5, 0x85, 0xed, - 0x8f, 0xd8, 0x85, 0xed, 0x90, 0xd5, 0x85, 0xed, 0x90, 0xd8, 0x85, 0xed, - 0x91, 0xd5, 0x85, 0xed, 0x91, 0xd8, 0x85, 0xed, 0x92, 0xd5, 0x85, 0xed, - 0x92, 0xd8, 0x85, 0xed, 0x93, 0xd5, 0x85, 0xed, 0x93, 0xd8, 0x85, 0xed, - 0x94, 0xd5, 0x85, 0xed, 0x94, 0xd8, 0x85, 0xed, 0x94, 0xd5, 0x85, 0xed, - 0x95, 0xd8, 0x85, 0xed, 0x95, 0xd5, 0x85, 0xed, 0x96, 0xd8, 0x94, 0xed, - 0x96, 0xea, 0x94, 0xed, 0x97, 0xea, 0x94, 0xed, 0x97, 0xea, 0x94, 0xed, - 0x98, 0xea, 0x94, 0xed, 0x98, 0xea, 0x94, 0xed, 0x98, 0xea, 0x94, 0xed, - 0x99, 0xea, 0x94, 0xed, 0x99, 0xea, 0x94, 0xed, 0x9a, 0xea, 0x99, 0xed, - 0x9a, 0xeb, 0x99, 0xed, 0x9a, 0xeb, 0x99, 0xed, 0x9b, 0xeb, 0x99, 0xed, - 0x9b, 0xeb, 0x99, 0xed, 0x9c, 0xeb, 0x99, 0xed, 0x9c, 0xeb, 0x99, 0xed, - 0x9d, 0xeb, 0x99, 0xed, 0x9d, 0xeb, 0x99, 0xed, 0x9d, 0xeb, 0x99, 0xed, - 0x9e, 0xeb, 0x99, 0xed, 0x9e, 0xeb, 0x9e, 0xed, 0x9f, 0xec, 0x9d, 0xed, - 0x9f, 0xec, 0x9e, 0xed, 0x9f, 0xec, 0x9d, 0xed, 0xa0, 0xec, 0x9e, 0xed, - 0xa0, 0xec, 0x9d, 0xed, 0xa1, 0xec, 0x9e, 0xed, 0xa1, 0xec, 0x9d, 0xed, - 0xa1, 0xec, 0x9e, 0xed, 0xa2, 0xec, 0x9d, 0xed, 0xa2, 0xec, 0x9e, 0xed, - 0xa3, 0xec, 0xa2, 0xed, 0xa3, 0xed, 0xa2, 0xed, 0xa3, 0xed, 0xa2, 0xed, - 0xa4, 0xed, 0xa2, 0xed, 0xa4, 0xed, 0xa2, 0xed, 0xa5, 0xed, 0xa2, 0xed, - 0xa5, 0xed, 0xa2, 0xed, 0xa5, 0xed, 0xa2, 0xed, 0xa6, 0xed, 0xa2, 0xed, - 0xa6, 0xed, 0xa2, 0xed, 0xa6, 0xed, 0xa2, 0xed, 0xa7, 0xed, 0xa6, 0xed, - 0xa7, 0xee, 0xa6, 0xed, 0xa8, 0xee, 0xa6, 0xed, 0xa8, 0xee, 0xa6, 0xed, - 0xa8, 0xee, 0xa6, 0xed, 0xa9, 0xee, 0xa6, 0xed, 0xa9, 0xee, 0xa6, 0xed, - 0xaa, 0xee, 0xa6, 0xed, 0xaa, 0xee, 0xa6, 0xed, 0xaa, 0xee, 0xa6, 0xed, - 0xab, 0xee, 0xa6, 0xed, 0xab, 0xee, 0xab, 0xed, 0xab, 0xef, 0xaa, 0xed, - 0xac, 0xef, 0xab, 0xed, 0xac, 0xef, 0xaa, 0xed, 0xac, 0xef, 0xab, 0xed, - 0xad, 0xef, 0xaa, 0xed, 0xad, 0xef, 0xab, 0xed, 0xae, 0xef, 0xaa, 0xed, - 0xae, 0xef, 0xab, 0xed, 0xae, 0xef, 0xaa, 0xed, 0xaf, 0xef, 0xab, 0xed, - 0xaf, 0xef, 0xaf, 0xed, 0xaf, 0xf0, 0xab, 0xed, 0xb0, 0xef, 0xaf, 0xed, - 0xb0, 0xf0, 0xae, 0xed, 0xb0, 0xf0, 0xaf, 0xed, 0xb1, 0xf0, 0xae, 0xed, - 0xb1, 0xf0, 0xaf, 0xed, 0xb2, 0xf0, 0xae, 0xed, 0xb2, 0xf0, 0xaf, 0xed, - 0xb2, 0xf0, 0xae, 0xed, 0xb3, 0xf0, 0xaf, 0xed, 0xb3, 0xf0, 0xae, 0xed, - 0xb3, 0xf0, 0xaf, 0xed, 0xb4, 0xf0, 0xb3, 0xed, 0xb4, 0xf1, 0xb2, 0xed, - 0xb4, 0xf1, 0xb3, 0xed, 0xb5, 0xf1, 0xb2, 0xed, 0xb5, 0xf1, 0xb3, 0xed, - 0xb5, 0xf1, 0xb2, 0xed, 0xb6, 0xf1, 0xb3, 0xed, 0xb6, 0xf1, 0xb2, 0xed, - 0xb6, 0xf1, 0xb3, 0xed, 0xb7, 0xf1, 0xb2, 0xed, 0xb7, 0xf1, 0xb3, 0xed, - 0xb7, 0xf1, 0xb6, 0xed, 0xb8, 0xf2, 0xb6, 0xed, 0xb8, 0xf2, 0xb6, 0xed, - 0xb8, 0xf2, 0xb6, 0xed, 0xb9, 0xf2, 0xb6, 0xed, 0xb9, 0xf2, 0xb6, 0xed, - 0xb9, 0xf2, 0xb6, 0xed, 0xba, 0xf2, 0xb6, 0xed, 0xba, 0xf2, 0xb6, 0xed, - 0xba, 0xf2, 0xb6, 0xed, 0xbb, 0xf2, 0xb6, 0xed, 0xbb, 0xf2, 0xba, 0xed, - 0xbb, 0xf3, 0xba, 0xed, 0xbc, 0xf3, 0xcc, 0xed, 0xbc, 0xdd, 0xcc, 0xed, - 0xbc, 0xdb, 0xcc, 0xed, 0xbd, 0xdd, 0xcc, 0xed, 0xbd, 0xdb, 0xcc, 0xed, - 0xbd, 0xdd, 0xcc, 0xed, 0xbe, 0xdb, 0xcc, 0xed, 0xbe, 0xdd, 0xcc, 0xed, - 0xbe, 0xdb, 0xcc, 0xed, 0xbf, 0xdd, 0xcc, 0xed, 0xbf, 0xdb, 0xcc, 0xed, - 0xbf, 0xdd, 0xcc, 0xed, 0xc0, 0xdb, 0xcc, 0xed, 0xc0, 0xdd, 0xcc, 0xed, - 0xc0, 0xdb, 0xcc, 0xed, 0xc1, 0xdd, 0xcc, 0xed, 0xc1, 0xdb, 0xcc, 0xed, - 0xc1, 0xdd, 0xcc, 0xed, 0xc1, 0xdb, 0xcc, 0xed, 0xc2, 0xdd, 0xcc, 0xed, - 0xc2, 0xdb, 0xcc, 0xed, 0xc2, 0xdd, 0xcc, 0xed, 0xc3, 0xdb, 0xcc, 0xed, - 0xc3, 0xdd, 0xcc, 0xed, 0xc3, 0xdb, 0xcc, 0xed, 0xc4, 0xdd, 0xcc, 0xed, - 0xc4, 0xdb, 0xcc, 0xed, 0xc4, 0xdd, 0xcc, 0xed, 0xc5, 0xdb, 0xcc, 0xed, - 0xc5, 0xdd, 0xcc, 0xed, 0xc5, 0xdb, 0xcd, 0xed, 0xc6, 0xd8, 0xcc, 0xed, - 0xc6, 0xdb, 0xcd, 0xed, 0xc6, 0xd8, 0xcc, 0xed, 0xc6, 0xdb, 0xcd, 0xed, - 0xc7, 0xd8, 0xcc, 0xed, 0xc7, 0xdb, 0xcd, 0xed, 0xc7, 0xd8, 0xcc, 0xed, - 0xc8, 0xdb, 0xcd, 0xed, 0xc8, 0xd8, 0xcc, 0xed, 0xc8, 0xdb, 0xcd, 0xed, - 0xc9, 0xd8, 0xcc, 0xed, 0xc9, 0xdb, 0xcd, 0xed, 0xc9, 0xd8, 0xcc, 0xed, - 0xc9, 0xdb, 0xcd, 0xed, 0xca, 0xd8, 0xcc, 0xed, 0xca, 0xdb, 0xcd, 0xed, - 0xca, 0xd8, 0xcd, 0xed, 0xcb, 0xd8, 0xcd, 0xed, 0xcb, 0xd8, 0xcd, 0xed, - 0xcb, 0xd8, 0xcd, 0xed, 0xcc, 0xd8, 0xcd, 0xed, 0xcc, 0xd8, 0xcd, 0xed, - 0xcc, 0xd8, 0xcd, 0xed, 0xcc, 0xd8, 0xcd, 0xed, 0xcd, 0xd8, 0xcd, 0xed, - 0xcc, 0xd8, 0xcd, 0xed, 0xcd, 0xd8, 0xce, 0xed, 0xcc, 0xd8, 0xce, 0xed, - 0xcd, 0xd8, 0xce, 0xed, 0xcc, 0xd8, 0xce, 0xed, 0xcd, 0xd8, 0xcf, 0xed, - 0xcc, 0xd8, 0xcf, 0xed, 0xcd, 0xd8, 0xcf, 0xed, 0xcc, 0xd8, 0xd0, 0xed, - 0xcd, 0xd8, 0xd0, 0xed, 0xcc, 0xd8, 0xd0, 0xed, 0xcd, 0xd8, 0xd0, 0xed, - 0xcc, 0xd8, 0xd1, 0xed, 0xcd, 0xd8, 0xd1, 0xed, 0xcc, 0xd8, 0xd1, 0xed, - 0xcd, 0xd8, 0xd2, 0xeb, 0xcd, 0xd8, 0xd2, 0xed, 0xcd, 0xd8, 0xd2, 0xeb, - 0xcd, 0xd8, 0xd2, 0xed, 0xcd, 0xd8, 0xd3, 0xeb, 0xcd, 0xd8, 0xd3, 0xed, - 0xcd, 0xd8, 0xd3, 0xeb, 0xcd, 0xd8, 0xd4, 0xed, 0xcd, 0xd8, 0xd4, 0xeb, - 0xcd, 0xd8, 0xd4, 0xed, 0xcd, 0xd8, 0xd4, 0xeb, 0xcd, 0xd8, 0xd5, 0xed, - 0xcd, 0xd8, 0xd5, 0xeb, 0xcd, 0xd8, 0xd5, 0xed, 0xcd, 0xd8, 0xd6, 0xeb, - 0xcd, 0xd8, 0xd6, 0xed, 0xcd, 0xd8, 0xd6, 0xeb, 0xcd, 0xd8, 0xd6, 0xed, - 0xcd, 0xd8, 0xd7, 0xeb, 0xcd, 0xd8, 0xd7, 0xed, 0xcd, 0xd8, 0xd7, 0xeb, - 0xcd, 0xd8, 0xd7, 0xed, 0xcd, 0xd8, 0xd8, 0xeb, 0xcd, 0xd8, 0xd8, 0xed, - 0xcd, 0xd8, 0xd8, 0xeb, 0xcd, 0xd8, 0xd9, 0xed, 0xcd, 0xd8, 0xd9, 0xeb, - 0xcd, 0xd8, 0xd9, 0xed, 0xcd, 0xd8, 0xd9, 0xeb, 0xcd, 0xd8, 0xda, 0xef, - 0xe5, 0xd8, 0xda, 0xee, 0xe5, 0xd8, 0xda, 0xef, 0xe5, 0xd8, 0xda, 0xee, - 0xe5, 0xd8, 0xdb, 0xef, 0xe5, 0xd8, 0xdb, 0xee, 0xe5, 0xd8, 0xdb, 0xef, - 0xe5, 0xd8, 0xdb, 0xee, 0xe5, 0xd8, 0xdc, 0xef, 0xe5, 0xd8, 0xdc, 0xee, - 0xe5, 0xd8, 0xdc, 0xef, 0xe5, 0xd8, 0xdd, 0xee, 0xe5, 0xd8, 0xdd, 0xef, - 0xe5, 0xd8, 0xdd, 0xee, 0xe5, 0xd8, 0xdd, 0xef, 0xe5, 0xd8, 0xde, 0xee, - 0xe5, 0xd8, 0xde, 0xef, 0xe5, 0xd8, 0xde, 0xee, 0xe5, 0xd8, 0xde, 0xef, - 0xe5, 0xd8, 0xdf, 0xee, 0xe5, 0xd8, 0xdf, 0xef, 0xe5, 0xd8, 0xdf, 0xee, - 0xe5, 0xd8, 0xdf, 0xef, 0xe5, 0xd8, 0xe0, 0xee, 0xe5, 0xd8, 0xe0, 0xef, - 0xe5, 0xd8, 0xe0, 0xee, 0xe5, 0xd8, 0xe1, 0xef, 0xe5, 0xd8, 0xe1, 0xee, - 0xe5, 0xd8, 0xe1, 0xef, 0xe5, 0xd8, 0xe1, 0xee, 0xe5, 0xd8, 0xe2, 0xed, - 0xe6, 0xd8, 0xe2, 0xee, 0xe5, 0xd8, 0xe2, 0xed, 0xe6, 0xd8, 0xe2, 0xee, - 0xe5, 0xd8, 0xe3, 0xed, 0xe6, 0xd8, 0xe3, 0xee, 0xe5, 0xd8, 0xe3, 0xed, - 0xe6, 0xd8, 0xe3, 0xee, 0xe5, 0xd8, 0xe4, 0xed, 0xe6, 0xd8, 0xe4, 0xee, - 0xe5, 0xd8, 0xe4, 0xed, 0xe6, 0xd8, 0xe4, 0xee, 0xe5, 0xd8, 0xe5, 0xed, - 0xe6, 0xd8, 0xe5, 0xed, 0xe6, 0xd8, 0xe5, 0xed, 0xe6, 0xd8, 0xe5, 0xed, - 0xe6, 0xd8, 0xe5, 0xed, 0xe6, 0xd8, 0xe5, 0xed, 0xe6, 0xd8, 0xe5, 0xed, - 0xe6, 0xd8, 0xe5, 0xed, 0xe6, 0xd8, 0xe8, 0xed, 0xe7, 0xd8, 0xe7, 0xed, - 0xe7, 0xd8, 0xe8, 0xed, 0xe7, 0xd8, 0xe7, 0xed, 0xe7, 0xd8, 0xe8, 0xed, - 0xe7, 0xd8, 0xe8, 0xed, 0xe7, 0xd8, 0xe8, 0xed, 0xe7, 0xd8, 0xe8, 0xed, - 0xe7, 0xd8, 0xe9, 0xed, 0xe7, 0xd8, 0xe9, 0xed, 0xe7, 0xd8, 0xe9, 0xec, - 0xea, 0xd8, 0xe9, 0xec, 0xe9, 0xd8, 0xea, 0xec, 0xea, 0xd8, 0xea, 0xec, - 0xea, 0xd8, 0xea, 0xec, 0xea, 0xd8, 0xea, 0xec, 0xea, 0xd8, 0xeb, 0xec, - 0xeb, 0xd8, 0xeb, 0xec, 0xeb, 0xd8, 0xeb, 0xec, 0xec, 0xd8, 0xeb, 0xec, - 0xec, 0xd8, 0xec, 0xec, 0xec, 0xd8, 0xec, 0xec, 0xec, 0xd8, 0xec, 0xec, - 0xec, 0xd8, 0xec, 0xec, 0xec, 0xd8, 0xec, 0xec, 0xec, 0xd8, 0xed, 0xec, - 0xed, 0xd8, 0xed, 0xec, 0xed, 0xd8, 0xed, 0xec, 0xed, 0xd8, 0xed, 0xec, - 0xed, 0xd8, 0xee, 0xec, 0xee, 0xd8, 0xee, 0xec, 0xee, 0xd8, 0xee, 0xec, - 0xee, 0xd8, 0xee, 0xed, 0xef, 0xd8, 0xef, 0xed, 0xef, 0xd8, 0xef, 0xed, - 0xef, 0xd8, 0xef, 0xed, 0xef, 0xd8, 0xef, 0xed, 0xef, 0xd8, 0xf0, 0xed, - 0xf0, 0xd8, 0xf0, 0xed, 0xf0, 0xd8, 0xf0, 0xed, 0xf0, 0xd8, 0xf0, 0xed, - 0xf0, 0xd8, 0xf1, 0xed, 0xf1, 0xd8, 0xf1, 0xed, 0xf1, 0xd8, 0xf1, 0xed, - 0xf1, 0xd8, 0xf1, 0xed, 0xf1, 0xd8, 0xf2, 0xed, 0xf1, 0xd8, 0xf2, 0xed, - 0xf1, 0xd8, 0xf2, 0xed, 0xf1, 0xd8, 0xf2, 0xec, 0xf1, 0xd8, 0xf2, 0xed, - 0xf1, 0xd8, 0xf3, 0xec, 0xf1, 0xd8, 0xf3, 0xed, 0xf1, 0xd8, 0xf3, 0xec, - 0xf1, 0xd8, 0xf3, 0xed, 0xf1, 0xd8, 0xf4, 0xec, 0xf1, 0xd8, 0xf4, 0xed, - 0xf1, 0xd8, 0xf4, 0xec, 0xf1, 0xd8, 0xf4, 0xed, 0xf1, 0xd8, 0xf5, 0xec, - 0xf1, 0xd8, 0xf5, 0xed, 0xf1, 0xd8, 0xf5, 0xec, 0xf1, 0xd8, 0xf5, 0xed, - 0xf1, 0xd8, 0xf5, 0xec, 0xf1, 0xd8, 0xf6, 0xed, 0xf1, 0xd8, 0xf6, 0xec, - 0xf1, 0xd8, 0xf6, 0xed, 0xf1, 0xd8, 0xf6, 0xec, 0xf1, 0xd8, 0xf7, 0xed, - 0xf1, 0xd8, 0xf7, 0xec, 0xf1, 0xd8, 0xf7, 0xed, 0xf1, 0xd8, 0xf7, 0xec, - 0xf1, 0xd8, 0xf8, 0xed, 0xf1, 0xd8, 0xf8, 0xec, 0xf1, 0xd8, 0xf8, 0xed, - 0xf1, 0xd8, 0xf8, 0xec, 0xf1, 0xd8, 0xf8, 0xed, 0xf1, 0xd8, 0xf9, 0xec, - 0xf1, 0xd8, 0xf9, 0xed, 0xf1, 0xd8, 0xf9, 0xec, 0xf1, 0xd8, 0xf9, 0xed, - 0xf1, 0xd8, 0xfa, 0xec, 0xf1, 0xd8, 0xfa, 0xed, 0xf1, 0xd8, 0xfa, 0xec, - 0xf1, 0xd8, 0xfa, 0xed, 0xf1, 0xd8, 0xfa, 0xec, 0xf1, 0xd8, 0xfb, 0xed, - 0xf1, 0xd8, 0xfb, 0xec, 0xf1, 0xd8, 0xfb, 0xed, 0xf1, 0xd8, 0xfb, 0xec, - 0xf1, 0xd8, 0xfc, 0xed, 0xf1, 0xd8, 0xfc, 0xec, 0xf1, 0xd8, 0xfc, 0xed, - 0xf1, 0xd8, 0xfc, 0xec, 0xf1, 0xd8, 0xfc, 0xed, 0xf1, 0xd8, 0xfd, 0xec, - 0xf1, 0xd8, 0xfd, 0xed, 0xf1, 0xd8, 0xfd, 0xec, 0xf1, 0xd8, 0xfd, 0xed, - 0xf1, 0xd8, 0xfe, 0xec, 0xf1, 0xd8, 0xfe, 0xed, 0xf1, 0xd8, 0xfe, 0xec, - 0xf1, 0xd8, 0xfe, 0xed, 0xf1, 0xd8, 0xfe, 0xec, 0xf1, 0xd8, 0xff, 0xec, - 0xf1, 0xd8, 0xff, 0xec, 0xf1, 0xd8, 0x03, 0xf3, 0x83, 0xd9, 0x0a, 0xf1, - 0x84, 0xd9, 0x0f, 0xf3, 0x83, 0xd9, 0x14, 0xf1, 0x84, 0xd9, 0x17, 0xf3, - 0x83, 0xd9, 0x1b, 0xf1, 0x84, 0xd9, 0x1e, 0xf3, 0x83, 0xd9, 0x20, 0xf1, - 0x84, 0xd9, 0x23, 0xf3, 0x83, 0xd9, 0x25, 0xf1, 0x84, 0xd9, 0x27, 0xf3, - 0x83, 0xd9, 0x29, 0xf1, 0x84, 0xd9, 0x2b, 0xf3, 0x83, 0xd9, 0x2d, 0xf1, - 0x84, 0xd9, 0x2f, 0xef, 0x84, 0xd9, 0x31, 0xf1, 0x84, 0xd9, 0x32, 0xef, - 0x84, 0xd9, 0x34, 0xf1, 0x84, 0xd9, 0x35, 0xef, 0x84, 0xd9, 0x37, 0xf1, - 0x84, 0xd9, 0x38, 0xef, 0x84, 0xd9, 0x3a, 0xf1, 0x84, 0xd9, 0x3b, 0xef, - 0x84, 0xd9, 0x3c, 0xf1, 0x84, 0xd9, 0x3e, 0xef, 0x84, 0xd9, 0x3f, 0xf1, - 0x84, 0xd9, 0x40, 0xef, 0x84, 0xd9, 0x42, 0xf1, 0x84, 0xd9, 0x43, 0xef, - 0x84, 0xd9, 0x44, 0xf1, 0x84, 0xd9, 0x45, 0xef, 0x84, 0xd9, 0x46, 0xf1, - 0x84, 0xd9, 0x47, 0xef, 0x84, 0xd9, 0x48, 0xf1, 0x84, 0xd9, 0x49, 0xef, - 0x84, 0xd9, 0x4a, 0xf1, 0x84, 0xd9, 0x4b, 0xef, 0x84, 0xd9, 0x4c, 0xf1, - 0x84, 0xd9, 0x4d, 0xef, 0x84, 0xd9, 0x4e, 0xf1, 0x84, 0xd9, 0x4f, 0xef, - 0x84, 0xd9, 0x50, 0xf1, 0x84, 0xd9, 0x51, 0xef, 0x84, 0xd9, 0x52, 0xf1, - 0x84, 0xd9, 0x53, 0xef, 0x84, 0xd9, 0x54, 0xf1, 0x84, 0xd9, 0x55, 0xef, - 0x84, 0xd9, 0x56, 0xf1, 0x84, 0xd9, 0x57, 0xef, 0x84, 0xd9, 0x58, 0xf1, - 0x84, 0xd9, 0x58, 0xef, 0x84, 0xd9, 0x59, 0xf1, 0x84, 0xd9, 0x5a, 0xef, - 0x84, 0xd9, 0x5b, 0xf1, 0x84, 0xd9, 0x5c, 0xef, 0x84, 0xd9, 0x5d, 0xf1, - 0x84, 0xd9, 0x5d, 0xef, 0x84, 0xd9, 0x5e, 0xf1, 0x84, 0xd9, 0x5f, 0xef, - 0x84, 0xd9, 0x60, 0xf1, 0x84, 0xd9, 0x60, 0xef, 0x84, 0xd9, 0x61, 0xf1, - 0x84, 0xd9, 0x62, 0xef, 0x84, 0xd9, 0x63, 0xf1, 0x84, 0xd9, 0x63, 0xef, - 0x84, 0xd9, 0x64, 0xf1, 0x84, 0xd9, 0x65, 0xef, 0x84, 0xd9, 0x66, 0xf1, - 0x84, 0xd9, 0x66, 0xef, 0x84, 0xd9, 0x67, 0xf1, 0x84, 0xd9, 0x68, 0xef, - 0x84, 0xd9, 0x68, 0xee, 0x85, 0xd9, 0x69, 0xef, 0x84, 0xd9, 0x6a, 0xee, - 0x85, 0xd9, 0x6a, 0xef, 0x84, 0xd9, 0x6b, 0xee, 0x85, 0xd9, 0x6c, 0xef, - 0x84, 0xd9, 0x6c, 0xee, 0x85, 0xd9, 0x6d, 0xef, 0x84, 0xd9, 0x6e, 0xee, - 0x85, 0xd9, 0x6e, 0xef, 0x84, 0xd9, 0x6f, 0xee, 0x85, 0xd9, 0x70, 0xef, - 0x84, 0xd9, 0x70, 0xee, 0x85, 0xd9, 0x71, 0xef, 0x84, 0xd9, 0x72, 0xee, - 0x85, 0xd9, 0x72, 0xef, 0x84, 0xd9, 0x73, 0xee, 0x85, 0xd9, 0x73, 0xef, - 0x84, 0xd9, 0x74, 0xee, 0x85, 0xd9, 0x75, 0xef, 0x84, 0xd9, 0x75, 0xee, - 0x85, 0xd9, 0x76, 0xef, 0x84, 0xd9, 0x76, 0xee, 0x85, 0xd9, 0x77, 0xef, - 0x84, 0xd9, 0x78, 0xee, 0x85, 0xd9, 0x78, 0xef, 0x84, 0xd9, 0x79, 0xee, - 0x85, 0xd9, 0x79, 0xef, 0x84, 0xd9, 0x7a, 0xee, 0x85, 0xd9, 0x7a, 0xef, - 0x84, 0xd9, 0x7b, 0xee, 0x85, 0xd9, 0x7c, 0xef, 0x84, 0xd9, 0x7c, 0xee, - 0x85, 0xd9, 0x7d, 0xed, 0x85, 0xd9, 0x7d, 0xee, 0x85, 0xd9, 0x7e, 0xed, - 0x85, 0xd9, 0x7e, 0xee, 0x85, 0xd9, 0x7f, 0xed, 0x85, 0xd9, 0x7f, 0xee, - 0x85, 0xd9, 0x80, 0xed, 0x85, 0xd9, 0x81, 0xee, 0x85, 0xd9, 0x81, 0xed, - 0x85, 0xd9, 0x82, 0xee, 0x85, 0xd9, 0x82, 0xed, 0x85, 0xd9, 0x83, 0xee, - 0x85, 0xd9, 0x83, 0xed, 0x85, 0xd9, 0x84, 0xee, 0x85, 0xd9, 0x84, 0xed, - 0x85, 0xd9, 0x85, 0xed, 0x86, 0xd9, 0x84, 0xed, 0x85, 0xd9, 0x85, 0xed, - 0x86, 0xd9, 0x84, 0xed, 0x86, 0xd9, 0x85, 0xed, 0x87, 0xd9, 0x84, 0xed, - 0x87, 0xd9, 0x85, 0xed, 0x88, 0xd9, 0x84, 0xed, 0x88, 0xd9, 0x85, 0xed, - 0x89, 0xd9, 0x84, 0xed, 0x89, 0xd9, 0x85, 0xed, 0x8a, 0xd9, 0x84, 0xed, - 0x8a, 0xd9, 0x85, 0xed, 0x8b, 0xd9, 0x84, 0xed, 0x8b, 0xd9, 0x85, 0xed, - 0x8c, 0xd9, 0x84, 0xed, 0x8c, 0xd9, 0x85, 0xed, 0x8d, 0xd9, 0x85, 0xed, - 0x8d, 0xd5, 0x85, 0xed, 0x8e, 0xd9, 0x85, 0xed, 0x8e, 0xd5, 0x85, 0xed, - 0x8e, 0xd9, 0x85, 0xed, 0x8f, 0xd5, 0x85, 0xed, 0x8f, 0xd9, 0x85, 0xed, - 0x90, 0xd5, 0x85, 0xed, 0x90, 0xd9, 0x85, 0xed, 0x91, 0xd5, 0x85, 0xed, - 0x91, 0xd9, 0x85, 0xed, 0x92, 0xd5, 0x85, 0xed, 0x92, 0xd9, 0x85, 0xed, - 0x93, 0xd5, 0x85, 0xed, 0x93, 0xd9, 0x85, 0xed, 0x94, 0xd5, 0x85, 0xed, - 0x94, 0xd9, 0x85, 0xed, 0x94, 0xd5, 0x85, 0xed, 0x95, 0xd9, 0x85, 0xed, - 0x95, 0xd5, 0x91, 0xed, 0x96, 0xea, 0x92, 0xed, 0x96, 0xea, 0x97, 0xed, - 0x97, 0xeb, 0x92, 0xed, 0x97, 0xea, 0x97, 0xed, 0x98, 0xeb, 0x96, 0xed, - 0x98, 0xeb, 0x97, 0xed, 0x98, 0xeb, 0x96, 0xed, 0x99, 0xeb, 0x97, 0xed, - 0x99, 0xeb, 0x96, 0xed, 0x9a, 0xeb, 0x97, 0xed, 0x9a, 0xeb, 0x96, 0xed, - 0x9a, 0xeb, 0x97, 0xed, 0x9b, 0xeb, 0x96, 0xed, 0x9b, 0xeb, 0x97, 0xed, - 0x9c, 0xeb, 0x9b, 0xed, 0x9c, 0xec, 0x9b, 0xed, 0x9d, 0xec, 0x9b, 0xed, - 0x9d, 0xec, 0x9b, 0xed, 0x9d, 0xec, 0x9b, 0xed, 0x9e, 0xec, 0x9b, 0xed, - 0x9e, 0xec, 0x9b, 0xed, 0x9f, 0xec, 0x9b, 0xed, 0x9f, 0xec, 0x9b, 0xed, - 0x9f, 0xec, 0x9b, 0xed, 0xa0, 0xec, 0x9b, 0xed, 0xa0, 0xec, 0xa0, 0xed, - 0xa1, 0xed, 0x9f, 0xed, 0xa1, 0xed, 0xa0, 0xed, 0xa1, 0xed, 0x9f, 0xed, - 0xa2, 0xed, 0xa0, 0xed, 0xa2, 0xed, 0x9f, 0xed, 0xa3, 0xed, 0xa0, 0xed, - 0xa3, 0xed, 0x9f, 0xed, 0xa3, 0xed, 0xa0, 0xed, 0xa4, 0xed, 0x9f, 0xed, - 0xa4, 0xed, 0xa0, 0xed, 0xa5, 0xed, 0xa4, 0xed, 0xa5, 0xee, 0xa4, 0xed, - 0xa5, 0xee, 0xa4, 0xed, 0xa6, 0xee, 0xa4, 0xed, 0xa6, 0xee, 0xa4, 0xed, - 0xa6, 0xee, 0xa4, 0xed, 0xa7, 0xee, 0xa4, 0xed, 0xa7, 0xee, 0xa4, 0xed, - 0xa8, 0xee, 0xa4, 0xed, 0xa8, 0xee, 0xa4, 0xed, 0xa8, 0xee, 0xa4, 0xed, - 0xa9, 0xee, 0xa8, 0xed, 0xa9, 0xef, 0xa8, 0xed, 0xaa, 0xef, 0xa8, 0xed, - 0xaa, 0xef, 0xa8, 0xed, 0xaa, 0xef, 0xa8, 0xed, 0xab, 0xef, 0xa8, 0xed, - 0xab, 0xef, 0xa8, 0xed, 0xab, 0xef, 0xa8, 0xed, 0xac, 0xef, 0xa8, 0xed, - 0xac, 0xef, 0xa8, 0xed, 0xac, 0xef, 0xa8, 0xed, 0xad, 0xef, 0xac, 0xed, - 0xad, 0xf0, 0xac, 0xed, 0xae, 0xf0, 0xac, 0xed, 0xae, 0xf0, 0xac, 0xed, - 0xae, 0xf0, 0xac, 0xed, 0xaf, 0xf0, 0xac, 0xed, 0xaf, 0xf0, 0xac, 0xed, - 0xaf, 0xf0, 0xac, 0xed, 0xb0, 0xf0, 0xac, 0xed, 0xb0, 0xf0, 0xac, 0xed, - 0xb0, 0xf0, 0xac, 0xed, 0xb1, 0xf0, 0xb0, 0xed, 0xb1, 0xf1, 0xac, 0xed, - 0xb2, 0xf0, 0xb0, 0xed, 0xb2, 0xf1, 0xb0, 0xed, 0xb2, 0xf1, 0xb0, 0xed, - 0xb3, 0xf1, 0xb0, 0xed, 0xb3, 0xf1, 0xb0, 0xed, 0xb3, 0xf1, 0xb0, 0xed, - 0xb4, 0xf1, 0xb0, 0xed, 0xb4, 0xf1, 0xb0, 0xed, 0xb4, 0xf1, 0xb0, 0xed, - 0xb5, 0xf1, 0xb0, 0xed, 0xb5, 0xf1, 0xb0, 0xed, 0xb5, 0xf1, 0xb4, 0xed, - 0xb6, 0xf2, 0xb4, 0xed, 0xb6, 0xf2, 0xb4, 0xed, 0xb6, 0xf2, 0xb4, 0xed, - 0xb7, 0xf2, 0xb4, 0xed, 0xb7, 0xf2, 0xb4, 0xed, 0xb7, 0xf2, 0xb4, 0xed, - 0xb8, 0xf2, 0xb4, 0xed, 0xb8, 0xf2, 0xb4, 0xed, 0xb8, 0xf2, 0xb4, 0xed, - 0xb9, 0xf2, 0xb4, 0xed, 0xb9, 0xf2, 0xb8, 0xed, 0xb9, 0xf3, 0xb8, 0xed, - 0xba, 0xf3, 0xb8, 0xed, 0xba, 0xf3, 0xb8, 0xed, 0xba, 0xf3, 0xb8, 0xed, - 0xbb, 0xf3, 0xb8, 0xed, 0xbb, 0xf3, 0xb8, 0xed, 0xbb, 0xf3, 0xb8, 0xed, - 0xbc, 0xf3, 0xcc, 0xed, 0xbc, 0xde, 0xcc, 0xed, 0xbc, 0xdb, 0xcc, 0xed, - 0xbd, 0xde, 0xcc, 0xed, 0xbd, 0xdb, 0xcc, 0xed, 0xbd, 0xde, 0xcc, 0xed, - 0xbe, 0xdb, 0xcc, 0xed, 0xbe, 0xde, 0xcc, 0xed, 0xbe, 0xdb, 0xcc, 0xed, - 0xbf, 0xde, 0xcc, 0xed, 0xbf, 0xdb, 0xcc, 0xed, 0xbf, 0xde, 0xcc, 0xed, - 0xc0, 0xdb, 0xcc, 0xed, 0xc0, 0xde, 0xcc, 0xed, 0xc0, 0xdb, 0xcc, 0xed, - 0xc1, 0xde, 0xcc, 0xed, 0xc1, 0xdb, 0xcc, 0xed, 0xc1, 0xde, 0xcc, 0xed, - 0xc1, 0xdb, 0xcc, 0xed, 0xc2, 0xde, 0xcc, 0xed, 0xc2, 0xdb, 0xcc, 0xed, - 0xc2, 0xde, 0xcc, 0xed, 0xc3, 0xdb, 0xcc, 0xed, 0xc3, 0xde, 0xcc, 0xed, - 0xc3, 0xdb, 0xcc, 0xed, 0xc4, 0xde, 0xcc, 0xed, 0xc4, 0xdb, 0xcc, 0xed, - 0xc4, 0xde, 0xcc, 0xed, 0xc5, 0xdb, 0xcc, 0xed, 0xc5, 0xde, 0xcc, 0xed, - 0xc5, 0xdb, 0xcd, 0xed, 0xc6, 0xd9, 0xcc, 0xed, 0xc6, 0xdb, 0xcd, 0xed, - 0xc6, 0xd9, 0xcc, 0xed, 0xc6, 0xdb, 0xcd, 0xed, 0xc7, 0xd9, 0xcc, 0xed, - 0xc7, 0xdb, 0xcd, 0xed, 0xc7, 0xd9, 0xcc, 0xed, 0xc8, 0xdb, 0xcd, 0xed, - 0xc8, 0xd9, 0xcc, 0xed, 0xc8, 0xdb, 0xcd, 0xed, 0xc9, 0xd9, 0xcc, 0xed, - 0xc9, 0xdb, 0xcd, 0xed, 0xc9, 0xd9, 0xcc, 0xed, 0xc9, 0xdb, 0xcd, 0xed, - 0xca, 0xd9, 0xcc, 0xed, 0xca, 0xdb, 0xcd, 0xed, 0xca, 0xd9, 0xcc, 0xed, - 0xcb, 0xdb, 0xcd, 0xed, 0xcb, 0xd9, 0xcc, 0xed, 0xcb, 0xdb, 0xcd, 0xed, - 0xcc, 0xd9, 0xcd, 0xed, 0xcc, 0xd9, 0xcd, 0xed, 0xcc, 0xd9, 0xcd, 0xed, - 0xcc, 0xd9, 0xcd, 0xed, 0xcc, 0xd9, 0xcd, 0xed, 0xcc, 0xd9, 0xcd, 0xed, - 0xcc, 0xd9, 0xce, 0xed, 0xcc, 0xd9, 0xce, 0xec, 0xcd, 0xd9, 0xce, 0xed, - 0xcc, 0xd9, 0xce, 0xec, 0xcd, 0xd9, 0xcf, 0xed, 0xcc, 0xd9, 0xcf, 0xec, - 0xcd, 0xd9, 0xcf, 0xed, 0xcc, 0xd9, 0xd0, 0xec, 0xcd, 0xd9, 0xd0, 0xed, - 0xcc, 0xd9, 0xd0, 0xec, 0xcd, 0xd9, 0xd0, 0xed, 0xcc, 0xd9, 0xd1, 0xec, - 0xcd, 0xd9, 0xd1, 0xed, 0xcc, 0xd9, 0xd1, 0xec, 0xcd, 0xd9, 0xd2, 0xec, - 0xcd, 0xd9, 0xd2, 0xec, 0xcd, 0xd9, 0xd2, 0xec, 0xcd, 0xd9, 0xd2, 0xec, - 0xcd, 0xd9, 0xd3, 0xec, 0xcd, 0xd9, 0xd3, 0xec, 0xcd, 0xd9, 0xd3, 0xec, - 0xcd, 0xd9, 0xd4, 0xec, 0xcd, 0xd9, 0xd4, 0xec, 0xcd, 0xd9, 0xd4, 0xec, - 0xcd, 0xd9, 0xd4, 0xec, 0xcd, 0xd9, 0xd5, 0xec, 0xcd, 0xd9, 0xd5, 0xec, - 0xcd, 0xd9, 0xd5, 0xec, 0xcd, 0xd9, 0xd6, 0xec, 0xcd, 0xd9, 0xd6, 0xec, - 0xcd, 0xd9, 0xd6, 0xec, 0xcd, 0xd9, 0xd6, 0xec, 0xcd, 0xd9, 0xd7, 0xec, - 0xcd, 0xd9, 0xd7, 0xec, 0xcd, 0xd9, 0xd7, 0xec, 0xcd, 0xd9, 0xd7, 0xec, - 0xcd, 0xd9, 0xd8, 0xec, 0xcd, 0xd9, 0xd8, 0xec, 0xcd, 0xd9, 0xd8, 0xec, - 0xcd, 0xd9, 0xd9, 0xec, 0xcd, 0xd9, 0xd9, 0xec, 0xcd, 0xd9, 0xd9, 0xec, - 0xcd, 0xd9, 0xd9, 0xec, 0xcd, 0xd9, 0xda, 0xef, 0xe5, 0xd9, 0xda, 0xee, - 0xe5, 0xd9, 0xda, 0xef, 0xe5, 0xd9, 0xda, 0xee, 0xe5, 0xd9, 0xdb, 0xef, - 0xe5, 0xd9, 0xdb, 0xee, 0xe5, 0xd9, 0xdb, 0xef, 0xe5, 0xd9, 0xdb, 0xee, - 0xe5, 0xd9, 0xdc, 0xef, 0xe5, 0xd9, 0xdc, 0xee, 0xe5, 0xd9, 0xdc, 0xef, - 0xe5, 0xd9, 0xdd, 0xee, 0xe5, 0xd9, 0xdd, 0xef, 0xe5, 0xd9, 0xdd, 0xee, - 0xe5, 0xd9, 0xdd, 0xef, 0xe5, 0xd9, 0xde, 0xee, 0xe5, 0xd9, 0xde, 0xef, - 0xe5, 0xd9, 0xde, 0xee, 0xe5, 0xd9, 0xde, 0xef, 0xe5, 0xd9, 0xdf, 0xee, - 0xe5, 0xd9, 0xdf, 0xef, 0xe5, 0xd9, 0xdf, 0xee, 0xe5, 0xd9, 0xdf, 0xef, - 0xe5, 0xd9, 0xe0, 0xee, 0xe5, 0xd9, 0xe0, 0xef, 0xe5, 0xd9, 0xe0, 0xee, - 0xe5, 0xd9, 0xe1, 0xef, 0xe5, 0xd9, 0xe1, 0xee, 0xe5, 0xd9, 0xe1, 0xef, - 0xe5, 0xd9, 0xe1, 0xee, 0xe5, 0xd9, 0xe2, 0xed, 0xe6, 0xd9, 0xe2, 0xee, - 0xe5, 0xd9, 0xe2, 0xed, 0xe6, 0xd9, 0xe2, 0xee, 0xe5, 0xd9, 0xe3, 0xed, - 0xe6, 0xd9, 0xe3, 0xee, 0xe5, 0xd9, 0xe3, 0xed, 0xe6, 0xd9, 0xe3, 0xee, - 0xe5, 0xd9, 0xe4, 0xed, 0xe6, 0xd9, 0xe4, 0xee, 0xe5, 0xd9, 0xe4, 0xed, - 0xe6, 0xd9, 0xe4, 0xee, 0xe5, 0xd9, 0xe5, 0xed, 0xe6, 0xd9, 0xe5, 0xee, - 0xe5, 0xd9, 0xe5, 0xed, 0xe6, 0xd9, 0xe5, 0xee, 0xe5, 0xd9, 0xe5, 0xed, - 0xe6, 0xd9, 0xe5, 0xed, 0xe6, 0xd9, 0xe5, 0xed, 0xe6, 0xd9, 0xe5, 0xed, - 0xe6, 0xd9, 0xe8, 0xed, 0xe7, 0xd9, 0xe7, 0xed, 0xe7, 0xd9, 0xe8, 0xed, - 0xe7, 0xd9, 0xe7, 0xed, 0xe7, 0xd9, 0xe8, 0xed, 0xe7, 0xd9, 0xe8, 0xed, - 0xe7, 0xd9, 0xe8, 0xed, 0xe7, 0xd9, 0xe8, 0xec, 0xe7, 0xd9, 0xe9, 0xed, - 0xe7, 0xd9, 0xe9, 0xec, 0xe7, 0xd9, 0xe9, 0xec, 0xe9, 0xd9, 0xe9, 0xec, - 0xe9, 0xd9, 0xea, 0xec, 0xea, 0xd9, 0xea, 0xec, 0xeb, 0xd9, 0xea, 0xec, - 0xeb, 0xd9, 0xea, 0xec, 0xeb, 0xd9, 0xeb, 0xec, 0xeb, 0xd9, 0xeb, 0xec, - 0xeb, 0xd9, 0xeb, 0xec, 0xeb, 0xd9, 0xeb, 0xec, 0xeb, 0xd9, 0xec, 0xec, - 0xec, 0xd9, 0xec, 0xec, 0xec, 0xd9, 0xec, 0xec, 0xec, 0xd9, 0xec, 0xec, - 0xec, 0xd9, 0xec, 0xec, 0xed, 0xd9, 0xed, 0xec, 0xee, 0xd9, 0xed, 0xec, - 0xed, 0xd9, 0xed, 0xec, 0xee, 0xd9, 0xed, 0xec, 0xed, 0xd9, 0xee, 0xec, - 0xee, 0xd9, 0xee, 0xec, 0xee, 0xd9, 0xee, 0xec, 0xee, 0xd9, 0xee, 0xec, - 0xee, 0xd9, 0xef, 0xec, 0xef, 0xd9, 0xef, 0xec, 0xef, 0xd9, 0xef, 0xec, - 0xef, 0xd9, 0xef, 0xec, 0xef, 0xd9, 0xf0, 0xec, 0xf0, 0xd9, 0xf0, 0xed, - 0xf0, 0xd9, 0xf0, 0xed, 0xf1, 0xd9, 0xf0, 0xed, 0xf0, 0xd9, 0xf1, 0xed, - 0xf1, 0xd9, 0xf1, 0xed, 0xf1, 0xd9, 0xf1, 0xed, 0xf1, 0xd9, 0xf1, 0xed, - 0xf1, 0xd9, 0xf2, 0xed, 0xf1, 0xd9, 0xf2, 0xed, 0xf1, 0xd9, 0xf2, 0xed, - 0xf1, 0xd9, 0xf2, 0xec, 0xf1, 0xd9, 0xf2, 0xed, 0xf1, 0xd9, 0xf3, 0xec, - 0xf1, 0xd9, 0xf3, 0xed, 0xf1, 0xd9, 0xf3, 0xec, 0xf1, 0xd9, 0xf3, 0xed, - 0xf1, 0xd9, 0xf4, 0xec, 0xf1, 0xd9, 0xf4, 0xed, 0xf1, 0xd9, 0xf4, 0xec, - 0xf1, 0xd9, 0xf4, 0xed, 0xf1, 0xd9, 0xf5, 0xec, 0xf1, 0xd9, 0xf5, 0xed, - 0xf1, 0xd9, 0xf5, 0xec, 0xf1, 0xd9, 0xf5, 0xed, 0xf1, 0xd9, 0xf5, 0xec, - 0xf1, 0xd9, 0xf6, 0xed, 0xf1, 0xd9, 0xf6, 0xec, 0xf1, 0xd9, 0xf6, 0xed, - 0xf1, 0xd9, 0xf6, 0xec, 0xf1, 0xd9, 0xf7, 0xed, 0xf1, 0xd9, 0xf7, 0xec, - 0xf1, 0xd9, 0xf7, 0xed, 0xf1, 0xd9, 0xf7, 0xec, 0xf1, 0xd9, 0xf8, 0xed, - 0xf1, 0xd9, 0xf8, 0xec, 0xf1, 0xd9, 0xf8, 0xed, 0xf1, 0xd9, 0xf8, 0xec, - 0xf1, 0xd9, 0xf8, 0xed, 0xf1, 0xd9, 0xf9, 0xec, 0xf1, 0xd9, 0xf9, 0xed, - 0xf1, 0xd9, 0xf9, 0xec, 0xf1, 0xd9, 0xf9, 0xed, 0xf1, 0xd9, 0xfa, 0xec, - 0xf1, 0xd9, 0xfa, 0xed, 0xf1, 0xd9, 0xfa, 0xec, 0xf1, 0xd9, 0xfa, 0xed, - 0xf1, 0xd9, 0xfa, 0xec, 0xf1, 0xd9, 0xfb, 0xed, 0xf1, 0xd9, 0xfb, 0xec, - 0xf1, 0xd9, 0xfb, 0xed, 0xf1, 0xd9, 0xfb, 0xec, 0xf1, 0xd9, 0xfc, 0xed, - 0xf1, 0xd9, 0xfc, 0xec, 0xf1, 0xd9, 0xfc, 0xed, 0xf1, 0xd9, 0xfc, 0xec, - 0xf1, 0xd9, 0xfc, 0xed, 0xf1, 0xd9, 0xfd, 0xec, 0xf1, 0xd9, 0xfd, 0xed, - 0xf1, 0xd9, 0xfd, 0xec, 0xf1, 0xd9, 0xfd, 0xed, 0xf1, 0xd9, 0xfe, 0xec, - 0xf1, 0xd9, 0xfe, 0xed, 0xf1, 0xd9, 0xfe, 0xec, 0xf1, 0xd9, 0xfe, 0xed, - 0xf1, 0xd9, 0xfe, 0xec, 0xf1, 0xd9, 0xff, 0xec, 0xf1, 0xd9, 0xff, 0xec, - 0xf1, 0xd9, 0x03, 0xf2, 0x83, 0xd9, 0x0a, 0xf2, 0x83, 0xd9, 0x0f, 0xf2, - 0x83, 0xd9, 0x14, 0xf1, 0x84, 0xd9, 0x17, 0xf2, 0x83, 0xd9, 0x1b, 0xf1, - 0x84, 0xd9, 0x1e, 0xf2, 0x83, 0xd9, 0x20, 0xf1, 0x84, 0xd9, 0x23, 0xf2, - 0x83, 0xd9, 0x25, 0xf1, 0x84, 0xd9, 0x27, 0xf2, 0x83, 0xd9, 0x29, 0xf1, - 0x84, 0xd9, 0x2b, 0xf2, 0x83, 0xd9, 0x2d, 0xf1, 0x84, 0xd9, 0x2f, 0xf2, - 0x83, 0xd9, 0x31, 0xf1, 0x84, 0xd9, 0x32, 0xf2, 0x83, 0xd9, 0x34, 0xf1, - 0x84, 0xd9, 0x35, 0xf2, 0x83, 0xd9, 0x37, 0xf1, 0x84, 0xd9, 0x38, 0xf2, - 0x83, 0xd9, 0x3a, 0xf1, 0x84, 0xd9, 0x3b, 0xf2, 0x83, 0xd9, 0x3c, 0xf1, - 0x84, 0xd9, 0x3e, 0xf2, 0x83, 0xd9, 0x3f, 0xf1, 0x84, 0xd9, 0x40, 0xef, - 0x84, 0xd9, 0x42, 0xf1, 0x84, 0xd9, 0x43, 0xef, 0x84, 0xd9, 0x44, 0xf1, - 0x84, 0xd9, 0x45, 0xef, 0x84, 0xd9, 0x46, 0xf1, 0x84, 0xd9, 0x47, 0xef, - 0x84, 0xd9, 0x48, 0xf1, 0x84, 0xd9, 0x49, 0xef, 0x84, 0xd9, 0x4a, 0xf1, - 0x84, 0xd9, 0x4b, 0xef, 0x84, 0xd9, 0x4c, 0xf1, 0x84, 0xd9, 0x4d, 0xef, - 0x84, 0xd9, 0x4e, 0xf1, 0x84, 0xd9, 0x4f, 0xef, 0x84, 0xd9, 0x50, 0xf1, - 0x84, 0xd9, 0x51, 0xef, 0x84, 0xd9, 0x52, 0xf1, 0x84, 0xd9, 0x53, 0xef, - 0x84, 0xd9, 0x54, 0xf1, 0x84, 0xd9, 0x55, 0xef, 0x84, 0xd9, 0x56, 0xf1, - 0x84, 0xd9, 0x57, 0xef, 0x84, 0xd9, 0x58, 0xf1, 0x84, 0xd9, 0x58, 0xef, - 0x84, 0xd9, 0x59, 0xf1, 0x84, 0xd9, 0x5a, 0xef, 0x84, 0xd9, 0x5b, 0xf1, - 0x84, 0xd9, 0x5c, 0xef, 0x84, 0xd9, 0x5d, 0xf1, 0x84, 0xd9, 0x5d, 0xef, - 0x84, 0xd9, 0x5e, 0xf1, 0x84, 0xd9, 0x5f, 0xef, 0x84, 0xd9, 0x60, 0xf1, - 0x84, 0xd9, 0x60, 0xef, 0x84, 0xd9, 0x61, 0xf1, 0x84, 0xd9, 0x62, 0xef, - 0x84, 0xd9, 0x63, 0xf1, 0x84, 0xd9, 0x63, 0xef, 0x84, 0xd9, 0x64, 0xf1, - 0x84, 0xd9, 0x65, 0xef, 0x84, 0xd9, 0x66, 0xf1, 0x84, 0xd9, 0x66, 0xef, - 0x84, 0xd9, 0x67, 0xf1, 0x84, 0xd9, 0x68, 0xef, 0x84, 0xd9, 0x68, 0xee, - 0x85, 0xd9, 0x69, 0xef, 0x84, 0xd9, 0x6a, 0xee, 0x85, 0xd9, 0x6a, 0xef, - 0x84, 0xd9, 0x6b, 0xee, 0x85, 0xd9, 0x6c, 0xef, 0x84, 0xd9, 0x6c, 0xee, - 0x85, 0xd9, 0x6d, 0xef, 0x84, 0xd9, 0x6e, 0xee, 0x85, 0xd9, 0x6e, 0xef, - 0x84, 0xd9, 0x6f, 0xee, 0x85, 0xd9, 0x70, 0xef, 0x84, 0xd9, 0x70, 0xee, - 0x85, 0xd9, 0x71, 0xef, 0x84, 0xd9, 0x72, 0xee, 0x85, 0xd9, 0x72, 0xef, - 0x84, 0xd9, 0x73, 0xee, 0x85, 0xd9, 0x73, 0xef, 0x84, 0xd9, 0x74, 0xee, - 0x85, 0xd9, 0x75, 0xef, 0x84, 0xd9, 0x75, 0xee, 0x85, 0xd9, 0x76, 0xef, - 0x84, 0xd9, 0x76, 0xee, 0x85, 0xd9, 0x77, 0xef, 0x84, 0xd9, 0x78, 0xee, - 0x85, 0xd9, 0x78, 0xef, 0x84, 0xd9, 0x79, 0xee, 0x85, 0xd9, 0x79, 0xef, - 0x84, 0xd9, 0x7a, 0xee, 0x85, 0xd9, 0x7a, 0xef, 0x84, 0xd9, 0x7b, 0xee, - 0x85, 0xd9, 0x7c, 0xef, 0x84, 0xd9, 0x7c, 0xee, 0x85, 0xd9, 0x7d, 0xef, - 0x84, 0xd9, 0x7d, 0xee, 0x85, 0xd9, 0x7e, 0xef, 0x84, 0xd9, 0x7e, 0xee, - 0x85, 0xd9, 0x7f, 0xef, 0x84, 0xd9, 0x7f, 0xee, 0x85, 0xd9, 0x80, 0xef, - 0x84, 0xd9, 0x81, 0xee, 0x85, 0xd9, 0x81, 0xee, 0x85, 0xd9, 0x82, 0xee, - 0x85, 0xd9, 0x82, 0xee, 0x85, 0xd9, 0x83, 0xee, 0x85, 0xd9, 0x83, 0xee, - 0x85, 0xd9, 0x84, 0xee, 0x85, 0xd9, 0x84, 0xee, 0x85, 0xd9, 0x85, 0xee, - 0x85, 0xd8, 0x84, 0xee, 0x85, 0xd9, 0x85, 0xee, 0x86, 0xd8, 0x84, 0xee, - 0x86, 0xd9, 0x85, 0xee, 0x87, 0xd8, 0x84, 0xee, 0x87, 0xd9, 0x85, 0xee, - 0x88, 0xd8, 0x84, 0xee, 0x88, 0xd9, 0x85, 0xee, 0x89, 0xd8, 0x84, 0xee, - 0x89, 0xd9, 0x85, 0xee, 0x8a, 0xd8, 0x84, 0xee, 0x8a, 0xd9, 0x85, 0xee, - 0x8b, 0xd8, 0x84, 0xee, 0x8b, 0xd9, 0x85, 0xee, 0x8c, 0xd8, 0x84, 0xee, - 0x8c, 0xd9, 0x85, 0xee, 0x8d, 0xd8, 0x85, 0xee, 0x8d, 0xd5, 0x85, 0xee, - 0x8e, 0xd8, 0x85, 0xee, 0x8e, 0xd5, 0x85, 0xee, 0x8e, 0xd8, 0x85, 0xee, - 0x8f, 0xd5, 0x85, 0xee, 0x8f, 0xd8, 0x85, 0xee, 0x90, 0xd5, 0x85, 0xee, - 0x90, 0xd8, 0x85, 0xee, 0x91, 0xd5, 0x85, 0xee, 0x91, 0xd8, 0x85, 0xee, - 0x92, 0xd5, 0x85, 0xee, 0x92, 0xd8, 0x85, 0xee, 0x93, 0xd5, 0x85, 0xee, - 0x93, 0xd8, 0x85, 0xee, 0x94, 0xd5, 0x85, 0xee, 0x94, 0xd8, 0x85, 0xee, - 0x94, 0xd5, 0x85, 0xee, 0x95, 0xd8, 0x94, 0xee, 0x95, 0xea, 0x94, 0xee, - 0x96, 0xea, 0x94, 0xee, 0x96, 0xea, 0x94, 0xee, 0x97, 0xea, 0x94, 0xee, - 0x97, 0xea, 0x94, 0xee, 0x98, 0xea, 0x94, 0xee, 0x98, 0xea, 0x94, 0xee, - 0x98, 0xea, 0x94, 0xee, 0x99, 0xea, 0x99, 0xee, 0x99, 0xeb, 0x94, 0xee, - 0x9a, 0xea, 0x99, 0xee, 0x9a, 0xeb, 0x99, 0xee, 0x9a, 0xeb, 0x99, 0xee, - 0x9b, 0xeb, 0x99, 0xee, 0x9b, 0xeb, 0x99, 0xee, 0x9c, 0xeb, 0x99, 0xee, - 0x9c, 0xeb, 0x99, 0xee, 0x9d, 0xeb, 0x99, 0xee, 0x9d, 0xeb, 0x99, 0xee, - 0x9d, 0xeb, 0x99, 0xee, 0x9e, 0xeb, 0x99, 0xee, 0x9e, 0xeb, 0x9e, 0xee, - 0x9f, 0xec, 0x9d, 0xee, 0x9f, 0xec, 0x9e, 0xee, 0x9f, 0xec, 0x9d, 0xee, - 0xa0, 0xec, 0x9e, 0xee, 0xa0, 0xec, 0x9d, 0xee, 0xa1, 0xec, 0x9e, 0xee, - 0xa1, 0xec, 0x9d, 0xee, 0xa1, 0xec, 0x9e, 0xee, 0xa2, 0xec, 0x9d, 0xee, - 0xa2, 0xec, 0x9e, 0xee, 0xa3, 0xec, 0xa2, 0xee, 0xa3, 0xed, 0xa2, 0xee, - 0xa3, 0xed, 0xa2, 0xee, 0xa4, 0xed, 0xa2, 0xee, 0xa4, 0xed, 0xa2, 0xee, - 0xa5, 0xed, 0xa2, 0xee, 0xa5, 0xed, 0xa2, 0xee, 0xa5, 0xed, 0xa2, 0xee, - 0xa6, 0xed, 0xa2, 0xee, 0xa6, 0xed, 0xa2, 0xee, 0xa6, 0xed, 0xa2, 0xee, - 0xa7, 0xed, 0xa6, 0xee, 0xa7, 0xee, 0xa6, 0xee, 0xa8, 0xee, 0xa6, 0xee, - 0xa8, 0xee, 0xa6, 0xee, 0xa8, 0xee, 0xa6, 0xee, 0xa9, 0xee, 0xa6, 0xee, - 0xa9, 0xee, 0xa6, 0xee, 0xaa, 0xee, 0xa6, 0xee, 0xaa, 0xee, 0xa6, 0xee, - 0xaa, 0xee, 0xa6, 0xee, 0xab, 0xee, 0xa6, 0xee, 0xab, 0xee, 0xab, 0xee, - 0xab, 0xef, 0xaa, 0xee, 0xac, 0xef, 0xab, 0xee, 0xac, 0xef, 0xaa, 0xee, - 0xac, 0xef, 0xab, 0xee, 0xad, 0xef, 0xaa, 0xee, 0xad, 0xef, 0xab, 0xee, - 0xae, 0xef, 0xaa, 0xee, 0xae, 0xef, 0xab, 0xee, 0xae, 0xef, 0xaa, 0xee, - 0xaf, 0xef, 0xab, 0xee, 0xaf, 0xef, 0xaf, 0xee, 0xaf, 0xf0, 0xae, 0xee, - 0xb0, 0xf0, 0xaf, 0xee, 0xb0, 0xf0, 0xae, 0xee, 0xb0, 0xf0, 0xaf, 0xee, - 0xb1, 0xf0, 0xae, 0xee, 0xb1, 0xf0, 0xaf, 0xee, 0xb2, 0xf0, 0xae, 0xee, - 0xb2, 0xf0, 0xaf, 0xee, 0xb2, 0xf0, 0xae, 0xee, 0xb3, 0xf0, 0xaf, 0xee, - 0xb3, 0xf0, 0xb3, 0xee, 0xb3, 0xf1, 0xaf, 0xee, 0xb4, 0xf0, 0xb3, 0xee, - 0xb4, 0xf1, 0xb2, 0xee, 0xb4, 0xf1, 0xb3, 0xee, 0xb5, 0xf1, 0xb2, 0xee, - 0xb5, 0xf1, 0xb3, 0xee, 0xb5, 0xf1, 0xb2, 0xee, 0xb6, 0xf1, 0xb3, 0xee, - 0xb6, 0xf1, 0xb2, 0xee, 0xb6, 0xf1, 0xb3, 0xee, 0xb7, 0xf1, 0xb2, 0xee, - 0xb7, 0xf1, 0xb3, 0xee, 0xb7, 0xf1, 0xb6, 0xee, 0xb8, 0xf2, 0xb6, 0xee, - 0xb8, 0xf2, 0xb6, 0xee, 0xb8, 0xf2, 0xb6, 0xee, 0xb9, 0xf2, 0xb6, 0xee, - 0xb9, 0xf2, 0xb6, 0xee, 0xb9, 0xf2, 0xb6, 0xee, 0xba, 0xf2, 0xb6, 0xee, - 0xba, 0xf2, 0xb6, 0xee, 0xba, 0xf2, 0xb6, 0xee, 0xbb, 0xf2, 0xb6, 0xee, - 0xbb, 0xf2, 0xba, 0xee, 0xbb, 0xf3, 0xba, 0xee, 0xbc, 0xf3, 0xba, 0xee, - 0xbc, 0xf3, 0xcc, 0xee, 0xbc, 0xe0, 0xcc, 0xee, 0xbd, 0xdd, 0xcc, 0xee, - 0xbd, 0xe0, 0xcc, 0xee, 0xbd, 0xdd, 0xcc, 0xee, 0xbe, 0xe0, 0xcc, 0xee, - 0xbe, 0xdd, 0xcc, 0xee, 0xbe, 0xe0, 0xcc, 0xee, 0xbf, 0xdd, 0xcc, 0xee, - 0xbf, 0xdb, 0xcc, 0xee, 0xbf, 0xdd, 0xcc, 0xee, 0xc0, 0xdb, 0xcc, 0xee, - 0xc0, 0xdd, 0xcc, 0xee, 0xc0, 0xdb, 0xcc, 0xee, 0xc1, 0xdd, 0xcc, 0xee, - 0xc1, 0xdb, 0xcc, 0xee, 0xc1, 0xdd, 0xcc, 0xee, 0xc1, 0xdb, 0xcc, 0xee, - 0xc2, 0xdd, 0xcc, 0xee, 0xc2, 0xdb, 0xcc, 0xee, 0xc2, 0xdd, 0xcc, 0xee, - 0xc3, 0xdb, 0xcc, 0xee, 0xc3, 0xdd, 0xcc, 0xee, 0xc3, 0xdb, 0xcc, 0xee, - 0xc4, 0xdd, 0xcc, 0xee, 0xc4, 0xdb, 0xcc, 0xee, 0xc4, 0xdd, 0xcc, 0xee, - 0xc5, 0xdb, 0xcc, 0xee, 0xc5, 0xdd, 0xcc, 0xee, 0xc5, 0xdb, 0xcc, 0xee, - 0xc6, 0xdd, 0xcc, 0xee, 0xc6, 0xdb, 0xcc, 0xee, 0xc6, 0xdd, 0xcc, 0xee, - 0xc6, 0xdb, 0xcc, 0xee, 0xc7, 0xdd, 0xcc, 0xee, 0xc7, 0xdb, 0xcc, 0xee, - 0xc7, 0xdd, 0xcc, 0xee, 0xc8, 0xdb, 0xcd, 0xee, 0xc8, 0xd9, 0xcc, 0xee, - 0xc8, 0xdb, 0xcd, 0xee, 0xc9, 0xd9, 0xcc, 0xee, 0xc9, 0xdb, 0xcd, 0xee, - 0xc9, 0xd9, 0xcc, 0xee, 0xc9, 0xdb, 0xcd, 0xee, 0xca, 0xd9, 0xcc, 0xee, - 0xca, 0xdb, 0xcd, 0xee, 0xca, 0xd9, 0xcc, 0xee, 0xcb, 0xdb, 0xcd, 0xee, - 0xcb, 0xd9, 0xcc, 0xee, 0xcb, 0xdb, 0xcd, 0xee, 0xcc, 0xd9, 0xcd, 0xee, - 0xcc, 0xd9, 0xcd, 0xee, 0xcc, 0xd9, 0xcd, 0xee, 0xcc, 0xd9, 0xcd, 0xee, - 0xcc, 0xd9, 0xcd, 0xee, 0xcc, 0xd9, 0xcd, 0xee, 0xcc, 0xd9, 0xce, 0xee, - 0xcc, 0xd9, 0xce, 0xed, 0xcd, 0xd9, 0xce, 0xee, 0xcc, 0xd9, 0xce, 0xed, - 0xcd, 0xd9, 0xcf, 0xee, 0xcc, 0xd9, 0xcf, 0xed, 0xcd, 0xd9, 0xcf, 0xee, - 0xcc, 0xd9, 0xd0, 0xed, 0xcd, 0xd9, 0xd0, 0xee, 0xcc, 0xd9, 0xd0, 0xed, - 0xcd, 0xd9, 0xd0, 0xee, 0xcc, 0xd9, 0xd1, 0xed, 0xcd, 0xd9, 0xd1, 0xee, - 0xcc, 0xd9, 0xd1, 0xed, 0xcd, 0xd9, 0xd2, 0xee, 0xcc, 0xd9, 0xd2, 0xed, - 0xcd, 0xd9, 0xd2, 0xee, 0xcc, 0xd9, 0xd2, 0xed, 0xcd, 0xd9, 0xd3, 0xee, - 0xcc, 0xd9, 0xd3, 0xed, 0xcd, 0xd9, 0xd3, 0xee, 0xcc, 0xd9, 0xd4, 0xed, - 0xcd, 0xd9, 0xd4, 0xeb, 0xcd, 0xd9, 0xd4, 0xed, 0xcd, 0xd9, 0xd4, 0xeb, - 0xcd, 0xd9, 0xd5, 0xed, 0xcd, 0xd9, 0xd5, 0xeb, 0xcd, 0xd9, 0xd5, 0xed, - 0xcd, 0xd9, 0xd6, 0xeb, 0xcd, 0xd9, 0xd6, 0xed, 0xcd, 0xd9, 0xd6, 0xeb, - 0xcd, 0xd9, 0xd6, 0xed, 0xcd, 0xd9, 0xd7, 0xeb, 0xcd, 0xd9, 0xd7, 0xed, - 0xcd, 0xd9, 0xd7, 0xeb, 0xcd, 0xd9, 0xd7, 0xed, 0xcd, 0xd9, 0xd8, 0xeb, - 0xcd, 0xd9, 0xd8, 0xed, 0xcd, 0xd9, 0xd8, 0xeb, 0xcd, 0xd9, 0xd9, 0xed, - 0xcd, 0xd9, 0xd9, 0xeb, 0xcd, 0xd9, 0xd9, 0xed, 0xcd, 0xd9, 0xd9, 0xeb, - 0xcd, 0xd9, 0xda, 0xef, 0xe5, 0xd9, 0xda, 0xf1, 0xe5, 0xd9, 0xda, 0xef, - 0xe5, 0xd9, 0xda, 0xf1, 0xe5, 0xd9, 0xdb, 0xef, 0xe5, 0xd9, 0xdb, 0xf1, - 0xe5, 0xd9, 0xdb, 0xef, 0xe5, 0xd9, 0xdb, 0xf1, 0xe5, 0xd9, 0xdc, 0xef, - 0xe5, 0xd9, 0xdc, 0xee, 0xe5, 0xd9, 0xdc, 0xef, 0xe5, 0xd9, 0xdd, 0xee, - 0xe5, 0xd9, 0xdd, 0xef, 0xe5, 0xd9, 0xdd, 0xee, 0xe5, 0xd9, 0xdd, 0xef, - 0xe5, 0xd9, 0xde, 0xee, 0xe5, 0xd9, 0xde, 0xef, 0xe5, 0xd9, 0xde, 0xee, - 0xe5, 0xd9, 0xde, 0xef, 0xe5, 0xd9, 0xdf, 0xee, 0xe5, 0xd9, 0xdf, 0xef, - 0xe5, 0xd9, 0xdf, 0xee, 0xe5, 0xd9, 0xdf, 0xef, 0xe5, 0xd9, 0xe0, 0xee, - 0xe5, 0xd9, 0xe0, 0xef, 0xe5, 0xd9, 0xe0, 0xee, 0xe5, 0xd9, 0xe1, 0xef, - 0xe5, 0xd9, 0xe1, 0xee, 0xe5, 0xd9, 0xe1, 0xef, 0xe5, 0xd9, 0xe1, 0xee, - 0xe5, 0xd9, 0xe2, 0xef, 0xe5, 0xd9, 0xe2, 0xee, 0xe5, 0xd9, 0xe2, 0xef, - 0xe5, 0xd9, 0xe2, 0xee, 0xe5, 0xd9, 0xe3, 0xef, 0xe5, 0xd9, 0xe3, 0xee, - 0xe5, 0xd9, 0xe3, 0xef, 0xe5, 0xd9, 0xe3, 0xee, 0xe5, 0xd9, 0xe4, 0xee, - 0xe6, 0xd9, 0xe4, 0xee, 0xe5, 0xd9, 0xe4, 0xee, 0xe6, 0xd9, 0xe4, 0xee, - 0xe5, 0xd9, 0xe5, 0xee, 0xe6, 0xd9, 0xe5, 0xee, 0xe5, 0xd9, 0xe5, 0xee, - 0xe6, 0xd9, 0xe5, 0xee, 0xe5, 0xd9, 0xe5, 0xee, 0xe6, 0xd9, 0xe5, 0xee, - 0xe6, 0xd9, 0xe5, 0xee, 0xe6, 0xd9, 0xe5, 0xee, 0xe6, 0xd9, 0xe7, 0xee, - 0xe7, 0xda, 0xe7, 0xee, 0xe7, 0xd9, 0xe8, 0xee, 0xe7, 0xd9, 0xe7, 0xee, - 0xe7, 0xd9, 0xe8, 0xee, 0xe7, 0xd9, 0xe8, 0xee, 0xe7, 0xd9, 0xe8, 0xee, - 0xe7, 0xd9, 0xe8, 0xed, 0xe7, 0xd9, 0xe9, 0xee, 0xe7, 0xd9, 0xe9, 0xed, - 0xe7, 0xd9, 0xe9, 0xee, 0xe7, 0xd9, 0xe9, 0xec, 0xe9, 0xd9, 0xea, 0xec, - 0xea, 0xd9, 0xea, 0xec, 0xea, 0xd9, 0xea, 0xec, 0xea, 0xd9, 0xea, 0xec, - 0xea, 0xd9, 0xeb, 0xec, 0xeb, 0xd9, 0xeb, 0xec, 0xeb, 0xd9, 0xeb, 0xec, - 0xec, 0xd9, 0xeb, 0xec, 0xec, 0xd9, 0xec, 0xec, 0xec, 0xd9, 0xec, 0xec, - 0xec, 0xd9, 0xec, 0xec, 0xec, 0xd9, 0xec, 0xec, 0xec, 0xd9, 0xec, 0xec, - 0xec, 0xd9, 0xed, 0xec, 0xed, 0xd9, 0xed, 0xec, 0xed, 0xd9, 0xed, 0xec, - 0xed, 0xd9, 0xed, 0xec, 0xed, 0xd9, 0xee, 0xec, 0xee, 0xd9, 0xee, 0xed, - 0xef, 0xd9, 0xee, 0xed, 0xef, 0xd9, 0xee, 0xed, 0xef, 0xd9, 0xef, 0xed, - 0xef, 0xd9, 0xef, 0xed, 0xef, 0xd9, 0xef, 0xed, 0xef, 0xd9, 0xef, 0xed, - 0xef, 0xd9, 0xf0, 0xed, 0xf0, 0xd9, 0xf0, 0xed, 0xf0, 0xd9, 0xf0, 0xed, - 0xf0, 0xd9, 0xf0, 0xee, 0xf1, 0xd9, 0xf1, 0xee, 0xf1, 0xd9, 0xf1, 0xee, - 0xf1, 0xd8, 0xf1, 0xee, 0xf1, 0xd9, 0xf1, 0xee, 0xf1, 0xd9, 0xf2, 0xee, - 0xf1, 0xd9, 0xf2, 0xee, 0xf1, 0xd9, 0xf2, 0xee, 0xf1, 0xd9, 0xf2, 0xee, - 0xf1, 0xd9, 0xf2, 0xee, 0xf1, 0xd9, 0xf3, 0xee, 0xf1, 0xd9, 0xf3, 0xee, - 0xf1, 0xd9, 0xf3, 0xec, 0xf1, 0xd9, 0xf3, 0xee, 0xf1, 0xd9, 0xf4, 0xec, - 0xf1, 0xd9, 0xf4, 0xee, 0xf1, 0xd9, 0xf4, 0xec, 0xf1, 0xd9, 0xf4, 0xee, - 0xf1, 0xd9, 0xf5, 0xec, 0xf1, 0xd9, 0xf5, 0xee, 0xf1, 0xd9, 0xf5, 0xec, - 0xf1, 0xd9, 0xf5, 0xee, 0xf1, 0xd9, 0xf5, 0xec, 0xf1, 0xd9, 0xf6, 0xee, - 0xf1, 0xd9, 0xf6, 0xec, 0xf1, 0xd9, 0xf6, 0xee, 0xf1, 0xd9, 0xf6, 0xec, - 0xf1, 0xd9, 0xf7, 0xee, 0xf1, 0xd9, 0xf7, 0xec, 0xf1, 0xd9, 0xf7, 0xee, - 0xf1, 0xd9, 0xf7, 0xec, 0xf1, 0xd9, 0xf8, 0xee, 0xf1, 0xd9, 0xf8, 0xec, - 0xf1, 0xd9, 0xf8, 0xee, 0xf1, 0xd9, 0xf8, 0xec, 0xf1, 0xd9, 0xf8, 0xee, - 0xf1, 0xd9, 0xf9, 0xec, 0xf1, 0xd9, 0xf9, 0xee, 0xf1, 0xd9, 0xf9, 0xec, - 0xf1, 0xd9, 0xf9, 0xee, 0xf1, 0xd9, 0xfa, 0xec, 0xf1, 0xd9, 0xfa, 0xee, - 0xf1, 0xd9, 0xfa, 0xec, 0xf1, 0xd9, 0xfa, 0xee, 0xf1, 0xd9, 0xfa, 0xec, - 0xf1, 0xd9, 0xfb, 0xee, 0xf1, 0xd9, 0xfb, 0xec, 0xf1, 0xd9, 0xfb, 0xee, - 0xf1, 0xd9, 0xfb, 0xec, 0xf1, 0xd9, 0xfc, 0xee, 0xf1, 0xd9, 0xfc, 0xec, - 0xf1, 0xd9, 0xfc, 0xee, 0xf1, 0xd9, 0xfc, 0xec, 0xf1, 0xd9, 0xfc, 0xee, - 0xf1, 0xd9, 0xfd, 0xec, 0xf1, 0xd9, 0xfd, 0xee, 0xf1, 0xd9, 0xfd, 0xec, - 0xf1, 0xd9, 0xfd, 0xee, 0xf1, 0xd9, 0xfe, 0xec, 0xf1, 0xd9, 0xfe, 0xee, - 0xf1, 0xd9, 0xfe, 0xec, 0xf1, 0xd9, 0xfe, 0xee, 0xf1, 0xd9, 0xfe, 0xec, - 0xf1, 0xd9, 0xff, 0xec, 0xf1, 0xd9, 0xff, 0xec, 0xf1, 0xd9, 0x03, 0xf3, - 0x83, 0xda, 0x0a, 0xf1, 0x84, 0xda, 0x0f, 0xf3, 0x83, 0xda, 0x14, 0xf1, - 0x84, 0xda, 0x17, 0xf3, 0x83, 0xda, 0x1b, 0xf1, 0x84, 0xda, 0x1e, 0xf3, - 0x83, 0xda, 0x20, 0xf1, 0x84, 0xda, 0x23, 0xf3, 0x83, 0xda, 0x25, 0xf1, - 0x84, 0xda, 0x27, 0xf3, 0x83, 0xda, 0x29, 0xf1, 0x84, 0xda, 0x2b, 0xf3, - 0x83, 0xda, 0x2d, 0xf1, 0x84, 0xda, 0x2f, 0xf3, 0x83, 0xda, 0x31, 0xf1, - 0x84, 0xda, 0x32, 0xf3, 0x83, 0xda, 0x34, 0xf1, 0x84, 0xda, 0x35, 0xf3, - 0x83, 0xda, 0x37, 0xf1, 0x84, 0xda, 0x38, 0xf3, 0x83, 0xda, 0x3a, 0xf1, - 0x84, 0xda, 0x3b, 0xf3, 0x83, 0xda, 0x3c, 0xf1, 0x84, 0xda, 0x3e, 0xf3, - 0x83, 0xda, 0x3f, 0xf1, 0x84, 0xda, 0x40, 0xef, 0x84, 0xda, 0x42, 0xf1, - 0x84, 0xda, 0x43, 0xef, 0x84, 0xda, 0x44, 0xf1, 0x84, 0xda, 0x45, 0xef, - 0x84, 0xda, 0x46, 0xf1, 0x84, 0xda, 0x47, 0xef, 0x84, 0xda, 0x48, 0xf1, - 0x84, 0xda, 0x49, 0xef, 0x84, 0xda, 0x4a, 0xf1, 0x84, 0xda, 0x4b, 0xef, - 0x84, 0xda, 0x4c, 0xf1, 0x84, 0xda, 0x4d, 0xef, 0x84, 0xda, 0x4e, 0xf1, - 0x84, 0xda, 0x4f, 0xef, 0x84, 0xda, 0x50, 0xf1, 0x84, 0xda, 0x51, 0xef, - 0x84, 0xda, 0x52, 0xf1, 0x84, 0xda, 0x53, 0xef, 0x84, 0xda, 0x54, 0xf1, - 0x84, 0xda, 0x55, 0xef, 0x84, 0xda, 0x56, 0xf1, 0x84, 0xda, 0x57, 0xef, - 0x84, 0xda, 0x58, 0xf1, 0x84, 0xda, 0x58, 0xef, 0x84, 0xda, 0x59, 0xf1, - 0x84, 0xda, 0x5a, 0xef, 0x84, 0xda, 0x5b, 0xf1, 0x84, 0xda, 0x5c, 0xef, - 0x84, 0xda, 0x5d, 0xf1, 0x84, 0xda, 0x5d, 0xef, 0x84, 0xda, 0x5e, 0xf1, - 0x84, 0xda, 0x5f, 0xef, 0x84, 0xda, 0x60, 0xf1, 0x84, 0xda, 0x60, 0xef, - 0x84, 0xda, 0x61, 0xf1, 0x84, 0xda, 0x62, 0xef, 0x84, 0xda, 0x63, 0xf1, - 0x84, 0xda, 0x63, 0xef, 0x84, 0xda, 0x64, 0xf1, 0x84, 0xda, 0x65, 0xef, - 0x84, 0xda, 0x66, 0xf1, 0x84, 0xda, 0x66, 0xef, 0x84, 0xda, 0x67, 0xf1, - 0x84, 0xda, 0x68, 0xef, 0x84, 0xda, 0x68, 0xf1, 0x84, 0xda, 0x69, 0xef, - 0x84, 0xda, 0x6a, 0xf1, 0x84, 0xda, 0x6a, 0xef, 0x84, 0xda, 0x6b, 0xf1, - 0x84, 0xda, 0x6c, 0xef, 0x84, 0xda, 0x6c, 0xf1, 0x84, 0xda, 0x6d, 0xef, - 0x84, 0xda, 0x6e, 0xf1, 0x84, 0xda, 0x6e, 0xef, 0x84, 0xda, 0x6f, 0xf1, - 0x84, 0xda, 0x70, 0xef, 0x84, 0xda, 0x70, 0xee, 0x85, 0xda, 0x71, 0xef, - 0x84, 0xda, 0x72, 0xee, 0x85, 0xda, 0x72, 0xef, 0x84, 0xda, 0x73, 0xee, - 0x85, 0xda, 0x73, 0xef, 0x84, 0xda, 0x74, 0xee, 0x85, 0xda, 0x75, 0xef, - 0x84, 0xda, 0x75, 0xee, 0x85, 0xda, 0x76, 0xef, 0x84, 0xda, 0x76, 0xee, - 0x85, 0xda, 0x77, 0xef, 0x84, 0xda, 0x78, 0xee, 0x85, 0xda, 0x78, 0xef, - 0x84, 0xda, 0x79, 0xee, 0x85, 0xda, 0x79, 0xef, 0x84, 0xda, 0x7a, 0xee, - 0x85, 0xda, 0x7a, 0xef, 0x84, 0xda, 0x7b, 0xee, 0x85, 0xda, 0x7c, 0xef, - 0x84, 0xda, 0x7c, 0xee, 0x85, 0xda, 0x7d, 0xef, 0x84, 0xda, 0x7d, 0xee, - 0x85, 0xda, 0x7e, 0xef, 0x84, 0xda, 0x7e, 0xee, 0x85, 0xda, 0x7f, 0xef, - 0x84, 0xda, 0x7f, 0xee, 0x85, 0xda, 0x80, 0xef, 0x84, 0xda, 0x81, 0xee, - 0x85, 0xda, 0x81, 0xee, 0x85, 0xda, 0x82, 0xee, 0x85, 0xda, 0x82, 0xee, - 0x85, 0xda, 0x83, 0xee, 0x85, 0xda, 0x83, 0xee, 0x85, 0xda, 0x84, 0xee, - 0x85, 0xda, 0x84, 0xee, 0x85, 0xda, 0x85, 0xee, 0x85, 0xd9, 0x84, 0xee, - 0x85, 0xda, 0x85, 0xee, 0x86, 0xd9, 0x84, 0xee, 0x86, 0xda, 0x85, 0xee, - 0x87, 0xd9, 0x84, 0xee, 0x87, 0xda, 0x85, 0xee, 0x88, 0xd9, 0x84, 0xee, - 0x88, 0xda, 0x85, 0xee, 0x89, 0xd9, 0x84, 0xee, 0x89, 0xda, 0x85, 0xee, - 0x8a, 0xd9, 0x84, 0xee, 0x8a, 0xda, 0x85, 0xee, 0x8b, 0xd9, 0x84, 0xee, - 0x8b, 0xda, 0x85, 0xee, 0x8c, 0xd9, 0x84, 0xee, 0x8c, 0xda, 0x85, 0xee, - 0x8d, 0xd9, 0x84, 0xee, 0x8d, 0xda, 0x85, 0xee, 0x8e, 0xd9, 0x84, 0xee, - 0x8e, 0xda, 0x85, 0xee, 0x8e, 0xd9, 0x84, 0xee, 0x8f, 0xda, 0x85, 0xee, - 0x8f, 0xd9, 0x84, 0xee, 0x90, 0xda, 0x85, 0xee, 0x90, 0xd9, 0x85, 0xee, - 0x91, 0xd5, 0x85, 0xee, 0x91, 0xd9, 0x85, 0xee, 0x92, 0xd5, 0x85, 0xee, - 0x92, 0xd9, 0x85, 0xee, 0x93, 0xd5, 0x85, 0xee, 0x93, 0xd9, 0x85, 0xee, - 0x94, 0xd5, 0x85, 0xee, 0x94, 0xd9, 0x92, 0xee, 0x94, 0xea, 0x91, 0xee, - 0x95, 0xea, 0x92, 0xee, 0x95, 0xea, 0x91, 0xee, 0x96, 0xea, 0x92, 0xee, - 0x96, 0xea, 0x97, 0xee, 0x97, 0xeb, 0x96, 0xee, 0x97, 0xeb, 0x97, 0xee, - 0x98, 0xeb, 0x96, 0xee, 0x98, 0xeb, 0x97, 0xee, 0x98, 0xeb, 0x96, 0xee, - 0x99, 0xeb, 0x97, 0xee, 0x99, 0xeb, 0x96, 0xee, 0x9a, 0xeb, 0x97, 0xee, - 0x9a, 0xeb, 0x96, 0xee, 0x9a, 0xeb, 0x97, 0xee, 0x9b, 0xeb, 0x9b, 0xee, - 0x9b, 0xec, 0x97, 0xee, 0x9c, 0xeb, 0x9b, 0xee, 0x9c, 0xec, 0x9b, 0xee, - 0x9d, 0xec, 0x9b, 0xee, 0x9d, 0xec, 0x9b, 0xee, 0x9d, 0xec, 0x9b, 0xee, - 0x9e, 0xec, 0x9b, 0xee, 0x9e, 0xec, 0x9b, 0xee, 0x9f, 0xec, 0x9b, 0xee, - 0x9f, 0xec, 0x9b, 0xee, 0x9f, 0xec, 0x9b, 0xee, 0xa0, 0xec, 0x9b, 0xee, - 0xa0, 0xec, 0xa0, 0xee, 0xa1, 0xed, 0x9f, 0xee, 0xa1, 0xed, 0xa0, 0xee, - 0xa1, 0xed, 0x9f, 0xee, 0xa2, 0xed, 0xa0, 0xee, 0xa2, 0xed, 0x9f, 0xee, - 0xa3, 0xed, 0xa0, 0xee, 0xa3, 0xed, 0x9f, 0xee, 0xa3, 0xed, 0xa0, 0xee, - 0xa4, 0xed, 0x9f, 0xee, 0xa4, 0xed, 0xa0, 0xee, 0xa5, 0xed, 0xa4, 0xee, - 0xa5, 0xee, 0xa4, 0xee, 0xa5, 0xee, 0xa4, 0xee, 0xa6, 0xee, 0xa4, 0xee, - 0xa6, 0xee, 0xa4, 0xee, 0xa6, 0xee, 0xa4, 0xee, 0xa7, 0xee, 0xa4, 0xee, - 0xa7, 0xee, 0xa4, 0xee, 0xa8, 0xee, 0xa4, 0xee, 0xa8, 0xee, 0xa4, 0xee, - 0xa8, 0xee, 0xa4, 0xee, 0xa9, 0xee, 0xa8, 0xee, 0xa9, 0xef, 0xa8, 0xee, - 0xaa, 0xef, 0xa8, 0xee, 0xaa, 0xef, 0xa8, 0xee, 0xaa, 0xef, 0xa8, 0xee, - 0xab, 0xef, 0xa8, 0xee, 0xab, 0xef, 0xa8, 0xee, 0xab, 0xef, 0xa8, 0xee, - 0xac, 0xef, 0xa8, 0xee, 0xac, 0xef, 0xa8, 0xee, 0xac, 0xef, 0xa8, 0xee, - 0xad, 0xef, 0xac, 0xee, 0xad, 0xf0, 0xac, 0xee, 0xae, 0xf0, 0xac, 0xee, - 0xae, 0xf0, 0xac, 0xee, 0xae, 0xf0, 0xac, 0xee, 0xaf, 0xf0, 0xac, 0xee, - 0xaf, 0xf0, 0xac, 0xee, 0xaf, 0xf0, 0xac, 0xee, 0xb0, 0xf0, 0xac, 0xee, - 0xb0, 0xf0, 0xac, 0xee, 0xb0, 0xf0, 0xac, 0xee, 0xb1, 0xf0, 0xb0, 0xee, - 0xb1, 0xf1, 0xb0, 0xee, 0xb2, 0xf1, 0xb0, 0xee, 0xb2, 0xf1, 0xb0, 0xee, - 0xb2, 0xf1, 0xb0, 0xee, 0xb3, 0xf1, 0xb0, 0xee, 0xb3, 0xf1, 0xb0, 0xee, - 0xb3, 0xf1, 0xb0, 0xee, 0xb4, 0xf1, 0xb0, 0xee, 0xb4, 0xf1, 0xb0, 0xee, - 0xb4, 0xf1, 0xb0, 0xee, 0xb5, 0xf1, 0xb4, 0xee, 0xb5, 0xf2, 0xb0, 0xee, - 0xb5, 0xf1, 0xb4, 0xee, 0xb6, 0xf2, 0xb4, 0xee, 0xb6, 0xf2, 0xb4, 0xee, - 0xb6, 0xf2, 0xb4, 0xee, 0xb7, 0xf2, 0xb4, 0xee, 0xb7, 0xf2, 0xb4, 0xee, - 0xb7, 0xf2, 0xb4, 0xee, 0xb8, 0xf2, 0xb4, 0xee, 0xb8, 0xf2, 0xb4, 0xee, - 0xb8, 0xf2, 0xb4, 0xee, 0xb9, 0xf2, 0xb4, 0xee, 0xb9, 0xf2, 0xb8, 0xee, - 0xb9, 0xf3, 0xb8, 0xee, 0xba, 0xf3, 0xb8, 0xee, 0xba, 0xf3, 0xb8, 0xee, - 0xba, 0xf3, 0xb8, 0xee, 0xbb, 0xf3, 0xb8, 0xee, 0xbb, 0xf3, 0xb8, 0xee, - 0xbb, 0xf3, 0xb8, 0xee, 0xbc, 0xf3, 0xb8, 0xee, 0xbc, 0xf3, 0xb8, 0xee, - 0xbc, 0xf3, 0xcc, 0xee, 0xbd, 0xde, 0xcc, 0xee, 0xbd, 0xe1, 0xcc, 0xee, - 0xbd, 0xde, 0xcc, 0xee, 0xbe, 0xdb, 0xcc, 0xee, 0xbe, 0xde, 0xcc, 0xee, - 0xbe, 0xdb, 0xcc, 0xee, 0xbf, 0xde, 0xcc, 0xee, 0xbf, 0xdb, 0xcc, 0xee, - 0xbf, 0xde, 0xcc, 0xee, 0xc0, 0xdb, 0xcc, 0xee, 0xc0, 0xde, 0xcc, 0xee, - 0xc0, 0xdb, 0xcc, 0xee, 0xc1, 0xde, 0xcc, 0xee, 0xc1, 0xdb, 0xcc, 0xee, - 0xc1, 0xde, 0xcc, 0xee, 0xc1, 0xdb, 0xcc, 0xee, 0xc2, 0xde, 0xcc, 0xee, - 0xc2, 0xdb, 0xcc, 0xee, 0xc2, 0xde, 0xcc, 0xee, 0xc3, 0xdb, 0xcc, 0xee, - 0xc3, 0xde, 0xcc, 0xee, 0xc3, 0xdb, 0xcc, 0xee, 0xc4, 0xde, 0xcc, 0xee, - 0xc4, 0xdb, 0xcc, 0xee, 0xc4, 0xde, 0xcc, 0xee, 0xc5, 0xdb, 0xcc, 0xee, - 0xc5, 0xde, 0xcc, 0xee, 0xc5, 0xdb, 0xcc, 0xee, 0xc6, 0xde, 0xcc, 0xee, - 0xc6, 0xdb, 0xcc, 0xee, 0xc6, 0xde, 0xcc, 0xee, 0xc6, 0xdb, 0xcc, 0xee, - 0xc7, 0xde, 0xcc, 0xee, 0xc7, 0xdb, 0xcc, 0xee, 0xc7, 0xde, 0xcc, 0xee, - 0xc8, 0xdb, 0xcd, 0xee, 0xc8, 0xda, 0xcc, 0xee, 0xc8, 0xdb, 0xcd, 0xee, - 0xc9, 0xda, 0xcc, 0xee, 0xc9, 0xdb, 0xcd, 0xee, 0xc9, 0xda, 0xcc, 0xee, - 0xc9, 0xdb, 0xcd, 0xee, 0xca, 0xda, 0xcc, 0xee, 0xca, 0xdb, 0xcd, 0xee, - 0xca, 0xda, 0xcc, 0xee, 0xcb, 0xdb, 0xcd, 0xee, 0xcb, 0xda, 0xcc, 0xee, - 0xcb, 0xdb, 0xcd, 0xee, 0xcc, 0xda, 0xcc, 0xee, 0xcc, 0xdb, 0xcd, 0xee, - 0xcc, 0xda, 0xcd, 0xee, 0xcc, 0xda, 0xcd, 0xee, 0xcc, 0xda, 0xcd, 0xee, - 0xcc, 0xda, 0xcd, 0xee, 0xcc, 0xda, 0xce, 0xee, 0xcc, 0xda, 0xce, 0xee, - 0xcc, 0xda, 0xce, 0xee, 0xcc, 0xda, 0xce, 0xee, 0xcc, 0xda, 0xcf, 0xee, - 0xcc, 0xda, 0xcf, 0xec, 0xcd, 0xda, 0xcf, 0xee, 0xcc, 0xda, 0xd0, 0xec, - 0xcd, 0xda, 0xd0, 0xee, 0xcc, 0xda, 0xd0, 0xec, 0xcd, 0xda, 0xd0, 0xee, - 0xcc, 0xda, 0xd1, 0xec, 0xcd, 0xda, 0xd1, 0xee, 0xcc, 0xda, 0xd1, 0xec, - 0xcd, 0xda, 0xd2, 0xee, 0xcc, 0xda, 0xd2, 0xec, 0xcd, 0xda, 0xd2, 0xee, - 0xcc, 0xda, 0xd2, 0xec, 0xcd, 0xda, 0xd3, 0xee, 0xcc, 0xda, 0xd3, 0xec, - 0xcd, 0xda, 0xd3, 0xee, 0xcc, 0xda, 0xd4, 0xec, 0xcd, 0xda, 0xd4, 0xec, - 0xcd, 0xda, 0xd4, 0xec, 0xcd, 0xda, 0xd4, 0xec, 0xcd, 0xda, 0xd5, 0xec, - 0xcd, 0xda, 0xd5, 0xec, 0xcd, 0xda, 0xd5, 0xec, 0xcd, 0xda, 0xd6, 0xec, - 0xcd, 0xda, 0xd6, 0xec, 0xcd, 0xda, 0xd6, 0xec, 0xcd, 0xda, 0xd6, 0xec, - 0xcd, 0xda, 0xd7, 0xec, 0xcd, 0xda, 0xd7, 0xec, 0xcd, 0xda, 0xd7, 0xec, - 0xcd, 0xda, 0xd7, 0xec, 0xcd, 0xda, 0xd8, 0xec, 0xcd, 0xda, 0xd8, 0xec, - 0xcd, 0xda, 0xd8, 0xec, 0xcd, 0xda, 0xd9, 0xec, 0xcd, 0xda, 0xd9, 0xec, - 0xcd, 0xda, 0xd9, 0xec, 0xcd, 0xda, 0xd9, 0xec, 0xcd, 0xda, 0xda, 0xef, - 0xe5, 0xda, 0xda, 0xf1, 0xe5, 0xda, 0xda, 0xef, 0xe5, 0xda, 0xda, 0xf1, - 0xe5, 0xda, 0xdb, 0xef, 0xe5, 0xda, 0xdb, 0xf1, 0xe5, 0xda, 0xdb, 0xef, - 0xe5, 0xda, 0xdb, 0xf1, 0xe5, 0xda, 0xdc, 0xef, 0xe5, 0xda, 0xdc, 0xee, - 0xe5, 0xda, 0xdc, 0xef, 0xe5, 0xda, 0xdd, 0xee, 0xe5, 0xda, 0xdd, 0xef, - 0xe5, 0xda, 0xdd, 0xee, 0xe5, 0xda, 0xdd, 0xef, 0xe5, 0xda, 0xde, 0xee, - 0xe5, 0xda, 0xde, 0xef, 0xe5, 0xda, 0xde, 0xee, 0xe5, 0xda, 0xde, 0xef, - 0xe5, 0xda, 0xdf, 0xee, 0xe5, 0xda, 0xdf, 0xef, 0xe5, 0xda, 0xdf, 0xee, - 0xe5, 0xda, 0xdf, 0xef, 0xe5, 0xda, 0xe0, 0xee, 0xe5, 0xda, 0xe0, 0xef, - 0xe5, 0xda, 0xe0, 0xee, 0xe5, 0xda, 0xe1, 0xef, 0xe5, 0xda, 0xe1, 0xee, - 0xe5, 0xda, 0xe1, 0xef, 0xe5, 0xda, 0xe1, 0xee, 0xe5, 0xda, 0xe2, 0xef, - 0xe5, 0xda, 0xe2, 0xee, 0xe5, 0xda, 0xe2, 0xef, 0xe5, 0xda, 0xe2, 0xee, - 0xe5, 0xda, 0xe3, 0xef, 0xe5, 0xda, 0xe3, 0xee, 0xe5, 0xda, 0xe3, 0xef, - 0xe5, 0xda, 0xe3, 0xee, 0xe5, 0xda, 0xe4, 0xee, 0xe6, 0xda, 0xe4, 0xee, - 0xe5, 0xda, 0xe4, 0xee, 0xe6, 0xda, 0xe4, 0xee, 0xe5, 0xda, 0xe5, 0xee, - 0xe6, 0xda, 0xe5, 0xee, 0xe5, 0xda, 0xe5, 0xee, 0xe6, 0xda, 0xe5, 0xee, - 0xe5, 0xd9, 0xe5, 0xee, 0xe6, 0xda, 0xe5, 0xee, 0xe6, 0xd9, 0xe5, 0xee, - 0xe6, 0xda, 0xe7, 0xee, 0xe6, 0xda, 0xe7, 0xee, 0xe7, 0xdb, 0xe7, 0xee, - 0xe7, 0xda, 0xe8, 0xee, 0xe7, 0xda, 0xe7, 0xee, 0xe7, 0xda, 0xe8, 0xee, - 0xe7, 0xda, 0xe8, 0xee, 0xe7, 0xda, 0xe8, 0xee, 0xe7, 0xda, 0xe8, 0xee, - 0xe7, 0xda, 0xe9, 0xee, 0xe7, 0xda, 0xe9, 0xee, 0xe7, 0xda, 0xe9, 0xee, - 0xe7, 0xda, 0xe9, 0xec, 0xe9, 0xda, 0xea, 0xec, 0xea, 0xda, 0xea, 0xec, - 0xeb, 0xda, 0xea, 0xec, 0xeb, 0xda, 0xea, 0xec, 0xeb, 0xda, 0xeb, 0xec, - 0xeb, 0xda, 0xeb, 0xec, 0xeb, 0xda, 0xeb, 0xec, 0xeb, 0xda, 0xeb, 0xec, - 0xeb, 0xda, 0xec, 0xec, 0xec, 0xda, 0xec, 0xec, 0xec, 0xda, 0xec, 0xec, - 0xec, 0xda, 0xec, 0xec, 0xec, 0xda, 0xec, 0xec, 0xed, 0xda, 0xed, 0xec, - 0xee, 0xda, 0xed, 0xec, 0xed, 0xda, 0xed, 0xec, 0xee, 0xda, 0xed, 0xec, - 0xed, 0xda, 0xee, 0xec, 0xee, 0xda, 0xee, 0xec, 0xee, 0xda, 0xee, 0xec, - 0xee, 0xda, 0xee, 0xec, 0xee, 0xda, 0xef, 0xec, 0xef, 0xda, 0xef, 0xec, - 0xef, 0xda, 0xef, 0xec, 0xef, 0xda, 0xef, 0xed, 0xf0, 0xda, 0xf0, 0xed, - 0xf1, 0xda, 0xf0, 0xee, 0xf1, 0xda, 0xf0, 0xee, 0xf1, 0xda, 0xf0, 0xee, - 0xf1, 0xda, 0xf1, 0xee, 0xf1, 0xda, 0xf1, 0xee, 0xf1, 0xd9, 0xf1, 0xee, - 0xf1, 0xda, 0xf1, 0xee, 0xf1, 0xda, 0xf2, 0xee, 0xf1, 0xda, 0xf2, 0xee, - 0xf1, 0xda, 0xf2, 0xee, 0xf1, 0xda, 0xf2, 0xee, 0xf1, 0xda, 0xf2, 0xee, - 0xf1, 0xda, 0xf3, 0xee, 0xf1, 0xda, 0xf3, 0xee, 0xf1, 0xda, 0xf3, 0xec, - 0xf1, 0xda, 0xf3, 0xee, 0xf1, 0xda, 0xf4, 0xec, 0xf1, 0xda, 0xf4, 0xee, - 0xf1, 0xda, 0xf4, 0xec, 0xf1, 0xda, 0xf4, 0xee, 0xf1, 0xda, 0xf5, 0xec, - 0xf1, 0xda, 0xf5, 0xee, 0xf1, 0xda, 0xf5, 0xec, 0xf1, 0xda, 0xf5, 0xee, - 0xf1, 0xda, 0xf5, 0xec, 0xf1, 0xda, 0xf6, 0xee, 0xf1, 0xda, 0xf6, 0xec, - 0xf1, 0xda, 0xf6, 0xee, 0xf1, 0xda, 0xf6, 0xec, 0xf1, 0xda, 0xf7, 0xee, - 0xf1, 0xda, 0xf7, 0xec, 0xf1, 0xda, 0xf7, 0xee, 0xf1, 0xda, 0xf7, 0xec, - 0xf1, 0xda, 0xf8, 0xee, 0xf1, 0xda, 0xf8, 0xec, 0xf1, 0xda, 0xf8, 0xee, - 0xf1, 0xda, 0xf8, 0xec, 0xf1, 0xda, 0xf8, 0xee, 0xf1, 0xda, 0xf9, 0xec, - 0xf1, 0xda, 0xf9, 0xee, 0xf1, 0xda, 0xf9, 0xec, 0xf1, 0xda, 0xf9, 0xee, - 0xf1, 0xda, 0xfa, 0xec, 0xf1, 0xda, 0xfa, 0xee, 0xf1, 0xda, 0xfa, 0xec, - 0xf1, 0xda, 0xfa, 0xee, 0xf1, 0xda, 0xfa, 0xec, 0xf1, 0xda, 0xfb, 0xee, - 0xf1, 0xda, 0xfb, 0xec, 0xf1, 0xda, 0xfb, 0xee, 0xf1, 0xda, 0xfb, 0xec, - 0xf1, 0xda, 0xfc, 0xee, 0xf1, 0xda, 0xfc, 0xec, 0xf1, 0xda, 0xfc, 0xee, - 0xf1, 0xda, 0xfc, 0xec, 0xf1, 0xda, 0xfc, 0xee, 0xf1, 0xda, 0xfd, 0xec, - 0xf1, 0xda, 0xfd, 0xee, 0xf1, 0xda, 0xfd, 0xec, 0xf1, 0xda, 0xfd, 0xee, - 0xf1, 0xda, 0xfe, 0xec, 0xf1, 0xda, 0xfe, 0xee, 0xf1, 0xda, 0xfe, 0xec, - 0xf1, 0xda, 0xfe, 0xee, 0xf1, 0xda, 0xfe, 0xec, 0xf1, 0xda, 0xff, 0xec, - 0xf1, 0xda, 0xff, 0xec, 0xf1, 0xda, 0x03, 0xf2, 0x83, 0xda, 0x0a, 0xf2, - 0x83, 0xda, 0x0f, 0xf2, 0x83, 0xda, 0x14, 0xf4, 0x83, 0xda, 0x17, 0xf2, - 0x83, 0xda, 0x1b, 0xf4, 0x83, 0xda, 0x1e, 0xf2, 0x83, 0xda, 0x20, 0xf4, - 0x83, 0xda, 0x23, 0xf2, 0x83, 0xda, 0x25, 0xf1, 0x84, 0xda, 0x27, 0xf2, - 0x83, 0xda, 0x29, 0xf1, 0x84, 0xda, 0x2b, 0xf2, 0x83, 0xda, 0x2d, 0xf1, - 0x84, 0xda, 0x2f, 0xf2, 0x83, 0xda, 0x31, 0xf1, 0x84, 0xda, 0x32, 0xf2, - 0x83, 0xda, 0x34, 0xf1, 0x84, 0xda, 0x35, 0xf2, 0x83, 0xda, 0x37, 0xf1, - 0x84, 0xda, 0x38, 0xf2, 0x83, 0xda, 0x3a, 0xf1, 0x84, 0xda, 0x3b, 0xf2, - 0x83, 0xda, 0x3c, 0xf1, 0x84, 0xda, 0x3e, 0xf2, 0x83, 0xda, 0x3f, 0xf1, - 0x84, 0xda, 0x40, 0xf2, 0x83, 0xda, 0x42, 0xf1, 0x84, 0xda, 0x43, 0xf2, - 0x83, 0xda, 0x44, 0xf1, 0x84, 0xda, 0x45, 0xf2, 0x83, 0xda, 0x46, 0xf1, - 0x84, 0xda, 0x47, 0xf2, 0x83, 0xda, 0x48, 0xf1, 0x84, 0xda, 0x49, 0xf2, - 0x83, 0xda, 0x4a, 0xf1, 0x84, 0xda, 0x4b, 0xf2, 0x83, 0xda, 0x4c, 0xf1, - 0x84, 0xda, 0x4d, 0xf2, 0x83, 0xda, 0x4e, 0xf1, 0x84, 0xda, 0x4f, 0xf2, - 0x83, 0xda, 0x50, 0xf1, 0x84, 0xda, 0x51, 0xef, 0x84, 0xda, 0x52, 0xf1, - 0x84, 0xda, 0x53, 0xef, 0x84, 0xda, 0x54, 0xf1, 0x84, 0xda, 0x55, 0xef, - 0x84, 0xda, 0x56, 0xf1, 0x84, 0xda, 0x57, 0xef, 0x84, 0xda, 0x58, 0xf1, - 0x84, 0xda, 0x58, 0xef, 0x84, 0xda, 0x59, 0xf1, 0x84, 0xda, 0x5a, 0xef, - 0x84, 0xda, 0x5b, 0xf1, 0x84, 0xda, 0x5c, 0xef, 0x84, 0xda, 0x5d, 0xf1, - 0x84, 0xda, 0x5d, 0xef, 0x84, 0xda, 0x5e, 0xf1, 0x84, 0xda, 0x5f, 0xef, - 0x84, 0xda, 0x60, 0xf1, 0x84, 0xda, 0x60, 0xef, 0x84, 0xda, 0x61, 0xf1, - 0x84, 0xda, 0x62, 0xef, 0x84, 0xda, 0x63, 0xf1, 0x84, 0xda, 0x63, 0xef, - 0x84, 0xda, 0x64, 0xf1, 0x84, 0xda, 0x65, 0xef, 0x84, 0xda, 0x66, 0xf1, - 0x84, 0xda, 0x66, 0xef, 0x84, 0xda, 0x67, 0xf1, 0x84, 0xda, 0x68, 0xef, - 0x84, 0xda, 0x68, 0xf1, 0x84, 0xda, 0x69, 0xef, 0x84, 0xda, 0x6a, 0xf1, - 0x84, 0xda, 0x6a, 0xef, 0x84, 0xda, 0x6b, 0xf1, 0x84, 0xda, 0x6c, 0xef, - 0x84, 0xda, 0x6c, 0xf1, 0x84, 0xda, 0x6d, 0xef, 0x84, 0xda, 0x6e, 0xf1, - 0x84, 0xda, 0x6e, 0xef, 0x84, 0xda, 0x6f, 0xf1, 0x84, 0xda, 0x70, 0xef, - 0x84, 0xda, 0x70, 0xee, 0x85, 0xda, 0x71, 0xef, 0x84, 0xda, 0x72, 0xee, - 0x85, 0xda, 0x72, 0xef, 0x84, 0xda, 0x73, 0xee, 0x85, 0xda, 0x73, 0xef, - 0x84, 0xda, 0x74, 0xee, 0x85, 0xda, 0x75, 0xef, 0x84, 0xda, 0x75, 0xee, - 0x85, 0xda, 0x76, 0xef, 0x84, 0xda, 0x76, 0xee, 0x85, 0xda, 0x77, 0xef, - 0x84, 0xda, 0x78, 0xee, 0x85, 0xda, 0x78, 0xef, 0x84, 0xda, 0x79, 0xee, - 0x85, 0xda, 0x79, 0xef, 0x84, 0xda, 0x7a, 0xee, 0x85, 0xda, 0x7a, 0xef, - 0x84, 0xda, 0x7b, 0xee, 0x85, 0xda, 0x7c, 0xef, 0x84, 0xda, 0x7c, 0xee, - 0x85, 0xda, 0x7d, 0xef, 0x84, 0xda, 0x7d, 0xee, 0x85, 0xda, 0x7e, 0xef, - 0x84, 0xda, 0x7e, 0xee, 0x85, 0xda, 0x7f, 0xef, 0x84, 0xda, 0x7f, 0xee, - 0x85, 0xda, 0x80, 0xef, 0x84, 0xda, 0x81, 0xee, 0x85, 0xda, 0x81, 0xef, - 0x84, 0xda, 0x82, 0xee, 0x85, 0xda, 0x82, 0xef, 0x84, 0xda, 0x83, 0xee, - 0x85, 0xda, 0x83, 0xee, 0x85, 0xda, 0x84, 0xee, 0x85, 0xda, 0x84, 0xee, - 0x85, 0xda, 0x84, 0xee, 0x85, 0xda, 0x84, 0xee, 0x85, 0xda, 0x84, 0xee, - 0x86, 0xda, 0x84, 0xee, 0x86, 0xda, 0x85, 0xee, 0x87, 0xd8, 0x84, 0xee, - 0x87, 0xda, 0x85, 0xee, 0x88, 0xd8, 0x84, 0xee, 0x88, 0xda, 0x85, 0xee, - 0x89, 0xd8, 0x84, 0xee, 0x89, 0xda, 0x85, 0xee, 0x8a, 0xd8, 0x84, 0xee, - 0x8a, 0xda, 0x85, 0xee, 0x8b, 0xd8, 0x84, 0xee, 0x8b, 0xda, 0x85, 0xee, - 0x8c, 0xd8, 0x84, 0xee, 0x8c, 0xda, 0x85, 0xee, 0x8d, 0xd8, 0x84, 0xee, - 0x8d, 0xda, 0x85, 0xee, 0x8e, 0xd8, 0x84, 0xee, 0x8e, 0xda, 0x85, 0xee, - 0x8e, 0xd8, 0x84, 0xee, 0x8f, 0xda, 0x85, 0xee, 0x8f, 0xd8, 0x84, 0xee, - 0x90, 0xda, 0x85, 0xee, 0x90, 0xd8, 0x85, 0xee, 0x91, 0xd5, 0x85, 0xee, - 0x91, 0xd8, 0x85, 0xee, 0x92, 0xd5, 0x85, 0xee, 0x92, 0xd8, 0x85, 0xee, - 0x93, 0xd5, 0x85, 0xee, 0x93, 0xd8, 0x85, 0xee, 0x94, 0xd5, 0x8f, 0xee, - 0x94, 0xe9, 0x94, 0xee, 0x94, 0xea, 0x94, 0xee, 0x95, 0xea, 0x94, 0xee, - 0x95, 0xea, 0x94, 0xee, 0x96, 0xea, 0x94, 0xee, 0x96, 0xea, 0x94, 0xee, - 0x97, 0xea, 0x94, 0xee, 0x97, 0xea, 0x94, 0xee, 0x98, 0xea, 0x94, 0xee, - 0x98, 0xea, 0x94, 0xee, 0x98, 0xea, 0x94, 0xee, 0x99, 0xea, 0x99, 0xee, - 0x99, 0xeb, 0x99, 0xee, 0x9a, 0xeb, 0x99, 0xee, 0x9a, 0xeb, 0x99, 0xee, - 0x9a, 0xeb, 0x99, 0xee, 0x9b, 0xeb, 0x99, 0xee, 0x9b, 0xeb, 0x99, 0xee, - 0x9c, 0xeb, 0x99, 0xee, 0x9c, 0xeb, 0x99, 0xee, 0x9d, 0xeb, 0x99, 0xee, - 0x9d, 0xeb, 0x99, 0xee, 0x9d, 0xeb, 0x9e, 0xee, 0x9e, 0xec, 0x99, 0xee, - 0x9e, 0xeb, 0x9e, 0xee, 0x9f, 0xec, 0x9d, 0xee, 0x9f, 0xec, 0x9e, 0xee, - 0x9f, 0xec, 0x9d, 0xee, 0xa0, 0xec, 0x9e, 0xee, 0xa0, 0xec, 0x9d, 0xee, - 0xa1, 0xec, 0x9e, 0xee, 0xa1, 0xec, 0x9d, 0xee, 0xa1, 0xec, 0x9e, 0xee, - 0xa2, 0xec, 0x9d, 0xee, 0xa2, 0xec, 0x9e, 0xee, 0xa3, 0xec, 0xa2, 0xee, - 0xa3, 0xed, 0xa2, 0xee, 0xa3, 0xed, 0xa2, 0xee, 0xa4, 0xed, 0xa2, 0xee, - 0xa4, 0xed, 0xa2, 0xee, 0xa5, 0xed, 0xa2, 0xee, 0xa5, 0xed, 0xa2, 0xee, - 0xa5, 0xed, 0xa2, 0xee, 0xa6, 0xed, 0xa2, 0xee, 0xa6, 0xed, 0xa2, 0xee, - 0xa6, 0xed, 0xa2, 0xee, 0xa7, 0xed, 0xa6, 0xee, 0xa7, 0xee, 0xa6, 0xee, - 0xa8, 0xee, 0xa6, 0xee, 0xa8, 0xee, 0xa6, 0xee, 0xa8, 0xee, 0xa6, 0xee, - 0xa9, 0xee, 0xa6, 0xee, 0xa9, 0xee, 0xa6, 0xee, 0xaa, 0xee, 0xa6, 0xee, - 0xaa, 0xee, 0xa6, 0xee, 0xaa, 0xee, 0xa6, 0xee, 0xab, 0xee, 0xa6, 0xee, - 0xab, 0xee, 0xab, 0xee, 0xab, 0xef, 0xaa, 0xee, 0xac, 0xef, 0xab, 0xee, - 0xac, 0xef, 0xaa, 0xee, 0xac, 0xef, 0xab, 0xee, 0xad, 0xef, 0xaa, 0xee, - 0xad, 0xef, 0xab, 0xee, 0xae, 0xef, 0xaa, 0xee, 0xae, 0xef, 0xab, 0xee, - 0xae, 0xef, 0xaa, 0xee, 0xaf, 0xef, 0xab, 0xee, 0xaf, 0xef, 0xaf, 0xee, - 0xaf, 0xf0, 0xae, 0xee, 0xb0, 0xf0, 0xaf, 0xee, 0xb0, 0xf0, 0xae, 0xee, - 0xb0, 0xf0, 0xaf, 0xee, 0xb1, 0xf0, 0xae, 0xee, 0xb1, 0xf0, 0xaf, 0xee, - 0xb2, 0xf0, 0xae, 0xee, 0xb2, 0xf0, 0xaf, 0xee, 0xb2, 0xf0, 0xae, 0xee, - 0xb3, 0xf0, 0xaf, 0xee, 0xb3, 0xf0, 0xb3, 0xee, 0xb3, 0xf1, 0xb2, 0xee, - 0xb4, 0xf1, 0xb3, 0xee, 0xb4, 0xf1, 0xb2, 0xee, 0xb4, 0xf1, 0xb3, 0xee, - 0xb5, 0xf1, 0xb2, 0xee, 0xb5, 0xf1, 0xb3, 0xee, 0xb5, 0xf1, 0xb2, 0xee, - 0xb6, 0xf1, 0xb3, 0xee, 0xb6, 0xf1, 0xb2, 0xee, 0xb6, 0xf1, 0xb3, 0xee, - 0xb7, 0xf1, 0xb6, 0xee, 0xb7, 0xf2, 0xb3, 0xee, 0xb7, 0xf1, 0xb6, 0xee, - 0xb8, 0xf2, 0xb6, 0xee, 0xb8, 0xf2, 0xb6, 0xee, 0xb8, 0xf2, 0xb6, 0xee, - 0xb9, 0xf2, 0xb6, 0xee, 0xb9, 0xf2, 0xb6, 0xee, 0xb9, 0xf2, 0xb6, 0xee, - 0xba, 0xf2, 0xb6, 0xee, 0xba, 0xf2, 0xb6, 0xee, 0xba, 0xf2, 0xb6, 0xee, - 0xbb, 0xf2, 0xb6, 0xee, 0xbb, 0xf2, 0xba, 0xee, 0xbb, 0xf3, 0xba, 0xee, - 0xbc, 0xf3, 0xba, 0xee, 0xbc, 0xf3, 0xba, 0xee, 0xbc, 0xf3, 0xcc, 0xee, - 0xbd, 0xdd, 0xcc, 0xee, 0xbd, 0xe0, 0xcc, 0xee, 0xbd, 0xdd, 0xcc, 0xee, - 0xbe, 0xe0, 0xcc, 0xee, 0xbe, 0xdd, 0xcc, 0xee, 0xbe, 0xe0, 0xcc, 0xee, - 0xbf, 0xdd, 0xcc, 0xee, 0xbf, 0xe0, 0xcc, 0xee, 0xbf, 0xdd, 0xcc, 0xee, - 0xc0, 0xe0, 0xcc, 0xee, 0xc0, 0xdd, 0xcc, 0xee, 0xc0, 0xe0, 0xcc, 0xee, - 0xc1, 0xdd, 0xcc, 0xee, 0xc1, 0xe0, 0xcc, 0xee, 0xc1, 0xdd, 0xcc, 0xee, - 0xc1, 0xdb, 0xcc, 0xee, 0xc2, 0xdd, 0xcc, 0xee, 0xc2, 0xdb, 0xcc, 0xee, - 0xc2, 0xdd, 0xcc, 0xee, 0xc3, 0xdb, 0xcc, 0xee, 0xc3, 0xdd, 0xcc, 0xee, - 0xc3, 0xdb, 0xcc, 0xee, 0xc4, 0xdd, 0xcc, 0xee, 0xc4, 0xdb, 0xcc, 0xee, - 0xc4, 0xdd, 0xcc, 0xee, 0xc5, 0xdb, 0xcc, 0xee, 0xc5, 0xdd, 0xcc, 0xee, - 0xc5, 0xdb, 0xcc, 0xee, 0xc6, 0xdd, 0xcc, 0xee, 0xc6, 0xdb, 0xcc, 0xee, - 0xc6, 0xdd, 0xcc, 0xee, 0xc6, 0xdb, 0xcc, 0xee, 0xc7, 0xdd, 0xcc, 0xee, - 0xc7, 0xdb, 0xcc, 0xee, 0xc7, 0xdd, 0xcc, 0xee, 0xc8, 0xdb, 0xcc, 0xee, - 0xc8, 0xdd, 0xcc, 0xee, 0xc8, 0xdb, 0xcc, 0xee, 0xc9, 0xdd, 0xcc, 0xee, - 0xc9, 0xdb, 0xcc, 0xee, 0xc9, 0xdd, 0xcc, 0xee, 0xc9, 0xdb, 0xcc, 0xee, - 0xca, 0xdd, 0xcc, 0xee, 0xca, 0xdb, 0xcd, 0xee, 0xca, 0xda, 0xcc, 0xee, - 0xcb, 0xdb, 0xcd, 0xee, 0xcb, 0xda, 0xcc, 0xee, 0xcb, 0xdb, 0xcd, 0xee, - 0xcc, 0xda, 0xcc, 0xee, 0xcc, 0xdb, 0xcd, 0xee, 0xcc, 0xda, 0xcd, 0xee, - 0xcc, 0xda, 0xcd, 0xee, 0xcc, 0xda, 0xcd, 0xee, 0xcc, 0xda, 0xcd, 0xee, - 0xcc, 0xda, 0xce, 0xee, 0xcc, 0xda, 0xce, 0xee, 0xcc, 0xda, 0xce, 0xee, - 0xcc, 0xda, 0xce, 0xee, 0xcc, 0xda, 0xcf, 0xee, 0xcc, 0xda, 0xcf, 0xed, - 0xcd, 0xda, 0xcf, 0xee, 0xcc, 0xda, 0xd0, 0xed, 0xcd, 0xda, 0xd0, 0xee, - 0xcc, 0xda, 0xd0, 0xed, 0xcd, 0xda, 0xd0, 0xee, 0xcc, 0xda, 0xd1, 0xed, - 0xcd, 0xda, 0xd1, 0xee, 0xcc, 0xda, 0xd1, 0xed, 0xcd, 0xda, 0xd2, 0xee, - 0xcc, 0xda, 0xd2, 0xed, 0xcd, 0xda, 0xd2, 0xee, 0xcc, 0xda, 0xd2, 0xed, - 0xcd, 0xda, 0xd3, 0xee, 0xcc, 0xda, 0xd3, 0xed, 0xcd, 0xda, 0xd3, 0xee, - 0xcc, 0xda, 0xd4, 0xed, 0xcd, 0xda, 0xd4, 0xee, 0xcc, 0xda, 0xd4, 0xed, - 0xcd, 0xda, 0xd4, 0xee, 0xcc, 0xda, 0xd5, 0xed, 0xcd, 0xda, 0xd5, 0xee, - 0xcc, 0xda, 0xd5, 0xed, 0xcd, 0xda, 0xd6, 0xee, 0xcc, 0xda, 0xd6, 0xed, - 0xcd, 0xda, 0xd6, 0xee, 0xcc, 0xda, 0xd6, 0xed, 0xcd, 0xda, 0xd7, 0xee, - 0xcc, 0xda, 0xd7, 0xed, 0xcd, 0xda, 0xd7, 0xeb, 0xcd, 0xda, 0xd7, 0xed, - 0xcd, 0xda, 0xd8, 0xeb, 0xcd, 0xda, 0xd8, 0xed, 0xcd, 0xda, 0xd8, 0xeb, - 0xcd, 0xda, 0xd9, 0xed, 0xcd, 0xda, 0xd9, 0xeb, 0xcd, 0xda, 0xd9, 0xed, - 0xcd, 0xda, 0xd9, 0xf1, 0xe5, 0xda, 0xda, 0xef, 0xe5, 0xda, 0xda, 0xf1, - 0xe5, 0xda, 0xda, 0xef, 0xe5, 0xda, 0xda, 0xf1, 0xe5, 0xda, 0xdb, 0xef, - 0xe5, 0xda, 0xdb, 0xf1, 0xe5, 0xda, 0xdb, 0xef, 0xe5, 0xda, 0xdb, 0xf1, - 0xe5, 0xda, 0xdc, 0xef, 0xe5, 0xda, 0xdc, 0xf1, 0xe5, 0xda, 0xdc, 0xef, - 0xe5, 0xda, 0xdd, 0xf1, 0xe5, 0xda, 0xdd, 0xef, 0xe5, 0xda, 0xdd, 0xf1, - 0xe5, 0xda, 0xdd, 0xef, 0xe5, 0xda, 0xde, 0xf1, 0xe5, 0xda, 0xde, 0xef, - 0xe5, 0xda, 0xde, 0xf1, 0xe5, 0xda, 0xde, 0xef, 0xe5, 0xda, 0xdf, 0xf1, - 0xe5, 0xda, 0xdf, 0xef, 0xe5, 0xda, 0xdf, 0xee, 0xe5, 0xda, 0xdf, 0xef, - 0xe5, 0xda, 0xe0, 0xee, 0xe5, 0xda, 0xe0, 0xef, 0xe5, 0xda, 0xe0, 0xee, - 0xe5, 0xda, 0xe1, 0xef, 0xe5, 0xda, 0xe1, 0xee, 0xe5, 0xda, 0xe1, 0xef, - 0xe5, 0xda, 0xe1, 0xee, 0xe5, 0xda, 0xe2, 0xef, 0xe5, 0xda, 0xe2, 0xee, - 0xe5, 0xda, 0xe2, 0xef, 0xe5, 0xda, 0xe2, 0xee, 0xe5, 0xda, 0xe3, 0xef, - 0xe5, 0xda, 0xe3, 0xee, 0xe5, 0xda, 0xe3, 0xef, 0xe5, 0xda, 0xe3, 0xee, - 0xe5, 0xda, 0xe4, 0xef, 0xe5, 0xda, 0xe4, 0xee, 0xe5, 0xda, 0xe4, 0xef, - 0xe5, 0xda, 0xe4, 0xee, 0xe5, 0xda, 0xe5, 0xee, 0xe6, 0xda, 0xe5, 0xee, - 0xe5, 0xda, 0xe5, 0xee, 0xe6, 0xda, 0xe5, 0xee, 0xe5, 0xd9, 0xe5, 0xee, - 0xe6, 0xda, 0xe5, 0xee, 0xe6, 0xd9, 0xe5, 0xee, 0xe6, 0xda, 0xe7, 0xee, - 0xe6, 0xda, 0xe7, 0xee, 0xe7, 0xda, 0xe7, 0xee, 0xe7, 0xda, 0xe7, 0xee, - 0xe7, 0xda, 0xe7, 0xee, 0xe7, 0xda, 0xe8, 0xee, 0xe7, 0xda, 0xe8, 0xee, - 0xe7, 0xda, 0xe8, 0xee, 0xe7, 0xda, 0xe8, 0xee, 0xe7, 0xda, 0xe9, 0xee, - 0xe7, 0xda, 0xe9, 0xee, 0xe7, 0xda, 0xe9, 0xee, 0xe7, 0xda, 0xe9, 0xec, - 0xe9, 0xda, 0xea, 0xec, 0xea, 0xda, 0xea, 0xec, 0xea, 0xda, 0xea, 0xec, - 0xea, 0xda, 0xea, 0xec, 0xea, 0xda, 0xeb, 0xec, 0xeb, 0xda, 0xeb, 0xec, - 0xeb, 0xda, 0xeb, 0xec, 0xec, 0xda, 0xeb, 0xec, 0xec, 0xda, 0xec, 0xec, - 0xec, 0xda, 0xec, 0xec, 0xec, 0xda, 0xec, 0xec, 0xec, 0xda, 0xec, 0xec, - 0xec, 0xda, 0xec, 0xec, 0xec, 0xda, 0xed, 0xec, 0xed, 0xda, 0xed, 0xec, - 0xed, 0xda, 0xed, 0xec, 0xed, 0xda, 0xed, 0xec, 0xed, 0xda, 0xee, 0xec, - 0xee, 0xda, 0xee, 0xed, 0xef, 0xda, 0xee, 0xed, 0xef, 0xda, 0xee, 0xed, - 0xef, 0xda, 0xef, 0xed, 0xef, 0xda, 0xef, 0xed, 0xef, 0xda, 0xef, 0xed, - 0xef, 0xda, 0xef, 0xed, 0xef, 0xda, 0xf0, 0xef, 0xf1, 0xda, 0xf0, 0xee, - 0xf1, 0xda, 0xf0, 0xef, 0xf1, 0xda, 0xf0, 0xee, 0xf1, 0xda, 0xf1, 0xee, - 0xf1, 0xda, 0xf0, 0xee, 0xf1, 0xda, 0xf1, 0xee, 0xf1, 0xda, 0xf1, 0xee, - 0xf1, 0xda, 0xf2, 0xee, 0xf1, 0xda, 0xf2, 0xee, 0xf1, 0xda, 0xf2, 0xee, - 0xf1, 0xda, 0xf2, 0xee, 0xf1, 0xda, 0xf2, 0xee, 0xf1, 0xda, 0xf3, 0xee, - 0xf1, 0xda, 0xf3, 0xee, 0xf1, 0xda, 0xf3, 0xee, 0xf1, 0xda, 0xf3, 0xee, - 0xf1, 0xda, 0xf4, 0xee, 0xf1, 0xda, 0xf4, 0xee, 0xf1, 0xda, 0xf4, 0xee, - 0xf1, 0xda, 0xf4, 0xee, 0xf1, 0xda, 0xf5, 0xee, 0xf1, 0xda, 0xf5, 0xee, - 0xf1, 0xda, 0xf5, 0xec, 0xf1, 0xda, 0xf5, 0xee, 0xf1, 0xda, 0xf5, 0xec, - 0xf1, 0xda, 0xf6, 0xee, 0xf1, 0xda, 0xf6, 0xec, 0xf1, 0xda, 0xf6, 0xee, - 0xf1, 0xda, 0xf6, 0xec, 0xf1, 0xda, 0xf7, 0xee, 0xf1, 0xda, 0xf7, 0xec, - 0xf1, 0xda, 0xf7, 0xee, 0xf1, 0xda, 0xf7, 0xec, 0xf1, 0xda, 0xf8, 0xee, - 0xf1, 0xda, 0xf8, 0xec, 0xf1, 0xda, 0xf8, 0xee, 0xf1, 0xda, 0xf8, 0xec, - 0xf1, 0xda, 0xf8, 0xee, 0xf1, 0xda, 0xf9, 0xec, 0xf1, 0xda, 0xf9, 0xee, - 0xf1, 0xda, 0xf9, 0xec, 0xf1, 0xda, 0xf9, 0xee, 0xf1, 0xda, 0xfa, 0xec, - 0xf1, 0xda, 0xfa, 0xee, 0xf1, 0xda, 0xfa, 0xec, 0xf1, 0xda, 0xfa, 0xee, - 0xf1, 0xda, 0xfa, 0xec, 0xf1, 0xda, 0xfb, 0xee, 0xf1, 0xda, 0xfb, 0xec, - 0xf1, 0xda, 0xfb, 0xee, 0xf1, 0xda, 0xfb, 0xec, 0xf1, 0xda, 0xfc, 0xee, - 0xf1, 0xda, 0xfc, 0xec, 0xf1, 0xda, 0xfc, 0xee, 0xf1, 0xda, 0xfc, 0xec, - 0xf1, 0xda, 0xfc, 0xee, 0xf1, 0xda, 0xfd, 0xec, 0xf1, 0xda, 0xfd, 0xee, - 0xf1, 0xda, 0xfd, 0xec, 0xf1, 0xda, 0xfd, 0xee, 0xf1, 0xda, 0xfe, 0xec, - 0xf1, 0xda, 0xfe, 0xee, 0xf1, 0xda, 0xfe, 0xec, 0xf1, 0xda, 0xfe, 0xee, - 0xf1, 0xda, 0xfe, 0xec, 0xf1, 0xda, 0xff, 0xec, 0xf1, 0xda, 0xff, 0xec, - 0xf1, 0xda, 0x03, 0xf3, 0x83, 0xdb, 0x0a, 0xf3, 0x83, 0xdb, 0x0f, 0xf3, - 0x83, 0xdb, 0x14, 0xf1, 0x84, 0xdb, 0x17, 0xf3, 0x83, 0xdb, 0x1b, 0xf1, - 0x84, 0xdb, 0x1e, 0xf3, 0x83, 0xdb, 0x20, 0xf1, 0x84, 0xdb, 0x23, 0xf3, - 0x83, 0xdb, 0x25, 0xf1, 0x84, 0xdb, 0x27, 0xf3, 0x83, 0xdb, 0x29, 0xf1, - 0x84, 0xdb, 0x2b, 0xf3, 0x83, 0xdb, 0x2d, 0xf1, 0x84, 0xdb, 0x2f, 0xf3, - 0x83, 0xdb, 0x31, 0xf1, 0x84, 0xdb, 0x32, 0xf3, 0x83, 0xdb, 0x34, 0xf1, - 0x84, 0xdb, 0x35, 0xf3, 0x83, 0xdb, 0x37, 0xf1, 0x84, 0xdb, 0x38, 0xf3, - 0x83, 0xdb, 0x3a, 0xf1, 0x84, 0xdb, 0x3b, 0xf3, 0x83, 0xdb, 0x3c, 0xf1, - 0x84, 0xdb, 0x3e, 0xf3, 0x83, 0xdb, 0x3f, 0xf1, 0x84, 0xdb, 0x40, 0xf3, - 0x83, 0xdb, 0x42, 0xf1, 0x84, 0xdb, 0x43, 0xf3, 0x83, 0xdb, 0x44, 0xf1, - 0x84, 0xdb, 0x45, 0xf3, 0x83, 0xdb, 0x46, 0xf1, 0x84, 0xdb, 0x47, 0xf3, - 0x83, 0xdb, 0x48, 0xf1, 0x84, 0xdb, 0x49, 0xf3, 0x83, 0xdb, 0x4a, 0xf1, - 0x84, 0xdb, 0x4b, 0xf3, 0x83, 0xdb, 0x4c, 0xf1, 0x84, 0xdb, 0x4d, 0xf3, - 0x83, 0xdb, 0x4e, 0xf1, 0x84, 0xdb, 0x4f, 0xf3, 0x83, 0xdb, 0x50, 0xf1, - 0x84, 0xdb, 0x51, 0xef, 0x84, 0xdb, 0x52, 0xf1, 0x84, 0xdb, 0x53, 0xef, - 0x84, 0xdb, 0x54, 0xf1, 0x84, 0xdb, 0x55, 0xef, 0x84, 0xdb, 0x56, 0xf1, - 0x84, 0xdb, 0x57, 0xef, 0x84, 0xdb, 0x58, 0xf1, 0x84, 0xdb, 0x58, 0xef, - 0x84, 0xdb, 0x59, 0xf1, 0x84, 0xdb, 0x5a, 0xef, 0x84, 0xdb, 0x5b, 0xf1, - 0x84, 0xdb, 0x5c, 0xef, 0x84, 0xdb, 0x5d, 0xf1, 0x84, 0xdb, 0x5d, 0xef, - 0x84, 0xdb, 0x5e, 0xf1, 0x84, 0xdb, 0x5f, 0xef, 0x84, 0xdb, 0x60, 0xf1, - 0x84, 0xdb, 0x60, 0xef, 0x84, 0xdb, 0x61, 0xf1, 0x84, 0xdb, 0x62, 0xef, - 0x84, 0xdb, 0x63, 0xf1, 0x84, 0xdb, 0x63, 0xef, 0x84, 0xdb, 0x64, 0xf1, - 0x84, 0xdb, 0x65, 0xef, 0x84, 0xdb, 0x66, 0xf1, 0x84, 0xdb, 0x66, 0xef, - 0x84, 0xdb, 0x67, 0xf1, 0x84, 0xdb, 0x68, 0xef, 0x84, 0xdb, 0x68, 0xf1, - 0x84, 0xdb, 0x69, 0xef, 0x84, 0xdb, 0x6a, 0xf1, 0x84, 0xdb, 0x6a, 0xef, - 0x84, 0xdb, 0x6b, 0xf1, 0x84, 0xdb, 0x6c, 0xef, 0x84, 0xdb, 0x6c, 0xf1, - 0x84, 0xdb, 0x6d, 0xef, 0x84, 0xdb, 0x6e, 0xf1, 0x84, 0xdb, 0x6e, 0xef, - 0x84, 0xdb, 0x6f, 0xf1, 0x84, 0xdb, 0x70, 0xef, 0x84, 0xdb, 0x70, 0xf1, - 0x84, 0xdb, 0x71, 0xef, 0x84, 0xdb, 0x72, 0xf1, 0x84, 0xdb, 0x72, 0xef, - 0x84, 0xdb, 0x73, 0xf1, 0x84, 0xdb, 0x73, 0xef, 0x84, 0xdb, 0x74, 0xf1, - 0x84, 0xdb, 0x75, 0xef, 0x84, 0xdb, 0x75, 0xf1, 0x84, 0xdb, 0x76, 0xef, - 0x84, 0xdb, 0x76, 0xf1, 0x84, 0xdb, 0x77, 0xef, 0x84, 0xdb, 0x78, 0xee, - 0x85, 0xdb, 0x78, 0xef, 0x84, 0xdb, 0x79, 0xee, 0x85, 0xdb, 0x79, 0xef, - 0x84, 0xdb, 0x7a, 0xee, 0x85, 0xdb, 0x7a, 0xef, 0x84, 0xdb, 0x7b, 0xee, - 0x85, 0xdb, 0x7c, 0xef, 0x84, 0xdb, 0x7c, 0xee, 0x85, 0xdb, 0x7d, 0xef, - 0x84, 0xdb, 0x7d, 0xee, 0x85, 0xdb, 0x7e, 0xef, 0x84, 0xdb, 0x7e, 0xee, - 0x85, 0xdb, 0x7f, 0xef, 0x84, 0xdb, 0x7f, 0xee, 0x85, 0xdb, 0x80, 0xef, - 0x84, 0xdb, 0x81, 0xee, 0x85, 0xdb, 0x81, 0xef, 0x84, 0xdb, 0x82, 0xee, - 0x85, 0xdb, 0x82, 0xef, 0x84, 0xdb, 0x83, 0xee, 0x85, 0xdb, 0x83, 0xee, - 0x85, 0xdb, 0x84, 0xee, 0x85, 0xdb, 0x84, 0xee, 0x85, 0xdb, 0x84, 0xee, - 0x85, 0xdb, 0x84, 0xee, 0x85, 0xdb, 0x84, 0xee, 0x86, 0xdb, 0x84, 0xee, - 0x86, 0xdb, 0x85, 0xee, 0x87, 0xd9, 0x84, 0xee, 0x87, 0xdb, 0x85, 0xee, - 0x88, 0xd9, 0x84, 0xee, 0x88, 0xdb, 0x85, 0xee, 0x89, 0xd9, 0x84, 0xee, - 0x89, 0xdb, 0x85, 0xee, 0x8a, 0xd9, 0x84, 0xee, 0x8a, 0xdb, 0x85, 0xee, - 0x8b, 0xd9, 0x84, 0xee, 0x8b, 0xdb, 0x85, 0xee, 0x8c, 0xd9, 0x84, 0xee, - 0x8c, 0xdb, 0x85, 0xee, 0x8d, 0xd9, 0x84, 0xee, 0x8d, 0xdb, 0x85, 0xee, - 0x8e, 0xd9, 0x84, 0xee, 0x8e, 0xdb, 0x85, 0xee, 0x8e, 0xd9, 0x84, 0xee, - 0x8f, 0xdb, 0x85, 0xee, 0x8f, 0xd9, 0x84, 0xee, 0x90, 0xdb, 0x85, 0xee, - 0x90, 0xd9, 0x84, 0xee, 0x91, 0xdb, 0x85, 0xee, 0x91, 0xd9, 0x84, 0xee, - 0x92, 0xdb, 0x85, 0xee, 0x92, 0xd9, 0x84, 0xee, 0x93, 0xdb, 0x85, 0xee, - 0x93, 0xd9, 0x92, 0xee, 0x94, 0xea, 0x91, 0xee, 0x94, 0xea, 0x92, 0xee, - 0x94, 0xea, 0x91, 0xee, 0x95, 0xea, 0x92, 0xee, 0x95, 0xea, 0x91, 0xee, - 0x96, 0xea, 0x92, 0xee, 0x96, 0xea, 0x97, 0xee, 0x97, 0xeb, 0x96, 0xee, - 0x97, 0xeb, 0x97, 0xee, 0x98, 0xeb, 0x96, 0xee, 0x98, 0xeb, 0x97, 0xee, - 0x98, 0xeb, 0x96, 0xee, 0x99, 0xeb, 0x97, 0xee, 0x99, 0xeb, 0x96, 0xee, - 0x9a, 0xeb, 0x97, 0xee, 0x9a, 0xeb, 0x96, 0xee, 0x9a, 0xeb, 0x97, 0xee, - 0x9b, 0xeb, 0x9b, 0xee, 0x9b, 0xec, 0x9b, 0xee, 0x9c, 0xec, 0x9b, 0xee, - 0x9c, 0xec, 0x9b, 0xee, 0x9d, 0xec, 0x9b, 0xee, 0x9d, 0xec, 0x9b, 0xee, - 0x9d, 0xec, 0x9b, 0xee, 0x9e, 0xec, 0x9b, 0xee, 0x9e, 0xec, 0x9b, 0xee, - 0x9f, 0xec, 0x9b, 0xee, 0x9f, 0xec, 0x9b, 0xee, 0x9f, 0xec, 0xa0, 0xee, - 0xa0, 0xed, 0x9b, 0xee, 0xa0, 0xec, 0xa0, 0xee, 0xa1, 0xed, 0x9f, 0xee, - 0xa1, 0xed, 0xa0, 0xee, 0xa1, 0xed, 0x9f, 0xee, 0xa2, 0xed, 0xa0, 0xee, - 0xa2, 0xed, 0x9f, 0xee, 0xa3, 0xed, 0xa0, 0xee, 0xa3, 0xed, 0x9f, 0xee, - 0xa3, 0xed, 0xa0, 0xee, 0xa4, 0xed, 0x9f, 0xee, 0xa4, 0xed, 0xa0, 0xee, - 0xa5, 0xed, 0xa4, 0xee, 0xa5, 0xee, 0xa4, 0xee, 0xa5, 0xee, 0xa4, 0xee, - 0xa6, 0xee, 0xa4, 0xee, 0xa6, 0xee, 0xa4, 0xee, 0xa6, 0xee, 0xa4, 0xee, - 0xa7, 0xee, 0xa4, 0xee, 0xa7, 0xee, 0xa4, 0xee, 0xa8, 0xee, 0xa4, 0xee, - 0xa8, 0xee, 0xa4, 0xee, 0xa8, 0xee, 0xa4, 0xee, 0xa9, 0xee, 0xa8, 0xee, - 0xa9, 0xef, 0xa8, 0xee, 0xaa, 0xef, 0xa8, 0xee, 0xaa, 0xef, 0xa8, 0xee, - 0xaa, 0xef, 0xa8, 0xee, 0xab, 0xef, 0xa8, 0xee, 0xab, 0xef, 0xa8, 0xee, - 0xab, 0xef, 0xa8, 0xee, 0xac, 0xef, 0xa8, 0xee, 0xac, 0xef, 0xa8, 0xee, - 0xac, 0xef, 0xa8, 0xee, 0xad, 0xef, 0xac, 0xee, 0xad, 0xf0, 0xac, 0xee, - 0xae, 0xf0, 0xac, 0xee, 0xae, 0xf0, 0xac, 0xee, 0xae, 0xf0, 0xac, 0xee, - 0xaf, 0xf0, 0xac, 0xee, 0xaf, 0xf0, 0xac, 0xee, 0xaf, 0xf0, 0xac, 0xee, - 0xb0, 0xf0, 0xac, 0xee, 0xb0, 0xf0, 0xac, 0xee, 0xb0, 0xf0, 0xac, 0xee, - 0xb1, 0xf0, 0xb0, 0xee, 0xb1, 0xf1, 0xb0, 0xee, 0xb2, 0xf1, 0xb0, 0xee, - 0xb2, 0xf1, 0xb0, 0xee, 0xb2, 0xf1, 0xb0, 0xee, 0xb3, 0xf1, 0xb0, 0xee, - 0xb3, 0xf1, 0xb0, 0xee, 0xb3, 0xf1, 0xb0, 0xee, 0xb4, 0xf1, 0xb0, 0xee, - 0xb4, 0xf1, 0xb0, 0xee, 0xb4, 0xf1, 0xb0, 0xee, 0xb5, 0xf1, 0xb4, 0xee, - 0xb5, 0xf2, 0xb4, 0xee, 0xb5, 0xf2, 0xb4, 0xee, 0xb6, 0xf2, 0xb4, 0xee, - 0xb6, 0xf2, 0xb4, 0xee, 0xb6, 0xf2, 0xb4, 0xee, 0xb7, 0xf2, 0xb4, 0xee, - 0xb7, 0xf2, 0xb4, 0xee, 0xb7, 0xf2, 0xb4, 0xee, 0xb8, 0xf2, 0xb4, 0xee, - 0xb8, 0xf2, 0xb4, 0xee, 0xb8, 0xf2, 0xb8, 0xee, 0xb9, 0xf3, 0xb4, 0xee, - 0xb9, 0xf2, 0xb8, 0xee, 0xb9, 0xf3, 0xb8, 0xee, 0xba, 0xf3, 0xb8, 0xee, - 0xba, 0xf3, 0xb8, 0xee, 0xba, 0xf3, 0xb8, 0xee, 0xbb, 0xf3, 0xb8, 0xee, - 0xbb, 0xf3, 0xb8, 0xee, 0xbb, 0xf3, 0xb8, 0xee, 0xbc, 0xf3, 0xb8, 0xee, - 0xbc, 0xf3, 0xb8, 0xee, 0xbc, 0xf3, 0xb8, 0xee, 0xbd, 0xf3, 0xcc, 0xee, - 0xbd, 0xe1, 0xcc, 0xee, 0xbd, 0xde, 0xcc, 0xee, 0xbe, 0xe1, 0xcc, 0xee, - 0xbe, 0xde, 0xcc, 0xee, 0xbe, 0xe1, 0xcc, 0xee, 0xbf, 0xde, 0xcc, 0xee, - 0xbf, 0xe1, 0xcc, 0xee, 0xbf, 0xde, 0xcc, 0xee, 0xc0, 0xe1, 0xcc, 0xee, - 0xc0, 0xde, 0xcc, 0xee, 0xc0, 0xe1, 0xcc, 0xee, 0xc1, 0xde, 0xcc, 0xee, - 0xc1, 0xe1, 0xcc, 0xee, 0xc1, 0xde, 0xcc, 0xee, 0xc1, 0xdb, 0xcc, 0xee, - 0xc2, 0xde, 0xcc, 0xee, 0xc2, 0xdb, 0xcc, 0xee, 0xc2, 0xde, 0xcc, 0xee, - 0xc3, 0xdb, 0xcc, 0xee, 0xc3, 0xde, 0xcc, 0xee, 0xc3, 0xdb, 0xcc, 0xee, - 0xc4, 0xde, 0xcc, 0xee, 0xc4, 0xdb, 0xcc, 0xee, 0xc4, 0xde, 0xcc, 0xee, - 0xc5, 0xdb, 0xcc, 0xee, 0xc5, 0xde, 0xcc, 0xee, 0xc5, 0xdb, 0xcc, 0xee, - 0xc6, 0xde, 0xcc, 0xee, 0xc6, 0xdb, 0xcc, 0xee, 0xc6, 0xde, 0xcc, 0xee, - 0xc6, 0xdb, 0xcc, 0xee, 0xc7, 0xde, 0xcc, 0xee, 0xc7, 0xdb, 0xcc, 0xee, - 0xc7, 0xde, 0xcc, 0xee, 0xc8, 0xdb, 0xcc, 0xee, 0xc8, 0xde, 0xcc, 0xee, - 0xc8, 0xdb, 0xcc, 0xee, 0xc9, 0xde, 0xcc, 0xee, 0xc9, 0xdb, 0xcc, 0xee, - 0xc9, 0xde, 0xcc, 0xee, 0xc9, 0xdb, 0xcc, 0xee, 0xca, 0xde, 0xcc, 0xee, - 0xca, 0xdb, 0xcd, 0xee, 0xca, 0xdb, 0xcc, 0xee, 0xcb, 0xdb, 0xcd, 0xee, - 0xcb, 0xdb, 0xcc, 0xee, 0xcb, 0xdb, 0xcd, 0xee, 0xcc, 0xdb, 0xcc, 0xee, - 0xcc, 0xdb, 0xcd, 0xee, 0xcc, 0xdb, 0xcc, 0xee, 0xcc, 0xdb, 0xcd, 0xee, - 0xcc, 0xdb, 0xcd, 0xee, 0xcc, 0xdb, 0xcd, 0xee, 0xcc, 0xdb, 0xce, 0xee, - 0xcc, 0xdb, 0xce, 0xee, 0xcc, 0xdb, 0xce, 0xee, 0xcc, 0xdb, 0xce, 0xee, - 0xcc, 0xdb, 0xcf, 0xee, 0xcc, 0xdb, 0xcf, 0xee, 0xcc, 0xdb, 0xcf, 0xee, - 0xcc, 0xdb, 0xd0, 0xee, 0xcc, 0xdb, 0xd0, 0xee, 0xcc, 0xdb, 0xd0, 0xee, - 0xcc, 0xdb, 0xd0, 0xee, 0xcc, 0xdb, 0xd1, 0xee, 0xcc, 0xdb, 0xd1, 0xee, - 0xcc, 0xdb, 0xd1, 0xec, 0xcd, 0xdb, 0xd2, 0xee, 0xcc, 0xdb, 0xd2, 0xec, - 0xcd, 0xdb, 0xd2, 0xee, 0xcc, 0xdb, 0xd2, 0xec, 0xcd, 0xdb, 0xd3, 0xee, - 0xcc, 0xdb, 0xd3, 0xec, 0xcd, 0xdb, 0xd3, 0xee, 0xcc, 0xdb, 0xd4, 0xec, - 0xcd, 0xdb, 0xd4, 0xee, 0xcc, 0xdb, 0xd4, 0xec, 0xcd, 0xdb, 0xd4, 0xee, - 0xcc, 0xdb, 0xd5, 0xec, 0xcd, 0xdb, 0xd5, 0xee, 0xcc, 0xdb, 0xd5, 0xec, - 0xcd, 0xdb, 0xd6, 0xee, 0xcc, 0xdb, 0xd6, 0xec, 0xcd, 0xdb, 0xd6, 0xee, - 0xcc, 0xdb, 0xd6, 0xec, 0xcd, 0xdb, 0xd7, 0xee, 0xcc, 0xdb, 0xd7, 0xec, - 0xcd, 0xdb, 0xd7, 0xec, 0xcd, 0xdb, 0xd7, 0xec, 0xcd, 0xdb, 0xd8, 0xec, - 0xcd, 0xdb, 0xd8, 0xec, 0xcd, 0xdb, 0xd8, 0xec, 0xcd, 0xdb, 0xd9, 0xec, - 0xcd, 0xdb, 0xd9, 0xec, 0xcd, 0xdb, 0xd9, 0xec, 0xcd, 0xdb, 0xd9, 0xf1, - 0xe5, 0xdb, 0xda, 0xef, 0xe5, 0xdb, 0xda, 0xf1, 0xe5, 0xdb, 0xda, 0xef, - 0xe5, 0xdb, 0xda, 0xf1, 0xe5, 0xdb, 0xdb, 0xef, 0xe5, 0xdb, 0xdb, 0xf1, - 0xe5, 0xdb, 0xdb, 0xef, 0xe5, 0xdb, 0xdb, 0xf1, 0xe5, 0xdb, 0xdc, 0xef, - 0xe5, 0xdb, 0xdc, 0xf1, 0xe5, 0xdb, 0xdc, 0xef, 0xe5, 0xdb, 0xdd, 0xf1, - 0xe5, 0xdb, 0xdd, 0xef, 0xe5, 0xdb, 0xdd, 0xf1, 0xe5, 0xdb, 0xdd, 0xef, - 0xe5, 0xdb, 0xde, 0xf1, 0xe5, 0xdb, 0xde, 0xef, 0xe5, 0xdb, 0xde, 0xf1, - 0xe5, 0xdb, 0xde, 0xef, 0xe5, 0xdb, 0xdf, 0xf1, 0xe5, 0xdb, 0xdf, 0xef, - 0xe5, 0xdb, 0xdf, 0xee, 0xe5, 0xdb, 0xdf, 0xef, 0xe5, 0xdb, 0xe0, 0xee, - 0xe5, 0xdb, 0xe0, 0xef, 0xe5, 0xdb, 0xe0, 0xee, 0xe5, 0xdb, 0xe1, 0xef, - 0xe5, 0xdb, 0xe1, 0xee, 0xe5, 0xdb, 0xe1, 0xef, 0xe5, 0xdb, 0xe1, 0xee, - 0xe5, 0xdb, 0xe2, 0xef, 0xe5, 0xdb, 0xe2, 0xee, 0xe5, 0xdb, 0xe2, 0xef, - 0xe5, 0xdb, 0xe2, 0xee, 0xe5, 0xdb, 0xe3, 0xef, 0xe5, 0xdb, 0xe3, 0xee, - 0xe5, 0xdb, 0xe3, 0xef, 0xe5, 0xdb, 0xe3, 0xee, 0xe5, 0xdb, 0xe4, 0xef, - 0xe5, 0xdb, 0xe4, 0xee, 0xe5, 0xdb, 0xe4, 0xef, 0xe5, 0xdb, 0xe4, 0xee, - 0xe5, 0xdb, 0xe5, 0xee, 0xe6, 0xdb, 0xe5, 0xee, 0xe5, 0xdb, 0xe5, 0xee, - 0xe6, 0xdb, 0xe5, 0xee, 0xe5, 0xdb, 0xe5, 0xee, 0xe6, 0xdb, 0xe5, 0xee, - 0xe6, 0xdb, 0xe5, 0xee, 0xe6, 0xdb, 0xe7, 0xee, 0xe6, 0xdb, 0xe7, 0xee, - 0xe7, 0xdb, 0xe7, 0xee, 0xe7, 0xdb, 0xe7, 0xee, 0xe7, 0xdb, 0xe7, 0xee, - 0xe7, 0xdb, 0xe8, 0xee, 0xe7, 0xdb, 0xe8, 0xee, 0xe7, 0xdb, 0xe8, 0xee, - 0xe7, 0xdb, 0xe8, 0xee, 0xe7, 0xdb, 0xe9, 0xee, 0xe7, 0xdb, 0xe9, 0xee, - 0xe7, 0xdb, 0xe9, 0xee, 0xe7, 0xdb, 0xe9, 0xee, 0xe7, 0xdb, 0xea, 0xee, - 0xe7, 0xdb, 0xea, 0xec, 0xeb, 0xdb, 0xea, 0xec, 0xeb, 0xdb, 0xea, 0xec, - 0xeb, 0xdb, 0xeb, 0xec, 0xeb, 0xdb, 0xeb, 0xec, 0xeb, 0xdb, 0xeb, 0xec, - 0xeb, 0xdb, 0xeb, 0xec, 0xeb, 0xdb, 0xec, 0xec, 0xec, 0xdb, 0xec, 0xec, - 0xec, 0xdb, 0xec, 0xec, 0xec, 0xdb, 0xec, 0xec, 0xec, 0xdb, 0xec, 0xec, - 0xed, 0xdb, 0xed, 0xec, 0xee, 0xdb, 0xed, 0xec, 0xed, 0xdb, 0xed, 0xec, - 0xee, 0xdb, 0xed, 0xec, 0xed, 0xdb, 0xee, 0xec, 0xee, 0xdb, 0xee, 0xec, - 0xee, 0xdb, 0xee, 0xec, 0xee, 0xdb, 0xee, 0xec, 0xee, 0xdb, 0xef, 0xec, - 0xef, 0xdb, 0xef, 0xec, 0xef, 0xdb, 0xef, 0xef, 0xf1, 0xdb, 0xef, 0xee, - 0xf1, 0xdb, 0xf0, 0xef, 0xf1, 0xdb, 0xf0, 0xee, 0xf1, 0xdb, 0xf0, 0xee, - 0xf1, 0xdb, 0xf0, 0xee, 0xf1, 0xdb, 0xf1, 0xee, 0xf1, 0xdb, 0xf0, 0xee, - 0xf1, 0xdb, 0xf1, 0xee, 0xf1, 0xdb, 0xf1, 0xee, 0xf1, 0xdb, 0xf2, 0xee, - 0xf1, 0xdb, 0xf2, 0xee, 0xf1, 0xdb, 0xf2, 0xee, 0xf1, 0xdb, 0xf2, 0xee, - 0xf1, 0xdb, 0xf2, 0xee, 0xf1, 0xdb, 0xf3, 0xee, 0xf1, 0xdb, 0xf3, 0xee, - 0xf1, 0xdb, 0xf3, 0xee, 0xf1, 0xdb, 0xf3, 0xee, 0xf1, 0xdb, 0xf4, 0xee, - 0xf1, 0xdb, 0xf4, 0xee, 0xf1, 0xdb, 0xf4, 0xee, 0xf1, 0xdb, 0xf4, 0xee, - 0xf1, 0xdb, 0xf5, 0xee, 0xf1, 0xdb, 0xf5, 0xee, 0xf1, 0xdb, 0xf5, 0xec, - 0xf1, 0xdb, 0xf5, 0xee, 0xf1, 0xdb, 0xf5, 0xec, 0xf1, 0xdb, 0xf6, 0xee, - 0xf1, 0xdb, 0xf6, 0xec, 0xf1, 0xdb, 0xf6, 0xee, 0xf1, 0xdb, 0xf6, 0xec, - 0xf1, 0xdb, 0xf7, 0xee, 0xf1, 0xdb, 0xf7, 0xec, 0xf1, 0xdb, 0xf7, 0xee, - 0xf1, 0xdb, 0xf7, 0xec, 0xf1, 0xdb, 0xf8, 0xee, 0xf1, 0xdb, 0xf8, 0xec, - 0xf1, 0xdb, 0xf8, 0xee, 0xf1, 0xdb, 0xf8, 0xec, 0xf1, 0xdb, 0xf8, 0xee, - 0xf1, 0xdb, 0xf9, 0xec, 0xf1, 0xdb, 0xf9, 0xee, 0xf1, 0xdb, 0xf9, 0xec, - 0xf1, 0xdb, 0xf9, 0xee, 0xf1, 0xdb, 0xfa, 0xec, 0xf1, 0xdb, 0xfa, 0xee, - 0xf1, 0xdb, 0xfa, 0xec, 0xf1, 0xdb, 0xfa, 0xee, 0xf1, 0xdb, 0xfa, 0xec, - 0xf1, 0xdb, 0xfb, 0xee, 0xf1, 0xdb, 0xfb, 0xec, 0xf1, 0xdb, 0xfb, 0xee, - 0xf1, 0xdb, 0xfb, 0xec, 0xf1, 0xdb, 0xfc, 0xee, 0xf1, 0xdb, 0xfc, 0xec, - 0xf1, 0xdb, 0xfc, 0xee, 0xf1, 0xdb, 0xfc, 0xec, 0xf1, 0xdb, 0xfc, 0xee, - 0xf1, 0xdb, 0xfd, 0xec, 0xf1, 0xdb, 0xfd, 0xee, 0xf1, 0xdb, 0xfd, 0xec, - 0xf1, 0xdb, 0xfd, 0xee, 0xf1, 0xdb, 0xfe, 0xec, 0xf1, 0xdb, 0xfe, 0xee, - 0xf1, 0xdb, 0xfe, 0xec, 0xf1, 0xdb, 0xfe, 0xee, 0xf1, 0xdb, 0xfe, 0xec, - 0xf1, 0xdb, 0xff, 0xec, 0xf1, 0xdb, 0xff, 0xec, 0xf1, 0xdb, 0x03, 0xf2, - 0x83, 0xdb, 0x0a, 0xf4, 0x83, 0xdb, 0x0f, 0xf2, 0x83, 0xdb, 0x14, 0xf4, - 0x83, 0xdb, 0x17, 0xf2, 0x83, 0xdb, 0x1b, 0xf4, 0x83, 0xdb, 0x1e, 0xf2, - 0x83, 0xdb, 0x20, 0xf4, 0x83, 0xdb, 0x23, 0xf2, 0x83, 0xdb, 0x25, 0xf4, - 0x83, 0xdb, 0x27, 0xf2, 0x83, 0xdb, 0x29, 0xf4, 0x83, 0xdb, 0x2b, 0xf2, - 0x83, 0xdb, 0x2d, 0xf4, 0x83, 0xdb, 0x2f, 0xf2, 0x83, 0xdb, 0x31, 0xf4, - 0x83, 0xdb, 0x32, 0xf2, 0x83, 0xdb, 0x34, 0xf4, 0x83, 0xdb, 0x35, 0xf2, - 0x83, 0xdb, 0x37, 0xf4, 0x83, 0xdb, 0x38, 0xf2, 0x83, 0xdb, 0x3a, 0xf1, - 0x84, 0xdb, 0x3b, 0xf2, 0x83, 0xdb, 0x3c, 0xf1, 0x84, 0xdb, 0x3e, 0xf2, - 0x83, 0xdb, 0x3f, 0xf1, 0x84, 0xdb, 0x40, 0xf2, 0x83, 0xdb, 0x42, 0xf1, - 0x84, 0xdb, 0x43, 0xf2, 0x83, 0xdb, 0x44, 0xf1, 0x84, 0xdb, 0x45, 0xf2, - 0x83, 0xdb, 0x46, 0xf1, 0x84, 0xdb, 0x47, 0xf2, 0x83, 0xdb, 0x48, 0xf1, - 0x84, 0xdb, 0x49, 0xf2, 0x83, 0xdb, 0x4a, 0xf1, 0x84, 0xdb, 0x4b, 0xf2, - 0x83, 0xdb, 0x4c, 0xf1, 0x84, 0xdb, 0x4d, 0xf2, 0x83, 0xdb, 0x4e, 0xf1, - 0x84, 0xdb, 0x4f, 0xf2, 0x83, 0xdb, 0x50, 0xf1, 0x84, 0xdb, 0x51, 0xf2, - 0x83, 0xdb, 0x52, 0xf1, 0x84, 0xdb, 0x53, 0xf2, 0x83, 0xdb, 0x54, 0xf1, - 0x84, 0xdb, 0x55, 0xf2, 0x83, 0xdb, 0x56, 0xf1, 0x84, 0xdb, 0x57, 0xf2, - 0x83, 0xdb, 0x58, 0xf1, 0x84, 0xdb, 0x58, 0xf2, 0x83, 0xdb, 0x59, 0xf1, - 0x84, 0xdb, 0x5a, 0xf2, 0x83, 0xdb, 0x5b, 0xf1, 0x84, 0xdb, 0x5c, 0xef, - 0x84, 0xdb, 0x5d, 0xf1, 0x84, 0xdb, 0x5d, 0xef, 0x84, 0xdb, 0x5e, 0xf1, - 0x84, 0xdb, 0x5f, 0xef, 0x84, 0xdb, 0x60, 0xf1, 0x84, 0xdb, 0x60, 0xef, - 0x84, 0xdb, 0x61, 0xf1, 0x84, 0xdb, 0x62, 0xef, 0x84, 0xdb, 0x63, 0xf1, - 0x84, 0xdb, 0x63, 0xef, 0x84, 0xdb, 0x64, 0xf1, 0x84, 0xdb, 0x65, 0xef, - 0x84, 0xdb, 0x66, 0xf1, 0x84, 0xdb, 0x66, 0xef, 0x84, 0xdb, 0x67, 0xf1, - 0x84, 0xdb, 0x68, 0xef, 0x84, 0xdb, 0x68, 0xf1, 0x84, 0xdb, 0x69, 0xef, - 0x84, 0xdb, 0x6a, 0xf1, 0x84, 0xdb, 0x6a, 0xef, 0x84, 0xdb, 0x6b, 0xf1, - 0x84, 0xdb, 0x6c, 0xef, 0x84, 0xdb, 0x6c, 0xf1, 0x84, 0xdb, 0x6d, 0xef, - 0x84, 0xdb, 0x6e, 0xf1, 0x84, 0xdb, 0x6e, 0xef, 0x84, 0xdb, 0x6f, 0xf1, - 0x84, 0xdb, 0x70, 0xef, 0x84, 0xdb, 0x70, 0xf1, 0x84, 0xdb, 0x71, 0xef, - 0x84, 0xdb, 0x72, 0xf1, 0x84, 0xdb, 0x72, 0xef, 0x84, 0xdb, 0x73, 0xf1, - 0x84, 0xdb, 0x73, 0xef, 0x84, 0xdb, 0x74, 0xf1, 0x84, 0xdb, 0x75, 0xef, - 0x84, 0xdb, 0x75, 0xf1, 0x84, 0xdb, 0x76, 0xef, 0x84, 0xdb, 0x76, 0xf1, - 0x84, 0xdb, 0x77, 0xef, 0x84, 0xdb, 0x78, 0xef, 0x85, 0xdb, 0x78, 0xef, - 0x84, 0xdb, 0x79, 0xef, 0x85, 0xdb, 0x79, 0xef, 0x84, 0xdb, 0x7a, 0xef, - 0x85, 0xdb, 0x7a, 0xef, 0x84, 0xdb, 0x7b, 0xef, 0x85, 0xdb, 0x7c, 0xef, - 0x84, 0xdb, 0x7c, 0xef, 0x85, 0xdb, 0x7d, 0xef, 0x84, 0xdb, 0x7d, 0xef, - 0x85, 0xdb, 0x7e, 0xef, 0x84, 0xdb, 0x7e, 0xef, 0x85, 0xdb, 0x7f, 0xef, - 0x84, 0xdb, 0x7f, 0xef, 0x85, 0xdb, 0x80, 0xef, 0x84, 0xdb, 0x81, 0xef, - 0x85, 0xdb, 0x81, 0xef, 0x84, 0xdb, 0x82, 0xef, 0x85, 0xdb, 0x82, 0xef, - 0x84, 0xdb, 0x83, 0xef, 0x85, 0xdb, 0x83, 0xef, 0x84, 0xdb, 0x84, 0xef, - 0x85, 0xdb, 0x84, 0xef, 0x85, 0xdb, 0x84, 0xef, 0x85, 0xdb, 0x84, 0xef, - 0x85, 0xdb, 0x84, 0xef, 0x86, 0xdb, 0x84, 0xef, 0x86, 0xdb, 0x84, 0xef, - 0x87, 0xdb, 0x84, 0xef, 0x87, 0xdb, 0x84, 0xef, 0x88, 0xdb, 0x84, 0xef, - 0x88, 0xdb, 0x85, 0xef, 0x89, 0xd8, 0x84, 0xef, 0x89, 0xdb, 0x85, 0xef, - 0x8a, 0xd8, 0x84, 0xef, 0x8a, 0xdb, 0x85, 0xef, 0x8b, 0xd8, 0x84, 0xef, - 0x8b, 0xdb, 0x85, 0xef, 0x8c, 0xd8, 0x84, 0xef, 0x8c, 0xdb, 0x85, 0xef, - 0x8d, 0xd8, 0x84, 0xef, 0x8d, 0xdb, 0x85, 0xef, 0x8e, 0xd8, 0x84, 0xef, - 0x8e, 0xdb, 0x85, 0xef, 0x8e, 0xd8, 0x84, 0xef, 0x8f, 0xdb, 0x85, 0xef, - 0x8f, 0xd8, 0x84, 0xef, 0x90, 0xdb, 0x85, 0xef, 0x90, 0xd8, 0x84, 0xef, - 0x91, 0xdb, 0x85, 0xef, 0x91, 0xd8, 0x84, 0xef, 0x92, 0xdb, 0x85, 0xef, - 0x92, 0xd8, 0x8f, 0xef, 0x93, 0xe9, 0x8f, 0xef, 0x93, 0xe9, 0x8f, 0xef, - 0x94, 0xe9, 0x8f, 0xef, 0x94, 0xe9, 0x94, 0xef, 0x94, 0xea, 0x94, 0xef, - 0x95, 0xea, 0x94, 0xef, 0x95, 0xea, 0x94, 0xef, 0x96, 0xea, 0x94, 0xef, - 0x96, 0xea, 0x94, 0xef, 0x97, 0xea, 0x94, 0xef, 0x97, 0xea, 0x94, 0xef, - 0x98, 0xea, 0x94, 0xef, 0x98, 0xea, 0x94, 0xef, 0x98, 0xea, 0x94, 0xef, - 0x99, 0xea, 0x99, 0xef, 0x99, 0xeb, 0x99, 0xef, 0x9a, 0xeb, 0x99, 0xef, - 0x9a, 0xeb, 0x99, 0xef, 0x9a, 0xeb, 0x99, 0xef, 0x9b, 0xeb, 0x99, 0xef, - 0x9b, 0xeb, 0x99, 0xef, 0x9c, 0xeb, 0x99, 0xef, 0x9c, 0xeb, 0x99, 0xef, - 0x9d, 0xeb, 0x99, 0xef, 0x9d, 0xeb, 0x99, 0xef, 0x9d, 0xeb, 0x9e, 0xef, - 0x9e, 0xec, 0x9d, 0xef, 0x9e, 0xec, 0x9e, 0xef, 0x9f, 0xec, 0x9d, 0xef, - 0x9f, 0xec, 0x9e, 0xef, 0x9f, 0xec, 0x9d, 0xef, 0xa0, 0xec, 0x9e, 0xef, - 0xa0, 0xec, 0x9d, 0xef, 0xa1, 0xec, 0x9e, 0xef, 0xa1, 0xec, 0x9d, 0xef, - 0xa1, 0xec, 0x9e, 0xef, 0xa2, 0xec, 0xa2, 0xef, 0xa2, 0xed, 0x9e, 0xef, - 0xa3, 0xec, 0xa2, 0xef, 0xa3, 0xed, 0xa2, 0xef, 0xa3, 0xed, 0xa2, 0xef, - 0xa4, 0xed, 0xa2, 0xef, 0xa4, 0xed, 0xa2, 0xef, 0xa5, 0xed, 0xa2, 0xef, - 0xa5, 0xed, 0xa2, 0xef, 0xa5, 0xed, 0xa2, 0xef, 0xa6, 0xed, 0xa2, 0xef, - 0xa6, 0xed, 0xa2, 0xef, 0xa6, 0xed, 0xa2, 0xef, 0xa7, 0xed, 0xa6, 0xef, - 0xa7, 0xee, 0xa6, 0xef, 0xa8, 0xee, 0xa6, 0xef, 0xa8, 0xee, 0xa6, 0xef, - 0xa8, 0xee, 0xa6, 0xef, 0xa9, 0xee, 0xa6, 0xef, 0xa9, 0xee, 0xa6, 0xef, - 0xaa, 0xee, 0xa6, 0xef, 0xaa, 0xee, 0xa6, 0xef, 0xaa, 0xee, 0xa6, 0xef, - 0xab, 0xee, 0xa6, 0xef, 0xab, 0xee, 0xab, 0xef, 0xab, 0xef, 0xaa, 0xef, - 0xac, 0xef, 0xab, 0xef, 0xac, 0xef, 0xaa, 0xef, 0xac, 0xef, 0xab, 0xef, - 0xad, 0xef, 0xaa, 0xef, 0xad, 0xef, 0xab, 0xef, 0xae, 0xef, 0xaa, 0xef, - 0xae, 0xef, 0xab, 0xef, 0xae, 0xef, 0xaa, 0xef, 0xaf, 0xef, 0xab, 0xef, - 0xaf, 0xef, 0xaf, 0xef, 0xaf, 0xf0, 0xae, 0xef, 0xb0, 0xf0, 0xaf, 0xef, - 0xb0, 0xf0, 0xae, 0xef, 0xb0, 0xf0, 0xaf, 0xef, 0xb1, 0xf0, 0xae, 0xef, - 0xb1, 0xf0, 0xaf, 0xef, 0xb2, 0xf0, 0xae, 0xef, 0xb2, 0xf0, 0xaf, 0xef, - 0xb2, 0xf0, 0xae, 0xef, 0xb3, 0xf0, 0xaf, 0xef, 0xb3, 0xf0, 0xb3, 0xef, - 0xb3, 0xf1, 0xb2, 0xef, 0xb4, 0xf1, 0xb3, 0xef, 0xb4, 0xf1, 0xb2, 0xef, - 0xb4, 0xf1, 0xb3, 0xef, 0xb5, 0xf1, 0xb2, 0xef, 0xb5, 0xf1, 0xb3, 0xef, - 0xb5, 0xf1, 0xb2, 0xef, 0xb6, 0xf1, 0xb3, 0xef, 0xb6, 0xf1, 0xb2, 0xef, - 0xb6, 0xf1, 0xb3, 0xef, 0xb7, 0xf1, 0xb6, 0xef, 0xb7, 0xf2, 0xb6, 0xef, - 0xb7, 0xf2, 0xb6, 0xef, 0xb8, 0xf2, 0xb6, 0xef, 0xb8, 0xf2, 0xb6, 0xef, - 0xb8, 0xf2, 0xb6, 0xef, 0xb9, 0xf2, 0xb6, 0xef, 0xb9, 0xf2, 0xb6, 0xef, - 0xb9, 0xf2, 0xb6, 0xef, 0xba, 0xf2, 0xb6, 0xef, 0xba, 0xf2, 0xb6, 0xef, - 0xba, 0xf2, 0xba, 0xef, 0xbb, 0xf3, 0xb6, 0xef, 0xbb, 0xf2, 0xba, 0xef, - 0xbb, 0xf3, 0xba, 0xef, 0xbc, 0xf3, 0xba, 0xef, 0xbc, 0xf3, 0xba, 0xef, - 0xbc, 0xf3, 0xba, 0xef, 0xbd, 0xf3, 0xcc, 0xef, 0xbd, 0xe0, 0xcc, 0xef, - 0xbd, 0xdd, 0xcc, 0xef, 0xbe, 0xe0, 0xcc, 0xef, 0xbe, 0xdd, 0xcc, 0xef, - 0xbe, 0xe0, 0xcc, 0xef, 0xbf, 0xdd, 0xcc, 0xef, 0xbf, 0xe0, 0xcc, 0xef, - 0xbf, 0xdd, 0xcc, 0xef, 0xc0, 0xe0, 0xcc, 0xef, 0xc0, 0xdd, 0xcc, 0xef, - 0xc0, 0xe0, 0xcc, 0xef, 0xc1, 0xdd, 0xcc, 0xef, 0xc1, 0xe0, 0xcc, 0xef, - 0xc1, 0xdd, 0xcc, 0xef, 0xc1, 0xe0, 0xcc, 0xef, 0xc2, 0xdd, 0xcc, 0xef, - 0xc2, 0xe0, 0xcc, 0xef, 0xc2, 0xdd, 0xcc, 0xef, 0xc3, 0xe0, 0xcc, 0xef, - 0xc3, 0xdd, 0xcc, 0xef, 0xc3, 0xe0, 0xcc, 0xef, 0xc4, 0xdd, 0xcc, 0xef, - 0xc4, 0xe0, 0xcc, 0xef, 0xc4, 0xdd, 0xcc, 0xef, 0xc5, 0xe0, 0xcc, 0xef, - 0xc5, 0xdd, 0xcc, 0xef, 0xc5, 0xdb, 0xcc, 0xef, 0xc6, 0xdd, 0xcc, 0xef, - 0xc6, 0xdb, 0xcc, 0xef, 0xc6, 0xdd, 0xcc, 0xef, 0xc6, 0xdb, 0xcc, 0xef, - 0xc7, 0xdd, 0xcc, 0xef, 0xc7, 0xdb, 0xcc, 0xef, 0xc7, 0xdd, 0xcc, 0xef, - 0xc8, 0xdb, 0xcc, 0xef, 0xc8, 0xdd, 0xcc, 0xef, 0xc8, 0xdb, 0xcc, 0xef, - 0xc9, 0xdd, 0xcc, 0xef, 0xc9, 0xdb, 0xcc, 0xef, 0xc9, 0xdd, 0xcc, 0xef, - 0xc9, 0xdb, 0xcc, 0xef, 0xca, 0xdd, 0xcc, 0xef, 0xca, 0xdb, 0xcc, 0xef, - 0xca, 0xdd, 0xcc, 0xef, 0xcb, 0xdb, 0xcc, 0xef, 0xcb, 0xdd, 0xcc, 0xef, - 0xcb, 0xdb, 0xcd, 0xef, 0xcc, 0xdb, 0xcc, 0xef, 0xcc, 0xdb, 0xcd, 0xef, - 0xcc, 0xdb, 0xcc, 0xee, 0xcc, 0xdb, 0xcd, 0xef, 0xcc, 0xdb, 0xcd, 0xee, - 0xcc, 0xdb, 0xcd, 0xef, 0xcc, 0xdb, 0xce, 0xee, 0xcc, 0xdb, 0xce, 0xef, - 0xcc, 0xdb, 0xce, 0xee, 0xcc, 0xdb, 0xce, 0xef, 0xcc, 0xdb, 0xcf, 0xee, - 0xcc, 0xdb, 0xcf, 0xef, 0xcc, 0xdb, 0xcf, 0xee, 0xcc, 0xdb, 0xd0, 0xef, - 0xcc, 0xdb, 0xd0, 0xee, 0xcc, 0xdb, 0xd0, 0xef, 0xcc, 0xdb, 0xd0, 0xee, - 0xcc, 0xdb, 0xd1, 0xef, 0xcc, 0xdb, 0xd1, 0xee, 0xcc, 0xdb, 0xd1, 0xed, - 0xcd, 0xdb, 0xd2, 0xee, 0xcc, 0xdb, 0xd2, 0xed, 0xcd, 0xdb, 0xd2, 0xee, - 0xcc, 0xdb, 0xd2, 0xed, 0xcd, 0xdb, 0xd3, 0xee, 0xcc, 0xdb, 0xd3, 0xed, - 0xcd, 0xdb, 0xd3, 0xee, 0xcc, 0xdb, 0xd4, 0xed, 0xcd, 0xdb, 0xd4, 0xee, - 0xcc, 0xdb, 0xd4, 0xed, 0xcd, 0xdb, 0xd4, 0xee, 0xcc, 0xdb, 0xd5, 0xed, - 0xcd, 0xdb, 0xd5, 0xee, 0xcc, 0xdb, 0xd5, 0xed, 0xcd, 0xdb, 0xd6, 0xee, - 0xcc, 0xdb, 0xd6, 0xed, 0xcd, 0xdb, 0xd6, 0xee, 0xcc, 0xdb, 0xd6, 0xed, - 0xcd, 0xdb, 0xd7, 0xee, 0xcc, 0xdb, 0xd7, 0xed, 0xcd, 0xdb, 0xd7, 0xee, - 0xcc, 0xdb, 0xd7, 0xed, 0xcd, 0xdb, 0xd8, 0xee, 0xcc, 0xdb, 0xd8, 0xed, - 0xcd, 0xdb, 0xd8, 0xee, 0xcc, 0xdb, 0xd9, 0xed, 0xcd, 0xdb, 0xd9, 0xee, - 0xcc, 0xdb, 0xd9, 0xed, 0xcd, 0xdb, 0xd9, 0xf1, 0xe5, 0xdb, 0xda, 0xef, - 0xe5, 0xdb, 0xda, 0xf1, 0xe5, 0xdb, 0xda, 0xef, 0xe5, 0xdb, 0xda, 0xf1, - 0xe5, 0xdb, 0xdb, 0xef, 0xe5, 0xdb, 0xdb, 0xf1, 0xe5, 0xdb, 0xdb, 0xef, - 0xe5, 0xdb, 0xdb, 0xf1, 0xe5, 0xdb, 0xdc, 0xef, 0xe5, 0xdb, 0xdc, 0xf1, - 0xe5, 0xdb, 0xdc, 0xef, 0xe5, 0xdb, 0xdd, 0xf1, 0xe5, 0xdb, 0xdd, 0xef, - 0xe5, 0xdb, 0xdd, 0xf1, 0xe5, 0xdb, 0xdd, 0xef, 0xe5, 0xdb, 0xde, 0xf1, - 0xe5, 0xdb, 0xde, 0xef, 0xe5, 0xdb, 0xde, 0xf1, 0xe5, 0xdb, 0xde, 0xef, - 0xe5, 0xdb, 0xdf, 0xf1, 0xe5, 0xdb, 0xdf, 0xef, 0xe5, 0xdb, 0xdf, 0xf1, - 0xe5, 0xdb, 0xdf, 0xef, 0xe5, 0xdb, 0xe0, 0xf1, 0xe5, 0xdb, 0xe0, 0xef, - 0xe5, 0xdb, 0xe0, 0xf1, 0xe5, 0xdb, 0xe1, 0xef, 0xe5, 0xdb, 0xe1, 0xf1, - 0xe5, 0xdb, 0xe1, 0xef, 0xe5, 0xdb, 0xe1, 0xef, 0xe5, 0xdb, 0xe2, 0xef, - 0xe5, 0xdb, 0xe2, 0xef, 0xe5, 0xdb, 0xe2, 0xef, 0xe5, 0xdb, 0xe2, 0xef, - 0xe5, 0xdb, 0xe3, 0xef, 0xe5, 0xdb, 0xe3, 0xef, 0xe5, 0xdb, 0xe3, 0xef, - 0xe5, 0xdb, 0xe3, 0xef, 0xe5, 0xdb, 0xe4, 0xef, 0xe5, 0xdb, 0xe4, 0xef, - 0xe5, 0xdb, 0xe4, 0xef, 0xe5, 0xdb, 0xe4, 0xef, 0xe5, 0xdb, 0xe5, 0xef, - 0xe5, 0xdb, 0xe5, 0xef, 0xe5, 0xdb, 0xe5, 0xef, 0xe5, 0xdb, 0xe5, 0xef, - 0xe5, 0xdb, 0xe5, 0xef, 0xe6, 0xdb, 0xe5, 0xef, 0xe6, 0xdb, 0xe5, 0xef, - 0xe6, 0xdb, 0xe7, 0xef, 0xe6, 0xdb, 0xe7, 0xef, 0xe7, 0xdb, 0xe7, 0xef, - 0xe7, 0xdb, 0xe7, 0xef, 0xe7, 0xdb, 0xe7, 0xef, 0xe7, 0xdb, 0xe8, 0xef, - 0xe7, 0xdb, 0xe8, 0xef, 0xe7, 0xdb, 0xe8, 0xee, 0xe7, 0xdb, 0xe8, 0xef, - 0xe7, 0xdb, 0xe9, 0xee, 0xe7, 0xdb, 0xe9, 0xef, 0xe7, 0xdb, 0xe9, 0xee, - 0xe7, 0xdb, 0xe9, 0xef, 0xe7, 0xdb, 0xea, 0xee, 0xe7, 0xdb, 0xea, 0xec, - 0xea, 0xdb, 0xea, 0xec, 0xea, 0xdb, 0xea, 0xec, 0xea, 0xdb, 0xeb, 0xec, - 0xec, 0xdb, 0xeb, 0xec, 0xec, 0xdb, 0xeb, 0xec, 0xec, 0xdb, 0xeb, 0xec, - 0xec, 0xdb, 0xec, 0xec, 0xec, 0xdb, 0xec, 0xec, 0xec, 0xdb, 0xec, 0xec, - 0xec, 0xdb, 0xec, 0xec, 0xec, 0xdb, 0xec, 0xec, 0xec, 0xdb, 0xed, 0xec, - 0xed, 0xdb, 0xed, 0xec, 0xed, 0xdb, 0xed, 0xec, 0xed, 0xdb, 0xed, 0xec, - 0xed, 0xdb, 0xee, 0xec, 0xee, 0xdb, 0xee, 0xed, 0xef, 0xdb, 0xee, 0xed, - 0xef, 0xdb, 0xee, 0xed, 0xef, 0xdb, 0xef, 0xed, 0xef, 0xdb, 0xef, 0xed, - 0xef, 0xdb, 0xef, 0xef, 0xf1, 0xdb, 0xef, 0xef, 0xf1, 0xdb, 0xf0, 0xef, - 0xf1, 0xdb, 0xf0, 0xef, 0xf1, 0xdb, 0xf0, 0xef, 0xf1, 0xdb, 0xf0, 0xef, - 0xf1, 0xdb, 0xf1, 0xef, 0xf1, 0xdb, 0xf0, 0xef, 0xf1, 0xdb, 0xf1, 0xef, - 0xf1, 0xdb, 0xf1, 0xef, 0xf1, 0xdb, 0xf2, 0xef, 0xf1, 0xdb, 0xf2, 0xef, - 0xf1, 0xdb, 0xf2, 0xee, 0xf1, 0xdb, 0xf2, 0xef, 0xf1, 0xdb, 0xf2, 0xee, - 0xf1, 0xdb, 0xf3, 0xef, 0xf1, 0xdb, 0xf3, 0xee, 0xf1, 0xdb, 0xf3, 0xef, - 0xf1, 0xdb, 0xf3, 0xee, 0xf1, 0xdb, 0xf4, 0xef, 0xf1, 0xdb, 0xf4, 0xee, - 0xf1, 0xdb, 0xf4, 0xef, 0xf1, 0xdb, 0xf4, 0xee, 0xf1, 0xdb, 0xf5, 0xef, - 0xf1, 0xdb, 0xf5, 0xee, 0xf1, 0xdb, 0xf5, 0xef, 0xf1, 0xdb, 0xf5, 0xee, - 0xf1, 0xdb, 0xf5, 0xef, 0xf1, 0xdb, 0xf6, 0xee, 0xf1, 0xdb, 0xf6, 0xef, - 0xf1, 0xdb, 0xf6, 0xee, 0xf1, 0xdb, 0xf6, 0xef, 0xf1, 0xdb, 0xf7, 0xee, - 0xf1, 0xdb, 0xf7, 0xec, 0xf1, 0xdb, 0xf7, 0xee, 0xf1, 0xdb, 0xf7, 0xec, - 0xf1, 0xdb, 0xf8, 0xee, 0xf1, 0xdb, 0xf8, 0xec, 0xf1, 0xdb, 0xf8, 0xee, - 0xf1, 0xdb, 0xf8, 0xec, 0xf1, 0xdb, 0xf8, 0xee, 0xf1, 0xdb, 0xf9, 0xec, - 0xf1, 0xdb, 0xf9, 0xee, 0xf1, 0xdb, 0xf9, 0xec, 0xf1, 0xdb, 0xf9, 0xee, - 0xf1, 0xdb, 0xfa, 0xec, 0xf1, 0xdb, 0xfa, 0xee, 0xf1, 0xdb, 0xfa, 0xec, - 0xf1, 0xdb, 0xfa, 0xee, 0xf1, 0xdb, 0xfa, 0xec, 0xf1, 0xdb, 0xfb, 0xee, - 0xf1, 0xdb, 0xfb, 0xec, 0xf1, 0xdb, 0xfb, 0xee, 0xf1, 0xdb, 0xfb, 0xec, - 0xf1, 0xdb, 0xfc, 0xee, 0xf1, 0xdb, 0xfc, 0xec, 0xf1, 0xdb, 0xfc, 0xee, - 0xf1, 0xdb, 0xfc, 0xec, 0xf1, 0xdb, 0xfc, 0xee, 0xf1, 0xdb, 0xfd, 0xec, - 0xf1, 0xdb, 0xfd, 0xee, 0xf1, 0xdb, 0xfd, 0xec, 0xf1, 0xdb, 0xfd, 0xee, - 0xf1, 0xdb, 0xfe, 0xec, 0xf1, 0xdb, 0xfe, 0xee, 0xf1, 0xdb, 0xfe, 0xec, - 0xf1, 0xdb, 0xfe, 0xee, 0xf1, 0xdb, 0xfe, 0xec, 0xf1, 0xdb, 0xff, 0xec, - 0xf1, 0xdb, 0xff, 0xec, 0xf1, 0xdb, 0x03, 0xf3, 0x83, 0xdc, 0x0a, 0xf4, - 0x83, 0xdc, 0x0f, 0xf3, 0x83, 0xdc, 0x14, 0xf4, 0x83, 0xdc, 0x17, 0xf3, - 0x83, 0xdc, 0x1b, 0xf4, 0x83, 0xdc, 0x1e, 0xf3, 0x83, 0xdc, 0x20, 0xf4, - 0x83, 0xdc, 0x23, 0xf3, 0x83, 0xdc, 0x25, 0xf4, 0x83, 0xdc, 0x27, 0xf3, - 0x83, 0xdc, 0x29, 0xf4, 0x83, 0xdc, 0x2b, 0xf3, 0x83, 0xdc, 0x2d, 0xf1, - 0x84, 0xdc, 0x2f, 0xf3, 0x83, 0xdc, 0x31, 0xf1, 0x84, 0xdc, 0x32, 0xf3, - 0x83, 0xdc, 0x34, 0xf1, 0x84, 0xdc, 0x35, 0xf3, 0x83, 0xdc, 0x37, 0xf1, - 0x84, 0xdc, 0x38, 0xf3, 0x83, 0xdc, 0x3a, 0xf1, 0x84, 0xdc, 0x3b, 0xf3, - 0x83, 0xdc, 0x3c, 0xf1, 0x84, 0xdc, 0x3e, 0xf3, 0x83, 0xdc, 0x3f, 0xf1, - 0x84, 0xdc, 0x40, 0xf3, 0x83, 0xdc, 0x42, 0xf1, 0x84, 0xdc, 0x43, 0xf3, - 0x83, 0xdc, 0x44, 0xf1, 0x84, 0xdc, 0x45, 0xf3, 0x83, 0xdc, 0x46, 0xf1, - 0x84, 0xdc, 0x47, 0xf3, 0x83, 0xdc, 0x48, 0xf1, 0x84, 0xdc, 0x49, 0xf3, - 0x83, 0xdc, 0x4a, 0xf1, 0x84, 0xdc, 0x4b, 0xf3, 0x83, 0xdc, 0x4c, 0xf1, - 0x84, 0xdc, 0x4d, 0xf3, 0x83, 0xdc, 0x4e, 0xf1, 0x84, 0xdc, 0x4f, 0xf3, - 0x83, 0xdc, 0x50, 0xf1, 0x84, 0xdc, 0x51, 0xf3, 0x83, 0xdc, 0x52, 0xf1, - 0x84, 0xdc, 0x53, 0xf3, 0x83, 0xdc, 0x54, 0xf1, 0x84, 0xdc, 0x55, 0xf3, - 0x83, 0xdc, 0x56, 0xf1, 0x84, 0xdc, 0x57, 0xf3, 0x83, 0xdc, 0x58, 0xf1, - 0x84, 0xdc, 0x58, 0xf3, 0x83, 0xdc, 0x59, 0xf1, 0x84, 0xdc, 0x5a, 0xf3, - 0x83, 0xdc, 0x5b, 0xf1, 0x84, 0xdc, 0x5c, 0xef, 0x84, 0xdc, 0x5d, 0xf1, - 0x84, 0xdc, 0x5d, 0xef, 0x84, 0xdc, 0x5e, 0xf1, 0x84, 0xdc, 0x5f, 0xef, - 0x84, 0xdc, 0x60, 0xf1, 0x84, 0xdc, 0x60, 0xef, 0x84, 0xdc, 0x61, 0xf1, - 0x84, 0xdc, 0x62, 0xef, 0x84, 0xdc, 0x63, 0xf1, 0x84, 0xdc, 0x63, 0xef, - 0x84, 0xdc, 0x64, 0xf1, 0x84, 0xdc, 0x65, 0xef, 0x84, 0xdc, 0x66, 0xf1, - 0x84, 0xdc, 0x66, 0xef, 0x84, 0xdc, 0x67, 0xf1, 0x84, 0xdc, 0x68, 0xef, - 0x84, 0xdc, 0x68, 0xf1, 0x84, 0xdc, 0x69, 0xef, 0x84, 0xdc, 0x6a, 0xf1, - 0x84, 0xdc, 0x6a, 0xef, 0x84, 0xdc, 0x6b, 0xf1, 0x84, 0xdc, 0x6c, 0xef, - 0x84, 0xdc, 0x6c, 0xf1, 0x84, 0xdc, 0x6d, 0xef, 0x84, 0xdc, 0x6e, 0xf1, - 0x84, 0xdc, 0x6e, 0xef, 0x84, 0xdc, 0x6f, 0xf1, 0x84, 0xdc, 0x70, 0xef, - 0x84, 0xdc, 0x70, 0xf1, 0x84, 0xdc, 0x71, 0xef, 0x84, 0xdc, 0x72, 0xf1, - 0x84, 0xdc, 0x72, 0xef, 0x84, 0xdc, 0x73, 0xf1, 0x84, 0xdc, 0x73, 0xef, - 0x84, 0xdc, 0x74, 0xf1, 0x84, 0xdc, 0x75, 0xef, 0x84, 0xdc, 0x75, 0xf1, - 0x84, 0xdc, 0x76, 0xef, 0x84, 0xdc, 0x76, 0xf1, 0x84, 0xdc, 0x77, 0xef, - 0x84, 0xdc, 0x78, 0xf1, 0x84, 0xdc, 0x78, 0xef, 0x84, 0xdc, 0x79, 0xf1, - 0x84, 0xdc, 0x79, 0xef, 0x84, 0xdc, 0x7a, 0xf1, 0x84, 0xdc, 0x7a, 0xef, - 0x84, 0xdc, 0x7b, 0xf1, 0x84, 0xdc, 0x7c, 0xef, 0x84, 0xdc, 0x7c, 0xef, - 0x85, 0xdc, 0x7d, 0xef, 0x84, 0xdc, 0x7d, 0xef, 0x85, 0xdc, 0x7e, 0xef, - 0x84, 0xdc, 0x7e, 0xef, 0x85, 0xdc, 0x7f, 0xef, 0x84, 0xdc, 0x7f, 0xef, - 0x85, 0xdc, 0x80, 0xef, 0x84, 0xdc, 0x81, 0xef, 0x85, 0xdc, 0x81, 0xef, - 0x84, 0xdc, 0x82, 0xef, 0x85, 0xdc, 0x82, 0xef, 0x84, 0xdc, 0x83, 0xef, - 0x85, 0xdc, 0x83, 0xef, 0x84, 0xdc, 0x84, 0xef, 0x85, 0xdc, 0x84, 0xef, - 0x85, 0xdc, 0x84, 0xef, 0x85, 0xdc, 0x84, 0xef, 0x85, 0xdc, 0x84, 0xef, - 0x86, 0xdc, 0x84, 0xef, 0x86, 0xdc, 0x84, 0xef, 0x87, 0xdc, 0x84, 0xef, - 0x87, 0xdc, 0x84, 0xef, 0x88, 0xdc, 0x84, 0xef, 0x88, 0xdc, 0x85, 0xef, - 0x89, 0xd9, 0x84, 0xef, 0x89, 0xdc, 0x85, 0xef, 0x8a, 0xd9, 0x84, 0xef, - 0x8a, 0xdc, 0x85, 0xef, 0x8b, 0xd9, 0x84, 0xef, 0x8b, 0xdc, 0x85, 0xef, - 0x8c, 0xd9, 0x84, 0xef, 0x8c, 0xdc, 0x85, 0xef, 0x8d, 0xd9, 0x84, 0xef, - 0x8d, 0xdc, 0x85, 0xef, 0x8e, 0xd9, 0x84, 0xef, 0x8e, 0xdc, 0x85, 0xef, - 0x8e, 0xd9, 0x84, 0xef, 0x8f, 0xdc, 0x85, 0xef, 0x8f, 0xd9, 0x84, 0xef, - 0x90, 0xdc, 0x85, 0xef, 0x90, 0xd9, 0x84, 0xef, 0x91, 0xdc, 0x85, 0xef, - 0x91, 0xd9, 0x84, 0xef, 0x92, 0xdc, 0x91, 0xef, 0x92, 0xea, 0x92, 0xef, - 0x93, 0xea, 0x91, 0xef, 0x93, 0xea, 0x92, 0xef, 0x94, 0xea, 0x91, 0xef, - 0x94, 0xea, 0x92, 0xef, 0x94, 0xea, 0x91, 0xef, 0x95, 0xea, 0x92, 0xef, - 0x95, 0xea, 0x91, 0xef, 0x96, 0xea, 0x92, 0xef, 0x96, 0xea, 0x97, 0xef, - 0x97, 0xeb, 0x96, 0xef, 0x97, 0xeb, 0x97, 0xef, 0x98, 0xeb, 0x96, 0xef, - 0x98, 0xeb, 0x97, 0xef, 0x98, 0xeb, 0x96, 0xef, 0x99, 0xeb, 0x97, 0xef, - 0x99, 0xeb, 0x96, 0xef, 0x9a, 0xeb, 0x97, 0xef, 0x9a, 0xeb, 0x96, 0xef, - 0x9a, 0xeb, 0x97, 0xef, 0x9b, 0xeb, 0x9b, 0xef, 0x9b, 0xec, 0x9b, 0xef, - 0x9c, 0xec, 0x9b, 0xef, 0x9c, 0xec, 0x9b, 0xef, 0x9d, 0xec, 0x9b, 0xef, - 0x9d, 0xec, 0x9b, 0xef, 0x9d, 0xec, 0x9b, 0xef, 0x9e, 0xec, 0x9b, 0xef, - 0x9e, 0xec, 0x9b, 0xef, 0x9f, 0xec, 0x9b, 0xef, 0x9f, 0xec, 0x9b, 0xef, - 0x9f, 0xec, 0xa0, 0xef, 0xa0, 0xed, 0x9f, 0xef, 0xa0, 0xed, 0xa0, 0xef, - 0xa1, 0xed, 0x9f, 0xef, 0xa1, 0xed, 0xa0, 0xef, 0xa1, 0xed, 0x9f, 0xef, - 0xa2, 0xed, 0xa0, 0xef, 0xa2, 0xed, 0x9f, 0xef, 0xa3, 0xed, 0xa0, 0xef, - 0xa3, 0xed, 0x9f, 0xef, 0xa3, 0xed, 0xa0, 0xef, 0xa4, 0xed, 0xa4, 0xef, - 0xa4, 0xee, 0xa0, 0xef, 0xa5, 0xed, 0xa4, 0xef, 0xa5, 0xee, 0xa4, 0xef, - 0xa5, 0xee, 0xa4, 0xef, 0xa6, 0xee, 0xa4, 0xef, 0xa6, 0xee, 0xa4, 0xef, - 0xa6, 0xee, 0xa4, 0xef, 0xa7, 0xee, 0xa4, 0xef, 0xa7, 0xee, 0xa4, 0xef, - 0xa8, 0xee, 0xa4, 0xef, 0xa8, 0xee, 0xa4, 0xef, 0xa8, 0xee, 0xa4, 0xef, - 0xa9, 0xee, 0xa8, 0xef, 0xa9, 0xef, 0xa8, 0xef, 0xaa, 0xef, 0xa8, 0xef, - 0xaa, 0xef, 0xa8, 0xef, 0xaa, 0xef, 0xa8, 0xef, 0xab, 0xef, 0xa8, 0xef, - 0xab, 0xef, 0xa8, 0xef, 0xab, 0xef, 0xa8, 0xef, 0xac, 0xef, 0xa8, 0xef, - 0xac, 0xef, 0xa8, 0xef, 0xac, 0xef, 0xa8, 0xef, 0xad, 0xef, 0xac, 0xef, - 0xad, 0xf0, 0xac, 0xef, 0xae, 0xf0, 0xac, 0xef, 0xae, 0xf0, 0xac, 0xef, - 0xae, 0xf0, 0xac, 0xef, 0xaf, 0xf0, 0xac, 0xef, 0xaf, 0xf0, 0xac, 0xef, - 0xaf, 0xf0, 0xac, 0xef, 0xb0, 0xf0, 0xac, 0xef, 0xb0, 0xf0, 0xac, 0xef, - 0xb0, 0xf0, 0xac, 0xef, 0xb1, 0xf0, 0xb0, 0xef, 0xb1, 0xf1, 0xb0, 0xef, - 0xb2, 0xf1, 0xb0, 0xef, 0xb2, 0xf1, 0xb0, 0xef, 0xb2, 0xf1, 0xb0, 0xef, - 0xb3, 0xf1, 0xb0, 0xef, 0xb3, 0xf1, 0xb0, 0xef, 0xb3, 0xf1, 0xb0, 0xef, - 0xb4, 0xf1, 0xb0, 0xef, 0xb4, 0xf1, 0xb0, 0xef, 0xb4, 0xf1, 0xb0, 0xef, - 0xb5, 0xf1, 0xb4, 0xef, 0xb5, 0xf2, 0xb4, 0xef, 0xb5, 0xf2, 0xb4, 0xef, - 0xb6, 0xf2, 0xb4, 0xef, 0xb6, 0xf2, 0xb4, 0xef, 0xb6, 0xf2, 0xb4, 0xef, - 0xb7, 0xf2, 0xb4, 0xef, 0xb7, 0xf2, 0xb4, 0xef, 0xb7, 0xf2, 0xb4, 0xef, - 0xb8, 0xf2, 0xb4, 0xef, 0xb8, 0xf2, 0xb4, 0xef, 0xb8, 0xf2, 0xb8, 0xef, - 0xb9, 0xf3, 0xb8, 0xef, 0xb9, 0xf3, 0xb8, 0xef, 0xb9, 0xf3, 0xb8, 0xef, - 0xba, 0xf3, 0xb8, 0xef, 0xba, 0xf3, 0xb8, 0xef, 0xba, 0xf3, 0xb8, 0xef, - 0xbb, 0xf3, 0xb8, 0xef, 0xbb, 0xf3, 0xb8, 0xef, 0xbb, 0xf3, 0xb8, 0xef, - 0xbc, 0xf3, 0xb8, 0xef, 0xbc, 0xf3, 0xbc, 0xef, 0xbc, 0xf4, 0xb8, 0xef, - 0xbd, 0xf3, 0xbc, 0xef, 0xbd, 0xf4, 0xcc, 0xef, 0xbd, 0xe3, 0xcc, 0xef, - 0xbe, 0xe1, 0xcc, 0xef, 0xbe, 0xe3, 0xcc, 0xef, 0xbe, 0xe1, 0xcc, 0xef, - 0xbf, 0xde, 0xcc, 0xef, 0xbf, 0xe1, 0xcc, 0xef, 0xbf, 0xde, 0xcc, 0xef, - 0xc0, 0xe1, 0xcc, 0xef, 0xc0, 0xde, 0xcc, 0xef, 0xc0, 0xe1, 0xcc, 0xef, - 0xc1, 0xde, 0xcc, 0xef, 0xc1, 0xe1, 0xcc, 0xef, 0xc1, 0xde, 0xcc, 0xef, - 0xc1, 0xe1, 0xcc, 0xef, 0xc2, 0xde, 0xcc, 0xef, 0xc2, 0xe1, 0xcc, 0xef, - 0xc2, 0xde, 0xcc, 0xef, 0xc3, 0xe1, 0xcc, 0xef, 0xc3, 0xde, 0xcc, 0xef, - 0xc3, 0xe1, 0xcc, 0xef, 0xc4, 0xde, 0xcc, 0xef, 0xc4, 0xe1, 0xcc, 0xef, - 0xc4, 0xde, 0xcc, 0xef, 0xc5, 0xe1, 0xcc, 0xef, 0xc5, 0xde, 0xcc, 0xef, - 0xc5, 0xdc, 0xcc, 0xef, 0xc6, 0xde, 0xcc, 0xef, 0xc6, 0xdc, 0xcc, 0xef, - 0xc6, 0xde, 0xcc, 0xef, 0xc6, 0xdc, 0xcc, 0xef, 0xc7, 0xde, 0xcc, 0xef, - 0xc7, 0xdc, 0xcc, 0xef, 0xc7, 0xde, 0xcc, 0xef, 0xc8, 0xdc, 0xcc, 0xef, - 0xc8, 0xde, 0xcc, 0xef, 0xc8, 0xdc, 0xcc, 0xef, 0xc9, 0xde, 0xcc, 0xef, - 0xc9, 0xdc, 0xcc, 0xef, 0xc9, 0xde, 0xcc, 0xef, 0xc9, 0xdc, 0xcc, 0xef, - 0xca, 0xde, 0xcc, 0xef, 0xca, 0xdc, 0xcc, 0xef, 0xca, 0xde, 0xcc, 0xef, - 0xcb, 0xdc, 0xcc, 0xef, 0xcb, 0xde, 0xcc, 0xef, 0xcb, 0xdc, 0xcd, 0xef, - 0xcc, 0xdc, 0xcc, 0xef, 0xcc, 0xdc, 0xcd, 0xef, 0xcc, 0xdc, 0xcc, 0xef, - 0xcc, 0xdc, 0xcd, 0xef, 0xcc, 0xdc, 0xcd, 0xef, 0xcc, 0xdc, 0xcd, 0xef, - 0xcc, 0xdc, 0xce, 0xee, 0xcc, 0xdc, 0xce, 0xef, 0xcc, 0xdc, 0xce, 0xee, - 0xcc, 0xdc, 0xce, 0xef, 0xcc, 0xdc, 0xcf, 0xee, 0xcc, 0xdc, 0xcf, 0xef, - 0xcc, 0xdc, 0xcf, 0xee, 0xcc, 0xdc, 0xd0, 0xef, 0xcc, 0xdc, 0xd0, 0xee, - 0xcc, 0xdc, 0xd0, 0xef, 0xcc, 0xdc, 0xd0, 0xee, 0xcc, 0xdc, 0xd1, 0xef, - 0xcc, 0xdc, 0xd1, 0xee, 0xcc, 0xdc, 0xd1, 0xef, 0xcc, 0xdc, 0xd2, 0xee, - 0xcc, 0xdc, 0xd2, 0xef, 0xcc, 0xdc, 0xd2, 0xee, 0xcc, 0xdc, 0xd2, 0xef, - 0xcc, 0xdc, 0xd3, 0xee, 0xcc, 0xdc, 0xd3, 0xef, 0xcc, 0xdc, 0xd3, 0xee, - 0xcc, 0xdc, 0xd4, 0xec, 0xcd, 0xdc, 0xd4, 0xee, 0xcc, 0xdc, 0xd4, 0xec, - 0xcd, 0xdc, 0xd4, 0xee, 0xcc, 0xdc, 0xd5, 0xec, 0xcd, 0xdc, 0xd5, 0xee, - 0xcc, 0xdc, 0xd5, 0xec, 0xcd, 0xdc, 0xd6, 0xee, 0xcc, 0xdc, 0xd6, 0xec, - 0xcd, 0xdc, 0xd6, 0xee, 0xcc, 0xdc, 0xd6, 0xec, 0xcd, 0xdc, 0xd7, 0xee, - 0xcc, 0xdc, 0xd7, 0xec, 0xcd, 0xdc, 0xd7, 0xee, 0xcc, 0xdc, 0xd7, 0xec, - 0xcd, 0xdc, 0xd8, 0xee, 0xcc, 0xdc, 0xd8, 0xec, 0xcd, 0xdc, 0xd8, 0xee, - 0xcc, 0xdc, 0xd9, 0xec, 0xcd, 0xdc, 0xd9, 0xee, 0xcc, 0xdc, 0xd9, 0xec, - 0xcd, 0xdc, 0xd9, 0xf1, 0xe5, 0xdc, 0xda, 0xf2, 0xe5, 0xdc, 0xda, 0xf1, - 0xe5, 0xdc, 0xda, 0xf2, 0xe5, 0xdc, 0xda, 0xf1, 0xe5, 0xdc, 0xdb, 0xf2, - 0xe5, 0xdc, 0xdb, 0xf1, 0xe5, 0xdc, 0xdb, 0xf2, 0xe5, 0xdc, 0xdb, 0xf1, - 0xe5, 0xdc, 0xdc, 0xef, 0xe5, 0xdc, 0xdc, 0xf1, 0xe5, 0xdc, 0xdc, 0xef, - 0xe5, 0xdc, 0xdd, 0xf1, 0xe5, 0xdc, 0xdd, 0xef, 0xe5, 0xdc, 0xdd, 0xf1, - 0xe5, 0xdc, 0xdd, 0xef, 0xe5, 0xdc, 0xde, 0xf1, 0xe5, 0xdc, 0xde, 0xef, - 0xe5, 0xdc, 0xde, 0xf1, 0xe5, 0xdc, 0xde, 0xef, 0xe5, 0xdc, 0xdf, 0xf1, - 0xe5, 0xdc, 0xdf, 0xef, 0xe5, 0xdc, 0xdf, 0xf1, 0xe5, 0xdc, 0xdf, 0xef, - 0xe5, 0xdc, 0xe0, 0xf1, 0xe5, 0xdc, 0xe0, 0xef, 0xe5, 0xdc, 0xe0, 0xf1, - 0xe5, 0xdc, 0xe1, 0xef, 0xe5, 0xdc, 0xe1, 0xf1, 0xe5, 0xdc, 0xe1, 0xef, - 0xe5, 0xdc, 0xe1, 0xef, 0xe5, 0xdc, 0xe2, 0xef, 0xe5, 0xdc, 0xe2, 0xef, - 0xe5, 0xdc, 0xe2, 0xef, 0xe5, 0xdc, 0xe2, 0xef, 0xe5, 0xdc, 0xe3, 0xef, - 0xe5, 0xdc, 0xe3, 0xef, 0xe5, 0xdc, 0xe3, 0xef, 0xe5, 0xdc, 0xe3, 0xef, - 0xe5, 0xdc, 0xe4, 0xef, 0xe5, 0xdc, 0xe4, 0xef, 0xe5, 0xdc, 0xe4, 0xef, - 0xe5, 0xdc, 0xe4, 0xef, 0xe5, 0xdc, 0xe5, 0xef, 0xe5, 0xdc, 0xe5, 0xef, - 0xe5, 0xdc, 0xe5, 0xef, 0xe5, 0xdc, 0xe5, 0xef, 0xe5, 0xdc, 0xe5, 0xef, - 0xe6, 0xdc, 0xe5, 0xef, 0xe6, 0xdc, 0xe5, 0xef, 0xe6, 0xdc, 0xe7, 0xef, - 0xe6, 0xdc, 0xe7, 0xef, 0xe7, 0xdc, 0xe7, 0xef, 0xe7, 0xdc, 0xe7, 0xef, - 0xe7, 0xdc, 0xe7, 0xef, 0xe7, 0xdc, 0xe8, 0xef, 0xe7, 0xdc, 0xe8, 0xef, - 0xe7, 0xdc, 0xe8, 0xee, 0xe7, 0xdc, 0xe8, 0xef, 0xe7, 0xdc, 0xe9, 0xee, - 0xe7, 0xdc, 0xe9, 0xef, 0xe7, 0xdc, 0xe9, 0xee, 0xe7, 0xdc, 0xe9, 0xef, - 0xe7, 0xdc, 0xea, 0xee, 0xe7, 0xdc, 0xea, 0xef, 0xe7, 0xdc, 0xea, 0xee, - 0xe7, 0xdc, 0xea, 0xec, 0xeb, 0xdc, 0xeb, 0xec, 0xeb, 0xdc, 0xeb, 0xec, - 0xeb, 0xdc, 0xeb, 0xec, 0xeb, 0xdc, 0xeb, 0xec, 0xeb, 0xdc, 0xec, 0xec, - 0xec, 0xdc, 0xec, 0xec, 0xec, 0xdc, 0xec, 0xec, 0xed, 0xdc, 0xec, 0xec, - 0xee, 0xdc, 0xec, 0xec, 0xed, 0xdc, 0xed, 0xec, 0xee, 0xdc, 0xed, 0xec, - 0xed, 0xdc, 0xed, 0xec, 0xee, 0xdc, 0xed, 0xec, 0xed, 0xdc, 0xee, 0xec, - 0xee, 0xdc, 0xee, 0xec, 0xee, 0xdc, 0xee, 0xec, 0xee, 0xdc, 0xee, 0xec, - 0xee, 0xdc, 0xef, 0xef, 0xf1, 0xdc, 0xef, 0xef, 0xf1, 0xdc, 0xef, 0xef, - 0xf1, 0xdc, 0xef, 0xef, 0xf1, 0xdc, 0xf0, 0xef, 0xf1, 0xdc, 0xf0, 0xef, - 0xf1, 0xdc, 0xf0, 0xef, 0xf1, 0xdc, 0xf0, 0xef, 0xf1, 0xdc, 0xf1, 0xef, - 0xf1, 0xdc, 0xf0, 0xef, 0xf1, 0xdc, 0xf1, 0xef, 0xf1, 0xdc, 0xf1, 0xef, - 0xf1, 0xdc, 0xf2, 0xef, 0xf1, 0xdc, 0xf2, 0xef, 0xf1, 0xdc, 0xf2, 0xee, - 0xf1, 0xdc, 0xf2, 0xef, 0xf1, 0xdc, 0xf2, 0xee, 0xf1, 0xdc, 0xf3, 0xef, - 0xf1, 0xdc, 0xf3, 0xee, 0xf1, 0xdc, 0xf3, 0xef, 0xf1, 0xdc, 0xf3, 0xee, - 0xf1, 0xdc, 0xf4, 0xef, 0xf1, 0xdc, 0xf4, 0xee, 0xf1, 0xdc, 0xf4, 0xef, - 0xf1, 0xdc, 0xf4, 0xee, 0xf1, 0xdc, 0xf5, 0xef, 0xf1, 0xdc, 0xf5, 0xee, - 0xf1, 0xdc, 0xf5, 0xef, 0xf1, 0xdc, 0xf5, 0xee, 0xf1, 0xdc, 0xf5, 0xef, - 0xf1, 0xdc, 0xf6, 0xee, 0xf1, 0xdc, 0xf6, 0xef, 0xf1, 0xdc, 0xf6, 0xee, - 0xf1, 0xdc, 0xf6, 0xef, 0xf1, 0xdc, 0xf7, 0xee, 0xf1, 0xdc, 0xf7, 0xec, - 0xf1, 0xdc, 0xf7, 0xee, 0xf1, 0xdc, 0xf7, 0xec, 0xf1, 0xdc, 0xf8, 0xee, - 0xf1, 0xdc, 0xf8, 0xec, 0xf1, 0xdc, 0xf8, 0xee, 0xf1, 0xdc, 0xf8, 0xec, - 0xf1, 0xdc, 0xf8, 0xee, 0xf1, 0xdc, 0xf9, 0xec, 0xf1, 0xdc, 0xf9, 0xee, - 0xf1, 0xdc, 0xf9, 0xec, 0xf1, 0xdc, 0xf9, 0xee, 0xf1, 0xdc, 0xfa, 0xec, - 0xf1, 0xdc, 0xfa, 0xee, 0xf1, 0xdc, 0xfa, 0xec, 0xf1, 0xdc, 0xfa, 0xee, - 0xf1, 0xdc, 0xfa, 0xec, 0xf1, 0xdc, 0xfb, 0xee, 0xf1, 0xdc, 0xfb, 0xec, - 0xf1, 0xdc, 0xfb, 0xee, 0xf1, 0xdc, 0xfb, 0xec, 0xf1, 0xdc, 0xfc, 0xee, - 0xf1, 0xdc, 0xfc, 0xec, 0xf1, 0xdc, 0xfc, 0xee, 0xf1, 0xdc, 0xfc, 0xec, - 0xf1, 0xdc, 0xfc, 0xee, 0xf1, 0xdc, 0xfd, 0xec, 0xf1, 0xdc, 0xfd, 0xee, - 0xf1, 0xdc, 0xfd, 0xec, 0xf1, 0xdc, 0xfd, 0xee, 0xf1, 0xdc, 0xfe, 0xec, - 0xf1, 0xdc, 0xfe, 0xee, 0xf1, 0xdc, 0xfe, 0xec, 0xf1, 0xdc, 0xfe, 0xee, - 0xf1, 0xdc, 0xfe, 0xec, 0xf1, 0xdc, 0xff, 0xec, 0xf1, 0xdc, 0xff, 0xec, - 0xf1, 0xdc, 0x03, 0xf2, 0x83, 0xdc, 0x0a, 0xf4, 0x83, 0xdc, 0x0f, 0xf2, - 0x83, 0xdc, 0x14, 0xf4, 0x83, 0xdc, 0x17, 0xf2, 0x83, 0xdc, 0x1b, 0xf4, - 0x83, 0xdc, 0x1e, 0xf2, 0x83, 0xdc, 0x20, 0xf4, 0x83, 0xdc, 0x23, 0xf2, - 0x83, 0xdc, 0x25, 0xf4, 0x83, 0xdc, 0x27, 0xf2, 0x83, 0xdc, 0x29, 0xf4, - 0x83, 0xdc, 0x2b, 0xf2, 0x83, 0xdc, 0x2d, 0xf4, 0x83, 0xdc, 0x2f, 0xf2, - 0x83, 0xdc, 0x31, 0xf4, 0x83, 0xdc, 0x32, 0xf2, 0x83, 0xdc, 0x34, 0xf4, - 0x83, 0xdc, 0x35, 0xf2, 0x83, 0xdc, 0x37, 0xf4, 0x83, 0xdc, 0x38, 0xf2, - 0x83, 0xdc, 0x3a, 0xf4, 0x83, 0xdc, 0x3b, 0xf2, 0x83, 0xdc, 0x3c, 0xf4, - 0x83, 0xdc, 0x3e, 0xf2, 0x83, 0xdc, 0x3f, 0xf4, 0x83, 0xdc, 0x40, 0xf2, - 0x83, 0xdc, 0x42, 0xf4, 0x83, 0xdc, 0x43, 0xf2, 0x83, 0xdc, 0x44, 0xf4, - 0x83, 0xdc, 0x45, 0xf2, 0x83, 0xdc, 0x46, 0xf4, 0x83, 0xdc, 0x47, 0xf2, - 0x83, 0xdc, 0x48, 0xf1, 0x84, 0xdc, 0x49, 0xf2, 0x83, 0xdc, 0x4a, 0xf1, - 0x84, 0xdc, 0x4b, 0xf2, 0x83, 0xdc, 0x4c, 0xf1, 0x84, 0xdc, 0x4d, 0xf2, - 0x83, 0xdc, 0x4e, 0xf1, 0x84, 0xdc, 0x4f, 0xf2, 0x83, 0xdc, 0x50, 0xf1, - 0x84, 0xdc, 0x51, 0xf2, 0x83, 0xdc, 0x52, 0xf1, 0x84, 0xdc, 0x53, 0xf2, - 0x83, 0xdc, 0x54, 0xf1, 0x84, 0xdc, 0x55, 0xf2, 0x83, 0xdc, 0x56, 0xf1, - 0x84, 0xdc, 0x57, 0xf2, 0x83, 0xdc, 0x58, 0xf1, 0x84, 0xdc, 0x58, 0xf2, - 0x83, 0xdc, 0x59, 0xf1, 0x84, 0xdc, 0x5a, 0xf2, 0x83, 0xdc, 0x5b, 0xf1, - 0x84, 0xdc, 0x5c, 0xf2, 0x83, 0xdc, 0x5d, 0xf1, 0x84, 0xdc, 0x5d, 0xf2, - 0x83, 0xdc, 0x5e, 0xf1, 0x84, 0xdc, 0x5f, 0xf2, 0x83, 0xdc, 0x60, 0xf1, - 0x84, 0xdc, 0x60, 0xf2, 0x83, 0xdc, 0x61, 0xf1, 0x84, 0xdc, 0x62, 0xf2, - 0x83, 0xdc, 0x63, 0xf1, 0x84, 0xdc, 0x63, 0xf2, 0x83, 0xdc, 0x64, 0xf1, - 0x84, 0xdc, 0x65, 0xf2, 0x83, 0xdc, 0x66, 0xf1, 0x84, 0xdc, 0x66, 0xf2, - 0x83, 0xdc, 0x67, 0xf1, 0x84, 0xdc, 0x68, 0xef, 0x84, 0xdc, 0x68, 0xf1, - 0x84, 0xdc, 0x69, 0xef, 0x84, 0xdc, 0x6a, 0xf1, 0x84, 0xdc, 0x6a, 0xef, - 0x84, 0xdc, 0x6b, 0xf1, 0x84, 0xdc, 0x6c, 0xef, 0x84, 0xdc, 0x6c, 0xf1, - 0x84, 0xdc, 0x6d, 0xef, 0x84, 0xdc, 0x6e, 0xf1, 0x84, 0xdc, 0x6e, 0xef, - 0x84, 0xdc, 0x6f, 0xf1, 0x84, 0xdc, 0x70, 0xef, 0x84, 0xdc, 0x70, 0xf1, - 0x84, 0xdc, 0x71, 0xef, 0x84, 0xdc, 0x72, 0xf1, 0x84, 0xdc, 0x72, 0xef, - 0x84, 0xdc, 0x73, 0xf1, 0x84, 0xdc, 0x73, 0xef, 0x84, 0xdc, 0x74, 0xf1, - 0x84, 0xdc, 0x75, 0xef, 0x84, 0xdc, 0x75, 0xf1, 0x84, 0xdc, 0x76, 0xef, - 0x84, 0xdc, 0x76, 0xf1, 0x84, 0xdc, 0x77, 0xef, 0x84, 0xdc, 0x78, 0xf1, - 0x84, 0xdc, 0x78, 0xef, 0x84, 0xdc, 0x79, 0xf1, 0x84, 0xdc, 0x79, 0xef, - 0x84, 0xdc, 0x7a, 0xf1, 0x84, 0xdc, 0x7a, 0xef, 0x84, 0xdc, 0x7b, 0xf1, - 0x84, 0xdc, 0x7c, 0xef, 0x84, 0xdc, 0x7c, 0xef, 0x85, 0xdc, 0x7d, 0xef, - 0x84, 0xdc, 0x7d, 0xef, 0x85, 0xdc, 0x7e, 0xef, 0x84, 0xdc, 0x7e, 0xef, - 0x85, 0xdc, 0x7f, 0xef, 0x84, 0xdc, 0x7f, 0xef, 0x85, 0xdc, 0x80, 0xef, - 0x84, 0xdc, 0x81, 0xef, 0x85, 0xdc, 0x81, 0xef, 0x84, 0xdc, 0x82, 0xef, - 0x85, 0xdc, 0x82, 0xef, 0x84, 0xdc, 0x83, 0xef, 0x85, 0xdc, 0x83, 0xef, - 0x84, 0xdc, 0x84, 0xef, 0x85, 0xdc, 0x84, 0xef, 0x84, 0xdb, 0x84, 0xef, - 0x85, 0xdc, 0x84, 0xef, 0x85, 0xdb, 0x84, 0xef, 0x86, 0xdc, 0x84, 0xef, - 0x86, 0xdb, 0x84, 0xef, 0x87, 0xdc, 0x84, 0xef, 0x87, 0xdb, 0x84, 0xef, - 0x88, 0xdc, 0x84, 0xef, 0x88, 0xdb, 0x84, 0xef, 0x89, 0xdc, 0x84, 0xef, - 0x89, 0xdb, 0x84, 0xef, 0x8a, 0xdc, 0x84, 0xef, 0x8a, 0xdb, 0x84, 0xef, - 0x8b, 0xdc, 0x84, 0xef, 0x8b, 0xdb, 0x84, 0xef, 0x8c, 0xdc, 0x84, 0xef, - 0x8c, 0xdb, 0x85, 0xef, 0x8d, 0xd8, 0x84, 0xef, 0x8d, 0xdb, 0x85, 0xef, - 0x8e, 0xd8, 0x84, 0xef, 0x8e, 0xdb, 0x85, 0xef, 0x8e, 0xd8, 0x84, 0xef, - 0x8f, 0xdb, 0x85, 0xef, 0x8f, 0xd8, 0x84, 0xef, 0x90, 0xdb, 0x85, 0xef, - 0x90, 0xd8, 0x84, 0xef, 0x91, 0xdb, 0x8f, 0xef, 0x91, 0xe9, 0x8f, 0xef, - 0x92, 0xe9, 0x8f, 0xef, 0x92, 0xe9, 0x8f, 0xef, 0x93, 0xe9, 0x8f, 0xef, - 0x93, 0xe9, 0x8f, 0xef, 0x94, 0xe9, 0x8f, 0xef, 0x94, 0xe9, 0x94, 0xef, - 0x94, 0xea, 0x94, 0xef, 0x95, 0xea, 0x94, 0xef, 0x95, 0xea, 0x94, 0xef, - 0x96, 0xea, 0x94, 0xef, 0x96, 0xea, 0x94, 0xef, 0x97, 0xea, 0x94, 0xef, - 0x97, 0xea, 0x94, 0xef, 0x98, 0xea, 0x94, 0xef, 0x98, 0xea, 0x94, 0xef, - 0x98, 0xea, 0x94, 0xef, 0x99, 0xea, 0x99, 0xef, 0x99, 0xeb, 0x99, 0xef, - 0x9a, 0xeb, 0x99, 0xef, 0x9a, 0xeb, 0x99, 0xef, 0x9a, 0xeb, 0x99, 0xef, - 0x9b, 0xeb, 0x99, 0xef, 0x9b, 0xeb, 0x99, 0xef, 0x9c, 0xeb, 0x99, 0xef, - 0x9c, 0xeb, 0x99, 0xef, 0x9d, 0xeb, 0x99, 0xef, 0x9d, 0xeb, 0x99, 0xef, - 0x9d, 0xeb, 0x9e, 0xef, 0x9e, 0xec, 0x9d, 0xef, 0x9e, 0xec, 0x9e, 0xef, - 0x9f, 0xec, 0x9d, 0xef, 0x9f, 0xec, 0x9e, 0xef, 0x9f, 0xec, 0x9d, 0xef, - 0xa0, 0xec, 0x9e, 0xef, 0xa0, 0xec, 0x9d, 0xef, 0xa1, 0xec, 0x9e, 0xef, - 0xa1, 0xec, 0x9d, 0xef, 0xa1, 0xec, 0x9e, 0xef, 0xa2, 0xec, 0xa2, 0xef, - 0xa2, 0xed, 0xa2, 0xef, 0xa3, 0xed, 0xa2, 0xef, 0xa3, 0xed, 0xa2, 0xef, - 0xa3, 0xed, 0xa2, 0xef, 0xa4, 0xed, 0xa2, 0xef, 0xa4, 0xed, 0xa2, 0xef, - 0xa5, 0xed, 0xa2, 0xef, 0xa5, 0xed, 0xa2, 0xef, 0xa5, 0xed, 0xa2, 0xef, - 0xa6, 0xed, 0xa2, 0xef, 0xa6, 0xed, 0xa6, 0xef, 0xa6, 0xee, 0xa2, 0xef, - 0xa7, 0xed, 0xa6, 0xef, 0xa7, 0xee, 0xa6, 0xef, 0xa8, 0xee, 0xa6, 0xef, - 0xa8, 0xee, 0xa6, 0xef, 0xa8, 0xee, 0xa6, 0xef, 0xa9, 0xee, 0xa6, 0xef, - 0xa9, 0xee, 0xa6, 0xef, 0xaa, 0xee, 0xa6, 0xef, 0xaa, 0xee, 0xa6, 0xef, - 0xaa, 0xee, 0xa6, 0xef, 0xab, 0xee, 0xa6, 0xef, 0xab, 0xee, 0xab, 0xef, - 0xab, 0xef, 0xaa, 0xef, 0xac, 0xef, 0xab, 0xef, 0xac, 0xef, 0xaa, 0xef, - 0xac, 0xef, 0xab, 0xef, 0xad, 0xef, 0xaa, 0xef, 0xad, 0xef, 0xab, 0xef, - 0xae, 0xef, 0xaa, 0xef, 0xae, 0xef, 0xab, 0xef, 0xae, 0xef, 0xaa, 0xef, - 0xaf, 0xef, 0xab, 0xef, 0xaf, 0xef, 0xaf, 0xef, 0xaf, 0xf0, 0xae, 0xef, - 0xb0, 0xf0, 0xaf, 0xef, 0xb0, 0xf0, 0xae, 0xef, 0xb0, 0xf0, 0xaf, 0xef, - 0xb1, 0xf0, 0xae, 0xef, 0xb1, 0xf0, 0xaf, 0xef, 0xb2, 0xf0, 0xae, 0xef, - 0xb2, 0xf0, 0xaf, 0xef, 0xb2, 0xf0, 0xae, 0xef, 0xb3, 0xf0, 0xaf, 0xef, - 0xb3, 0xf0, 0xb3, 0xef, 0xb3, 0xf1, 0xb2, 0xef, 0xb4, 0xf1, 0xb3, 0xef, - 0xb4, 0xf1, 0xb2, 0xef, 0xb4, 0xf1, 0xb3, 0xef, 0xb5, 0xf1, 0xb2, 0xef, - 0xb5, 0xf1, 0xb3, 0xef, 0xb5, 0xf1, 0xb2, 0xef, 0xb6, 0xf1, 0xb3, 0xef, - 0xb6, 0xf1, 0xb2, 0xef, 0xb6, 0xf1, 0xb3, 0xef, 0xb7, 0xf1, 0xb6, 0xef, - 0xb7, 0xf2, 0xb6, 0xef, 0xb7, 0xf2, 0xb6, 0xef, 0xb8, 0xf2, 0xb6, 0xef, - 0xb8, 0xf2, 0xb6, 0xef, 0xb8, 0xf2, 0xb6, 0xef, 0xb9, 0xf2, 0xb6, 0xef, - 0xb9, 0xf2, 0xb6, 0xef, 0xb9, 0xf2, 0xb6, 0xef, 0xba, 0xf2, 0xb6, 0xef, - 0xba, 0xf2, 0xb6, 0xef, 0xba, 0xf2, 0xba, 0xef, 0xbb, 0xf3, 0xba, 0xef, - 0xbb, 0xf3, 0xba, 0xef, 0xbb, 0xf3, 0xba, 0xef, 0xbc, 0xf3, 0xba, 0xef, - 0xbc, 0xf3, 0xba, 0xef, 0xbc, 0xf3, 0xba, 0xef, 0xbd, 0xf3, 0xba, 0xef, - 0xbd, 0xf3, 0xba, 0xef, 0xbd, 0xf3, 0xcc, 0xef, 0xbe, 0xe0, 0xcc, 0xef, - 0xbe, 0xdd, 0xcc, 0xef, 0xbe, 0xe0, 0xcc, 0xef, 0xbf, 0xdd, 0xcc, 0xef, - 0xbf, 0xe0, 0xcc, 0xef, 0xbf, 0xdd, 0xcc, 0xef, 0xc0, 0xe0, 0xcc, 0xef, - 0xc0, 0xdd, 0xcc, 0xef, 0xc0, 0xe0, 0xcc, 0xef, 0xc1, 0xdd, 0xcc, 0xef, - 0xc1, 0xe0, 0xcc, 0xef, 0xc1, 0xdd, 0xcc, 0xef, 0xc1, 0xe0, 0xcc, 0xef, - 0xc2, 0xdd, 0xcc, 0xef, 0xc2, 0xe0, 0xcc, 0xef, 0xc2, 0xdd, 0xcc, 0xef, - 0xc3, 0xe0, 0xcc, 0xef, 0xc3, 0xdd, 0xcc, 0xef, 0xc3, 0xe0, 0xcc, 0xef, - 0xc4, 0xdd, 0xcc, 0xef, 0xc4, 0xe0, 0xcc, 0xef, 0xc4, 0xdd, 0xcc, 0xef, - 0xc5, 0xe0, 0xcc, 0xef, 0xc5, 0xdd, 0xcc, 0xef, 0xc5, 0xe0, 0xcc, 0xef, - 0xc6, 0xdd, 0xcc, 0xef, 0xc6, 0xe0, 0xcc, 0xef, 0xc6, 0xdd, 0xcc, 0xef, - 0xc6, 0xe0, 0xcc, 0xef, 0xc7, 0xdd, 0xcc, 0xef, 0xc7, 0xe0, 0xcc, 0xef, - 0xc7, 0xdd, 0xcc, 0xef, 0xc8, 0xdc, 0xcc, 0xef, 0xc8, 0xdd, 0xcc, 0xef, - 0xc8, 0xdc, 0xcc, 0xef, 0xc9, 0xdd, 0xcc, 0xef, 0xc9, 0xdc, 0xcc, 0xef, - 0xc9, 0xdd, 0xcc, 0xef, 0xc9, 0xdc, 0xcc, 0xef, 0xca, 0xdd, 0xcc, 0xef, - 0xca, 0xdc, 0xcc, 0xef, 0xca, 0xdd, 0xcc, 0xef, 0xcb, 0xdc, 0xcc, 0xef, - 0xcb, 0xdd, 0xcc, 0xef, 0xcb, 0xdc, 0xcc, 0xef, 0xcc, 0xdd, 0xcc, 0xef, - 0xcc, 0xdc, 0xcd, 0xef, 0xcc, 0xdc, 0xcc, 0xef, 0xcc, 0xdc, 0xcd, 0xef, - 0xcc, 0xdc, 0xcd, 0xef, 0xcc, 0xdc, 0xcd, 0xef, 0xcc, 0xdc, 0xce, 0xee, - 0xcc, 0xdc, 0xce, 0xef, 0xcc, 0xdc, 0xce, 0xee, 0xcc, 0xdc, 0xce, 0xef, - 0xcc, 0xdc, 0xcf, 0xee, 0xcc, 0xdc, 0xcf, 0xef, 0xcc, 0xdc, 0xcf, 0xee, - 0xcc, 0xdc, 0xd0, 0xef, 0xcc, 0xdc, 0xd0, 0xee, 0xcc, 0xdc, 0xd0, 0xef, - 0xcc, 0xdc, 0xd0, 0xee, 0xcc, 0xdc, 0xd1, 0xef, 0xcc, 0xdc, 0xd1, 0xee, - 0xcc, 0xdc, 0xd1, 0xef, 0xcc, 0xdc, 0xd2, 0xee, 0xcc, 0xdc, 0xd2, 0xef, - 0xcc, 0xdc, 0xd2, 0xee, 0xcc, 0xdc, 0xd2, 0xef, 0xcc, 0xdc, 0xd3, 0xee, - 0xcc, 0xdc, 0xd3, 0xef, 0xcc, 0xdc, 0xd3, 0xee, 0xcc, 0xdc, 0xd4, 0xed, - 0xcd, 0xdc, 0xd4, 0xee, 0xcc, 0xdc, 0xd4, 0xed, 0xcd, 0xdc, 0xd4, 0xee, - 0xcc, 0xdc, 0xd5, 0xed, 0xcd, 0xdc, 0xd5, 0xee, 0xcc, 0xdc, 0xd5, 0xed, - 0xcd, 0xdc, 0xd6, 0xee, 0xcc, 0xdc, 0xd6, 0xed, 0xcd, 0xdc, 0xd6, 0xee, - 0xcc, 0xdc, 0xd6, 0xed, 0xcd, 0xdc, 0xd7, 0xee, 0xcc, 0xdc, 0xd7, 0xed, - 0xcd, 0xdc, 0xd7, 0xee, 0xcc, 0xdc, 0xd7, 0xed, 0xcd, 0xdc, 0xd8, 0xee, - 0xcc, 0xdc, 0xd8, 0xed, 0xcd, 0xdc, 0xd8, 0xee, 0xcc, 0xdc, 0xd9, 0xed, - 0xcd, 0xdc, 0xd9, 0xee, 0xcc, 0xdc, 0xd9, 0xed, 0xcd, 0xdc, 0xd9, 0xf1, - 0xe5, 0xdc, 0xda, 0xf2, 0xe5, 0xdc, 0xda, 0xf1, 0xe5, 0xdc, 0xda, 0xf2, - 0xe5, 0xdc, 0xda, 0xf1, 0xe5, 0xdc, 0xdb, 0xf2, 0xe5, 0xdc, 0xdb, 0xf1, - 0xe5, 0xdc, 0xdb, 0xf2, 0xe5, 0xdc, 0xdb, 0xf1, 0xe5, 0xdc, 0xdc, 0xef, - 0xe5, 0xdc, 0xdc, 0xf1, 0xe5, 0xdc, 0xdc, 0xef, 0xe5, 0xdc, 0xdd, 0xf1, - 0xe5, 0xdc, 0xdd, 0xef, 0xe5, 0xdc, 0xdd, 0xf1, 0xe5, 0xdc, 0xdd, 0xef, - 0xe5, 0xdc, 0xde, 0xf1, 0xe5, 0xdc, 0xde, 0xef, 0xe5, 0xdc, 0xde, 0xf1, - 0xe5, 0xdc, 0xde, 0xef, 0xe5, 0xdc, 0xdf, 0xf1, 0xe5, 0xdc, 0xdf, 0xef, - 0xe5, 0xdc, 0xdf, 0xf1, 0xe5, 0xdc, 0xdf, 0xef, 0xe5, 0xdc, 0xe0, 0xf1, - 0xe5, 0xdc, 0xe0, 0xef, 0xe5, 0xdc, 0xe0, 0xf1, 0xe5, 0xdc, 0xe1, 0xef, - 0xe5, 0xdc, 0xe1, 0xf1, 0xe5, 0xdc, 0xe1, 0xef, 0xe5, 0xdc, 0xe1, 0xf1, - 0xe5, 0xdc, 0xe2, 0xef, 0xe5, 0xdc, 0xe2, 0xf1, 0xe5, 0xdc, 0xe2, 0xef, - 0xe5, 0xdc, 0xe2, 0xf1, 0xe5, 0xdc, 0xe3, 0xef, 0xe5, 0xdc, 0xe3, 0xf1, - 0xe5, 0xdc, 0xe3, 0xef, 0xe5, 0xdc, 0xe3, 0xef, 0xe5, 0xdc, 0xe4, 0xef, - 0xe5, 0xdc, 0xe4, 0xef, 0xe5, 0xdc, 0xe4, 0xef, 0xe5, 0xdc, 0xe4, 0xef, - 0xe5, 0xdc, 0xe5, 0xef, 0xe5, 0xdc, 0xe5, 0xef, 0xe5, 0xdc, 0xe5, 0xef, - 0xe5, 0xdb, 0xe5, 0xef, 0xe5, 0xdc, 0xe5, 0xef, 0xe6, 0xdb, 0xe5, 0xef, - 0xe6, 0xdc, 0xe7, 0xef, 0xe6, 0xdc, 0xe7, 0xef, 0xe6, 0xdd, 0xe7, 0xef, - 0xe7, 0xdc, 0xe7, 0xef, 0xe7, 0xdc, 0xe7, 0xef, 0xe7, 0xdc, 0xe7, 0xef, - 0xe7, 0xdc, 0xe8, 0xef, 0xe7, 0xdc, 0xe8, 0xef, 0xe7, 0xdc, 0xe8, 0xef, - 0xe7, 0xdc, 0xe8, 0xef, 0xe7, 0xdc, 0xe9, 0xef, 0xe7, 0xdc, 0xe9, 0xef, - 0xe7, 0xdc, 0xe9, 0xee, 0xe7, 0xdc, 0xe9, 0xef, 0xe7, 0xdc, 0xea, 0xee, - 0xe7, 0xdc, 0xea, 0xef, 0xe7, 0xdc, 0xea, 0xee, 0xe7, 0xdc, 0xea, 0xec, - 0xea, 0xdc, 0xeb, 0xec, 0xec, 0xdc, 0xeb, 0xec, 0xec, 0xdc, 0xeb, 0xec, - 0xec, 0xdc, 0xeb, 0xec, 0xec, 0xdc, 0xec, 0xec, 0xec, 0xdc, 0xec, 0xec, - 0xec, 0xdc, 0xec, 0xec, 0xec, 0xdc, 0xec, 0xec, 0xec, 0xdc, 0xec, 0xec, - 0xec, 0xdc, 0xed, 0xec, 0xed, 0xdc, 0xed, 0xec, 0xed, 0xdc, 0xed, 0xec, - 0xed, 0xdc, 0xed, 0xed, 0xef, 0xdc, 0xee, 0xed, 0xef, 0xdc, 0xee, 0xed, - 0xef, 0xdc, 0xee, 0xef, 0xf1, 0xdc, 0xee, 0xef, 0xf1, 0xdc, 0xef, 0xef, - 0xf1, 0xdc, 0xef, 0xef, 0xf1, 0xdc, 0xef, 0xef, 0xf1, 0xdc, 0xef, 0xef, - 0xf1, 0xdc, 0xf0, 0xef, 0xf1, 0xdc, 0xf0, 0xef, 0xf1, 0xdc, 0xf0, 0xef, - 0xf1, 0xdc, 0xf0, 0xef, 0xf1, 0xdc, 0xf1, 0xef, 0xf1, 0xdb, 0xf0, 0xef, - 0xf1, 0xdc, 0xf1, 0xef, 0xf1, 0xdc, 0xf1, 0xef, 0xf1, 0xdc, 0xf2, 0xef, - 0xf1, 0xdc, 0xf2, 0xef, 0xf1, 0xdc, 0xf2, 0xef, 0xf1, 0xdc, 0xf2, 0xef, - 0xf1, 0xdc, 0xf2, 0xef, 0xf1, 0xdc, 0xf3, 0xef, 0xf1, 0xdc, 0xf3, 0xee, - 0xf1, 0xdc, 0xf3, 0xef, 0xf1, 0xdc, 0xf3, 0xee, 0xf1, 0xdc, 0xf4, 0xef, - 0xf1, 0xdc, 0xf4, 0xee, 0xf1, 0xdc, 0xf4, 0xef, 0xf1, 0xdc, 0xf4, 0xee, - 0xf1, 0xdc, 0xf5, 0xef, 0xf1, 0xdc, 0xf5, 0xee, 0xf1, 0xdc, 0xf5, 0xef, - 0xf1, 0xdc, 0xf5, 0xee, 0xf1, 0xdc, 0xf5, 0xef, 0xf1, 0xdc, 0xf6, 0xee, - 0xf1, 0xdc, 0xf6, 0xef, 0xf1, 0xdc, 0xf6, 0xee, 0xf1, 0xdc, 0xf6, 0xef, - 0xf1, 0xdc, 0xf7, 0xee, 0xf1, 0xdc, 0xf7, 0xef, 0xf1, 0xdc, 0xf7, 0xee, - 0xf1, 0xdc, 0xf7, 0xef, 0xf1, 0xdc, 0xf8, 0xee, 0xf1, 0xdc, 0xf8, 0xef, - 0xf1, 0xdc, 0xf8, 0xee, 0xf1, 0xdc, 0xf8, 0xef, 0xf1, 0xdc, 0xf8, 0xee, - 0xf1, 0xdc, 0xf9, 0xef, 0xf1, 0xdc, 0xf9, 0xee, 0xf1, 0xdc, 0xf9, 0xef, - 0xf1, 0xdc, 0xf9, 0xee, 0xf1, 0xdc, 0xfa, 0xec, 0xf1, 0xdc, 0xfa, 0xee, - 0xf1, 0xdc, 0xfa, 0xec, 0xf1, 0xdc, 0xfa, 0xee, 0xf1, 0xdc, 0xfa, 0xec, - 0xf1, 0xdc, 0xfb, 0xee, 0xf1, 0xdc, 0xfb, 0xec, 0xf1, 0xdc, 0xfb, 0xee, - 0xf1, 0xdc, 0xfb, 0xec, 0xf1, 0xdc, 0xfc, 0xee, 0xf1, 0xdc, 0xfc, 0xec, - 0xf1, 0xdc, 0xfc, 0xee, 0xf1, 0xdc, 0xfc, 0xec, 0xf1, 0xdc, 0xfc, 0xee, - 0xf1, 0xdc, 0xfd, 0xec, 0xf1, 0xdc, 0xfd, 0xee, 0xf1, 0xdc, 0xfd, 0xec, - 0xf1, 0xdc, 0xfd, 0xee, 0xf1, 0xdc, 0xfe, 0xec, 0xf1, 0xdc, 0xfe, 0xee, - 0xf1, 0xdc, 0xfe, 0xec, 0xf1, 0xdc, 0xfe, 0xee, 0xf1, 0xdc, 0xfe, 0xec, - 0xf1, 0xdc, 0xff, 0xec, 0xf1, 0xdc, 0xff, 0xec, 0xf1, 0xdc, 0x03, 0xf3, - 0x83, 0xdd, 0x0a, 0xf4, 0x83, 0xdd, 0x0f, 0xf3, 0x83, 0xdd, 0x14, 0xf4, - 0x83, 0xdd, 0x17, 0xf3, 0x83, 0xdd, 0x1b, 0xf4, 0x83, 0xdd, 0x1e, 0xf3, - 0x83, 0xdd, 0x20, 0xf4, 0x83, 0xdd, 0x23, 0xf3, 0x83, 0xdd, 0x25, 0xf4, - 0x83, 0xdd, 0x27, 0xf3, 0x83, 0xdd, 0x29, 0xf4, 0x83, 0xdd, 0x2b, 0xf3, - 0x83, 0xdd, 0x2d, 0xf4, 0x83, 0xdd, 0x2f, 0xf3, 0x83, 0xdd, 0x31, 0xf4, - 0x83, 0xdd, 0x32, 0xf3, 0x83, 0xdd, 0x34, 0xf4, 0x83, 0xdd, 0x35, 0xf3, - 0x83, 0xdd, 0x37, 0xf4, 0x83, 0xdd, 0x38, 0xf3, 0x83, 0xdd, 0x3a, 0xf4, - 0x83, 0xdd, 0x3b, 0xf3, 0x83, 0xdd, 0x3c, 0xf4, 0x83, 0xdd, 0x3e, 0xf3, - 0x83, 0xdd, 0x3f, 0xf1, 0x84, 0xdd, 0x40, 0xf3, 0x83, 0xdd, 0x42, 0xf1, - 0x84, 0xdd, 0x43, 0xf3, 0x83, 0xdd, 0x44, 0xf1, 0x84, 0xdd, 0x45, 0xf3, - 0x83, 0xdd, 0x46, 0xf1, 0x84, 0xdd, 0x47, 0xf3, 0x83, 0xdd, 0x48, 0xf1, - 0x84, 0xdd, 0x49, 0xf3, 0x83, 0xdd, 0x4a, 0xf1, 0x84, 0xdd, 0x4b, 0xf3, - 0x83, 0xdd, 0x4c, 0xf1, 0x84, 0xdd, 0x4d, 0xf3, 0x83, 0xdd, 0x4e, 0xf1, - 0x84, 0xdd, 0x4f, 0xf3, 0x83, 0xdd, 0x50, 0xf1, 0x84, 0xdd, 0x51, 0xf3, - 0x83, 0xdd, 0x52, 0xf1, 0x84, 0xdd, 0x53, 0xf3, 0x83, 0xdd, 0x54, 0xf1, - 0x84, 0xdd, 0x55, 0xf3, 0x83, 0xdd, 0x56, 0xf1, 0x84, 0xdd, 0x57, 0xf3, - 0x83, 0xdd, 0x58, 0xf1, 0x84, 0xdd, 0x58, 0xf3, 0x83, 0xdd, 0x59, 0xf1, - 0x84, 0xdd, 0x5a, 0xf3, 0x83, 0xdd, 0x5b, 0xf1, 0x84, 0xdd, 0x5c, 0xf3, - 0x83, 0xdd, 0x5d, 0xf1, 0x84, 0xdd, 0x5d, 0xf3, 0x83, 0xdd, 0x5e, 0xf1, - 0x84, 0xdd, 0x5f, 0xf3, 0x83, 0xdd, 0x60, 0xf1, 0x84, 0xdd, 0x60, 0xf3, - 0x83, 0xdd, 0x61, 0xf1, 0x84, 0xdd, 0x62, 0xf3, 0x83, 0xdd, 0x63, 0xf1, - 0x84, 0xdd, 0x63, 0xf3, 0x83, 0xdd, 0x64, 0xf1, 0x84, 0xdd, 0x65, 0xf3, - 0x83, 0xdd, 0x66, 0xf1, 0x84, 0xdd, 0x66, 0xf3, 0x83, 0xdd, 0x67, 0xf1, - 0x84, 0xdd, 0x68, 0xef, 0x84, 0xdd, 0x68, 0xf1, 0x84, 0xdd, 0x69, 0xef, - 0x84, 0xdd, 0x6a, 0xf1, 0x84, 0xdd, 0x6a, 0xef, 0x84, 0xdd, 0x6b, 0xf1, - 0x84, 0xdd, 0x6c, 0xef, 0x84, 0xdd, 0x6c, 0xf1, 0x84, 0xdd, 0x6d, 0xef, - 0x84, 0xdd, 0x6e, 0xf1, 0x84, 0xdd, 0x6e, 0xef, 0x84, 0xdd, 0x6f, 0xf1, - 0x84, 0xdd, 0x70, 0xef, 0x84, 0xdd, 0x70, 0xf1, 0x84, 0xdd, 0x71, 0xef, - 0x84, 0xdd, 0x72, 0xf1, 0x84, 0xdd, 0x72, 0xef, 0x84, 0xdd, 0x73, 0xf1, - 0x84, 0xdd, 0x73, 0xef, 0x84, 0xdd, 0x74, 0xf1, 0x84, 0xdd, 0x75, 0xef, - 0x84, 0xdd, 0x75, 0xf1, 0x84, 0xdd, 0x76, 0xef, 0x84, 0xdd, 0x76, 0xf1, - 0x84, 0xdd, 0x77, 0xef, 0x84, 0xdd, 0x78, 0xf1, 0x84, 0xdd, 0x78, 0xef, - 0x84, 0xdd, 0x79, 0xf1, 0x84, 0xdd, 0x79, 0xef, 0x84, 0xdd, 0x7a, 0xf1, - 0x84, 0xdd, 0x7a, 0xef, 0x84, 0xdd, 0x7b, 0xf1, 0x84, 0xdd, 0x7c, 0xef, - 0x84, 0xdd, 0x7c, 0xf1, 0x84, 0xdd, 0x7d, 0xef, 0x84, 0xdd, 0x7d, 0xf1, - 0x84, 0xdd, 0x7e, 0xef, 0x84, 0xdd, 0x7e, 0xf1, 0x84, 0xdd, 0x7f, 0xef, - 0x84, 0xdd, 0x7f, 0xf1, 0x84, 0xdd, 0x80, 0xef, 0x84, 0xdd, 0x81, 0xef, - 0x85, 0xdd, 0x81, 0xef, 0x84, 0xdd, 0x82, 0xef, 0x85, 0xdd, 0x82, 0xef, - 0x84, 0xdd, 0x83, 0xef, 0x85, 0xdd, 0x83, 0xef, 0x84, 0xdd, 0x84, 0xef, - 0x85, 0xdd, 0x84, 0xef, 0x84, 0xdc, 0x84, 0xef, 0x85, 0xdd, 0x84, 0xef, - 0x85, 0xdc, 0x84, 0xef, 0x86, 0xdd, 0x84, 0xef, 0x86, 0xdc, 0x84, 0xef, - 0x87, 0xdd, 0x84, 0xef, 0x87, 0xdc, 0x84, 0xef, 0x88, 0xdd, 0x84, 0xef, - 0x88, 0xdc, 0x84, 0xef, 0x89, 0xdd, 0x84, 0xef, 0x89, 0xdc, 0x84, 0xef, - 0x8a, 0xdd, 0x84, 0xef, 0x8a, 0xdc, 0x84, 0xef, 0x8b, 0xdd, 0x84, 0xef, - 0x8b, 0xdc, 0x84, 0xef, 0x8c, 0xdd, 0x84, 0xef, 0x8c, 0xdc, 0x85, 0xef, - 0x8d, 0xd9, 0x84, 0xef, 0x8d, 0xdc, 0x85, 0xef, 0x8e, 0xd9, 0x84, 0xef, - 0x8e, 0xdc, 0x85, 0xef, 0x8e, 0xd9, 0x84, 0xef, 0x8f, 0xdc, 0x85, 0xef, - 0x8f, 0xd9, 0x84, 0xef, 0x90, 0xdc, 0x85, 0xef, 0x90, 0xd9, 0x8c, 0xef, - 0x91, 0xe9, 0x8d, 0xef, 0x91, 0xe9, 0x92, 0xef, 0x92, 0xea, 0x91, 0xef, - 0x92, 0xea, 0x92, 0xef, 0x93, 0xea, 0x91, 0xef, 0x93, 0xea, 0x92, 0xef, - 0x94, 0xea, 0x91, 0xef, 0x94, 0xea, 0x92, 0xef, 0x94, 0xea, 0x91, 0xef, - 0x95, 0xea, 0x92, 0xef, 0x95, 0xea, 0x91, 0xef, 0x96, 0xea, 0x92, 0xef, - 0x96, 0xea, 0x97, 0xef, 0x97, 0xeb, 0x96, 0xef, 0x97, 0xeb, 0x97, 0xef, - 0x98, 0xeb, 0x96, 0xef, 0x98, 0xeb, 0x97, 0xef, 0x98, 0xeb, 0x96, 0xef, - 0x99, 0xeb, 0x97, 0xef, 0x99, 0xeb, 0x96, 0xef, 0x9a, 0xeb, 0x97, 0xef, - 0x9a, 0xeb, 0x96, 0xef, 0x9a, 0xeb, 0x97, 0xef, 0x9b, 0xeb, 0x9b, 0xef, - 0x9b, 0xec, 0x9b, 0xef, 0x9c, 0xec, 0x9b, 0xef, 0x9c, 0xec, 0x9b, 0xef, - 0x9d, 0xec, 0x9b, 0xef, 0x9d, 0xec, 0x9b, 0xef, 0x9d, 0xec, 0x9b, 0xef, - 0x9e, 0xec, 0x9b, 0xef, 0x9e, 0xec, 0x9b, 0xef, 0x9f, 0xec, 0x9b, 0xef, - 0x9f, 0xec, 0x9b, 0xef, 0x9f, 0xec, 0xa0, 0xef, 0xa0, 0xed, 0x9f, 0xef, - 0xa0, 0xed, 0xa0, 0xef, 0xa1, 0xed, 0x9f, 0xef, 0xa1, 0xed, 0xa0, 0xef, - 0xa1, 0xed, 0x9f, 0xef, 0xa2, 0xed, 0xa0, 0xef, 0xa2, 0xed, 0x9f, 0xef, - 0xa3, 0xed, 0xa0, 0xef, 0xa3, 0xed, 0x9f, 0xef, 0xa3, 0xed, 0xa0, 0xef, - 0xa4, 0xed, 0xa4, 0xef, 0xa4, 0xee, 0xa4, 0xef, 0xa5, 0xee, 0xa4, 0xef, - 0xa5, 0xee, 0xa4, 0xef, 0xa5, 0xee, 0xa4, 0xef, 0xa6, 0xee, 0xa4, 0xef, - 0xa6, 0xee, 0xa4, 0xef, 0xa6, 0xee, 0xa4, 0xef, 0xa7, 0xee, 0xa4, 0xef, - 0xa7, 0xee, 0xa4, 0xef, 0xa8, 0xee, 0xa4, 0xef, 0xa8, 0xee, 0xa8, 0xef, - 0xa8, 0xef, 0xa4, 0xef, 0xa9, 0xee, 0xa8, 0xef, 0xa9, 0xef, 0xa8, 0xef, - 0xaa, 0xef, 0xa8, 0xef, 0xaa, 0xef, 0xa8, 0xef, 0xaa, 0xef, 0xa8, 0xef, - 0xab, 0xef, 0xa8, 0xef, 0xab, 0xef, 0xa8, 0xef, 0xab, 0xef, 0xa8, 0xef, - 0xac, 0xef, 0xa8, 0xef, 0xac, 0xef, 0xa8, 0xef, 0xac, 0xef, 0xa8, 0xef, - 0xad, 0xef, 0xac, 0xef, 0xad, 0xf0, 0xac, 0xef, 0xae, 0xf0, 0xac, 0xef, - 0xae, 0xf0, 0xac, 0xef, 0xae, 0xf0, 0xac, 0xef, 0xaf, 0xf0, 0xac, 0xef, - 0xaf, 0xf0, 0xac, 0xef, 0xaf, 0xf0, 0xac, 0xef, 0xb0, 0xf0, 0xac, 0xef, - 0xb0, 0xf0, 0xac, 0xef, 0xb0, 0xf0, 0xac, 0xef, 0xb1, 0xf0, 0xb0, 0xef, - 0xb1, 0xf1, 0xb0, 0xef, 0xb2, 0xf1, 0xb0, 0xef, 0xb2, 0xf1, 0xb0, 0xef, - 0xb2, 0xf1, 0xb0, 0xef, 0xb3, 0xf1, 0xb0, 0xef, 0xb3, 0xf1, 0xb0, 0xef, - 0xb3, 0xf1, 0xb0, 0xef, 0xb4, 0xf1, 0xb0, 0xef, 0xb4, 0xf1, 0xb0, 0xef, - 0xb4, 0xf1, 0xb0, 0xef, 0xb5, 0xf1, 0xb4, 0xef, 0xb5, 0xf2, 0xb4, 0xef, - 0xb5, 0xf2, 0xb4, 0xef, 0xb6, 0xf2, 0xb4, 0xef, 0xb6, 0xf2, 0xb4, 0xef, - 0xb6, 0xf2, 0xb4, 0xef, 0xb7, 0xf2, 0xb4, 0xef, 0xb7, 0xf2, 0xb4, 0xef, - 0xb7, 0xf2, 0xb4, 0xef, 0xb8, 0xf2, 0xb4, 0xef, 0xb8, 0xf2, 0xb4, 0xef, - 0xb8, 0xf2, 0xb8, 0xef, 0xb9, 0xf3, 0xb8, 0xef, 0xb9, 0xf3, 0xb8, 0xef, - 0xb9, 0xf3, 0xb8, 0xef, 0xba, 0xf3, 0xb8, 0xef, 0xba, 0xf3, 0xb8, 0xef, - 0xba, 0xf3, 0xb8, 0xef, 0xbb, 0xf3, 0xb8, 0xef, 0xbb, 0xf3, 0xb8, 0xef, - 0xbb, 0xf3, 0xb8, 0xef, 0xbc, 0xf3, 0xb8, 0xef, 0xbc, 0xf3, 0xbc, 0xef, - 0xbc, 0xf4, 0xbb, 0xef, 0xbd, 0xf4, 0xbc, 0xef, 0xbd, 0xf4, 0xbb, 0xef, - 0xbd, 0xf4, 0xbc, 0xef, 0xbe, 0xf4, 0xcc, 0xef, 0xbe, 0xe3, 0xcc, 0xef, - 0xbe, 0xe1, 0xcc, 0xef, 0xbf, 0xe3, 0xcc, 0xef, 0xbf, 0xe1, 0xcc, 0xef, - 0xbf, 0xe3, 0xcc, 0xef, 0xc0, 0xe1, 0xcc, 0xef, 0xc0, 0xe3, 0xcc, 0xef, - 0xc0, 0xe1, 0xcc, 0xef, 0xc1, 0xe3, 0xcc, 0xef, 0xc1, 0xe1, 0xcc, 0xef, - 0xc1, 0xde, 0xcc, 0xef, 0xc1, 0xe1, 0xcc, 0xef, 0xc2, 0xde, 0xcc, 0xef, - 0xc2, 0xe1, 0xcc, 0xef, 0xc2, 0xde, 0xcc, 0xef, 0xc3, 0xe1, 0xcc, 0xef, - 0xc3, 0xde, 0xcc, 0xef, 0xc3, 0xe1, 0xcc, 0xef, 0xc4, 0xde, 0xcc, 0xef, - 0xc4, 0xe1, 0xcc, 0xef, 0xc4, 0xde, 0xcc, 0xef, 0xc5, 0xe1, 0xcc, 0xef, - 0xc5, 0xde, 0xcc, 0xef, 0xc5, 0xe1, 0xcc, 0xef, 0xc6, 0xde, 0xcc, 0xef, - 0xc6, 0xe1, 0xcc, 0xef, 0xc6, 0xde, 0xcc, 0xef, 0xc6, 0xe1, 0xcc, 0xef, - 0xc7, 0xde, 0xcc, 0xef, 0xc7, 0xe1, 0xcc, 0xef, 0xc7, 0xde, 0xcc, 0xef, - 0xc8, 0xdd, 0xcc, 0xef, 0xc8, 0xde, 0xcc, 0xef, 0xc8, 0xdd, 0xcc, 0xef, - 0xc9, 0xde, 0xcc, 0xef, 0xc9, 0xdd, 0xcc, 0xef, 0xc9, 0xde, 0xcc, 0xef, - 0xc9, 0xdd, 0xcc, 0xef, 0xca, 0xde, 0xcc, 0xef, 0xca, 0xdd, 0xcc, 0xef, - 0xca, 0xde, 0xcc, 0xef, 0xcb, 0xdd, 0xcc, 0xef, 0xcb, 0xde, 0xcc, 0xef, - 0xcb, 0xdd, 0xcc, 0xef, 0xcc, 0xde, 0xcc, 0xef, 0xcc, 0xdd, 0xcd, 0xef, - 0xcc, 0xdd, 0xcc, 0xef, 0xcc, 0xdd, 0xcd, 0xef, 0xcc, 0xdd, 0xcd, 0xef, - 0xcc, 0xdd, 0xcd, 0xef, 0xcc, 0xdd, 0xce, 0xef, 0xcc, 0xdd, 0xce, 0xef, - 0xcc, 0xdd, 0xce, 0xef, 0xcc, 0xdd, 0xce, 0xef, 0xcc, 0xdd, 0xcf, 0xee, - 0xcc, 0xdd, 0xcf, 0xef, 0xcc, 0xdd, 0xcf, 0xee, 0xcc, 0xdd, 0xd0, 0xef, - 0xcc, 0xdd, 0xd0, 0xee, 0xcc, 0xdd, 0xd0, 0xef, 0xcc, 0xdd, 0xd0, 0xee, - 0xcc, 0xdd, 0xd1, 0xef, 0xcc, 0xdd, 0xd1, 0xee, 0xcc, 0xdd, 0xd1, 0xef, - 0xcc, 0xdd, 0xd2, 0xee, 0xcc, 0xdd, 0xd2, 0xef, 0xcc, 0xdd, 0xd2, 0xee, - 0xcc, 0xdd, 0xd2, 0xef, 0xcc, 0xdd, 0xd3, 0xee, 0xcc, 0xdd, 0xd3, 0xef, - 0xcc, 0xdd, 0xd3, 0xee, 0xcc, 0xdd, 0xd4, 0xef, 0xcc, 0xdd, 0xd4, 0xee, - 0xcc, 0xdd, 0xd4, 0xef, 0xcc, 0xdd, 0xd4, 0xee, 0xcc, 0xdd, 0xd5, 0xef, - 0xcc, 0xdd, 0xd5, 0xee, 0xcc, 0xdd, 0xd5, 0xef, 0xcc, 0xdd, 0xd6, 0xee, - 0xcc, 0xdd, 0xd6, 0xef, 0xcc, 0xdd, 0xd6, 0xee, 0xcc, 0xdd, 0xd6, 0xef, - 0xcc, 0xdd, 0xd7, 0xee, 0xcc, 0xdd, 0xd7, 0xec, 0xcd, 0xdd, 0xd7, 0xee, - 0xcc, 0xdd, 0xd7, 0xec, 0xcd, 0xdd, 0xd8, 0xee, 0xcc, 0xdd, 0xd8, 0xec, - 0xcd, 0xdd, 0xd8, 0xee, 0xcc, 0xdd, 0xd9, 0xec, 0xcd, 0xdd, 0xd9, 0xee, - 0xcc, 0xdd, 0xd9, 0xf2, 0xe5, 0xdd, 0xd9, 0xf1, 0xe5, 0xdd, 0xda, 0xf2, - 0xe5, 0xdd, 0xda, 0xf1, 0xe5, 0xdd, 0xda, 0xf2, 0xe5, 0xdd, 0xda, 0xf1, - 0xe5, 0xdd, 0xdb, 0xf2, 0xe5, 0xdd, 0xdb, 0xf1, 0xe5, 0xdd, 0xdb, 0xf2, - 0xe5, 0xdd, 0xdb, 0xf1, 0xe5, 0xdd, 0xdc, 0xf2, 0xe5, 0xdd, 0xdc, 0xf1, - 0xe5, 0xdd, 0xdc, 0xf2, 0xe5, 0xdd, 0xdd, 0xf1, 0xe5, 0xdd, 0xdd, 0xf2, - 0xe5, 0xdd, 0xdd, 0xf1, 0xe5, 0xdd, 0xdd, 0xf2, 0xe5, 0xdd, 0xde, 0xf1, - 0xe5, 0xdd, 0xde, 0xf2, 0xe5, 0xdd, 0xde, 0xf1, 0xe5, 0xdd, 0xde, 0xf2, - 0xe5, 0xdd, 0xdf, 0xf1, 0xe5, 0xdd, 0xdf, 0xef, 0xe5, 0xdd, 0xdf, 0xf1, - 0xe5, 0xdd, 0xdf, 0xef, 0xe5, 0xdd, 0xe0, 0xf1, 0xe5, 0xdd, 0xe0, 0xef, - 0xe5, 0xdd, 0xe0, 0xf1, 0xe5, 0xdd, 0xe1, 0xef, 0xe5, 0xdd, 0xe1, 0xf1, - 0xe5, 0xdd, 0xe1, 0xef, 0xe5, 0xdd, 0xe1, 0xf1, 0xe5, 0xdd, 0xe2, 0xef, - 0xe5, 0xdd, 0xe2, 0xf1, 0xe5, 0xdd, 0xe2, 0xef, 0xe5, 0xdd, 0xe2, 0xf1, - 0xe5, 0xdd, 0xe3, 0xef, 0xe5, 0xdd, 0xe3, 0xf1, 0xe5, 0xdd, 0xe3, 0xef, - 0xe5, 0xdd, 0xe3, 0xef, 0xe5, 0xdd, 0xe4, 0xef, 0xe5, 0xdd, 0xe4, 0xef, - 0xe5, 0xdd, 0xe4, 0xef, 0xe5, 0xdd, 0xe4, 0xef, 0xe5, 0xdd, 0xe5, 0xef, - 0xe5, 0xdd, 0xe5, 0xef, 0xe5, 0xdd, 0xe5, 0xef, 0xe5, 0xdc, 0xe5, 0xef, - 0xe5, 0xdd, 0xe5, 0xef, 0xe6, 0xdc, 0xe5, 0xef, 0xe6, 0xdd, 0xe7, 0xef, - 0xe6, 0xdd, 0xe7, 0xef, 0xe6, 0xde, 0xe7, 0xef, 0xe7, 0xdd, 0xe7, 0xef, - 0xe7, 0xdd, 0xe7, 0xef, 0xe7, 0xdd, 0xe7, 0xef, 0xe7, 0xdd, 0xe8, 0xef, - 0xe7, 0xdd, 0xe8, 0xef, 0xe7, 0xdd, 0xe8, 0xef, 0xe7, 0xdd, 0xe8, 0xef, - 0xe7, 0xdd, 0xe9, 0xef, 0xe7, 0xdd, 0xe9, 0xef, 0xe7, 0xdd, 0xe9, 0xee, - 0xe7, 0xdd, 0xe9, 0xef, 0xe7, 0xdd, 0xea, 0xee, 0xe7, 0xdd, 0xea, 0xef, - 0xe7, 0xdd, 0xea, 0xee, 0xe7, 0xdd, 0xea, 0xef, 0xe7, 0xdd, 0xeb, 0xec, - 0xeb, 0xdd, 0xeb, 0xec, 0xeb, 0xdd, 0xeb, 0xec, 0xeb, 0xdd, 0xeb, 0xec, - 0xeb, 0xdd, 0xec, 0xec, 0xec, 0xdd, 0xec, 0xec, 0xec, 0xdd, 0xec, 0xec, - 0xed, 0xdd, 0xec, 0xec, 0xee, 0xdd, 0xec, 0xec, 0xed, 0xdd, 0xed, 0xec, - 0xee, 0xdd, 0xed, 0xec, 0xed, 0xdd, 0xed, 0xec, 0xee, 0xdd, 0xed, 0xec, - 0xed, 0xdd, 0xee, 0xec, 0xee, 0xdd, 0xee, 0xf1, 0xf0, 0xdd, 0xee, 0xef, - 0xf1, 0xdd, 0xee, 0xef, 0xf1, 0xdd, 0xef, 0xef, 0xf1, 0xdd, 0xef, 0xef, - 0xf1, 0xdd, 0xef, 0xef, 0xf1, 0xdd, 0xef, 0xef, 0xf1, 0xdd, 0xf0, 0xef, - 0xf1, 0xdd, 0xf0, 0xef, 0xf1, 0xdd, 0xf0, 0xef, 0xf1, 0xdd, 0xf0, 0xef, - 0xf1, 0xdd, 0xf1, 0xef, 0xf1, 0xdc, 0xf0, 0xef, 0xf1, 0xdd, 0xf1, 0xef, - 0xf1, 0xdd, 0xf1, 0xef, 0xf1, 0xdd, 0xf2, 0xef, 0xf1, 0xdd, 0xf2, 0xef, - 0xf1, 0xdd, 0xf2, 0xef, 0xf1, 0xdd, 0xf2, 0xef, 0xf1, 0xdd, 0xf2, 0xef, - 0xf1, 0xdd, 0xf3, 0xef, 0xf1, 0xdd, 0xf3, 0xee, 0xf1, 0xdd, 0xf3, 0xef, - 0xf1, 0xdd, 0xf3, 0xee, 0xf1, 0xdd, 0xf4, 0xef, 0xf1, 0xdd, 0xf4, 0xee, - 0xf1, 0xdd, 0xf4, 0xef, 0xf1, 0xdd, 0xf4, 0xee, 0xf1, 0xdd, 0xf5, 0xef, - 0xf1, 0xdd, 0xf5, 0xee, 0xf1, 0xdd, 0xf5, 0xef, 0xf1, 0xdd, 0xf5, 0xee, - 0xf1, 0xdd, 0xf5, 0xef, 0xf1, 0xdd, 0xf6, 0xee, 0xf1, 0xdd, 0xf6, 0xef, - 0xf1, 0xdd, 0xf6, 0xee, 0xf1, 0xdd, 0xf6, 0xef, 0xf1, 0xdd, 0xf7, 0xee, - 0xf1, 0xdd, 0xf7, 0xef, 0xf1, 0xdd, 0xf7, 0xee, 0xf1, 0xdd, 0xf7, 0xef, - 0xf1, 0xdd, 0xf8, 0xee, 0xf1, 0xdd, 0xf8, 0xef, 0xf1, 0xdd, 0xf8, 0xee, - 0xf1, 0xdd, 0xf8, 0xef, 0xf1, 0xdd, 0xf8, 0xee, 0xf1, 0xdd, 0xf9, 0xef, - 0xf1, 0xdd, 0xf9, 0xee, 0xf1, 0xdd, 0xf9, 0xef, 0xf1, 0xdd, 0xf9, 0xee, - 0xf1, 0xdd, 0xfa, 0xec, 0xf1, 0xdd, 0xfa, 0xee, 0xf1, 0xdd, 0xfa, 0xec, - 0xf1, 0xdd, 0xfa, 0xee, 0xf1, 0xdd, 0xfa, 0xec, 0xf1, 0xdd, 0xfb, 0xee, - 0xf1, 0xdd, 0xfb, 0xec, 0xf1, 0xdd, 0xfb, 0xee, 0xf1, 0xdd, 0xfb, 0xec, - 0xf1, 0xdd, 0xfc, 0xee, 0xf1, 0xdd, 0xfc, 0xec, 0xf1, 0xdd, 0xfc, 0xee, - 0xf1, 0xdd, 0xfc, 0xec, 0xf1, 0xdd, 0xfc, 0xee, 0xf1, 0xdd, 0xfd, 0xec, - 0xf1, 0xdd, 0xfd, 0xee, 0xf1, 0xdd, 0xfd, 0xec, 0xf1, 0xdd, 0xfd, 0xee, - 0xf1, 0xdd, 0xfe, 0xec, 0xf1, 0xdd, 0xfe, 0xee, 0xf1, 0xdd, 0xfe, 0xec, - 0xf1, 0xdd, 0xfe, 0xee, 0xf1, 0xdd, 0xfe, 0xec, 0xf1, 0xdd, 0xff, 0xec, - 0xf1, 0xdd, 0xff, 0xec, 0xf1, 0xdd, 0x03, 0xf2, 0x83, 0xdd, 0x0a, 0xf4, - 0x83, 0xdd, 0x0f, 0xf2, 0x83, 0xdd, 0x14, 0xf4, 0x83, 0xdd, 0x17, 0xf2, - 0x83, 0xdd, 0x1b, 0xf4, 0x83, 0xdd, 0x1e, 0xf2, 0x83, 0xdd, 0x20, 0xf4, - 0x83, 0xdd, 0x23, 0xf2, 0x83, 0xdd, 0x25, 0xf4, 0x83, 0xdd, 0x27, 0xf2, - 0x83, 0xdd, 0x29, 0xf4, 0x83, 0xdd, 0x2b, 0xf2, 0x83, 0xdd, 0x2d, 0xf4, - 0x83, 0xdd, 0x2f, 0xf2, 0x83, 0xdd, 0x31, 0xf4, 0x83, 0xdd, 0x32, 0xf2, - 0x83, 0xdd, 0x34, 0xf4, 0x83, 0xdd, 0x35, 0xf2, 0x83, 0xdd, 0x37, 0xf4, - 0x83, 0xdd, 0x38, 0xf2, 0x83, 0xdd, 0x3a, 0xf4, 0x83, 0xdd, 0x3b, 0xf2, - 0x83, 0xdd, 0x3c, 0xf4, 0x83, 0xdd, 0x3e, 0xf2, 0x83, 0xdd, 0x3f, 0xf4, - 0x83, 0xdd, 0x40, 0xf2, 0x83, 0xdd, 0x42, 0xf4, 0x83, 0xdd, 0x43, 0xf2, - 0x83, 0xdd, 0x44, 0xf4, 0x83, 0xdd, 0x45, 0xf2, 0x83, 0xdd, 0x46, 0xf4, - 0x83, 0xdd, 0x47, 0xf2, 0x83, 0xdd, 0x48, 0xf4, 0x83, 0xdd, 0x49, 0xf2, - 0x83, 0xdd, 0x4a, 0xf4, 0x83, 0xdd, 0x4b, 0xf2, 0x83, 0xdd, 0x4c, 0xf4, - 0x83, 0xdd, 0x4d, 0xf2, 0x83, 0xdd, 0x4e, 0xf4, 0x83, 0xdd, 0x4f, 0xf2, - 0x83, 0xdd, 0x50, 0xf4, 0x83, 0xdd, 0x51, 0xf2, 0x83, 0xdd, 0x52, 0xf4, - 0x83, 0xdd, 0x53, 0xf2, 0x83, 0xdd, 0x54, 0xf1, 0x84, 0xdd, 0x55, 0xf2, - 0x83, 0xdd, 0x56, 0xf1, 0x84, 0xdd, 0x57, 0xf2, 0x83, 0xdd, 0x58, 0xf1, - 0x84, 0xdd, 0x58, 0xf2, 0x83, 0xdd, 0x59, 0xf1, 0x84, 0xdd, 0x5a, 0xf2, - 0x83, 0xdd, 0x5b, 0xf1, 0x84, 0xdd, 0x5c, 0xf2, 0x83, 0xdd, 0x5d, 0xf1, - 0x84, 0xdd, 0x5d, 0xf2, 0x83, 0xdd, 0x5e, 0xf1, 0x84, 0xdd, 0x5f, 0xf2, - 0x83, 0xdd, 0x60, 0xf1, 0x84, 0xdd, 0x60, 0xf2, 0x83, 0xdd, 0x61, 0xf1, - 0x84, 0xdd, 0x62, 0xf2, 0x83, 0xdd, 0x63, 0xf1, 0x84, 0xdd, 0x63, 0xf2, - 0x83, 0xdd, 0x64, 0xf1, 0x84, 0xdd, 0x65, 0xf2, 0x83, 0xdd, 0x66, 0xf1, - 0x84, 0xdd, 0x66, 0xf2, 0x83, 0xdd, 0x67, 0xf1, 0x84, 0xdd, 0x68, 0xf2, - 0x83, 0xdd, 0x68, 0xf1, 0x84, 0xdd, 0x69, 0xf2, 0x83, 0xdd, 0x6a, 0xf1, - 0x84, 0xdd, 0x6a, 0xf2, 0x83, 0xdd, 0x6b, 0xf1, 0x84, 0xdd, 0x6c, 0xf2, - 0x83, 0xdd, 0x6c, 0xf1, 0x84, 0xdd, 0x6d, 0xf2, 0x83, 0xdd, 0x6e, 0xf1, - 0x84, 0xdd, 0x6e, 0xf2, 0x83, 0xdd, 0x6f, 0xf1, 0x84, 0xdd, 0x70, 0xf0, - 0x84, 0xdd, 0x70, 0xf1, 0x84, 0xdd, 0x71, 0xf0, 0x84, 0xdd, 0x72, 0xf1, - 0x84, 0xdd, 0x72, 0xf0, 0x84, 0xdd, 0x73, 0xf1, 0x84, 0xdd, 0x73, 0xf0, - 0x84, 0xdd, 0x74, 0xf1, 0x84, 0xdd, 0x75, 0xf0, 0x84, 0xdd, 0x75, 0xf1, - 0x84, 0xdd, 0x76, 0xf0, 0x84, 0xdd, 0x76, 0xf1, 0x84, 0xdd, 0x77, 0xf0, - 0x84, 0xdd, 0x78, 0xf1, 0x84, 0xdd, 0x78, 0xf0, 0x84, 0xdd, 0x79, 0xf1, - 0x84, 0xdd, 0x79, 0xf0, 0x84, 0xdd, 0x7a, 0xf1, 0x84, 0xdd, 0x7a, 0xf0, - 0x84, 0xdd, 0x7b, 0xf1, 0x84, 0xdd, 0x7c, 0xf0, 0x84, 0xdd, 0x7c, 0xf1, - 0x84, 0xdd, 0x7d, 0xf0, 0x84, 0xdd, 0x7d, 0xf1, 0x84, 0xdd, 0x7e, 0xf0, - 0x84, 0xdd, 0x7e, 0xf1, 0x84, 0xdd, 0x7f, 0xf0, 0x84, 0xdd, 0x7f, 0xf1, - 0x84, 0xdd, 0x80, 0xf0, 0x84, 0xdd, 0x81, 0xf0, 0x85, 0xdd, 0x81, 0xf0, - 0x84, 0xdd, 0x82, 0xf0, 0x85, 0xdd, 0x82, 0xf0, 0x84, 0xdd, 0x83, 0xf0, - 0x85, 0xdd, 0x83, 0xf0, 0x84, 0xdd, 0x84, 0xf0, 0x85, 0xdd, 0x83, 0xf0, - 0x84, 0xdd, 0x84, 0xf0, 0x85, 0xdd, 0x83, 0xf0, 0x85, 0xdd, 0x84, 0xf0, - 0x86, 0xdd, 0x84, 0xf0, 0x86, 0xdb, 0x84, 0xf0, 0x87, 0xdd, 0x84, 0xf0, - 0x87, 0xdb, 0x84, 0xf0, 0x88, 0xdd, 0x84, 0xf0, 0x88, 0xdb, 0x84, 0xf0, - 0x89, 0xdd, 0x84, 0xf0, 0x89, 0xdb, 0x84, 0xf0, 0x8a, 0xdd, 0x84, 0xf0, - 0x8a, 0xdb, 0x84, 0xf0, 0x8b, 0xdd, 0x84, 0xf0, 0x8b, 0xdb, 0x84, 0xf0, - 0x8c, 0xdd, 0x84, 0xf0, 0x8c, 0xdb, 0x84, 0xf0, 0x8d, 0xdd, 0x84, 0xf0, - 0x8d, 0xdb, 0x84, 0xf0, 0x8e, 0xdd, 0x84, 0xf0, 0x8e, 0xdb, 0x84, 0xf0, - 0x8e, 0xdd, 0x84, 0xf0, 0x8f, 0xdb, 0x84, 0xf0, 0x8f, 0xdd, 0x8f, 0xf0, - 0x90, 0xe9, 0x8f, 0xf0, 0x90, 0xe9, 0x8f, 0xf0, 0x91, 0xe9, 0x8f, 0xf0, - 0x91, 0xe9, 0x8f, 0xf0, 0x92, 0xe9, 0x8f, 0xf0, 0x92, 0xe9, 0x8f, 0xf0, - 0x93, 0xe9, 0x8f, 0xf0, 0x93, 0xe9, 0x94, 0xf0, 0x94, 0xea, 0x94, 0xf0, - 0x94, 0xea, 0x94, 0xf0, 0x94, 0xea, 0x94, 0xf0, 0x95, 0xea, 0x94, 0xf0, - 0x95, 0xea, 0x94, 0xf0, 0x96, 0xea, 0x94, 0xf0, 0x96, 0xea, 0x94, 0xf0, - 0x97, 0xea, 0x94, 0xf0, 0x97, 0xea, 0x94, 0xf0, 0x98, 0xea, 0x94, 0xf0, - 0x98, 0xea, 0x94, 0xf0, 0x98, 0xea, 0x94, 0xf0, 0x99, 0xea, 0x99, 0xf0, - 0x99, 0xeb, 0x99, 0xf0, 0x9a, 0xeb, 0x99, 0xf0, 0x9a, 0xeb, 0x99, 0xf0, - 0x9a, 0xeb, 0x99, 0xf0, 0x9b, 0xeb, 0x99, 0xf0, 0x9b, 0xeb, 0x99, 0xf0, - 0x9c, 0xeb, 0x99, 0xf0, 0x9c, 0xeb, 0x99, 0xf0, 0x9d, 0xeb, 0x99, 0xf0, - 0x9d, 0xeb, 0x99, 0xf0, 0x9d, 0xeb, 0x9e, 0xf0, 0x9e, 0xec, 0x9d, 0xf0, - 0x9e, 0xec, 0x9e, 0xf0, 0x9f, 0xec, 0x9d, 0xf0, 0x9f, 0xec, 0x9e, 0xf0, - 0x9f, 0xec, 0x9d, 0xf0, 0xa0, 0xec, 0x9e, 0xf0, 0xa0, 0xec, 0x9d, 0xf0, - 0xa1, 0xec, 0x9e, 0xf0, 0xa1, 0xec, 0x9d, 0xf0, 0xa1, 0xec, 0x9e, 0xf0, - 0xa2, 0xec, 0xa2, 0xf0, 0xa2, 0xed, 0xa2, 0xf0, 0xa3, 0xed, 0xa2, 0xf0, - 0xa3, 0xed, 0xa2, 0xf0, 0xa3, 0xed, 0xa2, 0xf0, 0xa4, 0xed, 0xa2, 0xf0, - 0xa4, 0xed, 0xa2, 0xf0, 0xa5, 0xed, 0xa2, 0xf0, 0xa5, 0xed, 0xa2, 0xf0, - 0xa5, 0xed, 0xa2, 0xf0, 0xa6, 0xed, 0xa2, 0xf0, 0xa6, 0xed, 0xa6, 0xf0, - 0xa6, 0xee, 0xa6, 0xf0, 0xa7, 0xee, 0xa6, 0xf0, 0xa7, 0xee, 0xa6, 0xf0, - 0xa8, 0xee, 0xa6, 0xf0, 0xa8, 0xee, 0xa6, 0xf0, 0xa8, 0xee, 0xa6, 0xf0, - 0xa9, 0xee, 0xa6, 0xf0, 0xa9, 0xee, 0xa6, 0xf0, 0xaa, 0xee, 0xa6, 0xf0, - 0xaa, 0xee, 0xa6, 0xf0, 0xaa, 0xee, 0xab, 0xf0, 0xab, 0xef, 0xa6, 0xf0, - 0xab, 0xee, 0xab, 0xf0, 0xab, 0xef, 0xaa, 0xf0, 0xac, 0xef, 0xab, 0xf0, - 0xac, 0xef, 0xaa, 0xf0, 0xac, 0xef, 0xab, 0xf0, 0xad, 0xef, 0xaa, 0xf0, - 0xad, 0xef, 0xab, 0xf0, 0xae, 0xef, 0xaa, 0xf0, 0xae, 0xef, 0xab, 0xf0, - 0xae, 0xef, 0xaa, 0xf0, 0xaf, 0xef, 0xab, 0xf0, 0xaf, 0xef, 0xaf, 0xf0, - 0xaf, 0xf0, 0xae, 0xf0, 0xb0, 0xf0, 0xaf, 0xf0, 0xb0, 0xf0, 0xae, 0xf0, - 0xb0, 0xf0, 0xaf, 0xf0, 0xb1, 0xf0, 0xae, 0xf0, 0xb1, 0xf0, 0xaf, 0xf0, - 0xb2, 0xf0, 0xae, 0xf0, 0xb2, 0xf0, 0xaf, 0xf0, 0xb2, 0xf0, 0xae, 0xf0, - 0xb3, 0xf0, 0xaf, 0xf0, 0xb3, 0xf0, 0xb3, 0xf0, 0xb3, 0xf1, 0xb2, 0xf0, - 0xb4, 0xf1, 0xb3, 0xf0, 0xb4, 0xf1, 0xb2, 0xf0, 0xb4, 0xf1, 0xb3, 0xf0, - 0xb5, 0xf1, 0xb2, 0xf0, 0xb5, 0xf1, 0xb3, 0xf0, 0xb5, 0xf1, 0xb2, 0xf0, - 0xb6, 0xf1, 0xb3, 0xf0, 0xb6, 0xf1, 0xb2, 0xf0, 0xb6, 0xf1, 0xb3, 0xf0, - 0xb7, 0xf1, 0xb6, 0xf0, 0xb7, 0xf2, 0xb6, 0xf0, 0xb7, 0xf2, 0xb6, 0xf0, - 0xb8, 0xf2, 0xb6, 0xf0, 0xb8, 0xf2, 0xb6, 0xf0, 0xb8, 0xf2, 0xb6, 0xf0, - 0xb9, 0xf2, 0xb6, 0xf0, 0xb9, 0xf2, 0xb6, 0xf0, 0xb9, 0xf2, 0xb6, 0xf0, - 0xba, 0xf2, 0xb6, 0xf0, 0xba, 0xf2, 0xb6, 0xf0, 0xba, 0xf2, 0xba, 0xf0, - 0xbb, 0xf3, 0xba, 0xf0, 0xbb, 0xf3, 0xba, 0xf0, 0xbb, 0xf3, 0xba, 0xf0, - 0xbc, 0xf3, 0xba, 0xf0, 0xbc, 0xf3, 0xba, 0xf0, 0xbc, 0xf3, 0xba, 0xf0, - 0xbd, 0xf3, 0xba, 0xf0, 0xbd, 0xf3, 0xba, 0xf0, 0xbd, 0xf3, 0xba, 0xf0, - 0xbe, 0xf3, 0xba, 0xf0, 0xbe, 0xf3, 0xcc, 0xf0, 0xbe, 0xe0, 0xcc, 0xf0, - 0xbf, 0xe3, 0xcc, 0xf0, 0xbf, 0xe0, 0xcc, 0xf0, 0xbf, 0xe3, 0xcc, 0xf0, - 0xc0, 0xe0, 0xcc, 0xf0, 0xc0, 0xe3, 0xcc, 0xf0, 0xc0, 0xe0, 0xcc, 0xf0, - 0xc1, 0xe3, 0xcc, 0xf0, 0xc1, 0xe0, 0xcc, 0xf0, 0xc1, 0xdd, 0xcc, 0xf0, - 0xc1, 0xe0, 0xcc, 0xf0, 0xc2, 0xdd, 0xcc, 0xf0, 0xc2, 0xe0, 0xcc, 0xf0, - 0xc2, 0xdd, 0xcc, 0xf0, 0xc3, 0xe0, 0xcc, 0xf0, 0xc3, 0xdd, 0xcc, 0xf0, - 0xc3, 0xe0, 0xcc, 0xf0, 0xc4, 0xdd, 0xcc, 0xf0, 0xc4, 0xe0, 0xcc, 0xf0, - 0xc4, 0xdd, 0xcc, 0xf0, 0xc5, 0xe0, 0xcc, 0xf0, 0xc5, 0xdd, 0xcc, 0xf0, - 0xc5, 0xe0, 0xcc, 0xf0, 0xc6, 0xdd, 0xcc, 0xf0, 0xc6, 0xe0, 0xcc, 0xf0, - 0xc6, 0xdd, 0xcc, 0xf0, 0xc6, 0xe0, 0xcc, 0xf0, 0xc7, 0xdd, 0xcc, 0xf0, - 0xc7, 0xe0, 0xcc, 0xf0, 0xc7, 0xdd, 0xcc, 0xf0, 0xc8, 0xe0, 0xcc, 0xf0, - 0xc8, 0xdd, 0xcc, 0xf0, 0xc8, 0xe0, 0xcc, 0xf0, 0xc9, 0xdd, 0xcc, 0xf0, - 0xc9, 0xe0, 0xcc, 0xf0, 0xc9, 0xdd, 0xcc, 0xf0, 0xc9, 0xe0, 0xcc, 0xf0, - 0xca, 0xdd, 0xcc, 0xf0, 0xca, 0xdd, 0xcc, 0xf0, 0xca, 0xdd, 0xcc, 0xf0, - 0xcb, 0xdd, 0xcc, 0xf0, 0xcb, 0xdd, 0xcc, 0xf0, 0xcb, 0xdd, 0xcc, 0xf0, - 0xcc, 0xdd, 0xcc, 0xf0, 0xcc, 0xdd, 0xcc, 0xef, 0xcc, 0xdd, 0xcc, 0xf0, - 0xcc, 0xdd, 0xcd, 0xef, 0xcc, 0xdd, 0xcd, 0xf0, 0xcc, 0xdd, 0xcd, 0xef, - 0xcc, 0xdd, 0xce, 0xf0, 0xcc, 0xdd, 0xce, 0xef, 0xcc, 0xdd, 0xce, 0xf0, - 0xcc, 0xdd, 0xce, 0xef, 0xcc, 0xdd, 0xcf, 0xee, 0xcc, 0xdd, 0xcf, 0xef, - 0xcc, 0xdd, 0xcf, 0xee, 0xcc, 0xdd, 0xd0, 0xef, 0xcc, 0xdd, 0xd0, 0xee, - 0xcc, 0xdd, 0xd0, 0xef, 0xcc, 0xdd, 0xd0, 0xee, 0xcc, 0xdd, 0xd1, 0xef, - 0xcc, 0xdd, 0xd1, 0xee, 0xcc, 0xdd, 0xd1, 0xef, 0xcc, 0xdd, 0xd2, 0xee, - 0xcc, 0xdd, 0xd2, 0xef, 0xcc, 0xdd, 0xd2, 0xee, 0xcc, 0xdd, 0xd2, 0xef, - 0xcc, 0xdd, 0xd3, 0xee, 0xcc, 0xdd, 0xd3, 0xef, 0xcc, 0xdd, 0xd3, 0xee, - 0xcc, 0xdd, 0xd4, 0xef, 0xcc, 0xdd, 0xd4, 0xee, 0xcc, 0xdd, 0xd4, 0xef, - 0xcc, 0xdd, 0xd4, 0xee, 0xcc, 0xdd, 0xd5, 0xef, 0xcc, 0xdd, 0xd5, 0xee, - 0xcc, 0xdd, 0xd5, 0xef, 0xcc, 0xdd, 0xd6, 0xee, 0xcc, 0xdd, 0xd6, 0xef, - 0xcc, 0xdd, 0xd6, 0xee, 0xcc, 0xdd, 0xd6, 0xef, 0xcc, 0xdd, 0xd7, 0xee, - 0xcc, 0xdd, 0xd7, 0xed, 0xcd, 0xdd, 0xd7, 0xee, 0xcc, 0xdd, 0xd7, 0xed, - 0xcd, 0xdd, 0xd8, 0xee, 0xcc, 0xdd, 0xd8, 0xed, 0xcd, 0xdd, 0xd8, 0xee, - 0xcc, 0xdd, 0xd9, 0xed, 0xcd, 0xdd, 0xd9, 0xee, 0xcc, 0xdd, 0xd9, 0xf2, - 0xe5, 0xdd, 0xd9, 0xf1, 0xe5, 0xdd, 0xda, 0xf2, 0xe5, 0xdd, 0xda, 0xf1, - 0xe5, 0xdd, 0xda, 0xf2, 0xe5, 0xdd, 0xda, 0xf1, 0xe5, 0xdd, 0xdb, 0xf2, - 0xe5, 0xdd, 0xdb, 0xf1, 0xe5, 0xdd, 0xdb, 0xf2, 0xe5, 0xdd, 0xdb, 0xf1, - 0xe5, 0xdd, 0xdc, 0xf2, 0xe5, 0xdd, 0xdc, 0xf1, 0xe5, 0xdd, 0xdc, 0xf2, - 0xe5, 0xdd, 0xdd, 0xf1, 0xe5, 0xdd, 0xdd, 0xf2, 0xe5, 0xdd, 0xdd, 0xf1, - 0xe5, 0xdd, 0xdd, 0xf2, 0xe5, 0xdd, 0xde, 0xf1, 0xe5, 0xdd, 0xde, 0xf2, - 0xe5, 0xdd, 0xde, 0xf1, 0xe5, 0xdd, 0xde, 0xf2, 0xe5, 0xdd, 0xdf, 0xf1, - 0xe5, 0xdd, 0xdf, 0xf0, 0xe5, 0xdd, 0xdf, 0xf1, 0xe5, 0xdd, 0xdf, 0xf0, - 0xe5, 0xdd, 0xe0, 0xf1, 0xe5, 0xdd, 0xe0, 0xf0, 0xe5, 0xdd, 0xe0, 0xf1, - 0xe5, 0xdd, 0xe1, 0xf0, 0xe5, 0xdd, 0xe1, 0xf1, 0xe5, 0xdd, 0xe1, 0xf0, - 0xe5, 0xdd, 0xe1, 0xf1, 0xe5, 0xdd, 0xe2, 0xf0, 0xe5, 0xdd, 0xe2, 0xf1, - 0xe5, 0xdd, 0xe2, 0xf0, 0xe5, 0xdd, 0xe2, 0xf1, 0xe5, 0xdd, 0xe3, 0xf0, - 0xe5, 0xdd, 0xe3, 0xf1, 0xe5, 0xdd, 0xe3, 0xf0, 0xe5, 0xdd, 0xe3, 0xf1, - 0xe5, 0xdd, 0xe4, 0xf0, 0xe5, 0xdd, 0xe4, 0xf1, 0xe5, 0xdd, 0xe4, 0xf0, - 0xe5, 0xdd, 0xe4, 0xf0, 0xe5, 0xdd, 0xe5, 0xf0, 0xe5, 0xdd, 0xe5, 0xf0, - 0xe5, 0xdd, 0xe5, 0xf0, 0xe5, 0xdd, 0xe5, 0xf0, 0xe5, 0xdd, 0xe5, 0xf0, - 0xe6, 0xdd, 0xe5, 0xf0, 0xe6, 0xdd, 0xe7, 0xf0, 0xe6, 0xdd, 0xe7, 0xf0, - 0xe6, 0xdd, 0xe7, 0xf0, 0xe7, 0xdd, 0xe7, 0xef, 0xe7, 0xdd, 0xe7, 0xf0, - 0xe7, 0xdd, 0xe7, 0xef, 0xe7, 0xdd, 0xe8, 0xf0, 0xe7, 0xdd, 0xe8, 0xef, - 0xe7, 0xdd, 0xe8, 0xf0, 0xe7, 0xdd, 0xe8, 0xef, 0xe7, 0xdd, 0xe9, 0xf0, - 0xe7, 0xdd, 0xe9, 0xef, 0xe7, 0xdd, 0xe9, 0xf0, 0xe7, 0xdd, 0xe9, 0xef, - 0xe7, 0xdd, 0xea, 0xf0, 0xe7, 0xdd, 0xea, 0xef, 0xe7, 0xdd, 0xea, 0xf0, - 0xe7, 0xdd, 0xea, 0xef, 0xe7, 0xdd, 0xeb, 0xec, 0xec, 0xdd, 0xeb, 0xec, - 0xec, 0xdd, 0xeb, 0xec, 0xec, 0xdd, 0xeb, 0xec, 0xec, 0xdd, 0xec, 0xec, - 0xec, 0xdd, 0xec, 0xec, 0xec, 0xdd, 0xec, 0xec, 0xec, 0xdd, 0xec, 0xec, - 0xec, 0xdd, 0xec, 0xec, 0xec, 0xdd, 0xed, 0xec, 0xed, 0xdd, 0xed, 0xec, - 0xed, 0xdd, 0xed, 0xec, 0xed, 0xdd, 0xed, 0xf1, 0xf0, 0xdd, 0xee, 0xf0, - 0xf1, 0xdd, 0xee, 0xf1, 0xf0, 0xdd, 0xee, 0xf0, 0xf1, 0xdd, 0xee, 0xf1, - 0xf0, 0xdd, 0xef, 0xf0, 0xf1, 0xdd, 0xef, 0xf1, 0xf0, 0xdd, 0xef, 0xf0, - 0xf1, 0xdd, 0xef, 0xf1, 0xf0, 0xdd, 0xf0, 0xf0, 0xf1, 0xdd, 0xf0, 0xf0, - 0xf1, 0xdd, 0xf0, 0xf0, 0xf1, 0xdd, 0xf0, 0xf0, 0xf1, 0xdd, 0xf0, 0xf0, - 0xf1, 0xdd, 0xf0, 0xf0, 0xf1, 0xdd, 0xf1, 0xf0, 0xf1, 0xdd, 0xf1, 0xf0, - 0xf1, 0xdd, 0xf2, 0xf0, 0xf1, 0xdd, 0xf2, 0xf0, 0xf1, 0xdd, 0xf2, 0xf0, - 0xf1, 0xdd, 0xf2, 0xf0, 0xf1, 0xdd, 0xf2, 0xf0, 0xf1, 0xdd, 0xf3, 0xf0, - 0xf1, 0xdd, 0xf3, 0xf0, 0xf1, 0xdd, 0xf3, 0xf0, 0xf1, 0xdd, 0xf3, 0xf0, - 0xf1, 0xdd, 0xf4, 0xf0, 0xf1, 0xdd, 0xf4, 0xf0, 0xf1, 0xdd, 0xf4, 0xf0, - 0xf1, 0xdd, 0xf4, 0xf0, 0xf1, 0xdd, 0xf5, 0xf0, 0xf1, 0xdd, 0xf5, 0xee, - 0xf1, 0xdd, 0xf5, 0xf0, 0xf1, 0xdd, 0xf5, 0xee, 0xf1, 0xdd, 0xf5, 0xf0, - 0xf1, 0xdd, 0xf6, 0xee, 0xf1, 0xdd, 0xf6, 0xf0, 0xf1, 0xdd, 0xf6, 0xee, - 0xf1, 0xdd, 0xf6, 0xf0, 0xf1, 0xdd, 0xf7, 0xee, 0xf1, 0xdd, 0xf7, 0xf0, - 0xf1, 0xdd, 0xf7, 0xee, 0xf1, 0xdd, 0xf7, 0xf0, 0xf1, 0xdd, 0xf8, 0xee, - 0xf1, 0xdd, 0xf8, 0xf0, 0xf1, 0xdd, 0xf8, 0xee, 0xf1, 0xdd, 0xf8, 0xf0, - 0xf1, 0xdd, 0xf8, 0xee, 0xf1, 0xdd, 0xf9, 0xf0, 0xf1, 0xdd, 0xf9, 0xee, - 0xf1, 0xdd, 0xf9, 0xf0, 0xf1, 0xdd, 0xf9, 0xee, 0xf1, 0xdd, 0xfa, 0xf0, - 0xf1, 0xdd, 0xfa, 0xee, 0xf1, 0xdd, 0xfa, 0xf0, 0xf1, 0xdd, 0xfa, 0xee, - 0xf1, 0xdd, 0xfa, 0xf0, 0xf1, 0xdd, 0xfb, 0xee, 0xf1, 0xdd, 0xfb, 0xf0, - 0xf1, 0xdd, 0xfb, 0xee, 0xf1, 0xdd, 0xfb, 0xf0, 0xf1, 0xdd, 0xfc, 0xee, - 0xf1, 0xdd, 0xfc, 0xf0, 0xf1, 0xdd, 0xfc, 0xee, 0xf1, 0xdd, 0xfc, 0xec, - 0xf1, 0xdd, 0xfc, 0xee, 0xf1, 0xdd, 0xfd, 0xec, 0xf1, 0xdd, 0xfd, 0xee, - 0xf1, 0xdd, 0xfd, 0xec, 0xf1, 0xdd, 0xfd, 0xee, 0xf1, 0xdd, 0xfe, 0xec, - 0xf1, 0xdd, 0xfe, 0xee, 0xf1, 0xdd, 0xfe, 0xec, 0xf1, 0xdd, 0xfe, 0xee, - 0xf1, 0xdd, 0xfe, 0xec, 0xf1, 0xdd, 0xff, 0xee, 0xf1, 0xdd, 0xff, 0xec, - 0xf1, 0xdd, 0x03, 0xf3, 0x83, 0xde, 0x0a, 0xf4, 0x83, 0xde, 0x0f, 0xf3, - 0x83, 0xde, 0x14, 0xf4, 0x83, 0xde, 0x17, 0xf3, 0x83, 0xde, 0x1b, 0xf4, - 0x83, 0xde, 0x1e, 0xf3, 0x83, 0xde, 0x20, 0xf4, 0x83, 0xde, 0x23, 0xf3, - 0x83, 0xde, 0x25, 0xf4, 0x83, 0xde, 0x27, 0xf3, 0x83, 0xde, 0x29, 0xf4, - 0x83, 0xde, 0x2b, 0xf3, 0x83, 0xde, 0x2d, 0xf4, 0x83, 0xde, 0x2f, 0xf3, - 0x83, 0xde, 0x31, 0xf4, 0x83, 0xde, 0x32, 0xf3, 0x83, 0xde, 0x34, 0xf4, - 0x83, 0xde, 0x35, 0xf3, 0x83, 0xde, 0x37, 0xf4, 0x83, 0xde, 0x38, 0xf3, - 0x83, 0xde, 0x3a, 0xf4, 0x83, 0xde, 0x3b, 0xf3, 0x83, 0xde, 0x3c, 0xf4, - 0x83, 0xde, 0x3e, 0xf3, 0x83, 0xde, 0x3f, 0xf4, 0x83, 0xde, 0x40, 0xf3, - 0x83, 0xde, 0x42, 0xf4, 0x83, 0xde, 0x43, 0xf3, 0x83, 0xde, 0x44, 0xf4, - 0x83, 0xde, 0x45, 0xf3, 0x83, 0xde, 0x46, 0xf4, 0x83, 0xde, 0x47, 0xf3, - 0x83, 0xde, 0x48, 0xf4, 0x83, 0xde, 0x49, 0xf3, 0x83, 0xde, 0x4a, 0xf4, - 0x83, 0xde, 0x4b, 0xf3, 0x83, 0xde, 0x4c, 0xf4, 0x83, 0xde, 0x4d, 0xf3, - 0x83, 0xde, 0x4e, 0xf4, 0x83, 0xde, 0x4f, 0xf3, 0x83, 0xde, 0x50, 0xf1, - 0x84, 0xde, 0x51, 0xf3, 0x83, 0xde, 0x52, 0xf1, 0x84, 0xde, 0x53, 0xf3, - 0x83, 0xde, 0x54, 0xf1, 0x84, 0xde, 0x55, 0xf3, 0x83, 0xde, 0x56, 0xf1, - 0x84, 0xde, 0x57, 0xf3, 0x83, 0xde, 0x58, 0xf1, 0x84, 0xde, 0x58, 0xf3, - 0x83, 0xde, 0x59, 0xf1, 0x84, 0xde, 0x5a, 0xf3, 0x83, 0xde, 0x5b, 0xf1, - 0x84, 0xde, 0x5c, 0xf3, 0x83, 0xde, 0x5d, 0xf1, 0x84, 0xde, 0x5d, 0xf3, - 0x83, 0xde, 0x5e, 0xf1, 0x84, 0xde, 0x5f, 0xf3, 0x83, 0xde, 0x60, 0xf1, - 0x84, 0xde, 0x60, 0xf3, 0x83, 0xde, 0x61, 0xf1, 0x84, 0xde, 0x62, 0xf3, - 0x83, 0xde, 0x63, 0xf1, 0x84, 0xde, 0x63, 0xf3, 0x83, 0xde, 0x64, 0xf1, - 0x84, 0xde, 0x65, 0xf3, 0x83, 0xde, 0x66, 0xf1, 0x84, 0xde, 0x66, 0xf3, - 0x83, 0xde, 0x67, 0xf1, 0x84, 0xde, 0x68, 0xf3, 0x83, 0xde, 0x68, 0xf1, - 0x84, 0xde, 0x69, 0xf3, 0x83, 0xde, 0x6a, 0xf1, 0x84, 0xde, 0x6a, 0xf3, - 0x83, 0xde, 0x6b, 0xf1, 0x84, 0xde, 0x6c, 0xf3, 0x83, 0xde, 0x6c, 0xf1, - 0x84, 0xde, 0x6d, 0xf3, 0x83, 0xde, 0x6e, 0xf1, 0x84, 0xde, 0x6e, 0xf3, - 0x83, 0xde, 0x6f, 0xf1, 0x84, 0xde, 0x70, 0xf0, 0x84, 0xde, 0x70, 0xf1, - 0x84, 0xde, 0x71, 0xf0, 0x84, 0xde, 0x72, 0xf1, 0x84, 0xde, 0x72, 0xf0, - 0x84, 0xde, 0x73, 0xf1, 0x84, 0xde, 0x73, 0xf0, 0x84, 0xde, 0x74, 0xf1, - 0x84, 0xde, 0x75, 0xf0, 0x84, 0xde, 0x75, 0xf1, 0x84, 0xde, 0x76, 0xf0, - 0x84, 0xde, 0x76, 0xf1, 0x84, 0xde, 0x77, 0xf0, 0x84, 0xde, 0x78, 0xf1, - 0x84, 0xde, 0x78, 0xf0, 0x84, 0xde, 0x79, 0xf1, 0x84, 0xde, 0x79, 0xf0, - 0x84, 0xde, 0x7a, 0xf1, 0x84, 0xde, 0x7a, 0xf0, 0x84, 0xde, 0x7b, 0xf1, - 0x84, 0xde, 0x7c, 0xf0, 0x84, 0xde, 0x7c, 0xf1, 0x84, 0xde, 0x7d, 0xf0, - 0x84, 0xde, 0x7d, 0xf1, 0x84, 0xde, 0x7e, 0xf0, 0x84, 0xde, 0x7e, 0xf1, - 0x84, 0xde, 0x7f, 0xf0, 0x84, 0xde, 0x7f, 0xf1, 0x84, 0xde, 0x80, 0xf0, - 0x84, 0xde, 0x81, 0xf1, 0x84, 0xde, 0x81, 0xf0, 0x84, 0xde, 0x82, 0xf1, - 0x84, 0xde, 0x82, 0xf0, 0x84, 0xde, 0x83, 0xf0, 0x85, 0xde, 0x83, 0xf0, - 0x84, 0xde, 0x84, 0xf0, 0x85, 0xde, 0x83, 0xf0, 0x84, 0xde, 0x84, 0xf0, - 0x85, 0xde, 0x83, 0xf0, 0x85, 0xde, 0x84, 0xf0, 0x86, 0xde, 0x84, 0xf0, - 0x86, 0xdc, 0x84, 0xf0, 0x87, 0xde, 0x84, 0xf0, 0x87, 0xdc, 0x84, 0xf0, - 0x88, 0xde, 0x84, 0xf0, 0x88, 0xdc, 0x84, 0xf0, 0x89, 0xde, 0x84, 0xf0, - 0x89, 0xdc, 0x84, 0xf0, 0x8a, 0xde, 0x84, 0xf0, 0x8a, 0xdc, 0x84, 0xf0, - 0x8b, 0xde, 0x84, 0xf0, 0x8b, 0xdc, 0x84, 0xf0, 0x8c, 0xde, 0x84, 0xf0, - 0x8c, 0xdc, 0x84, 0xf0, 0x8d, 0xde, 0x84, 0xf0, 0x8d, 0xdc, 0x84, 0xf0, - 0x8e, 0xde, 0x84, 0xf0, 0x8e, 0xdc, 0x84, 0xf0, 0x8e, 0xde, 0x84, 0xf0, - 0x8f, 0xdc, 0x8d, 0xf0, 0x8f, 0xe9, 0x8c, 0xf0, 0x90, 0xe9, 0x8d, 0xf0, - 0x90, 0xe9, 0x91, 0xf0, 0x91, 0xea, 0x91, 0xf0, 0x91, 0xea, 0x92, 0xf0, - 0x92, 0xea, 0x91, 0xf0, 0x92, 0xea, 0x92, 0xf0, 0x93, 0xea, 0x91, 0xf0, - 0x93, 0xea, 0x92, 0xf0, 0x94, 0xea, 0x91, 0xf0, 0x94, 0xea, 0x92, 0xf0, - 0x94, 0xea, 0x91, 0xf0, 0x95, 0xea, 0x92, 0xf0, 0x95, 0xea, 0x96, 0xf0, - 0x96, 0xeb, 0x96, 0xf0, 0x96, 0xeb, 0x97, 0xf0, 0x97, 0xeb, 0x96, 0xf0, - 0x97, 0xeb, 0x97, 0xf0, 0x98, 0xeb, 0x96, 0xf0, 0x98, 0xeb, 0x97, 0xf0, - 0x98, 0xeb, 0x96, 0xf0, 0x99, 0xeb, 0x97, 0xf0, 0x99, 0xeb, 0x96, 0xf0, - 0x9a, 0xeb, 0x97, 0xf0, 0x9a, 0xeb, 0x96, 0xf0, 0x9a, 0xeb, 0x97, 0xf0, - 0x9b, 0xeb, 0x9b, 0xf0, 0x9b, 0xec, 0x9b, 0xf0, 0x9c, 0xec, 0x9b, 0xf0, - 0x9c, 0xec, 0x9b, 0xf0, 0x9d, 0xec, 0x9b, 0xf0, 0x9d, 0xec, 0x9b, 0xf0, - 0x9d, 0xec, 0x9b, 0xf0, 0x9e, 0xec, 0x9b, 0xf0, 0x9e, 0xec, 0x9b, 0xf0, - 0x9f, 0xec, 0x9b, 0xf0, 0x9f, 0xec, 0x9b, 0xf0, 0x9f, 0xec, 0xa0, 0xf0, - 0xa0, 0xed, 0x9f, 0xf0, 0xa0, 0xed, 0xa0, 0xf0, 0xa1, 0xed, 0x9f, 0xf0, - 0xa1, 0xed, 0xa0, 0xf0, 0xa1, 0xed, 0x9f, 0xf0, 0xa2, 0xed, 0xa0, 0xf0, - 0xa2, 0xed, 0x9f, 0xf0, 0xa3, 0xed, 0xa0, 0xf0, 0xa3, 0xed, 0x9f, 0xf0, - 0xa3, 0xed, 0xa0, 0xf0, 0xa4, 0xed, 0xa4, 0xf0, 0xa4, 0xee, 0xa4, 0xf0, - 0xa5, 0xee, 0xa4, 0xf0, 0xa5, 0xee, 0xa4, 0xf0, 0xa5, 0xee, 0xa4, 0xf0, - 0xa6, 0xee, 0xa4, 0xf0, 0xa6, 0xee, 0xa4, 0xf0, 0xa6, 0xee, 0xa4, 0xf0, - 0xa7, 0xee, 0xa4, 0xf0, 0xa7, 0xee, 0xa4, 0xf0, 0xa8, 0xee, 0xa4, 0xf0, - 0xa8, 0xee, 0xa8, 0xf0, 0xa8, 0xef, 0xa8, 0xf0, 0xa9, 0xef, 0xa8, 0xf0, - 0xa9, 0xef, 0xa8, 0xf0, 0xaa, 0xef, 0xa8, 0xf0, 0xaa, 0xef, 0xa8, 0xf0, - 0xaa, 0xef, 0xa8, 0xf0, 0xab, 0xef, 0xa8, 0xf0, 0xab, 0xef, 0xa8, 0xf0, - 0xab, 0xef, 0xa8, 0xf0, 0xac, 0xef, 0xa8, 0xf0, 0xac, 0xef, 0xac, 0xf0, - 0xac, 0xf0, 0xa8, 0xf0, 0xad, 0xef, 0xac, 0xf0, 0xad, 0xf0, 0xac, 0xf0, - 0xae, 0xf0, 0xac, 0xf0, 0xae, 0xf0, 0xac, 0xf0, 0xae, 0xf0, 0xac, 0xf0, - 0xaf, 0xf0, 0xac, 0xf0, 0xaf, 0xf0, 0xac, 0xf0, 0xaf, 0xf0, 0xac, 0xf0, - 0xb0, 0xf0, 0xac, 0xf0, 0xb0, 0xf0, 0xac, 0xf0, 0xb0, 0xf0, 0xac, 0xf0, - 0xb1, 0xf0, 0xb0, 0xf0, 0xb1, 0xf1, 0xb0, 0xf0, 0xb2, 0xf1, 0xb0, 0xf0, - 0xb2, 0xf1, 0xb0, 0xf0, 0xb2, 0xf1, 0xb0, 0xf0, 0xb3, 0xf1, 0xb0, 0xf0, - 0xb3, 0xf1, 0xb0, 0xf0, 0xb3, 0xf1, 0xb0, 0xf0, 0xb4, 0xf1, 0xb0, 0xf0, - 0xb4, 0xf1, 0xb0, 0xf0, 0xb4, 0xf1, 0xb0, 0xf0, 0xb5, 0xf1, 0xb4, 0xf0, - 0xb5, 0xf2, 0xb4, 0xf0, 0xb5, 0xf2, 0xb4, 0xf0, 0xb6, 0xf2, 0xb4, 0xf0, - 0xb6, 0xf2, 0xb4, 0xf0, 0xb6, 0xf2, 0xb4, 0xf0, 0xb7, 0xf2, 0xb4, 0xf0, - 0xb7, 0xf2, 0xb4, 0xf0, 0xb7, 0xf2, 0xb4, 0xf0, 0xb8, 0xf2, 0xb4, 0xf0, - 0xb8, 0xf2, 0xb4, 0xf0, 0xb8, 0xf2, 0xb8, 0xf0, 0xb9, 0xf3, 0xb8, 0xf0, - 0xb9, 0xf3, 0xb8, 0xf0, 0xb9, 0xf3, 0xb8, 0xf0, 0xba, 0xf3, 0xb8, 0xf0, - 0xba, 0xf3, 0xb8, 0xf0, 0xba, 0xf3, 0xb8, 0xf0, 0xbb, 0xf3, 0xb8, 0xf0, - 0xbb, 0xf3, 0xb8, 0xf0, 0xbb, 0xf3, 0xb8, 0xf0, 0xbc, 0xf3, 0xb8, 0xf0, - 0xbc, 0xf3, 0xbc, 0xf0, 0xbc, 0xf4, 0xbb, 0xf0, 0xbd, 0xf4, 0xbc, 0xf0, - 0xbd, 0xf4, 0xbb, 0xf0, 0xbd, 0xf4, 0xbc, 0xf0, 0xbe, 0xf4, 0xbb, 0xf0, - 0xbe, 0xf4, 0xcc, 0xf0, 0xbe, 0xe1, 0xcc, 0xf0, 0xbf, 0xe3, 0xcc, 0xf0, - 0xbf, 0xe1, 0xcc, 0xf0, 0xbf, 0xe3, 0xcc, 0xf0, 0xc0, 0xe1, 0xcc, 0xf0, - 0xc0, 0xe3, 0xcc, 0xf0, 0xc0, 0xe1, 0xcc, 0xf0, 0xc1, 0xe3, 0xcc, 0xf0, - 0xc1, 0xe1, 0xcc, 0xf0, 0xc1, 0xe3, 0xcc, 0xf0, 0xc1, 0xe1, 0xcc, 0xf0, - 0xc2, 0xe3, 0xcc, 0xf0, 0xc2, 0xe1, 0xcc, 0xf0, 0xc2, 0xe3, 0xcc, 0xf0, - 0xc3, 0xe1, 0xcc, 0xf0, 0xc3, 0xe3, 0xcc, 0xf0, 0xc3, 0xe1, 0xcc, 0xf0, - 0xc4, 0xe3, 0xcc, 0xf0, 0xc4, 0xe1, 0xcc, 0xf0, 0xc4, 0xe3, 0xcc, 0xf0, - 0xc5, 0xe1, 0xcc, 0xf0, 0xc5, 0xde, 0xcc, 0xf0, 0xc5, 0xe1, 0xcc, 0xf0, - 0xc6, 0xde, 0xcc, 0xf0, 0xc6, 0xe1, 0xcc, 0xf0, 0xc6, 0xde, 0xcc, 0xf0, - 0xc6, 0xe1, 0xcc, 0xf0, 0xc7, 0xde, 0xcc, 0xf0, 0xc7, 0xe1, 0xcc, 0xf0, - 0xc7, 0xde, 0xcc, 0xf0, 0xc8, 0xe1, 0xcc, 0xf0, 0xc8, 0xde, 0xcc, 0xf0, - 0xc8, 0xe1, 0xcc, 0xf0, 0xc9, 0xde, 0xcc, 0xf0, 0xc9, 0xe1, 0xcc, 0xf0, - 0xc9, 0xde, 0xcc, 0xf0, 0xc9, 0xe1, 0xcc, 0xf0, 0xca, 0xde, 0xcc, 0xf0, - 0xca, 0xde, 0xcc, 0xf0, 0xca, 0xde, 0xcc, 0xf0, 0xcb, 0xde, 0xcc, 0xf0, - 0xcb, 0xde, 0xcc, 0xf0, 0xcb, 0xde, 0xcc, 0xf0, 0xcc, 0xde, 0xcc, 0xf0, - 0xcc, 0xde, 0xcc, 0xef, 0xcc, 0xde, 0xcc, 0xf0, 0xcc, 0xde, 0xcd, 0xef, - 0xcc, 0xde, 0xcd, 0xf0, 0xcc, 0xde, 0xcd, 0xef, 0xcc, 0xde, 0xce, 0xf0, - 0xcc, 0xde, 0xce, 0xef, 0xcc, 0xde, 0xce, 0xf0, 0xcc, 0xde, 0xce, 0xef, - 0xcc, 0xde, 0xcf, 0xf0, 0xcc, 0xde, 0xcf, 0xef, 0xcc, 0xde, 0xcf, 0xf0, - 0xcc, 0xde, 0xd0, 0xef, 0xcc, 0xde, 0xd0, 0xf0, 0xcc, 0xde, 0xd0, 0xef, - 0xcc, 0xde, 0xd0, 0xf0, 0xcc, 0xde, 0xd1, 0xef, 0xcc, 0xde, 0xd1, 0xee, - 0xcc, 0xde, 0xd1, 0xef, 0xcc, 0xde, 0xd2, 0xee, 0xcc, 0xde, 0xd2, 0xef, - 0xcc, 0xde, 0xd2, 0xee, 0xcc, 0xde, 0xd2, 0xef, 0xcc, 0xde, 0xd3, 0xee, - 0xcc, 0xde, 0xd3, 0xef, 0xcc, 0xde, 0xd3, 0xee, 0xcc, 0xde, 0xd4, 0xef, - 0xcc, 0xde, 0xd4, 0xee, 0xcc, 0xde, 0xd4, 0xef, 0xcc, 0xde, 0xd4, 0xee, - 0xcc, 0xde, 0xd5, 0xef, 0xcc, 0xde, 0xd5, 0xee, 0xcc, 0xde, 0xd5, 0xef, - 0xcc, 0xde, 0xd6, 0xee, 0xcc, 0xde, 0xd6, 0xef, 0xcc, 0xde, 0xd6, 0xee, - 0xcc, 0xde, 0xd6, 0xef, 0xcc, 0xde, 0xd7, 0xee, 0xcc, 0xde, 0xd7, 0xef, - 0xcc, 0xde, 0xd7, 0xee, 0xcc, 0xde, 0xd7, 0xef, 0xcc, 0xde, 0xd8, 0xee, - 0xcc, 0xde, 0xd8, 0xef, 0xcc, 0xde, 0xd8, 0xee, 0xcc, 0xde, 0xd9, 0xef, - 0xcc, 0xde, 0xd9, 0xee, 0xcc, 0xde, 0xd9, 0xf2, 0xe5, 0xde, 0xd9, 0xf1, - 0xe5, 0xde, 0xda, 0xf2, 0xe5, 0xde, 0xda, 0xf1, 0xe5, 0xde, 0xda, 0xf2, - 0xe5, 0xde, 0xda, 0xf1, 0xe5, 0xde, 0xdb, 0xf2, 0xe5, 0xde, 0xdb, 0xf1, - 0xe5, 0xde, 0xdb, 0xf2, 0xe5, 0xde, 0xdb, 0xf1, 0xe5, 0xde, 0xdc, 0xf2, - 0xe5, 0xde, 0xdc, 0xf1, 0xe5, 0xde, 0xdc, 0xf2, 0xe5, 0xde, 0xdd, 0xf1, - 0xe5, 0xde, 0xdd, 0xf2, 0xe5, 0xde, 0xdd, 0xf1, 0xe5, 0xde, 0xdd, 0xf2, - 0xe5, 0xde, 0xde, 0xf1, 0xe5, 0xde, 0xde, 0xf2, 0xe5, 0xde, 0xde, 0xf1, - 0xe5, 0xde, 0xde, 0xf2, 0xe5, 0xde, 0xdf, 0xf1, 0xe5, 0xde, 0xdf, 0xf2, - 0xe5, 0xde, 0xdf, 0xf1, 0xe5, 0xde, 0xdf, 0xf2, 0xe5, 0xde, 0xe0, 0xf1, - 0xe5, 0xde, 0xe0, 0xf2, 0xe5, 0xde, 0xe0, 0xf1, 0xe5, 0xde, 0xe1, 0xf2, - 0xe5, 0xde, 0xe1, 0xf1, 0xe5, 0xde, 0xe1, 0xf0, 0xe5, 0xde, 0xe1, 0xf1, - 0xe5, 0xde, 0xe2, 0xf0, 0xe5, 0xde, 0xe2, 0xf1, 0xe5, 0xde, 0xe2, 0xf0, - 0xe5, 0xde, 0xe2, 0xf1, 0xe5, 0xde, 0xe3, 0xf0, 0xe5, 0xde, 0xe3, 0xf1, - 0xe5, 0xde, 0xe3, 0xf0, 0xe5, 0xde, 0xe3, 0xf1, 0xe5, 0xde, 0xe4, 0xf0, - 0xe5, 0xde, 0xe4, 0xf1, 0xe5, 0xde, 0xe4, 0xf0, 0xe5, 0xde, 0xe4, 0xf0, - 0xe5, 0xde, 0xe5, 0xf0, 0xe5, 0xde, 0xe5, 0xf0, 0xe5, 0xde, 0xe5, 0xf0, - 0xe5, 0xde, 0xe5, 0xf0, 0xe5, 0xde, 0xe5, 0xf0, 0xe6, 0xde, 0xe5, 0xf0, - 0xe6, 0xde, 0xe7, 0xf0, 0xe6, 0xde, 0xe7, 0xf0, 0xe6, 0xde, 0xe7, 0xf0, - 0xe7, 0xde, 0xe7, 0xef, 0xe7, 0xde, 0xe7, 0xf0, 0xe7, 0xde, 0xe7, 0xef, - 0xe7, 0xde, 0xe8, 0xf0, 0xe7, 0xde, 0xe8, 0xef, 0xe7, 0xde, 0xe8, 0xf0, - 0xe7, 0xde, 0xe8, 0xef, 0xe7, 0xde, 0xe9, 0xf0, 0xe7, 0xde, 0xe9, 0xef, - 0xe7, 0xde, 0xe9, 0xf0, 0xe7, 0xde, 0xe9, 0xef, 0xe7, 0xde, 0xea, 0xf0, - 0xe7, 0xde, 0xea, 0xef, 0xe7, 0xde, 0xea, 0xf0, 0xe7, 0xde, 0xea, 0xef, - 0xe7, 0xde, 0xeb, 0xf0, 0xe7, 0xde, 0xeb, 0xec, 0xeb, 0xde, 0xeb, 0xec, - 0xeb, 0xde, 0xeb, 0xec, 0xeb, 0xde, 0xec, 0xec, 0xec, 0xde, 0xec, 0xec, - 0xec, 0xde, 0xec, 0xec, 0xed, 0xde, 0xec, 0xec, 0xee, 0xde, 0xec, 0xec, - 0xed, 0xde, 0xed, 0xec, 0xee, 0xde, 0xed, 0xec, 0xed, 0xde, 0xed, 0xf0, - 0xf1, 0xde, 0xed, 0xf1, 0xf0, 0xde, 0xee, 0xf0, 0xf1, 0xde, 0xee, 0xf1, - 0xf0, 0xde, 0xee, 0xf0, 0xf1, 0xde, 0xee, 0xf1, 0xf0, 0xde, 0xef, 0xf0, - 0xf1, 0xde, 0xef, 0xf1, 0xf0, 0xde, 0xef, 0xf0, 0xf1, 0xde, 0xef, 0xf1, - 0xf0, 0xde, 0xf0, 0xf0, 0xf1, 0xde, 0xf0, 0xef, 0xf1, 0xde, 0xf0, 0xf0, - 0xf1, 0xde, 0xf0, 0xef, 0xf1, 0xde, 0xf0, 0xf0, 0xf1, 0xde, 0xf1, 0xef, - 0xf1, 0xde, 0xf1, 0xf0, 0xf1, 0xde, 0xf1, 0xef, 0xf1, 0xde, 0xf2, 0xf0, - 0xf1, 0xde, 0xf2, 0xef, 0xf1, 0xde, 0xf2, 0xf0, 0xf1, 0xde, 0xf2, 0xef, - 0xf1, 0xde, 0xf2, 0xf0, 0xf1, 0xde, 0xf3, 0xef, 0xf1, 0xde, 0xf3, 0xf0, - 0xf1, 0xde, 0xf3, 0xef, 0xf1, 0xde, 0xf3, 0xf0, 0xf1, 0xde, 0xf4, 0xef, - 0xf1, 0xde, 0xf4, 0xf0, 0xf1, 0xde, 0xf4, 0xef, 0xf1, 0xde, 0xf4, 0xf0, - 0xf1, 0xde, 0xf5, 0xef, 0xf1, 0xde, 0xf5, 0xee, 0xf1, 0xde, 0xf5, 0xef, - 0xf1, 0xde, 0xf5, 0xee, 0xf1, 0xde, 0xf5, 0xef, 0xf1, 0xde, 0xf6, 0xee, - 0xf1, 0xde, 0xf6, 0xef, 0xf1, 0xde, 0xf6, 0xee, 0xf1, 0xde, 0xf6, 0xef, - 0xf1, 0xde, 0xf7, 0xee, 0xf1, 0xde, 0xf7, 0xef, 0xf1, 0xde, 0xf7, 0xee, - 0xf1, 0xde, 0xf7, 0xef, 0xf1, 0xde, 0xf8, 0xee, 0xf1, 0xde, 0xf8, 0xef, - 0xf1, 0xde, 0xf8, 0xee, 0xf1, 0xde, 0xf8, 0xef, 0xf1, 0xde, 0xf8, 0xee, - 0xf1, 0xde, 0xf9, 0xef, 0xf1, 0xde, 0xf9, 0xee, 0xf1, 0xde, 0xf9, 0xef, - 0xf1, 0xde, 0xf9, 0xee, 0xf1, 0xde, 0xfa, 0xef, 0xf1, 0xde, 0xfa, 0xee, - 0xf1, 0xde, 0xfa, 0xef, 0xf1, 0xde, 0xfa, 0xee, 0xf1, 0xde, 0xfa, 0xef, - 0xf1, 0xde, 0xfb, 0xee, 0xf1, 0xde, 0xfb, 0xef, 0xf1, 0xde, 0xfb, 0xee, - 0xf1, 0xde, 0xfb, 0xef, 0xf1, 0xde, 0xfc, 0xee, 0xf1, 0xde, 0xfc, 0xef, - 0xf1, 0xde, 0xfc, 0xee, 0xf1, 0xde, 0xfc, 0xec, 0xf1, 0xde, 0xfc, 0xee, - 0xf1, 0xde, 0xfd, 0xec, 0xf1, 0xde, 0xfd, 0xee, 0xf1, 0xde, 0xfd, 0xec, - 0xf1, 0xde, 0xfd, 0xee, 0xf1, 0xde, 0xfe, 0xec, 0xf1, 0xde, 0xfe, 0xee, - 0xf1, 0xde, 0xfe, 0xec, 0xf1, 0xde, 0xfe, 0xee, 0xf1, 0xde, 0xfe, 0xec, - 0xf1, 0xde, 0xff, 0xee, 0xf1, 0xde, 0xff, 0xec, 0xf1, 0xde, 0x03, 0xf2, - 0x83, 0xde, 0x0a, 0xf4, 0x83, 0xde, 0x0f, 0xf2, 0x83, 0xde, 0x14, 0xf4, - 0x83, 0xde, 0x17, 0xf2, 0x83, 0xde, 0x1b, 0xf4, 0x83, 0xde, 0x1e, 0xf2, - 0x83, 0xde, 0x20, 0xf4, 0x83, 0xde, 0x23, 0xf2, 0x83, 0xde, 0x25, 0xf4, - 0x83, 0xde, 0x27, 0xf2, 0x83, 0xde, 0x29, 0xf4, 0x83, 0xde, 0x2b, 0xf2, - 0x83, 0xde, 0x2d, 0xf4, 0x83, 0xde, 0x2f, 0xf2, 0x83, 0xde, 0x31, 0xf4, - 0x83, 0xde, 0x32, 0xf2, 0x83, 0xde, 0x34, 0xf4, 0x83, 0xde, 0x35, 0xf2, - 0x83, 0xde, 0x37, 0xf4, 0x83, 0xde, 0x38, 0xf2, 0x83, 0xde, 0x3a, 0xf4, - 0x83, 0xde, 0x3b, 0xf2, 0x83, 0xde, 0x3c, 0xf4, 0x83, 0xde, 0x3e, 0xf2, - 0x83, 0xde, 0x3f, 0xf4, 0x83, 0xde, 0x40, 0xf2, 0x83, 0xde, 0x42, 0xf4, - 0x83, 0xde, 0x43, 0xf2, 0x83, 0xde, 0x44, 0xf4, 0x83, 0xde, 0x45, 0xf2, - 0x83, 0xde, 0x46, 0xf4, 0x83, 0xde, 0x47, 0xf2, 0x83, 0xde, 0x48, 0xf4, - 0x83, 0xde, 0x49, 0xf2, 0x83, 0xde, 0x4a, 0xf4, 0x83, 0xde, 0x4b, 0xf2, - 0x83, 0xde, 0x4c, 0xf4, 0x83, 0xde, 0x4d, 0xf2, 0x83, 0xde, 0x4e, 0xf4, - 0x83, 0xde, 0x4f, 0xf2, 0x83, 0xde, 0x50, 0xf4, 0x83, 0xde, 0x51, 0xf2, - 0x83, 0xde, 0x52, 0xf4, 0x83, 0xde, 0x53, 0xf2, 0x83, 0xde, 0x54, 0xf4, - 0x83, 0xde, 0x55, 0xf2, 0x83, 0xde, 0x56, 0xf4, 0x83, 0xde, 0x57, 0xf2, - 0x83, 0xde, 0x58, 0xf4, 0x83, 0xde, 0x58, 0xf2, 0x83, 0xde, 0x59, 0xf4, - 0x83, 0xde, 0x5a, 0xf2, 0x83, 0xde, 0x5b, 0xf4, 0x83, 0xde, 0x5c, 0xf2, - 0x83, 0xde, 0x5d, 0xf4, 0x83, 0xde, 0x5d, 0xf2, 0x83, 0xde, 0x5e, 0xf1, - 0x84, 0xde, 0x5f, 0xf2, 0x83, 0xde, 0x60, 0xf1, 0x84, 0xde, 0x60, 0xf2, - 0x83, 0xde, 0x61, 0xf1, 0x84, 0xde, 0x62, 0xf2, 0x83, 0xde, 0x63, 0xf1, - 0x84, 0xde, 0x63, 0xf2, 0x83, 0xde, 0x64, 0xf1, 0x84, 0xde, 0x65, 0xf2, - 0x83, 0xde, 0x66, 0xf1, 0x84, 0xde, 0x66, 0xf2, 0x83, 0xde, 0x67, 0xf1, - 0x84, 0xde, 0x68, 0xf2, 0x83, 0xde, 0x68, 0xf1, 0x84, 0xde, 0x69, 0xf2, - 0x83, 0xde, 0x6a, 0xf1, 0x84, 0xde, 0x6a, 0xf2, 0x83, 0xde, 0x6b, 0xf1, - 0x84, 0xde, 0x6c, 0xf2, 0x83, 0xde, 0x6c, 0xf1, 0x84, 0xde, 0x6d, 0xf2, - 0x83, 0xde, 0x6e, 0xf1, 0x84, 0xde, 0x6e, 0xf2, 0x83, 0xde, 0x6f, 0xf1, - 0x84, 0xde, 0x70, 0xf2, 0x83, 0xde, 0x70, 0xf1, 0x84, 0xde, 0x71, 0xf2, - 0x83, 0xde, 0x72, 0xf1, 0x84, 0xde, 0x72, 0xf2, 0x83, 0xde, 0x73, 0xf1, - 0x84, 0xde, 0x73, 0xf2, 0x83, 0xde, 0x74, 0xf1, 0x84, 0xde, 0x75, 0xf2, - 0x83, 0xde, 0x75, 0xf1, 0x84, 0xde, 0x76, 0xf2, 0x83, 0xde, 0x76, 0xf1, - 0x84, 0xde, 0x77, 0xf0, 0x84, 0xde, 0x78, 0xf1, 0x84, 0xde, 0x78, 0xf0, - 0x84, 0xde, 0x79, 0xf1, 0x84, 0xde, 0x79, 0xf0, 0x84, 0xde, 0x7a, 0xf1, - 0x84, 0xde, 0x7a, 0xf0, 0x84, 0xde, 0x7b, 0xf1, 0x84, 0xde, 0x7c, 0xf0, - 0x84, 0xde, 0x7c, 0xf1, 0x84, 0xde, 0x7d, 0xf0, 0x84, 0xde, 0x7d, 0xf1, - 0x84, 0xde, 0x7e, 0xf0, 0x84, 0xde, 0x7e, 0xf1, 0x84, 0xde, 0x7f, 0xf0, - 0x84, 0xde, 0x7f, 0xf1, 0x84, 0xde, 0x80, 0xf0, 0x84, 0xde, 0x81, 0xf1, - 0x84, 0xde, 0x81, 0xf0, 0x84, 0xde, 0x82, 0xf1, 0x84, 0xde, 0x82, 0xf0, - 0x84, 0xde, 0x83, 0xf0, 0x85, 0xde, 0x83, 0xf0, 0x84, 0xde, 0x84, 0xf0, - 0x85, 0xde, 0x83, 0xf0, 0x84, 0xde, 0x84, 0xf0, 0x85, 0xde, 0x83, 0xf0, - 0x85, 0xde, 0x84, 0xf0, 0x86, 0xde, 0x83, 0xf0, 0x86, 0xde, 0x84, 0xf0, - 0x87, 0xde, 0x83, 0xf0, 0x87, 0xde, 0x84, 0xf0, 0x88, 0xde, 0x84, 0xf0, - 0x88, 0xdb, 0x84, 0xf0, 0x89, 0xde, 0x84, 0xf0, 0x89, 0xdb, 0x84, 0xf0, - 0x8a, 0xde, 0x84, 0xf0, 0x8a, 0xdb, 0x84, 0xf0, 0x8b, 0xde, 0x84, 0xf0, - 0x8b, 0xdb, 0x84, 0xf0, 0x8c, 0xde, 0x84, 0xf0, 0x8c, 0xdb, 0x84, 0xf0, - 0x8d, 0xde, 0x84, 0xf0, 0x8d, 0xdb, 0x84, 0xf0, 0x8e, 0xde, 0x84, 0xf0, - 0x8e, 0xdb, 0x84, 0xf0, 0x8e, 0xde, 0x8f, 0xf0, 0x8f, 0xe9, 0x8f, 0xf0, - 0x8f, 0xe9, 0x8f, 0xf0, 0x90, 0xe9, 0x8f, 0xf0, 0x90, 0xe9, 0x8f, 0xf0, - 0x91, 0xe9, 0x8f, 0xf0, 0x91, 0xe9, 0x8f, 0xf0, 0x92, 0xe9, 0x8f, 0xf0, - 0x92, 0xe9, 0x8f, 0xf0, 0x93, 0xe9, 0x8f, 0xf0, 0x93, 0xe9, 0x94, 0xf0, - 0x94, 0xea, 0x94, 0xf0, 0x94, 0xea, 0x94, 0xf0, 0x94, 0xea, 0x94, 0xf0, - 0x95, 0xea, 0x94, 0xf0, 0x95, 0xea, 0x94, 0xf0, 0x96, 0xea, 0x94, 0xf0, - 0x96, 0xea, 0x94, 0xf0, 0x97, 0xea, 0x94, 0xf0, 0x97, 0xea, 0x94, 0xf0, - 0x98, 0xea, 0x94, 0xf0, 0x98, 0xea, 0x98, 0xf0, 0x98, 0xeb, 0x99, 0xf0, - 0x99, 0xeb, 0x99, 0xf0, 0x99, 0xeb, 0x99, 0xf0, 0x9a, 0xeb, 0x99, 0xf0, - 0x9a, 0xeb, 0x99, 0xf0, 0x9a, 0xeb, 0x99, 0xf0, 0x9b, 0xeb, 0x99, 0xf0, - 0x9b, 0xeb, 0x99, 0xf0, 0x9c, 0xeb, 0x99, 0xf0, 0x9c, 0xeb, 0x99, 0xf0, - 0x9d, 0xeb, 0x99, 0xf0, 0x9d, 0xeb, 0x99, 0xf0, 0x9d, 0xeb, 0x9e, 0xf0, - 0x9e, 0xec, 0x9d, 0xf0, 0x9e, 0xec, 0x9e, 0xf0, 0x9f, 0xec, 0x9d, 0xf0, - 0x9f, 0xec, 0x9e, 0xf0, 0x9f, 0xec, 0x9d, 0xf0, 0xa0, 0xec, 0x9e, 0xf0, - 0xa0, 0xec, 0x9d, 0xf0, 0xa1, 0xec, 0x9e, 0xf0, 0xa1, 0xec, 0x9d, 0xf0, - 0xa1, 0xec, 0x9e, 0xf0, 0xa2, 0xec, 0xa2, 0xf0, 0xa2, 0xed, 0xa2, 0xf0, - 0xa3, 0xed, 0xa2, 0xf0, 0xa3, 0xed, 0xa2, 0xf0, 0xa3, 0xed, 0xa2, 0xf0, - 0xa4, 0xed, 0xa2, 0xf0, 0xa4, 0xed, 0xa2, 0xf0, 0xa5, 0xed, 0xa2, 0xf0, - 0xa5, 0xed, 0xa2, 0xf0, 0xa5, 0xed, 0xa2, 0xf0, 0xa6, 0xed, 0xa2, 0xf0, - 0xa6, 0xed, 0xa6, 0xf0, 0xa6, 0xee, 0xa6, 0xf0, 0xa7, 0xee, 0xa6, 0xf0, - 0xa7, 0xee, 0xa6, 0xf0, 0xa8, 0xee, 0xa6, 0xf0, 0xa8, 0xee, 0xa6, 0xf0, - 0xa8, 0xee, 0xa6, 0xf0, 0xa9, 0xee, 0xa6, 0xf0, 0xa9, 0xee, 0xa6, 0xf0, - 0xaa, 0xee, 0xa6, 0xf0, 0xaa, 0xee, 0xa6, 0xf0, 0xaa, 0xee, 0xab, 0xf0, - 0xab, 0xef, 0xaa, 0xf0, 0xab, 0xef, 0xab, 0xf0, 0xab, 0xef, 0xaa, 0xf0, - 0xac, 0xef, 0xab, 0xf0, 0xac, 0xef, 0xaa, 0xf0, 0xac, 0xef, 0xab, 0xf0, - 0xad, 0xef, 0xaa, 0xf0, 0xad, 0xef, 0xab, 0xf0, 0xae, 0xef, 0xaa, 0xf0, - 0xae, 0xef, 0xab, 0xf0, 0xae, 0xef, 0xaf, 0xf0, 0xaf, 0xf0, 0xab, 0xf0, - 0xaf, 0xef, 0xaf, 0xf0, 0xaf, 0xf0, 0xae, 0xf0, 0xb0, 0xf0, 0xaf, 0xf0, - 0xb0, 0xf0, 0xae, 0xf0, 0xb0, 0xf0, 0xaf, 0xf0, 0xb1, 0xf0, 0xae, 0xf0, - 0xb1, 0xf0, 0xaf, 0xf0, 0xb2, 0xf0, 0xae, 0xf0, 0xb2, 0xf0, 0xaf, 0xf0, - 0xb2, 0xf0, 0xae, 0xf0, 0xb3, 0xf0, 0xaf, 0xf0, 0xb3, 0xf0, 0xb3, 0xf0, - 0xb3, 0xf1, 0xb2, 0xf0, 0xb4, 0xf1, 0xb3, 0xf0, 0xb4, 0xf1, 0xb2, 0xf0, - 0xb4, 0xf1, 0xb3, 0xf0, 0xb5, 0xf1, 0xb2, 0xf0, 0xb5, 0xf1, 0xb3, 0xf0, - 0xb5, 0xf1, 0xb2, 0xf0, 0xb6, 0xf1, 0xb3, 0xf0, 0xb6, 0xf1, 0xb2, 0xf0, - 0xb6, 0xf1, 0xb3, 0xf0, 0xb7, 0xf1, 0xb6, 0xf0, 0xb7, 0xf2, 0xb6, 0xf0, - 0xb7, 0xf2, 0xb6, 0xf0, 0xb8, 0xf2, 0xb6, 0xf0, 0xb8, 0xf2, 0xb6, 0xf0, - 0xb8, 0xf2, 0xb6, 0xf0, 0xb9, 0xf2, 0xb6, 0xf0, 0xb9, 0xf2, 0xb6, 0xf0, - 0xb9, 0xf2, 0xb6, 0xf0, 0xba, 0xf2, 0xb6, 0xf0, 0xba, 0xf2, 0xb6, 0xf0, - 0xba, 0xf2, 0xba, 0xf0, 0xbb, 0xf3, 0xba, 0xf0, 0xbb, 0xf3, 0xba, 0xf0, - 0xbb, 0xf3, 0xba, 0xf0, 0xbc, 0xf3, 0xba, 0xf0, 0xbc, 0xf3, 0xba, 0xf0, - 0xbc, 0xf3, 0xba, 0xf0, 0xbd, 0xf3, 0xba, 0xf0, 0xbd, 0xf3, 0xba, 0xf0, - 0xbd, 0xf3, 0xba, 0xf0, 0xbe, 0xf3, 0xba, 0xf0, 0xbe, 0xf3, 0xbe, 0xf0, - 0xbe, 0xf4, 0xcc, 0xf0, 0xbf, 0xe3, 0xcc, 0xf0, 0xbf, 0xe0, 0xcc, 0xf0, - 0xbf, 0xe3, 0xcc, 0xf0, 0xc0, 0xe0, 0xcc, 0xf0, 0xc0, 0xe3, 0xcc, 0xf0, - 0xc0, 0xe0, 0xcc, 0xf0, 0xc1, 0xe3, 0xcc, 0xf0, 0xc1, 0xe0, 0xcc, 0xf0, - 0xc1, 0xe3, 0xcc, 0xf0, 0xc1, 0xe0, 0xcc, 0xf0, 0xc2, 0xe3, 0xcc, 0xf0, - 0xc2, 0xe0, 0xcc, 0xf0, 0xc2, 0xe3, 0xcc, 0xf0, 0xc3, 0xe0, 0xcc, 0xf0, - 0xc3, 0xe3, 0xcc, 0xf0, 0xc3, 0xe0, 0xcc, 0xf0, 0xc4, 0xe3, 0xcc, 0xf0, - 0xc4, 0xe0, 0xcc, 0xf0, 0xc4, 0xe3, 0xcc, 0xf0, 0xc5, 0xe0, 0xcc, 0xf0, - 0xc5, 0xde, 0xcc, 0xf0, 0xc5, 0xe0, 0xcc, 0xf0, 0xc6, 0xde, 0xcc, 0xf0, - 0xc6, 0xe0, 0xcc, 0xf0, 0xc6, 0xde, 0xcc, 0xf0, 0xc6, 0xe0, 0xcc, 0xf0, - 0xc7, 0xde, 0xcc, 0xf0, 0xc7, 0xe0, 0xcc, 0xf0, 0xc7, 0xde, 0xcc, 0xf0, - 0xc8, 0xe0, 0xcc, 0xf0, 0xc8, 0xde, 0xcc, 0xf0, 0xc8, 0xe0, 0xcc, 0xf0, - 0xc9, 0xde, 0xcc, 0xf0, 0xc9, 0xe0, 0xcc, 0xf0, 0xc9, 0xde, 0xcc, 0xf0, - 0xc9, 0xe0, 0xcc, 0xf0, 0xca, 0xde, 0xcc, 0xf0, 0xca, 0xe0, 0xcc, 0xf0, - 0xca, 0xde, 0xcc, 0xf0, 0xcb, 0xe0, 0xcc, 0xf0, 0xcb, 0xde, 0xcc, 0xf0, - 0xcb, 0xde, 0xcc, 0xf0, 0xcc, 0xde, 0xcc, 0xf0, 0xcc, 0xde, 0xcc, 0xf0, - 0xcc, 0xde, 0xcc, 0xf0, 0xcc, 0xde, 0xcd, 0xf0, 0xcc, 0xde, 0xcd, 0xf0, - 0xcc, 0xde, 0xcd, 0xef, 0xcc, 0xde, 0xce, 0xf0, 0xcc, 0xde, 0xce, 0xef, - 0xcc, 0xde, 0xce, 0xf0, 0xcc, 0xde, 0xce, 0xef, 0xcc, 0xde, 0xcf, 0xf0, - 0xcc, 0xde, 0xcf, 0xef, 0xcc, 0xde, 0xcf, 0xf0, 0xcc, 0xde, 0xd0, 0xef, - 0xcc, 0xde, 0xd0, 0xf0, 0xcc, 0xde, 0xd0, 0xef, 0xcc, 0xde, 0xd0, 0xf0, - 0xcc, 0xde, 0xd1, 0xef, 0xcc, 0xde, 0xd1, 0xee, 0xcc, 0xde, 0xd1, 0xef, - 0xcc, 0xde, 0xd2, 0xee, 0xcc, 0xde, 0xd2, 0xef, 0xcc, 0xde, 0xd2, 0xee, - 0xcc, 0xde, 0xd2, 0xef, 0xcc, 0xde, 0xd3, 0xee, 0xcc, 0xde, 0xd3, 0xef, - 0xcc, 0xde, 0xd3, 0xee, 0xcc, 0xde, 0xd4, 0xef, 0xcc, 0xde, 0xd4, 0xee, - 0xcc, 0xde, 0xd4, 0xef, 0xcc, 0xde, 0xd4, 0xee, 0xcc, 0xde, 0xd5, 0xef, - 0xcc, 0xde, 0xd5, 0xee, 0xcc, 0xde, 0xd5, 0xef, 0xcc, 0xde, 0xd6, 0xee, - 0xcc, 0xde, 0xd6, 0xef, 0xcc, 0xde, 0xd6, 0xee, 0xcc, 0xde, 0xd6, 0xef, - 0xcc, 0xde, 0xd7, 0xee, 0xcc, 0xde, 0xd7, 0xef, 0xcc, 0xde, 0xd7, 0xee, - 0xcc, 0xde, 0xd7, 0xef, 0xcc, 0xde, 0xd8, 0xee, 0xcc, 0xde, 0xd8, 0xef, - 0xcc, 0xde, 0xd8, 0xee, 0xcc, 0xde, 0xd9, 0xef, 0xcc, 0xde, 0xd9, 0xee, - 0xcc, 0xde, 0xd9, 0xf2, 0xe5, 0xde, 0xd9, 0xf1, 0xe5, 0xde, 0xda, 0xf2, - 0xe5, 0xde, 0xda, 0xf1, 0xe5, 0xde, 0xda, 0xf2, 0xe5, 0xde, 0xda, 0xf1, - 0xe5, 0xde, 0xdb, 0xf2, 0xe5, 0xde, 0xdb, 0xf1, 0xe5, 0xde, 0xdb, 0xf2, - 0xe5, 0xde, 0xdb, 0xf1, 0xe5, 0xde, 0xdc, 0xf2, 0xe5, 0xde, 0xdc, 0xf1, - 0xe5, 0xde, 0xdc, 0xf2, 0xe5, 0xde, 0xdd, 0xf1, 0xe5, 0xde, 0xdd, 0xf2, - 0xe5, 0xde, 0xdd, 0xf1, 0xe5, 0xde, 0xdd, 0xf2, 0xe5, 0xde, 0xde, 0xf1, - 0xe5, 0xde, 0xde, 0xf2, 0xe5, 0xde, 0xde, 0xf1, 0xe5, 0xde, 0xde, 0xf2, - 0xe5, 0xde, 0xdf, 0xf1, 0xe5, 0xde, 0xdf, 0xf2, 0xe5, 0xde, 0xdf, 0xf1, - 0xe5, 0xde, 0xdf, 0xf2, 0xe5, 0xde, 0xe0, 0xf1, 0xe5, 0xde, 0xe0, 0xf2, - 0xe5, 0xde, 0xe0, 0xf1, 0xe5, 0xde, 0xe1, 0xf2, 0xe5, 0xde, 0xe1, 0xf1, - 0xe5, 0xde, 0xe1, 0xf0, 0xe5, 0xde, 0xe1, 0xf1, 0xe5, 0xde, 0xe2, 0xf0, - 0xe5, 0xde, 0xe2, 0xf1, 0xe5, 0xde, 0xe2, 0xf0, 0xe5, 0xde, 0xe2, 0xf1, - 0xe5, 0xde, 0xe3, 0xf0, 0xe5, 0xde, 0xe3, 0xf1, 0xe5, 0xde, 0xe3, 0xf0, - 0xe5, 0xde, 0xe3, 0xf1, 0xe5, 0xde, 0xe4, 0xf0, 0xe5, 0xde, 0xe4, 0xf1, - 0xe5, 0xde, 0xe4, 0xf0, 0xe5, 0xde, 0xe4, 0xf1, 0xe5, 0xde, 0xe5, 0xf0, - 0xe5, 0xde, 0xe5, 0xf1, 0xe5, 0xde, 0xe5, 0xf0, 0xe5, 0xde, 0xe5, 0xf0, - 0xe5, 0xde, 0xe5, 0xf0, 0xe6, 0xde, 0xe5, 0xf0, 0xe6, 0xde, 0xe7, 0xf0, - 0xe6, 0xde, 0xe7, 0xf0, 0xe6, 0xde, 0xe7, 0xf0, 0xe7, 0xde, 0xe7, 0xf0, - 0xe6, 0xde, 0xe7, 0xf0, 0xe7, 0xde, 0xe7, 0xf0, 0xe6, 0xde, 0xe8, 0xf0, - 0xe7, 0xde, 0xe8, 0xef, 0xe7, 0xde, 0xe8, 0xf0, 0xe7, 0xde, 0xe8, 0xef, - 0xe7, 0xde, 0xe9, 0xf0, 0xe7, 0xde, 0xe9, 0xef, 0xe7, 0xde, 0xe9, 0xf0, - 0xe7, 0xde, 0xe9, 0xef, 0xe7, 0xde, 0xea, 0xf0, 0xe7, 0xde, 0xea, 0xef, - 0xe7, 0xde, 0xea, 0xf0, 0xe7, 0xde, 0xea, 0xef, 0xe7, 0xde, 0xeb, 0xf0, - 0xe7, 0xde, 0xeb, 0xef, 0xe7, 0xde, 0xeb, 0xec, 0xec, 0xde, 0xeb, 0xec, - 0xec, 0xde, 0xec, 0xec, 0xec, 0xde, 0xec, 0xec, 0xec, 0xde, 0xec, 0xec, - 0xec, 0xde, 0xec, 0xec, 0xec, 0xde, 0xec, 0xec, 0xec, 0xde, 0xed, 0xec, - 0xed, 0xde, 0xed, 0xf1, 0xf0, 0xde, 0xed, 0xf0, 0xf1, 0xde, 0xed, 0xf1, - 0xf0, 0xde, 0xee, 0xf0, 0xf1, 0xde, 0xee, 0xf1, 0xf0, 0xde, 0xee, 0xf0, - 0xf1, 0xde, 0xee, 0xf1, 0xf0, 0xde, 0xef, 0xf0, 0xf1, 0xde, 0xef, 0xf1, - 0xf0, 0xde, 0xef, 0xf0, 0xf1, 0xde, 0xef, 0xf1, 0xf0, 0xde, 0xf0, 0xf0, - 0xf1, 0xde, 0xf0, 0xf1, 0xf0, 0xde, 0xf0, 0xf0, 0xf1, 0xde, 0xf0, 0xf1, - 0xf0, 0xde, 0xf0, 0xf0, 0xf1, 0xde, 0xf1, 0xf0, 0xf1, 0xde, 0xf1, 0xf0, - 0xf1, 0xde, 0xf1, 0xf0, 0xf1, 0xde, 0xf2, 0xf0, 0xf1, 0xde, 0xf2, 0xf0, - 0xf1, 0xde, 0xf2, 0xf0, 0xf1, 0xde, 0xf2, 0xf0, 0xf1, 0xde, 0xf2, 0xf0, - 0xf1, 0xde, 0xf3, 0xf0, 0xf1, 0xde, 0xf3, 0xf0, 0xf1, 0xde, 0xf3, 0xf0, - 0xf1, 0xde, 0xf3, 0xf0, 0xf1, 0xde, 0xf4, 0xf0, 0xf1, 0xde, 0xf4, 0xf0, - 0xf1, 0xde, 0xf4, 0xf0, 0xf1, 0xde, 0xf4, 0xf0, 0xf1, 0xde, 0xf5, 0xf0, - 0xf1, 0xde, 0xf5, 0xf0, 0xf1, 0xde, 0xf5, 0xf0, 0xf1, 0xde, 0xf5, 0xf0, - 0xf1, 0xde, 0xf5, 0xf0, 0xf1, 0xde, 0xf6, 0xf0, 0xf1, 0xde, 0xf6, 0xf0, - 0xf1, 0xde, 0xf6, 0xf0, 0xf1, 0xde, 0xf6, 0xf0, 0xf1, 0xde, 0xf7, 0xee, - 0xf1, 0xde, 0xf7, 0xf0, 0xf1, 0xde, 0xf7, 0xee, 0xf1, 0xde, 0xf7, 0xf0, - 0xf1, 0xde, 0xf8, 0xee, 0xf1, 0xde, 0xf8, 0xf0, 0xf1, 0xde, 0xf8, 0xee, - 0xf1, 0xde, 0xf8, 0xf0, 0xf1, 0xde, 0xf8, 0xee, 0xf1, 0xde, 0xf9, 0xf0, - 0xf1, 0xde, 0xf9, 0xee, 0xf1, 0xde, 0xf9, 0xf0, 0xf1, 0xde, 0xf9, 0xee, - 0xf1, 0xde, 0xfa, 0xf0, 0xf1, 0xde, 0xfa, 0xee, 0xf1, 0xde, 0xfa, 0xf0, - 0xf1, 0xde, 0xfa, 0xee, 0xf1, 0xde, 0xfa, 0xf0, 0xf1, 0xde, 0xfb, 0xee, - 0xf1, 0xde, 0xfb, 0xf0, 0xf1, 0xde, 0xfb, 0xee, 0xf1, 0xde, 0xfb, 0xf0, - 0xf1, 0xde, 0xfc, 0xee, 0xf1, 0xde, 0xfc, 0xf0, 0xf1, 0xde, 0xfc, 0xee, - 0xf1, 0xde, 0xfc, 0xf0, 0xf1, 0xde, 0xfc, 0xee, 0xf1, 0xde, 0xfd, 0xf0, - 0xf1, 0xde, 0xfd, 0xee, 0xf1, 0xde, 0xfd, 0xf0, 0xf1, 0xde, 0xfd, 0xee, - 0xf1, 0xde, 0xfe, 0xf0, 0xf1, 0xde, 0xfe, 0xee, 0xf1, 0xde, 0xfe, 0xf0, - 0xf1, 0xde, 0xfe, 0xee, 0xf1, 0xde, 0xfe, 0xf0, 0xf1, 0xde, 0xff, 0xee, - 0xf1, 0xde, 0xff, 0xf0, 0xf1, 0xde, 0x03, 0xf3, 0x83, 0xdf, 0x0a, 0xf4, - 0x83, 0xdf, 0x0f, 0xf3, 0x83, 0xdf, 0x14, 0xf4, 0x83, 0xdf, 0x17, 0xf3, - 0x83, 0xdf, 0x1b, 0xf4, 0x83, 0xdf, 0x1e, 0xf3, 0x83, 0xdf, 0x20, 0xf4, - 0x83, 0xdf, 0x23, 0xf3, 0x83, 0xdf, 0x25, 0xf4, 0x83, 0xdf, 0x27, 0xf3, - 0x83, 0xdf, 0x29, 0xf4, 0x83, 0xdf, 0x2b, 0xf3, 0x83, 0xdf, 0x2d, 0xf4, - 0x83, 0xdf, 0x2f, 0xf3, 0x83, 0xdf, 0x31, 0xf4, 0x83, 0xdf, 0x32, 0xf3, - 0x83, 0xdf, 0x34, 0xf4, 0x83, 0xdf, 0x35, 0xf3, 0x83, 0xdf, 0x37, 0xf4, - 0x83, 0xdf, 0x38, 0xf3, 0x83, 0xdf, 0x3a, 0xf4, 0x83, 0xdf, 0x3b, 0xf3, - 0x83, 0xdf, 0x3c, 0xf4, 0x83, 0xdf, 0x3e, 0xf3, 0x83, 0xdf, 0x3f, 0xf4, - 0x83, 0xdf, 0x40, 0xf3, 0x83, 0xdf, 0x42, 0xf4, 0x83, 0xdf, 0x43, 0xf3, - 0x83, 0xdf, 0x44, 0xf4, 0x83, 0xdf, 0x45, 0xf3, 0x83, 0xdf, 0x46, 0xf4, - 0x83, 0xdf, 0x47, 0xf3, 0x83, 0xdf, 0x48, 0xf4, 0x83, 0xdf, 0x49, 0xf3, - 0x83, 0xdf, 0x4a, 0xf4, 0x83, 0xdf, 0x4b, 0xf3, 0x83, 0xdf, 0x4c, 0xf4, - 0x83, 0xdf, 0x4d, 0xf3, 0x83, 0xdf, 0x4e, 0xf4, 0x83, 0xdf, 0x4f, 0xf3, - 0x83, 0xdf, 0x50, 0xf4, 0x83, 0xdf, 0x51, 0xf3, 0x83, 0xdf, 0x52, 0xf4, - 0x83, 0xdf, 0x53, 0xf3, 0x83, 0xdf, 0x54, 0xf4, 0x83, 0xdf, 0x55, 0xf3, - 0x83, 0xdf, 0x56, 0xf4, 0x83, 0xdf, 0x57, 0xf3, 0x83, 0xdf, 0x58, 0xf4, - 0x83, 0xdf, 0x58, 0xf3, 0x83, 0xdf, 0x59, 0xf4, 0x83, 0xdf, 0x5a, 0xf3, - 0x83, 0xdf, 0x5b, 0xf1, 0x84, 0xdf, 0x5c, 0xf3, 0x83, 0xdf, 0x5d, 0xf1, - 0x84, 0xdf, 0x5d, 0xf3, 0x83, 0xdf, 0x5e, 0xf1, 0x84, 0xdf, 0x5f, 0xf3, - 0x83, 0xdf, 0x60, 0xf1, 0x84, 0xdf, 0x60, 0xf3, 0x83, 0xdf, 0x61, 0xf1, - 0x84, 0xdf, 0x62, 0xf3, 0x83, 0xdf, 0x63, 0xf1, 0x84, 0xdf, 0x63, 0xf3, - 0x83, 0xdf, 0x64, 0xf1, 0x84, 0xdf, 0x65, 0xf3, 0x83, 0xdf, 0x66, 0xf1, - 0x84, 0xdf, 0x66, 0xf3, 0x83, 0xdf, 0x67, 0xf1, 0x84, 0xdf, 0x68, 0xf3, - 0x83, 0xdf, 0x68, 0xf1, 0x84, 0xdf, 0x69, 0xf3, 0x83, 0xdf, 0x6a, 0xf1, - 0x84, 0xdf, 0x6a, 0xf3, 0x83, 0xdf, 0x6b, 0xf1, 0x84, 0xdf, 0x6c, 0xf3, - 0x83, 0xdf, 0x6c, 0xf1, 0x84, 0xdf, 0x6d, 0xf3, 0x83, 0xdf, 0x6e, 0xf1, - 0x84, 0xdf, 0x6e, 0xf3, 0x83, 0xdf, 0x6f, 0xf1, 0x84, 0xdf, 0x70, 0xf3, - 0x83, 0xdf, 0x70, 0xf1, 0x84, 0xdf, 0x71, 0xf3, 0x83, 0xdf, 0x72, 0xf1, - 0x84, 0xdf, 0x72, 0xf3, 0x83, 0xdf, 0x73, 0xf1, 0x84, 0xdf, 0x73, 0xf3, - 0x83, 0xdf, 0x74, 0xf1, 0x84, 0xdf, 0x75, 0xf3, 0x83, 0xdf, 0x75, 0xf1, - 0x84, 0xdf, 0x76, 0xf3, 0x83, 0xdf, 0x76, 0xf1, 0x84, 0xdf, 0x77, 0xf0, - 0x84, 0xdf, 0x78, 0xf1, 0x84, 0xdf, 0x78, 0xf0, 0x84, 0xdf, 0x79, 0xf1, - 0x84, 0xdf, 0x79, 0xf0, 0x84, 0xdf, 0x7a, 0xf1, 0x84, 0xdf, 0x7a, 0xf0, - 0x84, 0xdf, 0x7b, 0xf1, 0x84, 0xdf, 0x7c, 0xf0, 0x84, 0xdf, 0x7c, 0xf1, - 0x84, 0xdf, 0x7d, 0xf0, 0x84, 0xdf, 0x7d, 0xf1, 0x84, 0xdf, 0x7e, 0xf0, - 0x84, 0xdf, 0x7e, 0xf1, 0x84, 0xdf, 0x7f, 0xf0, 0x84, 0xdf, 0x7f, 0xf1, - 0x84, 0xdf, 0x80, 0xf0, 0x84, 0xdf, 0x81, 0xf1, 0x84, 0xdf, 0x81, 0xf0, - 0x84, 0xdf, 0x82, 0xf1, 0x84, 0xdf, 0x82, 0xf0, 0x84, 0xdf, 0x83, 0xf1, - 0x84, 0xdf, 0x83, 0xf0, 0x84, 0xdf, 0x84, 0xf0, 0x85, 0xdf, 0x83, 0xf0, - 0x84, 0xdf, 0x84, 0xf0, 0x85, 0xdf, 0x83, 0xf0, 0x85, 0xdf, 0x84, 0xf0, - 0x86, 0xdf, 0x83, 0xf0, 0x86, 0xdf, 0x84, 0xf0, 0x87, 0xdf, 0x83, 0xf0, - 0x87, 0xdf, 0x84, 0xf0, 0x88, 0xdf, 0x84, 0xf0, 0x88, 0xdc, 0x84, 0xf0, - 0x89, 0xdf, 0x84, 0xf0, 0x89, 0xdc, 0x84, 0xf0, 0x8a, 0xdf, 0x84, 0xf0, - 0x8a, 0xdc, 0x84, 0xf0, 0x8b, 0xdf, 0x84, 0xf0, 0x8b, 0xdc, 0x84, 0xf0, - 0x8c, 0xdf, 0x84, 0xf0, 0x8c, 0xdc, 0x84, 0xf0, 0x8d, 0xdf, 0x84, 0xf0, - 0x8d, 0xdc, 0x84, 0xf0, 0x8e, 0xdf, 0x8c, 0xf0, 0x8e, 0xe9, 0x8d, 0xf0, - 0x8e, 0xe9, 0x8c, 0xf0, 0x8f, 0xe9, 0x8d, 0xf0, 0x8f, 0xe9, 0x8c, 0xf0, - 0x90, 0xe9, 0x8d, 0xf0, 0x90, 0xe9, 0x91, 0xf0, 0x91, 0xea, 0x91, 0xf0, - 0x91, 0xea, 0x92, 0xf0, 0x92, 0xea, 0x91, 0xf0, 0x92, 0xea, 0x92, 0xf0, - 0x93, 0xea, 0x91, 0xf0, 0x93, 0xea, 0x92, 0xf0, 0x94, 0xea, 0x91, 0xf0, - 0x94, 0xea, 0x92, 0xf0, 0x94, 0xea, 0x91, 0xf0, 0x95, 0xea, 0x92, 0xf0, - 0x95, 0xea, 0x96, 0xf0, 0x96, 0xeb, 0x96, 0xf0, 0x96, 0xeb, 0x97, 0xf0, - 0x97, 0xeb, 0x96, 0xf0, 0x97, 0xeb, 0x97, 0xf0, 0x98, 0xeb, 0x96, 0xf0, - 0x98, 0xeb, 0x97, 0xf0, 0x98, 0xeb, 0x96, 0xf0, 0x99, 0xeb, 0x97, 0xf0, - 0x99, 0xeb, 0x96, 0xf0, 0x9a, 0xeb, 0x97, 0xf0, 0x9a, 0xeb, 0x9a, 0xf0, - 0x9a, 0xec, 0x9b, 0xf0, 0x9b, 0xec, 0x9b, 0xf0, 0x9b, 0xec, 0x9b, 0xf0, - 0x9c, 0xec, 0x9b, 0xf0, 0x9c, 0xec, 0x9b, 0xf0, 0x9d, 0xec, 0x9b, 0xf0, - 0x9d, 0xec, 0x9b, 0xf0, 0x9d, 0xec, 0x9b, 0xf0, 0x9e, 0xec, 0x9b, 0xf0, - 0x9e, 0xec, 0x9b, 0xf0, 0x9f, 0xec, 0x9b, 0xf0, 0x9f, 0xec, 0x9b, 0xf0, - 0x9f, 0xec, 0xa0, 0xf0, 0xa0, 0xed, 0x9f, 0xf0, 0xa0, 0xed, 0xa0, 0xf0, - 0xa1, 0xed, 0x9f, 0xf0, 0xa1, 0xed, 0xa0, 0xf0, 0xa1, 0xed, 0x9f, 0xf0, - 0xa2, 0xed, 0xa0, 0xf0, 0xa2, 0xed, 0x9f, 0xf0, 0xa3, 0xed, 0xa0, 0xf0, - 0xa3, 0xed, 0x9f, 0xf0, 0xa3, 0xed, 0xa0, 0xf0, 0xa4, 0xed, 0xa4, 0xf0, - 0xa4, 0xee, 0xa4, 0xf0, 0xa5, 0xee, 0xa4, 0xf0, 0xa5, 0xee, 0xa4, 0xf0, - 0xa5, 0xee, 0xa4, 0xf0, 0xa6, 0xee, 0xa4, 0xf0, 0xa6, 0xee, 0xa4, 0xf0, - 0xa6, 0xee, 0xa4, 0xf0, 0xa7, 0xee, 0xa4, 0xf0, 0xa7, 0xee, 0xa4, 0xf0, - 0xa8, 0xee, 0xa4, 0xf0, 0xa8, 0xee, 0xa8, 0xf0, 0xa8, 0xef, 0xa8, 0xf0, - 0xa9, 0xef, 0xa8, 0xf0, 0xa9, 0xef, 0xa8, 0xf0, 0xaa, 0xef, 0xa8, 0xf0, - 0xaa, 0xef, 0xa8, 0xf0, 0xaa, 0xef, 0xa8, 0xf0, 0xab, 0xef, 0xa8, 0xf0, - 0xab, 0xef, 0xa8, 0xf0, 0xab, 0xef, 0xa8, 0xf0, 0xac, 0xef, 0xa8, 0xf0, - 0xac, 0xef, 0xac, 0xf0, 0xac, 0xf0, 0xac, 0xf0, 0xad, 0xf0, 0xac, 0xf0, - 0xad, 0xf0, 0xac, 0xf0, 0xae, 0xf0, 0xac, 0xf0, 0xae, 0xf0, 0xac, 0xf0, - 0xae, 0xf0, 0xac, 0xf0, 0xaf, 0xf0, 0xac, 0xf0, 0xaf, 0xf0, 0xac, 0xf0, - 0xaf, 0xf0, 0xac, 0xf0, 0xb0, 0xf0, 0xac, 0xf0, 0xb0, 0xf0, 0xb0, 0xf0, - 0xb0, 0xf1, 0xac, 0xf0, 0xb1, 0xf0, 0xb0, 0xf0, 0xb1, 0xf1, 0xb0, 0xf0, - 0xb2, 0xf1, 0xb0, 0xf0, 0xb2, 0xf1, 0xb0, 0xf0, 0xb2, 0xf1, 0xb0, 0xf0, - 0xb3, 0xf1, 0xb0, 0xf0, 0xb3, 0xf1, 0xb0, 0xf0, 0xb3, 0xf1, 0xb0, 0xf0, - 0xb4, 0xf1, 0xb0, 0xf0, 0xb4, 0xf1, 0xb0, 0xf0, 0xb4, 0xf1, 0xb0, 0xf0, - 0xb5, 0xf1, 0xb4, 0xf0, 0xb5, 0xf2, 0xb4, 0xf0, 0xb5, 0xf2, 0xb4, 0xf0, - 0xb6, 0xf2, 0xb4, 0xf0, 0xb6, 0xf2, 0xb4, 0xf0, 0xb6, 0xf2, 0xb4, 0xf0, - 0xb7, 0xf2, 0xb4, 0xf0, 0xb7, 0xf2, 0xb4, 0xf0, 0xb7, 0xf2, 0xb4, 0xf0, - 0xb8, 0xf2, 0xb4, 0xf0, 0xb8, 0xf2, 0xb4, 0xf0, 0xb8, 0xf2, 0xb8, 0xf0, - 0xb9, 0xf3, 0xb8, 0xf0, 0xb9, 0xf3, 0xb8, 0xf0, 0xb9, 0xf3, 0xb8, 0xf0, - 0xba, 0xf3, 0xb8, 0xf0, 0xba, 0xf3, 0xb8, 0xf0, 0xba, 0xf3, 0xb8, 0xf0, - 0xbb, 0xf3, 0xb8, 0xf0, 0xbb, 0xf3, 0xb8, 0xf0, 0xbb, 0xf3, 0xb8, 0xf0, - 0xbc, 0xf3, 0xb8, 0xf0, 0xbc, 0xf3, 0xbc, 0xf0, 0xbc, 0xf4, 0xbb, 0xf0, - 0xbd, 0xf4, 0xbc, 0xf0, 0xbd, 0xf4, 0xbb, 0xf0, 0xbd, 0xf4, 0xbc, 0xf0, - 0xbe, 0xf4, 0xbb, 0xf0, 0xbe, 0xf4, 0xbc, 0xf0, 0xbe, 0xf4, 0xcc, 0xf0, - 0xbf, 0xe3, 0xcc, 0xf0, 0xbf, 0xe1, 0xcc, 0xf0, 0xbf, 0xe3, 0xcc, 0xf0, - 0xc0, 0xe1, 0xcc, 0xf0, 0xc0, 0xe3, 0xcc, 0xf0, 0xc0, 0xe1, 0xcc, 0xf0, - 0xc1, 0xe3, 0xcc, 0xf0, 0xc1, 0xe1, 0xcc, 0xf0, 0xc1, 0xe3, 0xcc, 0xf0, - 0xc1, 0xe1, 0xcc, 0xf0, 0xc2, 0xe3, 0xcc, 0xf0, 0xc2, 0xe1, 0xcc, 0xf0, - 0xc2, 0xe3, 0xcc, 0xf0, 0xc3, 0xe1, 0xcc, 0xf0, 0xc3, 0xe3, 0xcc, 0xf0, - 0xc3, 0xe1, 0xcc, 0xf0, 0xc4, 0xe3, 0xcc, 0xf0, 0xc4, 0xe1, 0xcc, 0xf0, - 0xc4, 0xe3, 0xcc, 0xf0, 0xc5, 0xe1, 0xcc, 0xf0, 0xc5, 0xe3, 0xcc, 0xf0, - 0xc5, 0xe1, 0xcc, 0xf0, 0xc6, 0xe3, 0xcc, 0xf0, 0xc6, 0xe1, 0xcc, 0xf0, - 0xc6, 0xe3, 0xcc, 0xf0, 0xc6, 0xe1, 0xcc, 0xf0, 0xc7, 0xe3, 0xcc, 0xf0, - 0xc7, 0xe1, 0xcc, 0xf0, 0xc7, 0xdf, 0xcc, 0xf0, 0xc8, 0xe1, 0xcc, 0xf0, - 0xc8, 0xdf, 0xcc, 0xf0, 0xc8, 0xe1, 0xcc, 0xf0, 0xc9, 0xdf, 0xcc, 0xf0, - 0xc9, 0xe1, 0xcc, 0xf0, 0xc9, 0xdf, 0xcc, 0xf0, 0xc9, 0xe1, 0xcc, 0xf0, - 0xca, 0xdf, 0xcc, 0xf0, 0xca, 0xe1, 0xcc, 0xf0, 0xca, 0xdf, 0xcc, 0xf0, - 0xcb, 0xe1, 0xcc, 0xf0, 0xcb, 0xdf, 0xcc, 0xf0, 0xcb, 0xdf, 0xcc, 0xf0, - 0xcc, 0xdf, 0xcc, 0xf0, 0xcc, 0xdf, 0xcc, 0xf0, 0xcc, 0xdf, 0xcc, 0xf0, - 0xcc, 0xdf, 0xcd, 0xf0, 0xcc, 0xdf, 0xcd, 0xf0, 0xcc, 0xdf, 0xcd, 0xef, - 0xcc, 0xdf, 0xce, 0xf0, 0xcc, 0xdf, 0xce, 0xef, 0xcc, 0xdf, 0xce, 0xf0, - 0xcc, 0xdf, 0xce, 0xef, 0xcc, 0xdf, 0xcf, 0xf0, 0xcc, 0xdf, 0xcf, 0xef, - 0xcc, 0xdf, 0xcf, 0xf0, 0xcc, 0xdf, 0xd0, 0xef, 0xcc, 0xdf, 0xd0, 0xf0, - 0xcc, 0xdf, 0xd0, 0xef, 0xcc, 0xdf, 0xd0, 0xf0, 0xcc, 0xdf, 0xd1, 0xef, - 0xcc, 0xdf, 0xd1, 0xf0, 0xcc, 0xdf, 0xd1, 0xef, 0xcc, 0xdf, 0xd2, 0xf0, - 0xcc, 0xdf, 0xd2, 0xef, 0xcc, 0xdf, 0xd2, 0xf0, 0xcc, 0xdf, 0xd2, 0xef, - 0xcc, 0xdf, 0xd3, 0xf0, 0xcc, 0xdf, 0xd3, 0xef, 0xcc, 0xdf, 0xd3, 0xee, - 0xcc, 0xdf, 0xd4, 0xef, 0xcc, 0xdf, 0xd4, 0xee, 0xcc, 0xdf, 0xd4, 0xef, - 0xcc, 0xdf, 0xd4, 0xee, 0xcc, 0xdf, 0xd5, 0xef, 0xcc, 0xdf, 0xd5, 0xee, - 0xcc, 0xdf, 0xd5, 0xef, 0xcc, 0xdf, 0xd6, 0xee, 0xcc, 0xdf, 0xd6, 0xef, - 0xcc, 0xdf, 0xd6, 0xee, 0xcc, 0xdf, 0xd6, 0xef, 0xcc, 0xdf, 0xd7, 0xee, - 0xcc, 0xdf, 0xd7, 0xef, 0xcc, 0xdf, 0xd7, 0xee, 0xcc, 0xdf, 0xd7, 0xef, - 0xcc, 0xdf, 0xd8, 0xee, 0xcc, 0xdf, 0xd8, 0xef, 0xcc, 0xdf, 0xd8, 0xee, - 0xcc, 0xdf, 0xd9, 0xef, 0xcc, 0xdf, 0xd9, 0xee, 0xcc, 0xdf, 0xd9, 0xf2, - 0xe5, 0xdf, 0xd9, 0xf3, 0xe4, 0xdf, 0xda, 0xf2, 0xe5, 0xdf, 0xda, 0xf3, - 0xe4, 0xdf, 0xda, 0xf2, 0xe5, 0xdf, 0xda, 0xf3, 0xe4, 0xdf, 0xdb, 0xf2, - 0xe5, 0xdf, 0xdb, 0xf3, 0xe4, 0xdf, 0xdb, 0xf2, 0xe5, 0xdf, 0xdb, 0xf1, - 0xe5, 0xdf, 0xdc, 0xf2, 0xe5, 0xdf, 0xdc, 0xf1, 0xe5, 0xdf, 0xdc, 0xf2, - 0xe5, 0xdf, 0xdd, 0xf1, 0xe5, 0xdf, 0xdd, 0xf2, 0xe5, 0xdf, 0xdd, 0xf1, - 0xe5, 0xdf, 0xdd, 0xf2, 0xe5, 0xdf, 0xde, 0xf1, 0xe5, 0xdf, 0xde, 0xf2, - 0xe5, 0xdf, 0xde, 0xf1, 0xe5, 0xdf, 0xde, 0xf2, 0xe5, 0xdf, 0xdf, 0xf1, - 0xe5, 0xdf, 0xdf, 0xf2, 0xe5, 0xdf, 0xdf, 0xf1, 0xe5, 0xdf, 0xdf, 0xf2, - 0xe5, 0xdf, 0xe0, 0xf1, 0xe5, 0xdf, 0xe0, 0xf2, 0xe5, 0xdf, 0xe0, 0xf1, - 0xe5, 0xdf, 0xe1, 0xf2, 0xe5, 0xdf, 0xe1, 0xf1, 0xe5, 0xdf, 0xe1, 0xf2, - 0xe5, 0xdf, 0xe1, 0xf1, 0xe5, 0xdf, 0xe2, 0xf2, 0xe5, 0xdf, 0xe2, 0xf1, - 0xe5, 0xdf, 0xe2, 0xf2, 0xe5, 0xdf, 0xe2, 0xf1, 0xe5, 0xdf, 0xe3, 0xf2, - 0xe5, 0xdf, 0xe3, 0xf1, 0xe5, 0xdf, 0xe3, 0xf0, 0xe5, 0xdf, 0xe3, 0xf1, - 0xe5, 0xdf, 0xe4, 0xf0, 0xe5, 0xdf, 0xe4, 0xf1, 0xe5, 0xdf, 0xe4, 0xf0, - 0xe5, 0xdf, 0xe4, 0xf1, 0xe5, 0xdf, 0xe5, 0xf0, 0xe5, 0xdf, 0xe5, 0xf1, - 0xe5, 0xdf, 0xe5, 0xf0, 0xe5, 0xdf, 0xe5, 0xf0, 0xe5, 0xdf, 0xe5, 0xf0, - 0xe6, 0xdf, 0xe5, 0xf0, 0xe6, 0xdf, 0xe7, 0xf0, 0xe6, 0xdf, 0xe7, 0xf0, - 0xe6, 0xdf, 0xe7, 0xf0, 0xe7, 0xdf, 0xe7, 0xf0, 0xe6, 0xdf, 0xe7, 0xf0, - 0xe7, 0xdf, 0xe7, 0xf0, 0xe6, 0xdf, 0xe8, 0xf0, 0xe7, 0xdf, 0xe8, 0xef, - 0xe7, 0xdf, 0xe8, 0xf0, 0xe7, 0xdf, 0xe8, 0xef, 0xe7, 0xdf, 0xe9, 0xf0, - 0xe7, 0xdf, 0xe9, 0xef, 0xe7, 0xdf, 0xe9, 0xf0, 0xe7, 0xdf, 0xe9, 0xef, - 0xe7, 0xdf, 0xea, 0xf0, 0xe7, 0xdf, 0xea, 0xef, 0xe7, 0xdf, 0xea, 0xf0, - 0xe7, 0xdf, 0xea, 0xef, 0xe7, 0xdf, 0xeb, 0xf0, 0xe7, 0xdf, 0xeb, 0xef, - 0xe7, 0xdf, 0xeb, 0xec, 0xeb, 0xdf, 0xeb, 0xec, 0xeb, 0xdf, 0xec, 0xec, - 0xed, 0xdf, 0xec, 0xec, 0xee, 0xdf, 0xec, 0xec, 0xed, 0xdf, 0xec, 0xec, - 0xee, 0xdf, 0xec, 0xf1, 0xf0, 0xdf, 0xed, 0xf0, 0xf1, 0xdf, 0xed, 0xf1, - 0xf0, 0xdf, 0xed, 0xf0, 0xf1, 0xdf, 0xed, 0xf1, 0xf0, 0xdf, 0xee, 0xf0, - 0xf1, 0xdf, 0xee, 0xf1, 0xf0, 0xdf, 0xee, 0xf0, 0xf1, 0xdf, 0xee, 0xf1, - 0xf0, 0xdf, 0xef, 0xf0, 0xf1, 0xdf, 0xef, 0xf1, 0xf0, 0xdf, 0xef, 0xf0, - 0xf1, 0xdf, 0xef, 0xf1, 0xf0, 0xdf, 0xf0, 0xf0, 0xf1, 0xdf, 0xf0, 0xf1, - 0xf0, 0xdf, 0xf0, 0xf0, 0xf1, 0xdf, 0xf0, 0xf1, 0xf0, 0xdf, 0xf0, 0xf0, - 0xf1, 0xdf, 0xf1, 0xf1, 0xf0, 0xdf, 0xf1, 0xf0, 0xf1, 0xdf, 0xf1, 0xf1, - 0xf0, 0xdf, 0xf2, 0xf0, 0xf1, 0xdf, 0xf2, 0xef, 0xf1, 0xdf, 0xf2, 0xf0, - 0xf1, 0xdf, 0xf2, 0xef, 0xf1, 0xdf, 0xf2, 0xf0, 0xf1, 0xdf, 0xf3, 0xef, - 0xf1, 0xdf, 0xf3, 0xf0, 0xf1, 0xdf, 0xf3, 0xef, 0xf1, 0xdf, 0xf3, 0xf0, - 0xf1, 0xdf, 0xf4, 0xef, 0xf1, 0xdf, 0xf4, 0xf0, 0xf1, 0xdf, 0xf4, 0xef, - 0xf1, 0xdf, 0xf4, 0xf0, 0xf1, 0xdf, 0xf5, 0xef, 0xf1, 0xdf, 0xf5, 0xf0, - 0xf1, 0xdf, 0xf5, 0xef, 0xf1, 0xdf, 0xf5, 0xf0, 0xf1, 0xdf, 0xf5, 0xef, - 0xf1, 0xdf, 0xf6, 0xf0, 0xf1, 0xdf, 0xf6, 0xef, 0xf1, 0xdf, 0xf6, 0xf0, - 0xf1, 0xdf, 0xf6, 0xef, 0xf1, 0xdf, 0xf7, 0xee, 0xf1, 0xdf, 0xf7, 0xef, - 0xf1, 0xdf, 0xf7, 0xee, 0xf1, 0xdf, 0xf7, 0xef, 0xf1, 0xdf, 0xf8, 0xee, - 0xf1, 0xdf, 0xf8, 0xef, 0xf1, 0xdf, 0xf8, 0xee, 0xf1, 0xdf, 0xf8, 0xef, - 0xf1, 0xdf, 0xf8, 0xee, 0xf1, 0xdf, 0xf9, 0xef, 0xf1, 0xdf, 0xf9, 0xee, - 0xf1, 0xdf, 0xf9, 0xef, 0xf1, 0xdf, 0xf9, 0xee, 0xf1, 0xdf, 0xfa, 0xef, - 0xf1, 0xdf, 0xfa, 0xee, 0xf1, 0xdf, 0xfa, 0xef, 0xf1, 0xdf, 0xfa, 0xee, - 0xf1, 0xdf, 0xfa, 0xef, 0xf1, 0xdf, 0xfb, 0xee, 0xf1, 0xdf, 0xfb, 0xef, - 0xf1, 0xdf, 0xfb, 0xee, 0xf1, 0xdf, 0xfb, 0xef, 0xf1, 0xdf, 0xfc, 0xee, - 0xf1, 0xdf, 0xfc, 0xef, 0xf1, 0xdf, 0xfc, 0xee, 0xf1, 0xdf, 0xfc, 0xef, - 0xf1, 0xdf, 0xfc, 0xee, 0xf1, 0xdf, 0xfd, 0xef, 0xf1, 0xdf, 0xfd, 0xee, - 0xf1, 0xdf, 0xfd, 0xef, 0xf1, 0xdf, 0xfd, 0xee, 0xf1, 0xdf, 0xfe, 0xef, - 0xf1, 0xdf, 0xfe, 0xee, 0xf1, 0xdf, 0xfe, 0xef, 0xf1, 0xdf, 0xfe, 0xee, - 0xf1, 0xdf, 0xfe, 0xef, 0xf1, 0xdf, 0xff, 0xee, 0xf1, 0xdf, 0xff, 0xec, - 0xf1, 0xdf, 0x03, 0xf2, 0x83, 0xdf, 0x0a, 0xf4, 0x83, 0xdf, 0x0f, 0xf2, - 0x83, 0xdf, 0x14, 0xf4, 0x83, 0xdf, 0x17, 0xf2, 0x83, 0xdf, 0x1b, 0xf4, - 0x83, 0xdf, 0x1e, 0xf2, 0x83, 0xdf, 0x20, 0xf4, 0x83, 0xdf, 0x23, 0xf2, - 0x83, 0xdf, 0x25, 0xf4, 0x83, 0xdf, 0x27, 0xf2, 0x83, 0xdf, 0x29, 0xf4, - 0x83, 0xdf, 0x2b, 0xf2, 0x83, 0xdf, 0x2d, 0xf4, 0x83, 0xdf, 0x2f, 0xf2, - 0x83, 0xdf, 0x31, 0xf4, 0x83, 0xdf, 0x32, 0xf2, 0x83, 0xdf, 0x34, 0xf4, - 0x83, 0xdf, 0x35, 0xf2, 0x83, 0xdf, 0x37, 0xf4, 0x83, 0xdf, 0x38, 0xf2, - 0x83, 0xdf, 0x3a, 0xf4, 0x83, 0xdf, 0x3b, 0xf2, 0x83, 0xdf, 0x3c, 0xf4, - 0x83, 0xdf, 0x3e, 0xf2, 0x83, 0xdf, 0x3f, 0xf4, 0x83, 0xdf, 0x40, 0xf2, - 0x83, 0xdf, 0x42, 0xf4, 0x83, 0xdf, 0x43, 0xf2, 0x83, 0xdf, 0x44, 0xf4, - 0x83, 0xdf, 0x45, 0xf2, 0x83, 0xdf, 0x46, 0xf4, 0x83, 0xdf, 0x47, 0xf2, - 0x83, 0xdf, 0x48, 0xf4, 0x83, 0xdf, 0x49, 0xf2, 0x83, 0xdf, 0x4a, 0xf4, - 0x83, 0xdf, 0x4b, 0xf2, 0x83, 0xdf, 0x4c, 0xf4, 0x83, 0xdf, 0x4d, 0xf2, - 0x83, 0xdf, 0x4e, 0xf4, 0x83, 0xdf, 0x4f, 0xf2, 0x83, 0xdf, 0x50, 0xf4, - 0x83, 0xdf, 0x51, 0xf2, 0x83, 0xdf, 0x52, 0xf4, 0x83, 0xdf, 0x53, 0xf2, - 0x83, 0xdf, 0x54, 0xf4, 0x83, 0xdf, 0x55, 0xf2, 0x83, 0xdf, 0x56, 0xf4, - 0x83, 0xdf, 0x57, 0xf2, 0x83, 0xdf, 0x58, 0xf4, 0x83, 0xdf, 0x58, 0xf2, - 0x83, 0xdf, 0x59, 0xf4, 0x83, 0xdf, 0x5a, 0xf2, 0x83, 0xdf, 0x5b, 0xf4, - 0x83, 0xdf, 0x5c, 0xf2, 0x83, 0xdf, 0x5d, 0xf4, 0x83, 0xdf, 0x5d, 0xf2, - 0x83, 0xdf, 0x5e, 0xf4, 0x83, 0xdf, 0x5f, 0xf2, 0x83, 0xdf, 0x60, 0xf4, - 0x83, 0xdf, 0x60, 0xf2, 0x83, 0xdf, 0x61, 0xf4, 0x83, 0xdf, 0x62, 0xf2, - 0x83, 0xdf, 0x63, 0xf4, 0x83, 0xdf, 0x63, 0xf2, 0x83, 0xdf, 0x64, 0xf4, - 0x83, 0xdf, 0x65, 0xf2, 0x83, 0xdf, 0x66, 0xf4, 0x83, 0xdf, 0x66, 0xf2, - 0x83, 0xdf, 0x67, 0xf1, 0x84, 0xdf, 0x68, 0xf2, 0x83, 0xdf, 0x68, 0xf1, - 0x84, 0xdf, 0x69, 0xf2, 0x83, 0xdf, 0x6a, 0xf1, 0x84, 0xdf, 0x6a, 0xf2, - 0x83, 0xdf, 0x6b, 0xf1, 0x84, 0xdf, 0x6c, 0xf2, 0x83, 0xdf, 0x6c, 0xf1, - 0x84, 0xdf, 0x6d, 0xf2, 0x83, 0xdf, 0x6e, 0xf1, 0x84, 0xdf, 0x6e, 0xf2, - 0x83, 0xdf, 0x6f, 0xf1, 0x84, 0xdf, 0x70, 0xf2, 0x83, 0xdf, 0x70, 0xf1, - 0x84, 0xdf, 0x71, 0xf2, 0x83, 0xdf, 0x72, 0xf1, 0x84, 0xdf, 0x72, 0xf2, - 0x83, 0xdf, 0x73, 0xf1, 0x84, 0xdf, 0x73, 0xf2, 0x83, 0xdf, 0x74, 0xf1, - 0x84, 0xdf, 0x75, 0xf2, 0x83, 0xdf, 0x75, 0xf1, 0x84, 0xdf, 0x76, 0xf2, - 0x83, 0xdf, 0x76, 0xf1, 0x84, 0xdf, 0x77, 0xf2, 0x83, 0xdf, 0x78, 0xf1, - 0x84, 0xdf, 0x78, 0xf2, 0x83, 0xdf, 0x79, 0xf1, 0x84, 0xdf, 0x79, 0xf2, - 0x83, 0xdf, 0x7a, 0xf1, 0x84, 0xdf, 0x7a, 0xf2, 0x83, 0xdf, 0x7b, 0xf1, - 0x84, 0xdf, 0x7c, 0xf1, 0x84, 0xdf, 0x7c, 0xf1, 0x84, 0xdf, 0x7d, 0xf1, - 0x84, 0xdf, 0x7d, 0xf1, 0x84, 0xdf, 0x7e, 0xf1, 0x84, 0xdf, 0x7e, 0xf1, - 0x84, 0xdf, 0x7f, 0xf1, 0x84, 0xdf, 0x7f, 0xf1, 0x84, 0xdf, 0x80, 0xf1, - 0x84, 0xdf, 0x81, 0xf1, 0x84, 0xdf, 0x81, 0xf1, 0x84, 0xdf, 0x82, 0xf1, - 0x84, 0xdf, 0x82, 0xf1, 0x84, 0xdf, 0x83, 0xf1, 0x84, 0xdf, 0x83, 0xf1, - 0x84, 0xdf, 0x84, 0xf1, 0x85, 0xdf, 0x83, 0xf1, 0x84, 0xdf, 0x84, 0xf1, - 0x85, 0xdf, 0x83, 0xf1, 0x85, 0xdf, 0x84, 0xf1, 0x86, 0xdf, 0x83, 0xf1, - 0x86, 0xdf, 0x84, 0xf1, 0x87, 0xdf, 0x83, 0xf1, 0x87, 0xdf, 0x84, 0xf1, - 0x88, 0xdf, 0x83, 0xf1, 0x88, 0xdf, 0x84, 0xf1, 0x89, 0xdf, 0x83, 0xf1, - 0x89, 0xdf, 0x84, 0xf1, 0x8a, 0xdf, 0x83, 0xf1, 0x8a, 0xdf, 0x84, 0xf1, - 0x8b, 0xdf, 0x83, 0xf1, 0x8b, 0xdf, 0x84, 0xf1, 0x8c, 0xdf, 0x84, 0xf1, - 0x8c, 0xdb, 0x84, 0xf1, 0x8d, 0xdf, 0x8a, 0xf1, 0x8d, 0xe8, 0x8a, 0xf1, - 0x8e, 0xe8, 0x8a, 0xf1, 0x8e, 0xe8, 0x8e, 0xf1, 0x8e, 0xe9, 0x8f, 0xf1, - 0x8f, 0xe9, 0x8f, 0xf1, 0x8f, 0xe9, 0x8f, 0xf1, 0x90, 0xe9, 0x8f, 0xf1, - 0x90, 0xe9, 0x8f, 0xf1, 0x91, 0xe9, 0x8f, 0xf1, 0x91, 0xe9, 0x8f, 0xf1, - 0x92, 0xe9, 0x8f, 0xf1, 0x92, 0xe9, 0x8f, 0xf1, 0x93, 0xe9, 0x8f, 0xf1, - 0x93, 0xe9, 0x94, 0xf1, 0x94, 0xea, 0x94, 0xf1, 0x94, 0xea, 0x94, 0xf1, - 0x94, 0xea, 0x94, 0xf1, 0x95, 0xea, 0x94, 0xf1, 0x95, 0xea, 0x94, 0xf1, - 0x96, 0xea, 0x94, 0xf1, 0x96, 0xea, 0x94, 0xf1, 0x97, 0xea, 0x94, 0xf1, - 0x97, 0xea, 0x94, 0xf1, 0x98, 0xea, 0x94, 0xf1, 0x98, 0xea, 0x98, 0xf1, - 0x98, 0xeb, 0x99, 0xf1, 0x99, 0xeb, 0x99, 0xf1, 0x99, 0xeb, 0x99, 0xf1, - 0x9a, 0xeb, 0x99, 0xf1, 0x9a, 0xeb, 0x99, 0xf1, 0x9a, 0xeb, 0x99, 0xf1, - 0x9b, 0xeb, 0x99, 0xf1, 0x9b, 0xeb, 0x99, 0xf1, 0x9c, 0xeb, 0x99, 0xf1, - 0x9c, 0xeb, 0x99, 0xf1, 0x9d, 0xeb, 0x9d, 0xf1, 0x9d, 0xec, 0x9d, 0xf1, - 0x9d, 0xec, 0x9e, 0xf1, 0x9e, 0xec, 0x9d, 0xf1, 0x9e, 0xec, 0x9e, 0xf1, - 0x9f, 0xec, 0x9d, 0xf1, 0x9f, 0xec, 0x9e, 0xf1, 0x9f, 0xec, 0x9d, 0xf1, - 0xa0, 0xec, 0x9e, 0xf1, 0xa0, 0xec, 0x9d, 0xf1, 0xa1, 0xec, 0x9e, 0xf1, - 0xa1, 0xec, 0x9d, 0xf1, 0xa1, 0xec, 0x9e, 0xf1, 0xa2, 0xec, 0xa2, 0xf1, - 0xa2, 0xed, 0xa2, 0xf1, 0xa3, 0xed, 0xa2, 0xf1, 0xa3, 0xed, 0xa2, 0xf1, - 0xa3, 0xed, 0xa2, 0xf1, 0xa4, 0xed, 0xa2, 0xf1, 0xa4, 0xed, 0xa2, 0xf1, - 0xa5, 0xed, 0xa2, 0xf1, 0xa5, 0xed, 0xa2, 0xf1, 0xa5, 0xed, 0xa2, 0xf1, - 0xa6, 0xed, 0xa2, 0xf1, 0xa6, 0xed, 0xa6, 0xf1, 0xa6, 0xee, 0xa6, 0xf1, - 0xa7, 0xee, 0xa6, 0xf1, 0xa7, 0xee, 0xa6, 0xf1, 0xa8, 0xee, 0xa6, 0xf1, - 0xa8, 0xee, 0xa6, 0xf1, 0xa8, 0xee, 0xa6, 0xf1, 0xa9, 0xee, 0xa6, 0xf1, - 0xa9, 0xee, 0xa6, 0xf1, 0xaa, 0xee, 0xa6, 0xf1, 0xaa, 0xee, 0xa6, 0xf1, - 0xaa, 0xee, 0xab, 0xf1, 0xab, 0xef, 0xaa, 0xf1, 0xab, 0xef, 0xab, 0xf1, - 0xab, 0xef, 0xaa, 0xf1, 0xac, 0xef, 0xab, 0xf1, 0xac, 0xef, 0xaa, 0xf1, - 0xac, 0xef, 0xab, 0xf1, 0xad, 0xef, 0xaa, 0xf1, 0xad, 0xef, 0xab, 0xf1, - 0xae, 0xef, 0xaa, 0xf1, 0xae, 0xef, 0xab, 0xf1, 0xae, 0xef, 0xaf, 0xf1, - 0xaf, 0xf0, 0xae, 0xf1, 0xaf, 0xf0, 0xaf, 0xf1, 0xaf, 0xf0, 0xae, 0xf1, - 0xb0, 0xf0, 0xaf, 0xf1, 0xb0, 0xf0, 0xae, 0xf1, 0xb0, 0xf0, 0xaf, 0xf1, - 0xb1, 0xf0, 0xae, 0xf1, 0xb1, 0xf0, 0xaf, 0xf1, 0xb2, 0xf0, 0xae, 0xf1, - 0xb2, 0xf0, 0xaf, 0xf1, 0xb2, 0xf0, 0xb3, 0xf1, 0xb3, 0xf1, 0xaf, 0xf1, - 0xb3, 0xf0, 0xb3, 0xf1, 0xb3, 0xf1, 0xb2, 0xf1, 0xb4, 0xf1, 0xb3, 0xf1, - 0xb4, 0xf1, 0xb2, 0xf1, 0xb4, 0xf1, 0xb3, 0xf1, 0xb5, 0xf1, 0xb2, 0xf1, - 0xb5, 0xf1, 0xb3, 0xf1, 0xb5, 0xf1, 0xb2, 0xf1, 0xb6, 0xf1, 0xb3, 0xf1, - 0xb6, 0xf1, 0xb2, 0xf1, 0xb6, 0xf1, 0xb3, 0xf1, 0xb7, 0xf1, 0xb6, 0xf1, - 0xb7, 0xf2, 0xb6, 0xf1, 0xb7, 0xf2, 0xb6, 0xf1, 0xb8, 0xf2, 0xb6, 0xf1, - 0xb8, 0xf2, 0xb6, 0xf1, 0xb8, 0xf2, 0xb6, 0xf1, 0xb9, 0xf2, 0xb6, 0xf1, - 0xb9, 0xf2, 0xb6, 0xf1, 0xb9, 0xf2, 0xb6, 0xf1, 0xba, 0xf2, 0xb6, 0xf1, - 0xba, 0xf2, 0xb6, 0xf1, 0xba, 0xf2, 0xba, 0xf1, 0xbb, 0xf3, 0xba, 0xf1, - 0xbb, 0xf3, 0xba, 0xf1, 0xbb, 0xf3, 0xba, 0xf1, 0xbc, 0xf3, 0xba, 0xf1, - 0xbc, 0xf3, 0xba, 0xf1, 0xbc, 0xf3, 0xba, 0xf1, 0xbd, 0xf3, 0xba, 0xf1, - 0xbd, 0xf3, 0xba, 0xf1, 0xbd, 0xf3, 0xba, 0xf1, 0xbe, 0xf3, 0xba, 0xf1, - 0xbe, 0xf3, 0xbe, 0xf1, 0xbe, 0xf4, 0xbd, 0xf1, 0xbf, 0xf4, 0xcc, 0xf1, - 0xbf, 0xe0, 0xcc, 0xf1, 0xbf, 0xe3, 0xcc, 0xf1, 0xc0, 0xe0, 0xcc, 0xf1, - 0xc0, 0xe3, 0xcc, 0xf1, 0xc0, 0xe0, 0xcc, 0xf1, 0xc1, 0xe3, 0xcc, 0xf1, - 0xc1, 0xe0, 0xcc, 0xf1, 0xc1, 0xe3, 0xcc, 0xf1, 0xc1, 0xe0, 0xcc, 0xf1, - 0xc2, 0xe3, 0xcc, 0xf1, 0xc2, 0xe0, 0xcc, 0xf1, 0xc2, 0xe3, 0xcc, 0xf1, - 0xc3, 0xe0, 0xcc, 0xf1, 0xc3, 0xe3, 0xcc, 0xf1, 0xc3, 0xe0, 0xcc, 0xf1, - 0xc4, 0xe3, 0xcc, 0xf1, 0xc4, 0xe0, 0xcc, 0xf1, 0xc4, 0xe3, 0xcc, 0xf1, - 0xc5, 0xe0, 0xcc, 0xf1, 0xc5, 0xe3, 0xcc, 0xf1, 0xc5, 0xe0, 0xcc, 0xf1, - 0xc6, 0xe3, 0xcc, 0xf1, 0xc6, 0xe0, 0xcc, 0xf1, 0xc6, 0xe3, 0xcc, 0xf1, - 0xc6, 0xe0, 0xcc, 0xf1, 0xc7, 0xe3, 0xcc, 0xf1, 0xc7, 0xe0, 0xcc, 0xf1, - 0xc7, 0xdf, 0xcc, 0xf1, 0xc8, 0xe0, 0xcc, 0xf1, 0xc8, 0xdf, 0xcc, 0xf1, - 0xc8, 0xe0, 0xcc, 0xf1, 0xc9, 0xdf, 0xcc, 0xf1, 0xc9, 0xe0, 0xcc, 0xf1, - 0xc9, 0xdf, 0xcc, 0xf1, 0xc9, 0xe0, 0xcc, 0xf1, 0xca, 0xdf, 0xcc, 0xf1, - 0xca, 0xe0, 0xcc, 0xf1, 0xca, 0xdf, 0xcc, 0xf1, 0xcb, 0xe0, 0xcc, 0xf1, - 0xcb, 0xdf, 0xcc, 0xf1, 0xcb, 0xe0, 0xcc, 0xf1, 0xcc, 0xdf, 0xcc, 0xf1, - 0xcc, 0xdf, 0xcc, 0xf1, 0xcc, 0xdf, 0xcc, 0xf1, 0xcc, 0xdf, 0xcd, 0xf1, - 0xcc, 0xdf, 0xcd, 0xf1, 0xcc, 0xdf, 0xcd, 0xf1, 0xcc, 0xdf, 0xce, 0xf1, - 0xcc, 0xdf, 0xce, 0xf1, 0xcc, 0xdf, 0xce, 0xf1, 0xcc, 0xdf, 0xce, 0xef, - 0xcc, 0xdf, 0xcf, 0xf1, 0xcc, 0xdf, 0xcf, 0xef, 0xcc, 0xdf, 0xcf, 0xf1, - 0xcc, 0xdf, 0xd0, 0xef, 0xcc, 0xdf, 0xd0, 0xf1, 0xcc, 0xdf, 0xd0, 0xef, - 0xcc, 0xdf, 0xd0, 0xf1, 0xcc, 0xdf, 0xd1, 0xef, 0xcc, 0xdf, 0xd1, 0xf1, - 0xcc, 0xdf, 0xd1, 0xef, 0xcc, 0xdf, 0xd2, 0xf1, 0xcc, 0xdf, 0xd2, 0xef, - 0xcc, 0xdf, 0xd2, 0xf1, 0xcc, 0xdf, 0xd2, 0xef, 0xcc, 0xdf, 0xd3, 0xf1, - 0xcc, 0xdf, 0xd3, 0xef, 0xcc, 0xdf, 0xd3, 0xee, 0xcc, 0xdf, 0xd4, 0xef, - 0xcc, 0xdf, 0xd4, 0xee, 0xcc, 0xdf, 0xd4, 0xef, 0xcc, 0xdf, 0xd4, 0xee, - 0xcc, 0xdf, 0xd5, 0xef, 0xcc, 0xdf, 0xd5, 0xee, 0xcc, 0xdf, 0xd5, 0xef, - 0xcc, 0xdf, 0xd6, 0xee, 0xcc, 0xdf, 0xd6, 0xef, 0xcc, 0xdf, 0xd6, 0xee, - 0xcc, 0xdf, 0xd6, 0xef, 0xcc, 0xdf, 0xd7, 0xee, 0xcc, 0xdf, 0xd7, 0xef, - 0xcc, 0xdf, 0xd7, 0xee, 0xcc, 0xdf, 0xd7, 0xef, 0xcc, 0xdf, 0xd8, 0xee, - 0xcc, 0xdf, 0xd8, 0xef, 0xcc, 0xdf, 0xd8, 0xee, 0xcc, 0xdf, 0xd9, 0xef, - 0xcc, 0xdf, 0xd9, 0xee, 0xcc, 0xdf, 0xd9, 0xf2, 0xe5, 0xdf, 0xd9, 0xf3, - 0xe4, 0xdf, 0xda, 0xf2, 0xe5, 0xdf, 0xda, 0xf3, 0xe4, 0xdf, 0xda, 0xf2, - 0xe5, 0xdf, 0xda, 0xf3, 0xe4, 0xdf, 0xdb, 0xf2, 0xe5, 0xdf, 0xdb, 0xf3, - 0xe4, 0xdf, 0xdb, 0xf2, 0xe5, 0xdf, 0xdb, 0xf1, 0xe5, 0xdf, 0xdc, 0xf2, - 0xe5, 0xdf, 0xdc, 0xf1, 0xe5, 0xdf, 0xdc, 0xf2, 0xe5, 0xdf, 0xdd, 0xf1, - 0xe5, 0xdf, 0xdd, 0xf2, 0xe5, 0xdf, 0xdd, 0xf1, 0xe5, 0xdf, 0xdd, 0xf2, - 0xe5, 0xdf, 0xde, 0xf1, 0xe5, 0xdf, 0xde, 0xf2, 0xe5, 0xdf, 0xde, 0xf1, - 0xe5, 0xdf, 0xde, 0xf2, 0xe5, 0xdf, 0xdf, 0xf1, 0xe5, 0xdf, 0xdf, 0xf2, - 0xe5, 0xdf, 0xdf, 0xf1, 0xe5, 0xdf, 0xdf, 0xf2, 0xe5, 0xdf, 0xe0, 0xf1, - 0xe5, 0xdf, 0xe0, 0xf2, 0xe5, 0xdf, 0xe0, 0xf1, 0xe5, 0xdf, 0xe1, 0xf2, - 0xe5, 0xdf, 0xe1, 0xf1, 0xe5, 0xdf, 0xe1, 0xf2, 0xe5, 0xdf, 0xe1, 0xf1, - 0xe5, 0xdf, 0xe2, 0xf2, 0xe5, 0xdf, 0xe2, 0xf1, 0xe5, 0xdf, 0xe2, 0xf2, - 0xe5, 0xdf, 0xe2, 0xf1, 0xe5, 0xdf, 0xe3, 0xf2, 0xe5, 0xdf, 0xe3, 0xf1, - 0xe5, 0xdf, 0xe3, 0xf1, 0xe5, 0xdf, 0xe3, 0xf1, 0xe5, 0xdf, 0xe4, 0xf1, - 0xe5, 0xdf, 0xe4, 0xf1, 0xe5, 0xdf, 0xe4, 0xf1, 0xe5, 0xdf, 0xe4, 0xf1, - 0xe5, 0xdf, 0xe5, 0xf1, 0xe5, 0xdf, 0xe5, 0xf1, 0xe5, 0xde, 0xe5, 0xf1, - 0xe5, 0xdf, 0xe5, 0xf1, 0xe5, 0xde, 0xe5, 0xf1, 0xe6, 0xdf, 0xe7, 0xf1, - 0xe6, 0xdf, 0xe7, 0xf1, 0xe6, 0xe0, 0xe7, 0xf1, 0xe6, 0xdf, 0xe7, 0xf1, - 0xe7, 0xdf, 0xe7, 0xf1, 0xe6, 0xdf, 0xe7, 0xf1, 0xe7, 0xdf, 0xe7, 0xf1, - 0xe6, 0xdf, 0xe8, 0xf1, 0xe7, 0xdf, 0xe8, 0xf1, 0xe6, 0xdf, 0xe8, 0xf1, - 0xe7, 0xdf, 0xe8, 0xf1, 0xe6, 0xdf, 0xe9, 0xf1, 0xe7, 0xdf, 0xe9, 0xef, - 0xe7, 0xdf, 0xe9, 0xf1, 0xe7, 0xdf, 0xe9, 0xef, 0xe7, 0xdf, 0xea, 0xf1, - 0xe7, 0xdf, 0xea, 0xef, 0xe7, 0xdf, 0xea, 0xf1, 0xe7, 0xdf, 0xea, 0xef, - 0xe7, 0xdf, 0xeb, 0xf1, 0xe7, 0xdf, 0xeb, 0xef, 0xe7, 0xdf, 0xeb, 0xf1, - 0xe7, 0xdf, 0xeb, 0xec, 0xec, 0xdf, 0xec, 0xec, 0xec, 0xdf, 0xec, 0xec, - 0xec, 0xdf, 0xec, 0xec, 0xec, 0xdf, 0xec, 0xf2, 0xf0, 0xdf, 0xec, 0xf1, - 0xf0, 0xdf, 0xed, 0xf2, 0xf0, 0xdf, 0xed, 0xf1, 0xf0, 0xdf, 0xed, 0xf2, - 0xf0, 0xdf, 0xed, 0xf1, 0xf0, 0xdf, 0xee, 0xf2, 0xf0, 0xdf, 0xee, 0xf1, - 0xf0, 0xdf, 0xee, 0xf2, 0xf0, 0xdf, 0xee, 0xf1, 0xf0, 0xdf, 0xef, 0xf1, - 0xf1, 0xdf, 0xef, 0xf1, 0xf0, 0xdf, 0xef, 0xf1, 0xf1, 0xdf, 0xef, 0xf1, - 0xf0, 0xdf, 0xf0, 0xf1, 0xf1, 0xdf, 0xf0, 0xf1, 0xf0, 0xdf, 0xf0, 0xf1, - 0xf1, 0xdf, 0xf0, 0xf1, 0xf0, 0xde, 0xf0, 0xf1, 0xf1, 0xdf, 0xf1, 0xf1, - 0xf0, 0xdf, 0xf1, 0xf1, 0xf1, 0xdf, 0xf1, 0xf1, 0xf0, 0xdf, 0xf2, 0xf1, - 0xf1, 0xdf, 0xf2, 0xf0, 0xf1, 0xdf, 0xf2, 0xf1, 0xf1, 0xdf, 0xf2, 0xf0, - 0xf1, 0xdf, 0xf2, 0xf1, 0xf1, 0xdf, 0xf3, 0xf0, 0xf1, 0xdf, 0xf3, 0xf1, - 0xf1, 0xdf, 0xf3, 0xf0, 0xf1, 0xdf, 0xf3, 0xf1, 0xf1, 0xdf, 0xf4, 0xf0, - 0xf1, 0xdf, 0xf4, 0xf1, 0xf1, 0xdf, 0xf4, 0xf0, 0xf1, 0xdf, 0xf4, 0xf1, - 0xf1, 0xdf, 0xf5, 0xf0, 0xf1, 0xdf, 0xf5, 0xf1, 0xf1, 0xdf, 0xf5, 0xf0, - 0xf1, 0xdf, 0xf5, 0xf1, 0xf1, 0xdf, 0xf5, 0xf0, 0xf1, 0xdf, 0xf6, 0xf1, - 0xf1, 0xdf, 0xf6, 0xf0, 0xf1, 0xdf, 0xf6, 0xf1, 0xf1, 0xdf, 0xf6, 0xf0, - 0xf1, 0xdf, 0xf7, 0xf1, 0xf1, 0xdf, 0xf7, 0xf0, 0xf1, 0xdf, 0xf7, 0xf1, - 0xf1, 0xdf, 0xf7, 0xf0, 0xf1, 0xdf, 0xf8, 0xf1, 0xf1, 0xdf, 0xf8, 0xf0, - 0xf1, 0xdf, 0xf8, 0xf1, 0xf1, 0xdf, 0xf8, 0xf0, 0xf1, 0xdf, 0xf8, 0xf1, - 0xf1, 0xdf, 0xf9, 0xf0, 0xf1, 0xdf, 0xf9, 0xf1, 0xf1, 0xdf, 0xf9, 0xf0, - 0xf1, 0xdf, 0xf9, 0xee, 0xf1, 0xdf, 0xfa, 0xf0, 0xf1, 0xdf, 0xfa, 0xee, - 0xf1, 0xdf, 0xfa, 0xf0, 0xf1, 0xdf, 0xfa, 0xee, 0xf1, 0xdf, 0xfa, 0xf0, - 0xf1, 0xdf, 0xfb, 0xee, 0xf1, 0xdf, 0xfb, 0xf0, 0xf1, 0xdf, 0xfb, 0xee, - 0xf1, 0xdf, 0xfb, 0xf0, 0xf1, 0xdf, 0xfc, 0xee, 0xf1, 0xdf, 0xfc, 0xf0, - 0xf1, 0xdf, 0xfc, 0xee, 0xf1, 0xdf, 0xfc, 0xf0, 0xf1, 0xdf, 0xfc, 0xee, - 0xf1, 0xdf, 0xfd, 0xf0, 0xf1, 0xdf, 0xfd, 0xee, 0xf1, 0xdf, 0xfd, 0xf0, - 0xf1, 0xdf, 0xfd, 0xee, 0xf1, 0xdf, 0xfe, 0xf0, 0xf1, 0xdf, 0xfe, 0xee, - 0xf1, 0xdf, 0xfe, 0xf0, 0xf1, 0xdf, 0xfe, 0xee, 0xf1, 0xdf, 0xfe, 0xf0, - 0xf1, 0xdf, 0xff, 0xee, 0xf1, 0xdf, 0xff, 0xf0, 0xf1, 0xdf, 0x03, 0xf3, - 0x83, 0xe0, 0x0a, 0xf4, 0x83, 0xe0, 0x0f, 0xf3, 0x83, 0xe0, 0x14, 0xf4, - 0x83, 0xe0, 0x17, 0xf3, 0x83, 0xe0, 0x1b, 0xf4, 0x83, 0xe0, 0x1e, 0xf3, - 0x83, 0xe0, 0x20, 0xf4, 0x83, 0xe0, 0x23, 0xf3, 0x83, 0xe0, 0x25, 0xf4, - 0x83, 0xe0, 0x27, 0xf3, 0x83, 0xe0, 0x29, 0xf4, 0x83, 0xe0, 0x2b, 0xf3, - 0x83, 0xe0, 0x2d, 0xf4, 0x83, 0xe0, 0x2f, 0xf3, 0x83, 0xe0, 0x31, 0xf4, - 0x83, 0xe0, 0x32, 0xf3, 0x83, 0xe0, 0x34, 0xf4, 0x83, 0xe0, 0x35, 0xf3, - 0x83, 0xe0, 0x37, 0xf4, 0x83, 0xe0, 0x38, 0xf3, 0x83, 0xe0, 0x3a, 0xf4, - 0x83, 0xe0, 0x3b, 0xf3, 0x83, 0xe0, 0x3c, 0xf4, 0x83, 0xe0, 0x3e, 0xf3, - 0x83, 0xe0, 0x3f, 0xf4, 0x83, 0xe0, 0x40, 0xf3, 0x83, 0xe0, 0x42, 0xf4, - 0x83, 0xe0, 0x43, 0xf3, 0x83, 0xe0, 0x44, 0xf4, 0x83, 0xe0, 0x45, 0xf3, - 0x83, 0xe0, 0x46, 0xf4, 0x83, 0xe0, 0x47, 0xf3, 0x83, 0xe0, 0x48, 0xf4, - 0x83, 0xe0, 0x49, 0xf3, 0x83, 0xe0, 0x4a, 0xf4, 0x83, 0xe0, 0x4b, 0xf3, - 0x83, 0xe0, 0x4c, 0xf4, 0x83, 0xe0, 0x4d, 0xf3, 0x83, 0xe0, 0x4e, 0xf4, - 0x83, 0xe0, 0x4f, 0xf3, 0x83, 0xe0, 0x50, 0xf4, 0x83, 0xe0, 0x51, 0xf3, - 0x83, 0xe0, 0x52, 0xf4, 0x83, 0xe0, 0x53, 0xf3, 0x83, 0xe0, 0x54, 0xf4, - 0x83, 0xe0, 0x55, 0xf3, 0x83, 0xe0, 0x56, 0xf4, 0x83, 0xe0, 0x57, 0xf3, - 0x83, 0xe0, 0x58, 0xf4, 0x83, 0xe0, 0x58, 0xf3, 0x83, 0xe0, 0x59, 0xf4, - 0x83, 0xe0, 0x5a, 0xf3, 0x83, 0xe0, 0x5b, 0xf4, 0x83, 0xe0, 0x5c, 0xf3, - 0x83, 0xe0, 0x5d, 0xf4, 0x83, 0xe0, 0x5d, 0xf3, 0x83, 0xe0, 0x5e, 0xf4, - 0x83, 0xe0, 0x5f, 0xf3, 0x83, 0xe0, 0x60, 0xf4, 0x83, 0xe0, 0x60, 0xf3, - 0x83, 0xe0, 0x61, 0xf4, 0x83, 0xe0, 0x62, 0xf3, 0x83, 0xe0, 0x63, 0xf4, - 0x83, 0xe0, 0x63, 0xf3, 0x83, 0xe0, 0x64, 0xf4, 0x83, 0xe0, 0x65, 0xf3, - 0x83, 0xe0, 0x66, 0xf4, 0x83, 0xe0, 0x66, 0xf3, 0x83, 0xe0, 0x67, 0xf1, - 0x84, 0xe0, 0x68, 0xf3, 0x83, 0xe0, 0x68, 0xf1, 0x84, 0xe0, 0x69, 0xf3, - 0x83, 0xe0, 0x6a, 0xf1, 0x84, 0xe0, 0x6a, 0xf3, 0x83, 0xe0, 0x6b, 0xf1, - 0x84, 0xe0, 0x6c, 0xf3, 0x83, 0xe0, 0x6c, 0xf1, 0x84, 0xe0, 0x6d, 0xf3, - 0x83, 0xe0, 0x6e, 0xf1, 0x84, 0xe0, 0x6e, 0xf3, 0x83, 0xe0, 0x6f, 0xf1, - 0x84, 0xe0, 0x70, 0xf3, 0x83, 0xe0, 0x70, 0xf1, 0x84, 0xe0, 0x71, 0xf3, - 0x83, 0xe0, 0x72, 0xf1, 0x84, 0xe0, 0x72, 0xf3, 0x83, 0xe0, 0x73, 0xf1, - 0x84, 0xe0, 0x73, 0xf3, 0x83, 0xe0, 0x74, 0xf1, 0x84, 0xe0, 0x75, 0xf3, - 0x83, 0xe0, 0x75, 0xf1, 0x84, 0xe0, 0x76, 0xf3, 0x83, 0xe0, 0x76, 0xf1, - 0x84, 0xe0, 0x77, 0xf3, 0x83, 0xe0, 0x78, 0xf1, 0x84, 0xe0, 0x78, 0xf3, - 0x83, 0xe0, 0x79, 0xf1, 0x84, 0xe0, 0x79, 0xf3, 0x83, 0xe0, 0x7a, 0xf1, - 0x84, 0xe0, 0x7a, 0xf3, 0x83, 0xe0, 0x7b, 0xf1, 0x84, 0xe0, 0x7c, 0xf1, - 0x84, 0xe0, 0x7c, 0xf1, 0x84, 0xe0, 0x7d, 0xf1, 0x84, 0xe0, 0x7d, 0xf1, - 0x84, 0xe0, 0x7e, 0xf1, 0x84, 0xe0, 0x7e, 0xf1, 0x84, 0xe0, 0x7f, 0xf1, - 0x84, 0xe0, 0x7f, 0xf1, 0x84, 0xe0, 0x80, 0xf1, 0x84, 0xe0, 0x81, 0xf1, - 0x84, 0xe0, 0x81, 0xf1, 0x84, 0xe0, 0x82, 0xf1, 0x84, 0xe0, 0x82, 0xf1, - 0x84, 0xe0, 0x83, 0xf1, 0x84, 0xe0, 0x83, 0xf1, 0x84, 0xe0, 0x84, 0xf1, - 0x84, 0xdf, 0x83, 0xf1, 0x84, 0xe0, 0x84, 0xf1, 0x85, 0xdf, 0x83, 0xf1, - 0x85, 0xe0, 0x84, 0xf1, 0x86, 0xdf, 0x83, 0xf1, 0x86, 0xe0, 0x84, 0xf1, - 0x87, 0xdf, 0x83, 0xf1, 0x87, 0xe0, 0x84, 0xf1, 0x88, 0xdf, 0x83, 0xf1, - 0x88, 0xe0, 0x84, 0xf1, 0x89, 0xdf, 0x83, 0xf1, 0x89, 0xe0, 0x84, 0xf1, - 0x8a, 0xdf, 0x83, 0xf1, 0x8a, 0xe0, 0x84, 0xf1, 0x8b, 0xdf, 0x83, 0xf1, - 0x8b, 0xe0, 0x84, 0xf1, 0x8c, 0xdf, 0x84, 0xf1, 0x8c, 0xdc, 0x8d, 0xf1, - 0x8d, 0xe9, 0x8c, 0xf1, 0x8d, 0xe9, 0x8d, 0xf1, 0x8e, 0xe9, 0x8c, 0xf1, - 0x8e, 0xe9, 0x8d, 0xf1, 0x8e, 0xe9, 0x8c, 0xf1, 0x8f, 0xe9, 0x8d, 0xf1, - 0x8f, 0xe9, 0x8c, 0xf1, 0x90, 0xe9, 0x8d, 0xf1, 0x90, 0xe9, 0x91, 0xf1, - 0x91, 0xea, 0x91, 0xf1, 0x91, 0xea, 0x92, 0xf1, 0x92, 0xea, 0x91, 0xf1, - 0x92, 0xea, 0x92, 0xf1, 0x93, 0xea, 0x91, 0xf1, 0x93, 0xea, 0x92, 0xf1, - 0x94, 0xea, 0x91, 0xf1, 0x94, 0xea, 0x92, 0xf1, 0x94, 0xea, 0x91, 0xf1, - 0x95, 0xea, 0x92, 0xf1, 0x95, 0xea, 0x96, 0xf1, 0x96, 0xeb, 0x96, 0xf1, - 0x96, 0xeb, 0x97, 0xf1, 0x97, 0xeb, 0x96, 0xf1, 0x97, 0xeb, 0x97, 0xf1, - 0x98, 0xeb, 0x96, 0xf1, 0x98, 0xeb, 0x97, 0xf1, 0x98, 0xeb, 0x96, 0xf1, - 0x99, 0xeb, 0x97, 0xf1, 0x99, 0xeb, 0x96, 0xf1, 0x9a, 0xeb, 0x97, 0xf1, - 0x9a, 0xeb, 0x9a, 0xf1, 0x9a, 0xec, 0x9b, 0xf1, 0x9b, 0xec, 0x9b, 0xf1, - 0x9b, 0xec, 0x9b, 0xf1, 0x9c, 0xec, 0x9b, 0xf1, 0x9c, 0xec, 0x9b, 0xf1, - 0x9d, 0xec, 0x9b, 0xf1, 0x9d, 0xec, 0x9b, 0xf1, 0x9d, 0xec, 0x9b, 0xf1, - 0x9e, 0xec, 0x9b, 0xf1, 0x9e, 0xec, 0x9b, 0xf1, 0x9f, 0xec, 0x9f, 0xf1, - 0x9f, 0xed, 0x9f, 0xf1, 0x9f, 0xed, 0xa0, 0xf1, 0xa0, 0xed, 0x9f, 0xf1, - 0xa0, 0xed, 0xa0, 0xf1, 0xa1, 0xed, 0x9f, 0xf1, 0xa1, 0xed, 0xa0, 0xf1, - 0xa1, 0xed, 0x9f, 0xf1, 0xa2, 0xed, 0xa0, 0xf1, 0xa2, 0xed, 0x9f, 0xf1, - 0xa3, 0xed, 0xa0, 0xf1, 0xa3, 0xed, 0x9f, 0xf1, 0xa3, 0xed, 0xa0, 0xf1, - 0xa4, 0xed, 0xa4, 0xf1, 0xa4, 0xee, 0xa4, 0xf1, 0xa5, 0xee, 0xa4, 0xf1, - 0xa5, 0xee, 0xa4, 0xf1, 0xa5, 0xee, 0xa4, 0xf1, 0xa6, 0xee, 0xa4, 0xf1, - 0xa6, 0xee, 0xa4, 0xf1, 0xa6, 0xee, 0xa4, 0xf1, 0xa7, 0xee, 0xa4, 0xf1, - 0xa7, 0xee, 0xa4, 0xf1, 0xa8, 0xee, 0xa4, 0xf1, 0xa8, 0xee, 0xa8, 0xf1, - 0xa8, 0xef, 0xa8, 0xf1, 0xa9, 0xef, 0xa8, 0xf1, 0xa9, 0xef, 0xa8, 0xf1, - 0xaa, 0xef, 0xa8, 0xf1, 0xaa, 0xef, 0xa8, 0xf1, 0xaa, 0xef, 0xa8, 0xf1, - 0xab, 0xef, 0xa8, 0xf1, 0xab, 0xef, 0xa8, 0xf1, 0xab, 0xef, 0xa8, 0xf1, - 0xac, 0xef, 0xa8, 0xf1, 0xac, 0xef, 0xac, 0xf1, 0xac, 0xf0, 0xac, 0xf1, - 0xad, 0xf0, 0xac, 0xf1, 0xad, 0xf0, 0xac, 0xf1, 0xae, 0xf0, 0xac, 0xf1, - 0xae, 0xf0, 0xac, 0xf1, 0xae, 0xf0, 0xac, 0xf1, 0xaf, 0xf0, 0xac, 0xf1, - 0xaf, 0xf0, 0xac, 0xf1, 0xaf, 0xf0, 0xac, 0xf1, 0xb0, 0xf0, 0xac, 0xf1, - 0xb0, 0xf0, 0xb0, 0xf1, 0xb0, 0xf1, 0xb0, 0xf1, 0xb1, 0xf1, 0xb0, 0xf1, - 0xb1, 0xf1, 0xb0, 0xf1, 0xb2, 0xf1, 0xb0, 0xf1, 0xb2, 0xf1, 0xb0, 0xf1, - 0xb2, 0xf1, 0xb0, 0xf1, 0xb3, 0xf1, 0xb0, 0xf1, 0xb3, 0xf1, 0xb0, 0xf1, - 0xb3, 0xf1, 0xb0, 0xf1, 0xb4, 0xf1, 0xb0, 0xf1, 0xb4, 0xf1, 0xb4, 0xf1, - 0xb4, 0xf2, 0xb0, 0xf1, 0xb5, 0xf1, 0xb4, 0xf1, 0xb5, 0xf2, 0xb4, 0xf1, - 0xb5, 0xf2, 0xb4, 0xf1, 0xb6, 0xf2, 0xb4, 0xf1, 0xb6, 0xf2, 0xb4, 0xf1, - 0xb6, 0xf2, 0xb4, 0xf1, 0xb7, 0xf2, 0xb4, 0xf1, 0xb7, 0xf2, 0xb4, 0xf1, - 0xb7, 0xf2, 0xb4, 0xf1, 0xb8, 0xf2, 0xb4, 0xf1, 0xb8, 0xf2, 0xb4, 0xf1, - 0xb8, 0xf2, 0xb8, 0xf1, 0xb9, 0xf3, 0xb8, 0xf1, 0xb9, 0xf3, 0xb8, 0xf1, - 0xb9, 0xf3, 0xb8, 0xf1, 0xba, 0xf3, 0xb8, 0xf1, 0xba, 0xf3, 0xb8, 0xf1, - 0xba, 0xf3, 0xb8, 0xf1, 0xbb, 0xf3, 0xb8, 0xf1, 0xbb, 0xf3, 0xb8, 0xf1, - 0xbb, 0xf3, 0xb8, 0xf1, 0xbc, 0xf3, 0xb8, 0xf1, 0xbc, 0xf3, 0xbc, 0xf1, - 0xbc, 0xf4, 0xbb, 0xf1, 0xbd, 0xf4, 0xbc, 0xf1, 0xbd, 0xf4, 0xbb, 0xf1, - 0xbd, 0xf4, 0xbc, 0xf1, 0xbe, 0xf4, 0xbb, 0xf1, 0xbe, 0xf4, 0xbc, 0xf1, - 0xbe, 0xf4, 0xbb, 0xf1, 0xbf, 0xf4, 0xbc, 0xf1, 0xbf, 0xf4, 0xcc, 0xf1, - 0xbf, 0xe3, 0xcb, 0xf1, 0xc0, 0xe6, 0xcc, 0xf1, 0xc0, 0xe3, 0xcb, 0xf1, - 0xc0, 0xe6, 0xcc, 0xf1, 0xc1, 0xe3, 0xcc, 0xf1, 0xc1, 0xe1, 0xcc, 0xf1, - 0xc1, 0xe3, 0xcc, 0xf1, 0xc1, 0xe1, 0xcc, 0xf1, 0xc2, 0xe3, 0xcc, 0xf1, - 0xc2, 0xe1, 0xcc, 0xf1, 0xc2, 0xe3, 0xcc, 0xf1, 0xc3, 0xe1, 0xcc, 0xf1, - 0xc3, 0xe3, 0xcc, 0xf1, 0xc3, 0xe1, 0xcc, 0xf1, 0xc4, 0xe3, 0xcc, 0xf1, - 0xc4, 0xe1, 0xcc, 0xf1, 0xc4, 0xe3, 0xcc, 0xf1, 0xc5, 0xe1, 0xcc, 0xf1, - 0xc5, 0xe3, 0xcc, 0xf1, 0xc5, 0xe1, 0xcc, 0xf1, 0xc6, 0xe3, 0xcc, 0xf1, - 0xc6, 0xe1, 0xcc, 0xf1, 0xc6, 0xe3, 0xcc, 0xf1, 0xc6, 0xe1, 0xcc, 0xf1, - 0xc7, 0xe3, 0xcc, 0xf1, 0xc7, 0xe1, 0xcc, 0xf1, 0xc7, 0xe3, 0xcc, 0xf1, - 0xc8, 0xe1, 0xcc, 0xf1, 0xc8, 0xe3, 0xcc, 0xf1, 0xc8, 0xe1, 0xcc, 0xf1, - 0xc9, 0xe3, 0xcc, 0xf1, 0xc9, 0xe1, 0xcc, 0xf1, 0xc9, 0xe3, 0xcc, 0xf1, - 0xc9, 0xe1, 0xcc, 0xf1, 0xca, 0xe0, 0xcc, 0xf1, 0xca, 0xe1, 0xcc, 0xf1, - 0xca, 0xe0, 0xcc, 0xf1, 0xcb, 0xe1, 0xcc, 0xf1, 0xcb, 0xe0, 0xcc, 0xf1, - 0xcb, 0xe1, 0xcc, 0xf1, 0xcc, 0xe0, 0xcc, 0xf1, 0xcc, 0xe0, 0xcc, 0xf1, - 0xcc, 0xe0, 0xcc, 0xf1, 0xcc, 0xe0, 0xcd, 0xf1, 0xcc, 0xe0, 0xcd, 0xf1, - 0xcc, 0xe0, 0xcd, 0xf1, 0xcc, 0xe0, 0xce, 0xf1, 0xcc, 0xe0, 0xce, 0xf1, - 0xcc, 0xe0, 0xce, 0xf1, 0xcc, 0xe0, 0xce, 0xef, 0xcc, 0xe0, 0xcf, 0xf1, - 0xcc, 0xe0, 0xcf, 0xef, 0xcc, 0xe0, 0xcf, 0xf1, 0xcc, 0xe0, 0xd0, 0xef, - 0xcc, 0xe0, 0xd0, 0xf1, 0xcc, 0xe0, 0xd0, 0xef, 0xcc, 0xe0, 0xd0, 0xf1, - 0xcc, 0xe0, 0xd1, 0xef, 0xcc, 0xe0, 0xd1, 0xf1, 0xcc, 0xe0, 0xd1, 0xef, - 0xcc, 0xe0, 0xd2, 0xf1, 0xcc, 0xe0, 0xd2, 0xef, 0xcc, 0xe0, 0xd2, 0xf1, - 0xcc, 0xe0, 0xd2, 0xef, 0xcc, 0xe0, 0xd3, 0xf1, 0xcc, 0xe0, 0xd3, 0xef, - 0xcc, 0xe0, 0xd3, 0xf1, 0xcc, 0xe0, 0xd4, 0xef, 0xcc, 0xe0, 0xd4, 0xf1, - 0xcc, 0xe0, 0xd4, 0xef, 0xcc, 0xe0, 0xd4, 0xf1, 0xcc, 0xe0, 0xd5, 0xef, - 0xcc, 0xe0, 0xd5, 0xf1, 0xcc, 0xe0, 0xd5, 0xef, 0xcc, 0xe0, 0xd6, 0xf1, - 0xcc, 0xe0, 0xd6, 0xef, 0xcc, 0xe0, 0xd6, 0xf1, 0xcc, 0xe0, 0xd6, 0xef, - 0xcc, 0xe0, 0xd7, 0xee, 0xcc, 0xe0, 0xd7, 0xef, 0xcc, 0xe0, 0xd7, 0xee, - 0xcc, 0xe0, 0xd7, 0xef, 0xcc, 0xe0, 0xd8, 0xee, 0xcc, 0xe0, 0xd8, 0xef, - 0xcc, 0xe0, 0xd8, 0xee, 0xcc, 0xe0, 0xd9, 0xef, 0xcc, 0xe0, 0xd9, 0xf3, - 0xe4, 0xe0, 0xd9, 0xf2, 0xe5, 0xe0, 0xd9, 0xf3, 0xe4, 0xe0, 0xda, 0xf2, - 0xe5, 0xe0, 0xda, 0xf3, 0xe4, 0xe0, 0xda, 0xf2, 0xe5, 0xe0, 0xda, 0xf3, - 0xe4, 0xe0, 0xdb, 0xf2, 0xe5, 0xe0, 0xdb, 0xf3, 0xe4, 0xe0, 0xdb, 0xf2, - 0xe5, 0xe0, 0xdb, 0xf3, 0xe4, 0xe0, 0xdc, 0xf2, 0xe5, 0xe0, 0xdc, 0xf3, - 0xe4, 0xe0, 0xdc, 0xf2, 0xe5, 0xe0, 0xdd, 0xf3, 0xe4, 0xe0, 0xdd, 0xf2, - 0xe5, 0xe0, 0xdd, 0xf3, 0xe4, 0xe0, 0xdd, 0xf2, 0xe5, 0xe0, 0xde, 0xf3, - 0xe4, 0xe0, 0xde, 0xf2, 0xe5, 0xe0, 0xde, 0xf3, 0xe4, 0xe0, 0xde, 0xf2, - 0xe5, 0xe0, 0xdf, 0xf1, 0xe5, 0xe0, 0xdf, 0xf2, 0xe5, 0xe0, 0xdf, 0xf1, - 0xe5, 0xe0, 0xdf, 0xf2, 0xe5, 0xe0, 0xe0, 0xf1, 0xe5, 0xe0, 0xe0, 0xf2, - 0xe5, 0xe0, 0xe0, 0xf1, 0xe5, 0xe0, 0xe1, 0xf2, 0xe5, 0xe0, 0xe1, 0xf1, - 0xe5, 0xe0, 0xe1, 0xf2, 0xe5, 0xe0, 0xe1, 0xf1, 0xe5, 0xe0, 0xe2, 0xf2, - 0xe5, 0xe0, 0xe2, 0xf1, 0xe5, 0xe0, 0xe2, 0xf2, 0xe5, 0xe0, 0xe2, 0xf1, - 0xe5, 0xe0, 0xe3, 0xf2, 0xe5, 0xe0, 0xe3, 0xf1, 0xe5, 0xe0, 0xe3, 0xf2, - 0xe5, 0xe0, 0xe3, 0xf1, 0xe5, 0xe0, 0xe4, 0xf2, 0xe5, 0xe0, 0xe4, 0xf1, - 0xe5, 0xe0, 0xe4, 0xf1, 0xe5, 0xe0, 0xe4, 0xf1, 0xe5, 0xe0, 0xe5, 0xf1, - 0xe5, 0xe0, 0xe5, 0xf1, 0xe5, 0xdf, 0xe5, 0xf1, 0xe5, 0xe0, 0xe5, 0xf1, - 0xe5, 0xdf, 0xe5, 0xf1, 0xe6, 0xe0, 0xe7, 0xf1, 0xe6, 0xe0, 0xe7, 0xf1, - 0xe6, 0xe1, 0xe7, 0xf1, 0xe6, 0xe0, 0xe7, 0xf1, 0xe7, 0xe0, 0xe7, 0xf1, - 0xe6, 0xe0, 0xe7, 0xf1, 0xe7, 0xe0, 0xe7, 0xf1, 0xe6, 0xe0, 0xe8, 0xf1, - 0xe7, 0xe0, 0xe8, 0xf1, 0xe6, 0xe0, 0xe8, 0xf1, 0xe7, 0xe0, 0xe8, 0xf1, - 0xe6, 0xe0, 0xe9, 0xf1, 0xe7, 0xe0, 0xe9, 0xef, 0xe7, 0xe0, 0xe9, 0xf1, - 0xe7, 0xe0, 0xe9, 0xef, 0xe7, 0xe0, 0xea, 0xf1, 0xe7, 0xe0, 0xea, 0xef, - 0xe7, 0xe0, 0xea, 0xf1, 0xe7, 0xe0, 0xea, 0xef, 0xe7, 0xe0, 0xeb, 0xf1, - 0xe7, 0xe0, 0xeb, 0xef, 0xe7, 0xe0, 0xeb, 0xf1, 0xe7, 0xe0, 0xeb, 0xef, - 0xe7, 0xe0, 0xec, 0xec, 0xed, 0xe0, 0xec, 0xf2, 0xf0, 0xe0, 0xec, 0xf1, - 0xf0, 0xe0, 0xec, 0xf2, 0xf0, 0xe0, 0xec, 0xf1, 0xf0, 0xe0, 0xed, 0xf2, - 0xf0, 0xe0, 0xed, 0xf1, 0xf0, 0xe0, 0xed, 0xf2, 0xf0, 0xe0, 0xed, 0xf1, - 0xf0, 0xe0, 0xee, 0xf2, 0xf0, 0xe0, 0xee, 0xf1, 0xf0, 0xe0, 0xee, 0xf2, - 0xf0, 0xe0, 0xee, 0xf1, 0xf0, 0xe0, 0xef, 0xf1, 0xf1, 0xe0, 0xef, 0xf1, - 0xf0, 0xe0, 0xef, 0xf1, 0xf1, 0xe0, 0xef, 0xf1, 0xf0, 0xe0, 0xf0, 0xf1, - 0xf1, 0xe0, 0xf0, 0xf1, 0xf0, 0xe0, 0xf0, 0xf1, 0xf1, 0xe0, 0xf0, 0xf1, - 0xf0, 0xdf, 0xf0, 0xf1, 0xf1, 0xe0, 0xf1, 0xf1, 0xf0, 0xe0, 0xf1, 0xf1, - 0xf1, 0xe0, 0xf1, 0xf1, 0xf0, 0xe0, 0xf2, 0xf1, 0xf1, 0xe0, 0xf2, 0xf1, - 0xf0, 0xe0, 0xf2, 0xf1, 0xf1, 0xe0, 0xf2, 0xf1, 0xf0, 0xe0, 0xf2, 0xf1, - 0xf1, 0xe0, 0xf3, 0xef, 0xf1, 0xe0, 0xf3, 0xf1, 0xf1, 0xe0, 0xf3, 0xef, - 0xf1, 0xe0, 0xf3, 0xf1, 0xf1, 0xe0, 0xf4, 0xef, 0xf1, 0xe0, 0xf4, 0xf1, - 0xf1, 0xe0, 0xf4, 0xef, 0xf1, 0xe0, 0xf4, 0xf1, 0xf1, 0xe0, 0xf5, 0xef, - 0xf1, 0xe0, 0xf5, 0xf1, 0xf1, 0xe0, 0xf5, 0xef, 0xf1, 0xe0, 0xf5, 0xf1, - 0xf1, 0xe0, 0xf5, 0xef, 0xf1, 0xe0, 0xf6, 0xf1, 0xf1, 0xe0, 0xf6, 0xef, - 0xf1, 0xe0, 0xf6, 0xf1, 0xf1, 0xe0, 0xf6, 0xef, 0xf1, 0xe0, 0xf7, 0xf1, - 0xf1, 0xe0, 0xf7, 0xef, 0xf1, 0xe0, 0xf7, 0xf1, 0xf1, 0xe0, 0xf7, 0xef, - 0xf1, 0xe0, 0xf8, 0xf1, 0xf1, 0xe0, 0xf8, 0xef, 0xf1, 0xe0, 0xf8, 0xf1, - 0xf1, 0xe0, 0xf8, 0xef, 0xf1, 0xe0, 0xf8, 0xf1, 0xf1, 0xe0, 0xf9, 0xef, - 0xf1, 0xe0, 0xf9, 0xf1, 0xf1, 0xe0, 0xf9, 0xef, 0xf1, 0xe0, 0xf9, 0xee, - 0xf1, 0xe0, 0xfa, 0xef, 0xf1, 0xe0, 0xfa, 0xee, 0xf1, 0xe0, 0xfa, 0xef, - 0xf1, 0xe0, 0xfa, 0xee, 0xf1, 0xe0, 0xfa, 0xef, 0xf1, 0xe0, 0xfb, 0xee, - 0xf1, 0xe0, 0xfb, 0xef, 0xf1, 0xe0, 0xfb, 0xee, 0xf1, 0xe0, 0xfb, 0xef, - 0xf1, 0xe0, 0xfc, 0xee, 0xf1, 0xe0, 0xfc, 0xef, 0xf1, 0xe0, 0xfc, 0xee, - 0xf1, 0xe0, 0xfc, 0xef, 0xf1, 0xe0, 0xfc, 0xee, 0xf1, 0xe0, 0xfd, 0xef, - 0xf1, 0xe0, 0xfd, 0xee, 0xf1, 0xe0, 0xfd, 0xef, 0xf1, 0xe0, 0xfd, 0xee, - 0xf1, 0xe0, 0xfe, 0xef, 0xf1, 0xe0, 0xfe, 0xee, 0xf1, 0xe0, 0xfe, 0xef, - 0xf1, 0xe0, 0xfe, 0xee, 0xf1, 0xe0, 0xfe, 0xef, 0xf1, 0xe0, 0xff, 0xee, - 0xf1, 0xe0, 0xff, 0xef, 0xf1, 0xe0, 0x03, 0xf2, 0x83, 0xe0, 0x0a, 0xf4, - 0x83, 0xe0, 0x0f, 0xf2, 0x83, 0xe0, 0x14, 0xf4, 0x83, 0xe0, 0x17, 0xf2, - 0x83, 0xe0, 0x1b, 0xf4, 0x83, 0xe0, 0x1e, 0xf2, 0x83, 0xe0, 0x20, 0xf4, - 0x83, 0xe0, 0x23, 0xf2, 0x83, 0xe0, 0x25, 0xf4, 0x83, 0xe0, 0x27, 0xf2, - 0x83, 0xe0, 0x29, 0xf4, 0x83, 0xe0, 0x2b, 0xf2, 0x83, 0xe0, 0x2d, 0xf4, - 0x83, 0xe0, 0x2f, 0xf2, 0x83, 0xe0, 0x31, 0xf4, 0x83, 0xe0, 0x32, 0xf2, - 0x83, 0xe0, 0x34, 0xf4, 0x83, 0xe0, 0x35, 0xf2, 0x83, 0xe0, 0x37, 0xf4, - 0x83, 0xe0, 0x38, 0xf2, 0x83, 0xe0, 0x3a, 0xf4, 0x83, 0xe0, 0x3b, 0xf2, - 0x83, 0xe0, 0x3c, 0xf4, 0x83, 0xe0, 0x3e, 0xf2, 0x83, 0xe0, 0x3f, 0xf4, - 0x83, 0xe0, 0x40, 0xf2, 0x83, 0xe0, 0x42, 0xf4, 0x83, 0xe0, 0x43, 0xf2, - 0x83, 0xe0, 0x44, 0xf4, 0x83, 0xe0, 0x45, 0xf2, 0x83, 0xe0, 0x46, 0xf4, - 0x83, 0xe0, 0x47, 0xf2, 0x83, 0xe0, 0x48, 0xf4, 0x83, 0xe0, 0x49, 0xf2, - 0x83, 0xe0, 0x4a, 0xf4, 0x83, 0xe0, 0x4b, 0xf2, 0x83, 0xe0, 0x4c, 0xf4, - 0x83, 0xe0, 0x4d, 0xf2, 0x83, 0xe0, 0x4e, 0xf4, 0x83, 0xe0, 0x4f, 0xf2, - 0x83, 0xe0, 0x50, 0xf4, 0x83, 0xe0, 0x51, 0xf2, 0x83, 0xe0, 0x52, 0xf4, - 0x83, 0xe0, 0x53, 0xf2, 0x83, 0xe0, 0x54, 0xf4, 0x83, 0xe0, 0x55, 0xf2, - 0x83, 0xe0, 0x56, 0xf4, 0x83, 0xe0, 0x57, 0xf2, 0x83, 0xe0, 0x58, 0xf4, - 0x83, 0xe0, 0x58, 0xf2, 0x83, 0xe0, 0x59, 0xf4, 0x83, 0xe0, 0x5a, 0xf2, - 0x83, 0xe0, 0x5b, 0xf4, 0x83, 0xe0, 0x5c, 0xf2, 0x83, 0xe0, 0x5d, 0xf4, - 0x83, 0xe0, 0x5d, 0xf2, 0x83, 0xe0, 0x5e, 0xf4, 0x83, 0xe0, 0x5f, 0xf2, - 0x83, 0xe0, 0x60, 0xf4, 0x83, 0xe0, 0x60, 0xf2, 0x83, 0xe0, 0x61, 0xf4, - 0x83, 0xe0, 0x62, 0xf2, 0x83, 0xe0, 0x63, 0xf4, 0x83, 0xe0, 0x63, 0xf2, - 0x83, 0xe0, 0x64, 0xf4, 0x83, 0xe0, 0x65, 0xf2, 0x83, 0xe0, 0x66, 0xf4, - 0x83, 0xe0, 0x66, 0xf2, 0x83, 0xe0, 0x67, 0xf4, 0x83, 0xe0, 0x68, 0xf2, - 0x83, 0xe0, 0x68, 0xf4, 0x83, 0xe0, 0x69, 0xf2, 0x83, 0xe0, 0x6a, 0xf4, - 0x83, 0xe0, 0x6a, 0xf2, 0x83, 0xe0, 0x6b, 0xf4, 0x83, 0xe0, 0x6c, 0xf2, - 0x83, 0xe0, 0x6c, 0xf4, 0x83, 0xe0, 0x6d, 0xf2, 0x83, 0xe0, 0x6e, 0xf4, - 0x83, 0xe0, 0x6e, 0xf2, 0x83, 0xe0, 0x6f, 0xf1, 0x84, 0xe0, 0x70, 0xf2, - 0x83, 0xe0, 0x70, 0xf1, 0x84, 0xe0, 0x71, 0xf2, 0x83, 0xe0, 0x72, 0xf1, - 0x84, 0xe0, 0x72, 0xf2, 0x83, 0xe0, 0x73, 0xf1, 0x84, 0xe0, 0x73, 0xf2, - 0x83, 0xe0, 0x74, 0xf1, 0x84, 0xe0, 0x75, 0xf2, 0x83, 0xe0, 0x75, 0xf1, - 0x84, 0xe0, 0x76, 0xf2, 0x83, 0xe0, 0x76, 0xf1, 0x84, 0xe0, 0x77, 0xf2, - 0x83, 0xe0, 0x78, 0xf1, 0x84, 0xe0, 0x78, 0xf2, 0x83, 0xe0, 0x79, 0xf1, - 0x84, 0xe0, 0x79, 0xf2, 0x83, 0xe0, 0x7a, 0xf1, 0x84, 0xe0, 0x7a, 0xf2, - 0x83, 0xe0, 0x7b, 0xf1, 0x84, 0xe0, 0x7c, 0xf2, 0x83, 0xe0, 0x7c, 0xf1, - 0x84, 0xe0, 0x7d, 0xf2, 0x83, 0xe0, 0x7d, 0xf1, 0x84, 0xe0, 0x7e, 0xf2, - 0x83, 0xe0, 0x7e, 0xf1, 0x84, 0xe0, 0x7f, 0xf2, 0x83, 0xe0, 0x7f, 0xf1, - 0x84, 0xe0, 0x80, 0xf1, 0x84, 0xe0, 0x81, 0xf1, 0x84, 0xe0, 0x81, 0xf1, - 0x84, 0xe0, 0x82, 0xf1, 0x84, 0xe0, 0x82, 0xf1, 0x84, 0xe0, 0x83, 0xf1, - 0x84, 0xe0, 0x83, 0xf1, 0x84, 0xe0, 0x84, 0xf1, 0x84, 0xdf, 0x83, 0xf1, - 0x84, 0xe0, 0x84, 0xf1, 0x85, 0xdf, 0x83, 0xf1, 0x85, 0xe0, 0x84, 0xf1, - 0x86, 0xdf, 0x83, 0xf1, 0x86, 0xe0, 0x84, 0xf1, 0x87, 0xdf, 0x83, 0xf1, - 0x87, 0xe0, 0x84, 0xf1, 0x88, 0xdf, 0x83, 0xf1, 0x88, 0xe0, 0x84, 0xf1, - 0x89, 0xdf, 0x83, 0xf1, 0x89, 0xe0, 0x84, 0xf1, 0x8a, 0xdf, 0x83, 0xf1, - 0x8a, 0xe0, 0x84, 0xf1, 0x8b, 0xdf, 0x83, 0xf1, 0x8b, 0xe0, 0x84, 0xf1, - 0x8c, 0xdf, 0x8a, 0xf1, 0x8c, 0xe8, 0x8a, 0xf1, 0x8d, 0xe8, 0x8a, 0xf1, - 0x8d, 0xe8, 0x8a, 0xf1, 0x8e, 0xe8, 0x8a, 0xf1, 0x8e, 0xe8, 0x8e, 0xf1, - 0x8e, 0xe9, 0x8f, 0xf1, 0x8f, 0xe9, 0x8f, 0xf1, 0x8f, 0xe9, 0x8f, 0xf1, - 0x90, 0xe9, 0x8f, 0xf1, 0x90, 0xe9, 0x8f, 0xf1, 0x91, 0xe9, 0x8f, 0xf1, - 0x91, 0xe9, 0x8f, 0xf1, 0x92, 0xe9, 0x8f, 0xf1, 0x92, 0xe9, 0x8f, 0xf1, - 0x93, 0xe9, 0x8f, 0xf1, 0x93, 0xe9, 0x94, 0xf1, 0x94, 0xea, 0x94, 0xf1, - 0x94, 0xea, 0x94, 0xf1, 0x94, 0xea, 0x94, 0xf1, 0x95, 0xea, 0x94, 0xf1, - 0x95, 0xea, 0x94, 0xf1, 0x96, 0xea, 0x94, 0xf1, 0x96, 0xea, 0x94, 0xf1, - 0x97, 0xea, 0x94, 0xf1, 0x97, 0xea, 0x94, 0xf1, 0x98, 0xea, 0x94, 0xf1, - 0x98, 0xea, 0x98, 0xf1, 0x98, 0xeb, 0x99, 0xf1, 0x99, 0xeb, 0x99, 0xf1, - 0x99, 0xeb, 0x99, 0xf1, 0x9a, 0xeb, 0x99, 0xf1, 0x9a, 0xeb, 0x99, 0xf1, - 0x9a, 0xeb, 0x99, 0xf1, 0x9b, 0xeb, 0x99, 0xf1, 0x9b, 0xeb, 0x99, 0xf1, - 0x9c, 0xeb, 0x99, 0xf1, 0x9c, 0xeb, 0x99, 0xf1, 0x9d, 0xeb, 0x9d, 0xf1, - 0x9d, 0xec, 0x9d, 0xf1, 0x9d, 0xec, 0x9e, 0xf1, 0x9e, 0xec, 0x9d, 0xf1, - 0x9e, 0xec, 0x9e, 0xf1, 0x9f, 0xec, 0x9d, 0xf1, 0x9f, 0xec, 0x9e, 0xf1, - 0x9f, 0xec, 0x9d, 0xf1, 0xa0, 0xec, 0x9e, 0xf1, 0xa0, 0xec, 0x9d, 0xf1, - 0xa1, 0xec, 0x9e, 0xf1, 0xa1, 0xec, 0xa1, 0xf1, 0xa1, 0xed, 0xa2, 0xf1, - 0xa2, 0xed, 0xa2, 0xf1, 0xa2, 0xed, 0xa2, 0xf1, 0xa3, 0xed, 0xa2, 0xf1, - 0xa3, 0xed, 0xa2, 0xf1, 0xa3, 0xed, 0xa2, 0xf1, 0xa4, 0xed, 0xa2, 0xf1, - 0xa4, 0xed, 0xa2, 0xf1, 0xa5, 0xed, 0xa2, 0xf1, 0xa5, 0xed, 0xa2, 0xf1, - 0xa5, 0xed, 0xa2, 0xf1, 0xa6, 0xed, 0xa2, 0xf1, 0xa6, 0xed, 0xa6, 0xf1, - 0xa6, 0xee, 0xa6, 0xf1, 0xa7, 0xee, 0xa6, 0xf1, 0xa7, 0xee, 0xa6, 0xf1, - 0xa8, 0xee, 0xa6, 0xf1, 0xa8, 0xee, 0xa6, 0xf1, 0xa8, 0xee, 0xa6, 0xf1, - 0xa9, 0xee, 0xa6, 0xf1, 0xa9, 0xee, 0xa6, 0xf1, 0xaa, 0xee, 0xa6, 0xf1, - 0xaa, 0xee, 0xa6, 0xf1, 0xaa, 0xee, 0xab, 0xf1, 0xab, 0xef, 0xaa, 0xf1, - 0xab, 0xef, 0xab, 0xf1, 0xab, 0xef, 0xaa, 0xf1, 0xac, 0xef, 0xab, 0xf1, - 0xac, 0xef, 0xaa, 0xf1, 0xac, 0xef, 0xab, 0xf1, 0xad, 0xef, 0xaa, 0xf1, - 0xad, 0xef, 0xab, 0xf1, 0xae, 0xef, 0xaa, 0xf1, 0xae, 0xef, 0xab, 0xf1, - 0xae, 0xef, 0xaf, 0xf1, 0xaf, 0xf0, 0xae, 0xf1, 0xaf, 0xf0, 0xaf, 0xf1, - 0xaf, 0xf0, 0xae, 0xf1, 0xb0, 0xf0, 0xaf, 0xf1, 0xb0, 0xf0, 0xae, 0xf1, - 0xb0, 0xf0, 0xaf, 0xf1, 0xb1, 0xf0, 0xae, 0xf1, 0xb1, 0xf0, 0xaf, 0xf1, - 0xb2, 0xf0, 0xae, 0xf1, 0xb2, 0xf0, 0xaf, 0xf1, 0xb2, 0xf0, 0xb3, 0xf1, - 0xb3, 0xf1, 0xb2, 0xf1, 0xb3, 0xf1, 0xb3, 0xf1, 0xb3, 0xf1, 0xb2, 0xf1, - 0xb4, 0xf1, 0xb3, 0xf1, 0xb4, 0xf1, 0xb2, 0xf1, 0xb4, 0xf1, 0xb3, 0xf1, - 0xb5, 0xf1, 0xb2, 0xf1, 0xb5, 0xf1, 0xb3, 0xf1, 0xb5, 0xf1, 0xb2, 0xf1, - 0xb6, 0xf1, 0xb3, 0xf1, 0xb6, 0xf1, 0xb6, 0xf1, 0xb6, 0xf2, 0xb3, 0xf1, - 0xb7, 0xf1, 0xb6, 0xf1, 0xb7, 0xf2, 0xb6, 0xf1, 0xb7, 0xf2, 0xb6, 0xf1, - 0xb8, 0xf2, 0xb6, 0xf1, 0xb8, 0xf2, 0xb6, 0xf1, 0xb8, 0xf2, 0xb6, 0xf1, - 0xb9, 0xf2, 0xb6, 0xf1, 0xb9, 0xf2, 0xb6, 0xf1, 0xb9, 0xf2, 0xb6, 0xf1, - 0xba, 0xf2, 0xb6, 0xf1, 0xba, 0xf2, 0xb6, 0xf1, 0xba, 0xf2, 0xba, 0xf1, - 0xbb, 0xf3, 0xba, 0xf1, 0xbb, 0xf3, 0xba, 0xf1, 0xbb, 0xf3, 0xba, 0xf1, - 0xbc, 0xf3, 0xba, 0xf1, 0xbc, 0xf3, 0xba, 0xf1, 0xbc, 0xf3, 0xba, 0xf1, - 0xbd, 0xf3, 0xba, 0xf1, 0xbd, 0xf3, 0xba, 0xf1, 0xbd, 0xf3, 0xba, 0xf1, - 0xbe, 0xf3, 0xba, 0xf1, 0xbe, 0xf3, 0xbe, 0xf1, 0xbe, 0xf4, 0xbd, 0xf1, - 0xbf, 0xf4, 0xbe, 0xf1, 0xbf, 0xf4, 0xcc, 0xf1, 0xbf, 0xe3, 0xcb, 0xf1, - 0xc0, 0xe6, 0xcc, 0xf1, 0xc0, 0xe3, 0xcb, 0xf1, 0xc0, 0xe6, 0xcc, 0xf1, - 0xc1, 0xe3, 0xcc, 0xf1, 0xc1, 0xe0, 0xcc, 0xf1, 0xc1, 0xe3, 0xcc, 0xf1, - 0xc1, 0xe0, 0xcc, 0xf1, 0xc2, 0xe3, 0xcc, 0xf1, 0xc2, 0xe0, 0xcc, 0xf1, - 0xc2, 0xe3, 0xcc, 0xf1, 0xc3, 0xe0, 0xcc, 0xf1, 0xc3, 0xe3, 0xcc, 0xf1, - 0xc3, 0xe0, 0xcc, 0xf1, 0xc4, 0xe3, 0xcc, 0xf1, 0xc4, 0xe0, 0xcc, 0xf1, - 0xc4, 0xe3, 0xcc, 0xf1, 0xc5, 0xe0, 0xcc, 0xf1, 0xc5, 0xe3, 0xcc, 0xf1, - 0xc5, 0xe0, 0xcc, 0xf1, 0xc6, 0xe3, 0xcc, 0xf1, 0xc6, 0xe0, 0xcc, 0xf1, - 0xc6, 0xe3, 0xcc, 0xf1, 0xc6, 0xe0, 0xcc, 0xf1, 0xc7, 0xe3, 0xcc, 0xf1, - 0xc7, 0xe0, 0xcc, 0xf1, 0xc7, 0xe3, 0xcc, 0xf1, 0xc8, 0xe0, 0xcc, 0xf1, - 0xc8, 0xe3, 0xcc, 0xf1, 0xc8, 0xe0, 0xcc, 0xf1, 0xc9, 0xe3, 0xcc, 0xf1, - 0xc9, 0xe0, 0xcc, 0xf1, 0xc9, 0xe3, 0xcc, 0xf1, 0xc9, 0xe0, 0xcc, 0xf1, - 0xca, 0xe0, 0xcc, 0xf1, 0xca, 0xe0, 0xcc, 0xf1, 0xca, 0xe0, 0xcc, 0xf1, - 0xcb, 0xe0, 0xcc, 0xf1, 0xcb, 0xe0, 0xcc, 0xf1, 0xcb, 0xe0, 0xcc, 0xf1, - 0xcc, 0xe0, 0xcc, 0xf1, 0xcc, 0xe0, 0xcc, 0xf1, 0xcc, 0xe0, 0xcc, 0xf1, - 0xcc, 0xe0, 0xcd, 0xf1, 0xcc, 0xe0, 0xcd, 0xf1, 0xcc, 0xe0, 0xcd, 0xf1, - 0xcc, 0xe0, 0xce, 0xf1, 0xcc, 0xe0, 0xce, 0xf1, 0xcc, 0xe0, 0xce, 0xf1, - 0xcc, 0xe0, 0xce, 0xf1, 0xcc, 0xe0, 0xcf, 0xf1, 0xcc, 0xe0, 0xcf, 0xf1, - 0xcc, 0xe0, 0xcf, 0xf1, 0xcc, 0xe0, 0xd0, 0xf1, 0xcc, 0xe0, 0xd0, 0xf1, - 0xcc, 0xe0, 0xd0, 0xf1, 0xcc, 0xe0, 0xd0, 0xf1, 0xcc, 0xe0, 0xd1, 0xef, - 0xcc, 0xe0, 0xd1, 0xf1, 0xcc, 0xe0, 0xd1, 0xef, 0xcc, 0xe0, 0xd2, 0xf1, - 0xcc, 0xe0, 0xd2, 0xef, 0xcc, 0xe0, 0xd2, 0xf1, 0xcc, 0xe0, 0xd2, 0xef, - 0xcc, 0xe0, 0xd3, 0xf1, 0xcc, 0xe0, 0xd3, 0xef, 0xcc, 0xe0, 0xd3, 0xf1, - 0xcc, 0xe0, 0xd4, 0xef, 0xcc, 0xe0, 0xd4, 0xf1, 0xcc, 0xe0, 0xd4, 0xef, - 0xcc, 0xe0, 0xd4, 0xf1, 0xcc, 0xe0, 0xd5, 0xef, 0xcc, 0xe0, 0xd5, 0xf1, - 0xcc, 0xe0, 0xd5, 0xef, 0xcc, 0xe0, 0xd6, 0xf1, 0xcc, 0xe0, 0xd6, 0xef, - 0xcc, 0xe0, 0xd6, 0xf1, 0xcc, 0xe0, 0xd6, 0xef, 0xcc, 0xe0, 0xd7, 0xee, - 0xcc, 0xe0, 0xd7, 0xef, 0xcc, 0xe0, 0xd7, 0xee, 0xcc, 0xe0, 0xd7, 0xef, - 0xcc, 0xe0, 0xd8, 0xee, 0xcc, 0xe0, 0xd8, 0xef, 0xcc, 0xe0, 0xd8, 0xee, - 0xcc, 0xe0, 0xd9, 0xef, 0xcc, 0xe0, 0xd9, 0xf3, 0xe4, 0xe0, 0xd9, 0xf2, - 0xe5, 0xe0, 0xd9, 0xf3, 0xe4, 0xe0, 0xda, 0xf2, 0xe5, 0xe0, 0xda, 0xf3, - 0xe4, 0xe0, 0xda, 0xf2, 0xe5, 0xe0, 0xda, 0xf3, 0xe4, 0xe0, 0xdb, 0xf2, - 0xe5, 0xe0, 0xdb, 0xf3, 0xe4, 0xe0, 0xdb, 0xf2, 0xe5, 0xe0, 0xdb, 0xf3, - 0xe4, 0xe0, 0xdc, 0xf2, 0xe5, 0xe0, 0xdc, 0xf3, 0xe4, 0xe0, 0xdc, 0xf2, - 0xe5, 0xe0, 0xdd, 0xf3, 0xe4, 0xe0, 0xdd, 0xf2, 0xe5, 0xe0, 0xdd, 0xf3, - 0xe4, 0xe0, 0xdd, 0xf2, 0xe5, 0xe0, 0xde, 0xf3, 0xe4, 0xe0, 0xde, 0xf2, - 0xe5, 0xe0, 0xde, 0xf3, 0xe4, 0xe0, 0xde, 0xf2, 0xe5, 0xe0, 0xdf, 0xf1, - 0xe5, 0xe0, 0xdf, 0xf2, 0xe5, 0xe0, 0xdf, 0xf1, 0xe5, 0xe0, 0xdf, 0xf2, - 0xe5, 0xe0, 0xe0, 0xf1, 0xe5, 0xe0, 0xe0, 0xf2, 0xe5, 0xe0, 0xe0, 0xf1, - 0xe5, 0xe0, 0xe1, 0xf2, 0xe5, 0xe0, 0xe1, 0xf1, 0xe5, 0xe0, 0xe1, 0xf2, - 0xe5, 0xe0, 0xe1, 0xf1, 0xe5, 0xe0, 0xe2, 0xf2, 0xe5, 0xe0, 0xe2, 0xf1, - 0xe5, 0xe0, 0xe2, 0xf2, 0xe5, 0xe0, 0xe2, 0xf1, 0xe5, 0xe0, 0xe3, 0xf2, - 0xe5, 0xe0, 0xe3, 0xf1, 0xe5, 0xe0, 0xe3, 0xf2, 0xe5, 0xe0, 0xe3, 0xf1, - 0xe5, 0xe0, 0xe4, 0xf2, 0xe5, 0xe0, 0xe4, 0xf1, 0xe5, 0xe0, 0xe4, 0xf1, - 0xe5, 0xe0, 0xe4, 0xf1, 0xe5, 0xe0, 0xe5, 0xf1, 0xe5, 0xe0, 0xe4, 0xf1, - 0xe5, 0xe0, 0xe5, 0xf1, 0xe5, 0xe0, 0xe4, 0xf1, 0xe5, 0xe0, 0xe5, 0xf1, - 0xe6, 0xe0, 0xe7, 0xf1, 0xe6, 0xe0, 0xe7, 0xf1, 0xe6, 0xe0, 0xe7, 0xf1, - 0xe6, 0xe0, 0xe7, 0xf1, 0xe7, 0xe0, 0xe7, 0xf1, 0xe6, 0xe0, 0xe7, 0xf1, - 0xe7, 0xe0, 0xe7, 0xf1, 0xe6, 0xe0, 0xe8, 0xf1, 0xe7, 0xe0, 0xe8, 0xf1, - 0xe6, 0xe0, 0xe8, 0xf1, 0xe7, 0xe0, 0xe8, 0xf1, 0xe6, 0xe0, 0xe9, 0xf1, - 0xe7, 0xe0, 0xe9, 0xf1, 0xe6, 0xe0, 0xe9, 0xf1, 0xe7, 0xe0, 0xe9, 0xf1, - 0xe6, 0xe0, 0xea, 0xf1, 0xe7, 0xe0, 0xea, 0xf1, 0xe6, 0xe0, 0xea, 0xf1, - 0xe7, 0xe0, 0xea, 0xf1, 0xe6, 0xe0, 0xeb, 0xf1, 0xe7, 0xe0, 0xeb, 0xef, - 0xe7, 0xe0, 0xeb, 0xf1, 0xe7, 0xe0, 0xeb, 0xef, 0xe7, 0xe0, 0xec, 0xf1, - 0xf0, 0xe0, 0xec, 0xf2, 0xf0, 0xe0, 0xec, 0xf1, 0xf0, 0xe0, 0xec, 0xf2, - 0xf0, 0xe0, 0xec, 0xf1, 0xf0, 0xe0, 0xed, 0xf2, 0xf0, 0xe0, 0xed, 0xf1, - 0xf0, 0xe0, 0xed, 0xf2, 0xf0, 0xe0, 0xed, 0xf1, 0xf0, 0xe0, 0xee, 0xf2, - 0xf0, 0xe0, 0xee, 0xf1, 0xf0, 0xe0, 0xee, 0xf2, 0xf0, 0xe0, 0xee, 0xf1, - 0xf0, 0xe0, 0xef, 0xf2, 0xf0, 0xe0, 0xef, 0xf1, 0xf0, 0xe0, 0xef, 0xf2, - 0xf0, 0xe0, 0xef, 0xf1, 0xf0, 0xe0, 0xf0, 0xf1, 0xf1, 0xe0, 0xf0, 0xf1, - 0xf0, 0xe0, 0xf0, 0xf1, 0xf1, 0xe0, 0xf0, 0xf1, 0xf0, 0xe0, 0xf0, 0xf1, - 0xf1, 0xe0, 0xf1, 0xf1, 0xf0, 0xe0, 0xf1, 0xf1, 0xf1, 0xe0, 0xf1, 0xf1, - 0xf0, 0xe0, 0xf2, 0xf1, 0xf1, 0xe0, 0xf2, 0xf1, 0xf0, 0xe0, 0xf2, 0xf1, - 0xf1, 0xe0, 0xf2, 0xf1, 0xf0, 0xe0, 0xf2, 0xf1, 0xf1, 0xe0, 0xf3, 0xf0, - 0xf1, 0xe0, 0xf3, 0xf1, 0xf1, 0xe0, 0xf3, 0xf0, 0xf1, 0xe0, 0xf3, 0xf1, - 0xf1, 0xe0, 0xf4, 0xf0, 0xf1, 0xe0, 0xf4, 0xf1, 0xf1, 0xe0, 0xf4, 0xf0, - 0xf1, 0xe0, 0xf4, 0xf1, 0xf1, 0xe0, 0xf5, 0xf0, 0xf1, 0xe0, 0xf5, 0xf1, - 0xf1, 0xe0, 0xf5, 0xf0, 0xf1, 0xe0, 0xf5, 0xf1, 0xf1, 0xe0, 0xf5, 0xf0, - 0xf1, 0xe0, 0xf6, 0xf1, 0xf1, 0xe0, 0xf6, 0xf0, 0xf1, 0xe0, 0xf6, 0xf1, - 0xf1, 0xe0, 0xf6, 0xf0, 0xf1, 0xe0, 0xf7, 0xf1, 0xf1, 0xe0, 0xf7, 0xf0, - 0xf1, 0xe0, 0xf7, 0xf1, 0xf1, 0xe0, 0xf7, 0xf0, 0xf1, 0xe0, 0xf8, 0xf1, - 0xf1, 0xe0, 0xf8, 0xf0, 0xf1, 0xe0, 0xf8, 0xf1, 0xf1, 0xe0, 0xf8, 0xf0, - 0xf1, 0xe0, 0xf8, 0xf1, 0xf1, 0xe0, 0xf9, 0xf0, 0xf1, 0xe0, 0xf9, 0xf1, - 0xf1, 0xe0, 0xf9, 0xf0, 0xf1, 0xe0, 0xf9, 0xf1, 0xf1, 0xe0, 0xfa, 0xf0, - 0xf1, 0xe0, 0xfa, 0xf1, 0xf1, 0xe0, 0xfa, 0xf0, 0xf1, 0xe0, 0xfa, 0xf1, - 0xf1, 0xe0, 0xfa, 0xf0, 0xf1, 0xe0, 0xfb, 0xf1, 0xf1, 0xe0, 0xfb, 0xf0, - 0xf1, 0xe0, 0xfb, 0xf1, 0xf1, 0xe0, 0xfb, 0xf0, 0xf1, 0xe0, 0xfc, 0xf1, - 0xf1, 0xe0, 0xfc, 0xf0, 0xf1, 0xe0, 0xfc, 0xee, 0xf1, 0xe0, 0xfc, 0xf0, - 0xf1, 0xe0, 0xfc, 0xee, 0xf1, 0xe0, 0xfd, 0xf0, 0xf1, 0xe0, 0xfd, 0xee, - 0xf1, 0xe0, 0xfd, 0xf0, 0xf1, 0xe0, 0xfd, 0xee, 0xf1, 0xe0, 0xfe, 0xf0, - 0xf1, 0xe0, 0xfe, 0xee, 0xf1, 0xe0, 0xfe, 0xf0, 0xf1, 0xe0, 0xfe, 0xee, - 0xf1, 0xe0, 0xfe, 0xf0, 0xf1, 0xe0, 0xff, 0xee, 0xf1, 0xe0, 0xff, 0xf0, - 0xf1, 0xe0, 0x03, 0xf3, 0x83, 0xe1, 0x0a, 0xf4, 0x83, 0xe1, 0x0f, 0xf3, - 0x83, 0xe1, 0x14, 0xf4, 0x83, 0xe1, 0x17, 0xf3, 0x83, 0xe1, 0x1b, 0xf4, - 0x83, 0xe1, 0x1e, 0xf3, 0x83, 0xe1, 0x20, 0xf4, 0x83, 0xe1, 0x23, 0xf3, - 0x83, 0xe1, 0x25, 0xf4, 0x83, 0xe1, 0x27, 0xf3, 0x83, 0xe1, 0x29, 0xf4, - 0x83, 0xe1, 0x2b, 0xf3, 0x83, 0xe1, 0x2d, 0xf4, 0x83, 0xe1, 0x2f, 0xf3, - 0x83, 0xe1, 0x31, 0xf4, 0x83, 0xe1, 0x32, 0xf3, 0x83, 0xe1, 0x34, 0xf4, - 0x83, 0xe1, 0x35, 0xf3, 0x83, 0xe1, 0x37, 0xf4, 0x83, 0xe1, 0x38, 0xf3, - 0x83, 0xe1, 0x3a, 0xf4, 0x83, 0xe1, 0x3b, 0xf3, 0x83, 0xe1, 0x3c, 0xf4, - 0x83, 0xe1, 0x3e, 0xf3, 0x83, 0xe1, 0x3f, 0xf4, 0x83, 0xe1, 0x40, 0xf3, - 0x83, 0xe1, 0x42, 0xf4, 0x83, 0xe1, 0x43, 0xf3, 0x83, 0xe1, 0x44, 0xf4, - 0x83, 0xe1, 0x45, 0xf3, 0x83, 0xe1, 0x46, 0xf4, 0x83, 0xe1, 0x47, 0xf3, - 0x83, 0xe1, 0x48, 0xf4, 0x83, 0xe1, 0x49, 0xf3, 0x83, 0xe1, 0x4a, 0xf4, - 0x83, 0xe1, 0x4b, 0xf3, 0x83, 0xe1, 0x4c, 0xf4, 0x83, 0xe1, 0x4d, 0xf3, - 0x83, 0xe1, 0x4e, 0xf4, 0x83, 0xe1, 0x4f, 0xf3, 0x83, 0xe1, 0x50, 0xf4, - 0x83, 0xe1, 0x51, 0xf3, 0x83, 0xe1, 0x52, 0xf4, 0x83, 0xe1, 0x53, 0xf3, - 0x83, 0xe1, 0x54, 0xf4, 0x83, 0xe1, 0x55, 0xf3, 0x83, 0xe1, 0x56, 0xf4, - 0x83, 0xe1, 0x57, 0xf3, 0x83, 0xe1, 0x58, 0xf4, 0x83, 0xe1, 0x58, 0xf3, - 0x83, 0xe1, 0x59, 0xf4, 0x83, 0xe1, 0x5a, 0xf3, 0x83, 0xe1, 0x5b, 0xf4, - 0x83, 0xe1, 0x5c, 0xf3, 0x83, 0xe1, 0x5d, 0xf4, 0x83, 0xe1, 0x5d, 0xf3, - 0x83, 0xe1, 0x5e, 0xf4, 0x83, 0xe1, 0x5f, 0xf3, 0x83, 0xe1, 0x60, 0xf4, - 0x83, 0xe1, 0x60, 0xf3, 0x83, 0xe1, 0x61, 0xf4, 0x83, 0xe1, 0x62, 0xf3, - 0x83, 0xe1, 0x63, 0xf4, 0x83, 0xe1, 0x63, 0xf3, 0x83, 0xe1, 0x64, 0xf4, - 0x83, 0xe1, 0x65, 0xf3, 0x83, 0xe1, 0x66, 0xf4, 0x83, 0xe1, 0x66, 0xf3, - 0x83, 0xe1, 0x67, 0xf4, 0x83, 0xe1, 0x68, 0xf3, 0x83, 0xe1, 0x68, 0xf4, - 0x83, 0xe1, 0x69, 0xf3, 0x83, 0xe1, 0x6a, 0xf4, 0x83, 0xe1, 0x6a, 0xf3, - 0x83, 0xe1, 0x6b, 0xf4, 0x83, 0xe1, 0x6c, 0xf3, 0x83, 0xe1, 0x6c, 0xf4, - 0x83, 0xe1, 0x6d, 0xf3, 0x83, 0xe1, 0x6e, 0xf4, 0x83, 0xe1, 0x6e, 0xf3, - 0x83, 0xe1, 0x6f, 0xf1, 0x84, 0xe1, 0x70, 0xf3, 0x83, 0xe1, 0x70, 0xf1, - 0x84, 0xe1, 0x71, 0xf3, 0x83, 0xe1, 0x72, 0xf1, 0x84, 0xe1, 0x72, 0xf3, - 0x83, 0xe1, 0x73, 0xf1, 0x84, 0xe1, 0x73, 0xf3, 0x83, 0xe1, 0x74, 0xf1, - 0x84, 0xe1, 0x75, 0xf3, 0x83, 0xe1, 0x75, 0xf1, 0x84, 0xe1, 0x76, 0xf3, - 0x83, 0xe1, 0x76, 0xf1, 0x84, 0xe1, 0x77, 0xf3, 0x83, 0xe1, 0x78, 0xf1, - 0x84, 0xe1, 0x78, 0xf3, 0x83, 0xe1, 0x79, 0xf1, 0x84, 0xe1, 0x79, 0xf3, - 0x83, 0xe1, 0x7a, 0xf1, 0x84, 0xe1, 0x7a, 0xf3, 0x83, 0xe1, 0x7b, 0xf1, - 0x84, 0xe1, 0x7c, 0xf3, 0x83, 0xe1, 0x7c, 0xf1, 0x84, 0xe1, 0x7d, 0xf3, - 0x83, 0xe1, 0x7d, 0xf1, 0x84, 0xe1, 0x7e, 0xf3, 0x83, 0xe1, 0x7e, 0xf1, - 0x84, 0xe1, 0x7f, 0xf3, 0x83, 0xe1, 0x7f, 0xf1, 0x84, 0xe1, 0x80, 0xf1, - 0x84, 0xe1, 0x81, 0xf1, 0x84, 0xe1, 0x81, 0xf1, 0x84, 0xe1, 0x82, 0xf1, - 0x84, 0xe1, 0x82, 0xf1, 0x84, 0xe1, 0x83, 0xf1, 0x84, 0xe1, 0x83, 0xf1, - 0x84, 0xe1, 0x83, 0xf1, 0x84, 0xe1, 0x83, 0xf1, 0x84, 0xe1, 0x83, 0xf1, - 0x85, 0xe1, 0x83, 0xf1, 0x85, 0xe1, 0x84, 0xf1, 0x86, 0xdf, 0x83, 0xf1, - 0x86, 0xe1, 0x84, 0xf1, 0x87, 0xdf, 0x83, 0xf1, 0x87, 0xe1, 0x84, 0xf1, - 0x88, 0xdf, 0x83, 0xf1, 0x88, 0xe1, 0x84, 0xf1, 0x89, 0xdf, 0x83, 0xf1, - 0x89, 0xe1, 0x84, 0xf1, 0x8a, 0xdf, 0x83, 0xf1, 0x8a, 0xe1, 0x84, 0xf1, - 0x8b, 0xdf, 0x83, 0xf1, 0x8b, 0xe1, 0x8c, 0xf1, 0x8c, 0xe9, 0x8c, 0xf1, - 0x8c, 0xe9, 0x8d, 0xf1, 0x8d, 0xe9, 0x8c, 0xf1, 0x8d, 0xe9, 0x8d, 0xf1, - 0x8e, 0xe9, 0x8c, 0xf1, 0x8e, 0xe9, 0x8d, 0xf1, 0x8e, 0xe9, 0x8c, 0xf1, - 0x8f, 0xe9, 0x8d, 0xf1, 0x8f, 0xe9, 0x8c, 0xf1, 0x90, 0xe9, 0x8d, 0xf1, - 0x90, 0xe9, 0x91, 0xf1, 0x91, 0xea, 0x91, 0xf1, 0x91, 0xea, 0x92, 0xf1, - 0x92, 0xea, 0x91, 0xf1, 0x92, 0xea, 0x92, 0xf1, 0x93, 0xea, 0x91, 0xf1, - 0x93, 0xea, 0x92, 0xf1, 0x94, 0xea, 0x91, 0xf1, 0x94, 0xea, 0x92, 0xf1, - 0x94, 0xea, 0x91, 0xf1, 0x95, 0xea, 0x92, 0xf1, 0x95, 0xea, 0x96, 0xf1, - 0x96, 0xeb, 0x96, 0xf1, 0x96, 0xeb, 0x97, 0xf1, 0x97, 0xeb, 0x96, 0xf1, - 0x97, 0xeb, 0x97, 0xf1, 0x98, 0xeb, 0x96, 0xf1, 0x98, 0xeb, 0x97, 0xf1, - 0x98, 0xeb, 0x96, 0xf1, 0x99, 0xeb, 0x97, 0xf1, 0x99, 0xeb, 0x96, 0xf1, - 0x9a, 0xeb, 0x97, 0xf1, 0x9a, 0xeb, 0x9a, 0xf1, 0x9a, 0xec, 0x9b, 0xf1, - 0x9b, 0xec, 0x9b, 0xf1, 0x9b, 0xec, 0x9b, 0xf1, 0x9c, 0xec, 0x9b, 0xf1, - 0x9c, 0xec, 0x9b, 0xf1, 0x9d, 0xec, 0x9b, 0xf1, 0x9d, 0xec, 0x9b, 0xf1, - 0x9d, 0xec, 0x9b, 0xf1, 0x9e, 0xec, 0x9b, 0xf1, 0x9e, 0xec, 0x9b, 0xf1, - 0x9f, 0xec, 0x9f, 0xf1, 0x9f, 0xed, 0x9f, 0xf1, 0x9f, 0xed, 0xa0, 0xf1, - 0xa0, 0xed, 0x9f, 0xf1, 0xa0, 0xed, 0xa0, 0xf1, 0xa1, 0xed, 0x9f, 0xf1, - 0xa1, 0xed, 0xa0, 0xf1, 0xa1, 0xed, 0x9f, 0xf1, 0xa2, 0xed, 0xa0, 0xf1, - 0xa2, 0xed, 0x9f, 0xf1, 0xa3, 0xed, 0xa0, 0xf1, 0xa3, 0xed, 0xa3, 0xf1, - 0xa3, 0xee, 0xa4, 0xf1, 0xa4, 0xee, 0xa4, 0xf1, 0xa4, 0xee, 0xa4, 0xf1, - 0xa5, 0xee, 0xa4, 0xf1, 0xa5, 0xee, 0xa4, 0xf1, 0xa5, 0xee, 0xa4, 0xf1, - 0xa6, 0xee, 0xa4, 0xf1, 0xa6, 0xee, 0xa4, 0xf1, 0xa6, 0xee, 0xa4, 0xf1, - 0xa7, 0xee, 0xa4, 0xf1, 0xa7, 0xee, 0xa4, 0xf1, 0xa8, 0xee, 0xa4, 0xf1, - 0xa8, 0xee, 0xa8, 0xf1, 0xa8, 0xef, 0xa8, 0xf1, 0xa9, 0xef, 0xa8, 0xf1, - 0xa9, 0xef, 0xa8, 0xf1, 0xaa, 0xef, 0xa8, 0xf1, 0xaa, 0xef, 0xa8, 0xf1, - 0xaa, 0xef, 0xa8, 0xf1, 0xab, 0xef, 0xa8, 0xf1, 0xab, 0xef, 0xa8, 0xf1, - 0xab, 0xef, 0xa8, 0xf1, 0xac, 0xef, 0xa8, 0xf1, 0xac, 0xef, 0xac, 0xf1, - 0xac, 0xf0, 0xac, 0xf1, 0xad, 0xf0, 0xac, 0xf1, 0xad, 0xf0, 0xac, 0xf1, - 0xae, 0xf0, 0xac, 0xf1, 0xae, 0xf0, 0xac, 0xf1, 0xae, 0xf0, 0xac, 0xf1, - 0xaf, 0xf0, 0xac, 0xf1, 0xaf, 0xf0, 0xac, 0xf1, 0xaf, 0xf0, 0xac, 0xf1, - 0xb0, 0xf0, 0xac, 0xf1, 0xb0, 0xf0, 0xb0, 0xf1, 0xb0, 0xf1, 0xb0, 0xf1, - 0xb1, 0xf1, 0xb0, 0xf1, 0xb1, 0xf1, 0xb0, 0xf1, 0xb2, 0xf1, 0xb0, 0xf1, - 0xb2, 0xf1, 0xb0, 0xf1, 0xb2, 0xf1, 0xb0, 0xf1, 0xb3, 0xf1, 0xb0, 0xf1, - 0xb3, 0xf1, 0xb0, 0xf1, 0xb3, 0xf1, 0xb0, 0xf1, 0xb4, 0xf1, 0xb0, 0xf1, - 0xb4, 0xf1, 0xb4, 0xf1, 0xb4, 0xf2, 0xb4, 0xf1, 0xb5, 0xf2, 0xb4, 0xf1, - 0xb5, 0xf2, 0xb4, 0xf1, 0xb5, 0xf2, 0xb4, 0xf1, 0xb6, 0xf2, 0xb4, 0xf1, - 0xb6, 0xf2, 0xb4, 0xf1, 0xb6, 0xf2, 0xb4, 0xf1, 0xb7, 0xf2, 0xb4, 0xf1, - 0xb7, 0xf2, 0xb4, 0xf1, 0xb7, 0xf2, 0xb4, 0xf1, 0xb8, 0xf2, 0xb8, 0xf1, - 0xb8, 0xf3, 0xb4, 0xf1, 0xb8, 0xf2, 0xb8, 0xf1, 0xb9, 0xf3, 0xb8, 0xf1, - 0xb9, 0xf3, 0xb8, 0xf1, 0xb9, 0xf3, 0xb8, 0xf1, 0xba, 0xf3, 0xb8, 0xf1, - 0xba, 0xf3, 0xb8, 0xf1, 0xba, 0xf3, 0xb8, 0xf1, 0xbb, 0xf3, 0xb8, 0xf1, - 0xbb, 0xf3, 0xb8, 0xf1, 0xbb, 0xf3, 0xb8, 0xf1, 0xbc, 0xf3, 0xb8, 0xf1, - 0xbc, 0xf3, 0xbc, 0xf1, 0xbc, 0xf4, 0xbb, 0xf1, 0xbd, 0xf4, 0xbc, 0xf1, - 0xbd, 0xf4, 0xbb, 0xf1, 0xbd, 0xf4, 0xbc, 0xf1, 0xbe, 0xf4, 0xbb, 0xf1, - 0xbe, 0xf4, 0xbc, 0xf1, 0xbe, 0xf4, 0xbb, 0xf1, 0xbf, 0xf4, 0xbc, 0xf1, - 0xbf, 0xf4, 0xbb, 0xf1, 0xbf, 0xf4, 0xcb, 0xf1, 0xc0, 0xe6, 0xcc, 0xf1, - 0xc0, 0xe3, 0xcb, 0xf1, 0xc0, 0xe6, 0xcc, 0xf1, 0xc1, 0xe3, 0xcb, 0xf1, - 0xc1, 0xe6, 0xcc, 0xf1, 0xc1, 0xe3, 0xcb, 0xf1, 0xc1, 0xe6, 0xcc, 0xf1, - 0xc2, 0xe3, 0xcb, 0xf1, 0xc2, 0xe6, 0xcc, 0xf1, 0xc2, 0xe3, 0xcb, 0xf1, - 0xc3, 0xe6, 0xcc, 0xf1, 0xc3, 0xe3, 0xcb, 0xf1, 0xc3, 0xe6, 0xcc, 0xf1, - 0xc4, 0xe3, 0xcb, 0xf1, 0xc4, 0xe6, 0xcc, 0xf1, 0xc4, 0xe3, 0xcc, 0xf1, - 0xc5, 0xe1, 0xcc, 0xf1, 0xc5, 0xe3, 0xcc, 0xf1, 0xc5, 0xe1, 0xcc, 0xf1, - 0xc6, 0xe3, 0xcc, 0xf1, 0xc6, 0xe1, 0xcc, 0xf1, 0xc6, 0xe3, 0xcc, 0xf1, - 0xc6, 0xe1, 0xcc, 0xf1, 0xc7, 0xe3, 0xcc, 0xf1, 0xc7, 0xe1, 0xcc, 0xf1, - 0xc7, 0xe3, 0xcc, 0xf1, 0xc8, 0xe1, 0xcc, 0xf1, 0xc8, 0xe3, 0xcc, 0xf1, - 0xc8, 0xe1, 0xcc, 0xf1, 0xc9, 0xe3, 0xcc, 0xf1, 0xc9, 0xe1, 0xcc, 0xf1, - 0xc9, 0xe3, 0xcc, 0xf1, 0xc9, 0xe1, 0xcc, 0xf1, 0xca, 0xe3, 0xcc, 0xf1, - 0xca, 0xe1, 0xcc, 0xf1, 0xca, 0xe3, 0xcc, 0xf1, 0xcb, 0xe1, 0xcc, 0xf1, - 0xcb, 0xe1, 0xcc, 0xf1, 0xcb, 0xe1, 0xcc, 0xf1, 0xcc, 0xe1, 0xcc, 0xf1, - 0xcc, 0xe1, 0xcc, 0xf1, 0xcc, 0xe1, 0xcc, 0xf1, 0xcc, 0xe1, 0xcd, 0xf1, - 0xcc, 0xe1, 0xcd, 0xf1, 0xcc, 0xe1, 0xcd, 0xf1, 0xcc, 0xe1, 0xce, 0xf1, - 0xcc, 0xe1, 0xce, 0xf1, 0xcc, 0xe1, 0xce, 0xf1, 0xcc, 0xe1, 0xce, 0xf1, - 0xcc, 0xe1, 0xcf, 0xf1, 0xcc, 0xe1, 0xcf, 0xf1, 0xcc, 0xe1, 0xcf, 0xf1, - 0xcc, 0xe1, 0xd0, 0xf1, 0xcc, 0xe1, 0xd0, 0xf1, 0xcc, 0xe1, 0xd0, 0xf1, - 0xcc, 0xe1, 0xd0, 0xf1, 0xcc, 0xe1, 0xd1, 0xef, 0xcc, 0xe1, 0xd1, 0xf1, - 0xcc, 0xe1, 0xd1, 0xef, 0xcc, 0xe1, 0xd2, 0xf1, 0xcc, 0xe1, 0xd2, 0xef, - 0xcc, 0xe1, 0xd2, 0xf1, 0xcc, 0xe1, 0xd2, 0xef, 0xcc, 0xe1, 0xd3, 0xf1, - 0xcc, 0xe1, 0xd3, 0xef, 0xcc, 0xe1, 0xd3, 0xf1, 0xcc, 0xe1, 0xd4, 0xef, - 0xcc, 0xe1, 0xd4, 0xf1, 0xcc, 0xe1, 0xd4, 0xef, 0xcc, 0xe1, 0xd4, 0xf1, - 0xcc, 0xe1, 0xd5, 0xef, 0xcc, 0xe1, 0xd5, 0xf1, 0xcc, 0xe1, 0xd5, 0xef, - 0xcc, 0xe1, 0xd6, 0xf1, 0xcc, 0xe1, 0xd6, 0xef, 0xcc, 0xe1, 0xd6, 0xf1, - 0xcc, 0xe1, 0xd6, 0xef, 0xcc, 0xe1, 0xd7, 0xf1, 0xcc, 0xe1, 0xd7, 0xef, - 0xcc, 0xe1, 0xd7, 0xf1, 0xcc, 0xe1, 0xd7, 0xef, 0xcc, 0xe1, 0xd8, 0xf1, - 0xcc, 0xe1, 0xd8, 0xef, 0xcc, 0xe1, 0xd8, 0xf1, 0xcc, 0xe1, 0xd9, 0xef, - 0xcc, 0xe1, 0xd9, 0xf3, 0xe4, 0xe1, 0xd9, 0xf2, 0xe5, 0xe1, 0xd9, 0xf3, - 0xe4, 0xe1, 0xda, 0xf2, 0xe5, 0xe1, 0xda, 0xf3, 0xe4, 0xe1, 0xda, 0xf2, - 0xe5, 0xe1, 0xda, 0xf3, 0xe4, 0xe1, 0xdb, 0xf2, 0xe5, 0xe1, 0xdb, 0xf3, - 0xe4, 0xe1, 0xdb, 0xf2, 0xe5, 0xe1, 0xdb, 0xf3, 0xe4, 0xe1, 0xdc, 0xf2, - 0xe5, 0xe1, 0xdc, 0xf3, 0xe4, 0xe1, 0xdc, 0xf2, 0xe5, 0xe1, 0xdd, 0xf3, - 0xe4, 0xe1, 0xdd, 0xf2, 0xe5, 0xe1, 0xdd, 0xf3, 0xe4, 0xe1, 0xdd, 0xf2, - 0xe5, 0xe1, 0xde, 0xf3, 0xe4, 0xe1, 0xde, 0xf2, 0xe5, 0xe1, 0xde, 0xf3, - 0xe4, 0xe1, 0xde, 0xf2, 0xe5, 0xe1, 0xdf, 0xf3, 0xe4, 0xe1, 0xdf, 0xf2, - 0xe5, 0xe1, 0xdf, 0xf3, 0xe4, 0xe1, 0xdf, 0xf2, 0xe5, 0xe1, 0xe0, 0xf3, - 0xe4, 0xe1, 0xe0, 0xf2, 0xe5, 0xe1, 0xe0, 0xf3, 0xe4, 0xe1, 0xe1, 0xf2, - 0xe5, 0xe1, 0xe1, 0xf1, 0xe5, 0xe1, 0xe1, 0xf2, 0xe5, 0xe1, 0xe1, 0xf1, - 0xe5, 0xe1, 0xe2, 0xf2, 0xe5, 0xe1, 0xe2, 0xf1, 0xe5, 0xe1, 0xe2, 0xf2, - 0xe5, 0xe1, 0xe2, 0xf1, 0xe5, 0xe1, 0xe3, 0xf2, 0xe5, 0xe1, 0xe3, 0xf1, - 0xe5, 0xe1, 0xe3, 0xf2, 0xe5, 0xe1, 0xe3, 0xf1, 0xe5, 0xe1, 0xe4, 0xf2, - 0xe5, 0xe1, 0xe4, 0xf1, 0xe5, 0xe1, 0xe4, 0xf2, 0xe5, 0xe1, 0xe4, 0xf1, - 0xe5, 0xe1, 0xe5, 0xf2, 0xe5, 0xe1, 0xe4, 0xf1, 0xe5, 0xe1, 0xe5, 0xf1, - 0xe5, 0xe1, 0xe4, 0xf1, 0xe5, 0xe1, 0xe5, 0xf1, 0xe6, 0xe1, 0xe7, 0xf1, - 0xe6, 0xe1, 0xe7, 0xf1, 0xe6, 0xe1, 0xe7, 0xf1, 0xe6, 0xe1, 0xe7, 0xf1, - 0xe7, 0xe1, 0xe7, 0xf1, 0xe6, 0xe1, 0xe7, 0xf1, 0xe7, 0xe1, 0xe7, 0xf1, - 0xe6, 0xe1, 0xe8, 0xf1, 0xe7, 0xe1, 0xe8, 0xf1, 0xe6, 0xe1, 0xe8, 0xf1, - 0xe7, 0xe1, 0xe8, 0xf1, 0xe6, 0xe1, 0xe9, 0xf1, 0xe7, 0xe1, 0xe9, 0xf1, - 0xe6, 0xe1, 0xe9, 0xf1, 0xe7, 0xe1, 0xe9, 0xf1, 0xe6, 0xe1, 0xea, 0xf1, - 0xe7, 0xe1, 0xea, 0xf1, 0xe6, 0xe1, 0xea, 0xf1, 0xe7, 0xe1, 0xea, 0xf1, - 0xe6, 0xe1, 0xeb, 0xf1, 0xe7, 0xe1, 0xeb, 0xef, 0xe7, 0xe1, 0xeb, 0xf1, - 0xe7, 0xe1, 0xeb, 0xef, 0xe7, 0xe1, 0xec, 0xf3, 0xf0, 0xe1, 0xec, 0xf2, - 0xf0, 0xe1, 0xec, 0xf3, 0xf0, 0xe1, 0xec, 0xf2, 0xf0, 0xe1, 0xec, 0xf1, - 0xf0, 0xe1, 0xed, 0xf2, 0xf0, 0xe1, 0xed, 0xf1, 0xf0, 0xe1, 0xed, 0xf2, - 0xf0, 0xe1, 0xed, 0xf1, 0xf0, 0xe1, 0xee, 0xf2, 0xf0, 0xe1, 0xee, 0xf1, - 0xf0, 0xe1, 0xee, 0xf2, 0xf0, 0xe1, 0xee, 0xf1, 0xf0, 0xe1, 0xef, 0xf2, - 0xf0, 0xe1, 0xef, 0xf1, 0xf0, 0xe1, 0xef, 0xf2, 0xf0, 0xe1, 0xef, 0xf1, - 0xf0, 0xe1, 0xf0, 0xf1, 0xf1, 0xe1, 0xf0, 0xf1, 0xf0, 0xe1, 0xf0, 0xf1, - 0xf1, 0xe1, 0xf0, 0xf1, 0xf0, 0xe1, 0xf1, 0xf1, 0xf1, 0xe1, 0xf1, 0xf1, - 0xf0, 0xe1, 0xf1, 0xf1, 0xf1, 0xe1, 0xf1, 0xf1, 0xf0, 0xe1, 0xf2, 0xf1, - 0xf1, 0xe1, 0xf2, 0xf1, 0xf0, 0xe1, 0xf2, 0xf1, 0xf1, 0xe1, 0xf2, 0xf1, - 0xf0, 0xe1, 0xf2, 0xf1, 0xf1, 0xe1, 0xf3, 0xf1, 0xf0, 0xe1, 0xf3, 0xf1, - 0xf1, 0xe1, 0xf3, 0xf1, 0xf0, 0xe1, 0xf3, 0xf1, 0xf1, 0xe1, 0xf4, 0xf1, - 0xf0, 0xe1, 0xf4, 0xf1, 0xf1, 0xe1, 0xf4, 0xf1, 0xf0, 0xe1, 0xf4, 0xf1, - 0xf1, 0xe1, 0xf5, 0xef, 0xf1, 0xe1, 0xf5, 0xf1, 0xf1, 0xe1, 0xf5, 0xef, - 0xf1, 0xe1, 0xf5, 0xf1, 0xf1, 0xe1, 0xf5, 0xef, 0xf1, 0xe1, 0xf6, 0xf1, - 0xf1, 0xe1, 0xf6, 0xef, 0xf1, 0xe1, 0xf6, 0xf1, 0xf1, 0xe1, 0xf6, 0xef, - 0xf1, 0xe1, 0xf7, 0xf1, 0xf1, 0xe1, 0xf7, 0xef, 0xf1, 0xe1, 0xf7, 0xf1, - 0xf1, 0xe1, 0xf7, 0xef, 0xf1, 0xe1, 0xf8, 0xf1, 0xf1, 0xe1, 0xf8, 0xef, - 0xf1, 0xe1, 0xf8, 0xf1, 0xf1, 0xe1, 0xf8, 0xef, 0xf1, 0xe1, 0xf8, 0xf1, - 0xf1, 0xe1, 0xf9, 0xef, 0xf1, 0xe1, 0xf9, 0xf1, 0xf1, 0xe1, 0xf9, 0xef, - 0xf1, 0xe1, 0xf9, 0xf1, 0xf1, 0xe1, 0xfa, 0xef, 0xf1, 0xe1, 0xfa, 0xf1, - 0xf1, 0xe1, 0xfa, 0xef, 0xf1, 0xe1, 0xfa, 0xf1, 0xf1, 0xe1, 0xfa, 0xef, - 0xf1, 0xe1, 0xfb, 0xf1, 0xf1, 0xe1, 0xfb, 0xef, 0xf1, 0xe1, 0xfb, 0xf1, - 0xf1, 0xe1, 0xfb, 0xef, 0xf1, 0xe1, 0xfc, 0xf1, 0xf1, 0xe1, 0xfc, 0xef, - 0xf1, 0xe1, 0xfc, 0xee, 0xf1, 0xe1, 0xfc, 0xef, 0xf1, 0xe1, 0xfc, 0xee, - 0xf1, 0xe1, 0xfd, 0xef, 0xf1, 0xe1, 0xfd, 0xee, 0xf1, 0xe1, 0xfd, 0xef, - 0xf1, 0xe1, 0xfd, 0xee, 0xf1, 0xe1, 0xfe, 0xef, 0xf1, 0xe1, 0xfe, 0xee, - 0xf1, 0xe1, 0xfe, 0xef, 0xf1, 0xe1, 0xfe, 0xee, 0xf1, 0xe1, 0xfe, 0xef, - 0xf1, 0xe1, 0xff, 0xee, 0xf1, 0xe1, 0xff, 0xef, 0xf1, 0xe1, 0x03, 0xf2, - 0x83, 0xe1, 0x0a, 0xf4, 0x83, 0xe1, 0x0f, 0xf2, 0x83, 0xe1, 0x14, 0xf4, - 0x83, 0xe1, 0x17, 0xf2, 0x83, 0xe1, 0x1b, 0xf4, 0x83, 0xe1, 0x1e, 0xf2, - 0x83, 0xe1, 0x20, 0xf4, 0x83, 0xe1, 0x23, 0xf2, 0x83, 0xe1, 0x25, 0xf4, - 0x83, 0xe1, 0x27, 0xf2, 0x83, 0xe1, 0x29, 0xf4, 0x83, 0xe1, 0x2b, 0xf2, - 0x83, 0xe1, 0x2d, 0xf4, 0x83, 0xe1, 0x2f, 0xf2, 0x83, 0xe1, 0x31, 0xf4, - 0x83, 0xe1, 0x32, 0xf2, 0x83, 0xe1, 0x34, 0xf4, 0x83, 0xe1, 0x35, 0xf2, - 0x83, 0xe1, 0x37, 0xf4, 0x83, 0xe1, 0x38, 0xf2, 0x83, 0xe1, 0x3a, 0xf4, - 0x83, 0xe1, 0x3b, 0xf2, 0x83, 0xe1, 0x3c, 0xf4, 0x83, 0xe1, 0x3e, 0xf2, - 0x83, 0xe1, 0x3f, 0xf4, 0x83, 0xe1, 0x40, 0xf2, 0x83, 0xe1, 0x42, 0xf4, - 0x83, 0xe1, 0x43, 0xf2, 0x83, 0xe1, 0x44, 0xf4, 0x83, 0xe1, 0x45, 0xf2, - 0x83, 0xe1, 0x46, 0xf4, 0x83, 0xe1, 0x47, 0xf2, 0x83, 0xe1, 0x48, 0xf4, - 0x83, 0xe1, 0x49, 0xf2, 0x83, 0xe1, 0x4a, 0xf4, 0x83, 0xe1, 0x4b, 0xf2, - 0x83, 0xe1, 0x4c, 0xf4, 0x83, 0xe1, 0x4d, 0xf2, 0x83, 0xe1, 0x4e, 0xf4, - 0x83, 0xe1, 0x4f, 0xf2, 0x83, 0xe1, 0x50, 0xf4, 0x83, 0xe1, 0x51, 0xf2, - 0x83, 0xe1, 0x52, 0xf4, 0x83, 0xe1, 0x53, 0xf2, 0x83, 0xe1, 0x54, 0xf4, - 0x83, 0xe1, 0x55, 0xf2, 0x83, 0xe1, 0x56, 0xf4, 0x83, 0xe1, 0x57, 0xf2, - 0x83, 0xe1, 0x58, 0xf4, 0x83, 0xe1, 0x58, 0xf2, 0x83, 0xe1, 0x59, 0xf4, - 0x83, 0xe1, 0x5a, 0xf2, 0x83, 0xe1, 0x5b, 0xf4, 0x83, 0xe1, 0x5c, 0xf2, - 0x83, 0xe1, 0x5d, 0xf4, 0x83, 0xe1, 0x5d, 0xf2, 0x83, 0xe1, 0x5e, 0xf4, - 0x83, 0xe1, 0x5f, 0xf2, 0x83, 0xe1, 0x60, 0xf4, 0x83, 0xe1, 0x60, 0xf2, - 0x83, 0xe1, 0x61, 0xf4, 0x83, 0xe1, 0x62, 0xf2, 0x83, 0xe1, 0x63, 0xf4, - 0x83, 0xe1, 0x63, 0xf2, 0x83, 0xe1, 0x64, 0xf4, 0x83, 0xe1, 0x65, 0xf2, - 0x83, 0xe1, 0x66, 0xf4, 0x83, 0xe1, 0x66, 0xf2, 0x83, 0xe1, 0x67, 0xf4, - 0x83, 0xe1, 0x68, 0xf2, 0x83, 0xe1, 0x68, 0xf4, 0x83, 0xe1, 0x69, 0xf2, - 0x83, 0xe1, 0x6a, 0xf4, 0x83, 0xe1, 0x6a, 0xf2, 0x83, 0xe1, 0x6b, 0xf4, - 0x83, 0xe1, 0x6c, 0xf2, 0x83, 0xe1, 0x6c, 0xf4, 0x83, 0xe1, 0x6d, 0xf2, - 0x83, 0xe1, 0x6e, 0xf4, 0x83, 0xe1, 0x6e, 0xf2, 0x83, 0xe1, 0x6f, 0xf4, - 0x83, 0xe1, 0x70, 0xf2, 0x83, 0xe1, 0x70, 0xf4, 0x83, 0xe1, 0x71, 0xf2, - 0x83, 0xe1, 0x72, 0xf4, 0x83, 0xe1, 0x72, 0xf2, 0x83, 0xe1, 0x73, 0xf4, - 0x83, 0xe1, 0x73, 0xf2, 0x83, 0xe1, 0x74, 0xf4, 0x83, 0xe1, 0x75, 0xf2, - 0x83, 0xe1, 0x75, 0xf4, 0x83, 0xe1, 0x76, 0xf2, 0x83, 0xe1, 0x76, 0xf2, - 0x84, 0xe1, 0x77, 0xf2, 0x83, 0xe1, 0x78, 0xf2, 0x84, 0xe1, 0x78, 0xf2, - 0x83, 0xe1, 0x79, 0xf2, 0x84, 0xe1, 0x79, 0xf2, 0x83, 0xe1, 0x7a, 0xf2, - 0x84, 0xe1, 0x7a, 0xf2, 0x83, 0xe1, 0x7b, 0xf2, 0x84, 0xe1, 0x7c, 0xf2, - 0x83, 0xe1, 0x7c, 0xf2, 0x84, 0xe1, 0x7d, 0xf2, 0x83, 0xe1, 0x7d, 0xf2, - 0x84, 0xe1, 0x7e, 0xf2, 0x83, 0xe1, 0x7e, 0xf2, 0x84, 0xe1, 0x7f, 0xf2, - 0x83, 0xe1, 0x7f, 0xf2, 0x84, 0xe1, 0x80, 0xf2, 0x83, 0xe1, 0x81, 0xf2, - 0x84, 0xe1, 0x81, 0xf2, 0x83, 0xe1, 0x82, 0xf2, 0x84, 0xe1, 0x82, 0xf2, - 0x84, 0xe1, 0x83, 0xf2, 0x84, 0xe1, 0x83, 0xf2, 0x84, 0xe1, 0x83, 0xf2, - 0x84, 0xe1, 0x83, 0xf2, 0x84, 0xe1, 0x83, 0xf2, 0x85, 0xe1, 0x83, 0xf2, - 0x85, 0xe1, 0x84, 0xf2, 0x86, 0xdf, 0x83, 0xf2, 0x86, 0xe1, 0x84, 0xf2, - 0x87, 0xdf, 0x83, 0xf2, 0x87, 0xe1, 0x84, 0xf2, 0x88, 0xdf, 0x83, 0xf2, - 0x88, 0xe1, 0x84, 0xf2, 0x89, 0xdf, 0x83, 0xf2, 0x89, 0xe1, 0x84, 0xf2, - 0x8a, 0xdf, 0x83, 0xf2, 0x8a, 0xe1, 0x8a, 0xf2, 0x8b, 0xe8, 0x8a, 0xf2, - 0x8b, 0xe8, 0x8a, 0xf2, 0x8c, 0xe8, 0x8a, 0xf2, 0x8c, 0xe8, 0x8a, 0xf2, - 0x8d, 0xe8, 0x8a, 0xf2, 0x8d, 0xe8, 0x8e, 0xf2, 0x8e, 0xe9, 0x8e, 0xf2, - 0x8e, 0xe9, 0x8e, 0xf2, 0x8e, 0xe9, 0x8f, 0xf2, 0x8f, 0xe9, 0x8f, 0xf2, - 0x8f, 0xe9, 0x8f, 0xf2, 0x90, 0xe9, 0x8f, 0xf2, 0x90, 0xe9, 0x8f, 0xf2, - 0x91, 0xe9, 0x8f, 0xf2, 0x91, 0xe9, 0x8f, 0xf2, 0x92, 0xe9, 0x8f, 0xf2, - 0x92, 0xe9, 0x8f, 0xf2, 0x93, 0xe9, 0x8f, 0xf2, 0x93, 0xe9, 0x94, 0xf2, - 0x94, 0xea, 0x94, 0xf2, 0x94, 0xea, 0x94, 0xf2, 0x94, 0xea, 0x94, 0xf2, - 0x95, 0xea, 0x94, 0xf2, 0x95, 0xea, 0x94, 0xf2, 0x96, 0xea, 0x94, 0xf2, - 0x96, 0xea, 0x94, 0xf2, 0x97, 0xea, 0x94, 0xf2, 0x97, 0xea, 0x94, 0xf2, - 0x98, 0xea, 0x94, 0xf2, 0x98, 0xea, 0x98, 0xf2, 0x98, 0xeb, 0x99, 0xf2, - 0x99, 0xeb, 0x99, 0xf2, 0x99, 0xeb, 0x99, 0xf2, 0x9a, 0xeb, 0x99, 0xf2, - 0x9a, 0xeb, 0x99, 0xf2, 0x9a, 0xeb, 0x99, 0xf2, 0x9b, 0xeb, 0x99, 0xf2, - 0x9b, 0xeb, 0x99, 0xf2, 0x9c, 0xeb, 0x99, 0xf2, 0x9c, 0xeb, 0x99, 0xf2, - 0x9d, 0xeb, 0x9d, 0xf2, 0x9d, 0xec, 0x9d, 0xf2, 0x9d, 0xec, 0x9e, 0xf2, - 0x9e, 0xec, 0x9d, 0xf2, 0x9e, 0xec, 0x9e, 0xf2, 0x9f, 0xec, 0x9d, 0xf2, - 0x9f, 0xec, 0x9e, 0xf2, 0x9f, 0xec, 0x9d, 0xf2, 0xa0, 0xec, 0x9e, 0xf2, - 0xa0, 0xec, 0x9d, 0xf2, 0xa1, 0xec, 0x9e, 0xf2, 0xa1, 0xec, 0xa1, 0xf2, - 0xa1, 0xed, 0xa2, 0xf2, 0xa2, 0xed, 0xa2, 0xf2, 0xa2, 0xed, 0xa2, 0xf2, - 0xa3, 0xed, 0xa2, 0xf2, 0xa3, 0xed, 0xa2, 0xf2, 0xa3, 0xed, 0xa2, 0xf2, - 0xa4, 0xed, 0xa2, 0xf2, 0xa4, 0xed, 0xa2, 0xf2, 0xa5, 0xed, 0xa2, 0xf2, - 0xa5, 0xed, 0xa2, 0xf2, 0xa5, 0xed, 0xa6, 0xf2, 0xa6, 0xee, 0xa6, 0xf2, - 0xa6, 0xee, 0xa6, 0xf2, 0xa6, 0xee, 0xa6, 0xf2, 0xa7, 0xee, 0xa6, 0xf2, - 0xa7, 0xee, 0xa6, 0xf2, 0xa8, 0xee, 0xa6, 0xf2, 0xa8, 0xee, 0xa6, 0xf2, - 0xa8, 0xee, 0xa6, 0xf2, 0xa9, 0xee, 0xa6, 0xf2, 0xa9, 0xee, 0xa6, 0xf2, - 0xaa, 0xee, 0xa6, 0xf2, 0xaa, 0xee, 0xa6, 0xf2, 0xaa, 0xee, 0xab, 0xf2, - 0xab, 0xef, 0xaa, 0xf2, 0xab, 0xef, 0xab, 0xf2, 0xab, 0xef, 0xaa, 0xf2, - 0xac, 0xef, 0xab, 0xf2, 0xac, 0xef, 0xaa, 0xf2, 0xac, 0xef, 0xab, 0xf2, - 0xad, 0xef, 0xaa, 0xf2, 0xad, 0xef, 0xab, 0xf2, 0xae, 0xef, 0xaa, 0xf2, - 0xae, 0xef, 0xab, 0xf2, 0xae, 0xef, 0xaf, 0xf2, 0xaf, 0xf0, 0xae, 0xf2, - 0xaf, 0xf0, 0xaf, 0xf2, 0xaf, 0xf0, 0xae, 0xf2, 0xb0, 0xf0, 0xaf, 0xf2, - 0xb0, 0xf0, 0xae, 0xf2, 0xb0, 0xf0, 0xaf, 0xf2, 0xb1, 0xf0, 0xae, 0xf2, - 0xb1, 0xf0, 0xaf, 0xf2, 0xb2, 0xf0, 0xae, 0xf2, 0xb2, 0xf0, 0xaf, 0xf2, - 0xb2, 0xf0, 0xb3, 0xf2, 0xb3, 0xf1, 0xb2, 0xf2, 0xb3, 0xf1, 0xb3, 0xf2, - 0xb3, 0xf1, 0xb2, 0xf2, 0xb4, 0xf1, 0xb3, 0xf2, 0xb4, 0xf1, 0xb2, 0xf2, - 0xb4, 0xf1, 0xb3, 0xf2, 0xb5, 0xf1, 0xb2, 0xf2, 0xb5, 0xf1, 0xb3, 0xf2, - 0xb5, 0xf1, 0xb2, 0xf2, 0xb6, 0xf1, 0xb3, 0xf2, 0xb6, 0xf1, 0xb6, 0xf2, - 0xb6, 0xf2, 0xb6, 0xf2, 0xb7, 0xf2, 0xb6, 0xf2, 0xb7, 0xf2, 0xb6, 0xf2, - 0xb7, 0xf2, 0xb6, 0xf2, 0xb8, 0xf2, 0xb6, 0xf2, 0xb8, 0xf2, 0xb6, 0xf2, - 0xb8, 0xf2, 0xb6, 0xf2, 0xb9, 0xf2, 0xb6, 0xf2, 0xb9, 0xf2, 0xb6, 0xf2, - 0xb9, 0xf2, 0xb6, 0xf2, 0xba, 0xf2, 0xba, 0xf2, 0xba, 0xf3, 0xb6, 0xf2, - 0xba, 0xf2, 0xba, 0xf2, 0xbb, 0xf3, 0xba, 0xf2, 0xbb, 0xf3, 0xba, 0xf2, - 0xbb, 0xf3, 0xba, 0xf2, 0xbc, 0xf3, 0xba, 0xf2, 0xbc, 0xf3, 0xba, 0xf2, - 0xbc, 0xf3, 0xba, 0xf2, 0xbd, 0xf3, 0xba, 0xf2, 0xbd, 0xf3, 0xba, 0xf2, - 0xbd, 0xf3, 0xba, 0xf2, 0xbe, 0xf3, 0xba, 0xf2, 0xbe, 0xf3, 0xbe, 0xf2, - 0xbe, 0xf4, 0xbd, 0xf2, 0xbf, 0xf4, 0xbe, 0xf2, 0xbf, 0xf4, 0xbd, 0xf2, - 0xbf, 0xf4, 0xbe, 0xf2, 0xc0, 0xf4, 0xcc, 0xf2, 0xc0, 0xe3, 0xcb, 0xf2, - 0xc0, 0xe6, 0xcc, 0xf2, 0xc1, 0xe3, 0xcb, 0xf2, 0xc1, 0xe6, 0xcc, 0xf2, - 0xc1, 0xe3, 0xcb, 0xf2, 0xc1, 0xe6, 0xcc, 0xf2, 0xc2, 0xe3, 0xcb, 0xf2, - 0xc2, 0xe6, 0xcc, 0xf2, 0xc2, 0xe3, 0xcb, 0xf2, 0xc3, 0xe6, 0xcc, 0xf2, - 0xc3, 0xe3, 0xcb, 0xf2, 0xc3, 0xe6, 0xcc, 0xf2, 0xc4, 0xe3, 0xcb, 0xf2, - 0xc4, 0xe6, 0xcc, 0xf2, 0xc4, 0xe3, 0xcc, 0xf2, 0xc5, 0xe1, 0xcc, 0xf2, - 0xc5, 0xe3, 0xcc, 0xf2, 0xc5, 0xe1, 0xcc, 0xf2, 0xc6, 0xe3, 0xcc, 0xf2, - 0xc6, 0xe1, 0xcc, 0xf2, 0xc6, 0xe3, 0xcc, 0xf2, 0xc6, 0xe1, 0xcc, 0xf2, - 0xc7, 0xe3, 0xcc, 0xf2, 0xc7, 0xe1, 0xcc, 0xf2, 0xc7, 0xe3, 0xcc, 0xf2, - 0xc8, 0xe1, 0xcc, 0xf2, 0xc8, 0xe3, 0xcc, 0xf2, 0xc8, 0xe1, 0xcc, 0xf2, - 0xc9, 0xe3, 0xcc, 0xf2, 0xc9, 0xe1, 0xcc, 0xf2, 0xc9, 0xe3, 0xcc, 0xf2, - 0xc9, 0xe1, 0xcc, 0xf2, 0xca, 0xe3, 0xcc, 0xf2, 0xca, 0xe1, 0xcc, 0xf2, - 0xca, 0xe3, 0xcc, 0xf2, 0xcb, 0xe1, 0xcc, 0xf2, 0xcb, 0xe1, 0xcc, 0xf2, - 0xcb, 0xe1, 0xcc, 0xf2, 0xcc, 0xe1, 0xcc, 0xf2, 0xcb, 0xe1, 0xcc, 0xf2, - 0xcc, 0xe1, 0xcc, 0xf2, 0xcb, 0xe1, 0xcd, 0xf2, 0xcc, 0xe1, 0xcd, 0xf1, - 0xcc, 0xe1, 0xcd, 0xf2, 0xcc, 0xe1, 0xce, 0xf1, 0xcc, 0xe1, 0xce, 0xf2, - 0xcc, 0xe1, 0xce, 0xf1, 0xcc, 0xe1, 0xce, 0xf2, 0xcc, 0xe1, 0xcf, 0xf1, - 0xcc, 0xe1, 0xcf, 0xf2, 0xcc, 0xe1, 0xcf, 0xf1, 0xcc, 0xe1, 0xd0, 0xf2, - 0xcc, 0xe1, 0xd0, 0xf1, 0xcc, 0xe1, 0xd0, 0xf2, 0xcc, 0xe1, 0xd0, 0xf1, - 0xcc, 0xe1, 0xd1, 0xf2, 0xcc, 0xe1, 0xd1, 0xf1, 0xcc, 0xe1, 0xd1, 0xf2, - 0xcc, 0xe1, 0xd2, 0xf1, 0xcc, 0xe1, 0xd2, 0xf2, 0xcc, 0xe1, 0xd2, 0xf1, - 0xcc, 0xe1, 0xd2, 0xf2, 0xcc, 0xe1, 0xd3, 0xf1, 0xcc, 0xe1, 0xd3, 0xef, - 0xcc, 0xe1, 0xd3, 0xf1, 0xcc, 0xe1, 0xd4, 0xef, 0xcc, 0xe1, 0xd4, 0xf1, - 0xcc, 0xe1, 0xd4, 0xef, 0xcc, 0xe1, 0xd4, 0xf1, 0xcc, 0xe1, 0xd5, 0xef, - 0xcc, 0xe1, 0xd5, 0xf1, 0xcc, 0xe1, 0xd5, 0xef, 0xcc, 0xe1, 0xd6, 0xf1, - 0xcc, 0xe1, 0xd6, 0xef, 0xcc, 0xe1, 0xd6, 0xf1, 0xcc, 0xe1, 0xd6, 0xef, - 0xcc, 0xe1, 0xd7, 0xf1, 0xcc, 0xe1, 0xd7, 0xef, 0xcc, 0xe1, 0xd7, 0xf1, - 0xcc, 0xe1, 0xd7, 0xef, 0xcc, 0xe1, 0xd8, 0xf1, 0xcc, 0xe1, 0xd8, 0xef, - 0xcc, 0xe1, 0xd8, 0xf1, 0xcc, 0xe1, 0xd9, 0xef, 0xcc, 0xe1, 0xd9, 0xf3, - 0xe4, 0xe1, 0xd9, 0xf4, 0xe4, 0xe1, 0xd9, 0xf3, 0xe4, 0xe1, 0xda, 0xf4, - 0xe4, 0xe1, 0xda, 0xf3, 0xe4, 0xe1, 0xda, 0xf4, 0xe4, 0xe1, 0xda, 0xf3, - 0xe4, 0xe1, 0xdb, 0xf4, 0xe4, 0xe1, 0xdb, 0xf3, 0xe4, 0xe1, 0xdb, 0xf2, - 0xe5, 0xe1, 0xdb, 0xf3, 0xe4, 0xe1, 0xdc, 0xf2, 0xe5, 0xe1, 0xdc, 0xf3, - 0xe4, 0xe1, 0xdc, 0xf2, 0xe5, 0xe1, 0xdd, 0xf3, 0xe4, 0xe1, 0xdd, 0xf2, - 0xe5, 0xe1, 0xdd, 0xf3, 0xe4, 0xe1, 0xdd, 0xf2, 0xe5, 0xe1, 0xde, 0xf3, - 0xe4, 0xe1, 0xde, 0xf2, 0xe5, 0xe1, 0xde, 0xf3, 0xe4, 0xe1, 0xde, 0xf2, - 0xe5, 0xe1, 0xdf, 0xf3, 0xe4, 0xe1, 0xdf, 0xf2, 0xe5, 0xe1, 0xdf, 0xf3, - 0xe4, 0xe1, 0xdf, 0xf2, 0xe5, 0xe1, 0xe0, 0xf3, 0xe4, 0xe1, 0xe0, 0xf2, - 0xe5, 0xe1, 0xe0, 0xf3, 0xe4, 0xe1, 0xe1, 0xf2, 0xe5, 0xe1, 0xe1, 0xf2, - 0xe5, 0xe1, 0xe1, 0xf2, 0xe5, 0xe1, 0xe1, 0xf2, 0xe5, 0xe1, 0xe2, 0xf2, - 0xe5, 0xe1, 0xe2, 0xf2, 0xe5, 0xe1, 0xe2, 0xf2, 0xe5, 0xe1, 0xe2, 0xf2, - 0xe5, 0xe1, 0xe3, 0xf2, 0xe5, 0xe1, 0xe3, 0xf2, 0xe5, 0xe1, 0xe3, 0xf2, - 0xe5, 0xe1, 0xe3, 0xf2, 0xe5, 0xe1, 0xe4, 0xf2, 0xe5, 0xe1, 0xe4, 0xf2, - 0xe5, 0xe1, 0xe4, 0xf2, 0xe5, 0xe1, 0xe4, 0xf2, 0xe5, 0xe1, 0xe5, 0xf2, - 0xe5, 0xe1, 0xe4, 0xf2, 0xe5, 0xe1, 0xe5, 0xf2, 0xe5, 0xe1, 0xe4, 0xf2, - 0xe5, 0xe1, 0xe5, 0xf2, 0xe6, 0xe1, 0xe7, 0xf2, 0xe6, 0xe1, 0xe7, 0xf2, - 0xe6, 0xe1, 0xe7, 0xf2, 0xe6, 0xe1, 0xe7, 0xf2, 0xe6, 0xe1, 0xe7, 0xf2, - 0xe6, 0xe1, 0xe7, 0xf2, 0xe6, 0xe1, 0xe7, 0xf2, 0xe6, 0xe1, 0xe8, 0xf1, - 0xe7, 0xe1, 0xe8, 0xf2, 0xe6, 0xe1, 0xe8, 0xf1, 0xe7, 0xe1, 0xe8, 0xf2, - 0xe6, 0xe1, 0xe9, 0xf1, 0xe7, 0xe1, 0xe9, 0xf2, 0xe6, 0xe1, 0xe9, 0xf1, - 0xe7, 0xe1, 0xe9, 0xf2, 0xe6, 0xe1, 0xea, 0xf1, 0xe7, 0xe1, 0xea, 0xf2, - 0xe6, 0xe1, 0xea, 0xf1, 0xe7, 0xe1, 0xea, 0xf2, 0xe6, 0xe1, 0xeb, 0xf1, - 0xe7, 0xe1, 0xeb, 0xf2, 0xe6, 0xe1, 0xeb, 0xf1, 0xe7, 0xe1, 0xeb, 0xf2, - 0xe6, 0xe1, 0xec, 0xf3, 0xf0, 0xe1, 0xec, 0xf2, 0xf0, 0xe1, 0xec, 0xf3, - 0xf0, 0xe1, 0xec, 0xf2, 0xf0, 0xe1, 0xec, 0xf2, 0xf0, 0xe1, 0xed, 0xf2, - 0xf0, 0xe1, 0xed, 0xf2, 0xf0, 0xe1, 0xed, 0xf2, 0xf0, 0xe1, 0xed, 0xf2, - 0xf0, 0xe1, 0xee, 0xf2, 0xf0, 0xe1, 0xee, 0xf2, 0xf0, 0xe1, 0xee, 0xf2, - 0xf0, 0xe1, 0xee, 0xf2, 0xf0, 0xe1, 0xef, 0xf2, 0xf0, 0xe1, 0xef, 0xf2, - 0xf0, 0xe1, 0xef, 0xf2, 0xf0, 0xe1, 0xef, 0xf2, 0xf0, 0xe1, 0xf0, 0xf2, - 0xf0, 0xe1, 0xf0, 0xf2, 0xf0, 0xe1, 0xf0, 0xf2, 0xf0, 0xe1, 0xf0, 0xf2, - 0xf0, 0xe1, 0xf1, 0xf1, 0xf1, 0xe1, 0xf1, 0xf2, 0xf0, 0xe1, 0xf1, 0xf1, - 0xf1, 0xe1, 0xf1, 0xf2, 0xf0, 0xe1, 0xf2, 0xf1, 0xf1, 0xe1, 0xf2, 0xf2, - 0xf0, 0xe1, 0xf2, 0xf1, 0xf1, 0xe1, 0xf2, 0xf2, 0xf0, 0xe1, 0xf2, 0xf1, - 0xf1, 0xe1, 0xf3, 0xf2, 0xf0, 0xe1, 0xf3, 0xf1, 0xf1, 0xe1, 0xf3, 0xf2, - 0xf0, 0xe1, 0xf3, 0xf1, 0xf1, 0xe1, 0xf4, 0xf2, 0xf0, 0xe1, 0xf4, 0xf1, - 0xf1, 0xe1, 0xf4, 0xf2, 0xf0, 0xe1, 0xf4, 0xf1, 0xf1, 0xe1, 0xf5, 0xf0, - 0xf1, 0xe1, 0xf5, 0xf1, 0xf1, 0xe1, 0xf5, 0xf0, 0xf1, 0xe1, 0xf5, 0xf1, - 0xf1, 0xe1, 0xf5, 0xf0, 0xf1, 0xe1, 0xf6, 0xf1, 0xf1, 0xe1, 0xf6, 0xf0, - 0xf1, 0xe1, 0xf6, 0xf1, 0xf1, 0xe1, 0xf6, 0xf0, 0xf1, 0xe1, 0xf7, 0xf1, - 0xf1, 0xe1, 0xf7, 0xf0, 0xf1, 0xe1, 0xf7, 0xf1, 0xf1, 0xe1, 0xf7, 0xf0, - 0xf1, 0xe1, 0xf8, 0xf1, 0xf1, 0xe1, 0xf8, 0xf0, 0xf1, 0xe1, 0xf8, 0xf1, - 0xf1, 0xe1, 0xf8, 0xf0, 0xf1, 0xe1, 0xf8, 0xf1, 0xf1, 0xe1, 0xf9, 0xf0, - 0xf1, 0xe1, 0xf9, 0xf1, 0xf1, 0xe1, 0xf9, 0xf0, 0xf1, 0xe1, 0xf9, 0xf1, - 0xf1, 0xe1, 0xfa, 0xf0, 0xf1, 0xe1, 0xfa, 0xf1, 0xf1, 0xe1, 0xfa, 0xf0, - 0xf1, 0xe1, 0xfa, 0xf1, 0xf1, 0xe1, 0xfa, 0xf0, 0xf1, 0xe1, 0xfb, 0xf1, - 0xf1, 0xe1, 0xfb, 0xf0, 0xf1, 0xe1, 0xfb, 0xf1, 0xf1, 0xe1, 0xfb, 0xf0, - 0xf1, 0xe1, 0xfc, 0xf1, 0xf1, 0xe1, 0xfc, 0xf0, 0xf1, 0xe1, 0xfc, 0xf1, - 0xf1, 0xe1, 0xfc, 0xf0, 0xf1, 0xe1, 0xfc, 0xf1, 0xf1, 0xe1, 0xfd, 0xf0, - 0xf1, 0xe1, 0xfd, 0xf1, 0xf1, 0xe1, 0xfd, 0xf0, 0xf1, 0xe1, 0xfd, 0xf1, - 0xf1, 0xe1, 0xfe, 0xf0, 0xf1, 0xe1, 0xfe, 0xf1, 0xf1, 0xe1, 0xfe, 0xf0, - 0xf1, 0xe1, 0xfe, 0xf1, 0xf1, 0xe1, 0xfe, 0xf0, 0xf1, 0xe1, 0xff, 0xf1, - 0xf1, 0xe1, 0xff, 0xf0, 0xf1, 0xe1, 0x03, 0xf3, 0x83, 0xe2, 0x0a, 0xf4, - 0x83, 0xe2, 0x0f, 0xf3, 0x83, 0xe2, 0x14, 0xf4, 0x83, 0xe2, 0x17, 0xf3, - 0x83, 0xe2, 0x1b, 0xf4, 0x83, 0xe2, 0x1e, 0xf3, 0x83, 0xe2, 0x20, 0xf4, - 0x83, 0xe2, 0x23, 0xf3, 0x83, 0xe2, 0x25, 0xf4, 0x83, 0xe2, 0x27, 0xf3, - 0x83, 0xe2, 0x29, 0xf4, 0x83, 0xe2, 0x2b, 0xf3, 0x83, 0xe2, 0x2d, 0xf4, - 0x83, 0xe2, 0x2f, 0xf3, 0x83, 0xe2, 0x31, 0xf4, 0x83, 0xe2, 0x32, 0xf3, - 0x83, 0xe2, 0x34, 0xf4, 0x83, 0xe2, 0x35, 0xf3, 0x83, 0xe2, 0x37, 0xf4, - 0x83, 0xe2, 0x38, 0xf3, 0x83, 0xe2, 0x3a, 0xf4, 0x83, 0xe2, 0x3b, 0xf3, - 0x83, 0xe2, 0x3c, 0xf4, 0x83, 0xe2, 0x3e, 0xf3, 0x83, 0xe2, 0x3f, 0xf4, - 0x83, 0xe2, 0x40, 0xf3, 0x83, 0xe2, 0x42, 0xf4, 0x83, 0xe2, 0x43, 0xf3, - 0x83, 0xe2, 0x44, 0xf4, 0x83, 0xe2, 0x45, 0xf3, 0x83, 0xe2, 0x46, 0xf4, - 0x83, 0xe2, 0x47, 0xf3, 0x83, 0xe2, 0x48, 0xf4, 0x83, 0xe2, 0x49, 0xf3, - 0x83, 0xe2, 0x4a, 0xf4, 0x83, 0xe2, 0x4b, 0xf3, 0x83, 0xe2, 0x4c, 0xf4, - 0x83, 0xe2, 0x4d, 0xf3, 0x83, 0xe2, 0x4e, 0xf4, 0x83, 0xe2, 0x4f, 0xf3, - 0x83, 0xe2, 0x50, 0xf4, 0x83, 0xe2, 0x51, 0xf3, 0x83, 0xe2, 0x52, 0xf4, - 0x83, 0xe2, 0x53, 0xf3, 0x83, 0xe2, 0x54, 0xf4, 0x83, 0xe2, 0x55, 0xf3, - 0x83, 0xe2, 0x56, 0xf4, 0x83, 0xe2, 0x57, 0xf3, 0x83, 0xe2, 0x58, 0xf4, - 0x83, 0xe2, 0x58, 0xf3, 0x83, 0xe2, 0x59, 0xf4, 0x83, 0xe2, 0x5a, 0xf3, - 0x83, 0xe2, 0x5b, 0xf4, 0x83, 0xe2, 0x5c, 0xf3, 0x83, 0xe2, 0x5d, 0xf4, - 0x83, 0xe2, 0x5d, 0xf3, 0x83, 0xe2, 0x5e, 0xf4, 0x83, 0xe2, 0x5f, 0xf3, - 0x83, 0xe2, 0x60, 0xf4, 0x83, 0xe2, 0x60, 0xf3, 0x83, 0xe2, 0x61, 0xf4, - 0x83, 0xe2, 0x62, 0xf3, 0x83, 0xe2, 0x63, 0xf4, 0x83, 0xe2, 0x63, 0xf3, - 0x83, 0xe2, 0x64, 0xf4, 0x83, 0xe2, 0x65, 0xf3, 0x83, 0xe2, 0x66, 0xf4, - 0x83, 0xe2, 0x66, 0xf3, 0x83, 0xe2, 0x67, 0xf4, 0x83, 0xe2, 0x68, 0xf3, - 0x83, 0xe2, 0x68, 0xf4, 0x83, 0xe2, 0x69, 0xf3, 0x83, 0xe2, 0x6a, 0xf4, - 0x83, 0xe2, 0x6a, 0xf3, 0x83, 0xe2, 0x6b, 0xf4, 0x83, 0xe2, 0x6c, 0xf3, - 0x83, 0xe2, 0x6c, 0xf4, 0x83, 0xe2, 0x6d, 0xf3, 0x83, 0xe2, 0x6e, 0xf4, - 0x83, 0xe2, 0x6e, 0xf3, 0x83, 0xe2, 0x6f, 0xf4, 0x83, 0xe2, 0x70, 0xf3, - 0x83, 0xe2, 0x70, 0xf4, 0x83, 0xe2, 0x71, 0xf3, 0x83, 0xe2, 0x72, 0xf4, - 0x83, 0xe2, 0x72, 0xf3, 0x83, 0xe2, 0x73, 0xf4, 0x83, 0xe2, 0x73, 0xf3, - 0x83, 0xe2, 0x74, 0xf4, 0x83, 0xe2, 0x75, 0xf3, 0x83, 0xe2, 0x75, 0xf4, - 0x83, 0xe2, 0x76, 0xf3, 0x83, 0xe2, 0x76, 0xf2, 0x84, 0xe2, 0x77, 0xf3, - 0x83, 0xe2, 0x78, 0xf2, 0x84, 0xe2, 0x78, 0xf3, 0x83, 0xe2, 0x79, 0xf2, - 0x84, 0xe2, 0x79, 0xf3, 0x83, 0xe2, 0x7a, 0xf2, 0x84, 0xe2, 0x7a, 0xf3, - 0x83, 0xe2, 0x7b, 0xf2, 0x84, 0xe2, 0x7c, 0xf3, 0x83, 0xe2, 0x7c, 0xf2, - 0x84, 0xe2, 0x7d, 0xf3, 0x83, 0xe2, 0x7d, 0xf2, 0x84, 0xe2, 0x7e, 0xf3, - 0x83, 0xe2, 0x7e, 0xf2, 0x84, 0xe2, 0x7f, 0xf3, 0x83, 0xe2, 0x7f, 0xf2, - 0x84, 0xe2, 0x80, 0xf3, 0x83, 0xe2, 0x81, 0xf2, 0x84, 0xe2, 0x81, 0xf3, - 0x83, 0xe2, 0x82, 0xf2, 0x84, 0xe2, 0x82, 0xf2, 0x84, 0xe2, 0x83, 0xf2, - 0x84, 0xe2, 0x83, 0xf2, 0x84, 0xe2, 0x83, 0xf2, 0x84, 0xe2, 0x83, 0xf2, - 0x84, 0xe2, 0x83, 0xf2, 0x85, 0xe2, 0x83, 0xf2, 0x85, 0xe2, 0x83, 0xf2, - 0x86, 0xe2, 0x83, 0xf2, 0x86, 0xe2, 0x83, 0xf2, 0x87, 0xe2, 0x83, 0xf2, - 0x87, 0xe2, 0x84, 0xf2, 0x88, 0xdf, 0x83, 0xf2, 0x88, 0xe2, 0x84, 0xf2, - 0x89, 0xdf, 0x83, 0xf2, 0x89, 0xe2, 0x84, 0xf2, 0x8a, 0xdf, 0x87, 0xf2, - 0x8a, 0xe8, 0x8b, 0xf2, 0x8b, 0xe9, 0x8b, 0xf2, 0x8b, 0xe9, 0x8c, 0xf2, - 0x8c, 0xe9, 0x8c, 0xf2, 0x8c, 0xe9, 0x8d, 0xf2, 0x8d, 0xe9, 0x8c, 0xf2, - 0x8d, 0xe9, 0x8d, 0xf2, 0x8e, 0xe9, 0x8c, 0xf2, 0x8e, 0xe9, 0x8d, 0xf2, - 0x8e, 0xe9, 0x8c, 0xf2, 0x8f, 0xe9, 0x8d, 0xf2, 0x8f, 0xe9, 0x90, 0xf2, - 0x90, 0xea, 0x90, 0xf2, 0x90, 0xea, 0x91, 0xf2, 0x91, 0xea, 0x91, 0xf2, - 0x91, 0xea, 0x92, 0xf2, 0x92, 0xea, 0x91, 0xf2, 0x92, 0xea, 0x92, 0xf2, - 0x93, 0xea, 0x91, 0xf2, 0x93, 0xea, 0x92, 0xf2, 0x94, 0xea, 0x91, 0xf2, - 0x94, 0xea, 0x92, 0xf2, 0x94, 0xea, 0x91, 0xf2, 0x95, 0xea, 0x92, 0xf2, - 0x95, 0xea, 0x96, 0xf2, 0x96, 0xeb, 0x96, 0xf2, 0x96, 0xeb, 0x97, 0xf2, - 0x97, 0xeb, 0x96, 0xf2, 0x97, 0xeb, 0x97, 0xf2, 0x98, 0xeb, 0x96, 0xf2, - 0x98, 0xeb, 0x97, 0xf2, 0x98, 0xeb, 0x96, 0xf2, 0x99, 0xeb, 0x97, 0xf2, - 0x99, 0xeb, 0x96, 0xf2, 0x9a, 0xeb, 0x97, 0xf2, 0x9a, 0xeb, 0x9a, 0xf2, - 0x9a, 0xec, 0x9b, 0xf2, 0x9b, 0xec, 0x9b, 0xf2, 0x9b, 0xec, 0x9b, 0xf2, - 0x9c, 0xec, 0x9b, 0xf2, 0x9c, 0xec, 0x9b, 0xf2, 0x9d, 0xec, 0x9b, 0xf2, - 0x9d, 0xec, 0x9b, 0xf2, 0x9d, 0xec, 0x9b, 0xf2, 0x9e, 0xec, 0x9b, 0xf2, - 0x9e, 0xec, 0x9b, 0xf2, 0x9f, 0xec, 0x9f, 0xf2, 0x9f, 0xed, 0x9f, 0xf2, - 0x9f, 0xed, 0xa0, 0xf2, 0xa0, 0xed, 0x9f, 0xf2, 0xa0, 0xed, 0xa0, 0xf2, - 0xa1, 0xed, 0x9f, 0xf2, 0xa1, 0xed, 0xa0, 0xf2, 0xa1, 0xed, 0x9f, 0xf2, - 0xa2, 0xed, 0xa0, 0xf2, 0xa2, 0xed, 0x9f, 0xf2, 0xa3, 0xed, 0xa0, 0xf2, - 0xa3, 0xed, 0xa3, 0xf2, 0xa3, 0xee, 0xa4, 0xf2, 0xa4, 0xee, 0xa4, 0xf2, - 0xa4, 0xee, 0xa4, 0xf2, 0xa5, 0xee, 0xa4, 0xf2, 0xa5, 0xee, 0xa4, 0xf2, - 0xa5, 0xee, 0xa4, 0xf2, 0xa6, 0xee, 0xa4, 0xf2, 0xa6, 0xee, 0xa4, 0xf2, - 0xa6, 0xee, 0xa4, 0xf2, 0xa7, 0xee, 0xa4, 0xf2, 0xa7, 0xee, 0xa8, 0xf2, - 0xa8, 0xef, 0xa8, 0xf2, 0xa8, 0xef, 0xa8, 0xf2, 0xa8, 0xef, 0xa8, 0xf2, - 0xa9, 0xef, 0xa8, 0xf2, 0xa9, 0xef, 0xa8, 0xf2, 0xaa, 0xef, 0xa8, 0xf2, - 0xaa, 0xef, 0xa8, 0xf2, 0xaa, 0xef, 0xa8, 0xf2, 0xab, 0xef, 0xa8, 0xf2, - 0xab, 0xef, 0xa8, 0xf2, 0xab, 0xef, 0xa8, 0xf2, 0xac, 0xef, 0xa8, 0xf2, - 0xac, 0xef, 0xac, 0xf2, 0xac, 0xf0, 0xac, 0xf2, 0xad, 0xf0, 0xac, 0xf2, - 0xad, 0xf0, 0xac, 0xf2, 0xae, 0xf0, 0xac, 0xf2, 0xae, 0xf0, 0xac, 0xf2, - 0xae, 0xf0, 0xac, 0xf2, 0xaf, 0xf0, 0xac, 0xf2, 0xaf, 0xf0, 0xac, 0xf2, - 0xaf, 0xf0, 0xac, 0xf2, 0xb0, 0xf0, 0xac, 0xf2, 0xb0, 0xf0, 0xb0, 0xf2, - 0xb0, 0xf1, 0xb0, 0xf2, 0xb1, 0xf1, 0xb0, 0xf2, 0xb1, 0xf1, 0xb0, 0xf2, - 0xb2, 0xf1, 0xb0, 0xf2, 0xb2, 0xf1, 0xb0, 0xf2, 0xb2, 0xf1, 0xb0, 0xf2, - 0xb3, 0xf1, 0xb0, 0xf2, 0xb3, 0xf1, 0xb0, 0xf2, 0xb3, 0xf1, 0xb0, 0xf2, - 0xb4, 0xf1, 0xb0, 0xf2, 0xb4, 0xf1, 0xb4, 0xf2, 0xb4, 0xf2, 0xb4, 0xf2, - 0xb5, 0xf2, 0xb4, 0xf2, 0xb5, 0xf2, 0xb4, 0xf2, 0xb5, 0xf2, 0xb4, 0xf2, - 0xb6, 0xf2, 0xb4, 0xf2, 0xb6, 0xf2, 0xb4, 0xf2, 0xb6, 0xf2, 0xb4, 0xf2, - 0xb7, 0xf2, 0xb4, 0xf2, 0xb7, 0xf2, 0xb4, 0xf2, 0xb7, 0xf2, 0xb4, 0xf2, - 0xb8, 0xf2, 0xb8, 0xf2, 0xb8, 0xf3, 0xb8, 0xf2, 0xb8, 0xf3, 0xb8, 0xf2, - 0xb9, 0xf3, 0xb8, 0xf2, 0xb9, 0xf3, 0xb8, 0xf2, 0xb9, 0xf3, 0xb8, 0xf2, - 0xba, 0xf3, 0xb8, 0xf2, 0xba, 0xf3, 0xb8, 0xf2, 0xba, 0xf3, 0xb8, 0xf2, - 0xbb, 0xf3, 0xb8, 0xf2, 0xbb, 0xf3, 0xb8, 0xf2, 0xbb, 0xf3, 0xbc, 0xf2, - 0xbc, 0xf4, 0xb8, 0xf2, 0xbc, 0xf3, 0xbc, 0xf2, 0xbc, 0xf4, 0xbb, 0xf2, - 0xbd, 0xf4, 0xbc, 0xf2, 0xbd, 0xf4, 0xbb, 0xf2, 0xbd, 0xf4, 0xbc, 0xf2, - 0xbe, 0xf4, 0xbb, 0xf2, 0xbe, 0xf4, 0xbc, 0xf2, 0xbe, 0xf4, 0xbb, 0xf2, - 0xbf, 0xf4, 0xbc, 0xf2, 0xbf, 0xf4, 0xbb, 0xf2, 0xbf, 0xf4, 0xbc, 0xf2, - 0xc0, 0xf4, 0xbf, 0xf2, 0xc0, 0xf5, 0xcb, 0xf2, 0xc0, 0xe6, 0xcc, 0xf2, - 0xc1, 0xe3, 0xcb, 0xf2, 0xc1, 0xe6, 0xcc, 0xf2, 0xc1, 0xe3, 0xcb, 0xf2, - 0xc1, 0xe6, 0xcc, 0xf2, 0xc2, 0xe3, 0xcb, 0xf2, 0xc2, 0xe6, 0xcc, 0xf2, - 0xc2, 0xe3, 0xcb, 0xf2, 0xc3, 0xe6, 0xcc, 0xf2, 0xc3, 0xe3, 0xcb, 0xf2, - 0xc3, 0xe6, 0xcc, 0xf2, 0xc4, 0xe3, 0xcb, 0xf2, 0xc4, 0xe6, 0xcc, 0xf2, - 0xc4, 0xe3, 0xcb, 0xf2, 0xc5, 0xe6, 0xcc, 0xf2, 0xc5, 0xe3, 0xcb, 0xf2, - 0xc5, 0xe6, 0xcc, 0xf2, 0xc6, 0xe3, 0xcb, 0xf2, 0xc6, 0xe6, 0xcc, 0xf2, - 0xc6, 0xe3, 0xcb, 0xf2, 0xc6, 0xe6, 0xcc, 0xf2, 0xc7, 0xe3, 0xcc, 0xf2, - 0xc7, 0xe2, 0xcc, 0xf2, 0xc7, 0xe3, 0xcc, 0xf2, 0xc8, 0xe2, 0xcc, 0xf2, - 0xc8, 0xe3, 0xcc, 0xf2, 0xc8, 0xe2, 0xcc, 0xf2, 0xc9, 0xe3, 0xcc, 0xf2, - 0xc9, 0xe2, 0xcc, 0xf2, 0xc9, 0xe3, 0xcc, 0xf2, 0xc9, 0xe2, 0xcc, 0xf2, - 0xca, 0xe3, 0xcc, 0xf2, 0xca, 0xe2, 0xcc, 0xf2, 0xca, 0xe3, 0xcc, 0xf2, - 0xcb, 0xe2, 0xcc, 0xf2, 0xcb, 0xe3, 0xcc, 0xf2, 0xcb, 0xe2, 0xcc, 0xf2, - 0xcc, 0xe2, 0xcc, 0xf2, 0xcb, 0xe2, 0xcc, 0xf2, 0xcc, 0xe2, 0xcc, 0xf2, - 0xcb, 0xe2, 0xcd, 0xf2, 0xcc, 0xe2, 0xcd, 0xf1, 0xcc, 0xe2, 0xcd, 0xf2, - 0xcc, 0xe2, 0xce, 0xf1, 0xcc, 0xe2, 0xce, 0xf2, 0xcc, 0xe2, 0xce, 0xf1, - 0xcc, 0xe2, 0xce, 0xf2, 0xcc, 0xe2, 0xcf, 0xf1, 0xcc, 0xe2, 0xcf, 0xf2, - 0xcc, 0xe2, 0xcf, 0xf1, 0xcc, 0xe2, 0xd0, 0xf2, 0xcc, 0xe2, 0xd0, 0xf1, - 0xcc, 0xe2, 0xd0, 0xf2, 0xcc, 0xe2, 0xd0, 0xf1, 0xcc, 0xe2, 0xd1, 0xf2, - 0xcc, 0xe2, 0xd1, 0xf1, 0xcc, 0xe2, 0xd1, 0xf2, 0xcc, 0xe2, 0xd2, 0xf1, - 0xcc, 0xe2, 0xd2, 0xf2, 0xcc, 0xe2, 0xd2, 0xf1, 0xcc, 0xe2, 0xd2, 0xf2, - 0xcc, 0xe2, 0xd3, 0xf1, 0xcc, 0xe2, 0xd3, 0xef, 0xcc, 0xe2, 0xd3, 0xf1, - 0xcc, 0xe2, 0xd4, 0xef, 0xcc, 0xe2, 0xd4, 0xf1, 0xcc, 0xe2, 0xd4, 0xef, - 0xcc, 0xe2, 0xd4, 0xf1, 0xcc, 0xe2, 0xd5, 0xef, 0xcc, 0xe2, 0xd5, 0xf1, - 0xcc, 0xe2, 0xd5, 0xef, 0xcc, 0xe2, 0xd6, 0xf1, 0xcc, 0xe2, 0xd6, 0xef, - 0xcc, 0xe2, 0xd6, 0xf1, 0xcc, 0xe2, 0xd6, 0xef, 0xcc, 0xe2, 0xd7, 0xf1, - 0xcc, 0xe2, 0xd7, 0xef, 0xcc, 0xe2, 0xd7, 0xf1, 0xcc, 0xe2, 0xd7, 0xef, - 0xcc, 0xe2, 0xd8, 0xf1, 0xcc, 0xe2, 0xd8, 0xef, 0xcc, 0xe2, 0xd8, 0xf1, - 0xcc, 0xe2, 0xd9, 0xef, 0xcc, 0xe2, 0xd9, 0xf3, 0xe4, 0xe2, 0xd9, 0xf5, - 0xe4, 0xe2, 0xd9, 0xf3, 0xe4, 0xe2, 0xda, 0xf5, 0xe4, 0xe2, 0xda, 0xf3, - 0xe4, 0xe2, 0xda, 0xf5, 0xe4, 0xe2, 0xda, 0xf3, 0xe4, 0xe2, 0xdb, 0xf5, - 0xe4, 0xe2, 0xdb, 0xf3, 0xe4, 0xe2, 0xdb, 0xf2, 0xe5, 0xe2, 0xdb, 0xf3, - 0xe4, 0xe2, 0xdc, 0xf2, 0xe5, 0xe2, 0xdc, 0xf3, 0xe4, 0xe2, 0xdc, 0xf2, - 0xe5, 0xe2, 0xdd, 0xf3, 0xe4, 0xe2, 0xdd, 0xf2, 0xe5, 0xe2, 0xdd, 0xf3, - 0xe4, 0xe2, 0xdd, 0xf2, 0xe5, 0xe2, 0xde, 0xf3, 0xe4, 0xe2, 0xde, 0xf2, - 0xe5, 0xe2, 0xde, 0xf3, 0xe4, 0xe2, 0xde, 0xf2, 0xe5, 0xe2, 0xdf, 0xf3, - 0xe4, 0xe2, 0xdf, 0xf2, 0xe5, 0xe2, 0xdf, 0xf3, 0xe4, 0xe2, 0xdf, 0xf2, - 0xe5, 0xe2, 0xe0, 0xf3, 0xe4, 0xe2, 0xe0, 0xf2, 0xe5, 0xe2, 0xe0, 0xf3, - 0xe4, 0xe2, 0xe1, 0xf2, 0xe5, 0xe2, 0xe1, 0xf3, 0xe4, 0xe2, 0xe1, 0xf2, - 0xe5, 0xe2, 0xe1, 0xf3, 0xe4, 0xe2, 0xe2, 0xf2, 0xe5, 0xe2, 0xe2, 0xf3, - 0xe4, 0xe2, 0xe2, 0xf2, 0xe5, 0xe2, 0xe2, 0xf3, 0xe4, 0xe2, 0xe3, 0xf2, - 0xe5, 0xe2, 0xe3, 0xf2, 0xe5, 0xe2, 0xe3, 0xf2, 0xe5, 0xe2, 0xe3, 0xf2, - 0xe5, 0xe2, 0xe4, 0xf2, 0xe5, 0xe2, 0xe4, 0xf2, 0xe5, 0xe2, 0xe4, 0xf2, - 0xe5, 0xe2, 0xe4, 0xf2, 0xe5, 0xe2, 0xe5, 0xf2, 0xe5, 0xe1, 0xe4, 0xf2, - 0xe5, 0xe2, 0xe5, 0xf2, 0xe5, 0xe1, 0xe4, 0xf2, 0xe5, 0xe2, 0xe7, 0xf2, - 0xe6, 0xe2, 0xe7, 0xf2, 0xe6, 0xe2, 0xe7, 0xf2, 0xe6, 0xe2, 0xe7, 0xf2, - 0xe6, 0xe2, 0xe7, 0xf2, 0xe6, 0xe2, 0xe7, 0xf2, 0xe6, 0xe2, 0xe7, 0xf2, - 0xe6, 0xe2, 0xe7, 0xf2, 0xe6, 0xe2, 0xe8, 0xf1, 0xe7, 0xe2, 0xe8, 0xf2, - 0xe6, 0xe2, 0xe8, 0xf1, 0xe7, 0xe2, 0xe8, 0xf2, 0xe6, 0xe2, 0xe9, 0xf1, - 0xe7, 0xe2, 0xe9, 0xf2, 0xe6, 0xe2, 0xe9, 0xf1, 0xe7, 0xe2, 0xe9, 0xf2, - 0xe6, 0xe2, 0xea, 0xf1, 0xe7, 0xe2, 0xea, 0xf2, 0xe6, 0xe2, 0xea, 0xf1, - 0xe7, 0xe2, 0xea, 0xf2, 0xe6, 0xe2, 0xeb, 0xf1, 0xe7, 0xe2, 0xeb, 0xf2, - 0xe6, 0xe2, 0xeb, 0xf1, 0xe7, 0xe2, 0xeb, 0xf2, 0xe6, 0xe2, 0xec, 0xf3, - 0xf0, 0xe2, 0xec, 0xf2, 0xf0, 0xe2, 0xec, 0xf3, 0xf0, 0xe2, 0xec, 0xf2, - 0xf0, 0xe2, 0xec, 0xf3, 0xf0, 0xe2, 0xed, 0xf2, 0xf0, 0xe2, 0xed, 0xf3, - 0xf0, 0xe2, 0xed, 0xf2, 0xf0, 0xe2, 0xed, 0xf3, 0xf0, 0xe2, 0xee, 0xf2, - 0xf0, 0xe2, 0xee, 0xf3, 0xf0, 0xe2, 0xee, 0xf2, 0xf0, 0xe2, 0xee, 0xf2, - 0xf0, 0xe2, 0xef, 0xf2, 0xf0, 0xe2, 0xef, 0xf2, 0xf0, 0xe2, 0xef, 0xf2, - 0xf0, 0xe2, 0xef, 0xf2, 0xf0, 0xe2, 0xf0, 0xf2, 0xf0, 0xe2, 0xf0, 0xf2, - 0xf0, 0xe2, 0xf0, 0xf2, 0xf0, 0xe2, 0xf0, 0xf2, 0xf0, 0xe2, 0xf1, 0xf2, - 0xf0, 0xe2, 0xf1, 0xf2, 0xf0, 0xe2, 0xf1, 0xf2, 0xf0, 0xe2, 0xf1, 0xf2, - 0xf0, 0xe2, 0xf2, 0xf2, 0xf0, 0xe2, 0xf2, 0xf2, 0xf0, 0xe2, 0xf2, 0xf2, - 0xf0, 0xe2, 0xf2, 0xf2, 0xf0, 0xe2, 0xf2, 0xf1, 0xf1, 0xe2, 0xf3, 0xf2, - 0xf0, 0xe2, 0xf3, 0xf1, 0xf1, 0xe2, 0xf3, 0xf2, 0xf0, 0xe2, 0xf3, 0xf1, - 0xf1, 0xe2, 0xf4, 0xf2, 0xf0, 0xe2, 0xf4, 0xf1, 0xf1, 0xe2, 0xf4, 0xf2, - 0xf0, 0xe2, 0xf4, 0xf1, 0xf1, 0xe2, 0xf5, 0xf2, 0xf0, 0xe2, 0xf5, 0xf1, - 0xf1, 0xe2, 0xf5, 0xf2, 0xf0, 0xe2, 0xf5, 0xf1, 0xf1, 0xe2, 0xf5, 0xf2, - 0xf0, 0xe2, 0xf6, 0xf1, 0xf1, 0xe2, 0xf6, 0xf2, 0xf0, 0xe2, 0xf6, 0xf1, - 0xf1, 0xe2, 0xf6, 0xef, 0xf1, 0xe2, 0xf7, 0xf1, 0xf1, 0xe2, 0xf7, 0xef, - 0xf1, 0xe2, 0xf7, 0xf1, 0xf1, 0xe2, 0xf7, 0xef, 0xf1, 0xe2, 0xf8, 0xf1, - 0xf1, 0xe2, 0xf8, 0xef, 0xf1, 0xe2, 0xf8, 0xf1, 0xf1, 0xe2, 0xf8, 0xef, - 0xf1, 0xe2, 0xf8, 0xf1, 0xf1, 0xe2, 0xf9, 0xef, 0xf1, 0xe2, 0xf9, 0xf1, - 0xf1, 0xe2, 0xf9, 0xef, 0xf1, 0xe2, 0xf9, 0xf1, 0xf1, 0xe2, 0xfa, 0xef, - 0xf1, 0xe2, 0xfa, 0xf1, 0xf1, 0xe2, 0xfa, 0xef, 0xf1, 0xe2, 0xfa, 0xf1, - 0xf1, 0xe2, 0xfa, 0xef, 0xf1, 0xe2, 0xfb, 0xf1, 0xf1, 0xe2, 0xfb, 0xef, - 0xf1, 0xe2, 0xfb, 0xf1, 0xf1, 0xe2, 0xfb, 0xef, 0xf1, 0xe2, 0xfc, 0xf1, - 0xf1, 0xe2, 0xfc, 0xef, 0xf1, 0xe2, 0xfc, 0xf1, 0xf1, 0xe2, 0xfc, 0xef, - 0xf1, 0xe2, 0xfc, 0xf1, 0xf1, 0xe2, 0xfd, 0xef, 0xf1, 0xe2, 0xfd, 0xf1, - 0xf1, 0xe2, 0xfd, 0xef, 0xf1, 0xe2, 0xfd, 0xf1, 0xf1, 0xe2, 0xfe, 0xef, - 0xf1, 0xe2, 0xfe, 0xf1, 0xf1, 0xe2, 0xfe, 0xef, 0xf1, 0xe2, 0xfe, 0xf1, - 0xf1, 0xe2, 0xfe, 0xef, 0xf1, 0xe2, 0xff, 0xee, 0xf1, 0xe2, 0xff, 0xef, - 0xf1, 0xe2, 0x03, 0xf2, 0x83, 0xe2, 0x0a, 0xf4, 0x83, 0xe2, 0x0f, 0xf2, - 0x83, 0xe2, 0x14, 0xf4, 0x83, 0xe2, 0x17, 0xf2, 0x83, 0xe2, 0x1b, 0xf4, - 0x83, 0xe2, 0x1e, 0xf2, 0x83, 0xe2, 0x20, 0xf4, 0x83, 0xe2, 0x23, 0xf2, - 0x83, 0xe2, 0x25, 0xf4, 0x83, 0xe2, 0x27, 0xf2, 0x83, 0xe2, 0x29, 0xf4, - 0x83, 0xe2, 0x2b, 0xf2, 0x83, 0xe2, 0x2d, 0xf4, 0x83, 0xe2, 0x2f, 0xf2, - 0x83, 0xe2, 0x31, 0xf4, 0x83, 0xe2, 0x32, 0xf2, 0x83, 0xe2, 0x34, 0xf4, - 0x83, 0xe2, 0x35, 0xf2, 0x83, 0xe2, 0x37, 0xf4, 0x83, 0xe2, 0x38, 0xf2, - 0x83, 0xe2, 0x3a, 0xf4, 0x83, 0xe2, 0x3b, 0xf2, 0x83, 0xe2, 0x3c, 0xf4, - 0x83, 0xe2, 0x3e, 0xf2, 0x83, 0xe2, 0x3f, 0xf4, 0x83, 0xe2, 0x40, 0xf2, - 0x83, 0xe2, 0x42, 0xf4, 0x83, 0xe2, 0x43, 0xf2, 0x83, 0xe2, 0x44, 0xf4, - 0x83, 0xe2, 0x45, 0xf2, 0x83, 0xe2, 0x46, 0xf4, 0x83, 0xe2, 0x47, 0xf2, - 0x83, 0xe2, 0x48, 0xf4, 0x83, 0xe2, 0x49, 0xf2, 0x83, 0xe2, 0x4a, 0xf4, - 0x83, 0xe2, 0x4b, 0xf2, 0x83, 0xe2, 0x4c, 0xf4, 0x83, 0xe2, 0x4d, 0xf2, - 0x83, 0xe2, 0x4e, 0xf4, 0x83, 0xe2, 0x4f, 0xf2, 0x83, 0xe2, 0x50, 0xf4, - 0x83, 0xe2, 0x51, 0xf2, 0x83, 0xe2, 0x52, 0xf4, 0x83, 0xe2, 0x53, 0xf2, - 0x83, 0xe2, 0x54, 0xf4, 0x83, 0xe2, 0x55, 0xf2, 0x83, 0xe2, 0x56, 0xf4, - 0x83, 0xe2, 0x57, 0xf2, 0x83, 0xe2, 0x58, 0xf4, 0x83, 0xe2, 0x58, 0xf2, - 0x83, 0xe2, 0x59, 0xf4, 0x83, 0xe2, 0x5a, 0xf2, 0x83, 0xe2, 0x5b, 0xf4, - 0x83, 0xe2, 0x5c, 0xf2, 0x83, 0xe2, 0x5d, 0xf4, 0x83, 0xe2, 0x5d, 0xf2, - 0x83, 0xe2, 0x5e, 0xf4, 0x83, 0xe2, 0x5f, 0xf2, 0x83, 0xe2, 0x60, 0xf4, - 0x83, 0xe2, 0x60, 0xf2, 0x83, 0xe2, 0x61, 0xf4, 0x83, 0xe2, 0x62, 0xf2, - 0x83, 0xe2, 0x63, 0xf4, 0x83, 0xe2, 0x63, 0xf2, 0x83, 0xe2, 0x64, 0xf4, - 0x83, 0xe2, 0x65, 0xf2, 0x83, 0xe2, 0x66, 0xf4, 0x83, 0xe2, 0x66, 0xf2, - 0x83, 0xe2, 0x67, 0xf4, 0x83, 0xe2, 0x68, 0xf2, 0x83, 0xe2, 0x68, 0xf4, - 0x83, 0xe2, 0x69, 0xf2, 0x83, 0xe2, 0x6a, 0xf4, 0x83, 0xe2, 0x6a, 0xf2, - 0x83, 0xe2, 0x6b, 0xf4, 0x83, 0xe2, 0x6c, 0xf2, 0x83, 0xe2, 0x6c, 0xf4, - 0x83, 0xe2, 0x6d, 0xf2, 0x83, 0xe2, 0x6e, 0xf4, 0x83, 0xe2, 0x6e, 0xf2, - 0x83, 0xe2, 0x6f, 0xf4, 0x83, 0xe2, 0x70, 0xf2, 0x83, 0xe2, 0x70, 0xf4, - 0x83, 0xe2, 0x71, 0xf2, 0x83, 0xe2, 0x72, 0xf4, 0x83, 0xe2, 0x72, 0xf2, - 0x83, 0xe2, 0x73, 0xf4, 0x83, 0xe2, 0x73, 0xf2, 0x83, 0xe2, 0x74, 0xf4, - 0x83, 0xe2, 0x75, 0xf2, 0x83, 0xe2, 0x75, 0xf4, 0x83, 0xe2, 0x76, 0xf2, - 0x83, 0xe2, 0x76, 0xf4, 0x83, 0xe2, 0x77, 0xf2, 0x83, 0xe2, 0x78, 0xf4, - 0x83, 0xe2, 0x78, 0xf2, 0x83, 0xe2, 0x79, 0xf4, 0x83, 0xe2, 0x79, 0xf2, - 0x83, 0xe2, 0x7a, 0xf4, 0x83, 0xe2, 0x7a, 0xf2, 0x83, 0xe2, 0x7b, 0xf2, - 0x84, 0xe2, 0x7c, 0xf2, 0x83, 0xe2, 0x7c, 0xf2, 0x84, 0xe2, 0x7d, 0xf2, - 0x83, 0xe2, 0x7d, 0xf2, 0x84, 0xe2, 0x7e, 0xf2, 0x83, 0xe2, 0x7e, 0xf2, - 0x84, 0xe2, 0x7f, 0xf2, 0x83, 0xe2, 0x7f, 0xf2, 0x84, 0xe2, 0x80, 0xf2, - 0x83, 0xe2, 0x81, 0xf2, 0x84, 0xe2, 0x81, 0xf2, 0x83, 0xe2, 0x82, 0xf2, - 0x84, 0xe2, 0x82, 0xf2, 0x83, 0xe2, 0x83, 0xf2, 0x84, 0xe2, 0x83, 0xf2, - 0x84, 0xe2, 0x83, 0xf2, 0x84, 0xe2, 0x83, 0xf2, 0x84, 0xe2, 0x83, 0xf2, - 0x85, 0xe2, 0x83, 0xf2, 0x85, 0xe2, 0x83, 0xf2, 0x86, 0xe2, 0x83, 0xf2, - 0x86, 0xe2, 0x83, 0xf2, 0x87, 0xe2, 0x83, 0xf2, 0x87, 0xe2, 0x84, 0xf2, - 0x88, 0xdf, 0x83, 0xf2, 0x88, 0xe2, 0x84, 0xf2, 0x89, 0xdf, 0x83, 0xf2, - 0x89, 0xe2, 0x8a, 0xf2, 0x8a, 0xe8, 0x8a, 0xf2, 0x8a, 0xe8, 0x8a, 0xf2, - 0x8b, 0xe8, 0x8a, 0xf2, 0x8b, 0xe8, 0x8a, 0xf2, 0x8c, 0xe8, 0x8a, 0xf2, - 0x8c, 0xe8, 0x8a, 0xf2, 0x8d, 0xe8, 0x8a, 0xf2, 0x8d, 0xe8, 0x8e, 0xf2, - 0x8e, 0xe9, 0x8e, 0xf2, 0x8e, 0xe9, 0x8e, 0xf2, 0x8e, 0xe9, 0x8f, 0xf2, - 0x8f, 0xe9, 0x8f, 0xf2, 0x8f, 0xe9, 0x8f, 0xf2, 0x90, 0xe9, 0x8f, 0xf2, - 0x90, 0xe9, 0x8f, 0xf2, 0x91, 0xe9, 0x8f, 0xf2, 0x91, 0xe9, 0x8f, 0xf2, - 0x92, 0xe9, 0x8f, 0xf2, 0x92, 0xe9, 0x93, 0xf2, 0x93, 0xea, 0x93, 0xf2, - 0x93, 0xea, 0x94, 0xf2, 0x94, 0xea, 0x94, 0xf2, 0x94, 0xea, 0x94, 0xf2, - 0x94, 0xea, 0x94, 0xf2, 0x95, 0xea, 0x94, 0xf2, 0x95, 0xea, 0x94, 0xf2, - 0x96, 0xea, 0x94, 0xf2, 0x96, 0xea, 0x94, 0xf2, 0x97, 0xea, 0x94, 0xf2, - 0x97, 0xea, 0x94, 0xf2, 0x98, 0xea, 0x94, 0xf2, 0x98, 0xea, 0x98, 0xf2, - 0x98, 0xeb, 0x99, 0xf2, 0x99, 0xeb, 0x99, 0xf2, 0x99, 0xeb, 0x99, 0xf2, - 0x9a, 0xeb, 0x99, 0xf2, 0x9a, 0xeb, 0x99, 0xf2, 0x9a, 0xeb, 0x99, 0xf2, - 0x9b, 0xeb, 0x99, 0xf2, 0x9b, 0xeb, 0x99, 0xf2, 0x9c, 0xeb, 0x99, 0xf2, - 0x9c, 0xeb, 0x99, 0xf2, 0x9d, 0xeb, 0x9d, 0xf2, 0x9d, 0xec, 0x9d, 0xf2, - 0x9d, 0xec, 0x9e, 0xf2, 0x9e, 0xec, 0x9d, 0xf2, 0x9e, 0xec, 0x9e, 0xf2, - 0x9f, 0xec, 0x9d, 0xf2, 0x9f, 0xec, 0x9e, 0xf2, 0x9f, 0xec, 0x9d, 0xf2, - 0xa0, 0xec, 0x9e, 0xf2, 0xa0, 0xec, 0x9d, 0xf2, 0xa1, 0xec, 0x9e, 0xf2, - 0xa1, 0xec, 0xa1, 0xf2, 0xa1, 0xed, 0xa2, 0xf2, 0xa2, 0xed, 0xa2, 0xf2, - 0xa2, 0xed, 0xa2, 0xf2, 0xa3, 0xed, 0xa2, 0xf2, 0xa3, 0xed, 0xa2, 0xf2, - 0xa3, 0xed, 0xa2, 0xf2, 0xa4, 0xed, 0xa2, 0xf2, 0xa4, 0xed, 0xa2, 0xf2, - 0xa5, 0xed, 0xa2, 0xf2, 0xa5, 0xed, 0xa2, 0xf2, 0xa5, 0xed, 0xa6, 0xf2, - 0xa6, 0xee, 0xa6, 0xf2, 0xa6, 0xee, 0xa6, 0xf2, 0xa6, 0xee, 0xa6, 0xf2, - 0xa7, 0xee, 0xa6, 0xf2, 0xa7, 0xee, 0xa6, 0xf2, 0xa8, 0xee, 0xa6, 0xf2, - 0xa8, 0xee, 0xa6, 0xf2, 0xa8, 0xee, 0xa6, 0xf2, 0xa9, 0xee, 0xa6, 0xf2, - 0xa9, 0xee, 0xa6, 0xf2, 0xaa, 0xee, 0xaa, 0xf2, 0xaa, 0xef, 0xaa, 0xf2, - 0xaa, 0xef, 0xab, 0xf2, 0xab, 0xef, 0xaa, 0xf2, 0xab, 0xef, 0xab, 0xf2, - 0xab, 0xef, 0xaa, 0xf2, 0xac, 0xef, 0xab, 0xf2, 0xac, 0xef, 0xaa, 0xf2, - 0xac, 0xef, 0xab, 0xf2, 0xad, 0xef, 0xaa, 0xf2, 0xad, 0xef, 0xab, 0xf2, - 0xae, 0xef, 0xaa, 0xf2, 0xae, 0xef, 0xab, 0xf2, 0xae, 0xef, 0xaf, 0xf2, - 0xaf, 0xf0, 0xae, 0xf2, 0xaf, 0xf0, 0xaf, 0xf2, 0xaf, 0xf0, 0xae, 0xf2, - 0xb0, 0xf0, 0xaf, 0xf2, 0xb0, 0xf0, 0xae, 0xf2, 0xb0, 0xf0, 0xaf, 0xf2, - 0xb1, 0xf0, 0xae, 0xf2, 0xb1, 0xf0, 0xaf, 0xf2, 0xb2, 0xf0, 0xae, 0xf2, - 0xb2, 0xf0, 0xaf, 0xf2, 0xb2, 0xf0, 0xb3, 0xf2, 0xb3, 0xf1, 0xb2, 0xf2, - 0xb3, 0xf1, 0xb3, 0xf2, 0xb3, 0xf1, 0xb2, 0xf2, 0xb4, 0xf1, 0xb3, 0xf2, - 0xb4, 0xf1, 0xb2, 0xf2, 0xb4, 0xf1, 0xb3, 0xf2, 0xb5, 0xf1, 0xb2, 0xf2, - 0xb5, 0xf1, 0xb3, 0xf2, 0xb5, 0xf1, 0xb2, 0xf2, 0xb6, 0xf1, 0xb3, 0xf2, - 0xb6, 0xf1, 0xb6, 0xf2, 0xb6, 0xf2, 0xb6, 0xf2, 0xb7, 0xf2, 0xb6, 0xf2, - 0xb7, 0xf2, 0xb6, 0xf2, 0xb7, 0xf2, 0xb6, 0xf2, 0xb8, 0xf2, 0xb6, 0xf2, - 0xb8, 0xf2, 0xb6, 0xf2, 0xb8, 0xf2, 0xb6, 0xf2, 0xb9, 0xf2, 0xb6, 0xf2, - 0xb9, 0xf2, 0xb6, 0xf2, 0xb9, 0xf2, 0xb6, 0xf2, 0xba, 0xf2, 0xba, 0xf2, - 0xba, 0xf3, 0xba, 0xf2, 0xba, 0xf3, 0xba, 0xf2, 0xbb, 0xf3, 0xba, 0xf2, - 0xbb, 0xf3, 0xba, 0xf2, 0xbb, 0xf3, 0xba, 0xf2, 0xbc, 0xf3, 0xba, 0xf2, - 0xbc, 0xf3, 0xba, 0xf2, 0xbc, 0xf3, 0xba, 0xf2, 0xbd, 0xf3, 0xba, 0xf2, - 0xbd, 0xf3, 0xba, 0xf2, 0xbd, 0xf3, 0xbe, 0xf2, 0xbe, 0xf4, 0xba, 0xf2, - 0xbe, 0xf3, 0xbe, 0xf2, 0xbe, 0xf4, 0xbd, 0xf2, 0xbf, 0xf4, 0xbe, 0xf2, - 0xbf, 0xf4, 0xbd, 0xf2, 0xbf, 0xf4, 0xbe, 0xf2, 0xc0, 0xf4, 0xbd, 0xf2, - 0xc0, 0xf4, 0xcb, 0xf2, 0xc0, 0xe6, 0xcc, 0xf2, 0xc1, 0xe3, 0xcb, 0xf2, - 0xc1, 0xe6, 0xcc, 0xf2, 0xc1, 0xe3, 0xcb, 0xf2, 0xc1, 0xe6, 0xcc, 0xf2, - 0xc2, 0xe3, 0xcb, 0xf2, 0xc2, 0xe6, 0xcc, 0xf2, 0xc2, 0xe3, 0xcb, 0xf2, - 0xc3, 0xe6, 0xcc, 0xf2, 0xc3, 0xe3, 0xcb, 0xf2, 0xc3, 0xe6, 0xcc, 0xf2, - 0xc4, 0xe3, 0xcb, 0xf2, 0xc4, 0xe6, 0xcc, 0xf2, 0xc4, 0xe3, 0xcb, 0xf2, - 0xc5, 0xe6, 0xcc, 0xf2, 0xc5, 0xe3, 0xcb, 0xf2, 0xc5, 0xe6, 0xcc, 0xf2, - 0xc6, 0xe3, 0xcb, 0xf2, 0xc6, 0xe6, 0xcc, 0xf2, 0xc6, 0xe3, 0xcb, 0xf2, - 0xc6, 0xe6, 0xcc, 0xf2, 0xc7, 0xe3, 0xcc, 0xf2, 0xc7, 0xe2, 0xcc, 0xf2, - 0xc7, 0xe3, 0xcc, 0xf2, 0xc8, 0xe2, 0xcc, 0xf2, 0xc8, 0xe3, 0xcc, 0xf2, - 0xc8, 0xe2, 0xcc, 0xf2, 0xc9, 0xe3, 0xcc, 0xf2, 0xc9, 0xe2, 0xcc, 0xf2, - 0xc9, 0xe3, 0xcc, 0xf2, 0xc9, 0xe2, 0xcc, 0xf2, 0xca, 0xe3, 0xcc, 0xf2, - 0xca, 0xe2, 0xcc, 0xf2, 0xca, 0xe3, 0xcc, 0xf2, 0xcb, 0xe2, 0xcc, 0xf2, - 0xcb, 0xe3, 0xcc, 0xf2, 0xcb, 0xe2, 0xcc, 0xf2, 0xcc, 0xe2, 0xcc, 0xf2, - 0xcb, 0xe2, 0xcc, 0xf2, 0xcc, 0xe2, 0xcc, 0xf2, 0xcb, 0xe2, 0xcd, 0xf2, - 0xcc, 0xe2, 0xcd, 0xf2, 0xcb, 0xe2, 0xcd, 0xf2, 0xcc, 0xe2, 0xce, 0xf2, - 0xcb, 0xe2, 0xce, 0xf2, 0xcc, 0xe2, 0xce, 0xf1, 0xcc, 0xe2, 0xce, 0xf2, - 0xcc, 0xe2, 0xcf, 0xf1, 0xcc, 0xe2, 0xcf, 0xf2, 0xcc, 0xe2, 0xcf, 0xf1, - 0xcc, 0xe2, 0xd0, 0xf2, 0xcc, 0xe2, 0xd0, 0xf1, 0xcc, 0xe2, 0xd0, 0xf2, - 0xcc, 0xe2, 0xd0, 0xf1, 0xcc, 0xe2, 0xd1, 0xf2, 0xcc, 0xe2, 0xd1, 0xf1, - 0xcc, 0xe2, 0xd1, 0xf2, 0xcc, 0xe2, 0xd2, 0xf1, 0xcc, 0xe2, 0xd2, 0xf2, - 0xcc, 0xe2, 0xd2, 0xf1, 0xcc, 0xe2, 0xd2, 0xf2, 0xcc, 0xe2, 0xd3, 0xf1, - 0xcc, 0xe2, 0xd3, 0xf2, 0xcc, 0xe2, 0xd3, 0xf1, 0xcc, 0xe2, 0xd4, 0xf2, - 0xcc, 0xe2, 0xd4, 0xf1, 0xcc, 0xe2, 0xd4, 0xf2, 0xcc, 0xe2, 0xd4, 0xf1, - 0xcc, 0xe2, 0xd5, 0xf2, 0xcc, 0xe2, 0xd5, 0xf1, 0xcc, 0xe2, 0xd5, 0xf2, - 0xcc, 0xe2, 0xd6, 0xf1, 0xcc, 0xe2, 0xd6, 0xf2, 0xcc, 0xe2, 0xd6, 0xf1, - 0xcc, 0xe2, 0xd6, 0xef, 0xcc, 0xe2, 0xd7, 0xf1, 0xcc, 0xe2, 0xd7, 0xef, - 0xcc, 0xe2, 0xd7, 0xf1, 0xcc, 0xe2, 0xd7, 0xef, 0xcc, 0xe2, 0xd8, 0xf1, - 0xcc, 0xe2, 0xd8, 0xef, 0xcc, 0xe2, 0xd8, 0xf1, 0xcc, 0xe2, 0xd9, 0xf4, - 0xe4, 0xe2, 0xd9, 0xf3, 0xe4, 0xe2, 0xd9, 0xf4, 0xe4, 0xe2, 0xd9, 0xf3, - 0xe4, 0xe2, 0xda, 0xf4, 0xe4, 0xe2, 0xda, 0xf3, 0xe4, 0xe2, 0xda, 0xf4, - 0xe4, 0xe2, 0xda, 0xf3, 0xe4, 0xe2, 0xdb, 0xf4, 0xe4, 0xe2, 0xdb, 0xf3, - 0xe4, 0xe2, 0xdb, 0xf4, 0xe4, 0xe2, 0xdb, 0xf3, 0xe4, 0xe2, 0xdc, 0xf4, - 0xe4, 0xe2, 0xdc, 0xf3, 0xe4, 0xe2, 0xdc, 0xf4, 0xe4, 0xe2, 0xdd, 0xf3, - 0xe4, 0xe2, 0xdd, 0xf4, 0xe4, 0xe2, 0xdd, 0xf3, 0xe4, 0xe2, 0xdd, 0xf4, - 0xe4, 0xe2, 0xde, 0xf3, 0xe4, 0xe2, 0xde, 0xf4, 0xe4, 0xe2, 0xde, 0xf3, - 0xe4, 0xe2, 0xde, 0xf2, 0xe5, 0xe2, 0xdf, 0xf3, 0xe4, 0xe2, 0xdf, 0xf2, - 0xe5, 0xe2, 0xdf, 0xf3, 0xe4, 0xe2, 0xdf, 0xf2, 0xe5, 0xe2, 0xe0, 0xf3, - 0xe4, 0xe2, 0xe0, 0xf2, 0xe5, 0xe2, 0xe0, 0xf3, 0xe4, 0xe2, 0xe1, 0xf2, - 0xe5, 0xe2, 0xe1, 0xf3, 0xe4, 0xe2, 0xe1, 0xf2, 0xe5, 0xe2, 0xe1, 0xf3, - 0xe4, 0xe2, 0xe2, 0xf2, 0xe5, 0xe2, 0xe2, 0xf3, 0xe4, 0xe2, 0xe2, 0xf2, - 0xe5, 0xe2, 0xe2, 0xf3, 0xe4, 0xe2, 0xe3, 0xf2, 0xe5, 0xe2, 0xe3, 0xf2, - 0xe5, 0xe2, 0xe3, 0xf2, 0xe5, 0xe2, 0xe3, 0xf2, 0xe5, 0xe2, 0xe4, 0xf2, - 0xe5, 0xe2, 0xe4, 0xf2, 0xe5, 0xe2, 0xe4, 0xf2, 0xe5, 0xe2, 0xe4, 0xf2, - 0xe5, 0xe2, 0xe5, 0xf2, 0xe5, 0xe1, 0xe4, 0xf2, 0xe5, 0xe2, 0xe5, 0xf2, - 0xe5, 0xe1, 0xe4, 0xf2, 0xe5, 0xe2, 0xe7, 0xf2, 0xe6, 0xe2, 0xe6, 0xf2, - 0xe6, 0xe3, 0xe7, 0xf2, 0xe6, 0xe2, 0xe7, 0xf2, 0xe6, 0xe2, 0xe7, 0xf2, - 0xe6, 0xe2, 0xe7, 0xf2, 0xe6, 0xe2, 0xe7, 0xf2, 0xe6, 0xe2, 0xe7, 0xf2, - 0xe6, 0xe2, 0xe8, 0xf2, 0xe6, 0xe2, 0xe8, 0xf2, 0xe6, 0xe2, 0xe8, 0xf2, - 0xe6, 0xe2, 0xe8, 0xf2, 0xe6, 0xe2, 0xe9, 0xf1, 0xe7, 0xe2, 0xe9, 0xf2, - 0xe6, 0xe2, 0xe9, 0xf1, 0xe7, 0xe2, 0xe9, 0xf2, 0xe6, 0xe2, 0xea, 0xf1, - 0xe7, 0xe2, 0xea, 0xf2, 0xe6, 0xe2, 0xea, 0xf1, 0xe7, 0xe2, 0xea, 0xf2, - 0xe6, 0xe2, 0xeb, 0xf1, 0xe7, 0xe2, 0xeb, 0xf2, 0xe6, 0xe2, 0xeb, 0xf1, - 0xe7, 0xe2, 0xeb, 0xf2, 0xe6, 0xe2, 0xec, 0xf3, 0xf0, 0xe2, 0xec, 0xf2, - 0xf0, 0xe2, 0xec, 0xf3, 0xf0, 0xe2, 0xec, 0xf2, 0xf0, 0xe2, 0xec, 0xf3, - 0xf0, 0xe2, 0xed, 0xf2, 0xf0, 0xe2, 0xed, 0xf3, 0xf0, 0xe2, 0xed, 0xf2, - 0xf0, 0xe2, 0xed, 0xf3, 0xf0, 0xe2, 0xee, 0xf2, 0xf0, 0xe2, 0xee, 0xf3, - 0xf0, 0xe2, 0xee, 0xf2, 0xf0, 0xe2, 0xee, 0xf2, 0xf0, 0xe2, 0xef, 0xf2, - 0xf0, 0xe2, 0xef, 0xf2, 0xf0, 0xe2, 0xef, 0xf2, 0xf0, 0xe2, 0xef, 0xf2, - 0xf0, 0xe2, 0xf0, 0xf2, 0xf0, 0xe2, 0xf0, 0xf2, 0xf0, 0xe2, 0xf0, 0xf2, - 0xf0, 0xe1, 0xf0, 0xf2, 0xf0, 0xe2, 0xf1, 0xf2, 0xf0, 0xe2, 0xf1, 0xf2, - 0xf0, 0xe2, 0xf1, 0xf2, 0xf0, 0xe2, 0xf1, 0xf2, 0xf0, 0xe2, 0xf2, 0xf2, - 0xf0, 0xe2, 0xf2, 0xf2, 0xf0, 0xe2, 0xf2, 0xf2, 0xf0, 0xe2, 0xf2, 0xf2, - 0xf0, 0xe2, 0xf2, 0xf1, 0xf1, 0xe2, 0xf3, 0xf2, 0xf0, 0xe2, 0xf3, 0xf1, - 0xf1, 0xe2, 0xf3, 0xf2, 0xf0, 0xe2, 0xf3, 0xf1, 0xf1, 0xe2, 0xf4, 0xf2, - 0xf0, 0xe2, 0xf4, 0xf1, 0xf1, 0xe2, 0xf4, 0xf2, 0xf0, 0xe2, 0xf4, 0xf1, - 0xf1, 0xe2, 0xf5, 0xf2, 0xf0, 0xe2, 0xf5, 0xf1, 0xf1, 0xe2, 0xf5, 0xf2, - 0xf0, 0xe2, 0xf5, 0xf1, 0xf1, 0xe2, 0xf5, 0xf2, 0xf0, 0xe2, 0xf6, 0xf1, - 0xf1, 0xe2, 0xf6, 0xf2, 0xf0, 0xe2, 0xf6, 0xf1, 0xf1, 0xe2, 0xf6, 0xf0, - 0xf1, 0xe2, 0xf7, 0xf1, 0xf1, 0xe2, 0xf7, 0xf0, 0xf1, 0xe2, 0xf7, 0xf1, - 0xf1, 0xe2, 0xf7, 0xf0, 0xf1, 0xe2, 0xf8, 0xf1, 0xf1, 0xe2, 0xf8, 0xf0, - 0xf1, 0xe2, 0xf8, 0xf1, 0xf1, 0xe2, 0xf8, 0xf0, 0xf1, 0xe2, 0xf8, 0xf1, - 0xf1, 0xe2, 0xf9, 0xf0, 0xf1, 0xe2, 0xf9, 0xf1, 0xf1, 0xe2, 0xf9, 0xf0, - 0xf1, 0xe2, 0xf9, 0xf1, 0xf1, 0xe2, 0xfa, 0xf0, 0xf1, 0xe2, 0xfa, 0xf1, - 0xf1, 0xe2, 0xfa, 0xf0, 0xf1, 0xe2, 0xfa, 0xf1, 0xf1, 0xe2, 0xfa, 0xf0, - 0xf1, 0xe2, 0xfb, 0xf1, 0xf1, 0xe2, 0xfb, 0xf0, 0xf1, 0xe2, 0xfb, 0xf1, - 0xf1, 0xe2, 0xfb, 0xf0, 0xf1, 0xe2, 0xfc, 0xf1, 0xf1, 0xe2, 0xfc, 0xf0, - 0xf1, 0xe2, 0xfc, 0xf1, 0xf1, 0xe2, 0xfc, 0xf0, 0xf1, 0xe2, 0xfc, 0xf1, - 0xf1, 0xe2, 0xfd, 0xf0, 0xf1, 0xe2, 0xfd, 0xf1, 0xf1, 0xe2, 0xfd, 0xf0, - 0xf1, 0xe2, 0xfd, 0xf1, 0xf1, 0xe2, 0xfe, 0xf0, 0xf1, 0xe2, 0xfe, 0xf1, - 0xf1, 0xe2, 0xfe, 0xf0, 0xf1, 0xe2, 0xfe, 0xf1, 0xf1, 0xe2, 0xfe, 0xf0, - 0xf1, 0xe2, 0xff, 0xf1, 0xf1, 0xe2, 0xff, 0xf0, 0xf1, 0xe2, 0x03, 0xf3, - 0x83, 0xe3, 0x0a, 0xf4, 0x83, 0xe3, 0x0f, 0xf3, 0x83, 0xe3, 0x14, 0xf4, - 0x83, 0xe3, 0x17, 0xf3, 0x83, 0xe3, 0x1b, 0xf4, 0x83, 0xe3, 0x1e, 0xf3, - 0x83, 0xe3, 0x20, 0xf4, 0x83, 0xe3, 0x23, 0xf3, 0x83, 0xe3, 0x25, 0xf4, - 0x83, 0xe3, 0x27, 0xf3, 0x83, 0xe3, 0x29, 0xf4, 0x83, 0xe3, 0x2b, 0xf3, - 0x83, 0xe3, 0x2d, 0xf4, 0x83, 0xe3, 0x2f, 0xf3, 0x83, 0xe3, 0x31, 0xf4, - 0x83, 0xe3, 0x32, 0xf3, 0x83, 0xe3, 0x34, 0xf4, 0x83, 0xe3, 0x35, 0xf3, - 0x83, 0xe3, 0x37, 0xf4, 0x83, 0xe3, 0x38, 0xf3, 0x83, 0xe3, 0x3a, 0xf4, - 0x83, 0xe3, 0x3b, 0xf3, 0x83, 0xe3, 0x3c, 0xf4, 0x83, 0xe3, 0x3e, 0xf3, - 0x83, 0xe3, 0x3f, 0xf4, 0x83, 0xe3, 0x40, 0xf3, 0x83, 0xe3, 0x42, 0xf4, - 0x83, 0xe3, 0x43, 0xf3, 0x83, 0xe3, 0x44, 0xf4, 0x83, 0xe3, 0x45, 0xf3, - 0x83, 0xe3, 0x46, 0xf4, 0x83, 0xe3, 0x47, 0xf3, 0x83, 0xe3, 0x48, 0xf4, - 0x83, 0xe3, 0x49, 0xf3, 0x83, 0xe3, 0x4a, 0xf4, 0x83, 0xe3, 0x4b, 0xf3, - 0x83, 0xe3, 0x4c, 0xf4, 0x83, 0xe3, 0x4d, 0xf3, 0x83, 0xe3, 0x4e, 0xf4, - 0x83, 0xe3, 0x4f, 0xf3, 0x83, 0xe3, 0x50, 0xf4, 0x83, 0xe3, 0x51, 0xf3, - 0x83, 0xe3, 0x52, 0xf4, 0x83, 0xe3, 0x53, 0xf3, 0x83, 0xe3, 0x54, 0xf4, - 0x83, 0xe3, 0x55, 0xf3, 0x83, 0xe3, 0x56, 0xf4, 0x83, 0xe3, 0x57, 0xf3, - 0x83, 0xe3, 0x58, 0xf4, 0x83, 0xe3, 0x58, 0xf3, 0x83, 0xe3, 0x59, 0xf4, - 0x83, 0xe3, 0x5a, 0xf3, 0x83, 0xe3, 0x5b, 0xf4, 0x83, 0xe3, 0x5c, 0xf3, - 0x83, 0xe3, 0x5d, 0xf4, 0x83, 0xe3, 0x5d, 0xf3, 0x83, 0xe3, 0x5e, 0xf4, - 0x83, 0xe3, 0x5f, 0xf3, 0x83, 0xe3, 0x60, 0xf4, 0x83, 0xe3, 0x60, 0xf3, - 0x83, 0xe3, 0x61, 0xf4, 0x83, 0xe3, 0x62, 0xf3, 0x83, 0xe3, 0x63, 0xf4, - 0x83, 0xe3, 0x63, 0xf3, 0x83, 0xe3, 0x64, 0xf4, 0x83, 0xe3, 0x65, 0xf3, - 0x83, 0xe3, 0x66, 0xf4, 0x83, 0xe3, 0x66, 0xf3, 0x83, 0xe3, 0x67, 0xf4, - 0x83, 0xe3, 0x68, 0xf3, 0x83, 0xe3, 0x68, 0xf4, 0x83, 0xe3, 0x69, 0xf3, - 0x83, 0xe3, 0x6a, 0xf4, 0x83, 0xe3, 0x6a, 0xf3, 0x83, 0xe3, 0x6b, 0xf4, - 0x83, 0xe3, 0x6c, 0xf3, 0x83, 0xe3, 0x6c, 0xf4, 0x83, 0xe3, 0x6d, 0xf3, - 0x83, 0xe3, 0x6e, 0xf4, 0x83, 0xe3, 0x6e, 0xf3, 0x83, 0xe3, 0x6f, 0xf4, - 0x83, 0xe3, 0x70, 0xf3, 0x83, 0xe3, 0x70, 0xf4, 0x83, 0xe3, 0x71, 0xf3, - 0x83, 0xe3, 0x72, 0xf4, 0x83, 0xe3, 0x72, 0xf3, 0x83, 0xe3, 0x73, 0xf4, - 0x83, 0xe3, 0x73, 0xf3, 0x83, 0xe3, 0x74, 0xf4, 0x83, 0xe3, 0x75, 0xf3, - 0x83, 0xe3, 0x75, 0xf4, 0x83, 0xe3, 0x76, 0xf3, 0x83, 0xe3, 0x76, 0xf4, - 0x83, 0xe3, 0x77, 0xf3, 0x83, 0xe3, 0x78, 0xf4, 0x83, 0xe3, 0x78, 0xf3, - 0x83, 0xe3, 0x79, 0xf4, 0x83, 0xe3, 0x79, 0xf3, 0x83, 0xe3, 0x7a, 0xf4, - 0x83, 0xe3, 0x7a, 0xf3, 0x83, 0xe3, 0x7b, 0xf2, 0x84, 0xe3, 0x7c, 0xf3, - 0x83, 0xe3, 0x7c, 0xf2, 0x84, 0xe3, 0x7d, 0xf3, 0x83, 0xe3, 0x7d, 0xf2, - 0x84, 0xe3, 0x7e, 0xf3, 0x83, 0xe3, 0x7e, 0xf2, 0x84, 0xe3, 0x7f, 0xf3, - 0x83, 0xe3, 0x7f, 0xf2, 0x84, 0xe3, 0x80, 0xf3, 0x83, 0xe3, 0x81, 0xf2, - 0x84, 0xe3, 0x81, 0xf3, 0x83, 0xe3, 0x82, 0xf2, 0x84, 0xe3, 0x82, 0xf3, - 0x83, 0xe3, 0x83, 0xf2, 0x84, 0xe3, 0x83, 0xf2, 0x84, 0xe3, 0x83, 0xf2, - 0x84, 0xe3, 0x83, 0xf2, 0x84, 0xe3, 0x83, 0xf2, 0x85, 0xe3, 0x83, 0xf2, - 0x85, 0xe3, 0x83, 0xf2, 0x86, 0xe3, 0x83, 0xf2, 0x86, 0xe3, 0x83, 0xf2, - 0x87, 0xe3, 0x83, 0xf2, 0x87, 0xe3, 0x83, 0xf2, 0x88, 0xe3, 0x83, 0xf2, - 0x88, 0xe3, 0x87, 0xf2, 0x89, 0xe8, 0x87, 0xf2, 0x89, 0xe8, 0x87, 0xf2, - 0x8a, 0xe8, 0x87, 0xf2, 0x8a, 0xe8, 0x8b, 0xf2, 0x8b, 0xe9, 0x8b, 0xf2, - 0x8b, 0xe9, 0x8c, 0xf2, 0x8c, 0xe9, 0x8c, 0xf2, 0x8c, 0xe9, 0x8d, 0xf2, - 0x8d, 0xe9, 0x8c, 0xf2, 0x8d, 0xe9, 0x8d, 0xf2, 0x8e, 0xe9, 0x8c, 0xf2, - 0x8e, 0xe9, 0x8d, 0xf2, 0x8e, 0xe9, 0x8c, 0xf2, 0x8f, 0xe9, 0x8d, 0xf2, - 0x8f, 0xe9, 0x90, 0xf2, 0x90, 0xea, 0x90, 0xf2, 0x90, 0xea, 0x91, 0xf2, - 0x91, 0xea, 0x91, 0xf2, 0x91, 0xea, 0x92, 0xf2, 0x92, 0xea, 0x91, 0xf2, - 0x92, 0xea, 0x92, 0xf2, 0x93, 0xea, 0x91, 0xf2, 0x93, 0xea, 0x92, 0xf2, - 0x94, 0xea, 0x91, 0xf2, 0x94, 0xea, 0x92, 0xf2, 0x94, 0xea, 0x95, 0xf2, - 0x95, 0xeb, 0x95, 0xf2, 0x95, 0xeb, 0x96, 0xf2, 0x96, 0xeb, 0x96, 0xf2, - 0x96, 0xeb, 0x97, 0xf2, 0x97, 0xeb, 0x96, 0xf2, 0x97, 0xeb, 0x97, 0xf2, - 0x98, 0xeb, 0x96, 0xf2, 0x98, 0xeb, 0x97, 0xf2, 0x98, 0xeb, 0x96, 0xf2, - 0x99, 0xeb, 0x97, 0xf2, 0x99, 0xeb, 0x96, 0xf2, 0x9a, 0xeb, 0x97, 0xf2, - 0x9a, 0xeb, 0x9a, 0xf2, 0x9a, 0xec, 0x9b, 0xf2, 0x9b, 0xec, 0x9b, 0xf2, - 0x9b, 0xec, 0x9b, 0xf2, 0x9c, 0xec, 0x9b, 0xf2, 0x9c, 0xec, 0x9b, 0xf2, - 0x9d, 0xec, 0x9b, 0xf2, 0x9d, 0xec, 0x9b, 0xf2, 0x9d, 0xec, 0x9b, 0xf2, - 0x9e, 0xec, 0x9b, 0xf2, 0x9e, 0xec, 0x9b, 0xf2, 0x9f, 0xec, 0x9f, 0xf2, - 0x9f, 0xed, 0x9f, 0xf2, 0x9f, 0xed, 0xa0, 0xf2, 0xa0, 0xed, 0x9f, 0xf2, - 0xa0, 0xed, 0xa0, 0xf2, 0xa1, 0xed, 0x9f, 0xf2, 0xa1, 0xed, 0xa0, 0xf2, - 0xa1, 0xed, 0x9f, 0xf2, 0xa2, 0xed, 0xa0, 0xf2, 0xa2, 0xed, 0x9f, 0xf2, - 0xa3, 0xed, 0xa0, 0xf2, 0xa3, 0xed, 0xa3, 0xf2, 0xa3, 0xee, 0xa4, 0xf2, - 0xa4, 0xee, 0xa4, 0xf2, 0xa4, 0xee, 0xa4, 0xf2, 0xa5, 0xee, 0xa4, 0xf2, - 0xa5, 0xee, 0xa4, 0xf2, 0xa5, 0xee, 0xa4, 0xf2, 0xa6, 0xee, 0xa4, 0xf2, - 0xa6, 0xee, 0xa4, 0xf2, 0xa6, 0xee, 0xa4, 0xf2, 0xa7, 0xee, 0xa4, 0xf2, - 0xa7, 0xee, 0xa8, 0xf2, 0xa8, 0xef, 0xa8, 0xf2, 0xa8, 0xef, 0xa8, 0xf2, - 0xa8, 0xef, 0xa8, 0xf2, 0xa9, 0xef, 0xa8, 0xf2, 0xa9, 0xef, 0xa8, 0xf2, - 0xaa, 0xef, 0xa8, 0xf2, 0xaa, 0xef, 0xa8, 0xf2, 0xaa, 0xef, 0xa8, 0xf2, - 0xab, 0xef, 0xa8, 0xf2, 0xab, 0xef, 0xa8, 0xf2, 0xab, 0xef, 0xac, 0xf2, - 0xac, 0xf0, 0xac, 0xf2, 0xac, 0xf0, 0xac, 0xf2, 0xac, 0xf0, 0xac, 0xf2, - 0xad, 0xf0, 0xac, 0xf2, 0xad, 0xf0, 0xac, 0xf2, 0xae, 0xf0, 0xac, 0xf2, - 0xae, 0xf0, 0xac, 0xf2, 0xae, 0xf0, 0xac, 0xf2, 0xaf, 0xf0, 0xac, 0xf2, - 0xaf, 0xf0, 0xac, 0xf2, 0xaf, 0xf0, 0xac, 0xf2, 0xb0, 0xf0, 0xac, 0xf2, - 0xb0, 0xf0, 0xb0, 0xf2, 0xb0, 0xf1, 0xb0, 0xf2, 0xb1, 0xf1, 0xb0, 0xf2, - 0xb1, 0xf1, 0xb0, 0xf2, 0xb2, 0xf1, 0xb0, 0xf2, 0xb2, 0xf1, 0xb0, 0xf2, - 0xb2, 0xf1, 0xb0, 0xf2, 0xb3, 0xf1, 0xb0, 0xf2, 0xb3, 0xf1, 0xb0, 0xf2, - 0xb3, 0xf1, 0xb0, 0xf2, 0xb4, 0xf1, 0xb0, 0xf2, 0xb4, 0xf1, 0xb4, 0xf2, - 0xb4, 0xf2, 0xb4, 0xf2, 0xb5, 0xf2, 0xb4, 0xf2, 0xb5, 0xf2, 0xb4, 0xf2, - 0xb5, 0xf2, 0xb4, 0xf2, 0xb6, 0xf2, 0xb4, 0xf2, 0xb6, 0xf2, 0xb4, 0xf2, - 0xb6, 0xf2, 0xb4, 0xf2, 0xb7, 0xf2, 0xb4, 0xf2, 0xb7, 0xf2, 0xb4, 0xf2, - 0xb7, 0xf2, 0xb4, 0xf2, 0xb8, 0xf2, 0xb8, 0xf2, 0xb8, 0xf3, 0xb8, 0xf2, - 0xb8, 0xf3, 0xb8, 0xf2, 0xb9, 0xf3, 0xb8, 0xf2, 0xb9, 0xf3, 0xb8, 0xf2, - 0xb9, 0xf3, 0xb8, 0xf2, 0xba, 0xf3, 0xb8, 0xf2, 0xba, 0xf3, 0xb8, 0xf2, - 0xba, 0xf3, 0xb8, 0xf2, 0xbb, 0xf3, 0xb8, 0xf2, 0xbb, 0xf3, 0xb8, 0xf2, - 0xbb, 0xf3, 0xbc, 0xf2, 0xbc, 0xf4, 0xbb, 0xf2, 0xbc, 0xf4, 0xbc, 0xf2, - 0xbc, 0xf4, 0xbb, 0xf2, 0xbd, 0xf4, 0xbc, 0xf2, 0xbd, 0xf4, 0xbb, 0xf2, - 0xbd, 0xf4, 0xbc, 0xf2, 0xbe, 0xf4, 0xbb, 0xf2, 0xbe, 0xf4, 0xbc, 0xf2, - 0xbe, 0xf4, 0xbb, 0xf2, 0xbf, 0xf4, 0xbc, 0xf2, 0xbf, 0xf4, 0xbf, 0xf2, - 0xbf, 0xf5, 0xbc, 0xf2, 0xc0, 0xf4, 0xbf, 0xf2, 0xc0, 0xf5, 0xbf, 0xf2, - 0xc0, 0xf5, 0xcc, 0xf2, 0xc1, 0xe3, 0xcb, 0xf2, 0xc1, 0xe6, 0xcc, 0xf2, - 0xc1, 0xe3, 0xcb, 0xf2, 0xc1, 0xe6, 0xcc, 0xf2, 0xc2, 0xe3, 0xcb, 0xf2, - 0xc2, 0xe6, 0xcc, 0xf2, 0xc2, 0xe3, 0xcb, 0xf2, 0xc3, 0xe6, 0xcc, 0xf2, - 0xc3, 0xe3, 0xcb, 0xf2, 0xc3, 0xe6, 0xcc, 0xf2, 0xc4, 0xe3, 0xcb, 0xf2, - 0xc4, 0xe6, 0xcc, 0xf2, 0xc4, 0xe3, 0xcb, 0xf2, 0xc5, 0xe6, 0xcc, 0xf2, - 0xc5, 0xe3, 0xcb, 0xf2, 0xc5, 0xe6, 0xcc, 0xf2, 0xc6, 0xe3, 0xcb, 0xf2, - 0xc6, 0xe6, 0xcc, 0xf2, 0xc6, 0xe3, 0xcb, 0xf2, 0xc6, 0xe6, 0xcc, 0xf2, - 0xc7, 0xe3, 0xcb, 0xf2, 0xc7, 0xe6, 0xcc, 0xf2, 0xc7, 0xe3, 0xcb, 0xf2, - 0xc8, 0xe6, 0xcc, 0xf2, 0xc8, 0xe3, 0xcb, 0xf2, 0xc8, 0xe6, 0xcc, 0xf2, - 0xc9, 0xe3, 0xcb, 0xf2, 0xc9, 0xe6, 0xcc, 0xf2, 0xc9, 0xe3, 0xcc, 0xf2, - 0xc9, 0xe3, 0xcc, 0xf2, 0xca, 0xe3, 0xcc, 0xf2, 0xca, 0xe3, 0xcc, 0xf2, - 0xca, 0xe3, 0xcc, 0xf2, 0xcb, 0xe3, 0xcc, 0xf2, 0xcb, 0xe3, 0xcc, 0xf2, - 0xcb, 0xe3, 0xcc, 0xf2, 0xcc, 0xe3, 0xcc, 0xf2, 0xcb, 0xe3, 0xcc, 0xf2, - 0xcc, 0xe3, 0xcc, 0xf2, 0xcb, 0xe3, 0xcd, 0xf2, 0xcc, 0xe3, 0xcd, 0xf2, - 0xcb, 0xe3, 0xcd, 0xf2, 0xcc, 0xe3, 0xce, 0xf2, 0xcb, 0xe3, 0xce, 0xf2, - 0xcc, 0xe3, 0xce, 0xf1, 0xcc, 0xe3, 0xce, 0xf2, 0xcc, 0xe3, 0xcf, 0xf1, - 0xcc, 0xe3, 0xcf, 0xf2, 0xcc, 0xe3, 0xcf, 0xf1, 0xcc, 0xe3, 0xd0, 0xf2, - 0xcc, 0xe3, 0xd0, 0xf1, 0xcc, 0xe3, 0xd0, 0xf2, 0xcc, 0xe3, 0xd0, 0xf1, - 0xcc, 0xe3, 0xd1, 0xf2, 0xcc, 0xe3, 0xd1, 0xf1, 0xcc, 0xe3, 0xd1, 0xf2, - 0xcc, 0xe3, 0xd2, 0xf1, 0xcc, 0xe3, 0xd2, 0xf2, 0xcc, 0xe3, 0xd2, 0xf1, - 0xcc, 0xe3, 0xd2, 0xf2, 0xcc, 0xe3, 0xd3, 0xf1, 0xcc, 0xe3, 0xd3, 0xf2, - 0xcc, 0xe3, 0xd3, 0xf1, 0xcc, 0xe3, 0xd4, 0xf2, 0xcc, 0xe3, 0xd4, 0xf1, - 0xcc, 0xe3, 0xd4, 0xf2, 0xcc, 0xe3, 0xd4, 0xf1, 0xcc, 0xe3, 0xd5, 0xf2, - 0xcc, 0xe3, 0xd5, 0xf1, 0xcc, 0xe3, 0xd5, 0xf2, 0xcc, 0xe3, 0xd6, 0xf1, - 0xcc, 0xe3, 0xd6, 0xf2, 0xcc, 0xe3, 0xd6, 0xf1, 0xcc, 0xe3, 0xd6, 0xef, - 0xcc, 0xe3, 0xd7, 0xf1, 0xcc, 0xe3, 0xd7, 0xef, 0xcc, 0xe3, 0xd7, 0xf1, - 0xcc, 0xe3, 0xd7, 0xef, 0xcc, 0xe3, 0xd8, 0xf1, 0xcc, 0xe3, 0xd8, 0xef, - 0xcc, 0xe3, 0xd8, 0xf1, 0xcc, 0xe3, 0xd9, 0xf5, 0xe4, 0xe3, 0xd9, 0xf3, - 0xe4, 0xe3, 0xd9, 0xf5, 0xe4, 0xe3, 0xd9, 0xf3, 0xe4, 0xe3, 0xda, 0xf5, - 0xe4, 0xe3, 0xda, 0xf3, 0xe4, 0xe3, 0xda, 0xf5, 0xe4, 0xe3, 0xda, 0xf3, - 0xe4, 0xe3, 0xdb, 0xf5, 0xe4, 0xe3, 0xdb, 0xf3, 0xe4, 0xe3, 0xdb, 0xf5, - 0xe4, 0xe3, 0xdb, 0xf3, 0xe4, 0xe3, 0xdc, 0xf5, 0xe4, 0xe3, 0xdc, 0xf3, - 0xe4, 0xe3, 0xdc, 0xf5, 0xe4, 0xe3, 0xdd, 0xf3, 0xe4, 0xe3, 0xdd, 0xf5, - 0xe4, 0xe3, 0xdd, 0xf3, 0xe4, 0xe3, 0xdd, 0xf5, 0xe4, 0xe3, 0xde, 0xf3, - 0xe4, 0xe3, 0xde, 0xf5, 0xe4, 0xe3, 0xde, 0xf3, 0xe4, 0xe3, 0xde, 0xf2, - 0xe5, 0xe3, 0xdf, 0xf3, 0xe4, 0xe3, 0xdf, 0xf2, 0xe5, 0xe3, 0xdf, 0xf3, - 0xe4, 0xe3, 0xdf, 0xf2, 0xe5, 0xe3, 0xe0, 0xf3, 0xe4, 0xe3, 0xe0, 0xf2, - 0xe5, 0xe3, 0xe0, 0xf3, 0xe4, 0xe3, 0xe1, 0xf2, 0xe5, 0xe3, 0xe1, 0xf3, - 0xe4, 0xe3, 0xe1, 0xf2, 0xe5, 0xe3, 0xe1, 0xf3, 0xe4, 0xe3, 0xe2, 0xf2, - 0xe5, 0xe3, 0xe2, 0xf3, 0xe4, 0xe3, 0xe2, 0xf2, 0xe5, 0xe3, 0xe2, 0xf3, - 0xe4, 0xe3, 0xe3, 0xf2, 0xe5, 0xe3, 0xe3, 0xf3, 0xe4, 0xe3, 0xe3, 0xf2, - 0xe5, 0xe3, 0xe3, 0xf3, 0xe4, 0xe3, 0xe4, 0xf2, 0xe5, 0xe3, 0xe4, 0xf2, - 0xe5, 0xe3, 0xe4, 0xf2, 0xe5, 0xe3, 0xe4, 0xf2, 0xe5, 0xe3, 0xe4, 0xf2, - 0xe5, 0xe3, 0xe4, 0xf2, 0xe5, 0xe3, 0xe4, 0xf2, 0xe5, 0xe3, 0xe4, 0xf2, - 0xe5, 0xe3, 0xe7, 0xf2, 0xe6, 0xe3, 0xe6, 0xf2, 0xe6, 0xe4, 0xe7, 0xf2, - 0xe6, 0xe3, 0xe7, 0xf2, 0xe6, 0xe3, 0xe7, 0xf2, 0xe6, 0xe3, 0xe7, 0xf2, - 0xe6, 0xe3, 0xe7, 0xf2, 0xe6, 0xe3, 0xe7, 0xf2, 0xe6, 0xe3, 0xe8, 0xf2, - 0xe6, 0xe3, 0xe8, 0xf2, 0xe6, 0xe3, 0xe8, 0xf2, 0xe6, 0xe3, 0xe8, 0xf2, - 0xe6, 0xe3, 0xe9, 0xf1, 0xe7, 0xe3, 0xe9, 0xf2, 0xe6, 0xe3, 0xe9, 0xf1, - 0xe7, 0xe3, 0xe9, 0xf2, 0xe6, 0xe3, 0xea, 0xf1, 0xe7, 0xe3, 0xea, 0xf2, - 0xe6, 0xe3, 0xea, 0xf1, 0xe7, 0xe3, 0xea, 0xf2, 0xe6, 0xe3, 0xeb, 0xf1, - 0xe7, 0xe3, 0xeb, 0xf2, 0xe6, 0xe3, 0xeb, 0xf1, 0xe7, 0xe3, 0xeb, 0xf2, - 0xe6, 0xe3, 0xec, 0xf3, 0xf0, 0xe3, 0xec, 0xf2, 0xf0, 0xe3, 0xec, 0xf3, - 0xf0, 0xe3, 0xec, 0xf2, 0xf0, 0xe3, 0xec, 0xf3, 0xf0, 0xe3, 0xed, 0xf2, - 0xf0, 0xe3, 0xed, 0xf3, 0xf0, 0xe3, 0xed, 0xf2, 0xf0, 0xe3, 0xed, 0xf3, - 0xf0, 0xe3, 0xee, 0xf2, 0xf0, 0xe3, 0xee, 0xf3, 0xf0, 0xe3, 0xee, 0xf2, - 0xf0, 0xe3, 0xee, 0xf3, 0xf0, 0xe3, 0xef, 0xf2, 0xf0, 0xe3, 0xef, 0xf3, - 0xf0, 0xe3, 0xef, 0xf2, 0xf0, 0xe3, 0xef, 0xf2, 0xf0, 0xe3, 0xf0, 0xf2, - 0xf0, 0xe3, 0xf0, 0xf2, 0xf0, 0xe3, 0xf0, 0xf2, 0xf0, 0xe2, 0xf0, 0xf2, - 0xf0, 0xe3, 0xf1, 0xf2, 0xf0, 0xe3, 0xf1, 0xf2, 0xf0, 0xe3, 0xf1, 0xf2, - 0xf0, 0xe3, 0xf1, 0xf2, 0xf0, 0xe3, 0xf2, 0xf2, 0xf0, 0xe3, 0xf2, 0xf2, - 0xf0, 0xe3, 0xf2, 0xf2, 0xf0, 0xe3, 0xf2, 0xf2, 0xf0, 0xe3, 0xf2, 0xf2, - 0xf0, 0xe3, 0xf3, 0xf2, 0xf0, 0xe3, 0xf3, 0xf2, 0xf0, 0xe3, 0xf3, 0xf2, - 0xf0, 0xe3, 0xf3, 0xf2, 0xf0, 0xe3, 0xf4, 0xf2, 0xf0, 0xe3, 0xf4, 0xf2, - 0xf0, 0xe3, 0xf4, 0xf2, 0xf0, 0xe3, 0xf4, 0xf2, 0xf0, 0xe3, 0xf5, 0xf2, - 0xf0, 0xe3, 0xf5, 0xf1, 0xf1, 0xe3, 0xf5, 0xf2, 0xf0, 0xe3, 0xf5, 0xf1, - 0xf1, 0xe3, 0xf5, 0xf2, 0xf0, 0xe3, 0xf6, 0xf1, 0xf1, 0xe3, 0xf6, 0xf2, - 0xf0, 0xe3, 0xf6, 0xf1, 0xf1, 0xe3, 0xf6, 0xf2, 0xf0, 0xe3, 0xf7, 0xf1, - 0xf1, 0xe3, 0xf7, 0xf2, 0xf0, 0xe3, 0xf7, 0xf1, 0xf1, 0xe3, 0xf7, 0xf2, - 0xf0, 0xe3, 0xf8, 0xf1, 0xf1, 0xe3, 0xf8, 0xf2, 0xf0, 0xe3, 0xf8, 0xf1, - 0xf1, 0xe3, 0xf8, 0xf2, 0xf0, 0xe3, 0xf8, 0xf1, 0xf1, 0xe3, 0xf9, 0xf2, - 0xf0, 0xe3, 0xf9, 0xf1, 0xf1, 0xe3, 0xf9, 0xef, 0xf1, 0xe3, 0xf9, 0xf1, - 0xf1, 0xe3, 0xfa, 0xef, 0xf1, 0xe3, 0xfa, 0xf1, 0xf1, 0xe3, 0xfa, 0xef, - 0xf1, 0xe3, 0xfa, 0xf1, 0xf1, 0xe3, 0xfa, 0xef, 0xf1, 0xe3, 0xfb, 0xf1, - 0xf1, 0xe3, 0xfb, 0xef, 0xf1, 0xe3, 0xfb, 0xf1, 0xf1, 0xe3, 0xfb, 0xef, - 0xf1, 0xe3, 0xfc, 0xf1, 0xf1, 0xe3, 0xfc, 0xef, 0xf1, 0xe3, 0xfc, 0xf1, - 0xf1, 0xe3, 0xfc, 0xef, 0xf1, 0xe3, 0xfc, 0xf1, 0xf1, 0xe3, 0xfd, 0xef, - 0xf1, 0xe3, 0xfd, 0xf1, 0xf1, 0xe3, 0xfd, 0xef, 0xf1, 0xe3, 0xfd, 0xf1, - 0xf1, 0xe3, 0xfe, 0xef, 0xf1, 0xe3, 0xfe, 0xf1, 0xf1, 0xe3, 0xfe, 0xef, - 0xf1, 0xe3, 0xfe, 0xf1, 0xf1, 0xe3, 0xfe, 0xef, 0xf1, 0xe3, 0xff, 0xf1, - 0xf1, 0xe3, 0xff, 0xef, 0xf1, 0xe3, 0x03, 0xf2, 0x83, 0xe3, 0x0a, 0xf4, - 0x83, 0xe3, 0x0f, 0xf2, 0x83, 0xe3, 0x14, 0xf4, 0x83, 0xe3, 0x17, 0xf2, - 0x83, 0xe3, 0x1b, 0xf4, 0x83, 0xe3, 0x1e, 0xf2, 0x83, 0xe3, 0x20, 0xf4, - 0x83, 0xe3, 0x23, 0xf2, 0x83, 0xe3, 0x25, 0xf4, 0x83, 0xe3, 0x27, 0xf2, - 0x83, 0xe3, 0x29, 0xf4, 0x83, 0xe3, 0x2b, 0xf2, 0x83, 0xe3, 0x2d, 0xf4, - 0x83, 0xe3, 0x2f, 0xf2, 0x83, 0xe3, 0x31, 0xf4, 0x83, 0xe3, 0x32, 0xf2, - 0x83, 0xe3, 0x34, 0xf4, 0x83, 0xe3, 0x35, 0xf2, 0x83, 0xe3, 0x37, 0xf4, - 0x83, 0xe3, 0x38, 0xf2, 0x83, 0xe3, 0x3a, 0xf4, 0x83, 0xe3, 0x3b, 0xf2, - 0x83, 0xe3, 0x3c, 0xf4, 0x83, 0xe3, 0x3e, 0xf2, 0x83, 0xe3, 0x3f, 0xf4, - 0x83, 0xe3, 0x40, 0xf2, 0x83, 0xe3, 0x42, 0xf4, 0x83, 0xe3, 0x43, 0xf2, - 0x83, 0xe3, 0x44, 0xf4, 0x83, 0xe3, 0x45, 0xf2, 0x83, 0xe3, 0x46, 0xf4, - 0x83, 0xe3, 0x47, 0xf2, 0x83, 0xe3, 0x48, 0xf4, 0x83, 0xe3, 0x49, 0xf2, - 0x83, 0xe3, 0x4a, 0xf4, 0x83, 0xe3, 0x4b, 0xf2, 0x83, 0xe3, 0x4c, 0xf4, - 0x83, 0xe3, 0x4d, 0xf2, 0x83, 0xe3, 0x4e, 0xf4, 0x83, 0xe3, 0x4f, 0xf2, - 0x83, 0xe3, 0x50, 0xf4, 0x83, 0xe3, 0x51, 0xf2, 0x83, 0xe3, 0x52, 0xf4, - 0x83, 0xe3, 0x53, 0xf2, 0x83, 0xe3, 0x54, 0xf4, 0x83, 0xe3, 0x55, 0xf2, - 0x83, 0xe3, 0x56, 0xf4, 0x83, 0xe3, 0x57, 0xf2, 0x83, 0xe3, 0x58, 0xf4, - 0x83, 0xe3, 0x58, 0xf2, 0x83, 0xe3, 0x59, 0xf4, 0x83, 0xe3, 0x5a, 0xf2, - 0x83, 0xe3, 0x5b, 0xf4, 0x83, 0xe3, 0x5c, 0xf2, 0x83, 0xe3, 0x5d, 0xf4, - 0x83, 0xe3, 0x5d, 0xf2, 0x83, 0xe3, 0x5e, 0xf4, 0x83, 0xe3, 0x5f, 0xf2, - 0x83, 0xe3, 0x60, 0xf4, 0x83, 0xe3, 0x60, 0xf2, 0x83, 0xe3, 0x61, 0xf4, - 0x83, 0xe3, 0x62, 0xf2, 0x83, 0xe3, 0x63, 0xf4, 0x83, 0xe3, 0x63, 0xf2, - 0x83, 0xe3, 0x64, 0xf4, 0x83, 0xe3, 0x65, 0xf2, 0x83, 0xe3, 0x66, 0xf4, - 0x83, 0xe3, 0x66, 0xf2, 0x83, 0xe3, 0x67, 0xf4, 0x83, 0xe3, 0x68, 0xf2, - 0x83, 0xe3, 0x68, 0xf4, 0x83, 0xe3, 0x69, 0xf2, 0x83, 0xe3, 0x6a, 0xf4, - 0x83, 0xe3, 0x6a, 0xf2, 0x83, 0xe3, 0x6b, 0xf4, 0x83, 0xe3, 0x6c, 0xf2, - 0x83, 0xe3, 0x6c, 0xf4, 0x83, 0xe3, 0x6d, 0xf2, 0x83, 0xe3, 0x6e, 0xf4, - 0x83, 0xe3, 0x6e, 0xf2, 0x83, 0xe3, 0x6f, 0xf4, 0x83, 0xe3, 0x70, 0xf2, - 0x83, 0xe3, 0x70, 0xf4, 0x83, 0xe3, 0x71, 0xf2, 0x83, 0xe3, 0x72, 0xf4, - 0x83, 0xe3, 0x72, 0xf2, 0x83, 0xe3, 0x73, 0xf4, 0x83, 0xe3, 0x73, 0xf2, - 0x83, 0xe3, 0x74, 0xf4, 0x83, 0xe3, 0x75, 0xf2, 0x83, 0xe3, 0x75, 0xf4, - 0x83, 0xe3, 0x76, 0xf2, 0x83, 0xe3, 0x76, 0xf4, 0x83, 0xe3, 0x77, 0xf2, - 0x83, 0xe3, 0x78, 0xf4, 0x83, 0xe3, 0x78, 0xf2, 0x83, 0xe3, 0x79, 0xf4, - 0x83, 0xe3, 0x79, 0xf2, 0x83, 0xe3, 0x7a, 0xf4, 0x83, 0xe3, 0x7a, 0xf2, - 0x83, 0xe3, 0x7b, 0xf4, 0x83, 0xe3, 0x7c, 0xf2, 0x83, 0xe3, 0x7c, 0xf4, - 0x83, 0xe3, 0x7d, 0xf2, 0x83, 0xe3, 0x7d, 0xf4, 0x83, 0xe3, 0x7e, 0xf2, - 0x83, 0xe3, 0x7e, 0xf4, 0x83, 0xe3, 0x7f, 0xf2, 0x83, 0xe3, 0x7f, 0xf2, - 0x84, 0xe3, 0x80, 0xf2, 0x83, 0xe3, 0x81, 0xf2, 0x84, 0xe3, 0x81, 0xf2, - 0x83, 0xe3, 0x82, 0xf2, 0x84, 0xe3, 0x82, 0xf2, 0x83, 0xe3, 0x83, 0xf2, - 0x84, 0xe3, 0x83, 0xf2, 0x83, 0xe2, 0x83, 0xf2, 0x84, 0xe3, 0x83, 0xf2, - 0x84, 0xe2, 0x83, 0xf2, 0x85, 0xe3, 0x83, 0xf2, 0x85, 0xe2, 0x83, 0xf2, - 0x86, 0xe3, 0x83, 0xf2, 0x86, 0xe2, 0x83, 0xf2, 0x87, 0xe3, 0x83, 0xf2, - 0x87, 0xe2, 0x83, 0xf2, 0x88, 0xe3, 0x88, 0xf2, 0x88, 0xe8, 0x89, 0xf2, - 0x89, 0xe8, 0x89, 0xf2, 0x89, 0xe8, 0x8a, 0xf2, 0x8a, 0xe8, 0x8a, 0xf2, - 0x8a, 0xe8, 0x8a, 0xf2, 0x8b, 0xe8, 0x8a, 0xf2, 0x8b, 0xe8, 0x8a, 0xf2, - 0x8c, 0xe8, 0x8a, 0xf2, 0x8c, 0xe8, 0x8a, 0xf2, 0x8d, 0xe8, 0x8a, 0xf2, - 0x8d, 0xe8, 0x8e, 0xf2, 0x8e, 0xe9, 0x8e, 0xf2, 0x8e, 0xe9, 0x8e, 0xf2, - 0x8e, 0xe9, 0x8f, 0xf2, 0x8f, 0xe9, 0x8f, 0xf2, 0x8f, 0xe9, 0x8f, 0xf2, - 0x90, 0xe9, 0x8f, 0xf2, 0x90, 0xe9, 0x8f, 0xf2, 0x91, 0xe9, 0x8f, 0xf2, - 0x91, 0xe9, 0x8f, 0xf2, 0x92, 0xe9, 0x8f, 0xf2, 0x92, 0xe9, 0x93, 0xf2, - 0x93, 0xea, 0x93, 0xf2, 0x93, 0xea, 0x94, 0xf2, 0x94, 0xea, 0x94, 0xf2, - 0x94, 0xea, 0x94, 0xf2, 0x94, 0xea, 0x94, 0xf2, 0x95, 0xea, 0x94, 0xf2, - 0x95, 0xea, 0x94, 0xf2, 0x96, 0xea, 0x94, 0xf2, 0x96, 0xea, 0x94, 0xf2, - 0x97, 0xea, 0x94, 0xf2, 0x97, 0xea, 0x98, 0xf2, 0x98, 0xeb, 0x98, 0xf2, - 0x98, 0xeb, 0x98, 0xf2, 0x98, 0xeb, 0x99, 0xf2, 0x99, 0xeb, 0x99, 0xf2, - 0x99, 0xeb, 0x99, 0xf2, 0x9a, 0xeb, 0x99, 0xf2, 0x9a, 0xeb, 0x99, 0xf2, - 0x9a, 0xeb, 0x99, 0xf2, 0x9b, 0xeb, 0x99, 0xf2, 0x9b, 0xeb, 0x99, 0xf2, - 0x9c, 0xeb, 0x99, 0xf2, 0x9c, 0xeb, 0x99, 0xf2, 0x9d, 0xeb, 0x9d, 0xf2, - 0x9d, 0xec, 0x9d, 0xf2, 0x9d, 0xec, 0x9e, 0xf2, 0x9e, 0xec, 0x9d, 0xf2, - 0x9e, 0xec, 0x9e, 0xf2, 0x9f, 0xec, 0x9d, 0xf2, 0x9f, 0xec, 0x9e, 0xf2, - 0x9f, 0xec, 0x9d, 0xf2, 0xa0, 0xec, 0x9e, 0xf2, 0xa0, 0xec, 0x9d, 0xf2, - 0xa1, 0xec, 0x9e, 0xf2, 0xa1, 0xec, 0xa1, 0xf2, 0xa1, 0xed, 0xa2, 0xf2, - 0xa2, 0xed, 0xa2, 0xf2, 0xa2, 0xed, 0xa2, 0xf2, 0xa3, 0xed, 0xa2, 0xf2, - 0xa3, 0xed, 0xa2, 0xf2, 0xa3, 0xed, 0xa2, 0xf2, 0xa4, 0xed, 0xa2, 0xf2, - 0xa4, 0xed, 0xa2, 0xf2, 0xa5, 0xed, 0xa2, 0xf2, 0xa5, 0xed, 0xa2, 0xf2, - 0xa5, 0xed, 0xa6, 0xf2, 0xa6, 0xee, 0xa6, 0xf2, 0xa6, 0xee, 0xa6, 0xf2, - 0xa6, 0xee, 0xa6, 0xf2, 0xa7, 0xee, 0xa6, 0xf2, 0xa7, 0xee, 0xa6, 0xf2, - 0xa8, 0xee, 0xa6, 0xf2, 0xa8, 0xee, 0xa6, 0xf2, 0xa8, 0xee, 0xa6, 0xf2, - 0xa9, 0xee, 0xa6, 0xf2, 0xa9, 0xee, 0xa6, 0xf2, 0xaa, 0xee, 0xaa, 0xf2, - 0xaa, 0xef, 0xaa, 0xf2, 0xaa, 0xef, 0xab, 0xf2, 0xab, 0xef, 0xaa, 0xf2, - 0xab, 0xef, 0xab, 0xf2, 0xab, 0xef, 0xaa, 0xf2, 0xac, 0xef, 0xab, 0xf2, - 0xac, 0xef, 0xaa, 0xf2, 0xac, 0xef, 0xab, 0xf2, 0xad, 0xef, 0xaa, 0xf2, - 0xad, 0xef, 0xab, 0xf2, 0xae, 0xef, 0xae, 0xf2, 0xae, 0xf0, 0xae, 0xf2, - 0xae, 0xf0, 0xaf, 0xf2, 0xaf, 0xf0, 0xae, 0xf2, 0xaf, 0xf0, 0xaf, 0xf2, - 0xaf, 0xf0, 0xae, 0xf2, 0xb0, 0xf0, 0xaf, 0xf2, 0xb0, 0xf0, 0xae, 0xf2, - 0xb0, 0xf0, 0xaf, 0xf2, 0xb1, 0xf0, 0xae, 0xf2, 0xb1, 0xf0, 0xaf, 0xf2, - 0xb2, 0xf0, 0xae, 0xf2, 0xb2, 0xf0, 0xaf, 0xf2, 0xb2, 0xf0, 0xb3, 0xf2, - 0xb3, 0xf1, 0xb2, 0xf2, 0xb3, 0xf1, 0xb3, 0xf2, 0xb3, 0xf1, 0xb2, 0xf2, - 0xb4, 0xf1, 0xb3, 0xf2, 0xb4, 0xf1, 0xb2, 0xf2, 0xb4, 0xf1, 0xb3, 0xf2, - 0xb5, 0xf1, 0xb2, 0xf2, 0xb5, 0xf1, 0xb3, 0xf2, 0xb5, 0xf1, 0xb2, 0xf2, - 0xb6, 0xf1, 0xb3, 0xf2, 0xb6, 0xf1, 0xb6, 0xf2, 0xb6, 0xf2, 0xb6, 0xf2, - 0xb7, 0xf2, 0xb6, 0xf2, 0xb7, 0xf2, 0xb6, 0xf2, 0xb7, 0xf2, 0xb6, 0xf2, - 0xb8, 0xf2, 0xb6, 0xf2, 0xb8, 0xf2, 0xb6, 0xf2, 0xb8, 0xf2, 0xb6, 0xf2, - 0xb9, 0xf2, 0xb6, 0xf2, 0xb9, 0xf2, 0xb6, 0xf2, 0xb9, 0xf2, 0xb6, 0xf2, - 0xba, 0xf2, 0xba, 0xf2, 0xba, 0xf3, 0xba, 0xf2, 0xba, 0xf3, 0xba, 0xf2, - 0xbb, 0xf3, 0xba, 0xf2, 0xbb, 0xf3, 0xba, 0xf2, 0xbb, 0xf3, 0xba, 0xf2, - 0xbc, 0xf3, 0xba, 0xf2, 0xbc, 0xf3, 0xba, 0xf2, 0xbc, 0xf3, 0xba, 0xf2, - 0xbd, 0xf3, 0xba, 0xf2, 0xbd, 0xf3, 0xba, 0xf2, 0xbd, 0xf3, 0xbe, 0xf2, - 0xbe, 0xf4, 0xbd, 0xf2, 0xbe, 0xf4, 0xbe, 0xf2, 0xbe, 0xf4, 0xbd, 0xf2, - 0xbf, 0xf4, 0xbe, 0xf2, 0xbf, 0xf4, 0xbd, 0xf2, 0xbf, 0xf4, 0xbe, 0xf2, - 0xc0, 0xf4, 0xbd, 0xf2, 0xc0, 0xf4, 0xbe, 0xf2, 0xc0, 0xf4, 0xbd, 0xf2, - 0xc1, 0xf4, 0xcb, 0xf2, 0xc1, 0xe6, 0xcb, 0xf2, 0xc1, 0xe8, 0xcb, 0xf2, - 0xc1, 0xe6, 0xcb, 0xf2, 0xc2, 0xe8, 0xcb, 0xf2, 0xc2, 0xe6, 0xcb, 0xf2, - 0xc2, 0xe8, 0xcb, 0xf2, 0xc3, 0xe6, 0xcb, 0xf2, 0xc3, 0xe8, 0xcb, 0xf2, - 0xc3, 0xe6, 0xcb, 0xf2, 0xc4, 0xe8, 0xcb, 0xf2, 0xc4, 0xe6, 0xcc, 0xf2, - 0xc4, 0xe3, 0xcb, 0xf2, 0xc5, 0xe6, 0xcc, 0xf2, 0xc5, 0xe3, 0xcb, 0xf2, - 0xc5, 0xe6, 0xcc, 0xf2, 0xc6, 0xe3, 0xcb, 0xf2, 0xc6, 0xe6, 0xcc, 0xf2, - 0xc6, 0xe3, 0xcb, 0xf2, 0xc6, 0xe6, 0xcc, 0xf2, 0xc7, 0xe3, 0xcb, 0xf2, - 0xc7, 0xe6, 0xcc, 0xf2, 0xc7, 0xe3, 0xcb, 0xf2, 0xc8, 0xe6, 0xcc, 0xf2, - 0xc8, 0xe3, 0xcb, 0xf2, 0xc8, 0xe6, 0xcc, 0xf2, 0xc9, 0xe3, 0xcb, 0xf2, - 0xc9, 0xe6, 0xcc, 0xf2, 0xc9, 0xe3, 0xcc, 0xf2, 0xc9, 0xe3, 0xcc, 0xf2, - 0xca, 0xe3, 0xcc, 0xf2, 0xca, 0xe3, 0xcc, 0xf2, 0xca, 0xe3, 0xcc, 0xf2, - 0xcb, 0xe3, 0xcc, 0xf2, 0xcb, 0xe3, 0xcc, 0xf2, 0xcb, 0xe3, 0xcc, 0xf2, - 0xcc, 0xe3, 0xcc, 0xf2, 0xcb, 0xe3, 0xcc, 0xf2, 0xcc, 0xe3, 0xcc, 0xf2, - 0xcb, 0xe3, 0xcd, 0xf2, 0xcc, 0xe3, 0xcd, 0xf2, 0xcb, 0xe3, 0xcd, 0xf2, - 0xcc, 0xe3, 0xce, 0xf2, 0xcb, 0xe3, 0xce, 0xf2, 0xcc, 0xe3, 0xce, 0xf2, - 0xcb, 0xe3, 0xce, 0xf2, 0xcc, 0xe3, 0xcf, 0xf2, 0xcb, 0xe3, 0xcf, 0xf2, - 0xcc, 0xe3, 0xcf, 0xf2, 0xcb, 0xe3, 0xd0, 0xf2, 0xcc, 0xe3, 0xd0, 0xf2, - 0xcb, 0xe3, 0xd0, 0xf2, 0xcc, 0xe3, 0xd0, 0xf1, 0xcc, 0xe3, 0xd1, 0xf2, - 0xcc, 0xe3, 0xd1, 0xf1, 0xcc, 0xe3, 0xd1, 0xf2, 0xcc, 0xe3, 0xd2, 0xf1, - 0xcc, 0xe3, 0xd2, 0xf2, 0xcc, 0xe3, 0xd2, 0xf1, 0xcc, 0xe3, 0xd2, 0xf2, - 0xcc, 0xe3, 0xd3, 0xf1, 0xcc, 0xe3, 0xd3, 0xf2, 0xcc, 0xe3, 0xd3, 0xf1, - 0xcc, 0xe3, 0xd4, 0xf2, 0xcc, 0xe3, 0xd4, 0xf1, 0xcc, 0xe3, 0xd4, 0xf2, - 0xcc, 0xe3, 0xd4, 0xf1, 0xcc, 0xe3, 0xd5, 0xf2, 0xcc, 0xe3, 0xd5, 0xf1, - 0xcc, 0xe3, 0xd5, 0xf2, 0xcc, 0xe3, 0xd6, 0xf1, 0xcc, 0xe3, 0xd6, 0xf2, - 0xcc, 0xe3, 0xd6, 0xf1, 0xcc, 0xe3, 0xd6, 0xf2, 0xcc, 0xe3, 0xd7, 0xf1, - 0xcc, 0xe3, 0xd7, 0xf2, 0xcc, 0xe3, 0xd7, 0xf1, 0xcc, 0xe3, 0xd7, 0xf2, - 0xcc, 0xe3, 0xd8, 0xf1, 0xcc, 0xe3, 0xd8, 0xf2, 0xcc, 0xe3, 0xd8, 0xf1, - 0xcc, 0xe3, 0xd9, 0xf4, 0xe4, 0xe3, 0xd9, 0xf3, 0xe4, 0xe3, 0xd9, 0xf4, - 0xe4, 0xe3, 0xd9, 0xf3, 0xe4, 0xe3, 0xda, 0xf4, 0xe4, 0xe3, 0xda, 0xf3, - 0xe4, 0xe3, 0xda, 0xf4, 0xe4, 0xe3, 0xda, 0xf3, 0xe4, 0xe3, 0xdb, 0xf4, - 0xe4, 0xe3, 0xdb, 0xf3, 0xe4, 0xe3, 0xdb, 0xf4, 0xe4, 0xe3, 0xdb, 0xf3, - 0xe4, 0xe3, 0xdc, 0xf4, 0xe4, 0xe3, 0xdc, 0xf3, 0xe4, 0xe3, 0xdc, 0xf4, - 0xe4, 0xe3, 0xdd, 0xf3, 0xe4, 0xe3, 0xdd, 0xf4, 0xe4, 0xe3, 0xdd, 0xf3, - 0xe4, 0xe3, 0xdd, 0xf4, 0xe4, 0xe3, 0xde, 0xf3, 0xe4, 0xe3, 0xde, 0xf4, - 0xe4, 0xe3, 0xde, 0xf3, 0xe4, 0xe3, 0xde, 0xf4, 0xe4, 0xe3, 0xdf, 0xf3, - 0xe4, 0xe3, 0xdf, 0xf4, 0xe4, 0xe3, 0xdf, 0xf3, 0xe4, 0xe3, 0xdf, 0xf4, - 0xe4, 0xe3, 0xe0, 0xf3, 0xe4, 0xe3, 0xe0, 0xf4, 0xe4, 0xe3, 0xe0, 0xf3, - 0xe4, 0xe3, 0xe1, 0xf2, 0xe5, 0xe3, 0xe1, 0xf3, 0xe4, 0xe3, 0xe1, 0xf2, - 0xe5, 0xe3, 0xe1, 0xf3, 0xe4, 0xe3, 0xe2, 0xf2, 0xe5, 0xe3, 0xe2, 0xf3, - 0xe4, 0xe3, 0xe2, 0xf2, 0xe5, 0xe3, 0xe2, 0xf3, 0xe4, 0xe3, 0xe3, 0xf2, - 0xe5, 0xe3, 0xe3, 0xf3, 0xe4, 0xe3, 0xe3, 0xf2, 0xe5, 0xe3, 0xe3, 0xf3, - 0xe4, 0xe3, 0xe4, 0xf2, 0xe5, 0xe3, 0xe4, 0xf2, 0xe5, 0xe3, 0xe4, 0xf2, - 0xe5, 0xe3, 0xe4, 0xf2, 0xe5, 0xe3, 0xe4, 0xf2, 0xe5, 0xe3, 0xe4, 0xf2, - 0xe5, 0xe3, 0xe4, 0xf2, 0xe5, 0xe3, 0xe4, 0xf2, 0xe5, 0xe3, 0xe7, 0xf2, - 0xe6, 0xe3, 0xe6, 0xf2, 0xe6, 0xe3, 0xe7, 0xf2, 0xe6, 0xe3, 0xe6, 0xf2, - 0xe6, 0xe3, 0xe7, 0xf2, 0xe6, 0xe3, 0xe7, 0xf2, 0xe6, 0xe3, 0xe7, 0xf2, - 0xe6, 0xe3, 0xe7, 0xf2, 0xe6, 0xe3, 0xe8, 0xf2, 0xe6, 0xe3, 0xe8, 0xf2, - 0xe6, 0xe3, 0xe8, 0xf2, 0xe6, 0xe3, 0xe8, 0xf2, 0xe6, 0xe3, 0xe9, 0xf2, - 0xe6, 0xe3, 0xe9, 0xf2, 0xe6, 0xe3, 0xe9, 0xf2, 0xe6, 0xe3, 0xe9, 0xf2, - 0xe6, 0xe3, 0xea, 0xf2, 0xe6, 0xe3, 0xea, 0xf2, 0xe6, 0xe3, 0xea, 0xf2, - 0xe6, 0xe3, 0xea, 0xf2, 0xe6, 0xe3, 0xeb, 0xf1, 0xe7, 0xe3, 0xeb, 0xf2, - 0xe6, 0xe3, 0xeb, 0xf1, 0xe7, 0xe3, 0xeb, 0xf2, 0xf0, 0xe3, 0xec, 0xf3, - 0xf0, 0xe3, 0xec, 0xf2, 0xf0, 0xe3, 0xec, 0xf3, 0xf0, 0xe3, 0xec, 0xf2, - 0xf0, 0xe3, 0xec, 0xf3, 0xf0, 0xe3, 0xed, 0xf2, 0xf0, 0xe3, 0xed, 0xf3, - 0xf0, 0xe3, 0xed, 0xf2, 0xf0, 0xe3, 0xed, 0xf3, 0xf0, 0xe3, 0xee, 0xf2, - 0xf0, 0xe3, 0xee, 0xf3, 0xf0, 0xe3, 0xee, 0xf2, 0xf0, 0xe3, 0xee, 0xf3, - 0xf0, 0xe3, 0xef, 0xf2, 0xf0, 0xe3, 0xef, 0xf3, 0xf0, 0xe3, 0xef, 0xf2, - 0xf0, 0xe3, 0xef, 0xf2, 0xf0, 0xe3, 0xf0, 0xf2, 0xf0, 0xe3, 0xf0, 0xf2, - 0xf0, 0xe3, 0xf0, 0xf2, 0xf0, 0xe3, 0xf0, 0xf2, 0xf0, 0xe3, 0xf1, 0xf2, - 0xf0, 0xe3, 0xf1, 0xf2, 0xf0, 0xe3, 0xf1, 0xf2, 0xf0, 0xe3, 0xf1, 0xf2, - 0xf0, 0xe3, 0xf2, 0xf2, 0xf0, 0xe3, 0xf2, 0xf2, 0xf0, 0xe3, 0xf2, 0xf2, - 0xf0, 0xe3, 0xf2, 0xf2, 0xf0, 0xe3, 0xf2, 0xf2, 0xf0, 0xe3, 0xf3, 0xf2, - 0xf0, 0xe3, 0xf3, 0xf2, 0xf0, 0xe3, 0xf3, 0xf2, 0xf0, 0xe3, 0xf3, 0xf2, - 0xf0, 0xe3, 0xf4, 0xf2, 0xf0, 0xe3, 0xf4, 0xf2, 0xf0, 0xe3, 0xf4, 0xf2, - 0xf0, 0xe3, 0xf4, 0xf2, 0xf0, 0xe3, 0xf5, 0xf2, 0xf0, 0xe3, 0xf5, 0xf1, - 0xf1, 0xe3, 0xf5, 0xf2, 0xf0, 0xe3, 0xf5, 0xf1, 0xf1, 0xe3, 0xf5, 0xf2, - 0xf0, 0xe3, 0xf6, 0xf1, 0xf1, 0xe3, 0xf6, 0xf2, 0xf0, 0xe3, 0xf6, 0xf1, - 0xf1, 0xe3, 0xf6, 0xf2, 0xf0, 0xe3, 0xf7, 0xf1, 0xf1, 0xe3, 0xf7, 0xf2, - 0xf0, 0xe3, 0xf7, 0xf1, 0xf1, 0xe3, 0xf7, 0xf2, 0xf0, 0xe3, 0xf8, 0xf1, - 0xf1, 0xe3, 0xf8, 0xf2, 0xf0, 0xe3, 0xf8, 0xf1, 0xf1, 0xe3, 0xf8, 0xf2, - 0xf0, 0xe3, 0xf8, 0xf1, 0xf1, 0xe3, 0xf9, 0xf2, 0xf0, 0xe3, 0xf9, 0xf1, - 0xf1, 0xe3, 0xf9, 0xf0, 0xf1, 0xe3, 0xf9, 0xf1, 0xf1, 0xe3, 0xfa, 0xf0, - 0xf1, 0xe3, 0xfa, 0xf1, 0xf1, 0xe3, 0xfa, 0xf0, 0xf1, 0xe3, 0xfa, 0xf1, - 0xf1, 0xe3, 0xfa, 0xf0, 0xf1, 0xe3, 0xfb, 0xf1, 0xf1, 0xe3, 0xfb, 0xf0, - 0xf1, 0xe3, 0xfb, 0xf1, 0xf1, 0xe3, 0xfb, 0xf0, 0xf1, 0xe3, 0xfc, 0xf1, - 0xf1, 0xe3, 0xfc, 0xf0, 0xf1, 0xe3, 0xfc, 0xf1, 0xf1, 0xe3, 0xfc, 0xf0, - 0xf1, 0xe3, 0xfc, 0xf1, 0xf1, 0xe3, 0xfd, 0xf0, 0xf1, 0xe3, 0xfd, 0xf1, - 0xf1, 0xe3, 0xfd, 0xf0, 0xf1, 0xe3, 0xfd, 0xf1, 0xf1, 0xe3, 0xfe, 0xf0, - 0xf1, 0xe3, 0xfe, 0xf1, 0xf1, 0xe3, 0xfe, 0xf0, 0xf1, 0xe3, 0xfe, 0xf1, - 0xf1, 0xe3, 0xfe, 0xf0, 0xf1, 0xe3, 0xff, 0xf1, 0xf1, 0xe3, 0xff, 0xf0, - 0xf1, 0xe3, 0x03, 0xf3, 0x83, 0xe4, 0x0a, 0xf4, 0x83, 0xe4, 0x0f, 0xf3, - 0x83, 0xe4, 0x14, 0xf4, 0x83, 0xe4, 0x17, 0xf3, 0x83, 0xe4, 0x1b, 0xf4, - 0x83, 0xe4, 0x1e, 0xf3, 0x83, 0xe4, 0x20, 0xf4, 0x83, 0xe4, 0x23, 0xf3, - 0x83, 0xe4, 0x25, 0xf4, 0x83, 0xe4, 0x27, 0xf3, 0x83, 0xe4, 0x29, 0xf4, - 0x83, 0xe4, 0x2b, 0xf3, 0x83, 0xe4, 0x2d, 0xf4, 0x83, 0xe4, 0x2f, 0xf3, - 0x83, 0xe4, 0x31, 0xf4, 0x83, 0xe4, 0x32, 0xf3, 0x83, 0xe4, 0x34, 0xf4, - 0x83, 0xe4, 0x35, 0xf3, 0x83, 0xe4, 0x37, 0xf4, 0x83, 0xe4, 0x38, 0xf3, - 0x83, 0xe4, 0x3a, 0xf4, 0x83, 0xe4, 0x3b, 0xf3, 0x83, 0xe4, 0x3c, 0xf4, - 0x83, 0xe4, 0x3e, 0xf3, 0x83, 0xe4, 0x3f, 0xf4, 0x83, 0xe4, 0x40, 0xf3, - 0x83, 0xe4, 0x42, 0xf4, 0x83, 0xe4, 0x43, 0xf3, 0x83, 0xe4, 0x44, 0xf4, - 0x83, 0xe4, 0x45, 0xf3, 0x83, 0xe4, 0x46, 0xf4, 0x83, 0xe4, 0x47, 0xf3, - 0x83, 0xe4, 0x48, 0xf4, 0x83, 0xe4, 0x49, 0xf3, 0x83, 0xe4, 0x4a, 0xf4, - 0x83, 0xe4, 0x4b, 0xf3, 0x83, 0xe4, 0x4c, 0xf4, 0x83, 0xe4, 0x4d, 0xf3, - 0x83, 0xe4, 0x4e, 0xf4, 0x83, 0xe4, 0x4f, 0xf3, 0x83, 0xe4, 0x50, 0xf4, - 0x83, 0xe4, 0x51, 0xf3, 0x83, 0xe4, 0x52, 0xf4, 0x83, 0xe4, 0x53, 0xf3, - 0x83, 0xe4, 0x54, 0xf4, 0x83, 0xe4, 0x55, 0xf3, 0x83, 0xe4, 0x56, 0xf4, - 0x83, 0xe4, 0x57, 0xf3, 0x83, 0xe4, 0x58, 0xf4, 0x83, 0xe4, 0x58, 0xf3, - 0x83, 0xe4, 0x59, 0xf4, 0x83, 0xe4, 0x5a, 0xf3, 0x83, 0xe4, 0x5b, 0xf4, - 0x83, 0xe4, 0x5c, 0xf3, 0x83, 0xe4, 0x5d, 0xf4, 0x83, 0xe4, 0x5d, 0xf3, - 0x83, 0xe4, 0x5e, 0xf4, 0x83, 0xe4, 0x5f, 0xf3, 0x83, 0xe4, 0x60, 0xf4, - 0x83, 0xe4, 0x60, 0xf3, 0x83, 0xe4, 0x61, 0xf4, 0x83, 0xe4, 0x62, 0xf3, - 0x83, 0xe4, 0x63, 0xf4, 0x83, 0xe4, 0x63, 0xf3, 0x83, 0xe4, 0x64, 0xf4, - 0x83, 0xe4, 0x65, 0xf3, 0x83, 0xe4, 0x66, 0xf4, 0x83, 0xe4, 0x66, 0xf3, - 0x83, 0xe4, 0x67, 0xf4, 0x83, 0xe4, 0x68, 0xf3, 0x83, 0xe4, 0x68, 0xf4, - 0x83, 0xe4, 0x69, 0xf3, 0x83, 0xe4, 0x6a, 0xf4, 0x83, 0xe4, 0x6a, 0xf3, - 0x83, 0xe4, 0x6b, 0xf4, 0x83, 0xe4, 0x6c, 0xf3, 0x83, 0xe4, 0x6c, 0xf4, - 0x83, 0xe4, 0x6d, 0xf3, 0x83, 0xe4, 0x6e, 0xf4, 0x83, 0xe4, 0x6e, 0xf3, - 0x83, 0xe4, 0x6f, 0xf4, 0x83, 0xe4, 0x70, 0xf3, 0x83, 0xe4, 0x70, 0xf4, - 0x83, 0xe4, 0x71, 0xf3, 0x83, 0xe4, 0x72, 0xf4, 0x83, 0xe4, 0x72, 0xf3, - 0x83, 0xe4, 0x73, 0xf4, 0x83, 0xe4, 0x73, 0xf3, 0x83, 0xe4, 0x74, 0xf4, - 0x83, 0xe4, 0x75, 0xf3, 0x83, 0xe4, 0x75, 0xf4, 0x83, 0xe4, 0x76, 0xf3, - 0x83, 0xe4, 0x76, 0xf4, 0x83, 0xe4, 0x77, 0xf3, 0x83, 0xe4, 0x78, 0xf4, - 0x83, 0xe4, 0x78, 0xf3, 0x83, 0xe4, 0x79, 0xf4, 0x83, 0xe4, 0x79, 0xf3, - 0x83, 0xe4, 0x7a, 0xf4, 0x83, 0xe4, 0x7a, 0xf3, 0x83, 0xe4, 0x7b, 0xf4, - 0x83, 0xe4, 0x7c, 0xf3, 0x83, 0xe4, 0x7c, 0xf4, 0x83, 0xe4, 0x7d, 0xf3, - 0x83, 0xe4, 0x7d, 0xf4, 0x83, 0xe4, 0x7e, 0xf3, 0x83, 0xe4, 0x7e, 0xf4, - 0x83, 0xe4, 0x7f, 0xf3, 0x83, 0xe4, 0x7f, 0xf3, 0x84, 0xe4, 0x80, 0xf3, - 0x83, 0xe4, 0x81, 0xf3, 0x84, 0xe4, 0x81, 0xf3, 0x83, 0xe4, 0x82, 0xf3, - 0x84, 0xe4, 0x82, 0xf3, 0x83, 0xe4, 0x83, 0xf3, 0x84, 0xe4, 0x83, 0xf3, - 0x83, 0xe3, 0x83, 0xf3, 0x84, 0xe4, 0x83, 0xf3, 0x84, 0xe3, 0x83, 0xf3, - 0x85, 0xe4, 0x83, 0xf3, 0x85, 0xe3, 0x83, 0xf3, 0x86, 0xe4, 0x83, 0xf3, - 0x86, 0xe3, 0x83, 0xf3, 0x87, 0xe4, 0x87, 0xf3, 0x87, 0xe8, 0x87, 0xf3, - 0x88, 0xe8, 0x87, 0xf3, 0x88, 0xe8, 0x87, 0xf3, 0x89, 0xe8, 0x87, 0xf3, - 0x89, 0xe8, 0x8a, 0xf3, 0x8a, 0xe9, 0x8a, 0xf3, 0x8a, 0xe9, 0x8b, 0xf3, - 0x8b, 0xe9, 0x8b, 0xf3, 0x8b, 0xe9, 0x8c, 0xf3, 0x8c, 0xe9, 0x8c, 0xf3, - 0x8c, 0xe9, 0x8d, 0xf3, 0x8d, 0xe9, 0x8c, 0xf3, 0x8d, 0xe9, 0x8d, 0xf3, - 0x8e, 0xe9, 0x8c, 0xf3, 0x8e, 0xe9, 0x8d, 0xf3, 0x8e, 0xe9, 0x8c, 0xf3, - 0x8f, 0xe9, 0x8d, 0xf3, 0x8f, 0xe9, 0x90, 0xf3, 0x90, 0xea, 0x90, 0xf3, - 0x90, 0xea, 0x91, 0xf3, 0x91, 0xea, 0x91, 0xf3, 0x91, 0xea, 0x92, 0xf3, - 0x92, 0xea, 0x91, 0xf3, 0x92, 0xea, 0x92, 0xf3, 0x93, 0xea, 0x91, 0xf3, - 0x93, 0xea, 0x92, 0xf3, 0x94, 0xea, 0x91, 0xf3, 0x94, 0xea, 0x92, 0xf3, - 0x94, 0xea, 0x95, 0xf3, 0x95, 0xeb, 0x95, 0xf3, 0x95, 0xeb, 0x96, 0xf3, - 0x96, 0xeb, 0x96, 0xf3, 0x96, 0xeb, 0x97, 0xf3, 0x97, 0xeb, 0x96, 0xf3, - 0x97, 0xeb, 0x97, 0xf3, 0x98, 0xeb, 0x96, 0xf3, 0x98, 0xeb, 0x97, 0xf3, - 0x98, 0xeb, 0x96, 0xf3, 0x99, 0xeb, 0x97, 0xf3, 0x99, 0xeb, 0x9a, 0xf3, - 0x9a, 0xec, 0x9a, 0xf3, 0x9a, 0xec, 0x9a, 0xf3, 0x9a, 0xec, 0x9b, 0xf3, - 0x9b, 0xec, 0x9b, 0xf3, 0x9b, 0xec, 0x9b, 0xf3, 0x9c, 0xec, 0x9b, 0xf3, - 0x9c, 0xec, 0x9b, 0xf3, 0x9d, 0xec, 0x9b, 0xf3, 0x9d, 0xec, 0x9b, 0xf3, - 0x9d, 0xec, 0x9b, 0xf3, 0x9e, 0xec, 0x9b, 0xf3, 0x9e, 0xec, 0x9b, 0xf3, - 0x9f, 0xec, 0x9f, 0xf3, 0x9f, 0xed, 0x9f, 0xf3, 0x9f, 0xed, 0xa0, 0xf3, - 0xa0, 0xed, 0x9f, 0xf3, 0xa0, 0xed, 0xa0, 0xf3, 0xa1, 0xed, 0x9f, 0xf3, - 0xa1, 0xed, 0xa0, 0xf3, 0xa1, 0xed, 0x9f, 0xf3, 0xa2, 0xed, 0xa0, 0xf3, - 0xa2, 0xed, 0x9f, 0xf3, 0xa3, 0xed, 0xa0, 0xf3, 0xa3, 0xed, 0xa3, 0xf3, - 0xa3, 0xee, 0xa4, 0xf3, 0xa4, 0xee, 0xa4, 0xf3, 0xa4, 0xee, 0xa4, 0xf3, - 0xa5, 0xee, 0xa4, 0xf3, 0xa5, 0xee, 0xa4, 0xf3, 0xa5, 0xee, 0xa4, 0xf3, - 0xa6, 0xee, 0xa4, 0xf3, 0xa6, 0xee, 0xa4, 0xf3, 0xa6, 0xee, 0xa4, 0xf3, - 0xa7, 0xee, 0xa4, 0xf3, 0xa7, 0xee, 0xa8, 0xf3, 0xa8, 0xef, 0xa8, 0xf3, - 0xa8, 0xef, 0xa8, 0xf3, 0xa8, 0xef, 0xa8, 0xf3, 0xa9, 0xef, 0xa8, 0xf3, - 0xa9, 0xef, 0xa8, 0xf3, 0xaa, 0xef, 0xa8, 0xf3, 0xaa, 0xef, 0xa8, 0xf3, - 0xaa, 0xef, 0xa8, 0xf3, 0xab, 0xef, 0xa8, 0xf3, 0xab, 0xef, 0xa8, 0xf3, - 0xab, 0xef, 0xac, 0xf3, 0xac, 0xf0, 0xac, 0xf3, 0xac, 0xf0, 0xac, 0xf3, - 0xac, 0xf0, 0xac, 0xf3, 0xad, 0xf0, 0xac, 0xf3, 0xad, 0xf0, 0xac, 0xf3, - 0xae, 0xf0, 0xac, 0xf3, 0xae, 0xf0, 0xac, 0xf3, 0xae, 0xf0, 0xac, 0xf3, - 0xaf, 0xf0, 0xac, 0xf3, 0xaf, 0xf0, 0xac, 0xf3, 0xaf, 0xf0, 0xb0, 0xf3, - 0xb0, 0xf1, 0xb0, 0xf3, 0xb0, 0xf1, 0xb0, 0xf3, 0xb0, 0xf1, 0xb0, 0xf3, - 0xb1, 0xf1, 0xb0, 0xf3, 0xb1, 0xf1, 0xb0, 0xf3, 0xb2, 0xf1, 0xb0, 0xf3, - 0xb2, 0xf1, 0xb0, 0xf3, 0xb2, 0xf1, 0xb0, 0xf3, 0xb3, 0xf1, 0xb0, 0xf3, - 0xb3, 0xf1, 0xb0, 0xf3, 0xb3, 0xf1, 0xb0, 0xf3, 0xb4, 0xf1, 0xb0, 0xf3, - 0xb4, 0xf1, 0xb4, 0xf3, 0xb4, 0xf2, 0xb4, 0xf3, 0xb5, 0xf2, 0xb4, 0xf3, - 0xb5, 0xf2, 0xb4, 0xf3, 0xb5, 0xf2, 0xb4, 0xf3, 0xb6, 0xf2, 0xb4, 0xf3, - 0xb6, 0xf2, 0xb4, 0xf3, 0xb6, 0xf2, 0xb4, 0xf3, 0xb7, 0xf2, 0xb4, 0xf3, - 0xb7, 0xf2, 0xb4, 0xf3, 0xb7, 0xf2, 0xb4, 0xf3, 0xb8, 0xf2, 0xb8, 0xf3, - 0xb8, 0xf3, 0xb8, 0xf3, 0xb8, 0xf3, 0xb8, 0xf3, 0xb9, 0xf3, 0xb8, 0xf3, - 0xb9, 0xf3, 0xb8, 0xf3, 0xb9, 0xf3, 0xb8, 0xf3, 0xba, 0xf3, 0xb8, 0xf3, - 0xba, 0xf3, 0xb8, 0xf3, 0xba, 0xf3, 0xb8, 0xf3, 0xbb, 0xf3, 0xb8, 0xf3, - 0xbb, 0xf3, 0xb8, 0xf3, 0xbb, 0xf3, 0xbc, 0xf3, 0xbc, 0xf4, 0xbb, 0xf3, - 0xbc, 0xf4, 0xbc, 0xf3, 0xbc, 0xf4, 0xbb, 0xf3, 0xbd, 0xf4, 0xbc, 0xf3, - 0xbd, 0xf4, 0xbb, 0xf3, 0xbd, 0xf4, 0xbc, 0xf3, 0xbe, 0xf4, 0xbb, 0xf3, - 0xbe, 0xf4, 0xbc, 0xf3, 0xbe, 0xf4, 0xbb, 0xf3, 0xbf, 0xf4, 0xbc, 0xf3, - 0xbf, 0xf4, 0xbf, 0xf3, 0xbf, 0xf5, 0xbf, 0xf3, 0xc0, 0xf5, 0xbf, 0xf3, - 0xc0, 0xf5, 0xbf, 0xf3, 0xc0, 0xf5, 0xbf, 0xf3, 0xc1, 0xf5, 0xcb, 0xf3, - 0xc1, 0xe6, 0xcb, 0xf3, 0xc1, 0xe9, 0xcb, 0xf3, 0xc1, 0xe6, 0xcb, 0xf3, - 0xc2, 0xe9, 0xcb, 0xf3, 0xc2, 0xe6, 0xcb, 0xf3, 0xc2, 0xe9, 0xcb, 0xf3, - 0xc3, 0xe6, 0xcb, 0xf3, 0xc3, 0xe9, 0xcb, 0xf3, 0xc3, 0xe6, 0xcb, 0xf3, - 0xc4, 0xe9, 0xcb, 0xf3, 0xc4, 0xe6, 0xcc, 0xf3, 0xc4, 0xe4, 0xcb, 0xf3, - 0xc5, 0xe6, 0xcc, 0xf3, 0xc5, 0xe4, 0xcb, 0xf3, 0xc5, 0xe6, 0xcc, 0xf3, - 0xc6, 0xe4, 0xcb, 0xf3, 0xc6, 0xe6, 0xcc, 0xf3, 0xc6, 0xe4, 0xcb, 0xf3, - 0xc6, 0xe6, 0xcc, 0xf3, 0xc7, 0xe4, 0xcb, 0xf3, 0xc7, 0xe6, 0xcc, 0xf3, - 0xc7, 0xe4, 0xcb, 0xf3, 0xc8, 0xe6, 0xcc, 0xf3, 0xc8, 0xe4, 0xcb, 0xf3, - 0xc8, 0xe6, 0xcc, 0xf3, 0xc9, 0xe4, 0xcb, 0xf3, 0xc9, 0xe6, 0xcc, 0xf3, - 0xc9, 0xe4, 0xcb, 0xf3, 0xc9, 0xe6, 0xcc, 0xf3, 0xca, 0xe4, 0xcb, 0xf3, - 0xca, 0xe6, 0xcc, 0xf3, 0xca, 0xe4, 0xcc, 0xf3, 0xcb, 0xe4, 0xcc, 0xf3, - 0xcb, 0xe4, 0xcc, 0xf3, 0xcb, 0xe4, 0xcc, 0xf3, 0xcb, 0xe4, 0xcc, 0xf3, - 0xcb, 0xe4, 0xcc, 0xf3, 0xcb, 0xe4, 0xcc, 0xf3, 0xcb, 0xe4, 0xcd, 0xf2, - 0xcc, 0xe4, 0xcd, 0xf3, 0xcb, 0xe4, 0xcd, 0xf2, 0xcc, 0xe4, 0xce, 0xf3, - 0xcb, 0xe4, 0xce, 0xf2, 0xcc, 0xe4, 0xce, 0xf3, 0xcb, 0xe4, 0xce, 0xf2, - 0xcc, 0xe4, 0xcf, 0xf3, 0xcb, 0xe4, 0xcf, 0xf2, 0xcc, 0xe4, 0xcf, 0xf3, - 0xcb, 0xe4, 0xd0, 0xf2, 0xcc, 0xe4, 0xd0, 0xf3, 0xcb, 0xe4, 0xd0, 0xf2, - 0xcc, 0xe4, 0xd0, 0xf1, 0xcc, 0xe4, 0xd1, 0xf2, 0xcc, 0xe4, 0xd1, 0xf1, - 0xcc, 0xe4, 0xd1, 0xf2, 0xcc, 0xe4, 0xd2, 0xf1, 0xcc, 0xe4, 0xd2, 0xf2, - 0xcc, 0xe4, 0xd2, 0xf1, 0xcc, 0xe4, 0xd2, 0xf2, 0xcc, 0xe4, 0xd3, 0xf1, - 0xcc, 0xe4, 0xd3, 0xf2, 0xcc, 0xe4, 0xd3, 0xf1, 0xcc, 0xe4, 0xd4, 0xf2, - 0xcc, 0xe4, 0xd4, 0xf1, 0xcc, 0xe4, 0xd4, 0xf2, 0xcc, 0xe4, 0xd4, 0xf1, - 0xcc, 0xe4, 0xd5, 0xf2, 0xcc, 0xe4, 0xd5, 0xf1, 0xcc, 0xe4, 0xd5, 0xf2, - 0xcc, 0xe4, 0xd6, 0xf1, 0xcc, 0xe4, 0xd6, 0xf2, 0xcc, 0xe4, 0xd6, 0xf1, - 0xcc, 0xe4, 0xd6, 0xf2, 0xcc, 0xe4, 0xd7, 0xf1, 0xcc, 0xe4, 0xd7, 0xf2, - 0xcc, 0xe4, 0xd7, 0xf1, 0xcc, 0xe4, 0xd7, 0xf2, 0xcc, 0xe4, 0xd8, 0xf1, - 0xcc, 0xe4, 0xd8, 0xf2, 0xcc, 0xe4, 0xd8, 0xf1, 0xcc, 0xe4, 0xd9, 0xf5, - 0xe4, 0xe4, 0xd9, 0xf3, 0xe4, 0xe4, 0xd9, 0xf5, 0xe4, 0xe4, 0xd9, 0xf3, - 0xe4, 0xe4, 0xda, 0xf5, 0xe4, 0xe4, 0xda, 0xf3, 0xe4, 0xe4, 0xda, 0xf5, - 0xe4, 0xe4, 0xda, 0xf3, 0xe4, 0xe4, 0xdb, 0xf5, 0xe4, 0xe4, 0xdb, 0xf3, - 0xe4, 0xe4, 0xdb, 0xf5, 0xe4, 0xe4, 0xdb, 0xf3, 0xe4, 0xe4, 0xdc, 0xf5, - 0xe4, 0xe4, 0xdc, 0xf3, 0xe4, 0xe4, 0xdc, 0xf5, 0xe4, 0xe4, 0xdd, 0xf3, - 0xe4, 0xe4, 0xdd, 0xf5, 0xe4, 0xe4, 0xdd, 0xf3, 0xe4, 0xe4, 0xdd, 0xf5, - 0xe4, 0xe4, 0xde, 0xf3, 0xe4, 0xe4, 0xde, 0xf5, 0xe4, 0xe4, 0xde, 0xf3, - 0xe4, 0xe4, 0xde, 0xf5, 0xe4, 0xe4, 0xdf, 0xf3, 0xe4, 0xe4, 0xdf, 0xf5, - 0xe4, 0xe4, 0xdf, 0xf3, 0xe4, 0xe4, 0xdf, 0xf5, 0xe4, 0xe4, 0xe0, 0xf3, - 0xe4, 0xe4, 0xe0, 0xf5, 0xe4, 0xe4, 0xe0, 0xf3, 0xe4, 0xe4, 0xe1, 0xf3, - 0xe5, 0xe4, 0xe1, 0xf3, 0xe4, 0xe4, 0xe1, 0xf3, 0xe5, 0xe4, 0xe1, 0xf3, - 0xe4, 0xe4, 0xe2, 0xf3, 0xe5, 0xe4, 0xe2, 0xf3, 0xe4, 0xe4, 0xe2, 0xf3, - 0xe5, 0xe4, 0xe2, 0xf3, 0xe4, 0xe4, 0xe3, 0xf3, 0xe5, 0xe4, 0xe3, 0xf3, - 0xe4, 0xe4, 0xe3, 0xf3, 0xe5, 0xe4, 0xe3, 0xf3, 0xe4, 0xe4, 0xe4, 0xf3, - 0xe5, 0xe4, 0xe4, 0xf3, 0xe4, 0xe4, 0xe4, 0xf3, 0xe5, 0xe4, 0xe4, 0xf3, - 0xe4, 0xe4, 0xe4, 0xf3, 0xe5, 0xe4, 0xe4, 0xf3, 0xe5, 0xe4, 0xe4, 0xf3, - 0xe5, 0xe4, 0xe4, 0xf3, 0xe5, 0xe4, 0xe7, 0xf3, 0xe6, 0xe4, 0xe6, 0xf3, - 0xe6, 0xe4, 0xe7, 0xf3, 0xe6, 0xe4, 0xe6, 0xf2, 0xe6, 0xe4, 0xe7, 0xf3, - 0xe6, 0xe4, 0xe7, 0xf2, 0xe6, 0xe4, 0xe7, 0xf3, 0xe6, 0xe4, 0xe7, 0xf2, - 0xe6, 0xe4, 0xe8, 0xf3, 0xe6, 0xe4, 0xe8, 0xf2, 0xe6, 0xe4, 0xe8, 0xf3, - 0xe6, 0xe4, 0xe8, 0xf2, 0xe6, 0xe4, 0xe9, 0xf3, 0xe6, 0xe4, 0xe9, 0xf2, - 0xe6, 0xe4, 0xe9, 0xf3, 0xe6, 0xe4, 0xe9, 0xf2, 0xe6, 0xe4, 0xea, 0xf3, - 0xe6, 0xe4, 0xea, 0xf2, 0xe6, 0xe4, 0xea, 0xf3, 0xe6, 0xe4, 0xea, 0xf2, - 0xe6, 0xe4, 0xeb, 0xf1, 0xe7, 0xe4, 0xeb, 0xf2, 0xe6, 0xe4, 0xeb, 0xf1, - 0xe7, 0xe4, 0xeb, 0xf5, 0xf0, 0xe4, 0xec, 0xf3, 0xf0, 0xe4, 0xec, 0xf5, - 0xf0, 0xe4, 0xec, 0xf3, 0xf0, 0xe4, 0xec, 0xf3, 0xf0, 0xe4, 0xec, 0xf3, - 0xf0, 0xe4, 0xed, 0xf3, 0xf0, 0xe4, 0xed, 0xf3, 0xf0, 0xe4, 0xed, 0xf3, - 0xf0, 0xe4, 0xed, 0xf3, 0xf0, 0xe4, 0xee, 0xf3, 0xf0, 0xe4, 0xee, 0xf3, - 0xf0, 0xe4, 0xee, 0xf3, 0xf0, 0xe4, 0xee, 0xf3, 0xf0, 0xe4, 0xef, 0xf3, - 0xf0, 0xe4, 0xef, 0xf3, 0xf0, 0xe4, 0xef, 0xf3, 0xf0, 0xe4, 0xef, 0xf3, - 0xf0, 0xe4, 0xf0, 0xf3, 0xf0, 0xe4, 0xf0, 0xf3, 0xf0, 0xe4, 0xf0, 0xf3, - 0xf0, 0xe4, 0xf0, 0xf2, 0xf0, 0xe4, 0xf1, 0xf3, 0xf0, 0xe4, 0xf1, 0xf2, - 0xf0, 0xe4, 0xf1, 0xf2, 0xf0, 0xe4, 0xf1, 0xf2, 0xf0, 0xe4, 0xf2, 0xf2, - 0xf0, 0xe4, 0xf2, 0xf2, 0xf0, 0xe4, 0xf2, 0xf2, 0xf0, 0xe4, 0xf2, 0xf2, - 0xf0, 0xe4, 0xf2, 0xf2, 0xf0, 0xe4, 0xf3, 0xf2, 0xf0, 0xe4, 0xf3, 0xf2, - 0xf0, 0xe4, 0xf3, 0xf2, 0xf0, 0xe4, 0xf3, 0xf2, 0xf0, 0xe4, 0xf4, 0xf2, - 0xf0, 0xe4, 0xf4, 0xf2, 0xf0, 0xe4, 0xf4, 0xf2, 0xf0, 0xe4, 0xf4, 0xf2, - 0xf0, 0xe4, 0xf5, 0xf2, 0xf0, 0xe4, 0xf5, 0xf2, 0xf0, 0xe4, 0xf5, 0xf2, - 0xf0, 0xe4, 0xf5, 0xf2, 0xf0, 0xe4, 0xf5, 0xf2, 0xf0, 0xe4, 0xf6, 0xf2, - 0xf0, 0xe4, 0xf6, 0xf2, 0xf0, 0xe4, 0xf6, 0xf2, 0xf0, 0xe4, 0xf6, 0xf2, - 0xf0, 0xe4, 0xf7, 0xf2, 0xf0, 0xe4, 0xf7, 0xf2, 0xf0, 0xe4, 0xf7, 0xf2, - 0xf0, 0xe4, 0xf7, 0xf2, 0xf0, 0xe4, 0xf8, 0xf1, 0xf1, 0xe4, 0xf8, 0xf2, - 0xf0, 0xe4, 0xf8, 0xf1, 0xf1, 0xe4, 0xf8, 0xf2, 0xf0, 0xe4, 0xf8, 0xf1, - 0xf1, 0xe4, 0xf9, 0xf2, 0xf0, 0xe4, 0xf9, 0xf1, 0xf1, 0xe4, 0xf9, 0xf2, - 0xf0, 0xe4, 0xf9, 0xf1, 0xf1, 0xe4, 0xfa, 0xf2, 0xf0, 0xe4, 0xfa, 0xf1, - 0xf1, 0xe4, 0xfa, 0xf2, 0xf0, 0xe4, 0xfa, 0xf1, 0xf1, 0xe4, 0xfa, 0xf2, - 0xf0, 0xe4, 0xfb, 0xf1, 0xf1, 0xe4, 0xfb, 0xf2, 0xf0, 0xe4, 0xfb, 0xf1, - 0xf1, 0xe4, 0xfb, 0xf2, 0xf0, 0xe4, 0xfc, 0xf1, 0xf1, 0xe4, 0xfc, 0xef, - 0xf1, 0xe4, 0xfc, 0xf1, 0xf1, 0xe4, 0xfc, 0xef, 0xf1, 0xe4, 0xfc, 0xf1, - 0xf1, 0xe4, 0xfd, 0xef, 0xf1, 0xe4, 0xfd, 0xf1, 0xf1, 0xe4, 0xfd, 0xef, - 0xf1, 0xe4, 0xfd, 0xf1, 0xf1, 0xe4, 0xfe, 0xef, 0xf1, 0xe4, 0xfe, 0xf1, - 0xf1, 0xe4, 0xfe, 0xef, 0xf1, 0xe4, 0xfe, 0xf1, 0xf1, 0xe4, 0xfe, 0xef, - 0xf1, 0xe4, 0xff, 0xf1, 0xf1, 0xe4, 0xff, 0xef, 0xf1, 0xe4, 0x03, 0xf3, - 0x83, 0xe4, 0x0a, 0xf4, 0x83, 0xe4, 0x0f, 0xf3, 0x83, 0xe4, 0x14, 0xf4, - 0x83, 0xe4, 0x17, 0xf3, 0x83, 0xe4, 0x1b, 0xf4, 0x83, 0xe4, 0x1e, 0xf3, - 0x83, 0xe4, 0x20, 0xf4, 0x83, 0xe4, 0x23, 0xf3, 0x83, 0xe4, 0x25, 0xf4, - 0x83, 0xe4, 0x27, 0xf3, 0x83, 0xe4, 0x29, 0xf4, 0x83, 0xe4, 0x2b, 0xf3, - 0x83, 0xe4, 0x2d, 0xf4, 0x83, 0xe4, 0x2f, 0xf3, 0x83, 0xe4, 0x31, 0xf4, - 0x83, 0xe4, 0x32, 0xf3, 0x83, 0xe4, 0x34, 0xf4, 0x83, 0xe4, 0x35, 0xf3, - 0x83, 0xe4, 0x37, 0xf4, 0x83, 0xe4, 0x38, 0xf3, 0x83, 0xe4, 0x3a, 0xf4, - 0x83, 0xe4, 0x3b, 0xf3, 0x83, 0xe4, 0x3c, 0xf4, 0x83, 0xe4, 0x3e, 0xf3, - 0x83, 0xe4, 0x3f, 0xf4, 0x83, 0xe4, 0x40, 0xf3, 0x83, 0xe4, 0x42, 0xf4, - 0x83, 0xe4, 0x43, 0xf3, 0x83, 0xe4, 0x44, 0xf4, 0x83, 0xe4, 0x45, 0xf3, - 0x83, 0xe4, 0x46, 0xf4, 0x83, 0xe4, 0x47, 0xf3, 0x83, 0xe4, 0x48, 0xf4, - 0x83, 0xe4, 0x49, 0xf3, 0x83, 0xe4, 0x4a, 0xf4, 0x83, 0xe4, 0x4b, 0xf3, - 0x83, 0xe4, 0x4c, 0xf4, 0x83, 0xe4, 0x4d, 0xf3, 0x83, 0xe4, 0x4e, 0xf4, - 0x83, 0xe4, 0x4f, 0xf3, 0x83, 0xe4, 0x50, 0xf4, 0x83, 0xe4, 0x51, 0xf3, - 0x83, 0xe4, 0x52, 0xf4, 0x83, 0xe4, 0x53, 0xf3, 0x83, 0xe4, 0x54, 0xf4, - 0x83, 0xe4, 0x55, 0xf3, 0x83, 0xe4, 0x56, 0xf4, 0x83, 0xe4, 0x57, 0xf3, - 0x83, 0xe4, 0x58, 0xf4, 0x83, 0xe4, 0x58, 0xf3, 0x83, 0xe4, 0x59, 0xf4, - 0x83, 0xe4, 0x5a, 0xf3, 0x83, 0xe4, 0x5b, 0xf4, 0x83, 0xe4, 0x5c, 0xf3, - 0x83, 0xe4, 0x5d, 0xf4, 0x83, 0xe4, 0x5d, 0xf3, 0x83, 0xe4, 0x5e, 0xf4, - 0x83, 0xe4, 0x5f, 0xf3, 0x83, 0xe4, 0x60, 0xf4, 0x83, 0xe4, 0x60, 0xf3, - 0x83, 0xe4, 0x61, 0xf4, 0x83, 0xe4, 0x62, 0xf3, 0x83, 0xe4, 0x63, 0xf4, - 0x83, 0xe4, 0x63, 0xf3, 0x83, 0xe4, 0x64, 0xf4, 0x83, 0xe4, 0x65, 0xf3, - 0x83, 0xe4, 0x66, 0xf4, 0x83, 0xe4, 0x66, 0xf3, 0x83, 0xe4, 0x67, 0xf4, - 0x83, 0xe4, 0x68, 0xf3, 0x83, 0xe4, 0x68, 0xf4, 0x83, 0xe4, 0x69, 0xf3, - 0x83, 0xe4, 0x6a, 0xf4, 0x83, 0xe4, 0x6a, 0xf3, 0x83, 0xe4, 0x6b, 0xf4, - 0x83, 0xe4, 0x6c, 0xf3, 0x83, 0xe4, 0x6c, 0xf4, 0x83, 0xe4, 0x6d, 0xf3, - 0x83, 0xe4, 0x6e, 0xf4, 0x83, 0xe4, 0x6e, 0xf3, 0x83, 0xe4, 0x6f, 0xf4, - 0x83, 0xe4, 0x70, 0xf3, 0x83, 0xe4, 0x70, 0xf4, 0x83, 0xe4, 0x71, 0xf3, - 0x83, 0xe4, 0x72, 0xf4, 0x83, 0xe4, 0x72, 0xf3, 0x83, 0xe4, 0x73, 0xf4, - 0x83, 0xe4, 0x73, 0xf3, 0x83, 0xe4, 0x74, 0xf4, 0x83, 0xe4, 0x75, 0xf3, - 0x83, 0xe4, 0x75, 0xf4, 0x83, 0xe4, 0x76, 0xf3, 0x83, 0xe4, 0x76, 0xf4, - 0x83, 0xe4, 0x77, 0xf3, 0x83, 0xe4, 0x78, 0xf4, 0x83, 0xe4, 0x78, 0xf3, - 0x83, 0xe4, 0x79, 0xf4, 0x83, 0xe4, 0x79, 0xf3, 0x83, 0xe4, 0x7a, 0xf4, - 0x83, 0xe4, 0x7a, 0xf3, 0x83, 0xe4, 0x7b, 0xf4, 0x83, 0xe4, 0x7c, 0xf3, - 0x83, 0xe4, 0x7c, 0xf4, 0x83, 0xe4, 0x7d, 0xf3, 0x83, 0xe4, 0x7d, 0xf4, - 0x83, 0xe4, 0x7e, 0xf3, 0x83, 0xe4, 0x7e, 0xf4, 0x83, 0xe4, 0x7f, 0xf3, - 0x83, 0xe4, 0x7f, 0xf4, 0x83, 0xe4, 0x80, 0xf3, 0x83, 0xe4, 0x81, 0xf4, - 0x83, 0xe4, 0x81, 0xf3, 0x83, 0xe4, 0x82, 0xf3, 0x84, 0xe4, 0x82, 0xf3, - 0x83, 0xe4, 0x83, 0xf3, 0x84, 0xe4, 0x82, 0xf3, 0x83, 0xe4, 0x83, 0xf3, - 0x84, 0xe4, 0x82, 0xf3, 0x84, 0xe4, 0x83, 0xf3, 0x85, 0xe4, 0x83, 0xf3, - 0x85, 0xe2, 0x83, 0xf3, 0x86, 0xe4, 0x83, 0xf3, 0x86, 0xe2, 0x85, 0xf3, - 0x87, 0xe7, 0x87, 0xf3, 0x87, 0xe8, 0x88, 0xf3, 0x88, 0xe8, 0x88, 0xf3, - 0x88, 0xe8, 0x89, 0xf3, 0x89, 0xe8, 0x89, 0xf3, 0x89, 0xe8, 0x8a, 0xf3, - 0x8a, 0xe8, 0x8a, 0xf3, 0x8a, 0xe8, 0x8a, 0xf3, 0x8b, 0xe8, 0x8a, 0xf3, - 0x8b, 0xe8, 0x8a, 0xf3, 0x8c, 0xe8, 0x8a, 0xf3, 0x8c, 0xe8, 0x8d, 0xf3, - 0x8d, 0xe9, 0x8d, 0xf3, 0x8d, 0xe9, 0x8e, 0xf3, 0x8e, 0xe9, 0x8e, 0xf3, - 0x8e, 0xe9, 0x8e, 0xf3, 0x8e, 0xe9, 0x8f, 0xf3, 0x8f, 0xe9, 0x8f, 0xf3, - 0x8f, 0xe9, 0x8f, 0xf3, 0x90, 0xe9, 0x8f, 0xf3, 0x90, 0xe9, 0x8f, 0xf3, - 0x91, 0xe9, 0x8f, 0xf3, 0x91, 0xe9, 0x8f, 0xf3, 0x92, 0xe9, 0x8f, 0xf3, - 0x92, 0xe9, 0x93, 0xf3, 0x93, 0xea, 0x93, 0xf3, 0x93, 0xea, 0x94, 0xf3, - 0x94, 0xea, 0x94, 0xf3, 0x94, 0xea, 0x94, 0xf3, 0x94, 0xea, 0x94, 0xf3, - 0x95, 0xea, 0x94, 0xf3, 0x95, 0xea, 0x94, 0xf3, 0x96, 0xea, 0x94, 0xf3, - 0x96, 0xea, 0x94, 0xf3, 0x97, 0xea, 0x94, 0xf3, 0x97, 0xea, 0x98, 0xf3, - 0x98, 0xeb, 0x98, 0xf3, 0x98, 0xeb, 0x98, 0xf3, 0x98, 0xeb, 0x99, 0xf3, - 0x99, 0xeb, 0x99, 0xf3, 0x99, 0xeb, 0x99, 0xf3, 0x9a, 0xeb, 0x99, 0xf3, - 0x9a, 0xeb, 0x99, 0xf3, 0x9a, 0xeb, 0x99, 0xf3, 0x9b, 0xeb, 0x99, 0xf3, - 0x9b, 0xeb, 0x99, 0xf3, 0x9c, 0xeb, 0x9c, 0xf3, 0x9c, 0xec, 0x9d, 0xf3, - 0x9d, 0xec, 0x9d, 0xf3, 0x9d, 0xec, 0x9d, 0xf3, 0x9d, 0xec, 0x9e, 0xf3, - 0x9e, 0xec, 0x9d, 0xf3, 0x9e, 0xec, 0x9e, 0xf3, 0x9f, 0xec, 0x9d, 0xf3, - 0x9f, 0xec, 0x9e, 0xf3, 0x9f, 0xec, 0x9d, 0xf3, 0xa0, 0xec, 0x9e, 0xf3, - 0xa0, 0xec, 0x9d, 0xf3, 0xa1, 0xec, 0x9e, 0xf3, 0xa1, 0xec, 0xa1, 0xf3, - 0xa1, 0xed, 0xa2, 0xf3, 0xa2, 0xed, 0xa2, 0xf3, 0xa2, 0xed, 0xa2, 0xf3, - 0xa3, 0xed, 0xa2, 0xf3, 0xa3, 0xed, 0xa2, 0xf3, 0xa3, 0xed, 0xa2, 0xf3, - 0xa4, 0xed, 0xa2, 0xf3, 0xa4, 0xed, 0xa2, 0xf3, 0xa5, 0xed, 0xa2, 0xf3, - 0xa5, 0xed, 0xa2, 0xf3, 0xa5, 0xed, 0xa6, 0xf3, 0xa6, 0xee, 0xa6, 0xf3, - 0xa6, 0xee, 0xa6, 0xf3, 0xa6, 0xee, 0xa6, 0xf3, 0xa7, 0xee, 0xa6, 0xf3, - 0xa7, 0xee, 0xa6, 0xf3, 0xa8, 0xee, 0xa6, 0xf3, 0xa8, 0xee, 0xa6, 0xf3, - 0xa8, 0xee, 0xa6, 0xf3, 0xa9, 0xee, 0xa6, 0xf3, 0xa9, 0xee, 0xa6, 0xf3, - 0xaa, 0xee, 0xaa, 0xf3, 0xaa, 0xef, 0xaa, 0xf3, 0xaa, 0xef, 0xab, 0xf3, - 0xab, 0xef, 0xaa, 0xf3, 0xab, 0xef, 0xab, 0xf3, 0xab, 0xef, 0xaa, 0xf3, - 0xac, 0xef, 0xab, 0xf3, 0xac, 0xef, 0xaa, 0xf3, 0xac, 0xef, 0xab, 0xf3, - 0xad, 0xef, 0xaa, 0xf3, 0xad, 0xef, 0xab, 0xf3, 0xae, 0xef, 0xae, 0xf3, - 0xae, 0xf0, 0xae, 0xf3, 0xae, 0xf0, 0xaf, 0xf3, 0xaf, 0xf0, 0xae, 0xf3, - 0xaf, 0xf0, 0xaf, 0xf3, 0xaf, 0xf0, 0xae, 0xf3, 0xb0, 0xf0, 0xaf, 0xf3, - 0xb0, 0xf0, 0xae, 0xf3, 0xb0, 0xf0, 0xaf, 0xf3, 0xb1, 0xf0, 0xae, 0xf3, - 0xb1, 0xf0, 0xaf, 0xf3, 0xb2, 0xf0, 0xb2, 0xf3, 0xb2, 0xf1, 0xb2, 0xf3, - 0xb2, 0xf1, 0xb3, 0xf3, 0xb3, 0xf1, 0xb2, 0xf3, 0xb3, 0xf1, 0xb3, 0xf3, - 0xb3, 0xf1, 0xb2, 0xf3, 0xb4, 0xf1, 0xb3, 0xf3, 0xb4, 0xf1, 0xb2, 0xf3, - 0xb4, 0xf1, 0xb3, 0xf3, 0xb5, 0xf1, 0xb2, 0xf3, 0xb5, 0xf1, 0xb3, 0xf3, - 0xb5, 0xf1, 0xb2, 0xf3, 0xb6, 0xf1, 0xb3, 0xf3, 0xb6, 0xf1, 0xb6, 0xf3, - 0xb6, 0xf2, 0xb6, 0xf3, 0xb7, 0xf2, 0xb6, 0xf3, 0xb7, 0xf2, 0xb6, 0xf3, - 0xb7, 0xf2, 0xb6, 0xf3, 0xb8, 0xf2, 0xb6, 0xf3, 0xb8, 0xf2, 0xb6, 0xf3, - 0xb8, 0xf2, 0xb6, 0xf3, 0xb9, 0xf2, 0xb6, 0xf3, 0xb9, 0xf2, 0xb6, 0xf3, - 0xb9, 0xf2, 0xb6, 0xf3, 0xba, 0xf2, 0xba, 0xf3, 0xba, 0xf3, 0xba, 0xf3, - 0xba, 0xf3, 0xba, 0xf3, 0xbb, 0xf3, 0xba, 0xf3, 0xbb, 0xf3, 0xba, 0xf3, - 0xbb, 0xf3, 0xba, 0xf3, 0xbc, 0xf3, 0xba, 0xf3, 0xbc, 0xf3, 0xba, 0xf3, - 0xbc, 0xf3, 0xba, 0xf3, 0xbd, 0xf3, 0xba, 0xf3, 0xbd, 0xf3, 0xba, 0xf3, - 0xbd, 0xf3, 0xbe, 0xf3, 0xbe, 0xf4, 0xbd, 0xf3, 0xbe, 0xf4, 0xbe, 0xf3, - 0xbe, 0xf4, 0xbd, 0xf3, 0xbf, 0xf4, 0xbe, 0xf3, 0xbf, 0xf4, 0xbd, 0xf3, - 0xbf, 0xf4, 0xbe, 0xf3, 0xc0, 0xf4, 0xbd, 0xf3, 0xc0, 0xf4, 0xbe, 0xf3, - 0xc0, 0xf4, 0xbd, 0xf3, 0xc1, 0xf4, 0xbe, 0xf3, 0xc1, 0xf4, 0xcb, 0xf3, - 0xc1, 0xe8, 0xcb, 0xf3, 0xc1, 0xe6, 0xcb, 0xf3, 0xc2, 0xe8, 0xcb, 0xf3, - 0xc2, 0xe6, 0xcb, 0xf3, 0xc2, 0xe8, 0xcb, 0xf3, 0xc3, 0xe6, 0xcb, 0xf3, - 0xc3, 0xe8, 0xcb, 0xf3, 0xc3, 0xe6, 0xcb, 0xf3, 0xc4, 0xe8, 0xcb, 0xf3, - 0xc4, 0xe6, 0xcb, 0xf3, 0xc4, 0xe8, 0xcb, 0xf3, 0xc5, 0xe6, 0xcb, 0xf3, - 0xc5, 0xe8, 0xcb, 0xf3, 0xc5, 0xe6, 0xcb, 0xf3, 0xc6, 0xe8, 0xcb, 0xf3, - 0xc6, 0xe6, 0xcb, 0xf3, 0xc6, 0xe8, 0xcb, 0xf3, 0xc6, 0xe6, 0xcc, 0xf3, - 0xc7, 0xe4, 0xcb, 0xf3, 0xc7, 0xe6, 0xcc, 0xf3, 0xc7, 0xe4, 0xcb, 0xf3, - 0xc8, 0xe6, 0xcc, 0xf3, 0xc8, 0xe4, 0xcb, 0xf3, 0xc8, 0xe6, 0xcc, 0xf3, - 0xc9, 0xe4, 0xcb, 0xf3, 0xc9, 0xe6, 0xcc, 0xf3, 0xc9, 0xe4, 0xcb, 0xf3, - 0xc9, 0xe6, 0xcc, 0xf3, 0xca, 0xe4, 0xcb, 0xf3, 0xca, 0xe6, 0xcc, 0xf3, - 0xca, 0xe4, 0xcc, 0xf3, 0xcb, 0xe4, 0xcc, 0xf3, 0xcb, 0xe4, 0xcc, 0xf3, - 0xcb, 0xe4, 0xcc, 0xf3, 0xcb, 0xe4, 0xcc, 0xf3, 0xcb, 0xe4, 0xcc, 0xf3, - 0xcb, 0xe4, 0xcc, 0xf3, 0xcb, 0xe4, 0xcd, 0xf2, 0xcc, 0xe4, 0xcd, 0xf3, - 0xcb, 0xe4, 0xcd, 0xf2, 0xcc, 0xe4, 0xce, 0xf3, 0xcb, 0xe4, 0xce, 0xf2, - 0xcc, 0xe4, 0xce, 0xf3, 0xcb, 0xe4, 0xce, 0xf2, 0xcc, 0xe4, 0xcf, 0xf3, - 0xcb, 0xe4, 0xcf, 0xf2, 0xcc, 0xe4, 0xcf, 0xf3, 0xcb, 0xe4, 0xd0, 0xf2, - 0xcc, 0xe4, 0xd0, 0xf3, 0xcb, 0xe4, 0xd0, 0xf2, 0xcc, 0xe4, 0xd0, 0xf3, - 0xcb, 0xe4, 0xd1, 0xf2, 0xcc, 0xe4, 0xd1, 0xf3, 0xcb, 0xe4, 0xd1, 0xf2, - 0xcc, 0xe4, 0xd2, 0xf3, 0xcb, 0xe4, 0xd2, 0xf2, 0xcc, 0xe4, 0xd2, 0xf3, - 0xcb, 0xe4, 0xd2, 0xf2, 0xcc, 0xe4, 0xd3, 0xf1, 0xcc, 0xe4, 0xd3, 0xf2, - 0xcc, 0xe4, 0xd3, 0xf1, 0xcc, 0xe4, 0xd4, 0xf2, 0xcc, 0xe4, 0xd4, 0xf1, - 0xcc, 0xe4, 0xd4, 0xf2, 0xcc, 0xe4, 0xd4, 0xf1, 0xcc, 0xe4, 0xd5, 0xf2, - 0xcc, 0xe4, 0xd5, 0xf1, 0xcc, 0xe4, 0xd5, 0xf2, 0xcc, 0xe4, 0xd6, 0xf1, - 0xcc, 0xe4, 0xd6, 0xf2, 0xcc, 0xe4, 0xd6, 0xf1, 0xcc, 0xe4, 0xd6, 0xf2, - 0xcc, 0xe4, 0xd7, 0xf1, 0xcc, 0xe4, 0xd7, 0xf2, 0xcc, 0xe4, 0xd7, 0xf1, - 0xcc, 0xe4, 0xd7, 0xf2, 0xcc, 0xe4, 0xd8, 0xf1, 0xcc, 0xe4, 0xd8, 0xf2, - 0xcc, 0xe4, 0xd8, 0xfd, 0xd7, 0xe4, 0xd9, 0xf4, 0xe4, 0xe4, 0xd9, 0xf6, - 0xe4, 0xe4, 0xd9, 0xf4, 0xe4, 0xe4, 0xd9, 0xf6, 0xe4, 0xe4, 0xda, 0xf4, - 0xe4, 0xe4, 0xda, 0xf6, 0xe4, 0xe4, 0xda, 0xf4, 0xe4, 0xe4, 0xda, 0xf6, - 0xe4, 0xe4, 0xdb, 0xf4, 0xe4, 0xe4, 0xdb, 0xf3, 0xe4, 0xe4, 0xdb, 0xf4, - 0xe4, 0xe4, 0xdb, 0xf3, 0xe4, 0xe4, 0xdc, 0xf4, 0xe4, 0xe4, 0xdc, 0xf3, - 0xe4, 0xe4, 0xdc, 0xf4, 0xe4, 0xe4, 0xdd, 0xf3, 0xe4, 0xe4, 0xdd, 0xf4, - 0xe4, 0xe4, 0xdd, 0xf3, 0xe4, 0xe4, 0xdd, 0xf4, 0xe4, 0xe4, 0xde, 0xf3, - 0xe4, 0xe4, 0xde, 0xf4, 0xe4, 0xe4, 0xde, 0xf3, 0xe4, 0xe4, 0xde, 0xf4, - 0xe4, 0xe4, 0xdf, 0xf3, 0xe4, 0xe4, 0xdf, 0xf4, 0xe4, 0xe4, 0xdf, 0xf3, - 0xe4, 0xe4, 0xdf, 0xf4, 0xe4, 0xe4, 0xe0, 0xf3, 0xe4, 0xe4, 0xe0, 0xf4, - 0xe4, 0xe4, 0xe0, 0xf3, 0xe4, 0xe4, 0xe1, 0xf4, 0xe4, 0xe4, 0xe1, 0xf3, - 0xe4, 0xe4, 0xe1, 0xf4, 0xe4, 0xe4, 0xe1, 0xf3, 0xe4, 0xe4, 0xe2, 0xf4, - 0xe4, 0xe4, 0xe2, 0xf3, 0xe4, 0xe4, 0xe2, 0xf4, 0xe4, 0xe4, 0xe2, 0xf3, - 0xe4, 0xe4, 0xe3, 0xf3, 0xe5, 0xe4, 0xe3, 0xf3, 0xe4, 0xe4, 0xe3, 0xf3, - 0xe5, 0xe4, 0xe3, 0xf3, 0xe4, 0xe4, 0xe4, 0xf3, 0xe5, 0xe4, 0xe4, 0xf3, - 0xe4, 0xe4, 0xe4, 0xf3, 0xe5, 0xe4, 0xe4, 0xf3, 0xe4, 0xe4, 0xe4, 0xf3, - 0xe5, 0xe4, 0xe4, 0xf3, 0xe5, 0xe4, 0xe4, 0xf3, 0xe5, 0xe4, 0xe4, 0xf3, - 0xe5, 0xe4, 0xe7, 0xf3, 0xe6, 0xe4, 0xe6, 0xf3, 0xe6, 0xe4, 0xe7, 0xf3, - 0xe6, 0xe4, 0xe6, 0xf3, 0xe6, 0xe4, 0xe7, 0xf3, 0xe6, 0xe4, 0xe7, 0xf3, - 0xe6, 0xe4, 0xe7, 0xf3, 0xe6, 0xe4, 0xe7, 0xf2, 0xe6, 0xe4, 0xe8, 0xf3, - 0xe6, 0xe4, 0xe8, 0xf2, 0xe6, 0xe4, 0xe8, 0xf3, 0xe6, 0xe4, 0xe8, 0xf2, - 0xe6, 0xe4, 0xe9, 0xf3, 0xe6, 0xe4, 0xe9, 0xf2, 0xe6, 0xe4, 0xe9, 0xf3, - 0xe6, 0xe4, 0xe9, 0xf2, 0xe6, 0xe4, 0xea, 0xf3, 0xe6, 0xe4, 0xea, 0xf2, - 0xe6, 0xe4, 0xea, 0xf3, 0xe6, 0xe4, 0xea, 0xf2, 0xe6, 0xe4, 0xeb, 0xf3, - 0xe6, 0xe4, 0xeb, 0xf2, 0xe6, 0xe4, 0xeb, 0xf3, 0xe6, 0xe4, 0xeb, 0xf5, - 0xf0, 0xe4, 0xec, 0xf3, 0xf0, 0xe4, 0xec, 0xf5, 0xf0, 0xe4, 0xec, 0xf3, - 0xf0, 0xe4, 0xec, 0xf3, 0xf0, 0xe4, 0xec, 0xf3, 0xf0, 0xe4, 0xed, 0xf3, - 0xf0, 0xe4, 0xed, 0xf3, 0xf0, 0xe4, 0xed, 0xf3, 0xf0, 0xe4, 0xed, 0xf3, - 0xf0, 0xe4, 0xee, 0xf3, 0xf0, 0xe4, 0xee, 0xf3, 0xf0, 0xe4, 0xee, 0xf3, - 0xf0, 0xe4, 0xee, 0xf3, 0xf0, 0xe4, 0xef, 0xf3, 0xf0, 0xe4, 0xef, 0xf3, - 0xf0, 0xe4, 0xef, 0xf3, 0xf0, 0xe4, 0xef, 0xf3, 0xf0, 0xe4, 0xf0, 0xf3, - 0xf0, 0xe4, 0xf0, 0xf3, 0xf0, 0xe4, 0xf0, 0xf3, 0xf0, 0xe4, 0xf0, 0xf2, - 0xf0, 0xe4, 0xf1, 0xf3, 0xf0, 0xe4, 0xf1, 0xf2, 0xf0, 0xe4, 0xf1, 0xf2, - 0xf0, 0xe4, 0xf1, 0xf2, 0xf0, 0xe4, 0xf2, 0xf2, 0xf0, 0xe4, 0xf2, 0xf2, - 0xf0, 0xe4, 0xf2, 0xf2, 0xf0, 0xe4, 0xf2, 0xf2, 0xf0, 0xe4, 0xf2, 0xf2, - 0xf0, 0xe4, 0xf3, 0xf2, 0xf0, 0xe4, 0xf3, 0xf2, 0xf0, 0xe4, 0xf3, 0xf2, - 0xf0, 0xe4, 0xf3, 0xf2, 0xf0, 0xe4, 0xf4, 0xf2, 0xf0, 0xe4, 0xf4, 0xf2, - 0xf0, 0xe4, 0xf4, 0xf2, 0xf0, 0xe4, 0xf4, 0xf2, 0xf0, 0xe4, 0xf5, 0xf2, - 0xf0, 0xe4, 0xf5, 0xf2, 0xf0, 0xe4, 0xf5, 0xf2, 0xf0, 0xe4, 0xf5, 0xf2, - 0xf0, 0xe4, 0xf5, 0xf2, 0xf0, 0xe4, 0xf6, 0xf2, 0xf0, 0xe4, 0xf6, 0xf2, - 0xf0, 0xe4, 0xf6, 0xf2, 0xf0, 0xe4, 0xf6, 0xf2, 0xf0, 0xe4, 0xf7, 0xf2, - 0xf0, 0xe4, 0xf7, 0xf2, 0xf0, 0xe4, 0xf7, 0xf2, 0xf0, 0xe4, 0xf7, 0xf2, - 0xf0, 0xe4, 0xf8, 0xf1, 0xf1, 0xe4, 0xf8, 0xf2, 0xf0, 0xe4, 0xf8, 0xf1, - 0xf1, 0xe4, 0xf8, 0xf2, 0xf0, 0xe4, 0xf8, 0xf1, 0xf1, 0xe4, 0xf9, 0xf2, - 0xf0, 0xe4, 0xf9, 0xf1, 0xf1, 0xe4, 0xf9, 0xf2, 0xf0, 0xe4, 0xf9, 0xf1, - 0xf1, 0xe4, 0xfa, 0xf2, 0xf0, 0xe4, 0xfa, 0xf1, 0xf1, 0xe4, 0xfa, 0xf2, - 0xf0, 0xe4, 0xfa, 0xf1, 0xf1, 0xe4, 0xfa, 0xf2, 0xf0, 0xe4, 0xfb, 0xf1, - 0xf1, 0xe4, 0xfb, 0xf2, 0xf0, 0xe4, 0xfb, 0xf1, 0xf1, 0xe4, 0xfb, 0xf2, - 0xf0, 0xe4, 0xfc, 0xf1, 0xf1, 0xe4, 0xfc, 0xf0, 0xf1, 0xe4, 0xfc, 0xf1, - 0xf1, 0xe4, 0xfc, 0xf0, 0xf1, 0xe4, 0xfc, 0xf1, 0xf1, 0xe4, 0xfd, 0xf0, - 0xf1, 0xe4, 0xfd, 0xf1, 0xf1, 0xe4, 0xfd, 0xf0, 0xf1, 0xe4, 0xfd, 0xf1, - 0xf1, 0xe4, 0xfe, 0xf0, 0xf1, 0xe4, 0xfe, 0xf1, 0xf1, 0xe4, 0xfe, 0xf0, - 0xf1, 0xe4, 0xfe, 0xf1, 0xf1, 0xe4, 0xfe, 0xf0, 0xf1, 0xe4, 0xff, 0xf1, - 0xf1, 0xe4, 0xff, 0xf0, 0xf1, 0xe4, 0x03, 0xf3, 0x83, 0xe5, 0x0a, 0xf4, - 0x83, 0xe5, 0x0f, 0xf3, 0x83, 0xe5, 0x14, 0xf4, 0x83, 0xe5, 0x17, 0xf3, - 0x83, 0xe5, 0x1b, 0xf4, 0x83, 0xe5, 0x1e, 0xf3, 0x83, 0xe5, 0x20, 0xf4, - 0x83, 0xe5, 0x23, 0xf3, 0x83, 0xe5, 0x25, 0xf4, 0x83, 0xe5, 0x27, 0xf3, - 0x83, 0xe5, 0x29, 0xf4, 0x83, 0xe5, 0x2b, 0xf3, 0x83, 0xe5, 0x2d, 0xf4, - 0x83, 0xe5, 0x2f, 0xf3, 0x83, 0xe5, 0x31, 0xf4, 0x83, 0xe5, 0x32, 0xf3, - 0x83, 0xe5, 0x34, 0xf4, 0x83, 0xe5, 0x35, 0xf3, 0x83, 0xe5, 0x37, 0xf4, - 0x83, 0xe5, 0x38, 0xf3, 0x83, 0xe5, 0x3a, 0xf4, 0x83, 0xe5, 0x3b, 0xf3, - 0x83, 0xe5, 0x3c, 0xf4, 0x83, 0xe5, 0x3e, 0xf3, 0x83, 0xe5, 0x3f, 0xf4, - 0x83, 0xe5, 0x40, 0xf3, 0x83, 0xe5, 0x42, 0xf4, 0x83, 0xe5, 0x43, 0xf3, - 0x83, 0xe5, 0x44, 0xf4, 0x83, 0xe5, 0x45, 0xf3, 0x83, 0xe5, 0x46, 0xf4, - 0x83, 0xe5, 0x47, 0xf3, 0x83, 0xe5, 0x48, 0xf4, 0x83, 0xe5, 0x49, 0xf3, - 0x83, 0xe5, 0x4a, 0xf4, 0x83, 0xe5, 0x4b, 0xf3, 0x83, 0xe5, 0x4c, 0xf4, - 0x83, 0xe5, 0x4d, 0xf3, 0x83, 0xe5, 0x4e, 0xf4, 0x83, 0xe5, 0x4f, 0xf3, - 0x83, 0xe5, 0x50, 0xf4, 0x83, 0xe5, 0x51, 0xf3, 0x83, 0xe5, 0x52, 0xf4, - 0x83, 0xe5, 0x53, 0xf3, 0x83, 0xe5, 0x54, 0xf4, 0x83, 0xe5, 0x55, 0xf3, - 0x83, 0xe5, 0x56, 0xf4, 0x83, 0xe5, 0x57, 0xf3, 0x83, 0xe5, 0x58, 0xf4, - 0x83, 0xe5, 0x58, 0xf3, 0x83, 0xe5, 0x59, 0xf4, 0x83, 0xe5, 0x5a, 0xf3, - 0x83, 0xe5, 0x5b, 0xf4, 0x83, 0xe5, 0x5c, 0xf3, 0x83, 0xe5, 0x5d, 0xf4, - 0x83, 0xe5, 0x5d, 0xf3, 0x83, 0xe5, 0x5e, 0xf4, 0x83, 0xe5, 0x5f, 0xf3, - 0x83, 0xe5, 0x60, 0xf4, 0x83, 0xe5, 0x60, 0xf3, 0x83, 0xe5, 0x61, 0xf4, - 0x83, 0xe5, 0x62, 0xf3, 0x83, 0xe5, 0x63, 0xf4, 0x83, 0xe5, 0x63, 0xf3, - 0x83, 0xe5, 0x64, 0xf4, 0x83, 0xe5, 0x65, 0xf3, 0x83, 0xe5, 0x66, 0xf4, - 0x83, 0xe5, 0x66, 0xf3, 0x83, 0xe5, 0x67, 0xf4, 0x83, 0xe5, 0x68, 0xf3, - 0x83, 0xe5, 0x68, 0xf4, 0x83, 0xe5, 0x69, 0xf3, 0x83, 0xe5, 0x6a, 0xf4, - 0x83, 0xe5, 0x6a, 0xf3, 0x83, 0xe5, 0x6b, 0xf4, 0x83, 0xe5, 0x6c, 0xf3, - 0x83, 0xe5, 0x6c, 0xf4, 0x83, 0xe5, 0x6d, 0xf3, 0x83, 0xe5, 0x6e, 0xf4, - 0x83, 0xe5, 0x6e, 0xf3, 0x83, 0xe5, 0x6f, 0xf4, 0x83, 0xe5, 0x70, 0xf3, - 0x83, 0xe5, 0x70, 0xf4, 0x83, 0xe5, 0x71, 0xf3, 0x83, 0xe5, 0x72, 0xf4, - 0x83, 0xe5, 0x72, 0xf3, 0x83, 0xe5, 0x73, 0xf4, 0x83, 0xe5, 0x73, 0xf3, - 0x83, 0xe5, 0x74, 0xf4, 0x83, 0xe5, 0x75, 0xf3, 0x83, 0xe5, 0x75, 0xf4, - 0x83, 0xe5, 0x76, 0xf3, 0x83, 0xe5, 0x76, 0xf4, 0x83, 0xe5, 0x77, 0xf3, - 0x83, 0xe5, 0x78, 0xf4, 0x83, 0xe5, 0x78, 0xf3, 0x83, 0xe5, 0x79, 0xf4, - 0x83, 0xe5, 0x79, 0xf3, 0x83, 0xe5, 0x7a, 0xf4, 0x83, 0xe5, 0x7a, 0xf3, - 0x83, 0xe5, 0x7b, 0xf4, 0x83, 0xe5, 0x7c, 0xf3, 0x83, 0xe5, 0x7c, 0xf4, - 0x83, 0xe5, 0x7d, 0xf3, 0x83, 0xe5, 0x7d, 0xf4, 0x83, 0xe5, 0x7e, 0xf3, - 0x83, 0xe5, 0x7e, 0xf4, 0x83, 0xe5, 0x7f, 0xf3, 0x83, 0xe5, 0x7f, 0xf4, - 0x83, 0xe5, 0x80, 0xf3, 0x83, 0xe5, 0x81, 0xf4, 0x83, 0xe5, 0x81, 0xf3, - 0x83, 0xe5, 0x82, 0xf3, 0x84, 0xe5, 0x82, 0xf3, 0x83, 0xe5, 0x83, 0xf3, - 0x84, 0xe5, 0x82, 0xf3, 0x83, 0xe5, 0x83, 0xf3, 0x84, 0xe5, 0x82, 0xf3, - 0x84, 0xe5, 0x83, 0xf3, 0x85, 0xe5, 0x83, 0xf3, 0x85, 0xe3, 0x83, 0xf3, - 0x86, 0xe5, 0x86, 0xf3, 0x86, 0xe8, 0x87, 0xf3, 0x87, 0xe8, 0x87, 0xf3, - 0x87, 0xe8, 0x87, 0xf3, 0x88, 0xe8, 0x87, 0xf3, 0x88, 0xe8, 0x87, 0xf3, - 0x89, 0xe8, 0x87, 0xf3, 0x89, 0xe8, 0x8a, 0xf3, 0x8a, 0xe9, 0x8a, 0xf3, - 0x8a, 0xe9, 0x8b, 0xf3, 0x8b, 0xe9, 0x8b, 0xf3, 0x8b, 0xe9, 0x8c, 0xf3, - 0x8c, 0xe9, 0x8c, 0xf3, 0x8c, 0xe9, 0x8d, 0xf3, 0x8d, 0xe9, 0x8c, 0xf3, - 0x8d, 0xe9, 0x8d, 0xf3, 0x8e, 0xe9, 0x8c, 0xf3, 0x8e, 0xe9, 0x8d, 0xf3, - 0x8e, 0xe9, 0x8f, 0xf3, 0x8f, 0xea, 0x8f, 0xf3, 0x8f, 0xea, 0x90, 0xf3, - 0x90, 0xea, 0x90, 0xf3, 0x90, 0xea, 0x91, 0xf3, 0x91, 0xea, 0x91, 0xf3, - 0x91, 0xea, 0x92, 0xf3, 0x92, 0xea, 0x91, 0xf3, 0x92, 0xea, 0x92, 0xf3, - 0x93, 0xea, 0x91, 0xf3, 0x93, 0xea, 0x92, 0xf3, 0x94, 0xea, 0x91, 0xf3, - 0x94, 0xea, 0x92, 0xf3, 0x94, 0xea, 0x95, 0xf3, 0x95, 0xeb, 0x95, 0xf3, - 0x95, 0xeb, 0x96, 0xf3, 0x96, 0xeb, 0x96, 0xf3, 0x96, 0xeb, 0x97, 0xf3, - 0x97, 0xeb, 0x96, 0xf3, 0x97, 0xeb, 0x97, 0xf3, 0x98, 0xeb, 0x96, 0xf3, - 0x98, 0xeb, 0x97, 0xf3, 0x98, 0xeb, 0x96, 0xf3, 0x99, 0xeb, 0x97, 0xf3, - 0x99, 0xeb, 0x9a, 0xf3, 0x9a, 0xec, 0x9a, 0xf3, 0x9a, 0xec, 0x9a, 0xf3, - 0x9a, 0xec, 0x9b, 0xf3, 0x9b, 0xec, 0x9b, 0xf3, 0x9b, 0xec, 0x9b, 0xf3, - 0x9c, 0xec, 0x9b, 0xf3, 0x9c, 0xec, 0x9b, 0xf3, 0x9d, 0xec, 0x9b, 0xf3, - 0x9d, 0xec, 0x9b, 0xf3, 0x9d, 0xec, 0x9b, 0xf3, 0x9e, 0xec, 0x9e, 0xf3, - 0x9e, 0xed, 0x9f, 0xf3, 0x9f, 0xed, 0x9f, 0xf3, 0x9f, 0xed, 0x9f, 0xf3, - 0x9f, 0xed, 0xa0, 0xf3, 0xa0, 0xed, 0x9f, 0xf3, 0xa0, 0xed, 0xa0, 0xf3, - 0xa1, 0xed, 0x9f, 0xf3, 0xa1, 0xed, 0xa0, 0xf3, 0xa1, 0xed, 0x9f, 0xf3, - 0xa2, 0xed, 0xa0, 0xf3, 0xa2, 0xed, 0x9f, 0xf3, 0xa3, 0xed, 0xa0, 0xf3, - 0xa3, 0xed, 0xa3, 0xf3, 0xa3, 0xee, 0xa4, 0xf3, 0xa4, 0xee, 0xa4, 0xf3, - 0xa4, 0xee, 0xa4, 0xf3, 0xa5, 0xee, 0xa4, 0xf3, 0xa5, 0xee, 0xa4, 0xf3, - 0xa5, 0xee, 0xa4, 0xf3, 0xa6, 0xee, 0xa4, 0xf3, 0xa6, 0xee, 0xa4, 0xf3, - 0xa6, 0xee, 0xa4, 0xf3, 0xa7, 0xee, 0xa4, 0xf3, 0xa7, 0xee, 0xa8, 0xf3, - 0xa8, 0xef, 0xa8, 0xf3, 0xa8, 0xef, 0xa8, 0xf3, 0xa8, 0xef, 0xa8, 0xf3, - 0xa9, 0xef, 0xa8, 0xf3, 0xa9, 0xef, 0xa8, 0xf3, 0xaa, 0xef, 0xa8, 0xf3, - 0xaa, 0xef, 0xa8, 0xf3, 0xaa, 0xef, 0xa8, 0xf3, 0xab, 0xef, 0xa8, 0xf3, - 0xab, 0xef, 0xa8, 0xf3, 0xab, 0xef, 0xac, 0xf3, 0xac, 0xf0, 0xac, 0xf3, - 0xac, 0xf0, 0xac, 0xf3, 0xac, 0xf0, 0xac, 0xf3, 0xad, 0xf0, 0xac, 0xf3, - 0xad, 0xf0, 0xac, 0xf3, 0xae, 0xf0, 0xac, 0xf3, 0xae, 0xf0, 0xac, 0xf3, - 0xae, 0xf0, 0xac, 0xf3, 0xaf, 0xf0, 0xac, 0xf3, 0xaf, 0xf0, 0xac, 0xf3, - 0xaf, 0xf0, 0xb0, 0xf3, 0xb0, 0xf1, 0xb0, 0xf3, 0xb0, 0xf1, 0xb0, 0xf3, - 0xb0, 0xf1, 0xb0, 0xf3, 0xb1, 0xf1, 0xb0, 0xf3, 0xb1, 0xf1, 0xb0, 0xf3, - 0xb2, 0xf1, 0xb0, 0xf3, 0xb2, 0xf1, 0xb0, 0xf3, 0xb2, 0xf1, 0xb0, 0xf3, - 0xb3, 0xf1, 0xb0, 0xf3, 0xb3, 0xf1, 0xb0, 0xf3, 0xb3, 0xf1, 0xb4, 0xf3, - 0xb4, 0xf2, 0xb4, 0xf3, 0xb4, 0xf2, 0xb4, 0xf3, 0xb4, 0xf2, 0xb4, 0xf3, - 0xb5, 0xf2, 0xb4, 0xf3, 0xb5, 0xf2, 0xb4, 0xf3, 0xb5, 0xf2, 0xb4, 0xf3, - 0xb6, 0xf2, 0xb4, 0xf3, 0xb6, 0xf2, 0xb4, 0xf3, 0xb6, 0xf2, 0xb4, 0xf3, - 0xb7, 0xf2, 0xb4, 0xf3, 0xb7, 0xf2, 0xb4, 0xf3, 0xb7, 0xf2, 0xb4, 0xf3, - 0xb8, 0xf2, 0xb8, 0xf3, 0xb8, 0xf3, 0xb8, 0xf3, 0xb8, 0xf3, 0xb8, 0xf3, - 0xb9, 0xf3, 0xb8, 0xf3, 0xb9, 0xf3, 0xb8, 0xf3, 0xb9, 0xf3, 0xb8, 0xf3, - 0xba, 0xf3, 0xb8, 0xf3, 0xba, 0xf3, 0xb8, 0xf3, 0xba, 0xf3, 0xb8, 0xf3, - 0xbb, 0xf3, 0xb8, 0xf3, 0xbb, 0xf3, 0xb8, 0xf3, 0xbb, 0xf3, 0xbc, 0xf3, - 0xbc, 0xf4, 0xbb, 0xf3, 0xbc, 0xf4, 0xbc, 0xf3, 0xbc, 0xf4, 0xbb, 0xf3, - 0xbd, 0xf4, 0xbc, 0xf3, 0xbd, 0xf4, 0xbb, 0xf3, 0xbd, 0xf4, 0xbc, 0xf3, - 0xbe, 0xf4, 0xbb, 0xf3, 0xbe, 0xf4, 0xbc, 0xf3, 0xbe, 0xf4, 0xbb, 0xf3, - 0xbf, 0xf4, 0xbc, 0xf3, 0xbf, 0xf4, 0xbf, 0xf3, 0xbf, 0xf5, 0xbf, 0xf3, - 0xc0, 0xf5, 0xbf, 0xf3, 0xc0, 0xf5, 0xbf, 0xf3, 0xc0, 0xf5, 0xbf, 0xf3, - 0xc1, 0xf5, 0xbf, 0xf3, 0xc1, 0xf5, 0xbf, 0xf3, 0xc1, 0xf5, 0xcb, 0xf3, - 0xc1, 0xe6, 0xcb, 0xf3, 0xc2, 0xe9, 0xcb, 0xf3, 0xc2, 0xe6, 0xcb, 0xf3, - 0xc2, 0xe9, 0xcb, 0xf3, 0xc3, 0xe6, 0xcb, 0xf3, 0xc3, 0xe9, 0xcb, 0xf3, - 0xc3, 0xe6, 0xcb, 0xf3, 0xc4, 0xe9, 0xcb, 0xf3, 0xc4, 0xe6, 0xcb, 0xf3, - 0xc4, 0xe9, 0xcb, 0xf3, 0xc5, 0xe6, 0xcb, 0xf3, 0xc5, 0xe9, 0xcb, 0xf3, - 0xc5, 0xe6, 0xcb, 0xf3, 0xc6, 0xe9, 0xcb, 0xf3, 0xc6, 0xe6, 0xcb, 0xf3, - 0xc6, 0xe9, 0xcb, 0xf3, 0xc6, 0xe6, 0xcc, 0xf3, 0xc7, 0xe5, 0xcb, 0xf3, - 0xc7, 0xe6, 0xcc, 0xf3, 0xc7, 0xe5, 0xcb, 0xf3, 0xc8, 0xe6, 0xcc, 0xf3, - 0xc8, 0xe5, 0xcb, 0xf3, 0xc8, 0xe6, 0xcc, 0xf3, 0xc9, 0xe5, 0xcb, 0xf3, - 0xc9, 0xe6, 0xcc, 0xf3, 0xc9, 0xe5, 0xcb, 0xf3, 0xc9, 0xe6, 0xcc, 0xf3, - 0xca, 0xe5, 0xcb, 0xf3, 0xca, 0xe6, 0xcc, 0xf3, 0xca, 0xe5, 0xcb, 0xf3, - 0xcb, 0xe6, 0xcc, 0xf3, 0xcb, 0xe5, 0xcc, 0xf3, 0xcb, 0xe5, 0xcc, 0xf3, - 0xcb, 0xe5, 0xcc, 0xf3, 0xcb, 0xe5, 0xcc, 0xf3, 0xcb, 0xe5, 0xcc, 0xf3, - 0xcb, 0xe5, 0xcd, 0xf3, 0xcb, 0xe5, 0xcd, 0xf3, 0xcb, 0xe5, 0xcd, 0xf3, - 0xcb, 0xe5, 0xce, 0xf3, 0xcb, 0xe5, 0xce, 0xf2, 0xcc, 0xe5, 0xce, 0xf3, - 0xcb, 0xe5, 0xce, 0xf2, 0xcc, 0xe5, 0xcf, 0xf3, 0xcb, 0xe5, 0xcf, 0xf2, - 0xcc, 0xe5, 0xcf, 0xf3, 0xcb, 0xe5, 0xd0, 0xf2, 0xcc, 0xe5, 0xd0, 0xf3, - 0xcb, 0xe5, 0xd0, 0xf2, 0xcc, 0xe5, 0xd0, 0xf3, 0xcb, 0xe5, 0xd1, 0xf2, - 0xcc, 0xe5, 0xd1, 0xf3, 0xcb, 0xe5, 0xd1, 0xf2, 0xcc, 0xe5, 0xd2, 0xf3, - 0xcb, 0xe5, 0xd2, 0xf2, 0xcc, 0xe5, 0xd2, 0xf3, 0xcb, 0xe5, 0xd2, 0xf2, - 0xcc, 0xe5, 0xd3, 0xf1, 0xcc, 0xe5, 0xd3, 0xf2, 0xcc, 0xe5, 0xd3, 0xf1, - 0xcc, 0xe5, 0xd4, 0xf2, 0xcc, 0xe5, 0xd4, 0xf1, 0xcc, 0xe5, 0xd4, 0xf2, - 0xcc, 0xe5, 0xd4, 0xf1, 0xcc, 0xe5, 0xd5, 0xf2, 0xcc, 0xe5, 0xd5, 0xf1, - 0xcc, 0xe5, 0xd5, 0xf2, 0xcc, 0xe5, 0xd6, 0xf1, 0xcc, 0xe5, 0xd6, 0xf2, - 0xcc, 0xe5, 0xd6, 0xf1, 0xcc, 0xe5, 0xd6, 0xf2, 0xcc, 0xe5, 0xd7, 0xf1, - 0xcc, 0xe5, 0xd7, 0xf2, 0xcc, 0xe5, 0xd7, 0xf1, 0xcc, 0xe5, 0xd7, 0xf2, - 0xcc, 0xe5, 0xd8, 0xfd, 0xd6, 0xe5, 0xd8, 0xfd, 0xd6, 0xe5, 0xd8, 0xfd, - 0xd6, 0xe5, 0xd9, 0xfd, 0xd6, 0xe5, 0xd9, 0xf6, 0xe4, 0xe5, 0xd9, 0xf5, - 0xe4, 0xe5, 0xd9, 0xf6, 0xe4, 0xe5, 0xda, 0xf5, 0xe4, 0xe5, 0xda, 0xf6, - 0xe4, 0xe5, 0xda, 0xf5, 0xe4, 0xe5, 0xda, 0xf6, 0xe4, 0xe5, 0xdb, 0xf5, - 0xe4, 0xe5, 0xdb, 0xf3, 0xe4, 0xe5, 0xdb, 0xf5, 0xe4, 0xe5, 0xdb, 0xf3, - 0xe4, 0xe5, 0xdc, 0xf5, 0xe4, 0xe5, 0xdc, 0xf3, 0xe4, 0xe5, 0xdc, 0xf5, - 0xe4, 0xe5, 0xdd, 0xf3, 0xe4, 0xe5, 0xdd, 0xf5, 0xe4, 0xe5, 0xdd, 0xf3, - 0xe4, 0xe5, 0xdd, 0xf5, 0xe4, 0xe5, 0xde, 0xf3, 0xe4, 0xe5, 0xde, 0xf5, - 0xe4, 0xe5, 0xde, 0xf3, 0xe4, 0xe5, 0xde, 0xf5, 0xe4, 0xe5, 0xdf, 0xf3, - 0xe4, 0xe5, 0xdf, 0xf5, 0xe4, 0xe5, 0xdf, 0xf3, 0xe4, 0xe5, 0xdf, 0xf5, - 0xe4, 0xe5, 0xe0, 0xf3, 0xe4, 0xe5, 0xe0, 0xf5, 0xe4, 0xe5, 0xe0, 0xf3, - 0xe4, 0xe5, 0xe1, 0xf5, 0xe4, 0xe5, 0xe1, 0xf3, 0xe4, 0xe5, 0xe1, 0xf5, - 0xe4, 0xe5, 0xe1, 0xf3, 0xe4, 0xe5, 0xe2, 0xf5, 0xe4, 0xe5, 0xe2, 0xf3, - 0xe4, 0xe5, 0xe2, 0xf5, 0xe4, 0xe5, 0xe2, 0xf3, 0xe4, 0xe5, 0xe3, 0xf3, - 0xe5, 0xe5, 0xe3, 0xf3, 0xe4, 0xe5, 0xe3, 0xf3, 0xe5, 0xe5, 0xe3, 0xf3, - 0xe4, 0xe5, 0xe4, 0xf3, 0xe5, 0xe5, 0xe4, 0xf3, 0xe4, 0xe5, 0xe4, 0xf3, - 0xe5, 0xe5, 0xe4, 0xf3, 0xe4, 0xe4, 0xe4, 0xf3, 0xe5, 0xe5, 0xe4, 0xf3, - 0xe5, 0xe4, 0xe4, 0xf3, 0xe5, 0xe5, 0xe6, 0xf3, 0xe5, 0xe5, 0xe7, 0xf3, - 0xe6, 0xe5, 0xe6, 0xf3, 0xe6, 0xe5, 0xe7, 0xf3, 0xe6, 0xe5, 0xe6, 0xf3, - 0xe6, 0xe5, 0xe7, 0xf3, 0xe6, 0xe5, 0xe7, 0xf3, 0xe6, 0xe5, 0xe7, 0xf3, - 0xe6, 0xe5, 0xe7, 0xf2, 0xe6, 0xe5, 0xe8, 0xf3, 0xe6, 0xe5, 0xe8, 0xf2, - 0xe6, 0xe5, 0xe8, 0xf3, 0xe6, 0xe5, 0xe8, 0xf2, 0xe6, 0xe5, 0xe9, 0xf3, - 0xe6, 0xe5, 0xe9, 0xf2, 0xe6, 0xe5, 0xe9, 0xf3, 0xe6, 0xe5, 0xe9, 0xf2, - 0xe6, 0xe5, 0xea, 0xf3, 0xe6, 0xe5, 0xea, 0xf2, 0xe6, 0xe5, 0xea, 0xf3, - 0xe6, 0xe5, 0xea, 0xf2, 0xe6, 0xe5, 0xeb, 0xf3, 0xe6, 0xe5, 0xeb, 0xf2, - 0xe6, 0xe5, 0xeb, 0xf3, 0xe6, 0xe5, 0xeb, 0xf5, 0xf0, 0xe5, 0xec, 0xf3, - 0xf0, 0xe5, 0xec, 0xf5, 0xf0, 0xe5, 0xec, 0xf3, 0xf0, 0xe5, 0xec, 0xf5, - 0xf0, 0xe5, 0xec, 0xf3, 0xf0, 0xe5, 0xed, 0xf5, 0xf0, 0xe5, 0xed, 0xf3, - 0xf0, 0xe5, 0xed, 0xf5, 0xf0, 0xe5, 0xed, 0xf3, 0xf0, 0xe5, 0xee, 0xf5, - 0xf0, 0xe5, 0xee, 0xf3, 0xf0, 0xe5, 0xee, 0xf3, 0xf0, 0xe5, 0xee, 0xf3, - 0xf0, 0xe5, 0xef, 0xf3, 0xf0, 0xe5, 0xef, 0xf3, 0xf0, 0xe5, 0xef, 0xf3, - 0xf0, 0xe5, 0xef, 0xf3, 0xf0, 0xe5, 0xf0, 0xf3, 0xf0, 0xe5, 0xf0, 0xf3, - 0xf0, 0xe4, 0xf0, 0xf3, 0xf0, 0xe5, 0xf0, 0xf3, 0xf0, 0xe5, 0xf1, 0xf3, - 0xf0, 0xe5, 0xf1, 0xf3, 0xf0, 0xe5, 0xf1, 0xf3, 0xf0, 0xe5, 0xf1, 0xf2, - 0xf0, 0xe5, 0xf2, 0xf3, 0xf0, 0xe5, 0xf2, 0xf2, 0xf0, 0xe5, 0xf2, 0xf3, - 0xf0, 0xe5, 0xf2, 0xf2, 0xf0, 0xe5, 0xf2, 0xf2, 0xf0, 0xe5, 0xf3, 0xf2, - 0xf0, 0xe5, 0xf3, 0xf2, 0xf0, 0xe5, 0xf3, 0xf2, 0xf0, 0xe5, 0xf3, 0xf2, - 0xf0, 0xe5, 0xf4, 0xf2, 0xf0, 0xe5, 0xf4, 0xf2, 0xf0, 0xe5, 0xf4, 0xf2, - 0xf0, 0xe5, 0xf4, 0xf2, 0xf0, 0xe5, 0xf5, 0xf2, 0xf0, 0xe5, 0xf5, 0xf2, - 0xf0, 0xe5, 0xf5, 0xf2, 0xf0, 0xe5, 0xf5, 0xf2, 0xf0, 0xe5, 0xf5, 0xf2, - 0xf0, 0xe5, 0xf6, 0xf2, 0xf0, 0xe5, 0xf6, 0xf2, 0xf0, 0xe5, 0xf6, 0xf2, - 0xf0, 0xe5, 0xf6, 0xf2, 0xf0, 0xe5, 0xf7, 0xf2, 0xf0, 0xe5, 0xf7, 0xf2, - 0xf0, 0xe5, 0xf7, 0xf2, 0xf0, 0xe5, 0xf7, 0xf2, 0xf0, 0xe5, 0xf8, 0xf2, - 0xf0, 0xe5, 0xf8, 0xf2, 0xf0, 0xe5, 0xf8, 0xf2, 0xf0, 0xe5, 0xf8, 0xf2, - 0xf0, 0xe5, 0xf8, 0xf2, 0xf0, 0xe5, 0xf9, 0xf2, 0xf0, 0xe5, 0xf9, 0xf2, - 0xf0, 0xe5, 0xf9, 0xf2, 0xf0, 0xe5, 0xf9, 0xf2, 0xf0, 0xe5, 0xfa, 0xf2, - 0xf0, 0xe5, 0xfa, 0xf2, 0xf0, 0xe5, 0xfa, 0xf2, 0xf0, 0xe5, 0xfa, 0xf1, - 0xf1, 0xe5, 0xfa, 0xf2, 0xf0, 0xe5, 0xfb, 0xf1, 0xf1, 0xe5, 0xfb, 0xf2, - 0xf0, 0xe5, 0xfb, 0xf1, 0xf1, 0xe5, 0xfb, 0xf2, 0xf0, 0xe5, 0xfc, 0xf1, - 0xf1, 0xe5, 0xfc, 0xf2, 0xf0, 0xe5, 0xfc, 0xf1, 0xf1, 0xe5, 0xfc, 0xf2, - 0xf0, 0xe5, 0xfc, 0xf1, 0xf1, 0xe5, 0xfd, 0xf2, 0xf0, 0xe5, 0xfd, 0xf1, - 0xf1, 0xe5, 0xfd, 0xf2, 0xf0, 0xe5, 0xfd, 0xf1, 0xf1, 0xe5, 0xfe, 0xf2, - 0xf0, 0xe5, 0xfe, 0xf1, 0xf1, 0xe5, 0xfe, 0xf2, 0xf0, 0xe5, 0xfe, 0xf1, - 0xf1, 0xe5, 0xfe, 0xef, 0xf1, 0xe5, 0xff, 0xf1, 0xf1, 0xe5, 0xff, 0xef, - 0xf1, 0xe5, 0x03, 0xf3, 0x83, 0xe5, 0x0a, 0xf4, 0x83, 0xe5, 0x0f, 0xf3, - 0x83, 0xe5, 0x14, 0xf4, 0x83, 0xe5, 0x17, 0xf3, 0x83, 0xe5, 0x1b, 0xf4, - 0x83, 0xe5, 0x1e, 0xf3, 0x83, 0xe5, 0x20, 0xf4, 0x83, 0xe5, 0x23, 0xf3, - 0x83, 0xe5, 0x25, 0xf4, 0x83, 0xe5, 0x27, 0xf3, 0x83, 0xe5, 0x29, 0xf4, - 0x83, 0xe5, 0x2b, 0xf3, 0x83, 0xe5, 0x2d, 0xf4, 0x83, 0xe5, 0x2f, 0xf3, - 0x83, 0xe5, 0x31, 0xf4, 0x83, 0xe5, 0x32, 0xf3, 0x83, 0xe5, 0x34, 0xf4, - 0x83, 0xe5, 0x35, 0xf3, 0x83, 0xe5, 0x37, 0xf4, 0x83, 0xe5, 0x38, 0xf3, - 0x83, 0xe5, 0x3a, 0xf4, 0x83, 0xe5, 0x3b, 0xf3, 0x83, 0xe5, 0x3c, 0xf4, - 0x83, 0xe5, 0x3e, 0xf3, 0x83, 0xe5, 0x3f, 0xf4, 0x83, 0xe5, 0x40, 0xf3, - 0x83, 0xe5, 0x42, 0xf4, 0x83, 0xe5, 0x43, 0xf3, 0x83, 0xe5, 0x44, 0xf4, - 0x83, 0xe5, 0x45, 0xf3, 0x83, 0xe5, 0x46, 0xf4, 0x83, 0xe5, 0x47, 0xf3, - 0x83, 0xe5, 0x48, 0xf4, 0x83, 0xe5, 0x49, 0xf3, 0x83, 0xe5, 0x4a, 0xf4, - 0x83, 0xe5, 0x4b, 0xf3, 0x83, 0xe5, 0x4c, 0xf4, 0x83, 0xe5, 0x4d, 0xf3, - 0x83, 0xe5, 0x4e, 0xf4, 0x83, 0xe5, 0x4f, 0xf3, 0x83, 0xe5, 0x50, 0xf4, - 0x83, 0xe5, 0x51, 0xf3, 0x83, 0xe5, 0x52, 0xf4, 0x83, 0xe5, 0x53, 0xf3, - 0x83, 0xe5, 0x54, 0xf4, 0x83, 0xe5, 0x55, 0xf3, 0x83, 0xe5, 0x56, 0xf4, - 0x83, 0xe5, 0x57, 0xf3, 0x83, 0xe5, 0x58, 0xf4, 0x83, 0xe5, 0x58, 0xf3, - 0x83, 0xe5, 0x59, 0xf4, 0x83, 0xe5, 0x5a, 0xf3, 0x83, 0xe5, 0x5b, 0xf4, - 0x83, 0xe5, 0x5c, 0xf3, 0x83, 0xe5, 0x5d, 0xf4, 0x83, 0xe5, 0x5d, 0xf3, - 0x83, 0xe5, 0x5e, 0xf4, 0x83, 0xe5, 0x5f, 0xf3, 0x83, 0xe5, 0x60, 0xf4, - 0x83, 0xe5, 0x60, 0xf3, 0x83, 0xe5, 0x61, 0xf4, 0x83, 0xe5, 0x62, 0xf3, - 0x83, 0xe5, 0x63, 0xf4, 0x83, 0xe5, 0x63, 0xf3, 0x83, 0xe5, 0x64, 0xf4, - 0x83, 0xe5, 0x65, 0xf3, 0x83, 0xe5, 0x66, 0xf4, 0x83, 0xe5, 0x66, 0xf3, - 0x83, 0xe5, 0x67, 0xf4, 0x83, 0xe5, 0x68, 0xf3, 0x83, 0xe5, 0x68, 0xf4, - 0x83, 0xe5, 0x69, 0xf3, 0x83, 0xe5, 0x6a, 0xf4, 0x83, 0xe5, 0x6a, 0xf3, - 0x83, 0xe5, 0x6b, 0xf4, 0x83, 0xe5, 0x6c, 0xf3, 0x83, 0xe5, 0x6c, 0xf4, - 0x83, 0xe5, 0x6d, 0xf3, 0x83, 0xe5, 0x6e, 0xf4, 0x83, 0xe5, 0x6e, 0xf3, - 0x83, 0xe5, 0x6f, 0xf4, 0x83, 0xe5, 0x70, 0xf3, 0x83, 0xe5, 0x70, 0xf4, - 0x83, 0xe5, 0x71, 0xf3, 0x83, 0xe5, 0x72, 0xf4, 0x83, 0xe5, 0x72, 0xf3, - 0x83, 0xe5, 0x73, 0xf4, 0x83, 0xe5, 0x73, 0xf3, 0x83, 0xe5, 0x74, 0xf4, - 0x83, 0xe5, 0x75, 0xf3, 0x83, 0xe5, 0x75, 0xf4, 0x83, 0xe5, 0x76, 0xf3, - 0x83, 0xe5, 0x76, 0xf4, 0x83, 0xe5, 0x77, 0xf3, 0x83, 0xe5, 0x78, 0xf4, - 0x83, 0xe5, 0x78, 0xf3, 0x83, 0xe5, 0x79, 0xf4, 0x83, 0xe5, 0x79, 0xf3, - 0x83, 0xe5, 0x7a, 0xf4, 0x83, 0xe5, 0x7a, 0xf3, 0x83, 0xe5, 0x7b, 0xf4, - 0x83, 0xe5, 0x7c, 0xf3, 0x83, 0xe5, 0x7c, 0xf4, 0x83, 0xe5, 0x7d, 0xf3, - 0x83, 0xe5, 0x7d, 0xf4, 0x83, 0xe5, 0x7e, 0xf3, 0x83, 0xe5, 0x7e, 0xf4, - 0x83, 0xe5, 0x7f, 0xf3, 0x83, 0xe5, 0x7f, 0xf4, 0x83, 0xe5, 0x80, 0xf3, - 0x83, 0xe5, 0x81, 0xf4, 0x83, 0xe5, 0x81, 0xf3, 0x83, 0xe5, 0x82, 0xf4, - 0x83, 0xe5, 0x82, 0xf3, 0x83, 0xe5, 0x83, 0xf3, 0x84, 0xe5, 0x82, 0xf3, - 0x83, 0xe5, 0x83, 0xf3, 0x84, 0xe5, 0x82, 0xf3, 0x84, 0xe5, 0x83, 0xf3, - 0x85, 0xe5, 0x84, 0xf3, 0x85, 0xe7, 0x85, 0xf3, 0x86, 0xe7, 0x84, 0xf3, - 0x86, 0xe7, 0x85, 0xf3, 0x87, 0xe7, 0x87, 0xf3, 0x87, 0xe8, 0x88, 0xf3, - 0x88, 0xe8, 0x88, 0xf3, 0x88, 0xe8, 0x89, 0xf3, 0x89, 0xe8, 0x89, 0xf3, - 0x89, 0xe8, 0x8a, 0xf3, 0x8a, 0xe8, 0x8a, 0xf3, 0x8a, 0xe8, 0x8a, 0xf3, - 0x8b, 0xe8, 0x8a, 0xf3, 0x8b, 0xe8, 0x8a, 0xf3, 0x8c, 0xe8, 0x8a, 0xf3, - 0x8c, 0xe8, 0x8d, 0xf3, 0x8d, 0xe9, 0x8d, 0xf3, 0x8d, 0xe9, 0x8e, 0xf3, - 0x8e, 0xe9, 0x8e, 0xf3, 0x8e, 0xe9, 0x8e, 0xf3, 0x8e, 0xe9, 0x8f, 0xf3, - 0x8f, 0xe9, 0x8f, 0xf3, 0x8f, 0xe9, 0x8f, 0xf3, 0x90, 0xe9, 0x8f, 0xf3, - 0x90, 0xe9, 0x8f, 0xf3, 0x91, 0xe9, 0x8f, 0xf3, 0x91, 0xe9, 0x92, 0xf3, - 0x92, 0xea, 0x92, 0xf3, 0x92, 0xea, 0x93, 0xf3, 0x93, 0xea, 0x93, 0xf3, - 0x93, 0xea, 0x94, 0xf3, 0x94, 0xea, 0x94, 0xf3, 0x94, 0xea, 0x94, 0xf3, - 0x94, 0xea, 0x94, 0xf3, 0x95, 0xea, 0x94, 0xf3, 0x95, 0xea, 0x94, 0xf3, - 0x96, 0xea, 0x94, 0xf3, 0x96, 0xea, 0x94, 0xf3, 0x97, 0xea, 0x94, 0xf3, - 0x97, 0xea, 0x98, 0xf3, 0x98, 0xeb, 0x98, 0xf3, 0x98, 0xeb, 0x98, 0xf3, - 0x98, 0xeb, 0x99, 0xf3, 0x99, 0xeb, 0x99, 0xf3, 0x99, 0xeb, 0x99, 0xf3, - 0x9a, 0xeb, 0x99, 0xf3, 0x9a, 0xeb, 0x99, 0xf3, 0x9a, 0xeb, 0x99, 0xf3, - 0x9b, 0xeb, 0x99, 0xf3, 0x9b, 0xeb, 0x99, 0xf3, 0x9c, 0xeb, 0x9c, 0xf3, - 0x9c, 0xec, 0x9d, 0xf3, 0x9d, 0xec, 0x9d, 0xf3, 0x9d, 0xec, 0x9d, 0xf3, - 0x9d, 0xec, 0x9e, 0xf3, 0x9e, 0xec, 0x9d, 0xf3, 0x9e, 0xec, 0x9e, 0xf3, - 0x9f, 0xec, 0x9d, 0xf3, 0x9f, 0xec, 0x9e, 0xf3, 0x9f, 0xec, 0x9d, 0xf3, - 0xa0, 0xec, 0x9e, 0xf3, 0xa0, 0xec, 0xa1, 0xf3, 0xa1, 0xed, 0xa1, 0xf3, - 0xa1, 0xed, 0xa1, 0xf3, 0xa1, 0xed, 0xa2, 0xf3, 0xa2, 0xed, 0xa2, 0xf3, - 0xa2, 0xed, 0xa2, 0xf3, 0xa3, 0xed, 0xa2, 0xf3, 0xa3, 0xed, 0xa2, 0xf3, - 0xa3, 0xed, 0xa2, 0xf3, 0xa4, 0xed, 0xa2, 0xf3, 0xa4, 0xed, 0xa2, 0xf3, - 0xa5, 0xed, 0xa2, 0xf3, 0xa5, 0xed, 0xa2, 0xf3, 0xa5, 0xed, 0xa6, 0xf3, - 0xa6, 0xee, 0xa6, 0xf3, 0xa6, 0xee, 0xa6, 0xf3, 0xa6, 0xee, 0xa6, 0xf3, - 0xa7, 0xee, 0xa6, 0xf3, 0xa7, 0xee, 0xa6, 0xf3, 0xa8, 0xee, 0xa6, 0xf3, - 0xa8, 0xee, 0xa6, 0xf3, 0xa8, 0xee, 0xa6, 0xf3, 0xa9, 0xee, 0xa6, 0xf3, - 0xa9, 0xee, 0xa6, 0xf3, 0xaa, 0xee, 0xaa, 0xf3, 0xaa, 0xef, 0xaa, 0xf3, - 0xaa, 0xef, 0xab, 0xf3, 0xab, 0xef, 0xaa, 0xf3, 0xab, 0xef, 0xab, 0xf3, - 0xab, 0xef, 0xaa, 0xf3, 0xac, 0xef, 0xab, 0xf3, 0xac, 0xef, 0xaa, 0xf3, - 0xac, 0xef, 0xab, 0xf3, 0xad, 0xef, 0xaa, 0xf3, 0xad, 0xef, 0xab, 0xf3, - 0xae, 0xef, 0xae, 0xf3, 0xae, 0xf0, 0xae, 0xf3, 0xae, 0xf0, 0xaf, 0xf3, - 0xaf, 0xf0, 0xae, 0xf3, 0xaf, 0xf0, 0xaf, 0xf3, 0xaf, 0xf0, 0xae, 0xf3, - 0xb0, 0xf0, 0xaf, 0xf3, 0xb0, 0xf0, 0xae, 0xf3, 0xb0, 0xf0, 0xaf, 0xf3, - 0xb1, 0xf0, 0xae, 0xf3, 0xb1, 0xf0, 0xaf, 0xf3, 0xb2, 0xf0, 0xb2, 0xf3, - 0xb2, 0xf1, 0xb2, 0xf3, 0xb2, 0xf1, 0xb3, 0xf3, 0xb3, 0xf1, 0xb2, 0xf3, - 0xb3, 0xf1, 0xb3, 0xf3, 0xb3, 0xf1, 0xb2, 0xf3, 0xb4, 0xf1, 0xb3, 0xf3, - 0xb4, 0xf1, 0xb2, 0xf3, 0xb4, 0xf1, 0xb3, 0xf3, 0xb5, 0xf1, 0xb2, 0xf3, - 0xb5, 0xf1, 0xb3, 0xf3, 0xb5, 0xf1, 0xb6, 0xf3, 0xb6, 0xf2, 0xb6, 0xf3, - 0xb6, 0xf2, 0xb6, 0xf3, 0xb6, 0xf2, 0xb6, 0xf3, 0xb7, 0xf2, 0xb6, 0xf3, - 0xb7, 0xf2, 0xb6, 0xf3, 0xb7, 0xf2, 0xb6, 0xf3, 0xb8, 0xf2, 0xb6, 0xf3, - 0xb8, 0xf2, 0xb6, 0xf3, 0xb8, 0xf2, 0xb6, 0xf3, 0xb9, 0xf2, 0xb6, 0xf3, - 0xb9, 0xf2, 0xb6, 0xf3, 0xb9, 0xf2, 0xb6, 0xf3, 0xba, 0xf2, 0xba, 0xf3, - 0xba, 0xf3, 0xba, 0xf3, 0xba, 0xf3, 0xba, 0xf3, 0xbb, 0xf3, 0xba, 0xf3, - 0xbb, 0xf3, 0xba, 0xf3, 0xbb, 0xf3, 0xba, 0xf3, 0xbc, 0xf3, 0xba, 0xf3, - 0xbc, 0xf3, 0xba, 0xf3, 0xbc, 0xf3, 0xba, 0xf3, 0xbd, 0xf3, 0xba, 0xf3, - 0xbd, 0xf3, 0xba, 0xf3, 0xbd, 0xf3, 0xbe, 0xf3, 0xbe, 0xf4, 0xbd, 0xf3, - 0xbe, 0xf4, 0xbe, 0xf3, 0xbe, 0xf4, 0xbd, 0xf3, 0xbf, 0xf4, 0xbe, 0xf3, - 0xbf, 0xf4, 0xbd, 0xf3, 0xbf, 0xf4, 0xbe, 0xf3, 0xc0, 0xf4, 0xbd, 0xf3, - 0xc0, 0xf4, 0xbe, 0xf3, 0xc0, 0xf4, 0xbd, 0xf3, 0xc1, 0xf4, 0xbe, 0xf3, - 0xc1, 0xf4, 0xc1, 0xf3, 0xc1, 0xf5, 0xcb, 0xf3, 0xc1, 0xe6, 0xcb, 0xf3, - 0xc2, 0xe8, 0xcb, 0xf3, 0xc2, 0xe6, 0xcb, 0xf3, 0xc2, 0xe8, 0xcb, 0xf3, - 0xc3, 0xe6, 0xcb, 0xf3, 0xc3, 0xe8, 0xcb, 0xf3, 0xc3, 0xe6, 0xcb, 0xf3, - 0xc4, 0xe8, 0xcb, 0xf3, 0xc4, 0xe6, 0xcb, 0xf3, 0xc4, 0xe8, 0xcb, 0xf3, - 0xc5, 0xe6, 0xcb, 0xf3, 0xc5, 0xe8, 0xcb, 0xf3, 0xc5, 0xe6, 0xcb, 0xf3, - 0xc6, 0xe8, 0xcb, 0xf3, 0xc6, 0xe6, 0xcb, 0xf3, 0xc6, 0xe8, 0xcb, 0xf3, - 0xc6, 0xe6, 0xcb, 0xf3, 0xc7, 0xe8, 0xcb, 0xf3, 0xc7, 0xe6, 0xcb, 0xf3, - 0xc7, 0xe8, 0xcb, 0xf3, 0xc8, 0xe6, 0xcb, 0xf3, 0xc8, 0xe8, 0xcb, 0xf3, - 0xc8, 0xe6, 0xcb, 0xf3, 0xc9, 0xe8, 0xcb, 0xf3, 0xc9, 0xe6, 0xcc, 0xf3, - 0xc9, 0xe5, 0xcb, 0xf3, 0xc9, 0xe6, 0xcc, 0xf3, 0xca, 0xe5, 0xcb, 0xf3, - 0xca, 0xe6, 0xcc, 0xf3, 0xca, 0xe5, 0xcb, 0xf3, 0xcb, 0xe6, 0xcc, 0xf3, - 0xcb, 0xe5, 0xcc, 0xf3, 0xcb, 0xe5, 0xcc, 0xf3, 0xcb, 0xe5, 0xcc, 0xf3, - 0xcb, 0xe5, 0xcc, 0xf3, 0xcb, 0xe5, 0xcc, 0xf3, 0xcb, 0xe5, 0xcd, 0xf3, - 0xcb, 0xe5, 0xcd, 0xf3, 0xcb, 0xe5, 0xcd, 0xf3, 0xcb, 0xe5, 0xce, 0xf3, - 0xcb, 0xe5, 0xce, 0xf2, 0xcc, 0xe5, 0xce, 0xf3, 0xcb, 0xe5, 0xce, 0xf2, - 0xcc, 0xe5, 0xcf, 0xf3, 0xcb, 0xe5, 0xcf, 0xf2, 0xcc, 0xe5, 0xcf, 0xf3, - 0xcb, 0xe5, 0xd0, 0xf2, 0xcc, 0xe5, 0xd0, 0xf3, 0xcb, 0xe5, 0xd0, 0xf2, - 0xcc, 0xe5, 0xd0, 0xf3, 0xcb, 0xe5, 0xd1, 0xf2, 0xcc, 0xe5, 0xd1, 0xf3, - 0xcb, 0xe5, 0xd1, 0xf2, 0xcc, 0xe5, 0xd2, 0xf3, 0xcb, 0xe5, 0xd2, 0xf2, - 0xcc, 0xe5, 0xd2, 0xf3, 0xcb, 0xe5, 0xd2, 0xf2, 0xcc, 0xe5, 0xd3, 0xf3, - 0xcb, 0xe5, 0xd3, 0xf2, 0xcc, 0xe5, 0xd3, 0xf3, 0xcb, 0xe5, 0xd4, 0xf2, - 0xcc, 0xe5, 0xd4, 0xf3, 0xcb, 0xe5, 0xd4, 0xf2, 0xcc, 0xe5, 0xd4, 0xf3, - 0xcb, 0xe5, 0xd5, 0xf2, 0xcc, 0xe5, 0xd5, 0xf3, 0xcb, 0xe5, 0xd5, 0xf2, - 0xcc, 0xe5, 0xd6, 0xf3, 0xcb, 0xe5, 0xd6, 0xf2, 0xcc, 0xe5, 0xd6, 0xf1, - 0xcc, 0xe5, 0xd6, 0xf2, 0xcc, 0xe5, 0xd7, 0xf1, 0xcc, 0xe5, 0xd7, 0xf2, - 0xcc, 0xe5, 0xd7, 0xf1, 0xcc, 0xe5, 0xd7, 0xfc, 0xd4, 0xe5, 0xd8, 0xfd, - 0xd7, 0xe5, 0xd8, 0xfd, 0xd7, 0xe5, 0xd8, 0xfd, 0xd7, 0xe5, 0xd9, 0xfd, - 0xd7, 0xe5, 0xd9, 0xfd, 0xd7, 0xe5, 0xd9, 0xf4, 0xe4, 0xe5, 0xd9, 0xf6, - 0xe4, 0xe5, 0xda, 0xf4, 0xe4, 0xe5, 0xda, 0xf6, 0xe4, 0xe5, 0xda, 0xf4, - 0xe4, 0xe5, 0xda, 0xf6, 0xe4, 0xe5, 0xdb, 0xf4, 0xe4, 0xe5, 0xdb, 0xf6, - 0xe4, 0xe5, 0xdb, 0xf4, 0xe4, 0xe5, 0xdb, 0xf6, 0xe4, 0xe5, 0xdc, 0xf4, - 0xe4, 0xe5, 0xdc, 0xf6, 0xe4, 0xe5, 0xdc, 0xf4, 0xe4, 0xe5, 0xdd, 0xf6, - 0xe4, 0xe5, 0xdd, 0xf4, 0xe4, 0xe5, 0xdd, 0xf6, 0xe4, 0xe5, 0xdd, 0xf4, - 0xe4, 0xe5, 0xde, 0xf6, 0xe4, 0xe5, 0xde, 0xf4, 0xe4, 0xe5, 0xde, 0xf3, - 0xe4, 0xe5, 0xde, 0xf4, 0xe4, 0xe5, 0xdf, 0xf3, 0xe4, 0xe5, 0xdf, 0xf4, - 0xe4, 0xe5, 0xdf, 0xf3, 0xe4, 0xe5, 0xdf, 0xf4, 0xe4, 0xe5, 0xe0, 0xf3, - 0xe4, 0xe5, 0xe0, 0xf4, 0xe4, 0xe5, 0xe0, 0xf3, 0xe4, 0xe5, 0xe1, 0xf4, - 0xe4, 0xe5, 0xe1, 0xf3, 0xe4, 0xe5, 0xe1, 0xf4, 0xe4, 0xe5, 0xe1, 0xf3, - 0xe4, 0xe5, 0xe2, 0xf4, 0xe4, 0xe5, 0xe2, 0xf3, 0xe4, 0xe5, 0xe2, 0xf4, - 0xe4, 0xe5, 0xe2, 0xf3, 0xe4, 0xe5, 0xe3, 0xf4, 0xe4, 0xe5, 0xe3, 0xf3, - 0xe4, 0xe5, 0xe3, 0xf4, 0xe4, 0xe5, 0xe3, 0xf3, 0xe4, 0xe5, 0xe4, 0xf3, - 0xe5, 0xe5, 0xe4, 0xf3, 0xe4, 0xe5, 0xe4, 0xf3, 0xe5, 0xe5, 0xe4, 0xf3, - 0xe4, 0xe4, 0xe4, 0xf3, 0xe5, 0xe5, 0xe4, 0xf3, 0xe5, 0xe4, 0xe4, 0xf3, - 0xe5, 0xe5, 0xe6, 0xf3, 0xe5, 0xe5, 0xe6, 0xf3, 0xe6, 0xe6, 0xe6, 0xf3, - 0xe6, 0xe5, 0xe7, 0xf3, 0xe6, 0xe5, 0xe6, 0xf3, 0xe6, 0xe5, 0xe7, 0xf3, - 0xe6, 0xe5, 0xe7, 0xf3, 0xe6, 0xe5, 0xe7, 0xf3, 0xe6, 0xe5, 0xe7, 0xf3, - 0xe6, 0xe5, 0xe8, 0xf3, 0xe6, 0xe5, 0xe8, 0xf3, 0xe6, 0xe5, 0xe8, 0xf3, - 0xe6, 0xe5, 0xe8, 0xf2, 0xe6, 0xe5, 0xe9, 0xf3, 0xe6, 0xe5, 0xe9, 0xf2, - 0xe6, 0xe5, 0xe9, 0xf3, 0xe6, 0xe5, 0xe9, 0xf2, 0xe6, 0xe5, 0xea, 0xf3, - 0xe6, 0xe5, 0xea, 0xf2, 0xe6, 0xe5, 0xea, 0xf3, 0xe6, 0xe5, 0xea, 0xf2, - 0xe6, 0xe5, 0xeb, 0xf3, 0xe6, 0xe5, 0xeb, 0xf2, 0xe6, 0xe5, 0xeb, 0xf3, - 0xe6, 0xe5, 0xeb, 0xf5, 0xf0, 0xe5, 0xec, 0xf3, 0xf0, 0xe5, 0xec, 0xf5, - 0xf0, 0xe5, 0xec, 0xf3, 0xf0, 0xe5, 0xec, 0xf5, 0xf0, 0xe5, 0xec, 0xf3, - 0xf0, 0xe5, 0xed, 0xf5, 0xf0, 0xe5, 0xed, 0xf3, 0xf0, 0xe5, 0xed, 0xf5, - 0xf0, 0xe5, 0xed, 0xf3, 0xf0, 0xe5, 0xee, 0xf5, 0xf0, 0xe5, 0xee, 0xf3, - 0xf0, 0xe5, 0xee, 0xf3, 0xf0, 0xe5, 0xee, 0xf3, 0xf0, 0xe5, 0xef, 0xf3, - 0xf0, 0xe5, 0xef, 0xf3, 0xf0, 0xe5, 0xef, 0xf3, 0xf0, 0xe5, 0xef, 0xf3, - 0xf0, 0xe5, 0xf0, 0xf3, 0xf0, 0xe5, 0xf0, 0xf3, 0xf0, 0xe4, 0xf0, 0xf3, - 0xf0, 0xe5, 0xf0, 0xf3, 0xf0, 0xe5, 0xf1, 0xf3, 0xf0, 0xe5, 0xf1, 0xf3, - 0xf0, 0xe5, 0xf1, 0xf3, 0xf0, 0xe5, 0xf1, 0xf2, 0xf0, 0xe5, 0xf2, 0xf3, - 0xf0, 0xe5, 0xf2, 0xf2, 0xf0, 0xe5, 0xf2, 0xf3, 0xf0, 0xe5, 0xf2, 0xf2, - 0xf0, 0xe5, 0xf2, 0xf2, 0xf0, 0xe5, 0xf3, 0xf2, 0xf0, 0xe5, 0xf3, 0xf2, - 0xf0, 0xe5, 0xf3, 0xf2, 0xf0, 0xe5, 0xf3, 0xf2, 0xf0, 0xe5, 0xf4, 0xf2, - 0xf0, 0xe5, 0xf4, 0xf2, 0xf0, 0xe5, 0xf4, 0xf2, 0xf0, 0xe5, 0xf4, 0xf2, - 0xf0, 0xe5, 0xf5, 0xf2, 0xf0, 0xe5, 0xf5, 0xf2, 0xf0, 0xe5, 0xf5, 0xf2, - 0xf0, 0xe5, 0xf5, 0xf2, 0xf0, 0xe5, 0xf5, 0xf2, 0xf0, 0xe5, 0xf6, 0xf2, - 0xf0, 0xe5, 0xf6, 0xf2, 0xf0, 0xe5, 0xf6, 0xf2, 0xf0, 0xe5, 0xf6, 0xf2, - 0xf0, 0xe5, 0xf7, 0xf2, 0xf0, 0xe5, 0xf7, 0xf2, 0xf0, 0xe5, 0xf7, 0xf2, - 0xf0, 0xe5, 0xf7, 0xf2, 0xf0, 0xe5, 0xf8, 0xf2, 0xf0, 0xe5, 0xf8, 0xf2, - 0xf0, 0xe5, 0xf8, 0xf2, 0xf0, 0xe5, 0xf8, 0xf2, 0xf0, 0xe5, 0xf8, 0xf2, - 0xf0, 0xe5, 0xf9, 0xf2, 0xf0, 0xe5, 0xf9, 0xf2, 0xf0, 0xe5, 0xf9, 0xf2, - 0xf0, 0xe5, 0xf9, 0xf2, 0xf0, 0xe5, 0xfa, 0xf2, 0xf0, 0xe5, 0xfa, 0xf2, - 0xf0, 0xe5, 0xfa, 0xf2, 0xf0, 0xe5, 0xfa, 0xf1, 0xf1, 0xe5, 0xfa, 0xf2, - 0xf0, 0xe5, 0xfb, 0xf1, 0xf1, 0xe5, 0xfb, 0xf2, 0xf0, 0xe5, 0xfb, 0xf1, - 0xf1, 0xe5, 0xfb, 0xf2, 0xf0, 0xe5, 0xfc, 0xf1, 0xf1, 0xe5, 0xfc, 0xf2, - 0xf0, 0xe5, 0xfc, 0xf1, 0xf1, 0xe5, 0xfc, 0xf2, 0xf0, 0xe5, 0xfc, 0xf1, - 0xf1, 0xe5, 0xfd, 0xf2, 0xf0, 0xe5, 0xfd, 0xf1, 0xf1, 0xe5, 0xfd, 0xf2, - 0xf0, 0xe5, 0xfd, 0xf1, 0xf1, 0xe5, 0xfe, 0xf2, 0xf0, 0xe5, 0xfe, 0xf1, - 0xf1, 0xe5, 0xfe, 0xf2, 0xf0, 0xe5, 0xfe, 0xf1, 0xf1, 0xe5, 0xfe, 0xf0, - 0xf1, 0xe5, 0xff, 0xf1, 0xf1, 0xe5, 0xff, 0xf0, 0xf1, 0xe5, 0x03, 0xf4, - 0x83, 0xe6, 0x0a, 0xf4, 0x83, 0xe6, 0x0f, 0xf4, 0x83, 0xe6, 0x14, 0xf4, - 0x83, 0xe6, 0x17, 0xf4, 0x83, 0xe6, 0x1b, 0xf4, 0x83, 0xe6, 0x1e, 0xf4, - 0x83, 0xe6, 0x20, 0xf4, 0x83, 0xe6, 0x23, 0xf4, 0x83, 0xe6, 0x25, 0xf4, - 0x83, 0xe6, 0x27, 0xf4, 0x83, 0xe6, 0x29, 0xf4, 0x83, 0xe6, 0x2b, 0xf4, - 0x83, 0xe6, 0x2d, 0xf4, 0x83, 0xe6, 0x2f, 0xf4, 0x83, 0xe6, 0x31, 0xf4, - 0x83, 0xe6, 0x32, 0xf4, 0x83, 0xe6, 0x34, 0xf4, 0x83, 0xe6, 0x35, 0xf4, - 0x83, 0xe6, 0x37, 0xf4, 0x83, 0xe6, 0x38, 0xf4, 0x83, 0xe6, 0x3a, 0xf4, - 0x83, 0xe6, 0x3b, 0xf4, 0x83, 0xe6, 0x3c, 0xf4, 0x83, 0xe6, 0x3e, 0xf4, - 0x83, 0xe6, 0x3f, 0xf4, 0x83, 0xe6, 0x40, 0xf4, 0x83, 0xe6, 0x42, 0xf4, - 0x83, 0xe6, 0x43, 0xf4, 0x83, 0xe6, 0x44, 0xf4, 0x83, 0xe6, 0x45, 0xf4, - 0x83, 0xe6, 0x46, 0xf4, 0x83, 0xe6, 0x47, 0xf4, 0x83, 0xe6, 0x48, 0xf4, - 0x83, 0xe6, 0x49, 0xf4, 0x83, 0xe6, 0x4a, 0xf4, 0x83, 0xe6, 0x4b, 0xf4, - 0x83, 0xe6, 0x4c, 0xf4, 0x83, 0xe6, 0x4d, 0xf4, 0x83, 0xe6, 0x4e, 0xf4, - 0x83, 0xe6, 0x4f, 0xf4, 0x83, 0xe6, 0x50, 0xf4, 0x83, 0xe6, 0x51, 0xf4, - 0x83, 0xe6, 0x52, 0xf4, 0x83, 0xe6, 0x53, 0xf4, 0x83, 0xe6, 0x54, 0xf4, - 0x83, 0xe6, 0x55, 0xf4, 0x83, 0xe6, 0x56, 0xf4, 0x83, 0xe6, 0x57, 0xf4, - 0x83, 0xe6, 0x58, 0xf4, 0x83, 0xe6, 0x58, 0xf4, 0x83, 0xe6, 0x59, 0xf4, - 0x83, 0xe6, 0x5a, 0xf4, 0x83, 0xe6, 0x5b, 0xf4, 0x83, 0xe6, 0x5c, 0xf4, - 0x83, 0xe6, 0x5d, 0xf4, 0x83, 0xe6, 0x5d, 0xf4, 0x83, 0xe6, 0x5e, 0xf4, - 0x83, 0xe6, 0x5f, 0xf4, 0x83, 0xe6, 0x60, 0xf4, 0x83, 0xe6, 0x60, 0xf4, - 0x83, 0xe6, 0x61, 0xf4, 0x83, 0xe6, 0x62, 0xf4, 0x83, 0xe6, 0x63, 0xf4, - 0x83, 0xe6, 0x63, 0xf4, 0x83, 0xe6, 0x64, 0xf4, 0x83, 0xe6, 0x65, 0xf4, - 0x83, 0xe6, 0x66, 0xf4, 0x83, 0xe6, 0x66, 0xf4, 0x83, 0xe6, 0x67, 0xf4, - 0x83, 0xe6, 0x68, 0xf4, 0x83, 0xe6, 0x68, 0xf4, 0x83, 0xe6, 0x69, 0xf4, - 0x83, 0xe6, 0x6a, 0xf4, 0x83, 0xe6, 0x6a, 0xf4, 0x83, 0xe6, 0x6b, 0xf4, - 0x83, 0xe6, 0x6c, 0xf4, 0x83, 0xe6, 0x6c, 0xf4, 0x83, 0xe6, 0x6d, 0xf4, - 0x83, 0xe6, 0x6e, 0xf4, 0x83, 0xe6, 0x6e, 0xf4, 0x83, 0xe6, 0x6f, 0xf4, - 0x83, 0xe6, 0x70, 0xf4, 0x83, 0xe6, 0x70, 0xf4, 0x83, 0xe6, 0x71, 0xf4, - 0x83, 0xe6, 0x72, 0xf4, 0x83, 0xe6, 0x72, 0xf4, 0x83, 0xe6, 0x73, 0xf4, - 0x83, 0xe6, 0x73, 0xf4, 0x83, 0xe6, 0x74, 0xf4, 0x83, 0xe6, 0x75, 0xf4, - 0x83, 0xe6, 0x75, 0xf4, 0x83, 0xe6, 0x76, 0xf4, 0x83, 0xe6, 0x76, 0xf4, - 0x83, 0xe6, 0x77, 0xf4, 0x83, 0xe6, 0x78, 0xf4, 0x83, 0xe6, 0x78, 0xf4, - 0x83, 0xe6, 0x79, 0xf4, 0x83, 0xe6, 0x79, 0xf4, 0x83, 0xe6, 0x7a, 0xf4, - 0x83, 0xe6, 0x7a, 0xf4, 0x83, 0xe6, 0x7b, 0xf4, 0x83, 0xe6, 0x7c, 0xf4, - 0x83, 0xe6, 0x7c, 0xf4, 0x83, 0xe6, 0x7d, 0xf4, 0x83, 0xe6, 0x7d, 0xf4, - 0x83, 0xe6, 0x7e, 0xf4, 0x83, 0xe6, 0x7e, 0xf4, 0x83, 0xe6, 0x7f, 0xf4, - 0x83, 0xe6, 0x7f, 0xf4, 0x83, 0xe6, 0x80, 0xf4, 0x83, 0xe6, 0x81, 0xf4, - 0x83, 0xe6, 0x81, 0xf4, 0x83, 0xe6, 0x82, 0xf4, 0x83, 0xe6, 0x82, 0xf4, - 0x83, 0xe6, 0x83, 0xf4, 0x84, 0xe6, 0x82, 0xf4, 0x83, 0xe6, 0x83, 0xf4, - 0x84, 0xe6, 0x82, 0xf4, 0x84, 0xe6, 0x83, 0xf4, 0x85, 0xe6, 0x85, 0xf4, - 0x85, 0xe8, 0x86, 0xf4, 0x86, 0xe8, 0x86, 0xf4, 0x86, 0xe8, 0x87, 0xf4, - 0x87, 0xe8, 0x87, 0xf4, 0x87, 0xe8, 0x87, 0xf4, 0x88, 0xe8, 0x87, 0xf4, - 0x88, 0xe8, 0x87, 0xf4, 0x89, 0xe8, 0x87, 0xf4, 0x89, 0xe8, 0x8a, 0xf4, - 0x8a, 0xe9, 0x8a, 0xf4, 0x8a, 0xe9, 0x8b, 0xf4, 0x8b, 0xe9, 0x8b, 0xf4, - 0x8b, 0xe9, 0x8c, 0xf4, 0x8c, 0xe9, 0x8c, 0xf4, 0x8c, 0xe9, 0x8d, 0xf4, - 0x8d, 0xe9, 0x8c, 0xf4, 0x8d, 0xe9, 0x8d, 0xf4, 0x8e, 0xe9, 0x8c, 0xf4, - 0x8e, 0xe9, 0x8d, 0xf4, 0x8e, 0xe9, 0x8f, 0xf4, 0x8f, 0xea, 0x8f, 0xf4, - 0x8f, 0xea, 0x90, 0xf4, 0x90, 0xea, 0x90, 0xf4, 0x90, 0xea, 0x91, 0xf4, - 0x91, 0xea, 0x91, 0xf4, 0x91, 0xea, 0x92, 0xf4, 0x92, 0xea, 0x91, 0xf4, - 0x92, 0xea, 0x92, 0xf4, 0x93, 0xea, 0x91, 0xf4, 0x93, 0xea, 0x92, 0xf4, - 0x94, 0xea, 0x94, 0xf4, 0x94, 0xeb, 0x94, 0xf4, 0x94, 0xeb, 0x95, 0xf4, - 0x95, 0xeb, 0x95, 0xf4, 0x95, 0xeb, 0x96, 0xf4, 0x96, 0xeb, 0x96, 0xf4, - 0x96, 0xeb, 0x97, 0xf4, 0x97, 0xeb, 0x96, 0xf4, 0x97, 0xeb, 0x97, 0xf4, - 0x98, 0xeb, 0x96, 0xf4, 0x98, 0xeb, 0x97, 0xf4, 0x98, 0xeb, 0x96, 0xf4, - 0x99, 0xeb, 0x97, 0xf4, 0x99, 0xeb, 0x9a, 0xf4, 0x9a, 0xec, 0x9a, 0xf4, - 0x9a, 0xec, 0x9a, 0xf4, 0x9a, 0xec, 0x9b, 0xf4, 0x9b, 0xec, 0x9b, 0xf4, - 0x9b, 0xec, 0x9b, 0xf4, 0x9c, 0xec, 0x9b, 0xf4, 0x9c, 0xec, 0x9b, 0xf4, - 0x9d, 0xec, 0x9b, 0xf4, 0x9d, 0xec, 0x9b, 0xf4, 0x9d, 0xec, 0x9b, 0xf4, - 0x9e, 0xec, 0x9e, 0xf4, 0x9e, 0xed, 0x9f, 0xf4, 0x9f, 0xed, 0x9f, 0xf4, - 0x9f, 0xed, 0x9f, 0xf4, 0x9f, 0xed, 0xa0, 0xf4, 0xa0, 0xed, 0x9f, 0xf4, - 0xa0, 0xed, 0xa0, 0xf4, 0xa1, 0xed, 0x9f, 0xf4, 0xa1, 0xed, 0xa0, 0xf4, - 0xa1, 0xed, 0x9f, 0xf4, 0xa2, 0xed, 0xa0, 0xf4, 0xa2, 0xed, 0xa3, 0xf4, - 0xa3, 0xee, 0xa3, 0xf4, 0xa3, 0xee, 0xa3, 0xf4, 0xa3, 0xee, 0xa4, 0xf4, - 0xa4, 0xee, 0xa4, 0xf4, 0xa4, 0xee, 0xa4, 0xf4, 0xa5, 0xee, 0xa4, 0xf4, - 0xa5, 0xee, 0xa4, 0xf4, 0xa5, 0xee, 0xa4, 0xf4, 0xa6, 0xee, 0xa4, 0xf4, - 0xa6, 0xee, 0xa4, 0xf4, 0xa6, 0xee, 0xa4, 0xf4, 0xa7, 0xee, 0xa4, 0xf4, - 0xa7, 0xee, 0xa8, 0xf4, 0xa8, 0xef, 0xa8, 0xf4, 0xa8, 0xef, 0xa8, 0xf4, - 0xa8, 0xef, 0xa8, 0xf4, 0xa9, 0xef, 0xa8, 0xf4, 0xa9, 0xef, 0xa8, 0xf4, - 0xaa, 0xef, 0xa8, 0xf4, 0xaa, 0xef, 0xa8, 0xf4, 0xaa, 0xef, 0xa8, 0xf4, - 0xab, 0xef, 0xa8, 0xf4, 0xab, 0xef, 0xa8, 0xf4, 0xab, 0xef, 0xac, 0xf4, - 0xac, 0xf0, 0xac, 0xf4, 0xac, 0xf0, 0xac, 0xf4, 0xac, 0xf0, 0xac, 0xf4, - 0xad, 0xf0, 0xac, 0xf4, 0xad, 0xf0, 0xac, 0xf4, 0xae, 0xf0, 0xac, 0xf4, - 0xae, 0xf0, 0xac, 0xf4, 0xae, 0xf0, 0xac, 0xf4, 0xaf, 0xf0, 0xac, 0xf4, - 0xaf, 0xf0, 0xac, 0xf4, 0xaf, 0xf0, 0xb0, 0xf4, 0xb0, 0xf1, 0xb0, 0xf4, - 0xb0, 0xf1, 0xb0, 0xf4, 0xb0, 0xf1, 0xb0, 0xf4, 0xb1, 0xf1, 0xb0, 0xf4, - 0xb1, 0xf1, 0xb0, 0xf4, 0xb2, 0xf1, 0xb0, 0xf4, 0xb2, 0xf1, 0xb0, 0xf4, - 0xb2, 0xf1, 0xb0, 0xf4, 0xb3, 0xf1, 0xb0, 0xf4, 0xb3, 0xf1, 0xb0, 0xf4, - 0xb3, 0xf1, 0xb4, 0xf4, 0xb4, 0xf2, 0xb4, 0xf4, 0xb4, 0xf2, 0xb4, 0xf4, - 0xb4, 0xf2, 0xb4, 0xf4, 0xb5, 0xf2, 0xb4, 0xf4, 0xb5, 0xf2, 0xb4, 0xf4, - 0xb5, 0xf2, 0xb4, 0xf4, 0xb6, 0xf2, 0xb4, 0xf4, 0xb6, 0xf2, 0xb4, 0xf4, - 0xb6, 0xf2, 0xb4, 0xf4, 0xb7, 0xf2, 0xb4, 0xf4, 0xb7, 0xf2, 0xb7, 0xf4, - 0xb7, 0xf3, 0xb8, 0xf4, 0xb8, 0xf3, 0xb8, 0xf4, 0xb8, 0xf3, 0xb8, 0xf4, - 0xb8, 0xf3, 0xb8, 0xf4, 0xb9, 0xf3, 0xb8, 0xf4, 0xb9, 0xf3, 0xb8, 0xf4, - 0xb9, 0xf3, 0xb8, 0xf4, 0xba, 0xf3, 0xb8, 0xf4, 0xba, 0xf3, 0xb8, 0xf4, - 0xba, 0xf3, 0xb8, 0xf4, 0xbb, 0xf3, 0xb8, 0xf4, 0xbb, 0xf3, 0xb8, 0xf4, - 0xbb, 0xf3, 0xbc, 0xf4, 0xbc, 0xf4, 0xbb, 0xf4, 0xbc, 0xf4, 0xbc, 0xf4, - 0xbc, 0xf4, 0xbb, 0xf4, 0xbd, 0xf4, 0xbc, 0xf4, 0xbd, 0xf4, 0xbb, 0xf4, - 0xbd, 0xf4, 0xbc, 0xf4, 0xbe, 0xf4, 0xbb, 0xf4, 0xbe, 0xf4, 0xbc, 0xf4, - 0xbe, 0xf4, 0xbb, 0xf4, 0xbf, 0xf4, 0xbc, 0xf4, 0xbf, 0xf4, 0xbf, 0xf4, - 0xbf, 0xf5, 0xbf, 0xf4, 0xc0, 0xf5, 0xbf, 0xf4, 0xc0, 0xf5, 0xbf, 0xf4, - 0xc0, 0xf5, 0xbf, 0xf4, 0xc1, 0xf5, 0xbf, 0xf4, 0xc1, 0xf5, 0xbf, 0xf4, - 0xc1, 0xf5, 0xbf, 0xf4, 0xc1, 0xf5, 0xcb, 0xf4, 0xc2, 0xe9, 0xcb, 0xf4, - 0xc2, 0xeb, 0xcb, 0xf4, 0xc2, 0xe9, 0xcb, 0xf4, 0xc3, 0xeb, 0xcb, 0xf4, - 0xc3, 0xe9, 0xcb, 0xf4, 0xc3, 0xeb, 0xcb, 0xf4, 0xc4, 0xe9, 0xcb, 0xf4, - 0xc4, 0xe6, 0xcb, 0xf4, 0xc4, 0xe9, 0xcb, 0xf4, 0xc5, 0xe6, 0xcb, 0xf4, - 0xc5, 0xe9, 0xcb, 0xf4, 0xc5, 0xe6, 0xcb, 0xf4, 0xc6, 0xe9, 0xcb, 0xf4, - 0xc6, 0xe6, 0xcb, 0xf4, 0xc6, 0xe9, 0xcb, 0xf4, 0xc6, 0xe6, 0xcb, 0xf4, - 0xc7, 0xe9, 0xcb, 0xf4, 0xc7, 0xe6, 0xcb, 0xf4, 0xc7, 0xe9, 0xcb, 0xf4, - 0xc8, 0xe6, 0xcb, 0xf4, 0xc8, 0xe9, 0xcb, 0xf4, 0xc8, 0xe6, 0xcb, 0xf4, - 0xc9, 0xe9, 0xcb, 0xf4, 0xc9, 0xe6, 0xcc, 0xf4, 0xc9, 0xe6, 0xcb, 0xf4, - 0xc9, 0xe6, 0xcc, 0xf4, 0xca, 0xe6, 0xcb, 0xf4, 0xca, 0xe6, 0xcc, 0xf4, - 0xca, 0xe6, 0xcb, 0xf4, 0xcb, 0xe6, 0xcc, 0xf4, 0xcb, 0xe6, 0xcb, 0xf3, - 0xcb, 0xe6, 0xcc, 0xf4, 0xcb, 0xe6, 0xcc, 0xf3, 0xcb, 0xe6, 0xcc, 0xf4, - 0xcb, 0xe6, 0xcc, 0xf3, 0xcb, 0xe6, 0xcd, 0xf4, 0xcb, 0xe6, 0xcd, 0xf3, - 0xcb, 0xe6, 0xcd, 0xf4, 0xcb, 0xe6, 0xce, 0xf3, 0xcb, 0xe6, 0xce, 0xf4, - 0xcb, 0xe6, 0xce, 0xf3, 0xcb, 0xe6, 0xce, 0xf4, 0xcb, 0xe6, 0xcf, 0xf3, - 0xcb, 0xe6, 0xcf, 0xf4, 0xcb, 0xe6, 0xcf, 0xf3, 0xcb, 0xe6, 0xd0, 0xf4, - 0xcb, 0xe6, 0xd0, 0xf3, 0xcb, 0xe6, 0xd0, 0xf2, 0xcc, 0xe6, 0xd0, 0xf3, - 0xcb, 0xe6, 0xd1, 0xf2, 0xcc, 0xe6, 0xd1, 0xf3, 0xcb, 0xe6, 0xd1, 0xf2, - 0xcc, 0xe6, 0xd2, 0xf3, 0xcb, 0xe6, 0xd2, 0xf2, 0xcc, 0xe6, 0xd2, 0xf3, - 0xcb, 0xe6, 0xd2, 0xf2, 0xcc, 0xe6, 0xd3, 0xf3, 0xcb, 0xe6, 0xd3, 0xf2, - 0xcc, 0xe6, 0xd3, 0xf3, 0xcb, 0xe6, 0xd4, 0xf2, 0xcc, 0xe6, 0xd4, 0xf3, - 0xcb, 0xe6, 0xd4, 0xf2, 0xcc, 0xe6, 0xd4, 0xf3, 0xcb, 0xe6, 0xd5, 0xf2, - 0xcc, 0xe6, 0xd5, 0xf3, 0xcb, 0xe6, 0xd5, 0xf2, 0xcc, 0xe6, 0xd6, 0xf3, - 0xcb, 0xe6, 0xd6, 0xf2, 0xcc, 0xe6, 0xd6, 0xf1, 0xcc, 0xe6, 0xd6, 0xf2, - 0xcc, 0xe6, 0xd7, 0xf1, 0xcc, 0xe6, 0xd7, 0xfd, 0xd6, 0xe6, 0xd7, 0xfd, - 0xd6, 0xe6, 0xd7, 0xfd, 0xd6, 0xe6, 0xd8, 0xfd, 0xd6, 0xe6, 0xd8, 0xfd, - 0xd6, 0xe6, 0xd8, 0xfd, 0xd6, 0xe6, 0xd9, 0xfd, 0xd6, 0xe6, 0xd9, 0xfd, - 0xd6, 0xe6, 0xd9, 0xfd, 0xd6, 0xe6, 0xd9, 0xf6, 0xe4, 0xe6, 0xda, 0xf5, - 0xe4, 0xe6, 0xda, 0xf6, 0xe4, 0xe6, 0xda, 0xf5, 0xe4, 0xe6, 0xda, 0xf6, - 0xe4, 0xe6, 0xdb, 0xf5, 0xe4, 0xe6, 0xdb, 0xf6, 0xe4, 0xe6, 0xdb, 0xf5, - 0xe4, 0xe6, 0xdb, 0xf6, 0xe4, 0xe6, 0xdc, 0xf5, 0xe4, 0xe6, 0xdc, 0xf6, - 0xe4, 0xe6, 0xdc, 0xf5, 0xe4, 0xe6, 0xdd, 0xf6, 0xe4, 0xe6, 0xdd, 0xf5, - 0xe4, 0xe6, 0xdd, 0xf6, 0xe4, 0xe6, 0xdd, 0xf5, 0xe4, 0xe6, 0xde, 0xf6, - 0xe4, 0xe6, 0xde, 0xf5, 0xe4, 0xe6, 0xde, 0xf4, 0xe4, 0xe6, 0xde, 0xf5, - 0xe4, 0xe6, 0xdf, 0xf4, 0xe4, 0xe6, 0xdf, 0xf5, 0xe4, 0xe6, 0xdf, 0xf4, - 0xe4, 0xe6, 0xdf, 0xf5, 0xe4, 0xe6, 0xe0, 0xf4, 0xe4, 0xe6, 0xe0, 0xf5, - 0xe4, 0xe6, 0xe0, 0xf4, 0xe4, 0xe6, 0xe1, 0xf5, 0xe4, 0xe6, 0xe1, 0xf4, - 0xe4, 0xe6, 0xe1, 0xf5, 0xe4, 0xe6, 0xe1, 0xf4, 0xe4, 0xe6, 0xe2, 0xf5, - 0xe4, 0xe6, 0xe2, 0xf4, 0xe4, 0xe6, 0xe2, 0xf5, 0xe4, 0xe6, 0xe2, 0xf4, - 0xe4, 0xe6, 0xe3, 0xf5, 0xe4, 0xe6, 0xe3, 0xf4, 0xe4, 0xe6, 0xe3, 0xf5, - 0xe4, 0xe6, 0xe3, 0xf4, 0xe4, 0xe6, 0xe4, 0xf4, 0xe5, 0xe6, 0xe4, 0xf4, - 0xe4, 0xe6, 0xe4, 0xf4, 0xe5, 0xe6, 0xe4, 0xf4, 0xe4, 0xe6, 0xe4, 0xf4, - 0xe5, 0xe6, 0xe4, 0xf4, 0xe5, 0xe6, 0xe4, 0xf4, 0xe5, 0xe6, 0xe6, 0xf4, - 0xe5, 0xe6, 0xe6, 0xf4, 0xe6, 0xe7, 0xe6, 0xf4, 0xe6, 0xe6, 0xe7, 0xf4, - 0xe6, 0xe6, 0xe6, 0xf4, 0xe6, 0xe6, 0xe7, 0xf4, 0xe6, 0xe6, 0xe7, 0xf4, - 0xe6, 0xe6, 0xe7, 0xf4, 0xe6, 0xe6, 0xe7, 0xf4, 0xe6, 0xe6, 0xe8, 0xf4, - 0xe6, 0xe6, 0xe8, 0xf4, 0xe6, 0xe6, 0xe8, 0xf4, 0xe6, 0xe6, 0xe8, 0xf2, - 0xe6, 0xe6, 0xe9, 0xf4, 0xe6, 0xe6, 0xe9, 0xf2, 0xe6, 0xe6, 0xe9, 0xf4, - 0xe6, 0xe6, 0xe9, 0xf2, 0xe6, 0xe6, 0xea, 0xf4, 0xe6, 0xe6, 0xea, 0xf2, - 0xe6, 0xe6, 0xea, 0xf4, 0xe6, 0xe6, 0xea, 0xf2, 0xe6, 0xe6, 0xeb, 0xf4, - 0xe6, 0xe6, 0xeb, 0xf2, 0xe6, 0xe6, 0xeb, 0xf4, 0xe6, 0xe6, 0xeb, 0xf5, - 0xf0, 0xe6, 0xec, 0xf4, 0xf0, 0xe6, 0xec, 0xf5, 0xf0, 0xe6, 0xec, 0xf4, - 0xf0, 0xe6, 0xec, 0xf5, 0xf0, 0xe6, 0xec, 0xf4, 0xf0, 0xe6, 0xed, 0xf5, - 0xf0, 0xe6, 0xed, 0xf4, 0xf0, 0xe6, 0xed, 0xf5, 0xf0, 0xe6, 0xed, 0xf4, - 0xf0, 0xe6, 0xee, 0xf5, 0xf0, 0xe6, 0xee, 0xf4, 0xf0, 0xe6, 0xee, 0xf5, - 0xf0, 0xe6, 0xee, 0xf4, 0xf0, 0xe6, 0xef, 0xf5, 0xf0, 0xe6, 0xef, 0xf4, - 0xf0, 0xe6, 0xef, 0xf4, 0xf0, 0xe6, 0xef, 0xf4, 0xf0, 0xe6, 0xf0, 0xf4, - 0xf0, 0xe6, 0xef, 0xf4, 0xf0, 0xe6, 0xf0, 0xf4, 0xf0, 0xe6, 0xf0, 0xf4, - 0xf0, 0xe6, 0xf1, 0xf4, 0xf0, 0xe6, 0xf1, 0xf4, 0xf0, 0xe6, 0xf1, 0xf4, - 0xf0, 0xe6, 0xf1, 0xf4, 0xf0, 0xe6, 0xf2, 0xf4, 0xf0, 0xe6, 0xf2, 0xf4, - 0xf0, 0xe6, 0xf2, 0xf4, 0xf0, 0xe6, 0xf2, 0xf2, 0xf0, 0xe6, 0xf2, 0xf4, - 0xf0, 0xe6, 0xf3, 0xf2, 0xf0, 0xe6, 0xf3, 0xf4, 0xf0, 0xe6, 0xf3, 0xf2, - 0xf0, 0xe6, 0xf3, 0xf4, 0xf0, 0xe6, 0xf4, 0xf2, 0xf0, 0xe6, 0xf4, 0xf4, - 0xf0, 0xe6, 0xf4, 0xf2, 0xf0, 0xe6, 0xf4, 0xf4, 0xf0, 0xe6, 0xf5, 0xf2, - 0xf0, 0xe6, 0xf5, 0xf2, 0xf0, 0xe6, 0xf5, 0xf2, 0xf0, 0xe6, 0xf5, 0xf2, - 0xf0, 0xe6, 0xf5, 0xf2, 0xf0, 0xe6, 0xf6, 0xf2, 0xf0, 0xe6, 0xf6, 0xf2, - 0xf0, 0xe6, 0xf6, 0xf2, 0xf0, 0xe6, 0xf6, 0xf2, 0xf0, 0xe6, 0xf7, 0xf2, - 0xf0, 0xe6, 0xf7, 0xf2, 0xf0, 0xe6, 0xf7, 0xf2, 0xf0, 0xe6, 0xf7, 0xf2, - 0xf0, 0xe6, 0xf8, 0xf2, 0xf0, 0xe6, 0xf8, 0xf2, 0xf0, 0xe6, 0xf8, 0xf2, - 0xf0, 0xe6, 0xf8, 0xf2, 0xf0, 0xe6, 0xf8, 0xf2, 0xf0, 0xe6, 0xf9, 0xf2, - 0xf0, 0xe6, 0xf9, 0xf2, 0xf0, 0xe6, 0xf9, 0xf2, 0xf0, 0xe6, 0xf9, 0xf2, - 0xf0, 0xe6, 0xfa, 0xf2, 0xf0, 0xe6, 0xfa, 0xf2, 0xf0, 0xe6, 0xfa, 0xf2, - 0xf0, 0xe6, 0xfa, 0xf2, 0xf0, 0xe6, 0xfa, 0xf2, 0xf0, 0xe6, 0xfb, 0xf2, - 0xf0, 0xe6, 0xfb, 0xf2, 0xf0, 0xe6, 0xfb, 0xf2, 0xf0, 0xe6, 0xfb, 0xf2, - 0xf0, 0xe6, 0xfc, 0xf2, 0xf0, 0xe6, 0xfc, 0xf2, 0xf0, 0xe6, 0xfc, 0xf2, - 0xf0, 0xe6, 0xfc, 0xf2, 0xf0, 0xe6, 0xfc, 0xf2, 0xf0, 0xe6, 0xfd, 0xf2, - 0xf0, 0xe6, 0xfd, 0xf1, 0xf1, 0xe6, 0xfd, 0xf2, 0xf0, 0xe6, 0xfd, 0xf1, - 0xf1, 0xe6, 0xfe, 0xf2, 0xf0, 0xe6, 0xfe, 0xf1, 0xf1, 0xe6, 0xfe, 0xf2, - 0xf0, 0xe6, 0xfe, 0xf1, 0xf1, 0xe6, 0xfe, 0xf2, 0xf0, 0xe6, 0xff, 0xf1, - 0xf1, 0xe6, 0xff, 0xf2, 0xf0, 0xe6, 0x03, 0xf4, 0x83, 0xe6, 0x0a, 0xf4, - 0x83, 0xe6, 0x0f, 0xf4, 0x83, 0xe6, 0x14, 0xf4, 0x83, 0xe6, 0x17, 0xf4, - 0x83, 0xe6, 0x1b, 0xf4, 0x83, 0xe6, 0x1e, 0xf4, 0x83, 0xe6, 0x20, 0xf4, - 0x83, 0xe6, 0x23, 0xf4, 0x83, 0xe6, 0x25, 0xf4, 0x83, 0xe6, 0x27, 0xf4, - 0x83, 0xe6, 0x29, 0xf4, 0x83, 0xe6, 0x2b, 0xf4, 0x83, 0xe6, 0x2d, 0xf4, - 0x83, 0xe6, 0x2f, 0xf4, 0x83, 0xe6, 0x31, 0xf4, 0x83, 0xe6, 0x32, 0xf4, - 0x83, 0xe6, 0x34, 0xf4, 0x83, 0xe6, 0x35, 0xf4, 0x83, 0xe6, 0x37, 0xf4, - 0x83, 0xe6, 0x38, 0xf4, 0x83, 0xe6, 0x3a, 0xf4, 0x83, 0xe6, 0x3b, 0xf4, - 0x83, 0xe6, 0x3c, 0xf4, 0x83, 0xe6, 0x3e, 0xf4, 0x83, 0xe6, 0x3f, 0xf4, - 0x83, 0xe6, 0x40, 0xf4, 0x83, 0xe6, 0x42, 0xf4, 0x83, 0xe6, 0x43, 0xf4, - 0x83, 0xe6, 0x44, 0xf4, 0x83, 0xe6, 0x45, 0xf4, 0x83, 0xe6, 0x46, 0xf4, - 0x83, 0xe6, 0x47, 0xf4, 0x83, 0xe6, 0x48, 0xf4, 0x83, 0xe6, 0x49, 0xf4, - 0x83, 0xe6, 0x4a, 0xf4, 0x83, 0xe6, 0x4b, 0xf4, 0x83, 0xe6, 0x4c, 0xf4, - 0x83, 0xe6, 0x4d, 0xf4, 0x83, 0xe6, 0x4e, 0xf4, 0x83, 0xe6, 0x4f, 0xf4, - 0x83, 0xe6, 0x50, 0xf4, 0x83, 0xe6, 0x51, 0xf4, 0x83, 0xe6, 0x52, 0xf4, - 0x83, 0xe6, 0x53, 0xf4, 0x83, 0xe6, 0x54, 0xf4, 0x83, 0xe6, 0x55, 0xf4, - 0x83, 0xe6, 0x56, 0xf4, 0x83, 0xe6, 0x57, 0xf4, 0x83, 0xe6, 0x58, 0xf4, - 0x83, 0xe6, 0x58, 0xf4, 0x83, 0xe6, 0x59, 0xf4, 0x83, 0xe6, 0x5a, 0xf4, - 0x83, 0xe6, 0x5b, 0xf4, 0x83, 0xe6, 0x5c, 0xf4, 0x83, 0xe6, 0x5d, 0xf4, - 0x83, 0xe6, 0x5d, 0xf4, 0x83, 0xe6, 0x5e, 0xf4, 0x83, 0xe6, 0x5f, 0xf4, - 0x83, 0xe6, 0x60, 0xf4, 0x83, 0xe6, 0x60, 0xf4, 0x83, 0xe6, 0x61, 0xf4, - 0x83, 0xe6, 0x62, 0xf4, 0x83, 0xe6, 0x63, 0xf4, 0x83, 0xe6, 0x63, 0xf4, - 0x83, 0xe6, 0x64, 0xf4, 0x83, 0xe6, 0x65, 0xf4, 0x83, 0xe6, 0x66, 0xf4, - 0x83, 0xe6, 0x66, 0xf4, 0x83, 0xe6, 0x67, 0xf4, 0x83, 0xe6, 0x68, 0xf4, - 0x83, 0xe6, 0x68, 0xf4, 0x83, 0xe6, 0x69, 0xf4, 0x83, 0xe6, 0x6a, 0xf4, - 0x83, 0xe6, 0x6a, 0xf4, 0x83, 0xe6, 0x6b, 0xf4, 0x83, 0xe6, 0x6c, 0xf4, - 0x83, 0xe6, 0x6c, 0xf4, 0x83, 0xe6, 0x6d, 0xf4, 0x83, 0xe6, 0x6e, 0xf4, - 0x83, 0xe6, 0x6e, 0xf4, 0x83, 0xe6, 0x6f, 0xf4, 0x83, 0xe6, 0x70, 0xf4, - 0x83, 0xe6, 0x70, 0xf4, 0x83, 0xe6, 0x71, 0xf4, 0x83, 0xe6, 0x72, 0xf4, - 0x83, 0xe6, 0x72, 0xf4, 0x83, 0xe6, 0x73, 0xf4, 0x83, 0xe6, 0x73, 0xf4, - 0x83, 0xe6, 0x74, 0xf4, 0x83, 0xe6, 0x75, 0xf4, 0x83, 0xe6, 0x75, 0xf4, - 0x83, 0xe6, 0x76, 0xf4, 0x83, 0xe6, 0x76, 0xf4, 0x83, 0xe6, 0x77, 0xf4, - 0x83, 0xe6, 0x78, 0xf4, 0x83, 0xe6, 0x78, 0xf4, 0x83, 0xe6, 0x79, 0xf4, - 0x83, 0xe6, 0x79, 0xf4, 0x83, 0xe6, 0x7a, 0xf4, 0x83, 0xe6, 0x7a, 0xf4, - 0x83, 0xe6, 0x7b, 0xf4, 0x83, 0xe6, 0x7c, 0xf4, 0x83, 0xe6, 0x7c, 0xf4, - 0x83, 0xe6, 0x7d, 0xf4, 0x83, 0xe6, 0x7d, 0xf4, 0x83, 0xe6, 0x7e, 0xf4, - 0x83, 0xe6, 0x7e, 0xf4, 0x83, 0xe6, 0x7f, 0xf4, 0x83, 0xe6, 0x7f, 0xf4, - 0x83, 0xe6, 0x80, 0xf4, 0x83, 0xe6, 0x81, 0xf4, 0x83, 0xe6, 0x81, 0xf4, - 0x83, 0xe6, 0x82, 0xf4, 0x83, 0xe6, 0x82, 0xf4, 0x83, 0xe6, 0x83, 0xf4, - 0x83, 0xe5, 0x82, 0xf4, 0x83, 0xe6, 0x84, 0xf4, 0x84, 0xe7, 0x84, 0xf4, - 0x84, 0xe7, 0x85, 0xf4, 0x85, 0xe7, 0x84, 0xf4, 0x85, 0xe7, 0x85, 0xf4, - 0x86, 0xe7, 0x86, 0xf4, 0x86, 0xe8, 0x87, 0xf4, 0x87, 0xe8, 0x87, 0xf4, - 0x87, 0xe8, 0x88, 0xf4, 0x88, 0xe8, 0x88, 0xf4, 0x88, 0xe8, 0x89, 0xf4, - 0x89, 0xe8, 0x89, 0xf4, 0x89, 0xe8, 0x8a, 0xf4, 0x8a, 0xe8, 0x8a, 0xf4, - 0x8a, 0xe8, 0x8a, 0xf4, 0x8b, 0xe8, 0x8a, 0xf4, 0x8b, 0xe8, 0x8a, 0xf4, - 0x8c, 0xe8, 0x8a, 0xf4, 0x8c, 0xe8, 0x8d, 0xf4, 0x8d, 0xe9, 0x8d, 0xf4, - 0x8d, 0xe9, 0x8e, 0xf4, 0x8e, 0xe9, 0x8e, 0xf4, 0x8e, 0xe9, 0x8e, 0xf4, - 0x8e, 0xe9, 0x8f, 0xf4, 0x8f, 0xe9, 0x8f, 0xf4, 0x8f, 0xe9, 0x8f, 0xf4, - 0x90, 0xe9, 0x8f, 0xf4, 0x90, 0xe9, 0x8f, 0xf4, 0x91, 0xe9, 0x8f, 0xf4, - 0x91, 0xe9, 0x92, 0xf4, 0x92, 0xea, 0x92, 0xf4, 0x92, 0xea, 0x93, 0xf4, - 0x93, 0xea, 0x93, 0xf4, 0x93, 0xea, 0x94, 0xf4, 0x94, 0xea, 0x94, 0xf4, - 0x94, 0xea, 0x94, 0xf4, 0x94, 0xea, 0x94, 0xf4, 0x95, 0xea, 0x94, 0xf4, - 0x95, 0xea, 0x94, 0xf4, 0x96, 0xea, 0x94, 0xf4, 0x96, 0xea, 0x97, 0xf4, - 0x97, 0xeb, 0x97, 0xf4, 0x97, 0xeb, 0x98, 0xf4, 0x98, 0xeb, 0x98, 0xf4, - 0x98, 0xeb, 0x98, 0xf4, 0x98, 0xeb, 0x99, 0xf4, 0x99, 0xeb, 0x99, 0xf4, - 0x99, 0xeb, 0x99, 0xf4, 0x9a, 0xeb, 0x99, 0xf4, 0x9a, 0xeb, 0x99, 0xf4, - 0x9a, 0xeb, 0x99, 0xf4, 0x9b, 0xeb, 0x99, 0xf4, 0x9b, 0xeb, 0x99, 0xf4, - 0x9c, 0xeb, 0x9c, 0xf4, 0x9c, 0xec, 0x9d, 0xf4, 0x9d, 0xec, 0x9d, 0xf4, - 0x9d, 0xec, 0x9d, 0xf4, 0x9d, 0xec, 0x9e, 0xf4, 0x9e, 0xec, 0x9d, 0xf4, - 0x9e, 0xec, 0x9e, 0xf4, 0x9f, 0xec, 0x9d, 0xf4, 0x9f, 0xec, 0x9e, 0xf4, - 0x9f, 0xec, 0x9d, 0xf4, 0xa0, 0xec, 0x9e, 0xf4, 0xa0, 0xec, 0xa1, 0xf4, - 0xa1, 0xed, 0xa1, 0xf4, 0xa1, 0xed, 0xa1, 0xf4, 0xa1, 0xed, 0xa2, 0xf4, - 0xa2, 0xed, 0xa2, 0xf4, 0xa2, 0xed, 0xa2, 0xf4, 0xa3, 0xed, 0xa2, 0xf4, - 0xa3, 0xed, 0xa2, 0xf4, 0xa3, 0xed, 0xa2, 0xf4, 0xa4, 0xed, 0xa2, 0xf4, - 0xa4, 0xed, 0xa2, 0xf4, 0xa5, 0xed, 0xa5, 0xf4, 0xa5, 0xee, 0xa5, 0xf4, - 0xa5, 0xee, 0xa6, 0xf4, 0xa6, 0xee, 0xa6, 0xf4, 0xa6, 0xee, 0xa6, 0xf4, - 0xa6, 0xee, 0xa6, 0xf4, 0xa7, 0xee, 0xa6, 0xf4, 0xa7, 0xee, 0xa6, 0xf4, - 0xa8, 0xee, 0xa6, 0xf4, 0xa8, 0xee, 0xa6, 0xf4, 0xa8, 0xee, 0xa6, 0xf4, - 0xa9, 0xee, 0xa6, 0xf4, 0xa9, 0xee, 0xa6, 0xf4, 0xaa, 0xee, 0xaa, 0xf4, - 0xaa, 0xef, 0xaa, 0xf4, 0xaa, 0xef, 0xab, 0xf4, 0xab, 0xef, 0xaa, 0xf4, - 0xab, 0xef, 0xab, 0xf4, 0xab, 0xef, 0xaa, 0xf4, 0xac, 0xef, 0xab, 0xf4, - 0xac, 0xef, 0xaa, 0xf4, 0xac, 0xef, 0xab, 0xf4, 0xad, 0xef, 0xaa, 0xf4, - 0xad, 0xef, 0xab, 0xf4, 0xae, 0xef, 0xae, 0xf4, 0xae, 0xf0, 0xae, 0xf4, - 0xae, 0xf0, 0xaf, 0xf4, 0xaf, 0xf0, 0xae, 0xf4, 0xaf, 0xf0, 0xaf, 0xf4, - 0xaf, 0xf0, 0xae, 0xf4, 0xb0, 0xf0, 0xaf, 0xf4, 0xb0, 0xf0, 0xae, 0xf4, - 0xb0, 0xf0, 0xaf, 0xf4, 0xb1, 0xf0, 0xae, 0xf4, 0xb1, 0xf0, 0xaf, 0xf4, - 0xb2, 0xf0, 0xb2, 0xf4, 0xb2, 0xf1, 0xb2, 0xf4, 0xb2, 0xf1, 0xb3, 0xf4, - 0xb3, 0xf1, 0xb2, 0xf4, 0xb3, 0xf1, 0xb3, 0xf4, 0xb3, 0xf1, 0xb2, 0xf4, - 0xb4, 0xf1, 0xb3, 0xf4, 0xb4, 0xf1, 0xb2, 0xf4, 0xb4, 0xf1, 0xb3, 0xf4, - 0xb5, 0xf1, 0xb2, 0xf4, 0xb5, 0xf1, 0xb3, 0xf4, 0xb5, 0xf1, 0xb6, 0xf4, - 0xb6, 0xf2, 0xb6, 0xf4, 0xb6, 0xf2, 0xb6, 0xf4, 0xb6, 0xf2, 0xb6, 0xf4, - 0xb7, 0xf2, 0xb6, 0xf4, 0xb7, 0xf2, 0xb6, 0xf4, 0xb7, 0xf2, 0xb6, 0xf4, - 0xb8, 0xf2, 0xb6, 0xf4, 0xb8, 0xf2, 0xb6, 0xf4, 0xb8, 0xf2, 0xb6, 0xf4, - 0xb9, 0xf2, 0xb6, 0xf4, 0xb9, 0xf2, 0xb9, 0xf4, 0xb9, 0xf3, 0xba, 0xf4, - 0xba, 0xf3, 0xba, 0xf4, 0xba, 0xf3, 0xba, 0xf4, 0xba, 0xf3, 0xba, 0xf4, - 0xbb, 0xf3, 0xba, 0xf4, 0xbb, 0xf3, 0xba, 0xf4, 0xbb, 0xf3, 0xba, 0xf4, - 0xbc, 0xf3, 0xba, 0xf4, 0xbc, 0xf3, 0xba, 0xf4, 0xbc, 0xf3, 0xba, 0xf4, - 0xbd, 0xf3, 0xba, 0xf4, 0xbd, 0xf3, 0xba, 0xf4, 0xbd, 0xf3, 0xbe, 0xf4, - 0xbe, 0xf4, 0xbd, 0xf4, 0xbe, 0xf4, 0xbe, 0xf4, 0xbe, 0xf4, 0xbd, 0xf4, - 0xbf, 0xf4, 0xbe, 0xf4, 0xbf, 0xf4, 0xbd, 0xf4, 0xbf, 0xf4, 0xbe, 0xf4, - 0xc0, 0xf4, 0xbd, 0xf4, 0xc0, 0xf4, 0xbe, 0xf4, 0xc0, 0xf4, 0xbd, 0xf4, - 0xc1, 0xf4, 0xbe, 0xf4, 0xc1, 0xf4, 0xc1, 0xf4, 0xc1, 0xf5, 0xc1, 0xf4, - 0xc1, 0xf5, 0xc1, 0xf4, 0xc2, 0xf5, 0xcb, 0xf4, 0xc2, 0xeb, 0xcb, 0xf4, - 0xc2, 0xe8, 0xcb, 0xf4, 0xc3, 0xeb, 0xcb, 0xf4, 0xc3, 0xe8, 0xcb, 0xf4, - 0xc3, 0xeb, 0xcb, 0xf4, 0xc4, 0xe8, 0xcb, 0xf4, 0xc4, 0xe6, 0xcb, 0xf4, - 0xc4, 0xe8, 0xcb, 0xf4, 0xc5, 0xe6, 0xcb, 0xf4, 0xc5, 0xe8, 0xcb, 0xf4, - 0xc5, 0xe6, 0xcb, 0xf4, 0xc6, 0xe8, 0xcb, 0xf4, 0xc6, 0xe6, 0xcb, 0xf4, - 0xc6, 0xe8, 0xcb, 0xf4, 0xc6, 0xe6, 0xcb, 0xf4, 0xc7, 0xe8, 0xcb, 0xf4, - 0xc7, 0xe6, 0xcb, 0xf4, 0xc7, 0xe8, 0xcb, 0xf4, 0xc8, 0xe6, 0xcb, 0xf4, - 0xc8, 0xe8, 0xcb, 0xf4, 0xc8, 0xe6, 0xcb, 0xf4, 0xc9, 0xe8, 0xcb, 0xf4, - 0xc9, 0xe6, 0xcb, 0xf4, 0xc9, 0xe8, 0xcb, 0xf4, 0xc9, 0xe6, 0xcb, 0xf4, - 0xca, 0xe8, 0xcb, 0xf4, 0xca, 0xe6, 0xcc, 0xf4, 0xca, 0xe6, 0xcb, 0xf4, - 0xcb, 0xe6, 0xcc, 0xf4, 0xcb, 0xe6, 0xcb, 0xf3, 0xcb, 0xe6, 0xcc, 0xf4, - 0xcb, 0xe6, 0xcc, 0xf3, 0xcb, 0xe6, 0xcc, 0xf4, 0xcb, 0xe6, 0xcc, 0xf3, - 0xcb, 0xe6, 0xcd, 0xf4, 0xcb, 0xe6, 0xcd, 0xf3, 0xcb, 0xe6, 0xcd, 0xf4, - 0xcb, 0xe6, 0xce, 0xf3, 0xcb, 0xe6, 0xce, 0xf4, 0xcb, 0xe6, 0xce, 0xf3, - 0xcb, 0xe6, 0xce, 0xf4, 0xcb, 0xe6, 0xcf, 0xf3, 0xcb, 0xe6, 0xcf, 0xf4, - 0xcb, 0xe6, 0xcf, 0xf3, 0xcb, 0xe6, 0xd0, 0xf4, 0xcb, 0xe6, 0xd0, 0xf3, - 0xcb, 0xe6, 0xd0, 0xf2, 0xcc, 0xe6, 0xd0, 0xf3, 0xcb, 0xe6, 0xd1, 0xf2, - 0xcc, 0xe6, 0xd1, 0xf3, 0xcb, 0xe6, 0xd1, 0xf2, 0xcc, 0xe6, 0xd2, 0xf3, - 0xcb, 0xe6, 0xd2, 0xf2, 0xcc, 0xe6, 0xd2, 0xf3, 0xcb, 0xe6, 0xd2, 0xf2, - 0xcc, 0xe6, 0xd3, 0xf3, 0xcb, 0xe6, 0xd3, 0xf2, 0xcc, 0xe6, 0xd3, 0xf3, - 0xcb, 0xe6, 0xd4, 0xf2, 0xcc, 0xe6, 0xd4, 0xf3, 0xcb, 0xe6, 0xd4, 0xf2, - 0xcc, 0xe6, 0xd4, 0xf3, 0xcb, 0xe6, 0xd5, 0xf2, 0xcc, 0xe6, 0xd5, 0xf3, - 0xcb, 0xe6, 0xd5, 0xf2, 0xcc, 0xe6, 0xd6, 0xf3, 0xcb, 0xe6, 0xd6, 0xf2, - 0xcc, 0xe6, 0xd6, 0xf3, 0xcb, 0xe6, 0xd6, 0xf2, 0xcc, 0xe6, 0xd7, 0xfd, - 0xd7, 0xe6, 0xd7, 0xfc, 0xd4, 0xe6, 0xd7, 0xfd, 0xd7, 0xe6, 0xd7, 0xfc, - 0xd4, 0xe6, 0xd8, 0xfd, 0xd7, 0xe6, 0xd8, 0xfd, 0xd7, 0xe6, 0xd8, 0xfd, - 0xd7, 0xe6, 0xd9, 0xfd, 0xd7, 0xe6, 0xd9, 0xfd, 0xd7, 0xe6, 0xd9, 0xfd, - 0xd7, 0xe6, 0xd9, 0xf6, 0xe4, 0xe6, 0xda, 0xf4, 0xe4, 0xe6, 0xda, 0xf6, - 0xe4, 0xe6, 0xda, 0xf4, 0xe4, 0xe6, 0xda, 0xf6, 0xe4, 0xe6, 0xdb, 0xf4, - 0xe4, 0xe6, 0xdb, 0xf6, 0xe4, 0xe6, 0xdb, 0xf4, 0xe4, 0xe6, 0xdb, 0xf6, - 0xe4, 0xe6, 0xdc, 0xf4, 0xe4, 0xe6, 0xdc, 0xf6, 0xe4, 0xe6, 0xdc, 0xf4, - 0xe4, 0xe6, 0xdd, 0xf6, 0xe4, 0xe6, 0xdd, 0xf4, 0xe4, 0xe6, 0xdd, 0xf6, - 0xe4, 0xe6, 0xdd, 0xf4, 0xe4, 0xe6, 0xde, 0xf6, 0xe4, 0xe6, 0xde, 0xf4, - 0xe4, 0xe6, 0xde, 0xf6, 0xe4, 0xe6, 0xde, 0xf4, 0xe4, 0xe6, 0xdf, 0xf6, - 0xe4, 0xe6, 0xdf, 0xf4, 0xe4, 0xe6, 0xdf, 0xf6, 0xe4, 0xe6, 0xdf, 0xf4, - 0xe4, 0xe6, 0xe0, 0xf6, 0xe4, 0xe6, 0xe0, 0xf4, 0xe4, 0xe6, 0xe0, 0xf4, - 0xe4, 0xe6, 0xe1, 0xf4, 0xe4, 0xe6, 0xe1, 0xf4, 0xe4, 0xe6, 0xe1, 0xf4, - 0xe4, 0xe6, 0xe1, 0xf4, 0xe4, 0xe6, 0xe2, 0xf4, 0xe4, 0xe6, 0xe2, 0xf4, - 0xe4, 0xe6, 0xe2, 0xf4, 0xe4, 0xe6, 0xe2, 0xf4, 0xe4, 0xe6, 0xe3, 0xf4, - 0xe4, 0xe6, 0xe3, 0xf4, 0xe4, 0xe6, 0xe3, 0xf4, 0xe4, 0xe6, 0xe3, 0xf4, - 0xe4, 0xe6, 0xe4, 0xf4, 0xe4, 0xe6, 0xe4, 0xf4, 0xe4, 0xe6, 0xe4, 0xf4, - 0xe4, 0xe6, 0xe4, 0xf4, 0xe4, 0xe6, 0xe4, 0xf4, 0xe5, 0xe6, 0xe4, 0xf4, - 0xe5, 0xe6, 0xe4, 0xf4, 0xe5, 0xe6, 0xe6, 0xf4, 0xe5, 0xe6, 0xe6, 0xf4, - 0xe6, 0xe6, 0xe6, 0xf4, 0xe6, 0xe6, 0xe6, 0xf3, 0xe6, 0xe6, 0xe6, 0xf4, - 0xe6, 0xe6, 0xe7, 0xf3, 0xe6, 0xe6, 0xe7, 0xf4, 0xe6, 0xe6, 0xe7, 0xf3, - 0xe6, 0xe6, 0xe7, 0xf4, 0xe6, 0xe6, 0xe8, 0xf3, 0xe6, 0xe6, 0xe8, 0xf4, - 0xe6, 0xe6, 0xe8, 0xf3, 0xe6, 0xe6, 0xe8, 0xf4, 0xe6, 0xe6, 0xe9, 0xf3, - 0xe6, 0xe6, 0xe9, 0xf4, 0xe6, 0xe6, 0xe9, 0xf3, 0xe6, 0xe6, 0xe9, 0xf4, - 0xe6, 0xe6, 0xea, 0xf3, 0xe6, 0xe6, 0xea, 0xf4, 0xe6, 0xe6, 0xea, 0xf3, - 0xe6, 0xe6, 0xea, 0xf2, 0xe6, 0xe6, 0xeb, 0xf3, 0xe6, 0xe6, 0xeb, 0xf2, - 0xe6, 0xe6, 0xeb, 0xf4, 0xf0, 0xe6, 0xeb, 0xf5, 0xf0, 0xe6, 0xec, 0xf4, - 0xf0, 0xe6, 0xec, 0xf5, 0xf0, 0xe6, 0xec, 0xf4, 0xf0, 0xe6, 0xec, 0xf5, - 0xf0, 0xe6, 0xec, 0xf4, 0xf0, 0xe6, 0xed, 0xf5, 0xf0, 0xe6, 0xed, 0xf4, - 0xf0, 0xe6, 0xed, 0xf5, 0xf0, 0xe6, 0xed, 0xf4, 0xf0, 0xe6, 0xee, 0xf5, - 0xf0, 0xe6, 0xee, 0xf4, 0xf0, 0xe6, 0xee, 0xf5, 0xf0, 0xe6, 0xee, 0xf4, - 0xf0, 0xe6, 0xef, 0xf5, 0xf0, 0xe6, 0xef, 0xf4, 0xf0, 0xe6, 0xef, 0xf4, - 0xf0, 0xe6, 0xef, 0xf4, 0xf0, 0xe6, 0xf0, 0xf4, 0xf0, 0xe6, 0xef, 0xf4, - 0xf0, 0xe6, 0xf0, 0xf4, 0xf0, 0xe6, 0xf0, 0xf4, 0xf0, 0xe6, 0xf1, 0xf4, - 0xf0, 0xe6, 0xf1, 0xf4, 0xf0, 0xe6, 0xf1, 0xf4, 0xf0, 0xe6, 0xf1, 0xf4, - 0xf0, 0xe6, 0xf2, 0xf4, 0xf0, 0xe6, 0xf2, 0xf4, 0xf0, 0xe6, 0xf2, 0xf4, - 0xf0, 0xe6, 0xf2, 0xf2, 0xf0, 0xe6, 0xf2, 0xf4, 0xf0, 0xe6, 0xf3, 0xf2, - 0xf0, 0xe6, 0xf3, 0xf4, 0xf0, 0xe6, 0xf3, 0xf2, 0xf0, 0xe6, 0xf3, 0xf4, - 0xf0, 0xe6, 0xf4, 0xf2, 0xf0, 0xe6, 0xf4, 0xf4, 0xf0, 0xe6, 0xf4, 0xf2, - 0xf0, 0xe6, 0xf4, 0xf4, 0xf0, 0xe6, 0xf5, 0xf2, 0xf0, 0xe6, 0xf5, 0xf2, - 0xf0, 0xe6, 0xf5, 0xf2, 0xf0, 0xe6, 0xf5, 0xf2, 0xf0, 0xe6, 0xf5, 0xf2, - 0xf0, 0xe6, 0xf6, 0xf2, 0xf0, 0xe6, 0xf6, 0xf2, 0xf0, 0xe6, 0xf6, 0xf2, - 0xf0, 0xe6, 0xf6, 0xf2, 0xf0, 0xe6, 0xf7, 0xf2, 0xf0, 0xe6, 0xf7, 0xf2, - 0xf0, 0xe6, 0xf7, 0xf2, 0xf0, 0xe6, 0xf7, 0xf2, 0xf0, 0xe6, 0xf8, 0xf2, - 0xf0, 0xe6, 0xf8, 0xf2, 0xf0, 0xe6, 0xf8, 0xf2, 0xf0, 0xe6, 0xf8, 0xf2, - 0xf0, 0xe6, 0xf8, 0xf2, 0xf0, 0xe6, 0xf9, 0xf2, 0xf0, 0xe6, 0xf9, 0xf2, - 0xf0, 0xe6, 0xf9, 0xf2, 0xf0, 0xe6, 0xf9, 0xf2, 0xf0, 0xe6, 0xfa, 0xf2, - 0xf0, 0xe6, 0xfa, 0xf2, 0xf0, 0xe6, 0xfa, 0xf2, 0xf0, 0xe6, 0xfa, 0xf2, - 0xf0, 0xe6, 0xfa, 0xf2, 0xf0, 0xe6, 0xfb, 0xf2, 0xf0, 0xe6, 0xfb, 0xf2, - 0xf0, 0xe6, 0xfb, 0xf2, 0xf0, 0xe6, 0xfb, 0xf2, 0xf0, 0xe6, 0xfc, 0xf2, - 0xf0, 0xe6, 0xfc, 0xf2, 0xf0, 0xe6, 0xfc, 0xf2, 0xf0, 0xe6, 0xfc, 0xf2, - 0xf0, 0xe6, 0xfc, 0xf2, 0xf0, 0xe6, 0xfd, 0xf2, 0xf0, 0xe6, 0xfd, 0xf1, - 0xf1, 0xe6, 0xfd, 0xf2, 0xf0, 0xe6, 0xfd, 0xf1, 0xf1, 0xe6, 0xfe, 0xf2, - 0xf0, 0xe6, 0xfe, 0xf1, 0xf1, 0xe6, 0xfe, 0xf2, 0xf0, 0xe6, 0xfe, 0xf1, - 0xf1, 0xe6, 0xfe, 0xf2, 0xf0, 0xe6, 0xff, 0xf1, 0xf1, 0xe6, 0xff, 0xf2, - 0xf0, 0xe6, 0x03, 0xf4, 0x83, 0xe7, 0x0a, 0xf4, 0x83, 0xe7, 0x0f, 0xf4, - 0x83, 0xe7, 0x14, 0xf4, 0x83, 0xe7, 0x17, 0xf4, 0x83, 0xe7, 0x1b, 0xf4, - 0x83, 0xe7, 0x1e, 0xf4, 0x83, 0xe7, 0x20, 0xf4, 0x83, 0xe7, 0x23, 0xf4, - 0x83, 0xe7, 0x25, 0xf4, 0x83, 0xe7, 0x27, 0xf4, 0x83, 0xe7, 0x29, 0xf4, - 0x83, 0xe7, 0x2b, 0xf4, 0x83, 0xe7, 0x2d, 0xf4, 0x83, 0xe7, 0x2f, 0xf4, - 0x83, 0xe7, 0x31, 0xf4, 0x83, 0xe7, 0x32, 0xf4, 0x83, 0xe7, 0x34, 0xf4, - 0x83, 0xe7, 0x35, 0xf4, 0x83, 0xe7, 0x37, 0xf4, 0x83, 0xe7, 0x38, 0xf4, - 0x83, 0xe7, 0x3a, 0xf4, 0x83, 0xe7, 0x3b, 0xf4, 0x83, 0xe7, 0x3c, 0xf4, - 0x83, 0xe7, 0x3e, 0xf4, 0x83, 0xe7, 0x3f, 0xf4, 0x83, 0xe7, 0x40, 0xf4, - 0x83, 0xe7, 0x42, 0xf4, 0x83, 0xe7, 0x43, 0xf4, 0x83, 0xe7, 0x44, 0xf4, - 0x83, 0xe7, 0x45, 0xf4, 0x83, 0xe7, 0x46, 0xf4, 0x83, 0xe7, 0x47, 0xf4, - 0x83, 0xe7, 0x48, 0xf4, 0x83, 0xe7, 0x49, 0xf4, 0x83, 0xe7, 0x4a, 0xf4, - 0x83, 0xe7, 0x4b, 0xf4, 0x83, 0xe7, 0x4c, 0xf4, 0x83, 0xe7, 0x4d, 0xf4, - 0x83, 0xe7, 0x4e, 0xf4, 0x83, 0xe7, 0x4f, 0xf4, 0x83, 0xe7, 0x50, 0xf4, - 0x83, 0xe7, 0x51, 0xf4, 0x83, 0xe7, 0x52, 0xf4, 0x83, 0xe7, 0x53, 0xf4, - 0x83, 0xe7, 0x54, 0xf4, 0x83, 0xe7, 0x55, 0xf4, 0x83, 0xe7, 0x56, 0xf4, - 0x83, 0xe7, 0x57, 0xf4, 0x83, 0xe7, 0x58, 0xf4, 0x83, 0xe7, 0x58, 0xf4, - 0x83, 0xe7, 0x59, 0xf4, 0x83, 0xe7, 0x5a, 0xf4, 0x83, 0xe7, 0x5b, 0xf4, - 0x83, 0xe7, 0x5c, 0xf4, 0x83, 0xe7, 0x5d, 0xf4, 0x83, 0xe7, 0x5d, 0xf4, - 0x83, 0xe7, 0x5e, 0xf4, 0x83, 0xe7, 0x5f, 0xf4, 0x83, 0xe7, 0x60, 0xf4, - 0x83, 0xe7, 0x60, 0xf4, 0x83, 0xe7, 0x61, 0xf4, 0x83, 0xe7, 0x62, 0xf4, - 0x83, 0xe7, 0x63, 0xf4, 0x83, 0xe7, 0x63, 0xf4, 0x83, 0xe7, 0x64, 0xf4, - 0x83, 0xe7, 0x65, 0xf4, 0x83, 0xe7, 0x66, 0xf4, 0x83, 0xe7, 0x66, 0xf4, - 0x83, 0xe7, 0x67, 0xf4, 0x83, 0xe7, 0x68, 0xf4, 0x83, 0xe7, 0x68, 0xf4, - 0x83, 0xe7, 0x69, 0xf4, 0x83, 0xe7, 0x6a, 0xf4, 0x83, 0xe7, 0x6a, 0xf4, - 0x83, 0xe7, 0x6b, 0xf4, 0x83, 0xe7, 0x6c, 0xf4, 0x83, 0xe7, 0x6c, 0xf4, - 0x83, 0xe7, 0x6d, 0xf4, 0x83, 0xe7, 0x6e, 0xf4, 0x83, 0xe7, 0x6e, 0xf4, - 0x83, 0xe7, 0x6f, 0xf4, 0x83, 0xe7, 0x70, 0xf4, 0x83, 0xe7, 0x70, 0xf4, - 0x83, 0xe7, 0x71, 0xf4, 0x83, 0xe7, 0x72, 0xf4, 0x83, 0xe7, 0x72, 0xf4, - 0x83, 0xe7, 0x73, 0xf4, 0x83, 0xe7, 0x73, 0xf4, 0x83, 0xe7, 0x74, 0xf4, - 0x83, 0xe7, 0x75, 0xf4, 0x83, 0xe7, 0x75, 0xf4, 0x83, 0xe7, 0x76, 0xf4, - 0x83, 0xe7, 0x76, 0xf4, 0x83, 0xe7, 0x77, 0xf4, 0x83, 0xe7, 0x78, 0xf4, - 0x83, 0xe7, 0x78, 0xf4, 0x83, 0xe7, 0x79, 0xf4, 0x83, 0xe7, 0x79, 0xf4, - 0x83, 0xe7, 0x7a, 0xf4, 0x83, 0xe7, 0x7a, 0xf4, 0x83, 0xe7, 0x7b, 0xf4, - 0x83, 0xe7, 0x7c, 0xf4, 0x83, 0xe7, 0x7c, 0xf4, 0x83, 0xe7, 0x7d, 0xf4, - 0x83, 0xe7, 0x7d, 0xf4, 0x83, 0xe7, 0x7e, 0xf4, 0x83, 0xe7, 0x7e, 0xf4, - 0x83, 0xe7, 0x7f, 0xf4, 0x83, 0xe7, 0x7f, 0xf4, 0x83, 0xe7, 0x80, 0xf4, - 0x83, 0xe7, 0x81, 0xf4, 0x83, 0xe7, 0x81, 0xf4, 0x83, 0xe7, 0x82, 0xf4, - 0x83, 0xe7, 0x82, 0xf4, 0x83, 0xe7, 0x83, 0xf4, 0x83, 0xe6, 0x82, 0xf4, - 0x83, 0xe7, 0x84, 0xf4, 0x84, 0xe8, 0x84, 0xf4, 0x84, 0xe8, 0x85, 0xf4, - 0x85, 0xe8, 0x85, 0xf4, 0x85, 0xe8, 0x86, 0xf4, 0x86, 0xe8, 0x86, 0xf4, - 0x86, 0xe8, 0x87, 0xf4, 0x87, 0xe8, 0x87, 0xf4, 0x87, 0xe8, 0x87, 0xf4, - 0x88, 0xe8, 0x87, 0xf4, 0x88, 0xe8, 0x89, 0xf4, 0x89, 0xe9, 0x89, 0xf4, - 0x89, 0xe9, 0x8a, 0xf4, 0x8a, 0xe9, 0x8a, 0xf4, 0x8a, 0xe9, 0x8b, 0xf4, - 0x8b, 0xe9, 0x8b, 0xf4, 0x8b, 0xe9, 0x8c, 0xf4, 0x8c, 0xe9, 0x8c, 0xf4, - 0x8c, 0xe9, 0x8d, 0xf4, 0x8d, 0xe9, 0x8c, 0xf4, 0x8d, 0xe9, 0x8d, 0xf4, - 0x8e, 0xe9, 0x8c, 0xf4, 0x8e, 0xe9, 0x8d, 0xf4, 0x8e, 0xe9, 0x8f, 0xf4, - 0x8f, 0xea, 0x8f, 0xf4, 0x8f, 0xea, 0x90, 0xf4, 0x90, 0xea, 0x90, 0xf4, - 0x90, 0xea, 0x91, 0xf4, 0x91, 0xea, 0x91, 0xf4, 0x91, 0xea, 0x92, 0xf4, - 0x92, 0xea, 0x91, 0xf4, 0x92, 0xea, 0x92, 0xf4, 0x93, 0xea, 0x91, 0xf4, - 0x93, 0xea, 0x92, 0xf4, 0x94, 0xea, 0x94, 0xf4, 0x94, 0xeb, 0x94, 0xf4, - 0x94, 0xeb, 0x95, 0xf4, 0x95, 0xeb, 0x95, 0xf4, 0x95, 0xeb, 0x96, 0xf4, - 0x96, 0xeb, 0x96, 0xf4, 0x96, 0xeb, 0x97, 0xf4, 0x97, 0xeb, 0x96, 0xf4, - 0x97, 0xeb, 0x97, 0xf4, 0x98, 0xeb, 0x96, 0xf4, 0x98, 0xeb, 0x97, 0xf4, - 0x98, 0xeb, 0x99, 0xf4, 0x99, 0xec, 0x99, 0xf4, 0x99, 0xec, 0x9a, 0xf4, - 0x9a, 0xec, 0x9a, 0xf4, 0x9a, 0xec, 0x9a, 0xf4, 0x9a, 0xec, 0x9b, 0xf4, - 0x9b, 0xec, 0x9b, 0xf4, 0x9b, 0xec, 0x9b, 0xf4, 0x9c, 0xec, 0x9b, 0xf4, - 0x9c, 0xec, 0x9b, 0xf4, 0x9d, 0xec, 0x9b, 0xf4, 0x9d, 0xec, 0x9b, 0xf4, - 0x9d, 0xec, 0x9b, 0xf4, 0x9e, 0xec, 0x9e, 0xf4, 0x9e, 0xed, 0x9f, 0xf4, - 0x9f, 0xed, 0x9f, 0xf4, 0x9f, 0xed, 0x9f, 0xf4, 0x9f, 0xed, 0xa0, 0xf4, - 0xa0, 0xed, 0x9f, 0xf4, 0xa0, 0xed, 0xa0, 0xf4, 0xa1, 0xed, 0x9f, 0xf4, - 0xa1, 0xed, 0xa0, 0xf4, 0xa1, 0xed, 0x9f, 0xf4, 0xa2, 0xed, 0xa0, 0xf4, - 0xa2, 0xed, 0xa3, 0xf4, 0xa3, 0xee, 0xa3, 0xf4, 0xa3, 0xee, 0xa3, 0xf4, - 0xa3, 0xee, 0xa4, 0xf4, 0xa4, 0xee, 0xa4, 0xf4, 0xa4, 0xee, 0xa4, 0xf4, - 0xa5, 0xee, 0xa4, 0xf4, 0xa5, 0xee, 0xa4, 0xf4, 0xa5, 0xee, 0xa4, 0xf4, - 0xa6, 0xee, 0xa4, 0xf4, 0xa6, 0xee, 0xa4, 0xf4, 0xa6, 0xee, 0xa7, 0xf4, - 0xa7, 0xef, 0xa7, 0xf4, 0xa7, 0xef, 0xa8, 0xf4, 0xa8, 0xef, 0xa8, 0xf4, - 0xa8, 0xef, 0xa8, 0xf4, 0xa8, 0xef, 0xa8, 0xf4, 0xa9, 0xef, 0xa8, 0xf4, - 0xa9, 0xef, 0xa8, 0xf4, 0xaa, 0xef, 0xa8, 0xf4, 0xaa, 0xef, 0xa8, 0xf4, - 0xaa, 0xef, 0xa8, 0xf4, 0xab, 0xef, 0xa8, 0xf4, 0xab, 0xef, 0xa8, 0xf4, - 0xab, 0xef, 0xac, 0xf4, 0xac, 0xf0, 0xac, 0xf4, 0xac, 0xf0, 0xac, 0xf4, - 0xac, 0xf0, 0xac, 0xf4, 0xad, 0xf0, 0xac, 0xf4, 0xad, 0xf0, 0xac, 0xf4, - 0xae, 0xf0, 0xac, 0xf4, 0xae, 0xf0, 0xac, 0xf4, 0xae, 0xf0, 0xac, 0xf4, - 0xaf, 0xf0, 0xac, 0xf4, 0xaf, 0xf0, 0xac, 0xf4, 0xaf, 0xf0, 0xb0, 0xf4, - 0xb0, 0xf1, 0xb0, 0xf4, 0xb0, 0xf1, 0xb0, 0xf4, 0xb0, 0xf1, 0xb0, 0xf4, - 0xb1, 0xf1, 0xb0, 0xf4, 0xb1, 0xf1, 0xb0, 0xf4, 0xb2, 0xf1, 0xb0, 0xf4, - 0xb2, 0xf1, 0xb0, 0xf4, 0xb2, 0xf1, 0xb0, 0xf4, 0xb3, 0xf1, 0xb0, 0xf4, - 0xb3, 0xf1, 0xb0, 0xf4, 0xb3, 0xf1, 0xb4, 0xf4, 0xb4, 0xf2, 0xb4, 0xf4, - 0xb4, 0xf2, 0xb4, 0xf4, 0xb4, 0xf2, 0xb4, 0xf4, 0xb5, 0xf2, 0xb4, 0xf4, - 0xb5, 0xf2, 0xb4, 0xf4, 0xb5, 0xf2, 0xb4, 0xf4, 0xb6, 0xf2, 0xb4, 0xf4, - 0xb6, 0xf2, 0xb4, 0xf4, 0xb6, 0xf2, 0xb4, 0xf4, 0xb7, 0xf2, 0xb4, 0xf4, - 0xb7, 0xf2, 0xb7, 0xf4, 0xb7, 0xf3, 0xb8, 0xf4, 0xb8, 0xf3, 0xb8, 0xf4, - 0xb8, 0xf3, 0xb8, 0xf4, 0xb8, 0xf3, 0xb8, 0xf4, 0xb9, 0xf3, 0xb8, 0xf4, - 0xb9, 0xf3, 0xb8, 0xf4, 0xb9, 0xf3, 0xb8, 0xf4, 0xba, 0xf3, 0xb8, 0xf4, - 0xba, 0xf3, 0xb8, 0xf4, 0xba, 0xf3, 0xb8, 0xf4, 0xbb, 0xf3, 0xbb, 0xf4, - 0xbb, 0xf4, 0xbb, 0xf4, 0xbb, 0xf4, 0xbc, 0xf4, 0xbc, 0xf4, 0xbb, 0xf4, - 0xbc, 0xf4, 0xbc, 0xf4, 0xbc, 0xf4, 0xbb, 0xf4, 0xbd, 0xf4, 0xbc, 0xf4, - 0xbd, 0xf4, 0xbb, 0xf4, 0xbd, 0xf4, 0xbc, 0xf4, 0xbe, 0xf4, 0xbb, 0xf4, - 0xbe, 0xf4, 0xbc, 0xf4, 0xbe, 0xf4, 0xbb, 0xf4, 0xbf, 0xf4, 0xbc, 0xf4, - 0xbf, 0xf4, 0xbf, 0xf4, 0xbf, 0xf5, 0xbf, 0xf4, 0xc0, 0xf5, 0xbf, 0xf4, - 0xc0, 0xf5, 0xbf, 0xf4, 0xc0, 0xf5, 0xbf, 0xf4, 0xc1, 0xf5, 0xbf, 0xf4, - 0xc1, 0xf5, 0xbf, 0xf4, 0xc1, 0xf5, 0xbf, 0xf4, 0xc1, 0xf5, 0xbf, 0xf4, - 0xc2, 0xf5, 0xcb, 0xf4, 0xc2, 0xeb, 0xcb, 0xf4, 0xc2, 0xe9, 0xcb, 0xf4, - 0xc3, 0xeb, 0xcb, 0xf4, 0xc3, 0xe9, 0xcb, 0xf4, 0xc3, 0xeb, 0xcb, 0xf4, - 0xc4, 0xe9, 0xcb, 0xf4, 0xc4, 0xeb, 0xcb, 0xf4, 0xc4, 0xe9, 0xcb, 0xf4, - 0xc5, 0xeb, 0xcb, 0xf4, 0xc5, 0xe9, 0xcb, 0xf4, 0xc5, 0xeb, 0xcb, 0xf4, - 0xc6, 0xe9, 0xcb, 0xf4, 0xc6, 0xeb, 0xcb, 0xf4, 0xc6, 0xe9, 0xcb, 0xf4, - 0xc6, 0xe7, 0xcb, 0xf4, 0xc7, 0xe9, 0xcb, 0xf4, 0xc7, 0xe7, 0xcb, 0xf4, - 0xc7, 0xe9, 0xcb, 0xf4, 0xc8, 0xe7, 0xcb, 0xf4, 0xc8, 0xe9, 0xcb, 0xf4, - 0xc8, 0xe7, 0xcb, 0xf4, 0xc9, 0xe9, 0xcb, 0xf4, 0xc9, 0xe7, 0xcb, 0xf4, - 0xc9, 0xe9, 0xcb, 0xf4, 0xc9, 0xe7, 0xcb, 0xf4, 0xca, 0xe9, 0xcb, 0xf4, - 0xca, 0xe7, 0xcc, 0xf4, 0xca, 0xe7, 0xcb, 0xf4, 0xcb, 0xe7, 0xcc, 0xf4, - 0xcb, 0xe7, 0xcb, 0xf4, 0xcb, 0xe7, 0xcc, 0xf4, 0xcb, 0xe7, 0xcc, 0xf4, - 0xcb, 0xe7, 0xcc, 0xf4, 0xcb, 0xe7, 0xcc, 0xf3, 0xcb, 0xe7, 0xcd, 0xf4, - 0xcb, 0xe7, 0xcd, 0xf3, 0xcb, 0xe7, 0xcd, 0xf4, 0xcb, 0xe7, 0xce, 0xf3, - 0xcb, 0xe7, 0xce, 0xf4, 0xcb, 0xe7, 0xce, 0xf3, 0xcb, 0xe7, 0xce, 0xf4, - 0xcb, 0xe7, 0xcf, 0xf3, 0xcb, 0xe7, 0xcf, 0xf4, 0xcb, 0xe7, 0xcf, 0xf3, - 0xcb, 0xe7, 0xd0, 0xf4, 0xcb, 0xe7, 0xd0, 0xf3, 0xcb, 0xe7, 0xd0, 0xf4, - 0xcb, 0xe7, 0xd0, 0xf3, 0xcb, 0xe7, 0xd1, 0xf4, 0xcb, 0xe7, 0xd1, 0xf3, - 0xcb, 0xe7, 0xd1, 0xf4, 0xcb, 0xe7, 0xd2, 0xf3, 0xcb, 0xe7, 0xd2, 0xf4, - 0xcb, 0xe7, 0xd2, 0xf3, 0xcb, 0xe7, 0xd2, 0xf2, 0xcc, 0xe7, 0xd3, 0xf3, - 0xcb, 0xe7, 0xd3, 0xf2, 0xcc, 0xe7, 0xd3, 0xf3, 0xcb, 0xe7, 0xd4, 0xf2, - 0xcc, 0xe7, 0xd4, 0xf3, 0xcb, 0xe7, 0xd4, 0xf2, 0xcc, 0xe7, 0xd4, 0xf3, - 0xcb, 0xe7, 0xd5, 0xf2, 0xcc, 0xe7, 0xd5, 0xf3, 0xcb, 0xe7, 0xd5, 0xf2, - 0xcc, 0xe7, 0xd6, 0xf3, 0xcb, 0xe7, 0xd6, 0xf2, 0xcc, 0xe7, 0xd6, 0xfd, - 0xd6, 0xe7, 0xd6, 0xfd, 0xd6, 0xe7, 0xd7, 0xfd, 0xd6, 0xe7, 0xd7, 0xfd, - 0xd6, 0xe7, 0xd7, 0xfd, 0xd6, 0xe7, 0xd7, 0xfd, 0xd6, 0xe7, 0xd8, 0xfd, - 0xd6, 0xe7, 0xd8, 0xfd, 0xd6, 0xe7, 0xd8, 0xfd, 0xd6, 0xe7, 0xd9, 0xfd, - 0xd6, 0xe7, 0xd9, 0xfd, 0xd6, 0xe7, 0xd9, 0xfd, 0xd6, 0xe7, 0xd9, 0xfd, - 0xd9, 0xe7, 0xda, 0xf7, 0xe4, 0xe7, 0xda, 0xf6, 0xe4, 0xe7, 0xda, 0xf7, - 0xe4, 0xe7, 0xda, 0xf6, 0xe4, 0xe7, 0xdb, 0xf5, 0xe4, 0xe7, 0xdb, 0xf6, - 0xe4, 0xe7, 0xdb, 0xf5, 0xe4, 0xe7, 0xdb, 0xf6, 0xe4, 0xe7, 0xdc, 0xf5, - 0xe4, 0xe7, 0xdc, 0xf6, 0xe4, 0xe7, 0xdc, 0xf5, 0xe4, 0xe7, 0xdd, 0xf6, - 0xe4, 0xe7, 0xdd, 0xf5, 0xe4, 0xe7, 0xdd, 0xf6, 0xe4, 0xe7, 0xdd, 0xf5, - 0xe4, 0xe7, 0xde, 0xf6, 0xe4, 0xe7, 0xde, 0xf5, 0xe4, 0xe7, 0xde, 0xf6, - 0xe4, 0xe7, 0xde, 0xf5, 0xe4, 0xe7, 0xdf, 0xf6, 0xe4, 0xe7, 0xdf, 0xf5, - 0xe4, 0xe7, 0xdf, 0xf6, 0xe4, 0xe7, 0xdf, 0xf5, 0xe4, 0xe7, 0xe0, 0xf6, - 0xe4, 0xe7, 0xe0, 0xf5, 0xe4, 0xe7, 0xe0, 0xf4, 0xe4, 0xe7, 0xe1, 0xf5, - 0xe4, 0xe7, 0xe1, 0xf4, 0xe4, 0xe7, 0xe1, 0xf5, 0xe4, 0xe7, 0xe1, 0xf4, - 0xe4, 0xe7, 0xe2, 0xf5, 0xe4, 0xe7, 0xe2, 0xf4, 0xe4, 0xe7, 0xe2, 0xf5, - 0xe4, 0xe7, 0xe2, 0xf4, 0xe4, 0xe7, 0xe3, 0xf5, 0xe4, 0xe7, 0xe3, 0xf4, - 0xe4, 0xe7, 0xe3, 0xf5, 0xe4, 0xe7, 0xe3, 0xf4, 0xe4, 0xe7, 0xe4, 0xf5, - 0xe4, 0xe7, 0xe4, 0xf4, 0xe4, 0xe7, 0xe4, 0xf5, 0xe4, 0xe7, 0xe4, 0xf4, - 0xe4, 0xe7, 0xe4, 0xf4, 0xe5, 0xe7, 0xe4, 0xf4, 0xe5, 0xe7, 0xe4, 0xf4, - 0xe5, 0xe7, 0xe6, 0xf4, 0xe5, 0xe7, 0xe6, 0xf4, 0xe6, 0xe7, 0xe6, 0xf4, - 0xe6, 0xe7, 0xe6, 0xf4, 0xe6, 0xe7, 0xe6, 0xf4, 0xe6, 0xe7, 0xe7, 0xf4, - 0xe6, 0xe7, 0xe7, 0xf4, 0xe6, 0xe7, 0xe7, 0xf4, 0xe6, 0xe7, 0xe7, 0xf4, - 0xe6, 0xe7, 0xe8, 0xf4, 0xe6, 0xe7, 0xe8, 0xf4, 0xe6, 0xe7, 0xe8, 0xf4, - 0xe6, 0xe7, 0xe8, 0xf4, 0xe6, 0xe7, 0xe9, 0xf4, 0xe6, 0xe7, 0xe9, 0xf4, - 0xe6, 0xe7, 0xe9, 0xf4, 0xe6, 0xe7, 0xe9, 0xf4, 0xe6, 0xe7, 0xea, 0xf4, - 0xe6, 0xe7, 0xea, 0xf4, 0xe6, 0xe7, 0xea, 0xf4, 0xe6, 0xe7, 0xea, 0xf2, - 0xe6, 0xe7, 0xeb, 0xf4, 0xe6, 0xe7, 0xeb, 0xf2, 0xe6, 0xe7, 0xeb, 0xf6, - 0xef, 0xe7, 0xeb, 0xf5, 0xf0, 0xe7, 0xec, 0xf6, 0xef, 0xe7, 0xec, 0xf5, - 0xf0, 0xe7, 0xec, 0xf4, 0xf0, 0xe7, 0xec, 0xf5, 0xf0, 0xe7, 0xec, 0xf4, - 0xf0, 0xe7, 0xed, 0xf5, 0xf0, 0xe7, 0xed, 0xf4, 0xf0, 0xe7, 0xed, 0xf5, - 0xf0, 0xe7, 0xed, 0xf4, 0xf0, 0xe7, 0xee, 0xf5, 0xf0, 0xe7, 0xee, 0xf4, - 0xf0, 0xe7, 0xee, 0xf5, 0xf0, 0xe7, 0xee, 0xf4, 0xf0, 0xe7, 0xef, 0xf5, - 0xf0, 0xe7, 0xef, 0xf4, 0xf0, 0xe7, 0xef, 0xf5, 0xf0, 0xe7, 0xef, 0xf4, - 0xf0, 0xe7, 0xf0, 0xf5, 0xf0, 0xe7, 0xef, 0xf4, 0xf0, 0xe7, 0xf0, 0xf4, - 0xf0, 0xe7, 0xf0, 0xf4, 0xf0, 0xe7, 0xf1, 0xf4, 0xf0, 0xe7, 0xf1, 0xf4, - 0xf0, 0xe7, 0xf1, 0xf4, 0xf0, 0xe7, 0xf1, 0xf4, 0xf0, 0xe7, 0xf2, 0xf4, - 0xf0, 0xe7, 0xf2, 0xf4, 0xf0, 0xe7, 0xf2, 0xf4, 0xf0, 0xe7, 0xf2, 0xf4, - 0xf0, 0xe7, 0xf2, 0xf4, 0xf0, 0xe7, 0xf3, 0xf4, 0xf0, 0xe7, 0xf3, 0xf4, - 0xf0, 0xe7, 0xf3, 0xf4, 0xf0, 0xe7, 0xf3, 0xf4, 0xf0, 0xe7, 0xf4, 0xf4, - 0xf0, 0xe7, 0xf4, 0xf4, 0xf0, 0xe7, 0xf4, 0xf2, 0xf0, 0xe7, 0xf4, 0xf4, - 0xf0, 0xe7, 0xf5, 0xf2, 0xf0, 0xe7, 0xf5, 0xf4, 0xf0, 0xe7, 0xf5, 0xf2, - 0xf0, 0xe7, 0xf5, 0xf4, 0xf0, 0xe7, 0xf5, 0xf2, 0xf0, 0xe7, 0xf6, 0xf4, - 0xf0, 0xe7, 0xf6, 0xf2, 0xf0, 0xe7, 0xf6, 0xf4, 0xf0, 0xe7, 0xf6, 0xf2, - 0xf0, 0xe7, 0xf7, 0xf4, 0xf0, 0xe7, 0xf7, 0xf2, 0xf0, 0xe7, 0xf7, 0xf4, - 0xf0, 0xe7, 0xf7, 0xf2, 0xf0, 0xe7, 0xf8, 0xf2, 0xf0, 0xe7, 0xf8, 0xf2, - 0xf0, 0xe7, 0xf8, 0xf2, 0xf0, 0xe7, 0xf8, 0xf2, 0xf0, 0xe7, 0xf8, 0xf2, - 0xf0, 0xe7, 0xf9, 0xf2, 0xf0, 0xe7, 0xf9, 0xf2, 0xf0, 0xe7, 0xf9, 0xf2, - 0xf0, 0xe7, 0xf9, 0xf2, 0xf0, 0xe7, 0xfa, 0xf2, 0xf0, 0xe7, 0xfa, 0xf2, - 0xf0, 0xe7, 0xfa, 0xf2, 0xf0, 0xe7, 0xfa, 0xf2, 0xf0, 0xe7, 0xfa, 0xf2, - 0xf0, 0xe7, 0xfb, 0xf2, 0xf0, 0xe7, 0xfb, 0xf2, 0xf0, 0xe7, 0xfb, 0xf2, - 0xf0, 0xe7, 0xfb, 0xf2, 0xf0, 0xe7, 0xfc, 0xf2, 0xf0, 0xe7, 0xfc, 0xf2, - 0xf0, 0xe7, 0xfc, 0xf2, 0xf0, 0xe7, 0xfc, 0xf2, 0xf0, 0xe7, 0xfc, 0xf2, - 0xf0, 0xe7, 0xfd, 0xf2, 0xf0, 0xe7, 0xfd, 0xf2, 0xf0, 0xe7, 0xfd, 0xf2, - 0xf0, 0xe7, 0xfd, 0xf2, 0xf0, 0xe7, 0xfe, 0xf2, 0xf0, 0xe7, 0xfe, 0xf2, - 0xf0, 0xe7, 0xfe, 0xf2, 0xf0, 0xe7, 0xfe, 0xf2, 0xf0, 0xe7, 0xfe, 0xf2, - 0xf0, 0xe7, 0xff, 0xf2, 0xf0, 0xe7, 0xff, 0xf2, 0xf0, 0xe7, 0x03, 0xf4, - 0x83, 0xe7, 0x0a, 0xf4, 0x83, 0xe7, 0x0f, 0xf4, 0x83, 0xe7, 0x14, 0xf4, - 0x83, 0xe7, 0x17, 0xf4, 0x83, 0xe7, 0x1b, 0xf4, 0x83, 0xe7, 0x1e, 0xf4, - 0x83, 0xe7, 0x20, 0xf4, 0x83, 0xe7, 0x23, 0xf4, 0x83, 0xe7, 0x25, 0xf4, - 0x83, 0xe7, 0x27, 0xf4, 0x83, 0xe7, 0x29, 0xf4, 0x83, 0xe7, 0x2b, 0xf4, - 0x83, 0xe7, 0x2d, 0xf4, 0x83, 0xe7, 0x2f, 0xf4, 0x83, 0xe7, 0x31, 0xf4, - 0x83, 0xe7, 0x32, 0xf4, 0x83, 0xe7, 0x34, 0xf4, 0x83, 0xe7, 0x35, 0xf4, - 0x83, 0xe7, 0x37, 0xf4, 0x83, 0xe7, 0x38, 0xf4, 0x83, 0xe7, 0x3a, 0xf4, - 0x83, 0xe7, 0x3b, 0xf4, 0x83, 0xe7, 0x3c, 0xf4, 0x83, 0xe7, 0x3e, 0xf4, - 0x83, 0xe7, 0x3f, 0xf4, 0x83, 0xe7, 0x40, 0xf4, 0x83, 0xe7, 0x42, 0xf4, - 0x83, 0xe7, 0x43, 0xf4, 0x83, 0xe7, 0x44, 0xf4, 0x83, 0xe7, 0x45, 0xf4, - 0x83, 0xe7, 0x46, 0xf4, 0x83, 0xe7, 0x47, 0xf4, 0x83, 0xe7, 0x48, 0xf4, - 0x83, 0xe7, 0x49, 0xf4, 0x83, 0xe7, 0x4a, 0xf4, 0x83, 0xe7, 0x4b, 0xf4, - 0x83, 0xe7, 0x4c, 0xf4, 0x83, 0xe7, 0x4d, 0xf4, 0x83, 0xe7, 0x4e, 0xf4, - 0x83, 0xe7, 0x4f, 0xf4, 0x83, 0xe7, 0x50, 0xf4, 0x83, 0xe7, 0x51, 0xf4, - 0x83, 0xe7, 0x52, 0xf4, 0x83, 0xe7, 0x53, 0xf4, 0x83, 0xe7, 0x54, 0xf4, - 0x83, 0xe7, 0x55, 0xf4, 0x83, 0xe7, 0x56, 0xf4, 0x83, 0xe7, 0x57, 0xf4, - 0x83, 0xe7, 0x58, 0xf4, 0x83, 0xe7, 0x58, 0xf4, 0x83, 0xe7, 0x59, 0xf4, - 0x83, 0xe7, 0x5a, 0xf4, 0x83, 0xe7, 0x5b, 0xf4, 0x83, 0xe7, 0x5c, 0xf4, - 0x83, 0xe7, 0x5d, 0xf4, 0x83, 0xe7, 0x5d, 0xf4, 0x83, 0xe7, 0x5e, 0xf4, - 0x83, 0xe7, 0x5f, 0xf4, 0x83, 0xe7, 0x60, 0xf4, 0x83, 0xe7, 0x60, 0xf4, - 0x83, 0xe7, 0x61, 0xf4, 0x83, 0xe7, 0x62, 0xf4, 0x83, 0xe7, 0x63, 0xf4, - 0x83, 0xe7, 0x63, 0xf4, 0x83, 0xe7, 0x64, 0xf4, 0x83, 0xe7, 0x65, 0xf4, - 0x83, 0xe7, 0x66, 0xf4, 0x83, 0xe7, 0x66, 0xf4, 0x83, 0xe7, 0x67, 0xf4, - 0x83, 0xe7, 0x68, 0xf4, 0x83, 0xe7, 0x68, 0xf4, 0x83, 0xe7, 0x69, 0xf4, - 0x83, 0xe7, 0x6a, 0xf4, 0x83, 0xe7, 0x6a, 0xf4, 0x83, 0xe7, 0x6b, 0xf4, - 0x83, 0xe7, 0x6c, 0xf4, 0x83, 0xe7, 0x6c, 0xf4, 0x83, 0xe7, 0x6d, 0xf4, - 0x83, 0xe7, 0x6e, 0xf4, 0x83, 0xe7, 0x6e, 0xf4, 0x83, 0xe7, 0x6f, 0xf4, - 0x83, 0xe7, 0x70, 0xf4, 0x83, 0xe7, 0x70, 0xf4, 0x83, 0xe7, 0x71, 0xf4, - 0x83, 0xe7, 0x72, 0xf4, 0x83, 0xe7, 0x72, 0xf4, 0x83, 0xe7, 0x73, 0xf4, - 0x83, 0xe7, 0x73, 0xf4, 0x83, 0xe7, 0x74, 0xf4, 0x83, 0xe7, 0x75, 0xf4, - 0x83, 0xe7, 0x75, 0xf4, 0x83, 0xe7, 0x76, 0xf4, 0x83, 0xe7, 0x76, 0xf4, - 0x83, 0xe7, 0x77, 0xf4, 0x83, 0xe7, 0x78, 0xf4, 0x83, 0xe7, 0x78, 0xf4, - 0x83, 0xe7, 0x79, 0xf4, 0x83, 0xe7, 0x79, 0xf4, 0x83, 0xe7, 0x7a, 0xf4, - 0x83, 0xe7, 0x7a, 0xf4, 0x83, 0xe7, 0x7b, 0xf4, 0x83, 0xe7, 0x7c, 0xf4, - 0x83, 0xe7, 0x7c, 0xf4, 0x83, 0xe7, 0x7d, 0xf4, 0x83, 0xe7, 0x7d, 0xf4, - 0x83, 0xe7, 0x7e, 0xf4, 0x83, 0xe7, 0x7e, 0xf4, 0x83, 0xe7, 0x7f, 0xf4, - 0x83, 0xe7, 0x7f, 0xf4, 0x83, 0xe7, 0x80, 0xf4, 0x83, 0xe7, 0x81, 0xf4, - 0x83, 0xe7, 0x81, 0xf4, 0x83, 0xe7, 0x82, 0xf4, 0x83, 0xe7, 0x82, 0xf4, - 0x83, 0xe7, 0x83, 0xf4, 0x83, 0xe7, 0x83, 0xf4, 0x83, 0xe7, 0x84, 0xf4, - 0x84, 0xe7, 0x84, 0xf4, 0x84, 0xe7, 0x85, 0xf4, 0x85, 0xe7, 0x85, 0xf4, - 0x85, 0xe8, 0x86, 0xf4, 0x86, 0xe8, 0x86, 0xf4, 0x86, 0xe8, 0x87, 0xf4, - 0x87, 0xe8, 0x87, 0xf4, 0x87, 0xe8, 0x88, 0xf4, 0x88, 0xe8, 0x88, 0xf4, - 0x88, 0xe8, 0x89, 0xf4, 0x89, 0xe8, 0x89, 0xf4, 0x89, 0xe8, 0x8a, 0xf4, - 0x8a, 0xe8, 0x8a, 0xf4, 0x8a, 0xe8, 0x8a, 0xf4, 0x8b, 0xe8, 0x8a, 0xf4, - 0x8b, 0xe8, 0x8c, 0xf4, 0x8c, 0xe9, 0x8c, 0xf4, 0x8c, 0xe9, 0x8d, 0xf4, - 0x8d, 0xe9, 0x8d, 0xf4, 0x8d, 0xe9, 0x8e, 0xf4, 0x8e, 0xe9, 0x8e, 0xf4, - 0x8e, 0xe9, 0x8e, 0xf4, 0x8e, 0xe9, 0x8f, 0xf4, 0x8f, 0xe9, 0x8f, 0xf4, - 0x8f, 0xe9, 0x8f, 0xf4, 0x90, 0xe9, 0x8f, 0xf4, 0x90, 0xe9, 0x8f, 0xf4, - 0x91, 0xe9, 0x8f, 0xf4, 0x91, 0xe9, 0x92, 0xf4, 0x92, 0xea, 0x92, 0xf4, - 0x92, 0xea, 0x93, 0xf4, 0x93, 0xea, 0x93, 0xf4, 0x93, 0xea, 0x94, 0xf4, - 0x94, 0xea, 0x94, 0xf4, 0x94, 0xea, 0x94, 0xf4, 0x94, 0xea, 0x94, 0xf4, - 0x95, 0xea, 0x94, 0xf4, 0x95, 0xea, 0x94, 0xf4, 0x96, 0xea, 0x94, 0xf4, - 0x96, 0xea, 0x97, 0xf4, 0x97, 0xeb, 0x97, 0xf4, 0x97, 0xeb, 0x98, 0xf4, - 0x98, 0xeb, 0x98, 0xf4, 0x98, 0xeb, 0x98, 0xf4, 0x98, 0xeb, 0x99, 0xf4, - 0x99, 0xeb, 0x99, 0xf4, 0x99, 0xeb, 0x99, 0xf4, 0x9a, 0xeb, 0x99, 0xf4, - 0x9a, 0xeb, 0x99, 0xf4, 0x9a, 0xeb, 0x99, 0xf4, 0x9b, 0xeb, 0x9b, 0xf4, - 0x9b, 0xec, 0x9c, 0xf4, 0x9c, 0xec, 0x9c, 0xf4, 0x9c, 0xec, 0x9d, 0xf4, - 0x9d, 0xec, 0x9d, 0xf4, 0x9d, 0xec, 0x9d, 0xf4, 0x9d, 0xec, 0x9e, 0xf4, - 0x9e, 0xec, 0x9d, 0xf4, 0x9e, 0xec, 0x9e, 0xf4, 0x9f, 0xec, 0x9d, 0xf4, - 0x9f, 0xec, 0x9e, 0xf4, 0x9f, 0xec, 0x9d, 0xf4, 0xa0, 0xec, 0x9e, 0xf4, - 0xa0, 0xec, 0xa1, 0xf4, 0xa1, 0xed, 0xa1, 0xf4, 0xa1, 0xed, 0xa1, 0xf4, - 0xa1, 0xed, 0xa2, 0xf4, 0xa2, 0xed, 0xa2, 0xf4, 0xa2, 0xed, 0xa2, 0xf4, - 0xa3, 0xed, 0xa2, 0xf4, 0xa3, 0xed, 0xa2, 0xf4, 0xa3, 0xed, 0xa2, 0xf4, - 0xa4, 0xed, 0xa2, 0xf4, 0xa4, 0xed, 0xa2, 0xf4, 0xa5, 0xed, 0xa5, 0xf4, - 0xa5, 0xee, 0xa5, 0xf4, 0xa5, 0xee, 0xa6, 0xf4, 0xa6, 0xee, 0xa6, 0xf4, - 0xa6, 0xee, 0xa6, 0xf4, 0xa6, 0xee, 0xa6, 0xf4, 0xa7, 0xee, 0xa6, 0xf4, - 0xa7, 0xee, 0xa6, 0xf4, 0xa8, 0xee, 0xa6, 0xf4, 0xa8, 0xee, 0xa6, 0xf4, - 0xa8, 0xee, 0xa6, 0xf4, 0xa9, 0xee, 0xa9, 0xf4, 0xa9, 0xef, 0xaa, 0xf4, - 0xaa, 0xef, 0xaa, 0xf4, 0xaa, 0xef, 0xaa, 0xf4, 0xaa, 0xef, 0xab, 0xf4, - 0xab, 0xef, 0xaa, 0xf4, 0xab, 0xef, 0xab, 0xf4, 0xab, 0xef, 0xaa, 0xf4, - 0xac, 0xef, 0xab, 0xf4, 0xac, 0xef, 0xaa, 0xf4, 0xac, 0xef, 0xab, 0xf4, - 0xad, 0xef, 0xaa, 0xf4, 0xad, 0xef, 0xab, 0xf4, 0xae, 0xef, 0xae, 0xf4, - 0xae, 0xf0, 0xae, 0xf4, 0xae, 0xf0, 0xaf, 0xf4, 0xaf, 0xf0, 0xae, 0xf4, - 0xaf, 0xf0, 0xaf, 0xf4, 0xaf, 0xf0, 0xae, 0xf4, 0xb0, 0xf0, 0xaf, 0xf4, - 0xb0, 0xf0, 0xae, 0xf4, 0xb0, 0xf0, 0xaf, 0xf4, 0xb1, 0xf0, 0xae, 0xf4, - 0xb1, 0xf0, 0xaf, 0xf4, 0xb2, 0xf0, 0xb2, 0xf4, 0xb2, 0xf1, 0xb2, 0xf4, - 0xb2, 0xf1, 0xb3, 0xf4, 0xb3, 0xf1, 0xb2, 0xf4, 0xb3, 0xf1, 0xb3, 0xf4, - 0xb3, 0xf1, 0xb2, 0xf4, 0xb4, 0xf1, 0xb3, 0xf4, 0xb4, 0xf1, 0xb2, 0xf4, - 0xb4, 0xf1, 0xb3, 0xf4, 0xb5, 0xf1, 0xb2, 0xf4, 0xb5, 0xf1, 0xb3, 0xf4, - 0xb5, 0xf1, 0xb6, 0xf4, 0xb6, 0xf2, 0xb6, 0xf4, 0xb6, 0xf2, 0xb6, 0xf4, - 0xb6, 0xf2, 0xb6, 0xf4, 0xb7, 0xf2, 0xb6, 0xf4, 0xb7, 0xf2, 0xb6, 0xf4, - 0xb7, 0xf2, 0xb6, 0xf4, 0xb8, 0xf2, 0xb6, 0xf4, 0xb8, 0xf2, 0xb6, 0xf4, - 0xb8, 0xf2, 0xb6, 0xf4, 0xb9, 0xf2, 0xb6, 0xf4, 0xb9, 0xf2, 0xb9, 0xf4, - 0xb9, 0xf3, 0xba, 0xf4, 0xba, 0xf3, 0xba, 0xf4, 0xba, 0xf3, 0xba, 0xf4, - 0xba, 0xf3, 0xba, 0xf4, 0xbb, 0xf3, 0xba, 0xf4, 0xbb, 0xf3, 0xba, 0xf4, - 0xbb, 0xf3, 0xba, 0xf4, 0xbc, 0xf3, 0xba, 0xf4, 0xbc, 0xf3, 0xba, 0xf4, - 0xbc, 0xf3, 0xba, 0xf4, 0xbd, 0xf3, 0xbd, 0xf4, 0xbd, 0xf4, 0xbd, 0xf4, - 0xbd, 0xf4, 0xbe, 0xf4, 0xbe, 0xf4, 0xbd, 0xf4, 0xbe, 0xf4, 0xbe, 0xf4, - 0xbe, 0xf4, 0xbd, 0xf4, 0xbf, 0xf4, 0xbe, 0xf4, 0xbf, 0xf4, 0xbd, 0xf4, - 0xbf, 0xf4, 0xbe, 0xf4, 0xc0, 0xf4, 0xbd, 0xf4, 0xc0, 0xf4, 0xbe, 0xf4, - 0xc0, 0xf4, 0xbd, 0xf4, 0xc1, 0xf4, 0xbe, 0xf4, 0xc1, 0xf4, 0xc1, 0xf4, - 0xc1, 0xf5, 0xc1, 0xf4, 0xc1, 0xf5, 0xc1, 0xf4, 0xc2, 0xf5, 0xc1, 0xf4, - 0xc2, 0xf5, 0xcb, 0xf4, 0xc2, 0xe8, 0xcb, 0xf4, 0xc3, 0xeb, 0xcb, 0xf4, - 0xc3, 0xe8, 0xcb, 0xf4, 0xc3, 0xeb, 0xcb, 0xf4, 0xc4, 0xe8, 0xcb, 0xf4, - 0xc4, 0xeb, 0xcb, 0xf4, 0xc4, 0xe8, 0xcb, 0xf4, 0xc5, 0xeb, 0xcb, 0xf4, - 0xc5, 0xe8, 0xcb, 0xf4, 0xc5, 0xeb, 0xcb, 0xf4, 0xc6, 0xe8, 0xcb, 0xf4, - 0xc6, 0xeb, 0xcb, 0xf4, 0xc6, 0xe8, 0xcb, 0xf4, 0xc6, 0xe7, 0xcb, 0xf4, - 0xc7, 0xe8, 0xcb, 0xf4, 0xc7, 0xe7, 0xcb, 0xf4, 0xc7, 0xe8, 0xcb, 0xf4, - 0xc8, 0xe7, 0xcb, 0xf4, 0xc8, 0xe8, 0xcb, 0xf4, 0xc8, 0xe7, 0xcb, 0xf4, - 0xc9, 0xe8, 0xcb, 0xf4, 0xc9, 0xe7, 0xcb, 0xf4, 0xc9, 0xe8, 0xcb, 0xf4, - 0xc9, 0xe7, 0xcb, 0xf4, 0xca, 0xe8, 0xcb, 0xf4, 0xca, 0xe7, 0xcb, 0xf4, - 0xca, 0xe8, 0xcb, 0xf4, 0xcb, 0xe7, 0xcc, 0xf4, 0xcb, 0xe7, 0xcb, 0xf4, - 0xcb, 0xe7, 0xcc, 0xf4, 0xcb, 0xe7, 0xcc, 0xf4, 0xcb, 0xe7, 0xcc, 0xf4, - 0xcb, 0xe7, 0xcc, 0xf3, 0xcb, 0xe7, 0xcd, 0xf4, 0xcb, 0xe7, 0xcd, 0xf3, - 0xcb, 0xe7, 0xcd, 0xf4, 0xcb, 0xe7, 0xce, 0xf3, 0xcb, 0xe7, 0xce, 0xf4, - 0xcb, 0xe7, 0xce, 0xf3, 0xcb, 0xe7, 0xce, 0xf4, 0xcb, 0xe7, 0xcf, 0xf3, - 0xcb, 0xe7, 0xcf, 0xf4, 0xcb, 0xe7, 0xcf, 0xf3, 0xcb, 0xe7, 0xd0, 0xf4, - 0xcb, 0xe7, 0xd0, 0xf3, 0xcb, 0xe7, 0xd0, 0xf4, 0xcb, 0xe7, 0xd0, 0xf3, - 0xcb, 0xe7, 0xd1, 0xf4, 0xcb, 0xe7, 0xd1, 0xf3, 0xcb, 0xe7, 0xd1, 0xf4, - 0xcb, 0xe7, 0xd2, 0xf3, 0xcb, 0xe7, 0xd2, 0xf4, 0xcb, 0xe7, 0xd2, 0xf3, - 0xcb, 0xe7, 0xd2, 0xf2, 0xcc, 0xe7, 0xd3, 0xf3, 0xcb, 0xe7, 0xd3, 0xf2, - 0xcc, 0xe7, 0xd3, 0xf3, 0xcb, 0xe7, 0xd4, 0xf2, 0xcc, 0xe7, 0xd4, 0xf3, - 0xcb, 0xe7, 0xd4, 0xf2, 0xcc, 0xe7, 0xd4, 0xf3, 0xcb, 0xe7, 0xd5, 0xf2, - 0xcc, 0xe7, 0xd5, 0xf3, 0xcb, 0xe7, 0xd5, 0xf2, 0xcc, 0xe7, 0xd6, 0xf3, - 0xcb, 0xe7, 0xd6, 0xfc, 0xd4, 0xe7, 0xd6, 0xfd, 0xd6, 0xe7, 0xd6, 0xfc, - 0xd4, 0xe7, 0xd7, 0xfd, 0xd7, 0xe7, 0xd7, 0xfc, 0xd4, 0xe7, 0xd7, 0xfd, - 0xd7, 0xe7, 0xd7, 0xfc, 0xd4, 0xe7, 0xd8, 0xfd, 0xd7, 0xe7, 0xd8, 0xfd, - 0xd7, 0xe7, 0xd8, 0xfd, 0xd7, 0xe7, 0xd9, 0xfd, 0xd7, 0xe7, 0xd9, 0xfd, - 0xd7, 0xe7, 0xd9, 0xfd, 0xd7, 0xe7, 0xd9, 0xfd, 0xd7, 0xe7, 0xda, 0xfd, - 0xd7, 0xe7, 0xda, 0xf6, 0xe4, 0xe7, 0xda, 0xf7, 0xe4, 0xe7, 0xda, 0xf6, - 0xe4, 0xe7, 0xdb, 0xf4, 0xe4, 0xe7, 0xdb, 0xf6, 0xe4, 0xe7, 0xdb, 0xf4, - 0xe4, 0xe7, 0xdb, 0xf6, 0xe4, 0xe7, 0xdc, 0xf4, 0xe4, 0xe7, 0xdc, 0xf6, - 0xe4, 0xe7, 0xdc, 0xf4, 0xe4, 0xe7, 0xdd, 0xf6, 0xe4, 0xe7, 0xdd, 0xf4, - 0xe4, 0xe7, 0xdd, 0xf6, 0xe4, 0xe7, 0xdd, 0xf4, 0xe4, 0xe7, 0xde, 0xf6, - 0xe4, 0xe7, 0xde, 0xf4, 0xe4, 0xe7, 0xde, 0xf6, 0xe4, 0xe7, 0xde, 0xf4, - 0xe4, 0xe7, 0xdf, 0xf6, 0xe4, 0xe7, 0xdf, 0xf4, 0xe4, 0xe7, 0xdf, 0xf6, - 0xe4, 0xe7, 0xdf, 0xf4, 0xe4, 0xe7, 0xe0, 0xf6, 0xe4, 0xe7, 0xe0, 0xf4, - 0xe4, 0xe7, 0xe0, 0xf6, 0xe4, 0xe7, 0xe1, 0xf4, 0xe4, 0xe7, 0xe1, 0xf6, - 0xe4, 0xe7, 0xe1, 0xf4, 0xe4, 0xe7, 0xe1, 0xf6, 0xe4, 0xe7, 0xe2, 0xf4, - 0xe4, 0xe7, 0xe2, 0xf6, 0xe4, 0xe7, 0xe2, 0xf4, 0xe4, 0xe7, 0xe2, 0xf4, - 0xe4, 0xe7, 0xe3, 0xf4, 0xe4, 0xe7, 0xe3, 0xf4, 0xe4, 0xe7, 0xe3, 0xf4, - 0xe4, 0xe7, 0xe3, 0xf4, 0xe4, 0xe7, 0xe4, 0xf4, 0xe4, 0xe7, 0xe4, 0xf4, - 0xe4, 0xe7, 0xe4, 0xf4, 0xe4, 0xe6, 0xe4, 0xf4, 0xe4, 0xe7, 0xe4, 0xf4, - 0xe5, 0xe6, 0xe4, 0xf4, 0xe5, 0xe7, 0xe6, 0xf4, 0xe5, 0xe7, 0xe6, 0xf4, - 0xe5, 0xe7, 0xe6, 0xf4, 0xe6, 0xe7, 0xe6, 0xf4, 0xe6, 0xe7, 0xe6, 0xf4, - 0xe6, 0xe7, 0xe6, 0xf4, 0xe6, 0xe7, 0xe7, 0xf4, 0xe6, 0xe7, 0xe7, 0xf4, - 0xe6, 0xe7, 0xe7, 0xf3, 0xe6, 0xe7, 0xe7, 0xf4, 0xe6, 0xe7, 0xe8, 0xf3, - 0xe6, 0xe7, 0xe8, 0xf4, 0xe6, 0xe7, 0xe8, 0xf3, 0xe6, 0xe7, 0xe8, 0xf4, - 0xe6, 0xe7, 0xe9, 0xf3, 0xe6, 0xe7, 0xe9, 0xf4, 0xe6, 0xe7, 0xe9, 0xf3, - 0xe6, 0xe7, 0xe9, 0xf4, 0xe6, 0xe7, 0xea, 0xf3, 0xe6, 0xe7, 0xea, 0xf4, - 0xe6, 0xe7, 0xea, 0xf3, 0xe6, 0xe7, 0xea, 0xf4, 0xe6, 0xe7, 0xeb, 0xf3, - 0xe6, 0xe7, 0xeb, 0xf4, 0xe6, 0xe7, 0xeb, 0xf6, 0xef, 0xe7, 0xeb, 0xf5, - 0xf0, 0xe7, 0xec, 0xf6, 0xef, 0xe7, 0xec, 0xf5, 0xf0, 0xe7, 0xec, 0xf4, - 0xf0, 0xe7, 0xec, 0xf5, 0xf0, 0xe7, 0xec, 0xf4, 0xf0, 0xe7, 0xed, 0xf5, - 0xf0, 0xe7, 0xed, 0xf4, 0xf0, 0xe7, 0xed, 0xf5, 0xf0, 0xe7, 0xed, 0xf4, - 0xf0, 0xe7, 0xee, 0xf5, 0xf0, 0xe7, 0xee, 0xf4, 0xf0, 0xe7, 0xee, 0xf5, - 0xf0, 0xe7, 0xee, 0xf4, 0xf0, 0xe7, 0xef, 0xf5, 0xf0, 0xe7, 0xef, 0xf4, - 0xf0, 0xe7, 0xef, 0xf5, 0xf0, 0xe7, 0xef, 0xf4, 0xf0, 0xe7, 0xf0, 0xf5, - 0xf0, 0xe7, 0xef, 0xf4, 0xf0, 0xe7, 0xf0, 0xf4, 0xf0, 0xe7, 0xf0, 0xf4, - 0xf0, 0xe7, 0xf1, 0xf4, 0xf0, 0xe7, 0xf1, 0xf4, 0xf0, 0xe7, 0xf1, 0xf4, - 0xf0, 0xe7, 0xf1, 0xf4, 0xf0, 0xe7, 0xf2, 0xf4, 0xf0, 0xe7, 0xf2, 0xf4, - 0xf0, 0xe7, 0xf2, 0xf4, 0xf0, 0xe7, 0xf2, 0xf4, 0xf0, 0xe7, 0xf2, 0xf4, - 0xf0, 0xe7, 0xf3, 0xf4, 0xf0, 0xe7, 0xf3, 0xf4, 0xf0, 0xe7, 0xf3, 0xf4, - 0xf0, 0xe7, 0xf3, 0xf4, 0xf0, 0xe7, 0xf4, 0xf4, 0xf0, 0xe7, 0xf4, 0xf4, - 0xf0, 0xe7, 0xf4, 0xf2, 0xf0, 0xe7, 0xf4, 0xf4, 0xf0, 0xe7, 0xf5, 0xf2, - 0xf0, 0xe7, 0xf5, 0xf4, 0xf0, 0xe7, 0xf5, 0xf2, 0xf0, 0xe7, 0xf5, 0xf4, - 0xf0, 0xe7, 0xf5, 0xf2, 0xf0, 0xe7, 0xf6, 0xf4, 0xf0, 0xe7, 0xf6, 0xf2, - 0xf0, 0xe7, 0xf6, 0xf4, 0xf0, 0xe7, 0xf6, 0xf2, 0xf0, 0xe7, 0xf7, 0xf4, - 0xf0, 0xe7, 0xf7, 0xf2, 0xf0, 0xe7, 0xf7, 0xf4, 0xf0, 0xe7, 0xf7, 0xf2, - 0xf0, 0xe7, 0xf8, 0xf2, 0xf0, 0xe7, 0xf8, 0xf2, 0xf0, 0xe7, 0xf8, 0xf2, - 0xf0, 0xe7, 0xf8, 0xf2, 0xf0, 0xe7, 0xf8, 0xf2, 0xf0, 0xe7, 0xf9, 0xf2, - 0xf0, 0xe7, 0xf9, 0xf2, 0xf0, 0xe7, 0xf9, 0xf2, 0xf0, 0xe7, 0xf9, 0xf2, - 0xf0, 0xe7, 0xfa, 0xf2, 0xf0, 0xe7, 0xfa, 0xf2, 0xf0, 0xe7, 0xfa, 0xf2, - 0xf0, 0xe7, 0xfa, 0xf2, 0xf0, 0xe7, 0xfa, 0xf2, 0xf0, 0xe7, 0xfb, 0xf2, - 0xf0, 0xe7, 0xfb, 0xf2, 0xf0, 0xe7, 0xfb, 0xf2, 0xf0, 0xe7, 0xfb, 0xf2, - 0xf0, 0xe7, 0xfc, 0xf2, 0xf0, 0xe7, 0xfc, 0xf2, 0xf0, 0xe7, 0xfc, 0xf2, - 0xf0, 0xe7, 0xfc, 0xf2, 0xf0, 0xe7, 0xfc, 0xf2, 0xf0, 0xe7, 0xfd, 0xf2, - 0xf0, 0xe7, 0xfd, 0xf2, 0xf0, 0xe7, 0xfd, 0xf2, 0xf0, 0xe7, 0xfd, 0xf2, - 0xf0, 0xe7, 0xfe, 0xf2, 0xf0, 0xe7, 0xfe, 0xf2, 0xf0, 0xe7, 0xfe, 0xf2, - 0xf0, 0xe7, 0xfe, 0xf2, 0xf0, 0xe7, 0xfe, 0xf2, 0xf0, 0xe7, 0xff, 0xf2, - 0xf0, 0xe7, 0xff, 0xf2, 0xf0, 0xe7, 0x03, 0xf4, 0x83, 0xe8, 0x0a, 0xf4, - 0x83, 0xe8, 0x0f, 0xf4, 0x83, 0xe8, 0x14, 0xf4, 0x83, 0xe8, 0x17, 0xf4, - 0x83, 0xe8, 0x1b, 0xf4, 0x83, 0xe8, 0x1e, 0xf4, 0x83, 0xe8, 0x20, 0xf4, - 0x83, 0xe8, 0x23, 0xf4, 0x83, 0xe8, 0x25, 0xf4, 0x83, 0xe8, 0x27, 0xf4, - 0x83, 0xe8, 0x29, 0xf4, 0x83, 0xe8, 0x2b, 0xf4, 0x83, 0xe8, 0x2d, 0xf4, - 0x83, 0xe8, 0x2f, 0xf4, 0x83, 0xe8, 0x31, 0xf4, 0x83, 0xe8, 0x32, 0xf4, - 0x83, 0xe8, 0x34, 0xf4, 0x83, 0xe8, 0x35, 0xf4, 0x83, 0xe8, 0x37, 0xf4, - 0x83, 0xe8, 0x38, 0xf4, 0x83, 0xe8, 0x3a, 0xf4, 0x83, 0xe8, 0x3b, 0xf4, - 0x83, 0xe8, 0x3c, 0xf4, 0x83, 0xe8, 0x3e, 0xf4, 0x83, 0xe8, 0x3f, 0xf4, - 0x83, 0xe8, 0x40, 0xf4, 0x83, 0xe8, 0x42, 0xf4, 0x83, 0xe8, 0x43, 0xf4, - 0x83, 0xe8, 0x44, 0xf4, 0x83, 0xe8, 0x45, 0xf4, 0x83, 0xe8, 0x46, 0xf4, - 0x83, 0xe8, 0x47, 0xf4, 0x83, 0xe8, 0x48, 0xf4, 0x83, 0xe8, 0x49, 0xf4, - 0x83, 0xe8, 0x4a, 0xf4, 0x83, 0xe8, 0x4b, 0xf4, 0x83, 0xe8, 0x4c, 0xf4, - 0x83, 0xe8, 0x4d, 0xf4, 0x83, 0xe8, 0x4e, 0xf4, 0x83, 0xe8, 0x4f, 0xf4, - 0x83, 0xe8, 0x50, 0xf4, 0x83, 0xe8, 0x51, 0xf4, 0x83, 0xe8, 0x52, 0xf4, - 0x83, 0xe8, 0x53, 0xf4, 0x83, 0xe8, 0x54, 0xf4, 0x83, 0xe8, 0x55, 0xf4, - 0x83, 0xe8, 0x56, 0xf4, 0x83, 0xe8, 0x57, 0xf4, 0x83, 0xe8, 0x58, 0xf4, - 0x83, 0xe8, 0x58, 0xf4, 0x83, 0xe8, 0x59, 0xf4, 0x83, 0xe8, 0x5a, 0xf4, - 0x83, 0xe8, 0x5b, 0xf4, 0x83, 0xe8, 0x5c, 0xf4, 0x83, 0xe8, 0x5d, 0xf4, - 0x83, 0xe8, 0x5d, 0xf4, 0x83, 0xe8, 0x5e, 0xf4, 0x83, 0xe8, 0x5f, 0xf4, - 0x83, 0xe8, 0x60, 0xf4, 0x83, 0xe8, 0x60, 0xf4, 0x83, 0xe8, 0x61, 0xf4, - 0x83, 0xe8, 0x62, 0xf4, 0x83, 0xe8, 0x63, 0xf4, 0x83, 0xe8, 0x63, 0xf4, - 0x83, 0xe8, 0x64, 0xf4, 0x83, 0xe8, 0x65, 0xf4, 0x83, 0xe8, 0x66, 0xf4, - 0x83, 0xe8, 0x66, 0xf4, 0x83, 0xe8, 0x67, 0xf4, 0x83, 0xe8, 0x68, 0xf4, - 0x83, 0xe8, 0x68, 0xf4, 0x83, 0xe8, 0x69, 0xf4, 0x83, 0xe8, 0x6a, 0xf4, - 0x83, 0xe8, 0x6a, 0xf4, 0x83, 0xe8, 0x6b, 0xf4, 0x83, 0xe8, 0x6c, 0xf4, - 0x83, 0xe8, 0x6c, 0xf4, 0x83, 0xe8, 0x6d, 0xf4, 0x83, 0xe8, 0x6e, 0xf4, - 0x83, 0xe8, 0x6e, 0xf4, 0x83, 0xe8, 0x6f, 0xf4, 0x83, 0xe8, 0x70, 0xf4, - 0x83, 0xe8, 0x70, 0xf4, 0x83, 0xe8, 0x71, 0xf4, 0x83, 0xe8, 0x72, 0xf4, - 0x83, 0xe8, 0x72, 0xf4, 0x83, 0xe8, 0x73, 0xf4, 0x83, 0xe8, 0x73, 0xf4, - 0x83, 0xe8, 0x74, 0xf4, 0x83, 0xe8, 0x75, 0xf4, 0x83, 0xe8, 0x75, 0xf4, - 0x83, 0xe8, 0x76, 0xf4, 0x83, 0xe8, 0x76, 0xf4, 0x83, 0xe8, 0x77, 0xf4, - 0x83, 0xe8, 0x78, 0xf4, 0x83, 0xe8, 0x78, 0xf4, 0x83, 0xe8, 0x79, 0xf4, - 0x83, 0xe8, 0x79, 0xf4, 0x83, 0xe8, 0x7a, 0xf4, 0x83, 0xe8, 0x7a, 0xf4, - 0x83, 0xe8, 0x7b, 0xf4, 0x83, 0xe8, 0x7c, 0xf4, 0x83, 0xe8, 0x7c, 0xf4, - 0x83, 0xe8, 0x7d, 0xf4, 0x83, 0xe8, 0x7d, 0xf4, 0x83, 0xe8, 0x7e, 0xf4, - 0x83, 0xe8, 0x7e, 0xf4, 0x83, 0xe8, 0x7f, 0xf4, 0x83, 0xe8, 0x7f, 0xf4, - 0x83, 0xe8, 0x80, 0xf4, 0x83, 0xe8, 0x81, 0xf4, 0x83, 0xe8, 0x81, 0xf4, - 0x83, 0xe8, 0x82, 0xf4, 0x83, 0xe8, 0x82, 0xf4, 0x83, 0xe8, 0x83, 0xf4, - 0x83, 0xe8, 0x83, 0xf4, 0x83, 0xe8, 0x84, 0xf4, 0x84, 0xe8, 0x84, 0xf4, - 0x84, 0xe8, 0x85, 0xf4, 0x85, 0xe8, 0x85, 0xf4, 0x85, 0xe8, 0x86, 0xf4, - 0x86, 0xe8, 0x86, 0xf4, 0x86, 0xe8, 0x87, 0xf4, 0x87, 0xe8, 0x87, 0xf4, - 0x87, 0xe8, 0x88, 0xf5, 0x88, 0xe9, 0x88, 0xf5, 0x88, 0xe9, 0x89, 0xf5, - 0x89, 0xe9, 0x89, 0xf5, 0x89, 0xe9, 0x8a, 0xf5, 0x8a, 0xe9, 0x8a, 0xf5, - 0x8a, 0xe9, 0x8b, 0xf5, 0x8b, 0xe9, 0x8b, 0xf5, 0x8b, 0xe9, 0x8c, 0xf5, - 0x8c, 0xe9, 0x8c, 0xf5, 0x8c, 0xe9, 0x8d, 0xf5, 0x8d, 0xe9, 0x8c, 0xf5, - 0x8d, 0xe9, 0x8d, 0xf5, 0x8e, 0xe9, 0x8e, 0xf5, 0x8e, 0xea, 0x8e, 0xf5, - 0x8e, 0xea, 0x8f, 0xf5, 0x8f, 0xea, 0x8f, 0xf5, 0x8f, 0xea, 0x90, 0xf5, - 0x90, 0xea, 0x90, 0xf5, 0x90, 0xea, 0x91, 0xf5, 0x91, 0xea, 0x91, 0xf5, - 0x91, 0xea, 0x92, 0xf5, 0x92, 0xea, 0x91, 0xf5, 0x92, 0xea, 0x92, 0xf5, - 0x93, 0xea, 0x91, 0xf5, 0x93, 0xea, 0x92, 0xf5, 0x94, 0xea, 0x94, 0xf5, - 0x94, 0xeb, 0x94, 0xf5, 0x94, 0xeb, 0x95, 0xf5, 0x95, 0xeb, 0x95, 0xf5, - 0x95, 0xeb, 0x96, 0xf5, 0x96, 0xeb, 0x96, 0xf5, 0x96, 0xeb, 0x97, 0xf5, - 0x97, 0xeb, 0x96, 0xf5, 0x97, 0xeb, 0x97, 0xf5, 0x98, 0xeb, 0x96, 0xf5, - 0x98, 0xeb, 0x97, 0xf5, 0x98, 0xeb, 0x99, 0xf5, 0x99, 0xec, 0x99, 0xf5, - 0x99, 0xec, 0x9a, 0xf5, 0x9a, 0xec, 0x9a, 0xf5, 0x9a, 0xec, 0x9a, 0xf5, - 0x9a, 0xec, 0x9b, 0xf5, 0x9b, 0xec, 0x9b, 0xf5, 0x9b, 0xec, 0x9b, 0xf5, - 0x9c, 0xec, 0x9b, 0xf5, 0x9c, 0xec, 0x9b, 0xf5, 0x9d, 0xec, 0x9b, 0xf5, - 0x9d, 0xec, 0x9d, 0xf5, 0x9d, 0xed, 0x9e, 0xf5, 0x9e, 0xed, 0x9e, 0xf5, - 0x9e, 0xed, 0x9f, 0xf5, 0x9f, 0xed, 0x9f, 0xf5, 0x9f, 0xed, 0x9f, 0xf5, - 0x9f, 0xed, 0xa0, 0xf5, 0xa0, 0xed, 0x9f, 0xf5, 0xa0, 0xed, 0xa0, 0xf5, - 0xa1, 0xed, 0x9f, 0xf5, 0xa1, 0xed, 0xa0, 0xf5, 0xa1, 0xed, 0x9f, 0xf5, - 0xa2, 0xed, 0xa0, 0xf5, 0xa2, 0xed, 0xa3, 0xf5, 0xa3, 0xee, 0xa3, 0xf5, - 0xa3, 0xee, 0xa3, 0xf5, 0xa3, 0xee, 0xa4, 0xf5, 0xa4, 0xee, 0xa4, 0xf5, - 0xa4, 0xee, 0xa4, 0xf5, 0xa5, 0xee, 0xa4, 0xf5, 0xa5, 0xee, 0xa4, 0xf5, - 0xa5, 0xee, 0xa4, 0xf5, 0xa6, 0xee, 0xa4, 0xf5, 0xa6, 0xee, 0xa4, 0xf5, - 0xa6, 0xee, 0xa7, 0xf5, 0xa7, 0xef, 0xa7, 0xf5, 0xa7, 0xef, 0xa8, 0xf5, - 0xa8, 0xef, 0xa8, 0xf5, 0xa8, 0xef, 0xa8, 0xf5, 0xa8, 0xef, 0xa8, 0xf5, - 0xa9, 0xef, 0xa8, 0xf5, 0xa9, 0xef, 0xa8, 0xf5, 0xaa, 0xef, 0xa8, 0xf5, - 0xaa, 0xef, 0xa8, 0xf5, 0xaa, 0xef, 0xa8, 0xf5, 0xab, 0xef, 0xab, 0xf5, - 0xab, 0xf0, 0xab, 0xf5, 0xab, 0xf0, 0xac, 0xf5, 0xac, 0xf0, 0xac, 0xf5, - 0xac, 0xf0, 0xac, 0xf5, 0xac, 0xf0, 0xac, 0xf5, 0xad, 0xf0, 0xac, 0xf5, - 0xad, 0xf0, 0xac, 0xf5, 0xae, 0xf0, 0xac, 0xf5, 0xae, 0xf0, 0xac, 0xf5, - 0xae, 0xf0, 0xac, 0xf5, 0xaf, 0xf0, 0xac, 0xf5, 0xaf, 0xf0, 0xac, 0xf5, - 0xaf, 0xf0, 0xb0, 0xf5, 0xb0, 0xf1, 0xb0, 0xf5, 0xb0, 0xf1, 0xb0, 0xf5, - 0xb0, 0xf1, 0xb0, 0xf5, 0xb1, 0xf1, 0xb0, 0xf5, 0xb1, 0xf1, 0xb0, 0xf5, - 0xb2, 0xf1, 0xb0, 0xf5, 0xb2, 0xf1, 0xb0, 0xf5, 0xb2, 0xf1, 0xb0, 0xf5, - 0xb3, 0xf1, 0xb0, 0xf5, 0xb3, 0xf1, 0xb0, 0xf5, 0xb3, 0xf1, 0xb4, 0xf5, - 0xb4, 0xf2, 0xb4, 0xf5, 0xb4, 0xf2, 0xb4, 0xf5, 0xb4, 0xf2, 0xb4, 0xf5, - 0xb5, 0xf2, 0xb4, 0xf5, 0xb5, 0xf2, 0xb4, 0xf5, 0xb5, 0xf2, 0xb4, 0xf5, - 0xb6, 0xf2, 0xb4, 0xf5, 0xb6, 0xf2, 0xb4, 0xf5, 0xb6, 0xf2, 0xb4, 0xf5, - 0xb7, 0xf2, 0xb4, 0xf5, 0xb7, 0xf2, 0xb7, 0xf5, 0xb7, 0xf3, 0xb8, 0xf5, - 0xb8, 0xf3, 0xb8, 0xf5, 0xb8, 0xf3, 0xb8, 0xf5, 0xb8, 0xf3, 0xb8, 0xf5, - 0xb9, 0xf3, 0xb8, 0xf5, 0xb9, 0xf3, 0xb8, 0xf5, 0xb9, 0xf3, 0xb8, 0xf5, - 0xba, 0xf3, 0xb8, 0xf5, 0xba, 0xf3, 0xb8, 0xf5, 0xba, 0xf3, 0xb8, 0xf5, - 0xbb, 0xf3, 0xbb, 0xf5, 0xbb, 0xf4, 0xbb, 0xf5, 0xbb, 0xf4, 0xbc, 0xf5, - 0xbc, 0xf4, 0xbb, 0xf5, 0xbc, 0xf4, 0xbc, 0xf5, 0xbc, 0xf4, 0xbb, 0xf5, - 0xbd, 0xf4, 0xbc, 0xf5, 0xbd, 0xf4, 0xbb, 0xf5, 0xbd, 0xf4, 0xbc, 0xf5, - 0xbe, 0xf4, 0xbb, 0xf5, 0xbe, 0xf4, 0xbc, 0xf5, 0xbe, 0xf4, 0xbf, 0xf5, - 0xbf, 0xf5, 0xbf, 0xf5, 0xbf, 0xf5, 0xbf, 0xf5, 0xbf, 0xf5, 0xbf, 0xf5, - 0xc0, 0xf5, 0xbf, 0xf5, 0xc0, 0xf5, 0xbf, 0xf5, 0xc0, 0xf5, 0xbf, 0xf5, - 0xc1, 0xf5, 0xbf, 0xf5, 0xc1, 0xf5, 0xbf, 0xf5, 0xc1, 0xf5, 0xbf, 0xf5, - 0xc1, 0xf5, 0xbf, 0xf5, 0xc2, 0xf5, 0xbf, 0xf5, 0xc2, 0xf5, 0xbf, 0xf5, - 0xc2, 0xf5, 0xcb, 0xf5, 0xc3, 0xeb, 0xcb, 0xf5, 0xc3, 0xe9, 0xcb, 0xf5, - 0xc3, 0xeb, 0xcb, 0xf5, 0xc4, 0xe9, 0xcb, 0xf5, 0xc4, 0xeb, 0xcb, 0xf5, - 0xc4, 0xe9, 0xcb, 0xf5, 0xc5, 0xeb, 0xcb, 0xf5, 0xc5, 0xe9, 0xcb, 0xf5, - 0xc5, 0xeb, 0xcb, 0xf5, 0xc6, 0xe9, 0xcb, 0xf5, 0xc6, 0xeb, 0xcb, 0xf5, - 0xc6, 0xe9, 0xcb, 0xf5, 0xc6, 0xeb, 0xcb, 0xf5, 0xc7, 0xe9, 0xcb, 0xf5, - 0xc7, 0xeb, 0xcb, 0xf5, 0xc7, 0xe9, 0xcb, 0xf5, 0xc8, 0xeb, 0xcb, 0xf5, - 0xc8, 0xe9, 0xcb, 0xf5, 0xc8, 0xeb, 0xcb, 0xf5, 0xc9, 0xe9, 0xcb, 0xf5, - 0xc9, 0xe8, 0xcb, 0xf5, 0xc9, 0xe9, 0xcb, 0xf5, 0xc9, 0xe8, 0xcb, 0xf5, - 0xca, 0xe9, 0xcb, 0xf5, 0xca, 0xe8, 0xcb, 0xf5, 0xca, 0xe9, 0xcb, 0xf5, - 0xcb, 0xe8, 0xcc, 0xf5, 0xcb, 0xe8, 0xcb, 0xf5, 0xcb, 0xe8, 0xcc, 0xf5, - 0xcb, 0xe8, 0xcc, 0xf5, 0xcb, 0xe8, 0xcc, 0xf5, 0xcb, 0xe8, 0xcc, 0xf5, - 0xcb, 0xe8, 0xcd, 0xf5, 0xcb, 0xe8, 0xcd, 0xf5, 0xcb, 0xe8, 0xcd, 0xf5, - 0xcb, 0xe8, 0xce, 0xf3, 0xcb, 0xe8, 0xce, 0xf5, 0xcb, 0xe8, 0xce, 0xf3, - 0xcb, 0xe8, 0xce, 0xf5, 0xcb, 0xe8, 0xcf, 0xf3, 0xcb, 0xe8, 0xcf, 0xf5, - 0xcb, 0xe8, 0xcf, 0xf3, 0xcb, 0xe8, 0xd0, 0xf5, 0xcb, 0xe8, 0xd0, 0xf3, - 0xcb, 0xe8, 0xd0, 0xf5, 0xcb, 0xe8, 0xd0, 0xf3, 0xcb, 0xe8, 0xd1, 0xf5, - 0xcb, 0xe8, 0xd1, 0xf3, 0xcb, 0xe8, 0xd1, 0xf5, 0xcb, 0xe8, 0xd2, 0xf3, - 0xcb, 0xe8, 0xd2, 0xf5, 0xcb, 0xe8, 0xd2, 0xf3, 0xcb, 0xe8, 0xd2, 0xf5, - 0xcb, 0xe8, 0xd3, 0xf3, 0xcb, 0xe8, 0xd3, 0xf5, 0xcb, 0xe8, 0xd3, 0xf3, - 0xcb, 0xe8, 0xd4, 0xf5, 0xcb, 0xe8, 0xd4, 0xf3, 0xcb, 0xe8, 0xd4, 0xf5, - 0xcb, 0xe8, 0xd4, 0xf3, 0xcb, 0xe8, 0xd5, 0xf5, 0xcb, 0xe8, 0xd5, 0xf3, - 0xcb, 0xe8, 0xd5, 0xf5, 0xcb, 0xe8, 0xd6, 0xfd, 0xd6, 0xe8, 0xd6, 0xfd, - 0xd6, 0xe8, 0xd6, 0xfd, 0xd6, 0xe8, 0xd6, 0xfd, 0xd6, 0xe8, 0xd7, 0xfd, - 0xd6, 0xe8, 0xd7, 0xfd, 0xd6, 0xe8, 0xd7, 0xfd, 0xd6, 0xe8, 0xd7, 0xfd, - 0xd6, 0xe8, 0xd8, 0xfd, 0xd6, 0xe8, 0xd8, 0xfd, 0xd6, 0xe8, 0xd8, 0xfd, - 0xd6, 0xe8, 0xd9, 0xfd, 0xd6, 0xe8, 0xd9, 0xfd, 0xd6, 0xe8, 0xd9, 0xfd, - 0xd6, 0xe8, 0xd9, 0xfd, 0xd9, 0xe8, 0xda, 0xfd, 0xd9, 0xe8, 0xda, 0xfd, - 0xd9, 0xe8, 0xda, 0xf7, 0xe4, 0xe8, 0xda, 0xf6, 0xe4, 0xe8, 0xdb, 0xf7, - 0xe4, 0xe8, 0xdb, 0xf6, 0xe4, 0xe8, 0xdb, 0xf7, 0xe4, 0xe8, 0xdb, 0xf6, - 0xe4, 0xe8, 0xdc, 0xf7, 0xe4, 0xe8, 0xdc, 0xf6, 0xe4, 0xe8, 0xdc, 0xf7, - 0xe4, 0xe8, 0xdd, 0xf6, 0xe4, 0xe8, 0xdd, 0xf7, 0xe4, 0xe8, 0xdd, 0xf6, - 0xe4, 0xe8, 0xdd, 0xf7, 0xe4, 0xe8, 0xde, 0xf6, 0xe4, 0xe8, 0xde, 0xf5, - 0xe4, 0xe8, 0xde, 0xf6, 0xe4, 0xe8, 0xde, 0xf5, 0xe4, 0xe8, 0xdf, 0xf6, - 0xe4, 0xe8, 0xdf, 0xf5, 0xe4, 0xe8, 0xdf, 0xf6, 0xe4, 0xe8, 0xdf, 0xf5, - 0xe4, 0xe8, 0xe0, 0xf6, 0xe4, 0xe8, 0xe0, 0xf5, 0xe4, 0xe8, 0xe0, 0xf6, - 0xe4, 0xe8, 0xe1, 0xf5, 0xe4, 0xe8, 0xe1, 0xf6, 0xe4, 0xe8, 0xe1, 0xf5, - 0xe4, 0xe8, 0xe1, 0xf6, 0xe4, 0xe8, 0xe2, 0xf5, 0xe4, 0xe8, 0xe2, 0xf6, - 0xe4, 0xe8, 0xe2, 0xf5, 0xe4, 0xe8, 0xe2, 0xf5, 0xe4, 0xe8, 0xe3, 0xf5, - 0xe4, 0xe8, 0xe3, 0xf5, 0xe4, 0xe8, 0xe3, 0xf5, 0xe4, 0xe8, 0xe3, 0xf5, - 0xe4, 0xe8, 0xe4, 0xf5, 0xe4, 0xe8, 0xe4, 0xf5, 0xe4, 0xe8, 0xe4, 0xf5, - 0xe4, 0xe7, 0xe4, 0xf5, 0xe4, 0xe8, 0xe4, 0xf5, 0xe5, 0xe7, 0xe4, 0xf5, - 0xe5, 0xe8, 0xe6, 0xf5, 0xe5, 0xe8, 0xe6, 0xf5, 0xe5, 0xe8, 0xe6, 0xf5, - 0xe6, 0xe8, 0xe6, 0xf5, 0xe6, 0xe8, 0xe6, 0xf5, 0xe6, 0xe8, 0xe6, 0xf5, - 0xe6, 0xe8, 0xe7, 0xf5, 0xe6, 0xe8, 0xe7, 0xf5, 0xe6, 0xe8, 0xe7, 0xf4, - 0xe6, 0xe8, 0xe7, 0xf5, 0xe6, 0xe8, 0xe8, 0xf4, 0xe6, 0xe8, 0xe8, 0xf5, - 0xe6, 0xe8, 0xe8, 0xf4, 0xe6, 0xe8, 0xe8, 0xf5, 0xe6, 0xe8, 0xe9, 0xf4, - 0xe6, 0xe8, 0xe9, 0xf5, 0xe6, 0xe8, 0xe9, 0xf4, 0xe6, 0xe8, 0xe9, 0xf5, - 0xe6, 0xe8, 0xea, 0xf4, 0xe6, 0xe8, 0xea, 0xf5, 0xe6, 0xe8, 0xea, 0xf4, - 0xe6, 0xe8, 0xea, 0xf5, 0xe6, 0xe8, 0xeb, 0xf4, 0xe6, 0xe8, 0xeb, 0xf5, - 0xe6, 0xe8, 0xeb, 0xf6, 0xef, 0xe8, 0xeb, 0xf5, 0xf0, 0xe8, 0xec, 0xf6, - 0xef, 0xe8, 0xec, 0xf5, 0xf0, 0xe8, 0xec, 0xf6, 0xef, 0xe8, 0xec, 0xf5, - 0xf0, 0xe8, 0xec, 0xf6, 0xef, 0xe8, 0xed, 0xf5, 0xf0, 0xe8, 0xed, 0xf6, - 0xef, 0xe8, 0xed, 0xf5, 0xf0, 0xe8, 0xed, 0xf6, 0xef, 0xe8, 0xee, 0xf5, - 0xf0, 0xe8, 0xee, 0xf5, 0xf0, 0xe8, 0xee, 0xf5, 0xf0, 0xe8, 0xee, 0xf5, - 0xf0, 0xe8, 0xef, 0xf5, 0xf0, 0xe8, 0xef, 0xf5, 0xf0, 0xe8, 0xef, 0xf5, - 0xf0, 0xe8, 0xef, 0xf5, 0xf0, 0xe8, 0xf0, 0xf5, 0xf0, 0xe7, 0xef, 0xf5, - 0xf0, 0xe8, 0xf0, 0xf5, 0xf0, 0xe8, 0xf0, 0xf5, 0xf0, 0xe8, 0xf1, 0xf5, - 0xf0, 0xe8, 0xf1, 0xf5, 0xf0, 0xe8, 0xf1, 0xf4, 0xf0, 0xe8, 0xf1, 0xf5, - 0xf0, 0xe8, 0xf2, 0xf4, 0xf0, 0xe8, 0xf2, 0xf5, 0xf0, 0xe8, 0xf2, 0xf4, - 0xf0, 0xe8, 0xf2, 0xf5, 0xf0, 0xe8, 0xf2, 0xf4, 0xf0, 0xe8, 0xf3, 0xf5, - 0xf0, 0xe8, 0xf3, 0xf4, 0xf0, 0xe8, 0xf3, 0xf5, 0xf0, 0xe8, 0xf3, 0xf4, - 0xf0, 0xe8, 0xf4, 0xf5, 0xf0, 0xe8, 0xf4, 0xf4, 0xf0, 0xe8, 0xf4, 0xf5, - 0xf0, 0xe8, 0xf4, 0xf4, 0xf0, 0xe8, 0xf5, 0xf5, 0xf0, 0xe8, 0xf5, 0xf4, - 0xf0, 0xe8, 0xf5, 0xf5, 0xf0, 0xe8, 0xf5, 0xf4, 0xf0, 0xe8, 0xf5, 0xf5, - 0xf0, 0xe8, 0xf6, 0xf4, 0xf0, 0xe8, 0xf6, 0xf2, 0xf0, 0xe8, 0xf6, 0xf4, - 0xf0, 0xe8, 0xf6, 0xf2, 0xf0, 0xe8, 0xf7, 0xf4, 0xf0, 0xe8, 0xf7, 0xf2, - 0xf0, 0xe8, 0xf7, 0xf4, 0xf0, 0xe8, 0xf7, 0xf2, 0xf0, 0xe8, 0xf8, 0xf4, - 0xf0, 0xe8, 0xf8, 0xf2, 0xf0, 0xe8, 0xf8, 0xf4, 0xf0, 0xe8, 0xf8, 0xf2, - 0xf0, 0xe8, 0xf8, 0xf4, 0xf0, 0xe8, 0xf9, 0xf2, 0xf0, 0xe8, 0xf9, 0xf4, - 0xf0, 0xe8, 0xf9, 0xf2, 0xf0, 0xe8, 0xf9, 0xf4, 0xf0, 0xe8, 0xfa, 0xf2, - 0xf0, 0xe8, 0xfa, 0xf4, 0xf0, 0xe8, 0xfa, 0xf2, 0xf0, 0xe8, 0xfa, 0xf2, - 0xf0, 0xe8, 0xfa, 0xf2, 0xf0, 0xe8, 0xfb, 0xf2, 0xf0, 0xe8, 0xfb, 0xf2, - 0xf0, 0xe8, 0xfb, 0xf2, 0xf0, 0xe8, 0xfb, 0xf2, 0xf0, 0xe8, 0xfc, 0xf2, - 0xf0, 0xe8, 0xfc, 0xf2, 0xf0, 0xe8, 0xfc, 0xf2, 0xf0, 0xe8, 0xfc, 0xf2, - 0xf0, 0xe8, 0xfc, 0xf2, 0xf0, 0xe8, 0xfd, 0xf2, 0xf0, 0xe8, 0xfd, 0xf2, - 0xf0, 0xe8, 0xfd, 0xf2, 0xf0, 0xe8, 0xfd, 0xf2, 0xf0, 0xe8, 0xfe, 0xf2, - 0xf0, 0xe8, 0xfe, 0xf2, 0xf0, 0xe8, 0xfe, 0xf2, 0xf0, 0xe8, 0xfe, 0xf2, - 0xf0, 0xe8, 0xfe, 0xf2, 0xf0, 0xe8, 0xff, 0xf2, 0xf0, 0xe8, 0xff, 0xf2, - 0xf0, 0xe8, 0x03, 0xf4, 0x83, 0xe8, 0x0a, 0xf4, 0x83, 0xe8, 0x0f, 0xf4, - 0x83, 0xe8, 0x14, 0xf4, 0x83, 0xe8, 0x17, 0xf4, 0x83, 0xe8, 0x1b, 0xf4, - 0x83, 0xe8, 0x1e, 0xf4, 0x83, 0xe8, 0x20, 0xf4, 0x83, 0xe8, 0x23, 0xf4, - 0x83, 0xe8, 0x25, 0xf4, 0x83, 0xe8, 0x27, 0xf4, 0x83, 0xe8, 0x29, 0xf4, - 0x83, 0xe8, 0x2b, 0xf4, 0x83, 0xe8, 0x2d, 0xf4, 0x83, 0xe8, 0x2f, 0xf4, - 0x83, 0xe8, 0x31, 0xf4, 0x83, 0xe8, 0x32, 0xf4, 0x83, 0xe8, 0x34, 0xf4, - 0x83, 0xe8, 0x35, 0xf4, 0x83, 0xe8, 0x37, 0xf4, 0x83, 0xe8, 0x38, 0xf4, - 0x83, 0xe8, 0x3a, 0xf4, 0x83, 0xe8, 0x3b, 0xf4, 0x83, 0xe8, 0x3c, 0xf4, - 0x83, 0xe8, 0x3e, 0xf4, 0x83, 0xe8, 0x3f, 0xf4, 0x83, 0xe8, 0x40, 0xf4, - 0x83, 0xe8, 0x42, 0xf4, 0x83, 0xe8, 0x43, 0xf4, 0x83, 0xe8, 0x44, 0xf4, - 0x83, 0xe8, 0x45, 0xf4, 0x83, 0xe8, 0x46, 0xf4, 0x83, 0xe8, 0x47, 0xf4, - 0x83, 0xe8, 0x48, 0xf4, 0x83, 0xe8, 0x49, 0xf4, 0x83, 0xe8, 0x4a, 0xf4, - 0x83, 0xe8, 0x4b, 0xf4, 0x83, 0xe8, 0x4c, 0xf4, 0x83, 0xe8, 0x4d, 0xf4, - 0x83, 0xe8, 0x4e, 0xf4, 0x83, 0xe8, 0x4f, 0xf4, 0x83, 0xe8, 0x50, 0xf4, - 0x83, 0xe8, 0x51, 0xf4, 0x83, 0xe8, 0x52, 0xf4, 0x83, 0xe8, 0x53, 0xf4, - 0x83, 0xe8, 0x54, 0xf4, 0x83, 0xe8, 0x55, 0xf4, 0x83, 0xe8, 0x56, 0xf4, - 0x83, 0xe8, 0x57, 0xf4, 0x83, 0xe8, 0x58, 0xf4, 0x83, 0xe8, 0x58, 0xf4, - 0x83, 0xe8, 0x59, 0xf4, 0x83, 0xe8, 0x5a, 0xf4, 0x83, 0xe8, 0x5b, 0xf4, - 0x83, 0xe8, 0x5c, 0xf4, 0x83, 0xe8, 0x5d, 0xf4, 0x83, 0xe8, 0x5d, 0xf4, - 0x83, 0xe8, 0x5e, 0xf4, 0x83, 0xe8, 0x5f, 0xf4, 0x83, 0xe8, 0x60, 0xf4, - 0x83, 0xe8, 0x60, 0xf4, 0x83, 0xe8, 0x61, 0xf4, 0x83, 0xe8, 0x62, 0xf4, - 0x83, 0xe8, 0x63, 0xf4, 0x83, 0xe8, 0x63, 0xf4, 0x83, 0xe8, 0x64, 0xf4, - 0x83, 0xe8, 0x65, 0xf4, 0x83, 0xe8, 0x66, 0xf4, 0x83, 0xe8, 0x66, 0xf4, - 0x83, 0xe8, 0x67, 0xf4, 0x83, 0xe8, 0x68, 0xf4, 0x83, 0xe8, 0x68, 0xf4, - 0x83, 0xe8, 0x69, 0xf4, 0x83, 0xe8, 0x6a, 0xf4, 0x83, 0xe8, 0x6a, 0xf4, - 0x83, 0xe8, 0x6b, 0xf4, 0x83, 0xe8, 0x6c, 0xf4, 0x83, 0xe8, 0x6c, 0xf4, - 0x83, 0xe8, 0x6d, 0xf4, 0x83, 0xe8, 0x6e, 0xf4, 0x83, 0xe8, 0x6e, 0xf4, - 0x83, 0xe8, 0x6f, 0xf4, 0x83, 0xe8, 0x70, 0xf4, 0x83, 0xe8, 0x70, 0xf4, - 0x83, 0xe8, 0x71, 0xf4, 0x83, 0xe8, 0x72, 0xf4, 0x83, 0xe8, 0x72, 0xf4, - 0x83, 0xe8, 0x73, 0xf4, 0x83, 0xe8, 0x73, 0xf4, 0x83, 0xe8, 0x74, 0xf4, - 0x83, 0xe8, 0x75, 0xf4, 0x83, 0xe8, 0x75, 0xf4, 0x83, 0xe8, 0x76, 0xf4, - 0x83, 0xe8, 0x76, 0xf4, 0x83, 0xe8, 0x77, 0xf4, 0x83, 0xe8, 0x78, 0xf4, - 0x83, 0xe8, 0x78, 0xf4, 0x83, 0xe8, 0x79, 0xf4, 0x83, 0xe8, 0x79, 0xf4, - 0x83, 0xe8, 0x7a, 0xf4, 0x83, 0xe8, 0x7a, 0xf4, 0x83, 0xe8, 0x7b, 0xf4, - 0x83, 0xe8, 0x7c, 0xf4, 0x83, 0xe8, 0x7c, 0xf4, 0x83, 0xe8, 0x7d, 0xf4, - 0x83, 0xe8, 0x7d, 0xf4, 0x83, 0xe8, 0x7e, 0xf4, 0x83, 0xe8, 0x7e, 0xf4, - 0x83, 0xe8, 0x7f, 0xf4, 0x83, 0xe8, 0x7f, 0xf4, 0x83, 0xe8, 0x80, 0xf4, - 0x83, 0xe8, 0x81, 0xf4, 0x83, 0xe8, 0x81, 0xf4, 0x83, 0xe8, 0x82, 0xf4, - 0x83, 0xe8, 0x82, 0xf4, 0x83, 0xe8, 0x83, 0xf4, 0x83, 0xe8, 0x83, 0xf4, - 0x83, 0xe8, 0x84, 0xf4, 0x84, 0xe8, 0x84, 0xf4, 0x85, 0xe8, 0x85, 0xf4, - 0x86, 0xe8, 0x85, 0xf4, 0x85, 0xe8, 0x86, 0xf4, 0x86, 0xe8, 0x86, 0xf4, - 0x86, 0xe8, 0x87, 0xf4, 0x87, 0xe8, 0x87, 0xf4, 0x87, 0xe8, 0x88, 0xf4, - 0x88, 0xe8, 0x88, 0xf4, 0x88, 0xe8, 0x89, 0xf4, 0x89, 0xe8, 0x89, 0xf4, - 0x89, 0xe8, 0x8a, 0xf4, 0x8a, 0xe8, 0x8a, 0xf4, 0x8a, 0xe8, 0x8b, 0xf5, - 0x8b, 0xe9, 0x8b, 0xf5, 0x8b, 0xe9, 0x8c, 0xf5, 0x8c, 0xe9, 0x8c, 0xf5, - 0x8c, 0xe9, 0x8d, 0xf5, 0x8d, 0xe9, 0x8d, 0xf5, 0x8d, 0xe9, 0x8e, 0xf5, - 0x8e, 0xe9, 0x8e, 0xf5, 0x8e, 0xe9, 0x8e, 0xf5, 0x8e, 0xe9, 0x8f, 0xf5, - 0x8f, 0xe9, 0x8f, 0xf5, 0x8f, 0xe9, 0x8f, 0xf5, 0x90, 0xe9, 0x8f, 0xf5, - 0x90, 0xe9, 0x91, 0xf5, 0x91, 0xea, 0x91, 0xf5, 0x91, 0xea, 0x92, 0xf5, - 0x92, 0xea, 0x92, 0xf5, 0x92, 0xea, 0x93, 0xf5, 0x93, 0xea, 0x93, 0xf5, - 0x93, 0xea, 0x94, 0xf5, 0x94, 0xea, 0x94, 0xf5, 0x94, 0xea, 0x94, 0xf5, - 0x94, 0xea, 0x94, 0xf5, 0x95, 0xea, 0x94, 0xf5, 0x95, 0xea, 0x94, 0xf5, - 0x96, 0xea, 0x94, 0xf5, 0x96, 0xea, 0x97, 0xf5, 0x97, 0xeb, 0x97, 0xf5, - 0x97, 0xeb, 0x98, 0xf5, 0x98, 0xeb, 0x98, 0xf5, 0x98, 0xeb, 0x98, 0xf5, - 0x98, 0xeb, 0x99, 0xf5, 0x99, 0xeb, 0x99, 0xf5, 0x99, 0xeb, 0x99, 0xf5, - 0x9a, 0xeb, 0x99, 0xf5, 0x9a, 0xeb, 0x99, 0xf5, 0x9a, 0xeb, 0x99, 0xf5, - 0x9b, 0xeb, 0x9b, 0xf5, 0x9b, 0xec, 0x9c, 0xf5, 0x9c, 0xec, 0x9c, 0xf5, - 0x9c, 0xec, 0x9d, 0xf5, 0x9d, 0xec, 0x9d, 0xf5, 0x9d, 0xec, 0x9d, 0xf5, - 0x9d, 0xec, 0x9e, 0xf5, 0x9e, 0xec, 0x9d, 0xf5, 0x9e, 0xec, 0x9e, 0xf5, - 0x9f, 0xec, 0x9d, 0xf5, 0x9f, 0xec, 0x9e, 0xf5, 0x9f, 0xec, 0xa0, 0xf5, - 0xa0, 0xed, 0xa0, 0xf5, 0xa0, 0xed, 0xa1, 0xf5, 0xa1, 0xed, 0xa1, 0xf5, - 0xa1, 0xed, 0xa1, 0xf5, 0xa1, 0xed, 0xa2, 0xf5, 0xa2, 0xed, 0xa2, 0xf5, - 0xa2, 0xed, 0xa2, 0xf5, 0xa3, 0xed, 0xa2, 0xf5, 0xa3, 0xed, 0xa2, 0xf5, - 0xa3, 0xed, 0xa2, 0xf5, 0xa4, 0xed, 0xa2, 0xf5, 0xa4, 0xed, 0xa2, 0xf5, - 0xa5, 0xed, 0xa5, 0xf5, 0xa5, 0xee, 0xa5, 0xf5, 0xa5, 0xee, 0xa6, 0xf5, - 0xa6, 0xee, 0xa6, 0xf5, 0xa6, 0xee, 0xa6, 0xf5, 0xa6, 0xee, 0xa6, 0xf5, - 0xa7, 0xee, 0xa6, 0xf5, 0xa7, 0xee, 0xa6, 0xf5, 0xa8, 0xee, 0xa6, 0xf5, - 0xa8, 0xee, 0xa6, 0xf5, 0xa8, 0xee, 0xa6, 0xf5, 0xa9, 0xee, 0xa9, 0xf5, - 0xa9, 0xef, 0xaa, 0xf5, 0xaa, 0xef, 0xaa, 0xf5, 0xaa, 0xef, 0xaa, 0xf5, - 0xaa, 0xef, 0xab, 0xf5, 0xab, 0xef, 0xaa, 0xf5, 0xab, 0xef, 0xab, 0xf5, - 0xab, 0xef, 0xaa, 0xf5, 0xac, 0xef, 0xab, 0xf5, 0xac, 0xef, 0xaa, 0xf5, - 0xac, 0xef, 0xab, 0xf5, 0xad, 0xef, 0xad, 0xf5, 0xad, 0xf0, 0xae, 0xf5, - 0xae, 0xf0, 0xae, 0xf5, 0xae, 0xf0, 0xae, 0xf5, 0xae, 0xf0, 0xaf, 0xf5, - 0xaf, 0xf0, 0xae, 0xf5, 0xaf, 0xf0, 0xaf, 0xf5, 0xaf, 0xf0, 0xae, 0xf5, - 0xb0, 0xf0, 0xaf, 0xf5, 0xb0, 0xf0, 0xae, 0xf5, 0xb0, 0xf0, 0xaf, 0xf5, - 0xb1, 0xf0, 0xae, 0xf5, 0xb1, 0xf0, 0xaf, 0xf5, 0xb2, 0xf0, 0xb2, 0xf5, - 0xb2, 0xf1, 0xb2, 0xf5, 0xb2, 0xf1, 0xb3, 0xf5, 0xb3, 0xf1, 0xb2, 0xf5, - 0xb3, 0xf1, 0xb3, 0xf5, 0xb3, 0xf1, 0xb2, 0xf5, 0xb4, 0xf1, 0xb3, 0xf5, - 0xb4, 0xf1, 0xb2, 0xf5, 0xb4, 0xf1, 0xb3, 0xf5, 0xb5, 0xf1, 0xb2, 0xf5, - 0xb5, 0xf1, 0xb3, 0xf5, 0xb5, 0xf1, 0xb6, 0xf5, 0xb6, 0xf2, 0xb6, 0xf5, - 0xb6, 0xf2, 0xb6, 0xf5, 0xb6, 0xf2, 0xb6, 0xf5, 0xb7, 0xf2, 0xb6, 0xf5, - 0xb7, 0xf2, 0xb6, 0xf5, 0xb7, 0xf2, 0xb6, 0xf5, 0xb8, 0xf2, 0xb6, 0xf5, - 0xb8, 0xf2, 0xb6, 0xf5, 0xb8, 0xf2, 0xb6, 0xf5, 0xb9, 0xf2, 0xb6, 0xf5, - 0xb9, 0xf2, 0xb9, 0xf5, 0xb9, 0xf3, 0xba, 0xf5, 0xba, 0xf3, 0xba, 0xf5, - 0xba, 0xf3, 0xba, 0xf5, 0xba, 0xf3, 0xba, 0xf5, 0xbb, 0xf3, 0xba, 0xf5, - 0xbb, 0xf3, 0xba, 0xf5, 0xbb, 0xf3, 0xba, 0xf5, 0xbc, 0xf3, 0xba, 0xf5, - 0xbc, 0xf3, 0xba, 0xf5, 0xbc, 0xf3, 0xba, 0xf5, 0xbd, 0xf3, 0xbd, 0xf5, - 0xbd, 0xf4, 0xbd, 0xf5, 0xbd, 0xf4, 0xbe, 0xf5, 0xbe, 0xf4, 0xbd, 0xf5, - 0xbe, 0xf4, 0xbe, 0xf5, 0xbe, 0xf4, 0xbd, 0xf5, 0xbf, 0xf4, 0xbe, 0xf5, - 0xbf, 0xf4, 0xbd, 0xf5, 0xbf, 0xf4, 0xbe, 0xf5, 0xc0, 0xf4, 0xbd, 0xf5, - 0xc0, 0xf4, 0xbe, 0xf5, 0xc0, 0xf4, 0xc1, 0xf5, 0xc1, 0xf5, 0xc1, 0xf5, - 0xc1, 0xf5, 0xc1, 0xf5, 0xc1, 0xf5, 0xc1, 0xf5, 0xc1, 0xf5, 0xc1, 0xf5, - 0xc2, 0xf5, 0xc1, 0xf5, 0xc2, 0xf5, 0xc1, 0xf5, 0xc2, 0xf5, 0xc1, 0xf5, - 0xc3, 0xf5, 0xcb, 0xf5, 0xc3, 0xe8, 0xcb, 0xf5, 0xc3, 0xeb, 0xcb, 0xf5, - 0xc4, 0xe8, 0xcb, 0xf5, 0xc4, 0xeb, 0xcb, 0xf5, 0xc4, 0xe8, 0xcb, 0xf5, - 0xc5, 0xeb, 0xcb, 0xf5, 0xc5, 0xe8, 0xcb, 0xf5, 0xc5, 0xeb, 0xcb, 0xf5, - 0xc6, 0xe8, 0xcb, 0xf5, 0xc6, 0xeb, 0xcb, 0xf5, 0xc6, 0xe8, 0xcb, 0xf5, - 0xc6, 0xeb, 0xcb, 0xf5, 0xc7, 0xe8, 0xcb, 0xf5, 0xc7, 0xeb, 0xcb, 0xf5, - 0xc7, 0xe8, 0xcb, 0xf5, 0xc8, 0xeb, 0xcb, 0xf5, 0xc8, 0xe8, 0xcb, 0xf5, - 0xc8, 0xeb, 0xcb, 0xf5, 0xc9, 0xe8, 0xcb, 0xf5, 0xc9, 0xe8, 0xcb, 0xf5, - 0xc9, 0xe8, 0xcb, 0xf5, 0xc9, 0xe8, 0xcb, 0xf5, 0xca, 0xe8, 0xcb, 0xf5, - 0xca, 0xe8, 0xcb, 0xf5, 0xca, 0xe8, 0xcb, 0xf5, 0xcb, 0xe8, 0xcb, 0xf4, - 0xcb, 0xe8, 0xcb, 0xf5, 0xcb, 0xe8, 0xcc, 0xf4, 0xcb, 0xe8, 0xcc, 0xf5, - 0xcb, 0xe8, 0xcc, 0xf4, 0xcb, 0xe8, 0xcc, 0xf5, 0xcb, 0xe8, 0xcd, 0xf4, - 0xcb, 0xe8, 0xcd, 0xf5, 0xcb, 0xe8, 0xcd, 0xf4, 0xcb, 0xe8, 0xce, 0xf3, - 0xcb, 0xe8, 0xce, 0xf4, 0xcb, 0xe8, 0xce, 0xf3, 0xcb, 0xe8, 0xce, 0xf4, - 0xcb, 0xe8, 0xcf, 0xf3, 0xcb, 0xe8, 0xcf, 0xf4, 0xcb, 0xe8, 0xcf, 0xf3, - 0xcb, 0xe8, 0xd0, 0xf4, 0xcb, 0xe8, 0xd0, 0xf3, 0xcb, 0xe8, 0xd0, 0xf4, - 0xcb, 0xe8, 0xd0, 0xf3, 0xcb, 0xe8, 0xd1, 0xf4, 0xcb, 0xe8, 0xd1, 0xf3, - 0xcb, 0xe8, 0xd1, 0xf4, 0xcb, 0xe8, 0xd2, 0xf3, 0xcb, 0xe8, 0xd2, 0xf4, - 0xcb, 0xe8, 0xd2, 0xf3, 0xcb, 0xe8, 0xd2, 0xf4, 0xcb, 0xe8, 0xd3, 0xf3, - 0xcb, 0xe8, 0xd3, 0xf4, 0xcb, 0xe8, 0xd3, 0xf3, 0xcb, 0xe8, 0xd4, 0xf4, - 0xcb, 0xe8, 0xd4, 0xf3, 0xcb, 0xe8, 0xd4, 0xf4, 0xcb, 0xe8, 0xd4, 0xf3, - 0xcb, 0xe8, 0xd5, 0xf4, 0xcb, 0xe8, 0xd5, 0xf3, 0xcb, 0xe8, 0xd5, 0xfc, - 0xd4, 0xe8, 0xd6, 0xfc, 0xd1, 0xe8, 0xd6, 0xfc, 0xd4, 0xe8, 0xd6, 0xfd, - 0xd6, 0xe8, 0xd6, 0xfc, 0xd4, 0xe8, 0xd7, 0xfd, 0xd7, 0xe8, 0xd7, 0xfc, - 0xd4, 0xe8, 0xd7, 0xfd, 0xd7, 0xe8, 0xd7, 0xfc, 0xd4, 0xe8, 0xd8, 0xfd, - 0xd7, 0xe8, 0xd8, 0xfd, 0xd7, 0xe8, 0xd8, 0xfd, 0xd7, 0xe8, 0xd9, 0xfd, - 0xd7, 0xe8, 0xd9, 0xfd, 0xd7, 0xe8, 0xd9, 0xfd, 0xd7, 0xe8, 0xd9, 0xfd, - 0xd7, 0xe8, 0xda, 0xfd, 0xd7, 0xe8, 0xda, 0xfd, 0xd7, 0xe8, 0xda, 0xf7, - 0xe4, 0xe8, 0xda, 0xf6, 0xe4, 0xe8, 0xdb, 0xf7, 0xe4, 0xe8, 0xdb, 0xf6, - 0xe4, 0xe8, 0xdb, 0xf7, 0xe4, 0xe8, 0xdb, 0xf6, 0xe4, 0xe8, 0xdc, 0xf7, - 0xe4, 0xe8, 0xdc, 0xf6, 0xe4, 0xe8, 0xdc, 0xf7, 0xe4, 0xe8, 0xdd, 0xf6, - 0xe4, 0xe8, 0xdd, 0xf7, 0xe4, 0xe8, 0xdd, 0xf6, 0xe4, 0xe8, 0xdd, 0xf7, - 0xe4, 0xe8, 0xde, 0xf6, 0xe4, 0xe8, 0xde, 0xf5, 0xe4, 0xe8, 0xde, 0xf6, - 0xe4, 0xe8, 0xde, 0xf5, 0xe4, 0xe8, 0xdf, 0xf6, 0xe4, 0xe8, 0xdf, 0xf5, - 0xe4, 0xe8, 0xdf, 0xf6, 0xe4, 0xe8, 0xdf, 0xf5, 0xe4, 0xe8, 0xe0, 0xf6, - 0xe4, 0xe8, 0xe0, 0xf5, 0xe4, 0xe8, 0xe0, 0xf6, 0xe4, 0xe8, 0xe1, 0xf5, - 0xe4, 0xe8, 0xe1, 0xf6, 0xe4, 0xe8, 0xe1, 0xf5, 0xe4, 0xe8, 0xe1, 0xf6, - 0xe4, 0xe8, 0xe2, 0xf5, 0xe4, 0xe8, 0xe2, 0xf6, 0xe4, 0xe8, 0xe2, 0xf5, - 0xe4, 0xe8, 0xe2, 0xf6, 0xe4, 0xe8, 0xe3, 0xf5, 0xe4, 0xe8, 0xe3, 0xf6, - 0xe4, 0xe8, 0xe3, 0xf5, 0xe4, 0xe8, 0xe3, 0xf5, 0xe4, 0xe8, 0xe4, 0xf5, - 0xe4, 0xe8, 0xe4, 0xf5, 0xe4, 0xe8, 0xe4, 0xf5, 0xe4, 0xe8, 0xe4, 0xf5, - 0xe4, 0xe8, 0xe4, 0xf5, 0xe5, 0xe8, 0xe4, 0xf5, 0xe5, 0xe8, 0xe6, 0xf5, - 0xe5, 0xe8, 0xe6, 0xf5, 0xe5, 0xe9, 0xe6, 0xf5, 0xe6, 0xe8, 0xe6, 0xf5, - 0xe6, 0xe8, 0xe6, 0xf5, 0xe6, 0xe8, 0xe6, 0xf5, 0xe6, 0xe8, 0xe7, 0xf5, - 0xe6, 0xe8, 0xe7, 0xf5, 0xe6, 0xe8, 0xe7, 0xf5, 0xe6, 0xe8, 0xe7, 0xf5, - 0xe6, 0xe8, 0xe8, 0xf5, 0xe6, 0xe8, 0xe8, 0xf5, 0xe6, 0xe8, 0xe8, 0xf3, - 0xe6, 0xe8, 0xe8, 0xf5, 0xe6, 0xe8, 0xe9, 0xf3, 0xe6, 0xe8, 0xe9, 0xf5, - 0xe6, 0xe8, 0xe9, 0xf3, 0xe6, 0xe8, 0xe9, 0xf5, 0xe6, 0xe8, 0xea, 0xf3, - 0xe6, 0xe8, 0xea, 0xf5, 0xe6, 0xe8, 0xea, 0xf3, 0xe6, 0xe8, 0xea, 0xf5, - 0xe6, 0xe8, 0xeb, 0xf3, 0xe6, 0xe8, 0xeb, 0xf5, 0xe6, 0xe8, 0xeb, 0xf6, - 0xef, 0xe8, 0xeb, 0xf5, 0xf0, 0xe8, 0xec, 0xf6, 0xef, 0xe8, 0xec, 0xf5, - 0xf0, 0xe8, 0xec, 0xf6, 0xef, 0xe8, 0xec, 0xf5, 0xf0, 0xe8, 0xec, 0xf6, - 0xef, 0xe8, 0xed, 0xf5, 0xf0, 0xe8, 0xed, 0xf6, 0xef, 0xe8, 0xed, 0xf5, - 0xf0, 0xe8, 0xed, 0xf6, 0xef, 0xe8, 0xee, 0xf5, 0xf0, 0xe8, 0xee, 0xf5, - 0xf0, 0xe8, 0xee, 0xf5, 0xf0, 0xe8, 0xee, 0xf5, 0xf0, 0xe8, 0xef, 0xf5, - 0xf0, 0xe8, 0xef, 0xf5, 0xf0, 0xe8, 0xef, 0xf5, 0xf0, 0xe8, 0xef, 0xf5, - 0xf0, 0xe8, 0xf0, 0xf5, 0xf0, 0xe7, 0xef, 0xf5, 0xf0, 0xe8, 0xf0, 0xf5, - 0xf0, 0xe8, 0xf0, 0xf5, 0xf0, 0xe8, 0xf1, 0xf5, 0xf0, 0xe8, 0xf1, 0xf5, - 0xf0, 0xe8, 0xf1, 0xf4, 0xf0, 0xe8, 0xf1, 0xf5, 0xf0, 0xe8, 0xf2, 0xf4, - 0xf0, 0xe8, 0xf2, 0xf5, 0xf0, 0xe8, 0xf2, 0xf4, 0xf0, 0xe8, 0xf2, 0xf5, - 0xf0, 0xe8, 0xf2, 0xf4, 0xf0, 0xe8, 0xf3, 0xf5, 0xf0, 0xe8, 0xf3, 0xf4, - 0xf0, 0xe8, 0xf3, 0xf5, 0xf0, 0xe8, 0xf3, 0xf4, 0xf0, 0xe8, 0xf4, 0xf5, - 0xf0, 0xe8, 0xf4, 0xf4, 0xf0, 0xe8, 0xf4, 0xf5, 0xf0, 0xe8, 0xf4, 0xf4, - 0xf0, 0xe8, 0xf5, 0xf5, 0xf0, 0xe8, 0xf5, 0xf4, 0xf0, 0xe8, 0xf5, 0xf5, - 0xf0, 0xe8, 0xf5, 0xf4, 0xf0, 0xe8, 0xf5, 0xf5, 0xf0, 0xe8, 0xf6, 0xf4, - 0xf0, 0xe8, 0xf6, 0xf2, 0xf0, 0xe8, 0xf6, 0xf4, 0xf0, 0xe8, 0xf6, 0xf2, - 0xf0, 0xe8, 0xf7, 0xf4, 0xf0, 0xe8, 0xf7, 0xf2, 0xf0, 0xe8, 0xf7, 0xf4, - 0xf0, 0xe8, 0xf7, 0xf2, 0xf0, 0xe8, 0xf8, 0xf4, 0xf0, 0xe8, 0xf8, 0xf2, - 0xf0, 0xe8, 0xf8, 0xf4, 0xf0, 0xe8, 0xf8, 0xf2, 0xf0, 0xe8, 0xf8, 0xf4, - 0xf0, 0xe8, 0xf9, 0xf2, 0xf0, 0xe8, 0xf9, 0xf4, 0xf0, 0xe8, 0xf9, 0xf2, - 0xf0, 0xe8, 0xf9, 0xf4, 0xf0, 0xe8, 0xfa, 0xf2, 0xf0, 0xe8, 0xfa, 0xf4, - 0xf0, 0xe8, 0xfa, 0xf2, 0xf0, 0xe8, 0xfa, 0xf2, 0xf0, 0xe8, 0xfa, 0xf2, - 0xf0, 0xe8, 0xfb, 0xf2, 0xf0, 0xe8, 0xfb, 0xf2, 0xf0, 0xe8, 0xfb, 0xf2, - 0xf0, 0xe8, 0xfb, 0xf2, 0xf0, 0xe8, 0xfc, 0xf2, 0xf0, 0xe8, 0xfc, 0xf2, - 0xf0, 0xe8, 0xfc, 0xf2, 0xf0, 0xe8, 0xfc, 0xf2, 0xf0, 0xe8, 0xfc, 0xf2, - 0xf0, 0xe8, 0xfd, 0xf2, 0xf0, 0xe8, 0xfd, 0xf2, 0xf0, 0xe8, 0xfd, 0xf2, - 0xf0, 0xe8, 0xfd, 0xf2, 0xf0, 0xe8, 0xfe, 0xf2, 0xf0, 0xe8, 0xfe, 0xf2, - 0xf0, 0xe8, 0xfe, 0xf2, 0xf0, 0xe8, 0xfe, 0xf2, 0xf0, 0xe8, 0xfe, 0xf2, - 0xf0, 0xe8, 0xff, 0xf2, 0xf0, 0xe8, 0xff, 0xf2, 0xf0, 0xe8, 0x03, 0xf4, - 0x83, 0xe9, 0x0a, 0xf4, 0x83, 0xe9, 0x0f, 0xf4, 0x83, 0xe9, 0x14, 0xf4, - 0x83, 0xe9, 0x17, 0xf4, 0x83, 0xe9, 0x1b, 0xf4, 0x83, 0xe9, 0x1e, 0xf4, - 0x83, 0xe9, 0x20, 0xf4, 0x83, 0xe9, 0x23, 0xf4, 0x83, 0xe9, 0x25, 0xf4, - 0x83, 0xe9, 0x27, 0xf4, 0x83, 0xe9, 0x29, 0xf4, 0x83, 0xe9, 0x2b, 0xf4, - 0x83, 0xe9, 0x2d, 0xf4, 0x83, 0xe9, 0x2f, 0xf4, 0x83, 0xe9, 0x31, 0xf4, - 0x83, 0xe9, 0x32, 0xf4, 0x83, 0xe9, 0x34, 0xf4, 0x83, 0xe9, 0x35, 0xf4, - 0x83, 0xe9, 0x37, 0xf4, 0x83, 0xe9, 0x38, 0xf4, 0x83, 0xe9, 0x3a, 0xf4, - 0x83, 0xe9, 0x3b, 0xf4, 0x83, 0xe9, 0x3c, 0xf4, 0x83, 0xe9, 0x3e, 0xf4, - 0x83, 0xe9, 0x3f, 0xf4, 0x83, 0xe9, 0x40, 0xf4, 0x83, 0xe9, 0x42, 0xf4, - 0x83, 0xe9, 0x43, 0xf4, 0x83, 0xe9, 0x44, 0xf4, 0x83, 0xe9, 0x45, 0xf4, - 0x83, 0xe9, 0x46, 0xf4, 0x83, 0xe9, 0x47, 0xf4, 0x83, 0xe9, 0x48, 0xf4, - 0x83, 0xe9, 0x49, 0xf4, 0x83, 0xe9, 0x4a, 0xf4, 0x83, 0xe9, 0x4b, 0xf4, - 0x83, 0xe9, 0x4c, 0xf4, 0x83, 0xe9, 0x4d, 0xf4, 0x83, 0xe9, 0x4e, 0xf4, - 0x83, 0xe9, 0x4f, 0xf4, 0x83, 0xe9, 0x50, 0xf4, 0x83, 0xe9, 0x51, 0xf4, - 0x83, 0xe9, 0x52, 0xf4, 0x83, 0xe9, 0x53, 0xf4, 0x83, 0xe9, 0x54, 0xf4, - 0x83, 0xe9, 0x55, 0xf4, 0x83, 0xe9, 0x56, 0xf4, 0x83, 0xe9, 0x57, 0xf4, - 0x83, 0xe9, 0x58, 0xf4, 0x83, 0xe9, 0x58, 0xf4, 0x83, 0xe9, 0x59, 0xf4, - 0x83, 0xe9, 0x5a, 0xf4, 0x83, 0xe9, 0x5b, 0xf4, 0x83, 0xe9, 0x5c, 0xf4, - 0x83, 0xe9, 0x5d, 0xf4, 0x83, 0xe9, 0x5d, 0xf4, 0x83, 0xe9, 0x5e, 0xf4, - 0x83, 0xe9, 0x5f, 0xf4, 0x83, 0xe9, 0x60, 0xf4, 0x83, 0xe9, 0x60, 0xf4, - 0x83, 0xe9, 0x61, 0xf4, 0x83, 0xe9, 0x62, 0xf4, 0x83, 0xe9, 0x63, 0xf4, - 0x83, 0xe9, 0x63, 0xf4, 0x83, 0xe9, 0x64, 0xf4, 0x83, 0xe9, 0x65, 0xf4, - 0x83, 0xe9, 0x66, 0xf4, 0x83, 0xe9, 0x66, 0xf4, 0x83, 0xe9, 0x67, 0xf4, - 0x83, 0xe9, 0x68, 0xf4, 0x83, 0xe9, 0x68, 0xf4, 0x83, 0xe9, 0x69, 0xf4, - 0x83, 0xe9, 0x6a, 0xf4, 0x83, 0xe9, 0x6a, 0xf4, 0x83, 0xe9, 0x6b, 0xf4, - 0x83, 0xe9, 0x6c, 0xf4, 0x83, 0xe9, 0x6c, 0xf4, 0x83, 0xe9, 0x6d, 0xf4, - 0x83, 0xe9, 0x6e, 0xf4, 0x83, 0xe9, 0x6e, 0xf4, 0x83, 0xe9, 0x6f, 0xf4, - 0x83, 0xe9, 0x70, 0xf4, 0x83, 0xe9, 0x70, 0xf4, 0x83, 0xe9, 0x71, 0xf4, - 0x83, 0xe9, 0x72, 0xf4, 0x83, 0xe9, 0x72, 0xf4, 0x83, 0xe9, 0x73, 0xf4, - 0x83, 0xe9, 0x73, 0xf4, 0x83, 0xe9, 0x74, 0xf4, 0x83, 0xe9, 0x75, 0xf4, - 0x83, 0xe9, 0x75, 0xf4, 0x83, 0xe9, 0x76, 0xf4, 0x83, 0xe9, 0x76, 0xf4, - 0x83, 0xe9, 0x77, 0xf4, 0x83, 0xe9, 0x78, 0xf4, 0x83, 0xe9, 0x78, 0xf4, - 0x83, 0xe9, 0x79, 0xf4, 0x83, 0xe9, 0x79, 0xf4, 0x83, 0xe9, 0x7a, 0xf4, - 0x83, 0xe9, 0x7a, 0xf4, 0x83, 0xe9, 0x7b, 0xf4, 0x83, 0xe9, 0x7c, 0xf4, - 0x83, 0xe9, 0x7c, 0xf4, 0x83, 0xe9, 0x7d, 0xf4, 0x83, 0xe9, 0x7d, 0xf4, - 0x83, 0xe9, 0x7e, 0xf4, 0x83, 0xe9, 0x7e, 0xf4, 0x83, 0xe9, 0x7f, 0xf4, - 0x83, 0xe9, 0x7f, 0xf4, 0x83, 0xe9, 0x80, 0xf4, 0x83, 0xe9, 0x81, 0xf4, - 0x83, 0xe9, 0x81, 0xf4, 0x83, 0xe9, 0x82, 0xf4, 0x83, 0xe9, 0x82, 0xf4, - 0x83, 0xe9, 0x83, 0xf4, 0x83, 0xe9, 0x83, 0xf4, 0x83, 0xe9, 0x84, 0xf4, - 0x84, 0xe9, 0x84, 0xf4, 0x84, 0xe9, 0x85, 0xf4, 0x85, 0xe9, 0x85, 0xf4, - 0x85, 0xe9, 0x86, 0xf4, 0x86, 0xe9, 0x86, 0xf4, 0x86, 0xe9, 0x87, 0xf5, - 0x88, 0xe9, 0x87, 0xf5, 0x88, 0xe9, 0x88, 0xf5, 0x88, 0xe9, 0x88, 0xf5, - 0x88, 0xe9, 0x89, 0xf5, 0x89, 0xe9, 0x89, 0xf5, 0x89, 0xe9, 0x8a, 0xf5, - 0x8a, 0xe9, 0x8a, 0xf5, 0x8a, 0xe9, 0x8b, 0xf5, 0x8b, 0xe9, 0x8b, 0xf5, - 0x8b, 0xe9, 0x8c, 0xf5, 0x8c, 0xe9, 0x8c, 0xf5, 0x8c, 0xe9, 0x8d, 0xf5, - 0x8d, 0xe9, 0x8d, 0xf5, 0x8d, 0xea, 0x8e, 0xf5, 0x8e, 0xea, 0x8e, 0xf5, - 0x8e, 0xea, 0x8e, 0xf5, 0x8e, 0xea, 0x8f, 0xf5, 0x8f, 0xea, 0x8f, 0xf5, - 0x8f, 0xea, 0x90, 0xf5, 0x90, 0xea, 0x90, 0xf5, 0x90, 0xea, 0x91, 0xf5, - 0x91, 0xea, 0x91, 0xf5, 0x91, 0xea, 0x92, 0xf5, 0x92, 0xea, 0x91, 0xf5, - 0x92, 0xea, 0x92, 0xf5, 0x93, 0xea, 0x93, 0xf5, 0x93, 0xeb, 0x94, 0xf5, - 0x94, 0xeb, 0x94, 0xf5, 0x94, 0xeb, 0x94, 0xf5, 0x94, 0xeb, 0x95, 0xf5, - 0x95, 0xeb, 0x95, 0xf5, 0x95, 0xeb, 0x96, 0xf5, 0x96, 0xeb, 0x96, 0xf5, - 0x96, 0xeb, 0x97, 0xf5, 0x97, 0xeb, 0x96, 0xf5, 0x97, 0xeb, 0x97, 0xf5, - 0x98, 0xeb, 0x96, 0xf5, 0x98, 0xeb, 0x97, 0xf5, 0x98, 0xeb, 0x99, 0xf5, - 0x99, 0xec, 0x99, 0xf5, 0x99, 0xec, 0x9a, 0xf5, 0x9a, 0xec, 0x9a, 0xf5, - 0x9a, 0xec, 0x9a, 0xf5, 0x9a, 0xec, 0x9b, 0xf5, 0x9b, 0xec, 0x9b, 0xf5, - 0x9b, 0xec, 0x9b, 0xf5, 0x9c, 0xec, 0x9b, 0xf5, 0x9c, 0xec, 0x9b, 0xf5, - 0x9d, 0xec, 0x9b, 0xf5, 0x9d, 0xec, 0x9d, 0xf5, 0x9d, 0xed, 0x9e, 0xf5, - 0x9e, 0xed, 0x9e, 0xf5, 0x9e, 0xed, 0x9f, 0xf5, 0x9f, 0xed, 0x9f, 0xf5, - 0x9f, 0xed, 0x9f, 0xf5, 0x9f, 0xed, 0xa0, 0xf5, 0xa0, 0xed, 0x9f, 0xf5, - 0xa0, 0xed, 0xa0, 0xf5, 0xa1, 0xed, 0x9f, 0xf5, 0xa1, 0xed, 0xa0, 0xf5, - 0xa1, 0xed, 0xa2, 0xf5, 0xa2, 0xee, 0xa2, 0xf5, 0xa2, 0xee, 0xa3, 0xf5, - 0xa3, 0xee, 0xa3, 0xf5, 0xa3, 0xee, 0xa3, 0xf5, 0xa3, 0xee, 0xa4, 0xf5, - 0xa4, 0xee, 0xa4, 0xf5, 0xa4, 0xee, 0xa4, 0xf5, 0xa5, 0xee, 0xa4, 0xf5, - 0xa5, 0xee, 0xa4, 0xf5, 0xa5, 0xee, 0xa4, 0xf5, 0xa6, 0xee, 0xa4, 0xf5, - 0xa6, 0xee, 0xa4, 0xf5, 0xa6, 0xee, 0xa7, 0xf5, 0xa7, 0xef, 0xa7, 0xf5, - 0xa7, 0xef, 0xa8, 0xf5, 0xa8, 0xef, 0xa8, 0xf5, 0xa8, 0xef, 0xa8, 0xf5, - 0xa8, 0xef, 0xa8, 0xf5, 0xa9, 0xef, 0xa8, 0xf5, 0xa9, 0xef, 0xa8, 0xf5, - 0xaa, 0xef, 0xa8, 0xf5, 0xaa, 0xef, 0xa8, 0xf5, 0xaa, 0xef, 0xa8, 0xf5, - 0xab, 0xef, 0xab, 0xf5, 0xab, 0xf0, 0xab, 0xf5, 0xab, 0xf0, 0xac, 0xf5, - 0xac, 0xf0, 0xac, 0xf5, 0xac, 0xf0, 0xac, 0xf5, 0xac, 0xf0, 0xac, 0xf5, - 0xad, 0xf0, 0xac, 0xf5, 0xad, 0xf0, 0xac, 0xf5, 0xae, 0xf0, 0xac, 0xf5, - 0xae, 0xf0, 0xac, 0xf5, 0xae, 0xf0, 0xac, 0xf5, 0xaf, 0xf0, 0xaf, 0xf5, - 0xaf, 0xf1, 0xaf, 0xf5, 0xaf, 0xf1, 0xb0, 0xf5, 0xb0, 0xf1, 0xb0, 0xf5, - 0xb0, 0xf1, 0xb0, 0xf5, 0xb0, 0xf1, 0xb0, 0xf5, 0xb1, 0xf1, 0xb0, 0xf5, - 0xb1, 0xf1, 0xb0, 0xf5, 0xb2, 0xf1, 0xb0, 0xf5, 0xb2, 0xf1, 0xb0, 0xf5, - 0xb2, 0xf1, 0xb0, 0xf5, 0xb3, 0xf1, 0xb0, 0xf5, 0xb3, 0xf1, 0xb0, 0xf5, - 0xb3, 0xf1, 0xb4, 0xf5, 0xb4, 0xf2, 0xb4, 0xf5, 0xb4, 0xf2, 0xb4, 0xf5, - 0xb4, 0xf2, 0xb4, 0xf5, 0xb5, 0xf2, 0xb4, 0xf5, 0xb5, 0xf2, 0xb4, 0xf5, - 0xb5, 0xf2, 0xb4, 0xf5, 0xb6, 0xf2, 0xb4, 0xf5, 0xb6, 0xf2, 0xb4, 0xf5, - 0xb6, 0xf2, 0xb4, 0xf5, 0xb7, 0xf2, 0xb4, 0xf5, 0xb7, 0xf2, 0xb7, 0xf5, - 0xb7, 0xf3, 0xb8, 0xf5, 0xb8, 0xf3, 0xb8, 0xf5, 0xb8, 0xf3, 0xb8, 0xf5, - 0xb8, 0xf3, 0xb8, 0xf5, 0xb9, 0xf3, 0xb8, 0xf5, 0xb9, 0xf3, 0xb8, 0xf5, - 0xb9, 0xf3, 0xb8, 0xf5, 0xba, 0xf3, 0xb8, 0xf5, 0xba, 0xf3, 0xb8, 0xf5, - 0xba, 0xf3, 0xb8, 0xf5, 0xbb, 0xf3, 0xbb, 0xf5, 0xbb, 0xf4, 0xbb, 0xf5, - 0xbb, 0xf4, 0xbc, 0xf5, 0xbc, 0xf4, 0xbb, 0xf5, 0xbc, 0xf4, 0xbc, 0xf5, - 0xbc, 0xf4, 0xbb, 0xf5, 0xbd, 0xf4, 0xbc, 0xf5, 0xbd, 0xf4, 0xbb, 0xf5, - 0xbd, 0xf4, 0xbc, 0xf5, 0xbe, 0xf4, 0xbb, 0xf5, 0xbe, 0xf4, 0xbc, 0xf5, - 0xbe, 0xf4, 0xbf, 0xf5, 0xbf, 0xf5, 0xbf, 0xf5, 0xbf, 0xf5, 0xbf, 0xf5, - 0xbf, 0xf5, 0xbf, 0xf5, 0xc0, 0xf5, 0xbf, 0xf5, 0xc0, 0xf5, 0xbf, 0xf5, - 0xc0, 0xf5, 0xbf, 0xf5, 0xc1, 0xf5, 0xbf, 0xf5, 0xc1, 0xf5, 0xbf, 0xf5, - 0xc1, 0xf5, 0xbf, 0xf5, 0xc1, 0xf5, 0xbf, 0xf5, 0xc2, 0xf5, 0xc2, 0xf5, - 0xc2, 0xf6, 0xc2, 0xf5, 0xc2, 0xf6, 0xc3, 0xf5, 0xc3, 0xf6, 0xca, 0xf5, - 0xc3, 0xee, 0xcb, 0xf5, 0xc3, 0xeb, 0xcb, 0xf5, 0xc4, 0xe9, 0xcb, 0xf5, - 0xc4, 0xeb, 0xcb, 0xf5, 0xc4, 0xe9, 0xcb, 0xf5, 0xc5, 0xeb, 0xcb, 0xf5, - 0xc5, 0xe9, 0xcb, 0xf5, 0xc5, 0xeb, 0xcb, 0xf5, 0xc6, 0xe9, 0xcb, 0xf5, - 0xc6, 0xeb, 0xcb, 0xf5, 0xc6, 0xe9, 0xcb, 0xf5, 0xc6, 0xeb, 0xcb, 0xf5, - 0xc7, 0xe9, 0xcb, 0xf5, 0xc7, 0xeb, 0xcb, 0xf5, 0xc7, 0xe9, 0xcb, 0xf5, - 0xc8, 0xeb, 0xcb, 0xf5, 0xc8, 0xe9, 0xcb, 0xf5, 0xc8, 0xeb, 0xcb, 0xf5, - 0xc9, 0xe9, 0xcb, 0xf5, 0xc9, 0xeb, 0xcb, 0xf5, 0xc9, 0xe9, 0xcb, 0xf5, - 0xc9, 0xeb, 0xcb, 0xf5, 0xca, 0xe9, 0xcb, 0xf5, 0xca, 0xe9, 0xcb, 0xf5, - 0xca, 0xe9, 0xcb, 0xf5, 0xcb, 0xe9, 0xcb, 0xf5, 0xcb, 0xe9, 0xcb, 0xf5, - 0xcb, 0xe9, 0xcc, 0xf5, 0xcb, 0xe9, 0xcc, 0xf5, 0xcb, 0xe9, 0xcc, 0xf5, - 0xcb, 0xe9, 0xcc, 0xf5, 0xcb, 0xe9, 0xcd, 0xf5, 0xcb, 0xe9, 0xcd, 0xf5, - 0xcb, 0xe9, 0xcd, 0xf5, 0xcb, 0xe9, 0xce, 0xf5, 0xcb, 0xe9, 0xce, 0xf5, - 0xcb, 0xe9, 0xce, 0xf5, 0xcb, 0xe9, 0xce, 0xf5, 0xcb, 0xe9, 0xcf, 0xf5, - 0xcb, 0xe9, 0xcf, 0xf5, 0xcb, 0xe9, 0xcf, 0xf5, 0xcb, 0xe9, 0xd0, 0xf5, - 0xcb, 0xe9, 0xd0, 0xf3, 0xcb, 0xe9, 0xd0, 0xf5, 0xcb, 0xe9, 0xd0, 0xf3, - 0xcb, 0xe9, 0xd1, 0xf5, 0xcb, 0xe9, 0xd1, 0xf3, 0xcb, 0xe9, 0xd1, 0xf5, - 0xcb, 0xe9, 0xd2, 0xf3, 0xcb, 0xe9, 0xd2, 0xf5, 0xcb, 0xe9, 0xd2, 0xf3, - 0xcb, 0xe9, 0xd2, 0xf5, 0xcb, 0xe9, 0xd3, 0xf3, 0xcb, 0xe9, 0xd3, 0xf5, - 0xcb, 0xe9, 0xd3, 0xf3, 0xcb, 0xe9, 0xd4, 0xf5, 0xcb, 0xe9, 0xd4, 0xf3, - 0xcb, 0xe9, 0xd4, 0xf5, 0xcb, 0xe9, 0xd4, 0xf3, 0xcb, 0xe9, 0xd5, 0xfd, - 0xd5, 0xe9, 0xd5, 0xfd, 0xd5, 0xe9, 0xd5, 0xfd, 0xd5, 0xe9, 0xd6, 0xfd, - 0xd6, 0xe9, 0xd6, 0xfd, 0xd6, 0xe9, 0xd6, 0xfd, 0xd6, 0xe9, 0xd6, 0xfd, - 0xd6, 0xe9, 0xd7, 0xfd, 0xd6, 0xe9, 0xd7, 0xfd, 0xd6, 0xe9, 0xd7, 0xfd, - 0xd6, 0xe9, 0xd7, 0xfd, 0xd6, 0xe9, 0xd8, 0xfd, 0xd6, 0xe9, 0xd8, 0xfd, - 0xd6, 0xe9, 0xd8, 0xfd, 0xd6, 0xe9, 0xd9, 0xfd, 0xd6, 0xe9, 0xd9, 0xfd, - 0xd9, 0xe9, 0xd9, 0xfd, 0xd6, 0xe9, 0xd9, 0xfd, 0xd9, 0xe9, 0xda, 0xfd, - 0xd9, 0xe9, 0xda, 0xfd, 0xd9, 0xe9, 0xda, 0xfd, 0xd9, 0xe9, 0xda, 0xf6, - 0xe4, 0xe9, 0xdb, 0xf7, 0xe4, 0xe9, 0xdb, 0xf6, 0xe4, 0xe9, 0xdb, 0xf7, - 0xe4, 0xe9, 0xdb, 0xf6, 0xe4, 0xe9, 0xdc, 0xf7, 0xe4, 0xe9, 0xdc, 0xf6, - 0xe4, 0xe9, 0xdc, 0xf7, 0xe4, 0xe9, 0xdd, 0xf6, 0xe4, 0xe9, 0xdd, 0xf7, - 0xe4, 0xe9, 0xdd, 0xf6, 0xe4, 0xe9, 0xdd, 0xf7, 0xe4, 0xe9, 0xde, 0xf6, - 0xe4, 0xe9, 0xde, 0xf7, 0xe4, 0xe9, 0xde, 0xf6, 0xe4, 0xe9, 0xde, 0xf7, - 0xe4, 0xe9, 0xdf, 0xf6, 0xe4, 0xe9, 0xdf, 0xf7, 0xe4, 0xe9, 0xdf, 0xf6, - 0xe4, 0xe9, 0xdf, 0xf7, 0xe4, 0xe9, 0xe0, 0xf6, 0xe4, 0xe9, 0xe0, 0xf5, - 0xe4, 0xe9, 0xe0, 0xf6, 0xe4, 0xe9, 0xe1, 0xf5, 0xe4, 0xe9, 0xe1, 0xf6, - 0xe4, 0xe9, 0xe1, 0xf5, 0xe4, 0xe9, 0xe1, 0xf6, 0xe4, 0xe9, 0xe2, 0xf5, - 0xe4, 0xe9, 0xe2, 0xf6, 0xe4, 0xe9, 0xe2, 0xf5, 0xe4, 0xe9, 0xe2, 0xf6, - 0xe4, 0xe9, 0xe3, 0xf5, 0xe4, 0xe9, 0xe3, 0xf6, 0xe4, 0xe9, 0xe3, 0xf5, - 0xe4, 0xe9, 0xe3, 0xf5, 0xe4, 0xe9, 0xe4, 0xf5, 0xe4, 0xe9, 0xe4, 0xf5, - 0xe4, 0xe9, 0xe4, 0xf5, 0xe4, 0xe9, 0xe4, 0xf5, 0xe4, 0xe9, 0xe4, 0xf5, - 0xe5, 0xe9, 0xe4, 0xf5, 0xe5, 0xe9, 0xe6, 0xf5, 0xe5, 0xe9, 0xe6, 0xf5, - 0xe5, 0xea, 0xe6, 0xf5, 0xe6, 0xe9, 0xe6, 0xf5, 0xe6, 0xe9, 0xe6, 0xf5, - 0xe6, 0xe9, 0xe6, 0xf5, 0xe6, 0xe9, 0xe7, 0xf5, 0xe6, 0xe9, 0xe7, 0xf5, - 0xe6, 0xe9, 0xe7, 0xf5, 0xe6, 0xe9, 0xe7, 0xf5, 0xe6, 0xe9, 0xe8, 0xf5, - 0xe6, 0xe9, 0xe8, 0xf5, 0xe6, 0xe9, 0xe8, 0xf4, 0xe6, 0xe9, 0xe8, 0xf5, - 0xe6, 0xe9, 0xe9, 0xf4, 0xe6, 0xe9, 0xe9, 0xf5, 0xe6, 0xe9, 0xe9, 0xf4, - 0xe6, 0xe9, 0xe9, 0xf5, 0xe6, 0xe9, 0xea, 0xf4, 0xe6, 0xe9, 0xea, 0xf5, - 0xe6, 0xe9, 0xea, 0xf4, 0xe6, 0xe9, 0xea, 0xf5, 0xe6, 0xe9, 0xeb, 0xf4, - 0xe6, 0xe9, 0xeb, 0xf5, 0xe6, 0xe9, 0xeb, 0xf6, 0xef, 0xe9, 0xeb, 0xf5, - 0xf0, 0xe9, 0xec, 0xf6, 0xef, 0xe9, 0xec, 0xf5, 0xf0, 0xe9, 0xec, 0xf6, - 0xef, 0xe9, 0xec, 0xf5, 0xf0, 0xe9, 0xec, 0xf6, 0xef, 0xe9, 0xed, 0xf5, - 0xf0, 0xe9, 0xed, 0xf6, 0xef, 0xe9, 0xed, 0xf5, 0xf0, 0xe9, 0xed, 0xf6, - 0xef, 0xe9, 0xee, 0xf5, 0xf0, 0xe9, 0xee, 0xf6, 0xef, 0xe9, 0xee, 0xf5, - 0xf0, 0xe9, 0xee, 0xf6, 0xef, 0xe9, 0xef, 0xf5, 0xf0, 0xe9, 0xef, 0xf5, - 0xf0, 0xe9, 0xef, 0xf5, 0xf0, 0xe9, 0xef, 0xf5, 0xf0, 0xe9, 0xef, 0xf5, - 0xf0, 0xe9, 0xef, 0xf5, 0xf0, 0xe9, 0xf0, 0xf5, 0xf0, 0xe9, 0xf0, 0xf5, - 0xf0, 0xe9, 0xf1, 0xf5, 0xf0, 0xe9, 0xf1, 0xf5, 0xf0, 0xe9, 0xf1, 0xf5, - 0xf0, 0xe9, 0xf1, 0xf5, 0xf0, 0xe9, 0xf2, 0xf5, 0xf0, 0xe9, 0xf2, 0xf5, - 0xf0, 0xe9, 0xf2, 0xf4, 0xf0, 0xe9, 0xf2, 0xf5, 0xf0, 0xe9, 0xf2, 0xf4, - 0xf0, 0xe9, 0xf3, 0xf5, 0xf0, 0xe9, 0xf3, 0xf4, 0xf0, 0xe9, 0xf3, 0xf5, - 0xf0, 0xe9, 0xf3, 0xf4, 0xf0, 0xe9, 0xf4, 0xf5, 0xf0, 0xe9, 0xf4, 0xf4, - 0xf0, 0xe9, 0xf4, 0xf5, 0xf0, 0xe9, 0xf4, 0xf4, 0xf0, 0xe9, 0xf5, 0xf5, - 0xf0, 0xe9, 0xf5, 0xf4, 0xf0, 0xe9, 0xf5, 0xf5, 0xf0, 0xe9, 0xf5, 0xf4, - 0xf0, 0xe9, 0xf5, 0xf5, 0xf0, 0xe9, 0xf6, 0xf4, 0xf0, 0xe9, 0xf6, 0xf5, - 0xf0, 0xe9, 0xf6, 0xf4, 0xf0, 0xe9, 0xf6, 0xf5, 0xf0, 0xe9, 0xf7, 0xf4, - 0xf0, 0xe9, 0xf7, 0xf5, 0xf0, 0xe9, 0xf7, 0xf4, 0xf0, 0xe9, 0xf7, 0xf5, - 0xf0, 0xe9, 0xf8, 0xf4, 0xf0, 0xe9, 0xf8, 0xf5, 0xf0, 0xe9, 0xf8, 0xf4, - 0xf0, 0xe9, 0xf8, 0xf5, 0xf0, 0xe9, 0xf8, 0xf4, 0xf0, 0xe9, 0xf9, 0xf2, - 0xf0, 0xe9, 0xf9, 0xf4, 0xf0, 0xe9, 0xf9, 0xf2, 0xf0, 0xe9, 0xf9, 0xf4, - 0xf0, 0xe9, 0xfa, 0xf2, 0xf0, 0xe9, 0xfa, 0xf4, 0xf0, 0xe9, 0xfa, 0xf2, - 0xf0, 0xe9, 0xfa, 0xf4, 0xf0, 0xe9, 0xfa, 0xf2, 0xf0, 0xe9, 0xfb, 0xf4, - 0xf0, 0xe9, 0xfb, 0xf2, 0xf0, 0xe9, 0xfb, 0xf4, 0xf0, 0xe9, 0xfb, 0xf2, - 0xf0, 0xe9, 0xfc, 0xf4, 0xf0, 0xe9, 0xfc, 0xf2, 0xf0, 0xe9, 0xfc, 0xf4, - 0xf0, 0xe9, 0xfc, 0xf2, 0xf0, 0xe9, 0xfc, 0xf4, 0xf0, 0xe9, 0xfd, 0xf2, - 0xf0, 0xe9, 0xfd, 0xf2, 0xf0, 0xe9, 0xfd, 0xf2, 0xf0, 0xe9, 0xfd, 0xf2, - 0xf0, 0xe9, 0xfe, 0xf2, 0xf0, 0xe9, 0xfe, 0xf2, 0xf0, 0xe9, 0xfe, 0xf2, - 0xf0, 0xe9, 0xfe, 0xf2, 0xf0, 0xe9, 0xfe, 0xf2, 0xf0, 0xe9, 0xff, 0xf2, - 0xf0, 0xe9, 0xff, 0xf2, 0xf0, 0xe9, 0x03, 0xf4, 0x83, 0xe9, 0x0a, 0xf4, - 0x83, 0xe9, 0x0f, 0xf4, 0x83, 0xe9, 0x14, 0xf4, 0x83, 0xe9, 0x17, 0xf4, - 0x83, 0xe9, 0x1b, 0xf4, 0x83, 0xe9, 0x1e, 0xf4, 0x83, 0xe9, 0x20, 0xf4, - 0x83, 0xe9, 0x23, 0xf4, 0x83, 0xe9, 0x25, 0xf4, 0x83, 0xe9, 0x27, 0xf4, - 0x83, 0xe9, 0x29, 0xf4, 0x83, 0xe9, 0x2b, 0xf4, 0x83, 0xe9, 0x2d, 0xf4, - 0x83, 0xe9, 0x2f, 0xf4, 0x83, 0xe9, 0x31, 0xf4, 0x83, 0xe9, 0x32, 0xf4, - 0x83, 0xe9, 0x34, 0xf4, 0x83, 0xe9, 0x35, 0xf4, 0x83, 0xe9, 0x37, 0xf4, - 0x83, 0xe9, 0x38, 0xf4, 0x83, 0xe9, 0x3a, 0xf4, 0x83, 0xe9, 0x3b, 0xf4, - 0x83, 0xe9, 0x3c, 0xf4, 0x83, 0xe9, 0x3e, 0xf4, 0x83, 0xe9, 0x3f, 0xf4, - 0x83, 0xe9, 0x40, 0xf4, 0x83, 0xe9, 0x42, 0xf4, 0x83, 0xe9, 0x43, 0xf4, - 0x83, 0xe9, 0x44, 0xf4, 0x83, 0xe9, 0x45, 0xf4, 0x83, 0xe9, 0x46, 0xf4, - 0x83, 0xe9, 0x47, 0xf4, 0x83, 0xe9, 0x48, 0xf4, 0x83, 0xe9, 0x49, 0xf4, - 0x83, 0xe9, 0x4a, 0xf4, 0x83, 0xe9, 0x4b, 0xf4, 0x83, 0xe9, 0x4c, 0xf4, - 0x83, 0xe9, 0x4d, 0xf4, 0x83, 0xe9, 0x4e, 0xf4, 0x83, 0xe9, 0x4f, 0xf4, - 0x83, 0xe9, 0x50, 0xf4, 0x83, 0xe9, 0x51, 0xf4, 0x83, 0xe9, 0x52, 0xf4, - 0x83, 0xe9, 0x53, 0xf4, 0x83, 0xe9, 0x54, 0xf4, 0x83, 0xe9, 0x55, 0xf4, - 0x83, 0xe9, 0x56, 0xf4, 0x83, 0xe9, 0x57, 0xf4, 0x83, 0xe9, 0x58, 0xf4, - 0x83, 0xe9, 0x58, 0xf4, 0x83, 0xe9, 0x59, 0xf4, 0x83, 0xe9, 0x5a, 0xf4, - 0x83, 0xe9, 0x5b, 0xf4, 0x83, 0xe9, 0x5c, 0xf4, 0x83, 0xe9, 0x5d, 0xf4, - 0x83, 0xe9, 0x5d, 0xf4, 0x83, 0xe9, 0x5e, 0xf4, 0x83, 0xe9, 0x5f, 0xf4, - 0x83, 0xe9, 0x60, 0xf4, 0x83, 0xe9, 0x60, 0xf4, 0x83, 0xe9, 0x61, 0xf4, - 0x83, 0xe9, 0x62, 0xf4, 0x83, 0xe9, 0x63, 0xf4, 0x83, 0xe9, 0x63, 0xf4, - 0x83, 0xe9, 0x64, 0xf4, 0x83, 0xe9, 0x65, 0xf4, 0x83, 0xe9, 0x66, 0xf4, - 0x83, 0xe9, 0x66, 0xf4, 0x83, 0xe9, 0x67, 0xf4, 0x83, 0xe9, 0x68, 0xf4, - 0x83, 0xe9, 0x68, 0xf4, 0x83, 0xe9, 0x69, 0xf4, 0x83, 0xe9, 0x6a, 0xf4, - 0x83, 0xe9, 0x6a, 0xf4, 0x83, 0xe9, 0x6b, 0xf4, 0x83, 0xe9, 0x6c, 0xf4, - 0x83, 0xe9, 0x6c, 0xf4, 0x83, 0xe9, 0x6d, 0xf4, 0x83, 0xe9, 0x6e, 0xf4, - 0x83, 0xe9, 0x6e, 0xf4, 0x83, 0xe9, 0x6f, 0xf4, 0x83, 0xe9, 0x70, 0xf4, - 0x83, 0xe9, 0x70, 0xf4, 0x83, 0xe9, 0x71, 0xf4, 0x83, 0xe9, 0x72, 0xf4, - 0x83, 0xe9, 0x72, 0xf4, 0x83, 0xe9, 0x73, 0xf4, 0x83, 0xe9, 0x73, 0xf4, - 0x83, 0xe9, 0x74, 0xf4, 0x83, 0xe9, 0x75, 0xf4, 0x83, 0xe9, 0x75, 0xf4, - 0x83, 0xe9, 0x76, 0xf4, 0x83, 0xe9, 0x76, 0xf4, 0x83, 0xe9, 0x77, 0xf4, - 0x83, 0xe9, 0x78, 0xf4, 0x83, 0xe9, 0x78, 0xf4, 0x83, 0xe9, 0x79, 0xf4, - 0x83, 0xe9, 0x79, 0xf4, 0x83, 0xe9, 0x7a, 0xf4, 0x83, 0xe9, 0x7a, 0xf4, - 0x83, 0xe9, 0x7b, 0xf4, 0x83, 0xe9, 0x7c, 0xf4, 0x83, 0xe9, 0x7c, 0xf4, - 0x83, 0xe9, 0x7d, 0xf4, 0x83, 0xe9, 0x7d, 0xf4, 0x83, 0xe9, 0x7e, 0xf4, - 0x83, 0xe9, 0x7e, 0xf4, 0x83, 0xe9, 0x7f, 0xf4, 0x83, 0xe9, 0x7f, 0xf4, - 0x83, 0xe9, 0x80, 0xf4, 0x83, 0xe9, 0x81, 0xf4, 0x83, 0xe9, 0x81, 0xf4, - 0x83, 0xe9, 0x82, 0xf4, 0x83, 0xe9, 0x82, 0xf4, 0x83, 0xe9, 0x83, 0xf4, - 0x83, 0xe9, 0x83, 0xf4, 0x85, 0xe9, 0x84, 0xf4, 0x86, 0xe9, 0x84, 0xf4, - 0x85, 0xe9, 0x85, 0xf4, 0x86, 0xe9, 0x85, 0xf4, 0x85, 0xe9, 0x86, 0xf4, - 0x86, 0xe9, 0x86, 0xf4, 0x86, 0xe9, 0x87, 0xf4, 0x87, 0xe9, 0x87, 0xf4, - 0x87, 0xe9, 0x88, 0xf4, 0x88, 0xe9, 0x88, 0xf4, 0x88, 0xe9, 0x89, 0xf4, - 0x89, 0xe9, 0x89, 0xf4, 0x89, 0xe9, 0x8a, 0xf5, 0x8b, 0xe9, 0x8a, 0xf5, - 0x8b, 0xe9, 0x8b, 0xf5, 0x8b, 0xe9, 0x8b, 0xf5, 0x8b, 0xe9, 0x8c, 0xf5, - 0x8c, 0xe9, 0x8c, 0xf5, 0x8c, 0xe9, 0x8d, 0xf5, 0x8d, 0xe9, 0x8d, 0xf5, - 0x8d, 0xe9, 0x8e, 0xf5, 0x8e, 0xe9, 0x8e, 0xf5, 0x8e, 0xe9, 0x8e, 0xf5, - 0x8e, 0xe9, 0x8f, 0xf5, 0x8f, 0xe9, 0x8f, 0xf5, 0x8f, 0xe9, 0x90, 0xf5, - 0x90, 0xea, 0x90, 0xf5, 0x90, 0xea, 0x91, 0xf5, 0x91, 0xea, 0x91, 0xf5, - 0x91, 0xea, 0x92, 0xf5, 0x92, 0xea, 0x92, 0xf5, 0x92, 0xea, 0x93, 0xf5, - 0x93, 0xea, 0x93, 0xf5, 0x93, 0xea, 0x94, 0xf5, 0x94, 0xea, 0x94, 0xf5, - 0x94, 0xea, 0x94, 0xf5, 0x94, 0xea, 0x94, 0xf5, 0x95, 0xea, 0x94, 0xf5, - 0x95, 0xea, 0x96, 0xf5, 0x96, 0xeb, 0x96, 0xf5, 0x96, 0xeb, 0x97, 0xf5, - 0x97, 0xeb, 0x97, 0xf5, 0x97, 0xeb, 0x98, 0xf5, 0x98, 0xeb, 0x98, 0xf5, - 0x98, 0xeb, 0x98, 0xf5, 0x98, 0xeb, 0x99, 0xf5, 0x99, 0xeb, 0x99, 0xf5, - 0x99, 0xeb, 0x99, 0xf5, 0x9a, 0xeb, 0x99, 0xf5, 0x9a, 0xeb, 0x99, 0xf5, - 0x9a, 0xeb, 0x99, 0xf5, 0x9b, 0xeb, 0x9b, 0xf5, 0x9b, 0xec, 0x9c, 0xf5, - 0x9c, 0xec, 0x9c, 0xf5, 0x9c, 0xec, 0x9d, 0xf5, 0x9d, 0xec, 0x9d, 0xf5, - 0x9d, 0xec, 0x9d, 0xf5, 0x9d, 0xec, 0x9e, 0xf5, 0x9e, 0xec, 0x9d, 0xf5, - 0x9e, 0xec, 0x9e, 0xf5, 0x9f, 0xec, 0x9d, 0xf5, 0x9f, 0xec, 0x9e, 0xf5, - 0x9f, 0xec, 0xa0, 0xf5, 0xa0, 0xed, 0xa0, 0xf5, 0xa0, 0xed, 0xa1, 0xf5, - 0xa1, 0xed, 0xa1, 0xf5, 0xa1, 0xed, 0xa1, 0xf5, 0xa1, 0xed, 0xa2, 0xf5, - 0xa2, 0xed, 0xa2, 0xf5, 0xa2, 0xed, 0xa2, 0xf5, 0xa3, 0xed, 0xa2, 0xf5, - 0xa3, 0xed, 0xa2, 0xf5, 0xa3, 0xed, 0xa2, 0xf5, 0xa4, 0xed, 0xa4, 0xf5, - 0xa4, 0xee, 0xa5, 0xf5, 0xa5, 0xee, 0xa5, 0xf5, 0xa5, 0xee, 0xa5, 0xf5, - 0xa5, 0xee, 0xa6, 0xf5, 0xa6, 0xee, 0xa6, 0xf5, 0xa6, 0xee, 0xa6, 0xf5, - 0xa6, 0xee, 0xa6, 0xf5, 0xa7, 0xee, 0xa6, 0xf5, 0xa7, 0xee, 0xa6, 0xf5, - 0xa8, 0xee, 0xa6, 0xf5, 0xa8, 0xee, 0xa6, 0xf5, 0xa8, 0xee, 0xa6, 0xf5, - 0xa9, 0xee, 0xa9, 0xf5, 0xa9, 0xef, 0xaa, 0xf5, 0xaa, 0xef, 0xaa, 0xf5, - 0xaa, 0xef, 0xaa, 0xf5, 0xaa, 0xef, 0xab, 0xf5, 0xab, 0xef, 0xaa, 0xf5, - 0xab, 0xef, 0xab, 0xf5, 0xab, 0xef, 0xaa, 0xf5, 0xac, 0xef, 0xab, 0xf5, - 0xac, 0xef, 0xaa, 0xf5, 0xac, 0xef, 0xab, 0xf5, 0xad, 0xef, 0xad, 0xf5, - 0xad, 0xf0, 0xae, 0xf5, 0xae, 0xf0, 0xae, 0xf5, 0xae, 0xf0, 0xae, 0xf5, - 0xae, 0xf0, 0xaf, 0xf5, 0xaf, 0xf0, 0xae, 0xf5, 0xaf, 0xf0, 0xaf, 0xf5, - 0xaf, 0xf0, 0xae, 0xf5, 0xb0, 0xf0, 0xaf, 0xf5, 0xb0, 0xf0, 0xae, 0xf5, - 0xb0, 0xf0, 0xaf, 0xf5, 0xb1, 0xf0, 0xb1, 0xf5, 0xb1, 0xf1, 0xb2, 0xf5, - 0xb2, 0xf1, 0xb2, 0xf5, 0xb2, 0xf1, 0xb2, 0xf5, 0xb2, 0xf1, 0xb3, 0xf5, - 0xb3, 0xf1, 0xb2, 0xf5, 0xb3, 0xf1, 0xb3, 0xf5, 0xb3, 0xf1, 0xb2, 0xf5, - 0xb4, 0xf1, 0xb3, 0xf5, 0xb4, 0xf1, 0xb2, 0xf5, 0xb4, 0xf1, 0xb3, 0xf5, - 0xb5, 0xf1, 0xb2, 0xf5, 0xb5, 0xf1, 0xb3, 0xf5, 0xb5, 0xf1, 0xb6, 0xf5, - 0xb6, 0xf2, 0xb6, 0xf5, 0xb6, 0xf2, 0xb6, 0xf5, 0xb6, 0xf2, 0xb6, 0xf5, - 0xb7, 0xf2, 0xb6, 0xf5, 0xb7, 0xf2, 0xb6, 0xf5, 0xb7, 0xf2, 0xb6, 0xf5, - 0xb8, 0xf2, 0xb6, 0xf5, 0xb8, 0xf2, 0xb6, 0xf5, 0xb8, 0xf2, 0xb6, 0xf5, - 0xb9, 0xf2, 0xb6, 0xf5, 0xb9, 0xf2, 0xb9, 0xf5, 0xb9, 0xf3, 0xba, 0xf5, - 0xba, 0xf3, 0xba, 0xf5, 0xba, 0xf3, 0xba, 0xf5, 0xba, 0xf3, 0xba, 0xf5, - 0xbb, 0xf3, 0xba, 0xf5, 0xbb, 0xf3, 0xba, 0xf5, 0xbb, 0xf3, 0xba, 0xf5, - 0xbc, 0xf3, 0xba, 0xf5, 0xbc, 0xf3, 0xba, 0xf5, 0xbc, 0xf3, 0xba, 0xf5, - 0xbd, 0xf3, 0xbd, 0xf5, 0xbd, 0xf4, 0xbd, 0xf5, 0xbd, 0xf4, 0xbe, 0xf5, - 0xbe, 0xf4, 0xbd, 0xf5, 0xbe, 0xf4, 0xbe, 0xf5, 0xbe, 0xf4, 0xbd, 0xf5, - 0xbf, 0xf4, 0xbe, 0xf5, 0xbf, 0xf4, 0xbd, 0xf5, 0xbf, 0xf4, 0xbe, 0xf5, - 0xc0, 0xf4, 0xbd, 0xf5, 0xc0, 0xf4, 0xbe, 0xf5, 0xc0, 0xf4, 0xc1, 0xf5, - 0xc1, 0xf5, 0xc1, 0xf5, 0xc1, 0xf5, 0xc1, 0xf5, 0xc1, 0xf5, 0xc1, 0xf5, - 0xc1, 0xf5, 0xc1, 0xf5, 0xc2, 0xf5, 0xc1, 0xf5, 0xc2, 0xf5, 0xc1, 0xf5, - 0xc2, 0xf5, 0xc1, 0xf5, 0xc3, 0xf5, 0xc1, 0xf5, 0xc3, 0xf5, 0xcb, 0xf5, - 0xc3, 0xeb, 0xcb, 0xf5, 0xc4, 0xe9, 0xcb, 0xf5, 0xc4, 0xeb, 0xcb, 0xf5, - 0xc4, 0xe9, 0xcb, 0xf5, 0xc5, 0xeb, 0xcb, 0xf5, 0xc5, 0xe9, 0xcb, 0xf5, - 0xc5, 0xeb, 0xcb, 0xf5, 0xc6, 0xe9, 0xcb, 0xf5, 0xc6, 0xeb, 0xcb, 0xf5, - 0xc6, 0xe9, 0xcb, 0xf5, 0xc6, 0xeb, 0xcb, 0xf5, 0xc7, 0xe9, 0xcb, 0xf5, - 0xc7, 0xeb, 0xcb, 0xf5, 0xc7, 0xe9, 0xcb, 0xf5, 0xc8, 0xeb, 0xcb, 0xf5, - 0xc8, 0xe9, 0xcb, 0xf5, 0xc8, 0xeb, 0xcb, 0xf5, 0xc9, 0xe9, 0xcb, 0xf5, - 0xc9, 0xeb, 0xcb, 0xf5, 0xc9, 0xe9, 0xcb, 0xf5, 0xc9, 0xeb, 0xcb, 0xf5, - 0xca, 0xe9, 0xcb, 0xf5, 0xca, 0xe9, 0xcb, 0xf5, 0xca, 0xe9, 0xcb, 0xf5, - 0xcb, 0xe9, 0xcb, 0xf5, 0xca, 0xe9, 0xcb, 0xf5, 0xcb, 0xe9, 0xcc, 0xf5, - 0xca, 0xe9, 0xcc, 0xf5, 0xcb, 0xe9, 0xcc, 0xf4, 0xcb, 0xe9, 0xcc, 0xf5, - 0xcb, 0xe9, 0xcd, 0xf4, 0xcb, 0xe9, 0xcd, 0xf5, 0xcb, 0xe9, 0xcd, 0xf4, - 0xcb, 0xe9, 0xce, 0xf5, 0xcb, 0xe9, 0xce, 0xf4, 0xcb, 0xe9, 0xce, 0xf5, - 0xcb, 0xe9, 0xce, 0xf4, 0xcb, 0xe9, 0xcf, 0xf5, 0xcb, 0xe9, 0xcf, 0xf4, - 0xcb, 0xe9, 0xcf, 0xf5, 0xcb, 0xe9, 0xd0, 0xf4, 0xcb, 0xe9, 0xd0, 0xf3, - 0xcb, 0xe9, 0xd0, 0xf4, 0xcb, 0xe9, 0xd0, 0xf3, 0xcb, 0xe9, 0xd1, 0xf4, - 0xcb, 0xe9, 0xd1, 0xf3, 0xcb, 0xe9, 0xd1, 0xf4, 0xcb, 0xe9, 0xd2, 0xf3, - 0xcb, 0xe9, 0xd2, 0xf4, 0xcb, 0xe9, 0xd2, 0xf3, 0xcb, 0xe9, 0xd2, 0xf4, - 0xcb, 0xe9, 0xd3, 0xf3, 0xcb, 0xe9, 0xd3, 0xf4, 0xcb, 0xe9, 0xd3, 0xf3, - 0xcb, 0xe9, 0xd4, 0xf4, 0xcb, 0xe9, 0xd4, 0xf3, 0xcb, 0xe9, 0xd4, 0xfc, - 0xd4, 0xe9, 0xd4, 0xfc, 0xd1, 0xe9, 0xd5, 0xfc, 0xd4, 0xe9, 0xd5, 0xfc, - 0xd1, 0xe9, 0xd5, 0xfc, 0xd4, 0xe9, 0xd6, 0xfc, 0xd1, 0xe9, 0xd6, 0xfc, - 0xd4, 0xe9, 0xd6, 0xfd, 0xd6, 0xe9, 0xd6, 0xfc, 0xd4, 0xe9, 0xd7, 0xfd, - 0xd7, 0xe9, 0xd7, 0xfc, 0xd4, 0xe9, 0xd7, 0xfd, 0xd7, 0xe9, 0xd7, 0xfd, - 0xd7, 0xe9, 0xd8, 0xfd, 0xd7, 0xe9, 0xd8, 0xfd, 0xd7, 0xe9, 0xd8, 0xfd, - 0xd7, 0xe9, 0xd9, 0xfd, 0xd7, 0xe9, 0xd9, 0xfd, 0xd7, 0xe9, 0xd9, 0xfd, - 0xd7, 0xe9, 0xd9, 0xfd, 0xd7, 0xe9, 0xda, 0xfd, 0xd7, 0xe9, 0xda, 0xfd, - 0xd7, 0xe9, 0xda, 0xfd, 0xda, 0xe9, 0xda, 0xf6, 0xe4, 0xe9, 0xdb, 0xf7, - 0xe4, 0xe9, 0xdb, 0xf6, 0xe4, 0xe9, 0xdb, 0xf7, 0xe4, 0xe9, 0xdb, 0xf6, - 0xe4, 0xe9, 0xdc, 0xf7, 0xe4, 0xe9, 0xdc, 0xf6, 0xe4, 0xe9, 0xdc, 0xf7, - 0xe4, 0xe9, 0xdd, 0xf6, 0xe4, 0xe9, 0xdd, 0xf7, 0xe4, 0xe9, 0xdd, 0xf6, - 0xe4, 0xe9, 0xdd, 0xf7, 0xe4, 0xe9, 0xde, 0xf6, 0xe4, 0xe9, 0xde, 0xf7, - 0xe4, 0xe9, 0xde, 0xf6, 0xe4, 0xe9, 0xde, 0xf7, 0xe4, 0xe9, 0xdf, 0xf6, - 0xe4, 0xe9, 0xdf, 0xf7, 0xe4, 0xe9, 0xdf, 0xf6, 0xe4, 0xe9, 0xdf, 0xf7, - 0xe4, 0xe9, 0xe0, 0xf6, 0xe4, 0xe9, 0xe0, 0xf5, 0xe4, 0xe9, 0xe0, 0xf6, - 0xe4, 0xe9, 0xe1, 0xf5, 0xe4, 0xe9, 0xe1, 0xf6, 0xe4, 0xe9, 0xe1, 0xf5, - 0xe4, 0xe9, 0xe1, 0xf6, 0xe4, 0xe9, 0xe2, 0xf5, 0xe4, 0xe9, 0xe2, 0xf6, - 0xe4, 0xe9, 0xe2, 0xf5, 0xe4, 0xe9, 0xe2, 0xf6, 0xe4, 0xe9, 0xe3, 0xf5, - 0xe4, 0xe9, 0xe3, 0xf6, 0xe4, 0xe9, 0xe3, 0xf5, 0xe4, 0xe9, 0xe3, 0xf6, - 0xe4, 0xe9, 0xe4, 0xf5, 0xe4, 0xe9, 0xe4, 0xf6, 0xe4, 0xe9, 0xe4, 0xf5, - 0xe4, 0xe9, 0xe4, 0xf5, 0xe4, 0xe9, 0xe4, 0xf5, 0xe5, 0xe9, 0xe4, 0xf5, - 0xe5, 0xe9, 0xe6, 0xf5, 0xe5, 0xe9, 0xe6, 0xf5, 0xe5, 0xe9, 0xe6, 0xf5, - 0xe6, 0xe9, 0xe6, 0xf5, 0xe6, 0xe9, 0xe6, 0xf5, 0xe6, 0xe9, 0xe6, 0xf5, - 0xe6, 0xe9, 0xe7, 0xf5, 0xe6, 0xe9, 0xe7, 0xf5, 0xe6, 0xe9, 0xe7, 0xf5, - 0xe6, 0xe9, 0xe7, 0xf5, 0xe6, 0xe9, 0xe8, 0xf5, 0xe6, 0xe9, 0xe8, 0xf5, - 0xe6, 0xe9, 0xe8, 0xf5, 0xe6, 0xe9, 0xe8, 0xf5, 0xe6, 0xe9, 0xe9, 0xf5, - 0xe6, 0xe9, 0xe9, 0xf5, 0xe6, 0xe9, 0xe9, 0xf5, 0xe6, 0xe9, 0xe9, 0xf5, - 0xe6, 0xe9, 0xea, 0xf5, 0xe6, 0xe9, 0xea, 0xf5, 0xe6, 0xe9, 0xea, 0xf3, - 0xe6, 0xe9, 0xea, 0xf5, 0xe6, 0xe9, 0xeb, 0xf3, 0xe6, 0xe9, 0xeb, 0xf5, - 0xf0, 0xe9, 0xeb, 0xf6, 0xef, 0xe9, 0xeb, 0xf5, 0xf0, 0xe9, 0xec, 0xf6, - 0xef, 0xe9, 0xec, 0xf5, 0xf0, 0xe9, 0xec, 0xf6, 0xef, 0xe9, 0xec, 0xf5, - 0xf0, 0xe9, 0xec, 0xf6, 0xef, 0xe9, 0xed, 0xf5, 0xf0, 0xe9, 0xed, 0xf6, - 0xef, 0xe9, 0xed, 0xf5, 0xf0, 0xe9, 0xed, 0xf6, 0xef, 0xe9, 0xee, 0xf5, - 0xf0, 0xe9, 0xee, 0xf6, 0xef, 0xe9, 0xee, 0xf5, 0xf0, 0xe9, 0xee, 0xf6, - 0xef, 0xe9, 0xef, 0xf5, 0xf0, 0xe9, 0xef, 0xf5, 0xf0, 0xe9, 0xef, 0xf5, - 0xf0, 0xe9, 0xef, 0xf5, 0xf0, 0xe9, 0xef, 0xf5, 0xf0, 0xe9, 0xef, 0xf5, - 0xf0, 0xe9, 0xf0, 0xf5, 0xf0, 0xe9, 0xf0, 0xf5, 0xf0, 0xe9, 0xf1, 0xf5, - 0xf0, 0xe9, 0xf1, 0xf5, 0xf0, 0xe9, 0xf1, 0xf5, 0xf0, 0xe9, 0xf1, 0xf5, - 0xf0, 0xe9, 0xf2, 0xf5, 0xf0, 0xe9, 0xf2, 0xf5, 0xf0, 0xe9, 0xf2, 0xf4, - 0xf0, 0xe9, 0xf2, 0xf5, 0xf0, 0xe9, 0xf2, 0xf4, 0xf0, 0xe9, 0xf3, 0xf5, - 0xf0, 0xe9, 0xf3, 0xf4, 0xf0, 0xe9, 0xf3, 0xf5, 0xf0, 0xe9, 0xf3, 0xf4, - 0xf0, 0xe9, 0xf4, 0xf5, 0xf0, 0xe9, 0xf4, 0xf4, 0xf0, 0xe9, 0xf4, 0xf5, - 0xf0, 0xe9, 0xf4, 0xf4, 0xf0, 0xe9, 0xf5, 0xf5, 0xf0, 0xe9, 0xf5, 0xf4, - 0xf0, 0xe9, 0xf5, 0xf5, 0xf0, 0xe9, 0xf5, 0xf4, 0xf0, 0xe9, 0xf5, 0xf5, - 0xf0, 0xe9, 0xf6, 0xf4, 0xf0, 0xe9, 0xf6, 0xf5, 0xf0, 0xe9, 0xf6, 0xf4, - 0xf0, 0xe9, 0xf6, 0xf5, 0xf0, 0xe9, 0xf7, 0xf4, 0xf0, 0xe9, 0xf7, 0xf5, - 0xf0, 0xe9, 0xf7, 0xf4, 0xf0, 0xe9, 0xf7, 0xf5, 0xf0, 0xe9, 0xf8, 0xf4, - 0xf0, 0xe9, 0xf8, 0xf5, 0xf0, 0xe9, 0xf8, 0xf4, 0xf0, 0xe9, 0xf8, 0xf5, - 0xf0, 0xe9, 0xf8, 0xf4, 0xf0, 0xe9, 0xf9, 0xf2, 0xf0, 0xe9, 0xf9, 0xf4, - 0xf0, 0xe9, 0xf9, 0xf2, 0xf0, 0xe9, 0xf9, 0xf4, 0xf0, 0xe9, 0xfa, 0xf2, - 0xf0, 0xe9, 0xfa, 0xf4, 0xf0, 0xe9, 0xfa, 0xf2, 0xf0, 0xe9, 0xfa, 0xf4, - 0xf0, 0xe9, 0xfa, 0xf2, 0xf0, 0xe9, 0xfb, 0xf4, 0xf0, 0xe9, 0xfb, 0xf2, - 0xf0, 0xe9, 0xfb, 0xf4, 0xf0, 0xe9, 0xfb, 0xf2, 0xf0, 0xe9, 0xfc, 0xf4, - 0xf0, 0xe9, 0xfc, 0xf2, 0xf0, 0xe9, 0xfc, 0xf4, 0xf0, 0xe9, 0xfc, 0xf2, - 0xf0, 0xe9, 0xfc, 0xf4, 0xf0, 0xe9, 0xfd, 0xf2, 0xf0, 0xe9, 0xfd, 0xf2, - 0xf0, 0xe9, 0xfd, 0xf2, 0xf0, 0xe9, 0xfd, 0xf2, 0xf0, 0xe9, 0xfe, 0xf2, - 0xf0, 0xe9, 0xfe, 0xf2, 0xf0, 0xe9, 0xfe, 0xf2, 0xf0, 0xe9, 0xfe, 0xf2, - 0xf0, 0xe9, 0xfe, 0xf2, 0xf0, 0xe9, 0xff, 0xf2, 0xf0, 0xe9, 0xff, 0xf2, - 0xf0, 0xe9, 0x03, 0xf4, 0x83, 0xea, 0x0a, 0xf4, 0x83, 0xea, 0x0f, 0xf4, - 0x83, 0xea, 0x14, 0xf4, 0x83, 0xea, 0x17, 0xf4, 0x83, 0xea, 0x1b, 0xf4, - 0x83, 0xea, 0x1e, 0xf4, 0x83, 0xea, 0x20, 0xf4, 0x83, 0xea, 0x23, 0xf4, - 0x83, 0xea, 0x25, 0xf4, 0x83, 0xea, 0x27, 0xf4, 0x83, 0xea, 0x29, 0xf4, - 0x83, 0xea, 0x2b, 0xf4, 0x83, 0xea, 0x2d, 0xf4, 0x83, 0xea, 0x2f, 0xf4, - 0x83, 0xea, 0x31, 0xf4, 0x83, 0xea, 0x32, 0xf4, 0x83, 0xea, 0x34, 0xf4, - 0x83, 0xea, 0x35, 0xf4, 0x83, 0xea, 0x37, 0xf4, 0x83, 0xea, 0x38, 0xf4, - 0x83, 0xea, 0x3a, 0xf4, 0x83, 0xea, 0x3b, 0xf4, 0x83, 0xea, 0x3c, 0xf4, - 0x83, 0xea, 0x3e, 0xf4, 0x83, 0xea, 0x3f, 0xf4, 0x83, 0xea, 0x40, 0xf4, - 0x83, 0xea, 0x42, 0xf4, 0x83, 0xea, 0x43, 0xf4, 0x83, 0xea, 0x44, 0xf4, - 0x83, 0xea, 0x45, 0xf4, 0x83, 0xea, 0x46, 0xf4, 0x83, 0xea, 0x47, 0xf4, - 0x83, 0xea, 0x48, 0xf4, 0x83, 0xea, 0x49, 0xf4, 0x83, 0xea, 0x4a, 0xf4, - 0x83, 0xea, 0x4b, 0xf4, 0x83, 0xea, 0x4c, 0xf4, 0x83, 0xea, 0x4d, 0xf4, - 0x83, 0xea, 0x4e, 0xf4, 0x83, 0xea, 0x4f, 0xf4, 0x83, 0xea, 0x50, 0xf4, - 0x83, 0xea, 0x51, 0xf4, 0x83, 0xea, 0x52, 0xf4, 0x83, 0xea, 0x53, 0xf4, - 0x83, 0xea, 0x54, 0xf4, 0x83, 0xea, 0x55, 0xf4, 0x83, 0xea, 0x56, 0xf4, - 0x83, 0xea, 0x57, 0xf4, 0x83, 0xea, 0x58, 0xf4, 0x83, 0xea, 0x58, 0xf4, - 0x83, 0xea, 0x59, 0xf4, 0x83, 0xea, 0x5a, 0xf4, 0x83, 0xea, 0x5b, 0xf4, - 0x83, 0xea, 0x5c, 0xf4, 0x83, 0xea, 0x5d, 0xf4, 0x83, 0xea, 0x5d, 0xf4, - 0x83, 0xea, 0x5e, 0xf4, 0x83, 0xea, 0x5f, 0xf4, 0x83, 0xea, 0x60, 0xf4, - 0x83, 0xea, 0x60, 0xf4, 0x83, 0xea, 0x61, 0xf4, 0x83, 0xea, 0x62, 0xf4, - 0x83, 0xea, 0x63, 0xf4, 0x83, 0xea, 0x63, 0xf4, 0x83, 0xea, 0x64, 0xf4, - 0x83, 0xea, 0x65, 0xf4, 0x83, 0xea, 0x66, 0xf4, 0x83, 0xea, 0x66, 0xf4, - 0x83, 0xea, 0x67, 0xf4, 0x83, 0xea, 0x68, 0xf4, 0x83, 0xea, 0x68, 0xf4, - 0x83, 0xea, 0x69, 0xf4, 0x83, 0xea, 0x6a, 0xf4, 0x83, 0xea, 0x6a, 0xf4, - 0x83, 0xea, 0x6b, 0xf4, 0x83, 0xea, 0x6c, 0xf4, 0x83, 0xea, 0x6c, 0xf4, - 0x83, 0xea, 0x6d, 0xf4, 0x83, 0xea, 0x6e, 0xf4, 0x83, 0xea, 0x6e, 0xf4, - 0x83, 0xea, 0x6f, 0xf4, 0x83, 0xea, 0x70, 0xf4, 0x83, 0xea, 0x70, 0xf4, - 0x83, 0xea, 0x71, 0xf4, 0x83, 0xea, 0x72, 0xf4, 0x83, 0xea, 0x72, 0xf4, - 0x83, 0xea, 0x73, 0xf4, 0x83, 0xea, 0x73, 0xf4, 0x83, 0xea, 0x74, 0xf4, - 0x83, 0xea, 0x75, 0xf4, 0x83, 0xea, 0x75, 0xf4, 0x83, 0xea, 0x76, 0xf4, - 0x83, 0xea, 0x76, 0xf4, 0x83, 0xea, 0x77, 0xf4, 0x83, 0xea, 0x78, 0xf4, - 0x83, 0xea, 0x78, 0xf4, 0x83, 0xea, 0x79, 0xf4, 0x83, 0xea, 0x79, 0xf4, - 0x83, 0xea, 0x7a, 0xf4, 0x83, 0xea, 0x7a, 0xf4, 0x83, 0xea, 0x7b, 0xf4, - 0x83, 0xea, 0x7c, 0xf4, 0x83, 0xea, 0x7c, 0xf4, 0x83, 0xea, 0x7d, 0xf4, - 0x83, 0xea, 0x7d, 0xf4, 0x83, 0xea, 0x7e, 0xf4, 0x83, 0xea, 0x7e, 0xf4, - 0x83, 0xea, 0x7f, 0xf4, 0x83, 0xea, 0x7f, 0xf4, 0x83, 0xea, 0x80, 0xf4, - 0x83, 0xea, 0x81, 0xf4, 0x83, 0xea, 0x81, 0xf4, 0x83, 0xea, 0x82, 0xf4, - 0x83, 0xea, 0x82, 0xf4, 0x83, 0xea, 0x83, 0xf4, 0x83, 0xea, 0x83, 0xf4, - 0x83, 0xea, 0x84, 0xf4, 0x84, 0xea, 0x84, 0xf4, 0x84, 0xea, 0x85, 0xf4, - 0x85, 0xea, 0x85, 0xf4, 0x85, 0xea, 0x86, 0xf5, 0x88, 0xea, 0x86, 0xf5, - 0x88, 0xea, 0x87, 0xf5, 0x88, 0xea, 0x87, 0xf5, 0x88, 0xea, 0x88, 0xf5, - 0x88, 0xea, 0x88, 0xf5, 0x88, 0xea, 0x89, 0xf5, 0x89, 0xea, 0x89, 0xf5, - 0x89, 0xea, 0x8a, 0xf5, 0x8a, 0xea, 0x8a, 0xf5, 0x8a, 0xea, 0x8b, 0xf5, - 0x8b, 0xea, 0x8b, 0xf5, 0x8b, 0xea, 0x8c, 0xf5, 0x8c, 0xea, 0x8c, 0xf5, - 0x8d, 0xea, 0x8d, 0xf5, 0x8e, 0xea, 0x8d, 0xf5, 0x8d, 0xea, 0x8e, 0xf5, - 0x8e, 0xea, 0x8e, 0xf5, 0x8e, 0xea, 0x8e, 0xf5, 0x8e, 0xea, 0x8f, 0xf5, - 0x8f, 0xea, 0x8f, 0xf5, 0x8f, 0xea, 0x90, 0xf5, 0x90, 0xea, 0x90, 0xf5, - 0x90, 0xea, 0x91, 0xf5, 0x91, 0xea, 0x91, 0xf5, 0x91, 0xea, 0x92, 0xf5, - 0x92, 0xea, 0x92, 0xf5, 0x92, 0xeb, 0x93, 0xf5, 0x93, 0xeb, 0x93, 0xf5, - 0x93, 0xeb, 0x94, 0xf5, 0x94, 0xeb, 0x94, 0xf5, 0x94, 0xeb, 0x94, 0xf5, - 0x94, 0xeb, 0x95, 0xf5, 0x95, 0xeb, 0x95, 0xf5, 0x95, 0xeb, 0x96, 0xf5, - 0x96, 0xeb, 0x96, 0xf5, 0x96, 0xeb, 0x97, 0xf5, 0x97, 0xeb, 0x96, 0xf5, - 0x97, 0xeb, 0x97, 0xf5, 0x98, 0xeb, 0x98, 0xf5, 0x98, 0xec, 0x98, 0xf5, - 0x98, 0xec, 0x99, 0xf5, 0x99, 0xec, 0x99, 0xf5, 0x99, 0xec, 0x9a, 0xf5, - 0x9a, 0xec, 0x9a, 0xf5, 0x9a, 0xec, 0x9a, 0xf5, 0x9a, 0xec, 0x9b, 0xf5, - 0x9b, 0xec, 0x9b, 0xf5, 0x9b, 0xec, 0x9b, 0xf5, 0x9c, 0xec, 0x9b, 0xf5, - 0x9c, 0xec, 0x9b, 0xf5, 0x9d, 0xec, 0x9b, 0xf5, 0x9d, 0xec, 0x9d, 0xf5, - 0x9d, 0xed, 0x9e, 0xf5, 0x9e, 0xed, 0x9e, 0xf5, 0x9e, 0xed, 0x9f, 0xf5, - 0x9f, 0xed, 0x9f, 0xf5, 0x9f, 0xed, 0x9f, 0xf5, 0x9f, 0xed, 0xa0, 0xf5, - 0xa0, 0xed, 0x9f, 0xf5, 0xa0, 0xed, 0xa0, 0xf5, 0xa1, 0xed, 0x9f, 0xf5, - 0xa1, 0xed, 0xa0, 0xf5, 0xa1, 0xed, 0xa2, 0xf5, 0xa2, 0xee, 0xa2, 0xf5, - 0xa2, 0xee, 0xa3, 0xf5, 0xa3, 0xee, 0xa3, 0xf5, 0xa3, 0xee, 0xa3, 0xf5, - 0xa3, 0xee, 0xa4, 0xf5, 0xa4, 0xee, 0xa4, 0xf5, 0xa4, 0xee, 0xa4, 0xf5, - 0xa5, 0xee, 0xa4, 0xf5, 0xa5, 0xee, 0xa4, 0xf5, 0xa5, 0xee, 0xa4, 0xf5, - 0xa6, 0xee, 0xa6, 0xf5, 0xa6, 0xef, 0xa6, 0xf5, 0xa6, 0xef, 0xa7, 0xf5, - 0xa7, 0xef, 0xa7, 0xf5, 0xa7, 0xef, 0xa8, 0xf5, 0xa8, 0xef, 0xa8, 0xf5, - 0xa8, 0xef, 0xa8, 0xf5, 0xa8, 0xef, 0xa8, 0xf5, 0xa9, 0xef, 0xa8, 0xf5, - 0xa9, 0xef, 0xa8, 0xf5, 0xaa, 0xef, 0xa8, 0xf5, 0xaa, 0xef, 0xa8, 0xf5, - 0xaa, 0xef, 0xa8, 0xf5, 0xab, 0xef, 0xab, 0xf5, 0xab, 0xf0, 0xab, 0xf5, - 0xab, 0xf0, 0xac, 0xf5, 0xac, 0xf0, 0xac, 0xf5, 0xac, 0xf0, 0xac, 0xf5, - 0xac, 0xf0, 0xac, 0xf5, 0xad, 0xf0, 0xac, 0xf5, 0xad, 0xf0, 0xac, 0xf5, - 0xae, 0xf0, 0xac, 0xf5, 0xae, 0xf0, 0xac, 0xf5, 0xae, 0xf0, 0xac, 0xf5, - 0xaf, 0xf0, 0xaf, 0xf5, 0xaf, 0xf1, 0xaf, 0xf5, 0xaf, 0xf1, 0xb0, 0xf5, - 0xb0, 0xf1, 0xb0, 0xf5, 0xb0, 0xf1, 0xb0, 0xf5, 0xb0, 0xf1, 0xb0, 0xf5, - 0xb1, 0xf1, 0xb0, 0xf5, 0xb1, 0xf1, 0xb0, 0xf5, 0xb2, 0xf1, 0xb0, 0xf5, - 0xb2, 0xf1, 0xb0, 0xf5, 0xb2, 0xf1, 0xb0, 0xf5, 0xb3, 0xf1, 0xb3, 0xf5, - 0xb3, 0xf2, 0xb3, 0xf5, 0xb3, 0xf2, 0xb4, 0xf5, 0xb4, 0xf2, 0xb4, 0xf5, - 0xb4, 0xf2, 0xb4, 0xf5, 0xb4, 0xf2, 0xb4, 0xf5, 0xb5, 0xf2, 0xb4, 0xf5, - 0xb5, 0xf2, 0xb4, 0xf5, 0xb5, 0xf2, 0xb4, 0xf5, 0xb6, 0xf2, 0xb4, 0xf5, - 0xb6, 0xf2, 0xb4, 0xf5, 0xb6, 0xf2, 0xb4, 0xf5, 0xb7, 0xf2, 0xb4, 0xf5, - 0xb7, 0xf2, 0xb7, 0xf5, 0xb7, 0xf3, 0xb8, 0xf5, 0xb8, 0xf3, 0xb8, 0xf5, - 0xb8, 0xf3, 0xb8, 0xf5, 0xb8, 0xf3, 0xb8, 0xf5, 0xb9, 0xf3, 0xb8, 0xf5, - 0xb9, 0xf3, 0xb8, 0xf5, 0xb9, 0xf3, 0xb8, 0xf5, 0xba, 0xf3, 0xb8, 0xf5, - 0xba, 0xf3, 0xb8, 0xf5, 0xba, 0xf3, 0xb8, 0xf5, 0xbb, 0xf3, 0xbb, 0xf5, - 0xbb, 0xf4, 0xbb, 0xf5, 0xbb, 0xf4, 0xbc, 0xf5, 0xbc, 0xf4, 0xbb, 0xf5, - 0xbc, 0xf4, 0xbc, 0xf5, 0xbc, 0xf4, 0xbb, 0xf5, 0xbd, 0xf4, 0xbc, 0xf5, - 0xbd, 0xf4, 0xbb, 0xf5, 0xbd, 0xf4, 0xbc, 0xf5, 0xbe, 0xf4, 0xbb, 0xf5, - 0xbe, 0xf4, 0xbc, 0xf5, 0xbe, 0xf4, 0xbf, 0xf5, 0xbf, 0xf5, 0xbf, 0xf5, - 0xbf, 0xf5, 0xbf, 0xf5, 0xbf, 0xf5, 0xbf, 0xf5, 0xc0, 0xf5, 0xbf, 0xf5, - 0xc0, 0xf5, 0xbf, 0xf5, 0xc0, 0xf5, 0xbf, 0xf5, 0xc1, 0xf5, 0xbf, 0xf5, - 0xc1, 0xf5, 0xbf, 0xf5, 0xc1, 0xf5, 0xbf, 0xf5, 0xc1, 0xf5, 0xbf, 0xf5, - 0xc2, 0xf5, 0xc2, 0xf5, 0xc2, 0xf6, 0xc2, 0xf5, 0xc2, 0xf6, 0xc3, 0xf5, - 0xc3, 0xf6, 0xc2, 0xf5, 0xc3, 0xf6, 0xcb, 0xf5, 0xc3, 0xeb, 0xca, 0xf5, - 0xc4, 0xee, 0xcb, 0xf5, 0xc4, 0xeb, 0xca, 0xf5, 0xc4, 0xee, 0xcb, 0xf5, - 0xc5, 0xeb, 0xca, 0xf5, 0xc5, 0xee, 0xcb, 0xf5, 0xc5, 0xeb, 0xca, 0xf5, - 0xc6, 0xee, 0xcb, 0xf5, 0xc6, 0xeb, 0xcb, 0xf5, 0xc6, 0xea, 0xcb, 0xf5, - 0xc6, 0xeb, 0xcb, 0xf5, 0xc7, 0xea, 0xcb, 0xf5, 0xc7, 0xeb, 0xcb, 0xf5, - 0xc7, 0xea, 0xcb, 0xf5, 0xc8, 0xeb, 0xcb, 0xf5, 0xc8, 0xea, 0xcb, 0xf5, - 0xc8, 0xeb, 0xcb, 0xf5, 0xc9, 0xea, 0xcb, 0xf5, 0xc9, 0xeb, 0xcb, 0xf5, - 0xc9, 0xea, 0xcb, 0xf5, 0xc9, 0xeb, 0xcb, 0xf5, 0xca, 0xea, 0xcb, 0xf5, - 0xca, 0xeb, 0xcb, 0xf5, 0xca, 0xea, 0xcb, 0xf5, 0xcb, 0xea, 0xcb, 0xf5, - 0xca, 0xea, 0xcb, 0xf5, 0xcb, 0xea, 0xcc, 0xf5, 0xca, 0xea, 0xcc, 0xf5, - 0xcb, 0xea, 0xcc, 0xf5, 0xcb, 0xea, 0xcc, 0xf5, 0xcb, 0xea, 0xcd, 0xf5, - 0xcb, 0xea, 0xcd, 0xf5, 0xcb, 0xea, 0xcd, 0xf5, 0xcb, 0xea, 0xce, 0xf5, - 0xcb, 0xea, 0xce, 0xf5, 0xcb, 0xea, 0xce, 0xf5, 0xcb, 0xea, 0xce, 0xf5, - 0xcb, 0xea, 0xcf, 0xf5, 0xcb, 0xea, 0xcf, 0xf5, 0xcb, 0xea, 0xcf, 0xf5, - 0xcb, 0xea, 0xd0, 0xf5, 0xcb, 0xea, 0xd0, 0xf5, 0xcb, 0xea, 0xd0, 0xf5, - 0xcb, 0xea, 0xd0, 0xf5, 0xcb, 0xea, 0xd1, 0xf5, 0xcb, 0xea, 0xd1, 0xf5, - 0xcb, 0xea, 0xd1, 0xf5, 0xcb, 0xea, 0xd2, 0xf5, 0xcb, 0xea, 0xd2, 0xf5, - 0xcb, 0xea, 0xd2, 0xf3, 0xcb, 0xea, 0xd2, 0xf5, 0xcb, 0xea, 0xd3, 0xf3, - 0xcb, 0xea, 0xd3, 0xf5, 0xcb, 0xea, 0xd3, 0xf3, 0xcb, 0xea, 0xd4, 0xf5, - 0xcb, 0xea, 0xd4, 0xfc, 0xd3, 0xea, 0xd4, 0xfc, 0xd2, 0xea, 0xd4, 0xfc, - 0xd3, 0xea, 0xd5, 0xfc, 0xd2, 0xea, 0xd5, 0xfc, 0xd3, 0xea, 0xd5, 0xfc, - 0xd2, 0xea, 0xd6, 0xfc, 0xd3, 0xea, 0xd6, 0xfd, 0xd6, 0xea, 0xd6, 0xfd, - 0xd6, 0xea, 0xd6, 0xfd, 0xd6, 0xea, 0xd7, 0xfd, 0xd6, 0xea, 0xd7, 0xfd, - 0xd6, 0xea, 0xd7, 0xfd, 0xd6, 0xea, 0xd7, 0xfd, 0xd6, 0xea, 0xd8, 0xfd, - 0xd6, 0xea, 0xd8, 0xfd, 0xd6, 0xea, 0xd8, 0xfd, 0xd6, 0xea, 0xd9, 0xfd, - 0xd6, 0xea, 0xd9, 0xfd, 0xd9, 0xea, 0xd9, 0xfd, 0xd9, 0xea, 0xd9, 0xfd, - 0xd9, 0xea, 0xda, 0xfd, 0xd9, 0xea, 0xda, 0xfd, 0xd9, 0xea, 0xda, 0xfd, - 0xd9, 0xea, 0xda, 0xfd, 0xd9, 0xea, 0xdb, 0xf7, 0xe4, 0xea, 0xdb, 0xf6, - 0xe4, 0xea, 0xdb, 0xf7, 0xe4, 0xea, 0xdb, 0xf6, 0xe4, 0xea, 0xdc, 0xf7, - 0xe4, 0xea, 0xdc, 0xf6, 0xe4, 0xea, 0xdc, 0xf7, 0xe4, 0xea, 0xdd, 0xf6, - 0xe4, 0xea, 0xdd, 0xf7, 0xe4, 0xea, 0xdd, 0xf6, 0xe4, 0xea, 0xdd, 0xf7, - 0xe4, 0xea, 0xde, 0xf6, 0xe4, 0xea, 0xde, 0xf7, 0xe4, 0xea, 0xde, 0xf6, - 0xe4, 0xea, 0xde, 0xf7, 0xe4, 0xea, 0xdf, 0xf6, 0xe4, 0xea, 0xdf, 0xf7, - 0xe4, 0xea, 0xdf, 0xf6, 0xe4, 0xea, 0xdf, 0xf7, 0xe4, 0xea, 0xe0, 0xf6, - 0xe4, 0xea, 0xe0, 0xf7, 0xe4, 0xea, 0xe0, 0xf6, 0xe4, 0xea, 0xe1, 0xf7, - 0xe4, 0xea, 0xe1, 0xf6, 0xe4, 0xea, 0xe1, 0xf7, 0xe4, 0xea, 0xe1, 0xf6, - 0xe4, 0xea, 0xe2, 0xf7, 0xe4, 0xea, 0xe2, 0xf6, 0xe4, 0xea, 0xe2, 0xf5, - 0xe4, 0xea, 0xe2, 0xf6, 0xe4, 0xea, 0xe3, 0xf5, 0xe4, 0xea, 0xe3, 0xf6, - 0xe4, 0xea, 0xe3, 0xf5, 0xe4, 0xea, 0xe3, 0xf6, 0xe4, 0xea, 0xe4, 0xf5, - 0xe4, 0xea, 0xe4, 0xf6, 0xe4, 0xea, 0xe4, 0xf5, 0xe4, 0xea, 0xe4, 0xf5, - 0xe4, 0xea, 0xe4, 0xf5, 0xe5, 0xea, 0xe4, 0xf5, 0xe5, 0xea, 0xe6, 0xf5, - 0xe5, 0xea, 0xe6, 0xf5, 0xe5, 0xea, 0xe6, 0xf5, 0xe6, 0xea, 0xe6, 0xf5, - 0xe6, 0xea, 0xe6, 0xf5, 0xe6, 0xea, 0xe6, 0xf5, 0xe6, 0xea, 0xe7, 0xf5, - 0xe6, 0xea, 0xe7, 0xf5, 0xe6, 0xea, 0xe7, 0xf5, 0xe6, 0xea, 0xe7, 0xf5, - 0xe6, 0xea, 0xe8, 0xf5, 0xe6, 0xea, 0xe8, 0xf5, 0xe6, 0xea, 0xe8, 0xf5, - 0xe6, 0xea, 0xe8, 0xf5, 0xe6, 0xea, 0xe9, 0xf5, 0xe6, 0xea, 0xe9, 0xf5, - 0xe6, 0xea, 0xe9, 0xf5, 0xe6, 0xea, 0xe9, 0xf5, 0xe6, 0xea, 0xea, 0xf5, - 0xe6, 0xea, 0xea, 0xf5, 0xe6, 0xea, 0xea, 0xf4, 0xe6, 0xea, 0xea, 0xf5, - 0xe6, 0xea, 0xeb, 0xf4, 0xe6, 0xea, 0xeb, 0xf7, 0xef, 0xea, 0xeb, 0xf6, - 0xef, 0xea, 0xeb, 0xf7, 0xef, 0xea, 0xec, 0xf6, 0xef, 0xea, 0xec, 0xf5, - 0xf0, 0xea, 0xec, 0xf6, 0xef, 0xea, 0xec, 0xf5, 0xf0, 0xea, 0xec, 0xf6, - 0xef, 0xea, 0xed, 0xf5, 0xf0, 0xea, 0xed, 0xf6, 0xef, 0xea, 0xed, 0xf5, - 0xf0, 0xea, 0xed, 0xf6, 0xef, 0xea, 0xee, 0xf5, 0xf0, 0xea, 0xee, 0xf6, - 0xef, 0xea, 0xee, 0xf5, 0xf0, 0xea, 0xee, 0xf6, 0xef, 0xea, 0xef, 0xf5, - 0xf0, 0xea, 0xef, 0xf6, 0xef, 0xea, 0xef, 0xf5, 0xf0, 0xea, 0xef, 0xf6, - 0xef, 0xea, 0xef, 0xf5, 0xf0, 0xea, 0xf0, 0xf5, 0xf0, 0xea, 0xf0, 0xf5, - 0xf0, 0xea, 0xf0, 0xf5, 0xf0, 0xea, 0xf1, 0xf5, 0xf0, 0xea, 0xf1, 0xf5, - 0xf0, 0xea, 0xf1, 0xf5, 0xf0, 0xea, 0xf1, 0xf5, 0xf0, 0xea, 0xf2, 0xf5, - 0xf0, 0xea, 0xf2, 0xf5, 0xf0, 0xea, 0xf2, 0xf5, 0xf0, 0xea, 0xf2, 0xf5, - 0xf0, 0xea, 0xf2, 0xf5, 0xf0, 0xea, 0xf3, 0xf5, 0xf0, 0xea, 0xf3, 0xf5, - 0xf0, 0xea, 0xf3, 0xf5, 0xf0, 0xea, 0xf3, 0xf5, 0xf0, 0xea, 0xf4, 0xf5, - 0xf0, 0xea, 0xf4, 0xf4, 0xf0, 0xea, 0xf4, 0xf5, 0xf0, 0xea, 0xf4, 0xf4, - 0xf0, 0xea, 0xf5, 0xf5, 0xf0, 0xea, 0xf5, 0xf4, 0xf0, 0xea, 0xf5, 0xf5, - 0xf0, 0xea, 0xf5, 0xf4, 0xf0, 0xea, 0xf5, 0xf5, 0xf0, 0xea, 0xf6, 0xf4, - 0xf0, 0xea, 0xf6, 0xf5, 0xf0, 0xea, 0xf6, 0xf4, 0xf0, 0xea, 0xf6, 0xf5, - 0xf0, 0xea, 0xf7, 0xf4, 0xf0, 0xea, 0xf7, 0xf5, 0xf0, 0xea, 0xf7, 0xf4, - 0xf0, 0xea, 0xf7, 0xf5, 0xf0, 0xea, 0xf8, 0xf4, 0xf0, 0xea, 0xf8, 0xf5, - 0xf0, 0xea, 0xf8, 0xf4, 0xf0, 0xea, 0xf8, 0xf5, 0xf0, 0xea, 0xf8, 0xf4, - 0xf0, 0xea, 0xf9, 0xf5, 0xf0, 0xea, 0xf9, 0xf4, 0xf0, 0xea, 0xf9, 0xf5, - 0xf0, 0xea, 0xf9, 0xf4, 0xf0, 0xea, 0xfa, 0xf5, 0xf0, 0xea, 0xfa, 0xf4, - 0xf0, 0xea, 0xfa, 0xf5, 0xf0, 0xea, 0xfa, 0xf4, 0xf0, 0xea, 0xfa, 0xf5, - 0xf0, 0xea, 0xfb, 0xf4, 0xf0, 0xea, 0xfb, 0xf5, 0xf0, 0xea, 0xfb, 0xf4, - 0xf0, 0xea, 0xfb, 0xf2, 0xf0, 0xea, 0xfc, 0xf4, 0xf0, 0xea, 0xfc, 0xf2, - 0xf0, 0xea, 0xfc, 0xf4, 0xf0, 0xea, 0xfc, 0xf2, 0xf0, 0xea, 0xfc, 0xf4, - 0xf0, 0xea, 0xfd, 0xf2, 0xf0, 0xea, 0xfd, 0xf4, 0xf0, 0xea, 0xfd, 0xf2, - 0xf0, 0xea, 0xfd, 0xf4, 0xf0, 0xea, 0xfe, 0xf2, 0xf0, 0xea, 0xfe, 0xf4, - 0xf0, 0xea, 0xfe, 0xf2, 0xf0, 0xea, 0xfe, 0xf4, 0xf0, 0xea, 0xfe, 0xf2, - 0xf0, 0xea, 0xff, 0xf4, 0xf0, 0xea, 0xff, 0xf2, 0xf0, 0xea, 0x03, 0xf4, - 0x83, 0xea, 0x0a, 0xf4, 0x83, 0xea, 0x0f, 0xf4, 0x83, 0xea, 0x14, 0xf4, - 0x83, 0xea, 0x17, 0xf4, 0x83, 0xea, 0x1b, 0xf4, 0x83, 0xea, 0x1e, 0xf4, - 0x83, 0xea, 0x20, 0xf4, 0x83, 0xea, 0x23, 0xf4, 0x83, 0xea, 0x25, 0xf4, - 0x83, 0xea, 0x27, 0xf4, 0x83, 0xea, 0x29, 0xf4, 0x83, 0xea, 0x2b, 0xf4, - 0x83, 0xea, 0x2d, 0xf4, 0x83, 0xea, 0x2f, 0xf4, 0x83, 0xea, 0x31, 0xf4, - 0x83, 0xea, 0x32, 0xf4, 0x83, 0xea, 0x34, 0xf4, 0x83, 0xea, 0x35, 0xf4, - 0x83, 0xea, 0x37, 0xf4, 0x83, 0xea, 0x38, 0xf4, 0x83, 0xea, 0x3a, 0xf4, - 0x83, 0xea, 0x3b, 0xf4, 0x83, 0xea, 0x3c, 0xf4, 0x83, 0xea, 0x3e, 0xf4, - 0x83, 0xea, 0x3f, 0xf4, 0x83, 0xea, 0x40, 0xf4, 0x83, 0xea, 0x42, 0xf4, - 0x83, 0xea, 0x43, 0xf4, 0x83, 0xea, 0x44, 0xf4, 0x83, 0xea, 0x45, 0xf4, - 0x83, 0xea, 0x46, 0xf4, 0x83, 0xea, 0x47, 0xf4, 0x83, 0xea, 0x48, 0xf4, - 0x83, 0xea, 0x49, 0xf4, 0x83, 0xea, 0x4a, 0xf4, 0x83, 0xea, 0x4b, 0xf4, - 0x83, 0xea, 0x4c, 0xf4, 0x83, 0xea, 0x4d, 0xf4, 0x83, 0xea, 0x4e, 0xf4, - 0x83, 0xea, 0x4f, 0xf4, 0x83, 0xea, 0x50, 0xf4, 0x83, 0xea, 0x51, 0xf4, - 0x83, 0xea, 0x52, 0xf4, 0x83, 0xea, 0x53, 0xf4, 0x83, 0xea, 0x54, 0xf4, - 0x83, 0xea, 0x55, 0xf4, 0x83, 0xea, 0x56, 0xf4, 0x83, 0xea, 0x57, 0xf4, - 0x83, 0xea, 0x58, 0xf4, 0x83, 0xea, 0x58, 0xf4, 0x83, 0xea, 0x59, 0xf4, - 0x83, 0xea, 0x5a, 0xf4, 0x83, 0xea, 0x5b, 0xf4, 0x83, 0xea, 0x5c, 0xf4, - 0x83, 0xea, 0x5d, 0xf4, 0x83, 0xea, 0x5d, 0xf4, 0x83, 0xea, 0x5e, 0xf4, - 0x83, 0xea, 0x5f, 0xf4, 0x83, 0xea, 0x60, 0xf4, 0x83, 0xea, 0x60, 0xf4, - 0x83, 0xea, 0x61, 0xf4, 0x83, 0xea, 0x62, 0xf4, 0x83, 0xea, 0x63, 0xf4, - 0x83, 0xea, 0x63, 0xf4, 0x83, 0xea, 0x64, 0xf4, 0x83, 0xea, 0x65, 0xf4, - 0x83, 0xea, 0x66, 0xf4, 0x83, 0xea, 0x66, 0xf4, 0x83, 0xea, 0x67, 0xf4, - 0x83, 0xea, 0x68, 0xf4, 0x83, 0xea, 0x68, 0xf4, 0x83, 0xea, 0x69, 0xf4, - 0x83, 0xea, 0x6a, 0xf4, 0x83, 0xea, 0x6a, 0xf4, 0x83, 0xea, 0x6b, 0xf4, - 0x83, 0xea, 0x6c, 0xf4, 0x83, 0xea, 0x6c, 0xf4, 0x83, 0xea, 0x6d, 0xf4, - 0x83, 0xea, 0x6e, 0xf4, 0x83, 0xea, 0x6e, 0xf4, 0x83, 0xea, 0x6f, 0xf4, - 0x83, 0xea, 0x70, 0xf4, 0x83, 0xea, 0x70, 0xf4, 0x83, 0xea, 0x71, 0xf4, - 0x83, 0xea, 0x72, 0xf4, 0x83, 0xea, 0x72, 0xf4, 0x83, 0xea, 0x73, 0xf4, - 0x83, 0xea, 0x73, 0xf4, 0x83, 0xea, 0x74, 0xf4, 0x83, 0xea, 0x75, 0xf4, - 0x83, 0xea, 0x75, 0xf4, 0x83, 0xea, 0x76, 0xf4, 0x83, 0xea, 0x76, 0xf4, - 0x83, 0xea, 0x77, 0xf4, 0x83, 0xea, 0x78, 0xf4, 0x83, 0xea, 0x78, 0xf4, - 0x83, 0xea, 0x79, 0xf4, 0x83, 0xea, 0x79, 0xf4, 0x83, 0xea, 0x7a, 0xf4, - 0x83, 0xea, 0x7a, 0xf4, 0x83, 0xea, 0x7b, 0xf4, 0x83, 0xea, 0x7c, 0xf4, - 0x83, 0xea, 0x7c, 0xf4, 0x83, 0xea, 0x7d, 0xf4, 0x83, 0xea, 0x7d, 0xf4, - 0x83, 0xea, 0x7e, 0xf4, 0x83, 0xea, 0x7e, 0xf4, 0x83, 0xea, 0x7f, 0xf4, - 0x83, 0xea, 0x7f, 0xf4, 0x83, 0xea, 0x80, 0xf4, 0x83, 0xea, 0x81, 0xf4, - 0x83, 0xea, 0x81, 0xf4, 0x83, 0xea, 0x82, 0xf4, 0x83, 0xea, 0x82, 0xf4, - 0x83, 0xea, 0x83, 0xf4, 0x83, 0xea, 0x83, 0xf4, 0x85, 0xea, 0x84, 0xf4, - 0x86, 0xea, 0x84, 0xf4, 0x85, 0xea, 0x85, 0xf4, 0x86, 0xea, 0x85, 0xf4, - 0x85, 0xea, 0x86, 0xf4, 0x86, 0xea, 0x86, 0xf4, 0x86, 0xea, 0x87, 0xf4, - 0x87, 0xea, 0x87, 0xf4, 0x87, 0xea, 0x88, 0xf4, 0x88, 0xea, 0x88, 0xf4, - 0x88, 0xea, 0x89, 0xf5, 0x8b, 0xea, 0x89, 0xf5, 0x8b, 0xea, 0x8a, 0xf5, - 0x8b, 0xea, 0x8a, 0xf5, 0x8b, 0xea, 0x8b, 0xf5, 0x8b, 0xea, 0x8b, 0xf5, - 0x8b, 0xea, 0x8c, 0xf5, 0x8c, 0xea, 0x8c, 0xf5, 0x8c, 0xea, 0x8d, 0xf5, - 0x8d, 0xea, 0x8d, 0xf5, 0x8d, 0xea, 0x8e, 0xf5, 0x8e, 0xea, 0x8e, 0xf5, - 0x8e, 0xea, 0x8e, 0xf5, 0x8e, 0xea, 0x8f, 0xf5, 0x90, 0xea, 0x8f, 0xf5, - 0x90, 0xea, 0x90, 0xf5, 0x90, 0xea, 0x90, 0xf5, 0x90, 0xea, 0x91, 0xf5, - 0x91, 0xea, 0x91, 0xf5, 0x91, 0xea, 0x92, 0xf5, 0x92, 0xea, 0x92, 0xf5, - 0x92, 0xea, 0x93, 0xf5, 0x93, 0xea, 0x93, 0xf5, 0x93, 0xea, 0x94, 0xf5, - 0x94, 0xea, 0x94, 0xf5, 0x94, 0xea, 0x94, 0xf5, 0x94, 0xea, 0x95, 0xf6, - 0x95, 0xeb, 0x95, 0xf6, 0x95, 0xeb, 0x96, 0xf6, 0x96, 0xeb, 0x96, 0xf6, - 0x96, 0xeb, 0x97, 0xf6, 0x97, 0xeb, 0x97, 0xf6, 0x97, 0xeb, 0x98, 0xf6, - 0x98, 0xeb, 0x98, 0xf6, 0x98, 0xeb, 0x98, 0xf6, 0x98, 0xeb, 0x99, 0xf6, - 0x99, 0xeb, 0x99, 0xf6, 0x99, 0xeb, 0x99, 0xf6, 0x9a, 0xeb, 0x99, 0xf6, - 0x9a, 0xeb, 0x9a, 0xf6, 0x9a, 0xec, 0x9b, 0xf6, 0x9b, 0xec, 0x9b, 0xf6, - 0x9b, 0xec, 0x9c, 0xf6, 0x9c, 0xec, 0x9c, 0xf6, 0x9c, 0xec, 0x9d, 0xf6, - 0x9d, 0xec, 0x9d, 0xf6, 0x9d, 0xec, 0x9d, 0xf6, 0x9d, 0xec, 0x9e, 0xf6, - 0x9e, 0xec, 0x9d, 0xf6, 0x9e, 0xec, 0x9e, 0xf6, 0x9f, 0xec, 0x9d, 0xf6, - 0x9f, 0xec, 0x9e, 0xf6, 0x9f, 0xec, 0xa0, 0xf6, 0xa0, 0xed, 0xa0, 0xf6, - 0xa0, 0xed, 0xa1, 0xf6, 0xa1, 0xed, 0xa1, 0xf6, 0xa1, 0xed, 0xa1, 0xf6, - 0xa1, 0xed, 0xa2, 0xf6, 0xa2, 0xed, 0xa2, 0xf6, 0xa2, 0xed, 0xa2, 0xf6, - 0xa3, 0xed, 0xa2, 0xf6, 0xa3, 0xed, 0xa2, 0xf6, 0xa3, 0xed, 0xa2, 0xf6, - 0xa4, 0xed, 0xa4, 0xf6, 0xa4, 0xee, 0xa5, 0xf6, 0xa5, 0xee, 0xa5, 0xf6, - 0xa5, 0xee, 0xa5, 0xf6, 0xa5, 0xee, 0xa6, 0xf6, 0xa6, 0xee, 0xa6, 0xf6, - 0xa6, 0xee, 0xa6, 0xf6, 0xa6, 0xee, 0xa6, 0xf6, 0xa7, 0xee, 0xa6, 0xf6, - 0xa7, 0xee, 0xa6, 0xf6, 0xa8, 0xee, 0xa6, 0xf6, 0xa8, 0xee, 0xa8, 0xf6, - 0xa8, 0xef, 0xa9, 0xf6, 0xa9, 0xef, 0xa9, 0xf6, 0xa9, 0xef, 0xaa, 0xf6, - 0xaa, 0xef, 0xaa, 0xf6, 0xaa, 0xef, 0xaa, 0xf6, 0xaa, 0xef, 0xab, 0xf6, - 0xab, 0xef, 0xaa, 0xf6, 0xab, 0xef, 0xab, 0xf6, 0xab, 0xef, 0xaa, 0xf6, - 0xac, 0xef, 0xab, 0xf6, 0xac, 0xef, 0xaa, 0xf6, 0xac, 0xef, 0xab, 0xf6, - 0xad, 0xef, 0xad, 0xf6, 0xad, 0xf0, 0xae, 0xf6, 0xae, 0xf0, 0xae, 0xf6, - 0xae, 0xf0, 0xae, 0xf6, 0xae, 0xf0, 0xaf, 0xf6, 0xaf, 0xf0, 0xae, 0xf6, - 0xaf, 0xf0, 0xaf, 0xf6, 0xaf, 0xf0, 0xae, 0xf6, 0xb0, 0xf0, 0xaf, 0xf6, - 0xb0, 0xf0, 0xae, 0xf6, 0xb0, 0xf0, 0xaf, 0xf6, 0xb1, 0xf0, 0xb1, 0xf6, - 0xb1, 0xf1, 0xb2, 0xf6, 0xb2, 0xf1, 0xb2, 0xf6, 0xb2, 0xf1, 0xb2, 0xf6, - 0xb2, 0xf1, 0xb3, 0xf6, 0xb3, 0xf1, 0xb2, 0xf6, 0xb3, 0xf1, 0xb3, 0xf6, - 0xb3, 0xf1, 0xb2, 0xf6, 0xb4, 0xf1, 0xb3, 0xf6, 0xb4, 0xf1, 0xb2, 0xf6, - 0xb4, 0xf1, 0xb3, 0xf6, 0xb5, 0xf1, 0xb5, 0xf6, 0xb5, 0xf2, 0xb5, 0xf6, - 0xb5, 0xf2, 0xb6, 0xf6, 0xb6, 0xf2, 0xb6, 0xf6, 0xb6, 0xf2, 0xb6, 0xf6, - 0xb6, 0xf2, 0xb6, 0xf6, 0xb7, 0xf2, 0xb6, 0xf6, 0xb7, 0xf2, 0xb6, 0xf6, - 0xb7, 0xf2, 0xb6, 0xf6, 0xb8, 0xf2, 0xb6, 0xf6, 0xb8, 0xf2, 0xb6, 0xf6, - 0xb8, 0xf2, 0xb6, 0xf6, 0xb9, 0xf2, 0xb6, 0xf6, 0xb9, 0xf2, 0xb9, 0xf6, - 0xb9, 0xf3, 0xba, 0xf6, 0xba, 0xf3, 0xba, 0xf6, 0xba, 0xf3, 0xba, 0xf6, - 0xba, 0xf3, 0xba, 0xf6, 0xbb, 0xf3, 0xba, 0xf6, 0xbb, 0xf3, 0xba, 0xf6, - 0xbb, 0xf3, 0xba, 0xf6, 0xbc, 0xf3, 0xba, 0xf6, 0xbc, 0xf3, 0xba, 0xf6, - 0xbc, 0xf3, 0xba, 0xf6, 0xbd, 0xf3, 0xbd, 0xf6, 0xbd, 0xf4, 0xbd, 0xf6, - 0xbd, 0xf4, 0xbe, 0xf6, 0xbe, 0xf4, 0xbd, 0xf6, 0xbe, 0xf4, 0xbe, 0xf6, - 0xbe, 0xf4, 0xbd, 0xf6, 0xbf, 0xf4, 0xbe, 0xf6, 0xbf, 0xf4, 0xbd, 0xf6, - 0xbf, 0xf4, 0xbe, 0xf6, 0xc0, 0xf4, 0xbd, 0xf6, 0xc0, 0xf4, 0xbe, 0xf6, - 0xc0, 0xf4, 0xc1, 0xf6, 0xc1, 0xf5, 0xc1, 0xf6, 0xc1, 0xf5, 0xc1, 0xf6, - 0xc1, 0xf5, 0xc1, 0xf6, 0xc1, 0xf5, 0xc1, 0xf6, 0xc2, 0xf5, 0xc1, 0xf6, - 0xc2, 0xf5, 0xc1, 0xf6, 0xc2, 0xf5, 0xc1, 0xf6, 0xc3, 0xf5, 0xc1, 0xf6, - 0xc3, 0xf5, 0xc1, 0xf6, 0xc3, 0xf5, 0xca, 0xf6, 0xc4, 0xee, 0xcb, 0xf6, - 0xc4, 0xeb, 0xca, 0xf6, 0xc4, 0xee, 0xcb, 0xf6, 0xc5, 0xeb, 0xca, 0xf6, - 0xc5, 0xee, 0xcb, 0xf6, 0xc5, 0xeb, 0xca, 0xf6, 0xc6, 0xee, 0xcb, 0xf6, - 0xc6, 0xeb, 0xcb, 0xf6, 0xc6, 0xea, 0xcb, 0xf6, 0xc6, 0xeb, 0xcb, 0xf6, - 0xc7, 0xea, 0xcb, 0xf6, 0xc7, 0xeb, 0xcb, 0xf6, 0xc7, 0xea, 0xcb, 0xf6, - 0xc8, 0xeb, 0xcb, 0xf6, 0xc8, 0xea, 0xcb, 0xf6, 0xc8, 0xeb, 0xcb, 0xf6, - 0xc9, 0xea, 0xcb, 0xf6, 0xc9, 0xeb, 0xcb, 0xf6, 0xc9, 0xea, 0xcb, 0xf6, - 0xc9, 0xeb, 0xcb, 0xf6, 0xca, 0xea, 0xcb, 0xf6, 0xca, 0xeb, 0xcb, 0xf6, - 0xca, 0xea, 0xcb, 0xf6, 0xcb, 0xea, 0xcb, 0xf6, 0xca, 0xea, 0xcb, 0xf6, - 0xcb, 0xea, 0xcc, 0xf6, 0xca, 0xea, 0xcc, 0xf6, 0xcb, 0xea, 0xcc, 0xf6, - 0xca, 0xea, 0xcc, 0xf6, 0xcb, 0xea, 0xcd, 0xf6, 0xca, 0xea, 0xcd, 0xf6, - 0xcb, 0xea, 0xcd, 0xf4, 0xcb, 0xea, 0xce, 0xf6, 0xcb, 0xea, 0xce, 0xf4, - 0xcb, 0xea, 0xce, 0xf6, 0xcb, 0xea, 0xce, 0xf4, 0xcb, 0xea, 0xcf, 0xf6, - 0xcb, 0xea, 0xcf, 0xf4, 0xcb, 0xea, 0xcf, 0xf6, 0xcb, 0xea, 0xd0, 0xf4, - 0xcb, 0xea, 0xd0, 0xf6, 0xcb, 0xea, 0xd0, 0xf4, 0xcb, 0xea, 0xd0, 0xf6, - 0xcb, 0xea, 0xd1, 0xf4, 0xcb, 0xea, 0xd1, 0xf6, 0xcb, 0xea, 0xd1, 0xf4, - 0xcb, 0xea, 0xd2, 0xf6, 0xcb, 0xea, 0xd2, 0xf4, 0xcb, 0xea, 0xd2, 0xf3, - 0xcb, 0xea, 0xd2, 0xf4, 0xcb, 0xea, 0xd3, 0xf3, 0xcb, 0xea, 0xd3, 0xf4, - 0xcb, 0xea, 0xd3, 0xfc, 0xd1, 0xea, 0xd4, 0xfc, 0xd1, 0xea, 0xd4, 0xfc, - 0xd1, 0xea, 0xd4, 0xfc, 0xd4, 0xea, 0xd4, 0xfc, 0xd4, 0xea, 0xd5, 0xfc, - 0xd4, 0xea, 0xd5, 0xfc, 0xd4, 0xea, 0xd5, 0xfc, 0xd4, 0xea, 0xd6, 0xfc, - 0xd4, 0xea, 0xd6, 0xfc, 0xd4, 0xea, 0xd6, 0xfc, 0xd4, 0xea, 0xd6, 0xfc, - 0xd4, 0xea, 0xd7, 0xfc, 0xd4, 0xea, 0xd7, 0xfc, 0xd4, 0xea, 0xd7, 0xfd, - 0xd7, 0xea, 0xd7, 0xfd, 0xd7, 0xea, 0xd8, 0xfd, 0xd7, 0xea, 0xd8, 0xfd, - 0xd7, 0xea, 0xd8, 0xfd, 0xd7, 0xea, 0xd9, 0xfd, 0xd7, 0xea, 0xd9, 0xfd, - 0xd7, 0xea, 0xd9, 0xfd, 0xd7, 0xea, 0xd9, 0xfd, 0xd7, 0xea, 0xda, 0xfd, - 0xd7, 0xea, 0xda, 0xfd, 0xd7, 0xea, 0xda, 0xfd, 0xda, 0xea, 0xda, 0xfd, - 0xda, 0xea, 0xdb, 0xfd, 0xda, 0xea, 0xdb, 0xf6, 0xe4, 0xea, 0xdb, 0xf7, - 0xe4, 0xea, 0xdb, 0xf6, 0xe4, 0xea, 0xdc, 0xf7, 0xe4, 0xea, 0xdc, 0xf6, - 0xe4, 0xea, 0xdc, 0xf7, 0xe4, 0xea, 0xdd, 0xf6, 0xe4, 0xea, 0xdd, 0xf7, - 0xe4, 0xea, 0xdd, 0xf6, 0xe4, 0xea, 0xdd, 0xf7, 0xe4, 0xea, 0xde, 0xf6, - 0xe4, 0xea, 0xde, 0xf7, 0xe4, 0xea, 0xde, 0xf6, 0xe4, 0xea, 0xde, 0xf7, - 0xe4, 0xea, 0xdf, 0xf6, 0xe4, 0xea, 0xdf, 0xf7, 0xe4, 0xea, 0xdf, 0xf6, - 0xe4, 0xea, 0xdf, 0xf7, 0xe4, 0xea, 0xe0, 0xf6, 0xe4, 0xea, 0xe0, 0xf7, - 0xe4, 0xea, 0xe0, 0xf6, 0xe4, 0xea, 0xe1, 0xf7, 0xe4, 0xea, 0xe1, 0xf6, - 0xe4, 0xea, 0xe1, 0xf7, 0xe4, 0xea, 0xe1, 0xf6, 0xe4, 0xea, 0xe2, 0xf7, - 0xe4, 0xea, 0xe2, 0xf6, 0xe4, 0xea, 0xe2, 0xf6, 0xe4, 0xea, 0xe2, 0xf6, - 0xe4, 0xea, 0xe3, 0xf6, 0xe4, 0xea, 0xe3, 0xf6, 0xe4, 0xea, 0xe3, 0xf6, - 0xe4, 0xea, 0xe3, 0xf6, 0xe4, 0xea, 0xe4, 0xf6, 0xe4, 0xea, 0xe4, 0xf6, - 0xe4, 0xe9, 0xe4, 0xf6, 0xe4, 0xea, 0xe4, 0xf6, 0xe4, 0xe9, 0xe4, 0xf6, - 0xe5, 0xea, 0xe6, 0xf6, 0xe5, 0xea, 0xe6, 0xf6, 0xe5, 0xea, 0xe6, 0xf6, - 0xe5, 0xea, 0xe6, 0xf6, 0xe6, 0xea, 0xe6, 0xf6, 0xe5, 0xea, 0xe6, 0xf6, - 0xe6, 0xea, 0xe6, 0xf6, 0xe5, 0xea, 0xe7, 0xf6, 0xe6, 0xea, 0xe7, 0xf5, - 0xe6, 0xea, 0xe7, 0xf6, 0xe6, 0xea, 0xe7, 0xf5, 0xe6, 0xea, 0xe8, 0xf6, - 0xe6, 0xea, 0xe8, 0xf5, 0xe6, 0xea, 0xe8, 0xf6, 0xe6, 0xea, 0xe8, 0xf5, - 0xe6, 0xea, 0xe9, 0xf6, 0xe6, 0xea, 0xe9, 0xf5, 0xe6, 0xea, 0xe9, 0xf6, - 0xe6, 0xea, 0xe9, 0xf5, 0xe6, 0xea, 0xea, 0xf6, 0xe6, 0xea, 0xea, 0xf5, - 0xe6, 0xea, 0xea, 0xf6, 0xe6, 0xea, 0xea, 0xf5, 0xe6, 0xea, 0xeb, 0xf6, - 0xe6, 0xea, 0xeb, 0xf8, 0xef, 0xea, 0xeb, 0xf6, 0xef, 0xea, 0xeb, 0xf8, - 0xef, 0xea, 0xec, 0xf6, 0xef, 0xea, 0xec, 0xf6, 0xf0, 0xea, 0xec, 0xf6, - 0xef, 0xea, 0xec, 0xf6, 0xf0, 0xea, 0xec, 0xf6, 0xef, 0xea, 0xed, 0xf6, - 0xf0, 0xea, 0xed, 0xf6, 0xef, 0xea, 0xed, 0xf6, 0xf0, 0xea, 0xed, 0xf6, - 0xef, 0xea, 0xee, 0xf6, 0xf0, 0xea, 0xee, 0xf6, 0xef, 0xea, 0xee, 0xf6, - 0xf0, 0xea, 0xee, 0xf6, 0xef, 0xea, 0xef, 0xf6, 0xf0, 0xea, 0xef, 0xf6, - 0xef, 0xea, 0xef, 0xf6, 0xf0, 0xea, 0xef, 0xf6, 0xef, 0xea, 0xef, 0xf6, - 0xf0, 0xea, 0xf0, 0xf5, 0xf0, 0xea, 0xf0, 0xf6, 0xf0, 0xea, 0xf0, 0xf5, - 0xf0, 0xea, 0xf1, 0xf6, 0xf0, 0xea, 0xf1, 0xf5, 0xf0, 0xea, 0xf1, 0xf6, - 0xf0, 0xea, 0xf1, 0xf5, 0xf0, 0xea, 0xf2, 0xf6, 0xf0, 0xea, 0xf2, 0xf5, - 0xf0, 0xea, 0xf2, 0xf6, 0xf0, 0xea, 0xf2, 0xf5, 0xf0, 0xea, 0xf2, 0xf6, - 0xf0, 0xea, 0xf3, 0xf5, 0xf0, 0xea, 0xf3, 0xf6, 0xf0, 0xea, 0xf3, 0xf5, - 0xf0, 0xea, 0xf3, 0xf6, 0xf0, 0xea, 0xf4, 0xf5, 0xf0, 0xea, 0xf4, 0xf4, - 0xf0, 0xea, 0xf4, 0xf5, 0xf0, 0xea, 0xf4, 0xf4, 0xf0, 0xea, 0xf5, 0xf5, - 0xf0, 0xea, 0xf5, 0xf4, 0xf0, 0xea, 0xf5, 0xf5, 0xf0, 0xea, 0xf5, 0xf4, - 0xf0, 0xea, 0xf5, 0xf5, 0xf0, 0xea, 0xf6, 0xf4, 0xf0, 0xea, 0xf6, 0xf5, - 0xf0, 0xea, 0xf6, 0xf4, 0xf0, 0xea, 0xf6, 0xf5, 0xf0, 0xea, 0xf7, 0xf4, - 0xf0, 0xea, 0xf7, 0xf5, 0xf0, 0xea, 0xf7, 0xf4, 0xf0, 0xea, 0xf7, 0xf5, - 0xf0, 0xea, 0xf8, 0xf4, 0xf0, 0xea, 0xf8, 0xf5, 0xf0, 0xea, 0xf8, 0xf4, - 0xf0, 0xea, 0xf8, 0xf5, 0xf0, 0xea, 0xf8, 0xf4, 0xf0, 0xea, 0xf9, 0xf5, - 0xf0, 0xea, 0xf9, 0xf4, 0xf0, 0xea, 0xf9, 0xf5, 0xf0, 0xea, 0xf9, 0xf4, - 0xf0, 0xea, 0xfa, 0xf5, 0xf0, 0xea, 0xfa, 0xf4, 0xf0, 0xea, 0xfa, 0xf5, - 0xf0, 0xea, 0xfa, 0xf4, 0xf0, 0xea, 0xfa, 0xf5, 0xf0, 0xea, 0xfb, 0xf4, - 0xf0, 0xea, 0xfb, 0xf5, 0xf0, 0xea, 0xfb, 0xf4, 0xf0, 0xea, 0xfb, 0xf2, - 0xf0, 0xea, 0xfc, 0xf4, 0xf0, 0xea, 0xfc, 0xf2, 0xf0, 0xea, 0xfc, 0xf4, - 0xf0, 0xea, 0xfc, 0xf2, 0xf0, 0xea, 0xfc, 0xf4, 0xf0, 0xea, 0xfd, 0xf2, - 0xf0, 0xea, 0xfd, 0xf4, 0xf0, 0xea, 0xfd, 0xf2, 0xf0, 0xea, 0xfd, 0xf4, - 0xf0, 0xea, 0xfe, 0xf2, 0xf0, 0xea, 0xfe, 0xf4, 0xf0, 0xea, 0xfe, 0xf2, - 0xf0, 0xea, 0xfe, 0xf4, 0xf0, 0xea, 0xfe, 0xf2, 0xf0, 0xea, 0xff, 0xf4, - 0xf0, 0xea, 0xff, 0xf2, 0xf0, 0xea, 0x03, 0xf4, 0x83, 0xeb, 0x0a, 0xf4, - 0x83, 0xeb, 0x0f, 0xf4, 0x83, 0xeb, 0x14, 0xf4, 0x83, 0xeb, 0x17, 0xf4, - 0x83, 0xeb, 0x1b, 0xf4, 0x83, 0xeb, 0x1e, 0xf4, 0x83, 0xeb, 0x20, 0xf4, - 0x83, 0xeb, 0x23, 0xf4, 0x83, 0xeb, 0x25, 0xf4, 0x83, 0xeb, 0x27, 0xf4, - 0x83, 0xeb, 0x29, 0xf4, 0x83, 0xeb, 0x2b, 0xf4, 0x83, 0xeb, 0x2d, 0xf4, - 0x83, 0xeb, 0x2f, 0xf4, 0x83, 0xeb, 0x31, 0xf4, 0x83, 0xeb, 0x32, 0xf4, - 0x83, 0xeb, 0x34, 0xf4, 0x83, 0xeb, 0x35, 0xf4, 0x83, 0xeb, 0x37, 0xf4, - 0x83, 0xeb, 0x38, 0xf4, 0x83, 0xeb, 0x3a, 0xf4, 0x83, 0xeb, 0x3b, 0xf4, - 0x83, 0xeb, 0x3c, 0xf4, 0x83, 0xeb, 0x3e, 0xf4, 0x83, 0xeb, 0x3f, 0xf4, - 0x83, 0xeb, 0x40, 0xf4, 0x83, 0xeb, 0x42, 0xf4, 0x83, 0xeb, 0x43, 0xf4, - 0x83, 0xeb, 0x44, 0xf4, 0x83, 0xeb, 0x45, 0xf4, 0x83, 0xeb, 0x46, 0xf4, - 0x83, 0xeb, 0x47, 0xf4, 0x83, 0xeb, 0x48, 0xf4, 0x83, 0xeb, 0x49, 0xf4, - 0x83, 0xeb, 0x4a, 0xf4, 0x83, 0xeb, 0x4b, 0xf4, 0x83, 0xeb, 0x4c, 0xf4, - 0x83, 0xeb, 0x4d, 0xf4, 0x83, 0xeb, 0x4e, 0xf4, 0x83, 0xeb, 0x4f, 0xf4, - 0x83, 0xeb, 0x50, 0xf4, 0x83, 0xeb, 0x51, 0xf4, 0x83, 0xeb, 0x52, 0xf4, - 0x83, 0xeb, 0x53, 0xf4, 0x83, 0xeb, 0x54, 0xf4, 0x83, 0xeb, 0x55, 0xf4, - 0x83, 0xeb, 0x56, 0xf4, 0x83, 0xeb, 0x57, 0xf4, 0x83, 0xeb, 0x58, 0xf4, - 0x83, 0xeb, 0x58, 0xf4, 0x83, 0xeb, 0x59, 0xf4, 0x83, 0xeb, 0x5a, 0xf4, - 0x83, 0xeb, 0x5b, 0xf4, 0x83, 0xeb, 0x5c, 0xf4, 0x83, 0xeb, 0x5d, 0xf4, - 0x83, 0xeb, 0x5d, 0xf4, 0x83, 0xeb, 0x5e, 0xf4, 0x83, 0xeb, 0x5f, 0xf4, - 0x83, 0xeb, 0x60, 0xf4, 0x83, 0xeb, 0x60, 0xf4, 0x83, 0xeb, 0x61, 0xf4, - 0x83, 0xeb, 0x62, 0xf4, 0x83, 0xeb, 0x63, 0xf4, 0x83, 0xeb, 0x63, 0xf4, - 0x83, 0xeb, 0x64, 0xf4, 0x83, 0xeb, 0x65, 0xf4, 0x83, 0xeb, 0x66, 0xf4, - 0x83, 0xeb, 0x66, 0xf4, 0x83, 0xeb, 0x67, 0xf4, 0x83, 0xeb, 0x68, 0xf4, - 0x83, 0xeb, 0x68, 0xf4, 0x83, 0xeb, 0x69, 0xf4, 0x83, 0xeb, 0x6a, 0xf4, - 0x83, 0xeb, 0x6a, 0xf4, 0x83, 0xeb, 0x6b, 0xf4, 0x83, 0xeb, 0x6c, 0xf4, - 0x83, 0xeb, 0x6c, 0xf4, 0x83, 0xeb, 0x6d, 0xf4, 0x83, 0xeb, 0x6e, 0xf4, - 0x83, 0xeb, 0x6e, 0xf4, 0x83, 0xeb, 0x6f, 0xf4, 0x83, 0xeb, 0x70, 0xf4, - 0x83, 0xeb, 0x70, 0xf4, 0x83, 0xeb, 0x71, 0xf4, 0x83, 0xeb, 0x72, 0xf4, - 0x83, 0xeb, 0x72, 0xf4, 0x83, 0xeb, 0x73, 0xf4, 0x83, 0xeb, 0x73, 0xf4, - 0x83, 0xeb, 0x74, 0xf4, 0x83, 0xeb, 0x75, 0xf4, 0x83, 0xeb, 0x75, 0xf4, - 0x83, 0xeb, 0x76, 0xf4, 0x83, 0xeb, 0x76, 0xf4, 0x83, 0xeb, 0x77, 0xf4, - 0x83, 0xeb, 0x78, 0xf4, 0x83, 0xeb, 0x78, 0xf4, 0x83, 0xeb, 0x79, 0xf4, - 0x83, 0xeb, 0x79, 0xf4, 0x83, 0xeb, 0x7a, 0xf4, 0x83, 0xeb, 0x7a, 0xf4, - 0x83, 0xeb, 0x7b, 0xf4, 0x83, 0xeb, 0x7c, 0xf4, 0x83, 0xeb, 0x7c, 0xf4, - 0x83, 0xeb, 0x7d, 0xf4, 0x83, 0xeb, 0x7d, 0xf4, 0x83, 0xeb, 0x7e, 0xf4, - 0x83, 0xeb, 0x7e, 0xf4, 0x83, 0xeb, 0x7f, 0xf4, 0x83, 0xeb, 0x7f, 0xf4, - 0x83, 0xeb, 0x80, 0xf4, 0x83, 0xeb, 0x81, 0xf4, 0x83, 0xeb, 0x81, 0xf4, - 0x83, 0xeb, 0x82, 0xf4, 0x83, 0xeb, 0x82, 0xf4, 0x83, 0xeb, 0x83, 0xf4, - 0x83, 0xeb, 0x83, 0xf4, 0x83, 0xeb, 0x84, 0xf4, 0x84, 0xeb, 0x84, 0xf4, - 0x84, 0xeb, 0x85, 0xf4, 0x85, 0xeb, 0x85, 0xf4, 0x85, 0xeb, 0x86, 0xf5, - 0x88, 0xeb, 0x86, 0xf5, 0x88, 0xeb, 0x87, 0xf5, 0x88, 0xeb, 0x87, 0xf5, - 0x88, 0xeb, 0x88, 0xf5, 0x88, 0xeb, 0x88, 0xf5, 0x88, 0xeb, 0x89, 0xf5, - 0x89, 0xeb, 0x89, 0xf5, 0x89, 0xeb, 0x8a, 0xf5, 0x8a, 0xeb, 0x8a, 0xf5, - 0x8a, 0xeb, 0x8b, 0xf5, 0x8b, 0xeb, 0x8b, 0xf5, 0x8d, 0xeb, 0x8c, 0xf5, - 0x8e, 0xeb, 0x8c, 0xf5, 0x8d, 0xeb, 0x8d, 0xf5, 0x8e, 0xeb, 0x8d, 0xf5, - 0x8d, 0xeb, 0x8e, 0xf5, 0x8e, 0xeb, 0x8e, 0xf5, 0x8e, 0xeb, 0x8e, 0xf5, - 0x8e, 0xeb, 0x8f, 0xf5, 0x8f, 0xeb, 0x8f, 0xf5, 0x8f, 0xeb, 0x90, 0xf5, - 0x90, 0xeb, 0x90, 0xf5, 0x90, 0xeb, 0x91, 0xf5, 0x91, 0xeb, 0x91, 0xf5, - 0x92, 0xeb, 0x92, 0xf5, 0x93, 0xeb, 0x92, 0xf5, 0x92, 0xeb, 0x93, 0xf5, - 0x93, 0xeb, 0x93, 0xf5, 0x93, 0xeb, 0x94, 0xf5, 0x94, 0xeb, 0x94, 0xf5, - 0x94, 0xeb, 0x94, 0xf5, 0x94, 0xeb, 0x95, 0xf5, 0x95, 0xeb, 0x95, 0xf5, - 0x95, 0xeb, 0x96, 0xf5, 0x96, 0xeb, 0x96, 0xf5, 0x96, 0xeb, 0x97, 0xf5, - 0x97, 0xeb, 0x97, 0xf6, 0x97, 0xec, 0x98, 0xf6, 0x98, 0xec, 0x98, 0xf6, - 0x98, 0xec, 0x98, 0xf6, 0x98, 0xec, 0x99, 0xf6, 0x99, 0xec, 0x99, 0xf6, - 0x99, 0xec, 0x9a, 0xf6, 0x9a, 0xec, 0x9a, 0xf6, 0x9a, 0xec, 0x9a, 0xf6, - 0x9a, 0xec, 0x9b, 0xf6, 0x9b, 0xec, 0x9b, 0xf6, 0x9b, 0xec, 0x9b, 0xf6, - 0x9c, 0xec, 0x9b, 0xf6, 0x9c, 0xec, 0x9d, 0xf6, 0x9d, 0xed, 0x9d, 0xf6, - 0x9d, 0xed, 0x9d, 0xf6, 0x9d, 0xed, 0x9e, 0xf6, 0x9e, 0xed, 0x9e, 0xf6, - 0x9e, 0xed, 0x9f, 0xf6, 0x9f, 0xed, 0x9f, 0xf6, 0x9f, 0xed, 0x9f, 0xf6, - 0x9f, 0xed, 0xa0, 0xf6, 0xa0, 0xed, 0x9f, 0xf6, 0xa0, 0xed, 0xa0, 0xf6, - 0xa1, 0xed, 0x9f, 0xf6, 0xa1, 0xed, 0xa0, 0xf6, 0xa1, 0xed, 0xa2, 0xf6, - 0xa2, 0xee, 0xa2, 0xf6, 0xa2, 0xee, 0xa3, 0xf6, 0xa3, 0xee, 0xa3, 0xf6, - 0xa3, 0xee, 0xa3, 0xf6, 0xa3, 0xee, 0xa4, 0xf6, 0xa4, 0xee, 0xa4, 0xf6, - 0xa4, 0xee, 0xa4, 0xf6, 0xa5, 0xee, 0xa4, 0xf6, 0xa5, 0xee, 0xa4, 0xf6, - 0xa5, 0xee, 0xa4, 0xf6, 0xa6, 0xee, 0xa6, 0xf6, 0xa6, 0xef, 0xa6, 0xf6, - 0xa6, 0xef, 0xa7, 0xf6, 0xa7, 0xef, 0xa7, 0xf6, 0xa7, 0xef, 0xa8, 0xf6, - 0xa8, 0xef, 0xa8, 0xf6, 0xa8, 0xef, 0xa8, 0xf6, 0xa8, 0xef, 0xa8, 0xf6, - 0xa9, 0xef, 0xa8, 0xf6, 0xa9, 0xef, 0xa8, 0xf6, 0xaa, 0xef, 0xa8, 0xf6, - 0xaa, 0xef, 0xaa, 0xf6, 0xaa, 0xf0, 0xab, 0xf6, 0xab, 0xf0, 0xab, 0xf6, - 0xab, 0xf0, 0xab, 0xf6, 0xab, 0xf0, 0xac, 0xf6, 0xac, 0xf0, 0xac, 0xf6, - 0xac, 0xf0, 0xac, 0xf6, 0xac, 0xf0, 0xac, 0xf6, 0xad, 0xf0, 0xac, 0xf6, - 0xad, 0xf0, 0xac, 0xf6, 0xae, 0xf0, 0xac, 0xf6, 0xae, 0xf0, 0xac, 0xf6, - 0xae, 0xf0, 0xac, 0xf6, 0xaf, 0xf0, 0xaf, 0xf6, 0xaf, 0xf1, 0xaf, 0xf6, - 0xaf, 0xf1, 0xb0, 0xf6, 0xb0, 0xf1, 0xb0, 0xf6, 0xb0, 0xf1, 0xb0, 0xf6, - 0xb0, 0xf1, 0xb0, 0xf6, 0xb1, 0xf1, 0xb0, 0xf6, 0xb1, 0xf1, 0xb0, 0xf6, - 0xb2, 0xf1, 0xb0, 0xf6, 0xb2, 0xf1, 0xb0, 0xf6, 0xb2, 0xf1, 0xb0, 0xf6, - 0xb3, 0xf1, 0xb3, 0xf6, 0xb3, 0xf2, 0xb3, 0xf6, 0xb3, 0xf2, 0xb4, 0xf6, - 0xb4, 0xf2, 0xb4, 0xf6, 0xb4, 0xf2, 0xb4, 0xf6, 0xb4, 0xf2, 0xb4, 0xf6, - 0xb5, 0xf2, 0xb4, 0xf6, 0xb5, 0xf2, 0xb4, 0xf6, 0xb5, 0xf2, 0xb4, 0xf6, - 0xb6, 0xf2, 0xb4, 0xf6, 0xb6, 0xf2, 0xb4, 0xf6, 0xb6, 0xf2, 0xb7, 0xf6, - 0xb7, 0xf3, 0xb7, 0xf6, 0xb7, 0xf3, 0xb7, 0xf6, 0xb7, 0xf3, 0xb8, 0xf6, - 0xb8, 0xf3, 0xb8, 0xf6, 0xb8, 0xf3, 0xb8, 0xf6, 0xb8, 0xf3, 0xb8, 0xf6, - 0xb9, 0xf3, 0xb8, 0xf6, 0xb9, 0xf3, 0xb8, 0xf6, 0xb9, 0xf3, 0xb8, 0xf6, - 0xba, 0xf3, 0xb8, 0xf6, 0xba, 0xf3, 0xb8, 0xf6, 0xba, 0xf3, 0xb8, 0xf6, - 0xbb, 0xf3, 0xbb, 0xf6, 0xbb, 0xf4, 0xbb, 0xf6, 0xbb, 0xf4, 0xbc, 0xf6, - 0xbc, 0xf4, 0xbb, 0xf6, 0xbc, 0xf4, 0xbc, 0xf6, 0xbc, 0xf4, 0xbb, 0xf6, - 0xbd, 0xf4, 0xbc, 0xf6, 0xbd, 0xf4, 0xbb, 0xf6, 0xbd, 0xf4, 0xbc, 0xf6, - 0xbe, 0xf4, 0xbb, 0xf6, 0xbe, 0xf4, 0xbc, 0xf6, 0xbe, 0xf4, 0xbf, 0xf6, - 0xbf, 0xf5, 0xbf, 0xf6, 0xbf, 0xf5, 0xbf, 0xf6, 0xbf, 0xf5, 0xbf, 0xf6, - 0xc0, 0xf5, 0xbf, 0xf6, 0xc0, 0xf5, 0xbf, 0xf6, 0xc0, 0xf5, 0xbf, 0xf6, - 0xc1, 0xf5, 0xbf, 0xf6, 0xc1, 0xf5, 0xbf, 0xf6, 0xc1, 0xf5, 0xbf, 0xf6, - 0xc1, 0xf5, 0xbf, 0xf6, 0xc2, 0xf5, 0xc2, 0xf6, 0xc2, 0xf6, 0xc2, 0xf6, - 0xc2, 0xf6, 0xc3, 0xf6, 0xc3, 0xf6, 0xc2, 0xf6, 0xc3, 0xf6, 0xc3, 0xf6, - 0xc3, 0xf6, 0xc2, 0xf6, 0xc4, 0xf6, 0xcb, 0xf6, 0xc4, 0xeb, 0xca, 0xf6, - 0xc4, 0xee, 0xcb, 0xf6, 0xc5, 0xeb, 0xca, 0xf6, 0xc5, 0xee, 0xcb, 0xf6, - 0xc5, 0xeb, 0xca, 0xf6, 0xc6, 0xee, 0xcb, 0xf6, 0xc6, 0xeb, 0xca, 0xf6, - 0xc6, 0xee, 0xcb, 0xf6, 0xc6, 0xeb, 0xca, 0xf6, 0xc7, 0xee, 0xcb, 0xf6, - 0xc7, 0xeb, 0xca, 0xf6, 0xc7, 0xee, 0xcb, 0xf6, 0xc8, 0xeb, 0xca, 0xf6, - 0xc8, 0xee, 0xcb, 0xf6, 0xc8, 0xeb, 0xcb, 0xf6, 0xc9, 0xeb, 0xcb, 0xf6, - 0xc9, 0xeb, 0xcb, 0xf6, 0xc9, 0xeb, 0xcb, 0xf6, 0xc9, 0xeb, 0xcb, 0xf6, - 0xca, 0xeb, 0xcb, 0xf6, 0xca, 0xeb, 0xcb, 0xf6, 0xca, 0xeb, 0xcb, 0xf5, - 0xcb, 0xeb, 0xcb, 0xf6, 0xca, 0xeb, 0xcb, 0xf5, 0xcb, 0xeb, 0xcc, 0xf6, - 0xca, 0xeb, 0xcc, 0xf5, 0xcb, 0xeb, 0xcc, 0xf6, 0xca, 0xeb, 0xcc, 0xf5, - 0xcb, 0xeb, 0xcd, 0xf6, 0xca, 0xeb, 0xcd, 0xf5, 0xcb, 0xeb, 0xcd, 0xf5, - 0xcb, 0xeb, 0xce, 0xf5, 0xcb, 0xeb, 0xce, 0xf5, 0xcb, 0xeb, 0xce, 0xf5, - 0xcb, 0xeb, 0xce, 0xf5, 0xcb, 0xeb, 0xcf, 0xf5, 0xcb, 0xeb, 0xcf, 0xf5, - 0xcb, 0xeb, 0xcf, 0xf5, 0xcb, 0xeb, 0xd0, 0xf5, 0xcb, 0xeb, 0xd0, 0xf5, - 0xcb, 0xeb, 0xd0, 0xf5, 0xcb, 0xeb, 0xd0, 0xf5, 0xcb, 0xeb, 0xd1, 0xf5, - 0xcb, 0xeb, 0xd1, 0xf5, 0xcb, 0xeb, 0xd1, 0xf5, 0xcb, 0xeb, 0xd2, 0xf5, - 0xcb, 0xeb, 0xd2, 0xf5, 0xcb, 0xeb, 0xd2, 0xf5, 0xcb, 0xeb, 0xd2, 0xf5, - 0xcb, 0xeb, 0xd3, 0xfc, 0xd3, 0xeb, 0xd3, 0xfc, 0xd2, 0xeb, 0xd3, 0xfc, - 0xd3, 0xeb, 0xd4, 0xfc, 0xd2, 0xeb, 0xd4, 0xfc, 0xd3, 0xeb, 0xd4, 0xfc, - 0xd2, 0xeb, 0xd4, 0xfc, 0xd3, 0xeb, 0xd5, 0xfc, 0xd2, 0xeb, 0xd5, 0xfc, - 0xd3, 0xeb, 0xd5, 0xfc, 0xd2, 0xeb, 0xd6, 0xfc, 0xd3, 0xeb, 0xd6, 0xfd, - 0xd6, 0xeb, 0xd6, 0xfd, 0xd6, 0xeb, 0xd6, 0xfd, 0xd6, 0xeb, 0xd7, 0xfd, - 0xd6, 0xeb, 0xd7, 0xfd, 0xd6, 0xeb, 0xd7, 0xfd, 0xd6, 0xeb, 0xd7, 0xfd, - 0xd6, 0xeb, 0xd8, 0xfd, 0xd6, 0xeb, 0xd8, 0xfd, 0xd6, 0xeb, 0xd8, 0xfd, - 0xd6, 0xeb, 0xd9, 0xfd, 0xd6, 0xeb, 0xd9, 0xfd, 0xd9, 0xeb, 0xd9, 0xfd, - 0xd9, 0xeb, 0xd9, 0xfd, 0xd9, 0xeb, 0xda, 0xfd, 0xd9, 0xeb, 0xda, 0xfd, - 0xd9, 0xeb, 0xda, 0xfd, 0xd9, 0xeb, 0xda, 0xfd, 0xd9, 0xeb, 0xdb, 0xfd, - 0xd9, 0xeb, 0xdb, 0xfd, 0xd9, 0xeb, 0xdb, 0xf7, 0xe4, 0xeb, 0xdb, 0xf8, - 0xe3, 0xeb, 0xdc, 0xf7, 0xe4, 0xeb, 0xdc, 0xf8, 0xe3, 0xeb, 0xdc, 0xf7, - 0xe4, 0xeb, 0xdd, 0xf8, 0xe3, 0xeb, 0xdd, 0xf7, 0xe4, 0xeb, 0xdd, 0xf8, - 0xe3, 0xeb, 0xdd, 0xf7, 0xe4, 0xeb, 0xde, 0xf6, 0xe4, 0xeb, 0xde, 0xf7, - 0xe4, 0xeb, 0xde, 0xf6, 0xe4, 0xeb, 0xde, 0xf7, 0xe4, 0xeb, 0xdf, 0xf6, - 0xe4, 0xeb, 0xdf, 0xf7, 0xe4, 0xeb, 0xdf, 0xf6, 0xe4, 0xeb, 0xdf, 0xf7, - 0xe4, 0xeb, 0xe0, 0xf6, 0xe4, 0xeb, 0xe0, 0xf7, 0xe4, 0xeb, 0xe0, 0xf6, - 0xe4, 0xeb, 0xe1, 0xf7, 0xe4, 0xeb, 0xe1, 0xf6, 0xe4, 0xeb, 0xe1, 0xf7, - 0xe4, 0xeb, 0xe1, 0xf6, 0xe4, 0xeb, 0xe2, 0xf7, 0xe4, 0xeb, 0xe2, 0xf6, - 0xe4, 0xeb, 0xe2, 0xf7, 0xe4, 0xeb, 0xe2, 0xf6, 0xe4, 0xeb, 0xe3, 0xf7, - 0xe4, 0xeb, 0xe3, 0xf6, 0xe4, 0xeb, 0xe3, 0xf6, 0xe4, 0xeb, 0xe3, 0xf6, - 0xe4, 0xeb, 0xe4, 0xf6, 0xe4, 0xeb, 0xe4, 0xf6, 0xe4, 0xea, 0xe4, 0xf6, - 0xe4, 0xeb, 0xe4, 0xf6, 0xe4, 0xea, 0xe4, 0xf6, 0xe5, 0xeb, 0xe6, 0xf6, - 0xe5, 0xeb, 0xe6, 0xf6, 0xe5, 0xec, 0xe6, 0xf6, 0xe5, 0xeb, 0xe6, 0xf6, - 0xe6, 0xeb, 0xe6, 0xf6, 0xe5, 0xeb, 0xe6, 0xf6, 0xe6, 0xeb, 0xe6, 0xf6, - 0xe5, 0xeb, 0xe7, 0xf6, 0xe6, 0xeb, 0xe7, 0xf5, 0xe6, 0xeb, 0xe7, 0xf6, - 0xe6, 0xeb, 0xe7, 0xf5, 0xe6, 0xeb, 0xe8, 0xf6, 0xe6, 0xeb, 0xe8, 0xf5, - 0xe6, 0xeb, 0xe8, 0xf6, 0xe6, 0xeb, 0xe8, 0xf5, 0xe6, 0xeb, 0xe9, 0xf6, - 0xe6, 0xeb, 0xe9, 0xf5, 0xe6, 0xeb, 0xe9, 0xf6, 0xe6, 0xeb, 0xe9, 0xf5, - 0xe6, 0xeb, 0xea, 0xf6, 0xe6, 0xeb, 0xea, 0xf5, 0xe6, 0xeb, 0xea, 0xf6, - 0xe6, 0xeb, 0xea, 0xf5, 0xe6, 0xeb, 0xeb, 0xf6, 0xe6, 0xeb, 0xeb, 0xf7, - 0xef, 0xeb, 0xeb, 0xf6, 0xef, 0xeb, 0xeb, 0xf7, 0xef, 0xeb, 0xec, 0xf6, - 0xef, 0xeb, 0xec, 0xf7, 0xef, 0xeb, 0xec, 0xf6, 0xef, 0xeb, 0xec, 0xf7, - 0xef, 0xeb, 0xec, 0xf6, 0xef, 0xeb, 0xed, 0xf7, 0xef, 0xeb, 0xed, 0xf6, - 0xef, 0xeb, 0xed, 0xf7, 0xef, 0xeb, 0xed, 0xf6, 0xef, 0xeb, 0xee, 0xf6, - 0xf0, 0xeb, 0xee, 0xf6, 0xef, 0xeb, 0xee, 0xf6, 0xf0, 0xeb, 0xee, 0xf6, - 0xef, 0xeb, 0xef, 0xf6, 0xf0, 0xeb, 0xef, 0xf6, 0xef, 0xeb, 0xef, 0xf6, - 0xf0, 0xeb, 0xef, 0xf6, 0xef, 0xea, 0xef, 0xf6, 0xf0, 0xeb, 0xf0, 0xf6, - 0xef, 0xeb, 0xf0, 0xf6, 0xf0, 0xeb, 0xf0, 0xf6, 0xef, 0xeb, 0xf1, 0xf6, - 0xf0, 0xeb, 0xf1, 0xf5, 0xf0, 0xeb, 0xf1, 0xf6, 0xf0, 0xeb, 0xf1, 0xf5, - 0xf0, 0xeb, 0xf2, 0xf6, 0xf0, 0xeb, 0xf2, 0xf5, 0xf0, 0xeb, 0xf2, 0xf6, - 0xf0, 0xeb, 0xf2, 0xf5, 0xf0, 0xeb, 0xf2, 0xf6, 0xf0, 0xeb, 0xf3, 0xf5, - 0xf0, 0xeb, 0xf3, 0xf6, 0xf0, 0xeb, 0xf3, 0xf5, 0xf0, 0xeb, 0xf3, 0xf6, - 0xf0, 0xeb, 0xf4, 0xf5, 0xf0, 0xeb, 0xf4, 0xf6, 0xf0, 0xeb, 0xf4, 0xf5, - 0xf0, 0xeb, 0xf4, 0xf6, 0xf0, 0xeb, 0xf5, 0xf5, 0xf0, 0xeb, 0xf5, 0xf6, - 0xf0, 0xeb, 0xf5, 0xf5, 0xf0, 0xeb, 0xf5, 0xf6, 0xf0, 0xeb, 0xf5, 0xf5, - 0xf0, 0xeb, 0xf6, 0xf4, 0xf0, 0xeb, 0xf6, 0xf5, 0xf0, 0xeb, 0xf6, 0xf4, - 0xf0, 0xeb, 0xf6, 0xf5, 0xf0, 0xeb, 0xf7, 0xf4, 0xf0, 0xeb, 0xf7, 0xf5, - 0xf0, 0xeb, 0xf7, 0xf4, 0xf0, 0xeb, 0xf7, 0xf5, 0xf0, 0xeb, 0xf8, 0xf4, - 0xf0, 0xeb, 0xf8, 0xf5, 0xf0, 0xeb, 0xf8, 0xf4, 0xf0, 0xeb, 0xf8, 0xf5, - 0xf0, 0xeb, 0xf8, 0xf4, 0xf0, 0xeb, 0xf9, 0xf5, 0xf0, 0xeb, 0xf9, 0xf4, - 0xf0, 0xeb, 0xf9, 0xf5, 0xf0, 0xeb, 0xf9, 0xf4, 0xf0, 0xeb, 0xfa, 0xf5, - 0xf0, 0xeb, 0xfa, 0xf4, 0xf0, 0xeb, 0xfa, 0xf5, 0xf0, 0xeb, 0xfa, 0xf4, - 0xf0, 0xeb, 0xfa, 0xf5, 0xf0, 0xeb, 0xfb, 0xf4, 0xf0, 0xeb, 0xfb, 0xf5, - 0xf0, 0xeb, 0xfb, 0xf4, 0xf0, 0xeb, 0xfb, 0xf5, 0xf0, 0xeb, 0xfc, 0xf4, - 0xf0, 0xeb, 0xfc, 0xf5, 0xf0, 0xeb, 0xfc, 0xf4, 0xf0, 0xeb, 0xfc, 0xf5, - 0xf0, 0xeb, 0xfc, 0xf4, 0xf0, 0xeb, 0xfd, 0xf5, 0xf0, 0xeb, 0xfd, 0xf4, - 0xf0, 0xeb, 0xfd, 0xf5, 0xf0, 0xeb, 0xfd, 0xf4, 0xf0, 0xeb, 0xfe, 0xf5, - 0xf0, 0xeb, 0xfe, 0xf4, 0xf0, 0xeb, 0xfe, 0xf2, 0xf0, 0xeb, 0xfe, 0xf4, - 0xf0, 0xeb, 0xfe, 0xf2, 0xf0, 0xeb, 0xff, 0xf4, 0xf0, 0xeb, 0xff, 0xf2, - 0xf0, 0xeb, 0x03, 0xf4, 0x83, 0xeb, 0x0a, 0xf4, 0x83, 0xeb, 0x0f, 0xf4, - 0x83, 0xeb, 0x14, 0xf4, 0x83, 0xeb, 0x17, 0xf4, 0x83, 0xeb, 0x1b, 0xf4, - 0x83, 0xeb, 0x1e, 0xf4, 0x83, 0xeb, 0x20, 0xf4, 0x83, 0xeb, 0x23, 0xf4, - 0x83, 0xeb, 0x25, 0xf4, 0x83, 0xeb, 0x27, 0xf4, 0x83, 0xeb, 0x29, 0xf4, - 0x83, 0xeb, 0x2b, 0xf4, 0x83, 0xeb, 0x2d, 0xf4, 0x83, 0xeb, 0x2f, 0xf4, - 0x83, 0xeb, 0x31, 0xf4, 0x83, 0xeb, 0x32, 0xf4, 0x83, 0xeb, 0x34, 0xf4, - 0x83, 0xeb, 0x35, 0xf4, 0x83, 0xeb, 0x37, 0xf4, 0x83, 0xeb, 0x38, 0xf4, - 0x83, 0xeb, 0x3a, 0xf4, 0x83, 0xeb, 0x3b, 0xf4, 0x83, 0xeb, 0x3c, 0xf4, - 0x83, 0xeb, 0x3e, 0xf4, 0x83, 0xeb, 0x3f, 0xf4, 0x83, 0xeb, 0x40, 0xf4, - 0x83, 0xeb, 0x42, 0xf4, 0x83, 0xeb, 0x43, 0xf4, 0x83, 0xeb, 0x44, 0xf4, - 0x83, 0xeb, 0x45, 0xf4, 0x83, 0xeb, 0x46, 0xf4, 0x83, 0xeb, 0x47, 0xf4, - 0x83, 0xeb, 0x48, 0xf4, 0x83, 0xeb, 0x49, 0xf4, 0x83, 0xeb, 0x4a, 0xf4, - 0x83, 0xeb, 0x4b, 0xf4, 0x83, 0xeb, 0x4c, 0xf4, 0x83, 0xeb, 0x4d, 0xf4, - 0x83, 0xeb, 0x4e, 0xf4, 0x83, 0xeb, 0x4f, 0xf4, 0x83, 0xeb, 0x50, 0xf4, - 0x83, 0xeb, 0x51, 0xf4, 0x83, 0xeb, 0x52, 0xf4, 0x83, 0xeb, 0x53, 0xf4, - 0x83, 0xeb, 0x54, 0xf4, 0x83, 0xeb, 0x55, 0xf4, 0x83, 0xeb, 0x56, 0xf4, - 0x83, 0xeb, 0x57, 0xf4, 0x83, 0xeb, 0x58, 0xf4, 0x83, 0xeb, 0x58, 0xf4, - 0x83, 0xeb, 0x59, 0xf4, 0x83, 0xeb, 0x5a, 0xf4, 0x83, 0xeb, 0x5b, 0xf4, - 0x83, 0xeb, 0x5c, 0xf4, 0x83, 0xeb, 0x5d, 0xf4, 0x83, 0xeb, 0x5d, 0xf4, - 0x83, 0xeb, 0x5e, 0xf4, 0x83, 0xeb, 0x5f, 0xf4, 0x83, 0xeb, 0x60, 0xf4, - 0x83, 0xeb, 0x60, 0xf4, 0x83, 0xeb, 0x61, 0xf4, 0x83, 0xeb, 0x62, 0xf4, - 0x83, 0xeb, 0x63, 0xf4, 0x83, 0xeb, 0x63, 0xf4, 0x83, 0xeb, 0x64, 0xf4, - 0x83, 0xeb, 0x65, 0xf4, 0x83, 0xeb, 0x66, 0xf4, 0x83, 0xeb, 0x66, 0xf4, - 0x83, 0xeb, 0x67, 0xf4, 0x83, 0xeb, 0x68, 0xf4, 0x83, 0xeb, 0x68, 0xf4, - 0x83, 0xeb, 0x69, 0xf4, 0x83, 0xeb, 0x6a, 0xf4, 0x83, 0xeb, 0x6a, 0xf4, - 0x83, 0xeb, 0x6b, 0xf4, 0x83, 0xeb, 0x6c, 0xf4, 0x83, 0xeb, 0x6c, 0xf4, - 0x83, 0xeb, 0x6d, 0xf4, 0x83, 0xeb, 0x6e, 0xf4, 0x83, 0xeb, 0x6e, 0xf4, - 0x83, 0xeb, 0x6f, 0xf4, 0x83, 0xeb, 0x70, 0xf4, 0x83, 0xeb, 0x70, 0xf4, - 0x83, 0xeb, 0x71, 0xf4, 0x83, 0xeb, 0x72, 0xf4, 0x83, 0xeb, 0x72, 0xf4, - 0x83, 0xeb, 0x73, 0xf4, 0x83, 0xeb, 0x73, 0xf4, 0x83, 0xeb, 0x74, 0xf4, - 0x83, 0xeb, 0x75, 0xf4, 0x83, 0xeb, 0x75, 0xf4, 0x83, 0xeb, 0x76, 0xf4, - 0x83, 0xeb, 0x76, 0xf4, 0x83, 0xeb, 0x77, 0xf4, 0x83, 0xeb, 0x78, 0xf4, - 0x83, 0xeb, 0x78, 0xf4, 0x83, 0xeb, 0x79, 0xf4, 0x83, 0xeb, 0x79, 0xf4, - 0x83, 0xeb, 0x7a, 0xf4, 0x83, 0xeb, 0x7a, 0xf4, 0x83, 0xeb, 0x7b, 0xf4, - 0x83, 0xeb, 0x7c, 0xf4, 0x83, 0xeb, 0x7c, 0xf4, 0x83, 0xeb, 0x7d, 0xf4, - 0x83, 0xeb, 0x7d, 0xf4, 0x83, 0xeb, 0x7e, 0xf4, 0x83, 0xeb, 0x7e, 0xf4, - 0x83, 0xeb, 0x7f, 0xf4, 0x83, 0xeb, 0x7f, 0xf4, 0x83, 0xeb, 0x80, 0xf4, - 0x83, 0xeb, 0x81, 0xf4, 0x83, 0xeb, 0x81, 0xf4, 0x83, 0xeb, 0x82, 0xf4, - 0x83, 0xeb, 0x82, 0xf4, 0x85, 0xeb, 0x83, 0xf4, 0x83, 0xeb, 0x83, 0xf4, - 0x85, 0xeb, 0x84, 0xf4, 0x86, 0xeb, 0x84, 0xf4, 0x85, 0xeb, 0x85, 0xf4, - 0x86, 0xeb, 0x85, 0xf4, 0x85, 0xeb, 0x86, 0xf4, 0x86, 0xeb, 0x86, 0xf4, - 0x86, 0xeb, 0x87, 0xf4, 0x87, 0xeb, 0x87, 0xf4, 0x87, 0xeb, 0x88, 0xf4, - 0x88, 0xeb, 0x88, 0xf4, 0x88, 0xeb, 0x89, 0xf5, 0x8b, 0xeb, 0x89, 0xf5, - 0x8b, 0xeb, 0x8a, 0xf5, 0x8b, 0xeb, 0x8a, 0xf5, 0x8b, 0xeb, 0x8b, 0xf5, - 0x8b, 0xeb, 0x8b, 0xf5, 0x8b, 0xeb, 0x8c, 0xf5, 0x8c, 0xeb, 0x8c, 0xf5, - 0x8c, 0xeb, 0x8d, 0xf5, 0x8d, 0xeb, 0x8d, 0xf5, 0x8d, 0xeb, 0x8e, 0xf5, - 0x8e, 0xeb, 0x8e, 0xf5, 0x90, 0xeb, 0x8e, 0xf5, 0x90, 0xeb, 0x8f, 0xf5, - 0x90, 0xeb, 0x8f, 0xf5, 0x90, 0xeb, 0x90, 0xf5, 0x90, 0xeb, 0x90, 0xf5, - 0x90, 0xeb, 0x91, 0xf5, 0x91, 0xeb, 0x91, 0xf5, 0x91, 0xeb, 0x92, 0xf5, - 0x92, 0xeb, 0x92, 0xf5, 0x92, 0xeb, 0x93, 0xf5, 0x93, 0xeb, 0x93, 0xf5, - 0x93, 0xeb, 0x94, 0xf5, 0x94, 0xeb, 0x94, 0xf6, 0x95, 0xeb, 0x94, 0xf6, - 0x95, 0xeb, 0x95, 0xf6, 0x95, 0xeb, 0x95, 0xf6, 0x95, 0xeb, 0x96, 0xf6, - 0x96, 0xeb, 0x96, 0xf6, 0x96, 0xeb, 0x97, 0xf6, 0x97, 0xeb, 0x97, 0xf6, - 0x97, 0xeb, 0x98, 0xf6, 0x98, 0xeb, 0x98, 0xf6, 0x98, 0xeb, 0x98, 0xf6, - 0x98, 0xeb, 0x99, 0xf6, 0x99, 0xeb, 0x99, 0xf6, 0x99, 0xeb, 0x9a, 0xf6, - 0x9a, 0xec, 0x9a, 0xf6, 0x9a, 0xec, 0x9a, 0xf6, 0x9a, 0xec, 0x9b, 0xf6, - 0x9b, 0xec, 0x9b, 0xf6, 0x9b, 0xec, 0x9c, 0xf6, 0x9c, 0xec, 0x9c, 0xf6, - 0x9c, 0xec, 0x9d, 0xf6, 0x9d, 0xec, 0x9d, 0xf6, 0x9d, 0xec, 0x9d, 0xf6, - 0x9d, 0xec, 0x9e, 0xf6, 0x9e, 0xec, 0x9d, 0xf6, 0x9e, 0xec, 0x9e, 0xf6, - 0x9f, 0xec, 0x9f, 0xf6, 0x9f, 0xed, 0x9f, 0xf6, 0x9f, 0xed, 0xa0, 0xf6, - 0xa0, 0xed, 0xa0, 0xf6, 0xa0, 0xed, 0xa1, 0xf6, 0xa1, 0xed, 0xa1, 0xf6, - 0xa1, 0xed, 0xa1, 0xf6, 0xa1, 0xed, 0xa2, 0xf6, 0xa2, 0xed, 0xa2, 0xf6, - 0xa2, 0xed, 0xa2, 0xf6, 0xa3, 0xed, 0xa2, 0xf6, 0xa3, 0xed, 0xa2, 0xf6, - 0xa3, 0xed, 0xa2, 0xf6, 0xa4, 0xed, 0xa4, 0xf6, 0xa4, 0xee, 0xa5, 0xf6, - 0xa5, 0xee, 0xa5, 0xf6, 0xa5, 0xee, 0xa5, 0xf6, 0xa5, 0xee, 0xa6, 0xf6, - 0xa6, 0xee, 0xa6, 0xf6, 0xa6, 0xee, 0xa6, 0xf6, 0xa6, 0xee, 0xa6, 0xf6, - 0xa7, 0xee, 0xa6, 0xf6, 0xa7, 0xee, 0xa6, 0xf6, 0xa8, 0xee, 0xa6, 0xf6, - 0xa8, 0xee, 0xa8, 0xf6, 0xa8, 0xef, 0xa9, 0xf6, 0xa9, 0xef, 0xa9, 0xf6, - 0xa9, 0xef, 0xaa, 0xf6, 0xaa, 0xef, 0xaa, 0xf6, 0xaa, 0xef, 0xaa, 0xf6, - 0xaa, 0xef, 0xab, 0xf6, 0xab, 0xef, 0xaa, 0xf6, 0xab, 0xef, 0xab, 0xf6, - 0xab, 0xef, 0xaa, 0xf6, 0xac, 0xef, 0xab, 0xf6, 0xac, 0xef, 0xac, 0xf6, - 0xac, 0xf0, 0xad, 0xf6, 0xad, 0xf0, 0xad, 0xf6, 0xad, 0xf0, 0xae, 0xf6, - 0xae, 0xf0, 0xae, 0xf6, 0xae, 0xf0, 0xae, 0xf6, 0xae, 0xf0, 0xaf, 0xf6, - 0xaf, 0xf0, 0xae, 0xf6, 0xaf, 0xf0, 0xaf, 0xf6, 0xaf, 0xf0, 0xae, 0xf6, - 0xb0, 0xf0, 0xaf, 0xf6, 0xb0, 0xf0, 0xae, 0xf6, 0xb0, 0xf0, 0xaf, 0xf6, - 0xb1, 0xf0, 0xb1, 0xf6, 0xb1, 0xf1, 0xb2, 0xf6, 0xb2, 0xf1, 0xb2, 0xf6, - 0xb2, 0xf1, 0xb2, 0xf6, 0xb2, 0xf1, 0xb3, 0xf6, 0xb3, 0xf1, 0xb2, 0xf6, - 0xb3, 0xf1, 0xb3, 0xf6, 0xb3, 0xf1, 0xb2, 0xf6, 0xb4, 0xf1, 0xb3, 0xf6, - 0xb4, 0xf1, 0xb2, 0xf6, 0xb4, 0xf1, 0xb3, 0xf6, 0xb5, 0xf1, 0xb5, 0xf6, - 0xb5, 0xf2, 0xb5, 0xf6, 0xb5, 0xf2, 0xb6, 0xf6, 0xb6, 0xf2, 0xb6, 0xf6, - 0xb6, 0xf2, 0xb6, 0xf6, 0xb6, 0xf2, 0xb6, 0xf6, 0xb7, 0xf2, 0xb6, 0xf6, - 0xb7, 0xf2, 0xb6, 0xf6, 0xb7, 0xf2, 0xb6, 0xf6, 0xb8, 0xf2, 0xb6, 0xf6, - 0xb8, 0xf2, 0xb6, 0xf6, 0xb8, 0xf2, 0xb9, 0xf6, 0xb9, 0xf3, 0xb9, 0xf6, - 0xb9, 0xf3, 0xb9, 0xf6, 0xb9, 0xf3, 0xba, 0xf6, 0xba, 0xf3, 0xba, 0xf6, - 0xba, 0xf3, 0xba, 0xf6, 0xba, 0xf3, 0xba, 0xf6, 0xbb, 0xf3, 0xba, 0xf6, - 0xbb, 0xf3, 0xba, 0xf6, 0xbb, 0xf3, 0xba, 0xf6, 0xbc, 0xf3, 0xba, 0xf6, - 0xbc, 0xf3, 0xba, 0xf6, 0xbc, 0xf3, 0xba, 0xf6, 0xbd, 0xf3, 0xbd, 0xf6, - 0xbd, 0xf4, 0xbd, 0xf6, 0xbd, 0xf4, 0xbe, 0xf6, 0xbe, 0xf4, 0xbd, 0xf6, - 0xbe, 0xf4, 0xbe, 0xf6, 0xbe, 0xf4, 0xbd, 0xf6, 0xbf, 0xf4, 0xbe, 0xf6, - 0xbf, 0xf4, 0xbd, 0xf6, 0xbf, 0xf4, 0xbe, 0xf6, 0xc0, 0xf4, 0xbd, 0xf6, - 0xc0, 0xf4, 0xbe, 0xf6, 0xc0, 0xf4, 0xc1, 0xf6, 0xc1, 0xf5, 0xc1, 0xf6, - 0xc1, 0xf5, 0xc1, 0xf6, 0xc1, 0xf5, 0xc1, 0xf6, 0xc1, 0xf5, 0xc1, 0xf6, - 0xc2, 0xf5, 0xc1, 0xf6, 0xc2, 0xf5, 0xc1, 0xf6, 0xc2, 0xf5, 0xc1, 0xf6, - 0xc3, 0xf5, 0xc1, 0xf6, 0xc3, 0xf5, 0xc1, 0xf6, 0xc3, 0xf5, 0xc1, 0xf6, - 0xc4, 0xf5, 0xcb, 0xf6, 0xc4, 0xeb, 0xca, 0xf6, 0xc4, 0xee, 0xcb, 0xf6, - 0xc5, 0xeb, 0xca, 0xf6, 0xc5, 0xee, 0xcb, 0xf6, 0xc5, 0xeb, 0xca, 0xf6, - 0xc6, 0xee, 0xcb, 0xf6, 0xc6, 0xeb, 0xca, 0xf6, 0xc6, 0xee, 0xcb, 0xf6, - 0xc6, 0xeb, 0xca, 0xf6, 0xc7, 0xee, 0xcb, 0xf6, 0xc7, 0xeb, 0xca, 0xf6, - 0xc7, 0xee, 0xcb, 0xf6, 0xc8, 0xeb, 0xca, 0xf6, 0xc8, 0xee, 0xcb, 0xf6, - 0xc8, 0xeb, 0xcb, 0xf6, 0xc9, 0xeb, 0xcb, 0xf6, 0xc9, 0xeb, 0xcb, 0xf6, - 0xc9, 0xeb, 0xcb, 0xf6, 0xc9, 0xeb, 0xcb, 0xf6, 0xca, 0xeb, 0xcb, 0xf6, - 0xca, 0xeb, 0xcb, 0xf6, 0xca, 0xeb, 0xcb, 0xf6, 0xcb, 0xeb, 0xcb, 0xf6, - 0xca, 0xeb, 0xcb, 0xf6, 0xcb, 0xeb, 0xcc, 0xf6, 0xca, 0xeb, 0xcc, 0xf6, - 0xcb, 0xeb, 0xcc, 0xf6, 0xca, 0xeb, 0xcc, 0xf6, 0xcb, 0xeb, 0xcd, 0xf6, - 0xca, 0xeb, 0xcd, 0xf6, 0xcb, 0xeb, 0xcd, 0xf6, 0xca, 0xeb, 0xce, 0xf6, - 0xcb, 0xeb, 0xce, 0xf6, 0xca, 0xeb, 0xce, 0xf6, 0xcb, 0xeb, 0xce, 0xf6, - 0xca, 0xeb, 0xcf, 0xf6, 0xcb, 0xeb, 0xcf, 0xf6, 0xca, 0xeb, 0xcf, 0xf6, - 0xcb, 0xeb, 0xd0, 0xf4, 0xcb, 0xeb, 0xd0, 0xf6, 0xcb, 0xeb, 0xd0, 0xf4, - 0xcb, 0xeb, 0xd0, 0xf6, 0xcb, 0xeb, 0xd1, 0xf4, 0xcb, 0xeb, 0xd1, 0xf6, - 0xcb, 0xeb, 0xd1, 0xf4, 0xcb, 0xeb, 0xd2, 0xf6, 0xcb, 0xeb, 0xd2, 0xf4, - 0xcb, 0xeb, 0xd2, 0xf6, 0xcb, 0xeb, 0xd2, 0xfc, 0xd1, 0xeb, 0xd3, 0xfc, - 0xd1, 0xeb, 0xd3, 0xfc, 0xd1, 0xeb, 0xd3, 0xfc, 0xd1, 0xeb, 0xd4, 0xfc, - 0xd1, 0xeb, 0xd4, 0xfc, 0xd1, 0xeb, 0xd4, 0xfc, 0xd4, 0xeb, 0xd4, 0xfc, - 0xd4, 0xeb, 0xd5, 0xfc, 0xd4, 0xeb, 0xd5, 0xfc, 0xd4, 0xeb, 0xd5, 0xfc, - 0xd4, 0xeb, 0xd6, 0xfc, 0xd4, 0xeb, 0xd6, 0xfc, 0xd4, 0xeb, 0xd6, 0xfc, - 0xd4, 0xeb, 0xd6, 0xfc, 0xd4, 0xeb, 0xd7, 0xfc, 0xd4, 0xeb, 0xd7, 0xfc, - 0xd4, 0xeb, 0xd7, 0xfd, 0xd7, 0xeb, 0xd7, 0xfd, 0xd7, 0xeb, 0xd8, 0xfd, - 0xd7, 0xeb, 0xd8, 0xfd, 0xd7, 0xeb, 0xd8, 0xfd, 0xd7, 0xeb, 0xd9, 0xfd, - 0xd7, 0xeb, 0xd9, 0xfd, 0xd7, 0xeb, 0xd9, 0xfd, 0xd7, 0xeb, 0xd9, 0xfd, - 0xd7, 0xeb, 0xda, 0xfd, 0xd7, 0xeb, 0xda, 0xfd, 0xd7, 0xeb, 0xda, 0xfd, - 0xda, 0xeb, 0xda, 0xfd, 0xda, 0xeb, 0xdb, 0xfd, 0xda, 0xeb, 0xdb, 0xfd, - 0xda, 0xeb, 0xdb, 0xf7, 0xe4, 0xeb, 0xdb, 0xf8, 0xe3, 0xeb, 0xdc, 0xf7, - 0xe4, 0xeb, 0xdc, 0xf8, 0xe3, 0xeb, 0xdc, 0xf7, 0xe4, 0xeb, 0xdd, 0xf8, - 0xe3, 0xeb, 0xdd, 0xf7, 0xe4, 0xeb, 0xdd, 0xf8, 0xe3, 0xeb, 0xdd, 0xf7, - 0xe4, 0xeb, 0xde, 0xf6, 0xe4, 0xeb, 0xde, 0xf7, 0xe4, 0xeb, 0xde, 0xf6, - 0xe4, 0xeb, 0xde, 0xf7, 0xe4, 0xeb, 0xdf, 0xf6, 0xe4, 0xeb, 0xdf, 0xf7, - 0xe4, 0xeb, 0xdf, 0xf6, 0xe4, 0xeb, 0xdf, 0xf7, 0xe4, 0xeb, 0xe0, 0xf6, - 0xe4, 0xeb, 0xe0, 0xf7, 0xe4, 0xeb, 0xe0, 0xf6, 0xe4, 0xeb, 0xe1, 0xf7, - 0xe4, 0xeb, 0xe1, 0xf6, 0xe4, 0xeb, 0xe1, 0xf7, 0xe4, 0xeb, 0xe1, 0xf6, - 0xe4, 0xeb, 0xe2, 0xf7, 0xe4, 0xeb, 0xe2, 0xf6, 0xe4, 0xeb, 0xe2, 0xf7, - 0xe4, 0xeb, 0xe2, 0xf6, 0xe4, 0xeb, 0xe3, 0xf7, 0xe4, 0xeb, 0xe3, 0xf6, - 0xe4, 0xeb, 0xe3, 0xf6, 0xe4, 0xeb, 0xe3, 0xf6, 0xe4, 0xeb, 0xe4, 0xf6, - 0xe4, 0xeb, 0xe3, 0xf6, 0xe4, 0xeb, 0xe4, 0xf6, 0xe4, 0xeb, 0xe3, 0xf6, - 0xe4, 0xeb, 0xe4, 0xf6, 0xe5, 0xeb, 0xe6, 0xf6, 0xe5, 0xeb, 0xe6, 0xf6, - 0xe5, 0xec, 0xe6, 0xf6, 0xe5, 0xeb, 0xe6, 0xf6, 0xe6, 0xeb, 0xe6, 0xf6, - 0xe5, 0xeb, 0xe6, 0xf6, 0xe6, 0xeb, 0xe6, 0xf6, 0xe5, 0xeb, 0xe7, 0xf6, - 0xe6, 0xeb, 0xe7, 0xf6, 0xe5, 0xeb, 0xe7, 0xf6, 0xe6, 0xeb, 0xe7, 0xf6, - 0xe5, 0xeb, 0xe8, 0xf6, 0xe6, 0xeb, 0xe8, 0xf5, 0xe6, 0xeb, 0xe8, 0xf6, - 0xe6, 0xeb, 0xe8, 0xf5, 0xe6, 0xeb, 0xe9, 0xf6, 0xe6, 0xeb, 0xe9, 0xf5, - 0xe6, 0xeb, 0xe9, 0xf6, 0xe6, 0xeb, 0xe9, 0xf5, 0xe6, 0xeb, 0xea, 0xf6, - 0xe6, 0xeb, 0xea, 0xf5, 0xe6, 0xeb, 0xea, 0xf6, 0xe6, 0xeb, 0xea, 0xf5, - 0xe6, 0xeb, 0xeb, 0xf6, 0xe6, 0xeb, 0xeb, 0xf8, 0xef, 0xeb, 0xeb, 0xf6, - 0xef, 0xeb, 0xeb, 0xf8, 0xef, 0xeb, 0xec, 0xf6, 0xef, 0xeb, 0xec, 0xf8, - 0xef, 0xeb, 0xec, 0xf6, 0xef, 0xeb, 0xec, 0xf8, 0xef, 0xeb, 0xec, 0xf6, - 0xef, 0xeb, 0xed, 0xf8, 0xef, 0xeb, 0xed, 0xf6, 0xef, 0xeb, 0xed, 0xf8, - 0xef, 0xeb, 0xed, 0xf6, 0xef, 0xeb, 0xee, 0xf6, 0xf0, 0xeb, 0xee, 0xf6, - 0xef, 0xeb, 0xee, 0xf6, 0xf0, 0xeb, 0xee, 0xf6, 0xef, 0xeb, 0xef, 0xf6, - 0xf0, 0xeb, 0xef, 0xf6, 0xef, 0xeb, 0xef, 0xf6, 0xf0, 0xeb, 0xef, 0xf6, - 0xef, 0xea, 0xef, 0xf6, 0xf0, 0xeb, 0xf0, 0xf6, 0xef, 0xeb, 0xf0, 0xf6, - 0xf0, 0xeb, 0xf0, 0xf6, 0xef, 0xeb, 0xf1, 0xf6, 0xf0, 0xeb, 0xf1, 0xf5, - 0xf0, 0xeb, 0xf1, 0xf6, 0xf0, 0xeb, 0xf1, 0xf5, 0xf0, 0xeb, 0xf2, 0xf6, - 0xf0, 0xeb, 0xf2, 0xf5, 0xf0, 0xeb, 0xf2, 0xf6, 0xf0, 0xeb, 0xf2, 0xf5, - 0xf0, 0xeb, 0xf2, 0xf6, 0xf0, 0xeb, 0xf3, 0xf5, 0xf0, 0xeb, 0xf3, 0xf6, - 0xf0, 0xeb, 0xf3, 0xf5, 0xf0, 0xeb, 0xf3, 0xf6, 0xf0, 0xeb, 0xf4, 0xf5, - 0xf0, 0xeb, 0xf4, 0xf6, 0xf0, 0xeb, 0xf4, 0xf5, 0xf0, 0xeb, 0xf4, 0xf6, - 0xf0, 0xeb, 0xf5, 0xf5, 0xf0, 0xeb, 0xf5, 0xf6, 0xf0, 0xeb, 0xf5, 0xf5, - 0xf0, 0xeb, 0xf5, 0xf6, 0xf0, 0xeb, 0xf5, 0xf5, 0xf0, 0xeb, 0xf6, 0xf4, - 0xf0, 0xeb, 0xf6, 0xf5, 0xf0, 0xeb, 0xf6, 0xf4, 0xf0, 0xeb, 0xf6, 0xf5, - 0xf0, 0xeb, 0xf7, 0xf4, 0xf0, 0xeb, 0xf7, 0xf5, 0xf0, 0xeb, 0xf7, 0xf4, - 0xf0, 0xeb, 0xf7, 0xf5, 0xf0, 0xeb, 0xf8, 0xf4, 0xf0, 0xeb, 0xf8, 0xf5, - 0xf0, 0xeb, 0xf8, 0xf4, 0xf0, 0xeb, 0xf8, 0xf5, 0xf0, 0xeb, 0xf8, 0xf4, - 0xf0, 0xeb, 0xf9, 0xf5, 0xf0, 0xeb, 0xf9, 0xf4, 0xf0, 0xeb, 0xf9, 0xf5, - 0xf0, 0xeb, 0xf9, 0xf4, 0xf0, 0xeb, 0xfa, 0xf5, 0xf0, 0xeb, 0xfa, 0xf4, - 0xf0, 0xeb, 0xfa, 0xf5, 0xf0, 0xeb, 0xfa, 0xf4, 0xf0, 0xeb, 0xfa, 0xf5, - 0xf0, 0xeb, 0xfb, 0xf4, 0xf0, 0xeb, 0xfb, 0xf5, 0xf0, 0xeb, 0xfb, 0xf4, - 0xf0, 0xeb, 0xfb, 0xf5, 0xf0, 0xeb, 0xfc, 0xf4, 0xf0, 0xeb, 0xfc, 0xf5, - 0xf0, 0xeb, 0xfc, 0xf4, 0xf0, 0xeb, 0xfc, 0xf5, 0xf0, 0xeb, 0xfc, 0xf4, - 0xf0, 0xeb, 0xfd, 0xf5, 0xf0, 0xeb, 0xfd, 0xf4, 0xf0, 0xeb, 0xfd, 0xf5, - 0xf0, 0xeb, 0xfd, 0xf4, 0xf0, 0xeb, 0xfe, 0xf5, 0xf0, 0xeb, 0xfe, 0xf4, - 0xf0, 0xeb, 0xfe, 0xf2, 0xf0, 0xeb, 0xfe, 0xf4, 0xf0, 0xeb, 0xfe, 0xf2, - 0xf0, 0xeb, 0xff, 0xf4, 0xf0, 0xeb, 0xff, 0xf2, 0xf0, 0xeb, 0x03, 0xf4, - 0x83, 0xec, 0x0a, 0xf4, 0x83, 0xec, 0x0f, 0xf4, 0x83, 0xec, 0x14, 0xf4, - 0x83, 0xec, 0x17, 0xf4, 0x83, 0xec, 0x1b, 0xf4, 0x83, 0xec, 0x1e, 0xf4, - 0x83, 0xec, 0x20, 0xf4, 0x83, 0xec, 0x23, 0xf4, 0x83, 0xec, 0x25, 0xf4, - 0x83, 0xec, 0x27, 0xf4, 0x83, 0xec, 0x29, 0xf4, 0x83, 0xec, 0x2b, 0xf4, - 0x83, 0xec, 0x2d, 0xf4, 0x83, 0xec, 0x2f, 0xf4, 0x83, 0xec, 0x31, 0xf4, - 0x83, 0xec, 0x32, 0xf4, 0x83, 0xec, 0x34, 0xf4, 0x83, 0xec, 0x35, 0xf4, - 0x83, 0xec, 0x37, 0xf4, 0x83, 0xec, 0x38, 0xf4, 0x83, 0xec, 0x3a, 0xf4, - 0x83, 0xec, 0x3b, 0xf4, 0x83, 0xec, 0x3c, 0xf4, 0x83, 0xec, 0x3e, 0xf4, - 0x83, 0xec, 0x3f, 0xf4, 0x83, 0xec, 0x40, 0xf4, 0x83, 0xec, 0x42, 0xf4, - 0x83, 0xec, 0x43, 0xf4, 0x83, 0xec, 0x44, 0xf4, 0x83, 0xec, 0x45, 0xf4, - 0x83, 0xec, 0x46, 0xf4, 0x83, 0xec, 0x47, 0xf4, 0x83, 0xec, 0x48, 0xf4, - 0x83, 0xec, 0x49, 0xf4, 0x83, 0xec, 0x4a, 0xf4, 0x83, 0xec, 0x4b, 0xf4, - 0x83, 0xec, 0x4c, 0xf4, 0x83, 0xec, 0x4d, 0xf4, 0x83, 0xec, 0x4e, 0xf4, - 0x83, 0xec, 0x4f, 0xf4, 0x83, 0xec, 0x50, 0xf4, 0x83, 0xec, 0x51, 0xf4, - 0x83, 0xec, 0x52, 0xf4, 0x83, 0xec, 0x53, 0xf4, 0x83, 0xec, 0x54, 0xf4, - 0x83, 0xec, 0x55, 0xf4, 0x83, 0xec, 0x56, 0xf4, 0x83, 0xec, 0x57, 0xf4, - 0x83, 0xec, 0x58, 0xf4, 0x83, 0xec, 0x58, 0xf4, 0x83, 0xec, 0x59, 0xf4, - 0x83, 0xec, 0x5a, 0xf4, 0x83, 0xec, 0x5b, 0xf4, 0x83, 0xec, 0x5c, 0xf4, - 0x83, 0xec, 0x5d, 0xf4, 0x83, 0xec, 0x5d, 0xf4, 0x83, 0xec, 0x5e, 0xf4, - 0x83, 0xec, 0x5f, 0xf4, 0x83, 0xec, 0x60, 0xf4, 0x83, 0xec, 0x60, 0xf4, - 0x83, 0xec, 0x61, 0xf4, 0x83, 0xec, 0x62, 0xf4, 0x83, 0xec, 0x63, 0xf4, - 0x83, 0xec, 0x63, 0xf4, 0x83, 0xec, 0x64, 0xf4, 0x83, 0xec, 0x65, 0xf4, - 0x83, 0xec, 0x66, 0xf4, 0x83, 0xec, 0x66, 0xf4, 0x83, 0xec, 0x67, 0xf4, - 0x83, 0xec, 0x68, 0xf4, 0x83, 0xec, 0x68, 0xf4, 0x83, 0xec, 0x69, 0xf4, - 0x83, 0xec, 0x6a, 0xf4, 0x83, 0xec, 0x6a, 0xf4, 0x83, 0xec, 0x6b, 0xf4, - 0x83, 0xec, 0x6c, 0xf4, 0x83, 0xec, 0x6c, 0xf4, 0x83, 0xec, 0x6d, 0xf4, - 0x83, 0xec, 0x6e, 0xf4, 0x83, 0xec, 0x6e, 0xf4, 0x83, 0xec, 0x6f, 0xf4, - 0x83, 0xec, 0x70, 0xf4, 0x83, 0xec, 0x70, 0xf4, 0x83, 0xec, 0x71, 0xf4, - 0x83, 0xec, 0x72, 0xf4, 0x83, 0xec, 0x72, 0xf4, 0x83, 0xec, 0x73, 0xf4, - 0x83, 0xec, 0x73, 0xf4, 0x83, 0xec, 0x74, 0xf4, 0x83, 0xec, 0x75, 0xf4, - 0x83, 0xec, 0x75, 0xf4, 0x83, 0xec, 0x76, 0xf4, 0x83, 0xec, 0x76, 0xf4, - 0x83, 0xec, 0x77, 0xf4, 0x83, 0xec, 0x78, 0xf4, 0x83, 0xec, 0x78, 0xf4, - 0x83, 0xec, 0x79, 0xf4, 0x83, 0xec, 0x79, 0xf4, 0x83, 0xec, 0x7a, 0xf4, - 0x83, 0xec, 0x7a, 0xf4, 0x83, 0xec, 0x7b, 0xf4, 0x83, 0xec, 0x7c, 0xf4, - 0x83, 0xec, 0x7c, 0xf4, 0x83, 0xec, 0x7d, 0xf4, 0x83, 0xec, 0x7d, 0xf4, - 0x83, 0xec, 0x7e, 0xf4, 0x83, 0xec, 0x7e, 0xf4, 0x83, 0xec, 0x7f, 0xf4, - 0x83, 0xec, 0x7f, 0xf4, 0x83, 0xec, 0x80, 0xf4, 0x83, 0xec, 0x81, 0xf4, - 0x83, 0xec, 0x81, 0xf4, 0x83, 0xec, 0x82, 0xf4, 0x83, 0xec, 0x82, 0xf4, - 0x83, 0xec, 0x83, 0xf4, 0x83, 0xec, 0x83, 0xf4, 0x83, 0xec, 0x84, 0xf4, - 0x84, 0xec, 0x84, 0xf4, 0x84, 0xec, 0x85, 0xf4, 0x85, 0xec, 0x85, 0xf4, - 0x85, 0xec, 0x86, 0xf5, 0x88, 0xec, 0x86, 0xf5, 0x88, 0xec, 0x87, 0xf5, - 0x88, 0xec, 0x87, 0xf5, 0x88, 0xec, 0x88, 0xf5, 0x88, 0xec, 0x88, 0xf5, - 0x88, 0xec, 0x89, 0xf5, 0x89, 0xec, 0x89, 0xf5, 0x89, 0xec, 0x8a, 0xf5, - 0x8a, 0xec, 0x8a, 0xf5, 0x8a, 0xec, 0x8b, 0xf5, 0x8b, 0xec, 0x8b, 0xf5, - 0x8d, 0xec, 0x8c, 0xf5, 0x8e, 0xec, 0x8c, 0xf5, 0x8d, 0xec, 0x8d, 0xf5, - 0x8e, 0xec, 0x8d, 0xf5, 0x8d, 0xec, 0x8e, 0xf5, 0x8e, 0xec, 0x8e, 0xf5, - 0x8e, 0xec, 0x8e, 0xf5, 0x8e, 0xec, 0x8f, 0xf5, 0x8f, 0xec, 0x8f, 0xf5, - 0x8f, 0xec, 0x90, 0xf5, 0x90, 0xec, 0x90, 0xf5, 0x92, 0xec, 0x91, 0xf5, - 0x93, 0xec, 0x91, 0xf5, 0x92, 0xec, 0x92, 0xf5, 0x93, 0xec, 0x92, 0xf5, - 0x92, 0xec, 0x93, 0xf5, 0x93, 0xec, 0x93, 0xf5, 0x93, 0xec, 0x94, 0xf5, - 0x94, 0xec, 0x94, 0xf5, 0x94, 0xec, 0x94, 0xf5, 0x94, 0xec, 0x95, 0xf5, - 0x95, 0xec, 0x95, 0xf5, 0x95, 0xec, 0x96, 0xf5, 0x96, 0xec, 0x96, 0xf6, - 0x97, 0xec, 0x97, 0xf6, 0x98, 0xec, 0x97, 0xf6, 0x97, 0xec, 0x98, 0xf6, - 0x98, 0xec, 0x98, 0xf6, 0x98, 0xec, 0x98, 0xf6, 0x98, 0xec, 0x99, 0xf6, - 0x99, 0xec, 0x99, 0xf6, 0x99, 0xec, 0x9a, 0xf6, 0x9a, 0xec, 0x9a, 0xf6, - 0x9a, 0xec, 0x9a, 0xf6, 0x9a, 0xec, 0x9b, 0xf6, 0x9b, 0xec, 0x9b, 0xf6, - 0x9b, 0xec, 0x9c, 0xf6, 0x9c, 0xed, 0x9c, 0xf6, 0x9c, 0xed, 0x9d, 0xf6, - 0x9d, 0xed, 0x9d, 0xf6, 0x9d, 0xed, 0x9d, 0xf6, 0x9d, 0xed, 0x9e, 0xf6, - 0x9e, 0xed, 0x9e, 0xf6, 0x9e, 0xed, 0x9f, 0xf6, 0x9f, 0xed, 0x9f, 0xf6, - 0x9f, 0xed, 0x9f, 0xf6, 0x9f, 0xed, 0xa0, 0xf6, 0xa0, 0xed, 0x9f, 0xf6, - 0xa0, 0xed, 0xa0, 0xf6, 0xa1, 0xed, 0xa1, 0xf6, 0xa1, 0xee, 0xa1, 0xf6, - 0xa1, 0xee, 0xa2, 0xf6, 0xa2, 0xee, 0xa2, 0xf6, 0xa2, 0xee, 0xa3, 0xf6, - 0xa3, 0xee, 0xa3, 0xf6, 0xa3, 0xee, 0xa3, 0xf6, 0xa3, 0xee, 0xa4, 0xf6, - 0xa4, 0xee, 0xa4, 0xf6, 0xa4, 0xee, 0xa4, 0xf6, 0xa5, 0xee, 0xa4, 0xf6, - 0xa5, 0xee, 0xa4, 0xf6, 0xa5, 0xee, 0xa4, 0xf6, 0xa6, 0xee, 0xa6, 0xf6, - 0xa6, 0xef, 0xa6, 0xf6, 0xa6, 0xef, 0xa7, 0xf6, 0xa7, 0xef, 0xa7, 0xf6, - 0xa7, 0xef, 0xa8, 0xf6, 0xa8, 0xef, 0xa8, 0xf6, 0xa8, 0xef, 0xa8, 0xf6, - 0xa8, 0xef, 0xa8, 0xf6, 0xa9, 0xef, 0xa8, 0xf6, 0xa9, 0xef, 0xa8, 0xf6, - 0xaa, 0xef, 0xa8, 0xf6, 0xaa, 0xef, 0xaa, 0xf6, 0xaa, 0xf0, 0xab, 0xf6, - 0xab, 0xf0, 0xab, 0xf6, 0xab, 0xf0, 0xab, 0xf6, 0xab, 0xf0, 0xac, 0xf6, - 0xac, 0xf0, 0xac, 0xf6, 0xac, 0xf0, 0xac, 0xf6, 0xac, 0xf0, 0xac, 0xf6, - 0xad, 0xf0, 0xac, 0xf6, 0xad, 0xf0, 0xac, 0xf6, 0xae, 0xf0, 0xac, 0xf6, - 0xae, 0xf0, 0xae, 0xf6, 0xae, 0xf1, 0xaf, 0xf6, 0xaf, 0xf1, 0xaf, 0xf6, - 0xaf, 0xf1, 0xaf, 0xf6, 0xaf, 0xf1, 0xb0, 0xf6, 0xb0, 0xf1, 0xb0, 0xf6, - 0xb0, 0xf1, 0xb0, 0xf6, 0xb0, 0xf1, 0xb0, 0xf6, 0xb1, 0xf1, 0xb0, 0xf6, - 0xb1, 0xf1, 0xb0, 0xf6, 0xb2, 0xf1, 0xb0, 0xf6, 0xb2, 0xf1, 0xb0, 0xf6, - 0xb2, 0xf1, 0xb0, 0xf6, 0xb3, 0xf1, 0xb3, 0xf6, 0xb3, 0xf2, 0xb3, 0xf6, - 0xb3, 0xf2, 0xb4, 0xf6, 0xb4, 0xf2, 0xb4, 0xf6, 0xb4, 0xf2, 0xb4, 0xf6, - 0xb4, 0xf2, 0xb4, 0xf6, 0xb5, 0xf2, 0xb4, 0xf6, 0xb5, 0xf2, 0xb4, 0xf6, - 0xb5, 0xf2, 0xb4, 0xf6, 0xb6, 0xf2, 0xb4, 0xf6, 0xb6, 0xf2, 0xb4, 0xf6, - 0xb6, 0xf2, 0xb7, 0xf6, 0xb7, 0xf3, 0xb7, 0xf6, 0xb7, 0xf3, 0xb7, 0xf6, - 0xb7, 0xf3, 0xb8, 0xf6, 0xb8, 0xf3, 0xb8, 0xf6, 0xb8, 0xf3, 0xb8, 0xf6, - 0xb8, 0xf3, 0xb8, 0xf6, 0xb9, 0xf3, 0xb8, 0xf6, 0xb9, 0xf3, 0xb8, 0xf6, - 0xb9, 0xf3, 0xb8, 0xf6, 0xba, 0xf3, 0xb8, 0xf6, 0xba, 0xf3, 0xba, 0xf6, - 0xba, 0xf4, 0xbb, 0xf6, 0xbb, 0xf4, 0xbb, 0xf6, 0xbb, 0xf4, 0xbb, 0xf6, - 0xbb, 0xf4, 0xbc, 0xf6, 0xbc, 0xf4, 0xbb, 0xf6, 0xbc, 0xf4, 0xbc, 0xf6, - 0xbc, 0xf4, 0xbb, 0xf6, 0xbd, 0xf4, 0xbc, 0xf6, 0xbd, 0xf4, 0xbb, 0xf6, - 0xbd, 0xf4, 0xbc, 0xf6, 0xbe, 0xf4, 0xbb, 0xf6, 0xbe, 0xf4, 0xbc, 0xf6, - 0xbe, 0xf4, 0xbf, 0xf6, 0xbf, 0xf5, 0xbf, 0xf6, 0xbf, 0xf5, 0xbf, 0xf6, - 0xbf, 0xf5, 0xbf, 0xf6, 0xc0, 0xf5, 0xbf, 0xf6, 0xc0, 0xf5, 0xbf, 0xf6, - 0xc0, 0xf5, 0xbf, 0xf6, 0xc1, 0xf5, 0xbf, 0xf6, 0xc1, 0xf5, 0xbf, 0xf6, - 0xc1, 0xf5, 0xbf, 0xf6, 0xc1, 0xf5, 0xbf, 0xf6, 0xc2, 0xf5, 0xc2, 0xf6, - 0xc2, 0xf6, 0xc2, 0xf6, 0xc2, 0xf6, 0xc3, 0xf6, 0xc3, 0xf6, 0xc2, 0xf6, - 0xc3, 0xf6, 0xc3, 0xf6, 0xc3, 0xf6, 0xc2, 0xf6, 0xc4, 0xf6, 0xc3, 0xf6, - 0xc4, 0xf6, 0xca, 0xf6, 0xc4, 0xee, 0xcb, 0xf6, 0xc5, 0xec, 0xca, 0xf6, - 0xc5, 0xee, 0xcb, 0xf6, 0xc5, 0xec, 0xca, 0xf6, 0xc6, 0xee, 0xcb, 0xf6, - 0xc6, 0xec, 0xca, 0xf6, 0xc6, 0xee, 0xcb, 0xf6, 0xc6, 0xec, 0xca, 0xf6, - 0xc7, 0xee, 0xcb, 0xf6, 0xc7, 0xec, 0xca, 0xf6, 0xc7, 0xee, 0xcb, 0xf6, - 0xc8, 0xec, 0xca, 0xf6, 0xc8, 0xee, 0xcb, 0xf6, 0xc8, 0xec, 0xca, 0xf6, - 0xc9, 0xee, 0xcb, 0xf6, 0xc9, 0xec, 0xca, 0xf6, 0xc9, 0xee, 0xcb, 0xf6, - 0xc9, 0xec, 0xcb, 0xf6, 0xca, 0xec, 0xcb, 0xf6, 0xca, 0xec, 0xcb, 0xf6, - 0xca, 0xec, 0xcb, 0xf6, 0xca, 0xec, 0xcb, 0xf6, 0xca, 0xec, 0xcb, 0xf6, - 0xca, 0xec, 0xcc, 0xf6, 0xca, 0xec, 0xcc, 0xf5, 0xcb, 0xec, 0xcc, 0xf6, - 0xca, 0xec, 0xcc, 0xf5, 0xcb, 0xec, 0xcd, 0xf6, 0xca, 0xec, 0xcd, 0xf5, - 0xcb, 0xec, 0xcd, 0xf6, 0xca, 0xec, 0xce, 0xf5, 0xcb, 0xec, 0xce, 0xf6, - 0xca, 0xec, 0xce, 0xf5, 0xcb, 0xec, 0xce, 0xf6, 0xca, 0xec, 0xcf, 0xf5, - 0xcb, 0xec, 0xcf, 0xf6, 0xca, 0xec, 0xcf, 0xf5, 0xcb, 0xec, 0xd0, 0xf5, - 0xcb, 0xec, 0xd0, 0xf5, 0xcb, 0xec, 0xd0, 0xf5, 0xcb, 0xec, 0xd0, 0xf5, - 0xcb, 0xec, 0xd1, 0xf5, 0xcb, 0xec, 0xd1, 0xf5, 0xcb, 0xec, 0xd1, 0xf5, - 0xcb, 0xec, 0xd2, 0xf5, 0xcb, 0xec, 0xd2, 0xf5, 0xcb, 0xec, 0xd2, 0xfc, - 0xcf, 0xec, 0xd2, 0xfc, 0xd0, 0xec, 0xd3, 0xfc, 0xd3, 0xec, 0xd3, 0xfc, - 0xd2, 0xec, 0xd3, 0xfc, 0xd3, 0xec, 0xd4, 0xfc, 0xd2, 0xec, 0xd4, 0xfc, - 0xd3, 0xec, 0xd4, 0xfc, 0xd2, 0xec, 0xd4, 0xfc, 0xd3, 0xec, 0xd5, 0xfc, - 0xd2, 0xec, 0xd5, 0xfc, 0xd3, 0xec, 0xd5, 0xfc, 0xd2, 0xec, 0xd6, 0xfc, - 0xd3, 0xec, 0xd6, 0xfd, 0xd6, 0xec, 0xd6, 0xfd, 0xd6, 0xec, 0xd6, 0xfd, - 0xd6, 0xec, 0xd7, 0xfd, 0xd6, 0xec, 0xd7, 0xfd, 0xd6, 0xec, 0xd7, 0xfd, - 0xd6, 0xec, 0xd7, 0xfd, 0xd6, 0xec, 0xd8, 0xfd, 0xd6, 0xec, 0xd8, 0xfd, - 0xd6, 0xec, 0xd8, 0xfd, 0xd6, 0xec, 0xd9, 0xfd, 0xd6, 0xec, 0xd9, 0xfd, - 0xd9, 0xec, 0xd9, 0xfd, 0xd9, 0xec, 0xd9, 0xfd, 0xd9, 0xec, 0xda, 0xfd, - 0xd9, 0xec, 0xda, 0xfd, 0xd9, 0xec, 0xda, 0xfd, 0xd9, 0xec, 0xda, 0xfd, - 0xd9, 0xec, 0xdb, 0xfd, 0xd9, 0xec, 0xdb, 0xfd, 0xd9, 0xec, 0xdb, 0xfd, - 0xd9, 0xec, 0xdb, 0xf8, 0xe3, 0xec, 0xdc, 0xf7, 0xe4, 0xec, 0xdc, 0xf8, - 0xe3, 0xec, 0xdc, 0xf7, 0xe4, 0xec, 0xdd, 0xf8, 0xe3, 0xec, 0xdd, 0xf7, - 0xe4, 0xec, 0xdd, 0xf8, 0xe3, 0xec, 0xdd, 0xf7, 0xe4, 0xec, 0xde, 0xf8, - 0xe3, 0xec, 0xde, 0xf7, 0xe4, 0xec, 0xde, 0xf8, 0xe3, 0xec, 0xde, 0xf7, - 0xe4, 0xec, 0xdf, 0xf8, 0xe3, 0xec, 0xdf, 0xf7, 0xe4, 0xec, 0xdf, 0xf8, - 0xe3, 0xec, 0xdf, 0xf7, 0xe4, 0xec, 0xe0, 0xf6, 0xe4, 0xec, 0xe0, 0xf7, - 0xe4, 0xec, 0xe0, 0xf6, 0xe4, 0xec, 0xe1, 0xf7, 0xe4, 0xec, 0xe1, 0xf6, - 0xe4, 0xec, 0xe1, 0xf7, 0xe4, 0xec, 0xe1, 0xf6, 0xe4, 0xec, 0xe2, 0xf7, - 0xe4, 0xec, 0xe2, 0xf6, 0xe4, 0xec, 0xe2, 0xf7, 0xe4, 0xec, 0xe2, 0xf6, - 0xe4, 0xec, 0xe3, 0xf7, 0xe4, 0xec, 0xe3, 0xf6, 0xe4, 0xec, 0xe3, 0xf7, - 0xe4, 0xec, 0xe3, 0xf6, 0xe4, 0xec, 0xe4, 0xf7, 0xe4, 0xec, 0xe3, 0xf6, - 0xe4, 0xec, 0xe4, 0xf6, 0xe4, 0xec, 0xe3, 0xf6, 0xe4, 0xec, 0xe4, 0xf6, - 0xe5, 0xec, 0xe6, 0xf6, 0xe5, 0xec, 0xe6, 0xf6, 0xe5, 0xec, 0xe6, 0xf6, - 0xe5, 0xec, 0xe6, 0xf6, 0xe6, 0xec, 0xe6, 0xf6, 0xe5, 0xec, 0xe6, 0xf6, - 0xe6, 0xec, 0xe6, 0xf6, 0xe5, 0xec, 0xe7, 0xf6, 0xe6, 0xec, 0xe7, 0xf6, - 0xe5, 0xec, 0xe7, 0xf6, 0xe6, 0xec, 0xe7, 0xf6, 0xe5, 0xec, 0xe8, 0xf6, - 0xe6, 0xec, 0xe8, 0xf5, 0xe6, 0xec, 0xe8, 0xf6, 0xe6, 0xec, 0xe8, 0xf5, - 0xe6, 0xec, 0xe9, 0xf6, 0xe6, 0xec, 0xe9, 0xf5, 0xe6, 0xec, 0xe9, 0xf6, - 0xe6, 0xec, 0xe9, 0xf5, 0xe6, 0xec, 0xea, 0xf6, 0xe6, 0xec, 0xea, 0xf5, - 0xe6, 0xec, 0xea, 0xf6, 0xe6, 0xec, 0xea, 0xf5, 0xe6, 0xec, 0xeb, 0xf6, - 0xef, 0xec, 0xeb, 0xf7, 0xef, 0xec, 0xeb, 0xf6, 0xef, 0xec, 0xeb, 0xf7, - 0xef, 0xec, 0xec, 0xf6, 0xef, 0xec, 0xec, 0xf7, 0xef, 0xec, 0xec, 0xf6, - 0xef, 0xec, 0xec, 0xf7, 0xef, 0xec, 0xec, 0xf6, 0xef, 0xec, 0xed, 0xf7, - 0xef, 0xec, 0xed, 0xf6, 0xef, 0xec, 0xed, 0xf7, 0xef, 0xec, 0xed, 0xf6, - 0xef, 0xec, 0xee, 0xf7, 0xef, 0xec, 0xee, 0xf6, 0xef, 0xec, 0xee, 0xf7, - 0xef, 0xec, 0xee, 0xf6, 0xef, 0xec, 0xef, 0xf6, 0xf0, 0xec, 0xef, 0xf6, - 0xef, 0xec, 0xef, 0xf6, 0xf0, 0xec, 0xef, 0xf6, 0xef, 0xec, 0xef, 0xf6, - 0xf0, 0xec, 0xf0, 0xf6, 0xef, 0xec, 0xf0, 0xf6, 0xf0, 0xec, 0xf0, 0xf6, - 0xef, 0xec, 0xf1, 0xf6, 0xf0, 0xec, 0xf1, 0xf6, 0xef, 0xec, 0xf1, 0xf6, - 0xf0, 0xec, 0xf1, 0xf6, 0xef, 0xec, 0xf2, 0xf6, 0xf0, 0xec, 0xf2, 0xf5, - 0xf0, 0xec, 0xf2, 0xf6, 0xf0, 0xec, 0xf2, 0xf5, 0xf0, 0xec, 0xf2, 0xf6, - 0xf0, 0xec, 0xf3, 0xf5, 0xf0, 0xec, 0xf3, 0xf6, 0xf0, 0xec, 0xf3, 0xf5, - 0xf0, 0xec, 0xf3, 0xf6, 0xf0, 0xec, 0xf4, 0xf5, 0xf0, 0xec, 0xf4, 0xf6, - 0xf0, 0xec, 0xf4, 0xf5, 0xf0, 0xec, 0xf4, 0xf6, 0xf0, 0xec, 0xf5, 0xf5, - 0xf0, 0xec, 0xf5, 0xf6, 0xf0, 0xec, 0xf5, 0xf5, 0xf0, 0xec, 0xf5, 0xf6, - 0xf0, 0xec, 0xf5, 0xf5, 0xf0, 0xec, 0xf6, 0xf6, 0xf0, 0xec, 0xf6, 0xf5, - 0xf0, 0xec, 0xf6, 0xf6, 0xf0, 0xec, 0xf6, 0xf5, 0xf0, 0xec, 0xf7, 0xf6, - 0xf0, 0xec, 0xf7, 0xf5, 0xf0, 0xec, 0xf7, 0xf6, 0xf0, 0xec, 0xf7, 0xf5, - 0xf0, 0xec, 0xf8, 0xf6, 0xf0, 0xec, 0xf8, 0xf5, 0xf0, 0xec, 0xf8, 0xf6, - 0xf0, 0xec, 0xf8, 0xf5, 0xf0, 0xec, 0xf8, 0xf4, 0xf0, 0xec, 0xf9, 0xf5, - 0xf0, 0xec, 0xf9, 0xf4, 0xf0, 0xec, 0xf9, 0xf5, 0xf0, 0xec, 0xf9, 0xf4, - 0xf0, 0xec, 0xfa, 0xf5, 0xf0, 0xec, 0xfa, 0xf4, 0xf0, 0xec, 0xfa, 0xf5, - 0xf0, 0xec, 0xfa, 0xf4, 0xf0, 0xec, 0xfa, 0xf5, 0xf0, 0xec, 0xfb, 0xf4, - 0xf0, 0xec, 0xfb, 0xf5, 0xf0, 0xec, 0xfb, 0xf4, 0xf0, 0xec, 0xfb, 0xf5, - 0xf0, 0xec, 0xfc, 0xf4, 0xf0, 0xec, 0xfc, 0xf5, 0xf0, 0xec, 0xfc, 0xf4, - 0xf0, 0xec, 0xfc, 0xf5, 0xf0, 0xec, 0xfc, 0xf4, 0xf0, 0xec, 0xfd, 0xf5, - 0xf0, 0xec, 0xfd, 0xf4, 0xf0, 0xec, 0xfd, 0xf5, 0xf0, 0xec, 0xfd, 0xf4, - 0xf0, 0xec, 0xfe, 0xf5, 0xf0, 0xec, 0xfe, 0xf4, 0xf0, 0xec, 0xfe, 0xf5, - 0xf0, 0xec, 0xfe, 0xf4, 0xf0, 0xec, 0xfe, 0xf5, 0xf0, 0xec, 0xff, 0xf4, - 0xf0, 0xec, 0xff, 0xf5, 0xf0, 0xec, 0x03, 0xf4, 0x83, 0xec, 0x0a, 0xf4, - 0x83, 0xec, 0x0f, 0xf4, 0x83, 0xec, 0x14, 0xf4, 0x83, 0xec, 0x17, 0xf4, - 0x83, 0xec, 0x1b, 0xf4, 0x83, 0xec, 0x1e, 0xf4, 0x83, 0xec, 0x20, 0xf4, - 0x83, 0xec, 0x23, 0xf4, 0x83, 0xec, 0x25, 0xf4, 0x83, 0xec, 0x27, 0xf4, - 0x83, 0xec, 0x29, 0xf4, 0x83, 0xec, 0x2b, 0xf4, 0x83, 0xec, 0x2d, 0xf4, - 0x83, 0xec, 0x2f, 0xf4, 0x83, 0xec, 0x31, 0xf4, 0x83, 0xec, 0x32, 0xf4, - 0x83, 0xec, 0x34, 0xf4, 0x83, 0xec, 0x35, 0xf4, 0x83, 0xec, 0x37, 0xf4, - 0x83, 0xec, 0x38, 0xf4, 0x83, 0xec, 0x3a, 0xf4, 0x83, 0xec, 0x3b, 0xf4, - 0x83, 0xec, 0x3c, 0xf4, 0x83, 0xec, 0x3e, 0xf4, 0x83, 0xec, 0x3f, 0xf4, - 0x83, 0xec, 0x40, 0xf4, 0x83, 0xec, 0x42, 0xf4, 0x83, 0xec, 0x43, 0xf4, - 0x83, 0xec, 0x44, 0xf4, 0x83, 0xec, 0x45, 0xf4, 0x83, 0xec, 0x46, 0xf4, - 0x83, 0xec, 0x47, 0xf4, 0x83, 0xec, 0x48, 0xf4, 0x83, 0xec, 0x49, 0xf4, - 0x83, 0xec, 0x4a, 0xf4, 0x83, 0xec, 0x4b, 0xf4, 0x83, 0xec, 0x4c, 0xf4, - 0x83, 0xec, 0x4d, 0xf4, 0x83, 0xec, 0x4e, 0xf4, 0x83, 0xec, 0x4f, 0xf4, - 0x83, 0xec, 0x50, 0xf4, 0x83, 0xec, 0x51, 0xf4, 0x83, 0xec, 0x52, 0xf4, - 0x83, 0xec, 0x53, 0xf4, 0x83, 0xec, 0x54, 0xf4, 0x83, 0xec, 0x55, 0xf4, - 0x83, 0xec, 0x56, 0xf4, 0x83, 0xec, 0x57, 0xf4, 0x83, 0xec, 0x58, 0xf4, - 0x83, 0xec, 0x58, 0xf4, 0x83, 0xec, 0x59, 0xf4, 0x83, 0xec, 0x5a, 0xf4, - 0x83, 0xec, 0x5b, 0xf4, 0x83, 0xec, 0x5c, 0xf4, 0x83, 0xec, 0x5d, 0xf4, - 0x83, 0xec, 0x5d, 0xf4, 0x83, 0xec, 0x5e, 0xf4, 0x83, 0xec, 0x5f, 0xf4, - 0x83, 0xec, 0x60, 0xf4, 0x83, 0xec, 0x60, 0xf4, 0x83, 0xec, 0x61, 0xf4, - 0x83, 0xec, 0x62, 0xf4, 0x83, 0xec, 0x63, 0xf4, 0x83, 0xec, 0x63, 0xf4, - 0x83, 0xec, 0x64, 0xf4, 0x83, 0xec, 0x65, 0xf4, 0x83, 0xec, 0x66, 0xf4, - 0x83, 0xec, 0x66, 0xf4, 0x83, 0xec, 0x67, 0xf4, 0x83, 0xec, 0x68, 0xf4, - 0x83, 0xec, 0x68, 0xf4, 0x83, 0xec, 0x69, 0xf4, 0x83, 0xec, 0x6a, 0xf4, - 0x83, 0xec, 0x6a, 0xf4, 0x83, 0xec, 0x6b, 0xf4, 0x83, 0xec, 0x6c, 0xf4, - 0x83, 0xec, 0x6c, 0xf4, 0x83, 0xec, 0x6d, 0xf4, 0x83, 0xec, 0x6e, 0xf4, - 0x83, 0xec, 0x6e, 0xf4, 0x83, 0xec, 0x6f, 0xf4, 0x83, 0xec, 0x70, 0xf4, - 0x83, 0xec, 0x70, 0xf4, 0x83, 0xec, 0x71, 0xf4, 0x83, 0xec, 0x72, 0xf4, - 0x83, 0xec, 0x72, 0xf4, 0x83, 0xec, 0x73, 0xf4, 0x83, 0xec, 0x73, 0xf4, - 0x83, 0xec, 0x74, 0xf4, 0x83, 0xec, 0x75, 0xf4, 0x83, 0xec, 0x75, 0xf4, - 0x83, 0xec, 0x76, 0xf4, 0x83, 0xec, 0x76, 0xf4, 0x83, 0xec, 0x77, 0xf4, - 0x83, 0xec, 0x78, 0xf4, 0x83, 0xec, 0x78, 0xf4, 0x83, 0xec, 0x79, 0xf4, - 0x83, 0xec, 0x79, 0xf4, 0x83, 0xec, 0x7a, 0xf4, 0x83, 0xec, 0x7a, 0xf4, - 0x83, 0xec, 0x7b, 0xf4, 0x83, 0xec, 0x7c, 0xf4, 0x83, 0xec, 0x7c, 0xf4, - 0x83, 0xec, 0x7d, 0xf4, 0x83, 0xec, 0x7d, 0xf4, 0x83, 0xec, 0x7e, 0xf4, - 0x83, 0xec, 0x7e, 0xf4, 0x83, 0xec, 0x7f, 0xf4, 0x83, 0xec, 0x7f, 0xf4, - 0x83, 0xec, 0x80, 0xf4, 0x83, 0xec, 0x81, 0xf4, 0x83, 0xec, 0x81, 0xf4, - 0x83, 0xec, 0x82, 0xf4, 0x83, 0xec, 0x82, 0xf4, 0x85, 0xec, 0x83, 0xf4, - 0x86, 0xec, 0x83, 0xf4, 0x85, 0xec, 0x84, 0xf4, 0x86, 0xec, 0x84, 0xf4, - 0x85, 0xec, 0x85, 0xf4, 0x86, 0xec, 0x85, 0xf4, 0x85, 0xec, 0x86, 0xf4, - 0x86, 0xec, 0x86, 0xf4, 0x86, 0xec, 0x87, 0xf4, 0x87, 0xec, 0x87, 0xf4, - 0x87, 0xec, 0x88, 0xf4, 0x88, 0xec, 0x88, 0xf4, 0x88, 0xec, 0x89, 0xf5, - 0x8b, 0xec, 0x89, 0xf5, 0x8b, 0xec, 0x8a, 0xf5, 0x8b, 0xec, 0x8a, 0xf5, - 0x8b, 0xec, 0x8b, 0xf5, 0x8b, 0xec, 0x8b, 0xf5, 0x8b, 0xec, 0x8c, 0xf5, - 0x8c, 0xec, 0x8c, 0xf5, 0x8c, 0xec, 0x8d, 0xf5, 0x8d, 0xec, 0x8d, 0xf5, - 0x8d, 0xec, 0x8e, 0xf5, 0x8e, 0xec, 0x8e, 0xf5, 0x90, 0xec, 0x8e, 0xf5, - 0x90, 0xec, 0x8f, 0xf5, 0x90, 0xec, 0x8f, 0xf5, 0x90, 0xec, 0x90, 0xf5, - 0x90, 0xec, 0x90, 0xf5, 0x90, 0xec, 0x91, 0xf5, 0x91, 0xec, 0x91, 0xf5, - 0x91, 0xec, 0x92, 0xf5, 0x92, 0xec, 0x92, 0xf5, 0x92, 0xec, 0x93, 0xf5, - 0x93, 0xec, 0x93, 0xf6, 0x95, 0xec, 0x94, 0xf6, 0x95, 0xec, 0x94, 0xf6, - 0x95, 0xec, 0x94, 0xf6, 0x95, 0xec, 0x95, 0xf6, 0x95, 0xec, 0x95, 0xf6, - 0x95, 0xec, 0x96, 0xf6, 0x96, 0xec, 0x96, 0xf6, 0x96, 0xec, 0x97, 0xf6, - 0x97, 0xec, 0x97, 0xf6, 0x97, 0xec, 0x98, 0xf6, 0x98, 0xec, 0x98, 0xf6, - 0x98, 0xec, 0x98, 0xf6, 0x98, 0xec, 0x99, 0xf6, 0x9a, 0xec, 0x99, 0xf6, - 0x9a, 0xec, 0x9a, 0xf6, 0x9a, 0xec, 0x9a, 0xf6, 0x9a, 0xec, 0x9a, 0xf6, - 0x9a, 0xec, 0x9b, 0xf6, 0x9b, 0xec, 0x9b, 0xf6, 0x9b, 0xec, 0x9c, 0xf6, - 0x9c, 0xec, 0x9c, 0xf6, 0x9c, 0xec, 0x9d, 0xf6, 0x9d, 0xec, 0x9d, 0xf6, - 0x9d, 0xec, 0x9d, 0xf6, 0x9d, 0xec, 0x9e, 0xf6, 0x9e, 0xec, 0x9e, 0xf7, - 0x9e, 0xed, 0x9f, 0xf7, 0x9f, 0xed, 0x9f, 0xf7, 0x9f, 0xed, 0x9f, 0xf7, - 0x9f, 0xed, 0xa0, 0xf7, 0xa0, 0xed, 0xa0, 0xf7, 0xa0, 0xed, 0xa1, 0xf7, - 0xa1, 0xed, 0xa1, 0xf7, 0xa1, 0xed, 0xa1, 0xf7, 0xa1, 0xed, 0xa2, 0xf7, - 0xa2, 0xed, 0xa2, 0xf7, 0xa2, 0xed, 0xa2, 0xf7, 0xa3, 0xed, 0xa2, 0xf7, - 0xa3, 0xed, 0xa3, 0xf7, 0xa3, 0xee, 0xa4, 0xf7, 0xa4, 0xee, 0xa4, 0xf7, - 0xa4, 0xee, 0xa5, 0xf7, 0xa5, 0xee, 0xa5, 0xf7, 0xa5, 0xee, 0xa5, 0xf7, - 0xa5, 0xee, 0xa6, 0xf7, 0xa6, 0xee, 0xa6, 0xf7, 0xa6, 0xee, 0xa6, 0xf7, - 0xa6, 0xee, 0xa6, 0xf7, 0xa7, 0xee, 0xa6, 0xf7, 0xa7, 0xee, 0xa6, 0xf7, - 0xa8, 0xee, 0xa6, 0xf7, 0xa8, 0xee, 0xa8, 0xf7, 0xa8, 0xef, 0xa9, 0xf7, - 0xa9, 0xef, 0xa9, 0xf7, 0xa9, 0xef, 0xaa, 0xf7, 0xaa, 0xef, 0xaa, 0xf7, - 0xaa, 0xef, 0xaa, 0xf7, 0xaa, 0xef, 0xab, 0xf7, 0xab, 0xef, 0xaa, 0xf7, - 0xab, 0xef, 0xab, 0xf7, 0xab, 0xef, 0xaa, 0xf7, 0xac, 0xef, 0xab, 0xf7, - 0xac, 0xef, 0xac, 0xf7, 0xac, 0xf0, 0xad, 0xf7, 0xad, 0xf0, 0xad, 0xf7, - 0xad, 0xf0, 0xae, 0xf7, 0xae, 0xf0, 0xae, 0xf7, 0xae, 0xf0, 0xae, 0xf7, - 0xae, 0xf0, 0xaf, 0xf7, 0xaf, 0xf0, 0xae, 0xf7, 0xaf, 0xf0, 0xaf, 0xf7, - 0xaf, 0xf0, 0xae, 0xf7, 0xb0, 0xf0, 0xaf, 0xf7, 0xb0, 0xf0, 0xb0, 0xf7, - 0xb0, 0xf1, 0xb1, 0xf7, 0xb1, 0xf1, 0xb1, 0xf7, 0xb1, 0xf1, 0xb2, 0xf7, - 0xb2, 0xf1, 0xb2, 0xf7, 0xb2, 0xf1, 0xb2, 0xf7, 0xb2, 0xf1, 0xb3, 0xf7, - 0xb3, 0xf1, 0xb2, 0xf7, 0xb3, 0xf1, 0xb3, 0xf7, 0xb3, 0xf1, 0xb2, 0xf7, - 0xb4, 0xf1, 0xb3, 0xf7, 0xb4, 0xf1, 0xb2, 0xf7, 0xb4, 0xf1, 0xb3, 0xf7, - 0xb5, 0xf1, 0xb5, 0xf7, 0xb5, 0xf2, 0xb5, 0xf7, 0xb5, 0xf2, 0xb6, 0xf7, - 0xb6, 0xf2, 0xb6, 0xf7, 0xb6, 0xf2, 0xb6, 0xf7, 0xb6, 0xf2, 0xb6, 0xf7, - 0xb7, 0xf2, 0xb6, 0xf7, 0xb7, 0xf2, 0xb6, 0xf7, 0xb7, 0xf2, 0xb6, 0xf7, - 0xb8, 0xf2, 0xb6, 0xf7, 0xb8, 0xf2, 0xb6, 0xf7, 0xb8, 0xf2, 0xb9, 0xf7, - 0xb9, 0xf3, 0xb9, 0xf7, 0xb9, 0xf3, 0xb9, 0xf7, 0xb9, 0xf3, 0xba, 0xf7, - 0xba, 0xf3, 0xba, 0xf7, 0xba, 0xf3, 0xba, 0xf7, 0xba, 0xf3, 0xba, 0xf7, - 0xbb, 0xf3, 0xba, 0xf7, 0xbb, 0xf3, 0xba, 0xf7, 0xbb, 0xf3, 0xba, 0xf7, - 0xbc, 0xf3, 0xba, 0xf7, 0xbc, 0xf3, 0xbc, 0xf7, 0xbc, 0xf4, 0xbd, 0xf7, - 0xbd, 0xf4, 0xbd, 0xf7, 0xbd, 0xf4, 0xbd, 0xf7, 0xbd, 0xf4, 0xbe, 0xf7, - 0xbe, 0xf4, 0xbd, 0xf7, 0xbe, 0xf4, 0xbe, 0xf7, 0xbe, 0xf4, 0xbd, 0xf7, - 0xbf, 0xf4, 0xbe, 0xf7, 0xbf, 0xf4, 0xbd, 0xf7, 0xbf, 0xf4, 0xbe, 0xf7, - 0xc0, 0xf4, 0xbd, 0xf7, 0xc0, 0xf4, 0xbe, 0xf7, 0xc0, 0xf4, 0xc1, 0xf7, - 0xc1, 0xf5, 0xc1, 0xf7, 0xc1, 0xf5, 0xc1, 0xf7, 0xc1, 0xf5, 0xc1, 0xf7, - 0xc1, 0xf5, 0xc1, 0xf7, 0xc2, 0xf5, 0xc1, 0xf7, 0xc2, 0xf5, 0xc1, 0xf7, - 0xc2, 0xf5, 0xc1, 0xf7, 0xc3, 0xf5, 0xc1, 0xf7, 0xc3, 0xf5, 0xc1, 0xf7, - 0xc3, 0xf5, 0xc1, 0xf7, 0xc4, 0xf5, 0xc4, 0xf7, 0xc4, 0xf6, 0xc4, 0xf7, - 0xc4, 0xf6, 0xca, 0xf7, 0xc5, 0xf0, 0xca, 0xf7, 0xc5, 0xee, 0xca, 0xf7, - 0xc5, 0xf0, 0xca, 0xf7, 0xc6, 0xee, 0xcb, 0xf7, 0xc6, 0xec, 0xca, 0xf7, - 0xc6, 0xee, 0xcb, 0xf7, 0xc6, 0xec, 0xca, 0xf7, 0xc7, 0xee, 0xcb, 0xf7, - 0xc7, 0xec, 0xca, 0xf7, 0xc7, 0xee, 0xcb, 0xf7, 0xc8, 0xec, 0xca, 0xf7, - 0xc8, 0xee, 0xcb, 0xf7, 0xc8, 0xec, 0xca, 0xf7, 0xc9, 0xee, 0xcb, 0xf7, - 0xc9, 0xec, 0xca, 0xf7, 0xc9, 0xee, 0xcb, 0xf7, 0xc9, 0xec, 0xcb, 0xf7, - 0xca, 0xec, 0xcb, 0xf7, 0xca, 0xec, 0xcb, 0xf7, 0xca, 0xec, 0xcb, 0xf7, - 0xca, 0xec, 0xcb, 0xf7, 0xca, 0xec, 0xcb, 0xf7, 0xca, 0xec, 0xcc, 0xf7, - 0xca, 0xec, 0xcc, 0xf6, 0xcb, 0xec, 0xcc, 0xf7, 0xca, 0xec, 0xcc, 0xf6, - 0xcb, 0xec, 0xcd, 0xf7, 0xca, 0xec, 0xcd, 0xf6, 0xcb, 0xec, 0xcd, 0xf7, - 0xca, 0xec, 0xce, 0xf6, 0xcb, 0xec, 0xce, 0xf7, 0xca, 0xec, 0xce, 0xf6, - 0xcb, 0xec, 0xce, 0xf7, 0xca, 0xec, 0xcf, 0xf6, 0xcb, 0xec, 0xcf, 0xf7, - 0xca, 0xec, 0xcf, 0xf6, 0xcb, 0xec, 0xd0, 0xf7, 0xca, 0xec, 0xd0, 0xf6, - 0xcb, 0xec, 0xd0, 0xf7, 0xca, 0xec, 0xd0, 0xf6, 0xcb, 0xec, 0xd1, 0xf7, - 0xca, 0xec, 0xd1, 0xf6, 0xcb, 0xec, 0xd1, 0xf7, 0xca, 0xec, 0xd2, 0xfc, - 0xd1, 0xec, 0xd2, 0xfc, 0xd1, 0xec, 0xd2, 0xfc, 0xd1, 0xec, 0xd2, 0xfc, - 0xd1, 0xec, 0xd3, 0xfc, 0xd1, 0xec, 0xd3, 0xfc, 0xd1, 0xec, 0xd3, 0xfc, - 0xd1, 0xec, 0xd4, 0xfc, 0xd4, 0xec, 0xd4, 0xfc, 0xd4, 0xec, 0xd4, 0xfc, - 0xd4, 0xec, 0xd4, 0xfc, 0xd4, 0xec, 0xd5, 0xfc, 0xd4, 0xec, 0xd5, 0xfc, - 0xd4, 0xec, 0xd5, 0xfc, 0xd4, 0xec, 0xd6, 0xfc, 0xd4, 0xec, 0xd6, 0xfc, - 0xd4, 0xec, 0xd6, 0xfc, 0xd4, 0xec, 0xd6, 0xfc, 0xd4, 0xec, 0xd7, 0xfc, - 0xd4, 0xec, 0xd7, 0xfc, 0xd4, 0xec, 0xd7, 0xfd, 0xd7, 0xec, 0xd7, 0xfd, - 0xd7, 0xec, 0xd8, 0xfd, 0xd7, 0xec, 0xd8, 0xfd, 0xd7, 0xec, 0xd8, 0xfd, - 0xd7, 0xec, 0xd9, 0xfd, 0xd7, 0xec, 0xd9, 0xfd, 0xd7, 0xec, 0xd9, 0xfd, - 0xd7, 0xec, 0xd9, 0xfd, 0xd7, 0xec, 0xda, 0xfd, 0xd7, 0xec, 0xda, 0xfd, - 0xd7, 0xec, 0xda, 0xfd, 0xda, 0xec, 0xda, 0xfd, 0xda, 0xec, 0xdb, 0xfd, - 0xda, 0xec, 0xdb, 0xfd, 0xda, 0xec, 0xdb, 0xfd, 0xda, 0xec, 0xdb, 0xfd, - 0xda, 0xec, 0xdc, 0xf7, 0xe4, 0xec, 0xdc, 0xf8, 0xe3, 0xec, 0xdc, 0xf7, - 0xe4, 0xec, 0xdd, 0xf8, 0xe3, 0xec, 0xdd, 0xf7, 0xe4, 0xec, 0xdd, 0xf8, - 0xe3, 0xec, 0xdd, 0xf7, 0xe4, 0xec, 0xde, 0xf8, 0xe3, 0xec, 0xde, 0xf7, - 0xe4, 0xec, 0xde, 0xf8, 0xe3, 0xec, 0xde, 0xf7, 0xe4, 0xec, 0xdf, 0xf8, - 0xe3, 0xec, 0xdf, 0xf7, 0xe4, 0xec, 0xdf, 0xf8, 0xe3, 0xec, 0xdf, 0xf7, - 0xe4, 0xec, 0xe0, 0xf7, 0xe4, 0xec, 0xe0, 0xf7, 0xe4, 0xec, 0xe0, 0xf7, - 0xe4, 0xec, 0xe1, 0xf7, 0xe4, 0xec, 0xe1, 0xf7, 0xe4, 0xec, 0xe1, 0xf7, - 0xe4, 0xec, 0xe1, 0xf7, 0xe4, 0xec, 0xe2, 0xf7, 0xe4, 0xec, 0xe2, 0xf7, - 0xe4, 0xec, 0xe2, 0xf7, 0xe4, 0xec, 0xe2, 0xf7, 0xe4, 0xec, 0xe3, 0xf7, - 0xe4, 0xec, 0xe3, 0xf7, 0xe4, 0xec, 0xe3, 0xf7, 0xe4, 0xec, 0xe3, 0xf7, - 0xe4, 0xec, 0xe4, 0xf7, 0xe4, 0xec, 0xe3, 0xf7, 0xe4, 0xec, 0xe4, 0xf7, - 0xe4, 0xec, 0xe3, 0xf7, 0xe4, 0xec, 0xe4, 0xf7, 0xe5, 0xec, 0xe6, 0xf7, - 0xe5, 0xec, 0xe6, 0xf7, 0xe5, 0xec, 0xe6, 0xf7, 0xe5, 0xec, 0xe6, 0xf6, - 0xe6, 0xec, 0xe6, 0xf7, 0xe5, 0xec, 0xe6, 0xf6, 0xe6, 0xec, 0xe6, 0xf7, - 0xe5, 0xec, 0xe7, 0xf6, 0xe6, 0xec, 0xe7, 0xf7, 0xe5, 0xec, 0xe7, 0xf6, - 0xe6, 0xec, 0xe7, 0xf7, 0xe5, 0xec, 0xe8, 0xf6, 0xe6, 0xec, 0xe8, 0xf7, - 0xe5, 0xec, 0xe8, 0xf6, 0xe6, 0xec, 0xe8, 0xf7, 0xe5, 0xec, 0xe9, 0xf6, - 0xe6, 0xec, 0xe9, 0xf7, 0xe5, 0xec, 0xe9, 0xf6, 0xe6, 0xec, 0xe9, 0xf7, - 0xe5, 0xec, 0xea, 0xf6, 0xe6, 0xec, 0xea, 0xf5, 0xe6, 0xec, 0xea, 0xf6, - 0xe6, 0xec, 0xea, 0xf5, 0xe6, 0xec, 0xeb, 0xf7, 0xef, 0xec, 0xeb, 0xf8, - 0xef, 0xec, 0xeb, 0xf7, 0xef, 0xec, 0xeb, 0xf8, 0xef, 0xec, 0xec, 0xf7, - 0xef, 0xec, 0xec, 0xf8, 0xef, 0xec, 0xec, 0xf7, 0xef, 0xec, 0xec, 0xf8, - 0xef, 0xec, 0xec, 0xf7, 0xef, 0xec, 0xed, 0xf8, 0xef, 0xec, 0xed, 0xf7, - 0xef, 0xec, 0xed, 0xf8, 0xef, 0xec, 0xed, 0xf7, 0xef, 0xec, 0xee, 0xf8, - 0xef, 0xec, 0xee, 0xf7, 0xef, 0xec, 0xee, 0xf8, 0xef, 0xec, 0xee, 0xf7, - 0xef, 0xec, 0xef, 0xf7, 0xf0, 0xec, 0xef, 0xf7, 0xef, 0xec, 0xef, 0xf7, - 0xf0, 0xec, 0xef, 0xf7, 0xef, 0xec, 0xef, 0xf7, 0xf0, 0xec, 0xf0, 0xf7, - 0xef, 0xec, 0xf0, 0xf7, 0xf0, 0xec, 0xf0, 0xf7, 0xef, 0xec, 0xf1, 0xf7, - 0xf0, 0xec, 0xf1, 0xf7, 0xef, 0xec, 0xf1, 0xf7, 0xf0, 0xec, 0xf1, 0xf7, - 0xef, 0xec, 0xf2, 0xf7, 0xf0, 0xec, 0xf2, 0xf5, 0xf0, 0xec, 0xf2, 0xf7, - 0xf0, 0xec, 0xf2, 0xf5, 0xf0, 0xec, 0xf2, 0xf7, 0xf0, 0xec, 0xf3, 0xf5, - 0xf0, 0xec, 0xf3, 0xf7, 0xf0, 0xec, 0xf3, 0xf5, 0xf0, 0xec, 0xf3, 0xf7, - 0xf0, 0xec, 0xf4, 0xf5, 0xf0, 0xec, 0xf4, 0xf7, 0xf0, 0xec, 0xf4, 0xf5, - 0xf0, 0xec, 0xf4, 0xf7, 0xf0, 0xec, 0xf5, 0xf5, 0xf0, 0xec, 0xf5, 0xf7, - 0xf0, 0xec, 0xf5, 0xf5, 0xf0, 0xec, 0xf5, 0xf7, 0xf0, 0xec, 0xf5, 0xf5, - 0xf0, 0xec, 0xf6, 0xf7, 0xf0, 0xec, 0xf6, 0xf5, 0xf0, 0xec, 0xf6, 0xf7, - 0xf0, 0xec, 0xf6, 0xf5, 0xf0, 0xec, 0xf7, 0xf7, 0xf0, 0xec, 0xf7, 0xf5, - 0xf0, 0xec, 0xf7, 0xf7, 0xf0, 0xec, 0xf7, 0xf5, 0xf0, 0xec, 0xf8, 0xf7, - 0xf0, 0xec, 0xf8, 0xf5, 0xf0, 0xec, 0xf8, 0xf7, 0xf0, 0xec, 0xf8, 0xf5, - 0xf0, 0xec, 0xf8, 0xf4, 0xf0, 0xec, 0xf9, 0xf5, 0xf0, 0xec, 0xf9, 0xf4, - 0xf0, 0xec, 0xf9, 0xf5, 0xf0, 0xec, 0xf9, 0xf4, 0xf0, 0xec, 0xfa, 0xf5, - 0xf0, 0xec, 0xfa, 0xf4, 0xf0, 0xec, 0xfa, 0xf5, 0xf0, 0xec, 0xfa, 0xf4, - 0xf0, 0xec, 0xfa, 0xf5, 0xf0, 0xec, 0xfb, 0xf4, 0xf0, 0xec, 0xfb, 0xf5, - 0xf0, 0xec, 0xfb, 0xf4, 0xf0, 0xec, 0xfb, 0xf5, 0xf0, 0xec, 0xfc, 0xf4, - 0xf0, 0xec, 0xfc, 0xf5, 0xf0, 0xec, 0xfc, 0xf4, 0xf0, 0xec, 0xfc, 0xf5, - 0xf0, 0xec, 0xfc, 0xf4, 0xf0, 0xec, 0xfd, 0xf5, 0xf0, 0xec, 0xfd, 0xf4, - 0xf0, 0xec, 0xfd, 0xf5, 0xf0, 0xec, 0xfd, 0xf4, 0xf0, 0xec, 0xfe, 0xf5, - 0xf0, 0xec, 0xfe, 0xf4, 0xf0, 0xec, 0xfe, 0xf5, 0xf0, 0xec, 0xfe, 0xf4, - 0xf0, 0xec, 0xfe, 0xf5, 0xf0, 0xec, 0xff, 0xf4, 0xf0, 0xec, 0xff, 0xf5, - 0xf0, 0xec, 0x03, 0xf4, 0x83, 0xed, 0x0a, 0xf4, 0x83, 0xed, 0x0f, 0xf4, - 0x83, 0xed, 0x14, 0xf4, 0x83, 0xed, 0x17, 0xf4, 0x83, 0xed, 0x1b, 0xf4, - 0x83, 0xed, 0x1e, 0xf4, 0x83, 0xed, 0x20, 0xf4, 0x83, 0xed, 0x23, 0xf4, - 0x83, 0xed, 0x25, 0xf4, 0x83, 0xed, 0x27, 0xf4, 0x83, 0xed, 0x29, 0xf4, - 0x83, 0xed, 0x2b, 0xf4, 0x83, 0xed, 0x2d, 0xf4, 0x83, 0xed, 0x2f, 0xf4, - 0x83, 0xed, 0x31, 0xf4, 0x83, 0xed, 0x32, 0xf4, 0x83, 0xed, 0x34, 0xf4, - 0x83, 0xed, 0x35, 0xf4, 0x83, 0xed, 0x37, 0xf4, 0x83, 0xed, 0x38, 0xf4, - 0x83, 0xed, 0x3a, 0xf4, 0x83, 0xed, 0x3b, 0xf4, 0x83, 0xed, 0x3c, 0xf4, - 0x83, 0xed, 0x3e, 0xf4, 0x83, 0xed, 0x3f, 0xf4, 0x83, 0xed, 0x40, 0xf4, - 0x83, 0xed, 0x42, 0xf4, 0x83, 0xed, 0x43, 0xf4, 0x83, 0xed, 0x44, 0xf4, - 0x83, 0xed, 0x45, 0xf4, 0x83, 0xed, 0x46, 0xf4, 0x83, 0xed, 0x47, 0xf4, - 0x83, 0xed, 0x48, 0xf4, 0x83, 0xed, 0x49, 0xf4, 0x83, 0xed, 0x4a, 0xf4, - 0x83, 0xed, 0x4b, 0xf4, 0x83, 0xed, 0x4c, 0xf4, 0x83, 0xed, 0x4d, 0xf4, - 0x83, 0xed, 0x4e, 0xf4, 0x83, 0xed, 0x4f, 0xf4, 0x83, 0xed, 0x50, 0xf4, - 0x83, 0xed, 0x51, 0xf4, 0x83, 0xed, 0x52, 0xf4, 0x83, 0xed, 0x53, 0xf4, - 0x83, 0xed, 0x54, 0xf4, 0x83, 0xed, 0x55, 0xf4, 0x83, 0xed, 0x56, 0xf4, - 0x83, 0xed, 0x57, 0xf4, 0x83, 0xed, 0x58, 0xf4, 0x83, 0xed, 0x58, 0xf4, - 0x83, 0xed, 0x59, 0xf4, 0x83, 0xed, 0x5a, 0xf4, 0x83, 0xed, 0x5b, 0xf4, - 0x83, 0xed, 0x5c, 0xf4, 0x83, 0xed, 0x5d, 0xf4, 0x83, 0xed, 0x5d, 0xf4, - 0x83, 0xed, 0x5e, 0xf4, 0x83, 0xed, 0x5f, 0xf4, 0x83, 0xed, 0x60, 0xf4, - 0x83, 0xed, 0x60, 0xf4, 0x83, 0xed, 0x61, 0xf4, 0x83, 0xed, 0x62, 0xf4, - 0x83, 0xed, 0x63, 0xf4, 0x83, 0xed, 0x63, 0xf4, 0x83, 0xed, 0x64, 0xf4, - 0x83, 0xed, 0x65, 0xf4, 0x83, 0xed, 0x66, 0xf4, 0x83, 0xed, 0x66, 0xf4, - 0x83, 0xed, 0x67, 0xf4, 0x83, 0xed, 0x68, 0xf4, 0x83, 0xed, 0x68, 0xf4, - 0x83, 0xed, 0x69, 0xf4, 0x83, 0xed, 0x6a, 0xf4, 0x83, 0xed, 0x6a, 0xf4, - 0x83, 0xed, 0x6b, 0xf4, 0x83, 0xed, 0x6c, 0xf4, 0x83, 0xed, 0x6c, 0xf4, - 0x83, 0xed, 0x6d, 0xf4, 0x83, 0xed, 0x6e, 0xf4, 0x83, 0xed, 0x6e, 0xf4, - 0x83, 0xed, 0x6f, 0xf4, 0x83, 0xed, 0x70, 0xf4, 0x83, 0xed, 0x70, 0xf4, - 0x83, 0xed, 0x71, 0xf4, 0x83, 0xed, 0x72, 0xf4, 0x83, 0xed, 0x72, 0xf4, - 0x83, 0xed, 0x73, 0xf4, 0x83, 0xed, 0x73, 0xf4, 0x83, 0xed, 0x74, 0xf4, - 0x83, 0xed, 0x75, 0xf4, 0x83, 0xed, 0x75, 0xf4, 0x83, 0xed, 0x76, 0xf4, - 0x83, 0xed, 0x76, 0xf4, 0x83, 0xed, 0x77, 0xf4, 0x83, 0xed, 0x78, 0xf4, - 0x83, 0xed, 0x78, 0xf4, 0x83, 0xed, 0x79, 0xf4, 0x83, 0xed, 0x79, 0xf4, - 0x83, 0xed, 0x7a, 0xf4, 0x83, 0xed, 0x7a, 0xf4, 0x83, 0xed, 0x7b, 0xf4, - 0x83, 0xed, 0x7c, 0xf4, 0x83, 0xed, 0x7c, 0xf4, 0x83, 0xed, 0x7d, 0xf4, - 0x83, 0xed, 0x7d, 0xf4, 0x83, 0xed, 0x7e, 0xf4, 0x83, 0xed, 0x7e, 0xf4, - 0x83, 0xed, 0x7f, 0xf4, 0x83, 0xed, 0x7f, 0xf4, 0x83, 0xed, 0x80, 0xf4, - 0x83, 0xed, 0x81, 0xf4, 0x83, 0xed, 0x81, 0xf4, 0x83, 0xed, 0x82, 0xf4, - 0x83, 0xed, 0x82, 0xf4, 0x83, 0xed, 0x83, 0xf4, 0x83, 0xed, 0x83, 0xf4, - 0x83, 0xed, 0x84, 0xf4, 0x84, 0xed, 0x84, 0xf4, 0x84, 0xed, 0x85, 0xf5, - 0x88, 0xed, 0x85, 0xf5, 0x88, 0xed, 0x86, 0xf5, 0x88, 0xed, 0x86, 0xf5, - 0x88, 0xed, 0x87, 0xf5, 0x88, 0xed, 0x87, 0xf5, 0x88, 0xed, 0x88, 0xf5, - 0x88, 0xed, 0x88, 0xf5, 0x88, 0xed, 0x89, 0xf5, 0x89, 0xed, 0x89, 0xf5, - 0x89, 0xed, 0x8a, 0xf5, 0x8a, 0xed, 0x8a, 0xf5, 0x8a, 0xed, 0x8b, 0xf5, - 0x8b, 0xed, 0x8b, 0xf5, 0x8d, 0xed, 0x8c, 0xf5, 0x8e, 0xed, 0x8c, 0xf5, - 0x8d, 0xed, 0x8d, 0xf5, 0x8e, 0xed, 0x8d, 0xf5, 0x8d, 0xed, 0x8e, 0xf5, - 0x8e, 0xed, 0x8e, 0xf5, 0x8e, 0xed, 0x8e, 0xf5, 0x8e, 0xed, 0x8f, 0xf5, - 0x8f, 0xed, 0x8f, 0xf5, 0x8f, 0xed, 0x90, 0xf5, 0x90, 0xed, 0x90, 0xf5, - 0x92, 0xed, 0x91, 0xf5, 0x93, 0xed, 0x91, 0xf5, 0x92, 0xed, 0x92, 0xf5, - 0x93, 0xed, 0x92, 0xf5, 0x92, 0xed, 0x93, 0xf5, 0x93, 0xed, 0x93, 0xf5, - 0x93, 0xed, 0x94, 0xf5, 0x94, 0xed, 0x94, 0xf5, 0x94, 0xed, 0x94, 0xf5, - 0x94, 0xed, 0x95, 0xf5, 0x95, 0xed, 0x95, 0xf6, 0x97, 0xed, 0x96, 0xf6, - 0x98, 0xed, 0x96, 0xf6, 0x97, 0xed, 0x97, 0xf6, 0x98, 0xed, 0x97, 0xf6, - 0x97, 0xed, 0x98, 0xf6, 0x98, 0xed, 0x98, 0xf6, 0x98, 0xed, 0x98, 0xf6, - 0x98, 0xed, 0x99, 0xf6, 0x99, 0xed, 0x99, 0xf6, 0x99, 0xed, 0x9a, 0xf6, - 0x9a, 0xed, 0x9a, 0xf6, 0x9a, 0xed, 0x9a, 0xf6, 0x9a, 0xed, 0x9b, 0xf6, - 0x9c, 0xed, 0x9b, 0xf6, 0x9c, 0xed, 0x9c, 0xf6, 0x9c, 0xed, 0x9c, 0xf6, - 0x9c, 0xed, 0x9d, 0xf6, 0x9d, 0xed, 0x9d, 0xf6, 0x9d, 0xed, 0x9d, 0xf6, - 0x9d, 0xed, 0x9e, 0xf6, 0x9e, 0xed, 0x9e, 0xf6, 0x9e, 0xed, 0x9f, 0xf6, - 0x9f, 0xed, 0x9f, 0xf6, 0x9f, 0xed, 0x9f, 0xf6, 0x9f, 0xed, 0xa0, 0xf6, - 0xa0, 0xed, 0xa0, 0xf7, 0xa0, 0xee, 0xa1, 0xf7, 0xa1, 0xee, 0xa1, 0xf7, - 0xa1, 0xee, 0xa1, 0xf7, 0xa1, 0xee, 0xa2, 0xf7, 0xa2, 0xee, 0xa2, 0xf7, - 0xa2, 0xee, 0xa3, 0xf7, 0xa3, 0xee, 0xa3, 0xf7, 0xa3, 0xee, 0xa3, 0xf7, - 0xa3, 0xee, 0xa4, 0xf7, 0xa4, 0xee, 0xa4, 0xf7, 0xa4, 0xee, 0xa4, 0xf7, - 0xa5, 0xee, 0xa4, 0xf7, 0xa5, 0xee, 0xa5, 0xf7, 0xa5, 0xef, 0xa6, 0xf7, - 0xa6, 0xef, 0xa6, 0xf7, 0xa6, 0xef, 0xa6, 0xf7, 0xa6, 0xef, 0xa7, 0xf7, - 0xa7, 0xef, 0xa7, 0xf7, 0xa7, 0xef, 0xa8, 0xf7, 0xa8, 0xef, 0xa8, 0xf7, - 0xa8, 0xef, 0xa8, 0xf7, 0xa8, 0xef, 0xa8, 0xf7, 0xa9, 0xef, 0xa8, 0xf7, - 0xa9, 0xef, 0xa8, 0xf7, 0xaa, 0xef, 0xa8, 0xf7, 0xaa, 0xef, 0xaa, 0xf7, - 0xaa, 0xf0, 0xab, 0xf7, 0xab, 0xf0, 0xab, 0xf7, 0xab, 0xf0, 0xab, 0xf7, - 0xab, 0xf0, 0xac, 0xf7, 0xac, 0xf0, 0xac, 0xf7, 0xac, 0xf0, 0xac, 0xf7, - 0xac, 0xf0, 0xac, 0xf7, 0xad, 0xf0, 0xac, 0xf7, 0xad, 0xf0, 0xac, 0xf7, - 0xae, 0xf0, 0xac, 0xf7, 0xae, 0xf0, 0xae, 0xf7, 0xae, 0xf1, 0xaf, 0xf7, - 0xaf, 0xf1, 0xaf, 0xf7, 0xaf, 0xf1, 0xaf, 0xf7, 0xaf, 0xf1, 0xb0, 0xf7, - 0xb0, 0xf1, 0xb0, 0xf7, 0xb0, 0xf1, 0xb0, 0xf7, 0xb0, 0xf1, 0xb0, 0xf7, - 0xb1, 0xf1, 0xb0, 0xf7, 0xb1, 0xf1, 0xb0, 0xf7, 0xb2, 0xf1, 0xb0, 0xf7, - 0xb2, 0xf1, 0xb2, 0xf7, 0xb2, 0xf2, 0xb3, 0xf7, 0xb3, 0xf2, 0xb3, 0xf7, - 0xb3, 0xf2, 0xb3, 0xf7, 0xb3, 0xf2, 0xb4, 0xf7, 0xb4, 0xf2, 0xb4, 0xf7, - 0xb4, 0xf2, 0xb4, 0xf7, 0xb4, 0xf2, 0xb4, 0xf7, 0xb5, 0xf2, 0xb4, 0xf7, - 0xb5, 0xf2, 0xb4, 0xf7, 0xb5, 0xf2, 0xb4, 0xf7, 0xb6, 0xf2, 0xb4, 0xf7, - 0xb6, 0xf2, 0xb4, 0xf7, 0xb6, 0xf2, 0xb7, 0xf7, 0xb7, 0xf3, 0xb7, 0xf7, - 0xb7, 0xf3, 0xb7, 0xf7, 0xb7, 0xf3, 0xb8, 0xf7, 0xb8, 0xf3, 0xb8, 0xf7, - 0xb8, 0xf3, 0xb8, 0xf7, 0xb8, 0xf3, 0xb8, 0xf7, 0xb9, 0xf3, 0xb8, 0xf7, - 0xb9, 0xf3, 0xb8, 0xf7, 0xb9, 0xf3, 0xb8, 0xf7, 0xba, 0xf3, 0xb8, 0xf7, - 0xba, 0xf3, 0xba, 0xf7, 0xba, 0xf4, 0xbb, 0xf7, 0xbb, 0xf4, 0xbb, 0xf7, - 0xbb, 0xf4, 0xbb, 0xf7, 0xbb, 0xf4, 0xbc, 0xf7, 0xbc, 0xf4, 0xbb, 0xf7, - 0xbc, 0xf4, 0xbc, 0xf7, 0xbc, 0xf4, 0xbb, 0xf7, 0xbd, 0xf4, 0xbc, 0xf7, - 0xbd, 0xf4, 0xbb, 0xf7, 0xbd, 0xf4, 0xbc, 0xf7, 0xbe, 0xf4, 0xbe, 0xf7, - 0xbe, 0xf5, 0xbe, 0xf7, 0xbe, 0xf5, 0xbf, 0xf7, 0xbf, 0xf5, 0xbf, 0xf7, - 0xbf, 0xf5, 0xbf, 0xf7, 0xbf, 0xf5, 0xbf, 0xf7, 0xc0, 0xf5, 0xbf, 0xf7, - 0xc0, 0xf5, 0xbf, 0xf7, 0xc0, 0xf5, 0xbf, 0xf7, 0xc1, 0xf5, 0xbf, 0xf7, - 0xc1, 0xf5, 0xbf, 0xf7, 0xc1, 0xf5, 0xbf, 0xf7, 0xc1, 0xf5, 0xbf, 0xf7, - 0xc2, 0xf5, 0xc2, 0xf7, 0xc2, 0xf6, 0xc2, 0xf7, 0xc2, 0xf6, 0xc3, 0xf7, - 0xc3, 0xf6, 0xc2, 0xf7, 0xc3, 0xf6, 0xc3, 0xf7, 0xc3, 0xf6, 0xc2, 0xf7, - 0xc4, 0xf6, 0xc3, 0xf7, 0xc4, 0xf6, 0xc2, 0xf7, 0xc4, 0xf6, 0xc3, 0xf7, - 0xc5, 0xf6, 0xca, 0xf7, 0xc5, 0xee, 0xca, 0xf7, 0xc5, 0xf1, 0xca, 0xf7, - 0xc6, 0xee, 0xcb, 0xf7, 0xc6, 0xed, 0xca, 0xf7, 0xc6, 0xee, 0xcb, 0xf7, - 0xc6, 0xed, 0xca, 0xf7, 0xc7, 0xee, 0xcb, 0xf7, 0xc7, 0xed, 0xca, 0xf7, - 0xc7, 0xee, 0xcb, 0xf7, 0xc8, 0xed, 0xca, 0xf7, 0xc8, 0xee, 0xcb, 0xf7, - 0xc8, 0xed, 0xca, 0xf7, 0xc9, 0xee, 0xcb, 0xf7, 0xc9, 0xed, 0xca, 0xf7, - 0xc9, 0xee, 0xcb, 0xf7, 0xc9, 0xed, 0xca, 0xf7, 0xca, 0xee, 0xcb, 0xf7, - 0xca, 0xed, 0xcb, 0xf7, 0xca, 0xed, 0xcb, 0xf7, 0xca, 0xed, 0xcb, 0xf7, - 0xca, 0xed, 0xcb, 0xf7, 0xca, 0xed, 0xcc, 0xf7, 0xca, 0xed, 0xcc, 0xf7, - 0xca, 0xed, 0xcc, 0xf7, 0xca, 0xed, 0xcc, 0xf7, 0xca, 0xed, 0xcd, 0xf7, - 0xca, 0xed, 0xcd, 0xf5, 0xcb, 0xed, 0xcd, 0xf7, 0xca, 0xed, 0xce, 0xf5, - 0xcb, 0xed, 0xce, 0xf7, 0xca, 0xed, 0xce, 0xf5, 0xcb, 0xed, 0xce, 0xf7, - 0xca, 0xed, 0xcf, 0xf5, 0xcb, 0xed, 0xcf, 0xf7, 0xca, 0xed, 0xcf, 0xf5, - 0xcb, 0xed, 0xd0, 0xf7, 0xca, 0xed, 0xd0, 0xf5, 0xcb, 0xed, 0xd0, 0xf7, - 0xca, 0xed, 0xd0, 0xf5, 0xcb, 0xed, 0xd1, 0xf7, 0xca, 0xed, 0xd1, 0xf5, - 0xcb, 0xed, 0xd1, 0xfc, 0xd0, 0xed, 0xd2, 0xfc, 0xcf, 0xed, 0xd2, 0xfc, - 0xd0, 0xed, 0xd2, 0xfc, 0xd2, 0xed, 0xd2, 0xfc, 0xd2, 0xed, 0xd3, 0xfc, - 0xd3, 0xed, 0xd3, 0xfc, 0xd2, 0xed, 0xd3, 0xfc, 0xd3, 0xed, 0xd4, 0xfc, - 0xd2, 0xed, 0xd4, 0xfc, 0xd3, 0xed, 0xd4, 0xfc, 0xd2, 0xed, 0xd4, 0xfc, - 0xd3, 0xed, 0xd5, 0xfc, 0xd2, 0xed, 0xd5, 0xfc, 0xd3, 0xed, 0xd5, 0xfd, - 0xd5, 0xed, 0xd6, 0xfd, 0xd6, 0xed, 0xd6, 0xfd, 0xd6, 0xed, 0xd6, 0xfd, - 0xd6, 0xed, 0xd6, 0xfd, 0xd6, 0xed, 0xd7, 0xfd, 0xd6, 0xed, 0xd7, 0xfd, - 0xd6, 0xed, 0xd7, 0xfd, 0xd6, 0xed, 0xd7, 0xfd, 0xd6, 0xed, 0xd8, 0xfd, - 0xd6, 0xed, 0xd8, 0xfd, 0xd6, 0xed, 0xd8, 0xfd, 0xd6, 0xed, 0xd9, 0xfd, - 0xd6, 0xed, 0xd9, 0xfd, 0xd9, 0xed, 0xd9, 0xfd, 0xd9, 0xed, 0xd9, 0xfd, - 0xd9, 0xed, 0xda, 0xfd, 0xd9, 0xed, 0xda, 0xfd, 0xd9, 0xed, 0xda, 0xfd, - 0xd9, 0xed, 0xda, 0xfd, 0xd9, 0xed, 0xdb, 0xfd, 0xd9, 0xed, 0xdb, 0xfd, - 0xd9, 0xed, 0xdb, 0xfd, 0xd9, 0xed, 0xdb, 0xfd, 0xd9, 0xed, 0xdc, 0xf7, - 0xe4, 0xed, 0xdc, 0xf8, 0xe3, 0xed, 0xdc, 0xf7, 0xe4, 0xed, 0xdd, 0xf8, - 0xe3, 0xed, 0xdd, 0xf7, 0xe4, 0xed, 0xdd, 0xf8, 0xe3, 0xed, 0xdd, 0xf7, - 0xe4, 0xed, 0xde, 0xf8, 0xe3, 0xed, 0xde, 0xf7, 0xe4, 0xed, 0xde, 0xf8, - 0xe3, 0xed, 0xde, 0xf7, 0xe4, 0xed, 0xdf, 0xf8, 0xe3, 0xed, 0xdf, 0xf7, - 0xe4, 0xed, 0xdf, 0xf8, 0xe3, 0xed, 0xdf, 0xf7, 0xe4, 0xed, 0xe0, 0xf8, - 0xe3, 0xed, 0xe0, 0xf7, 0xe4, 0xed, 0xe0, 0xf8, 0xe3, 0xed, 0xe1, 0xf7, - 0xe4, 0xed, 0xe1, 0xf8, 0xe3, 0xed, 0xe1, 0xf7, 0xe4, 0xed, 0xe1, 0xf8, - 0xe3, 0xed, 0xe2, 0xf7, 0xe4, 0xed, 0xe2, 0xf7, 0xe4, 0xed, 0xe2, 0xf7, - 0xe4, 0xed, 0xe2, 0xf7, 0xe4, 0xed, 0xe3, 0xf7, 0xe4, 0xed, 0xe3, 0xf7, - 0xe4, 0xed, 0xe3, 0xf7, 0xe4, 0xed, 0xe3, 0xf7, 0xe4, 0xed, 0xe4, 0xf7, - 0xe4, 0xec, 0xe3, 0xf7, 0xe4, 0xed, 0xe4, 0xf7, 0xe4, 0xec, 0xe3, 0xf7, - 0xe4, 0xed, 0xe6, 0xf7, 0xe5, 0xed, 0xe6, 0xf7, 0xe5, 0xed, 0xe6, 0xf7, - 0xe5, 0xed, 0xe6, 0xf7, 0xe5, 0xed, 0xe6, 0xf7, 0xe5, 0xed, 0xe6, 0xf7, - 0xe5, 0xed, 0xe6, 0xf7, 0xe5, 0xed, 0xe6, 0xf7, 0xe5, 0xed, 0xe7, 0xf6, - 0xe6, 0xed, 0xe7, 0xf7, 0xe5, 0xed, 0xe7, 0xf6, 0xe6, 0xed, 0xe7, 0xf7, - 0xe5, 0xed, 0xe8, 0xf6, 0xe6, 0xed, 0xe8, 0xf7, 0xe5, 0xed, 0xe8, 0xf6, - 0xe6, 0xed, 0xe8, 0xf7, 0xe5, 0xed, 0xe9, 0xf6, 0xe6, 0xed, 0xe9, 0xf7, - 0xe5, 0xed, 0xe9, 0xf6, 0xe6, 0xed, 0xe9, 0xf7, 0xe5, 0xed, 0xea, 0xf6, - 0xe6, 0xed, 0xea, 0xf5, 0xe6, 0xed, 0xea, 0xf6, 0xe6, 0xed, 0xea, 0xf5, - 0xe6, 0xed, 0xeb, 0xf9, 0xef, 0xed, 0xeb, 0xf7, 0xef, 0xed, 0xeb, 0xf9, - 0xef, 0xed, 0xeb, 0xf7, 0xef, 0xed, 0xec, 0xf7, 0xef, 0xed, 0xec, 0xf7, - 0xef, 0xed, 0xec, 0xf7, 0xef, 0xed, 0xec, 0xf7, 0xef, 0xed, 0xec, 0xf7, - 0xef, 0xed, 0xed, 0xf7, 0xef, 0xed, 0xed, 0xf7, 0xef, 0xed, 0xed, 0xf7, - 0xef, 0xed, 0xed, 0xf7, 0xef, 0xed, 0xee, 0xf7, 0xef, 0xed, 0xee, 0xf7, - 0xef, 0xed, 0xee, 0xf7, 0xef, 0xed, 0xee, 0xf7, 0xef, 0xed, 0xef, 0xf7, - 0xef, 0xed, 0xef, 0xf7, 0xef, 0xed, 0xef, 0xf7, 0xef, 0xed, 0xef, 0xf7, - 0xef, 0xed, 0xf0, 0xf6, 0xf0, 0xed, 0xf0, 0xf7, 0xef, 0xed, 0xf0, 0xf6, - 0xf0, 0xed, 0xf0, 0xf7, 0xef, 0xed, 0xf1, 0xf6, 0xf0, 0xed, 0xf1, 0xf7, - 0xef, 0xed, 0xf1, 0xf6, 0xf0, 0xed, 0xf1, 0xf7, 0xef, 0xed, 0xf2, 0xf6, - 0xf0, 0xed, 0xf2, 0xf7, 0xef, 0xed, 0xf2, 0xf6, 0xf0, 0xed, 0xf2, 0xf7, - 0xef, 0xed, 0xf2, 0xf6, 0xf0, 0xed, 0xf3, 0xf7, 0xef, 0xed, 0xf3, 0xf6, - 0xf0, 0xed, 0xf3, 0xf7, 0xef, 0xed, 0xf3, 0xf6, 0xf0, 0xed, 0xf4, 0xf5, - 0xf0, 0xed, 0xf4, 0xf6, 0xf0, 0xed, 0xf4, 0xf5, 0xf0, 0xed, 0xf4, 0xf6, - 0xf0, 0xed, 0xf5, 0xf5, 0xf0, 0xed, 0xf5, 0xf6, 0xf0, 0xed, 0xf5, 0xf5, - 0xf0, 0xed, 0xf5, 0xf6, 0xf0, 0xed, 0xf5, 0xf5, 0xf0, 0xed, 0xf6, 0xf6, - 0xf0, 0xed, 0xf6, 0xf5, 0xf0, 0xed, 0xf6, 0xf6, 0xf0, 0xed, 0xf6, 0xf5, - 0xf0, 0xed, 0xf7, 0xf6, 0xf0, 0xed, 0xf7, 0xf5, 0xf0, 0xed, 0xf7, 0xf6, - 0xf0, 0xed, 0xf7, 0xf5, 0xf0, 0xed, 0xf8, 0xf6, 0xf0, 0xed, 0xf8, 0xf5, - 0xf0, 0xed, 0xf8, 0xf6, 0xf0, 0xed, 0xf8, 0xf5, 0xf0, 0xed, 0xf8, 0xf6, - 0xf0, 0xed, 0xf9, 0xf5, 0xf0, 0xed, 0xf9, 0xf6, 0xf0, 0xed, 0xf9, 0xf5, - 0xf0, 0xed, 0xf9, 0xf6, 0xf0, 0xed, 0xfa, 0xf5, 0xf0, 0xed, 0xfa, 0xf6, - 0xf0, 0xed, 0xfa, 0xf5, 0xf0, 0xed, 0xfa, 0xf6, 0xf0, 0xed, 0xfa, 0xf5, - 0xf0, 0xed, 0xfb, 0xf6, 0xf0, 0xed, 0xfb, 0xf5, 0xf0, 0xed, 0xfb, 0xf4, - 0xf0, 0xed, 0xfb, 0xf5, 0xf0, 0xed, 0xfc, 0xf4, 0xf0, 0xed, 0xfc, 0xf5, - 0xf0, 0xed, 0xfc, 0xf4, 0xf0, 0xed, 0xfc, 0xf5, 0xf0, 0xed, 0xfc, 0xf4, - 0xf0, 0xed, 0xfd, 0xf5, 0xf0, 0xed, 0xfd, 0xf4, 0xf0, 0xed, 0xfd, 0xf5, - 0xf0, 0xed, 0xfd, 0xf4, 0xf0, 0xed, 0xfe, 0xf5, 0xf0, 0xed, 0xfe, 0xf4, - 0xf0, 0xed, 0xfe, 0xf5, 0xf0, 0xed, 0xfe, 0xf4, 0xf0, 0xed, 0xfe, 0xf5, - 0xf0, 0xed, 0xff, 0xf4, 0xf0, 0xed, 0xff, 0xf5, 0xf0, 0xed, 0x03, 0xf4, - 0x83, 0xed, 0x0a, 0xf4, 0x83, 0xed, 0x0f, 0xf4, 0x83, 0xed, 0x14, 0xf4, - 0x83, 0xed, 0x17, 0xf4, 0x83, 0xed, 0x1b, 0xf4, 0x83, 0xed, 0x1e, 0xf4, - 0x83, 0xed, 0x20, 0xf4, 0x83, 0xed, 0x23, 0xf4, 0x83, 0xed, 0x25, 0xf4, - 0x83, 0xed, 0x27, 0xf4, 0x83, 0xed, 0x29, 0xf4, 0x83, 0xed, 0x2b, 0xf4, - 0x83, 0xed, 0x2d, 0xf4, 0x83, 0xed, 0x2f, 0xf4, 0x83, 0xed, 0x31, 0xf4, - 0x83, 0xed, 0x32, 0xf4, 0x83, 0xed, 0x34, 0xf4, 0x83, 0xed, 0x35, 0xf4, - 0x83, 0xed, 0x37, 0xf4, 0x83, 0xed, 0x38, 0xf4, 0x83, 0xed, 0x3a, 0xf4, - 0x83, 0xed, 0x3b, 0xf4, 0x83, 0xed, 0x3c, 0xf4, 0x83, 0xed, 0x3e, 0xf4, - 0x83, 0xed, 0x3f, 0xf4, 0x83, 0xed, 0x40, 0xf4, 0x83, 0xed, 0x42, 0xf4, - 0x83, 0xed, 0x43, 0xf4, 0x83, 0xed, 0x44, 0xf4, 0x83, 0xed, 0x45, 0xf4, - 0x83, 0xed, 0x46, 0xf4, 0x83, 0xed, 0x47, 0xf4, 0x83, 0xed, 0x48, 0xf4, - 0x83, 0xed, 0x49, 0xf4, 0x83, 0xed, 0x4a, 0xf4, 0x83, 0xed, 0x4b, 0xf4, - 0x83, 0xed, 0x4c, 0xf4, 0x83, 0xed, 0x4d, 0xf4, 0x83, 0xed, 0x4e, 0xf4, - 0x83, 0xed, 0x4f, 0xf4, 0x83, 0xed, 0x50, 0xf4, 0x83, 0xed, 0x51, 0xf4, - 0x83, 0xed, 0x52, 0xf4, 0x83, 0xed, 0x53, 0xf4, 0x83, 0xed, 0x54, 0xf4, - 0x83, 0xed, 0x55, 0xf4, 0x83, 0xed, 0x56, 0xf4, 0x83, 0xed, 0x57, 0xf4, - 0x83, 0xed, 0x58, 0xf4, 0x83, 0xed, 0x58, 0xf4, 0x83, 0xed, 0x59, 0xf4, - 0x83, 0xed, 0x5a, 0xf4, 0x83, 0xed, 0x5b, 0xf4, 0x83, 0xed, 0x5c, 0xf4, - 0x83, 0xed, 0x5d, 0xf4, 0x83, 0xed, 0x5d, 0xf4, 0x83, 0xed, 0x5e, 0xf4, - 0x83, 0xed, 0x5f, 0xf4, 0x83, 0xed, 0x60, 0xf4, 0x83, 0xed, 0x60, 0xf4, - 0x83, 0xed, 0x61, 0xf4, 0x83, 0xed, 0x62, 0xf4, 0x83, 0xed, 0x63, 0xf4, - 0x83, 0xed, 0x63, 0xf4, 0x83, 0xed, 0x64, 0xf4, 0x83, 0xed, 0x65, 0xf4, - 0x83, 0xed, 0x66, 0xf4, 0x83, 0xed, 0x66, 0xf4, 0x83, 0xed, 0x67, 0xf4, - 0x83, 0xed, 0x68, 0xf4, 0x83, 0xed, 0x68, 0xf4, 0x83, 0xed, 0x69, 0xf4, - 0x83, 0xed, 0x6a, 0xf4, 0x83, 0xed, 0x6a, 0xf4, 0x83, 0xed, 0x6b, 0xf4, - 0x83, 0xed, 0x6c, 0xf4, 0x83, 0xed, 0x6c, 0xf4, 0x83, 0xed, 0x6d, 0xf4, - 0x83, 0xed, 0x6e, 0xf4, 0x83, 0xed, 0x6e, 0xf4, 0x83, 0xed, 0x6f, 0xf4, - 0x83, 0xed, 0x70, 0xf4, 0x83, 0xed, 0x70, 0xf4, 0x83, 0xed, 0x71, 0xf4, - 0x83, 0xed, 0x72, 0xf4, 0x83, 0xed, 0x72, 0xf4, 0x83, 0xed, 0x73, 0xf4, - 0x83, 0xed, 0x73, 0xf4, 0x83, 0xed, 0x74, 0xf4, 0x83, 0xed, 0x75, 0xf4, - 0x83, 0xed, 0x75, 0xf4, 0x83, 0xed, 0x76, 0xf4, 0x83, 0xed, 0x76, 0xf4, - 0x83, 0xed, 0x77, 0xf4, 0x83, 0xed, 0x78, 0xf4, 0x83, 0xed, 0x78, 0xf4, - 0x83, 0xed, 0x79, 0xf4, 0x83, 0xed, 0x79, 0xf4, 0x83, 0xed, 0x7a, 0xf4, - 0x83, 0xed, 0x7a, 0xf4, 0x83, 0xed, 0x7b, 0xf4, 0x83, 0xed, 0x7c, 0xf4, - 0x83, 0xed, 0x7c, 0xf4, 0x83, 0xed, 0x7d, 0xf4, 0x83, 0xed, 0x7d, 0xf4, - 0x83, 0xed, 0x7e, 0xf4, 0x83, 0xed, 0x7e, 0xf4, 0x83, 0xed, 0x7f, 0xf4, - 0x83, 0xed, 0x7f, 0xf4, 0x83, 0xed, 0x80, 0xf4, 0x83, 0xed, 0x81, 0xf4, - 0x83, 0xed, 0x81, 0xf4, 0x85, 0xed, 0x82, 0xf4, 0x83, 0xed, 0x82, 0xf4, - 0x85, 0xed, 0x83, 0xf4, 0x86, 0xed, 0x83, 0xf4, 0x85, 0xed, 0x84, 0xf4, - 0x86, 0xed, 0x84, 0xf4, 0x85, 0xed, 0x85, 0xf4, 0x86, 0xed, 0x85, 0xf4, - 0x85, 0xed, 0x86, 0xf4, 0x86, 0xed, 0x86, 0xf4, 0x86, 0xed, 0x87, 0xf4, - 0x87, 0xed, 0x87, 0xf4, 0x87, 0xed, 0x88, 0xf5, 0x8b, 0xed, 0x88, 0xf5, - 0x8b, 0xed, 0x89, 0xf5, 0x8b, 0xed, 0x89, 0xf5, 0x8b, 0xed, 0x8a, 0xf5, - 0x8b, 0xed, 0x8a, 0xf5, 0x8b, 0xed, 0x8b, 0xf5, 0x8b, 0xed, 0x8b, 0xf5, - 0x8b, 0xed, 0x8c, 0xf5, 0x8c, 0xed, 0x8c, 0xf5, 0x8c, 0xed, 0x8d, 0xf5, - 0x8d, 0xed, 0x8d, 0xf5, 0x8d, 0xed, 0x8e, 0xf5, 0x8e, 0xed, 0x8e, 0xf5, - 0x90, 0xed, 0x8e, 0xf5, 0x90, 0xed, 0x8f, 0xf5, 0x90, 0xed, 0x8f, 0xf5, - 0x90, 0xed, 0x90, 0xf5, 0x90, 0xed, 0x90, 0xf5, 0x90, 0xed, 0x91, 0xf5, - 0x91, 0xed, 0x91, 0xf5, 0x91, 0xed, 0x92, 0xf5, 0x92, 0xed, 0x92, 0xf5, - 0x92, 0xed, 0x93, 0xf5, 0x93, 0xed, 0x93, 0xf6, 0x95, 0xed, 0x94, 0xf6, - 0x95, 0xed, 0x94, 0xf6, 0x95, 0xed, 0x94, 0xf6, 0x95, 0xed, 0x95, 0xf6, - 0x95, 0xed, 0x95, 0xf6, 0x95, 0xed, 0x96, 0xf6, 0x96, 0xed, 0x96, 0xf6, - 0x96, 0xed, 0x97, 0xf6, 0x97, 0xed, 0x97, 0xf6, 0x97, 0xed, 0x98, 0xf6, - 0x98, 0xed, 0x98, 0xf6, 0x9a, 0xed, 0x98, 0xf6, 0x9a, 0xed, 0x99, 0xf6, - 0x9a, 0xed, 0x99, 0xf6, 0x9a, 0xed, 0x9a, 0xf6, 0x9a, 0xed, 0x9a, 0xf6, - 0x9a, 0xed, 0x9a, 0xf6, 0x9a, 0xed, 0x9b, 0xf6, 0x9b, 0xed, 0x9b, 0xf6, - 0x9b, 0xed, 0x9c, 0xf6, 0x9c, 0xed, 0x9c, 0xf6, 0x9c, 0xed, 0x9d, 0xf6, - 0x9d, 0xed, 0x9d, 0xf6, 0x9d, 0xed, 0x9d, 0xf7, 0x9e, 0xed, 0x9e, 0xf7, - 0x9f, 0xed, 0x9e, 0xf7, 0x9e, 0xed, 0x9f, 0xf7, 0x9f, 0xed, 0x9f, 0xf7, - 0x9f, 0xed, 0x9f, 0xf7, 0x9f, 0xed, 0xa0, 0xf7, 0xa0, 0xed, 0xa0, 0xf7, - 0xa0, 0xed, 0xa1, 0xf7, 0xa1, 0xed, 0xa1, 0xf7, 0xa1, 0xed, 0xa1, 0xf7, - 0xa1, 0xed, 0xa2, 0xf7, 0xa2, 0xed, 0xa2, 0xf7, 0xa2, 0xed, 0xa3, 0xf7, - 0xa3, 0xee, 0xa3, 0xf7, 0xa3, 0xee, 0xa3, 0xf7, 0xa3, 0xee, 0xa4, 0xf7, - 0xa4, 0xee, 0xa4, 0xf7, 0xa4, 0xee, 0xa5, 0xf7, 0xa5, 0xee, 0xa5, 0xf7, - 0xa5, 0xee, 0xa5, 0xf7, 0xa5, 0xee, 0xa6, 0xf7, 0xa6, 0xee, 0xa6, 0xf7, - 0xa6, 0xee, 0xa6, 0xf7, 0xa6, 0xee, 0xa6, 0xf7, 0xa7, 0xee, 0xa6, 0xf7, - 0xa7, 0xee, 0xa8, 0xf7, 0xa8, 0xef, 0xa8, 0xf7, 0xa8, 0xef, 0xa8, 0xf7, - 0xa8, 0xef, 0xa9, 0xf7, 0xa9, 0xef, 0xa9, 0xf7, 0xa9, 0xef, 0xaa, 0xf7, - 0xaa, 0xef, 0xaa, 0xf7, 0xaa, 0xef, 0xaa, 0xf7, 0xaa, 0xef, 0xab, 0xf7, - 0xab, 0xef, 0xaa, 0xf7, 0xab, 0xef, 0xab, 0xf7, 0xab, 0xef, 0xaa, 0xf7, - 0xac, 0xef, 0xab, 0xf7, 0xac, 0xef, 0xac, 0xf7, 0xac, 0xf0, 0xad, 0xf7, - 0xad, 0xf0, 0xad, 0xf7, 0xad, 0xf0, 0xae, 0xf7, 0xae, 0xf0, 0xae, 0xf7, - 0xae, 0xf0, 0xae, 0xf7, 0xae, 0xf0, 0xaf, 0xf7, 0xaf, 0xf0, 0xae, 0xf7, - 0xaf, 0xf0, 0xaf, 0xf7, 0xaf, 0xf0, 0xae, 0xf7, 0xb0, 0xf0, 0xaf, 0xf7, - 0xb0, 0xf0, 0xb0, 0xf7, 0xb0, 0xf1, 0xb1, 0xf7, 0xb1, 0xf1, 0xb1, 0xf7, - 0xb1, 0xf1, 0xb2, 0xf7, 0xb2, 0xf1, 0xb2, 0xf7, 0xb2, 0xf1, 0xb2, 0xf7, - 0xb2, 0xf1, 0xb3, 0xf7, 0xb3, 0xf1, 0xb2, 0xf7, 0xb3, 0xf1, 0xb3, 0xf7, - 0xb3, 0xf1, 0xb2, 0xf7, 0xb4, 0xf1, 0xb3, 0xf7, 0xb4, 0xf1, 0xb4, 0xf7, - 0xb4, 0xf2, 0xb5, 0xf7, 0xb5, 0xf2, 0xb5, 0xf7, 0xb5, 0xf2, 0xb5, 0xf7, - 0xb5, 0xf2, 0xb6, 0xf7, 0xb6, 0xf2, 0xb6, 0xf7, 0xb6, 0xf2, 0xb6, 0xf7, - 0xb6, 0xf2, 0xb6, 0xf7, 0xb7, 0xf2, 0xb6, 0xf7, 0xb7, 0xf2, 0xb6, 0xf7, - 0xb7, 0xf2, 0xb6, 0xf7, 0xb8, 0xf2, 0xb6, 0xf7, 0xb8, 0xf2, 0xb6, 0xf7, - 0xb8, 0xf2, 0xb9, 0xf7, 0xb9, 0xf3, 0xb9, 0xf7, 0xb9, 0xf3, 0xb9, 0xf7, - 0xb9, 0xf3, 0xba, 0xf7, 0xba, 0xf3, 0xba, 0xf7, 0xba, 0xf3, 0xba, 0xf7, - 0xba, 0xf3, 0xba, 0xf7, 0xbb, 0xf3, 0xba, 0xf7, 0xbb, 0xf3, 0xba, 0xf7, - 0xbb, 0xf3, 0xba, 0xf7, 0xbc, 0xf3, 0xba, 0xf7, 0xbc, 0xf3, 0xbc, 0xf7, - 0xbc, 0xf4, 0xbd, 0xf7, 0xbd, 0xf4, 0xbd, 0xf7, 0xbd, 0xf4, 0xbd, 0xf7, - 0xbd, 0xf4, 0xbe, 0xf7, 0xbe, 0xf4, 0xbd, 0xf7, 0xbe, 0xf4, 0xbe, 0xf7, - 0xbe, 0xf4, 0xbd, 0xf7, 0xbf, 0xf4, 0xbe, 0xf7, 0xbf, 0xf4, 0xbd, 0xf7, - 0xbf, 0xf4, 0xbe, 0xf7, 0xc0, 0xf4, 0xc0, 0xf7, 0xc0, 0xf5, 0xc0, 0xf7, - 0xc0, 0xf5, 0xc1, 0xf7, 0xc1, 0xf5, 0xc1, 0xf7, 0xc1, 0xf5, 0xc1, 0xf7, - 0xc1, 0xf5, 0xc1, 0xf7, 0xc1, 0xf5, 0xc1, 0xf7, 0xc2, 0xf5, 0xc1, 0xf7, - 0xc2, 0xf5, 0xc1, 0xf7, 0xc2, 0xf5, 0xc1, 0xf7, 0xc3, 0xf5, 0xc1, 0xf7, - 0xc3, 0xf5, 0xc1, 0xf7, 0xc3, 0xf5, 0xc1, 0xf7, 0xc4, 0xf5, 0xc4, 0xf7, - 0xc4, 0xf6, 0xc4, 0xf7, 0xc4, 0xf6, 0xc5, 0xf7, 0xc5, 0xf6, 0xc4, 0xf7, - 0xc5, 0xf6, 0xca, 0xf7, 0xc5, 0xf0, 0xca, 0xf7, 0xc6, 0xee, 0xca, 0xf7, - 0xc6, 0xf0, 0xca, 0xf7, 0xc6, 0xee, 0xca, 0xf7, 0xc6, 0xf0, 0xca, 0xf7, - 0xc7, 0xee, 0xca, 0xf7, 0xc7, 0xf0, 0xca, 0xf7, 0xc7, 0xee, 0xca, 0xf7, - 0xc8, 0xf0, 0xca, 0xf7, 0xc8, 0xee, 0xcb, 0xf7, 0xc8, 0xed, 0xca, 0xf7, - 0xc9, 0xee, 0xcb, 0xf7, 0xc9, 0xed, 0xca, 0xf7, 0xc9, 0xee, 0xcb, 0xf7, - 0xc9, 0xed, 0xca, 0xf7, 0xca, 0xee, 0xcb, 0xf7, 0xca, 0xed, 0xcb, 0xf7, - 0xca, 0xed, 0xcb, 0xf7, 0xca, 0xed, 0xcb, 0xf7, 0xca, 0xed, 0xcb, 0xf7, - 0xca, 0xed, 0xcc, 0xf7, 0xca, 0xed, 0xcc, 0xf7, 0xca, 0xed, 0xcc, 0xf7, - 0xca, 0xed, 0xcc, 0xf7, 0xca, 0xed, 0xcd, 0xf7, 0xca, 0xed, 0xcd, 0xf6, - 0xcb, 0xed, 0xcd, 0xf7, 0xca, 0xed, 0xce, 0xf6, 0xcb, 0xed, 0xce, 0xf7, - 0xca, 0xed, 0xce, 0xf6, 0xcb, 0xed, 0xce, 0xf7, 0xca, 0xed, 0xcf, 0xf6, - 0xcb, 0xed, 0xcf, 0xf7, 0xca, 0xed, 0xcf, 0xf6, 0xcb, 0xed, 0xd0, 0xf7, - 0xca, 0xed, 0xd0, 0xf6, 0xcb, 0xed, 0xd0, 0xf7, 0xca, 0xed, 0xd0, 0xf6, - 0xcb, 0xed, 0xd1, 0xf7, 0xca, 0xed, 0xd1, 0xfc, 0xd1, 0xed, 0xd1, 0xfc, - 0xd1, 0xed, 0xd2, 0xfc, 0xd1, 0xed, 0xd2, 0xfc, 0xd1, 0xed, 0xd2, 0xfc, - 0xd1, 0xed, 0xd2, 0xfc, 0xd1, 0xed, 0xd3, 0xfc, 0xd1, 0xed, 0xd3, 0xfc, - 0xd1, 0xed, 0xd3, 0xfc, 0xd1, 0xed, 0xd4, 0xfc, 0xd4, 0xed, 0xd4, 0xfc, - 0xd4, 0xed, 0xd4, 0xfc, 0xd4, 0xed, 0xd4, 0xfc, 0xd4, 0xed, 0xd5, 0xfc, - 0xd4, 0xed, 0xd5, 0xfc, 0xd4, 0xed, 0xd5, 0xfc, 0xd4, 0xed, 0xd6, 0xfc, - 0xd4, 0xed, 0xd6, 0xfc, 0xd4, 0xed, 0xd6, 0xfc, 0xd4, 0xed, 0xd6, 0xfc, - 0xd4, 0xed, 0xd7, 0xfd, 0xd7, 0xed, 0xd7, 0xfd, 0xd7, 0xed, 0xd7, 0xfd, - 0xd7, 0xed, 0xd7, 0xfd, 0xd7, 0xed, 0xd8, 0xfd, 0xd7, 0xed, 0xd8, 0xfd, - 0xd7, 0xed, 0xd8, 0xfd, 0xd7, 0xed, 0xd9, 0xfd, 0xd7, 0xed, 0xd9, 0xfd, - 0xd7, 0xed, 0xd9, 0xfd, 0xd7, 0xed, 0xd9, 0xfd, 0xd7, 0xed, 0xda, 0xfd, - 0xd7, 0xed, 0xda, 0xfd, 0xd7, 0xed, 0xda, 0xfd, 0xda, 0xed, 0xda, 0xfd, - 0xda, 0xed, 0xdb, 0xfd, 0xda, 0xed, 0xdb, 0xfd, 0xda, 0xed, 0xdb, 0xfd, - 0xda, 0xed, 0xdb, 0xfd, 0xda, 0xed, 0xdc, 0xfd, 0xda, 0xed, 0xdc, 0xf8, - 0xe3, 0xed, 0xdc, 0xf9, 0xe3, 0xed, 0xdd, 0xf8, 0xe3, 0xed, 0xdd, 0xf9, - 0xe3, 0xed, 0xdd, 0xf8, 0xe3, 0xed, 0xdd, 0xf7, 0xe4, 0xed, 0xde, 0xf8, - 0xe3, 0xed, 0xde, 0xf7, 0xe4, 0xed, 0xde, 0xf8, 0xe3, 0xed, 0xde, 0xf7, - 0xe4, 0xed, 0xdf, 0xf8, 0xe3, 0xed, 0xdf, 0xf7, 0xe4, 0xed, 0xdf, 0xf8, - 0xe3, 0xed, 0xdf, 0xf7, 0xe4, 0xed, 0xe0, 0xf8, 0xe3, 0xed, 0xe0, 0xf7, - 0xe4, 0xed, 0xe0, 0xf8, 0xe3, 0xed, 0xe1, 0xf7, 0xe4, 0xed, 0xe1, 0xf8, - 0xe3, 0xed, 0xe1, 0xf7, 0xe4, 0xed, 0xe1, 0xf8, 0xe3, 0xed, 0xe2, 0xf7, - 0xe4, 0xed, 0xe2, 0xf7, 0xe4, 0xed, 0xe2, 0xf7, 0xe4, 0xed, 0xe2, 0xf7, - 0xe4, 0xed, 0xe3, 0xf7, 0xe4, 0xed, 0xe3, 0xf7, 0xe4, 0xed, 0xe3, 0xf7, - 0xe4, 0xed, 0xe3, 0xf7, 0xe4, 0xed, 0xe4, 0xf7, 0xe4, 0xec, 0xe3, 0xf7, - 0xe4, 0xed, 0xe4, 0xf7, 0xe4, 0xec, 0xe3, 0xf7, 0xe4, 0xed, 0xe6, 0xf7, - 0xe5, 0xed, 0xe6, 0xf7, 0xe5, 0xed, 0xe6, 0xf7, 0xe5, 0xed, 0xe6, 0xf7, - 0xe5, 0xed, 0xe6, 0xf7, 0xe5, 0xed, 0xe6, 0xf7, 0xe5, 0xed, 0xe6, 0xf7, - 0xe5, 0xed, 0xe6, 0xf7, 0xe5, 0xed, 0xe7, 0xf6, 0xe6, 0xed, 0xe7, 0xf7, - 0xe5, 0xed, 0xe7, 0xf6, 0xe6, 0xed, 0xe7, 0xf7, 0xe5, 0xed, 0xe8, 0xf6, - 0xe6, 0xed, 0xe8, 0xf7, 0xe5, 0xed, 0xe8, 0xf6, 0xe6, 0xed, 0xe8, 0xf7, - 0xe5, 0xed, 0xe9, 0xf6, 0xe6, 0xed, 0xe9, 0xf7, 0xe5, 0xed, 0xe9, 0xf6, - 0xe6, 0xed, 0xe9, 0xf7, 0xe5, 0xed, 0xea, 0xf6, 0xe6, 0xed, 0xea, 0xf7, - 0xe5, 0xed, 0xea, 0xf6, 0xe6, 0xed, 0xea, 0xf7, 0xe5, 0xed, 0xeb, 0xf9, - 0xef, 0xed, 0xeb, 0xf8, 0xef, 0xed, 0xeb, 0xf9, 0xef, 0xed, 0xeb, 0xf8, - 0xef, 0xed, 0xec, 0xf7, 0xef, 0xed, 0xec, 0xf8, 0xef, 0xed, 0xec, 0xf7, - 0xef, 0xed, 0xec, 0xf8, 0xef, 0xed, 0xec, 0xf7, 0xef, 0xed, 0xed, 0xf8, - 0xef, 0xed, 0xed, 0xf7, 0xef, 0xed, 0xed, 0xf8, 0xef, 0xed, 0xed, 0xf7, - 0xef, 0xed, 0xee, 0xf8, 0xef, 0xed, 0xee, 0xf7, 0xef, 0xed, 0xee, 0xf8, - 0xef, 0xed, 0xee, 0xf7, 0xef, 0xed, 0xef, 0xf8, 0xef, 0xed, 0xef, 0xf7, - 0xef, 0xed, 0xef, 0xf8, 0xef, 0xed, 0xef, 0xf7, 0xef, 0xed, 0xf0, 0xf7, - 0xf0, 0xed, 0xf0, 0xf7, 0xef, 0xed, 0xf0, 0xf7, 0xf0, 0xed, 0xf0, 0xf7, - 0xef, 0xed, 0xf1, 0xf7, 0xf0, 0xed, 0xf1, 0xf7, 0xef, 0xed, 0xf1, 0xf7, - 0xf0, 0xed, 0xf1, 0xf7, 0xef, 0xed, 0xf2, 0xf7, 0xf0, 0xed, 0xf2, 0xf7, - 0xef, 0xed, 0xf2, 0xf7, 0xf0, 0xed, 0xf2, 0xf7, 0xef, 0xed, 0xf2, 0xf7, - 0xf0, 0xed, 0xf3, 0xf7, 0xef, 0xed, 0xf3, 0xf7, 0xf0, 0xed, 0xf3, 0xf7, - 0xef, 0xed, 0xf3, 0xf7, 0xf0, 0xed, 0xf4, 0xf5, 0xf0, 0xed, 0xf4, 0xf7, - 0xf0, 0xed, 0xf4, 0xf5, 0xf0, 0xed, 0xf4, 0xf7, 0xf0, 0xed, 0xf5, 0xf5, - 0xf0, 0xed, 0xf5, 0xf7, 0xf0, 0xed, 0xf5, 0xf5, 0xf0, 0xed, 0xf5, 0xf7, - 0xf0, 0xed, 0xf5, 0xf5, 0xf0, 0xed, 0xf6, 0xf7, 0xf0, 0xed, 0xf6, 0xf5, - 0xf0, 0xed, 0xf6, 0xf7, 0xf0, 0xed, 0xf6, 0xf5, 0xf0, 0xed, 0xf7, 0xf7, - 0xf0, 0xed, 0xf7, 0xf5, 0xf0, 0xed, 0xf7, 0xf7, 0xf0, 0xed, 0xf7, 0xf5, - 0xf0, 0xed, 0xf8, 0xf7, 0xf0, 0xed, 0xf8, 0xf5, 0xf0, 0xed, 0xf8, 0xf7, - 0xf0, 0xed, 0xf8, 0xf5, 0xf0, 0xed, 0xf8, 0xf7, 0xf0, 0xed, 0xf9, 0xf5, - 0xf0, 0xed, 0xf9, 0xf7, 0xf0, 0xed, 0xf9, 0xf5, 0xf0, 0xed, 0xf9, 0xf7, - 0xf0, 0xed, 0xfa, 0xf5, 0xf0, 0xed, 0xfa, 0xf7, 0xf0, 0xed, 0xfa, 0xf5, - 0xf0, 0xed, 0xfa, 0xf7, 0xf0, 0xed, 0xfa, 0xf5, 0xf0, 0xed, 0xfb, 0xf7, - 0xf0, 0xed, 0xfb, 0xf5, 0xf0, 0xed, 0xfb, 0xf4, 0xf0, 0xed, 0xfb, 0xf5, - 0xf0, 0xed, 0xfc, 0xf4, 0xf0, 0xed, 0xfc, 0xf5, 0xf0, 0xed, 0xfc, 0xf4, - 0xf0, 0xed, 0xfc, 0xf5, 0xf0, 0xed, 0xfc, 0xf4, 0xf0, 0xed, 0xfd, 0xf5, - 0xf0, 0xed, 0xfd, 0xf4, 0xf0, 0xed, 0xfd, 0xf5, 0xf0, 0xed, 0xfd, 0xf4, - 0xf0, 0xed, 0xfe, 0xf5, 0xf0, 0xed, 0xfe, 0xf4, 0xf0, 0xed, 0xfe, 0xf5, - 0xf0, 0xed, 0xfe, 0xf4, 0xf0, 0xed, 0xfe, 0xf5, 0xf0, 0xed, 0xff, 0xf4, - 0xf0, 0xed, 0xff, 0xf5, 0xf0, 0xed, 0x03, 0xf4, 0x83, 0xee, 0x0a, 0xf4, - 0x83, 0xee, 0x0f, 0xf4, 0x83, 0xee, 0x14, 0xf4, 0x83, 0xee, 0x17, 0xf4, - 0x83, 0xee, 0x1b, 0xf4, 0x83, 0xee, 0x1e, 0xf4, 0x83, 0xee, 0x20, 0xf4, - 0x83, 0xee, 0x23, 0xf4, 0x83, 0xee, 0x25, 0xf4, 0x83, 0xee, 0x27, 0xf4, - 0x83, 0xee, 0x29, 0xf4, 0x83, 0xee, 0x2b, 0xf4, 0x83, 0xee, 0x2d, 0xf4, - 0x83, 0xee, 0x2f, 0xf4, 0x83, 0xee, 0x31, 0xf4, 0x83, 0xee, 0x32, 0xf4, - 0x83, 0xee, 0x34, 0xf4, 0x83, 0xee, 0x35, 0xf4, 0x83, 0xee, 0x37, 0xf4, - 0x83, 0xee, 0x38, 0xf4, 0x83, 0xee, 0x3a, 0xf4, 0x83, 0xee, 0x3b, 0xf4, - 0x83, 0xee, 0x3c, 0xf4, 0x83, 0xee, 0x3e, 0xf4, 0x83, 0xee, 0x3f, 0xf4, - 0x83, 0xee, 0x40, 0xf4, 0x83, 0xee, 0x42, 0xf4, 0x83, 0xee, 0x43, 0xf4, - 0x83, 0xee, 0x44, 0xf4, 0x83, 0xee, 0x45, 0xf4, 0x83, 0xee, 0x46, 0xf4, - 0x83, 0xee, 0x47, 0xf4, 0x83, 0xee, 0x48, 0xf4, 0x83, 0xee, 0x49, 0xf4, - 0x83, 0xee, 0x4a, 0xf4, 0x83, 0xee, 0x4b, 0xf4, 0x83, 0xee, 0x4c, 0xf4, - 0x83, 0xee, 0x4d, 0xf4, 0x83, 0xee, 0x4e, 0xf4, 0x83, 0xee, 0x4f, 0xf4, - 0x83, 0xee, 0x50, 0xf4, 0x83, 0xee, 0x51, 0xf4, 0x83, 0xee, 0x52, 0xf4, - 0x83, 0xee, 0x53, 0xf4, 0x83, 0xee, 0x54, 0xf4, 0x83, 0xee, 0x55, 0xf4, - 0x83, 0xee, 0x56, 0xf4, 0x83, 0xee, 0x57, 0xf4, 0x83, 0xee, 0x58, 0xf4, - 0x83, 0xee, 0x58, 0xf4, 0x83, 0xee, 0x59, 0xf4, 0x83, 0xee, 0x5a, 0xf4, - 0x83, 0xee, 0x5b, 0xf4, 0x83, 0xee, 0x5c, 0xf4, 0x83, 0xee, 0x5d, 0xf4, - 0x83, 0xee, 0x5d, 0xf4, 0x83, 0xee, 0x5e, 0xf4, 0x83, 0xee, 0x5f, 0xf4, - 0x83, 0xee, 0x60, 0xf4, 0x83, 0xee, 0x60, 0xf4, 0x83, 0xee, 0x61, 0xf4, - 0x83, 0xee, 0x62, 0xf4, 0x83, 0xee, 0x63, 0xf4, 0x83, 0xee, 0x63, 0xf4, - 0x83, 0xee, 0x64, 0xf4, 0x83, 0xee, 0x65, 0xf4, 0x83, 0xee, 0x66, 0xf4, - 0x83, 0xee, 0x66, 0xf4, 0x83, 0xee, 0x67, 0xf4, 0x83, 0xee, 0x68, 0xf4, - 0x83, 0xee, 0x68, 0xf4, 0x83, 0xee, 0x69, 0xf4, 0x83, 0xee, 0x6a, 0xf4, - 0x83, 0xee, 0x6a, 0xf4, 0x83, 0xee, 0x6b, 0xf4, 0x83, 0xee, 0x6c, 0xf4, - 0x83, 0xee, 0x6c, 0xf4, 0x83, 0xee, 0x6d, 0xf4, 0x83, 0xee, 0x6e, 0xf4, - 0x83, 0xee, 0x6e, 0xf4, 0x83, 0xee, 0x6f, 0xf4, 0x83, 0xee, 0x70, 0xf4, - 0x83, 0xee, 0x70, 0xf4, 0x83, 0xee, 0x71, 0xf4, 0x83, 0xee, 0x72, 0xf4, - 0x83, 0xee, 0x72, 0xf4, 0x83, 0xee, 0x73, 0xf4, 0x83, 0xee, 0x73, 0xf4, - 0x83, 0xee, 0x74, 0xf4, 0x83, 0xee, 0x75, 0xf4, 0x83, 0xee, 0x75, 0xf4, - 0x83, 0xee, 0x76, 0xf4, 0x83, 0xee, 0x76, 0xf4, 0x83, 0xee, 0x77, 0xf4, - 0x83, 0xee, 0x78, 0xf4, 0x83, 0xee, 0x78, 0xf4, 0x83, 0xee, 0x79, 0xf4, - 0x83, 0xee, 0x79, 0xf4, 0x83, 0xee, 0x7a, 0xf4, 0x83, 0xee, 0x7a, 0xf4, - 0x83, 0xee, 0x7b, 0xf4, 0x83, 0xee, 0x7c, 0xf4, 0x83, 0xee, 0x7c, 0xf4, - 0x83, 0xee, 0x7d, 0xf4, 0x83, 0xee, 0x7d, 0xf4, 0x83, 0xee, 0x7e, 0xf4, - 0x83, 0xee, 0x7e, 0xf4, 0x83, 0xee, 0x7f, 0xf4, 0x83, 0xee, 0x7f, 0xf4, - 0x83, 0xee, 0x80, 0xf4, 0x83, 0xee, 0x81, 0xf4, 0x83, 0xee, 0x81, 0xf4, - 0x83, 0xee, 0x82, 0xf4, 0x83, 0xee, 0x82, 0xf4, 0x83, 0xee, 0x83, 0xf4, - 0x83, 0xee, 0x83, 0xf4, 0x83, 0xee, 0x84, 0xf4, 0x84, 0xee, 0x84, 0xf4, - 0x84, 0xee, 0x85, 0xf5, 0x88, 0xee, 0x85, 0xf5, 0x88, 0xee, 0x86, 0xf5, - 0x88, 0xee, 0x86, 0xf5, 0x88, 0xee, 0x87, 0xf5, 0x88, 0xee, 0x87, 0xf5, - 0x88, 0xee, 0x88, 0xf5, 0x88, 0xee, 0x88, 0xf5, 0x88, 0xee, 0x89, 0xf5, - 0x89, 0xee, 0x89, 0xf5, 0x89, 0xee, 0x8a, 0xf5, 0x8a, 0xee, 0x8a, 0xf5, - 0x8d, 0xee, 0x8b, 0xf5, 0x8e, 0xee, 0x8b, 0xf5, 0x8d, 0xee, 0x8c, 0xf5, - 0x8e, 0xee, 0x8c, 0xf5, 0x8d, 0xee, 0x8d, 0xf5, 0x8e, 0xee, 0x8d, 0xf5, - 0x8d, 0xee, 0x8e, 0xf5, 0x8e, 0xee, 0x8e, 0xf5, 0x8e, 0xee, 0x8e, 0xf5, - 0x8e, 0xee, 0x8f, 0xf5, 0x8f, 0xee, 0x8f, 0xf5, 0x8f, 0xee, 0x90, 0xf5, - 0x90, 0xee, 0x90, 0xf5, 0x92, 0xee, 0x91, 0xf5, 0x93, 0xee, 0x91, 0xf5, - 0x92, 0xee, 0x92, 0xf5, 0x93, 0xee, 0x92, 0xf5, 0x92, 0xee, 0x93, 0xf5, - 0x93, 0xee, 0x93, 0xf5, 0x93, 0xee, 0x94, 0xf5, 0x94, 0xee, 0x94, 0xf5, - 0x94, 0xee, 0x94, 0xf5, 0x94, 0xee, 0x95, 0xf5, 0x95, 0xee, 0x95, 0xf6, - 0x97, 0xee, 0x96, 0xf6, 0x98, 0xee, 0x96, 0xf6, 0x97, 0xee, 0x97, 0xf6, - 0x98, 0xee, 0x97, 0xf6, 0x97, 0xee, 0x98, 0xf6, 0x98, 0xee, 0x98, 0xf6, - 0x98, 0xee, 0x98, 0xf6, 0x98, 0xee, 0x99, 0xf6, 0x99, 0xee, 0x99, 0xf6, - 0x99, 0xee, 0x9a, 0xf6, 0x9a, 0xee, 0x9a, 0xf6, 0x9c, 0xee, 0x9a, 0xf6, - 0x9c, 0xee, 0x9b, 0xf6, 0x9c, 0xee, 0x9b, 0xf6, 0x9c, 0xee, 0x9c, 0xf6, - 0x9c, 0xee, 0x9c, 0xf6, 0x9c, 0xee, 0x9d, 0xf6, 0x9d, 0xee, 0x9d, 0xf6, - 0x9d, 0xee, 0x9d, 0xf6, 0x9d, 0xee, 0x9e, 0xf6, 0x9e, 0xee, 0x9e, 0xf6, - 0x9e, 0xee, 0x9f, 0xf6, 0x9f, 0xee, 0x9f, 0xf6, 0x9f, 0xee, 0x9f, 0xf7, - 0xa0, 0xee, 0xa0, 0xf7, 0xa1, 0xee, 0xa0, 0xf7, 0xa0, 0xee, 0xa1, 0xf7, - 0xa1, 0xee, 0xa1, 0xf7, 0xa1, 0xee, 0xa1, 0xf7, 0xa1, 0xee, 0xa2, 0xf7, - 0xa2, 0xee, 0xa2, 0xf7, 0xa2, 0xee, 0xa3, 0xf7, 0xa3, 0xee, 0xa3, 0xf7, - 0xa3, 0xee, 0xa3, 0xf7, 0xa3, 0xee, 0xa4, 0xf7, 0xa4, 0xee, 0xa4, 0xf7, - 0xa4, 0xee, 0xa5, 0xf7, 0xa5, 0xef, 0xa5, 0xf7, 0xa5, 0xef, 0xa5, 0xf7, - 0xa5, 0xef, 0xa6, 0xf7, 0xa6, 0xef, 0xa6, 0xf7, 0xa6, 0xef, 0xa6, 0xf7, - 0xa6, 0xef, 0xa7, 0xf7, 0xa7, 0xef, 0xa7, 0xf7, 0xa7, 0xef, 0xa8, 0xf7, - 0xa8, 0xef, 0xa8, 0xf7, 0xa8, 0xef, 0xa8, 0xf7, 0xa8, 0xef, 0xa8, 0xf7, - 0xa9, 0xef, 0xa8, 0xf7, 0xa9, 0xef, 0xaa, 0xf7, 0xaa, 0xf0, 0xaa, 0xf7, - 0xaa, 0xf0, 0xaa, 0xf7, 0xaa, 0xf0, 0xab, 0xf7, 0xab, 0xf0, 0xab, 0xf7, - 0xab, 0xf0, 0xab, 0xf7, 0xab, 0xf0, 0xac, 0xf7, 0xac, 0xf0, 0xac, 0xf7, - 0xac, 0xf0, 0xac, 0xf7, 0xac, 0xf0, 0xac, 0xf7, 0xad, 0xf0, 0xac, 0xf7, - 0xad, 0xf0, 0xac, 0xf7, 0xae, 0xf0, 0xac, 0xf7, 0xae, 0xf0, 0xae, 0xf7, - 0xae, 0xf1, 0xaf, 0xf7, 0xaf, 0xf1, 0xaf, 0xf7, 0xaf, 0xf1, 0xaf, 0xf7, - 0xaf, 0xf1, 0xb0, 0xf7, 0xb0, 0xf1, 0xb0, 0xf7, 0xb0, 0xf1, 0xb0, 0xf7, - 0xb0, 0xf1, 0xb0, 0xf7, 0xb1, 0xf1, 0xb0, 0xf7, 0xb1, 0xf1, 0xb0, 0xf7, - 0xb2, 0xf1, 0xb0, 0xf7, 0xb2, 0xf1, 0xb2, 0xf7, 0xb2, 0xf2, 0xb3, 0xf7, - 0xb3, 0xf2, 0xb3, 0xf7, 0xb3, 0xf2, 0xb3, 0xf7, 0xb3, 0xf2, 0xb4, 0xf7, - 0xb4, 0xf2, 0xb4, 0xf7, 0xb4, 0xf2, 0xb4, 0xf7, 0xb4, 0xf2, 0xb4, 0xf7, - 0xb5, 0xf2, 0xb4, 0xf7, 0xb5, 0xf2, 0xb4, 0xf7, 0xb5, 0xf2, 0xb4, 0xf7, - 0xb6, 0xf2, 0xb6, 0xf7, 0xb6, 0xf3, 0xb6, 0xf7, 0xb6, 0xf3, 0xb7, 0xf7, - 0xb7, 0xf3, 0xb7, 0xf7, 0xb7, 0xf3, 0xb7, 0xf7, 0xb7, 0xf3, 0xb8, 0xf7, - 0xb8, 0xf3, 0xb8, 0xf7, 0xb8, 0xf3, 0xb8, 0xf7, 0xb8, 0xf3, 0xb8, 0xf7, - 0xb9, 0xf3, 0xb8, 0xf7, 0xb9, 0xf3, 0xb8, 0xf7, 0xb9, 0xf3, 0xb8, 0xf7, - 0xba, 0xf3, 0xb8, 0xf7, 0xba, 0xf3, 0xba, 0xf7, 0xba, 0xf4, 0xbb, 0xf7, - 0xbb, 0xf4, 0xbb, 0xf7, 0xbb, 0xf4, 0xbb, 0xf7, 0xbb, 0xf4, 0xbc, 0xf7, - 0xbc, 0xf4, 0xbb, 0xf7, 0xbc, 0xf4, 0xbc, 0xf7, 0xbc, 0xf4, 0xbb, 0xf7, - 0xbd, 0xf4, 0xbc, 0xf7, 0xbd, 0xf4, 0xbb, 0xf7, 0xbd, 0xf4, 0xbc, 0xf7, - 0xbe, 0xf4, 0xbe, 0xf7, 0xbe, 0xf5, 0xbe, 0xf7, 0xbe, 0xf5, 0xbf, 0xf7, - 0xbf, 0xf5, 0xbf, 0xf7, 0xbf, 0xf5, 0xbf, 0xf7, 0xbf, 0xf5, 0xbf, 0xf7, - 0xc0, 0xf5, 0xbf, 0xf7, 0xc0, 0xf5, 0xbf, 0xf7, 0xc0, 0xf5, 0xbf, 0xf7, - 0xc1, 0xf5, 0xbf, 0xf7, 0xc1, 0xf5, 0xbf, 0xf7, 0xc1, 0xf5, 0xc1, 0xf7, - 0xc1, 0xf6, 0xc2, 0xf7, 0xc2, 0xf6, 0xc2, 0xf7, 0xc2, 0xf6, 0xc2, 0xf7, - 0xc2, 0xf6, 0xc3, 0xf7, 0xc3, 0xf6, 0xc2, 0xf7, 0xc3, 0xf6, 0xc3, 0xf7, - 0xc3, 0xf6, 0xc2, 0xf7, 0xc4, 0xf6, 0xc3, 0xf7, 0xc4, 0xf6, 0xc2, 0xf7, - 0xc4, 0xf6, 0xc3, 0xf7, 0xc5, 0xf6, 0xc2, 0xf7, 0xc5, 0xf6, 0xca, 0xf7, - 0xc5, 0xf1, 0xca, 0xf7, 0xc6, 0xee, 0xca, 0xf7, 0xc6, 0xf1, 0xca, 0xf7, - 0xc6, 0xee, 0xca, 0xf7, 0xc6, 0xf1, 0xca, 0xf7, 0xc7, 0xee, 0xca, 0xf7, - 0xc7, 0xf1, 0xca, 0xf7, 0xc7, 0xee, 0xca, 0xf7, 0xc8, 0xf1, 0xca, 0xf7, - 0xc8, 0xee, 0xcb, 0xf7, 0xc8, 0xee, 0xca, 0xf7, 0xc9, 0xee, 0xcb, 0xf7, - 0xc9, 0xee, 0xca, 0xf7, 0xc9, 0xee, 0xcb, 0xf7, 0xc9, 0xee, 0xca, 0xf7, - 0xca, 0xee, 0xcb, 0xf7, 0xca, 0xee, 0xca, 0xf7, 0xca, 0xee, 0xcb, 0xf7, - 0xca, 0xee, 0xcb, 0xf7, 0xca, 0xee, 0xcb, 0xf7, 0xca, 0xee, 0xcc, 0xf7, - 0xca, 0xee, 0xcc, 0xf7, 0xca, 0xee, 0xcc, 0xf7, 0xca, 0xee, 0xcc, 0xf7, - 0xca, 0xee, 0xcd, 0xf7, 0xca, 0xee, 0xcd, 0xf7, 0xca, 0xee, 0xcd, 0xf7, - 0xca, 0xee, 0xce, 0xf7, 0xca, 0xee, 0xce, 0xf7, 0xca, 0xee, 0xce, 0xf7, - 0xca, 0xee, 0xce, 0xf7, 0xca, 0xee, 0xcf, 0xf7, 0xca, 0xee, 0xcf, 0xf7, - 0xca, 0xee, 0xcf, 0xf5, 0xcb, 0xee, 0xd0, 0xf7, 0xca, 0xee, 0xd0, 0xf5, - 0xcb, 0xee, 0xd0, 0xf7, 0xca, 0xee, 0xd0, 0xfc, 0xcf, 0xee, 0xd1, 0xfc, - 0xd0, 0xee, 0xd1, 0xfc, 0xcf, 0xee, 0xd1, 0xfc, 0xd0, 0xee, 0xd2, 0xfc, - 0xcf, 0xee, 0xd2, 0xfc, 0xd0, 0xee, 0xd2, 0xfc, 0xd2, 0xee, 0xd2, 0xfc, - 0xd2, 0xee, 0xd3, 0xfc, 0xd3, 0xee, 0xd3, 0xfc, 0xd2, 0xee, 0xd3, 0xfc, - 0xd3, 0xee, 0xd4, 0xfc, 0xd2, 0xee, 0xd4, 0xfc, 0xd3, 0xee, 0xd4, 0xfc, - 0xd2, 0xee, 0xd4, 0xfc, 0xd3, 0xee, 0xd5, 0xfc, 0xd2, 0xee, 0xd5, 0xfc, - 0xd3, 0xee, 0xd5, 0xfd, 0xd5, 0xee, 0xd6, 0xfd, 0xd6, 0xee, 0xd6, 0xfd, - 0xd6, 0xee, 0xd6, 0xfd, 0xd6, 0xee, 0xd6, 0xfd, 0xd6, 0xee, 0xd7, 0xfd, - 0xd6, 0xee, 0xd7, 0xfd, 0xd6, 0xee, 0xd7, 0xfd, 0xd6, 0xee, 0xd7, 0xfd, - 0xd6, 0xee, 0xd8, 0xfd, 0xd6, 0xee, 0xd8, 0xfd, 0xd6, 0xee, 0xd8, 0xfd, - 0xd8, 0xee, 0xd9, 0xfd, 0xd9, 0xee, 0xd9, 0xfd, 0xd9, 0xee, 0xd9, 0xfd, - 0xd9, 0xee, 0xd9, 0xfd, 0xd9, 0xee, 0xda, 0xfd, 0xd9, 0xee, 0xda, 0xfd, - 0xd9, 0xee, 0xda, 0xfd, 0xd9, 0xee, 0xda, 0xfd, 0xd9, 0xee, 0xdb, 0xfd, - 0xd9, 0xee, 0xdb, 0xfd, 0xd9, 0xee, 0xdb, 0xfd, 0xd9, 0xee, 0xdb, 0xfd, - 0xd9, 0xee, 0xdc, 0xfe, 0xdc, 0xee, 0xdc, 0xfe, 0xdb, 0xee, 0xdc, 0xfa, - 0xe3, 0xee, 0xdd, 0xf8, 0xe3, 0xee, 0xdd, 0xfa, 0xe3, 0xee, 0xdd, 0xf8, - 0xe3, 0xee, 0xdd, 0xf7, 0xe4, 0xee, 0xde, 0xf8, 0xe3, 0xee, 0xde, 0xf7, - 0xe4, 0xee, 0xde, 0xf8, 0xe3, 0xee, 0xde, 0xf7, 0xe4, 0xee, 0xdf, 0xf8, - 0xe3, 0xee, 0xdf, 0xf7, 0xe4, 0xee, 0xdf, 0xf8, 0xe3, 0xee, 0xdf, 0xf7, - 0xe4, 0xee, 0xe0, 0xf8, 0xe3, 0xee, 0xe0, 0xf7, 0xe4, 0xee, 0xe0, 0xf8, - 0xe3, 0xee, 0xe1, 0xf7, 0xe4, 0xee, 0xe1, 0xf8, 0xe3, 0xee, 0xe1, 0xf7, - 0xe4, 0xee, 0xe1, 0xf8, 0xe3, 0xee, 0xe2, 0xf7, 0xe4, 0xee, 0xe2, 0xf8, - 0xe3, 0xee, 0xe2, 0xf7, 0xe4, 0xee, 0xe2, 0xf8, 0xe3, 0xee, 0xe3, 0xf7, - 0xe4, 0xee, 0xe3, 0xf7, 0xe4, 0xee, 0xe3, 0xf7, 0xe4, 0xee, 0xe3, 0xf7, - 0xe4, 0xee, 0xe3, 0xf7, 0xe4, 0xee, 0xe3, 0xf7, 0xe4, 0xee, 0xe3, 0xf7, - 0xe4, 0xee, 0xe3, 0xf7, 0xe4, 0xee, 0xe6, 0xf7, 0xe5, 0xee, 0xe5, 0xf7, - 0xe5, 0xef, 0xe6, 0xf7, 0xe5, 0xee, 0xe6, 0xf7, 0xe5, 0xee, 0xe6, 0xf7, - 0xe5, 0xee, 0xe6, 0xf7, 0xe5, 0xee, 0xe6, 0xf7, 0xe5, 0xee, 0xe6, 0xf7, - 0xe5, 0xee, 0xe7, 0xf7, 0xe5, 0xee, 0xe7, 0xf7, 0xe5, 0xee, 0xe7, 0xf7, - 0xe5, 0xee, 0xe7, 0xf7, 0xe5, 0xee, 0xe8, 0xf6, 0xe6, 0xee, 0xe8, 0xf7, - 0xe5, 0xee, 0xe8, 0xf6, 0xe6, 0xee, 0xe8, 0xf7, 0xe5, 0xee, 0xe9, 0xf6, - 0xe6, 0xee, 0xe9, 0xf7, 0xe5, 0xee, 0xe9, 0xf6, 0xe6, 0xee, 0xe9, 0xf7, - 0xe5, 0xee, 0xea, 0xf6, 0xe6, 0xee, 0xea, 0xf7, 0xe5, 0xee, 0xea, 0xf6, - 0xe6, 0xee, 0xea, 0xf7, 0xe5, 0xee, 0xeb, 0xf9, 0xef, 0xee, 0xeb, 0xf7, - 0xef, 0xee, 0xeb, 0xf9, 0xef, 0xee, 0xeb, 0xf7, 0xef, 0xee, 0xec, 0xf9, - 0xef, 0xee, 0xec, 0xf7, 0xef, 0xee, 0xec, 0xf9, 0xef, 0xee, 0xec, 0xf7, - 0xef, 0xee, 0xec, 0xf9, 0xef, 0xee, 0xed, 0xf7, 0xef, 0xee, 0xed, 0xf9, - 0xef, 0xee, 0xed, 0xf7, 0xef, 0xee, 0xed, 0xf7, 0xef, 0xee, 0xee, 0xf7, - 0xef, 0xee, 0xee, 0xf7, 0xef, 0xee, 0xee, 0xf7, 0xef, 0xee, 0xee, 0xf7, - 0xef, 0xee, 0xef, 0xf7, 0xef, 0xee, 0xef, 0xf7, 0xef, 0xee, 0xef, 0xf7, - 0xef, 0xed, 0xef, 0xf7, 0xef, 0xee, 0xf0, 0xf7, 0xef, 0xee, 0xf0, 0xf7, - 0xef, 0xee, 0xf0, 0xf7, 0xef, 0xee, 0xf0, 0xf7, 0xef, 0xee, 0xf1, 0xf6, - 0xf0, 0xee, 0xf1, 0xf7, 0xef, 0xee, 0xf1, 0xf6, 0xf0, 0xee, 0xf1, 0xf7, - 0xef, 0xee, 0xf2, 0xf6, 0xf0, 0xee, 0xf2, 0xf7, 0xef, 0xee, 0xf2, 0xf6, - 0xf0, 0xee, 0xf2, 0xf7, 0xef, 0xee, 0xf2, 0xf6, 0xf0, 0xee, 0xf3, 0xf7, - 0xef, 0xee, 0xf3, 0xf6, 0xf0, 0xee, 0xf3, 0xf7, 0xef, 0xee, 0xf3, 0xf6, - 0xf0, 0xee, 0xf4, 0xf7, 0xef, 0xee, 0xf4, 0xf6, 0xf0, 0xee, 0xf4, 0xf7, - 0xef, 0xee, 0xf4, 0xf6, 0xf0, 0xee, 0xf5, 0xf7, 0xef, 0xee, 0xf5, 0xf6, - 0xf0, 0xee, 0xf5, 0xf7, 0xef, 0xee, 0xf5, 0xf6, 0xf0, 0xee, 0xf5, 0xf5, - 0xf0, 0xee, 0xf6, 0xf6, 0xf0, 0xee, 0xf6, 0xf5, 0xf0, 0xee, 0xf6, 0xf6, - 0xf0, 0xee, 0xf6, 0xf5, 0xf0, 0xee, 0xf7, 0xf6, 0xf0, 0xee, 0xf7, 0xf5, - 0xf0, 0xee, 0xf7, 0xf6, 0xf0, 0xee, 0xf7, 0xf5, 0xf0, 0xee, 0xf8, 0xf6, - 0xf0, 0xee, 0xf8, 0xf5, 0xf0, 0xee, 0xf8, 0xf6, 0xf0, 0xee, 0xf8, 0xf5, - 0xf0, 0xee, 0xf8, 0xf6, 0xf0, 0xee, 0xf9, 0xf5, 0xf0, 0xee, 0xf9, 0xf6, - 0xf0, 0xee, 0xf9, 0xf5, 0xf0, 0xee, 0xf9, 0xf6, 0xf0, 0xee, 0xfa, 0xf5, - 0xf0, 0xee, 0xfa, 0xf6, 0xf0, 0xee, 0xfa, 0xf5, 0xf0, 0xee, 0xfa, 0xf6, - 0xf0, 0xee, 0xfa, 0xf5, 0xf0, 0xee, 0xfb, 0xf6, 0xf0, 0xee, 0xfb, 0xf5, - 0xf0, 0xee, 0xfb, 0xf6, 0xf0, 0xee, 0xfb, 0xf5, 0xf0, 0xee, 0xfc, 0xf6, - 0xf0, 0xee, 0xfc, 0xf5, 0xf0, 0xee, 0xfc, 0xf6, 0xf0, 0xee, 0xfc, 0xf5, - 0xf0, 0xee, 0xfc, 0xf6, 0xf0, 0xee, 0xfd, 0xf5, 0xf0, 0xee, 0xfd, 0xf6, - 0xf0, 0xee, 0xfd, 0xf5, 0xf0, 0xee, 0xfd, 0xf6, 0xf0, 0xee, 0xfe, 0xf5, - 0xf0, 0xee, 0xfe, 0xf4, 0xf0, 0xee, 0xfe, 0xf5, 0xf0, 0xee, 0xfe, 0xf4, - 0xf0, 0xee, 0xfe, 0xf5, 0xf0, 0xee, 0xff, 0xf4, 0xf0, 0xee, 0xff, 0xf5, - 0xf0, 0xee, 0x03, 0xf4, 0x83, 0xee, 0x0a, 0xf4, 0x83, 0xee, 0x0f, 0xf4, - 0x83, 0xee, 0x14, 0xf4, 0x83, 0xee, 0x17, 0xf4, 0x83, 0xee, 0x1b, 0xf4, - 0x83, 0xee, 0x1e, 0xf4, 0x83, 0xee, 0x20, 0xf4, 0x83, 0xee, 0x23, 0xf4, - 0x83, 0xee, 0x25, 0xf4, 0x83, 0xee, 0x27, 0xf4, 0x83, 0xee, 0x29, 0xf4, - 0x83, 0xee, 0x2b, 0xf4, 0x83, 0xee, 0x2d, 0xf4, 0x83, 0xee, 0x2f, 0xf4, - 0x83, 0xee, 0x31, 0xf4, 0x83, 0xee, 0x32, 0xf4, 0x83, 0xee, 0x34, 0xf4, - 0x83, 0xee, 0x35, 0xf4, 0x83, 0xee, 0x37, 0xf4, 0x83, 0xee, 0x38, 0xf4, - 0x83, 0xee, 0x3a, 0xf4, 0x83, 0xee, 0x3b, 0xf4, 0x83, 0xee, 0x3c, 0xf4, - 0x83, 0xee, 0x3e, 0xf4, 0x83, 0xee, 0x3f, 0xf4, 0x83, 0xee, 0x40, 0xf4, - 0x83, 0xee, 0x42, 0xf4, 0x83, 0xee, 0x43, 0xf4, 0x83, 0xee, 0x44, 0xf4, - 0x83, 0xee, 0x45, 0xf4, 0x83, 0xee, 0x46, 0xf4, 0x83, 0xee, 0x47, 0xf4, - 0x83, 0xee, 0x48, 0xf4, 0x83, 0xee, 0x49, 0xf4, 0x83, 0xee, 0x4a, 0xf4, - 0x83, 0xee, 0x4b, 0xf4, 0x83, 0xee, 0x4c, 0xf4, 0x83, 0xee, 0x4d, 0xf4, - 0x83, 0xee, 0x4e, 0xf4, 0x83, 0xee, 0x4f, 0xf4, 0x83, 0xee, 0x50, 0xf4, - 0x83, 0xee, 0x51, 0xf4, 0x83, 0xee, 0x52, 0xf4, 0x83, 0xee, 0x53, 0xf4, - 0x83, 0xee, 0x54, 0xf4, 0x83, 0xee, 0x55, 0xf4, 0x83, 0xee, 0x56, 0xf4, - 0x83, 0xee, 0x57, 0xf4, 0x83, 0xee, 0x58, 0xf4, 0x83, 0xee, 0x58, 0xf4, - 0x83, 0xee, 0x59, 0xf4, 0x83, 0xee, 0x5a, 0xf4, 0x83, 0xee, 0x5b, 0xf4, - 0x83, 0xee, 0x5c, 0xf4, 0x83, 0xee, 0x5d, 0xf4, 0x83, 0xee, 0x5d, 0xf4, - 0x83, 0xee, 0x5e, 0xf4, 0x83, 0xee, 0x5f, 0xf4, 0x83, 0xee, 0x60, 0xf4, - 0x83, 0xee, 0x60, 0xf4, 0x83, 0xee, 0x61, 0xf4, 0x83, 0xee, 0x62, 0xf4, - 0x83, 0xee, 0x63, 0xf4, 0x83, 0xee, 0x63, 0xf4, 0x83, 0xee, 0x64, 0xf4, - 0x83, 0xee, 0x65, 0xf4, 0x83, 0xee, 0x66, 0xf4, 0x83, 0xee, 0x66, 0xf4, - 0x83, 0xee, 0x67, 0xf4, 0x83, 0xee, 0x68, 0xf4, 0x83, 0xee, 0x68, 0xf4, - 0x83, 0xee, 0x69, 0xf4, 0x83, 0xee, 0x6a, 0xf4, 0x83, 0xee, 0x6a, 0xf4, - 0x83, 0xee, 0x6b, 0xf4, 0x83, 0xee, 0x6c, 0xf4, 0x83, 0xee, 0x6c, 0xf4, - 0x83, 0xee, 0x6d, 0xf4, 0x83, 0xee, 0x6e, 0xf4, 0x83, 0xee, 0x6e, 0xf4, - 0x83, 0xee, 0x6f, 0xf4, 0x83, 0xee, 0x70, 0xf4, 0x83, 0xee, 0x70, 0xf4, - 0x83, 0xee, 0x71, 0xf4, 0x83, 0xee, 0x72, 0xf4, 0x83, 0xee, 0x72, 0xf4, - 0x83, 0xee, 0x73, 0xf4, 0x83, 0xee, 0x73, 0xf4, 0x83, 0xee, 0x74, 0xf4, - 0x83, 0xee, 0x75, 0xf4, 0x83, 0xee, 0x75, 0xf4, 0x83, 0xee, 0x76, 0xf4, - 0x83, 0xee, 0x76, 0xf4, 0x83, 0xee, 0x77, 0xf4, 0x83, 0xee, 0x78, 0xf4, - 0x83, 0xee, 0x78, 0xf4, 0x83, 0xee, 0x79, 0xf4, 0x83, 0xee, 0x79, 0xf4, - 0x83, 0xee, 0x7a, 0xf4, 0x83, 0xee, 0x7a, 0xf4, 0x83, 0xee, 0x7b, 0xf4, - 0x83, 0xee, 0x7c, 0xf4, 0x83, 0xee, 0x7c, 0xf4, 0x83, 0xee, 0x7d, 0xf4, - 0x83, 0xee, 0x7d, 0xf4, 0x83, 0xee, 0x7e, 0xf4, 0x83, 0xee, 0x7e, 0xf4, - 0x83, 0xee, 0x7f, 0xf4, 0x83, 0xee, 0x7f, 0xf4, 0x83, 0xee, 0x80, 0xf4, - 0x83, 0xee, 0x81, 0xf4, 0x83, 0xee, 0x81, 0xf4, 0x85, 0xee, 0x82, 0xf4, - 0x86, 0xee, 0x82, 0xf4, 0x85, 0xee, 0x83, 0xf4, 0x86, 0xee, 0x83, 0xf4, - 0x85, 0xee, 0x84, 0xf4, 0x86, 0xee, 0x84, 0xf4, 0x85, 0xee, 0x85, 0xf4, - 0x86, 0xee, 0x85, 0xf4, 0x85, 0xee, 0x86, 0xf4, 0x86, 0xee, 0x86, 0xf4, - 0x86, 0xee, 0x87, 0xf4, 0x87, 0xee, 0x87, 0xf4, 0x87, 0xee, 0x88, 0xf5, - 0x8b, 0xee, 0x88, 0xf5, 0x8b, 0xee, 0x89, 0xf5, 0x8b, 0xee, 0x89, 0xf5, - 0x8b, 0xee, 0x8a, 0xf5, 0x8b, 0xee, 0x8a, 0xf5, 0x8b, 0xee, 0x8b, 0xf5, - 0x8b, 0xee, 0x8b, 0xf5, 0x8b, 0xee, 0x8c, 0xf5, 0x8c, 0xee, 0x8c, 0xf5, - 0x8c, 0xee, 0x8d, 0xf5, 0x8d, 0xee, 0x8d, 0xf5, 0x90, 0xee, 0x8e, 0xf5, - 0x90, 0xee, 0x8e, 0xf5, 0x90, 0xee, 0x8e, 0xf5, 0x90, 0xee, 0x8f, 0xf5, - 0x90, 0xee, 0x8f, 0xf5, 0x90, 0xee, 0x90, 0xf5, 0x90, 0xee, 0x90, 0xf5, - 0x90, 0xee, 0x91, 0xf5, 0x91, 0xee, 0x91, 0xf5, 0x91, 0xee, 0x92, 0xf5, - 0x92, 0xee, 0x92, 0xf5, 0x92, 0xee, 0x93, 0xf5, 0x93, 0xee, 0x93, 0xf6, - 0x95, 0xee, 0x94, 0xf6, 0x95, 0xee, 0x94, 0xf6, 0x95, 0xee, 0x94, 0xf6, - 0x95, 0xee, 0x95, 0xf6, 0x95, 0xee, 0x95, 0xf6, 0x95, 0xee, 0x96, 0xf6, - 0x96, 0xee, 0x96, 0xf6, 0x96, 0xee, 0x97, 0xf6, 0x97, 0xee, 0x97, 0xf6, - 0x97, 0xee, 0x98, 0xf6, 0x98, 0xee, 0x98, 0xf6, 0x9a, 0xee, 0x98, 0xf6, - 0x9a, 0xee, 0x99, 0xf6, 0x9a, 0xee, 0x99, 0xf6, 0x9a, 0xee, 0x9a, 0xf6, - 0x9a, 0xee, 0x9a, 0xf6, 0x9a, 0xee, 0x9a, 0xf6, 0x9a, 0xee, 0x9b, 0xf6, - 0x9b, 0xee, 0x9b, 0xf6, 0x9b, 0xee, 0x9c, 0xf6, 0x9c, 0xee, 0x9c, 0xf6, - 0x9c, 0xee, 0x9d, 0xf7, 0x9e, 0xee, 0x9d, 0xf7, 0x9f, 0xee, 0x9d, 0xf7, - 0x9e, 0xee, 0x9e, 0xf7, 0x9f, 0xee, 0x9e, 0xf7, 0x9e, 0xee, 0x9f, 0xf7, - 0x9f, 0xee, 0x9f, 0xf7, 0x9f, 0xee, 0x9f, 0xf7, 0x9f, 0xee, 0xa0, 0xf7, - 0xa0, 0xee, 0xa0, 0xf7, 0xa0, 0xee, 0xa1, 0xf7, 0xa1, 0xee, 0xa1, 0xf7, - 0xa1, 0xee, 0xa1, 0xf7, 0xa1, 0xee, 0xa2, 0xf7, 0xa3, 0xee, 0xa2, 0xf7, - 0xa3, 0xee, 0xa3, 0xf7, 0xa3, 0xee, 0xa3, 0xf7, 0xa3, 0xee, 0xa3, 0xf7, - 0xa3, 0xee, 0xa4, 0xf7, 0xa4, 0xee, 0xa4, 0xf7, 0xa4, 0xee, 0xa5, 0xf7, - 0xa5, 0xee, 0xa5, 0xf7, 0xa5, 0xee, 0xa5, 0xf7, 0xa5, 0xee, 0xa6, 0xf7, - 0xa6, 0xee, 0xa6, 0xf7, 0xa6, 0xee, 0xa6, 0xf7, 0xa6, 0xee, 0xa7, 0xf8, - 0xa7, 0xef, 0xa7, 0xf8, 0xa7, 0xef, 0xa8, 0xf8, 0xa8, 0xef, 0xa8, 0xf8, - 0xa8, 0xef, 0xa8, 0xf8, 0xa8, 0xef, 0xa9, 0xf8, 0xa9, 0xef, 0xa9, 0xf8, - 0xa9, 0xef, 0xaa, 0xf8, 0xaa, 0xef, 0xaa, 0xf8, 0xaa, 0xef, 0xaa, 0xf8, - 0xaa, 0xef, 0xab, 0xf8, 0xab, 0xef, 0xaa, 0xf8, 0xab, 0xef, 0xab, 0xf8, - 0xab, 0xef, 0xac, 0xf8, 0xac, 0xf0, 0xac, 0xf8, 0xac, 0xf0, 0xac, 0xf8, - 0xac, 0xf0, 0xad, 0xf8, 0xad, 0xf0, 0xad, 0xf8, 0xad, 0xf0, 0xae, 0xf8, - 0xae, 0xf0, 0xae, 0xf8, 0xae, 0xf0, 0xae, 0xf8, 0xae, 0xf0, 0xaf, 0xf8, - 0xaf, 0xf0, 0xae, 0xf8, 0xaf, 0xf0, 0xaf, 0xf8, 0xaf, 0xf0, 0xae, 0xf8, - 0xb0, 0xf0, 0xaf, 0xf8, 0xb0, 0xf0, 0xb0, 0xf8, 0xb0, 0xf1, 0xb1, 0xf8, - 0xb1, 0xf1, 0xb1, 0xf8, 0xb1, 0xf1, 0xb2, 0xf8, 0xb2, 0xf1, 0xb2, 0xf8, - 0xb2, 0xf1, 0xb2, 0xf8, 0xb2, 0xf1, 0xb3, 0xf8, 0xb3, 0xf1, 0xb2, 0xf8, - 0xb3, 0xf1, 0xb3, 0xf8, 0xb3, 0xf1, 0xb2, 0xf8, 0xb4, 0xf1, 0xb3, 0xf8, - 0xb4, 0xf1, 0xb4, 0xf8, 0xb4, 0xf2, 0xb5, 0xf8, 0xb5, 0xf2, 0xb5, 0xf8, - 0xb5, 0xf2, 0xb5, 0xf8, 0xb5, 0xf2, 0xb6, 0xf8, 0xb6, 0xf2, 0xb6, 0xf8, - 0xb6, 0xf2, 0xb6, 0xf8, 0xb6, 0xf2, 0xb6, 0xf8, 0xb7, 0xf2, 0xb6, 0xf8, - 0xb7, 0xf2, 0xb6, 0xf8, 0xb7, 0xf2, 0xb6, 0xf8, 0xb8, 0xf2, 0xb8, 0xf8, - 0xb8, 0xf3, 0xb8, 0xf8, 0xb8, 0xf3, 0xb9, 0xf8, 0xb9, 0xf3, 0xb9, 0xf8, - 0xb9, 0xf3, 0xb9, 0xf8, 0xb9, 0xf3, 0xba, 0xf8, 0xba, 0xf3, 0xba, 0xf8, - 0xba, 0xf3, 0xba, 0xf8, 0xba, 0xf3, 0xba, 0xf8, 0xbb, 0xf3, 0xba, 0xf8, - 0xbb, 0xf3, 0xba, 0xf8, 0xbb, 0xf3, 0xba, 0xf8, 0xbc, 0xf3, 0xba, 0xf8, - 0xbc, 0xf3, 0xbc, 0xf8, 0xbc, 0xf4, 0xbd, 0xf8, 0xbd, 0xf4, 0xbd, 0xf8, - 0xbd, 0xf4, 0xbd, 0xf8, 0xbd, 0xf4, 0xbe, 0xf8, 0xbe, 0xf4, 0xbd, 0xf8, - 0xbe, 0xf4, 0xbe, 0xf8, 0xbe, 0xf4, 0xbd, 0xf8, 0xbf, 0xf4, 0xbe, 0xf8, - 0xbf, 0xf4, 0xbd, 0xf8, 0xbf, 0xf4, 0xbe, 0xf8, 0xc0, 0xf4, 0xc0, 0xf8, - 0xc0, 0xf5, 0xc0, 0xf8, 0xc0, 0xf5, 0xc1, 0xf8, 0xc1, 0xf5, 0xc1, 0xf8, - 0xc1, 0xf5, 0xc1, 0xf8, 0xc1, 0xf5, 0xc1, 0xf8, 0xc1, 0xf5, 0xc1, 0xf8, - 0xc2, 0xf5, 0xc1, 0xf8, 0xc2, 0xf5, 0xc1, 0xf8, 0xc2, 0xf5, 0xc1, 0xf8, - 0xc3, 0xf5, 0xc1, 0xf8, 0xc3, 0xf5, 0xc3, 0xf8, 0xc3, 0xf6, 0xc4, 0xf8, - 0xc4, 0xf6, 0xc4, 0xf8, 0xc4, 0xf6, 0xc4, 0xf8, 0xc4, 0xf6, 0xc5, 0xf8, - 0xc5, 0xf6, 0xc4, 0xf8, 0xc5, 0xf6, 0xc5, 0xf8, 0xc5, 0xf6, 0xca, 0xf8, - 0xc6, 0xee, 0xca, 0xf8, 0xc6, 0xf0, 0xca, 0xf8, 0xc6, 0xee, 0xca, 0xf8, - 0xc6, 0xf0, 0xca, 0xf8, 0xc7, 0xee, 0xca, 0xf8, 0xc7, 0xf0, 0xca, 0xf8, - 0xc7, 0xee, 0xca, 0xf8, 0xc8, 0xf0, 0xca, 0xf8, 0xc8, 0xee, 0xca, 0xf8, - 0xc8, 0xf0, 0xca, 0xf8, 0xc9, 0xee, 0xca, 0xf8, 0xc9, 0xf0, 0xca, 0xf8, - 0xc9, 0xee, 0xcb, 0xf8, 0xc9, 0xee, 0xca, 0xf8, 0xca, 0xee, 0xcb, 0xf8, - 0xca, 0xee, 0xca, 0xf7, 0xca, 0xee, 0xcb, 0xf8, 0xca, 0xee, 0xcb, 0xf7, - 0xca, 0xee, 0xcb, 0xf8, 0xca, 0xee, 0xcc, 0xf7, 0xca, 0xee, 0xcc, 0xf8, - 0xca, 0xee, 0xcc, 0xf7, 0xca, 0xee, 0xcc, 0xf8, 0xca, 0xee, 0xcd, 0xf7, - 0xca, 0xee, 0xcd, 0xf8, 0xca, 0xee, 0xcd, 0xf7, 0xca, 0xee, 0xce, 0xf8, - 0xca, 0xee, 0xce, 0xf7, 0xca, 0xee, 0xce, 0xf8, 0xca, 0xee, 0xce, 0xf7, - 0xca, 0xee, 0xcf, 0xf8, 0xca, 0xee, 0xcf, 0xf7, 0xca, 0xee, 0xcf, 0xf6, - 0xcb, 0xee, 0xd0, 0xf7, 0xca, 0xee, 0xd0, 0xfc, 0xce, 0xee, 0xd0, 0xfc, - 0xce, 0xee, 0xd0, 0xfc, 0xce, 0xee, 0xd1, 0xfc, 0xd1, 0xee, 0xd1, 0xfc, - 0xd1, 0xee, 0xd1, 0xfc, 0xd1, 0xee, 0xd2, 0xfc, 0xd1, 0xee, 0xd2, 0xfc, - 0xd1, 0xee, 0xd2, 0xfc, 0xd1, 0xee, 0xd2, 0xfc, 0xd1, 0xee, 0xd3, 0xfc, - 0xd1, 0xee, 0xd3, 0xfc, 0xd1, 0xee, 0xd3, 0xfc, 0xd1, 0xee, 0xd4, 0xfc, - 0xd4, 0xee, 0xd4, 0xfc, 0xd4, 0xee, 0xd4, 0xfc, 0xd4, 0xee, 0xd4, 0xfc, - 0xd4, 0xee, 0xd5, 0xfc, 0xd4, 0xee, 0xd5, 0xfc, 0xd4, 0xee, 0xd5, 0xfc, - 0xd4, 0xee, 0xd6, 0xfc, 0xd4, 0xee, 0xd6, 0xfc, 0xd4, 0xee, 0xd6, 0xfc, - 0xd4, 0xee, 0xd6, 0xfc, 0xd4, 0xee, 0xd7, 0xfd, 0xd7, 0xee, 0xd7, 0xfd, - 0xd7, 0xee, 0xd7, 0xfd, 0xd7, 0xee, 0xd7, 0xfd, 0xd7, 0xee, 0xd8, 0xfd, - 0xd7, 0xee, 0xd8, 0xfd, 0xd7, 0xee, 0xd8, 0xfd, 0xd7, 0xee, 0xd9, 0xfd, - 0xd7, 0xee, 0xd9, 0xfd, 0xd7, 0xee, 0xd9, 0xfd, 0xd7, 0xee, 0xd9, 0xfd, - 0xd7, 0xee, 0xda, 0xfd, 0xda, 0xee, 0xda, 0xfd, 0xda, 0xee, 0xda, 0xfd, - 0xda, 0xee, 0xda, 0xfd, 0xda, 0xee, 0xdb, 0xfd, 0xda, 0xee, 0xdb, 0xfd, - 0xda, 0xee, 0xdb, 0xfd, 0xda, 0xee, 0xdb, 0xfd, 0xda, 0xee, 0xdc, 0xfd, - 0xda, 0xee, 0xdc, 0xfd, 0xda, 0xee, 0xdc, 0xf9, 0xe3, 0xee, 0xdd, 0xf8, - 0xe3, 0xee, 0xdd, 0xf9, 0xe3, 0xee, 0xdd, 0xf8, 0xe3, 0xee, 0xdd, 0xf9, - 0xe3, 0xee, 0xde, 0xf8, 0xe3, 0xee, 0xde, 0xf9, 0xe3, 0xee, 0xde, 0xf8, - 0xe3, 0xee, 0xde, 0xf9, 0xe3, 0xee, 0xdf, 0xf8, 0xe3, 0xee, 0xdf, 0xf9, - 0xe3, 0xee, 0xdf, 0xf8, 0xe3, 0xee, 0xdf, 0xf8, 0xe4, 0xee, 0xe0, 0xf8, - 0xe3, 0xee, 0xe0, 0xf8, 0xe4, 0xee, 0xe0, 0xf8, 0xe3, 0xee, 0xe1, 0xf8, - 0xe4, 0xee, 0xe1, 0xf8, 0xe3, 0xee, 0xe1, 0xf8, 0xe4, 0xee, 0xe1, 0xf8, - 0xe3, 0xee, 0xe2, 0xf8, 0xe4, 0xee, 0xe2, 0xf8, 0xe3, 0xee, 0xe2, 0xf8, - 0xe4, 0xee, 0xe2, 0xf8, 0xe3, 0xee, 0xe3, 0xf8, 0xe4, 0xee, 0xe3, 0xf8, - 0xe4, 0xee, 0xe3, 0xf8, 0xe4, 0xee, 0xe3, 0xf8, 0xe4, 0xee, 0xe3, 0xf8, - 0xe4, 0xee, 0xe3, 0xf8, 0xe4, 0xee, 0xe3, 0xf8, 0xe4, 0xee, 0xe3, 0xf8, - 0xe4, 0xee, 0xe6, 0xf8, 0xe5, 0xee, 0xe5, 0xf8, 0xe5, 0xef, 0xe6, 0xf8, - 0xe5, 0xee, 0xe6, 0xf8, 0xe5, 0xee, 0xe6, 0xf8, 0xe5, 0xee, 0xe6, 0xf8, - 0xe5, 0xee, 0xe6, 0xf8, 0xe5, 0xee, 0xe6, 0xf8, 0xe5, 0xee, 0xe7, 0xf8, - 0xe5, 0xee, 0xe7, 0xf8, 0xe5, 0xee, 0xe7, 0xf8, 0xe5, 0xee, 0xe7, 0xf8, - 0xe5, 0xee, 0xe8, 0xf6, 0xe6, 0xee, 0xe8, 0xf8, 0xe5, 0xee, 0xe8, 0xf6, - 0xe6, 0xee, 0xe8, 0xf8, 0xe5, 0xee, 0xe9, 0xf6, 0xe6, 0xee, 0xe9, 0xf8, - 0xe5, 0xee, 0xe9, 0xf6, 0xe6, 0xee, 0xe9, 0xf8, 0xe5, 0xee, 0xea, 0xf6, - 0xe6, 0xee, 0xea, 0xf8, 0xe5, 0xee, 0xea, 0xf6, 0xe6, 0xee, 0xea, 0xf8, - 0xe5, 0xee, 0xeb, 0xf9, 0xef, 0xee, 0xeb, 0xf8, 0xef, 0xee, 0xeb, 0xf9, - 0xef, 0xee, 0xeb, 0xf8, 0xef, 0xee, 0xec, 0xf9, 0xef, 0xee, 0xec, 0xf8, - 0xef, 0xee, 0xec, 0xf9, 0xef, 0xee, 0xec, 0xf8, 0xef, 0xee, 0xec, 0xf9, - 0xef, 0xee, 0xed, 0xf8, 0xef, 0xee, 0xed, 0xf9, 0xef, 0xee, 0xed, 0xf8, - 0xef, 0xee, 0xed, 0xf8, 0xef, 0xee, 0xee, 0xf8, 0xef, 0xee, 0xee, 0xf8, - 0xef, 0xee, 0xee, 0xf8, 0xef, 0xee, 0xee, 0xf8, 0xef, 0xee, 0xef, 0xf8, - 0xef, 0xee, 0xef, 0xf8, 0xef, 0xee, 0xef, 0xf8, 0xef, 0xed, 0xef, 0xf8, - 0xef, 0xee, 0xf0, 0xf8, 0xef, 0xee, 0xf0, 0xf8, 0xef, 0xee, 0xf0, 0xf8, - 0xef, 0xee, 0xf0, 0xf8, 0xef, 0xee, 0xf1, 0xf7, 0xf0, 0xee, 0xf1, 0xf8, - 0xef, 0xee, 0xf1, 0xf7, 0xf0, 0xee, 0xf1, 0xf8, 0xef, 0xee, 0xf2, 0xf7, - 0xf0, 0xee, 0xf2, 0xf8, 0xef, 0xee, 0xf2, 0xf7, 0xf0, 0xee, 0xf2, 0xf8, - 0xef, 0xee, 0xf2, 0xf7, 0xf0, 0xee, 0xf3, 0xf8, 0xef, 0xee, 0xf3, 0xf7, - 0xf0, 0xee, 0xf3, 0xf8, 0xef, 0xee, 0xf3, 0xf7, 0xf0, 0xee, 0xf4, 0xf8, - 0xef, 0xee, 0xf4, 0xf7, 0xf0, 0xee, 0xf4, 0xf8, 0xef, 0xee, 0xf4, 0xf7, - 0xf0, 0xee, 0xf5, 0xf8, 0xef, 0xee, 0xf5, 0xf7, 0xf0, 0xee, 0xf5, 0xf8, - 0xef, 0xee, 0xf5, 0xf7, 0xf0, 0xee, 0xf5, 0xf5, 0xf0, 0xee, 0xf6, 0xf7, - 0xf0, 0xee, 0xf6, 0xf5, 0xf0, 0xee, 0xf6, 0xf7, 0xf0, 0xee, 0xf6, 0xf5, - 0xf0, 0xee, 0xf7, 0xf7, 0xf0, 0xee, 0xf7, 0xf5, 0xf0, 0xee, 0xf7, 0xf7, - 0xf0, 0xee, 0xf7, 0xf5, 0xf0, 0xee, 0xf8, 0xf7, 0xf0, 0xee, 0xf8, 0xf5, - 0xf0, 0xee, 0xf8, 0xf7, 0xf0, 0xee, 0xf8, 0xf5, 0xf0, 0xee, 0xf8, 0xf7, - 0xf0, 0xee, 0xf9, 0xf5, 0xf0, 0xee, 0xf9, 0xf7, 0xf0, 0xee, 0xf9, 0xf5, - 0xf0, 0xee, 0xf9, 0xf7, 0xf0, 0xee, 0xfa, 0xf5, 0xf0, 0xee, 0xfa, 0xf7, - 0xf0, 0xee, 0xfa, 0xf5, 0xf0, 0xee, 0xfa, 0xf7, 0xf0, 0xee, 0xfa, 0xf5, - 0xf0, 0xee, 0xfb, 0xf7, 0xf0, 0xee, 0xfb, 0xf5, 0xf0, 0xee, 0xfb, 0xf7, - 0xf0, 0xee, 0xfb, 0xf5, 0xf0, 0xee, 0xfc, 0xf7, 0xf0, 0xee, 0xfc, 0xf5, - 0xf0, 0xee, 0xfc, 0xf7, 0xf0, 0xee, 0xfc, 0xf5, 0xf0, 0xee, 0xfc, 0xf7, - 0xf0, 0xee, 0xfd, 0xf5, 0xf0, 0xee, 0xfd, 0xf7, 0xf0, 0xee, 0xfd, 0xf5, - 0xf0, 0xee, 0xfd, 0xf7, 0xf0, 0xee, 0xfe, 0xf5, 0xf0, 0xee, 0xfe, 0xf4, - 0xf0, 0xee, 0xfe, 0xf5, 0xf0, 0xee, 0xfe, 0xf4, 0xf0, 0xee, 0xfe, 0xf5, - 0xf0, 0xee, 0xff, 0xf4, 0xf0, 0xee, 0xff, 0xf5, 0xf0, 0xee, 0x03, 0xf4, - 0x83, 0xef, 0x0a, 0xf4, 0x83, 0xef, 0x0f, 0xf4, 0x83, 0xef, 0x14, 0xf4, - 0x83, 0xef, 0x17, 0xf4, 0x83, 0xef, 0x1b, 0xf4, 0x83, 0xef, 0x1e, 0xf4, - 0x83, 0xef, 0x20, 0xf4, 0x83, 0xef, 0x23, 0xf4, 0x83, 0xef, 0x25, 0xf4, - 0x83, 0xef, 0x27, 0xf4, 0x83, 0xef, 0x29, 0xf4, 0x83, 0xef, 0x2b, 0xf4, - 0x83, 0xef, 0x2d, 0xf4, 0x83, 0xef, 0x2f, 0xf4, 0x83, 0xef, 0x31, 0xf4, - 0x83, 0xef, 0x32, 0xf4, 0x83, 0xef, 0x34, 0xf4, 0x83, 0xef, 0x35, 0xf4, - 0x83, 0xef, 0x37, 0xf4, 0x83, 0xef, 0x38, 0xf4, 0x83, 0xef, 0x3a, 0xf4, - 0x83, 0xef, 0x3b, 0xf4, 0x83, 0xef, 0x3c, 0xf4, 0x83, 0xef, 0x3e, 0xf4, - 0x83, 0xef, 0x3f, 0xf4, 0x83, 0xef, 0x40, 0xf4, 0x83, 0xef, 0x42, 0xf4, - 0x83, 0xef, 0x43, 0xf4, 0x83, 0xef, 0x44, 0xf4, 0x83, 0xef, 0x45, 0xf4, - 0x83, 0xef, 0x46, 0xf4, 0x83, 0xef, 0x47, 0xf4, 0x83, 0xef, 0x48, 0xf4, - 0x83, 0xef, 0x49, 0xf4, 0x83, 0xef, 0x4a, 0xf4, 0x83, 0xef, 0x4b, 0xf4, - 0x83, 0xef, 0x4c, 0xf4, 0x83, 0xef, 0x4d, 0xf4, 0x83, 0xef, 0x4e, 0xf4, - 0x83, 0xef, 0x4f, 0xf4, 0x83, 0xef, 0x50, 0xf4, 0x83, 0xef, 0x51, 0xf4, - 0x83, 0xef, 0x52, 0xf4, 0x83, 0xef, 0x53, 0xf4, 0x83, 0xef, 0x54, 0xf4, - 0x83, 0xef, 0x55, 0xf4, 0x83, 0xef, 0x56, 0xf4, 0x83, 0xef, 0x57, 0xf4, - 0x83, 0xef, 0x58, 0xf4, 0x83, 0xef, 0x58, 0xf4, 0x83, 0xef, 0x59, 0xf4, - 0x83, 0xef, 0x5a, 0xf4, 0x83, 0xef, 0x5b, 0xf4, 0x83, 0xef, 0x5c, 0xf4, - 0x83, 0xef, 0x5d, 0xf4, 0x83, 0xef, 0x5d, 0xf4, 0x83, 0xef, 0x5e, 0xf4, - 0x83, 0xef, 0x5f, 0xf4, 0x83, 0xef, 0x60, 0xf4, 0x83, 0xef, 0x60, 0xf4, - 0x83, 0xef, 0x61, 0xf4, 0x83, 0xef, 0x62, 0xf4, 0x83, 0xef, 0x63, 0xf4, - 0x83, 0xef, 0x63, 0xf4, 0x83, 0xef, 0x64, 0xf4, 0x83, 0xef, 0x65, 0xf4, - 0x83, 0xef, 0x66, 0xf4, 0x83, 0xef, 0x66, 0xf4, 0x83, 0xef, 0x67, 0xf4, - 0x83, 0xef, 0x68, 0xf4, 0x83, 0xef, 0x68, 0xf4, 0x83, 0xef, 0x69, 0xf4, - 0x83, 0xef, 0x6a, 0xf4, 0x83, 0xef, 0x6a, 0xf4, 0x83, 0xef, 0x6b, 0xf4, - 0x83, 0xef, 0x6c, 0xf4, 0x83, 0xef, 0x6c, 0xf4, 0x83, 0xef, 0x6d, 0xf4, - 0x83, 0xef, 0x6e, 0xf4, 0x83, 0xef, 0x6e, 0xf4, 0x83, 0xef, 0x6f, 0xf4, - 0x83, 0xef, 0x70, 0xf4, 0x83, 0xef, 0x70, 0xf4, 0x83, 0xef, 0x71, 0xf4, - 0x83, 0xef, 0x72, 0xf4, 0x83, 0xef, 0x72, 0xf4, 0x83, 0xef, 0x73, 0xf4, - 0x83, 0xef, 0x73, 0xf4, 0x83, 0xef, 0x74, 0xf4, 0x83, 0xef, 0x75, 0xf4, - 0x83, 0xef, 0x75, 0xf4, 0x83, 0xef, 0x76, 0xf4, 0x83, 0xef, 0x76, 0xf4, - 0x83, 0xef, 0x77, 0xf4, 0x83, 0xef, 0x78, 0xf4, 0x83, 0xef, 0x78, 0xf4, - 0x83, 0xef, 0x79, 0xf4, 0x83, 0xef, 0x79, 0xf4, 0x83, 0xef, 0x7a, 0xf4, - 0x83, 0xef, 0x7a, 0xf4, 0x83, 0xef, 0x7b, 0xf4, 0x83, 0xef, 0x7c, 0xf4, - 0x83, 0xef, 0x7c, 0xf4, 0x83, 0xef, 0x7d, 0xf4, 0x83, 0xef, 0x7d, 0xf4, - 0x83, 0xef, 0x7e, 0xf4, 0x83, 0xef, 0x7e, 0xf4, 0x83, 0xef, 0x7f, 0xf4, - 0x83, 0xef, 0x7f, 0xf4, 0x83, 0xef, 0x80, 0xf4, 0x83, 0xef, 0x81, 0xf4, - 0x83, 0xef, 0x81, 0xf4, 0x83, 0xef, 0x82, 0xf4, 0x83, 0xef, 0x82, 0xf4, - 0x83, 0xef, 0x83, 0xf4, 0x83, 0xef, 0x83, 0xf4, 0x83, 0xef, 0x84, 0xf4, - 0x84, 0xef, 0x84, 0xf4, 0x84, 0xef, 0x85, 0xf5, 0x88, 0xef, 0x85, 0xf5, - 0x88, 0xef, 0x86, 0xf5, 0x88, 0xef, 0x86, 0xf5, 0x88, 0xef, 0x87, 0xf5, - 0x88, 0xef, 0x87, 0xf5, 0x88, 0xef, 0x88, 0xf5, 0x88, 0xef, 0x88, 0xf5, - 0x88, 0xef, 0x89, 0xf5, 0x89, 0xef, 0x89, 0xf5, 0x89, 0xef, 0x8a, 0xf5, - 0x8a, 0xef, 0x8a, 0xf5, 0x8d, 0xef, 0x8b, 0xf5, 0x8e, 0xef, 0x8b, 0xf5, - 0x8d, 0xef, 0x8c, 0xf5, 0x8e, 0xef, 0x8c, 0xf5, 0x8d, 0xef, 0x8d, 0xf5, - 0x8e, 0xef, 0x8d, 0xf5, 0x8d, 0xef, 0x8e, 0xf5, 0x8e, 0xef, 0x8e, 0xf5, - 0x8e, 0xef, 0x8e, 0xf5, 0x8e, 0xef, 0x8f, 0xf5, 0x8f, 0xef, 0x8f, 0xf5, - 0x92, 0xef, 0x90, 0xf5, 0x93, 0xef, 0x90, 0xf5, 0x92, 0xef, 0x91, 0xf5, - 0x93, 0xef, 0x91, 0xf5, 0x92, 0xef, 0x92, 0xf5, 0x93, 0xef, 0x92, 0xf5, - 0x92, 0xef, 0x93, 0xf5, 0x93, 0xef, 0x93, 0xf5, 0x93, 0xef, 0x94, 0xf5, - 0x94, 0xef, 0x94, 0xf5, 0x94, 0xef, 0x94, 0xf5, 0x94, 0xef, 0x95, 0xf5, - 0x95, 0xef, 0x95, 0xf6, 0x97, 0xef, 0x96, 0xf6, 0x98, 0xef, 0x96, 0xf6, - 0x97, 0xef, 0x97, 0xf6, 0x98, 0xef, 0x97, 0xf6, 0x97, 0xef, 0x98, 0xf6, - 0x98, 0xef, 0x98, 0xf6, 0x98, 0xef, 0x98, 0xf6, 0x98, 0xef, 0x99, 0xf6, - 0x99, 0xef, 0x99, 0xf6, 0x99, 0xef, 0x9a, 0xf6, 0x9a, 0xef, 0x9a, 0xf6, - 0x9c, 0xef, 0x9a, 0xf6, 0x9c, 0xef, 0x9b, 0xf6, 0x9c, 0xef, 0x9b, 0xf6, - 0x9c, 0xef, 0x9c, 0xf6, 0x9c, 0xef, 0x9c, 0xf6, 0x9c, 0xef, 0x9d, 0xf6, - 0x9d, 0xef, 0x9d, 0xf6, 0x9d, 0xef, 0x9d, 0xf6, 0x9d, 0xef, 0x9e, 0xf6, - 0x9e, 0xef, 0x9e, 0xf6, 0x9e, 0xef, 0x9f, 0xf7, 0xa0, 0xef, 0x9f, 0xf7, - 0xa1, 0xef, 0x9f, 0xf7, 0xa0, 0xef, 0xa0, 0xf7, 0xa1, 0xef, 0xa0, 0xf7, - 0xa0, 0xef, 0xa1, 0xf7, 0xa1, 0xef, 0xa1, 0xf7, 0xa1, 0xef, 0xa1, 0xf7, - 0xa1, 0xef, 0xa2, 0xf7, 0xa2, 0xef, 0xa2, 0xf7, 0xa2, 0xef, 0xa3, 0xf7, - 0xa3, 0xef, 0xa3, 0xf7, 0xa3, 0xef, 0xa3, 0xf7, 0xa3, 0xef, 0xa4, 0xf7, - 0xa5, 0xef, 0xa4, 0xf7, 0xa5, 0xef, 0xa5, 0xf7, 0xa5, 0xef, 0xa5, 0xf7, - 0xa5, 0xef, 0xa5, 0xf7, 0xa5, 0xef, 0xa6, 0xf7, 0xa6, 0xef, 0xa6, 0xf7, - 0xa6, 0xef, 0xa6, 0xf7, 0xa6, 0xef, 0xa7, 0xf7, 0xa7, 0xef, 0xa7, 0xf7, - 0xa7, 0xef, 0xa8, 0xf7, 0xa8, 0xef, 0xa8, 0xf7, 0xa8, 0xef, 0xa8, 0xf7, - 0xa8, 0xef, 0xa9, 0xf8, 0xa9, 0xf0, 0xa9, 0xf8, 0xa9, 0xf0, 0xaa, 0xf8, - 0xaa, 0xf0, 0xaa, 0xf8, 0xaa, 0xf0, 0xaa, 0xf8, 0xaa, 0xf0, 0xab, 0xf8, - 0xab, 0xf0, 0xab, 0xf8, 0xab, 0xf0, 0xab, 0xf8, 0xab, 0xf0, 0xac, 0xf8, - 0xac, 0xf0, 0xac, 0xf8, 0xac, 0xf0, 0xac, 0xf8, 0xac, 0xf0, 0xac, 0xf8, - 0xad, 0xf0, 0xac, 0xf8, 0xad, 0xf0, 0xae, 0xf8, 0xae, 0xf1, 0xae, 0xf8, - 0xae, 0xf1, 0xae, 0xf8, 0xae, 0xf1, 0xaf, 0xf8, 0xaf, 0xf1, 0xaf, 0xf8, - 0xaf, 0xf1, 0xaf, 0xf8, 0xaf, 0xf1, 0xb0, 0xf8, 0xb0, 0xf1, 0xb0, 0xf8, - 0xb0, 0xf1, 0xb0, 0xf8, 0xb0, 0xf1, 0xb0, 0xf8, 0xb1, 0xf1, 0xb0, 0xf8, - 0xb1, 0xf1, 0xb0, 0xf8, 0xb2, 0xf1, 0xb0, 0xf8, 0xb2, 0xf1, 0xb2, 0xf8, - 0xb2, 0xf2, 0xb3, 0xf8, 0xb3, 0xf2, 0xb3, 0xf8, 0xb3, 0xf2, 0xb3, 0xf8, - 0xb3, 0xf2, 0xb4, 0xf8, 0xb4, 0xf2, 0xb4, 0xf8, 0xb4, 0xf2, 0xb4, 0xf8, - 0xb4, 0xf2, 0xb4, 0xf8, 0xb5, 0xf2, 0xb4, 0xf8, 0xb5, 0xf2, 0xb4, 0xf8, - 0xb5, 0xf2, 0xb4, 0xf8, 0xb6, 0xf2, 0xb6, 0xf8, 0xb6, 0xf3, 0xb6, 0xf8, - 0xb6, 0xf3, 0xb7, 0xf8, 0xb7, 0xf3, 0xb7, 0xf8, 0xb7, 0xf3, 0xb7, 0xf8, - 0xb7, 0xf3, 0xb8, 0xf8, 0xb8, 0xf3, 0xb8, 0xf8, 0xb8, 0xf3, 0xb8, 0xf8, - 0xb8, 0xf3, 0xb8, 0xf8, 0xb9, 0xf3, 0xb8, 0xf8, 0xb9, 0xf3, 0xb8, 0xf8, - 0xb9, 0xf3, 0xba, 0xf8, 0xba, 0xf4, 0xba, 0xf8, 0xba, 0xf4, 0xba, 0xf8, - 0xba, 0xf4, 0xbb, 0xf8, 0xbb, 0xf4, 0xbb, 0xf8, 0xbb, 0xf4, 0xbb, 0xf8, - 0xbb, 0xf4, 0xbc, 0xf8, 0xbc, 0xf4, 0xbb, 0xf8, 0xbc, 0xf4, 0xbc, 0xf8, - 0xbc, 0xf4, 0xbb, 0xf8, 0xbd, 0xf4, 0xbc, 0xf8, 0xbd, 0xf4, 0xbb, 0xf8, - 0xbd, 0xf4, 0xbc, 0xf8, 0xbe, 0xf4, 0xbe, 0xf8, 0xbe, 0xf5, 0xbe, 0xf8, - 0xbe, 0xf5, 0xbf, 0xf8, 0xbf, 0xf5, 0xbf, 0xf8, 0xbf, 0xf5, 0xbf, 0xf8, - 0xbf, 0xf5, 0xbf, 0xf8, 0xc0, 0xf5, 0xbf, 0xf8, 0xc0, 0xf5, 0xbf, 0xf8, - 0xc0, 0xf5, 0xbf, 0xf8, 0xc1, 0xf5, 0xbf, 0xf8, 0xc1, 0xf5, 0xbf, 0xf8, - 0xc1, 0xf5, 0xc1, 0xf8, 0xc1, 0xf6, 0xc2, 0xf8, 0xc2, 0xf6, 0xc2, 0xf8, - 0xc2, 0xf6, 0xc2, 0xf8, 0xc2, 0xf6, 0xc3, 0xf8, 0xc3, 0xf6, 0xc2, 0xf8, - 0xc3, 0xf6, 0xc3, 0xf8, 0xc3, 0xf6, 0xc2, 0xf8, 0xc4, 0xf6, 0xc3, 0xf8, - 0xc4, 0xf6, 0xc2, 0xf8, 0xc4, 0xf6, 0xc3, 0xf8, 0xc5, 0xf6, 0xc5, 0xf8, - 0xc5, 0xf7, 0xc5, 0xf8, 0xc5, 0xf7, 0xc6, 0xf8, 0xc6, 0xf7, 0xca, 0xf8, - 0xc6, 0xf1, 0xca, 0xf8, 0xc6, 0xef, 0xca, 0xf8, 0xc6, 0xf1, 0xca, 0xf8, - 0xc7, 0xef, 0xca, 0xf8, 0xc7, 0xf1, 0xca, 0xf8, 0xc7, 0xef, 0xca, 0xf8, - 0xc8, 0xf1, 0xca, 0xf8, 0xc8, 0xef, 0xca, 0xf8, 0xc8, 0xf1, 0xca, 0xf8, - 0xc9, 0xef, 0xca, 0xf8, 0xc9, 0xf1, 0xca, 0xf8, 0xc9, 0xef, 0xcb, 0xf8, - 0xc9, 0xef, 0xca, 0xf8, 0xca, 0xef, 0xcb, 0xf8, 0xca, 0xef, 0xca, 0xf8, - 0xca, 0xef, 0xcb, 0xf8, 0xca, 0xef, 0xcb, 0xf8, 0xca, 0xef, 0xcb, 0xf8, - 0xca, 0xef, 0xcc, 0xf7, 0xca, 0xef, 0xcc, 0xf8, 0xca, 0xef, 0xcc, 0xf7, - 0xca, 0xef, 0xcc, 0xf8, 0xca, 0xef, 0xcd, 0xf7, 0xca, 0xef, 0xcd, 0xf8, - 0xca, 0xef, 0xcd, 0xf7, 0xca, 0xef, 0xce, 0xf8, 0xca, 0xef, 0xce, 0xf7, - 0xca, 0xef, 0xce, 0xf8, 0xca, 0xef, 0xce, 0xf7, 0xca, 0xef, 0xcf, 0xf8, - 0xca, 0xef, 0xcf, 0xf7, 0xca, 0xef, 0xcf, 0xf8, 0xca, 0xef, 0xd0, 0xfc, - 0xd0, 0xef, 0xd0, 0xfc, 0xcf, 0xef, 0xd0, 0xfc, 0xd0, 0xef, 0xd0, 0xfc, - 0xcf, 0xef, 0xd1, 0xfc, 0xd0, 0xef, 0xd1, 0xfc, 0xcf, 0xef, 0xd1, 0xfc, - 0xd0, 0xef, 0xd2, 0xfc, 0xcf, 0xef, 0xd2, 0xfc, 0xd0, 0xef, 0xd2, 0xfc, - 0xd2, 0xef, 0xd2, 0xfc, 0xd2, 0xef, 0xd3, 0xfc, 0xd3, 0xef, 0xd3, 0xfc, - 0xd2, 0xef, 0xd3, 0xfc, 0xd3, 0xef, 0xd4, 0xfc, 0xd2, 0xef, 0xd4, 0xfc, - 0xd3, 0xef, 0xd4, 0xfc, 0xd2, 0xef, 0xd4, 0xfc, 0xd3, 0xef, 0xd5, 0xfc, - 0xd2, 0xef, 0xd5, 0xfc, 0xd3, 0xef, 0xd5, 0xfd, 0xd5, 0xef, 0xd6, 0xfd, - 0xd6, 0xef, 0xd6, 0xfd, 0xd6, 0xef, 0xd6, 0xfd, 0xd6, 0xef, 0xd6, 0xfd, - 0xd6, 0xef, 0xd7, 0xfd, 0xd6, 0xef, 0xd7, 0xfd, 0xd6, 0xef, 0xd7, 0xfd, - 0xd6, 0xef, 0xd7, 0xfd, 0xd6, 0xef, 0xd8, 0xfd, 0xd6, 0xef, 0xd8, 0xfd, - 0xd6, 0xef, 0xd8, 0xfd, 0xd8, 0xef, 0xd9, 0xfd, 0xd9, 0xef, 0xd9, 0xfd, - 0xd9, 0xef, 0xd9, 0xfd, 0xd9, 0xef, 0xd9, 0xfd, 0xd9, 0xef, 0xda, 0xfd, - 0xd9, 0xef, 0xda, 0xfd, 0xd9, 0xef, 0xda, 0xfd, 0xd9, 0xef, 0xda, 0xfd, - 0xd9, 0xef, 0xdb, 0xfd, 0xd9, 0xef, 0xdb, 0xfd, 0xd9, 0xef, 0xdb, 0xfe, - 0xdb, 0xef, 0xdb, 0xfe, 0xdb, 0xef, 0xdc, 0xfe, 0xdc, 0xef, 0xdc, 0xfe, - 0xdb, 0xef, 0xdc, 0xfe, 0xdc, 0xef, 0xdd, 0xf8, 0xe3, 0xef, 0xdd, 0xfa, - 0xe3, 0xef, 0xdd, 0xf8, 0xe3, 0xef, 0xdd, 0xfa, 0xe3, 0xef, 0xde, 0xf8, - 0xe3, 0xef, 0xde, 0xfa, 0xe3, 0xef, 0xde, 0xf8, 0xe3, 0xef, 0xde, 0xfa, - 0xe3, 0xef, 0xdf, 0xf8, 0xe3, 0xef, 0xdf, 0xfa, 0xe3, 0xef, 0xdf, 0xf8, - 0xe3, 0xef, 0xdf, 0xf8, 0xe4, 0xef, 0xe0, 0xf8, 0xe3, 0xef, 0xe0, 0xf8, - 0xe4, 0xef, 0xe0, 0xf8, 0xe3, 0xef, 0xe1, 0xf8, 0xe4, 0xef, 0xe1, 0xf8, - 0xe3, 0xef, 0xe1, 0xf8, 0xe4, 0xef, 0xe1, 0xf8, 0xe3, 0xef, 0xe2, 0xf8, - 0xe4, 0xef, 0xe2, 0xf8, 0xe3, 0xef, 0xe2, 0xf8, 0xe4, 0xef, 0xe2, 0xf8, - 0xe3, 0xef, 0xe3, 0xf8, 0xe4, 0xef, 0xe3, 0xf8, 0xe3, 0xef, 0xe3, 0xf8, - 0xe4, 0xef, 0xe3, 0xf8, 0xe3, 0xef, 0xe3, 0xf8, 0xe4, 0xef, 0xe3, 0xf8, - 0xe4, 0xef, 0xe3, 0xf8, 0xe4, 0xef, 0xe3, 0xf8, 0xe4, 0xef, 0xe6, 0xf8, - 0xe5, 0xef, 0xe5, 0xf8, 0xe5, 0xef, 0xe6, 0xf8, 0xe5, 0xef, 0xe5, 0xf7, - 0xe5, 0xef, 0xe6, 0xf8, 0xe5, 0xef, 0xe6, 0xf7, 0xe5, 0xef, 0xe6, 0xf8, - 0xe5, 0xef, 0xe6, 0xf7, 0xe5, 0xef, 0xe7, 0xf8, 0xe5, 0xef, 0xe7, 0xf7, - 0xe5, 0xef, 0xe7, 0xf8, 0xe5, 0xef, 0xe7, 0xf7, 0xe5, 0xef, 0xe8, 0xf8, - 0xe5, 0xef, 0xe8, 0xf7, 0xe5, 0xef, 0xe8, 0xf8, 0xe5, 0xef, 0xe8, 0xf7, - 0xe5, 0xef, 0xe9, 0xf8, 0xe5, 0xef, 0xe9, 0xf7, 0xe5, 0xef, 0xe9, 0xf8, - 0xe5, 0xef, 0xe9, 0xf7, 0xe5, 0xef, 0xea, 0xf6, 0xe6, 0xef, 0xea, 0xf7, - 0xe5, 0xef, 0xea, 0xf6, 0xe6, 0xef, 0xea, 0xf8, 0xef, 0xef, 0xeb, 0xf9, - 0xef, 0xef, 0xeb, 0xf8, 0xef, 0xef, 0xeb, 0xf9, 0xef, 0xef, 0xeb, 0xf8, - 0xef, 0xef, 0xec, 0xf9, 0xef, 0xef, 0xec, 0xf8, 0xef, 0xef, 0xec, 0xf9, - 0xef, 0xef, 0xec, 0xf8, 0xef, 0xef, 0xec, 0xf9, 0xef, 0xef, 0xed, 0xf8, - 0xef, 0xef, 0xed, 0xf9, 0xef, 0xef, 0xed, 0xf8, 0xef, 0xef, 0xed, 0xf9, - 0xef, 0xef, 0xee, 0xf8, 0xef, 0xef, 0xee, 0xf9, 0xef, 0xef, 0xee, 0xf8, - 0xef, 0xef, 0xee, 0xf8, 0xef, 0xef, 0xef, 0xf8, 0xef, 0xef, 0xef, 0xf8, - 0xef, 0xef, 0xef, 0xf8, 0xef, 0xef, 0xef, 0xf8, 0xef, 0xef, 0xf0, 0xf8, - 0xef, 0xef, 0xf0, 0xf8, 0xef, 0xef, 0xf0, 0xf8, 0xef, 0xef, 0xf0, 0xf8, - 0xef, 0xef, 0xf1, 0xf8, 0xef, 0xef, 0xf1, 0xf8, 0xef, 0xef, 0xf1, 0xf8, - 0xef, 0xef, 0xf1, 0xf8, 0xef, 0xef, 0xf2, 0xf6, 0xf0, 0xef, 0xf2, 0xf8, - 0xef, 0xef, 0xf2, 0xf6, 0xf0, 0xef, 0xf2, 0xf8, 0xef, 0xef, 0xf2, 0xf6, - 0xf0, 0xef, 0xf3, 0xf8, 0xef, 0xef, 0xf3, 0xf6, 0xf0, 0xef, 0xf3, 0xf8, - 0xef, 0xef, 0xf3, 0xf6, 0xf0, 0xef, 0xf4, 0xf8, 0xef, 0xef, 0xf4, 0xf6, - 0xf0, 0xef, 0xf4, 0xf8, 0xef, 0xef, 0xf4, 0xf6, 0xf0, 0xef, 0xf5, 0xf8, - 0xef, 0xef, 0xf5, 0xf6, 0xf0, 0xef, 0xf5, 0xf8, 0xef, 0xef, 0xf5, 0xf6, - 0xf0, 0xef, 0xf5, 0xf8, 0xef, 0xef, 0xf6, 0xf6, 0xf0, 0xef, 0xf6, 0xf8, - 0xef, 0xef, 0xf6, 0xf6, 0xf0, 0xef, 0xf6, 0xf8, 0xef, 0xef, 0xf7, 0xf6, - 0xf0, 0xef, 0xf7, 0xf8, 0xef, 0xef, 0xf7, 0xf6, 0xf0, 0xef, 0xf7, 0xf8, - 0xef, 0xef, 0xf8, 0xf6, 0xf0, 0xef, 0xf8, 0xf8, 0xef, 0xef, 0xf8, 0xf6, - 0xf0, 0xef, 0xf8, 0xf5, 0xf0, 0xef, 0xf8, 0xf6, 0xf0, 0xef, 0xf9, 0xf5, - 0xf0, 0xef, 0xf9, 0xf6, 0xf0, 0xef, 0xf9, 0xf5, 0xf0, 0xef, 0xf9, 0xf6, - 0xf0, 0xef, 0xfa, 0xf5, 0xf0, 0xef, 0xfa, 0xf6, 0xf0, 0xef, 0xfa, 0xf5, - 0xf0, 0xef, 0xfa, 0xf6, 0xf0, 0xef, 0xfa, 0xf5, 0xf0, 0xef, 0xfb, 0xf6, - 0xf0, 0xef, 0xfb, 0xf5, 0xf0, 0xef, 0xfb, 0xf6, 0xf0, 0xef, 0xfb, 0xf5, - 0xf0, 0xef, 0xfc, 0xf6, 0xf0, 0xef, 0xfc, 0xf5, 0xf0, 0xef, 0xfc, 0xf6, - 0xf0, 0xef, 0xfc, 0xf5, 0xf0, 0xef, 0xfc, 0xf6, 0xf0, 0xef, 0xfd, 0xf5, - 0xf0, 0xef, 0xfd, 0xf6, 0xf0, 0xef, 0xfd, 0xf5, 0xf0, 0xef, 0xfd, 0xf6, - 0xf0, 0xef, 0xfe, 0xf5, 0xf0, 0xef, 0xfe, 0xf6, 0xf0, 0xef, 0xfe, 0xf5, - 0xf0, 0xef, 0xfe, 0xf6, 0xf0, 0xef, 0xfe, 0xf5, 0xf0, 0xef, 0xff, 0xf6, - 0xf0, 0xef, 0xff, 0xf5, 0xf0, 0xef, 0x03, 0xf4, 0x83, 0xef, 0x0a, 0xf4, - 0x83, 0xef, 0x0f, 0xf4, 0x83, 0xef, 0x14, 0xf4, 0x83, 0xef, 0x17, 0xf4, - 0x83, 0xef, 0x1b, 0xf4, 0x83, 0xef, 0x1e, 0xf4, 0x83, 0xef, 0x20, 0xf4, - 0x83, 0xef, 0x23, 0xf4, 0x83, 0xef, 0x25, 0xf4, 0x83, 0xef, 0x27, 0xf4, - 0x83, 0xef, 0x29, 0xf4, 0x83, 0xef, 0x2b, 0xf4, 0x83, 0xef, 0x2d, 0xf4, - 0x83, 0xef, 0x2f, 0xf4, 0x83, 0xef, 0x31, 0xf4, 0x83, 0xef, 0x32, 0xf4, - 0x83, 0xef, 0x34, 0xf4, 0x83, 0xef, 0x35, 0xf4, 0x83, 0xef, 0x37, 0xf4, - 0x83, 0xef, 0x38, 0xf4, 0x83, 0xef, 0x3a, 0xf4, 0x83, 0xef, 0x3b, 0xf4, - 0x83, 0xef, 0x3c, 0xf4, 0x83, 0xef, 0x3e, 0xf4, 0x83, 0xef, 0x3f, 0xf4, - 0x83, 0xef, 0x40, 0xf4, 0x83, 0xef, 0x42, 0xf4, 0x83, 0xef, 0x43, 0xf4, - 0x83, 0xef, 0x44, 0xf4, 0x83, 0xef, 0x45, 0xf4, 0x83, 0xef, 0x46, 0xf4, - 0x83, 0xef, 0x47, 0xf4, 0x83, 0xef, 0x48, 0xf4, 0x83, 0xef, 0x49, 0xf4, - 0x83, 0xef, 0x4a, 0xf4, 0x83, 0xef, 0x4b, 0xf4, 0x83, 0xef, 0x4c, 0xf4, - 0x83, 0xef, 0x4d, 0xf4, 0x83, 0xef, 0x4e, 0xf4, 0x83, 0xef, 0x4f, 0xf4, - 0x83, 0xef, 0x50, 0xf4, 0x83, 0xef, 0x51, 0xf4, 0x83, 0xef, 0x52, 0xf4, - 0x83, 0xef, 0x53, 0xf4, 0x83, 0xef, 0x54, 0xf4, 0x83, 0xef, 0x55, 0xf4, - 0x83, 0xef, 0x56, 0xf4, 0x83, 0xef, 0x57, 0xf4, 0x83, 0xef, 0x58, 0xf4, - 0x83, 0xef, 0x58, 0xf4, 0x83, 0xef, 0x59, 0xf4, 0x83, 0xef, 0x5a, 0xf4, - 0x83, 0xef, 0x5b, 0xf4, 0x83, 0xef, 0x5c, 0xf4, 0x83, 0xef, 0x5d, 0xf4, - 0x83, 0xef, 0x5d, 0xf4, 0x83, 0xef, 0x5e, 0xf4, 0x83, 0xef, 0x5f, 0xf4, - 0x83, 0xef, 0x60, 0xf4, 0x83, 0xef, 0x60, 0xf4, 0x83, 0xef, 0x61, 0xf4, - 0x83, 0xef, 0x62, 0xf4, 0x83, 0xef, 0x63, 0xf4, 0x83, 0xef, 0x63, 0xf4, - 0x83, 0xef, 0x64, 0xf4, 0x83, 0xef, 0x65, 0xf4, 0x83, 0xef, 0x66, 0xf4, - 0x83, 0xef, 0x66, 0xf4, 0x83, 0xef, 0x67, 0xf4, 0x83, 0xef, 0x68, 0xf4, - 0x83, 0xef, 0x68, 0xf4, 0x83, 0xef, 0x69, 0xf4, 0x83, 0xef, 0x6a, 0xf4, - 0x83, 0xef, 0x6a, 0xf4, 0x83, 0xef, 0x6b, 0xf4, 0x83, 0xef, 0x6c, 0xf4, - 0x83, 0xef, 0x6c, 0xf4, 0x83, 0xef, 0x6d, 0xf4, 0x83, 0xef, 0x6e, 0xf4, - 0x83, 0xef, 0x6e, 0xf4, 0x83, 0xef, 0x6f, 0xf4, 0x83, 0xef, 0x70, 0xf4, - 0x83, 0xef, 0x70, 0xf4, 0x83, 0xef, 0x71, 0xf4, 0x83, 0xef, 0x72, 0xf4, - 0x83, 0xef, 0x72, 0xf4, 0x83, 0xef, 0x73, 0xf4, 0x83, 0xef, 0x73, 0xf4, - 0x83, 0xef, 0x74, 0xf4, 0x83, 0xef, 0x75, 0xf4, 0x83, 0xef, 0x75, 0xf4, - 0x83, 0xef, 0x76, 0xf4, 0x83, 0xef, 0x76, 0xf4, 0x83, 0xef, 0x77, 0xf4, - 0x83, 0xef, 0x78, 0xf4, 0x83, 0xef, 0x78, 0xf4, 0x83, 0xef, 0x79, 0xf4, - 0x83, 0xef, 0x79, 0xf4, 0x83, 0xef, 0x7a, 0xf4, 0x83, 0xef, 0x7a, 0xf4, - 0x83, 0xef, 0x7b, 0xf4, 0x83, 0xef, 0x7c, 0xf4, 0x83, 0xef, 0x7c, 0xf4, - 0x83, 0xef, 0x7d, 0xf4, 0x83, 0xef, 0x7d, 0xf4, 0x83, 0xef, 0x7e, 0xf4, - 0x83, 0xef, 0x7e, 0xf4, 0x83, 0xef, 0x7f, 0xf4, 0x83, 0xef, 0x7f, 0xf4, - 0x83, 0xef, 0x80, 0xf4, 0x85, 0xef, 0x81, 0xf4, 0x83, 0xef, 0x81, 0xf4, - 0x85, 0xef, 0x82, 0xf4, 0x86, 0xef, 0x82, 0xf4, 0x85, 0xef, 0x83, 0xf4, - 0x86, 0xef, 0x83, 0xf4, 0x85, 0xef, 0x84, 0xf4, 0x86, 0xef, 0x84, 0xf4, - 0x85, 0xef, 0x85, 0xf4, 0x86, 0xef, 0x85, 0xf4, 0x85, 0xef, 0x86, 0xf4, - 0x86, 0xef, 0x86, 0xf4, 0x86, 0xef, 0x87, 0xf4, 0x87, 0xef, 0x87, 0xf4, - 0x87, 0xef, 0x88, 0xf5, 0x8b, 0xef, 0x88, 0xf5, 0x8b, 0xef, 0x89, 0xf5, - 0x8b, 0xef, 0x89, 0xf5, 0x8b, 0xef, 0x8a, 0xf5, 0x8b, 0xef, 0x8a, 0xf5, - 0x8b, 0xef, 0x8b, 0xf5, 0x8b, 0xef, 0x8b, 0xf5, 0x8b, 0xef, 0x8c, 0xf5, - 0x8c, 0xef, 0x8c, 0xf5, 0x8c, 0xef, 0x8d, 0xf5, 0x8d, 0xef, 0x8d, 0xf5, - 0x90, 0xef, 0x8e, 0xf5, 0x90, 0xef, 0x8e, 0xf5, 0x90, 0xef, 0x8e, 0xf5, - 0x90, 0xef, 0x8f, 0xf5, 0x90, 0xef, 0x8f, 0xf5, 0x90, 0xef, 0x90, 0xf5, - 0x90, 0xef, 0x90, 0xf5, 0x90, 0xef, 0x91, 0xf5, 0x91, 0xef, 0x91, 0xf5, - 0x91, 0xef, 0x92, 0xf5, 0x92, 0xef, 0x92, 0xf6, 0x95, 0xef, 0x93, 0xf6, - 0x95, 0xef, 0x93, 0xf6, 0x95, 0xef, 0x94, 0xf6, 0x95, 0xef, 0x94, 0xf6, - 0x95, 0xef, 0x94, 0xf6, 0x95, 0xef, 0x95, 0xf6, 0x95, 0xef, 0x95, 0xf6, - 0x95, 0xef, 0x96, 0xf6, 0x96, 0xef, 0x96, 0xf6, 0x96, 0xef, 0x97, 0xf6, - 0x97, 0xef, 0x97, 0xf6, 0x97, 0xef, 0x98, 0xf6, 0x98, 0xef, 0x98, 0xf6, - 0x9a, 0xef, 0x98, 0xf6, 0x9a, 0xef, 0x99, 0xf6, 0x9a, 0xef, 0x99, 0xf6, - 0x9a, 0xef, 0x9a, 0xf6, 0x9a, 0xef, 0x9a, 0xf6, 0x9a, 0xef, 0x9a, 0xf6, - 0x9a, 0xef, 0x9b, 0xf6, 0x9b, 0xef, 0x9b, 0xf6, 0x9b, 0xef, 0x9c, 0xf6, - 0x9c, 0xef, 0x9c, 0xf6, 0x9c, 0xef, 0x9d, 0xf7, 0x9e, 0xef, 0x9d, 0xf7, - 0x9f, 0xef, 0x9d, 0xf7, 0x9e, 0xef, 0x9e, 0xf7, 0x9f, 0xef, 0x9e, 0xf7, - 0x9e, 0xef, 0x9f, 0xf7, 0x9f, 0xef, 0x9f, 0xf7, 0x9f, 0xef, 0x9f, 0xf7, - 0x9f, 0xef, 0xa0, 0xf7, 0xa0, 0xef, 0xa0, 0xf7, 0xa0, 0xef, 0xa1, 0xf7, - 0xa1, 0xef, 0xa1, 0xf7, 0xa3, 0xef, 0xa1, 0xf7, 0xa3, 0xef, 0xa2, 0xf7, - 0xa3, 0xef, 0xa2, 0xf7, 0xa3, 0xef, 0xa3, 0xf7, 0xa3, 0xef, 0xa3, 0xf7, - 0xa3, 0xef, 0xa3, 0xf7, 0xa3, 0xef, 0xa4, 0xf7, 0xa4, 0xef, 0xa4, 0xf7, - 0xa4, 0xef, 0xa5, 0xf7, 0xa5, 0xef, 0xa5, 0xf7, 0xa5, 0xef, 0xa5, 0xf7, - 0xa5, 0xef, 0xa6, 0xf7, 0xa6, 0xef, 0xa6, 0xf8, 0xa7, 0xef, 0xa6, 0xf8, - 0xa7, 0xef, 0xa7, 0xf8, 0xa7, 0xef, 0xa7, 0xf8, 0xa7, 0xef, 0xa8, 0xf8, - 0xa8, 0xef, 0xa8, 0xf8, 0xa8, 0xef, 0xa8, 0xf8, 0xa8, 0xef, 0xa9, 0xf8, - 0xa9, 0xef, 0xa9, 0xf8, 0xa9, 0xef, 0xaa, 0xf8, 0xaa, 0xef, 0xaa, 0xf8, - 0xaa, 0xef, 0xaa, 0xf8, 0xaa, 0xef, 0xab, 0xf8, 0xab, 0xef, 0xab, 0xf8, - 0xab, 0xf0, 0xab, 0xf8, 0xab, 0xf0, 0xac, 0xf8, 0xac, 0xf0, 0xac, 0xf8, - 0xac, 0xf0, 0xac, 0xf8, 0xac, 0xf0, 0xad, 0xf8, 0xad, 0xf0, 0xad, 0xf8, - 0xad, 0xf0, 0xae, 0xf8, 0xae, 0xf0, 0xae, 0xf8, 0xae, 0xf0, 0xae, 0xf8, - 0xae, 0xf0, 0xaf, 0xf8, 0xaf, 0xf0, 0xae, 0xf8, 0xaf, 0xf0, 0xaf, 0xf8, - 0xaf, 0xf0, 0xb0, 0xf8, 0xb0, 0xf1, 0xb0, 0xf8, 0xb0, 0xf1, 0xb0, 0xf8, - 0xb0, 0xf1, 0xb1, 0xf8, 0xb1, 0xf1, 0xb1, 0xf8, 0xb1, 0xf1, 0xb2, 0xf8, - 0xb2, 0xf1, 0xb2, 0xf8, 0xb2, 0xf1, 0xb2, 0xf8, 0xb2, 0xf1, 0xb3, 0xf8, - 0xb3, 0xf1, 0xb2, 0xf8, 0xb3, 0xf1, 0xb3, 0xf8, 0xb3, 0xf1, 0xb2, 0xf8, - 0xb4, 0xf1, 0xb3, 0xf8, 0xb4, 0xf1, 0xb4, 0xf8, 0xb4, 0xf2, 0xb5, 0xf8, - 0xb5, 0xf2, 0xb5, 0xf8, 0xb5, 0xf2, 0xb5, 0xf8, 0xb5, 0xf2, 0xb6, 0xf8, - 0xb6, 0xf2, 0xb6, 0xf8, 0xb6, 0xf2, 0xb6, 0xf8, 0xb6, 0xf2, 0xb6, 0xf8, - 0xb7, 0xf2, 0xb6, 0xf8, 0xb7, 0xf2, 0xb6, 0xf8, 0xb7, 0xf2, 0xb6, 0xf8, - 0xb8, 0xf2, 0xb8, 0xf8, 0xb8, 0xf3, 0xb8, 0xf8, 0xb8, 0xf3, 0xb9, 0xf8, - 0xb9, 0xf3, 0xb9, 0xf8, 0xb9, 0xf3, 0xb9, 0xf8, 0xb9, 0xf3, 0xba, 0xf8, - 0xba, 0xf3, 0xba, 0xf8, 0xba, 0xf3, 0xba, 0xf8, 0xba, 0xf3, 0xba, 0xf8, - 0xbb, 0xf3, 0xba, 0xf8, 0xbb, 0xf3, 0xba, 0xf8, 0xbb, 0xf3, 0xbc, 0xf8, - 0xbc, 0xf4, 0xbc, 0xf8, 0xbc, 0xf4, 0xbc, 0xf8, 0xbc, 0xf4, 0xbd, 0xf8, - 0xbd, 0xf4, 0xbd, 0xf8, 0xbd, 0xf4, 0xbd, 0xf8, 0xbd, 0xf4, 0xbe, 0xf8, - 0xbe, 0xf4, 0xbd, 0xf8, 0xbe, 0xf4, 0xbe, 0xf8, 0xbe, 0xf4, 0xbd, 0xf8, - 0xbf, 0xf4, 0xbe, 0xf8, 0xbf, 0xf4, 0xbd, 0xf8, 0xbf, 0xf4, 0xbe, 0xf8, - 0xc0, 0xf4, 0xc0, 0xf8, 0xc0, 0xf5, 0xc0, 0xf8, 0xc0, 0xf5, 0xc1, 0xf8, - 0xc1, 0xf5, 0xc1, 0xf8, 0xc1, 0xf5, 0xc1, 0xf8, 0xc1, 0xf5, 0xc1, 0xf8, - 0xc1, 0xf5, 0xc1, 0xf8, 0xc2, 0xf5, 0xc1, 0xf8, 0xc2, 0xf5, 0xc1, 0xf8, - 0xc2, 0xf5, 0xc1, 0xf8, 0xc3, 0xf5, 0xc1, 0xf8, 0xc3, 0xf5, 0xc3, 0xf8, - 0xc3, 0xf6, 0xc4, 0xf8, 0xc4, 0xf6, 0xc4, 0xf8, 0xc4, 0xf6, 0xc4, 0xf8, - 0xc4, 0xf6, 0xc5, 0xf8, 0xc5, 0xf6, 0xc4, 0xf8, 0xc5, 0xf6, 0xc5, 0xf8, - 0xc5, 0xf6, 0xc4, 0xf8, 0xc6, 0xf6, 0xca, 0xf8, 0xc6, 0xf0, 0xca, 0xf8, - 0xc6, 0xef, 0xca, 0xf8, 0xc6, 0xf0, 0xca, 0xf8, 0xc7, 0xef, 0xca, 0xf8, - 0xc7, 0xf0, 0xca, 0xf8, 0xc7, 0xef, 0xca, 0xf8, 0xc8, 0xf0, 0xca, 0xf8, - 0xc8, 0xef, 0xca, 0xf8, 0xc8, 0xf0, 0xca, 0xf8, 0xc9, 0xef, 0xca, 0xf8, - 0xc9, 0xf0, 0xca, 0xf8, 0xc9, 0xef, 0xca, 0xf8, 0xc9, 0xf0, 0xca, 0xf8, - 0xca, 0xef, 0xcb, 0xf8, 0xca, 0xef, 0xca, 0xf8, 0xca, 0xef, 0xcb, 0xf8, - 0xca, 0xef, 0xcb, 0xf8, 0xca, 0xef, 0xcb, 0xf8, 0xca, 0xef, 0xcc, 0xf7, - 0xca, 0xef, 0xcc, 0xf8, 0xca, 0xef, 0xcc, 0xf7, 0xca, 0xef, 0xcc, 0xf8, - 0xca, 0xef, 0xcd, 0xf7, 0xca, 0xef, 0xcd, 0xf8, 0xca, 0xef, 0xcd, 0xf7, - 0xca, 0xef, 0xce, 0xf8, 0xca, 0xef, 0xce, 0xf7, 0xca, 0xef, 0xce, 0xf8, - 0xca, 0xef, 0xce, 0xf7, 0xca, 0xef, 0xcf, 0xf8, 0xca, 0xef, 0xcf, 0xf7, - 0xca, 0xef, 0xcf, 0xfc, 0xce, 0xef, 0xd0, 0xfc, 0xce, 0xef, 0xd0, 0xfc, - 0xce, 0xef, 0xd0, 0xfc, 0xce, 0xef, 0xd0, 0xfc, 0xce, 0xef, 0xd1, 0xfc, - 0xd1, 0xef, 0xd1, 0xfc, 0xd1, 0xef, 0xd1, 0xfc, 0xd1, 0xef, 0xd2, 0xfc, - 0xd1, 0xef, 0xd2, 0xfc, 0xd1, 0xef, 0xd2, 0xfc, 0xd1, 0xef, 0xd2, 0xfc, - 0xd1, 0xef, 0xd3, 0xfc, 0xd1, 0xef, 0xd3, 0xfc, 0xd1, 0xef, 0xd3, 0xfc, - 0xd1, 0xef, 0xd4, 0xfc, 0xd4, 0xef, 0xd4, 0xfc, 0xd4, 0xef, 0xd4, 0xfc, - 0xd4, 0xef, 0xd4, 0xfc, 0xd4, 0xef, 0xd5, 0xfc, 0xd4, 0xef, 0xd5, 0xfc, - 0xd4, 0xef, 0xd5, 0xfc, 0xd4, 0xef, 0xd6, 0xfc, 0xd4, 0xef, 0xd6, 0xfc, - 0xd4, 0xef, 0xd6, 0xfc, 0xd4, 0xef, 0xd6, 0xfc, 0xd4, 0xef, 0xd7, 0xfd, - 0xd7, 0xef, 0xd7, 0xfd, 0xd7, 0xef, 0xd7, 0xfd, 0xd7, 0xef, 0xd7, 0xfd, - 0xd7, 0xef, 0xd8, 0xfd, 0xd7, 0xef, 0xd8, 0xfd, 0xd7, 0xef, 0xd8, 0xfd, - 0xd7, 0xef, 0xd9, 0xfd, 0xd7, 0xef, 0xd9, 0xfd, 0xd7, 0xef, 0xd9, 0xfd, - 0xd7, 0xef, 0xd9, 0xfd, 0xd7, 0xef, 0xda, 0xfd, 0xda, 0xef, 0xda, 0xfd, - 0xda, 0xef, 0xda, 0xfd, 0xda, 0xef, 0xda, 0xfd, 0xda, 0xef, 0xdb, 0xfd, - 0xda, 0xef, 0xdb, 0xfd, 0xda, 0xef, 0xdb, 0xfd, 0xda, 0xef, 0xdb, 0xfd, - 0xda, 0xef, 0xdc, 0xfd, 0xda, 0xef, 0xdc, 0xfd, 0xda, 0xef, 0xdc, 0xfd, - 0xda, 0xef, 0xdd, 0xfd, 0xda, 0xef, 0xdd, 0xf9, 0xe3, 0xef, 0xdd, 0xf8, - 0xe3, 0xef, 0xdd, 0xf9, 0xe3, 0xef, 0xde, 0xf8, 0xe3, 0xef, 0xde, 0xf9, - 0xe3, 0xef, 0xde, 0xf8, 0xe3, 0xef, 0xde, 0xf9, 0xe3, 0xef, 0xdf, 0xf8, - 0xe3, 0xef, 0xdf, 0xf9, 0xe3, 0xef, 0xdf, 0xf8, 0xe3, 0xef, 0xdf, 0xf9, - 0xe3, 0xef, 0xe0, 0xf8, 0xe3, 0xef, 0xe0, 0xf9, 0xe3, 0xef, 0xe0, 0xf8, - 0xe3, 0xef, 0xe1, 0xf9, 0xe3, 0xef, 0xe1, 0xf8, 0xe3, 0xef, 0xe1, 0xf9, - 0xe3, 0xef, 0xe1, 0xf8, 0xe3, 0xef, 0xe2, 0xf8, 0xe4, 0xef, 0xe2, 0xf8, - 0xe3, 0xef, 0xe2, 0xf8, 0xe4, 0xef, 0xe2, 0xf8, 0xe3, 0xef, 0xe3, 0xf8, - 0xe4, 0xef, 0xe3, 0xf8, 0xe3, 0xef, 0xe3, 0xf8, 0xe4, 0xef, 0xe3, 0xf8, - 0xe3, 0xef, 0xe3, 0xf8, 0xe4, 0xef, 0xe3, 0xf8, 0xe4, 0xef, 0xe3, 0xf8, - 0xe4, 0xef, 0xe3, 0xf8, 0xe4, 0xef, 0xe6, 0xf8, 0xe5, 0xef, 0xe5, 0xf8, - 0xe5, 0xef, 0xe6, 0xf8, 0xe5, 0xef, 0xe5, 0xf8, 0xe5, 0xef, 0xe6, 0xf8, - 0xe5, 0xef, 0xe6, 0xf8, 0xe5, 0xef, 0xe6, 0xf8, 0xe5, 0xef, 0xe6, 0xf8, - 0xe5, 0xef, 0xe7, 0xf8, 0xe5, 0xef, 0xe7, 0xf8, 0xe5, 0xef, 0xe7, 0xf8, - 0xe5, 0xef, 0xe7, 0xf8, 0xe5, 0xef, 0xe8, 0xf8, 0xe5, 0xef, 0xe8, 0xf8, - 0xe5, 0xef, 0xe8, 0xf8, 0xe5, 0xef, 0xe8, 0xf8, 0xe5, 0xef, 0xe9, 0xf8, - 0xe5, 0xef, 0xe9, 0xf8, 0xe5, 0xef, 0xe9, 0xf8, 0xe5, 0xef, 0xe9, 0xf8, - 0xe5, 0xef, 0xea, 0xf6, 0xe6, 0xef, 0xea, 0xf8, 0xe5, 0xef, 0xea, 0xf6, - 0xe6, 0xef, 0xea, 0xf8, 0xef, 0xef, 0xeb, 0xf9, 0xef, 0xef, 0xeb, 0xf8, - 0xef, 0xef, 0xeb, 0xf9, 0xef, 0xef, 0xeb, 0xf8, 0xef, 0xef, 0xec, 0xf9, - 0xef, 0xef, 0xec, 0xf8, 0xef, 0xef, 0xec, 0xf9, 0xef, 0xef, 0xec, 0xf8, - 0xef, 0xef, 0xec, 0xf9, 0xef, 0xef, 0xed, 0xf8, 0xef, 0xef, 0xed, 0xf9, - 0xef, 0xef, 0xed, 0xf8, 0xef, 0xef, 0xed, 0xf9, 0xef, 0xef, 0xee, 0xf8, - 0xef, 0xef, 0xee, 0xf9, 0xef, 0xef, 0xee, 0xf8, 0xef, 0xef, 0xee, 0xf8, - 0xef, 0xef, 0xef, 0xf8, 0xef, 0xef, 0xef, 0xf8, 0xef, 0xef, 0xef, 0xf8, - 0xef, 0xef, 0xef, 0xf8, 0xef, 0xef, 0xf0, 0xf8, 0xef, 0xef, 0xf0, 0xf8, - 0xef, 0xef, 0xf0, 0xf8, 0xef, 0xef, 0xf0, 0xf8, 0xef, 0xef, 0xf1, 0xf8, - 0xef, 0xef, 0xf1, 0xf8, 0xef, 0xef, 0xf1, 0xf8, 0xef, 0xef, 0xf1, 0xf8, - 0xef, 0xef, 0xf2, 0xf7, 0xf0, 0xef, 0xf2, 0xf8, 0xef, 0xef, 0xf2, 0xf7, - 0xf0, 0xef, 0xf2, 0xf8, 0xef, 0xef, 0xf2, 0xf7, 0xf0, 0xef, 0xf3, 0xf8, - 0xef, 0xef, 0xf3, 0xf7, 0xf0, 0xef, 0xf3, 0xf8, 0xef, 0xef, 0xf3, 0xf7, - 0xf0, 0xef, 0xf4, 0xf8, 0xef, 0xef, 0xf4, 0xf7, 0xf0, 0xef, 0xf4, 0xf8, - 0xef, 0xef, 0xf4, 0xf7, 0xf0, 0xef, 0xf5, 0xf8, 0xef, 0xef, 0xf5, 0xf7, - 0xf0, 0xef, 0xf5, 0xf8, 0xef, 0xef, 0xf5, 0xf7, 0xf0, 0xef, 0xf5, 0xf8, - 0xef, 0xef, 0xf6, 0xf7, 0xf0, 0xef, 0xf6, 0xf8, 0xef, 0xef, 0xf6, 0xf7, - 0xf0, 0xef, 0xf6, 0xf8, 0xef, 0xef, 0xf7, 0xf7, 0xf0, 0xef, 0xf7, 0xf8, - 0xef, 0xef, 0xf7, 0xf7, 0xf0, 0xef, 0xf7, 0xf8, 0xef, 0xef, 0xf8, 0xf7, - 0xf0, 0xef, 0xf8, 0xf8, 0xef, 0xef, 0xf8, 0xf7, 0xf0, 0xef, 0xf8, 0xf5, - 0xf0, 0xef, 0xf8, 0xf7, 0xf0, 0xef, 0xf9, 0xf5, 0xf0, 0xef, 0xf9, 0xf7, - 0xf0, 0xef, 0xf9, 0xf5, 0xf0, 0xef, 0xf9, 0xf7, 0xf0, 0xef, 0xfa, 0xf5, - 0xf0, 0xef, 0xfa, 0xf7, 0xf0, 0xef, 0xfa, 0xf5, 0xf0, 0xef, 0xfa, 0xf7, - 0xf0, 0xef, 0xfa, 0xf5, 0xf0, 0xef, 0xfb, 0xf7, 0xf0, 0xef, 0xfb, 0xf5, - 0xf0, 0xef, 0xfb, 0xf7, 0xf0, 0xef, 0xfb, 0xf5, 0xf0, 0xef, 0xfc, 0xf7, - 0xf0, 0xef, 0xfc, 0xf5, 0xf0, 0xef, 0xfc, 0xf7, 0xf0, 0xef, 0xfc, 0xf5, - 0xf0, 0xef, 0xfc, 0xf7, 0xf0, 0xef, 0xfd, 0xf5, 0xf0, 0xef, 0xfd, 0xf7, - 0xf0, 0xef, 0xfd, 0xf5, 0xf0, 0xef, 0xfd, 0xf7, 0xf0, 0xef, 0xfe, 0xf5, - 0xf0, 0xef, 0xfe, 0xf7, 0xf0, 0xef, 0xfe, 0xf5, 0xf0, 0xef, 0xfe, 0xf7, - 0xf0, 0xef, 0xfe, 0xf5, 0xf0, 0xef, 0xff, 0xf7, 0xf0, 0xef, 0xff, 0xf5, - 0xf0, 0xef, 0x03, 0xf4, 0x83, 0xf0, 0x0a, 0xf4, 0x83, 0xf0, 0x0f, 0xf4, - 0x83, 0xf0, 0x14, 0xf4, 0x83, 0xf0, 0x17, 0xf4, 0x83, 0xf0, 0x1b, 0xf4, - 0x83, 0xf0, 0x1e, 0xf4, 0x83, 0xf0, 0x20, 0xf4, 0x83, 0xf0, 0x23, 0xf4, - 0x83, 0xf0, 0x25, 0xf4, 0x83, 0xf0, 0x27, 0xf4, 0x83, 0xf0, 0x29, 0xf4, - 0x83, 0xf0, 0x2b, 0xf4, 0x83, 0xf0, 0x2d, 0xf4, 0x83, 0xf0, 0x2f, 0xf4, - 0x83, 0xf0, 0x31, 0xf4, 0x83, 0xf0, 0x32, 0xf4, 0x83, 0xf0, 0x34, 0xf4, - 0x83, 0xf0, 0x35, 0xf4, 0x83, 0xf0, 0x37, 0xf4, 0x83, 0xf0, 0x38, 0xf4, - 0x83, 0xf0, 0x3a, 0xf4, 0x83, 0xf0, 0x3b, 0xf4, 0x83, 0xf0, 0x3c, 0xf4, - 0x83, 0xf0, 0x3e, 0xf4, 0x83, 0xf0, 0x3f, 0xf4, 0x83, 0xf0, 0x40, 0xf4, - 0x83, 0xf0, 0x42, 0xf4, 0x83, 0xf0, 0x43, 0xf4, 0x83, 0xf0, 0x44, 0xf4, - 0x83, 0xf0, 0x45, 0xf4, 0x83, 0xf0, 0x46, 0xf4, 0x83, 0xf0, 0x47, 0xf4, - 0x83, 0xf0, 0x48, 0xf4, 0x83, 0xf0, 0x49, 0xf4, 0x83, 0xf0, 0x4a, 0xf4, - 0x83, 0xf0, 0x4b, 0xf4, 0x83, 0xf0, 0x4c, 0xf4, 0x83, 0xf0, 0x4d, 0xf4, - 0x83, 0xf0, 0x4e, 0xf4, 0x83, 0xf0, 0x4f, 0xf4, 0x83, 0xf0, 0x50, 0xf4, - 0x83, 0xf0, 0x51, 0xf4, 0x83, 0xf0, 0x52, 0xf4, 0x83, 0xf0, 0x53, 0xf4, - 0x83, 0xf0, 0x54, 0xf4, 0x83, 0xf0, 0x55, 0xf4, 0x83, 0xf0, 0x56, 0xf4, - 0x83, 0xf0, 0x57, 0xf4, 0x83, 0xf0, 0x58, 0xf4, 0x83, 0xf0, 0x58, 0xf4, - 0x83, 0xf0, 0x59, 0xf4, 0x83, 0xf0, 0x5a, 0xf4, 0x83, 0xf0, 0x5b, 0xf4, - 0x83, 0xf0, 0x5c, 0xf4, 0x83, 0xf0, 0x5d, 0xf4, 0x83, 0xf0, 0x5d, 0xf4, - 0x83, 0xf0, 0x5e, 0xf4, 0x83, 0xf0, 0x5f, 0xf4, 0x83, 0xf0, 0x60, 0xf4, - 0x83, 0xf0, 0x60, 0xf4, 0x83, 0xf0, 0x61, 0xf4, 0x83, 0xf0, 0x62, 0xf4, - 0x83, 0xf0, 0x63, 0xf4, 0x83, 0xf0, 0x63, 0xf4, 0x83, 0xf0, 0x64, 0xf4, - 0x83, 0xf0, 0x65, 0xf4, 0x83, 0xf0, 0x66, 0xf4, 0x83, 0xf0, 0x66, 0xf4, - 0x83, 0xf0, 0x67, 0xf4, 0x83, 0xf0, 0x68, 0xf4, 0x83, 0xf0, 0x68, 0xf4, - 0x83, 0xf0, 0x69, 0xf4, 0x83, 0xf0, 0x6a, 0xf4, 0x83, 0xf0, 0x6a, 0xf4, - 0x83, 0xf0, 0x6b, 0xf4, 0x83, 0xf0, 0x6c, 0xf4, 0x83, 0xf0, 0x6c, 0xf4, - 0x83, 0xf0, 0x6d, 0xf4, 0x83, 0xf0, 0x6e, 0xf4, 0x83, 0xf0, 0x6e, 0xf4, - 0x83, 0xf0, 0x6f, 0xf4, 0x83, 0xf0, 0x70, 0xf4, 0x83, 0xf0, 0x70, 0xf4, - 0x83, 0xf0, 0x71, 0xf4, 0x83, 0xf0, 0x72, 0xf4, 0x83, 0xf0, 0x72, 0xf4, - 0x83, 0xf0, 0x73, 0xf4, 0x83, 0xf0, 0x73, 0xf4, 0x83, 0xf0, 0x74, 0xf4, - 0x83, 0xf0, 0x75, 0xf4, 0x83, 0xf0, 0x75, 0xf4, 0x83, 0xf0, 0x76, 0xf4, - 0x83, 0xf0, 0x76, 0xf4, 0x83, 0xf0, 0x77, 0xf4, 0x83, 0xf0, 0x78, 0xf4, - 0x83, 0xf0, 0x78, 0xf4, 0x83, 0xf0, 0x79, 0xf4, 0x83, 0xf0, 0x79, 0xf4, - 0x83, 0xf0, 0x7a, 0xf4, 0x83, 0xf0, 0x7a, 0xf4, 0x83, 0xf0, 0x7b, 0xf4, - 0x83, 0xf0, 0x7c, 0xf4, 0x83, 0xf0, 0x7c, 0xf4, 0x83, 0xf0, 0x7d, 0xf4, - 0x83, 0xf0, 0x7d, 0xf4, 0x83, 0xf0, 0x7e, 0xf4, 0x83, 0xf0, 0x7e, 0xf4, - 0x83, 0xf0, 0x7f, 0xf4, 0x83, 0xf0, 0x7f, 0xf4, 0x83, 0xf0, 0x80, 0xf4, - 0x83, 0xf0, 0x81, 0xf4, 0x83, 0xf0, 0x81, 0xf4, 0x83, 0xf0, 0x82, 0xf4, - 0x83, 0xf0, 0x82, 0xf4, 0x83, 0xf0, 0x83, 0xf4, 0x83, 0xf0, 0x83, 0xf4, - 0x83, 0xf0, 0x84, 0xf5, 0x88, 0xf0, 0x84, 0xf5, 0x88, 0xf0, 0x85, 0xf5, - 0x88, 0xf0, 0x85, 0xf5, 0x88, 0xf0, 0x86, 0xf5, 0x88, 0xf0, 0x86, 0xf5, - 0x88, 0xf0, 0x87, 0xf5, 0x88, 0xf0, 0x87, 0xf5, 0x88, 0xf0, 0x88, 0xf5, - 0x88, 0xf0, 0x88, 0xf5, 0x88, 0xf0, 0x89, 0xf5, 0x89, 0xf0, 0x89, 0xf5, - 0x89, 0xf0, 0x8a, 0xf5, 0x8a, 0xf0, 0x8a, 0xf5, 0x8d, 0xf0, 0x8b, 0xf5, - 0x8e, 0xf0, 0x8b, 0xf5, 0x8d, 0xf0, 0x8c, 0xf5, 0x8e, 0xf0, 0x8c, 0xf5, - 0x8d, 0xf0, 0x8d, 0xf5, 0x8e, 0xf0, 0x8d, 0xf5, 0x8d, 0xf0, 0x8e, 0xf5, - 0x8e, 0xf0, 0x8e, 0xf5, 0x8e, 0xf0, 0x8e, 0xf5, 0x8e, 0xf0, 0x8f, 0xf5, - 0x8f, 0xf0, 0x8f, 0xf5, 0x92, 0xf0, 0x90, 0xf5, 0x93, 0xf0, 0x90, 0xf5, - 0x92, 0xf0, 0x91, 0xf5, 0x93, 0xf0, 0x91, 0xf5, 0x92, 0xf0, 0x92, 0xf5, - 0x93, 0xf0, 0x92, 0xf5, 0x92, 0xf0, 0x93, 0xf5, 0x93, 0xf0, 0x93, 0xf5, - 0x93, 0xf0, 0x94, 0xf5, 0x94, 0xf0, 0x94, 0xf5, 0x94, 0xf0, 0x94, 0xf6, - 0x97, 0xf0, 0x95, 0xf6, 0x98, 0xf0, 0x95, 0xf6, 0x97, 0xf0, 0x96, 0xf6, - 0x98, 0xf0, 0x96, 0xf6, 0x97, 0xf0, 0x97, 0xf6, 0x98, 0xf0, 0x97, 0xf6, - 0x97, 0xf0, 0x98, 0xf6, 0x98, 0xf0, 0x98, 0xf6, 0x98, 0xf0, 0x98, 0xf6, - 0x98, 0xf0, 0x99, 0xf6, 0x99, 0xf0, 0x99, 0xf6, 0x99, 0xf0, 0x9a, 0xf6, - 0x9a, 0xf0, 0x9a, 0xf6, 0x9c, 0xf0, 0x9a, 0xf6, 0x9c, 0xf0, 0x9b, 0xf6, - 0x9c, 0xf0, 0x9b, 0xf6, 0x9c, 0xf0, 0x9c, 0xf6, 0x9c, 0xf0, 0x9c, 0xf6, - 0x9c, 0xf0, 0x9d, 0xf6, 0x9d, 0xf0, 0x9d, 0xf6, 0x9d, 0xf0, 0x9d, 0xf6, - 0x9d, 0xf0, 0x9e, 0xf6, 0x9e, 0xf0, 0x9e, 0xf6, 0x9e, 0xf0, 0x9f, 0xf7, - 0xa0, 0xf0, 0x9f, 0xf7, 0xa1, 0xf0, 0x9f, 0xf7, 0xa0, 0xf0, 0xa0, 0xf7, - 0xa1, 0xf0, 0xa0, 0xf7, 0xa0, 0xf0, 0xa1, 0xf7, 0xa1, 0xf0, 0xa1, 0xf7, - 0xa1, 0xf0, 0xa1, 0xf7, 0xa1, 0xf0, 0xa2, 0xf7, 0xa2, 0xf0, 0xa2, 0xf7, - 0xa2, 0xf0, 0xa3, 0xf7, 0xa3, 0xf0, 0xa3, 0xf7, 0xa5, 0xf0, 0xa3, 0xf7, - 0xa5, 0xf0, 0xa4, 0xf7, 0xa5, 0xf0, 0xa4, 0xf7, 0xa5, 0xf0, 0xa5, 0xf7, - 0xa5, 0xf0, 0xa5, 0xf7, 0xa5, 0xf0, 0xa5, 0xf7, 0xa5, 0xf0, 0xa6, 0xf7, - 0xa6, 0xf0, 0xa6, 0xf7, 0xa6, 0xf0, 0xa6, 0xf7, 0xa6, 0xf0, 0xa7, 0xf7, - 0xa7, 0xf0, 0xa7, 0xf7, 0xa7, 0xf0, 0xa8, 0xf7, 0xa8, 0xf0, 0xa8, 0xf8, - 0xa9, 0xf0, 0xa8, 0xf8, 0xa9, 0xf0, 0xa9, 0xf8, 0xa9, 0xf0, 0xa9, 0xf8, - 0xa9, 0xf0, 0xaa, 0xf8, 0xaa, 0xf0, 0xaa, 0xf8, 0xaa, 0xf0, 0xaa, 0xf8, - 0xaa, 0xf0, 0xab, 0xf8, 0xab, 0xf0, 0xab, 0xf8, 0xab, 0xf0, 0xab, 0xf8, - 0xab, 0xf0, 0xac, 0xf8, 0xac, 0xf0, 0xac, 0xf8, 0xac, 0xf0, 0xac, 0xf8, - 0xac, 0xf0, 0xad, 0xf8, 0xad, 0xf1, 0xad, 0xf8, 0xad, 0xf1, 0xae, 0xf8, - 0xae, 0xf1, 0xae, 0xf8, 0xae, 0xf1, 0xae, 0xf8, 0xae, 0xf1, 0xaf, 0xf8, - 0xaf, 0xf1, 0xaf, 0xf8, 0xaf, 0xf1, 0xaf, 0xf8, 0xaf, 0xf1, 0xb0, 0xf8, - 0xb0, 0xf1, 0xb0, 0xf8, 0xb0, 0xf1, 0xb0, 0xf8, 0xb0, 0xf1, 0xb0, 0xf8, - 0xb1, 0xf1, 0xb0, 0xf8, 0xb1, 0xf1, 0xb2, 0xf8, 0xb2, 0xf2, 0xb2, 0xf8, - 0xb2, 0xf2, 0xb2, 0xf8, 0xb2, 0xf2, 0xb3, 0xf8, 0xb3, 0xf2, 0xb3, 0xf8, - 0xb3, 0xf2, 0xb3, 0xf8, 0xb3, 0xf2, 0xb4, 0xf8, 0xb4, 0xf2, 0xb4, 0xf8, - 0xb4, 0xf2, 0xb4, 0xf8, 0xb4, 0xf2, 0xb4, 0xf8, 0xb5, 0xf2, 0xb4, 0xf8, - 0xb5, 0xf2, 0xb4, 0xf8, 0xb5, 0xf2, 0xb4, 0xf8, 0xb6, 0xf2, 0xb6, 0xf8, - 0xb6, 0xf3, 0xb6, 0xf8, 0xb6, 0xf3, 0xb7, 0xf8, 0xb7, 0xf3, 0xb7, 0xf8, - 0xb7, 0xf3, 0xb7, 0xf8, 0xb7, 0xf3, 0xb8, 0xf8, 0xb8, 0xf3, 0xb8, 0xf8, - 0xb8, 0xf3, 0xb8, 0xf8, 0xb8, 0xf3, 0xb8, 0xf8, 0xb9, 0xf3, 0xb8, 0xf8, - 0xb9, 0xf3, 0xb8, 0xf8, 0xb9, 0xf3, 0xba, 0xf8, 0xba, 0xf4, 0xba, 0xf8, - 0xba, 0xf4, 0xba, 0xf8, 0xba, 0xf4, 0xbb, 0xf8, 0xbb, 0xf4, 0xbb, 0xf8, - 0xbb, 0xf4, 0xbb, 0xf8, 0xbb, 0xf4, 0xbc, 0xf8, 0xbc, 0xf4, 0xbb, 0xf8, - 0xbc, 0xf4, 0xbc, 0xf8, 0xbc, 0xf4, 0xbb, 0xf8, 0xbd, 0xf4, 0xbc, 0xf8, - 0xbd, 0xf4, 0xbd, 0xf8, 0xbd, 0xf5, 0xbe, 0xf8, 0xbe, 0xf5, 0xbe, 0xf8, - 0xbe, 0xf5, 0xbe, 0xf8, 0xbe, 0xf5, 0xbf, 0xf8, 0xbf, 0xf5, 0xbf, 0xf8, - 0xbf, 0xf5, 0xbf, 0xf8, 0xbf, 0xf5, 0xbf, 0xf8, 0xc0, 0xf5, 0xbf, 0xf8, - 0xc0, 0xf5, 0xbf, 0xf8, 0xc0, 0xf5, 0xbf, 0xf8, 0xc1, 0xf5, 0xbf, 0xf8, - 0xc1, 0xf5, 0xbf, 0xf8, 0xc1, 0xf5, 0xc1, 0xf8, 0xc1, 0xf6, 0xc2, 0xf8, - 0xc2, 0xf6, 0xc2, 0xf8, 0xc2, 0xf6, 0xc2, 0xf8, 0xc2, 0xf6, 0xc3, 0xf8, - 0xc3, 0xf6, 0xc2, 0xf8, 0xc3, 0xf6, 0xc3, 0xf8, 0xc3, 0xf6, 0xc2, 0xf8, - 0xc4, 0xf6, 0xc3, 0xf8, 0xc4, 0xf6, 0xc2, 0xf8, 0xc4, 0xf6, 0xc3, 0xf8, - 0xc5, 0xf6, 0xc5, 0xf8, 0xc5, 0xf7, 0xc5, 0xf8, 0xc5, 0xf7, 0xc6, 0xf8, - 0xc6, 0xf7, 0xc6, 0xf8, 0xc6, 0xf7, 0xc6, 0xf8, 0xc6, 0xf7, 0xca, 0xf8, - 0xc6, 0xf1, 0xca, 0xf8, 0xc7, 0xf0, 0xca, 0xf8, 0xc7, 0xf1, 0xca, 0xf8, - 0xc7, 0xf0, 0xca, 0xf8, 0xc8, 0xf1, 0xca, 0xf8, 0xc8, 0xf0, 0xca, 0xf8, - 0xc8, 0xf1, 0xca, 0xf8, 0xc9, 0xf0, 0xca, 0xf8, 0xc9, 0xf1, 0xca, 0xf8, - 0xc9, 0xf0, 0xca, 0xf8, 0xc9, 0xf1, 0xca, 0xf8, 0xca, 0xf0, 0xcb, 0xf8, - 0xca, 0xf0, 0xca, 0xf8, 0xca, 0xf0, 0xcb, 0xf8, 0xca, 0xf0, 0xcb, 0xf8, - 0xca, 0xf0, 0xcb, 0xf8, 0xca, 0xf0, 0xcc, 0xf8, 0xca, 0xf0, 0xcc, 0xf8, - 0xca, 0xf0, 0xcc, 0xf8, 0xca, 0xf0, 0xcc, 0xf8, 0xca, 0xf0, 0xcd, 0xf7, - 0xca, 0xf0, 0xcd, 0xf8, 0xca, 0xf0, 0xcd, 0xf7, 0xca, 0xf0, 0xce, 0xf8, - 0xca, 0xf0, 0xce, 0xf7, 0xca, 0xf0, 0xce, 0xf8, 0xca, 0xf0, 0xce, 0xf7, - 0xca, 0xf0, 0xcf, 0xf8, 0xca, 0xf0, 0xcf, 0xfc, 0xcf, 0xf0, 0xcf, 0xfc, - 0xcf, 0xf0, 0xd0, 0xfc, 0xd0, 0xf0, 0xd0, 0xfc, 0xcf, 0xf0, 0xd0, 0xfc, - 0xd0, 0xf0, 0xd0, 0xfc, 0xcf, 0xf0, 0xd1, 0xfc, 0xd0, 0xf0, 0xd1, 0xfc, - 0xcf, 0xf0, 0xd1, 0xfc, 0xd0, 0xf0, 0xd2, 0xfc, 0xcf, 0xf0, 0xd2, 0xfc, - 0xd0, 0xf0, 0xd2, 0xfc, 0xd2, 0xf0, 0xd2, 0xfc, 0xd2, 0xf0, 0xd3, 0xfc, - 0xd3, 0xf0, 0xd3, 0xfc, 0xd2, 0xf0, 0xd3, 0xfc, 0xd3, 0xf0, 0xd4, 0xfc, - 0xd2, 0xf0, 0xd4, 0xfc, 0xd3, 0xf0, 0xd4, 0xfc, 0xd2, 0xf0, 0xd4, 0xfc, - 0xd3, 0xf0, 0xd5, 0xfc, 0xd2, 0xf0, 0xd5, 0xfc, 0xd3, 0xf0, 0xd5, 0xfd, - 0xd5, 0xf0, 0xd6, 0xfd, 0xd6, 0xf0, 0xd6, 0xfd, 0xd6, 0xf0, 0xd6, 0xfd, - 0xd6, 0xf0, 0xd6, 0xfd, 0xd6, 0xf0, 0xd7, 0xfd, 0xd6, 0xf0, 0xd7, 0xfd, - 0xd6, 0xf0, 0xd7, 0xfd, 0xd6, 0xf0, 0xd7, 0xfd, 0xd6, 0xf0, 0xd8, 0xfd, - 0xd6, 0xf0, 0xd8, 0xfd, 0xd6, 0xf0, 0xd8, 0xfd, 0xd8, 0xf0, 0xd9, 0xfd, - 0xd9, 0xf0, 0xd9, 0xfd, 0xd9, 0xf0, 0xd9, 0xfd, 0xd9, 0xf0, 0xd9, 0xfd, - 0xd9, 0xf0, 0xda, 0xfd, 0xd9, 0xf0, 0xda, 0xfd, 0xd9, 0xf0, 0xda, 0xfd, - 0xd9, 0xf0, 0xda, 0xfd, 0xd9, 0xf0, 0xdb, 0xfd, 0xd9, 0xf0, 0xdb, 0xfd, - 0xd9, 0xf0, 0xdb, 0xfe, 0xdb, 0xf0, 0xdb, 0xfe, 0xdb, 0xf0, 0xdc, 0xfe, - 0xdc, 0xf0, 0xdc, 0xfe, 0xdb, 0xf0, 0xdc, 0xfe, 0xdc, 0xf0, 0xdd, 0xfe, - 0xdb, 0xf0, 0xdd, 0xfe, 0xdc, 0xf0, 0xdd, 0xf8, 0xe3, 0xf0, 0xdd, 0xfa, - 0xe3, 0xf0, 0xde, 0xf8, 0xe3, 0xf0, 0xde, 0xfa, 0xe3, 0xf0, 0xde, 0xf8, - 0xe3, 0xf0, 0xde, 0xfa, 0xe3, 0xf0, 0xdf, 0xf8, 0xe3, 0xf0, 0xdf, 0xfa, - 0xe3, 0xf0, 0xdf, 0xf8, 0xe3, 0xf0, 0xdf, 0xfa, 0xe3, 0xf0, 0xe0, 0xf8, - 0xe3, 0xf0, 0xe0, 0xfa, 0xe3, 0xf0, 0xe0, 0xf8, 0xe3, 0xf0, 0xe1, 0xfa, - 0xe3, 0xf0, 0xe1, 0xf8, 0xe3, 0xf0, 0xe1, 0xfa, 0xe3, 0xf0, 0xe1, 0xf8, - 0xe3, 0xf0, 0xe2, 0xf8, 0xe4, 0xf0, 0xe2, 0xf8, 0xe3, 0xf0, 0xe2, 0xf8, - 0xe4, 0xf0, 0xe2, 0xf8, 0xe3, 0xf0, 0xe3, 0xf8, 0xe4, 0xf0, 0xe3, 0xf8, - 0xe3, 0xf0, 0xe3, 0xf8, 0xe4, 0xf0, 0xe3, 0xf8, 0xe3, 0xef, 0xe3, 0xf8, - 0xe4, 0xf0, 0xe3, 0xf8, 0xe4, 0xef, 0xe3, 0xf8, 0xe4, 0xf0, 0xe5, 0xf8, - 0xe4, 0xf0, 0xe6, 0xf8, 0xe5, 0xf0, 0xe5, 0xf8, 0xe5, 0xf0, 0xe6, 0xf8, - 0xe5, 0xf0, 0xe5, 0xf8, 0xe5, 0xf0, 0xe6, 0xf8, 0xe5, 0xf0, 0xe6, 0xf8, - 0xe5, 0xf0, 0xe6, 0xf8, 0xe5, 0xf0, 0xe6, 0xf7, 0xe5, 0xf0, 0xe7, 0xf8, - 0xe5, 0xf0, 0xe7, 0xf7, 0xe5, 0xf0, 0xe7, 0xf8, 0xe5, 0xf0, 0xe7, 0xf7, - 0xe5, 0xf0, 0xe8, 0xf8, 0xe5, 0xf0, 0xe8, 0xf7, 0xe5, 0xf0, 0xe8, 0xf8, - 0xe5, 0xf0, 0xe8, 0xf7, 0xe5, 0xf0, 0xe9, 0xf8, 0xe5, 0xf0, 0xe9, 0xf7, - 0xe5, 0xf0, 0xe9, 0xf8, 0xe5, 0xf0, 0xe9, 0xf7, 0xe5, 0xf0, 0xea, 0xf8, - 0xe5, 0xf0, 0xea, 0xf7, 0xe5, 0xf0, 0xea, 0xf8, 0xe5, 0xf0, 0xea, 0xfa, - 0xef, 0xf0, 0xeb, 0xf9, 0xef, 0xf0, 0xeb, 0xfa, 0xef, 0xf0, 0xeb, 0xf9, - 0xef, 0xf0, 0xeb, 0xf8, 0xef, 0xf0, 0xec, 0xf9, 0xef, 0xf0, 0xec, 0xf8, - 0xef, 0xf0, 0xec, 0xf9, 0xef, 0xf0, 0xec, 0xf8, 0xef, 0xf0, 0xec, 0xf9, - 0xef, 0xf0, 0xed, 0xf8, 0xef, 0xf0, 0xed, 0xf9, 0xef, 0xf0, 0xed, 0xf8, - 0xef, 0xf0, 0xed, 0xf9, 0xef, 0xf0, 0xee, 0xf8, 0xef, 0xf0, 0xee, 0xf9, - 0xef, 0xf0, 0xee, 0xf8, 0xef, 0xf0, 0xee, 0xf9, 0xef, 0xf0, 0xef, 0xf8, - 0xef, 0xf0, 0xef, 0xf9, 0xef, 0xf0, 0xef, 0xf8, 0xef, 0xf0, 0xef, 0xf8, - 0xef, 0xf0, 0xf0, 0xf8, 0xef, 0xf0, 0xf0, 0xf8, 0xef, 0xf0, 0xf0, 0xf8, - 0xef, 0xf0, 0xf0, 0xf8, 0xef, 0xf0, 0xf1, 0xf8, 0xef, 0xf0, 0xf1, 0xf8, - 0xef, 0xf0, 0xf1, 0xf8, 0xef, 0xf0, 0xf1, 0xf8, 0xef, 0xf0, 0xf2, 0xf8, - 0xef, 0xf0, 0xf2, 0xf8, 0xef, 0xf0, 0xf2, 0xf8, 0xef, 0xf0, 0xf2, 0xf8, - 0xef, 0xf0, 0xf2, 0xf8, 0xef, 0xf0, 0xf3, 0xf8, 0xef, 0xf0, 0xf3, 0xf8, - 0xef, 0xf0, 0xf3, 0xf8, 0xef, 0xf0, 0xf3, 0xf6, 0xf0, 0xf0, 0xf4, 0xf8, - 0xef, 0xf0, 0xf4, 0xf6, 0xf0, 0xf0, 0xf4, 0xf8, 0xef, 0xf0, 0xf4, 0xf6, - 0xf0, 0xf0, 0xf5, 0xf8, 0xef, 0xf0, 0xf5, 0xf6, 0xf0, 0xf0, 0xf5, 0xf8, - 0xef, 0xf0, 0xf5, 0xf6, 0xf0, 0xf0, 0xf5, 0xf8, 0xef, 0xf0, 0xf6, 0xf6, - 0xf0, 0xf0, 0xf6, 0xf8, 0xef, 0xf0, 0xf6, 0xf6, 0xf0, 0xf0, 0xf6, 0xf8, - 0xef, 0xf0, 0xf7, 0xf6, 0xf0, 0xf0, 0xf7, 0xf8, 0xef, 0xf0, 0xf7, 0xf6, - 0xf0, 0xf0, 0xf7, 0xf8, 0xef, 0xf0, 0xf8, 0xf6, 0xf0, 0xf0, 0xf8, 0xf8, - 0xef, 0xf0, 0xf8, 0xf6, 0xf0, 0xf0, 0xf8, 0xf8, 0xef, 0xf0, 0xf8, 0xf6, - 0xf0, 0xf0, 0xf9, 0xf8, 0xef, 0xf0, 0xf9, 0xf6, 0xf0, 0xf0, 0xf9, 0xf8, - 0xef, 0xf0, 0xf9, 0xf6, 0xf0, 0xf0, 0xfa, 0xf8, 0xef, 0xf0, 0xfa, 0xf6, - 0xf0, 0xf0, 0xfa, 0xf8, 0xef, 0xf0, 0xfa, 0xf6, 0xf0, 0xf0, 0xfa, 0xf8, - 0xef, 0xf0, 0xfb, 0xf6, 0xf0, 0xf0, 0xfb, 0xf5, 0xf0, 0xf0, 0xfb, 0xf6, - 0xf0, 0xf0, 0xfb, 0xf5, 0xf0, 0xf0, 0xfc, 0xf6, 0xf0, 0xf0, 0xfc, 0xf5, - 0xf0, 0xf0, 0xfc, 0xf6, 0xf0, 0xf0, 0xfc, 0xf5, 0xf0, 0xf0, 0xfc, 0xf6, - 0xf0, 0xf0, 0xfd, 0xf5, 0xf0, 0xf0, 0xfd, 0xf6, 0xf0, 0xf0, 0xfd, 0xf5, - 0xf0, 0xf0, 0xfd, 0xf6, 0xf0, 0xf0, 0xfe, 0xf5, 0xf0, 0xf0, 0xfe, 0xf6, - 0xf0, 0xf0, 0xfe, 0xf5, 0xf0, 0xf0, 0xfe, 0xf6, 0xf0, 0xf0, 0xfe, 0xf5, - 0xf0, 0xf0, 0xff, 0xf6, 0xf0, 0xf0, 0xff, 0xf5, 0xf0, 0xf0, 0x03, 0xf4, - 0x83, 0xf0, 0x0a, 0xf4, 0x83, 0xf0, 0x0f, 0xf4, 0x83, 0xf0, 0x14, 0xf4, - 0x83, 0xf0, 0x17, 0xf4, 0x83, 0xf0, 0x1b, 0xf4, 0x83, 0xf0, 0x1e, 0xf4, - 0x83, 0xf0, 0x20, 0xf4, 0x83, 0xf0, 0x23, 0xf4, 0x83, 0xf0, 0x25, 0xf4, - 0x83, 0xf0, 0x27, 0xf4, 0x83, 0xf0, 0x29, 0xf4, 0x83, 0xf0, 0x2b, 0xf4, - 0x83, 0xf0, 0x2d, 0xf4, 0x83, 0xf0, 0x2f, 0xf4, 0x83, 0xf0, 0x31, 0xf4, - 0x83, 0xf0, 0x32, 0xf4, 0x83, 0xf0, 0x34, 0xf4, 0x83, 0xf0, 0x35, 0xf4, - 0x83, 0xf0, 0x37, 0xf4, 0x83, 0xf0, 0x38, 0xf4, 0x83, 0xf0, 0x3a, 0xf4, - 0x83, 0xf0, 0x3b, 0xf4, 0x83, 0xf0, 0x3c, 0xf4, 0x83, 0xf0, 0x3e, 0xf4, - 0x83, 0xf0, 0x3f, 0xf4, 0x83, 0xf0, 0x40, 0xf4, 0x83, 0xf0, 0x42, 0xf4, - 0x83, 0xf0, 0x43, 0xf4, 0x83, 0xf0, 0x44, 0xf4, 0x83, 0xf0, 0x45, 0xf4, - 0x83, 0xf0, 0x46, 0xf4, 0x83, 0xf0, 0x47, 0xf4, 0x83, 0xf0, 0x48, 0xf4, - 0x83, 0xf0, 0x49, 0xf4, 0x83, 0xf0, 0x4a, 0xf4, 0x83, 0xf0, 0x4b, 0xf4, - 0x83, 0xf0, 0x4c, 0xf4, 0x83, 0xf0, 0x4d, 0xf4, 0x83, 0xf0, 0x4e, 0xf4, - 0x83, 0xf0, 0x4f, 0xf4, 0x83, 0xf0, 0x50, 0xf4, 0x83, 0xf0, 0x51, 0xf4, - 0x83, 0xf0, 0x52, 0xf4, 0x83, 0xf0, 0x53, 0xf4, 0x83, 0xf0, 0x54, 0xf4, - 0x83, 0xf0, 0x55, 0xf4, 0x83, 0xf0, 0x56, 0xf4, 0x83, 0xf0, 0x57, 0xf4, - 0x83, 0xf0, 0x58, 0xf4, 0x83, 0xf0, 0x58, 0xf4, 0x83, 0xf0, 0x59, 0xf4, - 0x83, 0xf0, 0x5a, 0xf4, 0x83, 0xf0, 0x5b, 0xf4, 0x83, 0xf0, 0x5c, 0xf4, - 0x83, 0xf0, 0x5d, 0xf4, 0x83, 0xf0, 0x5d, 0xf4, 0x83, 0xf0, 0x5e, 0xf4, - 0x83, 0xf0, 0x5f, 0xf4, 0x83, 0xf0, 0x60, 0xf4, 0x83, 0xf0, 0x60, 0xf4, - 0x83, 0xf0, 0x61, 0xf4, 0x83, 0xf0, 0x62, 0xf4, 0x83, 0xf0, 0x63, 0xf4, - 0x83, 0xf0, 0x63, 0xf4, 0x83, 0xf0, 0x64, 0xf4, 0x83, 0xf0, 0x65, 0xf4, - 0x83, 0xf0, 0x66, 0xf4, 0x83, 0xf0, 0x66, 0xf4, 0x83, 0xf0, 0x67, 0xf4, - 0x83, 0xf0, 0x68, 0xf4, 0x83, 0xf0, 0x68, 0xf4, 0x83, 0xf0, 0x69, 0xf4, - 0x83, 0xf0, 0x6a, 0xf4, 0x83, 0xf0, 0x6a, 0xf4, 0x83, 0xf0, 0x6b, 0xf4, - 0x83, 0xf0, 0x6c, 0xf4, 0x83, 0xf0, 0x6c, 0xf4, 0x83, 0xf0, 0x6d, 0xf4, - 0x83, 0xf0, 0x6e, 0xf4, 0x83, 0xf0, 0x6e, 0xf4, 0x83, 0xf0, 0x6f, 0xf4, - 0x83, 0xf0, 0x70, 0xf4, 0x83, 0xf0, 0x70, 0xf4, 0x83, 0xf0, 0x71, 0xf4, - 0x83, 0xf0, 0x72, 0xf4, 0x83, 0xf0, 0x72, 0xf4, 0x83, 0xf0, 0x73, 0xf4, - 0x83, 0xf0, 0x73, 0xf4, 0x83, 0xf0, 0x74, 0xf4, 0x83, 0xf0, 0x75, 0xf4, - 0x83, 0xf0, 0x75, 0xf4, 0x83, 0xf0, 0x76, 0xf4, 0x83, 0xf0, 0x76, 0xf4, - 0x83, 0xf0, 0x77, 0xf4, 0x83, 0xf0, 0x78, 0xf4, 0x83, 0xf0, 0x78, 0xf4, - 0x83, 0xf0, 0x79, 0xf4, 0x83, 0xf0, 0x79, 0xf4, 0x83, 0xf0, 0x7a, 0xf4, - 0x83, 0xf0, 0x7a, 0xf4, 0x83, 0xf0, 0x7b, 0xf4, 0x83, 0xf0, 0x7c, 0xf4, - 0x83, 0xf0, 0x7c, 0xf4, 0x83, 0xf0, 0x7d, 0xf4, 0x83, 0xf0, 0x7d, 0xf4, - 0x83, 0xf0, 0x7e, 0xf4, 0x83, 0xf0, 0x7e, 0xf4, 0x83, 0xf0, 0x7f, 0xf4, - 0x83, 0xf0, 0x7f, 0xf4, 0x83, 0xf0, 0x80, 0xf4, 0x85, 0xf0, 0x81, 0xf4, - 0x83, 0xf0, 0x81, 0xf4, 0x85, 0xf0, 0x82, 0xf4, 0x86, 0xf0, 0x82, 0xf4, - 0x85, 0xf0, 0x83, 0xf4, 0x86, 0xf0, 0x83, 0xf4, 0x85, 0xf0, 0x84, 0xf4, - 0x86, 0xf0, 0x84, 0xf4, 0x85, 0xf0, 0x85, 0xf4, 0x86, 0xf0, 0x85, 0xf4, - 0x85, 0xf0, 0x86, 0xf4, 0x86, 0xf0, 0x86, 0xf4, 0x86, 0xf0, 0x87, 0xf5, - 0x8b, 0xf0, 0x87, 0xf5, 0x8b, 0xf0, 0x88, 0xf5, 0x8b, 0xf0, 0x88, 0xf5, - 0x8b, 0xf0, 0x89, 0xf5, 0x8b, 0xf0, 0x89, 0xf5, 0x8b, 0xf0, 0x8a, 0xf5, - 0x8b, 0xf0, 0x8a, 0xf5, 0x8b, 0xf0, 0x8b, 0xf5, 0x8b, 0xf0, 0x8b, 0xf5, - 0x8b, 0xf0, 0x8c, 0xf5, 0x8c, 0xf0, 0x8c, 0xf5, 0x8c, 0xf0, 0x8d, 0xf5, - 0x8d, 0xf0, 0x8d, 0xf5, 0x90, 0xf0, 0x8e, 0xf5, 0x90, 0xf0, 0x8e, 0xf5, - 0x90, 0xf0, 0x8e, 0xf5, 0x90, 0xf0, 0x8f, 0xf5, 0x90, 0xf0, 0x8f, 0xf5, - 0x90, 0xf0, 0x90, 0xf5, 0x90, 0xf0, 0x90, 0xf5, 0x90, 0xf0, 0x91, 0xf5, - 0x91, 0xf0, 0x91, 0xf5, 0x91, 0xf0, 0x92, 0xf5, 0x92, 0xf0, 0x92, 0xf6, - 0x95, 0xf0, 0x93, 0xf6, 0x95, 0xf0, 0x93, 0xf6, 0x95, 0xf0, 0x94, 0xf6, - 0x95, 0xf0, 0x94, 0xf6, 0x95, 0xf0, 0x94, 0xf6, 0x95, 0xf0, 0x95, 0xf6, - 0x95, 0xf0, 0x95, 0xf6, 0x95, 0xf0, 0x96, 0xf6, 0x96, 0xf0, 0x96, 0xf6, - 0x96, 0xf0, 0x97, 0xf6, 0x97, 0xf0, 0x97, 0xf6, 0x9a, 0xf0, 0x98, 0xf6, - 0x9a, 0xf0, 0x98, 0xf6, 0x9a, 0xf0, 0x98, 0xf6, 0x9a, 0xf0, 0x99, 0xf6, - 0x9a, 0xf0, 0x99, 0xf6, 0x9a, 0xf0, 0x9a, 0xf6, 0x9a, 0xf0, 0x9a, 0xf6, - 0x9a, 0xf0, 0x9a, 0xf6, 0x9a, 0xf0, 0x9b, 0xf6, 0x9b, 0xf0, 0x9b, 0xf6, - 0x9b, 0xf0, 0x9c, 0xf6, 0x9c, 0xf0, 0x9c, 0xf6, 0x9c, 0xf0, 0x9d, 0xf7, - 0x9e, 0xf0, 0x9d, 0xf7, 0x9f, 0xf0, 0x9d, 0xf7, 0x9e, 0xf0, 0x9e, 0xf7, - 0x9f, 0xf0, 0x9e, 0xf7, 0x9e, 0xf0, 0x9f, 0xf7, 0x9f, 0xf0, 0x9f, 0xf7, - 0x9f, 0xf0, 0x9f, 0xf7, 0x9f, 0xf0, 0xa0, 0xf7, 0xa0, 0xf0, 0xa0, 0xf7, - 0xa0, 0xf0, 0xa1, 0xf7, 0xa1, 0xf0, 0xa1, 0xf7, 0xa3, 0xf0, 0xa1, 0xf7, - 0xa3, 0xf0, 0xa2, 0xf7, 0xa3, 0xf0, 0xa2, 0xf7, 0xa3, 0xf0, 0xa3, 0xf7, - 0xa3, 0xf0, 0xa3, 0xf7, 0xa3, 0xf0, 0xa3, 0xf7, 0xa3, 0xf0, 0xa4, 0xf7, - 0xa4, 0xf0, 0xa4, 0xf7, 0xa4, 0xf0, 0xa5, 0xf7, 0xa5, 0xf0, 0xa5, 0xf7, - 0xa5, 0xf0, 0xa5, 0xf8, 0xa7, 0xf0, 0xa6, 0xf8, 0xa7, 0xf0, 0xa6, 0xf8, - 0xa7, 0xf0, 0xa6, 0xf8, 0xa7, 0xf0, 0xa7, 0xf8, 0xa7, 0xf0, 0xa7, 0xf8, - 0xa7, 0xf0, 0xa8, 0xf8, 0xa8, 0xf0, 0xa8, 0xf8, 0xa9, 0xf0, 0xa8, 0xf8, - 0xa9, 0xf0, 0xa9, 0xf8, 0xa9, 0xf0, 0xa9, 0xf8, 0xa9, 0xf0, 0xaa, 0xf8, - 0xaa, 0xf0, 0xaa, 0xf8, 0xaa, 0xf0, 0xaa, 0xf8, 0xab, 0xf0, 0xab, 0xf8, - 0xab, 0xf0, 0xab, 0xf8, 0xab, 0xf0, 0xab, 0xf8, 0xab, 0xf0, 0xac, 0xf8, - 0xac, 0xf0, 0xac, 0xf8, 0xac, 0xf0, 0xac, 0xf8, 0xac, 0xf0, 0xad, 0xf8, - 0xad, 0xf0, 0xad, 0xf8, 0xad, 0xf0, 0xae, 0xf8, 0xae, 0xf0, 0xae, 0xf8, - 0xae, 0xf0, 0xae, 0xf8, 0xae, 0xf0, 0xaf, 0xf8, 0xaf, 0xf0, 0xaf, 0xf8, - 0xaf, 0xf1, 0xaf, 0xf8, 0xaf, 0xf1, 0xb0, 0xf8, 0xb0, 0xf1, 0xb0, 0xf8, - 0xb0, 0xf1, 0xb0, 0xf8, 0xb0, 0xf1, 0xb1, 0xf8, 0xb1, 0xf1, 0xb1, 0xf8, - 0xb1, 0xf1, 0xb2, 0xf8, 0xb2, 0xf1, 0xb2, 0xf8, 0xb2, 0xf1, 0xb2, 0xf8, - 0xb2, 0xf1, 0xb3, 0xf8, 0xb3, 0xf1, 0xb2, 0xf8, 0xb3, 0xf1, 0xb3, 0xf8, - 0xb3, 0xf1, 0xb4, 0xf8, 0xb4, 0xf2, 0xb4, 0xf8, 0xb4, 0xf2, 0xb4, 0xf8, - 0xb4, 0xf2, 0xb5, 0xf8, 0xb5, 0xf2, 0xb5, 0xf8, 0xb5, 0xf2, 0xb5, 0xf8, - 0xb5, 0xf2, 0xb6, 0xf8, 0xb6, 0xf2, 0xb6, 0xf8, 0xb6, 0xf2, 0xb6, 0xf8, - 0xb6, 0xf2, 0xb6, 0xf8, 0xb7, 0xf2, 0xb6, 0xf8, 0xb7, 0xf2, 0xb6, 0xf8, - 0xb7, 0xf2, 0xb6, 0xf8, 0xb8, 0xf2, 0xb8, 0xf8, 0xb8, 0xf3, 0xb8, 0xf8, - 0xb8, 0xf3, 0xb9, 0xf8, 0xb9, 0xf3, 0xb9, 0xf8, 0xb9, 0xf3, 0xb9, 0xf8, - 0xb9, 0xf3, 0xba, 0xf8, 0xba, 0xf3, 0xba, 0xf8, 0xba, 0xf3, 0xba, 0xf8, - 0xba, 0xf3, 0xba, 0xf8, 0xbb, 0xf3, 0xba, 0xf8, 0xbb, 0xf3, 0xba, 0xf8, - 0xbb, 0xf3, 0xbc, 0xf8, 0xbc, 0xf4, 0xbc, 0xf8, 0xbc, 0xf4, 0xbc, 0xf8, - 0xbc, 0xf4, 0xbd, 0xf8, 0xbd, 0xf4, 0xbd, 0xf8, 0xbd, 0xf4, 0xbd, 0xf8, - 0xbd, 0xf4, 0xbe, 0xf8, 0xbe, 0xf4, 0xbd, 0xf8, 0xbe, 0xf4, 0xbe, 0xf8, - 0xbe, 0xf4, 0xbd, 0xf8, 0xbf, 0xf4, 0xbe, 0xf8, 0xbf, 0xf4, 0xbf, 0xf8, - 0xbf, 0xf5, 0xc0, 0xf8, 0xc0, 0xf5, 0xc0, 0xf8, 0xc0, 0xf5, 0xc0, 0xf8, - 0xc0, 0xf5, 0xc1, 0xf8, 0xc1, 0xf5, 0xc1, 0xf8, 0xc1, 0xf5, 0xc1, 0xf8, - 0xc1, 0xf5, 0xc1, 0xf8, 0xc1, 0xf5, 0xc1, 0xf8, 0xc2, 0xf5, 0xc1, 0xf8, - 0xc2, 0xf5, 0xc1, 0xf8, 0xc2, 0xf5, 0xc1, 0xf8, 0xc3, 0xf5, 0xc1, 0xf8, - 0xc3, 0xf5, 0xc3, 0xf8, 0xc3, 0xf6, 0xc4, 0xf8, 0xc4, 0xf6, 0xc4, 0xf8, - 0xc4, 0xf6, 0xc4, 0xf8, 0xc4, 0xf6, 0xc5, 0xf8, 0xc5, 0xf6, 0xc4, 0xf8, - 0xc5, 0xf6, 0xc5, 0xf8, 0xc5, 0xf6, 0xc4, 0xf8, 0xc6, 0xf6, 0xc5, 0xf8, - 0xc6, 0xf6, 0xca, 0xf8, 0xc6, 0xf3, 0xca, 0xf8, 0xc6, 0xf0, 0xca, 0xf8, - 0xc7, 0xf3, 0xca, 0xf8, 0xc7, 0xf0, 0xca, 0xf8, 0xc7, 0xf3, 0xca, 0xf8, - 0xc8, 0xf0, 0xca, 0xf8, 0xc8, 0xf0, 0xca, 0xf8, 0xc8, 0xf0, 0xca, 0xf8, - 0xc9, 0xf0, 0xca, 0xf8, 0xc9, 0xf0, 0xca, 0xf8, 0xc9, 0xf0, 0xca, 0xf8, - 0xc9, 0xf0, 0xca, 0xf8, 0xca, 0xf0, 0xca, 0xf8, 0xca, 0xf0, 0xca, 0xf8, - 0xca, 0xf0, 0xcb, 0xf8, 0xca, 0xf0, 0xcb, 0xf8, 0xca, 0xf0, 0xcb, 0xf8, - 0xca, 0xf0, 0xcc, 0xf8, 0xca, 0xf0, 0xcc, 0xf8, 0xca, 0xf0, 0xcc, 0xf8, - 0xca, 0xf0, 0xcc, 0xf8, 0xca, 0xf0, 0xcd, 0xf7, 0xca, 0xf0, 0xcd, 0xf8, - 0xca, 0xf0, 0xcd, 0xf7, 0xca, 0xf0, 0xce, 0xf8, 0xca, 0xf0, 0xce, 0xf7, - 0xca, 0xf0, 0xce, 0xfc, 0xce, 0xf0, 0xce, 0xfc, 0xce, 0xf0, 0xcf, 0xfc, - 0xce, 0xf0, 0xcf, 0xfc, 0xce, 0xf0, 0xcf, 0xfc, 0xce, 0xf0, 0xd0, 0xfc, - 0xce, 0xf0, 0xd0, 0xfc, 0xce, 0xf0, 0xd0, 0xfc, 0xd0, 0xf0, 0xd0, 0xfc, - 0xd0, 0xf0, 0xd1, 0xfc, 0xd1, 0xf0, 0xd1, 0xfc, 0xd1, 0xf0, 0xd1, 0xfc, - 0xd1, 0xf0, 0xd2, 0xfc, 0xd1, 0xf0, 0xd2, 0xfc, 0xd1, 0xf0, 0xd2, 0xfc, - 0xd1, 0xf0, 0xd2, 0xfc, 0xd1, 0xf0, 0xd3, 0xfc, 0xd1, 0xf0, 0xd3, 0xfc, - 0xd1, 0xf0, 0xd3, 0xfc, 0xd1, 0xf0, 0xd4, 0xfc, 0xd4, 0xf0, 0xd4, 0xfc, - 0xd4, 0xf0, 0xd4, 0xfc, 0xd4, 0xf0, 0xd4, 0xfc, 0xd4, 0xf0, 0xd5, 0xfc, - 0xd4, 0xf0, 0xd5, 0xfc, 0xd4, 0xf0, 0xd5, 0xfc, 0xd4, 0xf0, 0xd6, 0xfc, - 0xd4, 0xf0, 0xd6, 0xfc, 0xd4, 0xf0, 0xd6, 0xfc, 0xd4, 0xf0, 0xd6, 0xfc, - 0xd4, 0xf0, 0xd7, 0xfd, 0xd7, 0xf0, 0xd7, 0xfd, 0xd7, 0xf0, 0xd7, 0xfd, - 0xd7, 0xf0, 0xd7, 0xfd, 0xd7, 0xf0, 0xd8, 0xfd, 0xd7, 0xf0, 0xd8, 0xfd, - 0xd7, 0xf0, 0xd8, 0xfd, 0xd7, 0xf0, 0xd9, 0xfd, 0xd7, 0xf0, 0xd9, 0xfd, - 0xd7, 0xf0, 0xd9, 0xfd, 0xd7, 0xf0, 0xd9, 0xfd, 0xd7, 0xf0, 0xda, 0xfd, - 0xda, 0xf0, 0xda, 0xfd, 0xda, 0xf0, 0xda, 0xfd, 0xda, 0xf0, 0xda, 0xfd, - 0xda, 0xf0, 0xdb, 0xfd, 0xda, 0xf0, 0xdb, 0xfd, 0xda, 0xf0, 0xdb, 0xfd, - 0xda, 0xf0, 0xdb, 0xfd, 0xda, 0xf0, 0xdc, 0xfd, 0xda, 0xf0, 0xdc, 0xfd, - 0xda, 0xf0, 0xdc, 0xfd, 0xda, 0xf0, 0xdd, 0xfe, 0xdd, 0xf0, 0xdd, 0xfe, - 0xdd, 0xf0, 0xdd, 0xf8, 0xe3, 0xf0, 0xdd, 0xf9, 0xe3, 0xf0, 0xde, 0xf8, - 0xe3, 0xf0, 0xde, 0xf9, 0xe3, 0xf0, 0xde, 0xf8, 0xe3, 0xf0, 0xde, 0xf9, - 0xe3, 0xf0, 0xdf, 0xf8, 0xe3, 0xf0, 0xdf, 0xf9, 0xe3, 0xf0, 0xdf, 0xf8, - 0xe3, 0xf0, 0xdf, 0xf9, 0xe3, 0xf0, 0xe0, 0xf8, 0xe3, 0xf0, 0xe0, 0xf9, - 0xe3, 0xf0, 0xe0, 0xf8, 0xe3, 0xf0, 0xe1, 0xf9, 0xe3, 0xf0, 0xe1, 0xf8, - 0xe3, 0xf0, 0xe1, 0xf9, 0xe3, 0xf0, 0xe1, 0xf8, 0xe3, 0xf0, 0xe2, 0xf9, - 0xe3, 0xf0, 0xe2, 0xf8, 0xe3, 0xf0, 0xe2, 0xf9, 0xe3, 0xf0, 0xe2, 0xf8, - 0xe3, 0xf0, 0xe3, 0xf8, 0xe4, 0xf0, 0xe3, 0xf8, 0xe3, 0xf0, 0xe3, 0xf8, - 0xe4, 0xf0, 0xe3, 0xf8, 0xe3, 0xef, 0xe3, 0xf8, 0xe4, 0xf0, 0xe3, 0xf8, - 0xe4, 0xef, 0xe3, 0xf8, 0xe4, 0xf0, 0xe5, 0xf8, 0xe4, 0xf0, 0xe6, 0xf8, - 0xe5, 0xf0, 0xe5, 0xf8, 0xe5, 0xf0, 0xe6, 0xf8, 0xe5, 0xf0, 0xe5, 0xf8, - 0xe5, 0xf0, 0xe6, 0xf8, 0xe5, 0xf0, 0xe6, 0xf8, 0xe5, 0xf0, 0xe6, 0xf8, - 0xe5, 0xf0, 0xe6, 0xf8, 0xe5, 0xf0, 0xe7, 0xf8, 0xe5, 0xf0, 0xe7, 0xf8, - 0xe5, 0xf0, 0xe7, 0xf8, 0xe5, 0xf0, 0xe7, 0xf8, 0xe5, 0xf0, 0xe8, 0xf8, - 0xe5, 0xf0, 0xe8, 0xf8, 0xe5, 0xf0, 0xe8, 0xf8, 0xe5, 0xf0, 0xe8, 0xf8, - 0xe5, 0xf0, 0xe9, 0xf8, 0xe5, 0xf0, 0xe9, 0xf8, 0xe5, 0xf0, 0xe9, 0xf8, - 0xe5, 0xf0, 0xe9, 0xf8, 0xe5, 0xf0, 0xea, 0xf8, 0xe5, 0xf0, 0xea, 0xf8, - 0xe5, 0xf0, 0xea, 0xf8, 0xe5, 0xf0, 0xea, 0xfa, 0xef, 0xf0, 0xeb, 0xf9, - 0xef, 0xf0, 0xeb, 0xfa, 0xef, 0xf0, 0xeb, 0xf9, 0xef, 0xf0, 0xeb, 0xf8, - 0xef, 0xf0, 0xec, 0xf9, 0xef, 0xf0, 0xec, 0xf8, 0xef, 0xf0, 0xec, 0xf9, - 0xef, 0xf0, 0xec, 0xf8, 0xef, 0xf0, 0xec, 0xf9, 0xef, 0xf0, 0xed, 0xf8, - 0xef, 0xf0, 0xed, 0xf9, 0xef, 0xf0, 0xed, 0xf8, 0xef, 0xf0, 0xed, 0xf9, - 0xef, 0xf0, 0xee, 0xf8, 0xef, 0xf0, 0xee, 0xf9, 0xef, 0xf0, 0xee, 0xf8, - 0xef, 0xf0, 0xee, 0xf9, 0xef, 0xf0, 0xef, 0xf8, 0xef, 0xf0, 0xef, 0xf9, - 0xef, 0xf0, 0xef, 0xf8, 0xef, 0xf0, 0xef, 0xf8, 0xef, 0xf0, 0xf0, 0xf8, - 0xef, 0xf0, 0xf0, 0xf8, 0xef, 0xf0, 0xf0, 0xf8, 0xef, 0xf0, 0xf0, 0xf8, - 0xef, 0xf0, 0xf1, 0xf8, 0xef, 0xf0, 0xf1, 0xf8, 0xef, 0xf0, 0xf1, 0xf8, - 0xef, 0xf0, 0xf1, 0xf8, 0xef, 0xf0, 0xf2, 0xf8, 0xef, 0xf0, 0xf2, 0xf8, - 0xef, 0xf0, 0xf2, 0xf8, 0xef, 0xf0, 0xf2, 0xf8, 0xef, 0xf0, 0xf2, 0xf8, - 0xef, 0xf0, 0xf3, 0xf8, 0xef, 0xf0, 0xf3, 0xf8, 0xef, 0xf0, 0xf3, 0xf8, - 0xef, 0xf0, 0xf3, 0xf7, 0xf0, 0xf0, 0xf4, 0xf8, 0xef, 0xf0, 0xf4, 0xf7, - 0xf0, 0xf0, 0xf4, 0xf8, 0xef, 0xf0, 0xf4, 0xf7, 0xf0, 0xf0, 0xf5, 0xf8, - 0xef, 0xf0, 0xf5, 0xf7, 0xf0, 0xf0, 0xf5, 0xf8, 0xef, 0xf0, 0xf5, 0xf7, - 0xf0, 0xf0, 0xf5, 0xf8, 0xef, 0xf0, 0xf6, 0xf7, 0xf0, 0xf0, 0xf6, 0xf8, - 0xef, 0xf0, 0xf6, 0xf7, 0xf0, 0xf0, 0xf6, 0xf8, 0xef, 0xf0, 0xf7, 0xf7, - 0xf0, 0xf0, 0xf7, 0xf8, 0xef, 0xf0, 0xf7, 0xf7, 0xf0, 0xf0, 0xf7, 0xf8, - 0xef, 0xf0, 0xf8, 0xf7, 0xf0, 0xf0, 0xf8, 0xf8, 0xef, 0xf0, 0xf8, 0xf7, - 0xf0, 0xf0, 0xf8, 0xf8, 0xef, 0xf0, 0xf8, 0xf7, 0xf0, 0xf0, 0xf9, 0xf8, - 0xef, 0xf0, 0xf9, 0xf7, 0xf0, 0xf0, 0xf9, 0xf8, 0xef, 0xf0, 0xf9, 0xf7, - 0xf0, 0xf0, 0xfa, 0xf8, 0xef, 0xf0, 0xfa, 0xf7, 0xf0, 0xf0, 0xfa, 0xf8, - 0xef, 0xf0, 0xfa, 0xf7, 0xf0, 0xf0, 0xfa, 0xf8, 0xef, 0xf0, 0xfb, 0xf7, - 0xf0, 0xf0, 0xfb, 0xf5, 0xf0, 0xf0, 0xfb, 0xf7, 0xf0, 0xf0, 0xfb, 0xf5, - 0xf0, 0xf0, 0xfc, 0xf7, 0xf0, 0xf0, 0xfc, 0xf5, 0xf0, 0xf0, 0xfc, 0xf7, - 0xf0, 0xf0, 0xfc, 0xf5, 0xf0, 0xf0, 0xfc, 0xf7, 0xf0, 0xf0, 0xfd, 0xf5, - 0xf0, 0xf0, 0xfd, 0xf7, 0xf0, 0xf0, 0xfd, 0xf5, 0xf0, 0xf0, 0xfd, 0xf7, - 0xf0, 0xf0, 0xfe, 0xf5, 0xf0, 0xf0, 0xfe, 0xf7, 0xf0, 0xf0, 0xfe, 0xf5, - 0xf0, 0xf0, 0xfe, 0xf7, 0xf0, 0xf0, 0xfe, 0xf5, 0xf0, 0xf0, 0xff, 0xf7, - 0xf0, 0xf0, 0xff, 0xf5, 0xf0, 0xf0, 0x03, 0xf4, 0x83, 0xf1, 0x0a, 0xf4, - 0x83, 0xf1, 0x0f, 0xf4, 0x83, 0xf1, 0x14, 0xf4, 0x83, 0xf1, 0x17, 0xf4, - 0x83, 0xf1, 0x1b, 0xf4, 0x83, 0xf1, 0x1e, 0xf4, 0x83, 0xf1, 0x20, 0xf4, - 0x83, 0xf1, 0x23, 0xf4, 0x83, 0xf1, 0x25, 0xf4, 0x83, 0xf1, 0x27, 0xf4, - 0x83, 0xf1, 0x29, 0xf4, 0x83, 0xf1, 0x2b, 0xf4, 0x83, 0xf1, 0x2d, 0xf4, - 0x83, 0xf1, 0x2f, 0xf4, 0x83, 0xf1, 0x31, 0xf4, 0x83, 0xf1, 0x32, 0xf4, - 0x83, 0xf1, 0x34, 0xf4, 0x83, 0xf1, 0x35, 0xf4, 0x83, 0xf1, 0x37, 0xf4, - 0x83, 0xf1, 0x38, 0xf4, 0x83, 0xf1, 0x3a, 0xf4, 0x83, 0xf1, 0x3b, 0xf4, - 0x83, 0xf1, 0x3c, 0xf4, 0x83, 0xf1, 0x3e, 0xf4, 0x83, 0xf1, 0x3f, 0xf4, - 0x83, 0xf1, 0x40, 0xf4, 0x83, 0xf1, 0x42, 0xf4, 0x83, 0xf1, 0x43, 0xf4, - 0x83, 0xf1, 0x44, 0xf4, 0x83, 0xf1, 0x45, 0xf4, 0x83, 0xf1, 0x46, 0xf4, - 0x83, 0xf1, 0x47, 0xf4, 0x83, 0xf1, 0x48, 0xf4, 0x83, 0xf1, 0x49, 0xf4, - 0x83, 0xf1, 0x4a, 0xf4, 0x83, 0xf1, 0x4b, 0xf4, 0x83, 0xf1, 0x4c, 0xf4, - 0x83, 0xf1, 0x4d, 0xf4, 0x83, 0xf1, 0x4e, 0xf4, 0x83, 0xf1, 0x4f, 0xf4, - 0x83, 0xf1, 0x50, 0xf4, 0x83, 0xf1, 0x51, 0xf4, 0x83, 0xf1, 0x52, 0xf4, - 0x83, 0xf1, 0x53, 0xf4, 0x83, 0xf1, 0x54, 0xf4, 0x83, 0xf1, 0x55, 0xf4, - 0x83, 0xf1, 0x56, 0xf4, 0x83, 0xf1, 0x57, 0xf4, 0x83, 0xf1, 0x58, 0xf4, - 0x83, 0xf1, 0x58, 0xf4, 0x83, 0xf1, 0x59, 0xf4, 0x83, 0xf1, 0x5a, 0xf4, - 0x83, 0xf1, 0x5b, 0xf4, 0x83, 0xf1, 0x5c, 0xf4, 0x83, 0xf1, 0x5d, 0xf4, - 0x83, 0xf1, 0x5d, 0xf4, 0x83, 0xf1, 0x5e, 0xf4, 0x83, 0xf1, 0x5f, 0xf4, - 0x83, 0xf1, 0x60, 0xf4, 0x83, 0xf1, 0x60, 0xf4, 0x83, 0xf1, 0x61, 0xf4, - 0x83, 0xf1, 0x62, 0xf4, 0x83, 0xf1, 0x63, 0xf4, 0x83, 0xf1, 0x63, 0xf4, - 0x83, 0xf1, 0x64, 0xf4, 0x83, 0xf1, 0x65, 0xf4, 0x83, 0xf1, 0x66, 0xf4, - 0x83, 0xf1, 0x66, 0xf4, 0x83, 0xf1, 0x67, 0xf4, 0x83, 0xf1, 0x68, 0xf4, - 0x83, 0xf1, 0x68, 0xf4, 0x83, 0xf1, 0x69, 0xf4, 0x83, 0xf1, 0x6a, 0xf4, - 0x83, 0xf1, 0x6a, 0xf4, 0x83, 0xf1, 0x6b, 0xf4, 0x83, 0xf1, 0x6c, 0xf4, - 0x83, 0xf1, 0x6c, 0xf4, 0x83, 0xf1, 0x6d, 0xf4, 0x83, 0xf1, 0x6e, 0xf4, - 0x83, 0xf1, 0x6e, 0xf4, 0x83, 0xf1, 0x6f, 0xf4, 0x83, 0xf1, 0x70, 0xf4, - 0x83, 0xf1, 0x70, 0xf4, 0x83, 0xf1, 0x71, 0xf4, 0x83, 0xf1, 0x72, 0xf4, - 0x83, 0xf1, 0x72, 0xf4, 0x83, 0xf1, 0x73, 0xf4, 0x83, 0xf1, 0x73, 0xf4, - 0x83, 0xf1, 0x74, 0xf4, 0x83, 0xf1, 0x75, 0xf4, 0x83, 0xf1, 0x75, 0xf4, - 0x83, 0xf1, 0x76, 0xf4, 0x83, 0xf1, 0x76, 0xf4, 0x83, 0xf1, 0x77, 0xf4, - 0x83, 0xf1, 0x78, 0xf4, 0x83, 0xf1, 0x78, 0xf4, 0x83, 0xf1, 0x79, 0xf4, - 0x83, 0xf1, 0x79, 0xf4, 0x83, 0xf1, 0x7a, 0xf4, 0x83, 0xf1, 0x7a, 0xf4, - 0x83, 0xf1, 0x7b, 0xf4, 0x83, 0xf1, 0x7c, 0xf4, 0x83, 0xf1, 0x7c, 0xf4, - 0x83, 0xf1, 0x7d, 0xf4, 0x83, 0xf1, 0x7d, 0xf4, 0x83, 0xf1, 0x7e, 0xf4, - 0x83, 0xf1, 0x7e, 0xf4, 0x83, 0xf1, 0x7f, 0xf4, 0x83, 0xf1, 0x7f, 0xf4, - 0x83, 0xf1, 0x80, 0xf4, 0x83, 0xf1, 0x81, 0xf4, 0x83, 0xf1, 0x81, 0xf4, - 0x83, 0xf1, 0x82, 0xf4, 0x83, 0xf1, 0x82, 0xf4, 0x83, 0xf1, 0x83, 0xf4, - 0x83, 0xf1, 0x83, 0xf4, 0x83, 0xf1, 0x84, 0xf5, 0x88, 0xf1, 0x84, 0xf5, - 0x88, 0xf1, 0x85, 0xf5, 0x88, 0xf1, 0x85, 0xf5, 0x88, 0xf1, 0x86, 0xf5, - 0x88, 0xf1, 0x86, 0xf5, 0x88, 0xf1, 0x87, 0xf5, 0x88, 0xf1, 0x87, 0xf5, - 0x88, 0xf1, 0x88, 0xf5, 0x88, 0xf1, 0x88, 0xf5, 0x88, 0xf1, 0x89, 0xf5, - 0x89, 0xf1, 0x89, 0xf5, 0x8d, 0xf1, 0x8a, 0xf5, 0x8e, 0xf1, 0x8a, 0xf5, - 0x8d, 0xf1, 0x8b, 0xf5, 0x8e, 0xf1, 0x8b, 0xf5, 0x8d, 0xf1, 0x8c, 0xf5, - 0x8e, 0xf1, 0x8c, 0xf5, 0x8d, 0xf1, 0x8d, 0xf5, 0x8e, 0xf1, 0x8d, 0xf5, - 0x8d, 0xf1, 0x8e, 0xf5, 0x8e, 0xf1, 0x8e, 0xf5, 0x8e, 0xf1, 0x8e, 0xf5, - 0x8e, 0xf1, 0x8f, 0xf5, 0x8f, 0xf1, 0x8f, 0xf5, 0x92, 0xf1, 0x90, 0xf5, - 0x93, 0xf1, 0x90, 0xf5, 0x92, 0xf1, 0x91, 0xf5, 0x93, 0xf1, 0x91, 0xf5, - 0x92, 0xf1, 0x92, 0xf5, 0x93, 0xf1, 0x92, 0xf5, 0x92, 0xf1, 0x93, 0xf5, - 0x93, 0xf1, 0x93, 0xf5, 0x93, 0xf1, 0x94, 0xf5, 0x94, 0xf1, 0x94, 0xf5, - 0x94, 0xf1, 0x94, 0xf6, 0x97, 0xf1, 0x95, 0xf6, 0x98, 0xf1, 0x95, 0xf6, - 0x97, 0xf1, 0x96, 0xf6, 0x98, 0xf1, 0x96, 0xf6, 0x97, 0xf1, 0x97, 0xf6, - 0x98, 0xf1, 0x97, 0xf6, 0x97, 0xf1, 0x98, 0xf6, 0x98, 0xf1, 0x98, 0xf6, - 0x98, 0xf1, 0x98, 0xf6, 0x98, 0xf1, 0x99, 0xf6, 0x99, 0xf1, 0x99, 0xf6, - 0x9c, 0xf1, 0x9a, 0xf6, 0x9c, 0xf1, 0x9a, 0xf6, 0x9c, 0xf1, 0x9a, 0xf6, - 0x9c, 0xf1, 0x9b, 0xf6, 0x9c, 0xf1, 0x9b, 0xf6, 0x9c, 0xf1, 0x9c, 0xf6, - 0x9c, 0xf1, 0x9c, 0xf6, 0x9c, 0xf1, 0x9d, 0xf6, 0x9d, 0xf1, 0x9d, 0xf6, - 0x9d, 0xf1, 0x9d, 0xf6, 0x9d, 0xf1, 0x9e, 0xf6, 0x9e, 0xf1, 0x9e, 0xf6, - 0x9e, 0xf1, 0x9f, 0xf7, 0xa0, 0xf1, 0x9f, 0xf7, 0xa1, 0xf1, 0x9f, 0xf7, - 0xa0, 0xf1, 0xa0, 0xf7, 0xa1, 0xf1, 0xa0, 0xf7, 0xa0, 0xf1, 0xa1, 0xf7, - 0xa1, 0xf1, 0xa1, 0xf7, 0xa1, 0xf1, 0xa1, 0xf7, 0xa1, 0xf1, 0xa2, 0xf7, - 0xa2, 0xf1, 0xa2, 0xf7, 0xa2, 0xf1, 0xa3, 0xf7, 0xa3, 0xf1, 0xa3, 0xf7, - 0xa5, 0xf1, 0xa3, 0xf7, 0xa5, 0xf1, 0xa4, 0xf7, 0xa5, 0xf1, 0xa4, 0xf7, - 0xa5, 0xf1, 0xa5, 0xf7, 0xa5, 0xf1, 0xa5, 0xf7, 0xa5, 0xf1, 0xa5, 0xf7, - 0xa5, 0xf1, 0xa6, 0xf7, 0xa6, 0xf1, 0xa6, 0xf7, 0xa6, 0xf1, 0xa6, 0xf7, - 0xa6, 0xf1, 0xa7, 0xf7, 0xa7, 0xf1, 0xa7, 0xf8, 0xa9, 0xf1, 0xa8, 0xf8, - 0xa9, 0xf1, 0xa8, 0xf8, 0xa9, 0xf1, 0xa8, 0xf8, 0xa9, 0xf1, 0xa9, 0xf8, - 0xa9, 0xf1, 0xa9, 0xf8, 0xa9, 0xf1, 0xaa, 0xf8, 0xaa, 0xf1, 0xaa, 0xf8, - 0xaa, 0xf1, 0xaa, 0xf8, 0xaa, 0xf1, 0xab, 0xf8, 0xab, 0xf1, 0xab, 0xf8, - 0xab, 0xf1, 0xab, 0xf8, 0xab, 0xf1, 0xac, 0xf8, 0xac, 0xf1, 0xac, 0xf8, - 0xad, 0xf1, 0xac, 0xf8, 0xad, 0xf1, 0xad, 0xf8, 0xad, 0xf1, 0xad, 0xf8, - 0xad, 0xf1, 0xae, 0xf8, 0xae, 0xf1, 0xae, 0xf8, 0xae, 0xf1, 0xae, 0xf8, - 0xae, 0xf1, 0xaf, 0xf8, 0xaf, 0xf1, 0xaf, 0xf8, 0xaf, 0xf1, 0xaf, 0xf8, - 0xaf, 0xf1, 0xb0, 0xf8, 0xb0, 0xf1, 0xb0, 0xf8, 0xb0, 0xf1, 0xb0, 0xf8, - 0xb0, 0xf1, 0xb1, 0xf9, 0xb1, 0xf2, 0xb1, 0xf9, 0xb1, 0xf2, 0xb2, 0xf9, - 0xb2, 0xf2, 0xb2, 0xf9, 0xb2, 0xf2, 0xb2, 0xf9, 0xb2, 0xf2, 0xb3, 0xf9, - 0xb3, 0xf2, 0xb3, 0xf9, 0xb3, 0xf2, 0xb3, 0xf9, 0xb3, 0xf2, 0xb4, 0xf9, - 0xb4, 0xf2, 0xb4, 0xf9, 0xb4, 0xf2, 0xb4, 0xf9, 0xb4, 0xf2, 0xb4, 0xf9, - 0xb5, 0xf2, 0xb4, 0xf9, 0xb5, 0xf2, 0xb5, 0xf9, 0xb5, 0xf3, 0xb6, 0xf9, - 0xb6, 0xf3, 0xb6, 0xf9, 0xb6, 0xf3, 0xb6, 0xf9, 0xb6, 0xf3, 0xb7, 0xf9, - 0xb7, 0xf3, 0xb7, 0xf9, 0xb7, 0xf3, 0xb7, 0xf9, 0xb7, 0xf3, 0xb8, 0xf9, - 0xb8, 0xf3, 0xb8, 0xf9, 0xb8, 0xf3, 0xb8, 0xf9, 0xb8, 0xf3, 0xb8, 0xf9, - 0xb9, 0xf3, 0xb8, 0xf9, 0xb9, 0xf3, 0xb8, 0xf9, 0xb9, 0xf3, 0xba, 0xf9, - 0xba, 0xf4, 0xba, 0xf9, 0xba, 0xf4, 0xba, 0xf9, 0xba, 0xf4, 0xbb, 0xf9, - 0xbb, 0xf4, 0xbb, 0xf9, 0xbb, 0xf4, 0xbb, 0xf9, 0xbb, 0xf4, 0xbc, 0xf9, - 0xbc, 0xf4, 0xbb, 0xf9, 0xbc, 0xf4, 0xbc, 0xf9, 0xbc, 0xf4, 0xbb, 0xf9, - 0xbd, 0xf4, 0xbc, 0xf9, 0xbd, 0xf4, 0xbd, 0xf9, 0xbd, 0xf5, 0xbe, 0xf9, - 0xbe, 0xf5, 0xbe, 0xf9, 0xbe, 0xf5, 0xbe, 0xf9, 0xbe, 0xf5, 0xbf, 0xf9, - 0xbf, 0xf5, 0xbf, 0xf9, 0xbf, 0xf5, 0xbf, 0xf9, 0xbf, 0xf5, 0xbf, 0xf9, - 0xc0, 0xf5, 0xbf, 0xf9, 0xc0, 0xf5, 0xbf, 0xf9, 0xc0, 0xf5, 0xbf, 0xf9, - 0xc1, 0xf5, 0xc1, 0xf9, 0xc1, 0xf6, 0xc1, 0xf9, 0xc1, 0xf6, 0xc1, 0xf9, - 0xc1, 0xf6, 0xc2, 0xf9, 0xc2, 0xf6, 0xc2, 0xf9, 0xc2, 0xf6, 0xc2, 0xf9, - 0xc2, 0xf6, 0xc3, 0xf9, 0xc3, 0xf6, 0xc2, 0xf9, 0xc3, 0xf6, 0xc3, 0xf9, - 0xc3, 0xf6, 0xc2, 0xf9, 0xc4, 0xf6, 0xc3, 0xf9, 0xc4, 0xf6, 0xc2, 0xf9, - 0xc4, 0xf6, 0xc3, 0xf9, 0xc5, 0xf6, 0xc5, 0xf9, 0xc5, 0xf7, 0xc5, 0xf9, - 0xc5, 0xf7, 0xc6, 0xf9, 0xc6, 0xf7, 0xc6, 0xf9, 0xc6, 0xf7, 0xc6, 0xf9, - 0xc6, 0xf7, 0xca, 0xf9, 0xc6, 0xf1, 0xca, 0xf9, 0xc7, 0xf4, 0xca, 0xf9, - 0xc7, 0xf1, 0xca, 0xf9, 0xc7, 0xf4, 0xca, 0xf9, 0xc8, 0xf1, 0xca, 0xf9, - 0xc8, 0xf1, 0xca, 0xf9, 0xc8, 0xf1, 0xca, 0xf9, 0xc9, 0xf1, 0xca, 0xf9, - 0xc9, 0xf1, 0xca, 0xf9, 0xc9, 0xf1, 0xca, 0xf9, 0xc9, 0xf1, 0xca, 0xf9, - 0xca, 0xf1, 0xca, 0xf8, 0xca, 0xf1, 0xca, 0xf9, 0xca, 0xf1, 0xcb, 0xf8, - 0xca, 0xf1, 0xcb, 0xf9, 0xca, 0xf1, 0xcb, 0xf8, 0xca, 0xf1, 0xcc, 0xf9, - 0xca, 0xf1, 0xcc, 0xf8, 0xca, 0xf1, 0xcc, 0xf9, 0xca, 0xf1, 0xcc, 0xf8, - 0xca, 0xf1, 0xcd, 0xf9, 0xca, 0xf1, 0xcd, 0xf8, 0xca, 0xf1, 0xcd, 0xf9, - 0xca, 0xf1, 0xce, 0xf8, 0xca, 0xf1, 0xce, 0xfb, 0xcc, 0xf1, 0xce, 0xfb, - 0xcc, 0xf1, 0xce, 0xfc, 0xce, 0xf1, 0xcf, 0xfc, 0xcf, 0xf1, 0xcf, 0xfc, - 0xcf, 0xf1, 0xcf, 0xfc, 0xcf, 0xf1, 0xd0, 0xfc, 0xd0, 0xf1, 0xd0, 0xfc, - 0xcf, 0xf1, 0xd0, 0xfc, 0xd0, 0xf1, 0xd0, 0xfc, 0xcf, 0xf1, 0xd1, 0xfc, - 0xd0, 0xf1, 0xd1, 0xfc, 0xcf, 0xf1, 0xd1, 0xfc, 0xd0, 0xf1, 0xd2, 0xfc, - 0xd2, 0xf1, 0xd2, 0xfc, 0xd2, 0xf1, 0xd2, 0xfc, 0xd2, 0xf1, 0xd2, 0xfc, - 0xd2, 0xf1, 0xd3, 0xfc, 0xd3, 0xf1, 0xd3, 0xfc, 0xd2, 0xf1, 0xd3, 0xfc, - 0xd3, 0xf1, 0xd4, 0xfc, 0xd2, 0xf1, 0xd4, 0xfc, 0xd3, 0xf1, 0xd4, 0xfc, - 0xd2, 0xf1, 0xd4, 0xfc, 0xd3, 0xf1, 0xd5, 0xfc, 0xd2, 0xf1, 0xd5, 0xfc, - 0xd3, 0xf1, 0xd5, 0xfd, 0xd5, 0xf1, 0xd6, 0xfd, 0xd6, 0xf1, 0xd6, 0xfd, - 0xd6, 0xf1, 0xd6, 0xfd, 0xd6, 0xf1, 0xd6, 0xfd, 0xd6, 0xf1, 0xd7, 0xfd, - 0xd6, 0xf1, 0xd7, 0xfd, 0xd6, 0xf1, 0xd7, 0xfd, 0xd6, 0xf1, 0xd7, 0xfd, - 0xd6, 0xf1, 0xd8, 0xfd, 0xd6, 0xf1, 0xd8, 0xfd, 0xd6, 0xf1, 0xd8, 0xfd, - 0xd8, 0xf1, 0xd9, 0xfd, 0xd9, 0xf1, 0xd9, 0xfd, 0xd9, 0xf1, 0xd9, 0xfd, - 0xd9, 0xf1, 0xd9, 0xfd, 0xd9, 0xf1, 0xda, 0xfd, 0xd9, 0xf1, 0xda, 0xfd, - 0xd9, 0xf1, 0xda, 0xfd, 0xd9, 0xf1, 0xda, 0xfd, 0xd9, 0xf1, 0xdb, 0xfd, - 0xd9, 0xf1, 0xdb, 0xfd, 0xd9, 0xf1, 0xdb, 0xfe, 0xdb, 0xf1, 0xdb, 0xfe, - 0xdb, 0xf1, 0xdc, 0xfe, 0xdc, 0xf1, 0xdc, 0xfe, 0xdb, 0xf1, 0xdc, 0xfe, - 0xdc, 0xf1, 0xdd, 0xfe, 0xdb, 0xf1, 0xdd, 0xfe, 0xdc, 0xf1, 0xdd, 0xfe, - 0xdb, 0xf1, 0xdd, 0xfa, 0xe3, 0xf1, 0xde, 0xf9, 0xe3, 0xf1, 0xde, 0xfa, - 0xe3, 0xf1, 0xde, 0xf9, 0xe3, 0xf1, 0xde, 0xfa, 0xe3, 0xf1, 0xdf, 0xf9, - 0xe3, 0xf1, 0xdf, 0xfa, 0xe3, 0xf1, 0xdf, 0xf9, 0xe3, 0xf1, 0xdf, 0xfa, - 0xe3, 0xf1, 0xe0, 0xf9, 0xe3, 0xf1, 0xe0, 0xfa, 0xe3, 0xf1, 0xe0, 0xf9, - 0xe3, 0xf1, 0xe1, 0xfa, 0xe3, 0xf1, 0xe1, 0xf9, 0xe3, 0xf1, 0xe1, 0xfa, - 0xe3, 0xf1, 0xe1, 0xf9, 0xe3, 0xf1, 0xe2, 0xfa, 0xe3, 0xf1, 0xe2, 0xf9, - 0xe3, 0xf1, 0xe2, 0xfa, 0xe3, 0xf1, 0xe2, 0xf9, 0xe3, 0xf1, 0xe3, 0xf9, - 0xe4, 0xf1, 0xe3, 0xf9, 0xe3, 0xf1, 0xe3, 0xf9, 0xe4, 0xf1, 0xe3, 0xf9, - 0xe3, 0xf1, 0xe3, 0xf9, 0xe4, 0xf1, 0xe3, 0xf9, 0xe4, 0xf1, 0xe3, 0xf9, - 0xe4, 0xf1, 0xe5, 0xf9, 0xe4, 0xf1, 0xe5, 0xf9, 0xe5, 0xf2, 0xe5, 0xf9, - 0xe5, 0xf1, 0xe6, 0xf9, 0xe5, 0xf1, 0xe5, 0xf9, 0xe5, 0xf1, 0xe6, 0xf9, - 0xe5, 0xf1, 0xe6, 0xf9, 0xe5, 0xf1, 0xe6, 0xf9, 0xe5, 0xf1, 0xe6, 0xf9, - 0xe5, 0xf1, 0xe7, 0xf9, 0xe5, 0xf1, 0xe7, 0xf9, 0xe5, 0xf1, 0xe7, 0xf9, - 0xe5, 0xf1, 0xe7, 0xf7, 0xe5, 0xf1, 0xe8, 0xf9, 0xe5, 0xf1, 0xe8, 0xf7, - 0xe5, 0xf1, 0xe8, 0xf9, 0xe5, 0xf1, 0xe8, 0xf7, 0xe5, 0xf1, 0xe9, 0xf9, - 0xe5, 0xf1, 0xe9, 0xf7, 0xe5, 0xf1, 0xe9, 0xf9, 0xe5, 0xf1, 0xe9, 0xf7, - 0xe5, 0xf1, 0xea, 0xf9, 0xe5, 0xf1, 0xea, 0xf7, 0xe5, 0xf1, 0xea, 0xf9, - 0xe5, 0xf1, 0xea, 0xfa, 0xef, 0xf1, 0xeb, 0xf9, 0xef, 0xf1, 0xeb, 0xfa, - 0xef, 0xf1, 0xeb, 0xf9, 0xef, 0xf1, 0xeb, 0xfa, 0xef, 0xf1, 0xec, 0xf9, - 0xef, 0xf1, 0xec, 0xfa, 0xef, 0xf1, 0xec, 0xf9, 0xef, 0xf1, 0xec, 0xfa, - 0xef, 0xf1, 0xec, 0xf9, 0xef, 0xf1, 0xed, 0xfa, 0xef, 0xf1, 0xed, 0xf9, - 0xef, 0xf1, 0xed, 0xf9, 0xef, 0xf1, 0xed, 0xf9, 0xef, 0xf1, 0xee, 0xf9, - 0xef, 0xf1, 0xee, 0xf9, 0xef, 0xf1, 0xee, 0xf9, 0xef, 0xf1, 0xee, 0xf9, - 0xef, 0xf1, 0xef, 0xf9, 0xef, 0xf1, 0xef, 0xf9, 0xef, 0xf0, 0xef, 0xf9, - 0xef, 0xf1, 0xef, 0xf8, 0xef, 0xf1, 0xf0, 0xf9, 0xef, 0xf1, 0xf0, 0xf8, - 0xef, 0xf1, 0xf0, 0xf9, 0xef, 0xf1, 0xf0, 0xf8, 0xef, 0xf1, 0xf1, 0xf9, - 0xef, 0xf1, 0xf1, 0xf8, 0xef, 0xf1, 0xf1, 0xf9, 0xef, 0xf1, 0xf1, 0xf8, - 0xef, 0xf1, 0xf2, 0xf9, 0xef, 0xf1, 0xf2, 0xf8, 0xef, 0xf1, 0xf2, 0xf9, - 0xef, 0xf1, 0xf2, 0xf8, 0xef, 0xf1, 0xf2, 0xf9, 0xef, 0xf1, 0xf3, 0xf8, - 0xef, 0xf1, 0xf3, 0xf9, 0xef, 0xf1, 0xf3, 0xf8, 0xef, 0xf1, 0xf3, 0xf9, - 0xef, 0xf1, 0xf4, 0xf8, 0xef, 0xf1, 0xf4, 0xf9, 0xef, 0xf1, 0xf4, 0xf8, - 0xef, 0xf1, 0xf4, 0xf9, 0xef, 0xf1, 0xf5, 0xf8, 0xef, 0xf1, 0xf5, 0xf9, - 0xef, 0xf1, 0xf5, 0xf8, 0xef, 0xf1, 0xf5, 0xf6, 0xf0, 0xf1, 0xf5, 0xf8, - 0xef, 0xf1, 0xf6, 0xf6, 0xf0, 0xf1, 0xf6, 0xf8, 0xef, 0xf1, 0xf6, 0xf6, - 0xf0, 0xf1, 0xf6, 0xf8, 0xef, 0xf1, 0xf7, 0xf6, 0xf0, 0xf1, 0xf7, 0xf8, - 0xef, 0xf1, 0xf7, 0xf6, 0xf0, 0xf1, 0xf7, 0xf8, 0xef, 0xf1, 0xf8, 0xf6, - 0xf0, 0xf1, 0xf8, 0xf8, 0xef, 0xf1, 0xf8, 0xf6, 0xf0, 0xf1, 0xf8, 0xf8, - 0xef, 0xf1, 0xf8, 0xf6, 0xf0, 0xf1, 0xf9, 0xf8, 0xef, 0xf1, 0xf9, 0xf6, - 0xf0, 0xf1, 0xf9, 0xf8, 0xef, 0xf1, 0xf9, 0xf6, 0xf0, 0xf1, 0xfa, 0xf8, - 0xef, 0xf1, 0xfa, 0xf6, 0xf0, 0xf1, 0xfa, 0xf8, 0xef, 0xf1, 0xfa, 0xf6, - 0xf0, 0xf1, 0xfa, 0xf8, 0xef, 0xf1, 0xfb, 0xf6, 0xf0, 0xf1, 0xfb, 0xf8, - 0xef, 0xf1, 0xfb, 0xf6, 0xf0, 0xf1, 0xfb, 0xf8, 0xef, 0xf1, 0xfc, 0xf6, - 0xf0, 0xf1, 0xfc, 0xf8, 0xef, 0xf1, 0xfc, 0xf6, 0xf0, 0xf1, 0xfc, 0xf8, - 0xef, 0xf1, 0xfc, 0xf6, 0xf0, 0xf1, 0xfd, 0xf8, 0xef, 0xf1, 0xfd, 0xf6, - 0xf0, 0xf1, 0xfd, 0xf8, 0xef, 0xf1, 0xfd, 0xf6, 0xf0, 0xf1, 0xfe, 0xf8, - 0xef, 0xf1, 0xfe, 0xf6, 0xf0, 0xf1, 0xfe, 0xf8, 0xef, 0xf1, 0xfe, 0xf6, - 0xf0, 0xf1, 0xfe, 0xf5, 0xf0, 0xf1, 0xff, 0xf6, 0xf0, 0xf1, 0xff, 0xf5, - 0xf0, 0xf1, 0x03, 0xf4, 0x83, 0xf1, 0x0a, 0xf4, 0x83, 0xf1, 0x0f, 0xf4, - 0x83, 0xf1, 0x14, 0xf4, 0x83, 0xf1, 0x17, 0xf4, 0x83, 0xf1, 0x1b, 0xf4, - 0x83, 0xf1, 0x1e, 0xf4, 0x83, 0xf1, 0x20, 0xf4, 0x83, 0xf1, 0x23, 0xf4, - 0x83, 0xf1, 0x25, 0xf4, 0x83, 0xf1, 0x27, 0xf4, 0x83, 0xf1, 0x29, 0xf4, - 0x83, 0xf1, 0x2b, 0xf4, 0x83, 0xf1, 0x2d, 0xf4, 0x83, 0xf1, 0x2f, 0xf4, - 0x83, 0xf1, 0x31, 0xf4, 0x83, 0xf1, 0x32, 0xf4, 0x83, 0xf1, 0x34, 0xf4, - 0x83, 0xf1, 0x35, 0xf4, 0x83, 0xf1, 0x37, 0xf4, 0x83, 0xf1, 0x38, 0xf4, - 0x83, 0xf1, 0x3a, 0xf4, 0x83, 0xf1, 0x3b, 0xf4, 0x83, 0xf1, 0x3c, 0xf4, - 0x83, 0xf1, 0x3e, 0xf4, 0x83, 0xf1, 0x3f, 0xf4, 0x83, 0xf1, 0x40, 0xf4, - 0x83, 0xf1, 0x42, 0xf4, 0x83, 0xf1, 0x43, 0xf4, 0x83, 0xf1, 0x44, 0xf4, - 0x83, 0xf1, 0x45, 0xf4, 0x83, 0xf1, 0x46, 0xf4, 0x83, 0xf1, 0x47, 0xf4, - 0x83, 0xf1, 0x48, 0xf4, 0x83, 0xf1, 0x49, 0xf4, 0x83, 0xf1, 0x4a, 0xf4, - 0x83, 0xf1, 0x4b, 0xf4, 0x83, 0xf1, 0x4c, 0xf4, 0x83, 0xf1, 0x4d, 0xf4, - 0x83, 0xf1, 0x4e, 0xf4, 0x83, 0xf1, 0x4f, 0xf4, 0x83, 0xf1, 0x50, 0xf4, - 0x83, 0xf1, 0x51, 0xf4, 0x83, 0xf1, 0x52, 0xf4, 0x83, 0xf1, 0x53, 0xf4, - 0x83, 0xf1, 0x54, 0xf4, 0x83, 0xf1, 0x55, 0xf4, 0x83, 0xf1, 0x56, 0xf4, - 0x83, 0xf1, 0x57, 0xf4, 0x83, 0xf1, 0x58, 0xf4, 0x83, 0xf1, 0x58, 0xf4, - 0x83, 0xf1, 0x59, 0xf4, 0x83, 0xf1, 0x5a, 0xf4, 0x83, 0xf1, 0x5b, 0xf4, - 0x83, 0xf1, 0x5c, 0xf4, 0x83, 0xf1, 0x5d, 0xf4, 0x83, 0xf1, 0x5d, 0xf4, - 0x83, 0xf1, 0x5e, 0xf4, 0x83, 0xf1, 0x5f, 0xf4, 0x83, 0xf1, 0x60, 0xf4, - 0x83, 0xf1, 0x60, 0xf4, 0x83, 0xf1, 0x61, 0xf4, 0x83, 0xf1, 0x62, 0xf4, - 0x83, 0xf1, 0x63, 0xf4, 0x83, 0xf1, 0x63, 0xf4, 0x83, 0xf1, 0x64, 0xf4, - 0x83, 0xf1, 0x65, 0xf4, 0x83, 0xf1, 0x66, 0xf4, 0x83, 0xf1, 0x66, 0xf4, - 0x83, 0xf1, 0x67, 0xf4, 0x83, 0xf1, 0x68, 0xf4, 0x83, 0xf1, 0x68, 0xf4, - 0x83, 0xf1, 0x69, 0xf4, 0x83, 0xf1, 0x6a, 0xf4, 0x83, 0xf1, 0x6a, 0xf4, - 0x83, 0xf1, 0x6b, 0xf4, 0x83, 0xf1, 0x6c, 0xf4, 0x83, 0xf1, 0x6c, 0xf4, - 0x83, 0xf1, 0x6d, 0xf4, 0x83, 0xf1, 0x6e, 0xf4, 0x83, 0xf1, 0x6e, 0xf4, - 0x83, 0xf1, 0x6f, 0xf4, 0x83, 0xf1, 0x70, 0xf4, 0x83, 0xf1, 0x70, 0xf4, - 0x83, 0xf1, 0x71, 0xf4, 0x83, 0xf1, 0x72, 0xf4, 0x83, 0xf1, 0x72, 0xf4, - 0x83, 0xf1, 0x73, 0xf4, 0x83, 0xf1, 0x73, 0xf4, 0x83, 0xf1, 0x74, 0xf4, - 0x83, 0xf1, 0x75, 0xf4, 0x83, 0xf1, 0x75, 0xf4, 0x83, 0xf1, 0x76, 0xf4, - 0x83, 0xf1, 0x76, 0xf4, 0x83, 0xf1, 0x77, 0xf4, 0x83, 0xf1, 0x78, 0xf4, - 0x83, 0xf1, 0x78, 0xf4, 0x83, 0xf1, 0x79, 0xf4, 0x83, 0xf1, 0x79, 0xf4, - 0x83, 0xf1, 0x7a, 0xf4, 0x83, 0xf1, 0x7a, 0xf4, 0x83, 0xf1, 0x7b, 0xf4, - 0x83, 0xf1, 0x7c, 0xf4, 0x83, 0xf1, 0x7c, 0xf4, 0x83, 0xf1, 0x7d, 0xf4, - 0x83, 0xf1, 0x7d, 0xf4, 0x83, 0xf1, 0x7e, 0xf4, 0x83, 0xf1, 0x7e, 0xf4, - 0x83, 0xf1, 0x7f, 0xf4, 0x85, 0xf1, 0x7f, 0xf4, 0x83, 0xf1, 0x80, 0xf4, - 0x85, 0xf1, 0x81, 0xf4, 0x83, 0xf1, 0x81, 0xf4, 0x85, 0xf1, 0x82, 0xf4, - 0x86, 0xf1, 0x82, 0xf4, 0x85, 0xf1, 0x83, 0xf4, 0x86, 0xf1, 0x83, 0xf4, - 0x85, 0xf1, 0x84, 0xf4, 0x86, 0xf1, 0x84, 0xf4, 0x85, 0xf1, 0x85, 0xf4, - 0x86, 0xf1, 0x85, 0xf4, 0x85, 0xf1, 0x86, 0xf4, 0x86, 0xf1, 0x86, 0xf4, - 0x86, 0xf1, 0x87, 0xf5, 0x8b, 0xf1, 0x87, 0xf5, 0x8b, 0xf1, 0x88, 0xf5, - 0x8b, 0xf1, 0x88, 0xf5, 0x8b, 0xf1, 0x89, 0xf5, 0x8b, 0xf1, 0x89, 0xf5, - 0x8b, 0xf1, 0x8a, 0xf5, 0x8b, 0xf1, 0x8a, 0xf5, 0x8b, 0xf1, 0x8b, 0xf5, - 0x8b, 0xf1, 0x8b, 0xf5, 0x8b, 0xf1, 0x8c, 0xf5, 0x8c, 0xf1, 0x8c, 0xf5, - 0x90, 0xf1, 0x8d, 0xf5, 0x90, 0xf1, 0x8d, 0xf5, 0x90, 0xf1, 0x8e, 0xf5, - 0x90, 0xf1, 0x8e, 0xf5, 0x90, 0xf1, 0x8e, 0xf5, 0x90, 0xf1, 0x8f, 0xf5, - 0x90, 0xf1, 0x8f, 0xf5, 0x90, 0xf1, 0x90, 0xf5, 0x90, 0xf1, 0x90, 0xf5, - 0x90, 0xf1, 0x91, 0xf5, 0x91, 0xf1, 0x91, 0xf5, 0x91, 0xf1, 0x92, 0xf5, - 0x92, 0xf1, 0x92, 0xf6, 0x95, 0xf1, 0x93, 0xf6, 0x95, 0xf1, 0x93, 0xf6, - 0x95, 0xf1, 0x94, 0xf6, 0x95, 0xf1, 0x94, 0xf6, 0x95, 0xf1, 0x94, 0xf6, - 0x95, 0xf1, 0x95, 0xf6, 0x95, 0xf1, 0x95, 0xf6, 0x95, 0xf1, 0x96, 0xf6, - 0x96, 0xf1, 0x96, 0xf6, 0x96, 0xf1, 0x97, 0xf6, 0x97, 0xf1, 0x97, 0xf6, - 0x9a, 0xf1, 0x98, 0xf6, 0x9a, 0xf1, 0x98, 0xf6, 0x9a, 0xf1, 0x98, 0xf6, - 0x9a, 0xf1, 0x99, 0xf6, 0x9a, 0xf1, 0x99, 0xf6, 0x9a, 0xf1, 0x9a, 0xf6, - 0x9a, 0xf1, 0x9a, 0xf6, 0x9a, 0xf1, 0x9a, 0xf6, 0x9a, 0xf1, 0x9b, 0xf6, - 0x9b, 0xf1, 0x9b, 0xf6, 0x9b, 0xf1, 0x9c, 0xf7, 0x9e, 0xf1, 0x9c, 0xf7, - 0x9f, 0xf1, 0x9d, 0xf7, 0x9e, 0xf1, 0x9d, 0xf7, 0x9f, 0xf1, 0x9d, 0xf7, - 0x9e, 0xf1, 0x9e, 0xf7, 0x9f, 0xf1, 0x9e, 0xf7, 0x9e, 0xf1, 0x9f, 0xf7, - 0x9f, 0xf1, 0x9f, 0xf7, 0x9f, 0xf1, 0x9f, 0xf7, 0x9f, 0xf1, 0xa0, 0xf7, - 0xa0, 0xf1, 0xa0, 0xf7, 0xa0, 0xf1, 0xa1, 0xf7, 0xa1, 0xf1, 0xa1, 0xf7, - 0xa3, 0xf1, 0xa1, 0xf7, 0xa3, 0xf1, 0xa2, 0xf7, 0xa3, 0xf1, 0xa2, 0xf7, - 0xa3, 0xf1, 0xa3, 0xf7, 0xa3, 0xf1, 0xa3, 0xf7, 0xa3, 0xf1, 0xa3, 0xf7, - 0xa3, 0xf1, 0xa4, 0xf7, 0xa4, 0xf1, 0xa4, 0xf7, 0xa4, 0xf1, 0xa5, 0xf7, - 0xa5, 0xf1, 0xa5, 0xf7, 0xa5, 0xf1, 0xa5, 0xf8, 0xa7, 0xf1, 0xa6, 0xf8, - 0xa7, 0xf1, 0xa6, 0xf8, 0xa7, 0xf1, 0xa6, 0xf8, 0xa7, 0xf1, 0xa7, 0xf8, - 0xa7, 0xf1, 0xa7, 0xf8, 0xa7, 0xf1, 0xa8, 0xf8, 0xa8, 0xf1, 0xa8, 0xf8, - 0xa9, 0xf1, 0xa8, 0xf8, 0xa9, 0xf1, 0xa9, 0xf8, 0xa9, 0xf1, 0xa9, 0xf8, - 0xa9, 0xf1, 0xaa, 0xf8, 0xaa, 0xf1, 0xaa, 0xf8, 0xaa, 0xf1, 0xaa, 0xf8, - 0xab, 0xf1, 0xab, 0xf8, 0xab, 0xf1, 0xab, 0xf8, 0xab, 0xf1, 0xab, 0xf8, - 0xab, 0xf1, 0xac, 0xf8, 0xac, 0xf1, 0xac, 0xf8, 0xac, 0xf1, 0xac, 0xf8, - 0xac, 0xf1, 0xad, 0xf8, 0xad, 0xf1, 0xad, 0xf8, 0xad, 0xf1, 0xae, 0xf8, - 0xae, 0xf1, 0xae, 0xf8, 0xae, 0xf1, 0xae, 0xf8, 0xaf, 0xf1, 0xaf, 0xf8, - 0xaf, 0xf1, 0xaf, 0xf8, 0xaf, 0xf1, 0xaf, 0xf8, 0xaf, 0xf1, 0xb0, 0xf8, - 0xb0, 0xf1, 0xb0, 0xf8, 0xb0, 0xf1, 0xb0, 0xf8, 0xb0, 0xf1, 0xb1, 0xf8, - 0xb1, 0xf1, 0xb1, 0xf8, 0xb1, 0xf1, 0xb2, 0xf8, 0xb2, 0xf1, 0xb2, 0xf8, - 0xb2, 0xf1, 0xb2, 0xf8, 0xb2, 0xf1, 0xb3, 0xf8, 0xb3, 0xf1, 0xb3, 0xf9, - 0xb3, 0xf2, 0xb3, 0xf9, 0xb3, 0xf2, 0xb4, 0xf9, 0xb4, 0xf2, 0xb4, 0xf9, - 0xb4, 0xf2, 0xb4, 0xf9, 0xb4, 0xf2, 0xb5, 0xf9, 0xb5, 0xf2, 0xb5, 0xf9, - 0xb5, 0xf2, 0xb5, 0xf9, 0xb5, 0xf2, 0xb6, 0xf9, 0xb6, 0xf2, 0xb6, 0xf9, - 0xb6, 0xf2, 0xb6, 0xf9, 0xb6, 0xf2, 0xb6, 0xf9, 0xb7, 0xf2, 0xb6, 0xf9, - 0xb7, 0xf2, 0xb7, 0xf9, 0xb7, 0xf3, 0xb8, 0xf9, 0xb8, 0xf3, 0xb8, 0xf9, - 0xb8, 0xf3, 0xb8, 0xf9, 0xb8, 0xf3, 0xb9, 0xf9, 0xb9, 0xf3, 0xb9, 0xf9, - 0xb9, 0xf3, 0xb9, 0xf9, 0xb9, 0xf3, 0xba, 0xf9, 0xba, 0xf3, 0xba, 0xf9, - 0xba, 0xf3, 0xba, 0xf9, 0xba, 0xf3, 0xba, 0xf9, 0xbb, 0xf3, 0xba, 0xf9, - 0xbb, 0xf3, 0xba, 0xf9, 0xbb, 0xf3, 0xbc, 0xf9, 0xbc, 0xf4, 0xbc, 0xf9, - 0xbc, 0xf4, 0xbc, 0xf9, 0xbc, 0xf4, 0xbd, 0xf9, 0xbd, 0xf4, 0xbd, 0xf9, - 0xbd, 0xf4, 0xbd, 0xf9, 0xbd, 0xf4, 0xbe, 0xf9, 0xbe, 0xf4, 0xbd, 0xf9, - 0xbe, 0xf4, 0xbe, 0xf9, 0xbe, 0xf4, 0xbd, 0xf9, 0xbf, 0xf4, 0xbe, 0xf9, - 0xbf, 0xf4, 0xbf, 0xf9, 0xbf, 0xf5, 0xc0, 0xf9, 0xc0, 0xf5, 0xc0, 0xf9, - 0xc0, 0xf5, 0xc0, 0xf9, 0xc0, 0xf5, 0xc1, 0xf9, 0xc1, 0xf5, 0xc1, 0xf9, - 0xc1, 0xf5, 0xc1, 0xf9, 0xc1, 0xf5, 0xc1, 0xf9, 0xc1, 0xf5, 0xc1, 0xf9, - 0xc2, 0xf5, 0xc1, 0xf9, 0xc2, 0xf5, 0xc1, 0xf9, 0xc2, 0xf5, 0xc3, 0xf9, - 0xc3, 0xf6, 0xc3, 0xf9, 0xc3, 0xf6, 0xc3, 0xf9, 0xc3, 0xf6, 0xc4, 0xf9, - 0xc4, 0xf6, 0xc4, 0xf9, 0xc4, 0xf6, 0xc4, 0xf9, 0xc4, 0xf6, 0xc5, 0xf9, - 0xc5, 0xf6, 0xc4, 0xf9, 0xc5, 0xf6, 0xc5, 0xf9, 0xc5, 0xf6, 0xc4, 0xf9, - 0xc6, 0xf6, 0xc5, 0xf9, 0xc6, 0xf6, 0xc4, 0xf9, 0xc6, 0xf6, 0xc5, 0xf9, - 0xc6, 0xf6, 0xca, 0xf9, 0xc7, 0xf3, 0xca, 0xf9, 0xc7, 0xf1, 0xca, 0xf9, - 0xc7, 0xf3, 0xca, 0xf9, 0xc8, 0xf1, 0xca, 0xf9, 0xc8, 0xf3, 0xca, 0xf9, - 0xc8, 0xf1, 0xca, 0xf9, 0xc9, 0xf3, 0xca, 0xf9, 0xc9, 0xf1, 0xca, 0xf9, - 0xc9, 0xf1, 0xca, 0xf9, 0xc9, 0xf1, 0xca, 0xf9, 0xca, 0xf1, 0xca, 0xf9, - 0xc9, 0xf1, 0xca, 0xf9, 0xca, 0xf1, 0xcb, 0xf9, 0xc9, 0xf1, 0xcb, 0xf9, - 0xca, 0xf1, 0xcb, 0xf8, 0xca, 0xf1, 0xcc, 0xf9, 0xca, 0xf1, 0xcc, 0xf8, - 0xca, 0xf1, 0xcc, 0xf9, 0xca, 0xf1, 0xcc, 0xf8, 0xca, 0xf1, 0xcd, 0xf9, - 0xca, 0xf1, 0xcd, 0xf8, 0xca, 0xf1, 0xcd, 0xf9, 0xca, 0xf1, 0xce, 0xfc, - 0xce, 0xf1, 0xce, 0xfc, 0xce, 0xf1, 0xce, 0xfc, 0xce, 0xf1, 0xce, 0xfc, - 0xce, 0xf1, 0xcf, 0xfc, 0xce, 0xf1, 0xcf, 0xfc, 0xce, 0xf1, 0xcf, 0xfc, - 0xce, 0xf1, 0xd0, 0xfc, 0xce, 0xf1, 0xd0, 0xfc, 0xce, 0xf1, 0xd0, 0xfc, - 0xd0, 0xf1, 0xd0, 0xfc, 0xd0, 0xf1, 0xd1, 0xfc, 0xd1, 0xf1, 0xd1, 0xfc, - 0xd1, 0xf1, 0xd1, 0xfc, 0xd1, 0xf1, 0xd2, 0xfc, 0xd1, 0xf1, 0xd2, 0xfc, - 0xd1, 0xf1, 0xd2, 0xfc, 0xd1, 0xf1, 0xd2, 0xfc, 0xd1, 0xf1, 0xd3, 0xfc, - 0xd1, 0xf1, 0xd3, 0xfc, 0xd3, 0xf1, 0xd3, 0xfc, 0xd3, 0xf1, 0xd4, 0xfc, - 0xd4, 0xf1, 0xd4, 0xfc, 0xd4, 0xf1, 0xd4, 0xfc, 0xd4, 0xf1, 0xd4, 0xfc, - 0xd4, 0xf1, 0xd5, 0xfc, 0xd4, 0xf1, 0xd5, 0xfc, 0xd4, 0xf1, 0xd5, 0xfc, - 0xd4, 0xf1, 0xd6, 0xfc, 0xd4, 0xf1, 0xd6, 0xfc, 0xd4, 0xf1, 0xd6, 0xfc, - 0xd4, 0xf1, 0xd6, 0xfc, 0xd4, 0xf1, 0xd7, 0xfd, 0xd7, 0xf1, 0xd7, 0xfd, - 0xd7, 0xf1, 0xd7, 0xfd, 0xd7, 0xf1, 0xd7, 0xfd, 0xd7, 0xf1, 0xd8, 0xfd, - 0xd7, 0xf1, 0xd8, 0xfd, 0xd7, 0xf1, 0xd8, 0xfd, 0xd7, 0xf1, 0xd9, 0xfd, - 0xd7, 0xf1, 0xd9, 0xfd, 0xd7, 0xf1, 0xd9, 0xfd, 0xd7, 0xf1, 0xd9, 0xfd, - 0xd7, 0xf1, 0xda, 0xfd, 0xda, 0xf1, 0xda, 0xfd, 0xda, 0xf1, 0xda, 0xfd, - 0xda, 0xf1, 0xda, 0xfd, 0xda, 0xf1, 0xdb, 0xfd, 0xda, 0xf1, 0xdb, 0xfd, - 0xda, 0xf1, 0xdb, 0xfd, 0xda, 0xf1, 0xdb, 0xfd, 0xda, 0xf1, 0xdc, 0xfd, - 0xda, 0xf1, 0xdc, 0xfd, 0xda, 0xf1, 0xdc, 0xfd, 0xda, 0xf1, 0xdd, 0xfe, - 0xdd, 0xf1, 0xdd, 0xfe, 0xdd, 0xf1, 0xdd, 0xfe, 0xdd, 0xf1, 0xdd, 0xfe, - 0xdd, 0xf1, 0xde, 0xfb, 0xe3, 0xf1, 0xde, 0xf9, 0xe3, 0xf1, 0xde, 0xfb, - 0xe3, 0xf1, 0xde, 0xf9, 0xe3, 0xf1, 0xdf, 0xfb, 0xe3, 0xf1, 0xdf, 0xf9, - 0xe3, 0xf1, 0xdf, 0xf9, 0xe3, 0xf1, 0xdf, 0xf9, 0xe3, 0xf1, 0xe0, 0xf9, - 0xe3, 0xf1, 0xe0, 0xf9, 0xe3, 0xf1, 0xe0, 0xf9, 0xe3, 0xf1, 0xe1, 0xf9, - 0xe3, 0xf1, 0xe1, 0xf9, 0xe3, 0xf1, 0xe1, 0xf9, 0xe3, 0xf1, 0xe1, 0xf9, - 0xe3, 0xf1, 0xe2, 0xf9, 0xe3, 0xf1, 0xe2, 0xf9, 0xe3, 0xf1, 0xe2, 0xf9, - 0xe3, 0xf1, 0xe2, 0xf9, 0xe3, 0xf1, 0xe3, 0xf9, 0xe3, 0xf1, 0xe3, 0xf9, - 0xe3, 0xf1, 0xe3, 0xf9, 0xe3, 0xf1, 0xe3, 0xf9, 0xe3, 0xf1, 0xe3, 0xf9, - 0xe4, 0xf1, 0xe3, 0xf9, 0xe4, 0xf1, 0xe3, 0xf9, 0xe4, 0xf1, 0xe5, 0xf9, - 0xe4, 0xf1, 0xe5, 0xf9, 0xe5, 0xf2, 0xe5, 0xf9, 0xe5, 0xf1, 0xe6, 0xf9, - 0xe5, 0xf1, 0xe5, 0xf9, 0xe5, 0xf1, 0xe6, 0xf9, 0xe5, 0xf1, 0xe6, 0xf9, - 0xe5, 0xf1, 0xe6, 0xf9, 0xe5, 0xf1, 0xe6, 0xf9, 0xe5, 0xf1, 0xe7, 0xf9, - 0xe5, 0xf1, 0xe7, 0xf9, 0xe5, 0xf1, 0xe7, 0xf9, 0xe5, 0xf1, 0xe7, 0xf8, - 0xe5, 0xf1, 0xe8, 0xf9, 0xe5, 0xf1, 0xe8, 0xf8, 0xe5, 0xf1, 0xe8, 0xf9, - 0xe5, 0xf1, 0xe8, 0xf8, 0xe5, 0xf1, 0xe9, 0xf9, 0xe5, 0xf1, 0xe9, 0xf8, - 0xe5, 0xf1, 0xe9, 0xf9, 0xe5, 0xf1, 0xe9, 0xf8, 0xe5, 0xf1, 0xea, 0xf9, - 0xe5, 0xf1, 0xea, 0xf8, 0xe5, 0xf1, 0xea, 0xf9, 0xe5, 0xf1, 0xea, 0xfa, - 0xef, 0xf1, 0xeb, 0xf9, 0xef, 0xf1, 0xeb, 0xfa, 0xef, 0xf1, 0xeb, 0xf9, - 0xef, 0xf1, 0xeb, 0xfa, 0xef, 0xf1, 0xec, 0xf9, 0xef, 0xf1, 0xec, 0xfa, - 0xef, 0xf1, 0xec, 0xf9, 0xef, 0xf1, 0xec, 0xfa, 0xef, 0xf1, 0xec, 0xf9, - 0xef, 0xf1, 0xed, 0xfa, 0xef, 0xf1, 0xed, 0xf9, 0xef, 0xf1, 0xed, 0xf9, - 0xef, 0xf1, 0xed, 0xf9, 0xef, 0xf1, 0xee, 0xf9, 0xef, 0xf1, 0xee, 0xf9, - 0xef, 0xf1, 0xee, 0xf9, 0xef, 0xf1, 0xee, 0xf9, 0xef, 0xf1, 0xef, 0xf9, - 0xef, 0xf1, 0xef, 0xf9, 0xef, 0xf0, 0xef, 0xf9, 0xef, 0xf1, 0xef, 0xf9, - 0xef, 0xf1, 0xf0, 0xf9, 0xef, 0xf1, 0xf0, 0xf9, 0xef, 0xf1, 0xf0, 0xf9, - 0xef, 0xf1, 0xf0, 0xf8, 0xef, 0xf1, 0xf1, 0xf9, 0xef, 0xf1, 0xf1, 0xf8, - 0xef, 0xf1, 0xf1, 0xf9, 0xef, 0xf1, 0xf1, 0xf8, 0xef, 0xf1, 0xf2, 0xf9, - 0xef, 0xf1, 0xf2, 0xf8, 0xef, 0xf1, 0xf2, 0xf9, 0xef, 0xf1, 0xf2, 0xf8, - 0xef, 0xf1, 0xf2, 0xf9, 0xef, 0xf1, 0xf3, 0xf8, 0xef, 0xf1, 0xf3, 0xf9, - 0xef, 0xf1, 0xf3, 0xf8, 0xef, 0xf1, 0xf3, 0xf9, 0xef, 0xf1, 0xf4, 0xf8, - 0xef, 0xf1, 0xf4, 0xf9, 0xef, 0xf1, 0xf4, 0xf8, 0xef, 0xf1, 0xf4, 0xf9, - 0xef, 0xf1, 0xf5, 0xf8, 0xef, 0xf1, 0xf5, 0xf9, 0xef, 0xf1, 0xf5, 0xf8, - 0xef, 0xf1, 0xf5, 0xf7, 0xf0, 0xf1, 0xf5, 0xf8, 0xef, 0xf1, 0xf6, 0xf7, - 0xf0, 0xf1, 0xf6, 0xf8, 0xef, 0xf1, 0xf6, 0xf7, 0xf0, 0xf1, 0xf6, 0xf8, - 0xef, 0xf1, 0xf7, 0xf7, 0xf0, 0xf1, 0xf7, 0xf8, 0xef, 0xf1, 0xf7, 0xf7, - 0xf0, 0xf1, 0xf7, 0xf8, 0xef, 0xf1, 0xf8, 0xf7, 0xf0, 0xf1, 0xf8, 0xf8, - 0xef, 0xf1, 0xf8, 0xf7, 0xf0, 0xf1, 0xf8, 0xf8, 0xef, 0xf1, 0xf8, 0xf7, - 0xf0, 0xf1, 0xf9, 0xf8, 0xef, 0xf1, 0xf9, 0xf7, 0xf0, 0xf1, 0xf9, 0xf8, - 0xef, 0xf1, 0xf9, 0xf7, 0xf0, 0xf1, 0xfa, 0xf8, 0xef, 0xf1, 0xfa, 0xf7, - 0xf0, 0xf1, 0xfa, 0xf8, 0xef, 0xf1, 0xfa, 0xf7, 0xf0, 0xf1, 0xfa, 0xf8, - 0xef, 0xf1, 0xfb, 0xf7, 0xf0, 0xf1, 0xfb, 0xf8, 0xef, 0xf1, 0xfb, 0xf7, - 0xf0, 0xf1, 0xfb, 0xf8, 0xef, 0xf1, 0xfc, 0xf7, 0xf0, 0xf1, 0xfc, 0xf8, - 0xef, 0xf1, 0xfc, 0xf7, 0xf0, 0xf1, 0xfc, 0xf8, 0xef, 0xf1, 0xfc, 0xf7, - 0xf0, 0xf1, 0xfd, 0xf8, 0xef, 0xf1, 0xfd, 0xf7, 0xf0, 0xf1, 0xfd, 0xf8, - 0xef, 0xf1, 0xfd, 0xf7, 0xf0, 0xf1, 0xfe, 0xf5, 0xf0, 0xf1, 0xfe, 0xf7, - 0xf0, 0xf1, 0xfe, 0xf5, 0xf0, 0xf1, 0xfe, 0xf7, 0xf0, 0xf1, 0xfe, 0xf5, - 0xf0, 0xf1, 0xff, 0xf7, 0xf0, 0xf1, 0xff, 0xf5, 0xf0, 0xf1, 0x03, 0xf4, - 0x83, 0xf2, 0x0a, 0xf4, 0x83, 0xf2, 0x0f, 0xf4, 0x83, 0xf2, 0x14, 0xf4, - 0x83, 0xf2, 0x17, 0xf4, 0x83, 0xf2, 0x1b, 0xf4, 0x83, 0xf2, 0x1e, 0xf4, - 0x83, 0xf2, 0x20, 0xf4, 0x83, 0xf2, 0x23, 0xf4, 0x83, 0xf2, 0x25, 0xf4, - 0x83, 0xf2, 0x27, 0xf4, 0x83, 0xf2, 0x29, 0xf4, 0x83, 0xf2, 0x2b, 0xf4, - 0x83, 0xf2, 0x2d, 0xf4, 0x83, 0xf2, 0x2f, 0xf4, 0x83, 0xf2, 0x31, 0xf4, - 0x83, 0xf2, 0x32, 0xf4, 0x83, 0xf2, 0x34, 0xf4, 0x83, 0xf2, 0x35, 0xf4, - 0x83, 0xf2, 0x37, 0xf4, 0x83, 0xf2, 0x38, 0xf4, 0x83, 0xf2, 0x3a, 0xf4, - 0x83, 0xf2, 0x3b, 0xf4, 0x83, 0xf2, 0x3c, 0xf4, 0x83, 0xf2, 0x3e, 0xf4, - 0x83, 0xf2, 0x3f, 0xf4, 0x83, 0xf2, 0x40, 0xf4, 0x83, 0xf2, 0x42, 0xf4, - 0x83, 0xf2, 0x43, 0xf4, 0x83, 0xf2, 0x44, 0xf4, 0x83, 0xf2, 0x45, 0xf4, - 0x83, 0xf2, 0x46, 0xf4, 0x83, 0xf2, 0x47, 0xf4, 0x83, 0xf2, 0x48, 0xf4, - 0x83, 0xf2, 0x49, 0xf4, 0x83, 0xf2, 0x4a, 0xf4, 0x83, 0xf2, 0x4b, 0xf4, - 0x83, 0xf2, 0x4c, 0xf4, 0x83, 0xf2, 0x4d, 0xf4, 0x83, 0xf2, 0x4e, 0xf4, - 0x83, 0xf2, 0x4f, 0xf4, 0x83, 0xf2, 0x50, 0xf4, 0x83, 0xf2, 0x51, 0xf4, - 0x83, 0xf2, 0x52, 0xf4, 0x83, 0xf2, 0x53, 0xf4, 0x83, 0xf2, 0x54, 0xf4, - 0x83, 0xf2, 0x55, 0xf4, 0x83, 0xf2, 0x56, 0xf4, 0x83, 0xf2, 0x57, 0xf4, - 0x83, 0xf2, 0x58, 0xf4, 0x83, 0xf2, 0x58, 0xf4, 0x83, 0xf2, 0x59, 0xf4, - 0x83, 0xf2, 0x5a, 0xf4, 0x83, 0xf2, 0x5b, 0xf4, 0x83, 0xf2, 0x5c, 0xf4, - 0x83, 0xf2, 0x5d, 0xf4, 0x83, 0xf2, 0x5d, 0xf4, 0x83, 0xf2, 0x5e, 0xf4, - 0x83, 0xf2, 0x5f, 0xf4, 0x83, 0xf2, 0x60, 0xf4, 0x83, 0xf2, 0x60, 0xf4, - 0x83, 0xf2, 0x61, 0xf4, 0x83, 0xf2, 0x62, 0xf4, 0x83, 0xf2, 0x63, 0xf4, - 0x83, 0xf2, 0x63, 0xf4, 0x83, 0xf2, 0x64, 0xf4, 0x83, 0xf2, 0x65, 0xf4, - 0x83, 0xf2, 0x66, 0xf4, 0x83, 0xf2, 0x66, 0xf4, 0x83, 0xf2, 0x67, 0xf4, - 0x83, 0xf2, 0x68, 0xf4, 0x83, 0xf2, 0x68, 0xf4, 0x83, 0xf2, 0x69, 0xf4, - 0x83, 0xf2, 0x6a, 0xf4, 0x83, 0xf2, 0x6a, 0xf4, 0x83, 0xf2, 0x6b, 0xf4, - 0x83, 0xf2, 0x6c, 0xf4, 0x83, 0xf2, 0x6c, 0xf4, 0x83, 0xf2, 0x6d, 0xf4, - 0x83, 0xf2, 0x6e, 0xf4, 0x83, 0xf2, 0x6e, 0xf4, 0x83, 0xf2, 0x6f, 0xf4, - 0x83, 0xf2, 0x70, 0xf4, 0x83, 0xf2, 0x70, 0xf4, 0x83, 0xf2, 0x71, 0xf4, - 0x83, 0xf2, 0x72, 0xf4, 0x83, 0xf2, 0x72, 0xf4, 0x83, 0xf2, 0x73, 0xf4, - 0x83, 0xf2, 0x73, 0xf4, 0x83, 0xf2, 0x74, 0xf4, 0x83, 0xf2, 0x75, 0xf4, - 0x83, 0xf2, 0x75, 0xf4, 0x83, 0xf2, 0x76, 0xf4, 0x83, 0xf2, 0x76, 0xf4, - 0x83, 0xf2, 0x77, 0xf4, 0x83, 0xf2, 0x78, 0xf4, 0x83, 0xf2, 0x78, 0xf4, - 0x83, 0xf2, 0x79, 0xf4, 0x83, 0xf2, 0x79, 0xf4, 0x83, 0xf2, 0x7a, 0xf4, - 0x83, 0xf2, 0x7a, 0xf4, 0x83, 0xf2, 0x7b, 0xf4, 0x83, 0xf2, 0x7c, 0xf4, - 0x83, 0xf2, 0x7c, 0xf4, 0x83, 0xf2, 0x7d, 0xf4, 0x83, 0xf2, 0x7d, 0xf4, - 0x83, 0xf2, 0x7e, 0xf4, 0x83, 0xf2, 0x7e, 0xf4, 0x83, 0xf2, 0x7f, 0xf4, - 0x83, 0xf2, 0x7f, 0xf4, 0x83, 0xf2, 0x80, 0xf4, 0x83, 0xf2, 0x81, 0xf4, - 0x83, 0xf2, 0x81, 0xf4, 0x83, 0xf2, 0x82, 0xf4, 0x83, 0xf2, 0x82, 0xf4, - 0x83, 0xf2, 0x83, 0xf4, 0x83, 0xf2, 0x83, 0xf4, 0x83, 0xf2, 0x84, 0xf5, - 0x88, 0xf2, 0x84, 0xf5, 0x88, 0xf2, 0x85, 0xf5, 0x88, 0xf2, 0x85, 0xf5, - 0x88, 0xf2, 0x86, 0xf5, 0x88, 0xf2, 0x86, 0xf5, 0x88, 0xf2, 0x87, 0xf5, - 0x88, 0xf2, 0x87, 0xf5, 0x88, 0xf2, 0x88, 0xf5, 0x88, 0xf2, 0x88, 0xf5, - 0x88, 0xf2, 0x89, 0xf5, 0x89, 0xf2, 0x89, 0xf5, 0x8d, 0xf2, 0x8a, 0xf5, - 0x8e, 0xf2, 0x8a, 0xf5, 0x8d, 0xf2, 0x8b, 0xf5, 0x8e, 0xf2, 0x8b, 0xf5, - 0x8d, 0xf2, 0x8c, 0xf5, 0x8e, 0xf2, 0x8c, 0xf5, 0x8d, 0xf2, 0x8d, 0xf5, - 0x8e, 0xf2, 0x8d, 0xf5, 0x8d, 0xf2, 0x8e, 0xf5, 0x8e, 0xf2, 0x8e, 0xf5, - 0x8e, 0xf2, 0x8e, 0xf5, 0x92, 0xf2, 0x8f, 0xf5, 0x93, 0xf2, 0x8f, 0xf5, - 0x92, 0xf2, 0x90, 0xf5, 0x93, 0xf2, 0x90, 0xf5, 0x92, 0xf2, 0x91, 0xf5, - 0x93, 0xf2, 0x91, 0xf5, 0x92, 0xf2, 0x92, 0xf5, 0x93, 0xf2, 0x92, 0xf5, - 0x92, 0xf2, 0x93, 0xf5, 0x93, 0xf2, 0x93, 0xf5, 0x93, 0xf2, 0x94, 0xf5, - 0x94, 0xf2, 0x94, 0xf5, 0x94, 0xf2, 0x94, 0xf6, 0x97, 0xf2, 0x95, 0xf6, - 0x98, 0xf2, 0x95, 0xf6, 0x97, 0xf2, 0x96, 0xf6, 0x98, 0xf2, 0x96, 0xf6, - 0x97, 0xf2, 0x97, 0xf6, 0x98, 0xf2, 0x97, 0xf6, 0x97, 0xf2, 0x98, 0xf6, - 0x98, 0xf2, 0x98, 0xf6, 0x98, 0xf2, 0x98, 0xf6, 0x98, 0xf2, 0x99, 0xf6, - 0x99, 0xf2, 0x99, 0xf6, 0x9c, 0xf2, 0x9a, 0xf6, 0x9c, 0xf2, 0x9a, 0xf6, - 0x9c, 0xf2, 0x9a, 0xf6, 0x9c, 0xf2, 0x9b, 0xf6, 0x9c, 0xf2, 0x9b, 0xf6, - 0x9c, 0xf2, 0x9c, 0xf6, 0x9c, 0xf2, 0x9c, 0xf6, 0x9c, 0xf2, 0x9d, 0xf6, - 0x9d, 0xf2, 0x9d, 0xf6, 0x9d, 0xf2, 0x9d, 0xf6, 0x9d, 0xf2, 0x9e, 0xf7, - 0xa0, 0xf2, 0x9e, 0xf7, 0xa1, 0xf2, 0x9f, 0xf7, 0xa0, 0xf2, 0x9f, 0xf7, - 0xa1, 0xf2, 0x9f, 0xf7, 0xa0, 0xf2, 0xa0, 0xf7, 0xa1, 0xf2, 0xa0, 0xf7, - 0xa0, 0xf2, 0xa1, 0xf7, 0xa1, 0xf2, 0xa1, 0xf7, 0xa1, 0xf2, 0xa1, 0xf7, - 0xa1, 0xf2, 0xa2, 0xf7, 0xa2, 0xf2, 0xa2, 0xf7, 0xa2, 0xf2, 0xa3, 0xf7, - 0xa3, 0xf2, 0xa3, 0xf7, 0xa5, 0xf2, 0xa3, 0xf7, 0xa5, 0xf2, 0xa4, 0xf7, - 0xa5, 0xf2, 0xa4, 0xf7, 0xa5, 0xf2, 0xa5, 0xf7, 0xa5, 0xf2, 0xa5, 0xf7, - 0xa5, 0xf2, 0xa5, 0xf7, 0xa5, 0xf2, 0xa6, 0xf7, 0xa6, 0xf2, 0xa6, 0xf7, - 0xa6, 0xf2, 0xa6, 0xf7, 0xa6, 0xf2, 0xa7, 0xf7, 0xa7, 0xf2, 0xa7, 0xf8, - 0xa9, 0xf2, 0xa8, 0xf8, 0xa9, 0xf2, 0xa8, 0xf8, 0xa9, 0xf2, 0xa8, 0xf8, - 0xa9, 0xf2, 0xa9, 0xf8, 0xa9, 0xf2, 0xa9, 0xf8, 0xa9, 0xf2, 0xaa, 0xf8, - 0xaa, 0xf2, 0xaa, 0xf8, 0xaa, 0xf2, 0xaa, 0xf8, 0xaa, 0xf2, 0xab, 0xf8, - 0xab, 0xf2, 0xab, 0xf8, 0xab, 0xf2, 0xab, 0xf8, 0xad, 0xf2, 0xac, 0xf8, - 0xad, 0xf2, 0xac, 0xf8, 0xad, 0xf2, 0xac, 0xf8, 0xad, 0xf2, 0xad, 0xf8, - 0xad, 0xf2, 0xad, 0xf8, 0xad, 0xf2, 0xae, 0xf8, 0xae, 0xf2, 0xae, 0xf8, - 0xae, 0xf2, 0xae, 0xf8, 0xae, 0xf2, 0xaf, 0xf8, 0xaf, 0xf2, 0xaf, 0xf8, - 0xaf, 0xf2, 0xaf, 0xf8, 0xaf, 0xf2, 0xb0, 0xf8, 0xb0, 0xf2, 0xb0, 0xf9, - 0xb1, 0xf2, 0xb0, 0xf9, 0xb1, 0xf2, 0xb1, 0xf9, 0xb1, 0xf2, 0xb1, 0xf9, - 0xb1, 0xf2, 0xb2, 0xf9, 0xb2, 0xf2, 0xb2, 0xf9, 0xb2, 0xf2, 0xb2, 0xf9, - 0xb2, 0xf2, 0xb3, 0xf9, 0xb3, 0xf2, 0xb3, 0xf9, 0xb3, 0xf2, 0xb3, 0xf9, - 0xb3, 0xf2, 0xb4, 0xf9, 0xb4, 0xf2, 0xb4, 0xf9, 0xb4, 0xf2, 0xb4, 0xf9, - 0xb4, 0xf2, 0xb5, 0xf9, 0xb5, 0xf3, 0xb5, 0xf9, 0xb5, 0xf3, 0xb5, 0xf9, - 0xb5, 0xf3, 0xb6, 0xf9, 0xb6, 0xf3, 0xb6, 0xf9, 0xb6, 0xf3, 0xb6, 0xf9, - 0xb6, 0xf3, 0xb7, 0xf9, 0xb7, 0xf3, 0xb7, 0xf9, 0xb7, 0xf3, 0xb7, 0xf9, - 0xb7, 0xf3, 0xb8, 0xf9, 0xb8, 0xf3, 0xb8, 0xf9, 0xb8, 0xf3, 0xb8, 0xf9, - 0xb8, 0xf3, 0xb8, 0xf9, 0xb9, 0xf3, 0xb9, 0xf9, 0xb9, 0xf4, 0xb9, 0xf9, - 0xb9, 0xf4, 0xba, 0xf9, 0xba, 0xf4, 0xba, 0xf9, 0xba, 0xf4, 0xba, 0xf9, - 0xba, 0xf4, 0xbb, 0xf9, 0xbb, 0xf4, 0xbb, 0xf9, 0xbb, 0xf4, 0xbb, 0xf9, - 0xbb, 0xf4, 0xbc, 0xf9, 0xbc, 0xf4, 0xbb, 0xf9, 0xbc, 0xf4, 0xbc, 0xf9, - 0xbc, 0xf4, 0xbb, 0xf9, 0xbd, 0xf4, 0xbc, 0xf9, 0xbd, 0xf4, 0xbd, 0xf9, - 0xbd, 0xf5, 0xbe, 0xf9, 0xbe, 0xf5, 0xbe, 0xf9, 0xbe, 0xf5, 0xbe, 0xf9, - 0xbe, 0xf5, 0xbf, 0xf9, 0xbf, 0xf5, 0xbf, 0xf9, 0xbf, 0xf5, 0xbf, 0xf9, - 0xbf, 0xf5, 0xbf, 0xf9, 0xc0, 0xf5, 0xbf, 0xf9, 0xc0, 0xf5, 0xbf, 0xf9, - 0xc0, 0xf5, 0xbf, 0xf9, 0xc1, 0xf5, 0xc1, 0xf9, 0xc1, 0xf6, 0xc1, 0xf9, - 0xc1, 0xf6, 0xc1, 0xf9, 0xc1, 0xf6, 0xc2, 0xf9, 0xc2, 0xf6, 0xc2, 0xf9, - 0xc2, 0xf6, 0xc2, 0xf9, 0xc2, 0xf6, 0xc3, 0xf9, 0xc3, 0xf6, 0xc2, 0xf9, - 0xc3, 0xf6, 0xc3, 0xf9, 0xc3, 0xf6, 0xc2, 0xf9, 0xc4, 0xf6, 0xc3, 0xf9, - 0xc4, 0xf6, 0xc4, 0xf9, 0xc4, 0xf7, 0xc5, 0xf9, 0xc5, 0xf7, 0xc5, 0xf9, - 0xc5, 0xf7, 0xc5, 0xf9, 0xc5, 0xf7, 0xc6, 0xf9, 0xc6, 0xf7, 0xc6, 0xf9, - 0xc6, 0xf7, 0xc6, 0xf9, 0xc6, 0xf7, 0xc6, 0xf9, 0xc6, 0xf7, 0xc6, 0xf9, - 0xc7, 0xf7, 0xca, 0xf9, 0xc7, 0xf2, 0xca, 0xf9, 0xc7, 0xf4, 0xca, 0xf9, - 0xc8, 0xf2, 0xca, 0xf9, 0xc8, 0xf4, 0xca, 0xf9, 0xc8, 0xf2, 0xca, 0xf9, - 0xc9, 0xf4, 0xca, 0xf9, 0xc9, 0xf2, 0xca, 0xf9, 0xc9, 0xf2, 0xca, 0xf9, - 0xc9, 0xf2, 0xca, 0xf9, 0xca, 0xf2, 0xca, 0xf9, 0xc9, 0xf2, 0xca, 0xf9, - 0xca, 0xf2, 0xcb, 0xf9, 0xc9, 0xf2, 0xcb, 0xf9, 0xca, 0xf2, 0xcb, 0xf8, - 0xca, 0xf2, 0xcc, 0xf9, 0xca, 0xf2, 0xcc, 0xf8, 0xca, 0xf2, 0xcc, 0xf9, - 0xca, 0xf2, 0xcc, 0xf8, 0xca, 0xf2, 0xcd, 0xf9, 0xca, 0xf2, 0xcd, 0xfb, - 0xcc, 0xf2, 0xcd, 0xfb, 0xcc, 0xf2, 0xce, 0xfb, 0xcc, 0xf2, 0xce, 0xfb, - 0xcc, 0xf2, 0xce, 0xfb, 0xcc, 0xf2, 0xce, 0xfc, 0xce, 0xf2, 0xcf, 0xfc, - 0xcf, 0xf2, 0xcf, 0xfc, 0xcf, 0xf2, 0xcf, 0xfc, 0xcf, 0xf2, 0xd0, 0xfc, - 0xd0, 0xf2, 0xd0, 0xfc, 0xcf, 0xf2, 0xd0, 0xfc, 0xd0, 0xf2, 0xd0, 0xfc, - 0xcf, 0xf2, 0xd1, 0xfc, 0xd0, 0xf2, 0xd1, 0xfc, 0xcf, 0xf2, 0xd1, 0xfc, - 0xd0, 0xf2, 0xd2, 0xfc, 0xd2, 0xf2, 0xd2, 0xfc, 0xd2, 0xf2, 0xd2, 0xfc, - 0xd2, 0xf2, 0xd2, 0xfc, 0xd2, 0xf2, 0xd3, 0xfc, 0xd3, 0xf2, 0xd3, 0xfc, - 0xd2, 0xf2, 0xd3, 0xfc, 0xd3, 0xf2, 0xd4, 0xfc, 0xd2, 0xf2, 0xd4, 0xfc, - 0xd3, 0xf2, 0xd4, 0xfc, 0xd2, 0xf2, 0xd4, 0xfc, 0xd3, 0xf2, 0xd5, 0xfd, - 0xd5, 0xf2, 0xd5, 0xfd, 0xd5, 0xf2, 0xd5, 0xfd, 0xd5, 0xf2, 0xd6, 0xfd, - 0xd6, 0xf2, 0xd6, 0xfd, 0xd6, 0xf2, 0xd6, 0xfd, 0xd6, 0xf2, 0xd6, 0xfd, - 0xd6, 0xf2, 0xd7, 0xfd, 0xd6, 0xf2, 0xd7, 0xfd, 0xd6, 0xf2, 0xd7, 0xfd, - 0xd6, 0xf2, 0xd7, 0xfd, 0xd6, 0xf2, 0xd8, 0xfd, 0xd6, 0xf2, 0xd8, 0xfd, - 0xd6, 0xf2, 0xd8, 0xfd, 0xd8, 0xf2, 0xd9, 0xfd, 0xd9, 0xf2, 0xd9, 0xfd, - 0xd9, 0xf2, 0xd9, 0xfd, 0xd9, 0xf2, 0xd9, 0xfd, 0xd9, 0xf2, 0xda, 0xfd, - 0xd9, 0xf2, 0xda, 0xfd, 0xd9, 0xf2, 0xda, 0xfd, 0xd9, 0xf2, 0xda, 0xfd, - 0xd9, 0xf2, 0xdb, 0xfd, 0xd9, 0xf2, 0xdb, 0xfd, 0xd9, 0xf2, 0xdb, 0xfe, - 0xdb, 0xf2, 0xdb, 0xfe, 0xdb, 0xf2, 0xdc, 0xfe, 0xdc, 0xf2, 0xdc, 0xfe, - 0xdb, 0xf2, 0xdc, 0xfe, 0xdc, 0xf2, 0xdd, 0xfe, 0xdb, 0xf2, 0xdd, 0xfe, - 0xdc, 0xf2, 0xdd, 0xfe, 0xdb, 0xf2, 0xdd, 0xfe, 0xdc, 0xf2, 0xde, 0xfb, - 0xe3, 0xf2, 0xde, 0xfa, 0xe3, 0xf2, 0xde, 0xfb, 0xe3, 0xf2, 0xde, 0xfa, - 0xe3, 0xf2, 0xdf, 0xfb, 0xe3, 0xf2, 0xdf, 0xfa, 0xe3, 0xf2, 0xdf, 0xf9, - 0xe3, 0xf2, 0xdf, 0xfa, 0xe3, 0xf2, 0xe0, 0xf9, 0xe3, 0xf2, 0xe0, 0xfa, - 0xe3, 0xf2, 0xe0, 0xf9, 0xe3, 0xf2, 0xe1, 0xfa, 0xe3, 0xf2, 0xe1, 0xf9, - 0xe3, 0xf2, 0xe1, 0xfa, 0xe3, 0xf2, 0xe1, 0xf9, 0xe3, 0xf2, 0xe2, 0xfa, - 0xe3, 0xf2, 0xe2, 0xf9, 0xe3, 0xf2, 0xe2, 0xfa, 0xe3, 0xf2, 0xe2, 0xf9, - 0xe3, 0xf2, 0xe3, 0xfa, 0xe3, 0xf2, 0xe3, 0xf9, 0xe3, 0xf2, 0xe3, 0xfa, - 0xe3, 0xf2, 0xe3, 0xf9, 0xe3, 0xf2, 0xe3, 0xf9, 0xe4, 0xf2, 0xe3, 0xf9, - 0xe4, 0xf2, 0xe3, 0xf9, 0xe4, 0xf2, 0xe5, 0xf9, 0xe4, 0xf2, 0xe5, 0xf9, - 0xe5, 0xf2, 0xe5, 0xf9, 0xe5, 0xf2, 0xe5, 0xf9, 0xe5, 0xf2, 0xe5, 0xf9, - 0xe5, 0xf2, 0xe6, 0xf9, 0xe5, 0xf2, 0xe6, 0xf9, 0xe5, 0xf2, 0xe6, 0xf9, - 0xe5, 0xf2, 0xe6, 0xf9, 0xe5, 0xf2, 0xe7, 0xf9, 0xe5, 0xf2, 0xe7, 0xf9, - 0xe5, 0xf2, 0xe7, 0xf9, 0xe5, 0xf2, 0xe7, 0xf9, 0xe5, 0xf2, 0xe8, 0xf9, - 0xe5, 0xf2, 0xe8, 0xf9, 0xe5, 0xf2, 0xe8, 0xf9, 0xe5, 0xf2, 0xe8, 0xf9, - 0xe5, 0xf2, 0xe9, 0xf9, 0xe5, 0xf2, 0xe9, 0xf9, 0xe5, 0xf2, 0xe9, 0xf9, - 0xe5, 0xf2, 0xe9, 0xf7, 0xe5, 0xf2, 0xea, 0xf9, 0xe5, 0xf2, 0xea, 0xf7, - 0xe5, 0xf2, 0xea, 0xf9, 0xef, 0xf2, 0xea, 0xfa, 0xef, 0xf2, 0xeb, 0xf9, - 0xef, 0xf2, 0xeb, 0xfa, 0xef, 0xf2, 0xeb, 0xf9, 0xef, 0xf2, 0xeb, 0xfa, - 0xef, 0xf2, 0xec, 0xf9, 0xef, 0xf2, 0xec, 0xfa, 0xef, 0xf2, 0xec, 0xf9, - 0xef, 0xf2, 0xec, 0xfa, 0xef, 0xf2, 0xec, 0xf9, 0xef, 0xf2, 0xed, 0xfa, - 0xef, 0xf2, 0xed, 0xf9, 0xef, 0xf2, 0xed, 0xfa, 0xef, 0xf2, 0xed, 0xf9, - 0xef, 0xf2, 0xee, 0xfa, 0xef, 0xf2, 0xee, 0xf9, 0xef, 0xf2, 0xee, 0xf9, - 0xef, 0xf2, 0xee, 0xf9, 0xef, 0xf2, 0xef, 0xf9, 0xef, 0xf2, 0xee, 0xf9, - 0xef, 0xf2, 0xef, 0xf9, 0xef, 0xf2, 0xef, 0xf9, 0xef, 0xf2, 0xf0, 0xf9, - 0xef, 0xf2, 0xf0, 0xf9, 0xef, 0xf2, 0xf0, 0xf9, 0xef, 0xf2, 0xf0, 0xf8, - 0xef, 0xf2, 0xf1, 0xf9, 0xef, 0xf2, 0xf1, 0xf8, 0xef, 0xf2, 0xf1, 0xf9, - 0xef, 0xf2, 0xf1, 0xf8, 0xef, 0xf2, 0xf2, 0xf9, 0xef, 0xf2, 0xf2, 0xf8, - 0xef, 0xf2, 0xf2, 0xf9, 0xef, 0xf2, 0xf2, 0xf8, 0xef, 0xf2, 0xf2, 0xf9, - 0xef, 0xf2, 0xf3, 0xf8, 0xef, 0xf2, 0xf3, 0xf9, 0xef, 0xf2, 0xf3, 0xf8, - 0xef, 0xf2, 0xf3, 0xf9, 0xef, 0xf2, 0xf4, 0xf8, 0xef, 0xf2, 0xf4, 0xf9, - 0xef, 0xf2, 0xf4, 0xf8, 0xef, 0xf2, 0xf4, 0xf9, 0xef, 0xf2, 0xf5, 0xf8, - 0xef, 0xf2, 0xf5, 0xf9, 0xef, 0xf2, 0xf5, 0xf8, 0xef, 0xf2, 0xf5, 0xf9, - 0xef, 0xf2, 0xf5, 0xf8, 0xef, 0xf2, 0xf6, 0xf9, 0xef, 0xf2, 0xf6, 0xf8, - 0xef, 0xf2, 0xf6, 0xf9, 0xef, 0xf2, 0xf6, 0xf8, 0xef, 0xf2, 0xf7, 0xf9, - 0xef, 0xf2, 0xf7, 0xf8, 0xef, 0xf2, 0xf7, 0xf9, 0xef, 0xf2, 0xf7, 0xf8, - 0xef, 0xf2, 0xf8, 0xf9, 0xef, 0xf2, 0xf8, 0xf8, 0xef, 0xf2, 0xf8, 0xf6, - 0xf0, 0xf2, 0xf8, 0xf8, 0xef, 0xf2, 0xf8, 0xf6, 0xf0, 0xf2, 0xf9, 0xf8, - 0xef, 0xf2, 0xf9, 0xf6, 0xf0, 0xf2, 0xf9, 0xf8, 0xef, 0xf2, 0xf9, 0xf6, - 0xf0, 0xf2, 0xfa, 0xf8, 0xef, 0xf2, 0xfa, 0xf6, 0xf0, 0xf2, 0xfa, 0xf8, - 0xef, 0xf2, 0xfa, 0xf6, 0xf0, 0xf2, 0xfa, 0xf8, 0xef, 0xf2, 0xfb, 0xf6, - 0xf0, 0xf2, 0xfb, 0xf8, 0xef, 0xf2, 0xfb, 0xf6, 0xf0, 0xf2, 0xfb, 0xf8, - 0xef, 0xf2, 0xfc, 0xf6, 0xf0, 0xf2, 0xfc, 0xf8, 0xef, 0xf2, 0xfc, 0xf6, - 0xf0, 0xf2, 0xfc, 0xf8, 0xef, 0xf2, 0xfc, 0xf6, 0xf0, 0xf2, 0xfd, 0xf8, - 0xef, 0xf2, 0xfd, 0xf6, 0xf0, 0xf2, 0xfd, 0xf8, 0xef, 0xf2, 0xfd, 0xf6, - 0xf0, 0xf2, 0xfe, 0xf8, 0xef, 0xf2, 0xfe, 0xf6, 0xf0, 0xf2, 0xfe, 0xf8, - 0xef, 0xf2, 0xfe, 0xf6, 0xf0, 0xf2, 0xfe, 0xf8, 0xef, 0xf2, 0xff, 0xf6, - 0xf0, 0xf2, 0xff, 0xf8, 0xef, 0xf2, 0x03, 0xf4, 0x83, 0xf2, 0x0a, 0xf4, - 0x83, 0xf2, 0x0f, 0xf4, 0x83, 0xf2, 0x14, 0xf4, 0x83, 0xf2, 0x17, 0xf4, - 0x83, 0xf2, 0x1b, 0xf4, 0x83, 0xf2, 0x1e, 0xf4, 0x83, 0xf2, 0x20, 0xf4, - 0x83, 0xf2, 0x23, 0xf4, 0x83, 0xf2, 0x25, 0xf4, 0x83, 0xf2, 0x27, 0xf4, - 0x83, 0xf2, 0x29, 0xf4, 0x83, 0xf2, 0x2b, 0xf4, 0x83, 0xf2, 0x2d, 0xf4, - 0x83, 0xf2, 0x2f, 0xf4, 0x83, 0xf2, 0x31, 0xf4, 0x83, 0xf2, 0x32, 0xf4, - 0x83, 0xf2, 0x34, 0xf4, 0x83, 0xf2, 0x35, 0xf4, 0x83, 0xf2, 0x37, 0xf4, - 0x83, 0xf2, 0x38, 0xf4, 0x83, 0xf2, 0x3a, 0xf4, 0x83, 0xf2, 0x3b, 0xf4, - 0x83, 0xf2, 0x3c, 0xf4, 0x83, 0xf2, 0x3e, 0xf4, 0x83, 0xf2, 0x3f, 0xf4, - 0x83, 0xf2, 0x40, 0xf4, 0x83, 0xf2, 0x42, 0xf4, 0x83, 0xf2, 0x43, 0xf4, - 0x83, 0xf2, 0x44, 0xf4, 0x83, 0xf2, 0x45, 0xf4, 0x83, 0xf2, 0x46, 0xf4, - 0x83, 0xf2, 0x47, 0xf4, 0x83, 0xf2, 0x48, 0xf4, 0x83, 0xf2, 0x49, 0xf4, - 0x83, 0xf2, 0x4a, 0xf4, 0x83, 0xf2, 0x4b, 0xf4, 0x83, 0xf2, 0x4c, 0xf4, - 0x83, 0xf2, 0x4d, 0xf4, 0x83, 0xf2, 0x4e, 0xf4, 0x83, 0xf2, 0x4f, 0xf4, - 0x83, 0xf2, 0x50, 0xf4, 0x83, 0xf2, 0x51, 0xf4, 0x83, 0xf2, 0x52, 0xf4, - 0x83, 0xf2, 0x53, 0xf4, 0x83, 0xf2, 0x54, 0xf4, 0x83, 0xf2, 0x55, 0xf4, - 0x83, 0xf2, 0x56, 0xf4, 0x83, 0xf2, 0x57, 0xf4, 0x83, 0xf2, 0x58, 0xf4, - 0x83, 0xf2, 0x58, 0xf4, 0x83, 0xf2, 0x59, 0xf4, 0x83, 0xf2, 0x5a, 0xf4, - 0x83, 0xf2, 0x5b, 0xf4, 0x83, 0xf2, 0x5c, 0xf4, 0x83, 0xf2, 0x5d, 0xf4, - 0x83, 0xf2, 0x5d, 0xf4, 0x83, 0xf2, 0x5e, 0xf4, 0x83, 0xf2, 0x5f, 0xf4, - 0x83, 0xf2, 0x60, 0xf4, 0x83, 0xf2, 0x60, 0xf4, 0x83, 0xf2, 0x61, 0xf4, - 0x83, 0xf2, 0x62, 0xf4, 0x83, 0xf2, 0x63, 0xf4, 0x83, 0xf2, 0x63, 0xf4, - 0x83, 0xf2, 0x64, 0xf4, 0x83, 0xf2, 0x65, 0xf4, 0x83, 0xf2, 0x66, 0xf4, - 0x83, 0xf2, 0x66, 0xf4, 0x83, 0xf2, 0x67, 0xf4, 0x83, 0xf2, 0x68, 0xf4, - 0x83, 0xf2, 0x68, 0xf4, 0x83, 0xf2, 0x69, 0xf4, 0x83, 0xf2, 0x6a, 0xf4, - 0x83, 0xf2, 0x6a, 0xf4, 0x83, 0xf2, 0x6b, 0xf4, 0x83, 0xf2, 0x6c, 0xf4, - 0x83, 0xf2, 0x6c, 0xf4, 0x83, 0xf2, 0x6d, 0xf4, 0x83, 0xf2, 0x6e, 0xf4, - 0x83, 0xf2, 0x6e, 0xf4, 0x83, 0xf2, 0x6f, 0xf4, 0x83, 0xf2, 0x70, 0xf4, - 0x83, 0xf2, 0x70, 0xf4, 0x83, 0xf2, 0x71, 0xf4, 0x83, 0xf2, 0x72, 0xf4, - 0x83, 0xf2, 0x72, 0xf4, 0x83, 0xf2, 0x73, 0xf4, 0x83, 0xf2, 0x73, 0xf4, - 0x83, 0xf2, 0x74, 0xf4, 0x83, 0xf2, 0x75, 0xf4, 0x83, 0xf2, 0x75, 0xf4, - 0x83, 0xf2, 0x76, 0xf4, 0x83, 0xf2, 0x76, 0xf4, 0x83, 0xf2, 0x77, 0xf4, - 0x83, 0xf2, 0x78, 0xf4, 0x83, 0xf2, 0x78, 0xf4, 0x83, 0xf2, 0x79, 0xf4, - 0x83, 0xf2, 0x79, 0xf4, 0x83, 0xf2, 0x7a, 0xf4, 0x83, 0xf2, 0x7a, 0xf4, - 0x83, 0xf2, 0x7b, 0xf4, 0x83, 0xf2, 0x7c, 0xf4, 0x83, 0xf2, 0x7c, 0xf4, - 0x83, 0xf2, 0x7d, 0xf4, 0x83, 0xf2, 0x7d, 0xf4, 0x83, 0xf2, 0x7e, 0xf4, - 0x83, 0xf2, 0x7e, 0xf4, 0x83, 0xf2, 0x7f, 0xf4, 0x85, 0xf2, 0x7f, 0xf4, - 0x83, 0xf2, 0x80, 0xf4, 0x85, 0xf2, 0x81, 0xf4, 0x86, 0xf2, 0x81, 0xf4, - 0x85, 0xf2, 0x82, 0xf4, 0x86, 0xf2, 0x82, 0xf4, 0x85, 0xf2, 0x83, 0xf4, - 0x86, 0xf2, 0x83, 0xf4, 0x85, 0xf2, 0x84, 0xf4, 0x86, 0xf2, 0x84, 0xf4, - 0x85, 0xf2, 0x85, 0xf4, 0x86, 0xf2, 0x85, 0xf4, 0x85, 0xf2, 0x86, 0xf4, - 0x86, 0xf2, 0x86, 0xf4, 0x86, 0xf2, 0x87, 0xf5, 0x8b, 0xf2, 0x87, 0xf5, - 0x8b, 0xf2, 0x88, 0xf5, 0x8b, 0xf2, 0x88, 0xf5, 0x8b, 0xf2, 0x89, 0xf5, - 0x8b, 0xf2, 0x89, 0xf5, 0x8b, 0xf2, 0x8a, 0xf5, 0x8b, 0xf2, 0x8a, 0xf5, - 0x8b, 0xf2, 0x8b, 0xf5, 0x8b, 0xf2, 0x8b, 0xf5, 0x8b, 0xf2, 0x8c, 0xf5, - 0x8c, 0xf2, 0x8c, 0xf5, 0x90, 0xf2, 0x8d, 0xf5, 0x90, 0xf2, 0x8d, 0xf5, - 0x90, 0xf2, 0x8e, 0xf5, 0x90, 0xf2, 0x8e, 0xf5, 0x90, 0xf2, 0x8e, 0xf5, - 0x90, 0xf2, 0x8f, 0xf5, 0x90, 0xf2, 0x8f, 0xf5, 0x90, 0xf2, 0x90, 0xf5, - 0x90, 0xf2, 0x90, 0xf5, 0x90, 0xf2, 0x91, 0xf5, 0x91, 0xf2, 0x91, 0xf6, - 0x95, 0xf2, 0x92, 0xf6, 0x95, 0xf2, 0x92, 0xf6, 0x95, 0xf2, 0x93, 0xf6, - 0x95, 0xf2, 0x93, 0xf6, 0x95, 0xf2, 0x94, 0xf6, 0x95, 0xf2, 0x94, 0xf6, - 0x95, 0xf2, 0x94, 0xf6, 0x95, 0xf2, 0x95, 0xf6, 0x95, 0xf2, 0x95, 0xf6, - 0x95, 0xf2, 0x96, 0xf6, 0x96, 0xf2, 0x96, 0xf6, 0x96, 0xf2, 0x97, 0xf6, - 0x97, 0xf2, 0x97, 0xf6, 0x9a, 0xf2, 0x98, 0xf6, 0x9a, 0xf2, 0x98, 0xf6, - 0x9a, 0xf2, 0x98, 0xf6, 0x9a, 0xf2, 0x99, 0xf6, 0x9a, 0xf2, 0x99, 0xf6, - 0x9a, 0xf2, 0x9a, 0xf6, 0x9a, 0xf2, 0x9a, 0xf6, 0x9a, 0xf2, 0x9a, 0xf6, - 0x9a, 0xf2, 0x9b, 0xf6, 0x9b, 0xf2, 0x9b, 0xf6, 0x9b, 0xf2, 0x9c, 0xf7, - 0x9e, 0xf2, 0x9c, 0xf7, 0x9f, 0xf2, 0x9d, 0xf7, 0x9e, 0xf2, 0x9d, 0xf7, - 0x9f, 0xf2, 0x9d, 0xf7, 0x9e, 0xf2, 0x9e, 0xf7, 0x9f, 0xf2, 0x9e, 0xf7, - 0x9e, 0xf2, 0x9f, 0xf7, 0x9f, 0xf2, 0x9f, 0xf7, 0x9f, 0xf2, 0x9f, 0xf7, - 0x9f, 0xf2, 0xa0, 0xf7, 0xa0, 0xf2, 0xa0, 0xf7, 0xa3, 0xf2, 0xa1, 0xf7, - 0xa3, 0xf2, 0xa1, 0xf7, 0xa3, 0xf2, 0xa1, 0xf7, 0xa3, 0xf2, 0xa2, 0xf7, - 0xa3, 0xf2, 0xa2, 0xf7, 0xa3, 0xf2, 0xa3, 0xf7, 0xa3, 0xf2, 0xa3, 0xf7, - 0xa3, 0xf2, 0xa3, 0xf7, 0xa3, 0xf2, 0xa4, 0xf7, 0xa4, 0xf2, 0xa4, 0xf7, - 0xa4, 0xf2, 0xa5, 0xf7, 0xa5, 0xf2, 0xa5, 0xf7, 0xa5, 0xf2, 0xa5, 0xf8, - 0xa7, 0xf2, 0xa6, 0xf8, 0xa7, 0xf2, 0xa6, 0xf8, 0xa7, 0xf2, 0xa6, 0xf8, - 0xa7, 0xf2, 0xa7, 0xf8, 0xa7, 0xf2, 0xa7, 0xf8, 0xa7, 0xf2, 0xa8, 0xf8, - 0xa8, 0xf2, 0xa8, 0xf8, 0xa9, 0xf2, 0xa8, 0xf8, 0xa9, 0xf2, 0xa9, 0xf8, - 0xa9, 0xf2, 0xa9, 0xf8, 0xa9, 0xf2, 0xaa, 0xf8, 0xaa, 0xf2, 0xaa, 0xf8, - 0xaa, 0xf2, 0xaa, 0xf8, 0xab, 0xf2, 0xab, 0xf8, 0xab, 0xf2, 0xab, 0xf8, - 0xab, 0xf2, 0xab, 0xf8, 0xab, 0xf2, 0xac, 0xf8, 0xac, 0xf2, 0xac, 0xf8, - 0xac, 0xf2, 0xac, 0xf8, 0xac, 0xf2, 0xad, 0xf8, 0xad, 0xf2, 0xad, 0xf8, - 0xad, 0xf2, 0xae, 0xf8, 0xaf, 0xf2, 0xae, 0xf8, 0xaf, 0xf2, 0xae, 0xf8, - 0xaf, 0xf2, 0xaf, 0xf8, 0xaf, 0xf2, 0xaf, 0xf8, 0xaf, 0xf2, 0xaf, 0xf8, - 0xaf, 0xf2, 0xb0, 0xf8, 0xb0, 0xf2, 0xb0, 0xf8, 0xb0, 0xf2, 0xb0, 0xf8, - 0xb0, 0xf2, 0xb1, 0xf8, 0xb1, 0xf2, 0xb1, 0xf8, 0xb1, 0xf2, 0xb2, 0xf8, - 0xb2, 0xf2, 0xb2, 0xf8, 0xb2, 0xf2, 0xb2, 0xf9, 0xb3, 0xf2, 0xb3, 0xf9, - 0xb3, 0xf2, 0xb3, 0xf9, 0xb3, 0xf2, 0xb3, 0xf9, 0xb3, 0xf2, 0xb4, 0xf9, - 0xb4, 0xf2, 0xb4, 0xf9, 0xb4, 0xf2, 0xb4, 0xf9, 0xb4, 0xf2, 0xb5, 0xf9, - 0xb5, 0xf2, 0xb5, 0xf9, 0xb5, 0xf2, 0xb5, 0xf9, 0xb5, 0xf2, 0xb6, 0xf9, - 0xb6, 0xf2, 0xb6, 0xf9, 0xb6, 0xf2, 0xb6, 0xf9, 0xb6, 0xf2, 0xb7, 0xf9, - 0xb7, 0xf3, 0xb7, 0xf9, 0xb7, 0xf3, 0xb7, 0xf9, 0xb7, 0xf3, 0xb8, 0xf9, - 0xb8, 0xf3, 0xb8, 0xf9, 0xb8, 0xf3, 0xb8, 0xf9, 0xb8, 0xf3, 0xb9, 0xf9, - 0xb9, 0xf3, 0xb9, 0xf9, 0xb9, 0xf3, 0xb9, 0xf9, 0xb9, 0xf3, 0xba, 0xf9, - 0xba, 0xf3, 0xba, 0xf9, 0xba, 0xf3, 0xba, 0xf9, 0xba, 0xf3, 0xba, 0xf9, - 0xbb, 0xf3, 0xbb, 0xf9, 0xbb, 0xf4, 0xbb, 0xf9, 0xbb, 0xf4, 0xbc, 0xf9, - 0xbc, 0xf4, 0xbc, 0xf9, 0xbc, 0xf4, 0xbc, 0xf9, 0xbc, 0xf4, 0xbd, 0xf9, - 0xbd, 0xf4, 0xbd, 0xf9, 0xbd, 0xf4, 0xbd, 0xf9, 0xbd, 0xf4, 0xbe, 0xf9, - 0xbe, 0xf4, 0xbd, 0xf9, 0xbe, 0xf4, 0xbe, 0xf9, 0xbe, 0xf4, 0xbd, 0xf9, - 0xbf, 0xf4, 0xbe, 0xf9, 0xbf, 0xf4, 0xbf, 0xf9, 0xbf, 0xf5, 0xc0, 0xf9, - 0xc0, 0xf5, 0xc0, 0xf9, 0xc0, 0xf5, 0xc0, 0xf9, 0xc0, 0xf5, 0xc1, 0xf9, - 0xc1, 0xf5, 0xc1, 0xf9, 0xc1, 0xf5, 0xc1, 0xf9, 0xc1, 0xf5, 0xc1, 0xf9, - 0xc1, 0xf5, 0xc1, 0xf9, 0xc2, 0xf5, 0xc1, 0xf9, 0xc2, 0xf5, 0xc1, 0xf9, - 0xc2, 0xf5, 0xc3, 0xf9, 0xc3, 0xf6, 0xc3, 0xf9, 0xc3, 0xf6, 0xc3, 0xf9, - 0xc3, 0xf6, 0xc4, 0xf9, 0xc4, 0xf6, 0xc4, 0xf9, 0xc4, 0xf6, 0xc4, 0xf9, - 0xc4, 0xf6, 0xc5, 0xf9, 0xc5, 0xf6, 0xc4, 0xf9, 0xc5, 0xf6, 0xc5, 0xf9, - 0xc5, 0xf6, 0xc4, 0xf9, 0xc6, 0xf6, 0xc5, 0xf9, 0xc6, 0xf6, 0xc6, 0xf9, - 0xc6, 0xf7, 0xc6, 0xf9, 0xc6, 0xf7, 0xc7, 0xf9, 0xc7, 0xf7, 0xc7, 0xf9, - 0xc7, 0xf7, 0xca, 0xf9, 0xc7, 0xf3, 0xca, 0xf9, 0xc8, 0xf2, 0xca, 0xf9, - 0xc8, 0xf3, 0xca, 0xf9, 0xc8, 0xf2, 0xca, 0xf9, 0xc9, 0xf3, 0xca, 0xf9, - 0xc9, 0xf2, 0xca, 0xf9, 0xc9, 0xf3, 0xca, 0xf9, 0xc9, 0xf2, 0xca, 0xf9, - 0xca, 0xf2, 0xca, 0xf9, 0xc9, 0xf2, 0xca, 0xf9, 0xca, 0xf2, 0xcb, 0xf9, - 0xc9, 0xf2, 0xcb, 0xf9, 0xca, 0xf2, 0xcb, 0xf9, 0xc9, 0xf2, 0xcc, 0xf9, - 0xca, 0xf2, 0xcc, 0xf9, 0xc9, 0xf2, 0xcc, 0xf9, 0xca, 0xf2, 0xcc, 0xf8, - 0xca, 0xf2, 0xcd, 0xf9, 0xca, 0xf2, 0xcd, 0xfc, 0xcd, 0xf2, 0xcd, 0xfc, - 0xcd, 0xf2, 0xce, 0xfc, 0xce, 0xf2, 0xce, 0xfc, 0xce, 0xf2, 0xce, 0xfc, - 0xce, 0xf2, 0xce, 0xfc, 0xce, 0xf2, 0xcf, 0xfc, 0xce, 0xf2, 0xcf, 0xfc, - 0xce, 0xf2, 0xcf, 0xfc, 0xce, 0xf2, 0xd0, 0xfc, 0xce, 0xf2, 0xd0, 0xfc, - 0xce, 0xf2, 0xd0, 0xfc, 0xd0, 0xf2, 0xd0, 0xfc, 0xd0, 0xf2, 0xd1, 0xfc, - 0xd1, 0xf2, 0xd1, 0xfc, 0xd1, 0xf2, 0xd1, 0xfc, 0xd1, 0xf2, 0xd2, 0xfc, - 0xd1, 0xf2, 0xd2, 0xfc, 0xd1, 0xf2, 0xd2, 0xfc, 0xd1, 0xf2, 0xd2, 0xfc, - 0xd1, 0xf2, 0xd3, 0xfc, 0xd1, 0xf2, 0xd3, 0xfc, 0xd3, 0xf2, 0xd3, 0xfc, - 0xd3, 0xf2, 0xd4, 0xfc, 0xd4, 0xf2, 0xd4, 0xfc, 0xd4, 0xf2, 0xd4, 0xfc, - 0xd4, 0xf2, 0xd4, 0xfc, 0xd4, 0xf2, 0xd5, 0xfc, 0xd4, 0xf2, 0xd5, 0xfc, - 0xd4, 0xf2, 0xd5, 0xfc, 0xd4, 0xf2, 0xd6, 0xfc, 0xd4, 0xf2, 0xd6, 0xfc, - 0xd4, 0xf2, 0xd6, 0xfd, 0xd6, 0xf2, 0xd6, 0xfd, 0xd6, 0xf2, 0xd7, 0xfd, - 0xd7, 0xf2, 0xd7, 0xfd, 0xd7, 0xf2, 0xd7, 0xfd, 0xd7, 0xf2, 0xd7, 0xfd, - 0xd7, 0xf2, 0xd8, 0xfd, 0xd7, 0xf2, 0xd8, 0xfd, 0xd7, 0xf2, 0xd8, 0xfd, - 0xd7, 0xf2, 0xd9, 0xfd, 0xd7, 0xf2, 0xd9, 0xfd, 0xd7, 0xf2, 0xd9, 0xfd, - 0xd7, 0xf2, 0xd9, 0xfd, 0xd7, 0xf2, 0xda, 0xfd, 0xda, 0xf2, 0xda, 0xfd, - 0xda, 0xf2, 0xda, 0xfd, 0xda, 0xf2, 0xda, 0xfd, 0xda, 0xf2, 0xdb, 0xfd, - 0xda, 0xf2, 0xdb, 0xfd, 0xda, 0xf2, 0xdb, 0xfd, 0xda, 0xf2, 0xdb, 0xfd, - 0xda, 0xf2, 0xdc, 0xfd, 0xda, 0xf2, 0xdc, 0xfd, 0xda, 0xf2, 0xdc, 0xfd, - 0xda, 0xf2, 0xdd, 0xfe, 0xdd, 0xf2, 0xdd, 0xfe, 0xdd, 0xf2, 0xdd, 0xfe, - 0xdd, 0xf2, 0xdd, 0xfe, 0xdd, 0xf2, 0xde, 0xfe, 0xdd, 0xf2, 0xde, 0xf9, - 0xe3, 0xf2, 0xde, 0xfb, 0xe3, 0xf2, 0xde, 0xf9, 0xe3, 0xf2, 0xdf, 0xfb, - 0xe3, 0xf2, 0xdf, 0xf9, 0xe3, 0xf2, 0xdf, 0xfb, 0xe3, 0xf2, 0xdf, 0xf9, - 0xe3, 0xf2, 0xe0, 0xfb, 0xe3, 0xf2, 0xe0, 0xf9, 0xe3, 0xf2, 0xe0, 0xfb, - 0xe3, 0xf2, 0xe1, 0xf9, 0xe3, 0xf2, 0xe1, 0xfb, 0xe3, 0xf2, 0xe1, 0xf9, - 0xe3, 0xf2, 0xe1, 0xf9, 0xe3, 0xf2, 0xe2, 0xf9, 0xe3, 0xf2, 0xe2, 0xf9, - 0xe3, 0xf2, 0xe2, 0xf9, 0xe3, 0xf2, 0xe2, 0xf9, 0xe3, 0xf2, 0xe3, 0xf9, - 0xe3, 0xf2, 0xe3, 0xf9, 0xe3, 0xf2, 0xe3, 0xf9, 0xe3, 0xf1, 0xe3, 0xf9, - 0xe3, 0xf2, 0xe3, 0xf9, 0xe4, 0xf1, 0xe3, 0xf9, 0xe4, 0xf2, 0xe5, 0xf9, - 0xe4, 0xf2, 0xe5, 0xf9, 0xe4, 0xf2, 0xe5, 0xf9, 0xe5, 0xf2, 0xe5, 0xf9, - 0xe5, 0xf2, 0xe5, 0xf9, 0xe5, 0xf2, 0xe5, 0xf9, 0xe5, 0xf2, 0xe6, 0xf9, - 0xe5, 0xf2, 0xe6, 0xf9, 0xe5, 0xf2, 0xe6, 0xf9, 0xe5, 0xf2, 0xe6, 0xf9, - 0xe5, 0xf2, 0xe7, 0xf9, 0xe5, 0xf2, 0xe7, 0xf9, 0xe5, 0xf2, 0xe7, 0xf9, - 0xe5, 0xf2, 0xe7, 0xf9, 0xe5, 0xf2, 0xe8, 0xf9, 0xe5, 0xf2, 0xe8, 0xf9, - 0xe5, 0xf2, 0xe8, 0xf9, 0xe5, 0xf2, 0xe8, 0xf9, 0xe5, 0xf2, 0xe9, 0xf9, - 0xe5, 0xf2, 0xe9, 0xf9, 0xe5, 0xf2, 0xe9, 0xf9, 0xe5, 0xf2, 0xe9, 0xf8, - 0xe5, 0xf2, 0xea, 0xf9, 0xe5, 0xf2, 0xea, 0xf8, 0xe5, 0xf2, 0xea, 0xfb, - 0xee, 0xf2, 0xea, 0xfa, 0xef, 0xf2, 0xeb, 0xfb, 0xee, 0xf2, 0xeb, 0xfa, - 0xef, 0xf2, 0xeb, 0xf9, 0xef, 0xf2, 0xeb, 0xfa, 0xef, 0xf2, 0xec, 0xf9, - 0xef, 0xf2, 0xec, 0xfa, 0xef, 0xf2, 0xec, 0xf9, 0xef, 0xf2, 0xec, 0xfa, - 0xef, 0xf2, 0xec, 0xf9, 0xef, 0xf2, 0xed, 0xfa, 0xef, 0xf2, 0xed, 0xf9, - 0xef, 0xf2, 0xed, 0xfa, 0xef, 0xf2, 0xed, 0xf9, 0xef, 0xf2, 0xee, 0xfa, - 0xef, 0xf2, 0xee, 0xf9, 0xef, 0xf2, 0xee, 0xf9, 0xef, 0xf2, 0xee, 0xf9, - 0xef, 0xf2, 0xef, 0xf9, 0xef, 0xf2, 0xee, 0xf9, 0xef, 0xf2, 0xef, 0xf9, - 0xef, 0xf2, 0xef, 0xf9, 0xef, 0xf2, 0xf0, 0xf9, 0xef, 0xf2, 0xf0, 0xf9, - 0xef, 0xf2, 0xf0, 0xf9, 0xef, 0xf2, 0xf0, 0xf9, 0xef, 0xf2, 0xf1, 0xf9, - 0xef, 0xf2, 0xf1, 0xf9, 0xef, 0xf2, 0xf1, 0xf9, 0xef, 0xf2, 0xf1, 0xf8, - 0xef, 0xf2, 0xf2, 0xf9, 0xef, 0xf2, 0xf2, 0xf8, 0xef, 0xf2, 0xf2, 0xf9, - 0xef, 0xf2, 0xf2, 0xf8, 0xef, 0xf2, 0xf2, 0xf9, 0xef, 0xf2, 0xf3, 0xf8, - 0xef, 0xf2, 0xf3, 0xf9, 0xef, 0xf2, 0xf3, 0xf8, 0xef, 0xf2, 0xf3, 0xf9, - 0xef, 0xf2, 0xf4, 0xf8, 0xef, 0xf2, 0xf4, 0xf9, 0xef, 0xf2, 0xf4, 0xf8, - 0xef, 0xf2, 0xf4, 0xf9, 0xef, 0xf2, 0xf5, 0xf8, 0xef, 0xf2, 0xf5, 0xf9, - 0xef, 0xf2, 0xf5, 0xf8, 0xef, 0xf2, 0xf5, 0xf9, 0xef, 0xf2, 0xf5, 0xf8, - 0xef, 0xf2, 0xf6, 0xf9, 0xef, 0xf2, 0xf6, 0xf8, 0xef, 0xf2, 0xf6, 0xf9, - 0xef, 0xf2, 0xf6, 0xf8, 0xef, 0xf2, 0xf7, 0xf9, 0xef, 0xf2, 0xf7, 0xf8, - 0xef, 0xf2, 0xf7, 0xf9, 0xef, 0xf2, 0xf7, 0xf8, 0xef, 0xf2, 0xf8, 0xf9, - 0xef, 0xf2, 0xf8, 0xf8, 0xef, 0xf2, 0xf8, 0xf7, 0xf0, 0xf2, 0xf8, 0xf8, - 0xef, 0xf2, 0xf8, 0xf7, 0xf0, 0xf2, 0xf9, 0xf8, 0xef, 0xf2, 0xf9, 0xf7, - 0xf0, 0xf2, 0xf9, 0xf8, 0xef, 0xf2, 0xf9, 0xf7, 0xf0, 0xf2, 0xfa, 0xf8, - 0xef, 0xf2, 0xfa, 0xf7, 0xf0, 0xf2, 0xfa, 0xf8, 0xef, 0xf2, 0xfa, 0xf7, - 0xf0, 0xf2, 0xfa, 0xf8, 0xef, 0xf2, 0xfb, 0xf7, 0xf0, 0xf2, 0xfb, 0xf8, - 0xef, 0xf2, 0xfb, 0xf7, 0xf0, 0xf2, 0xfb, 0xf8, 0xef, 0xf2, 0xfc, 0xf7, - 0xf0, 0xf2, 0xfc, 0xf8, 0xef, 0xf2, 0xfc, 0xf7, 0xf0, 0xf2, 0xfc, 0xf8, - 0xef, 0xf2, 0xfc, 0xf7, 0xf0, 0xf2, 0xfd, 0xf8, 0xef, 0xf2, 0xfd, 0xf7, - 0xf0, 0xf2, 0xfd, 0xf8, 0xef, 0xf2, 0xfd, 0xf7, 0xf0, 0xf2, 0xfe, 0xf8, - 0xef, 0xf2, 0xfe, 0xf7, 0xf0, 0xf2, 0xfe, 0xf8, 0xef, 0xf2, 0xfe, 0xf7, - 0xf0, 0xf2, 0xfe, 0xf8, 0xef, 0xf2, 0xff, 0xf7, 0xf0, 0xf2, 0xff, 0xf8, - 0xef, 0xf2, 0x03, 0xf4, 0x83, 0xf3, 0x0a, 0xf4, 0x83, 0xf3, 0x0f, 0xf4, - 0x83, 0xf3, 0x14, 0xf4, 0x83, 0xf3, 0x17, 0xf4, 0x83, 0xf3, 0x1b, 0xf4, - 0x83, 0xf3, 0x1e, 0xf4, 0x83, 0xf3, 0x20, 0xf4, 0x83, 0xf3, 0x23, 0xf4, - 0x83, 0xf3, 0x25, 0xf4, 0x83, 0xf3, 0x27, 0xf4, 0x83, 0xf3, 0x29, 0xf4, - 0x83, 0xf3, 0x2b, 0xf4, 0x83, 0xf3, 0x2d, 0xf4, 0x83, 0xf3, 0x2f, 0xf4, - 0x83, 0xf3, 0x31, 0xf4, 0x83, 0xf3, 0x32, 0xf4, 0x83, 0xf3, 0x34, 0xf4, - 0x83, 0xf3, 0x35, 0xf4, 0x83, 0xf3, 0x37, 0xf4, 0x83, 0xf3, 0x38, 0xf4, - 0x83, 0xf3, 0x3a, 0xf4, 0x83, 0xf3, 0x3b, 0xf4, 0x83, 0xf3, 0x3c, 0xf4, - 0x83, 0xf3, 0x3e, 0xf4, 0x83, 0xf3, 0x3f, 0xf4, 0x83, 0xf3, 0x40, 0xf4, - 0x83, 0xf3, 0x42, 0xf4, 0x83, 0xf3, 0x43, 0xf4, 0x83, 0xf3, 0x44, 0xf4, - 0x83, 0xf3, 0x45, 0xf4, 0x83, 0xf3, 0x46, 0xf4, 0x83, 0xf3, 0x47, 0xf4, - 0x83, 0xf3, 0x48, 0xf4, 0x83, 0xf3, 0x49, 0xf4, 0x83, 0xf3, 0x4a, 0xf4, - 0x83, 0xf3, 0x4b, 0xf4, 0x83, 0xf3, 0x4c, 0xf4, 0x83, 0xf3, 0x4d, 0xf4, - 0x83, 0xf3, 0x4e, 0xf4, 0x83, 0xf3, 0x4f, 0xf4, 0x83, 0xf3, 0x50, 0xf4, - 0x83, 0xf3, 0x51, 0xf4, 0x83, 0xf3, 0x52, 0xf4, 0x83, 0xf3, 0x53, 0xf4, - 0x83, 0xf3, 0x54, 0xf4, 0x83, 0xf3, 0x55, 0xf4, 0x83, 0xf3, 0x56, 0xf4, - 0x83, 0xf3, 0x57, 0xf4, 0x83, 0xf3, 0x58, 0xf4, 0x83, 0xf3, 0x58, 0xf4, - 0x83, 0xf3, 0x59, 0xf4, 0x83, 0xf3, 0x5a, 0xf4, 0x83, 0xf3, 0x5b, 0xf4, - 0x83, 0xf3, 0x5c, 0xf4, 0x83, 0xf3, 0x5d, 0xf4, 0x83, 0xf3, 0x5d, 0xf4, - 0x83, 0xf3, 0x5e, 0xf4, 0x83, 0xf3, 0x5f, 0xf4, 0x83, 0xf3, 0x60, 0xf4, - 0x83, 0xf3, 0x60, 0xf4, 0x83, 0xf3, 0x61, 0xf4, 0x83, 0xf3, 0x62, 0xf4, - 0x83, 0xf3, 0x63, 0xf4, 0x83, 0xf3, 0x63, 0xf4, 0x83, 0xf3, 0x64, 0xf4, - 0x83, 0xf3, 0x65, 0xf4, 0x83, 0xf3, 0x66, 0xf4, 0x83, 0xf3, 0x66, 0xf4, - 0x83, 0xf3, 0x67, 0xf4, 0x83, 0xf3, 0x68, 0xf4, 0x83, 0xf3, 0x68, 0xf4, - 0x83, 0xf3, 0x69, 0xf4, 0x83, 0xf3, 0x6a, 0xf4, 0x83, 0xf3, 0x6a, 0xf4, - 0x83, 0xf3, 0x6b, 0xf4, 0x83, 0xf3, 0x6c, 0xf4, 0x83, 0xf3, 0x6c, 0xf4, - 0x83, 0xf3, 0x6d, 0xf4, 0x83, 0xf3, 0x6e, 0xf4, 0x83, 0xf3, 0x6e, 0xf4, - 0x83, 0xf3, 0x6f, 0xf4, 0x83, 0xf3, 0x70, 0xf4, 0x83, 0xf3, 0x70, 0xf4, - 0x83, 0xf3, 0x71, 0xf4, 0x83, 0xf3, 0x72, 0xf4, 0x83, 0xf3, 0x72, 0xf4, - 0x83, 0xf3, 0x73, 0xf4, 0x83, 0xf3, 0x73, 0xf4, 0x83, 0xf3, 0x74, 0xf4, - 0x83, 0xf3, 0x75, 0xf4, 0x83, 0xf3, 0x75, 0xf4, 0x83, 0xf3, 0x76, 0xf4, - 0x83, 0xf3, 0x76, 0xf4, 0x83, 0xf3, 0x77, 0xf4, 0x83, 0xf3, 0x78, 0xf4, - 0x83, 0xf3, 0x78, 0xf4, 0x83, 0xf3, 0x79, 0xf4, 0x83, 0xf3, 0x79, 0xf4, - 0x83, 0xf3, 0x7a, 0xf4, 0x83, 0xf3, 0x7a, 0xf4, 0x83, 0xf3, 0x7b, 0xf4, - 0x83, 0xf3, 0x7c, 0xf4, 0x83, 0xf3, 0x7c, 0xf4, 0x83, 0xf3, 0x7d, 0xf4, - 0x83, 0xf3, 0x7d, 0xf4, 0x83, 0xf3, 0x7e, 0xf4, 0x83, 0xf3, 0x7e, 0xf4, - 0x83, 0xf3, 0x7f, 0xf4, 0x83, 0xf3, 0x7f, 0xf4, 0x83, 0xf3, 0x80, 0xf4, - 0x83, 0xf3, 0x81, 0xf4, 0x83, 0xf3, 0x81, 0xf4, 0x83, 0xf3, 0x82, 0xf4, - 0x83, 0xf3, 0x82, 0xf4, 0x83, 0xf3, 0x83, 0xf4, 0x83, 0xf3, 0x83, 0xf4, - 0x83, 0xf3, 0x84, 0xf5, 0x88, 0xf3, 0x84, 0xf5, 0x88, 0xf3, 0x85, 0xf5, - 0x88, 0xf3, 0x85, 0xf5, 0x88, 0xf3, 0x86, 0xf5, 0x88, 0xf3, 0x86, 0xf5, - 0x88, 0xf3, 0x87, 0xf5, 0x88, 0xf3, 0x87, 0xf5, 0x88, 0xf3, 0x88, 0xf5, - 0x88, 0xf3, 0x88, 0xf5, 0x88, 0xf3, 0x89, 0xf5, 0x89, 0xf3, 0x89, 0xf5, - 0x8d, 0xf3, 0x8a, 0xf5, 0x8e, 0xf3, 0x8a, 0xf5, 0x8d, 0xf3, 0x8b, 0xf5, - 0x8e, 0xf3, 0x8b, 0xf5, 0x8d, 0xf3, 0x8c, 0xf5, 0x8e, 0xf3, 0x8c, 0xf5, - 0x8d, 0xf3, 0x8d, 0xf5, 0x8e, 0xf3, 0x8d, 0xf5, 0x8d, 0xf3, 0x8e, 0xf5, - 0x8e, 0xf3, 0x8e, 0xf5, 0x8e, 0xf3, 0x8e, 0xf5, 0x92, 0xf3, 0x8f, 0xf5, - 0x93, 0xf3, 0x8f, 0xf5, 0x92, 0xf3, 0x90, 0xf5, 0x93, 0xf3, 0x90, 0xf5, - 0x92, 0xf3, 0x91, 0xf5, 0x93, 0xf3, 0x91, 0xf5, 0x92, 0xf3, 0x92, 0xf5, - 0x93, 0xf3, 0x92, 0xf5, 0x92, 0xf3, 0x93, 0xf5, 0x93, 0xf3, 0x93, 0xf5, - 0x93, 0xf3, 0x94, 0xf6, 0x97, 0xf3, 0x94, 0xf6, 0x98, 0xf3, 0x94, 0xf6, - 0x97, 0xf3, 0x95, 0xf6, 0x98, 0xf3, 0x95, 0xf6, 0x97, 0xf3, 0x96, 0xf6, - 0x98, 0xf3, 0x96, 0xf6, 0x97, 0xf3, 0x97, 0xf6, 0x98, 0xf3, 0x97, 0xf6, - 0x97, 0xf3, 0x98, 0xf6, 0x98, 0xf3, 0x98, 0xf6, 0x98, 0xf3, 0x98, 0xf6, - 0x98, 0xf3, 0x99, 0xf6, 0x99, 0xf3, 0x99, 0xf6, 0x9c, 0xf3, 0x9a, 0xf6, - 0x9c, 0xf3, 0x9a, 0xf6, 0x9c, 0xf3, 0x9a, 0xf6, 0x9c, 0xf3, 0x9b, 0xf6, - 0x9c, 0xf3, 0x9b, 0xf6, 0x9c, 0xf3, 0x9c, 0xf6, 0x9c, 0xf3, 0x9c, 0xf6, - 0x9c, 0xf3, 0x9d, 0xf6, 0x9d, 0xf3, 0x9d, 0xf6, 0x9d, 0xf3, 0x9d, 0xf6, - 0x9d, 0xf3, 0x9e, 0xf7, 0xa0, 0xf3, 0x9e, 0xf7, 0xa1, 0xf3, 0x9f, 0xf7, - 0xa0, 0xf3, 0x9f, 0xf7, 0xa1, 0xf3, 0x9f, 0xf7, 0xa0, 0xf3, 0xa0, 0xf7, - 0xa1, 0xf3, 0xa0, 0xf7, 0xa0, 0xf3, 0xa1, 0xf7, 0xa1, 0xf3, 0xa1, 0xf7, - 0xa1, 0xf3, 0xa1, 0xf7, 0xa1, 0xf3, 0xa2, 0xf7, 0xa2, 0xf3, 0xa2, 0xf7, - 0xa5, 0xf3, 0xa3, 0xf7, 0xa5, 0xf3, 0xa3, 0xf7, 0xa5, 0xf3, 0xa3, 0xf7, - 0xa5, 0xf3, 0xa4, 0xf7, 0xa5, 0xf3, 0xa4, 0xf7, 0xa5, 0xf3, 0xa5, 0xf7, - 0xa5, 0xf3, 0xa5, 0xf7, 0xa5, 0xf3, 0xa5, 0xf7, 0xa5, 0xf3, 0xa6, 0xf7, - 0xa6, 0xf3, 0xa6, 0xf7, 0xa6, 0xf3, 0xa6, 0xf7, 0xa6, 0xf3, 0xa7, 0xf7, - 0xa7, 0xf3, 0xa7, 0xf8, 0xa9, 0xf3, 0xa8, 0xf8, 0xa9, 0xf3, 0xa8, 0xf8, - 0xa9, 0xf3, 0xa8, 0xf8, 0xa9, 0xf3, 0xa9, 0xf8, 0xa9, 0xf3, 0xa9, 0xf8, - 0xa9, 0xf3, 0xaa, 0xf8, 0xaa, 0xf3, 0xaa, 0xf8, 0xaa, 0xf3, 0xaa, 0xf8, - 0xaa, 0xf3, 0xab, 0xf8, 0xab, 0xf3, 0xab, 0xf8, 0xab, 0xf3, 0xab, 0xf8, - 0xad, 0xf3, 0xac, 0xf8, 0xad, 0xf3, 0xac, 0xf8, 0xad, 0xf3, 0xac, 0xf8, - 0xad, 0xf3, 0xad, 0xf8, 0xad, 0xf3, 0xad, 0xf8, 0xad, 0xf3, 0xae, 0xf8, - 0xae, 0xf3, 0xae, 0xf8, 0xae, 0xf3, 0xae, 0xf8, 0xae, 0xf3, 0xaf, 0xf8, - 0xaf, 0xf3, 0xaf, 0xf8, 0xaf, 0xf3, 0xaf, 0xf9, 0xb1, 0xf3, 0xb0, 0xf9, - 0xb1, 0xf3, 0xb0, 0xf9, 0xb1, 0xf3, 0xb0, 0xf9, 0xb1, 0xf3, 0xb1, 0xf9, - 0xb1, 0xf3, 0xb1, 0xf9, 0xb1, 0xf3, 0xb2, 0xf9, 0xb2, 0xf3, 0xb2, 0xf9, - 0xb2, 0xf3, 0xb2, 0xf9, 0xb2, 0xf3, 0xb3, 0xf9, 0xb3, 0xf3, 0xb3, 0xf9, - 0xb3, 0xf3, 0xb3, 0xf9, 0xb3, 0xf3, 0xb4, 0xf9, 0xb4, 0xf3, 0xb4, 0xf9, - 0xb5, 0xf3, 0xb4, 0xf9, 0xb5, 0xf3, 0xb5, 0xf9, 0xb5, 0xf3, 0xb5, 0xf9, - 0xb5, 0xf3, 0xb5, 0xf9, 0xb5, 0xf3, 0xb6, 0xf9, 0xb6, 0xf3, 0xb6, 0xf9, - 0xb6, 0xf3, 0xb6, 0xf9, 0xb6, 0xf3, 0xb7, 0xf9, 0xb7, 0xf3, 0xb7, 0xf9, - 0xb7, 0xf3, 0xb7, 0xf9, 0xb7, 0xf3, 0xb8, 0xf9, 0xb8, 0xf3, 0xb8, 0xf9, - 0xb8, 0xf3, 0xb8, 0xfa, 0xb8, 0xf4, 0xb9, 0xfa, 0xb9, 0xf4, 0xb9, 0xfa, - 0xb9, 0xf4, 0xb9, 0xfa, 0xb9, 0xf4, 0xba, 0xfa, 0xba, 0xf4, 0xba, 0xfa, - 0xba, 0xf4, 0xba, 0xfa, 0xba, 0xf4, 0xbb, 0xfa, 0xbb, 0xf4, 0xbb, 0xfa, - 0xbb, 0xf4, 0xbb, 0xfa, 0xbb, 0xf4, 0xbc, 0xfa, 0xbc, 0xf4, 0xbb, 0xfa, - 0xbc, 0xf4, 0xbc, 0xfa, 0xbc, 0xf4, 0xbd, 0xfa, 0xbd, 0xf5, 0xbd, 0xfa, - 0xbd, 0xf5, 0xbd, 0xfa, 0xbd, 0xf5, 0xbe, 0xfa, 0xbe, 0xf5, 0xbe, 0xfa, - 0xbe, 0xf5, 0xbe, 0xfa, 0xbe, 0xf5, 0xbf, 0xfa, 0xbf, 0xf5, 0xbf, 0xfa, - 0xbf, 0xf5, 0xbf, 0xfa, 0xbf, 0xf5, 0xbf, 0xfa, 0xc0, 0xf5, 0xbf, 0xfa, - 0xc0, 0xf5, 0xbf, 0xfa, 0xc0, 0xf5, 0xbf, 0xfa, 0xc1, 0xf5, 0xc1, 0xfa, - 0xc1, 0xf6, 0xc1, 0xfa, 0xc1, 0xf6, 0xc1, 0xfa, 0xc1, 0xf6, 0xc2, 0xfa, - 0xc2, 0xf6, 0xc2, 0xfa, 0xc2, 0xf6, 0xc2, 0xfa, 0xc2, 0xf6, 0xc3, 0xfa, - 0xc3, 0xf6, 0xc2, 0xfa, 0xc3, 0xf6, 0xc3, 0xfa, 0xc3, 0xf6, 0xc2, 0xfa, - 0xc4, 0xf6, 0xc3, 0xfa, 0xc4, 0xf6, 0xc4, 0xfa, 0xc4, 0xf7, 0xc5, 0xfa, - 0xc5, 0xf7, 0xc5, 0xfa, 0xc5, 0xf7, 0xc5, 0xfa, 0xc5, 0xf7, 0xc6, 0xfa, - 0xc6, 0xf7, 0xc6, 0xfa, 0xc6, 0xf7, 0xc6, 0xfa, 0xc6, 0xf7, 0xc6, 0xfa, - 0xc6, 0xf7, 0xc6, 0xfa, 0xc7, 0xf7, 0xc6, 0xfa, 0xc7, 0xf7, 0xca, 0xfa, - 0xc7, 0xf4, 0xca, 0xfa, 0xc8, 0xf3, 0xca, 0xfa, 0xc8, 0xf4, 0xca, 0xfa, - 0xc8, 0xf3, 0xca, 0xfa, 0xc9, 0xf4, 0xca, 0xfa, 0xc9, 0xf3, 0xca, 0xfa, - 0xc9, 0xf4, 0xca, 0xfa, 0xc9, 0xf3, 0xca, 0xfa, 0xca, 0xf3, 0xca, 0xfa, - 0xc9, 0xf3, 0xca, 0xfa, 0xca, 0xf3, 0xcb, 0xfa, 0xc9, 0xf3, 0xcb, 0xfa, - 0xca, 0xf3, 0xcb, 0xfa, 0xc9, 0xf3, 0xcc, 0xfa, 0xca, 0xf3, 0xcc, 0xfa, - 0xc9, 0xf3, 0xcc, 0xfa, 0xca, 0xf3, 0xcc, 0xfb, 0xcc, 0xf3, 0xcd, 0xfb, - 0xcc, 0xf3, 0xcd, 0xfb, 0xcc, 0xf3, 0xcd, 0xfb, 0xcc, 0xf3, 0xce, 0xfb, - 0xcc, 0xf3, 0xce, 0xfc, 0xce, 0xf3, 0xce, 0xfc, 0xce, 0xf3, 0xce, 0xfc, - 0xce, 0xf3, 0xcf, 0xfc, 0xcf, 0xf3, 0xcf, 0xfc, 0xcf, 0xf3, 0xcf, 0xfc, - 0xcf, 0xf3, 0xd0, 0xfc, 0xd0, 0xf3, 0xd0, 0xfc, 0xcf, 0xf3, 0xd0, 0xfc, - 0xd0, 0xf3, 0xd0, 0xfc, 0xcf, 0xf3, 0xd1, 0xfc, 0xd0, 0xf3, 0xd1, 0xfc, - 0xcf, 0xf3, 0xd1, 0xfc, 0xd0, 0xf3, 0xd2, 0xfc, 0xd2, 0xf3, 0xd2, 0xfc, - 0xd2, 0xf3, 0xd2, 0xfc, 0xd2, 0xf3, 0xd2, 0xfc, 0xd2, 0xf3, 0xd3, 0xfc, - 0xd3, 0xf3, 0xd3, 0xfc, 0xd2, 0xf3, 0xd3, 0xfc, 0xd3, 0xf3, 0xd4, 0xfc, - 0xd2, 0xf3, 0xd4, 0xfc, 0xd3, 0xf3, 0xd4, 0xfc, 0xd2, 0xf3, 0xd4, 0xfc, - 0xd3, 0xf3, 0xd5, 0xfd, 0xd5, 0xf3, 0xd5, 0xfd, 0xd5, 0xf3, 0xd5, 0xfd, - 0xd5, 0xf3, 0xd6, 0xfd, 0xd6, 0xf3, 0xd6, 0xfd, 0xd6, 0xf3, 0xd6, 0xfd, - 0xd6, 0xf3, 0xd6, 0xfd, 0xd6, 0xf3, 0xd7, 0xfd, 0xd6, 0xf3, 0xd7, 0xfd, - 0xd6, 0xf3, 0xd7, 0xfd, 0xd6, 0xf3, 0xd7, 0xfd, 0xd6, 0xf3, 0xd8, 0xfd, - 0xd8, 0xf3, 0xd8, 0xfd, 0xd8, 0xf3, 0xd8, 0xfd, 0xd8, 0xf3, 0xd9, 0xfd, - 0xd9, 0xf3, 0xd9, 0xfd, 0xd9, 0xf3, 0xd9, 0xfd, 0xd9, 0xf3, 0xd9, 0xfd, - 0xd9, 0xf3, 0xda, 0xfd, 0xd9, 0xf3, 0xda, 0xfd, 0xd9, 0xf3, 0xda, 0xfd, - 0xd9, 0xf3, 0xda, 0xfd, 0xd9, 0xf3, 0xdb, 0xfd, 0xd9, 0xf3, 0xdb, 0xfd, - 0xd9, 0xf3, 0xdb, 0xfe, 0xdb, 0xf3, 0xdb, 0xfe, 0xdb, 0xf3, 0xdc, 0xfe, - 0xdc, 0xf3, 0xdc, 0xfe, 0xdb, 0xf3, 0xdc, 0xfe, 0xdc, 0xf3, 0xdd, 0xfe, - 0xdb, 0xf3, 0xdd, 0xfe, 0xdc, 0xf3, 0xdd, 0xfe, 0xdb, 0xf3, 0xdd, 0xfe, - 0xdc, 0xf3, 0xde, 0xfe, 0xdb, 0xf3, 0xde, 0xfe, 0xdc, 0xf3, 0xde, 0xfb, - 0xe3, 0xf3, 0xde, 0xfa, 0xe3, 0xf3, 0xdf, 0xfb, 0xe3, 0xf3, 0xdf, 0xfa, - 0xe3, 0xf3, 0xdf, 0xfb, 0xe3, 0xf3, 0xdf, 0xfa, 0xe3, 0xf3, 0xe0, 0xfb, - 0xe3, 0xf3, 0xe0, 0xfa, 0xe3, 0xf3, 0xe0, 0xfb, 0xe3, 0xf3, 0xe1, 0xfa, - 0xe3, 0xf3, 0xe1, 0xfb, 0xe3, 0xf3, 0xe1, 0xfa, 0xe3, 0xf3, 0xe1, 0xfa, - 0xe3, 0xf3, 0xe2, 0xfa, 0xe3, 0xf3, 0xe2, 0xfa, 0xe3, 0xf3, 0xe2, 0xfa, - 0xe3, 0xf3, 0xe2, 0xfa, 0xe3, 0xf3, 0xe3, 0xfa, 0xe3, 0xf3, 0xe3, 0xfa, - 0xe3, 0xf3, 0xe3, 0xfa, 0xe3, 0xf2, 0xe3, 0xfa, 0xe3, 0xf3, 0xe3, 0xfa, - 0xe4, 0xf2, 0xe3, 0xfa, 0xe4, 0xf3, 0xe5, 0xfa, 0xe4, 0xf3, 0xe5, 0xfa, - 0xe4, 0xf3, 0xe5, 0xfa, 0xe5, 0xf3, 0xe5, 0xfa, 0xe5, 0xf3, 0xe5, 0xfa, - 0xe5, 0xf3, 0xe5, 0xfa, 0xe5, 0xf3, 0xe6, 0xfa, 0xe5, 0xf3, 0xe6, 0xfa, - 0xe5, 0xf3, 0xe6, 0xf9, 0xe5, 0xf3, 0xe6, 0xfa, 0xe5, 0xf3, 0xe7, 0xf9, - 0xe5, 0xf3, 0xe7, 0xfa, 0xe5, 0xf3, 0xe7, 0xf9, 0xe5, 0xf3, 0xe7, 0xfa, - 0xe5, 0xf3, 0xe8, 0xf9, 0xe5, 0xf3, 0xe8, 0xfa, 0xe5, 0xf3, 0xe8, 0xf9, - 0xe5, 0xf3, 0xe8, 0xfa, 0xe5, 0xf3, 0xe9, 0xf9, 0xe5, 0xf3, 0xe9, 0xfa, - 0xe5, 0xf3, 0xe9, 0xf9, 0xe5, 0xf3, 0xe9, 0xfa, 0xe5, 0xf3, 0xea, 0xf9, - 0xe5, 0xf3, 0xea, 0xfa, 0xe5, 0xf3, 0xea, 0xfb, 0xee, 0xf3, 0xea, 0xfa, - 0xef, 0xf3, 0xeb, 0xfb, 0xee, 0xf3, 0xeb, 0xfa, 0xef, 0xf3, 0xeb, 0xfa, - 0xef, 0xf3, 0xeb, 0xfa, 0xef, 0xf3, 0xec, 0xfa, 0xef, 0xf3, 0xec, 0xfa, - 0xef, 0xf3, 0xec, 0xfa, 0xef, 0xf3, 0xec, 0xfa, 0xef, 0xf3, 0xec, 0xfa, - 0xef, 0xf3, 0xed, 0xfa, 0xef, 0xf3, 0xed, 0xfa, 0xef, 0xf3, 0xed, 0xfa, - 0xef, 0xf3, 0xed, 0xfa, 0xef, 0xf3, 0xee, 0xfa, 0xef, 0xf3, 0xee, 0xfa, - 0xef, 0xf3, 0xee, 0xfa, 0xef, 0xf3, 0xee, 0xfa, 0xef, 0xf3, 0xef, 0xfa, - 0xef, 0xf3, 0xee, 0xfa, 0xef, 0xf3, 0xef, 0xfa, 0xef, 0xf3, 0xef, 0xfa, - 0xef, 0xf3, 0xf0, 0xfa, 0xef, 0xf3, 0xf0, 0xfa, 0xef, 0xf3, 0xf0, 0xfa, - 0xef, 0xf3, 0xf0, 0xfa, 0xef, 0xf3, 0xf1, 0xfa, 0xef, 0xf3, 0xf1, 0xfa, - 0xef, 0xf3, 0xf1, 0xfa, 0xef, 0xf3, 0xf1, 0xf8, 0xef, 0xf3, 0xf2, 0xfa, - 0xef, 0xf3, 0xf2, 0xf8, 0xef, 0xf3, 0xf2, 0xfa, 0xef, 0xf3, 0xf2, 0xf8, - 0xef, 0xf3, 0xf2, 0xfa, 0xef, 0xf3, 0xf3, 0xf8, 0xef, 0xf3, 0xf3, 0xfa, - 0xef, 0xf3, 0xf3, 0xf8, 0xef, 0xf3, 0xf3, 0xfa, 0xef, 0xf3, 0xf4, 0xf8, - 0xef, 0xf3, 0xf4, 0xfa, 0xef, 0xf3, 0xf4, 0xf8, 0xef, 0xf3, 0xf4, 0xfa, - 0xef, 0xf3, 0xf5, 0xf8, 0xef, 0xf3, 0xf5, 0xfa, 0xef, 0xf3, 0xf5, 0xf8, - 0xef, 0xf3, 0xf5, 0xfa, 0xef, 0xf3, 0xf5, 0xf8, 0xef, 0xf3, 0xf6, 0xfa, - 0xef, 0xf3, 0xf6, 0xf8, 0xef, 0xf3, 0xf6, 0xfa, 0xef, 0xf3, 0xf6, 0xf8, - 0xef, 0xf3, 0xf7, 0xfa, 0xef, 0xf3, 0xf7, 0xf8, 0xef, 0xf3, 0xf7, 0xfa, - 0xef, 0xf3, 0xf7, 0xf8, 0xef, 0xf3, 0xf8, 0xfa, 0xef, 0xf3, 0xf8, 0xf8, - 0xef, 0xf3, 0xf8, 0xfa, 0xef, 0xf3, 0xf8, 0xf8, 0xef, 0xf3, 0xf8, 0xfa, - 0xef, 0xf3, 0xf9, 0xf8, 0xef, 0xf3, 0xf9, 0xfa, 0xef, 0xf3, 0xf9, 0xf8, - 0xef, 0xf3, 0xf9, 0xfa, 0xef, 0xf3, 0xfa, 0xf8, 0xef, 0xf3, 0xfa, 0xfa, - 0xef, 0xf3, 0xfa, 0xf8, 0xef, 0xf3, 0xfa, 0xfa, 0xef, 0xf3, 0xfa, 0xf8, - 0xef, 0xf3, 0xfb, 0xf6, 0xf0, 0xf3, 0xfb, 0xf8, 0xef, 0xf3, 0xfb, 0xf6, - 0xf0, 0xf3, 0xfb, 0xf8, 0xef, 0xf3, 0xfc, 0xf6, 0xf0, 0xf3, 0xfc, 0xf8, - 0xef, 0xf3, 0xfc, 0xf6, 0xf0, 0xf3, 0xfc, 0xf8, 0xef, 0xf3, 0xfc, 0xf6, - 0xf0, 0xf3, 0xfd, 0xf8, 0xef, 0xf3, 0xfd, 0xf6, 0xf0, 0xf3, 0xfd, 0xf8, - 0xef, 0xf3, 0xfd, 0xf6, 0xf0, 0xf3, 0xfe, 0xf8, 0xef, 0xf3, 0xfe, 0xf6, - 0xf0, 0xf3, 0xfe, 0xf8, 0xef, 0xf3, 0xfe, 0xf6, 0xf0, 0xf3, 0xfe, 0xf8, - 0xef, 0xf3, 0xff, 0xf8, 0xef, 0xf3, 0xff, 0xf8, 0xef, 0xf3, 0x03, 0xf4, - 0x83, 0xf3, 0x0a, 0xf4, 0x83, 0xf3, 0x0f, 0xf4, 0x83, 0xf3, 0x14, 0xf4, - 0x83, 0xf3, 0x17, 0xf4, 0x83, 0xf3, 0x1b, 0xf4, 0x83, 0xf3, 0x1e, 0xf4, - 0x83, 0xf3, 0x20, 0xf4, 0x83, 0xf3, 0x23, 0xf4, 0x83, 0xf3, 0x25, 0xf4, - 0x83, 0xf3, 0x27, 0xf4, 0x83, 0xf3, 0x29, 0xf4, 0x83, 0xf3, 0x2b, 0xf4, - 0x83, 0xf3, 0x2d, 0xf4, 0x83, 0xf3, 0x2f, 0xf4, 0x83, 0xf3, 0x31, 0xf4, - 0x83, 0xf3, 0x32, 0xf4, 0x83, 0xf3, 0x34, 0xf4, 0x83, 0xf3, 0x35, 0xf4, - 0x83, 0xf3, 0x37, 0xf4, 0x83, 0xf3, 0x38, 0xf4, 0x83, 0xf3, 0x3a, 0xf4, - 0x83, 0xf3, 0x3b, 0xf4, 0x83, 0xf3, 0x3c, 0xf4, 0x83, 0xf3, 0x3e, 0xf4, - 0x83, 0xf3, 0x3f, 0xf4, 0x83, 0xf3, 0x40, 0xf4, 0x83, 0xf3, 0x42, 0xf4, - 0x83, 0xf3, 0x43, 0xf4, 0x83, 0xf3, 0x44, 0xf4, 0x83, 0xf3, 0x45, 0xf4, - 0x83, 0xf3, 0x46, 0xf4, 0x83, 0xf3, 0x47, 0xf4, 0x83, 0xf3, 0x48, 0xf4, - 0x83, 0xf3, 0x49, 0xf4, 0x83, 0xf3, 0x4a, 0xf4, 0x83, 0xf3, 0x4b, 0xf4, - 0x83, 0xf3, 0x4c, 0xf4, 0x83, 0xf3, 0x4d, 0xf4, 0x83, 0xf3, 0x4e, 0xf4, - 0x83, 0xf3, 0x4f, 0xf4, 0x83, 0xf3, 0x50, 0xf4, 0x83, 0xf3, 0x51, 0xf4, - 0x83, 0xf3, 0x52, 0xf4, 0x83, 0xf3, 0x53, 0xf4, 0x83, 0xf3, 0x54, 0xf4, - 0x83, 0xf3, 0x55, 0xf4, 0x83, 0xf3, 0x56, 0xf4, 0x83, 0xf3, 0x57, 0xf4, - 0x83, 0xf3, 0x58, 0xf4, 0x83, 0xf3, 0x58, 0xf4, 0x83, 0xf3, 0x59, 0xf4, - 0x83, 0xf3, 0x5a, 0xf4, 0x83, 0xf3, 0x5b, 0xf4, 0x83, 0xf3, 0x5c, 0xf4, - 0x83, 0xf3, 0x5d, 0xf4, 0x83, 0xf3, 0x5d, 0xf4, 0x83, 0xf3, 0x5e, 0xf4, - 0x83, 0xf3, 0x5f, 0xf4, 0x83, 0xf3, 0x60, 0xf4, 0x83, 0xf3, 0x60, 0xf4, - 0x83, 0xf3, 0x61, 0xf4, 0x83, 0xf3, 0x62, 0xf4, 0x83, 0xf3, 0x63, 0xf4, - 0x83, 0xf3, 0x63, 0xf4, 0x83, 0xf3, 0x64, 0xf4, 0x83, 0xf3, 0x65, 0xf4, - 0x83, 0xf3, 0x66, 0xf4, 0x83, 0xf3, 0x66, 0xf4, 0x83, 0xf3, 0x67, 0xf4, - 0x83, 0xf3, 0x68, 0xf4, 0x83, 0xf3, 0x68, 0xf4, 0x83, 0xf3, 0x69, 0xf4, - 0x83, 0xf3, 0x6a, 0xf4, 0x83, 0xf3, 0x6a, 0xf4, 0x83, 0xf3, 0x6b, 0xf4, - 0x83, 0xf3, 0x6c, 0xf4, 0x83, 0xf3, 0x6c, 0xf4, 0x83, 0xf3, 0x6d, 0xf4, - 0x83, 0xf3, 0x6e, 0xf4, 0x83, 0xf3, 0x6e, 0xf4, 0x83, 0xf3, 0x6f, 0xf4, - 0x83, 0xf3, 0x70, 0xf4, 0x83, 0xf3, 0x70, 0xf4, 0x83, 0xf3, 0x71, 0xf4, - 0x83, 0xf3, 0x72, 0xf4, 0x83, 0xf3, 0x72, 0xf4, 0x83, 0xf3, 0x73, 0xf4, - 0x83, 0xf3, 0x73, 0xf4, 0x83, 0xf3, 0x74, 0xf4, 0x83, 0xf3, 0x75, 0xf4, - 0x83, 0xf3, 0x75, 0xf4, 0x83, 0xf3, 0x76, 0xf4, 0x83, 0xf3, 0x76, 0xf4, - 0x83, 0xf3, 0x77, 0xf4, 0x83, 0xf3, 0x78, 0xf4, 0x83, 0xf3, 0x78, 0xf4, - 0x83, 0xf3, 0x79, 0xf4, 0x83, 0xf3, 0x79, 0xf4, 0x83, 0xf3, 0x7a, 0xf4, - 0x83, 0xf3, 0x7a, 0xf4, 0x83, 0xf3, 0x7b, 0xf4, 0x83, 0xf3, 0x7c, 0xf4, - 0x83, 0xf3, 0x7c, 0xf4, 0x83, 0xf3, 0x7d, 0xf4, 0x83, 0xf3, 0x7d, 0xf4, - 0x83, 0xf3, 0x7e, 0xf4, 0x85, 0xf3, 0x7e, 0xf4, 0x83, 0xf3, 0x7f, 0xf4, - 0x85, 0xf3, 0x7f, 0xf4, 0x83, 0xf3, 0x80, 0xf4, 0x85, 0xf3, 0x81, 0xf4, - 0x86, 0xf3, 0x81, 0xf4, 0x85, 0xf3, 0x82, 0xf4, 0x86, 0xf3, 0x82, 0xf4, - 0x85, 0xf3, 0x83, 0xf4, 0x86, 0xf3, 0x83, 0xf4, 0x85, 0xf3, 0x84, 0xf4, - 0x86, 0xf3, 0x84, 0xf4, 0x85, 0xf3, 0x85, 0xf4, 0x86, 0xf3, 0x85, 0xf4, - 0x85, 0xf3, 0x86, 0xf4, 0x86, 0xf3, 0x86, 0xf4, 0x86, 0xf3, 0x87, 0xf5, - 0x8b, 0xf3, 0x87, 0xf5, 0x8b, 0xf3, 0x88, 0xf5, 0x8b, 0xf3, 0x88, 0xf5, - 0x8b, 0xf3, 0x89, 0xf5, 0x8b, 0xf3, 0x89, 0xf5, 0x8b, 0xf3, 0x8a, 0xf5, - 0x8b, 0xf3, 0x8a, 0xf5, 0x8b, 0xf3, 0x8b, 0xf5, 0x8b, 0xf3, 0x8b, 0xf5, - 0x8b, 0xf3, 0x8c, 0xf5, 0x8c, 0xf3, 0x8c, 0xf5, 0x90, 0xf3, 0x8d, 0xf5, - 0x90, 0xf3, 0x8d, 0xf5, 0x90, 0xf3, 0x8e, 0xf5, 0x90, 0xf3, 0x8e, 0xf5, - 0x90, 0xf3, 0x8e, 0xf5, 0x90, 0xf3, 0x8f, 0xf5, 0x90, 0xf3, 0x8f, 0xf5, - 0x90, 0xf3, 0x90, 0xf5, 0x90, 0xf3, 0x90, 0xf5, 0x90, 0xf3, 0x91, 0xf5, - 0x91, 0xf3, 0x91, 0xf6, 0x95, 0xf3, 0x92, 0xf6, 0x95, 0xf3, 0x92, 0xf6, - 0x95, 0xf3, 0x93, 0xf6, 0x95, 0xf3, 0x93, 0xf6, 0x95, 0xf3, 0x94, 0xf6, - 0x95, 0xf3, 0x94, 0xf6, 0x95, 0xf3, 0x94, 0xf6, 0x95, 0xf3, 0x95, 0xf6, - 0x95, 0xf3, 0x95, 0xf6, 0x95, 0xf3, 0x96, 0xf6, 0x96, 0xf3, 0x96, 0xf6, - 0x9a, 0xf3, 0x97, 0xf6, 0x9a, 0xf3, 0x97, 0xf6, 0x9a, 0xf3, 0x98, 0xf6, - 0x9a, 0xf3, 0x98, 0xf6, 0x9a, 0xf3, 0x98, 0xf6, 0x9a, 0xf3, 0x99, 0xf6, - 0x9a, 0xf3, 0x99, 0xf6, 0x9a, 0xf3, 0x9a, 0xf6, 0x9a, 0xf3, 0x9a, 0xf6, - 0x9a, 0xf3, 0x9a, 0xf6, 0x9a, 0xf3, 0x9b, 0xf6, 0x9b, 0xf3, 0x9b, 0xf6, - 0x9b, 0xf3, 0x9c, 0xf7, 0x9e, 0xf3, 0x9c, 0xf7, 0x9f, 0xf3, 0x9d, 0xf7, - 0x9e, 0xf3, 0x9d, 0xf7, 0x9f, 0xf3, 0x9d, 0xf7, 0x9e, 0xf3, 0x9e, 0xf7, - 0x9f, 0xf3, 0x9e, 0xf7, 0x9e, 0xf3, 0x9f, 0xf7, 0x9f, 0xf3, 0x9f, 0xf7, - 0x9f, 0xf3, 0x9f, 0xf7, 0x9f, 0xf3, 0xa0, 0xf7, 0xa0, 0xf3, 0xa0, 0xf7, - 0xa3, 0xf3, 0xa1, 0xf7, 0xa3, 0xf3, 0xa1, 0xf7, 0xa3, 0xf3, 0xa1, 0xf7, - 0xa3, 0xf3, 0xa2, 0xf7, 0xa3, 0xf3, 0xa2, 0xf7, 0xa3, 0xf3, 0xa3, 0xf7, - 0xa3, 0xf3, 0xa3, 0xf7, 0xa3, 0xf3, 0xa3, 0xf7, 0xa3, 0xf3, 0xa4, 0xf7, - 0xa4, 0xf3, 0xa4, 0xf7, 0xa4, 0xf3, 0xa5, 0xf8, 0xa7, 0xf3, 0xa5, 0xf8, - 0xa7, 0xf3, 0xa5, 0xf8, 0xa7, 0xf3, 0xa6, 0xf8, 0xa7, 0xf3, 0xa6, 0xf8, - 0xa7, 0xf3, 0xa6, 0xf8, 0xa7, 0xf3, 0xa7, 0xf8, 0xa7, 0xf3, 0xa7, 0xf8, - 0xa9, 0xf3, 0xa8, 0xf8, 0xa9, 0xf3, 0xa8, 0xf8, 0xa9, 0xf3, 0xa8, 0xf8, - 0xa9, 0xf3, 0xa9, 0xf8, 0xa9, 0xf3, 0xa9, 0xf8, 0xa9, 0xf3, 0xaa, 0xf8, - 0xab, 0xf3, 0xaa, 0xf8, 0xab, 0xf3, 0xaa, 0xf8, 0xab, 0xf3, 0xab, 0xf8, - 0xab, 0xf3, 0xab, 0xf8, 0xab, 0xf3, 0xab, 0xf8, 0xab, 0xf3, 0xac, 0xf8, - 0xac, 0xf3, 0xac, 0xf8, 0xac, 0xf3, 0xac, 0xf8, 0xac, 0xf3, 0xad, 0xf8, - 0xad, 0xf3, 0xad, 0xf8, 0xad, 0xf3, 0xae, 0xf8, 0xaf, 0xf3, 0xae, 0xf8, - 0xaf, 0xf3, 0xae, 0xf8, 0xaf, 0xf3, 0xaf, 0xf8, 0xaf, 0xf3, 0xaf, 0xf8, - 0xaf, 0xf3, 0xaf, 0xf8, 0xaf, 0xf3, 0xb0, 0xf8, 0xb0, 0xf3, 0xb0, 0xf8, - 0xb0, 0xf3, 0xb0, 0xf8, 0xb0, 0xf3, 0xb1, 0xf8, 0xb1, 0xf3, 0xb1, 0xf8, - 0xb1, 0xf3, 0xb2, 0xf9, 0xb3, 0xf3, 0xb2, 0xf9, 0xb3, 0xf3, 0xb2, 0xf9, - 0xb3, 0xf3, 0xb3, 0xf9, 0xb3, 0xf3, 0xb3, 0xf9, 0xb3, 0xf3, 0xb3, 0xf9, - 0xb3, 0xf3, 0xb4, 0xf9, 0xb4, 0xf3, 0xb4, 0xf9, 0xb4, 0xf3, 0xb4, 0xf9, - 0xb4, 0xf3, 0xb5, 0xf9, 0xb5, 0xf3, 0xb5, 0xf9, 0xb5, 0xf3, 0xb5, 0xf9, - 0xb5, 0xf3, 0xb6, 0xf9, 0xb6, 0xf3, 0xb6, 0xf9, 0xb7, 0xf3, 0xb6, 0xf9, - 0xb7, 0xf3, 0xb7, 0xf9, 0xb7, 0xf3, 0xb7, 0xf9, 0xb7, 0xf3, 0xb7, 0xf9, - 0xb7, 0xf3, 0xb8, 0xf9, 0xb8, 0xf3, 0xb8, 0xf9, 0xb8, 0xf3, 0xb8, 0xf9, - 0xb8, 0xf3, 0xb9, 0xf9, 0xb9, 0xf3, 0xb9, 0xf9, 0xb9, 0xf3, 0xb9, 0xf9, - 0xb9, 0xf3, 0xba, 0xf9, 0xba, 0xf3, 0xba, 0xf9, 0xba, 0xf3, 0xba, 0xfa, - 0xba, 0xf4, 0xbb, 0xfa, 0xbb, 0xf4, 0xbb, 0xfa, 0xbb, 0xf4, 0xbb, 0xfa, - 0xbb, 0xf4, 0xbc, 0xfa, 0xbc, 0xf4, 0xbc, 0xfa, 0xbc, 0xf4, 0xbc, 0xfa, - 0xbc, 0xf4, 0xbd, 0xfa, 0xbd, 0xf4, 0xbd, 0xfa, 0xbd, 0xf4, 0xbd, 0xfa, - 0xbd, 0xf4, 0xbe, 0xfa, 0xbe, 0xf4, 0xbd, 0xfa, 0xbe, 0xf4, 0xbe, 0xfa, - 0xbe, 0xf4, 0xbf, 0xfa, 0xbf, 0xf5, 0xbf, 0xfa, 0xbf, 0xf5, 0xbf, 0xfa, - 0xbf, 0xf5, 0xc0, 0xfa, 0xc0, 0xf5, 0xc0, 0xfa, 0xc0, 0xf5, 0xc0, 0xfa, - 0xc0, 0xf5, 0xc1, 0xfa, 0xc1, 0xf5, 0xc1, 0xfa, 0xc1, 0xf5, 0xc1, 0xfa, - 0xc1, 0xf5, 0xc1, 0xfa, 0xc1, 0xf5, 0xc1, 0xfa, 0xc2, 0xf5, 0xc1, 0xfa, - 0xc2, 0xf5, 0xc1, 0xfa, 0xc2, 0xf5, 0xc3, 0xfa, 0xc3, 0xf6, 0xc3, 0xfa, - 0xc3, 0xf6, 0xc3, 0xfa, 0xc3, 0xf6, 0xc4, 0xfa, 0xc4, 0xf6, 0xc4, 0xfa, - 0xc4, 0xf6, 0xc4, 0xfa, 0xc4, 0xf6, 0xc5, 0xfa, 0xc5, 0xf6, 0xc4, 0xfa, - 0xc5, 0xf6, 0xc5, 0xfa, 0xc5, 0xf6, 0xc4, 0xfa, 0xc6, 0xf6, 0xc5, 0xfa, - 0xc6, 0xf6, 0xc6, 0xfa, 0xc6, 0xf7, 0xc6, 0xfa, 0xc6, 0xf7, 0xc7, 0xfa, - 0xc7, 0xf7, 0xc7, 0xfa, 0xc7, 0xf7, 0xc7, 0xfa, 0xc7, 0xf7, 0xc8, 0xfa, - 0xc8, 0xf7, 0xca, 0xfa, 0xc8, 0xf3, 0xca, 0xfa, 0xc8, 0xf3, 0xca, 0xfa, - 0xc9, 0xf3, 0xca, 0xfa, 0xc9, 0xf3, 0xca, 0xfa, 0xc9, 0xf3, 0xca, 0xfa, - 0xc9, 0xf3, 0xca, 0xf9, 0xca, 0xf3, 0xca, 0xfa, 0xc9, 0xf3, 0xca, 0xf9, - 0xca, 0xf3, 0xcb, 0xfa, 0xc9, 0xf3, 0xcb, 0xf9, 0xca, 0xf3, 0xcb, 0xfa, - 0xc9, 0xf3, 0xcc, 0xf9, 0xca, 0xf3, 0xcc, 0xfb, 0xcb, 0xf3, 0xcc, 0xfb, - 0xcb, 0xf3, 0xcc, 0xfc, 0xcc, 0xf3, 0xcd, 0xfc, 0xcd, 0xf3, 0xcd, 0xfc, - 0xcd, 0xf3, 0xcd, 0xfc, 0xcd, 0xf3, 0xce, 0xfc, 0xce, 0xf3, 0xce, 0xfc, - 0xce, 0xf3, 0xce, 0xfc, 0xce, 0xf3, 0xce, 0xfc, 0xce, 0xf3, 0xcf, 0xfc, - 0xce, 0xf3, 0xcf, 0xfc, 0xce, 0xf3, 0xcf, 0xfc, 0xce, 0xf3, 0xd0, 0xfc, - 0xd0, 0xf3, 0xd0, 0xfc, 0xd0, 0xf3, 0xd0, 0xfc, 0xd0, 0xf3, 0xd0, 0xfc, - 0xd0, 0xf3, 0xd1, 0xfc, 0xd1, 0xf3, 0xd1, 0xfc, 0xd1, 0xf3, 0xd1, 0xfc, - 0xd1, 0xf3, 0xd2, 0xfc, 0xd1, 0xf3, 0xd2, 0xfc, 0xd1, 0xf3, 0xd2, 0xfc, - 0xd1, 0xf3, 0xd2, 0xfc, 0xd1, 0xf3, 0xd3, 0xfc, 0xd1, 0xf3, 0xd3, 0xfc, - 0xd3, 0xf3, 0xd3, 0xfc, 0xd3, 0xf3, 0xd4, 0xfc, 0xd4, 0xf3, 0xd4, 0xfc, - 0xd4, 0xf3, 0xd4, 0xfc, 0xd4, 0xf3, 0xd4, 0xfc, 0xd4, 0xf3, 0xd5, 0xfc, - 0xd4, 0xf3, 0xd5, 0xfc, 0xd4, 0xf3, 0xd5, 0xfc, 0xd4, 0xf3, 0xd6, 0xfc, - 0xd4, 0xf3, 0xd6, 0xfc, 0xd4, 0xf3, 0xd6, 0xfd, 0xd6, 0xf3, 0xd6, 0xfd, - 0xd6, 0xf3, 0xd7, 0xfd, 0xd7, 0xf3, 0xd7, 0xfd, 0xd7, 0xf3, 0xd7, 0xfd, - 0xd7, 0xf3, 0xd7, 0xfd, 0xd7, 0xf3, 0xd8, 0xfd, 0xd7, 0xf3, 0xd8, 0xfd, - 0xd7, 0xf3, 0xd8, 0xfd, 0xd7, 0xf3, 0xd9, 0xfd, 0xd7, 0xf3, 0xd9, 0xfd, - 0xd7, 0xf3, 0xd9, 0xfd, 0xd9, 0xf3, 0xd9, 0xfd, 0xd9, 0xf3, 0xda, 0xfd, - 0xda, 0xf3, 0xda, 0xfd, 0xda, 0xf3, 0xda, 0xfd, 0xda, 0xf3, 0xda, 0xfd, - 0xda, 0xf3, 0xdb, 0xfd, 0xda, 0xf3, 0xdb, 0xfd, 0xda, 0xf3, 0xdb, 0xfd, - 0xda, 0xf3, 0xdb, 0xfd, 0xda, 0xf3, 0xdc, 0xfd, 0xda, 0xf3, 0xdc, 0xfd, - 0xda, 0xf3, 0xdc, 0xfd, 0xda, 0xf3, 0xdd, 0xfe, 0xdd, 0xf3, 0xdd, 0xfe, - 0xdd, 0xf3, 0xdd, 0xfe, 0xdd, 0xf3, 0xdd, 0xfe, 0xdd, 0xf3, 0xde, 0xfe, - 0xdd, 0xf3, 0xde, 0xfe, 0xdd, 0xf3, 0xde, 0xfb, 0xe3, 0xf3, 0xde, 0xfa, - 0xe3, 0xf3, 0xdf, 0xfb, 0xe3, 0xf3, 0xdf, 0xfa, 0xe3, 0xf3, 0xdf, 0xfb, - 0xe3, 0xf3, 0xdf, 0xfa, 0xe3, 0xf3, 0xe0, 0xfb, 0xe3, 0xf3, 0xe0, 0xfa, - 0xe3, 0xf3, 0xe0, 0xfb, 0xe3, 0xf3, 0xe1, 0xfa, 0xe3, 0xf3, 0xe1, 0xfb, - 0xe3, 0xf3, 0xe1, 0xfa, 0xe3, 0xf3, 0xe1, 0xfb, 0xe3, 0xf3, 0xe2, 0xfa, - 0xe3, 0xf3, 0xe2, 0xfb, 0xe3, 0xf3, 0xe2, 0xfa, 0xe3, 0xf3, 0xe2, 0xfa, - 0xe3, 0xf3, 0xe3, 0xfa, 0xe3, 0xf3, 0xe3, 0xfa, 0xe3, 0xf3, 0xe3, 0xfa, - 0xe3, 0xf3, 0xe3, 0xfa, 0xe3, 0xf3, 0xe3, 0xfa, 0xe4, 0xf3, 0xe3, 0xfa, - 0xe4, 0xf3, 0xe5, 0xfa, 0xe4, 0xf3, 0xe5, 0xfa, 0xe4, 0xf3, 0xe5, 0xfa, - 0xe5, 0xf3, 0xe5, 0xfa, 0xe5, 0xf3, 0xe5, 0xfa, 0xe5, 0xf3, 0xe5, 0xfa, - 0xe5, 0xf3, 0xe6, 0xfa, 0xe5, 0xf3, 0xe6, 0xfa, 0xe5, 0xf3, 0xe6, 0xf9, - 0xe5, 0xf3, 0xe6, 0xfa, 0xe5, 0xf3, 0xe7, 0xf9, 0xe5, 0xf3, 0xe7, 0xfa, - 0xe5, 0xf3, 0xe7, 0xf9, 0xe5, 0xf3, 0xe7, 0xfa, 0xe5, 0xf3, 0xe8, 0xf9, - 0xe5, 0xf3, 0xe8, 0xfa, 0xe5, 0xf3, 0xe8, 0xf9, 0xe5, 0xf3, 0xe8, 0xfa, - 0xe5, 0xf3, 0xe9, 0xf9, 0xe5, 0xf3, 0xe9, 0xfa, 0xe5, 0xf3, 0xe9, 0xf9, - 0xe5, 0xf3, 0xe9, 0xfa, 0xe5, 0xf3, 0xea, 0xf9, 0xe5, 0xf3, 0xea, 0xfa, - 0xe5, 0xf3, 0xea, 0xfb, 0xee, 0xf3, 0xea, 0xfa, 0xef, 0xf3, 0xeb, 0xfb, - 0xee, 0xf3, 0xeb, 0xfa, 0xef, 0xf3, 0xeb, 0xfb, 0xee, 0xf3, 0xeb, 0xfa, - 0xef, 0xf3, 0xec, 0xfb, 0xee, 0xf3, 0xec, 0xfa, 0xef, 0xf3, 0xec, 0xfb, - 0xee, 0xf3, 0xec, 0xfa, 0xef, 0xf3, 0xec, 0xfb, 0xee, 0xf3, 0xed, 0xfa, - 0xef, 0xf3, 0xed, 0xfa, 0xef, 0xf3, 0xed, 0xfa, 0xef, 0xf3, 0xed, 0xfa, - 0xef, 0xf3, 0xee, 0xfa, 0xef, 0xf3, 0xee, 0xfa, 0xef, 0xf3, 0xee, 0xfa, - 0xef, 0xf3, 0xee, 0xfa, 0xef, 0xf3, 0xef, 0xfa, 0xef, 0xf3, 0xee, 0xfa, - 0xef, 0xf3, 0xef, 0xf9, 0xef, 0xf3, 0xef, 0xfa, 0xef, 0xf3, 0xf0, 0xf9, - 0xef, 0xf3, 0xf0, 0xfa, 0xef, 0xf3, 0xf0, 0xf9, 0xef, 0xf3, 0xf0, 0xfa, - 0xef, 0xf3, 0xf1, 0xf9, 0xef, 0xf3, 0xf1, 0xfa, 0xef, 0xf3, 0xf1, 0xf9, - 0xef, 0xf3, 0xf1, 0xfa, 0xef, 0xf3, 0xf2, 0xf9, 0xef, 0xf3, 0xf2, 0xfa, - 0xef, 0xf3, 0xf2, 0xf9, 0xef, 0xf3, 0xf2, 0xfa, 0xef, 0xf3, 0xf2, 0xf9, - 0xef, 0xf3, 0xf3, 0xfa, 0xef, 0xf3, 0xf3, 0xf9, 0xef, 0xf3, 0xf3, 0xf8, - 0xef, 0xf3, 0xf3, 0xf9, 0xef, 0xf3, 0xf4, 0xf8, 0xef, 0xf3, 0xf4, 0xf9, - 0xef, 0xf3, 0xf4, 0xf8, 0xef, 0xf3, 0xf4, 0xf9, 0xef, 0xf3, 0xf5, 0xf8, - 0xef, 0xf3, 0xf5, 0xf9, 0xef, 0xf3, 0xf5, 0xf8, 0xef, 0xf3, 0xf5, 0xf9, - 0xef, 0xf3, 0xf5, 0xf8, 0xef, 0xf3, 0xf6, 0xf9, 0xef, 0xf3, 0xf6, 0xf8, - 0xef, 0xf3, 0xf6, 0xf9, 0xef, 0xf3, 0xf6, 0xf8, 0xef, 0xf3, 0xf7, 0xf9, - 0xef, 0xf3, 0xf7, 0xf8, 0xef, 0xf3, 0xf7, 0xf9, 0xef, 0xf3, 0xf7, 0xf8, - 0xef, 0xf3, 0xf8, 0xf9, 0xef, 0xf3, 0xf8, 0xf8, 0xef, 0xf3, 0xf8, 0xf9, - 0xef, 0xf3, 0xf8, 0xf8, 0xef, 0xf3, 0xf8, 0xf9, 0xef, 0xf3, 0xf9, 0xf8, - 0xef, 0xf3, 0xf9, 0xf9, 0xef, 0xf3, 0xf9, 0xf8, 0xef, 0xf3, 0xf9, 0xf9, - 0xef, 0xf3, 0xfa, 0xf8, 0xef, 0xf3, 0xfa, 0xf9, 0xef, 0xf3, 0xfa, 0xf8, - 0xef, 0xf3, 0xfa, 0xf9, 0xef, 0xf3, 0xfa, 0xf8, 0xef, 0xf3, 0xfb, 0xf7, - 0xf0, 0xf3, 0xfb, 0xf8, 0xef, 0xf3, 0xfb, 0xf7, 0xf0, 0xf3, 0xfb, 0xf8, - 0xef, 0xf3, 0xfc, 0xf7, 0xf0, 0xf3, 0xfc, 0xf8, 0xef, 0xf3, 0xfc, 0xf7, - 0xf0, 0xf3, 0xfc, 0xf8, 0xef, 0xf3, 0xfc, 0xf7, 0xf0, 0xf3, 0xfd, 0xf8, - 0xef, 0xf3, 0xfd, 0xf7, 0xf0, 0xf3, 0xfd, 0xf8, 0xef, 0xf3, 0xfd, 0xf7, - 0xf0, 0xf3, 0xfe, 0xf8, 0xef, 0xf3, 0xfe, 0xf7, 0xf0, 0xf3, 0xfe, 0xf8, - 0xef, 0xf3, 0xfe, 0xf7, 0xf0, 0xf3, 0xfe, 0xf8, 0xef, 0xf3, 0xff, 0xf7, - 0xf0, 0xf3, 0xff, 0xf8, 0xef, 0xf3, 0x03, 0xf4, 0x83, 0xf4, 0x0a, 0xf4, - 0x83, 0xf4, 0x0f, 0xf4, 0x83, 0xf4, 0x14, 0xf4, 0x83, 0xf4, 0x17, 0xf4, - 0x83, 0xf4, 0x1b, 0xf4, 0x83, 0xf4, 0x1e, 0xf4, 0x83, 0xf4, 0x20, 0xf4, - 0x83, 0xf4, 0x23, 0xf4, 0x83, 0xf4, 0x25, 0xf4, 0x83, 0xf4, 0x27, 0xf4, - 0x83, 0xf4, 0x29, 0xf4, 0x83, 0xf4, 0x2b, 0xf4, 0x83, 0xf4, 0x2d, 0xf4, - 0x83, 0xf4, 0x2f, 0xf4, 0x83, 0xf4, 0x31, 0xf4, 0x83, 0xf4, 0x32, 0xf4, - 0x83, 0xf4, 0x34, 0xf4, 0x83, 0xf4, 0x35, 0xf4, 0x83, 0xf4, 0x37, 0xf4, - 0x83, 0xf4, 0x38, 0xf4, 0x83, 0xf4, 0x3a, 0xf4, 0x83, 0xf4, 0x3b, 0xf4, - 0x83, 0xf4, 0x3c, 0xf4, 0x83, 0xf4, 0x3e, 0xf4, 0x83, 0xf4, 0x3f, 0xf4, - 0x83, 0xf4, 0x40, 0xf4, 0x83, 0xf4, 0x42, 0xf4, 0x83, 0xf4, 0x43, 0xf4, - 0x83, 0xf4, 0x44, 0xf4, 0x83, 0xf4, 0x45, 0xf4, 0x83, 0xf4, 0x46, 0xf4, - 0x83, 0xf4, 0x47, 0xf4, 0x83, 0xf4, 0x48, 0xf4, 0x83, 0xf4, 0x49, 0xf4, - 0x83, 0xf4, 0x4a, 0xf4, 0x83, 0xf4, 0x4b, 0xf4, 0x83, 0xf4, 0x4c, 0xf4, - 0x83, 0xf4, 0x4d, 0xf4, 0x83, 0xf4, 0x4e, 0xf4, 0x83, 0xf4, 0x4f, 0xf4, - 0x83, 0xf4, 0x50, 0xf4, 0x83, 0xf4, 0x51, 0xf4, 0x83, 0xf4, 0x52, 0xf4, - 0x83, 0xf4, 0x53, 0xf4, 0x83, 0xf4, 0x54, 0xf4, 0x83, 0xf4, 0x55, 0xf4, - 0x83, 0xf4, 0x56, 0xf4, 0x83, 0xf4, 0x57, 0xf4, 0x83, 0xf4, 0x58, 0xf4, - 0x83, 0xf4, 0x58, 0xf4, 0x83, 0xf4, 0x59, 0xf4, 0x83, 0xf4, 0x5a, 0xf4, - 0x83, 0xf4, 0x5b, 0xf4, 0x83, 0xf4, 0x5c, 0xf4, 0x83, 0xf4, 0x5d, 0xf4, - 0x83, 0xf4, 0x5d, 0xf4, 0x83, 0xf4, 0x5e, 0xf4, 0x83, 0xf4, 0x5f, 0xf4, - 0x83, 0xf4, 0x60, 0xf4, 0x83, 0xf4, 0x60, 0xf4, 0x83, 0xf4, 0x61, 0xf4, - 0x83, 0xf4, 0x62, 0xf4, 0x83, 0xf4, 0x63, 0xf4, 0x83, 0xf4, 0x63, 0xf4, - 0x83, 0xf4, 0x64, 0xf4, 0x83, 0xf4, 0x65, 0xf4, 0x83, 0xf4, 0x66, 0xf4, - 0x83, 0xf4, 0x66, 0xf4, 0x83, 0xf4, 0x67, 0xf4, 0x83, 0xf4, 0x68, 0xf4, - 0x83, 0xf4, 0x68, 0xf4, 0x83, 0xf4, 0x69, 0xf4, 0x83, 0xf4, 0x6a, 0xf4, - 0x83, 0xf4, 0x6a, 0xf4, 0x83, 0xf4, 0x6b, 0xf4, 0x83, 0xf4, 0x6c, 0xf4, - 0x83, 0xf4, 0x6c, 0xf4, 0x83, 0xf4, 0x6d, 0xf4, 0x83, 0xf4, 0x6e, 0xf4, - 0x83, 0xf4, 0x6e, 0xf4, 0x83, 0xf4, 0x6f, 0xf4, 0x83, 0xf4, 0x70, 0xf4, - 0x83, 0xf4, 0x70, 0xf4, 0x83, 0xf4, 0x71, 0xf4, 0x83, 0xf4, 0x72, 0xf4, - 0x83, 0xf4, 0x72, 0xf4, 0x83, 0xf4, 0x73, 0xf4, 0x83, 0xf4, 0x73, 0xf4, - 0x83, 0xf4, 0x74, 0xf4, 0x83, 0xf4, 0x75, 0xf4, 0x83, 0xf4, 0x75, 0xf4, - 0x83, 0xf4, 0x76, 0xf4, 0x83, 0xf4, 0x76, 0xf4, 0x83, 0xf4, 0x77, 0xf4, - 0x83, 0xf4, 0x78, 0xf4, 0x83, 0xf4, 0x78, 0xf4, 0x83, 0xf4, 0x79, 0xf4, - 0x83, 0xf4, 0x79, 0xf4, 0x83, 0xf4, 0x7a, 0xf4, 0x83, 0xf4, 0x7a, 0xf4, - 0x83, 0xf4, 0x7b, 0xf4, 0x83, 0xf4, 0x7c, 0xf4, 0x83, 0xf4, 0x7c, 0xf4, - 0x83, 0xf4, 0x7d, 0xf4, 0x83, 0xf4, 0x7d, 0xf4, 0x83, 0xf4, 0x7e, 0xf4, - 0x83, 0xf4, 0x7e, 0xf4, 0x83, 0xf4, 0x7f, 0xf4, 0x83, 0xf4, 0x7f, 0xf4, - 0x83, 0xf4, 0x80, 0xf4, 0x83, 0xf4, 0x81, 0xf4, 0x83, 0xf4, 0x81, 0xf4, - 0x83, 0xf4, 0x82, 0xf4, 0x83, 0xf4, 0x82, 0xf4, 0x83, 0xf4, 0x83, 0xf4, - 0x83, 0xf4, 0x83, 0xf4, 0x83, 0xf4, 0x84, 0xf5, 0x88, 0xf4, 0x84, 0xf5, - 0x88, 0xf4, 0x85, 0xf5, 0x88, 0xf4, 0x85, 0xf5, 0x88, 0xf4, 0x86, 0xf5, - 0x88, 0xf4, 0x86, 0xf5, 0x88, 0xf4, 0x87, 0xf5, 0x88, 0xf4, 0x87, 0xf5, - 0x88, 0xf4, 0x88, 0xf5, 0x88, 0xf4, 0x88, 0xf5, 0x88, 0xf4, 0x89, 0xf5, - 0x89, 0xf4, 0x89, 0xf5, 0x8d, 0xf4, 0x8a, 0xf5, 0x8e, 0xf4, 0x8a, 0xf5, - 0x8d, 0xf4, 0x8b, 0xf5, 0x8e, 0xf4, 0x8b, 0xf5, 0x8d, 0xf4, 0x8c, 0xf5, - 0x8e, 0xf4, 0x8c, 0xf5, 0x8d, 0xf4, 0x8d, 0xf5, 0x8e, 0xf4, 0x8d, 0xf5, - 0x8d, 0xf4, 0x8e, 0xf5, 0x8e, 0xf4, 0x8e, 0xf5, 0x8e, 0xf4, 0x8e, 0xf5, - 0x92, 0xf4, 0x8f, 0xf5, 0x93, 0xf4, 0x8f, 0xf5, 0x92, 0xf4, 0x90, 0xf5, - 0x93, 0xf4, 0x90, 0xf5, 0x92, 0xf4, 0x91, 0xf5, 0x93, 0xf4, 0x91, 0xf5, - 0x92, 0xf4, 0x92, 0xf5, 0x93, 0xf4, 0x92, 0xf5, 0x92, 0xf4, 0x93, 0xf5, - 0x93, 0xf4, 0x93, 0xf5, 0x93, 0xf4, 0x94, 0xf6, 0x97, 0xf4, 0x94, 0xf6, - 0x98, 0xf4, 0x94, 0xf6, 0x97, 0xf4, 0x95, 0xf6, 0x98, 0xf4, 0x95, 0xf6, - 0x97, 0xf4, 0x96, 0xf6, 0x98, 0xf4, 0x96, 0xf6, 0x97, 0xf4, 0x97, 0xf6, - 0x98, 0xf4, 0x97, 0xf6, 0x97, 0xf4, 0x98, 0xf6, 0x98, 0xf4, 0x98, 0xf6, - 0x98, 0xf4, 0x98, 0xf6, 0x9c, 0xf4, 0x99, 0xf6, 0x9c, 0xf4, 0x99, 0xf6, - 0x9c, 0xf4, 0x9a, 0xf6, 0x9c, 0xf4, 0x9a, 0xf6, 0x9c, 0xf4, 0x9a, 0xf6, - 0x9c, 0xf4, 0x9b, 0xf6, 0x9c, 0xf4, 0x9b, 0xf6, 0x9c, 0xf4, 0x9c, 0xf6, - 0x9c, 0xf4, 0x9c, 0xf6, 0x9c, 0xf4, 0x9d, 0xf6, 0x9d, 0xf4, 0x9d, 0xf6, - 0x9d, 0xf4, 0x9d, 0xf6, 0x9d, 0xf4, 0x9e, 0xf7, 0xa0, 0xf4, 0x9e, 0xf7, - 0xa1, 0xf4, 0x9f, 0xf7, 0xa0, 0xf4, 0x9f, 0xf7, 0xa1, 0xf4, 0x9f, 0xf7, - 0xa0, 0xf4, 0xa0, 0xf7, 0xa1, 0xf4, 0xa0, 0xf7, 0xa0, 0xf4, 0xa1, 0xf7, - 0xa1, 0xf4, 0xa1, 0xf7, 0xa1, 0xf4, 0xa1, 0xf7, 0xa1, 0xf4, 0xa2, 0xf7, - 0xa2, 0xf4, 0xa2, 0xf7, 0xa5, 0xf4, 0xa3, 0xf7, 0xa5, 0xf4, 0xa3, 0xf7, - 0xa5, 0xf4, 0xa3, 0xf7, 0xa5, 0xf4, 0xa4, 0xf7, 0xa5, 0xf4, 0xa4, 0xf7, - 0xa5, 0xf4, 0xa5, 0xf7, 0xa5, 0xf4, 0xa5, 0xf7, 0xa5, 0xf4, 0xa5, 0xf7, - 0xa5, 0xf4, 0xa6, 0xf7, 0xa6, 0xf4, 0xa6, 0xf7, 0xa6, 0xf4, 0xa6, 0xf8, - 0xa9, 0xf4, 0xa7, 0xf8, 0xa9, 0xf4, 0xa7, 0xf8, 0xa9, 0xf4, 0xa8, 0xf8, - 0xa9, 0xf4, 0xa8, 0xf8, 0xa9, 0xf4, 0xa8, 0xf8, 0xa9, 0xf4, 0xa9, 0xf8, - 0xa9, 0xf4, 0xa9, 0xf8, 0xa9, 0xf4, 0xaa, 0xf8, 0xaa, 0xf4, 0xaa, 0xf8, - 0xaa, 0xf4, 0xaa, 0xf8, 0xaa, 0xf4, 0xab, 0xf8, 0xab, 0xf4, 0xab, 0xf8, - 0xab, 0xf4, 0xab, 0xf8, 0xad, 0xf4, 0xac, 0xf8, 0xad, 0xf4, 0xac, 0xf8, - 0xad, 0xf4, 0xac, 0xf8, 0xad, 0xf4, 0xad, 0xf8, 0xad, 0xf4, 0xad, 0xf8, - 0xad, 0xf4, 0xae, 0xf8, 0xae, 0xf4, 0xae, 0xf8, 0xae, 0xf4, 0xae, 0xf8, - 0xae, 0xf4, 0xaf, 0xf8, 0xaf, 0xf4, 0xaf, 0xf8, 0xaf, 0xf4, 0xaf, 0xf9, - 0xb1, 0xf4, 0xb0, 0xf9, 0xb1, 0xf4, 0xb0, 0xf9, 0xb1, 0xf4, 0xb0, 0xf9, - 0xb1, 0xf4, 0xb1, 0xf9, 0xb1, 0xf4, 0xb1, 0xf9, 0xb1, 0xf4, 0xb2, 0xf9, - 0xb2, 0xf4, 0xb2, 0xf9, 0xb2, 0xf4, 0xb2, 0xf9, 0xb2, 0xf4, 0xb3, 0xf9, - 0xb3, 0xf4, 0xb3, 0xf9, 0xb3, 0xf4, 0xb3, 0xf9, 0xb5, 0xf4, 0xb4, 0xf9, - 0xb5, 0xf4, 0xb4, 0xf9, 0xb5, 0xf4, 0xb4, 0xf9, 0xb5, 0xf4, 0xb5, 0xf9, - 0xb5, 0xf4, 0xb5, 0xf9, 0xb5, 0xf4, 0xb5, 0xf9, 0xb5, 0xf4, 0xb6, 0xf9, - 0xb6, 0xf4, 0xb6, 0xf9, 0xb6, 0xf4, 0xb6, 0xf9, 0xb6, 0xf4, 0xb7, 0xf9, - 0xb7, 0xf4, 0xb7, 0xf9, 0xb7, 0xf4, 0xb7, 0xf9, 0xb7, 0xf4, 0xb8, 0xfa, - 0xb8, 0xf4, 0xb8, 0xfa, 0xb9, 0xf4, 0xb8, 0xfa, 0xb8, 0xf4, 0xb9, 0xfa, - 0xb9, 0xf4, 0xb9, 0xfa, 0xb9, 0xf4, 0xb9, 0xfa, 0xb9, 0xf4, 0xba, 0xfa, - 0xba, 0xf4, 0xba, 0xfa, 0xba, 0xf4, 0xba, 0xfa, 0xba, 0xf4, 0xbb, 0xfa, - 0xbb, 0xf4, 0xbb, 0xfa, 0xbb, 0xf4, 0xbb, 0xfa, 0xbb, 0xf4, 0xbc, 0xfa, - 0xbc, 0xf4, 0xbc, 0xfa, 0xbc, 0xf5, 0xbc, 0xfa, 0xbc, 0xf5, 0xbd, 0xfa, - 0xbd, 0xf5, 0xbd, 0xfa, 0xbd, 0xf5, 0xbd, 0xfa, 0xbd, 0xf5, 0xbe, 0xfa, - 0xbe, 0xf5, 0xbe, 0xfa, 0xbe, 0xf5, 0xbe, 0xfa, 0xbe, 0xf5, 0xbf, 0xfa, - 0xbf, 0xf5, 0xbf, 0xfa, 0xbf, 0xf5, 0xbf, 0xfa, 0xbf, 0xf5, 0xbf, 0xfa, - 0xc0, 0xf5, 0xbf, 0xfa, 0xc0, 0xf5, 0xc0, 0xfa, 0xc0, 0xf6, 0xc1, 0xfa, - 0xc1, 0xf6, 0xc1, 0xfa, 0xc1, 0xf6, 0xc1, 0xfa, 0xc1, 0xf6, 0xc1, 0xfa, - 0xc1, 0xf6, 0xc2, 0xfa, 0xc2, 0xf6, 0xc2, 0xfa, 0xc2, 0xf6, 0xc2, 0xfa, - 0xc2, 0xf6, 0xc3, 0xfa, 0xc3, 0xf6, 0xc2, 0xfa, 0xc3, 0xf6, 0xc3, 0xfa, - 0xc3, 0xf6, 0xc2, 0xfa, 0xc4, 0xf6, 0xc3, 0xfa, 0xc4, 0xf6, 0xc4, 0xfa, - 0xc4, 0xf7, 0xc5, 0xfa, 0xc5, 0xf7, 0xc5, 0xfa, 0xc5, 0xf7, 0xc5, 0xfa, - 0xc5, 0xf7, 0xc6, 0xfa, 0xc6, 0xf7, 0xc6, 0xfa, 0xc6, 0xf7, 0xc6, 0xfa, - 0xc6, 0xf7, 0xc6, 0xfa, 0xc6, 0xf7, 0xc6, 0xfa, 0xc7, 0xf7, 0xc6, 0xfa, - 0xc7, 0xf7, 0xc6, 0xfa, 0xc7, 0xf7, 0xc9, 0xfa, 0xc8, 0xf6, 0xca, 0xfa, - 0xc8, 0xf4, 0xc9, 0xfa, 0xc8, 0xf6, 0xca, 0xfa, 0xc9, 0xf4, 0xca, 0xfa, - 0xc9, 0xf4, 0xca, 0xfa, 0xc9, 0xf4, 0xca, 0xfa, 0xc9, 0xf4, 0xca, 0xfa, - 0xca, 0xf4, 0xca, 0xfa, 0xc9, 0xf4, 0xca, 0xfa, 0xca, 0xf4, 0xcb, 0xfa, - 0xc9, 0xf4, 0xcb, 0xfa, 0xca, 0xf4, 0xcb, 0xfa, 0xc9, 0xf4, 0xcc, 0xfb, - 0xcc, 0xf4, 0xcc, 0xfb, 0xcc, 0xf4, 0xcc, 0xfb, 0xcc, 0xf4, 0xcc, 0xfb, - 0xcc, 0xf4, 0xcd, 0xfb, 0xcc, 0xf4, 0xcd, 0xfb, 0xcc, 0xf4, 0xcd, 0xfb, - 0xcc, 0xf4, 0xce, 0xfb, 0xcc, 0xf4, 0xce, 0xfc, 0xce, 0xf4, 0xce, 0xfc, - 0xce, 0xf4, 0xce, 0xfc, 0xce, 0xf4, 0xcf, 0xfc, 0xcf, 0xf4, 0xcf, 0xfc, - 0xcf, 0xf4, 0xcf, 0xfc, 0xcf, 0xf4, 0xd0, 0xfc, 0xd0, 0xf4, 0xd0, 0xfc, - 0xcf, 0xf4, 0xd0, 0xfc, 0xd0, 0xf4, 0xd0, 0xfc, 0xcf, 0xf4, 0xd1, 0xfc, - 0xd0, 0xf4, 0xd1, 0xfc, 0xd1, 0xf4, 0xd1, 0xfc, 0xd1, 0xf4, 0xd2, 0xfc, - 0xd2, 0xf4, 0xd2, 0xfc, 0xd2, 0xf4, 0xd2, 0xfc, 0xd2, 0xf4, 0xd2, 0xfc, - 0xd2, 0xf4, 0xd3, 0xfc, 0xd3, 0xf4, 0xd3, 0xfc, 0xd2, 0xf4, 0xd3, 0xfc, - 0xd3, 0xf4, 0xd4, 0xfc, 0xd2, 0xf4, 0xd4, 0xfc, 0xd3, 0xf4, 0xd4, 0xfc, - 0xd2, 0xf4, 0xd4, 0xfc, 0xd3, 0xf4, 0xd5, 0xfd, 0xd5, 0xf4, 0xd5, 0xfd, - 0xd5, 0xf4, 0xd5, 0xfd, 0xd5, 0xf4, 0xd6, 0xfd, 0xd6, 0xf4, 0xd6, 0xfd, - 0xd6, 0xf4, 0xd6, 0xfd, 0xd6, 0xf4, 0xd6, 0xfd, 0xd6, 0xf4, 0xd7, 0xfd, - 0xd6, 0xf4, 0xd7, 0xfd, 0xd6, 0xf4, 0xd7, 0xfd, 0xd6, 0xf4, 0xd7, 0xfd, - 0xd6, 0xf4, 0xd8, 0xfd, 0xd8, 0xf4, 0xd8, 0xfd, 0xd8, 0xf4, 0xd8, 0xfd, - 0xd8, 0xf4, 0xd9, 0xfd, 0xd9, 0xf4, 0xd9, 0xfd, 0xd9, 0xf4, 0xd9, 0xfd, - 0xd9, 0xf4, 0xd9, 0xfd, 0xd9, 0xf4, 0xda, 0xfd, 0xd9, 0xf4, 0xda, 0xfd, - 0xd9, 0xf4, 0xda, 0xfd, 0xd9, 0xf4, 0xda, 0xfd, 0xd9, 0xf4, 0xdb, 0xfe, - 0xdb, 0xf4, 0xdb, 0xfe, 0xdb, 0xf4, 0xdb, 0xfe, 0xdb, 0xf4, 0xdb, 0xfe, - 0xdb, 0xf4, 0xdc, 0xfe, 0xdc, 0xf4, 0xdc, 0xfe, 0xdb, 0xf4, 0xdc, 0xfe, - 0xdc, 0xf4, 0xdd, 0xfe, 0xdb, 0xf4, 0xdd, 0xfe, 0xdc, 0xf4, 0xdd, 0xfe, - 0xdb, 0xf4, 0xdd, 0xfe, 0xdc, 0xf4, 0xde, 0xfe, 0xdb, 0xf4, 0xde, 0xfe, - 0xdc, 0xf4, 0xde, 0xfe, 0xde, 0xf4, 0xde, 0xfc, 0xe3, 0xf4, 0xdf, 0xfb, - 0xe3, 0xf4, 0xdf, 0xfa, 0xe3, 0xf4, 0xdf, 0xfb, 0xe3, 0xf4, 0xdf, 0xfa, - 0xe3, 0xf4, 0xe0, 0xfb, 0xe3, 0xf4, 0xe0, 0xfa, 0xe3, 0xf4, 0xe0, 0xfb, - 0xe3, 0xf4, 0xe1, 0xfa, 0xe3, 0xf4, 0xe1, 0xfb, 0xe3, 0xf4, 0xe1, 0xfa, - 0xe3, 0xf4, 0xe1, 0xfb, 0xe3, 0xf4, 0xe2, 0xfa, 0xe3, 0xf4, 0xe2, 0xfb, - 0xe3, 0xf4, 0xe2, 0xfa, 0xe3, 0xf4, 0xe2, 0xfa, 0xe3, 0xf4, 0xe3, 0xfa, - 0xe3, 0xf4, 0xe3, 0xfa, 0xe3, 0xf4, 0xe3, 0xfa, 0xe3, 0xf4, 0xe3, 0xfa, - 0xe3, 0xf4, 0xe3, 0xfa, 0xe4, 0xf4, 0xe3, 0xfa, 0xe4, 0xf4, 0xe5, 0xfa, - 0xe4, 0xf4, 0xe5, 0xfa, 0xe4, 0xf5, 0xe5, 0xfa, 0xe5, 0xf4, 0xe5, 0xfa, - 0xe5, 0xf4, 0xe5, 0xfa, 0xe5, 0xf4, 0xe5, 0xfa, 0xe5, 0xf4, 0xe6, 0xfa, - 0xe5, 0xf4, 0xe6, 0xfa, 0xe5, 0xf4, 0xe6, 0xfa, 0xe5, 0xf4, 0xe6, 0xfa, - 0xe5, 0xf4, 0xe7, 0xfa, 0xe5, 0xf4, 0xe7, 0xfa, 0xe5, 0xf4, 0xe7, 0xf9, - 0xe5, 0xf4, 0xe7, 0xfa, 0xe5, 0xf4, 0xe8, 0xf9, 0xe5, 0xf4, 0xe8, 0xfa, - 0xe5, 0xf4, 0xe8, 0xf9, 0xe5, 0xf4, 0xe8, 0xfa, 0xe5, 0xf4, 0xe9, 0xf9, - 0xe5, 0xf4, 0xe9, 0xfa, 0xe5, 0xf4, 0xe9, 0xf9, 0xe5, 0xf4, 0xe9, 0xfa, - 0xe5, 0xf4, 0xea, 0xf9, 0xe5, 0xf4, 0xea, 0xfa, 0xe5, 0xf4, 0xea, 0xfb, - 0xee, 0xf4, 0xea, 0xfa, 0xef, 0xf4, 0xeb, 0xfb, 0xee, 0xf4, 0xeb, 0xfa, - 0xef, 0xf4, 0xeb, 0xfb, 0xee, 0xf4, 0xeb, 0xfa, 0xef, 0xf4, 0xec, 0xfb, - 0xee, 0xf4, 0xec, 0xfa, 0xef, 0xf4, 0xec, 0xfb, 0xee, 0xf4, 0xec, 0xfa, - 0xef, 0xf4, 0xec, 0xfb, 0xee, 0xf4, 0xed, 0xfa, 0xef, 0xf4, 0xed, 0xfa, - 0xef, 0xf4, 0xed, 0xfa, 0xef, 0xf4, 0xed, 0xfa, 0xef, 0xf4, 0xee, 0xfa, - 0xef, 0xf4, 0xee, 0xfa, 0xef, 0xf4, 0xee, 0xfa, 0xef, 0xf4, 0xee, 0xfa, - 0xef, 0xf4, 0xef, 0xfa, 0xef, 0xf3, 0xee, 0xfa, 0xef, 0xf4, 0xef, 0xfa, - 0xef, 0xf4, 0xef, 0xfa, 0xef, 0xf4, 0xf0, 0xfa, 0xef, 0xf4, 0xf0, 0xfa, - 0xef, 0xf4, 0xf0, 0xfa, 0xef, 0xf4, 0xf0, 0xfa, 0xef, 0xf4, 0xf1, 0xfa, - 0xef, 0xf4, 0xf1, 0xfa, 0xef, 0xf4, 0xf1, 0xfa, 0xef, 0xf4, 0xf1, 0xfa, - 0xef, 0xf4, 0xf2, 0xfa, 0xef, 0xf4, 0xf2, 0xfa, 0xef, 0xf4, 0xf2, 0xfa, - 0xef, 0xf4, 0xf2, 0xfa, 0xef, 0xf4, 0xf2, 0xfa, 0xef, 0xf4, 0xf3, 0xfa, - 0xef, 0xf4, 0xf3, 0xfa, 0xef, 0xf4, 0xf3, 0xf8, 0xef, 0xf4, 0xf3, 0xfa, - 0xef, 0xf4, 0xf4, 0xf8, 0xef, 0xf4, 0xf4, 0xfa, 0xef, 0xf4, 0xf4, 0xf8, - 0xef, 0xf4, 0xf4, 0xfa, 0xef, 0xf4, 0xf5, 0xf8, 0xef, 0xf4, 0xf5, 0xfa, - 0xef, 0xf4, 0xf5, 0xf8, 0xef, 0xf4, 0xf5, 0xfa, 0xef, 0xf4, 0xf5, 0xf8, - 0xef, 0xf4, 0xf6, 0xfa, 0xef, 0xf4, 0xf6, 0xf8, 0xef, 0xf4, 0xf6, 0xfa, - 0xef, 0xf4, 0xf6, 0xf8, 0xef, 0xf4, 0xf7, 0xfa, 0xef, 0xf4, 0xf7, 0xf8, - 0xef, 0xf4, 0xf7, 0xfa, 0xef, 0xf4, 0xf7, 0xf8, 0xef, 0xf4, 0xf8, 0xfa, - 0xef, 0xf4, 0xf8, 0xf8, 0xef, 0xf4, 0xf8, 0xfa, 0xef, 0xf4, 0xf8, 0xf8, - 0xef, 0xf4, 0xf8, 0xfa, 0xef, 0xf4, 0xf9, 0xf8, 0xef, 0xf4, 0xf9, 0xfa, - 0xef, 0xf4, 0xf9, 0xf8, 0xef, 0xf4, 0xf9, 0xfa, 0xef, 0xf4, 0xfa, 0xf8, - 0xef, 0xf4, 0xfa, 0xfa, 0xef, 0xf4, 0xfa, 0xf8, 0xef, 0xf4, 0xfa, 0xfa, - 0xef, 0xf4, 0xfa, 0xf8, 0xef, 0xf4, 0xfb, 0xfa, 0xef, 0xf4, 0xfb, 0xf8, - 0xef, 0xf4, 0xfb, 0xfa, 0xef, 0xf4, 0xfb, 0xf8, 0xef, 0xf4, 0xfc, 0xfa, - 0xef, 0xf4, 0xfc, 0xf8, 0xef, 0xf4, 0xfc, 0xfa, 0xef, 0xf4, 0xfc, 0xf8, - 0xef, 0xf4, 0xfc, 0xfa, 0xef, 0xf4, 0xfd, 0xf8, 0xef, 0xf4, 0xfd, 0xfa, - 0xef, 0xf4, 0xfd, 0xf8, 0xef, 0xf4, 0xfd, 0xfa, 0xef, 0xf4, 0xfe, 0xf8, - 0xef, 0xf4, 0xfe, 0xfa, 0xef, 0xf4, 0xfe, 0xf8, 0xef, 0xf4, 0xfe, 0xf6, - 0xf0, 0xf4, 0xfe, 0xf8, 0xef, 0xf4, 0xff, 0xf8, 0xef, 0xf4, 0xff, 0xf8, - 0xef, 0xf4, 0x03, 0xf4, 0x83, 0xf4, 0x0a, 0xf4, 0x83, 0xf4, 0x0f, 0xf4, - 0x83, 0xf4, 0x14, 0xf4, 0x83, 0xf4, 0x17, 0xf4, 0x83, 0xf4, 0x1b, 0xf4, - 0x83, 0xf4, 0x1e, 0xf4, 0x83, 0xf4, 0x20, 0xf4, 0x83, 0xf4, 0x23, 0xf4, - 0x83, 0xf4, 0x25, 0xf4, 0x83, 0xf4, 0x27, 0xf4, 0x83, 0xf4, 0x29, 0xf4, - 0x83, 0xf4, 0x2b, 0xf4, 0x83, 0xf4, 0x2d, 0xf4, 0x83, 0xf4, 0x2f, 0xf4, - 0x83, 0xf4, 0x31, 0xf4, 0x83, 0xf4, 0x32, 0xf4, 0x83, 0xf4, 0x34, 0xf4, - 0x83, 0xf4, 0x35, 0xf4, 0x83, 0xf4, 0x37, 0xf4, 0x83, 0xf4, 0x38, 0xf4, - 0x83, 0xf4, 0x3a, 0xf4, 0x83, 0xf4, 0x3b, 0xf4, 0x83, 0xf4, 0x3c, 0xf4, - 0x83, 0xf4, 0x3e, 0xf4, 0x83, 0xf4, 0x3f, 0xf4, 0x83, 0xf4, 0x40, 0xf4, - 0x83, 0xf4, 0x42, 0xf4, 0x83, 0xf4, 0x43, 0xf4, 0x83, 0xf4, 0x44, 0xf4, - 0x83, 0xf4, 0x45, 0xf4, 0x83, 0xf4, 0x46, 0xf4, 0x83, 0xf4, 0x47, 0xf4, - 0x83, 0xf4, 0x48, 0xf4, 0x83, 0xf4, 0x49, 0xf4, 0x83, 0xf4, 0x4a, 0xf4, - 0x83, 0xf4, 0x4b, 0xf4, 0x83, 0xf4, 0x4c, 0xf4, 0x83, 0xf4, 0x4d, 0xf4, - 0x83, 0xf4, 0x4e, 0xf4, 0x83, 0xf4, 0x4f, 0xf4, 0x83, 0xf4, 0x50, 0xf4, - 0x83, 0xf4, 0x51, 0xf4, 0x83, 0xf4, 0x52, 0xf4, 0x83, 0xf4, 0x53, 0xf4, - 0x83, 0xf4, 0x54, 0xf4, 0x83, 0xf4, 0x55, 0xf4, 0x83, 0xf4, 0x56, 0xf4, - 0x83, 0xf4, 0x57, 0xf4, 0x83, 0xf4, 0x58, 0xf4, 0x83, 0xf4, 0x58, 0xf4, - 0x83, 0xf4, 0x59, 0xf4, 0x83, 0xf4, 0x5a, 0xf4, 0x83, 0xf4, 0x5b, 0xf4, - 0x83, 0xf4, 0x5c, 0xf4, 0x83, 0xf4, 0x5d, 0xf4, 0x83, 0xf4, 0x5d, 0xf4, - 0x83, 0xf4, 0x5e, 0xf4, 0x83, 0xf4, 0x5f, 0xf4, 0x83, 0xf4, 0x60, 0xf4, - 0x83, 0xf4, 0x60, 0xf4, 0x83, 0xf4, 0x61, 0xf4, 0x83, 0xf4, 0x62, 0xf4, - 0x83, 0xf4, 0x63, 0xf4, 0x83, 0xf4, 0x63, 0xf4, 0x83, 0xf4, 0x64, 0xf4, - 0x83, 0xf4, 0x65, 0xf4, 0x83, 0xf4, 0x66, 0xf4, 0x83, 0xf4, 0x66, 0xf4, - 0x83, 0xf4, 0x67, 0xf4, 0x83, 0xf4, 0x68, 0xf4, 0x83, 0xf4, 0x68, 0xf4, - 0x83, 0xf4, 0x69, 0xf4, 0x83, 0xf4, 0x6a, 0xf4, 0x83, 0xf4, 0x6a, 0xf4, - 0x83, 0xf4, 0x6b, 0xf4, 0x83, 0xf4, 0x6c, 0xf4, 0x83, 0xf4, 0x6c, 0xf4, - 0x83, 0xf4, 0x6d, 0xf4, 0x83, 0xf4, 0x6e, 0xf4, 0x83, 0xf4, 0x6e, 0xf4, - 0x83, 0xf4, 0x6f, 0xf4, 0x83, 0xf4, 0x70, 0xf4, 0x83, 0xf4, 0x70, 0xf4, - 0x83, 0xf4, 0x71, 0xf4, 0x83, 0xf4, 0x72, 0xf4, 0x83, 0xf4, 0x72, 0xf4, - 0x83, 0xf4, 0x73, 0xf4, 0x83, 0xf4, 0x73, 0xf4, 0x83, 0xf4, 0x74, 0xf4, - 0x83, 0xf4, 0x75, 0xf4, 0x83, 0xf4, 0x75, 0xf4, 0x83, 0xf4, 0x76, 0xf4, - 0x83, 0xf4, 0x76, 0xf4, 0x83, 0xf4, 0x77, 0xf4, 0x83, 0xf4, 0x78, 0xf4, - 0x83, 0xf4, 0x78, 0xf4, 0x83, 0xf4, 0x79, 0xf4, 0x83, 0xf4, 0x79, 0xf4, - 0x83, 0xf4, 0x7a, 0xf4, 0x83, 0xf4, 0x7a, 0xf4, 0x83, 0xf4, 0x7b, 0xf4, - 0x83, 0xf4, 0x7c, 0xf4, 0x83, 0xf4, 0x7c, 0xf4, 0x83, 0xf4, 0x7d, 0xf4, - 0x83, 0xf4, 0x7d, 0xf4, 0x83, 0xf4, 0x7e, 0xf4, 0x85, 0xf4, 0x7e, 0xf4, - 0x83, 0xf4, 0x7f, 0xf4, 0x85, 0xf4, 0x7f, 0xf4, 0x86, 0xf4, 0x80, 0xf4, - 0x85, 0xf4, 0x81, 0xf4, 0x86, 0xf4, 0x81, 0xf4, 0x85, 0xf4, 0x82, 0xf4, - 0x86, 0xf4, 0x82, 0xf4, 0x85, 0xf4, 0x83, 0xf4, 0x86, 0xf4, 0x83, 0xf4, - 0x85, 0xf4, 0x84, 0xf4, 0x86, 0xf4, 0x84, 0xf4, 0x85, 0xf4, 0x85, 0xf4, - 0x86, 0xf4, 0x85, 0xf4, 0x85, 0xf4, 0x86, 0xf4, 0x86, 0xf4, 0x86, 0xf4, - 0x86, 0xf4, 0x87, 0xf5, 0x8b, 0xf4, 0x87, 0xf5, 0x8b, 0xf4, 0x88, 0xf5, - 0x8b, 0xf4, 0x88, 0xf5, 0x8b, 0xf4, 0x89, 0xf5, 0x8b, 0xf4, 0x89, 0xf5, - 0x8b, 0xf4, 0x8a, 0xf5, 0x8b, 0xf4, 0x8a, 0xf5, 0x8b, 0xf4, 0x8b, 0xf5, - 0x8b, 0xf4, 0x8b, 0xf5, 0x8b, 0xf4, 0x8c, 0xf5, 0x8c, 0xf4, 0x8c, 0xf5, - 0x90, 0xf4, 0x8d, 0xf5, 0x90, 0xf4, 0x8d, 0xf5, 0x90, 0xf4, 0x8e, 0xf5, - 0x90, 0xf4, 0x8e, 0xf5, 0x90, 0xf4, 0x8e, 0xf5, 0x90, 0xf4, 0x8f, 0xf5, - 0x90, 0xf4, 0x8f, 0xf5, 0x90, 0xf4, 0x90, 0xf5, 0x90, 0xf4, 0x90, 0xf5, - 0x90, 0xf4, 0x91, 0xf5, 0x91, 0xf4, 0x91, 0xf6, 0x95, 0xf4, 0x92, 0xf6, - 0x95, 0xf4, 0x92, 0xf6, 0x95, 0xf4, 0x93, 0xf6, 0x95, 0xf4, 0x93, 0xf6, - 0x95, 0xf4, 0x94, 0xf6, 0x95, 0xf4, 0x94, 0xf6, 0x95, 0xf4, 0x94, 0xf6, - 0x95, 0xf4, 0x95, 0xf6, 0x95, 0xf4, 0x95, 0xf6, 0x95, 0xf4, 0x96, 0xf6, - 0x96, 0xf4, 0x96, 0xf6, 0x9a, 0xf4, 0x97, 0xf6, 0x9a, 0xf4, 0x97, 0xf6, - 0x9a, 0xf4, 0x98, 0xf6, 0x9a, 0xf4, 0x98, 0xf6, 0x9a, 0xf4, 0x98, 0xf6, - 0x9a, 0xf4, 0x99, 0xf6, 0x9a, 0xf4, 0x99, 0xf6, 0x9a, 0xf4, 0x9a, 0xf6, - 0x9a, 0xf4, 0x9a, 0xf6, 0x9a, 0xf4, 0x9a, 0xf6, 0x9a, 0xf4, 0x9b, 0xf7, - 0x9e, 0xf4, 0x9b, 0xf7, 0x9f, 0xf4, 0x9c, 0xf7, 0x9e, 0xf4, 0x9c, 0xf7, - 0x9f, 0xf4, 0x9d, 0xf7, 0x9e, 0xf4, 0x9d, 0xf7, 0x9f, 0xf4, 0x9d, 0xf7, - 0x9e, 0xf4, 0x9e, 0xf7, 0x9f, 0xf4, 0x9e, 0xf7, 0x9e, 0xf4, 0x9f, 0xf7, - 0x9f, 0xf4, 0x9f, 0xf7, 0x9f, 0xf4, 0x9f, 0xf7, 0x9f, 0xf4, 0xa0, 0xf7, - 0xa0, 0xf4, 0xa0, 0xf7, 0xa3, 0xf4, 0xa1, 0xf7, 0xa3, 0xf4, 0xa1, 0xf7, - 0xa3, 0xf4, 0xa1, 0xf7, 0xa3, 0xf4, 0xa2, 0xf7, 0xa3, 0xf4, 0xa2, 0xf7, - 0xa3, 0xf4, 0xa3, 0xf7, 0xa3, 0xf4, 0xa3, 0xf7, 0xa3, 0xf4, 0xa3, 0xf7, - 0xa3, 0xf4, 0xa4, 0xf7, 0xa4, 0xf4, 0xa4, 0xf7, 0xa4, 0xf4, 0xa5, 0xf8, - 0xa7, 0xf4, 0xa5, 0xf8, 0xa7, 0xf4, 0xa5, 0xf8, 0xa7, 0xf4, 0xa6, 0xf8, - 0xa7, 0xf4, 0xa6, 0xf8, 0xa7, 0xf4, 0xa6, 0xf8, 0xa7, 0xf4, 0xa7, 0xf8, - 0xa7, 0xf4, 0xa7, 0xf8, 0xa9, 0xf4, 0xa8, 0xf8, 0xa9, 0xf4, 0xa8, 0xf8, - 0xa9, 0xf4, 0xa8, 0xf8, 0xa9, 0xf4, 0xa9, 0xf8, 0xa9, 0xf4, 0xa9, 0xf8, - 0xa9, 0xf4, 0xaa, 0xf8, 0xab, 0xf4, 0xaa, 0xf8, 0xab, 0xf4, 0xaa, 0xf8, - 0xab, 0xf4, 0xab, 0xf8, 0xab, 0xf4, 0xab, 0xf8, 0xab, 0xf4, 0xab, 0xf8, - 0xab, 0xf4, 0xac, 0xf8, 0xac, 0xf4, 0xac, 0xf8, 0xac, 0xf4, 0xac, 0xf8, - 0xac, 0xf4, 0xad, 0xf8, 0xad, 0xf4, 0xad, 0xf8, 0xad, 0xf4, 0xae, 0xf8, - 0xaf, 0xf4, 0xae, 0xf8, 0xaf, 0xf4, 0xae, 0xf8, 0xaf, 0xf4, 0xaf, 0xf8, - 0xaf, 0xf4, 0xaf, 0xf8, 0xaf, 0xf4, 0xaf, 0xf8, 0xaf, 0xf4, 0xb0, 0xf8, - 0xb0, 0xf4, 0xb0, 0xf8, 0xb0, 0xf4, 0xb0, 0xf8, 0xb0, 0xf4, 0xb1, 0xf8, - 0xb1, 0xf4, 0xb1, 0xf8, 0xb1, 0xf4, 0xb2, 0xf9, 0xb3, 0xf4, 0xb2, 0xf9, - 0xb3, 0xf4, 0xb2, 0xf9, 0xb3, 0xf4, 0xb3, 0xf9, 0xb3, 0xf4, 0xb3, 0xf9, - 0xb3, 0xf4, 0xb3, 0xf9, 0xb3, 0xf4, 0xb4, 0xf9, 0xb4, 0xf4, 0xb4, 0xf9, - 0xb4, 0xf4, 0xb4, 0xf9, 0xb4, 0xf4, 0xb5, 0xf9, 0xb5, 0xf4, 0xb5, 0xf9, - 0xb5, 0xf4, 0xb5, 0xf9, 0xb7, 0xf4, 0xb6, 0xf9, 0xb7, 0xf4, 0xb6, 0xf9, - 0xb7, 0xf4, 0xb6, 0xf9, 0xb7, 0xf4, 0xb7, 0xf9, 0xb7, 0xf4, 0xb7, 0xf9, - 0xb7, 0xf4, 0xb7, 0xf9, 0xb7, 0xf4, 0xb8, 0xf9, 0xb8, 0xf4, 0xb8, 0xf9, - 0xb8, 0xf4, 0xb8, 0xf9, 0xb8, 0xf4, 0xb9, 0xf9, 0xb9, 0xf4, 0xb9, 0xf9, - 0xb9, 0xf4, 0xb9, 0xf9, 0xb9, 0xf4, 0xba, 0xfa, 0xba, 0xf4, 0xba, 0xfa, - 0xbb, 0xf4, 0xba, 0xfa, 0xba, 0xf4, 0xbb, 0xfa, 0xbb, 0xf4, 0xbb, 0xfa, - 0xbb, 0xf4, 0xbb, 0xfa, 0xbb, 0xf4, 0xbc, 0xfa, 0xbc, 0xf4, 0xbc, 0xfa, - 0xbc, 0xf4, 0xbc, 0xfa, 0xbc, 0xf4, 0xbd, 0xfa, 0xbd, 0xf4, 0xbd, 0xfa, - 0xbd, 0xf4, 0xbd, 0xfa, 0xbd, 0xf4, 0xbe, 0xfa, 0xbe, 0xf4, 0xbe, 0xfa, - 0xbe, 0xf5, 0xbe, 0xfa, 0xbe, 0xf5, 0xbf, 0xfa, 0xbf, 0xf5, 0xbf, 0xfa, - 0xbf, 0xf5, 0xbf, 0xfa, 0xbf, 0xf5, 0xc0, 0xfa, 0xc0, 0xf5, 0xc0, 0xfa, - 0xc0, 0xf5, 0xc0, 0xfa, 0xc0, 0xf5, 0xc1, 0xfa, 0xc1, 0xf5, 0xc1, 0xfa, - 0xc1, 0xf5, 0xc1, 0xfa, 0xc1, 0xf5, 0xc1, 0xfa, 0xc1, 0xf5, 0xc1, 0xfa, - 0xc2, 0xf5, 0xc2, 0xfa, 0xc2, 0xf6, 0xc2, 0xfa, 0xc2, 0xf6, 0xc3, 0xfa, - 0xc3, 0xf6, 0xc3, 0xfa, 0xc3, 0xf6, 0xc3, 0xfa, 0xc3, 0xf6, 0xc4, 0xfa, - 0xc4, 0xf6, 0xc4, 0xfa, 0xc4, 0xf6, 0xc4, 0xfa, 0xc4, 0xf6, 0xc5, 0xfa, - 0xc5, 0xf6, 0xc4, 0xfa, 0xc5, 0xf6, 0xc5, 0xfa, 0xc5, 0xf6, 0xc4, 0xfa, - 0xc6, 0xf6, 0xc5, 0xfa, 0xc6, 0xf6, 0xc6, 0xfa, 0xc6, 0xf7, 0xc6, 0xfa, - 0xc6, 0xf7, 0xc7, 0xfa, 0xc7, 0xf7, 0xc7, 0xfa, 0xc7, 0xf7, 0xc7, 0xfa, - 0xc7, 0xf7, 0xc8, 0xfa, 0xc8, 0xf7, 0xc8, 0xfa, 0xc8, 0xf7, 0xca, 0xfa, - 0xc8, 0xf4, 0xca, 0xfa, 0xc9, 0xf4, 0xca, 0xfa, 0xc9, 0xf4, 0xca, 0xfa, - 0xc9, 0xf4, 0xca, 0xfa, 0xc9, 0xf4, 0xca, 0xfa, 0xc9, 0xf4, 0xca, 0xfa, - 0xc9, 0xf4, 0xca, 0xfa, 0xc9, 0xf4, 0xcb, 0xfa, 0xc9, 0xf4, 0xcb, 0xfb, - 0xcb, 0xf4, 0xcb, 0xfb, 0xcb, 0xf4, 0xcc, 0xfb, 0xcb, 0xf4, 0xcc, 0xfb, - 0xcb, 0xf4, 0xcc, 0xfb, 0xcb, 0xf4, 0xcc, 0xfc, 0xcc, 0xf4, 0xcd, 0xfc, - 0xcd, 0xf4, 0xcd, 0xfc, 0xcd, 0xf4, 0xcd, 0xfc, 0xcd, 0xf4, 0xce, 0xfc, - 0xce, 0xf4, 0xce, 0xfc, 0xce, 0xf4, 0xce, 0xfc, 0xce, 0xf4, 0xce, 0xfc, - 0xce, 0xf4, 0xcf, 0xfc, 0xce, 0xf4, 0xcf, 0xfc, 0xce, 0xf4, 0xcf, 0xfc, - 0xce, 0xf4, 0xd0, 0xfc, 0xd0, 0xf4, 0xd0, 0xfc, 0xd0, 0xf4, 0xd0, 0xfc, - 0xd0, 0xf4, 0xd0, 0xfc, 0xd0, 0xf4, 0xd1, 0xfc, 0xd1, 0xf4, 0xd1, 0xfc, - 0xd1, 0xf4, 0xd1, 0xfc, 0xd1, 0xf4, 0xd2, 0xfc, 0xd1, 0xf4, 0xd2, 0xfc, - 0xd1, 0xf4, 0xd2, 0xfc, 0xd1, 0xf4, 0xd2, 0xfc, 0xd2, 0xf4, 0xd3, 0xfc, - 0xd3, 0xf4, 0xd3, 0xfc, 0xd3, 0xf4, 0xd3, 0xfc, 0xd3, 0xf4, 0xd4, 0xfc, - 0xd4, 0xf4, 0xd4, 0xfc, 0xd4, 0xf4, 0xd4, 0xfc, 0xd4, 0xf4, 0xd4, 0xfc, - 0xd4, 0xf4, 0xd5, 0xfc, 0xd4, 0xf4, 0xd5, 0xfc, 0xd4, 0xf4, 0xd5, 0xfc, - 0xd4, 0xf4, 0xd6, 0xfc, 0xd4, 0xf4, 0xd6, 0xfc, 0xd4, 0xf4, 0xd6, 0xfd, - 0xd6, 0xf4, 0xd6, 0xfd, 0xd6, 0xf4, 0xd7, 0xfd, 0xd7, 0xf4, 0xd7, 0xfd, - 0xd7, 0xf4, 0xd7, 0xfd, 0xd7, 0xf4, 0xd7, 0xfd, 0xd7, 0xf4, 0xd8, 0xfd, - 0xd7, 0xf4, 0xd8, 0xfd, 0xd7, 0xf4, 0xd8, 0xfd, 0xd7, 0xf4, 0xd9, 0xfd, - 0xd7, 0xf4, 0xd9, 0xfd, 0xd7, 0xf4, 0xd9, 0xfd, 0xd9, 0xf4, 0xd9, 0xfd, - 0xd9, 0xf4, 0xda, 0xfd, 0xda, 0xf4, 0xda, 0xfd, 0xda, 0xf4, 0xda, 0xfd, - 0xda, 0xf4, 0xda, 0xfd, 0xda, 0xf4, 0xdb, 0xfd, 0xda, 0xf4, 0xdb, 0xfd, - 0xda, 0xf4, 0xdb, 0xfd, 0xda, 0xf4, 0xdb, 0xfd, 0xda, 0xf4, 0xdc, 0xfd, - 0xda, 0xf4, 0xdc, 0xfe, 0xdc, 0xf4, 0xdc, 0xfe, 0xdc, 0xf4, 0xdd, 0xfe, - 0xdd, 0xf4, 0xdd, 0xfe, 0xdd, 0xf4, 0xdd, 0xfe, 0xdd, 0xf4, 0xdd, 0xfe, - 0xdd, 0xf4, 0xde, 0xfe, 0xdd, 0xf4, 0xde, 0xfe, 0xdd, 0xf4, 0xde, 0xfe, - 0xdd, 0xf4, 0xde, 0xfe, 0xdd, 0xf4, 0xdf, 0xfb, 0xe3, 0xf4, 0xdf, 0xfa, - 0xe3, 0xf4, 0xdf, 0xfb, 0xe3, 0xf4, 0xdf, 0xfa, 0xe3, 0xf4, 0xe0, 0xfb, - 0xe3, 0xf4, 0xe0, 0xfa, 0xe3, 0xf4, 0xe0, 0xfb, 0xe3, 0xf4, 0xe1, 0xfa, - 0xe3, 0xf4, 0xe1, 0xfb, 0xe3, 0xf4, 0xe1, 0xfa, 0xe3, 0xf4, 0xe1, 0xfb, - 0xe3, 0xf4, 0xe2, 0xfa, 0xe3, 0xf4, 0xe2, 0xfb, 0xe3, 0xf4, 0xe2, 0xfa, - 0xe3, 0xf4, 0xe2, 0xfb, 0xe3, 0xf4, 0xe3, 0xfa, 0xe3, 0xf4, 0xe3, 0xfb, - 0xe3, 0xf4, 0xe3, 0xfa, 0xe3, 0xf4, 0xe3, 0xfa, 0xe3, 0xf4, 0xe3, 0xfa, - 0xe4, 0xf4, 0xe3, 0xfa, 0xe4, 0xf4, 0xe5, 0xfa, 0xe4, 0xf4, 0xe5, 0xfa, - 0xe4, 0xf5, 0xe5, 0xfa, 0xe5, 0xf4, 0xe5, 0xfa, 0xe5, 0xf4, 0xe5, 0xfa, - 0xe5, 0xf4, 0xe5, 0xfa, 0xe5, 0xf4, 0xe6, 0xfa, 0xe5, 0xf4, 0xe6, 0xfa, - 0xe5, 0xf4, 0xe6, 0xfa, 0xe5, 0xf4, 0xe6, 0xfa, 0xe5, 0xf4, 0xe7, 0xfa, - 0xe5, 0xf4, 0xe7, 0xfa, 0xe5, 0xf4, 0xe7, 0xf9, 0xe5, 0xf4, 0xe7, 0xfa, - 0xe5, 0xf4, 0xe8, 0xf9, 0xe5, 0xf4, 0xe8, 0xfa, 0xe5, 0xf4, 0xe8, 0xf9, - 0xe5, 0xf4, 0xe8, 0xfa, 0xe5, 0xf4, 0xe9, 0xf9, 0xe5, 0xf4, 0xe9, 0xfa, - 0xe5, 0xf4, 0xe9, 0xf9, 0xe5, 0xf4, 0xe9, 0xfa, 0xe5, 0xf4, 0xea, 0xf9, - 0xe5, 0xf4, 0xea, 0xfa, 0xe5, 0xf4, 0xea, 0xfb, 0xee, 0xf4, 0xea, 0xfa, - 0xef, 0xf4, 0xeb, 0xfb, 0xee, 0xf4, 0xeb, 0xfa, 0xef, 0xf4, 0xeb, 0xfb, - 0xee, 0xf4, 0xeb, 0xfa, 0xef, 0xf4, 0xec, 0xfb, 0xee, 0xf4, 0xec, 0xfa, - 0xef, 0xf4, 0xec, 0xfb, 0xee, 0xf4, 0xec, 0xfa, 0xef, 0xf4, 0xec, 0xfb, - 0xee, 0xf4, 0xed, 0xfa, 0xef, 0xf4, 0xed, 0xfb, 0xee, 0xf4, 0xed, 0xfa, - 0xef, 0xf4, 0xed, 0xfb, 0xee, 0xf4, 0xee, 0xfa, 0xef, 0xf4, 0xee, 0xfa, - 0xef, 0xf4, 0xee, 0xfa, 0xef, 0xf4, 0xee, 0xfa, 0xef, 0xf4, 0xef, 0xfa, - 0xef, 0xf3, 0xee, 0xfa, 0xef, 0xf4, 0xef, 0xfa, 0xef, 0xf4, 0xef, 0xfa, - 0xef, 0xf4, 0xf0, 0xfa, 0xef, 0xf4, 0xf0, 0xfa, 0xef, 0xf4, 0xf0, 0xf9, - 0xef, 0xf4, 0xf0, 0xfa, 0xef, 0xf4, 0xf1, 0xf9, 0xef, 0xf4, 0xf1, 0xfa, - 0xef, 0xf4, 0xf1, 0xf9, 0xef, 0xf4, 0xf1, 0xfa, 0xef, 0xf4, 0xf2, 0xf9, - 0xef, 0xf4, 0xf2, 0xfa, 0xef, 0xf4, 0xf2, 0xf9, 0xef, 0xf4, 0xf2, 0xfa, - 0xef, 0xf4, 0xf2, 0xf9, 0xef, 0xf4, 0xf3, 0xfa, 0xef, 0xf4, 0xf3, 0xf9, - 0xef, 0xf4, 0xf3, 0xfa, 0xef, 0xf4, 0xf3, 0xf9, 0xef, 0xf4, 0xf4, 0xfa, - 0xef, 0xf4, 0xf4, 0xf9, 0xef, 0xf4, 0xf4, 0xfa, 0xef, 0xf4, 0xf4, 0xf9, - 0xef, 0xf4, 0xf5, 0xfa, 0xef, 0xf4, 0xf5, 0xf9, 0xef, 0xf4, 0xf5, 0xf8, - 0xef, 0xf4, 0xf5, 0xf9, 0xef, 0xf4, 0xf5, 0xf8, 0xef, 0xf4, 0xf6, 0xf9, - 0xef, 0xf4, 0xf6, 0xf8, 0xef, 0xf4, 0xf6, 0xf9, 0xef, 0xf4, 0xf6, 0xf8, - 0xef, 0xf4, 0xf7, 0xf9, 0xef, 0xf4, 0xf7, 0xf8, 0xef, 0xf4, 0xf7, 0xf9, - 0xef, 0xf4, 0xf7, 0xf8, 0xef, 0xf4, 0xf8, 0xf9, 0xef, 0xf4, 0xf8, 0xf8, - 0xef, 0xf4, 0xf8, 0xf9, 0xef, 0xf4, 0xf8, 0xf8, 0xef, 0xf4, 0xf8, 0xf9, - 0xef, 0xf4, 0xf9, 0xf8, 0xef, 0xf4, 0xf9, 0xf9, 0xef, 0xf4, 0xf9, 0xf8, - 0xef, 0xf4, 0xf9, 0xf9, 0xef, 0xf4, 0xfa, 0xf8, 0xef, 0xf4, 0xfa, 0xf9, - 0xef, 0xf4, 0xfa, 0xf8, 0xef, 0xf4, 0xfa, 0xf9, 0xef, 0xf4, 0xfa, 0xf8, - 0xef, 0xf4, 0xfb, 0xf9, 0xef, 0xf4, 0xfb, 0xf8, 0xef, 0xf4, 0xfb, 0xf9, - 0xef, 0xf4, 0xfb, 0xf8, 0xef, 0xf4, 0xfc, 0xf9, 0xef, 0xf4, 0xfc, 0xf8, - 0xef, 0xf4, 0xfc, 0xf9, 0xef, 0xf4, 0xfc, 0xf8, 0xef, 0xf4, 0xfc, 0xf9, - 0xef, 0xf4, 0xfd, 0xf8, 0xef, 0xf4, 0xfd, 0xf9, 0xef, 0xf4, 0xfd, 0xf8, - 0xef, 0xf4, 0xfd, 0xf7, 0xf0, 0xf4, 0xfe, 0xf8, 0xef, 0xf4, 0xfe, 0xf7, - 0xf0, 0xf4, 0xfe, 0xf8, 0xef, 0xf4, 0xfe, 0xf7, 0xf0, 0xf4, 0xfe, 0xf8, - 0xef, 0xf4, 0xff, 0xf8, 0xef, 0xf4, 0xff, 0xf8, 0xef, 0xf4, 0x03, 0xf4, - 0x83, 0xf5, 0x0a, 0xf4, 0x83, 0xf5, 0x0f, 0xf4, 0x83, 0xf5, 0x14, 0xf4, - 0x83, 0xf5, 0x17, 0xf4, 0x83, 0xf5, 0x1b, 0xf4, 0x83, 0xf5, 0x1e, 0xf4, - 0x83, 0xf5, 0x20, 0xf4, 0x83, 0xf5, 0x23, 0xf4, 0x83, 0xf5, 0x25, 0xf4, - 0x83, 0xf5, 0x27, 0xf4, 0x83, 0xf5, 0x29, 0xf4, 0x83, 0xf5, 0x2b, 0xf4, - 0x83, 0xf5, 0x2d, 0xf4, 0x83, 0xf5, 0x2f, 0xf4, 0x83, 0xf5, 0x31, 0xf4, - 0x83, 0xf5, 0x32, 0xf4, 0x83, 0xf5, 0x34, 0xf4, 0x83, 0xf5, 0x35, 0xf4, - 0x83, 0xf5, 0x37, 0xf4, 0x83, 0xf5, 0x38, 0xf4, 0x83, 0xf5, 0x3a, 0xf4, - 0x83, 0xf5, 0x3b, 0xf4, 0x83, 0xf5, 0x3c, 0xf4, 0x83, 0xf5, 0x3e, 0xf4, - 0x83, 0xf5, 0x3f, 0xf4, 0x83, 0xf5, 0x40, 0xf4, 0x83, 0xf5, 0x42, 0xf4, - 0x83, 0xf5, 0x43, 0xf4, 0x83, 0xf5, 0x44, 0xf4, 0x83, 0xf5, 0x45, 0xf4, - 0x83, 0xf5, 0x46, 0xf4, 0x83, 0xf5, 0x47, 0xf4, 0x83, 0xf5, 0x48, 0xf4, - 0x83, 0xf5, 0x49, 0xf4, 0x83, 0xf5, 0x4a, 0xf4, 0x83, 0xf5, 0x4b, 0xf4, - 0x83, 0xf5, 0x4c, 0xf4, 0x83, 0xf5, 0x4d, 0xf4, 0x83, 0xf5, 0x4e, 0xf4, - 0x83, 0xf5, 0x4f, 0xf4, 0x83, 0xf5, 0x50, 0xf4, 0x83, 0xf5, 0x51, 0xf4, - 0x83, 0xf5, 0x52, 0xf4, 0x83, 0xf5, 0x53, 0xf4, 0x83, 0xf5, 0x54, 0xf4, - 0x83, 0xf5, 0x55, 0xf4, 0x83, 0xf5, 0x56, 0xf4, 0x83, 0xf5, 0x57, 0xf4, - 0x83, 0xf5, 0x58, 0xf4, 0x83, 0xf5, 0x58, 0xf4, 0x83, 0xf5, 0x59, 0xf4, - 0x83, 0xf5, 0x5a, 0xf4, 0x83, 0xf5, 0x5b, 0xf4, 0x83, 0xf5, 0x5c, 0xf4, - 0x83, 0xf5, 0x5d, 0xf4, 0x83, 0xf5, 0x5d, 0xf4, 0x83, 0xf5, 0x5e, 0xf4, - 0x83, 0xf5, 0x5f, 0xf4, 0x83, 0xf5, 0x60, 0xf4, 0x83, 0xf5, 0x60, 0xf4, - 0x83, 0xf5, 0x61, 0xf4, 0x83, 0xf5, 0x62, 0xf4, 0x83, 0xf5, 0x63, 0xf4, - 0x83, 0xf5, 0x63, 0xf4, 0x83, 0xf5, 0x64, 0xf4, 0x83, 0xf5, 0x65, 0xf4, - 0x83, 0xf5, 0x66, 0xf4, 0x83, 0xf5, 0x66, 0xf4, 0x83, 0xf5, 0x67, 0xf4, - 0x83, 0xf5, 0x68, 0xf4, 0x83, 0xf5, 0x68, 0xf4, 0x83, 0xf5, 0x69, 0xf4, - 0x83, 0xf5, 0x6a, 0xf4, 0x83, 0xf5, 0x6a, 0xf4, 0x83, 0xf5, 0x6b, 0xf4, - 0x83, 0xf5, 0x6c, 0xf4, 0x83, 0xf5, 0x6c, 0xf4, 0x83, 0xf5, 0x6d, 0xf4, - 0x83, 0xf5, 0x6e, 0xf4, 0x83, 0xf5, 0x6e, 0xf4, 0x83, 0xf5, 0x6f, 0xf4, - 0x83, 0xf5, 0x70, 0xf4, 0x83, 0xf5, 0x70, 0xf4, 0x83, 0xf5, 0x71, 0xf4, - 0x83, 0xf5, 0x72, 0xf4, 0x83, 0xf5, 0x72, 0xf4, 0x83, 0xf5, 0x73, 0xf4, - 0x83, 0xf5, 0x73, 0xf4, 0x83, 0xf5, 0x74, 0xf4, 0x83, 0xf5, 0x75, 0xf4, - 0x83, 0xf5, 0x75, 0xf4, 0x83, 0xf5, 0x76, 0xf4, 0x83, 0xf5, 0x76, 0xf4, - 0x83, 0xf5, 0x77, 0xf4, 0x83, 0xf5, 0x78, 0xf4, 0x83, 0xf5, 0x78, 0xf4, - 0x83, 0xf5, 0x79, 0xf4, 0x83, 0xf5, 0x79, 0xf4, 0x83, 0xf5, 0x7a, 0xf4, - 0x83, 0xf5, 0x7a, 0xf4, 0x83, 0xf5, 0x7b, 0xf4, 0x83, 0xf5, 0x7c, 0xf4, - 0x83, 0xf5, 0x7c, 0xf4, 0x83, 0xf5, 0x7d, 0xf4, 0x83, 0xf5, 0x7d, 0xf4, - 0x83, 0xf5, 0x7e, 0xf4, 0x83, 0xf5, 0x7e, 0xf4, 0x83, 0xf5, 0x7f, 0xf4, - 0x83, 0xf5, 0x7f, 0xf4, 0x83, 0xf5, 0x80, 0xf4, 0x83, 0xf5, 0x81, 0xf4, - 0x83, 0xf5, 0x81, 0xf4, 0x83, 0xf5, 0x82, 0xf4, 0x83, 0xf5, 0x82, 0xf4, - 0x83, 0xf5, 0x83, 0xf5, 0x88, 0xf5, 0x83, 0xf5, 0x88, 0xf5, 0x84, 0xf5, - 0x88, 0xf5, 0x84, 0xf5, 0x88, 0xf5, 0x85, 0xf5, 0x88, 0xf5, 0x85, 0xf5, - 0x88, 0xf5, 0x86, 0xf5, 0x88, 0xf5, 0x86, 0xf5, 0x88, 0xf5, 0x87, 0xf5, - 0x88, 0xf5, 0x87, 0xf5, 0x88, 0xf5, 0x88, 0xf5, 0x88, 0xf5, 0x88, 0xf5, - 0x88, 0xf5, 0x89, 0xf5, 0x89, 0xf5, 0x89, 0xf5, 0x8d, 0xf5, 0x8a, 0xf5, - 0x8e, 0xf5, 0x8a, 0xf5, 0x8d, 0xf5, 0x8b, 0xf5, 0x8e, 0xf5, 0x8b, 0xf5, - 0x8d, 0xf5, 0x8c, 0xf5, 0x8e, 0xf5, 0x8c, 0xf5, 0x8d, 0xf5, 0x8d, 0xf5, - 0x8e, 0xf5, 0x8d, 0xf5, 0x8d, 0xf5, 0x8e, 0xf5, 0x8e, 0xf5, 0x8e, 0xf5, - 0x8e, 0xf5, 0x8e, 0xf5, 0x92, 0xf5, 0x8f, 0xf5, 0x93, 0xf5, 0x8f, 0xf5, - 0x92, 0xf5, 0x90, 0xf5, 0x93, 0xf5, 0x90, 0xf5, 0x92, 0xf5, 0x91, 0xf5, - 0x93, 0xf5, 0x91, 0xf5, 0x92, 0xf5, 0x92, 0xf5, 0x93, 0xf5, 0x92, 0xf5, - 0x92, 0xf5, 0x93, 0xf5, 0x93, 0xf5, 0x93, 0xf5, 0x93, 0xf5, 0x94, 0xf6, - 0x97, 0xf5, 0x94, 0xf6, 0x98, 0xf5, 0x94, 0xf6, 0x97, 0xf5, 0x95, 0xf6, - 0x98, 0xf5, 0x95, 0xf6, 0x97, 0xf5, 0x96, 0xf6, 0x98, 0xf5, 0x96, 0xf6, - 0x97, 0xf5, 0x97, 0xf6, 0x98, 0xf5, 0x97, 0xf6, 0x97, 0xf5, 0x98, 0xf6, - 0x98, 0xf5, 0x98, 0xf6, 0x98, 0xf5, 0x98, 0xf6, 0x9c, 0xf5, 0x99, 0xf6, - 0x9c, 0xf5, 0x99, 0xf6, 0x9c, 0xf5, 0x9a, 0xf6, 0x9c, 0xf5, 0x9a, 0xf6, - 0x9c, 0xf5, 0x9a, 0xf6, 0x9c, 0xf5, 0x9b, 0xf6, 0x9c, 0xf5, 0x9b, 0xf6, - 0x9c, 0xf5, 0x9c, 0xf6, 0x9c, 0xf5, 0x9c, 0xf6, 0x9c, 0xf5, 0x9d, 0xf6, - 0x9d, 0xf5, 0x9d, 0xf7, 0xa0, 0xf5, 0x9d, 0xf7, 0xa1, 0xf5, 0x9e, 0xf7, - 0xa0, 0xf5, 0x9e, 0xf7, 0xa1, 0xf5, 0x9f, 0xf7, 0xa0, 0xf5, 0x9f, 0xf7, - 0xa1, 0xf5, 0x9f, 0xf7, 0xa0, 0xf5, 0xa0, 0xf7, 0xa1, 0xf5, 0xa0, 0xf7, - 0xa0, 0xf5, 0xa1, 0xf7, 0xa1, 0xf5, 0xa1, 0xf7, 0xa1, 0xf5, 0xa1, 0xf7, - 0xa1, 0xf5, 0xa2, 0xf7, 0xa2, 0xf5, 0xa2, 0xf7, 0xa5, 0xf5, 0xa3, 0xf7, - 0xa5, 0xf5, 0xa3, 0xf7, 0xa5, 0xf5, 0xa3, 0xf7, 0xa5, 0xf5, 0xa4, 0xf7, - 0xa5, 0xf5, 0xa4, 0xf7, 0xa5, 0xf5, 0xa5, 0xf7, 0xa5, 0xf5, 0xa5, 0xf7, - 0xa5, 0xf5, 0xa5, 0xf7, 0xa5, 0xf5, 0xa6, 0xf7, 0xa6, 0xf5, 0xa6, 0xf7, - 0xa6, 0xf5, 0xa6, 0xf8, 0xa9, 0xf5, 0xa7, 0xf8, 0xa9, 0xf5, 0xa7, 0xf8, - 0xa9, 0xf5, 0xa8, 0xf8, 0xa9, 0xf5, 0xa8, 0xf8, 0xa9, 0xf5, 0xa8, 0xf8, - 0xa9, 0xf5, 0xa9, 0xf8, 0xa9, 0xf5, 0xa9, 0xf8, 0xa9, 0xf5, 0xaa, 0xf8, - 0xaa, 0xf5, 0xaa, 0xf8, 0xaa, 0xf5, 0xaa, 0xf8, 0xaa, 0xf5, 0xab, 0xf8, - 0xad, 0xf5, 0xab, 0xf8, 0xad, 0xf5, 0xab, 0xf8, 0xad, 0xf5, 0xac, 0xf8, - 0xad, 0xf5, 0xac, 0xf8, 0xad, 0xf5, 0xac, 0xf8, 0xad, 0xf5, 0xad, 0xf8, - 0xad, 0xf5, 0xad, 0xf8, 0xad, 0xf5, 0xae, 0xf8, 0xae, 0xf5, 0xae, 0xf8, - 0xae, 0xf5, 0xae, 0xf8, 0xae, 0xf5, 0xaf, 0xf8, 0xaf, 0xf5, 0xaf, 0xf8, - 0xaf, 0xf5, 0xaf, 0xf9, 0xb1, 0xf5, 0xb0, 0xf9, 0xb1, 0xf5, 0xb0, 0xf9, - 0xb1, 0xf5, 0xb0, 0xf9, 0xb1, 0xf5, 0xb1, 0xf9, 0xb1, 0xf5, 0xb1, 0xf9, - 0xb1, 0xf5, 0xb2, 0xf9, 0xb2, 0xf5, 0xb2, 0xf9, 0xb2, 0xf5, 0xb2, 0xf9, - 0xb2, 0xf5, 0xb3, 0xf9, 0xb3, 0xf5, 0xb3, 0xf9, 0xb3, 0xf5, 0xb3, 0xf9, - 0xb5, 0xf5, 0xb4, 0xf9, 0xb5, 0xf5, 0xb4, 0xf9, 0xb5, 0xf5, 0xb4, 0xf9, - 0xb5, 0xf5, 0xb5, 0xf9, 0xb5, 0xf5, 0xb5, 0xf9, 0xb5, 0xf5, 0xb5, 0xf9, - 0xb5, 0xf5, 0xb6, 0xf9, 0xb6, 0xf5, 0xb6, 0xf9, 0xb6, 0xf5, 0xb6, 0xf9, - 0xb6, 0xf5, 0xb7, 0xf9, 0xb7, 0xf5, 0xb7, 0xfa, 0xb8, 0xf5, 0xb7, 0xfa, - 0xb9, 0xf5, 0xb8, 0xfa, 0xb8, 0xf5, 0xb8, 0xfa, 0xb9, 0xf5, 0xb8, 0xfa, - 0xb8, 0xf5, 0xb9, 0xfa, 0xb9, 0xf5, 0xb9, 0xfa, 0xb9, 0xf5, 0xb9, 0xfa, - 0xb9, 0xf5, 0xba, 0xfa, 0xba, 0xf5, 0xba, 0xfa, 0xba, 0xf5, 0xba, 0xfa, - 0xba, 0xf5, 0xbb, 0xfa, 0xbb, 0xf5, 0xbb, 0xfa, 0xbb, 0xf5, 0xbb, 0xfa, - 0xbc, 0xf5, 0xbc, 0xfa, 0xbc, 0xf5, 0xbc, 0xfa, 0xbc, 0xf5, 0xbc, 0xfa, - 0xbc, 0xf5, 0xbd, 0xfa, 0xbd, 0xf5, 0xbd, 0xfa, 0xbd, 0xf5, 0xbd, 0xfa, - 0xbd, 0xf5, 0xbe, 0xfa, 0xbe, 0xf5, 0xbe, 0xfa, 0xbe, 0xf5, 0xbe, 0xfa, - 0xbe, 0xf5, 0xbf, 0xfa, 0xbf, 0xf5, 0xbf, 0xfa, 0xbf, 0xf5, 0xbf, 0xfa, - 0xbf, 0xf5, 0xc0, 0xfa, 0xc0, 0xf6, 0xc0, 0xfa, 0xc0, 0xf6, 0xc0, 0xfa, - 0xc0, 0xf6, 0xc1, 0xfa, 0xc1, 0xf6, 0xc1, 0xfa, 0xc1, 0xf6, 0xc1, 0xfa, - 0xc1, 0xf6, 0xc1, 0xfa, 0xc1, 0xf6, 0xc2, 0xfa, 0xc2, 0xf6, 0xc2, 0xfa, - 0xc2, 0xf6, 0xc2, 0xfa, 0xc2, 0xf6, 0xc3, 0xfa, 0xc3, 0xf6, 0xc2, 0xfa, - 0xc3, 0xf6, 0xc3, 0xfa, 0xc3, 0xf6, 0xc4, 0xfa, 0xc4, 0xf7, 0xc4, 0xfa, - 0xc4, 0xf7, 0xc4, 0xfa, 0xc4, 0xf7, 0xc5, 0xfa, 0xc5, 0xf7, 0xc5, 0xfa, - 0xc5, 0xf7, 0xc5, 0xfa, 0xc5, 0xf7, 0xc6, 0xfa, 0xc6, 0xf7, 0xc6, 0xfa, - 0xc6, 0xf7, 0xc6, 0xfa, 0xc6, 0xf7, 0xc6, 0xfa, 0xc6, 0xf7, 0xc6, 0xfa, - 0xc7, 0xf7, 0xc6, 0xfa, 0xc7, 0xf7, 0xc6, 0xfa, 0xc7, 0xf7, 0xc8, 0xfa, - 0xc8, 0xf8, 0xc8, 0xfa, 0xc8, 0xf8, 0xc9, 0xfa, 0xc8, 0xf6, 0xca, 0xfa, - 0xc9, 0xf5, 0xc9, 0xfa, 0xc9, 0xf6, 0xca, 0xfa, 0xc9, 0xf5, 0xca, 0xfa, - 0xc9, 0xf5, 0xca, 0xfa, 0xc9, 0xf5, 0xca, 0xfa, 0xc9, 0xf5, 0xca, 0xfa, - 0xc9, 0xf5, 0xcb, 0xfa, 0xc9, 0xf5, 0xcb, 0xfb, 0xcb, 0xf5, 0xcb, 0xfb, - 0xcb, 0xf5, 0xcc, 0xfb, 0xcc, 0xf5, 0xcc, 0xfb, 0xcc, 0xf5, 0xcc, 0xfb, - 0xcc, 0xf5, 0xcc, 0xfb, 0xcc, 0xf5, 0xcd, 0xfb, 0xcc, 0xf5, 0xcd, 0xfb, - 0xcc, 0xf5, 0xcd, 0xfb, 0xcc, 0xf5, 0xce, 0xfb, 0xcc, 0xf5, 0xce, 0xfc, - 0xce, 0xf5, 0xce, 0xfc, 0xce, 0xf5, 0xce, 0xfc, 0xce, 0xf5, 0xcf, 0xfc, - 0xcf, 0xf5, 0xcf, 0xfc, 0xcf, 0xf5, 0xcf, 0xfc, 0xcf, 0xf5, 0xd0, 0xfc, - 0xd0, 0xf5, 0xd0, 0xfc, 0xcf, 0xf5, 0xd0, 0xfc, 0xd0, 0xf5, 0xd0, 0xfc, - 0xcf, 0xf5, 0xd1, 0xfc, 0xd0, 0xf5, 0xd1, 0xfc, 0xd1, 0xf5, 0xd1, 0xfc, - 0xd1, 0xf5, 0xd2, 0xfc, 0xd2, 0xf5, 0xd2, 0xfc, 0xd2, 0xf5, 0xd2, 0xfc, - 0xd2, 0xf5, 0xd2, 0xfc, 0xd2, 0xf5, 0xd3, 0xfc, 0xd3, 0xf5, 0xd3, 0xfc, - 0xd2, 0xf5, 0xd3, 0xfc, 0xd3, 0xf5, 0xd4, 0xfc, 0xd2, 0xf5, 0xd4, 0xfc, - 0xd3, 0xf5, 0xd4, 0xfd, 0xd4, 0xf5, 0xd4, 0xfd, 0xd4, 0xf5, 0xd5, 0xfd, - 0xd5, 0xf5, 0xd5, 0xfd, 0xd5, 0xf5, 0xd5, 0xfd, 0xd5, 0xf5, 0xd6, 0xfd, - 0xd6, 0xf5, 0xd6, 0xfd, 0xd6, 0xf5, 0xd6, 0xfd, 0xd6, 0xf5, 0xd6, 0xfd, - 0xd6, 0xf5, 0xd7, 0xfd, 0xd6, 0xf5, 0xd7, 0xfd, 0xd6, 0xf5, 0xd7, 0xfd, - 0xd6, 0xf5, 0xd7, 0xfd, 0xd6, 0xf5, 0xd8, 0xfd, 0xd8, 0xf5, 0xd8, 0xfd, - 0xd8, 0xf5, 0xd8, 0xfd, 0xd8, 0xf5, 0xd9, 0xfd, 0xd9, 0xf5, 0xd9, 0xfd, - 0xd9, 0xf5, 0xd9, 0xfd, 0xd9, 0xf5, 0xd9, 0xfd, 0xd9, 0xf5, 0xda, 0xfd, - 0xd9, 0xf5, 0xda, 0xfd, 0xd9, 0xf5, 0xda, 0xfd, 0xd9, 0xf5, 0xda, 0xfd, - 0xd9, 0xf5, 0xdb, 0xfe, 0xdb, 0xf5, 0xdb, 0xfe, 0xdb, 0xf5, 0xdb, 0xfe, - 0xdb, 0xf5, 0xdb, 0xfe, 0xdb, 0xf5, 0xdc, 0xfe, 0xdc, 0xf5, 0xdc, 0xfe, - 0xdb, 0xf5, 0xdc, 0xfe, 0xdc, 0xf5, 0xdd, 0xfe, 0xdb, 0xf5, 0xdd, 0xfe, - 0xdc, 0xf5, 0xdd, 0xfe, 0xdb, 0xf5, 0xdd, 0xfe, 0xdc, 0xf5, 0xde, 0xfe, - 0xde, 0xf5, 0xde, 0xfe, 0xde, 0xf5, 0xde, 0xfe, 0xde, 0xf5, 0xde, 0xfe, - 0xde, 0xf5, 0xdf, 0xfe, 0xdf, 0xf5, 0xdf, 0xfc, 0xe3, 0xf5, 0xdf, 0xfb, - 0xe3, 0xf5, 0xdf, 0xfc, 0xe3, 0xf5, 0xe0, 0xfb, 0xe3, 0xf5, 0xe0, 0xfc, - 0xe3, 0xf5, 0xe0, 0xfb, 0xe3, 0xf5, 0xe1, 0xfc, 0xe3, 0xf5, 0xe1, 0xfb, - 0xe3, 0xf5, 0xe1, 0xfa, 0xe3, 0xf5, 0xe1, 0xfb, 0xe3, 0xf5, 0xe2, 0xfa, - 0xe3, 0xf5, 0xe2, 0xfb, 0xe3, 0xf5, 0xe2, 0xfa, 0xe3, 0xf5, 0xe2, 0xfb, - 0xe3, 0xf5, 0xe3, 0xfa, 0xe3, 0xf5, 0xe3, 0xfb, 0xe3, 0xf5, 0xe3, 0xfa, - 0xe3, 0xf5, 0xe3, 0xfa, 0xe3, 0xf5, 0xe3, 0xfa, 0xe4, 0xf5, 0xe3, 0xfa, - 0xe4, 0xf5, 0xe5, 0xfa, 0xe4, 0xf5, 0xe5, 0xfa, 0xe4, 0xf5, 0xe5, 0xfa, - 0xe5, 0xf5, 0xe5, 0xfa, 0xe5, 0xf5, 0xe5, 0xfa, 0xe5, 0xf5, 0xe5, 0xfa, - 0xe5, 0xf5, 0xe6, 0xfa, 0xe5, 0xf5, 0xe6, 0xfa, 0xe5, 0xf5, 0xe6, 0xfa, - 0xe5, 0xf5, 0xe6, 0xfa, 0xe5, 0xf5, 0xe7, 0xfa, 0xe5, 0xf5, 0xe7, 0xfa, - 0xe5, 0xf5, 0xe7, 0xfa, 0xe5, 0xf5, 0xe7, 0xfa, 0xe5, 0xf5, 0xe8, 0xfa, - 0xe5, 0xf5, 0xe8, 0xfa, 0xe5, 0xf5, 0xe8, 0xfa, 0xe5, 0xf5, 0xe8, 0xfa, - 0xe5, 0xf5, 0xe9, 0xfa, 0xe5, 0xf5, 0xe9, 0xfa, 0xe5, 0xf5, 0xe9, 0xf9, - 0xe5, 0xf5, 0xe9, 0xfa, 0xe5, 0xf5, 0xea, 0xf9, 0xe5, 0xf5, 0xea, 0xfa, - 0xef, 0xf5, 0xea, 0xfb, 0xee, 0xf5, 0xea, 0xfa, 0xef, 0xf5, 0xeb, 0xfb, - 0xee, 0xf5, 0xeb, 0xfa, 0xef, 0xf5, 0xeb, 0xfb, 0xee, 0xf5, 0xeb, 0xfa, - 0xef, 0xf5, 0xec, 0xfb, 0xee, 0xf5, 0xec, 0xfa, 0xef, 0xf5, 0xec, 0xfb, - 0xee, 0xf5, 0xec, 0xfa, 0xef, 0xf5, 0xec, 0xfb, 0xee, 0xf5, 0xed, 0xfa, - 0xef, 0xf5, 0xed, 0xfb, 0xee, 0xf5, 0xed, 0xfa, 0xef, 0xf5, 0xed, 0xfb, - 0xee, 0xf5, 0xee, 0xfa, 0xef, 0xf5, 0xee, 0xfa, 0xef, 0xf5, 0xee, 0xfa, - 0xef, 0xf5, 0xee, 0xfa, 0xef, 0xf5, 0xee, 0xfa, 0xef, 0xf5, 0xee, 0xfa, - 0xef, 0xf5, 0xef, 0xfa, 0xef, 0xf5, 0xef, 0xfa, 0xef, 0xf5, 0xf0, 0xfa, - 0xef, 0xf5, 0xf0, 0xfa, 0xef, 0xf5, 0xf0, 0xfa, 0xef, 0xf5, 0xf0, 0xfa, - 0xef, 0xf5, 0xf1, 0xfa, 0xef, 0xf5, 0xf1, 0xfa, 0xef, 0xf5, 0xf1, 0xfa, - 0xef, 0xf5, 0xf1, 0xfa, 0xef, 0xf5, 0xf2, 0xfa, 0xef, 0xf5, 0xf2, 0xfa, - 0xef, 0xf5, 0xf2, 0xfa, 0xef, 0xf5, 0xf2, 0xfa, 0xef, 0xf5, 0xf2, 0xfa, - 0xef, 0xf5, 0xf3, 0xfa, 0xef, 0xf5, 0xf3, 0xfa, 0xef, 0xf5, 0xf3, 0xfa, - 0xef, 0xf5, 0xf3, 0xfa, 0xef, 0xf5, 0xf4, 0xfa, 0xef, 0xf5, 0xf4, 0xfa, - 0xef, 0xf5, 0xf4, 0xfa, 0xef, 0xf5, 0xf4, 0xfa, 0xef, 0xf5, 0xf5, 0xfa, - 0xef, 0xf5, 0xf5, 0xfa, 0xef, 0xf5, 0xf5, 0xf8, 0xef, 0xf5, 0xf5, 0xfa, - 0xef, 0xf5, 0xf5, 0xf8, 0xef, 0xf5, 0xf6, 0xfa, 0xef, 0xf5, 0xf6, 0xf8, - 0xef, 0xf5, 0xf6, 0xfa, 0xef, 0xf5, 0xf6, 0xf8, 0xef, 0xf5, 0xf7, 0xfa, - 0xef, 0xf5, 0xf7, 0xf8, 0xef, 0xf5, 0xf7, 0xfa, 0xef, 0xf5, 0xf7, 0xf8, - 0xef, 0xf5, 0xf8, 0xfa, 0xef, 0xf5, 0xf8, 0xf8, 0xef, 0xf5, 0xf8, 0xfa, - 0xef, 0xf5, 0xf8, 0xf8, 0xef, 0xf5, 0xf8, 0xfa, 0xef, 0xf5, 0xf9, 0xf8, - 0xef, 0xf5, 0xf9, 0xfa, 0xef, 0xf5, 0xf9, 0xf8, 0xef, 0xf5, 0xf9, 0xfa, - 0xef, 0xf5, 0xfa, 0xf8, 0xef, 0xf5, 0xfa, 0xfa, 0xef, 0xf5, 0xfa, 0xf8, - 0xef, 0xf5, 0xfa, 0xfa, 0xef, 0xf5, 0xfa, 0xf8, 0xef, 0xf5, 0xfb, 0xfa, - 0xef, 0xf5, 0xfb, 0xf8, 0xef, 0xf5, 0xfb, 0xfa, 0xef, 0xf5, 0xfb, 0xf8, - 0xef, 0xf5, 0xfc, 0xfa, 0xef, 0xf5, 0xfc, 0xf8, 0xef, 0xf5, 0xfc, 0xfa, - 0xef, 0xf5, 0xfc, 0xf8, 0xef, 0xf5, 0xfc, 0xfa, 0xef, 0xf5, 0xfd, 0xf8, - 0xef, 0xf5, 0xfd, 0xfa, 0xef, 0xf5, 0xfd, 0xf8, 0xef, 0xf5, 0xfd, 0xfa, - 0xef, 0xf5, 0xfe, 0xf8, 0xef, 0xf5, 0xfe, 0xfa, 0xef, 0xf5, 0xfe, 0xf8, - 0xef, 0xf5, 0xfe, 0xfa, 0xef, 0xf5, 0xfe, 0xf8, 0xef, 0xf5, 0xff, 0xf8, - 0xef, 0xf5, 0xff, 0xf8, 0xef, 0xf5, 0x03, 0xf4, 0x83, 0xf5, 0x0a, 0xf4, - 0x83, 0xf5, 0x0f, 0xf4, 0x83, 0xf5, 0x14, 0xf4, 0x83, 0xf5, 0x17, 0xf4, - 0x83, 0xf5, 0x1b, 0xf4, 0x83, 0xf5, 0x1e, 0xf4, 0x83, 0xf5, 0x20, 0xf4, - 0x83, 0xf5, 0x23, 0xf4, 0x83, 0xf5, 0x25, 0xf4, 0x83, 0xf5, 0x27, 0xf4, - 0x83, 0xf5, 0x29, 0xf4, 0x83, 0xf5, 0x2b, 0xf4, 0x83, 0xf5, 0x2d, 0xf4, - 0x83, 0xf5, 0x2f, 0xf4, 0x83, 0xf5, 0x31, 0xf4, 0x83, 0xf5, 0x32, 0xf4, - 0x83, 0xf5, 0x34, 0xf4, 0x83, 0xf5, 0x35, 0xf4, 0x83, 0xf5, 0x37, 0xf4, - 0x83, 0xf5, 0x38, 0xf4, 0x83, 0xf5, 0x3a, 0xf4, 0x83, 0xf5, 0x3b, 0xf4, - 0x83, 0xf5, 0x3c, 0xf4, 0x83, 0xf5, 0x3e, 0xf4, 0x83, 0xf5, 0x3f, 0xf4, - 0x83, 0xf5, 0x40, 0xf4, 0x83, 0xf5, 0x42, 0xf4, 0x83, 0xf5, 0x43, 0xf4, - 0x83, 0xf5, 0x44, 0xf4, 0x83, 0xf5, 0x45, 0xf4, 0x83, 0xf5, 0x46, 0xf4, - 0x83, 0xf5, 0x47, 0xf4, 0x83, 0xf5, 0x48, 0xf4, 0x83, 0xf5, 0x49, 0xf4, - 0x83, 0xf5, 0x4a, 0xf4, 0x83, 0xf5, 0x4b, 0xf4, 0x83, 0xf5, 0x4c, 0xf4, - 0x83, 0xf5, 0x4d, 0xf4, 0x83, 0xf5, 0x4e, 0xf4, 0x83, 0xf5, 0x4f, 0xf4, - 0x83, 0xf5, 0x50, 0xf4, 0x83, 0xf5, 0x51, 0xf4, 0x83, 0xf5, 0x52, 0xf4, - 0x83, 0xf5, 0x53, 0xf4, 0x83, 0xf5, 0x54, 0xf4, 0x83, 0xf5, 0x55, 0xf4, - 0x83, 0xf5, 0x56, 0xf4, 0x83, 0xf5, 0x57, 0xf4, 0x83, 0xf5, 0x58, 0xf4, - 0x83, 0xf5, 0x58, 0xf4, 0x83, 0xf5, 0x59, 0xf4, 0x83, 0xf5, 0x5a, 0xf4, - 0x83, 0xf5, 0x5b, 0xf4, 0x83, 0xf5, 0x5c, 0xf4, 0x83, 0xf5, 0x5d, 0xf4, - 0x83, 0xf5, 0x5d, 0xf4, 0x83, 0xf5, 0x5e, 0xf4, 0x83, 0xf5, 0x5f, 0xf4, - 0x83, 0xf5, 0x60, 0xf4, 0x83, 0xf5, 0x60, 0xf4, 0x83, 0xf5, 0x61, 0xf4, - 0x83, 0xf5, 0x62, 0xf4, 0x83, 0xf5, 0x63, 0xf4, 0x83, 0xf5, 0x63, 0xf4, - 0x83, 0xf5, 0x64, 0xf4, 0x83, 0xf5, 0x65, 0xf4, 0x83, 0xf5, 0x66, 0xf4, - 0x83, 0xf5, 0x66, 0xf4, 0x83, 0xf5, 0x67, 0xf4, 0x83, 0xf5, 0x68, 0xf4, - 0x83, 0xf5, 0x68, 0xf4, 0x83, 0xf5, 0x69, 0xf4, 0x83, 0xf5, 0x6a, 0xf4, - 0x83, 0xf5, 0x6a, 0xf4, 0x83, 0xf5, 0x6b, 0xf4, 0x83, 0xf5, 0x6c, 0xf4, - 0x83, 0xf5, 0x6c, 0xf4, 0x83, 0xf5, 0x6d, 0xf4, 0x83, 0xf5, 0x6e, 0xf4, - 0x83, 0xf5, 0x6e, 0xf4, 0x83, 0xf5, 0x6f, 0xf4, 0x83, 0xf5, 0x70, 0xf4, - 0x83, 0xf5, 0x70, 0xf4, 0x83, 0xf5, 0x71, 0xf4, 0x83, 0xf5, 0x72, 0xf4, - 0x83, 0xf5, 0x72, 0xf4, 0x83, 0xf5, 0x73, 0xf4, 0x83, 0xf5, 0x73, 0xf4, - 0x83, 0xf5, 0x74, 0xf4, 0x83, 0xf5, 0x75, 0xf4, 0x83, 0xf5, 0x75, 0xf4, - 0x83, 0xf5, 0x76, 0xf4, 0x83, 0xf5, 0x76, 0xf4, 0x83, 0xf5, 0x77, 0xf4, - 0x83, 0xf5, 0x78, 0xf4, 0x83, 0xf5, 0x78, 0xf4, 0x83, 0xf5, 0x79, 0xf4, - 0x83, 0xf5, 0x79, 0xf4, 0x83, 0xf5, 0x7a, 0xf4, 0x83, 0xf5, 0x7a, 0xf4, - 0x83, 0xf5, 0x7b, 0xf4, 0x83, 0xf5, 0x7c, 0xf4, 0x83, 0xf5, 0x7c, 0xf4, - 0x83, 0xf5, 0x7d, 0xf4, 0x85, 0xf5, 0x7d, 0xf4, 0x83, 0xf5, 0x7e, 0xf4, - 0x85, 0xf5, 0x7e, 0xf4, 0x83, 0xf5, 0x7f, 0xf4, 0x85, 0xf5, 0x7f, 0xf4, - 0x86, 0xf5, 0x80, 0xf4, 0x85, 0xf5, 0x81, 0xf4, 0x86, 0xf5, 0x81, 0xf4, - 0x85, 0xf5, 0x82, 0xf4, 0x86, 0xf5, 0x82, 0xf4, 0x85, 0xf5, 0x83, 0xf4, - 0x86, 0xf5, 0x83, 0xf4, 0x85, 0xf5, 0x84, 0xf4, 0x86, 0xf5, 0x84, 0xf4, - 0x85, 0xf5, 0x85, 0xf4, 0x86, 0xf5, 0x85, 0xf4, 0x85, 0xf5, 0x86, 0xf5, - 0x8b, 0xf5, 0x86, 0xf5, 0x8b, 0xf5, 0x87, 0xf5, 0x8b, 0xf5, 0x87, 0xf5, - 0x8b, 0xf5, 0x88, 0xf5, 0x8b, 0xf5, 0x88, 0xf5, 0x8b, 0xf5, 0x89, 0xf5, - 0x8b, 0xf5, 0x89, 0xf5, 0x8b, 0xf5, 0x8a, 0xf5, 0x8b, 0xf5, 0x8a, 0xf5, - 0x8b, 0xf5, 0x8b, 0xf5, 0x8b, 0xf5, 0x8b, 0xf5, 0x8b, 0xf5, 0x8c, 0xf5, - 0x8c, 0xf5, 0x8c, 0xf5, 0x90, 0xf5, 0x8d, 0xf5, 0x90, 0xf5, 0x8d, 0xf5, - 0x90, 0xf5, 0x8e, 0xf5, 0x90, 0xf5, 0x8e, 0xf5, 0x90, 0xf5, 0x8e, 0xf5, - 0x90, 0xf5, 0x8f, 0xf5, 0x90, 0xf5, 0x8f, 0xf5, 0x90, 0xf5, 0x90, 0xf5, - 0x90, 0xf5, 0x90, 0xf5, 0x90, 0xf5, 0x91, 0xf5, 0x91, 0xf5, 0x91, 0xf6, - 0x95, 0xf5, 0x92, 0xf6, 0x95, 0xf5, 0x92, 0xf6, 0x95, 0xf5, 0x93, 0xf6, - 0x95, 0xf5, 0x93, 0xf6, 0x95, 0xf5, 0x94, 0xf6, 0x95, 0xf5, 0x94, 0xf6, - 0x95, 0xf5, 0x94, 0xf6, 0x95, 0xf5, 0x95, 0xf6, 0x95, 0xf5, 0x95, 0xf6, - 0x95, 0xf5, 0x96, 0xf6, 0x96, 0xf5, 0x96, 0xf6, 0x9a, 0xf5, 0x97, 0xf6, - 0x9a, 0xf5, 0x97, 0xf6, 0x9a, 0xf5, 0x98, 0xf6, 0x9a, 0xf5, 0x98, 0xf6, - 0x9a, 0xf5, 0x98, 0xf6, 0x9a, 0xf5, 0x99, 0xf6, 0x9a, 0xf5, 0x99, 0xf6, - 0x9a, 0xf5, 0x9a, 0xf6, 0x9a, 0xf5, 0x9a, 0xf6, 0x9a, 0xf5, 0x9a, 0xf6, - 0x9a, 0xf5, 0x9b, 0xf7, 0x9e, 0xf5, 0x9b, 0xf7, 0x9f, 0xf5, 0x9c, 0xf7, - 0x9e, 0xf5, 0x9c, 0xf7, 0x9f, 0xf5, 0x9d, 0xf7, 0x9e, 0xf5, 0x9d, 0xf7, - 0x9f, 0xf5, 0x9d, 0xf7, 0x9e, 0xf5, 0x9e, 0xf7, 0x9f, 0xf5, 0x9e, 0xf7, - 0x9e, 0xf5, 0x9f, 0xf7, 0x9f, 0xf5, 0x9f, 0xf7, 0x9f, 0xf5, 0x9f, 0xf7, - 0xa3, 0xf5, 0xa0, 0xf7, 0xa3, 0xf5, 0xa0, 0xf7, 0xa3, 0xf5, 0xa1, 0xf7, - 0xa3, 0xf5, 0xa1, 0xf7, 0xa3, 0xf5, 0xa1, 0xf7, 0xa3, 0xf5, 0xa2, 0xf7, - 0xa3, 0xf5, 0xa2, 0xf7, 0xa3, 0xf5, 0xa3, 0xf7, 0xa3, 0xf5, 0xa3, 0xf7, - 0xa3, 0xf5, 0xa3, 0xf7, 0xa3, 0xf5, 0xa4, 0xf7, 0xa4, 0xf5, 0xa4, 0xf7, - 0xa4, 0xf5, 0xa5, 0xf8, 0xa7, 0xf5, 0xa5, 0xf8, 0xa7, 0xf5, 0xa5, 0xf8, - 0xa7, 0xf5, 0xa6, 0xf8, 0xa7, 0xf5, 0xa6, 0xf8, 0xa7, 0xf5, 0xa6, 0xf8, - 0xa7, 0xf5, 0xa7, 0xf8, 0xa7, 0xf5, 0xa7, 0xf8, 0xa9, 0xf5, 0xa8, 0xf8, - 0xa9, 0xf5, 0xa8, 0xf8, 0xa9, 0xf5, 0xa8, 0xf8, 0xa9, 0xf5, 0xa9, 0xf8, - 0xa9, 0xf5, 0xa9, 0xf8, 0xa9, 0xf5, 0xaa, 0xf8, 0xab, 0xf5, 0xaa, 0xf8, - 0xab, 0xf5, 0xaa, 0xf8, 0xab, 0xf5, 0xab, 0xf8, 0xab, 0xf5, 0xab, 0xf8, - 0xab, 0xf5, 0xab, 0xf8, 0xab, 0xf5, 0xac, 0xf8, 0xac, 0xf5, 0xac, 0xf8, - 0xac, 0xf5, 0xac, 0xf8, 0xac, 0xf5, 0xad, 0xf8, 0xaf, 0xf5, 0xad, 0xf8, - 0xaf, 0xf5, 0xae, 0xf8, 0xaf, 0xf5, 0xae, 0xf8, 0xaf, 0xf5, 0xae, 0xf8, - 0xaf, 0xf5, 0xaf, 0xf8, 0xaf, 0xf5, 0xaf, 0xf8, 0xaf, 0xf5, 0xaf, 0xf8, - 0xaf, 0xf5, 0xb0, 0xf8, 0xb0, 0xf5, 0xb0, 0xf8, 0xb0, 0xf5, 0xb0, 0xf8, - 0xb0, 0xf5, 0xb1, 0xf8, 0xb1, 0xf5, 0xb1, 0xf8, 0xb1, 0xf5, 0xb2, 0xf9, - 0xb3, 0xf5, 0xb2, 0xf9, 0xb3, 0xf5, 0xb2, 0xf9, 0xb3, 0xf5, 0xb3, 0xf9, - 0xb3, 0xf5, 0xb3, 0xf9, 0xb3, 0xf5, 0xb3, 0xf9, 0xb3, 0xf5, 0xb4, 0xf9, - 0xb4, 0xf5, 0xb4, 0xf9, 0xb4, 0xf5, 0xb4, 0xf9, 0xb4, 0xf5, 0xb5, 0xf9, - 0xb5, 0xf5, 0xb5, 0xf9, 0xb5, 0xf5, 0xb5, 0xf9, 0xb7, 0xf5, 0xb6, 0xf9, - 0xb7, 0xf5, 0xb6, 0xf9, 0xb7, 0xf5, 0xb6, 0xf9, 0xb7, 0xf5, 0xb7, 0xf9, - 0xb7, 0xf5, 0xb7, 0xf9, 0xb7, 0xf5, 0xb7, 0xf9, 0xb7, 0xf5, 0xb8, 0xf9, - 0xb8, 0xf5, 0xb8, 0xf9, 0xb8, 0xf5, 0xb8, 0xf9, 0xb8, 0xf5, 0xb9, 0xf9, - 0xb9, 0xf5, 0xb9, 0xfa, 0xba, 0xf5, 0xb9, 0xfa, 0xbb, 0xf5, 0xba, 0xfa, - 0xba, 0xf5, 0xba, 0xfa, 0xbb, 0xf5, 0xba, 0xfa, 0xba, 0xf5, 0xbb, 0xfa, - 0xbb, 0xf5, 0xbb, 0xfa, 0xbb, 0xf5, 0xbb, 0xfa, 0xbb, 0xf5, 0xbc, 0xfa, - 0xbc, 0xf5, 0xbc, 0xfa, 0xbc, 0xf5, 0xbc, 0xfa, 0xbc, 0xf5, 0xbd, 0xfa, - 0xbd, 0xf5, 0xbd, 0xfa, 0xbd, 0xf5, 0xbd, 0xfa, 0xbe, 0xf5, 0xbe, 0xfa, - 0xbe, 0xf5, 0xbe, 0xfa, 0xbe, 0xf5, 0xbe, 0xfa, 0xbe, 0xf5, 0xbf, 0xfa, - 0xbf, 0xf5, 0xbf, 0xfa, 0xbf, 0xf5, 0xbf, 0xfa, 0xbf, 0xf5, 0xc0, 0xfa, - 0xc0, 0xf5, 0xc0, 0xfa, 0xc0, 0xf5, 0xc0, 0xfa, 0xc0, 0xf5, 0xc1, 0xfa, - 0xc1, 0xf5, 0xc1, 0xfa, 0xc1, 0xf5, 0xc1, 0xfa, 0xc1, 0xf5, 0xc1, 0xfb, - 0xc1, 0xf6, 0xc2, 0xfb, 0xc2, 0xf6, 0xc2, 0xfb, 0xc2, 0xf6, 0xc2, 0xfb, - 0xc2, 0xf6, 0xc3, 0xfb, 0xc3, 0xf6, 0xc3, 0xfb, 0xc3, 0xf6, 0xc3, 0xfb, - 0xc3, 0xf6, 0xc4, 0xfb, 0xc4, 0xf6, 0xc4, 0xfb, 0xc4, 0xf6, 0xc4, 0xfb, - 0xc4, 0xf6, 0xc5, 0xfb, 0xc5, 0xf6, 0xc4, 0xfb, 0xc5, 0xf6, 0xc5, 0xfb, - 0xc5, 0xf6, 0xc6, 0xfb, 0xc6, 0xf7, 0xc6, 0xfb, 0xc6, 0xf7, 0xc6, 0xfb, - 0xc6, 0xf7, 0xc6, 0xfb, 0xc6, 0xf7, 0xc7, 0xfb, 0xc7, 0xf7, 0xc7, 0xfb, - 0xc7, 0xf7, 0xc7, 0xfb, 0xc7, 0xf7, 0xc8, 0xfb, 0xc8, 0xf7, 0xc8, 0xfb, - 0xc8, 0xf7, 0xc8, 0xfb, 0xc8, 0xf7, 0xca, 0xfb, 0xc9, 0xf5, 0xca, 0xfb, - 0xc9, 0xf5, 0xca, 0xfb, 0xc9, 0xf5, 0xca, 0xfb, 0xc9, 0xf5, 0xca, 0xfb, - 0xc9, 0xf5, 0xca, 0xfb, 0xc9, 0xf5, 0xca, 0xfb, 0xca, 0xf5, 0xcb, 0xfb, - 0xcb, 0xf5, 0xcb, 0xfb, 0xcb, 0xf5, 0xcb, 0xfb, 0xcb, 0xf5, 0xcc, 0xfb, - 0xcb, 0xf5, 0xcc, 0xfc, 0xcc, 0xf5, 0xcc, 0xfc, 0xcc, 0xf5, 0xcc, 0xfc, - 0xcc, 0xf5, 0xcd, 0xfc, 0xcd, 0xf5, 0xcd, 0xfc, 0xcd, 0xf5, 0xcd, 0xfc, - 0xcd, 0xf5, 0xce, 0xfc, 0xce, 0xf5, 0xce, 0xfc, 0xce, 0xf5, 0xce, 0xfc, - 0xce, 0xf5, 0xce, 0xfc, 0xce, 0xf5, 0xcf, 0xfc, 0xce, 0xf5, 0xcf, 0xfc, - 0xce, 0xf5, 0xcf, 0xfc, 0xce, 0xf5, 0xd0, 0xfc, 0xd0, 0xf5, 0xd0, 0xfc, - 0xd0, 0xf5, 0xd0, 0xfc, 0xd0, 0xf5, 0xd0, 0xfc, 0xd0, 0xf5, 0xd1, 0xfc, - 0xd1, 0xf5, 0xd1, 0xfc, 0xd1, 0xf5, 0xd1, 0xfc, 0xd1, 0xf5, 0xd2, 0xfc, - 0xd1, 0xf5, 0xd2, 0xfc, 0xd1, 0xf5, 0xd2, 0xfc, 0xd1, 0xf5, 0xd2, 0xfc, - 0xd2, 0xf5, 0xd3, 0xfc, 0xd3, 0xf5, 0xd3, 0xfc, 0xd3, 0xf5, 0xd3, 0xfc, - 0xd3, 0xf5, 0xd4, 0xfc, 0xd4, 0xf5, 0xd4, 0xfc, 0xd4, 0xf5, 0xd4, 0xfc, - 0xd4, 0xf5, 0xd4, 0xfc, 0xd4, 0xf5, 0xd5, 0xfc, 0xd4, 0xf5, 0xd5, 0xfc, - 0xd4, 0xf5, 0xd5, 0xfc, 0xd4, 0xf5, 0xd6, 0xfd, 0xd6, 0xf5, 0xd6, 0xfd, - 0xd6, 0xf5, 0xd6, 0xfd, 0xd6, 0xf5, 0xd6, 0xfd, 0xd6, 0xf5, 0xd7, 0xfd, - 0xd7, 0xf5, 0xd7, 0xfd, 0xd7, 0xf5, 0xd7, 0xfd, 0xd7, 0xf5, 0xd7, 0xfd, - 0xd7, 0xf5, 0xd8, 0xfd, 0xd7, 0xf5, 0xd8, 0xfd, 0xd7, 0xf5, 0xd8, 0xfd, - 0xd7, 0xf5, 0xd9, 0xfd, 0xd7, 0xf5, 0xd9, 0xfd, 0xd7, 0xf5, 0xd9, 0xfd, - 0xd9, 0xf5, 0xd9, 0xfd, 0xd9, 0xf5, 0xda, 0xfd, 0xda, 0xf5, 0xda, 0xfd, - 0xda, 0xf5, 0xda, 0xfd, 0xda, 0xf5, 0xda, 0xfd, 0xda, 0xf5, 0xdb, 0xfd, - 0xda, 0xf5, 0xdb, 0xfd, 0xda, 0xf5, 0xdb, 0xfd, 0xda, 0xf5, 0xdb, 0xfd, - 0xda, 0xf5, 0xdc, 0xfd, 0xda, 0xf5, 0xdc, 0xfe, 0xdc, 0xf5, 0xdc, 0xfe, - 0xdc, 0xf5, 0xdd, 0xfe, 0xdd, 0xf5, 0xdd, 0xfe, 0xdd, 0xf5, 0xdd, 0xfe, - 0xdd, 0xf5, 0xdd, 0xfe, 0xdd, 0xf5, 0xde, 0xfe, 0xdd, 0xf5, 0xde, 0xfe, - 0xdd, 0xf5, 0xde, 0xfe, 0xdd, 0xf5, 0xde, 0xfe, 0xdd, 0xf5, 0xdf, 0xfe, - 0xdd, 0xf5, 0xdf, 0xfc, 0xe3, 0xf5, 0xdf, 0xfb, 0xe3, 0xf5, 0xdf, 0xfc, - 0xe3, 0xf5, 0xe0, 0xfb, 0xe3, 0xf5, 0xe0, 0xfc, 0xe3, 0xf5, 0xe0, 0xfb, - 0xe3, 0xf5, 0xe1, 0xfc, 0xe3, 0xf5, 0xe1, 0xfb, 0xe3, 0xf5, 0xe1, 0xfb, - 0xe3, 0xf5, 0xe1, 0xfb, 0xe3, 0xf5, 0xe2, 0xfb, 0xe3, 0xf5, 0xe2, 0xfb, - 0xe3, 0xf5, 0xe2, 0xfb, 0xe3, 0xf5, 0xe2, 0xfb, 0xe3, 0xf5, 0xe3, 0xfb, - 0xe3, 0xf5, 0xe3, 0xfb, 0xe3, 0xf4, 0xe3, 0xfb, 0xe3, 0xf5, 0xe3, 0xfb, - 0xe3, 0xf4, 0xe3, 0xfb, 0xe4, 0xf5, 0xe5, 0xfb, 0xe4, 0xf5, 0xe5, 0xfb, - 0xe4, 0xf5, 0xe5, 0xfb, 0xe4, 0xf5, 0xe5, 0xfb, 0xe5, 0xf5, 0xe5, 0xfa, - 0xe5, 0xf5, 0xe5, 0xfb, 0xe5, 0xf5, 0xe5, 0xfa, 0xe5, 0xf5, 0xe6, 0xfb, - 0xe5, 0xf5, 0xe6, 0xfa, 0xe5, 0xf5, 0xe6, 0xfb, 0xe5, 0xf5, 0xe6, 0xfa, - 0xe5, 0xf5, 0xe7, 0xfb, 0xe5, 0xf5, 0xe7, 0xfa, 0xe5, 0xf5, 0xe7, 0xfb, - 0xe5, 0xf5, 0xe7, 0xfa, 0xe5, 0xf5, 0xe8, 0xfb, 0xe5, 0xf5, 0xe8, 0xfa, - 0xe5, 0xf5, 0xe8, 0xfb, 0xe5, 0xf5, 0xe8, 0xfa, 0xe5, 0xf5, 0xe9, 0xfb, - 0xe5, 0xf5, 0xe9, 0xfa, 0xe5, 0xf5, 0xe9, 0xf9, 0xe5, 0xf5, 0xe9, 0xfa, - 0xe5, 0xf5, 0xea, 0xf9, 0xe5, 0xf5, 0xea, 0xfc, 0xee, 0xf5, 0xea, 0xfb, - 0xee, 0xf5, 0xea, 0xfc, 0xee, 0xf5, 0xeb, 0xfb, 0xee, 0xf5, 0xeb, 0xfb, - 0xef, 0xf5, 0xeb, 0xfb, 0xee, 0xf5, 0xeb, 0xfb, 0xef, 0xf5, 0xec, 0xfb, - 0xee, 0xf5, 0xec, 0xfb, 0xef, 0xf5, 0xec, 0xfb, 0xee, 0xf5, 0xec, 0xfb, - 0xef, 0xf5, 0xec, 0xfb, 0xee, 0xf5, 0xed, 0xfb, 0xef, 0xf5, 0xed, 0xfb, - 0xee, 0xf5, 0xed, 0xfb, 0xef, 0xf5, 0xed, 0xfb, 0xee, 0xf5, 0xee, 0xfb, - 0xef, 0xf5, 0xee, 0xfb, 0xee, 0xf5, 0xee, 0xfb, 0xef, 0xf5, 0xee, 0xfb, - 0xee, 0xf5, 0xee, 0xfb, 0xef, 0xf5, 0xee, 0xfb, 0xef, 0xf5, 0xef, 0xfb, - 0xef, 0xf5, 0xef, 0xfb, 0xef, 0xf5, 0xf0, 0xfb, 0xef, 0xf5, 0xf0, 0xfb, - 0xef, 0xf5, 0xf0, 0xfb, 0xef, 0xf5, 0xf0, 0xfb, 0xef, 0xf5, 0xf1, 0xfb, - 0xef, 0xf5, 0xf1, 0xfb, 0xef, 0xf5, 0xf1, 0xf9, 0xef, 0xf5, 0xf1, 0xfb, - 0xef, 0xf5, 0xf2, 0xf9, 0xef, 0xf5, 0xf2, 0xfb, 0xef, 0xf5, 0xf2, 0xf9, - 0xef, 0xf5, 0xf2, 0xfb, 0xef, 0xf5, 0xf2, 0xf9, 0xef, 0xf5, 0xf3, 0xfb, - 0xef, 0xf5, 0xf3, 0xf9, 0xef, 0xf5, 0xf3, 0xfb, 0xef, 0xf5, 0xf3, 0xf9, - 0xef, 0xf5, 0xf4, 0xfb, 0xef, 0xf5, 0xf4, 0xf9, 0xef, 0xf5, 0xf4, 0xfb, - 0xef, 0xf5, 0xf4, 0xf9, 0xef, 0xf5, 0xf5, 0xfb, 0xef, 0xf5, 0xf5, 0xf9, - 0xef, 0xf5, 0xf5, 0xfb, 0xef, 0xf5, 0xf5, 0xf9, 0xef, 0xf5, 0xf5, 0xfb, - 0xef, 0xf5, 0xf6, 0xf9, 0xef, 0xf5, 0xf6, 0xfb, 0xef, 0xf5, 0xf6, 0xf9, - 0xef, 0xf5, 0xf6, 0xfb, 0xef, 0xf5, 0xf7, 0xf9, 0xef, 0xf5, 0xf7, 0xfb, - 0xef, 0xf5, 0xf7, 0xf9, 0xef, 0xf5, 0xf7, 0xfb, 0xef, 0xf5, 0xf8, 0xf9, - 0xef, 0xf5, 0xf8, 0xf8, 0xef, 0xf5, 0xf8, 0xf9, 0xef, 0xf5, 0xf8, 0xf8, - 0xef, 0xf5, 0xf8, 0xf9, 0xef, 0xf5, 0xf9, 0xf8, 0xef, 0xf5, 0xf9, 0xf9, - 0xef, 0xf5, 0xf9, 0xf8, 0xef, 0xf5, 0xf9, 0xf9, 0xef, 0xf5, 0xfa, 0xf8, - 0xef, 0xf5, 0xfa, 0xf9, 0xef, 0xf5, 0xfa, 0xf8, 0xef, 0xf5, 0xfa, 0xf9, - 0xef, 0xf5, 0xfa, 0xf8, 0xef, 0xf5, 0xfb, 0xf9, 0xef, 0xf5, 0xfb, 0xf8, - 0xef, 0xf5, 0xfb, 0xf9, 0xef, 0xf5, 0xfb, 0xf8, 0xef, 0xf5, 0xfc, 0xf9, - 0xef, 0xf5, 0xfc, 0xf8, 0xef, 0xf5, 0xfc, 0xf9, 0xef, 0xf5, 0xfc, 0xf8, - 0xef, 0xf5, 0xfc, 0xf9, 0xef, 0xf5, 0xfd, 0xf8, 0xef, 0xf5, 0xfd, 0xf9, - 0xef, 0xf5, 0xfd, 0xf8, 0xef, 0xf5, 0xfd, 0xf9, 0xef, 0xf5, 0xfe, 0xf8, - 0xef, 0xf5, 0xfe, 0xf9, 0xef, 0xf5, 0xfe, 0xf8, 0xef, 0xf5, 0xfe, 0xf9, - 0xef, 0xf5, 0xfe, 0xf8, 0xef, 0xf5, 0xff, 0xf8, 0xef, 0xf5, 0xff, 0xf8, - 0xef, 0xf5, 0x03, 0xf4, 0x83, 0xf6, 0x0a, 0xf4, 0x83, 0xf6, 0x0f, 0xf4, - 0x83, 0xf6, 0x14, 0xf4, 0x83, 0xf6, 0x17, 0xf4, 0x83, 0xf6, 0x1b, 0xf4, - 0x83, 0xf6, 0x1e, 0xf4, 0x83, 0xf6, 0x20, 0xf4, 0x83, 0xf6, 0x23, 0xf4, - 0x83, 0xf6, 0x25, 0xf4, 0x83, 0xf6, 0x27, 0xf4, 0x83, 0xf6, 0x29, 0xf4, - 0x83, 0xf6, 0x2b, 0xf4, 0x83, 0xf6, 0x2d, 0xf4, 0x83, 0xf6, 0x2f, 0xf4, - 0x83, 0xf6, 0x31, 0xf4, 0x83, 0xf6, 0x32, 0xf4, 0x83, 0xf6, 0x34, 0xf4, - 0x83, 0xf6, 0x35, 0xf4, 0x83, 0xf6, 0x37, 0xf4, 0x83, 0xf6, 0x38, 0xf4, - 0x83, 0xf6, 0x3a, 0xf4, 0x83, 0xf6, 0x3b, 0xf4, 0x83, 0xf6, 0x3c, 0xf4, - 0x83, 0xf6, 0x3e, 0xf4, 0x83, 0xf6, 0x3f, 0xf4, 0x83, 0xf6, 0x40, 0xf4, - 0x83, 0xf6, 0x42, 0xf4, 0x83, 0xf6, 0x43, 0xf4, 0x83, 0xf6, 0x44, 0xf4, - 0x83, 0xf6, 0x45, 0xf4, 0x83, 0xf6, 0x46, 0xf4, 0x83, 0xf6, 0x47, 0xf4, - 0x83, 0xf6, 0x48, 0xf4, 0x83, 0xf6, 0x49, 0xf4, 0x83, 0xf6, 0x4a, 0xf4, - 0x83, 0xf6, 0x4b, 0xf4, 0x83, 0xf6, 0x4c, 0xf4, 0x83, 0xf6, 0x4d, 0xf4, - 0x83, 0xf6, 0x4e, 0xf4, 0x83, 0xf6, 0x4f, 0xf4, 0x83, 0xf6, 0x50, 0xf4, - 0x83, 0xf6, 0x51, 0xf4, 0x83, 0xf6, 0x52, 0xf4, 0x83, 0xf6, 0x53, 0xf4, - 0x83, 0xf6, 0x54, 0xf4, 0x83, 0xf6, 0x55, 0xf4, 0x83, 0xf6, 0x56, 0xf4, - 0x83, 0xf6, 0x57, 0xf4, 0x83, 0xf6, 0x58, 0xf4, 0x83, 0xf6, 0x58, 0xf4, - 0x83, 0xf6, 0x59, 0xf4, 0x83, 0xf6, 0x5a, 0xf4, 0x83, 0xf6, 0x5b, 0xf4, - 0x83, 0xf6, 0x5c, 0xf4, 0x83, 0xf6, 0x5d, 0xf4, 0x83, 0xf6, 0x5d, 0xf4, - 0x83, 0xf6, 0x5e, 0xf4, 0x83, 0xf6, 0x5f, 0xf4, 0x83, 0xf6, 0x60, 0xf4, - 0x83, 0xf6, 0x60, 0xf4, 0x83, 0xf6, 0x61, 0xf4, 0x83, 0xf6, 0x62, 0xf4, - 0x83, 0xf6, 0x63, 0xf4, 0x83, 0xf6, 0x63, 0xf4, 0x83, 0xf6, 0x64, 0xf4, - 0x83, 0xf6, 0x65, 0xf4, 0x83, 0xf6, 0x66, 0xf4, 0x83, 0xf6, 0x66, 0xf4, - 0x83, 0xf6, 0x67, 0xf4, 0x83, 0xf6, 0x68, 0xf4, 0x83, 0xf6, 0x68, 0xf4, - 0x83, 0xf6, 0x69, 0xf4, 0x83, 0xf6, 0x6a, 0xf4, 0x83, 0xf6, 0x6a, 0xf4, - 0x83, 0xf6, 0x6b, 0xf4, 0x83, 0xf6, 0x6c, 0xf4, 0x83, 0xf6, 0x6c, 0xf4, - 0x83, 0xf6, 0x6d, 0xf4, 0x83, 0xf6, 0x6e, 0xf4, 0x83, 0xf6, 0x6e, 0xf4, - 0x83, 0xf6, 0x6f, 0xf4, 0x83, 0xf6, 0x70, 0xf4, 0x83, 0xf6, 0x70, 0xf4, - 0x83, 0xf6, 0x71, 0xf4, 0x83, 0xf6, 0x72, 0xf4, 0x83, 0xf6, 0x72, 0xf4, - 0x83, 0xf6, 0x73, 0xf4, 0x83, 0xf6, 0x73, 0xf4, 0x83, 0xf6, 0x74, 0xf4, - 0x83, 0xf6, 0x75, 0xf4, 0x83, 0xf6, 0x75, 0xf4, 0x83, 0xf6, 0x76, 0xf4, - 0x83, 0xf6, 0x76, 0xf4, 0x83, 0xf6, 0x77, 0xf4, 0x83, 0xf6, 0x78, 0xf4, - 0x83, 0xf6, 0x78, 0xf4, 0x83, 0xf6, 0x79, 0xf4, 0x83, 0xf6, 0x79, 0xf4, - 0x83, 0xf6, 0x7a, 0xf4, 0x83, 0xf6, 0x7a, 0xf4, 0x83, 0xf6, 0x7b, 0xf4, - 0x83, 0xf6, 0x7c, 0xf4, 0x83, 0xf6, 0x7c, 0xf4, 0x83, 0xf6, 0x7d, 0xf4, - 0x83, 0xf6, 0x7d, 0xf4, 0x83, 0xf6, 0x7e, 0xf4, 0x83, 0xf6, 0x7e, 0xf4, - 0x83, 0xf6, 0x7f, 0xf4, 0x83, 0xf6, 0x7f, 0xf4, 0x83, 0xf6, 0x80, 0xf4, - 0x83, 0xf6, 0x81, 0xf4, 0x83, 0xf6, 0x81, 0xf4, 0x83, 0xf6, 0x82, 0xf4, - 0x83, 0xf6, 0x82, 0xf4, 0x83, 0xf6, 0x83, 0xf5, 0x88, 0xf6, 0x83, 0xf5, - 0x88, 0xf6, 0x84, 0xf5, 0x88, 0xf6, 0x84, 0xf5, 0x88, 0xf6, 0x85, 0xf5, - 0x88, 0xf6, 0x85, 0xf5, 0x88, 0xf6, 0x86, 0xf5, 0x88, 0xf6, 0x86, 0xf5, - 0x88, 0xf6, 0x87, 0xf5, 0x88, 0xf6, 0x87, 0xf5, 0x88, 0xf6, 0x88, 0xf5, - 0x88, 0xf6, 0x88, 0xf5, 0x8d, 0xf6, 0x89, 0xf5, 0x8e, 0xf6, 0x89, 0xf5, - 0x8d, 0xf6, 0x8a, 0xf5, 0x8e, 0xf6, 0x8a, 0xf5, 0x8d, 0xf6, 0x8b, 0xf5, - 0x8e, 0xf6, 0x8b, 0xf5, 0x8d, 0xf6, 0x8c, 0xf5, 0x8e, 0xf6, 0x8c, 0xf5, - 0x8d, 0xf6, 0x8d, 0xf5, 0x8e, 0xf6, 0x8d, 0xf5, 0x8d, 0xf6, 0x8e, 0xf5, - 0x8e, 0xf6, 0x8e, 0xf5, 0x8e, 0xf6, 0x8e, 0xf5, 0x92, 0xf6, 0x8f, 0xf5, - 0x93, 0xf6, 0x8f, 0xf5, 0x92, 0xf6, 0x90, 0xf5, 0x93, 0xf6, 0x90, 0xf5, - 0x92, 0xf6, 0x91, 0xf5, 0x93, 0xf6, 0x91, 0xf5, 0x92, 0xf6, 0x92, 0xf5, - 0x93, 0xf6, 0x92, 0xf5, 0x92, 0xf6, 0x93, 0xf5, 0x93, 0xf6, 0x93, 0xf5, - 0x93, 0xf6, 0x94, 0xf6, 0x97, 0xf6, 0x94, 0xf6, 0x98, 0xf6, 0x94, 0xf6, - 0x97, 0xf6, 0x95, 0xf6, 0x98, 0xf6, 0x95, 0xf6, 0x97, 0xf6, 0x96, 0xf6, - 0x98, 0xf6, 0x96, 0xf6, 0x97, 0xf6, 0x97, 0xf6, 0x98, 0xf6, 0x97, 0xf6, - 0x97, 0xf6, 0x98, 0xf6, 0x98, 0xf6, 0x98, 0xf6, 0x98, 0xf6, 0x98, 0xf6, - 0x9c, 0xf6, 0x99, 0xf6, 0x9c, 0xf6, 0x99, 0xf6, 0x9c, 0xf6, 0x9a, 0xf6, - 0x9c, 0xf6, 0x9a, 0xf6, 0x9c, 0xf6, 0x9a, 0xf6, 0x9c, 0xf6, 0x9b, 0xf6, - 0x9c, 0xf6, 0x9b, 0xf6, 0x9c, 0xf6, 0x9c, 0xf6, 0x9c, 0xf6, 0x9c, 0xf6, - 0x9c, 0xf6, 0x9d, 0xf6, 0x9d, 0xf6, 0x9d, 0xf7, 0xa0, 0xf6, 0x9d, 0xf7, - 0xa1, 0xf6, 0x9e, 0xf7, 0xa0, 0xf6, 0x9e, 0xf7, 0xa1, 0xf6, 0x9f, 0xf7, - 0xa0, 0xf6, 0x9f, 0xf7, 0xa1, 0xf6, 0x9f, 0xf7, 0xa0, 0xf6, 0xa0, 0xf7, - 0xa1, 0xf6, 0xa0, 0xf7, 0xa0, 0xf6, 0xa1, 0xf7, 0xa1, 0xf6, 0xa1, 0xf7, - 0xa1, 0xf6, 0xa1, 0xf7, 0xa5, 0xf6, 0xa2, 0xf7, 0xa5, 0xf6, 0xa2, 0xf7, - 0xa5, 0xf6, 0xa3, 0xf7, 0xa5, 0xf6, 0xa3, 0xf7, 0xa5, 0xf6, 0xa3, 0xf7, - 0xa5, 0xf6, 0xa4, 0xf7, 0xa5, 0xf6, 0xa4, 0xf7, 0xa5, 0xf6, 0xa5, 0xf7, - 0xa5, 0xf6, 0xa5, 0xf7, 0xa5, 0xf6, 0xa5, 0xf7, 0xa5, 0xf6, 0xa6, 0xf7, - 0xa6, 0xf6, 0xa6, 0xf7, 0xa6, 0xf6, 0xa6, 0xf8, 0xa9, 0xf6, 0xa7, 0xf8, - 0xa9, 0xf6, 0xa7, 0xf8, 0xa9, 0xf6, 0xa8, 0xf8, 0xa9, 0xf6, 0xa8, 0xf8, - 0xa9, 0xf6, 0xa8, 0xf8, 0xa9, 0xf6, 0xa9, 0xf8, 0xa9, 0xf6, 0xa9, 0xf8, - 0xa9, 0xf6, 0xaa, 0xf8, 0xaa, 0xf6, 0xaa, 0xf8, 0xaa, 0xf6, 0xaa, 0xf8, - 0xaa, 0xf6, 0xab, 0xf8, 0xad, 0xf6, 0xab, 0xf8, 0xad, 0xf6, 0xab, 0xf8, - 0xad, 0xf6, 0xac, 0xf8, 0xad, 0xf6, 0xac, 0xf8, 0xad, 0xf6, 0xac, 0xf8, - 0xad, 0xf6, 0xad, 0xf8, 0xad, 0xf6, 0xad, 0xf8, 0xad, 0xf6, 0xae, 0xf8, - 0xae, 0xf6, 0xae, 0xf8, 0xae, 0xf6, 0xae, 0xf8, 0xae, 0xf6, 0xaf, 0xf9, - 0xb1, 0xf6, 0xaf, 0xf9, 0xb1, 0xf6, 0xaf, 0xf9, 0xb1, 0xf6, 0xb0, 0xf9, - 0xb1, 0xf6, 0xb0, 0xf9, 0xb1, 0xf6, 0xb0, 0xf9, 0xb1, 0xf6, 0xb1, 0xf9, - 0xb1, 0xf6, 0xb1, 0xf9, 0xb1, 0xf6, 0xb2, 0xf9, 0xb2, 0xf6, 0xb2, 0xf9, - 0xb2, 0xf6, 0xb2, 0xf9, 0xb2, 0xf6, 0xb3, 0xf9, 0xb3, 0xf6, 0xb3, 0xf9, - 0xb3, 0xf6, 0xb3, 0xf9, 0xb5, 0xf6, 0xb4, 0xf9, 0xb5, 0xf6, 0xb4, 0xf9, - 0xb5, 0xf6, 0xb4, 0xf9, 0xb5, 0xf6, 0xb5, 0xf9, 0xb5, 0xf6, 0xb5, 0xf9, - 0xb5, 0xf6, 0xb5, 0xf9, 0xb5, 0xf6, 0xb6, 0xf9, 0xb6, 0xf6, 0xb6, 0xf9, - 0xb6, 0xf6, 0xb6, 0xf9, 0xb6, 0xf6, 0xb7, 0xf9, 0xb7, 0xf6, 0xb7, 0xfa, - 0xb8, 0xf6, 0xb7, 0xfa, 0xb9, 0xf6, 0xb8, 0xfa, 0xb8, 0xf6, 0xb8, 0xfa, - 0xb9, 0xf6, 0xb8, 0xfa, 0xb8, 0xf6, 0xb9, 0xfa, 0xb9, 0xf6, 0xb9, 0xfa, - 0xb9, 0xf6, 0xb9, 0xfa, 0xb9, 0xf6, 0xba, 0xfa, 0xba, 0xf6, 0xba, 0xfa, - 0xba, 0xf6, 0xba, 0xfa, 0xba, 0xf6, 0xbb, 0xfa, 0xbc, 0xf6, 0xbb, 0xfa, - 0xbc, 0xf6, 0xbb, 0xfa, 0xbc, 0xf6, 0xbc, 0xfa, 0xbc, 0xf6, 0xbc, 0xfa, - 0xbc, 0xf6, 0xbc, 0xfa, 0xbc, 0xf6, 0xbd, 0xfa, 0xbd, 0xf6, 0xbd, 0xfa, - 0xbd, 0xf6, 0xbd, 0xfa, 0xbd, 0xf6, 0xbe, 0xfa, 0xbe, 0xf6, 0xbe, 0xfa, - 0xbe, 0xf6, 0xbe, 0xfa, 0xbe, 0xf6, 0xbf, 0xfa, 0xbf, 0xf6, 0xbf, 0xfa, - 0xc0, 0xf6, 0xbf, 0xfa, 0xc0, 0xf6, 0xc0, 0xfa, 0xc0, 0xf6, 0xc0, 0xfa, - 0xc0, 0xf6, 0xc0, 0xfa, 0xc0, 0xf6, 0xc1, 0xfa, 0xc1, 0xf6, 0xc1, 0xfa, - 0xc1, 0xf6, 0xc1, 0xfa, 0xc1, 0xf6, 0xc1, 0xfa, 0xc1, 0xf6, 0xc2, 0xfa, - 0xc2, 0xf6, 0xc2, 0xfa, 0xc2, 0xf6, 0xc2, 0xfa, 0xc2, 0xf6, 0xc3, 0xfa, - 0xc3, 0xf6, 0xc3, 0xfb, 0xc3, 0xf7, 0xc3, 0xfb, 0xc3, 0xf7, 0xc4, 0xfb, - 0xc4, 0xf7, 0xc4, 0xfb, 0xc4, 0xf7, 0xc4, 0xfb, 0xc4, 0xf7, 0xc5, 0xfb, - 0xc5, 0xf7, 0xc5, 0xfb, 0xc5, 0xf7, 0xc5, 0xfb, 0xc5, 0xf7, 0xc6, 0xfb, - 0xc6, 0xf7, 0xc6, 0xfb, 0xc6, 0xf7, 0xc6, 0xfb, 0xc6, 0xf7, 0xc6, 0xfb, - 0xc6, 0xf7, 0xc6, 0xfb, 0xc7, 0xf7, 0xc7, 0xfb, 0xc7, 0xf8, 0xc7, 0xfb, - 0xc7, 0xf8, 0xc8, 0xfb, 0xc8, 0xf8, 0xc8, 0xfb, 0xc8, 0xf8, 0xc8, 0xfb, - 0xc8, 0xf8, 0xc9, 0xfb, 0xc9, 0xf8, 0xc9, 0xfb, 0xc9, 0xf6, 0xca, 0xfb, - 0xc9, 0xf6, 0xc9, 0xfa, 0xc9, 0xf6, 0xca, 0xfb, 0xc9, 0xf6, 0xca, 0xfb, - 0xca, 0xf6, 0xca, 0xfb, 0xca, 0xf6, 0xcb, 0xfb, 0xcb, 0xf6, 0xcb, 0xfb, - 0xcb, 0xf6, 0xcb, 0xfb, 0xcb, 0xf6, 0xcc, 0xfb, 0xcc, 0xf6, 0xcc, 0xfb, - 0xcc, 0xf6, 0xcc, 0xfb, 0xcc, 0xf6, 0xcc, 0xfb, 0xcc, 0xf6, 0xcd, 0xfb, - 0xcc, 0xf6, 0xcd, 0xfb, 0xcc, 0xf6, 0xcd, 0xfc, 0xcd, 0xf6, 0xce, 0xfc, - 0xce, 0xf6, 0xce, 0xfc, 0xce, 0xf6, 0xce, 0xfc, 0xce, 0xf6, 0xce, 0xfc, - 0xce, 0xf6, 0xcf, 0xfc, 0xcf, 0xf6, 0xcf, 0xfc, 0xcf, 0xf6, 0xcf, 0xfc, - 0xcf, 0xf6, 0xd0, 0xfc, 0xd0, 0xf6, 0xd0, 0xfc, 0xcf, 0xf6, 0xd0, 0xfc, - 0xd0, 0xf6, 0xd0, 0xfc, 0xcf, 0xf6, 0xd1, 0xfc, 0xd0, 0xf6, 0xd1, 0xfc, - 0xd1, 0xf6, 0xd1, 0xfc, 0xd1, 0xf6, 0xd2, 0xfc, 0xd2, 0xf6, 0xd2, 0xfc, - 0xd2, 0xf6, 0xd2, 0xfc, 0xd2, 0xf6, 0xd2, 0xfc, 0xd2, 0xf6, 0xd3, 0xfc, - 0xd3, 0xf6, 0xd3, 0xfc, 0xd2, 0xf6, 0xd3, 0xfc, 0xd3, 0xf6, 0xd4, 0xfc, - 0xd2, 0xf6, 0xd4, 0xfc, 0xd3, 0xf6, 0xd4, 0xfd, 0xd4, 0xf6, 0xd4, 0xfd, - 0xd4, 0xf6, 0xd5, 0xfd, 0xd5, 0xf6, 0xd5, 0xfd, 0xd5, 0xf6, 0xd5, 0xfd, - 0xd5, 0xf6, 0xd6, 0xfd, 0xd6, 0xf6, 0xd6, 0xfd, 0xd6, 0xf6, 0xd6, 0xfd, - 0xd6, 0xf6, 0xd6, 0xfd, 0xd6, 0xf6, 0xd7, 0xfd, 0xd6, 0xf6, 0xd7, 0xfd, - 0xd6, 0xf6, 0xd7, 0xfd, 0xd7, 0xf6, 0xd7, 0xfd, 0xd7, 0xf6, 0xd8, 0xfd, - 0xd8, 0xf6, 0xd8, 0xfd, 0xd8, 0xf6, 0xd8, 0xfd, 0xd8, 0xf6, 0xd9, 0xfd, - 0xd9, 0xf6, 0xd9, 0xfd, 0xd9, 0xf6, 0xd9, 0xfd, 0xd9, 0xf6, 0xd9, 0xfd, - 0xd9, 0xf6, 0xda, 0xfd, 0xd9, 0xf6, 0xda, 0xfd, 0xd9, 0xf6, 0xda, 0xfd, - 0xd9, 0xf6, 0xda, 0xfd, 0xd9, 0xf6, 0xdb, 0xfe, 0xdb, 0xf6, 0xdb, 0xfe, - 0xdb, 0xf6, 0xdb, 0xfe, 0xdb, 0xf6, 0xdb, 0xfe, 0xdb, 0xf6, 0xdc, 0xfe, - 0xdc, 0xf6, 0xdc, 0xfe, 0xdb, 0xf6, 0xdc, 0xfe, 0xdc, 0xf6, 0xdd, 0xfe, - 0xdb, 0xf6, 0xdd, 0xfe, 0xdc, 0xf6, 0xdd, 0xfe, 0xdb, 0xf6, 0xdd, 0xfe, - 0xdc, 0xf6, 0xde, 0xfe, 0xde, 0xf6, 0xde, 0xfe, 0xde, 0xf6, 0xde, 0xfe, - 0xde, 0xf6, 0xde, 0xfe, 0xde, 0xf6, 0xdf, 0xfe, 0xdf, 0xf6, 0xdf, 0xfe, - 0xde, 0xf6, 0xdf, 0xfb, 0xe3, 0xf6, 0xdf, 0xfc, 0xe3, 0xf6, 0xe0, 0xfb, - 0xe3, 0xf6, 0xe0, 0xfc, 0xe3, 0xf6, 0xe0, 0xfb, 0xe3, 0xf6, 0xe1, 0xfc, - 0xe3, 0xf6, 0xe1, 0xfb, 0xe3, 0xf6, 0xe1, 0xfc, 0xe3, 0xf6, 0xe1, 0xfb, - 0xe3, 0xf6, 0xe2, 0xfc, 0xe3, 0xf6, 0xe2, 0xfb, 0xe3, 0xf6, 0xe2, 0xfb, - 0xe3, 0xf6, 0xe2, 0xfb, 0xe3, 0xf6, 0xe3, 0xfb, 0xe3, 0xf6, 0xe3, 0xfb, - 0xe3, 0xf5, 0xe3, 0xfb, 0xe3, 0xf6, 0xe3, 0xfb, 0xe3, 0xf5, 0xe3, 0xfb, - 0xe4, 0xf6, 0xe5, 0xfb, 0xe4, 0xf6, 0xe5, 0xfb, 0xe4, 0xf6, 0xe5, 0xfb, - 0xe4, 0xf6, 0xe5, 0xfb, 0xe5, 0xf6, 0xe5, 0xfb, 0xe4, 0xf6, 0xe5, 0xfb, - 0xe5, 0xf6, 0xe5, 0xfb, 0xe4, 0xf6, 0xe6, 0xfb, 0xe5, 0xf6, 0xe6, 0xfa, - 0xe5, 0xf6, 0xe6, 0xfb, 0xe5, 0xf6, 0xe6, 0xfa, 0xe5, 0xf6, 0xe7, 0xfb, - 0xe5, 0xf6, 0xe7, 0xfa, 0xe5, 0xf6, 0xe7, 0xfb, 0xe5, 0xf6, 0xe7, 0xfa, - 0xe5, 0xf6, 0xe8, 0xfb, 0xe5, 0xf6, 0xe8, 0xfa, 0xe5, 0xf6, 0xe8, 0xfb, - 0xe5, 0xf6, 0xe8, 0xfa, 0xe5, 0xf6, 0xe9, 0xfb, 0xe5, 0xf6, 0xe9, 0xfa, - 0xe5, 0xf6, 0xe9, 0xfb, 0xe5, 0xf6, 0xe9, 0xfa, 0xe5, 0xf6, 0xea, 0xfb, - 0xe5, 0xf6, 0xea, 0xfd, 0xee, 0xf6, 0xea, 0xfb, 0xee, 0xf6, 0xea, 0xfd, - 0xee, 0xf6, 0xeb, 0xfb, 0xee, 0xf6, 0xeb, 0xfb, 0xef, 0xf6, 0xeb, 0xfb, - 0xee, 0xf6, 0xeb, 0xfb, 0xef, 0xf6, 0xec, 0xfb, 0xee, 0xf6, 0xec, 0xfb, - 0xef, 0xf6, 0xec, 0xfb, 0xee, 0xf6, 0xec, 0xfb, 0xef, 0xf6, 0xec, 0xfb, - 0xee, 0xf6, 0xed, 0xfb, 0xef, 0xf6, 0xed, 0xfb, 0xee, 0xf6, 0xed, 0xfb, - 0xef, 0xf6, 0xed, 0xfb, 0xee, 0xf6, 0xee, 0xfb, 0xef, 0xf6, 0xee, 0xfb, - 0xee, 0xf6, 0xee, 0xfb, 0xef, 0xf6, 0xee, 0xfb, 0xee, 0xf6, 0xee, 0xfb, - 0xef, 0xf6, 0xee, 0xfb, 0xef, 0xf6, 0xef, 0xfb, 0xef, 0xf6, 0xef, 0xfb, - 0xef, 0xf6, 0xf0, 0xfb, 0xef, 0xf6, 0xf0, 0xfb, 0xef, 0xf6, 0xf0, 0xfb, - 0xef, 0xf6, 0xf0, 0xfb, 0xef, 0xf6, 0xf1, 0xfb, 0xef, 0xf6, 0xf1, 0xfb, - 0xef, 0xf6, 0xf1, 0xfa, 0xef, 0xf6, 0xf1, 0xfb, 0xef, 0xf6, 0xf2, 0xfa, - 0xef, 0xf6, 0xf2, 0xfb, 0xef, 0xf6, 0xf2, 0xfa, 0xef, 0xf6, 0xf2, 0xfb, - 0xef, 0xf6, 0xf2, 0xfa, 0xef, 0xf6, 0xf3, 0xfb, 0xef, 0xf6, 0xf3, 0xfa, - 0xef, 0xf6, 0xf3, 0xfb, 0xef, 0xf6, 0xf3, 0xfa, 0xef, 0xf6, 0xf4, 0xfb, - 0xef, 0xf6, 0xf4, 0xfa, 0xef, 0xf6, 0xf4, 0xfb, 0xef, 0xf6, 0xf4, 0xfa, - 0xef, 0xf6, 0xf5, 0xfb, 0xef, 0xf6, 0xf5, 0xfa, 0xef, 0xf6, 0xf5, 0xfb, - 0xef, 0xf6, 0xf5, 0xfa, 0xef, 0xf6, 0xf5, 0xfb, 0xef, 0xf6, 0xf6, 0xfa, - 0xef, 0xf6, 0xf6, 0xfb, 0xef, 0xf6, 0xf6, 0xfa, 0xef, 0xf6, 0xf6, 0xfb, - 0xef, 0xf6, 0xf7, 0xfa, 0xef, 0xf6, 0xf7, 0xfb, 0xef, 0xf6, 0xf7, 0xfa, - 0xef, 0xf6, 0xf7, 0xfb, 0xef, 0xf6, 0xf8, 0xfa, 0xef, 0xf6, 0xf8, 0xf8, - 0xef, 0xf6, 0xf8, 0xfa, 0xef, 0xf6, 0xf8, 0xf8, 0xef, 0xf6, 0xf8, 0xfa, - 0xef, 0xf6, 0xf9, 0xf8, 0xef, 0xf6, 0xf9, 0xfa, 0xef, 0xf6, 0xf9, 0xf8, - 0xef, 0xf6, 0xf9, 0xfa, 0xef, 0xf6, 0xfa, 0xf8, 0xef, 0xf6, 0xfa, 0xfa, - 0xef, 0xf6, 0xfa, 0xf8, 0xef, 0xf6, 0xfa, 0xfa, 0xef, 0xf6, 0xfa, 0xf8, - 0xef, 0xf6, 0xfb, 0xfa, 0xef, 0xf6, 0xfb, 0xf8, 0xef, 0xf6, 0xfb, 0xfa, - 0xef, 0xf6, 0xfb, 0xf8, 0xef, 0xf6, 0xfc, 0xfa, 0xef, 0xf6, 0xfc, 0xf8, - 0xef, 0xf6, 0xfc, 0xfa, 0xef, 0xf6, 0xfc, 0xf8, 0xef, 0xf6, 0xfc, 0xfa, - 0xef, 0xf6, 0xfd, 0xf8, 0xef, 0xf6, 0xfd, 0xfa, 0xef, 0xf6, 0xfd, 0xf8, - 0xef, 0xf6, 0xfd, 0xfa, 0xef, 0xf6, 0xfe, 0xf8, 0xef, 0xf6, 0xfe, 0xfa, - 0xef, 0xf6, 0xfe, 0xf8, 0xef, 0xf6, 0xfe, 0xfa, 0xef, 0xf6, 0xfe, 0xf8, - 0xef, 0xf6, 0xff, 0xf8, 0xef, 0xf6, 0xff, 0xf8, 0xef, 0xf6, 0x03, 0xf4, - 0x83, 0xf6, 0x0a, 0xf4, 0x83, 0xf6, 0x0f, 0xf4, 0x83, 0xf6, 0x14, 0xf4, - 0x83, 0xf6, 0x17, 0xf4, 0x83, 0xf6, 0x1b, 0xf4, 0x83, 0xf6, 0x1e, 0xf4, - 0x83, 0xf6, 0x20, 0xf4, 0x83, 0xf6, 0x23, 0xf4, 0x83, 0xf6, 0x25, 0xf4, - 0x83, 0xf6, 0x27, 0xf4, 0x83, 0xf6, 0x29, 0xf4, 0x83, 0xf6, 0x2b, 0xf4, - 0x83, 0xf6, 0x2d, 0xf4, 0x83, 0xf6, 0x2f, 0xf4, 0x83, 0xf6, 0x31, 0xf4, - 0x83, 0xf6, 0x32, 0xf4, 0x83, 0xf6, 0x34, 0xf4, 0x83, 0xf6, 0x35, 0xf4, - 0x83, 0xf6, 0x37, 0xf4, 0x83, 0xf6, 0x38, 0xf4, 0x83, 0xf6, 0x3a, 0xf4, - 0x83, 0xf6, 0x3b, 0xf4, 0x83, 0xf6, 0x3c, 0xf4, 0x83, 0xf6, 0x3e, 0xf4, - 0x83, 0xf6, 0x3f, 0xf4, 0x83, 0xf6, 0x40, 0xf4, 0x83, 0xf6, 0x42, 0xf4, - 0x83, 0xf6, 0x43, 0xf4, 0x83, 0xf6, 0x44, 0xf4, 0x83, 0xf6, 0x45, 0xf4, - 0x83, 0xf6, 0x46, 0xf4, 0x83, 0xf6, 0x47, 0xf4, 0x83, 0xf6, 0x48, 0xf4, - 0x83, 0xf6, 0x49, 0xf4, 0x83, 0xf6, 0x4a, 0xf4, 0x83, 0xf6, 0x4b, 0xf4, - 0x83, 0xf6, 0x4c, 0xf4, 0x83, 0xf6, 0x4d, 0xf4, 0x83, 0xf6, 0x4e, 0xf4, - 0x83, 0xf6, 0x4f, 0xf4, 0x83, 0xf6, 0x50, 0xf4, 0x83, 0xf6, 0x51, 0xf4, - 0x83, 0xf6, 0x52, 0xf4, 0x83, 0xf6, 0x53, 0xf4, 0x83, 0xf6, 0x54, 0xf4, - 0x83, 0xf6, 0x55, 0xf4, 0x83, 0xf6, 0x56, 0xf4, 0x83, 0xf6, 0x57, 0xf4, - 0x83, 0xf6, 0x58, 0xf4, 0x83, 0xf6, 0x58, 0xf4, 0x83, 0xf6, 0x59, 0xf4, - 0x83, 0xf6, 0x5a, 0xf4, 0x83, 0xf6, 0x5b, 0xf4, 0x83, 0xf6, 0x5c, 0xf4, - 0x83, 0xf6, 0x5d, 0xf4, 0x83, 0xf6, 0x5d, 0xf4, 0x83, 0xf6, 0x5e, 0xf4, - 0x83, 0xf6, 0x5f, 0xf4, 0x83, 0xf6, 0x60, 0xf4, 0x83, 0xf6, 0x60, 0xf4, - 0x83, 0xf6, 0x61, 0xf4, 0x83, 0xf6, 0x62, 0xf4, 0x83, 0xf6, 0x63, 0xf4, - 0x83, 0xf6, 0x63, 0xf4, 0x83, 0xf6, 0x64, 0xf4, 0x83, 0xf6, 0x65, 0xf4, - 0x83, 0xf6, 0x66, 0xf4, 0x83, 0xf6, 0x66, 0xf4, 0x83, 0xf6, 0x67, 0xf4, - 0x83, 0xf6, 0x68, 0xf4, 0x83, 0xf6, 0x68, 0xf4, 0x83, 0xf6, 0x69, 0xf4, - 0x83, 0xf6, 0x6a, 0xf4, 0x83, 0xf6, 0x6a, 0xf4, 0x83, 0xf6, 0x6b, 0xf4, - 0x83, 0xf6, 0x6c, 0xf4, 0x83, 0xf6, 0x6c, 0xf4, 0x83, 0xf6, 0x6d, 0xf4, - 0x83, 0xf6, 0x6e, 0xf4, 0x83, 0xf6, 0x6e, 0xf4, 0x83, 0xf6, 0x6f, 0xf4, - 0x83, 0xf6, 0x70, 0xf4, 0x83, 0xf6, 0x70, 0xf4, 0x83, 0xf6, 0x71, 0xf4, - 0x83, 0xf6, 0x72, 0xf4, 0x83, 0xf6, 0x72, 0xf4, 0x83, 0xf6, 0x73, 0xf4, - 0x83, 0xf6, 0x73, 0xf4, 0x83, 0xf6, 0x74, 0xf4, 0x83, 0xf6, 0x75, 0xf4, - 0x83, 0xf6, 0x75, 0xf4, 0x83, 0xf6, 0x76, 0xf4, 0x83, 0xf6, 0x76, 0xf4, - 0x83, 0xf6, 0x77, 0xf4, 0x83, 0xf6, 0x78, 0xf4, 0x83, 0xf6, 0x78, 0xf4, - 0x83, 0xf6, 0x79, 0xf4, 0x83, 0xf6, 0x79, 0xf4, 0x83, 0xf6, 0x7a, 0xf4, - 0x83, 0xf6, 0x7a, 0xf4, 0x83, 0xf6, 0x7b, 0xf4, 0x83, 0xf6, 0x7c, 0xf4, - 0x83, 0xf6, 0x7c, 0xf4, 0x83, 0xf6, 0x7d, 0xf4, 0x85, 0xf6, 0x7d, 0xf4, - 0x83, 0xf6, 0x7e, 0xf4, 0x85, 0xf6, 0x7e, 0xf4, 0x83, 0xf6, 0x7f, 0xf4, - 0x85, 0xf6, 0x7f, 0xf4, 0x86, 0xf6, 0x80, 0xf4, 0x85, 0xf6, 0x81, 0xf4, - 0x86, 0xf6, 0x81, 0xf4, 0x85, 0xf6, 0x82, 0xf4, 0x86, 0xf6, 0x82, 0xf4, - 0x85, 0xf6, 0x83, 0xf4, 0x86, 0xf6, 0x83, 0xf4, 0x85, 0xf6, 0x84, 0xf4, - 0x86, 0xf6, 0x84, 0xf4, 0x85, 0xf6, 0x85, 0xf4, 0x86, 0xf6, 0x85, 0xf4, - 0x85, 0xf6, 0x86, 0xf5, 0x8b, 0xf6, 0x86, 0xf5, 0x8b, 0xf6, 0x87, 0xf5, - 0x8b, 0xf6, 0x87, 0xf5, 0x8b, 0xf6, 0x88, 0xf5, 0x8b, 0xf6, 0x88, 0xf5, - 0x8b, 0xf6, 0x89, 0xf5, 0x8b, 0xf6, 0x89, 0xf5, 0x8b, 0xf6, 0x8a, 0xf5, - 0x8b, 0xf6, 0x8a, 0xf5, 0x8b, 0xf6, 0x8b, 0xf5, 0x8b, 0xf6, 0x8b, 0xf5, - 0x90, 0xf6, 0x8c, 0xf5, 0x90, 0xf6, 0x8c, 0xf5, 0x90, 0xf6, 0x8d, 0xf5, - 0x90, 0xf6, 0x8d, 0xf5, 0x90, 0xf6, 0x8e, 0xf5, 0x90, 0xf6, 0x8e, 0xf5, - 0x90, 0xf6, 0x8e, 0xf5, 0x90, 0xf6, 0x8f, 0xf5, 0x90, 0xf6, 0x8f, 0xf5, - 0x90, 0xf6, 0x90, 0xf5, 0x90, 0xf6, 0x90, 0xf5, 0x90, 0xf6, 0x91, 0xf5, - 0x91, 0xf6, 0x91, 0xf6, 0x95, 0xf6, 0x92, 0xf6, 0x95, 0xf6, 0x92, 0xf6, - 0x95, 0xf6, 0x93, 0xf6, 0x95, 0xf6, 0x93, 0xf6, 0x95, 0xf6, 0x94, 0xf6, - 0x95, 0xf6, 0x94, 0xf6, 0x95, 0xf6, 0x94, 0xf6, 0x95, 0xf6, 0x95, 0xf6, - 0x95, 0xf6, 0x95, 0xf6, 0x95, 0xf6, 0x96, 0xf6, 0x96, 0xf6, 0x96, 0xf6, - 0x9a, 0xf6, 0x97, 0xf6, 0x9a, 0xf6, 0x97, 0xf6, 0x9a, 0xf6, 0x98, 0xf6, - 0x9a, 0xf6, 0x98, 0xf6, 0x9a, 0xf6, 0x98, 0xf6, 0x9a, 0xf6, 0x99, 0xf6, - 0x9a, 0xf6, 0x99, 0xf6, 0x9a, 0xf6, 0x9a, 0xf6, 0x9a, 0xf6, 0x9a, 0xf6, - 0x9a, 0xf6, 0x9a, 0xf6, 0x9a, 0xf6, 0x9b, 0xf7, 0x9e, 0xf6, 0x9b, 0xf7, - 0x9f, 0xf6, 0x9c, 0xf7, 0x9e, 0xf6, 0x9c, 0xf7, 0x9f, 0xf6, 0x9d, 0xf7, - 0x9e, 0xf6, 0x9d, 0xf7, 0x9f, 0xf6, 0x9d, 0xf7, 0x9e, 0xf6, 0x9e, 0xf7, - 0x9f, 0xf6, 0x9e, 0xf7, 0x9e, 0xf6, 0x9f, 0xf7, 0x9f, 0xf6, 0x9f, 0xf7, - 0x9f, 0xf6, 0x9f, 0xf7, 0xa3, 0xf6, 0xa0, 0xf7, 0xa3, 0xf6, 0xa0, 0xf7, - 0xa3, 0xf6, 0xa1, 0xf7, 0xa3, 0xf6, 0xa1, 0xf7, 0xa3, 0xf6, 0xa1, 0xf7, - 0xa3, 0xf6, 0xa2, 0xf7, 0xa3, 0xf6, 0xa2, 0xf7, 0xa3, 0xf6, 0xa3, 0xf7, - 0xa3, 0xf6, 0xa3, 0xf7, 0xa3, 0xf6, 0xa3, 0xf7, 0xa3, 0xf6, 0xa4, 0xf8, - 0xa7, 0xf6, 0xa4, 0xf8, 0xa7, 0xf6, 0xa5, 0xf8, 0xa7, 0xf6, 0xa5, 0xf8, - 0xa7, 0xf6, 0xa5, 0xf8, 0xa7, 0xf6, 0xa6, 0xf8, 0xa7, 0xf6, 0xa6, 0xf8, - 0xa7, 0xf6, 0xa6, 0xf8, 0xa7, 0xf6, 0xa7, 0xf8, 0xa7, 0xf6, 0xa7, 0xf8, - 0xa9, 0xf6, 0xa8, 0xf8, 0xa9, 0xf6, 0xa8, 0xf8, 0xa9, 0xf6, 0xa8, 0xf8, - 0xa9, 0xf6, 0xa9, 0xf8, 0xa9, 0xf6, 0xa9, 0xf8, 0xa9, 0xf6, 0xaa, 0xf8, - 0xab, 0xf6, 0xaa, 0xf8, 0xab, 0xf6, 0xaa, 0xf8, 0xab, 0xf6, 0xab, 0xf8, - 0xab, 0xf6, 0xab, 0xf8, 0xab, 0xf6, 0xab, 0xf8, 0xab, 0xf6, 0xac, 0xf8, - 0xac, 0xf6, 0xac, 0xf8, 0xac, 0xf6, 0xac, 0xf8, 0xac, 0xf6, 0xad, 0xf8, - 0xaf, 0xf6, 0xad, 0xf8, 0xaf, 0xf6, 0xae, 0xf8, 0xaf, 0xf6, 0xae, 0xf8, - 0xaf, 0xf6, 0xae, 0xf8, 0xaf, 0xf6, 0xaf, 0xf8, 0xaf, 0xf6, 0xaf, 0xf8, - 0xaf, 0xf6, 0xaf, 0xf8, 0xaf, 0xf6, 0xb0, 0xf8, 0xb0, 0xf6, 0xb0, 0xf8, - 0xb0, 0xf6, 0xb0, 0xf8, 0xb0, 0xf6, 0xb1, 0xf9, 0xb3, 0xf6, 0xb1, 0xf9, - 0xb3, 0xf6, 0xb2, 0xf9, 0xb3, 0xf6, 0xb2, 0xf9, 0xb3, 0xf6, 0xb2, 0xf9, - 0xb3, 0xf6, 0xb3, 0xf9, 0xb3, 0xf6, 0xb3, 0xf9, 0xb3, 0xf6, 0xb3, 0xf9, - 0xb3, 0xf6, 0xb4, 0xf9, 0xb4, 0xf6, 0xb4, 0xf9, 0xb4, 0xf6, 0xb4, 0xf9, - 0xb4, 0xf6, 0xb5, 0xf9, 0xb5, 0xf6, 0xb5, 0xf9, 0xb5, 0xf6, 0xb5, 0xf9, - 0xb7, 0xf6, 0xb6, 0xf9, 0xb7, 0xf6, 0xb6, 0xf9, 0xb7, 0xf6, 0xb6, 0xf9, - 0xb7, 0xf6, 0xb7, 0xf9, 0xb7, 0xf6, 0xb7, 0xf9, 0xb7, 0xf6, 0xb7, 0xf9, - 0xb7, 0xf6, 0xb8, 0xf9, 0xb8, 0xf6, 0xb8, 0xf9, 0xb8, 0xf6, 0xb8, 0xf9, - 0xb8, 0xf6, 0xb9, 0xf9, 0xb9, 0xf6, 0xb9, 0xfa, 0xba, 0xf6, 0xb9, 0xfa, - 0xbb, 0xf6, 0xba, 0xfa, 0xba, 0xf6, 0xba, 0xfa, 0xbb, 0xf6, 0xba, 0xfa, - 0xba, 0xf6, 0xbb, 0xfa, 0xbb, 0xf6, 0xbb, 0xfa, 0xbb, 0xf6, 0xbb, 0xfa, - 0xbb, 0xf6, 0xbc, 0xfa, 0xbc, 0xf6, 0xbc, 0xfa, 0xbc, 0xf6, 0xbc, 0xfa, - 0xbc, 0xf6, 0xbd, 0xfa, 0xbe, 0xf6, 0xbd, 0xfa, 0xbe, 0xf6, 0xbd, 0xfa, - 0xbe, 0xf6, 0xbe, 0xfa, 0xbe, 0xf6, 0xbe, 0xfa, 0xbe, 0xf6, 0xbe, 0xfa, - 0xbe, 0xf6, 0xbf, 0xfa, 0xbf, 0xf6, 0xbf, 0xfa, 0xbf, 0xf6, 0xbf, 0xfa, - 0xbf, 0xf6, 0xc0, 0xfa, 0xc0, 0xf6, 0xc0, 0xfa, 0xc0, 0xf6, 0xc0, 0xfa, - 0xc0, 0xf6, 0xc1, 0xfa, 0xc1, 0xf6, 0xc1, 0xfb, 0xc1, 0xf6, 0xc1, 0xfb, - 0xc2, 0xf6, 0xc1, 0xfb, 0xc1, 0xf6, 0xc2, 0xfb, 0xc2, 0xf6, 0xc2, 0xfb, - 0xc2, 0xf6, 0xc2, 0xfb, 0xc2, 0xf6, 0xc3, 0xfb, 0xc3, 0xf6, 0xc3, 0xfb, - 0xc3, 0xf6, 0xc3, 0xfb, 0xc3, 0xf6, 0xc4, 0xfb, 0xc4, 0xf6, 0xc4, 0xfb, - 0xc4, 0xf6, 0xc4, 0xfb, 0xc4, 0xf6, 0xc5, 0xfb, 0xc5, 0xf6, 0xc5, 0xfb, - 0xc5, 0xf7, 0xc5, 0xfb, 0xc5, 0xf7, 0xc6, 0xfb, 0xc6, 0xf7, 0xc6, 0xfb, - 0xc6, 0xf7, 0xc6, 0xfb, 0xc6, 0xf7, 0xc6, 0xfb, 0xc6, 0xf7, 0xc7, 0xfb, - 0xc7, 0xf7, 0xc7, 0xfb, 0xc7, 0xf7, 0xc7, 0xfb, 0xc7, 0xf7, 0xc8, 0xfb, - 0xc8, 0xf7, 0xc8, 0xfb, 0xc8, 0xf7, 0xc8, 0xfb, 0xc8, 0xf7, 0xc8, 0xfb, - 0xc9, 0xf7, 0xc9, 0xfb, 0xc9, 0xf8, 0xca, 0xfb, 0xc9, 0xf5, 0xca, 0xfb, - 0xc9, 0xf5, 0xca, 0xfb, 0xca, 0xf5, 0xca, 0xfb, 0xca, 0xf5, 0xca, 0xfb, - 0xca, 0xf5, 0xcb, 0xfb, 0xcb, 0xf5, 0xcb, 0xfb, 0xcb, 0xf5, 0xcb, 0xfc, - 0xcb, 0xf6, 0xcc, 0xfc, 0xcc, 0xf6, 0xcc, 0xfc, 0xcc, 0xf6, 0xcc, 0xfc, - 0xcc, 0xf6, 0xcc, 0xfc, 0xcc, 0xf6, 0xcd, 0xfc, 0xcd, 0xf6, 0xcd, 0xfc, - 0xcd, 0xf6, 0xcd, 0xfc, 0xcd, 0xf6, 0xce, 0xfc, 0xce, 0xf6, 0xce, 0xfc, - 0xce, 0xf6, 0xce, 0xfc, 0xce, 0xf6, 0xce, 0xfc, 0xce, 0xf6, 0xcf, 0xfc, - 0xce, 0xf6, 0xcf, 0xfc, 0xcf, 0xf6, 0xcf, 0xfc, 0xcf, 0xf6, 0xd0, 0xfc, - 0xd0, 0xf6, 0xd0, 0xfc, 0xd0, 0xf6, 0xd0, 0xfc, 0xd0, 0xf6, 0xd0, 0xfc, - 0xd0, 0xf6, 0xd1, 0xfc, 0xd1, 0xf6, 0xd1, 0xfc, 0xd1, 0xf6, 0xd1, 0xfc, - 0xd1, 0xf6, 0xd2, 0xfc, 0xd1, 0xf6, 0xd2, 0xfc, 0xd1, 0xf6, 0xd2, 0xfc, - 0xd1, 0xf6, 0xd2, 0xfc, 0xd2, 0xf6, 0xd3, 0xfc, 0xd3, 0xf6, 0xd3, 0xfc, - 0xd3, 0xf6, 0xd3, 0xfc, 0xd3, 0xf6, 0xd4, 0xfc, 0xd4, 0xf6, 0xd4, 0xfc, - 0xd4, 0xf6, 0xd4, 0xfc, 0xd4, 0xf6, 0xd4, 0xfc, 0xd4, 0xf6, 0xd5, 0xfc, - 0xd4, 0xf6, 0xd5, 0xfc, 0xd4, 0xf6, 0xd5, 0xfc, 0xd4, 0xf6, 0xd6, 0xfd, - 0xd6, 0xf6, 0xd6, 0xfd, 0xd6, 0xf6, 0xd6, 0xfd, 0xd6, 0xf6, 0xd6, 0xfd, - 0xd6, 0xf6, 0xd7, 0xfd, 0xd7, 0xf6, 0xd7, 0xfd, 0xd7, 0xf6, 0xd7, 0xfd, - 0xd7, 0xf6, 0xd7, 0xfd, 0xd7, 0xf6, 0xd8, 0xfd, 0xd7, 0xf6, 0xd8, 0xfd, - 0xd7, 0xf6, 0xd8, 0xfd, 0xd7, 0xf6, 0xd9, 0xfd, 0xd9, 0xf6, 0xd9, 0xfd, - 0xd9, 0xf6, 0xd9, 0xfd, 0xd9, 0xf6, 0xd9, 0xfd, 0xd9, 0xf6, 0xda, 0xfd, - 0xda, 0xf6, 0xda, 0xfd, 0xda, 0xf6, 0xda, 0xfd, 0xda, 0xf6, 0xda, 0xfd, - 0xda, 0xf6, 0xdb, 0xfd, 0xda, 0xf6, 0xdb, 0xfd, 0xda, 0xf6, 0xdb, 0xfd, - 0xda, 0xf6, 0xdb, 0xfd, 0xda, 0xf6, 0xdc, 0xfd, 0xda, 0xf6, 0xdc, 0xfe, - 0xdc, 0xf6, 0xdc, 0xfe, 0xdc, 0xf6, 0xdd, 0xfe, 0xdd, 0xf6, 0xdd, 0xfe, - 0xdd, 0xf6, 0xdd, 0xfe, 0xdd, 0xf6, 0xdd, 0xfe, 0xdd, 0xf6, 0xde, 0xfe, - 0xdd, 0xf6, 0xde, 0xfe, 0xdd, 0xf6, 0xde, 0xfe, 0xdd, 0xf6, 0xde, 0xfe, - 0xdd, 0xf6, 0xdf, 0xfe, 0xdd, 0xf6, 0xdf, 0xfe, 0xdf, 0xf6, 0xdf, 0xfe, - 0xdf, 0xf6, 0xdf, 0xfc, 0xe3, 0xf6, 0xe0, 0xfb, 0xe3, 0xf6, 0xe0, 0xfc, - 0xe3, 0xf6, 0xe0, 0xfb, 0xe3, 0xf6, 0xe1, 0xfc, 0xe3, 0xf6, 0xe1, 0xfb, - 0xe3, 0xf6, 0xe1, 0xfc, 0xe3, 0xf6, 0xe1, 0xfb, 0xe3, 0xf6, 0xe2, 0xfc, - 0xe3, 0xf6, 0xe2, 0xfb, 0xe3, 0xf6, 0xe2, 0xfb, 0xe3, 0xf6, 0xe2, 0xfb, - 0xe3, 0xf6, 0xe3, 0xfb, 0xe3, 0xf6, 0xe2, 0xfb, 0xe3, 0xf6, 0xe3, 0xfb, - 0xe3, 0xf6, 0xe2, 0xfb, 0xe3, 0xf6, 0xe3, 0xfb, 0xe4, 0xf6, 0xe5, 0xfb, - 0xe4, 0xf6, 0xe5, 0xfb, 0xe4, 0xf6, 0xe5, 0xfb, 0xe4, 0xf6, 0xe5, 0xfb, - 0xe5, 0xf6, 0xe5, 0xfb, 0xe4, 0xf6, 0xe5, 0xfb, 0xe5, 0xf6, 0xe5, 0xfb, - 0xe4, 0xf6, 0xe6, 0xfb, 0xe5, 0xf6, 0xe6, 0xfa, 0xe5, 0xf6, 0xe6, 0xfb, - 0xe5, 0xf6, 0xe6, 0xfa, 0xe5, 0xf6, 0xe7, 0xfb, 0xe5, 0xf6, 0xe7, 0xfa, - 0xe5, 0xf6, 0xe7, 0xfb, 0xe5, 0xf6, 0xe7, 0xfa, 0xe5, 0xf6, 0xe8, 0xfb, - 0xe5, 0xf6, 0xe8, 0xfa, 0xe5, 0xf6, 0xe8, 0xfb, 0xe5, 0xf6, 0xe8, 0xfa, - 0xe5, 0xf6, 0xe9, 0xfb, 0xe5, 0xf6, 0xe9, 0xfa, 0xe5, 0xf6, 0xe9, 0xfb, - 0xe5, 0xf6, 0xe9, 0xfa, 0xe5, 0xf6, 0xea, 0xfb, 0xe5, 0xf6, 0xea, 0xfc, - 0xee, 0xf6, 0xea, 0xfb, 0xee, 0xf6, 0xea, 0xfc, 0xee, 0xf6, 0xeb, 0xfb, - 0xee, 0xf6, 0xeb, 0xfc, 0xee, 0xf6, 0xeb, 0xfb, 0xee, 0xf6, 0xeb, 0xfc, - 0xee, 0xf6, 0xec, 0xfb, 0xee, 0xf6, 0xec, 0xfc, 0xee, 0xf6, 0xec, 0xfb, - 0xee, 0xf6, 0xec, 0xfc, 0xee, 0xf6, 0xec, 0xfb, 0xee, 0xf6, 0xed, 0xfb, - 0xef, 0xf6, 0xed, 0xfb, 0xee, 0xf6, 0xed, 0xfb, 0xef, 0xf6, 0xed, 0xfb, - 0xee, 0xf6, 0xee, 0xfb, 0xef, 0xf6, 0xee, 0xfb, 0xee, 0xf6, 0xee, 0xfb, - 0xef, 0xf6, 0xee, 0xfb, 0xee, 0xf5, 0xee, 0xfb, 0xef, 0xf6, 0xef, 0xfb, - 0xef, 0xf6, 0xef, 0xfb, 0xef, 0xf6, 0xef, 0xfb, 0xef, 0xf6, 0xf0, 0xfb, - 0xef, 0xf6, 0xf0, 0xfb, 0xef, 0xf6, 0xf0, 0xfb, 0xef, 0xf6, 0xf0, 0xfb, - 0xef, 0xf6, 0xf1, 0xfb, 0xef, 0xf6, 0xf1, 0xfb, 0xef, 0xf6, 0xf1, 0xfb, - 0xef, 0xf6, 0xf1, 0xfb, 0xef, 0xf6, 0xf2, 0xfb, 0xef, 0xf6, 0xf2, 0xfb, - 0xef, 0xf6, 0xf2, 0xfb, 0xef, 0xf6, 0xf2, 0xfb, 0xef, 0xf6, 0xf2, 0xfb, - 0xef, 0xf6, 0xf3, 0xfb, 0xef, 0xf6, 0xf3, 0xf9, 0xef, 0xf6, 0xf3, 0xfb, - 0xef, 0xf6, 0xf3, 0xf9, 0xef, 0xf6, 0xf4, 0xfb, 0xef, 0xf6, 0xf4, 0xf9, - 0xef, 0xf6, 0xf4, 0xfb, 0xef, 0xf6, 0xf4, 0xf9, 0xef, 0xf6, 0xf5, 0xfb, - 0xef, 0xf6, 0xf5, 0xf9, 0xef, 0xf6, 0xf5, 0xfb, 0xef, 0xf6, 0xf5, 0xf9, - 0xef, 0xf6, 0xf5, 0xfb, 0xef, 0xf6, 0xf6, 0xf9, 0xef, 0xf6, 0xf6, 0xfb, - 0xef, 0xf6, 0xf6, 0xf9, 0xef, 0xf6, 0xf6, 0xfb, 0xef, 0xf6, 0xf7, 0xf9, - 0xef, 0xf6, 0xf7, 0xfb, 0xef, 0xf6, 0xf7, 0xf9, 0xef, 0xf6, 0xf7, 0xfb, - 0xef, 0xf6, 0xf8, 0xf9, 0xef, 0xf6, 0xf8, 0xfb, 0xef, 0xf6, 0xf8, 0xf9, - 0xef, 0xf6, 0xf8, 0xfb, 0xef, 0xf6, 0xf8, 0xf9, 0xef, 0xf6, 0xf9, 0xfb, - 0xef, 0xf6, 0xf9, 0xf9, 0xef, 0xf6, 0xf9, 0xfb, 0xef, 0xf6, 0xf9, 0xf9, - 0xef, 0xf6, 0xfa, 0xfb, 0xef, 0xf6, 0xfa, 0xf9, 0xef, 0xf6, 0xfa, 0xfb, - 0xef, 0xf6, 0xfa, 0xf9, 0xef, 0xf6, 0xfa, 0xf8, 0xef, 0xf6, 0xfb, 0xf9, - 0xef, 0xf6, 0xfb, 0xf8, 0xef, 0xf6, 0xfb, 0xf9, 0xef, 0xf6, 0xfb, 0xf8, - 0xef, 0xf6, 0xfc, 0xf9, 0xef, 0xf6, 0xfc, 0xf8, 0xef, 0xf6, 0xfc, 0xf9, - 0xef, 0xf6, 0xfc, 0xf8, 0xef, 0xf6, 0xfc, 0xf9, 0xef, 0xf6, 0xfd, 0xf8, - 0xef, 0xf6, 0xfd, 0xf9, 0xef, 0xf6, 0xfd, 0xf8, 0xef, 0xf6, 0xfd, 0xf9, - 0xef, 0xf6, 0xfe, 0xf8, 0xef, 0xf6, 0xfe, 0xf9, 0xef, 0xf6, 0xfe, 0xf8, - 0xef, 0xf6, 0xfe, 0xf9, 0xef, 0xf6, 0xfe, 0xf8, 0xef, 0xf6, 0xff, 0xf8, - 0xef, 0xf6, 0xff, 0xf8, 0xef, 0xf6, 0x03, 0xf4, 0x83, 0xf7, 0x0a, 0xf4, - 0x83, 0xf7, 0x0f, 0xf4, 0x83, 0xf7, 0x14, 0xf4, 0x83, 0xf7, 0x17, 0xf4, - 0x83, 0xf7, 0x1b, 0xf4, 0x83, 0xf7, 0x1e, 0xf4, 0x83, 0xf7, 0x20, 0xf4, - 0x83, 0xf7, 0x23, 0xf4, 0x83, 0xf7, 0x25, 0xf4, 0x83, 0xf7, 0x27, 0xf4, - 0x83, 0xf7, 0x29, 0xf4, 0x83, 0xf7, 0x2b, 0xf4, 0x83, 0xf7, 0x2d, 0xf4, - 0x83, 0xf7, 0x2f, 0xf4, 0x83, 0xf7, 0x31, 0xf4, 0x83, 0xf7, 0x32, 0xf4, - 0x83, 0xf7, 0x34, 0xf4, 0x83, 0xf7, 0x35, 0xf4, 0x83, 0xf7, 0x37, 0xf4, - 0x83, 0xf7, 0x38, 0xf4, 0x83, 0xf7, 0x3a, 0xf4, 0x83, 0xf7, 0x3b, 0xf4, - 0x83, 0xf7, 0x3c, 0xf4, 0x83, 0xf7, 0x3e, 0xf4, 0x83, 0xf7, 0x3f, 0xf4, - 0x83, 0xf7, 0x40, 0xf4, 0x83, 0xf7, 0x42, 0xf4, 0x83, 0xf7, 0x43, 0xf4, - 0x83, 0xf7, 0x44, 0xf4, 0x83, 0xf7, 0x45, 0xf4, 0x83, 0xf7, 0x46, 0xf4, - 0x83, 0xf7, 0x47, 0xf4, 0x83, 0xf7, 0x48, 0xf4, 0x83, 0xf7, 0x49, 0xf4, - 0x83, 0xf7, 0x4a, 0xf4, 0x83, 0xf7, 0x4b, 0xf4, 0x83, 0xf7, 0x4c, 0xf4, - 0x83, 0xf7, 0x4d, 0xf4, 0x83, 0xf7, 0x4e, 0xf4, 0x83, 0xf7, 0x4f, 0xf4, - 0x83, 0xf7, 0x50, 0xf4, 0x83, 0xf7, 0x51, 0xf4, 0x83, 0xf7, 0x52, 0xf4, - 0x83, 0xf7, 0x53, 0xf4, 0x83, 0xf7, 0x54, 0xf4, 0x83, 0xf7, 0x55, 0xf4, - 0x83, 0xf7, 0x56, 0xf4, 0x83, 0xf7, 0x57, 0xf4, 0x83, 0xf7, 0x58, 0xf4, - 0x83, 0xf7, 0x58, 0xf4, 0x83, 0xf7, 0x59, 0xf4, 0x83, 0xf7, 0x5a, 0xf4, - 0x83, 0xf7, 0x5b, 0xf4, 0x83, 0xf7, 0x5c, 0xf4, 0x83, 0xf7, 0x5d, 0xf4, - 0x83, 0xf7, 0x5d, 0xf4, 0x83, 0xf7, 0x5e, 0xf4, 0x83, 0xf7, 0x5f, 0xf4, - 0x83, 0xf7, 0x60, 0xf4, 0x83, 0xf7, 0x60, 0xf4, 0x83, 0xf7, 0x61, 0xf4, - 0x83, 0xf7, 0x62, 0xf4, 0x83, 0xf7, 0x63, 0xf4, 0x83, 0xf7, 0x63, 0xf4, - 0x83, 0xf7, 0x64, 0xf4, 0x83, 0xf7, 0x65, 0xf4, 0x83, 0xf7, 0x66, 0xf4, - 0x83, 0xf7, 0x66, 0xf4, 0x83, 0xf7, 0x67, 0xf4, 0x83, 0xf7, 0x68, 0xf4, - 0x83, 0xf7, 0x68, 0xf4, 0x83, 0xf7, 0x69, 0xf4, 0x83, 0xf7, 0x6a, 0xf4, - 0x83, 0xf7, 0x6a, 0xf4, 0x83, 0xf7, 0x6b, 0xf4, 0x83, 0xf7, 0x6c, 0xf4, - 0x83, 0xf7, 0x6c, 0xf4, 0x83, 0xf7, 0x6d, 0xf4, 0x83, 0xf7, 0x6e, 0xf4, - 0x83, 0xf7, 0x6e, 0xf4, 0x83, 0xf7, 0x6f, 0xf4, 0x83, 0xf7, 0x70, 0xf4, - 0x83, 0xf7, 0x70, 0xf4, 0x83, 0xf7, 0x71, 0xf4, 0x83, 0xf7, 0x72, 0xf4, - 0x83, 0xf7, 0x72, 0xf4, 0x83, 0xf7, 0x73, 0xf4, 0x83, 0xf7, 0x73, 0xf4, - 0x83, 0xf7, 0x74, 0xf4, 0x83, 0xf7, 0x75, 0xf4, 0x83, 0xf7, 0x75, 0xf4, - 0x83, 0xf7, 0x76, 0xf4, 0x83, 0xf7, 0x76, 0xf4, 0x83, 0xf7, 0x77, 0xf4, - 0x83, 0xf7, 0x78, 0xf4, 0x83, 0xf7, 0x78, 0xf4, 0x83, 0xf7, 0x79, 0xf4, - 0x83, 0xf7, 0x79, 0xf4, 0x83, 0xf7, 0x7a, 0xf4, 0x83, 0xf7, 0x7a, 0xf4, - 0x83, 0xf7, 0x7b, 0xf4, 0x83, 0xf7, 0x7c, 0xf4, 0x83, 0xf7, 0x7c, 0xf4, - 0x83, 0xf7, 0x7d, 0xf4, 0x83, 0xf7, 0x7d, 0xf4, 0x83, 0xf7, 0x7e, 0xf4, - 0x83, 0xf7, 0x7e, 0xf4, 0x83, 0xf7, 0x7f, 0xf4, 0x83, 0xf7, 0x7f, 0xf4, - 0x83, 0xf7, 0x80, 0xf4, 0x83, 0xf7, 0x81, 0xf4, 0x83, 0xf7, 0x81, 0xf4, - 0x83, 0xf7, 0x82, 0xf4, 0x83, 0xf7, 0x82, 0xf4, 0x83, 0xf7, 0x83, 0xf5, - 0x88, 0xf7, 0x83, 0xf5, 0x88, 0xf7, 0x84, 0xf5, 0x88, 0xf7, 0x84, 0xf5, - 0x88, 0xf7, 0x85, 0xf5, 0x88, 0xf7, 0x85, 0xf5, 0x88, 0xf7, 0x86, 0xf5, - 0x88, 0xf7, 0x86, 0xf5, 0x88, 0xf7, 0x87, 0xf5, 0x88, 0xf7, 0x87, 0xf5, - 0x88, 0xf7, 0x88, 0xf5, 0x88, 0xf7, 0x88, 0xf5, 0x8d, 0xf7, 0x89, 0xf5, - 0x8e, 0xf7, 0x89, 0xf5, 0x8d, 0xf7, 0x8a, 0xf5, 0x8e, 0xf7, 0x8a, 0xf5, - 0x8d, 0xf7, 0x8b, 0xf5, 0x8e, 0xf7, 0x8b, 0xf5, 0x8d, 0xf7, 0x8c, 0xf5, - 0x8e, 0xf7, 0x8c, 0xf5, 0x8d, 0xf7, 0x8d, 0xf5, 0x8e, 0xf7, 0x8d, 0xf5, - 0x8d, 0xf7, 0x8e, 0xf5, 0x92, 0xf7, 0x8e, 0xf5, 0x93, 0xf7, 0x8e, 0xf5, - 0x92, 0xf7, 0x8f, 0xf5, 0x93, 0xf7, 0x8f, 0xf5, 0x92, 0xf7, 0x90, 0xf5, - 0x93, 0xf7, 0x90, 0xf5, 0x92, 0xf7, 0x91, 0xf5, 0x93, 0xf7, 0x91, 0xf5, - 0x92, 0xf7, 0x92, 0xf5, 0x93, 0xf7, 0x92, 0xf5, 0x92, 0xf7, 0x93, 0xf5, - 0x93, 0xf7, 0x93, 0xf5, 0x93, 0xf7, 0x94, 0xf6, 0x97, 0xf7, 0x94, 0xf6, - 0x98, 0xf7, 0x94, 0xf6, 0x97, 0xf7, 0x95, 0xf6, 0x98, 0xf7, 0x95, 0xf6, - 0x97, 0xf7, 0x96, 0xf6, 0x98, 0xf7, 0x96, 0xf6, 0x97, 0xf7, 0x97, 0xf6, - 0x98, 0xf7, 0x97, 0xf6, 0x97, 0xf7, 0x98, 0xf6, 0x98, 0xf7, 0x98, 0xf6, - 0x98, 0xf7, 0x98, 0xf6, 0x9c, 0xf7, 0x99, 0xf6, 0x9c, 0xf7, 0x99, 0xf6, - 0x9c, 0xf7, 0x9a, 0xf6, 0x9c, 0xf7, 0x9a, 0xf6, 0x9c, 0xf7, 0x9a, 0xf6, - 0x9c, 0xf7, 0x9b, 0xf6, 0x9c, 0xf7, 0x9b, 0xf6, 0x9c, 0xf7, 0x9c, 0xf6, - 0x9c, 0xf7, 0x9c, 0xf6, 0x9c, 0xf7, 0x9d, 0xf6, 0x9d, 0xf7, 0x9d, 0xf7, - 0xa0, 0xf7, 0x9d, 0xf7, 0xa1, 0xf7, 0x9e, 0xf7, 0xa0, 0xf7, 0x9e, 0xf7, - 0xa1, 0xf7, 0x9f, 0xf7, 0xa0, 0xf7, 0x9f, 0xf7, 0xa1, 0xf7, 0x9f, 0xf7, - 0xa0, 0xf7, 0xa0, 0xf7, 0xa1, 0xf7, 0xa0, 0xf7, 0xa0, 0xf7, 0xa1, 0xf7, - 0xa1, 0xf7, 0xa1, 0xf7, 0xa1, 0xf7, 0xa1, 0xf7, 0xa5, 0xf7, 0xa2, 0xf7, - 0xa5, 0xf7, 0xa2, 0xf7, 0xa5, 0xf7, 0xa3, 0xf7, 0xa5, 0xf7, 0xa3, 0xf7, - 0xa5, 0xf7, 0xa3, 0xf7, 0xa5, 0xf7, 0xa4, 0xf7, 0xa5, 0xf7, 0xa4, 0xf7, - 0xa5, 0xf7, 0xa5, 0xf7, 0xa5, 0xf7, 0xa5, 0xf7, 0xa5, 0xf7, 0xa5, 0xf7, - 0xa5, 0xf7, 0xa6, 0xf8, 0xa9, 0xf7, 0xa6, 0xf8, 0xa9, 0xf7, 0xa6, 0xf8, - 0xa9, 0xf7, 0xa7, 0xf8, 0xa9, 0xf7, 0xa7, 0xf8, 0xa9, 0xf7, 0xa8, 0xf8, - 0xa9, 0xf7, 0xa8, 0xf8, 0xa9, 0xf7, 0xa8, 0xf8, 0xa9, 0xf7, 0xa9, 0xf8, - 0xa9, 0xf7, 0xa9, 0xf8, 0xa9, 0xf7, 0xaa, 0xf8, 0xaa, 0xf7, 0xaa, 0xf8, - 0xaa, 0xf7, 0xaa, 0xf8, 0xaa, 0xf7, 0xab, 0xf8, 0xad, 0xf7, 0xab, 0xf8, - 0xad, 0xf7, 0xab, 0xf8, 0xad, 0xf7, 0xac, 0xf8, 0xad, 0xf7, 0xac, 0xf8, - 0xad, 0xf7, 0xac, 0xf8, 0xad, 0xf7, 0xad, 0xf8, 0xad, 0xf7, 0xad, 0xf8, - 0xad, 0xf7, 0xae, 0xf8, 0xae, 0xf7, 0xae, 0xf8, 0xae, 0xf7, 0xae, 0xf8, - 0xae, 0xf7, 0xaf, 0xf9, 0xb1, 0xf7, 0xaf, 0xf9, 0xb1, 0xf7, 0xaf, 0xf9, - 0xb1, 0xf7, 0xb0, 0xf9, 0xb1, 0xf7, 0xb0, 0xf9, 0xb1, 0xf7, 0xb0, 0xf9, - 0xb1, 0xf7, 0xb1, 0xf9, 0xb1, 0xf7, 0xb1, 0xf9, 0xb1, 0xf7, 0xb2, 0xf9, - 0xb2, 0xf7, 0xb2, 0xf9, 0xb2, 0xf7, 0xb2, 0xf9, 0xb2, 0xf7, 0xb3, 0xf9, - 0xb5, 0xf7, 0xb3, 0xf9, 0xb5, 0xf7, 0xb3, 0xf9, 0xb5, 0xf7, 0xb4, 0xf9, - 0xb5, 0xf7, 0xb4, 0xf9, 0xb5, 0xf7, 0xb4, 0xf9, 0xb5, 0xf7, 0xb5, 0xf9, - 0xb5, 0xf7, 0xb5, 0xf9, 0xb5, 0xf7, 0xb5, 0xf9, 0xb5, 0xf7, 0xb6, 0xf9, - 0xb6, 0xf7, 0xb6, 0xf9, 0xb6, 0xf7, 0xb6, 0xf9, 0xb6, 0xf7, 0xb7, 0xf9, - 0xb7, 0xf7, 0xb7, 0xfa, 0xb8, 0xf7, 0xb7, 0xfa, 0xb9, 0xf7, 0xb8, 0xfa, - 0xb8, 0xf7, 0xb8, 0xfa, 0xb9, 0xf7, 0xb8, 0xfa, 0xb8, 0xf7, 0xb9, 0xfa, - 0xb9, 0xf7, 0xb9, 0xfa, 0xb9, 0xf7, 0xb9, 0xfa, 0xb9, 0xf7, 0xba, 0xfa, - 0xba, 0xf7, 0xba, 0xfa, 0xba, 0xf7, 0xba, 0xfa, 0xba, 0xf7, 0xbb, 0xfa, - 0xbc, 0xf7, 0xbb, 0xfa, 0xbc, 0xf7, 0xbb, 0xfa, 0xbc, 0xf7, 0xbc, 0xfa, - 0xbc, 0xf7, 0xbc, 0xfa, 0xbc, 0xf7, 0xbc, 0xfa, 0xbc, 0xf7, 0xbd, 0xfa, - 0xbd, 0xf7, 0xbd, 0xfa, 0xbd, 0xf7, 0xbd, 0xfa, 0xbd, 0xf7, 0xbe, 0xfa, - 0xbe, 0xf7, 0xbe, 0xfa, 0xbe, 0xf7, 0xbe, 0xfa, 0xc0, 0xf7, 0xbf, 0xfa, - 0xc0, 0xf7, 0xbf, 0xfa, 0xc0, 0xf7, 0xbf, 0xfa, 0xc0, 0xf7, 0xc0, 0xfa, - 0xc0, 0xf7, 0xc0, 0xfa, 0xc0, 0xf7, 0xc0, 0xfa, 0xc0, 0xf7, 0xc1, 0xfa, - 0xc1, 0xf7, 0xc1, 0xfa, 0xc1, 0xf7, 0xc1, 0xfa, 0xc1, 0xf7, 0xc1, 0xfa, - 0xc1, 0xf7, 0xc2, 0xfa, 0xc2, 0xf7, 0xc2, 0xfa, 0xc2, 0xf7, 0xc2, 0xfb, - 0xc3, 0xf7, 0xc3, 0xfb, 0xc3, 0xf7, 0xc3, 0xfb, 0xc3, 0xf7, 0xc3, 0xfb, - 0xc3, 0xf7, 0xc4, 0xfb, 0xc4, 0xf7, 0xc4, 0xfb, 0xc4, 0xf7, 0xc4, 0xfb, - 0xc4, 0xf7, 0xc5, 0xfb, 0xc5, 0xf7, 0xc5, 0xfb, 0xc5, 0xf7, 0xc5, 0xfb, - 0xc5, 0xf7, 0xc6, 0xfb, 0xc6, 0xf7, 0xc6, 0xfb, 0xc6, 0xf7, 0xc6, 0xfb, - 0xc6, 0xf7, 0xc6, 0xfb, 0xc6, 0xf8, 0xc7, 0xfb, 0xc7, 0xf8, 0xc7, 0xfb, - 0xc7, 0xf8, 0xc7, 0xfb, 0xc7, 0xf8, 0xc8, 0xfb, 0xc8, 0xf8, 0xc8, 0xfb, - 0xc8, 0xf8, 0xc8, 0xfb, 0xc8, 0xf8, 0xc9, 0xfb, 0xc9, 0xf8, 0xc9, 0xfb, - 0xc9, 0xf8, 0xc9, 0xfb, 0xc9, 0xf8, 0xc9, 0xfb, 0xc9, 0xf6, 0xca, 0xfb, - 0xca, 0xf6, 0xca, 0xfb, 0xca, 0xf6, 0xca, 0xfb, 0xca, 0xf6, 0xcb, 0xfb, - 0xcb, 0xf6, 0xcb, 0xfb, 0xcb, 0xf6, 0xcb, 0xfb, 0xcb, 0xf6, 0xcc, 0xfb, - 0xcc, 0xf6, 0xcc, 0xfb, 0xcc, 0xf6, 0xcc, 0xfb, 0xcc, 0xf6, 0xcc, 0xfb, - 0xcc, 0xf6, 0xcd, 0xfc, 0xcd, 0xf7, 0xcd, 0xfc, 0xcd, 0xf7, 0xcd, 0xfc, - 0xcd, 0xf7, 0xce, 0xfc, 0xce, 0xf7, 0xce, 0xfc, 0xce, 0xf7, 0xce, 0xfc, - 0xce, 0xf7, 0xce, 0xfc, 0xce, 0xf7, 0xcf, 0xfc, 0xcf, 0xf7, 0xcf, 0xfc, - 0xcf, 0xf7, 0xcf, 0xfc, 0xcf, 0xf7, 0xd0, 0xfc, 0xd0, 0xf7, 0xd0, 0xfc, - 0xcf, 0xf7, 0xd0, 0xfc, 0xd0, 0xf7, 0xd0, 0xfc, 0xd0, 0xf7, 0xd1, 0xfc, - 0xd1, 0xf7, 0xd1, 0xfc, 0xd1, 0xf7, 0xd1, 0xfc, 0xd1, 0xf7, 0xd2, 0xfc, - 0xd2, 0xf7, 0xd2, 0xfc, 0xd2, 0xf7, 0xd2, 0xfc, 0xd2, 0xf7, 0xd2, 0xfc, - 0xd2, 0xf7, 0xd3, 0xfc, 0xd3, 0xf7, 0xd3, 0xfc, 0xd2, 0xf7, 0xd3, 0xfc, - 0xd3, 0xf7, 0xd4, 0xfc, 0xd2, 0xf7, 0xd4, 0xfc, 0xd3, 0xf7, 0xd4, 0xfd, - 0xd4, 0xf7, 0xd4, 0xfd, 0xd4, 0xf7, 0xd5, 0xfd, 0xd5, 0xf7, 0xd5, 0xfd, - 0xd5, 0xf7, 0xd5, 0xfd, 0xd5, 0xf7, 0xd6, 0xfd, 0xd6, 0xf7, 0xd6, 0xfd, - 0xd6, 0xf7, 0xd6, 0xfd, 0xd6, 0xf7, 0xd6, 0xfd, 0xd6, 0xf7, 0xd7, 0xfd, - 0xd6, 0xf7, 0xd7, 0xfd, 0xd6, 0xf7, 0xd7, 0xfd, 0xd7, 0xf7, 0xd7, 0xfd, - 0xd7, 0xf7, 0xd8, 0xfd, 0xd8, 0xf7, 0xd8, 0xfd, 0xd8, 0xf7, 0xd8, 0xfd, - 0xd8, 0xf7, 0xd9, 0xfd, 0xd9, 0xf7, 0xd9, 0xfd, 0xd9, 0xf7, 0xd9, 0xfd, - 0xd9, 0xf7, 0xd9, 0xfd, 0xd9, 0xf7, 0xda, 0xfd, 0xd9, 0xf7, 0xda, 0xfd, - 0xd9, 0xf7, 0xda, 0xfe, 0xda, 0xf7, 0xda, 0xfe, 0xda, 0xf7, 0xdb, 0xfe, - 0xdb, 0xf7, 0xdb, 0xfe, 0xdb, 0xf7, 0xdb, 0xfe, 0xdb, 0xf7, 0xdb, 0xfe, - 0xdb, 0xf7, 0xdc, 0xfe, 0xdc, 0xf7, 0xdc, 0xfe, 0xdb, 0xf7, 0xdc, 0xfe, - 0xdc, 0xf7, 0xdd, 0xfe, 0xdb, 0xf7, 0xdd, 0xfe, 0xdc, 0xf7, 0xdd, 0xfe, - 0xdb, 0xf7, 0xdd, 0xfe, 0xdc, 0xf7, 0xde, 0xfe, 0xde, 0xf7, 0xde, 0xfe, - 0xde, 0xf7, 0xde, 0xfe, 0xde, 0xf7, 0xde, 0xfe, 0xde, 0xf7, 0xdf, 0xfe, - 0xdf, 0xf7, 0xdf, 0xfe, 0xde, 0xf7, 0xdf, 0xfe, 0xdf, 0xf7, 0xdf, 0xfc, - 0xe3, 0xf7, 0xe0, 0xfb, 0xe3, 0xf7, 0xe0, 0xfc, 0xe3, 0xf7, 0xe0, 0xfb, - 0xe3, 0xf7, 0xe1, 0xfc, 0xe3, 0xf7, 0xe1, 0xfb, 0xe3, 0xf7, 0xe1, 0xfc, - 0xe3, 0xf7, 0xe1, 0xfb, 0xe3, 0xf7, 0xe2, 0xfc, 0xe3, 0xf7, 0xe2, 0xfb, - 0xe3, 0xf7, 0xe2, 0xfc, 0xe3, 0xf7, 0xe2, 0xfb, 0xe3, 0xf7, 0xe3, 0xfc, - 0xe3, 0xf7, 0xe2, 0xfb, 0xe3, 0xf7, 0xe3, 0xfb, 0xe3, 0xf7, 0xe2, 0xfb, - 0xe3, 0xf7, 0xe3, 0xfb, 0xe4, 0xf7, 0xe5, 0xfb, 0xe4, 0xf7, 0xe5, 0xfb, - 0xe4, 0xf8, 0xe5, 0xfb, 0xe4, 0xf7, 0xe5, 0xfb, 0xe5, 0xf7, 0xe5, 0xfb, - 0xe4, 0xf7, 0xe5, 0xfb, 0xe5, 0xf7, 0xe5, 0xfb, 0xe4, 0xf7, 0xe6, 0xfb, - 0xe5, 0xf7, 0xe6, 0xfb, 0xe4, 0xf7, 0xe6, 0xfb, 0xe5, 0xf7, 0xe6, 0xfb, - 0xe4, 0xf7, 0xe7, 0xfb, 0xe5, 0xf7, 0xe7, 0xfa, 0xe5, 0xf7, 0xe7, 0xfb, - 0xe5, 0xf7, 0xe7, 0xfa, 0xe5, 0xf7, 0xe8, 0xfb, 0xe5, 0xf7, 0xe8, 0xfa, - 0xe5, 0xf7, 0xe8, 0xfb, 0xe5, 0xf7, 0xe8, 0xfa, 0xe5, 0xf7, 0xe9, 0xfb, - 0xe5, 0xf7, 0xe9, 0xfa, 0xe5, 0xf7, 0xe9, 0xfb, 0xe5, 0xf7, 0xe9, 0xfa, - 0xe5, 0xf7, 0xea, 0xfb, 0xe5, 0xf7, 0xea, 0xfd, 0xee, 0xf7, 0xea, 0xfb, - 0xee, 0xf7, 0xea, 0xfd, 0xee, 0xf7, 0xeb, 0xfb, 0xee, 0xf7, 0xeb, 0xfd, - 0xee, 0xf7, 0xeb, 0xfb, 0xee, 0xf7, 0xeb, 0xfd, 0xee, 0xf7, 0xec, 0xfb, - 0xee, 0xf7, 0xec, 0xfd, 0xee, 0xf7, 0xec, 0xfb, 0xee, 0xf7, 0xec, 0xfd, - 0xee, 0xf7, 0xec, 0xfb, 0xee, 0xf7, 0xed, 0xfb, 0xef, 0xf7, 0xed, 0xfb, - 0xee, 0xf7, 0xed, 0xfb, 0xef, 0xf7, 0xed, 0xfb, 0xee, 0xf7, 0xee, 0xfb, - 0xef, 0xf7, 0xee, 0xfb, 0xee, 0xf7, 0xee, 0xfb, 0xef, 0xf7, 0xee, 0xfb, - 0xee, 0xf6, 0xee, 0xfb, 0xef, 0xf7, 0xef, 0xfb, 0xef, 0xf7, 0xef, 0xfb, - 0xef, 0xf7, 0xef, 0xfb, 0xef, 0xf7, 0xf0, 0xfb, 0xef, 0xf7, 0xf0, 0xfb, - 0xef, 0xf7, 0xf0, 0xfb, 0xef, 0xf7, 0xf0, 0xfb, 0xef, 0xf7, 0xf1, 0xfb, - 0xef, 0xf7, 0xf1, 0xfb, 0xef, 0xf7, 0xf1, 0xfb, 0xef, 0xf7, 0xf1, 0xfb, - 0xef, 0xf7, 0xf2, 0xfb, 0xef, 0xf7, 0xf2, 0xfb, 0xef, 0xf7, 0xf2, 0xfb, - 0xef, 0xf7, 0xf2, 0xfb, 0xef, 0xf7, 0xf2, 0xfb, 0xef, 0xf7, 0xf3, 0xfb, - 0xef, 0xf7, 0xf3, 0xfa, 0xef, 0xf7, 0xf3, 0xfb, 0xef, 0xf7, 0xf3, 0xfa, - 0xef, 0xf7, 0xf4, 0xfb, 0xef, 0xf7, 0xf4, 0xfa, 0xef, 0xf7, 0xf4, 0xfb, - 0xef, 0xf7, 0xf4, 0xfa, 0xef, 0xf7, 0xf5, 0xfb, 0xef, 0xf7, 0xf5, 0xfa, - 0xef, 0xf7, 0xf5, 0xfb, 0xef, 0xf7, 0xf5, 0xfa, 0xef, 0xf7, 0xf5, 0xfb, - 0xef, 0xf7, 0xf6, 0xfa, 0xef, 0xf7, 0xf6, 0xfb, 0xef, 0xf7, 0xf6, 0xfa, - 0xef, 0xf7, 0xf6, 0xfb, 0xef, 0xf7, 0xf7, 0xfa, 0xef, 0xf7, 0xf7, 0xfb, - 0xef, 0xf7, 0xf7, 0xfa, 0xef, 0xf7, 0xf7, 0xfb, 0xef, 0xf7, 0xf8, 0xfa, - 0xef, 0xf7, 0xf8, 0xfb, 0xef, 0xf7, 0xf8, 0xfa, 0xef, 0xf7, 0xf8, 0xfb, - 0xef, 0xf7, 0xf8, 0xfa, 0xef, 0xf7, 0xf9, 0xfb, 0xef, 0xf7, 0xf9, 0xfa, - 0xef, 0xf7, 0xf9, 0xfb, 0xef, 0xf7, 0xf9, 0xfa, 0xef, 0xf7, 0xfa, 0xfb, - 0xef, 0xf7, 0xfa, 0xfa, 0xef, 0xf7, 0xfa, 0xfb, 0xef, 0xf7, 0xfa, 0xfa, - 0xef, 0xf7, 0xfa, 0xf8, 0xef, 0xf7, 0xfb, 0xfa, 0xef, 0xf7, 0xfb, 0xf8, - 0xef, 0xf7, 0xfb, 0xfa, 0xef, 0xf7, 0xfb, 0xf8, 0xef, 0xf7, 0xfc, 0xfa, - 0xef, 0xf7, 0xfc, 0xf8, 0xef, 0xf7, 0xfc, 0xfa, 0xef, 0xf7, 0xfc, 0xf8, - 0xef, 0xf7, 0xfc, 0xfa, 0xef, 0xf7, 0xfd, 0xf8, 0xef, 0xf7, 0xfd, 0xfa, - 0xef, 0xf7, 0xfd, 0xf8, 0xef, 0xf7, 0xfd, 0xfa, 0xef, 0xf7, 0xfe, 0xf8, - 0xef, 0xf7, 0xfe, 0xfa, 0xef, 0xf7, 0xfe, 0xf8, 0xef, 0xf7, 0xfe, 0xfa, - 0xef, 0xf7, 0xfe, 0xf8, 0xef, 0xf7, 0xff, 0xf8, 0xef, 0xf7, 0xff, 0xf8, - 0xef, 0xf7, 0x03, 0xf4, 0x83, 0xf7, 0x0a, 0xf4, 0x83, 0xf7, 0x0f, 0xf4, - 0x83, 0xf7, 0x14, 0xf4, 0x83, 0xf7, 0x17, 0xf4, 0x83, 0xf7, 0x1b, 0xf4, - 0x83, 0xf7, 0x1e, 0xf4, 0x83, 0xf7, 0x20, 0xf4, 0x83, 0xf7, 0x23, 0xf4, - 0x83, 0xf7, 0x25, 0xf4, 0x83, 0xf7, 0x27, 0xf4, 0x83, 0xf7, 0x29, 0xf4, - 0x83, 0xf7, 0x2b, 0xf4, 0x83, 0xf7, 0x2d, 0xf4, 0x83, 0xf7, 0x2f, 0xf4, - 0x83, 0xf7, 0x31, 0xf4, 0x83, 0xf7, 0x32, 0xf4, 0x83, 0xf7, 0x34, 0xf4, - 0x83, 0xf7, 0x35, 0xf4, 0x83, 0xf7, 0x37, 0xf4, 0x83, 0xf7, 0x38, 0xf4, - 0x83, 0xf7, 0x3a, 0xf4, 0x83, 0xf7, 0x3b, 0xf4, 0x83, 0xf7, 0x3c, 0xf4, - 0x83, 0xf7, 0x3e, 0xf4, 0x83, 0xf7, 0x3f, 0xf4, 0x83, 0xf7, 0x40, 0xf4, - 0x83, 0xf7, 0x42, 0xf4, 0x83, 0xf7, 0x43, 0xf4, 0x83, 0xf7, 0x44, 0xf4, - 0x83, 0xf7, 0x45, 0xf4, 0x83, 0xf7, 0x46, 0xf4, 0x83, 0xf7, 0x47, 0xf4, - 0x83, 0xf7, 0x48, 0xf4, 0x83, 0xf7, 0x49, 0xf4, 0x83, 0xf7, 0x4a, 0xf4, - 0x83, 0xf7, 0x4b, 0xf4, 0x83, 0xf7, 0x4c, 0xf4, 0x83, 0xf7, 0x4d, 0xf4, - 0x83, 0xf7, 0x4e, 0xf4, 0x83, 0xf7, 0x4f, 0xf4, 0x83, 0xf7, 0x50, 0xf4, - 0x83, 0xf7, 0x51, 0xf4, 0x83, 0xf7, 0x52, 0xf4, 0x83, 0xf7, 0x53, 0xf4, - 0x83, 0xf7, 0x54, 0xf4, 0x83, 0xf7, 0x55, 0xf4, 0x83, 0xf7, 0x56, 0xf4, - 0x83, 0xf7, 0x57, 0xf4, 0x83, 0xf7, 0x58, 0xf4, 0x83, 0xf7, 0x58, 0xf4, - 0x83, 0xf7, 0x59, 0xf4, 0x83, 0xf7, 0x5a, 0xf4, 0x83, 0xf7, 0x5b, 0xf4, - 0x83, 0xf7, 0x5c, 0xf4, 0x83, 0xf7, 0x5d, 0xf4, 0x83, 0xf7, 0x5d, 0xf4, - 0x83, 0xf7, 0x5e, 0xf4, 0x83, 0xf7, 0x5f, 0xf4, 0x83, 0xf7, 0x60, 0xf4, - 0x83, 0xf7, 0x60, 0xf4, 0x83, 0xf7, 0x61, 0xf4, 0x83, 0xf7, 0x62, 0xf4, - 0x83, 0xf7, 0x63, 0xf4, 0x83, 0xf7, 0x63, 0xf4, 0x83, 0xf7, 0x64, 0xf4, - 0x83, 0xf7, 0x65, 0xf4, 0x83, 0xf7, 0x66, 0xf4, 0x83, 0xf7, 0x66, 0xf4, - 0x83, 0xf7, 0x67, 0xf4, 0x83, 0xf7, 0x68, 0xf4, 0x83, 0xf7, 0x68, 0xf4, - 0x83, 0xf7, 0x69, 0xf4, 0x83, 0xf7, 0x6a, 0xf4, 0x83, 0xf7, 0x6a, 0xf4, - 0x83, 0xf7, 0x6b, 0xf4, 0x83, 0xf7, 0x6c, 0xf4, 0x83, 0xf7, 0x6c, 0xf4, - 0x83, 0xf7, 0x6d, 0xf4, 0x83, 0xf7, 0x6e, 0xf4, 0x83, 0xf7, 0x6e, 0xf4, - 0x83, 0xf7, 0x6f, 0xf4, 0x83, 0xf7, 0x70, 0xf4, 0x83, 0xf7, 0x70, 0xf4, - 0x83, 0xf7, 0x71, 0xf4, 0x83, 0xf7, 0x72, 0xf4, 0x83, 0xf7, 0x72, 0xf4, - 0x83, 0xf7, 0x73, 0xf4, 0x83, 0xf7, 0x73, 0xf4, 0x83, 0xf7, 0x74, 0xf4, - 0x83, 0xf7, 0x75, 0xf4, 0x83, 0xf7, 0x75, 0xf4, 0x83, 0xf7, 0x76, 0xf4, - 0x83, 0xf7, 0x76, 0xf4, 0x83, 0xf7, 0x77, 0xf4, 0x83, 0xf7, 0x78, 0xf4, - 0x83, 0xf7, 0x78, 0xf4, 0x83, 0xf7, 0x79, 0xf4, 0x83, 0xf7, 0x79, 0xf4, - 0x83, 0xf7, 0x7a, 0xf4, 0x83, 0xf7, 0x7a, 0xf4, 0x83, 0xf7, 0x7b, 0xf4, - 0x83, 0xf7, 0x7c, 0xf4, 0x85, 0xf7, 0x7c, 0xf4, 0x83, 0xf7, 0x7d, 0xf4, - 0x85, 0xf7, 0x7d, 0xf4, 0x83, 0xf7, 0x7e, 0xf4, 0x85, 0xf7, 0x7e, 0xf4, - 0x83, 0xf7, 0x7f, 0xf4, 0x85, 0xf7, 0x7f, 0xf4, 0x86, 0xf7, 0x80, 0xf4, - 0x85, 0xf7, 0x81, 0xf4, 0x86, 0xf7, 0x81, 0xf4, 0x85, 0xf7, 0x82, 0xf4, - 0x86, 0xf7, 0x82, 0xf4, 0x85, 0xf7, 0x83, 0xf4, 0x86, 0xf7, 0x83, 0xf4, - 0x85, 0xf7, 0x84, 0xf4, 0x86, 0xf7, 0x84, 0xf4, 0x85, 0xf7, 0x85, 0xf4, - 0x86, 0xf7, 0x85, 0xf4, 0x85, 0xf7, 0x86, 0xf5, 0x8b, 0xf7, 0x86, 0xf5, - 0x8b, 0xf7, 0x87, 0xf5, 0x8b, 0xf7, 0x87, 0xf5, 0x8b, 0xf7, 0x88, 0xf5, - 0x8b, 0xf7, 0x88, 0xf5, 0x8b, 0xf7, 0x89, 0xf5, 0x8b, 0xf7, 0x89, 0xf5, - 0x8b, 0xf7, 0x8a, 0xf5, 0x8b, 0xf7, 0x8a, 0xf5, 0x8b, 0xf7, 0x8b, 0xf5, - 0x8b, 0xf7, 0x8b, 0xf5, 0x90, 0xf7, 0x8c, 0xf5, 0x90, 0xf7, 0x8c, 0xf5, - 0x90, 0xf7, 0x8d, 0xf5, 0x90, 0xf7, 0x8d, 0xf5, 0x90, 0xf7, 0x8e, 0xf5, - 0x90, 0xf7, 0x8e, 0xf5, 0x90, 0xf7, 0x8e, 0xf5, 0x90, 0xf7, 0x8f, 0xf5, - 0x90, 0xf7, 0x8f, 0xf5, 0x90, 0xf7, 0x90, 0xf5, 0x90, 0xf7, 0x90, 0xf6, - 0x95, 0xf7, 0x91, 0xf6, 0x95, 0xf7, 0x91, 0xf6, 0x95, 0xf7, 0x92, 0xf6, - 0x95, 0xf7, 0x92, 0xf6, 0x95, 0xf7, 0x93, 0xf6, 0x95, 0xf7, 0x93, 0xf6, - 0x95, 0xf7, 0x94, 0xf6, 0x95, 0xf7, 0x94, 0xf6, 0x95, 0xf7, 0x94, 0xf6, - 0x95, 0xf7, 0x95, 0xf6, 0x95, 0xf7, 0x95, 0xf6, 0x95, 0xf7, 0x96, 0xf6, - 0x96, 0xf7, 0x96, 0xf6, 0x9a, 0xf7, 0x97, 0xf6, 0x9a, 0xf7, 0x97, 0xf6, - 0x9a, 0xf7, 0x98, 0xf6, 0x9a, 0xf7, 0x98, 0xf6, 0x9a, 0xf7, 0x98, 0xf6, - 0x9a, 0xf7, 0x99, 0xf6, 0x9a, 0xf7, 0x99, 0xf6, 0x9a, 0xf7, 0x9a, 0xf6, - 0x9a, 0xf7, 0x9a, 0xf6, 0x9a, 0xf7, 0x9a, 0xf6, 0x9a, 0xf7, 0x9b, 0xf7, - 0x9e, 0xf7, 0x9b, 0xf7, 0x9f, 0xf7, 0x9c, 0xf7, 0x9e, 0xf7, 0x9c, 0xf7, - 0x9f, 0xf7, 0x9d, 0xf7, 0x9e, 0xf7, 0x9d, 0xf7, 0x9f, 0xf7, 0x9d, 0xf7, - 0x9e, 0xf7, 0x9e, 0xf7, 0x9f, 0xf7, 0x9e, 0xf7, 0x9e, 0xf7, 0x9f, 0xf7, - 0x9f, 0xf7, 0x9f, 0xf7, 0x9f, 0xf7, 0x9f, 0xf7, 0xa3, 0xf7, 0xa0, 0xf7, - 0xa3, 0xf7, 0xa0, 0xf7, 0xa3, 0xf7, 0xa1, 0xf7, 0xa3, 0xf7, 0xa1, 0xf7, - 0xa3, 0xf7, 0xa1, 0xf7, 0xa3, 0xf7, 0xa2, 0xf7, 0xa3, 0xf7, 0xa2, 0xf7, - 0xa3, 0xf7, 0xa3, 0xf7, 0xa3, 0xf7, 0xa3, 0xf7, 0xa3, 0xf7, 0xa3, 0xf7, - 0xa3, 0xf7, 0xa4, 0xf8, 0xa7, 0xf7, 0xa4, 0xf8, 0xa7, 0xf7, 0xa5, 0xf8, - 0xa7, 0xf7, 0xa5, 0xf8, 0xa7, 0xf7, 0xa5, 0xf8, 0xa7, 0xf7, 0xa6, 0xf8, - 0xa7, 0xf7, 0xa6, 0xf8, 0xa7, 0xf7, 0xa6, 0xf8, 0xa9, 0xf7, 0xa7, 0xf8, - 0xa7, 0xf7, 0xa7, 0xf8, 0xa9, 0xf7, 0xa8, 0xf8, 0xa9, 0xf7, 0xa8, 0xf8, - 0xa9, 0xf7, 0xa8, 0xf8, 0xa9, 0xf7, 0xa9, 0xf8, 0xa9, 0xf7, 0xa9, 0xf8, - 0xa9, 0xf7, 0xaa, 0xf8, 0xab, 0xf7, 0xaa, 0xf8, 0xab, 0xf7, 0xaa, 0xf8, - 0xab, 0xf7, 0xab, 0xf8, 0xab, 0xf7, 0xab, 0xf8, 0xab, 0xf7, 0xab, 0xf8, - 0xab, 0xf7, 0xac, 0xf8, 0xac, 0xf7, 0xac, 0xf8, 0xac, 0xf7, 0xac, 0xf8, - 0xac, 0xf7, 0xad, 0xf8, 0xaf, 0xf7, 0xad, 0xf8, 0xaf, 0xf7, 0xae, 0xf8, - 0xaf, 0xf7, 0xae, 0xf8, 0xaf, 0xf7, 0xae, 0xf8, 0xaf, 0xf7, 0xaf, 0xf8, - 0xaf, 0xf7, 0xaf, 0xf8, 0xaf, 0xf7, 0xaf, 0xf8, 0xaf, 0xf7, 0xb0, 0xf8, - 0xb0, 0xf7, 0xb0, 0xf8, 0xb0, 0xf7, 0xb0, 0xf8, 0xb0, 0xf7, 0xb1, 0xf9, - 0xb3, 0xf7, 0xb1, 0xf9, 0xb3, 0xf7, 0xb2, 0xf9, 0xb3, 0xf7, 0xb2, 0xf9, - 0xb3, 0xf7, 0xb2, 0xf9, 0xb3, 0xf7, 0xb3, 0xf9, 0xb3, 0xf7, 0xb3, 0xf9, - 0xb3, 0xf7, 0xb3, 0xf9, 0xb3, 0xf7, 0xb4, 0xf9, 0xb4, 0xf7, 0xb4, 0xf9, - 0xb4, 0xf7, 0xb4, 0xf9, 0xb4, 0xf7, 0xb5, 0xf9, 0xb7, 0xf7, 0xb5, 0xf9, - 0xb7, 0xf7, 0xb5, 0xf9, 0xb7, 0xf7, 0xb6, 0xf9, 0xb7, 0xf7, 0xb6, 0xf9, - 0xb7, 0xf7, 0xb6, 0xf9, 0xb7, 0xf7, 0xb7, 0xf9, 0xb7, 0xf7, 0xb7, 0xf9, - 0xb7, 0xf7, 0xb7, 0xf9, 0xb7, 0xf7, 0xb8, 0xf9, 0xb8, 0xf7, 0xb8, 0xf9, - 0xb8, 0xf7, 0xb8, 0xf9, 0xb8, 0xf7, 0xb9, 0xf9, 0xb9, 0xf7, 0xb9, 0xfa, - 0xba, 0xf7, 0xb9, 0xfa, 0xbb, 0xf7, 0xba, 0xfa, 0xba, 0xf7, 0xba, 0xfa, - 0xbb, 0xf7, 0xba, 0xfa, 0xba, 0xf7, 0xbb, 0xfa, 0xbb, 0xf7, 0xbb, 0xfa, - 0xbb, 0xf7, 0xbb, 0xfa, 0xbb, 0xf7, 0xbc, 0xfa, 0xbc, 0xf7, 0xbc, 0xfa, - 0xbc, 0xf7, 0xbc, 0xfa, 0xbc, 0xf7, 0xbd, 0xfa, 0xbe, 0xf7, 0xbd, 0xfa, - 0xbe, 0xf7, 0xbd, 0xfa, 0xbe, 0xf7, 0xbe, 0xfa, 0xbe, 0xf7, 0xbe, 0xfa, - 0xbe, 0xf7, 0xbe, 0xfa, 0xbe, 0xf7, 0xbf, 0xfa, 0xbf, 0xf7, 0xbf, 0xfa, - 0xbf, 0xf7, 0xbf, 0xfa, 0xbf, 0xf7, 0xc0, 0xfa, 0xc0, 0xf7, 0xc0, 0xfa, - 0xc0, 0xf7, 0xc0, 0xfb, 0xc1, 0xf7, 0xc1, 0xfb, 0xc2, 0xf7, 0xc1, 0xfb, - 0xc1, 0xf7, 0xc1, 0xfb, 0xc2, 0xf7, 0xc1, 0xfb, 0xc1, 0xf7, 0xc2, 0xfb, - 0xc2, 0xf7, 0xc2, 0xfb, 0xc2, 0xf7, 0xc2, 0xfb, 0xc2, 0xf7, 0xc3, 0xfb, - 0xc3, 0xf7, 0xc3, 0xfb, 0xc3, 0xf7, 0xc3, 0xfb, 0xc3, 0xf7, 0xc4, 0xfb, - 0xc4, 0xf7, 0xc4, 0xfb, 0xc4, 0xf7, 0xc4, 0xfb, 0xc5, 0xf7, 0xc5, 0xfb, - 0xc5, 0xf7, 0xc5, 0xfb, 0xc5, 0xf7, 0xc5, 0xfb, 0xc5, 0xf7, 0xc6, 0xfb, - 0xc6, 0xf7, 0xc6, 0xfb, 0xc6, 0xf7, 0xc6, 0xfb, 0xc6, 0xf7, 0xc6, 0xfb, - 0xc6, 0xf7, 0xc7, 0xfb, 0xc7, 0xf7, 0xc7, 0xfb, 0xc7, 0xf7, 0xc7, 0xfb, - 0xc7, 0xf7, 0xc8, 0xfb, 0xc8, 0xf7, 0xc8, 0xfb, 0xc8, 0xf7, 0xc8, 0xfc, - 0xc8, 0xf8, 0xc9, 0xfc, 0xc9, 0xf8, 0xc9, 0xfc, 0xc9, 0xf8, 0xc9, 0xfc, - 0xc9, 0xf8, 0xc9, 0xfc, 0xc9, 0xf8, 0xca, 0xfc, 0xca, 0xf8, 0xca, 0xfc, - 0xca, 0xf8, 0xca, 0xfc, 0xca, 0xf8, 0xcb, 0xfc, 0xcb, 0xf8, 0xcb, 0xfc, - 0xcb, 0xf8, 0xcb, 0xfc, 0xcb, 0xf6, 0xcc, 0xfc, 0xcc, 0xf6, 0xcc, 0xfc, - 0xcc, 0xf6, 0xcc, 0xfc, 0xcc, 0xf6, 0xcc, 0xfc, 0xcc, 0xf6, 0xcd, 0xfc, - 0xcd, 0xf6, 0xcd, 0xfc, 0xcd, 0xf6, 0xcd, 0xfc, 0xcd, 0xf6, 0xce, 0xfc, - 0xce, 0xf6, 0xce, 0xfc, 0xce, 0xf6, 0xce, 0xfc, 0xce, 0xf6, 0xce, 0xfc, - 0xce, 0xf7, 0xcf, 0xfc, 0xcf, 0xf7, 0xcf, 0xfc, 0xcf, 0xf7, 0xcf, 0xfc, - 0xcf, 0xf7, 0xd0, 0xfc, 0xd0, 0xf7, 0xd0, 0xfc, 0xd0, 0xf7, 0xd0, 0xfc, - 0xd0, 0xf7, 0xd0, 0xfc, 0xd0, 0xf7, 0xd1, 0xfc, 0xd1, 0xf7, 0xd1, 0xfc, - 0xd1, 0xf7, 0xd1, 0xfc, 0xd1, 0xf7, 0xd2, 0xfc, 0xd1, 0xf7, 0xd2, 0xfc, - 0xd2, 0xf7, 0xd2, 0xfc, 0xd2, 0xf7, 0xd2, 0xfc, 0xd2, 0xf7, 0xd3, 0xfc, - 0xd3, 0xf7, 0xd3, 0xfc, 0xd3, 0xf7, 0xd3, 0xfc, 0xd3, 0xf7, 0xd4, 0xfc, - 0xd4, 0xf7, 0xd4, 0xfc, 0xd4, 0xf7, 0xd4, 0xfc, 0xd4, 0xf7, 0xd4, 0xfc, - 0xd4, 0xf7, 0xd5, 0xfc, 0xd4, 0xf7, 0xd5, 0xfc, 0xd4, 0xf7, 0xd5, 0xfc, - 0xd4, 0xf7, 0xd6, 0xfd, 0xd6, 0xf7, 0xd6, 0xfd, 0xd6, 0xf7, 0xd6, 0xfd, - 0xd6, 0xf7, 0xd6, 0xfd, 0xd6, 0xf7, 0xd7, 0xfd, 0xd7, 0xf7, 0xd7, 0xfd, - 0xd7, 0xf7, 0xd7, 0xfd, 0xd7, 0xf7, 0xd7, 0xfd, 0xd7, 0xf7, 0xd8, 0xfd, - 0xd7, 0xf7, 0xd8, 0xfd, 0xd7, 0xf7, 0xd8, 0xfd, 0xd7, 0xf7, 0xd9, 0xfd, - 0xd9, 0xf7, 0xd9, 0xfd, 0xd9, 0xf7, 0xd9, 0xfd, 0xd9, 0xf7, 0xd9, 0xfd, - 0xd9, 0xf7, 0xda, 0xfd, 0xda, 0xf7, 0xda, 0xfd, 0xda, 0xf7, 0xda, 0xfd, - 0xda, 0xf7, 0xda, 0xfd, 0xda, 0xf7, 0xdb, 0xfd, 0xda, 0xf7, 0xdb, 0xfd, - 0xda, 0xf7, 0xdb, 0xfd, 0xda, 0xf7, 0xdb, 0xfe, 0xdb, 0xf7, 0xdc, 0xfe, - 0xdc, 0xf7, 0xdc, 0xfe, 0xdc, 0xf7, 0xdc, 0xfe, 0xdc, 0xf7, 0xdd, 0xfe, - 0xdd, 0xf7, 0xdd, 0xfe, 0xdd, 0xf7, 0xdd, 0xfe, 0xdd, 0xf7, 0xdd, 0xfe, - 0xdd, 0xf7, 0xde, 0xfe, 0xdd, 0xf7, 0xde, 0xfe, 0xdd, 0xf7, 0xde, 0xfe, - 0xdd, 0xf7, 0xde, 0xfe, 0xdd, 0xf7, 0xdf, 0xfe, 0xdd, 0xf7, 0xdf, 0xfe, - 0xdf, 0xf7, 0xdf, 0xfe, 0xdf, 0xf7, 0xdf, 0xfe, 0xdf, 0xf7, 0xe0, 0xfd, - 0xe2, 0xf7, 0xe0, 0xfc, 0xe3, 0xf7, 0xe0, 0xfd, 0xe2, 0xf7, 0xe1, 0xfc, - 0xe3, 0xf7, 0xe1, 0xfc, 0xe3, 0xf7, 0xe1, 0xfc, 0xe3, 0xf7, 0xe1, 0xfc, - 0xe3, 0xf7, 0xe2, 0xfc, 0xe3, 0xf7, 0xe2, 0xfc, 0xe3, 0xf7, 0xe2, 0xfc, - 0xe3, 0xf7, 0xe2, 0xfc, 0xe3, 0xf7, 0xe3, 0xfc, 0xe3, 0xf7, 0xe2, 0xfc, - 0xe3, 0xf7, 0xe3, 0xfc, 0xe3, 0xf7, 0xe2, 0xfc, 0xe3, 0xf7, 0xe3, 0xfc, - 0xe4, 0xf7, 0xe5, 0xfc, 0xe4, 0xf7, 0xe5, 0xfc, 0xe4, 0xf8, 0xe5, 0xfc, - 0xe4, 0xf7, 0xe5, 0xfc, 0xe5, 0xf7, 0xe5, 0xfc, 0xe4, 0xf7, 0xe5, 0xfc, - 0xe5, 0xf7, 0xe5, 0xfc, 0xe4, 0xf7, 0xe6, 0xfc, 0xe5, 0xf7, 0xe6, 0xfc, - 0xe4, 0xf7, 0xe6, 0xfc, 0xe5, 0xf7, 0xe6, 0xfc, 0xe4, 0xf7, 0xe7, 0xfc, - 0xe5, 0xf7, 0xe7, 0xfa, 0xe5, 0xf7, 0xe7, 0xfc, 0xe5, 0xf7, 0xe7, 0xfa, - 0xe5, 0xf7, 0xe8, 0xfc, 0xe5, 0xf7, 0xe8, 0xfa, 0xe5, 0xf7, 0xe8, 0xfc, - 0xe5, 0xf7, 0xe8, 0xfa, 0xe5, 0xf7, 0xe9, 0xfc, 0xe5, 0xf7, 0xe9, 0xfa, - 0xe5, 0xf7, 0xe9, 0xfc, 0xe5, 0xf7, 0xe9, 0xfa, 0xe5, 0xf7, 0xea, 0xfc, - 0xe5, 0xf7, 0xea, 0xfc, 0xee, 0xf7, 0xea, 0xfc, 0xee, 0xf7, 0xea, 0xfc, - 0xee, 0xf7, 0xeb, 0xfc, 0xee, 0xf7, 0xeb, 0xfc, 0xee, 0xf7, 0xeb, 0xfc, - 0xee, 0xf7, 0xeb, 0xfc, 0xee, 0xf7, 0xec, 0xfc, 0xee, 0xf7, 0xec, 0xfc, - 0xee, 0xf7, 0xec, 0xfc, 0xee, 0xf7, 0xec, 0xfc, 0xee, 0xf7, 0xec, 0xfc, - 0xee, 0xf7, 0xed, 0xfc, 0xee, 0xf7, 0xed, 0xfc, 0xee, 0xf7, 0xed, 0xfc, - 0xee, 0xf7, 0xed, 0xfc, 0xee, 0xf7, 0xee, 0xfc, 0xef, 0xf7, 0xee, 0xfc, - 0xee, 0xf7, 0xee, 0xfc, 0xef, 0xf7, 0xee, 0xfc, 0xee, 0xf7, 0xee, 0xfc, - 0xef, 0xf7, 0xef, 0xfc, 0xee, 0xf7, 0xef, 0xfc, 0xef, 0xf7, 0xef, 0xfc, - 0xee, 0xf7, 0xf0, 0xfc, 0xef, 0xf7, 0xf0, 0xfb, 0xef, 0xf7, 0xf0, 0xfc, - 0xef, 0xf7, 0xf0, 0xfb, 0xef, 0xf7, 0xf1, 0xfc, 0xef, 0xf7, 0xf1, 0xfb, - 0xef, 0xf7, 0xf1, 0xfc, 0xef, 0xf7, 0xf1, 0xfb, 0xef, 0xf7, 0xf2, 0xfc, - 0xef, 0xf7, 0xf2, 0xfb, 0xef, 0xf7, 0xf2, 0xfc, 0xef, 0xf7, 0xf2, 0xfb, - 0xef, 0xf7, 0xf2, 0xfc, 0xef, 0xf7, 0xf3, 0xfb, 0xef, 0xf7, 0xf3, 0xfc, - 0xef, 0xf7, 0xf3, 0xfb, 0xef, 0xf7, 0xf3, 0xfc, 0xef, 0xf7, 0xf4, 0xfb, - 0xef, 0xf7, 0xf4, 0xfc, 0xef, 0xf7, 0xf4, 0xfb, 0xef, 0xf7, 0xf4, 0xfc, - 0xef, 0xf7, 0xf5, 0xfb, 0xef, 0xf7, 0xf5, 0xf9, 0xef, 0xf7, 0xf5, 0xfb, - 0xef, 0xf7, 0xf5, 0xf9, 0xef, 0xf7, 0xf5, 0xfb, 0xef, 0xf7, 0xf6, 0xf9, - 0xef, 0xf7, 0xf6, 0xfb, 0xef, 0xf7, 0xf6, 0xf9, 0xef, 0xf7, 0xf6, 0xfb, - 0xef, 0xf7, 0xf7, 0xf9, 0xef, 0xf7, 0xf7, 0xfb, 0xef, 0xf7, 0xf7, 0xf9, - 0xef, 0xf7, 0xf7, 0xfb, 0xef, 0xf7, 0xf8, 0xf9, 0xef, 0xf7, 0xf8, 0xfb, - 0xef, 0xf7, 0xf8, 0xf9, 0xef, 0xf7, 0xf8, 0xfb, 0xef, 0xf7, 0xf8, 0xf9, - 0xef, 0xf7, 0xf9, 0xfb, 0xef, 0xf7, 0xf9, 0xf9, 0xef, 0xf7, 0xf9, 0xfb, - 0xef, 0xf7, 0xf9, 0xf9, 0xef, 0xf7, 0xfa, 0xfb, 0xef, 0xf7, 0xfa, 0xf9, - 0xef, 0xf7, 0xfa, 0xfb, 0xef, 0xf7, 0xfa, 0xf9, 0xef, 0xf7, 0xfa, 0xfb, - 0xef, 0xf7, 0xfb, 0xf9, 0xef, 0xf7, 0xfb, 0xfb, 0xef, 0xf7, 0xfb, 0xf9, - 0xef, 0xf7, 0xfb, 0xfb, 0xef, 0xf7, 0xfc, 0xf9, 0xef, 0xf7, 0xfc, 0xfb, - 0xef, 0xf7, 0xfc, 0xf9, 0xef, 0xf7, 0xfc, 0xfb, 0xef, 0xf7, 0xfc, 0xf9, - 0xef, 0xf7, 0xfd, 0xfb, 0xef, 0xf7, 0xfd, 0xf9, 0xef, 0xf7, 0xfd, 0xf8, - 0xef, 0xf7, 0xfd, 0xf9, 0xef, 0xf7, 0xfe, 0xf8, 0xef, 0xf7, 0xfe, 0xf9, - 0xef, 0xf7, 0xfe, 0xf8, 0xef, 0xf7, 0xfe, 0xf9, 0xef, 0xf7, 0xfe, 0xf8, - 0xef, 0xf7, 0xff, 0xf9, 0xef, 0xf7, 0xff, 0xf8, 0xef, 0xf7, 0x03, 0xf4, - 0x83, 0xf8, 0x0a, 0xf4, 0x83, 0xf8, 0x0f, 0xf4, 0x83, 0xf8, 0x14, 0xf4, - 0x83, 0xf8, 0x17, 0xf4, 0x83, 0xf8, 0x1b, 0xf4, 0x83, 0xf8, 0x1e, 0xf4, - 0x83, 0xf8, 0x20, 0xf4, 0x83, 0xf8, 0x23, 0xf4, 0x83, 0xf8, 0x25, 0xf4, - 0x83, 0xf8, 0x27, 0xf4, 0x83, 0xf8, 0x29, 0xf4, 0x83, 0xf8, 0x2b, 0xf4, - 0x83, 0xf8, 0x2d, 0xf4, 0x83, 0xf8, 0x2f, 0xf4, 0x83, 0xf8, 0x31, 0xf4, - 0x83, 0xf8, 0x32, 0xf4, 0x83, 0xf8, 0x34, 0xf4, 0x83, 0xf8, 0x35, 0xf4, - 0x83, 0xf8, 0x37, 0xf4, 0x83, 0xf8, 0x38, 0xf4, 0x83, 0xf8, 0x3a, 0xf4, - 0x83, 0xf8, 0x3b, 0xf4, 0x83, 0xf8, 0x3c, 0xf4, 0x83, 0xf8, 0x3e, 0xf4, - 0x83, 0xf8, 0x3f, 0xf4, 0x83, 0xf8, 0x40, 0xf4, 0x83, 0xf8, 0x42, 0xf4, - 0x83, 0xf8, 0x43, 0xf4, 0x83, 0xf8, 0x44, 0xf4, 0x83, 0xf8, 0x45, 0xf4, - 0x83, 0xf8, 0x46, 0xf4, 0x83, 0xf8, 0x47, 0xf4, 0x83, 0xf8, 0x48, 0xf4, - 0x83, 0xf8, 0x49, 0xf4, 0x83, 0xf8, 0x4a, 0xf4, 0x83, 0xf8, 0x4b, 0xf4, - 0x83, 0xf8, 0x4c, 0xf4, 0x83, 0xf8, 0x4d, 0xf4, 0x83, 0xf8, 0x4e, 0xf4, - 0x83, 0xf8, 0x4f, 0xf4, 0x83, 0xf8, 0x50, 0xf4, 0x83, 0xf8, 0x51, 0xf4, - 0x83, 0xf8, 0x52, 0xf4, 0x83, 0xf8, 0x53, 0xf4, 0x83, 0xf8, 0x54, 0xf4, - 0x83, 0xf8, 0x55, 0xf4, 0x83, 0xf8, 0x56, 0xf4, 0x83, 0xf8, 0x57, 0xf4, - 0x83, 0xf8, 0x58, 0xf4, 0x83, 0xf8, 0x58, 0xf4, 0x83, 0xf8, 0x59, 0xf4, - 0x83, 0xf8, 0x5a, 0xf4, 0x83, 0xf8, 0x5b, 0xf4, 0x83, 0xf8, 0x5c, 0xf4, - 0x83, 0xf8, 0x5d, 0xf4, 0x83, 0xf8, 0x5d, 0xf4, 0x83, 0xf8, 0x5e, 0xf4, - 0x83, 0xf8, 0x5f, 0xf4, 0x83, 0xf8, 0x60, 0xf4, 0x83, 0xf8, 0x60, 0xf4, - 0x83, 0xf8, 0x61, 0xf4, 0x83, 0xf8, 0x62, 0xf4, 0x83, 0xf8, 0x63, 0xf4, - 0x83, 0xf8, 0x63, 0xf4, 0x83, 0xf8, 0x64, 0xf4, 0x83, 0xf8, 0x65, 0xf4, - 0x83, 0xf8, 0x66, 0xf4, 0x83, 0xf8, 0x66, 0xf4, 0x83, 0xf8, 0x67, 0xf4, - 0x83, 0xf8, 0x68, 0xf4, 0x83, 0xf8, 0x68, 0xf4, 0x83, 0xf8, 0x69, 0xf4, - 0x83, 0xf8, 0x6a, 0xf4, 0x83, 0xf8, 0x6a, 0xf4, 0x83, 0xf8, 0x6b, 0xf4, - 0x83, 0xf8, 0x6c, 0xf4, 0x83, 0xf8, 0x6c, 0xf4, 0x83, 0xf8, 0x6d, 0xf4, - 0x83, 0xf8, 0x6e, 0xf4, 0x83, 0xf8, 0x6e, 0xf4, 0x83, 0xf8, 0x6f, 0xf4, - 0x83, 0xf8, 0x70, 0xf4, 0x83, 0xf8, 0x70, 0xf4, 0x83, 0xf8, 0x71, 0xf4, - 0x83, 0xf8, 0x72, 0xf4, 0x83, 0xf8, 0x72, 0xf4, 0x83, 0xf8, 0x73, 0xf4, - 0x83, 0xf8, 0x73, 0xf4, 0x83, 0xf8, 0x74, 0xf4, 0x83, 0xf8, 0x75, 0xf4, - 0x83, 0xf8, 0x75, 0xf4, 0x83, 0xf8, 0x76, 0xf4, 0x83, 0xf8, 0x76, 0xf4, - 0x83, 0xf8, 0x77, 0xf4, 0x83, 0xf8, 0x78, 0xf4, 0x83, 0xf8, 0x78, 0xf4, - 0x83, 0xf8, 0x79, 0xf4, 0x83, 0xf8, 0x79, 0xf4, 0x83, 0xf8, 0x7a, 0xf4, - 0x83, 0xf8, 0x7a, 0xf4, 0x83, 0xf8, 0x7b, 0xf4, 0x83, 0xf8, 0x7c, 0xf4, - 0x83, 0xf8, 0x7c, 0xf4, 0x83, 0xf8, 0x7d, 0xf4, 0x83, 0xf8, 0x7d, 0xf4, - 0x83, 0xf8, 0x7e, 0xf4, 0x83, 0xf8, 0x7e, 0xf4, 0x83, 0xf8, 0x7f, 0xf4, - 0x83, 0xf8, 0x7f, 0xf4, 0x83, 0xf8, 0x80, 0xf4, 0x83, 0xf8, 0x81, 0xf4, - 0x83, 0xf8, 0x81, 0xf4, 0x83, 0xf8, 0x82, 0xf4, 0x83, 0xf8, 0x82, 0xf4, - 0x83, 0xf8, 0x83, 0xf5, 0x88, 0xf8, 0x83, 0xf5, 0x88, 0xf8, 0x84, 0xf5, - 0x88, 0xf8, 0x84, 0xf5, 0x88, 0xf8, 0x85, 0xf5, 0x88, 0xf8, 0x85, 0xf5, - 0x88, 0xf8, 0x86, 0xf5, 0x88, 0xf8, 0x86, 0xf5, 0x88, 0xf8, 0x87, 0xf5, - 0x88, 0xf8, 0x87, 0xf5, 0x88, 0xf8, 0x88, 0xf5, 0x88, 0xf8, 0x88, 0xf5, - 0x8d, 0xf8, 0x89, 0xf5, 0x8e, 0xf8, 0x89, 0xf5, 0x8d, 0xf8, 0x8a, 0xf5, - 0x8e, 0xf8, 0x8a, 0xf5, 0x8d, 0xf8, 0x8b, 0xf5, 0x8e, 0xf8, 0x8b, 0xf5, - 0x8d, 0xf8, 0x8c, 0xf5, 0x8e, 0xf8, 0x8c, 0xf5, 0x8d, 0xf8, 0x8d, 0xf5, - 0x8e, 0xf8, 0x8d, 0xf5, 0x8d, 0xf8, 0x8e, 0xf5, 0x92, 0xf8, 0x8e, 0xf5, - 0x93, 0xf8, 0x8e, 0xf5, 0x92, 0xf8, 0x8f, 0xf5, 0x93, 0xf8, 0x8f, 0xf5, - 0x92, 0xf8, 0x90, 0xf5, 0x93, 0xf8, 0x90, 0xf5, 0x92, 0xf8, 0x91, 0xf5, - 0x93, 0xf8, 0x91, 0xf5, 0x92, 0xf8, 0x92, 0xf5, 0x93, 0xf8, 0x92, 0xf5, - 0x92, 0xf8, 0x93, 0xf6, 0x97, 0xf8, 0x93, 0xf6, 0x98, 0xf8, 0x94, 0xf6, - 0x97, 0xf8, 0x94, 0xf6, 0x98, 0xf8, 0x94, 0xf6, 0x97, 0xf8, 0x95, 0xf6, - 0x98, 0xf8, 0x95, 0xf6, 0x97, 0xf8, 0x96, 0xf6, 0x98, 0xf8, 0x96, 0xf6, - 0x97, 0xf8, 0x97, 0xf6, 0x98, 0xf8, 0x97, 0xf6, 0x97, 0xf8, 0x98, 0xf6, - 0x98, 0xf8, 0x98, 0xf6, 0x98, 0xf8, 0x98, 0xf6, 0x9c, 0xf8, 0x99, 0xf6, - 0x9c, 0xf8, 0x99, 0xf6, 0x9c, 0xf8, 0x9a, 0xf6, 0x9c, 0xf8, 0x9a, 0xf6, - 0x9c, 0xf8, 0x9a, 0xf6, 0x9c, 0xf8, 0x9b, 0xf6, 0x9c, 0xf8, 0x9b, 0xf6, - 0x9c, 0xf8, 0x9c, 0xf6, 0x9c, 0xf8, 0x9c, 0xf6, 0x9c, 0xf8, 0x9d, 0xf6, - 0x9d, 0xf8, 0x9d, 0xf7, 0xa0, 0xf8, 0x9d, 0xf7, 0xa1, 0xf8, 0x9e, 0xf7, - 0xa0, 0xf8, 0x9e, 0xf7, 0xa1, 0xf8, 0x9f, 0xf7, 0xa0, 0xf8, 0x9f, 0xf7, - 0xa1, 0xf8, 0x9f, 0xf7, 0xa0, 0xf8, 0xa0, 0xf7, 0xa1, 0xf8, 0xa0, 0xf7, - 0xa0, 0xf8, 0xa1, 0xf7, 0xa1, 0xf8, 0xa1, 0xf7, 0xa1, 0xf8, 0xa1, 0xf7, - 0xa5, 0xf8, 0xa2, 0xf7, 0xa5, 0xf8, 0xa2, 0xf7, 0xa5, 0xf8, 0xa3, 0xf7, - 0xa5, 0xf8, 0xa3, 0xf7, 0xa5, 0xf8, 0xa3, 0xf7, 0xa5, 0xf8, 0xa4, 0xf7, - 0xa5, 0xf8, 0xa4, 0xf7, 0xa5, 0xf8, 0xa5, 0xf7, 0xa5, 0xf8, 0xa5, 0xf7, - 0xa5, 0xf8, 0xa5, 0xf7, 0xa5, 0xf8, 0xa6, 0xf8, 0xa9, 0xf8, 0xa6, 0xf8, - 0xa9, 0xf8, 0xa6, 0xf8, 0xa9, 0xf8, 0xa7, 0xf8, 0xa9, 0xf8, 0xa7, 0xf8, - 0xa9, 0xf8, 0xa8, 0xf8, 0xa9, 0xf8, 0xa8, 0xf8, 0xa9, 0xf8, 0xa8, 0xf8, - 0xa9, 0xf8, 0xa9, 0xf8, 0xa9, 0xf8, 0xa9, 0xf8, 0xa9, 0xf8, 0xaa, 0xf8, - 0xaa, 0xf8, 0xaa, 0xf8, 0xad, 0xf8, 0xaa, 0xf8, 0xad, 0xf8, 0xab, 0xf8, - 0xad, 0xf8, 0xab, 0xf8, 0xad, 0xf8, 0xab, 0xf8, 0xad, 0xf8, 0xac, 0xf8, - 0xad, 0xf8, 0xac, 0xf8, 0xad, 0xf8, 0xac, 0xf8, 0xad, 0xf8, 0xad, 0xf8, - 0xad, 0xf8, 0xad, 0xf8, 0xad, 0xf8, 0xae, 0xf8, 0xae, 0xf8, 0xae, 0xf8, - 0xae, 0xf8, 0xae, 0xf8, 0xae, 0xf8, 0xaf, 0xf9, 0xb1, 0xf8, 0xaf, 0xf9, - 0xb1, 0xf8, 0xaf, 0xf9, 0xb1, 0xf8, 0xb0, 0xf9, 0xb1, 0xf8, 0xb0, 0xf9, - 0xb1, 0xf8, 0xb0, 0xf9, 0xb1, 0xf8, 0xb1, 0xf9, 0xb1, 0xf8, 0xb1, 0xf9, - 0xb1, 0xf8, 0xb2, 0xf9, 0xb2, 0xf8, 0xb2, 0xf9, 0xb2, 0xf8, 0xb2, 0xf9, - 0xb2, 0xf8, 0xb3, 0xf9, 0xb5, 0xf8, 0xb3, 0xf9, 0xb5, 0xf8, 0xb3, 0xf9, - 0xb5, 0xf8, 0xb4, 0xf9, 0xb5, 0xf8, 0xb4, 0xf9, 0xb5, 0xf8, 0xb4, 0xf9, - 0xb5, 0xf8, 0xb5, 0xf9, 0xb5, 0xf8, 0xb5, 0xf9, 0xb5, 0xf8, 0xb5, 0xf9, - 0xb5, 0xf8, 0xb6, 0xf9, 0xb6, 0xf8, 0xb6, 0xf9, 0xb6, 0xf8, 0xb6, 0xfa, - 0xb8, 0xf8, 0xb7, 0xfa, 0xb9, 0xf8, 0xb7, 0xfa, 0xb8, 0xf8, 0xb7, 0xfa, - 0xb9, 0xf8, 0xb8, 0xfa, 0xb8, 0xf8, 0xb8, 0xfa, 0xb9, 0xf8, 0xb8, 0xfa, - 0xb8, 0xf8, 0xb9, 0xfa, 0xb9, 0xf8, 0xb9, 0xfa, 0xb9, 0xf8, 0xb9, 0xfa, - 0xb9, 0xf8, 0xba, 0xfa, 0xba, 0xf8, 0xba, 0xfa, 0xba, 0xf8, 0xba, 0xfa, - 0xba, 0xf8, 0xbb, 0xfa, 0xbc, 0xf8, 0xbb, 0xfa, 0xbc, 0xf8, 0xbb, 0xfa, - 0xbc, 0xf8, 0xbc, 0xfa, 0xbc, 0xf8, 0xbc, 0xfa, 0xbc, 0xf8, 0xbc, 0xfa, - 0xbc, 0xf8, 0xbd, 0xfa, 0xbd, 0xf8, 0xbd, 0xfa, 0xbd, 0xf8, 0xbd, 0xfa, - 0xbd, 0xf8, 0xbe, 0xfa, 0xbe, 0xf8, 0xbe, 0xfa, 0xbe, 0xf8, 0xbe, 0xfa, - 0xc0, 0xf8, 0xbf, 0xfa, 0xc0, 0xf8, 0xbf, 0xfa, 0xc0, 0xf8, 0xbf, 0xfa, - 0xc0, 0xf8, 0xc0, 0xfa, 0xc0, 0xf8, 0xc0, 0xfa, 0xc0, 0xf8, 0xc0, 0xfa, - 0xc0, 0xf8, 0xc1, 0xfa, 0xc1, 0xf8, 0xc1, 0xfa, 0xc1, 0xf8, 0xc1, 0xfa, - 0xc1, 0xf8, 0xc1, 0xfa, 0xc1, 0xf8, 0xc2, 0xfb, 0xc3, 0xf8, 0xc2, 0xfb, - 0xc3, 0xf8, 0xc2, 0xfb, 0xc3, 0xf8, 0xc3, 0xfb, 0xc3, 0xf8, 0xc3, 0xfb, - 0xc3, 0xf8, 0xc3, 0xfb, 0xc3, 0xf8, 0xc4, 0xfb, 0xc4, 0xf8, 0xc4, 0xfb, - 0xc4, 0xf8, 0xc4, 0xfb, 0xc4, 0xf8, 0xc5, 0xfb, 0xc5, 0xf8, 0xc5, 0xfb, - 0xc5, 0xf8, 0xc5, 0xfb, 0xc5, 0xf8, 0xc6, 0xfb, 0xc6, 0xf8, 0xc6, 0xfb, - 0xc6, 0xf8, 0xc6, 0xfb, 0xc7, 0xf8, 0xc6, 0xfb, 0xc6, 0xf8, 0xc7, 0xfb, - 0xc7, 0xf8, 0xc7, 0xfb, 0xc7, 0xf8, 0xc7, 0xfb, 0xc7, 0xf8, 0xc8, 0xfb, - 0xc8, 0xf8, 0xc8, 0xfb, 0xc8, 0xf8, 0xc8, 0xfb, 0xc8, 0xf8, 0xc9, 0xfb, - 0xc9, 0xf8, 0xc9, 0xfb, 0xc9, 0xf8, 0xc9, 0xfb, 0xc9, 0xf8, 0xc9, 0xfb, - 0xc9, 0xf8, 0xc9, 0xfc, 0xca, 0xf8, 0xc9, 0xfc, 0xca, 0xf8, 0xca, 0xfc, - 0xca, 0xf9, 0xcb, 0xfc, 0xcb, 0xf9, 0xcb, 0xfc, 0xcb, 0xf9, 0xcb, 0xfc, - 0xcb, 0xf9, 0xcc, 0xfc, 0xcc, 0xf9, 0xcc, 0xfc, 0xcc, 0xf9, 0xcc, 0xfc, - 0xcc, 0xf9, 0xcc, 0xfc, 0xcc, 0xf9, 0xcd, 0xfc, 0xcd, 0xf7, 0xcd, 0xfc, - 0xcd, 0xf7, 0xcd, 0xfc, 0xcd, 0xf7, 0xce, 0xfc, 0xce, 0xf7, 0xce, 0xfc, - 0xce, 0xf7, 0xce, 0xfc, 0xce, 0xf7, 0xce, 0xfc, 0xce, 0xf7, 0xcf, 0xfc, - 0xcf, 0xf7, 0xcf, 0xfc, 0xcf, 0xf7, 0xcf, 0xfc, 0xcf, 0xf7, 0xd0, 0xfc, - 0xd0, 0xf7, 0xd0, 0xfc, 0xd0, 0xf8, 0xd0, 0xfc, 0xd0, 0xf8, 0xd0, 0xfc, - 0xd0, 0xf8, 0xd1, 0xfc, 0xd1, 0xf8, 0xd1, 0xfc, 0xd1, 0xf8, 0xd1, 0xfc, - 0xd1, 0xf8, 0xd2, 0xfc, 0xd2, 0xf8, 0xd2, 0xfc, 0xd2, 0xf8, 0xd2, 0xfc, - 0xd2, 0xf8, 0xd2, 0xfc, 0xd2, 0xf8, 0xd3, 0xfc, 0xd3, 0xf8, 0xd3, 0xfc, - 0xd2, 0xf8, 0xd3, 0xfc, 0xd3, 0xf8, 0xd4, 0xfd, 0xd4, 0xf8, 0xd4, 0xfd, - 0xd4, 0xf8, 0xd4, 0xfd, 0xd4, 0xf8, 0xd4, 0xfd, 0xd4, 0xf8, 0xd5, 0xfd, - 0xd5, 0xf8, 0xd5, 0xfd, 0xd5, 0xf8, 0xd5, 0xfd, 0xd5, 0xf8, 0xd6, 0xfd, - 0xd6, 0xf8, 0xd6, 0xfd, 0xd6, 0xf8, 0xd6, 0xfd, 0xd6, 0xf8, 0xd6, 0xfd, - 0xd6, 0xf8, 0xd7, 0xfd, 0xd6, 0xf8, 0xd7, 0xfd, 0xd6, 0xf8, 0xd7, 0xfd, - 0xd7, 0xf8, 0xd7, 0xfd, 0xd7, 0xf8, 0xd8, 0xfd, 0xd8, 0xf8, 0xd8, 0xfd, - 0xd8, 0xf8, 0xd8, 0xfd, 0xd8, 0xf8, 0xd9, 0xfd, 0xd9, 0xf8, 0xd9, 0xfd, - 0xd9, 0xf8, 0xd9, 0xfd, 0xd9, 0xf8, 0xd9, 0xfd, 0xd9, 0xf8, 0xda, 0xfd, - 0xd9, 0xf8, 0xda, 0xfd, 0xd9, 0xf8, 0xda, 0xfe, 0xda, 0xf8, 0xda, 0xfe, - 0xda, 0xf8, 0xdb, 0xfe, 0xdb, 0xf8, 0xdb, 0xfe, 0xdb, 0xf8, 0xdb, 0xfe, - 0xdb, 0xf8, 0xdb, 0xfe, 0xdb, 0xf8, 0xdc, 0xfe, 0xdc, 0xf8, 0xdc, 0xfe, - 0xdb, 0xf8, 0xdc, 0xfe, 0xdc, 0xf8, 0xdd, 0xfe, 0xdb, 0xf8, 0xdd, 0xfe, - 0xdc, 0xf8, 0xdd, 0xfe, 0xdd, 0xf8, 0xdd, 0xfe, 0xdd, 0xf8, 0xde, 0xfe, - 0xde, 0xf8, 0xde, 0xfe, 0xde, 0xf8, 0xde, 0xfe, 0xde, 0xf8, 0xde, 0xfe, - 0xde, 0xf8, 0xdf, 0xfe, 0xdf, 0xf8, 0xdf, 0xfe, 0xde, 0xf8, 0xdf, 0xfe, - 0xdf, 0xf8, 0xdf, 0xfe, 0xde, 0xf8, 0xe0, 0xfe, 0xdf, 0xf8, 0xe0, 0xfc, - 0xe3, 0xf8, 0xe0, 0xfd, 0xe2, 0xf8, 0xe1, 0xfc, 0xe3, 0xf8, 0xe1, 0xfc, - 0xe3, 0xf8, 0xe1, 0xfc, 0xe3, 0xf8, 0xe1, 0xfc, 0xe3, 0xf8, 0xe2, 0xfc, - 0xe3, 0xf8, 0xe2, 0xfc, 0xe3, 0xf8, 0xe2, 0xfc, 0xe3, 0xf8, 0xe2, 0xfc, - 0xe3, 0xf8, 0xe3, 0xfc, 0xe3, 0xf7, 0xe2, 0xfc, 0xe3, 0xf8, 0xe3, 0xfc, - 0xe3, 0xf7, 0xe2, 0xfc, 0xe3, 0xf8, 0xe5, 0xfc, 0xe4, 0xf8, 0xe5, 0xfc, - 0xe4, 0xf8, 0xe5, 0xfc, 0xe4, 0xf8, 0xe5, 0xfc, 0xe4, 0xf8, 0xe5, 0xfb, - 0xe5, 0xf8, 0xe5, 0xfc, 0xe4, 0xf8, 0xe5, 0xfb, 0xe5, 0xf8, 0xe5, 0xfc, - 0xe4, 0xf8, 0xe6, 0xfb, 0xe5, 0xf8, 0xe6, 0xfc, 0xe4, 0xf8, 0xe6, 0xfb, - 0xe5, 0xf8, 0xe6, 0xfc, 0xe4, 0xf8, 0xe7, 0xfb, 0xe5, 0xf8, 0xe7, 0xfc, - 0xe4, 0xf8, 0xe7, 0xfb, 0xe5, 0xf8, 0xe7, 0xfc, 0xe4, 0xf8, 0xe8, 0xfb, - 0xe5, 0xf8, 0xe8, 0xfc, 0xe4, 0xf8, 0xe8, 0xfb, 0xe5, 0xf8, 0xe8, 0xfc, - 0xe4, 0xf8, 0xe9, 0xfb, 0xe5, 0xf8, 0xe9, 0xfa, 0xe5, 0xf8, 0xe9, 0xfb, - 0xe5, 0xf8, 0xe9, 0xfa, 0xe5, 0xf8, 0xea, 0xfc, 0xee, 0xf8, 0xea, 0xfd, - 0xee, 0xf8, 0xea, 0xfc, 0xee, 0xf8, 0xea, 0xfd, 0xee, 0xf8, 0xeb, 0xfc, - 0xee, 0xf8, 0xeb, 0xfd, 0xee, 0xf8, 0xeb, 0xfc, 0xee, 0xf8, 0xeb, 0xfd, - 0xee, 0xf8, 0xec, 0xfc, 0xee, 0xf8, 0xec, 0xfd, 0xee, 0xf8, 0xec, 0xfc, - 0xee, 0xf8, 0xec, 0xfd, 0xee, 0xf8, 0xec, 0xfc, 0xee, 0xf8, 0xed, 0xfd, - 0xee, 0xf8, 0xed, 0xfc, 0xee, 0xf8, 0xed, 0xfd, 0xee, 0xf8, 0xed, 0xfc, - 0xee, 0xf8, 0xee, 0xfc, 0xef, 0xf8, 0xee, 0xfc, 0xee, 0xf8, 0xee, 0xfc, - 0xef, 0xf8, 0xee, 0xfc, 0xee, 0xf8, 0xee, 0xfc, 0xef, 0xf8, 0xef, 0xfc, - 0xee, 0xf8, 0xef, 0xfc, 0xef, 0xf8, 0xef, 0xfc, 0xee, 0xf8, 0xf0, 0xfc, - 0xef, 0xf8, 0xf0, 0xfb, 0xef, 0xf8, 0xf0, 0xfc, 0xef, 0xf8, 0xf0, 0xfb, - 0xef, 0xf8, 0xf1, 0xfc, 0xef, 0xf8, 0xf1, 0xfb, 0xef, 0xf8, 0xf1, 0xfc, - 0xef, 0xf8, 0xf1, 0xfb, 0xef, 0xf8, 0xf2, 0xfc, 0xef, 0xf8, 0xf2, 0xfb, - 0xef, 0xf8, 0xf2, 0xfc, 0xef, 0xf8, 0xf2, 0xfb, 0xef, 0xf8, 0xf2, 0xfc, - 0xef, 0xf8, 0xf3, 0xfb, 0xef, 0xf8, 0xf3, 0xfc, 0xef, 0xf8, 0xf3, 0xfb, - 0xef, 0xf8, 0xf3, 0xfc, 0xef, 0xf8, 0xf4, 0xfb, 0xef, 0xf8, 0xf4, 0xfc, - 0xef, 0xf8, 0xf4, 0xfb, 0xef, 0xf8, 0xf4, 0xfc, 0xef, 0xf8, 0xf5, 0xfb, - 0xef, 0xf8, 0xf5, 0xfa, 0xef, 0xf8, 0xf5, 0xfb, 0xef, 0xf8, 0xf5, 0xfa, - 0xef, 0xf8, 0xf5, 0xfb, 0xef, 0xf8, 0xf6, 0xfa, 0xef, 0xf8, 0xf6, 0xfb, - 0xef, 0xf8, 0xf6, 0xfa, 0xef, 0xf8, 0xf6, 0xfb, 0xef, 0xf8, 0xf7, 0xfa, - 0xef, 0xf8, 0xf7, 0xfb, 0xef, 0xf8, 0xf7, 0xfa, 0xef, 0xf8, 0xf7, 0xfb, - 0xef, 0xf8, 0xf8, 0xfa, 0xef, 0xf8, 0xf8, 0xfb, 0xef, 0xf8, 0xf8, 0xfa, - 0xef, 0xf8, 0xf8, 0xfb, 0xef, 0xf8, 0xf8, 0xfa, 0xef, 0xf8, 0xf9, 0xfb, - 0xef, 0xf8, 0xf9, 0xfa, 0xef, 0xf8, 0xf9, 0xfb, 0xef, 0xf8, 0xf9, 0xfa, - 0xef, 0xf8, 0xfa, 0xfb, 0xef, 0xf8, 0xfa, 0xfa, 0xef, 0xf8, 0xfa, 0xfb, - 0xef, 0xf8, 0xfa, 0xfa, 0xef, 0xf8, 0xfa, 0xfb, 0xef, 0xf8, 0xfb, 0xfa, - 0xef, 0xf8, 0xfb, 0xfb, 0xef, 0xf8, 0xfb, 0xfa, 0xef, 0xf8, 0xfb, 0xfb, - 0xef, 0xf8, 0xfc, 0xfa, 0xef, 0xf8, 0xfc, 0xfb, 0xef, 0xf8, 0xfc, 0xfa, - 0xef, 0xf8, 0xfc, 0xfb, 0xef, 0xf8, 0xfc, 0xfa, 0xef, 0xf8, 0xfd, 0xfb, - 0xef, 0xf8, 0xfd, 0xfa, 0xef, 0xf8, 0xfd, 0xf8, 0xef, 0xf8, 0xfd, 0xfa, - 0xef, 0xf8, 0xfe, 0xf8, 0xef, 0xf8, 0xfe, 0xfa, 0xef, 0xf8, 0xfe, 0xf8, - 0xef, 0xf8, 0xfe, 0xfa, 0xef, 0xf8, 0xfe, 0xf8, 0xef, 0xf8, 0xff, 0xfa, - 0xef, 0xf8, 0xff, 0xf8, 0xef, 0xf8, 0x03, 0xf4, 0x83, 0xf8, 0x0a, 0xf4, - 0x83, 0xf8, 0x0f, 0xf4, 0x83, 0xf8, 0x14, 0xf4, 0x83, 0xf8, 0x17, 0xf4, - 0x83, 0xf8, 0x1b, 0xf4, 0x83, 0xf8, 0x1e, 0xf4, 0x83, 0xf8, 0x20, 0xf4, - 0x83, 0xf8, 0x23, 0xf4, 0x83, 0xf8, 0x25, 0xf4, 0x83, 0xf8, 0x27, 0xf4, - 0x83, 0xf8, 0x29, 0xf4, 0x83, 0xf8, 0x2b, 0xf4, 0x83, 0xf8, 0x2d, 0xf4, - 0x83, 0xf8, 0x2f, 0xf4, 0x83, 0xf8, 0x31, 0xf4, 0x83, 0xf8, 0x32, 0xf4, - 0x83, 0xf8, 0x34, 0xf4, 0x83, 0xf8, 0x35, 0xf4, 0x83, 0xf8, 0x37, 0xf4, - 0x83, 0xf8, 0x38, 0xf4, 0x83, 0xf8, 0x3a, 0xf4, 0x83, 0xf8, 0x3b, 0xf4, - 0x83, 0xf8, 0x3c, 0xf4, 0x83, 0xf8, 0x3e, 0xf4, 0x83, 0xf8, 0x3f, 0xf4, - 0x83, 0xf8, 0x40, 0xf4, 0x83, 0xf8, 0x42, 0xf4, 0x83, 0xf8, 0x43, 0xf4, - 0x83, 0xf8, 0x44, 0xf4, 0x83, 0xf8, 0x45, 0xf4, 0x83, 0xf8, 0x46, 0xf4, - 0x83, 0xf8, 0x47, 0xf4, 0x83, 0xf8, 0x48, 0xf4, 0x83, 0xf8, 0x49, 0xf4, - 0x83, 0xf8, 0x4a, 0xf4, 0x83, 0xf8, 0x4b, 0xf4, 0x83, 0xf8, 0x4c, 0xf4, - 0x83, 0xf8, 0x4d, 0xf4, 0x83, 0xf8, 0x4e, 0xf4, 0x83, 0xf8, 0x4f, 0xf4, - 0x83, 0xf8, 0x50, 0xf4, 0x83, 0xf8, 0x51, 0xf4, 0x83, 0xf8, 0x52, 0xf4, - 0x83, 0xf8, 0x53, 0xf4, 0x83, 0xf8, 0x54, 0xf4, 0x83, 0xf8, 0x55, 0xf4, - 0x83, 0xf8, 0x56, 0xf4, 0x83, 0xf8, 0x57, 0xf4, 0x83, 0xf8, 0x58, 0xf4, - 0x83, 0xf8, 0x58, 0xf4, 0x83, 0xf8, 0x59, 0xf4, 0x83, 0xf8, 0x5a, 0xf4, - 0x83, 0xf8, 0x5b, 0xf4, 0x83, 0xf8, 0x5c, 0xf4, 0x83, 0xf8, 0x5d, 0xf4, - 0x83, 0xf8, 0x5d, 0xf4, 0x83, 0xf8, 0x5e, 0xf4, 0x83, 0xf8, 0x5f, 0xf4, - 0x83, 0xf8, 0x60, 0xf4, 0x83, 0xf8, 0x60, 0xf4, 0x83, 0xf8, 0x61, 0xf4, - 0x83, 0xf8, 0x62, 0xf4, 0x83, 0xf8, 0x63, 0xf4, 0x83, 0xf8, 0x63, 0xf4, - 0x83, 0xf8, 0x64, 0xf4, 0x83, 0xf8, 0x65, 0xf4, 0x83, 0xf8, 0x66, 0xf4, - 0x83, 0xf8, 0x66, 0xf4, 0x83, 0xf8, 0x67, 0xf4, 0x83, 0xf8, 0x68, 0xf4, - 0x83, 0xf8, 0x68, 0xf4, 0x83, 0xf8, 0x69, 0xf4, 0x83, 0xf8, 0x6a, 0xf4, - 0x83, 0xf8, 0x6a, 0xf4, 0x83, 0xf8, 0x6b, 0xf4, 0x83, 0xf8, 0x6c, 0xf4, - 0x83, 0xf8, 0x6c, 0xf4, 0x83, 0xf8, 0x6d, 0xf4, 0x83, 0xf8, 0x6e, 0xf4, - 0x83, 0xf8, 0x6e, 0xf4, 0x83, 0xf8, 0x6f, 0xf4, 0x83, 0xf8, 0x70, 0xf4, - 0x83, 0xf8, 0x70, 0xf4, 0x83, 0xf8, 0x71, 0xf4, 0x83, 0xf8, 0x72, 0xf4, - 0x83, 0xf8, 0x72, 0xf4, 0x83, 0xf8, 0x73, 0xf4, 0x83, 0xf8, 0x73, 0xf4, - 0x83, 0xf8, 0x74, 0xf4, 0x83, 0xf8, 0x75, 0xf4, 0x83, 0xf8, 0x75, 0xf4, - 0x83, 0xf8, 0x76, 0xf4, 0x83, 0xf8, 0x76, 0xf4, 0x83, 0xf8, 0x77, 0xf4, - 0x83, 0xf8, 0x78, 0xf4, 0x83, 0xf8, 0x78, 0xf4, 0x83, 0xf8, 0x79, 0xf4, - 0x83, 0xf8, 0x79, 0xf4, 0x83, 0xf8, 0x7a, 0xf4, 0x83, 0xf8, 0x7a, 0xf4, - 0x83, 0xf8, 0x7b, 0xf4, 0x83, 0xf8, 0x7c, 0xf4, 0x83, 0xf8, 0x7c, 0xf4, - 0x83, 0xf8, 0x7d, 0xf4, 0x83, 0xf8, 0x7d, 0xf4, 0x83, 0xf8, 0x7e, 0xf4, - 0x83, 0xf8, 0x7e, 0xf4, 0x83, 0xf8, 0x7f, 0xf4, 0x83, 0xf8, 0x7f, 0xf4, - 0x83, 0xf8, 0x80, 0xf4, 0x85, 0xf8, 0x81, 0xf4, 0x83, 0xf8, 0x81, 0xf4, - 0x85, 0xf8, 0x82, 0xf4, 0x86, 0xf8, 0x82, 0xf4, 0x85, 0xf8, 0x83, 0xf4, - 0x86, 0xf8, 0x83, 0xf4, 0x85, 0xf8, 0x84, 0xf4, 0x86, 0xf8, 0x84, 0xf4, - 0x85, 0xf8, 0x85, 0xf4, 0x86, 0xf8, 0x85, 0xf4, 0x85, 0xf8, 0x86, 0xf5, - 0x8b, 0xf8, 0x86, 0xf5, 0x8b, 0xf8, 0x87, 0xf5, 0x8b, 0xf8, 0x87, 0xf5, - 0x8b, 0xf8, 0x88, 0xf5, 0x8b, 0xf8, 0x88, 0xf5, 0x8b, 0xf8, 0x89, 0xf5, - 0x8b, 0xf8, 0x89, 0xf5, 0x8b, 0xf8, 0x8a, 0xf5, 0x8b, 0xf8, 0x8a, 0xf5, - 0x8b, 0xf8, 0x8b, 0xf5, 0x8b, 0xf8, 0x8b, 0xf5, 0x90, 0xf8, 0x8c, 0xf5, - 0x90, 0xf8, 0x8c, 0xf5, 0x90, 0xf8, 0x8d, 0xf5, 0x90, 0xf8, 0x8d, 0xf5, - 0x90, 0xf8, 0x8e, 0xf5, 0x90, 0xf8, 0x8e, 0xf5, 0x90, 0xf8, 0x8e, 0xf5, - 0x90, 0xf8, 0x8f, 0xf5, 0x90, 0xf8, 0x8f, 0xf5, 0x90, 0xf8, 0x90, 0xf5, - 0x90, 0xf8, 0x90, 0xf6, 0x95, 0xf8, 0x91, 0xf6, 0x95, 0xf8, 0x91, 0xf6, - 0x95, 0xf8, 0x92, 0xf6, 0x95, 0xf8, 0x92, 0xf6, 0x95, 0xf8, 0x93, 0xf6, - 0x95, 0xf8, 0x93, 0xf6, 0x95, 0xf8, 0x94, 0xf6, 0x95, 0xf8, 0x94, 0xf6, - 0x95, 0xf8, 0x94, 0xf6, 0x95, 0xf8, 0x95, 0xf6, 0x95, 0xf8, 0x95, 0xf6, - 0x9a, 0xf8, 0x96, 0xf6, 0x9a, 0xf8, 0x96, 0xf6, 0x9a, 0xf8, 0x97, 0xf6, - 0x9a, 0xf8, 0x97, 0xf6, 0x9a, 0xf8, 0x98, 0xf6, 0x9a, 0xf8, 0x98, 0xf6, - 0x9a, 0xf8, 0x98, 0xf6, 0x9a, 0xf8, 0x99, 0xf6, 0x9a, 0xf8, 0x99, 0xf6, - 0x9a, 0xf8, 0x9a, 0xf6, 0x9a, 0xf8, 0x9a, 0xf6, 0x9a, 0xf8, 0x9a, 0xf6, - 0x9a, 0xf8, 0x9b, 0xf7, 0x9e, 0xf8, 0x9b, 0xf7, 0x9f, 0xf8, 0x9c, 0xf7, - 0x9e, 0xf8, 0x9c, 0xf7, 0x9f, 0xf8, 0x9d, 0xf7, 0x9e, 0xf8, 0x9d, 0xf7, - 0x9f, 0xf8, 0x9d, 0xf7, 0x9e, 0xf8, 0x9e, 0xf7, 0x9f, 0xf8, 0x9e, 0xf7, - 0x9e, 0xf8, 0x9f, 0xf7, 0x9f, 0xf8, 0x9f, 0xf7, 0x9f, 0xf8, 0x9f, 0xf7, - 0xa3, 0xf8, 0xa0, 0xf7, 0xa3, 0xf8, 0xa0, 0xf7, 0xa3, 0xf8, 0xa1, 0xf7, - 0xa3, 0xf8, 0xa1, 0xf7, 0xa3, 0xf8, 0xa1, 0xf7, 0xa3, 0xf8, 0xa2, 0xf7, - 0xa3, 0xf8, 0xa2, 0xf7, 0xa3, 0xf8, 0xa3, 0xf7, 0xa3, 0xf8, 0xa3, 0xf7, - 0xa3, 0xf8, 0xa3, 0xf7, 0xa3, 0xf8, 0xa4, 0xf8, 0xa7, 0xf8, 0xa4, 0xf8, - 0xa7, 0xf8, 0xa5, 0xf8, 0xa7, 0xf8, 0xa5, 0xf8, 0xa7, 0xf8, 0xa5, 0xf8, - 0xa7, 0xf8, 0xa6, 0xf8, 0xa7, 0xf8, 0xa6, 0xf8, 0xa7, 0xf8, 0xa6, 0xf8, - 0xa9, 0xf8, 0xa7, 0xf8, 0xa9, 0xf8, 0xa7, 0xf8, 0xa9, 0xf8, 0xa8, 0xf8, - 0xa9, 0xf8, 0xa8, 0xf8, 0xa9, 0xf8, 0xa8, 0xf8, 0xa9, 0xf8, 0xa9, 0xf8, - 0xab, 0xf8, 0xa9, 0xf8, 0xab, 0xf8, 0xaa, 0xf8, 0xab, 0xf8, 0xaa, 0xf8, - 0xab, 0xf8, 0xaa, 0xf8, 0xab, 0xf8, 0xab, 0xf8, 0xab, 0xf8, 0xab, 0xf8, - 0xab, 0xf8, 0xab, 0xf8, 0xab, 0xf8, 0xac, 0xf8, 0xac, 0xf8, 0xac, 0xf8, - 0xaf, 0xf8, 0xac, 0xf8, 0xaf, 0xf8, 0xad, 0xf8, 0xaf, 0xf8, 0xad, 0xf8, - 0xaf, 0xf8, 0xae, 0xf8, 0xaf, 0xf8, 0xae, 0xf8, 0xaf, 0xf8, 0xae, 0xf8, - 0xaf, 0xf8, 0xaf, 0xf8, 0xaf, 0xf8, 0xaf, 0xf8, 0xaf, 0xf8, 0xaf, 0xf8, - 0xaf, 0xf8, 0xb0, 0xf8, 0xb0, 0xf8, 0xb0, 0xf8, 0xb0, 0xf8, 0xb0, 0xf8, - 0xb0, 0xf8, 0xb1, 0xf9, 0xb3, 0xf8, 0xb1, 0xf9, 0xb3, 0xf8, 0xb2, 0xf9, - 0xb3, 0xf8, 0xb2, 0xf9, 0xb3, 0xf8, 0xb2, 0xf9, 0xb3, 0xf8, 0xb3, 0xf9, - 0xb3, 0xf8, 0xb3, 0xf9, 0xb3, 0xf8, 0xb3, 0xf9, 0xb3, 0xf8, 0xb4, 0xf9, - 0xb4, 0xf8, 0xb4, 0xf9, 0xb4, 0xf8, 0xb4, 0xf9, 0xb4, 0xf8, 0xb5, 0xf9, - 0xb7, 0xf8, 0xb5, 0xf9, 0xb7, 0xf8, 0xb5, 0xf9, 0xb7, 0xf8, 0xb6, 0xf9, - 0xb7, 0xf8, 0xb6, 0xf9, 0xb7, 0xf8, 0xb6, 0xf9, 0xb7, 0xf8, 0xb7, 0xf9, - 0xb7, 0xf8, 0xb7, 0xf9, 0xb7, 0xf8, 0xb7, 0xf9, 0xb7, 0xf8, 0xb8, 0xf9, - 0xb8, 0xf8, 0xb8, 0xf9, 0xb8, 0xf8, 0xb8, 0xfa, 0xba, 0xf8, 0xb9, 0xfa, - 0xbb, 0xf8, 0xb9, 0xfa, 0xba, 0xf8, 0xb9, 0xfa, 0xbb, 0xf8, 0xba, 0xfa, - 0xba, 0xf8, 0xba, 0xfa, 0xbb, 0xf8, 0xba, 0xfa, 0xba, 0xf8, 0xbb, 0xfa, - 0xbb, 0xf8, 0xbb, 0xfa, 0xbb, 0xf8, 0xbb, 0xfa, 0xbb, 0xf8, 0xbc, 0xfa, - 0xbc, 0xf8, 0xbc, 0xfa, 0xbc, 0xf8, 0xbc, 0xfa, 0xbc, 0xf8, 0xbd, 0xfa, - 0xbe, 0xf8, 0xbd, 0xfa, 0xbe, 0xf8, 0xbd, 0xfa, 0xbe, 0xf8, 0xbe, 0xfa, - 0xbe, 0xf8, 0xbe, 0xfa, 0xbe, 0xf8, 0xbe, 0xfa, 0xbe, 0xf8, 0xbf, 0xfa, - 0xbf, 0xf8, 0xbf, 0xfa, 0xbf, 0xf8, 0xbf, 0xfa, 0xbf, 0xf8, 0xc0, 0xfa, - 0xc0, 0xf8, 0xc0, 0xfa, 0xc0, 0xf8, 0xc0, 0xfb, 0xc1, 0xf8, 0xc1, 0xfb, - 0xc2, 0xf8, 0xc1, 0xfb, 0xc1, 0xf8, 0xc1, 0xfb, 0xc2, 0xf8, 0xc1, 0xfb, - 0xc1, 0xf8, 0xc2, 0xfb, 0xc2, 0xf8, 0xc2, 0xfb, 0xc2, 0xf8, 0xc2, 0xfb, - 0xc2, 0xf8, 0xc3, 0xfb, 0xc3, 0xf8, 0xc3, 0xfb, 0xc3, 0xf8, 0xc3, 0xfb, - 0xc3, 0xf8, 0xc4, 0xfb, 0xc5, 0xf8, 0xc4, 0xfb, 0xc5, 0xf8, 0xc4, 0xfb, - 0xc5, 0xf8, 0xc5, 0xfb, 0xc5, 0xf8, 0xc5, 0xfb, 0xc5, 0xf8, 0xc5, 0xfb, - 0xc5, 0xf8, 0xc6, 0xfb, 0xc6, 0xf8, 0xc6, 0xfb, 0xc6, 0xf8, 0xc6, 0xfb, - 0xc7, 0xf8, 0xc6, 0xfb, 0xc6, 0xf8, 0xc7, 0xfb, 0xc7, 0xf8, 0xc7, 0xfb, - 0xc7, 0xf8, 0xc7, 0xfb, 0xc7, 0xf8, 0xc8, 0xfc, 0xc8, 0xf8, 0xc8, 0xfc, - 0xc9, 0xf8, 0xc8, 0xfc, 0xc8, 0xf8, 0xc9, 0xfc, 0xc9, 0xf8, 0xc9, 0xfc, - 0xc9, 0xf8, 0xc9, 0xfc, 0xc9, 0xf8, 0xc9, 0xfc, 0xc9, 0xf8, 0xca, 0xfc, - 0xca, 0xf8, 0xca, 0xfc, 0xca, 0xf8, 0xca, 0xfc, 0xca, 0xf8, 0xcb, 0xfc, - 0xcb, 0xf8, 0xcb, 0xfc, 0xcb, 0xf8, 0xcb, 0xfc, 0xcb, 0xf8, 0xcb, 0xfc, - 0xcc, 0xf8, 0xcb, 0xfc, 0xcc, 0xf8, 0xcc, 0xfc, 0xcc, 0xf9, 0xcc, 0xfc, - 0xcc, 0xf9, 0xcd, 0xfc, 0xcd, 0xf9, 0xcd, 0xfc, 0xcd, 0xf9, 0xcd, 0xfc, - 0xcd, 0xf9, 0xce, 0xfc, 0xce, 0xf9, 0xce, 0xfc, 0xce, 0xf9, 0xce, 0xfc, - 0xce, 0xf9, 0xce, 0xfc, 0xce, 0xf7, 0xcf, 0xfc, 0xcf, 0xf7, 0xcf, 0xfc, - 0xcf, 0xf7, 0xcf, 0xfc, 0xcf, 0xf7, 0xd0, 0xfc, 0xd0, 0xf7, 0xd0, 0xfc, - 0xd0, 0xf7, 0xd0, 0xfc, 0xd0, 0xf7, 0xd0, 0xfc, 0xd0, 0xf7, 0xd1, 0xfc, - 0xd1, 0xf7, 0xd1, 0xfc, 0xd1, 0xf7, 0xd1, 0xfc, 0xd1, 0xf8, 0xd2, 0xfc, - 0xd2, 0xf8, 0xd2, 0xfc, 0xd2, 0xf8, 0xd2, 0xfc, 0xd2, 0xf8, 0xd2, 0xfc, - 0xd2, 0xf8, 0xd3, 0xfc, 0xd3, 0xf8, 0xd3, 0xfc, 0xd3, 0xf8, 0xd3, 0xfc, - 0xd3, 0xf8, 0xd4, 0xfc, 0xd4, 0xf8, 0xd4, 0xfc, 0xd4, 0xf8, 0xd4, 0xfc, - 0xd4, 0xf8, 0xd4, 0xfc, 0xd4, 0xf8, 0xd5, 0xfc, 0xd4, 0xf8, 0xd5, 0xfd, - 0xd5, 0xf8, 0xd5, 0xfd, 0xd5, 0xf8, 0xd6, 0xfd, 0xd6, 0xf8, 0xd6, 0xfd, - 0xd6, 0xf8, 0xd6, 0xfd, 0xd6, 0xf8, 0xd6, 0xfd, 0xd6, 0xf8, 0xd7, 0xfd, - 0xd7, 0xf8, 0xd7, 0xfd, 0xd7, 0xf8, 0xd7, 0xfd, 0xd7, 0xf8, 0xd7, 0xfd, - 0xd7, 0xf8, 0xd8, 0xfd, 0xd7, 0xf8, 0xd8, 0xfd, 0xd7, 0xf8, 0xd8, 0xfd, - 0xd7, 0xf8, 0xd9, 0xfd, 0xd9, 0xf8, 0xd9, 0xfd, 0xd9, 0xf8, 0xd9, 0xfd, - 0xd9, 0xf8, 0xd9, 0xfd, 0xd9, 0xf8, 0xda, 0xfd, 0xda, 0xf8, 0xda, 0xfd, - 0xda, 0xf8, 0xda, 0xfd, 0xda, 0xf8, 0xda, 0xfd, 0xda, 0xf8, 0xdb, 0xfd, - 0xda, 0xf8, 0xdb, 0xfd, 0xda, 0xf8, 0xdb, 0xfd, 0xda, 0xf8, 0xdb, 0xfe, - 0xdb, 0xf8, 0xdc, 0xfe, 0xdc, 0xf8, 0xdc, 0xfe, 0xdc, 0xf8, 0xdc, 0xfe, - 0xdc, 0xf8, 0xdd, 0xfe, 0xdd, 0xf8, 0xdd, 0xfe, 0xdd, 0xf8, 0xdd, 0xfe, - 0xdd, 0xf8, 0xdd, 0xfe, 0xdd, 0xf8, 0xde, 0xfe, 0xdd, 0xf8, 0xde, 0xfe, - 0xdd, 0xf8, 0xde, 0xfe, 0xdd, 0xf8, 0xde, 0xfe, 0xde, 0xf8, 0xdf, 0xfe, - 0xdf, 0xf8, 0xdf, 0xfe, 0xdf, 0xf8, 0xdf, 0xfe, 0xdf, 0xf8, 0xdf, 0xfe, - 0xdf, 0xf8, 0xe0, 0xfe, 0xe0, 0xf8, 0xe0, 0xfe, 0xe0, 0xf8, 0xe0, 0xfd, - 0xe2, 0xf8, 0xe1, 0xfc, 0xe3, 0xf8, 0xe1, 0xfd, 0xe2, 0xf8, 0xe1, 0xfc, - 0xe3, 0xf8, 0xe1, 0xfd, 0xe2, 0xf8, 0xe2, 0xfc, 0xe3, 0xf8, 0xe2, 0xfc, - 0xe3, 0xf8, 0xe2, 0xfc, 0xe3, 0xf8, 0xe2, 0xfc, 0xe3, 0xf8, 0xe3, 0xfc, - 0xe3, 0xf7, 0xe2, 0xfc, 0xe3, 0xf8, 0xe3, 0xfc, 0xe3, 0xf7, 0xe2, 0xfc, - 0xe3, 0xf8, 0xe5, 0xfc, 0xe4, 0xf8, 0xe5, 0xfc, 0xe4, 0xf8, 0xe5, 0xfc, - 0xe4, 0xf8, 0xe5, 0xfc, 0xe4, 0xf8, 0xe5, 0xfc, 0xe5, 0xf8, 0xe5, 0xfc, - 0xe4, 0xf8, 0xe5, 0xfc, 0xe5, 0xf8, 0xe5, 0xfc, 0xe4, 0xf8, 0xe6, 0xfc, - 0xe5, 0xf8, 0xe6, 0xfc, 0xe4, 0xf8, 0xe6, 0xfc, 0xe5, 0xf8, 0xe6, 0xfc, - 0xe4, 0xf8, 0xe7, 0xfc, 0xe5, 0xf8, 0xe7, 0xfc, 0xe4, 0xf8, 0xe7, 0xfc, - 0xe5, 0xf8, 0xe7, 0xfc, 0xe4, 0xf8, 0xe8, 0xfc, 0xe5, 0xf8, 0xe8, 0xfc, - 0xe4, 0xf8, 0xe8, 0xfc, 0xe5, 0xf8, 0xe8, 0xfc, 0xe4, 0xf8, 0xe9, 0xfc, - 0xe5, 0xf8, 0xe9, 0xfa, 0xe5, 0xf8, 0xe9, 0xfc, 0xe5, 0xf8, 0xe9, 0xfa, - 0xe5, 0xf8, 0xea, 0xfe, 0xee, 0xf8, 0xea, 0xfc, 0xee, 0xf8, 0xea, 0xfe, - 0xee, 0xf8, 0xea, 0xfc, 0xee, 0xf8, 0xeb, 0xfc, 0xee, 0xf8, 0xeb, 0xfc, - 0xee, 0xf8, 0xeb, 0xfc, 0xee, 0xf8, 0xeb, 0xfc, 0xee, 0xf8, 0xec, 0xfc, - 0xee, 0xf8, 0xec, 0xfc, 0xee, 0xf8, 0xec, 0xfc, 0xee, 0xf8, 0xec, 0xfc, - 0xee, 0xf8, 0xec, 0xfc, 0xee, 0xf8, 0xed, 0xfc, 0xee, 0xf8, 0xed, 0xfc, - 0xee, 0xf8, 0xed, 0xfc, 0xee, 0xf8, 0xed, 0xfc, 0xee, 0xf8, 0xee, 0xfc, - 0xee, 0xf8, 0xee, 0xfc, 0xee, 0xf8, 0xee, 0xfc, 0xee, 0xf8, 0xee, 0xfc, - 0xee, 0xf8, 0xee, 0xfc, 0xef, 0xf8, 0xef, 0xfc, 0xee, 0xf8, 0xef, 0xfc, - 0xef, 0xf8, 0xef, 0xfc, 0xee, 0xf8, 0xf0, 0xfc, 0xef, 0xf8, 0xf0, 0xfc, - 0xee, 0xf8, 0xf0, 0xfc, 0xef, 0xf8, 0xf0, 0xfc, 0xee, 0xf8, 0xf1, 0xfc, - 0xef, 0xf8, 0xf1, 0xfb, 0xef, 0xf8, 0xf1, 0xfc, 0xef, 0xf8, 0xf1, 0xfb, - 0xef, 0xf8, 0xf2, 0xfc, 0xef, 0xf8, 0xf2, 0xfb, 0xef, 0xf8, 0xf2, 0xfc, - 0xef, 0xf8, 0xf2, 0xfb, 0xef, 0xf8, 0xf2, 0xfc, 0xef, 0xf8, 0xf3, 0xfb, - 0xef, 0xf8, 0xf3, 0xfc, 0xef, 0xf8, 0xf3, 0xfb, 0xef, 0xf8, 0xf3, 0xfc, - 0xef, 0xf8, 0xf4, 0xfb, 0xef, 0xf8, 0xf4, 0xfc, 0xef, 0xf8, 0xf4, 0xfb, - 0xef, 0xf8, 0xf4, 0xfc, 0xef, 0xf8, 0xf5, 0xfb, 0xef, 0xf8, 0xf5, 0xfc, - 0xef, 0xf8, 0xf5, 0xfb, 0xef, 0xf8, 0xf5, 0xfc, 0xef, 0xf8, 0xf5, 0xfb, - 0xef, 0xf8, 0xf6, 0xfc, 0xef, 0xf8, 0xf6, 0xfb, 0xef, 0xf8, 0xf6, 0xfc, - 0xef, 0xf8, 0xf6, 0xfb, 0xef, 0xf8, 0xf7, 0xfc, 0xef, 0xf8, 0xf7, 0xfb, - 0xef, 0xf8, 0xf7, 0xfc, 0xef, 0xf8, 0xf7, 0xfb, 0xef, 0xf8, 0xf8, 0xf9, - 0xef, 0xf8, 0xf8, 0xfb, 0xef, 0xf8, 0xf8, 0xf9, 0xef, 0xf8, 0xf8, 0xfb, - 0xef, 0xf8, 0xf8, 0xf9, 0xef, 0xf8, 0xf9, 0xfb, 0xef, 0xf8, 0xf9, 0xf9, - 0xef, 0xf8, 0xf9, 0xfb, 0xef, 0xf8, 0xf9, 0xf9, 0xef, 0xf8, 0xfa, 0xfb, - 0xef, 0xf8, 0xfa, 0xf9, 0xef, 0xf8, 0xfa, 0xfb, 0xef, 0xf8, 0xfa, 0xf9, - 0xef, 0xf8, 0xfa, 0xfb, 0xef, 0xf8, 0xfb, 0xf9, 0xef, 0xf8, 0xfb, 0xfb, - 0xef, 0xf8, 0xfb, 0xf9, 0xef, 0xf8, 0xfb, 0xfb, 0xef, 0xf8, 0xfc, 0xf9, - 0xef, 0xf8, 0xfc, 0xfb, 0xef, 0xf8, 0xfc, 0xf9, 0xef, 0xf8, 0xfc, 0xfb, - 0xef, 0xf8, 0xfc, 0xf9, 0xef, 0xf8, 0xfd, 0xfb, 0xef, 0xf8, 0xfd, 0xf9, - 0xef, 0xf8, 0xfd, 0xfb, 0xef, 0xf8, 0xfd, 0xf9, 0xef, 0xf8, 0xfe, 0xfb, - 0xef, 0xf8, 0xfe, 0xf9, 0xef, 0xf8, 0xfe, 0xfb, 0xef, 0xf8, 0xfe, 0xf9, - 0xef, 0xf8, 0xfe, 0xfb, 0xef, 0xf8, 0xff, 0xf9, 0xef, 0xf8, 0xff, 0xfb, - 0xef, 0xf8, 0x03, 0xf4, 0x83, 0xf9, 0x0a, 0xf4, 0x83, 0xf9, 0x0f, 0xf4, - 0x83, 0xf9, 0x14, 0xf4, 0x83, 0xf9, 0x17, 0xf4, 0x83, 0xf9, 0x1b, 0xf4, - 0x83, 0xf9, 0x1e, 0xf4, 0x83, 0xf9, 0x20, 0xf4, 0x83, 0xf9, 0x23, 0xf4, - 0x83, 0xf9, 0x25, 0xf4, 0x83, 0xf9, 0x27, 0xf4, 0x83, 0xf9, 0x29, 0xf4, - 0x83, 0xf9, 0x2b, 0xf4, 0x83, 0xf9, 0x2d, 0xf4, 0x83, 0xf9, 0x2f, 0xf4, - 0x83, 0xf9, 0x31, 0xf4, 0x83, 0xf9, 0x32, 0xf4, 0x83, 0xf9, 0x34, 0xf4, - 0x83, 0xf9, 0x35, 0xf4, 0x83, 0xf9, 0x37, 0xf4, 0x83, 0xf9, 0x38, 0xf4, - 0x83, 0xf9, 0x3a, 0xf4, 0x83, 0xf9, 0x3b, 0xf4, 0x83, 0xf9, 0x3c, 0xf4, - 0x83, 0xf9, 0x3e, 0xf4, 0x83, 0xf9, 0x3f, 0xf4, 0x83, 0xf9, 0x40, 0xf4, - 0x83, 0xf9, 0x42, 0xf4, 0x83, 0xf9, 0x43, 0xf4, 0x83, 0xf9, 0x44, 0xf4, - 0x83, 0xf9, 0x45, 0xf4, 0x83, 0xf9, 0x46, 0xf4, 0x83, 0xf9, 0x47, 0xf4, - 0x83, 0xf9, 0x48, 0xf4, 0x83, 0xf9, 0x49, 0xf4, 0x83, 0xf9, 0x4a, 0xf4, - 0x83, 0xf9, 0x4b, 0xf4, 0x83, 0xf9, 0x4c, 0xf4, 0x83, 0xf9, 0x4d, 0xf4, - 0x83, 0xf9, 0x4e, 0xf4, 0x83, 0xf9, 0x4f, 0xf4, 0x83, 0xf9, 0x50, 0xf4, - 0x83, 0xf9, 0x51, 0xf4, 0x83, 0xf9, 0x52, 0xf4, 0x83, 0xf9, 0x53, 0xf4, - 0x83, 0xf9, 0x54, 0xf4, 0x83, 0xf9, 0x55, 0xf4, 0x83, 0xf9, 0x56, 0xf4, - 0x83, 0xf9, 0x57, 0xf4, 0x83, 0xf9, 0x58, 0xf4, 0x83, 0xf9, 0x58, 0xf4, - 0x83, 0xf9, 0x59, 0xf4, 0x83, 0xf9, 0x5a, 0xf4, 0x83, 0xf9, 0x5b, 0xf4, - 0x83, 0xf9, 0x5c, 0xf4, 0x83, 0xf9, 0x5d, 0xf4, 0x83, 0xf9, 0x5d, 0xf4, - 0x83, 0xf9, 0x5e, 0xf4, 0x83, 0xf9, 0x5f, 0xf4, 0x83, 0xf9, 0x60, 0xf4, - 0x83, 0xf9, 0x60, 0xf4, 0x83, 0xf9, 0x61, 0xf4, 0x83, 0xf9, 0x62, 0xf4, - 0x83, 0xf9, 0x63, 0xf4, 0x83, 0xf9, 0x63, 0xf4, 0x83, 0xf9, 0x64, 0xf4, - 0x83, 0xf9, 0x65, 0xf4, 0x83, 0xf9, 0x66, 0xf4, 0x83, 0xf9, 0x66, 0xf4, - 0x83, 0xf9, 0x67, 0xf4, 0x83, 0xf9, 0x68, 0xf4, 0x83, 0xf9, 0x68, 0xf4, - 0x83, 0xf9, 0x69, 0xf4, 0x83, 0xf9, 0x6a, 0xf4, 0x83, 0xf9, 0x6a, 0xf4, - 0x83, 0xf9, 0x6b, 0xf4, 0x83, 0xf9, 0x6c, 0xf4, 0x83, 0xf9, 0x6c, 0xf4, - 0x83, 0xf9, 0x6d, 0xf4, 0x83, 0xf9, 0x6e, 0xf4, 0x83, 0xf9, 0x6e, 0xf4, - 0x83, 0xf9, 0x6f, 0xf4, 0x83, 0xf9, 0x70, 0xf4, 0x83, 0xf9, 0x70, 0xf4, - 0x83, 0xf9, 0x71, 0xf4, 0x83, 0xf9, 0x72, 0xf4, 0x83, 0xf9, 0x72, 0xf4, - 0x83, 0xf9, 0x73, 0xf4, 0x83, 0xf9, 0x73, 0xf4, 0x83, 0xf9, 0x74, 0xf4, - 0x83, 0xf9, 0x75, 0xf4, 0x83, 0xf9, 0x75, 0xf4, 0x83, 0xf9, 0x76, 0xf4, - 0x83, 0xf9, 0x76, 0xf4, 0x83, 0xf9, 0x77, 0xf4, 0x83, 0xf9, 0x78, 0xf4, - 0x83, 0xf9, 0x78, 0xf4, 0x83, 0xf9, 0x79, 0xf4, 0x83, 0xf9, 0x79, 0xf4, - 0x83, 0xf9, 0x7a, 0xf4, 0x83, 0xf9, 0x7a, 0xf4, 0x83, 0xf9, 0x7b, 0xf4, - 0x83, 0xf9, 0x7c, 0xf4, 0x83, 0xf9, 0x7c, 0xf4, 0x83, 0xf9, 0x7d, 0xf4, - 0x83, 0xf9, 0x7d, 0xf4, 0x83, 0xf9, 0x7e, 0xf4, 0x83, 0xf9, 0x7e, 0xf4, - 0x83, 0xf9, 0x7f, 0xf4, 0x83, 0xf9, 0x7f, 0xf4, 0x83, 0xf9, 0x80, 0xf4, - 0x83, 0xf9, 0x81, 0xf4, 0x83, 0xf9, 0x81, 0xf4, 0x83, 0xf9, 0x82, 0xf5, - 0x88, 0xf9, 0x82, 0xf5, 0x88, 0xf9, 0x83, 0xf5, 0x88, 0xf9, 0x83, 0xf5, - 0x88, 0xf9, 0x84, 0xf5, 0x88, 0xf9, 0x84, 0xf5, 0x88, 0xf9, 0x85, 0xf5, - 0x88, 0xf9, 0x85, 0xf5, 0x88, 0xf9, 0x86, 0xf5, 0x88, 0xf9, 0x86, 0xf5, - 0x88, 0xf9, 0x87, 0xf5, 0x88, 0xf9, 0x87, 0xf5, 0x88, 0xf9, 0x88, 0xf5, - 0x88, 0xf9, 0x88, 0xf5, 0x8d, 0xf9, 0x89, 0xf5, 0x8e, 0xf9, 0x89, 0xf5, - 0x8d, 0xf9, 0x8a, 0xf5, 0x8e, 0xf9, 0x8a, 0xf5, 0x8d, 0xf9, 0x8b, 0xf5, - 0x8e, 0xf9, 0x8b, 0xf5, 0x8d, 0xf9, 0x8c, 0xf5, 0x8e, 0xf9, 0x8c, 0xf5, - 0x8d, 0xf9, 0x8d, 0xf5, 0x8e, 0xf9, 0x8d, 0xf5, 0x8d, 0xf9, 0x8e, 0xf5, - 0x92, 0xf9, 0x8e, 0xf5, 0x93, 0xf9, 0x8e, 0xf5, 0x92, 0xf9, 0x8f, 0xf5, - 0x93, 0xf9, 0x8f, 0xf5, 0x92, 0xf9, 0x90, 0xf5, 0x93, 0xf9, 0x90, 0xf5, - 0x92, 0xf9, 0x91, 0xf5, 0x93, 0xf9, 0x91, 0xf5, 0x92, 0xf9, 0x92, 0xf5, - 0x93, 0xf9, 0x92, 0xf5, 0x92, 0xf9, 0x93, 0xf6, 0x97, 0xf9, 0x93, 0xf6, - 0x98, 0xf9, 0x94, 0xf6, 0x97, 0xf9, 0x94, 0xf6, 0x98, 0xf9, 0x94, 0xf6, - 0x97, 0xf9, 0x95, 0xf6, 0x98, 0xf9, 0x95, 0xf6, 0x97, 0xf9, 0x96, 0xf6, - 0x98, 0xf9, 0x96, 0xf6, 0x97, 0xf9, 0x97, 0xf6, 0x98, 0xf9, 0x97, 0xf6, - 0x97, 0xf9, 0x98, 0xf6, 0x9c, 0xf9, 0x98, 0xf6, 0x9c, 0xf9, 0x98, 0xf6, - 0x9c, 0xf9, 0x99, 0xf6, 0x9c, 0xf9, 0x99, 0xf6, 0x9c, 0xf9, 0x9a, 0xf6, - 0x9c, 0xf9, 0x9a, 0xf6, 0x9c, 0xf9, 0x9a, 0xf6, 0x9c, 0xf9, 0x9b, 0xf6, - 0x9c, 0xf9, 0x9b, 0xf6, 0x9c, 0xf9, 0x9c, 0xf6, 0x9c, 0xf9, 0x9c, 0xf6, - 0x9c, 0xf9, 0x9d, 0xf6, 0x9d, 0xf9, 0x9d, 0xf7, 0xa0, 0xf9, 0x9d, 0xf7, - 0xa1, 0xf9, 0x9e, 0xf7, 0xa0, 0xf9, 0x9e, 0xf7, 0xa1, 0xf9, 0x9f, 0xf7, - 0xa0, 0xf9, 0x9f, 0xf7, 0xa1, 0xf9, 0x9f, 0xf7, 0xa0, 0xf9, 0xa0, 0xf7, - 0xa1, 0xf9, 0xa0, 0xf7, 0xa0, 0xf9, 0xa1, 0xf7, 0xa1, 0xf9, 0xa1, 0xf7, - 0xa1, 0xf9, 0xa1, 0xf7, 0xa5, 0xf9, 0xa2, 0xf7, 0xa5, 0xf9, 0xa2, 0xf7, - 0xa5, 0xf9, 0xa3, 0xf7, 0xa5, 0xf9, 0xa3, 0xf7, 0xa5, 0xf9, 0xa3, 0xf7, - 0xa5, 0xf9, 0xa4, 0xf7, 0xa5, 0xf9, 0xa4, 0xf7, 0xa5, 0xf9, 0xa5, 0xf7, - 0xa5, 0xf9, 0xa5, 0xf7, 0xa5, 0xf9, 0xa5, 0xf7, 0xa5, 0xf9, 0xa6, 0xf8, - 0xa9, 0xf9, 0xa6, 0xf8, 0xa9, 0xf9, 0xa6, 0xf8, 0xa9, 0xf9, 0xa7, 0xf8, - 0xa9, 0xf9, 0xa7, 0xf8, 0xa9, 0xf9, 0xa8, 0xf8, 0xa9, 0xf9, 0xa8, 0xf8, - 0xa9, 0xf9, 0xa8, 0xf8, 0xa9, 0xf9, 0xa9, 0xf8, 0xa9, 0xf9, 0xa9, 0xf8, - 0xa9, 0xf9, 0xaa, 0xf8, 0xaa, 0xf9, 0xaa, 0xf8, 0xad, 0xf9, 0xaa, 0xf8, - 0xad, 0xf9, 0xab, 0xf8, 0xad, 0xf9, 0xab, 0xf8, 0xad, 0xf9, 0xab, 0xf8, - 0xad, 0xf9, 0xac, 0xf8, 0xad, 0xf9, 0xac, 0xf8, 0xad, 0xf9, 0xac, 0xf8, - 0xad, 0xf9, 0xad, 0xf8, 0xad, 0xf9, 0xad, 0xf8, 0xad, 0xf9, 0xae, 0xf8, - 0xae, 0xf9, 0xae, 0xf9, 0xb1, 0xf9, 0xae, 0xf9, 0xb1, 0xf9, 0xaf, 0xf9, - 0xb1, 0xf9, 0xaf, 0xf9, 0xb1, 0xf9, 0xaf, 0xf9, 0xb1, 0xf9, 0xb0, 0xf9, - 0xb1, 0xf9, 0xb0, 0xf9, 0xb1, 0xf9, 0xb0, 0xf9, 0xb1, 0xf9, 0xb1, 0xf9, - 0xb1, 0xf9, 0xb1, 0xf9, 0xb1, 0xf9, 0xb2, 0xf9, 0xb2, 0xf9, 0xb2, 0xf9, - 0xb2, 0xf9, 0xb2, 0xf9, 0xb2, 0xf9, 0xb3, 0xf9, 0xb5, 0xf9, 0xb3, 0xf9, - 0xb5, 0xf9, 0xb3, 0xf9, 0xb5, 0xf9, 0xb4, 0xf9, 0xb5, 0xf9, 0xb4, 0xf9, - 0xb5, 0xf9, 0xb4, 0xf9, 0xb5, 0xf9, 0xb5, 0xf9, 0xb5, 0xf9, 0xb5, 0xf9, - 0xb5, 0xf9, 0xb5, 0xf9, 0xb5, 0xf9, 0xb6, 0xf9, 0xb6, 0xf9, 0xb6, 0xf9, - 0xb6, 0xf9, 0xb6, 0xfa, 0xb8, 0xf9, 0xb7, 0xfa, 0xb9, 0xf9, 0xb7, 0xfa, - 0xb8, 0xf9, 0xb7, 0xfa, 0xb9, 0xf9, 0xb8, 0xfa, 0xb8, 0xf9, 0xb8, 0xfa, - 0xb9, 0xf9, 0xb8, 0xfa, 0xb8, 0xf9, 0xb9, 0xfa, 0xb9, 0xf9, 0xb9, 0xfa, - 0xb9, 0xf9, 0xb9, 0xfa, 0xb9, 0xf9, 0xba, 0xfa, 0xba, 0xf9, 0xba, 0xfa, - 0xbc, 0xf9, 0xba, 0xfa, 0xbc, 0xf9, 0xbb, 0xfa, 0xbc, 0xf9, 0xbb, 0xfa, - 0xbc, 0xf9, 0xbb, 0xfa, 0xbc, 0xf9, 0xbc, 0xfa, 0xbc, 0xf9, 0xbc, 0xfa, - 0xbc, 0xf9, 0xbc, 0xfa, 0xbc, 0xf9, 0xbd, 0xfa, 0xbd, 0xf9, 0xbd, 0xfa, - 0xbd, 0xf9, 0xbd, 0xfa, 0xbd, 0xf9, 0xbe, 0xfa, 0xbe, 0xf9, 0xbe, 0xfa, - 0xbe, 0xf9, 0xbe, 0xfa, 0xc0, 0xf9, 0xbf, 0xfa, 0xc0, 0xf9, 0xbf, 0xfa, - 0xc0, 0xf9, 0xbf, 0xfa, 0xc0, 0xf9, 0xc0, 0xfa, 0xc0, 0xf9, 0xc0, 0xfa, - 0xc0, 0xf9, 0xc0, 0xfa, 0xc0, 0xf9, 0xc1, 0xfa, 0xc1, 0xf9, 0xc1, 0xfa, - 0xc1, 0xf9, 0xc1, 0xfa, 0xc1, 0xf9, 0xc1, 0xfa, 0xc1, 0xf9, 0xc2, 0xfb, - 0xc3, 0xf9, 0xc2, 0xfb, 0xc3, 0xf9, 0xc2, 0xfb, 0xc3, 0xf9, 0xc3, 0xfb, - 0xc3, 0xf9, 0xc3, 0xfb, 0xc3, 0xf9, 0xc3, 0xfb, 0xc3, 0xf9, 0xc4, 0xfb, - 0xc4, 0xf9, 0xc4, 0xfb, 0xc4, 0xf9, 0xc4, 0xfb, 0xc4, 0xf9, 0xc5, 0xfb, - 0xc5, 0xf9, 0xc5, 0xfb, 0xc5, 0xf9, 0xc5, 0xfb, 0xc6, 0xf9, 0xc6, 0xfb, - 0xc7, 0xf9, 0xc6, 0xfb, 0xc6, 0xf9, 0xc6, 0xfb, 0xc7, 0xf9, 0xc6, 0xfb, - 0xc6, 0xf9, 0xc7, 0xfb, 0xc7, 0xf9, 0xc7, 0xfb, 0xc7, 0xf9, 0xc7, 0xfb, - 0xc7, 0xf9, 0xc8, 0xfb, 0xc8, 0xf9, 0xc8, 0xfb, 0xc8, 0xf9, 0xc8, 0xfb, - 0xc8, 0xf9, 0xc9, 0xfb, 0xc9, 0xf9, 0xc9, 0xfb, 0xc9, 0xf9, 0xc9, 0xfc, - 0xca, 0xf9, 0xc9, 0xfc, 0xca, 0xf9, 0xca, 0xfc, 0xca, 0xf9, 0xca, 0xfc, - 0xca, 0xf9, 0xca, 0xfc, 0xca, 0xf9, 0xcb, 0xfc, 0xcb, 0xf9, 0xcb, 0xfc, - 0xcb, 0xf9, 0xcb, 0xfc, 0xcb, 0xf9, 0xcc, 0xfc, 0xcc, 0xf9, 0xcc, 0xfc, - 0xcc, 0xf9, 0xcc, 0xfc, 0xcc, 0xf9, 0xcc, 0xfc, 0xcc, 0xf9, 0xcd, 0xfc, - 0xcd, 0xf9, 0xcc, 0xfc, 0xcd, 0xf9, 0xcd, 0xfc, 0xcd, 0xf9, 0xce, 0xfc, - 0xce, 0xfa, 0xce, 0xfc, 0xce, 0xfa, 0xce, 0xfc, 0xce, 0xfa, 0xce, 0xfc, - 0xce, 0xfa, 0xcf, 0xfc, 0xcf, 0xfa, 0xcf, 0xfc, 0xcf, 0xfa, 0xcf, 0xfc, - 0xcf, 0xfa, 0xd0, 0xfc, 0xd0, 0xfa, 0xd0, 0xfc, 0xd0, 0xf8, 0xd0, 0xfc, - 0xd0, 0xf8, 0xd0, 0xfc, 0xd0, 0xf8, 0xd1, 0xfc, 0xd1, 0xf8, 0xd1, 0xfc, - 0xd1, 0xf8, 0xd1, 0xfc, 0xd1, 0xf8, 0xd2, 0xfc, 0xd2, 0xf8, 0xd2, 0xfc, - 0xd2, 0xf8, 0xd2, 0xfc, 0xd2, 0xf8, 0xd2, 0xfc, 0xd2, 0xf8, 0xd3, 0xfc, - 0xd3, 0xf8, 0xd3, 0xfd, 0xd3, 0xf9, 0xd3, 0xfd, 0xd3, 0xf9, 0xd4, 0xfd, - 0xd4, 0xf9, 0xd4, 0xfd, 0xd4, 0xf9, 0xd4, 0xfd, 0xd4, 0xf9, 0xd4, 0xfd, - 0xd4, 0xf9, 0xd5, 0xfd, 0xd5, 0xf9, 0xd5, 0xfd, 0xd5, 0xf9, 0xd5, 0xfd, - 0xd5, 0xf9, 0xd6, 0xfd, 0xd6, 0xf9, 0xd6, 0xfd, 0xd6, 0xf9, 0xd6, 0xfd, - 0xd6, 0xf9, 0xd6, 0xfd, 0xd6, 0xf9, 0xd7, 0xfd, 0xd7, 0xf9, 0xd7, 0xfd, - 0xd7, 0xf9, 0xd7, 0xfd, 0xd7, 0xf9, 0xd7, 0xfd, 0xd7, 0xf9, 0xd8, 0xfd, - 0xd8, 0xf9, 0xd8, 0xfd, 0xd8, 0xf9, 0xd8, 0xfd, 0xd8, 0xf9, 0xd9, 0xfd, - 0xd9, 0xf9, 0xd9, 0xfd, 0xd9, 0xf9, 0xd9, 0xfd, 0xd9, 0xf9, 0xd9, 0xfd, - 0xd9, 0xf9, 0xda, 0xfd, 0xd9, 0xf9, 0xda, 0xfd, 0xd9, 0xf9, 0xda, 0xfe, - 0xda, 0xf9, 0xda, 0xfe, 0xda, 0xf9, 0xdb, 0xfe, 0xdb, 0xf9, 0xdb, 0xfe, - 0xdb, 0xf9, 0xdb, 0xfe, 0xdb, 0xf9, 0xdb, 0xfe, 0xdb, 0xf9, 0xdc, 0xfe, - 0xdc, 0xf9, 0xdc, 0xfe, 0xdb, 0xf9, 0xdc, 0xfe, 0xdc, 0xf9, 0xdd, 0xfe, - 0xdb, 0xf9, 0xdd, 0xfe, 0xdc, 0xf9, 0xdd, 0xfe, 0xdd, 0xf9, 0xdd, 0xfe, - 0xdd, 0xf9, 0xde, 0xfe, 0xde, 0xf9, 0xde, 0xfe, 0xde, 0xf9, 0xde, 0xfe, - 0xde, 0xf9, 0xde, 0xfe, 0xde, 0xf9, 0xdf, 0xfe, 0xdf, 0xf9, 0xdf, 0xfe, - 0xde, 0xf9, 0xdf, 0xfe, 0xdf, 0xf9, 0xdf, 0xfe, 0xde, 0xf9, 0xe0, 0xfe, - 0xdf, 0xf9, 0xe0, 0xfe, 0xe0, 0xf9, 0xe0, 0xfd, 0xe2, 0xf9, 0xe1, 0xfc, - 0xe3, 0xf9, 0xe1, 0xfd, 0xe2, 0xf9, 0xe1, 0xfc, 0xe3, 0xf9, 0xe1, 0xfd, - 0xe2, 0xf9, 0xe2, 0xfc, 0xe3, 0xf9, 0xe2, 0xfc, 0xe3, 0xf9, 0xe2, 0xfc, - 0xe3, 0xf9, 0xe2, 0xfc, 0xe3, 0xf9, 0xe2, 0xfc, 0xe3, 0xf9, 0xe2, 0xfc, - 0xe3, 0xf9, 0xe2, 0xfc, 0xe3, 0xf9, 0xe2, 0xfc, 0xe3, 0xf9, 0xe5, 0xfc, - 0xe4, 0xf9, 0xe5, 0xfc, 0xe4, 0xf9, 0xe5, 0xfc, 0xe4, 0xf9, 0xe5, 0xfc, - 0xe4, 0xf9, 0xe5, 0xfc, 0xe4, 0xf9, 0xe5, 0xfc, 0xe4, 0xf9, 0xe5, 0xfc, - 0xe4, 0xf9, 0xe5, 0xfc, 0xe4, 0xf9, 0xe6, 0xfb, 0xe5, 0xf9, 0xe6, 0xfc, - 0xe4, 0xf9, 0xe6, 0xfb, 0xe5, 0xf9, 0xe6, 0xfc, 0xe4, 0xf9, 0xe7, 0xfb, - 0xe5, 0xf9, 0xe7, 0xfc, 0xe4, 0xf9, 0xe7, 0xfb, 0xe5, 0xf9, 0xe7, 0xfc, - 0xe4, 0xf9, 0xe8, 0xfb, 0xe5, 0xf9, 0xe8, 0xfc, 0xe4, 0xf9, 0xe8, 0xfb, - 0xe5, 0xf9, 0xe8, 0xfc, 0xe4, 0xf9, 0xe9, 0xfb, 0xe5, 0xf9, 0xe9, 0xfc, - 0xe4, 0xf9, 0xe9, 0xfb, 0xe5, 0xf9, 0xe9, 0xfc, 0xe4, 0xf9, 0xea, 0xfe, - 0xee, 0xf9, 0xea, 0xfd, 0xee, 0xf9, 0xea, 0xfe, 0xee, 0xf9, 0xea, 0xfd, - 0xee, 0xf9, 0xeb, 0xfc, 0xee, 0xf9, 0xeb, 0xfd, 0xee, 0xf9, 0xeb, 0xfc, - 0xee, 0xf9, 0xeb, 0xfd, 0xee, 0xf9, 0xec, 0xfc, 0xee, 0xf9, 0xec, 0xfd, - 0xee, 0xf9, 0xec, 0xfc, 0xee, 0xf9, 0xec, 0xfd, 0xee, 0xf9, 0xec, 0xfc, - 0xee, 0xf9, 0xed, 0xfd, 0xee, 0xf9, 0xed, 0xfc, 0xee, 0xf9, 0xed, 0xfd, - 0xee, 0xf9, 0xed, 0xfc, 0xee, 0xf9, 0xee, 0xfd, 0xee, 0xf9, 0xee, 0xfc, - 0xee, 0xf9, 0xee, 0xfd, 0xee, 0xf9, 0xee, 0xfc, 0xee, 0xf9, 0xee, 0xfc, - 0xef, 0xf9, 0xef, 0xfc, 0xee, 0xf9, 0xef, 0xfc, 0xef, 0xf9, 0xef, 0xfc, - 0xee, 0xf9, 0xf0, 0xfc, 0xef, 0xf9, 0xf0, 0xfc, 0xee, 0xf9, 0xf0, 0xfc, - 0xef, 0xf9, 0xf0, 0xfc, 0xee, 0xf9, 0xf1, 0xfc, 0xef, 0xf9, 0xf1, 0xfb, - 0xef, 0xf9, 0xf1, 0xfc, 0xef, 0xf9, 0xf1, 0xfb, 0xef, 0xf9, 0xf2, 0xfc, - 0xef, 0xf9, 0xf2, 0xfb, 0xef, 0xf9, 0xf2, 0xfc, 0xef, 0xf9, 0xf2, 0xfb, - 0xef, 0xf9, 0xf2, 0xfc, 0xef, 0xf9, 0xf3, 0xfb, 0xef, 0xf9, 0xf3, 0xfc, - 0xef, 0xf9, 0xf3, 0xfb, 0xef, 0xf9, 0xf3, 0xfc, 0xef, 0xf9, 0xf4, 0xfb, - 0xef, 0xf9, 0xf4, 0xfc, 0xef, 0xf9, 0xf4, 0xfb, 0xef, 0xf9, 0xf4, 0xfc, - 0xef, 0xf9, 0xf5, 0xfb, 0xef, 0xf9, 0xf5, 0xfc, 0xef, 0xf9, 0xf5, 0xfb, - 0xef, 0xf9, 0xf5, 0xfc, 0xef, 0xf9, 0xf5, 0xfb, 0xef, 0xf9, 0xf6, 0xfc, - 0xef, 0xf9, 0xf6, 0xfb, 0xef, 0xf9, 0xf6, 0xfc, 0xef, 0xf9, 0xf6, 0xfb, - 0xef, 0xf9, 0xf7, 0xfc, 0xef, 0xf9, 0xf7, 0xfb, 0xef, 0xf9, 0xf7, 0xfc, - 0xef, 0xf9, 0xf7, 0xfb, 0xef, 0xf9, 0xf8, 0xfa, 0xef, 0xf9, 0xf8, 0xfb, - 0xef, 0xf9, 0xf8, 0xfa, 0xef, 0xf9, 0xf8, 0xfb, 0xef, 0xf9, 0xf8, 0xfa, - 0xef, 0xf9, 0xf9, 0xfb, 0xef, 0xf9, 0xf9, 0xfa, 0xef, 0xf9, 0xf9, 0xfb, - 0xef, 0xf9, 0xf9, 0xfa, 0xef, 0xf9, 0xfa, 0xfb, 0xef, 0xf9, 0xfa, 0xfa, - 0xef, 0xf9, 0xfa, 0xfb, 0xef, 0xf9, 0xfa, 0xfa, 0xef, 0xf9, 0xfa, 0xfb, - 0xef, 0xf9, 0xfb, 0xfa, 0xef, 0xf9, 0xfb, 0xfb, 0xef, 0xf9, 0xfb, 0xfa, - 0xef, 0xf9, 0xfb, 0xfb, 0xef, 0xf9, 0xfc, 0xfa, 0xef, 0xf9, 0xfc, 0xfb, - 0xef, 0xf9, 0xfc, 0xfa, 0xef, 0xf9, 0xfc, 0xfb, 0xef, 0xf9, 0xfc, 0xfa, - 0xef, 0xf9, 0xfd, 0xfb, 0xef, 0xf9, 0xfd, 0xfa, 0xef, 0xf9, 0xfd, 0xfb, - 0xef, 0xf9, 0xfd, 0xfa, 0xef, 0xf9, 0xfe, 0xfb, 0xef, 0xf9, 0xfe, 0xfa, - 0xef, 0xf9, 0xfe, 0xfb, 0xef, 0xf9, 0xfe, 0xfa, 0xef, 0xf9, 0xfe, 0xfb, - 0xef, 0xf9, 0xff, 0xfa, 0xef, 0xf9, 0xff, 0xfb, 0xef, 0xf9, 0x03, 0xf4, - 0x83, 0xf9, 0x0a, 0xf4, 0x83, 0xf9, 0x0f, 0xf4, 0x83, 0xf9, 0x14, 0xf4, - 0x83, 0xf9, 0x17, 0xf4, 0x83, 0xf9, 0x1b, 0xf4, 0x83, 0xf9, 0x1e, 0xf4, - 0x83, 0xf9, 0x20, 0xf4, 0x83, 0xf9, 0x23, 0xf4, 0x83, 0xf9, 0x25, 0xf4, - 0x83, 0xf9, 0x27, 0xf4, 0x83, 0xf9, 0x29, 0xf4, 0x83, 0xf9, 0x2b, 0xf4, - 0x83, 0xf9, 0x2d, 0xf4, 0x83, 0xf9, 0x2f, 0xf4, 0x83, 0xf9, 0x31, 0xf4, - 0x83, 0xf9, 0x32, 0xf4, 0x83, 0xf9, 0x34, 0xf4, 0x83, 0xf9, 0x35, 0xf4, - 0x83, 0xf9, 0x37, 0xf4, 0x83, 0xf9, 0x38, 0xf4, 0x83, 0xf9, 0x3a, 0xf4, - 0x83, 0xf9, 0x3b, 0xf4, 0x83, 0xf9, 0x3c, 0xf4, 0x83, 0xf9, 0x3e, 0xf4, - 0x83, 0xf9, 0x3f, 0xf4, 0x83, 0xf9, 0x40, 0xf4, 0x83, 0xf9, 0x42, 0xf4, - 0x83, 0xf9, 0x43, 0xf4, 0x83, 0xf9, 0x44, 0xf4, 0x83, 0xf9, 0x45, 0xf4, - 0x83, 0xf9, 0x46, 0xf4, 0x83, 0xf9, 0x47, 0xf4, 0x83, 0xf9, 0x48, 0xf4, - 0x83, 0xf9, 0x49, 0xf4, 0x83, 0xf9, 0x4a, 0xf4, 0x83, 0xf9, 0x4b, 0xf4, - 0x83, 0xf9, 0x4c, 0xf4, 0x83, 0xf9, 0x4d, 0xf4, 0x83, 0xf9, 0x4e, 0xf4, - 0x83, 0xf9, 0x4f, 0xf4, 0x83, 0xf9, 0x50, 0xf4, 0x83, 0xf9, 0x51, 0xf4, - 0x83, 0xf9, 0x52, 0xf4, 0x83, 0xf9, 0x53, 0xf4, 0x83, 0xf9, 0x54, 0xf4, - 0x83, 0xf9, 0x55, 0xf4, 0x83, 0xf9, 0x56, 0xf4, 0x83, 0xf9, 0x57, 0xf4, - 0x83, 0xf9, 0x58, 0xf4, 0x83, 0xf9, 0x58, 0xf4, 0x83, 0xf9, 0x59, 0xf4, - 0x83, 0xf9, 0x5a, 0xf4, 0x83, 0xf9, 0x5b, 0xf4, 0x83, 0xf9, 0x5c, 0xf4, - 0x83, 0xf9, 0x5d, 0xf4, 0x83, 0xf9, 0x5d, 0xf4, 0x83, 0xf9, 0x5e, 0xf4, - 0x83, 0xf9, 0x5f, 0xf4, 0x83, 0xf9, 0x60, 0xf4, 0x83, 0xf9, 0x60, 0xf4, - 0x83, 0xf9, 0x61, 0xf4, 0x83, 0xf9, 0x62, 0xf4, 0x83, 0xf9, 0x63, 0xf4, - 0x83, 0xf9, 0x63, 0xf4, 0x83, 0xf9, 0x64, 0xf4, 0x83, 0xf9, 0x65, 0xf4, - 0x83, 0xf9, 0x66, 0xf4, 0x83, 0xf9, 0x66, 0xf4, 0x83, 0xf9, 0x67, 0xf4, - 0x83, 0xf9, 0x68, 0xf4, 0x83, 0xf9, 0x68, 0xf4, 0x83, 0xf9, 0x69, 0xf4, - 0x83, 0xf9, 0x6a, 0xf4, 0x83, 0xf9, 0x6a, 0xf4, 0x83, 0xf9, 0x6b, 0xf4, - 0x83, 0xf9, 0x6c, 0xf4, 0x83, 0xf9, 0x6c, 0xf4, 0x83, 0xf9, 0x6d, 0xf4, - 0x83, 0xf9, 0x6e, 0xf4, 0x83, 0xf9, 0x6e, 0xf4, 0x83, 0xf9, 0x6f, 0xf4, - 0x83, 0xf9, 0x70, 0xf4, 0x83, 0xf9, 0x70, 0xf4, 0x83, 0xf9, 0x71, 0xf4, - 0x83, 0xf9, 0x72, 0xf4, 0x83, 0xf9, 0x72, 0xf4, 0x83, 0xf9, 0x73, 0xf4, - 0x83, 0xf9, 0x73, 0xf4, 0x83, 0xf9, 0x74, 0xf4, 0x83, 0xf9, 0x75, 0xf4, - 0x83, 0xf9, 0x75, 0xf4, 0x83, 0xf9, 0x76, 0xf4, 0x83, 0xf9, 0x76, 0xf4, - 0x83, 0xf9, 0x77, 0xf4, 0x83, 0xf9, 0x78, 0xf4, 0x83, 0xf9, 0x78, 0xf4, - 0x83, 0xf9, 0x79, 0xf4, 0x83, 0xf9, 0x79, 0xf4, 0x83, 0xf9, 0x7a, 0xf4, - 0x83, 0xf9, 0x7a, 0xf4, 0x83, 0xf9, 0x7b, 0xf4, 0x83, 0xf9, 0x7c, 0xf4, - 0x83, 0xf9, 0x7c, 0xf4, 0x83, 0xf9, 0x7d, 0xf4, 0x83, 0xf9, 0x7d, 0xf4, - 0x83, 0xf9, 0x7e, 0xf4, 0x83, 0xf9, 0x7e, 0xf4, 0x83, 0xf9, 0x7f, 0xf4, - 0x83, 0xf9, 0x7f, 0xf4, 0x83, 0xf9, 0x80, 0xf4, 0x85, 0xf9, 0x81, 0xf4, - 0x83, 0xf9, 0x81, 0xf4, 0x85, 0xf9, 0x82, 0xf4, 0x86, 0xf9, 0x82, 0xf4, - 0x85, 0xf9, 0x83, 0xf4, 0x86, 0xf9, 0x83, 0xf4, 0x85, 0xf9, 0x84, 0xf4, - 0x86, 0xf9, 0x84, 0xf4, 0x85, 0xf9, 0x85, 0xf5, 0x8b, 0xf9, 0x85, 0xf4, - 0x85, 0xf9, 0x86, 0xf5, 0x8b, 0xf9, 0x86, 0xf5, 0x8b, 0xf9, 0x87, 0xf5, - 0x8b, 0xf9, 0x87, 0xf5, 0x8b, 0xf9, 0x88, 0xf5, 0x8b, 0xf9, 0x88, 0xf5, - 0x8b, 0xf9, 0x89, 0xf5, 0x8b, 0xf9, 0x89, 0xf5, 0x8b, 0xf9, 0x8a, 0xf5, - 0x8b, 0xf9, 0x8a, 0xf5, 0x8b, 0xf9, 0x8b, 0xf5, 0x8b, 0xf9, 0x8b, 0xf5, - 0x90, 0xf9, 0x8c, 0xf5, 0x90, 0xf9, 0x8c, 0xf5, 0x90, 0xf9, 0x8d, 0xf5, - 0x90, 0xf9, 0x8d, 0xf5, 0x90, 0xf9, 0x8e, 0xf5, 0x90, 0xf9, 0x8e, 0xf5, - 0x90, 0xf9, 0x8e, 0xf5, 0x90, 0xf9, 0x8f, 0xf5, 0x90, 0xf9, 0x8f, 0xf5, - 0x90, 0xf9, 0x90, 0xf5, 0x90, 0xf9, 0x90, 0xf6, 0x95, 0xf9, 0x91, 0xf6, - 0x95, 0xf9, 0x91, 0xf6, 0x95, 0xf9, 0x92, 0xf6, 0x95, 0xf9, 0x92, 0xf6, - 0x95, 0xf9, 0x93, 0xf6, 0x95, 0xf9, 0x93, 0xf6, 0x95, 0xf9, 0x94, 0xf6, - 0x95, 0xf9, 0x94, 0xf6, 0x95, 0xf9, 0x94, 0xf6, 0x95, 0xf9, 0x95, 0xf6, - 0x95, 0xf9, 0x95, 0xf6, 0x9a, 0xf9, 0x96, 0xf6, 0x9a, 0xf9, 0x96, 0xf6, - 0x9a, 0xf9, 0x97, 0xf6, 0x9a, 0xf9, 0x97, 0xf6, 0x9a, 0xf9, 0x98, 0xf6, - 0x9a, 0xf9, 0x98, 0xf6, 0x9a, 0xf9, 0x98, 0xf6, 0x9a, 0xf9, 0x99, 0xf6, - 0x9a, 0xf9, 0x99, 0xf6, 0x9a, 0xf9, 0x9a, 0xf6, 0x9a, 0xf9, 0x9a, 0xf7, - 0x9e, 0xf9, 0x9a, 0xf7, 0x9f, 0xf9, 0x9b, 0xf7, 0x9e, 0xf9, 0x9b, 0xf7, - 0x9f, 0xf9, 0x9c, 0xf7, 0x9e, 0xf9, 0x9c, 0xf7, 0x9f, 0xf9, 0x9d, 0xf7, - 0x9e, 0xf9, 0x9d, 0xf7, 0x9f, 0xf9, 0x9d, 0xf7, 0x9e, 0xf9, 0x9e, 0xf7, - 0x9f, 0xf9, 0x9e, 0xf7, 0x9e, 0xf9, 0x9f, 0xf7, 0x9f, 0xf9, 0x9f, 0xf7, - 0x9f, 0xf9, 0x9f, 0xf7, 0xa3, 0xf9, 0xa0, 0xf7, 0xa3, 0xf9, 0xa0, 0xf7, - 0xa3, 0xf9, 0xa1, 0xf7, 0xa3, 0xf9, 0xa1, 0xf7, 0xa3, 0xf9, 0xa1, 0xf7, - 0xa3, 0xf9, 0xa2, 0xf7, 0xa3, 0xf9, 0xa2, 0xf7, 0xa3, 0xf9, 0xa3, 0xf7, - 0xa3, 0xf9, 0xa3, 0xf7, 0xa3, 0xf9, 0xa3, 0xf7, 0xa3, 0xf9, 0xa4, 0xf8, - 0xa7, 0xf9, 0xa4, 0xf8, 0xa7, 0xf9, 0xa5, 0xf8, 0xa7, 0xf9, 0xa5, 0xf8, - 0xa7, 0xf9, 0xa5, 0xf8, 0xa7, 0xf9, 0xa6, 0xf8, 0xa7, 0xf9, 0xa6, 0xf8, - 0xa7, 0xf9, 0xa6, 0xf8, 0xa9, 0xf9, 0xa7, 0xf8, 0xa9, 0xf9, 0xa7, 0xf8, - 0xa9, 0xf9, 0xa8, 0xf8, 0xa9, 0xf9, 0xa8, 0xf8, 0xa9, 0xf9, 0xa8, 0xf8, - 0xa9, 0xf9, 0xa9, 0xf8, 0xab, 0xf9, 0xa9, 0xf8, 0xab, 0xf9, 0xaa, 0xf8, - 0xab, 0xf9, 0xaa, 0xf8, 0xab, 0xf9, 0xaa, 0xf8, 0xab, 0xf9, 0xab, 0xf8, - 0xab, 0xf9, 0xab, 0xf8, 0xab, 0xf9, 0xab, 0xf8, 0xab, 0xf9, 0xac, 0xf8, - 0xac, 0xf9, 0xac, 0xf8, 0xaf, 0xf9, 0xac, 0xf8, 0xaf, 0xf9, 0xad, 0xf8, - 0xaf, 0xf9, 0xad, 0xf8, 0xaf, 0xf9, 0xae, 0xf8, 0xaf, 0xf9, 0xae, 0xf8, - 0xaf, 0xf9, 0xae, 0xf8, 0xaf, 0xf9, 0xaf, 0xf8, 0xaf, 0xf9, 0xaf, 0xf8, - 0xaf, 0xf9, 0xaf, 0xf8, 0xaf, 0xf9, 0xb0, 0xf8, 0xb0, 0xf9, 0xb0, 0xf9, - 0xb3, 0xf9, 0xb0, 0xf9, 0xb3, 0xf9, 0xb1, 0xf9, 0xb3, 0xf9, 0xb1, 0xf9, - 0xb3, 0xf9, 0xb2, 0xf9, 0xb3, 0xf9, 0xb2, 0xf9, 0xb3, 0xf9, 0xb2, 0xf9, - 0xb3, 0xf9, 0xb3, 0xf9, 0xb3, 0xf9, 0xb3, 0xf9, 0xb3, 0xf9, 0xb3, 0xf9, - 0xb3, 0xf9, 0xb4, 0xf9, 0xb4, 0xf9, 0xb4, 0xf9, 0xb4, 0xf9, 0xb4, 0xf9, - 0xb4, 0xf9, 0xb5, 0xf9, 0xb7, 0xf9, 0xb5, 0xf9, 0xb7, 0xf9, 0xb5, 0xf9, - 0xb7, 0xf9, 0xb6, 0xf9, 0xb7, 0xf9, 0xb6, 0xf9, 0xb7, 0xf9, 0xb6, 0xf9, - 0xb7, 0xf9, 0xb7, 0xf9, 0xb7, 0xf9, 0xb7, 0xf9, 0xb7, 0xf9, 0xb7, 0xf9, - 0xb7, 0xf9, 0xb8, 0xf9, 0xb8, 0xf9, 0xb8, 0xf9, 0xb8, 0xf9, 0xb8, 0xfa, - 0xba, 0xf9, 0xb9, 0xfa, 0xbb, 0xf9, 0xb9, 0xfa, 0xba, 0xf9, 0xb9, 0xfa, - 0xbb, 0xf9, 0xba, 0xfa, 0xba, 0xf9, 0xba, 0xfa, 0xbb, 0xf9, 0xba, 0xfa, - 0xba, 0xf9, 0xbb, 0xfa, 0xbb, 0xf9, 0xbb, 0xfa, 0xbb, 0xf9, 0xbb, 0xfa, - 0xbb, 0xf9, 0xbc, 0xfa, 0xbc, 0xf9, 0xbc, 0xfa, 0xbe, 0xf9, 0xbc, 0xfa, - 0xbe, 0xf9, 0xbd, 0xfa, 0xbe, 0xf9, 0xbd, 0xfa, 0xbe, 0xf9, 0xbd, 0xfa, - 0xbe, 0xf9, 0xbe, 0xfa, 0xbe, 0xf9, 0xbe, 0xfa, 0xbe, 0xf9, 0xbe, 0xfa, - 0xbe, 0xf9, 0xbf, 0xfa, 0xbf, 0xf9, 0xbf, 0xfa, 0xbf, 0xf9, 0xbf, 0xfa, - 0xbf, 0xf9, 0xc0, 0xfa, 0xc0, 0xf9, 0xc0, 0xfa, 0xc0, 0xf9, 0xc0, 0xfb, - 0xc1, 0xf9, 0xc1, 0xfb, 0xc2, 0xf9, 0xc1, 0xfb, 0xc1, 0xf9, 0xc1, 0xfb, - 0xc2, 0xf9, 0xc1, 0xfb, 0xc1, 0xf9, 0xc2, 0xfb, 0xc2, 0xf9, 0xc2, 0xfb, - 0xc2, 0xf9, 0xc2, 0xfb, 0xc2, 0xf9, 0xc3, 0xfb, 0xc3, 0xf9, 0xc3, 0xfb, - 0xc3, 0xf9, 0xc3, 0xfb, 0xc3, 0xf9, 0xc4, 0xfb, 0xc5, 0xf9, 0xc4, 0xfb, - 0xc5, 0xf9, 0xc4, 0xfb, 0xc5, 0xf9, 0xc5, 0xfb, 0xc5, 0xf9, 0xc5, 0xfb, - 0xc5, 0xf9, 0xc5, 0xfb, 0xc5, 0xf9, 0xc6, 0xfb, 0xc6, 0xf9, 0xc6, 0xfb, - 0xc6, 0xf9, 0xc6, 0xfb, 0xc7, 0xf9, 0xc6, 0xfb, 0xc6, 0xf9, 0xc7, 0xfb, - 0xc7, 0xf9, 0xc7, 0xfb, 0xc7, 0xf9, 0xc7, 0xfb, 0xc7, 0xf9, 0xc8, 0xfc, - 0xc8, 0xf9, 0xc8, 0xfc, 0xc9, 0xf9, 0xc8, 0xfc, 0xc8, 0xf9, 0xc9, 0xfc, - 0xc9, 0xf9, 0xc9, 0xfc, 0xc9, 0xf9, 0xc9, 0xfc, 0xc9, 0xf9, 0xc9, 0xfc, - 0xc9, 0xf9, 0xca, 0xfc, 0xca, 0xf9, 0xca, 0xfc, 0xca, 0xf9, 0xca, 0xfc, - 0xca, 0xf9, 0xcb, 0xfc, 0xcb, 0xf9, 0xcb, 0xfc, 0xcc, 0xf9, 0xcb, 0xfc, - 0xcc, 0xf9, 0xcc, 0xfc, 0xcc, 0xf9, 0xcc, 0xfc, 0xcc, 0xf9, 0xcc, 0xfc, - 0xcc, 0xf9, 0xcc, 0xfc, 0xcc, 0xf9, 0xcd, 0xfc, 0xcd, 0xf9, 0xcd, 0xfc, - 0xcd, 0xf9, 0xcd, 0xfc, 0xcd, 0xf9, 0xce, 0xfc, 0xce, 0xf9, 0xce, 0xfc, - 0xce, 0xf9, 0xce, 0xfc, 0xce, 0xf9, 0xce, 0xfc, 0xce, 0xf9, 0xce, 0xfc, - 0xcf, 0xf9, 0xce, 0xfc, 0xcf, 0xf9, 0xcf, 0xfc, 0xcf, 0xfa, 0xd0, 0xfc, - 0xd0, 0xfa, 0xd0, 0xfc, 0xd0, 0xfa, 0xd0, 0xfc, 0xd0, 0xfa, 0xd0, 0xfc, - 0xd0, 0xfa, 0xd1, 0xfc, 0xd1, 0xfa, 0xd1, 0xfc, 0xd1, 0xfa, 0xd1, 0xfc, - 0xd1, 0xf8, 0xd2, 0xfc, 0xd2, 0xf8, 0xd2, 0xfc, 0xd2, 0xf8, 0xd2, 0xfc, - 0xd2, 0xf8, 0xd2, 0xfc, 0xd2, 0xf8, 0xd3, 0xfc, 0xd3, 0xf8, 0xd3, 0xfc, - 0xd3, 0xf8, 0xd3, 0xfc, 0xd3, 0xf8, 0xd4, 0xfc, 0xd4, 0xf8, 0xd4, 0xfc, - 0xd4, 0xf8, 0xd4, 0xfc, 0xd4, 0xf8, 0xd4, 0xfd, 0xd4, 0xf9, 0xd5, 0xfd, - 0xd5, 0xf9, 0xd5, 0xfd, 0xd5, 0xf9, 0xd5, 0xfd, 0xd5, 0xf9, 0xd6, 0xfd, - 0xd6, 0xf9, 0xd6, 0xfd, 0xd6, 0xf9, 0xd6, 0xfd, 0xd6, 0xf9, 0xd6, 0xfd, - 0xd6, 0xf9, 0xd7, 0xfd, 0xd7, 0xf9, 0xd7, 0xfd, 0xd7, 0xf9, 0xd7, 0xfd, - 0xd7, 0xf9, 0xd7, 0xfd, 0xd7, 0xf9, 0xd8, 0xfd, 0xd7, 0xf9, 0xd8, 0xfd, - 0xd8, 0xf9, 0xd8, 0xfd, 0xd8, 0xf9, 0xd9, 0xfd, 0xd9, 0xf9, 0xd9, 0xfd, - 0xd9, 0xf9, 0xd9, 0xfd, 0xd9, 0xf9, 0xd9, 0xfd, 0xd9, 0xf9, 0xda, 0xfd, - 0xda, 0xf9, 0xda, 0xfd, 0xda, 0xf9, 0xda, 0xfd, 0xda, 0xf9, 0xda, 0xfd, - 0xda, 0xf9, 0xdb, 0xfd, 0xda, 0xf9, 0xdb, 0xfd, 0xda, 0xf9, 0xdb, 0xfd, - 0xda, 0xf9, 0xdb, 0xfe, 0xdb, 0xf9, 0xdc, 0xfe, 0xdc, 0xf9, 0xdc, 0xfe, - 0xdc, 0xf9, 0xdc, 0xfe, 0xdc, 0xf9, 0xdd, 0xfe, 0xdd, 0xf9, 0xdd, 0xfe, - 0xdd, 0xf9, 0xdd, 0xfe, 0xdd, 0xf9, 0xdd, 0xfe, 0xdd, 0xf9, 0xde, 0xfe, - 0xdd, 0xf9, 0xde, 0xfe, 0xdd, 0xf9, 0xde, 0xfe, 0xdd, 0xf9, 0xde, 0xfe, - 0xde, 0xf9, 0xdf, 0xfe, 0xdf, 0xf9, 0xdf, 0xfe, 0xdf, 0xf9, 0xdf, 0xfe, - 0xdf, 0xf9, 0xdf, 0xfe, 0xdf, 0xf9, 0xe0, 0xfe, 0xe0, 0xf9, 0xe0, 0xfe, - 0xe0, 0xf9, 0xe0, 0xfd, 0xe2, 0xf9, 0xe1, 0xfc, 0xe3, 0xf9, 0xe1, 0xfd, - 0xe2, 0xf9, 0xe1, 0xfc, 0xe3, 0xf9, 0xe1, 0xfd, 0xe2, 0xf9, 0xe2, 0xfc, - 0xe3, 0xf9, 0xe2, 0xfd, 0xe2, 0xf9, 0xe2, 0xfc, 0xe3, 0xf9, 0xe2, 0xfd, - 0xe2, 0xf9, 0xe2, 0xfc, 0xe3, 0xf9, 0xe2, 0xfc, 0xe3, 0xf9, 0xe2, 0xfc, - 0xe3, 0xf9, 0xe2, 0xfc, 0xe3, 0xf9, 0xe5, 0xfc, 0xe4, 0xf9, 0xe4, 0xfc, - 0xe4, 0xfa, 0xe5, 0xfc, 0xe4, 0xf9, 0xe5, 0xfc, 0xe4, 0xf9, 0xe5, 0xfc, - 0xe4, 0xf9, 0xe5, 0xfc, 0xe4, 0xf9, 0xe5, 0xfc, 0xe4, 0xf9, 0xe5, 0xfc, - 0xe4, 0xf9, 0xe6, 0xfc, 0xe5, 0xf9, 0xe6, 0xfc, 0xe4, 0xf9, 0xe6, 0xfc, - 0xe5, 0xf9, 0xe6, 0xfc, 0xe4, 0xf9, 0xe7, 0xfc, 0xe5, 0xf9, 0xe7, 0xfc, - 0xe4, 0xf9, 0xe7, 0xfc, 0xe5, 0xf9, 0xe7, 0xfc, 0xe4, 0xf9, 0xe8, 0xfc, - 0xe5, 0xf9, 0xe8, 0xfc, 0xe4, 0xf9, 0xe8, 0xfc, 0xe5, 0xf9, 0xe8, 0xfc, - 0xe4, 0xf9, 0xe9, 0xfc, 0xe5, 0xf9, 0xe9, 0xfc, 0xe4, 0xf9, 0xe9, 0xfc, - 0xe5, 0xf9, 0xe9, 0xfc, 0xe4, 0xf9, 0xea, 0xfe, 0xee, 0xf9, 0xea, 0xfc, - 0xee, 0xf9, 0xea, 0xfe, 0xee, 0xf9, 0xea, 0xfc, 0xee, 0xf9, 0xeb, 0xfe, - 0xee, 0xf9, 0xeb, 0xfc, 0xee, 0xf9, 0xeb, 0xfe, 0xee, 0xf9, 0xeb, 0xfc, - 0xee, 0xf9, 0xec, 0xfe, 0xee, 0xf9, 0xec, 0xfc, 0xee, 0xf9, 0xec, 0xfe, - 0xee, 0xf9, 0xec, 0xfc, 0xee, 0xf9, 0xec, 0xfc, 0xee, 0xf9, 0xed, 0xfc, - 0xee, 0xf9, 0xed, 0xfc, 0xee, 0xf9, 0xed, 0xfc, 0xee, 0xf9, 0xed, 0xfc, - 0xee, 0xf9, 0xee, 0xfc, 0xee, 0xf9, 0xee, 0xfc, 0xee, 0xf9, 0xee, 0xfc, - 0xee, 0xf8, 0xee, 0xfc, 0xee, 0xf9, 0xef, 0xfc, 0xef, 0xf9, 0xef, 0xfc, - 0xee, 0xf9, 0xef, 0xfc, 0xef, 0xf9, 0xef, 0xfc, 0xee, 0xf9, 0xf0, 0xfc, - 0xef, 0xf9, 0xf0, 0xfc, 0xee, 0xf9, 0xf0, 0xfc, 0xef, 0xf9, 0xf0, 0xfc, - 0xee, 0xf9, 0xf1, 0xfc, 0xef, 0xf9, 0xf1, 0xfc, 0xee, 0xf9, 0xf1, 0xfc, - 0xef, 0xf9, 0xf1, 0xfc, 0xee, 0xf9, 0xf2, 0xfc, 0xef, 0xf9, 0xf2, 0xfc, - 0xee, 0xf9, 0xf2, 0xfc, 0xef, 0xf9, 0xf2, 0xfc, 0xee, 0xf9, 0xf2, 0xfc, - 0xef, 0xf9, 0xf3, 0xfb, 0xef, 0xf9, 0xf3, 0xfc, 0xef, 0xf9, 0xf3, 0xfb, - 0xef, 0xf9, 0xf3, 0xfc, 0xef, 0xf9, 0xf4, 0xfb, 0xef, 0xf9, 0xf4, 0xfc, - 0xef, 0xf9, 0xf4, 0xfb, 0xef, 0xf9, 0xf4, 0xfc, 0xef, 0xf9, 0xf5, 0xfb, - 0xef, 0xf9, 0xf5, 0xfc, 0xef, 0xf9, 0xf5, 0xfb, 0xef, 0xf9, 0xf5, 0xfc, - 0xef, 0xf9, 0xf5, 0xfb, 0xef, 0xf9, 0xf6, 0xfc, 0xef, 0xf9, 0xf6, 0xfb, - 0xef, 0xf9, 0xf6, 0xfc, 0xef, 0xf9, 0xf6, 0xfb, 0xef, 0xf9, 0xf7, 0xfc, - 0xef, 0xf9, 0xf7, 0xfb, 0xef, 0xf9, 0xf7, 0xfc, 0xef, 0xf9, 0xf7, 0xfb, - 0xef, 0xf9, 0xf8, 0xfc, 0xef, 0xf9, 0xf8, 0xfb, 0xef, 0xf9, 0xf8, 0xfc, - 0xef, 0xf9, 0xf8, 0xfb, 0xef, 0xf9, 0xf8, 0xfc, 0xef, 0xf9, 0xf9, 0xfb, - 0xef, 0xf9, 0xf9, 0xfc, 0xef, 0xf9, 0xf9, 0xfb, 0xef, 0xf9, 0xf9, 0xfc, - 0xef, 0xf9, 0xfa, 0xfb, 0xef, 0xf9, 0xfa, 0xfc, 0xef, 0xf9, 0xfa, 0xfb, - 0xef, 0xf9, 0xfa, 0xf9, 0xef, 0xf9, 0xfa, 0xfb, 0xef, 0xf9, 0xfb, 0xf9, - 0xef, 0xf9, 0xfb, 0xfb, 0xef, 0xf9, 0xfb, 0xf9, 0xef, 0xf9, 0xfb, 0xfb, - 0xef, 0xf9, 0xfc, 0xf9, 0xef, 0xf9, 0xfc, 0xfb, 0xef, 0xf9, 0xfc, 0xf9, - 0xef, 0xf9, 0xfc, 0xfb, 0xef, 0xf9, 0xfc, 0xf9, 0xef, 0xf9, 0xfd, 0xfb, - 0xef, 0xf9, 0xfd, 0xf9, 0xef, 0xf9, 0xfd, 0xfb, 0xef, 0xf9, 0xfd, 0xf9, - 0xef, 0xf9, 0xfe, 0xfb, 0xef, 0xf9, 0xfe, 0xf9, 0xef, 0xf9, 0xfe, 0xfb, - 0xef, 0xf9, 0xfe, 0xf9, 0xef, 0xf9, 0xfe, 0xfb, 0xef, 0xf9, 0xff, 0xf9, - 0xef, 0xf9, 0xff, 0xfb, 0xef, 0xf9, 0x03, 0xf4, 0x83, 0xfa, 0x0a, 0xf4, - 0x83, 0xfa, 0x0f, 0xf4, 0x83, 0xfa, 0x14, 0xf4, 0x83, 0xfa, 0x17, 0xf4, - 0x83, 0xfa, 0x1b, 0xf4, 0x83, 0xfa, 0x1e, 0xf4, 0x83, 0xfa, 0x20, 0xf4, - 0x83, 0xfa, 0x23, 0xf4, 0x83, 0xfa, 0x25, 0xf4, 0x83, 0xfa, 0x27, 0xf4, - 0x83, 0xfa, 0x29, 0xf4, 0x83, 0xfa, 0x2b, 0xf4, 0x83, 0xfa, 0x2d, 0xf4, - 0x83, 0xfa, 0x2f, 0xf4, 0x83, 0xfa, 0x31, 0xf4, 0x83, 0xfa, 0x32, 0xf4, - 0x83, 0xfa, 0x34, 0xf4, 0x83, 0xfa, 0x35, 0xf4, 0x83, 0xfa, 0x37, 0xf4, - 0x83, 0xfa, 0x38, 0xf4, 0x83, 0xfa, 0x3a, 0xf4, 0x83, 0xfa, 0x3b, 0xf4, - 0x83, 0xfa, 0x3c, 0xf4, 0x83, 0xfa, 0x3e, 0xf4, 0x83, 0xfa, 0x3f, 0xf4, - 0x83, 0xfa, 0x40, 0xf4, 0x83, 0xfa, 0x42, 0xf4, 0x83, 0xfa, 0x43, 0xf4, - 0x83, 0xfa, 0x44, 0xf4, 0x83, 0xfa, 0x45, 0xf4, 0x83, 0xfa, 0x46, 0xf4, - 0x83, 0xfa, 0x47, 0xf4, 0x83, 0xfa, 0x48, 0xf4, 0x83, 0xfa, 0x49, 0xf4, - 0x83, 0xfa, 0x4a, 0xf4, 0x83, 0xfa, 0x4b, 0xf4, 0x83, 0xfa, 0x4c, 0xf4, - 0x83, 0xfa, 0x4d, 0xf4, 0x83, 0xfa, 0x4e, 0xf4, 0x83, 0xfa, 0x4f, 0xf4, - 0x83, 0xfa, 0x50, 0xf4, 0x83, 0xfa, 0x51, 0xf4, 0x83, 0xfa, 0x52, 0xf4, - 0x83, 0xfa, 0x53, 0xf4, 0x83, 0xfa, 0x54, 0xf4, 0x83, 0xfa, 0x55, 0xf4, - 0x83, 0xfa, 0x56, 0xf4, 0x83, 0xfa, 0x57, 0xf4, 0x83, 0xfa, 0x58, 0xf4, - 0x83, 0xfa, 0x58, 0xf4, 0x83, 0xfa, 0x59, 0xf4, 0x83, 0xfa, 0x5a, 0xf4, - 0x83, 0xfa, 0x5b, 0xf4, 0x83, 0xfa, 0x5c, 0xf4, 0x83, 0xfa, 0x5d, 0xf4, - 0x83, 0xfa, 0x5d, 0xf4, 0x83, 0xfa, 0x5e, 0xf4, 0x83, 0xfa, 0x5f, 0xf4, - 0x83, 0xfa, 0x60, 0xf4, 0x83, 0xfa, 0x60, 0xf4, 0x83, 0xfa, 0x61, 0xf4, - 0x83, 0xfa, 0x62, 0xf4, 0x83, 0xfa, 0x63, 0xf4, 0x83, 0xfa, 0x63, 0xf4, - 0x83, 0xfa, 0x64, 0xf4, 0x83, 0xfa, 0x65, 0xf4, 0x83, 0xfa, 0x66, 0xf4, - 0x83, 0xfa, 0x66, 0xf4, 0x83, 0xfa, 0x67, 0xf4, 0x83, 0xfa, 0x68, 0xf4, - 0x83, 0xfa, 0x68, 0xf4, 0x83, 0xfa, 0x69, 0xf4, 0x83, 0xfa, 0x6a, 0xf4, - 0x83, 0xfa, 0x6a, 0xf4, 0x83, 0xfa, 0x6b, 0xf4, 0x83, 0xfa, 0x6c, 0xf4, - 0x83, 0xfa, 0x6c, 0xf4, 0x83, 0xfa, 0x6d, 0xf4, 0x83, 0xfa, 0x6e, 0xf4, - 0x83, 0xfa, 0x6e, 0xf4, 0x83, 0xfa, 0x6f, 0xf4, 0x83, 0xfa, 0x70, 0xf4, - 0x83, 0xfa, 0x70, 0xf4, 0x83, 0xfa, 0x71, 0xf4, 0x83, 0xfa, 0x72, 0xf4, - 0x83, 0xfa, 0x72, 0xf4, 0x83, 0xfa, 0x73, 0xf4, 0x83, 0xfa, 0x73, 0xf4, - 0x83, 0xfa, 0x74, 0xf4, 0x83, 0xfa, 0x75, 0xf4, 0x83, 0xfa, 0x75, 0xf4, - 0x83, 0xfa, 0x76, 0xf4, 0x83, 0xfa, 0x76, 0xf4, 0x83, 0xfa, 0x77, 0xf4, - 0x83, 0xfa, 0x78, 0xf4, 0x83, 0xfa, 0x78, 0xf4, 0x83, 0xfa, 0x79, 0xf4, - 0x83, 0xfa, 0x79, 0xf4, 0x83, 0xfa, 0x7a, 0xf4, 0x83, 0xfa, 0x7a, 0xf4, - 0x83, 0xfa, 0x7b, 0xf4, 0x83, 0xfa, 0x7c, 0xf4, 0x83, 0xfa, 0x7c, 0xf4, - 0x83, 0xfa, 0x7d, 0xf4, 0x83, 0xfa, 0x7d, 0xf4, 0x83, 0xfa, 0x7e, 0xf4, - 0x83, 0xfa, 0x7e, 0xf4, 0x83, 0xfa, 0x7f, 0xf4, 0x83, 0xfa, 0x7f, 0xf4, - 0x83, 0xfa, 0x80, 0xf4, 0x83, 0xfa, 0x81, 0xf4, 0x83, 0xfa, 0x81, 0xf4, - 0x83, 0xfa, 0x82, 0xf5, 0x88, 0xfa, 0x82, 0xf5, 0x88, 0xfa, 0x83, 0xf5, - 0x88, 0xfa, 0x83, 0xf5, 0x88, 0xfa, 0x84, 0xf5, 0x88, 0xfa, 0x84, 0xf5, - 0x88, 0xfa, 0x85, 0xf5, 0x88, 0xfa, 0x85, 0xf5, 0x88, 0xfa, 0x86, 0xf5, - 0x88, 0xfa, 0x86, 0xf5, 0x88, 0xfa, 0x87, 0xf5, 0x88, 0xfa, 0x87, 0xf5, - 0x8d, 0xfa, 0x88, 0xf5, 0x88, 0xfa, 0x88, 0xf5, 0x8d, 0xfa, 0x89, 0xf5, - 0x8e, 0xfa, 0x89, 0xf5, 0x8d, 0xfa, 0x8a, 0xf5, 0x8e, 0xfa, 0x8a, 0xf5, - 0x8d, 0xfa, 0x8b, 0xf5, 0x8e, 0xfa, 0x8b, 0xf5, 0x8d, 0xfa, 0x8c, 0xf5, - 0x8e, 0xfa, 0x8c, 0xf5, 0x8d, 0xfa, 0x8d, 0xf5, 0x8e, 0xfa, 0x8d, 0xf5, - 0x8d, 0xfa, 0x8e, 0xf5, 0x92, 0xfa, 0x8e, 0xf5, 0x93, 0xfa, 0x8e, 0xf5, - 0x92, 0xfa, 0x8f, 0xf5, 0x93, 0xfa, 0x8f, 0xf5, 0x92, 0xfa, 0x90, 0xf5, - 0x93, 0xfa, 0x90, 0xf5, 0x92, 0xfa, 0x91, 0xf5, 0x93, 0xfa, 0x91, 0xf5, - 0x92, 0xfa, 0x92, 0xf5, 0x93, 0xfa, 0x92, 0xf5, 0x92, 0xfa, 0x93, 0xf6, - 0x97, 0xfa, 0x93, 0xf6, 0x98, 0xfa, 0x94, 0xf6, 0x97, 0xfa, 0x94, 0xf6, - 0x98, 0xfa, 0x94, 0xf6, 0x97, 0xfa, 0x95, 0xf6, 0x98, 0xfa, 0x95, 0xf6, - 0x97, 0xfa, 0x96, 0xf6, 0x98, 0xfa, 0x96, 0xf6, 0x97, 0xfa, 0x97, 0xf6, - 0x98, 0xfa, 0x97, 0xf6, 0x97, 0xfa, 0x98, 0xf6, 0x9c, 0xfa, 0x98, 0xf6, - 0x9c, 0xfa, 0x98, 0xf6, 0x9c, 0xfa, 0x99, 0xf6, 0x9c, 0xfa, 0x99, 0xf6, - 0x9c, 0xfa, 0x9a, 0xf6, 0x9c, 0xfa, 0x9a, 0xf6, 0x9c, 0xfa, 0x9a, 0xf6, - 0x9c, 0xfa, 0x9b, 0xf6, 0x9c, 0xfa, 0x9b, 0xf6, 0x9c, 0xfa, 0x9c, 0xf6, - 0x9c, 0xfa, 0x9c, 0xf7, 0xa0, 0xfa, 0x9d, 0xf7, 0xa1, 0xfa, 0x9d, 0xf7, - 0xa0, 0xfa, 0x9d, 0xf7, 0xa1, 0xfa, 0x9e, 0xf7, 0xa0, 0xfa, 0x9e, 0xf7, - 0xa1, 0xfa, 0x9f, 0xf7, 0xa0, 0xfa, 0x9f, 0xf7, 0xa1, 0xfa, 0x9f, 0xf7, - 0xa0, 0xfa, 0xa0, 0xf7, 0xa1, 0xfa, 0xa0, 0xf7, 0xa0, 0xfa, 0xa1, 0xf7, - 0xa1, 0xfa, 0xa1, 0xf7, 0xa1, 0xfa, 0xa1, 0xf7, 0xa5, 0xfa, 0xa2, 0xf7, - 0xa5, 0xfa, 0xa2, 0xf7, 0xa5, 0xfa, 0xa3, 0xf7, 0xa5, 0xfa, 0xa3, 0xf7, - 0xa5, 0xfa, 0xa3, 0xf7, 0xa5, 0xfa, 0xa4, 0xf7, 0xa5, 0xfa, 0xa4, 0xf7, - 0xa5, 0xfa, 0xa5, 0xf7, 0xa5, 0xfa, 0xa5, 0xf7, 0xa5, 0xfa, 0xa5, 0xf7, - 0xa5, 0xfa, 0xa6, 0xf8, 0xa9, 0xfa, 0xa6, 0xf8, 0xa9, 0xfa, 0xa6, 0xf8, - 0xa9, 0xfa, 0xa7, 0xf8, 0xa9, 0xfa, 0xa7, 0xf8, 0xa9, 0xfa, 0xa8, 0xf8, - 0xa9, 0xfa, 0xa8, 0xf8, 0xa9, 0xfa, 0xa8, 0xf8, 0xa9, 0xfa, 0xa9, 0xf8, - 0xa9, 0xfa, 0xa9, 0xf8, 0xa9, 0xfa, 0xaa, 0xf8, 0xaa, 0xfa, 0xaa, 0xf8, - 0xad, 0xfa, 0xaa, 0xf8, 0xad, 0xfa, 0xab, 0xf8, 0xad, 0xfa, 0xab, 0xf8, - 0xad, 0xfa, 0xab, 0xf8, 0xad, 0xfa, 0xac, 0xf8, 0xad, 0xfa, 0xac, 0xf8, - 0xad, 0xfa, 0xac, 0xf8, 0xad, 0xfa, 0xad, 0xf8, 0xad, 0xfa, 0xad, 0xf8, - 0xad, 0xfa, 0xae, 0xf8, 0xae, 0xfa, 0xae, 0xf9, 0xb1, 0xfa, 0xae, 0xf9, - 0xb1, 0xfa, 0xaf, 0xf9, 0xb1, 0xfa, 0xaf, 0xf9, 0xb1, 0xfa, 0xaf, 0xf9, - 0xb1, 0xfa, 0xb0, 0xf9, 0xb1, 0xfa, 0xb0, 0xf9, 0xb1, 0xfa, 0xb0, 0xf9, - 0xb1, 0xfa, 0xb1, 0xf9, 0xb1, 0xfa, 0xb1, 0xf9, 0xb1, 0xfa, 0xb2, 0xf9, - 0xb2, 0xfa, 0xb2, 0xf9, 0xb5, 0xfa, 0xb2, 0xf9, 0xb5, 0xfa, 0xb3, 0xf9, - 0xb5, 0xfa, 0xb3, 0xf9, 0xb5, 0xfa, 0xb3, 0xf9, 0xb5, 0xfa, 0xb4, 0xf9, - 0xb5, 0xfa, 0xb4, 0xf9, 0xb5, 0xfa, 0xb4, 0xf9, 0xb5, 0xfa, 0xb5, 0xf9, - 0xb5, 0xfa, 0xb5, 0xf9, 0xb5, 0xfa, 0xb5, 0xf9, 0xb5, 0xfa, 0xb6, 0xf9, - 0xb6, 0xfa, 0xb6, 0xf9, 0xb6, 0xfa, 0xb6, 0xfa, 0xb8, 0xfa, 0xb7, 0xfa, - 0xb9, 0xfa, 0xb7, 0xfa, 0xb8, 0xfa, 0xb7, 0xfa, 0xb9, 0xfa, 0xb8, 0xfa, - 0xb8, 0xfa, 0xb8, 0xfa, 0xb9, 0xfa, 0xb8, 0xfa, 0xb8, 0xfa, 0xb9, 0xfa, - 0xb9, 0xfa, 0xb9, 0xfa, 0xb9, 0xfa, 0xb9, 0xfa, 0xb9, 0xfa, 0xba, 0xfa, - 0xba, 0xfa, 0xba, 0xfa, 0xbc, 0xfa, 0xba, 0xfa, 0xbc, 0xfa, 0xbb, 0xfa, - 0xbc, 0xfa, 0xbb, 0xfa, 0xbc, 0xfa, 0xbb, 0xfa, 0xbc, 0xfa, 0xbc, 0xfa, - 0xbc, 0xfa, 0xbc, 0xfa, 0xbc, 0xfa, 0xbc, 0xfa, 0xbc, 0xfa, 0xbd, 0xfa, - 0xbd, 0xfa, 0xbd, 0xfa, 0xbd, 0xfa, 0xbd, 0xfa, 0xbd, 0xfa, 0xbe, 0xfa, - 0xc0, 0xfa, 0xbe, 0xfa, 0xc0, 0xfa, 0xbe, 0xfa, 0xc0, 0xfa, 0xbf, 0xfa, - 0xc0, 0xfa, 0xbf, 0xfa, 0xc0, 0xfa, 0xbf, 0xfa, 0xc0, 0xfa, 0xc0, 0xfa, - 0xc0, 0xfa, 0xc0, 0xfa, 0xc0, 0xfa, 0xc0, 0xfa, 0xc0, 0xfa, 0xc1, 0xfa, - 0xc1, 0xfa, 0xc1, 0xfa, 0xc1, 0xfa, 0xc1, 0xfa, 0xc1, 0xfa, 0xc1, 0xfa, - 0xc1, 0xfa, 0xc2, 0xfb, 0xc3, 0xfa, 0xc2, 0xfb, 0xc3, 0xfa, 0xc2, 0xfb, - 0xc3, 0xfa, 0xc3, 0xfb, 0xc3, 0xfa, 0xc3, 0xfb, 0xc3, 0xfa, 0xc3, 0xfb, - 0xc3, 0xfa, 0xc4, 0xfb, 0xc4, 0xfa, 0xc4, 0xfb, 0xc4, 0xfa, 0xc4, 0xfb, - 0xc4, 0xfa, 0xc5, 0xfb, 0xc5, 0xfa, 0xc5, 0xfb, 0xc5, 0xfa, 0xc5, 0xfb, - 0xc6, 0xfa, 0xc6, 0xfb, 0xc7, 0xfa, 0xc6, 0xfb, 0xc6, 0xfa, 0xc6, 0xfb, - 0xc7, 0xfa, 0xc6, 0xfb, 0xc6, 0xfa, 0xc7, 0xfb, 0xc7, 0xfa, 0xc7, 0xfb, - 0xc7, 0xfa, 0xc7, 0xfb, 0xc7, 0xfa, 0xc8, 0xfb, 0xc8, 0xfa, 0xc8, 0xfb, - 0xc8, 0xfa, 0xc8, 0xfb, 0xc8, 0xfa, 0xc9, 0xfc, 0xca, 0xfa, 0xc9, 0xfc, - 0xca, 0xfa, 0xc9, 0xfc, 0xca, 0xfa, 0xc9, 0xfc, 0xca, 0xfa, 0xca, 0xfc, - 0xca, 0xfa, 0xca, 0xfc, 0xca, 0xfa, 0xca, 0xfc, 0xca, 0xfa, 0xcb, 0xfc, - 0xcb, 0xfa, 0xcb, 0xfc, 0xcb, 0xfa, 0xcb, 0xfc, 0xcb, 0xfa, 0xcc, 0xfc, - 0xcc, 0xfa, 0xcc, 0xfc, 0xcc, 0xfa, 0xcc, 0xfc, 0xcc, 0xfa, 0xcc, 0xfc, - 0xcd, 0xfa, 0xcd, 0xfc, 0xcd, 0xfa, 0xcd, 0xfc, 0xcd, 0xfa, 0xcd, 0xfc, - 0xcd, 0xfa, 0xce, 0xfc, 0xce, 0xfa, 0xce, 0xfc, 0xce, 0xfa, 0xce, 0xfc, - 0xce, 0xfa, 0xce, 0xfc, 0xce, 0xfa, 0xcf, 0xfc, 0xcf, 0xfa, 0xcf, 0xfc, - 0xcf, 0xfa, 0xcf, 0xfc, 0xcf, 0xfa, 0xd0, 0xfc, 0xd0, 0xfa, 0xd0, 0xfc, - 0xd0, 0xfa, 0xd0, 0xfd, 0xd0, 0xfa, 0xd0, 0xfd, 0xd0, 0xfa, 0xd1, 0xfd, - 0xd1, 0xfb, 0xd1, 0xfd, 0xd1, 0xfb, 0xd1, 0xfd, 0xd1, 0xfb, 0xd2, 0xfd, - 0xd2, 0xfb, 0xd2, 0xfd, 0xd2, 0xfb, 0xd2, 0xfd, 0xd2, 0xfb, 0xd2, 0xfd, - 0xd2, 0xfb, 0xd3, 0xfd, 0xd3, 0xfb, 0xd3, 0xfd, 0xd3, 0xf9, 0xd3, 0xfd, - 0xd3, 0xf9, 0xd4, 0xfd, 0xd4, 0xf9, 0xd4, 0xfd, 0xd4, 0xf9, 0xd4, 0xfd, - 0xd4, 0xf9, 0xd4, 0xfd, 0xd4, 0xf9, 0xd5, 0xfd, 0xd5, 0xf9, 0xd5, 0xfd, - 0xd5, 0xf9, 0xd5, 0xfd, 0xd5, 0xf9, 0xd6, 0xfd, 0xd6, 0xf9, 0xd6, 0xfd, - 0xd6, 0xf9, 0xd6, 0xfd, 0xd6, 0xfa, 0xd6, 0xfd, 0xd6, 0xfa, 0xd7, 0xfd, - 0xd7, 0xfa, 0xd7, 0xfd, 0xd7, 0xfa, 0xd7, 0xfd, 0xd7, 0xfa, 0xd7, 0xfd, - 0xd7, 0xfa, 0xd8, 0xfd, 0xd8, 0xfa, 0xd8, 0xfd, 0xd8, 0xfa, 0xd8, 0xfd, - 0xd8, 0xfa, 0xd9, 0xfd, 0xd9, 0xfa, 0xd9, 0xfd, 0xd9, 0xfa, 0xd9, 0xfd, - 0xd9, 0xfa, 0xd9, 0xfd, 0xd9, 0xfa, 0xda, 0xfe, 0xda, 0xfa, 0xda, 0xfe, - 0xda, 0xfa, 0xda, 0xfe, 0xda, 0xfa, 0xda, 0xfe, 0xda, 0xfa, 0xdb, 0xfe, - 0xdb, 0xfa, 0xdb, 0xfe, 0xdb, 0xfa, 0xdb, 0xfe, 0xdb, 0xfa, 0xdb, 0xfe, - 0xdb, 0xfa, 0xdc, 0xfe, 0xdc, 0xfa, 0xdc, 0xfe, 0xdb, 0xfa, 0xdc, 0xfe, - 0xdc, 0xfa, 0xdd, 0xfe, 0xdb, 0xfa, 0xdd, 0xfe, 0xdc, 0xfa, 0xdd, 0xfe, - 0xdd, 0xfa, 0xdd, 0xfe, 0xdd, 0xfa, 0xde, 0xfe, 0xde, 0xfa, 0xde, 0xfe, - 0xde, 0xfa, 0xde, 0xfe, 0xde, 0xfa, 0xde, 0xfe, 0xde, 0xfa, 0xdf, 0xfe, - 0xdf, 0xfa, 0xdf, 0xfe, 0xde, 0xfa, 0xdf, 0xfe, 0xdf, 0xfa, 0xdf, 0xfe, - 0xde, 0xfa, 0xe0, 0xfe, 0xdf, 0xfa, 0xe0, 0xfe, 0xe0, 0xfa, 0xe0, 0xfe, - 0xe0, 0xfa, 0xe1, 0xfe, 0xe1, 0xfa, 0xe1, 0xfd, 0xe2, 0xfa, 0xe1, 0xfd, - 0xe3, 0xfa, 0xe1, 0xfd, 0xe2, 0xfa, 0xe2, 0xfd, 0xe3, 0xfa, 0xe2, 0xfd, - 0xe2, 0xfa, 0xe2, 0xfd, 0xe3, 0xfa, 0xe2, 0xfd, 0xe2, 0xfa, 0xe2, 0xfd, - 0xe3, 0xfa, 0xe2, 0xfd, 0xe3, 0xfa, 0xe2, 0xfd, 0xe3, 0xfa, 0xe2, 0xfd, - 0xe3, 0xfa, 0xe5, 0xfd, 0xe4, 0xfa, 0xe4, 0xfd, 0xe4, 0xfb, 0xe5, 0xfd, - 0xe4, 0xfa, 0xe5, 0xfd, 0xe4, 0xfa, 0xe5, 0xfd, 0xe4, 0xfa, 0xe5, 0xfd, - 0xe4, 0xfa, 0xe5, 0xfd, 0xe4, 0xfa, 0xe5, 0xfd, 0xe4, 0xfa, 0xe6, 0xfd, - 0xe4, 0xfa, 0xe6, 0xfd, 0xe4, 0xfa, 0xe6, 0xfd, 0xe4, 0xfa, 0xe6, 0xfd, - 0xe4, 0xfa, 0xe7, 0xfb, 0xe5, 0xfa, 0xe7, 0xfd, 0xe4, 0xfa, 0xe7, 0xfb, - 0xe5, 0xfa, 0xe7, 0xfd, 0xe4, 0xfa, 0xe8, 0xfb, 0xe5, 0xfa, 0xe8, 0xfd, - 0xe4, 0xfa, 0xe8, 0xfb, 0xe5, 0xfa, 0xe8, 0xfd, 0xe4, 0xfa, 0xe9, 0xfb, - 0xe5, 0xfa, 0xe9, 0xfd, 0xe4, 0xfa, 0xe9, 0xfb, 0xe5, 0xfa, 0xe9, 0xfd, - 0xe4, 0xfa, 0xea, 0xfe, 0xee, 0xfa, 0xea, 0xfd, 0xee, 0xfa, 0xea, 0xfe, - 0xee, 0xfa, 0xea, 0xfd, 0xee, 0xfa, 0xeb, 0xfe, 0xee, 0xfa, 0xeb, 0xfd, - 0xee, 0xfa, 0xeb, 0xfe, 0xee, 0xfa, 0xeb, 0xfd, 0xee, 0xfa, 0xec, 0xfe, - 0xee, 0xfa, 0xec, 0xfd, 0xee, 0xfa, 0xec, 0xfe, 0xee, 0xfa, 0xec, 0xfd, - 0xee, 0xfa, 0xec, 0xfd, 0xee, 0xfa, 0xed, 0xfd, 0xee, 0xfa, 0xed, 0xfd, - 0xee, 0xfa, 0xed, 0xfd, 0xee, 0xfa, 0xed, 0xfd, 0xee, 0xfa, 0xee, 0xfd, - 0xee, 0xfa, 0xee, 0xfd, 0xee, 0xfa, 0xee, 0xfd, 0xee, 0xf9, 0xee, 0xfd, - 0xee, 0xfa, 0xef, 0xfc, 0xef, 0xfa, 0xef, 0xfd, 0xee, 0xfa, 0xef, 0xfc, - 0xef, 0xfa, 0xef, 0xfd, 0xee, 0xfa, 0xf0, 0xfc, 0xef, 0xfa, 0xf0, 0xfd, - 0xee, 0xfa, 0xf0, 0xfc, 0xef, 0xfa, 0xf0, 0xfd, 0xee, 0xfa, 0xf1, 0xfc, - 0xef, 0xfa, 0xf1, 0xfd, 0xee, 0xfa, 0xf1, 0xfc, 0xef, 0xfa, 0xf1, 0xfd, - 0xee, 0xfa, 0xf2, 0xfc, 0xef, 0xfa, 0xf2, 0xfd, 0xee, 0xfa, 0xf2, 0xfc, - 0xef, 0xfa, 0xf2, 0xfd, 0xee, 0xfa, 0xf2, 0xfc, 0xef, 0xfa, 0xf3, 0xfb, - 0xef, 0xfa, 0xf3, 0xfc, 0xef, 0xfa, 0xf3, 0xfb, 0xef, 0xfa, 0xf3, 0xfc, - 0xef, 0xfa, 0xf4, 0xfb, 0xef, 0xfa, 0xf4, 0xfc, 0xef, 0xfa, 0xf4, 0xfb, - 0xef, 0xfa, 0xf4, 0xfc, 0xef, 0xfa, 0xf5, 0xfb, 0xef, 0xfa, 0xf5, 0xfc, - 0xef, 0xfa, 0xf5, 0xfb, 0xef, 0xfa, 0xf5, 0xfc, 0xef, 0xfa, 0xf5, 0xfb, - 0xef, 0xfa, 0xf6, 0xfc, 0xef, 0xfa, 0xf6, 0xfb, 0xef, 0xfa, 0xf6, 0xfc, - 0xef, 0xfa, 0xf6, 0xfb, 0xef, 0xfa, 0xf7, 0xfc, 0xef, 0xfa, 0xf7, 0xfb, - 0xef, 0xfa, 0xf7, 0xfc, 0xef, 0xfa, 0xf7, 0xfb, 0xef, 0xfa, 0xf8, 0xfc, - 0xef, 0xfa, 0xf8, 0xfb, 0xef, 0xfa, 0xf8, 0xfc, 0xef, 0xfa, 0xf8, 0xfb, - 0xef, 0xfa, 0xf8, 0xfc, 0xef, 0xfa, 0xf9, 0xfb, 0xef, 0xfa, 0xf9, 0xfc, - 0xef, 0xfa, 0xf9, 0xfb, 0xef, 0xfa, 0xf9, 0xfc, 0xef, 0xfa, 0xfa, 0xfb, - 0xef, 0xfa, 0xfa, 0xfc, 0xef, 0xfa, 0xfa, 0xfb, 0xef, 0xfa, 0xfa, 0xfa, - 0xef, 0xfa, 0xfa, 0xfb, 0xef, 0xfa, 0xfb, 0xfa, 0xef, 0xfa, 0xfb, 0xfb, - 0xef, 0xfa, 0xfb, 0xfa, 0xef, 0xfa, 0xfb, 0xfb, 0xef, 0xfa, 0xfc, 0xfa, - 0xef, 0xfa, 0xfc, 0xfb, 0xef, 0xfa, 0xfc, 0xfa, 0xef, 0xfa, 0xfc, 0xfb, - 0xef, 0xfa, 0xfc, 0xfa, 0xef, 0xfa, 0xfd, 0xfb, 0xef, 0xfa, 0xfd, 0xfa, - 0xef, 0xfa, 0xfd, 0xfb, 0xef, 0xfa, 0xfd, 0xfa, 0xef, 0xfa, 0xfe, 0xfb, - 0xef, 0xfa, 0xfe, 0xfa, 0xef, 0xfa, 0xfe, 0xfb, 0xef, 0xfa, 0xfe, 0xfa, - 0xef, 0xfa, 0xfe, 0xfb, 0xef, 0xfa, 0xff, 0xfa, 0xef, 0xfa, 0xff, 0xfb, - 0xef, 0xfa, 0x03, 0xf4, 0x83, 0xfa, 0x0a, 0xf4, 0x83, 0xfa, 0x0f, 0xf4, - 0x83, 0xfa, 0x14, 0xf4, 0x83, 0xfa, 0x17, 0xf4, 0x83, 0xfa, 0x1b, 0xf4, - 0x83, 0xfa, 0x1e, 0xf4, 0x83, 0xfa, 0x20, 0xf4, 0x83, 0xfa, 0x23, 0xf4, - 0x83, 0xfa, 0x25, 0xf4, 0x83, 0xfa, 0x27, 0xf4, 0x83, 0xfa, 0x29, 0xf4, - 0x83, 0xfa, 0x2b, 0xf4, 0x83, 0xfa, 0x2d, 0xf4, 0x83, 0xfa, 0x2f, 0xf4, - 0x83, 0xfa, 0x31, 0xf4, 0x83, 0xfa, 0x32, 0xf4, 0x83, 0xfa, 0x34, 0xf4, - 0x83, 0xfa, 0x35, 0xf4, 0x83, 0xfa, 0x37, 0xf4, 0x83, 0xfa, 0x38, 0xf4, - 0x83, 0xfa, 0x3a, 0xf4, 0x83, 0xfa, 0x3b, 0xf4, 0x83, 0xfa, 0x3c, 0xf4, - 0x83, 0xfa, 0x3e, 0xf4, 0x83, 0xfa, 0x3f, 0xf4, 0x83, 0xfa, 0x40, 0xf4, - 0x83, 0xfa, 0x42, 0xf4, 0x83, 0xfa, 0x43, 0xf4, 0x83, 0xfa, 0x44, 0xf4, - 0x83, 0xfa, 0x45, 0xf4, 0x83, 0xfa, 0x46, 0xf4, 0x83, 0xfa, 0x47, 0xf4, - 0x83, 0xfa, 0x48, 0xf4, 0x83, 0xfa, 0x49, 0xf4, 0x83, 0xfa, 0x4a, 0xf4, - 0x83, 0xfa, 0x4b, 0xf4, 0x83, 0xfa, 0x4c, 0xf4, 0x83, 0xfa, 0x4d, 0xf4, - 0x83, 0xfa, 0x4e, 0xf4, 0x83, 0xfa, 0x4f, 0xf4, 0x83, 0xfa, 0x50, 0xf4, - 0x83, 0xfa, 0x51, 0xf4, 0x83, 0xfa, 0x52, 0xf4, 0x83, 0xfa, 0x53, 0xf4, - 0x83, 0xfa, 0x54, 0xf4, 0x83, 0xfa, 0x55, 0xf4, 0x83, 0xfa, 0x56, 0xf4, - 0x83, 0xfa, 0x57, 0xf4, 0x83, 0xfa, 0x58, 0xf4, 0x83, 0xfa, 0x58, 0xf4, - 0x83, 0xfa, 0x59, 0xf4, 0x83, 0xfa, 0x5a, 0xf4, 0x83, 0xfa, 0x5b, 0xf4, - 0x83, 0xfa, 0x5c, 0xf4, 0x83, 0xfa, 0x5d, 0xf4, 0x83, 0xfa, 0x5d, 0xf4, - 0x83, 0xfa, 0x5e, 0xf4, 0x83, 0xfa, 0x5f, 0xf4, 0x83, 0xfa, 0x60, 0xf4, - 0x83, 0xfa, 0x60, 0xf4, 0x83, 0xfa, 0x61, 0xf4, 0x83, 0xfa, 0x62, 0xf4, - 0x83, 0xfa, 0x63, 0xf4, 0x83, 0xfa, 0x63, 0xf4, 0x83, 0xfa, 0x64, 0xf4, - 0x83, 0xfa, 0x65, 0xf4, 0x83, 0xfa, 0x66, 0xf4, 0x83, 0xfa, 0x66, 0xf4, - 0x83, 0xfa, 0x67, 0xf4, 0x83, 0xfa, 0x68, 0xf4, 0x83, 0xfa, 0x68, 0xf4, - 0x83, 0xfa, 0x69, 0xf4, 0x83, 0xfa, 0x6a, 0xf4, 0x83, 0xfa, 0x6a, 0xf4, - 0x83, 0xfa, 0x6b, 0xf4, 0x83, 0xfa, 0x6c, 0xf4, 0x83, 0xfa, 0x6c, 0xf4, - 0x83, 0xfa, 0x6d, 0xf4, 0x83, 0xfa, 0x6e, 0xf4, 0x83, 0xfa, 0x6e, 0xf4, - 0x83, 0xfa, 0x6f, 0xf4, 0x83, 0xfa, 0x70, 0xf4, 0x83, 0xfa, 0x70, 0xf4, - 0x83, 0xfa, 0x71, 0xf4, 0x83, 0xfa, 0x72, 0xf4, 0x83, 0xfa, 0x72, 0xf4, - 0x83, 0xfa, 0x73, 0xf4, 0x83, 0xfa, 0x73, 0xf4, 0x83, 0xfa, 0x74, 0xf4, - 0x83, 0xfa, 0x75, 0xf4, 0x83, 0xfa, 0x75, 0xf4, 0x83, 0xfa, 0x76, 0xf4, - 0x83, 0xfa, 0x76, 0xf4, 0x83, 0xfa, 0x77, 0xf4, 0x83, 0xfa, 0x78, 0xf4, - 0x83, 0xfa, 0x78, 0xf4, 0x83, 0xfa, 0x79, 0xf4, 0x83, 0xfa, 0x79, 0xf4, - 0x83, 0xfa, 0x7a, 0xf4, 0x83, 0xfa, 0x7a, 0xf4, 0x83, 0xfa, 0x7b, 0xf4, - 0x83, 0xfa, 0x7c, 0xf4, 0x83, 0xfa, 0x7c, 0xf4, 0x83, 0xfa, 0x7d, 0xf4, - 0x83, 0xfa, 0x7d, 0xf4, 0x83, 0xfa, 0x7e, 0xf4, 0x83, 0xfa, 0x7e, 0xf4, - 0x83, 0xfa, 0x7f, 0xf4, 0x83, 0xfa, 0x7f, 0xf4, 0x83, 0xfa, 0x80, 0xf4, - 0x85, 0xfa, 0x81, 0xf4, 0x83, 0xfa, 0x81, 0xf4, 0x85, 0xfa, 0x82, 0xf4, - 0x86, 0xfa, 0x82, 0xf4, 0x85, 0xfa, 0x83, 0xf4, 0x86, 0xfa, 0x83, 0xf4, - 0x85, 0xfa, 0x84, 0xf4, 0x86, 0xfa, 0x84, 0xf4, 0x85, 0xfa, 0x85, 0xf5, - 0x8b, 0xfa, 0x85, 0xf5, 0x8b, 0xfa, 0x86, 0xf5, 0x8b, 0xfa, 0x86, 0xf5, - 0x8b, 0xfa, 0x87, 0xf5, 0x8b, 0xfa, 0x87, 0xf5, 0x8b, 0xfa, 0x88, 0xf5, - 0x8b, 0xfa, 0x88, 0xf5, 0x8b, 0xfa, 0x89, 0xf5, 0x8b, 0xfa, 0x89, 0xf5, - 0x8b, 0xfa, 0x8a, 0xf5, 0x8b, 0xfa, 0x8a, 0xf5, 0x90, 0xfa, 0x8b, 0xf5, - 0x8b, 0xfa, 0x8b, 0xf5, 0x90, 0xfa, 0x8c, 0xf5, 0x90, 0xfa, 0x8c, 0xf5, - 0x90, 0xfa, 0x8d, 0xf5, 0x90, 0xfa, 0x8d, 0xf5, 0x90, 0xfa, 0x8e, 0xf5, - 0x90, 0xfa, 0x8e, 0xf5, 0x90, 0xfa, 0x8e, 0xf5, 0x90, 0xfa, 0x8f, 0xf5, - 0x90, 0xfa, 0x8f, 0xf5, 0x90, 0xfa, 0x90, 0xf5, 0x90, 0xfa, 0x90, 0xf6, - 0x95, 0xfa, 0x91, 0xf6, 0x95, 0xfa, 0x91, 0xf6, 0x95, 0xfa, 0x92, 0xf6, - 0x95, 0xfa, 0x92, 0xf6, 0x95, 0xfa, 0x93, 0xf6, 0x95, 0xfa, 0x93, 0xf6, - 0x95, 0xfa, 0x94, 0xf6, 0x95, 0xfa, 0x94, 0xf6, 0x95, 0xfa, 0x94, 0xf6, - 0x95, 0xfa, 0x95, 0xf6, 0x95, 0xfa, 0x95, 0xf6, 0x9a, 0xfa, 0x96, 0xf6, - 0x9a, 0xfa, 0x96, 0xf6, 0x9a, 0xfa, 0x97, 0xf6, 0x9a, 0xfa, 0x97, 0xf6, - 0x9a, 0xfa, 0x98, 0xf6, 0x9a, 0xfa, 0x98, 0xf6, 0x9a, 0xfa, 0x98, 0xf6, - 0x9a, 0xfa, 0x99, 0xf6, 0x9a, 0xfa, 0x99, 0xf6, 0x9a, 0xfa, 0x9a, 0xf6, - 0x9a, 0xfa, 0x9a, 0xf7, 0x9e, 0xfa, 0x9a, 0xf7, 0x9f, 0xfa, 0x9b, 0xf7, - 0x9e, 0xfa, 0x9b, 0xf7, 0x9f, 0xfa, 0x9c, 0xf7, 0x9e, 0xfa, 0x9c, 0xf7, - 0x9f, 0xfa, 0x9d, 0xf7, 0x9e, 0xfa, 0x9d, 0xf7, 0x9f, 0xfa, 0x9d, 0xf7, - 0x9e, 0xfa, 0x9e, 0xf7, 0x9f, 0xfa, 0x9e, 0xf7, 0x9e, 0xfa, 0x9f, 0xf7, - 0xa3, 0xfa, 0x9f, 0xf7, 0xa3, 0xfa, 0x9f, 0xf7, 0xa3, 0xfa, 0xa0, 0xf7, - 0xa3, 0xfa, 0xa0, 0xf7, 0xa3, 0xfa, 0xa1, 0xf7, 0xa3, 0xfa, 0xa1, 0xf7, - 0xa3, 0xfa, 0xa1, 0xf7, 0xa3, 0xfa, 0xa2, 0xf7, 0xa3, 0xfa, 0xa2, 0xf7, - 0xa3, 0xfa, 0xa3, 0xf7, 0xa3, 0xfa, 0xa3, 0xf7, 0xa3, 0xfa, 0xa3, 0xf7, - 0xa3, 0xfa, 0xa4, 0xf8, 0xa7, 0xfa, 0xa4, 0xf8, 0xa7, 0xfa, 0xa5, 0xf8, - 0xa7, 0xfa, 0xa5, 0xf8, 0xa7, 0xfa, 0xa5, 0xf8, 0xa7, 0xfa, 0xa6, 0xf8, - 0xa7, 0xfa, 0xa6, 0xf8, 0xa7, 0xfa, 0xa6, 0xf8, 0xa9, 0xfa, 0xa7, 0xf8, - 0xa9, 0xfa, 0xa7, 0xf8, 0xa9, 0xfa, 0xa8, 0xf8, 0xa9, 0xfa, 0xa8, 0xf8, - 0xa9, 0xfa, 0xa8, 0xf8, 0xa9, 0xfa, 0xa9, 0xf8, 0xab, 0xfa, 0xa9, 0xf8, - 0xab, 0xfa, 0xaa, 0xf8, 0xab, 0xfa, 0xaa, 0xf8, 0xab, 0xfa, 0xaa, 0xf8, - 0xab, 0xfa, 0xab, 0xf8, 0xab, 0xfa, 0xab, 0xf8, 0xab, 0xfa, 0xab, 0xf8, - 0xab, 0xfa, 0xac, 0xf8, 0xac, 0xfa, 0xac, 0xf8, 0xaf, 0xfa, 0xac, 0xf8, - 0xaf, 0xfa, 0xad, 0xf8, 0xaf, 0xfa, 0xad, 0xf8, 0xaf, 0xfa, 0xae, 0xf8, - 0xaf, 0xfa, 0xae, 0xf8, 0xaf, 0xfa, 0xae, 0xf8, 0xaf, 0xfa, 0xaf, 0xf8, - 0xaf, 0xfa, 0xaf, 0xf8, 0xaf, 0xfa, 0xaf, 0xf8, 0xaf, 0xfa, 0xb0, 0xf8, - 0xb0, 0xfa, 0xb0, 0xf9, 0xb3, 0xfa, 0xb0, 0xf9, 0xb3, 0xfa, 0xb1, 0xf9, - 0xb3, 0xfa, 0xb1, 0xf9, 0xb3, 0xfa, 0xb2, 0xf9, 0xb3, 0xfa, 0xb2, 0xf9, - 0xb3, 0xfa, 0xb2, 0xf9, 0xb3, 0xfa, 0xb3, 0xf9, 0xb3, 0xfa, 0xb3, 0xf9, - 0xb3, 0xfa, 0xb3, 0xf9, 0xb3, 0xfa, 0xb4, 0xf9, 0xb4, 0xfa, 0xb4, 0xf9, - 0xb7, 0xfa, 0xb4, 0xf9, 0xb7, 0xfa, 0xb5, 0xf9, 0xb7, 0xfa, 0xb5, 0xf9, - 0xb7, 0xfa, 0xb5, 0xf9, 0xb7, 0xfa, 0xb6, 0xf9, 0xb7, 0xfa, 0xb6, 0xf9, - 0xb7, 0xfa, 0xb6, 0xf9, 0xb7, 0xfa, 0xb7, 0xf9, 0xb7, 0xfa, 0xb7, 0xf9, - 0xb7, 0xfa, 0xb7, 0xf9, 0xb7, 0xfa, 0xb8, 0xf9, 0xb8, 0xfa, 0xb8, 0xf9, - 0xb8, 0xfa, 0xb8, 0xfa, 0xba, 0xfa, 0xb9, 0xfa, 0xbb, 0xfa, 0xb9, 0xfa, - 0xba, 0xfa, 0xb9, 0xfa, 0xbb, 0xfa, 0xba, 0xfa, 0xba, 0xfa, 0xba, 0xfa, - 0xbb, 0xfa, 0xba, 0xfa, 0xba, 0xfa, 0xbb, 0xfa, 0xbb, 0xfa, 0xbb, 0xfa, - 0xbb, 0xfa, 0xbb, 0xfa, 0xbb, 0xfa, 0xbc, 0xfa, 0xbc, 0xfa, 0xbc, 0xfa, - 0xbe, 0xfa, 0xbc, 0xfa, 0xbe, 0xfa, 0xbd, 0xfa, 0xbe, 0xfa, 0xbd, 0xfa, - 0xbe, 0xfa, 0xbd, 0xfa, 0xbe, 0xfa, 0xbe, 0xfa, 0xbe, 0xfa, 0xbe, 0xfa, - 0xbe, 0xfa, 0xbe, 0xfa, 0xbe, 0xfa, 0xbf, 0xfa, 0xbf, 0xfa, 0xbf, 0xfa, - 0xbf, 0xfa, 0xbf, 0xfa, 0xbf, 0xfa, 0xc0, 0xfb, 0xc1, 0xfa, 0xc0, 0xfb, - 0xc2, 0xfa, 0xc0, 0xfb, 0xc1, 0xfa, 0xc1, 0xfb, 0xc2, 0xfa, 0xc1, 0xfb, - 0xc1, 0xfa, 0xc1, 0xfb, 0xc2, 0xfa, 0xc1, 0xfb, 0xc1, 0xfa, 0xc2, 0xfb, - 0xc2, 0xfa, 0xc2, 0xfb, 0xc2, 0xfa, 0xc2, 0xfb, 0xc2, 0xfa, 0xc3, 0xfb, - 0xc3, 0xfa, 0xc3, 0xfb, 0xc3, 0xfa, 0xc3, 0xfb, 0xc3, 0xfa, 0xc4, 0xfb, - 0xc5, 0xfa, 0xc4, 0xfb, 0xc5, 0xfa, 0xc4, 0xfb, 0xc5, 0xfa, 0xc5, 0xfb, - 0xc5, 0xfa, 0xc5, 0xfb, 0xc5, 0xfa, 0xc5, 0xfb, 0xc5, 0xfa, 0xc6, 0xfb, - 0xc6, 0xfa, 0xc6, 0xfb, 0xc6, 0xfa, 0xc6, 0xfb, 0xc7, 0xfa, 0xc6, 0xfb, - 0xc6, 0xfa, 0xc7, 0xfb, 0xc7, 0xfa, 0xc7, 0xfb, 0xc7, 0xfa, 0xc7, 0xfb, - 0xc7, 0xfa, 0xc8, 0xfc, 0xc8, 0xfa, 0xc8, 0xfc, 0xc9, 0xfa, 0xc8, 0xfc, - 0xc8, 0xfa, 0xc9, 0xfc, 0xc9, 0xfa, 0xc9, 0xfc, 0xc9, 0xfa, 0xc9, 0xfc, - 0xc9, 0xfa, 0xc9, 0xfc, 0xc9, 0xfa, 0xca, 0xfc, 0xca, 0xfa, 0xca, 0xfc, - 0xca, 0xfa, 0xca, 0xfc, 0xcc, 0xfa, 0xcb, 0xfc, 0xcc, 0xfa, 0xcb, 0xfc, - 0xcc, 0xfa, 0xcb, 0xfc, 0xcc, 0xfa, 0xcc, 0xfc, 0xcc, 0xfa, 0xcc, 0xfc, - 0xcc, 0xfa, 0xcc, 0xfc, 0xcc, 0xfa, 0xcc, 0xfc, 0xcc, 0xfa, 0xcd, 0xfc, - 0xcd, 0xfa, 0xcd, 0xfc, 0xcd, 0xfa, 0xcd, 0xfc, 0xcd, 0xfa, 0xce, 0xfc, - 0xce, 0xfa, 0xce, 0xfc, 0xce, 0xfa, 0xce, 0xfc, 0xcf, 0xfa, 0xce, 0xfc, - 0xcf, 0xfa, 0xcf, 0xfc, 0xcf, 0xfa, 0xcf, 0xfc, 0xcf, 0xfa, 0xcf, 0xfc, - 0xcf, 0xfa, 0xd0, 0xfc, 0xd0, 0xfa, 0xd0, 0xfc, 0xd0, 0xfa, 0xd0, 0xfc, - 0xd0, 0xfa, 0xd0, 0xfc, 0xd0, 0xfa, 0xd1, 0xfc, 0xd1, 0xfa, 0xd1, 0xfc, - 0xd1, 0xfa, 0xd1, 0xfc, 0xd1, 0xfa, 0xd2, 0xfc, 0xd2, 0xfa, 0xd1, 0xfd, - 0xd2, 0xfa, 0xd2, 0xfd, 0xd2, 0xfa, 0xd2, 0xfd, 0xd2, 0xfb, 0xd3, 0xfd, - 0xd3, 0xfb, 0xd3, 0xfd, 0xd3, 0xfb, 0xd3, 0xfd, 0xd3, 0xfb, 0xd4, 0xfd, - 0xd4, 0xfb, 0xd4, 0xfd, 0xd4, 0xfb, 0xd4, 0xfd, 0xd4, 0xfb, 0xd4, 0xfd, - 0xd4, 0xf9, 0xd5, 0xfd, 0xd5, 0xf9, 0xd5, 0xfd, 0xd5, 0xf9, 0xd5, 0xfd, - 0xd5, 0xf9, 0xd6, 0xfd, 0xd6, 0xf9, 0xd6, 0xfd, 0xd6, 0xf9, 0xd6, 0xfd, - 0xd6, 0xf9, 0xd6, 0xfd, 0xd6, 0xf9, 0xd7, 0xfd, 0xd7, 0xf9, 0xd7, 0xfd, - 0xd7, 0xf9, 0xd7, 0xfd, 0xd7, 0xf9, 0xd7, 0xfd, 0xd7, 0xfa, 0xd8, 0xfd, - 0xd8, 0xfa, 0xd8, 0xfd, 0xd8, 0xfa, 0xd8, 0xfd, 0xd8, 0xfa, 0xd9, 0xfd, - 0xd9, 0xfa, 0xd9, 0xfd, 0xd9, 0xfa, 0xd9, 0xfd, 0xd9, 0xfa, 0xd9, 0xfd, - 0xd9, 0xfa, 0xda, 0xfd, 0xda, 0xfa, 0xda, 0xfd, 0xda, 0xfa, 0xda, 0xfd, - 0xda, 0xfa, 0xda, 0xfd, 0xda, 0xfa, 0xdb, 0xfd, 0xda, 0xfa, 0xdb, 0xfe, - 0xdb, 0xfa, 0xdb, 0xfe, 0xdb, 0xfa, 0xdb, 0xfe, 0xdb, 0xfa, 0xdc, 0xfe, - 0xdc, 0xfa, 0xdc, 0xfe, 0xdc, 0xfa, 0xdc, 0xfe, 0xdc, 0xfa, 0xdd, 0xfe, - 0xdd, 0xfa, 0xdd, 0xfe, 0xdd, 0xfa, 0xdd, 0xfe, 0xdd, 0xfa, 0xdd, 0xfe, - 0xdd, 0xfa, 0xde, 0xfe, 0xdd, 0xfa, 0xde, 0xfe, 0xdd, 0xfa, 0xde, 0xfe, - 0xdd, 0xfa, 0xde, 0xfe, 0xde, 0xfa, 0xdf, 0xfe, 0xdf, 0xfa, 0xdf, 0xfe, - 0xdf, 0xfa, 0xdf, 0xfe, 0xdf, 0xfa, 0xdf, 0xfe, 0xdf, 0xfa, 0xe0, 0xfe, - 0xe0, 0xfa, 0xe0, 0xfe, 0xe0, 0xfa, 0xe0, 0xfe, 0xe0, 0xfa, 0xe1, 0xfe, - 0xe0, 0xfa, 0xe1, 0xfd, 0xe2, 0xfa, 0xe1, 0xfd, 0xe3, 0xfa, 0xe1, 0xfd, - 0xe2, 0xfa, 0xe2, 0xfd, 0xe3, 0xfa, 0xe2, 0xfd, 0xe2, 0xfa, 0xe2, 0xfd, - 0xe3, 0xfa, 0xe2, 0xfd, 0xe2, 0xf9, 0xe2, 0xfd, 0xe3, 0xfa, 0xe2, 0xfd, - 0xe3, 0xf9, 0xe2, 0xfd, 0xe3, 0xfa, 0xe4, 0xfd, 0xe3, 0xfa, 0xe5, 0xfd, - 0xe4, 0xfa, 0xe4, 0xfd, 0xe4, 0xfa, 0xe5, 0xfd, 0xe4, 0xfa, 0xe4, 0xfc, - 0xe4, 0xfa, 0xe5, 0xfd, 0xe4, 0xfa, 0xe5, 0xfc, 0xe4, 0xfa, 0xe5, 0xfd, - 0xe4, 0xfa, 0xe5, 0xfc, 0xe4, 0xfa, 0xe6, 0xfd, 0xe4, 0xfa, 0xe6, 0xfc, - 0xe4, 0xfa, 0xe6, 0xfd, 0xe4, 0xfa, 0xe6, 0xfc, 0xe4, 0xfa, 0xe7, 0xfc, - 0xe5, 0xfa, 0xe7, 0xfc, 0xe4, 0xfa, 0xe7, 0xfc, 0xe5, 0xfa, 0xe7, 0xfc, - 0xe4, 0xfa, 0xe8, 0xfc, 0xe5, 0xfa, 0xe8, 0xfc, 0xe4, 0xfa, 0xe8, 0xfc, - 0xe5, 0xfa, 0xe8, 0xfc, 0xe4, 0xfa, 0xe9, 0xfc, 0xe5, 0xfa, 0xe9, 0xfc, - 0xe4, 0xfa, 0xe9, 0xfc, 0xe5, 0xfa, 0xe9, 0xfd, 0xee, 0xfa, 0xea, 0xfe, - 0xee, 0xfa, 0xea, 0xfd, 0xee, 0xfa, 0xea, 0xfe, 0xee, 0xfa, 0xea, 0xfd, - 0xee, 0xfa, 0xeb, 0xfe, 0xee, 0xfa, 0xeb, 0xfd, 0xee, 0xfa, 0xeb, 0xfe, - 0xee, 0xfa, 0xeb, 0xfd, 0xee, 0xfa, 0xec, 0xfe, 0xee, 0xfa, 0xec, 0xfd, - 0xee, 0xfa, 0xec, 0xfe, 0xee, 0xfa, 0xec, 0xfd, 0xee, 0xfa, 0xec, 0xfe, - 0xee, 0xfa, 0xed, 0xfd, 0xee, 0xfa, 0xed, 0xfe, 0xee, 0xfa, 0xed, 0xfd, - 0xee, 0xfa, 0xed, 0xfd, 0xee, 0xfa, 0xee, 0xfd, 0xee, 0xfa, 0xee, 0xfd, - 0xee, 0xfa, 0xee, 0xfd, 0xee, 0xfa, 0xee, 0xfd, 0xee, 0xfa, 0xef, 0xfd, - 0xee, 0xfa, 0xef, 0xfd, 0xee, 0xfa, 0xef, 0xfd, 0xee, 0xfa, 0xef, 0xfd, - 0xee, 0xfa, 0xf0, 0xfc, 0xef, 0xfa, 0xf0, 0xfd, 0xee, 0xfa, 0xf0, 0xfc, - 0xef, 0xfa, 0xf0, 0xfd, 0xee, 0xfa, 0xf1, 0xfc, 0xef, 0xfa, 0xf1, 0xfd, - 0xee, 0xfa, 0xf1, 0xfc, 0xef, 0xfa, 0xf1, 0xfd, 0xee, 0xfa, 0xf2, 0xfc, - 0xef, 0xfa, 0xf2, 0xfd, 0xee, 0xfa, 0xf2, 0xfc, 0xef, 0xfa, 0xf2, 0xfd, - 0xee, 0xfa, 0xf2, 0xfc, 0xef, 0xfa, 0xf3, 0xfd, 0xee, 0xfa, 0xf3, 0xfc, - 0xef, 0xfa, 0xf3, 0xfd, 0xee, 0xfa, 0xf3, 0xfc, 0xef, 0xfa, 0xf4, 0xfd, - 0xee, 0xfa, 0xf4, 0xfc, 0xef, 0xfa, 0xf4, 0xfd, 0xee, 0xfa, 0xf4, 0xfc, - 0xef, 0xfa, 0xf5, 0xfb, 0xef, 0xfa, 0xf5, 0xfc, 0xef, 0xfa, 0xf5, 0xfb, - 0xef, 0xfa, 0xf5, 0xfc, 0xef, 0xfa, 0xf5, 0xfb, 0xef, 0xfa, 0xf6, 0xfc, - 0xef, 0xfa, 0xf6, 0xfb, 0xef, 0xfa, 0xf6, 0xfc, 0xef, 0xfa, 0xf6, 0xfb, - 0xef, 0xfa, 0xf7, 0xfc, 0xef, 0xfa, 0xf7, 0xfb, 0xef, 0xfa, 0xf7, 0xfc, - 0xef, 0xfa, 0xf7, 0xfb, 0xef, 0xfa, 0xf8, 0xfc, 0xef, 0xfa, 0xf8, 0xfb, - 0xef, 0xfa, 0xf8, 0xfc, 0xef, 0xfa, 0xf8, 0xfb, 0xef, 0xfa, 0xf8, 0xfc, - 0xef, 0xfa, 0xf9, 0xfb, 0xef, 0xfa, 0xf9, 0xfc, 0xef, 0xfa, 0xf9, 0xfb, - 0xef, 0xfa, 0xf9, 0xfc, 0xef, 0xfa, 0xfa, 0xfb, 0xef, 0xfa, 0xfa, 0xfc, - 0xef, 0xfa, 0xfa, 0xfb, 0xef, 0xfa, 0xfa, 0xfc, 0xef, 0xfa, 0xfa, 0xfb, - 0xef, 0xfa, 0xfb, 0xfc, 0xef, 0xfa, 0xfb, 0xfb, 0xef, 0xfa, 0xfb, 0xfc, - 0xef, 0xfa, 0xfb, 0xfb, 0xef, 0xfa, 0xfc, 0xfc, 0xef, 0xfa, 0xfc, 0xfb, - 0xef, 0xfa, 0xfc, 0xfc, 0xef, 0xfa, 0xfc, 0xfb, 0xef, 0xfa, 0xfc, 0xfc, - 0xef, 0xfa, 0xfd, 0xfb, 0xef, 0xfa, 0xfd, 0xf9, 0xef, 0xfa, 0xfd, 0xfb, - 0xef, 0xfa, 0xfd, 0xf9, 0xef, 0xfa, 0xfe, 0xfb, 0xef, 0xfa, 0xfe, 0xf9, - 0xef, 0xfa, 0xfe, 0xfb, 0xef, 0xfa, 0xfe, 0xf9, 0xef, 0xfa, 0xfe, 0xfb, - 0xef, 0xfa, 0xff, 0xf9, 0xef, 0xfa, 0xff, 0xfb, 0xef, 0xfa, 0x03, 0xf4, - 0x83, 0xfb, 0x0a, 0xf4, 0x83, 0xfb, 0x0f, 0xf4, 0x83, 0xfb, 0x14, 0xf4, - 0x83, 0xfb, 0x17, 0xf4, 0x83, 0xfb, 0x1b, 0xf4, 0x83, 0xfb, 0x1e, 0xf4, - 0x83, 0xfb, 0x20, 0xf4, 0x83, 0xfb, 0x23, 0xf4, 0x83, 0xfb, 0x25, 0xf4, - 0x83, 0xfb, 0x27, 0xf4, 0x83, 0xfb, 0x29, 0xf4, 0x83, 0xfb, 0x2b, 0xf4, - 0x83, 0xfb, 0x2d, 0xf4, 0x83, 0xfb, 0x2f, 0xf4, 0x83, 0xfb, 0x31, 0xf4, - 0x83, 0xfb, 0x32, 0xf4, 0x83, 0xfb, 0x34, 0xf4, 0x83, 0xfb, 0x35, 0xf4, - 0x83, 0xfb, 0x37, 0xf4, 0x83, 0xfb, 0x38, 0xf4, 0x83, 0xfb, 0x3a, 0xf4, - 0x83, 0xfb, 0x3b, 0xf4, 0x83, 0xfb, 0x3c, 0xf4, 0x83, 0xfb, 0x3e, 0xf4, - 0x83, 0xfb, 0x3f, 0xf4, 0x83, 0xfb, 0x40, 0xf4, 0x83, 0xfb, 0x42, 0xf4, - 0x83, 0xfb, 0x43, 0xf4, 0x83, 0xfb, 0x44, 0xf4, 0x83, 0xfb, 0x45, 0xf4, - 0x83, 0xfb, 0x46, 0xf4, 0x83, 0xfb, 0x47, 0xf4, 0x83, 0xfb, 0x48, 0xf4, - 0x83, 0xfb, 0x49, 0xf4, 0x83, 0xfb, 0x4a, 0xf4, 0x83, 0xfb, 0x4b, 0xf4, - 0x83, 0xfb, 0x4c, 0xf4, 0x83, 0xfb, 0x4d, 0xf4, 0x83, 0xfb, 0x4e, 0xf4, - 0x83, 0xfb, 0x4f, 0xf4, 0x83, 0xfb, 0x50, 0xf4, 0x83, 0xfb, 0x51, 0xf4, - 0x83, 0xfb, 0x52, 0xf4, 0x83, 0xfb, 0x53, 0xf4, 0x83, 0xfb, 0x54, 0xf4, - 0x83, 0xfb, 0x55, 0xf4, 0x83, 0xfb, 0x56, 0xf4, 0x83, 0xfb, 0x57, 0xf4, - 0x83, 0xfb, 0x58, 0xf4, 0x83, 0xfb, 0x58, 0xf4, 0x83, 0xfb, 0x59, 0xf4, - 0x83, 0xfb, 0x5a, 0xf4, 0x83, 0xfb, 0x5b, 0xf4, 0x83, 0xfb, 0x5c, 0xf4, - 0x83, 0xfb, 0x5d, 0xf4, 0x83, 0xfb, 0x5d, 0xf4, 0x83, 0xfb, 0x5e, 0xf4, - 0x83, 0xfb, 0x5f, 0xf4, 0x83, 0xfb, 0x60, 0xf4, 0x83, 0xfb, 0x60, 0xf4, - 0x83, 0xfb, 0x61, 0xf4, 0x83, 0xfb, 0x62, 0xf4, 0x83, 0xfb, 0x63, 0xf4, - 0x83, 0xfb, 0x63, 0xf4, 0x83, 0xfb, 0x64, 0xf4, 0x83, 0xfb, 0x65, 0xf4, - 0x83, 0xfb, 0x66, 0xf4, 0x83, 0xfb, 0x66, 0xf4, 0x83, 0xfb, 0x67, 0xf4, - 0x83, 0xfb, 0x68, 0xf4, 0x83, 0xfb, 0x68, 0xf4, 0x83, 0xfb, 0x69, 0xf4, - 0x83, 0xfb, 0x6a, 0xf4, 0x83, 0xfb, 0x6a, 0xf4, 0x83, 0xfb, 0x6b, 0xf4, - 0x83, 0xfb, 0x6c, 0xf4, 0x83, 0xfb, 0x6c, 0xf4, 0x83, 0xfb, 0x6d, 0xf4, - 0x83, 0xfb, 0x6e, 0xf4, 0x83, 0xfb, 0x6e, 0xf4, 0x83, 0xfb, 0x6f, 0xf4, - 0x83, 0xfb, 0x70, 0xf4, 0x83, 0xfb, 0x70, 0xf4, 0x83, 0xfb, 0x71, 0xf4, - 0x83, 0xfb, 0x72, 0xf4, 0x83, 0xfb, 0x72, 0xf4, 0x83, 0xfb, 0x73, 0xf4, - 0x83, 0xfb, 0x73, 0xf4, 0x83, 0xfb, 0x74, 0xf4, 0x83, 0xfb, 0x75, 0xf4, - 0x83, 0xfb, 0x75, 0xf4, 0x83, 0xfb, 0x76, 0xf4, 0x83, 0xfb, 0x76, 0xf4, - 0x83, 0xfb, 0x77, 0xf4, 0x83, 0xfb, 0x78, 0xf4, 0x83, 0xfb, 0x78, 0xf4, - 0x83, 0xfb, 0x79, 0xf4, 0x83, 0xfb, 0x79, 0xf4, 0x83, 0xfb, 0x7a, 0xf4, - 0x83, 0xfb, 0x7a, 0xf4, 0x83, 0xfb, 0x7b, 0xf4, 0x83, 0xfb, 0x7c, 0xf4, - 0x83, 0xfb, 0x7c, 0xf4, 0x83, 0xfb, 0x7d, 0xf4, 0x83, 0xfb, 0x7d, 0xf4, - 0x83, 0xfb, 0x7e, 0xf4, 0x83, 0xfb, 0x7e, 0xf4, 0x83, 0xfb, 0x7f, 0xf4, - 0x83, 0xfb, 0x7f, 0xf4, 0x83, 0xfb, 0x80, 0xf4, 0x83, 0xfb, 0x81, 0xf4, - 0x83, 0xfb, 0x81, 0xf4, 0x83, 0xfb, 0x82, 0xf5, 0x88, 0xfb, 0x82, 0xf5, - 0x88, 0xfb, 0x83, 0xf5, 0x88, 0xfb, 0x83, 0xf5, 0x88, 0xfb, 0x84, 0xf5, - 0x88, 0xfb, 0x84, 0xf5, 0x88, 0xfb, 0x85, 0xf5, 0x88, 0xfb, 0x85, 0xf5, - 0x88, 0xfb, 0x86, 0xf5, 0x88, 0xfb, 0x86, 0xf5, 0x88, 0xfb, 0x87, 0xf5, - 0x88, 0xfb, 0x87, 0xf5, 0x8d, 0xfb, 0x88, 0xf5, 0x8e, 0xfb, 0x88, 0xf5, - 0x8d, 0xfb, 0x89, 0xf5, 0x8e, 0xfb, 0x89, 0xf5, 0x8d, 0xfb, 0x8a, 0xf5, - 0x8e, 0xfb, 0x8a, 0xf5, 0x8d, 0xfb, 0x8b, 0xf5, 0x8e, 0xfb, 0x8b, 0xf5, - 0x8d, 0xfb, 0x8c, 0xf5, 0x8e, 0xfb, 0x8c, 0xf5, 0x8d, 0xfb, 0x8d, 0xf5, - 0x92, 0xfb, 0x8d, 0xf5, 0x8d, 0xfb, 0x8e, 0xf5, 0x92, 0xfb, 0x8e, 0xf5, - 0x93, 0xfb, 0x8e, 0xf5, 0x92, 0xfb, 0x8f, 0xf5, 0x93, 0xfb, 0x8f, 0xf5, - 0x92, 0xfb, 0x90, 0xf5, 0x93, 0xfb, 0x90, 0xf5, 0x92, 0xfb, 0x91, 0xf5, - 0x93, 0xfb, 0x91, 0xf5, 0x92, 0xfb, 0x92, 0xf5, 0x93, 0xfb, 0x92, 0xf5, - 0x92, 0xfb, 0x93, 0xf6, 0x97, 0xfb, 0x93, 0xf6, 0x98, 0xfb, 0x94, 0xf6, - 0x97, 0xfb, 0x94, 0xf6, 0x98, 0xfb, 0x94, 0xf6, 0x97, 0xfb, 0x95, 0xf6, - 0x98, 0xfb, 0x95, 0xf6, 0x97, 0xfb, 0x96, 0xf6, 0x98, 0xfb, 0x96, 0xf6, - 0x97, 0xfb, 0x97, 0xf6, 0x98, 0xfb, 0x97, 0xf6, 0x97, 0xfb, 0x98, 0xf6, - 0x9c, 0xfb, 0x98, 0xf6, 0x9c, 0xfb, 0x98, 0xf6, 0x9c, 0xfb, 0x99, 0xf6, - 0x9c, 0xfb, 0x99, 0xf6, 0x9c, 0xfb, 0x9a, 0xf6, 0x9c, 0xfb, 0x9a, 0xf6, - 0x9c, 0xfb, 0x9a, 0xf6, 0x9c, 0xfb, 0x9b, 0xf6, 0x9c, 0xfb, 0x9b, 0xf6, - 0x9c, 0xfb, 0x9c, 0xf6, 0x9c, 0xfb, 0x9c, 0xf7, 0xa0, 0xfb, 0x9d, 0xf7, - 0xa1, 0xfb, 0x9d, 0xf7, 0xa0, 0xfb, 0x9d, 0xf7, 0xa1, 0xfb, 0x9e, 0xf7, - 0xa0, 0xfb, 0x9e, 0xf7, 0xa1, 0xfb, 0x9f, 0xf7, 0xa0, 0xfb, 0x9f, 0xf7, - 0xa1, 0xfb, 0x9f, 0xf7, 0xa0, 0xfb, 0xa0, 0xf7, 0xa1, 0xfb, 0xa0, 0xf7, - 0xa0, 0xfb, 0xa1, 0xf7, 0xa5, 0xfb, 0xa1, 0xf7, 0xa5, 0xfb, 0xa1, 0xf7, - 0xa5, 0xfb, 0xa2, 0xf7, 0xa5, 0xfb, 0xa2, 0xf7, 0xa5, 0xfb, 0xa3, 0xf7, - 0xa5, 0xfb, 0xa3, 0xf7, 0xa5, 0xfb, 0xa3, 0xf7, 0xa5, 0xfb, 0xa4, 0xf7, - 0xa5, 0xfb, 0xa4, 0xf7, 0xa5, 0xfb, 0xa5, 0xf7, 0xa5, 0xfb, 0xa5, 0xf7, - 0xa5, 0xfb, 0xa5, 0xf7, 0xa5, 0xfb, 0xa6, 0xf8, 0xa9, 0xfb, 0xa6, 0xf8, - 0xa9, 0xfb, 0xa6, 0xf8, 0xa9, 0xfb, 0xa7, 0xf8, 0xa9, 0xfb, 0xa7, 0xf8, - 0xa9, 0xfb, 0xa8, 0xf8, 0xa9, 0xfb, 0xa8, 0xf8, 0xa9, 0xfb, 0xa8, 0xf8, - 0xa9, 0xfb, 0xa9, 0xf8, 0xa9, 0xfb, 0xa9, 0xf8, 0xa9, 0xfb, 0xaa, 0xf8, - 0xaa, 0xfb, 0xaa, 0xf8, 0xad, 0xfb, 0xaa, 0xf8, 0xad, 0xfb, 0xab, 0xf8, - 0xad, 0xfb, 0xab, 0xf8, 0xad, 0xfb, 0xab, 0xf8, 0xad, 0xfb, 0xac, 0xf8, - 0xad, 0xfb, 0xac, 0xf8, 0xad, 0xfb, 0xac, 0xf8, 0xad, 0xfb, 0xad, 0xf8, - 0xad, 0xfb, 0xad, 0xf8, 0xad, 0xfb, 0xae, 0xf8, 0xae, 0xfb, 0xae, 0xf9, - 0xb1, 0xfb, 0xae, 0xf9, 0xb1, 0xfb, 0xaf, 0xf9, 0xb1, 0xfb, 0xaf, 0xf9, - 0xb1, 0xfb, 0xaf, 0xf9, 0xb1, 0xfb, 0xb0, 0xf9, 0xb1, 0xfb, 0xb0, 0xf9, - 0xb1, 0xfb, 0xb0, 0xf9, 0xb1, 0xfb, 0xb1, 0xf9, 0xb1, 0xfb, 0xb1, 0xf9, - 0xb1, 0xfb, 0xb2, 0xf9, 0xb2, 0xfb, 0xb2, 0xf9, 0xb5, 0xfb, 0xb2, 0xf9, - 0xb5, 0xfb, 0xb3, 0xf9, 0xb5, 0xfb, 0xb3, 0xf9, 0xb5, 0xfb, 0xb3, 0xf9, - 0xb5, 0xfb, 0xb4, 0xf9, 0xb5, 0xfb, 0xb4, 0xf9, 0xb5, 0xfb, 0xb4, 0xf9, - 0xb5, 0xfb, 0xb5, 0xf9, 0xb5, 0xfb, 0xb5, 0xf9, 0xb5, 0xfb, 0xb5, 0xf9, - 0xb5, 0xfb, 0xb6, 0xfa, 0xb8, 0xfb, 0xb6, 0xfa, 0xb9, 0xfb, 0xb6, 0xfa, - 0xb8, 0xfb, 0xb7, 0xfa, 0xb9, 0xfb, 0xb7, 0xfa, 0xb8, 0xfb, 0xb7, 0xfa, - 0xb9, 0xfb, 0xb8, 0xfa, 0xb8, 0xfb, 0xb8, 0xfa, 0xb9, 0xfb, 0xb8, 0xfa, - 0xb8, 0xfb, 0xb9, 0xfa, 0xb9, 0xfb, 0xb9, 0xfa, 0xb9, 0xfb, 0xb9, 0xfa, - 0xb9, 0xfb, 0xba, 0xfa, 0xba, 0xfb, 0xba, 0xfa, 0xbc, 0xfb, 0xba, 0xfa, - 0xbc, 0xfb, 0xbb, 0xfa, 0xbc, 0xfb, 0xbb, 0xfa, 0xbc, 0xfb, 0xbb, 0xfa, - 0xbc, 0xfb, 0xbc, 0xfa, 0xbc, 0xfb, 0xbc, 0xfa, 0xbc, 0xfb, 0xbc, 0xfa, - 0xbc, 0xfb, 0xbd, 0xfa, 0xbd, 0xfb, 0xbd, 0xfa, 0xbd, 0xfb, 0xbd, 0xfa, - 0xbd, 0xfb, 0xbe, 0xfa, 0xc0, 0xfb, 0xbe, 0xfa, 0xc0, 0xfb, 0xbe, 0xfa, - 0xc0, 0xfb, 0xbf, 0xfa, 0xc0, 0xfb, 0xbf, 0xfa, 0xc0, 0xfb, 0xbf, 0xfa, - 0xc0, 0xfb, 0xc0, 0xfa, 0xc0, 0xfb, 0xc0, 0xfa, 0xc0, 0xfb, 0xc0, 0xfa, - 0xc0, 0xfb, 0xc1, 0xfa, 0xc1, 0xfb, 0xc1, 0xfa, 0xc1, 0xfb, 0xc1, 0xfb, - 0xc3, 0xfb, 0xc1, 0xfb, 0xc3, 0xfb, 0xc2, 0xfb, 0xc3, 0xfb, 0xc2, 0xfb, - 0xc3, 0xfb, 0xc2, 0xfb, 0xc3, 0xfb, 0xc3, 0xfb, 0xc3, 0xfb, 0xc3, 0xfb, - 0xc3, 0xfb, 0xc3, 0xfb, 0xc3, 0xfb, 0xc4, 0xfb, 0xc4, 0xfb, 0xc4, 0xfb, - 0xc4, 0xfb, 0xc4, 0xfb, 0xc4, 0xfb, 0xc5, 0xfb, 0xc5, 0xfb, 0xc5, 0xfb, - 0xc5, 0xfb, 0xc5, 0xfb, 0xc6, 0xfb, 0xc6, 0xfb, 0xc7, 0xfb, 0xc6, 0xfb, - 0xc6, 0xfb, 0xc6, 0xfb, 0xc7, 0xfb, 0xc6, 0xfb, 0xc6, 0xfb, 0xc7, 0xfb, - 0xc7, 0xfb, 0xc7, 0xfb, 0xc7, 0xfb, 0xc7, 0xfb, 0xc7, 0xfb, 0xc8, 0xfb, - 0xc8, 0xfb, 0xc8, 0xfb, 0xc8, 0xfb, 0xc8, 0xfb, 0xc8, 0xfb, 0xc9, 0xfc, - 0xca, 0xfb, 0xc9, 0xfc, 0xca, 0xfb, 0xc9, 0xfc, 0xca, 0xfb, 0xc9, 0xfc, - 0xca, 0xfb, 0xca, 0xfc, 0xca, 0xfb, 0xca, 0xfc, 0xca, 0xfb, 0xca, 0xfc, - 0xca, 0xfb, 0xcb, 0xfc, 0xcb, 0xfb, 0xcb, 0xfc, 0xcb, 0xfb, 0xcb, 0xfc, - 0xcb, 0xfb, 0xcc, 0xfc, 0xcc, 0xfb, 0xcc, 0xfc, 0xcd, 0xfb, 0xcc, 0xfc, - 0xcd, 0xfb, 0xcc, 0xfc, 0xcd, 0xfb, 0xcd, 0xfc, 0xcd, 0xfb, 0xcd, 0xfc, - 0xcd, 0xfb, 0xcd, 0xfc, 0xcd, 0xfb, 0xce, 0xfc, 0xce, 0xfb, 0xce, 0xfc, - 0xce, 0xfb, 0xce, 0xfc, 0xce, 0xfb, 0xce, 0xfc, 0xce, 0xfb, 0xcf, 0xfc, - 0xcf, 0xfb, 0xcf, 0xfc, 0xcf, 0xfb, 0xcf, 0xfc, 0xcf, 0xfb, 0xd0, 0xfd, - 0xd0, 0xfb, 0xd0, 0xfd, 0xd0, 0xfb, 0xd0, 0xfd, 0xd0, 0xfb, 0xd0, 0xfd, - 0xd0, 0xfb, 0xd1, 0xfd, 0xd1, 0xfb, 0xd1, 0xfd, 0xd1, 0xfb, 0xd1, 0xfd, - 0xd1, 0xfb, 0xd2, 0xfd, 0xd2, 0xfb, 0xd2, 0xfd, 0xd2, 0xfb, 0xd2, 0xfd, - 0xd2, 0xfb, 0xd2, 0xfd, 0xd2, 0xfb, 0xd3, 0xfd, 0xd3, 0xfb, 0xd3, 0xfd, - 0xd3, 0xfb, 0xd3, 0xfd, 0xd3, 0xfb, 0xd3, 0xfd, 0xd4, 0xfb, 0xd4, 0xfd, - 0xd4, 0xfc, 0xd4, 0xfd, 0xd4, 0xfc, 0xd4, 0xfd, 0xd4, 0xfc, 0xd5, 0xfd, - 0xd5, 0xfc, 0xd5, 0xfd, 0xd5, 0xfc, 0xd5, 0xfd, 0xd5, 0xfc, 0xd6, 0xfd, - 0xd6, 0xfc, 0xd6, 0xfd, 0xd6, 0xfc, 0xd6, 0xfd, 0xd6, 0xfa, 0xd6, 0xfd, - 0xd6, 0xfa, 0xd7, 0xfd, 0xd7, 0xfa, 0xd7, 0xfd, 0xd7, 0xfa, 0xd7, 0xfd, - 0xd7, 0xfa, 0xd7, 0xfd, 0xd7, 0xfa, 0xd8, 0xfd, 0xd8, 0xfa, 0xd8, 0xfd, - 0xd8, 0xfa, 0xd8, 0xfd, 0xd8, 0xfa, 0xd9, 0xfd, 0xd9, 0xfa, 0xd9, 0xfd, - 0xd9, 0xfa, 0xd9, 0xfe, 0xd9, 0xfb, 0xd9, 0xfe, 0xd9, 0xfb, 0xda, 0xfe, - 0xda, 0xfb, 0xda, 0xfe, 0xda, 0xfb, 0xda, 0xfe, 0xda, 0xfb, 0xda, 0xfe, - 0xda, 0xfb, 0xdb, 0xfe, 0xdb, 0xfb, 0xdb, 0xfe, 0xdb, 0xfb, 0xdb, 0xfe, - 0xdb, 0xfb, 0xdb, 0xfe, 0xdb, 0xfb, 0xdc, 0xfe, 0xdc, 0xfb, 0xdc, 0xfe, - 0xdb, 0xfb, 0xdc, 0xfe, 0xdc, 0xfb, 0xdd, 0xfe, 0xdd, 0xfb, 0xdd, 0xfe, - 0xdd, 0xfb, 0xdd, 0xfe, 0xdd, 0xfb, 0xdd, 0xfe, 0xdd, 0xfb, 0xde, 0xfe, - 0xde, 0xfb, 0xde, 0xfe, 0xde, 0xfb, 0xde, 0xfe, 0xde, 0xfb, 0xde, 0xfe, - 0xde, 0xfb, 0xdf, 0xfe, 0xdf, 0xfb, 0xdf, 0xfe, 0xde, 0xfb, 0xdf, 0xfe, - 0xdf, 0xfb, 0xdf, 0xfe, 0xde, 0xfb, 0xe0, 0xfe, 0xdf, 0xfb, 0xe0, 0xfe, - 0xe0, 0xfb, 0xe0, 0xfe, 0xe0, 0xfb, 0xe1, 0xfe, 0xe1, 0xfb, 0xe1, 0xfe, - 0xe1, 0xfb, 0xe1, 0xfe, 0xe1, 0xfb, 0xe1, 0xfd, 0xe2, 0xfb, 0xe2, 0xfd, - 0xe3, 0xfb, 0xe2, 0xfd, 0xe2, 0xfb, 0xe2, 0xfd, 0xe3, 0xfb, 0xe2, 0xfd, - 0xe2, 0xfa, 0xe2, 0xfd, 0xe3, 0xfb, 0xe2, 0xfd, 0xe3, 0xfa, 0xe2, 0xfd, - 0xe3, 0xfb, 0xe4, 0xfd, 0xe3, 0xfb, 0xe5, 0xfd, 0xe4, 0xfb, 0xe4, 0xfd, - 0xe4, 0xfb, 0xe5, 0xfd, 0xe4, 0xfb, 0xe4, 0xfd, 0xe4, 0xfb, 0xe5, 0xfd, - 0xe4, 0xfb, 0xe5, 0xfd, 0xe4, 0xfb, 0xe5, 0xfd, 0xe4, 0xfb, 0xe5, 0xfd, - 0xe4, 0xfb, 0xe6, 0xfd, 0xe4, 0xfb, 0xe6, 0xfd, 0xe4, 0xfb, 0xe6, 0xfd, - 0xe4, 0xfb, 0xe6, 0xfd, 0xe4, 0xfb, 0xe7, 0xfd, 0xe4, 0xfb, 0xe7, 0xfd, - 0xe4, 0xfb, 0xe7, 0xfd, 0xe4, 0xfb, 0xe7, 0xfd, 0xe4, 0xfb, 0xe8, 0xfd, - 0xe4, 0xfb, 0xe8, 0xfd, 0xe4, 0xfb, 0xe8, 0xfd, 0xe4, 0xfb, 0xe8, 0xfd, - 0xe4, 0xfb, 0xe9, 0xfb, 0xe5, 0xfb, 0xe9, 0xfd, 0xe4, 0xfb, 0xe9, 0xfb, - 0xe5, 0xfb, 0xe9, 0xfd, 0xee, 0xfb, 0xea, 0xfe, 0xee, 0xfb, 0xea, 0xfd, - 0xee, 0xfb, 0xea, 0xfe, 0xee, 0xfb, 0xea, 0xfd, 0xee, 0xfb, 0xeb, 0xfe, - 0xee, 0xfb, 0xeb, 0xfd, 0xee, 0xfb, 0xeb, 0xfe, 0xee, 0xfb, 0xeb, 0xfd, - 0xee, 0xfb, 0xec, 0xfe, 0xee, 0xfb, 0xec, 0xfd, 0xee, 0xfb, 0xec, 0xfe, - 0xee, 0xfb, 0xec, 0xfd, 0xee, 0xfb, 0xec, 0xfe, 0xee, 0xfb, 0xed, 0xfd, - 0xee, 0xfb, 0xed, 0xfe, 0xee, 0xfb, 0xed, 0xfd, 0xee, 0xfb, 0xed, 0xfd, - 0xee, 0xfb, 0xee, 0xfd, 0xee, 0xfb, 0xee, 0xfd, 0xee, 0xfb, 0xee, 0xfd, - 0xee, 0xfb, 0xee, 0xfd, 0xee, 0xfb, 0xef, 0xfd, 0xee, 0xfb, 0xef, 0xfd, - 0xee, 0xfb, 0xef, 0xfd, 0xee, 0xfb, 0xef, 0xfd, 0xee, 0xfb, 0xf0, 0xfc, - 0xef, 0xfb, 0xf0, 0xfd, 0xee, 0xfb, 0xf0, 0xfc, 0xef, 0xfb, 0xf0, 0xfd, - 0xee, 0xfb, 0xf1, 0xfc, 0xef, 0xfb, 0xf1, 0xfd, 0xee, 0xfb, 0xf1, 0xfc, - 0xef, 0xfb, 0xf1, 0xfd, 0xee, 0xfb, 0xf2, 0xfc, 0xef, 0xfb, 0xf2, 0xfd, - 0xee, 0xfb, 0xf2, 0xfc, 0xef, 0xfb, 0xf2, 0xfd, 0xee, 0xfb, 0xf2, 0xfc, - 0xef, 0xfb, 0xf3, 0xfd, 0xee, 0xfb, 0xf3, 0xfc, 0xef, 0xfb, 0xf3, 0xfd, - 0xee, 0xfb, 0xf3, 0xfc, 0xef, 0xfb, 0xf4, 0xfd, 0xee, 0xfb, 0xf4, 0xfc, - 0xef, 0xfb, 0xf4, 0xfd, 0xee, 0xfb, 0xf4, 0xfc, 0xef, 0xfb, 0xf5, 0xfb, - 0xef, 0xfb, 0xf5, 0xfc, 0xef, 0xfb, 0xf5, 0xfb, 0xef, 0xfb, 0xf5, 0xfc, - 0xef, 0xfb, 0xf5, 0xfb, 0xef, 0xfb, 0xf6, 0xfc, 0xef, 0xfb, 0xf6, 0xfb, - 0xef, 0xfb, 0xf6, 0xfc, 0xef, 0xfb, 0xf6, 0xfb, 0xef, 0xfb, 0xf7, 0xfc, - 0xef, 0xfb, 0xf7, 0xfb, 0xef, 0xfb, 0xf7, 0xfc, 0xef, 0xfb, 0xf7, 0xfb, - 0xef, 0xfb, 0xf8, 0xfc, 0xef, 0xfb, 0xf8, 0xfb, 0xef, 0xfb, 0xf8, 0xfc, - 0xef, 0xfb, 0xf8, 0xfb, 0xef, 0xfb, 0xf8, 0xfc, 0xef, 0xfb, 0xf9, 0xfb, - 0xef, 0xfb, 0xf9, 0xfc, 0xef, 0xfb, 0xf9, 0xfb, 0xef, 0xfb, 0xf9, 0xfc, - 0xef, 0xfb, 0xfa, 0xfb, 0xef, 0xfb, 0xfa, 0xfc, 0xef, 0xfb, 0xfa, 0xfb, - 0xef, 0xfb, 0xfa, 0xfc, 0xef, 0xfb, 0xfa, 0xfb, 0xef, 0xfb, 0xfb, 0xfc, - 0xef, 0xfb, 0xfb, 0xfb, 0xef, 0xfb, 0xfb, 0xfc, 0xef, 0xfb, 0xfb, 0xfb, - 0xef, 0xfb, 0xfc, 0xfc, 0xef, 0xfb, 0xfc, 0xfb, 0xef, 0xfb, 0xfc, 0xfc, - 0xef, 0xfb, 0xfc, 0xfb, 0xef, 0xfb, 0xfc, 0xfc, 0xef, 0xfb, 0xfd, 0xfb, - 0xef, 0xfb, 0xfd, 0xfa, 0xef, 0xfb, 0xfd, 0xfb, 0xef, 0xfb, 0xfd, 0xfa, - 0xef, 0xfb, 0xfe, 0xfb, 0xef, 0xfb, 0xfe, 0xfa, 0xef, 0xfb, 0xfe, 0xfb, - 0xef, 0xfb, 0xfe, 0xfa, 0xef, 0xfb, 0xfe, 0xfb, 0xef, 0xfb, 0xff, 0xfa, - 0xef, 0xfb, 0xff, 0xfb, 0xef, 0xfb, 0x03, 0xf4, 0x83, 0xfb, 0x0a, 0xf4, - 0x83, 0xfb, 0x0f, 0xf4, 0x83, 0xfb, 0x14, 0xf4, 0x83, 0xfb, 0x17, 0xf4, - 0x83, 0xfb, 0x1b, 0xf4, 0x83, 0xfb, 0x1e, 0xf4, 0x83, 0xfb, 0x20, 0xf4, - 0x83, 0xfb, 0x23, 0xf4, 0x83, 0xfb, 0x25, 0xf4, 0x83, 0xfb, 0x27, 0xf4, - 0x83, 0xfb, 0x29, 0xf4, 0x83, 0xfb, 0x2b, 0xf4, 0x83, 0xfb, 0x2d, 0xf4, - 0x83, 0xfb, 0x2f, 0xf4, 0x83, 0xfb, 0x31, 0xf4, 0x83, 0xfb, 0x32, 0xf4, - 0x83, 0xfb, 0x34, 0xf4, 0x83, 0xfb, 0x35, 0xf4, 0x83, 0xfb, 0x37, 0xf4, - 0x83, 0xfb, 0x38, 0xf4, 0x83, 0xfb, 0x3a, 0xf4, 0x83, 0xfb, 0x3b, 0xf4, - 0x83, 0xfb, 0x3c, 0xf4, 0x83, 0xfb, 0x3e, 0xf4, 0x83, 0xfb, 0x3f, 0xf4, - 0x83, 0xfb, 0x40, 0xf4, 0x83, 0xfb, 0x42, 0xf4, 0x83, 0xfb, 0x43, 0xf4, - 0x83, 0xfb, 0x44, 0xf4, 0x83, 0xfb, 0x45, 0xf4, 0x83, 0xfb, 0x46, 0xf4, - 0x83, 0xfb, 0x47, 0xf4, 0x83, 0xfb, 0x48, 0xf4, 0x83, 0xfb, 0x49, 0xf4, - 0x83, 0xfb, 0x4a, 0xf4, 0x83, 0xfb, 0x4b, 0xf4, 0x83, 0xfb, 0x4c, 0xf4, - 0x83, 0xfb, 0x4d, 0xf4, 0x83, 0xfb, 0x4e, 0xf4, 0x83, 0xfb, 0x4f, 0xf4, - 0x83, 0xfb, 0x50, 0xf4, 0x83, 0xfb, 0x51, 0xf4, 0x83, 0xfb, 0x52, 0xf4, - 0x83, 0xfb, 0x53, 0xf4, 0x83, 0xfb, 0x54, 0xf4, 0x83, 0xfb, 0x55, 0xf4, - 0x83, 0xfb, 0x56, 0xf4, 0x83, 0xfb, 0x57, 0xf4, 0x83, 0xfb, 0x58, 0xf4, - 0x83, 0xfb, 0x58, 0xf4, 0x83, 0xfb, 0x59, 0xf4, 0x83, 0xfb, 0x5a, 0xf4, - 0x83, 0xfb, 0x5b, 0xf4, 0x83, 0xfb, 0x5c, 0xf4, 0x83, 0xfb, 0x5d, 0xf4, - 0x83, 0xfb, 0x5d, 0xf4, 0x83, 0xfb, 0x5e, 0xf4, 0x83, 0xfb, 0x5f, 0xf4, - 0x83, 0xfb, 0x60, 0xf4, 0x83, 0xfb, 0x60, 0xf4, 0x83, 0xfb, 0x61, 0xf4, - 0x83, 0xfb, 0x62, 0xf4, 0x83, 0xfb, 0x63, 0xf4, 0x83, 0xfb, 0x63, 0xf4, - 0x83, 0xfb, 0x64, 0xf4, 0x83, 0xfb, 0x65, 0xf4, 0x83, 0xfb, 0x66, 0xf4, - 0x83, 0xfb, 0x66, 0xf4, 0x83, 0xfb, 0x67, 0xf4, 0x83, 0xfb, 0x68, 0xf4, - 0x83, 0xfb, 0x68, 0xf4, 0x83, 0xfb, 0x69, 0xf4, 0x83, 0xfb, 0x6a, 0xf4, - 0x83, 0xfb, 0x6a, 0xf4, 0x83, 0xfb, 0x6b, 0xf4, 0x83, 0xfb, 0x6c, 0xf4, - 0x83, 0xfb, 0x6c, 0xf4, 0x83, 0xfb, 0x6d, 0xf4, 0x83, 0xfb, 0x6e, 0xf4, - 0x83, 0xfb, 0x6e, 0xf4, 0x83, 0xfb, 0x6f, 0xf4, 0x83, 0xfb, 0x70, 0xf4, - 0x83, 0xfb, 0x70, 0xf4, 0x83, 0xfb, 0x71, 0xf4, 0x83, 0xfb, 0x72, 0xf4, - 0x83, 0xfb, 0x72, 0xf4, 0x83, 0xfb, 0x73, 0xf4, 0x83, 0xfb, 0x73, 0xf4, - 0x83, 0xfb, 0x74, 0xf4, 0x83, 0xfb, 0x75, 0xf4, 0x83, 0xfb, 0x75, 0xf4, - 0x83, 0xfb, 0x76, 0xf4, 0x83, 0xfb, 0x76, 0xf4, 0x83, 0xfb, 0x77, 0xf4, - 0x83, 0xfb, 0x78, 0xf4, 0x83, 0xfb, 0x78, 0xf4, 0x83, 0xfb, 0x79, 0xf4, - 0x83, 0xfb, 0x79, 0xf4, 0x83, 0xfb, 0x7a, 0xf4, 0x83, 0xfb, 0x7a, 0xf4, - 0x83, 0xfb, 0x7b, 0xf4, 0x83, 0xfb, 0x7c, 0xf4, 0x83, 0xfb, 0x7c, 0xf4, - 0x83, 0xfb, 0x7d, 0xf4, 0x83, 0xfb, 0x7d, 0xf4, 0x83, 0xfb, 0x7e, 0xf4, - 0x83, 0xfb, 0x7e, 0xf4, 0x83, 0xfb, 0x7f, 0xf4, 0x85, 0xfb, 0x7f, 0xf4, - 0x83, 0xfb, 0x80, 0xf4, 0x85, 0xfb, 0x81, 0xf4, 0x83, 0xfb, 0x81, 0xf4, - 0x85, 0xfb, 0x82, 0xf4, 0x86, 0xfb, 0x82, 0xf4, 0x85, 0xfb, 0x83, 0xf4, - 0x86, 0xfb, 0x83, 0xf4, 0x85, 0xfb, 0x84, 0xf4, 0x86, 0xfb, 0x84, 0xf4, - 0x85, 0xfb, 0x85, 0xf5, 0x8b, 0xfb, 0x85, 0xf5, 0x8b, 0xfb, 0x86, 0xf5, - 0x8b, 0xfb, 0x86, 0xf5, 0x8b, 0xfb, 0x87, 0xf5, 0x8b, 0xfb, 0x87, 0xf5, - 0x8b, 0xfb, 0x88, 0xf5, 0x8b, 0xfb, 0x88, 0xf5, 0x8b, 0xfb, 0x89, 0xf5, - 0x8b, 0xfb, 0x89, 0xf5, 0x8b, 0xfb, 0x8a, 0xf5, 0x8b, 0xfb, 0x8a, 0xf5, - 0x90, 0xfb, 0x8b, 0xf5, 0x90, 0xfb, 0x8b, 0xf5, 0x90, 0xfb, 0x8c, 0xf5, - 0x90, 0xfb, 0x8c, 0xf5, 0x90, 0xfb, 0x8d, 0xf5, 0x90, 0xfb, 0x8d, 0xf5, - 0x90, 0xfb, 0x8e, 0xf5, 0x90, 0xfb, 0x8e, 0xf5, 0x90, 0xfb, 0x8e, 0xf5, - 0x90, 0xfb, 0x8f, 0xf5, 0x90, 0xfb, 0x8f, 0xf6, 0x95, 0xfb, 0x90, 0xf5, - 0x90, 0xfb, 0x90, 0xf6, 0x95, 0xfb, 0x91, 0xf6, 0x95, 0xfb, 0x91, 0xf6, - 0x95, 0xfb, 0x92, 0xf6, 0x95, 0xfb, 0x92, 0xf6, 0x95, 0xfb, 0x93, 0xf6, - 0x95, 0xfb, 0x93, 0xf6, 0x95, 0xfb, 0x94, 0xf6, 0x95, 0xfb, 0x94, 0xf6, - 0x95, 0xfb, 0x94, 0xf6, 0x95, 0xfb, 0x95, 0xf6, 0x95, 0xfb, 0x95, 0xf6, - 0x9a, 0xfb, 0x96, 0xf6, 0x9a, 0xfb, 0x96, 0xf6, 0x9a, 0xfb, 0x97, 0xf6, - 0x9a, 0xfb, 0x97, 0xf6, 0x9a, 0xfb, 0x98, 0xf6, 0x9a, 0xfb, 0x98, 0xf6, - 0x9a, 0xfb, 0x98, 0xf6, 0x9a, 0xfb, 0x99, 0xf6, 0x9a, 0xfb, 0x99, 0xf6, - 0x9a, 0xfb, 0x9a, 0xf6, 0x9a, 0xfb, 0x9a, 0xf7, 0x9e, 0xfb, 0x9a, 0xf7, - 0x9f, 0xfb, 0x9b, 0xf7, 0x9e, 0xfb, 0x9b, 0xf7, 0x9f, 0xfb, 0x9c, 0xf7, - 0x9e, 0xfb, 0x9c, 0xf7, 0x9f, 0xfb, 0x9d, 0xf7, 0x9e, 0xfb, 0x9d, 0xf7, - 0x9f, 0xfb, 0x9d, 0xf7, 0x9e, 0xfb, 0x9e, 0xf7, 0x9f, 0xfb, 0x9e, 0xf7, - 0x9e, 0xfb, 0x9f, 0xf7, 0xa3, 0xfb, 0x9f, 0xf7, 0xa3, 0xfb, 0x9f, 0xf7, - 0xa3, 0xfb, 0xa0, 0xf7, 0xa3, 0xfb, 0xa0, 0xf7, 0xa3, 0xfb, 0xa1, 0xf7, - 0xa3, 0xfb, 0xa1, 0xf7, 0xa3, 0xfb, 0xa1, 0xf7, 0xa3, 0xfb, 0xa2, 0xf7, - 0xa3, 0xfb, 0xa2, 0xf7, 0xa3, 0xfb, 0xa3, 0xf7, 0xa3, 0xfb, 0xa3, 0xf8, - 0xa7, 0xfb, 0xa3, 0xf8, 0xa7, 0xfb, 0xa4, 0xf8, 0xa7, 0xfb, 0xa4, 0xf8, - 0xa7, 0xfb, 0xa5, 0xf8, 0xa7, 0xfb, 0xa5, 0xf8, 0xa7, 0xfb, 0xa5, 0xf8, - 0xa7, 0xfb, 0xa6, 0xf8, 0xa9, 0xfb, 0xa6, 0xf8, 0xa7, 0xfb, 0xa6, 0xf8, - 0xa9, 0xfb, 0xa7, 0xf8, 0xa9, 0xfb, 0xa7, 0xf8, 0xa9, 0xfb, 0xa8, 0xf8, - 0xa9, 0xfb, 0xa8, 0xf8, 0xa9, 0xfb, 0xa8, 0xf8, 0xa9, 0xfb, 0xa9, 0xf8, - 0xab, 0xfb, 0xa9, 0xf8, 0xab, 0xfb, 0xaa, 0xf8, 0xab, 0xfb, 0xaa, 0xf8, - 0xab, 0xfb, 0xaa, 0xf8, 0xab, 0xfb, 0xab, 0xf8, 0xab, 0xfb, 0xab, 0xf8, - 0xab, 0xfb, 0xab, 0xf8, 0xab, 0xfb, 0xac, 0xf8, 0xac, 0xfb, 0xac, 0xf8, - 0xaf, 0xfb, 0xac, 0xf8, 0xaf, 0xfb, 0xad, 0xf8, 0xaf, 0xfb, 0xad, 0xf8, - 0xaf, 0xfb, 0xae, 0xf8, 0xaf, 0xfb, 0xae, 0xf8, 0xaf, 0xfb, 0xae, 0xf8, - 0xaf, 0xfb, 0xaf, 0xf8, 0xaf, 0xfb, 0xaf, 0xf8, 0xaf, 0xfb, 0xaf, 0xf8, - 0xaf, 0xfb, 0xb0, 0xf8, 0xb0, 0xfb, 0xb0, 0xf9, 0xb3, 0xfb, 0xb0, 0xf9, - 0xb3, 0xfb, 0xb1, 0xf9, 0xb3, 0xfb, 0xb1, 0xf9, 0xb3, 0xfb, 0xb2, 0xf9, - 0xb3, 0xfb, 0xb2, 0xf9, 0xb3, 0xfb, 0xb2, 0xf9, 0xb3, 0xfb, 0xb3, 0xf9, - 0xb3, 0xfb, 0xb3, 0xf9, 0xb3, 0xfb, 0xb3, 0xf9, 0xb3, 0xfb, 0xb4, 0xf9, - 0xb4, 0xfb, 0xb4, 0xf9, 0xb7, 0xfb, 0xb4, 0xf9, 0xb7, 0xfb, 0xb5, 0xf9, - 0xb7, 0xfb, 0xb5, 0xf9, 0xb7, 0xfb, 0xb5, 0xf9, 0xb7, 0xfb, 0xb6, 0xf9, - 0xb7, 0xfb, 0xb6, 0xf9, 0xb7, 0xfb, 0xb6, 0xf9, 0xb7, 0xfb, 0xb7, 0xf9, - 0xb7, 0xfb, 0xb7, 0xf9, 0xb7, 0xfb, 0xb7, 0xf9, 0xb7, 0xfb, 0xb8, 0xfa, - 0xba, 0xfb, 0xb8, 0xfa, 0xbb, 0xfb, 0xb8, 0xfa, 0xba, 0xfb, 0xb9, 0xfa, - 0xbb, 0xfb, 0xb9, 0xfa, 0xba, 0xfb, 0xb9, 0xfa, 0xbb, 0xfb, 0xba, 0xfa, - 0xba, 0xfb, 0xba, 0xfa, 0xbb, 0xfb, 0xba, 0xfa, 0xba, 0xfb, 0xbb, 0xfa, - 0xbb, 0xfb, 0xbb, 0xfa, 0xbb, 0xfb, 0xbb, 0xfa, 0xbb, 0xfb, 0xbc, 0xfa, - 0xbc, 0xfb, 0xbc, 0xfa, 0xbe, 0xfb, 0xbc, 0xfa, 0xbe, 0xfb, 0xbd, 0xfa, - 0xbe, 0xfb, 0xbd, 0xfa, 0xbe, 0xfb, 0xbd, 0xfa, 0xbe, 0xfb, 0xbe, 0xfa, - 0xbe, 0xfb, 0xbe, 0xfa, 0xbe, 0xfb, 0xbe, 0xfa, 0xbe, 0xfb, 0xbf, 0xfa, - 0xbf, 0xfb, 0xbf, 0xfa, 0xbf, 0xfb, 0xbf, 0xfa, 0xbf, 0xfb, 0xc0, 0xfb, - 0xc1, 0xfb, 0xc0, 0xfb, 0xc2, 0xfb, 0xc0, 0xfb, 0xc1, 0xfb, 0xc1, 0xfb, - 0xc2, 0xfb, 0xc1, 0xfb, 0xc1, 0xfb, 0xc1, 0xfb, 0xc2, 0xfb, 0xc1, 0xfb, - 0xc1, 0xfb, 0xc2, 0xfb, 0xc2, 0xfb, 0xc2, 0xfb, 0xc2, 0xfb, 0xc2, 0xfb, - 0xc2, 0xfb, 0xc3, 0xfb, 0xc3, 0xfb, 0xc3, 0xfb, 0xc5, 0xfb, 0xc3, 0xfb, - 0xc5, 0xfb, 0xc4, 0xfb, 0xc5, 0xfb, 0xc4, 0xfb, 0xc5, 0xfb, 0xc4, 0xfb, - 0xc5, 0xfb, 0xc5, 0xfb, 0xc5, 0xfb, 0xc5, 0xfb, 0xc5, 0xfb, 0xc5, 0xfb, - 0xc6, 0xfb, 0xc6, 0xfb, 0xc7, 0xfb, 0xc6, 0xfb, 0xc6, 0xfb, 0xc6, 0xfb, - 0xc7, 0xfb, 0xc6, 0xfb, 0xc6, 0xfb, 0xc7, 0xfb, 0xc7, 0xfb, 0xc7, 0xfc, - 0xc8, 0xfb, 0xc7, 0xfc, 0xc9, 0xfb, 0xc8, 0xfc, 0xc8, 0xfb, 0xc8, 0xfc, - 0xc9, 0xfb, 0xc8, 0xfc, 0xc8, 0xfb, 0xc9, 0xfc, 0xc9, 0xfb, 0xc9, 0xfc, - 0xc9, 0xfb, 0xc9, 0xfc, 0xc9, 0xfb, 0xc9, 0xfc, 0xc9, 0xfb, 0xca, 0xfc, - 0xca, 0xfb, 0xca, 0xfc, 0xca, 0xfb, 0xca, 0xfc, 0xcc, 0xfb, 0xcb, 0xfc, - 0xcc, 0xfb, 0xcb, 0xfc, 0xcc, 0xfb, 0xcb, 0xfc, 0xcc, 0xfb, 0xcc, 0xfc, - 0xcc, 0xfb, 0xcc, 0xfc, 0xcc, 0xfb, 0xcc, 0xfc, 0xcc, 0xfb, 0xcc, 0xfc, - 0xcc, 0xfb, 0xcd, 0xfc, 0xcd, 0xfb, 0xcd, 0xfc, 0xcd, 0xfb, 0xcd, 0xfc, - 0xcd, 0xfb, 0xce, 0xfc, 0xcf, 0xfb, 0xce, 0xfc, 0xcf, 0xfb, 0xce, 0xfc, - 0xcf, 0xfb, 0xce, 0xfc, 0xcf, 0xfb, 0xcf, 0xfc, 0xcf, 0xfb, 0xcf, 0xfc, - 0xcf, 0xfb, 0xcf, 0xfc, 0xcf, 0xfb, 0xd0, 0xfc, 0xd0, 0xfb, 0xd0, 0xfc, - 0xd0, 0xfb, 0xd0, 0xfc, 0xd0, 0xfb, 0xd0, 0xfc, 0xd0, 0xfb, 0xd1, 0xfc, - 0xd1, 0xfb, 0xd1, 0xfc, 0xd1, 0xfb, 0xd1, 0xfd, 0xd2, 0xfb, 0xd2, 0xfd, - 0xd2, 0xfb, 0xd2, 0xfd, 0xd2, 0xfb, 0xd2, 0xfd, 0xd2, 0xfb, 0xd2, 0xfd, - 0xd2, 0xfb, 0xd3, 0xfd, 0xd3, 0xfb, 0xd3, 0xfd, 0xd3, 0xfb, 0xd3, 0xfd, - 0xd3, 0xfb, 0xd4, 0xfd, 0xd4, 0xfb, 0xd4, 0xfd, 0xd4, 0xfb, 0xd4, 0xfd, - 0xd4, 0xfb, 0xd4, 0xfd, 0xd4, 0xfb, 0xd5, 0xfd, 0xd5, 0xfb, 0xd4, 0xfd, - 0xd5, 0xfb, 0xd5, 0xfd, 0xd5, 0xfb, 0xd6, 0xfd, 0xd6, 0xfc, 0xd6, 0xfd, - 0xd6, 0xfc, 0xd6, 0xfd, 0xd6, 0xfc, 0xd6, 0xfd, 0xd6, 0xfc, 0xd7, 0xfd, - 0xd7, 0xfc, 0xd7, 0xfd, 0xd7, 0xfc, 0xd7, 0xfd, 0xd7, 0xfc, 0xd7, 0xfd, - 0xd7, 0xfa, 0xd8, 0xfd, 0xd8, 0xfa, 0xd8, 0xfd, 0xd8, 0xfa, 0xd8, 0xfd, - 0xd8, 0xfa, 0xd9, 0xfd, 0xd9, 0xfa, 0xd9, 0xfd, 0xd9, 0xfa, 0xd9, 0xfd, - 0xd9, 0xfa, 0xd9, 0xfd, 0xd9, 0xfa, 0xda, 0xfd, 0xda, 0xfa, 0xda, 0xfd, - 0xda, 0xfa, 0xda, 0xfd, 0xda, 0xfa, 0xda, 0xfe, 0xda, 0xfb, 0xdb, 0xfe, - 0xdb, 0xfb, 0xdb, 0xfe, 0xdb, 0xfb, 0xdb, 0xfe, 0xdb, 0xfb, 0xdb, 0xfe, - 0xdb, 0xfb, 0xdc, 0xfe, 0xdc, 0xfb, 0xdc, 0xfe, 0xdc, 0xfb, 0xdc, 0xfe, - 0xdc, 0xfb, 0xdd, 0xfe, 0xdd, 0xfb, 0xdd, 0xfe, 0xdd, 0xfb, 0xdd, 0xfe, - 0xdd, 0xfb, 0xdd, 0xfe, 0xdd, 0xfb, 0xde, 0xfe, 0xdd, 0xfb, 0xde, 0xfe, - 0xde, 0xfb, 0xde, 0xfe, 0xde, 0xfb, 0xde, 0xfe, 0xde, 0xfb, 0xdf, 0xfe, - 0xdf, 0xfb, 0xdf, 0xfe, 0xdf, 0xfb, 0xdf, 0xfe, 0xdf, 0xfb, 0xdf, 0xfe, - 0xdf, 0xfb, 0xe0, 0xfe, 0xe0, 0xfb, 0xe0, 0xfe, 0xe0, 0xfb, 0xe0, 0xfe, - 0xe0, 0xfb, 0xe1, 0xfe, 0xe0, 0xfb, 0xe1, 0xfe, 0xe0, 0xfb, 0xe1, 0xfe, - 0xe0, 0xfb, 0xe1, 0xfd, 0xe2, 0xfb, 0xe2, 0xfd, 0xe3, 0xfb, 0xe2, 0xfd, - 0xe2, 0xfb, 0xe2, 0xfd, 0xe3, 0xfb, 0xe2, 0xfd, 0xe2, 0xfb, 0xe2, 0xfd, - 0xe3, 0xfb, 0xe2, 0xfd, 0xe3, 0xfb, 0xe2, 0xfd, 0xe3, 0xfb, 0xe4, 0xfd, - 0xe3, 0xfb, 0xe5, 0xfd, 0xe4, 0xfb, 0xe4, 0xfd, 0xe4, 0xfb, 0xe5, 0xfd, - 0xe4, 0xfb, 0xe4, 0xfd, 0xe4, 0xfb, 0xe5, 0xfd, 0xe4, 0xfb, 0xe5, 0xfd, - 0xe4, 0xfb, 0xe5, 0xfd, 0xe4, 0xfb, 0xe5, 0xfc, 0xe4, 0xfb, 0xe6, 0xfd, - 0xe4, 0xfb, 0xe6, 0xfc, 0xe4, 0xfb, 0xe6, 0xfd, 0xe4, 0xfb, 0xe6, 0xfc, - 0xe4, 0xfb, 0xe7, 0xfd, 0xe4, 0xfb, 0xe7, 0xfc, 0xe4, 0xfb, 0xe7, 0xfd, - 0xe4, 0xfb, 0xe7, 0xfc, 0xe4, 0xfb, 0xe8, 0xfd, 0xe4, 0xfb, 0xe8, 0xfc, - 0xe4, 0xfb, 0xe8, 0xfd, 0xe4, 0xfb, 0xe8, 0xfc, 0xe4, 0xfb, 0xe9, 0xfc, - 0xe5, 0xfb, 0xe9, 0xfc, 0xe4, 0xfb, 0xe9, 0xfc, 0xe5, 0xfb, 0xe9, 0xfd, - 0xee, 0xfb, 0xea, 0xfe, 0xee, 0xfb, 0xea, 0xfd, 0xee, 0xfb, 0xea, 0xfe, - 0xee, 0xfb, 0xea, 0xfd, 0xee, 0xfb, 0xeb, 0xfe, 0xee, 0xfb, 0xeb, 0xfd, - 0xee, 0xfb, 0xeb, 0xfe, 0xee, 0xfb, 0xeb, 0xfd, 0xee, 0xfb, 0xec, 0xfe, - 0xee, 0xfb, 0xec, 0xfd, 0xee, 0xfb, 0xec, 0xfe, 0xee, 0xfb, 0xec, 0xfd, - 0xee, 0xfb, 0xec, 0xfe, 0xee, 0xfb, 0xed, 0xfd, 0xee, 0xfb, 0xed, 0xfe, - 0xee, 0xfb, 0xed, 0xfd, 0xee, 0xfb, 0xed, 0xfe, 0xee, 0xfb, 0xee, 0xfd, - 0xee, 0xfb, 0xee, 0xfe, 0xee, 0xfb, 0xee, 0xfd, 0xee, 0xfb, 0xee, 0xfd, - 0xee, 0xfb, 0xef, 0xfd, 0xee, 0xfb, 0xef, 0xfd, 0xee, 0xfb, 0xef, 0xfd, - 0xee, 0xfb, 0xef, 0xfd, 0xee, 0xfb, 0xf0, 0xfd, 0xee, 0xfb, 0xf0, 0xfd, - 0xee, 0xfb, 0xf0, 0xfd, 0xee, 0xfb, 0xf0, 0xfd, 0xee, 0xfb, 0xf1, 0xfc, - 0xef, 0xfb, 0xf1, 0xfd, 0xee, 0xfb, 0xf1, 0xfc, 0xef, 0xfb, 0xf1, 0xfd, - 0xee, 0xfb, 0xf2, 0xfc, 0xef, 0xfb, 0xf2, 0xfd, 0xee, 0xfb, 0xf2, 0xfc, - 0xef, 0xfb, 0xf2, 0xfd, 0xee, 0xfb, 0xf2, 0xfc, 0xef, 0xfb, 0xf3, 0xfd, - 0xee, 0xfb, 0xf3, 0xfc, 0xef, 0xfb, 0xf3, 0xfd, 0xee, 0xfb, 0xf3, 0xfc, - 0xef, 0xfb, 0xf4, 0xfd, 0xee, 0xfb, 0xf4, 0xfc, 0xef, 0xfb, 0xf4, 0xfd, - 0xee, 0xfb, 0xf4, 0xfc, 0xef, 0xfb, 0xf5, 0xfd, 0xee, 0xfb, 0xf5, 0xfc, - 0xef, 0xfb, 0xf5, 0xfd, 0xee, 0xfb, 0xf5, 0xfc, 0xef, 0xfb, 0xf5, 0xfd, - 0xee, 0xfb, 0xf6, 0xfc, 0xef, 0xfb, 0xf6, 0xfd, 0xee, 0xfb, 0xf6, 0xfc, - 0xef, 0xfb, 0xf6, 0xfd, 0xee, 0xfb, 0xf7, 0xfc, 0xef, 0xfb, 0xf7, 0xfd, - 0xee, 0xfb, 0xf7, 0xfc, 0xef, 0xfb, 0xf7, 0xfb, 0xef, 0xfb, 0xf8, 0xfc, - 0xef, 0xfb, 0xf8, 0xfb, 0xef, 0xfb, 0xf8, 0xfc, 0xef, 0xfb, 0xf8, 0xfb, - 0xef, 0xfb, 0xf8, 0xfc, 0xef, 0xfb, 0xf9, 0xfb, 0xef, 0xfb, 0xf9, 0xfc, - 0xef, 0xfb, 0xf9, 0xfb, 0xef, 0xfb, 0xf9, 0xfc, 0xef, 0xfb, 0xfa, 0xfb, - 0xef, 0xfb, 0xfa, 0xfc, 0xef, 0xfb, 0xfa, 0xfb, 0xef, 0xfb, 0xfa, 0xfc, - 0xef, 0xfb, 0xfa, 0xfb, 0xef, 0xfb, 0xfb, 0xfc, 0xef, 0xfb, 0xfb, 0xfb, - 0xef, 0xfb, 0xfb, 0xfc, 0xef, 0xfb, 0xfb, 0xfb, 0xef, 0xfb, 0xfc, 0xfc, - 0xef, 0xfb, 0xfc, 0xfb, 0xef, 0xfb, 0xfc, 0xfc, 0xef, 0xfb, 0xfc, 0xfb, - 0xef, 0xfb, 0xfc, 0xfc, 0xef, 0xfb, 0xfd, 0xfb, 0xef, 0xfb, 0xfd, 0xfc, - 0xef, 0xfb, 0xfd, 0xfb, 0xef, 0xfb, 0xfd, 0xfc, 0xef, 0xfb, 0xfe, 0xfb, - 0xef, 0xfb, 0xfe, 0xfc, 0xef, 0xfb, 0xfe, 0xfb, 0xef, 0xfb, 0xfe, 0xfc, - 0xef, 0xfb, 0xfe, 0xfb, 0xef, 0xfb, 0xff, 0xfc, 0xef, 0xfb, 0xff, 0xfb, - 0xef, 0xfb, 0x03, 0xf4, 0x83, 0xfc, 0x0a, 0xf4, 0x83, 0xfc, 0x0f, 0xf4, - 0x83, 0xfc, 0x14, 0xf4, 0x83, 0xfc, 0x17, 0xf4, 0x83, 0xfc, 0x1b, 0xf4, - 0x83, 0xfc, 0x1e, 0xf4, 0x83, 0xfc, 0x20, 0xf4, 0x83, 0xfc, 0x23, 0xf4, - 0x83, 0xfc, 0x25, 0xf4, 0x83, 0xfc, 0x27, 0xf4, 0x83, 0xfc, 0x29, 0xf4, - 0x83, 0xfc, 0x2b, 0xf4, 0x83, 0xfc, 0x2d, 0xf4, 0x83, 0xfc, 0x2f, 0xf4, - 0x83, 0xfc, 0x31, 0xf4, 0x83, 0xfc, 0x32, 0xf4, 0x83, 0xfc, 0x34, 0xf4, - 0x83, 0xfc, 0x35, 0xf4, 0x83, 0xfc, 0x37, 0xf4, 0x83, 0xfc, 0x38, 0xf4, - 0x83, 0xfc, 0x3a, 0xf4, 0x83, 0xfc, 0x3b, 0xf4, 0x83, 0xfc, 0x3c, 0xf4, - 0x83, 0xfc, 0x3e, 0xf4, 0x83, 0xfc, 0x3f, 0xf4, 0x83, 0xfc, 0x40, 0xf4, - 0x83, 0xfc, 0x42, 0xf4, 0x83, 0xfc, 0x43, 0xf4, 0x83, 0xfc, 0x44, 0xf4, - 0x83, 0xfc, 0x45, 0xf4, 0x83, 0xfc, 0x46, 0xf4, 0x83, 0xfc, 0x47, 0xf4, - 0x83, 0xfc, 0x48, 0xf4, 0x83, 0xfc, 0x49, 0xf4, 0x83, 0xfc, 0x4a, 0xf4, - 0x83, 0xfc, 0x4b, 0xf4, 0x83, 0xfc, 0x4c, 0xf4, 0x83, 0xfc, 0x4d, 0xf4, - 0x83, 0xfc, 0x4e, 0xf4, 0x83, 0xfc, 0x4f, 0xf4, 0x83, 0xfc, 0x50, 0xf4, - 0x83, 0xfc, 0x51, 0xf4, 0x83, 0xfc, 0x52, 0xf4, 0x83, 0xfc, 0x53, 0xf4, - 0x83, 0xfc, 0x54, 0xf4, 0x83, 0xfc, 0x55, 0xf4, 0x83, 0xfc, 0x56, 0xf4, - 0x83, 0xfc, 0x57, 0xf4, 0x83, 0xfc, 0x58, 0xf4, 0x83, 0xfc, 0x58, 0xf4, - 0x83, 0xfc, 0x59, 0xf4, 0x83, 0xfc, 0x5a, 0xf4, 0x83, 0xfc, 0x5b, 0xf4, - 0x83, 0xfc, 0x5c, 0xf4, 0x83, 0xfc, 0x5d, 0xf4, 0x83, 0xfc, 0x5d, 0xf4, - 0x83, 0xfc, 0x5e, 0xf4, 0x83, 0xfc, 0x5f, 0xf4, 0x83, 0xfc, 0x60, 0xf4, - 0x83, 0xfc, 0x60, 0xf4, 0x83, 0xfc, 0x61, 0xf4, 0x83, 0xfc, 0x62, 0xf4, - 0x83, 0xfc, 0x63, 0xf4, 0x83, 0xfc, 0x63, 0xf4, 0x83, 0xfc, 0x64, 0xf4, - 0x83, 0xfc, 0x65, 0xf4, 0x83, 0xfc, 0x66, 0xf4, 0x83, 0xfc, 0x66, 0xf4, - 0x83, 0xfc, 0x67, 0xf4, 0x83, 0xfc, 0x68, 0xf4, 0x83, 0xfc, 0x68, 0xf4, - 0x83, 0xfc, 0x69, 0xf4, 0x83, 0xfc, 0x6a, 0xf4, 0x83, 0xfc, 0x6a, 0xf4, - 0x83, 0xfc, 0x6b, 0xf4, 0x83, 0xfc, 0x6c, 0xf4, 0x83, 0xfc, 0x6c, 0xf4, - 0x83, 0xfc, 0x6d, 0xf4, 0x83, 0xfc, 0x6e, 0xf4, 0x83, 0xfc, 0x6e, 0xf4, - 0x83, 0xfc, 0x6f, 0xf4, 0x83, 0xfc, 0x70, 0xf4, 0x83, 0xfc, 0x70, 0xf4, - 0x83, 0xfc, 0x71, 0xf4, 0x83, 0xfc, 0x72, 0xf4, 0x83, 0xfc, 0x72, 0xf4, - 0x83, 0xfc, 0x73, 0xf4, 0x83, 0xfc, 0x73, 0xf4, 0x83, 0xfc, 0x74, 0xf4, - 0x83, 0xfc, 0x75, 0xf4, 0x83, 0xfc, 0x75, 0xf4, 0x83, 0xfc, 0x76, 0xf4, - 0x83, 0xfc, 0x76, 0xf4, 0x83, 0xfc, 0x77, 0xf4, 0x83, 0xfc, 0x78, 0xf4, - 0x83, 0xfc, 0x78, 0xf4, 0x83, 0xfc, 0x79, 0xf4, 0x83, 0xfc, 0x79, 0xf4, - 0x83, 0xfc, 0x7a, 0xf4, 0x83, 0xfc, 0x7a, 0xf4, 0x83, 0xfc, 0x7b, 0xf4, - 0x83, 0xfc, 0x7c, 0xf4, 0x83, 0xfc, 0x7c, 0xf4, 0x83, 0xfc, 0x7d, 0xf4, - 0x83, 0xfc, 0x7d, 0xf4, 0x83, 0xfc, 0x7e, 0xf4, 0x83, 0xfc, 0x7e, 0xf4, - 0x83, 0xfc, 0x7f, 0xf4, 0x83, 0xfc, 0x7f, 0xf4, 0x83, 0xfc, 0x80, 0xf4, - 0x83, 0xfc, 0x81, 0xf4, 0x83, 0xfc, 0x81, 0xf4, 0x83, 0xfc, 0x82, 0xf5, - 0x88, 0xfc, 0x82, 0xf5, 0x88, 0xfc, 0x83, 0xf5, 0x88, 0xfc, 0x83, 0xf5, - 0x88, 0xfc, 0x84, 0xf5, 0x88, 0xfc, 0x84, 0xf5, 0x88, 0xfc, 0x85, 0xf5, - 0x88, 0xfc, 0x85, 0xf5, 0x88, 0xfc, 0x86, 0xf5, 0x88, 0xfc, 0x86, 0xf5, - 0x88, 0xfc, 0x87, 0xf5, 0x88, 0xfc, 0x87, 0xf5, 0x8d, 0xfc, 0x88, 0xf5, - 0x8e, 0xfc, 0x88, 0xf5, 0x8d, 0xfc, 0x89, 0xf5, 0x8e, 0xfc, 0x89, 0xf5, - 0x8d, 0xfc, 0x8a, 0xf5, 0x8e, 0xfc, 0x8a, 0xf5, 0x8d, 0xfc, 0x8b, 0xf5, - 0x8e, 0xfc, 0x8b, 0xf5, 0x8d, 0xfc, 0x8c, 0xf5, 0x8e, 0xfc, 0x8c, 0xf5, - 0x8d, 0xfc, 0x8d, 0xf5, 0x92, 0xfc, 0x8d, 0xf5, 0x93, 0xfc, 0x8e, 0xf5, - 0x92, 0xfc, 0x8e, 0xf5, 0x93, 0xfc, 0x8e, 0xf5, 0x92, 0xfc, 0x8f, 0xf5, - 0x93, 0xfc, 0x8f, 0xf5, 0x92, 0xfc, 0x90, 0xf5, 0x93, 0xfc, 0x90, 0xf5, - 0x92, 0xfc, 0x91, 0xf5, 0x93, 0xfc, 0x91, 0xf5, 0x92, 0xfc, 0x92, 0xf6, - 0x97, 0xfc, 0x92, 0xf5, 0x92, 0xfc, 0x93, 0xf6, 0x97, 0xfc, 0x93, 0xf6, - 0x98, 0xfc, 0x94, 0xf6, 0x97, 0xfc, 0x94, 0xf6, 0x98, 0xfc, 0x94, 0xf6, - 0x97, 0xfc, 0x95, 0xf6, 0x98, 0xfc, 0x95, 0xf6, 0x97, 0xfc, 0x96, 0xf6, - 0x98, 0xfc, 0x96, 0xf6, 0x97, 0xfc, 0x97, 0xf6, 0x98, 0xfc, 0x97, 0xf6, - 0x97, 0xfc, 0x98, 0xf6, 0x9c, 0xfc, 0x98, 0xf6, 0x9c, 0xfc, 0x98, 0xf6, - 0x9c, 0xfc, 0x99, 0xf6, 0x9c, 0xfc, 0x99, 0xf6, 0x9c, 0xfc, 0x9a, 0xf6, - 0x9c, 0xfc, 0x9a, 0xf6, 0x9c, 0xfc, 0x9a, 0xf6, 0x9c, 0xfc, 0x9b, 0xf6, - 0x9c, 0xfc, 0x9b, 0xf6, 0x9c, 0xfc, 0x9c, 0xf6, 0x9c, 0xfc, 0x9c, 0xf7, - 0xa0, 0xfc, 0x9d, 0xf7, 0xa1, 0xfc, 0x9d, 0xf7, 0xa0, 0xfc, 0x9d, 0xf7, - 0xa1, 0xfc, 0x9e, 0xf7, 0xa0, 0xfc, 0x9e, 0xf7, 0xa1, 0xfc, 0x9f, 0xf7, - 0xa0, 0xfc, 0x9f, 0xf7, 0xa1, 0xfc, 0x9f, 0xf7, 0xa0, 0xfc, 0xa0, 0xf7, - 0xa1, 0xfc, 0xa0, 0xf7, 0xa0, 0xfc, 0xa1, 0xf7, 0xa5, 0xfc, 0xa1, 0xf7, - 0xa5, 0xfc, 0xa1, 0xf7, 0xa5, 0xfc, 0xa2, 0xf7, 0xa5, 0xfc, 0xa2, 0xf7, - 0xa5, 0xfc, 0xa3, 0xf7, 0xa5, 0xfc, 0xa3, 0xf7, 0xa5, 0xfc, 0xa3, 0xf7, - 0xa5, 0xfc, 0xa4, 0xf7, 0xa5, 0xfc, 0xa4, 0xf7, 0xa5, 0xfc, 0xa5, 0xf7, - 0xa5, 0xfc, 0xa5, 0xf8, 0xa9, 0xfc, 0xa5, 0xf8, 0xa9, 0xfc, 0xa6, 0xf8, - 0xa9, 0xfc, 0xa6, 0xf8, 0xa9, 0xfc, 0xa6, 0xf8, 0xa9, 0xfc, 0xa7, 0xf8, - 0xa9, 0xfc, 0xa7, 0xf8, 0xa9, 0xfc, 0xa8, 0xf8, 0xa9, 0xfc, 0xa8, 0xf8, - 0xa9, 0xfc, 0xa8, 0xf8, 0xa9, 0xfc, 0xa9, 0xf8, 0xa9, 0xfc, 0xa9, 0xf8, - 0xa9, 0xfc, 0xaa, 0xf8, 0xaa, 0xfc, 0xaa, 0xf8, 0xad, 0xfc, 0xaa, 0xf8, - 0xad, 0xfc, 0xab, 0xf8, 0xad, 0xfc, 0xab, 0xf8, 0xad, 0xfc, 0xab, 0xf8, - 0xad, 0xfc, 0xac, 0xf8, 0xad, 0xfc, 0xac, 0xf8, 0xad, 0xfc, 0xac, 0xf8, - 0xad, 0xfc, 0xad, 0xf8, 0xad, 0xfc, 0xad, 0xf8, 0xad, 0xfc, 0xae, 0xf8, - 0xae, 0xfc, 0xae, 0xf9, 0xb1, 0xfc, 0xae, 0xf9, 0xb1, 0xfc, 0xaf, 0xf9, - 0xb1, 0xfc, 0xaf, 0xf9, 0xb1, 0xfc, 0xaf, 0xf9, 0xb1, 0xfc, 0xb0, 0xf9, - 0xb1, 0xfc, 0xb0, 0xf9, 0xb1, 0xfc, 0xb0, 0xf9, 0xb1, 0xfc, 0xb1, 0xf9, - 0xb1, 0xfc, 0xb1, 0xf9, 0xb1, 0xfc, 0xb2, 0xf9, 0xb2, 0xfc, 0xb2, 0xf9, - 0xb5, 0xfc, 0xb2, 0xf9, 0xb5, 0xfc, 0xb3, 0xf9, 0xb5, 0xfc, 0xb3, 0xf9, - 0xb5, 0xfc, 0xb3, 0xf9, 0xb5, 0xfc, 0xb4, 0xf9, 0xb5, 0xfc, 0xb4, 0xf9, - 0xb5, 0xfc, 0xb4, 0xf9, 0xb5, 0xfc, 0xb5, 0xf9, 0xb5, 0xfc, 0xb5, 0xf9, - 0xb5, 0xfc, 0xb5, 0xf9, 0xb5, 0xfc, 0xb6, 0xfa, 0xb8, 0xfc, 0xb6, 0xfa, - 0xb9, 0xfc, 0xb6, 0xfa, 0xb8, 0xfc, 0xb7, 0xfa, 0xb9, 0xfc, 0xb7, 0xfa, - 0xb8, 0xfc, 0xb7, 0xfa, 0xb9, 0xfc, 0xb8, 0xfa, 0xb8, 0xfc, 0xb8, 0xfa, - 0xb9, 0xfc, 0xb8, 0xfa, 0xb8, 0xfc, 0xb9, 0xfa, 0xb9, 0xfc, 0xb9, 0xfa, - 0xb9, 0xfc, 0xb9, 0xfa, 0xbc, 0xfc, 0xba, 0xfa, 0xbc, 0xfc, 0xba, 0xfa, - 0xbc, 0xfc, 0xba, 0xfa, 0xbc, 0xfc, 0xbb, 0xfa, 0xbc, 0xfc, 0xbb, 0xfa, - 0xbc, 0xfc, 0xbb, 0xfa, 0xbc, 0xfc, 0xbc, 0xfa, 0xbc, 0xfc, 0xbc, 0xfa, - 0xbc, 0xfc, 0xbc, 0xfa, 0xbc, 0xfc, 0xbd, 0xfa, 0xbd, 0xfc, 0xbd, 0xfa, - 0xbd, 0xfc, 0xbd, 0xfa, 0xbd, 0xfc, 0xbe, 0xfa, 0xc0, 0xfc, 0xbe, 0xfa, - 0xc0, 0xfc, 0xbe, 0xfa, 0xc0, 0xfc, 0xbf, 0xfa, 0xc0, 0xfc, 0xbf, 0xfa, - 0xc0, 0xfc, 0xbf, 0xfa, 0xc0, 0xfc, 0xc0, 0xfa, 0xc0, 0xfc, 0xc0, 0xfa, - 0xc0, 0xfc, 0xc0, 0xfa, 0xc0, 0xfc, 0xc1, 0xfa, 0xc1, 0xfc, 0xc1, 0xfa, - 0xc1, 0xfc, 0xc1, 0xfb, 0xc3, 0xfc, 0xc1, 0xfb, 0xc3, 0xfc, 0xc2, 0xfb, - 0xc3, 0xfc, 0xc2, 0xfb, 0xc3, 0xfc, 0xc2, 0xfb, 0xc3, 0xfc, 0xc3, 0xfb, - 0xc3, 0xfc, 0xc3, 0xfb, 0xc3, 0xfc, 0xc3, 0xfb, 0xc3, 0xfc, 0xc4, 0xfb, - 0xc4, 0xfc, 0xc4, 0xfb, 0xc4, 0xfc, 0xc4, 0xfb, 0xc4, 0xfc, 0xc5, 0xfb, - 0xc6, 0xfc, 0xc5, 0xfb, 0xc7, 0xfc, 0xc5, 0xfb, 0xc6, 0xfc, 0xc6, 0xfb, - 0xc7, 0xfc, 0xc6, 0xfb, 0xc6, 0xfc, 0xc6, 0xfb, 0xc7, 0xfc, 0xc6, 0xfb, - 0xc6, 0xfc, 0xc7, 0xfb, 0xc7, 0xfc, 0xc7, 0xfb, 0xc7, 0xfc, 0xc7, 0xfb, - 0xc7, 0xfc, 0xc8, 0xfb, 0xc8, 0xfc, 0xc8, 0xfb, 0xc8, 0xfc, 0xc8, 0xfb, - 0xc8, 0xfc, 0xc9, 0xfc, 0xca, 0xfc, 0xc9, 0xfc, 0xca, 0xfc, 0xc9, 0xfc, - 0xca, 0xfc, 0xc9, 0xfc, 0xca, 0xfc, 0xca, 0xfc, 0xca, 0xfc, 0xca, 0xfc, - 0xca, 0xfc, 0xca, 0xfc, 0xca, 0xfc, 0xcb, 0xfc, 0xcb, 0xfc, 0xcb, 0xfc, - 0xcb, 0xfc, 0xcb, 0xfc, 0xcb, 0xfc, 0xcc, 0xfc, 0xcc, 0xfc, 0xcc, 0xfc, - 0xcd, 0xfc, 0xcc, 0xfc, 0xcd, 0xfc, 0xcc, 0xfc, 0xcd, 0xfc, 0xcd, 0xfc, - 0xcd, 0xfc, 0xcd, 0xfc, 0xcd, 0xfc, 0xcd, 0xfc, 0xcd, 0xfc, 0xce, 0xfc, - 0xce, 0xfc, 0xce, 0xfc, 0xce, 0xfc, 0xce, 0xfc, 0xce, 0xfc, 0xce, 0xfc, - 0xce, 0xfc, 0xcf, 0xfc, 0xcf, 0xfc, 0xcf, 0xfd, 0xd0, 0xfc, 0xcf, 0xfd, - 0xd0, 0xfc, 0xd0, 0xfd, 0xd0, 0xfc, 0xd0, 0xfd, 0xd0, 0xfc, 0xd0, 0xfd, - 0xd0, 0xfc, 0xd0, 0xfd, 0xd0, 0xfc, 0xd1, 0xfd, 0xd1, 0xfc, 0xd1, 0xfd, - 0xd1, 0xfc, 0xd1, 0xfd, 0xd1, 0xfc, 0xd2, 0xfd, 0xd2, 0xfc, 0xd2, 0xfd, - 0xd2, 0xfc, 0xd2, 0xfd, 0xd2, 0xfc, 0xd2, 0xfd, 0xd2, 0xfc, 0xd3, 0xfd, - 0xd3, 0xfc, 0xd3, 0xfd, 0xd4, 0xfc, 0xd3, 0xfd, 0xd3, 0xfc, 0xd4, 0xfd, - 0xd4, 0xfc, 0xd4, 0xfd, 0xd4, 0xfc, 0xd4, 0xfd, 0xd4, 0xfc, 0xd4, 0xfd, - 0xd4, 0xfc, 0xd5, 0xfd, 0xd5, 0xfc, 0xd5, 0xfd, 0xd5, 0xfc, 0xd5, 0xfd, - 0xd5, 0xfc, 0xd6, 0xfd, 0xd6, 0xfc, 0xd6, 0xfd, 0xd6, 0xfc, 0xd6, 0xfd, - 0xd6, 0xfc, 0xd6, 0xfe, 0xd6, 0xfc, 0xd6, 0xfe, 0xd7, 0xfc, 0xd7, 0xfe, - 0xd7, 0xfd, 0xd7, 0xfe, 0xd7, 0xfd, 0xd7, 0xfe, 0xd7, 0xfd, 0xd8, 0xfe, - 0xd8, 0xfd, 0xd8, 0xfe, 0xd8, 0xfd, 0xd8, 0xfe, 0xd8, 0xfd, 0xd9, 0xfe, - 0xd9, 0xfd, 0xd9, 0xfe, 0xd9, 0xfd, 0xd9, 0xfe, 0xd9, 0xfb, 0xd9, 0xfe, - 0xd9, 0xfb, 0xda, 0xfe, 0xda, 0xfb, 0xda, 0xfe, 0xda, 0xfb, 0xda, 0xfe, - 0xda, 0xfb, 0xda, 0xfe, 0xda, 0xfb, 0xdb, 0xfe, 0xdb, 0xfb, 0xdb, 0xfe, - 0xdb, 0xfb, 0xdb, 0xfe, 0xdb, 0xfb, 0xdb, 0xfe, 0xdb, 0xfb, 0xdc, 0xfe, - 0xdc, 0xfb, 0xdc, 0xfe, 0xdc, 0xfc, 0xdc, 0xfe, 0xdc, 0xfc, 0xdd, 0xfe, - 0xdd, 0xfc, 0xdd, 0xfe, 0xdd, 0xfc, 0xdd, 0xfe, 0xdd, 0xfc, 0xdd, 0xfe, - 0xdd, 0xfc, 0xde, 0xfe, 0xde, 0xfc, 0xde, 0xfe, 0xde, 0xfc, 0xde, 0xfe, - 0xde, 0xfc, 0xde, 0xfe, 0xde, 0xfc, 0xdf, 0xfe, 0xdf, 0xfc, 0xdf, 0xfe, - 0xde, 0xfc, 0xdf, 0xfe, 0xdf, 0xfc, 0xdf, 0xfe, 0xdf, 0xfc, 0xe0, 0xfe, - 0xe0, 0xfc, 0xe0, 0xfe, 0xe0, 0xfc, 0xe0, 0xfe, 0xe0, 0xfc, 0xe1, 0xfe, - 0xe1, 0xfc, 0xe1, 0xfe, 0xe1, 0xfc, 0xe1, 0xfe, 0xe1, 0xfc, 0xe1, 0xfe, - 0xe1, 0xfc, 0xe2, 0xfe, 0xe2, 0xfc, 0xe2, 0xfe, 0xe2, 0xfc, 0xe2, 0xfe, - 0xe3, 0xfc, 0xe2, 0xfe, 0xe2, 0xfc, 0xe2, 0xfe, 0xe3, 0xfc, 0xe2, 0xfe, - 0xe3, 0xfc, 0xe2, 0xfe, 0xe3, 0xfc, 0xe4, 0xfe, 0xe3, 0xfc, 0xe5, 0xfe, - 0xe4, 0xfc, 0xe4, 0xfe, 0xe4, 0xfc, 0xe5, 0xfe, 0xe4, 0xfc, 0xe4, 0xfe, - 0xe4, 0xfc, 0xe5, 0xfe, 0xe4, 0xfc, 0xe5, 0xfe, 0xe4, 0xfc, 0xe5, 0xfe, - 0xe4, 0xfc, 0xe5, 0xfd, 0xe4, 0xfc, 0xe6, 0xfe, 0xe4, 0xfc, 0xe6, 0xfd, - 0xe4, 0xfc, 0xe6, 0xfe, 0xe4, 0xfc, 0xe6, 0xfd, 0xe4, 0xfc, 0xe7, 0xfe, - 0xe4, 0xfc, 0xe7, 0xfd, 0xe4, 0xfc, 0xe7, 0xfe, 0xe4, 0xfc, 0xe7, 0xfd, - 0xe4, 0xfc, 0xe8, 0xfe, 0xe4, 0xfc, 0xe8, 0xfd, 0xe4, 0xfc, 0xe8, 0xfe, - 0xe4, 0xfc, 0xe8, 0xfd, 0xe4, 0xfc, 0xe9, 0xfe, 0xe4, 0xfc, 0xe9, 0xfd, - 0xe4, 0xfc, 0xe9, 0xfe, 0xe4, 0xfc, 0xe9, 0xfe, 0xee, 0xfc, 0xea, 0xfe, - 0xee, 0xfc, 0xea, 0xfe, 0xee, 0xfc, 0xea, 0xfe, 0xee, 0xfc, 0xea, 0xfe, - 0xee, 0xfc, 0xeb, 0xfe, 0xee, 0xfc, 0xeb, 0xfe, 0xee, 0xfc, 0xeb, 0xfe, - 0xee, 0xfc, 0xeb, 0xfe, 0xee, 0xfc, 0xec, 0xfe, 0xee, 0xfc, 0xec, 0xfe, - 0xee, 0xfc, 0xec, 0xfe, 0xee, 0xfc, 0xec, 0xfe, 0xee, 0xfc, 0xec, 0xfe, - 0xee, 0xfc, 0xed, 0xfe, 0xee, 0xfc, 0xed, 0xfe, 0xee, 0xfc, 0xed, 0xfe, - 0xee, 0xfc, 0xed, 0xfe, 0xee, 0xfc, 0xee, 0xfe, 0xee, 0xfc, 0xee, 0xfe, - 0xee, 0xfc, 0xee, 0xfe, 0xee, 0xfc, 0xee, 0xfe, 0xee, 0xfc, 0xef, 0xfe, - 0xee, 0xfc, 0xef, 0xfe, 0xee, 0xfc, 0xef, 0xfe, 0xee, 0xfc, 0xef, 0xfe, - 0xee, 0xfc, 0xf0, 0xfe, 0xee, 0xfc, 0xf0, 0xfe, 0xee, 0xfc, 0xf0, 0xfe, - 0xee, 0xfc, 0xf0, 0xfe, 0xee, 0xfc, 0xf1, 0xfc, 0xef, 0xfc, 0xf1, 0xfe, - 0xee, 0xfc, 0xf1, 0xfc, 0xef, 0xfc, 0xf1, 0xfe, 0xee, 0xfc, 0xf2, 0xfc, - 0xef, 0xfc, 0xf2, 0xfe, 0xee, 0xfc, 0xf2, 0xfc, 0xef, 0xfc, 0xf2, 0xfe, - 0xee, 0xfc, 0xf2, 0xfc, 0xef, 0xfc, 0xf3, 0xfe, 0xee, 0xfc, 0xf3, 0xfc, - 0xef, 0xfc, 0xf3, 0xfe, 0xee, 0xfc, 0xf3, 0xfc, 0xef, 0xfc, 0xf4, 0xfe, - 0xee, 0xfc, 0xf4, 0xfc, 0xef, 0xfc, 0xf4, 0xfe, 0xee, 0xfc, 0xf4, 0xfc, - 0xef, 0xfc, 0xf5, 0xfe, 0xee, 0xfc, 0xf5, 0xfc, 0xef, 0xfc, 0xf5, 0xfe, - 0xee, 0xfc, 0xf5, 0xfc, 0xef, 0xfc, 0xf5, 0xfe, 0xee, 0xfc, 0xf6, 0xfc, - 0xef, 0xfc, 0xf6, 0xfe, 0xee, 0xfc, 0xf6, 0xfc, 0xef, 0xfc, 0xf6, 0xfe, - 0xee, 0xfc, 0xf7, 0xfc, 0xef, 0xfc, 0xf7, 0xfe, 0xee, 0xfc, 0xf7, 0xfc, - 0xef, 0xfc, 0xf7, 0xfb, 0xef, 0xfc, 0xf8, 0xfc, 0xef, 0xfc, 0xf8, 0xfb, - 0xef, 0xfc, 0xf8, 0xfc, 0xef, 0xfc, 0xf8, 0xfb, 0xef, 0xfc, 0xf8, 0xfc, - 0xef, 0xfc, 0xf9, 0xfb, 0xef, 0xfc, 0xf9, 0xfc, 0xef, 0xfc, 0xf9, 0xfb, - 0xef, 0xfc, 0xf9, 0xfc, 0xef, 0xfc, 0xfa, 0xfb, 0xef, 0xfc, 0xfa, 0xfc, - 0xef, 0xfc, 0xfa, 0xfb, 0xef, 0xfc, 0xfa, 0xfc, 0xef, 0xfc, 0xfa, 0xfb, - 0xef, 0xfc, 0xfb, 0xfc, 0xef, 0xfc, 0xfb, 0xfb, 0xef, 0xfc, 0xfb, 0xfc, - 0xef, 0xfc, 0xfb, 0xfb, 0xef, 0xfc, 0xfc, 0xfc, 0xef, 0xfc, 0xfc, 0xfb, - 0xef, 0xfc, 0xfc, 0xfc, 0xef, 0xfc, 0xfc, 0xfb, 0xef, 0xfc, 0xfc, 0xfc, - 0xef, 0xfc, 0xfd, 0xfb, 0xef, 0xfc, 0xfd, 0xfc, 0xef, 0xfc, 0xfd, 0xfb, - 0xef, 0xfc, 0xfd, 0xfc, 0xef, 0xfc, 0xfe, 0xfb, 0xef, 0xfc, 0xfe, 0xfc, - 0xef, 0xfc, 0xfe, 0xfb, 0xef, 0xfc, 0xfe, 0xfc, 0xef, 0xfc, 0xfe, 0xfb, - 0xef, 0xfc, 0xff, 0xfc, 0xef, 0xfc, 0xff, 0xfb, 0xef, 0xfc, 0x03, 0xf4, - 0x83, 0xfc, 0x0a, 0xf4, 0x83, 0xfc, 0x0f, 0xf4, 0x83, 0xfc, 0x14, 0xf4, - 0x83, 0xfc, 0x17, 0xf4, 0x83, 0xfc, 0x1b, 0xf4, 0x83, 0xfc, 0x1e, 0xf4, - 0x83, 0xfc, 0x20, 0xf4, 0x83, 0xfc, 0x23, 0xf4, 0x83, 0xfc, 0x25, 0xf4, - 0x83, 0xfc, 0x27, 0xf4, 0x83, 0xfc, 0x29, 0xf4, 0x83, 0xfc, 0x2b, 0xf4, - 0x83, 0xfc, 0x2d, 0xf4, 0x83, 0xfc, 0x2f, 0xf4, 0x83, 0xfc, 0x31, 0xf4, - 0x83, 0xfc, 0x32, 0xf4, 0x83, 0xfc, 0x34, 0xf4, 0x83, 0xfc, 0x35, 0xf4, - 0x83, 0xfc, 0x37, 0xf4, 0x83, 0xfc, 0x38, 0xf4, 0x83, 0xfc, 0x3a, 0xf4, - 0x83, 0xfc, 0x3b, 0xf4, 0x83, 0xfc, 0x3c, 0xf4, 0x83, 0xfc, 0x3e, 0xf4, - 0x83, 0xfc, 0x3f, 0xf4, 0x83, 0xfc, 0x40, 0xf4, 0x83, 0xfc, 0x42, 0xf4, - 0x83, 0xfc, 0x43, 0xf4, 0x83, 0xfc, 0x44, 0xf4, 0x83, 0xfc, 0x45, 0xf4, - 0x83, 0xfc, 0x46, 0xf4, 0x83, 0xfc, 0x47, 0xf4, 0x83, 0xfc, 0x48, 0xf4, - 0x83, 0xfc, 0x49, 0xf4, 0x83, 0xfc, 0x4a, 0xf4, 0x83, 0xfc, 0x4b, 0xf4, - 0x83, 0xfc, 0x4c, 0xf4, 0x83, 0xfc, 0x4d, 0xf4, 0x83, 0xfc, 0x4e, 0xf4, - 0x83, 0xfc, 0x4f, 0xf4, 0x83, 0xfc, 0x50, 0xf4, 0x83, 0xfc, 0x51, 0xf4, - 0x83, 0xfc, 0x52, 0xf4, 0x83, 0xfc, 0x53, 0xf4, 0x83, 0xfc, 0x54, 0xf4, - 0x83, 0xfc, 0x55, 0xf4, 0x83, 0xfc, 0x56, 0xf4, 0x83, 0xfc, 0x57, 0xf4, - 0x83, 0xfc, 0x58, 0xf4, 0x83, 0xfc, 0x58, 0xf4, 0x83, 0xfc, 0x59, 0xf4, - 0x83, 0xfc, 0x5a, 0xf4, 0x83, 0xfc, 0x5b, 0xf4, 0x83, 0xfc, 0x5c, 0xf4, - 0x83, 0xfc, 0x5d, 0xf4, 0x83, 0xfc, 0x5d, 0xf4, 0x83, 0xfc, 0x5e, 0xf4, - 0x83, 0xfc, 0x5f, 0xf4, 0x83, 0xfc, 0x60, 0xf4, 0x83, 0xfc, 0x60, 0xf4, - 0x83, 0xfc, 0x61, 0xf4, 0x83, 0xfc, 0x62, 0xf4, 0x83, 0xfc, 0x63, 0xf4, - 0x83, 0xfc, 0x63, 0xf4, 0x83, 0xfc, 0x64, 0xf4, 0x83, 0xfc, 0x65, 0xf4, - 0x83, 0xfc, 0x66, 0xf4, 0x83, 0xfc, 0x66, 0xf4, 0x83, 0xfc, 0x67, 0xf4, - 0x83, 0xfc, 0x68, 0xf4, 0x83, 0xfc, 0x68, 0xf4, 0x83, 0xfc, 0x69, 0xf4, - 0x83, 0xfc, 0x6a, 0xf4, 0x83, 0xfc, 0x6a, 0xf4, 0x83, 0xfc, 0x6b, 0xf4, - 0x83, 0xfc, 0x6c, 0xf4, 0x83, 0xfc, 0x6c, 0xf4, 0x83, 0xfc, 0x6d, 0xf4, - 0x83, 0xfc, 0x6e, 0xf4, 0x83, 0xfc, 0x6e, 0xf4, 0x83, 0xfc, 0x6f, 0xf4, - 0x83, 0xfc, 0x70, 0xf4, 0x83, 0xfc, 0x70, 0xf4, 0x83, 0xfc, 0x71, 0xf4, - 0x83, 0xfc, 0x72, 0xf4, 0x83, 0xfc, 0x72, 0xf4, 0x83, 0xfc, 0x73, 0xf4, - 0x83, 0xfc, 0x73, 0xf4, 0x83, 0xfc, 0x74, 0xf4, 0x83, 0xfc, 0x75, 0xf4, - 0x83, 0xfc, 0x75, 0xf4, 0x83, 0xfc, 0x76, 0xf4, 0x83, 0xfc, 0x76, 0xf4, - 0x83, 0xfc, 0x77, 0xf4, 0x83, 0xfc, 0x78, 0xf4, 0x83, 0xfc, 0x78, 0xf4, - 0x83, 0xfc, 0x79, 0xf4, 0x83, 0xfc, 0x79, 0xf4, 0x83, 0xfc, 0x7a, 0xf4, - 0x83, 0xfc, 0x7a, 0xf4, 0x83, 0xfc, 0x7b, 0xf4, 0x83, 0xfc, 0x7c, 0xf4, - 0x83, 0xfc, 0x7c, 0xf4, 0x83, 0xfc, 0x7d, 0xf4, 0x83, 0xfc, 0x7d, 0xf4, - 0x83, 0xfc, 0x7e, 0xf4, 0x83, 0xfc, 0x7e, 0xf4, 0x83, 0xfc, 0x7f, 0xf4, - 0x85, 0xfc, 0x7f, 0xf4, 0x83, 0xfc, 0x80, 0xf4, 0x85, 0xfc, 0x81, 0xf4, - 0x86, 0xfc, 0x81, 0xf4, 0x85, 0xfc, 0x82, 0xf4, 0x86, 0xfc, 0x82, 0xf4, - 0x85, 0xfc, 0x83, 0xf4, 0x86, 0xfc, 0x83, 0xf4, 0x85, 0xfc, 0x84, 0xf4, - 0x86, 0xfc, 0x84, 0xf4, 0x85, 0xfc, 0x85, 0xf5, 0x8b, 0xfc, 0x85, 0xf5, - 0x8b, 0xfc, 0x86, 0xf5, 0x8b, 0xfc, 0x86, 0xf5, 0x8b, 0xfc, 0x87, 0xf5, - 0x8b, 0xfc, 0x87, 0xf5, 0x8b, 0xfc, 0x88, 0xf5, 0x8b, 0xfc, 0x88, 0xf5, - 0x8b, 0xfc, 0x89, 0xf5, 0x8b, 0xfc, 0x89, 0xf5, 0x8b, 0xfc, 0x8a, 0xf5, - 0x8b, 0xfc, 0x8a, 0xf5, 0x90, 0xfc, 0x8b, 0xf5, 0x90, 0xfc, 0x8b, 0xf5, - 0x90, 0xfc, 0x8c, 0xf5, 0x90, 0xfc, 0x8c, 0xf5, 0x90, 0xfc, 0x8d, 0xf5, - 0x90, 0xfc, 0x8d, 0xf5, 0x90, 0xfc, 0x8e, 0xf5, 0x90, 0xfc, 0x8e, 0xf5, - 0x90, 0xfc, 0x8e, 0xf5, 0x90, 0xfc, 0x8f, 0xf5, 0x90, 0xfc, 0x8f, 0xf6, - 0x95, 0xfc, 0x90, 0xf6, 0x95, 0xfc, 0x90, 0xf6, 0x95, 0xfc, 0x91, 0xf6, - 0x95, 0xfc, 0x91, 0xf6, 0x95, 0xfc, 0x92, 0xf6, 0x95, 0xfc, 0x92, 0xf6, - 0x95, 0xfc, 0x93, 0xf6, 0x97, 0xfc, 0x93, 0xf6, 0x95, 0xfc, 0x94, 0xf6, - 0x97, 0xfc, 0x94, 0xf6, 0x98, 0xfc, 0x94, 0xf6, 0x97, 0xfc, 0x95, 0xf6, - 0x98, 0xfc, 0x95, 0xf6, 0x97, 0xfc, 0x96, 0xf6, 0x98, 0xfc, 0x96, 0xf6, - 0x9a, 0xfc, 0x97, 0xf6, 0x9a, 0xfc, 0x97, 0xf6, 0x9a, 0xfc, 0x98, 0xf6, - 0x9a, 0xfc, 0x98, 0xf6, 0x9a, 0xfc, 0x98, 0xf6, 0x9a, 0xfc, 0x99, 0xf6, - 0x9a, 0xfc, 0x99, 0xf6, 0x9a, 0xfc, 0x9a, 0xf6, 0x9a, 0xfc, 0x9a, 0xf7, - 0x9e, 0xfc, 0x9a, 0xf7, 0x9f, 0xfc, 0x9b, 0xf7, 0x9e, 0xfc, 0x9b, 0xf7, - 0x9f, 0xfc, 0x9c, 0xf7, 0x9e, 0xfc, 0x9c, 0xf7, 0x9f, 0xfc, 0x9d, 0xf7, - 0x9e, 0xfc, 0x9d, 0xf7, 0x9f, 0xfc, 0x9d, 0xf7, 0x9e, 0xfc, 0x9e, 0xf7, - 0x9f, 0xfc, 0x9e, 0xf7, 0x9e, 0xfc, 0x9f, 0xf7, 0xa3, 0xfc, 0x9f, 0xf7, - 0xa3, 0xfc, 0x9f, 0xf7, 0xa3, 0xfc, 0xa0, 0xf7, 0xa3, 0xfc, 0xa0, 0xf7, - 0xa3, 0xfc, 0xa1, 0xf7, 0xa3, 0xfc, 0xa1, 0xf7, 0xa3, 0xfc, 0xa1, 0xf7, - 0xa3, 0xfc, 0xa2, 0xf7, 0xa3, 0xfc, 0xa2, 0xf7, 0xa3, 0xfc, 0xa3, 0xf7, - 0xa3, 0xfc, 0xa3, 0xf8, 0xa7, 0xfc, 0xa3, 0xf8, 0xa7, 0xfc, 0xa4, 0xf8, - 0xa7, 0xfc, 0xa4, 0xf8, 0xa7, 0xfc, 0xa5, 0xf8, 0xa7, 0xfc, 0xa5, 0xf8, - 0xa7, 0xfc, 0xa5, 0xf8, 0xa7, 0xfc, 0xa6, 0xf8, 0xa9, 0xfc, 0xa6, 0xf8, - 0xa7, 0xfc, 0xa6, 0xf8, 0xa9, 0xfc, 0xa7, 0xf8, 0xa9, 0xfc, 0xa7, 0xf8, - 0xa9, 0xfc, 0xa8, 0xf8, 0xa9, 0xfc, 0xa8, 0xf8, 0xa9, 0xfc, 0xa8, 0xf8, - 0xa9, 0xfc, 0xa9, 0xf8, 0xab, 0xfc, 0xa9, 0xf8, 0xab, 0xfc, 0xaa, 0xf8, - 0xab, 0xfc, 0xaa, 0xf8, 0xab, 0xfc, 0xaa, 0xf8, 0xab, 0xfc, 0xab, 0xf8, - 0xab, 0xfc, 0xab, 0xf8, 0xab, 0xfc, 0xab, 0xf8, 0xab, 0xfc, 0xac, 0xf8, - 0xac, 0xfc, 0xac, 0xf8, 0xaf, 0xfc, 0xac, 0xf8, 0xaf, 0xfc, 0xad, 0xf8, - 0xaf, 0xfc, 0xad, 0xf8, 0xaf, 0xfc, 0xae, 0xf8, 0xaf, 0xfc, 0xae, 0xf8, - 0xaf, 0xfc, 0xae, 0xf8, 0xaf, 0xfc, 0xaf, 0xf8, 0xaf, 0xfc, 0xaf, 0xf8, - 0xaf, 0xfc, 0xaf, 0xf8, 0xaf, 0xfc, 0xb0, 0xf8, 0xb0, 0xfc, 0xb0, 0xf9, - 0xb3, 0xfc, 0xb0, 0xf9, 0xb3, 0xfc, 0xb1, 0xf9, 0xb3, 0xfc, 0xb1, 0xf9, - 0xb3, 0xfc, 0xb2, 0xf9, 0xb3, 0xfc, 0xb2, 0xf9, 0xb3, 0xfc, 0xb2, 0xf9, - 0xb3, 0xfc, 0xb3, 0xf9, 0xb3, 0xfc, 0xb3, 0xf9, 0xb3, 0xfc, 0xb3, 0xf9, - 0xb3, 0xfc, 0xb4, 0xf9, 0xb4, 0xfc, 0xb4, 0xf9, 0xb7, 0xfc, 0xb4, 0xf9, - 0xb7, 0xfc, 0xb5, 0xf9, 0xb7, 0xfc, 0xb5, 0xf9, 0xb7, 0xfc, 0xb5, 0xf9, - 0xb7, 0xfc, 0xb6, 0xf9, 0xb7, 0xfc, 0xb6, 0xf9, 0xb7, 0xfc, 0xb6, 0xfa, - 0xb8, 0xfc, 0xb7, 0xfa, 0xb9, 0xfc, 0xb7, 0xfa, 0xb8, 0xfc, 0xb7, 0xfa, - 0xb9, 0xfc, 0xb8, 0xfa, 0xb8, 0xfc, 0xb8, 0xfa, 0xb9, 0xfc, 0xb8, 0xfa, - 0xba, 0xfc, 0xb9, 0xfa, 0xbb, 0xfc, 0xb9, 0xfa, 0xba, 0xfc, 0xb9, 0xfa, - 0xbb, 0xfc, 0xba, 0xfa, 0xba, 0xfc, 0xba, 0xfa, 0xbb, 0xfc, 0xba, 0xfa, - 0xba, 0xfc, 0xbb, 0xfa, 0xbb, 0xfc, 0xbb, 0xfa, 0xbb, 0xfc, 0xbb, 0xfa, - 0xbe, 0xfc, 0xbc, 0xfa, 0xbe, 0xfc, 0xbc, 0xfa, 0xbe, 0xfc, 0xbc, 0xfa, - 0xbe, 0xfc, 0xbd, 0xfa, 0xbe, 0xfc, 0xbd, 0xfa, 0xbe, 0xfc, 0xbd, 0xfa, - 0xbe, 0xfc, 0xbe, 0xfa, 0xbe, 0xfc, 0xbe, 0xfa, 0xbe, 0xfc, 0xbe, 0xfa, - 0xbe, 0xfc, 0xbf, 0xfa, 0xbf, 0xfc, 0xbf, 0xfa, 0xbf, 0xfc, 0xbf, 0xfa, - 0xbf, 0xfc, 0xc0, 0xfb, 0xc1, 0xfc, 0xc0, 0xfb, 0xc2, 0xfc, 0xc0, 0xfb, - 0xc1, 0xfc, 0xc1, 0xfb, 0xc2, 0xfc, 0xc1, 0xfb, 0xc1, 0xfc, 0xc1, 0xfb, - 0xc2, 0xfc, 0xc1, 0xfb, 0xc1, 0xfc, 0xc2, 0xfb, 0xc2, 0xfc, 0xc2, 0xfb, - 0xc2, 0xfc, 0xc2, 0xfb, 0xc2, 0xfc, 0xc3, 0xfb, 0xc3, 0xfc, 0xc3, 0xfb, - 0xc5, 0xfc, 0xc3, 0xfb, 0xc5, 0xfc, 0xc4, 0xfb, 0xc5, 0xfc, 0xc4, 0xfb, - 0xc5, 0xfc, 0xc4, 0xfb, 0xc5, 0xfc, 0xc5, 0xfb, 0xc5, 0xfc, 0xc5, 0xfb, - 0xc5, 0xfc, 0xc5, 0xfb, 0xc6, 0xfc, 0xc6, 0xfb, 0xc7, 0xfc, 0xc6, 0xfb, - 0xc6, 0xfc, 0xc6, 0xfb, 0xc7, 0xfc, 0xc6, 0xfb, 0xc6, 0xfc, 0xc7, 0xfb, - 0xc7, 0xfc, 0xc7, 0xfc, 0xc8, 0xfc, 0xc7, 0xfc, 0xc9, 0xfc, 0xc8, 0xfc, - 0xc8, 0xfc, 0xc8, 0xfc, 0xc9, 0xfc, 0xc8, 0xfc, 0xc8, 0xfc, 0xc9, 0xfc, - 0xc9, 0xfc, 0xc9, 0xfc, 0xc9, 0xfc, 0xc9, 0xfc, 0xc9, 0xfc, 0xc9, 0xfc, - 0xc9, 0xfc, 0xca, 0xfc, 0xca, 0xfc, 0xca, 0xfc, 0xca, 0xfc, 0xca, 0xfc, - 0xcc, 0xfc, 0xcb, 0xfc, 0xcc, 0xfc, 0xcb, 0xfc, 0xcc, 0xfc, 0xcb, 0xfc, - 0xcc, 0xfc, 0xcc, 0xfc, 0xcc, 0xfc, 0xcc, 0xfc, 0xcc, 0xfc, 0xcc, 0xfc, - 0xcc, 0xfc, 0xcc, 0xfc, 0xcc, 0xfc, 0xcd, 0xfc, 0xcd, 0xfc, 0xcd, 0xfc, - 0xcd, 0xfc, 0xcd, 0xfc, 0xcd, 0xfc, 0xce, 0xfc, 0xcf, 0xfc, 0xce, 0xfc, - 0xcf, 0xfc, 0xce, 0xfc, 0xcf, 0xfc, 0xce, 0xfc, 0xcf, 0xfc, 0xcf, 0xfc, - 0xcf, 0xfc, 0xcf, 0xfc, 0xcf, 0xfc, 0xcf, 0xfc, 0xcf, 0xfc, 0xd0, 0xfc, - 0xd0, 0xfc, 0xd0, 0xfc, 0xd0, 0xfc, 0xd0, 0xfc, 0xd0, 0xfc, 0xd0, 0xfc, - 0xd0, 0xfc, 0xd1, 0xfd, 0xd2, 0xfc, 0xd1, 0xfd, 0xd2, 0xfc, 0xd1, 0xfd, - 0xd2, 0xfc, 0xd2, 0xfd, 0xd2, 0xfc, 0xd2, 0xfd, 0xd2, 0xfc, 0xd2, 0xfd, - 0xd2, 0xfc, 0xd2, 0xfd, 0xd2, 0xfc, 0xd3, 0xfd, 0xd3, 0xfc, 0xd3, 0xfd, - 0xd4, 0xfc, 0xd3, 0xfd, 0xd3, 0xfc, 0xd4, 0xfd, 0xd4, 0xfc, 0xd4, 0xfd, - 0xd4, 0xfc, 0xd4, 0xfd, 0xd4, 0xfc, 0xd4, 0xfd, 0xd5, 0xfc, 0xd5, 0xfd, - 0xd5, 0xfc, 0xd5, 0xfd, 0xd5, 0xfc, 0xd5, 0xfd, 0xd5, 0xfc, 0xd6, 0xfd, - 0xd6, 0xfc, 0xd6, 0xfd, 0xd6, 0xfc, 0xd6, 0xfd, 0xd6, 0xfc, 0xd6, 0xfd, - 0xd6, 0xfc, 0xd7, 0xfd, 0xd7, 0xfc, 0xd7, 0xfd, 0xd7, 0xfc, 0xd7, 0xfd, - 0xd7, 0xfc, 0xd7, 0xfd, 0xd7, 0xfc, 0xd8, 0xfd, 0xd8, 0xfc, 0xd7, 0xfe, - 0xd8, 0xfc, 0xd8, 0xfe, 0xd8, 0xfc, 0xd9, 0xfe, 0xd9, 0xfd, 0xd9, 0xfe, - 0xd9, 0xfd, 0xd9, 0xfe, 0xd9, 0xfd, 0xd9, 0xfe, 0xd9, 0xfd, 0xda, 0xfe, - 0xda, 0xfd, 0xda, 0xfe, 0xda, 0xfd, 0xda, 0xfe, 0xda, 0xfd, 0xda, 0xfe, - 0xda, 0xfb, 0xdb, 0xfe, 0xdb, 0xfb, 0xdb, 0xfe, 0xdb, 0xfb, 0xdb, 0xfe, - 0xdb, 0xfb, 0xdb, 0xfe, 0xdb, 0xfb, 0xdc, 0xfe, 0xdc, 0xfb, 0xdc, 0xfe, - 0xdc, 0xfb, 0xdc, 0xfe, 0xdc, 0xfb, 0xdd, 0xfe, 0xdd, 0xfb, 0xdd, 0xfe, - 0xdd, 0xfb, 0xdd, 0xfe, 0xdd, 0xfb, 0xdd, 0xfe, 0xdd, 0xfc, 0xde, 0xfe, - 0xde, 0xfc, 0xde, 0xfe, 0xde, 0xfc, 0xde, 0xfe, 0xde, 0xfc, 0xde, 0xfe, - 0xde, 0xfc, 0xdf, 0xfe, 0xdf, 0xfc, 0xdf, 0xfe, 0xdf, 0xfc, 0xdf, 0xfe, - 0xdf, 0xfc, 0xdf, 0xfe, 0xdf, 0xfc, 0xe0, 0xfe, 0xe0, 0xfc, 0xe0, 0xfe, - 0xe0, 0xfc, 0xe0, 0xfe, 0xe0, 0xfc, 0xe1, 0xfe, 0xe0, 0xfc, 0xe1, 0xff, - 0xe1, 0xfc, 0xe1, 0xff, 0xe1, 0xfc, 0xe1, 0xff, 0xe1, 0xfc, 0xe2, 0xfe, - 0xe2, 0xfc, 0xe2, 0xfe, 0xe2, 0xfc, 0xe2, 0xfe, 0xe2, 0xfc, 0xe2, 0xfe, - 0xe2, 0xfc, 0xe2, 0xfe, 0xe3, 0xfc, 0xe2, 0xfe, 0xe3, 0xfc, 0xe2, 0xfe, - 0xe3, 0xfc, 0xe4, 0xfe, 0xe3, 0xfc, 0xe4, 0xfe, 0xe4, 0xfd, 0xe4, 0xfe, - 0xe4, 0xfc, 0xe5, 0xfe, 0xe4, 0xfc, 0xe4, 0xfe, 0xe4, 0xfc, 0xe5, 0xfe, - 0xe4, 0xfc, 0xe5, 0xfe, 0xe4, 0xfc, 0xe5, 0xfe, 0xe4, 0xfc, 0xe5, 0xfe, - 0xe4, 0xfc, 0xe6, 0xfe, 0xe4, 0xfc, 0xe6, 0xfe, 0xe4, 0xfc, 0xe6, 0xfe, - 0xe4, 0xfc, 0xe6, 0xfc, 0xe4, 0xfc, 0xe7, 0xfe, 0xe4, 0xfc, 0xe7, 0xfc, - 0xe4, 0xfc, 0xe7, 0xfe, 0xe4, 0xfc, 0xe7, 0xfc, 0xe4, 0xfc, 0xe8, 0xfe, - 0xe4, 0xfc, 0xe8, 0xfc, 0xe4, 0xfc, 0xe8, 0xfe, 0xe4, 0xfc, 0xe8, 0xfc, - 0xe4, 0xfc, 0xe9, 0xfe, 0xe4, 0xfc, 0xe9, 0xfc, 0xe4, 0xfc, 0xe9, 0xfe, - 0xe4, 0xfc, 0xe9, 0xfe, 0xee, 0xfc, 0xea, 0xfe, 0xee, 0xfc, 0xea, 0xfe, - 0xee, 0xfc, 0xea, 0xfe, 0xee, 0xfc, 0xea, 0xfe, 0xee, 0xfc, 0xeb, 0xfe, - 0xee, 0xfc, 0xeb, 0xfe, 0xee, 0xfc, 0xeb, 0xfe, 0xee, 0xfc, 0xeb, 0xfe, - 0xee, 0xfc, 0xec, 0xfe, 0xee, 0xfc, 0xec, 0xfe, 0xee, 0xfc, 0xec, 0xfe, - 0xee, 0xfc, 0xec, 0xfe, 0xee, 0xfc, 0xec, 0xfe, 0xee, 0xfc, 0xed, 0xfe, - 0xee, 0xfc, 0xed, 0xfe, 0xee, 0xfc, 0xed, 0xfe, 0xee, 0xfc, 0xed, 0xfe, - 0xee, 0xfc, 0xee, 0xfe, 0xee, 0xfc, 0xee, 0xfe, 0xee, 0xfb, 0xee, 0xfe, - 0xee, 0xfc, 0xee, 0xfd, 0xee, 0xfc, 0xef, 0xfe, 0xee, 0xfc, 0xef, 0xfd, - 0xee, 0xfc, 0xef, 0xfe, 0xee, 0xfc, 0xef, 0xfd, 0xee, 0xfc, 0xf0, 0xfe, - 0xee, 0xfc, 0xf0, 0xfd, 0xee, 0xfc, 0xf0, 0xfe, 0xee, 0xfc, 0xf0, 0xfd, - 0xee, 0xfc, 0xf1, 0xfe, 0xee, 0xfc, 0xf1, 0xfd, 0xee, 0xfc, 0xf1, 0xfe, - 0xee, 0xfc, 0xf1, 0xfd, 0xee, 0xfc, 0xf2, 0xfe, 0xee, 0xfc, 0xf2, 0xfd, - 0xee, 0xfc, 0xf2, 0xfe, 0xee, 0xfc, 0xf2, 0xfd, 0xee, 0xfc, 0xf2, 0xfc, - 0xef, 0xfc, 0xf3, 0xfd, 0xee, 0xfc, 0xf3, 0xfc, 0xef, 0xfc, 0xf3, 0xfd, - 0xee, 0xfc, 0xf3, 0xfc, 0xef, 0xfc, 0xf4, 0xfd, 0xee, 0xfc, 0xf4, 0xfc, - 0xef, 0xfc, 0xf4, 0xfd, 0xee, 0xfc, 0xf4, 0xfc, 0xef, 0xfc, 0xf5, 0xfd, - 0xee, 0xfc, 0xf5, 0xfc, 0xef, 0xfc, 0xf5, 0xfd, 0xee, 0xfc, 0xf5, 0xfc, - 0xef, 0xfc, 0xf5, 0xfd, 0xee, 0xfc, 0xf6, 0xfc, 0xef, 0xfc, 0xf6, 0xfd, - 0xee, 0xfc, 0xf6, 0xfc, 0xef, 0xfc, 0xf6, 0xfd, 0xee, 0xfc, 0xf7, 0xfc, - 0xef, 0xfc, 0xf7, 0xfd, 0xee, 0xfc, 0xf7, 0xfc, 0xef, 0xfc, 0xf7, 0xfd, - 0xee, 0xfc, 0xf8, 0xfc, 0xef, 0xfc, 0xf8, 0xfd, 0xee, 0xfc, 0xf8, 0xfc, - 0xef, 0xfc, 0xf8, 0xfd, 0xee, 0xfc, 0xf8, 0xfc, 0xef, 0xfc, 0xf9, 0xfd, - 0xee, 0xfc, 0xf9, 0xfc, 0xef, 0xfc, 0xf9, 0xfd, 0xee, 0xfc, 0xf9, 0xfc, - 0xef, 0xfc, 0xfa, 0xfd, 0xee, 0xfc, 0xfa, 0xfc, 0xef, 0xfc, 0xfa, 0xfb, - 0xef, 0xfc, 0xfa, 0xfc, 0xef, 0xfc, 0xfa, 0xfb, 0xef, 0xfc, 0xfb, 0xfc, - 0xef, 0xfc, 0xfb, 0xfb, 0xef, 0xfc, 0xfb, 0xfc, 0xef, 0xfc, 0xfb, 0xfb, - 0xef, 0xfc, 0xfc, 0xfc, 0xef, 0xfc, 0xfc, 0xfb, 0xef, 0xfc, 0xfc, 0xfc, - 0xef, 0xfc, 0xfc, 0xfb, 0xef, 0xfc, 0xfc, 0xfc, 0xef, 0xfc, 0xfd, 0xfb, - 0xef, 0xfc, 0xfd, 0xfc, 0xef, 0xfc, 0xfd, 0xfb, 0xef, 0xfc, 0xfd, 0xfc, - 0xef, 0xfc, 0xfe, 0xfb, 0xef, 0xfc, 0xfe, 0xfc, 0xef, 0xfc, 0xfe, 0xfb, - 0xef, 0xfc, 0xfe, 0xfc, 0xef, 0xfc, 0xfe, 0xfb, 0xef, 0xfc, 0xff, 0xfc, - 0xef, 0xfc, 0xff, 0xfb, 0xef, 0xfc, 0x03, 0xf4, 0x83, 0xfd, 0x0a, 0xf4, - 0x83, 0xfd, 0x0f, 0xf4, 0x83, 0xfd, 0x14, 0xf4, 0x83, 0xfd, 0x17, 0xf4, - 0x83, 0xfd, 0x1b, 0xf4, 0x83, 0xfd, 0x1e, 0xf4, 0x83, 0xfd, 0x20, 0xf4, - 0x83, 0xfd, 0x23, 0xf4, 0x83, 0xfd, 0x25, 0xf4, 0x83, 0xfd, 0x27, 0xf4, - 0x83, 0xfd, 0x29, 0xf4, 0x83, 0xfd, 0x2b, 0xf4, 0x83, 0xfd, 0x2d, 0xf4, - 0x83, 0xfd, 0x2f, 0xf4, 0x83, 0xfd, 0x31, 0xf4, 0x83, 0xfd, 0x32, 0xf4, - 0x83, 0xfd, 0x34, 0xf4, 0x83, 0xfd, 0x35, 0xf4, 0x83, 0xfd, 0x37, 0xf4, - 0x83, 0xfd, 0x38, 0xf4, 0x83, 0xfd, 0x3a, 0xf4, 0x83, 0xfd, 0x3b, 0xf4, - 0x83, 0xfd, 0x3c, 0xf4, 0x83, 0xfd, 0x3e, 0xf4, 0x83, 0xfd, 0x3f, 0xf4, - 0x83, 0xfd, 0x40, 0xf4, 0x83, 0xfd, 0x42, 0xf4, 0x83, 0xfd, 0x43, 0xf4, - 0x83, 0xfd, 0x44, 0xf4, 0x83, 0xfd, 0x45, 0xf4, 0x83, 0xfd, 0x46, 0xf4, - 0x83, 0xfd, 0x47, 0xf4, 0x83, 0xfd, 0x48, 0xf4, 0x83, 0xfd, 0x49, 0xf4, - 0x83, 0xfd, 0x4a, 0xf4, 0x83, 0xfd, 0x4b, 0xf4, 0x83, 0xfd, 0x4c, 0xf4, - 0x83, 0xfd, 0x4d, 0xf4, 0x83, 0xfd, 0x4e, 0xf4, 0x83, 0xfd, 0x4f, 0xf4, - 0x83, 0xfd, 0x50, 0xf4, 0x83, 0xfd, 0x51, 0xf4, 0x83, 0xfd, 0x52, 0xf4, - 0x83, 0xfd, 0x53, 0xf4, 0x83, 0xfd, 0x54, 0xf4, 0x83, 0xfd, 0x55, 0xf4, - 0x83, 0xfd, 0x56, 0xf4, 0x83, 0xfd, 0x57, 0xf4, 0x83, 0xfd, 0x58, 0xf4, - 0x83, 0xfd, 0x58, 0xf4, 0x83, 0xfd, 0x59, 0xf4, 0x83, 0xfd, 0x5a, 0xf4, - 0x83, 0xfd, 0x5b, 0xf4, 0x83, 0xfd, 0x5c, 0xf4, 0x83, 0xfd, 0x5d, 0xf4, - 0x83, 0xfd, 0x5d, 0xf4, 0x83, 0xfd, 0x5e, 0xf4, 0x83, 0xfd, 0x5f, 0xf4, - 0x83, 0xfd, 0x60, 0xf4, 0x83, 0xfd, 0x60, 0xf4, 0x83, 0xfd, 0x61, 0xf4, - 0x83, 0xfd, 0x62, 0xf4, 0x83, 0xfd, 0x63, 0xf4, 0x83, 0xfd, 0x63, 0xf4, - 0x83, 0xfd, 0x64, 0xf4, 0x83, 0xfd, 0x65, 0xf4, 0x83, 0xfd, 0x66, 0xf4, - 0x83, 0xfd, 0x66, 0xf4, 0x83, 0xfd, 0x67, 0xf4, 0x83, 0xfd, 0x68, 0xf4, - 0x83, 0xfd, 0x68, 0xf4, 0x83, 0xfd, 0x69, 0xf4, 0x83, 0xfd, 0x6a, 0xf4, - 0x83, 0xfd, 0x6a, 0xf4, 0x83, 0xfd, 0x6b, 0xf4, 0x83, 0xfd, 0x6c, 0xf4, - 0x83, 0xfd, 0x6c, 0xf4, 0x83, 0xfd, 0x6d, 0xf4, 0x83, 0xfd, 0x6e, 0xf4, - 0x83, 0xfd, 0x6e, 0xf4, 0x83, 0xfd, 0x6f, 0xf4, 0x83, 0xfd, 0x70, 0xf4, - 0x83, 0xfd, 0x70, 0xf4, 0x83, 0xfd, 0x71, 0xf4, 0x83, 0xfd, 0x72, 0xf4, - 0x83, 0xfd, 0x72, 0xf4, 0x83, 0xfd, 0x73, 0xf4, 0x83, 0xfd, 0x73, 0xf4, - 0x83, 0xfd, 0x74, 0xf4, 0x83, 0xfd, 0x75, 0xf4, 0x83, 0xfd, 0x75, 0xf4, - 0x83, 0xfd, 0x76, 0xf4, 0x83, 0xfd, 0x76, 0xf4, 0x83, 0xfd, 0x77, 0xf4, - 0x83, 0xfd, 0x78, 0xf4, 0x83, 0xfd, 0x78, 0xf4, 0x83, 0xfd, 0x79, 0xf4, - 0x83, 0xfd, 0x79, 0xf4, 0x83, 0xfd, 0x7a, 0xf4, 0x83, 0xfd, 0x7a, 0xf4, - 0x83, 0xfd, 0x7b, 0xf4, 0x83, 0xfd, 0x7c, 0xf4, 0x83, 0xfd, 0x7c, 0xf4, - 0x83, 0xfd, 0x7d, 0xf4, 0x83, 0xfd, 0x7d, 0xf4, 0x83, 0xfd, 0x7e, 0xf4, - 0x83, 0xfd, 0x7e, 0xf4, 0x83, 0xfd, 0x7f, 0xf4, 0x83, 0xfd, 0x7f, 0xf4, - 0x83, 0xfd, 0x80, 0xf4, 0x83, 0xfd, 0x81, 0xf4, 0x83, 0xfd, 0x81, 0xf4, - 0x83, 0xfd, 0x82, 0xf5, 0x88, 0xfd, 0x82, 0xf5, 0x88, 0xfd, 0x83, 0xf5, - 0x88, 0xfd, 0x83, 0xf5, 0x88, 0xfd, 0x84, 0xf5, 0x88, 0xfd, 0x84, 0xf5, - 0x88, 0xfd, 0x85, 0xf5, 0x88, 0xfd, 0x85, 0xf5, 0x88, 0xfd, 0x86, 0xf5, - 0x88, 0xfd, 0x86, 0xf5, 0x88, 0xfd, 0x87, 0xf5, 0x88, 0xfd, 0x87, 0xf5, - 0x8d, 0xfd, 0x88, 0xf5, 0x8e, 0xfd, 0x88, 0xf5, 0x8d, 0xfd, 0x89, 0xf5, - 0x8e, 0xfd, 0x89, 0xf5, 0x8d, 0xfd, 0x8a, 0xf5, 0x8e, 0xfd, 0x8a, 0xf5, - 0x8d, 0xfd, 0x8b, 0xf5, 0x8e, 0xfd, 0x8b, 0xf5, 0x8d, 0xfd, 0x8c, 0xf5, - 0x8e, 0xfd, 0x8c, 0xf5, 0x8d, 0xfd, 0x8d, 0xf5, 0x92, 0xfd, 0x8d, 0xf5, - 0x93, 0xfd, 0x8e, 0xf5, 0x92, 0xfd, 0x8e, 0xf5, 0x93, 0xfd, 0x8e, 0xf5, - 0x92, 0xfd, 0x8f, 0xf5, 0x93, 0xfd, 0x8f, 0xf5, 0x92, 0xfd, 0x90, 0xf5, - 0x93, 0xfd, 0x90, 0xf5, 0x92, 0xfd, 0x91, 0xf5, 0x93, 0xfd, 0x91, 0xf5, - 0x92, 0xfd, 0x92, 0xf6, 0x97, 0xfd, 0x92, 0xf6, 0x98, 0xfd, 0x93, 0xf6, - 0x97, 0xfd, 0x93, 0xf6, 0x98, 0xfd, 0x94, 0xf6, 0x97, 0xfd, 0x94, 0xf6, - 0x98, 0xfd, 0x94, 0xf6, 0x97, 0xfd, 0x95, 0xf6, 0x98, 0xfd, 0x95, 0xf6, - 0x97, 0xfd, 0x96, 0xf6, 0x98, 0xfd, 0x96, 0xf6, 0x97, 0xfd, 0x97, 0xf6, - 0x9c, 0xfd, 0x97, 0xf6, 0x97, 0xfd, 0x98, 0xf6, 0x9c, 0xfd, 0x98, 0xf6, - 0x9c, 0xfd, 0x98, 0xf6, 0x9c, 0xfd, 0x99, 0xf6, 0x9c, 0xfd, 0x99, 0xf6, - 0x9c, 0xfd, 0x9a, 0xf6, 0x9c, 0xfd, 0x9a, 0xf6, 0x9c, 0xfd, 0x9a, 0xf6, - 0x9c, 0xfd, 0x9b, 0xf6, 0x9c, 0xfd, 0x9b, 0xf6, 0x9c, 0xfd, 0x9c, 0xf6, - 0x9c, 0xfd, 0x9c, 0xf7, 0xa0, 0xfd, 0x9d, 0xf7, 0xa1, 0xfd, 0x9d, 0xf7, - 0xa0, 0xfd, 0x9d, 0xf7, 0xa1, 0xfd, 0x9e, 0xf7, 0xa0, 0xfd, 0x9e, 0xf7, - 0xa1, 0xfd, 0x9f, 0xf7, 0xa0, 0xfd, 0x9f, 0xf7, 0xa1, 0xfd, 0x9f, 0xf7, - 0xa0, 0xfd, 0xa0, 0xf7, 0xa1, 0xfd, 0xa0, 0xf7, 0xa0, 0xfd, 0xa1, 0xf7, - 0xa5, 0xfd, 0xa1, 0xf7, 0xa5, 0xfd, 0xa1, 0xf7, 0xa5, 0xfd, 0xa2, 0xf7, - 0xa5, 0xfd, 0xa2, 0xf7, 0xa5, 0xfd, 0xa3, 0xf7, 0xa5, 0xfd, 0xa3, 0xf7, - 0xa5, 0xfd, 0xa3, 0xf7, 0xa5, 0xfd, 0xa4, 0xf7, 0xa5, 0xfd, 0xa4, 0xf7, - 0xa5, 0xfd, 0xa5, 0xf7, 0xa5, 0xfd, 0xa5, 0xf8, 0xa9, 0xfd, 0xa5, 0xf8, - 0xa9, 0xfd, 0xa6, 0xf8, 0xa9, 0xfd, 0xa6, 0xf8, 0xa9, 0xfd, 0xa6, 0xf8, - 0xa9, 0xfd, 0xa7, 0xf8, 0xa9, 0xfd, 0xa7, 0xf8, 0xa9, 0xfd, 0xa8, 0xf8, - 0xa9, 0xfd, 0xa8, 0xf8, 0xa9, 0xfd, 0xa8, 0xf8, 0xa9, 0xfd, 0xa9, 0xf8, - 0xa9, 0xfd, 0xa9, 0xf8, 0xad, 0xfd, 0xaa, 0xf8, 0xad, 0xfd, 0xaa, 0xf8, - 0xad, 0xfd, 0xaa, 0xf8, 0xad, 0xfd, 0xab, 0xf8, 0xad, 0xfd, 0xab, 0xf8, - 0xad, 0xfd, 0xab, 0xf8, 0xad, 0xfd, 0xac, 0xf8, 0xad, 0xfd, 0xac, 0xf8, - 0xad, 0xfd, 0xac, 0xf8, 0xad, 0xfd, 0xad, 0xf8, 0xad, 0xfd, 0xad, 0xf8, - 0xad, 0xfd, 0xae, 0xf8, 0xae, 0xfd, 0xae, 0xf9, 0xb1, 0xfd, 0xae, 0xf9, - 0xb1, 0xfd, 0xaf, 0xf9, 0xb1, 0xfd, 0xaf, 0xf9, 0xb1, 0xfd, 0xaf, 0xf9, - 0xb1, 0xfd, 0xb0, 0xf9, 0xb1, 0xfd, 0xb0, 0xf9, 0xb1, 0xfd, 0xb0, 0xf9, - 0xb1, 0xfd, 0xb1, 0xf9, 0xb1, 0xfd, 0xb1, 0xf9, 0xb1, 0xfd, 0xb2, 0xf9, - 0xb2, 0xfd, 0xb2, 0xf9, 0xb5, 0xfd, 0xb2, 0xf9, 0xb5, 0xfd, 0xb3, 0xf9, - 0xb5, 0xfd, 0xb3, 0xf9, 0xb5, 0xfd, 0xb3, 0xf9, 0xb5, 0xfd, 0xb4, 0xf9, - 0xb5, 0xfd, 0xb4, 0xf9, 0xb5, 0xfd, 0xb4, 0xf9, 0xb5, 0xfd, 0xb5, 0xf9, - 0xb5, 0xfd, 0xb5, 0xf9, 0xb5, 0xfd, 0xb5, 0xf9, 0xb5, 0xfd, 0xb6, 0xfa, - 0xb8, 0xfd, 0xb6, 0xfa, 0xb9, 0xfd, 0xb6, 0xfa, 0xb8, 0xfd, 0xb7, 0xfa, - 0xb9, 0xfd, 0xb7, 0xfa, 0xb8, 0xfd, 0xb7, 0xfa, 0xb9, 0xfd, 0xb8, 0xfa, - 0xb8, 0xfd, 0xb8, 0xfa, 0xb9, 0xfd, 0xb8, 0xfa, 0xb8, 0xfd, 0xb9, 0xfa, - 0xb9, 0xfd, 0xb9, 0xfa, 0xb9, 0xfd, 0xb9, 0xfa, 0xbc, 0xfd, 0xba, 0xfa, - 0xbc, 0xfd, 0xba, 0xfa, 0xbc, 0xfd, 0xba, 0xfa, 0xbc, 0xfd, 0xbb, 0xfa, - 0xbc, 0xfd, 0xbb, 0xfa, 0xbc, 0xfd, 0xbb, 0xfa, 0xbc, 0xfd, 0xbc, 0xfa, - 0xbc, 0xfd, 0xbc, 0xfa, 0xbc, 0xfd, 0xbc, 0xfa, 0xbc, 0xfd, 0xbd, 0xfa, - 0xbd, 0xfd, 0xbd, 0xfa, 0xc0, 0xfd, 0xbd, 0xfa, 0xc0, 0xfd, 0xbe, 0xfa, - 0xc0, 0xfd, 0xbe, 0xfa, 0xc0, 0xfd, 0xbe, 0xfa, 0xc0, 0xfd, 0xbf, 0xfa, - 0xc0, 0xfd, 0xbf, 0xfa, 0xc0, 0xfd, 0xbf, 0xfa, 0xc0, 0xfd, 0xc0, 0xfa, - 0xc0, 0xfd, 0xc0, 0xfa, 0xc0, 0xfd, 0xc0, 0xfa, 0xc0, 0xfd, 0xc1, 0xfa, - 0xc1, 0xfd, 0xc1, 0xfa, 0xc1, 0xfd, 0xc1, 0xfb, 0xc3, 0xfd, 0xc1, 0xfb, - 0xc3, 0xfd, 0xc2, 0xfb, 0xc3, 0xfd, 0xc2, 0xfb, 0xc3, 0xfd, 0xc2, 0xfb, - 0xc3, 0xfd, 0xc3, 0xfb, 0xc3, 0xfd, 0xc3, 0xfb, 0xc3, 0xfd, 0xc3, 0xfb, - 0xc3, 0xfd, 0xc4, 0xfb, 0xc4, 0xfd, 0xc4, 0xfb, 0xc4, 0xfd, 0xc4, 0xfb, - 0xc4, 0xfd, 0xc5, 0xfb, 0xc6, 0xfd, 0xc5, 0xfb, 0xc7, 0xfd, 0xc5, 0xfb, - 0xc6, 0xfd, 0xc6, 0xfb, 0xc7, 0xfd, 0xc6, 0xfb, 0xc6, 0xfd, 0xc6, 0xfb, - 0xc7, 0xfd, 0xc6, 0xfb, 0xc6, 0xfd, 0xc7, 0xfb, 0xc7, 0xfd, 0xc7, 0xfb, - 0xc7, 0xfd, 0xc7, 0xfb, 0xc7, 0xfd, 0xc8, 0xfb, 0xc8, 0xfd, 0xc8, 0xfc, - 0xca, 0xfd, 0xc8, 0xfc, 0xca, 0xfd, 0xc9, 0xfc, 0xca, 0xfd, 0xc9, 0xfc, - 0xca, 0xfd, 0xc9, 0xfc, 0xca, 0xfd, 0xc9, 0xfc, 0xca, 0xfd, 0xca, 0xfc, - 0xca, 0xfd, 0xca, 0xfc, 0xca, 0xfd, 0xca, 0xfc, 0xca, 0xfd, 0xcb, 0xfc, - 0xcb, 0xfd, 0xcb, 0xfc, 0xcb, 0xfd, 0xcb, 0xfc, 0xcb, 0xfd, 0xcc, 0xfc, - 0xcc, 0xfd, 0xcc, 0xfc, 0xcd, 0xfd, 0xcc, 0xfc, 0xcd, 0xfd, 0xcc, 0xfc, - 0xcd, 0xfd, 0xcd, 0xfc, 0xcd, 0xfd, 0xcd, 0xfc, 0xcd, 0xfd, 0xcd, 0xfc, - 0xcd, 0xfd, 0xce, 0xfc, 0xce, 0xfd, 0xce, 0xfc, 0xce, 0xfd, 0xce, 0xfc, - 0xce, 0xfd, 0xce, 0xfc, 0xce, 0xfd, 0xcf, 0xfc, 0xcf, 0xfd, 0xcf, 0xfd, - 0xd0, 0xfd, 0xcf, 0xfd, 0xd0, 0xfd, 0xd0, 0xfd, 0xd0, 0xfd, 0xd0, 0xfd, - 0xd0, 0xfd, 0xd0, 0xfd, 0xd0, 0xfd, 0xd0, 0xfd, 0xd0, 0xfd, 0xd1, 0xfd, - 0xd1, 0xfd, 0xd1, 0xfd, 0xd1, 0xfd, 0xd1, 0xfd, 0xd1, 0xfd, 0xd2, 0xfd, - 0xd2, 0xfd, 0xd2, 0xfd, 0xd2, 0xfd, 0xd2, 0xfd, 0xd3, 0xfd, 0xd2, 0xfd, - 0xd4, 0xfd, 0xd3, 0xfd, 0xd3, 0xfd, 0xd3, 0xfd, 0xd4, 0xfd, 0xd3, 0xfd, - 0xd3, 0xfd, 0xd4, 0xfd, 0xd4, 0xfd, 0xd4, 0xfd, 0xd4, 0xfd, 0xd4, 0xfd, - 0xd4, 0xfd, 0xd4, 0xfd, 0xd4, 0xfd, 0xd5, 0xfd, 0xd5, 0xfd, 0xd5, 0xfd, - 0xd5, 0xfd, 0xd5, 0xfd, 0xd5, 0xfd, 0xd6, 0xfd, 0xd6, 0xfd, 0xd6, 0xfe, - 0xd6, 0xfd, 0xd6, 0xfe, 0xd7, 0xfd, 0xd6, 0xfe, 0xd6, 0xfd, 0xd7, 0xfe, - 0xd7, 0xfd, 0xd7, 0xfe, 0xd7, 0xfd, 0xd7, 0xfe, 0xd7, 0xfd, 0xd7, 0xfe, - 0xd7, 0xfd, 0xd8, 0xfe, 0xd8, 0xfd, 0xd8, 0xfe, 0xd8, 0xfd, 0xd8, 0xfe, - 0xd8, 0xfd, 0xd9, 0xfe, 0xd9, 0xfd, 0xd9, 0xfe, 0xd9, 0xfd, 0xd9, 0xfe, - 0xd9, 0xfd, 0xd9, 0xfe, 0xd9, 0xfd, 0xd9, 0xfe, 0xda, 0xfd, 0xda, 0xfe, - 0xda, 0xfe, 0xda, 0xfe, 0xda, 0xfe, 0xda, 0xfe, 0xda, 0xfe, 0xdb, 0xfe, - 0xdb, 0xfe, 0xdb, 0xfe, 0xdb, 0xfe, 0xdb, 0xfe, 0xdb, 0xfe, 0xdb, 0xfe, - 0xdb, 0xfe, 0xdc, 0xfe, 0xdc, 0xfe, 0xdc, 0xfe, 0xdc, 0xfc, 0xdc, 0xfe, - 0xdc, 0xfc, 0xdd, 0xfe, 0xdd, 0xfc, 0xdd, 0xfe, 0xdd, 0xfc, 0xdd, 0xfe, - 0xdd, 0xfc, 0xdd, 0xfe, 0xdd, 0xfc, 0xde, 0xfe, 0xde, 0xfc, 0xde, 0xfe, - 0xde, 0xfc, 0xde, 0xfe, 0xde, 0xfc, 0xde, 0xfe, 0xde, 0xfc, 0xdf, 0xfe, - 0xdf, 0xfc, 0xdf, 0xfe, 0xdf, 0xfd, 0xdf, 0xfe, 0xdf, 0xfd, 0xdf, 0xfe, - 0xdf, 0xfd, 0xe0, 0xfe, 0xe0, 0xfd, 0xe0, 0xfe, 0xe0, 0xfd, 0xe0, 0xfe, - 0xe0, 0xfd, 0xe1, 0xfe, 0xe1, 0xfd, 0xe1, 0xfe, 0xe1, 0xfd, 0xe1, 0xfe, - 0xe1, 0xfd, 0xe1, 0xfe, 0xe1, 0xfd, 0xe2, 0xfe, 0xe2, 0xfd, 0xe2, 0xfe, - 0xe2, 0xfd, 0xe2, 0xfe, 0xe2, 0xfd, 0xe2, 0xfe, 0xe2, 0xfd, 0xe2, 0xfe, - 0xe3, 0xfd, 0xe2, 0xfe, 0xe3, 0xfd, 0xe2, 0xfe, 0xe3, 0xfd, 0xe4, 0xfe, - 0xe3, 0xfd, 0xe4, 0xfe, 0xe4, 0xfe, 0xe4, 0xfe, 0xe4, 0xfd, 0xe5, 0xfe, - 0xe4, 0xfd, 0xe4, 0xfe, 0xe4, 0xfd, 0xe5, 0xfe, 0xe4, 0xfd, 0xe5, 0xfe, - 0xe4, 0xfd, 0xe5, 0xfe, 0xe4, 0xfd, 0xe5, 0xfe, 0xe4, 0xfd, 0xe6, 0xfe, - 0xe4, 0xfd, 0xe6, 0xfe, 0xe4, 0xfd, 0xe6, 0xfe, 0xe4, 0xfd, 0xe6, 0xfd, - 0xe4, 0xfd, 0xe7, 0xfe, 0xe4, 0xfd, 0xe7, 0xfd, 0xe4, 0xfd, 0xe7, 0xfe, - 0xe4, 0xfd, 0xe7, 0xfd, 0xe4, 0xfd, 0xe8, 0xfe, 0xe4, 0xfd, 0xe8, 0xfd, - 0xe4, 0xfd, 0xe8, 0xfe, 0xe4, 0xfd, 0xe8, 0xfd, 0xe4, 0xfd, 0xe9, 0xfe, - 0xe4, 0xfd, 0xe9, 0xfd, 0xe4, 0xfd, 0xe9, 0xfe, 0xe4, 0xfd, 0xe9, 0xfe, - 0xee, 0xfd, 0xea, 0xfe, 0xee, 0xfd, 0xea, 0xfe, 0xee, 0xfd, 0xea, 0xfe, - 0xee, 0xfd, 0xea, 0xfe, 0xee, 0xfd, 0xeb, 0xfe, 0xee, 0xfd, 0xeb, 0xfe, - 0xee, 0xfd, 0xeb, 0xfe, 0xee, 0xfd, 0xeb, 0xfe, 0xee, 0xfd, 0xec, 0xfe, - 0xee, 0xfd, 0xec, 0xfe, 0xee, 0xfd, 0xec, 0xfe, 0xee, 0xfd, 0xec, 0xfe, - 0xee, 0xfd, 0xec, 0xfe, 0xee, 0xfd, 0xed, 0xfe, 0xee, 0xfd, 0xed, 0xfe, - 0xee, 0xfd, 0xed, 0xfe, 0xee, 0xfd, 0xed, 0xfe, 0xee, 0xfd, 0xee, 0xfe, - 0xee, 0xfd, 0xee, 0xfe, 0xee, 0xfc, 0xee, 0xfe, 0xee, 0xfd, 0xee, 0xfe, - 0xee, 0xfd, 0xef, 0xfe, 0xee, 0xfd, 0xef, 0xfe, 0xee, 0xfd, 0xef, 0xfe, - 0xee, 0xfd, 0xef, 0xfe, 0xee, 0xfd, 0xf0, 0xfe, 0xee, 0xfd, 0xf0, 0xfe, - 0xee, 0xfd, 0xf0, 0xfe, 0xee, 0xfd, 0xf0, 0xfe, 0xee, 0xfd, 0xf1, 0xfe, - 0xee, 0xfd, 0xf1, 0xfe, 0xee, 0xfd, 0xf1, 0xfe, 0xee, 0xfd, 0xf1, 0xfe, - 0xee, 0xfd, 0xf2, 0xfe, 0xee, 0xfd, 0xf2, 0xfe, 0xee, 0xfd, 0xf2, 0xfe, - 0xee, 0xfd, 0xf2, 0xfe, 0xee, 0xfd, 0xf2, 0xfc, 0xef, 0xfd, 0xf3, 0xfe, - 0xee, 0xfd, 0xf3, 0xfc, 0xef, 0xfd, 0xf3, 0xfe, 0xee, 0xfd, 0xf3, 0xfc, - 0xef, 0xfd, 0xf4, 0xfe, 0xee, 0xfd, 0xf4, 0xfc, 0xef, 0xfd, 0xf4, 0xfe, - 0xee, 0xfd, 0xf4, 0xfc, 0xef, 0xfd, 0xf5, 0xfe, 0xee, 0xfd, 0xf5, 0xfc, - 0xef, 0xfd, 0xf5, 0xfe, 0xee, 0xfd, 0xf5, 0xfc, 0xef, 0xfd, 0xf5, 0xfe, - 0xee, 0xfd, 0xf6, 0xfc, 0xef, 0xfd, 0xf6, 0xfe, 0xee, 0xfd, 0xf6, 0xfc, - 0xef, 0xfd, 0xf6, 0xfe, 0xee, 0xfd, 0xf7, 0xfc, 0xef, 0xfd, 0xf7, 0xfe, - 0xee, 0xfd, 0xf7, 0xfc, 0xef, 0xfd, 0xf7, 0xfe, 0xee, 0xfd, 0xf8, 0xfc, - 0xef, 0xfd, 0xf8, 0xfe, 0xee, 0xfd, 0xf8, 0xfc, 0xef, 0xfd, 0xf8, 0xfe, - 0xee, 0xfd, 0xf8, 0xfc, 0xef, 0xfd, 0xf9, 0xfe, 0xee, 0xfd, 0xf9, 0xfc, - 0xef, 0xfd, 0xf9, 0xfe, 0xee, 0xfd, 0xf9, 0xfc, 0xef, 0xfd, 0xfa, 0xfe, - 0xee, 0xfd, 0xfa, 0xfc, 0xef, 0xfd, 0xfa, 0xfb, 0xef, 0xfd, 0xfa, 0xfc, - 0xef, 0xfd, 0xfa, 0xfb, 0xef, 0xfd, 0xfb, 0xfc, 0xef, 0xfd, 0xfb, 0xfb, - 0xef, 0xfd, 0xfb, 0xfc, 0xef, 0xfd, 0xfb, 0xfb, 0xef, 0xfd, 0xfc, 0xfc, - 0xef, 0xfd, 0xfc, 0xfb, 0xef, 0xfd, 0xfc, 0xfc, 0xef, 0xfd, 0xfc, 0xfb, - 0xef, 0xfd, 0xfc, 0xfc, 0xef, 0xfd, 0xfd, 0xfb, 0xef, 0xfd, 0xfd, 0xfc, - 0xef, 0xfd, 0xfd, 0xfb, 0xef, 0xfd, 0xfd, 0xfc, 0xef, 0xfd, 0xfe, 0xfb, - 0xef, 0xfd, 0xfe, 0xfc, 0xef, 0xfd, 0xfe, 0xfb, 0xef, 0xfd, 0xfe, 0xfc, - 0xef, 0xfd, 0xfe, 0xfb, 0xef, 0xfd, 0xff, 0xfc, 0xef, 0xfd, 0xff, 0xfb, - 0xef, 0xfd, 0x03, 0xf4, 0x83, 0xfd, 0x0a, 0xf4, 0x83, 0xfd, 0x0f, 0xf4, - 0x83, 0xfd, 0x14, 0xf4, 0x83, 0xfd, 0x17, 0xf4, 0x83, 0xfd, 0x1b, 0xf4, - 0x83, 0xfd, 0x1e, 0xf4, 0x83, 0xfd, 0x20, 0xf4, 0x83, 0xfd, 0x23, 0xf4, - 0x83, 0xfd, 0x25, 0xf4, 0x83, 0xfd, 0x27, 0xf4, 0x83, 0xfd, 0x29, 0xf4, - 0x83, 0xfd, 0x2b, 0xf4, 0x83, 0xfd, 0x2d, 0xf4, 0x83, 0xfd, 0x2f, 0xf4, - 0x83, 0xfd, 0x31, 0xf4, 0x83, 0xfd, 0x32, 0xf4, 0x83, 0xfd, 0x34, 0xf4, - 0x83, 0xfd, 0x35, 0xf4, 0x83, 0xfd, 0x37, 0xf4, 0x83, 0xfd, 0x38, 0xf4, - 0x83, 0xfd, 0x3a, 0xf4, 0x83, 0xfd, 0x3b, 0xf4, 0x83, 0xfd, 0x3c, 0xf4, - 0x83, 0xfd, 0x3e, 0xf4, 0x83, 0xfd, 0x3f, 0xf4, 0x83, 0xfd, 0x40, 0xf4, - 0x83, 0xfd, 0x42, 0xf4, 0x83, 0xfd, 0x43, 0xf4, 0x83, 0xfd, 0x44, 0xf4, - 0x83, 0xfd, 0x45, 0xf4, 0x83, 0xfd, 0x46, 0xf4, 0x83, 0xfd, 0x47, 0xf4, - 0x83, 0xfd, 0x48, 0xf4, 0x83, 0xfd, 0x49, 0xf4, 0x83, 0xfd, 0x4a, 0xf4, - 0x83, 0xfd, 0x4b, 0xf4, 0x83, 0xfd, 0x4c, 0xf4, 0x83, 0xfd, 0x4d, 0xf4, - 0x83, 0xfd, 0x4e, 0xf4, 0x83, 0xfd, 0x4f, 0xf4, 0x83, 0xfd, 0x50, 0xf4, - 0x83, 0xfd, 0x51, 0xf4, 0x83, 0xfd, 0x52, 0xf4, 0x83, 0xfd, 0x53, 0xf4, - 0x83, 0xfd, 0x54, 0xf4, 0x83, 0xfd, 0x55, 0xf4, 0x83, 0xfd, 0x56, 0xf4, - 0x83, 0xfd, 0x57, 0xf4, 0x83, 0xfd, 0x58, 0xf4, 0x83, 0xfd, 0x58, 0xf4, - 0x83, 0xfd, 0x59, 0xf4, 0x83, 0xfd, 0x5a, 0xf4, 0x83, 0xfd, 0x5b, 0xf4, - 0x83, 0xfd, 0x5c, 0xf4, 0x83, 0xfd, 0x5d, 0xf4, 0x83, 0xfd, 0x5d, 0xf4, - 0x83, 0xfd, 0x5e, 0xf4, 0x83, 0xfd, 0x5f, 0xf4, 0x83, 0xfd, 0x60, 0xf4, - 0x83, 0xfd, 0x60, 0xf4, 0x83, 0xfd, 0x61, 0xf4, 0x83, 0xfd, 0x62, 0xf4, - 0x83, 0xfd, 0x63, 0xf4, 0x83, 0xfd, 0x63, 0xf4, 0x83, 0xfd, 0x64, 0xf4, - 0x83, 0xfd, 0x65, 0xf4, 0x83, 0xfd, 0x66, 0xf4, 0x83, 0xfd, 0x66, 0xf4, - 0x83, 0xfd, 0x67, 0xf4, 0x83, 0xfd, 0x68, 0xf4, 0x83, 0xfd, 0x68, 0xf4, - 0x83, 0xfd, 0x69, 0xf4, 0x83, 0xfd, 0x6a, 0xf4, 0x83, 0xfd, 0x6a, 0xf4, - 0x83, 0xfd, 0x6b, 0xf4, 0x83, 0xfd, 0x6c, 0xf4, 0x83, 0xfd, 0x6c, 0xf4, - 0x83, 0xfd, 0x6d, 0xf4, 0x83, 0xfd, 0x6e, 0xf4, 0x83, 0xfd, 0x6e, 0xf4, - 0x83, 0xfd, 0x6f, 0xf4, 0x83, 0xfd, 0x70, 0xf4, 0x83, 0xfd, 0x70, 0xf4, - 0x83, 0xfd, 0x71, 0xf4, 0x83, 0xfd, 0x72, 0xf4, 0x83, 0xfd, 0x72, 0xf4, - 0x83, 0xfd, 0x73, 0xf4, 0x83, 0xfd, 0x73, 0xf4, 0x83, 0xfd, 0x74, 0xf4, - 0x83, 0xfd, 0x75, 0xf4, 0x83, 0xfd, 0x75, 0xf4, 0x83, 0xfd, 0x76, 0xf4, - 0x83, 0xfd, 0x76, 0xf4, 0x83, 0xfd, 0x77, 0xf4, 0x83, 0xfd, 0x78, 0xf4, - 0x83, 0xfd, 0x78, 0xf4, 0x83, 0xfd, 0x79, 0xf4, 0x83, 0xfd, 0x79, 0xf4, - 0x83, 0xfd, 0x7a, 0xf4, 0x83, 0xfd, 0x7a, 0xf4, 0x83, 0xfd, 0x7b, 0xf4, - 0x83, 0xfd, 0x7c, 0xf4, 0x83, 0xfd, 0x7c, 0xf4, 0x83, 0xfd, 0x7d, 0xf4, - 0x83, 0xfd, 0x7d, 0xf4, 0x83, 0xfd, 0x7e, 0xf4, 0x83, 0xfd, 0x7e, 0xf4, - 0x83, 0xfd, 0x7f, 0xf4, 0x85, 0xfd, 0x7f, 0xf4, 0x83, 0xfd, 0x80, 0xf4, - 0x85, 0xfd, 0x81, 0xf4, 0x86, 0xfd, 0x81, 0xf4, 0x85, 0xfd, 0x82, 0xf4, - 0x86, 0xfd, 0x82, 0xf4, 0x85, 0xfd, 0x83, 0xf4, 0x86, 0xfd, 0x83, 0xf4, - 0x85, 0xfd, 0x84, 0xf4, 0x86, 0xfd, 0x84, 0xf4, 0x85, 0xfd, 0x85, 0xf5, - 0x8b, 0xfd, 0x85, 0xf5, 0x8b, 0xfd, 0x86, 0xf5, 0x8b, 0xfd, 0x86, 0xf5, - 0x8b, 0xfd, 0x87, 0xf5, 0x8b, 0xfd, 0x87, 0xf5, 0x8b, 0xfd, 0x88, 0xf5, - 0x8b, 0xfd, 0x88, 0xf5, 0x8b, 0xfd, 0x89, 0xf5, 0x8b, 0xfd, 0x89, 0xf5, - 0x8b, 0xfd, 0x8a, 0xf5, 0x8b, 0xfd, 0x8a, 0xf5, 0x90, 0xfd, 0x8b, 0xf5, - 0x90, 0xfd, 0x8b, 0xf5, 0x90, 0xfd, 0x8c, 0xf5, 0x90, 0xfd, 0x8c, 0xf5, - 0x90, 0xfd, 0x8d, 0xf5, 0x90, 0xfd, 0x8d, 0xf5, 0x90, 0xfd, 0x8e, 0xf5, - 0x90, 0xfd, 0x8e, 0xf5, 0x90, 0xfd, 0x8e, 0xf5, 0x90, 0xfd, 0x8f, 0xf5, - 0x90, 0xfd, 0x8f, 0xf6, 0x95, 0xfd, 0x90, 0xf6, 0x95, 0xfd, 0x90, 0xf6, - 0x95, 0xfd, 0x91, 0xf6, 0x95, 0xfd, 0x91, 0xf6, 0x95, 0xfd, 0x92, 0xf6, - 0x95, 0xfd, 0x92, 0xf6, 0x95, 0xfd, 0x93, 0xf6, 0x97, 0xfd, 0x93, 0xf6, - 0x95, 0xfd, 0x94, 0xf6, 0x97, 0xfd, 0x94, 0xf6, 0x98, 0xfd, 0x94, 0xf6, - 0x97, 0xfd, 0x95, 0xf6, 0x98, 0xfd, 0x95, 0xf6, 0x97, 0xfd, 0x96, 0xf6, - 0x98, 0xfd, 0x96, 0xf6, 0x9a, 0xfd, 0x97, 0xf6, 0x9a, 0xfd, 0x97, 0xf6, - 0x9a, 0xfd, 0x98, 0xf6, 0x9a, 0xfd, 0x98, 0xf6, 0x9a, 0xfd, 0x98, 0xf6, - 0x9a, 0xfd, 0x99, 0xf6, 0x9a, 0xfd, 0x99, 0xf7, 0x9e, 0xfd, 0x9a, 0xf6, - 0x9a, 0xfd, 0x9a, 0xf7, 0x9e, 0xfd, 0x9a, 0xf7, 0x9f, 0xfd, 0x9b, 0xf7, - 0x9e, 0xfd, 0x9b, 0xf7, 0x9f, 0xfd, 0x9c, 0xf7, 0x9e, 0xfd, 0x9c, 0xf7, - 0x9f, 0xfd, 0x9d, 0xf7, 0x9e, 0xfd, 0x9d, 0xf7, 0x9f, 0xfd, 0x9d, 0xf7, - 0x9e, 0xfd, 0x9e, 0xf7, 0x9f, 0xfd, 0x9e, 0xf7, 0x9e, 0xfd, 0x9f, 0xf7, - 0xa3, 0xfd, 0x9f, 0xf7, 0xa3, 0xfd, 0x9f, 0xf7, 0xa3, 0xfd, 0xa0, 0xf7, - 0xa3, 0xfd, 0xa0, 0xf7, 0xa3, 0xfd, 0xa1, 0xf7, 0xa3, 0xfd, 0xa1, 0xf7, - 0xa3, 0xfd, 0xa1, 0xf7, 0xa3, 0xfd, 0xa2, 0xf7, 0xa3, 0xfd, 0xa2, 0xf7, - 0xa3, 0xfd, 0xa3, 0xf7, 0xa3, 0xfd, 0xa3, 0xf8, 0xa7, 0xfd, 0xa3, 0xf8, - 0xa7, 0xfd, 0xa4, 0xf8, 0xa7, 0xfd, 0xa4, 0xf8, 0xa7, 0xfd, 0xa5, 0xf8, - 0xa7, 0xfd, 0xa5, 0xf8, 0xa7, 0xfd, 0xa5, 0xf8, 0xa7, 0xfd, 0xa6, 0xf8, - 0xa9, 0xfd, 0xa6, 0xf8, 0xa7, 0xfd, 0xa6, 0xf8, 0xa9, 0xfd, 0xa7, 0xf8, - 0xa9, 0xfd, 0xa7, 0xf8, 0xa9, 0xfd, 0xa8, 0xf8, 0xa9, 0xfd, 0xa8, 0xf8, - 0xa9, 0xfd, 0xa8, 0xf8, 0xa9, 0xfd, 0xa9, 0xf8, 0xab, 0xfd, 0xa9, 0xf8, - 0xab, 0xfd, 0xaa, 0xf8, 0xab, 0xfd, 0xaa, 0xf8, 0xab, 0xfd, 0xaa, 0xf8, - 0xab, 0xfd, 0xab, 0xf8, 0xab, 0xfd, 0xab, 0xf8, 0xab, 0xfd, 0xab, 0xf8, - 0xaf, 0xfd, 0xac, 0xf8, 0xaf, 0xfd, 0xac, 0xf8, 0xaf, 0xfd, 0xac, 0xf8, - 0xaf, 0xfd, 0xad, 0xf8, 0xaf, 0xfd, 0xad, 0xf8, 0xaf, 0xfd, 0xae, 0xf8, - 0xaf, 0xfd, 0xae, 0xf8, 0xaf, 0xfd, 0xae, 0xf8, 0xaf, 0xfd, 0xaf, 0xf8, - 0xaf, 0xfd, 0xaf, 0xf8, 0xaf, 0xfd, 0xaf, 0xf8, 0xaf, 0xfd, 0xb0, 0xf8, - 0xb0, 0xfd, 0xb0, 0xf9, 0xb3, 0xfd, 0xb0, 0xf9, 0xb3, 0xfd, 0xb1, 0xf9, - 0xb3, 0xfd, 0xb1, 0xf9, 0xb3, 0xfd, 0xb2, 0xf9, 0xb3, 0xfd, 0xb2, 0xf9, - 0xb3, 0xfd, 0xb2, 0xf9, 0xb3, 0xfd, 0xb3, 0xf9, 0xb3, 0xfd, 0xb3, 0xf9, - 0xb3, 0xfd, 0xb3, 0xf9, 0xb3, 0xfd, 0xb4, 0xf9, 0xb4, 0xfd, 0xb4, 0xf9, - 0xb7, 0xfd, 0xb4, 0xf9, 0xb7, 0xfd, 0xb5, 0xf9, 0xb7, 0xfd, 0xb5, 0xf9, - 0xb7, 0xfd, 0xb5, 0xf9, 0xb7, 0xfd, 0xb6, 0xf9, 0xb7, 0xfd, 0xb6, 0xf9, - 0xb7, 0xfd, 0xb6, 0xfa, 0xb8, 0xfd, 0xb7, 0xfa, 0xb9, 0xfd, 0xb7, 0xfa, - 0xb8, 0xfd, 0xb7, 0xfa, 0xb9, 0xfd, 0xb8, 0xfa, 0xb8, 0xfd, 0xb8, 0xfa, - 0xb9, 0xfd, 0xb8, 0xfa, 0xba, 0xfd, 0xb9, 0xfa, 0xbb, 0xfd, 0xb9, 0xfa, - 0xba, 0xfd, 0xb9, 0xfa, 0xbb, 0xfd, 0xba, 0xfa, 0xba, 0xfd, 0xba, 0xfa, - 0xbb, 0xfd, 0xba, 0xfa, 0xba, 0xfd, 0xbb, 0xfa, 0xbb, 0xfd, 0xbb, 0xfa, - 0xbb, 0xfd, 0xbb, 0xfa, 0xbe, 0xfd, 0xbc, 0xfa, 0xbe, 0xfd, 0xbc, 0xfa, - 0xbe, 0xfd, 0xbc, 0xfa, 0xbe, 0xfd, 0xbd, 0xfa, 0xbe, 0xfd, 0xbd, 0xfa, - 0xbe, 0xfd, 0xbd, 0xfa, 0xbe, 0xfd, 0xbe, 0xfa, 0xbe, 0xfd, 0xbe, 0xfa, - 0xbe, 0xfd, 0xbe, 0xfa, 0xbe, 0xfd, 0xbf, 0xfa, 0xbf, 0xfd, 0xbf, 0xfb, - 0xc1, 0xfd, 0xbf, 0xfb, 0xc2, 0xfd, 0xc0, 0xfb, 0xc1, 0xfd, 0xc0, 0xfb, - 0xc2, 0xfd, 0xc0, 0xfb, 0xc1, 0xfd, 0xc1, 0xfb, 0xc2, 0xfd, 0xc1, 0xfb, - 0xc1, 0xfd, 0xc1, 0xfb, 0xc2, 0xfd, 0xc1, 0xfb, 0xc1, 0xfd, 0xc2, 0xfb, - 0xc2, 0xfd, 0xc2, 0xfb, 0xc2, 0xfd, 0xc2, 0xfb, 0xc2, 0xfd, 0xc3, 0xfb, - 0xc3, 0xfd, 0xc3, 0xfb, 0xc5, 0xfd, 0xc3, 0xfb, 0xc5, 0xfd, 0xc4, 0xfb, - 0xc5, 0xfd, 0xc4, 0xfb, 0xc5, 0xfd, 0xc4, 0xfb, 0xc5, 0xfd, 0xc5, 0xfb, - 0xc5, 0xfd, 0xc5, 0xfb, 0xc5, 0xfd, 0xc5, 0xfb, 0xc6, 0xfd, 0xc6, 0xfb, - 0xc7, 0xfd, 0xc6, 0xfb, 0xc6, 0xfd, 0xc6, 0xfb, 0xc7, 0xfd, 0xc6, 0xfb, - 0xc6, 0xfd, 0xc7, 0xfb, 0xc7, 0xfd, 0xc7, 0xfc, 0xc8, 0xfd, 0xc7, 0xfc, - 0xc9, 0xfd, 0xc8, 0xfc, 0xc8, 0xfd, 0xc8, 0xfc, 0xc9, 0xfd, 0xc8, 0xfc, - 0xc8, 0xfd, 0xc9, 0xfc, 0xc9, 0xfd, 0xc9, 0xfc, 0xc9, 0xfd, 0xc9, 0xfc, - 0xc9, 0xfd, 0xc9, 0xfc, 0xc9, 0xfd, 0xca, 0xfc, 0xcc, 0xfd, 0xca, 0xfc, - 0xcc, 0xfd, 0xca, 0xfc, 0xcc, 0xfd, 0xcb, 0xfc, 0xcc, 0xfd, 0xcb, 0xfc, - 0xcc, 0xfd, 0xcb, 0xfc, 0xcc, 0xfd, 0xcc, 0xfc, 0xcc, 0xfd, 0xcc, 0xfc, - 0xcc, 0xfd, 0xcc, 0xfc, 0xcc, 0xfd, 0xcc, 0xfc, 0xcc, 0xfd, 0xcd, 0xfc, - 0xcd, 0xfd, 0xcd, 0xfc, 0xcd, 0xfd, 0xcd, 0xfc, 0xcd, 0xfd, 0xce, 0xfc, - 0xcf, 0xfd, 0xce, 0xfc, 0xcf, 0xfd, 0xce, 0xfc, 0xcf, 0xfd, 0xce, 0xfc, - 0xcf, 0xfd, 0xcf, 0xfc, 0xcf, 0xfd, 0xcf, 0xfc, 0xcf, 0xfd, 0xcf, 0xfc, - 0xcf, 0xfd, 0xd0, 0xfc, 0xd0, 0xfd, 0xd0, 0xfc, 0xd0, 0xfd, 0xd0, 0xfc, - 0xd0, 0xfd, 0xd0, 0xfc, 0xd0, 0xfd, 0xd1, 0xfd, 0xd2, 0xfd, 0xd1, 0xfd, - 0xd2, 0xfd, 0xd1, 0xfd, 0xd2, 0xfd, 0xd2, 0xfd, 0xd2, 0xfd, 0xd2, 0xfd, - 0xd2, 0xfd, 0xd2, 0xfd, 0xd2, 0xfd, 0xd2, 0xfd, 0xd2, 0xfd, 0xd3, 0xfd, - 0xd3, 0xfd, 0xd3, 0xfd, 0xd4, 0xfd, 0xd3, 0xfd, 0xd3, 0xfd, 0xd4, 0xfd, - 0xd4, 0xfd, 0xd4, 0xfd, 0xd4, 0xfd, 0xd4, 0xfd, 0xd4, 0xfd, 0xd4, 0xfd, - 0xd5, 0xfd, 0xd5, 0xfd, 0xd5, 0xfd, 0xd5, 0xfd, 0xd5, 0xfd, 0xd5, 0xfd, - 0xd5, 0xfd, 0xd6, 0xfd, 0xd6, 0xfd, 0xd6, 0xfd, 0xd6, 0xfd, 0xd6, 0xfd, - 0xd6, 0xfd, 0xd6, 0xfd, 0xd6, 0xfd, 0xd7, 0xfd, 0xd7, 0xfd, 0xd7, 0xfd, - 0xd7, 0xfd, 0xd7, 0xfd, 0xd7, 0xfd, 0xd7, 0xfe, 0xd8, 0xfd, 0xd8, 0xfe, - 0xd8, 0xfd, 0xd8, 0xfe, 0xd8, 0xfd, 0xd8, 0xfe, 0xd8, 0xfd, 0xd9, 0xfe, - 0xd9, 0xfd, 0xd9, 0xfe, 0xd9, 0xfd, 0xd9, 0xfe, 0xd9, 0xfd, 0xd9, 0xfe, - 0xd9, 0xfd, 0xda, 0xfe, 0xda, 0xfd, 0xda, 0xfe, 0xda, 0xfd, 0xda, 0xfe, - 0xda, 0xfd, 0xda, 0xfe, 0xda, 0xfd, 0xdb, 0xfe, 0xdb, 0xfd, 0xda, 0xfe, - 0xdb, 0xfd, 0xdb, 0xfe, 0xdb, 0xfd, 0xdb, 0xfe, 0xdb, 0xfe, 0xdc, 0xfe, - 0xdc, 0xfe, 0xdc, 0xfe, 0xdc, 0xfe, 0xdc, 0xfe, 0xdc, 0xfe, 0xdd, 0xfe, - 0xdd, 0xfe, 0xdd, 0xfe, 0xdd, 0xfe, 0xdd, 0xfe, 0xdd, 0xfe, 0xdd, 0xfe, - 0xdd, 0xfc, 0xde, 0xfe, 0xde, 0xfc, 0xde, 0xfe, 0xde, 0xfc, 0xde, 0xfe, - 0xde, 0xfc, 0xde, 0xfe, 0xde, 0xfc, 0xdf, 0xfe, 0xdf, 0xfc, 0xdf, 0xfe, - 0xdf, 0xfc, 0xdf, 0xfe, 0xdf, 0xfc, 0xdf, 0xfe, 0xdf, 0xfc, 0xe0, 0xfe, - 0xe0, 0xfc, 0xe0, 0xfe, 0xe0, 0xfc, 0xe0, 0xff, 0xe0, 0xfd, 0xe1, 0xff, - 0xe1, 0xfd, 0xe1, 0xff, 0xe1, 0xfd, 0xe1, 0xff, 0xe1, 0xfd, 0xe1, 0xff, - 0xe1, 0xfd, 0xe2, 0xff, 0xe2, 0xfd, 0xe2, 0xff, 0xe2, 0xfd, 0xe2, 0xfe, - 0xe2, 0xfc, 0xe2, 0xfe, 0xe2, 0xfd, 0xe2, 0xfe, 0xe3, 0xfc, 0xe2, 0xfe, - 0xe3, 0xfd, 0xe4, 0xfe, 0xe3, 0xfd, 0xe4, 0xfe, 0xe3, 0xfd, 0xe4, 0xfe, - 0xe4, 0xfd, 0xe4, 0xfe, 0xe4, 0xfd, 0xe4, 0xfe, 0xe4, 0xfd, 0xe4, 0xfe, - 0xe4, 0xfd, 0xe5, 0xfe, 0xe4, 0xfd, 0xe5, 0xfe, 0xe4, 0xfd, 0xe5, 0xfe, - 0xe4, 0xfd, 0xe5, 0xfe, 0xe4, 0xfd, 0xe6, 0xfe, 0xe4, 0xfd, 0xe6, 0xfe, - 0xe4, 0xfd, 0xe6, 0xfe, 0xe4, 0xfd, 0xe6, 0xfe, 0xe4, 0xfd, 0xe7, 0xfe, - 0xe4, 0xfd, 0xe7, 0xfe, 0xe4, 0xfd, 0xe7, 0xfe, 0xe4, 0xfd, 0xe7, 0xfe, - 0xe4, 0xfd, 0xe8, 0xfe, 0xe4, 0xfd, 0xe8, 0xfe, 0xe4, 0xfd, 0xe8, 0xfe, - 0xe4, 0xfd, 0xe8, 0xfc, 0xe4, 0xfd, 0xe9, 0xfe, 0xe4, 0xfd, 0xe9, 0xfc, - 0xe4, 0xfd, 0xe9, 0xfe, 0xee, 0xfd, 0xe9, 0xfe, 0xee, 0xfd, 0xea, 0xfe, - 0xee, 0xfd, 0xea, 0xfe, 0xee, 0xfd, 0xea, 0xfe, 0xee, 0xfd, 0xea, 0xfe, - 0xee, 0xfd, 0xeb, 0xfe, 0xee, 0xfd, 0xeb, 0xfe, 0xee, 0xfd, 0xeb, 0xfe, - 0xee, 0xfd, 0xeb, 0xfe, 0xee, 0xfd, 0xec, 0xfe, 0xee, 0xfd, 0xec, 0xfe, - 0xee, 0xfd, 0xec, 0xfe, 0xee, 0xfd, 0xec, 0xfe, 0xee, 0xfd, 0xec, 0xfe, - 0xee, 0xfd, 0xed, 0xfe, 0xee, 0xfd, 0xed, 0xfe, 0xee, 0xfd, 0xed, 0xfe, - 0xee, 0xfd, 0xed, 0xfe, 0xee, 0xfd, 0xee, 0xfe, 0xee, 0xfd, 0xed, 0xfe, - 0xee, 0xfd, 0xee, 0xfe, 0xee, 0xfd, 0xee, 0xfe, 0xee, 0xfd, 0xef, 0xfe, - 0xee, 0xfd, 0xef, 0xfe, 0xee, 0xfd, 0xef, 0xfe, 0xee, 0xfd, 0xef, 0xfd, - 0xee, 0xfd, 0xf0, 0xfe, 0xee, 0xfd, 0xf0, 0xfd, 0xee, 0xfd, 0xf0, 0xfe, - 0xee, 0xfd, 0xf0, 0xfd, 0xee, 0xfd, 0xf1, 0xfe, 0xee, 0xfd, 0xf1, 0xfd, - 0xee, 0xfd, 0xf1, 0xfe, 0xee, 0xfd, 0xf1, 0xfd, 0xee, 0xfd, 0xf2, 0xfe, - 0xee, 0xfd, 0xf2, 0xfd, 0xee, 0xfd, 0xf2, 0xfe, 0xee, 0xfd, 0xf2, 0xfd, - 0xee, 0xfd, 0xf2, 0xfe, 0xee, 0xfd, 0xf3, 0xfd, 0xee, 0xfd, 0xf3, 0xfe, - 0xee, 0xfd, 0xf3, 0xfd, 0xee, 0xfd, 0xf3, 0xfe, 0xee, 0xfd, 0xf4, 0xfd, - 0xee, 0xfd, 0xf4, 0xfe, 0xee, 0xfd, 0xf4, 0xfd, 0xee, 0xfd, 0xf4, 0xfc, - 0xef, 0xfd, 0xf5, 0xfd, 0xee, 0xfd, 0xf5, 0xfc, 0xef, 0xfd, 0xf5, 0xfd, - 0xee, 0xfd, 0xf5, 0xfc, 0xef, 0xfd, 0xf5, 0xfd, 0xee, 0xfd, 0xf6, 0xfc, - 0xef, 0xfd, 0xf6, 0xfd, 0xee, 0xfd, 0xf6, 0xfc, 0xef, 0xfd, 0xf6, 0xfd, - 0xee, 0xfd, 0xf7, 0xfc, 0xef, 0xfd, 0xf7, 0xfd, 0xee, 0xfd, 0xf7, 0xfc, - 0xef, 0xfd, 0xf7, 0xfd, 0xee, 0xfd, 0xf8, 0xfc, 0xef, 0xfd, 0xf8, 0xfd, - 0xee, 0xfd, 0xf8, 0xfc, 0xef, 0xfd, 0xf8, 0xfd, 0xee, 0xfd, 0xf8, 0xfc, - 0xef, 0xfd, 0xf9, 0xfd, 0xee, 0xfd, 0xf9, 0xfc, 0xef, 0xfd, 0xf9, 0xfd, - 0xee, 0xfd, 0xf9, 0xfc, 0xef, 0xfd, 0xfa, 0xfd, 0xee, 0xfd, 0xfa, 0xfc, - 0xef, 0xfd, 0xfa, 0xfd, 0xee, 0xfd, 0xfa, 0xfc, 0xef, 0xfd, 0xfa, 0xfd, - 0xee, 0xfd, 0xfb, 0xfc, 0xef, 0xfd, 0xfb, 0xfd, 0xee, 0xfd, 0xfb, 0xfc, - 0xef, 0xfd, 0xfb, 0xfd, 0xee, 0xfd, 0xfc, 0xfc, 0xef, 0xfd, 0xfc, 0xfd, - 0xee, 0xfd, 0xfc, 0xfc, 0xef, 0xfd, 0xfc, 0xfd, 0xee, 0xfd, 0xfc, 0xfc, - 0xef, 0xfd, 0xfd, 0xfb, 0xef, 0xfd, 0xfd, 0xfc, 0xef, 0xfd, 0xfd, 0xfb, - 0xef, 0xfd, 0xfd, 0xfc, 0xef, 0xfd, 0xfe, 0xfb, 0xef, 0xfd, 0xfe, 0xfc, - 0xef, 0xfd, 0xfe, 0xfb, 0xef, 0xfd, 0xfe, 0xfc, 0xef, 0xfd, 0xfe, 0xfb, - 0xef, 0xfd, 0xff, 0xfc, 0xef, 0xfd, 0xff, 0xfb, 0xef, 0xfd, 0x03, 0xf4, - 0x83, 0xfe, 0x0a, 0xf4, 0x83, 0xfe, 0x0f, 0xf4, 0x83, 0xfe, 0x14, 0xf4, - 0x83, 0xfe, 0x17, 0xf4, 0x83, 0xfe, 0x1b, 0xf4, 0x83, 0xfe, 0x1e, 0xf4, - 0x83, 0xfe, 0x20, 0xf4, 0x83, 0xfe, 0x23, 0xf4, 0x83, 0xfe, 0x25, 0xf4, - 0x83, 0xfe, 0x27, 0xf4, 0x83, 0xfe, 0x29, 0xf4, 0x83, 0xfe, 0x2b, 0xf4, - 0x83, 0xfe, 0x2d, 0xf4, 0x83, 0xfe, 0x2f, 0xf4, 0x83, 0xfe, 0x31, 0xf4, - 0x83, 0xfe, 0x32, 0xf4, 0x83, 0xfe, 0x34, 0xf4, 0x83, 0xfe, 0x35, 0xf4, - 0x83, 0xfe, 0x37, 0xf4, 0x83, 0xfe, 0x38, 0xf4, 0x83, 0xfe, 0x3a, 0xf4, - 0x83, 0xfe, 0x3b, 0xf4, 0x83, 0xfe, 0x3c, 0xf4, 0x83, 0xfe, 0x3e, 0xf4, - 0x83, 0xfe, 0x3f, 0xf4, 0x83, 0xfe, 0x40, 0xf4, 0x83, 0xfe, 0x42, 0xf4, - 0x83, 0xfe, 0x43, 0xf4, 0x83, 0xfe, 0x44, 0xf4, 0x83, 0xfe, 0x45, 0xf4, - 0x83, 0xfe, 0x46, 0xf4, 0x83, 0xfe, 0x47, 0xf4, 0x83, 0xfe, 0x48, 0xf4, - 0x83, 0xfe, 0x49, 0xf4, 0x83, 0xfe, 0x4a, 0xf4, 0x83, 0xfe, 0x4b, 0xf4, - 0x83, 0xfe, 0x4c, 0xf4, 0x83, 0xfe, 0x4d, 0xf4, 0x83, 0xfe, 0x4e, 0xf4, - 0x83, 0xfe, 0x4f, 0xf4, 0x83, 0xfe, 0x50, 0xf4, 0x83, 0xfe, 0x51, 0xf4, - 0x83, 0xfe, 0x52, 0xf4, 0x83, 0xfe, 0x53, 0xf4, 0x83, 0xfe, 0x54, 0xf4, - 0x83, 0xfe, 0x55, 0xf4, 0x83, 0xfe, 0x56, 0xf4, 0x83, 0xfe, 0x57, 0xf4, - 0x83, 0xfe, 0x58, 0xf4, 0x83, 0xfe, 0x58, 0xf4, 0x83, 0xfe, 0x59, 0xf4, - 0x83, 0xfe, 0x5a, 0xf4, 0x83, 0xfe, 0x5b, 0xf4, 0x83, 0xfe, 0x5c, 0xf4, - 0x83, 0xfe, 0x5d, 0xf4, 0x83, 0xfe, 0x5d, 0xf4, 0x83, 0xfe, 0x5e, 0xf4, - 0x83, 0xfe, 0x5f, 0xf4, 0x83, 0xfe, 0x60, 0xf4, 0x83, 0xfe, 0x60, 0xf4, - 0x83, 0xfe, 0x61, 0xf4, 0x83, 0xfe, 0x62, 0xf4, 0x83, 0xfe, 0x63, 0xf4, - 0x83, 0xfe, 0x63, 0xf4, 0x83, 0xfe, 0x64, 0xf4, 0x83, 0xfe, 0x65, 0xf4, - 0x83, 0xfe, 0x66, 0xf4, 0x83, 0xfe, 0x66, 0xf4, 0x83, 0xfe, 0x67, 0xf4, - 0x83, 0xfe, 0x68, 0xf4, 0x83, 0xfe, 0x68, 0xf4, 0x83, 0xfe, 0x69, 0xf4, - 0x83, 0xfe, 0x6a, 0xf4, 0x83, 0xfe, 0x6a, 0xf4, 0x83, 0xfe, 0x6b, 0xf4, - 0x83, 0xfe, 0x6c, 0xf4, 0x83, 0xfe, 0x6c, 0xf4, 0x83, 0xfe, 0x6d, 0xf4, - 0x83, 0xfe, 0x6e, 0xf4, 0x83, 0xfe, 0x6e, 0xf4, 0x83, 0xfe, 0x6f, 0xf4, - 0x83, 0xfe, 0x70, 0xf4, 0x83, 0xfe, 0x70, 0xf4, 0x83, 0xfe, 0x71, 0xf4, - 0x83, 0xfe, 0x72, 0xf4, 0x83, 0xfe, 0x72, 0xf4, 0x83, 0xfe, 0x73, 0xf4, - 0x83, 0xfe, 0x73, 0xf4, 0x83, 0xfe, 0x74, 0xf4, 0x83, 0xfe, 0x75, 0xf4, - 0x83, 0xfe, 0x75, 0xf4, 0x83, 0xfe, 0x76, 0xf4, 0x83, 0xfe, 0x76, 0xf4, - 0x83, 0xfe, 0x77, 0xf4, 0x83, 0xfe, 0x78, 0xf4, 0x83, 0xfe, 0x78, 0xf4, - 0x83, 0xfe, 0x79, 0xf4, 0x83, 0xfe, 0x79, 0xf4, 0x83, 0xfe, 0x7a, 0xf4, - 0x83, 0xfe, 0x7a, 0xf4, 0x83, 0xfe, 0x7b, 0xf4, 0x83, 0xfe, 0x7c, 0xf4, - 0x83, 0xfe, 0x7c, 0xf4, 0x83, 0xfe, 0x7d, 0xf4, 0x83, 0xfe, 0x7d, 0xf4, - 0x83, 0xfe, 0x7e, 0xf4, 0x83, 0xfe, 0x7e, 0xf4, 0x83, 0xfe, 0x7f, 0xf4, - 0x83, 0xfe, 0x7f, 0xf4, 0x83, 0xfe, 0x80, 0xf4, 0x83, 0xfe, 0x81, 0xf4, - 0x83, 0xfe, 0x81, 0xf4, 0x83, 0xfe, 0x82, 0xf5, 0x88, 0xfe, 0x82, 0xf5, - 0x88, 0xfe, 0x83, 0xf5, 0x88, 0xfe, 0x83, 0xf5, 0x88, 0xfe, 0x84, 0xf5, - 0x88, 0xfe, 0x84, 0xf5, 0x88, 0xfe, 0x85, 0xf5, 0x88, 0xfe, 0x85, 0xf5, - 0x88, 0xfe, 0x86, 0xf5, 0x88, 0xfe, 0x86, 0xf5, 0x88, 0xfe, 0x87, 0xf5, - 0x88, 0xfe, 0x87, 0xf5, 0x8d, 0xfe, 0x88, 0xf5, 0x8e, 0xfe, 0x88, 0xf5, - 0x8d, 0xfe, 0x89, 0xf5, 0x8e, 0xfe, 0x89, 0xf5, 0x8d, 0xfe, 0x8a, 0xf5, - 0x8e, 0xfe, 0x8a, 0xf5, 0x8d, 0xfe, 0x8b, 0xf5, 0x8e, 0xfe, 0x8b, 0xf5, - 0x8d, 0xfe, 0x8c, 0xf5, 0x8e, 0xfe, 0x8c, 0xf5, 0x8d, 0xfe, 0x8d, 0xf5, - 0x92, 0xfe, 0x8d, 0xf5, 0x93, 0xfe, 0x8e, 0xf5, 0x92, 0xfe, 0x8e, 0xf5, - 0x93, 0xfe, 0x8e, 0xf5, 0x92, 0xfe, 0x8f, 0xf5, 0x93, 0xfe, 0x8f, 0xf5, - 0x92, 0xfe, 0x90, 0xf5, 0x93, 0xfe, 0x90, 0xf5, 0x92, 0xfe, 0x91, 0xf5, - 0x93, 0xfe, 0x91, 0xf5, 0x92, 0xfe, 0x92, 0xf6, 0x97, 0xfe, 0x92, 0xf6, - 0x98, 0xfe, 0x93, 0xf6, 0x97, 0xfe, 0x93, 0xf6, 0x98, 0xfe, 0x94, 0xf6, - 0x97, 0xfe, 0x94, 0xf6, 0x98, 0xfe, 0x94, 0xf6, 0x97, 0xfe, 0x95, 0xf6, - 0x98, 0xfe, 0x95, 0xf6, 0x97, 0xfe, 0x96, 0xf6, 0x98, 0xfe, 0x96, 0xf6, - 0x97, 0xfe, 0x97, 0xf6, 0x9c, 0xfe, 0x97, 0xf6, 0x9c, 0xfe, 0x98, 0xf6, - 0x9c, 0xfe, 0x98, 0xf6, 0x9c, 0xfe, 0x98, 0xf6, 0x9c, 0xfe, 0x99, 0xf6, - 0x9c, 0xfe, 0x99, 0xf6, 0x9c, 0xfe, 0x9a, 0xf6, 0x9c, 0xfe, 0x9a, 0xf6, - 0x9c, 0xfe, 0x9a, 0xf6, 0x9c, 0xfe, 0x9b, 0xf6, 0x9c, 0xfe, 0x9b, 0xf7, - 0xa0, 0xfe, 0x9c, 0xf6, 0x9c, 0xfe, 0x9c, 0xf7, 0xa0, 0xfe, 0x9d, 0xf7, - 0xa1, 0xfe, 0x9d, 0xf7, 0xa0, 0xfe, 0x9d, 0xf7, 0xa1, 0xfe, 0x9e, 0xf7, - 0xa0, 0xfe, 0x9e, 0xf7, 0xa1, 0xfe, 0x9f, 0xf7, 0xa0, 0xfe, 0x9f, 0xf7, - 0xa1, 0xfe, 0x9f, 0xf7, 0xa0, 0xfe, 0xa0, 0xf7, 0xa1, 0xfe, 0xa0, 0xf7, - 0xa0, 0xfe, 0xa1, 0xf7, 0xa5, 0xfe, 0xa1, 0xf7, 0xa5, 0xfe, 0xa1, 0xf7, - 0xa5, 0xfe, 0xa2, 0xf7, 0xa5, 0xfe, 0xa2, 0xf7, 0xa5, 0xfe, 0xa3, 0xf7, - 0xa5, 0xfe, 0xa3, 0xf7, 0xa5, 0xfe, 0xa3, 0xf7, 0xa5, 0xfe, 0xa4, 0xf7, - 0xa5, 0xfe, 0xa4, 0xf7, 0xa5, 0xfe, 0xa5, 0xf7, 0xa5, 0xfe, 0xa5, 0xf8, - 0xa9, 0xfe, 0xa5, 0xf8, 0xa9, 0xfe, 0xa6, 0xf8, 0xa9, 0xfe, 0xa6, 0xf8, - 0xa9, 0xfe, 0xa6, 0xf8, 0xa9, 0xfe, 0xa7, 0xf8, 0xa9, 0xfe, 0xa7, 0xf8, - 0xa9, 0xfe, 0xa8, 0xf8, 0xa9, 0xfe, 0xa8, 0xf8, 0xa9, 0xfe, 0xa8, 0xf8, - 0xa9, 0xfe, 0xa9, 0xf8, 0xa9, 0xfe, 0xa9, 0xf8, 0xad, 0xfe, 0xaa, 0xf8, - 0xad, 0xfe, 0xaa, 0xf8, 0xad, 0xfe, 0xaa, 0xf8, 0xad, 0xfe, 0xab, 0xf8, - 0xad, 0xfe, 0xab, 0xf8, 0xad, 0xfe, 0xab, 0xf8, 0xad, 0xfe, 0xac, 0xf8, - 0xad, 0xfe, 0xac, 0xf8, 0xad, 0xfe, 0xac, 0xf8, 0xad, 0xfe, 0xad, 0xf8, - 0xad, 0xfe, 0xad, 0xf9, 0xb1, 0xfe, 0xae, 0xf9, 0xb1, 0xfe, 0xae, 0xf9, - 0xb1, 0xfe, 0xae, 0xf9, 0xb1, 0xfe, 0xaf, 0xf9, 0xb1, 0xfe, 0xaf, 0xf9, - 0xb1, 0xfe, 0xaf, 0xf9, 0xb1, 0xfe, 0xb0, 0xf9, 0xb1, 0xfe, 0xb0, 0xf9, - 0xb1, 0xfe, 0xb0, 0xf9, 0xb1, 0xfe, 0xb1, 0xf9, 0xb1, 0xfe, 0xb1, 0xf9, - 0xb1, 0xfe, 0xb2, 0xf9, 0xb2, 0xfe, 0xb2, 0xf9, 0xb5, 0xfe, 0xb2, 0xf9, - 0xb5, 0xfe, 0xb3, 0xf9, 0xb5, 0xfe, 0xb3, 0xf9, 0xb5, 0xfe, 0xb3, 0xf9, - 0xb5, 0xfe, 0xb4, 0xf9, 0xb5, 0xfe, 0xb4, 0xf9, 0xb5, 0xfe, 0xb4, 0xf9, - 0xb5, 0xfe, 0xb5, 0xf9, 0xb5, 0xfe, 0xb5, 0xf9, 0xb5, 0xfe, 0xb5, 0xf9, - 0xb5, 0xfe, 0xb6, 0xfa, 0xb8, 0xfe, 0xb6, 0xfa, 0xb9, 0xfe, 0xb6, 0xfa, - 0xb8, 0xfe, 0xb7, 0xfa, 0xb9, 0xfe, 0xb7, 0xfa, 0xb8, 0xfe, 0xb7, 0xfa, - 0xb9, 0xfe, 0xb8, 0xfa, 0xb8, 0xfe, 0xb8, 0xfa, 0xb9, 0xfe, 0xb8, 0xfa, - 0xb8, 0xfe, 0xb9, 0xfa, 0xb9, 0xfe, 0xb9, 0xfa, 0xb9, 0xfe, 0xb9, 0xfa, - 0xbc, 0xfe, 0xba, 0xfa, 0xbc, 0xfe, 0xba, 0xfa, 0xbc, 0xfe, 0xba, 0xfa, - 0xbc, 0xfe, 0xbb, 0xfa, 0xbc, 0xfe, 0xbb, 0xfa, 0xbc, 0xfe, 0xbb, 0xfa, - 0xbc, 0xfe, 0xbc, 0xfa, 0xbc, 0xfe, 0xbc, 0xfa, 0xbc, 0xfe, 0xbc, 0xfa, - 0xbc, 0xfe, 0xbd, 0xfa, 0xbd, 0xfe, 0xbd, 0xfa, 0xc0, 0xfe, 0xbd, 0xfa, - 0xc0, 0xfe, 0xbe, 0xfa, 0xc0, 0xfe, 0xbe, 0xfa, 0xc0, 0xfe, 0xbe, 0xfa, - 0xc0, 0xfe, 0xbf, 0xfa, 0xc0, 0xfe, 0xbf, 0xfa, 0xc0, 0xfe, 0xbf, 0xfa, - 0xc0, 0xfe, 0xc0, 0xfa, 0xc0, 0xfe, 0xc0, 0xfa, 0xc0, 0xfe, 0xc0, 0xfa, - 0xc0, 0xfe, 0xc1, 0xfb, 0xc3, 0xfe, 0xc1, 0xfb, 0xc3, 0xfe, 0xc1, 0xfb, - 0xc3, 0xfe, 0xc1, 0xfb, 0xc3, 0xfe, 0xc2, 0xfb, 0xc3, 0xfe, 0xc2, 0xfb, - 0xc3, 0xfe, 0xc2, 0xfb, 0xc3, 0xfe, 0xc3, 0xfb, 0xc3, 0xfe, 0xc3, 0xfb, - 0xc3, 0xfe, 0xc3, 0xfb, 0xc3, 0xfe, 0xc4, 0xfb, 0xc4, 0xfe, 0xc4, 0xfb, - 0xc4, 0xfe, 0xc4, 0xfb, 0xc4, 0xfe, 0xc5, 0xfb, 0xc6, 0xfe, 0xc5, 0xfb, - 0xc7, 0xfe, 0xc5, 0xfb, 0xc6, 0xfe, 0xc6, 0xfb, 0xc7, 0xfe, 0xc6, 0xfb, - 0xc6, 0xfe, 0xc6, 0xfb, 0xc7, 0xfe, 0xc6, 0xfb, 0xc6, 0xfe, 0xc7, 0xfb, - 0xc7, 0xfe, 0xc7, 0xfb, 0xc7, 0xfe, 0xc7, 0xfb, 0xc7, 0xfe, 0xc8, 0xfb, - 0xc8, 0xfe, 0xc8, 0xfc, 0xca, 0xfe, 0xc8, 0xfc, 0xca, 0xfe, 0xc9, 0xfc, - 0xca, 0xfe, 0xc9, 0xfc, 0xca, 0xfe, 0xc9, 0xfc, 0xca, 0xfe, 0xc9, 0xfc, - 0xca, 0xfe, 0xca, 0xfc, 0xca, 0xfe, 0xca, 0xfc, 0xca, 0xfe, 0xca, 0xfc, - 0xca, 0xfe, 0xcb, 0xfc, 0xcb, 0xfe, 0xcb, 0xfc, 0xcb, 0xfe, 0xcb, 0xfc, - 0xcd, 0xfe, 0xcc, 0xfc, 0xcd, 0xfe, 0xcc, 0xfc, 0xcd, 0xfe, 0xcc, 0xfc, - 0xcd, 0xfe, 0xcc, 0xfc, 0xcd, 0xfe, 0xcd, 0xfc, 0xcd, 0xfe, 0xcd, 0xfc, - 0xcd, 0xfe, 0xcd, 0xfc, 0xcd, 0xfe, 0xce, 0xfc, 0xce, 0xfe, 0xce, 0xfc, - 0xce, 0xfe, 0xce, 0xfc, 0xce, 0xfe, 0xce, 0xfc, 0xce, 0xfe, 0xcf, 0xfc, - 0xcf, 0xfe, 0xcf, 0xfd, 0xd0, 0xfe, 0xcf, 0xfd, 0xd0, 0xfe, 0xd0, 0xfd, - 0xd0, 0xfe, 0xd0, 0xfd, 0xd0, 0xfe, 0xd0, 0xfd, 0xd0, 0xfe, 0xd0, 0xfd, - 0xd0, 0xfe, 0xd1, 0xfd, 0xd1, 0xfe, 0xd1, 0xfd, 0xd1, 0xfe, 0xd1, 0xfd, - 0xd1, 0xfe, 0xd2, 0xfd, 0xd2, 0xfe, 0xd2, 0xfd, 0xd2, 0xfe, 0xd2, 0xfd, - 0xd3, 0xfe, 0xd2, 0xfd, 0xd4, 0xfe, 0xd3, 0xfd, 0xd3, 0xfe, 0xd3, 0xfd, - 0xd4, 0xfe, 0xd3, 0xfd, 0xd3, 0xfe, 0xd4, 0xfd, 0xd4, 0xfe, 0xd4, 0xfd, - 0xd4, 0xfe, 0xd4, 0xfd, 0xd4, 0xfe, 0xd4, 0xfd, 0xd4, 0xfe, 0xd5, 0xfd, - 0xd5, 0xfe, 0xd5, 0xfd, 0xd5, 0xfe, 0xd5, 0xfe, 0xd6, 0xfe, 0xd6, 0xfe, - 0xd7, 0xfe, 0xd6, 0xfe, 0xd6, 0xfe, 0xd6, 0xfe, 0xd7, 0xfe, 0xd6, 0xfe, - 0xd6, 0xfe, 0xd7, 0xfe, 0xd7, 0xfe, 0xd7, 0xfe, 0xd7, 0xfe, 0xd7, 0xfe, - 0xd7, 0xfe, 0xd7, 0xfe, 0xd7, 0xfe, 0xd8, 0xfe, 0xd8, 0xfe, 0xd8, 0xfe, - 0xd8, 0xfe, 0xd8, 0xfe, 0xd8, 0xfe, 0xd9, 0xfe, 0xd9, 0xfe, 0xd9, 0xfe, - 0xd9, 0xfe, 0xd9, 0xfe, 0xda, 0xfe, 0xd9, 0xfe, 0xd9, 0xfe, 0xda, 0xfe, - 0xda, 0xfe, 0xda, 0xfe, 0xda, 0xfe, 0xda, 0xfe, 0xda, 0xfe, 0xda, 0xfe, - 0xda, 0xfe, 0xdb, 0xfe, 0xdb, 0xfe, 0xdb, 0xfe, 0xdb, 0xfe, 0xdb, 0xfe, - 0xdb, 0xfe, 0xdb, 0xfe, 0xdb, 0xfe, 0xdc, 0xfe, 0xdc, 0xfe, 0xdc, 0xfe, - 0xdc, 0xfe, 0xdc, 0xfe, 0xdc, 0xfe, 0xdc, 0xfe, 0xdd, 0xfe, 0xdd, 0xfe, - 0xdd, 0xff, 0xdd, 0xfe, 0xdd, 0xff, 0xdd, 0xfe, 0xdd, 0xff, 0xde, 0xfe, - 0xde, 0xff, 0xde, 0xfe, 0xde, 0xff, 0xde, 0xfe, 0xde, 0xff, 0xde, 0xfe, - 0xde, 0xff, 0xdf, 0xfe, 0xdf, 0xff, 0xdf, 0xfe, 0xdf, 0xfd, 0xdf, 0xfe, - 0xdf, 0xfd, 0xdf, 0xfe, 0xdf, 0xfd, 0xe0, 0xfe, 0xe0, 0xfd, 0xe0, 0xfe, - 0xe0, 0xfd, 0xe0, 0xfe, 0xe0, 0xfd, 0xe1, 0xfe, 0xe1, 0xfd, 0xe1, 0xfe, - 0xe1, 0xfd, 0xe1, 0xfe, 0xe1, 0xfd, 0xe1, 0xfe, 0xe1, 0xfd, 0xe2, 0xfe, - 0xe2, 0xfd, 0xe2, 0xff, 0xe2, 0xfe, 0xe2, 0xfe, 0xe2, 0xfd, 0xe2, 0xfe, - 0xe2, 0xfe, 0xe2, 0xfe, 0xe3, 0xfd, 0xe2, 0xfe, 0xe3, 0xfe, 0xe4, 0xfe, - 0xe3, 0xfe, 0xe4, 0xfe, 0xe3, 0xfe, 0xe4, 0xfe, 0xe4, 0xfe, 0xe4, 0xfe, - 0xe4, 0xfe, 0xe4, 0xfe, 0xe4, 0xfe, 0xe4, 0xfe, 0xe4, 0xfe, 0xe5, 0xfe, - 0xe4, 0xfe, 0xe5, 0xfe, 0xe4, 0xfe, 0xe5, 0xfe, 0xe4, 0xfe, 0xe5, 0xfe, - 0xe4, 0xfe, 0xe6, 0xfe, 0xe4, 0xfe, 0xe6, 0xfe, 0xe4, 0xfe, 0xe6, 0xfe, - 0xe4, 0xfe, 0xe6, 0xfe, 0xe4, 0xfe, 0xe7, 0xfe, 0xe4, 0xfe, 0xe7, 0xfe, - 0xe4, 0xfe, 0xe7, 0xfe, 0xe4, 0xfe, 0xe7, 0xfe, 0xe4, 0xfe, 0xe8, 0xfe, - 0xe4, 0xfe, 0xe8, 0xfe, 0xe4, 0xfe, 0xe8, 0xfe, 0xe4, 0xfe, 0xe8, 0xfd, - 0xe4, 0xfe, 0xe9, 0xfe, 0xe4, 0xfe, 0xe9, 0xfd, 0xe4, 0xfe, 0xe9, 0xfe, - 0xee, 0xfe, 0xe9, 0xfe, 0xee, 0xfe, 0xea, 0xfe, 0xee, 0xfe, 0xea, 0xfe, - 0xee, 0xfe, 0xea, 0xfe, 0xee, 0xfe, 0xea, 0xfe, 0xee, 0xfe, 0xeb, 0xfe, - 0xee, 0xfe, 0xeb, 0xfe, 0xee, 0xfe, 0xeb, 0xfe, 0xee, 0xfe, 0xeb, 0xfe, - 0xee, 0xfe, 0xec, 0xfe, 0xee, 0xfe, 0xec, 0xfe, 0xee, 0xfe, 0xec, 0xfe, - 0xee, 0xfe, 0xec, 0xfe, 0xee, 0xfe, 0xec, 0xfe, 0xee, 0xfe, 0xed, 0xfe, - 0xee, 0xfe, 0xed, 0xfe, 0xee, 0xfe, 0xed, 0xfe, 0xee, 0xfe, 0xed, 0xfe, - 0xee, 0xfe, 0xee, 0xfe, 0xee, 0xfe, 0xed, 0xfe, 0xee, 0xfe, 0xee, 0xfe, - 0xee, 0xfe, 0xee, 0xfe, 0xee, 0xfe, 0xef, 0xfe, 0xee, 0xfe, 0xef, 0xfe, - 0xee, 0xfe, 0xef, 0xfe, 0xee, 0xfe, 0xef, 0xfe, 0xee, 0xfe, 0xf0, 0xfe, - 0xee, 0xfe, 0xf0, 0xfe, 0xee, 0xfe, 0xf0, 0xfe, 0xee, 0xfe, 0xf0, 0xfe, - 0xee, 0xfe, 0xf1, 0xfe, 0xee, 0xfe, 0xf1, 0xfe, 0xee, 0xfe, 0xf1, 0xfe, - 0xee, 0xfe, 0xf1, 0xfe, 0xee, 0xfe, 0xf2, 0xfe, 0xee, 0xfe, 0xf2, 0xfe, - 0xee, 0xfe, 0xf2, 0xfe, 0xee, 0xfe, 0xf2, 0xfe, 0xee, 0xfe, 0xf2, 0xfe, - 0xee, 0xfe, 0xf3, 0xfe, 0xee, 0xfe, 0xf3, 0xfe, 0xee, 0xfe, 0xf3, 0xfe, - 0xee, 0xfe, 0xf3, 0xfe, 0xee, 0xfe, 0xf4, 0xfe, 0xee, 0xfe, 0xf4, 0xfe, - 0xee, 0xfe, 0xf4, 0xfe, 0xee, 0xfe, 0xf4, 0xfc, 0xef, 0xfe, 0xf5, 0xfe, - 0xee, 0xfe, 0xf5, 0xfc, 0xef, 0xfe, 0xf5, 0xfe, 0xee, 0xfe, 0xf5, 0xfc, - 0xef, 0xfe, 0xf5, 0xfe, 0xee, 0xfe, 0xf6, 0xfc, 0xef, 0xfe, 0xf6, 0xfe, - 0xee, 0xfe, 0xf6, 0xfc, 0xef, 0xfe, 0xf6, 0xfe, 0xee, 0xfe, 0xf7, 0xfc, - 0xef, 0xfe, 0xf7, 0xfe, 0xee, 0xfe, 0xf7, 0xfc, 0xef, 0xfe, 0xf7, 0xfe, - 0xee, 0xfe, 0xf8, 0xfc, 0xef, 0xfe, 0xf8, 0xfe, 0xee, 0xfe, 0xf8, 0xfc, - 0xef, 0xfe, 0xf8, 0xfe, 0xee, 0xfe, 0xf8, 0xfc, 0xef, 0xfe, 0xf9, 0xfe, - 0xee, 0xfe, 0xf9, 0xfc, 0xef, 0xfe, 0xf9, 0xfe, 0xee, 0xfe, 0xf9, 0xfc, - 0xef, 0xfe, 0xfa, 0xfe, 0xee, 0xfe, 0xfa, 0xfc, 0xef, 0xfe, 0xfa, 0xfe, - 0xee, 0xfe, 0xfa, 0xfc, 0xef, 0xfe, 0xfa, 0xfe, 0xee, 0xfe, 0xfb, 0xfc, - 0xef, 0xfe, 0xfb, 0xfe, 0xee, 0xfe, 0xfb, 0xfc, 0xef, 0xfe, 0xfb, 0xfe, - 0xee, 0xfe, 0xfc, 0xfc, 0xef, 0xfe, 0xfc, 0xfe, 0xee, 0xfe, 0xfc, 0xfc, - 0xef, 0xfe, 0xfc, 0xfe, 0xee, 0xfe, 0xfc, 0xfc, 0xef, 0xfe, 0xfd, 0xfb, - 0xef, 0xfe, 0xfd, 0xfc, 0xef, 0xfe, 0xfd, 0xfb, 0xef, 0xfe, 0xfd, 0xfc, - 0xef, 0xfe, 0xfe, 0xfb, 0xef, 0xfe, 0xfe, 0xfc, 0xef, 0xfe, 0xfe, 0xfb, - 0xef, 0xfe, 0xfe, 0xfc, 0xef, 0xfe, 0xfe, 0xfb, 0xef, 0xfe, 0xff, 0xfc, - 0xef, 0xfe, 0xff, 0xfb, 0xef, 0xfe, 0x03, 0xf4, 0x83, 0xfe, 0x0a, 0xf4, - 0x83, 0xfe, 0x0f, 0xf4, 0x83, 0xfe, 0x14, 0xf4, 0x83, 0xfe, 0x17, 0xf4, - 0x83, 0xfe, 0x1b, 0xf4, 0x83, 0xfe, 0x1e, 0xf4, 0x83, 0xfe, 0x20, 0xf4, - 0x83, 0xfe, 0x23, 0xf4, 0x83, 0xfe, 0x25, 0xf4, 0x83, 0xfe, 0x27, 0xf4, - 0x83, 0xfe, 0x29, 0xf4, 0x83, 0xfe, 0x2b, 0xf4, 0x83, 0xfe, 0x2d, 0xf4, - 0x83, 0xfe, 0x2f, 0xf4, 0x83, 0xfe, 0x31, 0xf4, 0x83, 0xfe, 0x32, 0xf4, - 0x83, 0xfe, 0x34, 0xf4, 0x83, 0xfe, 0x35, 0xf4, 0x83, 0xfe, 0x37, 0xf4, - 0x83, 0xfe, 0x38, 0xf4, 0x83, 0xfe, 0x3a, 0xf4, 0x83, 0xfe, 0x3b, 0xf4, - 0x83, 0xfe, 0x3c, 0xf4, 0x83, 0xfe, 0x3e, 0xf4, 0x83, 0xfe, 0x3f, 0xf4, - 0x83, 0xfe, 0x40, 0xf4, 0x83, 0xfe, 0x42, 0xf4, 0x83, 0xfe, 0x43, 0xf4, - 0x83, 0xfe, 0x44, 0xf4, 0x83, 0xfe, 0x45, 0xf4, 0x83, 0xfe, 0x46, 0xf4, - 0x83, 0xfe, 0x47, 0xf4, 0x83, 0xfe, 0x48, 0xf4, 0x83, 0xfe, 0x49, 0xf4, - 0x83, 0xfe, 0x4a, 0xf4, 0x83, 0xfe, 0x4b, 0xf4, 0x83, 0xfe, 0x4c, 0xf4, - 0x83, 0xfe, 0x4d, 0xf4, 0x83, 0xfe, 0x4e, 0xf4, 0x83, 0xfe, 0x4f, 0xf4, - 0x83, 0xfe, 0x50, 0xf4, 0x83, 0xfe, 0x51, 0xf4, 0x83, 0xfe, 0x52, 0xf4, - 0x83, 0xfe, 0x53, 0xf4, 0x83, 0xfe, 0x54, 0xf4, 0x83, 0xfe, 0x55, 0xf4, - 0x83, 0xfe, 0x56, 0xf4, 0x83, 0xfe, 0x57, 0xf4, 0x83, 0xfe, 0x58, 0xf4, - 0x83, 0xfe, 0x58, 0xf4, 0x83, 0xfe, 0x59, 0xf4, 0x83, 0xfe, 0x5a, 0xf4, - 0x83, 0xfe, 0x5b, 0xf4, 0x83, 0xfe, 0x5c, 0xf4, 0x83, 0xfe, 0x5d, 0xf4, - 0x83, 0xfe, 0x5d, 0xf4, 0x83, 0xfe, 0x5e, 0xf4, 0x83, 0xfe, 0x5f, 0xf4, - 0x83, 0xfe, 0x60, 0xf4, 0x83, 0xfe, 0x60, 0xf4, 0x83, 0xfe, 0x61, 0xf4, - 0x83, 0xfe, 0x62, 0xf4, 0x83, 0xfe, 0x63, 0xf4, 0x83, 0xfe, 0x63, 0xf4, - 0x83, 0xfe, 0x64, 0xf4, 0x83, 0xfe, 0x65, 0xf4, 0x83, 0xfe, 0x66, 0xf4, - 0x83, 0xfe, 0x66, 0xf4, 0x83, 0xfe, 0x67, 0xf4, 0x83, 0xfe, 0x68, 0xf4, - 0x83, 0xfe, 0x68, 0xf4, 0x83, 0xfe, 0x69, 0xf4, 0x83, 0xfe, 0x6a, 0xf4, - 0x83, 0xfe, 0x6a, 0xf4, 0x83, 0xfe, 0x6b, 0xf4, 0x83, 0xfe, 0x6c, 0xf4, - 0x83, 0xfe, 0x6c, 0xf4, 0x83, 0xfe, 0x6d, 0xf4, 0x83, 0xfe, 0x6e, 0xf4, - 0x83, 0xfe, 0x6e, 0xf4, 0x83, 0xfe, 0x6f, 0xf4, 0x83, 0xfe, 0x70, 0xf4, - 0x83, 0xfe, 0x70, 0xf4, 0x83, 0xfe, 0x71, 0xf4, 0x83, 0xfe, 0x72, 0xf4, - 0x83, 0xfe, 0x72, 0xf4, 0x83, 0xfe, 0x73, 0xf4, 0x83, 0xfe, 0x73, 0xf4, - 0x83, 0xfe, 0x74, 0xf4, 0x83, 0xfe, 0x75, 0xf4, 0x83, 0xfe, 0x75, 0xf4, - 0x83, 0xfe, 0x76, 0xf4, 0x83, 0xfe, 0x76, 0xf4, 0x83, 0xfe, 0x77, 0xf4, - 0x83, 0xfe, 0x78, 0xf4, 0x83, 0xfe, 0x78, 0xf4, 0x83, 0xfe, 0x79, 0xf4, - 0x83, 0xfe, 0x79, 0xf4, 0x83, 0xfe, 0x7a, 0xf4, 0x83, 0xfe, 0x7a, 0xf4, - 0x83, 0xfe, 0x7b, 0xf4, 0x83, 0xfe, 0x7c, 0xf4, 0x83, 0xfe, 0x7c, 0xf4, - 0x83, 0xfe, 0x7d, 0xf4, 0x83, 0xfe, 0x7d, 0xf4, 0x83, 0xfe, 0x7e, 0xf4, - 0x83, 0xfe, 0x7e, 0xf4, 0x83, 0xfe, 0x7f, 0xf4, 0x85, 0xfe, 0x7f, 0xf4, - 0x83, 0xfe, 0x80, 0xf4, 0x85, 0xfe, 0x81, 0xf4, 0x86, 0xfe, 0x81, 0xf4, - 0x85, 0xfe, 0x82, 0xf4, 0x86, 0xfe, 0x82, 0xf4, 0x85, 0xfe, 0x83, 0xf4, - 0x86, 0xfe, 0x83, 0xf4, 0x85, 0xfe, 0x84, 0xf4, 0x86, 0xfe, 0x84, 0xf4, - 0x85, 0xfe, 0x85, 0xf5, 0x8b, 0xfe, 0x85, 0xf5, 0x8b, 0xfe, 0x86, 0xf5, - 0x8b, 0xfe, 0x86, 0xf5, 0x8b, 0xfe, 0x87, 0xf5, 0x8b, 0xfe, 0x87, 0xf5, - 0x8d, 0xfe, 0x88, 0xf5, 0x8b, 0xfe, 0x88, 0xf5, 0x8d, 0xfe, 0x89, 0xf5, - 0x8e, 0xfe, 0x89, 0xf5, 0x8d, 0xfe, 0x8a, 0xf5, 0x8e, 0xfe, 0x8a, 0xf5, - 0x8d, 0xfe, 0x8b, 0xf5, 0x8e, 0xfe, 0x8b, 0xf5, 0x90, 0xfe, 0x8c, 0xf5, - 0x90, 0xfe, 0x8c, 0xf5, 0x90, 0xfe, 0x8d, 0xf5, 0x90, 0xfe, 0x8d, 0xf5, - 0x90, 0xfe, 0x8e, 0xf5, 0x90, 0xfe, 0x8e, 0xf5, 0x90, 0xfe, 0x8e, 0xf5, - 0x90, 0xfe, 0x8f, 0xf5, 0x90, 0xfe, 0x8f, 0xf6, 0x95, 0xfe, 0x90, 0xf6, - 0x95, 0xfe, 0x90, 0xf6, 0x95, 0xfe, 0x91, 0xf6, 0x95, 0xfe, 0x91, 0xf6, - 0x95, 0xfe, 0x92, 0xf6, 0x95, 0xfe, 0x92, 0xf6, 0x95, 0xfe, 0x93, 0xf6, - 0x97, 0xfe, 0x93, 0xf6, 0x95, 0xfe, 0x94, 0xf6, 0x97, 0xfe, 0x94, 0xf6, - 0x98, 0xfe, 0x94, 0xf6, 0x97, 0xfe, 0x95, 0xf6, 0x98, 0xfe, 0x95, 0xf6, - 0x97, 0xfe, 0x96, 0xf6, 0x98, 0xfe, 0x96, 0xf6, 0x9a, 0xfe, 0x97, 0xf6, - 0x9a, 0xfe, 0x97, 0xf6, 0x9a, 0xfe, 0x98, 0xf6, 0x9a, 0xfe, 0x98, 0xf6, - 0x9a, 0xfe, 0x98, 0xf6, 0x9a, 0xfe, 0x99, 0xf6, 0x9a, 0xfe, 0x99, 0xf7, - 0x9e, 0xfe, 0x9a, 0xf7, 0x9f, 0xfe, 0x9a, 0xf7, 0x9e, 0xfe, 0x9a, 0xf7, - 0x9f, 0xfe, 0x9b, 0xf7, 0x9e, 0xfe, 0x9b, 0xf7, 0x9f, 0xfe, 0x9c, 0xf7, - 0x9e, 0xfe, 0x9c, 0xf7, 0xa0, 0xfe, 0x9d, 0xf7, 0x9e, 0xfe, 0x9d, 0xf7, - 0xa0, 0xfe, 0x9d, 0xf7, 0xa1, 0xfe, 0x9e, 0xf7, 0xa0, 0xfe, 0x9e, 0xf7, - 0xa1, 0xfe, 0x9f, 0xf7, 0xa0, 0xfe, 0x9f, 0xf7, 0xa1, 0xfe, 0x9f, 0xf7, - 0xa3, 0xfe, 0xa0, 0xf7, 0xa3, 0xfe, 0xa0, 0xf7, 0xa3, 0xfe, 0xa1, 0xf7, - 0xa3, 0xfe, 0xa1, 0xf7, 0xa3, 0xfe, 0xa1, 0xf7, 0xa3, 0xfe, 0xa2, 0xf7, - 0xa3, 0xfe, 0xa2, 0xf7, 0xa3, 0xfe, 0xa3, 0xf7, 0xa3, 0xfe, 0xa3, 0xf8, - 0xa7, 0xfe, 0xa3, 0xf8, 0xa7, 0xfe, 0xa4, 0xf8, 0xa7, 0xfe, 0xa4, 0xf8, - 0xa7, 0xfe, 0xa5, 0xf8, 0xa7, 0xfe, 0xa5, 0xf8, 0xa7, 0xfe, 0xa5, 0xf8, - 0xa7, 0xfe, 0xa6, 0xf8, 0xa9, 0xfe, 0xa6, 0xf8, 0xa9, 0xfe, 0xa6, 0xf8, - 0xa9, 0xfe, 0xa7, 0xf8, 0xa9, 0xfe, 0xa7, 0xf8, 0xa9, 0xfe, 0xa8, 0xf8, - 0xa9, 0xfe, 0xa8, 0xf8, 0xab, 0xfe, 0xa8, 0xf8, 0xab, 0xfe, 0xa9, 0xf8, - 0xab, 0xfe, 0xa9, 0xf8, 0xab, 0xfe, 0xaa, 0xf8, 0xab, 0xfe, 0xaa, 0xf8, - 0xab, 0xfe, 0xaa, 0xf8, 0xab, 0xfe, 0xab, 0xf8, 0xab, 0xfe, 0xab, 0xf8, - 0xab, 0xfe, 0xab, 0xf8, 0xaf, 0xfe, 0xac, 0xf8, 0xaf, 0xfe, 0xac, 0xf8, - 0xaf, 0xfe, 0xac, 0xf8, 0xaf, 0xfe, 0xad, 0xf8, 0xaf, 0xfe, 0xad, 0xf8, - 0xaf, 0xfe, 0xae, 0xf8, 0xaf, 0xfe, 0xae, 0xf9, 0xb1, 0xfe, 0xae, 0xf8, - 0xaf, 0xfe, 0xaf, 0xf9, 0xb1, 0xfe, 0xaf, 0xf9, 0xb1, 0xfe, 0xaf, 0xf9, - 0xb1, 0xfe, 0xb0, 0xf9, 0xb1, 0xfe, 0xb0, 0xf9, 0xb1, 0xfe, 0xb0, 0xf9, - 0xb1, 0xfe, 0xb1, 0xf9, 0xb3, 0xfe, 0xb1, 0xf9, 0xb3, 0xfe, 0xb2, 0xf9, - 0xb3, 0xfe, 0xb2, 0xf9, 0xb3, 0xfe, 0xb2, 0xf9, 0xb3, 0xfe, 0xb3, 0xf9, - 0xb3, 0xfe, 0xb3, 0xf9, 0xb3, 0xfe, 0xb3, 0xf9, 0xb3, 0xfe, 0xb4, 0xf9, - 0xb4, 0xfe, 0xb4, 0xf9, 0xb7, 0xfe, 0xb4, 0xf9, 0xb7, 0xfe, 0xb5, 0xf9, - 0xb7, 0xfe, 0xb5, 0xf9, 0xb7, 0xfe, 0xb5, 0xf9, 0xb7, 0xfe, 0xb6, 0xf9, - 0xb7, 0xfe, 0xb6, 0xf9, 0xb7, 0xfe, 0xb6, 0xfa, 0xb8, 0xfe, 0xb7, 0xfa, - 0xb9, 0xfe, 0xb7, 0xfa, 0xb8, 0xfe, 0xb7, 0xfa, 0xb9, 0xfe, 0xb8, 0xfa, - 0xb8, 0xfe, 0xb8, 0xfa, 0xb9, 0xfe, 0xb8, 0xfa, 0xba, 0xfe, 0xb9, 0xfa, - 0xbb, 0xfe, 0xb9, 0xfa, 0xba, 0xfe, 0xb9, 0xfa, 0xbb, 0xfe, 0xba, 0xfa, - 0xba, 0xfe, 0xba, 0xfa, 0xbb, 0xfe, 0xba, 0xfa, 0xba, 0xfe, 0xbb, 0xfa, - 0xbb, 0xfe, 0xbb, 0xfa, 0xbb, 0xfe, 0xbb, 0xfa, 0xbe, 0xfe, 0xbc, 0xfa, - 0xbe, 0xfe, 0xbc, 0xfa, 0xbe, 0xfe, 0xbc, 0xfa, 0xbe, 0xfe, 0xbd, 0xfa, - 0xbe, 0xfe, 0xbd, 0xfa, 0xbe, 0xfe, 0xbd, 0xfa, 0xbe, 0xfe, 0xbe, 0xfa, - 0xc0, 0xfe, 0xbe, 0xfa, 0xc0, 0xfe, 0xbe, 0xfa, 0xc0, 0xfe, 0xbf, 0xfa, - 0xc0, 0xfe, 0xbf, 0xfa, 0xc0, 0xfe, 0xbf, 0xfa, 0xc0, 0xfe, 0xc0, 0xfb, - 0xc1, 0xfe, 0xc0, 0xfb, 0xc2, 0xfe, 0xc0, 0xfb, 0xc1, 0xfe, 0xc1, 0xfb, - 0xc2, 0xfe, 0xc1, 0xfb, 0xc1, 0xfe, 0xc1, 0xfb, 0xc2, 0xfe, 0xc1, 0xfb, - 0xc1, 0xfe, 0xc2, 0xfb, 0xc2, 0xfe, 0xc2, 0xfb, 0xc2, 0xfe, 0xc2, 0xfb, - 0xc5, 0xfe, 0xc3, 0xfb, 0xc5, 0xfe, 0xc3, 0xfb, 0xc5, 0xfe, 0xc3, 0xfb, - 0xc5, 0xfe, 0xc4, 0xfb, 0xc5, 0xfe, 0xc4, 0xfb, 0xc5, 0xfe, 0xc4, 0xfb, - 0xc5, 0xfe, 0xc5, 0xfb, 0xc5, 0xfe, 0xc5, 0xfb, 0xc5, 0xfe, 0xc5, 0xfb, - 0xc6, 0xfe, 0xc6, 0xfb, 0xc7, 0xfe, 0xc6, 0xfb, 0xc6, 0xfe, 0xc6, 0xfb, - 0xc7, 0xfe, 0xc6, 0xfb, 0xc6, 0xfe, 0xc7, 0xfb, 0xc7, 0xfe, 0xc7, 0xfc, - 0xc8, 0xfe, 0xc7, 0xfc, 0xc9, 0xfe, 0xc8, 0xfc, 0xc8, 0xfe, 0xc8, 0xfc, - 0xc9, 0xfe, 0xc8, 0xfc, 0xc8, 0xfe, 0xc9, 0xfc, 0xc9, 0xfe, 0xc9, 0xfc, - 0xc9, 0xfe, 0xc9, 0xfc, 0xc9, 0xfe, 0xc9, 0xfc, 0xc9, 0xfe, 0xca, 0xfc, - 0xcc, 0xfe, 0xca, 0xfc, 0xcc, 0xfe, 0xca, 0xfc, 0xcc, 0xfe, 0xcb, 0xfc, - 0xcc, 0xfe, 0xcb, 0xfc, 0xcc, 0xfe, 0xcb, 0xfc, 0xcc, 0xfe, 0xcc, 0xfc, - 0xcc, 0xfe, 0xcc, 0xfc, 0xcd, 0xfe, 0xcc, 0xfc, 0xcd, 0xfe, 0xcc, 0xfc, - 0xcd, 0xfe, 0xcd, 0xfc, 0xcd, 0xfe, 0xcd, 0xfc, 0xcd, 0xfe, 0xcd, 0xfc, - 0xcd, 0xfe, 0xce, 0xfc, 0xcf, 0xfe, 0xce, 0xfc, 0xcf, 0xfe, 0xce, 0xfc, - 0xcf, 0xfe, 0xce, 0xfc, 0xcf, 0xfe, 0xcf, 0xfc, 0xcf, 0xfe, 0xcf, 0xfc, - 0xcf, 0xfe, 0xcf, 0xfc, 0xcf, 0xfe, 0xd0, 0xfc, 0xd0, 0xfe, 0xd0, 0xfc, - 0xd0, 0xfe, 0xd0, 0xfc, 0xd0, 0xfe, 0xd0, 0xfc, 0xd0, 0xfe, 0xd1, 0xfd, - 0xd2, 0xfe, 0xd1, 0xfd, 0xd2, 0xfe, 0xd1, 0xfd, 0xd2, 0xfe, 0xd2, 0xfd, - 0xd2, 0xfe, 0xd2, 0xfd, 0xd2, 0xfe, 0xd2, 0xfd, 0xd2, 0xfe, 0xd2, 0xfd, - 0xd2, 0xfe, 0xd3, 0xfd, 0xd3, 0xfe, 0xd3, 0xfd, 0xd4, 0xfe, 0xd3, 0xfd, - 0xd3, 0xfe, 0xd4, 0xfd, 0xd4, 0xfe, 0xd4, 0xfd, 0xd4, 0xfe, 0xd4, 0xfd, - 0xd4, 0xfe, 0xd4, 0xfd, 0xd5, 0xfe, 0xd5, 0xfd, 0xd5, 0xfe, 0xd5, 0xfd, - 0xd5, 0xfe, 0xd5, 0xfd, 0xd5, 0xfe, 0xd6, 0xfd, 0xd6, 0xfe, 0xd6, 0xfd, - 0xd6, 0xfe, 0xd6, 0xfd, 0xd6, 0xfe, 0xd6, 0xfd, 0xd6, 0xfe, 0xd7, 0xfd, - 0xd7, 0xfe, 0xd7, 0xfe, 0xd8, 0xfe, 0xd7, 0xfe, 0xd8, 0xfe, 0xd7, 0xfe, - 0xd8, 0xfe, 0xd8, 0xfe, 0xd8, 0xfe, 0xd8, 0xfe, 0xd8, 0xfe, 0xd8, 0xfe, - 0xd8, 0xfe, 0xd9, 0xfe, 0xd9, 0xfe, 0xd9, 0xfe, 0xd9, 0xfe, 0xd9, 0xfe, - 0xda, 0xfe, 0xd9, 0xfe, 0xd9, 0xfe, 0xda, 0xfe, 0xda, 0xfe, 0xda, 0xfe, - 0xda, 0xfe, 0xda, 0xfe, 0xda, 0xfe, 0xda, 0xfe, 0xdb, 0xfe, 0xdb, 0xfe, - 0xdb, 0xfe, 0xdb, 0xfe, 0xdb, 0xfe, 0xdb, 0xfe, 0xdb, 0xfe, 0xdb, 0xfe, - 0xdb, 0xfe, 0xdc, 0xfe, 0xdc, 0xfe, 0xdc, 0xfe, 0xdc, 0xfe, 0xdc, 0xfe, - 0xdc, 0xfe, 0xdd, 0xfe, 0xdd, 0xfe, 0xdd, 0xfe, 0xdd, 0xfe, 0xdd, 0xfe, - 0xdd, 0xfe, 0xdd, 0xfe, 0xdd, 0xfe, 0xde, 0xfe, 0xde, 0xfe, 0xde, 0xff, - 0xde, 0xff, 0xde, 0xff, 0xde, 0xff, 0xde, 0xff, 0xde, 0xff, 0xdf, 0xff, - 0xdf, 0xff, 0xdf, 0xff, 0xdf, 0xff, 0xdf, 0xff, 0xdf, 0xff, 0xdf, 0xff, - 0xdf, 0xff, 0xe0, 0xff, 0xe0, 0xfd, 0xe1, 0xff, 0xe0, 0xfd, 0xe0, 0xff, - 0xe0, 0xfd, 0xe1, 0xff, 0xe1, 0xfd, 0xe1, 0xff, 0xe1, 0xfd, 0xe1, 0xff, - 0xe1, 0xfd, 0xe1, 0xff, 0xe1, 0xfd, 0xe2, 0xff, 0xe2, 0xfd, 0xe2, 0xff, - 0xe2, 0xfd, 0xe2, 0xff, 0xe2, 0xfd, 0xe2, 0xff, 0xe2, 0xfd, 0xe2, 0xff, - 0xe3, 0xfd, 0xe2, 0xff, 0xe3, 0xfd, 0xe4, 0xff, 0xe3, 0xfe, 0xe4, 0xff, - 0xe3, 0xfe, 0xe4, 0xff, 0xe4, 0xfe, 0xe4, 0xff, 0xe4, 0xfe, 0xe4, 0xff, - 0xe4, 0xfe, 0xe4, 0xff, 0xe4, 0xfe, 0xe5, 0xfe, 0xe4, 0xfe, 0xe5, 0xff, - 0xe4, 0xfe, 0xe5, 0xfe, 0xe4, 0xfe, 0xe5, 0xff, 0xe4, 0xfe, 0xe6, 0xfe, - 0xe4, 0xfe, 0xe6, 0xff, 0xe4, 0xfe, 0xe6, 0xfe, 0xe4, 0xfe, 0xe6, 0xff, - 0xe4, 0xfe, 0xe7, 0xfe, 0xe4, 0xfe, 0xe7, 0xff, 0xe4, 0xfe, 0xe7, 0xfe, - 0xe4, 0xfe, 0xe7, 0xff, 0xe4, 0xfe, 0xe8, 0xfe, 0xe4, 0xfe, 0xe8, 0xff, - 0xe4, 0xfe, 0xe8, 0xfe, 0xe4, 0xfe, 0xe8, 0xff, 0xe4, 0xfe, 0xe9, 0xfe, - 0xe4, 0xfe, 0xe9, 0xff, 0xe4, 0xfe, 0xe9, 0xff, 0xee, 0xfe, 0xe9, 0xff, - 0xee, 0xfe, 0xea, 0xff, 0xee, 0xfe, 0xea, 0xff, 0xee, 0xfe, 0xea, 0xff, - 0xee, 0xfe, 0xea, 0xff, 0xee, 0xfe, 0xeb, 0xff, 0xee, 0xfe, 0xeb, 0xff, - 0xee, 0xfe, 0xeb, 0xff, 0xee, 0xfe, 0xeb, 0xff, 0xee, 0xfe, 0xec, 0xff, - 0xee, 0xfe, 0xec, 0xff, 0xee, 0xfe, 0xec, 0xff, 0xee, 0xfe, 0xec, 0xff, - 0xee, 0xfe, 0xec, 0xff, 0xee, 0xfe, 0xed, 0xff, 0xee, 0xfe, 0xed, 0xff, - 0xee, 0xfe, 0xed, 0xff, 0xee, 0xfe, 0xed, 0xff, 0xee, 0xfe, 0xee, 0xff, - 0xee, 0xfe, 0xed, 0xff, 0xee, 0xfe, 0xee, 0xff, 0xee, 0xfe, 0xee, 0xff, - 0xee, 0xfe, 0xef, 0xff, 0xee, 0xfe, 0xef, 0xff, 0xee, 0xfe, 0xef, 0xff, - 0xee, 0xfe, 0xef, 0xff, 0xee, 0xfe, 0xf0, 0xff, 0xee, 0xfe, 0xf0, 0xff, - 0xee, 0xfe, 0xf0, 0xff, 0xee, 0xfe, 0xf0, 0xfd, 0xee, 0xfe, 0xf1, 0xff, - 0xee, 0xfe, 0xf1, 0xfd, 0xee, 0xfe, 0xf1, 0xff, 0xee, 0xfe, 0xf1, 0xfd, - 0xee, 0xfe, 0xf2, 0xff, 0xee, 0xfe, 0xf2, 0xfd, 0xee, 0xfe, 0xf2, 0xff, - 0xee, 0xfe, 0xf2, 0xfd, 0xee, 0xfe, 0xf2, 0xff, 0xee, 0xfe, 0xf3, 0xfd, - 0xee, 0xfe, 0xf3, 0xff, 0xee, 0xfe, 0xf3, 0xfd, 0xee, 0xfe, 0xf3, 0xff, - 0xee, 0xfe, 0xf4, 0xfd, 0xee, 0xfe, 0xf4, 0xff, 0xee, 0xfe, 0xf4, 0xfd, - 0xee, 0xfe, 0xf4, 0xff, 0xee, 0xfe, 0xf5, 0xfd, 0xee, 0xfe, 0xf5, 0xff, - 0xee, 0xfe, 0xf5, 0xfd, 0xee, 0xfe, 0xf5, 0xff, 0xee, 0xfe, 0xf5, 0xfd, - 0xee, 0xfe, 0xf6, 0xfc, 0xef, 0xfe, 0xf6, 0xfd, 0xee, 0xfe, 0xf6, 0xfc, - 0xef, 0xfe, 0xf6, 0xfd, 0xee, 0xfe, 0xf7, 0xfc, 0xef, 0xfe, 0xf7, 0xfd, - 0xee, 0xfe, 0xf7, 0xfc, 0xef, 0xfe, 0xf7, 0xfd, 0xee, 0xfe, 0xf8, 0xfc, - 0xef, 0xfe, 0xf8, 0xfd, 0xee, 0xfe, 0xf8, 0xfc, 0xef, 0xfe, 0xf8, 0xfd, - 0xee, 0xfe, 0xf8, 0xfc, 0xef, 0xfe, 0xf9, 0xfd, 0xee, 0xfe, 0xf9, 0xfc, - 0xef, 0xfe, 0xf9, 0xfd, 0xee, 0xfe, 0xf9, 0xfc, 0xef, 0xfe, 0xfa, 0xfd, - 0xee, 0xfe, 0xfa, 0xfc, 0xef, 0xfe, 0xfa, 0xfd, 0xee, 0xfe, 0xfa, 0xfc, - 0xef, 0xfe, 0xfa, 0xfd, 0xee, 0xfe, 0xfb, 0xfc, 0xef, 0xfe, 0xfb, 0xfd, - 0xee, 0xfe, 0xfb, 0xfc, 0xef, 0xfe, 0xfb, 0xfd, 0xee, 0xfe, 0xfc, 0xfc, - 0xef, 0xfe, 0xfc, 0xfd, 0xee, 0xfe, 0xfc, 0xfc, 0xef, 0xfe, 0xfc, 0xfd, - 0xee, 0xfe, 0xfc, 0xfc, 0xef, 0xfe, 0xfd, 0xfd, 0xee, 0xfe, 0xfd, 0xfc, - 0xef, 0xfe, 0xfd, 0xfd, 0xee, 0xfe, 0xfd, 0xfc, 0xef, 0xfe, 0xfe, 0xfd, - 0xee, 0xfe, 0xfe, 0xfc, 0xef, 0xfe, 0xfe, 0xfd, 0xee, 0xfe, 0xfe, 0xfc, - 0xef, 0xfe, 0xfe, 0xfd, 0xee, 0xfe, 0xff, 0xfc, 0xef, 0xfe, 0xff, 0xfd, - 0xee, 0xfe, 0x03, 0xf4, 0x83, 0xff, 0x0a, 0xf4, 0x83, 0xff, 0x0f, 0xf4, - 0x83, 0xff, 0x14, 0xf4, 0x83, 0xff, 0x17, 0xf4, 0x83, 0xff, 0x1b, 0xf4, - 0x83, 0xff, 0x1e, 0xf4, 0x83, 0xff, 0x20, 0xf4, 0x83, 0xff, 0x23, 0xf4, - 0x83, 0xff, 0x25, 0xf4, 0x83, 0xff, 0x27, 0xf4, 0x83, 0xff, 0x29, 0xf4, - 0x83, 0xff, 0x2b, 0xf4, 0x83, 0xff, 0x2d, 0xf4, 0x83, 0xff, 0x2f, 0xf4, - 0x83, 0xff, 0x31, 0xf4, 0x83, 0xff, 0x32, 0xf4, 0x83, 0xff, 0x34, 0xf4, - 0x83, 0xff, 0x35, 0xf4, 0x83, 0xff, 0x37, 0xf4, 0x83, 0xff, 0x38, 0xf4, - 0x83, 0xff, 0x3a, 0xf4, 0x83, 0xff, 0x3b, 0xf4, 0x83, 0xff, 0x3c, 0xf4, - 0x83, 0xff, 0x3e, 0xf4, 0x83, 0xff, 0x3f, 0xf4, 0x83, 0xff, 0x40, 0xf4, - 0x83, 0xff, 0x42, 0xf4, 0x83, 0xff, 0x43, 0xf4, 0x83, 0xff, 0x44, 0xf4, - 0x83, 0xff, 0x45, 0xf4, 0x83, 0xff, 0x46, 0xf4, 0x83, 0xff, 0x47, 0xf4, - 0x83, 0xff, 0x48, 0xf4, 0x83, 0xff, 0x49, 0xf4, 0x83, 0xff, 0x4a, 0xf4, - 0x83, 0xff, 0x4b, 0xf4, 0x83, 0xff, 0x4c, 0xf4, 0x83, 0xff, 0x4d, 0xf4, - 0x83, 0xff, 0x4e, 0xf4, 0x83, 0xff, 0x4f, 0xf4, 0x83, 0xff, 0x50, 0xf4, - 0x83, 0xff, 0x51, 0xf4, 0x83, 0xff, 0x52, 0xf4, 0x83, 0xff, 0x53, 0xf4, - 0x83, 0xff, 0x54, 0xf4, 0x83, 0xff, 0x55, 0xf4, 0x83, 0xff, 0x56, 0xf4, - 0x83, 0xff, 0x57, 0xf4, 0x83, 0xff, 0x58, 0xf4, 0x83, 0xff, 0x58, 0xf4, - 0x83, 0xff, 0x59, 0xf4, 0x83, 0xff, 0x5a, 0xf4, 0x83, 0xff, 0x5b, 0xf4, - 0x83, 0xff, 0x5c, 0xf4, 0x83, 0xff, 0x5d, 0xf4, 0x83, 0xff, 0x5d, 0xf4, - 0x83, 0xff, 0x5e, 0xf4, 0x83, 0xff, 0x5f, 0xf4, 0x83, 0xff, 0x60, 0xf4, - 0x83, 0xff, 0x60, 0xf4, 0x83, 0xff, 0x61, 0xf4, 0x83, 0xff, 0x62, 0xf4, - 0x83, 0xff, 0x63, 0xf4, 0x83, 0xff, 0x63, 0xf4, 0x83, 0xff, 0x64, 0xf4, - 0x83, 0xff, 0x65, 0xf4, 0x83, 0xff, 0x66, 0xf4, 0x83, 0xff, 0x66, 0xf4, - 0x83, 0xff, 0x67, 0xf4, 0x83, 0xff, 0x68, 0xf4, 0x83, 0xff, 0x68, 0xf4, - 0x83, 0xff, 0x69, 0xf4, 0x83, 0xff, 0x6a, 0xf4, 0x83, 0xff, 0x6a, 0xf4, - 0x83, 0xff, 0x6b, 0xf4, 0x83, 0xff, 0x6c, 0xf4, 0x83, 0xff, 0x6c, 0xf4, - 0x83, 0xff, 0x6d, 0xf4, 0x83, 0xff, 0x6e, 0xf4, 0x83, 0xff, 0x6e, 0xf4, - 0x83, 0xff, 0x6f, 0xf4, 0x83, 0xff, 0x70, 0xf4, 0x83, 0xff, 0x70, 0xf4, - 0x83, 0xff, 0x71, 0xf4, 0x83, 0xff, 0x72, 0xf4, 0x83, 0xff, 0x72, 0xf4, - 0x83, 0xff, 0x73, 0xf4, 0x83, 0xff, 0x73, 0xf4, 0x83, 0xff, 0x74, 0xf4, - 0x83, 0xff, 0x75, 0xf4, 0x83, 0xff, 0x75, 0xf4, 0x83, 0xff, 0x76, 0xf4, - 0x83, 0xff, 0x76, 0xf4, 0x83, 0xff, 0x77, 0xf4, 0x83, 0xff, 0x78, 0xf4, - 0x83, 0xff, 0x78, 0xf4, 0x83, 0xff, 0x79, 0xf4, 0x83, 0xff, 0x79, 0xf4, - 0x83, 0xff, 0x7a, 0xf4, 0x83, 0xff, 0x7a, 0xf4, 0x83, 0xff, 0x7b, 0xf4, - 0x83, 0xff, 0x7c, 0xf4, 0x83, 0xff, 0x7c, 0xf4, 0x83, 0xff, 0x7d, 0xf4, - 0x83, 0xff, 0x7d, 0xf4, 0x83, 0xff, 0x7e, 0xf4, 0x83, 0xff, 0x7e, 0xf4, - 0x83, 0xff, 0x7f, 0xf4, 0x83, 0xff, 0x7f, 0xf4, 0x83, 0xff, 0x80, 0xf4, - 0x83, 0xff, 0x81, 0xf5, 0x88, 0xff, 0x81, 0xf5, 0x88, 0xff, 0x82, 0xf5, - 0x88, 0xff, 0x82, 0xf5, 0x88, 0xff, 0x83, 0xf5, 0x88, 0xff, 0x83, 0xf5, - 0x88, 0xff, 0x84, 0xf5, 0x88, 0xff, 0x84, 0xf5, 0x88, 0xff, 0x85, 0xf5, - 0x88, 0xff, 0x85, 0xf5, 0x88, 0xff, 0x86, 0xf5, 0x88, 0xff, 0x86, 0xf5, - 0x88, 0xff, 0x87, 0xf5, 0x88, 0xff, 0x87, 0xf5, 0x8d, 0xff, 0x88, 0xf5, - 0x8e, 0xff, 0x88, 0xf5, 0x8d, 0xff, 0x89, 0xf5, 0x8e, 0xff, 0x89, 0xf5, - 0x8d, 0xff, 0x8a, 0xf5, 0x8e, 0xff, 0x8a, 0xf5, 0x8d, 0xff, 0x8b, 0xf5, - 0x8e, 0xff, 0x8b, 0xf5, 0x8d, 0xff, 0x8c, 0xf5, 0x8e, 0xff, 0x8c, 0xf5, - 0x8d, 0xff, 0x8d, 0xf5, 0x92, 0xff, 0x8d, 0xf5, 0x93, 0xff, 0x8e, 0xf5, - 0x92, 0xff, 0x8e, 0xf5, 0x93, 0xff, 0x8e, 0xf5, 0x92, 0xff, 0x8f, 0xf5, - 0x93, 0xff, 0x8f, 0xf5, 0x92, 0xff, 0x90, 0xf5, 0x93, 0xff, 0x90, 0xf5, - 0x92, 0xff, 0x91, 0xf5, 0x93, 0xff, 0x91, 0xf5, 0x92, 0xff, 0x92, 0xf6, - 0x97, 0xff, 0x92, 0xf6, 0x98, 0xff, 0x93, 0xf6, 0x97, 0xff, 0x93, 0xf6, - 0x98, 0xff, 0x94, 0xf6, 0x97, 0xff, 0x94, 0xf6, 0x98, 0xff, 0x94, 0xf6, - 0x97, 0xff, 0x95, 0xf6, 0x98, 0xff, 0x95, 0xf6, 0x97, 0xff, 0x96, 0xf6, - 0x98, 0xff, 0x96, 0xf6, 0x97, 0xff, 0x97, 0xf6, 0x9c, 0xff, 0x97, 0xf6, - 0x9c, 0xff, 0x98, 0xf6, 0x9c, 0xff, 0x98, 0xf6, 0x9c, 0xff, 0x98, 0xf6, - 0x9c, 0xff, 0x99, 0xf6, 0x9c, 0xff, 0x99, 0xf6, 0x9c, 0xff, 0x9a, 0xf6, - 0x9c, 0xff, 0x9a, 0xf6, 0x9c, 0xff, 0x9a, 0xf6, 0x9c, 0xff, 0x9b, 0xf6, - 0x9c, 0xff, 0x9b, 0xf7, 0xa0, 0xff, 0x9c, 0xf7, 0xa1, 0xff, 0x9c, 0xf7, - 0xa0, 0xff, 0x9d, 0xf7, 0xa1, 0xff, 0x9d, 0xf7, 0xa0, 0xff, 0x9d, 0xf7, - 0xa1, 0xff, 0x9e, 0xf7, 0xa0, 0xff, 0x9e, 0xf7, 0xa1, 0xff, 0x9f, 0xf7, - 0xa0, 0xff, 0x9f, 0xf7, 0xa1, 0xff, 0x9f, 0xf7, 0xa0, 0xff, 0xa0, 0xf7, - 0xa5, 0xff, 0xa0, 0xf7, 0xa0, 0xff, 0xa1, 0xf7, 0xa5, 0xff, 0xa1, 0xf7, - 0xa5, 0xff, 0xa1, 0xf7, 0xa5, 0xff, 0xa2, 0xf7, 0xa5, 0xff, 0xa2, 0xf7, - 0xa5, 0xff, 0xa3, 0xf7, 0xa5, 0xff, 0xa3, 0xf7, 0xa5, 0xff, 0xa3, 0xf7, - 0xa5, 0xff, 0xa4, 0xf7, 0xa5, 0xff, 0xa4, 0xf7, 0xa5, 0xff, 0xa5, 0xf7, - 0xa5, 0xff, 0xa5, 0xf8, 0xa9, 0xff, 0xa5, 0xf8, 0xa9, 0xff, 0xa6, 0xf8, - 0xa9, 0xff, 0xa6, 0xf8, 0xa9, 0xff, 0xa6, 0xf8, 0xa9, 0xff, 0xa7, 0xf8, - 0xa9, 0xff, 0xa7, 0xf8, 0xa9, 0xff, 0xa8, 0xf8, 0xa9, 0xff, 0xa8, 0xf8, - 0xa9, 0xff, 0xa8, 0xf8, 0xa9, 0xff, 0xa9, 0xf8, 0xa9, 0xff, 0xa9, 0xf8, - 0xad, 0xff, 0xaa, 0xf8, 0xad, 0xff, 0xaa, 0xf8, 0xad, 0xff, 0xaa, 0xf8, - 0xad, 0xff, 0xab, 0xf8, 0xad, 0xff, 0xab, 0xf8, 0xad, 0xff, 0xab, 0xf8, - 0xad, 0xff, 0xac, 0xf8, 0xad, 0xff, 0xac, 0xf8, 0xad, 0xff, 0xac, 0xf8, - 0xad, 0xff, 0xad, 0xf8, 0xad, 0xff, 0xad, 0xf9, 0xb1, 0xff, 0xae, 0xf9, - 0xb1, 0xff, 0xae, 0xf9, 0xb1, 0xff, 0xae, 0xf9, 0xb1, 0xff, 0xaf, 0xf9, - 0xb1, 0xff, 0xaf, 0xf9, 0xb1, 0xff, 0xaf, 0xf9, 0xb1, 0xff, 0xb0, 0xf9, - 0xb1, 0xff, 0xb0, 0xf9, 0xb1, 0xff, 0xb0, 0xf9, 0xb1, 0xff, 0xb1, 0xf9, - 0xb1, 0xff, 0xb1, 0xf9, 0xb5, 0xff, 0xb2, 0xf9, 0xb5, 0xff, 0xb2, 0xf9, - 0xb5, 0xff, 0xb2, 0xf9, 0xb5, 0xff, 0xb3, 0xf9, 0xb5, 0xff, 0xb3, 0xf9, - 0xb5, 0xff, 0xb3, 0xf9, 0xb5, 0xff, 0xb4, 0xf9, 0xb5, 0xff, 0xb4, 0xf9, - 0xb5, 0xff, 0xb4, 0xf9, 0xb5, 0xff, 0xb5, 0xf9, 0xb5, 0xff, 0xb5, 0xf9, - 0xb5, 0xff, 0xb5, 0xf9, 0xb5, 0xff, 0xb6, 0xfa, 0xb8, 0xff, 0xb6, 0xfa, - 0xb9, 0xff, 0xb6, 0xfa, 0xb8, 0xff, 0xb7, 0xfa, 0xb9, 0xff, 0xb7, 0xfa, - 0xb8, 0xff, 0xb7, 0xfa, 0xb9, 0xff, 0xb8, 0xfa, 0xb8, 0xff, 0xb8, 0xfa, - 0xb9, 0xff, 0xb8, 0xfa, 0xb8, 0xff, 0xb9, 0xfa, 0xb9, 0xff, 0xb9, 0xfa, - 0xb9, 0xff, 0xb9, 0xfa, 0xbc, 0xff, 0xba, 0xfa, 0xbc, 0xff, 0xba, 0xfa, - 0xbc, 0xff, 0xba, 0xfa, 0xbc, 0xff, 0xbb, 0xfa, 0xbc, 0xff, 0xbb, 0xfa, - 0xbc, 0xff, 0xbb, 0xfa, 0xbc, 0xff, 0xbc, 0xfa, 0xbc, 0xff, 0xbc, 0xfa, - 0xbc, 0xff, 0xbc, 0xfa, 0xbc, 0xff, 0xbd, 0xfa, 0xbd, 0xff, 0xbd, 0xfa, - 0xc0, 0xff, 0xbd, 0xfa, 0xc0, 0xff, 0xbe, 0xfa, 0xc0, 0xff, 0xbe, 0xfa, - 0xc0, 0xff, 0xbe, 0xfa, 0xc0, 0xff, 0xbf, 0xfa, 0xc0, 0xff, 0xbf, 0xfa, - 0xc0, 0xff, 0xbf, 0xfa, 0xc0, 0xff, 0xc0, 0xfa, 0xc0, 0xff, 0xc0, 0xfa, - 0xc0, 0xff, 0xc0, 0xfa, 0xc0, 0xff, 0xc1, 0xfb, 0xc3, 0xff, 0xc1, 0xfb, - 0xc3, 0xff, 0xc1, 0xfb, 0xc3, 0xff, 0xc1, 0xfb, 0xc3, 0xff, 0xc2, 0xfb, - 0xc3, 0xff, 0xc2, 0xfb, 0xc3, 0xff, 0xc2, 0xfb, 0xc3, 0xff, 0xc3, 0xfb, - 0xc3, 0xff, 0xc3, 0xfb, 0xc3, 0xff, 0xc3, 0xfb, 0xc3, 0xff, 0xc4, 0xfb, - 0xc4, 0xff, 0xc4, 0xfb, 0xc6, 0xff, 0xc4, 0xfb, 0xc7, 0xff, 0xc5, 0xfb, - 0xc6, 0xff, 0xc5, 0xfb, 0xc7, 0xff, 0xc5, 0xfb, 0xc6, 0xff, 0xc6, 0xfb, - 0xc7, 0xff, 0xc6, 0xfb, 0xc6, 0xff, 0xc6, 0xfb, 0xc7, 0xff, 0xc6, 0xfb, - 0xc6, 0xff, 0xc7, 0xfb, 0xc7, 0xff, 0xc7, 0xfb, 0xc7, 0xff, 0xc7, 0xfb, - 0xc7, 0xff, 0xc8, 0xfb, 0xc8, 0xff, 0xc8, 0xfc, 0xca, 0xff, 0xc8, 0xfc, - 0xca, 0xff, 0xc9, 0xfc, 0xca, 0xff, 0xc9, 0xfc, 0xca, 0xff, 0xc9, 0xfc, - 0xca, 0xff, 0xc9, 0xfc, 0xca, 0xff, 0xca, 0xfc, 0xca, 0xff, 0xca, 0xfc, - 0xca, 0xff, 0xca, 0xfc, 0xca, 0xff, 0xcb, 0xfc, 0xcb, 0xff, 0xcb, 0xfc, - 0xcb, 0xff, 0xcb, 0xfc, 0xcd, 0xff, 0xcc, 0xfc, 0xcd, 0xff, 0xcc, 0xfc, - 0xcd, 0xff, 0xcc, 0xfc, 0xcd, 0xff, 0xcc, 0xfc, 0xcd, 0xff, 0xcd, 0xfc, - 0xcd, 0xff, 0xcd, 0xfc, 0xcd, 0xff, 0xcd, 0xfc, 0xcd, 0xff, 0xce, 0xfc, - 0xce, 0xff, 0xce, 0xfc, 0xce, 0xff, 0xce, 0xfc, 0xce, 0xff, 0xce, 0xfd, - 0xd0, 0xff, 0xcf, 0xfd, 0xd0, 0xff, 0xcf, 0xfd, 0xd0, 0xff, 0xcf, 0xfd, - 0xd0, 0xff, 0xd0, 0xfd, 0xd0, 0xff, 0xd0, 0xfd, 0xd0, 0xff, 0xd0, 0xfd, - 0xd0, 0xff, 0xd0, 0xfd, 0xd0, 0xff, 0xd1, 0xfd, 0xd1, 0xff, 0xd1, 0xfd, - 0xd1, 0xff, 0xd1, 0xfd, 0xd1, 0xff, 0xd2, 0xfd, 0xd2, 0xff, 0xd2, 0xfd, - 0xd2, 0xff, 0xd2, 0xfd, 0xd3, 0xff, 0xd2, 0xfd, 0xd4, 0xff, 0xd3, 0xfd, - 0xd3, 0xff, 0xd3, 0xfd, 0xd4, 0xff, 0xd3, 0xfd, 0xd3, 0xff, 0xd4, 0xfd, - 0xd4, 0xff, 0xd4, 0xfd, 0xd4, 0xff, 0xd4, 0xfd, 0xd4, 0xff, 0xd4, 0xfd, - 0xd4, 0xff, 0xd5, 0xfd, 0xd5, 0xff, 0xd5, 0xfd, 0xd5, 0xff, 0xd5, 0xfe, - 0xd6, 0xff, 0xd6, 0xfe, 0xd7, 0xff, 0xd6, 0xfe, 0xd6, 0xff, 0xd6, 0xfe, - 0xd7, 0xff, 0xd6, 0xfe, 0xd6, 0xff, 0xd7, 0xfe, 0xd7, 0xff, 0xd7, 0xfe, - 0xd7, 0xff, 0xd7, 0xfe, 0xd7, 0xff, 0xd7, 0xfe, 0xd7, 0xff, 0xd8, 0xfe, - 0xd8, 0xff, 0xd8, 0xfe, 0xd8, 0xff, 0xd8, 0xfe, 0xd9, 0xff, 0xd9, 0xfe, - 0xda, 0xff, 0xd9, 0xfe, 0xd9, 0xff, 0xd9, 0xfe, 0xda, 0xff, 0xd9, 0xfe, - 0xd9, 0xff, 0xda, 0xfe, 0xda, 0xff, 0xda, 0xfe, 0xda, 0xff, 0xda, 0xfe, - 0xda, 0xff, 0xda, 0xfe, 0xda, 0xff, 0xdb, 0xfe, 0xdb, 0xff, 0xdb, 0xfe, - 0xdb, 0xff, 0xdb, 0xfe, 0xdb, 0xff, 0xdb, 0xfe, 0xdb, 0xff, 0xdc, 0xfe, - 0xdc, 0xff, 0xdc, 0xfe, 0xdd, 0xff, 0xdc, 0xfe, 0xdc, 0xff, 0xdd, 0xfe, - 0xdd, 0xff, 0xdd, 0xfe, 0xdd, 0xff, 0xdd, 0xfe, 0xdd, 0xff, 0xdd, 0xfe, - 0xdd, 0xff, 0xde, 0xfe, 0xde, 0xff, 0xde, 0xfe, 0xde, 0xff, 0xde, 0xfe, - 0xde, 0xff, 0xde, 0xfe, 0xde, 0xff, 0xdf, 0xfe, 0xdf, 0xff, 0xdf, 0xfe, - 0xdf, 0xff, 0xdf, 0xff, 0xdf, 0xff, 0xdf, 0xff, 0xdf, 0xff, 0xdf, 0xff, - 0xe0, 0xff, 0xe0, 0xff, 0xe0, 0xfd, 0xe0, 0xff, 0xe0, 0xfd, 0xe1, 0xff, - 0xe1, 0xfd, 0xe1, 0xff, 0xe1, 0xfd, 0xe1, 0xff, 0xe1, 0xfd, 0xe2, 0xff, - 0xe1, 0xfe, 0xe2, 0xff, 0xe2, 0xfd, 0xe2, 0xff, 0xe2, 0xfe, 0xe2, 0xff, - 0xe2, 0xfd, 0xe2, 0xff, 0xe2, 0xfe, 0xe2, 0xff, 0xe3, 0xfd, 0xe2, 0xff, - 0xe3, 0xfe, 0xe4, 0xff, 0xe3, 0xff, 0xe4, 0xff, 0xe3, 0xff, 0xe4, 0xff, - 0xe4, 0xff, 0xe4, 0xff, 0xe4, 0xff, 0xe4, 0xff, 0xe4, 0xff, 0xe4, 0xff, - 0xe4, 0xff, 0xe5, 0xff, 0xe4, 0xff, 0xe5, 0xff, 0xe4, 0xff, 0xe5, 0xfe, - 0xe4, 0xff, 0xe5, 0xff, 0xe4, 0xff, 0xe6, 0xfe, 0xe4, 0xff, 0xe6, 0xff, - 0xe4, 0xff, 0xe6, 0xfe, 0xe4, 0xff, 0xe6, 0xff, 0xe4, 0xff, 0xe7, 0xfe, - 0xe4, 0xff, 0xe7, 0xff, 0xe4, 0xff, 0xe7, 0xfe, 0xe4, 0xff, 0xe7, 0xff, - 0xe4, 0xff, 0xe8, 0xfe, 0xe4, 0xff, 0xe8, 0xff, 0xe4, 0xff, 0xe8, 0xfe, - 0xe4, 0xff, 0xe8, 0xff, 0xe4, 0xff, 0xe9, 0xfe, 0xe4, 0xff, 0xe9, 0xff, - 0xe4, 0xff, 0xe9, 0xff, 0xee, 0xff, 0xe9, 0xff, 0xee, 0xff, 0xea, 0xff, - 0xee, 0xff, 0xea, 0xff, 0xee, 0xff, 0xea, 0xff, 0xee, 0xff, 0xea, 0xff, - 0xee, 0xff, 0xeb, 0xff, 0xee, 0xff, 0xeb, 0xff, 0xee, 0xff, 0xeb, 0xff, - 0xee, 0xff, 0xeb, 0xff, 0xee, 0xff, 0xec, 0xff, 0xee, 0xff, 0xec, 0xff, - 0xee, 0xff, 0xec, 0xff, 0xee, 0xff, 0xec, 0xff, 0xee, 0xff, 0xec, 0xff, - 0xee, 0xff, 0xed, 0xff, 0xee, 0xff, 0xed, 0xff, 0xee, 0xff, 0xed, 0xff, - 0xee, 0xff, 0xed, 0xff, 0xee, 0xff, 0xee, 0xff, 0xee, 0xff, 0xed, 0xff, - 0xee, 0xff, 0xee, 0xff, 0xee, 0xff, 0xee, 0xff, 0xee, 0xff, 0xef, 0xff, - 0xee, 0xff, 0xef, 0xff, 0xee, 0xff, 0xef, 0xff, 0xee, 0xff, 0xef, 0xff, - 0xee, 0xff, 0xf0, 0xff, 0xee, 0xff, 0xf0, 0xff, 0xee, 0xff, 0xf0, 0xff, - 0xee, 0xff, 0xf0, 0xfe, 0xee, 0xff, 0xf1, 0xff, 0xee, 0xff, 0xf1, 0xfe, - 0xee, 0xff, 0xf1, 0xff, 0xee, 0xff, 0xf1, 0xfe, 0xee, 0xff, 0xf2, 0xff, - 0xee, 0xff, 0xf2, 0xfe, 0xee, 0xff, 0xf2, 0xff, 0xee, 0xff, 0xf2, 0xfe, - 0xee, 0xff, 0xf2, 0xff, 0xee, 0xff, 0xf3, 0xfe, 0xee, 0xff, 0xf3, 0xff, - 0xee, 0xff, 0xf3, 0xfe, 0xee, 0xff, 0xf3, 0xff, 0xee, 0xff, 0xf4, 0xfe, - 0xee, 0xff, 0xf4, 0xff, 0xee, 0xff, 0xf4, 0xfe, 0xee, 0xff, 0xf4, 0xff, - 0xee, 0xff, 0xf5, 0xfe, 0xee, 0xff, 0xf5, 0xff, 0xee, 0xff, 0xf5, 0xfe, - 0xee, 0xff, 0xf5, 0xff, 0xee, 0xff, 0xf5, 0xfe, 0xee, 0xff, 0xf6, 0xff, - 0xee, 0xff, 0xf6, 0xfe, 0xee, 0xff, 0xf6, 0xff, 0xee, 0xff, 0xf6, 0xfe, - 0xee, 0xff, 0xf7, 0xff, 0xee, 0xff, 0xf7, 0xfe, 0xee, 0xff, 0xf7, 0xfc, - 0xef, 0xff, 0xf7, 0xfe, 0xee, 0xff, 0xf8, 0xfc, 0xef, 0xff, 0xf8, 0xfe, - 0xee, 0xff, 0xf8, 0xfc, 0xef, 0xff, 0xf8, 0xfe, 0xee, 0xff, 0xf8, 0xfc, - 0xef, 0xff, 0xf9, 0xfe, 0xee, 0xff, 0xf9, 0xfc, 0xef, 0xff, 0xf9, 0xfe, - 0xee, 0xff, 0xf9, 0xfc, 0xef, 0xff, 0xfa, 0xfe, 0xee, 0xff, 0xfa, 0xfc, - 0xef, 0xff, 0xfa, 0xfe, 0xee, 0xff, 0xfa, 0xfc, 0xef, 0xff, 0xfa, 0xfe, - 0xee, 0xff, 0xfb, 0xfc, 0xef, 0xff, 0xfb, 0xfe, 0xee, 0xff, 0xfb, 0xfc, - 0xef, 0xff, 0xfb, 0xfe, 0xee, 0xff, 0xfc, 0xfc, 0xef, 0xff, 0xfc, 0xfe, - 0xee, 0xff, 0xfc, 0xfc, 0xef, 0xff, 0xfc, 0xfe, 0xee, 0xff, 0xfc, 0xfc, - 0xef, 0xff, 0xfd, 0xfe, 0xee, 0xff, 0xfd, 0xfc, 0xef, 0xff, 0xfd, 0xfe, - 0xee, 0xff, 0xfd, 0xfc, 0xef, 0xff, 0xfe, 0xfe, 0xee, 0xff, 0xfe, 0xfc, - 0xef, 0xff, 0xfe, 0xfe, 0xee, 0xff, 0xfe, 0xfc, 0xef, 0xff, 0xfe, 0xfe, - 0xee, 0xff, 0xff, 0xfc, 0xef, 0xff, 0xff, 0xfe, 0xee, 0xff -}; diff --git a/Plugins/MetaXR/Source/MRUtilityKitEditor/Private/GridSliceResizerTestData.h b/Plugins/MetaXR/Source/MRUtilityKitEditor/Private/GridSliceResizerTestData.h deleted file mode 100644 index 74a95f2..0000000 --- a/Plugins/MetaXR/Source/MRUtilityKitEditor/Private/GridSliceResizerTestData.h +++ /dev/null @@ -1,1002 +0,0 @@ -// Copyright (c) Meta Platforms, Inc. and affiliates. - -#pragma once - -#include "CoreMinimal.h" - -// The following data has been generated by logging the vertices during slicing -// in the GridSliceResizerComponent. After that they have been formatted with -// VIM macros. - -// clang-format off -inline TArray ExpectedTriangles = { - 0, 1, 2, 1, 3, 2, 4, 5, 6, 5, 4, 7, 8, 9, 10, 9, 8, 11, 12, 13, 14, 14, 15, 12, 16, - 17, 18, 17, 16, 19, 20, 21, 22, 22, 21, 23, 24, 25, 26, 25, 24, 27, 28, 29, 30, 29, 31, 30, 32, 33, - 34, 34, 33, 35, 36, 37, 38, 37, 36, 39, 40, 41, 42, 41, 40, 43, 44, 45, 46, 46, 47, 44, 48, 49, 50, - 49, 48, 51, 52, 53, 54, 53, 55, 54, 56, 57, 58, 58, 59, 56, 60, 61, 62, 61, 60, 63, 64, 65, 66, 65, - 67, 66, 68, 69, 70, 70, 71, 68, 72, 73, 74, 73, 72, 75, 76, 77, 78, 77, 79, 78, 80, 81, 82, 81, 83, - 82, 84, 85, 86, 85, 84, 87, 88, 89, 90, 90, 91, 88, 92, 93, 94, 94, 95, 92, 96, 97, 98, 97, 96, 99, - 99, 100, 97, 100, 99, 101, 101, 102, 100, 102, 101, 103, 103, 104, 102, 104, 103, 105, 105, 106, 104, 106, 105, 107, 108, - 109, 110, 108, 111, 109, 111, 112, 109, 111, 113, 112, 113, 114, 112, 113, 115, 114, 115, 116, 114, 115, 117, 116, 117, 118, - 116, 117, 119, 118, 120, 121, 122, 121, 120, 123, 123, 124, 121, 124, 123, 125, 125, 126, 124, 126, 125, 127, 127, 128, 126, - 128, 127, 129, 129, 130, 128, 130, 129, 131, 132, 133, 134, 133, 132, 135, 135, 136, 133, 136, 135, 137, 137, 138, 136, 138, - 137, 139, 139, 140, 138, 140, 139, 141, 141, 142, 140, 142, 141, 143, 144, 145, 146, 145, 144, 147, 147, 148, 145, 148, 147, - 149, 149, 150, 148, 150, 149, 151, 151, 152, 150, 152, 151, 153, 153, 154, 152, 154, 153, 155, 156, 157, 158, 156, 158, 159, - 160, 156, 159, 160, 159, 161, 162, 160, 161, 162, 161, 163, 163, 164, 162, 164, 163, 165, 165, 166, 164, 166, 165, 167, 168, - 169, 170, 170, 171, 168, 172, 168, 171, 171, 173, 172, 174, 172, 173, 173, 175, 174, 176, 174, 175, 175, 177, 176, 178, 176, - 177, 177, 179, 178, 180, 181, 182, 182, 183, 180, 184, 180, 183, 183, 185, 184, 186, 184, 185, 185, 187, 186, 188, 186, 187, - 187, 189, 188, 190, 188, 189, 189, 191, 190, 192, 193, 194, 192, 194, 195, 196, 192, 195, 196, 195, 197, 198, 196, 197, 198, - 197, 199, 200, 198, 199, 200, 199, 201, 201, 202, 200, 202, 201, 203, 204, 205, 206, 204, 207, 205, 207, 208, 205, 207, 209, - 208, 209, 210, 208, 209, 211, 210, 211, 212, 210, 211, 213, 212, 213, 214, 212, 213, 215, 214, 216, 217, 218, 216, 219, 217, - 219, 220, 217, 219, 221, 220, 221, 222, 220, 221, 223, 222, 223, 224, 222, 223, 225, 224, 225, 226, 224, 225, 227, 226, 228, - 229, 230, 228, 230, 231, 232, 228, 231, 232, 231, 233, 234, 232, 233, 234, 233, 235, 235, 236, 234, 236, 235, 237, 237, 238, - 236, 238, 237, 239, 240, 241, 242, 242, 243, 240, 244, 240, 243, 243, 245, 244, 246, 244, 245, 245, 247, 246, 248, 246, 247, - 247, 249, 248, 250, 248, 249, 249, 251, 250, 252, 253, 254, 254, 255, 252, 256, 252, 255, 255, 257, 256, 258, 256, 257, 257, - 259, 258, 260, 258, 259, 259, 261, 260, 262, 260, 261, 261, 263, 262, 264, 265, 266, 266, 267, 264, 268, 264, 267, 267, 269, - 268, 270, 268, 269, 269, 271, 270, 272, 270, 271, 271, 273, 272, 274, 272, 273, 273, 275, 274, 276, 277, 278, 276, 279, 277, - 279, 280, 277, 279, 281, 280, 281, 282, 280, 281, 283, 282, 283, 284, 282, 283, 285, 284, 285, 286, 284, 285, 287, 286, 288, - 289, 290, 290, 291, 288, 292, 288, 291, 291, 293, 292, 294, 292, 293, 293, 295, 294, 296, 294, 295, 295, 297, 296, 298, 296, - 297, 297, 299, 298, 300, 301, 302, 300, 302, 303, 304, 300, 303, 304, 303, 305, 306, 304, 305, 306, 305, 307, 308, 306, 307, - 308, 307, 309, 309, 310, 308, 310, 309, 311, 312, 313, 314, 314, 315, 312, 316, 312, 315, 315, 317, 316, 318, 316, 317, 317, - 319, 318, 320, 318, 319, 319, 321, 320, 322, 320, 321, 321, 323, 322, 324, 325, 326, 326, 327, 324, 328, 324, 327, 327, 329, - 328, 330, 328, 329, 329, 331, 330, 332, 330, 331, 331, 333, 332, 334, 332, 333, 333, 335, 334, 336, 337, 338, 336, 339, 337, - 339, 340, 337, 339, 341, 340, 341, 342, 340, 341, 343, 342, 343, 344, 342, 343, 345, 344, 345, 346, 344, 345, 347, 346, 348, - 349, 350, 348, 351, 349, 351, 352, 349, 351, 353, 352, 353, 354, 352, 353, 355, 354, 355, 356, 354, 355, 357, 356, 357, 358, - 356, 357, 359, 358, 360, 361, 362, 360, 362, 363, 364, 360, 363, 364, 363, 365, 366, 364, 365, 366, 365, 367, 368, 366, 367, - 368, 367, 369, 369, 370, 368, 370, 369, 371, 372, 373, 374, 372, 374, 375, 376, 372, 375, 376, 375, 377, 378, 376, 377, 378, - 377, 379, 380, 378, 379, 380, 379, 381, 381, 382, 380, 382, 381, 383, 384, 385, 386, 385, 384, 387, 387, 388, 385, 389, 387, - 384, 388, 387, 390, 390, 391, 388, 387, 389, 392, 392, 390, 387, 393, 392, 389, 391, 390, 394, 394, 395, 391, 390, 392, 396, - 396, 394, 390, 392, 393, 397, 397, 396, 392, 398, 397, 393, 395, 394, 399, 399, 400, 395, 400, 399, 401, 397, 398, 402, 403, - 402, 398, 402, 403, 404, 402, 405, 397, 396, 397, 405, 404, 406, 402, 405, 402, 406, 406, 404, 407, 405, 408, 396, 394, 396, - 408, 408, 399, 394, 406, 409, 405, 408, 405, 409, 407, 410, 406, 409, 406, 410, 410, 407, 411, 399, 408, 412, 409, 412, 408, - 412, 401, 399, 401, 412, 413, 412, 409, 414, 414, 413, 412, 410, 414, 409, 413, 414, 415, 414, 410, 416, 416, 415, 414, 411, - 416, 410, 415, 416, 417, 416, 411, 418, 418, 417, 416, 417, 418, 419, 420, 421, 422, 421, 420, 423, 423, 424, 421, 425, 423, - 420, 424, 423, 426, 426, 427, 424, 423, 425, 428, 428, 426, 423, 429, 428, 425, 427, 426, 430, 430, 431, 427, 426, 428, 432, - 432, 430, 426, 428, 429, 433, 433, 432, 428, 434, 433, 429, 431, 430, 435, 435, 436, 431, 436, 435, 437, 433, 434, 438, 439, - 438, 434, 438, 439, 440, 438, 441, 433, 432, 433, 441, 440, 442, 438, 441, 438, 442, 442, 440, 443, 441, 444, 432, 430, 432, - 444, 444, 435, 430, 442, 445, 441, 444, 441, 445, 443, 446, 442, 445, 442, 446, 446, 443, 447, 435, 444, 448, 445, 448, 444, - 448, 437, 435, 437, 448, 449, 448, 445, 450, 450, 449, 448, 446, 450, 445, 449, 450, 451, 450, 446, 452, 452, 451, 450, 447, - 452, 446, 451, 452, 453, 452, 447, 454, 454, 453, 452, 453, 454, 455, 456, 457, 458, 457, 456, 459, 459, 460, 457, 461, 459, - 456, 462, 460, 459, 462, 463, 460, 459, 461, 464, 464, 462, 459, 465, 464, 461, 463, 462, 466, 466, 467, 463, 468, 462, 464, - 468, 466, 462, 469, 464, 465, 469, 468, 464, 470, 469, 465, 471, 467, 466, 471, 472, 467, 473, 472, 471, 474, 469, 470, 475, - 474, 470, 474, 475, 476, 477, 473, 471, 473, 477, 478, 479, 471, 466, 477, 471, 479, 479, 466, 468, 480, 478, 477, 478, 480, - 481, 482, 477, 479, 477, 482, 480, 483, 479, 468, 479, 483, 482, 483, 468, 469, 474, 483, 469, 484, 483, 474, 484, 482, 483, - 476, 484, 474, 485, 484, 476, 482, 484, 486, 485, 486, 484, 486, 480, 482, 486, 485, 487, 488, 480, 486, 487, 488, 486, 488, - 481, 480, 489, 488, 487, 490, 481, 488, 489, 490, 488, 491, 490, 489, 492, 493, 494, 493, 492, 495, 495, 496, 493, 497, 495, - 492, 496, 495, 498, 498, 499, 496, 495, 497, 500, 500, 498, 495, 501, 500, 497, 499, 498, 502, 502, 503, 499, 498, 500, 504, - 504, 502, 498, 500, 501, 505, 505, 504, 500, 506, 505, 501, 503, 502, 507, 507, 508, 503, 508, 507, 509, 505, 506, 510, 511, - 510, 506, 510, 511, 512, 510, 513, 505, 504, 505, 513, 512, 514, 510, 513, 510, 514, 514, 512, 515, 513, 516, 504, 502, 504, - 516, 516, 507, 502, 514, 517, 513, 516, 513, 517, 515, 518, 514, 517, 514, 518, 518, 515, 519, 507, 516, 520, 517, 520, 516, - 520, 509, 507, 509, 520, 521, 520, 517, 522, 522, 521, 520, 518, 522, 517, 521, 522, 523, 522, 518, 524, 524, 523, 522, 519, - 524, 518, 523, 524, 525, 524, 519, 526, 526, 525, 524, 525, 526, 527, 528, 529, 530, 529, 528, 531, 531, 532, 529, 533, 531, - 528, 532, 531, 534, 534, 535, 532, 531, 533, 536, 536, 534, 531, 537, 536, 533, 535, 534, 538, 538, 539, 535, 534, 536, 540, - 540, 538, 534, 536, 537, 541, 541, 540, 536, 542, 541, 537, 539, 538, 543, 543, 544, 539, 544, 543, 545, 541, 542, 546, 547, - 546, 542, 546, 547, 548, 546, 549, 541, 540, 541, 549, 548, 550, 546, 549, 546, 550, 550, 548, 551, 549, 552, 540, 538, 540, - 552, 552, 543, 538, 550, 553, 549, 552, 549, 553, 551, 554, 550, 553, 550, 554, 554, 551, 555, 543, 552, 556, 553, 556, 552, - 556, 545, 543, 545, 556, 557, 556, 553, 558, 558, 557, 556, 554, 558, 553, 557, 558, 559, 558, 554, 560, 560, 559, 558, 555, - 560, 554, 559, 560, 561, 560, 555, 562, 562, 561, 560, 561, 562, 563, 564, 565, 566, 564, 566, 567, 568, 564, 567, 567, 566, - 569, 568, 567, 570, 571, 568, 570, 567, 569, 572, 570, 567, 572, 572, 569, 573, 571, 570, 574, 575, 571, 574, 570, 572, 576, - 574, 570, 576, 572, 573, 577, 576, 572, 577, 577, 573, 578, 575, 574, 579, 580, 575, 579, 580, 579, 581, 574, 576, 582, 579, - 574, 582, 581, 579, 583, 579, 582, 583, 581, 583, 584, 582, 576, 585, 576, 577, 585, 583, 582, 586, 582, 585, 586, 584, 583, - 587, 583, 586, 587, 584, 587, 588, 585, 577, 589, 577, 578, 589, 589, 578, 590, 589, 590, 591, 585, 589, 592, 592, 589, 591, - 586, 585, 592, 592, 591, 593, 586, 592, 594, 594, 592, 593, 587, 586, 594, 594, 593, 595, 587, 594, 596, 596, 594, 595, 588, - 587, 596, 596, 595, 597, 588, 596, 598, 598, 596, 597, 598, 597, 599, -}; - -inline TArray ExpectedPositionsPivotCenter = { - {-49.268, 49.268, -47.500}, {-50.000, 47.500, -47.500}, {-48.943, 48.943, -48.943}, {-49.268, 47.500, -49.268}, - {-48.943, 48.943, -48.943}, {-47.500, 47.500, -50.000}, {-47.500, 49.268, -49.268}, {-49.268, 47.500, -49.268}, - {-48.943, 48.943, -48.943}, {-47.500, 50.000, -47.500}, {-49.268, 49.268, -47.500}, {-47.500, 49.268, -49.268}, - {-48.943, 48.943, 48.943}, {-49.268, 47.500, 49.268}, {-50.000, 47.500, 47.500}, {-49.268, 49.268, 47.500}, - {-48.943, 48.943, 48.943}, {-47.500, 50.000, 47.500}, {-47.500, 49.268, 49.268}, {-49.268, 49.268, 47.500}, - {-49.268, 47.500, 49.268}, {-48.943, 48.943, 48.943}, {-47.500, 47.500, 50.000}, {-47.500, 49.268, 49.268}, - {-48.943, -48.943, -48.943}, {-50.000, -47.500, -47.500}, {-49.268, -49.268, -47.500}, {-49.268, -47.500, -49.268}, - {-49.268, -49.268, -47.500}, {-47.500, -50.000, -47.500}, {-48.943, -48.943, -48.943}, {-47.500, -49.268, -49.268}, - {-49.268, -47.500, -49.268}, {-48.943, -48.943, -48.943}, {-47.500, -47.500, -50.000}, {-47.500, -49.268, -49.268}, - {-48.943, -48.943, 48.943}, {-50.000, -47.500, 47.500}, {-49.268, -47.500, 49.268}, {-49.268, -49.268, 47.500}, - {-48.943, -48.943, 48.943}, {-47.500, -47.500, 50.000}, {-47.500, -49.268, 49.268}, {-49.268, -47.500, 49.268}, - {-48.943, -48.943, 48.943}, {-47.500, -49.268, 49.268}, {-47.500, -50.000, 47.500}, {-49.268, -49.268, 47.500}, - {48.943, 48.943, -48.943}, {50.000, 47.500, -47.500}, {49.268, 49.268, -47.500}, {49.268, 47.500, -49.268}, - {49.268, 49.268, -47.500}, {47.500, 50.000, -47.500}, {48.943, 48.943, -48.943}, {47.500, 49.268, -49.268}, - {48.943, 48.943, -48.943}, {47.500, 49.268, -49.268}, {47.500, 47.500, -50.000}, {49.268, 47.500, -49.268}, - {48.943, 48.943, 48.943}, {50.000, 47.500, 47.500}, {49.268, 47.500, 49.268}, {49.268, 49.268, 47.500}, - {49.268, 47.500, 49.268}, {47.500, 47.500, 50.000}, {48.943, 48.943, 48.943}, {47.500, 49.268, 49.268}, - {48.943, 48.943, 48.943}, {47.500, 49.268, 49.268}, {47.500, 50.000, 47.500}, {49.268, 49.268, 47.500}, - {48.943, -48.943, -48.943}, {47.500, -50.000, -47.500}, {49.268, -49.268, -47.500}, {47.500, -49.268, -49.268}, - {49.268, -49.268, -47.500}, {50.000, -47.500, -47.500}, {48.943, -48.943, -48.943}, {49.268, -47.500, -49.268}, - {49.268, -47.500, -49.268}, {47.500, -47.500, -50.000}, {48.943, -48.943, -48.943}, {47.500, -49.268, -49.268}, - {48.943, -48.943, 48.943}, {47.500, -50.000, 47.500}, {47.500, -49.268, 49.268}, {49.268, -49.268, 47.500}, - {48.943, -48.943, 48.943}, {47.500, -49.268, 49.268}, {47.500, -47.500, 50.000}, {49.268, -47.500, 49.268}, - {48.943, -48.943, 48.943}, {49.268, -47.500, 49.268}, {50.000, -47.500, 47.500}, {49.268, -49.268, 47.500}, - {-49.268, 47.500, -49.268}, {-47.500, 33.750, -50.000}, {-47.500, 47.500, -50.000}, {-49.268, 33.750, -49.268}, - {-47.500, 11.250, -50.000}, {-49.268, 11.250, -49.268}, {-47.500, -11.250, -50.000}, {-49.268, -11.250, -49.268}, - {-47.500, -33.750, -50.000}, {-49.268, -33.750, -49.268}, {-47.500, -47.500, -50.000}, {-49.268, -47.500, -49.268}, - {-50.000, 47.500, -47.500}, {-49.268, 33.750, -49.268}, {-49.268, 47.500, -49.268}, {-50.000, 33.750, -47.500}, - {-49.268, 11.250, -49.268}, {-50.000, 11.250, -47.500}, {-49.268, -11.250, -49.268}, {-50.000, -11.250, -47.500}, - {-49.268, -33.750, -49.268}, {-50.000, -33.750, -47.500}, {-49.268, -47.500, -49.268}, {-50.000, -47.500, -47.500}, - {-49.268, 49.268, 47.500}, {-47.500, 50.000, 33.750}, {-47.500, 50.000, 47.500}, {-49.268, 49.268, 33.750}, - {-47.500, 50.000, 11.250}, {-49.268, 49.268, 11.250}, {-47.500, 50.000, -11.250}, {-49.268, 49.268, -11.250}, - {-47.500, 50.000, -33.750}, {-49.268, 49.268, -33.750}, {-47.500, 50.000, -47.500}, {-49.268, 49.268, -47.500}, - {-50.000, 47.500, 47.500}, {-49.268, 49.268, 33.750}, {-49.268, 49.268, 47.500}, {-50.000, 47.500, 33.750}, - {-49.268, 49.268, 11.250}, {-50.000, 47.500, 11.250}, {-49.268, 49.268, -11.250}, {-50.000, 47.500, -11.250}, - {-49.268, 49.268, -33.750}, {-50.000, 47.500, -33.750}, {-49.268, 49.268, -47.500}, {-50.000, 47.500, -47.500}, - {-49.268, -47.500, 49.268}, {-47.500, -33.750, 50.000}, {-47.500, -47.500, 50.000}, {-49.268, -33.750, 49.268}, - {-47.500, -11.250, 50.000}, {-49.268, -11.250, 49.268}, {-47.500, 11.250, 50.000}, {-49.268, 11.250, 49.268}, - {-47.500, 33.750, 50.000}, {-49.268, 33.750, 49.268}, {-47.500, 47.500, 50.000}, {-49.268, 47.500, 49.268}, - {-49.268, -33.750, 49.268}, {-49.268, -47.500, 49.268}, {-50.000, -47.500, 47.500}, {-50.000, -33.750, 47.500}, - {-49.268, -11.250, 49.268}, {-50.000, -11.250, 47.500}, {-49.268, 11.250, 49.268}, {-50.000, 11.250, 47.500}, - {-49.268, 33.750, 49.268}, {-50.000, 33.750, 47.500}, {-49.268, 47.500, 49.268}, {-50.000, 47.500, 47.500}, - {-47.500, -50.000, -33.750}, {-47.500, -50.000, -47.500}, {-49.268, -49.268, -47.500}, {-49.268, -49.268, -33.750}, - {-47.500, -50.000, -11.250}, {-49.268, -49.268, -11.250}, {-47.500, -50.000, 11.250}, {-49.268, -49.268, 11.250}, - {-47.500, -50.000, 33.750}, {-49.268, -49.268, 33.750}, {-47.500, -50.000, 47.500}, {-49.268, -49.268, 47.500}, - {-49.268, -49.268, -33.750}, {-49.268, -49.268, -47.500}, {-50.000, -47.500, -47.500}, {-50.000, -47.500, -33.750}, - {-49.268, -49.268, -11.250}, {-50.000, -47.500, -11.250}, {-49.268, -49.268, 11.250}, {-50.000, -47.500, 11.250}, - {-49.268, -49.268, 33.750}, {-50.000, -47.500, 33.750}, {-49.268, -49.268, 47.500}, {-50.000, -47.500, 47.500}, - {-33.750, -47.500, -50.000}, {-47.500, -47.500, -50.000}, {-47.500, -49.268, -49.268}, {-33.750, -49.268, -49.268}, - {-11.250, -47.500, -50.000}, {-11.250, -49.268, -49.268}, {11.250, -47.500, -50.000}, {11.250, -49.268, -49.268}, - {33.750, -47.500, -50.000}, {33.750, -49.268, -49.268}, {47.500, -47.500, -50.000}, {47.500, -49.268, -49.268}, - {-47.500, -50.000, -47.500}, {-33.750, -49.268, -49.268}, {-47.500, -49.268, -49.268}, {-33.750, -50.000, -47.500}, - {-11.250, -49.268, -49.268}, {-11.250, -50.000, -47.500}, {11.250, -49.268, -49.268}, {11.250, -50.000, -47.500}, - {33.750, -49.268, -49.268}, {33.750, -50.000, -47.500}, {47.500, -49.268, -49.268}, {47.500, -50.000, -47.500}, - {47.500, -49.268, 49.268}, {33.750, -47.500, 50.000}, {47.500, -47.500, 50.000}, {33.750, -49.268, 49.268}, - {11.250, -47.500, 50.000}, {11.250, -49.268, 49.268}, {-11.250, -47.500, 50.000}, {-11.250, -49.268, 49.268}, - {-33.750, -47.500, 50.000}, {-33.750, -49.268, 49.268}, {-47.500, -47.500, 50.000}, {-47.500, -49.268, 49.268}, - {33.750, -49.268, 49.268}, {47.500, -49.268, 49.268}, {47.500, -50.000, 47.500}, {33.750, -50.000, 47.500}, - {11.250, -49.268, 49.268}, {11.250, -50.000, 47.500}, {-11.250, -49.268, 49.268}, {-11.250, -50.000, 47.500}, - {-33.750, -49.268, 49.268}, {-33.750, -50.000, 47.500}, {-47.500, -49.268, 49.268}, {-47.500, -50.000, 47.500}, - {50.000, -47.500, -33.750}, {50.000, -47.500, -47.500}, {49.268, -49.268, -47.500}, {49.268, -49.268, -33.750}, - {50.000, -47.500, -11.250}, {49.268, -49.268, -11.250}, {50.000, -47.500, 11.250}, {49.268, -49.268, 11.250}, - {50.000, -47.500, 33.750}, {49.268, -49.268, 33.750}, {50.000, -47.500, 47.500}, {49.268, -49.268, 47.500}, - {49.268, -49.268, -33.750}, {49.268, -49.268, -47.500}, {47.500, -50.000, -47.500}, {47.500, -50.000, -33.750}, - {49.268, -49.268, -11.250}, {47.500, -50.000, -11.250}, {49.268, -49.268, 11.250}, {47.500, -50.000, 11.250}, - {49.268, -49.268, 33.750}, {47.500, -50.000, 33.750}, {49.268, -49.268, 47.500}, {47.500, -50.000, 47.500}, - {47.500, -33.750, -50.000}, {47.500, -47.500, -50.000}, {49.268, -47.500, -49.268}, {49.268, -33.750, -49.268}, - {47.500, -11.250, -50.000}, {49.268, -11.250, -49.268}, {47.500, 11.250, -50.000}, {49.268, 11.250, -49.268}, - {47.500, 33.750, -50.000}, {49.268, 33.750, -49.268}, {47.500, 47.500, -50.000}, {49.268, 47.500, -49.268}, - {50.000, -47.500, -47.500}, {49.268, -33.750, -49.268}, {49.268, -47.500, -49.268}, {50.000, -33.750, -47.500}, - {49.268, -11.250, -49.268}, {50.000, -11.250, -47.500}, {49.268, 11.250, -49.268}, {50.000, 11.250, -47.500}, - {49.268, 33.750, -49.268}, {50.000, 33.750, -47.500}, {49.268, 47.500, -49.268}, {50.000, 47.500, -47.500}, - {47.500, 33.750, 50.000}, {47.500, 47.500, 50.000}, {49.268, 47.500, 49.268}, {49.268, 33.750, 49.268}, - {47.500, 11.250, 50.000}, {49.268, 11.250, 49.268}, {47.500, -11.250, 50.000}, {49.268, -11.250, 49.268}, - {47.500, -33.750, 50.000}, {49.268, -33.750, 49.268}, {47.500, -47.500, 50.000}, {49.268, -47.500, 49.268}, - {49.268, 33.750, 49.268}, {49.268, 47.500, 49.268}, {50.000, 47.500, 47.500}, {50.000, 33.750, 47.500}, - {49.268, 11.250, 49.268}, {50.000, 11.250, 47.500}, {49.268, -11.250, 49.268}, {50.000, -11.250, 47.500}, - {49.268, -33.750, 49.268}, {50.000, -33.750, 47.500}, {49.268, -47.500, 49.268}, {50.000, -47.500, 47.500}, - {47.500, 50.000, -33.750}, {47.500, 50.000, -47.500}, {49.268, 49.268, -47.500}, {49.268, 49.268, -33.750}, - {47.500, 50.000, -11.250}, {49.268, 49.268, -11.250}, {47.500, 50.000, 11.250}, {49.268, 49.268, 11.250}, - {47.500, 50.000, 33.750}, {49.268, 49.268, 33.750}, {47.500, 50.000, 47.500}, {49.268, 49.268, 47.500}, - {49.268, 49.268, -33.750}, {49.268, 49.268, -47.500}, {50.000, 47.500, -47.500}, {50.000, 47.500, -33.750}, - {49.268, 49.268, -11.250}, {50.000, 47.500, -11.250}, {49.268, 49.268, 11.250}, {50.000, 47.500, 11.250}, - {49.268, 49.268, 33.750}, {50.000, 47.500, 33.750}, {49.268, 49.268, 47.500}, {50.000, 47.500, 47.500}, - {47.500, 49.268, -49.268}, {33.750, 47.500, -50.000}, {47.500, 47.500, -50.000}, {33.750, 49.268, -49.268}, - {11.250, 47.500, -50.000}, {11.250, 49.268, -49.268}, {-11.250, 47.500, -50.000}, {-11.250, 49.268, -49.268}, - {-33.750, 47.500, -50.000}, {-33.750, 49.268, -49.268}, {-47.500, 47.500, -50.000}, {-47.500, 49.268, -49.268}, - {47.500, 50.000, -47.500}, {33.750, 49.268, -49.268}, {47.500, 49.268, -49.268}, {33.750, 50.000, -47.500}, - {11.250, 49.268, -49.268}, {11.250, 50.000, -47.500}, {-11.250, 49.268, -49.268}, {-11.250, 50.000, -47.500}, - {-33.750, 49.268, -49.268}, {-33.750, 50.000, -47.500}, {-47.500, 49.268, -49.268}, {-47.500, 50.000, -47.500}, - {-33.750, 47.500, 50.000}, {-47.500, 47.500, 50.000}, {-47.500, 49.268, 49.268}, {-33.750, 49.268, 49.268}, - {-11.250, 47.500, 50.000}, {-11.250, 49.268, 49.268}, {11.250, 47.500, 50.000}, {11.250, 49.268, 49.268}, - {33.750, 47.500, 50.000}, {33.750, 49.268, 49.268}, {47.500, 47.500, 50.000}, {47.500, 49.268, 49.268}, - {-33.750, 49.268, 49.268}, {-47.500, 49.268, 49.268}, {-47.500, 50.000, 47.500}, {-33.750, 50.000, 47.500}, - {-11.250, 49.268, 49.268}, {-11.250, 50.000, 47.500}, {11.250, 49.268, 49.268}, {11.250, 50.000, 47.500}, - {33.750, 49.268, 49.268}, {33.750, 50.000, 47.500}, {47.500, 49.268, 49.268}, {47.500, 50.000, 47.500}, - {50.000, 33.750, -47.500}, {50.000, 47.500, -33.750}, {50.000, 47.500, -47.500}, {50.000, 33.750, -33.750}, - {50.000, 47.500, -11.250}, {50.000, 11.250, -47.500}, {50.000, 33.750, -11.250}, {50.000, 47.500, 11.250}, - {50.000, 11.250, -33.750}, {50.000, -11.250, -47.500}, {50.000, 33.750, 11.250}, {50.000, 47.500, 33.750}, - {50.000, 11.250, -11.250}, {50.000, -11.250, -33.750}, {50.000, -33.750, -47.500}, {50.000, 33.750, 33.750}, - {50.000, 47.500, 47.500}, {50.000, 33.750, 47.500}, {50.000, -33.750, -33.750}, {50.000, -47.500, -47.500}, - {50.000, -47.500, -33.750}, {50.000, -11.250, -11.250}, {50.000, -33.750, -11.250}, {50.000, -47.500, -11.250}, - {50.000, 11.250, 11.250}, {50.000, -11.250, 11.250}, {50.000, -33.750, 11.250}, {50.000, -47.500, 11.250}, - {50.000, 11.250, 33.750}, {50.000, 11.250, 47.500}, {50.000, -11.250, 33.750}, {50.000, -11.250, 47.500}, - {50.000, -33.750, 33.750}, {50.000, -33.750, 47.500}, {50.000, -47.500, 33.750}, {50.000, -47.500, 47.500}, - {33.750, -50.000, -47.500}, {47.500, -50.000, -33.750}, {47.500, -50.000, -47.500}, {33.750, -50.000, -33.750}, - {47.500, -50.000, -11.250}, {11.250, -50.000, -47.500}, {33.750, -50.000, -11.250}, {47.500, -50.000, 11.250}, - {11.250, -50.000, -33.750}, {-11.250, -50.000, -47.500}, {33.750, -50.000, 11.250}, {47.500, -50.000, 33.750}, - {11.250, -50.000, -11.250}, {-11.250, -50.000, -33.750}, {-33.750, -50.000, -47.500}, {33.750, -50.000, 33.750}, - {47.500, -50.000, 47.500}, {33.750, -50.000, 47.500}, {-33.750, -50.000, -33.750}, {-47.500, -50.000, -47.500}, - {-47.500, -50.000, -33.750}, {-11.250, -50.000, -11.250}, {-33.750, -50.000, -11.250}, {-47.500, -50.000, -11.250}, - {11.250, -50.000, 11.250}, {-11.250, -50.000, 11.250}, {-33.750, -50.000, 11.250}, {-47.500, -50.000, 11.250}, - {11.250, -50.000, 33.750}, {11.250, -50.000, 47.500}, {-11.250, -50.000, 33.750}, {-11.250, -50.000, 47.500}, - {-33.750, -50.000, 33.750}, {-33.750, -50.000, 47.500}, {-47.500, -50.000, 33.750}, {-47.500, -50.000, 47.500}, - {47.500, 33.750, 50.000}, {33.750, 47.500, 50.000}, {47.500, 47.500, 50.000}, {33.750, 33.750, 50.000}, - {11.250, 47.500, 50.000}, {47.500, 11.250, 50.000}, {11.250, 33.750, 50.000}, {-11.250, 47.500, 50.000}, - {33.750, 11.250, 50.000}, {47.500, -11.250, 50.000}, {-11.250, 33.750, 50.000}, {-33.750, 47.500, 50.000}, - {11.250, 11.250, 50.000}, {33.750, -11.250, 50.000}, {47.500, -33.750, 50.000}, {-33.750, 33.750, 50.000}, - {-47.500, 47.500, 50.000}, {-47.500, 33.750, 50.000}, {33.750, -33.750, 50.000}, {47.500, -47.500, 50.000}, - {33.750, -47.500, 50.000}, {-33.750, 11.250, 50.000}, {-47.500, 11.250, 50.000}, {-11.250, 11.250, 50.000}, - {-33.750, -11.250, 50.000}, {-47.500, -11.250, 50.000}, {-11.250, -11.250, 50.000}, {11.250, -11.250, 50.000}, - {11.250, -33.750, 50.000}, {11.250, -47.500, 50.000}, {-11.250, -33.750, 50.000}, {-11.250, -47.500, 50.000}, - {-33.750, -33.750, 50.000}, {-33.750, -47.500, 50.000}, {-47.500, -33.750, 50.000}, {-47.500, -47.500, 50.000}, - {-50.000, -33.750, -47.500}, {-50.000, -47.500, -33.750}, {-50.000, -47.500, -47.500}, {-50.000, -33.750, -33.750}, - {-50.000, -47.500, -11.250}, {-50.000, -11.250, -47.500}, {-50.000, -33.750, -11.250}, {-50.000, -47.500, 11.250}, - {-50.000, -11.250, -33.750}, {-50.000, 11.250, -47.500}, {-50.000, -33.750, 11.250}, {-50.000, -47.500, 33.750}, - {-50.000, -11.250, -11.250}, {-50.000, 11.250, -33.750}, {-50.000, 33.750, -47.500}, {-50.000, -33.750, 33.750}, - {-50.000, -47.500, 47.500}, {-50.000, -33.750, 47.500}, {-50.000, 33.750, -33.750}, {-50.000, 47.500, -47.500}, - {-50.000, 47.500, -33.750}, {-50.000, 11.250, -11.250}, {-50.000, 33.750, -11.250}, {-50.000, 47.500, -11.250}, - {-50.000, -11.250, 11.250}, {-50.000, 11.250, 11.250}, {-50.000, 33.750, 11.250}, {-50.000, 47.500, 11.250}, - {-50.000, -11.250, 33.750}, {-50.000, -11.250, 47.500}, {-50.000, 11.250, 33.750}, {-50.000, 11.250, 47.500}, - {-50.000, 33.750, 33.750}, {-50.000, 33.750, 47.500}, {-50.000, 47.500, 33.750}, {-50.000, 47.500, 47.500}, - {33.750, 50.000, 47.500}, {47.500, 50.000, 33.750}, {47.500, 50.000, 47.500}, {33.750, 50.000, 33.750}, - {47.500, 50.000, 11.250}, {11.250, 50.000, 47.500}, {33.750, 50.000, 11.250}, {47.500, 50.000, -11.250}, - {11.250, 50.000, 33.750}, {-11.250, 50.000, 47.500}, {33.750, 50.000, -11.250}, {47.500, 50.000, -33.750}, - {11.250, 50.000, 11.250}, {-11.250, 50.000, 33.750}, {-33.750, 50.000, 47.500}, {33.750, 50.000, -33.750}, - {47.500, 50.000, -47.500}, {33.750, 50.000, -47.500}, {-33.750, 50.000, 33.750}, {-47.500, 50.000, 47.500}, - {-47.500, 50.000, 33.750}, {-11.250, 50.000, 11.250}, {-33.750, 50.000, 11.250}, {-47.500, 50.000, 11.250}, - {11.250, 50.000, -11.250}, {-11.250, 50.000, -11.250}, {-33.750, 50.000, -11.250}, {-47.500, 50.000, -11.250}, - {11.250, 50.000, -33.750}, {11.250, 50.000, -47.500}, {-11.250, 50.000, -33.750}, {-11.250, 50.000, -47.500}, - {-33.750, 50.000, -33.750}, {-33.750, 50.000, -47.500}, {-47.500, 50.000, -33.750}, {-47.500, 50.000, -47.500}, - {-33.750, 47.500, -50.000}, {-47.500, 47.500, -50.000}, {-47.500, 33.750, -50.000}, {-33.750, 33.750, -50.000}, - {-11.250, 47.500, -50.000}, {-47.500, 11.250, -50.000}, {-11.250, 33.750, -50.000}, {11.250, 47.500, -50.000}, - {-33.750, 11.250, -50.000}, {-47.500, -11.250, -50.000}, {11.250, 33.750, -50.000}, {33.750, 47.500, -50.000}, - {-11.250, 11.250, -50.000}, {-33.750, -11.250, -50.000}, {-47.500, -33.750, -50.000}, {33.750, 33.750, -50.000}, - {47.500, 47.500, -50.000}, {47.500, 33.750, -50.000}, {11.250, 11.250, -50.000}, {33.750, 11.250, -50.000}, - {47.500, 11.250, -50.000}, {-11.250, -11.250, -50.000}, {11.250, -11.250, -50.000}, {33.750, -11.250, -50.000}, - {47.500, -11.250, -50.000}, {-33.750, -33.750, -50.000}, {-47.500, -47.500, -50.000}, {-33.750, -47.500, -50.000}, - {-11.250, -33.750, -50.000}, {-11.250, -47.500, -50.000}, {11.250, -33.750, -50.000}, {11.250, -47.500, -50.000}, - {33.750, -33.750, -50.000}, {33.750, -47.500, -50.000}, {47.500, -33.750, -50.000}, {47.500, -47.500, -50.000}, -}; - -inline TArray ExpectedPositionsPivotOffset = { - {-49.268, 49.268, -40.417}, {-50.000, 47.500, -40.417}, {-48.943, 48.943, -40.657}, {-49.268, 47.500, -40.711}, - {-48.943, 48.943, -40.657}, {-47.500, 47.500, -40.833}, {-47.500, 49.268, -40.711}, {-49.268, 47.500, -40.711}, - {-48.943, 48.943, -40.657}, {-47.500, 50.000, -40.417}, {-49.268, 49.268, -40.417}, {-47.500, 49.268, -40.711}, - {-48.943, 48.943, 48.943}, {-49.268, 47.500, 49.268}, {-50.000, 47.500, 47.500}, {-49.268, 49.268, 47.500}, - {-48.943, 48.943, 48.943}, {-47.500, 50.000, 47.500}, {-47.500, 49.268, 49.268}, {-49.268, 49.268, 47.500}, - {-49.268, 47.500, 49.268}, {-48.943, 48.943, 48.943}, {-47.500, 47.500, 50.000}, {-47.500, 49.268, 49.268}, - {-48.943, -48.943, -40.657}, {-50.000, -47.500, -40.417}, {-49.268, -49.268, -40.417}, {-49.268, -47.500, -40.711}, - {-49.268, -49.268, -40.417}, {-47.500, -50.000, -40.417}, {-48.943, -48.943, -40.657}, {-47.500, -49.268, -40.711}, - {-49.268, -47.500, -40.711}, {-48.943, -48.943, -40.657}, {-47.500, -47.500, -40.833}, {-47.500, -49.268, -40.711}, - {-48.943, -48.943, 48.943}, {-50.000, -47.500, 47.500}, {-49.268, -47.500, 49.268}, {-49.268, -49.268, 47.500}, - {-48.943, -48.943, 48.943}, {-47.500, -47.500, 50.000}, {-47.500, -49.268, 49.268}, {-49.268, -47.500, 49.268}, - {-48.943, -48.943, 48.943}, {-47.500, -49.268, 49.268}, {-47.500, -50.000, 47.500}, {-49.268, -49.268, 47.500}, - {48.943, 48.943, -40.657}, {50.000, 47.500, -40.417}, {49.268, 49.268, -40.417}, {49.268, 47.500, -40.711}, - {49.268, 49.268, -40.417}, {47.500, 50.000, -40.417}, {48.943, 48.943, -40.657}, {47.500, 49.268, -40.711}, - {48.943, 48.943, -40.657}, {47.500, 49.268, -40.711}, {47.500, 47.500, -40.833}, {49.268, 47.500, -40.711}, - {48.943, 48.943, 48.943}, {50.000, 47.500, 47.500}, {49.268, 47.500, 49.268}, {49.268, 49.268, 47.500}, - {49.268, 47.500, 49.268}, {47.500, 47.500, 50.000}, {48.943, 48.943, 48.943}, {47.500, 49.268, 49.268}, - {48.943, 48.943, 48.943}, {47.500, 49.268, 49.268}, {47.500, 50.000, 47.500}, {49.268, 49.268, 47.500}, - {48.943, -48.943, -40.657}, {47.500, -50.000, -40.417}, {49.268, -49.268, -40.417}, {47.500, -49.268, -40.711}, - {49.268, -49.268, -40.417}, {50.000, -47.500, -40.417}, {48.943, -48.943, -40.657}, {49.268, -47.500, -40.711}, - {49.268, -47.500, -40.711}, {47.500, -47.500, -40.833}, {48.943, -48.943, -40.657}, {47.500, -49.268, -40.711}, - {48.943, -48.943, 48.943}, {47.500, -50.000, 47.500}, {47.500, -49.268, 49.268}, {49.268, -49.268, 47.500}, - {48.943, -48.943, 48.943}, {47.500, -49.268, 49.268}, {47.500, -47.500, 50.000}, {49.268, -47.500, 49.268}, - {48.943, -48.943, 48.943}, {49.268, -47.500, 49.268}, {50.000, -47.500, 47.500}, {49.268, -49.268, 47.500}, - {-49.268, 47.500, -40.711}, {-47.500, 33.750, -40.833}, {-47.500, 47.500, -40.833}, {-49.268, 33.750, -40.711}, - {-47.500, 11.250, -40.833}, {-49.268, 11.250, -40.711}, {-47.500, -11.250, -40.833}, {-49.268, -11.250, -40.711}, - {-47.500, -33.750, -40.833}, {-49.268, -33.750, -40.711}, {-47.500, -47.500, -40.833}, {-49.268, -47.500, -40.711}, - {-50.000, 47.500, -40.417}, {-49.268, 33.750, -40.711}, {-49.268, 47.500, -40.711}, {-50.000, 33.750, -40.417}, - {-49.268, 11.250, -40.711}, {-50.000, 11.250, -40.417}, {-49.268, -11.250, -40.711}, {-50.000, -11.250, -40.417}, - {-49.268, -33.750, -40.711}, {-50.000, -33.750, -40.417}, {-49.268, -47.500, -40.711}, {-50.000, -47.500, -40.417}, - {-49.268, 49.268, 47.500}, {-47.500, 50.000, 38.750}, {-47.500, 50.000, 47.500}, {-49.268, 49.268, 38.750}, - {-47.500, 50.000, 16.250}, {-49.268, 49.268, 16.250}, {-47.500, 50.000, -6.250}, {-49.268, 49.268, -6.250}, - {-47.500, 50.000, -28.750}, {-49.268, 49.268, -28.750}, {-47.500, 50.000, -40.417}, {-49.268, 49.268, -40.417}, - {-50.000, 47.500, 47.500}, {-49.268, 49.268, 38.750}, {-49.268, 49.268, 47.500}, {-50.000, 47.500, 38.750}, - {-49.268, 49.268, 16.250}, {-50.000, 47.500, 16.250}, {-49.268, 49.268, -6.250}, {-50.000, 47.500, -6.250}, - {-49.268, 49.268, -28.750}, {-50.000, 47.500, -28.750}, {-49.268, 49.268, -40.417}, {-50.000, 47.500, -40.417}, - {-49.268, -47.500, 49.268}, {-47.500, -33.750, 50.000}, {-47.500, -47.500, 50.000}, {-49.268, -33.750, 49.268}, - {-47.500, -11.250, 50.000}, {-49.268, -11.250, 49.268}, {-47.500, 11.250, 50.000}, {-49.268, 11.250, 49.268}, - {-47.500, 33.750, 50.000}, {-49.268, 33.750, 49.268}, {-47.500, 47.500, 50.000}, {-49.268, 47.500, 49.268}, - {-49.268, -33.750, 49.268}, {-49.268, -47.500, 49.268}, {-50.000, -47.500, 47.500}, {-50.000, -33.750, 47.500}, - {-49.268, -11.250, 49.268}, {-50.000, -11.250, 47.500}, {-49.268, 11.250, 49.268}, {-50.000, 11.250, 47.500}, - {-49.268, 33.750, 49.268}, {-50.000, 33.750, 47.500}, {-49.268, 47.500, 49.268}, {-50.000, 47.500, 47.500}, - {-47.500, -50.000, -28.750}, {-47.500, -50.000, -40.417}, {-49.268, -49.268, -40.417}, {-49.268, -49.268, -28.750}, - {-47.500, -50.000, -6.250}, {-49.268, -49.268, -6.250}, {-47.500, -50.000, 16.250}, {-49.268, -49.268, 16.250}, - {-47.500, -50.000, 38.750}, {-49.268, -49.268, 38.750}, {-47.500, -50.000, 47.500}, {-49.268, -49.268, 47.500}, - {-49.268, -49.268, -28.750}, {-49.268, -49.268, -40.417}, {-50.000, -47.500, -40.417}, {-50.000, -47.500, -28.750}, - {-49.268, -49.268, -6.250}, {-50.000, -47.500, -6.250}, {-49.268, -49.268, 16.250}, {-50.000, -47.500, 16.250}, - {-49.268, -49.268, 38.750}, {-50.000, -47.500, 38.750}, {-49.268, -49.268, 47.500}, {-50.000, -47.500, 47.500}, - {-33.750, -47.500, -40.833}, {-47.500, -47.500, -40.833}, {-47.500, -49.268, -40.711}, {-33.750, -49.268, -40.711}, - {-11.250, -47.500, -40.833}, {-11.250, -49.268, -40.711}, {11.250, -47.500, -40.833}, {11.250, -49.268, -40.711}, - {33.750, -47.500, -40.833}, {33.750, -49.268, -40.711}, {47.500, -47.500, -40.833}, {47.500, -49.268, -40.711}, - {-47.500, -50.000, -40.417}, {-33.750, -49.268, -40.711}, {-47.500, -49.268, -40.711}, {-33.750, -50.000, -40.417}, - {-11.250, -49.268, -40.711}, {-11.250, -50.000, -40.417}, {11.250, -49.268, -40.711}, {11.250, -50.000, -40.417}, - {33.750, -49.268, -40.711}, {33.750, -50.000, -40.417}, {47.500, -49.268, -40.711}, {47.500, -50.000, -40.417}, - {47.500, -49.268, 49.268}, {33.750, -47.500, 50.000}, {47.500, -47.500, 50.000}, {33.750, -49.268, 49.268}, - {11.250, -47.500, 50.000}, {11.250, -49.268, 49.268}, {-11.250, -47.500, 50.000}, {-11.250, -49.268, 49.268}, - {-33.750, -47.500, 50.000}, {-33.750, -49.268, 49.268}, {-47.500, -47.500, 50.000}, {-47.500, -49.268, 49.268}, - {33.750, -49.268, 49.268}, {47.500, -49.268, 49.268}, {47.500, -50.000, 47.500}, {33.750, -50.000, 47.500}, - {11.250, -49.268, 49.268}, {11.250, -50.000, 47.500}, {-11.250, -49.268, 49.268}, {-11.250, -50.000, 47.500}, - {-33.750, -49.268, 49.268}, {-33.750, -50.000, 47.500}, {-47.500, -49.268, 49.268}, {-47.500, -50.000, 47.500}, - {50.000, -47.500, -28.750}, {50.000, -47.500, -40.417}, {49.268, -49.268, -40.417}, {49.268, -49.268, -28.750}, - {50.000, -47.500, -6.250}, {49.268, -49.268, -6.250}, {50.000, -47.500, 16.250}, {49.268, -49.268, 16.250}, - {50.000, -47.500, 38.750}, {49.268, -49.268, 38.750}, {50.000, -47.500, 47.500}, {49.268, -49.268, 47.500}, - {49.268, -49.268, -28.750}, {49.268, -49.268, -40.417}, {47.500, -50.000, -40.417}, {47.500, -50.000, -28.750}, - {49.268, -49.268, -6.250}, {47.500, -50.000, -6.250}, {49.268, -49.268, 16.250}, {47.500, -50.000, 16.250}, - {49.268, -49.268, 38.750}, {47.500, -50.000, 38.750}, {49.268, -49.268, 47.500}, {47.500, -50.000, 47.500}, - {47.500, -33.750, -40.833}, {47.500, -47.500, -40.833}, {49.268, -47.500, -40.711}, {49.268, -33.750, -40.711}, - {47.500, -11.250, -40.833}, {49.268, -11.250, -40.711}, {47.500, 11.250, -40.833}, {49.268, 11.250, -40.711}, - {47.500, 33.750, -40.833}, {49.268, 33.750, -40.711}, {47.500, 47.500, -40.833}, {49.268, 47.500, -40.711}, - {50.000, -47.500, -40.417}, {49.268, -33.750, -40.711}, {49.268, -47.500, -40.711}, {50.000, -33.750, -40.417}, - {49.268, -11.250, -40.711}, {50.000, -11.250, -40.417}, {49.268, 11.250, -40.711}, {50.000, 11.250, -40.417}, - {49.268, 33.750, -40.711}, {50.000, 33.750, -40.417}, {49.268, 47.500, -40.711}, {50.000, 47.500, -40.417}, - {47.500, 33.750, 50.000}, {47.500, 47.500, 50.000}, {49.268, 47.500, 49.268}, {49.268, 33.750, 49.268}, - {47.500, 11.250, 50.000}, {49.268, 11.250, 49.268}, {47.500, -11.250, 50.000}, {49.268, -11.250, 49.268}, - {47.500, -33.750, 50.000}, {49.268, -33.750, 49.268}, {47.500, -47.500, 50.000}, {49.268, -47.500, 49.268}, - {49.268, 33.750, 49.268}, {49.268, 47.500, 49.268}, {50.000, 47.500, 47.500}, {50.000, 33.750, 47.500}, - {49.268, 11.250, 49.268}, {50.000, 11.250, 47.500}, {49.268, -11.250, 49.268}, {50.000, -11.250, 47.500}, - {49.268, -33.750, 49.268}, {50.000, -33.750, 47.500}, {49.268, -47.500, 49.268}, {50.000, -47.500, 47.500}, - {47.500, 50.000, -28.750}, {47.500, 50.000, -40.417}, {49.268, 49.268, -40.417}, {49.268, 49.268, -28.750}, - {47.500, 50.000, -6.250}, {49.268, 49.268, -6.250}, {47.500, 50.000, 16.250}, {49.268, 49.268, 16.250}, - {47.500, 50.000, 38.750}, {49.268, 49.268, 38.750}, {47.500, 50.000, 47.500}, {49.268, 49.268, 47.500}, - {49.268, 49.268, -28.750}, {49.268, 49.268, -40.417}, {50.000, 47.500, -40.417}, {50.000, 47.500, -28.750}, - {49.268, 49.268, -6.250}, {50.000, 47.500, -6.250}, {49.268, 49.268, 16.250}, {50.000, 47.500, 16.250}, - {49.268, 49.268, 38.750}, {50.000, 47.500, 38.750}, {49.268, 49.268, 47.500}, {50.000, 47.500, 47.500}, - {47.500, 49.268, -40.711}, {33.750, 47.500, -40.833}, {47.500, 47.500, -40.833}, {33.750, 49.268, -40.711}, - {11.250, 47.500, -40.833}, {11.250, 49.268, -40.711}, {-11.250, 47.500, -40.833}, {-11.250, 49.268, -40.711}, - {-33.750, 47.500, -40.833}, {-33.750, 49.268, -40.711}, {-47.500, 47.500, -40.833}, {-47.500, 49.268, -40.711}, - {47.500, 50.000, -40.417}, {33.750, 49.268, -40.711}, {47.500, 49.268, -40.711}, {33.750, 50.000, -40.417}, - {11.250, 49.268, -40.711}, {11.250, 50.000, -40.417}, {-11.250, 49.268, -40.711}, {-11.250, 50.000, -40.417}, - {-33.750, 49.268, -40.711}, {-33.750, 50.000, -40.417}, {-47.500, 49.268, -40.711}, {-47.500, 50.000, -40.417}, - {-33.750, 47.500, 50.000}, {-47.500, 47.500, 50.000}, {-47.500, 49.268, 49.268}, {-33.750, 49.268, 49.268}, - {-11.250, 47.500, 50.000}, {-11.250, 49.268, 49.268}, {11.250, 47.500, 50.000}, {11.250, 49.268, 49.268}, - {33.750, 47.500, 50.000}, {33.750, 49.268, 49.268}, {47.500, 47.500, 50.000}, {47.500, 49.268, 49.268}, - {-33.750, 49.268, 49.268}, {-47.500, 49.268, 49.268}, {-47.500, 50.000, 47.500}, {-33.750, 50.000, 47.500}, - {-11.250, 49.268, 49.268}, {-11.250, 50.000, 47.500}, {11.250, 49.268, 49.268}, {11.250, 50.000, 47.500}, - {33.750, 49.268, 49.268}, {33.750, 50.000, 47.500}, {47.500, 49.268, 49.268}, {47.500, 50.000, 47.500}, - {50.000, 33.750, -40.417}, {50.000, 47.500, -28.750}, {50.000, 47.500, -40.417}, {50.000, 33.750, -28.750}, - {50.000, 47.500, -6.250}, {50.000, 11.250, -40.417}, {50.000, 33.750, -6.250}, {50.000, 47.500, 16.250}, - {50.000, 11.250, -28.750}, {50.000, -11.250, -40.417}, {50.000, 33.750, 16.250}, {50.000, 47.500, 38.750}, - {50.000, 11.250, -6.250}, {50.000, -11.250, -28.750}, {50.000, -33.750, -40.417}, {50.000, 33.750, 38.750}, - {50.000, 47.500, 47.500}, {50.000, 33.750, 47.500}, {50.000, -33.750, -28.750}, {50.000, -47.500, -40.417}, - {50.000, -47.500, -28.750}, {50.000, -11.250, -6.250}, {50.000, -33.750, -6.250}, {50.000, -47.500, -6.250}, - {50.000, 11.250, 16.250}, {50.000, -11.250, 16.250}, {50.000, -33.750, 16.250}, {50.000, -47.500, 16.250}, - {50.000, 11.250, 38.750}, {50.000, 11.250, 47.500}, {50.000, -11.250, 38.750}, {50.000, -11.250, 47.500}, - {50.000, -33.750, 38.750}, {50.000, -33.750, 47.500}, {50.000, -47.500, 38.750}, {50.000, -47.500, 47.500}, - {33.750, -50.000, -40.417}, {47.500, -50.000, -28.750}, {47.500, -50.000, -40.417}, {33.750, -50.000, -28.750}, - {47.500, -50.000, -6.250}, {11.250, -50.000, -40.417}, {33.750, -50.000, -6.250}, {47.500, -50.000, 16.250}, - {11.250, -50.000, -28.750}, {-11.250, -50.000, -40.417}, {33.750, -50.000, 16.250}, {47.500, -50.000, 38.750}, - {11.250, -50.000, -6.250}, {-11.250, -50.000, -28.750}, {-33.750, -50.000, -40.417}, {33.750, -50.000, 38.750}, - {47.500, -50.000, 47.500}, {33.750, -50.000, 47.500}, {-33.750, -50.000, -28.750}, {-47.500, -50.000, -40.417}, - {-47.500, -50.000, -28.750}, {-11.250, -50.000, -6.250}, {-33.750, -50.000, -6.250}, {-47.500, -50.000, -6.250}, - {11.250, -50.000, 16.250}, {-11.250, -50.000, 16.250}, {-33.750, -50.000, 16.250}, {-47.500, -50.000, 16.250}, - {11.250, -50.000, 38.750}, {11.250, -50.000, 47.500}, {-11.250, -50.000, 38.750}, {-11.250, -50.000, 47.500}, - {-33.750, -50.000, 38.750}, {-33.750, -50.000, 47.500}, {-47.500, -50.000, 38.750}, {-47.500, -50.000, 47.500}, - {47.500, 33.750, 50.000}, {33.750, 47.500, 50.000}, {47.500, 47.500, 50.000}, {33.750, 33.750, 50.000}, - {11.250, 47.500, 50.000}, {47.500, 11.250, 50.000}, {11.250, 33.750, 50.000}, {-11.250, 47.500, 50.000}, - {33.750, 11.250, 50.000}, {47.500, -11.250, 50.000}, {-11.250, 33.750, 50.000}, {-33.750, 47.500, 50.000}, - {11.250, 11.250, 50.000}, {33.750, -11.250, 50.000}, {47.500, -33.750, 50.000}, {-33.750, 33.750, 50.000}, - {-47.500, 47.500, 50.000}, {-47.500, 33.750, 50.000}, {33.750, -33.750, 50.000}, {47.500, -47.500, 50.000}, - {33.750, -47.500, 50.000}, {-33.750, 11.250, 50.000}, {-47.500, 11.250, 50.000}, {-11.250, 11.250, 50.000}, - {-33.750, -11.250, 50.000}, {-47.500, -11.250, 50.000}, {-11.250, -11.250, 50.000}, {11.250, -11.250, 50.000}, - {11.250, -33.750, 50.000}, {11.250, -47.500, 50.000}, {-11.250, -33.750, 50.000}, {-11.250, -47.500, 50.000}, - {-33.750, -33.750, 50.000}, {-33.750, -47.500, 50.000}, {-47.500, -33.750, 50.000}, {-47.500, -47.500, 50.000}, - {-50.000, -33.750, -40.417}, {-50.000, -47.500, -28.750}, {-50.000, -47.500, -40.417}, {-50.000, -33.750, -28.750}, - {-50.000, -47.500, -6.250}, {-50.000, -11.250, -40.417}, {-50.000, -33.750, -6.250}, {-50.000, -47.500, 16.250}, - {-50.000, -11.250, -28.750}, {-50.000, 11.250, -40.417}, {-50.000, -33.750, 16.250}, {-50.000, -47.500, 38.750}, - {-50.000, -11.250, -6.250}, {-50.000, 11.250, -28.750}, {-50.000, 33.750, -40.417}, {-50.000, -33.750, 38.750}, - {-50.000, -47.500, 47.500}, {-50.000, -33.750, 47.500}, {-50.000, 33.750, -28.750}, {-50.000, 47.500, -40.417}, - {-50.000, 47.500, -28.750}, {-50.000, 11.250, -6.250}, {-50.000, 33.750, -6.250}, {-50.000, 47.500, -6.250}, - {-50.000, -11.250, 16.250}, {-50.000, 11.250, 16.250}, {-50.000, 33.750, 16.250}, {-50.000, 47.500, 16.250}, - {-50.000, -11.250, 38.750}, {-50.000, -11.250, 47.500}, {-50.000, 11.250, 38.750}, {-50.000, 11.250, 47.500}, - {-50.000, 33.750, 38.750}, {-50.000, 33.750, 47.500}, {-50.000, 47.500, 38.750}, {-50.000, 47.500, 47.500}, - {33.750, 50.000, 47.500}, {47.500, 50.000, 38.750}, {47.500, 50.000, 47.500}, {33.750, 50.000, 38.750}, - {47.500, 50.000, 16.250}, {11.250, 50.000, 47.500}, {33.750, 50.000, 16.250}, {47.500, 50.000, -6.250}, - {11.250, 50.000, 38.750}, {-11.250, 50.000, 47.500}, {33.750, 50.000, -6.250}, {47.500, 50.000, -28.750}, - {11.250, 50.000, 16.250}, {-11.250, 50.000, 38.750}, {-33.750, 50.000, 47.500}, {33.750, 50.000, -28.750}, - {47.500, 50.000, -40.417}, {33.750, 50.000, -40.417}, {-33.750, 50.000, 38.750}, {-47.500, 50.000, 47.500}, - {-47.500, 50.000, 38.750}, {-11.250, 50.000, 16.250}, {-33.750, 50.000, 16.250}, {-47.500, 50.000, 16.250}, - {11.250, 50.000, -6.250}, {-11.250, 50.000, -6.250}, {-33.750, 50.000, -6.250}, {-47.500, 50.000, -6.250}, - {11.250, 50.000, -28.750}, {11.250, 50.000, -40.417}, {-11.250, 50.000, -28.750}, {-11.250, 50.000, -40.417}, - {-33.750, 50.000, -28.750}, {-33.750, 50.000, -40.417}, {-47.500, 50.000, -28.750}, {-47.500, 50.000, -40.417}, - {-33.750, 47.500, -40.833}, {-47.500, 47.500, -40.833}, {-47.500, 33.750, -40.833}, {-33.750, 33.750, -40.833}, - {-11.250, 47.500, -40.833}, {-47.500, 11.250, -40.833}, {-11.250, 33.750, -40.833}, {11.250, 47.500, -40.833}, - {-33.750, 11.250, -40.833}, {-47.500, -11.250, -40.833}, {11.250, 33.750, -40.833}, {33.750, 47.500, -40.833}, - {-11.250, 11.250, -40.833}, {-33.750, -11.250, -40.833}, {-47.500, -33.750, -40.833}, {33.750, 33.750, -40.833}, - {47.500, 47.500, -40.833}, {47.500, 33.750, -40.833}, {11.250, 11.250, -40.833}, {33.750, 11.250, -40.833}, - {47.500, 11.250, -40.833}, {-11.250, -11.250, -40.833}, {11.250, -11.250, -40.833}, {33.750, -11.250, -40.833}, - {47.500, -11.250, -40.833}, {-33.750, -33.750, -40.833}, {-47.500, -47.500, -40.833}, {-33.750, -47.500, -40.833}, - {-11.250, -33.750, -40.833}, {-11.250, -47.500, -40.833}, {11.250, -33.750, -40.833}, {11.250, -47.500, -40.833}, - {33.750, -33.750, -40.833}, {33.750, -47.500, -40.833}, {47.500, -33.750, -40.833}, {47.500, -47.500, -40.833}, -}; - -inline TArray ExpectedPositionsScaledDown = { - {-42.678, 42.678, -25.000}, {-50.000, 25.000, -25.000}, {-39.434, 39.434, -39.434}, {-42.678, 25.000, -42.678}, - {-39.434, 39.434, -39.434}, {-25.000, 25.000, -50.000}, {-25.000, 42.678, -42.678}, {-42.678, 25.000, -42.678}, - {-39.434, 39.434, -39.434}, {-25.000, 50.000, -25.000}, {-42.678, 42.678, -25.000}, {-25.000, 42.678, -42.678}, - {-39.434, 39.434, 39.434}, {-42.678, 25.000, 42.678}, {-50.000, 25.000, 25.000}, {-42.678, 42.678, 25.000}, - {-39.434, 39.434, 39.434}, {-25.000, 50.000, 25.000}, {-25.000, 42.678, 42.678}, {-42.678, 42.678, 25.000}, - {-42.678, 25.000, 42.678}, {-39.434, 39.434, 39.434}, {-25.000, 25.000, 50.000}, {-25.000, 42.678, 42.678}, - {-39.434, -39.434, -39.434}, {-50.000, -25.000, -25.000}, {-42.678, -42.678, -25.000}, {-42.678, -25.000, -42.678}, - {-42.678, -42.678, -25.000}, {-25.000, -50.000, -25.000}, {-39.434, -39.434, -39.434}, {-25.000, -42.678, -42.678}, - {-42.678, -25.000, -42.678}, {-39.434, -39.434, -39.434}, {-25.000, -25.000, -50.000}, {-25.000, -42.678, -42.678}, - {-39.434, -39.434, 39.434}, {-50.000, -25.000, 25.000}, {-42.678, -25.000, 42.678}, {-42.678, -42.678, 25.000}, - {-39.434, -39.434, 39.434}, {-25.000, -25.000, 50.000}, {-25.000, -42.678, 42.678}, {-42.678, -25.000, 42.678}, - {-39.434, -39.434, 39.434}, {-25.000, -42.678, 42.678}, {-25.000, -50.000, 25.000}, {-42.678, -42.678, 25.000}, - {39.434, 39.434, -39.434}, {50.000, 25.000, -25.000}, {42.678, 42.678, -25.000}, {42.678, 25.000, -42.678}, - {42.678, 42.678, -25.000}, {25.000, 50.000, -25.000}, {39.434, 39.434, -39.434}, {25.000, 42.678, -42.678}, - {39.434, 39.434, -39.434}, {25.000, 42.678, -42.678}, {25.000, 25.000, -50.000}, {42.678, 25.000, -42.678}, - {39.434, 39.434, 39.434}, {50.000, 25.000, 25.000}, {42.678, 25.000, 42.678}, {42.678, 42.678, 25.000}, - {42.678, 25.000, 42.678}, {25.000, 25.000, 50.000}, {39.434, 39.434, 39.434}, {25.000, 42.678, 42.678}, - {39.434, 39.434, 39.434}, {25.000, 42.678, 42.678}, {25.000, 50.000, 25.000}, {42.678, 42.678, 25.000}, - {39.434, -39.434, -39.434}, {25.000, -50.000, -25.000}, {42.678, -42.678, -25.000}, {25.000, -42.678, -42.678}, - {42.678, -42.678, -25.000}, {50.000, -25.000, -25.000}, {39.434, -39.434, -39.434}, {42.678, -25.000, -42.678}, - {42.678, -25.000, -42.678}, {25.000, -25.000, -50.000}, {39.434, -39.434, -39.434}, {25.000, -42.678, -42.678}, - {39.434, -39.434, 39.434}, {25.000, -50.000, 25.000}, {25.000, -42.678, 42.678}, {42.678, -42.678, 25.000}, - {39.434, -39.434, 39.434}, {25.000, -42.678, 42.678}, {25.000, -25.000, 50.000}, {42.678, -25.000, 42.678}, - {39.434, -39.434, 39.434}, {42.678, -25.000, 42.678}, {50.000, -25.000, 25.000}, {42.678, -42.678, 25.000}, - {-42.678, 25.000, -42.678}, {-25.000, 0.000, -50.000}, {-25.000, 25.000, -50.000}, {-42.678, 0.000, -42.678}, - {-25.000, 0.000, -50.000}, {-42.678, 0.000, -42.678}, {-25.000, -0.000, -50.000}, {-42.678, -0.000, -42.678}, - {-25.000, -0.000, -50.000}, {-42.678, -0.000, -42.678}, {-25.000, -25.000, -50.000}, {-42.678, -25.000, -42.678}, - {-50.000, 25.000, -25.000}, {-42.678, 0.000, -42.678}, {-42.678, 25.000, -42.678}, {-50.000, 0.000, -25.000}, - {-42.678, 0.000, -42.678}, {-50.000, 0.000, -25.000}, {-42.678, -0.000, -42.678}, {-50.000, -0.000, -25.000}, - {-42.678, -0.000, -42.678}, {-50.000, -0.000, -25.000}, {-42.678, -25.000, -42.678}, {-50.000, -25.000, -25.000}, - {-42.678, 42.678, 25.000}, {-25.000, 50.000, 20.000}, {-25.000, 50.000, 25.000}, {-42.678, 42.678, 20.000}, - {-25.000, 50.000, 20.000}, {-42.678, 42.678, 20.000}, {-25.000, 50.000, 20.000}, {-42.678, 42.678, 20.000}, - {-25.000, 50.000, 20.000}, {-42.678, 42.678, 20.000}, {-25.000, 50.000, -25.000}, {-42.678, 42.678, -25.000}, - {-50.000, 25.000, 25.000}, {-42.678, 42.678, 20.000}, {-42.678, 42.678, 25.000}, {-50.000, 25.000, 20.000}, - {-42.678, 42.678, 20.000}, {-50.000, 25.000, 20.000}, {-42.678, 42.678, 20.000}, {-50.000, 25.000, 20.000}, - {-42.678, 42.678, 20.000}, {-50.000, 25.000, 20.000}, {-42.678, 42.678, -25.000}, {-50.000, 25.000, -25.000}, - {-42.678, -25.000, 42.678}, {-25.000, -0.000, 50.000}, {-25.000, -25.000, 50.000}, {-42.678, -0.000, 42.678}, - {-25.000, -0.000, 50.000}, {-42.678, -0.000, 42.678}, {-25.000, 0.000, 50.000}, {-42.678, 0.000, 42.678}, - {-25.000, 0.000, 50.000}, {-42.678, 0.000, 42.678}, {-25.000, 25.000, 50.000}, {-42.678, 25.000, 42.678}, - {-42.678, -0.000, 42.678}, {-42.678, -25.000, 42.678}, {-50.000, -25.000, 25.000}, {-50.000, -0.000, 25.000}, - {-42.678, -0.000, 42.678}, {-50.000, -0.000, 25.000}, {-42.678, 0.000, 42.678}, {-50.000, 0.000, 25.000}, - {-42.678, 0.000, 42.678}, {-50.000, 0.000, 25.000}, {-42.678, 25.000, 42.678}, {-50.000, 25.000, 25.000}, - {-25.000, -50.000, 20.000}, {-25.000, -50.000, -25.000}, {-42.678, -42.678, -25.000}, {-42.678, -42.678, 20.000}, - {-25.000, -50.000, 20.000}, {-42.678, -42.678, 20.000}, {-25.000, -50.000, 20.000}, {-42.678, -42.678, 20.000}, - {-25.000, -50.000, 20.000}, {-42.678, -42.678, 20.000}, {-25.000, -50.000, 25.000}, {-42.678, -42.678, 25.000}, - {-42.678, -42.678, 20.000}, {-42.678, -42.678, -25.000}, {-50.000, -25.000, -25.000}, {-50.000, -25.000, 20.000}, - {-42.678, -42.678, 20.000}, {-50.000, -25.000, 20.000}, {-42.678, -42.678, 20.000}, {-50.000, -25.000, 20.000}, - {-42.678, -42.678, 20.000}, {-50.000, -25.000, 20.000}, {-42.678, -42.678, 25.000}, {-50.000, -25.000, 25.000}, - {-0.000, -25.000, -50.000}, {-25.000, -25.000, -50.000}, {-25.000, -42.678, -42.678}, {-0.000, -42.678, -42.678}, - {-0.000, -25.000, -50.000}, {-0.000, -42.678, -42.678}, {0.000, -25.000, -50.000}, {0.000, -42.678, -42.678}, - {0.000, -25.000, -50.000}, {0.000, -42.678, -42.678}, {25.000, -25.000, -50.000}, {25.000, -42.678, -42.678}, - {-25.000, -50.000, -25.000}, {-0.000, -42.678, -42.678}, {-25.000, -42.678, -42.678}, {-0.000, -50.000, -25.000}, - {-0.000, -42.678, -42.678}, {-0.000, -50.000, -25.000}, {0.000, -42.678, -42.678}, {0.000, -50.000, -25.000}, - {0.000, -42.678, -42.678}, {0.000, -50.000, -25.000}, {25.000, -42.678, -42.678}, {25.000, -50.000, -25.000}, - {25.000, -42.678, 42.678}, {0.000, -25.000, 50.000}, {25.000, -25.000, 50.000}, {0.000, -42.678, 42.678}, - {0.000, -25.000, 50.000}, {0.000, -42.678, 42.678}, {-0.000, -25.000, 50.000}, {-0.000, -42.678, 42.678}, - {-0.000, -25.000, 50.000}, {-0.000, -42.678, 42.678}, {-25.000, -25.000, 50.000}, {-25.000, -42.678, 42.678}, - {0.000, -42.678, 42.678}, {25.000, -42.678, 42.678}, {25.000, -50.000, 25.000}, {0.000, -50.000, 25.000}, - {0.000, -42.678, 42.678}, {0.000, -50.000, 25.000}, {-0.000, -42.678, 42.678}, {-0.000, -50.000, 25.000}, - {-0.000, -42.678, 42.678}, {-0.000, -50.000, 25.000}, {-25.000, -42.678, 42.678}, {-25.000, -50.000, 25.000}, - {50.000, -25.000, 20.000}, {50.000, -25.000, -25.000}, {42.678, -42.678, -25.000}, {42.678, -42.678, 20.000}, - {50.000, -25.000, 20.000}, {42.678, -42.678, 20.000}, {50.000, -25.000, 20.000}, {42.678, -42.678, 20.000}, - {50.000, -25.000, 20.000}, {42.678, -42.678, 20.000}, {50.000, -25.000, 25.000}, {42.678, -42.678, 25.000}, - {42.678, -42.678, 20.000}, {42.678, -42.678, -25.000}, {25.000, -50.000, -25.000}, {25.000, -50.000, 20.000}, - {42.678, -42.678, 20.000}, {25.000, -50.000, 20.000}, {42.678, -42.678, 20.000}, {25.000, -50.000, 20.000}, - {42.678, -42.678, 20.000}, {25.000, -50.000, 20.000}, {42.678, -42.678, 25.000}, {25.000, -50.000, 25.000}, - {25.000, -0.000, -50.000}, {25.000, -25.000, -50.000}, {42.678, -25.000, -42.678}, {42.678, -0.000, -42.678}, - {25.000, -0.000, -50.000}, {42.678, -0.000, -42.678}, {25.000, 0.000, -50.000}, {42.678, 0.000, -42.678}, - {25.000, 0.000, -50.000}, {42.678, 0.000, -42.678}, {25.000, 25.000, -50.000}, {42.678, 25.000, -42.678}, - {50.000, -25.000, -25.000}, {42.678, -0.000, -42.678}, {42.678, -25.000, -42.678}, {50.000, -0.000, -25.000}, - {42.678, -0.000, -42.678}, {50.000, -0.000, -25.000}, {42.678, 0.000, -42.678}, {50.000, 0.000, -25.000}, - {42.678, 0.000, -42.678}, {50.000, 0.000, -25.000}, {42.678, 25.000, -42.678}, {50.000, 25.000, -25.000}, - {25.000, 0.000, 50.000}, {25.000, 25.000, 50.000}, {42.678, 25.000, 42.678}, {42.678, 0.000, 42.678}, - {25.000, 0.000, 50.000}, {42.678, 0.000, 42.678}, {25.000, -0.000, 50.000}, {42.678, -0.000, 42.678}, - {25.000, -0.000, 50.000}, {42.678, -0.000, 42.678}, {25.000, -25.000, 50.000}, {42.678, -25.000, 42.678}, - {42.678, 0.000, 42.678}, {42.678, 25.000, 42.678}, {50.000, 25.000, 25.000}, {50.000, 0.000, 25.000}, - {42.678, 0.000, 42.678}, {50.000, 0.000, 25.000}, {42.678, -0.000, 42.678}, {50.000, -0.000, 25.000}, - {42.678, -0.000, 42.678}, {50.000, -0.000, 25.000}, {42.678, -25.000, 42.678}, {50.000, -25.000, 25.000}, - {25.000, 50.000, 20.000}, {25.000, 50.000, -25.000}, {42.678, 42.678, -25.000}, {42.678, 42.678, 20.000}, - {25.000, 50.000, 20.000}, {42.678, 42.678, 20.000}, {25.000, 50.000, 20.000}, {42.678, 42.678, 20.000}, - {25.000, 50.000, 20.000}, {42.678, 42.678, 20.000}, {25.000, 50.000, 25.000}, {42.678, 42.678, 25.000}, - {42.678, 42.678, 20.000}, {42.678, 42.678, -25.000}, {50.000, 25.000, -25.000}, {50.000, 25.000, 20.000}, - {42.678, 42.678, 20.000}, {50.000, 25.000, 20.000}, {42.678, 42.678, 20.000}, {50.000, 25.000, 20.000}, - {42.678, 42.678, 20.000}, {50.000, 25.000, 20.000}, {42.678, 42.678, 25.000}, {50.000, 25.000, 25.000}, - {25.000, 42.678, -42.678}, {0.000, 25.000, -50.000}, {25.000, 25.000, -50.000}, {0.000, 42.678, -42.678}, - {0.000, 25.000, -50.000}, {0.000, 42.678, -42.678}, {-0.000, 25.000, -50.000}, {-0.000, 42.678, -42.678}, - {-0.000, 25.000, -50.000}, {-0.000, 42.678, -42.678}, {-25.000, 25.000, -50.000}, {-25.000, 42.678, -42.678}, - {25.000, 50.000, -25.000}, {0.000, 42.678, -42.678}, {25.000, 42.678, -42.678}, {0.000, 50.000, -25.000}, - {0.000, 42.678, -42.678}, {0.000, 50.000, -25.000}, {-0.000, 42.678, -42.678}, {-0.000, 50.000, -25.000}, - {-0.000, 42.678, -42.678}, {-0.000, 50.000, -25.000}, {-25.000, 42.678, -42.678}, {-25.000, 50.000, -25.000}, - {-0.000, 25.000, 50.000}, {-25.000, 25.000, 50.000}, {-25.000, 42.678, 42.678}, {-0.000, 42.678, 42.678}, - {-0.000, 25.000, 50.000}, {-0.000, 42.678, 42.678}, {0.000, 25.000, 50.000}, {0.000, 42.678, 42.678}, - {0.000, 25.000, 50.000}, {0.000, 42.678, 42.678}, {25.000, 25.000, 50.000}, {25.000, 42.678, 42.678}, - {-0.000, 42.678, 42.678}, {-25.000, 42.678, 42.678}, {-25.000, 50.000, 25.000}, {-0.000, 50.000, 25.000}, - {-0.000, 42.678, 42.678}, {-0.000, 50.000, 25.000}, {0.000, 42.678, 42.678}, {0.000, 50.000, 25.000}, - {0.000, 42.678, 42.678}, {0.000, 50.000, 25.000}, {25.000, 42.678, 42.678}, {25.000, 50.000, 25.000}, - {50.000, 0.000, -25.000}, {50.000, 25.000, 20.000}, {50.000, 25.000, -25.000}, {50.000, 0.000, 20.000}, - {50.000, 25.000, 20.000}, {50.000, 0.000, -25.000}, {50.000, 0.000, 20.000}, {50.000, 25.000, 20.000}, - {50.000, 0.000, 20.000}, {50.000, -0.000, -25.000}, {50.000, 0.000, 20.000}, {50.000, 25.000, 20.000}, - {50.000, 0.000, 20.000}, {50.000, -0.000, 20.000}, {50.000, -0.000, -25.000}, {50.000, 0.000, 20.000}, - {50.000, 25.000, 25.000}, {50.000, 0.000, 25.000}, {50.000, -0.000, 20.000}, {50.000, -25.000, -25.000}, - {50.000, -25.000, 20.000}, {50.000, -0.000, 20.000}, {50.000, -0.000, 20.000}, {50.000, -25.000, 20.000}, - {50.000, 0.000, 20.000}, {50.000, -0.000, 20.000}, {50.000, -0.000, 20.000}, {50.000, -25.000, 20.000}, - {50.000, 0.000, 20.000}, {50.000, 0.000, 25.000}, {50.000, -0.000, 20.000}, {50.000, -0.000, 25.000}, - {50.000, -0.000, 20.000}, {50.000, -0.000, 25.000}, {50.000, -25.000, 20.000}, {50.000, -25.000, 25.000}, - {0.000, -50.000, -25.000}, {25.000, -50.000, 20.000}, {25.000, -50.000, -25.000}, {0.000, -50.000, 20.000}, - {25.000, -50.000, 20.000}, {0.000, -50.000, -25.000}, {0.000, -50.000, 20.000}, {25.000, -50.000, 20.000}, - {0.000, -50.000, 20.000}, {-0.000, -50.000, -25.000}, {0.000, -50.000, 20.000}, {25.000, -50.000, 20.000}, - {0.000, -50.000, 20.000}, {-0.000, -50.000, 20.000}, {-0.000, -50.000, -25.000}, {0.000, -50.000, 20.000}, - {25.000, -50.000, 25.000}, {0.000, -50.000, 25.000}, {-0.000, -50.000, 20.000}, {-25.000, -50.000, -25.000}, - {-25.000, -50.000, 20.000}, {-0.000, -50.000, 20.000}, {-0.000, -50.000, 20.000}, {-25.000, -50.000, 20.000}, - {0.000, -50.000, 20.000}, {-0.000, -50.000, 20.000}, {-0.000, -50.000, 20.000}, {-25.000, -50.000, 20.000}, - {0.000, -50.000, 20.000}, {0.000, -50.000, 25.000}, {-0.000, -50.000, 20.000}, {-0.000, -50.000, 25.000}, - {-0.000, -50.000, 20.000}, {-0.000, -50.000, 25.000}, {-25.000, -50.000, 20.000}, {-25.000, -50.000, 25.000}, - {25.000, 0.000, 50.000}, {0.000, 25.000, 50.000}, {25.000, 25.000, 50.000}, {0.000, 0.000, 50.000}, - {0.000, 25.000, 50.000}, {25.000, 0.000, 50.000}, {0.000, 0.000, 50.000}, {-0.000, 25.000, 50.000}, - {0.000, 0.000, 50.000}, {25.000, -0.000, 50.000}, {-0.000, 0.000, 50.000}, {-0.000, 25.000, 50.000}, - {0.000, 0.000, 50.000}, {0.000, -0.000, 50.000}, {25.000, -0.000, 50.000}, {-0.000, 0.000, 50.000}, - {-25.000, 25.000, 50.000}, {-25.000, 0.000, 50.000}, {0.000, -0.000, 50.000}, {25.000, -25.000, 50.000}, - {0.000, -25.000, 50.000}, {-0.000, 0.000, 50.000}, {-25.000, 0.000, 50.000}, {-0.000, 0.000, 50.000}, - {-0.000, -0.000, 50.000}, {-25.000, -0.000, 50.000}, {-0.000, -0.000, 50.000}, {0.000, -0.000, 50.000}, - {0.000, -0.000, 50.000}, {0.000, -25.000, 50.000}, {-0.000, -0.000, 50.000}, {-0.000, -25.000, 50.000}, - {-0.000, -0.000, 50.000}, {-0.000, -25.000, 50.000}, {-25.000, -0.000, 50.000}, {-25.000, -25.000, 50.000}, - {-50.000, -0.000, -25.000}, {-50.000, -25.000, 20.000}, {-50.000, -25.000, -25.000}, {-50.000, -0.000, 20.000}, - {-50.000, -25.000, 20.000}, {-50.000, -0.000, -25.000}, {-50.000, -0.000, 20.000}, {-50.000, -25.000, 20.000}, - {-50.000, -0.000, 20.000}, {-50.000, 0.000, -25.000}, {-50.000, -0.000, 20.000}, {-50.000, -25.000, 20.000}, - {-50.000, -0.000, 20.000}, {-50.000, 0.000, 20.000}, {-50.000, 0.000, -25.000}, {-50.000, -0.000, 20.000}, - {-50.000, -25.000, 25.000}, {-50.000, -0.000, 25.000}, {-50.000, 0.000, 20.000}, {-50.000, 25.000, -25.000}, - {-50.000, 25.000, 20.000}, {-50.000, 0.000, 20.000}, {-50.000, 0.000, 20.000}, {-50.000, 25.000, 20.000}, - {-50.000, -0.000, 20.000}, {-50.000, 0.000, 20.000}, {-50.000, 0.000, 20.000}, {-50.000, 25.000, 20.000}, - {-50.000, -0.000, 20.000}, {-50.000, -0.000, 25.000}, {-50.000, 0.000, 20.000}, {-50.000, 0.000, 25.000}, - {-50.000, 0.000, 20.000}, {-50.000, 0.000, 25.000}, {-50.000, 25.000, 20.000}, {-50.000, 25.000, 25.000}, - {0.000, 50.000, 25.000}, {25.000, 50.000, 20.000}, {25.000, 50.000, 25.000}, {0.000, 50.000, 20.000}, - {25.000, 50.000, 20.000}, {0.000, 50.000, 25.000}, {0.000, 50.000, 20.000}, {25.000, 50.000, 20.000}, - {0.000, 50.000, 20.000}, {-0.000, 50.000, 25.000}, {0.000, 50.000, 20.000}, {25.000, 50.000, 20.000}, - {0.000, 50.000, 20.000}, {-0.000, 50.000, 20.000}, {-0.000, 50.000, 25.000}, {0.000, 50.000, 20.000}, - {25.000, 50.000, -25.000}, {0.000, 50.000, -25.000}, {-0.000, 50.000, 20.000}, {-25.000, 50.000, 25.000}, - {-25.000, 50.000, 20.000}, {-0.000, 50.000, 20.000}, {-0.000, 50.000, 20.000}, {-25.000, 50.000, 20.000}, - {0.000, 50.000, 20.000}, {-0.000, 50.000, 20.000}, {-0.000, 50.000, 20.000}, {-25.000, 50.000, 20.000}, - {0.000, 50.000, 20.000}, {0.000, 50.000, -25.000}, {-0.000, 50.000, 20.000}, {-0.000, 50.000, -25.000}, - {-0.000, 50.000, 20.000}, {-0.000, 50.000, -25.000}, {-25.000, 50.000, 20.000}, {-25.000, 50.000, -25.000}, - {-0.000, 25.000, -50.000}, {-25.000, 25.000, -50.000}, {-25.000, 0.000, -50.000}, {-0.000, 0.000, -50.000}, - {-0.000, 25.000, -50.000}, {-25.000, 0.000, -50.000}, {-0.000, 0.000, -50.000}, {0.000, 25.000, -50.000}, - {-0.000, 0.000, -50.000}, {-25.000, -0.000, -50.000}, {0.000, 0.000, -50.000}, {0.000, 25.000, -50.000}, - {-0.000, 0.000, -50.000}, {-0.000, -0.000, -50.000}, {-25.000, -0.000, -50.000}, {0.000, 0.000, -50.000}, - {25.000, 25.000, -50.000}, {25.000, 0.000, -50.000}, {0.000, 0.000, -50.000}, {0.000, 0.000, -50.000}, - {25.000, 0.000, -50.000}, {-0.000, -0.000, -50.000}, {0.000, -0.000, -50.000}, {0.000, -0.000, -50.000}, - {25.000, -0.000, -50.000}, {-0.000, -0.000, -50.000}, {-25.000, -25.000, -50.000}, {-0.000, -25.000, -50.000}, - {-0.000, -0.000, -50.000}, {-0.000, -25.000, -50.000}, {0.000, -0.000, -50.000}, {0.000, -25.000, -50.000}, - {0.000, -0.000, -50.000}, {0.000, -25.000, -50.000}, {25.000, -0.000, -50.000}, {25.000, -25.000, -50.000}, -}; - -inline TArray ExpectedPositionsPivotOutside = { - {-49.268, 49.268, -30.625}, {-50.000, 47.500, -30.625}, {-48.943, 48.943, -33.873}, {-49.268, 47.500, -34.602}, - {-48.943, 48.943, -33.873}, {-47.500, 47.500, -36.250}, {-47.500, 49.268, -34.602}, {-49.268, 47.500, -34.602}, - {-48.943, 48.943, -33.873}, {-47.500, 50.000, -30.625}, {-49.268, 49.268, -30.625}, {-47.500, 49.268, -34.602}, - {-48.943, 48.943, 48.943}, {-49.268, 47.500, 49.268}, {-50.000, 47.500, 47.500}, {-49.268, 49.268, 47.500}, - {-48.943, 48.943, 48.943}, {-47.500, 50.000, 47.500}, {-47.500, 49.268, 49.268}, {-49.268, 49.268, 47.500}, - {-49.268, 47.500, 49.268}, {-48.943, 48.943, 48.943}, {-47.500, 47.500, 50.000}, {-47.500, 49.268, 49.268}, - {-48.943, -48.943, -33.873}, {-50.000, -47.500, -30.625}, {-49.268, -49.268, -30.625}, {-49.268, -47.500, -34.602}, - {-49.268, -49.268, -30.625}, {-47.500, -50.000, -30.625}, {-48.943, -48.943, -33.873}, {-47.500, -49.268, -34.602}, - {-49.268, -47.500, -34.602}, {-48.943, -48.943, -33.873}, {-47.500, -47.500, -36.250}, {-47.500, -49.268, -34.602}, - {-48.943, -48.943, 48.943}, {-50.000, -47.500, 47.500}, {-49.268, -47.500, 49.268}, {-49.268, -49.268, 47.500}, - {-48.943, -48.943, 48.943}, {-47.500, -47.500, 50.000}, {-47.500, -49.268, 49.268}, {-49.268, -47.500, 49.268}, - {-48.943, -48.943, 48.943}, {-47.500, -49.268, 49.268}, {-47.500, -50.000, 47.500}, {-49.268, -49.268, 47.500}, - {48.943, 48.943, -33.873}, {50.000, 47.500, -30.625}, {49.268, 49.268, -30.625}, {49.268, 47.500, -34.602}, - {49.268, 49.268, -30.625}, {47.500, 50.000, -30.625}, {48.943, 48.943, -33.873}, {47.500, 49.268, -34.602}, - {48.943, 48.943, -33.873}, {47.500, 49.268, -34.602}, {47.500, 47.500, -36.250}, {49.268, 47.500, -34.602}, - {48.943, 48.943, 48.943}, {50.000, 47.500, 47.500}, {49.268, 47.500, 49.268}, {49.268, 49.268, 47.500}, - {49.268, 47.500, 49.268}, {47.500, 47.500, 50.000}, {48.943, 48.943, 48.943}, {47.500, 49.268, 49.268}, - {48.943, 48.943, 48.943}, {47.500, 49.268, 49.268}, {47.500, 50.000, 47.500}, {49.268, 49.268, 47.500}, - {48.943, -48.943, -33.873}, {47.500, -50.000, -30.625}, {49.268, -49.268, -30.625}, {47.500, -49.268, -34.602}, - {49.268, -49.268, -30.625}, {50.000, -47.500, -30.625}, {48.943, -48.943, -33.873}, {49.268, -47.500, -34.602}, - {49.268, -47.500, -34.602}, {47.500, -47.500, -36.250}, {48.943, -48.943, -33.873}, {47.500, -49.268, -34.602}, - {48.943, -48.943, 48.943}, {47.500, -50.000, 47.500}, {47.500, -49.268, 49.268}, {49.268, -49.268, 47.500}, - {48.943, -48.943, 48.943}, {47.500, -49.268, 49.268}, {47.500, -47.500, 50.000}, {49.268, -47.500, 49.268}, - {48.943, -48.943, 48.943}, {49.268, -47.500, 49.268}, {50.000, -47.500, 47.500}, {49.268, -49.268, 47.500}, - {-49.268, 47.500, -34.602}, {-47.500, 33.750, -36.250}, {-47.500, 47.500, -36.250}, {-49.268, 33.750, -34.602}, - {-47.500, 11.250, -36.250}, {-49.268, 11.250, -34.602}, {-47.500, -11.250, -36.250}, {-49.268, -11.250, -34.602}, - {-47.500, -33.750, -36.250}, {-49.268, -33.750, -34.602}, {-47.500, -47.500, -36.250}, {-49.268, -47.500, -34.602}, - {-50.000, 47.500, -30.625}, {-49.268, 33.750, -34.602}, {-49.268, 47.500, -34.602}, {-50.000, 33.750, -30.625}, - {-49.268, 11.250, -34.602}, {-50.000, 11.250, -30.625}, {-49.268, -11.250, -34.602}, {-50.000, -11.250, -30.625}, - {-49.268, -33.750, -34.602}, {-50.000, -33.750, -30.625}, {-49.268, -47.500, -34.602}, {-50.000, -47.500, -30.625}, - {-49.268, 49.268, 47.500}, {-47.500, 50.000, 40.000}, {-47.500, 50.000, 47.500}, {-49.268, 49.268, 40.000}, - {-47.500, 50.000, 30.000}, {-49.268, 49.268, 30.000}, {-47.500, 50.000, 8.750}, {-49.268, 49.268, 8.750}, - {-47.500, 50.000, -13.750}, {-49.268, 49.268, -13.750}, {-47.500, 50.000, -30.625}, {-49.268, 49.268, -30.625}, - {-50.000, 47.500, 47.500}, {-49.268, 49.268, 40.000}, {-49.268, 49.268, 47.500}, {-50.000, 47.500, 40.000}, - {-49.268, 49.268, 30.000}, {-50.000, 47.500, 30.000}, {-49.268, 49.268, 8.750}, {-50.000, 47.500, 8.750}, - {-49.268, 49.268, -13.750}, {-50.000, 47.500, -13.750}, {-49.268, 49.268, -30.625}, {-50.000, 47.500, -30.625}, - {-49.268, -47.500, 49.268}, {-47.500, -33.750, 50.000}, {-47.500, -47.500, 50.000}, {-49.268, -33.750, 49.268}, - {-47.500, -11.250, 50.000}, {-49.268, -11.250, 49.268}, {-47.500, 11.250, 50.000}, {-49.268, 11.250, 49.268}, - {-47.500, 33.750, 50.000}, {-49.268, 33.750, 49.268}, {-47.500, 47.500, 50.000}, {-49.268, 47.500, 49.268}, - {-49.268, -33.750, 49.268}, {-49.268, -47.500, 49.268}, {-50.000, -47.500, 47.500}, {-50.000, -33.750, 47.500}, - {-49.268, -11.250, 49.268}, {-50.000, -11.250, 47.500}, {-49.268, 11.250, 49.268}, {-50.000, 11.250, 47.500}, - {-49.268, 33.750, 49.268}, {-50.000, 33.750, 47.500}, {-49.268, 47.500, 49.268}, {-50.000, 47.500, 47.500}, - {-47.500, -50.000, -13.750}, {-47.500, -50.000, -30.625}, {-49.268, -49.268, -30.625}, {-49.268, -49.268, -13.750}, - {-47.500, -50.000, 8.750}, {-49.268, -49.268, 8.750}, {-47.500, -50.000, 30.000}, {-49.268, -49.268, 30.000}, - {-47.500, -50.000, 40.000}, {-49.268, -49.268, 40.000}, {-47.500, -50.000, 47.500}, {-49.268, -49.268, 47.500}, - {-49.268, -49.268, -13.750}, {-49.268, -49.268, -30.625}, {-50.000, -47.500, -30.625}, {-50.000, -47.500, -13.750}, - {-49.268, -49.268, 8.750}, {-50.000, -47.500, 8.750}, {-49.268, -49.268, 30.000}, {-50.000, -47.500, 30.000}, - {-49.268, -49.268, 40.000}, {-50.000, -47.500, 40.000}, {-49.268, -49.268, 47.500}, {-50.000, -47.500, 47.500}, - {-33.750, -47.500, -36.250}, {-47.500, -47.500, -36.250}, {-47.500, -49.268, -34.602}, {-33.750, -49.268, -34.602}, - {-11.250, -47.500, -36.250}, {-11.250, -49.268, -34.602}, {11.250, -47.500, -36.250}, {11.250, -49.268, -34.602}, - {33.750, -47.500, -36.250}, {33.750, -49.268, -34.602}, {47.500, -47.500, -36.250}, {47.500, -49.268, -34.602}, - {-47.500, -50.000, -30.625}, {-33.750, -49.268, -34.602}, {-47.500, -49.268, -34.602}, {-33.750, -50.000, -30.625}, - {-11.250, -49.268, -34.602}, {-11.250, -50.000, -30.625}, {11.250, -49.268, -34.602}, {11.250, -50.000, -30.625}, - {33.750, -49.268, -34.602}, {33.750, -50.000, -30.625}, {47.500, -49.268, -34.602}, {47.500, -50.000, -30.625}, - {47.500, -49.268, 49.268}, {33.750, -47.500, 50.000}, {47.500, -47.500, 50.000}, {33.750, -49.268, 49.268}, - {11.250, -47.500, 50.000}, {11.250, -49.268, 49.268}, {-11.250, -47.500, 50.000}, {-11.250, -49.268, 49.268}, - {-33.750, -47.500, 50.000}, {-33.750, -49.268, 49.268}, {-47.500, -47.500, 50.000}, {-47.500, -49.268, 49.268}, - {33.750, -49.268, 49.268}, {47.500, -49.268, 49.268}, {47.500, -50.000, 47.500}, {33.750, -50.000, 47.500}, - {11.250, -49.268, 49.268}, {11.250, -50.000, 47.500}, {-11.250, -49.268, 49.268}, {-11.250, -50.000, 47.500}, - {-33.750, -49.268, 49.268}, {-33.750, -50.000, 47.500}, {-47.500, -49.268, 49.268}, {-47.500, -50.000, 47.500}, - {50.000, -47.500, -13.750}, {50.000, -47.500, -30.625}, {49.268, -49.268, -30.625}, {49.268, -49.268, -13.750}, - {50.000, -47.500, 8.750}, {49.268, -49.268, 8.750}, {50.000, -47.500, 30.000}, {49.268, -49.268, 30.000}, - {50.000, -47.500, 40.000}, {49.268, -49.268, 40.000}, {50.000, -47.500, 47.500}, {49.268, -49.268, 47.500}, - {49.268, -49.268, -13.750}, {49.268, -49.268, -30.625}, {47.500, -50.000, -30.625}, {47.500, -50.000, -13.750}, - {49.268, -49.268, 8.750}, {47.500, -50.000, 8.750}, {49.268, -49.268, 30.000}, {47.500, -50.000, 30.000}, - {49.268, -49.268, 40.000}, {47.500, -50.000, 40.000}, {49.268, -49.268, 47.500}, {47.500, -50.000, 47.500}, - {47.500, -33.750, -36.250}, {47.500, -47.500, -36.250}, {49.268, -47.500, -34.602}, {49.268, -33.750, -34.602}, - {47.500, -11.250, -36.250}, {49.268, -11.250, -34.602}, {47.500, 11.250, -36.250}, {49.268, 11.250, -34.602}, - {47.500, 33.750, -36.250}, {49.268, 33.750, -34.602}, {47.500, 47.500, -36.250}, {49.268, 47.500, -34.602}, - {50.000, -47.500, -30.625}, {49.268, -33.750, -34.602}, {49.268, -47.500, -34.602}, {50.000, -33.750, -30.625}, - {49.268, -11.250, -34.602}, {50.000, -11.250, -30.625}, {49.268, 11.250, -34.602}, {50.000, 11.250, -30.625}, - {49.268, 33.750, -34.602}, {50.000, 33.750, -30.625}, {49.268, 47.500, -34.602}, {50.000, 47.500, -30.625}, - {47.500, 33.750, 50.000}, {47.500, 47.500, 50.000}, {49.268, 47.500, 49.268}, {49.268, 33.750, 49.268}, - {47.500, 11.250, 50.000}, {49.268, 11.250, 49.268}, {47.500, -11.250, 50.000}, {49.268, -11.250, 49.268}, - {47.500, -33.750, 50.000}, {49.268, -33.750, 49.268}, {47.500, -47.500, 50.000}, {49.268, -47.500, 49.268}, - {49.268, 33.750, 49.268}, {49.268, 47.500, 49.268}, {50.000, 47.500, 47.500}, {50.000, 33.750, 47.500}, - {49.268, 11.250, 49.268}, {50.000, 11.250, 47.500}, {49.268, -11.250, 49.268}, {50.000, -11.250, 47.500}, - {49.268, -33.750, 49.268}, {50.000, -33.750, 47.500}, {49.268, -47.500, 49.268}, {50.000, -47.500, 47.500}, - {47.500, 50.000, -13.750}, {47.500, 50.000, -30.625}, {49.268, 49.268, -30.625}, {49.268, 49.268, -13.750}, - {47.500, 50.000, 8.750}, {49.268, 49.268, 8.750}, {47.500, 50.000, 30.000}, {49.268, 49.268, 30.000}, - {47.500, 50.000, 40.000}, {49.268, 49.268, 40.000}, {47.500, 50.000, 47.500}, {49.268, 49.268, 47.500}, - {49.268, 49.268, -13.750}, {49.268, 49.268, -30.625}, {50.000, 47.500, -30.625}, {50.000, 47.500, -13.750}, - {49.268, 49.268, 8.750}, {50.000, 47.500, 8.750}, {49.268, 49.268, 30.000}, {50.000, 47.500, 30.000}, - {49.268, 49.268, 40.000}, {50.000, 47.500, 40.000}, {49.268, 49.268, 47.500}, {50.000, 47.500, 47.500}, - {47.500, 49.268, -34.602}, {33.750, 47.500, -36.250}, {47.500, 47.500, -36.250}, {33.750, 49.268, -34.602}, - {11.250, 47.500, -36.250}, {11.250, 49.268, -34.602}, {-11.250, 47.500, -36.250}, {-11.250, 49.268, -34.602}, - {-33.750, 47.500, -36.250}, {-33.750, 49.268, -34.602}, {-47.500, 47.500, -36.250}, {-47.500, 49.268, -34.602}, - {47.500, 50.000, -30.625}, {33.750, 49.268, -34.602}, {47.500, 49.268, -34.602}, {33.750, 50.000, -30.625}, - {11.250, 49.268, -34.602}, {11.250, 50.000, -30.625}, {-11.250, 49.268, -34.602}, {-11.250, 50.000, -30.625}, - {-33.750, 49.268, -34.602}, {-33.750, 50.000, -30.625}, {-47.500, 49.268, -34.602}, {-47.500, 50.000, -30.625}, - {-33.750, 47.500, 50.000}, {-47.500, 47.500, 50.000}, {-47.500, 49.268, 49.268}, {-33.750, 49.268, 49.268}, - {-11.250, 47.500, 50.000}, {-11.250, 49.268, 49.268}, {11.250, 47.500, 50.000}, {11.250, 49.268, 49.268}, - {33.750, 47.500, 50.000}, {33.750, 49.268, 49.268}, {47.500, 47.500, 50.000}, {47.500, 49.268, 49.268}, - {-33.750, 49.268, 49.268}, {-47.500, 49.268, 49.268}, {-47.500, 50.000, 47.500}, {-33.750, 50.000, 47.500}, - {-11.250, 49.268, 49.268}, {-11.250, 50.000, 47.500}, {11.250, 49.268, 49.268}, {11.250, 50.000, 47.500}, - {33.750, 49.268, 49.268}, {33.750, 50.000, 47.500}, {47.500, 49.268, 49.268}, {47.500, 50.000, 47.500}, - {50.000, 33.750, -30.625}, {50.000, 47.500, -13.750}, {50.000, 47.500, -30.625}, {50.000, 33.750, -13.750}, - {50.000, 47.500, 8.750}, {50.000, 11.250, -30.625}, {50.000, 33.750, 8.750}, {50.000, 47.500, 30.000}, - {50.000, 11.250, -13.750}, {50.000, -11.250, -30.625}, {50.000, 33.750, 30.000}, {50.000, 47.500, 40.000}, - {50.000, 11.250, 8.750}, {50.000, -11.250, -13.750}, {50.000, -33.750, -30.625}, {50.000, 33.750, 40.000}, - {50.000, 47.500, 47.500}, {50.000, 33.750, 47.500}, {50.000, -33.750, -13.750}, {50.000, -47.500, -30.625}, - {50.000, -47.500, -13.750}, {50.000, -11.250, 8.750}, {50.000, -33.750, 8.750}, {50.000, -47.500, 8.750}, - {50.000, 11.250, 30.000}, {50.000, -11.250, 30.000}, {50.000, -33.750, 30.000}, {50.000, -47.500, 30.000}, - {50.000, 11.250, 40.000}, {50.000, 11.250, 47.500}, {50.000, -11.250, 40.000}, {50.000, -11.250, 47.500}, - {50.000, -33.750, 40.000}, {50.000, -33.750, 47.500}, {50.000, -47.500, 40.000}, {50.000, -47.500, 47.500}, - {33.750, -50.000, -30.625}, {47.500, -50.000, -13.750}, {47.500, -50.000, -30.625}, {33.750, -50.000, -13.750}, - {47.500, -50.000, 8.750}, {11.250, -50.000, -30.625}, {33.750, -50.000, 8.750}, {47.500, -50.000, 30.000}, - {11.250, -50.000, -13.750}, {-11.250, -50.000, -30.625}, {33.750, -50.000, 30.000}, {47.500, -50.000, 40.000}, - {11.250, -50.000, 8.750}, {-11.250, -50.000, -13.750}, {-33.750, -50.000, -30.625}, {33.750, -50.000, 40.000}, - {47.500, -50.000, 47.500}, {33.750, -50.000, 47.500}, {-33.750, -50.000, -13.750}, {-47.500, -50.000, -30.625}, - {-47.500, -50.000, -13.750}, {-11.250, -50.000, 8.750}, {-33.750, -50.000, 8.750}, {-47.500, -50.000, 8.750}, - {11.250, -50.000, 30.000}, {-11.250, -50.000, 30.000}, {-33.750, -50.000, 30.000}, {-47.500, -50.000, 30.000}, - {11.250, -50.000, 40.000}, {11.250, -50.000, 47.500}, {-11.250, -50.000, 40.000}, {-11.250, -50.000, 47.500}, - {-33.750, -50.000, 40.000}, {-33.750, -50.000, 47.500}, {-47.500, -50.000, 40.000}, {-47.500, -50.000, 47.500}, - {47.500, 33.750, 50.000}, {33.750, 47.500, 50.000}, {47.500, 47.500, 50.000}, {33.750, 33.750, 50.000}, - {11.250, 47.500, 50.000}, {47.500, 11.250, 50.000}, {11.250, 33.750, 50.000}, {-11.250, 47.500, 50.000}, - {33.750, 11.250, 50.000}, {47.500, -11.250, 50.000}, {-11.250, 33.750, 50.000}, {-33.750, 47.500, 50.000}, - {11.250, 11.250, 50.000}, {33.750, -11.250, 50.000}, {47.500, -33.750, 50.000}, {-33.750, 33.750, 50.000}, - {-47.500, 47.500, 50.000}, {-47.500, 33.750, 50.000}, {33.750, -33.750, 50.000}, {47.500, -47.500, 50.000}, - {33.750, -47.500, 50.000}, {-33.750, 11.250, 50.000}, {-47.500, 11.250, 50.000}, {-11.250, 11.250, 50.000}, - {-33.750, -11.250, 50.000}, {-47.500, -11.250, 50.000}, {-11.250, -11.250, 50.000}, {11.250, -11.250, 50.000}, - {11.250, -33.750, 50.000}, {11.250, -47.500, 50.000}, {-11.250, -33.750, 50.000}, {-11.250, -47.500, 50.000}, - {-33.750, -33.750, 50.000}, {-33.750, -47.500, 50.000}, {-47.500, -33.750, 50.000}, {-47.500, -47.500, 50.000}, - {-50.000, -33.750, -30.625}, {-50.000, -47.500, -13.750}, {-50.000, -47.500, -30.625}, {-50.000, -33.750, -13.750}, - {-50.000, -47.500, 8.750}, {-50.000, -11.250, -30.625}, {-50.000, -33.750, 8.750}, {-50.000, -47.500, 30.000}, - {-50.000, -11.250, -13.750}, {-50.000, 11.250, -30.625}, {-50.000, -33.750, 30.000}, {-50.000, -47.500, 40.000}, - {-50.000, -11.250, 8.750}, {-50.000, 11.250, -13.750}, {-50.000, 33.750, -30.625}, {-50.000, -33.750, 40.000}, - {-50.000, -47.500, 47.500}, {-50.000, -33.750, 47.500}, {-50.000, 33.750, -13.750}, {-50.000, 47.500, -30.625}, - {-50.000, 47.500, -13.750}, {-50.000, 11.250, 8.750}, {-50.000, 33.750, 8.750}, {-50.000, 47.500, 8.750}, - {-50.000, -11.250, 30.000}, {-50.000, 11.250, 30.000}, {-50.000, 33.750, 30.000}, {-50.000, 47.500, 30.000}, - {-50.000, -11.250, 40.000}, {-50.000, -11.250, 47.500}, {-50.000, 11.250, 40.000}, {-50.000, 11.250, 47.500}, - {-50.000, 33.750, 40.000}, {-50.000, 33.750, 47.500}, {-50.000, 47.500, 40.000}, {-50.000, 47.500, 47.500}, - {33.750, 50.000, 47.500}, {47.500, 50.000, 40.000}, {47.500, 50.000, 47.500}, {33.750, 50.000, 40.000}, - {47.500, 50.000, 30.000}, {11.250, 50.000, 47.500}, {33.750, 50.000, 30.000}, {47.500, 50.000, 8.750}, - {11.250, 50.000, 40.000}, {-11.250, 50.000, 47.500}, {33.750, 50.000, 8.750}, {47.500, 50.000, -13.750}, - {11.250, 50.000, 30.000}, {-11.250, 50.000, 40.000}, {-33.750, 50.000, 47.500}, {33.750, 50.000, -13.750}, - {47.500, 50.000, -30.625}, {33.750, 50.000, -30.625}, {-33.750, 50.000, 40.000}, {-47.500, 50.000, 47.500}, - {-47.500, 50.000, 40.000}, {-11.250, 50.000, 30.000}, {-33.750, 50.000, 30.000}, {-47.500, 50.000, 30.000}, - {11.250, 50.000, 8.750}, {-11.250, 50.000, 8.750}, {-33.750, 50.000, 8.750}, {-47.500, 50.000, 8.750}, - {11.250, 50.000, -13.750}, {11.250, 50.000, -30.625}, {-11.250, 50.000, -13.750}, {-11.250, 50.000, -30.625}, - {-33.750, 50.000, -13.750}, {-33.750, 50.000, -30.625}, {-47.500, 50.000, -13.750}, {-47.500, 50.000, -30.625}, - {-33.750, 47.500, -36.250}, {-47.500, 47.500, -36.250}, {-47.500, 33.750, -36.250}, {-33.750, 33.750, -36.250}, - {-11.250, 47.500, -36.250}, {-47.500, 11.250, -36.250}, {-11.250, 33.750, -36.250}, {11.250, 47.500, -36.250}, - {-33.750, 11.250, -36.250}, {-47.500, -11.250, -36.250}, {11.250, 33.750, -36.250}, {33.750, 47.500, -36.250}, - {-11.250, 11.250, -36.250}, {-33.750, -11.250, -36.250}, {-47.500, -33.750, -36.250}, {33.750, 33.750, -36.250}, - {47.500, 47.500, -36.250}, {47.500, 33.750, -36.250}, {11.250, 11.250, -36.250}, {33.750, 11.250, -36.250}, - {47.500, 11.250, -36.250}, {-11.250, -11.250, -36.250}, {11.250, -11.250, -36.250}, {33.750, -11.250, -36.250}, - {47.500, -11.250, -36.250}, {-33.750, -33.750, -36.250}, {-47.500, -47.500, -36.250}, {-33.750, -47.500, -36.250}, - {-11.250, -33.750, -36.250}, {-11.250, -47.500, -36.250}, {11.250, -33.750, -36.250}, {11.250, -47.500, -36.250}, - {33.750, -33.750, -36.250}, {33.750, -47.500, -36.250}, {47.500, -33.750, -36.250}, {47.500, -47.500, -36.250}, -}; - -inline TArray ExpectedPositionsCenterNotScaled = { - {-49.268, 49.268, -47.500}, {-50.000, 47.500, -47.500}, {-48.943, 48.943, -48.943}, {-49.268, 47.500, -49.268}, - {-48.943, 48.943, -48.943}, {-47.500, 47.500, -50.000}, {-47.500, 49.268, -49.268}, {-49.268, 47.500, -49.268}, - {-48.943, 48.943, -48.943}, {-47.500, 50.000, -47.500}, {-49.268, 49.268, -47.500}, {-47.500, 49.268, -49.268}, - {-48.943, 48.943, 48.943}, {-49.268, 47.500, 49.268}, {-50.000, 47.500, 47.500}, {-49.268, 49.268, 47.500}, - {-48.943, 48.943, 48.943}, {-47.500, 50.000, 47.500}, {-47.500, 49.268, 49.268}, {-49.268, 49.268, 47.500}, - {-49.268, 47.500, 49.268}, {-48.943, 48.943, 48.943}, {-47.500, 47.500, 50.000}, {-47.500, 49.268, 49.268}, - {-48.943, -48.943, -48.943}, {-50.000, -47.500, -47.500}, {-49.268, -49.268, -47.500}, {-49.268, -47.500, -49.268}, - {-49.268, -49.268, -47.500}, {-47.500, -50.000, -47.500}, {-48.943, -48.943, -48.943}, {-47.500, -49.268, -49.268}, - {-49.268, -47.500, -49.268}, {-48.943, -48.943, -48.943}, {-47.500, -47.500, -50.000}, {-47.500, -49.268, -49.268}, - {-48.943, -48.943, 48.943}, {-50.000, -47.500, 47.500}, {-49.268, -47.500, 49.268}, {-49.268, -49.268, 47.500}, - {-48.943, -48.943, 48.943}, {-47.500, -47.500, 50.000}, {-47.500, -49.268, 49.268}, {-49.268, -47.500, 49.268}, - {-48.943, -48.943, 48.943}, {-47.500, -49.268, 49.268}, {-47.500, -50.000, 47.500}, {-49.268, -49.268, 47.500}, - {48.943, 48.943, -48.943}, {50.000, 47.500, -47.500}, {49.268, 49.268, -47.500}, {49.268, 47.500, -49.268}, - {49.268, 49.268, -47.500}, {47.500, 50.000, -47.500}, {48.943, 48.943, -48.943}, {47.500, 49.268, -49.268}, - {48.943, 48.943, -48.943}, {47.500, 49.268, -49.268}, {47.500, 47.500, -50.000}, {49.268, 47.500, -49.268}, - {48.943, 48.943, 48.943}, {50.000, 47.500, 47.500}, {49.268, 47.500, 49.268}, {49.268, 49.268, 47.500}, - {49.268, 47.500, 49.268}, {47.500, 47.500, 50.000}, {48.943, 48.943, 48.943}, {47.500, 49.268, 49.268}, - {48.943, 48.943, 48.943}, {47.500, 49.268, 49.268}, {47.500, 50.000, 47.500}, {49.268, 49.268, 47.500}, - {48.943, -48.943, -48.943}, {47.500, -50.000, -47.500}, {49.268, -49.268, -47.500}, {47.500, -49.268, -49.268}, - {49.268, -49.268, -47.500}, {50.000, -47.500, -47.500}, {48.943, -48.943, -48.943}, {49.268, -47.500, -49.268}, - {49.268, -47.500, -49.268}, {47.500, -47.500, -50.000}, {48.943, -48.943, -48.943}, {47.500, -49.268, -49.268}, - {48.943, -48.943, 48.943}, {47.500, -50.000, 47.500}, {47.500, -49.268, 49.268}, {49.268, -49.268, 47.500}, - {48.943, -48.943, 48.943}, {47.500, -49.268, 49.268}, {47.500, -47.500, 50.000}, {49.268, -47.500, 49.268}, - {48.943, -48.943, 48.943}, {49.268, -47.500, 49.268}, {50.000, -47.500, 47.500}, {49.268, -49.268, 47.500}, - {-49.268, 47.500, -49.268}, {-47.500, 15.000, -50.000}, {-47.500, 47.500, -50.000}, {-49.268, 15.000, -49.268}, - {-47.500, 5.000, -50.000}, {-49.268, 5.000, -49.268}, {-47.500, -5.000, -50.000}, {-49.268, -5.000, -49.268}, - {-47.500, -15.000, -50.000}, {-49.268, -15.000, -49.268}, {-47.500, -47.500, -50.000}, {-49.268, -47.500, -49.268}, - {-50.000, 47.500, -47.500}, {-49.268, 15.000, -49.268}, {-49.268, 47.500, -49.268}, {-50.000, 15.000, -47.500}, - {-49.268, 5.000, -49.268}, {-50.000, 5.000, -47.500}, {-49.268, -5.000, -49.268}, {-50.000, -5.000, -47.500}, - {-49.268, -15.000, -49.268}, {-50.000, -15.000, -47.500}, {-49.268, -47.500, -49.268}, {-50.000, -47.500, -47.500}, - {-49.268, 49.268, 47.500}, {-47.500, 50.000, 15.000}, {-47.500, 50.000, 47.500}, {-49.268, 49.268, 15.000}, - {-47.500, 50.000, 5.000}, {-49.268, 49.268, 5.000}, {-47.500, 50.000, -5.000}, {-49.268, 49.268, -5.000}, - {-47.500, 50.000, -15.000}, {-49.268, 49.268, -15.000}, {-47.500, 50.000, -47.500}, {-49.268, 49.268, -47.500}, - {-50.000, 47.500, 47.500}, {-49.268, 49.268, 15.000}, {-49.268, 49.268, 47.500}, {-50.000, 47.500, 15.000}, - {-49.268, 49.268, 5.000}, {-50.000, 47.500, 5.000}, {-49.268, 49.268, -5.000}, {-50.000, 47.500, -5.000}, - {-49.268, 49.268, -15.000}, {-50.000, 47.500, -15.000}, {-49.268, 49.268, -47.500}, {-50.000, 47.500, -47.500}, - {-49.268, -47.500, 49.268}, {-47.500, -15.000, 50.000}, {-47.500, -47.500, 50.000}, {-49.268, -15.000, 49.268}, - {-47.500, -5.000, 50.000}, {-49.268, -5.000, 49.268}, {-47.500, 5.000, 50.000}, {-49.268, 5.000, 49.268}, - {-47.500, 15.000, 50.000}, {-49.268, 15.000, 49.268}, {-47.500, 47.500, 50.000}, {-49.268, 47.500, 49.268}, - {-49.268, -15.000, 49.268}, {-49.268, -47.500, 49.268}, {-50.000, -47.500, 47.500}, {-50.000, -15.000, 47.500}, - {-49.268, -5.000, 49.268}, {-50.000, -5.000, 47.500}, {-49.268, 5.000, 49.268}, {-50.000, 5.000, 47.500}, - {-49.268, 15.000, 49.268}, {-50.000, 15.000, 47.500}, {-49.268, 47.500, 49.268}, {-50.000, 47.500, 47.500}, - {-47.500, -50.000, -15.000}, {-47.500, -50.000, -47.500}, {-49.268, -49.268, -47.500}, {-49.268, -49.268, -15.000}, - {-47.500, -50.000, -5.000}, {-49.268, -49.268, -5.000}, {-47.500, -50.000, 5.000}, {-49.268, -49.268, 5.000}, - {-47.500, -50.000, 15.000}, {-49.268, -49.268, 15.000}, {-47.500, -50.000, 47.500}, {-49.268, -49.268, 47.500}, - {-49.268, -49.268, -15.000}, {-49.268, -49.268, -47.500}, {-50.000, -47.500, -47.500}, {-50.000, -47.500, -15.000}, - {-49.268, -49.268, -5.000}, {-50.000, -47.500, -5.000}, {-49.268, -49.268, 5.000}, {-50.000, -47.500, 5.000}, - {-49.268, -49.268, 15.000}, {-50.000, -47.500, 15.000}, {-49.268, -49.268, 47.500}, {-50.000, -47.500, 47.500}, - {-15.000, -47.500, -50.000}, {-47.500, -47.500, -50.000}, {-47.500, -49.268, -49.268}, {-15.000, -49.268, -49.268}, - {-5.000, -47.500, -50.000}, {-5.000, -49.268, -49.268}, {5.000, -47.500, -50.000}, {5.000, -49.268, -49.268}, - {15.000, -47.500, -50.000}, {15.000, -49.268, -49.268}, {47.500, -47.500, -50.000}, {47.500, -49.268, -49.268}, - {-47.500, -50.000, -47.500}, {-15.000, -49.268, -49.268}, {-47.500, -49.268, -49.268}, {-15.000, -50.000, -47.500}, - {-5.000, -49.268, -49.268}, {-5.000, -50.000, -47.500}, {5.000, -49.268, -49.268}, {5.000, -50.000, -47.500}, - {15.000, -49.268, -49.268}, {15.000, -50.000, -47.500}, {47.500, -49.268, -49.268}, {47.500, -50.000, -47.500}, - {47.500, -49.268, 49.268}, {15.000, -47.500, 50.000}, {47.500, -47.500, 50.000}, {15.000, -49.268, 49.268}, - {5.000, -47.500, 50.000}, {5.000, -49.268, 49.268}, {-5.000, -47.500, 50.000}, {-5.000, -49.268, 49.268}, - {-15.000, -47.500, 50.000}, {-15.000, -49.268, 49.268}, {-47.500, -47.500, 50.000}, {-47.500, -49.268, 49.268}, - {15.000, -49.268, 49.268}, {47.500, -49.268, 49.268}, {47.500, -50.000, 47.500}, {15.000, -50.000, 47.500}, - {5.000, -49.268, 49.268}, {5.000, -50.000, 47.500}, {-5.000, -49.268, 49.268}, {-5.000, -50.000, 47.500}, - {-15.000, -49.268, 49.268}, {-15.000, -50.000, 47.500}, {-47.500, -49.268, 49.268}, {-47.500, -50.000, 47.500}, - {50.000, -47.500, -15.000}, {50.000, -47.500, -47.500}, {49.268, -49.268, -47.500}, {49.268, -49.268, -15.000}, - {50.000, -47.500, -5.000}, {49.268, -49.268, -5.000}, {50.000, -47.500, 5.000}, {49.268, -49.268, 5.000}, - {50.000, -47.500, 15.000}, {49.268, -49.268, 15.000}, {50.000, -47.500, 47.500}, {49.268, -49.268, 47.500}, - {49.268, -49.268, -15.000}, {49.268, -49.268, -47.500}, {47.500, -50.000, -47.500}, {47.500, -50.000, -15.000}, - {49.268, -49.268, -5.000}, {47.500, -50.000, -5.000}, {49.268, -49.268, 5.000}, {47.500, -50.000, 5.000}, - {49.268, -49.268, 15.000}, {47.500, -50.000, 15.000}, {49.268, -49.268, 47.500}, {47.500, -50.000, 47.500}, - {47.500, -15.000, -50.000}, {47.500, -47.500, -50.000}, {49.268, -47.500, -49.268}, {49.268, -15.000, -49.268}, - {47.500, -5.000, -50.000}, {49.268, -5.000, -49.268}, {47.500, 5.000, -50.000}, {49.268, 5.000, -49.268}, - {47.500, 15.000, -50.000}, {49.268, 15.000, -49.268}, {47.500, 47.500, -50.000}, {49.268, 47.500, -49.268}, - {50.000, -47.500, -47.500}, {49.268, -15.000, -49.268}, {49.268, -47.500, -49.268}, {50.000, -15.000, -47.500}, - {49.268, -5.000, -49.268}, {50.000, -5.000, -47.500}, {49.268, 5.000, -49.268}, {50.000, 5.000, -47.500}, - {49.268, 15.000, -49.268}, {50.000, 15.000, -47.500}, {49.268, 47.500, -49.268}, {50.000, 47.500, -47.500}, - {47.500, 15.000, 50.000}, {47.500, 47.500, 50.000}, {49.268, 47.500, 49.268}, {49.268, 15.000, 49.268}, - {47.500, 5.000, 50.000}, {49.268, 5.000, 49.268}, {47.500, -5.000, 50.000}, {49.268, -5.000, 49.268}, - {47.500, -15.000, 50.000}, {49.268, -15.000, 49.268}, {47.500, -47.500, 50.000}, {49.268, -47.500, 49.268}, - {49.268, 15.000, 49.268}, {49.268, 47.500, 49.268}, {50.000, 47.500, 47.500}, {50.000, 15.000, 47.500}, - {49.268, 5.000, 49.268}, {50.000, 5.000, 47.500}, {49.268, -5.000, 49.268}, {50.000, -5.000, 47.500}, - {49.268, -15.000, 49.268}, {50.000, -15.000, 47.500}, {49.268, -47.500, 49.268}, {50.000, -47.500, 47.500}, - {47.500, 50.000, -15.000}, {47.500, 50.000, -47.500}, {49.268, 49.268, -47.500}, {49.268, 49.268, -15.000}, - {47.500, 50.000, -5.000}, {49.268, 49.268, -5.000}, {47.500, 50.000, 5.000}, {49.268, 49.268, 5.000}, - {47.500, 50.000, 15.000}, {49.268, 49.268, 15.000}, {47.500, 50.000, 47.500}, {49.268, 49.268, 47.500}, - {49.268, 49.268, -15.000}, {49.268, 49.268, -47.500}, {50.000, 47.500, -47.500}, {50.000, 47.500, -15.000}, - {49.268, 49.268, -5.000}, {50.000, 47.500, -5.000}, {49.268, 49.268, 5.000}, {50.000, 47.500, 5.000}, - {49.268, 49.268, 15.000}, {50.000, 47.500, 15.000}, {49.268, 49.268, 47.500}, {50.000, 47.500, 47.500}, - {47.500, 49.268, -49.268}, {15.000, 47.500, -50.000}, {47.500, 47.500, -50.000}, {15.000, 49.268, -49.268}, - {5.000, 47.500, -50.000}, {5.000, 49.268, -49.268}, {-5.000, 47.500, -50.000}, {-5.000, 49.268, -49.268}, - {-15.000, 47.500, -50.000}, {-15.000, 49.268, -49.268}, {-47.500, 47.500, -50.000}, {-47.500, 49.268, -49.268}, - {47.500, 50.000, -47.500}, {15.000, 49.268, -49.268}, {47.500, 49.268, -49.268}, {15.000, 50.000, -47.500}, - {5.000, 49.268, -49.268}, {5.000, 50.000, -47.500}, {-5.000, 49.268, -49.268}, {-5.000, 50.000, -47.500}, - {-15.000, 49.268, -49.268}, {-15.000, 50.000, -47.500}, {-47.500, 49.268, -49.268}, {-47.500, 50.000, -47.500}, - {-15.000, 47.500, 50.000}, {-47.500, 47.500, 50.000}, {-47.500, 49.268, 49.268}, {-15.000, 49.268, 49.268}, - {-5.000, 47.500, 50.000}, {-5.000, 49.268, 49.268}, {5.000, 47.500, 50.000}, {5.000, 49.268, 49.268}, - {15.000, 47.500, 50.000}, {15.000, 49.268, 49.268}, {47.500, 47.500, 50.000}, {47.500, 49.268, 49.268}, - {-15.000, 49.268, 49.268}, {-47.500, 49.268, 49.268}, {-47.500, 50.000, 47.500}, {-15.000, 50.000, 47.500}, - {-5.000, 49.268, 49.268}, {-5.000, 50.000, 47.500}, {5.000, 49.268, 49.268}, {5.000, 50.000, 47.500}, - {15.000, 49.268, 49.268}, {15.000, 50.000, 47.500}, {47.500, 49.268, 49.268}, {47.500, 50.000, 47.500}, - {50.000, 15.000, -47.500}, {50.000, 47.500, -15.000}, {50.000, 47.500, -47.500}, {50.000, 15.000, -15.000}, - {50.000, 47.500, -5.000}, {50.000, 5.000, -47.500}, {50.000, 15.000, -5.000}, {50.000, 47.500, 5.000}, - {50.000, 5.000, -15.000}, {50.000, -5.000, -47.500}, {50.000, 15.000, 5.000}, {50.000, 47.500, 15.000}, - {50.000, 5.000, -5.000}, {50.000, -5.000, -15.000}, {50.000, -15.000, -47.500}, {50.000, 15.000, 15.000}, - {50.000, 47.500, 47.500}, {50.000, 15.000, 47.500}, {50.000, -15.000, -15.000}, {50.000, -47.500, -47.500}, - {50.000, -47.500, -15.000}, {50.000, -5.000, -5.000}, {50.000, -15.000, -5.000}, {50.000, -47.500, -5.000}, - {50.000, 5.000, 5.000}, {50.000, -5.000, 5.000}, {50.000, -15.000, 5.000}, {50.000, -47.500, 5.000}, - {50.000, 5.000, 15.000}, {50.000, 5.000, 47.500}, {50.000, -5.000, 15.000}, {50.000, -5.000, 47.500}, - {50.000, -15.000, 15.000}, {50.000, -15.000, 47.500}, {50.000, -47.500, 15.000}, {50.000, -47.500, 47.500}, - {15.000, -50.000, -47.500}, {47.500, -50.000, -15.000}, {47.500, -50.000, -47.500}, {15.000, -50.000, -15.000}, - {47.500, -50.000, -5.000}, {5.000, -50.000, -47.500}, {15.000, -50.000, -5.000}, {47.500, -50.000, 5.000}, - {5.000, -50.000, -15.000}, {-5.000, -50.000, -47.500}, {15.000, -50.000, 5.000}, {47.500, -50.000, 15.000}, - {5.000, -50.000, -5.000}, {-5.000, -50.000, -15.000}, {-15.000, -50.000, -47.500}, {15.000, -50.000, 15.000}, - {47.500, -50.000, 47.500}, {15.000, -50.000, 47.500}, {-15.000, -50.000, -15.000}, {-47.500, -50.000, -47.500}, - {-47.500, -50.000, -15.000}, {-5.000, -50.000, -5.000}, {-15.000, -50.000, -5.000}, {-47.500, -50.000, -5.000}, - {5.000, -50.000, 5.000}, {-5.000, -50.000, 5.000}, {-15.000, -50.000, 5.000}, {-47.500, -50.000, 5.000}, - {5.000, -50.000, 15.000}, {5.000, -50.000, 47.500}, {-5.000, -50.000, 15.000}, {-5.000, -50.000, 47.500}, - {-15.000, -50.000, 15.000}, {-15.000, -50.000, 47.500}, {-47.500, -50.000, 15.000}, {-47.500, -50.000, 47.500}, - {47.500, 15.000, 50.000}, {15.000, 47.500, 50.000}, {47.500, 47.500, 50.000}, {15.000, 15.000, 50.000}, - {5.000, 47.500, 50.000}, {47.500, 5.000, 50.000}, {5.000, 15.000, 50.000}, {-5.000, 47.500, 50.000}, - {15.000, 5.000, 50.000}, {47.500, -5.000, 50.000}, {-5.000, 15.000, 50.000}, {-15.000, 47.500, 50.000}, - {5.000, 5.000, 50.000}, {15.000, -5.000, 50.000}, {47.500, -15.000, 50.000}, {-15.000, 15.000, 50.000}, - {-47.500, 47.500, 50.000}, {-47.500, 15.000, 50.000}, {15.000, -15.000, 50.000}, {47.500, -47.500, 50.000}, - {15.000, -47.500, 50.000}, {-15.000, 5.000, 50.000}, {-47.500, 5.000, 50.000}, {-5.000, 5.000, 50.000}, - {-15.000, -5.000, 50.000}, {-47.500, -5.000, 50.000}, {-5.000, -5.000, 50.000}, {5.000, -5.000, 50.000}, - {5.000, -15.000, 50.000}, {5.000, -47.500, 50.000}, {-5.000, -15.000, 50.000}, {-5.000, -47.500, 50.000}, - {-15.000, -15.000, 50.000}, {-15.000, -47.500, 50.000}, {-47.500, -15.000, 50.000}, {-47.500, -47.500, 50.000}, - {-50.000, -15.000, -47.500}, {-50.000, -47.500, -15.000}, {-50.000, -47.500, -47.500}, {-50.000, -15.000, -15.000}, - {-50.000, -47.500, -5.000}, {-50.000, -5.000, -47.500}, {-50.000, -15.000, -5.000}, {-50.000, -47.500, 5.000}, - {-50.000, -5.000, -15.000}, {-50.000, 5.000, -47.500}, {-50.000, -15.000, 5.000}, {-50.000, -47.500, 15.000}, - {-50.000, -5.000, -5.000}, {-50.000, 5.000, -15.000}, {-50.000, 15.000, -47.500}, {-50.000, -15.000, 15.000}, - {-50.000, -47.500, 47.500}, {-50.000, -15.000, 47.500}, {-50.000, 15.000, -15.000}, {-50.000, 47.500, -47.500}, - {-50.000, 47.500, -15.000}, {-50.000, 5.000, -5.000}, {-50.000, 15.000, -5.000}, {-50.000, 47.500, -5.000}, - {-50.000, -5.000, 5.000}, {-50.000, 5.000, 5.000}, {-50.000, 15.000, 5.000}, {-50.000, 47.500, 5.000}, - {-50.000, -5.000, 15.000}, {-50.000, -5.000, 47.500}, {-50.000, 5.000, 15.000}, {-50.000, 5.000, 47.500}, - {-50.000, 15.000, 15.000}, {-50.000, 15.000, 47.500}, {-50.000, 47.500, 15.000}, {-50.000, 47.500, 47.500}, - {15.000, 50.000, 47.500}, {47.500, 50.000, 15.000}, {47.500, 50.000, 47.500}, {15.000, 50.000, 15.000}, - {47.500, 50.000, 5.000}, {5.000, 50.000, 47.500}, {15.000, 50.000, 5.000}, {47.500, 50.000, -5.000}, - {5.000, 50.000, 15.000}, {-5.000, 50.000, 47.500}, {15.000, 50.000, -5.000}, {47.500, 50.000, -15.000}, - {5.000, 50.000, 5.000}, {-5.000, 50.000, 15.000}, {-15.000, 50.000, 47.500}, {15.000, 50.000, -15.000}, - {47.500, 50.000, -47.500}, {15.000, 50.000, -47.500}, {-15.000, 50.000, 15.000}, {-47.500, 50.000, 47.500}, - {-47.500, 50.000, 15.000}, {-5.000, 50.000, 5.000}, {-15.000, 50.000, 5.000}, {-47.500, 50.000, 5.000}, - {5.000, 50.000, -5.000}, {-5.000, 50.000, -5.000}, {-15.000, 50.000, -5.000}, {-47.500, 50.000, -5.000}, - {5.000, 50.000, -15.000}, {5.000, 50.000, -47.500}, {-5.000, 50.000, -15.000}, {-5.000, 50.000, -47.500}, - {-15.000, 50.000, -15.000}, {-15.000, 50.000, -47.500}, {-47.500, 50.000, -15.000}, {-47.500, 50.000, -47.500}, - {-15.000, 47.500, -50.000}, {-47.500, 47.500, -50.000}, {-47.500, 15.000, -50.000}, {-15.000, 15.000, -50.000}, - {-5.000, 47.500, -50.000}, {-47.500, 5.000, -50.000}, {-5.000, 15.000, -50.000}, {5.000, 47.500, -50.000}, - {-15.000, 5.000, -50.000}, {-47.500, -5.000, -50.000}, {5.000, 15.000, -50.000}, {15.000, 47.500, -50.000}, - {-5.000, 5.000, -50.000}, {-15.000, -5.000, -50.000}, {-47.500, -15.000, -50.000}, {15.000, 15.000, -50.000}, - {47.500, 47.500, -50.000}, {47.500, 15.000, -50.000}, {5.000, 5.000, -50.000}, {15.000, 5.000, -50.000}, - {47.500, 5.000, -50.000}, {-5.000, -5.000, -50.000}, {5.000, -5.000, -50.000}, {15.000, -5.000, -50.000}, - {47.500, -5.000, -50.000}, {-15.000, -15.000, -50.000}, {-47.500, -47.500, -50.000}, {-15.000, -47.500, -50.000}, - {-5.000, -15.000, -50.000}, {-5.000, -47.500, -50.000}, {5.000, -15.000, -50.000}, {5.000, -47.500, -50.000}, - {15.000, -15.000, -50.000}, {15.000, -47.500, -50.000}, {47.500, -15.000, -50.000}, {47.500, -47.500, -50.000}, -}; - -inline TArray ExpectedPositionsScaledDownCenterNotScaled = { - {-42.678, 42.678, -25.000}, {-50.000, 25.000, -25.000}, {-39.434, 39.434, -39.434}, {-42.678, 25.000, -42.678}, - {-39.434, 39.434, -39.434}, {-25.000, 25.000, -50.000}, {-25.000, 42.678, -42.678}, {-42.678, 25.000, -42.678}, - {-39.434, 39.434, -39.434}, {-25.000, 50.000, -25.000}, {-42.678, 42.678, -25.000}, {-25.000, 42.678, -42.678}, - {-39.434, 39.434, 39.434}, {-42.678, 25.000, 42.678}, {-50.000, 25.000, 25.000}, {-42.678, 42.678, 25.000}, - {-39.434, 39.434, 39.434}, {-25.000, 50.000, 25.000}, {-25.000, 42.678, 42.678}, {-42.678, 42.678, 25.000}, - {-42.678, 25.000, 42.678}, {-39.434, 39.434, 39.434}, {-25.000, 25.000, 50.000}, {-25.000, 42.678, 42.678}, - {-39.434, -39.434, -39.434}, {-50.000, -25.000, -25.000}, {-42.678, -42.678, -25.000}, {-42.678, -25.000, -42.678}, - {-42.678, -42.678, -25.000}, {-25.000, -50.000, -25.000}, {-39.434, -39.434, -39.434}, {-25.000, -42.678, -42.678}, - {-42.678, -25.000, -42.678}, {-39.434, -39.434, -39.434}, {-25.000, -25.000, -50.000}, {-25.000, -42.678, -42.678}, - {-39.434, -39.434, 39.434}, {-50.000, -25.000, 25.000}, {-42.678, -25.000, 42.678}, {-42.678, -42.678, 25.000}, - {-39.434, -39.434, 39.434}, {-25.000, -25.000, 50.000}, {-25.000, -42.678, 42.678}, {-42.678, -25.000, 42.678}, - {-39.434, -39.434, 39.434}, {-25.000, -42.678, 42.678}, {-25.000, -50.000, 25.000}, {-42.678, -42.678, 25.000}, - {39.434, 39.434, -39.434}, {50.000, 25.000, -25.000}, {42.678, 42.678, -25.000}, {42.678, 25.000, -42.678}, - {42.678, 42.678, -25.000}, {25.000, 50.000, -25.000}, {39.434, 39.434, -39.434}, {25.000, 42.678, -42.678}, - {39.434, 39.434, -39.434}, {25.000, 42.678, -42.678}, {25.000, 25.000, -50.000}, {42.678, 25.000, -42.678}, - {39.434, 39.434, 39.434}, {50.000, 25.000, 25.000}, {42.678, 25.000, 42.678}, {42.678, 42.678, 25.000}, - {42.678, 25.000, 42.678}, {25.000, 25.000, 50.000}, {39.434, 39.434, 39.434}, {25.000, 42.678, 42.678}, - {39.434, 39.434, 39.434}, {25.000, 42.678, 42.678}, {25.000, 50.000, 25.000}, {42.678, 42.678, 25.000}, - {39.434, -39.434, -39.434}, {25.000, -50.000, -25.000}, {42.678, -42.678, -25.000}, {25.000, -42.678, -42.678}, - {42.678, -42.678, -25.000}, {50.000, -25.000, -25.000}, {39.434, -39.434, -39.434}, {42.678, -25.000, -42.678}, - {42.678, -25.000, -42.678}, {25.000, -25.000, -50.000}, {39.434, -39.434, -39.434}, {25.000, -42.678, -42.678}, - {39.434, -39.434, 39.434}, {25.000, -50.000, 25.000}, {25.000, -42.678, 42.678}, {42.678, -42.678, 25.000}, - {39.434, -39.434, 39.434}, {25.000, -42.678, 42.678}, {25.000, -25.000, 50.000}, {42.678, -25.000, 42.678}, - {39.434, -39.434, 39.434}, {42.678, -25.000, 42.678}, {50.000, -25.000, 25.000}, {42.678, -42.678, 25.000}, - {-42.678, 25.000, -42.678}, {-25.000, 0.000, -50.000}, {-25.000, 25.000, -50.000}, {-42.678, 0.000, -42.678}, - {-25.000, 0.000, -50.000}, {-42.678, 0.000, -42.678}, {-25.000, -0.000, -50.000}, {-42.678, -0.000, -42.678}, - {-25.000, -0.000, -50.000}, {-42.678, -0.000, -42.678}, {-25.000, -25.000, -50.000}, {-42.678, -25.000, -42.678}, - {-50.000, 25.000, -25.000}, {-42.678, 0.000, -42.678}, {-42.678, 25.000, -42.678}, {-50.000, 0.000, -25.000}, - {-42.678, 0.000, -42.678}, {-50.000, 0.000, -25.000}, {-42.678, -0.000, -42.678}, {-50.000, -0.000, -25.000}, - {-42.678, -0.000, -42.678}, {-50.000, -0.000, -25.000}, {-42.678, -25.000, -42.678}, {-50.000, -25.000, -25.000}, - {-42.678, 42.678, 25.000}, {-25.000, 50.000, 0.000}, {-25.000, 50.000, 25.000}, {-42.678, 42.678, 0.000}, - {-25.000, 50.000, 0.000}, {-42.678, 42.678, 0.000}, {-25.000, 50.000, 0.000}, {-42.678, 42.678, 0.000}, - {-25.000, 50.000, 0.000}, {-42.678, 42.678, 0.000}, {-25.000, 50.000, -25.000}, {-42.678, 42.678, -25.000}, - {-50.000, 25.000, 25.000}, {-42.678, 42.678, 0.000}, {-42.678, 42.678, 25.000}, {-50.000, 25.000, 0.000}, - {-42.678, 42.678, 0.000}, {-50.000, 25.000, 0.000}, {-42.678, 42.678, 0.000}, {-50.000, 25.000, 0.000}, - {-42.678, 42.678, 0.000}, {-50.000, 25.000, 0.000}, {-42.678, 42.678, -25.000}, {-50.000, 25.000, -25.000}, - {-42.678, -25.000, 42.678}, {-25.000, -0.000, 50.000}, {-25.000, -25.000, 50.000}, {-42.678, -0.000, 42.678}, - {-25.000, -0.000, 50.000}, {-42.678, -0.000, 42.678}, {-25.000, 0.000, 50.000}, {-42.678, 0.000, 42.678}, - {-25.000, 0.000, 50.000}, {-42.678, 0.000, 42.678}, {-25.000, 25.000, 50.000}, {-42.678, 25.000, 42.678}, - {-42.678, -0.000, 42.678}, {-42.678, -25.000, 42.678}, {-50.000, -25.000, 25.000}, {-50.000, -0.000, 25.000}, - {-42.678, -0.000, 42.678}, {-50.000, -0.000, 25.000}, {-42.678, 0.000, 42.678}, {-50.000, 0.000, 25.000}, - {-42.678, 0.000, 42.678}, {-50.000, 0.000, 25.000}, {-42.678, 25.000, 42.678}, {-50.000, 25.000, 25.000}, - {-25.000, -50.000, 0.000}, {-25.000, -50.000, -25.000}, {-42.678, -42.678, -25.000}, {-42.678, -42.678, 0.000}, - {-25.000, -50.000, 0.000}, {-42.678, -42.678, 0.000}, {-25.000, -50.000, 0.000}, {-42.678, -42.678, 0.000}, - {-25.000, -50.000, 0.000}, {-42.678, -42.678, 0.000}, {-25.000, -50.000, 25.000}, {-42.678, -42.678, 25.000}, - {-42.678, -42.678, 0.000}, {-42.678, -42.678, -25.000}, {-50.000, -25.000, -25.000}, {-50.000, -25.000, 0.000}, - {-42.678, -42.678, 0.000}, {-50.000, -25.000, 0.000}, {-42.678, -42.678, 0.000}, {-50.000, -25.000, 0.000}, - {-42.678, -42.678, 0.000}, {-50.000, -25.000, 0.000}, {-42.678, -42.678, 25.000}, {-50.000, -25.000, 25.000}, - {-0.000, -25.000, -50.000}, {-25.000, -25.000, -50.000}, {-25.000, -42.678, -42.678}, {-0.000, -42.678, -42.678}, - {-0.000, -25.000, -50.000}, {-0.000, -42.678, -42.678}, {0.000, -25.000, -50.000}, {0.000, -42.678, -42.678}, - {0.000, -25.000, -50.000}, {0.000, -42.678, -42.678}, {25.000, -25.000, -50.000}, {25.000, -42.678, -42.678}, - {-25.000, -50.000, -25.000}, {-0.000, -42.678, -42.678}, {-25.000, -42.678, -42.678}, {-0.000, -50.000, -25.000}, - {-0.000, -42.678, -42.678}, {-0.000, -50.000, -25.000}, {0.000, -42.678, -42.678}, {0.000, -50.000, -25.000}, - {0.000, -42.678, -42.678}, {0.000, -50.000, -25.000}, {25.000, -42.678, -42.678}, {25.000, -50.000, -25.000}, - {25.000, -42.678, 42.678}, {0.000, -25.000, 50.000}, {25.000, -25.000, 50.000}, {0.000, -42.678, 42.678}, - {0.000, -25.000, 50.000}, {0.000, -42.678, 42.678}, {-0.000, -25.000, 50.000}, {-0.000, -42.678, 42.678}, - {-0.000, -25.000, 50.000}, {-0.000, -42.678, 42.678}, {-25.000, -25.000, 50.000}, {-25.000, -42.678, 42.678}, - {0.000, -42.678, 42.678}, {25.000, -42.678, 42.678}, {25.000, -50.000, 25.000}, {0.000, -50.000, 25.000}, - {0.000, -42.678, 42.678}, {0.000, -50.000, 25.000}, {-0.000, -42.678, 42.678}, {-0.000, -50.000, 25.000}, - {-0.000, -42.678, 42.678}, {-0.000, -50.000, 25.000}, {-25.000, -42.678, 42.678}, {-25.000, -50.000, 25.000}, - {50.000, -25.000, 0.000}, {50.000, -25.000, -25.000}, {42.678, -42.678, -25.000}, {42.678, -42.678, 0.000}, - {50.000, -25.000, 0.000}, {42.678, -42.678, 0.000}, {50.000, -25.000, 0.000}, {42.678, -42.678, 0.000}, - {50.000, -25.000, 0.000}, {42.678, -42.678, 0.000}, {50.000, -25.000, 25.000}, {42.678, -42.678, 25.000}, - {42.678, -42.678, 0.000}, {42.678, -42.678, -25.000}, {25.000, -50.000, -25.000}, {25.000, -50.000, 0.000}, - {42.678, -42.678, 0.000}, {25.000, -50.000, 0.000}, {42.678, -42.678, 0.000}, {25.000, -50.000, 0.000}, - {42.678, -42.678, 0.000}, {25.000, -50.000, 0.000}, {42.678, -42.678, 25.000}, {25.000, -50.000, 25.000}, - {25.000, -0.000, -50.000}, {25.000, -25.000, -50.000}, {42.678, -25.000, -42.678}, {42.678, -0.000, -42.678}, - {25.000, -0.000, -50.000}, {42.678, -0.000, -42.678}, {25.000, 0.000, -50.000}, {42.678, 0.000, -42.678}, - {25.000, 0.000, -50.000}, {42.678, 0.000, -42.678}, {25.000, 25.000, -50.000}, {42.678, 25.000, -42.678}, - {50.000, -25.000, -25.000}, {42.678, -0.000, -42.678}, {42.678, -25.000, -42.678}, {50.000, -0.000, -25.000}, - {42.678, -0.000, -42.678}, {50.000, -0.000, -25.000}, {42.678, 0.000, -42.678}, {50.000, 0.000, -25.000}, - {42.678, 0.000, -42.678}, {50.000, 0.000, -25.000}, {42.678, 25.000, -42.678}, {50.000, 25.000, -25.000}, - {25.000, 0.000, 50.000}, {25.000, 25.000, 50.000}, {42.678, 25.000, 42.678}, {42.678, 0.000, 42.678}, - {25.000, 0.000, 50.000}, {42.678, 0.000, 42.678}, {25.000, -0.000, 50.000}, {42.678, -0.000, 42.678}, - {25.000, -0.000, 50.000}, {42.678, -0.000, 42.678}, {25.000, -25.000, 50.000}, {42.678, -25.000, 42.678}, - {42.678, 0.000, 42.678}, {42.678, 25.000, 42.678}, {50.000, 25.000, 25.000}, {50.000, 0.000, 25.000}, - {42.678, 0.000, 42.678}, {50.000, 0.000, 25.000}, {42.678, -0.000, 42.678}, {50.000, -0.000, 25.000}, - {42.678, -0.000, 42.678}, {50.000, -0.000, 25.000}, {42.678, -25.000, 42.678}, {50.000, -25.000, 25.000}, - {25.000, 50.000, 0.000}, {25.000, 50.000, -25.000}, {42.678, 42.678, -25.000}, {42.678, 42.678, 0.000}, - {25.000, 50.000, 0.000}, {42.678, 42.678, 0.000}, {25.000, 50.000, 0.000}, {42.678, 42.678, 0.000}, - {25.000, 50.000, 0.000}, {42.678, 42.678, 0.000}, {25.000, 50.000, 25.000}, {42.678, 42.678, 25.000}, - {42.678, 42.678, 0.000}, {42.678, 42.678, -25.000}, {50.000, 25.000, -25.000}, {50.000, 25.000, 0.000}, - {42.678, 42.678, 0.000}, {50.000, 25.000, 0.000}, {42.678, 42.678, 0.000}, {50.000, 25.000, 0.000}, - {42.678, 42.678, 0.000}, {50.000, 25.000, 0.000}, {42.678, 42.678, 25.000}, {50.000, 25.000, 25.000}, - {25.000, 42.678, -42.678}, {0.000, 25.000, -50.000}, {25.000, 25.000, -50.000}, {0.000, 42.678, -42.678}, - {0.000, 25.000, -50.000}, {0.000, 42.678, -42.678}, {-0.000, 25.000, -50.000}, {-0.000, 42.678, -42.678}, - {-0.000, 25.000, -50.000}, {-0.000, 42.678, -42.678}, {-25.000, 25.000, -50.000}, {-25.000, 42.678, -42.678}, - {25.000, 50.000, -25.000}, {0.000, 42.678, -42.678}, {25.000, 42.678, -42.678}, {0.000, 50.000, -25.000}, - {0.000, 42.678, -42.678}, {0.000, 50.000, -25.000}, {-0.000, 42.678, -42.678}, {-0.000, 50.000, -25.000}, - {-0.000, 42.678, -42.678}, {-0.000, 50.000, -25.000}, {-25.000, 42.678, -42.678}, {-25.000, 50.000, -25.000}, - {-0.000, 25.000, 50.000}, {-25.000, 25.000, 50.000}, {-25.000, 42.678, 42.678}, {-0.000, 42.678, 42.678}, - {-0.000, 25.000, 50.000}, {-0.000, 42.678, 42.678}, {0.000, 25.000, 50.000}, {0.000, 42.678, 42.678}, - {0.000, 25.000, 50.000}, {0.000, 42.678, 42.678}, {25.000, 25.000, 50.000}, {25.000, 42.678, 42.678}, - {-0.000, 42.678, 42.678}, {-25.000, 42.678, 42.678}, {-25.000, 50.000, 25.000}, {-0.000, 50.000, 25.000}, - {-0.000, 42.678, 42.678}, {-0.000, 50.000, 25.000}, {0.000, 42.678, 42.678}, {0.000, 50.000, 25.000}, - {0.000, 42.678, 42.678}, {0.000, 50.000, 25.000}, {25.000, 42.678, 42.678}, {25.000, 50.000, 25.000}, - {50.000, 0.000, -25.000}, {50.000, 25.000, 0.000}, {50.000, 25.000, -25.000}, {50.000, 0.000, 0.000}, - {50.000, 25.000, 0.000}, {50.000, 0.000, -25.000}, {50.000, 0.000, 0.000}, {50.000, 25.000, 0.000}, - {50.000, 0.000, 0.000}, {50.000, -0.000, -25.000}, {50.000, 0.000, 0.000}, {50.000, 25.000, 0.000}, - {50.000, 0.000, 0.000}, {50.000, -0.000, 0.000}, {50.000, -0.000, -25.000}, {50.000, 0.000, 0.000}, - {50.000, 25.000, 25.000}, {50.000, 0.000, 25.000}, {50.000, -0.000, 0.000}, {50.000, -25.000, -25.000}, - {50.000, -25.000, 0.000}, {50.000, -0.000, 0.000}, {50.000, -0.000, 0.000}, {50.000, -25.000, 0.000}, - {50.000, 0.000, 0.000}, {50.000, -0.000, 0.000}, {50.000, -0.000, 0.000}, {50.000, -25.000, 0.000}, - {50.000, 0.000, 0.000}, {50.000, 0.000, 25.000}, {50.000, -0.000, 0.000}, {50.000, -0.000, 25.000}, - {50.000, -0.000, 0.000}, {50.000, -0.000, 25.000}, {50.000, -25.000, 0.000}, {50.000, -25.000, 25.000}, - {0.000, -50.000, -25.000}, {25.000, -50.000, 0.000}, {25.000, -50.000, -25.000}, {0.000, -50.000, 0.000}, - {25.000, -50.000, 0.000}, {0.000, -50.000, -25.000}, {0.000, -50.000, 0.000}, {25.000, -50.000, 0.000}, - {0.000, -50.000, 0.000}, {-0.000, -50.000, -25.000}, {0.000, -50.000, 0.000}, {25.000, -50.000, 0.000}, - {0.000, -50.000, 0.000}, {-0.000, -50.000, 0.000}, {-0.000, -50.000, -25.000}, {0.000, -50.000, 0.000}, - {25.000, -50.000, 25.000}, {0.000, -50.000, 25.000}, {-0.000, -50.000, 0.000}, {-25.000, -50.000, -25.000}, - {-25.000, -50.000, 0.000}, {-0.000, -50.000, 0.000}, {-0.000, -50.000, 0.000}, {-25.000, -50.000, 0.000}, - {0.000, -50.000, 0.000}, {-0.000, -50.000, 0.000}, {-0.000, -50.000, 0.000}, {-25.000, -50.000, 0.000}, - {0.000, -50.000, 0.000}, {0.000, -50.000, 25.000}, {-0.000, -50.000, 0.000}, {-0.000, -50.000, 25.000}, - {-0.000, -50.000, 0.000}, {-0.000, -50.000, 25.000}, {-25.000, -50.000, 0.000}, {-25.000, -50.000, 25.000}, - {25.000, 0.000, 50.000}, {0.000, 25.000, 50.000}, {25.000, 25.000, 50.000}, {0.000, 0.000, 50.000}, - {0.000, 25.000, 50.000}, {25.000, 0.000, 50.000}, {0.000, 0.000, 50.000}, {-0.000, 25.000, 50.000}, - {0.000, 0.000, 50.000}, {25.000, -0.000, 50.000}, {-0.000, 0.000, 50.000}, {-0.000, 25.000, 50.000}, - {0.000, 0.000, 50.000}, {0.000, -0.000, 50.000}, {25.000, -0.000, 50.000}, {-0.000, 0.000, 50.000}, - {-25.000, 25.000, 50.000}, {-25.000, 0.000, 50.000}, {0.000, -0.000, 50.000}, {25.000, -25.000, 50.000}, - {0.000, -25.000, 50.000}, {-0.000, 0.000, 50.000}, {-25.000, 0.000, 50.000}, {-0.000, 0.000, 50.000}, - {-0.000, -0.000, 50.000}, {-25.000, -0.000, 50.000}, {-0.000, -0.000, 50.000}, {0.000, -0.000, 50.000}, - {0.000, -0.000, 50.000}, {0.000, -25.000, 50.000}, {-0.000, -0.000, 50.000}, {-0.000, -25.000, 50.000}, - {-0.000, -0.000, 50.000}, {-0.000, -25.000, 50.000}, {-25.000, -0.000, 50.000}, {-25.000, -25.000, 50.000}, - {-50.000, -0.000, -25.000}, {-50.000, -25.000, 0.000}, {-50.000, -25.000, -25.000}, {-50.000, -0.000, 0.000}, - {-50.000, -25.000, 0.000}, {-50.000, -0.000, -25.000}, {-50.000, -0.000, 0.000}, {-50.000, -25.000, 0.000}, - {-50.000, -0.000, 0.000}, {-50.000, 0.000, -25.000}, {-50.000, -0.000, 0.000}, {-50.000, -25.000, 0.000}, - {-50.000, -0.000, 0.000}, {-50.000, 0.000, 0.000}, {-50.000, 0.000, -25.000}, {-50.000, -0.000, 0.000}, - {-50.000, -25.000, 25.000}, {-50.000, -0.000, 25.000}, {-50.000, 0.000, 0.000}, {-50.000, 25.000, -25.000}, - {-50.000, 25.000, 0.000}, {-50.000, 0.000, 0.000}, {-50.000, 0.000, 0.000}, {-50.000, 25.000, 0.000}, - {-50.000, -0.000, 0.000}, {-50.000, 0.000, 0.000}, {-50.000, 0.000, 0.000}, {-50.000, 25.000, 0.000}, - {-50.000, -0.000, 0.000}, {-50.000, -0.000, 25.000}, {-50.000, 0.000, 0.000}, {-50.000, 0.000, 25.000}, - {-50.000, 0.000, 0.000}, {-50.000, 0.000, 25.000}, {-50.000, 25.000, 0.000}, {-50.000, 25.000, 25.000}, - {0.000, 50.000, 25.000}, {25.000, 50.000, 0.000}, {25.000, 50.000, 25.000}, {0.000, 50.000, 0.000}, - {25.000, 50.000, 0.000}, {0.000, 50.000, 25.000}, {0.000, 50.000, 0.000}, {25.000, 50.000, 0.000}, - {0.000, 50.000, 0.000}, {-0.000, 50.000, 25.000}, {0.000, 50.000, 0.000}, {25.000, 50.000, 0.000}, - {0.000, 50.000, 0.000}, {-0.000, 50.000, 0.000}, {-0.000, 50.000, 25.000}, {0.000, 50.000, 0.000}, - {25.000, 50.000, -25.000}, {0.000, 50.000, -25.000}, {-0.000, 50.000, 0.000}, {-25.000, 50.000, 25.000}, - {-25.000, 50.000, 0.000}, {-0.000, 50.000, 0.000}, {-0.000, 50.000, 0.000}, {-25.000, 50.000, 0.000}, - {0.000, 50.000, 0.000}, {-0.000, 50.000, 0.000}, {-0.000, 50.000, 0.000}, {-25.000, 50.000, 0.000}, - {0.000, 50.000, 0.000}, {0.000, 50.000, -25.000}, {-0.000, 50.000, 0.000}, {-0.000, 50.000, -25.000}, - {-0.000, 50.000, 0.000}, {-0.000, 50.000, -25.000}, {-25.000, 50.000, 0.000}, {-25.000, 50.000, -25.000}, - {-0.000, 25.000, -50.000}, {-25.000, 25.000, -50.000}, {-25.000, 0.000, -50.000}, {-0.000, 0.000, -50.000}, - {-0.000, 25.000, -50.000}, {-25.000, 0.000, -50.000}, {-0.000, 0.000, -50.000}, {0.000, 25.000, -50.000}, - {-0.000, 0.000, -50.000}, {-25.000, -0.000, -50.000}, {0.000, 0.000, -50.000}, {0.000, 25.000, -50.000}, - {-0.000, 0.000, -50.000}, {-0.000, -0.000, -50.000}, {-25.000, -0.000, -50.000}, {0.000, 0.000, -50.000}, - {25.000, 25.000, -50.000}, {25.000, 0.000, -50.000}, {0.000, 0.000, -50.000}, {0.000, 0.000, -50.000}, - {25.000, 0.000, -50.000}, {-0.000, -0.000, -50.000}, {0.000, -0.000, -50.000}, {0.000, -0.000, -50.000}, - {25.000, -0.000, -50.000}, {-0.000, -0.000, -50.000}, {-25.000, -25.000, -50.000}, {-0.000, -25.000, -50.000}, - {-0.000, -0.000, -50.000}, {-0.000, -25.000, -50.000}, {0.000, -0.000, -50.000}, {0.000, -25.000, -50.000}, - {0.000, -0.000, -50.000}, {0.000, -25.000, -50.000}, {25.000, -0.000, -50.000}, {25.000, -25.000, -50.000}, -}; diff --git a/Plugins/MetaXR/Source/MRUtilityKitEditor/Private/MRUtilityKit.spec.cpp b/Plugins/MetaXR/Source/MRUtilityKitEditor/Private/MRUtilityKit.spec.cpp deleted file mode 100644 index db9599a..0000000 --- a/Plugins/MetaXR/Source/MRUtilityKitEditor/Private/MRUtilityKit.spec.cpp +++ /dev/null @@ -1,1293 +0,0 @@ -// Copyright (c) Meta Platforms, Inc. and affiliates. - -#include "Editor.h" -#include "Editor/UnrealEdEngine.h" -#include "MeshActor.h" -#include "Misc/AutomationTest.h" -#include "Misc/EngineVersionComparison.h" -#include "MRUtilityKitAnchor.h" -#include "MRUtilityKitAnchorActorSpawner.h" -#include "MRUtilityKitSubsystem.h" -#include "Tests/AutomationEditorCommon.h" -#include "TestHelper.h" -#include "UnrealEdGlobals.h" - -#if UE_VERSION_OLDER_THAN(5, 5, 0) -BEGIN_DEFINE_SPEC(FMRUKSpec, TEXT("MR Utility Kit"), EAutomationTestFlags::ProductFilter | EAutomationTestFlags::ApplicationContextMask) -#else -BEGIN_DEFINE_SPEC(FMRUKSpec, TEXT("MR Utility Kit"), EAutomationTestFlags::ProductFilter | EAutomationTestFlags_ApplicationContextMask) -#endif -UMRUKSubsystem* ToolkitSubsystem; - -void SetupMRUKSubsystem(); -void LoadSceneFromJson(); -void TeardownMRUKSubsystem(); -using FAutomationTestBase::TestEqual; // Allows base class function overloads to be accessed -bool TestEqual(const TCHAR* What, const FVector2D Actual, const FVector2D Expected, float Tolerance = UE_KINDA_SMALL_NUMBER); -END_DEFINE_SPEC(FMRUKSpec) - -void FMRUKSpec::SetupMRUKSubsystem() -{ - BeforeEach([this]() { - // Load map and start play in editor - const auto ContentDir = FPaths::ProjectContentDir(); - FAutomationEditorCommonUtils::LoadMap(ContentDir + "/Common/Maps/TestLevel.umap"); - StartPIE(true); - }); - - BeforeEach(EAsyncExecution::ThreadPool, []() { - while (!GEditor->IsPlayingSessionInEditor()) - { - // Wait until play session starts - FGenericPlatformProcess::Yield(); - } - }); - - BeforeEach([this]() { - // Get a reference to the subsystem - const auto World = GEditor->GetPIEWorldContext()->World(); - const auto GameInstance = World->GetGameInstance(); - ToolkitSubsystem = GameInstance->GetSubsystem(); - }); -} - -void FMRUKSpec::LoadSceneFromJson() -{ - BeforeEach([this]() { - // Load scene from Json - ToolkitSubsystem->LoadSceneFromJsonString(ExampleRoomJson); - }); -} - -void FMRUKSpec::TeardownMRUKSubsystem() -{ - // Caution: Order of these statements is important - - AfterEach(EAsyncExecution::ThreadPool, []() { - while (GEditor->IsPlayingSessionInEditor()) - { - // Wait until play session ends - FGenericPlatformProcess::Yield(); - } - }); - - AfterEach([]() { - // Request end of play session - GUnrealEd->RequestEndPlayMap(); - }); -} - -// There is no TestEqual for FVector2D in FAutomationTestBase, so implement our own here -bool FMRUKSpec::TestEqual(const TCHAR* What, const FVector2D Actual, const FVector2D Expected, float Tolerance) -{ - if (!Expected.Equals(Actual, Tolerance)) - { - AddError(FString::Printf(TEXT("Expected '%s' to be %s, but it was %s within tolerance %f."), What, *Expected.ToString(), *Actual.ToString(), Tolerance), 1); - return false; - } - return true; -} - -void FMRUKSpec::Define() -{ - Describe(TEXT("Interior spawner"), [this] { - AMRUKAnchorActorSpawner* InteriorSpawner; - - SetupMRUKSubsystem(); - - BeforeEach([this, &InteriorSpawner]() { - const auto World = GEditor->GetPIEWorldContext()->World(); - FActorSpawnParameters Params{}; - InteriorSpawner = World->SpawnActor(Params); - - InteriorSpawner->SpawnGroups[FMRUKLabels::Couch].Actors.Push({ AMeshActor::StaticClass() }); - InteriorSpawner->SpawnGroups[FMRUKLabels::WindowFrame].Actors.Push({ AMeshActor::StaticClass() }); - }); - - LoadSceneFromJson(); - - It(TEXT("Spawns interior correct"), [this]() { - const auto World = GEditor->GetPIEWorldContext()->World(); - const auto Subsystem = World->GetGameInstance()->GetSubsystem(); - - const auto Room = Subsystem->GetCurrentRoom(); - if (!TestNotNull(TEXT("Current room is set"), Room)) - { - return; - } - - const auto WindowAnchor = Subsystem->GetCurrentRoom()->GetFirstAnchorByLabel(FMRUKLabels::WindowFrame); - if (!TestNotNull(TEXT("Window anchor is set"), WindowAnchor)) - { - return; - } - - TArray WindowChildActors; - WindowAnchor->GetAttachedActors(WindowChildActors); - if (!TestFalse(TEXT("Window has child actors"), WindowChildActors.IsEmpty())) - { - return; - } - - const auto WindowMeshActor = WindowChildActors[0]; - if (!TestNotNull(TEXT("Window mesh is set"), WindowMeshActor)) - { - return; - } - - constexpr double Tolerance = 0.01; - TestEqual(TEXT("Window mesh location"), WindowMeshActor->GetActorLocation(), FVector(86.993, 160.305, 27.147), Tolerance); - TestEqual(TEXT("Window mesh rotation"), WindowMeshActor->GetActorRotation(), FRotator(-0.000010, -168.053020, 0.012821), Tolerance); - TestEqual(TEXT("Window mesh scale"), WindowMeshActor->GetActorScale(), FVector(1.442, 1.154, 1.729), Tolerance); - - const auto CouchAnchor = Subsystem->GetCurrentRoom()->GetFirstAnchorByLabel("COUCH"); - if (!TestNotNull(TEXT("Couch anchor is set"), CouchAnchor)) - { - return; - } - - TArray CouchChildActors; - CouchAnchor->GetAttachedActors(CouchChildActors); - if (!TestFalse(TEXT("Couch has child actors"), CouchChildActors.IsEmpty())) - { - return; - } - - const auto CouchMeshActor = CouchChildActors[0]; - if (!TestNotNull(TEXT("Couch mesh is set"), CouchMeshActor)) - { - return; - } - - TestEqual(TEXT("Couch mesh location"), CouchMeshActor->GetActorLocation(), FVector(-145.872, 107.079, -101.393), Tolerance); - TestEqual(TEXT("Couch mesh rotation"), CouchMeshActor->GetActorRotation(), FRotator(0.0, -79.625847, 0.0), Tolerance); - TestEqual(TEXT("Couch mesh scale"), CouchMeshActor->GetActorScale(), FVector(0.902, 2.029, 0.566), Tolerance); - }); - - TeardownMRUKSubsystem(); - }); - - Describe(TEXT("Serialization"), [this] { - SetupMRUKSubsystem(); - - It(TEXT("Deserializes correctly"), [this]() { - ToolkitSubsystem->LoadSceneFromJsonString(ExampleRoomJson); - auto Rooms = ToolkitSubsystem->Rooms; - if (!TestEqual(TEXT("Number of rooms"), Rooms.Num(), 1)) - { - return; - } - auto Room = Rooms[0]; - if (!TestNotNull(TEXT("Room"), Room.Get())) - { - return; - } - TestEqual(TEXT("Number of anchors"), Room->AllAnchors.Num(), 23); - TestEqual(TEXT("Number of walls"), Room->WallAnchors.Num(), 8); - if (TestNotNull(TEXT("Floor anchor"), Room->FloorAnchor.Get())) - { - if (TestEqual(TEXT("Number of floor semantic classifications"), Room->FloorAnchor->SemanticClassifications.Num(), 1)) - { - TestEqual(TEXT("Wall semantic classification"), Room->FloorAnchor->SemanticClassifications[0], FMRUKLabels::Floor); - } - } - if (TestNotNull(TEXT("Ceiling anchor"), Room->CeilingAnchor.Get())) - { - if (TestEqual(TEXT("Number of ceiling semantic classifications"), Room->CeilingAnchor->SemanticClassifications.Num(), 1)) - { - TestEqual(TEXT("Wall semantic classification"), Room->CeilingAnchor->SemanticClassifications[0], FMRUKLabels::Ceiling); - } - } - for (auto Wall : Room->WallAnchors) - { - if (!TestNotNull(TEXT("Wall anchor"), Wall.Get())) - { - break; - } - if (!TestEqual(TEXT("Number of wall semantic classifications"), Wall->SemanticClassifications.Num(), 1)) - { - break; - } - TestEqual(TEXT("Wall semantic classification"), Wall->SemanticClassifications[0], FMRUKLabels::WallFace); - } - }); - - It(TEXT("Serializes correctly"), [this]() { - ToolkitSubsystem->LoadSceneFromJsonString(ExampleRoomJson); - auto Serialized = ToolkitSubsystem->SaveSceneToJsonString(); - TArray SerializedLines; - TArray SourceLines; - Serialized.ParseIntoArrayLines(SerializedLines, true); - FString(ExampleRoomJson).ParseIntoArrayLines(SourceLines, true); - if (TestEqual(TEXT("Number of lines"), SerializedLines.Num(), SourceLines.Num())) - { - // Go line by line in the JSON string and verify they match - for (int i = 0; i < SerializedLines.Num(); ++i) - { - // When serializing/deserializing Rotations it does some conversion between Euler - // rotation and quaternion. This results in some precision loss and in some cases - // the same rotation can be represented in different ways so the numbers are quite - // different even know they represent the same rotation so it is difficult to compare - // them textually. For now we will just ignore these lines. - if (SourceLines[i].Contains(TEXT("\"Rotation\""))) - { - continue; - } - TestEqual(TEXT("JSON line"), SerializedLines[i], SourceLines[i]); - } - } - }); - - TeardownMRUKSubsystem(); - }); - - Describe(TEXT("Room Loading"), [this]() { - SetupMRUKSubsystem(); - - It(TEXT("Load invalid string"), [this]() { - // Load scene from invalid JSON string - ToolkitSubsystem->LoadSceneFromJsonString(TEXT("[[[")); - TestEqual("Scene load status", ToolkitSubsystem->SceneLoadStatus, EMRUKInitStatus::Failed); - }); - - It(TEXT("Load empty room"), [this]() { - // Load scene from empty JSON string - ToolkitSubsystem->LoadSceneFromJsonString(TEXT(R"({"Rooms": []})")); - TestEqual("Scene load status", ToolkitSubsystem->SceneLoadStatus, EMRUKInitStatus::Failed); - }); - - TeardownMRUKSubsystem(); - }); - - Describe(TEXT("Update room"), [this]() { - SetupMRUKSubsystem(); - LoadSceneFromJson(); - - It(TEXT("Change nothing in room"), [this]() { - auto O = NewObject(); - - ToolkitSubsystem->OnRoomCreated.AddDynamic(O, &URoomAndAnchorObserver::OnRoomCreated); - ToolkitSubsystem->OnRoomUpdated.AddDynamic(O, &URoomAndAnchorObserver::OnRoomUpdated); - ToolkitSubsystem->OnRoomRemoved.AddDynamic(O, &URoomAndAnchorObserver::OnRoomRemoved); - - for (auto Room : ToolkitSubsystem->Rooms) - { - Room->OnAnchorCreated.AddDynamic(O, &URoomAndAnchorObserver::OnAnchorCreated); - Room->OnAnchorUpdated.AddDynamic(O, &URoomAndAnchorObserver::OnAnchorUpdated); - Room->OnAnchorRemoved.AddDynamic(O, &URoomAndAnchorObserver::OnAnchorRemoved); - } - - ToolkitSubsystem->LoadSceneFromJsonString(ExampleRoomJson); - - TestEqual(TEXT("No rooms created"), O->RoomsCreated.Num(), 0); - TestEqual(TEXT("One room updated"), O->RoomsUpdated.Num(), 1); - TestEqual(TEXT("No rooms removed"), O->RoomsRemoved.Num(), 0); - TestEqual(TEXT("No anchors created"), O->AnchorsCreated.Num(), 0); - TestEqual(TEXT("No anchors updated"), O->AnchorsUpdated.Num(), 0); - TestEqual(TEXT("No anchors removed"), O->AnchorsRemoved.Num(), 0); - - O->MarkAsGarbage(); - }); - - It(TEXT("Add, update and remove furniture in room"), [this]() { - auto O = NewObject(); - - ToolkitSubsystem->OnRoomCreated.AddDynamic(O, &URoomAndAnchorObserver::OnRoomCreated); - ToolkitSubsystem->OnRoomUpdated.AddDynamic(O, &URoomAndAnchorObserver::OnRoomUpdated); - ToolkitSubsystem->OnRoomRemoved.AddDynamic(O, &URoomAndAnchorObserver::OnRoomRemoved); - - for (auto Room : ToolkitSubsystem->Rooms) - { - Room->OnAnchorCreated.AddDynamic(O, &URoomAndAnchorObserver::OnAnchorCreated); - Room->OnAnchorUpdated.AddDynamic(O, &URoomAndAnchorObserver::OnAnchorUpdated); - Room->OnAnchorRemoved.AddDynamic(O, &URoomAndAnchorObserver::OnAnchorRemoved); - } - - ToolkitSubsystem->LoadSceneFromJsonString(ExampleRoomFurnitureAddedJson); - - TestEqual(TEXT("No rooms created"), O->RoomsCreated.Num(), 0); - TestEqual(TEXT("Rooms updated"), O->RoomsUpdated.Num(), 1); - TestEqual(TEXT("No rooms removed"), O->RoomsRemoved.Num(), 0); - TestEqual(TEXT("Anchors created"), O->AnchorsCreated.Num(), 2); - TestEqual(TEXT("No anchors updated"), O->AnchorsUpdated.Num(), 0); - TestEqual(TEXT("No anchors removed"), O->AnchorsRemoved.Num(), 0); - - O->Clear(); - - ToolkitSubsystem->LoadSceneFromJsonString(ExampleRoomMoreFurnitureAddedJson); - - TestEqual(TEXT("No rooms created"), O->RoomsCreated.Num(), 0); - TestEqual(TEXT("Rooms updated"), O->RoomsUpdated.Num(), 1); - TestEqual(TEXT("No rooms removed"), O->RoomsRemoved.Num(), 0); - TestEqual(TEXT("Anchors created"), O->AnchorsCreated.Num(), 1); - TestEqual(TEXT("No anchors updated"), O->AnchorsUpdated.Num(), 0); - TestEqual(TEXT("No anchors removed"), O->AnchorsRemoved.Num(), 0); - - O->Clear(); - - ToolkitSubsystem->LoadSceneFromJsonString(ExampleRoomFurnitureModifiedJson); - - TestEqual(TEXT("No rooms created"), O->RoomsCreated.Num(), 0); - TestEqual(TEXT("Rooms updated"), O->RoomsUpdated.Num(), 1); - TestEqual(TEXT("No rooms removed"), O->RoomsRemoved.Num(), 0); - TestEqual(TEXT("No anchors created"), O->AnchorsCreated.Num(), 0); - TestEqual(TEXT("Anchors updated"), O->AnchorsUpdated.Num(), 2); - TestEqual(TEXT("Anchors removed"), O->AnchorsRemoved.Num(), 1); - - O->Clear(); - - ToolkitSubsystem->LoadSceneFromJsonString(ExampleRoomJson); - - TestEqual(TEXT("No rooms created"), O->RoomsCreated.Num(), 0); - TestEqual(TEXT("Rooms updated"), O->RoomsUpdated.Num(), 1); - TestEqual(TEXT("No rooms removed"), O->RoomsRemoved.Num(), 0); - TestEqual(TEXT("No anchors created"), O->AnchorsCreated.Num(), 0); - TestEqual(TEXT("No anchors updated"), O->AnchorsUpdated.Num(), 0); - TestEqual(TEXT("Anchors removed"), O->AnchorsRemoved.Num(), 2); - - O->MarkAsGarbage(); - }); - - It(TEXT("Add and remove room"), [this]() { - auto O = NewObject(); - - ToolkitSubsystem->OnRoomCreated.AddDynamic(O, &URoomAndAnchorObserver::OnRoomCreated); - ToolkitSubsystem->OnRoomUpdated.AddDynamic(O, &URoomAndAnchorObserver::OnRoomUpdated); - ToolkitSubsystem->OnRoomRemoved.AddDynamic(O, &URoomAndAnchorObserver::OnRoomRemoved); - - ToolkitSubsystem->LoadSceneFromJsonString(ExampleOtherRoomJson); - - TestEqual(TEXT("Room created"), O->RoomsCreated.Num(), 1); - TestEqual(TEXT("No rooms updated"), O->RoomsUpdated.Num(), 0); - TestEqual(TEXT("Rooms removed"), O->RoomsRemoved.Num(), 1); - - O->MarkAsGarbage(); - }); - - TeardownMRUKSubsystem(); - }); - - Describe("Room", [this]() { - SetupMRUKSubsystem(); - LoadSceneFromJson(); - - It(TEXT("Is initialized"), [this]() { - TestEqual("Scene load status", ToolkitSubsystem->SceneLoadStatus, EMRUKInitStatus::Complete); - auto Room = ToolkitSubsystem->GetCurrentRoom(); - if (!TestNotNull(TEXT("Current room"), Room)) - { - return; - } - TestTrue("Room bounds valid", (bool)Room->RoomBounds.IsValid); - }); - - It(TEXT("Compute Centroid"), [this]() { - TestEqual("Scene load status", ToolkitSubsystem->SceneLoadStatus, EMRUKInitStatus::Complete); - const auto Room = ToolkitSubsystem->GetCurrentRoom(); - if (!TestNotNull(TEXT("Current room"), Room)) - { - return; - } - - const TArray> Inputs = { - { 0.0, FVector(-63.212, 41.209, -129.629) }, - { 0.5, FVector(-65.876, 40.507, 1.873) }, - { 1.0, FVector(-68.540, 39.804, 133.376) }, - }; - - for (int32 I = 0; I < Inputs.Num(); ++I) - { - const double Z = Inputs[I].Get<0>(); - const FVector& ExpectedCentroid = Inputs[I].Get<1>(); - - const FVector Centroid = Room->ComputeCentroid(Z); - constexpr double Tolerance = 0.001; - TestEqual(TEXT("Centroid matches"), Centroid, ExpectedCentroid, Tolerance); - } - }); - - It(TEXT("Does room have"), [this]() { - auto Room = ToolkitSubsystem->GetCurrentRoom(); - if (!TestNotNull(TEXT("Current room"), Room)) - { - return; - } - - TArray ContainedLabels = { FMRUKLabels::WallFace, FMRUKLabels::Ceiling, FMRUKLabels::Floor }; - TestTrue(TEXT("Room contains all labels"), Room->DoesRoomHave(ContainedLabels)); - - TArray PartlyContainedLabels = { FMRUKLabels::WallFace, "FOO", FMRUKLabels::Floor }; - TestFalse(TEXT("Room contains not all labels"), Room->DoesRoomHave(PartlyContainedLabels)); - - TArray EmptyLabels; - TestTrue(TEXT("Room contains empty labels"), Room->DoesRoomHave(EmptyLabels)); - }); - - It(TEXT("Get forward facing direction"), [this]() { - auto Room = ToolkitSubsystem->GetCurrentRoom(); - if (!TestNotNull(TEXT("Current room"), Room)) - { - return; - } - - const auto Couch = Room->GetFirstAnchorByLabel("COUCH"); - if (!TestNotNull(TEXT("Couch"), Room)) - { - return; - } - - const auto ActualFacingDirection = Couch->GetFacingDirection(); - constexpr double Tolerance = 0.001; - TestEqual(TEXT("Facing direction"), ActualFacingDirection, FVector{ 0.180, -0.984, 0.000 }, Tolerance); - }); - - It(TEXT("Get anchors by label"), [this] { - auto Room = ToolkitSubsystem->GetCurrentRoom(); - if (!TestNotNull(TEXT("Current room"), Room)) - { - return; - } - const TArray& Anchors = Room->GetAnchorsByLabel(TEXT("WALL_FACE")); - TestEqual(TEXT("All walls found"), Anchors.Num(), 8); - }); - - It(TEXT("Try get closest seat pose"), [this]() { - auto Room = ToolkitSubsystem->GetCurrentRoom(); - if (!TestNotNull(TEXT("Current room"), Room)) - { - return; - } - - const auto Couch = Room->GetFirstAnchorByLabel("COUCH"); - if (!TestNotNull(TEXT("Couch"), Room)) - { - return; - } - - struct TestData - { - FVector RayOrigin; - FVector RayDirection; - FVector ExpectedLocation; - FQuat ExpectedRotation; - FOculusXRUUID ExpectedAnchorUUID; - }; - - TArray AllTestData = { - { { -119.510, 51.224, -68.187 }, - { -0.474, 0.815, -0.332 }, - { -145.872, 107.079, -85.245 }, - { 0.0, 0.0, -0.640282977, 0.768139121 }, - { { 0xBE, 0xEE, 0x3C, 0xD7, 0x5B, 0xC0, 0x2A, 0xBF, 0x21, 0x9D, 0x99, 0x89, 0x48, 0x1A, 0xE7, 0x98 } } } - }; - - for (const auto& TestData : AllTestData) - { - FTransform ActualSeatTransform{}; - const auto Actor = Room->TryGetClosestSeatPose(TestData.RayOrigin, TestData.RayDirection, ActualSeatTransform); - if (!TestNotNull(TEXT("Actor is set"), Actor)) - { - return; - } - - constexpr double Tolerance = 0.001; - TestEqual(TEXT("Actor UUID is the same"), Actor->AnchorUUID, TestData.ExpectedAnchorUUID); - TestEqual(TEXT("Location is the same"), ActualSeatTransform.GetLocation(), TestData.ExpectedLocation, Tolerance); - TestTrue(TEXT("Rotation is the same"), ActualSeatTransform.GetRotation().Equals(TestData.ExpectedRotation, Tolerance)); - } - }); - - It(TEXT("Try get closest point in room"), [this]() { - auto Room = ToolkitSubsystem->GetCurrentRoom(); - if (!TestNotNull(TEXT("Current room"), Room)) - { - return; - } - - struct TestData - { - FVector WorldLocation; - TOptional ExpectedSurfaceLocation; - TOptional ExpectedAnchorUUID; - }; - - TArray AllTestData = { - { - { -157.383, -117.528, -50.459 }, - { { -155.038, -132.843, -50.459 } }, - { { { 0xB3, 0x69, 0xDA, 0xC9, 0x91, 0x3F, 0x46, 0x53, 0xCF, 0x00, 0x06, 0xD2, 0x92, 0xB4, 0x7E, 0x67 } } }, - }, - { - { 70.723, 34.300, -18.577 }, - { { 80.085, 36.095, -18.577 } }, - { { { 0x4F, 0x3D, 0x50, 0x69, 0x41, 0xFC, 0xDF, 0x2C, 0xDE, 0x52, 0x9B, 0x77, 0x8F, 0x7E, 0x2C, 0xA0 } } }, - }, - { - { -6.787, 178.944, -15.669 }, - { { -6.787, 178.944, -25.322 } }, - { { { 0x39, 0x02, 0x15, 0x4E, 0x70, 0x0E, 0x7D, 0xFC, 0xEF, 0xCD, 0xD3, 0x1C, 0x7C, 0xEE, 0xA2, 0x1D } } }, - }, - }; - - FMRUKLabelFilter LabelFilter; - LabelFilter.ExcludedLabels = { FMRUKLabels::Ceiling, FMRUKLabels::Floor }; - - for (const auto& TestData : AllTestData) - { - FVector ActualSurfaceLocation{}; - const auto ActualAnchor = ToolkitSubsystem->TryGetClosestSurfacePosition(TestData.WorldLocation, ActualSurfaceLocation, LabelFilter); - if (TestData.ExpectedAnchorUUID.IsSet()) - { - if (!TestNotNull(TEXT("Anchor is set"), ActualAnchor)) - { - continue; - } - TestEqual(TEXT("Anchor Uuid"), ActualAnchor->AnchorUUID, TestData.ExpectedAnchorUUID.GetValue()); - } - else - { - TestNull(TEXT("Anchor not set"), ActualAnchor); - } - if (TestData.ExpectedSurfaceLocation.IsSet()) - { - constexpr double Tolerance = 0.01; - TestEqual(TEXT("Surface location"), ActualSurfaceLocation, TestData.ExpectedSurfaceLocation.GetValue(), Tolerance); - } - } - }); - - It(TEXT("Get best pose from raycast"), [this]() { - auto Room = ToolkitSubsystem->GetCurrentRoom(); - if (!TestNotNull(TEXT("Current room"), Room)) - { - return; - } - - struct TestData - { - FVector RayOrigin; - FVector RayDirection; - double MaxDist; - FVector ExpectedLocation; - FQuat ExpectedRotation; - TOptional ExpectedAnchorUUID; - EMRUKPositioningMethod PositioningMethod; - }; - - TArray AllTestData = { - // Desk - { - { -15.428, 52.817, 36.223 }, - { 0.519, -0.143, -0.842 }, - 0.0, - { 19.154, 34.502, -51.185 }, - { 0.0, 0.0, -0.996050404, 0.088789598 }, - { { { 0x1E, 0x57, 0x8C, 0x3E, 0x9E, 0x7B, 0x49, 0x5E, 0x9F, 0x8B, 0xB0, 0x0A, 0x37, 0x22, 0xB6, 0x19 } } }, - EMRUKPositioningMethod::Edge }, - // Desk - { - { 0.0, 0.0, 0.0 }, - { 1.0, 0.0, 0.0 }, - 0.0, - { 121.404, 0.0, 0.0 }, - { 0.000000072, 0.000000008, -0.994469644, 0.105024412 }, - { { { 0x61, 0x34, 0x5A, 0x4C, 0xA1, 0xA0, 0x0C, 0x5C, 0x18, 0xC7, 0xAC, 0x34, 0x23, 0x37, 0x69, 0x01 } } }, - EMRUKPositioningMethod::Default }, - // Desk - { - { 0.0, 0.0, 0.0 }, - { 0.202, -0.725, -0.659 }, - 0.0, - { 21.056, -75.154, -52.927 }, - { 0.0, 0.0, 0.767014414, 0.641629869 }, - { { { 0xB8, 0x82, 0x3B, 0xA2, 0x41, 0xD6, 0x9E, 0x1B, 0x5A, 0x3E, 0x71, 0x6F, 0xDC, 0x16, 0xC0, 0x35 } } }, - EMRUKPositioningMethod::Center }, - // Wall - { - { 7.062, 83.282, -12.268 }, - { 0.989, 0.146, 0.021 }, - 0.0, - { 100.662, 97.104, -10.286 }, - { 0.000000072, 0.000000008, -0.994469644, 0.105024412 }, - { { { 0x61, 0x34, 0x5A, 0x4C, 0xA1, 0xA0, 0x0C, 0x5C, 0x18, 0xC7, 0xAC, 0x34, 0x23, 0x37, 0x69, 0x01 } } }, - EMRUKPositioningMethod::Default }, - // Floor - { - { -55.000, 14.315, -64.814 }, - { 0.054, 0.039, -0.998 }, - 0.0, - { -51.499, 16.821, -129.629 }, - { -0.000000000, 0.000000000, -0.952129375, 0.305695361 }, - { { { 0x44, 0x08, 0xBC, 0xA3, 0x0B, 0x3E, 0xA7, 0x79, 0x99, 0x2A, 0x41, 0x33, 0x9E, 0x9B, 0xD1, 0x5E } } }, - EMRUKPositioningMethod::Default }, - }; - - for (const auto& TestData : AllTestData) - { - FTransform ActualOutPose{}; - const auto Actor = Room->GetBestPoseFromRaycast(TestData.RayOrigin, TestData.RayDirection, TestData.MaxDist, {}, ActualOutPose, TestData.PositioningMethod); - if (!TestData.ExpectedAnchorUUID.IsSet()) - { - TestNull(TEXT("Actor is null"), Actor); - } - else - { - if (!TestNotNull(TEXT("Actor is set"), Actor)) - { - return; - } - constexpr double Tolerance = 0.15; - TestEqual(TEXT("Actor UUID is the same"), Actor->AnchorUUID, TestData.ExpectedAnchorUUID.GetValue()); - TestEqual(TEXT("Location is the same"), ActualOutPose.GetLocation(), TestData.ExpectedLocation, Tolerance); - TestTrue(TEXT("Rotation is the same"), ActualOutPose.GetRotation().Equals(TestData.ExpectedRotation, Tolerance)); - } - } - }); - - It(TEXT("Get key wall"), [this]() { - auto Room = ToolkitSubsystem->GetCurrentRoom(); - if (!TestNotNull(TEXT("Current room"), Room)) - { - return; - } - - const auto KeyWallAnchor = Room->GetKeyWall(); - if (!TestNotNull(TEXT("Key wall anchor is not null"), KeyWallAnchor)) - { - return; - } - TestEqual(TEXT("Key wall anchor UUID is correct"), KeyWallAnchor->AnchorUUID, FOculusXRUUID({ 0x93, 0x4C, 0xE7, 0x5D, 0x63, 0xF0, 0x85, 0x6A, 0x94, 0x38, 0xDA, 0xB3, 0xAD, 0xA9, 0x54, 0x09 })); - }); - - It(TEXT("Get largest surface"), [this]() { - auto Room = ToolkitSubsystem->GetCurrentRoom(); - if (!TestNotNull(TEXT("Current room"), Room)) - { - return; - } - - auto Anchor = Room->GetLargestSurface(FMRUKLabels::WallArt); - if (!TestNotNull(TEXT("Anchor is not null"), Anchor)) - { - return; - } - TestEqual(TEXT("Anchor UUID is correct"), Anchor->AnchorUUID, FOculusXRUUID({ 0xDE, 0x8D, 0xDD, 0xD9, 0x90, 0xAD, 0x5F, 0xCB, 0x8E, 0x7E, 0x23, 0x7E, 0x93, 0x8C, 0xB0, 0xD3 })); - - Anchor = Room->GetLargestSurface(FMRUKLabels::Screen); - if (!TestNotNull(TEXT("Anchor is not null"), Anchor)) - { - return; - } - TestEqual(TEXT("Anchor UUID is correct"), Anchor->AnchorUUID, FOculusXRUUID({ 0x4F, 0x3D, 0x50, 0x69, 0x41, 0xFC, 0xDF, 0x2C, 0xDE, 0x52, 0x9B, 0x77, 0x8F, 0x7E, 0x2C, 0xA0 })); - }); - - It(TEXT("Point inside room"), [this]() { - auto Room = ToolkitSubsystem->GetCurrentRoom(); - if (!TestNotNull(TEXT("Current room"), Room)) - { - return; - } - TArray PointsInRoom = { - { 95.046, -12.727, 74.243 }, - { -135.569, 88.847, -64.303 }, - { -51.55, 69.412, 81.61 }, - { 38.378, -21.614, -34.768 }, - { -241.943, 167.824, 55.476 }, - { 26.605, -72.533, -39.321 }, - { -234.718, 147.491, 49.483 }, - { -114.777, -32.589, -86.116 }, - { -244.759, 113.77, -88.077 }, - { 38.533, 24.966, -112.239 }, - { 94.798, 22.833, 42.658 }, - { -208.202, 86.037, -4.801 }, - { -111.049, 140.856, -15.237 }, - { 15.575, 70.207, 100.421 }, - { -8.435, 186.92, -33.971 }, - { 83.304, -1.605, 44.165 }, - { -142.314, 88.862, -48.251 }, - { 82.577, -21.908, -80.743 }, - { -238.493, 105.266, -40.407 }, - { -14.607, 2.971, -12.6 }, - { -179.35, 191.319, 27.259 }, - { -86.745, 75.297, 22.939 }, - { -200.003, 150.154, 63.187 }, - { 69.257, 137.913, -79.824 }, - { -217.763, -15.493, 40.155 }, - { -175.591, 187.332, -77.132 }, - }; - TArray PointsOutsideRoom = { - { -245.656, 252.788, 115.908 }, - { 125.832, 197.925, -136.036 }, - { -257.614, 152.096, 152.655 }, - { -249.694, -184.363, -59.927 }, - { 153.152, -12.065, 122.478 }, - { -61.405, 91.172, 170.071 }, - { -85.013, 214.58, 165.639 }, - { 97.861, 122.995, -74.949 }, - { -67.454, -164.751, 25.332 }, - { -307.367, 117.743, 58.999 }, - { -16.464, -96.471, -146.66 }, - { -163.323, 258.776, 28.556 }, - { -195.161, 206.385, 85.72 }, - { -216.943, 235.398, 126.688 }, - { -288.013, 219.714, -48.284 }, - { -222.667, -128.603, -173.879 }, - { 7.732, 271.929, -105.47 }, - { 68.097, 168.956, -145.375 }, - { 55.597, -87.261, 141.444 }, - { 99.099, -97.089, 0.583 }, - { -228.267, -126.999, -88.321 }, - { 181.973, -23.026, 129.291 }, - { -107.073, -43.962, -158.281 }, - { 172.614, 114.712, -128.513 }, - { 161.491, 217.493, 140.58 }, - { 154.978, 216.728, -52.095 }, - { -280.619, 16.374, 38.726 }, - { -195.068, -163.147, -70.396 }, - { 156.432, 181.094, -58.986 }, - { 67.725, -186.069, -149.307 }, - { -256.253, 95.056, -20.023 }, - { 149.64, 88.759, -59.373 }, - { 25.693, 122.745, 148.911 }, - { -62.503, -143.933, -103.133 }, - { 121.933, 51.698, 168.209 }, - { 72.676, 20.743, -163.189 }, - { -284.95, 41.311, 111.688 }, - { 4.034, 105.002, -160.053 }, - { 6.185, -177.904, -154.869 }, - { 21.763, 277.166, 179.376 }, - { -290.38, -65.427, 134.753 }, - { 161.042, 119.184, -29.429 }, - { -292.113, -180.332, 161.352 }, - { -79.784, 192.026, 119.786 }, - { -295.718, 6.046, 135.894 }, - { -273.905, 223.437, -26.792 }, - { 177.765, 139.767, -13.221 }, - { 133.273, 5.384, -18.993 }, - { -199.152, -169.606, -87.036 }, - { 30.782, -84.009, -134.418 }, - { -73.394, -175.653, 54.978 }, - { -44.264, 279.844, -118.853 }, - { 155.457, 66.602, -94.68 }, - { 164.383, 267.044, -158.237 }, - { -25.081, 253.362, -175.43 }, - { -312.178, -141.447, 154.339 }, - { -82.336, -10.668, -142.827 }, - { -312.781, 62.6, -70.972 }, - { -68.104, 245.8, -18.926 }, - { -116.402, 241.062, -10.163 }, - { 123.96, 47.02, -20.643 }, - { 181.741, -122.821, -64.27 }, - { -68.568, 288.024, 19.715 }, - { -285.368, 110.666, -93.628 }, - { 43.468, -93.616, 164.687 }, - { 171.453, 103.427, 125.081 }, - { -204.397, -179.14, 174.834 }, - { 49.192, 14.358, -143.414 }, - { -136.188, 15.623, 133.944 }, - { 77.812, 216.154, -108.196 }, - { 166.967, 0.175, 66.023 }, - { -282.119, 168.515, 86.119 }, - { 80.612, -53.231, 175.787 }, - { 97.66, -146.566, 35.457 } - }; - for (auto Point : PointsInRoom) - { - TestTrue("Point in room", Room->IsPositionInRoom(Point, true)); - } - for (auto Point : PointsOutsideRoom) - { - TestFalse("Point outside room", Room->IsPositionInRoom(Point, true)); - } - }); - - It(TEXT("Generate random position in room"), [this]() { - auto Room = ToolkitSubsystem->GetCurrentRoom(); - if (!TestNotNull(TEXT("Current room"), Room)) - { - return; - } - // Generate 100 random positions in the room and verify that they are all indeed inside the room and not in scene volumes - // using different minimum distances to surfaces - FRandomStream RandomStream; - TArray MinDistanceToSurfaces = { 0.0f, 30.0f, 100.0f }; - for (float MinDistanceToSurface : MinDistanceToSurfaces) - { - AddInfo(FString::Printf(TEXT("Minimum distance to surface: %f"), MinDistanceToSurface)); - for (int i = 0; i < 100; ++i) - { - FVector Position; - if (TestTrue(TEXT("Generated position successfully"), Room->GenerateRandomPositionInRoomFromStream(Position, RandomStream, MinDistanceToSurface, true))) - { - TestTrue(TEXT("Position is in room"), Room->IsPositionInRoom(Position)); - TestNull(TEXT("Position is not in a scene volume"), Room->IsPositionInSceneVolume(Position, true, MinDistanceToSurface)); - if (MinDistanceToSurface > 0.0f) - { - FVector SurfacePosition; - double SurfaceDistance; - TestNull(TEXT("Position is not within min distance of another surface"), Room->TryGetClosestSurfacePosition(Position, SurfacePosition, SurfaceDistance, {}, MinDistanceToSurface)); - } - } - } - } - - // If the MinDistanceToSurface is too large such that there are no valid points, then it should fail to generate a random position in the room - constexpr float LargeMinDistance = 300.0f; - FVector Position; - TestFalse(TEXT("No valid positions"), Room->GenerateRandomPositionInRoomFromStream(Position, RandomStream, LargeMinDistance)); - }); - - It(TEXT("Ray cast"), [this]() { - auto Room = ToolkitSubsystem->GetCurrentRoom(); - if (!TestNotNull(TEXT("Current room"), Room)) - { - return; - } - struct FRecordedRaycast - { - // Input - FVector Position; - FVector Direction; - float MaxDist; - EMRUKComponentType ComponentTypes; - // Output - FString Label; - FVector HitPosition; - FVector HitNormal; - float HitDistance; - }; - TArray RecordedRaycasts = { - // Hits - { { 37.393, -14.003, -24.613 }, { 0.990, -0.048, -0.129 }, 0.0f, EMRUKComponentType::All, FMRUKLabels::Screen, { 84.823, -16.322, -30.780 }, { -0.995, 0.100, 0.000 }, 47.885 }, - { { 37.393, -14.003, -24.613 }, { 0.990, -0.048, -0.129 }, 50.0f, EMRUKComponentType::All, FMRUKLabels::Screen, { 84.823, -16.322, -30.780 }, { -0.995, 0.100, 0.000 }, 47.885 }, - { { -7.405, 27.794, -12.428 }, { 0.844, 0.003, -0.536 }, 0.0f, EMRUKComponentType::All, FMRUKLabels::Table, { 53.665, 28.008, -51.185 }, { 0.000, 0.000, 1.000 }, 72.33 }, - { { -22.253, 36.487, 1.660 }, { 0.211, 0.054, -0.976 }, 0.0f, EMRUKComponentType::All, FMRUKLabels::Floor, { 6.171, 43.785, -129.629 }, { 0.000, -0.000, 1.000 }, 134.529 }, - { { -22.253, 36.487, 1.660 }, { 0.432, 0.270, 0.861 }, 0.0f, EMRUKComponentType::All, FMRUKLabels::Ceiling, { 43.807, 77.766, 133.376 }, { 0.000, -0.000, -1.000 }, 153.026 }, - { { -77.859, 204.433, -26.619 }, { 0.110, -0.534, -0.839 }, 0.0f, EMRUKComponentType::All, FMRUKLabels::Couch, { -70.131, 166.787, -85.797 }, { -0.180, 0.984, -0.000 }, 70.561 }, - { { -127.986, 126.202, -94.119 }, { 0.606, -0.593, -0.530 }, 0.0f, EMRUKComponentType::All, FMRUKLabels::Floor, { -87.385, 86.442, -129.629 }, { 0.000, -0.000, 1.000 }, 67.009 }, - { { -138.228, 108.241, -74.798 }, { -0.950, -0.240, -0.201 }, 0.0f, EMRUKComponentType::All, FMRUKLabels::Couch, { -187.570, 95.756, -85.245 }, { -0.000, 0.000, 1.000 }, 51.958 }, - { { -298.759, 101.686, -76.521 }, { 0.968, -0.146, -0.204 }, 0.0f, EMRUKComponentType::All, FMRUKLabels::Couch, { -246.590, 93.797, -87.543 }, { -0.984, -0.180, -0.000 }, 53.901 }, - { { -196.813, 0.663, -71.069 }, { 0.250, 0.908, -0.335 }, 0.0f, EMRUKComponentType::All, FMRUKLabels::Couch, { -181.948, 54.632, -91.002 }, { 0.180, -0.984, 0.000 }, 59.422 }, - { { -115.905, 47.604, -6.411 }, { -0.199, 0.488, -0.850 }, 0.0f, EMRUKComponentType::All, FMRUKLabels::Couch, { -131.525, 85.882, -73.090 }, { -0.000, 0.000, 1.000 }, 78.456 }, - { { -127.926, 109.603, 59.458 }, { -0.274, 0.955, -0.115 }, 0.0f, EMRUKComponentType::All, FMRUKLabels::WallArt, { -144.809, 168.482, 52.371 }, { 0.136, -0.991, -0.000 }, 61.66 }, - { { 17.710, 137.262, 55.542 }, { 0.902, 0.409, -0.139 }, 0.0f, EMRUKComponentType::All, FMRUKLabels::WindowFrame, { 85.375, 167.955, 45.100 }, { -0.978, -0.207, -0.000 }, 75.031 }, - { { -115.905, 47.604, -6.411 }, { -0.199, 0.488, -0.850 }, 0.0f, EMRUKComponentType::Plane, FMRUKLabels::Couch, { -134.361, 92.864, -85.245 }, { -0.000, 0.000, 1.000 }, 92.758 }, - { { -115.905, 47.604, -6.411 }, { -0.199, 0.488, -0.850 }, 0.0f, EMRUKComponentType::Volume, FMRUKLabels::Couch, { -131.525, 85.882, -73.090 }, { -0.000, 0.000, 1.000 }, 78.456 }, - // Misses - { { -77.859, 204.433, -26.619 }, { 0.000, 0.000, -1.000 }, 0.0f, EMRUKComponentType::All, TEXT(""), { 0.0f, 0.0f, 0.0f }, { 0.0f, 0.0f, 0.0f }, 0.0f }, - { { 37.393, -14.003, -24.613 }, { 0.990, -0.048, -0.129 }, 40.0f, EMRUKComponentType::All, TEXT(""), { 0.0f, 0.0f, 0.0f }, { 0.0f, 0.0f, 0.0f }, 0.0f }, - { { -7.405, 27.794, -12.428 }, { 0.844, 0.003, -0.536 }, 70.0f, EMRUKComponentType::All, TEXT(""), { 0.0f, 0.0f, 0.0f }, { 0.0f, 0.0f, 0.0f }, 0.0f }, - }; - for (const auto& Recorded : RecordedRaycasts) - { - FMRUKHit Result; - auto Anchor = Room->Raycast(Recorded.Position, Recorded.Direction, Recorded.MaxDist, { .ComponentTypes = static_cast(Recorded.ComponentTypes) }, Result); - // This is a fairly generous tolerance, but necessary because ray pos and direction were only recorded - // up to 3 decimal places and small changes in direction can result in fairly large differences in hit position - // over long distances. - constexpr float Tolerance = 0.1; - if (Anchor == nullptr) - { - TestTrue(TEXT("No hit"), Recorded.Label.IsEmpty()); - } - else - { - TestEqual(TEXT("Hit position"), Result.HitPosition, Recorded.HitPosition, Tolerance); - TestEqual(TEXT("Hit normal"), Result.HitNormal, Recorded.HitNormal, Tolerance); - TestEqual(TEXT("Hit distance"), Result.HitDistance, Recorded.HitDistance, Tolerance); - if (TestTrue(TEXT("Has semantic classification"), Anchor->SemanticClassifications.Num() > 0)) - { - TestEqual(TEXT("Hit label"), Anchor->SemanticClassifications[0], Recorded.Label); - } - } - } - }); - - It(TEXT("Ray cast all"), [this]() { - auto Room = ToolkitSubsystem->GetCurrentRoom(); - if (!TestNotNull(TEXT("Current room"), Room)) - { - return; - } - struct FRecordedRaycastHit - { - FString Label; - FVector HitPosition; - FVector HitNormal; - float HitDistance; - }; - struct FRecordedRaycastAll - { - // Input - FVector Position; - FVector Direction; - float MaxDist; - EMRUKComponentType ComponentTypes; - // Output - TArray Hits; - }; - TArray RecordedRaycasts = { - { { 83.193, 58.82, 11.548 }, { 0.044, -0.904, -0.426 }, 0.0f, EMRUKComponentType::All, { - { FMRUKLabels::WallFace, { 90.736, -95.398, -61.109 }, { -0.151, 0.989, 0 }, 170.643 }, - { FMRUKLabels::Table, { 89.705, -74.333, -51.185 }, { 0, 0, 1 }, 147.335 }, - { FMRUKLabels::Table, { 89.705, -74.333, -51.185 }, { 0, 0, 1 }, 147.335 }, - { FMRUKLabels::Screen, { 84.702, 27.972, -2.986 }, { 0, -0, 1 }, 34.133 }, - { FMRUKLabels::Screen, { 86.2, -2.658, -17.416 }, { -0.995, 0.1, 0 }, 68.026 }, - } }, - { { 83.193, 58.82, 11.548 }, { 0.044, -0.904, -0.426 }, 0.0f, EMRUKComponentType::Plane, { - { FMRUKLabels::WallFace, { 90.736, -95.398, -61.109 }, { -0.151, 0.989, 0 }, 170.643 }, - { FMRUKLabels::Table, { 89.705, -74.333, -51.185 }, { 0, 0, 1 }, 147.335 }, - } }, - { { 83.193, 58.82, 11.548 }, { 0.044, -0.904, -0.426 }, 0.0f, EMRUKComponentType::Volume, { - { FMRUKLabels::Table, { 89.705, -74.333, -51.185 }, { 0, 0, 1 }, 147.335 }, - { FMRUKLabels::Screen, { 84.702, 27.972, -2.986 }, { 0, -0, 1 }, 34.133 }, - { FMRUKLabels::Screen, { 86.2, -2.658, -17.416 }, { -0.995, 0.1, 0 }, 68.026 }, - } } - - }; - for (const auto& Recorded : RecordedRaycasts) - { - TArray Hits; - TArray Anchors; - Room->RaycastAll(Recorded.Position, Recorded.Direction, Recorded.MaxDist, { .ComponentTypes = static_cast(Recorded.ComponentTypes) }, Hits, Anchors); - // This is a fairly generous tolerance, but necessary because ray pos and direction were only recorded - // up to 3 decimal places and small changes in direction can result in fairly large differences in hit position - // over long distances. - constexpr float Tolerance = 0.2; - if (!TestEqual("Number of hits", Hits.Num(), Recorded.Hits.Num())) - { - continue; - } - if (!TestEqual("Number of anchors", Anchors.Num(), Recorded.Hits.Num())) - { - continue; - } - for (int i = 0; i < Recorded.Hits.Num(); ++i) - { - TestEqual(TEXT("Hit position"), Hits[i].HitPosition, Recorded.Hits[i].HitPosition, Tolerance); - TestEqual(TEXT("Hit normal"), Hits[i].HitNormal, Recorded.Hits[i].HitNormal, Tolerance); - TestEqual(TEXT("Hit distance"), Hits[i].HitDistance, Recorded.Hits[i].HitDistance, Tolerance); - if (TestTrue(TEXT("Has semantic classification"), Anchors[i]->SemanticClassifications.Num() > 0)) - { - TestEqual(TEXT("Hit label"), Anchors[i]->SemanticClassifications[0], Recorded.Hits[i].Label); - } - } - } - }); - - It(TEXT("Parent/child relationship"), [this]() { - auto Room = ToolkitSubsystem->GetCurrentRoom(); - if (!TestNotNull(TEXT("Current room"), Room)) - { - return; - } - // Verify that child/parent relationship is consistent - for (const auto& Anchor : Room->AllAnchors) - { - for (const auto& ChildAnchor : Anchor->ChildAnchors) - { - TestEqual(TEXT("Parent Anchor"), ChildAnchor->ParentAnchor, Anchor); - } - if (Anchor->ParentAnchor) - { - TestTrue(TEXT("Parent contains anchor in child list"), Anchor->ParentAnchor->ChildAnchors.Contains(Anchor)); - } - } - TestEqual(TEXT("Floor has the right number of children"), Room->FloorAnchor->ChildAnchors.Num(), 6); - for (const auto& Anchor : Room->AllAnchors) - { - if (Anchor->SemanticClassifications.IsEmpty()) - { - continue; - } - if (Anchor->SemanticClassifications[0] == FMRUKLabels::Screen) - { - if (TestNotNull(TEXT("Screen has parent"), Anchor->ParentAnchor.Get())) - { - if (TestTrue(TEXT("Screen parent has label"), !Anchor->ParentAnchor->SemanticClassifications.IsEmpty())) - { - TestEqual(TEXT("Screen is on table"), Anchor->ParentAnchor->SemanticClassifications[0], FMRUKLabels::Table); - } - } - } - if (Anchor->SemanticClassifications[0] == FMRUKLabels::Table) - { - TestEqual(TEXT("Table is on the floor"), Anchor->ParentAnchor, Room->FloorAnchor); - } - if (Anchor->SemanticClassifications[0] == FMRUKLabels::Storage) - { - TestEqual(TEXT("Storage is on the floor"), Anchor->ParentAnchor, Room->FloorAnchor); - } - if (Anchor->SemanticClassifications[0] == FMRUKLabels::Couch) - { - TestEqual(TEXT("Couch is on the floor"), Anchor->ParentAnchor, Room->FloorAnchor); - } - if (Anchor->SemanticClassifications[0] == FMRUKLabels::DoorFrame) - { - TestTrue(TEXT("Door frame is on wall"), Room->WallAnchors.Contains(Anchor->ParentAnchor)); - } - if (Anchor->SemanticClassifications[0] == FMRUKLabels::WindowFrame) - { - TestTrue(TEXT("Window frame is on wall"), Room->WallAnchors.Contains(Anchor->ParentAnchor)); - } - if (Anchor->SemanticClassifications[0] == FMRUKLabels::WallArt) - { - TestTrue(TEXT("Wall art is on wall"), Room->WallAnchors.Contains(Anchor->ParentAnchor)); - } - } - }); - - TeardownMRUKSubsystem(); - }); - - Describe(TEXT("Toolkit"), [this] { - SetupMRUKSubsystem(); - LoadSceneFromJson(); - - It(TEXT("IsPositionInSceneVolume"), [this]() { - struct TestData - { - FVector WorldPosition; - bool TestVerticalBounds; - double Tolerance; - TOptional ExpectedUUID; - }; - - TArray AllTestData = { - { { 79.121, -20.291, -70.864 }, - true, - 0.0, - { { { 0x1E, 0x57, 0x8C, 0x3E, 0x9E, 0x7B, 0x49, 0x5E, 0x9F, 0x8B, 0xB0, 0x0A, 0x37, 0x22, 0xB6, 0x19 } } } }, - { { 39.355, 0.683, -51.092 }, - true, - 1.0, - { { { 0x1E, 0x57, 0x8C, 0x3E, 0x9E, 0x7B, 0x49, 0x5E, 0x9F, 0x8B, 0xB0, 0x0A, 0x37, 0x22, 0xB6, 0x19 } } } }, - { { 66.716, 4.072, -15.717 }, - false, - 0.0, - { { { 0x1E, 0x57, 0x8C, 0x3E, 0x9E, 0x7B, 0x49, 0x5E, 0x9F, 0x8B, 0xB0, 0x0A, 0x37, 0x22, 0xB6, 0x19 } } } }, - { { 16.802, 23.632, -5.421 }, - false, - 0.0, - {} }, - }; - - for (const auto& TestData : AllTestData) - { - const auto ActualActor = ToolkitSubsystem->IsPositionInSceneVolume(TestData.WorldPosition, TestData.TestVerticalBounds, TestData.Tolerance); - if (TestData.ExpectedUUID.IsSet()) - { - TestNotNull(TEXT("Actual actor set"), ActualActor); - TestEqual(TEXT("Actual actor UUID"), ActualActor->AnchorUUID, TestData.ExpectedUUID.GetValue()); - } - else - { - TestNull(TEXT("Actual actor not set"), ActualActor); - } - } - }); - - TeardownMRUKSubsystem(); - }); - - Describe(TEXT("Anchor"), [this] { - SetupMRUKSubsystem(); - LoadSceneFromJson(); - - It(TEXT("HasLabel"), [this]() { - const auto Room = ToolkitSubsystem->GetCurrentRoom(); - if (!TestNotNull(TEXT("Current room"), Room)) - { - return; - } - - if (!TestTrue(TEXT("Wall anchors available"), Room->WallAnchors.Num() > 0)) - { - return; - } - for (const auto& WallAnchor : Room->WallAnchors) - { - TestTrue(TEXT("Has WALL_FACE label"), WallAnchor->HasLabel(FMRUKLabels::WallFace)); - TestFalse(TEXT("Has not FLOOR label"), WallAnchor->HasLabel(FMRUKLabels::Floor)); - TestFalse(TEXT("Has not CEILING label"), WallAnchor->HasLabel(FMRUKLabels::Ceiling)); - } - - if (!TestNotNull(TEXT("Floor anchor"), Room->FloorAnchor.Get())) - { - return; - } - TestTrue(TEXT("Has FLOOR label"), Room->FloorAnchor->HasLabel(FMRUKLabels::Floor)); - TestFalse(TEXT("Has not WALL_FACE label"), Room->FloorAnchor->HasLabel(FMRUKLabels::WallFace)); - TestFalse(TEXT("Has not CEILING label"), Room->FloorAnchor->HasLabel(FMRUKLabels::Ceiling)); - - if (!TestNotNull(TEXT("Ceiling anchor"), Room->CeilingAnchor.Get())) - { - return; - } - TestTrue(TEXT("Has CEILING label"), Room->CeilingAnchor->HasLabel(FMRUKLabels::Ceiling)); - TestFalse(TEXT("Has not FLOOR label"), Room->CeilingAnchor->HasLabel(FMRUKLabels::Floor)); - TestFalse(TEXT("Has not WALL_FACE label"), Room->CeilingAnchor->HasLabel(FMRUKLabels::WallFace)); - }); - - It(TEXT("ProceduralMesh"), [this]() { - const auto Room = ToolkitSubsystem->GetCurrentRoom(); - if (!TestNotNull(TEXT("Current room"), Room)) - { - return; - } - - if (!TestNotNull(TEXT("Floor anchor"), Room->FloorAnchor.Get())) - { - return; - } - Room->FloorAnchor->AttachProceduralMesh(); - auto ProceduralMeshComponent = Room->FloorAnchor->ProceduralMeshComponent; - if (!TestNotNull(TEXT("Has Procedural Mesh Component"), ProceduralMeshComponent.Get())) - { - return; - } - auto Section = ProceduralMeshComponent->GetProcMeshSection(0); - if (!TestNotNull(TEXT("Mesh Section"), Section)) - { - return; - } - TestEqual(TEXT("Floor vertices equal to number of walls"), Section->ProcVertexBuffer.Num(), Room->WallAnchors.Num()); - TestEqual(TEXT("Floor triangles equal to number of walls - 2"), Section->ProcIndexBuffer.Num(), 3 * (Room->WallAnchors.Num() - 2)); - - // NOTE: There are a number of valid ways to triangulate the mesh, and it doesn't need to be exactly like this but - // this will at least highlight if we unexpectedly caused the mesh generation to change its output. - TArray ExpectedIndexBuffer = { 6, 7, 0, 0, 1, 2, 4, 5, 6, 0, 2, 3, 4, 6, 0, 0, 3, 4 }; - if (TestEqual(TEXT("Triangle index buffer size"), Section->ProcIndexBuffer.Num(), ExpectedIndexBuffer.Num())) - { - for (int i = 0; i < ExpectedIndexBuffer.Num(); i++) - { - TestEqual(TEXT("Floor triangle index buffer"), Section->ProcIndexBuffer[i], ExpectedIndexBuffer[i]); - } - } - - TArray WallTextureCoordinateModes{ - { EMRUKCoordModeU::Stretch, EMRUKCoordModeV::MaintainAspectRatio }, - { EMRUKCoordModeU::MetricSeamless, EMRUKCoordModeV::MaintainAspectRatio }, - { EMRUKCoordModeU::MaintainAspectRatio, EMRUKCoordModeV::Stretch }, - { EMRUKCoordModeU::MaintainAspectRatioSeamless, EMRUKCoordModeV::Metric }, - }; - Room->AttachProceduralMeshToWalls(WallTextureCoordinateModes, {}); - - if (TestTrue(TEXT("Has walls"), !Room->WallAnchors.IsEmpty())) - { - ProceduralMeshComponent = Room->WallAnchors[0]->ProceduralMeshComponent; - if (!TestNotNull(TEXT("Has Procedural Mesh Component"), ProceduralMeshComponent.Get())) - { - return; - } - Section = ProceduralMeshComponent->GetProcMeshSection(0); - if (!TestNotNull(TEXT("Mesh Section"), Section)) - { - return; - } - if (TestEqual(TEXT("Vertex buffer size"), Section->ProcVertexBuffer.Num(), 4)) - { - TestEqual(TEXT("Vertex 0 UV 0"), Section->ProcVertexBuffer[0].UV0, FVector2D(0.770758, 0.184412)); - TestEqual(TEXT("Vertex 0 UV 1"), Section->ProcVertexBuffer[0].UV1, FVector2D(10.790611, 2.581766)); - TestEqual(TEXT("Vertex 0 UV 2"), Section->ProcVertexBuffer[0].UV2, FVector2D(4.179547, 1.000000)); - TestEqual(TEXT("Vertex 0 UV 3"), Section->ProcVertexBuffer[0].UV3, FVector2D(10.790611, 2.630046)); - TestEqual(TEXT("Vertex 1 UV 0"), Section->ProcVertexBuffer[1].UV0, FVector2D(1.000000, 0.184412)); - TestEqual(TEXT("Vertex 1 UV 1"), Section->ProcVertexBuffer[1].UV1, FVector2D(14.000000, 2.581766)); - TestEqual(TEXT("Vertex 1 UV 2"), Section->ProcVertexBuffer[1].UV2, FVector2D(5.422645, 1.000000)); - TestEqual(TEXT("Vertex 1 UV 3"), Section->ProcVertexBuffer[1].UV3, FVector2D(14.000000, 2.630046)); - TestEqual(TEXT("Vertex 2 UV 0"), Section->ProcVertexBuffer[2].UV0, FVector2D(1.000000, -0.000000)); - TestEqual(TEXT("Vertex 2 UV 1"), Section->ProcVertexBuffer[2].UV1, FVector2D(14.000000, -0.000000)); - TestEqual(TEXT("Vertex 2 UV 2"), Section->ProcVertexBuffer[2].UV2, FVector2D(5.422645, -0.000000)); - TestEqual(TEXT("Vertex 2 UV 3"), Section->ProcVertexBuffer[2].UV3, FVector2D(14.000000, -0.000000)); - TestEqual(TEXT("Vertex 3 UV 0"), Section->ProcVertexBuffer[3].UV0, FVector2D(0.770758, -0.000000)); - TestEqual(TEXT("Vertex 3 UV 1"), Section->ProcVertexBuffer[3].UV1, FVector2D(10.790611, -0.000000)); - TestEqual(TEXT("Vertex 3 UV 2"), Section->ProcVertexBuffer[3].UV2, FVector2D(4.179547, -0.000000)); - TestEqual(TEXT("Vertex 3 UV 3"), Section->ProcVertexBuffer[3].UV3, FVector2D(10.790611, -0.000000)); - } - } - }); - - It(TEXT("ProceduralMesh with holes"), [this]() { - const auto Room = ToolkitSubsystem->GetCurrentRoom(); - if (!TestNotNull(TEXT("Current room"), Room)) - { - return; - } - - Room->AttachProceduralMeshToWalls({}, { FMRUKLabels::WindowFrame, FMRUKLabels::DoorFrame }); - - if (TestTrue(TEXT("Has walls"), !Room->WallAnchors.IsEmpty())) - { - const auto ProceduralMeshComponent = Room->WallAnchors[6]->ProceduralMeshComponent; - if (!TestNotNull(TEXT("Has Procedural Mesh Component"), ProceduralMeshComponent.Get())) - { - return; - } - const auto Section = ProceduralMeshComponent->GetProcMeshSection(0); - if (!TestNotNull(TEXT("Mesh Section"), Section)) - { - return; - } - if (TestEqual(TEXT("Vertex buffer size"), Section->ProcVertexBuffer.Num(), 8)) - { - constexpr double Tolerance = 0.001; - TestEqual(TEXT("Vertex 0"), Section->ProcVertexBuffer[0].Position, FVector(0.0, -168.041, -131.505), Tolerance); - TestEqual(TEXT("Vertex 1"), Section->ProcVertexBuffer[1].Position, FVector(0.0, 168.041, -131.505), Tolerance); - TestEqual(TEXT("Vertex 2"), Section->ProcVertexBuffer[2].Position, FVector(0.0, 168.041, 131.505), Tolerance); - TestEqual(TEXT("Vertex 3"), Section->ProcVertexBuffer[3].Position, FVector(0.0, -168.041, 131.505), Tolerance); - TestEqual(TEXT("Vertex 4"), Section->ProcVertexBuffer[4].Position, FVector(0.0, 28.075, -61.585), Tolerance); - TestEqual(TEXT("Vertex 5"), Section->ProcVertexBuffer[5].Position, FVector(0.0, 143.493, -61.585), Tolerance); - TestEqual(TEXT("Vertex 6"), Section->ProcVertexBuffer[6].Position, FVector(0.0, 143.493, 111.358), Tolerance); - TestEqual(TEXT("Vertex 7"), Section->ProcVertexBuffer[7].Position, FVector(0.0, 28.075, 111.358), Tolerance); - } - - if (TestEqual(TEXT("Index buffer size"), Section->ProcIndexBuffer.Num(), 24)) - { - TestEqual(TEXT("Index 0"), Section->ProcIndexBuffer[0], 3); - TestEqual(TEXT("Index 1"), Section->ProcIndexBuffer[1], 0); - TestEqual(TEXT("Index 2"), Section->ProcIndexBuffer[2], 4); - TestEqual(TEXT("Index 3"), Section->ProcIndexBuffer[3], 5); - TestEqual(TEXT("Index 4"), Section->ProcIndexBuffer[4], 4); - TestEqual(TEXT("Index 5"), Section->ProcIndexBuffer[5], 0); - TestEqual(TEXT("Index 6"), Section->ProcIndexBuffer[6], 3); - TestEqual(TEXT("Index 7"), Section->ProcIndexBuffer[7], 4); - TestEqual(TEXT("Index 8"), Section->ProcIndexBuffer[8], 7); - TestEqual(TEXT("Index 9"), Section->ProcIndexBuffer[9], 5); - TestEqual(TEXT("Index 10"), Section->ProcIndexBuffer[10], 0); - TestEqual(TEXT("Index 11"), Section->ProcIndexBuffer[11], 1); - TestEqual(TEXT("Index 12"), Section->ProcIndexBuffer[12], 2); - TestEqual(TEXT("Index 13"), Section->ProcIndexBuffer[13], 3); - TestEqual(TEXT("Index 14"), Section->ProcIndexBuffer[14], 7); - TestEqual(TEXT("Index 15"), Section->ProcIndexBuffer[15], 6); - TestEqual(TEXT("Index 16"), Section->ProcIndexBuffer[16], 5); - TestEqual(TEXT("Index 17"), Section->ProcIndexBuffer[17], 1); - TestEqual(TEXT("Index 18"), Section->ProcIndexBuffer[18], 2); - TestEqual(TEXT("Index 19"), Section->ProcIndexBuffer[19], 7); - TestEqual(TEXT("Index 20"), Section->ProcIndexBuffer[20], 6); - TestEqual(TEXT("Index 21"), Section->ProcIndexBuffer[21], 6); - TestEqual(TEXT("Index 22"), Section->ProcIndexBuffer[22], 1); - TestEqual(TEXT("Index 23"), Section->ProcIndexBuffer[23], 2); - } - } - }); - - TeardownMRUKSubsystem(); - }); - - Describe(TEXT("Utilities"), [this] { - It(TEXT("Label Filter"), [this]() { - FMRUKLabelFilter Filter; - Filter.IncludedLabels.Push("FOO"); - Filter.IncludedLabels.Push("BAR"); - Filter.ExcludedLabels.Push("BAZ"); - Filter.ExcludedLabels.Push("QUX"); - TestTrue(TEXT("BAM, BAR Passes Filter"), Filter.PassesFilter({ { TEXT("BAM"), TEXT("BAR") } })); - TestFalse(TEXT("BAZ Fails Filter"), Filter.PassesFilter({ { TEXT("BAZ") } })); - TestFalse(TEXT("BAR, QUX Fails Filter"), Filter.PassesFilter({ { TEXT("BAR"), TEXT("QUX") } })); - TestFalse(TEXT("BAM Fails Filter"), Filter.PassesFilter({ { TEXT("BAM") } })); - - Filter.IncludedLabels.Empty(); - TestTrue(TEXT("BAM Passes Filter"), Filter.PassesFilter({ { TEXT("BAM") } })); - }); - }); -} diff --git a/Plugins/MetaXR/Source/MRUtilityKitEditor/Private/MRUtilityKitDistanceMap.spec.cpp b/Plugins/MetaXR/Source/MRUtilityKitEditor/Private/MRUtilityKitDistanceMap.spec.cpp deleted file mode 100644 index 551c960..0000000 --- a/Plugins/MetaXR/Source/MRUtilityKitEditor/Private/MRUtilityKitDistanceMap.spec.cpp +++ /dev/null @@ -1,214 +0,0 @@ -// Copyright (c) Meta Platforms, Inc. and affiliates. - -#include "DistanceMapTestData.h" -#include "Editor.h" -#include "Editor/UnrealEdEngine.h" -#include "Engine/CanvasRenderTarget2D.h" -#include "HAL/PlatformFileManager.h" -#include "Misc/EngineVersionComparison.h" -#include "MRUtilityKitDistanceMapGenerator.h" -#include "MRUtilityKitSubsystem.h" -#include "TestHelper.h" -#include "Tests/AutomationEditorCommon.h" -#include "TextureResource.h" -#include "UnrealEdGlobals.h" - -static void WriteTGA(const FString& FilePath, const TArray& Pixels, int32 Width, int32 Height) -{ - // Create file - IFileHandle* FileHandle = FPlatformFileManager::Get().GetPlatformFile().OpenWrite(*FilePath); - if (FileHandle) - { - // TGA File Header - uint8 TGAHeader[18] = {}; - TGAHeader[2] = 2; // Uncompressed Type - TGAHeader[12] = Width & 0xFF; - TGAHeader[13] = (Width >> 8) & 0xFF; - TGAHeader[14] = Height & 0xFF; - TGAHeader[15] = (Height >> 8) & 0xFF; - TGAHeader[16] = 32; // Bits per Pixel - TGAHeader[17] = 0x20; // Top-Down, Non-Interlaced - // Write TGA Header - FileHandle->Write(TGAHeader, sizeof(TGAHeader)); - // Write Pixels - for (int32 i = 0; i < Width * Height; i++) - { - const FColor& Pixel = Pixels[i]; - uint8 BGRA[4] = { Pixel.B, Pixel.G, Pixel.R, Pixel.A }; - FileHandle->Write(BGRA, sizeof(BGRA)); - } - - // Close the file - delete FileHandle; - } - else - { - UE_LOG(LogTemp, Warning, TEXT("Failed to open file for writing: %s"), *FilePath); - } -} - -static TArray ReadTGAFromMemory(const uint8* Data, size_t DataSize) -{ - TArray Pixels; - - // Read TGA Header - uint8 TGAHeader[18]; - memcpy(TGAHeader, Data, sizeof(TGAHeader)); - // Get image dimensions from header - const int32 Width = TGAHeader[12] | (TGAHeader[13] << 8); - const int32 Height = TGAHeader[14] | (TGAHeader[15] << 8); - - if (Width * Height > DataSize) - { - return {}; - } - - // Resize pixel array - Pixels.SetNumUninitialized(Width * Height); - // Read Pixels - uint32 Offset = sizeof(TGAHeader); - for (int32 i = 0; i < Width * Height; i++) - { - uint8 BGRA[4]; - memcpy(BGRA, Data + Offset, sizeof(BGRA)); - Offset += sizeof(BGRA); - // Convert from BGRA to RGBA - Pixels[i] = FColor(BGRA[2], BGRA[1], BGRA[0], BGRA[3]); - } - - return Pixels; -} - -static TArray ReadTGAFromFile(const FString& FilePath) -{ - IFileHandle* FileHandle = FPlatformFileManager::Get().GetPlatformFile().OpenRead(*FilePath); - TArray Data; - Data.SetNum(FileHandle->Size()); - FileHandle->Read(Data.GetData(), Data.Num()); - return ReadTGAFromMemory(Data.GetData(), Data.Num()); -} - -#if UE_VERSION_OLDER_THAN(5, 5, 0) -BEGIN_DEFINE_SPEC(FMRUKDistanceMapSpec, TEXT("MR Utility Kit"), EAutomationTestFlags::ProductFilter | EAutomationTestFlags::ApplicationContextMask) -#else -BEGIN_DEFINE_SPEC(FMRUKDistanceMapSpec, TEXT("MR Utility Kit"), EAutomationTestFlags::ProductFilter | EAutomationTestFlags_ApplicationContextMask) -#endif -END_DEFINE_SPEC(FMRUKDistanceMapSpec) - -void FMRUKDistanceMapSpec::Define() -{ - Describe(TEXT("Distance map"), [this] { - BeforeEach([this]() { - // Load map - const auto ContentDir = FPaths::ProjectContentDir(); - FAutomationEditorCommonUtils::LoadMap(ContentDir + "/Common/Maps/TestLevel.umap"); - StartPIE(true); - }); - - BeforeEach(EAsyncExecution::ThreadPool, []() { - while (!GEditor->IsPlayingSessionInEditor()) - { - // Wait until play session starts - FGenericPlatformProcess::Yield(); - } - }); - - It(TEXT("Capture distance map"), [this] { - const auto World = GEditor->GetPIEWorldContext()->World(); - const auto GameInstance = World->GetGameInstance(); - UMRUKSubsystem* Subsystem = GameInstance->GetSubsystem(); - Subsystem->LoadSceneFromJsonString(ExampleRoomJson); - - // Create and setup distance map generator - const FActorSpawnParameters Params{}; - AMRUKDistanceMapGenerator* DistanceMapGenerator = World->SpawnActor(Params); - DistanceMapGenerator->SetActorLocation(FVector(0.0, 0.0, 200.0)); - DistanceMapGenerator->SetActorRotation(FRotator::MakeFromEuler(FVector(0.0, -90.0, 0.0))); - - UCanvasRenderTarget2D* RenderTarget = Cast(DistanceMapGenerator->CaptureDistanceMap()); - FTextureRenderTargetResource* RenderTargetResource = RenderTarget->GameThread_GetRenderTargetResource(); - // Create an array to store the pixel data - TArray PixelData; - // Read the pixel data from the Render Target - ENQUEUE_RENDER_COMMAND(ReadSurfaceCommand) - ( - [RenderTargetResource, &PixelData](FRHICommandListImmediate& RHICmdList) { - const FTextureRHIRef Texture2DRHI = RenderTargetResource->GetRenderTargetTexture(); - RHICmdList.ReadSurfaceData( - Texture2DRHI, - FIntRect(0, 0, Texture2DRHI->GetSizeX(), Texture2DRHI->GetSizeY()), - PixelData, - FReadSurfaceDataFlags()); - }); - // Wait for the rendering thread to finish executing the command - FlushRenderingCommands(); - - // Compare result - - const TArray ExpectedPixels = ReadTGAFromMemory(DistanceMapTestData, sizeof(DistanceMapTestData)); - - bool Success = true; - if (!TestEqual(TEXT("Pixel count matches"), PixelData.Num(), ExpectedPixels.Num())) - { - Success = false; - } - for (int32 I = 0; I < PixelData.Num() && Success; ++I) - { - if (!TestEqual(TEXT("R channel matches"), PixelData[I].R, ExpectedPixels[I].R)) - { - Success = false; - break; - } - if (!TestEqual(TEXT("G channel matches"), PixelData[I].G, ExpectedPixels[I].G)) - { - Success = false; - break; - } - if (!TestEqual(TEXT("B channel matches"), PixelData[I].B, ExpectedPixels[I].B)) - { - Success = false; - break; - } - if (!TestEqual(TEXT("A channel matches"), PixelData[I].A, ExpectedPixels[I].A)) - { - Success = false; - break; - } - } - - if (!Success) - { - const FString& TestResultsPath = FPaths::Combine(FPaths::ProjectIntermediateDir(), "TestResults"); - - IPlatformFile& PlatformFile = FPlatformFileManager::Get().GetPlatformFile(); - if (!PlatformFile.DirectoryExists(*TestResultsPath)) - { - PlatformFile.CreateDirectory(*TestResultsPath); - } - - const FString& ActualPixelsFilename = FPaths::CreateTempFilename(*TestResultsPath, TEXT("DistanceMapTest_ActualPixels"), TEXT(".tga")); - const FString& ExpectedPixelsFilename = FPaths::CreateTempFilename(*TestResultsPath, TEXT("DistanceMapTest_ExpectedPixels"), TEXT(".tga")); - // The resulting binary data can be converted to C array with the tool found here https://github.com/AntumDeluge/bin2header - WriteTGA(ActualPixelsFilename, PixelData, RenderTarget->SizeX, RenderTarget->SizeY); - WriteTGA(ExpectedPixelsFilename, PixelData, RenderTarget->SizeX, RenderTarget->SizeY); - UE_LOG(LogTemp, Warning, TEXT("Expected pixels have been saved as tga file in %s"), *ExpectedPixelsFilename); - UE_LOG(LogTemp, Warning, TEXT("Actual pixels have been saved as tga file in %s"), *ActualPixelsFilename); - } - }); - - // Caution: Order of these statements is important - - AfterEach(EAsyncExecution::ThreadPool, []() { - while (GEditor->IsPlayingSessionInEditor()) - { - // Wait until play session ends - FGenericPlatformProcess::Yield(); - } - }); - - AfterEach([]() { - // Request end of play session - GUnrealEd->RequestEndPlayMap(); - }); - }); -} diff --git a/Plugins/MetaXR/Source/MRUtilityKitEditor/Private/MRUtilityKitEditor.cpp b/Plugins/MetaXR/Source/MRUtilityKitEditor/Private/MRUtilityKitEditor.cpp deleted file mode 100644 index 37e3a7a..0000000 --- a/Plugins/MetaXR/Source/MRUtilityKitEditor/Private/MRUtilityKitEditor.cpp +++ /dev/null @@ -1,35 +0,0 @@ -// Copyright (c) Meta Platforms, Inc. and affiliates. - -#include "MRUtilityKitEditor.h" - -#include "MRUtilityKitGridSliceResizer.h" -#include "MRUtilityKitGridSliceResizerVisualization.h" -#include "MRUtilityKitTelemetry.h" -#include "UnrealEdGlobals.h" -#include "Editor/UnrealEdEngine.h" - -#define LOCTEXT_NAMESPACE "FMRUKEditorModule" - -DEFINE_LOG_CATEGORY(LogMRUKEditor); - -void FMRUKEditorModule::StartupModule() -{ - if (GUnrealEd) - { - const auto ResizerVisualizer = MakeShared(); - GUnrealEd->RegisterComponentVisualizer(UMRUKGridSliceResizerComponent::StaticClass()->GetFName(), ResizerVisualizer); - ResizerVisualizer->OnRegister(); - } -} - -void FMRUKEditorModule::ShutdownModule() -{ - if (GUnrealEd) - { - GUnrealEd->UnregisterComponentVisualizer(UMRUKGridSliceResizerComponent::StaticClass()->GetFName()); - } -} - -#undef LOCTEXT_NAMESPACE - -IMPLEMENT_MODULE(FMRUKEditorModule, MRUtilityKitEditor) diff --git a/Plugins/MetaXR/Source/MRUtilityKitEditor/Private/MRUtilityKitGeometry.spec.cpp b/Plugins/MetaXR/Source/MRUtilityKitEditor/Private/MRUtilityKitGeometry.spec.cpp deleted file mode 100644 index 71f657c..0000000 --- a/Plugins/MetaXR/Source/MRUtilityKitEditor/Private/MRUtilityKitGeometry.spec.cpp +++ /dev/null @@ -1,165 +0,0 @@ -// Copyright (c) Meta Platforms, Inc. and affiliates. - -#include "Editor/UnrealEdEngine.h" -#include "Misc/AutomationTest.h" -#include "Misc/EngineVersionComparison.h" -#include "MRUtilityKitGeometry.h" -#include "TestHelper.h" -#include "Tests/AutomationEditorCommon.h" -#include "UnrealEdGlobals.h" -#include "Editor.h" - -namespace -{ - double CalculateTriangleArea(const FVector2D& P1, const FVector2D& P2, const FVector2D& P3) - { - return (P1.X * (P2.Y - P3.Y) + P2.X * (P3.Y - P1.Y) + P3.X * (P1.Y - P2.Y)) / 2.0f; - } - - // Use the triangulated area as a proxy to ensure the triangulation worked as expected - double CalculateTriangulatedArea(const TArray& Vertices, const TArray& Indices) - { - double Area = 0.0; - for (int i = 0; i < Indices.Num(); i += 3) - { - const FVector2D& P1 = Vertices[Indices[i]]; - const FVector2D& P2 = Vertices[Indices[i + 1]]; - const FVector2D& P3 = Vertices[Indices[i + 2]]; - const double TriangleArea = CalculateTriangleArea(P1, P2, P3); - check(TriangleArea >= 0.0); - Area += TriangleArea; - } - - return Area; - } -} // namespace - -#if UE_VERSION_OLDER_THAN(5, 5, 0) -BEGIN_DEFINE_SPEC(FMRUKGeometrySpec, TEXT("MR Utility Kit"), EAutomationTestFlags::ProductFilter | EAutomationTestFlags::ApplicationContextMask) -#else -BEGIN_DEFINE_SPEC(FMRUKGeometrySpec, TEXT("MR Utility Kit"), EAutomationTestFlags::ProductFilter | EAutomationTestFlags_ApplicationContextMask) -#endif - -void SetupMRUKSubsystem(); -void TeardownMRUKSubsystem(); -END_DEFINE_SPEC(FMRUKGeometrySpec) - -void FMRUKGeometrySpec::SetupMRUKSubsystem() -{ - BeforeEach([this]() { - // Load map and start play in editor - const auto ContentDir = FPaths::ProjectContentDir(); - FAutomationEditorCommonUtils::LoadMap(ContentDir + "/Common/Maps/TestLevel.umap"); - StartPIE(true); - }); - - BeforeEach(EAsyncExecution::ThreadPool, []() { - while (!GEditor->IsPlayingSessionInEditor()) - { - // Wait until play session starts - FGenericPlatformProcess::Yield(); - } - }); -} - -void FMRUKGeometrySpec::TeardownMRUKSubsystem() -{ - // Caution: Order of these statements is important - - AfterEach(EAsyncExecution::ThreadPool, []() { - while (GEditor->IsPlayingSessionInEditor()) - { - // Wait until play session ends - FGenericPlatformProcess::Yield(); - } - }); - - AfterEach([]() { - // Request end of play session - GUnrealEd->RequestEndPlayMap(); - }); -} - -void FMRUKGeometrySpec::Define() -{ - Describe(TEXT("Triangulation"), [this] { - SetupMRUKSubsystem(); - - It(TEXT("Triangulate quad"), [this] { - const TArray TestPolygon = { { 0.0f, 0.0f }, { 1.0f, 0.0f }, { 1.0f, 1.0f }, { 0.0f, 1.0f } }; - TArray Vertices; - TArray Indices; - MRUKTriangulatePolygon({ TestPolygon }, Vertices, Indices); - TestEqual(TEXT("Correct number of indices"), 6, Indices.Num()); - TestEqual(TEXT("Correct area triangulated"), 1.0, CalculateTriangulatedArea(Vertices, Indices)); - }); - - It(TEXT("Triangulate quad with hole"), [this] { - const TArray> Polygons = { { { 0.0f, 0.0f }, { 2.0f, 0.0f }, { 2.0f, 2.0f }, { 0.0f, 2.0f } }, { { 0.5f, 0.5f }, { 0.5f, 1.5f }, { 1.5f, 1.5f }, { 1.5f, 0.5f } } }; - TArray Vertices; - TArray Indices; - MRUKTriangulatePolygon(Polygons, Vertices, Indices); - - TestEqual(TEXT("Correct number of indices"), Indices.Num(), 24); - TestEqual(TEXT("Correct area triangulated"), CalculateTriangulatedArea(Vertices, Indices), 3.0); - }); - - It(TEXT("Triangulate quad with four holes"), [this] { - TArray> Polygons = { { { 0.0f, 0.0f }, { 4.0f, 0.0f }, { 4.0f, 4.0f }, { 0.0f, 4.0f } } }; - for (int32 I = 0; I < 4; ++I) - { - const FVector2f Offset(0.5 + 2.0 * (I / 2), 0.5 + 2.0 * (I % 2)); - Polygons.Push({ Offset + FVector2f(0.0, 0.0), Offset + FVector2f(0.0, 1.0), Offset + FVector2f(1.0, 1.0), Offset + FVector2f(1.0, 0.0) }); - } - - TArray Vertices; - TArray Indices; - MRUKTriangulatePolygon(Polygons, Vertices, Indices); - - TestEqual(TEXT("Correct number of indices"), Indices.Num(), 66); - TestEqual(TEXT("Correct area triangulated"), CalculateTriangulatedArea(Vertices, Indices), 12.0); - }); - - It(TEXT("Triangulate quad with two close holes"), [this] { - const TArray> Polygons = { - { - { 101.985214, 113.8258 }, - { -101.985214, 113.8258 }, - { -101.985214, -113.8258 }, - { 101.985214, -113.8258 }, - }, - { { 18.395055731633885, 9.0596833 }, { -72.518264268366110, 9.0596833 }, { -72.518264268366110, 67.2252527 }, { 18.395055731633885, 67.2252527 } }, - { { 18.395055731633885, -53.4203167 }, { -72.518264268366110, -53.4203167 }, { -72.518264268366110, 4.7452569 }, { 18.395055731633885, 4.7452569 } }, - }; - - TArray Vertices; - TArray Indices; - MRUKTriangulatePolygon(Polygons, Vertices, Indices); - - TestEqual(TEXT("Correct number of indices"), Indices.Num(), 42); - TestEqual(TEXT("Correct area triangulated"), CalculateTriangulatedArea(Vertices, Indices), 35858.143857, 0.001); - }); - - It(TEXT("Triangulate LShape"), [this] { - const TArray TestPolygon = { { 0.0, 0.0 }, { 2.0, 0.0 }, { 2.0, 2.0 }, { 1.0, 2.0 }, { 1.0, 1.0 }, { 0.0, 1.0 } }; - TArray Vertices; - TArray Indices; - MRUKTriangulatePolygon({ TestPolygon }, Vertices, Indices); - - TestEqual(TEXT("Correct number of indices"), Indices.Num(), 12); - TestEqual(TEXT("Correct area triangulated"), CalculateTriangulatedArea(Vertices, Indices), 3.0); - }); - - It(TEXT("Triangulate CShape"), [this] { - const TArray TestPolygon = { { 0.0, 0.0 }, { 2.0, 0.0 }, { 2.0, 1.0 }, { 1.0, 1.0 }, { 1.0, 2.0 }, { 2.0, 2.0 }, { 2.0, 3.0 }, { 0.0, 3.0 } }; - TArray Vertices; - TArray Indices; - MRUKTriangulatePolygon({ TestPolygon }, Vertices, Indices); - - TestEqual(TEXT("Correct number of indices"), Indices.Num(), 18); - TestEqual(TEXT("Correct area triangulated"), CalculateTriangulatedArea(Vertices, Indices), 5.0); - }); - - TeardownMRUKSubsystem(); - }); -} diff --git a/Plugins/MetaXR/Source/MRUtilityKitEditor/Private/MRUtilityKitGridSliceResizer.spec.cpp b/Plugins/MetaXR/Source/MRUtilityKitEditor/Private/MRUtilityKitGridSliceResizer.spec.cpp deleted file mode 100644 index 68ed13f..0000000 --- a/Plugins/MetaXR/Source/MRUtilityKitEditor/Private/MRUtilityKitGridSliceResizer.spec.cpp +++ /dev/null @@ -1,194 +0,0 @@ -// Copyright (c) Meta Platforms, Inc. and affiliates. - -#include "Editor/UnrealEdEngine.h" -#include "Editor.h" -#include "GridSliceResizerTestData.h" -#include "MRUtilityKitGridSliceResizer.h" -#include "Misc/AutomationTest.h" -#include "Misc/EngineVersionComparison.h" -#include "TestHelper.h" -#include "Tests/AutomationEditorCommon.h" -#include "UnrealEdGlobals.h" - -#if UE_VERSION_OLDER_THAN(5, 5, 0) -BEGIN_DEFINE_SPEC(FMRUKGridSliceResizerSpec, TEXT("MR Utility Kit"), EAutomationTestFlags::ProductFilter | EAutomationTestFlags::ApplicationContextMask) -#else -BEGIN_DEFINE_SPEC(FMRUKGridSliceResizerSpec, TEXT("MR Utility Kit"), EAutomationTestFlags::ProductFilter | EAutomationTestFlags_ApplicationContextMask) -#endif -END_DEFINE_SPEC(FMRUKGridSliceResizerSpec) - -void FMRUKGridSliceResizerSpec::Define() -{ - Describe(TEXT("Grid Slice Resizer"), [this] { - BeforeEach([this]() { - // Load map - const auto ContentDir = FPaths::ProjectContentDir(); - FAutomationEditorCommonUtils::LoadMap(ContentDir + "/Common/Maps/TestLevel.umap"); - StartPIE(true); - }); - - BeforeEach(EAsyncExecution::ThreadPool, []() { - while (!GEditor->IsPlayingSessionInEditor()) - { - // Wait until play session starts - FGenericPlatformProcess::Yield(); - } - }); - - It(TEXT("Slice mesh"), [this] { - const auto World = GEditor->GetPIEWorldContext()->World(); - const FActorSpawnParameters Params{}; - AMeshResizer* Resizer = World->SpawnActor(Params); - - UMRUKGridSliceResizerComponent* ResizerComponent = Resizer->GridSliceResizerComponent; - - struct FTestData - { - FVector Scale; - uint8 ScaleCenterMode; - double BorderXNegative; - double BorderXPositive; - double BorderYNegative; - double BorderYPositive; - double BorderZNegative; - double BorderZPositive; - FVector SlicerPivotOffset; - const TArray& ExpectedPositions; - }; - - TArray TestDataContainer = { - // Test without pivot offset - FTestData{ - FVector(2.0, 2.0, 2.0), - (uint8)EMRUKScaleCenterMode::XAxis | (uint8)EMRUKScaleCenterMode::YAxis | (uint8)EMRUKScaleCenterMode::ZAxis, - 0.8, - 0.8, - 0.8, - 0.8, - 0.8, - 0.8, - FVector(0.0, 0.0, 0.0), - ExpectedPositionsPivotCenter, - }, - // Test with pivot offset - FTestData{ - FVector(2.0, 2.0, 2.0), - (uint8)EMRUKScaleCenterMode::XAxis | (uint8)EMRUKScaleCenterMode::YAxis | (uint8)EMRUKScaleCenterMode::ZAxis, - 0.8, - 0.8, - 0.8, - 0.8, - 0.8, - 0.8, - FVector(0.0, 0.0, -40.0), - ExpectedPositionsPivotOffset, - }, - // Test with pivot outside of bounding box - FTestData{ - FVector(2.0, 2.0, 2.0), - (uint8)EMRUKScaleCenterMode::XAxis | (uint8)EMRUKScaleCenterMode::YAxis | (uint8)EMRUKScaleCenterMode::ZAxis, - 0.8, - 0.8, - 0.8, - 0.8, - 0.8, - 0.8, - FVector(0.0, 0.0, -160.0), - ExpectedPositionsPivotOutside, - }, - // Test scaled down with pivot offset - FTestData{ - FVector(0.2, 0.2, 0.2), - (uint8)EMRUKScaleCenterMode::XAxis | (uint8)EMRUKScaleCenterMode::YAxis | (uint8)EMRUKScaleCenterMode::ZAxis, - 0.8, - 0.8, - 0.8, - 0.8, - 0.8, - 0.8, - FVector(0.0, 0.0, 20.0), - ExpectedPositionsScaledDown, - }, - // Test without center scale - FTestData{ - FVector(2.0, 2.0, 2.0), - (uint8)EMRUKScaleCenterMode::None, - 0.8, - 0.8, - 0.8, - 0.8, - 0.8, - 0.8, - FVector(0.0, 0.0, 0.0), - ExpectedPositionsCenterNotScaled, - }, - // Test without center scale but scaled down - FTestData{ - FVector(0.2, 0.2, 0.2), - (uint8)EMRUKScaleCenterMode::None, - 0.8, - 0.8, - 0.8, - 0.8, - 0.8, - 0.8, - FVector(0.0, 0.0, 0.0), - ExpectedPositionsScaledDownCenterNotScaled, - } - }; - - constexpr double Tolerance = 0.001; - - for (const FTestData& TestData : TestDataContainer) - { - ResizerComponent->ScaleCenterMode = TestData.ScaleCenterMode; - ResizerComponent->BorderXNegative = TestData.BorderXNegative; - ResizerComponent->BorderXPositive = TestData.BorderXPositive; - ResizerComponent->BorderYNegative = TestData.BorderYNegative; - ResizerComponent->BorderYPositive = TestData.BorderYPositive; - ResizerComponent->BorderZNegative = TestData.BorderZNegative; - ResizerComponent->BorderZPositive = TestData.BorderZPositive; - ResizerComponent->SlicerPivotOffset = TestData.SlicerPivotOffset; - - Resizer->SetActorScale3D(TestData.Scale); - Resizer->GridSliceResizerComponent->SliceMesh(); - - const FProcMeshSection* MeshSection = Resizer->GridSliceResizerComponent->ProcMesh->GetProcMeshSection(0); - if (!TestNotNull(TEXT("Mesh section is not null"), MeshSection)) - { - return; - } - - const TArray& Indices = MeshSection->ProcIndexBuffer; - const TArray& Vertices = MeshSection->ProcVertexBuffer; - - TestEqual(TEXT("Triangles count matches"), Indices.Num(), ExpectedTriangles.Num()); - for (int32 I = 0; I < Indices.Num(); ++I) - { - TestEqual(TEXT("Index matches"), Indices[I], ExpectedTriangles[I]); - } - - TestEqual(TEXT("Positions count matches"), Vertices.Num(), TestData.ExpectedPositions.Num()); - for (int32 I = 0; I < Vertices.Num(); ++I) - { - TestEqual(TEXT("Position matches"), Vertices[I].Position, TestData.ExpectedPositions[I], Tolerance); - } - } - }); - - // Caution: Order of these statements is important - - AfterEach(EAsyncExecution::ThreadPool, []() { - while (GEditor->IsPlayingSessionInEditor()) - { - // Wait until play session ends - FGenericPlatformProcess::Yield(); - } - }); - - AfterEach([]() { - // Request end of play session - GUnrealEd->RequestEndPlayMap(); - }); - }); -} diff --git a/Plugins/MetaXR/Source/MRUtilityKitEditor/Private/MRUtilityKitGridSliceResizerVisualization.cpp b/Plugins/MetaXR/Source/MRUtilityKitEditor/Private/MRUtilityKitGridSliceResizerVisualization.cpp deleted file mode 100644 index 41bb3c1..0000000 --- a/Plugins/MetaXR/Source/MRUtilityKitEditor/Private/MRUtilityKitGridSliceResizerVisualization.cpp +++ /dev/null @@ -1,106 +0,0 @@ -// Copyright (c) Meta Platforms, Inc. and affiliates. - -#include "MRUtilityKitGridSliceResizerVisualization.h" - -#include "MRUtilityKitGridSliceResizer.h" -#include "ProceduralMeshComponent.h" -#include "SceneManagement.h" - -namespace -{ - void DrawSliceBorder(FPrimitiveDrawInterface* PDI, FVector Scale, FVector Pivot, FVector ScaledPivot, const UProceduralMeshComponent* ProcMesh, const FVector& Size, double BorderPos, double BorderNeg, int32 Axis) - { - // Scaled bounding box of the mesh that gets displayed - FBox BBox = ProcMesh->GetLocalBounds().GetBox(); - BBox.Min *= Scale; - BBox.Max *= Scale; - - const FVector InvSize = FVector(1.0, 1.0, 1.0) / Scale; - // Unscaled bounding box - const FBox BBoxOriginal = FBox(BBox.Min * InvSize, BBox.Max * InvSize); - - double Positive = BBox.Max[Axis] - (BBoxOriginal.Max[Axis] - (FMath::Abs(BBoxOriginal.Max[Axis] - Pivot[Axis]) * BorderPos + Pivot[Axis])); - if (Positive + Pivot[Axis] < 0.0) - { - // Clamp to the bounding box in case the bounding box is smaller than the stubs - Positive = BBox.Max[Axis]; - } - if (Pivot[Axis] > BBox.Max[Axis]) - { - // Clamp to the pivot if the pivot is outside of the bounding box - Positive = FMath::Min(ScaledPivot[Axis], Positive); - } - - double Negative = BBox.Min[Axis] - (BBoxOriginal.Min[Axis] - (-FMath::Abs(BBoxOriginal.Min[Axis] - Pivot[Axis]) * BorderNeg + Pivot[Axis])); - if (Negative - Pivot[Axis] > 0.0) - { - // Clamp to the bounding box in case the bounding box is smaller than the stubs - Negative = BBox.Min[Axis]; - } - if (Pivot[Axis] < BBox.Min[Axis]) - { - // Clamp to the pivot if the pivot is outside of the bounding box - Negative = FMath::Max(ScaledPivot[Axis], Negative); - } - - double PosNeg[2] = { Positive, Negative }; - for (int32 J = 0; J < 2; ++J) - { - FVector Max; - FVector Min; - for (int32 I = 0; I < 3; ++I) - { - if (I == Axis) - { - Min[I] = PosNeg[J]; - Max[I] = PosNeg[J]; - } - else - { - Min[I] = BBox.Min[I]; - Max[I] = BBox.Max[I]; - } - } - - // TODO: Fix visualization for in editor playing. Meaning applying the world transform. - const FBox Box(Min, Max); - DrawWireBox(PDI, Box, FLinearColor(1.0f, 0.0f, 0.0f), SDPG_Foreground, 0.2f); - } - } -} // namespace - -void FMRUKGridSliceResizerVisualizer::DrawVisualization(const UActorComponent* Component, const FSceneView* View, FPrimitiveDrawInterface* PDI) -{ - const UMRUKGridSliceResizerComponent* Resizer = Cast(Component); - if (!Resizer || !Resizer->GetOwner()) - { - return; - } - - const FVector Size = Resizer->GetOwner()->GetActorScale(); - const FVector Location = Resizer->GetComponentLocation(); - const FVector Pivot = Location + Resizer->SlicerPivotOffset; - const FVector ScaledPivot = Location + Resizer->SlicerPivotOffset * Size; - - if (Resizer->bDebugDrawPivot) - { - // Draw pivot - DrawWireSphere(PDI, ScaledPivot, FLinearColor(0.0f, 1.0f, 1.0f), 2.0, 16, SDPG_Foreground, 0.5f); - } - - if (const auto ProcMesh = Resizer->GetOwner()->GetComponentByClass()) - { - if (Resizer->bDebugDrawBorderX) - { - DrawSliceBorder(PDI, Size, Pivot, ScaledPivot, ProcMesh, Size, Resizer->BorderXPositive, Resizer->BorderXNegative, 0); - } - if (Resizer->bDebugDrawBorderY) - { - DrawSliceBorder(PDI, Size, Pivot, ScaledPivot, ProcMesh, Size, Resizer->BorderYPositive, Resizer->BorderYNegative, 1); - } - if (Resizer->bDebugDrawBorderZ) - { - DrawSliceBorder(PDI, Size, Pivot, ScaledPivot, ProcMesh, Size, Resizer->BorderZPositive, Resizer->BorderZNegative, 2); - } - } -} diff --git a/Plugins/MetaXR/Source/MRUtilityKitEditor/Private/MeshActor.cpp b/Plugins/MetaXR/Source/MRUtilityKitEditor/Private/MeshActor.cpp deleted file mode 100644 index ebe629c..0000000 --- a/Plugins/MetaXR/Source/MRUtilityKitEditor/Private/MeshActor.cpp +++ /dev/null @@ -1,17 +0,0 @@ -// Copyright (c) Meta Platforms, Inc. and affiliates. - -#include "MeshActor.h" -#include "UObject/ConstructorHelpers.h" -#include "Components/StaticMeshComponent.h" -#include "Engine/StaticMesh.h" - -AMeshActor::AMeshActor() -{ - static ConstructorHelpers::FObjectFinder CubeFinder(TEXT("StaticMesh'/Engine/BasicShapes/Cube.Cube'")); - Mesh = CreateDefaultSubobject(TEXT("Mesh")); - if (CubeFinder.Succeeded()) - { - Mesh->SetStaticMesh(CubeFinder.Object); - } - SetRootComponent(Mesh); -} diff --git a/Plugins/MetaXR/Source/MRUtilityKitEditor/Private/MeshActor.h b/Plugins/MetaXR/Source/MRUtilityKitEditor/Private/MeshActor.h deleted file mode 100644 index e98e222..0000000 --- a/Plugins/MetaXR/Source/MRUtilityKitEditor/Private/MeshActor.h +++ /dev/null @@ -1,18 +0,0 @@ -// Copyright (c) Meta Platforms, Inc. and affiliates. - -#pragma once - -#include "GameFramework/Actor.h" -#include "MeshActor.generated.h" - -UCLASS() -class AMeshActor : public AActor -{ - GENERATED_BODY() - -public: - UStaticMeshComponent* Mesh; - -public: - AMeshActor(); -}; diff --git a/Plugins/MetaXR/Source/MRUtilityKitEditor/Private/TestHelper.cpp b/Plugins/MetaXR/Source/MRUtilityKitEditor/Private/TestHelper.cpp deleted file mode 100644 index bb049d4..0000000 --- a/Plugins/MetaXR/Source/MRUtilityKitEditor/Private/TestHelper.cpp +++ /dev/null @@ -1,2674 +0,0 @@ -// Copyright (c) Meta Platforms, Inc. and affiliates. - -#include "TestHelper.h" - -#include "LevelEditor.h" -#include "UnrealEdGlobals.h" -#include "Editor/UnrealEdEngine.h" -#include "Tests/AutomationEditorCommon.h" -#include "UObject/ConstructorHelpers.h" - -bool StartPIE(bool bSimulateInEditor) -{ - FLevelEditorModule& LevelEditorModule = FModuleManager::Get().GetModuleChecked(TEXT("LevelEditor")); - - FRequestPlaySessionParams Params; - Params.DestinationSlateViewport = LevelEditorModule.GetFirstActiveViewport(); - if (bSimulateInEditor) - { - Params.WorldType = EPlaySessionWorldType::SimulateInEditor; - } - - // Make sure the player start location is a valid location. - if (GUnrealEd->CheckForPlayerStart() == nullptr) - { - FAutomationEditorCommonUtils::SetPlaySessionStartToActiveViewport(Params); - } - - GUnrealEd->RequestPlaySession(Params); - - return true; -} - -const TCHAR* ExampleRoomJson = TEXT(R"( -{ - "Rooms": [ - { - "UUID": "5CDDA638E08442FF193FD34FE9E42850", - "RoomLayout": - { - "FloorUuid": "4408BCA30B3EA779992A41339E9BD15E", - "CeilingUuid": "4C1D763C44C3462F4DA730971E171502", - "WallsUuid": [ - "195FA745A478AF0C8FB57CEB03B22863", - "A9EC4ACC695D848A817A9638C4084117", - "1C751664D717BE40458D9EC34BD5D378", - "FDB6E9B321F59B54A2C5C86E5C7115E6", - "9FEBCF7BD9E0A320A3BD68E2D7573255", - "684B956C3E0B9B03333C994A34A4E6FE", - "61345A4CA1A00C5C18C7AC3423376901", - "934CE75D63F0856A9438DAB3ADA95409" - ] - }, - "Anchors": [ - { - "UUID": "195FA745A478AF0C8FB57CEB03B22863", - "SemanticClassifications": [ - "WALL_FACE" - ], - "Transform": - { - "Translation": [ -237.12472915651662, 19.925808906578482, 1.5676200352898995 ], - "Rotation": [ -1.1819296446447803e-05, -169.70749357033259, 0.057707750157921504 ], - "Scale": [ 1, 1, 1 ] - }, - "PlaneBounds": - { - "Min": [ -163.47031593322754, -131.50515556335449 ], - "Max": [ 163.47026824951172, 131.50515556335449 ] - }, - "PlaneBoundary2D": [ - [ -163.47032165527344, -131.50515747070312 ], - [ 163.47027587890625, -131.50515747070312 ], - [ 163.47027587890625, 131.50515747070312 ], - [ -163.47032165527344, 131.50515747070312 ] - ] - }, - { - "UUID": "A9EC4ACC695D848A817A9638C4084117", - "SemanticClassifications": [ - "WALL_FACE" - ], - "Transform": - { - "Translation": [ -219.91224288941592, 188.27182054521873, 1.8210597299298268 ], - "Rotation": [ 7.4741822743562458e-07, 99.198330970154288, 0.098590620438120544 ], - "Scale": [ 1, 1, 1 ] - }, - "PlaneBounds": - { - "Min": [ -47.028231620788574, -131.50515556335449 ], - "Max": [ 47.028231620788574, 131.50515556335449 ] - }, - "PlaneBoundary2D": [ - [ -47.028232574462891, -131.50515747070312 ], - [ 47.028232574462891, -131.50515747070312 ], - [ 47.028232574462891, 131.50515747070312 ], - [ -47.028232574462891, 131.50515747070312 ] - ] - }, - { - "UUID": "1C751664D717BE40458D9EC34BD5D378", - "SemanticClassifications": [ - "WALL_FACE" - ], - "Transform": - { - "Translation": [ -171.26309871674914, 180.48512935640233, 1.8855862290118015 ], - "Rotation": [ 6.4467732645053494e-06, 8.2745309490490655, -0.061610071422649071 ], - "Scale": [ 1, 1, 1 ] - }, - "PlaneBounds": - { - "Min": [ -15.465247631072998, -131.50515556335449 ], - "Max": [ 15.465259552001953, 131.50515556335449 ] - }, - "PlaneBoundary2D": [ - [ -15.465248107910156, -131.50515747070312 ], - [ 15.465259552001953, -131.50515747070312 ], - [ 15.465259552001953, 131.50515747070312 ], - [ -15.465248107910156, 131.50515747070312 ] - ] - }, - { - "UUID": "FDB6E9B321F59B54A2C5C86E5C7115E6", - "SemanticClassifications": [ - "WALL_FACE" - ], - "Transform": - { - "Translation": [ -100.43122768403643, 174.61351156235941, 1.9896067660616943 ], - "Rotation": [ 1.2842223247239193e-06, 97.827956772803347, 0.097884147130853222 ], - "Scale": [ 1, 1, 1 ] - }, - "PlaneBounds": - { - "Min": [ -69.250226020812988, -131.50515556335449 ], - "Max": [ 69.250202178955078, 131.50515556335449 ] - }, - "PlaneBoundary2D": [ - [ -69.250228881835938, -131.50515747070312 ], - [ 69.250198364257812, -131.50515747070312 ], - [ 69.250198364257812, 131.50515747070312 ], - [ -69.250228881835938, 131.50515747070312 ] - ] - }, - { - "UUID": "9FEBCF7BD9E0A320A3BD68E2D7573255", - "SemanticClassifications": [ - "WALL_FACE" - ], - "Transform": - { - "Translation": [ -34.790527820602257, 202.89564132691075, 2.1287299684011187 ], - "Rotation": [ -1.0115972258972956e-05, -171.06118467085236, 0.06147233833058962 ], - "Scale": [ 1, 1, 1 ] - }, - "PlaneBounds": - { - "Min": [ -19.081306457519531, -131.50515556335449 ], - "Max": [ 19.081234931945801, 131.50515556335449 ] - }, - "PlaneBoundary2D": [ - [ -19.081306457519531, -131.50515747070312 ], - [ 19.081233978271484, -131.50515747070312 ], - [ 19.081233978271484, 131.50515747070312 ], - [ -19.081306457519531, 131.50515747070312 ] - ] - }, - { - "UUID": "684B956C3E0B9B03333C994A34A4E6FE", - "SemanticClassifications": [ - "WALL_FACE" - ], - "Transform": - { - "Translation": [ 16.105192899689577, 231.2756061553977, 2.2447273133977301 ], - "Rotation": [ 7.2258907058959033e-07, 100.03382109181877, 0.10042065591246373 ], - "Scale": [ 1, 1, 1 ] - }, - "PlaneBounds": - { - "Min": [ -54.698985815048218, -131.50515556335449 ], - "Max": [ 54.699009656906128, 131.50515556335449 ] - }, - "PlaneBoundary2D": [ - [ -54.698986053466797, -131.50515747070312 ], - [ 54.699008941650391, -131.50515747070312 ], - [ 54.699008941650391, 131.50515747070312 ], - [ -54.698986053466797, 131.50515747070312 ] - ] - }, - { - "UUID": "61345A4CA1A00C5C18C7AC3423376901", - "SemanticClassifications": [ - "WALL_FACE" - ], - "Transform": - { - "Translation": [ 105.0693631171911, 76.471978425973873, 2.1759346142524829 ], - "Rotation": [ 8.2498766259047504e-06, 12.057146123987874, -0.056147079105301173 ], - "Scale": [ 1, 1, 1 ] - }, - "PlaneBounds": - { - "Min": [ -168.04091930389404, -131.50515556335449 ], - "Max": [ 168.04091930389404, 131.50515556335449 ] - }, - "PlaneBoundary2D": [ - [ -168.04092407226562, -131.50515747070312 ], - [ 168.04092407226562, -131.50515747070312 ], - [ 168.04092407226562, 131.50515747070312 ], - [ -168.04092407226562, 131.50515747070312 ] - ] - }, - { - "UUID": "934CE75D63F0856A9438DAB3ADA95409", - "SemanticClassifications": [ - "WALL_FACE" - ], - "Transform": - { - "Translation": [ -33.873659372366134, -114.39212560653117, 1.7077162858417783 ], - "Rotation": [ -2.0387201971063733e-06, -81.333117613062029, -0.098900144058006831 ], - "Scale": [ 1, 1, 1 ] - }, - "PlaneBounds": - { - "Min": [ -176.05507373809814, -131.50515556335449 ], - "Max": [ 176.05516910552979, 131.50515556335449 ] - }, - "PlaneBoundary2D": [ - [ -176.05506896972656, -131.50515747070312 ], - [ 176.05517578125, -131.50515747070312 ], - [ 176.05517578125, 131.50515747070312 ], - [ -176.05506896972656, 131.50515747070312 ] - ] - },)" /* Split to avoid C2026 compile error */ R"( - { - "UUID": "4408BCA30B3EA779992A41339E9BD15E", - "SemanticClassifications": [ - "FLOOR" - ], - "Transform": - { - "Translation": [ -62.879419324774886, 46.623498201168552, -129.62889671430307 ], - "Rotation": [ -90, 5.7098574004030409, 4.5827907590734602 ], - "Scale": [ 1, 1, 1 ] - }, - "PlaneBounds": - { - "Min": [ -168.46499443054199, -175.98437070846558 ], - "Max": [ 168.46499443054199, 175.98425149917603 ] - }, - "PlaneBoundary2D": [ - [ -158.47563171386719, -175.98432922363281 ], - [ 168.46498107910156, -175.984375 ], - [ 166.66807556152344, -81.945053100585938 ], - [ 135.75675964355469, -83.034469604492188 ], - [ 129.80014038085938, 55.337821960449219 ], - [ 167.95199584960938, 56.239284515380859 ], - [ 167.45750427246094, 165.63619995117188 ], - [ -168.46499633789062, 175.9842529296875 ] - ] - }, - { - "UUID": "4C1D763C44C3462F4DA730971E171502", - "SemanticClassifications": [ - "CEILING" - ], - "Transform": - { - "Translation": [ -68.207877876431567, 45.219242573003598, 133.37569236642736 ], - "Rotation": [ 90, 5.8687227517986269, -6.1892048707873073 ], - "Scale": [ 1, 1, 1 ] - }, - "PlaneBounds": - { - "Min": [ -173.80368709564209, -175.7470965385437 ], - "Max": [ 173.8037109375, 175.74702501296997 ] - }, - "PlaneBoundary2D": [ - [ -173.80368041992188, -175.74710083007812 ], - [ 162.27815246582031, -175.74705505371094 ], - [ 166.14077758789062, -66.417259216308594 ], - [ 128.03475952148438, -64.341514587402344 ], - [ 138.24908447265625, 73.781753540039062 ], - [ 169.11221313476562, 71.741104125976562 ], - [ 173.8037109375, 165.68048095703125 ], - [ -152.98185729980469, 175.74703979492188 ] - ] - }, - { - "UUID": "BEEE3CD75BC02ABF219D9989481AE798", - "SemanticClassifications": [ - "COUCH" - ], - "Transform": - { - "Translation": [ -145.87221145497207, 107.07900524127058, -85.245281460326424 ], - "Rotation": [ -90, -90, -169.62584716890692 ], - "Scale": [ 1, 1, 1 ] - }, - "PlaneBounds": - { - "Min": [ -101.4635443687439, -45.093107223510742 ], - "Max": [ 101.4635443687439, 45.093107223510742 ] - }, - "PlaneBoundary2D": [ - [ -101.46353149414062, -45.093109130859375 ], - [ 101.46354675292969, -45.093082427978516 ], - [ 101.46352386474609, 45.093109130859375 ], - [ -101.46354675292969, 45.093109130859375 ] - ], - "VolumeBounds": - { - "Min": [ -12.15549111366272, -101.46353244781494, -45.093107223510742 ], - "Max": [ 44.450020790100098, 101.46348476409912, 45.093095302581787 ] - } - }, - { - "UUID": "B369DAC9913F4653CF0006D292B47E67", - "SemanticClassifications": [ - "DOOR_FRAME" - ], - "Transform": - { - "Translation": [ -164.08888101534376, -134.22880172732661, -28.83420884841345 ], - "Rotation": [ -3.064696784341266e-06, -81.293136003547502, -0.079074311984811629 ], - "Scale": [ 1, 1, 1 ] - }, - "PlaneBounds": - { - "Min": [ -38.468444347381592, -100.21964311599731 ], - "Max": [ 38.468444347381592, 100.2196192741394 ] - }, - "PlaneBoundary2D": [ - [ -38.46844482421875, -100.21964263916016 ], - [ 38.46844482421875, -100.21964263916016 ], - [ 38.46844482421875, 100.21963500976562 ], - [ -38.46844482421875, 100.21963500976562 ] - ] - }, - { - "UUID": "7882FF81023E5FB0164183884565F6B7", - "SemanticClassifications": [ - "WINDOW_FRAME" - ], - "Transform": - { - "Translation": [ 86.993300914358954, 160.30499935153722, 27.146616579190244 ], - "Rotation": [ 1.0255014892597823e-05, 11.946979537953439, -0.012821439033643854 ], - "Scale": [ 1, 1, 1 ] - }, - "PlaneBounds": - { - "Min": [ -57.708847522735596, -86.471712589263916 ], - "Max": [ 57.708847522735596, 86.471712589263916 ] - }, - "PlaneBoundary2D": [ - [ -57.708847045898438, -86.471710205078125 ], - [ 57.708847045898438, -86.471710205078125 ], - [ 57.708847045898438, 86.471717834472656 ], - [ -57.708847045898438, 86.471717834472656 ] - ] - }, - { - "UUID": "1E578C3E9E7B495E9F8BB00A3722B619", - "SemanticClassifications": [ - "TABLE" - ], - "Transform": - { - "Translation": [ 66.697609425381202, -9.7909413278979525, -51.18460655107765 ], - "Rotation": [ -90, -9.1488098605304629, -70.663235424372601 ], - "Scale": [ 1, 1, 1 ] - }, - "PlaneBounds": - { - "Min": [ -38.959389925003052, -79.420942068099976 ], - "Max": [ 38.959354162216187, 79.42090630531311 ] - }, - "PlaneBoundary2D": [ - [ -38.959377288818359, -79.420944213867188 ], - [ 38.959354400634766, -79.420928955078125 ], - [ 38.959331512451172, 79.420913696289062 ], - [ -38.959388732910156, 79.420913696289062 ] - ], - "VolumeBounds": - { - "Min": [ 5.9604644775390625e-06, -38.959383964538574, -79.420942068099976 ], - "Max": [ 78.46105694770813, 38.959354162216187, 79.42090630531311 ] - } - }, - { - "UUID": "4F3D506941FCDF2CDE529B778F7E2CA0", - "SemanticClassifications": [ - "SCREEN" - ], - "Transform": - { - "Translation": [ 83.592164516498727, 41.190987825381569, -2.9855161893029019 ], - "Rotation": [ -90, 19.567800483011322, -8.7111107546809308 ], - "Scale": [ 1, 1, 1 ] - }, - "VolumeBounds": - { - "Min": [ 0, -29.970204830169678, -4.4041812419891357 ], - "Max": [ 48.06218147277832, 29.970204830169678, 4.4041812419891357 ] - } - }, - { - "UUID": "1BC70912D34BC775AA6D9C55D200683A", - "SemanticClassifications": [ - "SCREEN" - ], - "Transform": - { - "Translation": [ 88.798236847054, -18.041059374830681, -8.5256248698528676 ], - "Rotation": [ -90, -0.2501150240923925, -5.5051996855984839 ], - "Scale": [ 1, 1, 1 ] - }, - "VolumeBounds": - { - "Min": [ 0, -27.590945363044739, -4.127839207649231 ], - "Max": [ 42.597478628158569, 27.590939402580261, 4.127839207649231 ] - } - }, - { - "UUID": "96EEDAE94C716C89C0402CF62DADFEB3", - "SemanticClassifications": [ - "STORAGE" - ], - "Transform": - { - "Translation": [ -24.263715742939379, -84.267413616290682, -70.311057567836698 ], - "Rotation": [ -90, 41.440284814176032, -121.04073774753104 ], - "Scale": [ 1, 1, 1 ] - }, - "VolumeBounds": - { - "Min": [ 0, -21.163803339004517, -20.850077271461487 ], - "Max": [ 59.604281187057495, 21.163803339004517, 20.850077271461487 ] - } - }, - { - "UUID": "B8823BA241D69E1B5A3E716FDC16C035", - "SemanticClassifications": [ - "STORAGE" - ], - "Transform": - { - "Translation": [ 21.055686474657758, -75.153601169672626, -52.926862239392129 ], - "Rotation": [ -90, 28.361682644897524, -108.18860733843303 ], - "Scale": [ 1, 1, 1 ] - }, - "VolumeBounds": - { - "Min": [ 0, -15.779599547386169, -26.403164863586426 ], - "Max": [ 76.910203695297241, 15.779599547386169, 26.403164863586426 ] - } - }, - { - "UUID": "3902154E700E7DFCEFCDD31C7CEEA21D", - "SemanticClassifications": [ - "STORAGE" - ], - "Transform": - { - "Translation": [ 10.554808378627637, 190.61878919597299, -25.321662426136452 ], - "Rotation": [ -90, -5.9319241808660053, 103.25628078485644 ], - "Scale": [ 1, 1, 1 ] - }, - "VolumeBounds": - { - "Min": [ 0, -40.154829621315002, -22.992253303527832 ], - "Max": [ 103.86097431182861, 40.154829621315002, 22.992253303527832 ] - } - }, - { - "UUID": "FE43EA80E4940D9BE1D4FC4F55400F5A", - "SemanticClassifications": [ - "STORAGE" - ], - "Transform": - { - "Translation": [ -217.31374263794015, 167.31386184697604, 20.74184566373647 ], - "Rotation": [ -90, 90, 9.7579414672703049 ], - "Scale": [ 1, 1, 1 ] - }, - "VolumeBounds": - { - "Min": [ 0, -43.242943286895752, -19.515424966812134 ], - "Max": [ 150.6071925163269, 43.242943286895752, 19.515424966812134 ] - } - }, - { - "UUID": "FBB8A4242C93CC2BC546074B344D408A", - "SemanticClassifications": [ - "WALL_ART" - ], - "Transform": - { - "Translation": [ -140.19610881877907, 169.11414861687959, 47.865357992596394 ], - "Rotation": [ 1.4241377381107315e-06, 97.805118132482875, 0.16563613933941604 ], - "Scale": [ 1, 1, 1 ] - }, - "PlaneBounds": - { - "Min": [ -22.393298149108887, -17.249716818332672 ], - "Max": [ 22.393357753753662, 17.249719798564911 ] - }, - "PlaneBoundary2D": [ - [ -22.393299102783203, -17.249717712402344 ], - [ 22.39335823059082, -17.249717712402344 ], - [ 22.39335823059082, 17.249711990356445 ], - [ -22.393299102783203, 17.249717712402344 ] - ] - }, - { - "UUID": "63DD7C430C6AF808234FA1EA70EB1135", - "SemanticClassifications": [ - "WALL_ART" - ], - "Transform": - { - "Translation": [ -61.326617003108687, 179.92563247687792, 41.238221524910614 ], - "Rotation": [ 2.9892305539357142e-06, 97.766337493616959, 0.15780471846346075 ], - "Scale": [ 1, 1, 1 ] - }, - "PlaneBounds": - { - "Min": [ -21.803402900695801, -17.437992990016937 ], - "Max": [ 21.803414821624756, 17.437995970249176 ] - }, - "PlaneBoundary2D": [ - [ -21.803401947021484, -17.437992095947266 ], - [ 21.803415298461914, -17.437992095947266 ], - [ 21.803415298461914, 17.437997817993164 ], - [ -21.803401947021484, 17.437997817993164 ] - ] - }, - { - "UUID": "DE8DDDD990AD5FCB8E7E237E938CB0D3", - "SemanticClassifications": [ - "WALL_ART" - ], - "Transform": - { - "Translation": [ 16.382831334551845, 231.31909370427766, 34.696799516561285 ], - "Rotation": [ 3.9054193939550909e-06, 100.14347625836002, 0.047545250325334014 ], - "Scale": [ 1, 1, 1 ] - }, - "PlaneBounds": - { - "Min": [ -17.035198211669922, -23.50517213344574 ], - "Max": [ 17.035174369812012, 23.505175113677979 ] - }, - "PlaneBoundary2D": [ - [ -17.035198211669922, -23.505172729492188 ], - [ 17.035175323486328, -23.505172729492188 ], - [ 17.035175323486328, 23.50517463684082 ], - [ -17.035186767578125, 23.50517463684082 ] - ] - } - ] - } - ] -})"); - -const TCHAR* ExampleRoomMoreFurnitureAddedJson = TEXT(R"( -{ - "Rooms": [ - { - "UUID": "7CDDA638E08442FF193FD34FE9E42850", - "RoomLayout": - { - "FloorUuid": "4408BCA30B3EA779992A41339E9BD15E", - "CeilingUuid": "4C1D763C44C3462F4DA730971E171502", - "WallsUuid": [ - "195FA745A478AF0C8FB57CEB03B22863", - "A9EC4ACC695D848A817A9638C4084117", - "1C751664D717BE40458D9EC34BD5D378", - "FDB6E9B321F59B54A2C5C86E5C7115E6", - "9FEBCF7BD9E0A320A3BD68E2D7573255", - "684B956C3E0B9B03333C994A34A4E6FE", - "61345A4CA1A00C5C18C7AC3423376901", - "934CE75D63F0856A9438DAB3ADA95409" - ] - }, - "Anchors": [ - { - "UUID": "195FA745A478AF0C8FB57CEB03B22863", - "SemanticClassifications": [ - "WALL_FACE" - ], - "Transform": - { - "Translation": [ -237.12472915651662, 19.925808906578482, 1.5676200352898995 ], - "Rotation": [ -1.1819296446447803e-05, -169.70749357033259, 0.057707750157921504 ], - "Scale": [ 1, 1, 1 ] - }, - "PlaneBounds": - { - "Min": [ -163.47031593322754, -131.50515556335449 ], - "Max": [ 163.47026824951172, 131.50515556335449 ] - }, - "PlaneBoundary2D": [ - [ -163.47032165527344, -131.50515747070312 ], - [ 163.47027587890625, -131.50515747070312 ], - [ 163.47027587890625, 131.50515747070312 ], - [ -163.47032165527344, 131.50515747070312 ] - ] - }, - { - "UUID": "A9EC4ACC695D848A817A9638C4084117", - "SemanticClassifications": [ - "WALL_FACE" - ], - "Transform": - { - "Translation": [ -219.91224288941592, 188.27182054521873, 1.8210597299298268 ], - "Rotation": [ 7.4741822743562458e-07, 99.198330970154288, 0.098590620438120544 ], - "Scale": [ 1, 1, 1 ] - }, - "PlaneBounds": - { - "Min": [ -47.028231620788574, -131.50515556335449 ], - "Max": [ 47.028231620788574, 131.50515556335449 ] - }, - "PlaneBoundary2D": [ - [ -47.028232574462891, -131.50515747070312 ], - [ 47.028232574462891, -131.50515747070312 ], - [ 47.028232574462891, 131.50515747070312 ], - [ -47.028232574462891, 131.50515747070312 ] - ] - }, - { - "UUID": "1C751664D717BE40458D9EC34BD5D378", - "SemanticClassifications": [ - "WALL_FACE" - ], - "Transform": - { - "Translation": [ -171.26309871674914, 180.48512935640233, 1.8855862290118015 ], - "Rotation": [ 6.4467732645053494e-06, 8.2745309490490655, -0.061610071422649071 ], - "Scale": [ 1, 1, 1 ] - }, - "PlaneBounds": - { - "Min": [ -15.465247631072998, -131.50515556335449 ], - "Max": [ 15.465259552001953, 131.50515556335449 ] - }, - "PlaneBoundary2D": [ - [ -15.465248107910156, -131.50515747070312 ], - [ 15.465259552001953, -131.50515747070312 ], - [ 15.465259552001953, 131.50515747070312 ], - [ -15.465248107910156, 131.50515747070312 ] - ] - }, - { - "UUID": "FDB6E9B321F59B54A2C5C86E5C7115E6", - "SemanticClassifications": [ - "WALL_FACE" - ], - "Transform": - { - "Translation": [ -100.43122768403643, 174.61351156235941, 1.9896067660616943 ], - "Rotation": [ 1.2842223247239193e-06, 97.827956772803347, 0.097884147130853222 ], - "Scale": [ 1, 1, 1 ] - }, - "PlaneBounds": - { - "Min": [ -69.250226020812988, -131.50515556335449 ], - "Max": [ 69.250202178955078, 131.50515556335449 ] - }, - "PlaneBoundary2D": [ - [ -69.250228881835938, -131.50515747070312 ], - [ 69.250198364257812, -131.50515747070312 ], - [ 69.250198364257812, 131.50515747070312 ], - [ -69.250228881835938, 131.50515747070312 ] - ] - }, - { - "UUID": "9FEBCF7BD9E0A320A3BD68E2D7573255", - "SemanticClassifications": [ - "WALL_FACE" - ], - "Transform": - { - "Translation": [ -34.790527820602257, 202.89564132691075, 2.1287299684011187 ], - "Rotation": [ -1.0115972258972956e-05, -171.06118467085236, 0.06147233833058962 ], - "Scale": [ 1, 1, 1 ] - }, - "PlaneBounds": - { - "Min": [ -19.081306457519531, -131.50515556335449 ], - "Max": [ 19.081234931945801, 131.50515556335449 ] - }, - "PlaneBoundary2D": [ - [ -19.081306457519531, -131.50515747070312 ], - [ 19.081233978271484, -131.50515747070312 ], - [ 19.081233978271484, 131.50515747070312 ], - [ -19.081306457519531, 131.50515747070312 ] - ] - }, - { - "UUID": "684B956C3E0B9B03333C994A34A4E6FE", - "SemanticClassifications": [ - "WALL_FACE" - ], - "Transform": - { - "Translation": [ 16.105192899689577, 231.2756061553977, 2.2447273133977301 ], - "Rotation": [ 7.2258907058959033e-07, 100.03382109181877, 0.10042065591246373 ], - "Scale": [ 1, 1, 1 ] - }, - "PlaneBounds": - { - "Min": [ -54.698985815048218, -131.50515556335449 ], - "Max": [ 54.699009656906128, 131.50515556335449 ] - }, - "PlaneBoundary2D": [ - [ -54.698986053466797, -131.50515747070312 ], - [ 54.699008941650391, -131.50515747070312 ], - [ 54.699008941650391, 131.50515747070312 ], - [ -54.698986053466797, 131.50515747070312 ] - ] - }, - { - "UUID": "61345A4CA1A00C5C18C7AC3423376901", - "SemanticClassifications": [ - "WALL_FACE" - ], - "Transform": - { - "Translation": [ 105.0693631171911, 76.471978425973873, 2.1759346142524829 ], - "Rotation": [ 8.2498766259047504e-06, 12.057146123987874, -0.056147079105301173 ], - "Scale": [ 1, 1, 1 ] - }, - "PlaneBounds": - { - "Min": [ -168.04091930389404, -131.50515556335449 ], - "Max": [ 168.04091930389404, 131.50515556335449 ] - }, - "PlaneBoundary2D": [ - [ -168.04092407226562, -131.50515747070312 ], - [ 168.04092407226562, -131.50515747070312 ], - [ 168.04092407226562, 131.50515747070312 ], - [ -168.04092407226562, 131.50515747070312 ] - ] - }, - { - "UUID": "934CE75D63F0856A9438DAB3ADA95409", - "SemanticClassifications": [ - "WALL_FACE" - ], - "Transform": - { - "Translation": [ -33.873659372366134, -114.39212560653117, 1.7077162858417783 ], - "Rotation": [ -2.0387201971063733e-06, -81.333117613062029, -0.098900144058006831 ], - "Scale": [ 1, 1, 1 ] - }, - "PlaneBounds": - { - "Min": [ -176.05507373809814, -131.50515556335449 ], - "Max": [ 176.05516910552979, 131.50515556335449 ] - }, - "PlaneBoundary2D": [ - [ -176.05506896972656, -131.50515747070312 ], - [ 176.05517578125, -131.50515747070312 ], - [ 176.05517578125, 131.50515747070312 ], - [ -176.05506896972656, 131.50515747070312 ] - ] - },)" /* Split to avoid C2026 compile error */ R"( - { - "UUID": "4408BCA30B3EA779992A41339E9BD15E", - "SemanticClassifications": [ - "FLOOR" - ], - "Transform": - { - "Translation": [ -62.879419324774886, 46.623498201168552, -129.62889671430307 ], - "Rotation": [ -90, 5.7098574004030409, 4.5827907590734602 ], - "Scale": [ 1, 1, 1 ] - }, - "PlaneBounds": - { - "Min": [ -168.46499443054199, -175.98437070846558 ], - "Max": [ 168.46499443054199, 175.98425149917603 ] - }, - "PlaneBoundary2D": [ - [ -158.47563171386719, -175.98432922363281 ], - [ 168.46498107910156, -175.984375 ], - [ 166.66807556152344, -81.945053100585938 ], - [ 135.75675964355469, -83.034469604492188 ], - [ 129.80014038085938, 55.337821960449219 ], - [ 167.95199584960938, 56.239284515380859 ], - [ 167.45750427246094, 165.63619995117188 ], - [ -168.46499633789062, 175.9842529296875 ] - ] - }, - { - "UUID": "4C1D763C44C3462F4DA730971E171502", - "SemanticClassifications": [ - "CEILING" - ], - "Transform": - { - "Translation": [ -68.207877876431567, 45.219242573003598, 133.37569236642736 ], - "Rotation": [ 90, 5.8687227517986269, -6.1892048707873073 ], - "Scale": [ 1, 1, 1 ] - }, - "PlaneBounds": - { - "Min": [ -173.80368709564209, -175.7470965385437 ], - "Max": [ 173.8037109375, 175.74702501296997 ] - }, - "PlaneBoundary2D": [ - [ -173.80368041992188, -175.74710083007812 ], - [ 162.27815246582031, -175.74705505371094 ], - [ 166.14077758789062, -66.417259216308594 ], - [ 128.03475952148438, -64.341514587402344 ], - [ 138.24908447265625, 73.781753540039062 ], - [ 169.11221313476562, 71.741104125976562 ], - [ 173.8037109375, 165.68048095703125 ], - [ -152.98185729980469, 175.74703979492188 ] - ] - }, - { - "UUID": "BEEE3CD75BC02ABF219D9989481AE798", - "SemanticClassifications": [ - "COUCH" - ], - "Transform": - { - "Translation": [ -145.87221145497207, 107.07900524127058, -85.245281460326424 ], - "Rotation": [ -90, -90, -169.62584716890692 ], - "Scale": [ 1, 1, 1 ] - }, - "PlaneBounds": - { - "Min": [ -101.4635443687439, -45.093107223510742 ], - "Max": [ 101.4635443687439, 45.093107223510742 ] - }, - "PlaneBoundary2D": [ - [ -101.46353149414062, -45.093109130859375 ], - [ 101.46354675292969, -45.093082427978516 ], - [ 101.46352386474609, 45.093109130859375 ], - [ -101.46354675292969, 45.093109130859375 ] - ], - "VolumeBounds": - { - "Min": [ -12.15549111366272, -101.46353244781494, -45.093107223510742 ], - "Max": [ 44.450020790100098, 101.46348476409912, 45.093095302581787 ] - } - }, - { - "UUID": "AEEE3CD75BC02ABF219D9989481AE778", - "SemanticClassifications": [ - "COUCH" - ], - "Transform": - { - "Translation": [ -145.87221145497207, 107.07900524127058, -85.245281460326424 ], - "Rotation": [ -90, -90, -169.62584716890692 ], - "Scale": [ 1, 1, 1 ] - }, - "PlaneBounds": - { - "Min": [ -101.4635443687439, -45.093107223510742 ], - "Max": [ 101.4635443687439, 45.093107223510742 ] - }, - "PlaneBoundary2D": [ - [ -101.46353149414062, -45.093109130859375 ], - [ 101.46354675292969, -45.093082427978516 ], - [ 101.46352386474609, 45.093109130859375 ], - [ -101.46354675292969, 45.093109130859375 ] - ], - "VolumeBounds": - { - "Min": [ -12.15549111366272, -101.46353244781494, -45.093107223510742 ], - "Max": [ 44.450020790100098, 101.46348476409912, 45.093095302581787 ] - } - }, - { - "UUID": "BAEE3CD65BC02ABF219D9989481AE798", - "SemanticClassifications": [ - "COUCH" - ], - "Transform": - { - "Translation": [ -145.87221145497207, 107.07900524127058, -85.245281460326424 ], - "Rotation": [ -90, -90, -169.62584716890692 ], - "Scale": [ 1, 1, 1 ] - }, - "PlaneBounds": - { - "Min": [ -101.4635443687439, -45.093107223510742 ], - "Max": [ 101.4635443687439, 45.093107223510742 ] - }, - "PlaneBoundary2D": [ - [ -101.46353149414062, -45.093109130859375 ], - [ 101.46354675292969, -45.093082427978516 ], - [ 101.46352386474609, 45.093109130859375 ], - [ -101.46354675292969, 45.093109130859375 ] - ], - "VolumeBounds": - { - "Min": [ -12.15549111366272, -101.46353244781494, -45.093107223510742 ], - "Max": [ 44.450020790100098, 101.46348476409912, 45.093095302581787 ] - } - }, - { - "UUID": "B369DAC9913F4653CF0006D292B47E67", - "SemanticClassifications": [ - "DOOR_FRAME" - ], - "Transform": - { - "Translation": [ -164.08888101534376, -134.22880172732661, -28.83420884841345 ], - "Rotation": [ -3.064696784341266e-06, -81.293136003547502, -0.079074311984811629 ], - "Scale": [ 1, 1, 1 ] - }, - "PlaneBounds": - { - "Min": [ -38.468444347381592, -100.21964311599731 ], - "Max": [ 38.468444347381592, 100.2196192741394 ] - }, - "PlaneBoundary2D": [ - [ -38.46844482421875, -100.21964263916016 ], - [ 38.46844482421875, -100.21964263916016 ], - [ 38.46844482421875, 100.21963500976562 ], - [ -38.46844482421875, 100.21963500976562 ] - ] - }, - { - "UUID": "A379DAC9913F4653CF0006D292B47E67", - "SemanticClassifications": [ - "DOOR_FRAME" - ], - "Transform": - { - "Translation": [ -164.08888101534376, -134.22880172732661, -28.83420884841345 ], - "Rotation": [ -3.064696784341266e-06, -81.293136003547502, -0.079074311984811629 ], - "Scale": [ 1, 1, 1 ] - }, - "PlaneBounds": - { - "Min": [ -38.468444347381592, -100.21964311599731 ], - "Max": [ 38.468444347381592, 100.2196192741394 ] - }, - "PlaneBoundary2D": [ - [ -38.46844482421875, -100.21964263916016 ], - [ 38.46844482421875, -100.21964263916016 ], - [ 38.46844482421875, 100.21963500976562 ], - [ -38.46844482421875, 100.21963500976562 ] - ] - }, - { - "UUID": "7882FF81023E5FB0164183884565F6B7", - "SemanticClassifications": [ - "WINDOW_FRAME" - ], - "Transform": - { - "Translation": [ 86.993300914358954, 160.30499935153722, 27.146616579190244 ], - "Rotation": [ 1.0255014892597823e-05, 11.946979537953439, -0.012821439033643854 ], - "Scale": [ 1, 1, 1 ] - }, - "PlaneBounds": - { - "Min": [ -57.708847522735596, -86.471712589263916 ], - "Max": [ 57.708847522735596, 86.471712589263916 ] - }, - "PlaneBoundary2D": [ - [ -57.708847045898438, -86.471710205078125 ], - [ 57.708847045898438, -86.471710205078125 ], - [ 57.708847045898438, 86.471717834472656 ], - [ -57.708847045898438, 86.471717834472656 ] - ] - }, - { - "UUID": "1E578C3E9E7B495E9F8BB00A3722B619", - "SemanticClassifications": [ - "TABLE" - ], - "Transform": - { - "Translation": [ 66.697609425381202, -9.7909413278979525, -51.18460655107765 ], - "Rotation": [ -90, -9.1488098605304629, -70.663235424372601 ], - "Scale": [ 1, 1, 1 ] - }, - "PlaneBounds": - { - "Min": [ -38.959389925003052, -79.420942068099976 ], - "Max": [ 38.959354162216187, 79.42090630531311 ] - }, - "PlaneBoundary2D": [ - [ -38.959377288818359, -79.420944213867188 ], - [ 38.959354400634766, -79.420928955078125 ], - [ 38.959331512451172, 79.420913696289062 ], - [ -38.959388732910156, 79.420913696289062 ] - ], - "VolumeBounds": - { - "Min": [ 5.9604644775390625e-06, -38.959383964538574, -79.420942068099976 ], - "Max": [ 78.46105694770813, 38.959354162216187, 79.42090630531311 ] - } - }, - { - "UUID": "4F3D506941FCDF2CDE529B778F7E2CA0", - "SemanticClassifications": [ - "SCREEN" - ], - "Transform": - { - "Translation": [ 83.592164516498727, 41.190987825381569, -2.9855161893029019 ], - "Rotation": [ -90, 19.567800483011322, -8.7111107546809308 ], - "Scale": [ 1, 1, 1 ] - }, - "VolumeBounds": - { - "Min": [ 0, -29.970204830169678, -4.4041812419891357 ], - "Max": [ 48.06218147277832, 29.970204830169678, 4.4041812419891357 ] - } - }, - { - "UUID": "1BC70912D34BC775AA6D9C55D200683A", - "SemanticClassifications": [ - "SCREEN" - ], - "Transform": - { - "Translation": [ 88.798236847054, -18.041059374830681, -8.5256248698528676 ], - "Rotation": [ -90, -0.2501150240923925, -5.5051996855984839 ], - "Scale": [ 1, 1, 1 ] - }, - "VolumeBounds": - { - "Min": [ 0, -27.590945363044739, -4.127839207649231 ], - "Max": [ 42.597478628158569, 27.590939402580261, 4.127839207649231 ] - } - }, - { - "UUID": "96EEDAE94C716C89C0402CF62DADFEB3", - "SemanticClassifications": [ - "STORAGE" - ], - "Transform": - { - "Translation": [ -24.263715742939379, -84.267413616290682, -70.311057567836698 ], - "Rotation": [ -90, 41.440284814176032, -121.04073774753104 ], - "Scale": [ 1, 1, 1 ] - }, - "VolumeBounds": - { - "Min": [ 0, -21.163803339004517, -20.850077271461487 ], - "Max": [ 59.604281187057495, 21.163803339004517, 20.850077271461487 ] - } - }, - { - "UUID": "B8823BA241D69E1B5A3E716FDC16C035", - "SemanticClassifications": [ - "STORAGE" - ], - "Transform": - { - "Translation": [ 21.055686474657758, -75.153601169672626, -52.926862239392129 ], - "Rotation": [ -90, 28.361682644897524, -108.18860733843303 ], - "Scale": [ 1, 1, 1 ] - }, - "VolumeBounds": - { - "Min": [ 0, -15.779599547386169, -26.403164863586426 ], - "Max": [ 76.910203695297241, 15.779599547386169, 26.403164863586426 ] - } - }, - { - "UUID": "3902154E700E7DFCEFCDD31C7CEEA21D", - "SemanticClassifications": [ - "STORAGE" - ], - "Transform": - { - "Translation": [ 10.554808378627637, 190.61878919597299, -25.321662426136452 ], - "Rotation": [ -90, -5.9319241808660053, 103.25628078485644 ], - "Scale": [ 1, 1, 1 ] - }, - "VolumeBounds": - { - "Min": [ 0, -40.154829621315002, -22.992253303527832 ], - "Max": [ 103.86097431182861, 40.154829621315002, 22.992253303527832 ] - } - }, - { - "UUID": "FE43EA80E4940D9BE1D4FC4F55400F5A", - "SemanticClassifications": [ - "STORAGE" - ], - "Transform": - { - "Translation": [ -217.31374263794015, 167.31386184697604, 20.74184566373647 ], - "Rotation": [ -90, 90, 9.7579414672703049 ], - "Scale": [ 1, 1, 1 ] - }, - "VolumeBounds": - { - "Min": [ 0, -43.242943286895752, -19.515424966812134 ], - "Max": [ 150.6071925163269, 43.242943286895752, 19.515424966812134 ] - } - }, - { - "UUID": "FBB8A4242C93CC2BC546074B344D408A", - "SemanticClassifications": [ - "WALL_ART" - ], - "Transform": - { - "Translation": [ -140.19610881877907, 169.11414861687959, 47.865357992596394 ], - "Rotation": [ 1.4241377381107315e-06, 97.805118132482875, 0.16563613933941604 ], - "Scale": [ 1, 1, 1 ] - }, - "PlaneBounds": - { - "Min": [ -22.393298149108887, -17.249716818332672 ], - "Max": [ 22.393357753753662, 17.249719798564911 ] - }, - "PlaneBoundary2D": [ - [ -22.393299102783203, -17.249717712402344 ], - [ 22.39335823059082, -17.249717712402344 ], - [ 22.39335823059082, 17.249711990356445 ], - [ -22.393299102783203, 17.249717712402344 ] - ] - }, - { - "UUID": "63DD7C430C6AF808234FA1EA70EB1135", - "SemanticClassifications": [ - "WALL_ART" - ], - "Transform": - { - "Translation": [ -61.326617003108687, 179.92563247687792, 41.238221524910614 ], - "Rotation": [ 2.9892305539357142e-06, 97.766337493616959, 0.15780471846346075 ], - "Scale": [ 1, 1, 1 ] - }, - "PlaneBounds": - { - "Min": [ -21.803402900695801, -17.437992990016937 ], - "Max": [ 21.803414821624756, 17.437995970249176 ] - }, - "PlaneBoundary2D": [ - [ -21.803401947021484, -17.437992095947266 ], - [ 21.803415298461914, -17.437992095947266 ], - [ 21.803415298461914, 17.437997817993164 ], - [ -21.803401947021484, 17.437997817993164 ] - ] - }, - { - "UUID": "DE8DDDD990AD5FCB8E7E237E938CB0D3", - "SemanticClassifications": [ - "WALL_ART" - ], - "Transform": - { - "Translation": [ 16.382831334551845, 231.31909370427766, 34.696799516561285 ], - "Rotation": [ 3.9054193939550909e-06, 100.14347625836002, 0.047545250325334014 ], - "Scale": [ 1, 1, 1 ] - }, - "PlaneBounds": - { - "Min": [ -17.035198211669922, -23.50517213344574 ], - "Max": [ 17.035174369812012, 23.505175113677979 ] - }, - "PlaneBoundary2D": [ - [ -17.035198211669922, -23.505172729492188 ], - [ 17.035175323486328, -23.505172729492188 ], - [ 17.035175323486328, 23.50517463684082 ], - [ -17.035186767578125, 23.50517463684082 ] - ] - } - ] - } - ] -})"); - -const TCHAR* ExampleRoomFurnitureAddedJson = TEXT(R"( -{ - "Rooms": [ - { - "UUID": "7CDDA638E08442FF193FD34FE9E42850", - "RoomLayout": - { - "FloorUuid": "4408BCA30B3EA779992A41339E9BD15E", - "CeilingUuid": "4C1D763C44C3462F4DA730971E171502", - "WallsUuid": [ - "195FA745A478AF0C8FB57CEB03B22863", - "A9EC4ACC695D848A817A9638C4084117", - "1C751664D717BE40458D9EC34BD5D378", - "FDB6E9B321F59B54A2C5C86E5C7115E6", - "9FEBCF7BD9E0A320A3BD68E2D7573255", - "684B956C3E0B9B03333C994A34A4E6FE", - "61345A4CA1A00C5C18C7AC3423376901", - "934CE75D63F0856A9438DAB3ADA95409" - ] - }, - "Anchors": [ - { - "UUID": "195FA745A478AF0C8FB57CEB03B22863", - "SemanticClassifications": [ - "WALL_FACE" - ], - "Transform": - { - "Translation": [ -237.12472915651662, 19.925808906578482, 1.5676200352898995 ], - "Rotation": [ -1.1819296446447803e-05, -169.70749357033259, 0.057707750157921504 ], - "Scale": [ 1, 1, 1 ] - }, - "PlaneBounds": - { - "Min": [ -163.47031593322754, -131.50515556335449 ], - "Max": [ 163.47026824951172, 131.50515556335449 ] - }, - "PlaneBoundary2D": [ - [ -163.47032165527344, -131.50515747070312 ], - [ 163.47027587890625, -131.50515747070312 ], - [ 163.47027587890625, 131.50515747070312 ], - [ -163.47032165527344, 131.50515747070312 ] - ] - }, - { - "UUID": "A9EC4ACC695D848A817A9638C4084117", - "SemanticClassifications": [ - "WALL_FACE" - ], - "Transform": - { - "Translation": [ -219.91224288941592, 188.27182054521873, 1.8210597299298268 ], - "Rotation": [ 7.4741822743562458e-07, 99.198330970154288, 0.098590620438120544 ], - "Scale": [ 1, 1, 1 ] - }, - "PlaneBounds": - { - "Min": [ -47.028231620788574, -131.50515556335449 ], - "Max": [ 47.028231620788574, 131.50515556335449 ] - }, - "PlaneBoundary2D": [ - [ -47.028232574462891, -131.50515747070312 ], - [ 47.028232574462891, -131.50515747070312 ], - [ 47.028232574462891, 131.50515747070312 ], - [ -47.028232574462891, 131.50515747070312 ] - ] - }, - { - "UUID": "1C751664D717BE40458D9EC34BD5D378", - "SemanticClassifications": [ - "WALL_FACE" - ], - "Transform": - { - "Translation": [ -171.26309871674914, 180.48512935640233, 1.8855862290118015 ], - "Rotation": [ 6.4467732645053494e-06, 8.2745309490490655, -0.061610071422649071 ], - "Scale": [ 1, 1, 1 ] - }, - "PlaneBounds": - { - "Min": [ -15.465247631072998, -131.50515556335449 ], - "Max": [ 15.465259552001953, 131.50515556335449 ] - }, - "PlaneBoundary2D": [ - [ -15.465248107910156, -131.50515747070312 ], - [ 15.465259552001953, -131.50515747070312 ], - [ 15.465259552001953, 131.50515747070312 ], - [ -15.465248107910156, 131.50515747070312 ] - ] - }, - { - "UUID": "FDB6E9B321F59B54A2C5C86E5C7115E6", - "SemanticClassifications": [ - "WALL_FACE" - ], - "Transform": - { - "Translation": [ -100.43122768403643, 174.61351156235941, 1.9896067660616943 ], - "Rotation": [ 1.2842223247239193e-06, 97.827956772803347, 0.097884147130853222 ], - "Scale": [ 1, 1, 1 ] - }, - "PlaneBounds": - { - "Min": [ -69.250226020812988, -131.50515556335449 ], - "Max": [ 69.250202178955078, 131.50515556335449 ] - }, - "PlaneBoundary2D": [ - [ -69.250228881835938, -131.50515747070312 ], - [ 69.250198364257812, -131.50515747070312 ], - [ 69.250198364257812, 131.50515747070312 ], - [ -69.250228881835938, 131.50515747070312 ] - ] - }, - { - "UUID": "9FEBCF7BD9E0A320A3BD68E2D7573255", - "SemanticClassifications": [ - "WALL_FACE" - ], - "Transform": - { - "Translation": [ -34.790527820602257, 202.89564132691075, 2.1287299684011187 ], - "Rotation": [ -1.0115972258972956e-05, -171.06118467085236, 0.06147233833058962 ], - "Scale": [ 1, 1, 1 ] - }, - "PlaneBounds": - { - "Min": [ -19.081306457519531, -131.50515556335449 ], - "Max": [ 19.081234931945801, 131.50515556335449 ] - }, - "PlaneBoundary2D": [ - [ -19.081306457519531, -131.50515747070312 ], - [ 19.081233978271484, -131.50515747070312 ], - [ 19.081233978271484, 131.50515747070312 ], - [ -19.081306457519531, 131.50515747070312 ] - ] - }, - { - "UUID": "684B956C3E0B9B03333C994A34A4E6FE", - "SemanticClassifications": [ - "WALL_FACE" - ], - "Transform": - { - "Translation": [ 16.105192899689577, 231.2756061553977, 2.2447273133977301 ], - "Rotation": [ 7.2258907058959033e-07, 100.03382109181877, 0.10042065591246373 ], - "Scale": [ 1, 1, 1 ] - }, - "PlaneBounds": - { - "Min": [ -54.698985815048218, -131.50515556335449 ], - "Max": [ 54.699009656906128, 131.50515556335449 ] - }, - "PlaneBoundary2D": [ - [ -54.698986053466797, -131.50515747070312 ], - [ 54.699008941650391, -131.50515747070312 ], - [ 54.699008941650391, 131.50515747070312 ], - [ -54.698986053466797, 131.50515747070312 ] - ] - }, - { - "UUID": "61345A4CA1A00C5C18C7AC3423376901", - "SemanticClassifications": [ - "WALL_FACE" - ], - "Transform": - { - "Translation": [ 105.0693631171911, 76.471978425973873, 2.1759346142524829 ], - "Rotation": [ 8.2498766259047504e-06, 12.057146123987874, -0.056147079105301173 ], - "Scale": [ 1, 1, 1 ] - }, - "PlaneBounds": - { - "Min": [ -168.04091930389404, -131.50515556335449 ], - "Max": [ 168.04091930389404, 131.50515556335449 ] - }, - "PlaneBoundary2D": [ - [ -168.04092407226562, -131.50515747070312 ], - [ 168.04092407226562, -131.50515747070312 ], - [ 168.04092407226562, 131.50515747070312 ], - [ -168.04092407226562, 131.50515747070312 ] - ] - }, - { - "UUID": "934CE75D63F0856A9438DAB3ADA95409", - "SemanticClassifications": [ - "WALL_FACE" - ], - "Transform": - { - "Translation": [ -33.873659372366134, -114.39212560653117, 1.7077162858417783 ], - "Rotation": [ -2.0387201971063733e-06, -81.333117613062029, -0.098900144058006831 ], - "Scale": [ 1, 1, 1 ] - }, - "PlaneBounds": - { - "Min": [ -176.05507373809814, -131.50515556335449 ], - "Max": [ 176.05516910552979, 131.50515556335449 ] - }, - "PlaneBoundary2D": [ - [ -176.05506896972656, -131.50515747070312 ], - [ 176.05517578125, -131.50515747070312 ], - [ 176.05517578125, 131.50515747070312 ], - [ -176.05506896972656, 131.50515747070312 ] - ] - },)" /* Split to avoid C2026 compile error */ R"( - { - "UUID": "4408BCA30B3EA779992A41339E9BD15E", - "SemanticClassifications": [ - "FLOOR" - ], - "Transform": - { - "Translation": [ -62.879419324774886, 46.623498201168552, -129.62889671430307 ], - "Rotation": [ -90, 5.7098574004030409, 4.5827907590734602 ], - "Scale": [ 1, 1, 1 ] - }, - "PlaneBounds": - { - "Min": [ -168.46499443054199, -175.98437070846558 ], - "Max": [ 168.46499443054199, 175.98425149917603 ] - }, - "PlaneBoundary2D": [ - [ -158.47563171386719, -175.98432922363281 ], - [ 168.46498107910156, -175.984375 ], - [ 166.66807556152344, -81.945053100585938 ], - [ 135.75675964355469, -83.034469604492188 ], - [ 129.80014038085938, 55.337821960449219 ], - [ 167.95199584960938, 56.239284515380859 ], - [ 167.45750427246094, 165.63619995117188 ], - [ -168.46499633789062, 175.9842529296875 ] - ] - }, - { - "UUID": "4C1D763C44C3462F4DA730971E171502", - "SemanticClassifications": [ - "CEILING" - ], - "Transform": - { - "Translation": [ -68.207877876431567, 45.219242573003598, 133.37569236642736 ], - "Rotation": [ 90, 5.8687227517986269, -6.1892048707873073 ], - "Scale": [ 1, 1, 1 ] - }, - "PlaneBounds": - { - "Min": [ -173.80368709564209, -175.7470965385437 ], - "Max": [ 173.8037109375, 175.74702501296997 ] - }, - "PlaneBoundary2D": [ - [ -173.80368041992188, -175.74710083007812 ], - [ 162.27815246582031, -175.74705505371094 ], - [ 166.14077758789062, -66.417259216308594 ], - [ 128.03475952148438, -64.341514587402344 ], - [ 138.24908447265625, 73.781753540039062 ], - [ 169.11221313476562, 71.741104125976562 ], - [ 173.8037109375, 165.68048095703125 ], - [ -152.98185729980469, 175.74703979492188 ] - ] - }, - { - "UUID": "BEEE3CD75BC02ABF219D9989481AE798", - "SemanticClassifications": [ - "COUCH" - ], - "Transform": - { - "Translation": [ -145.87221145497207, 107.07900524127058, -85.245281460326424 ], - "Rotation": [ -90, -90, -169.62584716890692 ], - "Scale": [ 1, 1, 1 ] - }, - "PlaneBounds": - { - "Min": [ -101.4635443687439, -45.093107223510742 ], - "Max": [ 101.4635443687439, 45.093107223510742 ] - }, - "PlaneBoundary2D": [ - [ -101.46353149414062, -45.093109130859375 ], - [ 101.46354675292969, -45.093082427978516 ], - [ 101.46352386474609, 45.093109130859375 ], - [ -101.46354675292969, 45.093109130859375 ] - ], - "VolumeBounds": - { - "Min": [ -12.15549111366272, -101.46353244781494, -45.093107223510742 ], - "Max": [ 44.450020790100098, 101.46348476409912, 45.093095302581787 ] - } - }, - { - "UUID": "BAEE3CD65BC02ABF219D9989481AE798", - "SemanticClassifications": [ - "COUCH" - ], - "Transform": - { - "Translation": [ -145.87221145497207, 107.07900524127058, -85.245281460326424 ], - "Rotation": [ -90, -90, -169.62584716890692 ], - "Scale": [ 1, 1, 1 ] - }, - "PlaneBounds": - { - "Min": [ -101.4635443687439, -45.093107223510742 ], - "Max": [ 101.4635443687439, 45.093107223510742 ] - }, - "PlaneBoundary2D": [ - [ -101.46353149414062, -45.093109130859375 ], - [ 101.46354675292969, -45.093082427978516 ], - [ 101.46352386474609, 45.093109130859375 ], - [ -101.46354675292969, 45.093109130859375 ] - ], - "VolumeBounds": - { - "Min": [ -12.15549111366272, -101.46353244781494, -45.093107223510742 ], - "Max": [ 44.450020790100098, 101.46348476409912, 45.093095302581787 ] - } - }, - { - "UUID": "B369DAC9913F4653CF0006D292B47E67", - "SemanticClassifications": [ - "DOOR_FRAME" - ], - "Transform": - { - "Translation": [ -164.08888101534376, -134.22880172732661, -28.83420884841345 ], - "Rotation": [ -3.064696784341266e-06, -81.293136003547502, -0.079074311984811629 ], - "Scale": [ 1, 1, 1 ] - }, - "PlaneBounds": - { - "Min": [ -38.468444347381592, -100.21964311599731 ], - "Max": [ 38.468444347381592, 100.2196192741394 ] - }, - "PlaneBoundary2D": [ - [ -38.46844482421875, -100.21964263916016 ], - [ 38.46844482421875, -100.21964263916016 ], - [ 38.46844482421875, 100.21963500976562 ], - [ -38.46844482421875, 100.21963500976562 ] - ] - }, - { - "UUID": "A379DAC9913F4653CF0006D292B47E67", - "SemanticClassifications": [ - "DOOR_FRAME" - ], - "Transform": - { - "Translation": [ -164.08888101534376, -134.22880172732661, -28.83420884841345 ], - "Rotation": [ -3.064696784341266e-06, -81.293136003547502, -0.079074311984811629 ], - "Scale": [ 1, 1, 1 ] - }, - "PlaneBounds": - { - "Min": [ -38.468444347381592, -100.21964311599731 ], - "Max": [ 38.468444347381592, 100.2196192741394 ] - }, - "PlaneBoundary2D": [ - [ -38.46844482421875, -100.21964263916016 ], - [ 38.46844482421875, -100.21964263916016 ], - [ 38.46844482421875, 100.21963500976562 ], - [ -38.46844482421875, 100.21963500976562 ] - ] - }, - { - "UUID": "7882FF81023E5FB0164183884565F6B7", - "SemanticClassifications": [ - "WINDOW_FRAME" - ], - "Transform": - { - "Translation": [ 86.993300914358954, 160.30499935153722, 27.146616579190244 ], - "Rotation": [ 1.0255014892597823e-05, 11.946979537953439, -0.012821439033643854 ], - "Scale": [ 1, 1, 1 ] - }, - "PlaneBounds": - { - "Min": [ -57.708847522735596, -86.471712589263916 ], - "Max": [ 57.708847522735596, 86.471712589263916 ] - }, - "PlaneBoundary2D": [ - [ -57.708847045898438, -86.471710205078125 ], - [ 57.708847045898438, -86.471710205078125 ], - [ 57.708847045898438, 86.471717834472656 ], - [ -57.708847045898438, 86.471717834472656 ] - ] - }, - { - "UUID": "1E578C3E9E7B495E9F8BB00A3722B619", - "SemanticClassifications": [ - "TABLE" - ], - "Transform": - { - "Translation": [ 66.697609425381202, -9.7909413278979525, -51.18460655107765 ], - "Rotation": [ -90, -9.1488098605304629, -70.663235424372601 ], - "Scale": [ 1, 1, 1 ] - }, - "PlaneBounds": - { - "Min": [ -38.959389925003052, -79.420942068099976 ], - "Max": [ 38.959354162216187, 79.42090630531311 ] - }, - "PlaneBoundary2D": [ - [ -38.959377288818359, -79.420944213867188 ], - [ 38.959354400634766, -79.420928955078125 ], - [ 38.959331512451172, 79.420913696289062 ], - [ -38.959388732910156, 79.420913696289062 ] - ], - "VolumeBounds": - { - "Min": [ 5.9604644775390625e-06, -38.959383964538574, -79.420942068099976 ], - "Max": [ 78.46105694770813, 38.959354162216187, 79.42090630531311 ] - } - }, - { - "UUID": "4F3D506941FCDF2CDE529B778F7E2CA0", - "SemanticClassifications": [ - "SCREEN" - ], - "Transform": - { - "Translation": [ 83.592164516498727, 41.190987825381569, -2.9855161893029019 ], - "Rotation": [ -90, 19.567800483011322, -8.7111107546809308 ], - "Scale": [ 1, 1, 1 ] - }, - "VolumeBounds": - { - "Min": [ 0, -29.970204830169678, -4.4041812419891357 ], - "Max": [ 48.06218147277832, 29.970204830169678, 4.4041812419891357 ] - } - }, - { - "UUID": "1BC70912D34BC775AA6D9C55D200683A", - "SemanticClassifications": [ - "SCREEN" - ], - "Transform": - { - "Translation": [ 88.798236847054, -18.041059374830681, -8.5256248698528676 ], - "Rotation": [ -90, -0.2501150240923925, -5.5051996855984839 ], - "Scale": [ 1, 1, 1 ] - }, - "VolumeBounds": - { - "Min": [ 0, -27.590945363044739, -4.127839207649231 ], - "Max": [ 42.597478628158569, 27.590939402580261, 4.127839207649231 ] - } - }, - { - "UUID": "96EEDAE94C716C89C0402CF62DADFEB3", - "SemanticClassifications": [ - "STORAGE" - ], - "Transform": - { - "Translation": [ -24.263715742939379, -84.267413616290682, -70.311057567836698 ], - "Rotation": [ -90, 41.440284814176032, -121.04073774753104 ], - "Scale": [ 1, 1, 1 ] - }, - "VolumeBounds": - { - "Min": [ 0, -21.163803339004517, -20.850077271461487 ], - "Max": [ 59.604281187057495, 21.163803339004517, 20.850077271461487 ] - } - }, - { - "UUID": "B8823BA241D69E1B5A3E716FDC16C035", - "SemanticClassifications": [ - "STORAGE" - ], - "Transform": - { - "Translation": [ 21.055686474657758, -75.153601169672626, -52.926862239392129 ], - "Rotation": [ -90, 28.361682644897524, -108.18860733843303 ], - "Scale": [ 1, 1, 1 ] - }, - "VolumeBounds": - { - "Min": [ 0, -15.779599547386169, -26.403164863586426 ], - "Max": [ 76.910203695297241, 15.779599547386169, 26.403164863586426 ] - } - }, - { - "UUID": "3902154E700E7DFCEFCDD31C7CEEA21D", - "SemanticClassifications": [ - "STORAGE" - ], - "Transform": - { - "Translation": [ 10.554808378627637, 190.61878919597299, -25.321662426136452 ], - "Rotation": [ -90, -5.9319241808660053, 103.25628078485644 ], - "Scale": [ 1, 1, 1 ] - }, - "VolumeBounds": - { - "Min": [ 0, -40.154829621315002, -22.992253303527832 ], - "Max": [ 103.86097431182861, 40.154829621315002, 22.992253303527832 ] - } - }, - { - "UUID": "FE43EA80E4940D9BE1D4FC4F55400F5A", - "SemanticClassifications": [ - "STORAGE" - ], - "Transform": - { - "Translation": [ -217.31374263794015, 167.31386184697604, 20.74184566373647 ], - "Rotation": [ -90, 90, 9.7579414672703049 ], - "Scale": [ 1, 1, 1 ] - }, - "VolumeBounds": - { - "Min": [ 0, -43.242943286895752, -19.515424966812134 ], - "Max": [ 150.6071925163269, 43.242943286895752, 19.515424966812134 ] - } - }, - { - "UUID": "FBB8A4242C93CC2BC546074B344D408A", - "SemanticClassifications": [ - "WALL_ART" - ], - "Transform": - { - "Translation": [ -140.19610881877907, 169.11414861687959, 47.865357992596394 ], - "Rotation": [ 1.4241377381107315e-06, 97.805118132482875, 0.16563613933941604 ], - "Scale": [ 1, 1, 1 ] - }, - "PlaneBounds": - { - "Min": [ -22.393298149108887, -17.249716818332672 ], - "Max": [ 22.393357753753662, 17.249719798564911 ] - }, - "PlaneBoundary2D": [ - [ -22.393299102783203, -17.249717712402344 ], - [ 22.39335823059082, -17.249717712402344 ], - [ 22.39335823059082, 17.249711990356445 ], - [ -22.393299102783203, 17.249717712402344 ] - ] - }, - { - "UUID": "63DD7C430C6AF808234FA1EA70EB1135", - "SemanticClassifications": [ - "WALL_ART" - ], - "Transform": - { - "Translation": [ -61.326617003108687, 179.92563247687792, 41.238221524910614 ], - "Rotation": [ 2.9892305539357142e-06, 97.766337493616959, 0.15780471846346075 ], - "Scale": [ 1, 1, 1 ] - }, - "PlaneBounds": - { - "Min": [ -21.803402900695801, -17.437992990016937 ], - "Max": [ 21.803414821624756, 17.437995970249176 ] - }, - "PlaneBoundary2D": [ - [ -21.803401947021484, -17.437992095947266 ], - [ 21.803415298461914, -17.437992095947266 ], - [ 21.803415298461914, 17.437997817993164 ], - [ -21.803401947021484, 17.437997817993164 ] - ] - }, - { - "UUID": "DE8DDDD990AD5FCB8E7E237E938CB0D3", - "SemanticClassifications": [ - "WALL_ART" - ], - "Transform": - { - "Translation": [ 16.382831334551845, 231.31909370427766, 34.696799516561285 ], - "Rotation": [ 3.9054193939550909e-06, 100.14347625836002, 0.047545250325334014 ], - "Scale": [ 1, 1, 1 ] - }, - "PlaneBounds": - { - "Min": [ -17.035198211669922, -23.50517213344574 ], - "Max": [ 17.035174369812012, 23.505175113677979 ] - }, - "PlaneBoundary2D": [ - [ -17.035198211669922, -23.505172729492188 ], - [ 17.035175323486328, -23.505172729492188 ], - [ 17.035175323486328, 23.50517463684082 ], - [ -17.035186767578125, 23.50517463684082 ] - ] - } - ] - } - ] -})"); - -const TCHAR* ExampleRoomFurnitureModifiedJson = TEXT(R"( -{ - "Rooms": [ - { - "UUID": "9CDDA638E08442FF193FD34FE9E42850", - "RoomLayout": - { - "FloorUuid": "4408BCA30B3EA779992A41339E9BD15E", - "CeilingUuid": "4C1D763C44C3462F4DA730971E171502", - "WallsUuid": [ - "195FA745A478AF0C8FB57CEB03B22863", - "A9EC4ACC695D848A817A9638C4084117", - "1C751664D717BE40458D9EC34BD5D378", - "FDB6E9B321F59B54A2C5C86E5C7115E6", - "9FEBCF7BD9E0A320A3BD68E2D7573255", - "684B956C3E0B9B03333C994A34A4E6FE", - "61345A4CA1A00C5C18C7AC3423376901", - "934CE75D63F0856A9438DAB3ADA95409" - ] - }, - "Anchors": [ - { - "UUID": "195FA745A478AF0C8FB57CEB03B22863", - "SemanticClassifications": [ - "WALL_FACE" - ], - "Transform": - { - "Translation": [ -237.12472915651662, 19.925808906578482, 1.5676200352898995 ], - "Rotation": [ -1.1819296446447803e-05, -169.70749357033259, 0.057707750157921504 ], - "Scale": [ 1, 1, 1 ] - }, - "PlaneBounds": - { - "Min": [ -163.47031593322754, -131.50515556335449 ], - "Max": [ 163.47026824951172, 131.50515556335449 ] - }, - "PlaneBoundary2D": [ - [ -163.47032165527344, -131.50515747070312 ], - [ 163.47027587890625, -131.50515747070312 ], - [ 163.47027587890625, 131.50515747070312 ], - [ -163.47032165527344, 131.50515747070312 ] - ] - }, - { - "UUID": "A9EC4ACC695D848A817A9638C4084117", - "SemanticClassifications": [ - "WALL_FACE" - ], - "Transform": - { - "Translation": [ -219.91224288941592, 188.27182054521873, 1.8210597299298268 ], - "Rotation": [ 7.4741822743562458e-07, 99.198330970154288, 0.098590620438120544 ], - "Scale": [ 1, 1, 1 ] - }, - "PlaneBounds": - { - "Min": [ -47.028231620788574, -131.50515556335449 ], - "Max": [ 47.028231620788574, 131.50515556335449 ] - }, - "PlaneBoundary2D": [ - [ -47.028232574462891, -131.50515747070312 ], - [ 47.028232574462891, -131.50515747070312 ], - [ 47.028232574462891, 131.50515747070312 ], - [ -47.028232574462891, 131.50515747070312 ] - ] - }, - { - "UUID": "1C751664D717BE40458D9EC34BD5D378", - "SemanticClassifications": [ - "WALL_FACE" - ], - "Transform": - { - "Translation": [ -171.26309871674914, 180.48512935640233, 1.8855862290118015 ], - "Rotation": [ 6.4467732645053494e-06, 8.2745309490490655, -0.061610071422649071 ], - "Scale": [ 1, 1, 1 ] - }, - "PlaneBounds": - { - "Min": [ -15.465247631072998, -131.50515556335449 ], - "Max": [ 15.465259552001953, 131.50515556335449 ] - }, - "PlaneBoundary2D": [ - [ -15.465248107910156, -131.50515747070312 ], - [ 15.465259552001953, -131.50515747070312 ], - [ 15.465259552001953, 131.50515747070312 ], - [ -15.465248107910156, 131.50515747070312 ] - ] - }, - { - "UUID": "FDB6E9B321F59B54A2C5C86E5C7115E6", - "SemanticClassifications": [ - "WALL_FACE" - ], - "Transform": - { - "Translation": [ -100.43122768403643, 174.61351156235941, 1.9896067660616943 ], - "Rotation": [ 1.2842223247239193e-06, 97.827956772803347, 0.097884147130853222 ], - "Scale": [ 1, 1, 1 ] - }, - "PlaneBounds": - { - "Min": [ -69.250226020812988, -131.50515556335449 ], - "Max": [ 69.250202178955078, 131.50515556335449 ] - }, - "PlaneBoundary2D": [ - [ -69.250228881835938, -131.50515747070312 ], - [ 69.250198364257812, -131.50515747070312 ], - [ 69.250198364257812, 131.50515747070312 ], - [ -69.250228881835938, 131.50515747070312 ] - ] - }, - { - "UUID": "9FEBCF7BD9E0A320A3BD68E2D7573255", - "SemanticClassifications": [ - "WALL_FACE" - ], - "Transform": - { - "Translation": [ -34.790527820602257, 202.89564132691075, 2.1287299684011187 ], - "Rotation": [ -1.0115972258972956e-05, -171.06118467085236, 0.06147233833058962 ], - "Scale": [ 1, 1, 1 ] - }, - "PlaneBounds": - { - "Min": [ -19.081306457519531, -131.50515556335449 ], - "Max": [ 19.081234931945801, 131.50515556335449 ] - }, - "PlaneBoundary2D": [ - [ -19.081306457519531, -131.50515747070312 ], - [ 19.081233978271484, -131.50515747070312 ], - [ 19.081233978271484, 131.50515747070312 ], - [ -19.081306457519531, 131.50515747070312 ] - ] - }, - { - "UUID": "684B956C3E0B9B03333C994A34A4E6FE", - "SemanticClassifications": [ - "WALL_FACE" - ], - "Transform": - { - "Translation": [ 16.105192899689577, 231.2756061553977, 2.2447273133977301 ], - "Rotation": [ 7.2258907058959033e-07, 100.03382109181877, 0.10042065591246373 ], - "Scale": [ 1, 1, 1 ] - }, - "PlaneBounds": - { - "Min": [ -54.698985815048218, -131.50515556335449 ], - "Max": [ 54.699009656906128, 131.50515556335449 ] - }, - "PlaneBoundary2D": [ - [ -54.698986053466797, -131.50515747070312 ], - [ 54.699008941650391, -131.50515747070312 ], - [ 54.699008941650391, 131.50515747070312 ], - [ -54.698986053466797, 131.50515747070312 ] - ] - }, - { - "UUID": "61345A4CA1A00C5C18C7AC3423376901", - "SemanticClassifications": [ - "WALL_FACE" - ], - "Transform": - { - "Translation": [ 105.0693631171911, 76.471978425973873, 2.1759346142524829 ], - "Rotation": [ 8.2498766259047504e-06, 12.057146123987874, -0.056147079105301173 ], - "Scale": [ 1, 1, 1 ] - }, - "PlaneBounds": - { - "Min": [ -168.04091930389404, -131.50515556335449 ], - "Max": [ 168.04091930389404, 131.50515556335449 ] - }, - "PlaneBoundary2D": [ - [ -168.04092407226562, -131.50515747070312 ], - [ 168.04092407226562, -131.50515747070312 ], - [ 168.04092407226562, 131.50515747070312 ], - [ -168.04092407226562, 131.50515747070312 ] - ] - }, - { - "UUID": "934CE75D63F0856A9438DAB3ADA95409", - "SemanticClassifications": [ - "WALL_FACE" - ], - "Transform": - { - "Translation": [ -33.873659372366134, -114.39212560653117, 1.7077162858417783 ], - "Rotation": [ -2.0387201971063733e-06, -81.333117613062029, -0.098900144058006831 ], - "Scale": [ 1, 1, 1 ] - }, - "PlaneBounds": - { - "Min": [ -176.05507373809814, -131.50515556335449 ], - "Max": [ 176.05516910552979, 131.50515556335449 ] - }, - "PlaneBoundary2D": [ - [ -176.05506896972656, -131.50515747070312 ], - [ 176.05517578125, -131.50515747070312 ], - [ 176.05517578125, 131.50515747070312 ], - [ -176.05506896972656, 131.50515747070312 ] - ] - },)" /* Split to avoid C2026 compile error */ R"( - { - "UUID": "4408BCA30B3EA779992A41339E9BD15E", - "SemanticClassifications": [ - "FLOOR" - ], - "Transform": - { - "Translation": [ -62.879419324774886, 46.623498201168552, -129.62889671430307 ], - "Rotation": [ -90, 5.7098574004030409, 4.5827907590734602 ], - "Scale": [ 1, 1, 1 ] - }, - "PlaneBounds": - { - "Min": [ -168.46499443054199, -175.98437070846558 ], - "Max": [ 168.46499443054199, 175.98425149917603 ] - }, - "PlaneBoundary2D": [ - [ -158.47563171386719, -175.98432922363281 ], - [ 168.46498107910156, -175.984375 ], - [ 166.66807556152344, -81.945053100585938 ], - [ 135.75675964355469, -83.034469604492188 ], - [ 129.80014038085938, 55.337821960449219 ], - [ 167.95199584960938, 56.239284515380859 ], - [ 167.45750427246094, 165.63619995117188 ], - [ -168.46499633789062, 175.9842529296875 ] - ] - }, - { - "UUID": "4C1D763C44C3462F4DA730971E171502", - "SemanticClassifications": [ - "CEILING" - ], - "Transform": - { - "Translation": [ -68.207877876431567, 45.219242573003598, 133.37569236642736 ], - "Rotation": [ 90, 5.8687227517986269, -6.1892048707873073 ], - "Scale": [ 1, 1, 1 ] - }, - "PlaneBounds": - { - "Min": [ -173.80368709564209, -175.7470965385437 ], - "Max": [ 173.8037109375, 175.74702501296997 ] - }, - "PlaneBoundary2D": [ - [ -173.80368041992188, -175.74710083007812 ], - [ 162.27815246582031, -175.74705505371094 ], - [ 166.14077758789062, -66.417259216308594 ], - [ 128.03475952148438, -64.341514587402344 ], - [ 138.24908447265625, 73.781753540039062 ], - [ 169.11221313476562, 71.741104125976562 ], - [ 173.8037109375, 165.68048095703125 ], - [ -152.98185729980469, 175.74703979492188 ] - ] - }, - { - "UUID": "BEEE3CD75BC02ABF219D9989481AE798", - "SemanticClassifications": [ - "COUCH" - ], - "Transform": - { - "Translation": [ -145.87221145497207, 107.07900524127058, -85.245281460326424 ], - "Rotation": [ -90, -90, -169.62584716890692 ], - "Scale": [ 1, 1, 1 ] - }, - "PlaneBounds": - { - "Min": [ -101.4635443687439, -45.093107223510742 ], - "Max": [ 101.4635443687439, 45.093107223510742 ] - }, - "PlaneBoundary2D": [ - [ -101.46353149414062, -45.093109130859375 ], - [ 101.46354675292969, -45.093082427978516 ], - [ 101.46352386474609, 45.093109130859375 ], - [ -101.46354675292969, 45.093109130859375 ] - ], - "VolumeBounds": - { - "Min": [ -12.15549111366272, -101.46353244781494, -45.093107223510742 ], - "Max": [ 44.450020790100098, 101.46348476409912, 45.093095302581787 ] - } - }, - { - "UUID": "BAEE3CD65BC02ABF219D9989481AE798", - "SemanticClassifications": [ - "COUCH" - ], - "Transform": - { - "Translation": [ -145.87221145497207, 107.07900524127058, -85.245281460326424 ], - "Rotation": [ -90, -90, -169.62584716890692 ], - "Scale": [ 1, 1, 1 ] - }, - "PlaneBounds": - { - "Min": [ -101.4635443687439, -45.093107223510742 ], - "Max": [ 101.4635443687439, 45.093107223510742 ] - }, - "PlaneBoundary2D": [ - [ -101.46353149414062, -45.093109130859375 ], - [ 101.46354675292969, -45.093082427978516 ], - [ 101.46352386474609, 45.093109130859375 ], - [ -101.46354675292969, 45.093109130859375 ] - ], - "VolumeBounds": - { - "Min": [ -12.15549111366272, -101.46353244781494, -45.093107223510742 ], - "Max": [ 54.450020790100098, 101.46348476409912, 45.093095302581787 ] - } - }, - { - "UUID": "B369DAC9913F4653CF0006D292B47E67", - "SemanticClassifications": [ - "DOOR_FRAME" - ], - "Transform": - { - "Translation": [ -164.08888101534376, -134.22880172732661, -28.83420884841345 ], - "Rotation": [ -3.064696784341266e-06, -81.293136003547502, -0.079074311984811629 ], - "Scale": [ 1, 1, 1 ] - }, - "PlaneBounds": - { - "Min": [ -38.468444347381592, -100.21964311599731 ], - "Max": [ 38.468444347381592, 100.2196192741394 ] - }, - "PlaneBoundary2D": [ - [ -38.46844482421875, -100.21964263916016 ], - [ 38.46844482421875, -100.21964263916016 ], - [ 38.46844482421875, 100.21963500976562 ], - [ -38.46844482421875, 100.21963500976562 ] - ] - }, - { - "UUID": "A379DAC9913F4653CF0006D292B47E67", - "SemanticClassifications": [ - "DOOR_FRAME" - ], - "Transform": - { - "Translation": [ -164.08888101534376, -134.22880172732661, -28.83420884841345 ], - "Rotation": [ -3.064696784341266e-06, -81.293136003547502, -0.079074311984811629 ], - "Scale": [ 1, 1, 1 ] - }, - "PlaneBounds": - { - "Min": [ -48.468444347381592, -100.21964311599731 ], - "Max": [ 48.468444347381592, 100.2196192741394 ] - }, - "PlaneBoundary2D": [ - [ -48.46844482421875, -100.21964263916016 ], - [ 48.46844482421875, -100.21964263916016 ], - [ 48.46844482421875, 100.21963500976562 ], - [ -48.46844482421875, 100.21963500976562 ] - ] - }, - { - "UUID": "7882FF81023E5FB0164183884565F6B7", - "SemanticClassifications": [ - "WINDOW_FRAME" - ], - "Transform": - { - "Translation": [ 86.993300914358954, 160.30499935153722, 27.146616579190244 ], - "Rotation": [ 1.0255014892597823e-05, 11.946979537953439, -0.012821439033643854 ], - "Scale": [ 1, 1, 1 ] - }, - "PlaneBounds": - { - "Min": [ -57.708847522735596, -86.471712589263916 ], - "Max": [ 57.708847522735596, 86.471712589263916 ] - }, - "PlaneBoundary2D": [ - [ -57.708847045898438, -86.471710205078125 ], - [ 57.708847045898438, -86.471710205078125 ], - [ 57.708847045898438, 86.471717834472656 ], - [ -57.708847045898438, 86.471717834472656 ] - ] - }, - { - "UUID": "1E578C3E9E7B495E9F8BB00A3722B619", - "SemanticClassifications": [ - "TABLE" - ], - "Transform": - { - "Translation": [ 66.697609425381202, -9.7909413278979525, -51.18460655107765 ], - "Rotation": [ -90, -9.1488098605304629, -70.663235424372601 ], - "Scale": [ 1, 1, 1 ] - }, - "PlaneBounds": - { - "Min": [ -38.959389925003052, -79.420942068099976 ], - "Max": [ 38.959354162216187, 79.42090630531311 ] - }, - "PlaneBoundary2D": [ - [ -38.959377288818359, -79.420944213867188 ], - [ 38.959354400634766, -79.420928955078125 ], - [ 38.959331512451172, 79.420913696289062 ], - [ -38.959388732910156, 79.420913696289062 ] - ], - "VolumeBounds": - { - "Min": [ 5.9604644775390625e-06, -38.959383964538574, -79.420942068099976 ], - "Max": [ 78.46105694770813, 38.959354162216187, 79.42090630531311 ] - } - }, - { - "UUID": "4F3D506941FCDF2CDE529B778F7E2CA0", - "SemanticClassifications": [ - "SCREEN" - ], - "Transform": - { - "Translation": [ 83.592164516498727, 41.190987825381569, -2.9855161893029019 ], - "Rotation": [ -90, 19.567800483011322, -8.7111107546809308 ], - "Scale": [ 1, 1, 1 ] - }, - "VolumeBounds": - { - "Min": [ 0, -29.970204830169678, -4.4041812419891357 ], - "Max": [ 48.06218147277832, 29.970204830169678, 4.4041812419891357 ] - } - }, - { - "UUID": "1BC70912D34BC775AA6D9C55D200683A", - "SemanticClassifications": [ - "SCREEN" - ], - "Transform": - { - "Translation": [ 88.798236847054, -18.041059374830681, -8.5256248698528676 ], - "Rotation": [ -90, -0.2501150240923925, -5.5051996855984839 ], - "Scale": [ 1, 1, 1 ] - }, - "VolumeBounds": - { - "Min": [ 0, -27.590945363044739, -4.127839207649231 ], - "Max": [ 42.597478628158569, 27.590939402580261, 4.127839207649231 ] - } - }, - { - "UUID": "96EEDAE94C716C89C0402CF62DADFEB3", - "SemanticClassifications": [ - "STORAGE" - ], - "Transform": - { - "Translation": [ -24.263715742939379, -84.267413616290682, -70.311057567836698 ], - "Rotation": [ -90, 41.440284814176032, -121.04073774753104 ], - "Scale": [ 1, 1, 1 ] - }, - "VolumeBounds": - { - "Min": [ 0, -21.163803339004517, -20.850077271461487 ], - "Max": [ 59.604281187057495, 21.163803339004517, 20.850077271461487 ] - } - }, - { - "UUID": "B8823BA241D69E1B5A3E716FDC16C035", - "SemanticClassifications": [ - "STORAGE" - ], - "Transform": - { - "Translation": [ 21.055686474657758, -75.153601169672626, -52.926862239392129 ], - "Rotation": [ -90, 28.361682644897524, -108.18860733843303 ], - "Scale": [ 1, 1, 1 ] - }, - "VolumeBounds": - { - "Min": [ 0, -15.779599547386169, -26.403164863586426 ], - "Max": [ 76.910203695297241, 15.779599547386169, 26.403164863586426 ] - } - }, - { - "UUID": "3902154E700E7DFCEFCDD31C7CEEA21D", - "SemanticClassifications": [ - "STORAGE" - ], - "Transform": - { - "Translation": [ 10.554808378627637, 190.61878919597299, -25.321662426136452 ], - "Rotation": [ -90, -5.9319241808660053, 103.25628078485644 ], - "Scale": [ 1, 1, 1 ] - }, - "VolumeBounds": - { - "Min": [ 0, -40.154829621315002, -22.992253303527832 ], - "Max": [ 103.86097431182861, 40.154829621315002, 22.992253303527832 ] - } - }, - { - "UUID": "FE43EA80E4940D9BE1D4FC4F55400F5A", - "SemanticClassifications": [ - "STORAGE" - ], - "Transform": - { - "Translation": [ -217.31374263794015, 167.31386184697604, 20.74184566373647 ], - "Rotation": [ -90, 90, 9.7579414672703049 ], - "Scale": [ 1, 1, 1 ] - }, - "VolumeBounds": - { - "Min": [ 0, -43.242943286895752, -19.515424966812134 ], - "Max": [ 150.6071925163269, 43.242943286895752, 19.515424966812134 ] - } - }, - { - "UUID": "FBB8A4242C93CC2BC546074B344D408A", - "SemanticClassifications": [ - "WALL_ART" - ], - "Transform": - { - "Translation": [ -140.19610881877907, 169.11414861687959, 47.865357992596394 ], - "Rotation": [ 1.4241377381107315e-06, 97.805118132482875, 0.16563613933941604 ], - "Scale": [ 1, 1, 1 ] - }, - "PlaneBounds": - { - "Min": [ -22.393298149108887, -17.249716818332672 ], - "Max": [ 22.393357753753662, 17.249719798564911 ] - }, - "PlaneBoundary2D": [ - [ -22.393299102783203, -17.249717712402344 ], - [ 22.39335823059082, -17.249717712402344 ], - [ 22.39335823059082, 17.249711990356445 ], - [ -22.393299102783203, 17.249717712402344 ] - ] - }, - { - "UUID": "63DD7C430C6AF808234FA1EA70EB1135", - "SemanticClassifications": [ - "WALL_ART" - ], - "Transform": - { - "Translation": [ -61.326617003108687, 179.92563247687792, 41.238221524910614 ], - "Rotation": [ 2.9892305539357142e-06, 97.766337493616959, 0.15780471846346075 ], - "Scale": [ 1, 1, 1 ] - }, - "PlaneBounds": - { - "Min": [ -21.803402900695801, -17.437992990016937 ], - "Max": [ 21.803414821624756, 17.437995970249176 ] - }, - "PlaneBoundary2D": [ - [ -21.803401947021484, -17.437992095947266 ], - [ 21.803415298461914, -17.437992095947266 ], - [ 21.803415298461914, 17.437997817993164 ], - [ -21.803401947021484, 17.437997817993164 ] - ] - }, - { - "UUID": "DE8DDDD990AD5FCB8E7E237E938CB0D3", - "SemanticClassifications": [ - "WALL_ART" - ], - "Transform": - { - "Translation": [ 16.382831334551845, 231.31909370427766, 34.696799516561285 ], - "Rotation": [ 3.9054193939550909e-06, 100.14347625836002, 0.047545250325334014 ], - "Scale": [ 1, 1, 1 ] - }, - "PlaneBounds": - { - "Min": [ -17.035198211669922, -23.50517213344574 ], - "Max": [ 17.035174369812012, 23.505175113677979 ] - }, - "PlaneBoundary2D": [ - [ -17.035198211669922, -23.505172729492188 ], - [ 17.035175323486328, -23.505172729492188 ], - [ 17.035175323486328, 23.50517463684082 ], - [ -17.035186767578125, 23.50517463684082 ] - ] - } - ] - } - ] -})"); - -const TCHAR* ExampleOtherRoomJson = TEXT(R"( -{ - "Rooms": [ - { - "UUID": "2CDDA638E08442FF193FD34FE9E42850", - "RoomLayout": - { - "FloorUuid": "5408BCA30B3EA779992A41339E9BD15E", - "CeilingUuid": "5C1D763C44C3462F4DA730971E171502", - "WallsUuid": [ - "295FA745A478AF0C8FB57CEB03B22863", - "B9EC4ACC695D848A817A9638C4084117", - "2C751664D717BE40458D9EC34BD5D378", - "ADB6E9B321F59B54A2C5C86E5C7115E6", - "AFEBCF7BD9E0A320A3BD68E2D7573255", - "784B956C3E0B9B03333C994A34A4E6FE", - "71345A4CA1A00C5C18C7AC3423376901", - "A34CE75D63F0856A9438DAB3ADA95409" - ] - }, - "Anchors": [ - { - "UUID": "295FA745A478AF0C8FB57CEB03B22863", - "SemanticClassifications": [ - "WALL_FACE" - ], - "Transform": - { - "Translation": [ -237.12472915651662, 19.925808906578482, 1.5676200352898995 ], - "Rotation": [ -1.1819296446447803e-05, -169.70749357033259, 0.057707750157921504 ], - "Scale": [ 1, 1, 1 ] - }, - "PlaneBounds": - { - "Min": [ -163.47031593322754, -131.50515556335449 ], - "Max": [ 163.47026824951172, 131.50515556335449 ] - }, - "PlaneBoundary2D": [ - [ -163.47032165527344, -131.50515747070312 ], - [ 163.47027587890625, -131.50515747070312 ], - [ 163.47027587890625, 131.50515747070312 ], - [ -163.47032165527344, 131.50515747070312 ] - ] - }, - { - "UUID": "B9EC4ACC695D848A817A9638C4084117", - "SemanticClassifications": [ - "WALL_FACE" - ], - "Transform": - { - "Translation": [ -219.91224288941592, 188.27182054521873, 1.8210597299298268 ], - "Rotation": [ 7.4741822743562458e-07, 99.198330970154288, 0.098590620438120544 ], - "Scale": [ 1, 1, 1 ] - }, - "PlaneBounds": - { - "Min": [ -47.028231620788574, -131.50515556335449 ], - "Max": [ 47.028231620788574, 131.50515556335449 ] - }, - "PlaneBoundary2D": [ - [ -47.028232574462891, -131.50515747070312 ], - [ 47.028232574462891, -131.50515747070312 ], - [ 47.028232574462891, 131.50515747070312 ], - [ -47.028232574462891, 131.50515747070312 ] - ] - }, - { - "UUID": "2C751664D717BE40458D9EC34BD5D378", - "SemanticClassifications": [ - "WALL_FACE" - ], - "Transform": - { - "Translation": [ -171.26309871674914, 180.48512935640233, 1.8855862290118015 ], - "Rotation": [ 6.4467732645053494e-06, 8.2745309490490655, -0.061610071422649071 ], - "Scale": [ 1, 1, 1 ] - }, - "PlaneBounds": - { - "Min": [ -15.465247631072998, -131.50515556335449 ], - "Max": [ 15.465259552001953, 131.50515556335449 ] - }, - "PlaneBoundary2D": [ - [ -15.465248107910156, -131.50515747070312 ], - [ 15.465259552001953, -131.50515747070312 ], - [ 15.465259552001953, 131.50515747070312 ], - [ -15.465248107910156, 131.50515747070312 ] - ] - }, - { - "UUID": "ADB6E9B321F59B54A2C5C86E5C7115E6", - "SemanticClassifications": [ - "WALL_FACE" - ], - "Transform": - { - "Translation": [ -100.43122768403643, 174.61351156235941, 1.9896067660616943 ], - "Rotation": [ 1.2842223247239193e-06, 97.827956772803347, 0.097884147130853222 ], - "Scale": [ 1, 1, 1 ] - }, - "PlaneBounds": - { - "Min": [ -69.250226020812988, -131.50515556335449 ], - "Max": [ 69.250202178955078, 131.50515556335449 ] - }, - "PlaneBoundary2D": [ - [ -69.250228881835938, -131.50515747070312 ], - [ 69.250198364257812, -131.50515747070312 ], - [ 69.250198364257812, 131.50515747070312 ], - [ -69.250228881835938, 131.50515747070312 ] - ] - }, - { - "UUID": "AFEBCF7BD9E0A320A3BD68E2D7573255", - "SemanticClassifications": [ - "WALL_FACE" - ], - "Transform": - { - "Translation": [ -34.790527820602257, 202.89564132691075, 2.1287299684011187 ], - "Rotation": [ -1.0115972258972956e-05, -171.06118467085236, 0.06147233833058962 ], - "Scale": [ 1, 1, 1 ] - }, - "PlaneBounds": - { - "Min": [ -19.081306457519531, -131.50515556335449 ], - "Max": [ 19.081234931945801, 131.50515556335449 ] - }, - "PlaneBoundary2D": [ - [ -19.081306457519531, -131.50515747070312 ], - [ 19.081233978271484, -131.50515747070312 ], - [ 19.081233978271484, 131.50515747070312 ], - [ -19.081306457519531, 131.50515747070312 ] - ] - }, - { - "UUID": "784B956C3E0B9B03333C994A34A4E6FE", - "SemanticClassifications": [ - "WALL_FACE" - ], - "Transform": - { - "Translation": [ 16.105192899689577, 231.2756061553977, 2.2447273133977301 ], - "Rotation": [ 7.2258907058959033e-07, 100.03382109181877, 0.10042065591246373 ], - "Scale": [ 1, 1, 1 ] - }, - "PlaneBounds": - { - "Min": [ -54.698985815048218, -131.50515556335449 ], - "Max": [ 54.699009656906128, 131.50515556335449 ] - }, - "PlaneBoundary2D": [ - [ -54.698986053466797, -131.50515747070312 ], - [ 54.699008941650391, -131.50515747070312 ], - [ 54.699008941650391, 131.50515747070312 ], - [ -54.698986053466797, 131.50515747070312 ] - ] - }, - { - "UUID": "71345A4CA1A00C5C18C7AC3423376901", - "SemanticClassifications": [ - "WALL_FACE" - ], - "Transform": - { - "Translation": [ 105.0693631171911, 76.471978425973873, 2.1759346142524829 ], - "Rotation": [ 8.2498766259047504e-06, 12.057146123987874, -0.056147079105301173 ], - "Scale": [ 1, 1, 1 ] - }, - "PlaneBounds": - { - "Min": [ -168.04091930389404, -131.50515556335449 ], - "Max": [ 168.04091930389404, 131.50515556335449 ] - }, - "PlaneBoundary2D": [ - [ -168.04092407226562, -131.50515747070312 ], - [ 168.04092407226562, -131.50515747070312 ], - [ 168.04092407226562, 131.50515747070312 ], - [ -168.04092407226562, 131.50515747070312 ] - ] - }, - { - "UUID": "A34CE75D63F0856A9438DAB3ADA95409", - "SemanticClassifications": [ - "WALL_FACE" - ], - "Transform": - { - "Translation": [ -33.873659372366134, -114.39212560653117, 1.7077162858417783 ], - "Rotation": [ -2.0387201971063733e-06, -81.333117613062029, -0.098900144058006831 ], - "Scale": [ 1, 1, 1 ] - }, - "PlaneBounds": - { - "Min": [ -176.05507373809814, -131.50515556335449 ], - "Max": [ 176.05516910552979, 131.50515556335449 ] - }, - "PlaneBoundary2D": [ - [ -176.05506896972656, -131.50515747070312 ], - [ 176.05517578125, -131.50515747070312 ], - [ 176.05517578125, 131.50515747070312 ], - [ -176.05506896972656, 131.50515747070312 ] - ] - },)" /* Split to avoid C2026 compile error */ R"( - { - "UUID": "5408BCA30B3EA779992A41339E9BD15E", - "SemanticClassifications": [ - "FLOOR" - ], - "Transform": - { - "Translation": [ -62.879419324774886, 46.623498201168552, -129.62889671430307 ], - "Rotation": [ -90, 5.7098574004030409, 4.5827907590734602 ], - "Scale": [ 1, 1, 1 ] - }, - "PlaneBounds": - { - "Min": [ -168.46499443054199, -175.98437070846558 ], - "Max": [ 168.46499443054199, 175.98425149917603 ] - }, - "PlaneBoundary2D": [ - [ -158.47563171386719, -175.98432922363281 ], - [ 168.46498107910156, -175.984375 ], - [ 166.66807556152344, -81.945053100585938 ], - [ 135.75675964355469, -83.034469604492188 ], - [ 129.80014038085938, 55.337821960449219 ], - [ 167.95199584960938, 56.239284515380859 ], - [ 167.45750427246094, 165.63619995117188 ], - [ -168.46499633789062, 175.9842529296875 ] - ] - }, - { - "UUID": "5C1D763C44C3462F4DA730971E171502", - "SemanticClassifications": [ - "CEILING" - ], - "Transform": - { - "Translation": [ -68.207877876431567, 45.219242573003598, 133.37569236642736 ], - "Rotation": [ 90, 5.8687227517986269, -6.1892048707873073 ], - "Scale": [ 1, 1, 1 ] - }, - "PlaneBounds": - { - "Min": [ -173.80368709564209, -175.7470965385437 ], - "Max": [ 173.8037109375, 175.74702501296997 ] - }, - "PlaneBoundary2D": [ - [ -173.80368041992188, -175.74710083007812 ], - [ 162.27815246582031, -175.74705505371094 ], - [ 166.14077758789062, -66.417259216308594 ], - [ 128.03475952148438, -64.341514587402344 ], - [ 138.24908447265625, 73.781753540039062 ], - [ 169.11221313476562, 71.741104125976562 ], - [ 173.8037109375, 165.68048095703125 ], - [ -152.98185729980469, 175.74703979492188 ] - ] - } - ] - } - ] -})"); - -void URoomAndAnchorObserver::OnAnchorCreated(AMRUKAnchor* Anchor) -{ - AnchorsCreated.Push(Anchor); -} - -void URoomAndAnchorObserver::OnAnchorUpdated(AMRUKAnchor* Anchor) -{ - AnchorsUpdated.Push(Anchor); -} - -void URoomAndAnchorObserver::OnAnchorRemoved(AMRUKAnchor* Anchor) -{ - AnchorsRemoved.Push(Anchor); -} - -void URoomAndAnchorObserver::OnRoomCreated(AMRUKRoom* Room) -{ - RoomsCreated.Push(Room); -} - -void URoomAndAnchorObserver::OnRoomUpdated(AMRUKRoom* Room) -{ - RoomsUpdated.Push(Room); -} - -void URoomAndAnchorObserver::OnRoomRemoved(AMRUKRoom* Room) -{ - RoomsRemoved.Push(Room); -} - -void URoomAndAnchorObserver::Clear() -{ - AnchorsCreated.Empty(); - AnchorsUpdated.Empty(); - AnchorsRemoved.Empty(); - RoomsCreated.Empty(); - RoomsUpdated.Empty(); - RoomsRemoved.Empty(); -} - -AMeshResizer::AMeshResizer() -{ - static ConstructorHelpers::FObjectFinder MeshAsset(TEXT("/OculusXR/Meshes/SM_Bevelcube")); - - GridSliceResizerComponent = CreateDefaultSubobject(TEXT("Grid slice resizer")); - SetRootComponent(GridSliceResizerComponent); - - GridSliceResizerComponent->Mesh = MeshAsset.Object; -} diff --git a/Plugins/MetaXR/Source/MRUtilityKitEditor/Private/TestHelper.h b/Plugins/MetaXR/Source/MRUtilityKitEditor/Private/TestHelper.h deleted file mode 100644 index ef45e28..0000000 --- a/Plugins/MetaXR/Source/MRUtilityKitEditor/Private/TestHelper.h +++ /dev/null @@ -1,64 +0,0 @@ -// Copyright (c) Meta Platforms, Inc. and affiliates. - -#pragma once - -#include "GameFramework/Actor.h" -#include "MRUtilityKitAnchor.h" -#include "MRUtilityKitGridSliceResizer.h" -#include "TestHelper.generated.h" - -bool StartPIE(bool bSimulateInEditor); - -UCLASS() -class URoomAndAnchorObserver : public UObject -{ - GENERATED_BODY() - -public: - UPROPERTY() - TArray AnchorsCreated; - UPROPERTY() - TArray AnchorsUpdated; - UPROPERTY() - TArray AnchorsRemoved; - - UPROPERTY() - TArray RoomsCreated; - UPROPERTY() - TArray RoomsUpdated; - UPROPERTY() - TArray RoomsRemoved; - - UFUNCTION() - void OnAnchorCreated(AMRUKAnchor* Anchor); - UFUNCTION() - void OnAnchorUpdated(AMRUKAnchor* Anchor); - UFUNCTION() - void OnAnchorRemoved(AMRUKAnchor* Anchor); - UFUNCTION() - void OnRoomCreated(AMRUKRoom* Room); - UFUNCTION() - void OnRoomUpdated(AMRUKRoom* Room); - UFUNCTION() - void OnRoomRemoved(AMRUKRoom* Room); - - void Clear(); -}; - -extern const TCHAR* ExampleRoomJson; -extern const TCHAR* ExampleRoomFurnitureAddedJson; -extern const TCHAR* ExampleRoomMoreFurnitureAddedJson; -extern const TCHAR* ExampleRoomFurnitureModifiedJson; -extern const TCHAR* ExampleOtherRoomJson; - -UCLASS() -class AMeshResizer : public AActor -{ - GENERATED_BODY() - -public: - UPROPERTY() - UMRUKGridSliceResizerComponent* GridSliceResizerComponent; - - AMeshResizer(); -}; diff --git a/Plugins/MetaXR/Source/MRUtilityKitEditor/Public/MRUtilityKitEditor.h b/Plugins/MetaXR/Source/MRUtilityKitEditor/Public/MRUtilityKitEditor.h deleted file mode 100644 index 0e0bf9e..0000000 --- a/Plugins/MetaXR/Source/MRUtilityKitEditor/Public/MRUtilityKitEditor.h +++ /dev/null @@ -1,15 +0,0 @@ -// Copyright (c) Meta Platforms, Inc. and affiliates. - -#pragma once - -#include "Modules/ModuleManager.h" - -DECLARE_LOG_CATEGORY_EXTERN(LogMRUKEditor, Log, All); - -class FMRUKEditorModule : public IModuleInterface -{ -public: - /** IModuleInterface implementation */ - virtual void StartupModule() override; - virtual void ShutdownModule() override; -}; diff --git a/Plugins/MetaXR/Source/MRUtilityKitEditor/Public/MRUtilityKitGridSliceResizerVisualization.h b/Plugins/MetaXR/Source/MRUtilityKitEditor/Public/MRUtilityKitGridSliceResizerVisualization.h deleted file mode 100644 index 9c6e671..0000000 --- a/Plugins/MetaXR/Source/MRUtilityKitEditor/Public/MRUtilityKitGridSliceResizerVisualization.h +++ /dev/null @@ -1,11 +0,0 @@ -// Copyright (c) Meta Platforms, Inc. and affiliates. - -#pragma once - -#include "ComponentVisualizer.h" - -class MRUTILITYKITEDITOR_API FMRUKGridSliceResizerVisualizer : public FComponentVisualizer -{ -private: - virtual void DrawVisualization(const UActorComponent* Component, const FSceneView* View, FPrimitiveDrawInterface* PDI) override; -}; diff --git a/Plugins/MetaXR/Source/OculusXRAnchors/OculusXRAnchors.Build.cs b/Plugins/MetaXR/Source/OculusXRAnchors/OculusXRAnchors.Build.cs deleted file mode 100644 index 42dd849..0000000 --- a/Plugins/MetaXR/Source/OculusXRAnchors/OculusXRAnchors.Build.cs +++ /dev/null @@ -1,48 +0,0 @@ -// @lint-ignore-every LICENSELINT -// Copyright Epic Games, Inc. All Rights Reserved. - -namespace UnrealBuildTool.Rules -{ - public class OculusXRAnchors : ModuleRules - { - public OculusXRAnchors(ReadOnlyTargetRules Target) : base(Target) - { - bUseUnity = false; - - PrivateDependencyModuleNames.AddRange( - new string[] - { - "Core", - "CoreUObject", - "Engine", - "HeadMountedDisplay", - "OculusXRHMD", - "OVRPluginXR", - "XRBase", - "OpenXR", - "OpenXRHMD", - "ProceduralMeshComponent", - }); - - PublicDependencyModuleNames.AddRange( - new string[] - { - "OculusXRAsyncRequest", - "KhronosOpenXRHeaders", - }); - - PrivateIncludePaths.AddRange( - new string[] { - // Relative to Engine\Plugins\Runtime\Oculus\OculusVR\Source - "OculusXRHMD/Private", - }); - - PublicIncludePaths.AddRange( - new string[] { - "Runtime/Engine/Classes/Components", - }); - - AddEngineThirdPartyPrivateStaticDependencies(Target, "OpenXR"); - } - } -} diff --git a/Plugins/MetaXR/Source/OculusXRAnchors/Private/OculusXRAnchorBPFunctionLibrary.cpp b/Plugins/MetaXR/Source/OculusXRAnchors/Private/OculusXRAnchorBPFunctionLibrary.cpp deleted file mode 100644 index 5cc208b..0000000 --- a/Plugins/MetaXR/Source/OculusXRAnchors/Private/OculusXRAnchorBPFunctionLibrary.cpp +++ /dev/null @@ -1,131 +0,0 @@ -// Copyright (c) Meta Platforms, Inc. and affiliates. - -#include "OculusXRAnchorBPFunctionLibrary.h" - -#include "Engine/GameEngine.h" -#include "OculusXRAnchorsModule.h" -#include "OculusXRHMD.h" -#include "OculusXRSpatialAnchorComponent.h" -#include "OculusXRAnchorsPrivate.h" -#include "OculusXRAnchorManager.h" -#include "Kismet/BlueprintFunctionLibrary.h" - -AActor* UOculusXRAnchorBPFunctionLibrary::SpawnActorWithAnchorHandle(UObject* WorldContextObject, FOculusXRUInt64 Handle, FOculusXRUUID UUID, EOculusXRSpaceStorageLocation Location, UClass* ActorClass, - AActor* Owner, APawn* Instigator, ESpawnActorCollisionHandlingMethod CollisionHandlingMethod) -{ - FActorSpawnParameters SpawnInfo; - SpawnInfo.Owner = Owner; - SpawnInfo.Instigator = Instigator; - SpawnInfo.ObjectFlags |= RF_Transient; - SpawnInfo.SpawnCollisionHandlingOverride = CollisionHandlingMethod; - - UWorld* World = GEngine->GetWorldFromContextObject(WorldContextObject, EGetWorldErrorMode::LogAndReturnNull); - if (World == nullptr) - { - UE_LOG(LogOculusXRAnchors, Warning, TEXT("Invalid WorldContext Object for SpawnActorWithAnchorHandle.")); - return nullptr; - } - - AActor* NewSpatialAnchorActor = World->SpawnActor(ActorClass, nullptr, nullptr, SpawnInfo); - if (NewSpatialAnchorActor == nullptr) - { - UE_LOG(LogOculusXRAnchors, Warning, TEXT("Failed to spawn Actor in SpawnActorWithAnchorHandle")); - return nullptr; - } - - UOculusXRSpatialAnchorComponent* SpatialAnchorComponent = NewSpatialAnchorActor->FindComponentByClass(); - if (SpatialAnchorComponent == nullptr) - { - SpatialAnchorComponent = Cast(NewSpatialAnchorActor->AddComponentByClass(UOculusXRSpatialAnchorComponent::StaticClass(), false, FTransform::Identity, false)); - } - - if (!IsValid(SpatialAnchorComponent)) - { - UE_LOG(LogOculusXRAnchors, Warning, TEXT("Failed to find or spawn Spatial Anchor component in SpawnActorWithAnchorHandle")); - return nullptr; - } - - SpatialAnchorComponent->SetHandle(Handle); - SpatialAnchorComponent->SetUUID(UUID); - SpatialAnchorComponent->SetStoredLocation(Location, true); - return NewSpatialAnchorActor; -} - -AActor* UOculusXRAnchorBPFunctionLibrary::SpawnActorWithAnchorQueryResults(UObject* WorldContextObject, const FOculusXRSpaceQueryResult& QueryResult, UClass* ActorClass, AActor* Owner, APawn* Instigator, ESpawnActorCollisionHandlingMethod CollisionHandlingMethod) -{ - return SpawnActorWithAnchorHandle(WorldContextObject, QueryResult.Space, QueryResult.UUID, QueryResult.Location, ActorClass, Owner, Instigator, CollisionHandlingMethod); -} - -bool UOculusXRAnchorBPFunctionLibrary::GetAnchorComponentStatus(AActor* TargetActor, EOculusXRSpaceComponentType ComponentType, bool& bIsEnabled) -{ - UOculusXRAnchorComponent* AnchorComponent = Cast(TargetActor->GetComponentByClass(UOculusXRAnchorComponent::StaticClass())); - - if (!IsValid(AnchorComponent)) - { - UE_LOG(LogOculusXRAnchors, Warning, TEXT("Invalid Anchor Component provided to GetAnchorComponentStatus")); - bIsEnabled = false; - return false; - } - - bool bOutIsEnabled = false; - bool bIsChangePending = false; - - EOculusXRAnchorResult::Type AnchorResult; - bool bDidCallStart = OculusXRAnchors::FOculusXRAnchors::GetAnchorComponentStatus(AnchorComponent, ComponentType, bOutIsEnabled, bIsChangePending, AnchorResult); - if (!bDidCallStart) - { - UE_LOG(LogOculusXRAnchors, Warning, TEXT("Failed to start call to internal GetAnchorComponentStatus")); - bIsEnabled = false; - return false; - } - - bIsEnabled = bOutIsEnabled; - return bIsEnabled; -} - -bool UOculusXRAnchorBPFunctionLibrary::GetAnchorTransformByHandle(const FOculusXRUInt64& Handle, FTransform& OutTransform) -{ - FOculusXRAnchorLocationFlags AnchorFlags(0); - return TryGetAnchorTransformByHandle(Handle, OutTransform, AnchorFlags); -} - -bool UOculusXRAnchorBPFunctionLibrary::TryGetAnchorTransformByHandle(const FOculusXRUInt64& Handle, FTransform& OutTransform, FOculusXRAnchorLocationFlags& OutLocationFlags, EOculusXRAnchorSpace Space) -{ - auto result = OculusXRAnchors::FOculusXRAnchorManager::TryGetAnchorTransform(Handle, OutTransform, OutLocationFlags, Space); - return IsAnchorResultSuccess(result); -} - -FString UOculusXRAnchorBPFunctionLibrary::AnchorHandleToString(const FOculusXRUInt64 Value) -{ - return FString::Printf(TEXT("%llu"), Value.Value); -} - -FString UOculusXRAnchorBPFunctionLibrary::AnchorUUIDToString(const FOculusXRUUID& Value) -{ - return Value.ToString(); -} - -FOculusXRUUID UOculusXRAnchorBPFunctionLibrary::StringToAnchorUUID(const FString& Value) -{ - // Static size for the max length of the string, two chars per hex digit, 16 digits. - checkf(Value.Len() == 32, TEXT("'%s' is not a valid UUID"), *Value); - - ovrpUuid newID; - HexToBytes(Value, newID.data); - - return FOculusXRUUID(newID.data); -} -bool UOculusXRAnchorBPFunctionLibrary::IsAnchorResultSuccess(EOculusXRAnchorResult::Type result) -{ -#if OCULUS_HMD_SUPPORTED_PLATFORMS - return OVRP_SUCCESS(result); -#else - return false; -#endif -} - -const UOculusXRBaseAnchorComponent* UOculusXRAnchorBPFunctionLibrary::GetAnchorComponent(const FOculusXRSpaceQueryResult& QueryResult, EOculusXRSpaceComponentType ComponentType, UObject* Outer) -{ - auto& anchorsModule = FModuleManager::GetModuleChecked("OculusXRAnchors"); - return anchorsModule.CreateAnchorComponent(QueryResult.Space.Value, ComponentType, Outer); -} diff --git a/Plugins/MetaXR/Source/OculusXRAnchors/Private/OculusXRAnchorComponent.cpp b/Plugins/MetaXR/Source/OculusXRAnchors/Private/OculusXRAnchorComponent.cpp deleted file mode 100644 index dacea16..0000000 --- a/Plugins/MetaXR/Source/OculusXRAnchors/Private/OculusXRAnchorComponent.cpp +++ /dev/null @@ -1,209 +0,0 @@ -// Copyright (c) Meta Platforms, Inc. and affiliates. - -#include "OculusXRAnchorComponent.h" -#include "OculusXRAnchors.h" -#include "OculusXRAnchorsModule.h" -#include "OculusXRHMD.h" -#include "OculusXRAnchorBPFunctionLibrary.h" -#include "OculusXRAnchorsPrivate.h" -#include "GameFramework/PlayerController.h" - -#if !(UE_BUILD_SHIPPING || UE_BUILD_TEST) -static TAutoConsoleVariable CVarOculusXRVerboseAnchorDebugXR( - TEXT("ovr.OculusXRVerboseAnchorDebug"), - 0, - TEXT("Enables or disables verbose logging for Oculus anchors.\n") - TEXT("<=0: disabled (no printing)\n") - TEXT(" 1: enabled (verbose logging)\n")); -#endif - -UOculusXRAnchorComponent::UOculusXRAnchorComponent(const FObjectInitializer& ObjectInitializer) - : Super(ObjectInitializer) - , bUpdateHeadSpaceTransform(true) - , AnchorHandle(0) - , StorageLocations(0) -{ - AnchorHandle = 0; - PrimaryComponentTick.bCanEverTick = true; - PrimaryComponentTick.bStartWithTickEnabled = true; - PrimaryComponentTick.TickGroup = TG_PostUpdateWork; -} - -void UOculusXRAnchorComponent::BeginPlay() -{ - Super::BeginPlay(); - - UWorld* World = GetWorld(); - if (IsValid(World)) - { - APlayerController* PlayerController = World->GetFirstPlayerController(); - if (IsValid(PlayerController)) - { - PlayerCameraManager = PlayerController->PlayerCameraManager; - } - } -} - -void UOculusXRAnchorComponent::TickComponent(float DeltaTime, enum ELevelTick TickType, FActorComponentTickFunction* ThisTickFunction) -{ - Super::TickComponent(DeltaTime, TickType, ThisTickFunction); - UpdateAnchorTransform(); -} - -void UOculusXRAnchorComponent::EndPlay(const EEndPlayReason::Type EndPlayReason) -{ - Super::EndPlay(EndPlayReason); - - if (HasValidHandle()) - { - EOculusXRAnchorResult::Type AnchorResult; - OculusXRAnchors::FOculusXRAnchors::DestroyAnchor(AnchorHandle.GetValue(), AnchorResult); - } -} - -FOculusXRUInt64 UOculusXRAnchorComponent::GetHandle() const -{ - return AnchorHandle; -} - -void UOculusXRAnchorComponent::SetHandle(FOculusXRUInt64 Handle) -{ - AnchorHandle = Handle; -} - -bool UOculusXRAnchorComponent::HasValidHandle() const -{ - return AnchorHandle != FOculusXRUInt64(0); -} - -FOculusXRUUID UOculusXRAnchorComponent::GetUUID() const -{ - return AnchorUUID; -} - -void UOculusXRAnchorComponent::SetUUID(FOculusXRUUID NewUUID) -{ - if (AnchorUUID.IsValidUUID()) - { - UE_LOG(LogOculusXRAnchors, Warning, TEXT("Anchor component already has valid UUID, cannot re-assign a new UUID. Component: %s -- Space: %llu -- UUID: %s"), - *GetName(), AnchorHandle.GetValue(), *AnchorUUID.ToString()); - return; - } - - if (!NewUUID.IsValidUUID()) - { - UE_LOG(LogOculusXRAnchors, Warning, TEXT("New UUID provided to component is invalid, cannot assign. Component: %s -- Space: %llu"), *GetName(), AnchorHandle.GetValue()); - return; - } - - UE_LOG(LogOculusXRAnchors, Verbose, TEXT("Assigned new Oculus UUID: %s"), *NewUUID.ToString()); - - AnchorUUID = NewUUID; -} - -bool UOculusXRAnchorComponent::IsStoredAtLocation(EOculusXRSpaceStorageLocation Location) const -{ - UE_LOG(LogOculusXRAnchors, Verbose, TEXT("Anchor UUID: %s - Saved Local: %d - Saved Cloud: %d"), - *GetUUID().ToString(), - StorageLocations & static_cast(EOculusXRSpaceStorageLocation::Local), - StorageLocations & static_cast(EOculusXRSpaceStorageLocation::Cloud)); - - return (StorageLocations & static_cast(Location)) > 0; -} - -void UOculusXRAnchorComponent::SetStoredLocation(EOculusXRSpaceStorageLocation Location, bool Stored) -{ - if (Stored) - { - StorageLocations |= static_cast(Location); - } - else - { - StorageLocations = StorageLocations & ~static_cast(Location); - } - - UE_LOG(LogOculusXRAnchors, Verbose, TEXT("Anchor UUID: %s - Saved Local: %d - Saved Cloud: %d"), - *GetUUID().ToString(), - StorageLocations & static_cast(EOculusXRSpaceStorageLocation::Local), - StorageLocations & static_cast(EOculusXRSpaceStorageLocation::Cloud)); -} - -bool UOculusXRAnchorComponent::IsSaved() const -{ - return StorageLocations > 0; -} - -void UOculusXRAnchorComponent::UpdateAnchorTransform() const -{ - if (GetWorld() == nullptr) - { - UE_LOG(LogOculusXRAnchors, Warning, TEXT("Unable to retrieve World Context")); - return; - } - - AActor* Parent = GetOwner(); - if (Parent) - { - if (AnchorHandle.Value) - { - FTransform OutTransform; - if (UOculusXRAnchorBPFunctionLibrary::GetAnchorTransformByHandle(AnchorHandle, OutTransform)) - { -#if WITH_EDITOR - // Link only head-space transform update - if (bUpdateHeadSpaceTransform && PlayerCameraManager != nullptr) - { - FTransform MainCameraTransform; - MainCameraTransform.SetLocation(PlayerCameraManager->GetCameraLocation()); - MainCameraTransform.SetRotation(FQuat(PlayerCameraManager->GetCameraRotation())); - - if (!ToWorldSpacePose(MainCameraTransform, OutTransform)) - { - UE_LOG(LogOculusXRAnchors, Display, TEXT("Was not able to transform anchor to world space pose")); - } - } -#endif - -#if !(UE_BUILD_SHIPPING || UE_BUILD_TEST) - if (CVarOculusXRVerboseAnchorDebugXR.GetValueOnGameThread() > 0) - { - UE_LOG(LogOculusXRAnchors, Display, TEXT("UpdateAnchor Pos %s"), *OutTransform.GetLocation().ToString()); - UE_LOG(LogOculusXRAnchors, Display, TEXT("UpdateAnchor Rot %s"), *OutTransform.GetRotation().ToString()); - } -#endif - Parent->SetActorLocationAndRotation(OutTransform.GetLocation(), OutTransform.GetRotation(), false, 0, ETeleportType::ResetPhysics); - } - } - } -} - -bool UOculusXRAnchorComponent::ToWorldSpacePose(FTransform CameraTransform, FTransform& OutTrackingSpaceTransform) const -{ - OculusXRHMD::FOculusXRHMD* OculusXRHMD = OculusXRHMD::FOculusXRHMD::GetOculusXRHMD(); - if (!OculusXRHMD) - { - UE_LOG(LogOculusXRAnchors, Warning, TEXT("Unable to retrieve OculusXRHMD, cannot calculate anchor world space pose.")); - return false; - } - - OculusXRHMD::FPose MainCameraPose(CameraTransform.GetRotation(), CameraTransform.GetLocation()); - OculusXRHMD::FPose TrackingSpacePose(OutTrackingSpaceTransform.GetRotation(), OutTrackingSpaceTransform.GetLocation()); - - FVector OutHeadPosition; - FQuat OutHeadOrientation; - const bool bGetPose = OculusXRHMD->GetCurrentPose(OculusXRHMD->HMDDeviceId, OutHeadOrientation, OutHeadPosition); - if (!bGetPose) - return false; - - OculusXRHMD::FPose HeadPose(OutHeadOrientation, OutHeadPosition); - - OculusXRHMD::FPose poseInHeadSpace = HeadPose.Inverse() * TrackingSpacePose; - - // To world space pose - const OculusXRHMD::FPose WorldTrackingSpacePose = MainCameraPose * poseInHeadSpace; - - OutTrackingSpaceTransform.SetLocation(WorldTrackingSpacePose.Position); - OutTrackingSpaceTransform.SetRotation(WorldTrackingSpacePose.Orientation); - - return true; -} diff --git a/Plugins/MetaXR/Source/OculusXRAnchors/Private/OculusXRAnchorComponents.cpp b/Plugins/MetaXR/Source/OculusXRAnchors/Private/OculusXRAnchorComponents.cpp deleted file mode 100644 index b9be13e..0000000 --- a/Plugins/MetaXR/Source/OculusXRAnchors/Private/OculusXRAnchorComponents.cpp +++ /dev/null @@ -1,51 +0,0 @@ -// Copyright (c) Meta Platforms, Inc. and affiliates. - -#include "OculusXRAnchorComponents.h" - -#include "OculusXRAnchorBPFunctionLibrary.h" -#include "OculusXRAnchorManager.h" -#include "OculusXRSpatialAnchorComponent.h" - -bool UOculusXRBaseAnchorComponent::IsComponentEnabled() const -{ - bool OutEnabled; - bool OutChangePending; - - auto OutResult = OculusXRAnchors::FOculusXRAnchorManager::GetAnchorComponentStatus(Space, Type, OutEnabled, OutChangePending); - return UOculusXRAnchorBPFunctionLibrary::IsAnchorResultSuccess(OutResult) && OutEnabled; -} - -EOculusXRSpaceComponentType UOculusXRBaseAnchorComponent::GetType() const -{ - return Type; -} - -uint64 UOculusXRBaseAnchorComponent::GetSpace() const -{ - return Space; -} - -bool UOculusXRLocatableAnchorComponent::GetTransform(FTransform& outTransform) const -{ - ensure(IsComponentEnabled()); - - if (!UOculusXRAnchorBPFunctionLibrary::GetAnchorTransformByHandle(Space, outTransform)) - { - UE_LOG(LogOculusSpatialAnchor, Warning, TEXT("Fetching transform failed.")); - return false; - } - return true; -} - -bool UOculusXRSpaceContainerAnchorComponent::GetUUIDs(TArray& outUUIDs) const -{ - ensure(IsComponentEnabled()); - - if (!OculusXRAnchors::FOculusXRAnchorManager::GetAnchorContainerUUIDs(Space, outUUIDs)) - { - UE_LOG(LogOculusSpatialAnchor, Warning, TEXT("Fetching container uuids failed.")); - return false; - } - - return true; -} diff --git a/Plugins/MetaXR/Source/OculusXRAnchors/Private/OculusXRAnchorDelegates.cpp b/Plugins/MetaXR/Source/OculusXRAnchors/Private/OculusXRAnchorDelegates.cpp deleted file mode 100644 index fedd8bb..0000000 --- a/Plugins/MetaXR/Source/OculusXRAnchors/Private/OculusXRAnchorDelegates.cpp +++ /dev/null @@ -1,31 +0,0 @@ -// Copyright (c) Meta Platforms, Inc. and affiliates. - -#include "OculusXRAnchorDelegates.h" - -FOculusXRAnchorEventDelegates::FOculusXRSpatialAnchorCreateCompleteDelegate FOculusXRAnchorEventDelegates::OculusSpatialAnchorCreateComplete; - -FOculusXRAnchorEventDelegates::FOculusXRSpaceSetComponentStatusCompleteDelegate FOculusXRAnchorEventDelegates::OculusSpaceSetComponentStatusComplete; - -FOculusXRAnchorEventDelegates::FOculusXRSpaceQueryResultsDelegate FOculusXRAnchorEventDelegates::OculusSpaceQueryResults; - -FOculusXRAnchorEventDelegates::FOculusXRSpaceQueryResultDelegate FOculusXRAnchorEventDelegates::OculusSpaceQueryResult; - -FOculusXRAnchorEventDelegates::FOculusXRSpaceQueryCompleteDelegate FOculusXRAnchorEventDelegates::OculusSpaceQueryComplete; - -FOculusXRAnchorEventDelegates::FOculusXRSpaceSaveCompleteDelegate FOculusXRAnchorEventDelegates::OculusSpaceSaveComplete; - -FOculusXRAnchorEventDelegates::FOculusXRSpaceListSaveCompleteDelegate FOculusXRAnchorEventDelegates::OculusSpaceListSaveComplete; - -FOculusXRAnchorEventDelegates::FOculusXRSpaceEraseCompleteDelegate FOculusXRAnchorEventDelegates::OculusSpaceEraseComplete; - -FOculusXRAnchorEventDelegates::FOculusXRSpaceShareCompleteDelegate FOculusXRAnchorEventDelegates::OculusSpaceShareComplete; - -FOculusXRAnchorEventDelegates::FOculusXRAnchorsDiscoverCompleteDelegate FOculusXRAnchorEventDelegates::OculusAnchorsDiscoverComplete; - -FOculusXRAnchorEventDelegates::FOculusXRAnchorsDiscoverResultsDelegate FOculusXRAnchorEventDelegates::OculusAnchorsDiscoverResults; - -FOculusXRAnchorEventDelegates::FOculusXRAnchorsSaveCompleteDelegate FOculusXRAnchorEventDelegates::OculusAnchorsSaveComplete; - -FOculusXRAnchorEventDelegates::FOculusXRAnchorsEraseCompleteDelegate FOculusXRAnchorEventDelegates::OculusAnchorsEraseComplete; - -FOculusXRAnchorEventDelegates::FOculusXRShareAnchorsCompleteDelegate FOculusXRAnchorEventDelegates::OculusShareAnchorsComplete; diff --git a/Plugins/MetaXR/Source/OculusXRAnchors/Private/OculusXRAnchorFunctionsOVR.cpp b/Plugins/MetaXR/Source/OculusXRAnchors/Private/OculusXRAnchorFunctionsOVR.cpp deleted file mode 100644 index c9419bb..0000000 --- a/Plugins/MetaXR/Source/OculusXRAnchors/Private/OculusXRAnchorFunctionsOVR.cpp +++ /dev/null @@ -1,612 +0,0 @@ -// Copyright (c) Meta Platforms, Inc. and affiliates. - -#include "OculusXRAnchorFunctionsOVR.h" -#include "OculusXRHMD.h" -#include "OculusXRAnchorsModule.h" -#include "OculusXRAnchorDelegates.h" -#include "OculusXRAnchorBPFunctionLibrary.h" -#include "OculusXRAnchorTypesPrivate.h" -#include "OculusXRAnchorsUtil.h" - -ovrpSpaceQueryInfo2 ToOvrpSpaceQuery(const FOculusXRSpaceQueryInfo& UEQueryInfo) -{ - static const int32 MaxIdsInFilter = 1024; - static const int32 MaxComponentTypesInFilter = 1; - - ovrpSpaceQueryInfo2 Result = {}; - - Result.queryType = ovrpSpaceQueryType_Action; - Result.actionType = ovrpSpaceQueryActionType_Load; - - Result.maxQuerySpaces = UEQueryInfo.MaxQuerySpaces; - Result.timeout = static_cast(UEQueryInfo.Timeout); - - switch (UEQueryInfo.Location) - { - case EOculusXRSpaceStorageLocation::Invalid: - Result.location = ovrpSpaceStorageLocation_Invalid; - break; - case EOculusXRSpaceStorageLocation::Local: - Result.location = ovrpSpaceStorageLocation_Local; - break; - case EOculusXRSpaceStorageLocation::Cloud: - Result.location = ovrpSpaceStorageLocation_Cloud; - break; - } - - switch (UEQueryInfo.FilterType) - { - case EOculusXRSpaceQueryFilterType::None: - Result.filterType = ovrpSpaceQueryFilterType_None; - break; - case EOculusXRSpaceQueryFilterType::FilterByIds: - Result.filterType = ovrpSpaceQueryFilterType_Ids; - break; - case EOculusXRSpaceQueryFilterType::FilterByComponentType: - Result.filterType = ovrpSpaceQueryFilterType_Components; - break; - case EOculusXRSpaceQueryFilterType::FilterByGroup: - Result.filterType = ovrpSpaceQueryFilterType_GroupUuid; - break; - } - - Result.IdInfo.numIds = FMath::Min(MaxIdsInFilter, UEQueryInfo.IDFilter.Num()); - for (int i = 0; i < Result.IdInfo.numIds; ++i) - { - ovrpUuid OvrUuid; - FMemory::Memcpy(OvrUuid.data, UEQueryInfo.IDFilter[i].UUIDBytes); - Result.IdInfo.ids[i] = OvrUuid; - } - - if (UEQueryInfo.ComponentFilter.Num() > 1) - { - UE_LOG(LogOculusXRAnchors, Warning, TEXT("Query info has more than one component. Using first component only.")); - } - - Result.componentsInfo.numComponents = FMath::Min(MaxComponentTypesInFilter, UEQueryInfo.ComponentFilter.Num()); - for (int i = 0; i < Result.componentsInfo.numComponents; ++i) - { - Result.componentsInfo.components[i] = ConvertToOvrpComponentType(UEQueryInfo.ComponentFilter[i]); - } - - FMemory::Memcpy(Result.groupUuidInfo.groupUuid.data, UEQueryInfo.GroupUUIDFilter.UUIDBytes); - - return Result; -} - -EOculusXRAnchorResult::Type FOculusXRAnchorFunctionsOVR::CreateAnchor(const FTransform& InTransform, uint64& OutRequestId, const FTransform& CameraTransform) -{ - OculusXRHMD::FOculusXRHMD* HMD = OculusXRHMD::FOculusXRHMD::GetOculusXRHMD(); - if (!HMD) - { - UE_LOG(LogOculusXRAnchors, Warning, TEXT("FOculusAnchorManager::CreateAnchor failed to retrieve HMD.")); - return EOculusXRAnchorResult::Failure; - } - - ovrpTrackingOrigin TrackingOriginType; - ovrpPosef Posef; - double Time = 0; - - const FTransform TrackingToWorld = HMD->GetLastTrackingToWorld(); - - // convert to tracking space - const FQuat TrackingSpaceOrientation = TrackingToWorld.Inverse().TransformRotation(InTransform.Rotator().Quaternion()); - const FVector TrackingSpacePosition = TrackingToWorld.Inverse().TransformPosition(InTransform.GetLocation()); - - const OculusXRHMD::FPose TrackingSpacePose(TrackingSpaceOrientation, TrackingSpacePosition); - -#if WITH_EDITOR - // Link only head space position update - FVector OutHeadPosition; - FQuat OutHeadOrientation; - const bool bGetPose = HMD->GetCurrentPose(HMD->HMDDeviceId, OutHeadOrientation, OutHeadPosition); - if (!bGetPose) - { - UE_LOG(LogOculusXRAnchors, Warning, TEXT("FOculusAnchorManager::CreateAnchor failed to get current headset pose.")); - return EOculusXRAnchorResult::Failure; - } - - OculusXRHMD::FPose HeadPose(OutHeadOrientation, OutHeadPosition); - - OculusXRHMD::FPose MainCameraPose(CameraTransform.GetRotation(), CameraTransform.GetLocation()); - OculusXRHMD::FPose PoseInHeadSpace = MainCameraPose.Inverse() * TrackingSpacePose; - - // To world space pose - OculusXRHMD::FPose WorldPose = HeadPose * PoseInHeadSpace; - - const bool bConverted = HMD->ConvertPose(WorldPose, Posef); -#else - const bool bConverted = HMD->ConvertPose(TrackingSpacePose, Posef); -#endif - - if (!bConverted) - { - UE_LOG(LogOculusXRAnchors, Warning, TEXT("FOculusAnchorManager::CreateAnchor failed to convert pose.")); - return EOculusXRAnchorResult::Failure; - } - - FOculusXRHMDModule::GetPluginWrapper().GetTrackingOriginType2(&TrackingOriginType); - FOculusXRHMDModule::GetPluginWrapper().GetTimeInSeconds(&Time); - - const ovrpSpatialAnchorCreateInfo SpatialAnchorCreateInfo = { - TrackingOriginType, - Posef, - Time - }; - - const ovrpResult Result = FOculusXRHMDModule::GetPluginWrapper().CreateSpatialAnchor(&SpatialAnchorCreateInfo, &OutRequestId); - UE_LOG(LogOculusXRAnchors, Verbose, TEXT("CreateAnchor Request ID: %llu"), OutRequestId); - - if (OVRP_FAILURE(Result)) - { - UE_LOG(LogOculusXRAnchors, Error, TEXT("FOculusAnchorManager::CreateAnchor failed. Result: %d"), Result); - } - - return OculusXRAnchors::GetResultFromOVRResult(Result); -} - -EOculusXRAnchorResult::Type FOculusXRAnchorFunctionsOVR::DestroyAnchor(uint64 AnchorHandle) -{ - const ovrpResult Result = FOculusXRHMDModule::GetPluginWrapper().DestroySpace(static_cast(&AnchorHandle)); - - UE_LOG(LogOculusXRAnchors, Verbose, TEXT("DestroyAnchor -- ID: %llu"), AnchorHandle); - - return OculusXRAnchors::GetResultFromOVRResult(Result); -} - -EOculusXRAnchorResult::Type FOculusXRAnchorFunctionsOVR::TryGetAnchorTransform(uint64 AnchorHandle, FTransform& OutTransform, FOculusXRAnchorLocationFlags& OutLocationFlags, EOculusXRAnchorSpace Space) -{ - OculusXRHMD::FOculusXRHMD* OutHMD = OculusXRHMD::FOculusXRHMD::GetOculusXRHMD(); - if (!OutHMD) - { - UE_LOG(LogOculusXRAnchors, Warning, TEXT("Unable to retrieve OculusXRHMD, cannot calculate anchor transform.")); - return EOculusXRAnchorResult::Failure_InvalidOperation; - } - - ovrpTrackingOrigin ovrpOrigin = ovrpTrackingOrigin_EyeLevel; - const bool bTrackingOriginSuccess = OVRP_SUCCESS(FOculusXRHMDModule::GetPluginWrapper().GetTrackingOriginType2(&ovrpOrigin)); - if (!bTrackingOriginSuccess) - { - UE_LOG(LogOculusXRAnchors, Warning, TEXT("Unable to get tracking origin, cannot calculate anchor transform.")); - return EOculusXRAnchorResult::Failure_InvalidOperation; - } - - OutTransform = FTransform::Identity; - OutLocationFlags = FOculusXRAnchorLocationFlags(0); - - const ovrpUInt64 ovrpSpace = AnchorHandle; - ovrpSpaceLocationf ovrpSpaceLocation{}; - - const ovrpResult result = FOculusXRHMDModule::GetPluginWrapper().LocateSpace2(&ovrpSpaceLocation, &ovrpSpace, ovrpOrigin); - if (OVRP_SUCCESS(result)) - { - OutLocationFlags = FOculusXRAnchorLocationFlags(ovrpSpaceLocation.locationFlags); - if (OutLocationFlags.IsValid()) - { - OculusXRHMD::FPose Pose; - OutHMD->ConvertPose(ovrpSpaceLocation.pose, Pose); - switch (Space) - { - case EOculusXRAnchorSpace::World: - { - const FTransform trackingToWorld = OutHMD->GetLastTrackingToWorld(); - OutTransform.SetLocation(trackingToWorld.TransformPosition(Pose.Position)); - OutTransform.SetRotation(FRotator(trackingToWorld.TransformRotation(FQuat(Pose.Orientation))).Quaternion()); - } - break; - case EOculusXRAnchorSpace::Tracking: - { - OutTransform.SetLocation(Pose.Position); - OutTransform.SetRotation(FRotator(FQuat(Pose.Orientation)).Quaternion()); - } - break; - }; - } - else - { - return EOculusXRAnchorResult::Failure_OperationFailed; - } - } - - return OculusXRAnchors::GetResultFromOVRResult(result); -} - -EOculusXRAnchorResult::Type FOculusXRAnchorFunctionsOVR::SetAnchorComponentStatus(uint64 AnchorHandle, EOculusXRSpaceComponentType ComponentType, bool Enable, float Timeout, uint64& OutRequestId) -{ - ovrpSpaceComponentType ovrpType = ConvertToOvrpComponentType(ComponentType); - const ovrpUInt64 OVRPSpace = AnchorHandle; - - // validate existing status - ovrpBool isEnabled = false; - ovrpBool changePending = false; - const ovrpResult getComponentStatusResult = FOculusXRHMDModule::GetPluginWrapper().GetSpaceComponentStatus(&OVRPSpace, ovrpType, &isEnabled, &changePending); - - bool isStatusChangingOrSame = (static_cast(isEnabled) == Enable && !changePending) || (static_cast(isEnabled) != Enable && changePending); - if (OVRP_SUCCESS(getComponentStatusResult) && isStatusChangingOrSame) - { - return EOculusXRAnchorResult::Success; - } - - // set status - const ovrpResult Result = FOculusXRHMDModule::GetPluginWrapper().SetSpaceComponentStatus( - &OVRPSpace, - ovrpType, - Enable, - Timeout, - &OutRequestId); - - UE_LOG(LogOculusXRAnchors, Verbose, TEXT("SetSpaceComponentStatus Request ID: %llu"), OutRequestId); - - return OculusXRAnchors::GetResultFromOVRResult(Result); -} - -EOculusXRAnchorResult::Type FOculusXRAnchorFunctionsOVR::GetAnchorComponentStatus(uint64 AnchorHandle, EOculusXRSpaceComponentType ComponentType, bool& OutEnabled, bool& OutChangePending) -{ - const ovrpUInt64 OVRPSpace = AnchorHandle; - ovrpBool OutOvrpEnabled = ovrpBool_False; - ovrpBool OutOvrpChangePending = ovrpBool_False; - - ovrpSpaceComponentType ovrpType = ConvertToOvrpComponentType(ComponentType); - - const ovrpResult Result = FOculusXRHMDModule::GetPluginWrapper().GetSpaceComponentStatus( - &OVRPSpace, - ovrpType, - &OutOvrpEnabled, - &OutOvrpChangePending); - - OutEnabled = (OutOvrpEnabled == ovrpBool_True); - OutChangePending = (OutOvrpChangePending == ovrpBool_True); - - return OculusXRAnchors::GetResultFromOVRResult(Result); -} - -EOculusXRAnchorResult::Type FOculusXRAnchorFunctionsOVR::GetSupportedAnchorComponents(uint64 AnchorHandle, TArray& OutSupportedTypes) -{ - ovrpSpace ovrSpace = AnchorHandle; - TArray ovrComponentTypes; - ovrpUInt32 input = 0; - ovrpUInt32 output = 0; - - ovrpResult enumerateResult = FOculusXRHMDModule::GetPluginWrapper().EnumerateSpaceSupportedComponents(&ovrSpace, input, &output, nullptr); - if (!OVRP_SUCCESS(enumerateResult)) - { - return OculusXRAnchors::GetResultFromOVRResult(enumerateResult); - } - - input = output; - ovrComponentTypes.SetNumZeroed(output); - - enumerateResult = FOculusXRHMDModule::GetPluginWrapper().EnumerateSpaceSupportedComponents(&ovrSpace, input, &output, ovrComponentTypes.GetData()); - if (!OVRP_SUCCESS(enumerateResult)) - { - return OculusXRAnchors::GetResultFromOVRResult(enumerateResult); - } - - OutSupportedTypes.SetNumZeroed(ovrComponentTypes.Num()); - for (int i = 0; i < ovrComponentTypes.Num(); ++i) - { - OutSupportedTypes[i] = ConvertToUEComponentType(ovrComponentTypes[i]); - } - - return OculusXRAnchors::GetResultFromOVRResult(enumerateResult); -} - -EOculusXRAnchorResult::Type FOculusXRAnchorFunctionsOVR::GetAnchorContainerUUIDs(uint64 AnchorHandle, TArray& OutUUIDs) -{ - TArray ovrUuidArray; - - // Get the number of elements in the container - ovrpSpaceContainer ovrSpaceContainer = {}; - ovrSpaceContainer.uuidCapacityInput = 0; - ovrSpaceContainer.uuidCountOutput = 0; - ovrSpaceContainer.uuids = nullptr; - ovrpResult result = FOculusXRHMDModule::GetPluginWrapper().GetSpaceContainer(&AnchorHandle, &ovrSpaceContainer); - if (OVRP_FAILURE(result)) - { - UE_LOG(LogOculusXRAnchors, Warning, TEXT("Failed to get space container %d"), result); - return OculusXRAnchors::GetResultFromOVRResult(result); - } - - // Retrieve the actual array of UUIDs - ovrUuidArray.SetNum(ovrSpaceContainer.uuidCountOutput); - ovrSpaceContainer.uuidCapacityInput = ovrSpaceContainer.uuidCountOutput; - ovrSpaceContainer.uuids = ovrUuidArray.GetData(); - - result = FOculusXRHMDModule::GetPluginWrapper().GetSpaceContainer(&AnchorHandle, &ovrSpaceContainer); - if (OVRP_FAILURE(result)) - { - UE_LOG(LogOculusXRAnchors, Warning, TEXT("Failed to get space container %d"), result); - return OculusXRAnchors::GetResultFromOVRResult(result); - } - - // Write out the remaining UUIDs - OutUUIDs.Reserve(ovrUuidArray.Num()); - for (auto& it : ovrUuidArray) - { - OutUUIDs.Add(FOculusXRUUID(it.data)); - } - - return EOculusXRAnchorResult::Success; -} - -EOculusXRAnchorResult::Type FOculusXRAnchorFunctionsOVR::SaveAnchor(uint64 AnchorHandle, - EOculusXRSpaceStorageLocation StorageLocation, - EOculusXRSpaceStoragePersistenceMode StoragePersistenceMode, uint64& OutRequestId) -{ - ovrpSpaceStorageLocation OvrpStorageLocation = ovrpSpaceStorageLocation_Local; - switch (StorageLocation) - { - case EOculusXRSpaceStorageLocation::Invalid: - OvrpStorageLocation = ovrpSpaceStorageLocation_Invalid; - break; - case EOculusXRSpaceStorageLocation::Local: - OvrpStorageLocation = ovrpSpaceStorageLocation_Local; - break; - case EOculusXRSpaceStorageLocation::Cloud: - OvrpStorageLocation = ovrpSpaceStorageLocation_Cloud; - break; - default: - break; - } - - ovrpSpaceStoragePersistenceMode OvrpStoragePersistenceMode = ovrpSpaceStoragePersistenceMode_Invalid; - switch (StoragePersistenceMode) - { - case EOculusXRSpaceStoragePersistenceMode::Invalid: - OvrpStoragePersistenceMode = ovrpSpaceStoragePersistenceMode_Invalid; - break; - case EOculusXRSpaceStoragePersistenceMode::Indefinite: - OvrpStoragePersistenceMode = ovrpSpaceStoragePersistenceMode_Indefinite; - break; - default: - break; - } - - const ovrpResult Result = FOculusXRHMDModule::GetPluginWrapper().SaveSpace(&AnchorHandle, OvrpStorageLocation, OvrpStoragePersistenceMode, &OutRequestId); - - UE_LOG(LogOculusXRAnchors, Verbose, TEXT("Saving anchor with, ID: %llu -- Location: %d -- Persistence: %d -- OutID: %llu"), AnchorHandle, OvrpStorageLocation, OvrpStoragePersistenceMode, OutRequestId); - - if (OVRP_FAILURE(Result)) - { - UE_LOG(LogOculusXRAnchors, Warning, TEXT("FOculusXRHMD::SaveAnchor failed with, ID: %llu -- Location: %d -- Persistence: %d"), AnchorHandle, OvrpStorageLocation, OvrpStoragePersistenceMode); - } - - return OculusXRAnchors::GetResultFromOVRResult(Result); -} - -EOculusXRAnchorResult::Type FOculusXRAnchorFunctionsOVR::SaveAnchorList(const TArray& AnchorHandles, EOculusXRSpaceStorageLocation StorageLocation, uint64& OutRequestId) -{ - ovrpSpaceStorageLocation OvrpStorageLocation = ovrpSpaceStorageLocation_Local; - switch (StorageLocation) - { - case EOculusXRSpaceStorageLocation::Invalid: - OvrpStorageLocation = ovrpSpaceStorageLocation_Invalid; - break; - case EOculusXRSpaceStorageLocation::Local: - OvrpStorageLocation = ovrpSpaceStorageLocation_Local; - break; - case EOculusXRSpaceStorageLocation::Cloud: - OvrpStorageLocation = ovrpSpaceStorageLocation_Cloud; - break; - default: - break; - } - - const ovrpResult Result = FOculusXRHMDModule::GetPluginWrapper().SaveSpaceList(AnchorHandles.GetData(), AnchorHandles.Num(), OvrpStorageLocation, &OutRequestId); - - UE_LOG(LogOculusXRAnchors, Verbose, TEXT("Saving space list: Location: %d -- OutID: %llu"), OvrpStorageLocation, OutRequestId); - for (auto& it : AnchorHandles) - { - UE_LOG(LogOculusXRAnchors, Verbose, TEXT("\tSpaceID: %llu"), it); - } - - if (OVRP_FAILURE(Result)) - { - UE_LOG(LogOculusXRAnchors, Warning, TEXT("SaveSpaceList failed -- Result: %d"), Result); - } - - return OculusXRAnchors::GetResultFromOVRResult(Result); -} - -EOculusXRAnchorResult::Type FOculusXRAnchorFunctionsOVR::SaveAnchors(const TArray& AnchorHandles, uint64& OutRequestId) -{ - if (AnchorHandles.Num() == 0) - { - UE_LOG(LogOculusXRAnchors, Warning, TEXT("FOculusXRAnchorFunctionsOVR::SaveAnchors has empty handle array")); - } - - const ovrpResult Result = FOculusXRHMDModule::GetPluginWrapper().SaveSpaces(AnchorHandles.Num(), AnchorHandles.GetData(), &OutRequestId); - - if (!OVRP_SUCCESS(Result)) - { - UE_LOG(LogOculusXRAnchors, Error, TEXT("FOculusXRAnchorFunctionsOVR::SaveAnchors failed, result: %d"), Result); - } - - return OculusXRAnchors::GetResultFromOVRResult(Result); -} - -EOculusXRAnchorResult::Type FOculusXRAnchorFunctionsOVR::DiscoverAnchors(const FOculusXRSpaceDiscoveryInfo& DiscoveryInfo, uint64& OutRequestId) -{ - uint32 FiltersCount = (uint32)DiscoveryInfo.Filters.Num(); - ovrpSpaceDiscoveryInfo OvrDiscoveryInfo = {}; - OvrDiscoveryInfo.FilterCount = FiltersCount; - - UE_LOG(LogOculusXRAnchors, Display, TEXT("Staring discovery with %d filter(s)"), FiltersCount); - - TArray filters; - filters.SetNumZeroed(FiltersCount); - - for (uint32 i = 0; i < FiltersCount; ++i) - { - ensure(DiscoveryInfo.Filters[i] != nullptr); - filters[i] = DiscoveryInfo.Filters[i]->GenerateOVRPFilter(); - } - - OvrDiscoveryInfo.Filters = filters.GetData(); - const ovrpResult Result = FOculusXRHMDModule::GetPluginWrapper().DiscoverSpaces(&OvrDiscoveryInfo, &OutRequestId); - - if (!OVRP_SUCCESS(Result)) - { - UE_LOG(LogOculusXRAnchors, Error, TEXT("FOculusXRAnchorFunctionsOVR::DiscoverAnchors failed -- Result: %d"), Result); - } - - return OculusXRAnchors::GetResultFromOVRResult(Result); -} - -EOculusXRAnchorResult::Type FOculusXRAnchorFunctionsOVR::QueryAnchors(const FOculusXRSpaceQueryInfo& QueryInfo, uint64& OutRequestId) -{ - ovrpResult QuerySpacesResult = ovrpFailure; - - ovrpSpaceQueryInfo2 ovrQueryInfo = ToOvrpSpaceQuery(QueryInfo); - QuerySpacesResult = FOculusXRHMDModule::GetPluginWrapper().QuerySpaces2(&ovrQueryInfo, &OutRequestId); - - UE_LOG(LogOculusXRAnchors, Verbose, TEXT("Query Spaces\n ovrpSpaceQueryInfo:\n\tQueryType: %d\n\tMaxQuerySpaces: %d\n\tTimeout: %f\n\tLocation: %d\n\tActionType: %d\n\tFilterType: %d\n\n\tRequest ID: %llu"), - ovrQueryInfo.queryType, ovrQueryInfo.maxQuerySpaces, (float)ovrQueryInfo.timeout, ovrQueryInfo.location, ovrQueryInfo.actionType, ovrQueryInfo.filterType, OutRequestId); - - if (QueryInfo.FilterType == EOculusXRSpaceQueryFilterType::FilterByIds) - { - UE_LOG(LogOculusXRAnchors, Verbose, TEXT("Query contains %d UUIDs"), QueryInfo.IDFilter.Num()); - for (auto& it : QueryInfo.IDFilter) - { - UE_LOG(LogOculusXRAnchors, Verbose, TEXT("UUID: %s"), *it.ToString()); - } - } - else if (QueryInfo.FilterType == EOculusXRSpaceQueryFilterType::FilterByComponentType) - { - UE_LOG(LogOculusXRAnchors, Verbose, TEXT("Query contains %d Component Types"), QueryInfo.ComponentFilter.Num()); - for (auto& it : QueryInfo.ComponentFilter) - { - UE_LOG(LogOculusXRAnchors, Verbose, TEXT("ComponentType: %s"), *UEnum::GetValueAsString(it)); - } - } - else if (QueryInfo.FilterType == EOculusXRSpaceQueryFilterType::FilterByGroup) - { - UE_LOG(LogOculusXRAnchors, Verbose, TEXT("Query contains group filter - UUID: %s"), *QueryInfo.GroupUUIDFilter.ToString()); - } - - return OculusXRAnchors::GetResultFromOVRResult(QuerySpacesResult); -} - -EOculusXRAnchorResult::Type FOculusXRAnchorFunctionsOVR::ShareAnchors(const TArray& AchorHandles, const TArray& UserIds, uint64& OutRequestId) -{ - TArray stringStorage; - TArray OvrpUsers; - for (const auto& UserId : UserIds) - { - ovrpUser OvrUser; - ovrpResult Result = FOculusXRHMDModule::GetPluginWrapper().CreateSpaceUser(&UserId, &OvrUser); - if (OVRP_FAILURE(Result)) - { - UE_LOG(LogOculusXRAnchors, Warning, TEXT("Failed to create space user from ID - %llu"), UserId); - continue; - } - - OvrpUsers.Add(OvrUser); - } - - const ovrpResult ShareSpacesResult = FOculusXRHMDModule::GetPluginWrapper().ShareSpaces(AchorHandles.GetData(), AchorHandles.Num(), OvrpUsers.GetData(), OvrpUsers.Num(), &OutRequestId); - - UE_LOG(LogOculusXRAnchors, Verbose, TEXT("Sharing space list -- OutID: %llu"), OutRequestId); - for (auto& User : OvrpUsers) - { - UE_LOG(LogOculusXRAnchors, Verbose, TEXT("\tOvrpUser: %llu"), User); - ovrpResult Result = FOculusXRHMDModule::GetPluginWrapper().DestroySpaceUser(&User); - if (OVRP_FAILURE(Result)) - { - UE_LOG(LogOculusXRAnchors, Verbose, TEXT("Failed to destroy space user: %llu"), User); - continue; - } - } - - for (auto& it : AchorHandles) - { - UE_LOG(LogOculusXRAnchors, Verbose, TEXT("\tSpaceID: %llu"), it); - } - - return OculusXRAnchors::GetResultFromOVRResult(ShareSpacesResult); -} - -EOculusXRAnchorResult::Type FOculusXRAnchorFunctionsOVR::ShareAnchors(const TArray& AnchorHandles, const TArray& Groups, uint64& OutRequestId) -{ - TArray groupUuids; - groupUuids.Reserve(Groups.Num()); - for (auto& it : Groups) - { - ovrpUuid uuid; - FMemory::Memcpy(uuid.data, it.UUIDBytes); - groupUuids.Add(uuid); - } - - TSharedPtr groupRecipientInfo = MakeShared(); - groupRecipientInfo->GroupCount = groupUuids.Num(); - groupRecipientInfo->GroupUuids = groupUuids.GetData(); - - ovrpShareSpacesInfo shareInfo; - shareInfo.SpaceCount = AnchorHandles.Num(); - shareInfo.Spaces = (ovrpSpace*)AnchorHandles.GetData(); - shareInfo.RecipientType = ovrpShareSpacesRecipientType_Group; - shareInfo.RecipientInfo = groupRecipientInfo.Get(); - - ovrpResult result = FOculusXRHMDModule::GetPluginWrapper().ShareSpaces2(&shareInfo, &OutRequestId); - - return OculusXRAnchors::GetResultFromOVRResult(result); -} - -EOculusXRAnchorResult::Type FOculusXRAnchorFunctionsOVR::EraseAnchor(uint64 AnchorHandle, - EOculusXRSpaceStorageLocation StorageLocation, uint64& OutRequestId) -{ - ovrpSpaceStorageLocation ovrpStorageLocation = ovrpSpaceStorageLocation_Local; - switch (StorageLocation) - { - case EOculusXRSpaceStorageLocation::Invalid: - ovrpStorageLocation = ovrpSpaceStorageLocation_Invalid; - break; - case EOculusXRSpaceStorageLocation::Local: - ovrpStorageLocation = ovrpSpaceStorageLocation_Local; - break; - case EOculusXRSpaceStorageLocation::Cloud: - ovrpStorageLocation = ovrpSpaceStorageLocation_Cloud; - break; - default:; - } - - ovrpUInt64 OvrpOutRequestId = 0; - const ovrpResult Result = FOculusXRHMDModule::GetPluginWrapper().EraseSpace(&AnchorHandle, ovrpStorageLocation, &OvrpOutRequestId); - memcpy(&OutRequestId, &OvrpOutRequestId, sizeof(uint64)); - - UE_LOG(LogOculusXRAnchors, Log, TEXT("Erasing anchor -- Handle: %llu -- Location: %d -- OutID: %llu"), AnchorHandle, ovrpStorageLocation, OvrpOutRequestId); - - return OculusXRAnchors::GetResultFromOVRResult(Result); -} - -EOculusXRAnchorResult::Type FOculusXRAnchorFunctionsOVR::EraseAnchors(const TArray& AnchorHandles, const TArray& UUIDs, uint64& OutRequestId) -{ - if (AnchorHandles.IsEmpty() && UUIDs.IsEmpty()) - { - UE_LOG(LogOculusXRAnchors, Warning, TEXT("FOculusXRAnchorFunctionsOVR::EraseAnchors - You cannot have an empty handle and uuid array. At least one array must have elements.")); - return EOculusXRAnchorResult::Failure_InvalidParameter; - } - - TArray ovrpHandles; - for (auto& handle : AnchorHandles) - { - ovrpHandles.Add(handle.GetValue()); - } - - TArray ovrpUUIDs; - for (auto& id : UUIDs) - { - ovrpUuid OvrUuid; - FMemory::Memcpy(OvrUuid.data, id.UUIDBytes); - ovrpUUIDs.Add(OvrUuid); - } - - const ovrpResult Result = FOculusXRHMDModule::GetPluginWrapper().EraseSpaces(ovrpHandles.Num(), ovrpHandles.GetData(), ovrpUUIDs.Num(), ovrpUUIDs.GetData(), &OutRequestId); - - if (!OVRP_SUCCESS(Result)) - { - UE_LOG(LogOculusXRAnchors, Error, TEXT("FOculusXRAnchorFunctionsOVR::EraseAnchors failed -- Result: %d"), Result); - } - - return OculusXRAnchors::GetResultFromOVRResult(Result); -} diff --git a/Plugins/MetaXR/Source/OculusXRAnchors/Private/OculusXRAnchorFunctionsOVR.h b/Plugins/MetaXR/Source/OculusXRAnchors/Private/OculusXRAnchorFunctionsOVR.h deleted file mode 100644 index d0a6248..0000000 --- a/Plugins/MetaXR/Source/OculusXRAnchors/Private/OculusXRAnchorFunctionsOVR.h +++ /dev/null @@ -1,30 +0,0 @@ -// Copyright (c) Meta Platforms, Inc. and affiliates. - -#pragma once - -#include "OculusXRAnchorFunctions.h" - -class OCULUSXRANCHORS_API FOculusXRAnchorFunctionsOVR : public IOculusXRAnchorFunctions -{ -public: - virtual EOculusXRAnchorResult::Type CreateAnchor(const FTransform& InTransform, uint64& OutRequestId, const FTransform& CameraTransform) override; - virtual EOculusXRAnchorResult::Type DestroyAnchor(uint64 AnchorHandle) override; - - virtual EOculusXRAnchorResult::Type TryGetAnchorTransform(uint64 AnchorHandle, FTransform& OutTransform, FOculusXRAnchorLocationFlags& OutLocationFlags, EOculusXRAnchorSpace Space) override; - virtual EOculusXRAnchorResult::Type SetAnchorComponentStatus(uint64 AnchorHandle, EOculusXRSpaceComponentType ComponentType, bool Enable, float Timeout, uint64& OutRequestId) override; - virtual EOculusXRAnchorResult::Type GetAnchorComponentStatus(uint64 AnchorHandle, EOculusXRSpaceComponentType ComponentType, bool& OutEnabled, bool& OutChangePending) override; - virtual EOculusXRAnchorResult::Type GetSupportedAnchorComponents(uint64 AnchorHandle, TArray& OutSupportedTypes) override; - virtual EOculusXRAnchorResult::Type GetAnchorContainerUUIDs(uint64 AnchorHandle, TArray& OutUUIDs) override; - - virtual EOculusXRAnchorResult::Type SaveAnchor(uint64 AnchorHandle, EOculusXRSpaceStorageLocation StorageLocation, EOculusXRSpaceStoragePersistenceMode StoragePersistenceMode, uint64& OutRequestId) override; - virtual EOculusXRAnchorResult::Type SaveAnchorList(const TArray& AnchorHandles, EOculusXRSpaceStorageLocation StorageLocation, uint64& OutRequestId) override; - virtual EOculusXRAnchorResult::Type SaveAnchors(const TArray& AnchorHandles, uint64& OutRequestId) override; - - virtual EOculusXRAnchorResult::Type DiscoverAnchors(const FOculusXRSpaceDiscoveryInfo& DiscoveryInfo, uint64& OutRequestId) override; - virtual EOculusXRAnchorResult::Type QueryAnchors(const FOculusXRSpaceQueryInfo& QueryInfo, uint64& OutRequestId) override; - virtual EOculusXRAnchorResult::Type ShareAnchors(const TArray& AnchorHandles, const TArray& UserIds, uint64& OutRequestId) override; - virtual EOculusXRAnchorResult::Type ShareAnchors(const TArray& AnchorHandles, const TArray& Groups, uint64& OutRequestId) override; - - virtual EOculusXRAnchorResult::Type EraseAnchor(uint64 AnchorHandle, EOculusXRSpaceStorageLocation StorageLocation, uint64& OutRequestId) override; - virtual EOculusXRAnchorResult::Type EraseAnchors(const TArray& AnchorHandles, const TArray& UUIDs, uint64& OutRequestId) override; -}; diff --git a/Plugins/MetaXR/Source/OculusXRAnchors/Private/OculusXRAnchorFunctionsOpenXR.cpp b/Plugins/MetaXR/Source/OculusXRAnchors/Private/OculusXRAnchorFunctionsOpenXR.cpp deleted file mode 100644 index 47e35ee..0000000 --- a/Plugins/MetaXR/Source/OculusXRAnchors/Private/OculusXRAnchorFunctionsOpenXR.cpp +++ /dev/null @@ -1,108 +0,0 @@ -// Copyright (c) Meta Platforms, Inc. and affiliates. - -#include "OculusXRAnchorFunctionsOpenXR.h" -#include "OculusXRHMD.h" -#include "OculusXRAnchorsModule.h" -#include "OculusXRAnchorDelegates.h" -#include "OculusXRAnchorBPFunctionLibrary.h" -#include "OculusXRAnchorTypesPrivate.h" -#include "OculusXRAnchorsUtil.h" - -EOculusXRAnchorResult::Type FOculusXRAnchorFunctionsOpenXR::CreateAnchor(const FTransform& InTransform, uint64& OutRequestId, const FTransform& CameraTransform) -{ - auto result = FOculusXRAnchorsModule::Get().GetXrAnchors()->CreateSpatialAnchor(InTransform, OutRequestId, CameraTransform); - return OculusXRAnchors::GetResultFromXrResult(result); -} - -EOculusXRAnchorResult::Type FOculusXRAnchorFunctionsOpenXR::DestroyAnchor(uint64 AnchorHandle) -{ - auto result = FOculusXRAnchorsModule::Get().GetXrAnchors()->DestroySpatialAnchor(AnchorHandle); - return OculusXRAnchors::GetResultFromXrResult(result); -} - -EOculusXRAnchorResult::Type FOculusXRAnchorFunctionsOpenXR::TryGetAnchorTransform(uint64 AnchorHandle, FTransform& OutTransform, FOculusXRAnchorLocationFlags& OutLocationFlags, EOculusXRAnchorSpace Space) -{ - auto result = FOculusXRAnchorsModule::Get().GetXrAnchors()->TryGetAnchorTransform(AnchorHandle, OutTransform, OutLocationFlags, Space); - return OculusXRAnchors::GetResultFromXrResult(result); -} - -EOculusXRAnchorResult::Type FOculusXRAnchorFunctionsOpenXR::SetAnchorComponentStatus(uint64 AnchorHandle, EOculusXRSpaceComponentType ComponentType, bool Enable, float Timeout, uint64& OutRequestId) -{ - auto result = FOculusXRAnchorsModule::Get().GetXrAnchors()->SetAnchorComponentStatus(AnchorHandle, ComponentType, Enable, Timeout, OutRequestId); - return OculusXRAnchors::GetResultFromXrResult(result); -} - -EOculusXRAnchorResult::Type FOculusXRAnchorFunctionsOpenXR::GetAnchorComponentStatus(uint64 AnchorHandle, EOculusXRSpaceComponentType ComponentType, bool& OutEnabled, bool& OutChangePending) -{ - auto result = FOculusXRAnchorsModule::Get().GetXrAnchors()->GetAnchorComponentStatus(AnchorHandle, ComponentType, OutEnabled, OutChangePending); - return OculusXRAnchors::GetResultFromXrResult(result); -} - -EOculusXRAnchorResult::Type FOculusXRAnchorFunctionsOpenXR::GetSupportedAnchorComponents(uint64 AnchorHandle, TArray& OutSupportedTypes) -{ - auto result = FOculusXRAnchorsModule::Get().GetXrAnchors()->GetSupportedAnchorComponents(AnchorHandle, OutSupportedTypes); - return OculusXRAnchors::GetResultFromXrResult(result); -} - -EOculusXRAnchorResult::Type FOculusXRAnchorFunctionsOpenXR::GetAnchorContainerUUIDs(uint64 AnchorHandle, TArray& OutUUIDs) -{ - auto result = FOculusXRAnchorsModule::Get().GetXrAnchors()->GetAnchorContainerUUIDs(AnchorHandle, OutUUIDs); - return OculusXRAnchors::GetResultFromXrResult(result); -} - -EOculusXRAnchorResult::Type FOculusXRAnchorFunctionsOpenXR::SaveAnchor(uint64 AnchorHandle, - EOculusXRSpaceStorageLocation StorageLocation, - EOculusXRSpaceStoragePersistenceMode StoragePersistenceMode, uint64& OutRequestId) -{ - auto result = FOculusXRAnchorsModule::Get().GetXrAnchors()->SaveAnchor(AnchorHandle, StorageLocation, StoragePersistenceMode, OutRequestId); - return OculusXRAnchors::GetResultFromXrResult(result); -} - -EOculusXRAnchorResult::Type FOculusXRAnchorFunctionsOpenXR::SaveAnchorList(const TArray& AnchorHandles, EOculusXRSpaceStorageLocation StorageLocation, uint64& OutRequestId) -{ - auto result = FOculusXRAnchorsModule::Get().GetXrAnchors()->SaveAnchorList(AnchorHandles, StorageLocation, OutRequestId); - return OculusXRAnchors::GetResultFromXrResult(result); -} - -EOculusXRAnchorResult::Type FOculusXRAnchorFunctionsOpenXR::SaveAnchors(const TArray& AnchorHandles, uint64& OutRequestId) -{ - auto result = FOculusXRAnchorsModule::Get().GetXrAnchors()->SaveAnchors(AnchorHandles, OutRequestId); - return OculusXRAnchors::GetResultFromXrResult(result); -} - -EOculusXRAnchorResult::Type FOculusXRAnchorFunctionsOpenXR::DiscoverAnchors(const FOculusXRSpaceDiscoveryInfo& DiscoveryInfo, uint64& OutRequestId) -{ - auto result = FOculusXRAnchorsModule::Get().GetXrAnchors()->DiscoverAnchors(DiscoveryInfo, OutRequestId); - return OculusXRAnchors::GetResultFromXrResult(result); -} - -EOculusXRAnchorResult::Type FOculusXRAnchorFunctionsOpenXR::QueryAnchors(const FOculusXRSpaceQueryInfo& QueryInfo, uint64& OutRequestId) -{ - auto result = FOculusXRAnchorsModule::Get().GetXrAnchors()->QueryAnchors(QueryInfo, OutRequestId); - return OculusXRAnchors::GetResultFromXrResult(result); -} - -EOculusXRAnchorResult::Type FOculusXRAnchorFunctionsOpenXR::ShareAnchors(const TArray& AnchorHandles, const TArray& UserIds, uint64& OutRequestId) -{ - auto result = FOculusXRAnchorsModule::Get().GetXrAnchors()->ShareAnchors(AnchorHandles, UserIds, OutRequestId); - return OculusXRAnchors::GetResultFromXrResult(result); -} - -EOculusXRAnchorResult::Type FOculusXRAnchorFunctionsOpenXR::ShareAnchors(const TArray& AnchorHandles, const TArray& Groups, uint64& OutRequestId) -{ - auto result = FOculusXRAnchorsModule::Get().GetXrAnchors()->ShareAnchorsWithGroups(AnchorHandles, Groups, OutRequestId); - return OculusXRAnchors::GetResultFromXrResult(result); -} - -EOculusXRAnchorResult::Type FOculusXRAnchorFunctionsOpenXR::EraseAnchor(uint64 AnchorHandle, - EOculusXRSpaceStorageLocation StorageLocation, uint64& OutRequestId) -{ - auto result = FOculusXRAnchorsModule::Get().GetXrAnchors()->EraseAnchor(AnchorHandle, StorageLocation, OutRequestId); - return OculusXRAnchors::GetResultFromXrResult(result); -} - -EOculusXRAnchorResult::Type FOculusXRAnchorFunctionsOpenXR::EraseAnchors(const TArray& AnchorHandles, const TArray& UUIDs, uint64& OutRequestId) -{ - auto result = FOculusXRAnchorsModule::Get().GetXrAnchors()->EraseAnchors(AnchorHandles, UUIDs, OutRequestId); - return OculusXRAnchors::GetResultFromXrResult(result); -} diff --git a/Plugins/MetaXR/Source/OculusXRAnchors/Private/OculusXRAnchorFunctionsOpenXR.h b/Plugins/MetaXR/Source/OculusXRAnchors/Private/OculusXRAnchorFunctionsOpenXR.h deleted file mode 100644 index c4aa8c4..0000000 --- a/Plugins/MetaXR/Source/OculusXRAnchors/Private/OculusXRAnchorFunctionsOpenXR.h +++ /dev/null @@ -1,30 +0,0 @@ -// Copyright (c) Meta Platforms, Inc. and affiliates. - -#pragma once - -#include "OculusXRAnchorFunctions.h" - -class OCULUSXRANCHORS_API FOculusXRAnchorFunctionsOpenXR : public IOculusXRAnchorFunctions -{ -public: - virtual EOculusXRAnchorResult::Type CreateAnchor(const FTransform& InTransform, uint64& OutRequestId, const FTransform& CameraTransform) override; - virtual EOculusXRAnchorResult::Type DestroyAnchor(uint64 AnchorHandle) override; - - virtual EOculusXRAnchorResult::Type TryGetAnchorTransform(uint64 AnchorHandle, FTransform& OutTransform, FOculusXRAnchorLocationFlags& OutLocationFlags, EOculusXRAnchorSpace Space) override; - virtual EOculusXRAnchorResult::Type SetAnchorComponentStatus(uint64 AnchorHandle, EOculusXRSpaceComponentType ComponentType, bool Enable, float Timeout, uint64& OutRequestId) override; - virtual EOculusXRAnchorResult::Type GetAnchorComponentStatus(uint64 AnchorHandle, EOculusXRSpaceComponentType ComponentType, bool& OutEnabled, bool& OutChangePending) override; - virtual EOculusXRAnchorResult::Type GetSupportedAnchorComponents(uint64 AnchorHandle, TArray& OutSupportedTypes) override; - virtual EOculusXRAnchorResult::Type GetAnchorContainerUUIDs(uint64 AnchorHandle, TArray& OutUUIDs) override; - - virtual EOculusXRAnchorResult::Type SaveAnchor(uint64 AnchorHandle, EOculusXRSpaceStorageLocation StorageLocation, EOculusXRSpaceStoragePersistenceMode StoragePersistenceMode, uint64& OutRequestId) override; - virtual EOculusXRAnchorResult::Type SaveAnchorList(const TArray& AnchorHandles, EOculusXRSpaceStorageLocation StorageLocation, uint64& OutRequestId) override; - virtual EOculusXRAnchorResult::Type SaveAnchors(const TArray& AnchorHandles, uint64& OutRequestId) override; - - virtual EOculusXRAnchorResult::Type DiscoverAnchors(const FOculusXRSpaceDiscoveryInfo& DiscoveryInfo, uint64& OutRequestId) override; - virtual EOculusXRAnchorResult::Type QueryAnchors(const FOculusXRSpaceQueryInfo& QueryInfo, uint64& OutRequestId) override; - virtual EOculusXRAnchorResult::Type ShareAnchors(const TArray& AnchorHandles, const TArray& UserIds, uint64& OutRequestId) override; - virtual EOculusXRAnchorResult::Type ShareAnchors(const TArray& AnchorHandles, const TArray& Groups, uint64& OutRequestId) override; - - virtual EOculusXRAnchorResult::Type EraseAnchor(uint64 AnchorHandle, EOculusXRSpaceStorageLocation StorageLocation, uint64& OutRequestId) override; - virtual EOculusXRAnchorResult::Type EraseAnchors(const TArray& AnchorHandles, const TArray& UUIDs, uint64& OutRequestId) override; -}; diff --git a/Plugins/MetaXR/Source/OculusXRAnchors/Private/OculusXRAnchorLatentActions.cpp b/Plugins/MetaXR/Source/OculusXRAnchors/Private/OculusXRAnchorLatentActions.cpp deleted file mode 100644 index 3e990f0..0000000 --- a/Plugins/MetaXR/Source/OculusXRAnchors/Private/OculusXRAnchorLatentActions.cpp +++ /dev/null @@ -1,846 +0,0 @@ -// Copyright (c) Meta Platforms, Inc. and affiliates. - -#include "OculusXRAnchorLatentActions.h" -#include "OculusXRAnchorsPrivate.h" -#include "OculusXRHMD.h" -#include "OculusXRAnchorBPFunctionLibrary.h" -#include "OculusXRAnchorDelegates.h" -#include "OculusXRAnchorsModule.h" - -// -// Create Spatial Anchor -// -void UOculusXRAsyncAction_CreateSpatialAnchor::Activate() -{ - if (!IsValid(TargetActor)) - { - UE_LOG(LogOculusXRAnchors, Warning, TEXT("Invalid Target Actor passed to CreateSpatialAnchor latent action.")); - - Failure.Broadcast(EOculusXRAnchorResult::Failure); - return; - } - - EOculusXRAnchorResult::Type Result; - bool bStartedAsync = OculusXRAnchors::FOculusXRAnchors::CreateSpatialAnchor( - AnchorTransform, - TargetActor, - FOculusXRSpatialAnchorCreateDelegate::CreateUObject(this, &UOculusXRAsyncAction_CreateSpatialAnchor::HandleCreateComplete), - Result); - - if (!bStartedAsync) - { - UE_LOG(LogOculusXRAnchors, Warning, TEXT("Failed to start async OVR Plugin call for CreateSpatialAnchor latent action.")); - Failure.Broadcast(Result); - } -} - -UOculusXRAsyncAction_CreateSpatialAnchor* UOculusXRAsyncAction_CreateSpatialAnchor::OculusXRAsyncCreateSpatialAnchor(AActor* TargetActor, const FTransform& AnchorTransform) -{ - UOculusXRAsyncAction_CreateSpatialAnchor* Action = NewObject(); - Action->TargetActor = TargetActor; - Action->AnchorTransform = AnchorTransform; - - if (IsValid(TargetActor)) - { - Action->RegisterWithGameInstance(TargetActor->GetWorld()); - } - else - { - Action->RegisterWithGameInstance(GWorld); - } - - return Action; -} - -void UOculusXRAsyncAction_CreateSpatialAnchor::HandleCreateComplete(EOculusXRAnchorResult::Type CreateResult, UOculusXRAnchorComponent* Anchor) -{ - if (UOculusXRAnchorBPFunctionLibrary::IsAnchorResultSuccess(CreateResult)) - { - Success.Broadcast(Anchor, CreateResult); - } - else - { - Failure.Broadcast(CreateResult); - } - - SetReadyToDestroy(); -} - -// -// Erase Space -// -void UOculusXRAsyncAction_EraseAnchor::Activate() -{ - if (!IsValid(TargetActor)) - { - UE_LOG(LogOculusXRAnchors, Warning, TEXT("Invalid Target Actor passed to EraseSpace latent action.")); - - Failure.Broadcast(EOculusXRAnchorResult::Failure); - return; - } - - UOculusXRAnchorComponent* AnchorComponent = TargetActor->FindComponentByClass(); - if (AnchorComponent == nullptr) - { - UE_LOG(LogOculusXRAnchors, Warning, TEXT("No anchor on actor in EraseSpace latent action.")); - - Failure.Broadcast(EOculusXRAnchorResult::Failure); - return; - } - - EOculusXRAnchorResult::Type Result; - bool bStartedAsync = OculusXRAnchors::FOculusXRAnchors::EraseAnchor( - AnchorComponent, - FOculusXRAnchorEraseDelegate::CreateUObject(this, &UOculusXRAsyncAction_EraseAnchor::HandleEraseAnchorComplete), - Result); - - if (!bStartedAsync) - { - UE_LOG(LogOculusXRAnchors, Warning, TEXT("Failed to start async OVR Plugin call for EraseSpace latent action.")); - - Failure.Broadcast(Result); - } -} - -UOculusXRAsyncAction_EraseAnchor* UOculusXRAsyncAction_EraseAnchor::OculusXRAsyncEraseAnchor(AActor* TargetActor) -{ - UOculusXRAsyncAction_EraseAnchor* Action = NewObject(); - Action->TargetActor = TargetActor; - - if (IsValid(TargetActor)) - { - Action->RegisterWithGameInstance(TargetActor->GetWorld()); - } - else - { - Action->RegisterWithGameInstance(GWorld); - } - - return Action; -} - -void UOculusXRAsyncAction_EraseAnchor::HandleEraseAnchorComplete(EOculusXRAnchorResult::Type EraseResult, FOculusXRUUID UUID) -{ - if (UOculusXRAnchorBPFunctionLibrary::IsAnchorResultSuccess(EraseResult)) - { - Success.Broadcast(TargetActor, UUID, EraseResult); - } - else - { - Failure.Broadcast(EraseResult); - } - - SetReadyToDestroy(); -} - -// -// Save Space -// -void UOculusXRAsyncAction_SaveAnchor::Activate() -{ - if (!IsValid(TargetActor)) - { - UE_LOG(LogOculusXRAnchors, Warning, TEXT("Invalid Target Actor passed to SaveSpace latent action.")); - - Failure.Broadcast(EOculusXRAnchorResult::Failure); - return; - } - - UOculusXRAnchorComponent* AnchorComponent = TargetActor->FindComponentByClass(); - if (AnchorComponent == nullptr) - { - Failure.Broadcast(EOculusXRAnchorResult::Failure); - return; - } - - UE_LOG(LogOculusXRAnchors, Log, TEXT("Attempting to save anchor: %s to location %s"), IsValid(AnchorComponent) ? *AnchorComponent->GetName() : TEXT("INVALID ANCHOR"), *UEnum::GetValueAsString(StorageLocation)); - - EOculusXRAnchorResult::Type Result; - bool bStartedAsync = OculusXRAnchors::FOculusXRAnchors::SaveAnchor( - AnchorComponent, - StorageLocation, - FOculusXRAnchorSaveDelegate::CreateUObject(this, &UOculusXRAsyncAction_SaveAnchor::HandleSaveAnchorComplete), - Result); - - if (!bStartedAsync) - { - UE_LOG(LogOculusXRAnchors, Warning, TEXT("Failed to start async OVR Plugin call for SaveSpace latent action.")); - Failure.Broadcast(Result); - } -} - -UOculusXRAsyncAction_SaveAnchor* UOculusXRAsyncAction_SaveAnchor::OculusXRAsyncSaveAnchor(AActor* TargetActor, EOculusXRSpaceStorageLocation StorageLocation) -{ - UOculusXRAsyncAction_SaveAnchor* Action = NewObject(); - Action->TargetActor = TargetActor; - Action->StorageLocation = StorageLocation; - - if (IsValid(TargetActor)) - { - Action->RegisterWithGameInstance(TargetActor->GetWorld()); - } - else - { - Action->RegisterWithGameInstance(GWorld); - } - - return Action; -} - -void UOculusXRAsyncAction_SaveAnchor::HandleSaveAnchorComplete(EOculusXRAnchorResult::Type SaveResult, UOculusXRAnchorComponent* Anchor) -{ - if (UOculusXRAnchorBPFunctionLibrary::IsAnchorResultSuccess(SaveResult)) - { - Success.Broadcast(Anchor, SaveResult); - } - else - { - Failure.Broadcast(SaveResult); - } - - SetReadyToDestroy(); -} - -// -// Save Anchor List -// -void UOculusXRAsyncAction_SaveAnchorList::Activate() -{ - if (TargetAnchors.Num() == 0) - { - UE_LOG(LogOculusXRAnchors, Warning, TEXT("Empty Target Actor array passed to SaveSpaces latent action.")); - - Failure.Broadcast(EOculusXRAnchorResult::Failure); - return; - } - - EOculusXRAnchorResult::Type Result; - bool bStartedAsync = OculusXRAnchors::FOculusXRAnchors::SaveAnchorList( - TargetAnchors, - StorageLocation, - FOculusXRAnchorSaveListDelegate::CreateUObject(this, &UOculusXRAsyncAction_SaveAnchorList::HandleSaveAnchorListComplete), - Result); - - if (!bStartedAsync) - { - UE_LOG(LogOculusXRAnchors, Warning, TEXT("Failed to start async OVR Plugin call for SaveSpaceList latent action.")); - - Failure.Broadcast(Result); - } -} - -UOculusXRAsyncAction_SaveAnchorList* UOculusXRAsyncAction_SaveAnchorList::OculusXRAsyncSaveAnchorList(const TArray& TargetActors, EOculusXRSpaceStorageLocation StorageLocation) -{ - UOculusXRAsyncAction_SaveAnchorList* Action = NewObject(); - - auto ValidActorPtr = TargetActors.FindByPredicate([](AActor* Actor) { return IsValid(Actor); }); - - for (auto& it : TargetActors) - { - if (!IsValid(it)) - { - continue; - } - - UOculusXRAnchorComponent* AnchorComponent = it->FindComponentByClass(); - Action->TargetAnchors.Add(AnchorComponent); - } - - Action->StorageLocation = StorageLocation; - - if (ValidActorPtr != nullptr) - { - Action->RegisterWithGameInstance(*ValidActorPtr); - } - - return Action; -} - -void UOculusXRAsyncAction_SaveAnchorList::HandleSaveAnchorListComplete(EOculusXRAnchorResult::Type SaveResult, const TArray& SavedSpaces) -{ - if (UOculusXRAnchorBPFunctionLibrary::IsAnchorResultSuccess(SaveResult)) - { - Success.Broadcast(SavedSpaces, SaveResult); - } - else - { - Failure.Broadcast(SaveResult); - } - - SetReadyToDestroy(); -} - -// -// Query Spaces -// -void UOculusXRAsyncAction_QueryAnchors::Activate() -{ - EOculusXRAnchorResult::Type Result; - bool bStartedAsync = OculusXRAnchors::FOculusXRAnchors::QueryAnchorsAdvanced( - QueryInfo, - FOculusXRAnchorQueryDelegate::CreateUObject(this, &UOculusXRAsyncAction_QueryAnchors::HandleQueryAnchorsResults), - Result); - - if (!bStartedAsync) - { - UE_LOG(LogOculusXRAnchors, Warning, TEXT("Failed to start async OVR Plugin call for QuerySpaces latent action.")); - - Failure.Broadcast(Result); - } -} - -UOculusXRAsyncAction_QueryAnchors* UOculusXRAsyncAction_QueryAnchors::OculusXRAsyncQueryAnchors(EOculusXRSpaceStorageLocation Location, const TArray& UUIDs) -{ - FOculusXRSpaceQueryInfo QueryInfo; - QueryInfo.FilterType = EOculusXRSpaceQueryFilterType::FilterByIds; - QueryInfo.IDFilter = UUIDs; - QueryInfo.Location = Location; - QueryInfo.MaxQuerySpaces = UUIDs.Num(); - - UOculusXRAsyncAction_QueryAnchors* Action = NewObject(); - Action->QueryInfo = QueryInfo; - - return Action; -} - -UOculusXRAsyncAction_QueryAnchors* UOculusXRAsyncAction_QueryAnchors::OculusXRAsyncQueryAnchorsAdvanced(const FOculusXRSpaceQueryInfo& QueryInfo) -{ - UOculusXRAsyncAction_QueryAnchors* Action = NewObject(); - Action->QueryInfo = QueryInfo; - - return Action; -} - -void UOculusXRAsyncAction_QueryAnchors::HandleQueryAnchorsResults(EOculusXRAnchorResult::Type QueryResult, const TArray& Results) -{ - QueryResults = Results; - - if (UOculusXRAnchorBPFunctionLibrary::IsAnchorResultSuccess(QueryResult)) - { - Success.Broadcast(QueryResults, QueryResult); - } - else - { - Failure.Broadcast(QueryResult); - } - - SetReadyToDestroy(); -} - -// -// Set Component Status with Anchor Actor -// -void UOculusXRAsyncAction_SetAnchorComponentStatus::Activate() -{ - if (!IsValid(TargetActor)) - { - UE_LOG(LogOculusXRAnchors, Warning, TEXT("Invalid Target Actor passed to SetComponentStatus latent action.")); - - Failure.Broadcast(EOculusXRAnchorResult::Failure); - return; - } - - TargetAnchorComponent = TargetActor->FindComponentByClass(); - if (TargetAnchorComponent == nullptr) - { - Failure.Broadcast(EOculusXRAnchorResult::Failure); - return; - } - - EOculusXRAnchorResult::Type Result; - bool bStartedAsync = OculusXRAnchors::FOculusXRAnchors::SetAnchorComponentStatus( - TargetAnchorComponent, - ComponentType, - bEnabled, - 0, - FOculusXRAnchorSetComponentStatusDelegate::CreateUObject(this, &UOculusXRAsyncAction_SetAnchorComponentStatus::HandleSetComponentStatusComplete), - Result); - - if (!bStartedAsync) - { - UE_LOG(LogOculusXRAnchors, Warning, TEXT("Failed to start async OVR Plugin call for SetComponentStatus latent action.")); - - Failure.Broadcast(Result); - } -} - -UOculusXRAsyncAction_SetAnchorComponentStatus* UOculusXRAsyncAction_SetAnchorComponentStatus::OculusXRAsyncSetAnchorComponentStatus(AActor* TargetActor, EOculusXRSpaceComponentType ComponentType, bool bEnabled) -{ - UOculusXRAsyncAction_SetAnchorComponentStatus* Action = NewObject(); - Action->TargetActor = TargetActor; - Action->ComponentType = ComponentType; - Action->bEnabled = bEnabled; - - if (IsValid(TargetActor)) - { - Action->RegisterWithGameInstance(TargetActor->GetWorld()); - } - else - { - Action->RegisterWithGameInstance(GWorld); - } - - return Action; -} - -void UOculusXRAsyncAction_SetAnchorComponentStatus::HandleSetComponentStatusComplete(EOculusXRAnchorResult::Type SetStatusResult, uint64 AnchorHandle, EOculusXRSpaceComponentType SpaceComponentType, bool bResultEnabled) -{ - if (UOculusXRAnchorBPFunctionLibrary::IsAnchorResultSuccess(SetStatusResult)) - { - Success.Broadcast(TargetAnchorComponent, SpaceComponentType, bResultEnabled, SetStatusResult); - } - else - { - Failure.Broadcast(SetStatusResult); - } - - SetReadyToDestroy(); -} - -// -// Set Component Status -// -void UOculusXRAsyncAction_SetComponentStatus::Activate() -{ - EOculusXRAnchorResult::Type Result; - bool bStartedAsync = OculusXRAnchors::FOculusXRAnchors::SetComponentStatus( - Component->GetSpace(), - Component->GetType(), - bEnabled, - 0, - FOculusXRAnchorSetComponentStatusDelegate::CreateUObject(this, &UOculusXRAsyncAction_SetComponentStatus::HandleSetComponentStatusComplete), - Result); - - if (!bStartedAsync) - { - UE_LOG(LogOculusXRAnchors, Warning, TEXT("Failed to start async OVR Plugin call for SetComponentStatus latent action.")); - - Failure.Broadcast(Result); - } -} - -UOculusXRAsyncAction_SetComponentStatus* UOculusXRAsyncAction_SetComponentStatus::OculusXRAsyncSetComponentStatus(UOculusXRBaseAnchorComponent* Component, bool bEnabled) -{ - UOculusXRAsyncAction_SetComponentStatus* Action = NewObject(); - Action->Component = Component; - Action->bEnabled = bEnabled; - - Action->RegisterWithGameInstance(GWorld); - - return Action; -} - -void UOculusXRAsyncAction_SetComponentStatus::HandleSetComponentStatusComplete(EOculusXRAnchorResult::Type SetStatusResult, uint64 AnchorHandle, EOculusXRSpaceComponentType SpaceComponentType, bool bResultEnabled) -{ - if (UOculusXRAnchorBPFunctionLibrary::IsAnchorResultSuccess(SetStatusResult)) - { - Success.Broadcast(Component, SetStatusResult); - } - else - { - Failure.Broadcast(SetStatusResult); - } - - SetReadyToDestroy(); -} - -// -// Share Spaces -// -void UOculusXRAsyncAction_ShareAnchors::Activate() -{ - if (TargetAnchors.Num() == 0) - { - UE_LOG(LogOculusXRAnchors, Warning, TEXT("Empty Target Actors array passed to ShareSpaces latent action.")); - - Failure.Broadcast(EOculusXRAnchorResult::Failure); - return; - } - - if (ToShareWithIds.Num() == 0) - { - UE_LOG(LogOculusXRAnchors, Warning, TEXT("Empty Target Player IDs array passed to ShareSpaces latent action.")); - - Failure.Broadcast(EOculusXRAnchorResult::Failure); - return; - } - - EOculusXRAnchorResult::Type Result; - bool bStartedAsync = OculusXRAnchors::FOculusXRAnchors::ShareAnchors( - TargetAnchors, - ToShareWithIds, - FOculusXRAnchorShareDelegate::CreateUObject(this, &UOculusXRAsyncAction_ShareAnchors::HandleShareAnchorsComplete), - Result); - - if (!bStartedAsync) - { - UE_LOG(LogOculusXRAnchors, Warning, TEXT("Failed to start async OVR Plugin call for ShareSpaces latent action.")); - - Failure.Broadcast(Result); - } -} - -UOculusXRAsyncAction_ShareAnchors* UOculusXRAsyncAction_ShareAnchors::OculusXRAsyncShareAnchors(const TArray& TargetActors, const TArray& ToShareWithIds) -{ - UOculusXRAsyncAction_ShareAnchors* Action = NewObject(); - - for (const auto& UserIDString : ToShareWithIds) - { - uint64 UserId = FCString::Strtoui64(*UserIDString, nullptr, 10); - if (UserId == 0) - { - UE_LOG(LogOculusXRAnchors, Warning, TEXT("UserID provided to share anchors was invalid or unconvertable: %s"), *UserIDString); - } - - Action->ToShareWithIds.Add(UserId); - } - - for (auto& it : TargetActors) - { - if (!IsValid(it)) - { - continue; - } - - UOculusXRAnchorComponent* AnchorComponent = it->FindComponentByClass(); - Action->TargetAnchors.Add(AnchorComponent); - } - - auto ValidActorPtr = TargetActors.FindByPredicate([](AActor* Actor) { return IsValid(Actor); }); - if (ValidActorPtr != nullptr) - { - Action->RegisterWithGameInstance(*ValidActorPtr); - } - else - { - Action->RegisterWithGameInstance(GWorld); - } - - return Action; -} - -void UOculusXRAsyncAction_ShareAnchors::HandleShareAnchorsComplete(EOculusXRAnchorResult::Type ShareResult, const TArray& SharedAnchors, const TArray& OculusUserIDs) -{ - TArray OculusUserIDStrings; - for (const auto& it : OculusUserIDs) - { - OculusUserIDStrings.Add(FString::Printf(TEXT("%llu"), it)); - } - - if (UOculusXRAnchorBPFunctionLibrary::IsAnchorResultSuccess(ShareResult)) - { - Success.Broadcast(SharedAnchors, OculusUserIDStrings, ShareResult); - } - else - { - Failure.Broadcast(ShareResult); - } - - // Unbind and mark for destruction - SetReadyToDestroy(); -} - -// -// Save Anchors -// -void UOculusXRAsyncAction_SaveAnchors::Activate() -{ - if (TargetAnchors.Num() == 0) - { - UE_LOG(LogOculusXRAnchors, Warning, TEXT("Empty Target Actor array passed to SaveSpaces latent action.")); - - Failure.Broadcast(EOculusXRAnchorResult::Failure); - return; - } - - EOculusXRAnchorResult::Type Result; - bool bStartedAsync = OculusXRAnchors::FOculusXRAnchors::SaveAnchors( - TargetAnchors, - FOculusXRSaveAnchorsDelegate::CreateUObject(this, &UOculusXRAsyncAction_SaveAnchors::HandleSaveAnchorsComplete), - Result); - - if (!bStartedAsync) - { - UE_LOG(LogOculusXRAnchors, Warning, TEXT("Failed to start async OVR Plugin call for SaveSpaces latent action.")); - - Failure.Broadcast(Result); - } -} - -UOculusXRAsyncAction_SaveAnchors* UOculusXRAsyncAction_SaveAnchors::OculusXRAsyncSaveAnchors(const TArray& TargetActors) -{ - UOculusXRAsyncAction_SaveAnchors* Action = NewObject(); - - auto ValidActorPtr = TargetActors.FindByPredicate([](AActor* Actor) { return IsValid(Actor); }); - - for (auto& it : TargetActors) - { - if (!IsValid(it)) - { - continue; - } - - UOculusXRAnchorComponent* AnchorComponent = it->FindComponentByClass(); - Action->TargetAnchors.Add(AnchorComponent); - } - - if (ValidActorPtr != nullptr) - { - Action->RegisterWithGameInstance(*ValidActorPtr); - } - - return Action; -} - -void UOculusXRAsyncAction_SaveAnchors::HandleSaveAnchorsComplete(EOculusXRAnchorResult::Type SaveResult, const TArray& SavedSpaces) -{ - if (UOculusXRAnchorBPFunctionLibrary::IsAnchorResultSuccess(SaveResult)) - { - Success.Broadcast(SavedSpaces, SaveResult); - } - else - { - Failure.Broadcast(SaveResult); - } - - SetReadyToDestroy(); -} - -// -// Erase Anchors -// -void UOculusXRAsyncAction_EraseAnchors::Activate() -{ - if (TargetAnchorHandles.IsEmpty() && TargetUUIDs.IsEmpty()) - { - UE_LOG(LogOculusXRAnchors, Error, TEXT("Empty UUID and Anchor Handles arrays passed to erase anchors. Check that at least one of the anchors, handles, and UUIDs arrays provided have valid elements.")); - Failure.Broadcast(EOculusXRAnchorResult::Failure); - return; - } - - EOculusXRAnchorResult::Type Result; - bool bStartedAsync = OculusXRAnchors::FOculusXRAnchors::EraseAnchors( - TargetAnchorHandles, - TargetUUIDs, - FOculusXREraseAnchorsDelegate::CreateUObject(this, &UOculusXRAsyncAction_EraseAnchors::HandleEraseAnchorsComplete), - Result); - - if (!bStartedAsync) - { - UE_LOG(LogOculusXRAnchors, Warning, TEXT("Failed to start async OVR Plugin call for EraseSpace latent action.")); - Failure.Broadcast(Result); - } -} - -UOculusXRAsyncAction_EraseAnchors* UOculusXRAsyncAction_EraseAnchors::OculusXRAsyncEraseAnchors(const TArray& TargetActors, const TArray& AnchorHandles, const TArray& AnchorUUIDs) -{ - UOculusXRAsyncAction_EraseAnchors* Action = NewObject(); - - Action->TargetAnchorHandles = AnchorHandles; - Action->TargetUUIDs = AnchorUUIDs; - - auto ValidActorPtr = TargetActors.FindByPredicate([](AActor* Actor) { return IsValid(Actor); }); - - for (auto& it : TargetActors) - { - if (!IsValid(it)) - { - continue; - } - - UOculusXRAnchorComponent* AnchorComponent = it->FindComponentByClass(); - if (!IsValid(it)) - { - continue; - } - - Action->TargetAnchors.Add(AnchorComponent); - - auto UUID = AnchorComponent->GetUUID(); - Action->TargetUUIDs.Add(UUID); - } - - if (ValidActorPtr != nullptr) - { - Action->RegisterWithGameInstance(*ValidActorPtr); - } - else - { - Action->RegisterWithGameInstance(GWorld); - } - - return Action; -} - -void UOculusXRAsyncAction_EraseAnchors::HandleEraseAnchorsComplete(EOculusXRAnchorResult::Type EraseResult, const TArray& ErasedAnchorComponents, const TArray& ErasedAnchorHandles, const TArray& ErasedAnchorUUIDs) -{ - if (UOculusXRAnchorBPFunctionLibrary::IsAnchorResultSuccess(EraseResult)) - { - Success.Broadcast(TargetAnchors, ErasedAnchorHandles, ErasedAnchorUUIDs, EraseResult); - } - else - { - Failure.Broadcast(EraseResult); - } - - SetReadyToDestroy(); -} - -// -// Anchors Discovery -// -void UOculusXRAsyncAction_DiscoverAnchors::Activate() -{ - EOculusXRAnchorResult::Type Result; - bool bStartedAsync = OculusXRAnchors::FOculusXRAnchors::DiscoverAnchors( - DiscoveryInfo, - FOculusXRDiscoverAnchorsResultsDelegate::CreateUObject(this, &UOculusXRAsyncAction_DiscoverAnchors::HandleDiscoverResult), - FOculusXRDiscoverAnchorsCompleteDelegate::CreateUObject(this, &UOculusXRAsyncAction_DiscoverAnchors::HandleDiscoverComplete), - Result); - - if (!bStartedAsync) - { - UE_LOG(LogOculusXRAnchors, Warning, TEXT("Failed to start async OVR Plugin call for DiscoverAnchors latent action.")); - - Failure.Broadcast(Result); - } -} - -UOculusXRAsyncAction_DiscoverAnchors* UOculusXRAsyncAction_DiscoverAnchors::OculusXRAsyncDiscoverAnchors(const FOculusXRSpaceDiscoveryInfo& DiscoveryInfo) -{ - UOculusXRAsyncAction_DiscoverAnchors* Action = NewObject(); - Action->DiscoveryInfo = DiscoveryInfo; - - return Action; -} - -void UOculusXRAsyncAction_DiscoverAnchors::HandleDiscoverResult(const TArray& DiscoveredAnchors) -{ - Discovered.Broadcast(DiscoveredAnchors); -} - -void UOculusXRAsyncAction_DiscoverAnchors::HandleDiscoverComplete(EOculusXRAnchorResult::Type CompleteResult) -{ - if (UOculusXRAnchorBPFunctionLibrary::IsAnchorResultSuccess(CompleteResult)) - { - Complete.Broadcast(CompleteResult); - } - else - { - Failure.Broadcast(CompleteResult); - } - - SetReadyToDestroy(); -} - -// -// Get Shared Anchors -// -void UOculusXRAsyncAction_GetSharedAnchors::Activate() -{ - EOculusXRAnchorResult::Type Result; - bool bStartedAsync = OculusXRAnchors::FOculusXRAnchors::GetSharedAnchors( - Anchors, - FOculusXRGetSharedAnchorsDelegate::CreateUObject(this, &UOculusXRAsyncAction_GetSharedAnchors::HandleGetSharedAnchorsResult), - Result); - - if (!bStartedAsync) - { - UE_LOG(LogOculusXRAnchors, Warning, TEXT("Failed to start async OVR Plugin call for DiscoverAnchors latent action.")); - Failure.Broadcast(Result); - } -} - -UOculusXRAsyncAction_GetSharedAnchors* UOculusXRAsyncAction_GetSharedAnchors::OculusXRAsyncGetSharedAnchors(const TArray& AnchorUUIDs) -{ - UOculusXRAsyncAction_GetSharedAnchors* Action = NewObject(); - Action->Anchors = AnchorUUIDs; - - return Action; -} - -void UOculusXRAsyncAction_GetSharedAnchors::HandleGetSharedAnchorsResult(EOculusXRAnchorResult::Type Result, const TArray& SharedAnchors) -{ - if (UOculusXRAnchorBPFunctionLibrary::IsAnchorResultSuccess(Result)) - { - Success.Broadcast(SharedAnchors, Result); - } - else - { - Failure.Broadcast(Result); - } -} - -// -// Share with groups -// -void UOculusXRAsyncAction_ShareAnchorsWithGroups::Activate() -{ - OculusXRAnchors::FOculusXRAnchors::ShareAnchorsAsync( - AnchorHandles, - GroupUUIDs, - OculusXRAnchors::FShareAnchorsWithGroups::FCompleteDelegate::CreateUObject( - this, - &UOculusXRAsyncAction_ShareAnchorsWithGroups::HandleShareComplete)); -} - -UOculusXRAsyncAction_ShareAnchorsWithGroups* UOculusXRAsyncAction_ShareAnchorsWithGroups::OculusXRShareAnchorsWithGroupsAsync(const TArray& GroupUUIDs, const TArray& AnchorHandles) -{ - UOculusXRAsyncAction_ShareAnchorsWithGroups* Action = NewObject(); - Action->GroupUUIDs = GroupUUIDs; - Action->AnchorHandles = AnchorHandles; - Action->RegisterWithGameInstance(GWorld); - - return Action; -} - -void UOculusXRAsyncAction_ShareAnchorsWithGroups::HandleShareComplete(const OculusXRAnchors::FShareAnchorsWithGroups::FResultType& Result) -{ - if (Result.IsSuccess()) - { - Complete.Broadcast(Result.IsSuccess(), GroupUUIDs, AnchorHandles, Result.GetStatus()); - } - else - { - Complete.Broadcast(Result.IsSuccess(), TArray(), TArray(), Result.GetStatus()); - } - - SetReadyToDestroy(); -} - -// -// Get shared anchors from group -// -void UOculusXRAsyncAction_GetSharedAnchorsFromGroup::Activate() -{ - OculusXRAnchors::FOculusXRAnchors::GetSharedAnchorsAsync( - GroupUuid, - Anchors, - OculusXRAnchors::FGetAnchorsSharedWithGroup::FCompleteDelegate::CreateUObject( - this, - &UOculusXRAsyncAction_GetSharedAnchorsFromGroup::HandleGetSharedAnchorsComplete)); -} - -UOculusXRAsyncAction_GetSharedAnchorsFromGroup* UOculusXRAsyncAction_GetSharedAnchorsFromGroup::OculusXRGetSharedAnchorsFromGroupAsync(const FOculusXRUUID& GroupUuid, const TArray& AnchorUUIDs) -{ - UOculusXRAsyncAction_GetSharedAnchorsFromGroup* Action = NewObject(); - Action->GroupUuid = GroupUuid; - Action->Anchors = AnchorUUIDs; - Action->RegisterWithGameInstance(GWorld); - - return Action; -} - -void UOculusXRAsyncAction_GetSharedAnchorsFromGroup::HandleGetSharedAnchorsComplete(const OculusXRAnchors::FGetAnchorsSharedWithGroup::FResultType& Result) -{ - if (Result.IsSuccess()) - { - Complete.Broadcast(Result.IsSuccess(), Result.GetValue(), Result.GetStatus()); - } - else - { - Complete.Broadcast(Result.IsSuccess(), OculusXRAnchors::FGetAnchorsSharedWithGroup::FResultValueType(), Result.GetStatus()); - } - - SetReadyToDestroy(); -} diff --git a/Plugins/MetaXR/Source/OculusXRAnchors/Private/OculusXRAnchorManager.cpp b/Plugins/MetaXR/Source/OculusXRAnchors/Private/OculusXRAnchorManager.cpp deleted file mode 100644 index 242aa81..0000000 --- a/Plugins/MetaXR/Source/OculusXRAnchors/Private/OculusXRAnchorManager.cpp +++ /dev/null @@ -1,124 +0,0 @@ -// Copyright (c) Meta Platforms, Inc. and affiliates. - -#include "OculusXRAnchorManager.h" - -#include - -#include "OculusXRHMD.h" -#include "OculusXRAnchorsModule.h" -#include "OculusXRAnchorDelegates.h" -#include "OculusXRAnchorBPFunctionLibrary.h" -#include "OculusXRAnchorTypesPrivate.h" - -#include "OculusXRAnchorFunctionsOVR.h" -#include "OculusXRAnchorFunctionsOpenXR.h" - -namespace OculusXRAnchors -{ - EOculusXRAnchorResult::Type FOculusXRAnchorManager::CreateAnchor(const FTransform& InTransform, uint64& OutRequestId, const FTransform& CameraTransform) - { - return GetOculusXRAnchorFunctionsImpl()->CreateAnchor(InTransform, OutRequestId, CameraTransform); - } - - EOculusXRAnchorResult::Type FOculusXRAnchorManager::DestroyAnchor(uint64 AnchorHandle) - { - return GetOculusXRAnchorFunctionsImpl()->DestroyAnchor(AnchorHandle); - } - - EOculusXRAnchorResult::Type FOculusXRAnchorManager::TryGetAnchorTransform(uint64 AnchorHandle, FTransform& OutTransform, FOculusXRAnchorLocationFlags& OutLocationFlags, EOculusXRAnchorSpace Space) - { - return GetOculusXRAnchorFunctionsImpl()->TryGetAnchorTransform(AnchorHandle, OutTransform, OutLocationFlags, Space); - } - - EOculusXRAnchorResult::Type FOculusXRAnchorManager::SetAnchorComponentStatus(uint64 AnchorHandle, EOculusXRSpaceComponentType ComponentType, bool Enable, float Timeout, uint64& OutRequestId) - { - return GetOculusXRAnchorFunctionsImpl()->SetAnchorComponentStatus(AnchorHandle, ComponentType, Enable, Timeout, OutRequestId); - } - - EOculusXRAnchorResult::Type FOculusXRAnchorManager::GetAnchorComponentStatus(uint64 AnchorHandle, EOculusXRSpaceComponentType ComponentType, bool& OutEnabled, bool& OutChangePending) - { - return GetOculusXRAnchorFunctionsImpl()->GetAnchorComponentStatus(AnchorHandle, ComponentType, OutEnabled, OutChangePending); - } - - EOculusXRAnchorResult::Type FOculusXRAnchorManager::GetSupportedAnchorComponents(uint64 AnchorHandle, TArray& OutSupportedTypes) - { - return GetOculusXRAnchorFunctionsImpl()->GetSupportedAnchorComponents(AnchorHandle, OutSupportedTypes); - } - - EOculusXRAnchorResult::Type FOculusXRAnchorManager::GetAnchorContainerUUIDs(uint64 AnchorHandle, TArray& OutUUIDs) - { - return GetOculusXRAnchorFunctionsImpl()->GetAnchorContainerUUIDs(AnchorHandle, OutUUIDs); - } - - EOculusXRAnchorResult::Type FOculusXRAnchorManager::SaveAnchor(uint64 AnchorHandle, EOculusXRSpaceStorageLocation StorageLocation, EOculusXRSpaceStoragePersistenceMode StoragePersistenceMode, uint64& OutRequestId) - { - return GetOculusXRAnchorFunctionsImpl()->SaveAnchor(AnchorHandle, StorageLocation, StoragePersistenceMode, OutRequestId); - } - - EOculusXRAnchorResult::Type FOculusXRAnchorManager::SaveAnchorList(const TArray& AnchorHandles, EOculusXRSpaceStorageLocation StorageLocation, uint64& OutRequestId) - { - return GetOculusXRAnchorFunctionsImpl()->SaveAnchorList(AnchorHandles, StorageLocation, OutRequestId); - } - - EOculusXRAnchorResult::Type FOculusXRAnchorManager::SaveAnchors(const TArray& AnchorHandles, uint64& OutRequestId) - { - return GetOculusXRAnchorFunctionsImpl()->SaveAnchors(AnchorHandles, OutRequestId); - } - - EOculusXRAnchorResult::Type FOculusXRAnchorManager::DiscoverAnchors(const FOculusXRSpaceDiscoveryInfo& DiscoveryInfo, uint64& OutRequestId) - { - return GetOculusXRAnchorFunctionsImpl()->DiscoverAnchors(DiscoveryInfo, OutRequestId); - } - - EOculusXRAnchorResult::Type FOculusXRAnchorManager::QueryAnchors(const FOculusXRSpaceQueryInfo& QueryInfo, uint64& OutRequestId) - { - return GetOculusXRAnchorFunctionsImpl()->QueryAnchors(QueryInfo, OutRequestId); - } - - EOculusXRAnchorResult::Type FOculusXRAnchorManager::ShareAnchors(const TArray& AnchorHandles, const TArray& UserIds, uint64& OutRequestId) - { - return GetOculusXRAnchorFunctionsImpl()->ShareAnchors(AnchorHandles, UserIds, OutRequestId); - } - - EOculusXRAnchorResult::Type FOculusXRAnchorManager::ShareAnchors(const TArray& AnchorHandles, FOculusXRUUID GroupId, uint64& OutRequestId) - { - return GetOculusXRAnchorFunctionsImpl()->ShareAnchors(AnchorHandles, { GroupId }, OutRequestId); - } - - EOculusXRAnchorResult::Type FOculusXRAnchorManager::ShareAnchors(const TArray& AnchorHandles, const TArray& Groups, uint64& OutRequestId) - { - return GetOculusXRAnchorFunctionsImpl()->ShareAnchors(AnchorHandles, Groups, OutRequestId); - } - - EOculusXRAnchorResult::Type FOculusXRAnchorManager::EraseAnchor(uint64 AnchorHandle, EOculusXRSpaceStorageLocation StorageLocation, uint64& OutRequestId) - { - return GetOculusXRAnchorFunctionsImpl()->EraseAnchor(AnchorHandle, StorageLocation, OutRequestId); - } - - EOculusXRAnchorResult::Type FOculusXRAnchorManager::EraseAnchors(const TArray& AnchorHandles, const TArray& UUIDs, uint64& OutRequestId) - { - return GetOculusXRAnchorFunctionsImpl()->EraseAnchors(AnchorHandles, UUIDs, OutRequestId); - } - - TSharedPtr FOculusXRAnchorManager::AnchorFunctionsImpl = nullptr; - TSharedPtr FOculusXRAnchorManager::GetOculusXRAnchorFunctionsImpl() - { - if (AnchorFunctionsImpl == nullptr) - { - const FName SystemName(TEXT("OpenXR")); - const bool IsOpenXR = GEngine->XRSystem.IsValid() && (GEngine->XRSystem->GetSystemName() == SystemName); - if (OculusXRHMD::FOculusXRHMD::GetOculusXRHMD() != nullptr) - { - AnchorFunctionsImpl = MakeShared(); - } - else if (IsOpenXR) - { - AnchorFunctionsImpl = MakeShared(); - } - } - - check(AnchorFunctionsImpl); - return AnchorFunctionsImpl; - } - -} // namespace OculusXRAnchors diff --git a/Plugins/MetaXR/Source/OculusXRAnchors/Private/OculusXRAnchorManager.h b/Plugins/MetaXR/Source/OculusXRAnchors/Private/OculusXRAnchorManager.h deleted file mode 100644 index 9cd6b91..0000000 --- a/Plugins/MetaXR/Source/OculusXRAnchors/Private/OculusXRAnchorManager.h +++ /dev/null @@ -1,42 +0,0 @@ -// Copyright (c) Meta Platforms, Inc. and affiliates. - -#pragma once - -#include "CoreMinimal.h" -#include "OculusXRAnchorComponent.h" -#include "OculusXRHMDPrivate.h" -#include "OVR_Plugin_Types.h" -#include "OculusXRAnchorFunctions.h" - -namespace OculusXRAnchors -{ - struct OCULUSXRANCHORS_API FOculusXRAnchorManager - { - public: - static EOculusXRAnchorResult::Type CreateAnchor(const FTransform& InTransform, uint64& OutRequestId, const FTransform& CameraTransform); - static EOculusXRAnchorResult::Type DestroyAnchor(uint64 AnchorHandle); - - static EOculusXRAnchorResult::Type TryGetAnchorTransform(uint64 AnchorHandle, FTransform& OutTransform, FOculusXRAnchorLocationFlags& OutLocationFlags, EOculusXRAnchorSpace Space); - static EOculusXRAnchorResult::Type SetAnchorComponentStatus(uint64 AnchorHandle, EOculusXRSpaceComponentType ComponentType, bool Enable, float Timeout, uint64& OutRequestId); - static EOculusXRAnchorResult::Type GetAnchorComponentStatus(uint64 AnchorHandle, EOculusXRSpaceComponentType ComponentType, bool& OutEnabled, bool& OutChangePending); - static EOculusXRAnchorResult::Type GetSupportedAnchorComponents(uint64 AnchorHandle, TArray& OutSupportedTypes); - static EOculusXRAnchorResult::Type GetAnchorContainerUUIDs(uint64 AnchorHandle, TArray& OutUUIDs); - - static EOculusXRAnchorResult::Type SaveAnchor(uint64 AnchorHandle, EOculusXRSpaceStorageLocation StorageLocation, EOculusXRSpaceStoragePersistenceMode StoragePersistenceMode, uint64& OutRequestId); - static EOculusXRAnchorResult::Type SaveAnchorList(const TArray& AnchorHandles, EOculusXRSpaceStorageLocation StorageLocation, uint64& OutRequestId); - static EOculusXRAnchorResult::Type SaveAnchors(const TArray& AnchorHandles, uint64& OutRequestId); - - static EOculusXRAnchorResult::Type DiscoverAnchors(const FOculusXRSpaceDiscoveryInfo& DiscoveryInfo, uint64& OutRequestId); - static EOculusXRAnchorResult::Type QueryAnchors(const FOculusXRSpaceQueryInfo& QueryInfo, uint64& OutRequestId); - static EOculusXRAnchorResult::Type ShareAnchors(const TArray& AnchorHandles, const TArray& UserIds, uint64& OutRequestId); - static EOculusXRAnchorResult::Type ShareAnchors(const TArray& AnchorHandles, FOculusXRUUID GroupId, uint64& OutRequestId); - static EOculusXRAnchorResult::Type ShareAnchors(const TArray& AnchorHandles, const TArray& Groups, uint64& OutRequestId); - - static EOculusXRAnchorResult::Type EraseAnchor(uint64 AnchorHandle, EOculusXRSpaceStorageLocation StorageLocation, uint64& OutRequestId); - static EOculusXRAnchorResult::Type EraseAnchors(const TArray& AnchorHandles, const TArray& UUIDs, uint64& OutRequestId); - - private: - static TSharedPtr GetOculusXRAnchorFunctionsImpl(); - static TSharedPtr AnchorFunctionsImpl; - }; -} // namespace OculusXRAnchors diff --git a/Plugins/MetaXR/Source/OculusXRAnchors/Private/OculusXRAnchorRequests.cpp b/Plugins/MetaXR/Source/OculusXRAnchors/Private/OculusXRAnchorRequests.cpp deleted file mode 100644 index 749d9f6..0000000 --- a/Plugins/MetaXR/Source/OculusXRAnchors/Private/OculusXRAnchorRequests.cpp +++ /dev/null @@ -1,151 +0,0 @@ -// Copyright (c) Meta Platforms, Inc. and affiliates. - -#include "OculusXRAnchorsRequests.h" -#include "OculusXRAnchorsUtil.h" -#include "OculusXRHMDModule.h" -#include "OculusXRAnchorsModule.h" -#include "OculusXRAnchorManager.h" -#include "OculusXRAnchorDelegates.h" - -namespace OculusXRAnchors -{ - OculusXR::FAsyncRequestBase::RequestId DetermineRequestId(EOculusXRAnchorResult::Type Result, uint64 Id) - { - return OVRP_SUCCESS(Result) ? OculusXR::FAsyncRequestBase::RequestId(Id) : OculusXR::FAsyncRequestBase::RequestId(OculusXR::INVALID_TASK_REQUEST_ID); - } - - FShareAnchorsWithGroups::FShareAnchorsWithGroups(const TArray& TargetGroups, const TArray& AnchorsToShare) - : Groups(TargetGroups) - , Anchors(AnchorsToShare) - { - CallbackHandle = FOculusXRAnchorEventDelegates::OculusShareAnchorsComplete.AddStatic(&FShareAnchorsWithGroups::OnShareComplete); - } - - FShareAnchorsWithGroups::~FShareAnchorsWithGroups() - { - FOculusXRAnchorEventDelegates::OculusShareAnchorsComplete.Remove(CallbackHandle); - } - - void FShareAnchorsWithGroups::OnInitRequest() - { - TArray anchorHandles; - Algo::Transform(Anchors, anchorHandles, [](const FOculusXRUInt64& In) { return In.GetValue(); }); - - uint64 requestId; - auto result = FOculusXRAnchorManager::ShareAnchors(anchorHandles, Groups, requestId); - - SetRequestId(DetermineRequestId(result, requestId)); - SetInitialResult(result); - - UE_LOG(LogOculusXRAnchors, Log, TEXT("Started FShareAnchorsWithGroups: RequestId: %llu -- EventId: %llu -- Result: %s"), - GetRequestId().Id, GetEventId().Id, *GetStringFromResult(result)); - } - - void FShareAnchorsWithGroups::OnShareComplete(FOculusXRUInt64 RequestId, EOculusXRAnchorResult::Type Result) - { - auto taskPtr = OculusXR::FAsyncRequestSystem::GetRequest( - OculusXR::FAsyncRequestBase::RequestId{ RequestId }); - - if (taskPtr.IsValid()) - { - OculusXR::FAsyncRequestSystem::CompleteRequest( - taskPtr->GetEventId(), - FShareAnchorsWithGroups::FResultType::FromResult( - Result, - FShareAnchorsWithGroups::FResultValueType(taskPtr->GetGroups(), taskPtr->GetAnchors()))); - } - } - - FGetAnchorsSharedWithGroup::FGetAnchorsSharedWithGroup(const FOculusXRUUID& TargetGroup, const TArray& WantedAnchors) - : Group(TargetGroup) - , RequestedAnchors(WantedAnchors) - { - CallbackHandleComplete = FOculusXRAnchorEventDelegates::OculusSpaceQueryComplete.AddStatic(&FGetAnchorsSharedWithGroup::OnQueryComplete); - CallbackHandleResults = FOculusXRAnchorEventDelegates::OculusSpaceQueryResult.AddStatic(&FGetAnchorsSharedWithGroup::OnQueryResultAvailable); - } - - FGetAnchorsSharedWithGroup::~FGetAnchorsSharedWithGroup() - { - FOculusXRAnchorEventDelegates::OculusSpaceQueryComplete.Remove(CallbackHandleComplete); - FOculusXRAnchorEventDelegates::OculusSpaceQueryResult.Remove(CallbackHandleResults); - } - - void FGetAnchorsSharedWithGroup::OnResultsAvailable(const TArray& Results) - { - RetrievedAnchors += Results; - } - - void FGetAnchorsSharedWithGroup::OnInitRequest() - { - constexpr int32 maxSpaces = 1024; - constexpr double timeout = 0; - - FOculusXRSpaceQueryInfo queryInfo; - queryInfo.FilterType = EOculusXRSpaceQueryFilterType::FilterByGroup; - queryInfo.GroupUUIDFilter = Group; - queryInfo.Location = EOculusXRSpaceStorageLocation::Cloud; - queryInfo.MaxQuerySpaces = maxSpaces; - queryInfo.Timeout = timeout; - queryInfo.IDFilter = RequestedAnchors; - - uint64 requestId; - auto result = FOculusXRAnchorManager::QueryAnchors(queryInfo, requestId); - - SetRequestId(DetermineRequestId(result, requestId)); - SetInitialResult(result); - - UE_LOG(LogOculusXRAnchors, Log, TEXT("Started FGetAnchorsSharedWithGroup: RequestId: %llu -- EventId: %llu -- Result: %s"), - GetRequestId().Id, GetEventId().Id, *GetStringFromResult(result)); - } - - void FGetAnchorsSharedWithGroup::OnQueryComplete(FOculusXRUInt64 RequestId, EOculusXRAnchorResult::Type Result) - { - auto taskPtr = OculusXR::FAsyncRequestSystem::GetRequest( - OculusXR::FAsyncRequestBase::RequestId{ RequestId.GetValue() }); - - // If there is a valid get shared anchors request we can complete and exit without firing legacy event delegates - if (taskPtr.IsValid()) - { - OculusXR::FAsyncRequestSystem::CompleteRequest( - taskPtr->GetEventId(), - FGetAnchorsSharedWithGroup::FResultType::FromResult(Result, taskPtr->GetRetrievedAnchors())); - - return; - } - } - - void FGetAnchorsSharedWithGroup::OnQueryResultAvailable(FOculusXRUInt64 RequestId, FOculusXRUInt64 AnchorHandle, FOculusXRUUID AnchorUuid) - { - auto taskPtr = OculusXR::FAsyncRequestSystem::GetRequest( - OculusXR::FAsyncRequestBase::RequestId{ RequestId.GetValue() }); - - if (taskPtr.IsValid()) - { - TArray supportedTypes; - UE_LOG(LogOculusXRAnchors, Verbose, TEXT(" Found Element: Space: %llu -- UUID: %s"), AnchorHandle.Value, *AnchorUuid.ToString()); - - uint64 tempOut; - FOculusXRAnchorManager::GetSupportedAnchorComponents(AnchorHandle, supportedTypes); - - if (supportedTypes.Contains(EOculusXRSpaceComponentType::Locatable)) - { - FOculusXRAnchorManager::SetAnchorComponentStatus(AnchorHandle, EOculusXRSpaceComponentType::Locatable, true, 0.0f, tempOut); - } - - if (supportedTypes.Contains(EOculusXRSpaceComponentType::Sharable)) - { - FOculusXRAnchorManager::SetAnchorComponentStatus(AnchorHandle, EOculusXRSpaceComponentType::Sharable, true, 0.0f, tempOut); - } - - if (supportedTypes.Contains(EOculusXRSpaceComponentType::Storable)) - { - FOculusXRAnchorManager::SetAnchorComponentStatus(AnchorHandle, EOculusXRSpaceComponentType::Storable, true, 0.0f, tempOut); - } - - taskPtr->OnResultsAvailable({ FOculusXRAnchor(AnchorHandle, AnchorUuid) }); - - return; - } - } - -} // namespace OculusXRAnchors diff --git a/Plugins/MetaXR/Source/OculusXRAnchors/Private/OculusXRAnchorTypes.cpp b/Plugins/MetaXR/Source/OculusXRAnchors/Private/OculusXRAnchorTypes.cpp deleted file mode 100644 index 9e91570..0000000 --- a/Plugins/MetaXR/Source/OculusXRAnchors/Private/OculusXRAnchorTypes.cpp +++ /dev/null @@ -1,134 +0,0 @@ -// Copyright (c) Meta Platforms, Inc. and affiliates. - -#include "OculusXRAnchorTypes.h" -#include "OculusXRHMDPrivate.h" -#include "OculusXRAnchorsModule.h" -#include "OculusXRAnchorTypesPrivate.h" - -bool FOculusXRUInt64::operator==(const FOculusXRUInt64& Right) const -{ - return IsEqual(Right); -} -bool FOculusXRUInt64::operator!=(const FOculusXRUInt64& Right) const -{ - return !IsEqual(Right); -} - -FOculusXRUUID::FOculusXRUUID() -{ - FMemory::Memzero(&UUIDBytes, OCULUSXR_UUID_SIZE); -} - -FOculusXRUUID::FOculusXRUUID(const UuidArray& In) -{ - FMemory::Memcpy(UUIDBytes, In); -} - -bool FOculusXRUUID::operator==(const FOculusXRUUID& Right) const -{ - return IsEqual(Right); -} - -bool FOculusXRUUID::operator!=(const FOculusXRUUID& Right) const -{ - return !IsEqual(Right); -} - -bool FOculusXRUUID::IsValidUUID() const -{ - static uint8 InvalidUUID[OCULUSXR_UUID_SIZE] = { 0 }; - - return FMemory::Memcmp(UUIDBytes, InvalidUUID, OCULUSXR_UUID_SIZE) != 0; -} - -bool FOculusXRUUID::IsEqual(const FOculusXRUUID& Other) const -{ - return FMemory::Memcmp(UUIDBytes, Other.UUIDBytes, OCULUSXR_UUID_SIZE) == 0; -} - -bool FOculusXRUUID::NetSerialize(FArchive& Ar, class UPackageMap* Map, bool& bOutSuccess) -{ - uint8 data[16] = { 0 }; - - for (uint8 i = 0; i < OCULUSXR_UUID_SIZE; ++i) - { - data[i] = UUIDBytes[i]; - }; - - for (uint8 i = 0; i < OCULUSXR_UUID_SIZE; ++i) - { - Ar << data[i]; - }; - - for (uint8 i = 0; i < OCULUSXR_UUID_SIZE; ++i) - { - UUIDBytes[i] = data[i]; - }; - - bOutSuccess = true; - - return true; -} - -FArchive& operator<<(FArchive& Ar, FOculusXRUUID& UUID) -{ - bool bOutSuccess = false; - UUID.NetSerialize(Ar, nullptr, bOutSuccess); - - return Ar; -} - -bool FOculusXRUUID::Serialize(FArchive& Ar) -{ - Ar << *this; - return true; -} - -FString FOculusXRUUID::ToString() const -{ - return BytesToHex(UUIDBytes, OCULUSXR_UUID_SIZE); -} - -void ovrpSpaceDiscoveryFilterIdsDelete::operator()(ovrpSpaceDiscoveryFilterIds* ptr) const -{ - if (ptr != nullptr) - { - delete ptr; - ptr = nullptr; - } -} - -const ovrpSpaceDiscoveryFilterHeader* UOculusXRSpaceDiscoveryIdsFilter::GenerateOVRPFilter() -{ - uint32 IdsCount = (uint32)Uuids.Num(); - - wrappedUUIDs.SetNumZeroed(IdsCount); - OVRPFilterIds.reset(new ovrpSpaceDiscoveryFilterIds{ ovrpSpaceDiscoveryFilterType_Ids, IdsCount }); - UE_LOG(LogOculusXRAnchors, Display, TEXT("UUID discovery filter:")); - - for (uint32 i = 0; i < IdsCount; ++i) - { - FMemory::Memcpy(wrappedUUIDs[i].data, Uuids[i].UUIDBytes); - UE_LOG(LogOculusXRAnchors, Display, TEXT("\t%s"), *Uuids[i].ToString()); - } - - OVRPFilterIds->Uuids = reinterpret_cast(wrappedUUIDs.GetData()); - - return (const ovrpSpaceDiscoveryFilterHeader*)OVRPFilterIds.get(); -} - -void ovrpSpaceDiscoveryFilterComponentsDelete::operator()(ovrpSpaceDiscoveryFilterComponents* ptr) const -{ - if (ptr != nullptr) - { - delete ptr; - ptr = nullptr; - } -} - -const ovrpSpaceDiscoveryFilterHeader* UOculusXRSpaceDiscoveryComponentsFilter::GenerateOVRPFilter() -{ - OVRPFilterComponent.reset(new ovrpSpaceDiscoveryFilterComponents{ ovrpSpaceDiscoveryFilterType_Components, ConvertToOvrpComponentType(ComponentType) }); - UE_LOG(LogOculusXRAnchors, Display, TEXT("Component discovery filter %d"), ComponentType); - return (const ovrpSpaceDiscoveryFilterHeader*)OVRPFilterComponent.get(); -} diff --git a/Plugins/MetaXR/Source/OculusXRAnchors/Private/OculusXRAnchorTypesPrivate.cpp b/Plugins/MetaXR/Source/OculusXRAnchors/Private/OculusXRAnchorTypesPrivate.cpp deleted file mode 100644 index 4f0142b..0000000 --- a/Plugins/MetaXR/Source/OculusXRAnchors/Private/OculusXRAnchorTypesPrivate.cpp +++ /dev/null @@ -1,79 +0,0 @@ -// Copyright (c) Meta Platforms, Inc. and affiliates. - -#include "OculusXRAnchorTypesPrivate.h" - -ovrpSpaceComponentType ConvertToOvrpComponentType(const EOculusXRSpaceComponentType ComponentType) -{ - ovrpSpaceComponentType ovrpType = ovrpSpaceComponentType_Max; - switch (ComponentType) - { - case EOculusXRSpaceComponentType::Locatable: - ovrpType = ovrpSpaceComponentType_Locatable; - break; - case EOculusXRSpaceComponentType::Sharable: - ovrpType = ovrpSpaceComponentType_Sharable; - break; - case EOculusXRSpaceComponentType::Storable: - ovrpType = ovrpSpaceComponentType_Storable; - break; - case EOculusXRSpaceComponentType::ScenePlane: - ovrpType = ovrpSpaceComponentType_Bounded2D; - break; - case EOculusXRSpaceComponentType::SceneVolume: - ovrpType = ovrpSpaceComponentType_Bounded3D; - break; - case EOculusXRSpaceComponentType::SemanticClassification: - ovrpType = ovrpSpaceComponentType_SemanticLabels; - break; - case EOculusXRSpaceComponentType::RoomLayout: - ovrpType = ovrpSpaceComponentType_RoomLayout; - break; - case EOculusXRSpaceComponentType::SpaceContainer: - ovrpType = ovrpSpaceComponentType_SpaceContainer; - break; - case EOculusXRSpaceComponentType::TriangleMesh: - ovrpType = ovrpSpaceComponentType_TriangleMesh; - break; - default:; - } - - return ovrpType; -} - -EOculusXRSpaceComponentType ConvertToUEComponentType(const ovrpSpaceComponentType ComponentType) -{ - EOculusXRSpaceComponentType ueComponentType = EOculusXRSpaceComponentType::Undefined; - switch (ComponentType) - { - case ovrpSpaceComponentType_Locatable: - ueComponentType = EOculusXRSpaceComponentType::Locatable; - break; - case ovrpSpaceComponentType_Sharable: - ueComponentType = EOculusXRSpaceComponentType::Sharable; - break; - case ovrpSpaceComponentType_Storable: - ueComponentType = EOculusXRSpaceComponentType::Storable; - break; - case ovrpSpaceComponentType_Bounded2D: - ueComponentType = EOculusXRSpaceComponentType::ScenePlane; - break; - case ovrpSpaceComponentType_Bounded3D: - ueComponentType = EOculusXRSpaceComponentType::SceneVolume; - break; - case ovrpSpaceComponentType_SemanticLabels: - ueComponentType = EOculusXRSpaceComponentType::SemanticClassification; - break; - case ovrpSpaceComponentType_RoomLayout: - ueComponentType = EOculusXRSpaceComponentType::RoomLayout; - break; - case ovrpSpaceComponentType_SpaceContainer: - ueComponentType = EOculusXRSpaceComponentType::SpaceContainer; - break; - case ovrpSpaceComponentType_TriangleMesh: - ueComponentType = EOculusXRSpaceComponentType::TriangleMesh; - break; - default:; - } - - return ueComponentType; -} diff --git a/Plugins/MetaXR/Source/OculusXRAnchors/Private/OculusXRAnchorTypesPrivate.h b/Plugins/MetaXR/Source/OculusXRAnchors/Private/OculusXRAnchorTypesPrivate.h deleted file mode 100644 index c350068..0000000 --- a/Plugins/MetaXR/Source/OculusXRAnchors/Private/OculusXRAnchorTypesPrivate.h +++ /dev/null @@ -1,8 +0,0 @@ -// Copyright (c) Meta Platforms, Inc. and affiliates. - -#pragma once -#include "OculusXRAnchorTypes.h" -#include "OVR_Plugin_Types.h" - -ovrpSpaceComponentType ConvertToOvrpComponentType(const EOculusXRSpaceComponentType ComponentType); -EOculusXRSpaceComponentType ConvertToUEComponentType(const ovrpSpaceComponentType ComponentType); diff --git a/Plugins/MetaXR/Source/OculusXRAnchors/Private/OculusXRAnchors.cpp b/Plugins/MetaXR/Source/OculusXRAnchors/Private/OculusXRAnchors.cpp deleted file mode 100644 index 9708a84..0000000 --- a/Plugins/MetaXR/Source/OculusXRAnchors/Private/OculusXRAnchors.cpp +++ /dev/null @@ -1,1119 +0,0 @@ -// Copyright (c) Meta Platforms, Inc. and affiliates. - -#include "OculusXRAnchors.h" -#include "CoreMinimal.h" -#include "Camera/PlayerCameraManager.h" -#include "GameFramework/PlayerController.h" -#include "OculusXRAnchorsModule.h" -#include "OculusXRAnchorDelegates.h" -#include "OculusXRAsyncRequestSystem.h" -#include "OculusXRHMDModule.h" -#include "OculusXRAnchorManager.h" -#include "OculusXRAnchorsModule.h" -#include "OculusXRSpatialAnchorComponent.h" -#include "OculusXRAnchorBPFunctionLibrary.h" -#include "OculusXRTelemetryAnchorsEvents.h" - -namespace OculusXRAnchors -{ - void FOculusXRAnchors::Initialize() - { - DelegateHandleAnchorCreate = FOculusXRAnchorEventDelegates::OculusSpatialAnchorCreateComplete.AddRaw(this, &FOculusXRAnchors::HandleSpatialAnchorCreateComplete); - DelegateHandleAnchorErase = FOculusXRAnchorEventDelegates::OculusSpaceEraseComplete.AddRaw(this, &FOculusXRAnchors::HandleAnchorEraseComplete); - DelegateHandleSetComponentStatus = FOculusXRAnchorEventDelegates::OculusSpaceSetComponentStatusComplete.AddRaw(this, &FOculusXRAnchors::HandleSetComponentStatusComplete); - DelegateHandleAnchorSave = FOculusXRAnchorEventDelegates::OculusSpaceSaveComplete.AddRaw(this, &FOculusXRAnchors::HandleAnchorSaveComplete); - DelegateHandleAnchorSaveList = FOculusXRAnchorEventDelegates::OculusSpaceListSaveComplete.AddRaw(this, &FOculusXRAnchors::HandleAnchorSaveListComplete); - DelegateHandleQueryResultElement = FOculusXRAnchorEventDelegates::OculusSpaceQueryResult.AddRaw(this, &FOculusXRAnchors::HandleAnchorQueryResultElement); - DelegateHandleQueryComplete = FOculusXRAnchorEventDelegates::OculusSpaceQueryComplete.AddRaw(this, &FOculusXRAnchors::HandleAnchorQueryComplete); - DelegateHandleAnchorShare = FOculusXRAnchorEventDelegates::OculusSpaceShareComplete.AddRaw(this, &FOculusXRAnchors::HandleAnchorSharingComplete); - DelegateHandleAnchorsSave = FOculusXRAnchorEventDelegates::OculusAnchorsSaveComplete.AddRaw(this, &FOculusXRAnchors::HandleAnchorsSaveComplete); - DelegateHandleAnchorsErase = FOculusXRAnchorEventDelegates::OculusAnchorsEraseComplete.AddRaw(this, &FOculusXRAnchors::HandleAnchorsEraseComplete); - DelegateHandleAnchorsDiscoverResults = FOculusXRAnchorEventDelegates::OculusAnchorsDiscoverResults.AddRaw(this, &FOculusXRAnchors::HandleAnchorsDiscoverResults); - DelegateHandleAnchorsDiscoverComplete = FOculusXRAnchorEventDelegates::OculusAnchorsDiscoverComplete.AddRaw(this, &FOculusXRAnchors::HandleAnchorsDiscoverComplete); - } - - void FOculusXRAnchors::Teardown() - { - FOculusXRAnchorEventDelegates::OculusSpatialAnchorCreateComplete.Remove(DelegateHandleAnchorCreate); - FOculusXRAnchorEventDelegates::OculusSpaceEraseComplete.Remove(DelegateHandleAnchorErase); - FOculusXRAnchorEventDelegates::OculusSpaceSetComponentStatusComplete.Remove(DelegateHandleSetComponentStatus); - FOculusXRAnchorEventDelegates::OculusSpaceSaveComplete.Remove(DelegateHandleAnchorSave); - FOculusXRAnchorEventDelegates::OculusSpaceListSaveComplete.Remove(DelegateHandleAnchorSaveList); - FOculusXRAnchorEventDelegates::OculusSpaceQueryResult.Remove(DelegateHandleQueryResultElement); - FOculusXRAnchorEventDelegates::OculusSpaceQueryComplete.Remove(DelegateHandleQueryComplete); - FOculusXRAnchorEventDelegates::OculusSpaceShareComplete.Remove(DelegateHandleAnchorShare); - FOculusXRAnchorEventDelegates::OculusAnchorsSaveComplete.Remove(DelegateHandleAnchorsSave); - FOculusXRAnchorEventDelegates::OculusAnchorsEraseComplete.Remove(DelegateHandleAnchorsErase); - FOculusXRAnchorEventDelegates::OculusAnchorsDiscoverResults.Remove(DelegateHandleAnchorsDiscoverResults); - FOculusXRAnchorEventDelegates::OculusAnchorsDiscoverComplete.Remove(DelegateHandleAnchorsDiscoverComplete); - } - - FOculusXRAnchors* FOculusXRAnchors::GetInstance() - { - return FOculusXRAnchorsModule::GetOculusAnchors(); - } - - bool FOculusXRAnchors::CreateSpatialAnchor(const FTransform& InTransform, AActor* TargetActor, const FOculusXRSpatialAnchorCreateDelegate& ResultCallback, EOculusXRAnchorResult::Type& OutResult) - { - if (!IsValid(TargetActor)) - { - UE_LOG(LogOculusXRAnchors, Warning, TEXT("Invalid actor provided when attempting to create a spatial anchor.")); - OutResult = EOculusXRAnchorResult::Failure; - ResultCallback.ExecuteIfBound(EOculusXRAnchorResult::Failure, nullptr); - return false; - } - - UWorld* World = TargetActor->GetWorld(); - if (!IsValid(World)) - { - UE_LOG(LogOculusXRAnchors, Warning, TEXT("Unable to retrieve World Context while creating spatial anchor.")); - OutResult = EOculusXRAnchorResult::Failure; - ResultCallback.ExecuteIfBound(EOculusXRAnchorResult::Failure, nullptr); - return false; - } - - APlayerController* PlayerController = World->GetFirstPlayerController(); - if (!IsValid(PlayerController)) - { - UE_LOG(LogOculusXRAnchors, Warning, TEXT("Unable to retrieve Player Controller while creating spatial anchor")); - OutResult = EOculusXRAnchorResult::Failure; - ResultCallback.ExecuteIfBound(EOculusXRAnchorResult::Failure, nullptr); - return false; - } - - APlayerCameraManager* PlayerCameraManager = PlayerController->PlayerCameraManager; - FTransform MainCameraTransform = FTransform::Identity; - if (IsValid(PlayerCameraManager)) - { - MainCameraTransform.SetLocation(PlayerCameraManager->GetCameraLocation()); - MainCameraTransform.SetRotation(FQuat(PlayerCameraManager->GetCameraRotation())); - } - - UOculusXRAnchorComponent* Anchor = Cast(TargetActor->GetComponentByClass(UOculusXRAnchorComponent::StaticClass())); - if (IsValid(Anchor) && Anchor->HasValidHandle()) - { - UE_LOG(LogOculusXRAnchors, Warning, TEXT("Actor targeted to create anchor already has an anchor component with a valid handle.")); - OutResult = EOculusXRAnchorResult::Failure; - ResultCallback.ExecuteIfBound(EOculusXRAnchorResult::Failure, nullptr); - return false; - } - - uint64 RequestId = 0; - OutResult = FOculusXRAnchorManager::CreateAnchor(InTransform, RequestId, MainCameraTransform); - bool bAsyncStartSuccess = UOculusXRAnchorBPFunctionLibrary::IsAnchorResultSuccess(OutResult); - - OculusXRTelemetry::Events::FAnchorsCreateRequest Trace(static_cast(GetTypeHash(RequestId))); - if (bAsyncStartSuccess) - { - CreateAnchorBinding AnchorData; - AnchorData.RequestId = RequestId; - AnchorData.Actor = TargetActor; - AnchorData.Binding = ResultCallback; - - FOculusXRAnchors* SDKInstance = GetInstance(); - SDKInstance->CreateSpatialAnchorBindings.Add(RequestId, AnchorData); - } - else - { - UE_LOG(LogOculusXRAnchors, Warning, TEXT("Failed to start async create spatial anchor.")); - ResultCallback.ExecuteIfBound(EOculusXRAnchorResult::Failure, nullptr); - Trace.SetResult(OculusXRTelemetry::EAction::Cancel).End(); - } - - return bAsyncStartSuccess; - } - - bool FOculusXRAnchors::EraseAnchor(UOculusXRAnchorComponent* Anchor, const FOculusXRAnchorEraseDelegate& ResultCallback, EOculusXRAnchorResult::Type& OutResult) - { - if (!IsValid(Anchor)) - { - UE_LOG(LogOculusXRAnchors, Warning, TEXT("Invalid anchor provided when attempting to erase an anchor.")); - OutResult = EOculusXRAnchorResult::Failure; - ResultCallback.ExecuteIfBound(EOculusXRAnchorResult::Failure, FOculusXRUUID()); - return false; - } - - if (!Anchor->HasValidHandle()) - { - UE_LOG(LogOculusXRAnchors, Warning, TEXT("Cannot erase anchor with invalid handle.")); - OutResult = EOculusXRAnchorResult::Failure; - ResultCallback.ExecuteIfBound(EOculusXRAnchorResult::Failure, FOculusXRUUID()); - return false; - } - - if (!Anchor->IsStoredAtLocation(EOculusXRSpaceStorageLocation::Local)) - { - UE_LOG(LogOculusXRAnchors, Warning, TEXT("Only local anchors can be erased.")); - OutResult = EOculusXRAnchorResult::Failure; - ResultCallback.ExecuteIfBound(EOculusXRAnchorResult::Failure, FOculusXRUUID()); - return false; - } - - uint64 RequestId = 0; - - // Erase only supports local anchors - EOculusXRAnchorResult::Type Result = FOculusXRAnchorManager::EraseAnchor(Anchor->GetHandle(), EOculusXRSpaceStorageLocation::Local, RequestId); - bool bAsyncStartSuccess = UOculusXRAnchorBPFunctionLibrary::IsAnchorResultSuccess(Result); - - OculusXRTelemetry::Events::FAnchorsEraseRequest Trace(static_cast(GetTypeHash(RequestId))); - if (bAsyncStartSuccess) - { - EraseAnchorBinding EraseData; - EraseData.RequestId = RequestId; - EraseData.Binding = ResultCallback; - EraseData.Anchor = Anchor; - - FOculusXRAnchors* SDKInstance = GetInstance(); - SDKInstance->EraseAnchorBindings.Add(RequestId, EraseData); - } - else - { - UE_LOG(LogOculusXRAnchors, Warning, TEXT("Failed to start async erase spatial anchor.")); - ResultCallback.ExecuteIfBound(EOculusXRAnchorResult::Failure, FOculusXRUUID()); - Trace.SetResult(OculusXRTelemetry::EAction::Cancel).End(); - } - - return bAsyncStartSuccess; - } - - bool FOculusXRAnchors::DestroyAnchor(uint64 AnchorHandle, EOculusXRAnchorResult::Type& OutResult) - { - OutResult = FOculusXRAnchorManager::DestroyAnchor(AnchorHandle); - - return UOculusXRAnchorBPFunctionLibrary::IsAnchorResultSuccess(OutResult); - } - - bool FOculusXRAnchors::SetAnchorComponentStatus(UOculusXRAnchorComponent* Anchor, EOculusXRSpaceComponentType SpaceComponentType, bool Enable, float Timeout, const FOculusXRAnchorSetComponentStatusDelegate& ResultCallback, EOculusXRAnchorResult::Type& OutResult) - { - if (!IsValid(Anchor)) - { - UE_LOG(LogOculusXRAnchors, Warning, TEXT("Invalid anchor provided when attempting to set anchor component status.")); - OutResult = EOculusXRAnchorResult::Failure; - ResultCallback.ExecuteIfBound(EOculusXRAnchorResult::Failure, FOculusXRUInt64(), EOculusXRSpaceComponentType::Undefined, false); - return false; - } - - if (!Anchor->HasValidHandle()) - { - UE_LOG(LogOculusXRAnchors, Warning, TEXT("Anchor provided to set anchor component status has invalid handle.")); - OutResult = EOculusXRAnchorResult::Failure; - ResultCallback.ExecuteIfBound(EOculusXRAnchorResult::Failure, FOculusXRUInt64(), EOculusXRSpaceComponentType::Undefined, false); - return false; - } - - uint64 RequestId = 0; - OutResult = FOculusXRAnchorManager::SetAnchorComponentStatus(Anchor->GetHandle(), SpaceComponentType, Enable, Timeout, RequestId); - bool bAsyncStartSuccess = UOculusXRAnchorBPFunctionLibrary::IsAnchorResultSuccess(OutResult); - - OculusXRTelemetry::Events::FAnchorsSetComponentStatusRequest Trace(static_cast(GetTypeHash(RequestId))); - if (bAsyncStartSuccess) - { - SetComponentStatusBinding SetComponentStatusData; - SetComponentStatusData.RequestId = RequestId; - SetComponentStatusData.Binding = ResultCallback; - SetComponentStatusData.AnchorHandle = Anchor->GetHandle(); - - FOculusXRAnchors* SDKInstance = GetInstance(); - SDKInstance->SetComponentStatusBindings.Add(RequestId, SetComponentStatusData); - } - else - { - UE_LOG(LogOculusXRAnchors, Warning, TEXT("Failed to start async call to set anchor component status.")); - ResultCallback.ExecuteIfBound(EOculusXRAnchorResult::Failure, FOculusXRUInt64(), EOculusXRSpaceComponentType::Undefined, false); - Trace.SetResult(OculusXRTelemetry::EAction::Cancel).End(); - } - - return true; - } - - bool FOculusXRAnchors::GetAnchorComponentStatus(UOculusXRAnchorComponent* Anchor, EOculusXRSpaceComponentType SpaceComponentType, bool& OutEnabled, bool& OutChangePending, EOculusXRAnchorResult::Type& OutResult) - { - if (!IsValid(Anchor)) - { - UE_LOG(LogOculusXRAnchors, Warning, TEXT("Invalid anchor provided when attempting to get space component status.")); - OutResult = EOculusXRAnchorResult::Failure; - return false; - } - - if (!Anchor->HasValidHandle()) - { - UE_LOG(LogOculusXRAnchors, Warning, TEXT("Anchor provided to get space component status has invalid handle.")); - OutResult = EOculusXRAnchorResult::Failure; - return false; - } - - return GetComponentStatus(Anchor->GetHandle(), SpaceComponentType, OutEnabled, OutChangePending, OutResult); - } - - bool FOculusXRAnchors::GetAnchorSupportedComponents(UOculusXRAnchorComponent* Anchor, TArray& OutSupportedComponents, EOculusXRAnchorResult::Type& OutResult) - { - if (!IsValid(Anchor)) - { - UE_LOG(LogOculusXRAnchors, Warning, TEXT("Invalid anchor provided when attempting to get space component status.")); - OutResult = EOculusXRAnchorResult::Failure; - return false; - } - - if (!Anchor->HasValidHandle()) - { - UE_LOG(LogOculusXRAnchors, Warning, TEXT("Anchor provided to get space component status has invalid handle.")); - OutResult = EOculusXRAnchorResult::Failure; - return false; - } - - return GetSupportedComponents(Anchor->GetHandle(), OutSupportedComponents, OutResult); - } - - bool FOculusXRAnchors::SetComponentStatus(uint64 Space, EOculusXRSpaceComponentType SpaceComponentType, bool Enable, float Timeout, const FOculusXRAnchorSetComponentStatusDelegate& ResultCallback, EOculusXRAnchorResult::Type& OutResult) - { - uint64 RequestId = 0; - OutResult = FOculusXRAnchorManager::SetAnchorComponentStatus(Space, SpaceComponentType, Enable, Timeout, RequestId); - bool bAsyncStartSuccess = UOculusXRAnchorBPFunctionLibrary::IsAnchorResultSuccess(OutResult); - - if (bAsyncStartSuccess) - { - SetComponentStatusBinding SetComponentStatusData; - SetComponentStatusData.RequestId = RequestId; - SetComponentStatusData.Binding = ResultCallback; - SetComponentStatusData.AnchorHandle = Space; - - FOculusXRAnchors* SDKInstance = GetInstance(); - SDKInstance->SetComponentStatusBindings.Add(RequestId, SetComponentStatusData); - } - else - { - UE_LOG(LogOculusXRAnchors, Warning, TEXT("Failed to start async call to set anchor component status.")); - ResultCallback.ExecuteIfBound(EOculusXRAnchorResult::Failure, Space, SpaceComponentType, Enable); - } - - return true; - } - - bool FOculusXRAnchors::GetComponentStatus(uint64 AnchorHandle, EOculusXRSpaceComponentType SpaceComponentType, bool& OutEnabled, bool& OutChangePending, EOculusXRAnchorResult::Type& OutResult) - { - OutResult = FOculusXRAnchorManager::GetAnchorComponentStatus(AnchorHandle, SpaceComponentType, OutEnabled, OutChangePending); - return UOculusXRAnchorBPFunctionLibrary::IsAnchorResultSuccess(OutResult); - } - - bool FOculusXRAnchors::GetSupportedComponents(uint64 AnchorHandle, TArray& OutSupportedComponents, EOculusXRAnchorResult::Type& OutResult) - { - OutResult = FOculusXRAnchorManager::GetSupportedAnchorComponents(AnchorHandle, OutSupportedComponents); - return UOculusXRAnchorBPFunctionLibrary::IsAnchorResultSuccess(OutResult); - } - - bool FOculusXRAnchors::SaveAnchor(UOculusXRAnchorComponent* Anchor, EOculusXRSpaceStorageLocation StorageLocation, const FOculusXRAnchorSaveDelegate& ResultCallback, EOculusXRAnchorResult::Type& OutResult) - { - if (!IsValid(Anchor)) - { - UE_LOG(LogOculusXRAnchors, Warning, TEXT("Invalid anchor provided when attempting to save anchor.")); - OutResult = EOculusXRAnchorResult::Failure; - ResultCallback.ExecuteIfBound(EOculusXRAnchorResult::Failure, nullptr); - return false; - } - - if (!Anchor->HasValidHandle()) - { - UE_LOG(LogOculusXRAnchors, Warning, TEXT("Anchor provided to save anchor has invalid handle.")); - OutResult = EOculusXRAnchorResult::Failure; - ResultCallback.ExecuteIfBound(EOculusXRAnchorResult::Failure, nullptr); - return false; - } - - uint64 RequestId = 0; - OutResult = FOculusXRAnchorManager::SaveAnchor(Anchor->GetHandle(), StorageLocation, EOculusXRSpaceStoragePersistenceMode::Indefinite, RequestId); - bool bAsyncStartSuccess = UOculusXRAnchorBPFunctionLibrary::IsAnchorResultSuccess(OutResult); - - OculusXRTelemetry::Events::FAnchorsSaveRequest Trace(static_cast(GetTypeHash(RequestId))); - if (bAsyncStartSuccess) - { - SaveAnchorBinding SaveAnchorData; - SaveAnchorData.RequestId = RequestId; - SaveAnchorData.Binding = ResultCallback; - SaveAnchorData.Location = StorageLocation; - SaveAnchorData.Anchor = Anchor; - - FOculusXRAnchors* SDKInstance = GetInstance(); - SDKInstance->AnchorSaveBindings.Add(RequestId, SaveAnchorData); - } - else - { - UE_LOG(LogOculusXRAnchors, Warning, TEXT("Failed to start async call to save anchor.")); - ResultCallback.ExecuteIfBound(EOculusXRAnchorResult::Failure, nullptr); - Trace.SetResult(OculusXRTelemetry::EAction::Cancel).End(); - } - - return bAsyncStartSuccess; - } - - void AnchorComponentsToReferences(const TArray& Anchors, TArray& Handles, TArray>& AnchorPtrs) - { - Handles.Empty(); - AnchorPtrs.Empty(); - - for (auto& AnchorInstance : Anchors) - { - if (!IsValid(AnchorInstance)) - { - UE_LOG(LogOculusXRAnchors, Warning, TEXT("Invalid anchor provided when attempting to process anchor list.")); - continue; - } - - if (!AnchorInstance->HasValidHandle()) - { - UE_LOG(LogOculusXRAnchors, Warning, TEXT("Anchor provided to anchor list has invalid handle.")); - continue; - } - - Handles.Add(AnchorInstance->GetHandle().GetValue()); - AnchorPtrs.Add(AnchorInstance); - } - } - - bool FOculusXRAnchors::SaveAnchorList(const TArray& Anchors, EOculusXRSpaceStorageLocation StorageLocation, const FOculusXRAnchorSaveListDelegate& ResultCallback, EOculusXRAnchorResult::Type& OutResult) - { - TArray Handles; - TArray> SavedAnchors; - - AnchorComponentsToReferences(Anchors, Handles, SavedAnchors); - - uint64 RequestId = 0; - OutResult = FOculusXRAnchorManager::SaveAnchorList(Handles, StorageLocation, RequestId); - bool bAsyncStartSuccess = UOculusXRAnchorBPFunctionLibrary::IsAnchorResultSuccess(OutResult); - - if (bAsyncStartSuccess) - { - SaveAnchorListBinding SaveAnchorListData; - SaveAnchorListData.RequestId = RequestId; - SaveAnchorListData.Binding = ResultCallback; - SaveAnchorListData.Location = StorageLocation; - SaveAnchorListData.SavedAnchors = SavedAnchors; - - FOculusXRAnchors* SDKInstance = GetInstance(); - SDKInstance->AnchorSaveListBindings.Add(RequestId, SaveAnchorListData); - } - else - { - UE_LOG(LogOculusXRAnchors, Warning, TEXT("Failed to start async call to save anchor list.")); - ResultCallback.ExecuteIfBound(OutResult, TArray()); - } - - return bAsyncStartSuccess; - } - - bool FOculusXRAnchors::QueryAnchors(const TArray& AnchorUUIDs, EOculusXRSpaceStorageLocation Location, const FOculusXRAnchorQueryDelegate& ResultCallback, EOculusXRAnchorResult::Type& OutResult) - { - FOculusXRSpaceQueryInfo QueryInfo; - QueryInfo.FilterType = EOculusXRSpaceQueryFilterType::FilterByIds; - QueryInfo.IDFilter = AnchorUUIDs; - QueryInfo.Location = Location; - QueryInfo.MaxQuerySpaces = AnchorUUIDs.Num(); - - return QueryAnchorsAdvanced(QueryInfo, ResultCallback, OutResult); - } - - bool FOculusXRAnchors::QueryAnchorsAdvanced(const FOculusXRSpaceQueryInfo& QueryInfo, const FOculusXRAnchorQueryDelegate& ResultCallback, EOculusXRAnchorResult::Type& OutResult) - { - uint64 RequestId = 0; - OutResult = FOculusXRAnchorManager::QueryAnchors(QueryInfo, RequestId); - bool bAsyncStartSuccess = UOculusXRAnchorBPFunctionLibrary::IsAnchorResultSuccess(OutResult); - - OculusXRTelemetry::Events::FAnchorsQueryRequest Trace(static_cast(GetTypeHash(RequestId))); - if (bAsyncStartSuccess) - { - AnchorQueryBinding QueryResults; - QueryResults.RequestId = RequestId; - QueryResults.Binding = ResultCallback; - QueryResults.Location = QueryInfo.Location; - - FOculusXRAnchors* SDKInstance = GetInstance(); - SDKInstance->AnchorQueryBindings.Add(RequestId, QueryResults); - } - else - { - UE_LOG(LogOculusXRAnchors, Warning, TEXT("Failed to start async call to query anchors.")); - ResultCallback.ExecuteIfBound(EOculusXRAnchorResult::Failure, TArray()); - Trace.SetResult(OculusXRTelemetry::EAction::Cancel).End(); - } - - return bAsyncStartSuccess; - } - - bool FOculusXRAnchors::ShareAnchors(const TArray& AnchorHandles, const TArray& OculusUserIDs, const FOculusXRAnchorShareDelegate& ResultCallback, EOculusXRAnchorResult::Type& OutResult) - { - uint64 RequestId = 0; - OutResult = FOculusXRAnchorManager::ShareAnchors(AnchorHandles, OculusUserIDs, RequestId); - bool bAsyncStartSuccess = UOculusXRAnchorBPFunctionLibrary::IsAnchorResultSuccess(OutResult); - - if (bAsyncStartSuccess) - { - ShareAnchorsBinding ShareAnchorsData; - ShareAnchorsData.RequestId = RequestId; - ShareAnchorsData.Binding = ResultCallback; - ShareAnchorsData.OculusUserIds = OculusUserIDs; - - FOculusXRAnchors* SDKInstance = GetInstance(); - SDKInstance->ShareAnchorsBindings.Add(RequestId, ShareAnchorsData); - } - else - { - UE_LOG(LogOculusXRAnchors, Warning, TEXT("Failed to start async call to share anchor.")); - ResultCallback.ExecuteIfBound(EOculusXRAnchorResult::Failure, TArray(), TArray()); - } - - return bAsyncStartSuccess; - } - - bool FOculusXRAnchors::ShareAnchors(const TArray& Anchors, const TArray& OculusUserIDs, const FOculusXRAnchorShareDelegate& ResultCallback, EOculusXRAnchorResult::Type& OutResult) - { - TArray Handles; - TArray> SharedAnchors; - - AnchorComponentsToReferences(Anchors, Handles, SharedAnchors); - - uint64 RequestId = 0; - OutResult = FOculusXRAnchorManager::ShareAnchors(Handles, OculusUserIDs, RequestId); - bool bAsyncStartSuccess = UOculusXRAnchorBPFunctionLibrary::IsAnchorResultSuccess(OutResult); - - if (bAsyncStartSuccess) - { - ShareAnchorsBinding ShareAnchorsData; - ShareAnchorsData.RequestId = RequestId; - ShareAnchorsData.Binding = ResultCallback; - ShareAnchorsData.SharedAnchors = SharedAnchors; - ShareAnchorsData.OculusUserIds = OculusUserIDs; - - FOculusXRAnchors* SDKInstance = GetInstance(); - SDKInstance->ShareAnchorsBindings.Add(RequestId, ShareAnchorsData); - } - else - { - UE_LOG(LogOculusXRAnchors, Warning, TEXT("Failed to start async call to share anchor.")); - ResultCallback.ExecuteIfBound(EOculusXRAnchorResult::Failure, TArray(), TArray()); - } - - return bAsyncStartSuccess; - } - - bool FOculusXRAnchors::SaveAnchors(const TArray& Anchors, const FOculusXRSaveAnchorsDelegate& ResultCallback, EOculusXRAnchorResult::Type& OutResult) - { - TArray Handles; - TArray> SavedAnchors; - - AnchorComponentsToReferences(Anchors, Handles, SavedAnchors); - - uint64 RequestId = 0; - OutResult = FOculusXRAnchorManager::SaveAnchors(Handles, RequestId); - bool bAsyncStartSuccess = UOculusXRAnchorBPFunctionLibrary::IsAnchorResultSuccess(OutResult); - - if (bAsyncStartSuccess) - { - SaveAnchorsBinding SaveAnchorsData; - SaveAnchorsData.RequestId = RequestId; - SaveAnchorsData.Binding = ResultCallback; - SaveAnchorsData.SavedAnchors = SavedAnchors; - - FOculusXRAnchors* SDKInstance = GetInstance(); - SDKInstance->SaveAnchorsBindings.Add(RequestId, SaveAnchorsData); - } - else - { - UE_LOG(LogOculusXRAnchors, Warning, TEXT("Failed to start async call to save anchor list.")); - ResultCallback.ExecuteIfBound(OutResult, TArray()); - } - - return bAsyncStartSuccess; - } - - bool FOculusXRAnchors::EraseAnchors(const TArray& Anchors, const FOculusXREraseAnchorsDelegate& ResultCallback, EOculusXRAnchorResult::Type& OutResult) - { - TArray Handles; - TArray> ErasedAnchors; - TArray UUIDs; - - AnchorComponentsToReferences(Anchors, Handles, ErasedAnchors); - - for (const auto& Anchor : Anchors) - { - if (!Anchor->IsStoredAtLocation(EOculusXRSpaceStorageLocation::Local)) - { - UE_LOG(LogOculusXRAnchors, Warning, TEXT("Only saved anchors can be erased.")); - OutResult = EOculusXRAnchorResult::Failure; - ResultCallback.ExecuteIfBound(OutResult, TArray(), TArray(), TArray()); - return false; - } - - UUIDs.Add(Anchor->GetUUID()); - } - - uint64 RequestId = 0; - OutResult = FOculusXRAnchorManager::EraseAnchors(TArray(), UUIDs, RequestId); - bool bAsyncStartSuccess = UOculusXRAnchorBPFunctionLibrary::IsAnchorResultSuccess(OutResult); - - if (bAsyncStartSuccess) - { - EraseAnchorsBinding EraseAnchorsData; - EraseAnchorsData.RequestId = RequestId; - EraseAnchorsData.Binding = ResultCallback; - EraseAnchorsData.ErasedAnchors = ErasedAnchors; - - FOculusXRAnchors* SDKInstance = GetInstance(); - SDKInstance->EraseAnchorsBindings.Add(RequestId, EraseAnchorsData); - } - else - { - UE_LOG(LogOculusXRAnchors, Warning, TEXT("Failed to start async call to save anchor list.")); - ResultCallback.ExecuteIfBound(OutResult, TArray(), TArray(), TArray()); - } - - return bAsyncStartSuccess; - } - - bool FOculusXRAnchors::EraseAnchors(const TArray& AnchorHandles, const TArray& AnchorUUIDs, const FOculusXREraseAnchorsDelegate& ResultCallback, EOculusXRAnchorResult::Type& OutResult) - { - uint64 RequestId = 0; - OutResult = FOculusXRAnchorManager::EraseAnchors(AnchorHandles, AnchorUUIDs, RequestId); - bool bAsyncStartSuccess = UOculusXRAnchorBPFunctionLibrary::IsAnchorResultSuccess(OutResult); - - if (bAsyncStartSuccess) - { - EraseAnchorsBinding EraseAnchorsData; - EraseAnchorsData.RequestId = RequestId; - EraseAnchorsData.Binding = ResultCallback; - EraseAnchorsData.ErasedAnchorsHandles = AnchorHandles; - EraseAnchorsData.ErasedAnchorsUUIDs = AnchorUUIDs; - - FOculusXRAnchors* SDKInstance = GetInstance(); - SDKInstance->EraseAnchorsBindings.Add(RequestId, EraseAnchorsData); - } - else - { - UE_LOG(LogOculusXRAnchors, Warning, TEXT("Failed to start async call to save anchor list.")); - ResultCallback.ExecuteIfBound(OutResult, TArray(), TArray(), TArray()); - } - - return bAsyncStartSuccess; - } - - bool FOculusXRAnchors::DiscoverAnchors(const FOculusXRSpaceDiscoveryInfo& DiscoveryInfo, const FOculusXRDiscoverAnchorsResultsDelegate& DiscoveryResultCallback, const FOculusXRDiscoverAnchorsCompleteDelegate& DiscoveryCompleteCallback, EOculusXRAnchorResult::Type& OutResult) - { - uint64 RequestId = 0; - OutResult = FOculusXRAnchorManager::DiscoverAnchors(DiscoveryInfo, RequestId); - bool bAsyncStartSuccess = UOculusXRAnchorBPFunctionLibrary::IsAnchorResultSuccess(OutResult); - - if (bAsyncStartSuccess) - { - AnchorDiscoveryBinding DiscoveryData; - DiscoveryData.RequestId = RequestId; - DiscoveryData.CompleteBinding = DiscoveryCompleteCallback; - DiscoveryData.ResultBinding = DiscoveryResultCallback; - - FOculusXRAnchors* SDKInstance = GetInstance(); - SDKInstance->AnchorDiscoveryBindings.Add(RequestId, DiscoveryData); - } - else - { - UE_LOG(LogOculusXRAnchors, Warning, TEXT("Failed to start async call to discover anchors.")); - DiscoveryCompleteCallback.ExecuteIfBound(OutResult); - } - return bAsyncStartSuccess; - } - - bool FOculusXRAnchors::GetSharedAnchors(const TArray& AnchorUUIDs, const FOculusXRGetSharedAnchorsDelegate& ResultCallback, EOculusXRAnchorResult::Type& OutResult) - { - FOculusXRSpaceQueryInfo queryInfo; - queryInfo.FilterType = EOculusXRSpaceQueryFilterType::FilterByIds; - queryInfo.IDFilter = AnchorUUIDs; - queryInfo.Location = EOculusXRSpaceStorageLocation::Cloud; - queryInfo.MaxQuerySpaces = AnchorUUIDs.Num(); - - uint64 requestId = 0; - OutResult = FOculusXRAnchorManager::QueryAnchors(queryInfo, requestId); - bool bAsyncStartSuccess = UOculusXRAnchorBPFunctionLibrary::IsAnchorResultSuccess(OutResult); - - OculusXRTelemetry::Events::FAnchorsQueryRequest Trace(static_cast(GetTypeHash(requestId))); - - if (bAsyncStartSuccess) - { - GetSharedAnchorsBinding getSharedAnchorsBinding; - getSharedAnchorsBinding.RequestId = requestId; - getSharedAnchorsBinding.ResultBinding = ResultCallback; - - FOculusXRAnchors* SDKInstance = GetInstance(); - SDKInstance->GetSharedAnchorsBindings.Add(requestId, getSharedAnchorsBinding); - } - else - { - UE_LOG(LogOculusXRAnchors, Warning, TEXT("Failed to start async call to get shared anchors.")); - ResultCallback.ExecuteIfBound(EOculusXRAnchorResult::Failure, TArray()); - Trace.SetResult(OculusXRTelemetry::EAction::Cancel).End(); - } - - return bAsyncStartSuccess; - } - - bool FOculusXRAnchors::GetSpaceContainerUUIDs(uint64 Space, TArray& OutUUIDs, EOculusXRAnchorResult::Type& OutResult) - { - OutResult = FOculusXRAnchorManager::GetAnchorContainerUUIDs(Space, OutUUIDs); - return UOculusXRAnchorBPFunctionLibrary::IsAnchorResultSuccess(OutResult); - } - - TSharedPtr FOculusXRAnchors::ShareAnchorsAsync(const TArray& AnchorHandles, const TArray& Groups, const FShareAnchorsWithGroups::FCompleteDelegate& OnComplete) - { - auto request = OculusXR::FAsyncRequestSystem::CreateRequest(Groups, AnchorHandles); - request->BindOnComplete(OnComplete); - request->Execute(); - return request; - } - - TSharedPtr FOculusXRAnchors::GetSharedAnchorsAsync(const FOculusXRUUID& Group, const TArray& WantedAnchors, const FGetAnchorsSharedWithGroup::FCompleteDelegate& OnComplete) - { - auto request = OculusXR::FAsyncRequestSystem::CreateRequest(Group, WantedAnchors); - request->BindOnComplete(OnComplete); - request->Execute(); - return request; - } - - void FOculusXRAnchors::HandleSpatialAnchorCreateComplete(FOculusXRUInt64 RequestId, EOculusXRAnchorResult::Type Result, FOculusXRUInt64 Space, FOculusXRUUID UUID) - { - OculusXRTelemetry::Events::FAnchorsCreateResponse(static_cast(GetTypeHash(RequestId))) - .SetResult(UOculusXRAnchorBPFunctionLibrary::IsAnchorResultSuccess(Result) ? OculusXRTelemetry::EAction::Success : OculusXRTelemetry::EAction::Fail); - CreateAnchorBinding* AnchorDataPtr = CreateSpatialAnchorBindings.Find(RequestId.GetValue()); - if (AnchorDataPtr == nullptr) - { - UE_LOG(LogOculusXRAnchors, Error, TEXT("Couldn't find anchor data binding for create spatial anchor! Request: %llu"), RequestId.GetValue()); - return; - } - - if (!UOculusXRAnchorBPFunctionLibrary::IsAnchorResultSuccess(Result)) - { - UE_LOG(LogOculusXRAnchors, Warning, TEXT("Failed to create Spatial Anchor. Request: %llu -- Result: %d"), RequestId.GetValue(), Result); - AnchorDataPtr->Binding.ExecuteIfBound(Result, nullptr); - CreateSpatialAnchorBindings.Remove(RequestId.GetValue()); - return; - } - - if (!AnchorDataPtr->Actor.IsValid()) - { - UE_LOG(LogOculusXRAnchors, Warning, TEXT("Actor has been invalidated while creating actor. Request: %llu"), RequestId.GetValue()); - - // Clean up the orphaned space - EOculusXRAnchorResult::Type AnchorResult; - FOculusXRAnchors::DestroyAnchor(Space, AnchorResult); - - AnchorDataPtr->Binding.ExecuteIfBound(Result, nullptr); - CreateSpatialAnchorBindings.Remove(RequestId.GetValue()); - return; - } - - AActor* TargetActor = AnchorDataPtr->Actor.Get(); - - UOculusXRSpatialAnchorComponent* SpatialAnchorComponent = TargetActor->FindComponentByClass(); - if (SpatialAnchorComponent == nullptr) - { - SpatialAnchorComponent = Cast(TargetActor->AddComponentByClass(UOculusXRSpatialAnchorComponent::StaticClass(), false, FTransform::Identity, false)); - } - - SpatialAnchorComponent->SetHandle(Space); - SpatialAnchorComponent->SetUUID(UUID); - - uint64 tempOut; - FOculusXRAnchorManager::SetAnchorComponentStatus(Space, EOculusXRSpaceComponentType::Locatable, true, 0.0f, tempOut); - FOculusXRAnchorManager::SetAnchorComponentStatus(Space, EOculusXRSpaceComponentType::Sharable, true, 0.0f, tempOut); - FOculusXRAnchorManager::SetAnchorComponentStatus(Space, EOculusXRSpaceComponentType::Storable, true, 0.0f, tempOut); - - AnchorDataPtr->Binding.ExecuteIfBound(Result, SpatialAnchorComponent); - CreateSpatialAnchorBindings.Remove(RequestId.GetValue()); - } - - void FOculusXRAnchors::HandleAnchorEraseComplete(FOculusXRUInt64 RequestId, EOculusXRAnchorResult::Type Result, FOculusXRUUID UUID, EOculusXRSpaceStorageLocation Location) - { - OculusXRTelemetry::Events::FAnchorsEraseResponse(static_cast(GetTypeHash(RequestId))) - .SetResult(UOculusXRAnchorBPFunctionLibrary::IsAnchorResultSuccess(Result) ? OculusXRTelemetry::EAction::Success : OculusXRTelemetry::EAction::Fail); - EraseAnchorBinding* EraseDataPtr = EraseAnchorBindings.Find(RequestId.GetValue()); - if (EraseDataPtr == nullptr) - { - UE_LOG(LogOculusXRAnchors, Error, TEXT("Couldn't find binding for space erase! Request: %llu"), RequestId.GetValue()); - return; - } - - if (!UOculusXRAnchorBPFunctionLibrary::IsAnchorResultSuccess(Result)) - { - UE_LOG(LogOculusXRAnchors, Warning, TEXT("Failed to erase Spatial Anchor. Request: %llu -- Result: %d"), RequestId.GetValue(), Result); - EraseDataPtr->Binding.ExecuteIfBound(Result, UUID); - EraseAnchorBindings.Remove(RequestId.GetValue()); - return; - } - - if (EraseDataPtr->Anchor.IsValid()) - { - // Since you can only erase local anchors, just unset local anchor storage - EraseDataPtr->Anchor->SetStoredLocation(EOculusXRSpaceStorageLocation::Local, false); - } - - EraseDataPtr->Binding.ExecuteIfBound(Result, UUID); - EraseAnchorBindings.Remove(RequestId.GetValue()); - } - - void FOculusXRAnchors::HandleSetComponentStatusComplete(FOculusXRUInt64 RequestId, EOculusXRAnchorResult::Type Result, FOculusXRUInt64 Space, FOculusXRUUID UUID, EOculusXRSpaceComponentType ComponentType, bool Enabled) - { - OculusXRTelemetry::Events::FAnchorsSetComponentStatusResponse(static_cast(GetTypeHash(RequestId))) - .SetResult(UOculusXRAnchorBPFunctionLibrary::IsAnchorResultSuccess(Result) ? OculusXRTelemetry::EAction::Success : OculusXRTelemetry::EAction::Fail); - SetComponentStatusBinding* SetStatusBinding = SetComponentStatusBindings.Find(RequestId.GetValue()); - - if (SetStatusBinding == nullptr) - { - UE_LOG(LogOculusXRAnchors, Verbose, TEXT("Couldn't find binding for set component status! Request: %llu"), RequestId.GetValue()); - return; - } - - if (SetStatusBinding != nullptr) - { - SetStatusBinding->Binding.ExecuteIfBound(Result, SetStatusBinding->AnchorHandle, ComponentType, Enabled); - SetComponentStatusBindings.Remove(RequestId.GetValue()); - return; - } - - SetStatusBinding->Binding.ExecuteIfBound(Result, SetStatusBinding->AnchorHandle, ComponentType, Enabled); - SetComponentStatusBindings.Remove(RequestId.GetValue()); - } - - void FOculusXRAnchors::HandleAnchorSaveComplete(FOculusXRUInt64 RequestId, FOculusXRUInt64 Space, bool Success, EOculusXRAnchorResult::Type Result, FOculusXRUUID UUID) - { - OculusXRTelemetry::Events::FAnchorsSaveResponse(static_cast(GetTypeHash(RequestId))) - .SetResult(UOculusXRAnchorBPFunctionLibrary::IsAnchorResultSuccess(Result) ? OculusXRTelemetry::EAction::Success : OculusXRTelemetry::EAction::Fail); - SaveAnchorBinding* SaveAnchorData = AnchorSaveBindings.Find(RequestId.GetValue()); - if (SaveAnchorData == nullptr) - { - UE_LOG(LogOculusXRAnchors, Error, TEXT("Couldn't find binding for save anchor! Request: %llu"), RequestId.GetValue()); - return; - } - - if (!UOculusXRAnchorBPFunctionLibrary::IsAnchorResultSuccess(Result)) - { - UE_LOG(LogOculusXRAnchors, Warning, TEXT("Failed to save Spatial Anchor. Request: %llu -- Result: %d -- Space: %llu"), RequestId.GetValue(), Result, Space.GetValue()); - SaveAnchorData->Binding.ExecuteIfBound(Result, SaveAnchorData->Anchor.Get()); - AnchorSaveBindings.Remove(RequestId.GetValue()); - return; - } - - if (SaveAnchorData->Anchor.IsValid()) - { - SaveAnchorData->Anchor->SetStoredLocation(SaveAnchorData->Location, true); - } - - SaveAnchorData->Binding.ExecuteIfBound(Result, SaveAnchorData->Anchor.Get()); - AnchorSaveBindings.Remove(RequestId.GetValue()); - } - - void FOculusXRAnchors::HandleAnchorSaveListComplete(FOculusXRUInt64 RequestId, EOculusXRAnchorResult::Type Result) - { - SaveAnchorListBinding* SaveListData = AnchorSaveListBindings.Find(RequestId.GetValue()); - if (SaveListData == nullptr) - { - UE_LOG(LogOculusXRAnchors, Error, TEXT("Couldn't find binding for save anchor list! Request: %llu"), RequestId.GetValue()); - return; - } - - // Get all anchors - TArray SavedAnchors; - for (auto& WeakAnchor : SaveListData->SavedAnchors) - { - if (WeakAnchor.IsValid()) - { - SavedAnchors.Add(WeakAnchor.Get()); - } - } - - // Failed to save - if (!UOculusXRAnchorBPFunctionLibrary::IsAnchorResultSuccess(Result)) - { - UE_LOG(LogOculusXRAnchors, Warning, TEXT("Failed to save Spatial Anchors. Request: %llu -- Result: %d"), RequestId.GetValue(), Result); - SaveListData->Binding.ExecuteIfBound(Result, SavedAnchors); - AnchorSaveListBindings.Remove(RequestId.GetValue()); - return; - } - - // Set new storage location - for (auto& SavedAnchor : SavedAnchors) - { - SavedAnchor->SetStoredLocation(SaveListData->Location, true); - } - - SaveListData->Binding.ExecuteIfBound(Result, SavedAnchors); - AnchorSaveListBindings.Remove(RequestId.GetValue()); - } - - void FOculusXRAnchors::HandleAnchorQueryResultElement(FOculusXRUInt64 RequestId, FOculusXRUInt64 Space, FOculusXRUUID UUID) - { - AnchorQueryBinding* QueryResultPtr = AnchorQueryBindings.Find(RequestId.GetValue()); - GetSharedAnchorsBinding* GetSharedResultPtr = GetSharedAnchorsBindings.Find(RequestId.GetValue()); - if (QueryResultPtr) - { - UpdateQuerySpacesBinding(QueryResultPtr, RequestId, Space, UUID); - } - else if (GetSharedResultPtr) - { - UpdateGetSharedAnchorsBinding(GetSharedResultPtr, RequestId, Space, UUID); - } - else - { - UE_LOG(LogOculusXRAnchors, Verbose, TEXT("Failed to find binding for query result with RequestId(%llu)"), RequestId.Value); - } - } - - void FOculusXRAnchors::UpdateQuerySpacesBinding(AnchorQueryBinding* Binding, FOculusXRUInt64 RequestId, FOculusXRUInt64 Space, FOculusXRUUID UUID) - { - uint64 tempOut; - TArray supportedTypes; - FOculusXRAnchorManager::GetSupportedAnchorComponents(Space, supportedTypes); - - if (supportedTypes.Contains(EOculusXRSpaceComponentType::Locatable)) - { - FOculusXRAnchorManager::SetAnchorComponentStatus(Space, EOculusXRSpaceComponentType::Locatable, true, 0.0f, tempOut); - } - - if (supportedTypes.Contains(EOculusXRSpaceComponentType::Sharable)) - { - FOculusXRAnchorManager::SetAnchorComponentStatus(Space, EOculusXRSpaceComponentType::Sharable, true, 0.0f, tempOut); - } - - if (supportedTypes.Contains(EOculusXRSpaceComponentType::Storable)) - { - FOculusXRAnchorManager::SetAnchorComponentStatus(Space, EOculusXRSpaceComponentType::Storable, true, 0.0f, tempOut); - } - - Binding->Results.Add(FOculusXRSpaceQueryResult(Space, UUID, Binding->Location)); - } - - void FOculusXRAnchors::UpdateGetSharedAnchorsBinding(GetSharedAnchorsBinding* Binding, FOculusXRUInt64 RequestId, FOculusXRUInt64 Space, FOculusXRUUID UUID) - { - uint64 tempOut; - TArray supportedTypes; - FOculusXRAnchorManager::GetSupportedAnchorComponents(Space, supportedTypes); - - if (supportedTypes.Contains(EOculusXRSpaceComponentType::Locatable)) - { - FOculusXRAnchorManager::SetAnchorComponentStatus(Space, EOculusXRSpaceComponentType::Locatable, true, 0.0f, tempOut); - } - - if (supportedTypes.Contains(EOculusXRSpaceComponentType::Sharable)) - { - FOculusXRAnchorManager::SetAnchorComponentStatus(Space, EOculusXRSpaceComponentType::Sharable, true, 0.0f, tempOut); - } - - if (supportedTypes.Contains(EOculusXRSpaceComponentType::Storable)) - { - FOculusXRAnchorManager::SetAnchorComponentStatus(Space, EOculusXRSpaceComponentType::Storable, true, 0.0f, tempOut); - } - - FOculusXRAnchorsDiscoverResult discoveryResult; - discoveryResult.Space = Space; - discoveryResult.UUID = UUID; - Binding->Results.Add(discoveryResult); - } - - void FOculusXRAnchors::HandleAnchorQueryComplete(FOculusXRUInt64 RequestId, EOculusXRAnchorResult::Type Result) - { - OculusXRTelemetry::Events::FAnchorsQueryResponse(static_cast(GetTypeHash(RequestId))) - .SetResult(UOculusXRAnchorBPFunctionLibrary::IsAnchorResultSuccess(Result) ? OculusXRTelemetry::EAction::Success : OculusXRTelemetry::EAction::Fail); - - AnchorQueryBinding* QueryResultPtr = AnchorQueryBindings.Find(RequestId.GetValue()); - GetSharedAnchorsBinding* GetSharedResultPtr = GetSharedAnchorsBindings.Find(RequestId.GetValue()); - if (QueryResultPtr) - { - QuerySpacesComplete(QueryResultPtr, RequestId, Result); - } - else if (GetSharedResultPtr) - { - GetSharedAnchorsComplete(GetSharedResultPtr, RequestId, Result); - } - } - - void FOculusXRAnchors::QuerySpacesComplete(AnchorQueryBinding* Binding, FOculusXRUInt64 RequestId, EOculusXRAnchorResult::Type Result) - { - Binding->Binding.ExecuteIfBound(Result, Binding->Results); - AnchorQueryBindings.Remove(RequestId.GetValue()); - } - - void FOculusXRAnchors::GetSharedAnchorsComplete(GetSharedAnchorsBinding* Binding, FOculusXRUInt64 RequestId, EOculusXRAnchorResult::Type Result) - { - Binding->ResultBinding.ExecuteIfBound(Result, Binding->Results); - GetSharedAnchorsBindings.Remove(RequestId.GetValue()); - } - - void FOculusXRAnchors::HandleAnchorSharingComplete(FOculusXRUInt64 RequestId, EOculusXRAnchorResult::Type Result) - { - ShareAnchorsBinding* ShareAnchorsData = ShareAnchorsBindings.Find(RequestId); - if (ShareAnchorsData == nullptr) - { - UE_LOG(LogOculusXRAnchors, Error, TEXT("Couldn't find binding for share anchors! Request: %llu"), RequestId.GetValue()); - return; - } - - TArray SharedAnchors; - for (auto& WeakAnchor : ShareAnchorsData->SharedAnchors) - { - SharedAnchors.Add(WeakAnchor.Get()); - } - - ShareAnchorsData->Binding.ExecuteIfBound(Result, SharedAnchors, ShareAnchorsData->OculusUserIds); - ShareAnchorsBindings.Remove(RequestId.GetValue()); - } - - void FOculusXRAnchors::HandleAnchorsSaveComplete(FOculusXRUInt64 RequestId, EOculusXRAnchorResult::Type Result) - { - SaveAnchorsBinding SaveData; - if (!SaveAnchorsBindings.RemoveAndCopyValue(RequestId.GetValue(), SaveData)) - { - UE_LOG(LogOculusXRAnchors, Error, TEXT("Couldn't find binding for save anchors! Request: %llu"), RequestId.GetValue()); - return; - } - - // Get all anchors - TArray SavedAnchors; - for (auto& WeakAnchor : SaveData.SavedAnchors) - { - if (WeakAnchor.IsValid()) - { - SavedAnchors.Add(WeakAnchor.Get()); - } - } - - // Failed to save - if (!UOculusXRAnchorBPFunctionLibrary::IsAnchorResultSuccess(Result)) - { - UE_LOG(LogOculusXRAnchors, Warning, TEXT("Failed to save Spatial Anchors. Request: %llu -- Result: %d"), RequestId.GetValue(), Result); - SaveData.Binding.ExecuteIfBound(Result, SavedAnchors); - return; - } - - // Set new storage location - for (auto& SavedAnchor : SavedAnchors) - { - SavedAnchor->SetStoredLocation(EOculusXRSpaceStorageLocation::Local, true); - } - - SaveData.Binding.ExecuteIfBound(Result, SavedAnchors); - } - - void FOculusXRAnchors::HandleAnchorsEraseComplete(FOculusXRUInt64 RequestId, EOculusXRAnchorResult::Type Result) - { - if (EraseAnchorsBindings.Contains(RequestId)) - { - if (EraseAnchorsBindings[RequestId].ErasedAnchors.IsEmpty()) - { - HandleAnchorsEraseByHandleAndUUIDComplete(RequestId, Result); - } - else - { - HandleAnchorsEraseByComponentsComplete(RequestId, Result); - } - } - else - { - UE_LOG(LogOculusXRAnchors, Error, TEXT("Couldn't find a binding for erase anchors! Request: %llu"), RequestId.GetValue()); - } - } - - void FOculusXRAnchors::HandleAnchorsEraseByComponentsComplete(FOculusXRUInt64 RequestId, EOculusXRAnchorResult::Type Result) - { - EraseAnchorsBinding EraseData; - if (!EraseAnchorsBindings.RemoveAndCopyValue(RequestId.GetValue(), EraseData)) - { - UE_LOG(LogOculusXRAnchors, Error, TEXT("Couldn't find binding for erase anchors by component! Request: %llu"), RequestId.GetValue()); - return; - } - - // Get all anchors - TArray ErasedAnchors; - for (auto& WeakAnchor : EraseData.ErasedAnchors) - { - if (WeakAnchor.IsValid()) - { - ErasedAnchors.Add(WeakAnchor.Get()); - } - } - - // Failed to save - if (!UOculusXRAnchorBPFunctionLibrary::IsAnchorResultSuccess(Result)) - { - UE_LOG(LogOculusXRAnchors, Warning, TEXT("Failed to erase Spatial Anchors. Request: %llu -- Result: %d"), RequestId.GetValue(), Result); - EraseData.Binding.ExecuteIfBound(Result, ErasedAnchors, TArray(), TArray()); - return; - } - - // Set new storage location - for (auto& ErasedAnchor : ErasedAnchors) - { - ErasedAnchor->SetStoredLocation(EOculusXRSpaceStorageLocation::Local, false); - } - - EraseData.Binding.ExecuteIfBound(Result, ErasedAnchors, TArray(), TArray()); - } - - void FOculusXRAnchors::HandleAnchorsEraseByHandleAndUUIDComplete(FOculusXRUInt64 RequestId, EOculusXRAnchorResult::Type Result) - { - EraseAnchorsBinding EraseData; - if (!EraseAnchorsBindings.RemoveAndCopyValue(RequestId.GetValue(), EraseData)) - { - UE_LOG(LogOculusXRAnchors, Error, TEXT("Couldn't find binding for erase anchors by Space or UUID! Request: %llu"), RequestId.GetValue()); - return; - } - - // Failed to erase - if (!UOculusXRAnchorBPFunctionLibrary::IsAnchorResultSuccess(Result)) - { - UE_LOG(LogOculusXRAnchors, Warning, TEXT("Failed to erase Spatial Anchors. Request: %llu -- Result: %d"), RequestId.GetValue(), Result); - } - - EraseData.Binding.ExecuteIfBound(Result, TArray(), EraseData.ErasedAnchorsHandles, EraseData.ErasedAnchorsUUIDs); - } - - void FOculusXRAnchors::HandleAnchorsDiscoverResults(FOculusXRUInt64 RequestId, const TArray& Results) - { - AnchorDiscoveryBinding* DiscoveryData = AnchorDiscoveryBindings.Find(RequestId.GetValue()); - if (!DiscoveryData) - { - UE_LOG(LogOculusXRAnchors, Error, TEXT("Couldn't find binding for anchors discovery! Request: %llu"), RequestId.GetValue()); - return; - } - - TArray supportedTypes; - - for (auto& Result : Results) - { - uint64 tempOut; - supportedTypes.Empty(); - FOculusXRAnchorManager::GetSupportedAnchorComponents(Result.Space, supportedTypes); - - if (supportedTypes.Contains(EOculusXRSpaceComponentType::Locatable)) - { - FOculusXRAnchorManager::SetAnchorComponentStatus(Result.Space, EOculusXRSpaceComponentType::Locatable, true, 0.0f, tempOut); - } - - if (supportedTypes.Contains(EOculusXRSpaceComponentType::Sharable)) - { - FOculusXRAnchorManager::SetAnchorComponentStatus(Result.Space, EOculusXRSpaceComponentType::Sharable, true, 0.0f, tempOut); - } - - if (supportedTypes.Contains(EOculusXRSpaceComponentType::Storable)) - { - FOculusXRAnchorManager::SetAnchorComponentStatus(Result.Space, EOculusXRSpaceComponentType::Storable, true, 0.0f, tempOut); - } - } - - DiscoveryData->ResultBinding.ExecuteIfBound(Results); - } - - void FOculusXRAnchors::HandleAnchorsDiscoverComplete(FOculusXRUInt64 RequestId, EOculusXRAnchorResult::Type Result) - { - AnchorDiscoveryBinding DiscoveryData; - if (!AnchorDiscoveryBindings.RemoveAndCopyValue(RequestId.GetValue(), DiscoveryData)) - { - UE_LOG(LogOculusXRAnchors, Error, TEXT("Couldn't find binding for anchors discovery! Request: %llu"), RequestId.GetValue()); - return; - } - DiscoveryData.CompleteBinding.ExecuteIfBound(Result); - } - -} // namespace OculusXRAnchors diff --git a/Plugins/MetaXR/Source/OculusXRAnchors/Private/OculusXRAnchorsEventPolling.cpp b/Plugins/MetaXR/Source/OculusXRAnchors/Private/OculusXRAnchorsEventPolling.cpp deleted file mode 100644 index cb9e621..0000000 --- a/Plugins/MetaXR/Source/OculusXRAnchors/Private/OculusXRAnchorsEventPolling.cpp +++ /dev/null @@ -1,355 +0,0 @@ -// Copyright (c) Meta Platforms, Inc. and affiliates. - -#include "OculusXRAnchorsEventPolling.h" -#include "OculusXRHMD.h" -#include "OculusXRAnchorsModule.h" -#include "OculusXRAnchorManager.h" -#include "OculusXRAnchorDelegates.h" -#include "OculusXRAnchorBPFunctionLibrary.h" -#include "OculusXRAnchorTypesPrivate.h" -#include "OculusXRAnchorsUtil.h" -#include "Engine/Engine.h" -#include - -namespace OculusXRAnchors -{ - template - void GetEventDataAs(ovrpEventDataBuffer& Buffer, T& OutEventData) - { - memcpy(&OutEventData, reinterpret_cast(&Buffer), sizeof(T)); - } - - // For template specializations that use the legacy event padding - constexpr size_t LegacyOffset = 8; - template - void GetLegacyEventDataAs(ovrpEventDataBuffer& Buffer, T& OutEventData) - { - OutEventData.EventType = Buffer.EventType; - memcpy(((uint8*)&OutEventData) + LegacyOffset, Buffer.EventData, sizeof(T) - LegacyOffset); - } - -#define DECLARE_EVENT_DATA_CAST_SPECIALIZATION(T) \ - template <> \ - void GetEventDataAs(ovrpEventDataBuffer& Buffer, T& OutEventData) \ - { \ - GetLegacyEventDataAs(Buffer, OutEventData); \ - } - - DECLARE_EVENT_DATA_CAST_SPECIALIZATION(ovrpEventDataSpatialAnchorCreateComplete); - DECLARE_EVENT_DATA_CAST_SPECIALIZATION(ovrpEventDataSpaceSetStatusComplete); - DECLARE_EVENT_DATA_CAST_SPECIALIZATION(ovrpEventSpaceQueryResults); - DECLARE_EVENT_DATA_CAST_SPECIALIZATION(ovrpEventSpaceQueryComplete); - DECLARE_EVENT_DATA_CAST_SPECIALIZATION(ovrpEventSpaceStorageSaveResult); - DECLARE_EVENT_DATA_CAST_SPECIALIZATION(ovrpEventSpaceListSaveResult); - DECLARE_EVENT_DATA_CAST_SPECIALIZATION(ovrpEventSpaceStorageEraseResult); - DECLARE_EVENT_DATA_CAST_SPECIALIZATION(ovrpEventSpaceShareResult); - DECLARE_EVENT_DATA_CAST_SPECIALIZATION(ovrpEventDataSpaceDiscoveryComplete); - DECLARE_EVENT_DATA_CAST_SPECIALIZATION(ovrpEventSpaceDiscoveryResults); - DECLARE_EVENT_DATA_CAST_SPECIALIZATION(ovrpEventSpacesSaveResult); - DECLARE_EVENT_DATA_CAST_SPECIALIZATION(ovrpEventSpacesEraseResult); - - void FOculusXRAnchorsEventPolling::OnPollEvent(ovrpEventDataBuffer* EventDataBuffer, bool& EventPollResult) - { - ovrpEventDataBuffer& buf = *EventDataBuffer; - EventPollResult = true; - - switch (buf.EventType) - { - case ovrpEventType_SpatialAnchorCreateComplete: - { - ovrpEventDataSpatialAnchorCreateComplete AnchorCreateEvent; - GetEventDataAs(buf, AnchorCreateEvent); - - const FOculusXRUInt64 RequestId(AnchorCreateEvent.requestId); - const FOculusXRUInt64 Space(AnchorCreateEvent.space); - const FOculusXRUUID BPUUID(AnchorCreateEvent.uuid.data); - - FOculusXRAnchorEventDelegates::OculusSpatialAnchorCreateComplete.Broadcast( - RequestId, - GetResultFromOVRResult(AnchorCreateEvent.result), - Space, - BPUUID); - - UE_LOG(LogOculusXRAnchors, Verbose, TEXT("ovrpEventType_SpatialAnchorCreateComplete Request ID: %llu -- Space: %llu -- UUID: %s -- Result: %d"), - RequestId.GetValue(), - Space.GetValue(), - *BPUUID.ToString(), - AnchorCreateEvent.result); - - break; - } - case ovrpEventType_SpaceSetComponentStatusComplete: - { - ovrpEventDataSpaceSetStatusComplete SetStatusEvent; - GetEventDataAs(buf, SetStatusEvent); - - // translate to BP types - const FOculusXRUInt64 RequestId(SetStatusEvent.requestId); - const FOculusXRUInt64 Space(SetStatusEvent.space); - EOculusXRSpaceComponentType BPSpaceComponentType = ConvertToUEComponentType(SetStatusEvent.componentType); - const FOculusXRUUID BPUUID(SetStatusEvent.uuid.data); - const bool bEnabled = (SetStatusEvent.enabled == ovrpBool_True); - - FOculusXRAnchorEventDelegates::OculusSpaceSetComponentStatusComplete.Broadcast( - RequestId, - GetResultFromOVRResult(SetStatusEvent.result), - Space, - BPUUID, - BPSpaceComponentType, - bEnabled); - - UE_LOG(LogOculusXRAnchors, Verbose, TEXT("ovrpEventType_SpaceSetComponentStatusComplete Request ID: %llu -- Type: %d -- Enabled: %d -- Space: %llu -- Result: %d"), - SetStatusEvent.requestId, - SetStatusEvent.componentType, - SetStatusEvent.enabled, - SetStatusEvent.space, - SetStatusEvent.result); - - break; - } - case ovrpEventType_SpaceQueryResults: - { - ovrpEventSpaceQueryResults QueryEvent; - GetEventDataAs(buf, QueryEvent); - - UE_LOG(LogOculusXRAnchors, Verbose, TEXT("ovrpEventType_SpaceQueryResults Request ID: %llu"), QueryEvent.requestId); - - ovrpUInt32 ovrpOutCapacity = 0; - auto getCapacityResult = FOculusXRHMDModule::GetPluginWrapper().RetrieveSpaceQueryResults(&QueryEvent.requestId, 0, &ovrpOutCapacity, nullptr); - - UE_LOG(LogOculusXRAnchors, Verbose, TEXT("Space Query Results: Capacity Request -- Request ID: %llu -- Capacity: %d -- Result: %s"), - QueryEvent.requestId, - ovrpOutCapacity, - *GetStringFromResult(GetResultFromOVRResult(getCapacityResult))); - - std::vector spaceQueryResults(ovrpOutCapacity); - auto getQueryResult = FOculusXRHMDModule::GetPluginWrapper().RetrieveSpaceQueryResults(&QueryEvent.requestId, spaceQueryResults.size(), &ovrpOutCapacity, spaceQueryResults.data()); - - UE_LOG(LogOculusXRAnchors, Verbose, TEXT("Space Query Results: Retrieved Elements -- Request ID: %llu -- Result: %s"), - QueryEvent.requestId, - *GetStringFromResult(GetResultFromOVRResult(getQueryResult))); - - if (OVRP_FAILURE(getCapacityResult) || OVRP_FAILURE(getQueryResult)) - { - UE_LOG(LogOculusXRAnchors, Warning, TEXT("Failed to retrieve anchor data from space query results -- Request ID: %llu"), QueryEvent.requestId); - return; - } - - FOculusXRUInt64 RequestId(QueryEvent.requestId); - FOculusXRAnchorEventDelegates::OculusSpaceQueryResults.Broadcast(RequestId); - - for (const auto& queryResultElement : spaceQueryResults) - { - FOculusXRUInt64 anchorHandle(queryResultElement.space); - FOculusXRUUID uuid(queryResultElement.uuid.data); - - UE_LOG(LogOculusXRAnchors, Verbose, TEXT("ovrpEventType_SpaceQueryResult -- Space: %llu -- UUID: %s"), anchorHandle.Value, *uuid.ToString()); - - FOculusXRAnchorEventDelegates::OculusSpaceQueryResult.Broadcast(RequestId, anchorHandle, uuid); - } - - break; - } - case ovrpEventType_SpaceQueryComplete: - { - ovrpEventSpaceQueryComplete QueryCompleteEvent; - GetEventDataAs(buf, QueryCompleteEvent); - - UE_LOG(LogOculusXRAnchors, Verbose, TEXT("ovrpEventType_SpaceQueryComplete Request ID: %llu -- Result: %d"), QueryCompleteEvent.requestId, QueryCompleteEvent.result); - - // translate to BP types - const FOculusXRUInt64 RequestId(QueryCompleteEvent.requestId); - const bool bSucceeded = QueryCompleteEvent.result >= 0; - - FOculusXRAnchorEventDelegates::OculusSpaceQueryComplete.Broadcast( - RequestId, - GetResultFromOVRResult(QueryCompleteEvent.result)); - - break; - } - case ovrpEventType_SpaceSaveComplete: - { - ovrpEventSpaceStorageSaveResult StorageResult; - GetEventDataAs(buf, StorageResult); - - // translate to BP types - const FOculusXRUUID uuid(StorageResult.uuid.data); - const FOculusXRUInt64 FSpace(StorageResult.space); - const FOculusXRUInt64 FRequest(StorageResult.requestId); - const bool bResult = StorageResult.result >= 0; - - FOculusXRAnchorEventDelegates::OculusSpaceSaveComplete.Broadcast( - FRequest, - FSpace, - bResult, - GetResultFromOVRResult(StorageResult.result), - uuid); - - UE_LOG(LogOculusXRAnchors, Verbose, TEXT("ovrpEventType_SpaceSaveComplete Request ID: %llu -- Space: %llu -- Result: %d"), StorageResult.requestId, StorageResult.space, StorageResult.result); - - break; - } - case ovrpEventType_SpaceListSaveResult: - { - ovrpEventSpaceListSaveResult SpaceListSaveResult; - GetEventDataAs(buf, SpaceListSaveResult); - - FOculusXRUInt64 RequestId(SpaceListSaveResult.requestId); - - UE_LOG(LogOculusXRAnchors, Verbose, TEXT("ovrpEventType_SpaceListSaveResult Request ID: %llu -- Result: %d"), SpaceListSaveResult.requestId, SpaceListSaveResult.result); - FOculusXRAnchorEventDelegates::OculusSpaceListSaveComplete.Broadcast( - RequestId, - GetResultFromOVRResult(SpaceListSaveResult.result)); - - break; - } - case ovrpEventType_SpaceEraseComplete: - { - ovrpEventSpaceStorageEraseResult SpaceEraseEvent; - GetEventDataAs(buf, SpaceEraseEvent); - - // translate to BP types - const FOculusXRUUID uuid(SpaceEraseEvent.uuid.data); - const FOculusXRUInt64 FRequestId(SpaceEraseEvent.requestId); - const EOculusXRSpaceStorageLocation BPLocation = (SpaceEraseEvent.location == ovrpSpaceStorageLocation_Local) ? EOculusXRSpaceStorageLocation::Local : EOculusXRSpaceStorageLocation::Invalid; - - UE_LOG(LogOculusXRAnchors, Verbose, TEXT("ovrpEventType_SpaceEraseComplete Request ID: %llu -- Result: %d -- UUID: %s"), - SpaceEraseEvent.requestId, - SpaceEraseEvent.result, - *UOculusXRAnchorBPFunctionLibrary::AnchorUUIDToString(SpaceEraseEvent.uuid.data)); - - FOculusXRAnchorEventDelegates::OculusSpaceEraseComplete.Broadcast( - FRequestId, - GetResultFromOVRResult(SpaceEraseEvent.result), - uuid, - BPLocation); - break; - } - case ovrpEventType_SpaceShareResult: - { - ovrpEventSpaceShareResult SpaceShareSpaceResult; - GetEventDataAs(buf, SpaceShareSpaceResult); - - FOculusXRUInt64 RequestId(SpaceShareSpaceResult.requestId); - - UE_LOG(LogOculusXRAnchors, Verbose, TEXT("ovrpEventType_SpaceShareSpaceResult Request ID: %llu -- Result: %d"), - SpaceShareSpaceResult.requestId, - SpaceShareSpaceResult.result); - - FOculusXRAnchorEventDelegates::OculusSpaceShareComplete.Broadcast( - RequestId, - GetResultFromOVRResult(SpaceShareSpaceResult.result)); - - break; - } - case ovrpEventType_SpaceDiscoveryComplete: - { - ovrpEventDataSpaceDiscoveryComplete SpaceDiscoveryCompleteEvent; - GetEventDataAs(buf, SpaceDiscoveryCompleteEvent); - - FOculusXRUInt64 RequestId(SpaceDiscoveryCompleteEvent.requestId); - - UE_LOG(LogOculusXRAnchors, Verbose, TEXT("ovrpEventType_SpaceDiscoveryComplete Request ID: %llu -- Result: %d"), - RequestId.GetValue(), - SpaceDiscoveryCompleteEvent.result); - - FOculusXRAnchorEventDelegates::OculusAnchorsDiscoverComplete.Broadcast( - RequestId, - GetResultFromOVRResult(SpaceDiscoveryCompleteEvent.result)); - - break; - } - case ovrpEventType_SpaceDiscoveryResultsAvailable: - { - ovrpEventSpaceDiscoveryResults SpaceDiscoveryResultsEvent; - GetEventDataAs(buf, SpaceDiscoveryResultsEvent); - - FOculusXRUInt64 RequestId(SpaceDiscoveryResultsEvent.requestId); - - ovrpSpaceDiscoveryResults OVRPResults = { 0, 0, nullptr }; - - // get capacity - bool GetCapacityResult = FOculusXRHMDModule::GetPluginWrapper().GetInitialized() && OVRP_SUCCESS(FOculusXRHMDModule::GetPluginWrapper().RetrieveSpaceDiscoveryResults(RequestId, &OVRPResults)); - - UE_LOG(LogOculusXRAnchors, Log, TEXT("ovrpEventType_SpaceDiscoveryResultsAvailable Request ID: %llu -- Capacity: %d -- Result: %d"), - uint64(RequestId), OVRPResults.ResultCountOutput, GetCapacityResult); - - // get data - OVRPResults.ResultCapacityInput = OVRPResults.ResultCountOutput; - std::vector ResultsData(OVRPResults.ResultCountOutput); - OVRPResults.Results = ResultsData.data(); - bool GetDiscoveryResult = FOculusXRHMDModule::GetPluginWrapper().GetInitialized() && OVRP_SUCCESS(FOculusXRHMDModule::GetPluginWrapper().RetrieveSpaceDiscoveryResults(RequestId, &OVRPResults)); - TArray SpaceDiscoveryResults; - - for (auto& Element : ResultsData) - { - UE_LOG(LogOculusXRAnchors, Verbose, TEXT("ovrpEventType_SpaceDiscoveryResultsAvailable Space: %llu -- Result: %d"), - Element.Space, - GetDiscoveryResult); - - SpaceDiscoveryResults.Add(FOculusXRAnchorsDiscoverResult(Element.Space, Element.Uuid.data)); - } - - FOculusXRAnchorEventDelegates::OculusAnchorsDiscoverResults.Broadcast(RequestId, SpaceDiscoveryResults); - - break; - } - case ovrpEventType_SpacesSaveResult: - { - ovrpEventSpacesSaveResult SpacesSaveEvent; - GetEventDataAs(buf, SpacesSaveEvent); - - FOculusXRUInt64 RequestId(SpacesSaveEvent.requestId); - - UE_LOG(LogOculusXRAnchors, Verbose, TEXT("ovrpEventType_SpacesSaveResult Request ID: %llu -- Result: %d"), - RequestId.GetValue(), - SpacesSaveEvent.result); - - FOculusXRAnchorEventDelegates::OculusAnchorsSaveComplete.Broadcast( - RequestId, - GetResultFromOVRResult(SpacesSaveEvent.result)); - - break; - } - case ovrpEventType_SpacesEraseResult: - { - ovrpEventSpacesEraseResult SpacesEraseEvent; - GetEventDataAs(buf, SpacesEraseEvent); - - FOculusXRUInt64 RequestId(SpacesEraseEvent.requestId); - FOculusXRUInt64 Result(SpacesEraseEvent.result); - - UE_LOG(LogOculusXRAnchors, Verbose, TEXT("ovrpEventType_SpacesEraseResult Request ID: %llu -- Result: %d"), - RequestId.GetValue(), - SpacesEraseEvent.result); - - FOculusXRAnchorEventDelegates::OculusAnchorsEraseComplete.Broadcast( - RequestId, - GetResultFromOVRResult(SpacesEraseEvent.result)); - - break; - } - case ovrpEventType_ShareSpacesComplete: - { - ovrpEventShareSpacesComplete EventData; - GetEventDataAs(buf, EventData); - - UE_LOG(LogOculusXRAnchors, Verbose, TEXT("ovrpEventType_ShareSpacesComplete Request ID: %llu -- Result: %s"), - EventData.RequestId, - *GetStringFromResult(GetResultFromOVRResult(EventData.Result))); - - FOculusXRAnchorEventDelegates::OculusShareAnchorsComplete.Broadcast( - EventData.RequestId, - GetResultFromOVRResult(EventData.Result)); - - break; - } - case ovrpEventType_None: - default: - { - EventPollResult = false; - break; - } - } - } -} // namespace OculusXRAnchors diff --git a/Plugins/MetaXR/Source/OculusXRAnchors/Private/OculusXRAnchorsEventPolling.h b/Plugins/MetaXR/Source/OculusXRAnchors/Private/OculusXRAnchorsEventPolling.h deleted file mode 100644 index 80c52f9..0000000 --- a/Plugins/MetaXR/Source/OculusXRAnchors/Private/OculusXRAnchorsEventPolling.h +++ /dev/null @@ -1,16 +0,0 @@ -// Copyright (c) Meta Platforms, Inc. and affiliates. - -#pragma once - -#include "OculusXRAnchorTypes.h" -#include "OculusXRPluginWrapper.h" - -namespace OculusXRAnchors -{ - struct FOculusXRAnchorsEventPolling - { - public: - static void OnPollEvent(ovrpEventDataBuffer* EventDataBuffer, bool& EventPollResult); - }; - -} // namespace OculusXRAnchors diff --git a/Plugins/MetaXR/Source/OculusXRAnchors/Private/OculusXRAnchorsModule.cpp b/Plugins/MetaXR/Source/OculusXRAnchors/Private/OculusXRAnchorsModule.cpp deleted file mode 100644 index 724f8fd..0000000 --- a/Plugins/MetaXR/Source/OculusXRAnchors/Private/OculusXRAnchorsModule.cpp +++ /dev/null @@ -1,109 +0,0 @@ -// @lint-ignore-every LICENSELINT -// Copyright Epic Games, Inc. All Rights Reserved. - -#include "OculusXRAnchorsModule.h" - -#if OCULUS_ANCHORS_SUPPORTED_PLATFORMS -#include "OculusXRHMDModule.h" -#include "OculusXRHMD.h" -#include "OculusXRAnchors.h" -#include "OculusXRAnchorsEventPolling.h" -#include "OculusXRAnchorComponents.h" - -DEFINE_LOG_CATEGORY(LogOculusXRAnchors); - -#define LOCTEXT_NAMESPACE "OculusXRAnchors" - -//------------------------------------------------------------------------------------------------- -// FOculusXRAnchorsModule -//------------------------------------------------------------------------------------------------- -void FOculusXRAnchorsModule::StartupModule() -{ - AnchorsXR = MakeShareable(new XRAnchors::FAnchorsXR()); - AnchorsXR->RegisterAsOpenXRExtension(); - - AddCreateAnchorComponentInterface(this); - Anchors.Initialize(); - - FCoreDelegates::OnPostEngineInit.AddRaw(this, &FOculusXRAnchorsModule::OnPostEngineInit); -} - -void FOculusXRAnchorsModule::ShutdownModule() -{ - Anchors.Teardown(); -} - -void FOculusXRAnchorsModule::OnPostEngineInit() -{ - if (IsRunningCommandlet()) - { - return; - } - - if (!GEngine) - { - return; - } - - OculusXRHMD::FOculusXRHMD* HMD = OculusXRHMD::FOculusXRHMD::GetOculusXRHMD(); - if (!HMD) - { - UE_LOG(LogOculusXRAnchors, Warning, TEXT("Unable to retrieve OculusXRHMD, cannot add event polling delegates.")); - return; - } - - HMD->AddEventPollingDelegate(OculusXRHMD::FOculusXRHMDEventPollingDelegate::CreateStatic(&OculusXRAnchors::FOculusXRAnchorsEventPolling::OnPollEvent)); -} - -void FOculusXRAnchorsModule::AddCreateAnchorComponentInterface(IOculusXRCreateAnchorComponent* CastInterface) -{ - CreateComponentInterfaces.AddUnique(CastInterface); -} - -void FOculusXRAnchorsModule::RemoveCreateAnchorComponentInterface(IOculusXRCreateAnchorComponent* CastInterface) -{ - CreateComponentInterfaces.Remove(CastInterface); -} - -UOculusXRBaseAnchorComponent* FOculusXRAnchorsModule::CreateAnchorComponent(uint64 AnchorHandle, EOculusXRSpaceComponentType Type, UObject* Outer) -{ - for (auto& it : CreateComponentInterfaces) - { - auto comp = it->TryCreateAnchorComponent(AnchorHandle, Type, Outer); - if (IsValid(comp)) - { - return comp; - } - } - - return nullptr; -} - -UOculusXRBaseAnchorComponent* FOculusXRAnchorsModule::TryCreateAnchorComponent(uint64 AnchorHandle, EOculusXRSpaceComponentType Type, UObject* Outer) -{ - switch (Type) - { - case EOculusXRSpaceComponentType::Locatable: - return UOculusXRBaseAnchorComponent::FromSpace(AnchorHandle, Outer); - case EOculusXRSpaceComponentType::SpaceContainer: - return UOculusXRBaseAnchorComponent::FromSpace(AnchorHandle, Outer); - case EOculusXRSpaceComponentType::Sharable: - return UOculusXRBaseAnchorComponent::FromSpace(AnchorHandle, Outer); - case EOculusXRSpaceComponentType::Storable: - return UOculusXRBaseAnchorComponent::FromSpace(AnchorHandle, Outer); - default: - return nullptr; - } -} - -OculusXRAnchors::FOculusXRAnchors* FOculusXRAnchorsModule::GetOculusAnchors() -{ - FOculusXRAnchorsModule& Module = FModuleManager::LoadModuleChecked(TEXT("OculusXRAnchors")); - return &Module.Anchors; -} - -#endif // OCULUS_ANCHORS_SUPPORTED_PLATFORMS - -IMPLEMENT_MODULE(FOculusXRAnchorsModule, OculusXRAnchors) - -#undef LOCTEXT_NAMESPACE diff --git a/Plugins/MetaXR/Source/OculusXRAnchors/Private/OculusXRAnchorsModule.h b/Plugins/MetaXR/Source/OculusXRAnchors/Private/OculusXRAnchorsModule.h deleted file mode 100644 index ed90c4b..0000000 --- a/Plugins/MetaXR/Source/OculusXRAnchors/Private/OculusXRAnchorsModule.h +++ /dev/null @@ -1,63 +0,0 @@ -// @lint-ignore-every LICENSELINT -// Copyright Epic Games, Inc. All Rights Reserved. - -#pragma once -#include "IOculusXRAnchorsModule.h" -#include "OculusXRAnchors.h" -#include "openxr/OculusXRAnchorsXR.h" - -#define LOCTEXT_NAMESPACE "OculusAnchors" - -//------------------------------------------------------------------------------------------------- -// FOculusXRAnchorsModule -//------------------------------------------------------------------------------------------------- - -#if OCULUS_ANCHORS_SUPPORTED_PLATFORMS - -DECLARE_LOG_CATEGORY_EXTERN(LogOculusXRAnchors, Log, All); - -typedef TSharedPtr FAnchorsXRPtr; - -class FOculusXRAnchorsModule : public IOculusXRAnchorsModule, IOculusXRCreateAnchorComponent -{ -public: - static inline FOculusXRAnchorsModule& Get() - { - return FModuleManager::LoadModuleChecked("OculusXRAnchors"); - } - - virtual ~FOculusXRAnchorsModule() = default; - - // IModuleInterface interface - virtual void StartupModule() override; - virtual void ShutdownModule() override; - - void OnPostEngineInit(); - - // IOculusXRAnchorsModule - virtual void AddCreateAnchorComponentInterface(IOculusXRCreateAnchorComponent* CastInterface) override; - virtual void RemoveCreateAnchorComponentInterface(IOculusXRCreateAnchorComponent* CastInterface) override; - virtual UOculusXRBaseAnchorComponent* CreateAnchorComponent(uint64 AnchorHandle, EOculusXRSpaceComponentType Type, UObject* Outer) override; - - // IOculusXRAnchorComponentCaster - virtual UOculusXRBaseAnchorComponent* TryCreateAnchorComponent(uint64 AnchorHandle, EOculusXRSpaceComponentType Type, UObject* Outer) override; - - static OculusXRAnchors::FOculusXRAnchors* GetOculusAnchors(); - - FAnchorsXRPtr GetXrAnchors() { return AnchorsXR; } - -private: - TArray CreateComponentInterfaces; - OculusXRAnchors::FOculusXRAnchors Anchors; - FAnchorsXRPtr AnchorsXR; -}; - -#else // OCULUS_ANCHORS_SUPPORTED_PLATFORMS - -class FOculusXRAnchorsModule : public FDefaultModuleImpl -{ -}; - -#endif // OCULUS_ANCHORS_SUPPORTED_PLATFORMS - -#undef LOCTEXT_NAMESPACE diff --git a/Plugins/MetaXR/Source/OculusXRAnchors/Private/OculusXRAnchorsPrivate.h b/Plugins/MetaXR/Source/OculusXRAnchors/Private/OculusXRAnchorsPrivate.h deleted file mode 100644 index 0f410f5..0000000 --- a/Plugins/MetaXR/Source/OculusXRAnchors/Private/OculusXRAnchorsPrivate.h +++ /dev/null @@ -1,5 +0,0 @@ -// Copyright (c) Meta Platforms, Inc. and affiliates. - -#pragma once - -#include "OculusXRAnchorsModule.h" diff --git a/Plugins/MetaXR/Source/OculusXRAnchors/Private/OculusXRAnchorsUtil.cpp b/Plugins/MetaXR/Source/OculusXRAnchors/Private/OculusXRAnchorsUtil.cpp deleted file mode 100644 index 595287e..0000000 --- a/Plugins/MetaXR/Source/OculusXRAnchors/Private/OculusXRAnchorsUtil.cpp +++ /dev/null @@ -1,240 +0,0 @@ -// Copyright (c) Meta Platforms, Inc. and affiliates. - -#include "OculusXRAnchorsUtil.h" -#include - -namespace OculusXRAnchors -{ - EOculusXRAnchorResult::Type GetResultFromOVRResult(ovrpResult OVRResult) - { - switch (OVRResult) - { - case ovrpSuccess: - return EOculusXRAnchorResult::Success; - case ovrpWarning_BoundaryVisibilitySuppressionNotAllowed: - return EOculusXRAnchorResult::Warning_BoundaryVisibilitySuppressionNotAllowed; - - case ovrpFailure: - return EOculusXRAnchorResult::Failure; - case ovrpFailure_InvalidParameter: - return EOculusXRAnchorResult::Failure_InvalidParameter; - case ovrpFailure_NotInitialized: - return EOculusXRAnchorResult::Failure_NotInitialized; - case ovrpFailure_InvalidOperation: - return EOculusXRAnchorResult::Failure_InvalidOperation; - case ovrpFailure_Unsupported: - return EOculusXRAnchorResult::Failure_Unsupported; - case ovrpFailure_NotYetImplemented: - return EOculusXRAnchorResult::Failure_NotYetImplemented; - case ovrpFailure_OperationFailed: - return EOculusXRAnchorResult::Failure_OperationFailed; - case ovrpFailure_InsufficientSize: - return EOculusXRAnchorResult::Failure_InsufficientSize; - case ovrpFailure_DataIsInvalid: - return EOculusXRAnchorResult::Failure_DataIsInvalid; - case ovrpFailure_DeprecatedOperation: - return EOculusXRAnchorResult::Failure_DeprecatedOperation; - case ovrpFailure_ErrorLimitReached: - return EOculusXRAnchorResult::Failure_ErrorLimitReached; - case ovrpFailure_ErrorInitializationFailed: - return EOculusXRAnchorResult::Failure_ErrorInitializationFailed; - - // Query Spaces - case ovrpFailure_SpaceCloudStorageDisabled: - return EOculusXRAnchorResult::Failure_SpaceCloudStorageDisabled; - case ovrpFailure_SpaceMappingInsufficient: - return EOculusXRAnchorResult::Failure_SpaceMappingInsufficient; - case ovrpFailure_SpaceLocalizationFailed: - return EOculusXRAnchorResult::Failure_SpaceLocalizationFailed; - case ovrpFailure_SpaceNetworkTimeout: - return EOculusXRAnchorResult::Failure_SpaceNetworkTimeout; - case ovrpFailure_SpaceNetworkRequestFailed: - return EOculusXRAnchorResult::Failure_SpaceNetworkRequestFailed; - - // APD - case ovrpFailure_SpaceInsufficientResources: - return EOculusXRAnchorResult::Failure_SpaceInsufficientResources; - case ovrpFailure_SpaceStorageAtCapacity: - return EOculusXRAnchorResult::Failure_SpaceStorageAtCapacity; - case ovrpFailure_SpaceInsufficientView: - return EOculusXRAnchorResult::Failure_SpaceInsufficientView; - case ovrpFailure_SpacePermissionInsufficient: - return EOculusXRAnchorResult::Failure_SpacePermissionInsufficient; - case ovrpFailure_SpaceRateLimited: - return EOculusXRAnchorResult::Failure_SpaceRateLimited; - case ovrpFailure_SpaceTooDark: - return EOculusXRAnchorResult::Failure_SpaceTooDark; - case ovrpFailure_SpaceTooBright: - return EOculusXRAnchorResult::Failure_SpaceTooBright; - - default: - return OVRP_SUCCESS(OVRResult) ? EOculusXRAnchorResult::Success : EOculusXRAnchorResult::Failure; - } - } - - EOculusXRAnchorResult::Type GetResultFromXrResult(XrResult Result) - { - switch (Result) - { - case XR_SUCCESS: - return EOculusXRAnchorResult::Success; - // case XR_BOUNDARY_VISIBILITY_SUPPRESSION_NOT_ALLOWED_META: - // return EOculusXRAnchorResult::Warning_BoundaryVisibilitySuppressionNotAllowed; - - case XR_ERROR_VALIDATION_FAILURE: - return EOculusXRAnchorResult::Failure_InvalidParameter; - case XR_ERROR_RUNTIME_FAILURE: - return EOculusXRAnchorResult::Failure_OperationFailed; - case XR_ERROR_FEATURE_UNSUPPORTED: - return EOculusXRAnchorResult::Failure_Unsupported; - case XR_ERROR_FUNCTION_UNSUPPORTED: - return EOculusXRAnchorResult::Failure_NotYetImplemented; - case XR_ERROR_SIZE_INSUFFICIENT: - return EOculusXRAnchorResult::Failure_InsufficientSize; - case XR_ERROR_LIMIT_REACHED: - return EOculusXRAnchorResult::Failure_ErrorLimitReached; - case XR_ERROR_INITIALIZATION_FAILED: - return EOculusXRAnchorResult::Failure_ErrorInitializationFailed; - - // Query Spaces - case XR_ERROR_SPACE_CLOUD_STORAGE_DISABLED_FB: - return EOculusXRAnchorResult::Failure_SpaceCloudStorageDisabled; - case XR_ERROR_SPACE_MAPPING_INSUFFICIENT_FB: - return EOculusXRAnchorResult::Failure_SpaceMappingInsufficient; - case XR_ERROR_SPACE_LOCALIZATION_FAILED_FB: - return EOculusXRAnchorResult::Failure_SpaceLocalizationFailed; - case XR_ERROR_SPACE_NETWORK_TIMEOUT_FB: - return EOculusXRAnchorResult::Failure_SpaceNetworkTimeout; - case XR_ERROR_SPACE_NETWORK_REQUEST_FAILED_FB: - return EOculusXRAnchorResult::Failure_SpaceNetworkRequestFailed; - - // APD - case XR_ERROR_SPACE_INSUFFICIENT_RESOURCES_META: - return EOculusXRAnchorResult::Failure_SpaceInsufficientResources; - case XR_ERROR_SPACE_STORAGE_AT_CAPACITY_META: - return EOculusXRAnchorResult::Failure_SpaceStorageAtCapacity; - case XR_ERROR_SPACE_INSUFFICIENT_VIEW_META: - return EOculusXRAnchorResult::Failure_SpaceInsufficientView; - case XR_ERROR_SPACE_PERMISSION_INSUFFICIENT_META: - return EOculusXRAnchorResult::Failure_SpacePermissionInsufficient; - case XR_ERROR_SPACE_RATE_LIMITED_META: - return EOculusXRAnchorResult::Failure_SpaceRateLimited; - case XR_ERROR_SPACE_TOO_DARK_META: - return EOculusXRAnchorResult::Failure_SpaceTooDark; - case XR_ERROR_SPACE_TOO_BRIGHT_META: - return EOculusXRAnchorResult::Failure_SpaceTooBright; - - default: - return XR_SUCCEEDED(Result) ? EOculusXRAnchorResult::Success : EOculusXRAnchorResult::Failure; - } - } - - EOculusXRSpaceComponentType ToComponentType(XrSpaceComponentTypeFB XrType) - { - switch (XrType) - { - case XR_SPACE_COMPONENT_TYPE_LOCATABLE_FB: - return EOculusXRSpaceComponentType::Locatable; - case XR_SPACE_COMPONENT_TYPE_STORABLE_FB: - return EOculusXRSpaceComponentType::Storable; - case XR_SPACE_COMPONENT_TYPE_SHARABLE_FB: - return EOculusXRSpaceComponentType::Sharable; - case XR_SPACE_COMPONENT_TYPE_BOUNDED_2D_FB: - return EOculusXRSpaceComponentType::ScenePlane; - case XR_SPACE_COMPONENT_TYPE_BOUNDED_3D_FB: - return EOculusXRSpaceComponentType::SceneVolume; - case XR_SPACE_COMPONENT_TYPE_SEMANTIC_LABELS_FB: - return EOculusXRSpaceComponentType::SemanticClassification; - case XR_SPACE_COMPONENT_TYPE_ROOM_LAYOUT_FB: - return EOculusXRSpaceComponentType::RoomLayout; - case XR_SPACE_COMPONENT_TYPE_SPACE_CONTAINER_FB: - return EOculusXRSpaceComponentType::SpaceContainer; - case XR_SPACE_COMPONENT_TYPE_TRIANGLE_MESH_META: - return EOculusXRSpaceComponentType::TriangleMesh; - default: - return EOculusXRSpaceComponentType::Undefined; - } - } - - XrSpaceComponentTypeFB ToComponentType(EOculusXRSpaceComponentType ComponentType) - { - switch (ComponentType) - { - case EOculusXRSpaceComponentType::Locatable: - return XR_SPACE_COMPONENT_TYPE_LOCATABLE_FB; - case EOculusXRSpaceComponentType::Storable: - return XR_SPACE_COMPONENT_TYPE_STORABLE_FB; - case EOculusXRSpaceComponentType::Sharable: - return XR_SPACE_COMPONENT_TYPE_SHARABLE_FB; - case EOculusXRSpaceComponentType::ScenePlane: - return XR_SPACE_COMPONENT_TYPE_BOUNDED_2D_FB; - case EOculusXRSpaceComponentType::SceneVolume: - return XR_SPACE_COMPONENT_TYPE_BOUNDED_3D_FB; - case EOculusXRSpaceComponentType::SemanticClassification: - return XR_SPACE_COMPONENT_TYPE_SEMANTIC_LABELS_FB; - case EOculusXRSpaceComponentType::RoomLayout: - return XR_SPACE_COMPONENT_TYPE_ROOM_LAYOUT_FB; - case EOculusXRSpaceComponentType::SpaceContainer: - return XR_SPACE_COMPONENT_TYPE_SPACE_CONTAINER_FB; - case EOculusXRSpaceComponentType::TriangleMesh: - return XR_SPACE_COMPONENT_TYPE_TRIANGLE_MESH_META; - default: - return XR_SPACE_COMPONENT_TYPE_MAX_ENUM_FB; - } - } - - EOculusXRSpaceStorageLocation ToStorageLocation(XrSpaceStorageLocationFB XrStorageLocation) - { - switch (XrStorageLocation) - { - case XR_SPACE_STORAGE_LOCATION_LOCAL_FB: - return EOculusXRSpaceStorageLocation::Local; - case XR_SPACE_STORAGE_LOCATION_CLOUD_FB: - return EOculusXRSpaceStorageLocation::Cloud; - default: - return EOculusXRSpaceStorageLocation::Invalid; - } - } - - XrSpaceStorageLocationFB ToStorageLocation(EOculusXRSpaceStorageLocation StorageLocation) - { - switch (StorageLocation) - { - case EOculusXRSpaceStorageLocation::Local: - return XR_SPACE_STORAGE_LOCATION_LOCAL_FB; - case EOculusXRSpaceStorageLocation::Cloud: - return XR_SPACE_STORAGE_LOCATION_CLOUD_FB; - default: - return XR_SPACE_STORAGE_LOCATION_INVALID_FB; - } - } - - FOculusXRUUID ToUuid(const XrUuidEXT& XrUuid) - { - return FOculusXRUUID(XrUuid.data); - } - - XrUuidEXT ToUuid(const FOculusXRUUID& Uuid) - { - XrUuidEXT result; - FMemory::Memcpy(result.data, Uuid.UUIDBytes); - return result; - } - - FString GetStringFromResult(EOculusXRAnchorResult::Type Result) - { - return UEnum::GetDisplayValueAsText(Result).ToString(); - } - - FString ToString(EOculusXRSpaceComponentType ComponentType) - { - // Todo: More performant to use const strings and a case statement? - return UEnum::GetDisplayValueAsText(ComponentType).ToString(); - } - - FString ToString(EOculusXRSpaceStorageLocation StorageLocation) - { - // Todo: More performant to use const strings and a case statement? - return UEnum::GetDisplayValueAsText(StorageLocation).ToString(); - } -} // namespace OculusXRAnchors diff --git a/Plugins/MetaXR/Source/OculusXRAnchors/Private/OculusXRAnchorsUtil.h b/Plugins/MetaXR/Source/OculusXRAnchors/Private/OculusXRAnchorsUtil.h deleted file mode 100644 index 05f2b5a..0000000 --- a/Plugins/MetaXR/Source/OculusXRAnchors/Private/OculusXRAnchorsUtil.h +++ /dev/null @@ -1,26 +0,0 @@ -// Copyright (c) Meta Platforms, Inc. and affiliates. - -#pragma once - -#include "openxr/OculusXRAnchorsXRIncludes.h" -#include "OculusXRAnchorTypes.h" -#include "OculusXRHMDPrivate.h" - -namespace OculusXRAnchors -{ - OCULUSXRANCHORS_API EOculusXRAnchorResult::Type GetResultFromOVRResult(ovrpResult OVRResult); - OCULUSXRANCHORS_API EOculusXRAnchorResult::Type GetResultFromXrResult(XrResult Result); - - OCULUSXRANCHORS_API EOculusXRSpaceComponentType ToComponentType(XrSpaceComponentTypeFB XrComponentType); - OCULUSXRANCHORS_API XrSpaceComponentTypeFB ToComponentType(EOculusXRSpaceComponentType ComponentType); - - OCULUSXRANCHORS_API EOculusXRSpaceStorageLocation ToStorageLocation(XrSpaceStorageLocationFB XrStorageLocation); - OCULUSXRANCHORS_API XrSpaceStorageLocationFB ToStorageLocation(EOculusXRSpaceStorageLocation StorageLocation); - - OCULUSXRANCHORS_API FOculusXRUUID ToUuid(const XrUuidEXT& XrUuid); - OCULUSXRANCHORS_API XrUuidEXT ToUuid(const FOculusXRUUID& Uuid); - - OCULUSXRANCHORS_API FString GetStringFromResult(EOculusXRAnchorResult::Type Result); - OCULUSXRANCHORS_API FString ToString(EOculusXRSpaceComponentType ComponentType); - OCULUSXRANCHORS_API FString ToString(EOculusXRSpaceStorageLocation StorageLocation); -} // namespace OculusXRAnchors diff --git a/Plugins/MetaXR/Source/OculusXRAnchors/Private/OculusXRSpatialAnchorComponent.cpp b/Plugins/MetaXR/Source/OculusXRAnchors/Private/OculusXRSpatialAnchorComponent.cpp deleted file mode 100644 index 5982856..0000000 --- a/Plugins/MetaXR/Source/OculusXRAnchors/Private/OculusXRSpatialAnchorComponent.cpp +++ /dev/null @@ -1,28 +0,0 @@ -// Copyright (c) Meta Platforms, Inc. and affiliates. - -#include "OculusXRSpatialAnchorComponent.h" - -DEFINE_LOG_CATEGORY(LogOculusSpatialAnchor); - -UOculusXRSpatialAnchorComponent::UOculusXRSpatialAnchorComponent(const FObjectInitializer& ObjectInitializer) - : Super(ObjectInitializer) -{ -} - -bool UOculusXRSpatialAnchorComponent::Create(const FTransform& NewAnchorTransform, AActor* OwningActor, const FOculusXRSpatialAnchorCreateDelegate& Callback) -{ - EOculusXRAnchorResult::Type AnchorResult; - return OculusXRAnchors::FOculusXRAnchors::CreateSpatialAnchor(NewAnchorTransform, OwningActor, Callback, AnchorResult); -} - -bool UOculusXRSpatialAnchorComponent::Erase(const FOculusXRAnchorEraseDelegate& Callback) -{ - EOculusXRAnchorResult::Type AnchorResult; - return OculusXRAnchors::FOculusXRAnchors::EraseAnchor(this, Callback, AnchorResult); -} - -bool UOculusXRSpatialAnchorComponent::Save(EOculusXRSpaceStorageLocation Location, const FOculusXRAnchorSaveDelegate& Callback) -{ - EOculusXRAnchorResult::Type AnchorResult; - return OculusXRAnchors::FOculusXRAnchors::SaveAnchor(this, Location, Callback, AnchorResult); -} diff --git a/Plugins/MetaXR/Source/OculusXRAnchors/Private/OculusXRSpatialAnchorManager.cpp b/Plugins/MetaXR/Source/OculusXRAnchors/Private/OculusXRSpatialAnchorManager.cpp deleted file mode 100644 index 2fd78b7..0000000 --- a/Plugins/MetaXR/Source/OculusXRAnchors/Private/OculusXRSpatialAnchorManager.cpp +++ /dev/null @@ -1,13 +0,0 @@ -// Copyright (c) Meta Platforms, Inc. and affiliates. - -#include "OculusXRSpatialAnchorManager.h" -#include "OculusXRAnchorBPFunctionLibrary.h" - -namespace OculusXRAnchors -{ - bool FOculusXRSpatialAnchorManager::CreateSpatialAnchor(const FTransform& InTransform, uint64& OutRequestId) - { - EOculusXRAnchorResult::Type Result = CreateAnchor(InTransform, OutRequestId, FTransform::Identity); - return UOculusXRAnchorBPFunctionLibrary::IsAnchorResultSuccess(Result); - } -} // namespace OculusXRAnchors diff --git a/Plugins/MetaXR/Source/OculusXRAnchors/Private/OculusXRSpatialAnchorManager.h b/Plugins/MetaXR/Source/OculusXRAnchors/Private/OculusXRSpatialAnchorManager.h deleted file mode 100644 index 5f7e9dd..0000000 --- a/Plugins/MetaXR/Source/OculusXRAnchors/Private/OculusXRSpatialAnchorManager.h +++ /dev/null @@ -1,19 +0,0 @@ -// Copyright (c) Meta Platforms, Inc. and affiliates. - -#pragma once - -#include "CoreMinimal.h" -#include "OculusXRAnchorManager.h" - -namespace OculusXRAnchors -{ - struct FOculusXRSpatialAnchorManager : FOculusXRAnchorManager - { - FOculusXRSpatialAnchorManager() - : FOculusXRAnchorManager() - { - } - - static bool CreateSpatialAnchor(const FTransform& InTransform, uint64& OutRequestId); - }; -} // namespace OculusXRAnchors diff --git a/Plugins/MetaXR/Source/OculusXRAnchors/Private/OculusXRTelemetryAnchorsEvents.h b/Plugins/MetaXR/Source/OculusXRAnchors/Private/OculusXRTelemetryAnchorsEvents.h deleted file mode 100644 index a7c8402..0000000 --- a/Plugins/MetaXR/Source/OculusXRAnchors/Private/OculusXRTelemetryAnchorsEvents.h +++ /dev/null @@ -1,24 +0,0 @@ -// Copyright (c) Meta Platforms, Inc. and affiliates. - -#pragma once - -#include "OculusXRTelemetry.h" - -namespace OculusXRTelemetry::Events -{ - using FAnchorsCreate = TMarker<191967648>; - using FAnchorsCreateRequest = TScopedMarker; - using FAnchorsCreateResponse = TScopedMarker; - using FAnchorsSetComponentStatus = TMarker<191962330>; - using FAnchorsSetComponentStatusRequest = TScopedMarker; - using FAnchorsSetComponentStatusResponse = TScopedMarker; - using FAnchorsSave = TMarker<191961984>; - using FAnchorsSaveRequest = TScopedMarker; - using FAnchorsSaveResponse = TScopedMarker; - using FAnchorsQuery = TMarker<191959258>; - using FAnchorsQueryRequest = TScopedMarker; - using FAnchorsQueryResponse = TScopedMarker; - using FAnchorsErase = TMarker<191960591>; - using FAnchorsEraseRequest = TScopedMarker; - using FAnchorsEraseResponse = TScopedMarker; -} // namespace OculusXRTelemetry::Events diff --git a/Plugins/MetaXR/Source/OculusXRAnchors/Private/openxr/OculusXRAnchorsXR.cpp b/Plugins/MetaXR/Source/OculusXRAnchors/Private/openxr/OculusXRAnchorsXR.cpp deleted file mode 100644 index 0aae07b..0000000 --- a/Plugins/MetaXR/Source/OculusXRAnchors/Private/openxr/OculusXRAnchorsXR.cpp +++ /dev/null @@ -1,1352 +0,0 @@ -// Copyright (c) Meta Platforms, Inc. and affiliates. - -#include "OculusXRAnchorsXR.h" -#include "OpenXRCore.h" -#include "OpenXRHMD.h" -#include "IOpenXRHMDModule.h" -#include "OpenXR/OculusXROpenXRUtilities.h" -#include "OculusXRAnchorsModule.h" -#include "OculusXRHMDPrivate.h" -#include "OculusXRAnchorDelegates.h" -#include "OculusXRAnchorsUtil.h" - -#define LOCTEXT_NAMESPACE "OculusXRAnchors" - -namespace XRAnchors -{ - PFN_xrCreateSpatialAnchorFB xrCreateSpatialAnchorFB = nullptr; - PFN_xrSetSpaceComponentStatusFB xrSetSpaceComponentStatusFB = nullptr; - PFN_xrGetSpaceComponentStatusFB xrGetSpaceComponentStatusFB = nullptr; - PFN_xrEnumerateSpaceSupportedComponentsFB xrEnumerateSpaceSupportedComponentsFB = nullptr; - PFN_xrGetSpaceUuidFB xrGetSpaceUuidFB = nullptr; - - PFN_xrGetSpaceContainerFB xrGetSpaceContainerFB = nullptr; - - PFN_xrQuerySpacesFB xrQuerySpacesFB = nullptr; - PFN_xrRetrieveSpaceQueryResultsFB xrRetrieveSpaceQueryResultsFB = nullptr; - - PFN_xrShareSpacesFB xrShareSpacesFB = nullptr; - - PFN_xrShareSpacesMETA xrShareSpacesMETA = nullptr; - - PFN_xrSaveSpaceFB xrSaveSpaceFB = nullptr; - PFN_xrEraseSpaceFB xrEraseSpaceFB = nullptr; - - PFN_xrSaveSpaceListFB xrSaveSpaceListFB = nullptr; - - PFN_xrCreateSpaceUserFB xrCreateSpaceUserFB = nullptr; - PFN_xrDestroySpaceUserFB xrDestroySpaceUserFB = nullptr; - PFN_xrGetSpaceUserIdFB xrGetSpaceUserIdFB = nullptr; - - PFN_xrSaveSpacesMETA xrSaveSpacesMETA = nullptr; - PFN_xrEraseSpacesMETA xrEraseSpacesMETA = nullptr; - - PFN_xrDiscoverSpacesMETA xrDiscoverSpacesMETA = nullptr; - PFN_xrRetrieveSpaceDiscoveryResultsMETA xrRetrieveSpaceDiscoveryResultsMETA = nullptr; - - FAnchorsXR::FAnchorsXR() - : bExtAnchorsEnabled(false) - , bExtContainerEnabled(false) - , bExtQueryEnabled(false) - , bExtSharingEnabled(false) - , bExtStorageEnabled(false) - , bExtStorageBatchEnabled(false) - , bExtUserEnabled(false) - , bExtDiscoveryEnabled(false) - , bExtPersistenceEnabled(false) - , bExtSharingMetaEnabled(false) - , bExtGroupSharingEnabled(false) - , OpenXRHMD(nullptr) - { - } - - FAnchorsXR::~FAnchorsXR() - { - } - - void FAnchorsXR::RegisterAsOpenXRExtension() - { -#if defined(WITH_OCULUS_BRANCH) - // Feature not enabled on Marketplace build. Currently only for the meta fork - RegisterOpenXRExtensionModularFeature(); -#endif - } - - bool FAnchorsXR::GetRequiredExtensions(TArray& OutExtensions) - { - OutExtensions.Add(XR_FB_SPATIAL_ENTITY_EXTENSION_NAME); - return true; - } - - bool FAnchorsXR::GetOptionalExtensions(TArray& OutExtensions) - { - OutExtensions.Add(XR_FB_SPATIAL_ENTITY_CONTAINER_EXTENSION_NAME); - OutExtensions.Add(XR_FB_SPATIAL_ENTITY_QUERY_EXTENSION_NAME); - OutExtensions.Add(XR_FB_SPATIAL_ENTITY_SHARING_EXTENSION_NAME); - OutExtensions.Add(XR_FB_SPATIAL_ENTITY_STORAGE_EXTENSION_NAME); - OutExtensions.Add(XR_FB_SPATIAL_ENTITY_STORAGE_BATCH_EXTENSION_NAME); - OutExtensions.Add(XR_FB_SPATIAL_ENTITY_USER_EXTENSION_NAME); - OutExtensions.Add(XR_META_SPATIAL_ENTITY_DISCOVERY_EXTENSION_NAME); - OutExtensions.Add(XR_META_SPATIAL_ENTITY_PERSISTENCE_EXTENSION_NAME); - OutExtensions.Add(XR_META_SPATIAL_ENTITY_SHARING_EXTENSION_NAME); - OutExtensions.Add(XR_META_SPATIAL_ENTITY_GROUP_SHARING_EXTENSION_NAME); - return true; - } - - const void* FAnchorsXR::OnCreateInstance(class IOpenXRHMDModule* InModule, const void* InNext) - { - if (InModule != nullptr) - { - bExtAnchorsEnabled = InModule->IsExtensionEnabled(XR_FB_SPATIAL_ENTITY_EXTENSION_NAME); - bExtContainerEnabled = InModule->IsExtensionEnabled(XR_FB_SPATIAL_ENTITY_CONTAINER_EXTENSION_NAME); - bExtQueryEnabled = InModule->IsExtensionEnabled(XR_FB_SPATIAL_ENTITY_QUERY_EXTENSION_NAME); - bExtSharingEnabled = InModule->IsExtensionEnabled(XR_FB_SPATIAL_ENTITY_SHARING_EXTENSION_NAME); - bExtStorageEnabled = InModule->IsExtensionEnabled(XR_FB_SPATIAL_ENTITY_STORAGE_EXTENSION_NAME); - bExtStorageBatchEnabled = InModule->IsExtensionEnabled(XR_FB_SPATIAL_ENTITY_STORAGE_BATCH_EXTENSION_NAME); - bExtUserEnabled = InModule->IsExtensionEnabled(XR_FB_SPATIAL_ENTITY_USER_EXTENSION_NAME); - bExtDiscoveryEnabled = InModule->IsExtensionEnabled(XR_META_SPATIAL_ENTITY_DISCOVERY_EXTENSION_NAME); - bExtPersistenceEnabled = InModule->IsExtensionEnabled(XR_META_SPATIAL_ENTITY_PERSISTENCE_EXTENSION_NAME); - bExtSharingMetaEnabled = InModule->IsExtensionEnabled(XR_META_SPATIAL_ENTITY_SHARING_EXTENSION_NAME); - bExtSharingMetaEnabled = InModule->IsExtensionEnabled(XR_META_SPATIAL_ENTITY_GROUP_SHARING_EXTENSION_NAME); - - UE_LOG(LogOculusXRAnchors, Log, TEXT("[Anchors] Extensions available")); - UE_LOG(LogOculusXRAnchors, Log, TEXT(" Spatial Entity: %hs"), bExtAnchorsEnabled ? "ENABLED" : "DISABLED"); - UE_LOG(LogOculusXRAnchors, Log, TEXT(" Container: %hs"), bExtContainerEnabled ? "ENABLED" : "DISABLED"); - UE_LOG(LogOculusXRAnchors, Log, TEXT(" Query: %hs"), bExtQueryEnabled ? "ENABLED" : "DISABLED"); - UE_LOG(LogOculusXRAnchors, Log, TEXT(" Sharing: %hs"), bExtSharingEnabled ? "ENABLED" : "DISABLED"); - UE_LOG(LogOculusXRAnchors, Log, TEXT(" Storage: %hs"), bExtStorageEnabled ? "ENABLED" : "DISABLED"); - UE_LOG(LogOculusXRAnchors, Log, TEXT(" Storage Batch: %hs"), bExtStorageBatchEnabled ? "ENABLED" : "DISABLED"); - UE_LOG(LogOculusXRAnchors, Log, TEXT(" Users: %hs"), bExtUserEnabled ? "ENABLED" : "DISABLED"); - UE_LOG(LogOculusXRAnchors, Log, TEXT(" Discovery: %hs"), bExtDiscoveryEnabled ? "ENABLED" : "DISABLED"); - UE_LOG(LogOculusXRAnchors, Log, TEXT(" Persistence: %hs"), bExtPersistenceEnabled ? "ENABLED" : "DISABLED"); - UE_LOG(LogOculusXRAnchors, Log, TEXT(" Sharing Meta: %hs"), bExtSharingMetaEnabled ? "ENABLED" : "DISABLED"); - UE_LOG(LogOculusXRAnchors, Log, TEXT(" Group Sharing: %hs"), bExtGroupSharingEnabled ? "ENABLED" : "DISABLED"); - } - - return InNext; - } - - const void* FAnchorsXR::OnCreateSession(XrInstance InInstance, XrSystemId InSystem, const void* InNext) - { - InitOpenXRFunctions(InInstance); - - OpenXRHMD = (FOpenXRHMD*)GEngine->XRSystem.Get(); - - return InNext; - } - - void FAnchorsXR::OnDestroySession(XrSession InSession) - { - OpenXRHMD = nullptr; - } - - void FAnchorsXR::OnEvent(XrSession InSession, const XrEventDataBaseHeader* InHeader) - { - if (OpenXRHMD == nullptr) - { - UE_LOG(LogOculusXRAnchors, Log, TEXT("[FAnchorsXR::OnEvent] Receieved event but no HMD was present.")); - return; - } - - if (InHeader->type == XR_TYPE_EVENT_DATA_SPATIAL_ANCHOR_CREATE_COMPLETE_FB) - { - const XrEventDataSpatialAnchorCreateCompleteFB* const event = - reinterpret_cast(InHeader); - - UE_LOG(LogOculusXRAnchors, Verbose, TEXT("[FAnchorsXR::OnEvent] XrEventDataSpatialAnchorCreateCompleteFB")); - UE_LOG(LogOculusXRAnchors, Verbose, TEXT(" RequestId: %llu"), event->requestId); - UE_LOG(LogOculusXRAnchors, Verbose, TEXT(" Result: %d"), event->result); - UE_LOG(LogOculusXRAnchors, Verbose, TEXT(" Space: %llu"), event->space); - UE_LOG(LogOculusXRAnchors, Verbose, TEXT(" Uuid: %s"), *FOculusXRUUID(event->uuid.data).ToString()); - - FOculusXRAnchorEventDelegates::OculusSpatialAnchorCreateComplete.Broadcast( - event->requestId, - OculusXRAnchors::GetResultFromXrResult(event->result), - (uint64)event->space, - event->uuid.data); - } - else if (InHeader->type == XR_TYPE_EVENT_DATA_SPACE_SET_STATUS_COMPLETE_FB) - { - const XrEventDataSpaceSetStatusCompleteFB* const event = - reinterpret_cast(InHeader); - - UE_LOG(LogOculusXRAnchors, Verbose, TEXT("[FAnchorsXR::OnEvent] XrEventDataSpaceSetStatusCompleteFB")); - UE_LOG(LogOculusXRAnchors, Verbose, TEXT(" RequestId: %llu"), event->requestId); - UE_LOG(LogOculusXRAnchors, Verbose, TEXT(" Result: %d"), event->result); - UE_LOG(LogOculusXRAnchors, Verbose, TEXT(" Space: %llu"), event->space); - UE_LOG(LogOculusXRAnchors, Verbose, TEXT(" Uuid: %s"), *FOculusXRUUID(event->uuid.data).ToString()); - UE_LOG(LogOculusXRAnchors, Verbose, TEXT(" Type: %d"), event->componentType); - UE_LOG(LogOculusXRAnchors, Verbose, TEXT(" Enabled: %d"), event->enabled); - - FOculusXRAnchorEventDelegates::OculusSpaceSetComponentStatusComplete.Broadcast( - event->requestId, - OculusXRAnchors::GetResultFromXrResult(event->result), - (uint64)event->space, - event->uuid.data, - OculusXRAnchors::ToComponentType(event->componentType), - (bool)event->enabled); - } - else if (InHeader->type == XR_TYPE_EVENT_DATA_SPACE_SAVE_COMPLETE_FB) - { - const XrEventDataSpaceSaveCompleteFB* const event = - reinterpret_cast(InHeader); - - UE_LOG(LogOculusXRAnchors, Verbose, TEXT("[FAnchorsXR::OnEvent] XrEventDataSpaceSaveCompleteFB")); - UE_LOG(LogOculusXRAnchors, Verbose, TEXT(" RequestId: %llu"), event->requestId); - UE_LOG(LogOculusXRAnchors, Verbose, TEXT(" Result: %d"), event->result); - UE_LOG(LogOculusXRAnchors, Verbose, TEXT(" Space: %llu"), event->space); - UE_LOG(LogOculusXRAnchors, Verbose, TEXT(" Uuid: %s"), *FOculusXRUUID(event->uuid.data).ToString()); - UE_LOG(LogOculusXRAnchors, Verbose, TEXT(" Location: %d"), event->location); - - FOculusXRAnchorEventDelegates::OculusSpaceSaveComplete.Broadcast( - event->requestId, - OculusXRAnchors::GetResultFromXrResult(event->result), - XR_SUCCEEDED(event->result), - OculusXRAnchors::GetResultFromXrResult(event->result), - event->uuid.data); - } - else if (InHeader->type == XR_TYPE_EVENT_DATA_SPACE_LIST_SAVE_COMPLETE_FB) - { - const XrEventDataSpaceListSaveCompleteFB* const event = - reinterpret_cast(InHeader); - - UE_LOG(LogOculusXRAnchors, Verbose, TEXT("[FAnchorsXR::OnEvent] XrEventDataSpaceListSaveCompleteFB")); - UE_LOG(LogOculusXRAnchors, Verbose, TEXT(" RequestId: %llu"), event->requestId); - UE_LOG(LogOculusXRAnchors, Verbose, TEXT(" Result: %d"), event->result); - - FOculusXRAnchorEventDelegates::OculusSpaceListSaveComplete.Broadcast( - event->requestId, - OculusXRAnchors::GetResultFromXrResult(event->result)); - } - else if (InHeader->type == XR_TYPE_EVENT_DATA_SPACES_SAVE_RESULT_META) - { - const XrEventDataSpacesSaveResultMETA* const event = - reinterpret_cast(InHeader); - - UE_LOG(LogOculusXRAnchors, Verbose, TEXT("[FAnchorsXR::OnEvent] XrEventDataSpacesSaveResultMETA")); - UE_LOG(LogOculusXRAnchors, Verbose, TEXT(" RequestId: %llu"), event->requestId); - UE_LOG(LogOculusXRAnchors, Verbose, TEXT(" Result: %d"), event->result); - - FOculusXRAnchorEventDelegates::OculusAnchorsSaveComplete.Broadcast( - event->requestId, - OculusXRAnchors::GetResultFromXrResult(event->result)); - } - else if (InHeader->type == XR_TYPE_EVENT_DATA_SPACE_ERASE_COMPLETE_FB) - { - const XrEventDataSpaceEraseCompleteFB* const event = - reinterpret_cast(InHeader); - - UE_LOG(LogOculusXRAnchors, Verbose, TEXT("[FAnchorsXR::OnEvent] XrEventDataSpaceEraseCompleteFB")); - UE_LOG(LogOculusXRAnchors, Verbose, TEXT(" RequestId: %llu"), event->requestId); - UE_LOG(LogOculusXRAnchors, Verbose, TEXT(" Result: %d"), event->result); - UE_LOG(LogOculusXRAnchors, Verbose, TEXT(" Space: %llu"), event->space); - UE_LOG(LogOculusXRAnchors, Verbose, TEXT(" Uuid: %s"), *FOculusXRUUID(event->uuid.data).ToString()); - UE_LOG(LogOculusXRAnchors, Verbose, TEXT(" Location: %d"), event->location); - - FOculusXRAnchorEventDelegates::OculusSpaceEraseComplete.Broadcast( - event->requestId, - OculusXRAnchors::GetResultFromXrResult(event->result), - event->uuid.data, - OculusXRAnchors::ToStorageLocation(event->location)); - } - else if (InHeader->type == XR_TYPE_EVENT_DATA_SPACES_ERASE_RESULT_META) - { - const XrEventDataSpacesEraseResultMETA* const event = - reinterpret_cast(InHeader); - - UE_LOG(LogOculusXRAnchors, Verbose, TEXT("[FAnchorsXR::OnEvent] XrEventDataSpacesEraseResultMETA")); - UE_LOG(LogOculusXRAnchors, Verbose, TEXT(" RequestId: %llu"), event->requestId); - UE_LOG(LogOculusXRAnchors, Verbose, TEXT(" Result: %d"), event->result); - - FOculusXRAnchorEventDelegates::OculusAnchorsEraseComplete.Broadcast( - event->requestId, - OculusXRAnchors::GetResultFromXrResult(event->result)); - } - else if (InHeader->type == XR_TYPE_EVENT_DATA_SPACE_SHARE_COMPLETE_FB) - { - const XrEventDataSpaceShareCompleteFB* const event = - reinterpret_cast(InHeader); - - UE_LOG(LogOculusXRAnchors, Verbose, TEXT("[FAnchorsXR::OnEvent] XrEventDataSpaceShareCompleteFB")); - UE_LOG(LogOculusXRAnchors, Verbose, TEXT(" RequestId: %llu"), event->requestId); - UE_LOG(LogOculusXRAnchors, Verbose, TEXT(" Result: %d"), event->result); - - FOculusXRAnchorEventDelegates::OculusSpaceShareComplete.Broadcast( - event->requestId, - OculusXRAnchors::GetResultFromXrResult(event->result)); - } - else if (InHeader->type == XR_TYPE_EVENT_DATA_SPACE_QUERY_COMPLETE_FB) - { - const XrEventDataSpaceQueryCompleteFB* const event = - reinterpret_cast(InHeader); - - UE_LOG(LogOculusXRAnchors, Verbose, TEXT("[FAnchorsXR::OnEvent] XrEventDataSpaceQueryCompleteFB")); - UE_LOG(LogOculusXRAnchors, Verbose, TEXT(" RequestId: %llu"), event->requestId); - UE_LOG(LogOculusXRAnchors, Verbose, TEXT(" Result: %d"), event->result); - - FOculusXRAnchorEventDelegates::OculusSpaceQueryComplete.Broadcast( - event->requestId, - OculusXRAnchors::GetResultFromXrResult(event->result)); - } - else if (InHeader->type == XR_TYPE_EVENT_DATA_SPACE_QUERY_RESULTS_AVAILABLE_FB) - { - const XrEventDataSpaceQueryResultsAvailableFB* const event = - reinterpret_cast(InHeader); - - UE_LOG(LogOculusXRAnchors, Verbose, TEXT("[FAnchorsXR::OnEvent] XrEventDataSpaceQueryResultsAvailableFB")); - UE_LOG(LogOculusXRAnchors, Verbose, TEXT(" RequestId: %llu"), event->requestId); - - // Initial query for the number of elements - XrSpaceQueryResultsFB queryResults{ XR_TYPE_SPACE_QUERY_RESULTS_FB, nullptr }; - queryResults.resultCapacityInput = 0; - queryResults.resultCountOutput = 0; - queryResults.results = nullptr; - - auto getCapacityResult = xrRetrieveSpaceQueryResultsFB(OpenXRHMD->GetSession(), event->requestId, &queryResults); - UE_LOG(LogOculusXRAnchors, Verbose, TEXT("[XrEventDataSpaceQueryResultsAvailableFB] -- Capacity")); - UE_LOG(LogOculusXRAnchors, Verbose, TEXT(" RequestId: %llu"), event->requestId); - UE_LOG(LogOculusXRAnchors, Verbose, TEXT(" Capacity: %d"), queryResults.resultCountOutput); - UE_LOG(LogOculusXRAnchors, Verbose, TEXT(" Result: %d"), getCapacityResult); - - // Get the data payload - TArray resultArray; - resultArray.SetNum(queryResults.resultCountOutput); - queryResults.resultCapacityInput = queryResults.resultCountOutput; - queryResults.results = resultArray.GetData(); - - auto getDataResult = xrRetrieveSpaceQueryResultsFB(OpenXRHMD->GetSession(), event->requestId, &queryResults); - UE_LOG(LogOculusXRAnchors, Verbose, TEXT("[XrEventDataSpaceQueryResultsAvailableFB] -- Data Retrieval")); - UE_LOG(LogOculusXRAnchors, Verbose, TEXT(" RequestId: %llu"), event->requestId); - UE_LOG(LogOculusXRAnchors, Verbose, TEXT(" Result: %d"), getDataResult); - - FOculusXRAnchorEventDelegates::OculusSpaceQueryResults.Broadcast(event->requestId); - for (const auto& it : resultArray) - { - UE_LOG(LogOculusXRAnchors, Verbose, TEXT(" Anchor(%llu / %s)"), - it.space, *FOculusXRUUID(it.uuid.data).ToString()); - - FOculusXRAnchorEventDelegates::OculusSpaceQueryResult.Broadcast( - event->requestId, - (uint64)it.space, - it.uuid.data); - } - } - else if (InHeader->type == XR_TYPE_EVENT_DATA_SPACE_DISCOVERY_COMPLETE_META) - { - const XrEventDataSpaceDiscoveryCompleteMETA* const event = - reinterpret_cast(InHeader); - - UE_LOG(LogOculusXRAnchors, Verbose, TEXT("[FAnchorsXR::OnEvent] XrEventDataSpaceDiscoveryCompleteMETA")); - UE_LOG(LogOculusXRAnchors, Verbose, TEXT(" RequestId: %llu"), event->requestId); - UE_LOG(LogOculusXRAnchors, Verbose, TEXT(" Result: %d"), event->result); - - FOculusXRAnchorEventDelegates::OculusAnchorsDiscoverComplete.Broadcast( - event->requestId, - OculusXRAnchors::GetResultFromXrResult(event->result)); - } - else if (InHeader->type == XR_TYPE_EVENT_DATA_SPACE_DISCOVERY_RESULTS_AVAILABLE_META) - { - const XrEventDataSpaceDiscoveryResultsAvailableMETA* const event = - reinterpret_cast(InHeader); - - UE_LOG(LogOculusXRAnchors, Verbose, TEXT("[FAnchorsXR::OnEvent] XrEventDataSpaceDiscoveryResultsAvailableMETA")); - UE_LOG(LogOculusXRAnchors, Verbose, TEXT(" RequestId: %llu"), event->requestId); - - // Initial query for the number of elements - XrSpaceDiscoveryResultsMETA discoverResults{ XR_TYPE_SPACE_DISCOVERY_RESULTS_META, nullptr }; - discoverResults.resultCapacityInput = 0; - discoverResults.resultCountOutput = 0; - discoverResults.results = nullptr; - - auto getCapacityResult = xrRetrieveSpaceDiscoveryResultsMETA(OpenXRHMD->GetSession(), event->requestId, &discoverResults); - UE_LOG(LogOculusXRAnchors, Verbose, TEXT("[XrEventDataSpaceDiscoveryResultsAvailableMETA] -- Capacity")); - UE_LOG(LogOculusXRAnchors, Verbose, TEXT(" RequestId: %llu"), event->requestId); - UE_LOG(LogOculusXRAnchors, Verbose, TEXT(" Capacity: %d"), discoverResults.resultCountOutput); - UE_LOG(LogOculusXRAnchors, Verbose, TEXT(" Result: %d"), getCapacityResult); - - if (XR_FAILED(getCapacityResult)) - { - return; - } - - // Get the data payload - TArray resultArray; - resultArray.SetNum(discoverResults.resultCountOutput); - discoverResults.resultCapacityInput = discoverResults.resultCountOutput; - discoverResults.results = resultArray.GetData(); - - auto getDataResult = xrRetrieveSpaceDiscoveryResultsMETA(OpenXRHMD->GetSession(), event->requestId, &discoverResults); - UE_LOG(LogOculusXRAnchors, Verbose, TEXT("[XrEventDataSpaceDiscoveryResultsAvailableMETA] -- Data Retrieval")); - UE_LOG(LogOculusXRAnchors, Verbose, TEXT(" RequestId: %llu"), event->requestId); - UE_LOG(LogOculusXRAnchors, Verbose, TEXT(" Result: %d"), getDataResult); - - TArray outputArray; - for (const auto& it : resultArray) - { - UE_LOG(LogOculusXRAnchors, Verbose, TEXT(" Anchor(%llu / %s)"), - it.space, *FOculusXRUUID(it.uuid.data).ToString()); - outputArray.Add(FOculusXRAnchorsDiscoverResult((uint64)it.space, it.uuid.data)); - } - - if (XR_FAILED(getDataResult)) - { - return; - } - - FOculusXRAnchorEventDelegates::OculusAnchorsDiscoverResults.Broadcast( - event->requestId, - outputArray); - } - else if (InHeader->type == XR_TYPE_EVENT_DATA_SHARE_SPACES_COMPLETE_META) - { - const XrEventDataShareSpacesCompleteMETA* const event = - reinterpret_cast(InHeader); - - UE_LOG(LogOculusXRAnchors, Verbose, TEXT("[FAnchorsXR::OnEvent] XrEventDataShareSpacesCompleteMETA")); - UE_LOG(LogOculusXRAnchors, Verbose, TEXT(" RequestId: %llu"), event->requestId); - UE_LOG(LogOculusXRAnchors, Verbose, TEXT(" Result: %d"), event->result); - - FOculusXRAnchorEventDelegates::OculusSpaceShareComplete.Broadcast( - event->requestId, - OculusXRAnchors::GetResultFromXrResult(event->result)); - } - } - - XrResult FAnchorsXR::CreateSpatialAnchor(const FTransform& InTransform, uint64& OutRequestId, const FTransform& CameraTransform) - { - if (!OpenXRHMD || !OpenXRHMD->GetInstance() || !OpenXRHMD->GetSession()) - { - UE_LOG(LogOculusXRAnchors, Warning, TEXT("[CreateSpatialAnchor] XR state is invalid.")); - return XR_ERROR_VALIDATION_FAILURE; - } - - if (!IsAnchorExtensionSupported()) - { - UE_LOG(LogOculusXRAnchors, Warning, TEXT("[CreateSpatialAnchor] Spatial entity extension is unsupported.")); - return XR_ERROR_VALIDATION_FAILURE; - } - - const FTransform TrackingToWorld = OpenXRHMD->GetTrackingToWorldTransform(); - - // convert to tracking space - const FQuat TrackingSpaceOrientation = TrackingToWorld.Inverse().TransformRotation(InTransform.Rotator().Quaternion()); - const FVector TrackingSpacePosition = TrackingToWorld.Inverse().TransformPosition(InTransform.GetLocation()); - - const OculusXRHMD::FPose TrackingSpacePose(TrackingSpaceOrientation, TrackingSpacePosition); - OculusXRHMD::FPose ConversionPose = TrackingSpacePose; - -#if WITH_EDITOR - // Link only head space position update - FVector OutHeadPosition; - FQuat OutHeadOrientation; - const bool bGetPose = OpenXRHMD->GetCurrentPose(OpenXRHMD->HMDDeviceId, OutHeadOrientation, OutHeadPosition); - if (!bGetPose) - { - UE_LOG(LogOculusXRAnchors, Warning, TEXT("FOculusAnchorManager::CreateAnchor failed to get current headset pose.")); - return XR_ERROR_RUNTIME_FAILURE; - } - - OculusXRHMD::FPose HeadPose(OutHeadOrientation, OutHeadPosition); - - OculusXRHMD::FPose MainCameraPose(CameraTransform.GetRotation(), CameraTransform.GetLocation()); - OculusXRHMD::FPose PoseInHeadSpace = MainCameraPose.Inverse() * TrackingSpacePose; - - // To world space pose - OculusXRHMD::FPose WorldPose = HeadPose * PoseInHeadSpace; - - ConversionPose = WorldPose; -#endif - - XrPosef xrPose; - xrPose.orientation = ToXrQuat(OpenXRHMD->GetBaseOrientation() * ConversionPose.Orientation); - xrPose.position = ToXrVector(OpenXRHMD->GetBaseOrientation().RotateVector(ConversionPose.Position) / OpenXRHMD->GetWorldToMetersScale() + OpenXRHMD->GetBasePosition()); - - XrSpatialAnchorCreateInfoFB createInfo; - createInfo.type = XR_TYPE_SPATIAL_ANCHOR_CREATE_INFO_FB; - createInfo.next = nullptr; - createInfo.time = OpenXRHMD->GetDisplayTime(); - createInfo.space = OpenXRHMD->GetTrackingSpace(); - createInfo.poseInSpace = xrPose; - - auto result = xrCreateSpatialAnchorFB(OpenXRHMD->GetSession(), &createInfo, (uint64_t*)&OutRequestId); - if (!XR_SUCCEEDED(result)) - { - UE_LOG(LogOculusXRAnchors, Warning, TEXT("[CreateSpatialAnchor] Spatial entity creation failed. Result: %d"), result); - } - - return result; - } - - XrResult FAnchorsXR::DestroySpatialAnchor(uint64 AnchorHandle) - { - if (!OpenXRHMD || !OpenXRHMD->GetInstance() || !OpenXRHMD->GetSession()) - { - UE_LOG(LogOculusXRAnchors, Warning, TEXT("[DestroySpatialAnchor] XR state is invalid.")); - return XR_ERROR_VALIDATION_FAILURE; - } - - if (!IsAnchorExtensionSupported()) - { - UE_LOG(LogOculusXRAnchors, Warning, TEXT("[DestroySpatialAnchor] Spatial entity extension is unsupported.")); - return XR_ERROR_VALIDATION_FAILURE; - } - - return xrDestroySpace((XrSpace)AnchorHandle); - } - - XrResult FAnchorsXR::TryGetAnchorTransform(uint64 AnchorHandle, FTransform& OutTransform, FOculusXRAnchorLocationFlags& OutLocationFlags, EOculusXRAnchorSpace Space) - { - if (!OpenXRHMD || !OpenXRHMD->GetInstance() || !OpenXRHMD->GetSession()) - { - UE_LOG(LogOculusXRAnchors, Warning, TEXT("[TryGetAnchorTransform] XR state is invalid.")); - return XR_ERROR_VALIDATION_FAILURE; - } - - if (!IsAnchorExtensionSupported()) - { - UE_LOG(LogOculusXRAnchors, Warning, TEXT("[TryGetAnchorTransform] Spatial entity extension is unsupported.")); - return XR_ERROR_VALIDATION_FAILURE; - } - - OutTransform = FTransform::Identity; - OutLocationFlags = FOculusXRAnchorLocationFlags(0); - - XrSpaceLocation location = { XR_TYPE_SPACE_LOCATION, nullptr }; - auto result = xrLocateSpace((XrSpace)AnchorHandle, OpenXRHMD->GetTrackingSpace(), OpenXRHMD->GetDisplayTime(), &location); - if (XR_SUCCEEDED(result)) - { - OutLocationFlags = FOculusXRAnchorLocationFlags(location.locationFlags); - if (OutLocationFlags.IsValid()) - { - float worldToMeters = OpenXRHMD->GetWorldToMetersScale(); - - FVector basePosition = OpenXRHMD->GetBasePosition(); - FVector inPosition(-location.pose.position.z, location.pose.position.x, location.pose.position.y); - FQuat baseOrientation = OpenXRHMD->GetBaseOrientation(); - FQuat inOrientation(-location.pose.orientation.z, location.pose.orientation.x, location.pose.orientation.y, -location.pose.orientation.w); - - FVector outPosition = (inPosition - basePosition) * worldToMeters; - outPosition = baseOrientation.Inverse().RotateVector(outPosition); - - FQuat outOrientation = baseOrientation.Inverse() * inOrientation; - outOrientation.Normalize(); - - switch (Space) - { - case EOculusXRAnchorSpace::World: - { - const FTransform trackingToWorld = OpenXRHMD->GetTrackingToWorldTransform(); - OutTransform.SetLocation(trackingToWorld.TransformPosition(outPosition)); - OutTransform.SetRotation(FRotator(trackingToWorld.TransformRotation(outOrientation)).Quaternion()); - } - break; - - case EOculusXRAnchorSpace::Tracking: - { - OutTransform.SetLocation(outPosition); - OutTransform.SetRotation(FRotator(outOrientation).Quaternion()); - } - break; - } - } - } - - if (!XR_SUCCEEDED(result)) - { - UE_LOG(LogOculusXRAnchors, Warning, TEXT("[TryGetAnchorTransform] Get transform failed. Result: %d"), result); - } - - return result; - } - - XrResult FAnchorsXR::SetAnchorComponentStatus(uint64 AnchorHandle, EOculusXRSpaceComponentType ComponentType, bool Enable, float Timeout, uint64& OutRequestId) - { - if (!OpenXRHMD || !OpenXRHMD->GetInstance() || !OpenXRHMD->GetSession()) - { - UE_LOG(LogOculusXRAnchors, Warning, TEXT("[SetAnchorComponentStatus] XR state is invalid.")); - return XR_ERROR_VALIDATION_FAILURE; - } - - if (!IsAnchorExtensionSupported()) - { - UE_LOG(LogOculusXRAnchors, Warning, TEXT("[SetAnchorComponentStatus] Spatial entity extension is unsupported.")); - return XR_ERROR_VALIDATION_FAILURE; - } - - // Early out if the change is a no-op - bool isEnabled, changePending; - auto getStatusResult = GetAnchorComponentStatus(AnchorHandle, ComponentType, isEnabled, changePending); - bool isStatusChangingOrSame = ((isEnabled == Enable) && !changePending) || ((isEnabled != Enable) && changePending); - if (XR_SUCCEEDED(getStatusResult) && isStatusChangingOrSame) - { - return XR_SUCCESS; - } - - XrSpaceComponentStatusSetInfoFB setInfo{ XR_TYPE_SPACE_COMPONENT_STATUS_SET_INFO_FB, nullptr }; - setInfo.componentType = OculusXRAnchors::ToComponentType(ComponentType); - setInfo.enabled = Enable ? 1 : 0; - setInfo.timeout = Timeout; - - auto result = xrSetSpaceComponentStatusFB((XrSpace)AnchorHandle, &setInfo, (XrAsyncRequestIdFB*)&OutRequestId); - if (!XR_SUCCEEDED(result)) - { - UE_LOG(LogOculusXRAnchors, Warning, TEXT("[SetAnchorComponentStatus] Set space component status failed. Result: %d"), result); - } - - return result; - } - - XrResult FAnchorsXR::GetAnchorComponentStatus(uint64 AnchorHandle, EOculusXRSpaceComponentType ComponentType, bool& OutEnabled, bool& OutChangePending) - { - if (!OpenXRHMD || !OpenXRHMD->GetInstance() || !OpenXRHMD->GetSession()) - { - UE_LOG(LogOculusXRAnchors, Warning, TEXT("[GetAnchorComponentStatus] XR state is invalid.")); - return XR_ERROR_VALIDATION_FAILURE; - } - - if (!IsAnchorExtensionSupported()) - { - UE_LOG(LogOculusXRAnchors, Warning, TEXT("[GetAnchorComponentStatus] Spatial entity extension is unsupported.")); - return XR_ERROR_VALIDATION_FAILURE; - } - - XrSpaceComponentStatusFB status{ XR_TYPE_SPACE_COMPONENT_STATUS_FB, nullptr }; - auto result = xrGetSpaceComponentStatusFB((XrSpace)AnchorHandle, OculusXRAnchors::ToComponentType(ComponentType), &status); - if (!XR_SUCCEEDED(result)) - { - UE_LOG(LogOculusXRAnchors, Warning, TEXT("[GetAnchorComponentStatus] Get space component status failed. Result: %d"), result); - } - else - { - OutEnabled = (bool)status.enabled; - OutChangePending = (bool)status.changePending; - } - - return result; - } - - XrResult FAnchorsXR::GetSupportedAnchorComponents(uint64 AnchorHandle, TArray& OutSupportedTypes) - { - if (!OpenXRHMD || !OpenXRHMD->GetInstance() || !OpenXRHMD->GetSession()) - { - UE_LOG(LogOculusXRAnchors, Warning, TEXT("[GetSupportedAnchorComponents] XR state is invalid.")); - return XR_ERROR_VALIDATION_FAILURE; - } - - if (!IsAnchorExtensionSupported()) - { - UE_LOG(LogOculusXRAnchors, Warning, TEXT("[GetSupportedAnchorComponents] Spatial entity extension is unsupported.")); - return XR_ERROR_VALIDATION_FAILURE; - } - - uint32 input = 0; - uint32 output = 0; - - auto getCapacityResult = xrEnumerateSpaceSupportedComponentsFB((XrSpace)AnchorHandle, input, &output, nullptr); - UE_LOG(LogOculusXRAnchors, Verbose, TEXT("[GetSupportedAnchorComponents] -- Capacity")); - UE_LOG(LogOculusXRAnchors, Verbose, TEXT(" Capacity: %d"), output); - UE_LOG(LogOculusXRAnchors, Verbose, TEXT(" Result: %d"), getCapacityResult); - - if (XR_FAILED(getCapacityResult)) - { - return getCapacityResult; - } - - input = output; - TArray components; - components.SetNum(output); - - auto dataResult = xrEnumerateSpaceSupportedComponentsFB((XrSpace)AnchorHandle, input, &output, components.GetData()); - UE_LOG(LogOculusXRAnchors, Verbose, TEXT("[GetSupportedAnchorComponents] -- Data Retrieval")); - UE_LOG(LogOculusXRAnchors, Verbose, TEXT(" Result: %d"), dataResult); - for (auto& it : components) - { - auto ueComponentType = OculusXRAnchors::ToComponentType(it); - UE_LOG(LogOculusXRAnchors, Verbose, TEXT(" Component Type: %s"), *OculusXRAnchors::ToString(ueComponentType)); - OutSupportedTypes.Add(ueComponentType); - } - - return dataResult; - } - - XrResult FAnchorsXR::GetAnchorContainerUUIDs(uint64 AnchorHandle, TArray& OutUUIDs) - { - if (!OpenXRHMD || !OpenXRHMD->GetInstance() || !OpenXRHMD->GetSession()) - { - UE_LOG(LogOculusXRAnchors, Warning, TEXT("[GetAnchorContainerUUIDs] XR state is invalid.")); - return XR_ERROR_VALIDATION_FAILURE; - } - - if (!IsContainerExtensionSupported()) - { - UE_LOG(LogOculusXRAnchors, Warning, TEXT("[GetAnchorContainerUUIDs] Spatial entity container extension is unsupported.")); - return XR_ERROR_VALIDATION_FAILURE; - } - - XrSpaceContainerFB spaceContainer = { XR_TYPE_SPACE_CONTAINER_FB, nullptr }; - spaceContainer.uuidCountOutput = 0; - spaceContainer.uuidCapacityInput = 0; - spaceContainer.uuids = nullptr; - - auto getCapacityResult = xrGetSpaceContainerFB(OpenXRHMD->GetSession(), (XrSpace)AnchorHandle, &spaceContainer); - if (XR_FAILED(getCapacityResult)) - { - UE_LOG(LogOculusXRAnchors, Warning, TEXT("[GetAnchorContainerUUIDs] -- Failed to get space container capacity. Result: %d"), getCapacityResult); - return getCapacityResult; - } - - UE_LOG(LogOculusXRAnchors, Verbose, TEXT("[GetAnchorContainerUUIDs] -- Capacity")); - UE_LOG(LogOculusXRAnchors, Verbose, TEXT(" Capacity: %d"), spaceContainer.uuidCountOutput); - UE_LOG(LogOculusXRAnchors, Verbose, TEXT(" Result: %d"), getCapacityResult); - - spaceContainer.uuidCapacityInput = spaceContainer.uuidCountOutput; - TArray uuids; - uuids.SetNum(spaceContainer.uuidCapacityInput); - spaceContainer.uuids = uuids.GetData(); - - auto dataResult = xrGetSpaceContainerFB(OpenXRHMD->GetSession(), (XrSpace)AnchorHandle, &spaceContainer); - if (XR_FAILED(dataResult)) - { - UE_LOG(LogOculusXRAnchors, Warning, TEXT("[GetAnchorContainerUUIDs] -- Failed to get space container data. Result: %d"), dataResult); - return dataResult; - } - - UE_LOG(LogOculusXRAnchors, Verbose, TEXT("[GetAnchorContainerUUIDs] -- Data Retrieval")); - UE_LOG(LogOculusXRAnchors, Verbose, TEXT(" Result: %d"), dataResult); - for (auto& it : uuids) - { - FOculusXRUUID ueUuid(it.data); - UE_LOG(LogOculusXRAnchors, Verbose, TEXT(" UUID: %s"), *ueUuid.ToString()); - OutUUIDs.Add(ueUuid); - } - - return dataResult; - } - - XrResult FAnchorsXR::SaveAnchor(uint64 AnchorHandle, EOculusXRSpaceStorageLocation StorageLocation, EOculusXRSpaceStoragePersistenceMode StoragePersistenceMode, uint64& OutRequestId) - { - if (!OpenXRHMD || !OpenXRHMD->GetInstance() || !OpenXRHMD->GetSession()) - { - UE_LOG(LogOculusXRAnchors, Warning, TEXT("[SaveAnchor] XR state is invalid.")); - return XR_ERROR_VALIDATION_FAILURE; - } - - if (!IsStorageExtensionSupported()) - { - UE_LOG(LogOculusXRAnchors, Warning, TEXT("[SaveAnchor] Spatial entity storage extension is unsupported.")); - return XR_ERROR_VALIDATION_FAILURE; - } - - if (!AnchorHandle) - { - UE_LOG(LogOculusXRAnchors, Warning, TEXT("[SaveAnchor] Supplied anchor handle is invalid.")); - return XR_ERROR_VALIDATION_FAILURE; - } - - XrSpaceSaveInfoFB spaceSaveInfo = { XR_TYPE_SPACE_SAVE_INFO_FB, nullptr }; - spaceSaveInfo.space = (XrSpace)AnchorHandle; - spaceSaveInfo.location = OculusXRAnchors::ToStorageLocation(StorageLocation); - spaceSaveInfo.persistenceMode = XR_SPACE_PERSISTENCE_MODE_INDEFINITE_FB; // Only one persistence mode so far, this is hard coded - - auto result = xrSaveSpaceFB(OpenXRHMD->GetSession(), &spaceSaveInfo, (XrAsyncRequestIdFB*)&OutRequestId); - if (!XR_SUCCEEDED(result)) - { - UE_LOG(LogOculusXRAnchors, Warning, TEXT("[SaveAnchor] Save anchor failed. Result: %d"), result); - } - - return result; - } - - XrResult FAnchorsXR::SaveAnchorList(const TArray& AnchorHandles, EOculusXRSpaceStorageLocation StorageLocation, uint64& OutRequestId) - { - if (!OpenXRHMD || !OpenXRHMD->GetInstance() || !OpenXRHMD->GetSession()) - { - UE_LOG(LogOculusXRAnchors, Warning, TEXT("[SaveAnchorList] XR state is invalid.")); - return XR_ERROR_VALIDATION_FAILURE; - } - - if (!IsStorageBatchExtensionSupported()) - { - UE_LOG(LogOculusXRAnchors, Warning, TEXT("[SaveAnchorList] Spatial entity storage batch extension is unsupported.")); - return XR_ERROR_VALIDATION_FAILURE; - } - - if (AnchorHandles.Num() == 0) - { - UE_LOG(LogOculusXRAnchors, Warning, TEXT("[SaveAnchorList] You must supply more than zero anchors to save anchor list.")); - return XR_ERROR_VALIDATION_FAILURE; - } - - XrSpaceListSaveInfoFB spaceListSaveInfo = { XR_TYPE_SPACE_LIST_SAVE_INFO_FB, nullptr }; - spaceListSaveInfo.location = OculusXRAnchors::ToStorageLocation(StorageLocation); - spaceListSaveInfo.spaces = (XrSpace*)AnchorHandles.GetData(); - spaceListSaveInfo.spaceCount = AnchorHandles.Num(); - - auto result = xrSaveSpaceListFB(OpenXRHMD->GetSession(), &spaceListSaveInfo, (XrAsyncRequestIdFB*)&OutRequestId); - if (!XR_SUCCEEDED(result)) - { - UE_LOG(LogOculusXRAnchors, Warning, TEXT("[SaveAnchorList] Save anchor list failed. Result: %d"), result); - } - - return result; - } - - XrResult FAnchorsXR::SaveAnchors(const TArray& AnchorHandles, uint64& OutRequestId) - { - if (!OpenXRHMD || !OpenXRHMD->GetInstance() || !OpenXRHMD->GetSession()) - { - UE_LOG(LogOculusXRAnchors, Warning, TEXT("[SaveAnchors] XR state is invalid.")); - return XR_ERROR_VALIDATION_FAILURE; - } - - if (!IsPersistenceExtensionSupported()) - { - UE_LOG(LogOculusXRAnchors, Warning, TEXT("[SaveAnchors] Spatial entity persistence extension is unsupported.")); - return XR_ERROR_VALIDATION_FAILURE; - } - - if (AnchorHandles.Num() == 0) - { - UE_LOG(LogOculusXRAnchors, Warning, TEXT("[SaveAnchors] You must supply more than zero anchors to save anchors.")); - return XR_ERROR_VALIDATION_FAILURE; - } - - XrSpacesSaveInfoMETA spacesSaveInfo = { XR_TYPE_SPACES_SAVE_INFO_META, nullptr }; - spacesSaveInfo.spaces = (XrSpace*)AnchorHandles.GetData(); - spacesSaveInfo.spaceCount = AnchorHandles.Num(); - - auto result = xrSaveSpacesMETA(OpenXRHMD->GetSession(), &spacesSaveInfo, (XrAsyncRequestIdFB*)&OutRequestId); - if (!XR_SUCCEEDED(result)) - { - UE_LOG(LogOculusXRAnchors, Warning, TEXT("[SaveAnchors] Save anchors failed. Result: %d"), result); - } - - return result; - } - - XrResult FAnchorsXR::DiscoverAnchors(const FOculusXRSpaceDiscoveryInfo& DiscoveryInfo, uint64& OutRequestId) - { - if (!OpenXRHMD || !OpenXRHMD->GetInstance() || !OpenXRHMD->GetSession()) - { - UE_LOG(LogOculusXRAnchors, Warning, TEXT("[DiscoverAnchors] XR state is invalid.")); - return XR_ERROR_VALIDATION_FAILURE; - } - - if (!IsDiscoveryExtensionSupported()) - { - UE_LOG(LogOculusXRAnchors, Warning, TEXT("[DiscoverAnchors] Spatial entity discovery extension is unsupported.")); - return XR_ERROR_VALIDATION_FAILURE; - } - - const auto filterCount = DiscoveryInfo.Filters.Num(); - UE_LOG(LogOculusXRAnchors, Verbose, TEXT("[DiscoverAnchors] FilterCount: %d"), filterCount); - - union FilterUnion - { - XrSpaceFilterUuidMETA uuidFilter; - XrSpaceFilterComponentMETA componentFilter; - }; - - TArray uuidBuffer; - - // This vector provides temporary storage for each filter - TArray filterStorage; - filterStorage.SetNum(filterCount); - - // This vector is the array of points to filters in filterStorage (the input to OpenXR) - TArray filterArray; - filterArray.SetNum(filterCount); - - for (int32 i = 0; i < filterCount; ++i) - { - const auto& filter = DiscoveryInfo.Filters[i]; - FilterUnion xrFilter = {}; - - UOculusXRSpaceDiscoveryIdsFilter* IdFilter = Cast(DiscoveryInfo.Filters[i]); - UOculusXRSpaceDiscoveryComponentsFilter* ComponentFilter = Cast(DiscoveryInfo.Filters[i]); - - if (IsValid(IdFilter)) - { - if (IdFilter->Uuids.Num() == 0) - { - UE_LOG(LogOculusXRAnchors, Warning, TEXT("[DiscoverAnchors] Uuid filter is empty when attempting to filter by uuid.")); - return XR_ERROR_VALIDATION_FAILURE; - } - - UE_LOG(LogOculusXRAnchors, Verbose, TEXT("[DiscoverAnchors] UUID Filter:")); - for (auto& it : IdFilter->Uuids) - { - UE_LOG(LogOculusXRAnchors, Verbose, TEXT(" %s"), *it.ToString()); - } - - Algo::Transform(IdFilter->Uuids, uuidBuffer, [](const FOculusXRUUID& In) { return OculusXRAnchors::ToUuid(In); }); - - xrFilter.uuidFilter = { - XR_TYPE_SPACE_FILTER_UUID_META, - nullptr, - static_cast(uuidBuffer.Num()), - reinterpret_cast(uuidBuffer.GetData()), - }; - } - else if (IsValid(ComponentFilter)) - { - UE_LOG(LogOculusXRAnchors, Verbose, TEXT("[DiscoverAnchors] Component Filter:")); - UE_LOG(LogOculusXRAnchors, Verbose, TEXT(" %s"), *OculusXRAnchors::ToString(ComponentFilter->ComponentType)); - - xrFilter.componentFilter = { - XR_TYPE_SPACE_FILTER_COMPONENT_META, - nullptr, - OculusXRAnchors::ToComponentType(ComponentFilter->ComponentType), - }; - } - else - { - UE_LOG(LogOculusXRAnchors, Warning, TEXT("[DiscoverAnchors] Unknown filter type.")); - } - - filterStorage[i] = xrFilter; - filterArray[i] = reinterpret_cast(&filterStorage[i]); - } - - XrSpaceDiscoveryInfoMETA xrDiscoveryInfo = { XR_TYPE_SPACE_DISCOVERY_INFO_META }; - xrDiscoveryInfo.filterCount = static_cast(filterArray.Num()); - xrDiscoveryInfo.filters = filterArray.GetData(); - - auto result = xrDiscoverSpacesMETA(OpenXRHMD->GetSession(), &xrDiscoveryInfo, (XrAsyncRequestIdFB*)&OutRequestId); - if (!XR_SUCCEEDED(result)) - { - UE_LOG(LogOculusXRAnchors, Warning, TEXT("[DiscoverAnchors] Discover anchors failed. Result: %d"), result); - } - - return result; - } - - XrResult FAnchorsXR::QueryAnchors(const FOculusXRSpaceQueryInfo& QueryInfo, uint64& OutRequestId) - { - if (!OpenXRHMD || !OpenXRHMD->GetInstance() || !OpenXRHMD->GetSession()) - { - UE_LOG(LogOculusXRAnchors, Warning, TEXT("[QueryAnchors] XR state is invalid.")); - return XR_ERROR_VALIDATION_FAILURE; - } - - if (!IsQueryExtensionSupported()) - { - UE_LOG(LogOculusXRAnchors, Warning, TEXT("[QueryAnchors] Spatial entity query extension is unsupported.")); - return XR_ERROR_VALIDATION_FAILURE; - } - - XrSpaceUuidFilterInfoFB uuidFilter; - TArray uuidsBuffer; - XrSpaceComponentFilterInfoFB componentTypeFilter; - XrSpaceGroupUuidFilterInfoMETA groupUuidFilter; - XrSpaceStorageLocationFilterInfoFB storageLocation; - - XrSpaceQueryInfoFB actionQuery = { XR_TYPE_SPACE_QUERY_INFO_FB, nullptr }; - actionQuery.next = nullptr; - actionQuery.excludeFilter = nullptr; - actionQuery.maxResultCount = QueryInfo.MaxQuerySpaces; - actionQuery.timeout = OculusXR::ToXrDuration(QueryInfo.Timeout); - actionQuery.queryAction = XR_SPACE_QUERY_ACTION_LOAD_FB; - actionQuery.excludeFilter = nullptr; - - XrSpaceFilterInfoBaseHeaderFB* filter = nullptr; - if (QueryInfo.FilterType == EOculusXRSpaceQueryFilterType::FilterByIds) - { - if (QueryInfo.IDFilter.Num() == 0) - { - UE_LOG(LogOculusXRAnchors, Warning, TEXT("[QueryAnchors] Uuid filter is empty when attempting to filter by uuid.")); - return XR_ERROR_VALIDATION_FAILURE; - } - - // Add UUID filter - uuidFilter = { XR_TYPE_SPACE_UUID_FILTER_INFO_FB }; - uuidFilter.next = nullptr; - Algo::Transform(QueryInfo.IDFilter, uuidsBuffer, [](const FOculusXRUUID& In) { return OculusXRAnchors::ToUuid(In); }); - uuidFilter.uuids = uuidsBuffer.GetData(); - uuidFilter.uuidCount = uuidsBuffer.Num(); - filter = (XrSpaceFilterInfoBaseHeaderFB*)(&uuidFilter); - - UE_LOG(LogOculusXRAnchors, Verbose, TEXT("[QueryAnchors] UUID Filter:")); - for (auto& it : QueryInfo.IDFilter) - { - UE_LOG(LogOculusXRAnchors, Verbose, TEXT(" %s"), *it.ToString()); - } - } - else if (QueryInfo.FilterType == EOculusXRSpaceQueryFilterType::FilterByComponentType) - { - if (QueryInfo.ComponentFilter.Num() != 0) - { - UE_LOG(LogOculusXRAnchors, Warning, TEXT("[QueryAnchors] You must supply only one component when attempting to filter by component.")); - return XR_ERROR_VALIDATION_FAILURE; - } - - // Add component filter - componentTypeFilter = { XR_TYPE_SPACE_COMPONENT_FILTER_INFO_FB }; - componentTypeFilter.next = nullptr; - componentTypeFilter.componentType = OculusXRAnchors::ToComponentType(QueryInfo.ComponentFilter[0]); - filter = (XrSpaceFilterInfoBaseHeaderFB*)(&componentTypeFilter); - - UE_LOG(LogOculusXRAnchors, Verbose, TEXT("[QueryAnchors] Component Filter:")); - UE_LOG(LogOculusXRAnchors, Verbose, TEXT(" %s"), *OculusXRAnchors::ToString(QueryInfo.ComponentFilter[0])); - } - else if (QueryInfo.FilterType == EOculusXRSpaceQueryFilterType::FilterByGroup) - { - // Add component filter - groupUuidFilter = { XR_TYPE_SPACE_GROUP_UUID_FILTER_INFO_META }; - groupUuidFilter.next = nullptr; - groupUuidFilter.groupUuid = OculusXRAnchors::ToUuid(QueryInfo.GroupUUIDFilter); - filter = (XrSpaceFilterInfoBaseHeaderFB*)(&groupUuidFilter); - - UE_LOG(LogOculusXRAnchors, Verbose, TEXT("[QueryAnchors] Group Filter:")); - UE_LOG(LogOculusXRAnchors, Verbose, TEXT(" %s"), *OculusXRAnchors::ToString(QueryInfo.ComponentFilter[0])); - } - else - { - actionQuery.filter = nullptr; - } - - // if storage is enabled add the storage location to the query - if (IsStorageExtensionSupported() && filter != nullptr) - { - storageLocation = { XR_TYPE_SPACE_STORAGE_LOCATION_FILTER_INFO_FB }; - storageLocation.next = nullptr; - storageLocation.location = OculusXRAnchors::ToStorageLocation(QueryInfo.Location); - filter->next = &storageLocation; - - UE_LOG(LogOculusXRAnchors, Verbose, TEXT("[QueryAnchors] Location Filter:")); - UE_LOG(LogOculusXRAnchors, Verbose, TEXT(" %s"), *OculusXRAnchors::ToString(QueryInfo.Location)); - } - - actionQuery.filter = filter; - - auto result = xrQuerySpacesFB(OpenXRHMD->GetSession(), (XrSpaceQueryInfoBaseHeaderFB*)&actionQuery, (XrAsyncRequestIdFB*)&OutRequestId); - if (!XR_SUCCEEDED(result)) - { - UE_LOG(LogOculusXRAnchors, Warning, TEXT("[QueryAnchors] Share anchors failed. Result: %d"), result); - } - - return result; - } - - XrResult FAnchorsXR::ShareAnchors(const TArray& AnchorHandles, const TArray& UserIds, uint64& OutRequestId) - { - if (!OpenXRHMD || !OpenXRHMD->GetInstance() || !OpenXRHMD->GetSession()) - { - UE_LOG(LogOculusXRAnchors, Warning, TEXT("[ShareAnchors] XR state is invalid.")); - return XR_ERROR_VALIDATION_FAILURE; - } - - if (!IsSharingExtensionSupported()) - { - UE_LOG(LogOculusXRAnchors, Warning, TEXT("[ShareAnchors] Spatial entity sharing extension is unsupported.")); - return XR_ERROR_VALIDATION_FAILURE; - } - - if (AnchorHandles.Num() == 0) - { - UE_LOG(LogOculusXRAnchors, Warning, TEXT("[ShareAnchors] You must supply more than zero anchors to share anchors.")); - return XR_ERROR_VALIDATION_FAILURE; - } - - if (UserIds.Num() == 0) - { - UE_LOG(LogOculusXRAnchors, Warning, TEXT("[ShareAnchors] You must supply more than zero users to share anchors.")); - return XR_ERROR_VALIDATION_FAILURE; - } - - TArray users; - Algo::Transform(UserIds, users, [this](const uint64& In) { - XrSpaceUserFB out; - CreateSpaceUser(In, (SpaceUser&)out); - return out; - }); - - XrSpaceShareInfoFB shareInfo = { XR_TYPE_SPACE_SHARE_INFO_FB, nullptr }; - shareInfo.spaces = (XrSpace*)AnchorHandles.GetData(); - shareInfo.spaceCount = AnchorHandles.Num(); - shareInfo.users = users.GetData(); - shareInfo.userCount = users.Num(); - - auto result = xrShareSpacesFB(OpenXRHMD->GetSession(), &shareInfo, (XrAsyncRequestIdFB*)&OutRequestId); - if (!XR_SUCCEEDED(result)) - { - UE_LOG(LogOculusXRAnchors, Warning, TEXT("[ShareAnchors] Share anchors failed. Result: %d"), result); - } - - for (auto& it : users) - { - DestroySpaceUser((SpaceUser)it); - } - - return result; - } - - XrResult FAnchorsXR::ShareAnchorsWithGroups(const TArray& AnchorHandles, const TArray& Groups, uint64& OutRequestId) - { - if (!OpenXRHMD || !OpenXRHMD->GetInstance() || !OpenXRHMD->GetSession()) - { - UE_LOG(LogOculusXRAnchors, Warning, TEXT("[ShareAnchorsWithGroups] XR state is invalid.")); - return XR_ERROR_VALIDATION_FAILURE; - } - - if (!IsSharingMetaExtensionSupported() || !IsGroupSharingExtensionSupported()) - { - UE_LOG(LogOculusXRAnchors, Warning, TEXT("[ShareAnchorsWithGroups] Spatial entity sharing (Meta) extensions are unsupported.")); - return XR_ERROR_VALIDATION_FAILURE; - } - - XrShareSpacesInfoMETA xrInfo = { XR_TYPE_SHARE_SPACES_INFO_META, nullptr }; - xrInfo.spaces = (XrSpace*)AnchorHandles.GetData(); - xrInfo.spaceCount = AnchorHandles.Num(); - - XrShareSpacesRecipientGroupsMETA groupRecipientInfo = { XR_TYPE_SHARE_SPACES_RECIPIENT_GROUPS_META, nullptr }; - TArray groupUuids; - Algo::Transform(Groups, groupUuids, [](const FOculusXRUUID& In) { return OculusXRAnchors::ToUuid(In); }); - - groupRecipientInfo.groupCount = groupUuids.Num(); - groupRecipientInfo.groups = groupUuids.GetData(); - xrInfo.recipientInfo = reinterpret_cast(&groupRecipientInfo); - - auto result = xrShareSpacesMETA(OpenXRHMD->GetSession(), &xrInfo, (XrAsyncRequestIdFB*)&OutRequestId); - return result; - } - - XrResult FAnchorsXR::CreateSpaceUser(uint64 SpaceUserId, SpaceUser& OutUser) - { - if (!OpenXRHMD || !OpenXRHMD->GetInstance() || !OpenXRHMD->GetSession()) - { - UE_LOG(LogOculusXRAnchors, Warning, TEXT("[CreateSpaceUser] XR state is invalid.")); - return XR_ERROR_VALIDATION_FAILURE; - } - - if (!IsUserExtensionSupported()) - { - UE_LOG(LogOculusXRAnchors, Warning, TEXT("[CreateSpaceUser] Spatial entity user extension is unsupported.")); - return XR_ERROR_VALIDATION_FAILURE; - } - - if (!SpaceUserId) - { - UE_LOG(LogOculusXRAnchors, Warning, TEXT("[CreateSpaceUser] Invalid space user id.")); - return XR_ERROR_VALIDATION_FAILURE; - } - - XrSpaceUserCreateInfoFB userCreateInfo = { XR_TYPE_SPACE_USER_CREATE_INFO_FB, nullptr }; - userCreateInfo.userId = SpaceUserId; - - auto result = xrCreateSpaceUserFB(OpenXRHMD->GetSession(), &userCreateInfo, (XrSpaceUserFB*)&OutUser); - if (!XR_SUCCEEDED(result)) - { - UE_LOG(LogOculusXRAnchors, Warning, TEXT("[CreateSpaceUser] Create space user failed. Result: %d"), result); - } - - return result; - } - - XrResult FAnchorsXR::GetSpaceUserId(const SpaceUser& User, uint64& OutId) - { - if (!OpenXRHMD || !OpenXRHMD->GetInstance() || !OpenXRHMD->GetSession()) - { - UE_LOG(LogOculusXRAnchors, Warning, TEXT("[GetSpaceUserId] XR state is invalid.")); - return XR_ERROR_VALIDATION_FAILURE; - } - - if (!IsUserExtensionSupported()) - { - UE_LOG(LogOculusXRAnchors, Warning, TEXT("[GetSpaceUserId] Spatial entity user extension is unsupported.")); - return XR_ERROR_VALIDATION_FAILURE; - } - - if (!User) - { - UE_LOG(LogOculusXRAnchors, Warning, TEXT("[GetSpaceUserId] Invalid space user.")); - return XR_ERROR_VALIDATION_FAILURE; - } - - auto result = xrGetSpaceUserIdFB((XrSpaceUserFB)User, (XrSpaceUserIdFB*)&OutId); - if (!XR_SUCCEEDED(result)) - { - UE_LOG(LogOculusXRAnchors, Warning, TEXT("[GetSpaceUserId] Get space user id failed. Result: %d"), result); - } - - return result; - } - - XrResult FAnchorsXR::DestroySpaceUser(const SpaceUser& User) - { - if (!OpenXRHMD || !OpenXRHMD->GetInstance() || !OpenXRHMD->GetSession()) - { - UE_LOG(LogOculusXRAnchors, Warning, TEXT("[DestroySpaceUser] XR state is invalid.")); - return XR_ERROR_VALIDATION_FAILURE; - } - - if (!IsUserExtensionSupported()) - { - UE_LOG(LogOculusXRAnchors, Warning, TEXT("[DestroySpaceUser] Spatial entity user extension is unsupported.")); - return XR_ERROR_VALIDATION_FAILURE; - } - - if (!User) - { - UE_LOG(LogOculusXRAnchors, Warning, TEXT("[DestroySpaceUser] Invalid space user.")); - return XR_ERROR_VALIDATION_FAILURE; - } - - auto result = xrDestroySpaceUserFB((XrSpaceUserFB)User); - if (!XR_SUCCEEDED(result)) - { - UE_LOG(LogOculusXRAnchors, Warning, TEXT("[DestroySpaceUser] Destroy space user failed. Result: %d"), result); - } - - return result; - } - - XrResult FAnchorsXR::EraseAnchor(uint64 AnchorHandle, EOculusXRSpaceStorageLocation StorageLocation, uint64& OutRequestId) - { - if (!OpenXRHMD || !OpenXRHMD->GetInstance() || !OpenXRHMD->GetSession()) - { - UE_LOG(LogOculusXRAnchors, Warning, TEXT("[EraseAnchor] XR state is invalid.")); - return XR_ERROR_VALIDATION_FAILURE; - } - - if (!IsStorageExtensionSupported()) - { - UE_LOG(LogOculusXRAnchors, Warning, TEXT("[EraseAnchor] Spatial entity storage extension is unsupported.")); - return XR_ERROR_VALIDATION_FAILURE; - } - - if (!AnchorHandle) - { - UE_LOG(LogOculusXRAnchors, Warning, TEXT("[EraseAnchor] Supplied anchor handle is invalid.")); - return XR_ERROR_VALIDATION_FAILURE; - } - - XrSpaceEraseInfoFB spaceEraseInfo = { XR_TYPE_SPACE_ERASE_INFO_FB, nullptr }; - spaceEraseInfo.space = (XrSpace)AnchorHandle; - spaceEraseInfo.location = OculusXRAnchors::ToStorageLocation(StorageLocation); - - auto result = xrEraseSpaceFB(OpenXRHMD->GetSession(), &spaceEraseInfo, (XrAsyncRequestIdFB*)&OutRequestId); - if (!XR_SUCCEEDED(result)) - { - UE_LOG(LogOculusXRAnchors, Warning, TEXT("[EraseAnchor] Erase anchor failed. Result: %d"), result); - } - - return result; - } - - XrResult FAnchorsXR::EraseAnchors(const TArray& AnchorHandles, const TArray& UUIDs, uint64& OutRequestId) - { - if (!OpenXRHMD || !OpenXRHMD->GetInstance() || !OpenXRHMD->GetSession()) - { - UE_LOG(LogOculusXRAnchors, Warning, TEXT("[EraseAnchors] XR state is invalid.")); - return XR_ERROR_VALIDATION_FAILURE; - } - - if (!IsPersistenceExtensionSupported()) - { - UE_LOG(LogOculusXRAnchors, Warning, TEXT("[EraseAnchors] Spatial entity persistence extension is unsupported.")); - return XR_ERROR_VALIDATION_FAILURE; - } - - if (AnchorHandles.Num() == 0 && UUIDs.Num() == 0) - { - UE_LOG(LogOculusXRAnchors, Warning, TEXT("[EraseAnchors] You must supply more than zero anchors to save anchors.")); - return XR_ERROR_VALIDATION_FAILURE; - } - - TArray spaces; - TArray uuids; - Algo::Transform(AnchorHandles, spaces, [](const FOculusXRUInt64& in) { return (XrSpace)in.GetValue(); }); - Algo::Transform(UUIDs, uuids, [](const FOculusXRUUID& in) { return OculusXRAnchors::ToUuid(in); }); - - XrSpacesEraseInfoMETA spacesEraseInfo = { XR_TYPE_SPACES_ERASE_INFO_META, nullptr }; - spacesEraseInfo.spaces = spaces.GetData(); - spacesEraseInfo.spaceCount = spaces.Num(); - spacesEraseInfo.uuids = uuids.GetData(); - spacesEraseInfo.uuidCount = uuids.Num(); - - auto result = xrEraseSpacesMETA(OpenXRHMD->GetSession(), &spacesEraseInfo, (XrAsyncRequestIdFB*)&OutRequestId); - if (!XR_SUCCEEDED(result)) - { - UE_LOG(LogOculusXRAnchors, Warning, TEXT("[EraseAnchors] Erase anchors failed. Result: %d"), result); - } - - return result; - } - - void FAnchorsXR::InitOpenXRFunctions(XrInstance InInstance) - { - // XR_FB_Spatial_Entity - if (IsAnchorExtensionSupported()) - { - OculusXR::XRGetInstanceProcAddr(InInstance, "xrCreateSpatialAnchorFB", &xrCreateSpatialAnchorFB); - OculusXR::XRGetInstanceProcAddr(InInstance, "xrSetSpaceComponentStatusFB", &xrSetSpaceComponentStatusFB); - OculusXR::XRGetInstanceProcAddr(InInstance, "xrGetSpaceComponentStatusFB", &xrGetSpaceComponentStatusFB); - OculusXR::XRGetInstanceProcAddr(InInstance, "xrEnumerateSpaceSupportedComponentsFB", &xrEnumerateSpaceSupportedComponentsFB); - OculusXR::XRGetInstanceProcAddr(InInstance, "xrGetSpaceUuidFB", &xrGetSpaceUuidFB); - } - - // XR_FB_spatial_entity_container - if (IsContainerExtensionSupported()) - { - OculusXR::XRGetInstanceProcAddr(InInstance, "xrGetSpaceContainerFB", &xrGetSpaceContainerFB); - } - - // XR_FB_spatial_entity_query - if (IsQueryExtensionSupported()) - { - OculusXR::XRGetInstanceProcAddr(InInstance, "xrQuerySpacesFB", &xrQuerySpacesFB); - OculusXR::XRGetInstanceProcAddr(InInstance, "xrRetrieveSpaceQueryResultsFB", &xrRetrieveSpaceQueryResultsFB); - } - - // XR_FB_spatial_entity_sharing - if (IsSharingExtensionSupported()) - { - OculusXR::XRGetInstanceProcAddr(InInstance, "xrShareSpacesFB", &xrShareSpacesFB); - } - - // XR_FB_spatial_entity_storage - if (IsStorageExtensionSupported()) - { - OculusXR::XRGetInstanceProcAddr(InInstance, "xrSaveSpaceFB", &xrSaveSpaceFB); - OculusXR::XRGetInstanceProcAddr(InInstance, "xrEraseSpaceFB", &xrEraseSpaceFB); - } - - // XR_FB_spatial_entity_storage_batch - if (IsStorageBatchExtensionSupported()) - { - OculusXR::XRGetInstanceProcAddr(InInstance, "xrSaveSpaceListFB", &xrSaveSpaceListFB); - } - - // XR_FB_spatial_entity_user - if (IsUserExtensionSupported()) - { - OculusXR::XRGetInstanceProcAddr(InInstance, "xrCreateSpaceUserFB", &xrCreateSpaceUserFB); - OculusXR::XRGetInstanceProcAddr(InInstance, "xrDestroySpaceUserFB", &xrDestroySpaceUserFB); - OculusXR::XRGetInstanceProcAddr(InInstance, "xrGetSpaceUserIdFB", &xrGetSpaceUserIdFB); - } - - // XR_META_spatial_entity_persistence - if (IsPersistenceExtensionSupported()) - { - OculusXR::XRGetInstanceProcAddr(InInstance, "xrSaveSpacesMETA", &xrSaveSpacesMETA); - OculusXR::XRGetInstanceProcAddr(InInstance, "xrEraseSpacesMETA", &xrEraseSpacesMETA); - } - - // XR_META_spatial_entity_discovery - if (IsDiscoveryExtensionSupported()) - { - OculusXR::XRGetInstanceProcAddr(InInstance, "xrDiscoverSpacesMETA", &xrDiscoverSpacesMETA); - OculusXR::XRGetInstanceProcAddr(InInstance, "xrRetrieveSpaceDiscoveryResultsMETA", &xrRetrieveSpaceDiscoveryResultsMETA); - } - - // XR_META_spatial_entity_sharing - if (IsSharingExtensionSupported()) - { - OculusXR::XRGetInstanceProcAddr(InInstance, "xrShareSpacesMETA", &xrShareSpacesMETA); - } - } - -} // namespace XRAnchors - -#undef LOCTEXT_NAMESPACE diff --git a/Plugins/MetaXR/Source/OculusXRAnchors/Private/openxr/OculusXRAnchorsXR.h b/Plugins/MetaXR/Source/OculusXRAnchors/Private/openxr/OculusXRAnchorsXR.h deleted file mode 100644 index aee7ca9..0000000 --- a/Plugins/MetaXR/Source/OculusXRAnchors/Private/openxr/OculusXRAnchorsXR.h +++ /dev/null @@ -1,110 +0,0 @@ -// Copyright (c) Meta Platforms, Inc. and affiliates. - -#pragma once - -#include "OculusXRAnchorsXRIncludes.h" -#include "IOpenXRExtensionPlugin.h" -#include "OculusXRAnchorTypes.h" - -#define LOCTEXT_NAMESPACE "OculusXRAnchors" - -class FOpenXRHMD; - -namespace XRAnchors -{ - extern PFN_xrCreateSpatialAnchorFB xrCreateSpatialAnchorFB; - extern PFN_xrSetSpaceComponentStatusFB xrSetSpaceComponentStatusFB; - extern PFN_xrGetSpaceComponentStatusFB xrGetSpaceComponentStatusFB; - extern PFN_xrEnumerateSpaceSupportedComponentsFB xrEnumerateSpaceSupportedComponentsFB; - extern PFN_xrGetSpaceUuidFB xrGetSpaceUuidFB; - extern PFN_xrGetSpaceContainerFB xrGetSpaceContainerFB; - extern PFN_xrQuerySpacesFB xrQuerySpacesFB; - extern PFN_xrRetrieveSpaceQueryResultsFB xrRetrieveSpaceQueryResultsFB; - extern PFN_xrShareSpacesFB xrShareSpacesFB; - extern PFN_xrShareSpacesMETA xrShareSpacesMETA; - extern PFN_xrSaveSpaceFB xrSaveSpaceFB; - extern PFN_xrEraseSpaceFB xrEraseSpaceFB; - extern PFN_xrSaveSpaceListFB xrSaveSpaceListFB; - extern PFN_xrCreateSpaceUserFB xrCreateSpaceUserFB; - extern PFN_xrDestroySpaceUserFB xrDestroySpaceUserFB; - extern PFN_xrGetSpaceUserIdFB xrGetSpaceUserIdFB; - extern PFN_xrSaveSpacesMETA xrSaveSpacesMETA; - extern PFN_xrEraseSpacesMETA xrEraseSpacesMETA; - extern PFN_xrDiscoverSpacesMETA xrDiscoverSpacesMETA; - extern PFN_xrRetrieveSpaceDiscoveryResultsMETA xrRetrieveSpaceDiscoveryResultsMETA; - - class FAnchorsXR : public IOpenXRExtensionPlugin - { - public: - // IOculusXROpenXRHMDPlugin - virtual bool GetRequiredExtensions(TArray& OutExtensions) override; - virtual bool GetOptionalExtensions(TArray& OutExtensions) override; - virtual const void* OnCreateInstance(class IOpenXRHMDModule* InModule, const void* InNext) override; - virtual const void* OnCreateSession(XrInstance InInstance, XrSystemId InSystem, const void* InNext) override; - virtual void OnDestroySession(XrSession InSession) override; - virtual void OnEvent(XrSession InSession, const XrEventDataBaseHeader* InHeader) override; - - public: - FAnchorsXR(); - virtual ~FAnchorsXR(); - void RegisterAsOpenXRExtension(); - - bool IsAnchorExtensionSupported() const { return bExtAnchorsEnabled; } - bool IsContainerExtensionSupported() const { return bExtContainerEnabled; } - bool IsQueryExtensionSupported() const { return bExtQueryEnabled; } - bool IsSharingExtensionSupported() const { return bExtSharingEnabled; } - bool IsStorageExtensionSupported() const { return bExtStorageEnabled; } - bool IsStorageBatchExtensionSupported() const { return bExtStorageBatchEnabled; } - bool IsUserExtensionSupported() const { return bExtUserEnabled; } - bool IsDiscoveryExtensionSupported() const { return bExtDiscoveryEnabled; } - bool IsPersistenceExtensionSupported() const { return bExtPersistenceEnabled; } - bool IsSharingMetaExtensionSupported() const { return bExtSharingMetaEnabled; } - bool IsGroupSharingExtensionSupported() const { return bExtGroupSharingEnabled; } - - XrResult CreateSpatialAnchor(const FTransform& InTransform, uint64& OutRequestId, const FTransform& CameraTransform); - XrResult DestroySpatialAnchor(uint64 AnchorHandle); - - XrResult TryGetAnchorTransform(uint64 AnchorHandle, FTransform& OutTransform, FOculusXRAnchorLocationFlags& OutLocationFlags, EOculusXRAnchorSpace Space); - XrResult SetAnchorComponentStatus(uint64 AnchorHandle, EOculusXRSpaceComponentType ComponentType, bool Enable, float Timeout, uint64& OutRequestId); - XrResult GetAnchorComponentStatus(uint64 AnchorHandle, EOculusXRSpaceComponentType ComponentType, bool& OutEnabled, bool& OutChangePending); - XrResult GetSupportedAnchorComponents(uint64 AnchorHandle, TArray& OutSupportedTypes); - XrResult GetAnchorContainerUUIDs(uint64 AnchorHandle, TArray& OutUUIDs); - - XrResult SaveAnchor(uint64 AnchorHandle, EOculusXRSpaceStorageLocation StorageLocation, EOculusXRSpaceStoragePersistenceMode StoragePersistenceMode, uint64& OutRequestId); - XrResult SaveAnchorList(const TArray& AnchorHandles, EOculusXRSpaceStorageLocation StorageLocation, uint64& OutRequestId); - XrResult SaveAnchors(const TArray& AnchorHandles, uint64& OutRequestId); - - XrResult DiscoverAnchors(const FOculusXRSpaceDiscoveryInfo& DiscoveryInfo, uint64& OutRequestId); - XrResult QueryAnchors(const FOculusXRSpaceQueryInfo& QueryInfo, uint64& OutRequestId); - - XrResult ShareAnchors(const TArray& AnchorHandles, const TArray& UserIds, uint64& OutRequestId); - XrResult ShareAnchorsWithGroups(const TArray& AnchorHandles, const TArray& Groups, uint64& OutRequestId); - - XrResult CreateSpaceUser(uint64 SpaceUserId, SpaceUser& OutUser); - XrResult GetSpaceUserId(const SpaceUser& User, uint64& OutId); - XrResult DestroySpaceUser(const SpaceUser& User); - - XrResult EraseAnchor(uint64 AnchorHandle, EOculusXRSpaceStorageLocation StorageLocation, uint64& OutRequestId); - XrResult EraseAnchors(const TArray& AnchorHandles, const TArray& UUIDs, uint64& OutRequestId); - - private: - void InitOpenXRFunctions(XrInstance InInstance); - - bool bExtAnchorsEnabled; - bool bExtContainerEnabled; - bool bExtQueryEnabled; - bool bExtSharingEnabled; - bool bExtStorageEnabled; - bool bExtStorageBatchEnabled; - bool bExtUserEnabled; - bool bExtDiscoveryEnabled; - bool bExtPersistenceEnabled; - bool bExtSharingMetaEnabled; - bool bExtGroupSharingEnabled; - - FOpenXRHMD* OpenXRHMD; - }; - -} // namespace XRAnchors - -#undef LOCTEXT_NAMESPACE diff --git a/Plugins/MetaXR/Source/OculusXRAnchors/Private/openxr/OculusXRAnchorsXRIncludes.h b/Plugins/MetaXR/Source/OculusXRAnchors/Private/openxr/OculusXRAnchorsXRIncludes.h deleted file mode 100644 index 7487bfc..0000000 --- a/Plugins/MetaXR/Source/OculusXRAnchors/Private/openxr/OculusXRAnchorsXRIncludes.h +++ /dev/null @@ -1,9 +0,0 @@ -// Copyright (c) Meta Platforms, Inc. and affiliates. - -#pragma once - -#include -#include -#include -#include -#include diff --git a/Plugins/MetaXR/Source/OculusXRAnchors/Public/IOculusXRAnchorsModule.h b/Plugins/MetaXR/Source/OculusXRAnchors/Public/IOculusXRAnchorsModule.h deleted file mode 100644 index ce987df..0000000 --- a/Plugins/MetaXR/Source/OculusXRAnchors/Public/IOculusXRAnchorsModule.h +++ /dev/null @@ -1,50 +0,0 @@ -// @lint-ignore-every LICENSELINT -// Copyright Epic Games, Inc. All Rights Reserved. - -#pragma once -#include "Modules/ModuleManager.h" -#include "OculusXRAnchorTypes.h" -#include "OculusXRAnchorComponents.h" - -#define OCULUS_ANCHORS_SUPPORTED_PLATFORMS (PLATFORM_WINDOWS && WINVER > 0x0502) || (PLATFORM_ANDROID_ARM || PLATFORM_ANDROID_ARM64 || PLATFORM_ANDROID_X64) - -class UOculusXRBaseAnchorComponent; - -class IOculusXRCreateAnchorComponent -{ -public: - virtual UOculusXRBaseAnchorComponent* TryCreateAnchorComponent(uint64 AnchorHandle, EOculusXRSpaceComponentType Type, UObject* Outer) = 0; -}; - -/** - * The public interface to this module. In most cases, this interface is only public to sibling modules - * within this plugin. - */ -class IOculusXRAnchorsModule : public IModuleInterface -{ -public: - /** - * Singleton-like access to this module's interface. This is just for convenience! - * Beware of calling this during the shutdown phase, though. Your module might have been unloaded already. - * - * @return Returns singleton instance, loading the module on demand if needed - */ - static inline IOculusXRAnchorsModule& Get() - { - return FModuleManager::LoadModuleChecked("OculusXRAnchors"); - } - - /** - * Checks to see if this module is loaded and ready. It is only valid to call Get() if IsAvailable() returns true. - * - * @return True if the module is loaded and ready to use - */ - static inline bool IsAvailable() - { - return FModuleManager::Get().IsModuleLoaded("OculusXRAnchors"); - } - - virtual void AddCreateAnchorComponentInterface(IOculusXRCreateAnchorComponent* CastInterface) = 0; - virtual void RemoveCreateAnchorComponentInterface(IOculusXRCreateAnchorComponent* CastInterface) = 0; - virtual UOculusXRBaseAnchorComponent* CreateAnchorComponent(uint64 AnchorHandle, EOculusXRSpaceComponentType Type, UObject* Outer) = 0; -}; diff --git a/Plugins/MetaXR/Source/OculusXRAnchors/Public/OculusXRAnchorBPFunctionLibrary.h b/Plugins/MetaXR/Source/OculusXRAnchors/Public/OculusXRAnchorBPFunctionLibrary.h deleted file mode 100644 index 61c3875..0000000 --- a/Plugins/MetaXR/Source/OculusXRAnchors/Public/OculusXRAnchorBPFunctionLibrary.h +++ /dev/null @@ -1,62 +0,0 @@ -// Copyright (c) Meta Platforms, Inc. and affiliates. - -#pragma once - -#include "Kismet/BlueprintFunctionLibrary.h" -#include "Kismet/BlueprintAsyncActionBase.h" -#include "OculusXRAnchorTypes.h" -#include "OculusXRAnchorComponents.h" -#include "OculusXRAnchorBPFunctionLibrary.generated.h" - -// Helper -UCLASS() -class OCULUSXRANCHORS_API UOculusXRAnchorBPFunctionLibrary : public UBlueprintFunctionLibrary -{ - GENERATED_BODY() -public: - UFUNCTION(BlueprintCallable, meta = (DisplayName = "Spawn Oculus Anchor Actor", WorldContext = "WorldContextObject", UnsafeDuringActorConstruction = "true"), Category = "OculusXR|SpatialAnchor") - static AActor* SpawnActorWithAnchorHandle(UObject* WorldContextObject, FOculusXRUInt64 Handle, FOculusXRUUID UUID, EOculusXRSpaceStorageLocation AnchorLocation, UClass* ActorClass, AActor* Owner, APawn* Instigator, ESpawnActorCollisionHandlingMethod CollisionHandlingMethod); - - UFUNCTION(BlueprintCallable, meta = (DisplayName = "Spawn Oculus Anchor Actor From Query", WorldContext = "WorldContextObject", UnsafeDuringActorConstruction = "true"), Category = "OculusXR|SpatialAnchor") - static AActor* SpawnActorWithAnchorQueryResults(UObject* WorldContextObject, const FOculusXRSpaceQueryResult& QueryResult, UClass* ActorClass, AActor* Owner, APawn* Instigator, ESpawnActorCollisionHandlingMethod CollisionHandlingMethod); - - UFUNCTION(BlueprintCallable, Category = "OculusXR|SpatialAnchor") - static bool GetAnchorComponentStatus(AActor* TargetActor, EOculusXRSpaceComponentType ComponentType, bool& bIsEnabled); - - UFUNCTION(BlueprintCallable, Category = "OculusXR|SpatialAnchor") - static bool GetAnchorTransformByHandle(const FOculusXRUInt64& Handle, FTransform& OutTransform); - - /** - * Try to get the anchors transform. The transform may not always be a available. - * - * @param Handle The Anchor handle. - * @param OutTransform (out) The anchors transform. - * @param OutLocationFlags (out) The location flags. - * @param Space The space in which this transform should be returned. - * - * @return Whether or not the transform could be retrieved. - */ - UFUNCTION(BlueprintCallable, Category = "OculusXR|SpatialAnchor") - static bool TryGetAnchorTransformByHandle(const FOculusXRUInt64& Handle, FTransform& OutTransform, FOculusXRAnchorLocationFlags& OutLocationFlags, EOculusXRAnchorSpace Space = EOculusXRAnchorSpace::World); - - UFUNCTION(BlueprintPure, meta = (DisplayName = "FOculusXRUInt64 To String", CompactNodeTitle = "->", BlueprintAutocast), Category = "OculusXR|SpatialAnchor") - static FString AnchorHandleToString(const FOculusXRUInt64 Value); - - UFUNCTION(BlueprintPure, meta = (DisplayName = "FOculusXRUUID To String", CompactNodeTitle = "->", BlueprintAutocast), Category = "OculusXR|SpatialAnchor") - static FString AnchorUUIDToString(const FOculusXRUUID& Value); - - UFUNCTION(BlueprintCallable, Category = "OculusXR|SpatialAnchor") - static FOculusXRUUID StringToAnchorUUID(const FString& Value); - - UFUNCTION(BlueprintPure, meta = (DisplayName = "FOculusXRUInt64 equal", CompactNodeTitle = "==", Keywords = "equal", BlueprintAutocast), Category = "OculusXR|SpatialAnchor") - static bool IsEqual_FOculusXRUInt64(const FOculusXRUInt64 Left, const FOculusXRUInt64 Right) { return Left == Right; }; - - UFUNCTION(BlueprintPure, meta = (DisplayName = "FOculusXRUUID equal", CompactNodeTitle = "==", Keywords = "equal", BlueprintAutocast), Category = "OculusXR|SpatialAnchor") - static bool IsEqual_FOculusXRUUID(const FOculusXRUUID& Left, const FOculusXRUUID& Right) { return Left.IsEqual(Right); }; - - UFUNCTION(BlueprintCallable, Category = "OculusXR|SpatialAnchor") - static bool IsAnchorResultSuccess(EOculusXRAnchorResult::Type result); - - UFUNCTION(BlueprintCallable, Category = "OculusXR|SpatialAnchor") - static const UOculusXRBaseAnchorComponent* GetAnchorComponent(const FOculusXRSpaceQueryResult& QueryResult, EOculusXRSpaceComponentType ComponentType, UObject* Outer); -}; diff --git a/Plugins/MetaXR/Source/OculusXRAnchors/Public/OculusXRAnchorComponent.h b/Plugins/MetaXR/Source/OculusXRAnchors/Public/OculusXRAnchorComponent.h deleted file mode 100644 index d71e502..0000000 --- a/Plugins/MetaXR/Source/OculusXRAnchors/Public/OculusXRAnchorComponent.h +++ /dev/null @@ -1,56 +0,0 @@ -// Copyright (c) Meta Platforms, Inc. and affiliates. - -#pragma once - -#include "OculusXRAnchorTypes.h" -#include "Components/ActorComponent.h" -#include "OculusXRAnchorComponent.generated.h" - -UCLASS(meta = (DisplayName = "Oculus Anchor Component")) -class OCULUSXRANCHORS_API UOculusXRAnchorComponent : public UActorComponent -{ - GENERATED_BODY() -public: - UOculusXRAnchorComponent(const FObjectInitializer& ObjectInitializer); - - virtual void BeginPlay() override; - virtual void TickComponent(float DeltaTime, enum ELevelTick TickType, FActorComponentTickFunction* ThisTickFunction) override; - virtual void EndPlay(const EEndPlayReason::Type EndPlayReason) override; - - UFUNCTION(BlueprintPure, Category = "OculusXR|Anchor", meta = (DefaultToSelf = Target)) - FOculusXRUInt64 GetHandle() const; - - UFUNCTION(BlueprintCallable, Category = "OculusXR|Anchor", meta = (DefaultToSelf = Target)) - void SetHandle(FOculusXRUInt64 Handle); - - UFUNCTION(BlueprintPure, Category = "OculusXR|Anchor", meta = (DefaultToSelf = Target)) - bool HasValidHandle() const; - - UFUNCTION(BlueprintPure, Category = "OculusXR|Anchor", meta = (DefaultToSelf = Target)) - FOculusXRUUID GetUUID() const; - - void SetUUID(FOculusXRUUID NewUUID); - - UFUNCTION(BlueprintPure, Category = "OculusXR|Anchor", meta = (DefaultToSelf = Target)) - bool IsStoredAtLocation(EOculusXRSpaceStorageLocation Location) const; - - // Not exposed to BP because this is managed in code - void SetStoredLocation(EOculusXRSpaceStorageLocation Location, bool Stored); - - UFUNCTION(BlueprintPure, Category = "OculusXR|Anchor", meta = (DefaultToSelf = Target)) - bool IsSaved() const; - -protected: - bool bUpdateHeadSpaceTransform; - -private: - FOculusXRUInt64 AnchorHandle; - FOculusXRUUID AnchorUUID; - int32 StorageLocations; - - UPROPERTY() - class APlayerCameraManager* PlayerCameraManager; - - void UpdateAnchorTransform() const; - bool ToWorldSpacePose(FTransform CameraTransform, FTransform& OutTrackingSpaceTransform) const; -}; diff --git a/Plugins/MetaXR/Source/OculusXRAnchors/Public/OculusXRAnchorComponents.h b/Plugins/MetaXR/Source/OculusXRAnchors/Public/OculusXRAnchorComponents.h deleted file mode 100644 index d34d33f..0000000 --- a/Plugins/MetaXR/Source/OculusXRAnchors/Public/OculusXRAnchorComponents.h +++ /dev/null @@ -1,82 +0,0 @@ -// Copyright (c) Meta Platforms, Inc. and affiliates. - -#pragma once -#include "UObject/Class.h" -#include "OculusXRAnchorTypes.h" -#include "OculusXRAnchorComponents.generated.h" - -UCLASS(Blueprintable) -class OCULUSXRANCHORS_API UOculusXRBaseAnchorComponent : public UObject -{ - GENERATED_BODY() -public: - template - static T* FromSpace(uint64 space, UObject* Outer) - { - T* Component = NewObject(Outer); - Component->Space = space; - return Component; - } - - UFUNCTION(BlueprintCallable, Category = "OculusXR|SpatialAnchor") - bool IsComponentEnabled() const; - - UFUNCTION(BlueprintCallable, Category = "OculusXR|SpatialAnchor") - EOculusXRSpaceComponentType GetType() const; - - uint64 GetSpace() const; - -protected: - uint64 Space; - EOculusXRSpaceComponentType Type = EOculusXRSpaceComponentType::Undefined; -}; - -UCLASS(Blueprintable) -class OCULUSXRANCHORS_API UOculusXRLocatableAnchorComponent : public UOculusXRBaseAnchorComponent -{ - GENERATED_BODY() -public: - UOculusXRLocatableAnchorComponent() - { - Type = EOculusXRSpaceComponentType::Locatable; - } - - UFUNCTION(BlueprintCallable, Category = "OculusXR|SpatialAnchor") - bool GetTransform(FTransform& outTransform) const; -}; - -UCLASS(Blueprintable) -class OCULUSXRANCHORS_API UOculusXRSpaceContainerAnchorComponent : public UOculusXRBaseAnchorComponent -{ - GENERATED_BODY() -public: - UOculusXRSpaceContainerAnchorComponent() - { - Type = EOculusXRSpaceComponentType::SpaceContainer; - } - - UFUNCTION(BlueprintCallable, Category = "OculusXR|SpatialAnchor") - bool GetUUIDs(TArray& outUUIDs) const; -}; - -UCLASS(Blueprintable) -class OCULUSXRANCHORS_API UOculusXRSharableAnchorComponent : public UOculusXRBaseAnchorComponent -{ - GENERATED_BODY() -public: - UOculusXRSharableAnchorComponent() - { - Type = EOculusXRSpaceComponentType::Sharable; - } -}; - -UCLASS(Blueprintable) -class OCULUSXRANCHORS_API UOculusXRStorableAnchorComponent : public UOculusXRBaseAnchorComponent -{ - GENERATED_BODY() -public: - UOculusXRStorableAnchorComponent() - { - Type = EOculusXRSpaceComponentType::Storable; - } -}; diff --git a/Plugins/MetaXR/Source/OculusXRAnchors/Public/OculusXRAnchorDelegates.h b/Plugins/MetaXR/Source/OculusXRAnchors/Public/OculusXRAnchorDelegates.h deleted file mode 100644 index 0229463..0000000 --- a/Plugins/MetaXR/Source/OculusXRAnchors/Public/OculusXRAnchorDelegates.h +++ /dev/null @@ -1,165 +0,0 @@ -// Copyright (c) Meta Platforms, Inc. and affiliates. - -#pragma once - -#include "CoreTypes.h" -#include "OculusXRAnchorTypes.h" -#include "Delegates/Delegate.h" - -class FOculusXRAnchorEventDelegates -{ -public: - /* ovrpEventType_SpatialAnchorCreateComplete - * - * SpatialAnchorCreateComplete - * Prefix: - * FOculusXRSpatialAnchorCreateComplete - * Suffix: - * FOculusXRSpatialAnchorCreateCompleteDelegate - */ - DECLARE_MULTICAST_DELEGATE_FourParams(FOculusXRSpatialAnchorCreateCompleteDelegate, FOculusXRUInt64 /*requestId*/, EOculusXRAnchorResult::Type /*result*/, FOculusXRUInt64 /*space*/, FOculusXRUUID /*uuid*/); - static OCULUSXRANCHORS_API FOculusXRSpatialAnchorCreateCompleteDelegate OculusSpatialAnchorCreateComplete; - - /* ovrpEventType_SpaceSetComponentStatusComplete - * - * SpaceSetComponentStatusComplete - * Prefix: - * FOculusXRSpaceSetComponentStatusComplete - * Suffix: - * FOculusXRSpaceSetComponentStatusCompleteDelegate - */ - DECLARE_MULTICAST_DELEGATE_SixParams(FOculusXRSpaceSetComponentStatusCompleteDelegate, FOculusXRUInt64 /*requestId*/, EOculusXRAnchorResult::Type /*result*/, FOculusXRUInt64 /*space*/, FOculusXRUUID /*uuid*/, EOculusXRSpaceComponentType /*componenttype */, bool /*enabled*/); - static OCULUSXRANCHORS_API FOculusXRSpaceSetComponentStatusCompleteDelegate OculusSpaceSetComponentStatusComplete; - - /* ovrpEventType_SpaceQueryResults - * - * SpaceQueryResults - * Prefix: - * FOculusXRSpaceQueryResults - * Suffix: - * FOculusXRSpaceQueryResultsDelegate - */ - DECLARE_MULTICAST_DELEGATE_OneParam(FOculusXRSpaceQueryResultsDelegate, FOculusXRUInt64 /*requestId*/); - static OCULUSXRANCHORS_API FOculusXRSpaceQueryResultsDelegate OculusSpaceQueryResults; - - /* SpaceQueryResult (no ovrp event type) - * - * SpaceQueryResult - * Prefix: - * FOculusXRSpaceQueryResult - * Suffix: - * FOculusXRSpaceQueryResultDelegate - */ - DECLARE_MULTICAST_DELEGATE_ThreeParams(FOculusXRSpaceQueryResultDelegate, FOculusXRUInt64 /*requestId*/, FOculusXRUInt64 /* space*/, FOculusXRUUID /*uuid*/); - static OCULUSXRANCHORS_API FOculusXRSpaceQueryResultDelegate OculusSpaceQueryResult; - - /* ovrpEventType_SpaceQueryComplete - * - * SpaceQueryComplete - * Prefix: - * FOculusXRSpaceQueryComplete - * Suffix: - * FOculusXRSpaceQueryCompleteDelegate - */ - DECLARE_MULTICAST_DELEGATE_TwoParams(FOculusXRSpaceQueryCompleteDelegate, FOculusXRUInt64 /*requestId*/, EOculusXRAnchorResult::Type /*result*/); - static OCULUSXRANCHORS_API FOculusXRSpaceQueryCompleteDelegate OculusSpaceQueryComplete; - - /* ovrpEventType_SpaceSaveComplete - * - * SpaceSaveComplete - * Prefix: - * FOculusXRSpaceSaveComplete - * Suffix: - * FOculusXRSpaceSaveCompleteDelegate - */ - DECLARE_MULTICAST_DELEGATE_FiveParams(FOculusXRSpaceSaveCompleteDelegate, FOculusXRUInt64 /*requestId*/, FOculusXRUInt64 /* space*/, bool /* sucess*/, EOculusXRAnchorResult::Type /*result*/, FOculusXRUUID /*uuid*/); - static OCULUSXRANCHORS_API FOculusXRSpaceSaveCompleteDelegate OculusSpaceSaveComplete; - - /* ovrpEventType_SpaceListSaveResult - * - * SpaceListSaveComplete - * Prefix: - * FOculusSpaceListSaveComplete - * Suffix: - * FOculusSpaceListSaveCompleteDelegate - */ - DECLARE_MULTICAST_DELEGATE_TwoParams(FOculusXRSpaceListSaveCompleteDelegate, FOculusXRUInt64 /*requestId*/, EOculusXRAnchorResult::Type /*result*/); - static OCULUSXRANCHORS_API FOculusXRSpaceListSaveCompleteDelegate OculusSpaceListSaveComplete; - - /* ovrpEventType_SpaceEraseComplete - * - * SpaceEraseComplete - * Prefix: - * FOculusXRSpaceEraseComplete - * Suffix: - * FOculusXRSpaceEraseCompleteDelegate - */ - DECLARE_MULTICAST_DELEGATE_FourParams(FOculusXRSpaceEraseCompleteDelegate, FOculusXRUInt64 /*requestId*/, EOculusXRAnchorResult::Type /* result*/, FOculusXRUUID /*uuid*/, EOculusXRSpaceStorageLocation /*location*/); - static OCULUSXRANCHORS_API FOculusXRSpaceEraseCompleteDelegate OculusSpaceEraseComplete; - - /* ovrpEventType_SpaceShareSpaceResult - * - * SpaceShareComplete - * Prefix: - * FOculusSpaceShareSpacesComplete - * Suffix: - * FOculusSpaceShareSpacesCompleteDelegate - */ - DECLARE_MULTICAST_DELEGATE_TwoParams(FOculusXRSpaceShareCompleteDelegate, FOculusXRUInt64 /*requestId*/, EOculusXRAnchorResult::Type /*result*/); - static OCULUSXRANCHORS_API FOculusXRSpaceShareCompleteDelegate OculusSpaceShareComplete; - - /* ovrpEventType_SpaceDiscoveryComplete - * - * SpaceDiscoveryComplete - * Prefix: - * FOculusXRSpaceDiscoveryComplete - * Suffix: - * FOculusXRDiscoverSpacesCompleteDelegate - */ - DECLARE_MULTICAST_DELEGATE_TwoParams(FOculusXRAnchorsDiscoverCompleteDelegate, FOculusXRUInt64 /*requestId*/, EOculusXRAnchorResult::Type /*result*/); - static OCULUSXRANCHORS_API FOculusXRAnchorsDiscoverCompleteDelegate OculusAnchorsDiscoverComplete; - - /* ovrpEventType_SpaceDiscoveryResultsAvailable - * - * SpaceDiscoveryResults - * Prefix: - * FOculusXRAnchorsDiscoverResults - * Suffix: - * FOculusXRAnchorsDiscoverResultsDelegate - */ - DECLARE_MULTICAST_DELEGATE_TwoParams(FOculusXRAnchorsDiscoverResultsDelegate, FOculusXRUInt64 /*requestId*/, const TArray& /*results*/); - static OCULUSXRANCHORS_API FOculusXRAnchorsDiscoverResultsDelegate OculusAnchorsDiscoverResults; - - /* ovrpEventType_SpacesSaveResult - * - * SpacesSaveComplete - * Prefix: - * FOculusXRAnchorsSaveComplete - * Suffix: - * FOculusXRAnchorsSaveCompleteDelegate - */ - DECLARE_MULTICAST_DELEGATE_TwoParams(FOculusXRAnchorsSaveCompleteDelegate, FOculusXRUInt64 /*requestId*/, EOculusXRAnchorResult::Type /*result*/); - static OCULUSXRANCHORS_API FOculusXRAnchorsSaveCompleteDelegate OculusAnchorsSaveComplete; - - /* ovrpEventType_SpacesEraseResult - * - * SpacesEraseResult - * Prefix: - * FOculusXRAnchorsEraseComplete - * Suffix: - * FOculusXRAnchorsEraseCompleteDelegate - */ - DECLARE_MULTICAST_DELEGATE_TwoParams(FOculusXRAnchorsEraseCompleteDelegate, FOculusXRUInt64 /*requestId*/, EOculusXRAnchorResult::Type /*result*/); - static OCULUSXRANCHORS_API FOculusXRAnchorsEraseCompleteDelegate OculusAnchorsEraseComplete; - - /* ovrpEventType_SpaceShareSpaceResult - * - * ShareAnchorsComplete - * Prefix: - * FOculusXRShareAnchorsComplete - * Suffix: - * FOculusXRShareAnchorsCompleteDelegate - */ - DECLARE_MULTICAST_DELEGATE_TwoParams(FOculusXRShareAnchorsCompleteDelegate, FOculusXRUInt64 /*requestId*/, EOculusXRAnchorResult::Type /*result*/); - static OCULUSXRANCHORS_API FOculusXRShareAnchorsCompleteDelegate OculusShareAnchorsComplete; -}; diff --git a/Plugins/MetaXR/Source/OculusXRAnchors/Public/OculusXRAnchorFunctions.h b/Plugins/MetaXR/Source/OculusXRAnchors/Public/OculusXRAnchorFunctions.h deleted file mode 100644 index 6faa648..0000000 --- a/Plugins/MetaXR/Source/OculusXRAnchors/Public/OculusXRAnchorFunctions.h +++ /dev/null @@ -1,40 +0,0 @@ -// Copyright (c) Meta Platforms, Inc. and affiliates. - -#pragma once - -#include "OculusXRAnchorTypes.h" - -class OCULUSXRANCHORS_API IOculusXRAnchorFunctions -{ -public: - virtual EOculusXRAnchorResult::Type CreateAnchor(const FTransform& InTransform, uint64& OutRequestId, const FTransform& CameraTransform) = 0; - virtual EOculusXRAnchorResult::Type DestroyAnchor(uint64 AnchorHandle) = 0; - - /** - * Try to get the anchors transform. The transform may not always be a available. - * - * @param AnchorHandle The Anchor handle. - * @param OutTransform (out) The anchors transform. - * @param OutLocationFlags (out) The location flags. - * @param Space The space in which this transform should be returned. - * - * @return Whether or not the transform could be retrieved. - */ - virtual EOculusXRAnchorResult::Type TryGetAnchorTransform(uint64 AnchorHandle, FTransform& OutTransform, FOculusXRAnchorLocationFlags& OutLocationFlags, EOculusXRAnchorSpace Space) = 0; - virtual EOculusXRAnchorResult::Type SetAnchorComponentStatus(uint64 AnchorHandle, EOculusXRSpaceComponentType ComponentType, bool Enable, float Timeout, uint64& OutRequestId) = 0; - virtual EOculusXRAnchorResult::Type GetAnchorComponentStatus(uint64 AnchorHandle, EOculusXRSpaceComponentType ComponentType, bool& OutEnabled, bool& OutChangePending) = 0; - virtual EOculusXRAnchorResult::Type GetSupportedAnchorComponents(uint64 AnchorHandle, TArray& OutSupportedTypes) = 0; - virtual EOculusXRAnchorResult::Type GetAnchorContainerUUIDs(uint64 AnchorHandle, TArray& OutUUIDs) = 0; - - virtual EOculusXRAnchorResult::Type SaveAnchor(uint64 AnchorHandle, EOculusXRSpaceStorageLocation StorageLocation, EOculusXRSpaceStoragePersistenceMode StoragePersistenceMode, uint64& OutRequestId) = 0; - virtual EOculusXRAnchorResult::Type SaveAnchorList(const TArray& AnchorHandles, EOculusXRSpaceStorageLocation StorageLocation, uint64& OutRequestId) = 0; - virtual EOculusXRAnchorResult::Type SaveAnchors(const TArray& AnchorHandles, uint64& OutRequestId) = 0; - - virtual EOculusXRAnchorResult::Type DiscoverAnchors(const FOculusXRSpaceDiscoveryInfo& DiscoveryInfo, uint64& OutRequestId) = 0; - virtual EOculusXRAnchorResult::Type QueryAnchors(const FOculusXRSpaceQueryInfo& QueryInfo, uint64& OutRequestId) = 0; - virtual EOculusXRAnchorResult::Type ShareAnchors(const TArray& AnchorHandles, const TArray& UserIds, uint64& OutRequestId) = 0; - virtual EOculusXRAnchorResult::Type ShareAnchors(const TArray& AnchorHandles, const TArray& Groups, uint64& OutRequestId) = 0; - - virtual EOculusXRAnchorResult::Type EraseAnchor(uint64 AnchorHandle, EOculusXRSpaceStorageLocation StorageLocation, uint64& OutRequestId) = 0; - virtual EOculusXRAnchorResult::Type EraseAnchors(const TArray& AnchorHandles, const TArray& UUIDs, uint64& OutRequestId) = 0; -}; diff --git a/Plugins/MetaXR/Source/OculusXRAnchors/Public/OculusXRAnchorLatentActions.h b/Plugins/MetaXR/Source/OculusXRAnchors/Public/OculusXRAnchorLatentActions.h deleted file mode 100644 index 236937f..0000000 --- a/Plugins/MetaXR/Source/OculusXRAnchors/Public/OculusXRAnchorLatentActions.h +++ /dev/null @@ -1,445 +0,0 @@ -// Copyright (c) Meta Platforms, Inc. and affiliates. - -#pragma once - -#include "Kismet/BlueprintAsyncActionBase.h" -#include "Templates/SharedPointer.h" -#include "OculusXRAnchors.h" -#include "OculusXRAnchorTypes.h" -#include "OculusXRAnchorComponent.h" -#include "OculusXRAnchorComponents.h" -#include "OculusXRAnchorLatentActions.generated.h" - -DECLARE_DYNAMIC_MULTICAST_DELEGATE_TwoParams(FOculusXR_LatentAction_CreateSpatialAnchor_Success, UOculusXRAnchorComponent*, Anchor, EOculusXRAnchorResult::Type, Result); -DECLARE_DYNAMIC_MULTICAST_DELEGATE_OneParam(FOculusXR_LatentAction_CreateSpatialAnchor_Failure, EOculusXRAnchorResult::Type, Result); - -DECLARE_DYNAMIC_MULTICAST_DELEGATE_ThreeParams(FOculusXR_LatentAction_EraseAnchor_Success, AActor*, Actor, FOculusXRUUID, UUID, EOculusXRAnchorResult::Type, Result); -DECLARE_DYNAMIC_MULTICAST_DELEGATE_OneParam(FOculusXR_LatentAction_EraseAnchor_Failure, EOculusXRAnchorResult::Type, Result); - -DECLARE_DYNAMIC_MULTICAST_DELEGATE_TwoParams(FOculusXR_LatentAction_SaveAnchor_Success, UOculusXRAnchorComponent*, Anchor, EOculusXRAnchorResult::Type, Result); -DECLARE_DYNAMIC_MULTICAST_DELEGATE_OneParam(FOculusXR_LatentAction_SaveAnchor_Failure, EOculusXRAnchorResult::Type, Result); - -DECLARE_DYNAMIC_MULTICAST_DELEGATE_TwoParams(FOculusXR_LatentAction_SaveAnchorList_Success, const TArray&, Anchors, EOculusXRAnchorResult::Type, Result); -DECLARE_DYNAMIC_MULTICAST_DELEGATE_OneParam(FOculusXR_LatentAction_SaveAnchorList_Failure, EOculusXRAnchorResult::Type, Result); - -DECLARE_DYNAMIC_MULTICAST_DELEGATE_TwoParams(FOculusXR_LatentAction_QueryAnchors_Success, const TArray&, QueryResults, EOculusXRAnchorResult::Type, Result); -DECLARE_DYNAMIC_MULTICAST_DELEGATE_OneParam(FOculusXR_LatentAction_QueryAnchors_Failure, EOculusXRAnchorResult::Type, Result); - -DECLARE_DYNAMIC_MULTICAST_DELEGATE_FourParams(FOculusXR_LatentAction_SetComponentStatus_Success, UOculusXRAnchorComponent*, Anchor, EOculusXRSpaceComponentType, ComponentType, bool, Enabled, EOculusXRAnchorResult::Type, Result); -DECLARE_DYNAMIC_MULTICAST_DELEGATE_OneParam(FOculusXR_LatentAction_SetComponentStatus_Failure, EOculusXRAnchorResult::Type, Result); - -DECLARE_DYNAMIC_MULTICAST_DELEGATE_TwoParams(FOculusXR_LatentAction_SetAnchorComponentStatus_Success, UOculusXRBaseAnchorComponent*, Component, EOculusXRAnchorResult::Type, Result); -DECLARE_DYNAMIC_MULTICAST_DELEGATE_OneParam(FOculusXR_LatentAction_SetAnchorComponentStatus_Failure, EOculusXRAnchorResult::Type, Result); - -DECLARE_DYNAMIC_MULTICAST_DELEGATE_ThreeParams(FOculusXR_LatentAction_ShareAnchors_Success, const TArray&, SharedAnchors, const TArray&, UserIds, EOculusXRAnchorResult::Type, Result); -DECLARE_DYNAMIC_MULTICAST_DELEGATE_OneParam(FOculusXR_LatentAction_ShareAnchors_Failure, EOculusXRAnchorResult::Type, Result); - -DECLARE_DYNAMIC_MULTICAST_DELEGATE_TwoParams(FOculusXR_LatentAction_SaveAnchors_Success, const TArray&, Anchors, EOculusXRAnchorResult::Type, Result); -DECLARE_DYNAMIC_MULTICAST_DELEGATE_OneParam(FOculusXR_LatentAction_SaveAnchors_Failure, EOculusXRAnchorResult::Type, Result); - -DECLARE_DYNAMIC_MULTICAST_DELEGATE_FourParams(FOculusXR_LatentAction_EraseAnchors_Success, const TArray&, Anchors, const TArray&, AnchorHandles, const TArray&, UUIDs, EOculusXRAnchorResult::Type, Result); -DECLARE_DYNAMIC_MULTICAST_DELEGATE_OneParam(FOculusXR_LatentAction_EraseAnchors_Failure, EOculusXRAnchorResult::Type, Result); - -DECLARE_DYNAMIC_MULTICAST_DELEGATE_OneParam(FOculusXR_LatentAction_DiscoverAnchors_Discovered, const TArray&, DiscoveryResult); -DECLARE_DYNAMIC_MULTICAST_DELEGATE_OneParam(FOculusXR_LatentAction_DiscoverAnchors_Complete, EOculusXRAnchorResult::Type, Result); -DECLARE_DYNAMIC_MULTICAST_DELEGATE_OneParam(FOculusXR_LatentAction_DiscoverAnchors_Failure, EOculusXRAnchorResult::Type, Result); - -DECLARE_DYNAMIC_MULTICAST_DELEGATE_TwoParams(FOculusXR_LatentAction_GetSharedAnchors_Success, const TArray&, SharedAnchors, EOculusXRAnchorResult::Type, Result); -DECLARE_DYNAMIC_MULTICAST_DELEGATE_OneParam(FOculusXR_LatentAction_GetSharedAnchors_Failure, EOculusXRAnchorResult::Type, Result); - -DECLARE_DYNAMIC_MULTICAST_DELEGATE_FourParams(FOculusXR_LatentAction_ShareAnchorsWithGroups_Complete, bool, Success, const TArray&, Groups, const TArray&, AnchorHandles, EOculusXRAnchorResult::Type, Result); -DECLARE_DYNAMIC_MULTICAST_DELEGATE_ThreeParams(FOculusXR_LatentAction_GetSharedAnchorsFromGroup_Complete, bool, Success, const TArray&, Anchors, EOculusXRAnchorResult::Type, Result); - -// -// Create Anchor -// -UCLASS() -class OCULUSXRANCHORS_API UOculusXRAsyncAction_CreateSpatialAnchor : public UBlueprintAsyncActionBase -{ - GENERATED_BODY() -public: - virtual void Activate() override; - - UFUNCTION(BlueprintCallable, meta = (BlueprintInternalUseOnly = "true")) - static UOculusXRAsyncAction_CreateSpatialAnchor* OculusXRAsyncCreateSpatialAnchor(AActor* TargetActor, const FTransform& AnchorTransform); - - UPROPERTY(BlueprintAssignable) - FOculusXR_LatentAction_CreateSpatialAnchor_Success Success; - - UPROPERTY(BlueprintAssignable) - FOculusXR_LatentAction_CreateSpatialAnchor_Failure Failure; - - // Target actor - UPROPERTY(Transient) - AActor* TargetActor; - - FTransform AnchorTransform; - -private: - void HandleCreateComplete(EOculusXRAnchorResult::Type CreateResult, UOculusXRAnchorComponent* Anchor); -}; - -// -// Erase Anchor -// -UCLASS() -class OCULUSXRANCHORS_API UOculusXRAsyncAction_EraseAnchor : public UBlueprintAsyncActionBase -{ - GENERATED_BODY() -public: - virtual void Activate() override; - - UFUNCTION(BlueprintCallable, meta = (BlueprintInternalUseOnly = "true")) - static UOculusXRAsyncAction_EraseAnchor* OculusXRAsyncEraseAnchor(AActor* TargetActor); - - UPROPERTY(BlueprintAssignable) - FOculusXR_LatentAction_EraseAnchor_Success Success; - - UPROPERTY(BlueprintAssignable) - FOculusXR_LatentAction_EraseAnchor_Failure Failure; - - // Target actor - UPROPERTY(Transient) - AActor* TargetActor; - - FOculusXRUInt64 DeleteRequestId; - -private: - void HandleEraseAnchorComplete(EOculusXRAnchorResult::Type EraseResult, FOculusXRUUID UUID); -}; - -// -// Save Anchor -// -UCLASS() -class OCULUSXRANCHORS_API UOculusXRAsyncAction_SaveAnchor : public UBlueprintAsyncActionBase -{ - GENERATED_BODY() -public: - virtual void Activate() override; - - UFUNCTION(BlueprintCallable, meta = (BlueprintInternalUseOnly = "true")) - static UOculusXRAsyncAction_SaveAnchor* OculusXRAsyncSaveAnchor(AActor* TargetActor, EOculusXRSpaceStorageLocation StorageLocation); - - UPROPERTY(BlueprintAssignable) - FOculusXR_LatentAction_SaveAnchor_Success Success; - - UPROPERTY(BlueprintAssignable) - FOculusXR_LatentAction_SaveAnchor_Failure Failure; - - // Target actor - UPROPERTY(Transient) - AActor* TargetActor; - - EOculusXRSpaceStorageLocation StorageLocation; - -private: - void HandleSaveAnchorComplete(EOculusXRAnchorResult::Type SaveResult, UOculusXRAnchorComponent* Anchor); -}; - -// -// Save Anchor List -// -UCLASS() -class OCULUSXRANCHORS_API UOculusXRAsyncAction_SaveAnchorList : public UBlueprintAsyncActionBase -{ - GENERATED_BODY() -public: - virtual void Activate() override; - - UFUNCTION(BlueprintCallable, meta = (BlueprintInternalUseOnly = "true")) - static UOculusXRAsyncAction_SaveAnchorList* OculusXRAsyncSaveAnchorList(const TArray& TargetActors, EOculusXRSpaceStorageLocation StorageLocation); - - UPROPERTY(BlueprintAssignable) - FOculusXR_LatentAction_SaveAnchorList_Success Success; - - UPROPERTY(BlueprintAssignable) - FOculusXR_LatentAction_SaveAnchorList_Failure Failure; - - UPROPERTY(Transient) - TArray TargetAnchors; - - EOculusXRSpaceStorageLocation StorageLocation; - -private: - void HandleSaveAnchorListComplete(EOculusXRAnchorResult::Type SaveResult, const TArray& SavedSpaces); -}; - -// -// Query Anchors -// -UCLASS() -class OCULUSXRANCHORS_API UOculusXRAsyncAction_QueryAnchors : public UBlueprintAsyncActionBase -{ - GENERATED_BODY() -public: - virtual void Activate() override; - - UFUNCTION(BlueprintCallable, meta = (BlueprintInternalUseOnly = "true")) - static UOculusXRAsyncAction_QueryAnchors* OculusXRAsyncQueryAnchors(EOculusXRSpaceStorageLocation Location, const TArray& UUIDs); - - UFUNCTION(BlueprintCallable, meta = (BlueprintInternalUseOnly = "true")) - static UOculusXRAsyncAction_QueryAnchors* OculusXRAsyncQueryAnchorsAdvanced(const FOculusXRSpaceQueryInfo& QueryInfo); - - UPROPERTY(BlueprintAssignable) - FOculusXR_LatentAction_QueryAnchors_Success Success; - - UPROPERTY(BlueprintAssignable) - FOculusXR_LatentAction_QueryAnchors_Failure Failure; - - FOculusXRSpaceQueryInfo QueryInfo; - TArray QueryResults; - -private: - void HandleQueryAnchorsResults(EOculusXRAnchorResult::Type QueryResult, const TArray& Results); -}; - -// -// Set Component Status -// -UCLASS() -class OCULUSXRANCHORS_API UOculusXRAsyncAction_SetAnchorComponentStatus : public UBlueprintAsyncActionBase -{ - GENERATED_BODY() -public: - virtual void Activate() override; - - UFUNCTION(BlueprintCallable, meta = (BlueprintInternalUseOnly = "true")) - static UOculusXRAsyncAction_SetAnchorComponentStatus* OculusXRAsyncSetAnchorComponentStatus(AActor* TargetActor, EOculusXRSpaceComponentType ComponentType, bool bEnabled); - - UPROPERTY(BlueprintAssignable) - FOculusXR_LatentAction_SetComponentStatus_Success Success; - - UPROPERTY(BlueprintAssignable) - FOculusXR_LatentAction_SetComponentStatus_Failure Failure; - - // Target actor - UPROPERTY(Transient) - AActor* TargetActor; - - UPROPERTY(Transient) - UOculusXRAnchorComponent* TargetAnchorComponent; - - EOculusXRSpaceComponentType ComponentType; - bool bEnabled; - -private: - void HandleSetComponentStatusComplete(EOculusXRAnchorResult::Type SetStatusResult, uint64 AnchorHandle, EOculusXRSpaceComponentType SpaceComponentType, bool bResultEnabled); -}; - -// -// Set Anchor Component Status -// -UCLASS() -class OCULUSXRANCHORS_API UOculusXRAsyncAction_SetComponentStatus : public UBlueprintAsyncActionBase -{ - GENERATED_BODY() -public: - virtual void Activate() override; - - UFUNCTION(BlueprintCallable, meta = (BlueprintInternalUseOnly = "true")) - static UOculusXRAsyncAction_SetComponentStatus* OculusXRAsyncSetComponentStatus(UOculusXRBaseAnchorComponent* Component, bool bEnabled); - - UPROPERTY(BlueprintAssignable) - FOculusXR_LatentAction_SetAnchorComponentStatus_Success Success; - - UPROPERTY(BlueprintAssignable) - FOculusXR_LatentAction_SetAnchorComponentStatus_Failure Failure; - - // Target actor - UPROPERTY(Transient) - UOculusXRBaseAnchorComponent* Component; - bool bEnabled; - -private: - void HandleSetComponentStatusComplete(EOculusXRAnchorResult::Type SetStatusResult, uint64 AnchorHandle, EOculusXRSpaceComponentType SpaceComponentType, bool bResultEnabled); -}; - -// -// Share Anchors -// -UCLASS() -class OCULUSXRANCHORS_API UOculusXRAsyncAction_ShareAnchors : public UBlueprintAsyncActionBase -{ - GENERATED_BODY() -public: - virtual void Activate() override; - - UFUNCTION(BlueprintCallable, meta = (BlueprintInternalUseOnly = "true")) - static UOculusXRAsyncAction_ShareAnchors* OculusXRAsyncShareAnchors(const TArray& TargetActors, const TArray& ToShareWithIds); - - UPROPERTY(BlueprintAssignable) - FOculusXR_LatentAction_ShareAnchors_Success Success; - - UPROPERTY(BlueprintAssignable) - FOculusXR_LatentAction_ShareAnchors_Failure Failure; - - // Target Spaces - UPROPERTY(Transient) - TArray TargetAnchors; - - // Users to share with - TArray ToShareWithIds; - - FOculusXRUInt64 ShareSpacesRequestId; - -private: - void HandleShareAnchorsComplete(EOculusXRAnchorResult::Type ShareResult, const TArray& TargetAnchors, const TArray& OculusUserIds); -}; - -// -// Save Anchors -// -UCLASS() -class OCULUSXRANCHORS_API UOculusXRAsyncAction_SaveAnchors : public UBlueprintAsyncActionBase -{ - GENERATED_BODY() -public: - virtual void Activate() override; - - UFUNCTION(BlueprintCallable, meta = (BlueprintInternalUseOnly = "true")) - static UOculusXRAsyncAction_SaveAnchors* OculusXRAsyncSaveAnchors(const TArray& TargetActors); - - UPROPERTY(BlueprintAssignable) - FOculusXR_LatentAction_SaveAnchors_Success Success; - - UPROPERTY(BlueprintAssignable) - FOculusXR_LatentAction_SaveAnchors_Failure Failure; - - UPROPERTY(Transient) - TArray TargetAnchors; - -private: - void HandleSaveAnchorsComplete(EOculusXRAnchorResult::Type SaveResult, const TArray& SavedSpaces); -}; - -// -// Erase Anchors -// -UCLASS() -class OCULUSXRANCHORS_API UOculusXRAsyncAction_EraseAnchors : public UBlueprintAsyncActionBase -{ - GENERATED_BODY() -public: - virtual void Activate() override; - - UFUNCTION(BlueprintCallable, meta = (BlueprintInternalUseOnly = "true", AutoCreateRefTerm = "TargetActors,AnchorHandles,AnchorUUIDs")) - static UOculusXRAsyncAction_EraseAnchors* OculusXRAsyncEraseAnchors(const TArray& TargetActors, const TArray& AnchorHandles, const TArray& AnchorUUIDs); - - UPROPERTY(BlueprintAssignable) - FOculusXR_LatentAction_EraseAnchors_Success Success; - - UPROPERTY(BlueprintAssignable) - FOculusXR_LatentAction_EraseAnchors_Failure Failure; - - UPROPERTY(Transient) - TArray TargetAnchors; - - TArray TargetAnchorHandles; - TArray TargetUUIDs; - -private: - void HandleEraseAnchorsComplete(EOculusXRAnchorResult::Type EraseResult, const TArray& ErasedAnchorComponents, const TArray& ErasedAnchorHandles, const TArray& ErasedAnchorUUIDs); -}; - -// -// Anchors Discovery -// -UCLASS() -class OCULUSXRANCHORS_API UOculusXRAsyncAction_DiscoverAnchors : public UBlueprintAsyncActionBase -{ - GENERATED_BODY() -public: - virtual void Activate() override; - - UFUNCTION(BlueprintCallable, meta = (BlueprintInternalUseOnly = "true")) - static UOculusXRAsyncAction_DiscoverAnchors* OculusXRAsyncDiscoverAnchors(const FOculusXRSpaceDiscoveryInfo& DiscoveryInfo); - - UPROPERTY(BlueprintAssignable) - FOculusXR_LatentAction_DiscoverAnchors_Discovered Discovered; - - UPROPERTY(BlueprintAssignable) - FOculusXR_LatentAction_DiscoverAnchors_Complete Complete; - - UPROPERTY(BlueprintAssignable) - FOculusXR_LatentAction_DiscoverAnchors_Failure Failure; - - UPROPERTY(Transient) - FOculusXRSpaceDiscoveryInfo DiscoveryInfo; - -private: - void HandleDiscoverResult(const TArray& DiscoveredAnchors); - void HandleDiscoverComplete(EOculusXRAnchorResult::Type CompleteResult); -}; - -// -// Get Shared Anchors -// -UCLASS() -class OCULUSXRANCHORS_API UOculusXRAsyncAction_GetSharedAnchors : public UBlueprintAsyncActionBase -{ - GENERATED_BODY() -public: - virtual void Activate() override; - - UFUNCTION(BlueprintCallable, meta = (BlueprintInternalUseOnly = "true")) - static UOculusXRAsyncAction_GetSharedAnchors* OculusXRAsyncGetSharedAnchors(const TArray& AnchorUUIDs); - - UPROPERTY(BlueprintAssignable) - FOculusXR_LatentAction_GetSharedAnchors_Success Success; - - UPROPERTY(BlueprintAssignable) - FOculusXR_LatentAction_GetSharedAnchors_Failure Failure; - - UPROPERTY(Transient) - TArray Anchors; - -private: - void HandleGetSharedAnchorsResult(EOculusXRAnchorResult::Type Result, const TArray& SharedAnchors); -}; - -// -// Share with groups -// -UCLASS() -class OCULUSXRANCHORS_API UOculusXRAsyncAction_ShareAnchorsWithGroups : public UBlueprintAsyncActionBase -{ - GENERATED_BODY() -public: - virtual void Activate() override; - - UFUNCTION(BlueprintCallable, meta = (BlueprintInternalUseOnly = "true")) - static UOculusXRAsyncAction_ShareAnchorsWithGroups* OculusXRShareAnchorsWithGroupsAsync(const TArray& GroupUUIDs, const TArray& AnchorHandles); - - UPROPERTY(BlueprintAssignable) - FOculusXR_LatentAction_ShareAnchorsWithGroups_Complete Complete; - - TArray GroupUUIDs; - TArray AnchorHandles; - -private: - void HandleShareComplete(const OculusXRAnchors::FShareAnchorsWithGroups::FResultType& Result); -}; - -// -// Get shared anchors from groups -// -UCLASS() -class OCULUSXRANCHORS_API UOculusXRAsyncAction_GetSharedAnchorsFromGroup : public UBlueprintAsyncActionBase -{ - GENERATED_BODY() -public: - virtual void Activate() override; - - UFUNCTION(BlueprintCallable, meta = (BlueprintInternalUseOnly = "true", AutoCreateRefTerm = "GroupUUIDs,AnchorUUIDs")) - static UOculusXRAsyncAction_GetSharedAnchorsFromGroup* OculusXRGetSharedAnchorsFromGroupAsync(const FOculusXRUUID& GroupUUIDs, const TArray& AnchorUUIDs); - - UPROPERTY(BlueprintAssignable) - FOculusXR_LatentAction_GetSharedAnchorsFromGroup_Complete Complete; - - FOculusXRUUID GroupUuid; - TArray Anchors; - -private: - void HandleGetSharedAnchorsComplete(const OculusXRAnchors::FGetAnchorsSharedWithGroup::FResultType& Result); -}; diff --git a/Plugins/MetaXR/Source/OculusXRAnchors/Public/OculusXRAnchorTypes.h b/Plugins/MetaXR/Source/OculusXRAnchors/Public/OculusXRAnchorTypes.h deleted file mode 100644 index 93b5931..0000000 --- a/Plugins/MetaXR/Source/OculusXRAnchors/Public/OculusXRAnchorTypes.h +++ /dev/null @@ -1,432 +0,0 @@ -// Copyright (c) Meta Platforms, Inc. and affiliates. - -#pragma once -#include -#include "OculusXRAnchorTypes.generated.h" - -#define OCULUSXR_UUID_SIZE 16 - -typedef uint8 UuidArray[OCULUSXR_UUID_SIZE]; -typedef uint64 SpaceUser; - -UENUM(BlueprintType) -namespace EOculusXRAnchorResult -{ - enum Type - { - Success = 0, - Success_EventUnavailable = 1, - Success_Pending = 2, - - /// Failure - Failure = -1000, - Failure_InvalidParameter = -1001, - Failure_NotInitialized = -1002, - Failure_InvalidOperation = -1003, - Failure_Unsupported = -1004, - Failure_NotYetImplemented = -1005, - Failure_OperationFailed = -1006, - Failure_InsufficientSize = -1007, - Failure_DataIsInvalid = -1008, - Failure_DeprecatedOperation = -1009, - Failure_ErrorLimitReached = -1010, - Failure_ErrorInitializationFailed = -1011, - - /// Space error cases - Failure_SpaceCloudStorageDisabled = -2000, - Failure_SpaceMappingInsufficient = -2001, - Failure_SpaceLocalizationFailed = -2002, - Failure_SpaceNetworkTimeout = -2003, - Failure_SpaceNetworkRequestFailed = -2004, - - /// APD warnings and error cases - Failure_SpaceInsufficientResources = -9000, - Failure_SpaceStorageAtCapacity = -9001, - Failure_SpaceInsufficientView = -9002, - Failure_SpacePermissionInsufficient = -9003, - Failure_SpaceRateLimited = -9004, - Failure_SpaceTooDark = -9005, - Failure_SpaceTooBright = -9006, - - // Boundary visibility - Warning_BoundaryVisibilitySuppressionNotAllowed = 9030, - }; -} // namespace EOculusXRAnchorResult - -UENUM(BlueprintType, meta = (Bitflags)) -enum class EOculusLocationFlags : uint8 -{ - None = 0, // required for the metadata generation - OrientationValid = (1 << 0), - PositionValid = (1 << 1), - OrientationTracked = (1 << 2), - PositionTracked = (1 << 3) -}; - -USTRUCT(BlueprintType) -struct OCULUSXRANCHORS_API FOculusXRAnchorLocationFlags -{ - GENERATED_BODY() -public: - FOculusXRAnchorLocationFlags(uint32 InFlags = 0) - : Flags(InFlags) {} - - bool OrientationValid() const - { - return Flags & static_cast(EOculusLocationFlags::OrientationValid); - } - - bool PositionValid() const - { - return Flags & static_cast(EOculusLocationFlags::PositionValid); - } - - bool OrientationTracked() const - { - return Flags & static_cast(EOculusLocationFlags::OrientationTracked); - } - - bool PositionTracked() const - { - return Flags & static_cast(EOculusLocationFlags::PositionTracked); - } - - bool IsValid() const - { - return OrientationValid() && PositionValid(); - } - -private: - UPROPERTY(BlueprintReadOnly, Category = "OculusXR|SpatialAnchor", meta = (AllowPrivateAccess = "true", Bitmask, BitmaskEnum = "EOculusLocationFlags")) - int32 Flags; -}; - -USTRUCT(BlueprintType) -struct OCULUSXRANCHORS_API FOculusXRUUID -{ - GENERATED_BODY() - - FOculusXRUUID(); - FOculusXRUUID(const UuidArray& In); - - bool operator==(const FOculusXRUUID& Other) const; - bool operator!=(const FOculusXRUUID& Other) const; - - bool IsValidUUID() const; - - bool IsEqual(const FOculusXRUUID& Other) const; - friend uint32 GetTypeHash(const FOculusXRUUID& Other) { return FCrc::MemCrc32(&Other.UUIDBytes, sizeof(Other.UUIDBytes)); } - bool NetSerialize(FArchive& Ar, class UPackageMap* Map, bool& bOutSuccess); - - OCULUSXRANCHORS_API friend FArchive& operator<<(FArchive& Ar, FOculusXRUUID& UUID); - bool Serialize(FArchive& Ar); - - FString ToString() const; - - uint8 UUIDBytes[OCULUSXR_UUID_SIZE]; -}; - -template <> -struct TStructOpsTypeTraits : public TStructOpsTypeTraitsBase2 -{ - enum - { - WithIdenticalViaEquality = true, - WithNetSerializer = true, - WithSerializer = true - }; -}; - -USTRUCT(BlueprintType) -struct OCULUSXRANCHORS_API FOculusXRUInt64 -{ - GENERATED_BODY() - - FOculusXRUInt64() - : FOculusXRUInt64(0) {} - FOculusXRUInt64(const uint64& Value) { this->Value = Value; } - - operator uint64() const { return Value; } - bool operator==(const FOculusXRUInt64& Right) const; - bool operator!=(const FOculusXRUInt64& Right) const; - - UPROPERTY() - uint64 Value; - - bool IsEqual(const FOculusXRUInt64& Other) const - { - return Other.Value == Value; - } - - friend uint32 GetTypeHash(const FOculusXRUInt64& Other) - { - return FCrc::MemCrc_DEPRECATED(&Other.Value, sizeof(Other.Value)); - } - - uint64 GetValue() const { return Value; }; - - void SetValue(const uint64 Val) { Value = Val; }; -}; - -USTRUCT(BlueprintType) -struct OCULUSXRANCHORS_API FOculusXRAnchor -{ - GENERATED_BODY() -public: - FOculusXRAnchor() - : AnchorHandle(0), Uuid() {} - FOculusXRAnchor(FOculusXRUInt64 SpaceHandle, FOculusXRUUID ID) - : AnchorHandle(SpaceHandle), Uuid(ID) {} - - UPROPERTY(BlueprintReadWrite, Category = "OculusXR|SpatialAnchor") - FOculusXRUInt64 AnchorHandle; - - UPROPERTY(BlueprintReadWrite, Category = "OculusXR|SpatialAnchor") - FOculusXRUUID Uuid; -}; - -template <> -struct TStructOpsTypeTraits : public TStructOpsTypeTraitsBase2 -{ - enum - { - WithIdenticalViaEquality = true, - }; -}; - -UENUM(BlueprintType) -enum class EOculusXRSpaceQueryFilterType : uint8 -{ - None = 0 UMETA(DisplayName = "No Filter"), - FilterByIds = 1 UMETA(DisplayName = "Filter queries by UUIDs"), - FilterByComponentType = 2 UMETA(DisplayName = "Filter queries by component type"), - FilterByGroup = 3 UMETA(DisplayName = "Filter queries by group UUID") -}; - -// This is used as a bit-mask -UENUM(BlueprintType) -enum class EOculusXRSpaceStorageLocation : uint8 -{ - Invalid = 0 UMETA(DisplayName = "Invalid"), - Local = 1 << 0 UMETA(DisplayName = "Local"), - Cloud = 1 << 1 UMETA(DisplayName = "Cloud") -}; - -UENUM(BlueprintType) -enum class EOculusXRSpaceStoragePersistenceMode : uint8 -{ - Invalid = 0 UMETA(Hidden), - Indefinite = 1 UMETA(DisplayName = "Indefinite"), -}; - -UENUM(BlueprintType) -enum class EOculusXRSpaceComponentType : uint8 -{ - Locatable = 0 UMETA(DisplayName = "Locatable"), - Storable = 1 UMETA(DisplayName = "Storable"), - Sharable = 2 UMETA(DisplayName = "Sharable"), - ScenePlane = 3 UMETA(DisplayName = "ScenePlane"), - SceneVolume = 4 UMETA(DisplayName = "SceneVolume"), - SemanticClassification = 5 UMETA(DisplayName = "SemanticClassification"), - RoomLayout = 6 UMETA(DisplayName = "RoomLayout"), - SpaceContainer = 7 UMETA(DisplayName = "SpaceContainer"), - Undefined = 8 UMETA(DisplayName = "Not defined"), - TriangleMesh = 9 UMETA(DisplayName = "TriangleMesh"), - -}; - -USTRUCT(BlueprintType) -struct OCULUSXRANCHORS_API FOculusXRSpaceQueryInfo -{ - GENERATED_BODY() -public: - FOculusXRSpaceQueryInfo() - : MaxQuerySpaces(1024), Timeout(0), Location(EOculusXRSpaceStorageLocation::Local), FilterType(EOculusXRSpaceQueryFilterType::None) - { - } - - UPROPERTY(BlueprintReadWrite, Category = "OculusXR|SpatialAnchor") - int MaxQuerySpaces; - - UPROPERTY(BlueprintReadWrite, Category = "OculusXR|SpatialAnchor") - float Timeout; - - UPROPERTY(BlueprintReadWrite, Category = "OculusXR|SpatialAnchor") - EOculusXRSpaceStorageLocation Location; - - UPROPERTY(BlueprintReadWrite, Category = "OculusXR|SpatialAnchor") - EOculusXRSpaceQueryFilterType FilterType; - - UPROPERTY(BlueprintReadWrite, Category = "OculusXR|SpatialAnchor") - TArray IDFilter; - - UPROPERTY(BlueprintReadWrite, Category = "OculusXR|SpatialAnchor") - TArray ComponentFilter; - - UPROPERTY(BlueprintReadWrite, Category = "OculusXR|SpatialAnchor") - FOculusXRUUID GroupUUIDFilter; -}; - -USTRUCT(BlueprintType) -struct OCULUSXRANCHORS_API FOculusXRSpaceQueryResult -{ - GENERATED_BODY() -public: - FOculusXRSpaceQueryResult() - : Space(0), UUID(), Location(EOculusXRSpaceStorageLocation::Invalid) {} - FOculusXRSpaceQueryResult(FOculusXRUInt64 SpaceHandle, FOculusXRUUID ID, EOculusXRSpaceStorageLocation SpaceLocation) - : Space(SpaceHandle), UUID(ID), Location(SpaceLocation) {} - - UPROPERTY(BlueprintReadWrite, Category = "OculusXR|SpatialAnchor") - FOculusXRUInt64 Space; - - UPROPERTY(BlueprintReadWrite, Category = "OculusXR|SpatialAnchor") - FOculusXRUUID UUID; - - UPROPERTY(BlueprintReadWrite, Category = "OculusXR|SpatialAnchor") - EOculusXRSpaceStorageLocation Location; -}; - -USTRUCT(BlueprintType) -struct OCULUSXRANCHORS_API FOculusXRSpaceQueryFilterValues -{ - GENERATED_BODY() -public: - TArray Uuids; // used if filtering by UUIDs - TArray ComponentTypes; // used if filtering by component types -}; - -struct ovrpSpaceDiscoveryFilterHeader_; -typedef ovrpSpaceDiscoveryFilterHeader_ ovrpSpaceDiscoveryFilterHeader; - -UCLASS(BlueprintType) -class OCULUSXRANCHORS_API UOculusXRSpaceDiscoveryFilterBase : public UObject -{ - GENERATED_BODY() -public: - virtual const ovrpSpaceDiscoveryFilterHeader* GenerateOVRPFilter() - { - return nullptr; - } -}; - -USTRUCT(BlueprintType) -struct OCULUSXRANCHORS_API FOculusXRSpaceDiscoveryInfo -{ - GENERATED_BODY() -public: - FOculusXRSpaceDiscoveryInfo() - { - } - - UPROPERTY(BlueprintReadWrite, Category = "OculusXR|SpatialAnchor") - TArray Filters; -}; - -USTRUCT(BlueprintType) -struct OCULUSXRANCHORS_API FOculusXRAnchorsDiscoverResult -{ - GENERATED_BODY() -public: - FOculusXRAnchorsDiscoverResult() - : Space(0), UUID() {} - FOculusXRAnchorsDiscoverResult(FOculusXRUInt64 SpaceHandle, FOculusXRUUID ID) - : Space(SpaceHandle), UUID(ID) {} - - UPROPERTY(BlueprintReadWrite, Category = "OculusXR|SpatialAnchor") - FOculusXRUInt64 Space; - - UPROPERTY(BlueprintReadWrite, Category = "OculusXR|SpatialAnchor") - FOculusXRUUID UUID; -}; - -struct ovrpSpaceDiscoveryFilterIds_; -typedef ovrpSpaceDiscoveryFilterIds_ ovrpSpaceDiscoveryFilterIds; -struct ovrpSpaceDiscoveryFilterIdsDelete -{ - void operator()(ovrpSpaceDiscoveryFilterIds* ptr) const; -}; - -struct DiscoveryUuidWrapper -{ - unsigned char data[16]; -}; - -UCLASS(Blueprintable, Category = "OculusXR|SpatialAnchor") -class OCULUSXRANCHORS_API UOculusXRSpaceDiscoveryIdsFilter : public UOculusXRSpaceDiscoveryFilterBase -{ - GENERATED_BODY() -public: - UPROPERTY(BlueprintReadWrite, Category = "OculusXR|SpatialAnchor") - TArray Uuids; - - TArray wrappedUUIDs; - - virtual const ovrpSpaceDiscoveryFilterHeader* GenerateOVRPFilter() override; - -private: - std::unique_ptr OVRPFilterIds; -}; - -struct ovrpSpaceDiscoveryFilterComponents_; -typedef ovrpSpaceDiscoveryFilterComponents_ ovrpSpaceDiscoveryFilterComponents; -struct ovrpSpaceDiscoveryFilterComponentsDelete -{ - void operator()(ovrpSpaceDiscoveryFilterComponents* ptr) const; -}; - -UCLASS(Blueprintable, Category = "OculusXR|SpatialAnchor") -class OCULUSXRANCHORS_API UOculusXRSpaceDiscoveryComponentsFilter : public UOculusXRSpaceDiscoveryFilterBase -{ - GENERATED_BODY() -public: - UPROPERTY(BlueprintReadWrite, Category = "OculusXR|SpatialAnchor") - EOculusXRSpaceComponentType ComponentType; - - virtual const ovrpSpaceDiscoveryFilterHeader* GenerateOVRPFilter() override; - -private: - std::unique_ptr OVRPFilterComponent; -}; - -// Represents a room layout within a specific space -USTRUCT(BlueprintType) -struct OCULUSXRANCHORS_API FOculusXRRoomLayout -{ - GENERATED_BODY() -public: - UPROPERTY(BlueprintReadOnly, Category = "OculusXR|Anchors") - FOculusXRUInt64 RoomAnchorHandle; - - UPROPERTY(BlueprintReadOnly, Category = "OculusXR|Anchors") - FOculusXRUUID RoomUuid; - - - UPROPERTY(BlueprintReadOnly, Category = "OculusXR|Anchors") - FOculusXRUUID FloorUuid; - - UPROPERTY(BlueprintReadOnly, Category = "OculusXR|Anchors") - FOculusXRUUID CeilingUuid; - - UPROPERTY(BlueprintReadOnly, Category = "OculusXR|Anchors") - TArray WallsUuid; - - UPROPERTY(BlueprintReadOnly, Category = "OculusXR|Anchors") - TArray RoomObjectUUIDs; -}; - -/** - * Represents different types of Anchor space. - */ -UENUM(BlueprintType) -enum class EOculusXRAnchorSpace : uint8 -{ - /** World space is relative to the global Unreal origin. */ - World, - - /** - * Tracking space is relative to the HMD tracking origin. - * It does not include the transform of the player pawn. - */ - Tracking, -}; diff --git a/Plugins/MetaXR/Source/OculusXRAnchors/Public/OculusXRAnchors.h b/Plugins/MetaXR/Source/OculusXRAnchors/Public/OculusXRAnchors.h deleted file mode 100644 index 8695057..0000000 --- a/Plugins/MetaXR/Source/OculusXRAnchors/Public/OculusXRAnchors.h +++ /dev/null @@ -1,206 +0,0 @@ -// Copyright (c) Meta Platforms, Inc. and affiliates. - -#pragma once - -#include "CoreMinimal.h" -#include "OculusXRAnchorComponent.h" -#include "OculusXRAnchorTypes.h" -#include "OculusXRAnchorsRequests.h" - -DECLARE_DELEGATE_TwoParams(FOculusXRSpatialAnchorCreateDelegate, EOculusXRAnchorResult::Type /*Result*/, UOculusXRAnchorComponent* /*Anchor*/); -DECLARE_DELEGATE_TwoParams(FOculusXRAnchorEraseDelegate, EOculusXRAnchorResult::Type /*Result*/, FOculusXRUUID /*AnchorUUID*/); -DECLARE_DELEGATE_FourParams(FOculusXRAnchorSetComponentStatusDelegate, EOculusXRAnchorResult::Type /*Result*/, uint64 /*AnchorHandle*/, EOculusXRSpaceComponentType /*ComponentType*/, bool /*Enabled*/); -DECLARE_DELEGATE_TwoParams(FOculusXRAnchorSaveDelegate, EOculusXRAnchorResult::Type /*Result*/, UOculusXRAnchorComponent* /*Anchor*/); -DECLARE_DELEGATE_TwoParams(FOculusXRAnchorSaveListDelegate, EOculusXRAnchorResult::Type /*Result*/, const TArray& /*SavedAnchors*/); -DECLARE_DELEGATE_TwoParams(FOculusXRAnchorQueryDelegate, EOculusXRAnchorResult::Type /*Result*/, const TArray& /*Results*/); -DECLARE_DELEGATE_ThreeParams(FOculusXRAnchorShareDelegate, EOculusXRAnchorResult::Type /*Result*/, const TArray& /*Anchors*/, const TArray& /*Users*/); -DECLARE_DELEGATE_TwoParams(FOculusXRSaveAnchorsDelegate, EOculusXRAnchorResult::Type /*Result*/, const TArray& /*SavedAnchors*/); -DECLARE_DELEGATE_FourParams(FOculusXREraseAnchorsDelegate, EOculusXRAnchorResult::Type /*Result*/, const TArray& /*ErasedAnchors*/, const TArray& /*ErasedAnchorsUUIDs*/, const TArray& /*ErasedAnchorsUUIDs*/); -DECLARE_DELEGATE_OneParam(FOculusXRDiscoverAnchorsResultsDelegate, const TArray& /*DiscoveredSpace*/); -DECLARE_DELEGATE_OneParam(FOculusXRDiscoverAnchorsCompleteDelegate, EOculusXRAnchorResult::Type /*Result*/); -DECLARE_DELEGATE_TwoParams(FOculusXRGetSharedAnchorsDelegate, EOculusXRAnchorResult::Type /*Result*/, const TArray& /*Results*/); - -namespace OculusXRAnchors -{ - struct OCULUSXRANCHORS_API FOculusXRAnchors - { - void Initialize(); - void Teardown(); - - static FOculusXRAnchors* GetInstance(); - - static bool CreateSpatialAnchor(const FTransform& InTransform, AActor* TargetActor, const FOculusXRSpatialAnchorCreateDelegate& ResultCallback, EOculusXRAnchorResult::Type& OutResult); - static bool EraseAnchor(UOculusXRAnchorComponent* Anchor, const FOculusXRAnchorEraseDelegate& ResultCallback, EOculusXRAnchorResult::Type& OutResult); - static bool DestroyAnchor(uint64 AnchorHandle, EOculusXRAnchorResult::Type& OutResult); - - static bool SetAnchorComponentStatus(UOculusXRAnchorComponent* Anchor, EOculusXRSpaceComponentType SpaceComponentType, bool Enable, float Timeout, const FOculusXRAnchorSetComponentStatusDelegate& ResultCallback, EOculusXRAnchorResult::Type& OutResult); - static bool GetAnchorComponentStatus(UOculusXRAnchorComponent* Anchor, EOculusXRSpaceComponentType SpaceComponentType, bool& OutEnabled, bool& OutChangePending, EOculusXRAnchorResult::Type& OutResult); - static bool GetAnchorSupportedComponents(UOculusXRAnchorComponent* Anchor, TArray& OutSupportedComponents, EOculusXRAnchorResult::Type& OutResult); - - static bool SetComponentStatus(uint64 Space, EOculusXRSpaceComponentType SpaceComponentType, bool Enable, float Timeout, const FOculusXRAnchorSetComponentStatusDelegate& ResultCallback, EOculusXRAnchorResult::Type& OutResult); - static bool GetComponentStatus(uint64 AnchorHandle, EOculusXRSpaceComponentType SpaceComponentType, bool& OutEnabled, bool& OutChangePending, EOculusXRAnchorResult::Type& OutResult); - static bool GetSupportedComponents(uint64 AnchorHandle, TArray& OutSupportedComponents, EOculusXRAnchorResult::Type& OutResult); - - static bool SaveAnchor(UOculusXRAnchorComponent* Anchor, EOculusXRSpaceStorageLocation StorageLocation, const FOculusXRAnchorSaveDelegate& ResultCallback, EOculusXRAnchorResult::Type& OutResult); - static bool SaveAnchorList(const TArray& Anchors, EOculusXRSpaceStorageLocation StorageLocation, const FOculusXRAnchorSaveListDelegate& ResultCallback, EOculusXRAnchorResult::Type& OutResult); - - static bool QueryAnchors(const TArray& AnchorUUIDs, EOculusXRSpaceStorageLocation Location, const FOculusXRAnchorQueryDelegate& ResultCallback, EOculusXRAnchorResult::Type& OutResult); - static bool QueryAnchorsAdvanced(const FOculusXRSpaceQueryInfo& QueryInfo, const FOculusXRAnchorQueryDelegate& ResultCallback, EOculusXRAnchorResult::Type& OutResult); - - static bool ShareAnchors(const TArray& Anchors, const TArray& OculusUserIDs, const FOculusXRAnchorShareDelegate& ResultCallback, EOculusXRAnchorResult::Type& OutResult); - static bool ShareAnchors(const TArray& AnchorHandles, const TArray& OculusUserIDs, const FOculusXRAnchorShareDelegate& ResultCallback, EOculusXRAnchorResult::Type& OutResult); - - static bool GetSpaceContainerUUIDs(uint64 Space, TArray& OutUUIDs, EOculusXRAnchorResult::Type& OutResult); - - static bool SaveAnchors(const TArray& Anchors, const FOculusXRSaveAnchorsDelegate& ResultCallback, EOculusXRAnchorResult::Type& OutResult); - static bool EraseAnchors(const TArray& Anchors, const FOculusXREraseAnchorsDelegate& ResultCallback, EOculusXRAnchorResult::Type& OutResult); - static bool EraseAnchors(const TArray& AnchorHandles, const TArray& AnchorUUIDs, const FOculusXREraseAnchorsDelegate& ResultCallback, EOculusXRAnchorResult::Type& OutResult); - static bool DiscoverAnchors(const FOculusXRSpaceDiscoveryInfo& DiscoveryInfo, const FOculusXRDiscoverAnchorsResultsDelegate& DiscoveryResultsCallback, const FOculusXRDiscoverAnchorsCompleteDelegate& DiscoveryCompleteCallback, EOculusXRAnchorResult::Type& OutResult); - static bool GetSharedAnchors(const TArray& AnchorUUIDs, const FOculusXRGetSharedAnchorsDelegate& ResultCallback, EOculusXRAnchorResult::Type& OutResult); - - static TSharedPtr ShareAnchorsAsync(const TArray& AnchorHandles, const TArray& Groups, const FShareAnchorsWithGroups::FCompleteDelegate& OnComplete); - static TSharedPtr GetSharedAnchorsAsync(const FOculusXRUUID& Group, const TArray& WantedAnchors, const FGetAnchorsSharedWithGroup::FCompleteDelegate& OnComplete); - - private: - struct AnchorQueryBinding; - struct GetSharedAnchorsBinding; - - void HandleSpatialAnchorCreateComplete(FOculusXRUInt64 RequestId, EOculusXRAnchorResult::Type Result, FOculusXRUInt64 Space, FOculusXRUUID UUID); - void HandleAnchorEraseComplete(FOculusXRUInt64 RequestId, EOculusXRAnchorResult::Type Result, FOculusXRUUID UUID, EOculusXRSpaceStorageLocation Location); - - void HandleSetComponentStatusComplete(FOculusXRUInt64 RequestId, EOculusXRAnchorResult::Type Result, FOculusXRUInt64 Space, FOculusXRUUID UUID, EOculusXRSpaceComponentType ComponentType, bool Enabled); - - void HandleAnchorSaveComplete(FOculusXRUInt64 RequestId, FOculusXRUInt64 Space, bool Success, EOculusXRAnchorResult::Type Result, FOculusXRUUID UUID); - void HandleAnchorSaveListComplete(FOculusXRUInt64 RequestId, EOculusXRAnchorResult::Type Result); - - void HandleAnchorQueryResultElement(FOculusXRUInt64 RequestId, FOculusXRUInt64 Space, FOculusXRUUID UUID); - void UpdateQuerySpacesBinding(AnchorQueryBinding* Binding, FOculusXRUInt64 RequestId, FOculusXRUInt64 Space, FOculusXRUUID UUID); - void UpdateGetSharedAnchorsBinding(GetSharedAnchorsBinding* Binding, FOculusXRUInt64 RequestId, FOculusXRUInt64 Space, FOculusXRUUID UUID); - - void HandleAnchorQueryComplete(FOculusXRUInt64 RequestId, EOculusXRAnchorResult::Type Result); - void QuerySpacesComplete(AnchorQueryBinding* Binding, FOculusXRUInt64 RequestId, EOculusXRAnchorResult::Type Result); - void GetSharedAnchorsComplete(GetSharedAnchorsBinding* Binding, FOculusXRUInt64 RequestId, EOculusXRAnchorResult::Type Result); - - void HandleAnchorSharingComplete(FOculusXRUInt64 RequestId, EOculusXRAnchorResult::Type Result); - - void HandleAnchorsSaveComplete(FOculusXRUInt64 RequestId, EOculusXRAnchorResult::Type Result); - void HandleAnchorsEraseComplete(FOculusXRUInt64 RequestId, EOculusXRAnchorResult::Type Result); - void HandleAnchorsEraseByComponentsComplete(FOculusXRUInt64 RequestId, EOculusXRAnchorResult::Type Result); - void HandleAnchorsEraseByHandleAndUUIDComplete(FOculusXRUInt64 RequestId, EOculusXRAnchorResult::Type Result); - - void HandleAnchorsDiscoverResults(FOculusXRUInt64 RequestId, const TArray& Results); - void HandleAnchorsDiscoverComplete(FOculusXRUInt64 RequestId, EOculusXRAnchorResult::Type Result); - - struct EraseAnchorBinding - { - FOculusXRUInt64 RequestId; - FOculusXRAnchorEraseDelegate Binding; - TWeakObjectPtr Anchor; - }; - - struct SetComponentStatusBinding - { - FOculusXRUInt64 RequestId; - FOculusXRAnchorSetComponentStatusDelegate Binding; - uint64 AnchorHandle; - }; - - struct CreateAnchorBinding - { - FOculusXRUInt64 RequestId; - FOculusXRSpatialAnchorCreateDelegate Binding; - TWeakObjectPtr Actor; - }; - - struct SaveAnchorBinding - { - FOculusXRUInt64 RequestId; - FOculusXRAnchorSaveDelegate Binding; - EOculusXRSpaceStorageLocation Location; - TWeakObjectPtr Anchor; - }; - - struct SaveAnchorListBinding - { - FOculusXRUInt64 RequestId; - FOculusXRAnchorSaveListDelegate Binding; - EOculusXRSpaceStorageLocation Location; - TArray> SavedAnchors; - }; - - struct AnchorQueryBinding - { - FOculusXRUInt64 RequestId; - FOculusXRAnchorQueryDelegate Binding; - EOculusXRSpaceStorageLocation Location; - TArray Results; - }; - - struct ShareAnchorsBinding - { - FOculusXRUInt64 RequestId; - FOculusXRAnchorShareDelegate Binding; - TArray> SharedAnchors; - TArray OculusUserIds; - }; - - struct SaveAnchorsBinding - { - FOculusXRUInt64 RequestId; - FOculusXRSaveAnchorsDelegate Binding; - TArray> SavedAnchors; - }; - - struct EraseAnchorsBinding - { - FOculusXRUInt64 RequestId; - FOculusXREraseAnchorsDelegate Binding; - TArray> ErasedAnchors; - TArray ErasedAnchorsHandles; - TArray ErasedAnchorsUUIDs; - }; - - struct AnchorDiscoveryBinding - { - FOculusXRUInt64 RequestId; - FOculusXRDiscoverAnchorsResultsDelegate ResultBinding; - FOculusXRDiscoverAnchorsCompleteDelegate CompleteBinding; - }; - - struct GetSharedAnchorsBinding - { - FOculusXRUInt64 RequestId; - FOculusXRGetSharedAnchorsDelegate ResultBinding; - TArray Results; - }; - - // Delegate bindings - TMap CreateSpatialAnchorBindings; - TMap EraseAnchorBindings; - TMap SetComponentStatusBindings; - TMap AnchorSaveBindings; - TMap AnchorSaveListBindings; - TMap AnchorQueryBindings; - TMap ShareAnchorsBindings; - TMap SaveAnchorsBindings; - TMap EraseAnchorsBindings; - TMap AnchorDiscoveryBindings; - TMap GetSharedAnchorsBindings; - - // Delegate handles - FDelegateHandle DelegateHandleAnchorCreate; - FDelegateHandle DelegateHandleAnchorErase; - FDelegateHandle DelegateHandleSetComponentStatus; - FDelegateHandle DelegateHandleAnchorSave; - FDelegateHandle DelegateHandleAnchorSaveList; - FDelegateHandle DelegateHandleQueryResultsBegin; - FDelegateHandle DelegateHandleQueryResultElement; - FDelegateHandle DelegateHandleQueryComplete; - FDelegateHandle DelegateHandleAnchorShare; - FDelegateHandle DelegateHandleAnchorsSave; - FDelegateHandle DelegateHandleAnchorsErase; - FDelegateHandle DelegateHandleAnchorsDiscoverResults; - FDelegateHandle DelegateHandleAnchorsDiscoverComplete; - }; - -} // namespace OculusXRAnchors diff --git a/Plugins/MetaXR/Source/OculusXRAnchors/Public/OculusXRAnchorsRequests.h b/Plugins/MetaXR/Source/OculusXRAnchors/Public/OculusXRAnchorsRequests.h deleted file mode 100644 index 90e391a..0000000 --- a/Plugins/MetaXR/Source/OculusXRAnchors/Public/OculusXRAnchorsRequests.h +++ /dev/null @@ -1,57 +0,0 @@ -// Copyright (c) Meta Platforms, Inc. and affiliates. - -#pragma once - -#include "OculusXRAsyncRequestSystem.h" -#include "OculusXRAsyncRequest.h" -#include "OculusXRAnchorTypes.h" - -namespace OculusXRAnchors -{ - // Share anchors with group - struct OCULUSXRANCHORS_API FShareAnchorsWithGroups : - OculusXR::FAsyncRequest, TArray>> - { - public: - FShareAnchorsWithGroups(const TArray& TargetGroups, const TArray& AnchorsToShare); - ~FShareAnchorsWithGroups(); - - const TArray& GetGroups() const { return Groups; } - const TArray& GetAnchors() const { return Anchors; } - - protected: - virtual void OnInitRequest() override; - - private: - static void OnShareComplete(FOculusXRUInt64 RequestId, EOculusXRAnchorResult::Type Result); - - TArray Groups; - TArray Anchors; - FDelegateHandle CallbackHandle; - }; - - // Get shared anchors from group - struct OCULUSXRANCHORS_API FGetAnchorsSharedWithGroup : - OculusXR::FAsyncRequest> - { - public: - FGetAnchorsSharedWithGroup(const FOculusXRUUID& TargetGroup, const TArray& WantedAnchors = {}); - ~FGetAnchorsSharedWithGroup(); - - void OnResultsAvailable(const TArray& Results); - const TArray& GetRetrievedAnchors() const { return RetrievedAnchors; } - - protected: - virtual void OnInitRequest() override; - - private: - static void OnQueryComplete(FOculusXRUInt64 RequestId, EOculusXRAnchorResult::Type Result); - static void OnQueryResultAvailable(FOculusXRUInt64 RequestId, FOculusXRUInt64 AnchorHandle, FOculusXRUUID AnchorUuid); - - FOculusXRUUID Group; - TArray RequestedAnchors; - TArray RetrievedAnchors; - FDelegateHandle CallbackHandleComplete; - FDelegateHandle CallbackHandleResults; - }; -} // namespace OculusXRAnchors diff --git a/Plugins/MetaXR/Source/OculusXRAnchors/Public/OculusXRSpatialAnchorComponent.h b/Plugins/MetaXR/Source/OculusXRAnchors/Public/OculusXRSpatialAnchorComponent.h deleted file mode 100644 index 15a63fb..0000000 --- a/Plugins/MetaXR/Source/OculusXRAnchors/Public/OculusXRSpatialAnchorComponent.h +++ /dev/null @@ -1,25 +0,0 @@ -// Copyright (c) Meta Platforms, Inc. and affiliates. - -#pragma once - -#include "CoreMinimal.h" -#include "OculusXRAnchorComponent.h" -#include "OculusXRAnchors.h" -#include "OculusXRSpatialAnchorComponent.generated.h" - -DECLARE_LOG_CATEGORY_EXTERN(LogOculusSpatialAnchor, Log, All); - -UCLASS(meta = (DisplayName = "Oculus Spatial Anchor Component", BlueprintSpawnableComponent)) -class OCULUSXRANCHORS_API UOculusXRSpatialAnchorComponent : public UOculusXRAnchorComponent -{ - GENERATED_BODY() -public: - UOculusXRSpatialAnchorComponent(const FObjectInitializer& ObjectInitializer); - - static bool Create(const FTransform& NewAnchorTransform, AActor* OwningActor, const FOculusXRSpatialAnchorCreateDelegate& Callback); - - bool Erase(const FOculusXRAnchorEraseDelegate& Callback); - bool Save(EOculusXRSpaceStorageLocation Location, const FOculusXRAnchorSaveDelegate& Callback); - -private: -}; diff --git a/Plugins/MetaXR/Source/OculusXRAsyncRequest/OculusXRAsyncRequest.Build.cs b/Plugins/MetaXR/Source/OculusXRAsyncRequest/OculusXRAsyncRequest.Build.cs deleted file mode 100644 index aa7b5ee..0000000 --- a/Plugins/MetaXR/Source/OculusXRAsyncRequest/OculusXRAsyncRequest.Build.cs +++ /dev/null @@ -1,30 +0,0 @@ -// @lint-ignore-every LICENSELINT -// Copyright Epic Games, Inc. All Rights Reserved. - -namespace UnrealBuildTool.Rules -{ - public class OculusXRAsyncRequest : ModuleRules - { - public OculusXRAsyncRequest(ReadOnlyTargetRules Target) : base(Target) - { - bUseUnity = true; - - PrivateDependencyModuleNames.AddRange( - new string[] - { - "Core", - "CoreUObject", - "Engine", - }); - - PrivateIncludePaths.AddRange( - new string[] { - }); - - PublicIncludePaths.AddRange( - new string[] { - "Runtime/Engine/Classes/Components", - }); - } - } -} diff --git a/Plugins/MetaXR/Source/OculusXRAsyncRequest/Private/OculusXRAsyncRequestModule.cpp b/Plugins/MetaXR/Source/OculusXRAsyncRequest/Private/OculusXRAsyncRequestModule.cpp deleted file mode 100644 index f80ced4..0000000 --- a/Plugins/MetaXR/Source/OculusXRAsyncRequest/Private/OculusXRAsyncRequestModule.cpp +++ /dev/null @@ -1,24 +0,0 @@ -// @lint-ignore-every LICENSELINT -// Copyright Epic Games, Inc. All Rights Reserved. - -#include "OculusXRAsyncRequestModule.h" - -#if OCULUS_ASYNC_REQUEST_SUPPORTED_PLATFORMS - -DEFINE_LOG_CATEGORY(LogOculusXRAsyncRequest); - -#define LOCTEXT_NAMESPACE "OculusXRAsyncRequest" - -void FOculusXRAsyncRequestModule::StartupModule() -{ -} - -void FOculusXRAsyncRequestModule::ShutdownModule() -{ -} - -#endif // OCULUS_ASYNC_REQUEST_SUPPORTED_PLATFORMS - -IMPLEMENT_MODULE(FOculusXRAsyncRequestModule, OculusXRAsyncRequest) - -#undef LOCTEXT_NAMESPACE diff --git a/Plugins/MetaXR/Source/OculusXRAsyncRequest/Private/OculusXRAsyncRequestModule.h b/Plugins/MetaXR/Source/OculusXRAsyncRequest/Private/OculusXRAsyncRequestModule.h deleted file mode 100644 index 596e269..0000000 --- a/Plugins/MetaXR/Source/OculusXRAsyncRequest/Private/OculusXRAsyncRequestModule.h +++ /dev/null @@ -1,32 +0,0 @@ -// @lint-ignore-every LICENSELINT -// Copyright Epic Games, Inc. All Rights Reserved. - -#pragma once - -#include "IOculusXRAsyncRequestModule.h" - -DECLARE_LOG_CATEGORY_EXTERN(LogOculusXRAsyncRequest, Log, All); - -#define LOCTEXT_NAMESPACE "OculusXRAsyncRequest" - -#if OCULUS_ASYNC_REQUEST_SUPPORTED_PLATFORMS - -class FOculusXRAsyncRequestModule : public IOculusXRAsyncRequestModule -{ -public: - virtual ~FOculusXRAsyncRequestModule() = default; - - // IModuleInterface interface - virtual void StartupModule() override; - virtual void ShutdownModule() override; -}; - -#else // OCULUS_ASYNC_REQUEST_SUPPORTED_PLATFORMS - -class FOculusXRAsyncRequestModule : public FDefaultModuleImpl -{ -}; - -#endif // OCULUS_ASYNC_REQUEST_SUPPORTED_PLATFORMS - -#undef LOCTEXT_NAMESPACE diff --git a/Plugins/MetaXR/Source/OculusXRAsyncRequest/Private/OculusXRAsyncRequestSubsystem.cpp b/Plugins/MetaXR/Source/OculusXRAsyncRequest/Private/OculusXRAsyncRequestSubsystem.cpp deleted file mode 100644 index 0d83036..0000000 --- a/Plugins/MetaXR/Source/OculusXRAsyncRequest/Private/OculusXRAsyncRequestSubsystem.cpp +++ /dev/null @@ -1,47 +0,0 @@ -// Copyright (c) Meta Platforms, Inc. and affiliates. - -#include "OculusXRAsyncRequestSubsystem.h" -#include "OculusXRAsyncRequestSystem.h" -#include -#include - -#if WITH_EDITOR -#include -#endif - -UOculusXRAsyncRequestSubsystem* UOculusXRAsyncRequestSubsystem::GetSubsystem() -{ - if (GWorld != nullptr) - { -#if WITH_EDITOR - if (GIsEditor) - { - for (const FWorldContext& Context : GEngine->GetWorldContexts()) - { - if (Context.WorldType == EWorldType::PIE) - { - return Context.World()->GetGameInstance()->GetSubsystem(); - } - } - } -#endif // WITH_EDITOR - - return GWorld->GetGameInstance()->GetSubsystem(); - } - - return nullptr; -} - -OculusXR::FAsyncRequestSystem* UOculusXRAsyncRequestSubsystem::GetRequestSystem() -{ - return (GetSubsystem()->RequestSystem).Get(); -} - -void UOculusXRAsyncRequestSubsystem::Initialize(FSubsystemCollectionBase& Collection) -{ - RequestSystem = MakeShared(); -} - -void UOculusXRAsyncRequestSubsystem::Deinitialize() -{ -} diff --git a/Plugins/MetaXR/Source/OculusXRAsyncRequest/Private/OculusXRAsyncRequestSubsystem.h b/Plugins/MetaXR/Source/OculusXRAsyncRequest/Private/OculusXRAsyncRequestSubsystem.h deleted file mode 100644 index 8d9dd9b..0000000 --- a/Plugins/MetaXR/Source/OculusXRAsyncRequest/Private/OculusXRAsyncRequestSubsystem.h +++ /dev/null @@ -1,26 +0,0 @@ -// Copyright (c) Meta Platforms, Inc. and affiliates. - -#pragma once - -#include "Subsystems/GameInstanceSubsystem.h" -#include "OculusXRAsyncRequestSubsystem.generated.h" - -namespace OculusXR -{ - class FAsyncRequestSystem; -} - -UCLASS() -class OCULUSXRASYNCREQUEST_API UOculusXRAsyncRequestSubsystem : public UGameInstanceSubsystem -{ - GENERATED_BODY() -public: - static UOculusXRAsyncRequestSubsystem* GetSubsystem(); - static OculusXR::FAsyncRequestSystem* GetRequestSystem(); - - virtual void Initialize(FSubsystemCollectionBase& Collection) override; - virtual void Deinitialize() override; - -private: - TSharedPtr RequestSystem; -}; diff --git a/Plugins/MetaXR/Source/OculusXRAsyncRequest/Private/OculusXRAsyncRequestSystem.cpp b/Plugins/MetaXR/Source/OculusXRAsyncRequest/Private/OculusXRAsyncRequestSystem.cpp deleted file mode 100644 index 5982a44..0000000 --- a/Plugins/MetaXR/Source/OculusXRAsyncRequest/Private/OculusXRAsyncRequestSystem.cpp +++ /dev/null @@ -1,22 +0,0 @@ -// Copyright (c) Meta Platforms, Inc. and affiliates. - -#include "OculusXRAsyncRequestSystem.h" -#include "OculusXRAsyncRequestSubsystem.h" - -namespace OculusXR -{ - FAsyncRequestSystem::FAsyncRequestSystem() - : EventIdCounter(0) - { - } - - FAsyncRequestBase::EventId FAsyncRequestSystem::GenerateEventId() - { - return FAsyncRequestBase::EventId(++(GetInstance().EventIdCounter)); - } - - FAsyncRequestSystem& FAsyncRequestSystem::GetInstance() - { - return *UOculusXRAsyncRequestSubsystem::GetRequestSystem(); - } -} // namespace OculusXR diff --git a/Plugins/MetaXR/Source/OculusXRAsyncRequest/Public/IOculusXRAsyncRequestModule.h b/Plugins/MetaXR/Source/OculusXRAsyncRequest/Public/IOculusXRAsyncRequestModule.h deleted file mode 100644 index 47db340..0000000 --- a/Plugins/MetaXR/Source/OculusXRAsyncRequest/Public/IOculusXRAsyncRequestModule.h +++ /dev/null @@ -1,37 +0,0 @@ -// @lint-ignore-every LICENSELINT -// Copyright Epic Games, Inc. All Rights Reserved. - -#pragma once -#include "Modules/ModuleManager.h" - -#define OCULUS_ASYNC_REQUEST_SUPPORTED_PLATFORMS (PLATFORM_WINDOWS && WINVER > 0x0502) || (PLATFORM_ANDROID_ARM || PLATFORM_ANDROID_ARM64 || PLATFORM_ANDROID_X64) - -/** - * The public interface to this module. In most cases, this interface is only public to sibling modules - * within this plugin. - */ -class IOculusXRAsyncRequestModule : public IModuleInterface -{ - -public: - /** - * Singleton-like access to this module's interface. This is just for convenience! - * Beware of calling this during the shutdown phase, though. Your module might have been unloaded already. - * - * @return Returns singleton instance, loading the module on demand if needed - */ - static inline IOculusXRAsyncRequestModule& Get() - { - return FModuleManager::LoadModuleChecked("OculusXRAsyncRequest"); - } - - /** - * Checks to see if this module is loaded and ready. It is only valid to call Get() if IsAvailable() returns true. - * - * @return True if the module is loaded and ready to use - */ - static inline bool IsAvailable() - { - return FModuleManager::Get().IsModuleLoaded("OculusXRAsyncRequest"); - } -}; diff --git a/Plugins/MetaXR/Source/OculusXRAsyncRequest/Public/OculusXRAsyncRequest.h b/Plugins/MetaXR/Source/OculusXRAsyncRequest/Public/OculusXRAsyncRequest.h deleted file mode 100644 index 1912da3..0000000 --- a/Plugins/MetaXR/Source/OculusXRAsyncRequest/Public/OculusXRAsyncRequest.h +++ /dev/null @@ -1,93 +0,0 @@ -// Copyright (c) Meta Platforms, Inc. and affiliates. - -#pragma once - -#include "OculusXRAsyncRequestBase.h" -#include "OculusXRAsyncRequestSystem.h" -#include "IOculusXRAsyncRequestModule.h" - -namespace OculusXR -{ - // Templated event type that is derived from to create new requests types - template > - struct FAsyncRequest : public FAsyncRequestBase - { - public: - typedef TValueType FResultValueType; - typedef FAsyncResult FResultType; - DECLARE_DELEGATE_OneParam(FCompleteDelegate, const FResultType&); - - FAsyncRequest() - : RequestResult(FResultType::FromEmpty()) - , bIsComplete(false) - , bHasStarted(false) - { - SetEventId(FAsyncRequestSystem::GenerateEventId()); - } - - virtual ~FAsyncRequest() {} - - // Call this to start the request - void Execute() - { - // Validate we aren't starting the request more than once - check(!bHasStarted); - bHasStarted = true; - - // Start the async work - OnInitRequest(); - - // Check initial result - if (!TResultSuccess()(InitialResultStatus)) - { - // Request failed so fire complete now and remove it from the request system - // Once it goes out of scope in the calling code the shared ptr will be destroyed - FAsyncRequestSystem::CompleteRequest(GetEventId(), FResultType::FromError(InitialResultStatus)); - return; - } - - FAsyncRequestSystem::SetRequestId(GetEventId(), GetRequestId()); - } - - // Bind a callback to the completion of the event - void BindOnComplete(const FCompleteDelegate& Function) { OnComplete = Function; } - - bool IsComplete() const { return bIsComplete; } - const FResultType& GetResult() const - { - // Result type isn't valid unless we have completed - check(bIsComplete); - return RequestResult; - } - - protected: - friend class FAsyncRequestSystem; - - void RequestCompleted(const FResultType& InResult) - { - bIsComplete = true; - RequestResult = InResult; - OnComplete.ExecuteIfBound(InResult); - OnCompleteRequest(InResult); - } - - // Called by the derived request to specify the result code that came from starting the async work. - void SetInitialResult(TResultEnum ResultStatus) - { - InitialResultStatus = ResultStatus; - } - - // Overload to do request initialization, call OVRP functions, etc.. - virtual void OnInitRequest() {} - - // Overload this request to clean up any remaining data if needed - virtual void OnCompleteRequest(const FResultType& Result) {} - - private: - FCompleteDelegate OnComplete; - TResultEnum InitialResultStatus; - FResultType RequestResult; - bool bIsComplete; - bool bHasStarted; - }; -} // namespace OculusXR diff --git a/Plugins/MetaXR/Source/OculusXRAsyncRequest/Public/OculusXRAsyncRequestBase.h b/Plugins/MetaXR/Source/OculusXRAsyncRequest/Public/OculusXRAsyncRequestBase.h deleted file mode 100644 index 52b3aa0..0000000 --- a/Plugins/MetaXR/Source/OculusXRAsyncRequest/Public/OculusXRAsyncRequestBase.h +++ /dev/null @@ -1,105 +0,0 @@ -// Copyright (c) Meta Platforms, Inc. and affiliates. - -#pragma once - -#include - -namespace OculusXR -{ - constexpr uint64_t INVALID_TASK_REQUEST_ID = 0; - - template - struct FAsyncResultDefaultSuccess - { - bool operator()(TResultEnum Val) { return Val == TResultEnum::Success; } - }; - - template > - struct FAsyncResult - { - public: - ~FAsyncResult() {} - - static FAsyncResult FromEmpty() - { - return FAsyncResult(); - } - - static FAsyncResult FromResult(TResultEnum Status, const TValueType& Value) - { - return FAsyncResult(Status, Value); - } - - static FAsyncResult FromError(TResultEnum Status) - { - return FAsyncResult(Status, {}); - } - - TResultEnum GetStatus() const { return Status; } - bool IsSuccess() const { return TSuccess()(Status); } - const TValueType& GetValue() const - { - check(IsSuccess()); - return Value; - } - - private: - FAsyncResult() {} - - FAsyncResult(TResultEnum InStatus, const TValueType& InValue) - { - Status = InStatus; - Value = InValue; - } - - TResultEnum Status; - TValueType Value; - }; - - // Base event class that the internal task system uses to reference task data - struct FAsyncRequestBase - { - public: - FAsyncRequestBase() - : InternalEventId(EventId(0)) - , InternalRequestId(RequestId(INVALID_TASK_REQUEST_ID)) - { - // The derived - } - - struct EventId - { - EventId(uint64_t InId) { Id = InId; } - - uint64_t Id; - - bool operator==(const EventId& Rhs) const { return Id == Rhs.Id; } - bool operator!=(const EventId& Rhs) const { return !operator==(Rhs); } - friend uint32_t GetTypeHash(const EventId& X) { return GetTypeHash(X.Id); } - }; - - struct RequestId - { - RequestId(uint64_t InId) { Id = InId; } - - uint64_t Id; - - bool operator==(const RequestId& Rhs) const { return Id == Rhs.Id; } - bool operator!=(const RequestId& Rhs) const { return !operator==(Rhs); } - friend uint32_t GetTypeHash(const RequestId& X) { return GetTypeHash(X.Id); } - }; - - virtual ~FAsyncRequestBase() {} - - EventId GetEventId() const { return InternalEventId; } - RequestId GetRequestId() const { return InternalRequestId; } - - protected: - void SetEventId(EventId InEventId) { InternalEventId = InEventId; } - void SetRequestId(RequestId InRequestId) { InternalRequestId = InRequestId; } - - private: - EventId InternalEventId; // Unique identifier, set regardless of the request ID value - RequestId InternalRequestId; // Request id returned from successfully starting an async xr method - }; -} // namespace OculusXR diff --git a/Plugins/MetaXR/Source/OculusXRAsyncRequest/Public/OculusXRAsyncRequestSystem.h b/Plugins/MetaXR/Source/OculusXRAsyncRequest/Public/OculusXRAsyncRequestSystem.h deleted file mode 100644 index a7d8248..0000000 --- a/Plugins/MetaXR/Source/OculusXRAsyncRequest/Public/OculusXRAsyncRequestSystem.h +++ /dev/null @@ -1,94 +0,0 @@ -// Copyright (c) Meta Platforms, Inc. and affiliates. - -#pragma once - -#include "OculusXRAsyncRequestBase.h" -#include -#include - -namespace OculusXR -{ - class FAsyncRequestSystem - { - public: - FAsyncRequestSystem(); - - static OCULUSXRASYNCREQUEST_API FAsyncRequestBase::EventId GenerateEventId(); - - template - static TSharedPtr CreateRequest(TArgs&&... Args) - { - auto request = MakeShared(std::forward(Args)...); - GetInstance().Requests.Add(request->GetEventId(), request); - - return request; - } - - static void RemoveRequest(FAsyncRequestBase::EventId Id) - { - auto& systemInstance = GetInstance(); - auto foundPtr = systemInstance.Requests.Find(Id); - if (foundPtr) - { - systemInstance.RequestIdToEventIdMap.Remove((*foundPtr)->GetRequestId()); - systemInstance.Requests.Remove(Id); - } - } - - template - static TSharedPtr GetRequest(FAsyncRequestBase::EventId Id) - { - auto foundRequestPtr = GetInstance().Requests.Find(Id); - if (foundRequestPtr != nullptr) - { - return StaticCastSharedPtr(*foundRequestPtr); - } - - return nullptr; - } - - template - static TSharedPtr GetRequest(FAsyncRequestBase::RequestId Id) - { - auto& systemInstance = GetInstance(); - - auto foundEventId = systemInstance.RequestIdToEventIdMap.Find(Id); - if (foundEventId != nullptr) - { - auto foundRequestPtr = systemInstance.Requests.Find(*foundEventId); - if (foundRequestPtr) - { - return StaticCastSharedPtr(*foundRequestPtr); - } - } - - return nullptr; - } - - template - static void SetRequestId(FAsyncRequestBase::EventId EventId, FAsyncRequestBase::RequestId RequestId) - { - GetInstance().RequestIdToEventIdMap.Add(RequestId, EventId); - } - - template - static void CompleteRequest(FAsyncRequestBase::EventId EventId, const typename RequestType::FResultType& Result) - { - auto& systemInstance = GetInstance(); - - auto request = systemInstance.GetRequest(EventId); - if (request.IsValid()) - { - request->RequestCompleted(Result); - systemInstance.RemoveRequest(EventId); - } - } - - private: - static OCULUSXRASYNCREQUEST_API FAsyncRequestSystem& GetInstance(); - - TMap> Requests; - TMap RequestIdToEventIdMap; - std::atomic EventIdCounter; - }; -} // namespace OculusXR diff --git a/Plugins/MetaXR/Source/OculusXRColocation/OculusXRColocation.Build.cs b/Plugins/MetaXR/Source/OculusXRColocation/OculusXRColocation.Build.cs deleted file mode 100644 index b85a450..0000000 --- a/Plugins/MetaXR/Source/OculusXRColocation/OculusXRColocation.Build.cs +++ /dev/null @@ -1,49 +0,0 @@ -// @lint-ignore-every LICENSELINT -// Copyright Epic Games, Inc. All Rights Reserved. - -namespace UnrealBuildTool.Rules -{ - public class OculusXRColocation : ModuleRules - { - public OculusXRColocation(ReadOnlyTargetRules Target) : base(Target) - { - bUseUnity = true; - - PrivateDependencyModuleNames.AddRange( - new string[] - { - "Core", - "CoreUObject", - "Engine", - "HeadMountedDisplay", - "OculusXRHMD", - "OVRPluginXR", - "XRBase", - "OpenXR", - "OpenXRHMD", - "OculusXRAnchors", - "OculusXRAsyncRequest" - }); - - PublicDependencyModuleNames.AddRange( - new string[] - { - "OculusXRAsyncRequest", - "KhronosOpenXRHeaders", - }); - - PrivateIncludePaths.AddRange( - new string[] { - "OculusXRHMD/Private", - "OculusXRAnchors/Private", - }); - - PublicIncludePaths.AddRange( - new string[] { - "Runtime/Engine/Classes/Components", - }); - - AddEngineThirdPartyPrivateStaticDependencies(Target, "OpenXR"); - } - } -} diff --git a/Plugins/MetaXR/Source/OculusXRColocation/Private/OculusXRColocation.cpp b/Plugins/MetaXR/Source/OculusXRColocation/Private/OculusXRColocation.cpp deleted file mode 100644 index 7bd0b50..0000000 --- a/Plugins/MetaXR/Source/OculusXRColocation/Private/OculusXRColocation.cpp +++ /dev/null @@ -1,52 +0,0 @@ -// Copyright (c) Meta Platforms, Inc. and affiliates. - -#include "OculusXRColocation.h" -#include "OculusXRColocationModule.h" -#include "OculusXRColocationTypes.h" -#include "OculusXRColocationUtil.h" -#include "OculusXRAsyncRequestSystem.h" -#include "OculusXRHMDModule.h" - -namespace OculusXRColocation -{ - TSharedPtr FColocation::DiscoverSessionsAsync(const FDiscoverSessionsRequest::FCompleteDelegate& OnComplete, const FOculusXRColocationSessionFoundDelegate& OnSessionFound) - { - auto request = OculusXR::FAsyncRequestSystem::CreateRequest(); - request->BindOnComplete(OnComplete); - request->BindOnSessionFound(OnSessionFound); - request->Execute(); - - return request; - } - - EColocationResult FColocation::StopDiscoverSessions(TSharedPtr Request) - { - uint64 requestId = Request->GetRequestId().Id; - ovrpResult result = FOculusXRHMDModule::GetPluginWrapper().StopColocationDiscovery(&requestId); - UE_LOG(LogOculusXRColocation, Log, TEXT("Stopping colocation session discovery. RequestID: %llu, Launch async result: %d"), Request->GetRequestId().Id, result); - - EColocationResult colocationResult = GetResult(result); - if (colocationResult != EColocationResult::Success) - { - UE_LOG(LogOculusXRColocation, Warning, TEXT("Failed to stop local group discovery.")); - } - - return colocationResult; - } - - TSharedPtr FColocation::StartSessionAdvertisementAsync(const TArray& SessionData, const FStartSessionAdvertisementRequest::FCompleteDelegate& OnComplete) - { - auto request = OculusXR::FAsyncRequestSystem::CreateRequest(SessionData); - request->BindOnComplete(OnComplete); - request->Execute(); - return request; - } - - TSharedPtr FColocation::StopSessionAdvertisementAsync(const FStopSessionAdvertisementRequest::FCompleteDelegate& OnComplete) - { - auto request = OculusXR::FAsyncRequestSystem::CreateRequest(); - request->BindOnComplete(OnComplete); - request->Execute(); - return request; - } -} // namespace OculusXRColocation diff --git a/Plugins/MetaXR/Source/OculusXRColocation/Private/OculusXRColocationEventDelegates.cpp b/Plugins/MetaXR/Source/OculusXRColocation/Private/OculusXRColocationEventDelegates.cpp deleted file mode 100644 index 4d2e776..0000000 --- a/Plugins/MetaXR/Source/OculusXRColocation/Private/OculusXRColocationEventDelegates.cpp +++ /dev/null @@ -1,12 +0,0 @@ -// Copyright (c) Meta Platforms, Inc. and affiliates. - -#include "OculusXRColocationEventDelegates.h" - -FOculusXRColocationEventDelegates::FStartColocationAdvertisementComplete FOculusXRColocationEventDelegates::StartColocationAdvertisementComplete; -FOculusXRColocationEventDelegates::FStopColocationAdvertisementComplete FOculusXRColocationEventDelegates::StopColocationAdvertisementComplete; -FOculusXRColocationEventDelegates::FColocationAdvertisementComplete FOculusXRColocationEventDelegates::ColocationAdvertisementComplete; - -FOculusXRColocationEventDelegates::FStartColocationDiscoveryComplete FOculusXRColocationEventDelegates::StartColocationDiscoveryComplete; -FOculusXRColocationEventDelegates::FStopColocationDiscoveryComplete FOculusXRColocationEventDelegates::StopColocationDiscoveryComplete; -FOculusXRColocationEventDelegates::FColocationDiscoveryComplete FOculusXRColocationEventDelegates::ColocationDiscoveryComplete; -FOculusXRColocationEventDelegates::FColocationDiscoveryResultAvailable FOculusXRColocationEventDelegates::ColocationDiscoveryResultAvailable; diff --git a/Plugins/MetaXR/Source/OculusXRColocation/Private/OculusXRColocationEventDelegates.h b/Plugins/MetaXR/Source/OculusXRColocation/Private/OculusXRColocationEventDelegates.h deleted file mode 100644 index f678709..0000000 --- a/Plugins/MetaXR/Source/OculusXRColocation/Private/OculusXRColocationEventDelegates.h +++ /dev/null @@ -1,32 +0,0 @@ -// Copyright (c) Meta Platforms, Inc. and affiliates. - -#pragma once - -#include "CoreTypes.h" -#include "OculusXRColocationTypes.h" -#include "Delegates/Delegate.h" - -class FOculusXRColocationEventDelegates -{ -public: - DECLARE_MULTICAST_DELEGATE_ThreeParams(FStartColocationAdvertisementComplete, FOculusXRUInt64 /*requestId*/, FOculusXRUUID /*uuid*/, EColocationResult /*result*/); - static OCULUSXRCOLOCATION_API FStartColocationAdvertisementComplete StartColocationAdvertisementComplete; - - DECLARE_MULTICAST_DELEGATE_TwoParams(FColocationAdvertisementComplete, FOculusXRUInt64 /*requestId*/, EColocationResult /*result*/); - static OCULUSXRCOLOCATION_API FColocationAdvertisementComplete ColocationAdvertisementComplete; - - DECLARE_MULTICAST_DELEGATE_TwoParams(FStopColocationAdvertisementComplete, FOculusXRUInt64 /*requestId*/, EColocationResult /*result*/); - static OCULUSXRCOLOCATION_API FStopColocationAdvertisementComplete StopColocationAdvertisementComplete; - - DECLARE_MULTICAST_DELEGATE_TwoParams(FStartColocationDiscoveryComplete, FOculusXRUInt64 /*requestId*/, EColocationResult /*result*/); - static OCULUSXRCOLOCATION_API FStartColocationDiscoveryComplete StartColocationDiscoveryComplete; - - DECLARE_MULTICAST_DELEGATE_TwoParams(FColocationDiscoveryComplete, FOculusXRUInt64 /*requestId*/, EColocationResult /*result*/); - static OCULUSXRCOLOCATION_API FColocationDiscoveryComplete ColocationDiscoveryComplete; - - DECLARE_MULTICAST_DELEGATE_TwoParams(FStopColocationDiscoveryComplete, FOculusXRUInt64 /*requestId*/, EColocationResult /*result*/); - static OCULUSXRCOLOCATION_API FStopColocationDiscoveryComplete StopColocationDiscoveryComplete; - - DECLARE_MULTICAST_DELEGATE_ThreeParams(FColocationDiscoveryResultAvailable, FOculusXRUInt64 /*requestId*/, FOculusXRUUID /*resultUuid*/, const TArray& /*metadata*/); - static OCULUSXRCOLOCATION_API FColocationDiscoveryResultAvailable ColocationDiscoveryResultAvailable; -}; diff --git a/Plugins/MetaXR/Source/OculusXRColocation/Private/OculusXRColocationEventPolling.cpp b/Plugins/MetaXR/Source/OculusXRColocation/Private/OculusXRColocationEventPolling.cpp deleted file mode 100644 index 9a3595a..0000000 --- a/Plugins/MetaXR/Source/OculusXRColocation/Private/OculusXRColocationEventPolling.cpp +++ /dev/null @@ -1,127 +0,0 @@ -// Copyright (c) Meta Platforms, Inc. and affiliates. - -#include "OculusXRColocationEventPolling.h" -#include "OculusXRColocationModule.h" -#include "OculusXRColocationRequests.h" -#include "OculusXRColocationSubsystem.h" -#include "OculusXRColocationUtil.h" -#include "OculusXRColocationEventDelegates.h" -#include "OculusXRHMDPrivate.h" -#include "OculusXRHMDModule.h" -#include "Engine/Engine.h" - -namespace OculusXRColocation -{ - template - void GetEventDataAs(ovrpEventDataBuffer& Buffer, T& OutEventData) - { - memcpy(&OutEventData, reinterpret_cast(&Buffer), sizeof(T)); - } - - void FColocationEventPolling::OnPollEvent(ovrpEventDataBuffer* EventDataBuffer, bool& EventPollResult) - { - ovrpEventDataBuffer& buf = *EventDataBuffer; - - EventPollResult = true; - - switch (buf.EventType) - { - case ovrpEventType_StartColocationAdvertisementComplete: - { - ovrpEventStartColocationAdvertisementComplete eventData; - GetEventDataAs(buf, eventData); - - UE_LOG(LogOculusXRColocation, Log, TEXT("ovrpEventStartColocationAdvertisementComplete: Request ID: %llu -- SessionUuid: %s -- Result: %s"), - eventData.AdvertisementRequestId, - *FOculusXRUUID(eventData.AdvertisementUuid.data).ToString(), - *ToString(GetResult(eventData.Result))); - - FOculusXRColocationEventDelegates::StartColocationAdvertisementComplete.Broadcast(eventData.AdvertisementRequestId, eventData.AdvertisementUuid.data, GetResult(eventData.Result)); - - break; - } - case ovrpEventType_ColocationAdvertisementComplete: - { - ovrpEventColocationAdvertisementComplete eventData; - GetEventDataAs(buf, eventData); - - UE_LOG(LogOculusXRColocation, Log, TEXT("ovrpEventColocationAdvertisementComplete: Request ID: %llu -- Result: %s"), - eventData.AdvertisementRequestId, - *ToString(GetResult(eventData.Result))); - - FOculusXRColocationEventDelegates::ColocationAdvertisementComplete.Broadcast(eventData.AdvertisementRequestId, GetResult(eventData.Result)); - - break; - } - case ovrpEventType_StopColocationAdvertisementComplete: - { - ovrpEventStopColocationAdvertisementComplete eventData; - GetEventDataAs(buf, eventData); - - FOculusXRColocationEventDelegates::StopColocationAdvertisementComplete.Broadcast(eventData.RequestId, GetResult(eventData.Result)); - - break; - } - case ovrpEventType_StartColocationDiscoveryComplete: - { - ovrpEventStartColocationDiscoveryComplete eventData; - GetEventDataAs(buf, eventData); - - UE_LOG(LogOculusXRColocation, Log, TEXT("ovrpEventStartColocationDiscoveryComplete: Request ID: %llu -- Result: %s"), - eventData.DiscoveryRequestId, - *ToString(GetResult(eventData.Result))); - - FOculusXRColocationEventDelegates::StartColocationDiscoveryComplete.Broadcast(eventData.DiscoveryRequestId, GetResult(eventData.Result)); - - break; - } - case ovrpEventType_ColocationDiscoveryResult: - { - ovrpEventColocationDiscoveryResult eventData; - GetEventDataAs(buf, eventData); - - UE_LOG(LogOculusXRColocation, Log, TEXT("ovrpEventColocationDiscoveryResult: Request ID: %llu -- FoundSessionUuid: %s"), - eventData.DiscoveryRequestId, - *FOculusXRUUID(eventData.AdvertisementUuid.data).ToString()); - - TArray metaData(eventData.Buffer, eventData.BufferSize); - FOculusXRColocationEventDelegates::ColocationDiscoveryResultAvailable.Broadcast(eventData.DiscoveryRequestId, eventData.AdvertisementUuid.data, metaData); - - break; - } - case ovrpEventType_ColocationDiscoveryComplete: - { - ovrpEventColocationDiscoveryComplete eventData; - GetEventDataAs(buf, eventData); - - UE_LOG(LogOculusXRColocation, Log, TEXT("ovrpEventColocationDiscoveryComplete: Request ID: %llu -- Result: %s"), - eventData.DiscoveryRequestId, - *ToString(GetResult(eventData.Result))); - - FOculusXRColocationEventDelegates::ColocationDiscoveryComplete.Broadcast(eventData.DiscoveryRequestId, GetResult(eventData.Result)); - - break; - } - case ovrpEventType_StopColocationDiscoveryComplete: - { - ovrpEventStopColocationDiscoveryComplete eventData; - GetEventDataAs(buf, eventData); - - UE_LOG(LogOculusXRColocation, Log, TEXT("ovrpEventType_StopColocationDiscoveryComplete: Request ID: %llu -- Result: %s"), - eventData.RequestId, - *ToString(GetResult(eventData.Result))); - - FOculusXRColocationEventDelegates::ColocationDiscoveryComplete.Broadcast(eventData.RequestId, GetResult(eventData.Result)); - - // no-op - break; - } - - default: - { - EventPollResult = false; - return; - } - } - } -} // namespace OculusXRColocation diff --git a/Plugins/MetaXR/Source/OculusXRColocation/Private/OculusXRColocationEventPolling.h b/Plugins/MetaXR/Source/OculusXRColocation/Private/OculusXRColocationEventPolling.h deleted file mode 100644 index 982017c..0000000 --- a/Plugins/MetaXR/Source/OculusXRColocation/Private/OculusXRColocationEventPolling.h +++ /dev/null @@ -1,14 +0,0 @@ -// Copyright (c) Meta Platforms, Inc. and affiliates. - -#pragma once - -#include "OculusXRPluginWrapper.h" - -namespace OculusXRColocation -{ - struct FColocationEventPolling - { - public: - static void OnPollEvent(ovrpEventDataBuffer* EventDataBuffer, bool& EventPollResult); - }; -} // namespace OculusXRColocation diff --git a/Plugins/MetaXR/Source/OculusXRColocation/Private/OculusXRColocationFunctionLibrary.cpp b/Plugins/MetaXR/Source/OculusXRColocation/Private/OculusXRColocationFunctionLibrary.cpp deleted file mode 100644 index edca83f..0000000 --- a/Plugins/MetaXR/Source/OculusXRColocation/Private/OculusXRColocationFunctionLibrary.cpp +++ /dev/null @@ -1,18 +0,0 @@ -// Copyright (c) Meta Platforms, Inc. and affiliates. - -#include "OculusXRColocationFunctionLibrary.h" -#include "OculusXRColocationModule.h" -#include "OculusXRColocationSubsystem.h" -#include "OculusXRColocation.h" - -void UOculusXRColocationFunctionLibrary::StopColocationSessionDiscovery() -{ - auto request = UOculusXRColocationSubsystem::Get()->GetDiscoveryRequest(); - if (!request.IsValid()) - { - UE_LOG(LogOculusXRColocation, Warning, TEXT("Attempted to stop colocation session discovery but there is no active discovery request!")); - return; - } - - OculusXRColocation::FColocation::StopDiscoverSessions(request); -} diff --git a/Plugins/MetaXR/Source/OculusXRColocation/Private/OculusXRColocationFunctions.cpp b/Plugins/MetaXR/Source/OculusXRColocation/Private/OculusXRColocationFunctions.cpp deleted file mode 100644 index 12f241c..0000000 --- a/Plugins/MetaXR/Source/OculusXRColocation/Private/OculusXRColocationFunctions.cpp +++ /dev/null @@ -1,28 +0,0 @@ -// Copyright (c) Meta Platforms, Inc. and affiliates. - -#include "OculusXRColocationFunctions.h" -#include "OculusXRColocationFunctionsOVR.h" -#include "OculusXRColocationFunctionsOpenXR.h" -#include "IOpenXRHMD.h" -#include "OculusXRHMD.h" - -TSharedPtr IOculusXRColocationFunctions::ColocationFunctionsImpl = nullptr; -TSharedPtr IOculusXRColocationFunctions::GetOculusXRColocationFunctionsImpl() -{ - if (ColocationFunctionsImpl == nullptr) - { - const FName SystemName(TEXT("OpenXR")); - const bool IsOpenXR = GEngine->XRSystem.IsValid() && (GEngine->XRSystem->GetSystemName() == SystemName); - if (OculusXRHMD::FOculusXRHMD::GetOculusXRHMD() != nullptr) - { - ColocationFunctionsImpl = MakeShared(); - } - else if (IsOpenXR) - { - ColocationFunctionsImpl = MakeShared(); - } - } - - check(ColocationFunctionsImpl); - return ColocationFunctionsImpl; -} diff --git a/Plugins/MetaXR/Source/OculusXRColocation/Private/OculusXRColocationFunctions.h b/Plugins/MetaXR/Source/OculusXRColocation/Private/OculusXRColocationFunctions.h deleted file mode 100644 index 75a0465..0000000 --- a/Plugins/MetaXR/Source/OculusXRColocation/Private/OculusXRColocationFunctions.h +++ /dev/null @@ -1,18 +0,0 @@ -// Copyright (c) Meta Platforms, Inc. and affiliates. - -#pragma once - -#include "OculusXRColocationTypes.h" - -class OCULUSXRCOLOCATION_API IOculusXRColocationFunctions -{ -public: - virtual EColocationResult StartColocationDiscovery(uint64& OutRequestId) = 0; - virtual EColocationResult StopColocationDiscovery(uint64& OutRequestId) = 0; - - virtual EColocationResult StartColocationAdvertisement(const TArray& MetaData, uint64& OutRequestId) = 0; - virtual EColocationResult StopColocationAdvertisement(uint64& OutRequestId) = 0; - - static TSharedPtr GetOculusXRColocationFunctionsImpl(); - static TSharedPtr ColocationFunctionsImpl; -}; diff --git a/Plugins/MetaXR/Source/OculusXRColocation/Private/OculusXRColocationFunctionsOVR.cpp b/Plugins/MetaXR/Source/OculusXRColocation/Private/OculusXRColocationFunctionsOVR.cpp deleted file mode 100644 index 4ded443..0000000 --- a/Plugins/MetaXR/Source/OculusXRColocation/Private/OculusXRColocationFunctionsOVR.cpp +++ /dev/null @@ -1,54 +0,0 @@ -// Copyright (c) Meta Platforms, Inc. and affiliates. - -#include "OculusXRColocationFunctionsOVR.h" -#include "OculusXRHMD.h" -#include "OculusXRColocationUtil.h" -#include "OculusXRColocationModule.h" - -EColocationResult FOculusXRColocationFunctionsOVR::StartColocationDiscovery(uint64& OutRequestId) -{ - ovrpResult result = FOculusXRHMDModule::GetPluginWrapper().StartColocationDiscovery(&OutRequestId); - auto ueResult = OculusXRColocation::GetResult(result); - - UE_LOG(LogOculusXRColocation, Log, TEXT("[OVR::StartColocationDiscovery] RequestID: %llu, Launch async result: %s"), - OutRequestId, *OculusXRColocation::ToString(ueResult)); - - return ueResult; -} - -EColocationResult FOculusXRColocationFunctionsOVR::StopColocationDiscovery(uint64& OutRequestId) -{ - ovrpResult result = FOculusXRHMDModule::GetPluginWrapper().StopColocationDiscovery(&OutRequestId); - auto ueResult = OculusXRColocation::GetResult(result); - - UE_LOG(LogOculusXRColocation, Log, TEXT("[OVR::StopColocationDiscovery] RequestID: %llu, Launch async result: %s"), - OutRequestId, *OculusXRColocation::ToString(ueResult)); - - return ueResult; -} - -EColocationResult FOculusXRColocationFunctionsOVR::StartColocationAdvertisement(const TArray& MetaData, uint64& OutRequestId) -{ - ovrpColocationAdvertisementStartInfo startInfo; - startInfo.Buffer = (ovrpByte*)MetaData.GetData(); - startInfo.BufferSize = MetaData.Num(); - - ovrpResult result = FOculusXRHMDModule::GetPluginWrapper().StartColocationAdvertisement(&startInfo, &OutRequestId); - auto ueResult = OculusXRColocation::GetResult(result); - - UE_LOG(LogOculusXRColocation, Log, TEXT("[OVR::StartColocationAdvertisement] RequestID: %llu, Launch async result: %s"), - OutRequestId, *OculusXRColocation::ToString(ueResult)); - - return ueResult; -} - -EColocationResult FOculusXRColocationFunctionsOVR::StopColocationAdvertisement(uint64& OutRequestId) -{ - ovrpResult result = FOculusXRHMDModule::GetPluginWrapper().StopColocationAdvertisement(&OutRequestId); - auto ueResult = OculusXRColocation::GetResult(result); - - UE_LOG(LogOculusXRColocation, Log, TEXT("[OVR::StopColocationAdvertisement] RequestID: %llu, Launch async result: %s"), - OutRequestId, *OculusXRColocation::ToString(ueResult)); - - return ueResult; -} diff --git a/Plugins/MetaXR/Source/OculusXRColocation/Private/OculusXRColocationFunctionsOVR.h b/Plugins/MetaXR/Source/OculusXRColocation/Private/OculusXRColocationFunctionsOVR.h deleted file mode 100644 index 6ae3e19..0000000 --- a/Plugins/MetaXR/Source/OculusXRColocation/Private/OculusXRColocationFunctionsOVR.h +++ /dev/null @@ -1,15 +0,0 @@ -// Copyright (c) Meta Platforms, Inc. and affiliates. - -#pragma once - -#include "OculusXRColocationFunctions.h" - -class OCULUSXRCOLOCATION_API FOculusXRColocationFunctionsOVR : public IOculusXRColocationFunctions -{ -public: - virtual EColocationResult StartColocationDiscovery(uint64& OutRequestId) override; - virtual EColocationResult StopColocationDiscovery(uint64& OutRequestId) override; - - virtual EColocationResult StartColocationAdvertisement(const TArray& MetaData, uint64& OutRequestId) override; - virtual EColocationResult StopColocationAdvertisement(uint64& OutRequestId) override; -}; diff --git a/Plugins/MetaXR/Source/OculusXRColocation/Private/OculusXRColocationFunctionsOpenXR.cpp b/Plugins/MetaXR/Source/OculusXRColocation/Private/OculusXRColocationFunctionsOpenXR.cpp deleted file mode 100644 index 92c5350..0000000 --- a/Plugins/MetaXR/Source/OculusXRColocation/Private/OculusXRColocationFunctionsOpenXR.cpp +++ /dev/null @@ -1,30 +0,0 @@ -// Copyright (c) Meta Platforms, Inc. and affiliates. - -#include "OculusXRColocationFunctionsOpenXR.h" -#include "OculusXRHMD.h" -#include "OculusXRColocationUtil.h" -#include "OculusXRColocationModule.h" - -EColocationResult FOculusXRColocationFunctionsOpenXR::StartColocationDiscovery(uint64& OutRequestId) -{ - auto result = FOculusXRColocationModule::Get().GetXrColocation()->StartColocationDiscovery(OutRequestId); - return OculusXRColocation::GetResult(result); -} - -EColocationResult FOculusXRColocationFunctionsOpenXR::StopColocationDiscovery(uint64& OutRequestId) -{ - auto result = FOculusXRColocationModule::Get().GetXrColocation()->StopColocationDiscovery(OutRequestId); - return OculusXRColocation::GetResult(result); -} - -EColocationResult FOculusXRColocationFunctionsOpenXR::StartColocationAdvertisement(const TArray& MetaData, uint64& OutRequestId) -{ - auto result = FOculusXRColocationModule::Get().GetXrColocation()->StartColocationAdvertisement(MetaData, OutRequestId); - return OculusXRColocation::GetResult(result); -} - -EColocationResult FOculusXRColocationFunctionsOpenXR::StopColocationAdvertisement(uint64& OutRequestId) -{ - auto result = FOculusXRColocationModule::Get().GetXrColocation()->StopColocationAdvertisement(OutRequestId); - return OculusXRColocation::GetResult(result); -} diff --git a/Plugins/MetaXR/Source/OculusXRColocation/Private/OculusXRColocationFunctionsOpenXR.h b/Plugins/MetaXR/Source/OculusXRColocation/Private/OculusXRColocationFunctionsOpenXR.h deleted file mode 100644 index 3884fa2..0000000 --- a/Plugins/MetaXR/Source/OculusXRColocation/Private/OculusXRColocationFunctionsOpenXR.h +++ /dev/null @@ -1,16 +0,0 @@ -// Copyright (c) Meta Platforms, Inc. and affiliates. - -#pragma once - -#include -#include "OculusXRColocationFunctions.h" - -class OCULUSXRCOLOCATION_API FOculusXRColocationFunctionsOpenXR : public IOculusXRColocationFunctions -{ -public: - virtual EColocationResult StartColocationDiscovery(uint64& OutRequestId) override; - virtual EColocationResult StopColocationDiscovery(uint64& OutRequestId) override; - - virtual EColocationResult StartColocationAdvertisement(const TArray& MetaData, uint64& OutRequestId) override; - virtual EColocationResult StopColocationAdvertisement(uint64& OutRequestId) override; -}; diff --git a/Plugins/MetaXR/Source/OculusXRColocation/Private/OculusXRColocationLatentActions.cpp b/Plugins/MetaXR/Source/OculusXRColocation/Private/OculusXRColocationLatentActions.cpp deleted file mode 100644 index 0e8f674..0000000 --- a/Plugins/MetaXR/Source/OculusXRColocation/Private/OculusXRColocationLatentActions.cpp +++ /dev/null @@ -1,97 +0,0 @@ -// Copyright (c) Meta Platforms, Inc. and affiliates. - -#include "OculusXRColocationLatentActions.h" -#include "OculusXRHMD.h" -#include "OculusXRAnchorBPFunctionLibrary.h" -#include "OculusXRColocationModule.h" -#include "OculusXRColocationSession.h" -#include "OculusXRAnchorManager.h" - -// -// Find sessions -// -void UOculusXRAsyncAction_DiscoverColocationSessions::Activate() -{ - OculusXRColocation::FColocation::DiscoverSessionsAsync( - OculusXRColocation::FDiscoverSessionsRequest::FCompleteDelegate::CreateUObject(this, &UOculusXRAsyncAction_DiscoverColocationSessions::HandleSessionFindComplete), - FOculusXRColocationSessionFoundDelegate::CreateUObject(this, &UOculusXRAsyncAction_DiscoverColocationSessions::HandleSessionFound)); -} - -UOculusXRAsyncAction_DiscoverColocationSessions* UOculusXRAsyncAction_DiscoverColocationSessions::OculusXRAsyncDiscoverColocationSessions() -{ - UOculusXRAsyncAction_DiscoverColocationSessions* Action = NewObject(); - Action->RegisterWithGameInstance(GWorld); - - return Action; -} - -void UOculusXRAsyncAction_DiscoverColocationSessions::HandleSessionFound(const FOculusXRColocationSession& Session) -{ - TArray emptyArray; - SessionFound.Broadcast(true, Session, emptyArray); -} - -void UOculusXRAsyncAction_DiscoverColocationSessions::HandleSessionFindComplete(const OculusXRColocation::FDiscoverSessionsRequest::FResultType& Result) -{ - if (Result.IsSuccess()) - { - OnComplete.Broadcast(true, FOculusXRColocationSession(), Result.GetValue()); - } - else - { - TArray emptyArray; - OnComplete.Broadcast(false, FOculusXRColocationSession(), emptyArray); - } - - SetReadyToDestroy(); -} - -// -// Start session advertisement -// -void UOculusXRAsyncAction_StartColocationSessionAdvertisement::Activate() -{ - OculusXRColocation::FColocation::StartSessionAdvertisementAsync( - SessionData, - OculusXRColocation::FStartSessionAdvertisementRequest::FCompleteDelegate::CreateUObject( - this, &UOculusXRAsyncAction_StartColocationSessionAdvertisement::HandleStartSessionAdvertisementComplete)); -} - -UOculusXRAsyncAction_StartColocationSessionAdvertisement* UOculusXRAsyncAction_StartColocationSessionAdvertisement::OculusXRAsyncStartColocationSessionAdvertisement(const TArray& SessionData) -{ - UOculusXRAsyncAction_StartColocationSessionAdvertisement* Action = NewObject(); - Action->RegisterWithGameInstance(GWorld); - Action->SessionData = SessionData; - return Action; -} - -void UOculusXRAsyncAction_StartColocationSessionAdvertisement::HandleStartSessionAdvertisementComplete( - const OculusXRColocation::FStartSessionAdvertisementRequest::FResultType& Result) -{ - OnComplete.Broadcast(Result.IsSuccess(), Result.IsSuccess() ? Result.GetValue() : FOculusXRColocationSession()); - SetReadyToDestroy(); -} - -// -// Stop session advertisement -// -void UOculusXRAsyncAction_StopColocationSessionAdvertisement::Activate() -{ - OculusXRColocation::FColocation::StopSessionAdvertisementAsync( - OculusXRColocation::FStopSessionAdvertisementRequest::FCompleteDelegate::CreateUObject( - this, &UOculusXRAsyncAction_StopColocationSessionAdvertisement::HandleStopSessionAdvertisementComplete)); -} - -UOculusXRAsyncAction_StopColocationSessionAdvertisement* UOculusXRAsyncAction_StopColocationSessionAdvertisement::OculusXRAsyncStopColocationSessionAdvertisement() -{ - UOculusXRAsyncAction_StopColocationSessionAdvertisement* Action = NewObject(); - Action->RegisterWithGameInstance(GWorld); - return Action; -} - -void UOculusXRAsyncAction_StopColocationSessionAdvertisement::HandleStopSessionAdvertisementComplete( - const OculusXRColocation::FStopSessionAdvertisementRequest::FResultType& Result) -{ - OnComplete.Broadcast(Result.IsSuccess()); - SetReadyToDestroy(); -} diff --git a/Plugins/MetaXR/Source/OculusXRColocation/Private/OculusXRColocationModule.cpp b/Plugins/MetaXR/Source/OculusXRColocation/Private/OculusXRColocationModule.cpp deleted file mode 100644 index b93d074..0000000 --- a/Plugins/MetaXR/Source/OculusXRColocation/Private/OculusXRColocationModule.cpp +++ /dev/null @@ -1,57 +0,0 @@ -// @lint-ignore-every LICENSELINT -// Copyright Epic Games, Inc. All Rights Reserved. - -#include "OculusXRColocationModule.h" -#include "IOculusXRHMDModule.h" - -#if OCULUS_HMD_SUPPORTED_PLATFORMS -#include "OculusXRHMDModule.h" -#include "OculusXRHMD.h" -#include "OculusXRColocationEventPolling.h" - -DEFINE_LOG_CATEGORY(LogOculusXRColocation); - -#define LOCTEXT_NAMESPACE "OculusXRColocation" - -//------------------------------------------------------------------------------------------------- -// FOculusXRColocationModule -//------------------------------------------------------------------------------------------------- -void FOculusXRColocationModule::StartupModule() -{ - ColocationXR = MakeShareable(new XRColocation::FColocationXR()); - ColocationXR->RegisterAsOpenXRExtension(); - - FCoreDelegates::OnPostEngineInit.AddRaw(this, &FOculusXRColocationModule::OnPostEngineInit); -} - -void FOculusXRColocationModule::ShutdownModule() -{ -} - -void FOculusXRColocationModule::OnPostEngineInit() -{ - if (IsRunningCommandlet()) - { - return; - } - - if (!GEngine) - { - return; - } - - OculusXRHMD::FOculusXRHMD* HMD = OculusXRHMD::FOculusXRHMD::GetOculusXRHMD(); - if (!HMD) - { - UE_LOG(LogOculusXRColocation, Warning, TEXT("Unable to retrieve OculusXRHMD, cannot add event polling delegate.")); - return; - } - - HMD->AddEventPollingDelegate(OculusXRHMD::FOculusXRHMDEventPollingDelegate::CreateStatic(&OculusXRColocation::FColocationEventPolling::OnPollEvent)); -} - -#endif // OCULUS_HMD_SUPPORTED_PLATFORMS - -IMPLEMENT_MODULE(FOculusXRColocationModule, OculusXRColocation) - -#undef LOCTEXT_NAMESPACE diff --git a/Plugins/MetaXR/Source/OculusXRColocation/Private/OculusXRColocationModule.h b/Plugins/MetaXR/Source/OculusXRColocation/Private/OculusXRColocationModule.h deleted file mode 100644 index 55405ba..0000000 --- a/Plugins/MetaXR/Source/OculusXRColocation/Private/OculusXRColocationModule.h +++ /dev/null @@ -1,52 +0,0 @@ -// @lint-ignore-every LICENSELINT -// Copyright Epic Games, Inc. All Rights Reserved. - -#pragma once - -#include "IOculusXRHMDModule.h" -#include "IOculusXRColocationModule.h" -#include "openxr/OculusXRColocationXR.h" - -#define LOCTEXT_NAMESPACE "OculusColocation" - -//------------------------------------------------------------------------------------------------- -// FOculusXRColocationModule -//------------------------------------------------------------------------------------------------- - -#if OCULUS_HMD_SUPPORTED_PLATFORMS - -DECLARE_LOG_CATEGORY_EXTERN(LogOculusXRColocation, Log, All); - -typedef TSharedPtr FColocationXRPtr; - -class FOculusXRColocationModule : public IOculusXRColocationModule -{ -public: - static inline FOculusXRColocationModule& Get() - { - return FModuleManager::LoadModuleChecked("OculusXRColocation"); - } - - virtual ~FOculusXRColocationModule() = default; - - // IModuleInterface interface - virtual void StartupModule() override; - virtual void ShutdownModule() override; - - FColocationXRPtr GetXrColocation() { return ColocationXR; } - -private: - void OnPostEngineInit(); - - FColocationXRPtr ColocationXR; -}; - -#else // OCULUS_HMD_SUPPORTED_PLATFORMS - -class FOculusXRColocationModule : public FDefaultModuleImpl -{ -}; - -#endif // OCULUS_HMD_SUPPORTED_PLATFORMS - -#undef LOCTEXT_NAMESPACE diff --git a/Plugins/MetaXR/Source/OculusXRColocation/Private/OculusXRColocationRequests.cpp b/Plugins/MetaXR/Source/OculusXRColocation/Private/OculusXRColocationRequests.cpp deleted file mode 100644 index a0f37fc..0000000 --- a/Plugins/MetaXR/Source/OculusXRColocation/Private/OculusXRColocationRequests.cpp +++ /dev/null @@ -1,195 +0,0 @@ -// Copyright (c) Meta Platforms, Inc. and affiliates. - -#include "OculusXRColocationRequests.h" -#include "OculusXRColocationModule.h" -#include "OculusXRColocationUtil.h" -#include "OculusXRColocationSession.h" -#include "OculusXRColocationEventDelegates.h" -#include "OculusXRColocationSubsystem.h" -#include "OculusXRColocationFunctions.h" -#include "OculusXRHMDModule.h" - -namespace OculusXRColocation -{ - OculusXR::FAsyncRequestBase::RequestId DetermineRequestId(EColocationResult Result, uint64 Id) - { - return IsResultSuccess(Result) ? OculusXR::FAsyncRequestBase::RequestId(Id) : OculusXR::FAsyncRequestBase::RequestId(OculusXR::INVALID_TASK_REQUEST_ID); - } - - FDiscoverSessionsRequest::FDiscoverSessionsRequest() - { - OnStartCompleteHandle = FOculusXRColocationEventDelegates::StartColocationDiscoveryComplete.AddStatic( - &FDiscoverSessionsRequest::OnStartComplete); - - OnSessionFoundHandle = FOculusXRColocationEventDelegates::ColocationDiscoveryResultAvailable.AddStatic( - &FDiscoverSessionsRequest::OnResultAvailable); - - OnStopCompleteHandle = FOculusXRColocationEventDelegates::StopColocationDiscoveryComplete.AddStatic( - &FDiscoverSessionsRequest::OnDiscoveryComplete); - - OnDiscoveryCompleteHandle = FOculusXRColocationEventDelegates::StopColocationDiscoveryComplete.AddStatic( - &FDiscoverSessionsRequest::OnDiscoveryComplete); - } - - FDiscoverSessionsRequest::~FDiscoverSessionsRequest() - { - } - - void FDiscoverSessionsRequest::BindOnSessionFound(const FOculusXRColocationSessionFoundDelegate& OnSessionFound) - { - OnFoundSessionCallback = OnSessionFound; - } - - void FDiscoverSessionsRequest::OnSessionFound(FOculusXRColocationSession&& Session) - { - auto index = FoundSessions.Emplace(Session); - OnFoundSessionCallback.ExecuteIfBound(FoundSessions[index]); - } - - void FDiscoverSessionsRequest::OnInitRequest() - { - uint64 requestId; - auto result = IOculusXRColocationFunctions::GetOculusXRColocationFunctionsImpl()->StartColocationDiscovery(requestId); - UE_LOG(LogOculusXRColocation, Log, TEXT("Starting colocation session discovery. RequestID: %llu, Launch async result: %d"), requestId, result); - - SetRequestId(DetermineRequestId(result, requestId)); - SetInitialResult(result); - } - - void FDiscoverSessionsRequest::OnStartComplete(FOculusXRUInt64 RequestId, EColocationResult Result) - { - auto taskPtr = OculusXR::FAsyncRequestSystem::GetRequest( - OculusXR::FAsyncRequestBase::RequestId{ RequestId.GetValue() }); - - if (!taskPtr.IsValid()) - { - return; - } - - // If result succeeded we don't have complete the task but we do update the subsystem - if (IsResultSuccess(Result)) - { - UOculusXRColocationSubsystem::Get()->SetDiscoveryRequest(taskPtr); - return; - } - - OculusXR::FAsyncRequestSystem::CompleteRequest( - taskPtr->GetEventId(), - FDiscoverSessionsRequest::FResultType::FromError(Result)); - } - - void FDiscoverSessionsRequest::OnResultAvailable(FOculusXRUInt64 RequestId, FOculusXRUUID Uuid, const TArray& Metadata) - { - auto taskPtr = OculusXR::FAsyncRequestSystem::GetRequest( - OculusXR::FAsyncRequestBase::RequestId{ RequestId.GetValue() }); - - if (!taskPtr.IsValid()) - { - return; - } - - FOculusXRColocationSession session; - session.Uuid = Uuid; - session.Metadata = Metadata; - - taskPtr->OnSessionFound(std::move(session)); - } - - void FDiscoverSessionsRequest::OnDiscoveryComplete(FOculusXRUInt64 RequestId, EColocationResult Result) - { - auto taskPtr = OculusXR::FAsyncRequestSystem::GetRequest( - OculusXR::FAsyncRequestBase::RequestId{ RequestId.GetValue() }); - - if (!taskPtr.IsValid()) - { - return; - } - - UOculusXRColocationSubsystem::Get()->ClearDiscoveryRequest(); - - OculusXR::FAsyncRequestSystem::CompleteRequest( - taskPtr->GetEventId(), - FDiscoverSessionsRequest::FResultType::FromResult(Result, taskPtr->GetFoundSessions())); - } - - FStartSessionAdvertisementRequest::FStartSessionAdvertisementRequest(const TArray& SessionData) - : Data(SessionData) - { - OnStartCompleteHandle = FOculusXRColocationEventDelegates::StartColocationAdvertisementComplete.AddStatic( - &FStartSessionAdvertisementRequest::OnStartComplete); - } - - FStartSessionAdvertisementRequest::~FStartSessionAdvertisementRequest() - { - FOculusXRColocationEventDelegates::StartColocationAdvertisementComplete.Remove(OnStartCompleteHandle); - } - - void FStartSessionAdvertisementRequest::OnInitRequest() - { - uint64 requestId; - auto result = IOculusXRColocationFunctions::GetOculusXRColocationFunctionsImpl()->StartColocationAdvertisement(Data, requestId); - - SetRequestId(DetermineRequestId(result, requestId)); - SetInitialResult(result); - } - - void FStartSessionAdvertisementRequest::OnStartComplete(FOculusXRUInt64 RequestId, FOculusXRUUID Uuid, EColocationResult Result) - { - auto taskPtr = OculusXR::FAsyncRequestSystem::GetRequest( - OculusXR::FAsyncRequestBase::RequestId{ RequestId.GetValue() }); - - if (!taskPtr.IsValid()) - { - return; - } - - FOculusXRColocationSession session; - session.Uuid = Uuid; - session.Metadata = taskPtr->Data; - - OculusXR::FAsyncRequestSystem::CompleteRequest( - taskPtr->GetEventId(), - FStartSessionAdvertisementRequest::FResultType::FromResult( - Result, - session)); - } - - FStopSessionAdvertisementRequest::FStopSessionAdvertisementRequest() - { - OnStopCompleteHandle = FOculusXRColocationEventDelegates::StopColocationAdvertisementComplete.AddStatic( - &FStopSessionAdvertisementRequest::OnStopComplete); - - OnCompleteHandle = FOculusXRColocationEventDelegates::ColocationAdvertisementComplete.AddStatic( - &FStopSessionAdvertisementRequest::OnStopComplete); - } - - FStopSessionAdvertisementRequest::~FStopSessionAdvertisementRequest() - { - FOculusXRColocationEventDelegates::StopColocationAdvertisementComplete.Remove(OnStopCompleteHandle); - FOculusXRColocationEventDelegates::StopColocationAdvertisementComplete.Remove(OnCompleteHandle); - } - - void FStopSessionAdvertisementRequest::OnInitRequest() - { - uint64 requestId; - auto result = IOculusXRColocationFunctions::GetOculusXRColocationFunctionsImpl()->StopColocationAdvertisement(requestId); - - SetRequestId(DetermineRequestId(result, requestId)); - SetInitialResult(result); - } - - void FStopSessionAdvertisementRequest::OnStopComplete(FOculusXRUInt64 RequestId, EColocationResult Result) - { - auto taskPtr = OculusXR::FAsyncRequestSystem::GetRequest( - OculusXR::FAsyncRequestBase::RequestId{ RequestId.GetValue() }); - - if (!taskPtr.IsValid()) - { - return; - } - - OculusXR::FAsyncRequestSystem::CompleteRequest( - taskPtr->GetEventId(), - FStartSessionAdvertisementRequest::FResultType::FromResult(Result, UOculusXRColocationSubsystem::Get()->GetLocalSession())); - } -} // namespace OculusXRColocation diff --git a/Plugins/MetaXR/Source/OculusXRColocation/Private/OculusXRColocationSubsystem.cpp b/Plugins/MetaXR/Source/OculusXRColocation/Private/OculusXRColocationSubsystem.cpp deleted file mode 100644 index c1a61b2..0000000 --- a/Plugins/MetaXR/Source/OculusXRColocation/Private/OculusXRColocationSubsystem.cpp +++ /dev/null @@ -1,107 +0,0 @@ -// Copyright (c) Meta Platforms, Inc. and affiliates. - -#include "OculusXRColocationSubsystem.h" -#include "OculusXRColocationModule.h" -#include "OculusXRColocationEventDelegates.h" -#include "OculusXRColocationUtil.h" -#include "OculusXRColocationRequests.h" -#include -#include "Engine/Engine.h" - -UOculusXRColocationSubsystem::UOculusXRColocationSubsystem() {} - -UOculusXRColocationSubsystem* UOculusXRColocationSubsystem::Get() -{ - if (GWorld != nullptr) - { -#if WITH_EDITOR - if (GIsEditor) - { - for (const FWorldContext& Context : GEngine->GetWorldContexts()) - { - if (Context.WorldType == EWorldType::PIE) - { - return Context.World()->GetGameInstance()->GetSubsystem(); - } - } - } -#endif // WITH_EDITOR - - return GWorld->GetGameInstance()->GetSubsystem(); - } - - return nullptr; -} - -void UOculusXRColocationSubsystem::Initialize(FSubsystemCollectionBase& Collection) -{ - OnAdvertisementStartHandle = FOculusXRColocationEventDelegates::StartColocationAdvertisementComplete.AddUObject(this, &UOculusXRColocationSubsystem::OnColocationAdvertisementStart); - OnAdvertisementStoppedHandle = FOculusXRColocationEventDelegates::ColocationAdvertisementComplete.AddUObject(this, &UOculusXRColocationSubsystem::OnColocationAdvertisementStopped); -} - -void UOculusXRColocationSubsystem::Deinitialize() -{ - FOculusXRColocationEventDelegates::StartColocationAdvertisementComplete.Remove(OnAdvertisementStartHandle); - FOculusXRColocationEventDelegates::StartColocationAdvertisementComplete.Remove(OnAdvertisementStoppedHandle); -} - -void UOculusXRColocationSubsystem::AssignLocalColocationSessionData(const FOculusXRUUID& Uuid, const TArray& Data) -{ - check(!bHasLocalSession); - LocalSession.Uuid = Uuid; - LocalSession.Metadata = Data; - bHasLocalSession = true; -} - -void UOculusXRColocationSubsystem::ClearLocalColocationSession() -{ - bHasLocalSession = false; - LocalSession.Uuid = FOculusXRUUID(); - LocalSession.Metadata.Empty(); -} - -bool UOculusXRColocationSubsystem::HasLocalColocationSession() const -{ - return bHasLocalSession; -} - -const FOculusXRColocationSession& UOculusXRColocationSubsystem::GetLocalSession() const -{ - check(bHasLocalSession); - return LocalSession; -} - -void UOculusXRColocationSubsystem::SetDiscoveryRequest(TSharedPtr Request) -{ - check(!DiscoverSessionsRequest.IsValid()); - DiscoverSessionsRequest = Request; -} - -void UOculusXRColocationSubsystem::ClearDiscoveryRequest() -{ - DiscoverSessionsRequest = nullptr; -} - -TSharedPtr UOculusXRColocationSubsystem::GetDiscoveryRequest() const -{ - return DiscoverSessionsRequest; -} - -void UOculusXRColocationSubsystem::OnColocationAdvertisementStart(FOculusXRUInt64 RequestId, FOculusXRUUID Uuid, EColocationResult Result) -{ - if (OculusXRColocation::IsResultSuccess(Result)) - { - auto taskPtr = OculusXR::FAsyncRequestSystem::GetRequest( - OculusXR::FAsyncRequestBase::RequestId{ RequestId.GetValue() }); - - if (taskPtr.IsValid()) - { - AssignLocalColocationSessionData(Uuid, taskPtr->GetData()); - } - } -} - -void UOculusXRColocationSubsystem::OnColocationAdvertisementStopped(FOculusXRUInt64 RequestId, EColocationResult Result) -{ - ClearLocalColocationSession(); -} diff --git a/Plugins/MetaXR/Source/OculusXRColocation/Private/OculusXRColocationUtil.cpp b/Plugins/MetaXR/Source/OculusXRColocation/Private/OculusXRColocationUtil.cpp deleted file mode 100644 index 82df7cd..0000000 --- a/Plugins/MetaXR/Source/OculusXRColocation/Private/OculusXRColocationUtil.cpp +++ /dev/null @@ -1,96 +0,0 @@ -// Copyright (c) Meta Platforms, Inc. and affiliates. - -#include "OculusXRColocationUtil.h" - -namespace OculusXRColocation -{ - EColocationResult GetResult(ovrpResult OVRResult) - { - switch (OVRResult) - { - case ovrpSuccess: - return EColocationResult::Success; - case ovrpSuccess_ColocationDiscoveryAlreadyAdvertising: - return EColocationResult::Success_AlreadyAdvertising; - case ovrpSuccess_ColocationDiscoveryAlreadyDiscovering: - return EColocationResult::Success_AlreadyDiscovering; - case ovrpFailure: - return EColocationResult::Failure; - case ovrpFailure_InvalidParameter: - return EColocationResult::FailureInvalidParameter; - case ovrpFailure_DataIsInvalid: - return EColocationResult::FailureDataIsInvalid; - case ovrpFailure_SpacePermissionInsufficient: - return EColocationResult::InsufficientPermissions; - case ovrpFailure_SpaceCloudStorageDisabled: - return EColocationResult::CloudStorageDisabled; - case ovrpFailure_SpaceNetworkTimeout: - return EColocationResult::NetworkTimeout; - case ovrpFailure_SpaceNetworkRequestFailed: - return EColocationResult::NetworkRequestFailed; - case ovrpFailure_ColocationDiscoveryNetworkFailed: - return EColocationResult::NetworkRequestFailed; - case ovrpFailure_ColocationDiscoveryNoDiscoveryMethodAvailable: - return EColocationResult::NoDiscoveryMethodAvailable; - default: - return OVRP_SUCCESS(OVRResult) ? EColocationResult::Success : EColocationResult::Failure; - } - } - - EColocationResult GetResult(XrResult XRResult) - { - switch (XRResult) - { - case XR_SUCCESS: - return EColocationResult::Success; - case XR_COLOCATION_DISCOVERY_ALREADY_ADVERTISING_META: - return EColocationResult::Success_AlreadyAdvertising; - case XR_COLOCATION_DISCOVERY_ALREADY_DISCOVERING_META: - return EColocationResult::Success_AlreadyDiscovering; - case XR_ERROR_RUNTIME_FAILURE: - return EColocationResult::Failure; - case XR_ERROR_VALIDATION_FAILURE: - return EColocationResult::FailureInvalidParameter; - case XR_ERROR_SPACE_PERMISSION_INSUFFICIENT_META: - return EColocationResult::InsufficientPermissions; - case XR_ERROR_SPACE_CLOUD_STORAGE_DISABLED_FB: - return EColocationResult::CloudStorageDisabled; - case XR_ERROR_SPACE_NETWORK_TIMEOUT_FB: - return EColocationResult::NetworkTimeout; - case XR_ERROR_SPACE_NETWORK_REQUEST_FAILED_FB: - return EColocationResult::NetworkRequestFailed; - case XR_ERROR_COLOCATION_DISCOVERY_NETWORK_FAILED_META: - return EColocationResult::NetworkRequestFailed; - case XR_ERROR_COLOCATION_DISCOVERY_NO_DISCOVERY_METHOD_META: - return EColocationResult::NoDiscoveryMethodAvailable; - default: - return XR_SUCCEEDED(XRResult) ? EColocationResult::Success : EColocationResult::Failure; - } - } - - const FString& ToString(EColocationResult Result) - { - // We could use UEnum::GetDisplayValueAsText but that will allocate! - const static TMap Mapping = { - { EColocationResult::Success, "Success" }, - { EColocationResult::Success_AlreadyAdvertising, "Success_AlreadyAdvertising" }, - { EColocationResult::Success_AlreadyDiscovering, "Success_AlreadyDiscovering" }, - { EColocationResult::Failure, "Failure" }, - { EColocationResult::FailureDataIsInvalid, "FailureDataIsInvalid" }, - { EColocationResult::FailureInvalidParameter, "FailureInvalidParameter" }, - { EColocationResult::InsufficientPermissions, "InsufficientPermissions" }, - { EColocationResult::CloudStorageDisabled, "CloudStorageDisabled" }, - { EColocationResult::NetworkRequestFailed, "NetworkRequestFailed" }, - { EColocationResult::NetworkTimeout, "NetworkTimeout" }, - { EColocationResult::NoDiscoveryMethodAvailable, "NoDiscoveryMethodAvailable" } - }; - - const static FString Invalid = "EColocationResult(Unknown)"; - return Mapping.Contains(Result) ? Mapping[Result] : Invalid; - } - - bool IsResultSuccess(EColocationResult Result) - { - return Result == EColocationResult::Success || Result == EColocationResult::Success_AlreadyAdvertising || Result == EColocationResult::Success_AlreadyDiscovering; - } -} // namespace OculusXRColocation diff --git a/Plugins/MetaXR/Source/OculusXRColocation/Private/OculusXRColocationUtil.h b/Plugins/MetaXR/Source/OculusXRColocation/Private/OculusXRColocationUtil.h deleted file mode 100644 index 91a227c..0000000 --- a/Plugins/MetaXR/Source/OculusXRColocation/Private/OculusXRColocationUtil.h +++ /dev/null @@ -1,18 +0,0 @@ -// Copyright (c) Meta Platforms, Inc. and affiliates. - -#pragma once - -#include "openxr/OculusXRColocationXRIncludes.h" -#include "OculusXRAnchorTypes.h" -#include "OculusXRColocationTypes.h" -#include "OculusXRHMDPrivate.h" - -namespace OculusXRColocation -{ - EColocationResult GetResult(ovrpResult OVRResult); - EColocationResult GetResult(XrResult XRResult); - - const FString& ToString(EColocationResult Result); - - bool IsResultSuccess(EColocationResult Result); -} // namespace OculusXRColocation diff --git a/Plugins/MetaXR/Source/OculusXRColocation/Private/openxr/OculusXRColocationXR.cpp b/Plugins/MetaXR/Source/OculusXRColocation/Private/openxr/OculusXRColocationXR.cpp deleted file mode 100644 index 041c58f..0000000 --- a/Plugins/MetaXR/Source/OculusXRColocation/Private/openxr/OculusXRColocationXR.cpp +++ /dev/null @@ -1,285 +0,0 @@ -// Copyright (c) Meta Platforms, Inc. and affiliates. - -#include "OculusXRColocationXR.h" -#include "OpenXRCore.h" -#include "OpenXRHMD.h" -#include "IOpenXRHMDModule.h" -#include "OpenXR/OculusXROpenXRUtilities.h" -#include "OculusXRAnchorsModule.h" -#include "OculusXRHMDPrivate.h" -#include "OculusXRColocationUtil.h" -#include "OculusXRColocationEventDelegates.h" -#include "OculusXRColocationModule.h" - -#define LOCTEXT_NAMESPACE "OculusXRColocation" - -namespace XRColocation -{ - PFN_xrStartColocationDiscoveryMETA xrStartColocationDiscoveryMETA = nullptr; - PFN_xrStopColocationDiscoveryMETA xrStopColocationDiscoveryMETA = nullptr; - PFN_xrStartColocationAdvertisementMETA xrStartColocationAdvertisementMETA = nullptr; - PFN_xrStopColocationAdvertisementMETA xrStopColocationAdvertisementMETA = nullptr; - - FColocationXR::FColocationXR() - : bExtColocationDiscoveryEnabled(false) - , OpenXRHMD(nullptr) - { - } - - FColocationXR::~FColocationXR() - { - } - - void FColocationXR::RegisterAsOpenXRExtension() - { -#if defined(WITH_OCULUS_BRANCH) - // Feature not enabled on Marketplace build. Currently only for the meta fork - RegisterOpenXRExtensionModularFeature(); -#endif - } - - bool FColocationXR::GetRequiredExtensions(TArray& OutExtensions) - { - OutExtensions.Add(XR_META_COLOCATION_DISCOVERY_EXTENSION_NAME); - return true; - } - - bool FColocationXR::GetOptionalExtensions(TArray& OutExtensions) - { - return true; - } - - const void* FColocationXR::OnCreateInstance(class IOpenXRHMDModule* InModule, const void* InNext) - { - if (InModule != nullptr) - { - bExtColocationDiscoveryEnabled = InModule->IsExtensionEnabled(XR_META_COLOCATION_DISCOVERY_EXTENSION_NAME); - - UE_LOG(LogOculusXRColocation, Log, TEXT("[Colocation] Extensions available")); - UE_LOG(LogOculusXRColocation, Log, TEXT(" Colocation Discovery: %hs"), bExtColocationDiscoveryEnabled ? "ENABLED" : "DISABLED"); - } - - return InNext; - } - - const void* FColocationXR::OnCreateSession(XrInstance InInstance, XrSystemId InSystem, const void* InNext) - { - InitOpenXRFunctions(InInstance); - - const FName SystemName(TEXT("OpenXR")); - const bool IsOpenXR = GEngine->XRSystem.IsValid() && (GEngine->XRSystem->GetSystemName() == SystemName); - if (IsOpenXR) - { - OpenXRHMD = (FOpenXRHMD*)GEngine->XRSystem.Get(); - } - - return InNext; - } - - void FColocationXR::OnDestroySession(XrSession InSession) - { - OpenXRHMD = nullptr; - } - - void FColocationXR::OnEvent(XrSession InSession, const XrEventDataBaseHeader* InHeader) - { - if (OpenXRHMD == nullptr) - { - UE_LOG(LogOculusXRColocation, Log, TEXT("[FColocationXR::OnEvent] Receieved event but no HMD was present.")); - return; - } - - if (InHeader->type == XR_TYPE_EVENT_DATA_START_COLOCATION_DISCOVERY_COMPLETE_META) - { - const XrEventDataStartColocationDiscoveryCompleteMETA* const event = - reinterpret_cast(InHeader); - - UE_LOG(LogOculusXRColocation, Verbose, TEXT("[FColocationXR::OnEvent] XrEventDataStartColocationDiscoveryCompleteMETA")); - UE_LOG(LogOculusXRColocation, Verbose, TEXT(" RequestId: %llu"), event->discoveryRequestId); - UE_LOG(LogOculusXRColocation, Verbose, TEXT(" Result: %d"), event->result); - - FOculusXRColocationEventDelegates::StartColocationDiscoveryComplete.Broadcast(event->discoveryRequestId, OculusXRColocation::GetResult(event->result)); - } - else if (InHeader->type == XR_TYPE_EVENT_DATA_COLOCATION_DISCOVERY_RESULT_META) - { - const XrEventDataColocationDiscoveryResultMETA* const event = - reinterpret_cast(InHeader); - - UE_LOG(LogOculusXRColocation, Verbose, TEXT("[FColocationXR::OnEvent] XrEventDataStartColocationDiscoveryCompleteMETA")); - UE_LOG(LogOculusXRColocation, Verbose, TEXT(" RequestId: %s"), *FOculusXRUUID(event->advertisementUuid.data).ToString()); - - TArray metadata(event->buffer, event->bufferSize); - FOculusXRColocationEventDelegates::ColocationDiscoveryResultAvailable.Broadcast(event->discoveryRequestId, event->advertisementUuid.data, metadata); - } - else if (InHeader->type == XR_TYPE_EVENT_DATA_COLOCATION_DISCOVERY_COMPLETE_META) - { - const XrEventDataColocationDiscoveryCompleteMETA* const event = - reinterpret_cast(InHeader); - - UE_LOG(LogOculusXRColocation, Verbose, TEXT("[FColocationXR::OnEvent] XrEventDataColocationDiscoveryCompleteMETA")); - UE_LOG(LogOculusXRColocation, Verbose, TEXT(" RequestId: %llu"), event->discoveryRequestId); - UE_LOG(LogOculusXRColocation, Verbose, TEXT(" Result: %d"), event->result); - - FOculusXRColocationEventDelegates::ColocationDiscoveryComplete.Broadcast(event->discoveryRequestId, OculusXRColocation::GetResult(event->result)); - } - else if (InHeader->type == XR_TYPE_EVENT_DATA_STOP_COLOCATION_DISCOVERY_COMPLETE_META) - { - const XrEventDataStopColocationDiscoveryCompleteMETA* const event = - reinterpret_cast(InHeader); - - UE_LOG(LogOculusXRColocation, Verbose, TEXT("[FColocationXR::OnEvent] XrEventDataStopColocationDiscoveryCompleteMETA")); - UE_LOG(LogOculusXRColocation, Verbose, TEXT(" RequestId: %llu"), event->requestId); - UE_LOG(LogOculusXRColocation, Verbose, TEXT(" Result: %d"), event->result); - - FOculusXRColocationEventDelegates::StopColocationDiscoveryComplete.Broadcast(event->requestId, OculusXRColocation::GetResult(event->result)); - } - else if (InHeader->type == XR_TYPE_EVENT_DATA_START_COLOCATION_ADVERTISEMENT_COMPLETE_META) - { - const XrEventDataStartColocationAdvertisementCompleteMETA* const event = - reinterpret_cast(InHeader); - - UE_LOG(LogOculusXRColocation, Verbose, TEXT("[FColocationXR::OnEvent] XrEventDataStartColocationAdvertisementCompleteMETA")); - UE_LOG(LogOculusXRColocation, Verbose, TEXT(" RequestId: %llu"), event->advertisementRequestId); - UE_LOG(LogOculusXRColocation, Verbose, TEXT(" RequestId: %s"), *FOculusXRUUID(event->advertisementUuid.data).ToString()); - UE_LOG(LogOculusXRColocation, Verbose, TEXT(" Result: %d"), event->result); - - FOculusXRColocationEventDelegates::StartColocationAdvertisementComplete.Broadcast(event->advertisementRequestId, event->advertisementUuid.data, OculusXRColocation::GetResult(event->result)); - } - else if (InHeader->type == XR_TYPE_EVENT_DATA_COLOCATION_ADVERTISEMENT_COMPLETE_META) - { - const XrEventDataColocationAdvertisementCompleteMETA* const event = - reinterpret_cast(InHeader); - - UE_LOG(LogOculusXRColocation, Verbose, TEXT("[FColocationXR::OnEvent] XrEventDataColocationAdvertisementCompleteMETA")); - UE_LOG(LogOculusXRColocation, Verbose, TEXT(" RequestId: %llu"), event->advertisementRequestId); - UE_LOG(LogOculusXRColocation, Verbose, TEXT(" Result: %d"), event->result); - - FOculusXRColocationEventDelegates::StopColocationDiscoveryComplete.Broadcast(event->advertisementRequestId, OculusXRColocation::GetResult(event->result)); - } - else if (InHeader->type == XR_TYPE_EVENT_DATA_STOP_COLOCATION_ADVERTISEMENT_COMPLETE_META) - { - const XrEventDataStopColocationAdvertisementCompleteMETA* const event = - reinterpret_cast(InHeader); - - UE_LOG(LogOculusXRColocation, Verbose, TEXT("[FColocationXR::OnEvent] XrEventDataStopColocationAdvertisementCompleteMETA")); - UE_LOG(LogOculusXRColocation, Verbose, TEXT(" RequestId: %llu"), event->requestId); - UE_LOG(LogOculusXRColocation, Verbose, TEXT(" Result: %d"), event->result); - - FOculusXRColocationEventDelegates::StopColocationDiscoveryComplete.Broadcast(event->requestId, OculusXRColocation::GetResult(event->result)); - } - } - - XrResult FColocationXR::StartColocationDiscovery(uint64& OutRequestId) - { - if (!OpenXRHMD || !OpenXRHMD->GetInstance() || !OpenXRHMD->GetSession()) - { - UE_LOG(LogOculusXRColocation, Warning, TEXT("[StartColocationDiscovery] XR state is invalid.")); - return XR_ERROR_VALIDATION_FAILURE; - } - - if (!IsColocationDiscoveryEnabled()) - { - UE_LOG(LogOculusXRColocation, Warning, TEXT("[StartColocationDiscovery] Colocation discovery extensions are unsupported.")); - return XR_ERROR_VALIDATION_FAILURE; - } - - XrColocationDiscoveryStartInfoMETA info{ XR_TYPE_COLOCATION_DISCOVERY_START_INFO_META, nullptr }; - auto result = xrStartColocationDiscoveryMETA(OpenXRHMD->GetSession(), &info, (XrAsyncRequestIdFB*)&OutRequestId); - if (!XR_SUCCEEDED(result)) - { - UE_LOG(LogOculusXRColocation, Warning, TEXT("[StartColocationDiscovery] Start colocation discovery failed. Result: %d"), result); - } - - return result; - } - - XrResult FColocationXR::StopColocationDiscovery(uint64& OutRequestId) - { - if (!OpenXRHMD || !OpenXRHMD->GetInstance() || !OpenXRHMD->GetSession()) - { - UE_LOG(LogOculusXRColocation, Warning, TEXT("[StopColocationDiscovery] XR state is invalid.")); - return XR_ERROR_VALIDATION_FAILURE; - } - - if (!IsColocationDiscoveryEnabled()) - { - UE_LOG(LogOculusXRColocation, Warning, TEXT("[StopColocationDiscovery] Colocation discovery extensions are unsupported.")); - return XR_ERROR_VALIDATION_FAILURE; - } - - XrColocationDiscoveryStopInfoMETA info{ XR_TYPE_COLOCATION_DISCOVERY_STOP_INFO_META, nullptr }; - auto result = xrStopColocationDiscoveryMETA(OpenXRHMD->GetSession(), &info, (XrAsyncRequestIdFB*)&OutRequestId); - if (!XR_SUCCEEDED(result)) - { - UE_LOG(LogOculusXRColocation, Warning, TEXT("[StopColocationDiscovery] Stop colocation discovery failed. Result: %d"), result); - } - - return result; - } - - XrResult FColocationXR::StartColocationAdvertisement(const TArray& Metadata, uint64& OutRequestId) - { - if (!OpenXRHMD || !OpenXRHMD->GetInstance() || !OpenXRHMD->GetSession()) - { - UE_LOG(LogOculusXRColocation, Warning, TEXT("[StartColocationAdvertisement] XR state is invalid.")); - return XR_ERROR_VALIDATION_FAILURE; - } - - if (!IsColocationDiscoveryEnabled()) - { - UE_LOG(LogOculusXRColocation, Warning, TEXT("[StartColocationAdvertisement] Colocation discovery extensions are unsupported.")); - return XR_ERROR_VALIDATION_FAILURE; - } - - XrColocationAdvertisementStartInfoMETA info{ XR_TYPE_COLOCATION_ADVERTISEMENT_START_INFO_META, nullptr }; - info.buffer = (uint8_t*)Metadata.GetData(); - info.bufferSize = Metadata.Num(); - - auto result = xrStartColocationAdvertisementMETA(OpenXRHMD->GetSession(), &info, (XrAsyncRequestIdFB*)&OutRequestId); - if (!XR_SUCCEEDED(result)) - { - UE_LOG(LogOculusXRColocation, Warning, TEXT("[StartColocationAdvertisement] Start colocation advertisement failed. Result: %d"), result); - } - - return result; - } - - XrResult FColocationXR::StopColocationAdvertisement(uint64& OutRequestId) - { - if (!OpenXRHMD || !OpenXRHMD->GetInstance() || !OpenXRHMD->GetSession()) - { - UE_LOG(LogOculusXRColocation, Warning, TEXT("[StopColocationAdvertisement] XR state is invalid.")); - return XR_ERROR_VALIDATION_FAILURE; - } - - if (!IsColocationDiscoveryEnabled()) - { - UE_LOG(LogOculusXRColocation, Warning, TEXT("[StopColocationAdvertisement] Colocation discovery extensions are unsupported.")); - return XR_ERROR_VALIDATION_FAILURE; - } - - XrColocationAdvertisementStopInfoMETA info{ XR_TYPE_COLOCATION_ADVERTISEMENT_STOP_INFO_META, nullptr }; - auto result = xrStopColocationAdvertisementMETA(OpenXRHMD->GetSession(), &info, (XrAsyncRequestIdFB*)&OutRequestId); - if (!XR_SUCCEEDED(result)) - { - UE_LOG(LogOculusXRColocation, Warning, TEXT("[StopColocationAdvertisement] Stop colocation advertisement failed. Result: %d"), result); - } - - return result; - } - - void FColocationXR::InitOpenXRFunctions(XrInstance InInstance) - { - // XR_META_colocation_discovery - if (IsColocationDiscoveryEnabled()) - { - OculusXR::XRGetInstanceProcAddr(InInstance, "xrStartColocationDiscoveryMETA", &xrStartColocationDiscoveryMETA); - OculusXR::XRGetInstanceProcAddr(InInstance, "xrStopColocationDiscoveryMETA", &xrStopColocationDiscoveryMETA); - OculusXR::XRGetInstanceProcAddr(InInstance, "xrStartColocationAdvertisementMETA", &xrStartColocationAdvertisementMETA); - OculusXR::XRGetInstanceProcAddr(InInstance, "xrStopColocationAdvertisementMETA", &xrStopColocationAdvertisementMETA); - } - } - -} // namespace XRColocation - -#undef LOCTEXT_NAMESPACE diff --git a/Plugins/MetaXR/Source/OculusXRColocation/Private/openxr/OculusXRColocationXR.h b/Plugins/MetaXR/Source/OculusXRColocation/Private/openxr/OculusXRColocationXR.h deleted file mode 100644 index a3bd939..0000000 --- a/Plugins/MetaXR/Source/OculusXRColocation/Private/openxr/OculusXRColocationXR.h +++ /dev/null @@ -1,54 +0,0 @@ -// Copyright (c) Meta Platforms, Inc. and affiliates. - -#pragma once - -#include "OculusXRColocationXRIncludes.h" -#include "IOpenXRExtensionPlugin.h" -#include "OculusXRColocationTypes.h" - -#define LOCTEXT_NAMESPACE "OculusXRColocation" - -class FOpenXRHMD; - -namespace XRColocation -{ - extern PFN_xrStartColocationDiscoveryMETA xrStartColocationDiscoveryMETA; - extern PFN_xrStopColocationDiscoveryMETA xrStopColocationDiscoveryMETA; - extern PFN_xrStartColocationAdvertisementMETA xrStartColocationAdvertisementMETA; - extern PFN_xrStopColocationAdvertisementMETA xrStopColocationAdvertisementMETA; - - class FColocationXR : public IOpenXRExtensionPlugin - { - public: - // IOculusXROpenXRHMDPlugin - virtual bool GetRequiredExtensions(TArray& OutExtensions) override; - virtual bool GetOptionalExtensions(TArray& OutExtensions) override; - virtual const void* OnCreateInstance(class IOpenXRHMDModule* InModule, const void* InNext) override; - virtual const void* OnCreateSession(XrInstance InInstance, XrSystemId InSystem, const void* InNext) override; - virtual void OnDestroySession(XrSession InSession) override; - virtual void OnEvent(XrSession InSession, const XrEventDataBaseHeader* InHeader) override; - - public: - FColocationXR(); - virtual ~FColocationXR(); - - void RegisterAsOpenXRExtension(); - - bool IsColocationDiscoveryEnabled() const { return bExtColocationDiscoveryEnabled; } - - XrResult StartColocationDiscovery(uint64& OutRequestId); - XrResult StopColocationDiscovery(uint64& OutRequestId); - XrResult StartColocationAdvertisement(const TArray& Metadata, uint64& OutRequestId); - XrResult StopColocationAdvertisement(uint64& OutRequestId); - - private: - void InitOpenXRFunctions(XrInstance InInstance); - - bool bExtColocationDiscoveryEnabled; - - FOpenXRHMD* OpenXRHMD; - }; - -} // namespace XRColocation - -#undef LOCTEXT_NAMESPACE diff --git a/Plugins/MetaXR/Source/OculusXRColocation/Private/openxr/OculusXRColocationXRIncludes.h b/Plugins/MetaXR/Source/OculusXRColocation/Private/openxr/OculusXRColocationXRIncludes.h deleted file mode 100644 index beb1b71..0000000 --- a/Plugins/MetaXR/Source/OculusXRColocation/Private/openxr/OculusXRColocationXRIncludes.h +++ /dev/null @@ -1,7 +0,0 @@ -// Copyright (c) Meta Platforms, Inc. and affiliates. - -#pragma once - -#include -#include -#include "openxr/OculusXRAnchorsXRIncludes.h" diff --git a/Plugins/MetaXR/Source/OculusXRColocation/Public/IOculusXRColocationModule.h b/Plugins/MetaXR/Source/OculusXRColocation/Public/IOculusXRColocationModule.h deleted file mode 100644 index d78c705..0000000 --- a/Plugins/MetaXR/Source/OculusXRColocation/Public/IOculusXRColocationModule.h +++ /dev/null @@ -1,35 +0,0 @@ -// @lint-ignore-every LICENSELINT -// Copyright Epic Games, Inc. All Rights Reserved. - -#pragma once -#include "Modules/ModuleManager.h" - -/** - * The public interface to this module. In most cases, this interface is only public to sibling modules - * within this plugin. - */ -class IOculusXRColocationModule : public IModuleInterface -{ - -public: - /** - * Singleton-like access to this module's interface. This is just for convenience! - * Beware of calling this during the shutdown phase, though. Your module might have been unloaded already. - * - * @return Returns singleton instance, loading the module on demand if needed - */ - static inline IOculusXRColocationModule& Get() - { - return FModuleManager::LoadModuleChecked("OculusXRColocation"); - } - - /** - * Checks to see if this module is loaded and ready. It is only valid to call Get() if IsAvailable() returns true. - * - * @return True if the module is loaded and ready to use - */ - static inline bool IsAvailable() - { - return FModuleManager::Get().IsModuleLoaded("OculusXRColocation"); - } -}; diff --git a/Plugins/MetaXR/Source/OculusXRColocation/Public/OculusXRColocation.h b/Plugins/MetaXR/Source/OculusXRColocation/Public/OculusXRColocation.h deleted file mode 100644 index 96a4067..0000000 --- a/Plugins/MetaXR/Source/OculusXRColocation/Public/OculusXRColocation.h +++ /dev/null @@ -1,19 +0,0 @@ -// Copyright (c) Meta Platforms, Inc. and affiliates. - -#pragma once - -#include "CoreMinimal.h" -#include "OculusXRColocationTypes.h" -#include "OculusXRColocationRequests.h" - -namespace OculusXRColocation -{ - struct OCULUSXRCOLOCATION_API FColocation - { - static TSharedPtr DiscoverSessionsAsync(const FDiscoverSessionsRequest::FCompleteDelegate& OnComplete, const FOculusXRColocationSessionFoundDelegate& OnSessionFound); - static EColocationResult StopDiscoverSessions(TSharedPtr Request); - static TSharedPtr StartSessionAdvertisementAsync(const TArray& SessionData, const FStartSessionAdvertisementRequest::FCompleteDelegate& OnComplete); - static TSharedPtr StopSessionAdvertisementAsync(const FStopSessionAdvertisementRequest::FCompleteDelegate& OnComplete); - }; - -} // namespace OculusXRColocation diff --git a/Plugins/MetaXR/Source/OculusXRColocation/Public/OculusXRColocationFunctionLibrary.h b/Plugins/MetaXR/Source/OculusXRColocation/Public/OculusXRColocationFunctionLibrary.h deleted file mode 100644 index e13fd16..0000000 --- a/Plugins/MetaXR/Source/OculusXRColocation/Public/OculusXRColocationFunctionLibrary.h +++ /dev/null @@ -1,16 +0,0 @@ -// Copyright (c) Meta Platforms, Inc. and affiliates. - -#pragma once - -#include "CoreMinimal.h" -#include "Kismet/BlueprintFunctionLibrary.h" -#include "OculusXRColocationFunctionLibrary.generated.h" - -UCLASS() -class OCULUSXRCOLOCATION_API UOculusXRColocationFunctionLibrary : public UBlueprintFunctionLibrary -{ - GENERATED_BODY() - - UFUNCTION(BlueprintCallable, Category = "OculusXR|Colocation") - static void StopColocationSessionDiscovery(); -}; diff --git a/Plugins/MetaXR/Source/OculusXRColocation/Public/OculusXRColocationLatentActions.h b/Plugins/MetaXR/Source/OculusXRColocation/Public/OculusXRColocationLatentActions.h deleted file mode 100644 index 53946c8..0000000 --- a/Plugins/MetaXR/Source/OculusXRColocation/Public/OculusXRColocationLatentActions.h +++ /dev/null @@ -1,80 +0,0 @@ -// Copyright (c) Meta Platforms, Inc. and affiliates. - -#pragma once - -#include "Kismet/BlueprintAsyncActionBase.h" -#include "OculusXRColocationTypes.h" -#include "OculusXRColocation.h" -#include "OculusXRColocationSession.h" -#include "OculusXRColocationLatentActions.generated.h" - -DECLARE_DYNAMIC_MULTICAST_DELEGATE_ThreeParams(FOculusXR_LatentAction_ColocationDiscoveryComplete, bool, Success, const FOculusXRColocationSession&, Session, const TArray&, FoundSessions); -DECLARE_DYNAMIC_MULTICAST_DELEGATE_ThreeParams(FOculusXR_LatentAction_ColocationSessionFound, bool, Success, const FOculusXRColocationSession&, Session, const TArray&, FoundSessions); -DECLARE_DYNAMIC_MULTICAST_DELEGATE_TwoParams(FOculusXR_LatentAction_ColocationAdvertisementStarted, bool, Success, const FOculusXRColocationSession&, Session); -DECLARE_DYNAMIC_MULTICAST_DELEGATE_OneParam(FOculusXR_LatentAction_ColocationAdvertisementStopped, bool, Success); - -// -// Find sessions -// -UCLASS() -class OCULUSXRCOLOCATION_API UOculusXRAsyncAction_DiscoverColocationSessions : public UBlueprintAsyncActionBase -{ - GENERATED_BODY() -public: - virtual void Activate() override; - - UFUNCTION(BlueprintCallable, meta = (BlueprintInternalUseOnly = "true")) - static UOculusXRAsyncAction_DiscoverColocationSessions* OculusXRAsyncDiscoverColocationSessions(); - - UPROPERTY(BlueprintAssignable) - FOculusXR_LatentAction_ColocationSessionFound SessionFound; - - UPROPERTY(BlueprintAssignable) - FOculusXR_LatentAction_ColocationDiscoveryComplete OnComplete; - -private: - void HandleSessionFound(const FOculusXRColocationSession& Session); - void HandleSessionFindComplete(const OculusXRColocation::FDiscoverSessionsRequest::FResultType& Result); -}; - -// -// Start advertisement -// -UCLASS() -class OCULUSXRCOLOCATION_API UOculusXRAsyncAction_StartColocationSessionAdvertisement : public UBlueprintAsyncActionBase -{ - GENERATED_BODY() -public: - virtual void Activate() override; - - UFUNCTION(BlueprintCallable, meta = (BlueprintInternalUseOnly = "true")) - static UOculusXRAsyncAction_StartColocationSessionAdvertisement* OculusXRAsyncStartColocationSessionAdvertisement(const TArray& SessionData); - - UPROPERTY(BlueprintAssignable) - FOculusXR_LatentAction_ColocationAdvertisementStarted OnComplete; - -private: - TArray SessionData; - - void HandleStartSessionAdvertisementComplete(const OculusXRColocation::FStartSessionAdvertisementRequest::FResultType& Result); -}; - -// -// Stop advertisement -// -UCLASS() -class OCULUSXRCOLOCATION_API UOculusXRAsyncAction_StopColocationSessionAdvertisement : public UBlueprintAsyncActionBase -{ - GENERATED_BODY() -public: - virtual void Activate() override; - - UFUNCTION(BlueprintCallable, meta = (BlueprintInternalUseOnly = "true")) - static UOculusXRAsyncAction_StopColocationSessionAdvertisement* OculusXRAsyncStopColocationSessionAdvertisement(); - - UPROPERTY(BlueprintAssignable) - FOculusXR_LatentAction_ColocationAdvertisementStopped OnComplete; - -private: - void HandleStopSessionAdvertisementComplete(const OculusXRColocation::FStopSessionAdvertisementRequest::FResultType& Result); -}; diff --git a/Plugins/MetaXR/Source/OculusXRColocation/Public/OculusXRColocationRequests.h b/Plugins/MetaXR/Source/OculusXRColocation/Public/OculusXRColocationRequests.h deleted file mode 100644 index a3e4fd8..0000000 --- a/Plugins/MetaXR/Source/OculusXRColocation/Public/OculusXRColocationRequests.h +++ /dev/null @@ -1,90 +0,0 @@ -// Copyright (c) Meta Platforms, Inc. and affiliates. - -#pragma once - -#include "OculusXRAsyncRequestSystem.h" -#include "OculusXRAsyncRequest.h" -#include "OculusXRColocationSession.h" -#include "OculusXRColocationTypes.h" -#include "OculusXRColocationUtil.h" - -DECLARE_DELEGATE_OneParam(FOculusXRColocationSessionFoundDelegate, const FOculusXRColocationSession&); - -namespace OculusXRColocation -{ - struct FAsyncResultColocationDiscoverySuccess - { - bool operator()(EColocationResult Val) { return OculusXRColocation::IsResultSuccess(Val); } - }; - - template - using FAsyncColocationRequest = OculusXR::FAsyncRequest; - - // Discover nearby sessions - struct OCULUSXRCOLOCATION_API FDiscoverSessionsRequest : - FAsyncColocationRequest> - { - public: - FDiscoverSessionsRequest(); - ~FDiscoverSessionsRequest(); - - void BindOnSessionFound(const FOculusXRColocationSessionFoundDelegate& OnSessionFound); - void OnSessionFound(FOculusXRColocationSession&& Session); - - const TArray& GetFoundSessions() const { return FoundSessions; } - - protected: - virtual void OnInitRequest() override; - - private: - static void OnStartComplete(FOculusXRUInt64 RequestId, EColocationResult Result); - static void OnResultAvailable(FOculusXRUInt64 RequestId, FOculusXRUUID Uuid, const TArray& Metadata); - static void OnDiscoveryComplete(FOculusXRUInt64 RequestId, EColocationResult Result); - - FDelegateHandle OnStartCompleteHandle; - FDelegateHandle OnSessionFoundHandle; - FDelegateHandle OnStopCompleteHandle; - FDelegateHandle OnDiscoveryCompleteHandle; - - FOculusXRColocationSessionFoundDelegate OnFoundSessionCallback; - TArray FoundSessions; - }; - - // Start advertisement, creates a session internally - struct OCULUSXRCOLOCATION_API FStartSessionAdvertisementRequest : - FAsyncColocationRequest - { - public: - FStartSessionAdvertisementRequest(const TArray& SessionData); - ~FStartSessionAdvertisementRequest(); - - const TArray& GetData() const { return Data; } - - protected: - virtual void OnInitRequest() override; - - private: - static void OnStartComplete(FOculusXRUInt64 RequestId, FOculusXRUUID Uuid, EColocationResult Result); - - FDelegateHandle OnStartCompleteHandle; - TArray Data; - }; - - // Stop advertisement, stops advertising and destroys the internal session - struct OCULUSXRCOLOCATION_API FStopSessionAdvertisementRequest : - FAsyncColocationRequest - { - public: - FStopSessionAdvertisementRequest(); - ~FStopSessionAdvertisementRequest(); - - protected: - virtual void OnInitRequest() override; - - private: - static void OnStopComplete(FOculusXRUInt64 RequestId, EColocationResult Result); - - FDelegateHandle OnStopCompleteHandle; - FDelegateHandle OnCompleteHandle; - }; -} // namespace OculusXRColocation diff --git a/Plugins/MetaXR/Source/OculusXRColocation/Public/OculusXRColocationSession.h b/Plugins/MetaXR/Source/OculusXRColocation/Public/OculusXRColocationSession.h deleted file mode 100644 index b882176..0000000 --- a/Plugins/MetaXR/Source/OculusXRColocation/Public/OculusXRColocationSession.h +++ /dev/null @@ -1,18 +0,0 @@ -// Copyright (c) Meta Platforms, Inc. and affiliates. - -#pragma once - -#include "OculusXRColocationTypes.h" -#include "OculusXRColocationSession.generated.h" - -USTRUCT(BlueprintType) -struct OCULUSXRCOLOCATION_API FOculusXRColocationSession -{ - GENERATED_BODY() -public: - UPROPERTY(BlueprintReadOnly, Category = "OculusXR|Colocation") - FOculusXRUUID Uuid; - - UPROPERTY(BlueprintReadOnly, Category = "OculusXR|Colocation") - TArray Metadata; -}; diff --git a/Plugins/MetaXR/Source/OculusXRColocation/Public/OculusXRColocationSubsystem.h b/Plugins/MetaXR/Source/OculusXRColocation/Public/OculusXRColocationSubsystem.h deleted file mode 100644 index 80ccf4b..0000000 --- a/Plugins/MetaXR/Source/OculusXRColocation/Public/OculusXRColocationSubsystem.h +++ /dev/null @@ -1,42 +0,0 @@ -// Copyright (c) Meta Platforms, Inc. and affiliates. - -#pragma once - -#include "OculusXRColocationSession.h" -#include "OculusXRColocationRequests.h" -#include -#include - -#include "OculusXRColocationSubsystem.generated.h" - -UCLASS() -class OCULUSXRCOLOCATION_API UOculusXRColocationSubsystem : public UGameInstanceSubsystem -{ - GENERATED_BODY() -public: - static UOculusXRColocationSubsystem* Get(); - - UOculusXRColocationSubsystem(); - - virtual void Initialize(FSubsystemCollectionBase& Collection) override; - virtual void Deinitialize() override; - - void AssignLocalColocationSessionData(const FOculusXRUUID& Uuid, const TArray& Data); - void ClearLocalColocationSession(); - bool HasLocalColocationSession() const; - const FOculusXRColocationSession& GetLocalSession() const; - - void SetDiscoveryRequest(TSharedPtr Request); - void ClearDiscoveryRequest(); - TSharedPtr GetDiscoveryRequest() const; - -private: - void OnColocationAdvertisementStart(FOculusXRUInt64 RequestId, FOculusXRUUID Uuid, EColocationResult Result); - void OnColocationAdvertisementStopped(FOculusXRUInt64 RequestId, EColocationResult Result); - - FDelegateHandle OnAdvertisementStartHandle; - FDelegateHandle OnAdvertisementStoppedHandle; - bool bHasLocalSession; - FOculusXRColocationSession LocalSession; - TSharedPtr DiscoverSessionsRequest; -}; diff --git a/Plugins/MetaXR/Source/OculusXRColocation/Public/OculusXRColocationTypes.h b/Plugins/MetaXR/Source/OculusXRColocation/Public/OculusXRColocationTypes.h deleted file mode 100644 index 367c075..0000000 --- a/Plugins/MetaXR/Source/OculusXRColocation/Public/OculusXRColocationTypes.h +++ /dev/null @@ -1,22 +0,0 @@ -// Copyright (c) Meta Platforms, Inc. and affiliates. - -#pragma once - -#include "OculusXRAnchorTypes.h" -#include "OculusXRColocationTypes.generated.h" - -UENUM(BlueprintType) -enum class EColocationResult : uint8 -{ - Success, - Success_AlreadyAdvertising, - Success_AlreadyDiscovering, - Failure, - FailureInvalidParameter, - FailureDataIsInvalid, - NetworkTimeout, - NetworkRequestFailed, - InsufficientPermissions, - CloudStorageDisabled, - NoDiscoveryMethodAvailable, -}; diff --git a/Plugins/MetaXR/Source/OculusXREditor/OculusXREditor.Build.cs b/Plugins/MetaXR/Source/OculusXREditor/OculusXREditor.Build.cs deleted file mode 100644 index c2e567e..0000000 --- a/Plugins/MetaXR/Source/OculusXREditor/OculusXREditor.Build.cs +++ /dev/null @@ -1,56 +0,0 @@ -// @lint-ignore-every LICENSELINT -// Copyright Epic Games, Inc. All Rights Reserved. - -using UnrealBuildTool; - -public class OculusXREditor : ModuleRules -{ - public OculusXREditor(ReadOnlyTargetRules Target) : base(Target) - { - bUseUnity = true; - - PrivateDependencyModuleNames.AddRange( - new string[] { - "Projects", - "InputCore", - "UnrealEd", - "LevelEditor", - "PropertyEditor", - "CoreUObject", - "Engine", - "EngineSettings", - "AndroidRuntimeSettings", - "Slate", - "SlateCore", - "EditorStyle", - "Core", - "OculusXRHMD", - "OculusXRMovement", - "OculusXRPassthrough", - "OVRPluginXR", - "OculusXRProjectSetupTool", - "HTTP", - "DesktopPlatform", - "LauncherServices", - "GameProjectGeneration", - "SharedSettingsWidgets", - "RHI", - "SourceControl", - } - ); - - PrivateIncludePaths.AddRange( - new string[] { - // Relative to Engine\Plugins\Runtime\Oculus\OculusVR\Source - "OculusXREditor/Private", - "OculusXRHMD/Private", - "OculusXRProjectSetupTool/Private" - }); - - PrivateIncludePathModuleNames.AddRange( - new string[] { - "Settings", - "OculusXRProjectSetupTool" - }); - } -} diff --git a/Plugins/MetaXR/Source/OculusXREditor/Private/OculusXRBuildAnalytics.cpp b/Plugins/MetaXR/Source/OculusXREditor/Private/OculusXRBuildAnalytics.cpp deleted file mode 100644 index 032de7e..0000000 --- a/Plugins/MetaXR/Source/OculusXREditor/Private/OculusXRBuildAnalytics.cpp +++ /dev/null @@ -1,328 +0,0 @@ -// @lint-ignore-every LICENSELINT -// Copyright Epic Games, Inc. All Rights Reserved. - -#include "OculusXRBuildAnalytics.h" -#include "GameProjectGenerationModule.h" -#include "OculusXRHMDModule.h" -#include "OculusXRHMDRuntimeSettings.h" -#include "OculusXRTelemetryPrivacySettings.h" -#include "Runtime/Core/Public/HAL/FileManager.h" - -FOculusBuildAnalytics* FOculusBuildAnalytics::instance = 0; - -FOculusBuildAnalytics* FOculusBuildAnalytics::GetInstance() -{ - if (IOculusXRHMDModule::IsAvailable()) - { - if (instance == nullptr) - { - instance = new FOculusBuildAnalytics(); - } - } - - return instance; -} - -bool FOculusBuildAnalytics::IsOculusXRHMDAvailable() -{ - return IOculusXRHMDModule::IsAvailable() && FOculusXRHMDModule::Get().PreInit(); -} - -void FOculusBuildAnalytics::Shutdown() -{ -} - -FOculusBuildAnalytics::FOculusBuildAnalytics() -{ - bool TelemetryEnabled = false; - if (const auto EditorPrivacySettings = GetDefault()) - { - TelemetryEnabled = EditorPrivacySettings->bIsEnabled; - } - - if (TelemetryEnabled) - { - RegisterLauncherCallback(); - } -} - -void FOculusBuildAnalytics::OnTelemetryToggled(bool Enabled) -{ - if (Enabled) - { - RegisterLauncherCallback(); - } - else - { - if (LauncherCallbackHandle.IsValid()) - { - ILauncherServicesModule& ProjectLauncherServicesModule = FModuleManager::LoadModuleChecked("LauncherServices"); - ProjectLauncherServicesModule.OnCreateLauncherDelegate.Remove(LauncherCallbackHandle); - } - } -} - -void FOculusBuildAnalytics::RegisterLauncherCallback() -{ - ILauncherServicesModule& ProjectLauncherServicesModule = FModuleManager::LoadModuleChecked("LauncherServices"); - LauncherCallbackHandle = ProjectLauncherServicesModule.OnCreateLauncherDelegate.AddRaw(this, &FOculusBuildAnalytics::OnLauncherCreated); -} - -void FOculusBuildAnalytics::OnLauncherCreated(ILauncherRef Launcher) -{ - // Add callback for when launcher worker is started - Launcher->FLauncherWorkerStartedDelegate.AddRaw(this, &FOculusBuildAnalytics::OnLauncherWorkerStarted); -} - -void FOculusBuildAnalytics::OnLauncherWorkerStarted(ILauncherWorkerPtr LauncherWorker, ILauncherProfileRef Profile) -{ - bool isUsingIterativeCotf = GetMutableDefault()->bIterativeCookOnTheFly; - FOculusXRHMDModule::GetPluginWrapper().SetDeveloperMode(true); - FOculusXRHMDModule::GetPluginWrapper().SendEvent2( - "build_start_is_iterative_cotf", isUsingIterativeCotf ? "1" : "0", "ovrbuild"); - - TArray Platforms = Profile.Get().GetCookedPlatforms(); - if (Platforms.Num() == 1) - { - if (Platforms[0].Equals("Android_ASTC") || Platforms[0].Contains("Windows")) - { - CurrentBuildStage = UNDEFINED_STAGE; - AndroidPackageTime = 0; - UATLaunched = false; - BuildCompleted = false; - CurrentBuildPlatform = Platforms[0]; - TotalBuildTime = 0; - BuildStepCount = 0; - OutputDirectory = Profile.Get().GetPackageDirectory(); - - // Assign callbacks for stages - LauncherWorker.Get()->OnStageCompleted().AddRaw(this, &FOculusBuildAnalytics::OnStageCompleted); - LauncherWorker.Get()->OnOutputReceived().AddRaw(this, &FOculusBuildAnalytics::OnBuildOutputReceived); - LauncherWorker.Get()->OnStageStarted().AddRaw(this, &FOculusBuildAnalytics::OnStageStarted); - LauncherWorker.Get()->OnCompleted().AddRaw(this, &FOculusBuildAnalytics::OnCompleted); - - // Get information on what oculus platform we are building for and also the OS platform - FString OculusPlatform; - if (CurrentBuildPlatform.Equals("Android_ASTC")) - { - UEnum* OculusMobileDevices = StaticEnum(); - UAndroidRuntimeSettings* Settings = GetMutableDefault(); - TArray> TargetOculusDevices = Settings->PackageForOculusMobile; - TArray Devices; - - if (TargetOculusDevices.Contains(EOculusMobileDevice::Quest2)) - { - Devices.Add("quest2"); - } - OculusPlatform = FString::Join(Devices, TEXT("_")); - } - else if (CurrentBuildPlatform.Contains("Windows")) - { - CurrentBuildPlatform = "Windows"; - OculusPlatform = "rift"; - } - - // Count user asset files - UserAssetCount = 0; - TArray FileNames; - IFileManager::Get().FindFilesRecursive(FileNames, *FPaths::ProjectContentDir(), TEXT("*.*"), true, false, false); - UserAssetCount = FileNames.Num(); - - // Count user script files - FGameProjectGenerationModule& GameProjectModule = FModuleManager::LoadModuleChecked(TEXT("GameProjectGeneration")); - SourceFileCount = 0; - SourceFileDirectorySize = 0; - GameProjectModule.Get().GetProjectSourceDirectoryInfo(SourceFileCount, SourceFileDirectorySize); - - // Generate build GUID - FGuid guid = FGuid::NewGuid(); - FOculusXRHMDModule::GetPluginWrapper().AddCustomMetadata("build_guid", TCHAR_TO_ANSI(*guid.ToString())); - - // Send build start event with corresponding metadata - FOculusXRHMDModule::GetPluginWrapper().AddCustomMetadata("asset_count", TCHAR_TO_ANSI(*FString::FromInt(UserAssetCount))); - FOculusXRHMDModule::GetPluginWrapper().AddCustomMetadata("script_count", TCHAR_TO_ANSI(*FString::FromInt(SourceFileCount))); - - FOculusXRHMDModule::GetPluginWrapper().AddCustomMetadata("target_platform", TCHAR_TO_ANSI(*CurrentBuildPlatform)); - FOculusXRHMDModule::GetPluginWrapper().AddCustomMetadata("target_oculus_platform", TCHAR_TO_ANSI(*OculusPlatform)); - - TArray TaskList; - LauncherWorker->GetTasks(TaskList); - BuildStepCount = TaskList.Num(); - } - } -} - -void FOculusBuildAnalytics::OnCompleted(bool Succeeded, double TotalTime, int32 ErrorCode) -{ - if (!BuildCompleted && Succeeded) - { - SendBuildCompleteEvent(TotalTime); - } -} - -void FOculusBuildAnalytics::OnStageCompleted(const FString& StageName, double Time) -{ - if (CurrentBuildStage != UNDEFINED_STAGE) - { - FString TaskName; - switch (CurrentBuildStage) - { - case COOK_IN_EDITOR_STAGE: - TaskName = "build_step_editor_cook"; - break; - case LAUNCH_UAT_STAGE: - TaskName = "build_step_launch_uat"; - break; - case COMPILE_STAGE: - TaskName = "build_step_compile"; - break; - case COOK_STAGE: - TaskName = "build_step_cook"; - break; - case DEPLOY_STAGE: - TaskName = "build_step_deploy"; - break; - case PACKAGE_STAGE: - TaskName = "build_step_package"; - break; - case RUN_STAGE: - return; - default: - TaskName = "build_step_undefined"; - break; - } - - if (AndroidPackageTime > 0) - { - Time -= AndroidPackageTime; - } - - TotalBuildTime += Time; - FOculusXRHMDModule::GetPluginWrapper().SendEvent2(TCHAR_TO_ANSI(*TaskName), TCHAR_TO_ANSI(*FString::SanitizeFloat(Time)), "ovrbuild"); - } -} - -void FOculusBuildAnalytics::OnStageStarted(const FString& StageName) -{ - if (StageName.Equals("Cooking in the editor")) - { - CurrentBuildStage = COOK_IN_EDITOR_STAGE; - } - else if (StageName.Equals("Build Task") && CurrentBuildStage == LAUNCH_UAT_STAGE) - { - CurrentBuildStage = COMPILE_STAGE; - } - else if (StageName.Equals("Build Task")) - { - CurrentBuildStage = LAUNCH_UAT_STAGE; - } - else if (StageName.Equals("Cook Task")) - { - CurrentBuildStage = COOK_STAGE; - } - else if (StageName.Equals("Package Task")) - { - CurrentBuildStage = PACKAGE_STAGE; - } - else if (StageName.Equals("Deploy Task")) - { - CurrentBuildStage = DEPLOY_STAGE; - } - else if (StageName.Equals("Run Task")) - { - CurrentBuildStage = RUN_STAGE; - SendBuildCompleteEvent(TotalBuildTime); - BuildCompleted = true; - } - else - { - CurrentBuildStage = UNDEFINED_STAGE; - } -} - -void FOculusBuildAnalytics::OnBuildOutputReceived(const FString& Message) -{ - if (CurrentBuildPlatform.Equals("Android_ASTC") && (CurrentBuildStage == DEPLOY_STAGE || CurrentBuildStage == PACKAGE_STAGE)) - { - if (Message.Contains("BUILD SUCCESSFUL")) - { - FString Text, Time; - Message.Split("in", &Text, &Time); - - if (!Time.IsEmpty()) - { - FString SMinutes, SSeconds; - if (Time.Contains("m")) - { - Time.Split("m", &SMinutes, &SSeconds); - } - else - { - SSeconds = Time; - } - - int Minutes = FCString::Atoi(*SMinutes); - int Seconds = FCString::Atoi(*SSeconds); - - AndroidPackageTime = Minutes * 60 + Seconds; - - FOculusXRHMDModule::GetPluginWrapper().SendEvent2("build_step_gradle_build", TCHAR_TO_ANSI(*FString::SanitizeFloat(AndroidPackageTime)), "ovrbuild"); - } - } - } -} - -void FOculusBuildAnalytics::SendBuildCompleteEvent(float TotalTime) -{ - if (CurrentBuildPlatform.Equals("Android_ASTC")) - { - int64 APKTotalSize = 0; - TArray FoundAPKs; - OutputDirectory = FPaths::ProjectDir() + "Binaries/Android"; - OutputDirectory = FPaths::ConvertRelativePathToFull(OutputDirectory); - IFileManager::Get().FindFiles(FoundAPKs, *FPaths::Combine(OutputDirectory, TEXT("*.apk")), true, false); - - FDateTime LatestTime = FDateTime(0); - FString LatestAPK; - for (int i = 0; i < FoundAPKs.Num(); i++) - { - FDateTime APKCreationTime = IFileManager::Get().GetTimeStamp(*FPaths::Combine(OutputDirectory, FoundAPKs[i])); - if (APKCreationTime > LatestTime) - { - LatestTime = APKCreationTime; - LatestAPK = FoundAPKs[i]; - } - } - - TArray FoundOBBs; - LatestTime = FDateTime(0); - FString LatestOBB; - IFileManager::Get().FindFiles(FoundOBBs, *FPaths::Combine(OutputDirectory, TEXT("*.obb")), true, false); - for (int i = 0; i < FoundOBBs.Num(); i++) - { - FDateTime OBBCreationTime = IFileManager::Get().GetTimeStamp(*FPaths::Combine(OutputDirectory, FoundOBBs[i])); - if (OBBCreationTime > LatestTime) - { - LatestTime = OBBCreationTime; - LatestOBB = FoundOBBs[i]; - } - } - - if (!LatestAPK.IsEmpty()) - { - APKTotalSize += IFileManager::Get().FileSize(*FPaths::Combine(OutputDirectory, LatestAPK)); - } - if (!LatestOBB.IsEmpty()) - { - APKTotalSize += IFileManager::Get().FileSize(*FPaths::Combine(OutputDirectory, LatestOBB)); - } - - if (APKTotalSize > 0) - { - FOculusXRHMDModule::GetPluginWrapper().AddCustomMetadata("build_output_size", TCHAR_TO_ANSI(*FString::FromInt(APKTotalSize))); - } - } - - FOculusXRHMDModule::GetPluginWrapper().AddCustomMetadata("build_step_count", TCHAR_TO_ANSI(*FString::FromInt(BuildStepCount))); - FOculusXRHMDModule::GetPluginWrapper().SendEvent2("build_complete", TCHAR_TO_ANSI(*FString::SanitizeFloat(TotalTime)), "ovrbuild"); -} diff --git a/Plugins/MetaXR/Source/OculusXREditor/Private/OculusXRBuildAnalytics.h b/Plugins/MetaXR/Source/OculusXREditor/Private/OculusXRBuildAnalytics.h deleted file mode 100644 index 06198c6..0000000 --- a/Plugins/MetaXR/Source/OculusXREditor/Private/OculusXRBuildAnalytics.h +++ /dev/null @@ -1,62 +0,0 @@ -// @lint-ignore-every LICENSELINT -// Copyright Epic Games, Inc. All Rights Reserved. - -#pragma once - -#include "ILauncherServicesModule.h" -#include "ILauncher.h" -#include "Modules/ModuleManager.h" -#include "UObject/Class.h" -#include "AndroidRuntimeSettings.h" -#include "OculusXRPluginWrapper.h" - -enum EBuildStage -{ - UNDEFINED_STAGE, - COOK_IN_EDITOR_STAGE, - COOK_STAGE, - LAUNCH_UAT_STAGE, - COMPILE_STAGE, - PACKAGE_STAGE, - DEPLOY_STAGE, - RUN_STAGE, -}; - -class FOculusBuildAnalytics -{ -public: - static FOculusBuildAnalytics* GetInstance(); - static void Shutdown(); - static bool IsOculusXRHMDAvailable(); - - void RegisterLauncherCallback(); - void OnTelemetryToggled(bool Enabled); - - void OnLauncherCreated(ILauncherRef Launcher); - void OnLauncherWorkerStarted(ILauncherWorkerPtr LauncherWorker, ILauncherProfileRef Profile); - void OnStageCompleted(const FString& StageName, double Time); - void OnStageStarted(const FString& StageName); - void OnBuildOutputReceived(const FString& Message); - void OnCompleted(bool Succeeded, double TotalTime, int32 ErrorCode); - void SendBuildCompleteEvent(float TotalTime); - -private: - FOculusBuildAnalytics(); - - static FOculusBuildAnalytics* instance; - - FDelegateHandle LauncherCallbackHandle; - - float TotalBuildTime; - float AndroidPackageTime; - bool BuildCompleted; - bool UATLaunched; - int UserAssetCount; - int BuildStepCount; - int32 SourceFileCount; - int64 SourceFileDirectorySize; - - EBuildStage CurrentBuildStage; - FString CurrentBuildPlatform; - FString OutputDirectory; -}; diff --git a/Plugins/MetaXR/Source/OculusXREditor/Private/OculusXREditorModule.cpp b/Plugins/MetaXR/Source/OculusXREditor/Private/OculusXREditorModule.cpp deleted file mode 100644 index 5ddc1db..0000000 --- a/Plugins/MetaXR/Source/OculusXREditor/Private/OculusXREditorModule.cpp +++ /dev/null @@ -1,624 +0,0 @@ -// Copyright (c) Meta Platforms, Inc. and affiliates. - -#include "OculusXREditorModule.h" - -#include "AssetToolsModule.h" -#include "OculusXRToolStyle.h" -#include "OculusXRToolCommands.h" -#include "OculusXRPlatformToolWidget.h" -#include "OculusXRAssetDirectory.h" -#include "OculusXRHMDRuntimeSettings.h" -#include "IOculusXRProjectSetupModule.h" -#include "OculusXRHMDTypes.h" -#include "LevelEditor.h" -#include "Modules/ModuleManager.h" -#include "Widgets/Docking/SDockTab.h" -#include "Widgets/Input/SButton.h" -#include "PropertyEditorModule.h" -#include "DetailLayoutBuilder.h" -#include "DetailCategoryBuilder.h" -#include "DetailWidgetRow.h" -#include "IDetailPropertyRow.h" -#include "GeneralProjectSettings.h" -#include "IAssetTools.h" -#include "Framework/MultiBox/MultiBoxBuilder.h" -#include "ISettingsModule.h" -#include "OculusXRPassthroughColorLutAsset.h" -#include "OculusXRHMDModule.h" -#include "OculusXRPrivacyNotification.h" -#include "OculusXRSettingsToggle.h" -#include "OculusXRTelemetryPrivacySettings.h" -#include "OculusXRTelemetry.h" -#include "OculusXRTelemetryEditorEvents.h" -#include "OculusXRBuildAnalytics.h" -#include "OculusXRPTLayerComponentDetailsCustomization.h" -#include "OculusXRPassthroughLayerComponent.h" -#include "SExternalImageReference.h" -#include "AndroidRuntimeSettings.h" -#include "SourceControlHelpers.h" -#include "Framework/Notifications/NotificationManager.h" -#include "Interfaces/IProjectManager.h" -#include "Widgets/Notifications/SNotificationList.h" -#include "Editor/EditorPerformanceSettings.h" -#include "HAL/FileManager.h" - -#define LOCTEXT_NAMESPACE "OculusXREditor" - -const FName FOculusXREditorModule::OculusPlatToolTabName = FName("OculusXRPlaformTool"); - -void FOculusXREditorModule::PostLoadCallback() -{ - FLevelEditorModule& LevelEditorModule = FModuleManager::LoadModuleChecked("LevelEditor"); -} - -void FOculusXREditorModule::StartupModule() -{ - bModuleValid = true; - RegisterSettings(); - - FPropertyEditorModule& PropertyModule = FModuleManager::LoadModuleChecked("PropertyEditor"); - PropertyModule.RegisterCustomClassLayout(UOculusXRPassthroughLayerComponent::StaticClass()->GetFName(), FOnGetDetailCustomizationInstance::CreateStatic(&FOculusXRPTLayerComponentDetailsCustomization::MakeInstance)); - - FOculusAssetDirectory::LoadForCook(); - - if (!IsRunningCommandlet()) - { - FOculusToolStyle::Initialize(); - FOculusToolStyle::ReloadTextures(); - - FOculusToolCommands::Register(); - - PluginCommands = MakeShareable(new FUICommandList); - - PluginCommands->MapAction( - FOculusToolCommands::Get().OpenProjectSetupTool, - FExecuteAction::CreateRaw(this, &FOculusXREditorModule::PluginOpenSetupToolWindow), - FCanExecuteAction()); - PluginCommands->MapAction( - FOculusToolCommands::Get().OpenPlatWindow, - FExecuteAction::CreateRaw(this, &FOculusXREditorModule::PluginOpenPlatWindow), - FCanExecuteAction()); - PluginCommands->MapAction( - FOculusToolCommands::Get().ToggleDeploySo, - FExecuteAction::CreateLambda([=]() { - UOculusXRHMDRuntimeSettings* settings = GetMutableDefault(); - settings->bDeploySoToDevice = !settings->bDeploySoToDevice; - settings->Modify(true); - settings->UpdateSinglePropertyInConfigFile(settings->GetClass()->FindPropertyByName(GET_MEMBER_NAME_CHECKED(UOculusXRHMDRuntimeSettings, bDeploySoToDevice)), settings->GetDefaultConfigFilename()); - }), - FCanExecuteAction(), - FIsActionChecked::CreateLambda([=]() { - return GetMutableDefault()->bDeploySoToDevice; - })); - PluginCommands->MapAction( - FOculusToolCommands::Get().ToggleIterativeCookOnTheFly, - FExecuteAction::CreateLambda([=]() { - UOculusXRHMDRuntimeSettings* settings = GetMutableDefault(); - settings->bIterativeCookOnTheFly = !settings->bIterativeCookOnTheFly; - settings->Modify(true); - settings->UpdateSinglePropertyInConfigFile(settings->GetClass()->FindPropertyByName(GET_MEMBER_NAME_CHECKED(UOculusXRHMDRuntimeSettings, bIterativeCookOnTheFly)), settings->GetDefaultConfigFilename()); - }), - - FCanExecuteAction(), - FIsActionChecked::CreateLambda([=]() { - return GetMutableDefault()->bIterativeCookOnTheFly; - })); - PluginCommands->MapAction( - FOculusToolCommands::Get().ToggleMetaXRSim, - FExecuteAction::CreateRaw(this, &FOculusXREditorModule::ToggleOpenXRRuntime), - FCanExecuteAction(), - FIsActionChecked::CreateLambda([=]() { - return FOculusXRHMDModule::IsSimulatorActivated(); - })); - - int32 numRooms = FOculusToolCommands::Get().RoomCommands.Num(); - for (int ii = 0; ii < numRooms; ++ii) - { - PluginCommands->MapAction( - FOculusToolCommands::Get().RoomCommands[ii], - FExecuteAction::CreateLambda([this, ii]() { - FOculusXREditorModule::LaunchRoom(ii); - })); - } - - PluginCommands->MapAction( - FOculusToolCommands::Get().StopServer, - FExecuteAction::CreateRaw(this, &FOculusXREditorModule::StopSESServer), - FCanExecuteAction()); - - FLevelEditorModule& LevelEditorModule = FModuleManager::LoadModuleChecked("LevelEditor"); - - // Adds an option to launch the tool to Window->Developer Tools. - TSharedPtr MenuExtender = MakeShareable(new FExtender()); - MenuExtender->AddMenuExtension("Miscellaneous", EExtensionHook::After, PluginCommands, FMenuExtensionDelegate::CreateRaw(this, &FOculusXREditorModule::AddMenuExtension)); - LevelEditorModule.GetMenuExtensibilityManager()->AddExtender(MenuExtender); - - // We add the Oculus menu on the toolbar - TSharedPtr ToolbarExtender = MakeShareable(new FExtender); - ToolbarExtender->AddToolBarExtension("Play", EExtensionHook::After, PluginCommands, FToolBarExtensionDelegate::CreateRaw(this, &FOculusXREditorModule::AddToolbarExtension)); - LevelEditorModule.GetToolBarExtensibilityManager()->AddExtender(ToolbarExtender); - - FGlobalTabmanager::Get()->RegisterNomadTabSpawner(OculusPlatToolTabName, FOnSpawnTab::CreateRaw(this, &FOculusXREditorModule::OnSpawnPlatToolTab)).SetDisplayName(LOCTEXT("FOculusPlatfToolTabTitle", "Meta XR Platform Tool")).SetMenuType(ETabSpawnerMenuType::Hidden); - - // Register asset types - IAssetTools& AssetTools = FModuleManager::LoadModuleChecked("AssetTools").Get(); - AssetTools.RegisterAssetTypeActions(MakeShareable(new FAssetTypeActions_OculusXRPassthroughColorLut)); - - OculusXRTelemetry::PropagateTelemetryConsent(); - - // If needed, open a notification here. - OculusXRTelemetry::MaybeSpawnTelemetryConsent(); - - FOculusBuildAnalytics::GetInstance(); - - const OculusXRTelemetry::TScopedMarker StartEvent; - bool bProjectCreatedFromMRTemplate = false; - FProjectStatus ProjectStatus; - if (IProjectManager::Get().QueryStatusForCurrentProject(ProjectStatus)) - { - bProjectCreatedFromMRTemplate = ProjectStatus.Category == "MetaMRTemplate"; - } - const auto& Annotated = StartEvent.AddAnnotation("created_from_mr_template", bProjectCreatedFromMRTemplate ? "true" : "false"); - - // OVRPlugin may not be initialized, we need to check if it is initialized before sending the event. - if (FOculusXRHMDModule::GetPluginWrapper().IsInitialized()) - { - FOculusXRHMDModule::GetPluginWrapper().SendEvent2("editor_start", bProjectCreatedFromMRTemplate ? "created_from_mr_template" : "", "integration"); - } - - UEditorPerformanceSettings* EditorPerformanceSettings = GetMutableDefault(); - if (EditorPerformanceSettings->bOverrideMaxViewportRenderingResolution) - { - UE_LOG(LogTemp, Warning, TEXT("Existing value for UEditorPerformanceSettings::MaxViewportRenderingResolution will be overriden.")); - } - - UE_LOG(LogTemp, Log, TEXT("MetaXR ignores max viewport resolution in editor to support full HMD resolutions.")); - EditorPerformanceSettings->bOverrideMaxViewportRenderingResolution = true; - EditorPerformanceSettings->MaxViewportRenderingResolution = 0; - - FPropertyChangedEvent DisabledMaxResolutionEvent(EditorPerformanceSettings->GetClass()->FindPropertyByName(GET_MEMBER_NAME_CHECKED(UEditorPerformanceSettings, MaxViewportRenderingResolution)), EPropertyChangeType::ValueSet); - EditorPerformanceSettings->PostEditChangeProperty(DisabledMaxResolutionEvent); - } -} - -void FOculusXREditorModule::ShutdownModule() -{ - if (!bModuleValid) - { - return; - } - - if (!IsRunningCommandlet()) - { - FOculusToolStyle::Shutdown(); - FOculusToolCommands::Unregister(); - FGlobalTabmanager::Get()->UnregisterNomadTabSpawner(OculusPlatToolTabName); - FOculusBuildAnalytics::Shutdown(); - } - - FOculusAssetDirectory::ReleaseAll(); - if (UObjectInitialized()) - { - UnregisterSettings(); - } -} - -TSharedRef FOculusXREditorModule::OnSpawnPlatToolTab(const FSpawnTabArgs& SpawnTabArgs) -{ - /* clang-format off */ - auto myTab = SNew(SDockTab) - .TabRole(ETabRole::NomadTab) - [ - SNew(SOculusPlatformToolWidget) - ]; - /* clang-format on */ - - return myTab; -} - -void FOculusXREditorModule::RegisterSettings() -{ - if (ISettingsModule* SettingsModule = FModuleManager::GetModulePtr("Settings")) - { - SettingsModule->RegisterSettings("Project", "Plugins", "OculusXR", - LOCTEXT("RuntimeSettingsName", "Meta XR"), - LOCTEXT("RuntimeSettingsDescription", "Configure the Meta XR plugin"), - GetMutableDefault()); - - FPropertyEditorModule& PropertyModule = FModuleManager::GetModuleChecked("PropertyEditor"); - PropertyModule.RegisterCustomClassLayout(UOculusXRHMDRuntimeSettings::StaticClass()->GetFName(), FOnGetDetailCustomizationInstance::CreateStatic(&FOculusXRHMDSettingsDetailsCustomization::MakeInstance)); - - SettingsModule->RegisterSettings("Editor", "Privacy", "OculusXR", - LOCTEXT("PrivacyTelemetrySettingsName", "MetaXR Usage Data"), - LOCTEXT("PrivacyTelemetrySettingsDescription", "Configure the way MetaXR usage information is handled."), - GetMutableDefault()); - PropertyModule.RegisterCustomClassLayout(UOculusXRTelemetryPrivacySettings::StaticClass()->GetFName(), FOnGetDetailCustomizationInstance::CreateStatic(&FOculusXRSettingsToggle::MakeInstance)); - } -} - -void FOculusXREditorModule::UnregisterSettings() -{ - if (ISettingsModule* SettingsModule = FModuleManager::GetModulePtr("Settings")) - { - SettingsModule->UnregisterSettings("Project", "Plugins", "OculusXR"); - SettingsModule->UnregisterSettings("Editor", "Privacy", "OculusXR"); - } -} - -FReply FOculusXREditorModule::PluginClickFn(bool text) -{ - PluginOpenSetupToolWindow(); - return FReply::Handled(); -} - -void FOculusXREditorModule::PluginOpenSetupToolWindow() -{ - IOculusXRProjectSetupToolModule::Get().ShowProjectSetupTool("Meta Menu"); -} - -void FOculusXREditorModule::PluginOpenPlatWindow() -{ - FGlobalTabmanager::Get()->TryInvokeTab(OculusPlatToolTabName); -} - -void FOculusXREditorModule::ToggleOpenXRRuntime() -{ - FOculusXRHMDModule::ToggleOpenXRRuntime(); -} - -void FOculusXREditorModule::LaunchRoom(int32 index) -{ - FOculusXRHMDModule::LaunchEnvironment(index); -} - -void FOculusXREditorModule::StopSESServer() -{ - FOculusXRHMDModule::StopServer(); -} - -void FOculusXREditorModule::AddMenuExtension(FMenuBuilder& Builder) -{ - bool v = false; - GConfig->GetBool(TEXT("/Script/OculusXREditor.OculusXREditorSettings"), TEXT("bAddMenuOption"), v, GEditorIni); - if (v) - { - Builder.AddMenuEntry(FOculusToolCommands::Get().OpenProjectSetupTool); - } -} - -void FOculusXREditorModule::AddToolbarExtension(FToolBarBuilder& Builder) -{ - Builder.SetLabelVisibility(EVisibility::All); - Builder.AddComboButton( - FUIAction(), - FOnGetContent::CreateRaw(this, &FOculusXREditorModule::CreateToolbarEntryMenu, PluginCommands), - LOCTEXT("OculusToolsToolBarCombo", "Meta XR Tools"), - LOCTEXT("OculusToolsToolBarComboTooltip", "Meta XR tools"), - TAttribute::CreateLambda([]() { - return FSlateIcon(FOculusToolStyle::GetStyleSetName(), "OculusTool.MenuButton"); - }), - false); - - Builder.AddComboButton( - FUIAction(), - FOnGetContent::CreateRaw(this, &FOculusXREditorModule::CreateXrSimToolbarEntryMenu, PluginCommands), - LOCTEXT("MetaXRSimulatorCombo", "Meta XR Simulator"), - LOCTEXT("MetaXRSimulatorComboTooltip", "Meta XR Simulator"), - TAttribute::CreateLambda([]() { - return FSlateIcon(FOculusToolStyle::GetStyleSetName(), "OculusTool.MenuButton"); - }), - false); -} - -// Add the entries to the OculusXR Tools toolbar menu button -TSharedRef FOculusXREditorModule::CreateToolbarEntryMenu(TSharedPtr Commands) -{ - FMenuBuilder MenuBuilder(true, Commands); - MenuBuilder.BeginSection("OculusXRBuilds", LOCTEXT("OculusXRBuilds", "Builds")); - MenuBuilder.AddMenuEntry(FOculusToolCommands::Get().ToggleDeploySo); - MenuBuilder.AddMenuEntry(FOculusToolCommands::Get().ToggleIterativeCookOnTheFly); - MenuBuilder.EndSection(); - - MenuBuilder.BeginSection("OculusXRTools", LOCTEXT("OculusXRTools", "Tools")); - MenuBuilder.AddMenuEntry(FOculusToolCommands::Get().OpenProjectSetupTool); - MenuBuilder.AddMenuEntry(FOculusToolCommands::Get().OpenPlatWindow); - MenuBuilder.EndSection(); - - return MenuBuilder.MakeWidget(); -} - -TSharedRef FOculusXREditorModule::CreateXrSimToolbarEntryMenu(TSharedPtr Commands) -{ - FMenuBuilder MenuBuilder(true, Commands); - - MenuBuilder.BeginSection("MetaXRSimulator", LOCTEXT("MetaXRSimulator", "Toggle")); - MenuBuilder.AddMenuEntry(FOculusToolCommands::Get().ToggleMetaXRSim); - MenuBuilder.EndSection(); - - MenuBuilder.BeginSection("SES", LOCTEXT("SES", "SES")); - MenuBuilder.AddSubMenu( - LOCTEXT("Synthetic Environment Server", "Synthetic Environment Server"), - LOCTEXT("Synthetic Environment Server", "Synthetic Environment Server"), - FNewMenuDelegate::CreateRaw(this, &FOculusXREditorModule::CreateSESSubMenus)); - MenuBuilder.EndSection(); - - return MenuBuilder.MakeWidget(); -} - -void FOculusXREditorModule::CreateSESSubMenus(FMenuBuilder& MenuBuilder) -{ - MenuBuilder.BeginSection("Synthetic Environment Server", LOCTEXT("Synthetic Environment Server", "Synthetic Environment Server")); - for (auto room : FOculusToolCommands::Get().RoomCommands) - { - MenuBuilder.AddMenuEntry(room); - } - MenuBuilder.AddMenuEntry(FOculusToolCommands::Get().StopServer); - MenuBuilder.EndSection(); -} - -FOculusXRHMDSettingsDetailsCustomization::FOculusXRHMDSettingsDetailsCustomization() - : LaunchImageLandscape(FPlatformIconInfo(TEXT("res/drawable/splashscreen_landscape.png"), LOCTEXT("SystemSplashImage", "System Splash Image"), FText::GetEmpty(), 640, 360, FPlatformIconInfo::Required)) - , EngineAndroidPath(FPaths::EngineDir() + TEXT("Build/Android/Java")) - , GameAndroidPath(FPaths::ProjectDir() + TEXT("Build/Android")) - , VRSplashPath(FPaths::ProjectDir() + TEXT("Build/Android/assets/vr_splash.png")) - -{ -} - -TSharedRef FOculusXRHMDSettingsDetailsCustomization::MakeInstance() -{ - return MakeShareable(new FOculusXRHMDSettingsDetailsCustomization); -} - -FReply FOculusXRHMDSettingsDetailsCustomization::PluginClickPerfFn(bool text) -{ - IOculusXRProjectSetupToolModule::Get().ShowProjectSetupTool("Settings"); - return FReply::Handled(); -} - -FReply FOculusXRHMDSettingsDetailsCustomization::PluginClickPlatFn(bool text) -{ - FGlobalTabmanager::Get()->TryInvokeTab(FOculusXREditorModule::OculusPlatToolTabName); - return FReply::Handled(); -} - -FReply FOculusXRHMDSettingsDetailsCustomization::DisableEngineSplash(bool text) -{ - UOculusXRHMDRuntimeSettings* Settings = GetMutableDefault(); - Settings->bAutoEnabled = false; - Settings->SplashDescs.Empty(); - Settings->TryUpdateDefaultConfigFile(); - return FReply::Handled(); -} - -FReply FOculusXRHMDSettingsDetailsCustomization::AddSplashImage(bool text) -{ - const FString AutomaticImagePath = EngineAndroidPath / LaunchImageLandscape.IconPath; - FText FailReason; - if (!SourceControlHelpers::CopyFileUnderSourceControl(VRSplashPath, AutomaticImagePath, LOCTEXT("ImageDescription", "image"), FailReason)) - { - FNotificationInfo Info(FailReason); - Info.ExpireDuration = 3.0f; - FSlateNotificationManager::Get().AddNotification(Info); - return FReply::Unhandled(); - } - - return FReply::Handled(); -} - -void FOculusXRHMDSettingsDetailsCustomization::CustomizeDetails(IDetailLayoutBuilder& DetailLayout) -{ - static const FName WarningColorStyle("Colors.AccentYellow"); - SavedLayoutBuilder = &DetailLayout; - - // Labeled "General OculusXR" instead of "General" to enable searchability. The button "Launch Oculus Utilities Window" doesn't show up if you search for "Oculus" - IDetailCategoryBuilder& CategoryBuilder = DetailLayout.EditCategory("General Meta XR", FText::GetEmpty(), ECategoryPriority::Important); - /* clang-format off */ - CategoryBuilder.AddCustomRow(LOCTEXT("General", "General")) - .WholeRowContent() - [ - SNew(SVerticalBox) - + SVerticalBox::Slot().AutoHeight().Padding(2) - [ - SNew(SHorizontalBox) - + SHorizontalBox::Slot().AutoWidth() - [ - SNew(SButton) - .Text(LOCTEXT("LaunchTool", "Launch Meta XR Project Setup Tool")) - .OnClicked(this, &FOculusXRHMDSettingsDetailsCustomization::PluginClickPerfFn, true) - ] - + SHorizontalBox::Slot().FillWidth(8) - ] - + SVerticalBox::Slot().AutoHeight().Padding(2) - [ - SNew(SHorizontalBox) - + SHorizontalBox::Slot().AutoWidth() - [ - SNew(SButton) - .Text(LOCTEXT("LaunchPlatTool", "Launch Meta XR Platform Window")) - .OnClicked(this, &FOculusXRHMDSettingsDetailsCustomization::PluginClickPlatFn, true) - ] - + SHorizontalBox::Slot().FillWidth(8) - ] - ]; - - IDetailCategoryBuilder& CTXPTCategoryBuilder = DetailLayout.EditCategory("System SplashScreen", FText::GetEmpty(), ECategoryPriority::Important); - - CTXPTCategoryBuilder.AddCustomRow(LOCTEXT("CTXPTWarning", "Contextual Passthrough Warning")) - .Visibility(TAttribute(this, &FOculusXRHMDSettingsDetailsCustomization::GetContextualPassthroughWarningVisibility)) - [ - SNew(SVerticalBox) - + SVerticalBox::Slot().FillHeight(1.f) - [ - SNew(SHorizontalBox) - + SHorizontalBox::Slot().FillWidth(1.f).VAlign(EVerticalAlignment::VAlign_Center) - [ - SNew(STextBlock) - .Font(IDetailLayoutBuilder::GetDetailFont()) - .AutoWrapText(true) - .Justification(ETextJustify::Center) - .Text(LOCTEXT("CTXPT_EngineSplashWarning", "Engine Splash Screen is enabled, this will result in an inconsistent experience.")) - .ColorAndOpacity(FAppStyle::Get().GetSlateColor(WarningColorStyle)) - ] - + SHorizontalBox::Slot().FillWidth(1.f).HAlign(EHorizontalAlignment::HAlign_Left) - [ - SNew(SButton) - .VAlign(EVerticalAlignment::VAlign_Center) - .Text(LOCTEXT("DisableEngineSplashScreen", "Disable Engine Splash Screen")) - .OnClicked(this, &FOculusXRHMDSettingsDetailsCustomization::DisableEngineSplash, true) - ] - ] - ]; - - - // Duplicate "Show Launch Image" and "Launch Landscape" properties from Android Settings - - CTXPTCategoryBuilder.AddCustomRow(LOCTEXT("ShowSystemSplashImageRow", "Show System Splash Image Row")) - .NameContent() - [ - SNew(SHorizontalBox) - + SHorizontalBox::Slot() - .Padding(FMargin(0, 1, 0, 1)) - .FillWidth(1.0f) - [ - SNew(STextBlock) - .Text(LOCTEXT("ShowSystemSplashImage", "Show System Splash Image")) - .Font(DetailLayout.GetDetailFont()) - .ToolTipText(LOCTEXT("ShowSystemSplashImageToolTip", "Same as \"Show Launch Image\" setting in the \"Platform > Android > Launch Images\" section. If set, the image will be presented by the Operating System at launch time")) - ] - ] - .ValueContent() - .MaxDesiredWidth(400.0f) - .MinDesiredWidth(100.0f) - [ - SNew(SHorizontalBox) - + SHorizontalBox::Slot() - .FillWidth(1.0f) - .VAlign(VAlign_Center) - [ - SNew(SCheckBox) - .IsChecked(TAttribute(this, &FOculusXRHMDSettingsDetailsCustomization::GetShowLaunchImageCheckBoxState)) - .OnCheckStateChanged(this, &FOculusXRHMDSettingsDetailsCustomization::OnShowLaunchImageCheckStateChanged) - ] - ]; - - - const FString AutomaticImagePath = EngineAndroidPath / LaunchImageLandscape.IconPath; - const FString TargetImagePath = GameAndroidPath / LaunchImageLandscape.IconPath; - const FVector2D LaunchImageMaxSize(150.0f, 150.0f); - - CTXPTCategoryBuilder.AddCustomRow(LaunchImageLandscape.IconName) - .IsEnabled(TAttribute(this, &FOculusXRHMDSettingsDetailsCustomization::IsLaunchImageEnabled)) - .NameContent() - [ - SNew(SHorizontalBox) - + SHorizontalBox::Slot() - .Padding(FMargin(0, 1, 0, 1)) - .FillWidth(1.0f) - [ - SNew(STextBlock) - .Text(LaunchImageLandscape.IconName) - .Font(DetailLayout.GetDetailFont()) - .ToolTipText(LOCTEXT("SystemSplashImageToolTip", "Same as \"Launch Landscape\" setting in the \"Platform > Android > Launch Images\" section. This is the image that will be presented by the Operating System at launch time")) - ] - ] - .ValueContent() - .MaxDesiredWidth(400.0f) - .MinDesiredWidth(100.0f) - [ - SNew(SHorizontalBox) - + SHorizontalBox::Slot() - .FillWidth(1.0f) - .VAlign(VAlign_Center) - [ - SNew(SExternalImageReference, AutomaticImagePath, TargetImagePath) - .FileDescription(LaunchImageLandscape.IconDescription) - .MaxDisplaySize(LaunchImageMaxSize) - .OnPostExternalImageCopy(FOnPostExternalImageCopy::CreateSP(this, &FOculusXRHMDSettingsDetailsCustomization::OnLaunchImageChanged)) - ] - ]; - - CTXPTCategoryBuilder.AddCustomRow(LOCTEXT("SystemSplashImageWarning", "System Splash Image warning")) - .Visibility(TAttribute(this, &FOculusXRHMDSettingsDetailsCustomization::GetSystemSplashImageWarningVisibility)) - [ - SNew(SVerticalBox) - + SVerticalBox::Slot().FillHeight(1.f) - [ - SNew(SHorizontalBox) - + SHorizontalBox::Slot().FillWidth(1.f).VAlign(EVerticalAlignment::VAlign_Center) - [ - SNew(STextBlock) - .Font(IDetailLayoutBuilder::GetDetailFont()) - .AutoWrapText(true) - .Justification(ETextJustify::Center) - .Text(LOCTEXT("SystemSplashWarningText", "Splash Image is currently missing from project. Click button to add it.")) - .ColorAndOpacity(FAppStyle::Get().GetSlateColor(WarningColorStyle)) - ] - + SHorizontalBox::Slot().FillWidth(1.f).HAlign(EHorizontalAlignment::HAlign_Left) - [ - SNew(SButton) - .VAlign(EVerticalAlignment::VAlign_Center) - .Text(LOCTEXT("DisableEngineSplashScreen", "Add Splash Image file to project")) - .OnClicked(this, &FOculusXRHMDSettingsDetailsCustomization::AddSplashImage, true) - ] - ] - ]; - /* clang-format on */ -} - -EVisibility FOculusXRHMDSettingsDetailsCustomization::GetContextualPassthroughWarningVisibility() const -{ - UOculusXRHMDRuntimeSettings* OculusSettings = GetMutableDefault(); - return OculusSettings->SystemSplashBackground == ESystemSplashBackgroundType::Contextual && (OculusSettings->bAutoEnabled || !OculusSettings->SplashDescs.IsEmpty()) ? EVisibility::Visible : EVisibility::Collapsed; -} - -ECheckBoxState FOculusXRHMDSettingsDetailsCustomization::GetShowLaunchImageCheckBoxState() const -{ - UAndroidRuntimeSettings* AndroidSettings = GetMutableDefault(); - return AndroidSettings->bShowLaunchImage ? ECheckBoxState::Checked : ECheckBoxState::Unchecked; -} - -bool FOculusXRHMDSettingsDetailsCustomization::IsLaunchImageEnabled() const -{ - UAndroidRuntimeSettings* AndroidSettings = GetMutableDefault(); - return AndroidSettings->bShowLaunchImage; -} - -void FOculusXRHMDSettingsDetailsCustomization::OnShowLaunchImageCheckStateChanged(const ECheckBoxState NewState) -{ - UAndroidRuntimeSettings* AndroidSettings = GetMutableDefault(); - AndroidSettings->bShowLaunchImage = NewState == ECheckBoxState::Checked; - AndroidSettings->TryUpdateDefaultConfigFile(); -} - -bool FOculusXRHMDSettingsDetailsCustomization::OnLaunchImageChanged(const FString& InChosenImage) -{ - // This will refresh the launch image located in android settings as well - SavedLayoutBuilder->ForceRefreshDetails(); - - FText FailReason; - if (!SourceControlHelpers::CopyFileUnderSourceControl(VRSplashPath, InChosenImage, LOCTEXT("ImageDescription", "image"), FailReason)) - { - FNotificationInfo Info(FailReason); - Info.ExpireDuration = 3.0f; - FSlateNotificationManager::Get().AddNotification(Info); - return false; - } - - return true; -} - -EVisibility FOculusXRHMDSettingsDetailsCustomization::GetSystemSplashImageWarningVisibility() const -{ - IFileManager& FileManager = IFileManager::Get(); - - return !FileManager.FileExists(*VRSplashPath) ? EVisibility::Visible : EVisibility::Collapsed; -} - -////////////////////////////////////////////////////////////////////////// - -IMPLEMENT_MODULE(FOculusXREditorModule, OculusXREditor); - -////////////////////////////////////////////////////////////////////////// - -#undef LOCTEXT_NAMESPACE diff --git a/Plugins/MetaXR/Source/OculusXREditor/Private/OculusXREditorModule.h b/Plugins/MetaXR/Source/OculusXREditor/Private/OculusXREditorModule.h deleted file mode 100644 index 50de178..0000000 --- a/Plugins/MetaXR/Source/OculusXREditor/Private/OculusXREditorModule.h +++ /dev/null @@ -1,98 +0,0 @@ -// Copyright (c) Meta Platforms, Inc. and affiliates. - -#pragma once - -#include "CoreMinimal.h" -#include "IOculusXREditorModule.h" -#include "Modules/ModuleInterface.h" -#include "IDetailCustomization.h" -#include "PlatformIconInfo.h" -#include "Input/Reply.h" -#include "Layout/Visibility.h" - -class FToolBarBuilder; -class FMenuBuilder; - -#define OCULUS_EDITOR_MODULE_NAME "OculusXREditor" - -enum class ECheckBoxState : uint8; - -class FOculusXREditorModule : public IOculusXREditorModule -{ -public: - FOculusXREditorModule() - : bModuleValid(false){}; - - /** IModuleInterface implementation */ - virtual void StartupModule() override; - virtual void ShutdownModule() override; - virtual void PostLoadCallback() override; - - void RegisterSettings(); - void UnregisterSettings(); - - void PluginOpenSetupToolWindow(); - FReply PluginClickFn(bool text); - - void PluginOpenPlatWindow(); - - void ToggleOpenXRRuntime(); - - void CreateSESSubMenus(FMenuBuilder& MenuBuilder); - void StopSESServer(); - - void LaunchRoom(int32 roomIndex); - -public: - static const FName OculusPlatToolTabName; - -private: - void AddToolbarExtension(FToolBarBuilder& Builder); - TSharedRef CreateToolbarEntryMenu(TSharedPtr Commands); - TSharedRef CreateXrSimToolbarEntryMenu(TSharedPtr Commands); - void AddMenuExtension(FMenuBuilder& Builder); - - TSharedRef OnSpawnPlatToolTab(const class FSpawnTabArgs& SpawnTabArgs); - -private: - TSharedPtr PluginCommands; - bool bModuleValid; -}; - -class IDetailLayoutBuilder; - -class FOculusXRHMDSettingsDetailsCustomization : public IDetailCustomization -{ -private: - FOculusXRHMDSettingsDetailsCustomization(); - - FPlatformIconInfo LaunchImageLandscape; - - const FString EngineAndroidPath; - const FString GameAndroidPath; - const FString VRSplashPath; - - IDetailLayoutBuilder* SavedLayoutBuilder; - -public: - /** Makes a new instance of this detail layout class for a specific detail view requesting it */ - static TSharedRef MakeInstance(); - - // IDetailCustomization interface - virtual void CustomizeDetails(IDetailLayoutBuilder& DetailLayout) override; - // End of IDetailCustomization interface - - EVisibility GetContextualPassthroughWarningVisibility() const; - ECheckBoxState GetShowLaunchImageCheckBoxState() const; - bool IsLaunchImageEnabled() const; - - void OnShowLaunchImageCheckStateChanged(const ECheckBoxState NewState); - bool OnLaunchImageChanged(const FString& InChosenImage); - - EVisibility GetSystemSplashImageWarningVisibility() const; - - FReply PluginClickPerfFn(bool text); - FReply PluginClickPlatFn(bool text); - FReply DisableEngineSplash(bool text); - FReply AddSplashImage(bool text); -}; diff --git a/Plugins/MetaXR/Source/OculusXREditor/Private/OculusXREditorSettings.cpp b/Plugins/MetaXR/Source/OculusXREditor/Private/OculusXREditorSettings.cpp deleted file mode 100644 index 52746a4..0000000 --- a/Plugins/MetaXR/Source/OculusXREditor/Private/OculusXREditorSettings.cpp +++ /dev/null @@ -1,9 +0,0 @@ -// @lint-ignore-every LICENSELINT -// Copyright Epic Games, Inc. All Rights Reserved. - -#include "OculusXREditorSettings.h" - -UOculusXREditorSettings::UOculusXREditorSettings() - : PerfToolTargetPlatform(EOculusXRPlatform::PC) -{ -} diff --git a/Plugins/MetaXR/Source/OculusXREditor/Private/OculusXRMovementAssetsFactories.cpp b/Plugins/MetaXR/Source/OculusXREditor/Private/OculusXRMovementAssetsFactories.cpp deleted file mode 100644 index b4ef222..0000000 --- a/Plugins/MetaXR/Source/OculusXREditor/Private/OculusXRMovementAssetsFactories.cpp +++ /dev/null @@ -1,380 +0,0 @@ -// Copyright (c) Meta Platforms, Inc. and affiliates. - -#include "OculusXRMovementAssetsFactories.h" - -#include "AssetToolsModule.h" -#include "IAssetTools.h" -#include "Kismet2/KismetEditorUtilities.h" - -#include "OculusXRLiveLinkRetargetFaceAsset.h" -#include "OculusXRLiveLinkRetargetFaceVisemesAsset.h" -#include "OculusXRLiveLinkRetargetBodyAsset.h" - -#define LOCTEXT_NAMESPACE "OculusXRMovementAssetsFactories" - -UOculusXRMetahumanRetargetAssetFactory::UOculusXRMetahumanRetargetAssetFactory(const FObjectInitializer& ObjectInitializer) - : Super(ObjectInitializer) -{ - SupportedClass = UBlueprint::StaticClass(); - - bCreateNew = true; - bEditAfterNew = true; -} - -bool UOculusXRMetahumanRetargetAssetFactory::ConfigureProperties() -{ - return true; -} - -uint32 UOculusXRMetahumanRetargetAssetFactory::GetMenuCategories() const -{ - IAssetTools& AssetTools = FModuleManager::LoadModuleChecked("AssetTools").Get(); - return AssetTools.RegisterAdvancedAssetCategory("LiveLink", LOCTEXT("AssetCategoryName", "Live Link")); -} - -UObject* UOculusXRMetahumanRetargetAssetFactory::FactoryCreateNew(UClass* Class, UObject* InParent, FName Name, EObjectFlags Flags, UObject* Context, FFeedbackContext* Warn, FName CallingContext) -{ - UBlueprint* RetargetBlueprint = FKismetEditorUtilities::CreateBlueprint(ParentClass, InParent, Name, BlueprintType, UBlueprint::StaticClass(), UBlueprintGeneratedClass::StaticClass(), CallingContext); - - if (const TSubclassOf GeneratedClass = RetargetBlueprint->GeneratedClass) - { - SetDefaults(GeneratedClass); - } - - return RetargetBlueprint; -} - -UOculusXRMetahumanFaceRetargetAssetFactory::UOculusXRMetahumanFaceRetargetAssetFactory(const FObjectInitializer& ObjectInitializer) - : Super(ObjectInitializer) -{ - ParentClass = UOculusXRLiveLinkRetargetFaceAsset::StaticClass(); -} - -FText UOculusXRMetahumanFaceRetargetAssetFactory::GetDisplayName() const -{ - return LOCTEXT("DisplayNameMetahumanFace", "Face retarget asset for OculusXRMovement and Metahuman"); -} - -void UOculusXRMetahumanFaceRetargetAssetFactory::SetDefaults(const TSubclassOf GeneratedClass) const -{ - if (UOculusXRLiveLinkRetargetFaceAsset* Retargeting = GeneratedClass->GetDefaultObject()) - { - Retargeting->CurveRemapping.Emplace(EOculusXRFaceExpression::BrowLowererL, { "CTRL_expressions_BrowDownL", "CTRL_expressions_BrowLateralL" }); - Retargeting->CurveRemapping.Emplace(EOculusXRFaceExpression::BrowLowererR, { "CTRL_expressions_BrowDownR", "CTRL_expressions_BrowLateralR" }); - Retargeting->CurveRemapping.Emplace(EOculusXRFaceExpression::CheekPuffL, { "CTRL_expressions_mouthCheekBlowL" }); - Retargeting->CurveRemapping.Emplace(EOculusXRFaceExpression::CheekPuffR, { "CTRL_expressions_mouthCheekBlowR" }); - Retargeting->CurveRemapping.Emplace(EOculusXRFaceExpression::CheekRaiserL, { "CTRL_expressions_eyeCheekRaiseL" }); - Retargeting->CurveRemapping.Emplace(EOculusXRFaceExpression::CheekRaiserR, { "CTRL_expressions_eyeCheekRaiseR" }); - Retargeting->CurveRemapping.Emplace(EOculusXRFaceExpression::CheekSuckL, { "CTRL_expressions_mouthCheekSuckL" }); - Retargeting->CurveRemapping.Emplace(EOculusXRFaceExpression::CheekSuckR, { "CTRL_expressions_mouthCheekSuckR" }); - Retargeting->CurveRemapping.Emplace(EOculusXRFaceExpression::ChinRaiserB, { "CTRL_expressions_jawChinRaiseDL", "CTRL_expressions_jawChinRaiseDR" }); - Retargeting->CurveRemapping.Emplace(EOculusXRFaceExpression::ChinRaiserT, { "CTRL_expressions_jawChinRaiseUL", "CTRL_expressions_jawChinRaiseUR" }); - Retargeting->CurveRemapping.Emplace(EOculusXRFaceExpression::DimplerL, { "CTRL_expressions_mouthDimpleL" }); - Retargeting->CurveRemapping.Emplace(EOculusXRFaceExpression::DimplerR, { "CTRL_expressions_mouthDimpleR" }); - Retargeting->CurveRemapping.Emplace(EOculusXRFaceExpression::EyesClosedL, { "CTRL_expressions_eyeBlinkL" }); - Retargeting->CurveRemapping.Emplace(EOculusXRFaceExpression::EyesClosedR, { "CTRL_expressions_eyeBlinkR" }); - Retargeting->CurveRemapping.Emplace(EOculusXRFaceExpression::EyesLookDownL, { "CTRL_expressions_eyeLookDownL" }); - Retargeting->CurveRemapping.Emplace(EOculusXRFaceExpression::EyesLookDownR, { "CTRL_expressions_eyeLookDownR" }); - Retargeting->CurveRemapping.Emplace(EOculusXRFaceExpression::EyesLookLeftL, { "CTRL_expressions_eyeLookLeftL" }); - Retargeting->CurveRemapping.Emplace(EOculusXRFaceExpression::EyesLookLeftR, { "CTRL_expressions_eyeLookLeftR" }); - Retargeting->CurveRemapping.Emplace(EOculusXRFaceExpression::EyesLookRightL, { "CTRL_expressions_eyeLookRightL" }); - Retargeting->CurveRemapping.Emplace(EOculusXRFaceExpression::EyesLookRightR, { "CTRL_expressions_eyeLookRightR" }); - Retargeting->CurveRemapping.Emplace(EOculusXRFaceExpression::EyesLookUpL, { "CTRL_expressions_eyeLookUpL" }); - Retargeting->CurveRemapping.Emplace(EOculusXRFaceExpression::EyesLookUpR, { "CTRL_expressions_eyeLookUpR" }); - Retargeting->CurveRemapping.Emplace(EOculusXRFaceExpression::InnerBrowRaiserL, { "CTRL_expressions_browRaiseInL" }); - Retargeting->CurveRemapping.Emplace(EOculusXRFaceExpression::InnerBrowRaiserR, { "CTRL_expressions_browRaiseInR" }); - Retargeting->CurveRemapping.Emplace(EOculusXRFaceExpression::JawDrop, { "CTRL_expressions_jawOpen" }); - Retargeting->CurveRemapping.Emplace(EOculusXRFaceExpression::JawSidewaysLeft, { "CTRL_expressions_jawLeft" }); - Retargeting->CurveRemapping.Emplace(EOculusXRFaceExpression::JawSidewaysRight, { "CTRL_expressions_jawRight" }); - Retargeting->CurveRemapping.Emplace(EOculusXRFaceExpression::JawThrust, { "CTRL_expressions_jawFwd", "CTRL_expressions_jawBack" }); - Retargeting->CurveRemapping.Emplace(EOculusXRFaceExpression::LidTightenerL, { "CTRL_expressions_eyeSquintInnerL" }); - Retargeting->CurveRemapping.Emplace(EOculusXRFaceExpression::LidTightenerR, { "CTRL_expressions_eyeSquintInnerR" }); - Retargeting->CurveRemapping.Emplace(EOculusXRFaceExpression::LipCornerDepressorL, { "CTRL_expressions_mouthCornerDepressL" }); - Retargeting->CurveRemapping.Emplace(EOculusXRFaceExpression::LipCornerDepressorR, { "CTRL_expressions_mouthCornerDepressR" }); - Retargeting->CurveRemapping.Emplace(EOculusXRFaceExpression::LipCornerPullerL, { "CTRL_expressions_mouthCornerPullL" }); - Retargeting->CurveRemapping.Emplace(EOculusXRFaceExpression::LipCornerPullerR, { "CTRL_expressions_mouthCornerPullR" }); - Retargeting->CurveRemapping.Emplace(EOculusXRFaceExpression::LipFunnelerLB, { "CTRL_expressions_mouthFunnelDL" }); - Retargeting->CurveRemapping.Emplace(EOculusXRFaceExpression::LipFunnelerLT, { "CTRL_expressions_mouthFunnelUL" }); - Retargeting->CurveRemapping.Emplace(EOculusXRFaceExpression::LipFunnelerRB, { "CTRL_expressions_mouthFunnelDR" }); - Retargeting->CurveRemapping.Emplace(EOculusXRFaceExpression::LipFunnelerRT, { "CTRL_expressions_mouthFunnelUR" }); - Retargeting->CurveRemapping.Emplace(EOculusXRFaceExpression::LipPressorL, { "CTRL_expressions_mouthLipsPressL" }); - Retargeting->CurveRemapping.Emplace(EOculusXRFaceExpression::LipPressorR, { "CTRL_expressions_mouthLipsPressR" }); - Retargeting->CurveRemapping.Emplace(EOculusXRFaceExpression::LipPuckerL, { "CTRL_expressions_mouthLipsPurseDL", "CTRL_expressions_mouthLipsPurseUL" }); - Retargeting->CurveRemapping.Emplace(EOculusXRFaceExpression::LipPuckerR, { "CTRL_expressions_mouthLipsPurseDR", "CTRL_expressions_mouthLipsPurseUR" }); - Retargeting->CurveRemapping.Emplace(EOculusXRFaceExpression::LipStretcherL, { "CTRL_expressions_mouthStretchL" }); - Retargeting->CurveRemapping.Emplace(EOculusXRFaceExpression::LipStretcherR, { "CTRL_expressions_mouthStretchR" }); - Retargeting->CurveRemapping.Emplace(EOculusXRFaceExpression::LipSuckLB, { "CTRL_expressions_mouthLowerLipBiteL" }); - Retargeting->CurveRemapping.Emplace(EOculusXRFaceExpression::LipSuckLT, { "CTRL_expressions_mouthUpperLipBiteL" }); - Retargeting->CurveRemapping.Emplace(EOculusXRFaceExpression::LipSuckRB, { "CTRL_expressions_mouthLowerLipBiteR" }); - Retargeting->CurveRemapping.Emplace(EOculusXRFaceExpression::LipSuckRT, { "CTRL_expressions_mouthUpperLipBiteR" }); - Retargeting->CurveRemapping.Emplace(EOculusXRFaceExpression::LipTightenerL, { "CTRL_expressions_mouthLipsTightenDL", "CTRL_expressions_mouthLipsTightenUL" }); - Retargeting->CurveRemapping.Emplace(EOculusXRFaceExpression::LipTightenerR, { "CTRL_expressions_mouthLipsTightenDR", "CTRL_expressions_mouthLipsTightenUR" }); - Retargeting->CurveRemapping.Emplace(EOculusXRFaceExpression::LipsToward, { "CTRL_expressions_jawChinRaiseDL", "CTRL_expressions_jawChinRaiseDR", "CTRL_expressions_jawChinRaiseUL", "CTRL_expressions_jawChinRaiseUR" }); - Retargeting->CurveRemapping.Emplace(EOculusXRFaceExpression::LowerLipDepressorL, { "CTRL_expressions_mouthLowerLipDepressL" }); - Retargeting->CurveRemapping.Emplace(EOculusXRFaceExpression::LowerLipDepressorR, { "CTRL_expressions_mouthLowerLipDepressR" }); - Retargeting->CurveRemapping.Emplace(EOculusXRFaceExpression::MouthLeft, { "CTRL_expressions_mouthLeft" }); - Retargeting->CurveRemapping.Emplace(EOculusXRFaceExpression::MouthRight, { "CTRL_expressions_mouthRight" }); - Retargeting->CurveRemapping.Emplace(EOculusXRFaceExpression::NoseWrinklerL, { "CTRL_expressions_noseWrinkleL" }); - Retargeting->CurveRemapping.Emplace(EOculusXRFaceExpression::NoseWrinklerR, { "CTRL_expressions_noseWrinkleR" }); - Retargeting->CurveRemapping.Emplace(EOculusXRFaceExpression::OuterBrowRaiserL, { "CTRL_expressions_browRaiseOuterL" }); - Retargeting->CurveRemapping.Emplace(EOculusXRFaceExpression::OuterBrowRaiserR, { "CTRL_expressions_browRaiseOuterR" }); - Retargeting->CurveRemapping.Emplace(EOculusXRFaceExpression::UpperLidRaiserL, { "CTRL_expressions_eyeUpperLidUpL" }); - Retargeting->CurveRemapping.Emplace(EOculusXRFaceExpression::UpperLidRaiserR, { "CTRL_expressions_eyeUpperLidUpR" }); - Retargeting->CurveRemapping.Emplace(EOculusXRFaceExpression::UpperLipRaiserL, { "CTRL_expressions_mouthUpperLipRaiseL" }); - Retargeting->CurveRemapping.Emplace(EOculusXRFaceExpression::UpperLipRaiserR, { "CTRL_expressions_mouthUpperLipRaiseR" }); - } -} - -UOculusXRFaceVisemesRetargetAssetFactory::UOculusXRFaceVisemesRetargetAssetFactory(const FObjectInitializer& ObjectInitializer) - : Super(ObjectInitializer) -{ - ParentClass = UOculusXRLiveLinkRetargetFaceVisemesAsset::StaticClass(); -} - -FText UOculusXRFaceVisemesRetargetAssetFactory::GetDisplayName() const -{ - return LOCTEXT("DisplayNameMetahumanFace", "Face retarget asset for OculusXRMovement and Viseme based assets"); -} - -void UOculusXRFaceVisemesRetargetAssetFactory::SetDefaults(const TSubclassOf GeneratedClass) const -{ - if (UOculusXRLiveLinkRetargetFaceVisemesAsset* Retargeting = GeneratedClass->GetDefaultObject()) - { - Retargeting->CurveRemapping.Emplace(EOculusXRFaceVisemesExpression::SIL, { "viseme_sil" }); - Retargeting->CurveRemapping.Emplace(EOculusXRFaceVisemesExpression::PP, { "viseme_PP" }); - Retargeting->CurveRemapping.Emplace(EOculusXRFaceVisemesExpression::FF, { "viseme_FF" }); - Retargeting->CurveRemapping.Emplace(EOculusXRFaceVisemesExpression::TH, { "viseme_TH" }); - Retargeting->CurveRemapping.Emplace(EOculusXRFaceVisemesExpression::DD, { "viseme_DD" }); - Retargeting->CurveRemapping.Emplace(EOculusXRFaceVisemesExpression::KK, { "viseme_kk" }); - Retargeting->CurveRemapping.Emplace(EOculusXRFaceVisemesExpression::CH, { "viseme_CH" }); - Retargeting->CurveRemapping.Emplace(EOculusXRFaceVisemesExpression::SS, { "viseme_SS" }); - Retargeting->CurveRemapping.Emplace(EOculusXRFaceVisemesExpression::NN, { "viseme_nn" }); - Retargeting->CurveRemapping.Emplace(EOculusXRFaceVisemesExpression::RR, { "viseme_RR" }); - Retargeting->CurveRemapping.Emplace(EOculusXRFaceVisemesExpression::AA, { "viseme_aa" }); - Retargeting->CurveRemapping.Emplace(EOculusXRFaceVisemesExpression::E, { "viseme_E" }); - Retargeting->CurveRemapping.Emplace(EOculusXRFaceVisemesExpression::IH, { "viseme_I" }); - Retargeting->CurveRemapping.Emplace(EOculusXRFaceVisemesExpression::OH, { "viseme_O" }); - Retargeting->CurveRemapping.Emplace(EOculusXRFaceVisemesExpression::OU, { "viseme_U" }); - } -} - -UOculusXRMetahumanBodyRetargetAssetFactory::UOculusXRMetahumanBodyRetargetAssetFactory(const FObjectInitializer& ObjectInitializer) - : Super(ObjectInitializer) -{ - ParentClass = UOculusXRLiveLinkRetargetBodyAsset::StaticClass(); -} - -FText UOculusXRMetahumanBodyRetargetAssetFactory::GetDisplayName() const -{ - return LOCTEXT("DisplayNameMetahumanBody", "Body retarget asset for OculusXRMovement and Metahuman"); -} - -void UOculusXRMetahumanBodyRetargetAssetFactory::SetDefaults(const TSubclassOf GeneratedClass) const -{ - if (UOculusXRLiveLinkRetargetBodyAsset* Retargeting = GeneratedClass->GetDefaultObject()) - { - Retargeting->BoneRemapping.Emplace(EOculusXRBoneID::BodyRoot, "root"); - Retargeting->BoneRemapping.Emplace(EOculusXRBoneID::BodyHips, "pelvis"); - Retargeting->BoneRemapping.Emplace(EOculusXRBoneID::BodySpineLower, "spine_01"); - Retargeting->BoneRemapping.Emplace(EOculusXRBoneID::BodySpineMiddle, "spine_02"); - Retargeting->BoneRemapping.Emplace(EOculusXRBoneID::BodySpineUpper, "spine_04"); - Retargeting->BoneRemapping.Emplace(EOculusXRBoneID::BodyChest, "spine_05"); - Retargeting->BoneRemapping.Emplace(EOculusXRBoneID::BodyNeck, "neck_02"); - Retargeting->BoneRemapping.Emplace(EOculusXRBoneID::BodyHead, "head"); - - Retargeting->BoneRemapping.Emplace(EOculusXRBoneID::BodyLeftShoulder, "clavicle_l"); - Retargeting->BoneRemapping.Emplace(EOculusXRBoneID::BodyLeftScapula, NAME_None); - Retargeting->BoneRemapping.Emplace(EOculusXRBoneID::BodyLeftArmUpper, "upperarm_l"); - Retargeting->BoneRemapping.Emplace(EOculusXRBoneID::BodyLeftArmLower, "lowerarm_l"); - Retargeting->BoneRemapping.Emplace(EOculusXRBoneID::BodyLeftHandWristTwist, NAME_None); - - Retargeting->BoneRemapping.Emplace(EOculusXRBoneID::BodyRightShoulder, "clavicle_r"); - Retargeting->BoneRemapping.Emplace(EOculusXRBoneID::BodyRightScapula, NAME_None); - Retargeting->BoneRemapping.Emplace(EOculusXRBoneID::BodyRightArmUpper, "upperarm_r"); - Retargeting->BoneRemapping.Emplace(EOculusXRBoneID::BodyRightArmLower, "lowerarm_r"); - Retargeting->BoneRemapping.Emplace(EOculusXRBoneID::BodyRightHandWristTwist, NAME_None); - - Retargeting->BoneRemapping.Emplace(EOculusXRBoneID::BodyLeftHandPalm, NAME_None); - Retargeting->BoneRemapping.Emplace(EOculusXRBoneID::BodyLeftHandWrist, "hand_l"); - Retargeting->BoneRemapping.Emplace(EOculusXRBoneID::BodyLeftHandThumbMetacarpal, "thumb_01_l"); - Retargeting->BoneRemapping.Emplace(EOculusXRBoneID::BodyLeftHandThumbProximal, "thumb_02_l"); - Retargeting->BoneRemapping.Emplace(EOculusXRBoneID::BodyLeftHandThumbDistal, "thumb_03_l"); - Retargeting->BoneRemapping.Emplace(EOculusXRBoneID::BodyLeftHandThumbTip, NAME_None); - Retargeting->BoneRemapping.Emplace(EOculusXRBoneID::BodyLeftHandIndexMetacarpal, "index_metacarpal_l"); - Retargeting->BoneRemapping.Emplace(EOculusXRBoneID::BodyLeftHandIndexProximal, "index_01_l"); - Retargeting->BoneRemapping.Emplace(EOculusXRBoneID::BodyLeftHandIndexIntermediate, "index_02_l"); - Retargeting->BoneRemapping.Emplace(EOculusXRBoneID::BodyLeftHandIndexDistal, "index_03_l"); - Retargeting->BoneRemapping.Emplace(EOculusXRBoneID::BodyLeftHandIndexTip, NAME_None); - Retargeting->BoneRemapping.Emplace(EOculusXRBoneID::BodyLeftHandMiddleMetacarpal, "middle_metacarpal_l"); - Retargeting->BoneRemapping.Emplace(EOculusXRBoneID::BodyLeftHandMiddleProximal, "middle_01_l"); - Retargeting->BoneRemapping.Emplace(EOculusXRBoneID::BodyLeftHandMiddleIntermediate, "middle_02_l"); - Retargeting->BoneRemapping.Emplace(EOculusXRBoneID::BodyLeftHandMiddleDistal, "middle_03_l"); - Retargeting->BoneRemapping.Emplace(EOculusXRBoneID::BodyLeftHandMiddleTip, NAME_None); - Retargeting->BoneRemapping.Emplace(EOculusXRBoneID::BodyLeftHandRingMetacarpal, "ring_metacarpal_l"); - Retargeting->BoneRemapping.Emplace(EOculusXRBoneID::BodyLeftHandRingProximal, "ring_01_l"); - Retargeting->BoneRemapping.Emplace(EOculusXRBoneID::BodyLeftHandRingIntermediate, "ring_02_l"); - Retargeting->BoneRemapping.Emplace(EOculusXRBoneID::BodyLeftHandRingDistal, "ring_03_l"); - Retargeting->BoneRemapping.Emplace(EOculusXRBoneID::BodyLeftHandRingTip, NAME_None); - Retargeting->BoneRemapping.Emplace(EOculusXRBoneID::BodyLeftHandLittleMetacarpal, "pinky_metacarpal_l"); - Retargeting->BoneRemapping.Emplace(EOculusXRBoneID::BodyLeftHandLittleProximal, "pinky_01_l"); - Retargeting->BoneRemapping.Emplace(EOculusXRBoneID::BodyLeftHandLittleIntermediate, "pinky_02_l"); - Retargeting->BoneRemapping.Emplace(EOculusXRBoneID::BodyLeftHandLittleDistal, "pinky_03_l"); - Retargeting->BoneRemapping.Emplace(EOculusXRBoneID::BodyLeftHandLittleTip, NAME_None); - - Retargeting->BoneRemapping.Emplace(EOculusXRBoneID::BodyRightHandPalm, NAME_None); - Retargeting->BoneRemapping.Emplace(EOculusXRBoneID::BodyRightHandWrist, "hand_r"); - Retargeting->BoneRemapping.Emplace(EOculusXRBoneID::BodyRightHandThumbMetacarpal, "thumb_01_r"); - Retargeting->BoneRemapping.Emplace(EOculusXRBoneID::BodyRightHandThumbProximal, "thumb_02_r"); - Retargeting->BoneRemapping.Emplace(EOculusXRBoneID::BodyRightHandThumbDistal, "thumb_03_r"); - Retargeting->BoneRemapping.Emplace(EOculusXRBoneID::BodyRightHandThumbTip, NAME_None); - Retargeting->BoneRemapping.Emplace(EOculusXRBoneID::BodyRightHandIndexMetacarpal, "index_metacarpal_r"); - Retargeting->BoneRemapping.Emplace(EOculusXRBoneID::BodyRightHandIndexProximal, "index_01_r"); - Retargeting->BoneRemapping.Emplace(EOculusXRBoneID::BodyRightHandIndexIntermediate, "index_02_r"); - Retargeting->BoneRemapping.Emplace(EOculusXRBoneID::BodyRightHandIndexDistal, "index_03_r"); - Retargeting->BoneRemapping.Emplace(EOculusXRBoneID::BodyRightHandIndexTip, NAME_None); - Retargeting->BoneRemapping.Emplace(EOculusXRBoneID::BodyRightHandMiddleMetacarpal, "middle_metacarpal_r"); - Retargeting->BoneRemapping.Emplace(EOculusXRBoneID::BodyRightHandMiddleProximal, "middle_01_r"); - Retargeting->BoneRemapping.Emplace(EOculusXRBoneID::BodyRightHandMiddleIntermediate, "middle_02_r"); - Retargeting->BoneRemapping.Emplace(EOculusXRBoneID::BodyRightHandMiddleDistal, "middle_03_r"); - Retargeting->BoneRemapping.Emplace(EOculusXRBoneID::BodyRightHandMiddleTip, NAME_None); - Retargeting->BoneRemapping.Emplace(EOculusXRBoneID::BodyRightHandRingMetacarpal, "ring_metacarpal_r"); - Retargeting->BoneRemapping.Emplace(EOculusXRBoneID::BodyRightHandRingProximal, "ring_01_r"); - Retargeting->BoneRemapping.Emplace(EOculusXRBoneID::BodyRightHandRingIntermediate, "ring_02_r"); - Retargeting->BoneRemapping.Emplace(EOculusXRBoneID::BodyRightHandRingDistal, "ring_03_r"); - Retargeting->BoneRemapping.Emplace(EOculusXRBoneID::BodyRightHandRingTip, NAME_None); - Retargeting->BoneRemapping.Emplace(EOculusXRBoneID::BodyRightHandLittleMetacarpal, "pinky_metacarpal_r"); - Retargeting->BoneRemapping.Emplace(EOculusXRBoneID::BodyRightHandLittleProximal, "pinky_01_r"); - Retargeting->BoneRemapping.Emplace(EOculusXRBoneID::BodyRightHandLittleIntermediate, "pinky_02_r"); - Retargeting->BoneRemapping.Emplace(EOculusXRBoneID::BodyRightHandLittleDistal, "pinky_03_r"); - Retargeting->BoneRemapping.Emplace(EOculusXRBoneID::BodyRightHandLittleTip, NAME_None); - - Retargeting->BoneRemapping.Emplace(EOculusXRBoneID::BodyLeftUpperLeg, "thigh_l"); - Retargeting->BoneRemapping.Emplace(EOculusXRBoneID::BodyLeftLowerLeg, "calf_l"); - Retargeting->BoneRemapping.Emplace(EOculusXRBoneID::BodyLeftFootAnkleTwist, NAME_None); - Retargeting->BoneRemapping.Emplace(EOculusXRBoneID::BodyLeftFootAnkle, "foot_l"); - Retargeting->BoneRemapping.Emplace(EOculusXRBoneID::BodyLeftFootSubtalar, NAME_None); - Retargeting->BoneRemapping.Emplace(EOculusXRBoneID::BodyLeftFootTransverse, NAME_None); - Retargeting->BoneRemapping.Emplace(EOculusXRBoneID::BodyLeftFootBall, "ball_l"); - Retargeting->BoneRemapping.Emplace(EOculusXRBoneID::BodyRightUpperLeg, "thigh_r"); - Retargeting->BoneRemapping.Emplace(EOculusXRBoneID::BodyRightLowerLeg, "calf_r"); - Retargeting->BoneRemapping.Emplace(EOculusXRBoneID::BodyRightFootAnkleTwist, NAME_None); - Retargeting->BoneRemapping.Emplace(EOculusXRBoneID::BodyRightFootAnkle, "foot_r"); - Retargeting->BoneRemapping.Emplace(EOculusXRBoneID::BodyRightFootSubtalar, NAME_None); - Retargeting->BoneRemapping.Emplace(EOculusXRBoneID::BodyRightFootTransverse, NAME_None); - Retargeting->BoneRemapping.Emplace(EOculusXRBoneID::BodyRightFootBall, "ball_r"); - - { - FOculusXRBoneCorrection FromOculusToUnreal; - FromOculusToUnreal.RotationOffset.Roll = -90; - FromOculusToUnreal.RotationOffset.Yaw = -90; - Retargeting->GlobalCorrection = FromOculusToUnreal; - } - { - FOculusXRBoneCorrectionSet Root; - Root.Bones.Add(EOculusXRBoneID::BodyRoot); - Root.BoneCorrection.RotationOffset.Roll = 90; - Retargeting->LocalCorrections.Add(Root); - } - { - FOculusXRBoneCorrectionSet Hips; - Hips.Bones.Add(EOculusXRBoneID::BodyHips); - Hips.BoneCorrection.RotationOffset.Yaw = 5; - Retargeting->LocalCorrections.Add(Hips); - } - { - FOculusXRBoneCorrectionSet SpineLowerPart; - SpineLowerPart.Bones.Add(EOculusXRBoneID::BodySpineLower); - SpineLowerPart.Bones.Add(EOculusXRBoneID::BodySpineMiddle); - SpineLowerPart.BoneCorrection.RotationOffset.Yaw = 10; - Retargeting->LocalCorrections.Add(SpineLowerPart); - } - { - FOculusXRBoneCorrectionSet SpineUpperPart; - SpineUpperPart.Bones.Add(EOculusXRBoneID::BodySpineUpper); - SpineUpperPart.BoneCorrection.PositionOffset.Y = 3; - SpineUpperPart.BoneCorrection.RotationOffset.Yaw = -5; - Retargeting->LocalCorrections.Add(SpineUpperPart); - } - { - FOculusXRBoneCorrectionSet Chest; - Chest.Bones.Add(EOculusXRBoneID::BodyChest); - Chest.BoneCorrection.PositionOffset.Y = 3; - Chest.BoneCorrection.RotationOffset.Yaw = -5; - Retargeting->LocalCorrections.Add(Chest); - } - { - FOculusXRBoneCorrectionSet Head; - Head.Bones.Add(EOculusXRBoneID::BodyHead); - Head.Bones.Add(EOculusXRBoneID::BodyNeck); - Head.BoneCorrection.PositionOffset.Y = -3; - Head.BoneCorrection.RotationOffset.Yaw = 5; - Retargeting->LocalCorrections.Add(Head); - } - { - FOculusXRBoneCorrectionSet LeftShoulder; - LeftShoulder.Bones.Add(EOculusXRBoneID::BodyLeftShoulder); - LeftShoulder.BoneCorrection.RotationOffset.Pitch = -5; - LeftShoulder.BoneCorrection.RotationOffset.Yaw = 30; - LeftShoulder.BoneCorrection.PositionOffset.X = 5; - LeftShoulder.BoneCorrection.PositionOffset.Y = -6; - Retargeting->LocalCorrections.Add(LeftShoulder); - } - { - FOculusXRBoneCorrectionSet RightShoulder; - RightShoulder.Bones.Add(EOculusXRBoneID::BodyRightShoulder); - RightShoulder.BoneCorrection.RotationOffset.Pitch = -5; - RightShoulder.BoneCorrection.RotationOffset.Yaw = 30; - RightShoulder.BoneCorrection.PositionOffset.X = -6; - RightShoulder.BoneCorrection.PositionOffset.Y = 5; - Retargeting->LocalCorrections.Add(RightShoulder); - } - { - FOculusXRBoneCorrectionSet Hands; - for (uint8 BoneId = static_cast(EOculusXRBoneID::BodyLeftHandPalm); BoneId <= static_cast(EOculusXRBoneID::BodyRightHandLittleTip); ++BoneId) - { - Hands.Bones.Emplace(static_cast(BoneId)); - } - Hands.BoneCorrection.RotationOffset.Roll = 180; - Retargeting->LocalCorrections.Add(Hands); - } - { - FOculusXRBoneCorrectionSet Legs; - Legs.Bones.Add(EOculusXRBoneID::BodyLeftUpperLeg); - Legs.Bones.Add(EOculusXRBoneID::BodyLeftLowerLeg); - Legs.Bones.Add(EOculusXRBoneID::BodyRightUpperLeg); - Legs.Bones.Add(EOculusXRBoneID::BodyRightLowerLeg); - Legs.BoneCorrection.RotationOffset.Yaw = 180; - Retargeting->LocalCorrections.Add(Legs); - } - { - FOculusXRBoneCorrectionSet FootAnkles; - FootAnkles.Bones.Add(EOculusXRBoneID::BodyLeftFootAnkle); - FootAnkles.Bones.Add(EOculusXRBoneID::BodyRightFootAnkle); - FootAnkles.BoneCorrection.RotationOffset.Roll = 180; - FootAnkles.BoneCorrection.RotationOffset.Pitch = 175; - FootAnkles.BoneCorrection.RotationOffset.Yaw = -80; - Retargeting->LocalCorrections.Add(FootAnkles); - } - { - FOculusXRBoneCorrectionSet FootBalls; - FootBalls.Bones.Add(EOculusXRBoneID::BodyLeftFootBall); - FootBalls.BoneCorrection.RotationOffset.Yaw = 200; - FootBalls.BoneCorrection.PositionOffset.Y = -5; - FootBalls.BoneCorrection.PositionOffset.Z = 1; - Retargeting->LocalCorrections.Add(FootBalls); - } - { - FOculusXRBoneCorrectionSet FootBalls; - FootBalls.Bones.Add(EOculusXRBoneID::BodyRightFootBall); - FootBalls.BoneCorrection.RotationOffset.Yaw = 200; - FootBalls.BoneCorrection.PositionOffset.Y = 5; - FootBalls.BoneCorrection.PositionOffset.Z = -1; - Retargeting->LocalCorrections.Add(FootBalls); - } - - Retargeting->RetargetingMode = EOculusXRRetargetingMode::RotationsPlusHips; - Retargeting->ForwardMesh = EOculusXRAxis::Y; - } -} - -#undef LOCTEXT_NAMESPACE diff --git a/Plugins/MetaXR/Source/OculusXREditor/Private/OculusXRMovementAssetsFactories.h b/Plugins/MetaXR/Source/OculusXREditor/Private/OculusXRMovementAssetsFactories.h deleted file mode 100644 index 66be918..0000000 --- a/Plugins/MetaXR/Source/OculusXREditor/Private/OculusXRMovementAssetsFactories.h +++ /dev/null @@ -1,62 +0,0 @@ -// Copyright (c) Meta Platforms, Inc. and affiliates. - -#pragma once - -#include "CoreMinimal.h" -#include "Factories/BlueprintFactory.h" - -#include "OculusXRMovementAssetsFactories.generated.h" - -UCLASS(Abstract, hidecategories = Object, MinimalAPI) -class UOculusXRMetahumanRetargetAssetFactory : public UBlueprintFactory -{ - GENERATED_BODY() -public: - UOculusXRMetahumanRetargetAssetFactory(const FObjectInitializer& ObjectInitializer); - - virtual bool ConfigureProperties() override; - virtual UObject* FactoryCreateNew(UClass* Class, UObject* InParent, FName Name, EObjectFlags Flags, UObject* Context, FFeedbackContext* Warn, FName CallingContext) override; - virtual uint32 GetMenuCategories() const override; - -protected: - virtual void SetDefaults(const TSubclassOf GeneratedClass) const PURE_VIRTUAL(UOculusXRMetahumanRetargetAssetFactory::SetDefaults, ); -}; - -UCLASS(hidecategories = Object, MinimalAPI) -class UOculusXRMetahumanFaceRetargetAssetFactory : public UOculusXRMetahumanRetargetAssetFactory -{ - GENERATED_BODY() -public: - UOculusXRMetahumanFaceRetargetAssetFactory(const FObjectInitializer& ObjectInitializer); - - virtual FText GetDisplayName() const override; - -protected: - virtual void SetDefaults(const TSubclassOf GeneratedClass) const override; -}; - -UCLASS(hidecategories = Object, MinimalAPI) -class UOculusXRFaceVisemesRetargetAssetFactory : public UOculusXRMetahumanRetargetAssetFactory -{ - GENERATED_BODY() -public: - UOculusXRFaceVisemesRetargetAssetFactory(const FObjectInitializer& ObjectInitializer); - - virtual FText GetDisplayName() const override; - -protected: - virtual void SetDefaults(const TSubclassOf GeneratedClass) const override; -}; - -UCLASS(hidecategories = Object, MinimalAPI) -class UOculusXRMetahumanBodyRetargetAssetFactory : public UOculusXRMetahumanRetargetAssetFactory -{ - GENERATED_BODY() -public: - UOculusXRMetahumanBodyRetargetAssetFactory(const FObjectInitializer& ObjectInitializer); - - virtual FText GetDisplayName() const override; - -protected: - virtual void SetDefaults(const TSubclassOf GeneratedClass) const override; -}; diff --git a/Plugins/MetaXR/Source/OculusXREditor/Private/OculusXRPTLayerComponentDetailsCustomization.cpp b/Plugins/MetaXR/Source/OculusXREditor/Private/OculusXRPTLayerComponentDetailsCustomization.cpp deleted file mode 100644 index cf9e9df..0000000 --- a/Plugins/MetaXR/Source/OculusXREditor/Private/OculusXRPTLayerComponentDetailsCustomization.cpp +++ /dev/null @@ -1,93 +0,0 @@ -// Copyright (c) Meta Platforms, Inc. and affiliates. - -#include "OculusXRPTLayerComponentDetailsCustomization.h" -#include "OculusXRPassthroughLayerComponent.h" -#include "Components/StereoLayerComponent.h" -#include "DetailWidgetRow.h" -#include "PropertyRestriction.h" -#include "DetailLayoutBuilder.h" -#include "UObject/Field.h" -#include "Widgets/Text/STextBlock.h" - -#define LOCTEXT_NAMESPACE "OculusXREditor" - -////////////////////////////////////////////////////////////////////////// -// FOculusXRPTLayerComponentDetailsCustomization - -TSharedRef FOculusXRPTLayerComponentDetailsCustomization::MakeInstance() -{ - return MakeShareable(new FOculusXRPTLayerComponentDetailsCustomization); -} - -void FOculusXRPTLayerComponentDetailsCustomization::CustomizeDetails(IDetailLayoutBuilder& DetailBuilder) -{ - TArray Categories; - DetailBuilder.GetCategoryNames(Categories); - for (FName CategoryName : Categories) - { - IDetailCategoryBuilder& CategoryBuilder = DetailBuilder.EditCategory(CategoryName, FText::GetEmpty(), ECategoryPriority::Important); - - TArray> DefaultProperties; - CategoryBuilder.GetDefaultProperties(DefaultProperties); - - for (TSharedRef PropertyHandle : DefaultProperties) - { - if (PropertyHandle->GetProperty()->GetName() == FName("Shape")) - { - ShapePropertyHandle = PropertyHandle; - - static const FName WarningColorStyle("Colors.AccentYellow"); - /* clang-format off */ - CategoryBuilder.AddCustomRow(LOCTEXT("OculusXRPTComponentShapeWarning", "Warning for UOculusXRPassthroughLayerComponent::Shape property")) - .Visibility(TAttribute(this, &FOculusXRPTLayerComponentDetailsCustomization::GetShapeWarningVisibility)) - [ - SNew(SVerticalBox) - + SVerticalBox::Slot().FillHeight(1.f).VAlign(EVerticalAlignment::VAlign_Center) - [ - SNew(STextBlock) - .Font(IDetailLayoutBuilder::GetDetailFont()) - .AutoWrapText(true) - .Justification(ETextJustify::Center) - .Text(TAttribute(this, &FOculusXRPTLayerComponentDetailsCustomization::GetShapeWarningText)) - .ColorAndOpacity(FAppStyle::Get().GetSlateColor(WarningColorStyle)) - ] - ]; - /* clang-format on */ - } - - IDetailPropertyRow& Property = CategoryBuilder.AddProperty(PropertyHandle); - Property.Visibility(TAttribute::CreateLambda([PropertyHandle]() -> EVisibility { - return PropertyHandle->IsEditConst() ? EVisibility::Hidden : EVisibility::Visible; - })); - } - } -} - -EVisibility FOculusXRPTLayerComponentDetailsCustomization::GetShapeWarningVisibility() const -{ - UObject* Shape = nullptr; - ShapePropertyHandle->GetValue(Shape); - - if (!IsValid(Shape) || Shape->IsA()) - return EVisibility::Collapsed; - else - return EVisibility::Visible; -} - -FText FOculusXRPTLayerComponentDetailsCustomization::GetShapeWarningText() const -{ - UObject* Shape = nullptr; - ShapePropertyHandle->GetValue(Shape); - - if (!IsValid(Shape) || Shape->IsA()) - return FText::GetEmpty(); - else if (Shape->IsA()) - return LOCTEXT("OculusXRPTComponentShapeWarningText_Reconstructed", - "If you wish to use the Reconstructed Passthrough Layer shape, the recommended method is to use the passthrough subsystem.\nFrom blueprint, call the \"Passthrough Subsytem->Initialize Persistent Passthrough\" node on startup instead of using this component."); - else - return FText::Format(LOCTEXT("OculusXRPTComponentShapeWarningText", "Please use a Shape class supporting passthrough with this component.\nIf you wish to continue using {0}, consider a Stereo Layer component instead"), FText::FromString(Shape->GetClass()->GetName())); -} - -////////////////////////////////////////////////////////////////////////// - -#undef LOCTEXT_NAMESPACE diff --git a/Plugins/MetaXR/Source/OculusXREditor/Private/OculusXRPTLayerComponentDetailsCustomization.h b/Plugins/MetaXR/Source/OculusXREditor/Private/OculusXRPTLayerComponentDetailsCustomization.h deleted file mode 100644 index 7ee4efe..0000000 --- a/Plugins/MetaXR/Source/OculusXREditor/Private/OculusXRPTLayerComponentDetailsCustomization.h +++ /dev/null @@ -1,25 +0,0 @@ -// Copyright (c) Meta Platforms, Inc. and affiliates. - -#pragma once - -#include "PropertyHandle.h" -#include "IDetailCustomization.h" - -class IDetailLayoutBuilder; - -class FOculusXRPTLayerComponentDetailsCustomization : public IDetailCustomization -{ -public: - /** Makes a new instance of this detail layout class for a specific detail view requesting it */ - static TSharedRef MakeInstance(); - - // IDetailCustomization interface - virtual void CustomizeDetails(IDetailLayoutBuilder& DetailLayout) override; - // End of IDetailCustomization interface - - EVisibility GetShapeWarningVisibility() const; - FText GetShapeWarningText() const; - -private: - TSharedPtr ShapePropertyHandle; -}; diff --git a/Plugins/MetaXR/Source/OculusXREditor/Private/OculusXRPassthroughColorLutAsset.cpp b/Plugins/MetaXR/Source/OculusXREditor/Private/OculusXRPassthroughColorLutAsset.cpp deleted file mode 100644 index 081fdaa..0000000 --- a/Plugins/MetaXR/Source/OculusXREditor/Private/OculusXRPassthroughColorLutAsset.cpp +++ /dev/null @@ -1,59 +0,0 @@ -// Copyright (c) Meta Platforms, Inc. and affiliates. - -#include "OculusXRPassthroughColorLutAsset.h" -#include "AssetTypeCategories.h" -#include "UObject/ObjectMacros.h" -#include "UObject/Object.h" -#include "OculusXRPassthroughColorLut.h" - -#define LOCTEXT_NAMESPACE "AssetTypeActions" - -FText FAssetTypeActions_OculusXRPassthroughColorLut::GetName() const -{ - return NSLOCTEXT("AssetTypeActions", "AssetTypeActions_PassthroughColorLUT", "PassthroughColorLUT"); -} - -FColor FAssetTypeActions_OculusXRPassthroughColorLut::GetTypeColor() const -{ - return FColor(100, 100, 100); -} - -const TArray& FAssetTypeActions_OculusXRPassthroughColorLut::GetSubMenus() const -{ - static const TArray SubMenus{ - LOCTEXT("AssetOculusXRPassthroughColorLutSubMenu", "OculusXR") - }; - - return SubMenus; -} - -UClass* FAssetTypeActions_OculusXRPassthroughColorLut::GetSupportedClass() const -{ - return UOculusXRPassthroughColorLut::StaticClass(); -} - -uint32 FAssetTypeActions_OculusXRPassthroughColorLut::GetCategories() -{ - return EAssetTypeCategories::Misc; -} - -UOculusXRPassthroughColorLutFactory::UOculusXRPassthroughColorLutFactory(const FObjectInitializer& ObjectInitializer) - : Super(ObjectInitializer) -{ - SupportedClass = UOculusXRPassthroughColorLut::StaticClass(); - - bCreateNew = true; - bEditAfterNew = true; -} - -UObject* UOculusXRPassthroughColorLutFactory::FactoryCreateNew(UClass* Class, UObject* InParent, FName Name, EObjectFlags Flags, UObject* Context, - FFeedbackContext* Warn) -{ - return NewObject(InParent, Name, Flags); -} - -uint32 UOculusXRPassthroughColorLutFactory::GetMenuCategories() const -{ - return EAssetTypeCategories::Misc; -} -#undef LOCTEXT_NAMESPACE diff --git a/Plugins/MetaXR/Source/OculusXREditor/Private/OculusXRPassthroughColorLutAsset.h b/Plugins/MetaXR/Source/OculusXREditor/Private/OculusXRPassthroughColorLutAsset.h deleted file mode 100644 index c2fdbad..0000000 --- a/Plugins/MetaXR/Source/OculusXREditor/Private/OculusXRPassthroughColorLutAsset.h +++ /dev/null @@ -1,33 +0,0 @@ -// Copyright (c) Meta Platforms, Inc. and affiliates. - -#pragma once - -#include "CoreMinimal.h" -#include "Factories/Factory.h" -#include "AssetTypeActions_Base.h" - -#include "OculusXRPassthroughColorLutAsset.generated.h" - -class FAssetTypeActions_OculusXRPassthroughColorLut : public FAssetTypeActions_Base -{ -public: - virtual FText GetName() const override; - virtual FColor GetTypeColor() const override; - virtual const TArray& GetSubMenus() const override; - virtual UClass* GetSupportedClass() const override; - virtual uint32 GetCategories() override; -}; - -UCLASS(hidecategories = Object, MinimalAPI) -class UOculusXRPassthroughColorLutFactory : public UFactory -{ - GENERATED_BODY() - -public: - UOculusXRPassthroughColorLutFactory(const FObjectInitializer& ObjectInitializer); - - virtual UObject* FactoryCreateNew(UClass* Class, UObject* InParent, FName Name, EObjectFlags Flags, UObject* Context, - FFeedbackContext* Warn) override; - - virtual uint32 GetMenuCategories() const override; -}; diff --git a/Plugins/MetaXR/Source/OculusXREditor/Private/OculusXRPlatformToolSettings.cpp b/Plugins/MetaXR/Source/OculusXREditor/Private/OculusXRPlatformToolSettings.cpp deleted file mode 100644 index e22aca1..0000000 --- a/Plugins/MetaXR/Source/OculusXREditor/Private/OculusXRPlatformToolSettings.cpp +++ /dev/null @@ -1,25 +0,0 @@ -// @lint-ignore-every LICENSELINT -// Copyright Epic Games, Inc. All Rights Reserved. - -#include "OculusXRPlatformToolSettings.h" - -UOculusXRPlatformToolSettings::UOculusXRPlatformToolSettings() - : OculusTargetPlatform(EOculusXRPlatformTarget::Rift) -{ - uint8 NumPlatforms = (uint8)EOculusXRPlatformTarget::Length; - OculusApplicationID.Init("", NumPlatforms); - OculusApplicationToken.Init("", NumPlatforms); - OculusReleaseChannel.Init("Alpha", NumPlatforms); - OculusReleaseNote.Init("", NumPlatforms); - OculusLaunchFilePath.Init("", NumPlatforms); - OculusSymbolDirPath.Init("", NumPlatforms); - OculusLanguagePacksPath.Init("", NumPlatforms); - OculusExpansionFilesPath.Init("", NumPlatforms); - OculusAssetConfigs.Init(FOculusXRAssetConfigArray(), NumPlatforms); - UploadDebugSymbols = true; - - for (int i = 0; i < NumPlatforms; i++) - { - OculusAssetConfigs[i].ConfigArray = TArray(); - } -} diff --git a/Plugins/MetaXR/Source/OculusXREditor/Private/OculusXRPlatformToolWidget.cpp b/Plugins/MetaXR/Source/OculusXREditor/Private/OculusXRPlatformToolWidget.cpp deleted file mode 100644 index eed7f70..0000000 --- a/Plugins/MetaXR/Source/OculusXREditor/Private/OculusXRPlatformToolWidget.cpp +++ /dev/null @@ -1,1659 +0,0 @@ -// @lint-ignore-every LICENSELINT -// Copyright Epic Games, Inc. All Rights Reserved. -#include "OculusXRPlatformToolWidget.h" -#include "Widgets/Text/SRichTextBlock.h" -#include "DesktopPlatformModule.h" -#include "Editor.h" -#include "Styling/AppStyle.h" -#include "Misc/FileHelper.h" -#include "Internationalization/Regex.h" -#include "Misc/MessageDialog.h" -#include "Widgets/Layout/SExpandableArea.h" -#include "Widgets/Images/SImage.h" -#include "HAL/FileManagerGeneric.h" -#include "DOM/JsonObject.h" -#include "Serialization/JsonSerializer.h" -#include "OculusXRHMDModule.h" -#include "GenericPlatform/GenericPlatformMisc.h" -#include "Interfaces/IPluginManager.h" -#include "SHyperlinkLaunchURL.h" -#include "Misc/EngineVersionComparison.h" - -#define LOCTEXT_NAMESPACE "OculusPlatformToolWidget" -#define TEXT_INDENT_OFFSET 20.0f - -const FString UrlPlatformUtil = "https://www.oculus.com/download_app/?id=1076686279105243"; -const FString ProjectPlatformUtilPath = "Oculus/Tools/ovr-platform-util.exe"; - -FText OculusPlatformDialogTitle = LOCTEXT("DownloadOculusPlatformUtility", "Download Oculus Platform Utility"); -FText OculusPlatformDialogMessage = LOCTEXT("DownloadOculusPlatformUtilityMessage", - "Oculus Platform Window would like to download the latest version of the Oculus Platform Utility." - " Oculus Platform Utility is a command-line tool that enables the uploading of builds to your release channels on the Oculus Developer Dashboard." - "\n\nYou can learn more about the Oculus Platform Utility at https://developer.oculus.com/distribute/publish-reference-platform-command-line-utility/" - "\n\nCanceling will prevent the download and the UPLOAD button will be unfunctional. Would you like the tool to download the Oculus Platform Utility to your project?"); - -static bool bShowUploadDebugSymbols = false; - -FString SOculusPlatformToolWidget::LogText; - -SOculusPlatformToolWidget::SOculusPlatformToolWidget() -{ - LogTextUpdated = false; - ActiveUploadButton = true; - Options2DCollapsed = true; - RequestUploadButtonActive = true; - OptionsRedistPackagesCollapsed = true; - - EnableUploadButtonDel.BindRaw(this, &SOculusPlatformToolWidget::EnableUploadButton); - UpdateLogTextDel.BindRaw(this, &SOculusPlatformToolWidget::UpdateLogText); - SetProcessDel.BindRaw(this, &SOculusPlatformToolWidget::SetPlatformProcess); - - LoadConfigSettings(); - - FOculusXRHMDModule::GetPluginWrapper().SendEvent2("oculus_platform_tool", "show_window", "integration"); -} - -void SOculusPlatformToolWidget::Tick(const FGeometry& AllottedGeometry, const double InCurrentTime, const float InDeltaTime) -{ - // Update log text if it changes, otherwise constant updating will yeild the field unselectable. - if (LogTextUpdated) - { - ToolConsoleLog->SetText(FText::FromString(LogText)); - LogTextUpdated = false; - } - - if (RequestUploadButtonActive != ActiveUploadButton) - { - ActiveUploadButton = RequestUploadButtonActive; - BuildButtonToolbar(ButtonToolbar); - } -} - -void SOculusPlatformToolWidget::Construct(const FArguments& InArgs) -{ - auto logTextBox = SNew(SMultiLineEditableTextBox).IsReadOnly(true); - ToolConsoleLog = logTextBox; - - auto mainVerticalBox = SNew(SVerticalBox); - GeneralSettingsBox = mainVerticalBox; - - auto buttonToolbarBox = SNew(SHorizontalBox); - ButtonToolbar = buttonToolbarBox; - - auto optionalSettings = SNew(SVerticalBox); - OptionalSettings = optionalSettings; - - auto expansionFilesSettings = SNew(SVerticalBox); - ExpansionFilesSettings = expansionFilesSettings; - - BuildGeneralSettingsBox(GeneralSettingsBox); - BuildButtonToolbar(ButtonToolbar); - BuildExpansionFileBox(ExpansionFilesSettings); - - if (PlatformSettings != nullptr) - { - if (PlatformSettings->GetTargetPlatform() == (uint8)EOculusXRPlatformTarget::Rift) - { - BuildRiftOptionalFields(OptionalSettings); - } - else - { - OptionalSettings.Get()->ClearChildren(); - } - } - - FString ODHIconPath = IPluginManager::Get().FindPlugin(TEXT("OculusXR"))->GetBaseDir() / TEXT("Resources/Icon128.png"); - const FName BrushName(*ODHIconPath); - FSlateApplication::Get().GetRenderer()->GenerateDynamicImageResource(BrushName); - ODHIconDynamicImageBrush = MakeShareable(new FSlateDynamicImageBrush(BrushName, FVector2D(60.0f, 60.0f))); - -#if PLATFORM_MAC - FString odhLink = "https://developer.oculus.com/downloads/package/oculus-developer-hub-mac/?source=unreal"; -#else - FString odhLink = "https://developer.oculus.com/downloads/package/oculus-developer-hub-win/?source=unreal"; -#endif - - ChildSlot - [SNew(SBorder) - .BorderImage(FAppStyle::GetBrush("ToolPanel.LightGroupBorder")) - .Padding(2) - [SNew(SVerticalBox) - + SVerticalBox::Slot().Padding(0, 0).FillHeight(1.f) - [SNew(SScrollBox) - + SScrollBox::Slot() - [SNew(SExpandableArea) - .HeaderPadding(5) - .Padding(5) - .BorderBackgroundColor(FLinearColor(0.4f, 0.4f, 0.4f, 1.0f)) - .BodyBorderImage(FAppStyle::GetBrush("ToolPanel.GroupBorder")) - .BodyBorderBackgroundColor(FLinearColor::White) - .InitiallyCollapsed(false) - .HeaderContent() - [SNew(SRichTextBlock) - .TextStyle(FAppStyle::Get(), "ToolBar.Heading") - .DecoratorStyleSet(&FAppStyle::Get()) - .AutoWrapText(true) - .Text(LOCTEXT("GeneralSettings", "General Settings"))] - .BodyContent() - [mainVerticalBox]] - + SScrollBox::Slot() - [SNew(SExpandableArea) - .HeaderPadding(5) - .Padding(5) - .BorderBackgroundColor(FLinearColor(0.4f, 0.4f, 0.4f, 1.0f)) - .BodyBorderImage(FAppStyle::GetBrush("ToolPanel.GroupBorder")) - .BodyBorderBackgroundColor(FLinearColor::White) - .InitiallyCollapsed(true) - .HeaderContent() - [SNew(SRichTextBlock) - .TextStyle(FAppStyle::Get(), "ToolBar.Heading") - .DecoratorStyleSet(&FAppStyle::Get()) - .AutoWrapText(true) - .Text(LOCTEXT("OptionalSettings", "Optional Settings"))] - .BodyContent() - [SNew(SVerticalBox) - + SVerticalBox::Slot().AutoHeight() - [optionalSettings]]] - + SScrollBox::Slot() - [SNew(SExpandableArea) - .HeaderPadding(5) - .Padding(5) - .BorderBackgroundColor(FLinearColor(0.4f, 0.4f, 0.4f, 1.0f)) - .BodyBorderImage(FAppStyle::GetBrush("ToolPanel.GroupBorder")) - .BodyBorderBackgroundColor(FLinearColor::White) - .InitiallyCollapsed(true) - .HeaderContent() - [SNew(SRichTextBlock) - .TextStyle(FAppStyle::Get(), "ToolBar.Heading") - .DecoratorStyleSet(&FAppStyle::Get()) - .AutoWrapText(true) - .Text(LOCTEXT("ExpansionFileSettings", "Expansion Files"))] - .BodyContent() - [SNew(SVerticalBox) - + SVerticalBox::Slot().AutoHeight() - [expansionFilesSettings]]]] - + SVerticalBox::Slot().AutoHeight() - [buttonToolbarBox] - + SVerticalBox::Slot().FillHeight(1.f) - [SNew(SBorder) - .BorderImage(FAppStyle::GetBrush("ToolPanel.GroupBorder")) - [logTextBox]] - + SVerticalBox::Slot().AutoHeight().Padding(2.0f) - [SNew(SBorder) - .BorderImage(FAppStyle::GetBrush("ToolPanel.GroupBorder")) - [SNew(SHorizontalBox) - + SHorizontalBox::Slot().AutoWidth() - [SNew(SBox) - .WidthOverride(60.0f) - .HeightOverride(60.0f) - [SNew(SImage) - .Image(ODHIconDynamicImageBrush.IsValid() ? ODHIconDynamicImageBrush.Get() : nullptr)]] - + SHorizontalBox::Slot().FillWidth(1.0f) - [SNew(SVerticalBox) - + SVerticalBox::Slot().AutoHeight().Padding(2.0f) - [SNew(SRichTextBlock) - .Text(LOCTEXT("ODHCallout", - "Oculus Developer Hub is a desktop companion tool that can upload builds, manage apps and reduce friction in daily Quest development.")) - .DecoratorStyleSet(&FAppStyle::Get()) - .AutoWrapText(true)] - + SVerticalBox::Slot().AutoHeight() - [SNew(SBox) - .HAlign(HAlign_Left) - [SNew(SHyperlinkLaunchURL, odhLink) - .Text(LOCTEXT("ODHDownloadPage", "Download Oculus Developer Hub")) - .ToolTipText(LOCTEXT("ODHDownloadPageTooltip", "Opens a page that provides the download link for Oculus Developer Hub"))]]]]]]]; -} - -void SOculusPlatformToolWidget::BuildGeneralSettingsBox(TSharedPtr box) -{ - if (PlatformSettings == nullptr) - { - return; - } - - box.Get()->ClearChildren(); - - BuildTextComboBoxField(GeneralSettingsBox, LOCTEXT("TargetPlatform", "Target Platform"), - &OculusPlatforms, OculusPlatforms[PlatformSettings->GetTargetPlatform()], - &SOculusPlatformToolWidget::OnPlatformSettingChanged); - - // Build field for Oculus Application ID. - BuildTextField(box, LOCTEXT("AppID", "Oculus Application ID"), FText::FromString(PlatformSettings->GetApplicationID()), - LOCTEXT("AppIDTT", "Specifies the ID of your app. Obtained from the API tab of your app in the Oculus Dashboard."), - &SOculusPlatformToolWidget::OnApplicationIDChanged); - - // Build field for Oculus Application Token. - BuildTextField(box, LOCTEXT("AppToken", "Oculus Application Token"), FText::FromString(PlatformSettings->GetApplicationToken()), - LOCTEXT("AppTokenTT", "Specifies the app secret token. Obtained from the API tab of your app in the Oculus Dashboard."), - &SOculusPlatformToolWidget::OnApplicationTokenChanged, true); - - // Build field for Release Channel. - BuildTextField(box, LOCTEXT("ReleaseChannel", "Release Channel"), FText::FromString(PlatformSettings->GetReleaseChannel()), - LOCTEXT("ReleaseChannelTT", "Specifies the release channel for uploading the build. Release channel names are not case-sensitive."), - &SOculusPlatformToolWidget::OnReleaseChannelChanged); - - // Build field for Release Notes. - BuildTextField(box, LOCTEXT("ReleaseNote", "Release Note"), FText::FromString(PlatformSettings->GetReleaseNote()), - LOCTEXT("ReleaseNoteTT", "Specifies the release note text shown to users."), - &SOculusPlatformToolWidget::OnReleaseNoteChanged); - - // Platform specific fields. - if (PlatformSettings->GetTargetPlatform() == (uint8)EOculusXRPlatformTarget::Rift) - { - // Build field for Rift Build Directory. - BuildFileDirectoryField(box, LOCTEXT("BuildPath", "Rift Build Directory"), FText::FromString(PlatformSettings->OculusRiftBuildDirectory), - LOCTEXT("BuildPathTT", "Specifies the full path to the directory containing your build files."), - &SOculusPlatformToolWidget::OnSelectRiftBuildDirectory, &SOculusPlatformToolWidget::OnClearRiftBuildDirectory); - - // Build field for Build Version. - BuildTextField(box, LOCTEXT("BuildVersion", "Build Version"), FText::FromString(PlatformSettings->OculusRiftBuildVersion), - LOCTEXT("BuildVersionTT", "Specifies the version number shown to users."), - &SOculusPlatformToolWidget::OnRiftBuildVersionChanged); - - // Build field for Launch File Path. - BuildFileDirectoryField(box, LOCTEXT("LaunchPath", "Launch File Path"), FText::FromString(PlatformSettings->GetLaunchFilePath()), - LOCTEXT("LaunchPathTT", " Specifies the path to the executable that launches your app."), - &SOculusPlatformToolWidget::OnSelectLaunchFilePath, &SOculusPlatformToolWidget::OnClearLaunchFilePath); - } - else - { - // Build field for APK File Path. - BuildFileDirectoryField(box, LOCTEXT("APKLaunchPath", "APK File Path"), FText::FromString(PlatformSettings->GetLaunchFilePath()), - LOCTEXT("APKLaunchPathTT", " Specifies the path to the APK that launches your app."), - &SOculusPlatformToolWidget::OnSelectLaunchFilePath, &SOculusPlatformToolWidget::OnClearLaunchFilePath); - - BuildCheckBoxField(box, LOCTEXT("UploadDebugSymbols", "Upload Debug Symbols"), PlatformSettings->UploadDebugSymbols, - LOCTEXT("UploadDebugSymbolsTT", "If checked, debug symbols will be uploaded along with the application."), - &SOculusPlatformToolWidget::OnUploadDebugSymbolsChanged); - - if (PlatformSettings->UploadDebugSymbols) - { - if (bShowUploadDebugSymbols != PlatformSettings->UploadDebugSymbols) - { - if (PlatformSettings->GetSymbolDirPath().IsEmpty()) - { - FString defaultPath = GenerateSymbolPath(); - PlatformSettings->SetSymbolDirPath(FPaths::ConvertRelativePathToFull(defaultPath)); - PlatformSettings->TryUpdateDefaultConfigFile(); - } - } - - // Build field for Debug symbol directory path. - BuildFileDirectoryField(box, LOCTEXT("SymbolPath", "Symbol Directory Path"), FText::FromString(PlatformSettings->GetSymbolDirPath()), - LOCTEXT("SymbolPathTT", "Specifies the path to the directory containing the app symbols (libUE4.so)."), - &SOculusPlatformToolWidget::OnSelectSymbolDirPath, &SOculusPlatformToolWidget::OnClearSymbolDirPath, 1); - - BuildCheckBoxField(box, LOCTEXT("DebugSymbolsOnly", "Upload Debug Symbols Only"), PlatformSettings->DebugSymbolsOnly, - LOCTEXT("DebugSymbolsOnlyTT", "If checked, the tool will upload onyl debug symbols to an existing build. Requires Build ID, App ID, App Token, and Debug Symbols Directory."), - &SOculusPlatformToolWidget::OnDebugSymbolsOnlyChanged, 1); - - if (PlatformSettings->DebugSymbolsOnly) - { - BuildTextField(box, LOCTEXT("BuildID", "Build ID"), FText::FromString(PlatformSettings->BuildID), - LOCTEXT("BuildIDTT", "Specifies the Build ID to upload debug symbols to."), - &SOculusPlatformToolWidget::OnBuildIDChanged, false, 1); - } - } - bShowUploadDebugSymbols = PlatformSettings->UploadDebugSymbols; - } -} - -void SOculusPlatformToolWidget::BuildTextField(TSharedPtr box, FText name, FText text, FText tooltip, - PTextComittedDel deleg, bool isPassword, int32 indentAmount) -{ - FMargin textMargin = FMargin(TEXT_INDENT_OFFSET * indentAmount, 1.0f, 1.0f, 1.0f); - - box.Get()->AddSlot().Padding(1).AutoHeight() - [SNew(SHorizontalBox) - + SHorizontalBox::Slot().Padding(1).AutoWidth() - [SNew(SBox) - .WidthOverride(250.f) - .Padding(textMargin) - [SNew(STextBlock) - .Text(name) - .ToolTipText(tooltip)]] - + SHorizontalBox::Slot().Padding(1).FillWidth(1.f) - [SNew(SEditableTextBox) - .Text(text) - .IsPassword(isPassword) - .OnTextCommitted(this, deleg)]]; -} - -void SOculusPlatformToolWidget::BuildTextComboBoxField(TSharedPtr box, FText name, - TArray>* options, TSharedPtr current, PTextComboBoxDel deleg, int32 indentAmount) -{ - FMargin textMargin = FMargin(TEXT_INDENT_OFFSET * indentAmount, 1.0f, 1.0f, 1.0f); - - box.Get()->AddSlot().Padding(1).AutoHeight() - [SNew(SHorizontalBox) - + SHorizontalBox::Slot().Padding(1).AutoWidth() - [SNew(SBox) - .WidthOverride(250.f) - .Padding(textMargin) - [SNew(SRichTextBlock) - .DecoratorStyleSet(&FAppStyle::Get()) - .Text(name)]] - + SHorizontalBox::Slot().Padding(1).FillWidth(1.f) - [SNew(STextComboBox) - .OptionsSource(options) - .InitiallySelectedItem(current) - .OnSelectionChanged(this, deleg)]]; -} - -void SOculusPlatformToolWidget::BuildCheckBoxField(TSharedPtr box, FText name, bool check, - FText tooltip, PCheckBoxChangedDel deleg, int32 indentAmount) -{ - FMargin textMargin = FMargin(TEXT_INDENT_OFFSET * indentAmount, 1.0f, 1.0f, 1.0f); - - box.Get()->AddSlot().Padding(1).AutoHeight() - [SNew(SHorizontalBox) - + SHorizontalBox::Slot().Padding(1).AutoWidth() - [SNew(SBox) - .WidthOverride(250.f) - .Padding(textMargin) - [SNew(SRichTextBlock) - .DecoratorStyleSet(&FAppStyle::Get()) - .Text(name)]] - + SHorizontalBox::Slot().Padding(1).FillWidth(1.f) - [SNew(SCheckBox) - .OnCheckStateChanged(this, deleg) - .IsChecked(check ? ECheckBoxState::Checked : ECheckBoxState::Unchecked)]]; -} - -void SOculusPlatformToolWidget::BuildFileDirectoryField(TSharedPtr box, FText name, FText path, FText tooltip, - PButtonClickedDel deleg, PButtonClickedDel clearDeleg, int32 indentAmount) -{ - EVisibility cancelButtonVisibility = path.IsEmpty() ? EVisibility::Hidden : EVisibility::Visible; - FMargin textMargin = FMargin(TEXT_INDENT_OFFSET * indentAmount, 1.0f, 1.0f, 1.0f); - - box.Get()->AddSlot().Padding(1).AutoHeight() - [SNew(SHorizontalBox) - + SHorizontalBox::Slot().Padding(1).AutoWidth() - [SNew(SBox) - .WidthOverride(250.f) - .Padding(textMargin) - [SNew(STextBlock) - .Text(name) - .ToolTipText(tooltip)]] - + SHorizontalBox::Slot().Padding(1).FillWidth(1.f) - [SNew(SEditableText) - .Text(path) - .IsReadOnly(true) - .Justification(ETextJustify::Left)] - + SHorizontalBox::Slot().Padding(1).AutoWidth().HAlign(EHorizontalAlignment::HAlign_Right) - [SNew(SButton) - .Text(FText::FromString("X")) - .Visibility(cancelButtonVisibility) - .OnClicked(this, clearDeleg) - .ButtonColorAndOpacity(FLinearColor(0.36f, 0.1f, 0.05f))] - + SHorizontalBox::Slot().Padding(1).AutoWidth().HAlign(EHorizontalAlignment::HAlign_Right) - [SNew(SButton) - .Text((LOCTEXT("Choose", "Choose..."))) - .OnClicked(this, deleg)]]; -} - -void SOculusPlatformToolWidget::BuildButtonToolbar(TSharedPtr box) -{ - box.Get()->ClearChildren(); - - box.Get()->AddSlot().FillWidth(1.f); - box.Get()->AddSlot().AutoWidth().Padding(2.f) - [SNew(SButton) - .Text((LOCTEXT("Upload", "Upload"))) - .OnClicked(this, &SOculusPlatformToolWidget::OnStartPlatformUpload) - .IsEnabled(ActiveUploadButton)]; - box.Get()->AddSlot().AutoWidth().Padding(2.f) - [SNew(SButton) - .Text((LOCTEXT("Cancel", "Cancel"))) - .OnClicked(this, &SOculusPlatformToolWidget::OnCancelUpload) - .IsEnabled(!ActiveUploadButton)]; - box.Get()->AddSlot().FillWidth(1.f); -} - -void SOculusPlatformToolWidget::BuildRiftOptionalFields(TSharedPtr box) -{ - if (PlatformSettings == nullptr) - { - return; - } - - box.Get()->ClearChildren(); - - // Add Launch Parameter Field - BuildTextField(box, LOCTEXT("LaunchParams", "Launch Parameters"), FText::FromString(PlatformSettings->OculusRiftLaunchParams), - LOCTEXT("LaunchParamsTT", ""), - &SOculusPlatformToolWidget::OnRiftLaunchParamsChanged); - - // Add Firewall Exception Toggle - BuildCheckBoxField(box, LOCTEXT("Firewall", "Firewall Exception"), PlatformSettings->OculusRiftFireWallException, - LOCTEXT("FirewallTT", ""), - &SOculusPlatformToolWidget::OnRiftFirewallChanged); - - // Add Gamepad Emulation Dropdown - BuildTextComboBoxField(box, LOCTEXT("GamepadEmu", "Gamepad Emulation"), - &RiftGamepadEmulation, RiftGamepadEmulation[(uint8)PlatformSettings->GetRiftGamepadEmulation()], - &SOculusPlatformToolWidget::OnRiftGamepadEmulationChanged); - - // Generate 2D Settings Expandable Area - TSharedRef settings2DBox = SNew(SVerticalBox); - - // Add 2D Launch File Field - BuildFileDirectoryField(settings2DBox, LOCTEXT("2DLaunch", "2D Launch File"), FText::FromString(PlatformSettings->OculusRift2DLaunchPath), - LOCTEXT("2DLaunchPathTT", ""), - &SOculusPlatformToolWidget::OnSelect2DLaunchPath, &SOculusPlatformToolWidget::OnClear2DLaunchPath); - - // Add 2D Launch Parameter Field - BuildTextField(settings2DBox, LOCTEXT("2DLaunchParams", "2D Launch Parameters"), FText::FromString(PlatformSettings->OculusRift2DLaunchParams), - LOCTEXT("2DLaunchParamsTT", ""), - &SOculusPlatformToolWidget::On2DLaunchParamsChanged); - - box.Get()->AddSlot().AutoHeight().Padding(1) - [SNew(SExpandableArea) - .HeaderPadding(5) - .Padding(5) - .BorderBackgroundColor(FLinearColor(0.4f, 0.4f, 0.4f, 1.0f)) - .BodyBorderImage(FAppStyle::GetBrush("ToolPanel.GroupBorder")) - .BodyBorderBackgroundColor(FLinearColor::White) - .InitiallyCollapsed(Options2DCollapsed) - .OnAreaExpansionChanged(this, &SOculusPlatformToolWidget::On2DOptionsExpanded) - .HeaderContent() - [SNew(SRichTextBlock) - .TextStyle(FAppStyle::Get(), "ToolBar.Heading") - .DecoratorStyleSet(&FAppStyle::Get()) - .AutoWrapText(true) - .Text(LOCTEXT("2DSettings", "2D Settings"))] - .BodyContent() - [settings2DBox]]; - - BuildRedistPackagesBox(box); -} - -void SOculusPlatformToolWidget::BuildRedistPackagesBox(TSharedPtr box) -{ - // Create check box toggle for each redistributable package we loaded - TSharedRef redistBox = SNew(SVerticalBox); - for (int i = 0; i < PlatformSettings->OculusRedistPackages.Num(); i++) - { - FOculusXRRedistPackage* Package = &PlatformSettings->OculusRedistPackages[i]; - redistBox->AddSlot() - .Padding(1) - .AutoHeight() - [SNew(SHorizontalBox) - + SHorizontalBox::Slot().Padding(1).AutoWidth() - [SNew(SBox) - .WidthOverride(250.f) - [SNew(SRichTextBlock) - .DecoratorStyleSet(&FAppStyle::Get()) - .Text(FText::FromString(Package->Name))]] - + SHorizontalBox::Slot().Padding(1).FillWidth(1.f) - [SNew(SCheckBox) - .OnCheckStateChanged(this, &SOculusPlatformToolWidget::OnRedistPackageStateChanged, Package) - .IsChecked(Package->Included ? ECheckBoxState::Checked : ECheckBoxState::Unchecked)]]; - } - - box.Get()->AddSlot().AutoHeight().Padding(1) - [SNew(SExpandableArea) - .HeaderPadding(5) - .Padding(5) - .BorderBackgroundColor(FLinearColor(0.4f, 0.4f, 0.4f, 1.0f)) - .BodyBorderImage(FAppStyle::GetBrush("ToolPanel.GroupBorder")) - .BodyBorderBackgroundColor(FLinearColor::White) - .InitiallyCollapsed(OptionsRedistPackagesCollapsed) - .OnAreaExpansionChanged(this, &SOculusPlatformToolWidget::OnRedistPackagesExpanded) - .HeaderContent() - [SNew(SRichTextBlock) - .TextStyle(FAppStyle::Get(), "ToolBar.Heading") - .DecoratorStyleSet(&FAppStyle::Get()) - .AutoWrapText(true) - .Text(LOCTEXT("RedistPack", "Redistributable Packages"))] - .BodyContent() - [redistBox]]; -} - -void SOculusPlatformToolWidget::BuildExpansionFileBox(TSharedPtr box) -{ - if (PlatformSettings == nullptr) - { - return; - } - - ExpansionFilesSettings.Get()->ClearChildren(); - - if (PlatformSettings->GetTargetPlatform() == (uint8)EOculusXRPlatformTarget::Rift) - { - BuildFileDirectoryField(box, LOCTEXT("LanguagePacks", "Language Packs Directory"), FText::FromString(PlatformSettings->GetLanguagePacksPath()), - LOCTEXT("LanguagePacksTT", ""), &SOculusPlatformToolWidget::OnSelectLanguagePacksPath, &SOculusPlatformToolWidget::OnClearLanguagePacksPath); - } - - BuildFileDirectoryField(box, LOCTEXT("ExpansionFilesDirectory", "Expansion Files Directory"), FText::FromString(PlatformSettings->GetExpansionFilesPath()), - LOCTEXT("ExpansionFilesTT", ""), &SOculusPlatformToolWidget::OnSelectExpansionFilesPath, &SOculusPlatformToolWidget::OnClearExpansionFilesPath); - - TArray* AssetConfigs = PlatformSettings->GetAssetConfigs(); - if (AssetConfigs) - { - for (int i = 0; i < AssetConfigs->Num(); i++) - { - auto AssetConfigBox = SNew(SVerticalBox); - BuildAssetConfigBox(AssetConfigBox, (*AssetConfigs)[i], i); - - box.Get()->AddSlot().AutoHeight().Padding(1) - [SNew(SExpandableArea) - .HeaderPadding(5) - .Padding(5) - .BorderBackgroundColor(FLinearColor(0.4f, 0.4f, 0.4f, 1.0f)) - .BodyBorderImage(FAppStyle::GetBrush("ToolPanel.GroupBorder")) - .BodyBorderBackgroundColor(FLinearColor::White) - .HeaderContent() - [SNew(SRichTextBlock) - .TextStyle(FAppStyle::Get(), "ToolBar.Heading") - .DecoratorStyleSet(&FAppStyle::Get()) - .AutoWrapText(true) - .Text(FText::FromString((*AssetConfigs)[i].Name))] - .BodyContent() - [AssetConfigBox]]; - } - } -} - -void SOculusPlatformToolWidget::BuildAssetConfigBox(TSharedPtr box, FOculusXRAssetConfig config, int index) -{ - box.Get()->AddSlot().Padding(1).AutoHeight() - [SNew(SHorizontalBox) - + SHorizontalBox::Slot().Padding(1).AutoWidth() - [SNew(SBox) - .WidthOverride(250.f) - [SNew(SRichTextBlock) - .DecoratorStyleSet(&FAppStyle::Get()) - .Text(LOCTEXT("AssetType", "Asset Type"))]] - + SHorizontalBox::Slot().Padding(1).FillWidth(1.f) - [SNew(STextComboBox) - .OptionsSource(&AssetType) - .InitiallySelectedItem(AssetType[(uint8)config.AssetType]) - .OnSelectionChanged(this, &SOculusPlatformToolWidget::OnAssetConfigTypeChanged, index)]]; - - box.Get()->AddSlot().Padding(1).AutoHeight() - [SNew(SHorizontalBox) - + SHorizontalBox::Slot().Padding(1).AutoWidth() - [SNew(SBox) - .WidthOverride(250.f) - [SNew(SRichTextBlock) - .DecoratorStyleSet(&FAppStyle::Get()) - .Text(LOCTEXT("AssetRequired", "Required"))]] - + SHorizontalBox::Slot().Padding(1).FillWidth(1.f) - [SNew(SCheckBox) - .OnCheckStateChanged(this, &SOculusPlatformToolWidget::OnAssetConfigRequiredChanged, index) - .IsChecked(config.Required ? ECheckBoxState::Checked : ECheckBoxState::Unchecked)]]; - - box.Get()->AddSlot().Padding(1).AutoHeight() - [SNew(SHorizontalBox) - + SHorizontalBox::Slot().Padding(1).AutoWidth() - [SNew(SBox) - .WidthOverride(250.f) - [SNew(STextBlock) - .Text(LOCTEXT("SKU", "SKU"))]] - + SHorizontalBox::Slot().Padding(1).FillWidth(1.f) - [SNew(SEditableTextBox) - .Text(FText::FromString(config.Sku)) - .OnTextCommitted(this, &SOculusPlatformToolWidget::OnAssetConfigSKUChanged, index)]]; -} - -bool SOculusPlatformToolWidget::ConstructArguments(FString& args) -{ - if (PlatformSettings == nullptr) - { - return false; - } - - if (PlatformSettings->UploadDebugSymbols && PlatformSettings->DebugSymbolsOnly) - { - return ConstructDebugSymbolArguments(args); - } - - // Build the args string that will be passed to the CLI. Print all errors that occur to the log. - bool success = true; - - switch (PlatformSettings->GetTargetPlatform()) - { - case (uint8)EOculusXRPlatformTarget::Rift: - args = "upload-rift-build"; - break; - case (uint8)EOculusXRPlatformTarget::Quest: - args = "upload-quest-build"; - break; - default: - UpdateLogText(LogText + "ERROR: Invalid target platform selected"); - success = false; - break; - } - - // Oculus Application ID check and command. - ValidateTextField(&SOculusPlatformToolWidget::IDFieldValidator, PlatformSettings->GetApplicationID(), - LOCTEXT("ApplicationID", "Application ID").ToString(), success); - args += " --app_id \"" + PlatformSettings->GetApplicationID() + "\""; - - // Oculus Application Token check and command. - ValidateTextField(&SOculusPlatformToolWidget::GenericFieldValidator, PlatformSettings->GetApplicationToken(), - LOCTEXT("ApplicationToken", "Application Token").ToString(), success); - args += " --app_secret \"" + PlatformSettings->GetApplicationToken() + "\""; - - // Release Channel check and command. - ValidateTextField(&SOculusPlatformToolWidget::GenericFieldValidator, PlatformSettings->GetReleaseChannel(), - LOCTEXT("ReleaseChannel", "Release Channel").ToString(), success); - args += " --channel \"" + PlatformSettings->GetReleaseChannel() + "\""; - - // Release Note check and command. Not a required command. - if (!PlatformSettings->GetReleaseNote().IsEmpty()) - { - FString SanatizedReleaseNote = PlatformSettings->GetReleaseNote(); - SanatizedReleaseNote = SanatizedReleaseNote.Replace(TEXT("\""), TEXT("\"\"")); - args += " --notes \"" + SanatizedReleaseNote + "\""; - } - - // Platform specific commands - if (PlatformSettings->GetTargetPlatform() == (uint8)EOculusXRPlatformTarget::Rift) - { - // Launch File Path check and command. - ValidateTextField(&SOculusPlatformToolWidget::FileFieldValidator, PlatformSettings->GetLaunchFilePath(), - LOCTEXT("LaunchFile", "Launch File Path").ToString(), success); - args += " --launch-file \"" + PlatformSettings->GetLaunchFilePath() + "\""; - - // Rift Build Directory check and command. - ValidateTextField(&SOculusPlatformToolWidget::DirectoryFieldValidator, PlatformSettings->OculusRiftBuildDirectory, - LOCTEXT("RiftBuildDir", "Rift Build Directory").ToString(), success); - args += " --build_dir \"" + PlatformSettings->OculusRiftBuildDirectory + "\""; - - // Rift Build Version check and command. - ValidateTextField(&SOculusPlatformToolWidget::GenericFieldValidator, PlatformSettings->OculusRiftBuildVersion, - LOCTEXT("BuildVersion", "Build Version").ToString(), success); - args += " --version \"" + PlatformSettings->OculusRiftBuildVersion + "\""; - - // Rift Launch Parameters check and command - if (!PlatformSettings->OculusRiftLaunchParams.IsEmpty()) - { - ValidateTextField(&SOculusPlatformToolWidget::LaunchParamValidator, PlatformSettings->OculusRiftLaunchParams, - LOCTEXT("LaunchParam", "Launch Parameters").ToString(), success); - args += " --launch_params \"" + PlatformSettings->OculusRiftLaunchParams + "\""; - } - - // Rift 2D Options checks and commands - if (!PlatformSettings->OculusRift2DLaunchPath.IsEmpty()) - { - ValidateTextField(&SOculusPlatformToolWidget::FileFieldValidator, PlatformSettings->OculusRift2DLaunchPath, - LOCTEXT("2DLaunchFile", "2D Launch File Path").ToString(), success); - args += " --launch_file_2d \"" + PlatformSettings->OculusRift2DLaunchPath + "\""; - - if (!PlatformSettings->OculusRift2DLaunchParams.IsEmpty()) - { - ValidateTextField(&SOculusPlatformToolWidget::LaunchParamValidator, PlatformSettings->OculusRift2DLaunchParams, - LOCTEXT("2DLaunchParams", "2D Launch Parameters").ToString(), success); - args += " --launch_params_2d \"" + PlatformSettings->OculusRift2DLaunchParams + "\""; - } - } - - // Rift Firewall Exception command - if (PlatformSettings->OculusRiftFireWallException) - { - args += " --firewall_exceptions true"; - } - - // Rift Gamepad Emulation command - if (PlatformSettings->GetRiftGamepadEmulation() > EOculusXRGamepadEmulation::Off && PlatformSettings->GetRiftGamepadEmulation() < EOculusXRGamepadEmulation::Length) - { - args += " --gamepad-emulation "; - switch (PlatformSettings->GetRiftGamepadEmulation()) - { - case EOculusXRGamepadEmulation::Twinstick: - args += "TWINSTICK"; - break; - case EOculusXRGamepadEmulation::RightDPad: - args += "RIGHT_D_PAD"; - break; - case EOculusXRGamepadEmulation::LeftDPad: - args += "LEFT_D_PAD"; - break; - default: - args += "OFF"; - break; - } - } - - // Rift Redistributable Packages commands - TArray IncludedPackages; - for (int i = 0; i < PlatformSettings->OculusRedistPackages.Num(); i++) - { - FOculusXRRedistPackage Package = PlatformSettings->OculusRedistPackages[i]; - if (Package.Included) - { - IncludedPackages.Add(Package.Id); - } - } - if (IncludedPackages.Num() > 0) - { - args += " --redistributables \"" + FString::Join(IncludedPackages, TEXT(",")) + "\""; - } - } - else - { - // APK File Path check and command. - ValidateTextField(&SOculusPlatformToolWidget::FileFieldValidator, PlatformSettings->GetLaunchFilePath(), - LOCTEXT("APKLaunchFile", "APK File Path").ToString(), success); - args += " --apk \"" + PlatformSettings->GetLaunchFilePath() + "\""; - - if (PlatformSettings->UploadDebugSymbols) - { - ValidateTextField(&SOculusPlatformToolWidget::DirectoryFieldValidator, PlatformSettings->GetSymbolDirPath(), - LOCTEXT("SymbolDirPath", "Symbol Directory Path").ToString(), success); - if (success) - { - args += " --debug-symbols-dir \"" + PlatformSettings->GetSymbolDirPath() + "\""; - } - } - } - - if (!PlatformSettings->GetExpansionFilesPath().IsEmpty()) - { - ValidateTextField(&SOculusPlatformToolWidget::DirectoryFieldValidator, PlatformSettings->GetExpansionFilesPath(), - LOCTEXT("ExpansionFilesPath", "Expansion Files Path").ToString(), success); - args += " --assets-dir \"" + PlatformSettings->GetExpansionFilesPath() + "\""; - - TArray* AssetConfigs = PlatformSettings->GetAssetConfigs(); - if (AssetConfigs->Num() > 0) - { - TArray AssetConfig; - for (int i = 0; i < AssetConfigs->Num(); i++) - { - TArray ConfigParams; - FOculusXRAssetConfig Config = (*AssetConfigs)[i]; - - if (Config.Required) - { - ConfigParams.Add("\\\"required\\\":true"); - } - if (Config.AssetType > EOculusXRAssetType::Default && Config.AssetType < EOculusXRAssetType::Length) - { - FString command = "\\\"type\\\":"; - switch (Config.AssetType) - { - case EOculusXRAssetType::Store: - ConfigParams.Add(command + "\\\"STORE\\\""); - break; - case EOculusXRAssetType::Language_Pack: - ConfigParams.Add(command + "\\\"LANGUAGE_PACK\\\""); - break; - default: - ConfigParams.Add(command + "\\\"DEFAULT\\\""); - break; - } - } - if (!Config.Sku.IsEmpty()) - { - ConfigParams.Add("\\\"sku\\\":\\\"" + Config.Sku + "\\\""); - } - - if (ConfigParams.Num() > 0) - { - FString ConfigCommand = "\\\"" + Config.Name + "\\\":{" + FString::Join(ConfigParams, TEXT(",")) + "}"; - AssetConfig.Add(ConfigCommand); - } - } - - if (AssetConfig.Num()) - { - args += " --asset_files_config {" + FString::Join(AssetConfig, TEXT(",")) + "}"; - } - } - } - - args += " --upload-from-engine UNREAL"; - - UE_LOG(LogTemp, Warning, TEXT("%s"), *args); - return success; -} - -bool SOculusPlatformToolWidget::ConstructDebugSymbolArguments(FString& args) -{ - bool success = true; - args = "upload-debug-symbols"; - - ValidateTextField(&SOculusPlatformToolWidget::IDFieldValidator, PlatformSettings->BuildID, - LOCTEXT("BuildID", "Build ID").ToString(), success); - args += " --parent \"" + PlatformSettings->BuildID + "\""; - - // Oculus Application ID check and command. - ValidateTextField(&SOculusPlatformToolWidget::IDFieldValidator, PlatformSettings->GetApplicationID(), - LOCTEXT("ApplicationID", "Application ID").ToString(), success); - args += " --app_id \"" + PlatformSettings->GetApplicationID() + "\""; - - // Oculus Application Token check and command. - ValidateTextField(&SOculusPlatformToolWidget::GenericFieldValidator, PlatformSettings->GetApplicationToken(), - LOCTEXT("ApplicationToken", "Application Token").ToString(), success); - args += " --app_secret \"" + PlatformSettings->GetApplicationToken() + "\""; - - ValidateTextField(&SOculusPlatformToolWidget::DirectoryFieldValidator, PlatformSettings->GetSymbolDirPath(), - LOCTEXT("SymbolDirPath", "Symbol Directory Path").ToString(), success); - args += " --debug-symbols-dir \"" + PlatformSettings->GetSymbolDirPath() + "\""; - args += " --debug-symbols-pattern \"*.so\""; - - return success; -} - -void SOculusPlatformToolWidget::EnableUploadButton(bool enabled) -{ - RequestUploadButtonActive = enabled; -} - -void SOculusPlatformToolWidget::LoadConfigSettings() -{ - PlatformSettings = GetMutableDefault(); - PlatformEnum = StaticEnum(); - GamepadEmulationEnum = StaticEnum(); - AssetTypeEnum = StaticEnum(); - - RiftGamepadEmulation.Empty(); - OculusPlatforms.Empty(); - for (uint8 i = 0; i < (uint8)EOculusXRPlatformTarget::Length; i++) - { - OculusPlatforms.Add(MakeShareable(new FString(PlatformEnum->GetDisplayNameTextByIndex((int64)i).ToString()))); - } - for (uint8 i = 0; i < (uint8)EOculusXRGamepadEmulation::Length; i++) - { - RiftGamepadEmulation.Add(MakeShareable(new FString(GamepadEmulationEnum->GetDisplayNameTextByIndex((int64)i).ToString()))); - } - for (uint8 i = 0; i < (uint8)EOculusXRAssetType::Length; i++) - { - AssetType.Add(MakeShareable(new FString(AssetTypeEnum->GetDisplayNameTextByIndex((int64)i).ToString()))); - } - - LoadRedistPackages(); -} - -void SOculusPlatformToolWidget::LoadRedistPackages() -{ - (new FAsyncTask(UpdateLogTextDel))->StartBackgroundTask(); -} - -FReply SOculusPlatformToolWidget::OnStartPlatformUpload() -{ - FString launchArgs; - - UpdateLogText(""); - FOculusXRHMDModule::GetPluginWrapper().SendEvent2("oculus_platform_tool", "upload", "integration"); - if (ConstructArguments(launchArgs)) - { - UpdateLogText(LogText + LOCTEXT("StartUpload", "Starting Platform Tool Upload Process . . .\n").ToString()); - (new FAsyncTask(launchArgs, EnableUploadButtonDel, UpdateLogTextDel, SetProcessDel))->StartBackgroundTask(); - } - return FReply::Handled(); -} - -void SOculusPlatformToolWidget::OnPlatformSettingChanged(TSharedPtr ItemSelected, ESelectInfo::Type SelectInfo) -{ - if (!ItemSelected.IsValid()) - { - return; - } - - for (uint8 i = 0; i < (uint8)EOculusXRPlatformTarget::Length; i++) - { - if (PlatformEnum->GetDisplayNameTextByIndex(i).EqualTo(FText::FromString(*ItemSelected))) - { - if (PlatformSettings != nullptr) - { - PlatformSettings->SetTargetPlatform(i); - PlatformSettings->TryUpdateDefaultConfigFile(); - - LoadConfigSettings(); - BuildGeneralSettingsBox(GeneralSettingsBox); - BuildExpansionFileBox(ExpansionFilesSettings); - - OptionalSettings.Get()->ClearChildren(); - if (i == (uint8)EOculusXRPlatformTarget::Rift) - { - BuildRiftOptionalFields(OptionalSettings); - } - break; - } - } - } -} - -void SOculusPlatformToolWidget::OnApplicationIDChanged(const FText& InText, ETextCommit::Type InCommitType) -{ - if (PlatformSettings != nullptr) - { - PlatformSettings->SetApplicationID(InText.ToString()); - PlatformSettings->TryUpdateDefaultConfigFile(); - } -} - -void SOculusPlatformToolWidget::OnApplicationTokenChanged(const FText& InText, ETextCommit::Type InCommitType) -{ - if (PlatformSettings != nullptr) - { - PlatformSettings->SetApplicationToken(InText.ToString()); - PlatformSettings->TryUpdateDefaultConfigFile(); - } -} - -void SOculusPlatformToolWidget::OnReleaseChannelChanged(const FText& InText, ETextCommit::Type InCommitType) -{ - if (PlatformSettings != nullptr) - { - PlatformSettings->SetReleaseChannel(InText.ToString()); - PlatformSettings->TryUpdateDefaultConfigFile(); - } -} - -void SOculusPlatformToolWidget::OnReleaseNoteChanged(const FText& InText, ETextCommit::Type InCommitType) -{ - if (PlatformSettings != nullptr) - { - PlatformSettings->SetReleaseNote(InText.ToString()); - PlatformSettings->TryUpdateDefaultConfigFile(); - } -} - -void SOculusPlatformToolWidget::OnRiftBuildVersionChanged(const FText& InText, ETextCommit::Type InCommitType) -{ - if (PlatformSettings != nullptr) - { - PlatformSettings->OculusRiftBuildVersion = InText.ToString(); - PlatformSettings->TryUpdateDefaultConfigFile(); - } -} - -void SOculusPlatformToolWidget::OnRiftLaunchParamsChanged(const FText& InText, ETextCommit::Type InCommitType) -{ - if (PlatformSettings != nullptr) - { - PlatformSettings->OculusRiftLaunchParams = InText.ToString(); - PlatformSettings->TryUpdateDefaultConfigFile(); - } -} - -void SOculusPlatformToolWidget::On2DLaunchParamsChanged(const FText& InText, ETextCommit::Type InCommitType) -{ - if (PlatformSettings != nullptr) - { - PlatformSettings->OculusRift2DLaunchParams = InText.ToString(); - PlatformSettings->TryUpdateDefaultConfigFile(); - } -} - -void SOculusPlatformToolWidget::OnRiftFirewallChanged(ECheckBoxState CheckState) -{ - if (PlatformSettings != nullptr) - { - PlatformSettings->OculusRiftFireWallException = CheckState == ECheckBoxState::Checked ? true : false; - PlatformSettings->TryUpdateDefaultConfigFile(); - } -} - -void SOculusPlatformToolWidget::OnRedistPackageStateChanged(ECheckBoxState CheckState, FOculusXRRedistPackage* Package) -{ - if (PlatformSettings != nullptr) - { - Package->Included = CheckState == ECheckBoxState::Checked; - PlatformSettings->TryUpdateDefaultConfigFile(); - BuildRiftOptionalFields(OptionalSettings); - } -} - -void SOculusPlatformToolWidget::OnAssetConfigTypeChanged(TSharedPtr ItemSelected, ESelectInfo::Type SelectInfo, int i) -{ - if (PlatformSettings != nullptr) - { - TArray* AssetConfigs = PlatformSettings->GetAssetConfigs(); - for (int e = 0; e < (uint8)EOculusXRAssetType::Length; e++) - { - if (AssetTypeEnum->GetDisplayNameTextByIndex(e).ToString().Equals(*ItemSelected.Get())) - { - (*AssetConfigs)[i].AssetType = (EOculusXRAssetType)e; - break; - } - } - - PlatformSettings->TryUpdateDefaultConfigFile(); - BuildExpansionFileBox(ExpansionFilesSettings); - } -} - -void SOculusPlatformToolWidget::OnAssetConfigRequiredChanged(ECheckBoxState CheckState, int i) -{ - if (PlatformSettings != nullptr) - { - TArray* AssetConfigs = PlatformSettings->GetAssetConfigs(); - (*AssetConfigs)[i].Required = CheckState == ECheckBoxState::Checked; - - PlatformSettings->TryUpdateDefaultConfigFile(); - BuildExpansionFileBox(ExpansionFilesSettings); - } -} - -void SOculusPlatformToolWidget::OnAssetConfigSKUChanged(const FText& InText, ETextCommit::Type InCommitType, int i) -{ - if (PlatformSettings != nullptr) - { - TArray* AssetConfigs = PlatformSettings->GetAssetConfigs(); - (*AssetConfigs)[i].Sku = InText.ToString(); - - PlatformSettings->TryUpdateDefaultConfigFile(); - BuildExpansionFileBox(ExpansionFilesSettings); - } -} - -void SOculusPlatformToolWidget::OnUploadDebugSymbolsChanged(ECheckBoxState CheckState) -{ - if (PlatformSettings != nullptr) - { - PlatformSettings->UploadDebugSymbols = CheckState == ECheckBoxState::Checked ? true : false; - PlatformSettings->TryUpdateDefaultConfigFile(); - - BuildGeneralSettingsBox(GeneralSettingsBox); - } -} - -void SOculusPlatformToolWidget::OnDebugSymbolsOnlyChanged(ECheckBoxState CheckState) -{ - if (PlatformSettings != nullptr) - { - PlatformSettings->DebugSymbolsOnly = CheckState == ECheckBoxState::Checked ? true : false; - PlatformSettings->TryUpdateDefaultConfigFile(); - - BuildGeneralSettingsBox(GeneralSettingsBox); - } -} - -void SOculusPlatformToolWidget::OnBuildIDChanged(const FText& InText, ETextCommit::Type InCommitType) -{ - if (PlatformSettings != nullptr) - { - PlatformSettings->BuildID = InText.ToString(); - PlatformSettings->TryUpdateDefaultConfigFile(); - } -} - -void SOculusPlatformToolWidget::OnRiftGamepadEmulationChanged(TSharedPtr ItemSelected, ESelectInfo::Type SelectInfo) -{ - if (!ItemSelected.IsValid()) - { - return; - } - - for (uint8 i = 0; i < (uint8)EOculusXRGamepadEmulation::Length; i++) - { - if (GamepadEmulationEnum->GetDisplayNameTextByIndex(i).EqualTo(FText::FromString(*ItemSelected))) - { - if (PlatformSettings != nullptr) - { - PlatformSettings->SetRiftGamepadEmulation(i); - PlatformSettings->TryUpdateDefaultConfigFile(); - break; - } - } - } -} - -FReply SOculusPlatformToolWidget::OnSelectRiftBuildDirectory() -{ - TSharedPtr parentWindow = FSlateApplication::Get().FindWidgetWindow(AsShared()); - const void* parentWindowHandle = (parentWindow.IsValid() && parentWindow->GetNativeWindow().IsValid()) ? parentWindow->GetNativeWindow()->GetOSWindowHandle() : nullptr; - - if (PlatformSettings != nullptr) - { - FString path; - FString defaultPath = PlatformSettings->OculusRiftBuildDirectory.IsEmpty() ? FPaths::ProjectContentDir() : PlatformSettings->OculusRiftBuildDirectory; - if (FDesktopPlatformModule::Get()->OpenDirectoryDialog(parentWindowHandle, "Choose Rift Build Directory", defaultPath, path)) - { - PlatformSettings->OculusRiftBuildDirectory = path; - PlatformSettings->TryUpdateDefaultConfigFile(); - BuildGeneralSettingsBox(GeneralSettingsBox); - } - } - return FReply::Handled(); -} - -FReply SOculusPlatformToolWidget::OnClearRiftBuildDirectory() -{ - if (PlatformSettings != nullptr) - { - PlatformSettings->OculusRiftBuildDirectory.Empty(); - PlatformSettings->TryUpdateDefaultConfigFile(); - BuildGeneralSettingsBox(GeneralSettingsBox); - } - return FReply::Handled(); -} - -FReply SOculusPlatformToolWidget::OnSelectLaunchFilePath() -{ - TSharedPtr parentWindow = FSlateApplication::Get().FindWidgetWindow(AsShared()); - const void* parentWindowHandle = (parentWindow.IsValid() && parentWindow->GetNativeWindow().IsValid()) ? parentWindow->GetNativeWindow()->GetOSWindowHandle() : nullptr; - - if (PlatformSettings != nullptr) - { - TArray path; - FString defaultPath = PlatformSettings->GetLaunchFilePath().IsEmpty() ? FPaths::ProjectContentDir() : PlatformSettings->GetLaunchFilePath(); - FString fileType = PlatformSettings->GetTargetPlatform() == (uint8)EOculusXRPlatformTarget::Rift ? "Executables (*.exe)|*.exe" : "APKs (*.apk)|*.apk"; - if (FDesktopPlatformModule::Get()->OpenFileDialog(parentWindowHandle, "Choose Launch File", defaultPath, defaultPath, fileType, EFileDialogFlags::None, path)) - { - if (path.Num() > 0) - { - PlatformSettings->SetLaunchFilePath(FPaths::ConvertRelativePathToFull(path[0])); - } - PlatformSettings->TryUpdateDefaultConfigFile(); - BuildGeneralSettingsBox(GeneralSettingsBox); - } - } - return FReply::Handled(); -} - -FReply SOculusPlatformToolWidget::OnClearLaunchFilePath() -{ - if (PlatformSettings != nullptr) - { - PlatformSettings->SetLaunchFilePath(""); - PlatformSettings->TryUpdateDefaultConfigFile(); - BuildGeneralSettingsBox(GeneralSettingsBox); - } - return FReply::Handled(); -} - -FString SOculusPlatformToolWidget::GenerateSymbolPath() -{ - return FPaths::ProjectDir() + TEXT("Binaries/Android/") + FApp::GetProjectName() + TEXT("_Symbols_v1/") + FApp::GetProjectName() + TEXT("-arm64"); -} - -FReply SOculusPlatformToolWidget::OnSelectSymbolDirPath() -{ - TSharedPtr parentWindow = FSlateApplication::Get().FindWidgetWindow(AsShared()); - const void* parentWindowHandle = (parentWindow.IsValid() && parentWindow->GetNativeWindow().IsValid()) ? parentWindow->GetNativeWindow()->GetOSWindowHandle() : nullptr; - - if (PlatformSettings != nullptr) - { - FString dirPath; - FString defaultPath = PlatformSettings->GetSymbolDirPath().IsEmpty() ? GenerateSymbolPath() : PlatformSettings->GetSymbolDirPath(); - if (FDesktopPlatformModule::Get()->OpenDirectoryDialog(parentWindowHandle, "Choose Launch File", defaultPath, dirPath)) - { - PlatformSettings->SetSymbolDirPath(FPaths::ConvertRelativePathToFull(dirPath)); - PlatformSettings->TryUpdateDefaultConfigFile(); - BuildGeneralSettingsBox(GeneralSettingsBox); - } - } - return FReply::Handled(); -} - -FReply SOculusPlatformToolWidget::OnClearSymbolDirPath() -{ - if (PlatformSettings != nullptr) - { - PlatformSettings->SetSymbolDirPath(""); - PlatformSettings->TryUpdateDefaultConfigFile(); - BuildGeneralSettingsBox(GeneralSettingsBox); - } - return FReply::Handled(); -} - -FReply SOculusPlatformToolWidget::OnSelect2DLaunchPath() -{ - - if (PlatformSettings != nullptr) - { - TSharedPtr parentWindow = FSlateApplication::Get().FindWidgetWindow(AsShared()); - const void* parentWindowHandle = (parentWindow.IsValid() && parentWindow->GetNativeWindow().IsValid()) ? parentWindow->GetNativeWindow()->GetOSWindowHandle() : nullptr; - TArray path; - FString defaultPath = PlatformSettings->OculusRift2DLaunchPath.IsEmpty() ? FPaths::ProjectContentDir() : PlatformSettings->OculusRift2DLaunchPath; - if (FDesktopPlatformModule::Get()->OpenFileDialog(parentWindowHandle, "Choose 2D Launch File", defaultPath, defaultPath, "Executables (*.exe)|*.exe", EFileDialogFlags::None, path)) - { - if (path.Num() > 0) - { - PlatformSettings->OculusRift2DLaunchPath = FPaths::ConvertRelativePathToFull(path[0]); - } - PlatformSettings->TryUpdateDefaultConfigFile(); - BuildRiftOptionalFields(OptionalSettings); - } - } - return FReply::Handled(); -} - -FReply SOculusPlatformToolWidget::OnClear2DLaunchPath() -{ - if (PlatformSettings != nullptr) - { - PlatformSettings->OculusRift2DLaunchPath.Empty(); - PlatformSettings->TryUpdateDefaultConfigFile(); - BuildRiftOptionalFields(OptionalSettings); - } - return FReply::Handled(); -} - -FReply SOculusPlatformToolWidget::OnCancelUpload() -{ - if (FMessageDialog::Open(EAppMsgType::OkCancel, LOCTEXT("CancelUploadWarning", "Are you sure you want to cancel the upload process?")) == EAppReturnType::Ok) - { - if (PlatformProcess.IsValid()) - { - FPlatformProcess::TerminateProc(PlatformProcess); - UpdateLogText(LogText + LOCTEXT("UploadCancel", "Upload process was canceled.").ToString()); - } - } - return FReply::Handled(); -} - -FReply SOculusPlatformToolWidget::OnSelectLanguagePacksPath() -{ - - if (PlatformSettings != nullptr) - { - TSharedPtr parentWindow = FSlateApplication::Get().FindWidgetWindow(AsShared()); - const void* parentWindowHandle = (parentWindow.IsValid() && parentWindow->GetNativeWindow().IsValid()) ? parentWindow->GetNativeWindow()->GetOSWindowHandle() : nullptr; - FString path; - FString defaultPath = PlatformSettings->GetLanguagePacksPath().IsEmpty() ? FPaths::ProjectContentDir() : PlatformSettings->GetLanguagePacksPath(); - if (FDesktopPlatformModule::Get()->OpenDirectoryDialog(parentWindowHandle, "Choose Language Packs Directory", defaultPath, path)) - { - PlatformSettings->SetLanguagePacksPath(path); - PlatformSettings->TryUpdateDefaultConfigFile(); - BuildExpansionFileBox(ExpansionFilesSettings); - } - } - return FReply::Handled(); -} - -FReply SOculusPlatformToolWidget::OnClearLanguagePacksPath() -{ - if (PlatformSettings != nullptr) - { - PlatformSettings->SetLanguagePacksPath(""); - PlatformSettings->TryUpdateDefaultConfigFile(); - BuildExpansionFileBox(ExpansionFilesSettings); - } - return FReply::Handled(); -} - -FReply SOculusPlatformToolWidget::OnSelectExpansionFilesPath() -{ - - if (PlatformSettings != nullptr) - { - TSharedPtr parentWindow = FSlateApplication::Get().FindWidgetWindow(AsShared()); - const void* parentWindowHandle = (parentWindow.IsValid() && parentWindow->GetNativeWindow().IsValid()) ? parentWindow->GetNativeWindow()->GetOSWindowHandle() : nullptr; - FString path; - FString defaultPath = PlatformSettings->GetExpansionFilesPath().IsEmpty() ? FPaths::ProjectContentDir() : PlatformSettings->GetExpansionFilesPath(); - if (FDesktopPlatformModule::Get()->OpenDirectoryDialog(parentWindowHandle, "Choose Expansion Files Directory", defaultPath, path)) - { - if (!path.Equals(PlatformSettings->GetExpansionFilesPath())) - { - if (!path.IsEmpty() && FPaths::DirectoryExists(path)) - { - TArray Files; - // FFileManagerGeneric::Get().FindFilesRecursive(Files, *path, TEXT("*.*"), true, false, false); - IFileManager::Get().FindFiles(Files, *path); - - TArray* AssetConfigs = PlatformSettings->GetAssetConfigs(); - for (int i = 0; i < Files.Num(); i++) - { - FOculusXRAssetConfig AssetConfig; - AssetConfig.Name = Files[i]; - AssetConfigs->Push(AssetConfig); - } - - PlatformSettings->SetExpansionFilesPath(path); - PlatformSettings->TryUpdateDefaultConfigFile(); - BuildExpansionFileBox(ExpansionFilesSettings); - } - } - } - } - return FReply::Handled(); -} - -FReply SOculusPlatformToolWidget::OnClearExpansionFilesPath() -{ - if (PlatformSettings != nullptr) - { - PlatformSettings->SetExpansionFilesPath(""); - PlatformSettings->GetAssetConfigs()->Empty(); - PlatformSettings->TryUpdateDefaultConfigFile(); - BuildExpansionFileBox(ExpansionFilesSettings); - } - return FReply::Handled(); -} - -void SOculusPlatformToolWidget::ValidateTextField(PFieldValidatorDel del, FString text, FString name, bool& success) -{ - FString error = ""; - FFieldValidatorDel fieldValidator; - - // Check the given field with the given field validator and print the error if it fails. - fieldValidator.BindSP(this, del); - if (!fieldValidator.Execute(text, error)) - { - FString errorMessage = LOCTEXT("Error", "ERROR: Please verify that the {0} is correct. ").ToString(); - errorMessage = FString::Format(*errorMessage, { name }); - UpdateLogText(LogText + errorMessage + (error.IsEmpty() ? "\n" : error + "\n")); - success = false; - } -} - -bool SOculusPlatformToolWidget::GenericFieldValidator(FString text, FString& error) -{ - if (text.IsEmpty()) - { - error = LOCTEXT("FieldEmpty", "The field is empty.").ToString(); - return false; - } - return true; -} - -bool SOculusPlatformToolWidget::IDFieldValidator(FString text, FString& error) -{ - const FRegexPattern RegExPat(TEXT("^[0-9]+$")); - FRegexMatcher RegMatcher(RegExPat, text); - - if (!GenericFieldValidator(text, error)) - { - return false; - } - else if (!RegMatcher.FindNext()) - { - error = LOCTEXT("InvalidChar", "The field contains invalid characters.").ToString(); - return false; - } - return true; -} - -bool SOculusPlatformToolWidget::DirectoryFieldValidator(FString text, FString& error) -{ - if (!GenericFieldValidator(text, error)) - { - return false; - } - if (!FPaths::DirectoryExists(text)) - { - error = LOCTEXT("DirectoryNull", "The directory does not exist.").ToString(); - return false; - } - return true; -} - -bool SOculusPlatformToolWidget::FileFieldValidator(FString text, FString& error) -{ - if (!GenericFieldValidator(text, error)) - { - return false; - } - if (!FPaths::FileExists(text)) - { - error = LOCTEXT("FileNull", "The file does not exist.").ToString(); - return false; - } - return true; -} - -bool SOculusPlatformToolWidget::LaunchParamValidator(FString text, FString& error) -{ - if (text.Contains("\"")) - { - error = LOCTEXT("LaunchParamError", "The field contains illegal characters.").ToString(); - return false; - } - return true; -} - -void SOculusPlatformToolWidget::On2DOptionsExpanded(bool bExpanded) -{ - Options2DCollapsed = !bExpanded; -} - -void SOculusPlatformToolWidget::OnRedistPackagesExpanded(bool bExpanded) -{ - OptionsRedistPackagesCollapsed = !bExpanded; -} - -void SOculusPlatformToolWidget::UpdateLogText(FString text) -{ - // Make sure that log text updating happens on the right thread. - LogText = text; - LogTextUpdated = true; -} - -void SOculusPlatformToolWidget::SetPlatformProcess(FProcHandle proc) -{ - PlatformProcess = proc; -} - -//======================================================================================= -// FPlatformDownloadTask - -FPlatformDownloadTask::FPlatformDownloadTask(FUpdateLogTextDel textDel, FEvent* saveEvent) -{ - UpdateLogText = textDel; - SaveCompleteEvent = saveEvent; - - FOculusXRHMDModule::GetPluginWrapper().SendEvent2("oculus_platform_tool", "provision_util", "integration"); -} - -void FPlatformDownloadTask::DoWork() -{ - // Create HTTP request for downloading oculus platform tool - downloadCompleteEvent = FGenericPlatformProcess::GetSynchEventFromPool(false); - TSharedRef httpRequest = FHttpModule::Get().CreateRequest(); - - httpRequest->OnProcessRequestComplete().BindRaw(this, &FPlatformDownloadTask::OnDownloadRequestComplete); -#if UE_VERSION_OLDER_THAN(5, 4, 0) - httpRequest->OnRequestProgress().BindRaw(this, &FPlatformDownloadTask::OnRequestDownloadProgress); -#else - httpRequest->OnRequestProgress64().BindRaw(this, &FPlatformDownloadTask::OnRequestDownloadProgress64); -#endif - httpRequest->SetURL(UrlPlatformUtil); - httpRequest->SetVerb("GET"); - - httpRequest->ProcessRequest(); - - UpdateLogText.Execute(SOculusPlatformToolWidget::LogText + LOCTEXT("DownloadProgress", "Downloading Platform Tool: {0}%\n").ToString()); - ToolConsoleLog = SOculusPlatformToolWidget::LogText; - UpdateProgressLog(0); - - // Wait for download to complete - downloadCompleteEvent->Wait(); - - // Save HTTP data - FString fullPath = FPaths::ConvertRelativePathToFull(FPaths::ProjectContentDir()) + ProjectPlatformUtilPath; - if (FFileHelper::SaveArrayToFile(httpData, *fullPath)) - { - UpdateLogText.Execute(SOculusPlatformToolWidget::LogText + LOCTEXT("DownloadSuccess", "Platform tool successfully downloaded.\n").ToString()); - } - else - { - UpdateLogText.Execute(SOculusPlatformToolWidget::LogText + LOCTEXT("DownloadError", "An error has occured with downloading the platform tool.\n").ToString()); - } - - if (SaveCompleteEvent != nullptr) - { - SaveCompleteEvent->Trigger(); - } -} - -void FPlatformDownloadTask::UpdateProgressLog(int progress) -{ - UpdateLogText.Execute(FString::Format(*ToolConsoleLog, { progress })); -} - -void FPlatformDownloadTask::OnRequestDownloadProgress64(FHttpRequestPtr HttpRequest, uint64 BytesSend, uint64 InBytesReceived) -{ - // Update progress on download in tool console log - FHttpResponsePtr httpResponse = HttpRequest->GetResponse(); - if (httpResponse.IsValid()) - { - int progress = ((float)InBytesReceived / (float)httpResponse->GetContentLength()) * 100; - UpdateProgressLog(progress); - } -} - -void FPlatformDownloadTask::OnRequestDownloadProgress(FHttpRequestPtr HttpRequest, int32 BytesSend, int32 InBytesReceived) -{ - OnRequestDownloadProgress64(HttpRequest, BytesSend, InBytesReceived); -} - -void FPlatformDownloadTask::OnDownloadRequestComplete(FHttpRequestPtr HttpRequest, FHttpResponsePtr HttpResponse, bool bSucceeded) -{ - // Extract data from HTTP response and trigger download complete event - if (bSucceeded && HttpResponse.IsValid()) - { - httpData = HttpResponse->GetContent(); - downloadCompleteEvent->Trigger(); - } -} - -//======================================================================================= -// FPlatformUploadTask - -FPlatformUploadTask::FPlatformUploadTask(FString args, FEnableUploadButtonDel del, FUpdateLogTextDel textDel, FSetProcessDel procDel) -{ - LaunchArgs = args; - EnableUploadButton = del; - UpdateLogText = textDel; - SetProcess = procDel; - - EnableUploadButton.Execute(false); -} - -void FPlatformUploadTask::DoWork() -{ - // Check if the platform tool exists in the project directory. If not, start process to download it. - if (!FPaths::FileExists(FPaths::ProjectContentDir() + ProjectPlatformUtilPath)) - { - FEvent* PlatformToolCreatedEvent = FGenericPlatformProcess::GetSynchEventFromPool(false); - - UpdateLogText.Execute(SOculusPlatformToolWidget::LogText + LOCTEXT("NoCLI", "Unable to find Oculus Platform Utility.\n").ToString()); -#if UE_VERSION_OLDER_THAN(5, 3, 0) - EAppReturnType::Type dialogChoice = FMessageDialog::Open(EAppMsgType::OkCancel, OculusPlatformDialogMessage, &OculusPlatformDialogTitle); -#else - EAppReturnType::Type dialogChoice = FMessageDialog::Open(EAppMsgType::OkCancel, OculusPlatformDialogMessage, OculusPlatformDialogTitle); -#endif - if (dialogChoice == EAppReturnType::Ok) - { - UpdateLogText.Execute(SOculusPlatformToolWidget::LogText + LOCTEXT("DownloadCLI", "Downloading Oculus Platform Utility . . .\n").ToString()); - (new FAsyncTask(UpdateLogText, PlatformToolCreatedEvent))->StartBackgroundTask(); - PlatformToolCreatedEvent->Wait(); - } - else - { - return; - } - - UpdateLogText.Execute(SOculusPlatformToolWidget::LogText + LOCTEXT("StartUploadAfterDownload", "Starting upload . . .\n").ToString()); - } - - // Start up the CLI and pass in arguments. - FPlatformProcess::CreatePipe(ReadPipe, WritePipe); - FProcHandle PlatformProcess = FPlatformProcess::CreateProc(*(FPaths::ProjectContentDir() + ProjectPlatformUtilPath), *LaunchArgs, false, true, true, nullptr, 0, nullptr, WritePipe, ReadPipe); - SetProcess.Execute(PlatformProcess); - - // Redirect CLI output to the tool's log. - while (FPlatformProcess::IsProcRunning(PlatformProcess)) - { - FString log = FPlatformProcess::ReadPipe(ReadPipe); - if (!log.IsEmpty()) - { - // Remove parts of the log that contain escape character codes - int32 escapeIndex = log.Find("\u001b"); - while (escapeIndex >= 0) - { - int32 lineEndIndex = log.Find("\n", ESearchCase::IgnoreCase, ESearchDir::FromStart, escapeIndex); - if (lineEndIndex < 0) // If an escape character code exists without a new line end, just remove the escape character - { - lineEndIndex = escapeIndex + 1; - } - log.RemoveAt(escapeIndex, lineEndIndex - escapeIndex); - escapeIndex = log.Find("\u001b"); - } - UpdateLogText.Execute(SOculusPlatformToolWidget::LogText + log); - } - } - EnableUploadButton.Execute(true); -} - -//======================================================================================= -// FPlatformLoadRedistPackagesTask - -FPlatformLoadRedistPackagesTask::FPlatformLoadRedistPackagesTask(FUpdateLogTextDel textDel) -{ - UpdateLogText = textDel; -} - -void FPlatformLoadRedistPackagesTask::DoWork() -{ - UOculusXRPlatformToolSettings* PlatformSettings = GetMutableDefault(); - - // Check to see if the CLI exists, we need this to load avalible redist packages - if (!FPaths::FileExists(FPaths::ProjectContentDir() + ProjectPlatformUtilPath)) - { - UpdateLogText.Execute(SOculusPlatformToolWidget::LogText + LOCTEXT("LoadRedist", "Loading redistributable packages . . .\n").ToString()); - - FEvent* PlatformToolCreatedEvent = FGenericPlatformProcess::GetSynchEventFromPool(false); - - UpdateLogText.Execute(SOculusPlatformToolWidget::LogText + LOCTEXT("NoCLI", "Unable to find Oculus Platform Utility.\n").ToString()); -#if UE_VERSION_OLDER_THAN(5, 3, 0) - EAppReturnType::Type dialogChoice = FMessageDialog::Open(EAppMsgType::OkCancel, OculusPlatformDialogMessage, &OculusPlatformDialogTitle); -#else - EAppReturnType::Type dialogChoice = FMessageDialog::Open(EAppMsgType::OkCancel, OculusPlatformDialogMessage, OculusPlatformDialogTitle); -#endif - if (dialogChoice == EAppReturnType::Ok) - { - UpdateLogText.Execute(SOculusPlatformToolWidget::LogText + LOCTEXT("DownloadCLI", "Downloading Oculus Platform Utility . . .\n").ToString()); - (new FAsyncTask(UpdateLogText, PlatformToolCreatedEvent))->StartBackgroundTask(); - PlatformToolCreatedEvent->Wait(); - } - else - { - return; - } - } - - // Launch CLI and pass command to list out redist packages currently avalible - TArray LoadedPackages; - FString Args = "list-redists"; - FPlatformProcess::CreatePipe(ReadPipe, WritePipe); - FProcHandle PlatformProcess = FPlatformProcess::CreateProc(*(FPaths::ProjectContentDir() + ProjectPlatformUtilPath), *Args, false, true, true, nullptr, 0, nullptr, WritePipe, ReadPipe); - - // Load redist packages - while (FPlatformProcess::IsProcRunning(PlatformProcess)) - { - FString log = FPlatformProcess::ReadPipe(ReadPipe); - if (!log.IsEmpty() && !log.Contains("\u001b") && !log.Contains("ID")) - { - TArray Packages; - log.ParseIntoArrayLines(Packages); - if (Packages.Num() > 0) - { - for (int i = 0; i < Packages.Num(); i++) - { - FString id, name; - Packages[i].Split("|", &id, &name); - - if (!id.IsEmpty() && !name.IsEmpty()) - { - FOculusXRRedistPackage newPackage; - newPackage.Name = name; - newPackage.Id = id; - - LoadedPackages.Add(newPackage); - } - } - } - } - } - - // Check to see if our stored copy of redist packages is outdated - if (PlatformSettings != nullptr) - { - if (LoadedPackages.Num() > PlatformSettings->OculusRedistPackages.Num()) - { - PlatformSettings->OculusRedistPackages = LoadedPackages; - PlatformSettings->TryUpdateDefaultConfigFile(); - UpdateLogText.Execute(SOculusPlatformToolWidget::LogText + LOCTEXT("FinishRedistLoad", "Finished updating redistributable packages.\n").ToString()); - } - } -} - -#undef LOCTEXT_NAMESPACE diff --git a/Plugins/MetaXR/Source/OculusXREditor/Private/OculusXRPlatformToolWidget.h b/Plugins/MetaXR/Source/OculusXREditor/Private/OculusXRPlatformToolWidget.h deleted file mode 100644 index d526a75..0000000 --- a/Plugins/MetaXR/Source/OculusXREditor/Private/OculusXRPlatformToolWidget.h +++ /dev/null @@ -1,223 +0,0 @@ -// @lint-ignore-every LICENSELINT -// Copyright Epic Games, Inc. All Rights Reserved. -#pragma once - -#include "CoreMinimal.h" -#include "OculusXRPlatformToolSettings.h" -#include "Widgets/SWidget.h" -#include "Widgets/SCompoundWidget.h" -#include "Widgets/DeclarativeSyntaxSupport.h" -#include "Widgets/Input/SEditableTextBox.h" -#include "Widgets/Input/SMultiLineEditableTextBox.h" -#include "Widgets/Input/SComboBox.h" -#include "Widgets/Input/STextComboBox.h" -#include "Widgets/Layout/SScrollBox.h" -#include "Widgets/Input/SButton.h" -#include "Widgets/Input/SCheckBox.h" -#include "Engine/PostProcessVolume.h" -#include "Framework/Text/SlateHyperlinkRun.h" -#include "HttpModule.h" -#include "HttpManager.h" -#include "Interfaces/IHttpResponse.h" -#include "Async/AsyncWork.h" -#include "HAL/Event.h" -#include "HAL/ThreadSafeBool.h" -#include "OculusXRPluginWrapper.h" -#include "Brushes/SlateDynamicImageBrush.h" - -class SOculusPlatformToolWidget; - -// Function Delegates -DECLARE_DELEGATE_OneParam(FEnableUploadButtonDel, bool); -DECLARE_DELEGATE_OneParam(FUpdateLogTextDel, FString); -DECLARE_DELEGATE_OneParam(FSetProcessDel, FProcHandle); -DECLARE_DELEGATE_RetVal_TwoParams(bool, FFieldValidatorDel, FString, FString&); - -class SOculusPlatformToolWidget : public SCompoundWidget -{ -public: - typedef void (SOculusPlatformToolWidget::*PTextComboBoxDel)(TSharedPtr, ESelectInfo::Type); - typedef void (SOculusPlatformToolWidget::*PTextComittedDel)(const FText&, ETextCommit::Type); - typedef FReply (SOculusPlatformToolWidget::*PButtonClickedDel)(); - typedef bool (SOculusPlatformToolWidget::*PFieldValidatorDel)(FString, FString&); - typedef void (SOculusPlatformToolWidget::*PCheckBoxChangedDel)(ECheckBoxState); - - SLATE_BEGIN_ARGS(SOculusPlatformToolWidget) - { - } - SLATE_END_ARGS(); - - SOculusPlatformToolWidget(); - void Construct(const FArguments& InArgs); - virtual void Tick(const FGeometry& AllottedGeometry, const double InCurrentTime, const float InDeltaTime) override; - - static FString LogText; - -private: - TSharedPtr ToolConsoleLog; - TSharedPtr GeneralSettingsBox; - TSharedPtr ButtonToolbar; - TSharedPtr OptionalSettings; - TSharedPtr ExpansionFilesSettings; - TSharedPtr ODHIconDynamicImageBrush; - - UEnum* PlatformEnum; - UEnum* GamepadEmulationEnum; - UEnum* AssetTypeEnum; - UOculusXRPlatformToolSettings* PlatformSettings; - TArray> OculusPlatforms; - TArray> RiftGamepadEmulation; - TArray> AssetType; - - bool Options2DCollapsed; - bool OptionsRedistPackagesCollapsed; - bool ActiveUploadButton; - bool RequestUploadButtonActive; - FProcHandle PlatformProcess; - FThreadSafeBool LogTextUpdated; - - FEnableUploadButtonDel EnableUploadButtonDel; - FUpdateLogTextDel UpdateLogTextDel; - FSetProcessDel SetProcessDel; - - // Callbacks - FReply OnStartPlatformUpload(); - FReply OnSelectRiftBuildDirectory(); - FReply OnClearRiftBuildDirectory(); - FReply OnSelectLaunchFilePath(); - FReply OnClearLaunchFilePath(); - FReply OnSelectSymbolDirPath(); - FReply OnClearSymbolDirPath(); - FReply OnSelect2DLaunchPath(); - FReply OnClear2DLaunchPath(); - FReply OnCancelUpload(); - FReply OnSelectLanguagePacksPath(); - FReply OnClearLanguagePacksPath(); - FReply OnSelectExpansionFilesPath(); - FReply OnClearExpansionFilesPath(); - - FString GenerateSymbolPath(); - - void OnPlatformSettingChanged(TSharedPtr ItemSelected, ESelectInfo::Type SelectInfo); - void OnApplicationIDChanged(const FText& InText, ETextCommit::Type InCommitType); - void OnApplicationTokenChanged(const FText& InText, ETextCommit::Type InCommitType); - void OnReleaseChannelChanged(const FText& InText, ETextCommit::Type InCommitType); - void OnReleaseNoteChanged(const FText& InText, ETextCommit::Type InCommitType); - void OnRiftBuildVersionChanged(const FText& InText, ETextCommit::Type InCommitType); - void OnRiftLaunchParamsChanged(const FText& InText, ETextCommit::Type InCommitType); - void OnRiftFirewallChanged(ECheckBoxState CheckState); - void OnRedistPackageStateChanged(ECheckBoxState CheckState, FOculusXRRedistPackage* Package); - void OnRiftGamepadEmulationChanged(TSharedPtr ItemSelected, ESelectInfo::Type SelectInfo); - void On2DLaunchParamsChanged(const FText& InText, ETextCommit::Type InCommitType); - void On2DOptionsExpanded(bool bExpanded); - void OnRedistPackagesExpanded(bool bExpanded); - void OnAssetConfigRequiredChanged(ECheckBoxState CheckState, int i); - void OnAssetConfigTypeChanged(TSharedPtr ItemSelected, ESelectInfo::Type SelectInfo, int i); - void OnAssetConfigSKUChanged(const FText& InText, ETextCommit::Type InCommitType, int i); - void OnUploadDebugSymbolsChanged(ECheckBoxState CheckState); - void OnDebugSymbolsOnlyChanged(ECheckBoxState CheckState); - void OnBuildIDChanged(const FText& InText, ETextCommit::Type InCommitType); - - // UI Constructors - void BuildGeneralSettingsBox(TSharedPtr box); - void BuildTextComboBoxField(TSharedPtr box, FText name, TArray>* options, TSharedPtr current, PTextComboBoxDel deleg, int32 indentAmount = 0); - void BuildTextField(TSharedPtr box, FText name, FText text, FText tooltip, PTextComittedDel deleg, bool isPassword = false, int32 indentAmount = 0); - void BuildFileDirectoryField(TSharedPtr box, FText name, FText path, FText tooltip, PButtonClickedDel deleg, PButtonClickedDel clearDeleg, int32 indentAmount = 0); - void BuildCheckBoxField(TSharedPtr box, FText name, bool check, FText tooltip, PCheckBoxChangedDel deleg, int32 indentAmount = 0); - void BuildButtonToolbar(TSharedPtr box); - void BuildRiftOptionalFields(TSharedPtr area); - void BuildRedistPackagesBox(TSharedPtr box); - void BuildExpansionFileBox(TSharedPtr box); - void BuildAssetConfigBox(TSharedPtr box, FOculusXRAssetConfig config, int index); - - // Text Field Validators - void ValidateTextField(PFieldValidatorDel del, FString text, FString name, bool& success); - bool GenericFieldValidator(FString text, FString& error); - bool IDFieldValidator(FString text, FString& error); - bool DirectoryFieldValidator(FString text, FString& error); - bool FileFieldValidator(FString text, FString& error); - bool LaunchParamValidator(FString text, FString& error); - - bool ConstructArguments(FString& args); - bool ConstructDebugSymbolArguments(FString& args); - void EnableUploadButton(bool enabled); - void LoadConfigSettings(); - void UpdateLogText(FString text); - void SetPlatformProcess(FProcHandle proc); - void LoadRedistPackages(); -}; - -class FPlatformDownloadTask : public FNonAbandonableTask -{ - friend class FAsyncTask; - -private: - FUpdateLogTextDel UpdateLogText; - FString ToolConsoleLog; - FEvent* downloadCompleteEvent; - FEvent* SaveCompleteEvent; - TArray httpData; - -public: - FPlatformDownloadTask(FUpdateLogTextDel textDel, FEvent* saveEvent); - - void OnDownloadRequestComplete(FHttpRequestPtr HttpRequest, FHttpResponsePtr HttpResponse, bool bSucceeded); - void OnRequestDownloadProgress64(FHttpRequestPtr HttpRequest, uint64 BytesSend, uint64 InBytesReceived); - void OnRequestDownloadProgress(FHttpRequestPtr HttpRequest, int32 BytesSend, int32 InBytesReceived); - -protected: - void DoWork(); - void UpdateProgressLog(int progress); - - FORCEINLINE TStatId GetStatId() const - { - RETURN_QUICK_DECLARE_CYCLE_STAT(FPlatformDownloadTask, STATGROUP_ThreadPoolAsyncTasks); - } -}; - -class FPlatformUploadTask : public FNonAbandonableTask -{ - friend class FAsyncTask; - -public: - FPlatformUploadTask(FString args, FEnableUploadButtonDel del, FUpdateLogTextDel textDel, FSetProcessDel procDel); - -private: - void* ReadPipe; - void* WritePipe; - - FSetProcessDel SetProcess; - FUpdateLogTextDel UpdateLogText; - FEnableUploadButtonDel EnableUploadButton; - FString LaunchArgs; - -protected: - void DoWork(); - - FORCEINLINE TStatId GetStatId() const - { - RETURN_QUICK_DECLARE_CYCLE_STAT(FPlatformUploadTask, STATGROUP_ThreadPoolAsyncTasks); - } -}; - -class FPlatformLoadRedistPackagesTask : public FNonAbandonableTask -{ - friend class FAsyncTask; - -public: - FPlatformLoadRedistPackagesTask(FUpdateLogTextDel textDel); - -private: - void* ReadPipe; - void* WritePipe; - - FUpdateLogTextDel UpdateLogText; - -protected: - void DoWork(); - - FORCEINLINE TStatId GetStatId() const - { - RETURN_QUICK_DECLARE_CYCLE_STAT(FPlatformLoadRedistPackagesTask, STATGROUP_ThreadPoolAsyncTasks); - } -}; diff --git a/Plugins/MetaXR/Source/OculusXREditor/Private/OculusXRPrivacyNotification.cpp b/Plugins/MetaXR/Source/OculusXREditor/Private/OculusXRPrivacyNotification.cpp deleted file mode 100644 index 09d7eed..0000000 --- a/Plugins/MetaXR/Source/OculusXREditor/Private/OculusXRPrivacyNotification.cpp +++ /dev/null @@ -1,316 +0,0 @@ -// Copyright (c) Meta Platforms, Inc. and affiliates. - -#include "OculusXRPrivacyNotification.h" - -#include - -#include "ISettingsModule.h" -#include "Framework/Notifications/NotificationManager.h" -#include "Widgets/Notifications/SNotificationList.h" - -#include "OculusXRHMDModule.h" -#include "OculusXRTelemetry.h" -#include "OculusXRToolStyle.h" -#include "Interfaces/IMainFrameModule.h" -#include "Widgets/Notifications/INotificationWidget.h" -#include "Widgets/Text/SRichTextBlock.h" -#include "Widgets/Input/SButton.h" -#include "Widgets/Layout/SBox.h" -#include "Widgets/Images/SImage.h" -#include "Framework/Application/SlateApplication.h" -#include "OculusXRTelemetryPrivacySettings.h" - -#define LOCTEXT_NAMESPACE "OculusXRTelemetryPrivacySettings" - -namespace OculusXRTelemetry -{ - namespace - { - constexpr int CONSENT_TITLE_MAX_LENGTH = 256; - constexpr int CONSENT_TEXT_MAX_LENGTH = 2048; - constexpr int CONSENT_NOTIFICATION_MAX_LENGTH = 1024; - - void OnBrowserLinkClicked(const FSlateHyperlinkRun::FMetadata& Metadata) - { - const FString* Url = Metadata.Find(TEXT("href")); - if (Url) - { - FPlatformProcess::LaunchURL(**Url, nullptr, nullptr); - } - } - - void UpdateNotificationShown() - { - FOculusXRHMDModule::GetPluginWrapper().SetNotificationShown(UNREAL_TOOL_ID); - } - - std::string MarkdownToRTF(const std::string& markdown) - { - const std::regex boldText(R"(\*\*(.*?)\*\*)"); - const std::string boldReplacement = "$1"; - - std::string rtf = ""; - rtf = std::regex_replace(markdown, boldText, boldReplacement); - - const std::regex linkRegex(R"(\[(.*?)\]\((.*?)\))"); - const std::string linkReplacement = "$1"; - rtf = std::regex_replace(rtf, linkRegex, linkReplacement); - return rtf; - } - } // namespace - - class SOculusXRPrivacyNotification : public SCompoundWidget, public INotificationWidget - { - public: - SLATE_BEGIN_ARGS(SOculusXRPrivacyNotification) {} - SLATE_ARGUMENT(std::string, ConsentText); - /** Invoked when any button is clicked, needed for fading out notification */ - SLATE_EVENT(FSimpleDelegate, OnClicked) - SLATE_END_ARGS() - - void Construct(const FArguments& InArgs) - { - OnClicked = InArgs._OnClicked; - - // Container for the text and optional interactive widgets (buttons, check box, and hyperlink) - TSharedRef InteractiveWidgetsBox = SNew(SVerticalBox); - - InteractiveWidgetsBox->AddSlot() - .Padding(FMargin(0.0f, 10.0f, 0.0f, 2.0f)) - .AutoHeight() - [SNew(SRichTextBlock) - .Text(FText::FromString(MarkdownToRTF(InArgs._ConsentText).data())) - .AutoWrapText(true) - + SRichTextBlock::HyperlinkDecorator(TEXT("browser"), FSlateHyperlinkRun::FOnClick::CreateStatic(&OnBrowserLinkClicked)) - + SRichTextBlock::HyperlinkDecorator(TEXT("PrivacySettings"), FSlateHyperlinkRun::FOnClick::CreateRaw(this, &SOculusXRPrivacyNotification::OpenPrivacySettings))]; - - ChildSlot - [SNew(SBox) - [SNew(SHorizontalBox) - + SHorizontalBox::Slot() - .AutoWidth() - .VAlign(VAlign_Top) - .HAlign(HAlign_Left) - [SNew(SOverlay) - + SOverlay::Slot() - .VAlign(VAlign_Center) - .HAlign(HAlign_Center) - [SNew(SImage) - .Image(FOculusToolStyle::Get().GetBrush("OculusTool.MetaLogo")) - .DesiredSizeOverride(FVector2D(32, 32))]] - + SHorizontalBox::Slot() - .Padding(10.f, 0.f, 5.f, 0.f) - [InteractiveWidgetsBox] - + SHorizontalBox::Slot() - .AutoWidth() - .VAlign(VAlign_Top) - .HAlign(HAlign_Right) - [SNew(SButton) - .Cursor(EMouseCursor::Default) - .ButtonStyle(FAppStyle::Get(), "SimpleButton") - .ContentPadding(0.0f) - .OnClicked(this, &SOculusXRPrivacyNotification::CloseButtonClicked) - .Content() - [SNew(SImage) - .Image(FAppStyle::GetBrush("Icons.X")) - .ColorAndOpacity(FSlateColor::UseForeground())]]]]; - } - - private: - virtual TSharedRef AsWidget() override - { - return AsShared(); - } - - virtual void OnSetCompletionState(SNotificationItem::ECompletionState InState) override - { - if (InState == SNotificationItem::ECompletionState::CS_Success) - { - UpdateNotificationShown(); - } - } - - FReply CloseButtonClicked() - { - OnClicked.ExecuteIfBound(); - return FReply::Handled(); - } - - void OpenPrivacySettings(const FSlateHyperlinkRun::FMetadata& /*Metadata*/) const - { - OnClicked.ExecuteIfBound(); - FModuleManager::LoadModuleChecked("Settings").ShowViewer(FName("Editor"), FName("Privacy"), FName("OculusXR")); - } - - FSimpleDelegate OnClicked; - }; - - class SOculusTelemetryWindow : public SCompoundWidget - { - SLATE_BEGIN_ARGS(SOculusTelemetryWindow) {} - SLATE_ARGUMENT(std::string, ConsentText); - SLATE_END_ARGS() - - /** Construct the slate layout for the widget */ - void Construct(const FArguments& InArgs) - { - TSharedPtr RootContainer = SNew(SVerticalBox); - const TSharedPtr ButtonsWidget = SNew(SHorizontalBox); - - ButtonsWidget->AddSlot() - [SNew(SHorizontalBox) - + SHorizontalBox::Slot() - [SNew(SButton) - .HAlign(HAlign_Center) - .VAlign(VAlign_Center) - .ContentPadding(5) - .OnClicked(this, &SOculusTelemetryWindow::OnNotShareClicked) - .Text(LOCTEXT("NotShare", "Only share essential data"))]]; - - ButtonsWidget->AddSlot() - [SNew(SHorizontalBox) - + SHorizontalBox::Slot() - [SNew(SButton) - .HAlign(HAlign_Center) - .VAlign(VAlign_Center) - .ContentPadding(5) - .OnClicked(this, &SOculusTelemetryWindow::OnShareClicked) - .ButtonStyle(&FAppStyle::Get().GetWidgetStyle("PrimaryButton")) - .Text(LOCTEXT("Share", "Share additional data"))]]; - - // Construct the text widget - const TSharedPtr TextWidget = SNew(SVerticalBox); - - TextWidget->AddSlot() - .AutoHeight() - [SNew(SRichTextBlock) - .AutoWrapText(true) - .Text(FText::FromString(MarkdownToRTF(InArgs._ConsentText).data())) - .DecoratorStyleSet(&FAppStyle::Get()) - + SRichTextBlock::HyperlinkDecorator(TEXT("browser"), FSlateHyperlinkRun::FOnClick::CreateStatic(&OnBrowserLinkClicked))]; - - RootContainer->AddSlot() - [SNew(SVerticalBox) - + SVerticalBox::Slot() - .Padding(20, 20, 20, 20) - .VAlign(VAlign_Center) - [TextWidget.ToSharedRef()]]; - - RootContainer->AddSlot() - [SNew(SVerticalBox) - + SVerticalBox::Slot() - .Padding(20, 20) - .VAlign(VAlign_Bottom) - [ButtonsWidget.ToSharedRef()]]; - ChildSlot - [SNew(SBox) - .WidthOverride(960) - [RootContainer.ToSharedRef()]]; - } - - private: - FReply OnShareClicked() - { - FOculusXRHMDModule::GetPluginWrapper().SaveUnifiedConsent(UNREAL_TOOL_ID, ovrpBool_True); - if (UOculusXRTelemetryPrivacySettings* EditorPrivacySettings = GetMutableDefault()) - { - EditorPrivacySettings->bIsEnabled = true; - } - PropagateTelemetryConsent(); - FSlateApplication::Get().FindWidgetWindow(AsShared())->RequestDestroyWindow(); - return FReply::Handled(); - } - - FReply OnNotShareClicked() - { - FOculusXRHMDModule::GetPluginWrapper().SaveUnifiedConsent(UNREAL_TOOL_ID, ovrpBool_False); - if (UOculusXRTelemetryPrivacySettings* EditorPrivacySettings = GetMutableDefault()) - { - EditorPrivacySettings->bIsEnabled = false; - } - PropagateTelemetryConsent(); - FSlateApplication::Get().FindWidgetWindow(AsShared())->RequestDestroyWindow(); - return FReply::Handled(); - } - }; - - void SpawnFullConsentWindow() - { - if (FSlateApplication::Get().IsRenderingOffScreen()) - { - return; - } - - char TelemetryWindowTitle[CONSENT_TITLE_MAX_LENGTH]; - char ConsentText[CONSENT_TEXT_MAX_LENGTH]; - if (FOculusXRHMDModule::GetPluginWrapper().GetConsentTitle(TelemetryWindowTitle) == ovrpFailure || FOculusXRHMDModule::GetPluginWrapper().GetConsentMarkdownText(ConsentText) == ovrpFailure) - { - return; - } - - std::string Title(TelemetryWindowTitle); - std::string MarkdownText(ConsentText); - - IMainFrameModule::Get().OnMainFrameCreationFinished().AddLambda([Title, MarkdownText](const TSharedPtr& RootWindow, bool /*bIsRunningStartupDialog*/) { - const TSharedRef Window = SNew(SWindow) - .Title(FText::FromString(Title.c_str())) - .SizingRule(ESizingRule::Autosized) - .SupportsMaximize(false) - .SupportsMinimize(false)[SNew(SOculusTelemetryWindow).ConsentText(MarkdownText)]; - - FSlateApplication::Get().AddModalWindow(Window, RootWindow); - }); - } - - void SpawnNotification() - { - char NotificationText[CONSENT_NOTIFICATION_MAX_LENGTH]; - if (FOculusXRHMDModule::GetPluginWrapper().GetConsentNotificationMarkdownText("Settings", NotificationText) == ovrpFailure) - { - return; - } - TPromise> BtnNotificationPromise; - const auto OnClicked = [NotificationFuture = BtnNotificationPromise.GetFuture().Share()]() { - const TSharedPtr Notification = NotificationFuture.Get(); - Notification->SetCompletionState(SNotificationItem::CS_Success); - Notification->Fadeout(); - }; - - FNotificationInfo Info(SNew(SOculusXRPrivacyNotification).OnClicked_Lambda(OnClicked).ConsentText(NotificationText)); - Info.ExpireDuration = 60.0f; - - const TSharedPtr PrivacyNotification = FSlateNotificationManager::Get().AddNotification(Info); - if (PrivacyNotification.IsValid()) - { - PrivacyNotification->SetCompletionState(SNotificationItem::CS_Pending); - BtnNotificationPromise.SetValue(PrivacyNotification); - } - } - - void MaybeSpawnTelemetryConsent() - { - if (!FOculusXRHMDModule::Get().IsOVRPluginAvailable() || !FOculusXRHMDModule::GetPluginWrapper().IsInitialized()) - { - return; - } - - if (!FModuleManager::Get().IsModuleLoaded("MainFrame")) - { - return; - } - - const auto& PluginWrapper = FOculusXRHMDModule::GetPluginWrapper(); - - if (PluginWrapper.ShouldShowTelemetryConsentWindow(UNREAL_TOOL_ID)) - { - SpawnFullConsentWindow(); - } - - if (PluginWrapper.ShouldShowTelemetryNotification(UNREAL_TOOL_ID)) - { - SpawnNotification(); - } - } -} // namespace OculusXRTelemetry - -#undef LOCTEXT_NAMESPACE diff --git a/Plugins/MetaXR/Source/OculusXREditor/Private/OculusXRPrivacyNotification.h b/Plugins/MetaXR/Source/OculusXREditor/Private/OculusXRPrivacyNotification.h deleted file mode 100644 index dd254e9..0000000 --- a/Plugins/MetaXR/Source/OculusXREditor/Private/OculusXRPrivacyNotification.h +++ /dev/null @@ -1,7 +0,0 @@ -// Copyright (c) Meta Platforms, Inc. and affiliates. - -#pragma once -namespace OculusXRTelemetry -{ - void MaybeSpawnTelemetryConsent(); -} // namespace OculusXRTelemetry diff --git a/Plugins/MetaXR/Source/OculusXREditor/Private/OculusXRSettingsToggle.cpp b/Plugins/MetaXR/Source/OculusXREditor/Private/OculusXRSettingsToggle.cpp deleted file mode 100644 index faeb504..0000000 --- a/Plugins/MetaXR/Source/OculusXREditor/Private/OculusXRSettingsToggle.cpp +++ /dev/null @@ -1,215 +0,0 @@ - -// @lint-ignore-every LICENSELINT -// Copyright Epic Games, Inc. All Rights Reserved. - -#include "OculusXRSettingsToggle.h" - -#include "Containers/Array.h" -#include "Delegates/Delegate.h" -#include "DetailCategoryBuilder.h" -#include "DetailLayoutBuilder.h" -#include "DetailWidgetRow.h" -#include "Engine/ImportantToggleSettingInterface.h" -#include "Fonts/SlateFontInfo.h" -#include "HAL/PlatformProcess.h" -#include "IDetailPropertyRow.h" -#include "OculusXRHMDModule.h" -#include "OculusXRTelemetry.h" -#include "Layout/Children.h" -#include "Layout/Margin.h" -#include "Misc/Attribute.h" -#include "PropertyHandle.h" -#include "SlotBase.h" -#include "Styling/AppStyle.h" -#include "Styling/SlateColor.h" -#include "Styling/SlateTypes.h" -#include "Templates/Casts.h" -#include "Types/SlateEnums.h" -#include "UObject/NameTypes.h" -#include "UObject/Object.h" -#include "Widgets/DeclarativeSyntaxSupport.h" -#include "Widgets/Input/SCheckBox.h" -#include "Widgets/Input/SHyperlink.h" -#include "Widgets/SBoxPanel.h" -#include "Widgets/SCompoundWidget.h" -#include "Widgets/Text/STextBlock.h" - -#define LOCTEXT_NAMESPACE "OculusXRSettingsToggle" - -class SImportantToggleButton : public SCompoundWidget -{ -public: - SLATE_BEGIN_ARGS(SImportantToggleButton) - : _Text() - { - } - - SLATE_STYLE_ARGUMENT(FCheckBoxStyle, CheckBoxStyle) - SLATE_ARGUMENT(FText, Text) - SLATE_ARGUMENT(FText, ToolTipText) - SLATE_ATTRIBUTE(bool, IsSet) - SLATE_EVENT(FSimpleDelegate, OnToggled) - - SLATE_END_ARGS() - - void Construct(const FArguments& InArgs) - { - OnToggled = InArgs._OnToggled; - IsSetAttribute = InArgs._IsSet; - - FSlateFontInfo LargeDetailsFont = IDetailLayoutBuilder::GetDetailFontBold(); - LargeDetailsFont.Size += 4; - - ChildSlot - [SNew(SCheckBox) - .Style(InArgs._CheckBoxStyle) - .IsChecked(this, &SImportantToggleButton::GetCheckedState) - .OnCheckStateChanged(this, &SImportantToggleButton::OnClick) - .ToolTipText(InArgs._ToolTipText) - .Padding(FMargin(16.0f, 12.0f)) - .ForegroundColor(FSlateColor::UseForeground()) - .IsFocusable(true) - [SNew(STextBlock) - .Text(InArgs._Text) - .Font(LargeDetailsFont)]]; - } - -private: - void OnClick(ECheckBoxState State) - { - OnToggled.ExecuteIfBound(); - } - - ECheckBoxState GetCheckedState() const - { - return IsSetAttribute.Get() ? ECheckBoxState::Checked : ECheckBoxState::Unchecked; - } - - TAttribute IsSetAttribute; - FSimpleDelegate OnToggled; -}; - -TSharedRef FOculusXRSettingsToggle::MakeInstance() -{ - return MakeShareable(new FOculusXRSettingsToggle); -} - -void FOculusXRSettingsToggle::CustomizeDetails(IDetailLayoutBuilder& DetailBuilder) -{ - if (!ToggleEnabled.IsSet() && FOculusXRHMDModule::Get().IsOVRPluginAvailable() && FOculusXRHMDModule::GetPluginWrapper().IsInitialized()) - { - ToggleEnabled = FOculusXRHMDModule::GetPluginWrapper().IsConsentSettingsChangeEnabled(OculusXRTelemetry::UNREAL_TOOL_ID) == ovrpBool_True; - } - - TArray> Objects; - DetailBuilder.GetObjectsBeingCustomized(Objects); - - if (Objects.Num() == 1) - { - ToggleSettingObject = Objects[0]; - IImportantToggleSettingInterface* ToggleSettingInterface = Cast(ToggleSettingObject.Get()); - - if (ToggleSettingInterface != nullptr) - { - FName CategoryName; - FName PropertyName; - ToggleSettingInterface->GetToggleCategoryAndPropertyNames(CategoryName, PropertyName); - - IDetailCategoryBuilder& Category = DetailBuilder.EditCategory(CategoryName); - TogglePropertyHandle = DetailBuilder.GetProperty(PropertyName); - - FSlateFontInfo StateDescriptionFont = IDetailLayoutBuilder::GetDetailFont(); - StateDescriptionFont.Size += 4; - - // Customize collision section - Category.InitiallyCollapsed(false) - .AddProperty(TogglePropertyHandle) - .ShouldAutoExpand(true) - .CustomWidget() - [SNew(SVerticalBox) - + SVerticalBox::Slot() - .AutoHeight() - .Padding(0.0f, 12.0f, 0.0f, 0.0f) - [SNew(SHorizontalBox) - + SHorizontalBox::Slot() - .AutoWidth() - [SNew(SImportantToggleButton) - .CheckBoxStyle(FAppStyle::Get(), "Property.ToggleButton.Start") - .Text(ToggleSettingInterface->GetFalseStateLabel()) - .ToolTipText(ToggleSettingInterface->GetFalseStateTooltip()) - .IsSet(this, &FOculusXRSettingsToggle::IsToggleValue, false) - .OnToggled(this, &FOculusXRSettingsToggle::OnToggledTo, false) - .IsEnabled(this, &FOculusXRSettingsToggle::IsEnabled)] - + SHorizontalBox::Slot() - .AutoWidth() - [SNew(SImportantToggleButton) - .CheckBoxStyle(FAppStyle::Get(), "Property.ToggleButton.End") - .Text(ToggleSettingInterface->GetTrueStateLabel()) - .ToolTipText(ToggleSettingInterface->GetTrueStateTooltip()) - .IsSet(this, &FOculusXRSettingsToggle::IsToggleValue, true) - .OnToggled(this, &FOculusXRSettingsToggle::OnToggledTo, true) - .IsEnabled(this, &FOculusXRSettingsToggle::IsEnabled)] - + SHorizontalBox::Slot() - .HAlign(HAlign_Right) - .Padding(0.0f, 12.0f) - [SNew(SVerticalBox) - + SVerticalBox::Slot() - .VAlign(VAlign_Center) - [SNew(SHyperlink) - .Text(ToggleSettingInterface->GetAdditionalInfoUrlLabel()) - .OnNavigate(this, &FOculusXRSettingsToggle::OnNavigateHyperlink, ToggleSettingInterface->GetAdditionalInfoUrl())]]] - + SVerticalBox::Slot() - .AutoHeight() - .Padding(0.0f, 12.0f) - [SNew(STextBlock) - .AutoWrapText(true) - .Text(this, &FOculusXRSettingsToggle::GetDescriptionText) - .Font(StateDescriptionFont)]]; - } - } -} - -bool FOculusXRSettingsToggle::IsToggleValue(bool bValue) const -{ - bool bPropertyValue = false; - TogglePropertyHandle->GetValue(bPropertyValue); - return bPropertyValue == bValue; -} - -bool FOculusXRSettingsToggle::IsEnabled() const -{ - return ToggleEnabled.IsSet() && ToggleEnabled.GetValue(); -} - -void FOculusXRSettingsToggle::OnToggledTo(bool bSetTo) -{ - TogglePropertyHandle->SetValue(bSetTo); -} - -void FOculusXRSettingsToggle::OnNavigateHyperlink(FString Url) -{ - FPlatformProcess::LaunchURL(*Url, nullptr, nullptr); -} - -FText FOculusXRSettingsToggle::GetDescriptionText() const -{ - IImportantToggleSettingInterface* ToogleSettingInterface = Cast(ToggleSettingObject.Get()); - - if (ToogleSettingInterface != nullptr) - { - bool bPropertyValue = false; - TogglePropertyHandle->GetValue(bPropertyValue); - - if (bPropertyValue) - { - return ToogleSettingInterface->GetTrueStateDescription(); - } - else - { - return ToogleSettingInterface->GetFalseStateDescription(); - } - } - return FText::GetEmpty(); -} - -#undef LOCTEXT_NAMESPACE diff --git a/Plugins/MetaXR/Source/OculusXREditor/Private/OculusXRSettingsToggle.h b/Plugins/MetaXR/Source/OculusXREditor/Private/OculusXRSettingsToggle.h deleted file mode 100644 index 210f6dd..0000000 --- a/Plugins/MetaXR/Source/OculusXREditor/Private/OculusXRSettingsToggle.h +++ /dev/null @@ -1,30 +0,0 @@ - -// @lint-ignore-every LICENSELINT -// Copyright Epic Games, Inc. All Rights Reserved. -#pragma once - -#include "CoreMinimal.h" -#include "IDetailCustomization.h" -#include "UObject/WeakObjectPtr.h" - -class IPropertyHandle; - -class OCULUSXREDITOR_API FOculusXRSettingsToggle : public IDetailCustomization -{ -public: - static TSharedRef MakeInstance(); - - // IDetailCustomization interface - virtual void CustomizeDetails(IDetailLayoutBuilder& DetailBuilder) override; - // End of IDetailCustomization interface -private: - bool IsToggleValue(bool bValue) const; - bool IsEnabled() const; - void OnToggledTo(bool bSetTo); - void OnNavigateHyperlink(FString Url); - FText GetDescriptionText() const; - - TSharedPtr TogglePropertyHandle; - TWeakObjectPtr ToggleSettingObject; - TOptional ToggleEnabled; -}; diff --git a/Plugins/MetaXR/Source/OculusXREditor/Private/OculusXRTelemetryEditorEvents.h b/Plugins/MetaXR/Source/OculusXREditor/Private/OculusXRTelemetryEditorEvents.h deleted file mode 100644 index e92c412..0000000 --- a/Plugins/MetaXR/Source/OculusXREditor/Private/OculusXRTelemetryEditorEvents.h +++ /dev/null @@ -1,10 +0,0 @@ -// Copyright (c) Meta Platforms, Inc. and affiliates. - -#pragma once - -#include "OculusXRTelemetry.h" - -namespace OculusXRTelemetry::Events -{ - using FEditorStart = TMarker<191956532>; -} // namespace OculusXRTelemetry::Events diff --git a/Plugins/MetaXR/Source/OculusXREditor/Private/OculusXRToolCommands.cpp b/Plugins/MetaXR/Source/OculusXREditor/Private/OculusXRToolCommands.cpp deleted file mode 100644 index 3f38b4e..0000000 --- a/Plugins/MetaXR/Source/OculusXREditor/Private/OculusXRToolCommands.cpp +++ /dev/null @@ -1,67 +0,0 @@ -// @lint-ignore-every LICENSELINT -// Copyright Epic Games, Inc. All Rights Reserved. - -#include "OculusXRToolCommands.h" - -#include "OculusXRProjectSetupToolModule.h" -#include "OculusXRSyntheticEnvironmentServer.h" -#include "Framework/Docking/TabManager.h" -#include "Misc/EngineVersionComparison.h" - -#define LOCTEXT_NAMESPACE "FOculusXREditorModule" - -#if UE_VERSION_OLDER_THAN(5, 5, 0) -#define AS_LOCALIZABLE_ADVANCED(Namespace, Key, TextLiteral) \ - FInternationalization::ForUseOnlyByLocMacroAndGraphNodeTextLiterals_CreateText(TextLiteral, Namespace, Key) -#else -#define AS_LOCALIZABLE_ADVANCED(Namespace, Key, TextLiteral) \ - FText::AsLocalizable_Advanced(Namespace, Key, TextLiteral) -#endif - -void FOculusToolCommands::RegisterCommands() -{ - UI_COMMAND(OpenProjectSetupTool, "Meta XR Project Setup Tool", "Show Meta XR Project Setup Tool", EUserInterfaceActionType::Button, FInputChord()); - UI_COMMAND(ToggleDeploySo, "Deploy compiled .so directly to device", "Faster deploy when we only have code changes by deploying compiled .so directly to device", EUserInterfaceActionType::ToggleButton, FInputChord()); - UI_COMMAND(ToggleIterativeCookOnTheFly, "Enable Iterative Cook on the Fly", "Faster deploy for asset changes by keeping previously cooked contents on the device (Uses Cook on the Fly)", EUserInterfaceActionType::ToggleButton, FInputChord()); - UI_COMMAND(OpenPlatWindow, "Meta XR Platform Window", "Show Meta XR Platform Window", EUserInterfaceActionType::Button, FInputChord()); - - UI_COMMAND(ToggleMetaXRSim, "Meta XR Simulator", "Activate/Deactivate Meta XR Simulator", EUserInterfaceActionType::ToggleButton, FInputChord()); - -#if PLATFORM_WINDOWS - static const FString launch("Launch "); - static const FString dot("."); - const auto& rooms = FMetaXRSES::GetSynthEnvRooms(); - for (const auto& room : rooms) - { - TSharedPtr command; - const FString DotCommandName = dot + room.GuiName; - const FString InDescription = launch + room.GuiName; - const FString InCommandNameUnderscoreTooltip = room.GuiName + TEXT("_ToolTip"); - - const FString InSubNamespace = TEXT(LOCTEXT_NAMESPACE); - const FString UICommandsStr = TEXT("UICommands"); - const FString Namespace = UICommandsStr + dot + InSubNamespace; - - FUICommandInfo::MakeCommandInfo( - this->AsShared(), - command, - FName(InCommandNameUnderscoreTooltip), - AS_LOCALIZABLE_ADVANCED(*Namespace, *InDescription, *InDescription), - AS_LOCALIZABLE_ADVANCED(*Namespace, InCommandNameUnderscoreTooltip.GetCharArray().GetData(), *InDescription), - FSlateIcon(), - EUserInterfaceActionType::Button, - FInputChord(), - FInputChord()); - RoomCommands.Add(command); - } -#endif - - UI_COMMAND(StopServer, "Stop Server", "Stop Server", EUserInterfaceActionType::Button, FInputChord()); -} - -void FOculusToolCommands::ShowOculusTool() -{ - IOculusXRProjectSetupToolModule::Get().ShowProjectSetupTool("Console"); -} - -#undef LOCTEXT_NAMESPACE diff --git a/Plugins/MetaXR/Source/OculusXREditor/Private/OculusXRToolCommands.h b/Plugins/MetaXR/Source/OculusXREditor/Private/OculusXRToolCommands.h deleted file mode 100644 index e3e45df..0000000 --- a/Plugins/MetaXR/Source/OculusXREditor/Private/OculusXRToolCommands.h +++ /dev/null @@ -1,44 +0,0 @@ -// @lint-ignore-every LICENSELINT -// Copyright Epic Games, Inc. All Rights Reserved. - -#pragma once - -#include "CoreMinimal.h" -#include "Framework/Commands/Commands.h" -#include "OculusXRToolStyle.h" -#include "OculusXREditorModule.h" -#include "HAL/IConsoleManager.h" - -class FOculusToolCommands : public TCommands -{ -public: - FOculusToolCommands() - : TCommands( - TEXT("OculusTool"), NSLOCTEXT("Contexts", "OculusXREditor", "OculusXREditor Plugin"), NAME_None, - FOculusToolStyle::GetStyleSetName()) - , ShowOculusToolCommand( - TEXT("vr.oculus.ShowToolWindow"), - *NSLOCTEXT("OculusRift", "CCommandText_ShowToolWindow", - "Show the Oculus Editor Tool window (editor only).") - .ToString(), - FConsoleCommandDelegate::CreateRaw(this, &FOculusToolCommands::ShowOculusTool)) - { - } - - // TCommands<> interface - virtual void RegisterCommands() override; - - TSharedPtr OpenProjectSetupTool; - TSharedPtr ToggleDeploySo; - TSharedPtr ToggleIterativeCookOnTheFly; - TSharedPtr OpenPlatWindow; - TSharedPtr ToggleMetaXRSim; - TSharedPtr StopServer; - - TArray> RoomCommands; - -private: - void ShowOculusTool(); - - FAutoConsoleCommand ShowOculusToolCommand; -}; diff --git a/Plugins/MetaXR/Source/OculusXREditor/Private/OculusXRToolStyle.cpp b/Plugins/MetaXR/Source/OculusXREditor/Private/OculusXRToolStyle.cpp deleted file mode 100644 index 230acf6..0000000 --- a/Plugins/MetaXR/Source/OculusXREditor/Private/OculusXRToolStyle.cpp +++ /dev/null @@ -1,75 +0,0 @@ -// @lint-ignore-every LICENSELINT -// Copyright Epic Games, Inc. All Rights Reserved. - -#include "OculusXRToolStyle.h" -#include "Styling/SlateStyleRegistry.h" -#include "Framework/Application/SlateApplication.h" -#include "Slate/SlateGameResources.h" -#include "Interfaces/IPluginManager.h" - -TSharedPtr FOculusToolStyle::StyleInstance = nullptr; - -void FOculusToolStyle::Initialize() -{ - if (!StyleInstance.IsValid()) - { - StyleInstance = Create(); - FSlateStyleRegistry::RegisterSlateStyle(*StyleInstance); - } -} - -void FOculusToolStyle::Shutdown() -{ - FSlateStyleRegistry::UnRegisterSlateStyle(*StyleInstance); - ensure(StyleInstance.IsUnique()); - StyleInstance.Reset(); -} - -FName FOculusToolStyle::GetStyleSetName() -{ - static FName StyleSetName(TEXT("OculusToolStyle")); - return StyleSetName; -} - -#define IMAGE_BRUSH(RelativePath, ...) FSlateImageBrush(Style->RootToContentDir(RelativePath, TEXT(".png")), __VA_ARGS__) -#define BOX_BRUSH(RelativePath, ...) FSlateBoxBrush(Style->RootToContentDir(RelativePath, TEXT(".png")), __VA_ARGS__) -#define BORDER_BRUSH(RelativePath, ...) FSlateBorderBrush(Style->RootToContentDir(RelativePath, TEXT(".png")), __VA_ARGS__) -#define TTF_FONT(RelativePath, ...) FSlateFontInfo(Style->RootToContentDir(RelativePath, TEXT(".ttf")), __VA_ARGS__) -#define OTF_FONT(RelativePath, ...) FSlateFontInfo(Style->RootToContentDir(RelativePath, TEXT(".otf")), __VA_ARGS__) - -const FVector2D Icon16x16(16.0f, 16.0f); -const FVector2D Icon20x20(20.0f, 20.0f); -const FVector2D Icon40x40(40.0f, 40.0f); - -TSharedRef FOculusToolStyle::Create() -{ - TSharedRef Style = MakeShareable(new FSlateStyleSet("OculusToolStyle")); - Style->SetContentRoot(IPluginManager::Get().FindPlugin("OculusXR")->GetBaseDir() / TEXT("Resources")); - - Style->Set("OculusTool.MenuButton", new IMAGE_BRUSH(TEXT("ButtonIcon_80x"), Icon40x40)); - Style->Set("OculusTool.OpenPluginWindow", new IMAGE_BRUSH(TEXT("ButtonIcon_80x"), Icon40x40)); - Style->Set("OculusTool.MetaLogo", - new FSlateVectorImageBrush(Style->RootToContentDir("MetaLogo", TEXT(".svg")), - FVector2D(32.0f, 32.0f))); - - return Style; -} - -#undef IMAGE_BRUSH -#undef BOX_BRUSH -#undef BORDER_BRUSH -#undef TTF_FONT -#undef OTF_FONT - -void FOculusToolStyle::ReloadTextures() -{ - if (FSlateApplication::IsInitialized()) - { - FSlateApplication::Get().GetRenderer()->ReloadTextureResources(); - } -} - -const ISlateStyle& FOculusToolStyle::Get() -{ - return *StyleInstance; -} diff --git a/Plugins/MetaXR/Source/OculusXREditor/Private/OculusXRToolStyle.h b/Plugins/MetaXR/Source/OculusXREditor/Private/OculusXRToolStyle.h deleted file mode 100644 index 7af90a1..0000000 --- a/Plugins/MetaXR/Source/OculusXREditor/Private/OculusXRToolStyle.h +++ /dev/null @@ -1,30 +0,0 @@ -// @lint-ignore-every LICENSELINT -// Copyright Epic Games, Inc. All Rights Reserved. - -#pragma once - -#include "CoreMinimal.h" -#include "Styling/SlateStyle.h" - -/** */ -class FOculusToolStyle -{ -public: - static void Initialize(); - - static void Shutdown(); - - /** reloads textures used by slate renderer */ - static void ReloadTextures(); - - /** @return The Slate style set for the Shooter game */ - static const ISlateStyle& Get(); - - static FName GetStyleSetName(); - -private: - static TSharedRef Create(); - -private: - static TSharedPtr StyleInstance; -}; diff --git a/Plugins/MetaXR/Source/OculusXREditor/Public/IOculusXREditorModule.h b/Plugins/MetaXR/Source/OculusXREditor/Public/IOculusXREditorModule.h deleted file mode 100644 index 9307db1..0000000 --- a/Plugins/MetaXR/Source/OculusXREditor/Public/IOculusXREditorModule.h +++ /dev/null @@ -1,19 +0,0 @@ -// @lint-ignore-every LICENSELINT -// Copyright Epic Games, Inc. All Rights Reserved. - -#pragma once - -#include "CoreMinimal.h" -#include "Modules/ModuleInterface.h" - -class FToolBarBuilder; -class FMenuBuilder; - -#define OCULUS_EDITOR_MODULE_NAME "OculusXREditor" - -////////////////////////////////////////////////////////////////////////// -// IOculusXREditorModule - -class IOculusXREditorModule : public IModuleInterface -{ -}; diff --git a/Plugins/MetaXR/Source/OculusXREditor/Public/OculusXREditorSettings.h b/Plugins/MetaXR/Source/OculusXREditor/Public/OculusXREditorSettings.h deleted file mode 100644 index 9b9f5c1..0000000 --- a/Plugins/MetaXR/Source/OculusXREditor/Public/OculusXREditorSettings.h +++ /dev/null @@ -1,37 +0,0 @@ -// @lint-ignore-every LICENSELINT -// Copyright Epic Games, Inc. All Rights Reserved. - -#pragma once - -#include "CoreMinimal.h" -#include "UObject/NoExportTypes.h" -#include "OculusXREditorSettings.generated.h" - -UENUM() -enum class EOculusXRPlatform : uint8 -{ - PC UMETA(DisplayName = "PC"), - Mobile UMETA(DisplayName = "Mobile"), - Length UMETA(DisplayName = "Invalid") -}; - -/** - * - */ -UCLASS(config = Editor) -class OCULUSXREDITOR_API UOculusXREditorSettings : public UObject -{ - GENERATED_BODY() - -public: - UOculusXREditorSettings(); - - UPROPERTY(config, EditAnywhere, Category = MetaXR) - TMap PerfToolIgnoreList; - - UPROPERTY(config, EditAnywhere, Category = MetaXR) - EOculusXRPlatform PerfToolTargetPlatform; - - UPROPERTY(globalconfig, EditAnywhere, Category = MetaXR) - bool bAddMenuOption; -}; diff --git a/Plugins/MetaXR/Source/OculusXREditor/Public/OculusXRPlatformToolSettings.h b/Plugins/MetaXR/Source/OculusXREditor/Public/OculusXRPlatformToolSettings.h deleted file mode 100644 index 437f1c4..0000000 --- a/Plugins/MetaXR/Source/OculusXREditor/Public/OculusXRPlatformToolSettings.h +++ /dev/null @@ -1,272 +0,0 @@ -// @lint-ignore-every LICENSELINT -// Copyright Epic Games, Inc. All Rights Reserved. - -#pragma once - -#include "CoreMinimal.h" -#include "UObject/NoExportTypes.h" -#include "OculusXRPlatformToolSettings.generated.h" - -UENUM() -enum class EOculusXRPlatformTarget : uint8 -{ - Rift UMETA(DisplayName = "Rift"), - Quest UMETA(DisplayName = "Quest"), - Length UMETA(DisplayName = "Invalid") -}; - -UENUM() -enum class EOculusXRGamepadEmulation : uint8 -{ - Off UMETA(DisplayName = "Off"), - Twinstick UMETA(DisplayName = "Twinstick"), - RightDPad UMETA(DisplayName = "Right D Pad"), - LeftDPad UMETA(DisplayName = "Left D Pad"), - Length UMETA(DisplayName = "Invalid") -}; - -UENUM() -enum class EOculusXRAssetType : uint8 -{ - Default UMETA(DisplayName = "Default"), - Store UMETA(DisplayName = "Store"), - Language_Pack UMETA(DisplayName = "Language Pack"), - Length UMETA(DisplayName = "Invlaid"), -}; - -USTRUCT() -struct FOculusXRRedistPackage -{ - GENERATED_USTRUCT_BODY() - - UPROPERTY(config, EditAnywhere, Category = MetaXR) - bool Included = false; - - UPROPERTY(config, EditAnywhere, Category = MetaXR) - FString Name; - - UPROPERTY(config, EditAnywhere, Category = MetaXR) - FString Id; -}; - -USTRUCT() -struct FOculusXRAssetConfig -{ - GENERATED_USTRUCT_BODY() - - UPROPERTY(config, EditAnywhere, Category = MetaXR) - EOculusXRAssetType AssetType = EOculusXRAssetType::Default; - - UPROPERTY(config, EditAnywhere, Category = MetaXR) - bool Required = false; - - UPROPERTY(config, EditAnywhere, Category = MetaXR) - FString Name; - - UPROPERTY(config, EditAnywhere, Category = MetaXR) - FString Sku; -}; - -USTRUCT() -struct FOculusXRAssetConfigArray -{ - GENERATED_USTRUCT_BODY() - - UPROPERTY(config, EditAnywhere, Category = MetaXR) - TArray ConfigArray; -}; - -/** - * - */ -UCLASS(config = Editor) -class OCULUSXREDITOR_API UOculusXRPlatformToolSettings : public UObject -{ - GENERATED_BODY() - -public: - UOculusXRPlatformToolSettings(); - - uint8 GetTargetPlatform() - { - return (uint8)OculusTargetPlatform; - } - void SetTargetPlatform(uint8 i) - { - OculusTargetPlatform = (EOculusXRPlatformTarget)i; - } - - FString GetApplicationID() - { - return (uint8)OculusTargetPlatform < OculusApplicationID.Num() ? OculusApplicationID[(uint8)OculusTargetPlatform] : ""; - } - void SetApplicationID(FString s) - { - if (OculusTargetPlatform < EOculusXRPlatformTarget::Length) - { - OculusApplicationID[(uint8)OculusTargetPlatform] = s; - } - } - - FString GetApplicationToken() - { - return (uint8)OculusTargetPlatform < OculusApplicationToken.Num() ? OculusApplicationToken[(uint8)OculusTargetPlatform] : ""; - } - void SetApplicationToken(FString s) - { - if (OculusTargetPlatform < EOculusXRPlatformTarget::Length) - { - OculusApplicationToken[(uint8)OculusTargetPlatform] = s; - } - } - - FString GetReleaseChannel() - { - return (uint8)OculusTargetPlatform < OculusReleaseChannel.Num() ? OculusReleaseChannel[(uint8)OculusTargetPlatform] : "Alpha"; - } - void SetReleaseChannel(FString s) - { - if (OculusTargetPlatform < EOculusXRPlatformTarget::Length) - { - OculusReleaseChannel[(uint8)OculusTargetPlatform] = s; - } - } - - FString GetReleaseNote() - { - return (uint8)OculusTargetPlatform < OculusReleaseNote.Num() ? OculusReleaseNote[(uint8)OculusTargetPlatform] : ""; - } - void SetReleaseNote(FString s) - { - if (OculusTargetPlatform < EOculusXRPlatformTarget::Length) - { - OculusReleaseNote[(uint8)OculusTargetPlatform] = s; - } - } - - FString GetLaunchFilePath() - { - return (uint8)OculusTargetPlatform < OculusLaunchFilePath.Num() ? OculusLaunchFilePath[(uint8)OculusTargetPlatform] : ""; - } - void SetLaunchFilePath(FString s) - { - if (OculusTargetPlatform < EOculusXRPlatformTarget::Length) - { - OculusLaunchFilePath[(uint8)OculusTargetPlatform] = s; - } - } - - EOculusXRGamepadEmulation GetRiftGamepadEmulation() - { - return OculusRiftGamepadEmulation; - } - void SetRiftGamepadEmulation(uint8 i) - { - OculusRiftGamepadEmulation = (EOculusXRGamepadEmulation)i; - } - - FString GetLanguagePacksPath() - { - return (uint8)OculusTargetPlatform < OculusLanguagePacksPath.Num() ? OculusLanguagePacksPath[(uint8)OculusTargetPlatform] : ""; - } - void SetLanguagePacksPath(FString s) - { - if (OculusTargetPlatform < EOculusXRPlatformTarget::Length) - { - OculusLanguagePacksPath[(uint8)OculusTargetPlatform] = s; - } - } - - FString GetExpansionFilesPath() - { - return (uint8)OculusTargetPlatform < OculusExpansionFilesPath.Num() ? OculusExpansionFilesPath[(uint8)OculusTargetPlatform] : ""; - } - void SetExpansionFilesPath(FString s) - { - if (OculusTargetPlatform < EOculusXRPlatformTarget::Length) - { - OculusExpansionFilesPath[(uint8)OculusTargetPlatform] = s; - } - } - - FString GetSymbolDirPath() - { - return (uint8)OculusTargetPlatform < OculusSymbolDirPath.Num() ? OculusSymbolDirPath[(uint8)OculusTargetPlatform] : ""; - } - void SetSymbolDirPath(FString s) - { - if (OculusTargetPlatform < EOculusXRPlatformTarget::Length) - { - OculusSymbolDirPath[(uint8)OculusTargetPlatform] = s; - } - } - - TArray* GetAssetConfigs() - { - return (uint8)OculusTargetPlatform < OculusAssetConfigs.Num() ? &OculusAssetConfigs[(uint8)OculusTargetPlatform].ConfigArray : nullptr; - } - - UPROPERTY(config, EditAnywhere, Category = MetaXR) - FString OculusRiftBuildDirectory; - - UPROPERTY(config, EditAnywhere, Category = MetaXR) - FString OculusRiftBuildVersion; - - UPROPERTY(config, EditAnywhere, Category = MetaXR) - FString OculusRiftLaunchParams; - - UPROPERTY(config, EditAnywhere, Category = MetaXR) - bool OculusRiftFireWallException; - - UPROPERTY(config, EditAnywhere, Category = MetaXR) - FString OculusRift2DLaunchPath; - - UPROPERTY(config, EditAnywhere, Category = MetaXR) - FString OculusRift2DLaunchParams; - - UPROPERTY(config, EditAnywhere, Category = MetaXR) - TArray OculusRedistPackages; - - UPROPERTY(config, EditAnywhere, Category = MetaXR) - bool UploadDebugSymbols; - - UPROPERTY(config, EditAnywhere, Category = MetaXR) - bool DebugSymbolsOnly; - - UPROPERTY(config, EditAnywhere, Category = MetaXR) - FString BuildID; - -private: - UPROPERTY(config, EditAnywhere, Category = MetaXR) - EOculusXRPlatformTarget OculusTargetPlatform; - - UPROPERTY(config, EditAnywhere, Category = MetaXR) - TArray OculusApplicationID; - - UPROPERTY(config, EditAnywhere, Category = MetaXR) - TArray OculusApplicationToken; - - UPROPERTY(config, EditAnywhere, Category = MetaXR) - TArray OculusReleaseChannel; - - UPROPERTY(config, EditAnywhere, Category = MetaXR) - TArray OculusReleaseNote; - - UPROPERTY(config, EditAnywhere, Category = MetaXR) - TArray OculusLaunchFilePath; - - UPROPERTY(config, EditAnywhere, Category = MetaXR) - EOculusXRGamepadEmulation OculusRiftGamepadEmulation; - - UPROPERTY(config, EditAnywhere, Category = MetaXR) - TArray OculusLanguagePacksPath; - - UPROPERTY(config, EditAnywhere, Category = MetaXR) - TArray OculusExpansionFilesPath; - - UPROPERTY(config, EditAnywhere, Category = MetaXR) - TArray OculusSymbolDirPath; - - UPROPERTY(config, EditAnywhere, Category = MetaXR) - TArray OculusAssetConfigs; -}; diff --git a/Plugins/MetaXR/Source/OculusXREyeTracker/OculusXREyeTracker.Build.cs b/Plugins/MetaXR/Source/OculusXREyeTracker/OculusXREyeTracker.Build.cs deleted file mode 100644 index 472d9a2..0000000 --- a/Plugins/MetaXR/Source/OculusXREyeTracker/OculusXREyeTracker.Build.cs +++ /dev/null @@ -1,38 +0,0 @@ -// @lint-ignore-every LICENSELINT -// Copyright Epic Games, Inc. All Rights Reserved. - -namespace UnrealBuildTool.Rules -{ - public class OculusXREyeTracker : ModuleRules - { - public OculusXREyeTracker(ReadOnlyTargetRules Target) : base(Target) - { - bUseUnity = true; - - if (Target.Platform == UnrealTargetPlatform.Win64 || - Target.Platform == UnrealTargetPlatform.Android) - { - PublicDependencyModuleNames.AddRange( - new string[] - { - "InputDevice", - "EyeTracker", - "OVRPluginXR", - "OculusXRHMD", - "OculusXRMovement" - } - ); - - PrivateDependencyModuleNames.AddRange( - new string[] - { - "Core", - "CoreUObject", - "Engine", - "InputCore", - } - ); - } - } - } -} diff --git a/Plugins/MetaXR/Source/OculusXREyeTracker/Private/OculusXREyeTracker.cpp b/Plugins/MetaXR/Source/OculusXREyeTracker/Private/OculusXREyeTracker.cpp deleted file mode 100644 index ad7cfd6..0000000 --- a/Plugins/MetaXR/Source/OculusXREyeTracker/Private/OculusXREyeTracker.cpp +++ /dev/null @@ -1,207 +0,0 @@ -// Copyright (c) Meta Platforms, Inc. and affiliates. - -#include "IEyeTrackerModule.h" -#include "EyeTrackerTypes.h" -#include "IEyeTracker.h" -#include "Modules/ModuleManager.h" - -#include "GameFramework/WorldSettings.h" -#include "Engine/World.h" -#include "IXRTrackingSystem.h" -#include "Engine/Engine.h" - -#include "IOculusXRHMDModule.h" -#include "OculusXRMovement.h" -#include "OculusXRTelemetryEyeTrackerEvents.h" - -#if OCULUS_HMD_SUPPORTED_PLATFORMS - -namespace OculusXRHMD -{ - class FOculusXREyeTracker : public IEyeTracker - { - public: - FOculusXREyeTracker() - { - if (IsValid(GWorld)) - { - const auto* WorldSettings = GWorld->GetWorldSettings(); - if (IsValid(WorldSettings)) - { - WorldToMeters = WorldSettings->WorldToMeters; - } - } - - if (GEngine != nullptr) - { - TrackingSystem = GEngine->XRSystem.Get(); - } - - OculusXRTelemetry::TScopedMarker(); - } - - virtual ~FOculusXREyeTracker() - { - if (bIsTrackerStarted) - { - ensureMsgf(OculusXRMovement::StopEyeTracking(), TEXT("Cannot stop eye tracker.")); - } - } - - private: - // IEyeTracker - virtual void SetEyeTrackedPlayer(APlayerController*) override - { - unimplemented(); - } - - virtual bool GetEyeTrackerGazeData(FEyeTrackerGazeData& OutGazeData) const override - { - return ReactOnEyeTrackerState([this, &OutGazeData](const FOculusXREyeGazesState& EyeGazeState, const FTransform& TrackingToWorld) { - OutGazeData.FixationPoint = GetFixationPoint(EyeGazeState); - OutGazeData.ConfidenceValue = MergeConfidence(EyeGazeState); - - OutGazeData.GazeDirection = TrackingToWorld.TransformVector(MergeOrientation(EyeGazeState).GetForwardVector()); - OutGazeData.GazeOrigin = TrackingToWorld.TransformPosition(MergePosition(EyeGazeState) * WorldToMeters); - }); - } - - virtual bool GetEyeTrackerStereoGazeData(FEyeTrackerStereoGazeData& OutGazeData) const override - { - return ReactOnEyeTrackerState([this, &OutGazeData](const FOculusXREyeGazesState& EyeGazeState, const FTransform& TrackingToWorld) { - OutGazeData.FixationPoint = GetFixationPoint(EyeGazeState); - OutGazeData.ConfidenceValue = MergeConfidence(EyeGazeState); - - const FOculusXREyeGazeState& LeftGaze = EyeGazeState.EyeGazes[static_cast(EOculusXREye::Left)]; - const FOculusXREyeGazeState& RightGaze = EyeGazeState.EyeGazes[static_cast(EOculusXREye::Right)]; - OutGazeData.LeftEyeDirection = TrackingToWorld.TransformVector(LeftGaze.Orientation.Vector()); // Equivalent to .Quaternion().GetForwardVector() - OutGazeData.RightEyeDirection = TrackingToWorld.TransformVector(RightGaze.Orientation.Vector()); - OutGazeData.LeftEyeOrigin = TrackingToWorld.TransformPosition(LeftGaze.Position * WorldToMeters); - OutGazeData.RightEyeOrigin = TrackingToWorld.TransformPosition(RightGaze.Position * WorldToMeters); - }); - } - - virtual EEyeTrackerStatus GetEyeTrackerStatus() const override - { - bool supported = OculusXRMovement::IsEyeTrackingSupported(); - bool enabled = OculusXRMovement::IsEyeTrackingEnabled(); - - if (supported && enabled) - { - return EEyeTrackerStatus::Tracking; - } - else if (supported) - { - return EEyeTrackerStatus::NotTracking; - } - - return EEyeTrackerStatus::NotConnected; - } - - virtual bool IsStereoGazeDataAvailable() const override - { - return true; - } - - private: - // FOculusXREyeTracker - template - bool ReactOnEyeTrackerState(ReactOnState&& React) const - { - if (!bIsTrackerStarted) - { - bIsTrackerStarted = OculusXRMovement::StartEyeTracking(); - } - - if (bIsTrackerStarted) - { - FOculusXREyeGazesState eyeGazes; - bool getStateResult = OculusXRMovement::GetEyeGazesState(eyeGazes, WorldToMeters); - if (getStateResult && IsStateValidForBothEyes(eyeGazes)) - { - FTransform TrackingToWorld = TrackingSystem ? TrackingSystem->GetTrackingToWorldTransform() : FTransform::Identity; - React(eyeGazes, TrackingToWorld); - - return true; - } - } - - return false; - } - - static float IsStateValidForBothEyes(const FOculusXREyeGazesState& EyeGazes) - { - return EyeGazes.EyeGazes[static_cast(EOculusXREye::Left)].bIsValid && EyeGazes.EyeGazes[static_cast(EOculusXREye::Right)].bIsValid; - } - - static float MergeConfidence(const FOculusXREyeGazesState& EyeGazes) - { - const auto& LeftEyeConfidence = EyeGazes.EyeGazes[static_cast(EOculusXREye::Left)].Confidence; - const auto& RightEyeConfidence = EyeGazes.EyeGazes[static_cast(EOculusXREye::Right)].Confidence; - return FMath::Min(LeftEyeConfidence, RightEyeConfidence); - } - - /// Warn: The result of MergedOrientation is not normalized. - static FQuat MergeOrientation(const FOculusXREyeGazesState& EyeGazes) - { - const auto& LeftEyeOrientation = EyeGazes.EyeGazes[static_cast(EOculusXREye::Left)].Orientation; - const auto& RightEyeOrientation = EyeGazes.EyeGazes[static_cast(EOculusXREye::Right)].Orientation; - return FQuat::FastLerp(LeftEyeOrientation.Quaternion(), RightEyeOrientation.Quaternion(), 0.5f); - } - - static FVector MergePosition(const FOculusXREyeGazesState& EyeGazes) - { - const auto& LeftEyePosition = EyeGazes.EyeGazes[static_cast(EOculusXREye::Left)].Position; - const auto& RightEyePosition = EyeGazes.EyeGazes[static_cast(EOculusXREye::Right)].Position; - return (LeftEyePosition + RightEyePosition) / 2.f; - } - - static FVector GetFixationPoint(const FOculusXREyeGazesState& EyeGazes) - { - return FVector::ZeroVector; // Not supported - } - - float WorldToMeters = 100.f; - IXRTrackingSystem* TrackingSystem = nullptr; - mutable bool bIsTrackerStarted = false; - }; -} // namespace OculusXRHMD -#endif // OCULUS_HMD_SUPPORTED_PLATFORMS - -class FOculusXREyeTrackerModule : public IEyeTrackerModule -{ -public: - static inline FOculusXREyeTrackerModule& Get() - { - return FModuleManager::LoadModuleChecked("OculusXREyeTracker"); - } - - static inline bool IsAvailable() - { - return FModuleManager::Get().IsModuleLoaded("OculusXREyeTracker"); - } - - virtual FString GetModuleKeyName() const override - { - return TEXT("OculusXREyeTracker"); - } - - virtual bool IsEyeTrackerConnected() const override - { -#if OCULUS_HMD_SUPPORTED_PLATFORMS - return GEngine->XRSystem.IsValid() && OculusXRMovement::IsEyeTrackingSupported(); -#else - return false; -#endif // OCULUS_HMD_SUPPORTED_PLATFORMS - } - - virtual TSharedPtr CreateEyeTracker() override - { -#if OCULUS_HMD_SUPPORTED_PLATFORMS - return MakeShared(); -#endif // OCULUS_HMD_SUPPORTED_PLATFORMS - return TSharedPtr(); - } -}; - -IMPLEMENT_MODULE(FOculusXREyeTrackerModule, OculusXREyeTracker) diff --git a/Plugins/MetaXR/Source/OculusXREyeTracker/Private/OculusXRTelemetryEyeTrackerEvents.h b/Plugins/MetaXR/Source/OculusXREyeTracker/Private/OculusXRTelemetryEyeTrackerEvents.h deleted file mode 100644 index f7c8c5e..0000000 --- a/Plugins/MetaXR/Source/OculusXREyeTracker/Private/OculusXRTelemetryEyeTrackerEvents.h +++ /dev/null @@ -1,10 +0,0 @@ -// Copyright (c) Meta Platforms, Inc. and affiliates. - -#pragma once - -#include "OculusXRTelemetry.h" - -namespace OculusXRTelemetry::Events -{ - using FMovementSDKEyeTrackerCreated = TMarker<191957973>; -} diff --git a/Plugins/MetaXR/Source/OculusXRHMD/OculusMobile_APL.xml b/Plugins/MetaXR/Source/OculusXRHMD/OculusMobile_APL.xml deleted file mode 100644 index 6a463f4..0000000 --- a/Plugins/MetaXR/Source/OculusXRHMD/OculusMobile_APL.xml +++ /dev/null @@ -1,573 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - --keep class com.oculus.** { -*; -} --keep class android.app.** { -*; -} - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/Plugins/MetaXR/Source/OculusXRHMD/OculusXRHMD.Build.cs b/Plugins/MetaXR/Source/OculusXRHMD/OculusXRHMD.Build.cs deleted file mode 100644 index d06c658..0000000 --- a/Plugins/MetaXR/Source/OculusXRHMD/OculusXRHMD.Build.cs +++ /dev/null @@ -1,156 +0,0 @@ -// @lint-ignore-every LICENSELINT -// Copyright Epic Games, Inc. All Rights Reserved. - -using System; -using System.IO; - -namespace UnrealBuildTool.Rules -{ - public class OculusXRHMD : ModuleRules - { - public OculusXRHMD(ReadOnlyTargetRules Target) : base(Target) - { - bUseUnity = true; - - var EngineDir = Path.GetFullPath(Target.RelativeEnginePath); - - PrivateIncludePaths.AddRange( - new string[] { - Path.Combine(EngineDir, "Source/Runtime/Renderer/Private"), - Path.Combine(EngineDir, "Source/Runtime/Renderer/Private"), - Path.Combine(EngineDir, "Source/Runtime/OpenGLDrv/Private"), - Path.Combine(EngineDir, "Source/Runtime/Engine/Classes/Components"), - Path.Combine(EngineDir, "Source/Runtime/Engine/Classes/Kismet"), - }); - - PublicIncludePathModuleNames.AddRange( - new string[] { - "Launch", - "ProceduralMeshComponent", - "AndroidPermission", - "OpenXRHMD", - }); - - PrivateDependencyModuleNames.AddRange( - new string[] - { - "Core", - "CoreUObject", - "Engine", - "EngineSettings", - "InputCore", - "RHI", - "RHICore", - "RenderCore", - "Renderer", - "Slate", - "SlateCore", - "ImageWrapper", - "MediaAssets", - "Analytics", - "OpenGLDrv", - "VulkanRHI", - "OVRPluginXR", - "OculusOpenXRLoader", - "ProceduralMeshComponent", - "Projects", - "OpenXR", - "OpenXRHMD", - }); - - PublicDependencyModuleNames.AddRange( - new string[] - { - "HeadMountedDisplay", - "KhronosOpenXRHeaders", - }); - - PublicIncludePaths.AddRange( - new string[] { - Path.Combine(EngineDir, "Plugins/Runtime/OpenXR/Source/OpenXRHMD/Private"), - }); - - if (Target.Version.MajorVersion > 5 || (Target.Version.MajorVersion == 5 && Target.Version.MinorVersion >= 3)) - { - PublicDependencyModuleNames.AddRange( - new string[] - { - "XRBase", - }); - } - - if (Target.bBuildEditor == true) - { - PrivateDependencyModuleNames.Add("UnrealEd"); - } - - AddEngineThirdPartyPrivateStaticDependencies(Target, "OpenGL"); - - if (Target.Platform == UnrealTargetPlatform.Win64) - { - PrivateDependencyModuleNames.AddRange( - new string[] - { - "HTTP", - "libzip", - }); - - // D3D - { - PrivateDependencyModuleNames.AddRange( - new string[] - { - "D3D11RHI", - "D3D12RHI", - }); - - PrivateIncludePaths.AddRange( - new string[] - { - "OculusXRMR/Public", - }); - - AddEngineThirdPartyPrivateStaticDependencies(Target, "DX11"); - AddEngineThirdPartyPrivateStaticDependencies(Target, "DX12"); - AddEngineThirdPartyPrivateStaticDependencies(Target, "NVAPI"); - AddEngineThirdPartyPrivateStaticDependencies(Target, "DX11Audio"); - AddEngineThirdPartyPrivateStaticDependencies(Target, "DirectSound"); - AddEngineThirdPartyPrivateStaticDependencies(Target, "NVAftermath"); - } - - // Vulkan - { - AddEngineThirdPartyPrivateStaticDependencies(Target, "Vulkan"); - } - - // OVRPlugin - if (Target.Platform == UnrealTargetPlatform.Win64) - { - RuntimeDependencies.Add("$(PluginDir)/Source/ThirdParty/OVRPlugin/OVRPlugin/Lib/" + Target.Platform.ToString() + "/OpenXR/OVRPlugin.dll"); - } - } - else if (Target.Platform == UnrealTargetPlatform.Android) - { - // We are not currently supporting Mixed Reality on Android, but we need to include IOculusXRMRModule.h for OCULUS_MR_SUPPORTED_PLATFORMS definition - PrivateIncludePaths.AddRange( - new string[] - { - "OculusXRMR/Public" - }); - - // Vulkan - { - AddEngineThirdPartyPrivateStaticDependencies(Target, "Vulkan"); - } - - // AndroidPlugin - { - string PluginPath = Utils.MakePathRelativeTo(ModuleDirectory, Target.RelativeEnginePath); - AdditionalPropertiesForReceipt.Add("AndroidPlugin", Path.Combine(PluginPath, "OculusMobile_APL.xml")); - } - } - - AddEngineThirdPartyPrivateStaticDependencies(Target, "OpenXR"); - } - } -} diff --git a/Plugins/MetaXR/Source/OculusXRHMD/Private/OculusStressTestShader.usf b/Plugins/MetaXR/Source/OculusXRHMD/Private/OculusStressTestShader.usf deleted file mode 100644 index f708b36..0000000 --- a/Plugins/MetaXR/Source/OculusXRHMD/Private/OculusStressTestShader.usf +++ /dev/null @@ -1,65 +0,0 @@ -#include "Common.ush" - -void MainVertexShader( - float4 InPosition : ATTRIBUTE0, - float2 InUV : ATTRIBUTE1, - out float2 OutUV : TEXCOORD0, - out float4 OutPosition : SV_POSITION - ) -{ - OutPosition = InPosition; - OutUV = InUV; -} - -Texture2D TextureParameter; - -#define Zoom 2 -#define Pan float2(0.5, 0) -#define Aspect 1 -#define Iterations int(128*PSVariables.IterationsMultiplier) -#define JuliaSeed float2(0.39, 0.2) -#define ColorScale float3(4, 5, 6) - -float ComputeValue(float2 v, float2 offset) -{ - float vxsquare = 0; - float vysquare = 0; - - int iteration = 0; - int lastIteration = Iterations; - - do - { - vxsquare = v.x * v.x; - vysquare = v.y * v.y; - - v = float2(vxsquare - vysquare, v.x * v.y * 2) + offset; - - iteration++; - - if ((lastIteration == Iterations) && (vxsquare + vysquare) > 4.0) - { - lastIteration = iteration + 1; - } - } while (iteration < lastIteration); - - return (float(iteration) - (log(log(sqrt(vxsquare + vysquare))) / log(2.0))) / float(Iterations); -} - -float4 Mandelbrot_Func(float2 texCoord : TEXCOORD0) : COLOR0 -{ - float2 v = (texCoord - 0.5) * Zoom * float2(1, Aspect) - Pan; - - float val = ComputeValue(v, v); - - return float4(sin(val * ColorScale.x), sin(val * ColorScale.y), sin(val * ColorScale.z), 1); -} - -void MainPixelShader( - in float2 uv : TEXCOORD0, - out float4 OutColor : SV_Target0 - ) -{ - OutColor = Mandelbrot_Func(uv); -} - diff --git a/Plugins/MetaXR/Source/OculusXRHMD/Private/OculusXRAssetManager.cpp b/Plugins/MetaXR/Source/OculusXRHMD/Private/OculusXRAssetManager.cpp deleted file mode 100644 index 08b87fc..0000000 --- a/Plugins/MetaXR/Source/OculusXRHMD/Private/OculusXRAssetManager.cpp +++ /dev/null @@ -1,294 +0,0 @@ -// @lint-ignore-every LICENSELINT -// Copyright Epic Games, Inc. All Rights Reserved. - -#include "OculusXRAssetManager.h" -#include "OculusXRHMDPrivate.h" -#include "OculusXRHMDModule.h" -#include "Engine/StaticMesh.h" -#include "Components/StaticMeshComponent.h" -#include "UObject/SoftObjectPath.h" -#include "Engine/SkeletalMesh.h" -#include "Components/SkeletalMeshComponent.h" -#include "OculusXRAssetDirectory.h" -#include "UObject/GCObject.h" - -/* FOculusAssetDirectory - *****************************************************************************/ - -enum EOculusAsset -{ - LeftTouchRiftS, - RightTouchRiftS, - LeftTouchQuest2, - RightTouchQuest2, - LeftTouchQuestPro, - RightTouchQuestPro, - LeftTouchQuest3, - RightTouchQuest3, - OculusAssetTotal -}; - -FSoftObjectPath FOculusAssetDirectory::AssetListing[OculusAssetTotal] = { - FString(TEXT("/OculusXR/Meshes/LeftTouchForQuestRiftSController.LeftTouchForQuestRiftSController")), - FString(TEXT("/OculusXR/Meshes/RightTouchForQuestRiftSController.RightTouchForQuestRiftSController")), - FString(TEXT("/OculusXR/Meshes/LeftTouchForQuest2.LeftTouchForQuest2")), - FString(TEXT("/OculusXR/Meshes/RightTouchForQuest2.RightTouchForQuest2")), - FString(TEXT("/OculusXR/Meshes/LeftMetaQuestTouchPro.LeftMetaQuestTouchPro")), - FString(TEXT("/OculusXR/Meshes/RightMetaQuestTouchPro.RightMetaQuestTouchPro")), - FString(TEXT("/OculusXR/Meshes/LeftMetaQuestTouchPlus.LeftMetaQuestTouchPlus")), - FString(TEXT("/OculusXR/Meshes/RightMetaQuestTouchPlus.RightMetaQuestTouchPlus")), -}; - -#if WITH_EDITORONLY_DATA -class FOculusAssetRepo : public FGCObject, public TArray> -{ -public: - // made an on-demand singleton rather than a static global, to avoid issues with FGCObject initialization - static FOculusAssetRepo& Get() - { - static FOculusAssetRepo AssetRepository; - return AssetRepository; - } - - UObject* LoadAndAdd(const FSoftObjectPath& AssetPath) - { - UObject* AssetObj = AssetPath.TryLoad(); - if (AssetObj != nullptr) - { - AddUnique(AssetObj); - } - return AssetObj; - } - -public: - //~ FGCObject interface - virtual void AddReferencedObjects(FReferenceCollector& Collector) override - { - Collector.AddReferencedObjects(*this); - } - virtual FString GetReferencerName() const override - { - return TEXT("FOculusAssetRepo"); - } -}; - -void FOculusAssetDirectory::LoadForCook() -{ - FOculusAssetRepo& AssetRepro = FOculusAssetRepo::Get(); - for (int32 AssetIndex = 0; AssetIndex < UE_ARRAY_COUNT(FOculusAssetDirectory::AssetListing); ++AssetIndex) - { - AssetRepro.LoadAndAdd(FOculusAssetDirectory::AssetListing[AssetIndex]); - } -} - -void FOculusAssetDirectory::ReleaseAll() -{ - FOculusAssetRepo::Get().Empty(); -} -#endif // WITH_EDITORONLY_DATA - -/* OculusAssetManager_Impl - *****************************************************************************/ - -namespace OculusAssetManager_Impl -{ -#if OCULUS_HMD_SUPPORTED_PLATFORMS - struct FRenderableDevice - { - ovrpNode OVRNode; - ovrpSystemHeadset MinDeviceRange; - ovrpSystemHeadset MaxDeviceRange; - FSoftObjectPath MeshAssetRef; - }; - - static FRenderableDevice RenderableDevices[] = { -#if PLATFORM_ANDROID - // Quest 1 & 2 - { ovrpNode_HandLeft, ovrpSystemHeadset_Oculus_Quest, ovrpSystemHeadset_Oculus_Quest_2, FOculusAssetDirectory::AssetListing[LeftTouchQuest2] }, - { ovrpNode_HandRight, ovrpSystemHeadset_Oculus_Quest, ovrpSystemHeadset_Oculus_Quest_2, FOculusAssetDirectory::AssetListing[RightTouchQuest2] }, - - // Quest Pro - { ovrpNode_HandLeft, ovrpSystemHeadset_Meta_Quest_Pro, ovrpSystemHeadset_Meta_Quest_Pro, FOculusAssetDirectory::AssetListing[LeftTouchQuestPro] }, - { ovrpNode_HandRight, ovrpSystemHeadset_Meta_Quest_Pro, ovrpSystemHeadset_Meta_Quest_Pro, FOculusAssetDirectory::AssetListing[RightTouchQuestPro] }, - - // Quest 3 & 3s - { ovrpNode_HandLeft, ovrpSystemHeadset_Meta_Quest_3, ovrpSystemHeadset_Meta_Quest_3S, FOculusAssetDirectory::AssetListing[LeftTouchQuest3] }, - { ovrpNode_HandRight, ovrpSystemHeadset_Meta_Quest_3, ovrpSystemHeadset_Meta_Quest_3S, FOculusAssetDirectory::AssetListing[RightTouchQuest3] }, -#else - // PC - Rift S - { ovrpNode_HandLeft, ovrpSystemHeadset_Rift_S, ovrpSystemHeadset_Rift_S, FOculusAssetDirectory::AssetListing[LeftTouchRiftS] }, - { ovrpNode_HandRight, ovrpSystemHeadset_Rift_S, ovrpSystemHeadset_Rift_S, FOculusAssetDirectory::AssetListing[RightTouchRiftS] }, - - // PC - Quest 1 & 2 - { ovrpNode_HandLeft, ovrpSystemHeadset_Oculus_Link_Quest, ovrpSystemHeadset_Oculus_Link_Quest_2, FOculusAssetDirectory::AssetListing[LeftTouchQuest2] }, - { ovrpNode_HandRight, ovrpSystemHeadset_Oculus_Link_Quest, ovrpSystemHeadset_Oculus_Link_Quest_2, FOculusAssetDirectory::AssetListing[RightTouchQuest2] }, - - // PC - Quest Pro - { ovrpNode_HandLeft, ovrpSystemHeadset_Meta_Link_Quest_Pro, ovrpSystemHeadset_Meta_Link_Quest_Pro, FOculusAssetDirectory::AssetListing[LeftTouchQuestPro] }, - { ovrpNode_HandRight, ovrpSystemHeadset_Meta_Link_Quest_Pro, ovrpSystemHeadset_Meta_Link_Quest_Pro, FOculusAssetDirectory::AssetListing[RightTouchQuestPro] }, - - // Quest 3 & 3s - { ovrpNode_HandLeft, ovrpSystemHeadset_Meta_Link_Quest_3, ovrpSystemHeadset_Meta_Link_Quest_3S, FOculusAssetDirectory::AssetListing[LeftTouchQuest3] }, - { ovrpNode_HandRight, ovrpSystemHeadset_Meta_Link_Quest_3, ovrpSystemHeadset_Meta_Link_Quest_3S, FOculusAssetDirectory::AssetListing[RightTouchQuest3] }, -#endif - }; - - static uint32 RenderableDeviceCount = sizeof(RenderableDevices) / sizeof(RenderableDevices[0]); -#endif // #if OCULUS_HMD_SUPPORTED_PLATFORMS - - static UObject* FindDeviceMesh(const int32 DeviceID); -}; // namespace OculusAssetManager_Impl - -static UObject* OculusAssetManager_Impl::FindDeviceMesh(const int32 DeviceID) -{ - UObject* DeviceMesh = nullptr; -#if OCULUS_HMD_SUPPORTED_PLATFORMS - const ovrpNode DeviceOVRNode = OculusXRHMD::ToOvrpNode(DeviceID); - - bool bUseSystemHeadsetType = false; - ovrpSystemHeadset HeadsetType; - if (OVRP_SUCCESS(FOculusXRHMDModule::GetPluginWrapper().GetSystemHeadsetType2(&HeadsetType))) - { - bUseSystemHeadsetType = true; - } - - if (DeviceOVRNode != ovrpNode_None) - { - for (uint32 DeviceIndex = 0; DeviceIndex < RenderableDeviceCount; ++DeviceIndex) - { - const FRenderableDevice& RenderableDevice = RenderableDevices[DeviceIndex]; - if (RenderableDevice.OVRNode == DeviceOVRNode) - { - // If we have information about the current headset, load the model based of the headset information, otherwise load defaults. - if (bUseSystemHeadsetType) - { - if (HeadsetType >= RenderableDevice.MinDeviceRange && HeadsetType <= RenderableDevice.MaxDeviceRange) - { - DeviceMesh = RenderableDevice.MeshAssetRef.TryLoad(); - break; - } - } - else - { - DeviceMesh = RenderableDevice.MeshAssetRef.TryLoad(); - break; - } - } - } - } -#endif - return DeviceMesh; -} - -/* FOculusAssetManager -*****************************************************************************/ - -FOculusAssetManager::FOculusAssetManager() -{ - IModularFeatures::Get().RegisterModularFeature(IXRSystemAssets::GetModularFeatureName(), this); - - ResourceHolder = NewObject(); - ResourceHolder->AddToRoot(); -} - -FOculusAssetManager::~FOculusAssetManager() -{ - if (ResourceHolder) - { - ResourceHolder->ConditionalBeginDestroy(); - ResourceHolder = nullptr; - } - - IModularFeatures::Get().UnregisterModularFeature(IXRSystemAssets::GetModularFeatureName(), this); -} - -bool FOculusAssetManager::EnumerateRenderableDevices(TArray& DeviceListOut) -{ -#if OCULUS_HMD_SUPPORTED_PLATFORMS - using namespace OculusAssetManager_Impl; - DeviceListOut.Empty(RenderableDeviceCount); - - for (uint32 DeviceIndex = 0; DeviceIndex < RenderableDeviceCount; ++DeviceIndex) - { - const FRenderableDevice& RenderableDevice = RenderableDevices[DeviceIndex]; - - const int32 ExternalDeviceId = OculusXRHMD::ToExternalDeviceId(RenderableDevice.OVRNode); - DeviceListOut.Add(ExternalDeviceId); - } - - return true; -#else - return false; -#endif -} - -int32 FOculusAssetManager::GetDeviceId(EControllerHand ControllerHand) -{ -#if OCULUS_HMD_SUPPORTED_PLATFORMS - ovrpNode ControllerOVRNode = ovrpNode_None; - - switch (ControllerHand) - { - case EControllerHand::AnyHand: - // @TODO: maybe check if the right is tracking, if not choose left (if tracking)? - case EControllerHand::Right: - ControllerOVRNode = ovrpNode_HandRight; - break; - case EControllerHand::Left: - ControllerOVRNode = ovrpNode_HandLeft; - break; - - case EControllerHand::ExternalCamera: - ControllerOVRNode = ovrpNode_TrackerZero; - break; - // case EControllerHand::Special_1: - // ControllerOVRNode = ovrpNode_TrackerOne; - // break; - // case EControllerHand::Special_2: - // ControllerOVRNode = ovrpNode_TrackerTwo; - // break; - // case EControllerHand::Special_3: - // ControllerOVRNode = ovrpNode_TrackerThree; - // break; - - // case EControllerHand::Special_4: - // ControllerOVRNode = ovrpNode_DeviceObjectZero; - // break; - - default: - // ControllerOVRNode = ovrpNode_None => returns -1 - break; - } - return OculusXRHMD::ToExternalDeviceId(ControllerOVRNode); -#else - return INDEX_NONE; -#endif -} - -UPrimitiveComponent* FOculusAssetManager::CreateRenderComponent(const int32 DeviceId, AActor* Owner, EObjectFlags Flags, const bool /*bForceSynchronous*/, const FXRComponentLoadComplete& OnLoadComplete) -{ - UPrimitiveComponent* NewRenderComponent = nullptr; - if (UObject* DeviceMesh = OculusAssetManager_Impl::FindDeviceMesh(DeviceId)) - { - if (UStaticMesh* AsStaticMesh = Cast(DeviceMesh)) - { - const FName ComponentName = MakeUniqueObjectName(Owner, UStaticMeshComponent::StaticClass(), *FString::Printf(TEXT("%s_Device%d"), TEXT("Oculus"), DeviceId)); - UStaticMeshComponent* MeshComponent = NewObject(Owner, ComponentName, Flags); - - MeshComponent->SetStaticMesh(AsStaticMesh); - NewRenderComponent = MeshComponent; - } - else if (USkeletalMesh* AsSkeletalMesh = Cast(DeviceMesh)) - { - const FName ComponentName = MakeUniqueObjectName(Owner, USkeletalMeshComponent::StaticClass(), *FString::Printf(TEXT("%s_Device%d"), TEXT("Oculus"), DeviceId)); - USkeletalMeshComponent* SkelMeshComponent = NewObject(Owner, ComponentName, Flags); - - SkelMeshComponent->SetSkeletalMesh(AsSkeletalMesh); - NewRenderComponent = SkelMeshComponent; - } - NewRenderComponent->SetCollisionEnabled(ECollisionEnabled::NoCollision); - } - - OnLoadComplete.ExecuteIfBound(NewRenderComponent); - return NewRenderComponent; -} diff --git a/Plugins/MetaXR/Source/OculusXRHMD/Private/OculusXRAssetManager.h b/Plugins/MetaXR/Source/OculusXRHMD/Private/OculusXRAssetManager.h deleted file mode 100644 index 7254e3a..0000000 --- a/Plugins/MetaXR/Source/OculusXRHMD/Private/OculusXRAssetManager.h +++ /dev/null @@ -1,30 +0,0 @@ -// @lint-ignore-every LICENSELINT -// Copyright Epic Games, Inc. All Rights Reserved. - -#pragma once - -#include "IXRSystemAssets.h" -#include "OculusXRResourceHolder.h" -#include "UObject/SoftObjectPtr.h" - -/** - * - */ -class FOculusAssetManager : public IXRSystemAssets -{ -public: - FOculusAssetManager(); - virtual ~FOculusAssetManager(); - -public: - UOculusXRResourceHolder* GetResourceHolder() { return ResourceHolder; } - - //~ IXRSystemAssets interface - - virtual bool EnumerateRenderableDevices(TArray& DeviceListOut) override; - virtual int32 GetDeviceId(EControllerHand ControllerHand) override; - virtual UPrimitiveComponent* CreateRenderComponent(const int32 DeviceId, AActor* Owner, EObjectFlags Flags, const bool bForceSynchronous, const FXRComponentLoadComplete& OnLoadComplete) override; - -protected: - UOculusXRResourceHolder* ResourceHolder; -}; diff --git a/Plugins/MetaXR/Source/OculusXRHMD/Private/OculusXRDelegates.cpp b/Plugins/MetaXR/Source/OculusXRHMD/Private/OculusXRDelegates.cpp deleted file mode 100644 index 1543219..0000000 --- a/Plugins/MetaXR/Source/OculusXRHMD/Private/OculusXRDelegates.cpp +++ /dev/null @@ -1,8 +0,0 @@ -// @lint-ignore-every LICENSELINT -// Copyright Epic Games, Inc. All Rights Reserved. - -#include "OculusXRDelegates.h" - -FOculusEventDelegates::FOculusDisplayRefreshRateChangedEvent FOculusEventDelegates::OculusDisplayRefreshRateChanged; - -FOculusEventDelegates::FOculusEyeTrackingStateChangedEvent FOculusEventDelegates::OculusEyeTrackingStateChanged; diff --git a/Plugins/MetaXR/Source/OculusXRHMD/Private/OculusXRDelegates.h b/Plugins/MetaXR/Source/OculusXRHMD/Private/OculusXRDelegates.h deleted file mode 100644 index d49078a..0000000 --- a/Plugins/MetaXR/Source/OculusXRHMD/Private/OculusXRDelegates.h +++ /dev/null @@ -1,19 +0,0 @@ -// @lint-ignore-every LICENSELINT -// Copyright Epic Games, Inc. All Rights Reserved. - -#pragma once - -#include "CoreTypes.h" -#include "Delegates/Delegate.h" - -class FOculusEventDelegates -{ -public: - /** When the display refresh rate is changed */ - DECLARE_MULTICAST_DELEGATE_TwoParams(FOculusDisplayRefreshRateChangedEvent, float /*fromRefreshRate*/, float /*toRefreshRate*/); - static FOculusDisplayRefreshRateChangedEvent OculusDisplayRefreshRateChanged; - - /** When the eye tracking status changes */ - DECLARE_MULTICAST_DELEGATE_OneParam(FOculusEyeTrackingStateChangedEvent, bool /*bIsEyeTrackingOn*/); - static FOculusEyeTrackingStateChangedEvent OculusEyeTrackingStateChanged; -}; diff --git a/Plugins/MetaXR/Source/OculusXRHMD/Private/OculusXREventComponent.cpp b/Plugins/MetaXR/Source/OculusXRHMD/Private/OculusXREventComponent.cpp deleted file mode 100644 index 9ab5d46..0000000 --- a/Plugins/MetaXR/Source/OculusXRHMD/Private/OculusXREventComponent.cpp +++ /dev/null @@ -1,21 +0,0 @@ -// @lint-ignore-every LICENSELINT -// Copyright 1998-2020 Epic Games, Inc. All Rights Reserved. -#include "OculusXREventComponent.h" -#include "OculusXRHMD.h" -#include "OculusXRDelegates.h" - -void UOculusXREventComponent::OnRegister() -{ - Super::OnRegister(); - - FOculusEventDelegates::OculusDisplayRefreshRateChanged.AddUObject(this, &UOculusXREventComponent::OculusDisplayRefreshRateChanged_Handler); - FOculusEventDelegates::OculusEyeTrackingStateChanged.AddUObject(this, &UOculusXREventComponent::OculusEyeTrackingStateChanged_Handler); -} - -void UOculusXREventComponent::OnUnregister() -{ - Super::OnUnregister(); - - FOculusEventDelegates::OculusDisplayRefreshRateChanged.RemoveAll(this); - FOculusEventDelegates::OculusEyeTrackingStateChanged.RemoveAll(this); -} diff --git a/Plugins/MetaXR/Source/OculusXRHMD/Private/OculusXRFunctionLibrary.cpp b/Plugins/MetaXR/Source/OculusXRHMD/Private/OculusXRFunctionLibrary.cpp deleted file mode 100644 index 535803d..0000000 --- a/Plugins/MetaXR/Source/OculusXRHMD/Private/OculusXRFunctionLibrary.cpp +++ /dev/null @@ -1,768 +0,0 @@ -// @lint-ignore-every LICENSELINT -// Copyright Epic Games, Inc. All Rights Reserved. - -#include "OculusXRFunctionLibrary.h" -#include "OculusXRFunctionLibraryOpenXR.h" -#include "OculusXRFunctionLibraryOVR.h" -#include "OculusXRHMDPrivate.h" -#include "OculusXRHMD.h" -#include "OpenXR/OculusXROpenXRUtilities.h" -#include "Logging/MessageLog.h" - -#define LOCTEXT_NAMESPACE "OculusFunctionLibrary" - -//------------------------------------------------------------------------------------------------- -// UOculusXRFunctionLibrary -//------------------------------------------------------------------------------------------------- - -TSharedPtr UOculusXRFunctionLibrary::FunctionLibraryImpl = nullptr; - -TSharedPtr UOculusXRFunctionLibrary::GetOculusXRFunctionImpl() -{ - if (FunctionLibraryImpl == nullptr) - { - if (OculusXR::IsOpenXRSystem()) - { - FunctionLibraryImpl = MakeShared(); - } - else - { - FunctionLibraryImpl = MakeShared(); - } - } - return FunctionLibraryImpl; -} - -void UOculusXRFunctionLibrary::ShutdownXRFunctionLibrary() -{ - FunctionLibraryImpl = nullptr; -} - -UOculusXRFunctionLibrary::UOculusXRFunctionLibrary(const FObjectInitializer& ObjectInitializer) - : Super(ObjectInitializer) -{ -} - -OculusXRHMD::FOculusXRHMD* UOculusXRFunctionLibrary::GetOculusXRHMD() -{ - return OculusXRHMD::FOculusXRHMD::GetOculusXRHMD(); -} - -void UOculusXRFunctionLibrary::GetPose(FRotator& DeviceRotation, FVector& DevicePosition, FVector& NeckPosition, bool bUseOrienationForPlayerCamera, bool bUsePositionForPlayerCamera, const FVector PositionScale) -{ -#if OCULUS_HMD_SUPPORTED_PLATFORMS - TSharedPtr Impl = GetOculusXRFunctionImpl(); - if (Impl != nullptr) - { - Impl->GetPose(DeviceRotation, DevicePosition, NeckPosition); - } - else -#endif - { - DeviceRotation = FRotator::ZeroRotator; - DevicePosition = FVector::ZeroVector; - NeckPosition = FVector::ZeroVector; - } -} - -void UOculusXRFunctionLibrary::SetBaseRotationAndBaseOffsetInMeters(FRotator Rotation, FVector BaseOffsetInMeters, EOrientPositionSelector::Type Options) -{ -#if OCULUS_HMD_SUPPORTED_PLATFORMS - TSharedPtr Impl = GetOculusXRFunctionImpl(); - if (Impl != nullptr) - { - Impl->SetBaseRotationAndBaseOffsetInMeters(Rotation, BaseOffsetInMeters, Options); - } -#endif -} - -void UOculusXRFunctionLibrary::GetBaseRotationAndBaseOffsetInMeters(FRotator& OutRotation, FVector& OutBaseOffsetInMeters) -{ -#if OCULUS_HMD_SUPPORTED_PLATFORMS - TSharedPtr Impl = GetOculusXRFunctionImpl(); - if (Impl != nullptr) - { - Impl->GetBaseRotationAndBaseOffsetInMeters(OutRotation, OutBaseOffsetInMeters); - } -#endif -} - -void UOculusXRFunctionLibrary::GetRawSensorData(FVector& AngularAcceleration, FVector& LinearAcceleration, FVector& AngularVelocity, FVector& LinearVelocity, float& TimeInSeconds, EOculusXRTrackedDeviceType DeviceType) -{ -#if OCULUS_HMD_SUPPORTED_PLATFORMS - TSharedPtr Impl = GetOculusXRFunctionImpl(); - if (Impl != nullptr) - { - Impl->GetRawSensorData(AngularAcceleration, LinearAcceleration, AngularVelocity, LinearVelocity, TimeInSeconds, DeviceType); - } -#endif -} - -bool UOculusXRFunctionLibrary::IsDeviceTracked(EOculusXRTrackedDeviceType DeviceType) -{ - bool bIsDeviceTracked = false; -#if OCULUS_HMD_SUPPORTED_PLATFORMS - TSharedPtr Impl = GetOculusXRFunctionImpl(); - if (Impl != nullptr) - { - bIsDeviceTracked = Impl->IsDeviceTracked(DeviceType); - } -#endif - return bIsDeviceTracked; -} - -void UOculusXRFunctionLibrary::GetSuggestedCpuAndGpuPerformanceLevels(EOculusXRProcessorPerformanceLevel& CpuPerfLevel, EOculusXRProcessorPerformanceLevel& GpuPerfLevel) -{ -#if OCULUS_HMD_SUPPORTED_PLATFORMS - TSharedPtr Impl = GetOculusXRFunctionImpl(); - if (Impl != nullptr) - { - Impl->GetSuggestedCpuAndGpuPerformanceLevels(CpuPerfLevel, GpuPerfLevel); - } -#endif -} - -void UOculusXRFunctionLibrary::SetSuggestedCpuAndGpuPerformanceLevels(EOculusXRProcessorPerformanceLevel CpuPerfLevel, EOculusXRProcessorPerformanceLevel GpuPerfLevel) -{ -#if OCULUS_HMD_SUPPORTED_PLATFORMS - TSharedPtr Impl = GetOculusXRFunctionImpl(); - if (Impl != nullptr) - { - Impl->SetSuggestedCpuAndGpuPerformanceLevels(CpuPerfLevel, GpuPerfLevel); - } -#endif -} - -void UOculusXRFunctionLibrary::SetCPUAndGPULevels(int CPULevel, int GPULevel) -{ - // Deprecated. Please use Get/SetSuggestedCpuAndGpuPerformanceLevels instead. -} - -bool UOculusXRFunctionLibrary::GetUserProfile(FOculusXRHmdUserProfile& Profile) -{ - bool bGetUserProfile = false; -#if OCULUS_HMD_SUPPORTED_PLATFORMS - TSharedPtr Impl = GetOculusXRFunctionImpl(); - if (Impl != nullptr) - { - bGetUserProfile = Impl->GetUserProfile(Profile); - } -#endif - return bGetUserProfile; -} - -void UOculusXRFunctionLibrary::SetBaseRotationAndPositionOffset(FRotator BaseRot, FVector PosOffset, EOrientPositionSelector::Type Options) -{ -#if OCULUS_HMD_SUPPORTED_PLATFORMS - TSharedPtr Impl = GetOculusXRFunctionImpl(); - if (Impl != nullptr) - { - Impl->SetBaseRotationAndPositionOffset(BaseRot, PosOffset, Options); - } -#endif -} - -void UOculusXRFunctionLibrary::GetBaseRotationAndPositionOffset(FRotator& OutRot, FVector& OutPosOffset) -{ -#if OCULUS_HMD_SUPPORTED_PLATFORMS - TSharedPtr Impl = GetOculusXRFunctionImpl(); - if (Impl != nullptr) - { - Impl->GetBaseRotationAndPositionOffset(OutRot, OutPosOffset); - } -#endif -} - -void UOculusXRFunctionLibrary::AddLoadingSplashScreen(class UTexture2D* Texture, FVector TranslationInMeters, FRotator Rotation, FVector2D SizeInMeters, FRotator DeltaRotation, bool bClearBeforeAdd) -{ -#if OCULUS_HMD_SUPPORTED_PLATFORMS - TSharedPtr Impl = GetOculusXRFunctionImpl(); - if (Impl != nullptr) - { - Impl->AddLoadingSplashScreen(Texture, TranslationInMeters, Rotation, SizeInMeters, DeltaRotation, bClearBeforeAdd); - } -#endif -} - -void UOculusXRFunctionLibrary::ClearLoadingSplashScreens() -{ -#if OCULUS_HMD_SUPPORTED_PLATFORMS - TSharedPtr Impl = GetOculusXRFunctionImpl(); - if (Impl != nullptr) - { - Impl->ClearLoadingSplashScreens(); - } -#endif -} - -bool UOculusXRFunctionLibrary::HasInputFocus() -{ - bool bHasInputFocus = false; -#if OCULUS_HMD_SUPPORTED_PLATFORMS - TSharedPtr Impl = GetOculusXRFunctionImpl(); - if (Impl != nullptr) - { - bHasInputFocus = Impl->HasInputFocus(); - } -#endif - return bHasInputFocus; -} - -bool UOculusXRFunctionLibrary::HasSystemOverlayPresent() -{ - bool bHasSystemOverlayPresent = false; -#if OCULUS_HMD_SUPPORTED_PLATFORMS - TSharedPtr Impl = GetOculusXRFunctionImpl(); - if (Impl != nullptr) - { - bHasSystemOverlayPresent = Impl->HasSystemOverlayPresent(); - } -#endif - return bHasSystemOverlayPresent; -} - -void UOculusXRFunctionLibrary::GetGPUUtilization(bool& IsGPUAvailable, float& GPUUtilization) -{ - GPUUtilization = 0.0f; -#if OCULUS_HMD_SUPPORTED_PLATFORMS - TSharedPtr Impl = GetOculusXRFunctionImpl(); - if (Impl != nullptr) - { - Impl->GetGPUUtilization(IsGPUAvailable, GPUUtilization); - } -#endif -} - -float UOculusXRFunctionLibrary::GetGPUFrameTime() -{ - float FrameTime = 0; -#if OCULUS_HMD_SUPPORTED_PLATFORMS - TSharedPtr Impl = GetOculusXRFunctionImpl(); - if (Impl != nullptr) - { - FrameTime = Impl->GetGPUFrameTime(); - } -#endif - return FrameTime; -} - -void UOculusXRFunctionLibrary::GetPerformanceMetrics(FOculusXRPerformanceMetrics& PerformanceMetrics) -{ -#if OCULUS_HMD_SUPPORTED_PLATFORMS - TSharedPtr Impl = GetOculusXRFunctionImpl(); - if (Impl != nullptr) - { - Impl->GetPerformanceMetrics(PerformanceMetrics); - } -#endif -} - - -EOculusXRFoveatedRenderingMethod UOculusXRFunctionLibrary::GetFoveatedRenderingMethod() -{ - EOculusXRFoveatedRenderingMethod FoveatedRenderingMethod = EOculusXRFoveatedRenderingMethod::FixedFoveatedRendering; -#if OCULUS_HMD_SUPPORTED_PLATFORMS - TSharedPtr Impl = GetOculusXRFunctionImpl(); - if (Impl != nullptr) - { - FoveatedRenderingMethod = Impl->GetFoveatedRenderingMethod(); - } -#endif - return FoveatedRenderingMethod; -} - -void UOculusXRFunctionLibrary::SetFoveatedRenderingMethod(EOculusXRFoveatedRenderingMethod Method) -{ -#if OCULUS_HMD_SUPPORTED_PLATFORMS - TSharedPtr Impl = GetOculusXRFunctionImpl(); - if (Impl != nullptr) - { - Impl->SetFoveatedRenderingMethod(Method); - } -#endif -} - -void UOculusXRFunctionLibrary::SetFoveatedRenderingLevel(EOculusXRFoveatedRenderingLevel level, bool isDynamic) -{ -#if OCULUS_HMD_SUPPORTED_PLATFORMS - TSharedPtr Impl = GetOculusXRFunctionImpl(); - if (Impl != nullptr) - { - Impl->SetFoveatedRenderingLevel(level, isDynamic); - } -#endif -} - -EOculusXRFoveatedRenderingLevel UOculusXRFunctionLibrary::GetFoveatedRenderingLevel() -{ - EOculusXRFoveatedRenderingLevel FoveatedRenderingLevel = EOculusXRFoveatedRenderingLevel::Off; -#if OCULUS_HMD_SUPPORTED_PLATFORMS - TSharedPtr Impl = GetOculusXRFunctionImpl(); - if (Impl != nullptr) - { - FoveatedRenderingLevel = Impl->GetFoveatedRenderingLevel(); - } -#endif - return FoveatedRenderingLevel; -} - -bool UOculusXRFunctionLibrary::GetEyeTrackedFoveatedRenderingSupported() -{ - bool bEyeTrackedFoveatedRenderingSupported = false; -#if OCULUS_HMD_SUPPORTED_PLATFORMS - TSharedPtr Impl = GetOculusXRFunctionImpl(); - if (Impl != nullptr) - { - bEyeTrackedFoveatedRenderingSupported = Impl->GetEyeTrackedFoveatedRenderingSupported(); - } -#endif - return bEyeTrackedFoveatedRenderingSupported; -} - -FString UOculusXRFunctionLibrary::GetDeviceName() -{ - FString DeviceName; -#if OCULUS_HMD_SUPPORTED_PLATFORMS - TSharedPtr Impl = GetOculusXRFunctionImpl(); - if (Impl != nullptr) - { - DeviceName = Impl->GetDeviceName(); - } -#endif - return DeviceName; -} - -EOculusXRDeviceType UOculusXRFunctionLibrary::GetDeviceType() -{ - EOculusXRDeviceType DeviceType = EOculusXRDeviceType::OculusUnknown; -#if OCULUS_HMD_SUPPORTED_PLATFORMS - TSharedPtr Impl = GetOculusXRFunctionImpl(); - if (Impl != nullptr) - { - DeviceType = Impl->GetDeviceType(); - } -#endif - return DeviceType; -} - -EOculusXRControllerType UOculusXRFunctionLibrary::GetControllerType(EControllerHand deviceHand) -{ - EOculusXRControllerType ControllerType = EOculusXRControllerType::Unknown; -#if OCULUS_HMD_SUPPORTED_PLATFORMS - TSharedPtr Impl = GetOculusXRFunctionImpl(); - if (Impl != nullptr) - { - ControllerType = Impl->GetControllerType(deviceHand); - } -#endif - return ControllerType; -} - -TArray UOculusXRFunctionLibrary::GetAvailableDisplayFrequencies() -{ - TArray FreqArray; -#if OCULUS_HMD_SUPPORTED_PLATFORMS - TSharedPtr Impl = GetOculusXRFunctionImpl(); - if (Impl != nullptr) - { - FreqArray = Impl->GetAvailableDisplayFrequencies(); - } -#endif - return FreqArray; -} - -float UOculusXRFunctionLibrary::GetCurrentDisplayFrequency() -{ - float Frequency = 0.0f; -#if OCULUS_HMD_SUPPORTED_PLATFORMS - TSharedPtr Impl = GetOculusXRFunctionImpl(); - if (Impl != nullptr) - { - Frequency = Impl->GetCurrentDisplayFrequency(); - } -#endif - return Frequency; -} - -void UOculusXRFunctionLibrary::SetDisplayFrequency(float RequestedFrequency) -{ -#if OCULUS_HMD_SUPPORTED_PLATFORMS - TSharedPtr Impl = GetOculusXRFunctionImpl(); - if (Impl != nullptr) - { - Impl->SetDisplayFrequency(RequestedFrequency); - } -#endif -} - -void UOculusXRFunctionLibrary::EnablePositionTracking(bool bPositionTracking) -{ -#if OCULUS_HMD_SUPPORTED_PLATFORMS - TSharedPtr Impl = GetOculusXRFunctionImpl(); - if (Impl != nullptr) - { - Impl->EnablePositionTracking(bPositionTracking); - } -#endif -} - -void UOculusXRFunctionLibrary::EnableOrientationTracking(bool bOrientationTracking) -{ -#if OCULUS_HMD_SUPPORTED_PLATFORMS - TSharedPtr Impl = GetOculusXRFunctionImpl(); - if (Impl != nullptr) - { - Impl->EnableOrientationTracking(bOrientationTracking); - } -#endif -} - -void UOculusXRFunctionLibrary::SetColorScaleAndOffset(FLinearColor ColorScale, FLinearColor ColorOffset, bool bApplyToAllLayers) -{ -#if OCULUS_HMD_SUPPORTED_PLATFORMS - TSharedPtr Impl = GetOculusXRFunctionImpl(); - if (Impl != nullptr) - { - Impl->SetColorScaleAndOffset(ColorScale, ColorOffset, bApplyToAllLayers); - } -#endif -} - -class IStereoLayers* UOculusXRFunctionLibrary::GetStereoLayers() -{ - IStereoLayers* Layers = nullptr; -#if OCULUS_HMD_SUPPORTED_PLATFORMS - TSharedPtr Impl = GetOculusXRFunctionImpl(); - if (Impl != nullptr) - { - Layers = Impl->GetStereoLayers(); - } -#endif - return Layers; -} - -bool UOculusXRFunctionLibrary::IsGuardianConfigured() -{ - bool bIsGuardianConfigured = false; -#if OCULUS_HMD_SUPPORTED_PLATFORMS - TSharedPtr Impl = GetOculusXRFunctionImpl(); - if (Impl != nullptr) - { - bIsGuardianConfigured = Impl->IsGuardianConfigured(); - } -#endif - return bIsGuardianConfigured; -} - -bool UOculusXRFunctionLibrary::IsGuardianDisplayed() -{ - bool bIsGuardianDisplayed = false; -#if OCULUS_HMD_SUPPORTED_PLATFORMS - TSharedPtr Impl = GetOculusXRFunctionImpl(); - if (Impl != nullptr) - { - bIsGuardianDisplayed = Impl->IsGuardianDisplayed(); - } -#endif - return bIsGuardianDisplayed; -} - -TArray UOculusXRFunctionLibrary::GetGuardianPoints(EOculusXRBoundaryType BoundaryType, bool UsePawnSpace /* = false */) -{ - TArray BoundaryPointList; -#if OCULUS_HMD_SUPPORTED_PLATFORMS - TSharedPtr Impl = GetOculusXRFunctionImpl(); - if (Impl != nullptr) - { - BoundaryPointList = Impl->GetGuardianPoints(BoundaryType, UsePawnSpace); - } -#endif - return BoundaryPointList; -} - -FVector UOculusXRFunctionLibrary::GetGuardianDimensions(EOculusXRBoundaryType BoundaryType) -{ - FVector Dimensions = FVector::ZeroVector; -#if OCULUS_HMD_SUPPORTED_PLATFORMS - TSharedPtr Impl = GetOculusXRFunctionImpl(); - if (Impl != nullptr) - { - Dimensions = Impl->GetGuardianDimensions(BoundaryType); - } -#endif - return Dimensions; -} - -FTransform UOculusXRFunctionLibrary::GetPlayAreaTransform() -{ - FTransform Transform; -#if OCULUS_HMD_SUPPORTED_PLATFORMS - TSharedPtr Impl = GetOculusXRFunctionImpl(); - if (Impl != nullptr) - { - Transform = Impl->GetPlayAreaTransform(); - } -#endif - return Transform; -} - -FOculusXRGuardianTestResult UOculusXRFunctionLibrary::GetPointGuardianIntersection(const FVector Point, EOculusXRBoundaryType BoundaryType) -{ - FOculusXRGuardianTestResult InteractionInfo; - memset(&InteractionInfo, 0, sizeof(FOculusXRGuardianTestResult)); -#if OCULUS_HMD_SUPPORTED_PLATFORMS - TSharedPtr Impl = GetOculusXRFunctionImpl(); - if (Impl != nullptr) - { - InteractionInfo = Impl->GetPointGuardianIntersection(Point, BoundaryType); - } -#endif - return InteractionInfo; -} - -FOculusXRGuardianTestResult UOculusXRFunctionLibrary::GetNodeGuardianIntersection(EOculusXRTrackedDeviceType DeviceType, EOculusXRBoundaryType BoundaryType) -{ - FOculusXRGuardianTestResult InteractionInfo; - memset(&InteractionInfo, 0, sizeof(FOculusXRGuardianTestResult)); -#if OCULUS_HMD_SUPPORTED_PLATFORMS - TSharedPtr Impl = GetOculusXRFunctionImpl(); - if (Impl != nullptr) - { - InteractionInfo = Impl->GetNodeGuardianIntersection(DeviceType, BoundaryType); - } -#endif - return InteractionInfo; -} - -void UOculusXRFunctionLibrary::SetGuardianVisibility(bool GuardianVisible) -{ -#if OCULUS_HMD_SUPPORTED_PLATFORMS - TSharedPtr Impl = GetOculusXRFunctionImpl(); - if (Impl != nullptr) - { - Impl->SetGuardianVisibility(GuardianVisible); - } -#endif -} - -bool UOculusXRFunctionLibrary::GetSystemHmd3DofModeEnabled() -{ - bool bGetSystemHmd3DofModeEnabled = false; -#if OCULUS_HMD_SUPPORTED_PLATFORMS - TSharedPtr Impl = GetOculusXRFunctionImpl(); - if (Impl != nullptr) - { - bGetSystemHmd3DofModeEnabled = Impl->GetSystemHmd3DofModeEnabled(); - } -#endif - return bGetSystemHmd3DofModeEnabled; -} - -EOculusXRColorSpace UOculusXRFunctionLibrary::GetHmdColorDesc() -{ - EOculusXRColorSpace HmdColorSpace = EOculusXRColorSpace::Unknown; -#if OCULUS_HMD_SUPPORTED_PLATFORMS - TSharedPtr Impl = GetOculusXRFunctionImpl(); - if (Impl != nullptr) - { - HmdColorSpace = Impl->GetHmdColorDesc(); - } -#endif - return HmdColorSpace; -} - -void UOculusXRFunctionLibrary::SetClientColorDesc(EOculusXRColorSpace ColorSpace) -{ -#if OCULUS_HMD_SUPPORTED_PLATFORMS - TSharedPtr Impl = GetOculusXRFunctionImpl(); - if (Impl != nullptr) - { - Impl->SetClientColorDesc(ColorSpace); - } -#endif -} - -void UOculusXRFunctionLibrary::SetLocalDimmingOn(bool LocalDimmingOn) -{ -#if OCULUS_HMD_SUPPORTED_PLATFORMS - TSharedPtr Impl = GetOculusXRFunctionImpl(); - if (Impl != nullptr) - { - Impl->SetLocalDimmingOn(LocalDimmingOn); - } -#endif -} - -bool UOculusXRFunctionLibrary::IsPassthroughSupported() -{ - bool bIsPassthroughSupported = false; -#if OCULUS_HMD_SUPPORTED_PLATFORMS - TSharedPtr Impl = GetOculusXRFunctionImpl(); - if (Impl != nullptr) - { - bIsPassthroughSupported = Impl->IsPassthroughSupported(); - } -#endif - return bIsPassthroughSupported; -} - -bool UOculusXRFunctionLibrary::IsColorPassthroughSupported() -{ - bool bIsColorPassthroughSupported = false; -#if OCULUS_HMD_SUPPORTED_PLATFORMS - TSharedPtr Impl = GetOculusXRFunctionImpl(); - if (Impl != nullptr) - { - bIsColorPassthroughSupported = Impl->IsColorPassthroughSupported(); - } -#endif - return bIsColorPassthroughSupported; -} - -void UOculusXRFunctionLibrary::StartEnvironmentDepth() -{ -#if OCULUS_HMD_SUPPORTED_PLATFORMS - TSharedPtr Impl = GetOculusXRFunctionImpl(); - if (Impl != nullptr) - { - Impl->StartEnvironmentDepth(); - } -#endif -} - -void UOculusXRFunctionLibrary::StopEnvironmentDepth() -{ -#if OCULUS_HMD_SUPPORTED_PLATFORMS - TSharedPtr Impl = GetOculusXRFunctionImpl(); - if (Impl != nullptr) - { - Impl->StopEnvironmentDepth(); - } -#endif -} - -bool UOculusXRFunctionLibrary::IsEnvironmentDepthStarted() -{ - bool bIsEnvironmentDepthStarted = false; -#if OCULUS_HMD_SUPPORTED_PLATFORMS - TSharedPtr Impl = GetOculusXRFunctionImpl(); - if (Impl != nullptr) - { - bIsEnvironmentDepthStarted = Impl->IsEnvironmentDepthStarted(); - } -#endif - return bIsEnvironmentDepthStarted; -} - -void UOculusXRFunctionLibrary::SetEnvironmentDepthHandRemoval(bool RemoveHands) -{ -#if OCULUS_HMD_SUPPORTED_PLATFORMS - TSharedPtr Impl = GetOculusXRFunctionImpl(); - if (Impl != nullptr) - { - Impl->SetEnvironmentDepthHandRemoval(RemoveHands); - } -#endif -} - -void UOculusXRFunctionLibrary::SetXROcclusionsMode(UObject* WorldContextObject, EOculusXROcclusionsMode Mode) -{ -#if OCULUS_HMD_SUPPORTED_PLATFORMS - TSharedPtr Impl = GetOculusXRFunctionImpl(); - if (Impl != nullptr) - { - Impl->SetXROcclusionsMode(WorldContextObject, Mode); - } -#endif -} - -void UOculusXRFunctionLibrary::SetEyeBufferSharpenType(EOculusXREyeBufferSharpenType EyeBufferSharpenType) -{ -#if OCULUS_HMD_SUPPORTED_PLATFORMS - TSharedPtr Impl = GetOculusXRFunctionImpl(); - if (Impl != nullptr) - { - Impl->SetEyeBufferSharpenType(EyeBufferSharpenType); - } -#endif -} - -bool UOculusXRFunctionLibrary::IsPassthroughRecommended() -{ - bool bIsPassthroughRecommended = false; -#if OCULUS_HMD_SUPPORTED_PLATFORMS - TSharedPtr Impl = GetOculusXRFunctionImpl(); - if (Impl != nullptr) - { - bIsPassthroughRecommended = Impl->IsPassthroughRecommended(); - } -#endif - return bIsPassthroughRecommended; -} -void UOculusXRFunctionLibrary::GetOpenXRInstanceProcAddrFunc(void** func) -{ -#if OCULUS_HMD_SUPPORTED_PLATFORMS - TSharedPtr Impl = GetOculusXRFunctionImpl(); - if (Impl != nullptr) - { - Impl->GetOpenXRInstanceProcAddrFunc(func); - } -#endif -} - -void UOculusXRFunctionLibrary::GetNativeOpenXRHandles(uint64_t* OutXrInstance, uint64_t* OutXrSession) -{ -#if OCULUS_HMD_SUPPORTED_PLATFORMS - TSharedPtr Impl = GetOculusXRFunctionImpl(); - if (Impl != nullptr) - { - Impl->GetNativeOpenXRHandles(OutXrInstance, OutXrSession); - } -#endif -} - -void UOculusXRFunctionLibrary::GetAppSpace(uint64_t* OutAppSpace) -{ -#if OCULUS_HMD_SUPPORTED_PLATFORMS - TSharedPtr Impl = GetOculusXRFunctionImpl(); - if (Impl != nullptr) - { - Impl->GetAppSpace(OutAppSpace); - } -#endif -} - -void UOculusXRFunctionLibrary::GetNextPredictedDisplayTime(uint64_t* NextPredictedDisplayTime) -{ -#if OCULUS_HMD_SUPPORTED_PLATFORMS - TSharedPtr Impl = GetOculusXRFunctionImpl(); - if (Impl != nullptr) - { - Impl->GetNextPredictedDisplayTime(NextPredictedDisplayTime); - } -#endif -} - -void UOculusXRFunctionLibrary::RegisterOpenXrEventHandler(void (*OpenXrEventHandler)(void* data, void* context), void* Context) -{ -#if OCULUS_HMD_SUPPORTED_PLATFORMS - TSharedPtr Impl = GetOculusXRFunctionImpl(); - if (Impl != nullptr) - { - Impl->RegisterOpenXrEventHandler(OpenXrEventHandler, Context); - } -#endif -} - -void UOculusXRFunctionLibrary::UnregisterOpenXrEventHandler(void (*OpenXrEventHandler)(void* data, void* context)) -{ -#if OCULUS_HMD_SUPPORTED_PLATFORMS - TSharedPtr Impl = GetOculusXRFunctionImpl(); - if (Impl != nullptr) - { - Impl->UnregisterOpenXrEventHandler(OpenXrEventHandler); - } -#endif -} - -#undef LOCTEXT_NAMESPACE diff --git a/Plugins/MetaXR/Source/OculusXRHMD/Private/OculusXRFunctionLibraryOVR.cpp b/Plugins/MetaXR/Source/OculusXRHMD/Private/OculusXRFunctionLibraryOVR.cpp deleted file mode 100644 index a948b71..0000000 --- a/Plugins/MetaXR/Source/OculusXRHMD/Private/OculusXRFunctionLibraryOVR.cpp +++ /dev/null @@ -1,903 +0,0 @@ -// Copyright (c) Meta Platforms, Inc. and affiliates. - -#include "OculusXRFunctionLibraryOVR.h" - -#include "OculusXRHMD.h" -#include "OpenXR/OculusXROpenXRUtilities.h" - -namespace OculusXRHMD -{ - void FOculusXRFunctionLibraryOVR::GetPose(FRotator& DeviceRotation, FVector& DevicePosition, FVector& NeckPosition) - { - OculusXRHMD::FOculusXRHMD* OculusXRHMD = OculusXRHMD::FOculusXRHMD::GetOculusXRHMD(); - if (OculusXRHMD && OculusXRHMD->IsHeadTrackingAllowed()) - { - FQuat HeadOrientation = FQuat::Identity; - FVector HeadPosition = FVector::ZeroVector; - OculusXRHMD->GetCurrentPose(OculusXRHMD->HMDDeviceId, HeadOrientation, HeadPosition); - DeviceRotation = HeadOrientation.Rotator(); - DevicePosition = HeadPosition; - NeckPosition = OculusXRHMD->GetNeckPosition(HeadOrientation, HeadPosition); - } - else - { - DeviceRotation = FRotator::ZeroRotator; - DevicePosition = FVector::ZeroVector; - NeckPosition = FVector::ZeroVector; - } - } - - void FOculusXRFunctionLibraryOVR::SetBaseRotationAndBaseOffsetInMeters(FRotator Rotation, FVector BaseOffsetInMeters, EOrientPositionSelector::Type Options) - { - OculusXRHMD::FOculusXRHMD* OculusXRHMD = OculusXRHMD::FOculusXRHMD::GetOculusXRHMD(); - if (OculusXRHMD != nullptr) - { - if ((Options == EOrientPositionSelector::Orientation) || (Options == EOrientPositionSelector::OrientationAndPosition)) - { - OculusXRHMD->SetBaseRotation(Rotation); - } - if ((Options == EOrientPositionSelector::Position) || (Options == EOrientPositionSelector::OrientationAndPosition)) - { - OculusXRHMD->SetBaseOffsetInMeters(BaseOffsetInMeters); - } - } - } - - void FOculusXRFunctionLibraryOVR::GetBaseRotationAndBaseOffsetInMeters(FRotator& OutRotation, FVector& OutBaseOffsetInMeters) - { - OculusXRHMD::FOculusXRHMD* OculusXRHMD = OculusXRHMD::FOculusXRHMD::GetOculusXRHMD(); - if (OculusXRHMD != nullptr) - { - OutRotation = OculusXRHMD->GetBaseRotation(); - OutBaseOffsetInMeters = OculusXRHMD->GetBaseOffsetInMeters(); - } - else - { - OutRotation = FRotator::ZeroRotator; - OutBaseOffsetInMeters = FVector::ZeroVector; - } - } - - void FOculusXRFunctionLibraryOVR::GetRawSensorData(FVector& AngularAcceleration, FVector& LinearAcceleration, FVector& AngularVelocity, FVector& LinearVelocity, float& TimeInSeconds, EOculusXRTrackedDeviceType DeviceType) - { - OculusXRHMD::FOculusXRHMD* OculusXRHMD = OculusXRHMD::FOculusXRHMD::GetOculusXRHMD(); - if (OculusXRHMD != nullptr && OculusXRHMD->IsHMDActive()) - { - ovrpPoseStatef state; - if (OVRP_SUCCESS(FOculusXRHMDModule::GetPluginWrapper().GetNodePoseState3(ovrpStep_Render, OVRP_CURRENT_FRAMEINDEX, OculusXRHMD::ToOvrpNode(DeviceType), &state))) - { - AngularAcceleration = OculusXRHMD::ToFVector(state.AngularAcceleration); - LinearAcceleration = OculusXRHMD::ToFVector(state.Acceleration); - AngularVelocity = OculusXRHMD::ToFVector(state.AngularVelocity); - LinearVelocity = OculusXRHMD::ToFVector(state.Velocity); - TimeInSeconds = state.Time; - } - } - } - - bool FOculusXRFunctionLibraryOVR::IsDeviceTracked(EOculusXRTrackedDeviceType DeviceType) - { - OculusXRHMD::FOculusXRHMD* OculusXRHMD = OculusXRHMD::FOculusXRHMD::GetOculusXRHMD(); - if (OculusXRHMD != nullptr && OculusXRHMD->IsHMDActive()) - { - ovrpBool Present; - if (OVRP_SUCCESS(FOculusXRHMDModule::GetPluginWrapper().GetNodePresent2(OculusXRHMD::ToOvrpNode(DeviceType), &Present))) - { - return Present != ovrpBool_False; - } - else - { - return false; - } - } - return false; - } - - void FOculusXRFunctionLibraryOVR::GetSuggestedCpuAndGpuPerformanceLevels(EOculusXRProcessorPerformanceLevel& CpuPerfLevel, EOculusXRProcessorPerformanceLevel& GpuPerfLevel) - { - OculusXRHMD::FOculusXRHMD* OculusXRHMD = OculusXRHMD::FOculusXRHMD::GetOculusXRHMD(); - if (OculusXRHMD != nullptr && OculusXRHMD->IsHMDActive()) - { - OculusXRHMD->GetSuggestedCpuAndGpuPerformanceLevels(CpuPerfLevel, GpuPerfLevel); - } - } - - void FOculusXRFunctionLibraryOVR::SetSuggestedCpuAndGpuPerformanceLevels(EOculusXRProcessorPerformanceLevel CpuPerfLevel, EOculusXRProcessorPerformanceLevel GpuPerfLevel) - { - OculusXRHMD::FOculusXRHMD* OculusXRHMD = OculusXRHMD::FOculusXRHMD::GetOculusXRHMD(); - if (OculusXRHMD != nullptr && OculusXRHMD->IsHMDActive()) - { - OculusXRHMD->SetSuggestedCpuAndGpuPerformanceLevels(CpuPerfLevel, GpuPerfLevel); - } - } - - bool FOculusXRFunctionLibraryOVR::GetUserProfile(FOculusXRHmdUserProfile& Profile) - { - OculusXRHMD::FOculusXRHMD* OculusXRHMD = OculusXRHMD::FOculusXRHMD::GetOculusXRHMD(); - if (OculusXRHMD != nullptr) - { - OculusXRHMD::FOculusXRHMD::UserProfile Data; - if (OculusXRHMD->GetUserProfile(Data)) - { - Profile.Name = ""; - Profile.Gender = "Unknown"; - Profile.PlayerHeight = 0.0f; - Profile.EyeHeight = Data.EyeHeight; - Profile.IPD = Data.IPD; - Profile.NeckToEyeDistance = FVector2D(Data.EyeDepth, 0.0f); - return true; - } - } - return false; - } - - void FOculusXRFunctionLibraryOVR::SetBaseRotationAndPositionOffset(FRotator BaseRot, FVector PosOffset, EOrientPositionSelector::Type Options) - { - OculusXRHMD::FOculusXRHMD* OculusXRHMD = OculusXRHMD::FOculusXRHMD::GetOculusXRHMD(); - if (OculusXRHMD != nullptr) - { - if (Options == EOrientPositionSelector::Orientation || Options == EOrientPositionSelector::OrientationAndPosition) - { - OculusXRHMD->SetBaseRotation(BaseRot); - } - } - } - - void FOculusXRFunctionLibraryOVR::GetBaseRotationAndPositionOffset(FRotator& OutRot, FVector& OutPosOffset) - { - OculusXRHMD::FOculusXRHMD* OculusXRHMD = OculusXRHMD::FOculusXRHMD::GetOculusXRHMD(); - if (OculusXRHMD != nullptr) - { - OutRot = OculusXRHMD->GetBaseRotation(); - OutPosOffset = FVector::ZeroVector; - } - } - - void FOculusXRFunctionLibraryOVR::AddLoadingSplashScreen(class UTexture2D* Texture, FVector TranslationInMeters, FRotator Rotation, FVector2D SizeInMeters, FRotator DeltaRotation, bool bClearBeforeAdd) - { - OculusXRHMD::FOculusXRHMD* OculusXRHMD = OculusXRHMD::FOculusXRHMD::GetOculusXRHMD(); - if (OculusXRHMD != nullptr) - { - OculusXRHMD::FSplash* Splash = OculusXRHMD->GetSplash(); - if (Splash) - { - if (bClearBeforeAdd) - { - Splash->ClearSplashes(); - } - - FOculusXRSplashDesc Desc; - Desc.LoadingTexture = Texture; - Desc.QuadSizeInMeters = SizeInMeters; - Desc.TransformInMeters = FTransform(Rotation, TranslationInMeters); - Desc.DeltaRotation = FQuat(DeltaRotation); - Splash->AddSplash(Desc); - } - } - } - - void FOculusXRFunctionLibraryOVR::ClearLoadingSplashScreens() - { - OculusXRHMD::FOculusXRHMD* OculusXRHMD = OculusXRHMD::FOculusXRHMD::GetOculusXRHMD(); - if (OculusXRHMD != nullptr) - { - OculusXRHMD::FSplash* Splash = OculusXRHMD->GetSplash(); - if (Splash) - { - Splash->ClearSplashes(); - } - } - } - - bool FOculusXRFunctionLibraryOVR::HasInputFocus() - { - const OculusXRHMD::FOculusXRHMD* const OculusXRHMD = OculusXRHMD::FOculusXRHMD::GetOculusXRHMD(); - if (OculusXRHMD != nullptr && OculusXRHMD->IsHMDActive()) - { - ovrpBool HasFocus; - if (OVRP_SUCCESS(FOculusXRHMDModule::GetPluginWrapper().GetAppHasInputFocus(&HasFocus))) - { - return HasFocus != ovrpBool_False; - } - } - return false; - } - - bool FOculusXRFunctionLibraryOVR::HasSystemOverlayPresent() - { - const OculusXRHMD::FOculusXRHMD* const OculusXRHMD = OculusXRHMD::FOculusXRHMD::GetOculusXRHMD(); - if (OculusXRHMD != nullptr && OculusXRHMD->IsHMDActive()) - { - ovrpBool HasFocus; - if (OVRP_SUCCESS(FOculusXRHMDModule::GetPluginWrapper().GetAppHasInputFocus(&HasFocus))) - { - return HasFocus == ovrpBool_False; - } - } - return false; - } - - void FOculusXRFunctionLibraryOVR::GetGPUUtilization(bool& IsGPUAvailable, float& GPUUtilization) - { - GPUUtilization = 0.0f; - const OculusXRHMD::FOculusXRHMD* const OculusXRHMD = OculusXRHMD::FOculusXRHMD::GetOculusXRHMD(); - if (OculusXRHMD != nullptr) - { - ovrpBool bIsSupported = ovrpBool_False; - if (OVRP_SUCCESS(FOculusXRHMDModule::GetPluginWrapper().IsPerfMetricsSupported(ovrpPerfMetrics_System_GpuUtilPercentage_Float, &bIsSupported)) && bIsSupported == ovrpBool_True) - { - if (OVRP_SUCCESS(FOculusXRHMDModule::GetPluginWrapper().GetPerfMetricsFloat(ovrpPerfMetrics_System_GpuUtilPercentage_Float, &GPUUtilization))) - { - IsGPUAvailable = true; - GPUUtilization *= 100; - } - } - } - } - - float FOculusXRFunctionLibraryOVR::GetGPUFrameTime() - { - float FrameTime = 0; - const OculusXRHMD::FOculusXRHMD* const OculusXRHMD = OculusXRHMD::FOculusXRHMD::GetOculusXRHMD(); - if (OculusXRHMD != nullptr) - { - ovrpBool bIsSupported = ovrpBool_False; - if (OVRP_SUCCESS(FOculusXRHMDModule::GetPluginWrapper().IsPerfMetricsSupported(ovrpPerfMetrics_App_GpuTime_Float, &bIsSupported)) && bIsSupported == ovrpBool_True) - { - if (OVRP_SUCCESS(FOculusXRHMDModule::GetPluginWrapper().GetPerfMetricsFloat(ovrpPerfMetrics_App_GpuTime_Float, &FrameTime))) - { - return FrameTime * 1000; - } - } - } - return 0.0f; - } - - void FOculusXRFunctionLibraryOVR::GetPerformanceMetrics(FOculusXRPerformanceMetrics& PerformanceMetrics) - { - const OculusXRHMD::FOculusXRHMD* const OculusXRHMD = OculusXRHMD::FOculusXRHMD::GetOculusXRHMD(); - if (OculusXRHMD != nullptr) - { - PerformanceMetrics = OculusXRHMD->GetPerformanceMetrics(); - } - } - - - EOculusXRFoveatedRenderingMethod FOculusXRFunctionLibraryOVR::GetFoveatedRenderingMethod() - { - OculusXRHMD::FOculusXRHMD* OculusXRHMD = OculusXRHMD::FOculusXRHMD::GetOculusXRHMD(); - if (OculusXRHMD != nullptr) - { - ovrpBool enabled; - if (OVRP_SUCCESS(FOculusXRHMDModule::GetPluginWrapper().GetFoveationEyeTracked(&enabled))) - { - return enabled == ovrpBool_True ? EOculusXRFoveatedRenderingMethod::EyeTrackedFoveatedRendering : EOculusXRFoveatedRenderingMethod::FixedFoveatedRendering; - } - } - return EOculusXRFoveatedRenderingMethod::FixedFoveatedRendering; - } - - void FOculusXRFunctionLibraryOVR::SetFoveatedRenderingMethod(EOculusXRFoveatedRenderingMethod Method) - { - OculusXRHMD::FOculusXRHMD* OculusXRHMD = OculusXRHMD::FOculusXRHMD::GetOculusXRHMD(); - if (OculusXRHMD != nullptr) - { - OculusXRHMD->SetFoveatedRenderingMethod(Method); - } - } - - void FOculusXRFunctionLibraryOVR::SetFoveatedRenderingLevel(EOculusXRFoveatedRenderingLevel level, bool isDynamic) - { - OculusXRHMD::FOculusXRHMD* OculusXRHMD = OculusXRHMD::FOculusXRHMD::GetOculusXRHMD(); - if (OculusXRHMD != nullptr) - { - OculusXRHMD->SetFoveatedRenderingLevel(level, isDynamic); - } - } - - EOculusXRFoveatedRenderingLevel FOculusXRFunctionLibraryOVR::GetFoveatedRenderingLevel() - { - OculusXRHMD::FOculusXRHMD* OculusXRHMD = OculusXRHMD::FOculusXRHMD::GetOculusXRHMD(); - if (OculusXRHMD != nullptr) - { - ovrpTiledMultiResLevel Lvl; - if (OVRP_SUCCESS(FOculusXRHMDModule::GetPluginWrapper().GetTiledMultiResLevel(&Lvl))) - { - return (EOculusXRFoveatedRenderingLevel)Lvl; - } - } - return EOculusXRFoveatedRenderingLevel::Off; - } - - bool FOculusXRFunctionLibraryOVR::GetEyeTrackedFoveatedRenderingSupported() - { - // Always return false on other engine releases, since they don't have FDM offset support -#ifdef WITH_OCULUS_BRANCH - OculusXRHMD::FOculusXRHMD* OculusXRHMD = OculusXRHMD::FOculusXRHMD::GetOculusXRHMD(); - if (OculusXRHMD != nullptr) - { - ovrpBool Supported; - if (OVRP_SUCCESS(FOculusXRHMDModule::GetPluginWrapper().GetFoveationEyeTrackedSupported(&Supported))) - { - return Supported == ovrpBool_True; - } - } -#endif // WITH_OCULUS_BRANCH - return false; - } - - FString FOculusXRFunctionLibraryOVR::GetDeviceName() - { - OculusXRHMD::FOculusXRHMD* OculusXRHMD = OculusXRHMD::FOculusXRHMD::GetOculusXRHMD(); - if (OculusXRHMD != nullptr) - { - const char* NameString; - if (OVRP_SUCCESS(FOculusXRHMDModule::GetPluginWrapper().GetSystemProductName2(&NameString)) && NameString) - { - return FString(NameString); - } - } - return FString(); - } - - EOculusXRDeviceType FOculusXRFunctionLibraryOVR::GetDeviceType() - { - OculusXRHMD::FOculusXRHMD* OculusXRHMD = OculusXRHMD::FOculusXRHMD::GetOculusXRHMD(); - if (OculusXRHMD != nullptr) - { - if (OculusXRHMD->GetSettings()) - { - switch (OculusXRHMD->GetSettings()->SystemHeadset) - { - case ovrpSystemHeadset_Oculus_Quest: - return EOculusXRDeviceType::OculusQuest_Deprecated; - case ovrpSystemHeadset_Oculus_Quest_2: - return EOculusXRDeviceType::OculusQuest2; - case ovrpSystemHeadset_Meta_Quest_Pro: - return EOculusXRDeviceType::MetaQuestPro; - case ovrpSystemHeadset_Meta_Quest_3: - return EOculusXRDeviceType::MetaQuest3; - case ovrpSystemHeadset_Meta_Quest_3S: - return EOculusXRDeviceType::MetaQuest3S; - case ovrpSystemHeadset_Rift_CV1: - return EOculusXRDeviceType::Rift; - case ovrpSystemHeadset_Rift_S: - return EOculusXRDeviceType::Rift_S; - case ovrpSystemHeadset_Oculus_Link_Quest: - return EOculusXRDeviceType::Quest_Link_Deprecated; - case ovrpSystemHeadset_Oculus_Link_Quest_2: - return EOculusXRDeviceType::Quest2_Link; - case ovrpSystemHeadset_Meta_Link_Quest_Pro: - return EOculusXRDeviceType::MetaQuestProLink; - case ovrpSystemHeadset_Meta_Link_Quest_3: - return EOculusXRDeviceType::MetaQuest3Link; - case ovrpSystemHeadset_Meta_Link_Quest_3S: - return EOculusXRDeviceType::MetaQuest3SLink; - default: - break; - } - } - } - return EOculusXRDeviceType::OculusUnknown; - } - - EOculusXRControllerType FOculusXRFunctionLibraryOVR::GetControllerType(EControllerHand deviceHand) - { - auto getOVRPHand = [](EControllerHand hand) { - switch (hand) - { - case EControllerHand::Left: - return ovrpHand::ovrpHand_Left; - case EControllerHand::Right: - return ovrpHand::ovrpHand_Right; - default: - break; - } - return ovrpHand::ovrpHand_None; - }; - - auto getEControllerType = [](ovrpInteractionProfile profile) { - switch (profile) - { - case ovrpInteractionProfile::ovrpInteractionProfile_Touch: - return EOculusXRControllerType::MetaQuestTouch; - case ovrpInteractionProfile::ovrpInteractionProfile_TouchPro: - return EOculusXRControllerType::MetaQuestTouchPro; - case ovrpInteractionProfile::ovrpInteractionProfile_TouchPlus: - return EOculusXRControllerType::MetaQuestTouchPlus; - default: - break; - } - return EOculusXRControllerType::None; - }; - - ovrpInteractionProfile interactionProfile = ovrpInteractionProfile::ovrpInteractionProfile_None; - ovrpHand hand = getOVRPHand(deviceHand); - if (hand == ovrpHand::ovrpHand_None) - return EOculusXRControllerType::Unknown; - if (OVRP_SUCCESS(FOculusXRHMDModule::GetPluginWrapper().GetCurrentInteractionProfile(hand, &interactionProfile))) - { - return getEControllerType(interactionProfile); - } - return EOculusXRControllerType::Unknown; - } - - TArray FOculusXRFunctionLibraryOVR::GetAvailableDisplayFrequencies() - { - OculusXRHMD::FOculusXRHMD* OculusXRHMD = OculusXRHMD::FOculusXRHMD::GetOculusXRHMD(); - if (OculusXRHMD != nullptr) - { - int NumberOfFrequencies; - if (OVRP_SUCCESS(FOculusXRHMDModule::GetPluginWrapper().GetSystemDisplayAvailableFrequencies(nullptr, &NumberOfFrequencies))) - { - TArray freqArray; - freqArray.SetNum(NumberOfFrequencies); - FOculusXRHMDModule::GetPluginWrapper().GetSystemDisplayAvailableFrequencies(freqArray.GetData(), &NumberOfFrequencies); - return freqArray; - } - } - return TArray(); - } - - float FOculusXRFunctionLibraryOVR::GetCurrentDisplayFrequency() - { - OculusXRHMD::FOculusXRHMD* OculusXRHMD = OculusXRHMD::FOculusXRHMD::GetOculusXRHMD(); - if (OculusXRHMD != nullptr) - { - float Frequency; - if (OVRP_SUCCESS(FOculusXRHMDModule::GetPluginWrapper().GetSystemDisplayFrequency2(&Frequency))) - { - return Frequency; - } - } - return 0.0f; - } - - void FOculusXRFunctionLibraryOVR::SetDisplayFrequency(float RequestedFrequency) - { - OculusXRHMD::FOculusXRHMD* OculusXRHMD = OculusXRHMD::FOculusXRHMD::GetOculusXRHMD(); - if (OculusXRHMD != nullptr) - { - FOculusXRHMDModule::GetPluginWrapper().SetSystemDisplayFrequency(RequestedFrequency); - } - } - - void FOculusXRFunctionLibraryOVR::EnablePositionTracking(bool bPositionTracking) - { - OculusXRHMD::FOculusXRHMD* OculusXRHMD = OculusXRHMD::FOculusXRHMD::GetOculusXRHMD(); - if (OculusXRHMD != nullptr) - { - FOculusXRHMDModule::GetPluginWrapper().SetTrackingPositionEnabled2(bPositionTracking); - } - } - - void FOculusXRFunctionLibraryOVR::EnableOrientationTracking(bool bOrientationTracking) - { - OculusXRHMD::FOculusXRHMD* OculusXRHMD = OculusXRHMD::FOculusXRHMD::GetOculusXRHMD(); - if (OculusXRHMD != nullptr) - { - FOculusXRHMDModule::GetPluginWrapper().SetTrackingOrientationEnabled2(bOrientationTracking); - } - } - - void FOculusXRFunctionLibraryOVR::SetColorScaleAndOffset(FLinearColor ColorScale, FLinearColor ColorOffset, bool bApplyToAllLayers) - { - OculusXRHMD::FOculusXRHMD* OculusXRHMD = OculusXRHMD::FOculusXRHMD::GetOculusXRHMD(); - if (OculusXRHMD != nullptr) - { - OculusXRHMD->SetColorScaleAndOffset(ColorScale, ColorOffset, bApplyToAllLayers); - } - } - - class IStereoLayers* FOculusXRFunctionLibraryOVR::GetStereoLayers() - { - OculusXRHMD::FOculusXRHMD* OculusXRHMD = OculusXRHMD::FOculusXRHMD::GetOculusXRHMD(); - if (OculusXRHMD != nullptr) - { - return OculusXRHMD; - } - return nullptr; - } - - static ovrpBoundaryType ToOvrpBoundaryType(EOculusXRBoundaryType Source) - { - switch (Source) - { - case EOculusXRBoundaryType::Boundary_PlayArea: - return ovrpBoundary_PlayArea; - - case EOculusXRBoundaryType::Boundary_Outer: - default: - return ovrpBoundary_Outer; - } - } - - bool FOculusXRFunctionLibraryOVR::IsGuardianConfigured() - { - OculusXRHMD::FOculusXRHMD* OculusXRHMD = OculusXRHMD::FOculusXRHMD::GetOculusXRHMD(); - if (OculusXRHMD != nullptr) - { - ovrpBool boundaryConfigured; - return OVRP_SUCCESS(FOculusXRHMDModule::GetPluginWrapper().GetBoundaryConfigured2(&boundaryConfigured)) && boundaryConfigured; - } - return false; - } - - bool FOculusXRFunctionLibraryOVR::IsGuardianDisplayed() - { - OculusXRHMD::FOculusXRHMD* OculusXRHMD = OculusXRHMD::FOculusXRHMD::GetOculusXRHMD(); - if (OculusXRHMD != nullptr) - { - ovrpBool boundaryVisible; - return OVRP_SUCCESS(FOculusXRHMDModule::GetPluginWrapper().GetBoundaryVisible2(&boundaryVisible)) && boundaryVisible; - } - return false; - } - - TArray FOculusXRFunctionLibraryOVR::GetGuardianPoints(EOculusXRBoundaryType BoundaryType, bool UsePawnSpace /* = false */) - { - TArray BoundaryPointList; - OculusXRHMD::FOculusXRHMD* OculusXRHMD = OculusXRHMD::FOculusXRHMD::GetOculusXRHMD(); - if (OculusXRHMD != nullptr) - { - ovrpBool bBoundaryConfigured = false; - if (OVRP_SUCCESS(FOculusXRHMDModule::GetPluginWrapper().GetBoundaryConfigured2(&bBoundaryConfigured)) && bBoundaryConfigured) - { - ovrpBoundaryType obt = ToOvrpBoundaryType(BoundaryType); - int NumPoints = 0; - - if (OVRP_SUCCESS(FOculusXRHMDModule::GetPluginWrapper().GetBoundaryGeometry3(obt, nullptr, &NumPoints))) - { - // allocate points - const int BufferSize = NumPoints; - ovrpVector3f* BoundaryPoints = new ovrpVector3f[BufferSize]; - - if (OVRP_SUCCESS(FOculusXRHMDModule::GetPluginWrapper().GetBoundaryGeometry3(obt, BoundaryPoints, &NumPoints))) - { - NumPoints = FMath::Min(BufferSize, NumPoints); - check(NumPoints <= BufferSize); // For static analyzer - BoundaryPointList.Reserve(NumPoints); - - for (int i = 0; i < NumPoints; i++) - { - FVector point; - if (UsePawnSpace) - { - point = OculusXRHMD->ConvertVector_M2U(BoundaryPoints[i]); - } - else - { - point = OculusXRHMD->ScaleAndMovePointWithPlayer(BoundaryPoints[i]); - } - BoundaryPointList.Add(point); - } - } - - delete[] BoundaryPoints; - } - } - } - return BoundaryPointList; - } - - FVector FOculusXRFunctionLibraryOVR::GetGuardianDimensions(EOculusXRBoundaryType BoundaryType) - { - OculusXRHMD::FOculusXRHMD* OculusXRHMD = OculusXRHMD::FOculusXRHMD::GetOculusXRHMD(); - if (OculusXRHMD != nullptr) - { - ovrpBoundaryType obt = ToOvrpBoundaryType(BoundaryType); - ovrpVector3f Dimensions; - - if (OVRP_FAILURE(FOculusXRHMDModule::GetPluginWrapper().GetBoundaryDimensions2(obt, &Dimensions))) - return FVector::ZeroVector; - - Dimensions.z *= -1.0; - return OculusXRHMD->ConvertVector_M2U(Dimensions); - } - return FVector::ZeroVector; - } - - FTransform FOculusXRFunctionLibraryOVR::GetPlayAreaTransform() - { - OculusXRHMD::FOculusXRHMD* OculusXRHMD = OculusXRHMD::FOculusXRHMD::GetOculusXRHMD(); - if (OculusXRHMD != nullptr) - { - ovrpBool bBoundaryConfigured = false; - if (OVRP_SUCCESS(FOculusXRHMDModule::GetPluginWrapper().GetBoundaryConfigured2(&bBoundaryConfigured)) && bBoundaryConfigured) - { - int NumPoints = 4; - ovrpVector3f BoundaryPoints[4]; - - if (OVRP_SUCCESS(FOculusXRHMDModule::GetPluginWrapper().GetBoundaryGeometry3(ovrpBoundary_PlayArea, BoundaryPoints, &NumPoints))) - { - FVector ConvertedPoints[4]; - - for (int i = 0; i < NumPoints; i++) - { - ConvertedPoints[i] = OculusXRHMD->ScaleAndMovePointWithPlayer(BoundaryPoints[i]); - } - - float metersScale = OculusXRHMD->GetWorldToMetersScale(); - - FVector Edge = ConvertedPoints[1] - ConvertedPoints[0]; - float Angle = FMath::Acos((Edge).GetSafeNormal() | FVector::RightVector); - FQuat Rotation(FVector::UpVector, Edge.X < 0 ? Angle : -Angle); - - FVector Position = (ConvertedPoints[0] + ConvertedPoints[1] + ConvertedPoints[2] + ConvertedPoints[3]) / 4; - FVector Scale(FVector::Distance(ConvertedPoints[3], ConvertedPoints[0]) / metersScale, FVector::Distance(ConvertedPoints[1], ConvertedPoints[0]) / metersScale, 1.0); - - return FTransform(Rotation, Position, Scale); - } - } - } - return FTransform(); - } - - FOculusXRGuardianTestResult FOculusXRFunctionLibraryOVR::GetPointGuardianIntersection(const FVector Point, EOculusXRBoundaryType BoundaryType) - { - FOculusXRGuardianTestResult InteractionInfo; - memset(&InteractionInfo, 0, sizeof(FOculusXRGuardianTestResult)); - - OculusXRHMD::FOculusXRHMD* OculusXRHMD = OculusXRHMD::FOculusXRHMD::GetOculusXRHMD(); - if (OculusXRHMD != nullptr) - { - ovrpVector3f OvrpPoint = OculusXRHMD->WorldLocationToOculusPoint(Point); - ovrpBoundaryType OvrpBoundaryType = ToOvrpBoundaryType(BoundaryType); - ovrpBoundaryTestResult InteractionResult; - - if (OVRP_SUCCESS(FOculusXRHMDModule::GetPluginWrapper().TestBoundaryPoint2(OvrpPoint, OvrpBoundaryType, &InteractionResult))) - { - InteractionInfo.IsTriggering = (InteractionResult.IsTriggering != 0); - InteractionInfo.ClosestDistance = OculusXRHMD->ConvertFloat_M2U(InteractionResult.ClosestDistance); - InteractionInfo.ClosestPoint = OculusXRHMD->ScaleAndMovePointWithPlayer(InteractionResult.ClosestPoint); - InteractionInfo.ClosestPointNormal = OculusXRHMD->ConvertVector_M2U(InteractionResult.ClosestPointNormal); - InteractionInfo.DeviceType = EOculusXRTrackedDeviceType::None; - } - } - - return InteractionInfo; - } - - FOculusXRGuardianTestResult FOculusXRFunctionLibraryOVR::GetNodeGuardianIntersection(EOculusXRTrackedDeviceType DeviceType, EOculusXRBoundaryType BoundaryType) - { - FOculusXRGuardianTestResult InteractionInfo; - memset(&InteractionInfo, 0, sizeof(FOculusXRGuardianTestResult)); - - OculusXRHMD::FOculusXRHMD* OculusXRHMD = OculusXRHMD::FOculusXRHMD::GetOculusXRHMD(); - if (OculusXRHMD != nullptr) - { - ovrpNode OvrpNode = OculusXRHMD::ToOvrpNode(DeviceType); - ovrpBoundaryType OvrpBoundaryType = ToOvrpBoundaryType(BoundaryType); - ovrpBoundaryTestResult TestResult; - - if (OVRP_SUCCESS(FOculusXRHMDModule::GetPluginWrapper().TestBoundaryNode2(OvrpNode, ovrpBoundary_PlayArea, &TestResult)) && TestResult.IsTriggering) - { - InteractionInfo.IsTriggering = true; - InteractionInfo.DeviceType = OculusXRHMD::ToEOculusXRTrackedDeviceType(OvrpNode); - InteractionInfo.ClosestDistance = OculusXRHMD->ConvertFloat_M2U(TestResult.ClosestDistance); - InteractionInfo.ClosestPoint = OculusXRHMD->ScaleAndMovePointWithPlayer(TestResult.ClosestPoint); - InteractionInfo.ClosestPointNormal = OculusXRHMD->ConvertVector_M2U(TestResult.ClosestPointNormal); - } - } - - return InteractionInfo; - } - - void FOculusXRFunctionLibraryOVR::SetGuardianVisibility(bool GuardianVisible) - { - OculusXRHMD::FOculusXRHMD* OculusXRHMD = OculusXRHMD::FOculusXRHMD::GetOculusXRHMD(); - if (OculusXRHMD != nullptr) - { - FOculusXRHMDModule::GetPluginWrapper().SetBoundaryVisible2(GuardianVisible); - } - } - - bool FOculusXRFunctionLibraryOVR::GetSystemHmd3DofModeEnabled() - { - OculusXRHMD::FOculusXRHMD* OculusXRHMD = OculusXRHMD::FOculusXRHMD::GetOculusXRHMD(); - if (OculusXRHMD != nullptr) - { - ovrpBool enabled; - return OVRP_SUCCESS(FOculusXRHMDModule::GetPluginWrapper().GetSystemHmd3DofModeEnabled(&enabled)) && enabled; - } - return false; - } - - EOculusXRColorSpace FOculusXRFunctionLibraryOVR::GetHmdColorDesc() - { - OculusXRHMD::FOculusXRHMD* OculusXRHMD = OculusXRHMD::FOculusXRHMD::GetOculusXRHMD(); - if (OculusXRHMD != nullptr) - { - ovrpColorSpace HmdColorSpace; - if (OVRP_SUCCESS(FOculusXRHMDModule::GetPluginWrapper().GetHmdColorDesc(&HmdColorSpace))) - { - return (EOculusXRColorSpace)HmdColorSpace; - } - } - return EOculusXRColorSpace::Unknown; - } - - void FOculusXRFunctionLibraryOVR::SetClientColorDesc(EOculusXRColorSpace ColorSpace) - { - OculusXRHMD::FOculusXRHMD* OculusXRHMD = OculusXRHMD::FOculusXRHMD::GetOculusXRHMD(); - if (OculusXRHMD != nullptr) - { - ovrpColorSpace ClientColorSpace = (ovrpColorSpace)ColorSpace; -#if PLATFORM_ANDROID - if (ClientColorSpace == ovrpColorSpace_Unknown) - { - ClientColorSpace = ovrpColorSpace_Quest; - } -#endif - FOculusXRHMDModule::GetPluginWrapper().SetClientColorDesc(ClientColorSpace); - } - } - - void FOculusXRFunctionLibraryOVR::SetLocalDimmingOn(bool LocalDimmingOn) - { - OculusXRHMD::FOculusXRHMD* OculusXRHMD = OculusXRHMD::FOculusXRHMD::GetOculusXRHMD(); - if (OculusXRHMD != nullptr) - { - UE_LOG(LogHMD, Log, TEXT("SetLocalDimmingOn %d"), LocalDimmingOn); - FOculusXRHMDModule::GetPluginWrapper().SetLocalDimming(LocalDimmingOn); - } - } - - bool FOculusXRFunctionLibraryOVR::IsPassthroughSupported() - { - OculusXRHMD::FOculusXRHMD* OculusXRHMD = OculusXRHMD::FOculusXRHMD::GetOculusXRHMD(); - if (OculusXRHMD != nullptr) - { - ovrpInsightPassthroughCapabilityFlags capabilities; - - if (OVRP_SUCCESS(FOculusXRHMDModule::GetPluginWrapper().GetPassthroughCapabilityFlags(&capabilities))) - { - return (capabilities & ovrpInsightPassthroughCapabilityFlags::ovrpInsightPassthroughCapabilityFlags_Passthrough) - == ovrpInsightPassthroughCapabilityFlags::ovrpInsightPassthroughCapabilityFlags_Passthrough; - } - - return false; - } - return false; - } - - bool FOculusXRFunctionLibraryOVR::IsColorPassthroughSupported() - { - OculusXRHMD::FOculusXRHMD* OculusXRHMD = OculusXRHMD::FOculusXRHMD::GetOculusXRHMD(); - if (OculusXRHMD != nullptr) - { - ovrpInsightPassthroughCapabilityFlags capabilities; - if (OVRP_SUCCESS(FOculusXRHMDModule::GetPluginWrapper().GetPassthroughCapabilityFlags(&capabilities))) - { - return (capabilities & ovrpInsightPassthroughCapabilityFlags::ovrpInsightPassthroughCapabilityFlags_Color) - == ovrpInsightPassthroughCapabilityFlags::ovrpInsightPassthroughCapabilityFlags_Color; - } - return false; - } - return false; - } - - void FOculusXRFunctionLibraryOVR::StartEnvironmentDepth() - { - OculusXRHMD::FOculusXRHMD* OculusXRHMD = OculusXRHMD::FOculusXRHMD::GetOculusXRHMD(); - if (OculusXRHMD != nullptr) - { - int CreateFlags = 0; - OculusXRHMD->StartEnvironmentDepth(CreateFlags); - } - } - - void FOculusXRFunctionLibraryOVR::StopEnvironmentDepth() - { - OculusXRHMD::FOculusXRHMD* OculusXRHMD = OculusXRHMD::FOculusXRHMD::GetOculusXRHMD(); - if (OculusXRHMD != nullptr) - { - OculusXRHMD->StopEnvironmentDepth(); - } - } - - bool FOculusXRFunctionLibraryOVR::IsEnvironmentDepthStarted() - { - OculusXRHMD::FOculusXRHMD* OculusXRHMD = OculusXRHMD::FOculusXRHMD::GetOculusXRHMD(); - if (OculusXRHMD != nullptr) - { - return OculusXRHMD->IsEnvironmentDepthStarted(); - } - return false; - } - - void FOculusXRFunctionLibraryOVR::SetEnvironmentDepthHandRemoval(bool RemoveHands) - { - OculusXRHMD::FOculusXRHMD* OculusXRHMD = OculusXRHMD::FOculusXRHMD::GetOculusXRHMD(); - if (OculusXRHMD != nullptr) - { - OculusXRHMD->SetEnvironmentDepthHandRemoval(RemoveHands); - } - } - - void FOculusXRFunctionLibraryOVR::SetXROcclusionsMode(UObject* WorldContextObject, EOculusXROcclusionsMode Mode) - { - OculusXRHMD::FOculusXRHMD* OculusXRHMD = OculusXRHMD::FOculusXRHMD::GetOculusXRHMD(); - if (OculusXRHMD != nullptr) - { - OculusXRHMD->EnableHardOcclusions(Mode == EOculusXROcclusionsMode::HardOcclusions_Deprecated); - OculusXRHMD->EnableSoftOcclusions(Mode == EOculusXROcclusionsMode::SoftOcclusions); - } -#if defined(WITH_OCULUS_BRANCH) - WorldContextObject->GetWorld()->Scene->SetEnableXRPassthroughSoftOcclusions(Mode == EOculusXROcclusionsMode::SoftOcclusions); -#else - ensureMsgf(Mode != EOculusXROcclusionsMode::SoftOcclusions, TEXT("Soft occlusions are only supported with the Oculus branch of the Unreal Engine")); -#endif - } - - void FOculusXRFunctionLibraryOVR::SetEyeBufferSharpenType(EOculusXREyeBufferSharpenType EyeBufferSharpenType) - { - OculusXRHMD::FOculusXRHMD* OculusXRHMD = OculusXRHMD::FOculusXRHMD::GetOculusXRHMD(); - if (OculusXRHMD != nullptr) - { - switch (EyeBufferSharpenType) - { - case EOculusXREyeBufferSharpenType::SLST_Normal: - FOculusXRHMDModule::GetPluginWrapper().SetEyeBufferSharpenType(ovrpLayerSubmitFlag_EfficientSharpen); - break; - case EOculusXREyeBufferSharpenType::SLST_Quality: - FOculusXRHMDModule::GetPluginWrapper().SetEyeBufferSharpenType(ovrpLayerSubmitFlag_QualitySharpen); - break; - case EOculusXREyeBufferSharpenType::SLST_Auto: - FOculusXRHMDModule::GetPluginWrapper().SetEyeBufferSharpenType(ovrpLayerSubmitFlag_AutoLayerFilter); - break; - default: - FOculusXRHMDModule::GetPluginWrapper().SetEyeBufferSharpenType(ovrpLayerSubmitFlags(0)); - break; - } - } - } - - bool FOculusXRFunctionLibraryOVR::IsPassthroughRecommended() - { - const OculusXRHMD::FOculusXRHMD* OculusHMD = OculusXRHMD::FOculusXRHMD::GetOculusXRHMD(); - if (OculusHMD != nullptr) - { - ovrpPassthroughPreferences Preferences; - if (OVRP_SUCCESS(FOculusXRHMDModule::GetPluginWrapper().GetPassthroughPreferences(&Preferences))) - { - return (Preferences.Flags & ovrpPassthroughPreferenceFlags::ovrpPassthroughPreferenceFlags_DefaultToActive) - == ovrpPassthroughPreferenceFlags::ovrpPassthroughPreferenceFlags_DefaultToActive; - }; - } - return false; - } - - void FOculusXRFunctionLibraryOVR::GetOpenXRInstanceProcAddrFunc(void** func) - { - FOculusXRHMDModule::GetPluginWrapper().GetOpenXRInstanceProcAddrFunc(func); - } - - void FOculusXRFunctionLibraryOVR::GetNativeOpenXRHandles(uint64_t* OutXrInstance, uint64_t* OutXrSession) - { - FOculusXRHMDModule::GetPluginWrapper().GetNativeOpenXRHandles((ovrpUInt64*)OutXrInstance, (ovrpUInt64*)OutXrSession); - } - - void FOculusXRFunctionLibraryOVR::GetAppSpace(uint64_t* OutAppSpace) - { - FOculusXRHMDModule::GetPluginWrapper().GetAppSpace((ovrpUInt64*)OutAppSpace); - } - - void FOculusXRFunctionLibraryOVR::GetNextPredictedDisplayTime(uint64_t* NextPredictedDisplayTime) - { - double Time = 0; - FOculusXRHMDModule::GetPluginWrapper().GetPredictedDisplayTime(OVRP_CURRENT_FRAMEINDEX, &Time); - *NextPredictedDisplayTime = OculusXR::ToXrTime(Time); - } - - void FOculusXRFunctionLibraryOVR::RegisterOpenXrEventHandler(void (*OpenXrEventHandler)(void* data, void* context), void* Context) - { - FOculusXRHMDModule::GetPluginWrapper().RegisterOpenXREventHandler(OpenXrEventHandler, Context); - } - - void FOculusXRFunctionLibraryOVR::UnregisterOpenXrEventHandler(void (*OpenXrEventHandler)(void* data, void* context)) - { - FOculusXRHMDModule::GetPluginWrapper().UnregisterOpenXREventHandler(OpenXrEventHandler); - } - -} // namespace OculusXRHMD diff --git a/Plugins/MetaXR/Source/OculusXRHMD/Private/OculusXRFunctionLibraryOVR.h b/Plugins/MetaXR/Source/OculusXRHMD/Private/OculusXRFunctionLibraryOVR.h deleted file mode 100644 index 9163d0c..0000000 --- a/Plugins/MetaXR/Source/OculusXRHMD/Private/OculusXRFunctionLibraryOVR.h +++ /dev/null @@ -1,74 +0,0 @@ -// Copyright (c) Meta Platforms, Inc. and affiliates. - -#pragma once - -#include "OculusXRFunctionLibrary.h" - -namespace OculusXRHMD -{ - class FOculusXRFunctionLibraryOVR : public IOculusXRFunctionLibrary - { - public: - virtual void GetPose(FRotator& DeviceRotation, FVector& DevicePosition, FVector& NeckPosition) override; - virtual void SetBaseRotationAndBaseOffsetInMeters(FRotator Rotation, FVector BaseOffsetInMeters, EOrientPositionSelector::Type Options) override; - virtual void GetBaseRotationAndBaseOffsetInMeters(FRotator& OutRotation, FVector& OutBaseOffsetInMeters) override; - virtual void GetRawSensorData(FVector& AngularAcceleration, FVector& LinearAcceleration, FVector& AngularVelocity, FVector& LinearVelocity, float& TimeInSeconds, EOculusXRTrackedDeviceType DeviceType) override; - virtual bool IsDeviceTracked(EOculusXRTrackedDeviceType DeviceType) override; - virtual void GetSuggestedCpuAndGpuPerformanceLevels(EOculusXRProcessorPerformanceLevel& CpuPerfLevel, EOculusXRProcessorPerformanceLevel& GpuPerfLevel) override; - virtual void SetSuggestedCpuAndGpuPerformanceLevels(EOculusXRProcessorPerformanceLevel CpuPerfLevel, EOculusXRProcessorPerformanceLevel GpuPerfLevel) override; - virtual bool GetUserProfile(FOculusXRHmdUserProfile& Profile) override; - virtual void SetBaseRotationAndPositionOffset(FRotator BaseRot, FVector PosOffset, EOrientPositionSelector::Type Options) override; - virtual void GetBaseRotationAndPositionOffset(FRotator& OutRot, FVector& OutPosOffset) override; - virtual void AddLoadingSplashScreen(class UTexture2D* Texture, FVector TranslationInMeters, FRotator Rotation, FVector2D SizeInMeters, FRotator DeltaRotation, bool bClearBeforeAdd) override; - virtual void ClearLoadingSplashScreens() override; - virtual bool HasInputFocus() override; - virtual bool HasSystemOverlayPresent() override; - virtual void GetGPUUtilization(bool& IsGPUAvailable, float& GPUUtilization) override; - virtual float GetGPUFrameTime() override; - virtual void GetPerformanceMetrics(FOculusXRPerformanceMetrics& PerformanceMetrics) override; - - - virtual EOculusXRFoveatedRenderingMethod GetFoveatedRenderingMethod() override; - virtual void SetFoveatedRenderingMethod(EOculusXRFoveatedRenderingMethod Method) override; - virtual void SetFoveatedRenderingLevel(EOculusXRFoveatedRenderingLevel level, bool isDynamic) override; - virtual EOculusXRFoveatedRenderingLevel GetFoveatedRenderingLevel() override; - virtual bool GetEyeTrackedFoveatedRenderingSupported() override; - virtual FString GetDeviceName() override; - virtual EOculusXRDeviceType GetDeviceType() override; - virtual EOculusXRControllerType GetControllerType(EControllerHand deviceHand) override; - virtual TArray GetAvailableDisplayFrequencies() override; - virtual float GetCurrentDisplayFrequency() override; - virtual void SetDisplayFrequency(float RequestedFrequency) override; - virtual void EnablePositionTracking(bool bPositionTracking) override; - virtual void EnableOrientationTracking(bool bOrientationTracking) override; - virtual void SetColorScaleAndOffset(FLinearColor ColorScale, FLinearColor ColorOffset, bool bApplyToAllLayers) override; - virtual class IStereoLayers* GetStereoLayers() override; - virtual bool IsGuardianConfigured() override; - virtual bool IsGuardianDisplayed() override; - virtual TArray GetGuardianPoints(EOculusXRBoundaryType BoundaryType, bool UsePawnSpace /* = false */) override; - virtual FVector GetGuardianDimensions(EOculusXRBoundaryType BoundaryType) override; - virtual FTransform GetPlayAreaTransform() override; - virtual FOculusXRGuardianTestResult GetPointGuardianIntersection(const FVector Point, EOculusXRBoundaryType BoundaryType) override; - virtual FOculusXRGuardianTestResult GetNodeGuardianIntersection(EOculusXRTrackedDeviceType DeviceType, EOculusXRBoundaryType BoundaryType) override; - virtual void SetGuardianVisibility(bool GuardianVisible) override; - virtual bool GetSystemHmd3DofModeEnabled() override; - virtual EOculusXRColorSpace GetHmdColorDesc() override; - virtual void SetClientColorDesc(EOculusXRColorSpace ColorSpace) override; - virtual void SetLocalDimmingOn(bool LocalDimmingOn) override; - virtual bool IsPassthroughSupported() override; - virtual bool IsColorPassthroughSupported() override; - virtual void StartEnvironmentDepth() override; - virtual void StopEnvironmentDepth() override; - virtual bool IsEnvironmentDepthStarted() override; - virtual void SetEnvironmentDepthHandRemoval(bool RemoveHands) override; - virtual void SetXROcclusionsMode(UObject* WorldContextObject, EOculusXROcclusionsMode Mode) override; - virtual void SetEyeBufferSharpenType(EOculusXREyeBufferSharpenType EyeBufferSharpenType) override; - virtual bool IsPassthroughRecommended() override; - virtual void GetOpenXRInstanceProcAddrFunc(void** Func) override; - virtual void GetNativeOpenXRHandles(uint64_t* OutXrInstance, uint64_t* OutXrSession) override; - virtual void GetAppSpace(uint64_t* OutAppSpace) override; - virtual void GetNextPredictedDisplayTime(uint64_t* NextPredictedDisplayTime) override; - virtual void RegisterOpenXrEventHandler(void (*OpenXrEventHandler)(void* data, void* context), void* Context) override; - virtual void UnregisterOpenXrEventHandler(void (*OpenXrEventHandler)(void* data, void* context)) override; - }; -} // namespace OculusXRHMD diff --git a/Plugins/MetaXR/Source/OculusXRHMD/Private/OculusXRFunctionLibraryOpenXR.cpp b/Plugins/MetaXR/Source/OculusXRHMD/Private/OculusXRFunctionLibraryOpenXR.cpp deleted file mode 100644 index 5099007..0000000 --- a/Plugins/MetaXR/Source/OculusXRHMD/Private/OculusXRFunctionLibraryOpenXR.cpp +++ /dev/null @@ -1,632 +0,0 @@ -// Copyright (c) Meta Platforms, Inc. and affiliates. - -#include "OculusXRFunctionLibraryOpenXR.h" - -#include "OpenXR\OculusXRXRFunctions.h" -#include "OculusXRHMD.h" -#include "IOpenXRHMD.h" -#include "OpenXR\OculusXROpenXRUtilities.h" -#include "IOpenXRHMD.h" -#include "IOpenXRHMDModule.h" -#include "OpenXRBlueprintFunctionLibrary.h" - -namespace -{ - struct HeadModelParms - { - float HeadModelDepth; - float HeadModelHeight; - }; - - // CompositorOpenXR Constants - const HeadModelParms DefaultHeadModel = { - 0.0805f, - 0.0750f, - }; - - FVector2D GetUserNeckEyeDistance() - { - return FVector2D(DefaultHeadModel.HeadModelDepth, DefaultHeadModel.HeadModelHeight); - } -} // namespace - -#define NOT_IMPLEMENTED() \ - UE_LOG(LogHMD, Log, TEXT("%s Not Implemented In OpenXR"), StringCast(__FUNCTION__).Get()); - -namespace OculusXRHMD -{ - void FOculusXRFunctionLibraryOpenXR::GetPose(FRotator& DeviceRotation, FVector& DevicePosition, FVector& NeckPosition) - { - FQuat HeadOrientation = FQuat::Identity; - FVector HeadPosition = FVector::ZeroVector; - - GEngine->XRSystem->GetCurrentPose(IXRTrackingSystem::HMDDeviceId, HeadOrientation, HeadPosition); - - FVector LocalNeckPosition = HeadOrientation.Inverse().RotateVector(HeadPosition); - const FVector2D NeckEyeDistance = GetUserNeckEyeDistance(); - - const float WorldToMetersScale = GEngine->XRSystem->GetWorldToMetersScale(); - LocalNeckPosition.X -= NeckEyeDistance.X * WorldToMetersScale; - LocalNeckPosition.Z -= NeckEyeDistance.Y * WorldToMetersScale; - - DeviceRotation = HeadOrientation.Rotator(); - DevicePosition = HeadPosition; - NeckPosition = LocalNeckPosition; - } - - void FOculusXRFunctionLibraryOpenXR::SetBaseRotationAndBaseOffsetInMeters(FRotator Rotation, FVector BaseOffsetInMeters, EOrientPositionSelector::Type Options) - { - if (GEngine->XRSystem.IsValid()) - { - if ((Options == EOrientPositionSelector::Orientation) || (Options == EOrientPositionSelector::OrientationAndPosition)) - { - GEngine->XRSystem->SetBaseRotation(Rotation); - } - if ((Options == EOrientPositionSelector::Position) || (Options == EOrientPositionSelector::OrientationAndPosition)) - { - GEngine->XRSystem->SetBasePosition(BaseOffsetInMeters); - } - } - } - - void FOculusXRFunctionLibraryOpenXR::GetBaseRotationAndBaseOffsetInMeters(FRotator& OutRotation, FVector& OutBaseOffsetInMeters) - { - if (GEngine->XRSystem.IsValid()) - { - OutRotation = GEngine->XRSystem->GetBaseRotation(); - OutBaseOffsetInMeters = GEngine->XRSystem->GetBasePosition(); - } - else - { - OutRotation = FRotator::ZeroRotator; - OutBaseOffsetInMeters = FVector::ZeroVector; - } - } - - void FOculusXRFunctionLibraryOpenXR::GetRawSensorData(FVector& AngularAcceleration, FVector& LinearAcceleration, FVector& AngularVelocity, FVector& LinearVelocity, float& TimeInSeconds, EOculusXRTrackedDeviceType DeviceType) - { - NOT_IMPLEMENTED(); - } - - static IMotionController* GetMotionController() - { - TArray MotionControllers; - MotionControllers = IModularFeatures::Get().GetModularFeatureImplementations(IMotionController::GetModularFeatureName()); - for (auto MotionController : MotionControllers) - { - FName MotionControllerName("OpenXR"); - if (MotionController != nullptr && MotionController->GetMotionControllerDeviceTypeName() == MotionControllerName) - { - return MotionController; - } - } - return nullptr; - } - - static bool IsControllerTracked(FName MotionSource) - { - IMotionController* MotionController = GetMotionController(); - if (MotionController != nullptr) - { - const int32_t ControllerIndex = 0; - return MotionController->GetControllerTrackingStatus(ControllerIndex, MotionSource) == ETrackingStatus::Tracked; - } - return false; - } - - bool FOculusXRFunctionLibraryOpenXR::IsDeviceTracked(EOculusXRTrackedDeviceType DeviceType) - { - bool bIsDeviceTracked = false; - if (GEngine->XRSystem.IsValid()) - { - switch (DeviceType) - { - case EOculusXRTrackedDeviceType::None: - break; - case EOculusXRTrackedDeviceType::HMD: - if (GEngine->XRSystem.IsValid()) - { - bIsDeviceTracked = GEngine->XRSystem->IsTracking(IXRTrackingSystem::HMDDeviceId); - } - break; - case EOculusXRTrackedDeviceType::LTouch: - { - bIsDeviceTracked = IsControllerTracked(FName("LeftAim")); - } - break; - case EOculusXRTrackedDeviceType::RTouch: - { - bIsDeviceTracked = IsControllerTracked(FName("RightAim")); - } - break; - default: - break; - } - } - return bIsDeviceTracked; - } - - void FOculusXRFunctionLibraryOpenXR::GetSuggestedCpuAndGpuPerformanceLevels(EOculusXRProcessorPerformanceLevel& CpuPerfLevel, EOculusXRProcessorPerformanceLevel& GpuPerfLevel) - { - OculusXR::FPerformanceExtensionPlugin& PerfPlugin = FOculusXRHMDModule::Get().GetExtensionPluginManager().GetPerformanceExtensionPlugin(); - PerfPlugin.GetSuggestedCpuAndGpuPerformanceLevels(CpuPerfLevel, GpuPerfLevel); - } - - void FOculusXRFunctionLibraryOpenXR::SetSuggestedCpuAndGpuPerformanceLevels(EOculusXRProcessorPerformanceLevel CpuPerfLevel, EOculusXRProcessorPerformanceLevel GpuPerfLevel) - { - OculusXR::FPerformanceExtensionPlugin& PerfPlugin = FOculusXRHMDModule::Get().GetExtensionPluginManager().GetPerformanceExtensionPlugin(); - PerfPlugin.SetSuggestedCpuAndGpuPerformanceLevels(CpuPerfLevel, GpuPerfLevel); - } - - bool FOculusXRFunctionLibraryOpenXR::GetUserProfile(FOculusXRHmdUserProfile& Profile) - { - IXRTrackingSystem* TrackingSystem = OculusXR::GetOpenXRTrackingSystem(); - if (TrackingSystem != nullptr) - { - const IHeadMountedDisplay* Hmd = TrackingSystem->GetHMDDevice(); - if (Hmd != nullptr) - { - const float IPD = Hmd->GetInterpupillaryDistance(); - Profile.Name = ""; - Profile.Gender = "Unknown"; - Profile.PlayerHeight = 0.0f; - Profile.EyeHeight = DefaultHeadModel.HeadModelHeight; - Profile.IPD = IPD; - Profile.NeckToEyeDistance = FVector2D(DefaultHeadModel.HeadModelDepth, 0.0f); - } - return true; - } - return false; - } - - void FOculusXRFunctionLibraryOpenXR::SetBaseRotationAndPositionOffset(FRotator BaseRot, FVector PosOffset, EOrientPositionSelector::Type Options) - { - NOT_IMPLEMENTED(); - } - - void FOculusXRFunctionLibraryOpenXR::GetBaseRotationAndPositionOffset(FRotator& OutRot, FVector& OutPosOffset) - { - NOT_IMPLEMENTED(); - } - - void FOculusXRFunctionLibraryOpenXR::AddLoadingSplashScreen(class UTexture2D* Texture, FVector TranslationInMeters, FRotator Rotation, FVector2D SizeInMeters, FRotator DeltaRotation, bool bClearBeforeAdd) - { - NOT_IMPLEMENTED(); - } - - void FOculusXRFunctionLibraryOpenXR::ClearLoadingSplashScreens() - { - NOT_IMPLEMENTED(); - } - - bool FOculusXRFunctionLibraryOpenXR::HasInputFocus() - { - IXRTrackingSystem* TrackingSystem = OculusXR::GetOpenXRTrackingSystem(); - if (TrackingSystem != nullptr) - { - IOpenXRHMD* OpenXRHMD = TrackingSystem->GetIOpenXRHMD(); - if (OpenXRHMD != nullptr) - { - return OpenXRHMD->IsFocused(); - } - } - return false; - } - - bool FOculusXRFunctionLibraryOpenXR::HasSystemOverlayPresent() - { - IXRTrackingSystem* TrackingSystem = OculusXR::GetOpenXRTrackingSystem(); - if (TrackingSystem != nullptr) - { - IOpenXRHMD* OpenXRHMD = TrackingSystem->GetIOpenXRHMD(); - if (OpenXRHMD != nullptr) - { - return !OpenXRHMD->IsFocused(); - } - } - return false; - } - - void FOculusXRFunctionLibraryOpenXR::GetGPUUtilization(bool& IsGPUAvailable, float& GPUUtilization) - { - OculusXR::FPerformanceExtensionPlugin& PerfPlugin = FOculusXRHMDModule::Get().GetExtensionPluginManager().GetPerformanceExtensionPlugin(); - const FOculusXRPerformanceMetrics& PerformanceMetrics = PerfPlugin.GetPerformanceMetrics(); - if (PerfPlugin.IsPerformanceMetricsSupported(OculusXR::GPUUtilizationFloat)) - { - GPUUtilization = PerformanceMetrics.GpuUtil; - IsGPUAvailable = true; - } - IsGPUAvailable = false; - } - - float FOculusXRFunctionLibraryOpenXR::GetGPUFrameTime() - { - OculusXR::FPerformanceExtensionPlugin& PerfPlugin = FOculusXRHMDModule::Get().GetExtensionPluginManager().GetPerformanceExtensionPlugin(); - const FOculusXRPerformanceMetrics& PerformanceMetrics = PerfPlugin.GetPerformanceMetrics(); - return PerformanceMetrics.AppGpuTime; - } - - void FOculusXRFunctionLibraryOpenXR::GetPerformanceMetrics(FOculusXRPerformanceMetrics& PerformanceMetrics) - { - OculusXR::FPerformanceExtensionPlugin& PerfPlugin = FOculusXRHMDModule::Get().GetExtensionPluginManager().GetPerformanceExtensionPlugin(); - PerformanceMetrics = PerfPlugin.GetPerformanceMetrics(); - } - - - EOculusXRFoveatedRenderingMethod FOculusXRFunctionLibraryOpenXR::GetFoveatedRenderingMethod() - { - NOT_IMPLEMENTED(); - return EOculusXRFoveatedRenderingMethod::FixedFoveatedRendering; - } - - void FOculusXRFunctionLibraryOpenXR::SetFoveatedRenderingMethod(EOculusXRFoveatedRenderingMethod Method) - { - NOT_IMPLEMENTED(); - } - - void FOculusXRFunctionLibraryOpenXR::SetFoveatedRenderingLevel(EOculusXRFoveatedRenderingLevel level, bool isDynamic) - { - if (IConsoleVariable* FoveationLevelCVar = IConsoleManager::Get().FindConsoleVariable(TEXT("xr.OpenXRFBFoveationLevel"))) - { - FoveationLevelCVar->Set(static_cast(level)); - } - if (IConsoleVariable* FoveationDynamicCVar = IConsoleManager::Get().FindConsoleVariable(TEXT("xr.OpenXRFBFoveationDynamic"))) - { - FoveationDynamicCVar->Set(isDynamic); - } - } - - EOculusXRFoveatedRenderingLevel FOculusXRFunctionLibraryOpenXR::GetFoveatedRenderingLevel() - { - const auto FoveationLevelCVar = IConsoleManager::Get().FindTConsoleVariableDataInt(TEXT("xr.OpenXRFBFoveationLevel")); - - return FoveationLevelCVar ? static_cast(FoveationLevelCVar->GetValueOnAnyThread()) : EOculusXRFoveatedRenderingLevel::Off; - } - - bool FOculusXRFunctionLibraryOpenXR::GetEyeTrackedFoveatedRenderingSupported() - { - return false; - } - - FString FOculusXRFunctionLibraryOpenXR::GetDeviceName() - { - // deprecated - return FString(); - } - - EOculusXRDeviceType FOculusXRFunctionLibraryOpenXR::GetDeviceType() - { -#if defined(WITH_OCULUS_BRANCH) - OculusXR::FSystemInfoExtensionPlugin& SystemPlugin = FOculusXRHMDModule::Get().GetExtensionPluginManager().GetSystemInfoExtensionPlugin(); - return SystemPlugin.GetDeviceType(); -#else // defined(WITH_OCULUS_BRANCH) - NOT_IMPLEMENTED(); - return EOculusXRDeviceType::OculusUnknown; -#endif // defined(WITH_OCULUS_BRANCH) - } - - EOculusXRControllerType FOculusXRFunctionLibraryOpenXR::GetControllerType(EControllerHand deviceHand) - { -#if defined(WITH_OCULUS_BRANCH) - OculusXR::FSystemInfoExtensionPlugin& SystemPlugin = FOculusXRHMDModule::Get().GetExtensionPluginManager().GetSystemInfoExtensionPlugin(); - return SystemPlugin.GetControllerType(deviceHand); -#else // defined(WITH_OCULUS_BRANCH) - NOT_IMPLEMENTED(); - return EOculusXRControllerType::None; -#endif // defined(WITH_OCULUS_BRANCH) - } - - TArray FOculusXRFunctionLibraryOpenXR::GetAvailableDisplayFrequencies() - { -#if defined(WITH_OCULUS_BRANCH) - OculusXR::FSystemInfoExtensionPlugin& SystemPlugin = FOculusXRHMDModule::Get().GetExtensionPluginManager().GetSystemInfoExtensionPlugin(); - return SystemPlugin.GetSystemDisplayAvailableFrequencies(); -#else // defined(WITH_OCULUS_BRANCH) - NOT_IMPLEMENTED(); - return TArray(); -#endif // defined(WITH_OCULUS_BRANCH) - } - - float FOculusXRFunctionLibraryOpenXR::GetCurrentDisplayFrequency() - { -#if defined(WITH_OCULUS_BRANCH) - OculusXR::FSystemInfoExtensionPlugin& SystemPlugin = FOculusXRHMDModule::Get().GetExtensionPluginManager().GetSystemInfoExtensionPlugin(); - return SystemPlugin.GetSystemDisplayFrequency(); -#else // defined(WITH_OCULUS_BRANCH) - NOT_IMPLEMENTED(); - return 0.0f; -#endif // defined(WITH_OCULUS_BRANCH) - } - - void FOculusXRFunctionLibraryOpenXR::SetDisplayFrequency(float RequestedFrequency) - { -#if defined(WITH_OCULUS_BRANCH) - OculusXR::FSystemInfoExtensionPlugin& SystemPlugin = FOculusXRHMDModule::Get().GetExtensionPluginManager().GetSystemInfoExtensionPlugin(); - SystemPlugin.SetSystemDisplayFrequency(RequestedFrequency); -#else // defined(WITH_OCULUS_BRANCH) - NOT_IMPLEMENTED(); -#endif // defined(WITH_OCULUS_BRANCH) - } - - void FOculusXRFunctionLibraryOpenXR::EnablePositionTracking(bool bPositionTracking) - { - NOT_IMPLEMENTED(); - } - - void FOculusXRFunctionLibraryOpenXR::EnableOrientationTracking(bool bOrientationTracking) - { - NOT_IMPLEMENTED(); - } - - void FOculusXRFunctionLibraryOpenXR::SetColorScaleAndOffset(FLinearColor ColorScale, FLinearColor ColorOffset, bool bApplyToAllLayers) - { - OculusXR::FLayerExtensionPlugin& Plugin = FOculusXRHMDModule::Get().GetExtensionPluginManager().GetLayerExtensionPlugin(); - Plugin.SetColorScaleAndOffset(ColorScale, ColorOffset, bApplyToAllLayers); - } - - class IStereoLayers* FOculusXRFunctionLibraryOpenXR::GetStereoLayers() - { - NOT_IMPLEMENTED(); - return nullptr; - } - - bool FOculusXRFunctionLibraryOpenXR::IsGuardianConfigured() - { - OculusXR::FGuardianExtensionPlugin& Plugin = FOculusXRHMDModule::Get().GetExtensionPluginManager().GetGuardianExtensionPlugin(); - return Plugin.IsGuardianConfigured(); - } - - bool FOculusXRFunctionLibraryOpenXR::IsGuardianDisplayed() - { - // deprecated - return false; - } - - TArray FOculusXRFunctionLibraryOpenXR::GetGuardianPoints(EOculusXRBoundaryType BoundaryType, bool UsePawnSpace /* = false */) - { - if (BoundaryType != EOculusXRBoundaryType::Boundary_PlayArea) - { - UE_LOG(LogHMD, Log, TEXT("GetGuardianPoints: Only Boundary_PlayArea is applicable in OpenXR")); - return TArray(); - } - - TArray BoundaryPoints; - IXRTrackingSystem* TrackingSystem = OculusXR::GetOpenXRTrackingSystem(); - - if (TrackingSystem != nullptr) - { - OculusXR::FGuardianExtensionPlugin& Plugin = FOculusXRHMDModule::Get().GetExtensionPluginManager().GetGuardianExtensionPlugin(); - Plugin.GetGuardianPoints(BoundaryPoints); - } - - return BoundaryPoints; - } - - FVector FOculusXRFunctionLibraryOpenXR::GetGuardianDimensions(EOculusXRBoundaryType BoundaryType) - { - OculusXR::FGuardianExtensionPlugin& Plugin = FOculusXRHMDModule::Get().GetExtensionPluginManager().GetGuardianExtensionPlugin(); - return Plugin.GetGuardianDimensions(); - } - - FTransform FOculusXRFunctionLibraryOpenXR::GetPlayAreaTransform() - { - IXRTrackingSystem* TrackingSystem = OculusXR::GetOpenXRTrackingSystem(); - if (TrackingSystem != nullptr) - { - TArray BoundaryPoints; - OculusXR::FGuardianExtensionPlugin& Plugin = FOculusXRHMDModule::Get().GetExtensionPluginManager().GetGuardianExtensionPlugin(); - if (Plugin.GetGuardianPoints(BoundaryPoints)) - { - check(BoundaryPoints.Num() == 4); - const float WorldToMetersScale = TrackingSystem->GetWorldToMetersScale(); - - const FVector Edge = BoundaryPoints[1] - BoundaryPoints[0]; - const float Angle = FMath::Acos((Edge).GetSafeNormal() | FVector::RightVector); - const FQuat Rotation(FVector::UpVector, Edge.X < 0 ? Angle : -Angle); - - const FVector Position = (BoundaryPoints[0] + BoundaryPoints[1] + BoundaryPoints[2] + BoundaryPoints[3]) / 4; - const FVector Scale(FVector::Distance(BoundaryPoints[3], BoundaryPoints[0]) / WorldToMetersScale, FVector::Distance(BoundaryPoints[1], BoundaryPoints[0]) / WorldToMetersScale, 1.0); - - return FTransform(Rotation, Position, Scale); - } - } - return FTransform(); - } - - FOculusXRGuardianTestResult FOculusXRFunctionLibraryOpenXR::GetPointGuardianIntersection(const FVector Point, EOculusXRBoundaryType BoundaryType) - { - // deprecated - FOculusXRGuardianTestResult InteractionInfo; - memset(&InteractionInfo, 0, sizeof(FOculusXRGuardianTestResult)); - return InteractionInfo; - } - - FOculusXRGuardianTestResult FOculusXRFunctionLibraryOpenXR::GetNodeGuardianIntersection(EOculusXRTrackedDeviceType DeviceType, EOculusXRBoundaryType BoundaryType) - { - // deprecated - FOculusXRGuardianTestResult InteractionInfo; - memset(&InteractionInfo, 0, sizeof(FOculusXRGuardianTestResult)); - return InteractionInfo; - } - - void FOculusXRFunctionLibraryOpenXR::SetGuardianVisibility(bool GuardianVisible) - { - // deprecated - } - - bool FOculusXRFunctionLibraryOpenXR::GetSystemHmd3DofModeEnabled() - { - NOT_IMPLEMENTED(); - return false; - } - - EOculusXRColorSpace FOculusXRFunctionLibraryOpenXR::GetHmdColorDesc() - { -#if defined(WITH_OCULUS_BRANCH) - OculusXR::FSystemInfoExtensionPlugin& SystemPlugin = FOculusXRHMDModule::Get().GetExtensionPluginManager().GetSystemInfoExtensionPlugin(); - return SystemPlugin.GetColorSpace(); -#else // defined(WITH_OCULUS_BRANCH) - NOT_IMPLEMENTED(); - return EOculusXRColorSpace::Unknown; -#endif // defined(WITH_OCULUS_BRANCH) - } - - void FOculusXRFunctionLibraryOpenXR::SetClientColorDesc(EOculusXRColorSpace ColorSpace) - { -#if defined(WITH_OCULUS_BRANCH) - OculusXR::FSystemInfoExtensionPlugin& SystemPlugin = FOculusXRHMDModule::Get().GetExtensionPluginManager().GetSystemInfoExtensionPlugin(); - SystemPlugin.SetColorSpace(ColorSpace); -#else // defined(WITH_OCULUS_BRANCH) - NOT_IMPLEMENTED(); -#endif // defined(WITH_OCULUS_BRANCH) - } - - void FOculusXRFunctionLibraryOpenXR::SetLocalDimmingOn(bool LocalDimmingOn) - { - OculusXR::FLayerExtensionPlugin& Plugin = FOculusXRHMDModule::Get().GetExtensionPluginManager().GetLayerExtensionPlugin(); - return Plugin.SetEnableLocalDimming(LocalDimmingOn); - } - - bool FOculusXRFunctionLibraryOpenXR::IsPassthroughSupported() - { -#if defined(WITH_OCULUS_BRANCH) - OculusXR::FSystemInfoExtensionPlugin& SystemPlugin = FOculusXRHMDModule::Get().GetExtensionPluginManager().GetSystemInfoExtensionPlugin(); - return SystemPlugin.IsPassthroughSupported(); -#else // defined(WITH_OCULUS_BRANCH) - NOT_IMPLEMENTED(); - return false; -#endif // defined(WITH_OCULUS_BRANCH) - } - - bool FOculusXRFunctionLibraryOpenXR::IsColorPassthroughSupported() - { -#if defined(WITH_OCULUS_BRANCH) - OculusXR::FSystemInfoExtensionPlugin& SystemPlugin = FOculusXRHMDModule::Get().GetExtensionPluginManager().GetSystemInfoExtensionPlugin(); - return SystemPlugin.IsColorPassthroughSupported(); -#else // defined(WITH_OCULUS_BRANCH) - NOT_IMPLEMENTED(); - return false; -#endif // defined(WITH_OCULUS_BRANCH) - } - - void FOculusXRFunctionLibraryOpenXR::StartEnvironmentDepth() - { -#ifdef WITH_OCULUS_BRANCH - auto& EnvDepthPlugin = FOculusXRHMDModule::Get().GetExtensionPluginManager().GetEnvironmentDepthExtensionPlugin(); - EnvDepthPlugin.StartEnvironmentDepth(); -#endif - } - - void FOculusXRFunctionLibraryOpenXR::StopEnvironmentDepth() - { -#ifdef WITH_OCULUS_BRANCH - auto& EnvDepthPlugin = FOculusXRHMDModule::Get().GetExtensionPluginManager().GetEnvironmentDepthExtensionPlugin(); - EnvDepthPlugin.StopEnvironmentDepth(); -#endif - } - - bool FOculusXRFunctionLibraryOpenXR::IsEnvironmentDepthStarted() - { -#ifdef WITH_OCULUS_BRANCH - const auto& EnvDepthPlugin = FOculusXRHMDModule::Get().GetExtensionPluginManager().GetEnvironmentDepthExtensionPlugin(); - return !EnvDepthPlugin.IsEnvironmentDepthStarted(); -#else - return false; -#endif - } - - void FOculusXRFunctionLibraryOpenXR::SetEnvironmentDepthHandRemoval(bool RemoveHands) - { -#ifdef WITH_OCULUS_BRANCH - auto& EnvDepthPlugin = FOculusXRHMDModule::Get().GetExtensionPluginManager().GetEnvironmentDepthExtensionPlugin(); - EnvDepthPlugin.SetEnvironmentDepthHandRemoval_RenderThread(RemoveHands); -#endif - } - - void FOculusXRFunctionLibraryOpenXR::SetXROcclusionsMode(UObject* WorldContextObject, EOculusXROcclusionsMode Mode) - { -#ifdef WITH_OCULUS_BRANCH - auto& EnvDepthPlugin = FOculusXRHMDModule::Get().GetExtensionPluginManager().GetEnvironmentDepthExtensionPlugin(); - EnvDepthPlugin.SetXROcclusionsMode(WorldContextObject, Mode); -#endif - } - - void FOculusXRFunctionLibraryOpenXR::SetEyeBufferSharpenType(EOculusXREyeBufferSharpenType EyeBufferSharpenType) - { - OculusXR::FLayerExtensionPlugin& Plugin = FOculusXRHMDModule::Get().GetExtensionPluginManager().GetLayerExtensionPlugin(); - Plugin.SetEyeBufferSharpenType(EyeBufferSharpenType); - } - - bool FOculusXRFunctionLibraryOpenXR::IsPassthroughRecommended() - { -#if defined(WITH_OCULUS_BRANCH) - OculusXR::FSystemInfoExtensionPlugin& SystemPlugin = FOculusXRHMDModule::Get().GetExtensionPluginManager().GetSystemInfoExtensionPlugin(); - return SystemPlugin.IsPassthroughRecommended(); -#else // defined(WITH_OCULUS_BRANCH) - NOT_IMPLEMENTED(); - return false; -#endif // defined(WITH_OCULUS_BRANCH) - } - - void FOculusXRFunctionLibraryOpenXR::GetOpenXRInstanceProcAddrFunc(void** func) - { - *func = (void*)OpenXRDynamicAPI::xrGetInstanceProcAddr; - } - - void FOculusXRFunctionLibraryOpenXR::GetNativeOpenXRHandles(uint64_t* OutXrInstance, uint64_t* OutXrSession) - { - IXRTrackingSystem* TrackingSystem = OculusXR::GetOpenXRTrackingSystem(); - if (TrackingSystem) - { - IOpenXRHMD* OpenXRHMD = TrackingSystem->GetIOpenXRHMD(); - if (OpenXRHMD) - { - if (OutXrInstance) - { - *OutXrInstance = (uint64_t)OpenXRHMD->GetInstance(); - } - if (OutXrSession) - { - *OutXrSession = (uint64_t)OpenXRHMD->GetSession(); - } - } - } - } - - void FOculusXRFunctionLibraryOpenXR::GetAppSpace(uint64_t* OutAppSpace) - { - IXRTrackingSystem* TrackingSystem = OculusXR::GetOpenXRTrackingSystem(); - if (TrackingSystem) - { - IOpenXRHMD* OpenXRHMD = TrackingSystem->GetIOpenXRHMD(); - if (OpenXRHMD) - { - *OutAppSpace = (uint64_t)OpenXRHMD->GetTrackingSpace(); - } - } - } - - void FOculusXRFunctionLibraryOpenXR::GetNextPredictedDisplayTime(uint64_t* NextPredictedDisplayTime) - { - IXRTrackingSystem* TrackingSystem = OculusXR::GetOpenXRTrackingSystem(); - if (TrackingSystem) - { - IOpenXRHMD* OpenXRHMD = TrackingSystem->GetIOpenXRHMD(); - if (OpenXRHMD) - { - *NextPredictedDisplayTime = OpenXRHMD->GetDisplayTime(); - } - } - } - - void FOculusXRFunctionLibraryOpenXR::RegisterOpenXrEventHandler(void (*OpenXrEventHandler)(void* data, void* context), void* Context) - { - ensureMsgf(false, TEXT("RegisterOpenXrEventHandler is only available with OvrPlugin")); - } - - void FOculusXRFunctionLibraryOpenXR::UnregisterOpenXrEventHandler(void (*OpenXrEventHandler)(void* data, void* context)) - { - ensureMsgf(false, TEXT("UnregisterOpenXrEventHandler is only available with OvrPlugin")); - } - -} // namespace OculusXRHMD diff --git a/Plugins/MetaXR/Source/OculusXRHMD/Private/OculusXRFunctionLibraryOpenXR.h b/Plugins/MetaXR/Source/OculusXRHMD/Private/OculusXRFunctionLibraryOpenXR.h deleted file mode 100644 index af647ff..0000000 --- a/Plugins/MetaXR/Source/OculusXRHMD/Private/OculusXRFunctionLibraryOpenXR.h +++ /dev/null @@ -1,73 +0,0 @@ -// Copyright (c) Meta Platforms, Inc. and affiliates. - -#pragma once -#include "OculusXRFunctionLibrary.h" - -namespace OculusXRHMD -{ - class FOculusXRFunctionLibraryOpenXR : public IOculusXRFunctionLibrary - { - public: - virtual void GetPose(FRotator& DeviceRotation, FVector& DevicePosition, FVector& NeckPosition) override; - virtual void SetBaseRotationAndBaseOffsetInMeters(FRotator Rotation, FVector BaseOffsetInMeters, EOrientPositionSelector::Type Options) override; - virtual void GetBaseRotationAndBaseOffsetInMeters(FRotator& OutRotation, FVector& OutBaseOffsetInMeters) override; - virtual void GetRawSensorData(FVector& AngularAcceleration, FVector& LinearAcceleration, FVector& AngularVelocity, FVector& LinearVelocity, float& TimeInSeconds, EOculusXRTrackedDeviceType DeviceType) override; - virtual bool IsDeviceTracked(EOculusXRTrackedDeviceType DeviceType) override; - virtual void GetSuggestedCpuAndGpuPerformanceLevels(EOculusXRProcessorPerformanceLevel& CpuPerfLevel, EOculusXRProcessorPerformanceLevel& GpuPerfLevel) override; - virtual void SetSuggestedCpuAndGpuPerformanceLevels(EOculusXRProcessorPerformanceLevel CpuPerfLevel, EOculusXRProcessorPerformanceLevel GpuPerfLevel) override; - virtual bool GetUserProfile(FOculusXRHmdUserProfile& Profile) override; - virtual void SetBaseRotationAndPositionOffset(FRotator BaseRot, FVector PosOffset, EOrientPositionSelector::Type Options) override; - virtual void GetBaseRotationAndPositionOffset(FRotator& OutRot, FVector& OutPosOffset) override; - virtual void AddLoadingSplashScreen(class UTexture2D* Texture, FVector TranslationInMeters, FRotator Rotation, FVector2D SizeInMeters, FRotator DeltaRotation, bool bClearBeforeAdd) override; - virtual void ClearLoadingSplashScreens() override; - virtual bool HasInputFocus() override; - virtual bool HasSystemOverlayPresent() override; - virtual void GetGPUUtilization(bool& IsGPUAvailable, float& GPUUtilization) override; - virtual float GetGPUFrameTime() override; - virtual void GetPerformanceMetrics(FOculusXRPerformanceMetrics& PerformanceMetrics) override; - - - virtual EOculusXRFoveatedRenderingMethod GetFoveatedRenderingMethod() override; - virtual void SetFoveatedRenderingMethod(EOculusXRFoveatedRenderingMethod Method) override; - virtual void SetFoveatedRenderingLevel(EOculusXRFoveatedRenderingLevel level, bool isDynamic) override; - virtual EOculusXRFoveatedRenderingLevel GetFoveatedRenderingLevel() override; - virtual bool GetEyeTrackedFoveatedRenderingSupported() override; - virtual FString GetDeviceName() override; - virtual EOculusXRDeviceType GetDeviceType() override; - virtual EOculusXRControllerType GetControllerType(EControllerHand deviceHand) override; - virtual TArray GetAvailableDisplayFrequencies() override; - virtual float GetCurrentDisplayFrequency() override; - virtual void SetDisplayFrequency(float RequestedFrequency) override; - virtual void EnablePositionTracking(bool bPositionTracking) override; - virtual void EnableOrientationTracking(bool bOrientationTracking) override; - virtual void SetColorScaleAndOffset(FLinearColor ColorScale, FLinearColor ColorOffset, bool bApplyToAllLayers) override; - virtual class IStereoLayers* GetStereoLayers() override; - virtual bool IsGuardianConfigured() override; - virtual bool IsGuardianDisplayed() override; - virtual TArray GetGuardianPoints(EOculusXRBoundaryType BoundaryType, bool UsePawnSpace /* = false */) override; - virtual FVector GetGuardianDimensions(EOculusXRBoundaryType BoundaryType) override; - virtual FTransform GetPlayAreaTransform() override; - virtual FOculusXRGuardianTestResult GetPointGuardianIntersection(const FVector Point, EOculusXRBoundaryType BoundaryType) override; - virtual FOculusXRGuardianTestResult GetNodeGuardianIntersection(EOculusXRTrackedDeviceType DeviceType, EOculusXRBoundaryType BoundaryType) override; - virtual void SetGuardianVisibility(bool GuardianVisible) override; - virtual bool GetSystemHmd3DofModeEnabled() override; - virtual EOculusXRColorSpace GetHmdColorDesc() override; - virtual void SetClientColorDesc(EOculusXRColorSpace ColorSpace) override; - virtual void SetLocalDimmingOn(bool LocalDimmingOn) override; - virtual bool IsPassthroughSupported() override; - virtual bool IsColorPassthroughSupported() override; - virtual void StartEnvironmentDepth() override; - virtual void StopEnvironmentDepth() override; - virtual bool IsEnvironmentDepthStarted() override; - virtual void SetEnvironmentDepthHandRemoval(bool RemoveHands) override; - virtual void SetXROcclusionsMode(UObject* WorldContextObject, EOculusXROcclusionsMode Mode) override; - virtual void SetEyeBufferSharpenType(EOculusXREyeBufferSharpenType EyeBufferSharpenType) override; - virtual bool IsPassthroughRecommended() override; - virtual void GetOpenXRInstanceProcAddrFunc(void** func) override; - virtual void GetNativeOpenXRHandles(uint64_t* OutXrInstance, uint64_t* OutXrSession) override; - virtual void GetAppSpace(uint64_t* OutAppSpace) override; - virtual void GetNextPredictedDisplayTime(uint64_t* NextPredictedDisplayTime) override; - virtual void RegisterOpenXrEventHandler(void (*OpenXrEventHandler)(void* data, void* context), void* Context); - virtual void UnregisterOpenXrEventHandler(void (*OpenXrEventHandler)(void* data, void* context)); - }; -} // namespace OculusXRHMD diff --git a/Plugins/MetaXR/Source/OculusXRHMD/Private/OculusXRHMD.cpp b/Plugins/MetaXR/Source/OculusXRHMD/Private/OculusXRHMD.cpp deleted file mode 100644 index 9e5f7bf..0000000 --- a/Plugins/MetaXR/Source/OculusXRHMD/Private/OculusXRHMD.cpp +++ /dev/null @@ -1,5182 +0,0 @@ -// @lint-ignore-every LICENSELINT -// Copyright Epic Games, Inc. All Rights Reserved. - -#include "OculusXRHMD.h" -#include "OculusXRHMDPrivateRHI.h" - -#include "EngineAnalytics.h" -#include "Interfaces/IAnalyticsProvider.h" -#include "AnalyticsEventAttribute.h" -#include "Slate/SceneViewport.h" -#include "PostProcess/PostProcessHMD.h" -#include "PostProcess/SceneRenderTargets.h" -#include "HardwareInfo.h" -#include "ScreenRendering.h" -#include "GameFramework/PlayerController.h" -#include "Math/UnrealMathUtility.h" -#include "Math/TranslationMatrix.h" -#include "Widgets/SViewport.h" -#include "Layout/WidgetPath.h" -#include "Framework/Application/SlateApplication.h" -#include "Engine/Canvas.h" -#include "Engine/GameEngine.h" -#include "Engine/RendererSettings.h" -#include "Misc/CoreDelegates.h" -#include "GameFramework/WorldSettings.h" -#include "Engine/StaticMesh.h" -#include "Engine/StaticMeshActor.h" -#include "Components/InstancedStaticMeshComponent.h" -#include "Misc/EngineVersion.h" -#include "ClearQuad.h" -#include "DynamicResolutionState.h" -#include "DynamicResolutionProxy.h" -#include "OculusXRHMDRuntimeSettings.h" -#include "OculusXRDelegates.h" -#include "DataDrivenShaderPlatformInfo.h" -#include "GenericPlatform/GenericPlatformMath.h" -#include "LegacyScreenPercentageDriver.h" -#include "OculusXRTelemetry.h" -#include "OculusXRTelemetryEvents.h" - -#if PLATFORM_ANDROID -#include "Android/AndroidJNI.h" -#include "Android/AndroidApplication.h" -#include "HAL/IConsoleManager.h" -#include "AndroidPermissionFunctionLibrary.h" -#include "AndroidPermissionCallbackProxy.h" -#endif -#include "GeneralProjectSettings.h" -#include "OculusShaders.h" -#include "PipelineStateCache.h" - -#include "IOculusXRMRModule.h" - -#if WITH_EDITOR -#include "Editor/UnrealEd/Classes/Editor/EditorEngine.h" -#include "Settings/LevelEditorPlaySettings.h" -#endif - -#if !UE_BUILD_SHIPPING -#include "Debug/DebugDrawService.h" -#endif - -#if OCULUS_HMD_SUPPORTED_PLATFORMS - -static TAutoConsoleVariable CVarOculusEnableSubsampledLayout( - TEXT("r.Mobile.Oculus.EnableSubsampled"), - 1, - TEXT("0: Disable subsampled layout\n") - TEXT("1: Enable subsampled layout on supported platforms (Default)\n"), - ECVF_Scalability | ECVF_RenderThreadSafe); - -static TAutoConsoleVariable CVarOculusEnableLowLatencyVRS( - TEXT("r.Mobile.Oculus.EnableLowLatencyVRS"), - 0, - TEXT("0: Disable late update of VRS textures (Default)\n") - TEXT("1: Enable late update of VRS textures\n"), - ECVF_Scalability | ECVF_RenderThreadSafe); - -static TAutoConsoleVariable CVarOculusForceSymmetric( - TEXT("r.Mobile.Oculus.ForceSymmetric"), - 0, - TEXT("0: Use standard runtime-provided projection matrices (Default)\n") - TEXT("1: Render both eyes with a symmetric projection, union of both FOVs (and corresponding higher rendertarget size to maintain PD)\n"), - ECVF_Scalability | ECVF_RenderThreadSafe); - -static TAutoConsoleVariable CVarOculusIncreaseThreadPrio( - TEXT("r.Mobile.Oculus.IncreaseThreadPrio"), - 0, - TEXT("This CVar only works when set using the project config\n") - TEXT("0: Use standard engine thread priority for all threads\n") - TEXT("1: Use increased thread priority provided by runtime (Default)\n"), - ECVF_Scalability | ECVF_RenderThreadSafe); - -// AppSpaceWarp -static TAutoConsoleVariable CVarOculusEnableSpaceWarpUser( - TEXT("r.Mobile.Oculus.SpaceWarp.Enable"), - 0, - TEXT("0 Disable spacewarp at runtime.\n") - TEXT("1 Enable spacewarp at runtime.\n"), - ECVF_Scalability | ECVF_RenderThreadSafe); - -// Foveated Rendering -static TAutoConsoleVariable CVarOculusFoveatedRenderingMethod( - TEXT("r.Mobile.Oculus.FoveatedRendering.Method"), - -1, - TEXT("0 Fixed Foveated Rendering.\n") - TEXT("1 Eye-Tracked Foveated Rendering.\n"), - ECVF_Scalability | ECVF_RenderThreadSafe); - -static TAutoConsoleVariable CVarOculusFoveatedRenderingLevel( - TEXT("r.Mobile.Oculus.FoveatedRendering.Level"), - -1, - TEXT("0 Off.\n") - TEXT("1 Low.\n") - TEXT("2 Medium.\n") - TEXT("3 High.\n") - TEXT("4 High Top.\n"), - ECVF_Scalability | ECVF_RenderThreadSafe); - -static TAutoConsoleVariable CVarOculusDynamicFoveatedRendering( - TEXT("r.Mobile.Oculus.FoveatedRendering.Dynamic"), - -1, - TEXT("0 Disable Dynamic Foveated Rendering at runtime.\n") - TEXT("1 Enable Dynamic Foveated Rendering at runtime.\n"), - ECVF_Scalability | ECVF_RenderThreadSafe); - -static TAutoConsoleVariable CVarOculusDynamicResolutionPixelDensity( - TEXT("r.Oculus.DynamicResolution.PixelDensity"), - 0, - TEXT("0 Static Pixel Density corresponding to Pixel Density 1.0 (default)\n") - TEXT(">0 Manual Pixel Density Override\n"), - ECVF_Scalability | ECVF_RenderThreadSafe); - -static TAutoConsoleVariable CVarOculusDynamicResolutionPixelDensityMin( - VAR_PixelDensityMin, - 0.8f, - TEXT("Minimum Static Pixel Density corresponding to Pixel Density 1.0.\n") - TEXT("Could be set for each specific device profile.\n"), - ECVF_Scalability | ECVF_RenderThreadSafe); -static TAutoConsoleVariable CVarOculusDynamicResolutionPixelDensityMax( - VAR_PixelDensityMax, - 1.2f, - TEXT("Maximum Static Pixel Density corresponding to Pixel Density 1.0\n") - TEXT("Could be set for each specific device profile.\n"), - ECVF_Scalability | ECVF_RenderThreadSafe); -#define OCULUS_PAUSED_IDLE_FPS 10 - -static const FString USE_SCENE_PERMISSION_NAME("com.oculus.permission.USE_SCENE"); -static const FString PROJECT_ID_TELEMETRY("META_PROJECT_TELEMETRY_ID"); - -static bool IsMobileTonemapSubpassEnabled(const FStaticShaderPlatform Platform) -{ - static auto* MobileTonemapSubpassPathCvar = IConsoleManager::Get().FindTConsoleVariableDataInt(TEXT("r.Mobile.TonemapSubpass")); - return (MobileTonemapSubpassPathCvar && (MobileTonemapSubpassPathCvar->GetValueOnAnyThread() == 1)) && !IsMobileDeferredShadingEnabled(Platform); -} - -namespace OculusXRHMD -{ - IMPLEMENT_SHADER_TYPE(template <>, FScreenPSEnvironmentDepthMinMax, TEXT("/Plugin/OculusXR/Private/ScreenPSEnvironmentDepthMinMax.usf"), TEXT("Main"), SF_Pixel); - IMPLEMENT_SHADER_TYPE(template <>, FScreenPSEnvironmentDepthMinMax, TEXT("/Plugin/OculusXR/Private/ScreenPSEnvironmentDepthMinMax.usf"), TEXT("Main"), SF_Pixel); - -#if !UE_BUILD_SHIPPING - static void __cdecl OvrpLogCallback(ovrpLogLevel level, const char* message) - { - FString tbuf = ANSI_TO_TCHAR(message); - const TCHAR* levelStr = TEXT(""); - switch (level) - { - case ovrpLogLevel_Debug: - levelStr = TEXT(" Debug:"); - break; - case ovrpLogLevel_Info: - levelStr = TEXT(" Info:"); - break; - case ovrpLogLevel_Error: - levelStr = TEXT(" Error:"); - break; - case ovrpLogLevel_Warning: - levelStr = TEXT(" Warning:"); - break; - } - - GLog->Logf(TEXT("OCULUS:%s %s"), levelStr, *tbuf); - } -#endif // !UE_BUILD_SHIPPING - - //------------------------------------------------------------------------------------------------- - // FOculusXRHMD - //------------------------------------------------------------------------------------------------- - - FName FOculusXRHMD::GetSystemName() const - { - return IOculusXRHMDModule::NAME_OculusXRHMD; - } - int32 FOculusXRHMD::GetXRSystemFlags() const - { - return EXRSystemFlags::IsHeadMounted; - } - - FString FOculusXRHMD::GetVersionString() const - { - const char* Version; - - if (OVRP_FAILURE(FOculusXRHMDModule::GetPluginWrapper().GetVersion2(&Version))) - { - Version = "Unknown"; - } - - return FString::Printf(TEXT("OVRPlugin: %s"), UTF8_TO_TCHAR(Version)); - } - - bool FOculusXRHMD::DoesSupportPositionalTracking() const - { - ovrpBool trackingPositionSupported; - return OVRP_SUCCESS(FOculusXRHMDModule::GetPluginWrapper().GetTrackingPositionSupported2(&trackingPositionSupported)) && trackingPositionSupported; - } - - bool FOculusXRHMD::HasValidTrackingPosition() - { - ovrpBool nodePositionTracked; - return OVRP_SUCCESS(FOculusXRHMDModule::GetPluginWrapper().GetNodePositionTracked2(ovrpNode_Head, &nodePositionTracked)) && nodePositionTracked; - } - - struct TrackedDevice - { - ovrpNode Node; - EXRTrackedDeviceType Type; - }; - - static TrackedDevice TrackedDevices[] = { - { ovrpNode_Head, EXRTrackedDeviceType::HeadMountedDisplay }, - { ovrpNode_HandLeft, EXRTrackedDeviceType::Controller }, - { ovrpNode_HandRight, EXRTrackedDeviceType::Controller }, - { ovrpNode_TrackerZero, EXRTrackedDeviceType::TrackingReference }, - { ovrpNode_TrackerOne, EXRTrackedDeviceType::TrackingReference }, - { ovrpNode_TrackerTwo, EXRTrackedDeviceType::TrackingReference }, - { ovrpNode_TrackerThree, EXRTrackedDeviceType::TrackingReference }, - { ovrpNode_DeviceObjectZero, EXRTrackedDeviceType::Other }, - }; - - static uint32 TrackedDeviceCount = sizeof(TrackedDevices) / sizeof(TrackedDevices[0]); - - bool FOculusXRHMD::EnumerateTrackedDevices(TArray& OutDevices, EXRTrackedDeviceType Type) - { - CheckInGameThread(); - - for (uint32 TrackedDeviceId = 0; TrackedDeviceId < TrackedDeviceCount; TrackedDeviceId++) - { - if (Type == EXRTrackedDeviceType::Any || Type == TrackedDevices[TrackedDeviceId].Type) - { - ovrpBool nodePresent; - - ovrpNode Node = TrackedDevices[TrackedDeviceId].Node; - if (OVRP_SUCCESS(FOculusXRHMDModule::GetPluginWrapper().GetNodePresent2(Node, &nodePresent)) && nodePresent) - { - const int32 ExternalDeviceId = OculusXRHMD::ToExternalDeviceId(Node); - OutDevices.Add(ExternalDeviceId); - } - } - } - - return true; - } - - void FOculusXRHMD::UpdateRTPoses() - { - CheckInRenderThread(); - FGameFrame* CurrentFrame = GetFrame_RenderThread(); - if (CurrentFrame) - { - if (!CurrentFrame->Flags.bRTLateUpdateDone) - { - FOculusXRHMDModule::GetPluginWrapper().Update3(ovrpStep_Render, CurrentFrame->FrameNumber, 0.0); - CurrentFrame->Flags.bRTLateUpdateDone = true; - } - } - // else, Frame_RenderThread has already been reset/rendered (or not created yet). - // This can happen when DoEnableStereo() is called, as SetViewportSize (which it calls) enques a render - // immediately - meaning two render frames were enqueued in the span of one game tick. - } - - void FOculusXRHMD::SwitchPrimaryPIE(int PrimaryPIEIndex) - { - CurPlayerIndex = PrimaryPIEIndex; - } - - void FOculusXRHMD::InitMultiPlayerPoses(const FPose& CurPose) - { -#if WITH_EDITOR && PLATFORM_WINDOWS - if (!GIsEditor || MultiPlayerPoses.Num()) - { - return; - } - - ovrpBool bAppHasVRFocus = ovrpBool_False; - FOculusXRHMDModule::GetPluginWrapper().GetAppHasVrFocus2(&bAppHasVRFocus); - if (!bAppHasVRFocus) - return; - - ULevelEditorPlaySettings* PlayInSettings = GetMutableDefault(); - check(PlayInSettings); - int PlayNumberOfClients; - PlayInSettings->GetPlayNumberOfClients(PlayNumberOfClients); - if (PlayNumberOfClients <= 1) - { - return; - } - LastFrameHMDHeadPose = CurPose; - MultiPlayerPoses.Empty(); - MultiPlayerPoses.InsertDefaulted(0, PlayNumberOfClients); - for (auto& PlayerPose : MultiPlayerPoses) - { - PlayerPose = CurPose; - } - UE_LOG(LogHMD, Log, TEXT("MultiPlayer poses are initialized.")); -#endif - } - - void FOculusXRHMD::ResetMultiPlayerPoses() - { -#if WITH_EDITOR && PLATFORM_WINDOWS - if (!GIsEditor || GetMutableDefault()->MPPoseRestoreType == EOculusXRMPPoseRestoreType::Disabled) - { - return; - } - - CurPlayerIndex = 0; - LastFrameHMDHeadPose = FPose(); - MultiPlayerPoses.Empty(); -#endif - } - - void FOculusXRHMD::ReCalcMultiPlayerPoses(FPose& CurHMDHeadPose) - { -#if WITH_EDITOR && PLATFORM_WINDOWS - if (!GIsEditor || GetMutableDefault()->MPPoseRestoreType == EOculusXRMPPoseRestoreType::Disabled) - { - return; - } - - if (!MultiPlayerPoses.Num()) - { - InitMultiPlayerPoses(CurHMDHeadPose); - } - - if (!MultiPlayerPoses.Num()) - { - return; - } - - FPose& PlayerPose = MultiPlayerPoses[CurPlayerIndex]; - if (GetMutableDefault()->MPPoseRestoreType == EOculusXRMPPoseRestoreType::PositionOnly) - { - FVector DeltaPosition = CurHMDHeadPose.Position - LastFrameHMDHeadPose.Position; - PlayerPose.Position += DeltaPosition; - LastFrameHMDHeadPose.Position = CurHMDHeadPose.Position; - CurHMDHeadPose.Position = PlayerPose.Position; - } - else - { - FPose DeltaPose = LastFrameHMDHeadPose.Inverse() * CurHMDHeadPose; - PlayerPose = PlayerPose * DeltaPose; - LastFrameHMDHeadPose = CurHMDHeadPose; - CurHMDHeadPose = PlayerPose; - } -#endif - } - - bool FOculusXRHMD::GetCurrentPose(int32 InDeviceId, FQuat& OutOrientation, FVector& OutPosition) - { - OutOrientation = FQuat::Identity; - OutPosition = FVector::ZeroVector; - - if ((size_t)InDeviceId >= TrackedDeviceCount) - { - return false; - } - - ovrpNode Node = OculusXRHMD::ToOvrpNode(InDeviceId); - const FSettings* CurrentSettings; - FGameFrame* CurrentFrame; - - if (InRenderThread()) - { - CurrentSettings = GetSettings_RenderThread(); - CurrentFrame = GetFrame_RenderThread(); - UpdateRTPoses(); - } - else if (InGameThread()) - { - CurrentSettings = GetSettings(); - CurrentFrame = NextFrameToRender.Get(); - } - else - { - return false; - } - - if (!CurrentSettings || !CurrentFrame) - { - return false; - } - - ovrpPoseStatef PoseState; - FPose Pose; - - if (OVRP_FAILURE(FOculusXRHMDModule::GetPluginWrapper().GetNodePoseState3(ovrpStep_Render, CurrentFrame->FrameNumber, Node, &PoseState)) || !ConvertPose_Internal(PoseState.Pose, Pose, CurrentSettings, CurrentFrame->WorldToMetersScale)) - { - return false; - } - - if (Node == ovrpNode_Head || Node == ovrpNode_EyeCenter) - { - ReCalcMultiPlayerPoses(Pose); - } - - OutPosition = Pose.Position; - OutOrientation = Pose.Orientation; - return true; - } - - bool FOculusXRHMD::GetRelativeEyePose(int32 InDeviceId, int32 ViewIndex, FQuat& OutOrientation, FVector& OutPosition) - { - OutOrientation = FQuat::Identity; - OutPosition = FVector::ZeroVector; - - if (InDeviceId != HMDDeviceId) - { - return false; - } - - ovrpNode Node; - - switch (ViewIndex) - { - case EStereoscopicEye::eSSE_LEFT_EYE: - Node = ovrpNode_EyeLeft; - break; - case EStereoscopicEye::eSSE_RIGHT_EYE: - Node = ovrpNode_EyeRight; - break; - case EStereoscopicEye::eSSE_MONOSCOPIC: - Node = ovrpNode_EyeCenter; - break; - default: - return false; - } - - const FSettings* CurrentSettings; - FGameFrame* CurrentFrame; - - if (InRenderThread()) - { - CurrentSettings = GetSettings_RenderThread(); - CurrentFrame = GetFrame_RenderThread(); - UpdateRTPoses(); - } - else if (InGameThread()) - { - CurrentSettings = GetSettings(); - CurrentFrame = NextFrameToRender.Get(); - } - else - { - return false; - } - - if (!CurrentSettings || !CurrentFrame) - { - return false; - } - - ovrpPoseStatef HmdPoseState, EyePoseState; - - if (OVRP_FAILURE(FOculusXRHMDModule::GetPluginWrapper().GetNodePoseState3(ovrpStep_Render, CurrentFrame->FrameNumber, ovrpNode_Head, &HmdPoseState)) || OVRP_FAILURE(FOculusXRHMDModule::GetPluginWrapper().GetNodePoseState3(ovrpStep_Render, CurrentFrame->FrameNumber, Node, &EyePoseState))) - { - return false; - } - - FPose HmdPose, EyePose; - HmdPose.Orientation = ToFQuat(HmdPoseState.Pose.Orientation); - HmdPose.Position = ToFVector(HmdPoseState.Pose.Position) * CurrentFrame->WorldToMetersScale; - EyePose.Orientation = ToFQuat(EyePoseState.Pose.Orientation); - EyePose.Position = ToFVector(EyePoseState.Pose.Position) * CurrentFrame->WorldToMetersScale; - - FQuat HmdOrientationInv = HmdPose.Orientation.Inverse(); - OutOrientation = HmdOrientationInv * EyePose.Orientation; - OutOrientation.Normalize(); - OutPosition = HmdOrientationInv.RotateVector(EyePose.Position - HmdPose.Position); - return true; - } - - bool FOculusXRHMD::GetTrackingSensorProperties(int32 InDeviceId, FQuat& OutOrientation, FVector& OutPosition, FXRSensorProperties& OutSensorProperties) - { - CheckInGameThread(); - - if ((size_t)InDeviceId >= TrackedDeviceCount) - { - return false; - } - - ovrpNode Node = OculusXRHMD::ToOvrpNode(InDeviceId); - ovrpPoseStatef PoseState; - FPose Pose; - ovrpFrustum2f Frustum; - - if (OVRP_FAILURE(FOculusXRHMDModule::GetPluginWrapper().GetNodePoseState3(ovrpStep_Render, OVRP_CURRENT_FRAMEINDEX, Node, &PoseState)) || !ConvertPose(PoseState.Pose, Pose) || OVRP_FAILURE(FOculusXRHMDModule::GetPluginWrapper().GetNodeFrustum2(Node, &Frustum))) - { - return false; - } - - OutPosition = Pose.Position; - OutOrientation = Pose.Orientation; - OutSensorProperties.LeftFOV = FMath::RadiansToDegrees(FMath::Atan(Frustum.Fov.LeftTan)); - OutSensorProperties.RightFOV = FMath::RadiansToDegrees(FMath::Atan(Frustum.Fov.RightTan)); - OutSensorProperties.TopFOV = FMath::RadiansToDegrees(FMath::Atan(Frustum.Fov.UpTan)); - OutSensorProperties.BottomFOV = FMath::RadiansToDegrees(FMath::Atan(Frustum.Fov.DownTan)); - OutSensorProperties.NearPlane = Frustum.zNear * Frame->WorldToMetersScale; - OutSensorProperties.FarPlane = Frustum.zFar * Frame->WorldToMetersScale; - OutSensorProperties.CameraDistance = 1.0f * Frame->WorldToMetersScale; - return true; - } - - void FOculusXRHMD::SetTrackingOrigin(EHMDTrackingOrigin::Type InOrigin) - { - TrackingOrigin = InOrigin; - ovrpTrackingOrigin ovrpOrigin = ovrpTrackingOrigin_EyeLevel; - -#if UE_VERSION_OLDER_THAN(5, 4, 0) - const bool bIsOrginOnFloor = (InOrigin == EHMDTrackingOrigin::Floor); -#else - const bool bIsOrginOnFloor = (InOrigin == EHMDTrackingOrigin::LocalFloor); -#endif - - if (bIsOrginOnFloor) - ovrpOrigin = ovrpTrackingOrigin_FloorLevel; - - if (InOrigin == EHMDTrackingOrigin::Stage) - ovrpOrigin = ovrpTrackingOrigin_Stage; - - if (FOculusXRHMDModule::GetPluginWrapper().GetInitialized()) - { - EHMDTrackingOrigin::Type lastOrigin = GetTrackingOrigin(); - FOculusXRHMDModule::GetPluginWrapper().SetTrackingOriginType2(ovrpOrigin); - OCFlags.NeedSetTrackingOrigin = false; - - if (lastOrigin != InOrigin) - Settings->BaseOffset = FVector::ZeroVector; - } - - OnTrackingOriginChanged(); - } - - EHMDTrackingOrigin::Type FOculusXRHMD::GetTrackingOrigin() const - { -#if UE_VERSION_OLDER_THAN(5, 4, 0) - EHMDTrackingOrigin::Type rv = EHMDTrackingOrigin::Eye; -#else - EHMDTrackingOrigin::Type rv = EHMDTrackingOrigin::View; -#endif - ovrpTrackingOrigin ovrpOrigin = ovrpTrackingOrigin_EyeLevel; - - if (FOculusXRHMDModule::GetPluginWrapper().GetInitialized() && OVRP_SUCCESS(FOculusXRHMDModule::GetPluginWrapper().GetTrackingOriginType2(&ovrpOrigin))) - { - switch (ovrpOrigin) - { - case ovrpTrackingOrigin_EyeLevel: -#if UE_VERSION_OLDER_THAN(5, 4, 0) - rv = EHMDTrackingOrigin::Eye; -#else - rv = EHMDTrackingOrigin::View; -#endif - break; - case ovrpTrackingOrigin_FloorLevel: -#if UE_VERSION_OLDER_THAN(5, 4, 0) - rv = EHMDTrackingOrigin::Floor; -#else - rv = EHMDTrackingOrigin::LocalFloor; -#endif - break; - case ovrpTrackingOrigin_Stage: - rv = EHMDTrackingOrigin::Stage; - break; - default: - UE_LOG(LogHMD, Error, TEXT("Unsupported ovr tracking origin type %d"), int(ovrpOrigin)); - break; - } - } - return rv; - } - - bool FOculusXRHMD::GetFloorToEyeTrackingTransform(FTransform& OutFloorToEye) const - { - float EyeHeight = 0.f; - const bool bSuccess = FOculusXRHMDModule::GetPluginWrapper().GetInitialized() && OVRP_SUCCESS(FOculusXRHMDModule::GetPluginWrapper().GetUserEyeHeight2(&EyeHeight)); - OutFloorToEye = FTransform(FVector(0.f, 0.f, -ConvertFloat_M2U(EyeHeight))); - - return bSuccess; - } - - void FOculusXRHMD::ResetOrientationAndPosition(float yaw) - { - Recenter(RecenterOrientationAndPosition, yaw); - } - - void FOculusXRHMD::ResetOrientation(float yaw) - { - Recenter(RecenterOrientation, yaw); - } - - void FOculusXRHMD::ResetPosition() - { - Recenter(RecenterPosition, 0); - } - - void FOculusXRHMD::Recenter(FRecenterTypes RecenterType, float Yaw) - { - CheckInGameThread(); - - if (NextFrameToRender) - { -#if UE_VERSION_OLDER_THAN(5, 4, 0) - const bool floorLevel = GetTrackingOrigin() != EHMDTrackingOrigin::Eye; -#else - const bool floorLevel = GetTrackingOrigin() != EHMDTrackingOrigin::View; -#endif - ovrpPoseStatef poseState; - FOculusXRHMDModule::GetPluginWrapper().Update3(ovrpStep_Render, NextFrameToRender->FrameNumber, 0.0); - FOculusXRHMDModule::GetPluginWrapper().GetNodePoseState3(ovrpStep_Render, NextFrameToRender->FrameNumber, ovrpNode_Head, &poseState); - - if (RecenterType & RecenterPosition) - { - Settings->BaseOffset = ToFVector(poseState.Pose.Position); - if (floorLevel) - Settings->BaseOffset.Z = 0; - } - - if (RecenterType & RecenterOrientation) - { - Settings->BaseOrientation = FRotator(0, FRotator(ToFQuat(poseState.Pose.Orientation)).Yaw - Yaw, 0).Quaternion(); - } - } - } - - void FOculusXRHMD::SetBaseRotation(const FRotator& BaseRot) - { - SetBaseOrientation(BaseRot.Quaternion()); - } - - FRotator FOculusXRHMD::GetBaseRotation() const - { - return GetBaseOrientation().Rotator(); - } - - void FOculusXRHMD::SetBaseOrientation(const FQuat& BaseOrient) - { - CheckInGameThread(); - - Settings->BaseOrientation = BaseOrient; - } - - FQuat FOculusXRHMD::GetBaseOrientation() const - { - CheckInGameThread(); - - return Settings->BaseOrientation; - } - - bool FOculusXRHMD::IsHeadTrackingEnforced() const - { - if (IsInGameThread()) - { - return Settings.IsValid() && Settings->Flags.bHeadTrackingEnforced; - } - else - { - CheckInRenderThread(); - return Settings_RenderThread.IsValid() && Settings_RenderThread->Flags.bHeadTrackingEnforced; - } - } - - void FOculusXRHMD::SetHeadTrackingEnforced(bool bEnabled) - { - CheckInGameThread(); - check(Settings.IsValid()); - - const bool bOldValue = Settings->Flags.bHeadTrackingEnforced; - Settings->Flags.bHeadTrackingEnforced = bEnabled; - - if (!bEnabled) - { - ResetControlRotation(); - } - else if (!bOldValue) - { - InitDevice(); - } - } - - bool FOculusXRHMD::IsHeadTrackingAllowed() const - { - bool bNeedEnableStereo = false; - CheckInGameThread(); - - if (!FOculusXRHMDModule::GetPluginWrapper().GetInitialized()) - { - return false; - } - -#if PLATFORM_WINDOWS - // TODO: This is a temp fix of the case that callers wants to use IsHeadTrackingAllowed() to do something in UGameEngine::Start(). - // Settings->Flags.bStereoEnabled won't be true until Window.IsValid() and UGameEngine::Tick() starts which is very late. - // We might need a better mechanism to decouple Window.IsValid() and Settings->Flags.bStereoEnabled. - bNeedEnableStereo = !GIsEditor && Flags.bNeedEnableStereo; -#endif - return (FHeadMountedDisplayBase::IsHeadTrackingAllowed() || bNeedEnableStereo); - } - - void FOculusXRHMD::OnBeginPlay(FWorldContext& InWorldContext) - { - CheckInGameThread(); - - CachedViewportWidget.Reset(); - CachedWindow.Reset(); - - bHardOcclusionsEnabled = false; - bSoftOcclusionsEnabled = false; - -#if WITH_EDITOR - // @TODO: add more values here. - // This call make sense when 'Play' is used from the Editor; - if (GIsEditor && !GEnableVREditorHacks) - { -#if PLATFORM_WINDOWS - const auto ProjectSettings = GetDefault(); - if (ProjectSettings != nullptr) - { - FWindowsPlatformMisc::SetEnvironmentVar(*PROJECT_ID_TELEMETRY, *ProjectSettings->ProjectID.ToString()); - } -#endif - Settings->BaseOrientation = FQuat::Identity; - Settings->BaseOffset = FVector::ZeroVector; - Settings->ColorScale = ovrpVector4f{ 1, 1, 1, 1 }; - Settings->ColorOffset = ovrpVector4f{ 0, 0, 0, 0 }; - - // Settings->WorldToMetersScale = InWorldContext.World()->GetWorldSettings()->WorldToMeters; - // Settings->Flags.bWorldToMetersOverride = false; - InitDevice(); - ResetMultiPlayerPoses(); - - FApp::SetUseVRFocus(true); - FApp::SetHasVRFocus(true); - OnStartGameFrame(InWorldContext); - } -#endif - } - - void FOculusXRHMD::OnEndPlay(FWorldContext& InWorldContext) - { - CheckInGameThread(); - -#if WITH_EDITOR - if (GIsEditor && !GEnableVREditorHacks) - { - // @todo vreditor: If we add support for starting PIE while in VR Editor, we don't want to kill stereo mode when exiting PIE - if (Splash->IsShown()) - { - Splash->HideLoadingScreen(); // This will only request hiding the screen - Splash->UpdateLoadingScreen_GameThread(); // Update is needed to complete removing the loading screen - } - EnableStereo(false); - ReleaseDevice(); - - FApp::SetUseVRFocus(false); - FApp::SetHasVRFocus(false); - } -#endif - } - - DECLARE_STATS_GROUP(TEXT("Oculus System Metrics"), STATGROUP_OculusSystemMetrics, STATCAT_Advanced); - - DECLARE_FLOAT_COUNTER_STAT_EXTERN(TEXT("App CPU Time (ms)"), STAT_OculusSystem_AppCpuTime, STATGROUP_OculusSystemMetrics, ); - DECLARE_FLOAT_COUNTER_STAT_EXTERN(TEXT("App GPU Time (ms)"), STAT_OculusSystem_AppGpuTime, STATGROUP_OculusSystemMetrics, ); - DECLARE_FLOAT_COUNTER_STAT_EXTERN(TEXT("Compositor CPU Time (ms)"), STAT_OculusSystem_ComCpuTime, STATGROUP_OculusSystemMetrics, ); - DECLARE_FLOAT_COUNTER_STAT_EXTERN(TEXT("Compositor GPU Time (ms)"), STAT_OculusSystem_ComGpuTime, STATGROUP_OculusSystemMetrics, ); - DECLARE_DWORD_COUNTER_STAT_EXTERN(TEXT("Compositor Dropped Frames"), STAT_OculusSystem_DroppedFrames, STATGROUP_OculusSystemMetrics, ); - DECLARE_FLOAT_COUNTER_STAT_EXTERN(TEXT("System GPU Util %"), STAT_OculusSystem_GpuUtil, STATGROUP_OculusSystemMetrics, ); - DECLARE_FLOAT_COUNTER_STAT_EXTERN(TEXT("System CPU Util Avg %"), STAT_OculusSystem_CpuUtilAvg, STATGROUP_OculusSystemMetrics, ); - DECLARE_FLOAT_COUNTER_STAT_EXTERN(TEXT("System CPU Util Worst %"), STAT_OculusSystem_CpuUtilWorst, STATGROUP_OculusSystemMetrics, ); - DECLARE_FLOAT_COUNTER_STAT_EXTERN(TEXT("CPU Clock Freq (MHz)"), STAT_OculusSystem_CpuFreq, STATGROUP_OculusSystemMetrics, ); - DECLARE_FLOAT_COUNTER_STAT_EXTERN(TEXT("GPU Clock Freq (MHz)"), STAT_OculusSystem_GpuFreq, STATGROUP_OculusSystemMetrics, ); - DECLARE_DWORD_COUNTER_STAT_EXTERN(TEXT("CPU Clock Level"), STAT_OculusSystem_CpuClockLvl, STATGROUP_OculusSystemMetrics, ); - DECLARE_DWORD_COUNTER_STAT_EXTERN(TEXT("GPU Clock Level"), STAT_OculusSystem_GpuClockLvl, STATGROUP_OculusSystemMetrics, ); - DECLARE_DWORD_COUNTER_STAT_EXTERN(TEXT("SpaceWarp Mode"), STAT_OculusSystem_ComSpaceWarpMode, STATGROUP_OculusSystemMetrics, ); - DECLARE_DWORD_COUNTER_STAT_EXTERN(TEXT("CPU Core0 Util %"), STAT_OculusSystem_CpuCore0Util, STATGROUP_OculusSystemMetrics, ); - DECLARE_DWORD_COUNTER_STAT_EXTERN(TEXT("CPU Core1 Util %"), STAT_OculusSystem_CpuCore1Util, STATGROUP_OculusSystemMetrics, ); - DECLARE_DWORD_COUNTER_STAT_EXTERN(TEXT("CPU Core2 Util %"), STAT_OculusSystem_CpuCore2Util, STATGROUP_OculusSystemMetrics, ); - DECLARE_DWORD_COUNTER_STAT_EXTERN(TEXT("CPU Core3 Util %"), STAT_OculusSystem_CpuCore3Util, STATGROUP_OculusSystemMetrics, ); - DECLARE_DWORD_COUNTER_STAT_EXTERN(TEXT("CPU Core4 Util %"), STAT_OculusSystem_CpuCore4Util, STATGROUP_OculusSystemMetrics, ); - DECLARE_DWORD_COUNTER_STAT_EXTERN(TEXT("CPU Core5 Util %"), STAT_OculusSystem_CpuCore5Util, STATGROUP_OculusSystemMetrics, ); - DECLARE_DWORD_COUNTER_STAT_EXTERN(TEXT("CPU Core6 Util %"), STAT_OculusSystem_CpuCore6Util, STATGROUP_OculusSystemMetrics, ); - DECLARE_DWORD_COUNTER_STAT_EXTERN(TEXT("CPU Core7 Util %"), STAT_OculusSystem_CpuCore7Util, STATGROUP_OculusSystemMetrics, ); - - DEFINE_STAT(STAT_OculusSystem_AppCpuTime); - DEFINE_STAT(STAT_OculusSystem_AppGpuTime); - DEFINE_STAT(STAT_OculusSystem_ComCpuTime); - DEFINE_STAT(STAT_OculusSystem_ComGpuTime); - DEFINE_STAT(STAT_OculusSystem_DroppedFrames); - DEFINE_STAT(STAT_OculusSystem_GpuUtil); - DEFINE_STAT(STAT_OculusSystem_CpuUtilAvg); - DEFINE_STAT(STAT_OculusSystem_CpuUtilWorst); - DEFINE_STAT(STAT_OculusSystem_CpuFreq); - DEFINE_STAT(STAT_OculusSystem_GpuFreq); - DEFINE_STAT(STAT_OculusSystem_CpuClockLvl); - DEFINE_STAT(STAT_OculusSystem_GpuClockLvl); - DEFINE_STAT(STAT_OculusSystem_ComSpaceWarpMode); - DEFINE_STAT(STAT_OculusSystem_CpuCore0Util); - DEFINE_STAT(STAT_OculusSystem_CpuCore1Util); - DEFINE_STAT(STAT_OculusSystem_CpuCore2Util); - DEFINE_STAT(STAT_OculusSystem_CpuCore3Util); - DEFINE_STAT(STAT_OculusSystem_CpuCore4Util); - DEFINE_STAT(STAT_OculusSystem_CpuCore5Util); - DEFINE_STAT(STAT_OculusSystem_CpuCore6Util); - DEFINE_STAT(STAT_OculusSystem_CpuCore7Util); - - void UpdateOculusSystemMetricsStats(FOculusXRPerformanceMetrics& PerformanceMetrics) - { - if (FOculusXRHMDModule::GetPluginWrapper().GetInitialized() == ovrpBool_False) - { - return; - } - - if (PerformanceMetrics.CpuCoreUtil.Num() == 0) - { - PerformanceMetrics.CpuCoreUtil.Init(0, 8); - } - - ovrpBool bIsSupported; - float valueFloat = 0; - int valueInt = 0; - if (OVRP_SUCCESS(FOculusXRHMDModule::GetPluginWrapper().IsPerfMetricsSupported(ovrpPerfMetrics_App_CpuTime_Float, &bIsSupported)) && bIsSupported == ovrpBool_True) - { - if (OVRP_SUCCESS(FOculusXRHMDModule::GetPluginWrapper().GetPerfMetricsFloat(ovrpPerfMetrics_App_CpuTime_Float, &valueFloat))) - { - PerformanceMetrics.AppCpuTime = valueFloat * 1000; - SET_FLOAT_STAT(STAT_OculusSystem_AppCpuTime, PerformanceMetrics.AppCpuTime); - } - } - if (OVRP_SUCCESS(FOculusXRHMDModule::GetPluginWrapper().IsPerfMetricsSupported(ovrpPerfMetrics_App_GpuTime_Float, &bIsSupported)) && bIsSupported == ovrpBool_True) - { - if (OVRP_SUCCESS(FOculusXRHMDModule::GetPluginWrapper().GetPerfMetricsFloat(ovrpPerfMetrics_App_GpuTime_Float, &valueFloat))) - { - PerformanceMetrics.AppGpuTime = valueFloat * 1000; - SET_FLOAT_STAT(STAT_OculusSystem_AppGpuTime, PerformanceMetrics.AppGpuTime); - } - } - if (OVRP_SUCCESS(FOculusXRHMDModule::GetPluginWrapper().IsPerfMetricsSupported(ovrpPerfMetrics_Compositor_CpuTime_Float, &bIsSupported)) && bIsSupported == ovrpBool_True) - { - if (OVRP_SUCCESS(FOculusXRHMDModule::GetPluginWrapper().GetPerfMetricsFloat(ovrpPerfMetrics_Compositor_CpuTime_Float, &valueFloat))) - { - PerformanceMetrics.ComCpuTime = valueFloat * 1000; - SET_FLOAT_STAT(STAT_OculusSystem_ComCpuTime, PerformanceMetrics.ComCpuTime); - } - } - if (OVRP_SUCCESS(FOculusXRHMDModule::GetPluginWrapper().IsPerfMetricsSupported(ovrpPerfMetrics_Compositor_GpuTime_Float, &bIsSupported)) && bIsSupported == ovrpBool_True) - { - if (OVRP_SUCCESS(FOculusXRHMDModule::GetPluginWrapper().GetPerfMetricsFloat(ovrpPerfMetrics_Compositor_GpuTime_Float, &valueFloat))) - { - PerformanceMetrics.ComGpuTime = valueFloat * 1000; - SET_FLOAT_STAT(STAT_OculusSystem_ComGpuTime, PerformanceMetrics.ComGpuTime); - } - } - if (OVRP_SUCCESS(FOculusXRHMDModule::GetPluginWrapper().IsPerfMetricsSupported(ovrpPerfMetrics_Compositor_DroppedFrameCount_Int, &bIsSupported)) && bIsSupported == ovrpBool_True) - { - if (OVRP_SUCCESS(FOculusXRHMDModule::GetPluginWrapper().GetPerfMetricsInt(ovrpPerfMetrics_Compositor_DroppedFrameCount_Int, &valueInt))) - { - PerformanceMetrics.DroppedFrames = valueInt; - SET_DWORD_STAT(STAT_OculusSystem_DroppedFrames, PerformanceMetrics.DroppedFrames); - } - } - if (OVRP_SUCCESS(FOculusXRHMDModule::GetPluginWrapper().IsPerfMetricsSupported(ovrpPerfMetrics_System_GpuUtilPercentage_Float, &bIsSupported)) && bIsSupported == ovrpBool_True) - { - if (OVRP_SUCCESS(FOculusXRHMDModule::GetPluginWrapper().GetPerfMetricsFloat(ovrpPerfMetrics_System_GpuUtilPercentage_Float, &valueFloat))) - { - PerformanceMetrics.GpuUtil = valueFloat * 100; - SET_FLOAT_STAT(STAT_OculusSystem_GpuUtil, PerformanceMetrics.GpuUtil); - } - } - if (OVRP_SUCCESS(FOculusXRHMDModule::GetPluginWrapper().IsPerfMetricsSupported(ovrpPerfMetrics_System_CpuUtilAveragePercentage_Float, &bIsSupported)) && bIsSupported == ovrpBool_True) - { - if (OVRP_SUCCESS(FOculusXRHMDModule::GetPluginWrapper().GetPerfMetricsFloat(ovrpPerfMetrics_System_CpuUtilAveragePercentage_Float, &valueFloat))) - { - PerformanceMetrics.CpuUtilAvg = valueFloat * 100; - SET_FLOAT_STAT(STAT_OculusSystem_CpuUtilAvg, PerformanceMetrics.CpuUtilAvg); - } - } - if (OVRP_SUCCESS(FOculusXRHMDModule::GetPluginWrapper().IsPerfMetricsSupported(ovrpPerfMetrics_System_CpuUtilWorstPercentage_Float, &bIsSupported)) && bIsSupported == ovrpBool_True) - { - if (OVRP_SUCCESS(FOculusXRHMDModule::GetPluginWrapper().GetPerfMetricsFloat(ovrpPerfMetrics_System_CpuUtilWorstPercentage_Float, &valueFloat))) - { - PerformanceMetrics.CpuUtilWorst = valueFloat * 100; - SET_FLOAT_STAT(STAT_OculusSystem_CpuUtilWorst, PerformanceMetrics.CpuUtilWorst); - } - } - if (OVRP_SUCCESS(FOculusXRHMDModule::GetPluginWrapper().IsPerfMetricsSupported(ovrpPerfMetrics_Device_CpuClockFrequencyInMHz_Float, &bIsSupported)) && bIsSupported == ovrpBool_True) - { - if (OVRP_SUCCESS(FOculusXRHMDModule::GetPluginWrapper().GetPerfMetricsFloat(ovrpPerfMetrics_Device_CpuClockFrequencyInMHz_Float, &valueFloat))) - { - SET_FLOAT_STAT(STAT_OculusSystem_CpuFreq, valueFloat); - } - } - if (OVRP_SUCCESS(FOculusXRHMDModule::GetPluginWrapper().IsPerfMetricsSupported(ovrpPerfMetrics_Device_GpuClockFrequencyInMHz_Float, &bIsSupported)) && bIsSupported == ovrpBool_True) - { - if (OVRP_SUCCESS(FOculusXRHMDModule::GetPluginWrapper().GetPerfMetricsFloat(ovrpPerfMetrics_Device_GpuClockFrequencyInMHz_Float, &valueFloat))) - { - SET_FLOAT_STAT(STAT_OculusSystem_GpuFreq, valueFloat); - } - } - if (OVRP_SUCCESS(FOculusXRHMDModule::GetPluginWrapper().IsPerfMetricsSupported(ovrpPerfMetrics_Device_CpuClockLevel_Int, &bIsSupported)) && bIsSupported == ovrpBool_True) - { - if (OVRP_SUCCESS(FOculusXRHMDModule::GetPluginWrapper().GetPerfMetricsInt(ovrpPerfMetrics_Device_CpuClockLevel_Int, &valueInt))) - { - SET_DWORD_STAT(STAT_OculusSystem_CpuClockLvl, valueInt); - } - } - if (OVRP_SUCCESS(FOculusXRHMDModule::GetPluginWrapper().IsPerfMetricsSupported(ovrpPerfMetrics_Device_GpuClockLevel_Int, &bIsSupported)) && bIsSupported == ovrpBool_True) - { - if (OVRP_SUCCESS(FOculusXRHMDModule::GetPluginWrapper().GetPerfMetricsInt(ovrpPerfMetrics_Device_GpuClockLevel_Int, &valueInt))) - { - SET_DWORD_STAT(STAT_OculusSystem_GpuClockLvl, valueInt); - } - } - if (OVRP_SUCCESS(FOculusXRHMDModule::GetPluginWrapper().IsPerfMetricsSupported(ovrpPerfMetrics_Compositor_SpaceWarp_Mode_Int, &bIsSupported)) && bIsSupported == ovrpBool_True) - { - if (OVRP_SUCCESS(FOculusXRHMDModule::GetPluginWrapper().GetPerfMetricsInt(ovrpPerfMetrics_Compositor_SpaceWarp_Mode_Int, &valueInt))) - { - PerformanceMetrics.ComSpaceWarpMode = valueInt; - SET_DWORD_STAT(STAT_OculusSystem_ComSpaceWarpMode, PerformanceMetrics.ComSpaceWarpMode); - } - } - if (OVRP_SUCCESS(FOculusXRHMDModule::GetPluginWrapper().IsPerfMetricsSupported(ovrpPerfMetrics_Device_CpuCore0UtilPercentage_Float, &bIsSupported)) && bIsSupported == ovrpBool_True) - { - if (OVRP_SUCCESS(FOculusXRHMDModule::GetPluginWrapper().GetPerfMetricsFloat(ovrpPerfMetrics_Device_CpuCore0UtilPercentage_Float, &valueFloat))) - { - PerformanceMetrics.CpuCoreUtil[0] = valueFloat; - SET_FLOAT_STAT(STAT_OculusSystem_CpuCore0Util, PerformanceMetrics.CpuCoreUtil[0]); - } - } - if (OVRP_SUCCESS(FOculusXRHMDModule::GetPluginWrapper().IsPerfMetricsSupported(ovrpPerfMetrics_Device_CpuCore1UtilPercentage_Float, &bIsSupported)) && bIsSupported == ovrpBool_True) - { - if (OVRP_SUCCESS(FOculusXRHMDModule::GetPluginWrapper().GetPerfMetricsFloat(ovrpPerfMetrics_Device_CpuCore1UtilPercentage_Float, &valueFloat))) - { - PerformanceMetrics.CpuCoreUtil[1] = valueFloat; - SET_FLOAT_STAT(STAT_OculusSystem_CpuCore1Util, PerformanceMetrics.CpuCoreUtil[1]); - } - } - if (OVRP_SUCCESS(FOculusXRHMDModule::GetPluginWrapper().IsPerfMetricsSupported(ovrpPerfMetrics_Device_CpuCore2UtilPercentage_Float, &bIsSupported)) && bIsSupported == ovrpBool_True) - { - if (OVRP_SUCCESS(FOculusXRHMDModule::GetPluginWrapper().GetPerfMetricsFloat(ovrpPerfMetrics_Device_CpuCore2UtilPercentage_Float, &valueFloat))) - { - PerformanceMetrics.CpuCoreUtil[2] = valueFloat; - SET_FLOAT_STAT(STAT_OculusSystem_CpuCore2Util, PerformanceMetrics.CpuCoreUtil[2]); - } - } - if (OVRP_SUCCESS(FOculusXRHMDModule::GetPluginWrapper().IsPerfMetricsSupported(ovrpPerfMetrics_Device_CpuCore3UtilPercentage_Float, &bIsSupported)) && bIsSupported == ovrpBool_True) - { - if (OVRP_SUCCESS(FOculusXRHMDModule::GetPluginWrapper().GetPerfMetricsFloat(ovrpPerfMetrics_Device_CpuCore3UtilPercentage_Float, &valueFloat))) - { - PerformanceMetrics.CpuCoreUtil[3] = valueFloat; - SET_FLOAT_STAT(STAT_OculusSystem_CpuCore3Util, PerformanceMetrics.CpuCoreUtil[3]); - } - } - if (OVRP_SUCCESS(FOculusXRHMDModule::GetPluginWrapper().IsPerfMetricsSupported(ovrpPerfMetrics_Device_CpuCore4UtilPercentage_Float, &bIsSupported)) && bIsSupported == ovrpBool_True) - { - if (OVRP_SUCCESS(FOculusXRHMDModule::GetPluginWrapper().GetPerfMetricsFloat(ovrpPerfMetrics_Device_CpuCore4UtilPercentage_Float, &valueFloat))) - { - PerformanceMetrics.CpuCoreUtil[4] = valueFloat; - SET_FLOAT_STAT(STAT_OculusSystem_CpuCore4Util, PerformanceMetrics.CpuCoreUtil[4]); - } - } - if (OVRP_SUCCESS(FOculusXRHMDModule::GetPluginWrapper().IsPerfMetricsSupported(ovrpPerfMetrics_Device_CpuCore5UtilPercentage_Float, &bIsSupported)) && bIsSupported == ovrpBool_True) - { - if (OVRP_SUCCESS(FOculusXRHMDModule::GetPluginWrapper().GetPerfMetricsFloat(ovrpPerfMetrics_Device_CpuCore5UtilPercentage_Float, &valueFloat))) - { - PerformanceMetrics.CpuCoreUtil[5] = valueFloat; - SET_FLOAT_STAT(STAT_OculusSystem_CpuCore5Util, PerformanceMetrics.CpuCoreUtil[5]); - } - } - if (OVRP_SUCCESS(FOculusXRHMDModule::GetPluginWrapper().IsPerfMetricsSupported(ovrpPerfMetrics_Device_CpuCore6UtilPercentage_Float, &bIsSupported)) && bIsSupported == ovrpBool_True) - { - if (OVRP_SUCCESS(FOculusXRHMDModule::GetPluginWrapper().GetPerfMetricsFloat(ovrpPerfMetrics_Device_CpuCore6UtilPercentage_Float, &valueFloat))) - { - PerformanceMetrics.CpuCoreUtil[6] = valueFloat; - SET_FLOAT_STAT(STAT_OculusSystem_CpuCore6Util, PerformanceMetrics.CpuCoreUtil[6]); - } - } - if (OVRP_SUCCESS(FOculusXRHMDModule::GetPluginWrapper().IsPerfMetricsSupported(ovrpPerfMetrics_Device_CpuCore7UtilPercentage_Float, &bIsSupported)) && bIsSupported == ovrpBool_True) - { - if (OVRP_SUCCESS(FOculusXRHMDModule::GetPluginWrapper().GetPerfMetricsFloat(ovrpPerfMetrics_Device_CpuCore7UtilPercentage_Float, &valueFloat))) - { - PerformanceMetrics.CpuCoreUtil[7] = valueFloat; - SET_FLOAT_STAT(STAT_OculusSystem_CpuCore7Util, PerformanceMetrics.CpuCoreUtil[7]); - } - } - } - - const FOculusXRPerformanceMetrics FOculusXRHMD::GetPerformanceMetrics() const - { - return PerformanceMetrics; - } - - void FOculusXRHMD::OnBeginRendering_GameThread() - { - CheckInGameThread(); - // We need to make sure we keep the Wait/Begin/End triplet in sync, so here we signal that we - // can wait for the next frame in the next tick. Without this signal it's possible that two ticks - // happen before the next frame is actually rendered. - bShouldWait_GameThread = true; - } - - bool FOculusXRHMD::OnStartGameFrame(FWorldContext& InWorldContext) - { -#if WITH_EDITOR - // In the editor there can be multiple worlds. An editor world, pie worlds, other viewport worlds for editor pages. - // XR hardware can only be running with one of them. - if (GIsEditor && GEditor && GEditor->GetPIEWorldContext() != nullptr) - { - if (!InWorldContext.bIsPrimaryPIEInstance) - { - return false; - } - } -#endif // WITH_EDITOR - - CheckInGameThread(); - - if (IsEngineExitRequested()) - { - return false; - } - - UpdateOculusSystemMetricsStats(PerformanceMetrics); - - RefreshTrackingToWorldTransform(InWorldContext); - - // check if HMD is marked as invalid and needs to be killed. - ovrpBool appShouldRecreateDistortionWindow; - - if (FOculusXRHMDModule::GetPluginWrapper().GetInitialized() && OVRP_SUCCESS(FOculusXRHMDModule::GetPluginWrapper().GetAppShouldRecreateDistortionWindow2(&appShouldRecreateDistortionWindow)) && appShouldRecreateDistortionWindow) - { - DoEnableStereo(false); - ReleaseDevice(); - - if (!OCFlags.DisplayLostDetected) - { - FCoreDelegates::VRHeadsetLost.Broadcast(); - OCFlags.DisplayLostDetected = true; - } - - Flags.bNeedEnableStereo = true; - } -#if PLATFORM_ANDROID - Flags.bNeedEnableStereo = true; // !!! -#endif - - check(Settings.IsValid()); - if (!Settings->IsStereoEnabled()) - { - FApp::SetUseVRFocus(false); - FApp::SetHasVRFocus(false); - } - -#if OCULUS_STRESS_TESTS_ENABLED - FStressTester::TickCPU_GameThread(this); -#endif - - if (bShutdownRequestQueued) - { - bShutdownRequestQueued = false; - DoSessionShutdown(); - } - - if (!InWorldContext.World() || (!(GEnableVREditorHacks && InWorldContext.WorldType == EWorldType::Editor) && !InWorldContext.World()->IsGameWorld())) // @todo vreditor: (Also see OnEndGameFrame()) Kind of a hack here so we can use VR in editor viewports. We need to consider when running GameWorld viewports inside the editor with VR. - { - // ignore all non-game worlds - return false; - } - - bool bStereoEnabled = Settings->Flags.bStereoEnabled; - bool bStereoDesired = bStereoEnabled; - - if (Flags.bNeedEnableStereo) - { - bStereoDesired = true; - } - - if (bStereoDesired && (Flags.bNeedDisableStereo || !Settings->Flags.bHMDEnabled)) - { - bStereoDesired = false; - } - - bool bStereoDesiredAndIsConnected = bStereoDesired; - - if (bStereoDesired && !(bStereoEnabled ? IsHMDActive() : IsHMDEnabled())) - { - bStereoDesiredAndIsConnected = false; - } - - Flags.bNeedEnableStereo = false; - Flags.bNeedDisableStereo = false; - - if (bStereoEnabled != bStereoDesiredAndIsConnected) - { - bStereoEnabled = DoEnableStereo(bStereoDesiredAndIsConnected); - } - - // Keep trying to enable stereo until we succeed - Flags.bNeedEnableStereo = bStereoDesired && !bStereoEnabled; - - if (!Settings->IsStereoEnabled() && !Settings->Flags.bHeadTrackingEnforced) - { - return false; - } - - if (Flags.bApplySystemOverridesOnStereo) - { - ApplySystemOverridesOnStereo(); - Flags.bApplySystemOverridesOnStereo = false; - } - - CachedWorldToMetersScale = InWorldContext.World()->GetWorldSettings()->WorldToMeters; - - // this should have already happened in FOculusXRInput, so this is usually a no-op. - StartGameFrame_GameThread(); - - bool retval = true; - - UpdateHMDEvents(); - - if (FOculusXRHMDModule::GetPluginWrapper().GetInitialized()) - { - if (OCFlags.DisplayLostDetected) - { - FCoreDelegates::VRHeadsetReconnected.Broadcast(); - OCFlags.DisplayLostDetected = false; - } - - if (OCFlags.NeedSetTrackingOrigin) - { - SetTrackingOrigin(TrackingOrigin); - } - - ovrpBool bAppHasVRFocus = ovrpBool_False; - FOculusXRHMDModule::GetPluginWrapper().GetAppHasVrFocus2(&bAppHasVRFocus); - - FApp::SetUseVRFocus(true); - FApp::SetHasVRFocus(bAppHasVRFocus != ovrpBool_False); - - // Do not pause if Editor is running (otherwise it will become very laggy) - if (!GIsEditor) - { - if (!bAppHasVRFocus) - { - // not visible, - if (!Settings->Flags.bPauseRendering) - { - UE_LOG(LogHMD, Log, TEXT("The app went out of VR focus, seizing rendering...")); - } - } - else if (Settings->Flags.bPauseRendering) - { - UE_LOG(LogHMD, Log, TEXT("The app got VR focus, restoring rendering...")); - } - if (OCFlags.NeedSetFocusToGameViewport) - { - if (bAppHasVRFocus) - { - UE_LOG(LogHMD, Log, TEXT("Setting user focus to game viewport since session status is visible...")); - FSlateApplication::Get().SetAllUserFocusToGameViewport(); - OCFlags.NeedSetFocusToGameViewport = false; - } - } - - bool bPrevPause = Settings->Flags.bPauseRendering; - Settings->Flags.bPauseRendering = !bAppHasVRFocus; - - if (Settings->Flags.bPauseRendering && (GEngine->GetMaxFPS() != OCULUS_PAUSED_IDLE_FPS)) - { - GEngine->SetMaxFPS(OCULUS_PAUSED_IDLE_FPS); - } - - if (bPrevPause != Settings->Flags.bPauseRendering) - { - APlayerController* const PC = GEngine->GetFirstLocalPlayerController(InWorldContext.World()); - if (Settings->Flags.bPauseRendering) - { - // focus is lost - GEngine->SetMaxFPS(OCULUS_PAUSED_IDLE_FPS); - - if (!FCoreDelegates::ApplicationWillEnterBackgroundDelegate.IsBound()) - { - OCFlags.AppIsPaused = false; - // default action: set pause if not already paused - if (PC && !PC->IsPaused()) - { - PC->SetPause(true); - OCFlags.AppIsPaused = true; - } - } - else - { - FCoreDelegates::ApplicationWillEnterBackgroundDelegate.Broadcast(); - } - } - else - { - // focus is gained - GEngine->SetMaxFPS(0); - - if (!FCoreDelegates::ApplicationHasEnteredForegroundDelegate.IsBound()) - { - // default action: unpause if was paused by the plugin - if (PC && OCFlags.AppIsPaused) - { - PC->SetPause(false); - } - OCFlags.AppIsPaused = false; - } - else - { - FCoreDelegates::ApplicationHasEnteredForegroundDelegate.Broadcast(); - } - } - } - } - - ovrpBool AppShouldQuit; - ovrpBool AppShouldRecenter; - - if (OVRP_SUCCESS(FOculusXRHMDModule::GetPluginWrapper().GetAppShouldQuit2(&AppShouldQuit)) && AppShouldQuit || OCFlags.EnforceExit) - { - FPlatformMisc::LowLevelOutputDebugString(TEXT("OculusXRHMD plugin requested exit (ShouldQuit == 1)\n")); -#if WITH_EDITOR - if (GIsEditor) - { - FSceneViewport* SceneVP = FindSceneViewport(); - if (SceneVP && SceneVP->IsStereoRenderingAllowed()) - { - TSharedPtr Window = SceneVP->FindWindow(); - Window->RequestDestroyWindow(); - } - } - else -#endif // WITH_EDITOR - { - // ApplicationWillTerminateDelegate will fire from inside of the RequestExit - FPlatformMisc::RequestExit(false); - } - OCFlags.EnforceExit = false; - retval = false; - } - else if (OVRP_SUCCESS(FOculusXRHMDModule::GetPluginWrapper().GetAppShouldRecenter2(&AppShouldRecenter)) && AppShouldRecenter) - { - FPlatformMisc::LowLevelOutputDebugString(TEXT("OculusXRHMD plugin was requested to recenter\n")); - if (FCoreDelegates::VRHeadsetRecenter.IsBound()) - { - FCoreDelegates::VRHeadsetRecenter.Broadcast(); - } - else - { - ResetOrientationAndPosition(); - } - - // Call FOculusXRHMDModule::GetPluginWrapper().RecenterTrackingOrigin2 to clear AppShouldRecenter flag - FOculusXRHMDModule::GetPluginWrapper().RecenterTrackingOrigin2(ovrpRecenterFlag_IgnoreAll); - } - - UpdateHMDWornState(); - } - -#if OCULUS_MR_SUPPORTED_PLATFORMS - if (FOculusXRHMDModule::GetPluginWrapper().GetMixedRealityInitialized()) - { - FOculusXRHMDModule::GetPluginWrapper().UpdateExternalCamera(); - } -#endif - - if (IsEngineExitRequested()) - { - PreShutdown(); - } - - return retval; - } - - void FOculusXRHMD::DoSessionShutdown() - { - // Release resources - ExecuteOnRenderThread([this]() { - ExecuteOnRHIThread([this]() { - for (int32 LayerIndex = 0; LayerIndex < Layers_RenderThread.Num(); LayerIndex++) - { - Layers_RenderThread[LayerIndex]->ReleaseResources_RHIThread(); - } - - for (int32 LayerIndex = 0; LayerIndex < Layers_RHIThread.Num(); LayerIndex++) - { - Layers_RHIThread[LayerIndex]->ReleaseResources_RHIThread(); - } - - if (Splash.IsValid()) - { - Splash->ReleaseResources_RHIThread(); - } - - if (CustomPresent) - { - CustomPresent->ReleaseResources_RHIThread(); - } - - Settings_RHIThread.Reset(); - Frame_RHIThread.Reset(); - Layers_RHIThread.Reset(); - }); - - Settings_RenderThread.Reset(); - Frame_RenderThread.Reset(); - Layers_RenderThread.Reset(); - EyeLayer_RenderThread.Reset(); - - DeferredDeletion.HandleLayerDeferredDeletionQueue_RenderThread(true); - - EnableInsightPassthrough_RenderThread(false); - }); - - Frame.Reset(); - NextFrameToRender.Reset(); - LastFrameToRender.Reset(); - -#if !UE_BUILD_SHIPPING - UDebugDrawService::Unregister(DrawDebugDelegateHandle); -#endif - - // The Editor may release VR focus in OnEndPlay - if (!GIsEditor) - { - FApp::SetUseVRFocus(false); - FApp::SetHasVRFocus(false); - } - - ShutdownSession(); - } - - bool FOculusXRHMD::OnEndGameFrame(FWorldContext& InWorldContext) - { - CheckInGameThread(); - - FGameFrame* const CurrentGameFrame = Frame.Get(); - - if (CurrentGameFrame) - { - // don't use the cached value, as it could be affected by the player's position, so we update it here at the latest point in the game frame - CurrentGameFrame->TrackingToWorld = ComputeTrackingToWorldTransform(InWorldContext); - CurrentGameFrame->LastTrackingToWorld = LastTrackingToWorld; - LastTrackingToWorld = CurrentGameFrame->TrackingToWorld; - } - else - { - return false; - } - - if (!InWorldContext.World() || (!(GEnableVREditorHacks && InWorldContext.WorldType == EWorldType::Editor) && !InWorldContext.World()->IsGameWorld())) - { - // ignore all non-game worlds - return false; - } - - FinishGameFrame_GameThread(); - - return true; - } - - FVector2D FOculusXRHMD::GetPlayAreaBounds(EHMDTrackingOrigin::Type Origin) const - { - ovrpVector3f Dimensions; - - if (Origin == EHMDTrackingOrigin::Stage && OVRP_SUCCESS(FOculusXRHMDModule::GetPluginWrapper().GetBoundaryDimensions2(ovrpBoundary_PlayArea, &Dimensions))) - { - Dimensions.z *= -1.0; - FVector Bounds = ConvertVector_M2U(Dimensions); - return FVector2D(Bounds.X, Bounds.Z); - } - return FVector2D::ZeroVector; - } - - bool FOculusXRHMD::IsHMDEnabled() const - { - CheckInGameThread(); - - return (Settings->Flags.bHMDEnabled); - } - - EHMDWornState::Type FOculusXRHMD::GetHMDWornState() - { - ovrpBool userPresent; - - if (FOculusXRHMDModule::GetPluginWrapper().GetInitialized() && OVRP_SUCCESS(FOculusXRHMDModule::GetPluginWrapper().GetUserPresent2(&userPresent)) && userPresent) - { - return EHMDWornState::Worn; - } - else - { - return EHMDWornState::NotWorn; - } - } - - void FOculusXRHMD::EnableHMD(bool enable) - { - CheckInGameThread(); - - Settings->Flags.bHMDEnabled = enable; - if (!Settings->Flags.bHMDEnabled) - { - EnableStereo(false); - } - } - - bool FOculusXRHMD::GetHMDMonitorInfo(MonitorInfo& MonitorDesc) - { - CheckInGameThread(); - - MonitorDesc.MonitorName = FString("Oculus Window"); - MonitorDesc.MonitorId = 0; - MonitorDesc.DesktopX = MonitorDesc.DesktopY = 0; - MonitorDesc.ResolutionX = MonitorDesc.ResolutionY = 0; - MonitorDesc.WindowSizeX = MonitorDesc.WindowSizeY = 0; - - if (Settings.IsValid()) - { - MonitorDesc.ResolutionX = MonitorDesc.WindowSizeX = Settings->RenderTargetSize.X; - MonitorDesc.ResolutionY = MonitorDesc.WindowSizeY = Settings->RenderTargetSize.Y; - } - - return true; - } - - void FOculusXRHMD::GetFieldOfView(float& InOutHFOVInDegrees, float& InOutVFOVInDegrees) const - - { - ovrpFrustum2f Frustum; - - if (OVRP_SUCCESS(FOculusXRHMDModule::GetPluginWrapper().GetNodeFrustum2(ovrpNode_EyeCenter, &Frustum))) - { - InOutVFOVInDegrees = FMath::RadiansToDegrees(FMath::Atan(Frustum.Fov.UpTan) + FMath::Atan(Frustum.Fov.DownTan)); - InOutHFOVInDegrees = FMath::RadiansToDegrees(FMath::Atan(Frustum.Fov.LeftTan) + FMath::Atan(Frustum.Fov.RightTan)); - } - } - - void FOculusXRHMD::SetInterpupillaryDistance(float NewInterpupillaryDistance) - { - CheckInGameThread(); - - if (FOculusXRHMDModule::GetPluginWrapper().GetInitialized()) - { - FOculusXRHMDModule::GetPluginWrapper().SetUserIPD2(NewInterpupillaryDistance); - } - } - - float FOculusXRHMD::GetInterpupillaryDistance() const - { - CheckInGameThread(); - - float UserIPD; - - if (!FOculusXRHMDModule::GetPluginWrapper().GetInitialized() || OVRP_FAILURE(FOculusXRHMDModule::GetPluginWrapper().GetUserIPD2(&UserIPD))) - { - return 0.0f; - } - - return UserIPD; - } - - bool FOculusXRHMD::GetHMDDistortionEnabled(EShadingPath /* ShadingPath */) const - { - return false; - } - - bool FOculusXRHMD::IsChromaAbCorrectionEnabled() const - { - CheckInGameThread(); - - return true; - } - - bool FOculusXRHMD::HasHiddenAreaMesh() const - { - if (IsInParallelRenderingThread()) - { - if (ShouldDisableHiddenAndVisibileAreaMeshForSpectatorScreen_RenderThread()) - { - return false; - } - } - - return HiddenAreaMeshes[0].IsValid() && HiddenAreaMeshes[1].IsValid(); - } - - bool FOculusXRHMD::HasVisibleAreaMesh() const - { - if (IsInParallelRenderingThread()) - { - if (ShouldDisableHiddenAndVisibileAreaMeshForSpectatorScreen_RenderThread()) - { - return false; - } - } - - return VisibleAreaMeshes[0].IsValid() && VisibleAreaMeshes[1].IsValid(); - } - - static void DrawOcclusionMesh(FRHICommandList& RHICmdList, int32 ViewIndex, const FHMDViewMesh MeshAssets[], int32 InstanceCount = 1) - { - check(ViewIndex != INDEX_NONE); - - const uint32 MeshIndex = (ViewIndex == EStereoscopicEye::eSSE_LEFT_EYE) ? 0 : 1; - const FHMDViewMesh& Mesh = MeshAssets[MeshIndex]; - check(Mesh.IsValid()); - - RHICmdList.SetStreamSource(0, Mesh.VertexBufferRHI, 0); - RHICmdList.DrawIndexedPrimitive(Mesh.IndexBufferRHI, 0, 0, Mesh.NumVertices, 0, Mesh.NumTriangles, InstanceCount); - } - -#if UE_VERSION_OLDER_THAN(5, 5, 0) -#ifdef WITH_OCULUS_BRANCH - void FOculusXRHMD::DrawHiddenAreaMesh(FRHICommandList& RHICmdList, int32 ViewIndex, int32 InstanceCount) const - { - DrawOcclusionMesh(RHICmdList, ViewIndex, HiddenAreaMeshes, InstanceCount); - } - - void FOculusXRHMD::DrawVisibleAreaMesh(FRHICommandList& RHICmdList, int32 ViewIndex, int32 InstanceCount) const - { - DrawOcclusionMesh(RHICmdList, ViewIndex, VisibleAreaMeshes, InstanceCount); - } -#else - void FOculusXRHMD::DrawHiddenAreaMesh(FRHICommandList& RHICmdList, int32 ViewIndex) const - { - DrawOcclusionMesh(RHICmdList, ViewIndex, HiddenAreaMeshes); - } - - void FOculusXRHMD::DrawVisibleAreaMesh(FRHICommandList& RHICmdList, int32 ViewIndex) const - { - DrawOcclusionMesh(RHICmdList, ViewIndex, VisibleAreaMeshes); - } -#endif // WITH_OCULUS_BRANCH -#else - void FOculusXRHMD::DrawHiddenAreaMesh(FRHICommandList& RHICmdList, int32 ViewIndex, int32 InstanceCount) const - { - DrawOcclusionMesh(RHICmdList, ViewIndex, HiddenAreaMeshes, InstanceCount); - } - - void FOculusXRHMD::DrawVisibleAreaMesh(FRHICommandList& RHICmdList, int32 ViewIndex, int32 InstanceCount) const - { - DrawOcclusionMesh(RHICmdList, ViewIndex, VisibleAreaMeshes, InstanceCount); - } - - void FOculusXRHMD::DrawHiddenAreaMesh(class FRHICommandList& RHICmdList, int32 ViewIndex) const - { - DrawHiddenAreaMesh(RHICmdList, ViewIndex, 1); - } - - void FOculusXRHMD::DrawVisibleAreaMesh(class FRHICommandList& RHICmdList, int32 ViewIndex) const - { - DrawVisibleAreaMesh(RHICmdList, ViewIndex, 1); - } -#endif - - float FOculusXRHMD::GetPixelDenity() const - { - if (IsInGameThread()) - { - return Settings.IsValid() ? Settings->PixelDensity : 1.0f; - } - else - { - return Settings_RenderThread.IsValid() ? Settings_RenderThread->PixelDensity : 1.0f; - } - } - - void FOculusXRHMD::SetPixelDensity(const float NewPixelDensity) - { - CheckInGameThread(); - Settings->SetPixelDensity(NewPixelDensity); - } - - FIntPoint FOculusXRHMD::GetIdealRenderTargetSize() const - { - if (IsInGameThread()) - { - return Settings.IsValid() ? Settings->RenderTargetSize : 1.0f; - } - else - { - return Settings_RenderThread.IsValid() ? Settings_RenderThread->RenderTargetSize : 1.0f; - } - } - - void FOculusXRHMD::GetMotionControllerData(UObject* WorldContext, const EControllerHand Hand, FXRMotionControllerData& MotionControllerData) - { - MotionControllerData.DeviceName = IOculusXRHMDModule::NAME_OculusXRHMD; - MotionControllerData.ApplicationInstanceID = FApp::GetInstanceId(); - MotionControllerData.DeviceVisualType = EXRVisualType::Controller; - MotionControllerData.TrackingStatus = ETrackingStatus::NotTracked; - MotionControllerData.HandIndex = Hand; - MotionControllerData.bValid = false; - - if ((Hand == EControllerHand::Left) || (Hand == EControllerHand::Right)) - { - const FName MotionControllerName("OculusXRInputDevice"); - TArray MotionControllers = IModularFeatures::Get().GetModularFeatureImplementations(IMotionController::GetModularFeatureName()); - const IMotionController* MotionController = nullptr; - for (const IMotionController* Itr : MotionControllers) - { - if (Itr->GetMotionControllerDeviceTypeName() == MotionControllerName) - { - MotionController = Itr; - break; - } - } - - const float WorldToMeters = GetWorldToMetersScale(); - if (MotionController) - { - bool bSuccess = false; - FVector Position = FVector::ZeroVector; - FRotator Rotation = FRotator::ZeroRotator; - const FTransform TrackingToWorld = GetTrackingToWorldTransform(); - const FName AimSource = Hand == EControllerHand::Left ? FName("LeftAim") : FName("RightAim"); - bSuccess = MotionController->GetControllerOrientationAndPosition(0, AimSource, Rotation, Position, WorldToMeters); - if (bSuccess) - { - MotionControllerData.AimPosition = TrackingToWorld.TransformPosition(Position); - MotionControllerData.AimRotation = TrackingToWorld.TransformRotation(FQuat(Rotation)); - } - MotionControllerData.bValid |= bSuccess; - - FName GripSource = Hand == EControllerHand::Left ? FName("LeftGrip") : FName("RightGrip"); - bSuccess = MotionController->GetControllerOrientationAndPosition(0, GripSource, Rotation, Position, WorldToMeters); - if (bSuccess) - { - MotionControllerData.GripPosition = TrackingToWorld.TransformPosition(Position); - MotionControllerData.GripRotation = TrackingToWorld.TransformRotation(FQuat(Rotation)); - } - MotionControllerData.bValid |= bSuccess; - - MotionControllerData.TrackingStatus = MotionController->GetControllerTrackingStatus(0, GripSource); - } - } - } - -#if !UE_VERSION_OLDER_THAN(5, 5, 0) - void FOculusXRHMD::GetMotionControllerState(UObject* WorldContext, const EXRSpaceType XRSpaceType, const EControllerHand Hand, const EXRControllerPoseType XRControllerPoseType, FXRMotionControllerState& MotionControllerState) - { - auto ToMotionSourceName = [](const EControllerHand Hand, const EXRControllerPoseType XRControllerPoseType) { - static FLazyName LeftAim = "LeftAim"; - static FLazyName LeftGrip = "LeftGrip"; - static FLazyName LeftPalm = "LeftPalm"; - static FLazyName RightAim = "RightAim"; - static FLazyName RightGrip = "RightGrip"; - static FLazyName RightPalm = "RightPalm"; - if (Hand == EControllerHand::Left) - { - switch (XRControllerPoseType) - { - case EXRControllerPoseType::Aim: - return LeftAim; - case EXRControllerPoseType::Grip: - return LeftGrip; - case EXRControllerPoseType::Palm: - return LeftPalm; - default: - check(false); - return LeftGrip; - } - } - else - { - switch (XRControllerPoseType) - { - case EXRControllerPoseType::Aim: - return RightAim; - case EXRControllerPoseType::Grip: - return RightGrip; - case EXRControllerPoseType::Palm: - return RightPalm; - default: - check(false); - return RightGrip; - } - } - }; - - MotionControllerState.DeviceName = IOculusXRHMDModule::NAME_OculusXRHMD; - MotionControllerState.ApplicationInstanceID = FApp::GetInstanceId(); - MotionControllerState.TrackingStatus = ETrackingStatus::NotTracked; - MotionControllerState.Hand = Hand; - MotionControllerState.XRSpaceType = XRSpaceType; - MotionControllerState.bValid = false; - - if ((Hand == EControllerHand::Left) || (Hand == EControllerHand::Right)) - { - const FName MotionControllerName("OculusXRInputDevice"); - TArray MotionControllers = IModularFeatures::Get().GetModularFeatureImplementations(IMotionController::GetModularFeatureName()); - const IMotionController* MotionController = nullptr; - for (const IMotionController* Itr : MotionControllers) - { - if (Itr->GetMotionControllerDeviceTypeName() == MotionControllerName) - { - MotionController = Itr; - break; - } - } - - if (MotionController) - { - { - bool bSuccess = false; - - const FName MotionSource = ToMotionSourceName(Hand, XRControllerPoseType); - FVector Position = FVector::ZeroVector; - FRotator Rotation = FRotator::ZeroRotator; - const FTransform TrackingToWorld = XRSpaceType == EXRSpaceType::UnrealWorldSpace ? GetTrackingToWorldTransform() : FTransform::Identity; - const float WorldToMeters = XRSpaceType == EXRSpaceType::UnrealWorldSpace ? GetWorldToMetersScale() : 100.0f; - bSuccess = MotionController->GetControllerOrientationAndPosition(0, MotionSource, Rotation, Position, WorldToMeters); - if (bSuccess) - { - MotionControllerState.ControllerLocation = TrackingToWorld.TransformPosition(Position); - MotionControllerState.ControllerRotation = TrackingToWorld.TransformRotation(FQuat(Rotation)); - } - MotionControllerState.bValid |= bSuccess; - - MotionControllerState.TrackingStatus = MotionController->GetControllerTrackingStatus(0, MotionSource); - } - - { - // We always provide the grip transform in unreal space for XRVisualizationFunctionLibrary - // The bValid and TrackingStatus above are also valid for this pose. - FName MotionSource = ToMotionSourceName(Hand, EXRControllerPoseType::Grip); - FVector Position = FVector::ZeroVector; - FRotator Rotation = FRotator::ZeroRotator; - FTransform TrackingToWorld = GetTrackingToWorldTransform(); - bool bSuccess = MotionController->GetControllerOrientationAndPosition(0, MotionSource, Rotation, Position, GetWorldToMetersScale()); - if (bSuccess) - { - MotionControllerState.GripUnrealSpaceLocation = TrackingToWorld.TransformPosition(Position); - MotionControllerState.GripUnrealSpaceRotation = TrackingToWorld.TransformRotation(FQuat(Rotation)); - } - } - } - } - } -#endif - - bool FOculusXRHMD::IsStereoEnabled() const - { - if (IsInGameThread()) - { - return Settings.IsValid() && Settings->IsStereoEnabled(); - } - else - { - return Settings_RenderThread.IsValid() && Settings_RenderThread->IsStereoEnabled(); - } - } - - bool FOculusXRHMD::IsStereoEnabledOnNextFrame() const - { - // !!! - - return Settings.IsValid() && Settings->IsStereoEnabled(); - } - - bool FOculusXRHMD::EnableStereo(bool bStereo) - { - CheckInGameThread(); - - if (bStereo) - { - LoadFromSettings(); -#if PLATFORM_WINDOWS - FOculusXRHMDModule::GetPluginWrapper().SetTrackingPoseEnabledForInvisibleSession(GetMutableDefault()->bUpdateHeadPoseForInactivePlayer); -#endif - LogEnabledFeatures(); - SendTelemetryData(); - } - - return DoEnableStereo(bStereo); - } - - void FOculusXRHMD::SendTelemetryData() - { - UE_LOG(LogHMD, Log, TEXT("Collecting Telemetry Data")); - FString TelemetryParam; -#if WITH_EDITOR && PLATFORM_WINDOWS - // Implementing telemetry to monitor the adoption rate of multiplayer testing. - ULevelEditorPlaySettings* PlayInSettings = GetMutableDefault(); - check(PlayInSettings); - int PlayerCount; - bool bIsRunningUnderOneProcess = false; - PlayInSettings->GetPlayNumberOfClients(PlayerCount); - PlayInSettings->GetRunUnderOneProcess(bIsRunningUnderOneProcess); - if (PlayerCount > 1) - { - OculusXRTelemetry::SendEvent(TEXT("MultiPlayer_Testing isRunningUnderOneProcess"), bIsRunningUnderOneProcess); - } -#endif - - const URendererSettings* RendererSettings = GetMutableDefault(); - check(Settings != nullptr); - -#ifdef WITH_OCULUS_BRANCH - OculusXRTelemetry::SendEvent(TEXT("LateLatching"), LateLatchingEnabled()); - OculusXRTelemetry::SendEvent(TEXT("DynamicResolution"), Settings->bDynamicFoveatedRendering); - OculusXRTelemetry::SendEvent(TEXT("DynamicResolution Min"), Settings->GetPixelDensityMin()); - OculusXRTelemetry::SendEvent(TEXT("DynamicResolution Max"), Settings->GetPixelDensityMax()); - - if (RendererSettings != nullptr) - { - OculusXRTelemetry::SendEvent(TEXT("EmulatedUniformBuffer"), RendererSettings->bVulkanUseEmulatedUBs); - OculusXRTelemetry::SendEvent(TEXT("UniformLocalLights"), RendererSettings->bMobileUniformLocalLights != 0); - } -#endif // WITH_OCULUS_BRANCH - if (RendererSettings != nullptr) - { - OculusXRTelemetry::SendEvent(TEXT("OcclusionCulling"), RendererSettings->bOcclusionCulling != 0); - } - - OculusXRTelemetry::SendEvent(TEXT("MobileTonemap"), IsMobileTonemapSubpassEnabled(Settings->CurrentShaderPlatform)); - OculusXRTelemetry::SendEvent(TEXT("MobileHDR"), RendererSettings->bMobilePostProcessing != 0); - OculusXRTelemetry::SendEvent(TEXT("XrApi"), Settings->XrApi == EOculusXRXrApi::OVRPluginOpenXR ? TEXT("OVRPluginOpenXR") : TEXT("NativeOpenXR")); - } - - void FOculusXRHMD::AdjustViewRect(int32 ViewIndex, int32& X, int32& Y, uint32& SizeX, uint32& SizeY) const - { - if (Settings.IsValid()) - { - X = Settings->EyeUnscaledRenderViewport[ViewIndex].Min.X; - Y = Settings->EyeUnscaledRenderViewport[ViewIndex].Min.Y; - SizeX = Settings->EyeUnscaledRenderViewport[ViewIndex].Size().X; - SizeY = Settings->EyeUnscaledRenderViewport[ViewIndex].Size().Y; - } - else - { - SizeX = SizeX / 2; - X += SizeX * ViewIndex; - } - } - - FIntRect FOculusXRHMD::GetAsymmetricViewRect(const int32 ViewIndex, const FIntRect& ViewRect) - { - FIntRect AsymmetricViewRect = ViewRect; - if (Settings_RenderThread.IsValid() && Frame_RenderThread.IsValid()) - { - const ovrpFovf& EyeBufferFov = Frame_RenderThread->Fov[ViewIndex]; - const ovrpFovf& FrameFov = Frame_RenderThread->SymmetricFov[ViewIndex]; - const int32 ViewPixelSize = AsymmetricViewRect.Size().X; - - // if using symmetric rendering, only send UVs of the asymmetrical subrect (the rest isn't useful) to the VR runtime - const float symTanSize = FrameFov.LeftTan + FrameFov.RightTan; - - AsymmetricViewRect.Min.X += (FrameFov.LeftTan - EyeBufferFov.LeftTan) * (ViewPixelSize / symTanSize); - AsymmetricViewRect.Max.X -= (FrameFov.RightTan - EyeBufferFov.RightTan) * (ViewPixelSize / symTanSize); - } - - return AsymmetricViewRect; - } - - void FOculusXRHMD::SetFinalViewRect(FRHICommandListImmediate& RHICmdList, const int32 ViewIndex, const FIntRect& FinalViewRect) - { - CheckInRenderThread(); - if (ViewIndex == INDEX_NONE || ViewIndex < 0 || ViewIndex >= ovrpEye_Count) - { - return; - } - - FIntRect AsymmetricViewRect = GetAsymmetricViewRect(ViewIndex, FinalViewRect); - - if (Settings_RenderThread.IsValid()) - { - Settings_RenderThread->EyeRenderViewport[ViewIndex] = AsymmetricViewRect; - } - - // Called after RHIThread has already started. Need to update Settings_RHIThread as well. - ExecuteOnRHIThread_DoNotWait([this, ViewIndex, AsymmetricViewRect]() { - CheckInRHIThread(); - - if (Settings_RHIThread.IsValid()) - { - Settings_RHIThread->EyeRenderViewport[ViewIndex] = AsymmetricViewRect; - } - }); - } - -#ifdef WITH_OCULUS_BRANCH - void FOculusXRHMD::CalculateScissorRect(const int32 ViewIndex, const FIntRect& ViewRect, FIntRect& OutRect) - { - CheckInRenderThread(); - if (ViewIndex == INDEX_NONE || ViewIndex < 0 || ViewIndex >= ovrpEye_Count) - { - return; - } - - OutRect = GetAsymmetricViewRect(ViewIndex, ViewRect); - } -#endif // WITH_OCULUS_BRANCH - - void FOculusXRHMD::CalculateStereoViewOffset(const int32 ViewIndex, FRotator& ViewRotation, const float WorldToMeters, FVector& ViewLocation) - { - // This method is called from GetProjectionData on a game thread. - if (InGameThread() && ViewIndex == EStereoscopicEye::eSSE_LEFT_EYE && NextFrameToRender.IsValid()) - { - // Inverse out GameHeadPose.Rotation since PlayerOrientation already contains head rotation. - FQuat HeadOrientation = FQuat::Identity; - FVector HeadPosition; - - GetCurrentPose(HMDDeviceId, HeadOrientation, HeadPosition); - - NextFrameToRender->HeadOrientation = HeadOrientation; - NextFrameToRender->PlayerOrientation = LastPlayerOrientation = ViewRotation.Quaternion() * HeadOrientation.Inverse(); - NextFrameToRender->PlayerLocation = LastPlayerLocation = ViewLocation; - } - - FHeadMountedDisplayBase::CalculateStereoViewOffset(ViewIndex, ViewRotation, WorldToMeters, ViewLocation); - } - - FMatrix FOculusXRHMD::GetStereoProjectionMatrix(int32 ViewIndex) const - { - CheckInGameThread(); - - check(IsStereoEnabled()); - - FMatrix proj = (ViewIndex == EStereoscopicEye::eSSE_MONOSCOPIC) ? ToFMatrix(Settings->MonoProjectionMatrix) : ToFMatrix(Settings->EyeProjectionMatrices[ViewIndex]); - - // correct far and near planes for reversed-Z projection matrix - const float WorldScale = GetWorldToMetersScale() * (1.0 / 100.0f); // physical scale is 100 UUs/meter - float InNearZ = GNearClippingPlane * WorldScale; - - proj.M[3][3] = 0.0f; - proj.M[2][3] = 1.0f; - - proj.M[2][2] = 0.0f; - proj.M[3][2] = InNearZ; - - return proj; - } - - void FOculusXRHMD::InitCanvasFromView(FSceneView* InView, UCanvas* Canvas) - { - // This is used for placing small HUDs (with names) - // over other players (for example, in Capture Flag). - // HmdOrientation should be initialized by GetCurrentOrientation (or - // user's own value). - } - - void FOculusXRHMD::RenderTexture_RenderThread(class FRHICommandListImmediate& RHICmdList, class FRHITexture* BackBuffer, class FRHITexture* SrcTexture, FVector2D WindowSize) const - { - CheckInRenderThread(); - check(CustomPresent); - -#if PLATFORM_ANDROID - return; -#endif - - if (SpectatorScreenController) - { - SpectatorScreenController->RenderSpectatorScreen_RenderThread(RHICmdList, BackBuffer, SrcTexture, WindowSize); - } - } - - FVector2D FOculusXRHMD::GetEyeCenterPoint_RenderThread(int32 ViewIndex) const - { - CheckInRenderThread(); - - check(IsStereoEnabled() || IsHeadTrackingEnforced()); - - // Don't use GetStereoProjectionMatrix because it is game thread only on oculus, we also don't need the zplane adjustments for this. - const FMatrix StereoProjectionMatrix = ToFMatrix(Settings_RenderThread->EyeProjectionMatrices[ViewIndex]); - - // 0,0,1 is the straight ahead point, wherever it maps to is the center of the projection plane in -1..1 coordinates. -1,-1 is bottom left. - const FVector4 ScreenCenter = StereoProjectionMatrix.TransformPosition(FVector(0.0f, 0.0f, 1.0f)); - // transform into 0-1 screen coordinates 0,0 is top left. - const FVector2D CenterPoint(0.5f + (ScreenCenter.X / 2.0f), 0.5f - (ScreenCenter.Y / 2.0f)); - - return CenterPoint; - } - - FIntRect FOculusXRHMD::GetFullFlatEyeRect_RenderThread(FTextureRHIRef EyeTexture) const - { - CheckInRenderThread(); - - // Rift does this differently than other platforms, it already has an idea of what rectangle it wants to use stored. - FIntRect& EyeRect = Settings_RenderThread->EyeRenderViewport[0]; - - // But the rectangle rift specifies has corners cut off, so we will crop a little more. - if (ShouldDisableHiddenAndVisibileAreaMeshForSpectatorScreen_RenderThread()) - { - return EyeRect; - } - else - { - static FVector2D SrcNormRectMin(0.05f, 0.0f); - static FVector2D SrcNormRectMax(0.95f, 1.0f); - const int32 SizeX = EyeRect.Max.X - EyeRect.Min.X; - const int32 SizeY = EyeRect.Max.Y - EyeRect.Min.Y; - return FIntRect(EyeRect.Min.X + SizeX * SrcNormRectMin.X, EyeRect.Min.Y + SizeY * SrcNormRectMin.Y, EyeRect.Min.X + SizeX * SrcNormRectMax.X, EyeRect.Min.Y + SizeY * SrcNormRectMax.Y); - } - } - - void FOculusXRHMD::CopyTexture_RenderThread(FRHICommandListImmediate& RHICmdList, FRHITexture* SrcTexture, FIntRect SrcRect, FRHITexture* DstTexture, FIntRect DstRect, bool bClearBlack, bool bNoAlpha) const - { - if (bClearBlack) - { - FRHIRenderPassInfo RPInfo(DstTexture, ERenderTargetActions::DontLoad_Store); - RHICmdList.BeginRenderPass(RPInfo, TEXT("ClearToBlack")); - { - const FIntRect ClearRect(0, 0, DstTexture->GetSizeX(), DstTexture->GetSizeY()); - RHICmdList.SetViewport(ClearRect.Min.X, ClearRect.Min.Y, 0, ClearRect.Max.X, ClearRect.Max.Y, 1.0f); - DrawClearQuad(RHICmdList, FLinearColor::Black); - } - RHICmdList.EndRenderPass(); - } - - check(CustomPresent); - CustomPresent->CopyTexture_RenderThread(RHICmdList, DstTexture, SrcTexture, DstRect, SrcRect, false, bNoAlpha, true, true); - } - - bool FOculusXRHMD::PopulateAnalyticsAttributes(TArray& EventAttributes) - { - if (!FHeadMountedDisplayBase::PopulateAnalyticsAttributes(EventAttributes)) - { - return false; - } - - EventAttributes.Add(FAnalyticsEventAttribute(TEXT("HQBuffer"), (bool)Settings->Flags.bHQBuffer)); - EventAttributes.Add(FAnalyticsEventAttribute(TEXT("HQDistortion"), (bool)Settings->Flags.bHQDistortion)); - EventAttributes.Add(FAnalyticsEventAttribute(TEXT("UpdateOnRT"), (bool)Settings->Flags.bUpdateOnRT)); - - return true; - } - - bool FOculusXRHMD::ShouldUseSeparateRenderTarget() const - { - return IsStereoEnabled(); - } - -#ifdef WITH_OCULUS_BRANCH - void FOculusXRHMD::CalculateRenderTargetSize(uint32& InOutSizeX, uint32& InOutSizeY) -#else // WITH_OCULUS_BRANCH - void FOculusXRHMD::CalculateRenderTargetSize(const FViewport& Viewport, uint32& InOutSizeX, uint32& InOutSizeY) -#endif // WITH_OCULUS_BRANCH - { - // TODO this should use Settings_RenderThread if !CheckInGameThread() - // This is called before StartRenderFrame_GameThread() on startup - if (!Settings->IsStereoEnabled()) - { - return; - } - - InOutSizeX = Settings->RenderTargetSize.X; - InOutSizeY = Settings->RenderTargetSize.Y; - - check(InOutSizeX != 0 && InOutSizeY != 0); - } - - void FOculusXRHMD::AllocateEyeBuffer() - { - CheckInGameThread(); - - ExecuteOnRenderThread([&]() { - InitializeEyeLayer_RenderThread(GetImmediateCommandList_ForRenderCommand()); - - const FXRSwapChainPtr& SwapChain = EyeLayer_RenderThread->GetSwapChain(); - if (SwapChain.IsValid()) - { - const FRHITexture* const SwapChainTexture = SwapChain->GetTexture2DArray() ? SwapChain->GetTexture2DArray() : SwapChain->GetTexture2D(); - UE_LOG(LogHMD, Log, TEXT("Allocating Oculus %d x %d rendertarget swapchain"), SwapChainTexture->GetSizeX(), SwapChainTexture->GetSizeY()); - } - }); - - bNeedReAllocateViewportRenderTarget = true; - } - - bool FOculusXRHMD::NeedReAllocateViewportRenderTarget(const FViewport& Viewport) - { - CheckInGameThread(); - - return ensureMsgf(Settings.IsValid(), TEXT("Unexpected issue with Oculus settings on the GameThread. This should be valid when this is called in EnqueueBeginRenderFrame() - has the callsite changed?")) && Settings->IsStereoEnabled() && bNeedReAllocateViewportRenderTarget; - } - - bool FOculusXRHMD::NeedReAllocateDepthTexture(const TRefCountPtr& DepthTarget) - { - CheckInRenderThread(); - - return ensureMsgf(Settings_RenderThread.IsValid(), TEXT("Unexpected issue with Oculus settings on the RenderThread. This should be valid when this is called in AllocateCommonDepthTargets() - has the callsite changed?")) && Settings_RenderThread->IsStereoEnabled() && bNeedReAllocateDepthTexture_RenderThread; - } - - bool FOculusXRHMD::NeedReAllocateShadingRateTexture(const TRefCountPtr& FoveationTarget) - { - CheckInRenderThread(); - - return ensureMsgf(Settings_RenderThread.IsValid(), TEXT("Unexpected issue with Oculus settings on the RenderThread. This should be valid when this is called in AllocateFoveationTexture() - has the callsite changed?")) && Settings_RenderThread->IsStereoEnabled() && bNeedReAllocateFoveationTexture_RenderThread; - } - - bool FOculusXRHMD::AllocateRenderTargetTexture(uint32 Index, uint32 SizeX, uint32 SizeY, uint8 Format, uint32 NumMips, ETextureCreateFlags InTexFlags, ETextureCreateFlags InTargetableTextureFlags, FTextureRHIRef& OutTargetableTexture, FTextureRHIRef& OutShaderResourceTexture, uint32 NumSamples) - { - CheckInRenderThread(); - - check(Index == 0); - - if (LayerMap[0].IsValid()) - { - const FXRSwapChainPtr& SwapChain = EyeLayer_RenderThread->GetSwapChain(); - if (SwapChain.IsValid()) - { - OutTargetableTexture = OutShaderResourceTexture = SwapChain->GetTexture2DArray() ? SwapChain->GetTexture2DArray() : SwapChain->GetTexture2D(); - bNeedReAllocateViewportRenderTarget = false; - return true; - } - } - - OutTargetableTexture = OutShaderResourceTexture = nullptr; - return false; - } - - bool FOculusXRHMD::AllocateDepthTexture(uint32 Index, uint32 SizeX, uint32 SizeY, uint8 Format, uint32 NumMips, ETextureCreateFlags FlagsIn, ETextureCreateFlags TargetableTextureFlags, FTextureRHIRef& OutTargetableTexture, FTextureRHIRef& OutShaderResourceTexture, uint32 NumSamples) - { - CheckInRenderThread(); - - check(Index == 0); - - if (EyeLayer_RenderThread.IsValid()) - { - const FXRSwapChainPtr& SwapChain = EyeLayer_RenderThread->GetDepthSwapChain(); - - if (SwapChain.IsValid()) - { - FTextureRHIRef Texture = SwapChain->GetTexture2DArray() ? SwapChain->GetTexture2DArray() : SwapChain->GetTexture2D(); - FIntPoint TexSize = Texture->GetSizeXY(); - - // Ensure the texture size matches the eye layer. We may get other depth allocations unrelated to the main scene render. - if (FIntPoint(SizeX, SizeY) == TexSize) - { - if (bNeedReAllocateDepthTexture_RenderThread) - { - UE_LOG(LogHMD, Log, TEXT("Allocating Oculus %d x %d depth rendertarget swapchain"), SizeX, SizeY); - bNeedReAllocateDepthTexture_RenderThread = false; - } - - OutTargetableTexture = OutShaderResourceTexture = Texture; - return true; - } - } - } - - OutTargetableTexture = OutShaderResourceTexture = nullptr; - return false; - } - - bool FOculusXRHMD::AllocateShadingRateTexture(uint32 Index, uint32 RenderSizeX, uint32 RenderSizeY, uint8 Format, uint32 NumMips, ETextureCreateFlags InTexFlags, ETextureCreateFlags InTargetableTextureFlags, FTextureRHIRef& OutTexture, FIntPoint& OutTextureSize) - { - CheckInRenderThread(); - - check(Index == 0); - - if (EyeLayer_RenderThread.IsValid()) - { - const FXRSwapChainPtr& SwapChain = EyeLayer_RenderThread->GetFoveationSwapChain(); - - if (SwapChain.IsValid()) - { - FTextureRHIRef Texture = SwapChain->GetTexture2DArray() ? SwapChain->GetTexture2DArray() : SwapChain->GetTexture2D(); - FIntPoint TexSize = Texture->GetSizeXY(); - - // Only set texture and return true if we have a valid texture of compatible size - if (Texture->IsValid() && TexSize.X > 0 && TexSize.Y > 0) - { - if (bNeedReAllocateFoveationTexture_RenderThread) - { - UE_LOG(LogHMD, Log, TEXT("Allocating Oculus %d x %d variable resolution swapchain"), TexSize.X, TexSize.Y, Index); - bNeedReAllocateFoveationTexture_RenderThread = false; - } - - // This is a hack to turn force the runtime to use FDM over FSR when we allocate our FDM to avoid a crash on Quest 3 - // TODO: Remove this for UE 5.3 after there's an engine-side fix - ExecuteOnRHIThread_DoNotWait([this]() { - // Set this in AllocateShadingRateTexture because it guarantees that this runs after VulkanExtensions has initially - // selected the shading rate type, before the FDM is actually going to be used, and only when we actually have an FDM - CustomPresent->UseFragmentDensityMapOverShadingRate_RHIThread(); - }); - - OutTexture = Texture; - OutTextureSize = TexSize; - return true; - } - } - } - - OutTexture = nullptr; - return false; - } - -#if defined(WITH_OCULUS_BRANCH) - bool FOculusXRHMD::GetRecommendedVelocityTextureSize(FIntPoint& OutTextureSize) - { - CheckInRenderThread(); - - if (EyeLayer_RenderThread.IsValid()) - { - const FXRSwapChainPtr& SwapChain = EyeLayer_RenderThread->GetMotionVectorSwapChain(); - if (SwapChain.IsValid()) - { - FTextureRHIRef Texture = SwapChain->GetTexture2DArray() ? SwapChain->GetTexture2DArray() : SwapChain->GetTexture2D(); - if (Texture->IsValid()) - { - OutTextureSize = Texture->GetDesc().Extent; - return true; - } - } - } - - OutTextureSize = FIntPoint(0, 0); - return false; - } - - bool FOculusXRHMD::AllocateVelocityTexture(uint32 Index, const FIntPoint& Size, uint8 Format, uint32 NumMips, ETextureCreateFlags TexFlags, FTextureRHIRef& OutTexture, uint32 NumSamples) - { - CheckInRenderThread(); - check(Index == 0); - - if (EyeLayer_RenderThread.IsValid()) - { - const FXRSwapChainPtr& SwapChain = EyeLayer_RenderThread->GetMotionVectorSwapChain(); - if (SwapChain.IsValid()) - { - FTextureRHIRef Texture = SwapChain->GetTexture2DArray() ? SwapChain->GetTexture2DArray() : SwapChain->GetTexture2D(); - - // Only set texture and return true if we have a valid texture of compatible size - if (Texture->IsValid() && Texture->GetDesc().Extent == Size && Texture->GetDesc().Format == Format) - { - if (bNeedReAllocateMotionVectorTexture_RenderThread) - { - UE_LOG(LogHMD, Log, TEXT("[Mobile SpaceWarp] Allocating Oculus %d x %d motion vector swapchain"), Size.X, Size.Y); - bNeedReAllocateMotionVectorTexture_RenderThread = false; - } - - OutTexture = Texture; - return true; - } - } - } - - OutTexture = nullptr; - return false; - } - - bool FOculusXRHMD::AllocateVelocityDepthTexture(uint32 Index, const FIntPoint& Size, uint8 Format, uint32 NumMips, ETextureCreateFlags TexFlags, FTextureRHIRef& OutTexture, uint32 NumSamples) - { - CheckInRenderThread(); - check(Index == 0); - - if (EyeLayer_RenderThread.IsValid()) - { - const FXRSwapChainPtr& SwapChain = EyeLayer_RenderThread->GetMotionVectorDepthSwapChain(); - if (SwapChain.IsValid()) - { - FTextureRHIRef Texture = SwapChain->GetTexture2DArray() ? SwapChain->GetTexture2DArray() : SwapChain->GetTexture2D(); - - // Only set texture and return true if we have a valid texture of compatible size - if (Texture->IsValid() && Texture->GetDesc().Extent == Size && Texture->GetDesc().Format == Format) - { - if (bNeedReAllocateMotionVectorDepthTexture_RenderThread) - { - UE_LOG(LogHMD, Log, TEXT("[Mobile SpaceWarp] Allocating Oculus %d x %d motion vector depth swapchain"), Size.X, Size.Y); - bNeedReAllocateMotionVectorDepthTexture_RenderThread = false; - } - - OutTexture = Texture; - return true; - } - } - } - - OutTexture = nullptr; - return false; - } -#endif // defined(WITH_OCULUS_BRANCH) - -#if defined(WITH_OCULUS_BRANCH) - bool FOculusXRHMD::FindEnvironmentDepthTexture_RenderThread(FTextureRHIRef& OutTexture, FTextureRHIRef& OutMinMaxTexture, FVector2f& OutDepthFactors, FMatrix44f OutScreenToDepthMatrices[2], FMatrix44f OutDepthViewProjMatrices[2]) - { - CheckInRenderThread(); - - if (Frame_RenderThread.IsValid()) - { - int SwapchainIndex; - if (ComputeEnvironmentDepthParameters_RenderThread(OutDepthFactors, OutScreenToDepthMatrices, OutDepthViewProjMatrices, SwapchainIndex)) - { - if (SwapchainIndex >= EnvironmentDepthSwapchain.Num()) - { - return false; - } - OutTexture = EnvironmentDepthSwapchain[SwapchainIndex]; - OutMinMaxTexture = EnvironmentDepthMinMaxTexture; - return true; - } - } - return false; - } -#endif // defined(WITH_OCULUS_BRANCH) - - EPixelFormat FOculusXRHMD::GetActualColorSwapchainFormat() const - { - if (!CustomPresent.IsValid()) - { - UE_LOG(LogHMD, Log, TEXT("Invalid CustomPresent! PF_R8G8B8A8 will be used as the default swapchain format!")); - return PF_R8G8B8A8; - } - return CustomPresent->GetDefaultPixelFormat(); - } - - void FOculusXRHMD::UpdateViewportWidget(bool bUseSeparateRenderTarget, const class FViewport& Viewport, class SViewport* ViewportWidget) - { - CheckInGameThread(); - check(ViewportWidget); - - TSharedPtr Window = CachedWindow.Pin(); - TSharedPtr CurrentlyCachedWidget = CachedViewportWidget.Pin(); - TSharedRef Widget = ViewportWidget->AsShared(); - - if (!Window.IsValid() || Widget != CurrentlyCachedWidget) - { - Window = FSlateApplication::Get().FindWidgetWindow(Widget); - - CachedViewportWidget = Widget; - CachedWindow = Window; - } - - if (!Settings->IsStereoEnabled()) - { - // Restore AutoResizeViewport mode for the window - if (Window.IsValid()) - { - Window->SetMirrorWindow(false); - Window->SetViewportSizeDrivenByWindow(true); - } - return; - } - - if (bUseSeparateRenderTarget && Frame.IsValid()) - { - if (Window.IsValid()) - { - const auto SlateWindowSize = Window->GetSizeInScreen(); - CachedWindowSize = FIntPoint(static_cast(SlateWindowSize.X), static_cast(SlateWindowSize.Y)); - } - else - { - CachedWindowSize = Viewport.GetSizeXY(); - } - } - } - - FXRRenderBridge* FOculusXRHMD::GetActiveRenderBridge_GameThread(bool bUseSeparateRenderTarget) - { - CheckInGameThread(); - - if (bUseSeparateRenderTarget && NextFrameToRender.IsValid()) - { - return CustomPresent; - } - else - { - return nullptr; - } - } - - void FOculusXRHMD::UpdateHMDWornState() - { - const EHMDWornState::Type NewHMDWornState = GetHMDWornState(); - - if (NewHMDWornState != HMDWornState) - { - HMDWornState = NewHMDWornState; - if (HMDWornState == EHMDWornState::Worn) - { - FCoreDelegates::VRHeadsetPutOnHead.Broadcast(); - } - else if (HMDWornState == EHMDWornState::NotWorn) - { - FCoreDelegates::VRHeadsetRemovedFromHead.Broadcast(); - } - } - } - - void FOculusXRHMD::UpdateHMDEvents() - { - ovrpEventDataBuffer buf; - while (FOculusXRHMDModule::GetPluginWrapper().PollEvent(&buf) == ovrpSuccess) - { - if (buf.EventType == ovrpEventType_None) - { - break; - } - else if (buf.EventType == ovrpEventType_DisplayRefreshRateChange) - { - ovrpEventDisplayRefreshRateChange* rateChangedEvent = (ovrpEventDisplayRefreshRateChange*)&buf; - FOculusEventDelegates::OculusDisplayRefreshRateChanged.Broadcast(rateChangedEvent->FromRefreshRate, rateChangedEvent->ToRefreshRate); - } - else - { - for (auto& it : EventPollingDelegates) - { - bool HandledEvent = false; - it.ExecuteIfBound(&buf, HandledEvent); - } - } - } - } - - uint32 FOculusXRHMD::CreateLayer(const IStereoLayers::FLayerDesc& InLayerDesc) - { - CheckInGameThread(); - - uint32 LayerId = NextLayerId++; - FLayerPtr Layer = MakeShareable(new FLayer(LayerId)); - LayerMap.Add(LayerId, Layer); - Layer->SetDesc(Settings.Get(), InLayerDesc); - return LayerId; - } - - void FOculusXRHMD::DestroyLayer(uint32 LayerId) - { - CheckInGameThread(); - FLayerPtr* LayerFound = LayerMap.Find(LayerId); - if (LayerFound) - { - (*LayerFound)->DestroyLayer(); - } - LayerMap.Remove(LayerId); - } - - void FOculusXRHMD::SetLayerDesc(uint32 LayerId, const IStereoLayers::FLayerDesc& InLayerDesc) - { - CheckInGameThread(); - FLayerPtr* LayerFound = LayerMap.Find(LayerId); - - if (LayerFound) - { - FLayer* Layer = new FLayer(**LayerFound); - Layer->SetDesc(Settings.Get(), InLayerDesc); - *LayerFound = MakeShareable(Layer); - } - } - - bool FOculusXRHMD::GetLayerDesc(uint32 LayerId, IStereoLayers::FLayerDesc& OutLayerDesc) - { - CheckInGameThread(); - FLayerPtr* LayerFound = LayerMap.Find(LayerId); - - if (LayerFound) - { - OutLayerDesc = (*LayerFound)->GetDesc(); - return true; - } - - return false; - } - - void FOculusXRHMD::MarkTextureForUpdate(uint32 LayerId) - { - CheckInGameThread(); - FLayerPtr* LayerFound = LayerMap.Find(LayerId); - - if (LayerFound) - { - (*LayerFound)->MarkTextureForUpdate(); - } - } - - uint32 FOculusXRHMD::GetLayerIdFromOvrpId(int OvrpID) const - { - for (FLayerPtr layer : Layers_RenderThread) - { - int CurrentLayerOvrpId = layer->GetOvrpId(); - - if (CurrentLayerOvrpId == OvrpID) - return layer->GetId(); - } - - return 0; - } - - void FOculusXRHMD::SetSplashRotationToForward() - { - // if update splash screen is shown, update the head orientation default to recenter splash screens - FQuat HeadOrientation = FQuat::Identity; - FVector HeadPosition; - GetCurrentPose(HMDDeviceId, HeadOrientation, HeadPosition); - SplashRotation = FRotator(HeadOrientation); - SplashRotation.Pitch = 0; - SplashRotation.Roll = 0; - } - - FOculusXRSplashDesc FOculusXRHMD::GetUESplashScreenDesc() - { - FOculusXRSplashDesc Desc; - Desc.LoadedTexture = bSplashShowMovie ? SplashMovie : SplashTexture; - Desc.TransformInMeters = Desc.TransformInMeters * FTransform(SplashOffset / GetWorldToMetersScale()); - Desc.bNoAlphaChannel = true; - Desc.bIsDynamic = bSplashShowMovie; - Desc.QuadSizeInMeters *= SplashScale; - return Desc; - } - - void FOculusXRHMD::EyeTrackedFoveatedRenderingFallback() - { - FoveatedRenderingMethod = EOculusXRFoveatedRenderingMethod::FixedFoveatedRendering; - FoveatedRenderingLevel = EOculusXRFoveatedRenderingLevel::High; - bDynamicFoveatedRendering = true; - } - - void FOculusXRHMD::GetAllocatedTexture(uint32 LayerId, FTextureRHIRef& Texture, FTextureRHIRef& LeftTexture) - { - Texture = LeftTexture = nullptr; - FLayerPtr* LayerFound = nullptr; - - if (IsInGameThread()) - { - LayerFound = LayerMap.Find(LayerId); - } - else if (IsInParallelRenderingThread()) - { - for (int32 LayerIndex = 0; LayerIndex < Layers_RenderThread.Num(); LayerIndex++) - { - if (Layers_RenderThread[LayerIndex]->GetId() == LayerId) - { - LayerFound = &Layers_RenderThread[LayerIndex]; - } - } - } - else if (IsInRHIThread()) - { - for (int32 LayerIndex = 0; LayerIndex < Layers_RHIThread.Num(); LayerIndex++) - { - if (Layers_RHIThread[LayerIndex]->GetId() == LayerId) - { - LayerFound = &Layers_RHIThread[LayerIndex]; - } - } - } - else - { - return; - } - - if (LayerFound && (*LayerFound)->GetSwapChain().IsValid()) - { - bool bRightTexture = (*LayerFound)->GetRightSwapChain().IsValid(); - const IStereoLayers::FLayerDesc& Desc = (*LayerFound)->GetDesc(); - - if (Desc.HasShape()) - { - if (bRightTexture) - { - Texture = (*LayerFound)->GetRightSwapChain()->GetTextureCube(); - LeftTexture = (*LayerFound)->GetSwapChain()->GetTextureCube(); - } - else - { - Texture = LeftTexture = (*LayerFound)->GetSwapChain()->GetTextureCube(); - } - } - else if (Desc.HasShape() || Desc.HasShape()) - { - if (bRightTexture) - { - Texture = (*LayerFound)->GetRightSwapChain()->GetTexture2D(); - LeftTexture = (*LayerFound)->GetSwapChain()->GetTexture2D(); - } - else - { - Texture = LeftTexture = (*LayerFound)->GetSwapChain()->GetTexture2D(); - } - } - } - } - - IStereoLayers::FLayerDesc FOculusXRHMD::GetDebugCanvasLayerDesc(FTextureRHIRef Texture) - { - IStereoLayers::FLayerDesc StereoLayerDesc; - - ovrpBool cylinderSupported = ovrpBool_False; - ovrpResult result = FOculusXRHMDModule::GetPluginWrapper().GetInitialized() ? FOculusXRHMDModule::GetPluginWrapper().IsLayerShapeSupported(ovrpShape_Cylinder, &cylinderSupported) : ovrpFailure; - if (OVRP_SUCCESS(result) && cylinderSupported) - { - StereoLayerDesc = IStereoLayers::FLayerDesc(FCylinderLayer(100.f, 488.f / 4, 180.f)); - StereoLayerDesc.Transform = FTransform(FVector(0.f, 0, 0)); // 100/0/0 for quads - } - else - { - StereoLayerDesc.Transform = FTransform(FVector(100.f, 0, 0)); - } - - StereoLayerDesc.QuadSize = FVector2D(180.f, 180.f); - StereoLayerDesc.PositionType = IStereoLayers::ELayerType::FaceLocked; - StereoLayerDesc.LayerSize = Texture->GetTexture2D()->GetSizeXY(); - StereoLayerDesc.Flags = IStereoLayers::ELayerFlags::LAYER_FLAG_TEX_CONTINUOUS_UPDATE; - StereoLayerDesc.Flags |= IStereoLayers::ELayerFlags::LAYER_FLAG_QUAD_PRESERVE_TEX_RATIO; - return StereoLayerDesc; - } - - - void FOculusXRHMD::SetupViewFamily(FSceneViewFamily& InViewFamily) - { - InViewFamily.EngineShowFlags.StereoRendering = IsStereoEnabled(); -#if defined(WITH_OCULUS_BRANCH) - InViewFamily.bRenderStereoVelocity = SupportsSpaceWarp() ? CVarOculusEnableSpaceWarpUser.GetValueOnAnyThread() != 0 : false; -#endif // defined(WITH_OCULUS_BRANCH) - } - - void FOculusXRHMD::SetupView(FSceneViewFamily& InViewFamily, FSceneView& InView) - { - CheckInGameThread(); - } - - void FOculusXRHMD::BeginRenderViewFamily(FSceneViewFamily& InViewFamily) - { - CheckInGameThread(); - - if (Settings.IsValid() && Settings->IsStereoEnabled()) - { - // This should already have been set by UpdateStereoRenderingParams(). - // It must still match the value used there. - check(Settings->CurrentShaderPlatform == InViewFamily.Scene->GetShaderPlatform()); - Settings->Flags.bsRGBEyeBuffer = IsMobilePlatform(Settings->CurrentShaderPlatform) && IsMobileColorsRGB() && !IsMobileTonemapSubpassEnabled(Settings->CurrentShaderPlatform); - - if (NextFrameToRender.IsValid()) - { - NextFrameToRender->ShowFlags = InViewFamily.EngineShowFlags; - } - - if (SpectatorScreenController != nullptr) - { - SpectatorScreenController->BeginRenderViewFamily(); - } - } - - StartRenderFrame_GameThread(); - } - - void FOculusXRHMD::EnableInsightPassthrough_RenderThread(bool bEnablePassthrough) - { - const bool bShouldEnable = (InsightInitStatus == FInsightInitStatus::NotInitialized) && bEnablePassthrough; - - if (bShouldEnable) - { - if (OVRP_SUCCESS(FOculusXRHMDModule::GetPluginWrapper().InitializeInsightPassthrough())) - { - UE_LOG(LogHMD, Log, TEXT("Passthrough Initialized")); - InsightInitStatus = FInsightInitStatus::Initialized; - } - else - { - InsightInitStatus = FInsightInitStatus::Failed; - UE_LOG(LogHMD, Log, TEXT("Passthrough initialization failed")); - } - } - else - { - const bool bShouldShutdown = (InsightInitStatus == FInsightInitStatus::Initialized) && !bEnablePassthrough; - if (bShouldShutdown) - { - // it may already be deinitialized. - if (!FOculusXRHMDModule::GetPluginWrapper().GetInsightPassthroughInitialized() || OVRP_SUCCESS(FOculusXRHMDModule::GetPluginWrapper().ShutdownInsightPassthrough())) - { - UE_LOG(LogHMD, Log, TEXT("Passthrough shutdown")); - InsightInitStatus = FInsightInitStatus::NotInitialized; - } - else - { - UE_LOG(LogHMD, Log, TEXT("Failed to shut down passthrough. It may be still in use.")); - } - } - } - } - - void FOculusXRHMD::PreRenderViewFamily_RenderThread(FRDGBuilder& GraphBuilder, FSceneViewFamily& ViewFamily) - { - CheckInRenderThread(); - } - - void FOculusXRHMD::OnBeginRendering_RenderThread(FRHICommandListImmediate& RHICmdList, FSceneViewFamily& ViewFamily) - { - CheckInRenderThread(); - - if (!Frame_RenderThread.IsValid()) - { - return; - } - - if (!Settings_RenderThread.IsValid() || !Settings_RenderThread->IsStereoEnabled()) - { - return; - } - - // If using OVRPlugin OpenXR, only update spectator screen mode with VR focus, since we are running the frameloop - // and cycling through the swapchain even without VR focus with OVRPlugin OpenXR - ovrpXrApi NativeXrApi; - FOculusXRHMDModule::GetPluginWrapper().GetNativeXrApiType(&NativeXrApi); - if (SpectatorScreenController && (NativeXrApi != ovrpXrApi_OpenXR || FApp::HasVRFocus())) - { - SpectatorScreenController->UpdateSpectatorScreenMode_RenderThread(); - Frame_RenderThread->Flags.bSpectatorScreenActive = SpectatorScreenController->GetSpectatorScreenMode() != ESpectatorScreenMode::Disabled; - } - - // Update mirror texture - CustomPresent->UpdateMirrorTexture_RenderThread(); - -#if !PLATFORM_ANDROID -#if 0 // The entire target should be cleared by the tonemapper and pp material \ - // Clear the padding between two eyes - const int32 GapMinX = ViewFamily.Views[0]->UnscaledViewRect.Max.X; - const int32 GapMaxX = ViewFamily.Views[1]->UnscaledViewRect.Min.X; - - if (GapMinX < GapMaxX) - { - SCOPED_DRAW_EVENT(RHICmdList, OculusClearQuad) - - const int32 GapMinY = ViewFamily.Views[0]->UnscaledViewRect.Min.Y; - const int32 GapMaxY = ViewFamily.Views[1]->UnscaledViewRect.Max.Y; - - FRHIRenderPassInfo RPInfo(ViewFamily.RenderTarget->GetRenderTargetTexture(), ERenderTargetActions::DontLoad_Store); - RHICmdList.BeginRenderPass(RPInfo, TEXT("Clear")); - { - RHICmdList.SetViewport(GapMinX, GapMinY, 0, GapMaxX, GapMaxY, 1.0f); - DrawClearQuad(RHICmdList, FLinearColor::Black); - } - RHICmdList.EndRenderPass(); - } -#endif -#else - // ensure we have attached JNI to this thread - this has to happen persistently as the JNI could detach if the app loses focus - FAndroidApplication::GetJavaEnv(); -#endif - - EnableInsightPassthrough_RenderThread(Settings_RenderThread->Flags.bInsightPassthroughEnabled); - - // Start RHI frame - StartRHIFrame_RenderThread(); - - // Update performance stats - PerformanceStats.Frames++; - PerformanceStats.Seconds = FPlatformTime::Seconds(); - - if (bSoftOcclusionsEnabled && EnvironmentDepthMinMaxTexture != nullptr && !EnvironmentDepthSwapchain.IsEmpty()) - { - ovrpEnvironmentDepthFrameDesc DepthFrameDesc; - if (FOculusXRHMDModule::GetPluginWrapper().GetEnvironmentDepthFrameDesc(ovrpEye_Left, &DepthFrameDesc) != ovrpSuccess || !DepthFrameDesc.IsValid) - { - return; - } - if (EnvironmentDepthSwapchain.Num() <= DepthFrameDesc.SwapchainIndex || DepthFrameDesc.SwapchainIndex == PrevEnvironmentDepthMinMaxSwapchainIndex) - { - return; - } - - OculusXR::RenderEnvironmentDepthMinMaxTexture_RenderThread(RendererModule, EnvironmentDepthMinMaxTexture, - EnvironmentDepthSwapchain[DepthFrameDesc.SwapchainIndex], RHICmdList); - - PrevEnvironmentDepthMinMaxSwapchainIndex = DepthFrameDesc.SwapchainIndex; - } - } - - void FOculusXRHMD::PreRenderView_RenderThread(FRDGBuilder& GraphBuilder, FSceneView& InView) - { - } - - void FOculusXRHMD::PrepareAndRenderHardOcclusions_RenderThread(FRHICommandList& RHICmdList, FSceneView& InView) - { - checkSlow(RHICmdList.IsInsideRenderPass()); - - FVector2f DepthFactors; - FMatrix44f ScreenToDepthMatrices[ovrpEye_Count]; - int SwapchainIndex; - - if (!Frame_RenderThread.IsValid() || InView.bIsSceneCapture || InView.bIsReflectionCapture || InView.bIsPlanarReflection || !ComputeEnvironmentDepthParameters_RenderThread(DepthFactors, ScreenToDepthMatrices, nullptr, SwapchainIndex)) - { - return; - } - - if (SwapchainIndex >= EnvironmentDepthSwapchain.Num()) - { - UE_LOG(LogHMD, Error, TEXT("Depth texture swapchain index %d outside of boundaries"), SwapchainIndex); - return; - } - - FRHITexture* DepthTexture = EnvironmentDepthSwapchain[SwapchainIndex]; - OculusXR::RenderHardOcclusions_RenderThread(RendererModule, DepthFactors, ScreenToDepthMatrices, DepthTexture, - RHICmdList, InView); - } - - void FOculusXRHMD::PostRenderViewFamily_RenderThread(FRDGBuilder& GraphBuilder, FSceneViewFamily& InViewFamily) - { - CheckInRenderThread(); - - const bool bIsSceneCapture = InViewFamily.Views.Num() > 0 && InViewFamily.Views[0]->bIsSceneCapture; - - if (!bIsSceneCapture && InViewFamily.Views[0]->StereoPass != EStereoscopicPass::eSSP_FULL) - { - FinishRenderFrame_RenderThread(GraphBuilder); - } - } - -#if UE_VERSION_OLDER_THAN(5, 3, 0) - void FOculusXRHMD::PostRenderBasePassMobile_RenderThread(FRHICommandListImmediate& RHICmdList, FSceneView& InView) -#else - void FOculusXRHMD::PostRenderBasePassMobile_RenderThread(FRHICommandList& RHICmdList, FSceneView& InView) -#endif - { - if (bHardOcclusionsEnabled) - { - PrepareAndRenderHardOcclusions_RenderThread(RHICmdList, InView); - } -#ifndef WITH_OCULUS_BRANCH - UpdateFoveationOffsets_RenderThread(); -#endif - } - - BEGIN_SHADER_PARAMETER_STRUCT(FPostBasePassViewExtensionParameters, ) - SHADER_PARAMETER_RDG_UNIFORM_BUFFER(FSceneTextureUniformParameters, SceneTextures) - RENDER_TARGET_BINDING_SLOTS() - END_SHADER_PARAMETER_STRUCT() - - void FOculusXRHMD::PostRenderBasePassDeferred_RenderThread(FRDGBuilder& GraphBuilder, FSceneView& InView, const FRenderTargetBindingSlots& RenderTargets, TRDGUniformBufferRef SceneTextures) - { - if (bHardOcclusionsEnabled) - { - auto* PassParameters = GraphBuilder.AllocParameters(); - PassParameters->RenderTargets = RenderTargets; - PassParameters->SceneTextures = SceneTextures; - - GraphBuilder.AddPass(RDG_EVENT_NAME("RenderHardOcclusions_RenderThread"), PassParameters, ERDGPassFlags::Raster, [this, &InView](FRHICommandListImmediate& RHICmdList) { - PrepareAndRenderHardOcclusions_RenderThread(RHICmdList, InView); - }); - } - } - -#ifdef WITH_OCULUS_BRANCH -#if UE_VERSION_OLDER_THAN(5, 3, 0) - void FOculusXRHMD::PostSceneColorRenderingMobile_RenderThread(FRHICommandListImmediate& RHICmdList, FSceneView& InView) -#else - void FOculusXRHMD::PostSceneColorRenderingMobile_RenderThread(FRHICommandList& RHICmdList, FSceneView& InView) -#endif - { - UpdateFoveationOffsets_RenderThread(); - } -#endif - - int32 FOculusXRHMD::GetPriority() const - { - // We want to run after the FDefaultXRCamera's view extension - return -1; - } - -#ifdef WITH_OCULUS_BRANCH - bool FOculusXRHMD::LateLatchingEnabled() const - { -#if OCULUS_HMD_SUPPORTED_PLATFORMS_VULKAN && PLATFORM_ANDROID - // No LateLatching supported when occlusion culling is enabled due to mid frame submission - // No LateLatching supported for non Multi view ATM due to viewUniformBuffer reusing. - // The setting can be disabled in FOculusXRHMD::UpdateStereoRenderingParams - return Settings->bLateLatching; -#else - return false; -#endif - } - - void FOculusXRHMD::PreLateLatchingViewFamily_RenderThread(FRHICommandListImmediate& RHICmdList, FSceneViewFamily& InViewFamily) - { - CheckInRenderThread(); - FGameFrame* CurrentFrame = GetFrame_RenderThread(); - if (CurrentFrame) - { - CurrentFrame->Flags.bRTLateUpdateDone = false; // Allow LateLatching to update poses again - } - } -#endif - - bool FOculusXRHMD::SupportsSpaceWarp() const - { -#if PLATFORM_ANDROID - // Use All static value here since those can't be change at runtime - ensureMsgf(CustomPresent.IsValid(), TEXT("SupportsSpaceWarp can only be called post CustomPresent created")); - const bool bOvrPlugin_OpenXR = Settings->XrApi == EOculusXRXrApi::OVRPluginOpenXR; - static const auto CVarMobileMultiView = IConsoleManager::Get().FindTConsoleVariableDataInt(TEXT("vr.MobileMultiView")); - static const auto CVarSupportMobileSpaceWarp = IConsoleManager::Get().FindTConsoleVariableDataInt(TEXT("vr.SupportMobileSpaceWarp")); - bool bIsMobileMultiViewEnabled = (CVarMobileMultiView && CVarMobileMultiView->GetValueOnAnyThread() != 0); - bool bIsUsingMobileMultiView = GSupportsMobileMultiView && bIsMobileMultiViewEnabled; - bool bIsVulkan = CustomPresent->GetRenderAPI() == ovrpRenderAPI_Vulkan; - bool spaceWarpSupported = bOvrPlugin_OpenXR && bIsVulkan && bIsUsingMobileMultiView && CVarSupportMobileSpaceWarp && (CVarSupportMobileSpaceWarp->GetValueOnAnyThread() != 0); - return spaceWarpSupported; -#else - return false; -#endif - } - - FOculusXRHMD::FOculusXRHMD(const FAutoRegister& AutoRegister) - : FHeadMountedDisplayBase(nullptr) - , FHMDSceneViewExtension(AutoRegister) - , ConsoleCommands(this) - , InsightInitStatus(FInsightInitStatus::NotInitialized) - , bShutdownRequestQueued(false) - , bShouldWait_GameThread(true) - , bIsRendering_RenderThread(false) - { - Flags.Raw = 0; - OCFlags.Raw = 0; -#if UE_VERSION_OLDER_THAN(5, 4, 0) - TrackingOrigin = EHMDTrackingOrigin::Eye; -#else - TrackingOrigin = EHMDTrackingOrigin::View; -#endif - DeltaControlRotation = FRotator::ZeroRotator; // used from ApplyHmdRotation - LastPlayerOrientation = FQuat::Identity; - LastPlayerLocation = FVector::ZeroVector; - CachedWindowSize = FIntPoint::ZeroValue; - CachedWorldToMetersScale = 100.0f; - LastTrackingToWorld = FTransform::Identity; - - NextFrameNumber = 0; - WaitFrameNumber = (uint32)-1; - NextLayerId = 0; - - Settings = CreateNewSettings(); - - RendererModule = nullptr; - - SplashLayerHandle = -1; - - SplashRotation = FRotator(); - - bIsStandaloneStereoOnlyDevice = IHeadMountedDisplayModule::IsAvailable() && IHeadMountedDisplayModule::Get().IsStandaloneStereoOnlyDevice(); - - CurPlayerIndex = 0; - LastFrameHMDHeadPose = FPose(); - MultiPlayerPoses.Empty(); - } - - FOculusXRHMD::~FOculusXRHMD() - { - Shutdown(); - } - - bool FOculusXRHMD::Startup() - { - if (GIsEditor) - { - Settings->Flags.bHeadTrackingEnforced = true; - } - - check(!CustomPresent.IsValid()); - - FString RHIString; - { - FString HardwareDetails = FHardwareInfo::GetHardwareDetailsString(); - FString RHILookup = NAME_RHI.ToString() + TEXT("="); - - if (!FParse::Value(*HardwareDetails, *RHILookup, RHIString)) - { - return false; - } - } - -#if OCULUS_HMD_SUPPORTED_PLATFORMS_D3D11 - if (RHIString == TEXT("D3D11")) - { - CustomPresent = CreateCustomPresent_D3D11(this); - } - else -#endif -#if OCULUS_HMD_SUPPORTED_PLATFORMS_D3D12 - if (RHIString == TEXT("D3D12")) - { - CustomPresent = CreateCustomPresent_D3D12(this); - } - else -#endif -#if OCULUS_HMD_SUPPORTED_PLATFORMS_VULKAN - if (RHIString == TEXT("Vulkan")) - { - CustomPresent = CreateCustomPresent_Vulkan(this); - } - else -#endif - { - UE_LOG(LogHMD, Warning, TEXT("%s is not currently supported by OculusXRHMD plugin"), *RHIString); - return false; - } - - // grab a pointer to the renderer module for displaying our mirror window - static const FName RendererModuleName("Renderer"); - RendererModule = FModuleManager::GetModulePtr(RendererModuleName); - -#if PLATFORM_ANDROID - // register our application lifetime delegates - FCoreDelegates::ApplicationWillEnterBackgroundDelegate.AddRaw(this, &FOculusXRHMD::ApplicationPauseDelegate); - FCoreDelegates::ApplicationHasEnteredForegroundDelegate.AddRaw(this, &FOculusXRHMD::ApplicationResumeDelegate); -#endif - - // Create eye layer - IStereoLayers::FLayerDesc EyeLayerDesc; - EyeLayerDesc.Priority = INT_MIN; - EyeLayerDesc.Flags = LAYER_FLAG_TEX_CONTINUOUS_UPDATE; - uint32 EyeLayerId = CreateLayer(EyeLayerDesc); - check(EyeLayerId == 0); - - Splash = MakeShareable(new FSplash(this)); - Splash->Startup(); - -#if !PLATFORM_ANDROID - SpectatorScreenController = MakeUnique(this); -#endif - UE_LOG(LogHMD, Log, TEXT("Oculus plugin initialized. Version: %s"), *GetVersionString()); - - return true; - } - - void FOculusXRHMD::PreShutdown() - { - if (Splash.IsValid()) - { - Splash->PreShutdown(); - } - } - - void FOculusXRHMD::Shutdown() - { - CheckInGameThread(); - - if (Splash.IsValid()) - { - Splash->Shutdown(); - Splash = nullptr; - // The base implementation stores a raw pointer to the Splash object and tries to deallocate it in its destructor - LoadingScreen = nullptr; - } - - if (CustomPresent.IsValid()) - { - CustomPresent->Shutdown(); - CustomPresent = nullptr; - } - - ReleaseDevice(); - - Settings.Reset(); - LayerMap.Reset(); - } - - void FOculusXRHMD::ApplicationPauseDelegate() - { - ExecuteOnRenderThread([this]() { - ExecuteOnRHIThread([this]() { - FOculusXRHMDModule::GetPluginWrapper().DestroyDistortionWindow2(); - }); - }); - OCFlags.AppIsPaused = true; - } - - void FOculusXRHMD::ApplicationResumeDelegate() - { - if (OCFlags.AppIsPaused && !InitializeSession()) - { - UE_LOG(LogHMD, Log, TEXT("HMD initialization failed")); - } - OCFlags.AppIsPaused = false; - } - - static const FString EYE_TRACKING_PERMISSION_NAME("com.oculus.permission.EYE_TRACKING"); - - bool FOculusXRHMD::CheckEyeTrackingPermission(EOculusXRFoveatedRenderingMethod InFoveatedRenderingMethod) - { -#if PLATFORM_ANDROID - // Check and request eye tracking permissions, bind delegate for handling permission request result - if (!UAndroidPermissionFunctionLibrary::CheckPermission(EYE_TRACKING_PERMISSION_NAME)) - { - TArray Permissions; - Permissions.Add(EYE_TRACKING_PERMISSION_NAME); - UAndroidPermissionCallbackProxy* Proxy = UAndroidPermissionFunctionLibrary::AcquirePermissions(Permissions); - Proxy->OnPermissionsGrantedDelegate.AddLambda([this, InFoveatedRenderingMethod](const TArray& Permissions, const TArray& GrantResults) { - int PermIndex = Permissions.Find(EYE_TRACKING_PERMISSION_NAME); - if (PermIndex != INDEX_NONE && GrantResults[PermIndex]) - { - UE_LOG(LogHMD, Verbose, TEXT("com.oculus.permission.EYE_TRACKING permission granted")); - FoveatedRenderingMethod = InFoveatedRenderingMethod; - FOculusEventDelegates::OculusEyeTrackingStateChanged.Broadcast(true); - } - else - { - UE_LOG(LogHMD, Log, TEXT("com.oculus.permission.EYE_TRACKING permission denied")); - if (InFoveatedRenderingMethod == EOculusXRFoveatedRenderingMethod::EyeTrackedFoveatedRendering) - { - EyeTrackedFoveatedRenderingFallback(); - } - FOculusEventDelegates::OculusEyeTrackingStateChanged.Broadcast(false); - } - }); - return false; - } -#endif // PLATFORM_ANDROID - return true; - } - - bool FOculusXRHMD::InitializeSession() - { - UE_LOG(LogHMD, Log, TEXT("Initializing OVRPlugin session")); - - if (!FOculusXRHMDModule::GetPluginWrapper().GetInitialized()) - { -#if !UE_BUILD_SHIPPING - ovrpLogCallback logCallback = OvrpLogCallback; -#else - ovrpLogCallback logCallback = nullptr; -#endif - -#if PLATFORM_ANDROID - void* activity = (void*)FAndroidApplication::GetGameActivityThis(); -#else - void* activity = nullptr; -#endif - - int initializeFlags = GIsEditor ? ovrpInitializeFlag_SupportsVRToggle : 0; - - initializeFlags |= CustomPresent->SupportsSRGB() ? ovrpInitializeFlag_SupportSRGBFrameBuffer : 0; - - if (Settings->Flags.bSupportsDash) - { - initializeFlags |= ovrpInitializeFlag_FocusAware; - } - - if (SupportsSpaceWarp()) // Configure for space warp - { - initializeFlags |= ovrpInitializeFlag_SupportAppSpaceWarp; - UE_LOG(LogHMD, Log, TEXT("[Mobile SpaceWarp] Application is configured to support mobile spacewarp")); - } - bNeedReAllocateMotionVectorTexture_RenderThread = false; - bNeedReAllocateMotionVectorDepthTexture_RenderThread = true; - -#if WITH_EDITOR && PLATFORM_WINDOWS - // Attempt Late Initialization in-editor - // FOculusXRHMDModule::PreInit always returns true in this case, - // so we need to check the flag directly. - if (GIsEditor && FOculusXRHMDModule::Get().PreInit() && !FOculusXRHMDModule::Get().bPreInit) - { - return false; - } -#endif - - if (OVRP_FAILURE(FOculusXRHMDModule::GetPluginWrapper().Initialize7( - CustomPresent->GetRenderAPI(), - logCallback, - activity, - CustomPresent->GetOvrpInstance(), - CustomPresent->GetOvrpPhysicalDevice(), - CustomPresent->GetOvrpDevice(), - CustomPresent->GetOvrpCommandQueue(), - nullptr /*vkGetInstanceProcAddr*/, - 0 /*vkQueueFamilyIndex*/, - nullptr /*d3dDevice*/, - initializeFlags, - { OVRP_VERSION }))) - { - return false; - } - -#ifndef WITH_OCULUS_BRANCH - if (IConsoleVariable* VariableRateShadingCVar = IConsoleManager::Get().FindConsoleVariable(TEXT("r.VRS.Enable"))) - { - VariableRateShadingCVar->Set(1); - } -#endif // WITH_OCULUS_BRANCH - - ovrpBool Supported = ovrpBool_False; - if (Settings->bSupportEyeTrackedFoveatedRendering) - { - FOculusXRHMDModule::GetPluginWrapper().GetFoveationEyeTrackedSupported(&Supported); - } - bEyeTrackedFoveatedRenderingSupported = Supported == ovrpBool_True; - SetFoveatedRenderingMethod(Settings->FoveatedRenderingMethod); - SetFoveatedRenderingLevel(Settings->FoveatedRenderingLevel, Settings->bDynamicFoveatedRendering); - - NextFrameNumber = 0; - WaitFrameNumber = (uint32)-1; - } - - FOculusXRHMDModule::GetPluginWrapper().SetAppEngineInfo2( - "Unreal Engine", - TCHAR_TO_ANSI(*FEngineVersion::Current().ToString()), - GIsEditor ? ovrpBool_True : ovrpBool_False); - - int flag = ovrpDistortionWindowFlag_None; - - FOculusXRHMDModule::GetPluginWrapper().SetupDistortionWindow3(flag); - FOculusXRHMDModule::GetPluginWrapper().SetSuggestedCpuPerformanceLevel((ovrpProcessorPerformanceLevel)Settings->SuggestedCpuPerfLevel); - FOculusXRHMDModule::GetPluginWrapper().SetSuggestedGpuPerformanceLevel((ovrpProcessorPerformanceLevel)Settings->SuggestedGpuPerfLevel); - FOculusXRHMDModule::GetPluginWrapper().SetFoveationEyeTracked(FoveatedRenderingMethod == EOculusXRFoveatedRenderingMethod::EyeTrackedFoveatedRendering); - FOculusXRHMDModule::GetPluginWrapper().SetTiledMultiResLevel((ovrpTiledMultiResLevel)FoveatedRenderingLevel.load()); - FOculusXRHMDModule::GetPluginWrapper().SetTiledMultiResDynamic(bDynamicFoveatedRendering.load()); - FOculusXRHMDModule::GetPluginWrapper().SetAppCPUPriority2(((ovrpBool)CVarOculusIncreaseThreadPrio.GetValueOnAnyThread())); - FOculusXRHMDModule::GetPluginWrapper().SetLocalDimming(ovrpBool_True); - - OCFlags.NeedSetTrackingOrigin = true; - - FOculusXRHMDModule::GetPluginWrapper().SetClientColorDesc((ovrpColorSpace)Settings->ColorSpace); - - return true; - } - - void FOculusXRHMD::ShutdownSession() - { - ExecuteOnRenderThread([this]() { - ExecuteOnRHIThread([this]() { - FOculusXRHMDModule::GetPluginWrapper().DestroyDistortionWindow2(); - }); - }); - - FOculusXRHMDModule::GetPluginWrapper().Shutdown2(); - - bIsRendering_RenderThread = false; - } - - bool FOculusXRHMD::InitDevice() - { - CheckInGameThread(); - - if (FOculusXRHMDModule::GetPluginWrapper().GetInitialized()) - { - // Already created and present - return true; - } - - if (!IsHMDEnabled()) - { - // Don't bother if HMD is not connected - return false; - } - - LoadFromSettings(); - - if (!InitializeSession()) - { - UE_LOG(LogHMD, Log, TEXT("HMD initialization failed")); - return false; - } - - // Don't need to reset these flags on application resume, so put them in InitDevice instead of InitializeSession - bNeedReAllocateViewportRenderTarget = true; - bNeedReAllocateDepthTexture_RenderThread = false; - bNeedReAllocateFoveationTexture_RenderThread = false; - Flags.bNeedDisableStereo = false; - OCFlags.NeedSetFocusToGameViewport = true; - - if (!CustomPresent->IsUsingCorrectDisplayAdapter()) - { - UE_LOG(LogHMD, Error, TEXT("Using incorrect display adapter for HMD.")); - ShutdownSession(); - return false; - } - - if (OVRP_FAILURE(FOculusXRHMDModule::GetPluginWrapper().GetSystemHeadsetType2(&Settings->SystemHeadset))) - { - Settings->SystemHeadset = ovrpSystemHeadset_None; - } - - FOculusXRHMDModule::GetPluginWrapper().Update3(ovrpStep_Render, 0, 0.0); - - if (IConsoleVariable* MobileDynamicResCVar = IConsoleManager::Get().FindConsoleVariable(TEXT("xr.MobileLDRDynamicResolution"))) - { - MobileDynamicResCVar->Set(static_cast(Settings->Flags.bPixelDensityAdaptive)); - } - if (Settings->Flags.bPixelDensityAdaptive) - { - static const auto DynamicResOperationCVar = IConsoleManager::Get().FindConsoleVariable(TEXT("r.DynamicRes.OperationMode")); - if (DynamicResOperationCVar) - { - DynamicResOperationCVar->Set(2); - } - GEngine->ChangeDynamicResolutionStateAtNextFrame(MakeShareable(new FDynamicResolutionState(Settings))); - } - - UpdateHmdRenderInfo(); - UpdateStereoRenderingParams(); - - const bool bEnablePassthrough = Settings->Flags.bInsightPassthroughEnabled; - - ExecuteOnRenderThread([this, bEnablePassthrough](FRHICommandListImmediate& RHICmdList) { - InitializeEyeLayer_RenderThread(RHICmdList); - EnableInsightPassthrough_RenderThread(bEnablePassthrough); - }); - - if (!EyeLayer_RenderThread.IsValid() || !EyeLayer_RenderThread->GetSwapChain().IsValid()) - { - UE_LOG(LogHMD, Error, TEXT("Failed to create eye layer swap chain.")); - ShutdownSession(); - return false; - } - - if (!HiddenAreaMeshes[0].IsValid() || !HiddenAreaMeshes[1].IsValid()) - { - SetupOcclusionMeshes(); - } - -#if !UE_BUILD_SHIPPING - DrawDebugDelegateHandle = UDebugDrawService::Register(TEXT("Game"), FDebugDrawDelegate::CreateRaw(this, &FOculusXRHMD::DrawDebug)); -#endif - - // Do not set VR focus in Editor by just creating a device; Editor may have it created w/o requiring focus. - // Instead, set VR focus in OnBeginPlay (VR Preview will run there first). - if (!GIsEditor) - { - FApp::SetUseVRFocus(true); - FApp::SetHasVRFocus(true); - } - - FOculusXRHMDModule::GetPluginWrapper().SetClientColorDesc((ovrpColorSpace)Settings->ColorSpace); - - return true; - } - - void FOculusXRHMD::ReleaseDevice() - { - CheckInGameThread(); - - if (FOculusXRHMDModule::GetPluginWrapper().GetInitialized()) - { - // Wait until the next frame before ending the session (workaround for DX12/Vulkan resources being ripped out from under us before we're done with them). - bShutdownRequestQueued = true; - } - } - - void BuildOcclusionMesh(FRHICommandList& RHICmdList, FHMDViewMesh& Mesh, ovrpEye Eye, ovrpViewportStencilType MeshType) - { - int VertexCount = 0; - int IndexCount = 0; - - ovrpResult Result = ovrpResult::ovrpFailure; - if (OVRP_FAILURE(Result = FOculusXRHMDModule::GetPluginWrapper().GetViewportStencil(Eye, MeshType, nullptr, &VertexCount, nullptr, &IndexCount))) - { - return; - } - - FRHIResourceCreateInfo CreateInfo(TEXT("FOculusXRHMD")); -#if UE_VERSION_OLDER_THAN(5, 3, 0) - Mesh.VertexBufferRHI = RHICreateVertexBuffer(sizeof(FFilterVertex) * VertexCount, BUF_Static, CreateInfo); - void* VoidPtr = RHILockBuffer(Mesh.VertexBufferRHI, 0, sizeof(FFilterVertex) * VertexCount, RLM_WriteOnly); -#else - Mesh.VertexBufferRHI = RHICmdList.CreateVertexBuffer(sizeof(FFilterVertex) * VertexCount, BUF_Static, CreateInfo); - void* VoidPtr = RHICmdList.LockBuffer(Mesh.VertexBufferRHI, 0, sizeof(FFilterVertex) * VertexCount, RLM_WriteOnly); -#endif - FFilterVertex* pVertices = reinterpret_cast(VoidPtr); - -#if UE_VERSION_OLDER_THAN(5, 3, 0) - Mesh.IndexBufferRHI = RHICreateIndexBuffer(sizeof(uint16), sizeof(uint16) * IndexCount, BUF_Static, CreateInfo); - void* VoidPtr2 = RHILockBuffer(Mesh.IndexBufferRHI, 0, sizeof(uint16) * IndexCount, RLM_WriteOnly); -#else - Mesh.IndexBufferRHI = RHICmdList.CreateIndexBuffer(sizeof(uint16), sizeof(uint16) * IndexCount, BUF_Static, CreateInfo); - void* VoidPtr2 = RHICmdList.LockBuffer(Mesh.IndexBufferRHI, 0, sizeof(uint16) * IndexCount, RLM_WriteOnly); -#endif - uint16* pIndices = reinterpret_cast(VoidPtr2); - - ovrpVector2f* const ovrpVertices = new ovrpVector2f[VertexCount]; - - FOculusXRHMDModule::GetPluginWrapper().GetViewportStencil(Eye, MeshType, ovrpVertices, &VertexCount, pIndices, &IndexCount); - - for (int i = 0; i < VertexCount; ++i) - { - FFilterVertex& Vertex = pVertices[i]; - CA_SUPPRESS(6385); // warning C6385: Reading invalid data from 'ovrpVertices': the readable size is 'VertexCount*8' bytes, but '16' bytes may be read - const ovrpVector2f& Position = ovrpVertices[i]; - if (MeshType == ovrpViewportStencilType_HiddenArea) - { - Vertex.Position.X = (Position.x * 2.0f) - 1.0f; - Vertex.Position.Y = (Position.y * 2.0f) - 1.0f; - Vertex.Position.Z = 1.0f; - Vertex.Position.W = 1.0f; - Vertex.UV.X = 0.0f; - Vertex.UV.Y = 0.0f; - } - else if (MeshType == ovrpViewportStencilType_VisibleArea) - { - Vertex.Position.X = Position.x; - Vertex.Position.Y = 1.0f - Position.y; - Vertex.Position.Z = 0.0f; - Vertex.Position.W = 1.0f; - Vertex.UV.X = Position.x; - Vertex.UV.Y = 1.0f - Position.y; - } - else - { - check(0); - } - } - - Mesh.NumIndices = IndexCount; - Mesh.NumVertices = VertexCount; - Mesh.NumTriangles = IndexCount / 3; - - delete[] ovrpVertices; - -#if UE_VERSION_OLDER_THAN(5, 3, 0) - RHIUnlockBuffer(Mesh.VertexBufferRHI); - RHIUnlockBuffer(Mesh.IndexBufferRHI); -#else - RHICmdList.UnlockBuffer(Mesh.VertexBufferRHI); - RHICmdList.UnlockBuffer(Mesh.IndexBufferRHI); -#endif - } - - void FOculusXRHMD::SetupOcclusionMeshes() - { - CheckInGameThread(); - - FOculusXRHMD* const Self = this; - ENQUEUE_RENDER_COMMAND(SetupOcclusionMeshesCmd) - ([Self](FRHICommandList& RHICmdList) { - BuildOcclusionMesh(RHICmdList, Self->HiddenAreaMeshes[0], ovrpEye_Left, ovrpViewportStencilType_HiddenArea); - BuildOcclusionMesh(RHICmdList, Self->HiddenAreaMeshes[1], ovrpEye_Right, ovrpViewportStencilType_HiddenArea); - BuildOcclusionMesh(RHICmdList, Self->VisibleAreaMeshes[0], ovrpEye_Left, ovrpViewportStencilType_VisibleArea); - BuildOcclusionMesh(RHICmdList, Self->VisibleAreaMeshes[1], ovrpEye_Right, ovrpViewportStencilType_VisibleArea); - }); - } - - static ovrpMatrix4f ovrpMatrix4f_Projection(const ovrpFrustum2f& frustum, bool leftHanded) - { - float handednessScale = leftHanded ? 1.0f : -1.0f; - - // A projection matrix is very like a scaling from NDC, so we can start with that. - float projXScale = 2.0f / (frustum.Fov.LeftTan + frustum.Fov.RightTan); - float projXOffset = (frustum.Fov.LeftTan - frustum.Fov.RightTan) * projXScale * 0.5f; - float projYScale = 2.0f / (frustum.Fov.UpTan + frustum.Fov.DownTan); - float projYOffset = (frustum.Fov.UpTan - frustum.Fov.DownTan) * projYScale * 0.5f; - - ovrpMatrix4f projection; - - // Produces X result, mapping clip edges to [-w,+w] - projection.M[0][0] = projXScale; - projection.M[0][1] = 0.0f; - projection.M[0][2] = handednessScale * projXOffset; - projection.M[0][3] = 0.0f; - - // Produces Y result, mapping clip edges to [-w,+w] - // Hey - why is that YOffset negated? - // It's because a projection matrix transforms from world coords with Y=up, - // whereas this is derived from an NDC scaling, which is Y=down. - projection.M[1][0] = 0.0f; - projection.M[1][1] = projYScale; - projection.M[1][2] = handednessScale * -projYOffset; - projection.M[1][3] = 0.0f; - - // Produces Z-buffer result - projection.M[2][0] = 0.0f; - projection.M[2][1] = 0.0f; - if (FGenericPlatformMath::IsFinite(frustum.zFar)) - { - projection.M[2][2] = -handednessScale * frustum.zFar / (frustum.zNear - frustum.zFar); - projection.M[2][3] = (frustum.zFar * frustum.zNear) / (frustum.zNear - frustum.zFar); - } - else - { - projection.M[2][2] = handednessScale; - projection.M[2][3] = -frustum.zNear; - } - - // Produces W result (= Z in) - projection.M[3][0] = 0.0f; - projection.M[3][1] = 0.0f; - projection.M[3][2] = handednessScale; - projection.M[3][3] = 0.0f; - - return projection; - } - - void FOculusXRHMD::UpdateStereoRenderingParams() - { - CheckInGameThread(); - - // Update PixelDensity - bool bSupportsDepth = true; - - if (Settings->Flags.bPixelDensityAdaptive) - { - FLayer* EyeLayer = EyeLayer_RenderThread.Get(); - float NewPixelDensity = 1.0; - if (EyeLayer && EyeLayer->GetOvrpId()) - { - ovrpSizei RecommendedResolution = { 0, 0 }; - FOculusXRHMDModule::GetPluginWrapper().GetLayerRecommendedResolution(EyeLayer->GetOvrpId(), &RecommendedResolution); - if (RecommendedResolution.h > 0) - { - NewPixelDensity = RecommendedResolution.h * (float)Settings->GetPixelDensityMax() / Settings->RenderTargetSize.Y; - } - } - - const float PixelDensityCVarOverride = CVarOculusDynamicResolutionPixelDensity.GetValueOnAnyThread(); - if (PixelDensityCVarOverride > 0) - { - NewPixelDensity = PixelDensityCVarOverride; - } - Settings->SetPixelDensitySmooth(NewPixelDensity); - } - else - { -#if UE_VERSION_OLDER_THAN(5, 5, 0) - static const auto PixelDensityCVar = IConsoleManager::Get().FindConsoleVariable(TEXT("vr.PixelDensity")); - Settings->SetPixelDensity(PixelDensityCVar ? PixelDensityCVar->GetFloat() : 1.0f); -#else - static const auto PixelDensityCVar = IConsoleManager::Get().FindConsoleVariable(TEXT("xr.SecondaryScreenPercentage.HMDRenderTarget")); - Settings->SetPixelDensity(PixelDensityCVar ? PixelDensityCVar->GetFloat() / 100 : 1.0f); -#endif - - // Due to hijacking the depth target directly from the scene context, we can't support depth compositing if it's being scaled by screen percentage since it wont match our color render target dimensions. - static const auto ScreenPercentageCVar = IConsoleManager::Get().FindConsoleVariable(TEXT("r.ScreenPercentage")); - float ScreenPercentage = (!ScreenPercentageCVar) ? 100.0f : ScreenPercentageCVar->GetFloat(); -#if !UE_VERSION_OLDER_THAN(5, 3, 0) - // 5.3 changes the default screen percentage to 0 and uses r.ScreenPercentage.Default values to determine screen percentage - if (ScreenPercentageCVar->GetFloat() <= 0.0f) - { - static const auto VRScreenPercentageModeCVar = IConsoleManager::Get().FindConsoleVariable(TEXT("r.ScreenPercentage.Default.VR.Mode")); - // With default VR screen percentage modes, only support depth with manual screen percentage set to 100 - if (VRScreenPercentageModeCVar && VRScreenPercentageModeCVar->GetInt() == static_cast(EScreenPercentageMode::Manual)) - { - static const auto ManualScreenPercentageCVar = IConsoleManager::Get().FindConsoleVariable(TEXT("r.ScreenPercentage.Default")); - ScreenPercentage = ManualScreenPercentageCVar->GetFloat(); - } - } -#endif - bSupportsDepth = ScreenPercentage == 100.0f; - } - - // Update EyeLayer - FLayerPtr* EyeLayerFound = LayerMap.Find(0); - FLayer* EyeLayer = new FLayer(**EyeLayerFound); - *EyeLayerFound = MakeShareable(EyeLayer); - - ovrpLayout Layout = ovrpLayout_DoubleWide; - - static const auto CVarMobileMultiView = IConsoleManager::Get().FindTConsoleVariableDataInt(TEXT("vr.MobileMultiView")); - const bool bIsMobileMultiViewEnabled = (CVarMobileMultiView && CVarMobileMultiView->GetValueOnAnyThread() != 0); - - const bool bIsUsingMobileMultiView = (GSupportsMobileMultiView || GRHISupportsArrayIndexFromAnyShader) && bIsMobileMultiViewEnabled; - - Settings->CurrentFeatureLevel = GEngine ? GEngine->GetDefaultWorldFeatureLevel() : GMaxRHIFeatureLevel; - Settings->CurrentShaderPlatform = GShaderPlatformForFeatureLevel[Settings->CurrentFeatureLevel]; - - // for now only mobile rendering codepaths use the array rendering system, so PC-native should stay in doublewide - if (bIsUsingMobileMultiView && IsMobilePlatform(Settings->CurrentShaderPlatform)) - { - Layout = ovrpLayout_Array; - } - -#if PLATFORM_ANDROID - if (!bIsUsingMobileMultiView && Settings->bLateLatching) - { - UE_CLOG(true, LogHMD, Error, TEXT("LateLatching can't be used when Multiview is off, force disabling.")); - Settings->bLateLatching = false; - } -#endif - - const bool bForceSymmetric = CVarOculusForceSymmetric.GetValueOnAnyThread() == 1 && (Layout == ovrpLayout_Array); - - ovrpLayerDesc_EyeFov EyeLayerDesc; - const bool requestsSubsampled = CVarOculusEnableSubsampledLayout.GetValueOnAnyThread() == 1 && CustomPresent->SupportsSubsampled(); - int eyeLayerFlags = requestsSubsampled ? ovrpLayerFlag_Subsampled : 0; - - ovrpTextureFormat MvPixelFormat = ovrpTextureFormat_R16G16B16A16_FP; - ovrpTextureFormat MvDepthFormat = ovrpTextureFormat_D24_S8; - int SpaceWarpAllocateFlag = SupportsSpaceWarp() ? ovrpLayerFlag_SpaceWarpDataAllocation | ovrpLayerFlag_SpaceWarpDedicatedDepth : 0; - - const bool bCompositeDepth = Settings->Flags.bCompositeDepth; - Settings->Flags.bsRGBEyeBuffer = IsMobilePlatform(Settings->CurrentShaderPlatform) && IsMobileColorsRGB() && !IsMobileTonemapSubpassEnabled(Settings->CurrentShaderPlatform); - if (OVRP_SUCCESS(FOculusXRHMDModule::GetPluginWrapper().CalculateEyeLayerDesc3( - Layout, - Settings->Flags.bPixelDensityAdaptive ? Settings->GetPixelDensityMax() : Settings->PixelDensity, - Settings->Flags.bHQDistortion ? 0 : 1, - 1, // UNDONE - CustomPresent->GetOvrpTextureFormat(CustomPresent->GetDefaultPixelFormat(), Settings->Flags.bsRGBEyeBuffer), - (bCompositeDepth && bSupportsDepth) ? CustomPresent->GetDefaultDepthOvrpTextureFormat() : ovrpTextureFormat_None, - MvPixelFormat, - MvDepthFormat, - 1.0f, - CustomPresent->GetLayerFlags() | eyeLayerFlags | SpaceWarpAllocateFlag, - &EyeLayerDesc))) - { - ovrpFovf FrameFov[ovrpEye_Count] = { EyeLayerDesc.Fov[0], EyeLayerDesc.Fov[1] }; - if (bForceSymmetric) - { - // calculate symmetric FOV from runtime-provided asym in EyeLayerDesc - FrameFov[0].RightTan = FrameFov[1].RightTan = FMath::Max(EyeLayerDesc.Fov[0].RightTan, EyeLayerDesc.Fov[1].RightTan); - FrameFov[0].LeftTan = FrameFov[1].LeftTan = FMath::Max(EyeLayerDesc.Fov[0].LeftTan, EyeLayerDesc.Fov[1].LeftTan); - - const float asymTanSize = EyeLayerDesc.Fov[0].RightTan + EyeLayerDesc.Fov[0].LeftTan; - const float symTanSize = FrameFov[0].RightTan + FrameFov[0].LeftTan; - - // compute new resolution from a number of tile multiple, and the increase in width from symmetric FOV - const int numberTiles = (int)floor(EyeLayerDesc.TextureSize.w * symTanSize / (96.0 * asymTanSize)); - EyeLayerDesc.TextureSize.w = EyeLayerDesc.MaxViewportSize.w = numberTiles * 96; - } - - // Scaling for DynamicResolution will happen later - see FSceneRenderer::PrepareViewRectsForRendering. - // If scaling does occur, EyeRenderViewport will be updated in FOculusXRHMD::SetFinalViewRect. - FIntPoint UnscaledViewportSize = FIntPoint(EyeLayerDesc.MaxViewportSize.w, EyeLayerDesc.MaxViewportSize.h); - if (Settings->Flags.bPixelDensityAdaptive) - { - FIntPoint ViewRect = FIntPoint( - FMath::CeilToInt(EyeLayerDesc.MaxViewportSize.w / Settings->GetPixelDensityMax()), - FMath::CeilToInt(EyeLayerDesc.MaxViewportSize.h / Settings->GetPixelDensityMax())); - UnscaledViewportSize = ViewRect; - - FIntPoint UpperViewRect = FIntPoint( - FMath::CeilToInt(ViewRect.X * Settings->GetPixelDensityMax()), - FMath::CeilToInt(ViewRect.Y * Settings->GetPixelDensityMax())); - - FIntPoint TextureSize; - QuantizeSceneBufferSize(UpperViewRect, TextureSize); - - EyeLayerDesc.MaxViewportSize.w = TextureSize.X; - EyeLayerDesc.MaxViewportSize.h = TextureSize.Y; - } - - // Unreal assumes no gutter between eyes - EyeLayerDesc.TextureSize.w = EyeLayerDesc.MaxViewportSize.w; - EyeLayerDesc.TextureSize.h = EyeLayerDesc.MaxViewportSize.h; - - if (Layout == ovrpLayout_DoubleWide) - { - EyeLayerDesc.TextureSize.w *= 2; - } - - bool bSpaceWarp = false; - if (SupportsSpaceWarp()) - { - bSpaceWarp = CVarOculusEnableSpaceWarpUser.GetValueOnAnyThread() != 0; - } - EyeLayer->SetEyeLayerDesc(EyeLayerDesc, bSpaceWarp); - EyeLayer->bNeedsTexSrgbCreate = Settings->Flags.bsRGBEyeBuffer; - - Settings->RenderTargetSize = FIntPoint(EyeLayerDesc.TextureSize.w, EyeLayerDesc.TextureSize.h); - Settings->EyeRenderViewport[0].Min = FIntPoint::ZeroValue; - Settings->EyeRenderViewport[0].Max = UnscaledViewportSize; - Settings->EyeRenderViewport[1].Min = FIntPoint(Layout == ovrpLayout_DoubleWide ? UnscaledViewportSize.X : 0, 0); - Settings->EyeRenderViewport[1].Max = Settings->EyeRenderViewport[1].Min + UnscaledViewportSize; - - Settings->EyeUnscaledRenderViewport[0] = Settings->EyeRenderViewport[0]; - Settings->EyeUnscaledRenderViewport[1] = Settings->EyeRenderViewport[1]; - - // Update projection matrices - ovrpFrustum2f frustumLeft = { 0.001f, 1000.0f, FrameFov[0] }; - ovrpFrustum2f frustumRight = { 0.001f, 1000.0f, FrameFov[1] }; - ovrpFrustum2f frustumCenter = { 0.001f, 1000.0f, { FrameFov[0].UpTan, FrameFov[0].DownTan, FrameFov[0].LeftTan, FrameFov[1].RightTan } }; - - Settings->EyeProjectionMatrices[0] = ovrpMatrix4f_Projection(frustumLeft, true); - Settings->EyeProjectionMatrices[1] = ovrpMatrix4f_Projection(frustumRight, true); - Settings->MonoProjectionMatrix = ovrpMatrix4f_Projection(frustumCenter, true); - - // given that we send a subrect in vpRectSubmit, the FOV is the default asym one in EyeLayerDesc, not FrameFov - if (Frame.IsValid()) - { - Frame->Fov[0] = EyeLayerDesc.Fov[0]; - Frame->Fov[1] = EyeLayerDesc.Fov[1]; - Frame->SymmetricFov[0] = FrameFov[0]; - Frame->SymmetricFov[1] = FrameFov[1]; - } - - // Flag if need to recreate render targets - if (!EyeLayer->CanReuseResources(EyeLayer_RenderThread.Get())) - { - AllocateEyeBuffer(); - } - } - } - - void FOculusXRHMD::UpdateHmdRenderInfo() - { - CheckInGameThread(); - FOculusXRHMDModule::GetPluginWrapper().GetSystemDisplayFrequency2(&Settings->VsyncToNextVsync); - } - - void FOculusXRHMD::InitializeEyeLayer_RenderThread(FRHICommandListImmediate& RHICmdList) - { - check(!InGameThread()); - CheckInRenderThread(); - - if (LayerMap[0].IsValid()) - { - FLayerPtr EyeLayer = LayerMap[0]->Clone(); - EyeLayer->Initialize_RenderThread(Settings_RenderThread.Get(), CustomPresent, &DeferredDeletion, RHICmdList, EyeLayer_RenderThread.Get()); - - if (Layers_RenderThread.Num() > 0) - { - Layers_RenderThread[0] = EyeLayer; - } - else - { - Layers_RenderThread.Add(EyeLayer); - } - - if (EyeLayer->GetDepthSwapChain().IsValid()) - { - if (!EyeLayer_RenderThread.IsValid() || EyeLayer->GetDepthSwapChain() != EyeLayer_RenderThread->GetDepthSwapChain()) - { - bNeedReAllocateDepthTexture_RenderThread = true; - } - } - if (EyeLayer->GetFoveationSwapChain().IsValid()) - { - if (!EyeLayer_RenderThread.IsValid() || EyeLayer->GetFoveationSwapChain() != EyeLayer_RenderThread->GetFoveationSwapChain()) - { - bNeedReAllocateFoveationTexture_RenderThread = true; - } -#if !UE_VERSION_OLDER_THAN(5, 3, 0) - FoveationImageGenerator = MakeShared(EyeLayer->GetFoveationSwapChain()); -#endif // !UE_VERSION_OLDER_THAN(5, 3, 0) - } - - if (EyeLayer->GetMotionVectorSwapChain().IsValid()) - { - if (!EyeLayer_RenderThread.IsValid() || EyeLayer->GetMotionVectorSwapChain() != EyeLayer_RenderThread->GetMotionVectorSwapChain()) - { - bNeedReAllocateMotionVectorTexture_RenderThread = true; - UE_LOG(LogHMD, VeryVerbose, TEXT("[Mobile SpaceWarp] request to re-allocate motionVector textures")); - } - } - - if (EyeLayer->GetMotionVectorDepthSwapChain().IsValid()) - { - if (!EyeLayer_RenderThread.IsValid() || EyeLayer->GetMotionVectorDepthSwapChain() != EyeLayer_RenderThread->GetMotionVectorDepthSwapChain()) - { - bNeedReAllocateMotionVectorDepthTexture_RenderThread = true; - UE_LOG(LogHMD, VeryVerbose, TEXT("[Mobile SpaceWarp] request to re-allocate motionVector depth textures")); - } - } - - if (EyeLayer_RenderThread.IsValid()) - { - DeferredDeletion.AddLayerToDeferredDeletionQueue(EyeLayer_RenderThread); - } - - EyeLayer_RenderThread = EyeLayer; - } - } - - void FOculusXRHMD::ApplySystemOverridesOnStereo(bool force) - { - CheckInGameThread(); - // ALWAYS SET r.FinishCurrentFrame to 0! Otherwise the perf might be poor. - // @TODO: revise the FD3D11DynamicRHI::RHIEndDrawingViewport code (and other renderers) - // to ignore this var completely. - static const auto CFinishFrameVar = IConsoleManager::Get().FindConsoleVariable(TEXT("r.FinishCurrentFrame")); - CFinishFrameVar->Set(0); - } - - bool FOculusXRHMD::OnOculusStateChange(bool bIsEnabledNow) - { - if (!bIsEnabledNow) - { - // Switching from stereo - ReleaseDevice(); - - ResetControlRotation(); - return true; - } - else - { - // Switching to stereo - if (InitDevice()) - { - Flags.bApplySystemOverridesOnStereo = true; - return true; - } - DeltaControlRotation = FRotator::ZeroRotator; - } - return false; - } - - class FSceneViewport* FOculusXRHMD::FindSceneViewport() - { - if (!GIsEditor) - { - UGameEngine* GameEngine = Cast(GEngine); - return GameEngine->SceneViewport.Get(); - } -#if WITH_EDITOR - else - { - UEditorEngine* EditorEngine = CastChecked(GEngine); - FSceneViewport* PIEViewport = (FSceneViewport*)EditorEngine->GetPIEViewport(); - if (PIEViewport != nullptr && PIEViewport->IsStereoRenderingAllowed()) - { - // PIE is setup for stereo rendering - return PIEViewport; - } - else - { - // Check to see if the active editor viewport is drawing in stereo mode - // @todo vreditor: Should work with even non-active viewport! - FSceneViewport* EditorViewport = (FSceneViewport*)EditorEngine->GetActiveViewport(); - if (EditorViewport != nullptr && EditorViewport->IsStereoRenderingAllowed()) - { - return EditorViewport; - } - } - } -#endif - return nullptr; - } - - bool FOculusXRHMD::ShouldDisableHiddenAndVisibileAreaMeshForSpectatorScreen_RenderThread() const - { - CheckInRenderThread(); - - // If you really need the eye corners to look nice, and can't just crop more, - // and are willing to suffer a frametime hit... you could do this: -#if 0 - switch(GetSpectatorScreenMode_RenderThread()) - { - case ESpectatorScreenMode::SingleEyeLetterboxed: - case ESpectatorScreenMode::SingleEyeCroppedToFill: - case ESpectatorScreenMode::TexturePlusEye: - return true; - } -#endif - - return false; - } - - ESpectatorScreenMode FOculusXRHMD::GetSpectatorScreenMode_RenderThread() const - { - CheckInRenderThread(); - return SpectatorScreenController ? SpectatorScreenController->GetSpectatorScreenMode() : ESpectatorScreenMode::Disabled; - } - -#if !UE_BUILD_SHIPPING - static const char* FormatLatencyReading(char* buff, size_t size, float val) - { - if (val < 0.000001f) - { - FCStringAnsi::Strcpy(buff, size, "N/A "); - } - else - { - FCStringAnsi::Snprintf(buff, size, "%4.2fms", val * 1000.0f); - } - return buff; - } - - void FOculusXRHMD::DrawDebug(UCanvas* InCanvas, APlayerController* InPlayerController) - { - CheckInGameThread(); - - if (InCanvas && IsStereoEnabled() && Settings->Flags.bShowStats) - { - static const FColor TextColor(0, 255, 0); - // Pick a larger font on console. - UFont* const Font = FPlatformProperties::SupportsWindowedMode() ? GEngine->GetSmallFont() : GEngine->GetMediumFont(); - const int32 RowHeight = FMath::TruncToInt(Font->GetMaxCharHeight() * 1.1f); - - float ClipX = InCanvas->ClipX; - float ClipY = InCanvas->ClipY; - float LeftPos = 0; - - ClipX -= 100; - LeftPos = ClipX * 0.3f; - float TopPos = ClipY * 0.4f; - - int32 X = (int32)LeftPos; - int32 Y = (int32)TopPos; - - FString Str; - - if (!Settings->Flags.bPixelDensityAdaptive) - { - Str = FString::Printf(TEXT("PD: %.2f"), Settings->PixelDensity); - } - else - { - Str = FString::Printf(TEXT("PD: %.2f [%0.2f, %0.2f]"), Settings->PixelDensity, - Settings->GetPixelDensityMin(), Settings->GetPixelDensityMax()); - } - InCanvas->Canvas->DrawShadowedString(X, Y, *Str, Font, TextColor); - Y += RowHeight; - - Str = FString::Printf(TEXT("W-to-m scale: %.2f uu/m"), GetWorldToMetersScale()); - InCanvas->Canvas->DrawShadowedString(X, Y, *Str, Font, TextColor); - - ovrpAppLatencyTimings AppLatencyTimings; - if (OVRP_SUCCESS(FOculusXRHMDModule::GetPluginWrapper().GetAppLatencyTimings2(&AppLatencyTimings))) - { - Y += RowHeight; - - char buf[5][20]; - char destStr[100]; - - FCStringAnsi::Snprintf(destStr, sizeof(destStr), "Latency, ren: %s tw: %s pp: %s err: %s %s", - FormatLatencyReading(buf[0], sizeof(buf[0]), AppLatencyTimings.LatencyRender), - FormatLatencyReading(buf[1], sizeof(buf[1]), AppLatencyTimings.LatencyTimewarp), - FormatLatencyReading(buf[2], sizeof(buf[2]), AppLatencyTimings.LatencyPostPresent), - FormatLatencyReading(buf[3], sizeof(buf[3]), AppLatencyTimings.ErrorRender), - FormatLatencyReading(buf[4], sizeof(buf[4]), AppLatencyTimings.ErrorTimewarp)); - - Str = ANSI_TO_TCHAR(destStr); - InCanvas->Canvas->DrawShadowedString(X, Y, *Str, Font, TextColor); - } - - // Second row - X = (int32)LeftPos + 200; - Y = (int32)TopPos; - - Str = FString::Printf(TEXT("HQ dist: %s"), (Settings->Flags.bHQDistortion) ? TEXT("ON") : TEXT("OFF")); - InCanvas->Canvas->DrawShadowedString(X, Y, *Str, Font, TextColor); - Y += RowHeight; - - float UserIPD; - if (OVRP_SUCCESS(FOculusXRHMDModule::GetPluginWrapper().GetUserIPD2(&UserIPD))) - { - Str = FString::Printf(TEXT("IPD: %.2f mm"), UserIPD * 1000.f); - InCanvas->Canvas->DrawShadowedString(X, Y, *Str, Font, TextColor); - Y += RowHeight; - } - } - } -#endif // #if !UE_BUILD_SHIPPING - - FOculusXRHMD* FOculusXRHMD::GetOculusXRHMD() - { -#if OCULUS_HMD_SUPPORTED_PLATFORMS - if (GEngine && GEngine->XRSystem.IsValid()) - { - if (GEngine->XRSystem->GetSystemName() == IOculusXRHMDModule::NAME_OculusXRHMD) - { - return static_cast(GEngine->XRSystem.Get()); - } - } -#endif - return nullptr; - } - - bool FOculusXRHMD::IsHMDActive() const - { - return FOculusXRHMDModule::GetPluginWrapper().GetInitialized() != ovrpBool_False; - } - - float FOculusXRHMD::GetWorldToMetersScale() const - { - CheckInGameThread(); - - if (NextFrameToRender.IsValid()) - { - return NextFrameToRender->WorldToMetersScale; - } - - if (GWorld != nullptr) - { -#if WITH_EDITOR - // Workaround to allow WorldToMeters scaling to work correctly for controllers while running inside PIE. - // The main world will most likely not be pointing at the PIE world while polling input, so if we find a world context - // of that type, use that world's WorldToMeters instead. - if (GIsEditor) - { - for (const FWorldContext& Context : GEngine->GetWorldContexts()) - { - if (Context.WorldType == EWorldType::PIE) - { - return Context.World()->GetWorldSettings()->WorldToMeters; - } - } - } -#endif // WITH_EDITOR - - // We're not currently rendering a frame, so just use whatever world to meters the main world is using. - // This can happen when we're polling input in the main engine loop, before ticking any worlds. - return GWorld->GetWorldSettings()->WorldToMeters; - } - - return 100.0f; - } - - FVector FOculusXRHMD::GetNeckPosition(const FQuat& HeadOrientation, const FVector& HeadPosition) - { - CheckInGameThread(); - - FVector NeckPosition = HeadOrientation.Inverse().RotateVector(HeadPosition); - - ovrpVector2f NeckEyeDistance; - if (OVRP_SUCCESS(FOculusXRHMDModule::GetPluginWrapper().GetUserNeckEyeDistance2(&NeckEyeDistance))) - { - const float WorldToMetersScale = GetWorldToMetersScale(); - NeckPosition.X -= NeckEyeDistance.x * WorldToMetersScale; - NeckPosition.Z -= NeckEyeDistance.y * WorldToMetersScale; - } - - return NeckPosition; - } - - void FOculusXRHMD::SetBaseOffsetInMeters(const FVector& BaseOffset) - { - CheckInGameThread(); - - Settings->BaseOffset = BaseOffset; - } - - FVector FOculusXRHMD::GetBaseOffsetInMeters() const - { - CheckInGameThread(); - - return Settings->BaseOffset; - } - - bool FOculusXRHMD::ConvertPose(const ovrpPosef& InPose, FPose& OutPose) const - { - CheckInGameThread(); - - if (!NextFrameToRender.IsValid()) - { - return false; - } - - return ConvertPose_Internal(InPose, OutPose, Settings.Get(), NextFrameToRender->WorldToMetersScale); - } - - bool FOculusXRHMD::ConvertPose(const FPose& InPose, ovrpPosef& OutPose) const - { - CheckInGameThread(); - - if (!NextFrameToRender.IsValid()) - { - return false; - } - - return ConvertPose_Internal(InPose, OutPose, Settings.Get(), NextFrameToRender->WorldToMetersScale); - } - - bool FOculusXRHMD::ConvertPose_RenderThread(const ovrpPosef& InPose, FPose& OutPose) const - { - CheckInRenderThread(); - - if (!Frame_RenderThread.IsValid()) - { - return false; - } - - return ConvertPose_Internal(InPose, OutPose, Settings_RenderThread.Get(), Frame_RenderThread->WorldToMetersScale); - } - - bool FOculusXRHMD::ConvertPose_Internal(const ovrpPosef& InPose, FPose& OutPose, const FSettings* Settings, float WorldToMetersScale) - { - return OculusXRHMD::ConvertPose_Internal(InPose, OutPose, Settings->BaseOrientation, Settings->BaseOffset, WorldToMetersScale); - } - - bool FOculusXRHMD::ConvertPose_Internal(const FPose& InPose, ovrpPosef& OutPose, const FSettings* Settings, float WorldToMetersScale) - { - return OculusXRHMD::ConvertPose_Internal(InPose, OutPose, Settings->BaseOrientation, Settings->BaseOffset, WorldToMetersScale); - } - - FVector FOculusXRHMD::ScaleAndMovePointWithPlayer(ovrpVector3f& OculusXRHMDPoint) - { - CheckInGameThread(); - - FMatrix TranslationMatrix; - TranslationMatrix.SetIdentity(); - TranslationMatrix = TranslationMatrix.ConcatTranslation(LastPlayerLocation); - - FVector ConvertedPoint = ToFVector(OculusXRHMDPoint) * GetWorldToMetersScale(); - FRotator RotateWithPlayer = LastPlayerOrientation.Rotator(); - FVector TransformWithPlayer = RotateWithPlayer.RotateVector(ConvertedPoint); - TransformWithPlayer = FVector(TranslationMatrix.TransformPosition(TransformWithPlayer)); - - if (GetXRCamera(HMDDeviceId)->GetUseImplicitHMDPosition()) - { - FQuat HeadOrientation = FQuat::Identity; - FVector HeadPosition; - GetCurrentPose(HMDDeviceId, HeadOrientation, HeadPosition); - TransformWithPlayer -= RotateWithPlayer.RotateVector(HeadPosition); - } - - return TransformWithPlayer; - } - - ovrpVector3f FOculusXRHMD::WorldLocationToOculusPoint(const FVector& InUnrealPosition) - { - CheckInGameThread(); - FQuat AdjustedPlayerOrientation = GetBaseOrientation().Inverse() * LastPlayerOrientation; - AdjustedPlayerOrientation.Normalize(); - - FVector AdjustedPlayerLocation = LastPlayerLocation; - if (GetXRCamera(HMDDeviceId)->GetUseImplicitHMDPosition()) - { - FQuat HeadOrientation = FQuat::Identity; // Unused - FVector HeadPosition; - GetCurrentPose(HMDDeviceId, HeadOrientation, HeadPosition); - AdjustedPlayerLocation -= LastPlayerOrientation.Inverse().RotateVector(HeadPosition); - } - const FTransform InvWorldTransform = FTransform(AdjustedPlayerOrientation, AdjustedPlayerLocation).Inverse(); - const FVector ConvertedPosition = InvWorldTransform.TransformPosition(InUnrealPosition) / GetWorldToMetersScale(); - - return ToOvrpVector3f(ConvertedPosition); - } - - float FOculusXRHMD::ConvertFloat_M2U(float OculusFloat) const - { - CheckInGameThread(); - - return OculusFloat * GetWorldToMetersScale(); - } - - FVector FOculusXRHMD::ConvertVector_M2U(ovrpVector3f OculusXRHMDPoint) const - { - CheckInGameThread(); - - return ToFVector(OculusXRHMDPoint) * GetWorldToMetersScale(); - } - - bool FOculusXRHMD::GetUserProfile(UserProfile& OutProfile) - { - float UserIPD; - ovrpVector2f UserNeckEyeDistance; - float UserEyeHeight; - - if (FOculusXRHMDModule::GetPluginWrapper().GetInitialized() && OVRP_SUCCESS(FOculusXRHMDModule::GetPluginWrapper().GetUserIPD2(&UserIPD)) && OVRP_SUCCESS(FOculusXRHMDModule::GetPluginWrapper().GetUserNeckEyeDistance2(&UserNeckEyeDistance)) && OVRP_SUCCESS(FOculusXRHMDModule::GetPluginWrapper().GetUserEyeHeight2(&UserEyeHeight))) - { - OutProfile.IPD = UserIPD; - OutProfile.EyeDepth = UserNeckEyeDistance.x; - OutProfile.EyeHeight = UserEyeHeight; - return true; - } - - return false; - } - - float FOculusXRHMD::GetVsyncToNextVsync() const - { - CheckInGameThread(); - - return Settings->VsyncToNextVsync; - } - - FPerformanceStats FOculusXRHMD::GetPerformanceStats() const - { - return PerformanceStats; - } - - void FOculusXRHMD::GetSuggestedCpuAndGpuPerformanceLevels(EOculusXRProcessorPerformanceLevel& CpuPerfLevel, EOculusXRProcessorPerformanceLevel& GpuPerfLevel) - { - CheckInGameThread(); - CpuPerfLevel = Settings->SuggestedCpuPerfLevel; - GpuPerfLevel = Settings->SuggestedGpuPerfLevel; - } - - void FOculusXRHMD::SetSuggestedCpuAndGpuPerformanceLevels(EOculusXRProcessorPerformanceLevel CpuPerfLevel, EOculusXRProcessorPerformanceLevel GpuPerfLevel) - { - CheckInGameThread(); - FOculusXRHMDModule::GetPluginWrapper().SetSuggestedCpuPerformanceLevel((ovrpProcessorPerformanceLevel)CpuPerfLevel); - FOculusXRHMDModule::GetPluginWrapper().SetSuggestedGpuPerformanceLevel((ovrpProcessorPerformanceLevel)GpuPerfLevel); - Settings->SuggestedCpuPerfLevel = CpuPerfLevel; - Settings->SuggestedGpuPerfLevel = GpuPerfLevel; - } - - void FOculusXRHMD::SetFoveatedRenderingMethod(EOculusXRFoveatedRenderingMethod InFoveatedRenderingMethod) - { -#ifdef WITH_OCULUS_BRANCH - Settings->FoveatedRenderingMethod = InFoveatedRenderingMethod; - // Don't switch to eye tracked foveated rendering when it's not supported or permissions are denied - if (InFoveatedRenderingMethod == EOculusXRFoveatedRenderingMethod::EyeTrackedFoveatedRendering && !(bEyeTrackedFoveatedRenderingSupported && CheckEyeTrackingPermission(InFoveatedRenderingMethod))) - { - return; - } -#else - Settings->FoveatedRenderingMethod = EOculusXRFoveatedRenderingMethod::FixedFoveatedRendering; - if (InFoveatedRenderingMethod == EOculusXRFoveatedRenderingMethod::EyeTrackedFoveatedRendering) - { - UE_LOG(LogHMD, Warning, TEXT("Eye Tracked Foveated Rendering is not supported on this engine version, using Fixed Foveated Rendering instead")); - } -#endif // WITH_OCULUS_BRANCH - - FoveatedRenderingMethod = Settings->FoveatedRenderingMethod; - } - - void FOculusXRHMD::SetFoveatedRenderingLevel(EOculusXRFoveatedRenderingLevel InFoveationLevel, bool isDynamic) - { - FoveatedRenderingLevel = Settings->FoveatedRenderingLevel = InFoveationLevel; - bDynamicFoveatedRendering = Settings->bDynamicFoveatedRendering = isDynamic; - } - - void FOculusXRHMD::SetColorScaleAndOffset(FLinearColor ColorScale, FLinearColor ColorOffset, bool bApplyToAllLayers) - { - CheckInGameThread(); - Settings->bApplyColorScaleAndOffsetToAllLayers = bApplyToAllLayers; - Settings->ColorScale = LinearColorToOvrpVector4f(ColorScale); - Settings->ColorOffset = LinearColorToOvrpVector4f(ColorOffset); - } - - void FOculusXRHMD::SetEnvironmentDepthHandRemoval(bool RemoveHands) - { - FOculusXRHMDModule::GetPluginWrapper().SetEnvironmentDepthHandRemoval(RemoveHands); - bEnvironmentDepthHandRemovalEnabled = RemoveHands; - } - - void FOculusXRHMD::StartEnvironmentDepth(int CreateFlags) - { -#if PLATFORM_ANDROID - // Check and request scene permissions (this is needed for environment depth to work) - // bind delegate for handling permission request result - if (!UAndroidPermissionFunctionLibrary::CheckPermission(USE_SCENE_PERMISSION_NAME)) - { - TArray Permissions; - Permissions.Add(USE_SCENE_PERMISSION_NAME); - UAndroidPermissionCallbackProxy* Proxy = UAndroidPermissionFunctionLibrary::AcquirePermissions(Permissions); - static FDelegateHandle DelegateHandle; - DelegateHandle = Proxy->OnPermissionsGrantedDelegate.AddLambda([this, Proxy, CreateFlags](const TArray& Permissions, const TArray& GrantResults) { - int PermIndex = Permissions.Find(USE_SCENE_PERMISSION_NAME); - if (PermIndex != INDEX_NONE && GrantResults[PermIndex]) - { - UE_LOG(LogHMD, Verbose, TEXT("%s permission granted"), *USE_SCENE_PERMISSION_NAME); - StartEnvironmentDepth(CreateFlags); - } - else - { - UE_LOG(LogHMD, Log, TEXT("%s permission denied"), *USE_SCENE_PERMISSION_NAME); - } - Proxy->OnPermissionsGrantedDelegate.Remove(DelegateHandle); - }); - return; - } -#endif // PLATFORM_ANDROID - - ExecuteOnRenderThread_DoNotWait([this, CreateFlags]() { - ovrpEnvironmentDepthTextureDesc DepthTextureDesc; - if (OVRP_SUCCESS(FOculusXRHMDModule::GetPluginWrapper().InitializeEnvironmentDepth(CreateFlags)) && OVRP_SUCCESS(FOculusXRHMDModule::GetPluginWrapper().GetEnvironmentDepthTextureDesc(&DepthTextureDesc))) - { - TArray DepthTextures; - int32 TextureCount; - if (OVRP_SUCCESS(FOculusXRHMDModule::GetPluginWrapper().GetEnvironmentDepthTextureStageCount(&TextureCount))) - { - // We don't really do different depth texture formats right now and it's always a - // single multiview texture, so no need for a separate right eye texture for now. - // We may need a separate Left/RightDepthTextures in the future. - DepthTextures.SetNum(TextureCount); - - for (int32 TextureIndex = 0; TextureIndex < TextureCount; TextureIndex++) - { - if (OVRP_FAILURE(FOculusXRHMDModule::GetPluginWrapper().GetEnvironmentDepthTexture(TextureIndex, ovrpEye_Left, &DepthTextures[TextureIndex]))) - { - UE_LOG(LogHMD, Error, TEXT("Failed to create insight depth texture. NOTE: This causes a leak of %d other texture(s), which will go unused."), TextureIndex); - return; - } - } - - uint32 SizeX = DepthTextureDesc.TextureSize.w; - uint32 SizeY = DepthTextureDesc.TextureSize.h; - EPixelFormat DepthFormat = CustomPresent->GetPixelFormat(DepthTextureDesc.Format); - uint32 NumMips = DepthTextureDesc.MipLevels; - uint32 NumSamples = DepthTextureDesc.SampleCount; - uint32 NumSamplesTileMem = 1; - ETextureCreateFlags DepthTexCreateFlags = TexCreate_ShaderResource | TexCreate_InputAttachmentRead; - FClearValueBinding DepthTextureBinding = FClearValueBinding::DepthFar; - ERHIResourceType ResourceType; - if (DepthTextureDesc.Layout == ovrpLayout_Array) - { - ResourceType = RRT_Texture2DArray; - } - else - { - ResourceType = RRT_Texture2D; - } - - if (CustomPresent) - { - if (!EnvironmentDepthSwapchain.IsEmpty()) - { - EnvironmentDepthSwapchain.Empty(); - } - EnvironmentDepthSwapchain = CustomPresent->CreateSwapChainTextures_RenderThread(SizeX, SizeY, DepthFormat, DepthTextureBinding, NumMips, NumSamples, NumSamplesTileMem, ResourceType, DepthTextures, DepthTexCreateFlags, *FString::Printf(TEXT("Oculus Environment Depth Swapchain"))); - } - - ETextureCreateFlags MinMaxTextureCreateFlags = TexCreate_ShaderResource | TexCreate_RenderTargetable; - FRHITextureCreateDesc MinMaxTextureDesc = FRHITextureCreateDesc::Create(TEXT("EnvironmentDepthMinMaxTexture"), DepthTextureDesc.Layout == ovrpLayout_Array ? ETextureDimension::Texture2DArray : ETextureDimension::Texture2D) - .SetExtent(SizeX, SizeY) - .SetFormat(PF_FloatRGBA) // Note: PF_R16G16B16A16_UNORM would be better from a precision perspective but is less performant. - .SetNumMips(NumMips) - .SetNumSamples(NumSamples) - .SetClearValue(FClearValueBinding::None); - if (DepthTextureDesc.Layout == ovrpLayout_Array) - { - MinMaxTextureDesc.SetArraySize(2); - MinMaxTextureCreateFlags |= TexCreate_TargetArraySlicesIndependently; - } - MinMaxTextureDesc.SetFlags(MinMaxTextureCreateFlags); - EnvironmentDepthMinMaxTexture = RHICreateTexture(MinMaxTextureDesc); - - FOculusXRHMDModule::GetPluginWrapper().SetEnvironmentDepthHandRemoval(bEnvironmentDepthHandRemovalEnabled); - FOculusXRHMDModule::GetPluginWrapper().StartEnvironmentDepth(); - } - } - }); - } - - void FOculusXRHMD::StopEnvironmentDepth() - { - ExecuteOnRenderThread_DoNotWait([this]() { - if (!EnvironmentDepthSwapchain.IsEmpty()) - { - EnvironmentDepthSwapchain.Empty(); - } - if (OVRP_SUCCESS(FOculusXRHMDModule::GetPluginWrapper().StopEnvironmentDepth())) - { - FOculusXRHMDModule::GetPluginWrapper().DestroyEnvironmentDepth(); - } - EnvironmentDepthMinMaxTexture = nullptr; - PrevEnvironmentDepthMinMaxSwapchainIndex = -1; - }); - } - - bool FOculusXRHMD::IsEnvironmentDepthStarted() - { - return !EnvironmentDepthSwapchain.IsEmpty(); - } - - void FOculusXRHMD::EnableHardOcclusions(bool bEnable) - { - if (bEnable) - { - OculusXRTelemetry::TScopedMarker(); - } - bHardOcclusionsEnabled = bEnable; - } - - void FOculusXRHMD::EnableSoftOcclusions(bool bEnable) - { - if (bEnable) - { - OculusXRTelemetry::TScopedMarker(); - } - bSoftOcclusionsEnabled = bEnable; - } - - bool FOculusXRHMD::DoEnableStereo(bool bStereo) - { - CheckInGameThread(); - - FSceneViewport* SceneVP = FindSceneViewport(); - - if (!Settings->Flags.bHMDEnabled || (SceneVP && !SceneVP->IsStereoRenderingAllowed())) - { - bStereo = false; - } - - if (Settings->Flags.bStereoEnabled && bStereo || !Settings->Flags.bStereoEnabled && !bStereo) - { - // already in the desired mode - return Settings->Flags.bStereoEnabled; - } - - TSharedPtr Window; - - if (SceneVP) - { - Window = SceneVP->FindWindow(); - } - - if (!Window.IsValid() || !SceneVP || !SceneVP->GetViewportWidget().IsValid()) - { - // try again next frame - if (bStereo) - { - Flags.bNeedEnableStereo = true; - - // a special case when stereo is enabled while window is not available yet: - // most likely this is happening from BeginPlay. In this case, if frame exists (created in OnBeginPlay) - // then we need init device and populate the initial tracking for head/hand poses. - if (Frame.IsValid()) - { - InitDevice(); - } - } - else - { - Flags.bNeedDisableStereo = true; - } - - return Settings->Flags.bStereoEnabled; - } - - if (OnOculusStateChange(bStereo)) - { - Settings->Flags.bStereoEnabled = bStereo; - - // Uncap fps to enable FPS higher than 62 - GEngine->bForceDisableFrameRateSmoothing = bStereo; - - // Set MirrorWindow state on the Window - Window->SetMirrorWindow(bStereo); - - if (bStereo) - { - // Start frame - StartGameFrame_GameThread(); - StartRenderFrame_GameThread(); - - // Set viewport size to Rift resolution - // NOTE: this can enqueue a render frame right away as a result (calling into FOculusXRHMD::BeginRenderViewFamily) - SceneVP->SetViewportSize(Settings->RenderTargetSize.X, Settings->RenderTargetSize.Y); - - if (Settings->Flags.bPauseRendering) - { - GEngine->SetMaxFPS(10); - } - } - else - { - // Work around an error log that can happen when enabling stereo rendering again - if (NextFrameNumber == WaitFrameNumber) - { - NextFrameNumber++; - } - - if (Settings->Flags.bPauseRendering) - { - GEngine->SetMaxFPS(0); - } - - // Restore viewport size to window size - FVector2D size = Window->GetSizeInScreen(); - SceneVP->SetViewportSize(size.X, size.Y); - Window->SetViewportSizeDrivenByWindow(true); - } - } - - return Settings->Flags.bStereoEnabled; - } - - void FOculusXRHMD::ResetControlRotation() const - { - // Switching back to non-stereo mode: reset player rotation and aim. - // Should we go through all playercontrollers here? - APlayerController* pc = GEngine->GetFirstLocalPlayerController(GWorld); - if (pc) - { - // Reset Aim? @todo - FRotator r = pc->GetControlRotation(); - r.Normalize(); - // Reset roll and pitch of the player - r.Roll = 0; - r.Pitch = 0; - pc->SetControlRotation(r); - } - } - - void FOculusXRHMD::UpdateFoveationOffsets_RenderThread() - { -#ifdef WITH_OCULUS_BRANCH - CheckInRenderThread(); - - SCOPED_NAMED_EVENT(UpdateFoveationOffsets_RenderThread, FColor::Red); - - // Don't execute anything if we're not using Eye Tracked Foveated Rendering (this already takes into account if it's supported or not) - if (!Frame_RenderThread.IsValid() || Frame_RenderThread->FoveatedRenderingMethod != EOculusXRFoveatedRenderingMethod::EyeTrackedFoveatedRendering) - { - return; - } - - const FXRSwapChainPtr& SwapChain = EyeLayer_RenderThread->GetSwapChain(); - if (!SwapChain.IsValid()) - { - return; - } - - const FRHITexture* const SwapChainTexture = SwapChain->GetTexture2DArray() ? SwapChain->GetTexture2DArray() : SwapChain->GetTexture2D(); - if (!SwapChainTexture) - { - return; - } - const FIntPoint SwapChainDimensions = SwapChainTexture->GetSizeXY(); - - // Enqueue the actual update on the RHI thread, which should execute right before the EndRenderPass call - ExecuteOnRHIThread_DoNotWait([this, SwapChainDimensions]() { - SCOPED_NAMED_EVENT(UpdateFoveationEyeTracked_RHIThread, FColor::Red); - - bool bUseOffsets = false; - FIntPoint Offsets[2]; - // Make sure the the Foveated Rendering Method is still eye tracked at RHI thread time before getting offsets. - // If the base setting was changed to fixed, even if the frame's setting is still eye tracked, we should switch to fixed. This - // usually indicates that eye tracking failed on the previous frame, so we don't need to try it again. - if (Frame_RHIThread.IsValid() && Frame_RHIThread->FoveatedRenderingMethod == EOculusXRFoveatedRenderingMethod::EyeTrackedFoveatedRendering && FoveatedRenderingMethod == EOculusXRFoveatedRenderingMethod::EyeTrackedFoveatedRendering) - { - if (OVRP_SUCCESS(FOculusXRHMDModule::GetPluginWrapper().SetFoveationEyeTracked(ovrpBool_True))) - { - ovrpVector2f fovCenter[2]; - ovrpResult Result = FOculusXRHMDModule::GetPluginWrapper().GetFoveationEyeTrackedCenter(fovCenter); - if (OVRP_SUCCESS(Result)) - { - Offsets[0].X = fovCenter[0].x * SwapChainDimensions.X / 2; - Offsets[0].Y = fovCenter[0].y * SwapChainDimensions.Y / 2; - Offsets[1].X = fovCenter[1].x * SwapChainDimensions.X / 2; - Offsets[1].Y = fovCenter[1].y * SwapChainDimensions.Y / 2; - bUseOffsets = true; - } - else if (Result != ovrpFailure_DataIsInvalid) - { - // Fall back to dynamic FFR High if OVRPlugin call actually fails, since we're not expecting GFR to work again. - // Additional rendering changes can be made by binding the changes to OculusEyeTrackingStateChanged - EyeTrackedFoveatedRenderingFallback(); - FOculusEventDelegates::OculusEyeTrackingStateChanged.Broadcast(false); - } - } - } - - if (CustomPresent) - { - CustomPresent->UpdateFoveationOffsets_RHIThread(bUseOffsets, Offsets); - } - }); -#endif // WITH_OCULUS_BRANCH - } - - void FHardOcclusionsPS::ModifyCompilationEnvironment(const FGlobalShaderPermutationParameters& Parameters, FShaderCompilerEnvironment& OutEnvironment) - { - FGlobalShader::ModifyCompilationEnvironment(Parameters, OutEnvironment); - } - - bool FHardOcclusionsPS::ShouldCompilePermutation(const FGlobalShaderPermutationParameters& Parameters) - { - // This file is already guarded with OCULUS_HMD_SUPPORTED_PLATFORMS - return true; - } - - /** Default constructor. */ - FHardOcclusionsPS::FHardOcclusionsPS() {} - - /** Initialization constructor. */ - FHardOcclusionsPS::FHardOcclusionsPS(const ShaderMetaType::CompiledShaderInitializerType& Initializer) - : FGlobalShader(Initializer) - { - EnvironmentDepthTexture.Bind(Initializer.ParameterMap, TEXT("EnvironmentDepthTexture")); - EnvironmentDepthSampler.Bind(Initializer.ParameterMap, TEXT("EnvironmentDepthSampler")); - DepthFactors.Bind(Initializer.ParameterMap, TEXT("DepthFactors")); - ScreenToDepthMatrices.Bind(Initializer.ParameterMap, TEXT("ScreenToDepthMatrices")); - DepthViewId.Bind(Initializer.ParameterMap, TEXT("DepthViewId")); - } - - void FHardOcclusionsPS::SetParameters( - FRHIBatchedShaderParameters& BatchedParameters, - FRHISamplerState* Sampler, - FRHITexture* Texture, - const FVector2f& Factors, - const FMatrix44f ScreenToDepth[ovrpEye_Count], - const int ViewId) - { - SetTextureParameter(BatchedParameters, EnvironmentDepthTexture, EnvironmentDepthSampler, Sampler, Texture); - - SetShaderValue(BatchedParameters, DepthFactors, Factors); - SetShaderValueArray(BatchedParameters, ScreenToDepthMatrices, ScreenToDepth, ovrpEye_Count); - SetShaderValue(BatchedParameters, DepthViewId, ViewId); - } - - IMPLEMENT_SHADER_TYPE(, FHardOcclusionsPS, TEXT("/Plugin/OculusXR/Private/HardOcclusions.usf"), TEXT("HardOcclusionsPS"), SF_Pixel); - - FMatrix44f MakeProjectionMatrix(ovrpFovf cameraFovAngles) - { - const float tanAngleWidth = cameraFovAngles.RightTan + cameraFovAngles.LeftTan; - const float tanAngleHeight = cameraFovAngles.UpTan + cameraFovAngles.DownTan; - - FMatrix44f Matrix = FMatrix44f::Identity; - - // Scale - Matrix.M[0][0] = 1.0f / tanAngleWidth; - Matrix.M[1][1] = 1.0f / tanAngleHeight; - - // Offset - Matrix.M[0][3] = cameraFovAngles.LeftTan / tanAngleWidth; - Matrix.M[1][3] = cameraFovAngles.DownTan / tanAngleHeight; - Matrix.M[2][3] = -1.0f; - - return Matrix; - } - - FMatrix44f MakeUnprojectionMatrix(ovrpFovf cameraFovAngles) - { - FMatrix44f Matrix = FMatrix44f::Identity; - - // Scale - Matrix.M[0][0] = cameraFovAngles.RightTan + cameraFovAngles.LeftTan; - Matrix.M[1][1] = cameraFovAngles.UpTan + cameraFovAngles.DownTan; - - // Offset - Matrix.M[0][3] = -cameraFovAngles.LeftTan; - Matrix.M[1][3] = -cameraFovAngles.DownTan; - Matrix.M[2][3] = 1.0; - - return Matrix; - } - - bool FOculusXRHMD::ComputeEnvironmentDepthParameters_RenderThread(FVector2f& DepthFactors, FMatrix44f ScreenToDepth[ovrpEye_Count], FMatrix44f DepthViewProj[ovrpEye_Count], int& SwapchainIndex) - { - // NOTE: We should *NOT* use Frame_RenderThread->WorldToMetersScale here! - // GNearClippingPlane is always expressed in cm regardless of the WorldToMetersScale setting when using `FOculusXRHMD`. - // This is not true when using OpenXR Native, so the code in FEnvironmentDepthExtensionPlugin::ComputeEnvironmentDepthParameters_RenderThread - // is different. - float ScreenNearZ = GNearClippingPlane / 100.f; - ovrpFovf* ScreenFov = Frame_RenderThread->SymmetricFov; - - ovrpEnvironmentDepthFrameDesc DepthFrameDesc[ovrpEye_Count]; - if (FOculusXRHMDModule::GetPluginWrapper().GetEnvironmentDepthFrameDesc(ovrpEye_Left, &DepthFrameDesc[0]) != ovrpSuccess || !DepthFrameDesc[0].IsValid) - { - return false; - } - if (FOculusXRHMDModule::GetPluginWrapper().GetEnvironmentDepthFrameDesc(ovrpEye_Right, &DepthFrameDesc[1]) != ovrpSuccess || !DepthFrameDesc[1].IsValid) - { - return false; - } - - SwapchainIndex = DepthFrameDesc[0].SwapchainIndex; - const float WorldToMetersScale = Frame_RenderThread->WorldToMetersScale; - const auto InverseBaseOrientation = Settings_RenderThread->BaseOrientation.Inverse(); - - if (DepthViewProj != nullptr) - { - for (int i = 0; i < ovrpEye_Count; ++i) - { - ovrpFrustum2f DepthFrustum; - DepthFrustum.Fov = DepthFrameDesc[i].Fov; - DepthFrustum.zNear = DepthFrameDesc[i].NearZ * WorldToMetersScale; - DepthFrustum.zFar = DepthFrameDesc[i].FarZ * WorldToMetersScale; - FMatrix DepthProjectionMatrix = ToFMatrix(ovrpMatrix4f_Projection(DepthFrustum, true)); - - auto DepthOrientation = Frame_RenderThread->TrackingToWorld.GetRotation() * InverseBaseOrientation * ToFQuat(DepthFrameDesc[i].CreatePose.Orientation); - - // NOTE: This matrix is the same as applied in SetupViewFrustum in SceneView.cpp - auto ViewMatrix = DepthOrientation.Inverse().ToMatrix() * FMatrix(FPlane(0, 0, 1, 0), FPlane(1, 0, 0, 0), FPlane(0, 1, 0, 0), FPlane(0, 0, 0, 1)); - - ovrpPoseStatef EyePoseState; - if (OVRP_SUCCESS(FOculusXRHMDModule::GetPluginWrapper().GetNodePoseState3(ovrpStep_Render, Frame_RenderThread->FrameNumber, (ovrpNode)i, &EyePoseState))) - { - auto DepthTranslation = ToFVector(DepthFrameDesc[i].CreatePose.Position) * WorldToMetersScale; - auto EyePos = ToFVector(EyePoseState.Pose.Position) * WorldToMetersScale; - auto Delta = EyePos - DepthTranslation; - - // NOTE: The view matrix here is relative to the VR camera, this is necessary to support - // Large Worlds and avoid rounding errors when getting very far away from the origin - ViewMatrix = ViewMatrix.ConcatTranslation(ViewMatrix.TransformPosition(Delta)); - } - - DepthViewProj[i] = (FMatrix44f)(ViewMatrix * DepthProjectionMatrix); - } - } - - // Assume NearZ and FarZ are the same for left and right eyes - float DepthNearZ = DepthFrameDesc[ovrpEye_Left].NearZ; - float DepthFarZ = DepthFrameDesc[ovrpEye_Left].FarZ; - - float Scale; - float Offset; - - if (DepthFarZ < DepthNearZ || (!FGenericPlatformMath::IsFinite(DepthFarZ))) - { - // Inf far plane: - Scale = DepthNearZ; - Offset = 0.0f; - } - else - { - // Finite far plane: - Scale = (DepthFarZ * DepthNearZ) / (DepthFarZ - DepthNearZ); - Offset = DepthNearZ / (DepthFarZ - DepthNearZ); - } - - DepthFactors.X = -ScreenNearZ / Scale; - DepthFactors.Y = (Offset + 1.0f) * ScreenNearZ / Scale; - - // The pose extrapolated to the predicted display time of the current frame - FQuat ScreenOrientation = Frame_RenderThread->HeadOrientation; - - for (int i = 0; i < ovrpEye_Count; ++i) - { - // Screen To Depth represents the transformation matrix used to map normalised screen UV coordinates to - // normalised environment depth texture UV coordinates. This needs to account for 2 things: - // 1. The field of view of the two textures may be different, Unreal typically renders using a symmetric fov. - // That is to say the FOV of the left and right eyes is the same. The environment depth on the other hand - // has a different FOV for the left and right eyes. So we need to scale and offset accordingly to account - // for this difference. - auto T_ScreenCamera_ScreenNormCoord = MakeUnprojectionMatrix(ScreenFov[i]); - auto T_DepthNormCoord_DepthCamera = MakeProjectionMatrix(DepthFrameDesc[i].Fov); - - // 2. The headset may have moved in between capturing the environment depth and rendering the frame. We - // can only account for rotation of the headset, not translation. - auto DepthOrientation = InverseBaseOrientation * ToFQuat(DepthFrameDesc[i].CreatePose.Orientation); - if (!DepthOrientation.IsNormalized()) - { - UE_LOG(LogHMD, Error, TEXT("DepthOrientation is not normalized %f %f %f %f"), DepthOrientation.X, DepthOrientation.Y, DepthOrientation.Z, DepthOrientation.W); - DepthOrientation.Normalize(); - } - auto ScreenToDepthQuat = ScreenOrientation.Inverse() * DepthOrientation; - - FMatrix44f R_DepthCamera_ScreenCamera = FQuat4f(ScreenToDepthQuat.Y, ScreenToDepthQuat.Z, ScreenToDepthQuat.X, ScreenToDepthQuat.W).GetNormalized().ToMatrix(); - - ScreenToDepth[i] = T_DepthNormCoord_DepthCamera * R_DepthCamera_ScreenCamera * T_ScreenCamera_ScreenNormCoord; - } - return true; - } - - FSettingsPtr FOculusXRHMD::CreateNewSettings() const - { - FSettingsPtr Result(MakeShareable(new FSettings())); - return Result; - } - - FGameFramePtr FOculusXRHMD::CreateNewGameFrame() const - { - FGameFramePtr Result(MakeShareable(new FGameFrame())); - Result->FrameNumber = NextFrameNumber; - Result->WindowSize = CachedWindowSize; - Result->WorldToMetersScale = CachedWorldToMetersScale; - Result->NearClippingPlane = GNearClippingPlane; - // Allow CVars to override the app's foveated rendering settings (set -1 to restore app's setting) - Result->FoveatedRenderingMethod = CVarOculusFoveatedRenderingMethod.GetValueOnAnyThread() >= 0 ? (EOculusXRFoveatedRenderingMethod)CVarOculusFoveatedRenderingMethod.GetValueOnAnyThread() : FoveatedRenderingMethod.load(); - Result->FoveatedRenderingLevel = CVarOculusFoveatedRenderingLevel.GetValueOnAnyThread() >= 0 ? (EOculusXRFoveatedRenderingLevel)CVarOculusFoveatedRenderingLevel.GetValueOnAnyThread() : FoveatedRenderingLevel.load(); - Result->bDynamicFoveatedRendering = CVarOculusDynamicFoveatedRendering.GetValueOnAnyThread() >= 0 ? (bool)CVarOculusDynamicFoveatedRendering.GetValueOnAnyThread() : bDynamicFoveatedRendering.load(); - Result->Flags.bSplashIsShown = Splash->IsShown(); - return Result; - } - - void FOculusXRHMD::StartGameFrame_GameThread() - { - CheckInGameThread(); - check(Settings.IsValid()); - - // bShouldWait_GameThread is to prevent to WaitToBeginFrame() twice back-two-back (for two frames) which will further fall into a deadlock. - if (!bShouldWait_GameThread) - { - return; - } - - if (!Frame.IsValid()) - { - Splash->UpdateLoadingScreen_GameThread(); // the result of this is used in CreateGameFrame to know if Frame is a "real" one or a "splash" one. - if (Settings->Flags.bHMDEnabled) - { - Frame = CreateNewGameFrame(); - NextFrameToRender = Frame; - - UE_LOG(LogHMD, VeryVerbose, TEXT("StartGameFrame %u"), Frame->FrameNumber); - - if (!Splash->IsShown()) - { - FThreadIdleStats::FScopeIdle Scope; - - if (FOculusXRHMDModule::GetPluginWrapper().GetInitialized() && WaitFrameNumber != Frame->FrameNumber) - { - SCOPED_NAMED_EVENT(WaitFrame, FColor::Red); - - UE_LOG(LogHMD, Verbose, TEXT("FOculusXRHMDModule::GetPluginWrapper().WaitToBeginFrame %u"), Frame->FrameNumber); - - ovrpResult Result; - if (OVRP_FAILURE(Result = FOculusXRHMDModule::GetPluginWrapper().WaitToBeginFrame(Frame->FrameNumber))) - { - UE_LOG(LogHMD, Error, TEXT("FOculusXRHMDModule::GetPluginWrapper().WaitToBeginFrame %u failed (%d)"), Frame->FrameNumber, Result); - } - else - { - WaitFrameNumber = Frame->FrameNumber; - bShouldWait_GameThread = false; - } - } - - FOculusXRHMDModule::GetPluginWrapper().Update3(ovrpStep_Render, Frame->FrameNumber, 0.0); - } - } - - UpdateStereoRenderingParams(); - } - } - - void FOculusXRHMD::FinishGameFrame_GameThread() - { - CheckInGameThread(); - - if (Frame.IsValid()) - { - UE_LOG(LogHMD, VeryVerbose, TEXT("FinishGameFrame %u"), Frame->FrameNumber); - } - - Frame.Reset(); - } - - void FOculusXRHMD::StartRenderFrame_GameThread() - { - CheckInGameThread(); - - if (NextFrameToRender.IsValid() && NextFrameToRender != LastFrameToRender) - { - UE_LOG(LogHMD, VeryVerbose, TEXT("StartRenderFrame %u"), NextFrameToRender->FrameNumber); - - LastFrameToRender = NextFrameToRender; - NextFrameToRender->Flags.bSplashIsShown = Splash->IsShown(); - - ovrpXrApi NativeXrApi; - FOculusXRHMDModule::GetPluginWrapper().GetNativeXrApiType(&NativeXrApi); - if ((NextFrameToRender->ShowFlags.Rendering || NativeXrApi == ovrpXrApi_OpenXR) && !NextFrameToRender->Flags.bSplashIsShown) - { - NextFrameNumber++; - } - - FSettingsPtr XSettings = Settings->Clone(); - FGameFramePtr XFrame = NextFrameToRender->Clone(); - TArray XLayers; - - XLayers.Empty(LayerMap.Num()); - - for (auto Pair : LayerMap) - { - XLayers.Emplace(Pair.Value->Clone()); - } - - XLayers.Sort(FLayerPtr_CompareId()); - - ExecuteOnRenderThread_DoNotWait([this, XSettings, XFrame, XLayers](FRHICommandListImmediate& RHICmdList) { - if (XFrame.IsValid()) - { - Settings_RenderThread = XSettings; - Frame_RenderThread = XFrame; - - int32 XLayerIndex = 0; - int32 LayerIndex_RenderThread = 0; - TArray ValidXLayers; - - while (XLayerIndex < XLayers.Num() && LayerIndex_RenderThread < Layers_RenderThread.Num()) - { - uint32 LayerIdA = XLayers[XLayerIndex]->GetId(); - uint32 LayerIdB = Layers_RenderThread[LayerIndex_RenderThread]->GetId(); - - if (LayerIdA < LayerIdB) - { - if (XLayers[XLayerIndex]->Initialize_RenderThread(Settings_RenderThread.Get(), CustomPresent, &DeferredDeletion, RHICmdList)) - { - ValidXLayers.Add(XLayers[XLayerIndex]); - } - XLayerIndex++; - } - else if (LayerIdA > LayerIdB) - { - DeferredDeletion.AddLayerToDeferredDeletionQueue(Layers_RenderThread[LayerIndex_RenderThread++]); - } - else - { - if (XLayers[XLayerIndex]->Initialize_RenderThread(Settings_RenderThread.Get(), CustomPresent, &DeferredDeletion, RHICmdList, Layers_RenderThread[LayerIndex_RenderThread].Get())) - { - LayerIndex_RenderThread++; - ValidXLayers.Add(XLayers[XLayerIndex]); - } - XLayerIndex++; - } - } - - while (XLayerIndex < XLayers.Num()) - { - if (XLayers[XLayerIndex]->Initialize_RenderThread(Settings_RenderThread.Get(), CustomPresent, &DeferredDeletion, RHICmdList)) - { - ValidXLayers.Add(XLayers[XLayerIndex]); - } - XLayerIndex++; - } - - while (LayerIndex_RenderThread < Layers_RenderThread.Num()) - { - DeferredDeletion.AddLayerToDeferredDeletionQueue(Layers_RenderThread[LayerIndex_RenderThread++]); - } - - Layers_RenderThread = ValidXLayers; - - DeferredDeletion.HandleLayerDeferredDeletionQueue_RenderThread(); - } - }); - } - } - - void FOculusXRHMD::FinishRenderFrame_RenderThread(FRDGBuilder& GraphBuilder) - { - CheckInRenderThread(); - - // bIsRendering_RenderThread is to keep Frame_RenderThread alive if we haven't started to use it to render yet! - if (!bIsRendering_RenderThread) - { - return; - } - - if (Frame_RenderThread.IsValid()) - { - UE_LOG(LogHMD, VeryVerbose, TEXT("FinishRenderFrame %u"), Frame_RenderThread->FrameNumber); - - AddPass(GraphBuilder, RDG_EVENT_NAME("FinishRenderFrame"), [this](FRHICommandListImmediate& RHICmdList) { - if (Frame_RenderThread->ShowFlags.Rendering) - { - for (int32 LayerIndex = 0; LayerIndex < Layers_RenderThread.Num(); LayerIndex++) - { - Layers_RenderThread[LayerIndex]->UpdateTexture_RenderThread(Settings_RenderThread.Get(), CustomPresent, RHICmdList); - Layers_RenderThread[LayerIndex]->UpdatePassthrough_RenderThread(CustomPresent, RHICmdList, Frame_RenderThread.Get()); - } - } - Frame_RenderThread.Reset(); - }); - } - - bIsRendering_RenderThread = false; - } - - void FOculusXRHMD::StartRHIFrame_RenderThread() - { - CheckInRenderThread(); - - if (Frame_RenderThread.IsValid()) - { - UE_LOG(LogHMD, VeryVerbose, TEXT("StartRHIFrame %u"), Frame_RenderThread->FrameNumber); - - FSettingsPtr XSettings = Settings_RenderThread->Clone(); - FGameFramePtr XFrame = Frame_RenderThread->Clone(); - TArray XLayers = Layers_RenderThread; - - for (int32 XLayerIndex = 0; XLayerIndex < XLayers.Num(); XLayerIndex++) - { - XLayers[XLayerIndex] = XLayers[XLayerIndex]->Clone(); - } - - ExecuteOnRHIThread_DoNotWait([this, XSettings, XFrame, XLayers]() { - if (XFrame.IsValid()) - { - Settings_RHIThread = XSettings; - Frame_RHIThread = XFrame; - Layers_RHIThread = XLayers; - - ovrpXrApi NativeXrApi; - FOculusXRHMDModule::GetPluginWrapper().GetNativeXrApiType(&NativeXrApi); - if ((Frame_RHIThread->ShowFlags.Rendering || NativeXrApi == ovrpXrApi_OpenXR) && !Frame_RHIThread->Flags.bSplashIsShown) - { - SCOPED_NAMED_EVENT(BeginFrame, FColor::Red); - - UE_LOG(LogHMD, Verbose, TEXT("FOculusXRHMDModule::GetPluginWrapper().BeginFrame4 %u"), Frame_RHIThread->FrameNumber); - - ovrpResult Result; - if (OVRP_FAILURE(Result = FOculusXRHMDModule::GetPluginWrapper().BeginFrame4(Frame_RHIThread->FrameNumber, CustomPresent->GetOvrpCommandQueue()))) - { - UE_LOG(LogHMD, Error, TEXT("FOculusXRHMDModule::GetPluginWrapper().BeginFrame4 %u failed (%d)"), Frame_RHIThread->FrameNumber, Result); - Frame_RHIThread->ShowFlags.Rendering = false; - } - else - { -#if PLATFORM_ANDROID - FOculusXRHMDModule::GetPluginWrapper().SetTiledMultiResLevel((ovrpTiledMultiResLevel)Frame_RHIThread->FoveatedRenderingLevel); - FOculusXRHMDModule::GetPluginWrapper().SetTiledMultiResDynamic(Frame_RHIThread->bDynamicFoveatedRendering ? ovrpBool_True : ovrpBool_False); -#ifdef WITH_OCULUS_BRANCH - // If we're using eye tracked foveated rendering, set that at the end of the render pass instead (through UpdateFoveationOffsets_RenderThread) - if (Frame_RHIThread->FoveatedRenderingMethod != EOculusXRFoveatedRenderingMethod::EyeTrackedFoveatedRendering) - { - FOculusXRHMDModule::GetPluginWrapper().SetFoveationEyeTracked(ovrpBool_False); - // Need to also not use offsets when turning off eye tracked foveated rendering - if (CustomPresent) - { - CustomPresent->UpdateFoveationOffsets_RHIThread(false, nullptr); - } - } -#endif // WITH_OCULUS_BRANCH -#endif // PLATFORM_ANDROID - } - } - } - }); - - bIsRendering_RenderThread = true; - } - } - - void FOculusXRHMD::FinishRHIFrame_RHIThread() - { - CheckInRHIThread(); - - if (Frame_RHIThread.IsValid()) - { - UE_LOG(LogHMD, VeryVerbose, TEXT("FinishRHIFrame %u"), Frame_RHIThread->FrameNumber); - - ovrpXrApi NativeXrApi; - FOculusXRHMDModule::GetPluginWrapper().GetNativeXrApiType(&NativeXrApi); - if ((Frame_RHIThread->ShowFlags.Rendering || NativeXrApi == ovrpXrApi_OpenXR) && !Frame_RHIThread->Flags.bSplashIsShown) - { - SCOPED_NAMED_EVENT(EndFrame, FColor::Red); - - TArray Layers = Layers_RHIThread; - Layers.Sort(FLayerPtr_CompareTotal()); - TArray LayerSubmitPtr; - - int32 LayerNum = Layers.Num(); - - LayerSubmitPtr.SetNum(LayerNum); - - int32 FinalLayerNumber = 0; - for (int32 LayerIndex = 0; LayerIndex < LayerNum; LayerIndex++) - { - if (Layers[LayerIndex]->IsVisible()) - { - LayerSubmitPtr[FinalLayerNumber++] = Layers[LayerIndex]->UpdateLayer_RHIThread(Settings_RHIThread.Get(), Frame_RHIThread.Get(), LayerIndex); - } - } - - UE_LOG(LogHMD, Verbose, TEXT("FOculusXRHMDModule::GetPluginWrapper().EndFrame4 %u"), Frame_RHIThread->FrameNumber); - FOculusXRHMDModule::GetPluginWrapper().SetEyeFovPremultipliedAlphaMode(false); - - ovrpResult Result; - if (OVRP_FAILURE(Result = FOculusXRHMDModule::GetPluginWrapper().EndFrame4(Frame_RHIThread->FrameNumber, LayerSubmitPtr.GetData(), FinalLayerNumber, CustomPresent->GetOvrpCommandQueue()))) - { - UE_LOG(LogHMD, Error, TEXT("FOculusXRHMDModule::GetPluginWrapper().EndFrame4 %u failed (%d)"), Frame_RHIThread->FrameNumber, Result); - } - else - { - for (int32 LayerIndex = 0; LayerIndex < Layers.Num(); LayerIndex++) - { - Layers[LayerIndex]->IncrementSwapChainIndex_RHIThread(CustomPresent); - } - } - } - } - - Frame_RHIThread.Reset(); - } - - void FOculusXRHMD::AddEventPollingDelegate(const FOculusXRHMDEventPollingDelegate& NewDelegate) - { - EventPollingDelegates.Add(NewDelegate); - } - - /// @cond DOXYGEN_WARNINGS - -#define BOOLEAN_COMMAND_HANDLER_BODY(ConsoleName, FieldExpr) \ - do \ - { \ - if (Args.Num()) \ - { \ - if (Args[0].Equals(TEXT("toggle"), ESearchCase::IgnoreCase)) \ - { \ - (FieldExpr) = !(FieldExpr); \ - } \ - else \ - { \ - (FieldExpr) = FCString::ToBool(*Args[0]); \ - } \ - } \ - Ar.Logf(ConsoleName TEXT(" = %s"), (FieldExpr) ? TEXT("On") : TEXT("Off")); \ - } \ - while (false) - - void FOculusXRHMD::UpdateOnRenderThreadCommandHandler(const TArray& Args, UWorld* World, FOutputDevice& Ar) - { - CheckInGameThread(); - - BOOLEAN_COMMAND_HANDLER_BODY(TEXT("vr.oculus.bUpdateOnRenderThread"), Settings->Flags.bUpdateOnRT); - } - - void FOculusXRHMD::HQBufferCommandHandler(const TArray& Args, UWorld*, FOutputDevice& Ar) - { - CheckInGameThread(); - - BOOLEAN_COMMAND_HANDLER_BODY(TEXT("vr.oculus.bHQBuffer"), Settings->Flags.bHQBuffer); - } - - void FOculusXRHMD::HQDistortionCommandHandler(const TArray& Args, UWorld*, FOutputDevice& Ar) - { - CheckInGameThread(); - - BOOLEAN_COMMAND_HANDLER_BODY(TEXT("vr.oculus.bHQDistortion"), Settings->Flags.bHQDistortion); - } - - void FOculusXRHMD::ShowGlobalMenuCommandHandler(const TArray& Args, UWorld* World, FOutputDevice& Ar) - { - CheckInGameThread(); - - if (OVRP_FAILURE(FOculusXRHMDModule::GetPluginWrapper().ShowSystemUI2(ovrpUI::ovrpUI_GlobalMenu))) - { - Ar.Logf(TEXT("Could not show platform menu")); - } - } - - void FOculusXRHMD::ShowQuitMenuCommandHandler(const TArray& Args, UWorld* World, FOutputDevice& Ar) - { - CheckInGameThread(); - - if (OVRP_FAILURE(FOculusXRHMDModule::GetPluginWrapper().ShowSystemUI2(ovrpUI::ovrpUI_ConfirmQuit))) - { - Ar.Logf(TEXT("Could not show platform menu")); - } - } - -#if !UE_BUILD_SHIPPING - void FOculusXRHMD::StatsCommandHandler(const TArray& Args, UWorld*, FOutputDevice& Ar) - { - CheckInGameThread(); - - BOOLEAN_COMMAND_HANDLER_BODY(TEXT("vr.oculus.Debug.bShowStats"), Settings->Flags.bShowStats); - } - - void FOculusXRHMD::ShowSettingsCommandHandler(const TArray& Args, UWorld* World, FOutputDevice& Ar) - { - Ar.Logf(TEXT("stereo ipd=%.4f\n nearPlane=%.4f"), GetInterpupillaryDistance(), GNearClippingPlane); - } - - void FOculusXRHMD::IPDCommandHandler(const TArray& Args, UWorld* World, FOutputDevice& Ar) - { - if (Args.Num() > 0) - { - SetInterpupillaryDistance(FCString::Atof(*Args[0])); - } - Ar.Logf(TEXT("vr.oculus.Debug.IPD = %f"), GetInterpupillaryDistance()); - } - -#endif // !UE_BUILD_SHIPPING - - void FOculusXRHMD::LoadFromSettings() - { - UOculusXRHMDRuntimeSettings* HMDSettings = GetMutableDefault(); - check(HMDSettings); - - Settings->Flags.bSupportsDash = HMDSettings->bSupportsDash; -#if PLATFORM_ANDROID - Settings->Flags.bCompositeDepth = HMDSettings->bCompositeDepthMobile; -#else - Settings->Flags.bCompositeDepth = HMDSettings->bCompositesDepth; -#endif - Settings->Flags.bHQDistortion = HMDSettings->bHQDistortion; - Settings->Flags.bInsightPassthroughEnabled = HMDSettings->bInsightPassthroughEnabled; -#ifdef WITH_OCULUS_BRANCH - Settings->Flags.bPixelDensityAdaptive = HMDSettings->bDynamicResolution; -#endif - Settings->SuggestedCpuPerfLevel = HMDSettings->SuggestedCpuPerfLevel; - Settings->SuggestedGpuPerfLevel = HMDSettings->SuggestedGpuPerfLevel; - Settings->FoveatedRenderingMethod = HMDSettings->FoveatedRenderingMethod; - Settings->FoveatedRenderingLevel = HMDSettings->FoveatedRenderingLevel; - Settings->bDynamicFoveatedRendering = HMDSettings->bDynamicFoveatedRendering; - Settings->ColorSpace = HMDSettings->ColorSpace; - Settings->ControllerPoseAlignment = HMDSettings->ControllerPoseAlignment; - Settings->bLateLatching = HMDSettings->bLateLatching; - Settings->XrApi = HMDSettings->XrApi; - Settings->bSupportExperimentalFeatures = HMDSettings->bSupportExperimentalFeatures; - Settings->bSupportEyeTrackedFoveatedRendering = HMDSettings->bSupportEyeTrackedFoveatedRendering; - Settings->SystemSplashBackground = HMDSettings->SystemSplashBackground; - - Settings->BodyTrackingFidelity = HMDSettings->BodyTrackingFidelity; - Settings->BodyTrackingJointSet = HMDSettings->BodyTrackingJointSet; - - Settings->FaceTrackingDataSource.Empty(ovrpFaceConstants_FaceTrackingDataSourcesCount); - Settings->FaceTrackingDataSource.Append(HMDSettings->FaceTrackingDataSource); - Settings->bFaceTrackingVisemesEnabled = HMDSettings->bFaceTrackingVisemesEnabled; - } - void FOculusXRHMD::LogEnabledFeatures() const - { -#ifdef WITH_OCULUS_BRANCH - UE_LOG(LogHMD, Log, TEXT("LateLatching: %s"), LateLatchingEnabled() ? TEXT("Enabled") : TEXT("Disabled")); - UE_LOG(LogHMD, Log, TEXT("EmulatedUniformBuffers: %s"), IsUsingEmulatedUniformBuffers(Settings->CurrentShaderPlatform) ? TEXT("Enabled") : TEXT("Disabled")); -#endif // WITH_OCULUS_BRANCH - UE_LOG(LogHMD, Log, TEXT("DynamicResolution: %s. PixelDensityMin: %f, PixelDensityMax: %f"), - Settings->bDynamicFoveatedRendering ? TEXT("Enabled") : TEXT("Disabled"), - Settings->GetPixelDensityMin(), - - Settings->GetPixelDensityMax()); - } - /// @endcond - -} // namespace OculusXRHMD - -#endif // OCULUS_HMD_SUPPORTED_PLATFORMS diff --git a/Plugins/MetaXR/Source/OculusXRHMD/Private/OculusXRHMD.h b/Plugins/MetaXR/Source/OculusXRHMD/Private/OculusXRHMD.h deleted file mode 100644 index 2b49a5f..0000000 --- a/Plugins/MetaXR/Source/OculusXRHMD/Private/OculusXRHMD.h +++ /dev/null @@ -1,734 +0,0 @@ -// @lint-ignore-every LICENSELINT -// Copyright Epic Games, Inc. All Rights Reserved. - -#pragma once -#include "OculusXRHMDModule.h" - -#if OCULUS_HMD_SUPPORTED_PLATFORMS -#include "OculusXRHMD_Settings.h" -#include "OculusXRHMD_GameFrame.h" -#include "OculusXRHMD_CustomPresent.h" -#include "OculusXRHMD_Layer.h" -#include "OculusXRHMD_Splash.h" -#include "OculusXRHMD_StressTester.h" -#include "OculusXRHMD_ConsoleCommands.h" -#include "OculusXRHMD_SpectatorScreenController.h" -#include "OculusXRHMD_DynamicResolutionState.h" -#include "OculusXRHMD_DeferredDeletionQueue.h" - -#include "OculusXRAssetManager.h" - -#include "HeadMountedDisplayBase.h" -#include "HeadMountedDisplay.h" -#include "XRRenderTargetManager.h" -#include "XRRenderBridge.h" -#include "IStereoLayers.h" -#include "Stats/Stats.h" -#include "SceneViewExtension.h" -#include "Engine/Engine.h" -#include "Engine/StaticMeshActor.h" -#include "XRThreadUtils.h" -#include "ProceduralMeshComponent.h" -#include "Shader.h" -#include "GlobalShader.h" -#include "Misc/EngineVersionComparison.h" -#include "OculusXRHMD_FoveatedRendering.h" - -namespace OculusXRHMD -{ - class FHardOcclusionsPS : public FGlobalShader - { - DECLARE_SHADER_TYPE(FHardOcclusionsPS, Global); - - static void ModifyCompilationEnvironment(const FGlobalShaderPermutationParameters& Parameters, FShaderCompilerEnvironment& OutEnvironment); - - static bool ShouldCompilePermutation(const FGlobalShaderPermutationParameters& Parameters); - - /** Default constructor. */ - FHardOcclusionsPS(); - - /** Initialization constructor. */ - FHardOcclusionsPS(const ShaderMetaType::CompiledShaderInitializerType& Initializer); - - void SetParameters( - FRHIBatchedShaderParameters& BatchedParameters, - FRHISamplerState* Sampler, - FRHITexture* Texture, - const FVector2f& Factors, - const FMatrix44f ScreenToDepth[ovrpEye_Count], - const int ViewId); - - private: - LAYOUT_FIELD(FShaderResourceParameter, EnvironmentDepthTexture); - LAYOUT_FIELD(FShaderResourceParameter, EnvironmentDepthSampler); - LAYOUT_FIELD(FShaderParameter, DepthFactors); - LAYOUT_FIELD(FShaderParameter, ScreenToDepthMatrices); - LAYOUT_FIELD(FShaderParameter, DepthViewId); - }; - - /** - * A pixel shader for rendering occlusions, this is the min/max preprocessing step. - */ - template - class FScreenPSEnvironmentDepthMinMax : public FGlobalShader - { - DECLARE_SHADER_TYPE(FScreenPSEnvironmentDepthMinMax, Global); - - public: - static bool ShouldCompilePermutation(const FGlobalShaderPermutationParameters& Parameters) - { - return !bEnableMultiView || Parameters.Platform == SP_VULKAN_ES3_1_ANDROID || Parameters.Platform == SP_VULKAN_SM5; - } - - static void ModifyCompilationEnvironment(const FPermutationParameters& Parameters, FShaderCompilerEnvironment& OutEnvironment) - { - OutEnvironment.SetDefine(TEXT("ENABLE_MULTI_VIEW"), bEnableMultiView ? 1 : 0); - } - - FScreenPSEnvironmentDepthMinMax(const ShaderMetaType::CompiledShaderInitializerType& Initializer) - : FGlobalShader(Initializer) - { - InTexture.Bind(Initializer.ParameterMap, TEXT("InTexture"), SPF_Mandatory); - InTextureSampler.Bind(Initializer.ParameterMap, TEXT("InTextureSampler")); - if (!bEnableMultiView) - { - InArraySliceParameter.Bind(Initializer.ParameterMap, TEXT("ArraySlice")); - } - } - - FScreenPSEnvironmentDepthMinMax() {} - - void SetParameters(FRHIBatchedShaderParameters& BatchedParameters, FRHISamplerState* SamplerStateRHI, FRHITexture* TextureRHI, int ArraySlice) - { - SetTextureParameter(BatchedParameters, InTexture, InTextureSampler, SamplerStateRHI, TextureRHI); - if (!bEnableMultiView) - { - SetShaderValue(BatchedParameters, InArraySliceParameter, ArraySlice); - } - } - - private: - LAYOUT_FIELD(FShaderResourceParameter, InTexture); - LAYOUT_FIELD(FShaderResourceParameter, InTextureSampler); - LAYOUT_FIELD(FShaderParameter, InArraySliceParameter); - }; - - DECLARE_DELEGATE_TwoParams(FOculusXRHMDEventPollingDelegate, ovrpEventDataBuffer*, bool&); - - //------------------------------------------------------------------------------------------------- - // FPerformanceStats - //------------------------------------------------------------------------------------------------- - - struct FPerformanceStats - { - uint64 Frames; - double Seconds; - - FPerformanceStats(uint32 InFrames = 0, double InSeconds = 0.0) - : Frames(InFrames) - , Seconds(InSeconds) - { - } - - FPerformanceStats operator-(const FPerformanceStats& PerformanceStats) const - { - return FPerformanceStats( - Frames - PerformanceStats.Frames, - Seconds - PerformanceStats.Seconds); - } - }; - - enum FRecenterTypes - { - RecenterOrientation = 0x1, - RecenterPosition = 0x2, - RecenterOrientationAndPosition = 0x3 - }; - - //------------------------------------------------------------------------------------------------- - // FOculusXRHMD - Oculus Rift Head Mounted Display - //------------------------------------------------------------------------------------------------- - - class FOculusXRHMD : public FHeadMountedDisplayBase, public FXRRenderTargetManager, public IStereoLayers, public FHMDSceneViewExtension, public FOculusAssetManager - { - friend class UOculusXRFunctionLibrary; - friend FOculusXRHMDModule; - friend class FSplash; - friend class FConsoleCommands; - - public: - // IXRSystemIdentifier - virtual FName GetSystemName() const override; - virtual int32 GetXRSystemFlags() const override; - - // IXRTrackingSystem - virtual FString GetVersionString() const override; - virtual bool DoesSupportPositionalTracking() const override; - virtual bool HasValidTrackingPosition() override; - virtual bool EnumerateTrackedDevices(TArray& OutDevices, EXRTrackedDeviceType Type = EXRTrackedDeviceType::Any) override; - virtual bool GetCurrentPose(int32 InDeviceId, FQuat& OutOrientation, FVector& OutPosition) override; - virtual bool GetRelativeEyePose(int32 InDeviceId, int32 ViewIndex, FQuat& OutOrientation, FVector& OutPosition) override; - virtual bool GetTrackingSensorProperties(int32 InDeviceId, FQuat& OutOrientation, FVector& OutPosition, FXRSensorProperties& OutSensorProperties) override; - virtual void SetTrackingOrigin(EHMDTrackingOrigin::Type NewOrigin) override; - virtual EHMDTrackingOrigin::Type GetTrackingOrigin() const override; - virtual bool GetFloorToEyeTrackingTransform(FTransform& OutFloorToEye) const override; - // virtual FVector GetAudioListenerOffset(int32 InDeviceId = HMDDeviceId) const override; - virtual void ResetOrientationAndPosition(float Yaw = 0.f) override; - virtual void ResetOrientation(float Yaw = 0.f) override; - virtual void ResetPosition() override; - virtual void SetBaseRotation(const FRotator& BaseRot) override; - virtual FRotator GetBaseRotation() const override; - virtual void SetBaseOrientation(const FQuat& BaseOrient) override; - virtual FQuat GetBaseOrientation() const override; - // virtual TSharedPtr GetXRCamera(int32 DeviceId = HMDDeviceId) override; - virtual class IHeadMountedDisplay* GetHMDDevice() override { return this; } - virtual class TSharedPtr GetStereoRenderingDevice() override - { - return SharedThis(this); - } - // virtual class IXRInput* GetXRInput() override; - virtual bool - IsHeadTrackingEnforced() const override; - virtual void SetHeadTrackingEnforced(bool bEnabled) override; - virtual bool IsHeadTrackingAllowed() const override; - virtual void OnBeginPlay(FWorldContext& InWorldContext) override; - virtual void OnEndPlay(FWorldContext& InWorldContext) override; - virtual bool OnStartGameFrame(FWorldContext& WorldContext) override; - virtual bool OnEndGameFrame(FWorldContext& WorldContext) override; - virtual void OnBeginRendering_RenderThread(FRHICommandListImmediate& RHICmdList, FSceneViewFamily& ViewFamily) override; - virtual void OnBeginRendering_GameThread() override; - virtual class IXRLoadingScreen* CreateLoadingScreen() override { return GetSplash(); } - virtual FVector2D GetPlayAreaBounds(EHMDTrackingOrigin::Type Origin) const override; - - // IHeadMountedDisplay - virtual bool IsHMDConnected() override { return true; } - virtual bool IsHMDEnabled() const override; - virtual EHMDWornState::Type GetHMDWornState() override; - virtual void EnableHMD(bool bEnable = true) override; - virtual bool GetHMDMonitorInfo(MonitorInfo&) override; - virtual void GetFieldOfView(float& InOutHFOVInDegrees, float& InOutVFOVInDegrees) const override; - virtual void SetInterpupillaryDistance(float NewInterpupillaryDistance) override; - virtual float GetInterpupillaryDistance() const override; - // virtual void SetClippingPlanes(float NCP, float FCP) override; - // virtual FVector GetAudioListenerOffset() const override; - virtual bool GetHMDDistortionEnabled(EShadingPath ShadingPath) const override; - // virtual void BeginRendering_RenderThread(const FTransform& NewRelativeTransform, FRHICommandListImmediate& RHICmdList, FSceneViewFamily& ViewFamily) override; - // virtual bool IsSpectatorScreenActive() const override; - // virtual class ISpectatorScreenController* GetSpectatorScreenController() override; - // virtual class ISpectatorScreenController const* GetSpectatorScreenController() const override; - // virtual float GetDistortionScalingFactor() const override; - // virtual float GetLensCenterOffset() const override; - // virtual void GetDistortionWarpValues(FVector4& K) const override; - virtual bool IsChromaAbCorrectionEnabled() const override; - // virtual bool GetChromaAbCorrectionValues(FVector4& K) const override; - virtual bool HasHiddenAreaMesh() const override; - virtual bool HasVisibleAreaMesh() const override; - -#if UE_VERSION_OLDER_THAN(5, 5, 0) -#ifdef WITH_OCULUS_BRANCH - virtual void DrawHiddenAreaMesh(class FRHICommandList& RHICmdList, int32 ViewIndex, int32 InstanceCount = 1) const override; - virtual void DrawVisibleAreaMesh(class FRHICommandList& RHICmdList, int32 ViewIndex, int32 InstanceCount = 1) const override; -#else - virtual void DrawHiddenAreaMesh(class FRHICommandList& RHICmdList, int32 ViewIndex) const override; - virtual void DrawVisibleAreaMesh(class FRHICommandList& RHICmdList, int32 ViewIndex) const override; -#endif // WITH_OCULUS_BRANCH -#else - virtual void DrawHiddenAreaMesh(class FRHICommandList& RHICmdList, int32 ViewIndex) const override final; - virtual void DrawVisibleAreaMesh(class FRHICommandList& RHICmdList, int32 ViewIndex) const override final; - virtual void DrawHiddenAreaMesh(class FRHICommandList& RHICmdList, int32 ViewIndex, int32 InstanceCount) const override final; - virtual void DrawVisibleAreaMesh(class FRHICommandList& RHICmdList, int32 ViewIndex, int32 InstanceCount) const override final; -#endif - - // virtual void DrawDistortionMesh_RenderThread(struct FHeadMountedDisplayPassContext& Context, const FIntPoint& TextureSize) override; - // virtual void UpdateScreenSettings(const FViewport* InViewport) override; - // virtual void UpdatePostProcessSettings(FPostProcessSettings*) override; - // virtual FTexture* GetDistortionTextureLeft() const override; - // virtual FTexture* GetDistortionTextureRight() const override; - // virtual FVector2D GetTextureOffsetLeft() const override; - // virtual FVector2D GetTextureOffsetRight() const override; - // virtual FVector2D GetTextureScaleLeft() const override; - // virtual FVector2D GetTextureScaleRight() const override; - // virtual const float* GetRedDistortionParameters() const override; - // virtual const float* GetGreenDistortionParameters() const override; - // virtual const float* GetBlueDistortionParameters() const override; - // virtual bool NeedsUpscalePostProcessPass() override; - // virtual void RecordAnalytics() override; - // virtual bool DoesAppUseVRFocus() const override; - // virtual bool DoesAppHaveVRFocus() const override; - virtual float GetPixelDenity() const override; - virtual void SetPixelDensity(const float NewPixelDensity) override; - virtual FIntPoint GetIdealRenderTargetSize() const override; - virtual void GetMotionControllerData(UObject* WorldContext, const EControllerHand Hand, FXRMotionControllerData& MotionControllerData) override; -#if !UE_VERSION_OLDER_THAN(5, 5, 0) - virtual void GetMotionControllerState(UObject* WorldContext, const EXRSpaceType XRSpaceType, const EControllerHand Hand, const EXRControllerPoseType XRControllerPoseType, FXRMotionControllerState& MotionControllerState) override; -#endif - // IStereoRendering interface - virtual bool IsStereoEnabled() const override; - virtual bool IsStereoEnabledOnNextFrame() const override; - virtual bool EnableStereo(bool stereo = true) override; - virtual void AdjustViewRect(int32 ViewIndex, int32& X, int32& Y, uint32& SizeX, uint32& SizeY) const override; - virtual void SetFinalViewRect(FRHICommandListImmediate& RHICmdList, const int32 ViewIndex, const FIntRect& FinalViewRect) override; - // virtual FVector2D GetTextSafeRegionBounds() const override; - virtual void CalculateStereoViewOffset(const int32 ViewIndex, FRotator& ViewRotation, const float WorldToMeters, FVector& ViewLocation) override; - virtual FMatrix GetStereoProjectionMatrix(const int32 ViewIndex) const override; - virtual void InitCanvasFromView(class FSceneView* InView, class UCanvas* Canvas) override; - // virtual void GetEyeRenderParams_RenderThread(const struct FRenderingCompositePassContext& Context, FVector2D& EyeToSrcUVScaleValue, FVector2D& EyeToSrcUVOffsetValue) const override; - virtual void RenderTexture_RenderThread(class FRHICommandListImmediate& RHICmdList, class FRHITexture* BackBuffer, class FRHITexture* SrcTexture, FVector2D WindowSize) const override; - // virtual void SetClippingPlanes(float NCP, float FCP) override; - virtual IStereoRenderTargetManager* GetRenderTargetManager() override { return this; } - virtual IStereoLayers* GetStereoLayers() override { return this; } - // virtual void UseImplicitHmdPosition(bool bInImplicitHmdPosition) override; - // virtual bool GetUseImplicitHmdPosition() override; - virtual bool IsStandaloneStereoOnlyDevice() const override { return bIsStandaloneStereoOnlyDevice; } - bool SupportsSpaceWarp() const; -#ifdef WITH_OCULUS_BRANCH - virtual void CalculateScissorRect(const int32 ViewIndex, const FIntRect& ViewRect, FIntRect& OutRect) override; -#endif // WITH_OCULUS_BRANCH - - // FHeadMountedDisplayBase interface - virtual FVector2D GetEyeCenterPoint_RenderThread(int32 ViewIndex) const override; - virtual FIntRect GetFullFlatEyeRect_RenderThread(FTextureRHIRef EyeTexture) const override; - virtual void CopyTexture_RenderThread(FRHICommandListImmediate& RHICmdList, FRHITexture* SrcTexture, FIntRect SrcRect, FRHITexture* DstTexture, FIntRect DstRect, bool bClearBlack, bool bNoAlpha) const override; - virtual bool PopulateAnalyticsAttributes(TArray& EventAttributes) override; - - // FXRRenderTargetManager interface - virtual bool ShouldUseSeparateRenderTarget() const override; -#ifdef WITH_OCULUS_BRANCH - virtual void CalculateRenderTargetSize(uint32& InOutSizeX, uint32& InOutSizeY) override; -#else // WITH_OCULUS_BRANCH - virtual void CalculateRenderTargetSize(const FViewport& Viewport, uint32& InOutSizeX, uint32& InOutSizeY) override; -#endif // WITH_OCULUS_BRANCH - virtual bool NeedReAllocateViewportRenderTarget(const class FViewport& Viewport) override; - virtual bool NeedReAllocateDepthTexture(const TRefCountPtr& DepthTarget) override; - virtual bool NeedReAllocateShadingRateTexture(const TRefCountPtr& FoveationTarget) override; - virtual bool AllocateRenderTargetTexture(uint32 Index, uint32 SizeX, uint32 SizeY, uint8 Format, uint32 NumMips, ETextureCreateFlags InTexFlags, ETextureCreateFlags InTargetableTextureFlags, FTextureRHIRef& OutTargetableTexture, FTextureRHIRef& OutShaderResourceTexture, uint32 NumSamples = 1) override; - virtual bool AllocateDepthTexture(uint32 Index, uint32 SizeX, uint32 SizeY, uint8 Format, uint32 NumMips, ETextureCreateFlags InTexFlags, ETextureCreateFlags TargetableTextureFlags, FTextureRHIRef& OutTargetableTexture, FTextureRHIRef& OutShaderResourceTexture, uint32 NumSamples = 1) override; - virtual bool AllocateShadingRateTexture(uint32 Index, uint32 RenderSizeX, uint32 RenderSizeY, uint8 Format, uint32 NumMips, ETextureCreateFlags InTexFlags, ETextureCreateFlags InTargetableTextureFlags, FTextureRHIRef& OutTexture, FIntPoint& OutTextureSize) override; -#if defined(WITH_OCULUS_BRANCH) - virtual bool GetRecommendedVelocityTextureSize(FIntPoint& OutTextureSize) override; - virtual bool AllocateVelocityTexture(uint32 Index, const FIntPoint& Size, uint8 Format, uint32 NumMips, ETextureCreateFlags TexFlags, FTextureRHIRef& OutTexture, uint32 NumSamples = 1) override; - virtual bool AllocateVelocityDepthTexture(uint32 Index, const FIntPoint& Size, uint8 Format, uint32 NumMips, ETextureCreateFlags TexFlags, FTextureRHIRef& OutTexture, uint32 NumSamples = 1) override; - virtual bool FindEnvironmentDepthTexture_RenderThread(FTextureRHIRef& OutTexture, FTextureRHIRef& OutMinMaxTexture, FVector2f& OutDepthFactors, FMatrix44f OutScreenToDepthMatrices[2], FMatrix44f OutDepthViewProjMatrices[2]) override; -#endif // defined(WITH_OCULUS_BRANCH) - virtual EPixelFormat GetActualColorSwapchainFormat() const override; - - virtual void UpdateViewportWidget(bool bUseSeparateRenderTarget, const class FViewport& Viewport, class SViewport* ViewportWidget) override; - virtual FXRRenderBridge* GetActiveRenderBridge_GameThread(bool bUseSeparateRenderTarget); - void AllocateEyeBuffer(); - - // IStereoLayers interface - virtual uint32 CreateLayer(const IStereoLayers::FLayerDesc& InLayerDesc) override; - virtual void DestroyLayer(uint32 LayerId) override; - virtual void SetLayerDesc(uint32 LayerId, const IStereoLayers::FLayerDesc& InLayerDesc) override; - virtual bool GetLayerDesc(uint32 LayerId, IStereoLayers::FLayerDesc& OutLayerDesc) override; - virtual void MarkTextureForUpdate(uint32 LayerId) override; - virtual IStereoLayers::FLayerDesc GetDebugCanvasLayerDesc(FTextureRHIRef Texture) override; - virtual void GetAllocatedTexture(uint32 LayerId, FTextureRHIRef& Texture, FTextureRHIRef& LeftTexture) override; - virtual bool ShouldCopyDebugLayersToSpectatorScreen() const override { return true; } - virtual void PushLayerState(bool) override - { /* Todo */ - } - virtual void PopLayerState() override - { /* Todo */ - } - - // ISceneViewExtension - virtual void SetupViewFamily(FSceneViewFamily& InViewFamily) override; - virtual void SetupView(FSceneViewFamily& InViewFamily, FSceneView& InView) override; - virtual void BeginRenderViewFamily(FSceneViewFamily& InViewFamily) override; - virtual void PreRenderViewFamily_RenderThread(FRDGBuilder& GraphBuilder, FSceneViewFamily& InViewFamily) override; - virtual void PreRenderView_RenderThread(FRDGBuilder& GraphBuilder, FSceneView& InView) override; - virtual void PostRenderViewFamily_RenderThread(FRDGBuilder& GraphBuilder, FSceneViewFamily& InViewFamily) override; -#if UE_VERSION_OLDER_THAN(5, 3, 0) - virtual void PostRenderBasePassMobile_RenderThread(FRHICommandListImmediate& RHICmdList, FSceneView& InView) override; -#ifdef WITH_OCULUS_BRANCH - virtual void PostSceneColorRenderingMobile_RenderThread(FRHICommandListImmediate& RHICmdList, FSceneView& InView) override; -#endif -#else - virtual void PostRenderBasePassMobile_RenderThread(FRHICommandList& RHICmdList, FSceneView& InView) override; -#ifdef WITH_OCULUS_BRANCH - virtual void PostSceneColorRenderingMobile_RenderThread(FRHICommandList& RHICmdList, FSceneView& InView) override; -#endif -#endif - virtual void PostRenderBasePassDeferred_RenderThread(FRDGBuilder& GraphBuilder, FSceneView& InView, const FRenderTargetBindingSlots& RenderTargets, TRDGUniformBufferRef SceneTextures) override; - virtual int32 GetPriority() const override; -#ifdef WITH_OCULUS_BRANCH - virtual bool LateLatchingEnabled() const override; - virtual void PreLateLatchingViewFamily_RenderThread(FRHICommandListImmediate& RHICmdList, FSceneViewFamily& InViewFamily) override; -#endif - - // MultiPlayer - void SwitchPrimaryPIE(int PrimaryPIEIndex); - const FOculusXRPerformanceMetrics GetPerformanceMetrics() const; - - public: - FOculusXRHMD(const FAutoRegister&); - ~FOculusXRHMD(); - - protected: - bool Startup(); - void PreShutdown(); - void Shutdown(); - bool InitializeSession(); - void ShutdownSession(); - bool InitDevice(); - void ReleaseDevice(); - void ApplicationPauseDelegate(); - void ApplicationResumeDelegate(); - bool CheckEyeTrackingPermission(EOculusXRFoveatedRenderingMethod FoveatedRenderingMethod); - void SetupOcclusionMeshes(); - void UpdateStereoRenderingParams(); - void UpdateHmdRenderInfo(); - void InitializeEyeLayer_RenderThread(FRHICommandListImmediate& RHICmdList); - void ApplySystemOverridesOnStereo(bool force = false); - bool OnOculusStateChange(bool bIsEnabledNow); - bool ShouldDisableHiddenAndVisibileAreaMeshForSpectatorScreen_RenderThread() const; - void Recenter(FRecenterTypes RecenterType, float Yaw); - FIntRect GetAsymmetricViewRect(const int32 ViewIndex, const FIntRect& ViewRect); -#if !UE_BUILD_SHIPPING - void DrawDebug(UCanvas* InCanvas, APlayerController* InPlayerController); -#endif - - class FSceneViewport* FindSceneViewport(); - FOculusXRSplashDesc GetUESplashScreenDesc(); - void EyeTrackedFoveatedRenderingFallback(); - - public: - OCULUSXRHMD_API static FOculusXRHMD* GetOculusXRHMD(); - - bool IsHMDActive() const; - - FSplash* GetSplash() const { return Splash.Get(); } - FCustomPresent* GetCustomPresent_Internal() const { return CustomPresent; } - - float GetWorldToMetersScale() const; - - ESpectatorScreenMode GetSpectatorScreenMode_RenderThread() const; - - FVector GetNeckPosition(const FQuat& HeadOrientation, const FVector& HeadPosition); - - /** - * Sets base position offset (in meters). The base position offset is the distance from the physical (0, 0, 0) position - * to current HMD position (bringing the (0, 0, 0) point to the current HMD position) - * Note, this vector is set by ResetPosition call; use this method with care. - * The axis of the vector are the same as in Unreal: X - forward, Y - right, Z - up. - * - * @param BaseOffset (in) the vector to be set as base offset, in meters. - */ - void SetBaseOffsetInMeters(const FVector& BaseOffset); - - /** - * Returns the currently used base position offset, previously set by the - * ResetPosition or SetBasePositionOffset calls. It represents a vector that translates the HMD's position - * into (0,0,0) point, in meters. - * The axis of the vector are the same as in Unreal: X - forward, Y - right, Z - up. - * - * @return Base position offset, in meters. - */ - FVector GetBaseOffsetInMeters() const; - - OCULUSXRHMD_API bool ConvertPose(const ovrpPosef& InPose, FPose& OutPose) const; - OCULUSXRHMD_API bool ConvertPose(const FPose& InPose, ovrpPosef& OutPose) const; - OCULUSXRHMD_API bool ConvertPose_RenderThread(const ovrpPosef& InPose, FPose& OutPose) const; - OCULUSXRHMD_API static bool ConvertPose_Internal(const ovrpPosef& InPose, FPose& OutPose, const FSettings* Settings, float WorldToMetersScale = 100.0f); - OCULUSXRHMD_API static bool ConvertPose_Internal(const FPose& InPose, ovrpPosef& OutPose, const FSettings* Settings, float WorldToMetersScale = 100.0f); - - /** Turns ovrVector3f in Unreal World space to a scaled FVector and applies translation and rotation corresponding to player movement */ - FVector ScaleAndMovePointWithPlayer(ovrpVector3f& OculusXRHMDPoint); - - /** The inverse of ScaleAndMovePointWithPlayer */ - ovrpVector3f WorldLocationToOculusPoint(const FVector& InUnrealPosition); - - /** Convert dimension of a float (e.g., a distance) from meters to Unreal Units */ - float ConvertFloat_M2U(float OculusFloat) const; - FVector ConvertVector_M2U(ovrpVector3f OculusPoint) const; - - struct UserProfile - { - float IPD; - float EyeDepth; - float EyeHeight; - }; - - bool GetUserProfile(UserProfile& OutProfile); - float GetVsyncToNextVsync() const; - FPerformanceStats GetPerformanceStats() const; - bool DoEnableStereo(bool bStereo); - void SendTelemetryData(); - void ResetControlRotation() const; - void UpdateFoveationOffsets_RenderThread(); - bool ComputeEnvironmentDepthParameters_RenderThread(FVector2f& DepthFactors, FMatrix44f ScreenToDepth[ovrpEye_Count], FMatrix44f DepthViewProj[ovrpEye_Count], int& SwapchainIndex); - - FSettingsPtr CreateNewSettings() const; - FGameFramePtr CreateNewGameFrame() const; - - FGameFrame* GetFrame() - { - CheckInGameThread(); - return Frame.Get(); - } - const FGameFrame* GetFrame() const - { - CheckInGameThread(); - return Frame.Get(); - } - FGameFrame* GetFrame_RenderThread() - { - CheckInRenderThread(); - return Frame_RenderThread.Get(); - } - const FGameFrame* GetFrame_RenderThread() const - { - CheckInRenderThread(); - return Frame_RenderThread.Get(); - } - FGameFrame* GetFrame_RHIThread() - { - CheckInRHIThread(); - return Frame_RHIThread.Get(); - } - const FGameFrame* GetFrame_RHIThread() const - { - CheckInRHIThread(); - return Frame_RHIThread.Get(); - } - FGameFrame* GetNextFrameToRender() - { - CheckInGameThread(); - return NextFrameToRender.Get(); - } - const FGameFrame* GetNextFrameToRender() const - { - CheckInGameThread(); - return NextFrameToRender.Get(); - } - - FSettings* GetSettings() - { - CheckInGameThread(); - return Settings.Get(); - } - const FSettings* GetSettings() const - { - CheckInGameThread(); - return Settings.Get(); - } - FSettings* GetSettings_RenderThread() - { - CheckInRenderThread(); - return Settings_RenderThread.Get(); - } - const FSettings* GetSettings_RenderThread() const - { - CheckInRenderThread(); - return Settings_RenderThread.Get(); - } - FSettings* GetSettings_RHIThread() - { - CheckInRHIThread(); - return Settings_RHIThread.Get(); - } - const FSettings* GetSettings_RHIThread() const - { - CheckInRHIThread(); - return Settings_RHIThread.Get(); - } - - const int GetNextFrameNumber() const { return NextFrameNumber; } - - const FRotator GetSplashRotation() const { return SplashRotation; } - void SetSplashRotationToForward(); - - OCULUSXRHMD_API void StartGameFrame_GameThread(); // Called from OnStartGameFrame or from FOculusXRInput::SendControllerEvents (first actual call of the frame) - void FinishGameFrame_GameThread(); // Called from OnEndGameFrame - void StartRenderFrame_GameThread(); // Called from BeginRenderViewFamily - void FinishRenderFrame_RenderThread(FRDGBuilder& GraphBuilder); // Called from PostRenderViewFamily_RenderThread - void StartRHIFrame_RenderThread(); // Called from PreRenderViewFamily_RenderThread - void FinishRHIFrame_RHIThread(); // Called from FinishRendering_RHIThread - - void GetSuggestedCpuAndGpuPerformanceLevels(EOculusXRProcessorPerformanceLevel& CpuPerfLevel, EOculusXRProcessorPerformanceLevel& GpuPerfLevel); - void SetSuggestedCpuAndGpuPerformanceLevels(EOculusXRProcessorPerformanceLevel CpuPerfLevel, EOculusXRProcessorPerformanceLevel GpuPerfLevel); - void SetFoveatedRenderingMethod(EOculusXRFoveatedRenderingMethod InFoveationMethod); - void SetFoveatedRenderingLevel(EOculusXRFoveatedRenderingLevel InFoveationLevel, bool isDynamic); - void SetColorScaleAndOffset(FLinearColor ColorScale, FLinearColor ColorOffset, bool bApplyToAllLayers); - void SetEnvironmentDepthHandRemoval(bool RemoveHands); - void StartEnvironmentDepth(int CreateFlags); - void StopEnvironmentDepth(); - bool IsEnvironmentDepthStarted(); - - UE_DEPRECATED(5.5, "Hard occlusions is deprecated, use Soft occlusions instead.") - void EnableHardOcclusions(bool bEnable); - void EnableSoftOcclusions(bool bEnable); - - OCULUSXRHMD_API void UpdateRTPoses(); - - FTransform GetLastTrackingToWorld() const { return LastTrackingToWorld; } - OCULUSXRHMD_API void AddEventPollingDelegate(const FOculusXRHMDEventPollingDelegate& NewDelegate); - - OCULUSXRHMD_API uint32 GetLayerIdFromOvrpId(int OvrpId) const; - - protected: - FConsoleCommands ConsoleCommands; - void UpdateOnRenderThreadCommandHandler(const TArray& Args, UWorld* World, FOutputDevice& Ar); - void HQBufferCommandHandler(const TArray& Args, UWorld*, FOutputDevice& Ar); - void HQDistortionCommandHandler(const TArray& Args, UWorld*, FOutputDevice& Ar); - void ShowGlobalMenuCommandHandler(const TArray& Args, UWorld* World, FOutputDevice& Ar); - void ShowQuitMenuCommandHandler(const TArray& Args, UWorld* World, FOutputDevice& Ar); -#if !UE_BUILD_SHIPPING - void StatsCommandHandler(const TArray& Args, UWorld* World, FOutputDevice& Ar); - void ShowSettingsCommandHandler(const TArray& Args, UWorld* World, FOutputDevice& Ar); - void IPDCommandHandler(const TArray& Args, UWorld* World, FOutputDevice& Ar); -#endif - - void LoadFromSettings(); - void LogEnabledFeatures() const; - void DoSessionShutdown(); - - protected: - void UpdateHMDWornState(); - EHMDWornState::Type HMDWornState = EHMDWornState::Unknown; - - void UpdateHMDEvents(); - - void EnableInsightPassthrough_RenderThread(bool bEnablePassthrough); - - void PrepareAndRenderHardOcclusions_RenderThread(FRHICommandList& RHICmdList, FSceneView& InView); - - // MultiPlayer - void InitMultiPlayerPoses(const FPose& CurPose); - void ResetMultiPlayerPoses(); - void ReCalcMultiPlayerPoses(FPose& CurHMDHeadPose); - - union - { - struct - { - uint64 bApplySystemOverridesOnStereo : 1; - - uint64 bNeedEnableStereo : 1; - uint64 bNeedDisableStereo : 1; - }; - uint64 Raw; - } Flags; - - union - { - struct - { - // set to true when origin was set while OvrSession == null; the origin will be set ASA OvrSession != null - uint64 NeedSetTrackingOrigin : 1; - // enforces exit; used mostly for testing - uint64 EnforceExit : 1; - // set if a game is paused by the plug-in - uint64 AppIsPaused : 1; - // set to indicate that DisplayLost was detected by game thread. - uint64 DisplayLostDetected : 1; - // set to true once new session is created; being handled and reset as soon as session->IsVisible. - uint64 NeedSetFocusToGameViewport : 1; - }; - uint64 Raw; - } OCFlags; - - TRefCountPtr CustomPresent; - FSplashPtr Splash; - IRendererModule* RendererModule; - - FDeferredDeletionQueue DeferredDeletion; - - EHMDTrackingOrigin::Type TrackingOrigin; - // Stores difference between ViewRotation and EyeOrientation from previous frame - FQuat LastPlayerOrientation; - // Stores GetFrame()->PlayerLocation (i.e., ViewLocation) from the previous frame - FVector LastPlayerLocation; - FRotator DeltaControlRotation; // used from ApplyHmdRotation - TWeakPtr CachedViewportWidget; - TWeakPtr CachedWindow; - FIntPoint CachedWindowSize; - float CachedWorldToMetersScale; - bool bIsStandaloneStereoOnlyDevice; - // Stores TrackingToWorld from previous frame - FTransform LastTrackingToWorld; - std::atomic bHardOcclusionsEnabled; - std::atomic bSoftOcclusionsEnabled; - std::atomic bEnvironmentDepthHandRemovalEnabled; - - // These three properties indicate the current state of foveated rendering, which may differ from what's in Settings - // due to cases such as falling back to FFR when eye tracked foveated rendering isn't enabled. Will allow us to resume - // ETFR from situations such as when ET gets paused. - std::atomic FoveatedRenderingMethod; - std::atomic FoveatedRenderingLevel; - std::atomic bDynamicFoveatedRendering; - - // Game thread - FSettingsPtr Settings; - uint32 NextFrameNumber; - uint32 WaitFrameNumber; - FGameFramePtr Frame; // Valid from OnStartGameFrame to OnEndGameFrame - FGameFramePtr NextFrameToRender; // Valid from OnStartGameFrame to BeginRenderViewFamily - FGameFramePtr LastFrameToRender; // Valid from OnStartGameFrame to BeginRenderViewFamily - uint32 NextLayerId; - TMap LayerMap; - bool bNeedReAllocateViewportRenderTarget; - - // Render thread - FSettingsPtr Settings_RenderThread; - FGameFramePtr Frame_RenderThread; // Valid from BeginRenderViewFamily to PostRenderViewFamily_RenderThread - TArray Layers_RenderThread; - FLayerPtr EyeLayer_RenderThread; // Valid to be accessed from game thread, since updated only when game thread is waiting - bool bNeedReAllocateDepthTexture_RenderThread; - bool bNeedReAllocateFoveationTexture_RenderThread; - bool bNeedReAllocateMotionVectorTexture_RenderThread; - bool bNeedReAllocateMotionVectorDepthTexture_RenderThread; -#if !UE_VERSION_OLDER_THAN(5, 3, 0) - TSharedPtr FoveationImageGenerator; -#endif // !UE_VERSION_OLDER_THAN(5, 3, 0) - - // RHI thread - FSettingsPtr Settings_RHIThread; - FGameFramePtr Frame_RHIThread; // Valid from PreRenderViewFamily_RenderThread to FinishRendering_RHIThread - TArray Layers_RHIThread; - - FHMDViewMesh HiddenAreaMeshes[2]; - FHMDViewMesh VisibleAreaMeshes[2]; - - FPerformanceStats PerformanceStats; - - FRotator SplashRotation; // rotation applied to all splash screens (dependent on HMD orientation as the splash is shown) - - TArray EnvironmentDepthSwapchain; - FTextureRHIRef EnvironmentDepthMinMaxTexture; - int PrevEnvironmentDepthMinMaxSwapchainIndex = -1; - -#if !UE_BUILD_SHIPPING - FDelegateHandle DrawDebugDelegateHandle; -#endif - - enum class FInsightInitStatus - { - NotInitialized, - Initialized, - Failed, - }; - - FInsightInitStatus InsightInitStatus; - - bool bShutdownRequestQueued; - bool bEyeTrackedFoveatedRenderingSupported; - - FOculusXRPerformanceMetrics PerformanceMetrics; - - TArray EventPollingDelegates; - - // MultiPlayer - int CurPlayerIndex; - FPose LastFrameHMDHeadPose; - TArray MultiPlayerPoses; - bool bShouldWait_GameThread; - bool bIsRendering_RenderThread; - }; - - typedef TSharedPtr FOculusXRHMDPtr; - -} // namespace OculusXRHMD - -#endif // OCULUS_HMD_SUPPORTED_PLATFORMS diff --git a/Plugins/MetaXR/Source/OculusXRHMD/Private/OculusXRHMDModule.cpp b/Plugins/MetaXR/Source/OculusXRHMD/Private/OculusXRHMDModule.cpp deleted file mode 100644 index 1c70d21..0000000 --- a/Plugins/MetaXR/Source/OculusXRHMD/Private/OculusXRHMDModule.cpp +++ /dev/null @@ -1,567 +0,0 @@ -// @lint-ignore-every LICENSELINT -// Copyright Epic Games, Inc. All Rights Reserved. - -#include "OculusXRHMDModule.h" -#include "OculusXRFunctionLibrary.h" -#include "OculusXRHMD.h" -#include "OculusXRHMDPrivateRHI.h" -#include "OculusXRHMDRuntimeSettings.h" -#include "OculusXRStereoLayersFlagsSupplier.h" -#include "Containers/StringConv.h" -#include "Misc/EngineVersion.h" -#include "Misc/Paths.h" -#if PLATFORM_ANDROID -#include "Android/AndroidApplication.h" -#include "Android/AndroidPlatformMisc.h" -#endif -#include "Interfaces/IPluginManager.h" -#include "ShaderCore.h" -#include "OculusXRTelemetry.h" -#if PLATFORM_WINDOWS -#include "OculusXRSimulator.h" -#include "OculusXRSyntheticEnvironmentServer.h" -#endif - -#if !PLATFORM_ANDROID -#if !UE_BUILD_SHIPPING -namespace -{ - void __cdecl OvrpLogCallback2(ovrpLogLevel InLevel, const char* Message, int Length) - { - ELogVerbosity::Type OutLevel; - switch (InLevel) - { - case ovrpLogLevel_Debug: - OutLevel = ELogVerbosity::Log; - break; - case ovrpLogLevel_Info: - OutLevel = ELogVerbosity::Display; - break; - case ovrpLogLevel_Error: - OutLevel = ELogVerbosity::Error; - break; - case ovrpLogLevel_Warning: - OutLevel = ELogVerbosity::Warning; - break; - default: - OutLevel = ELogVerbosity::NoLogging; - } - const FString MessageStr(Length, Message); - GLog->CategorizedLogf(TEXT("LogOVRPlugin"), OutLevel, TEXT("%s"), *MessageStr); - } -} // namespace -#endif // !UE_BUILD_SHIPPING -#endif // !PLATFORM_ANDROID - -const FName IOculusXRHMDModule::NAME_OculusXRHMD(TEXT("OculusXRHMD")); - -//------------------------------------------------------------------------------------------------- -// FOculusXRHMDModule -//------------------------------------------------------------------------------------------------- - -OculusPluginWrapper FOculusXRHMDModule::PluginWrapper{}; - -#if OCULUS_HMD_SUPPORTED_PLATFORMS -OculusPluginWrapper& FOculusXRHMDModule::GetPluginWrapper() -{ - return PluginWrapper; -} -#endif // OCULUS_HMD_SUPPORTED_PLATFORMS - -FOculusXRHMDModule::FOculusXRHMDModule() -{ -#if OCULUS_HMD_SUPPORTED_PLATFORMS - bPreInit = false; - bPreInitCalled = false; - OVRPluginHandle = nullptr; - GraphicsAdapterLuid = 0; -#endif -} - -void FOculusXRHMDModule::StartupModule() -{ - IHeadMountedDisplayModule::StartupModule(); - FString PluginShaderDir = FPaths::Combine(IPluginManager::Get().FindPlugin(TEXT("OculusXR"))->GetBaseDir(), TEXT("Shaders")); - AddShaderSourceDirectoryMapping(TEXT("/Plugin/OculusXR"), PluginShaderDir); - -#if !UE_VERSION_OLDER_THAN(5, 4, 0) - auto StereoLayersFlagsSupplier = FOculusXRStereoLayersFlagsSupplier::Get(); - if (StereoLayersFlagsSupplier.IsValid()) - { - IModularFeatures::Get().RegisterModularFeature(IStereoLayersFlagsSupplier::GetModularFeatureName(), StereoLayersFlagsSupplier.Get()); - TArray FlagsSuppliers = IModularFeatures::Get().GetModularFeatureImplementations(IStereoLayersFlagsSupplier::GetModularFeatureName()); - if (FlagsSuppliers.Num() > 1) - { - UE_LOG(LogHMD, Log, TEXT("OculusXR Stereo Layer Filters CANNOT be used with layer filters!")); - IModularFeatures::Get().UnregisterModularFeature(IStereoLayersFlagsSupplier::GetModularFeatureName(), StereoLayersFlagsSupplier.Get()); - } - } - PreInit(); -#endif // !UE_VERSION_OLDER_THAN(5, 4, 0) - - ExtensionPluginManager.StartupOpenXRPlugins(); -} - -void FOculusXRHMDModule::ShutdownModule() -{ -#if OCULUS_HMD_SUPPORTED_PLATFORMS -#if !UE_VERSION_OLDER_THAN(5, 4, 0) - auto StereoLayersFlagsSupplier = FOculusXRStereoLayersFlagsSupplier::Get(); - if (StereoLayersFlagsSupplier.IsValid()) - { - IModularFeatures::Get().UnregisterModularFeature(IStereoLayersFlagsSupplier::GetModularFeatureName(), StereoLayersFlagsSupplier.Get()); - } -#endif // !UE_VERSION_OLDER_THAN(5, 4, 0) - UOculusXRFunctionLibrary::ShutdownXRFunctionLibrary(); - - if (PluginWrapper.IsInitialized()) - { - OculusXRTelemetry::FTelemetryBackend::OnEditorShutdown(); - PluginWrapper.Shutdown2(); - OculusPluginWrapper::DestroyOculusPluginWrapper(&PluginWrapper); - } - - if (OVRPluginHandle) - { - FPlatformProcess::FreeDllHandle(OVRPluginHandle); - OVRPluginHandle = nullptr; - } -#endif -} - -OculusXR::FExtensionPluginManager& FOculusXRHMDModule::GetExtensionPluginManager() -{ - return ExtensionPluginManager; -} - -#if PLATFORM_ANDROID -extern bool AndroidThunkCpp_IsOculusMobileApplication(); -#endif - -FString FOculusXRHMDModule::GetModuleKeyName() const -{ - return NAME_OculusXRHMD.ToString(); -} - -void FOculusXRHMDModule::GetModuleAliases(TArray& AliasesOut) const -{ - // Pre-OculusXR rename (5.0.3 v44) - AliasesOut.Add(TEXT("OculusHMD")); -} - -bool FOculusXRHMDModule::PreInit() -{ -#if OCULUS_HMD_SUPPORTED_PLATFORMS - if (!bPreInitCalled) - { - bPreInit = false; - -#if PLATFORM_ANDROID - bPreInitCalled = true; - if (!AndroidThunkCpp_IsOculusMobileApplication()) - { - UE_LOG(LogHMD, Log, TEXT("App is not packaged for Oculus Mobile")); - return false; - } -#endif - - // Init module if app can render - if (FApp::CanEverRender()) - { - // Load OVRPlugin - OVRPluginHandle = GetOVRPluginHandle(); - - if (!OVRPluginHandle) - { - UE_LOG(LogHMD, Log, TEXT("Failed loading OVRPlugin %s"), TEXT(OVRP_VERSION_STR)); - return false; - } - - if (!OculusPluginWrapper::InitializeOculusPluginWrapper(&PluginWrapper)) - { - UE_LOG(LogHMD, Log, TEXT("Failed InitializeOculusPluginWrapper")); - return false; - } - - // Initialize OVRPlugin - ovrpRenderAPIType PreinitApiType = ovrpRenderAPI_None; -#if PLATFORM_ANDROID - void* Activity = (void*)FAndroidApplication::GetGameActivityThis(); - PreinitApiType = ovrpRenderAPI_Vulkan; -#else - void* Activity = nullptr; -#endif - -#if !PLATFORM_ANDROID -#if !UE_BUILD_SHIPPING - PluginWrapper.SetLogCallback2(OvrpLogCallback2); -#endif // !UE_BUILD_SHIPPING -#endif // !PLATFORM_ANDROID - - // Determine Preinit flag based on platform - ovrpPreinitializeFlags PreinitFlag = ovrpPreinitializeFlags::ovrpPreinitializeFlag_None; -#if WITH_EDITOR && PLATFORM_WINDOWS - PreinitFlag = ovrpPreinitializeFlags::ovrpPreinitializeFlag_DisableLogSystemError; -#endif - if (OVRP_FAILURE(PluginWrapper.PreInitialize5(Activity, PreinitApiType, PreinitFlag))) - { - UE_LOG(LogHMD, Log, TEXT("Failed initializing OVRPlugin %s"), TEXT(OVRP_VERSION_STR)); -#if WITH_EDITOR && PLATFORM_WINDOWS - // In the editor, we want to allow the headset to connect after the editor has booted. - // To do this, we must have PreInit() return true, to prevent the HMD module from being unloaded. - return GIsEditor; -#else - return false; -#endif - } - -#if PLATFORM_WINDOWS - bPreInitCalled = true; - const LUID* DisplayAdapterId; - if (OVRP_SUCCESS(PluginWrapper.GetDisplayAdapterId2((const void**)&DisplayAdapterId)) && DisplayAdapterId) - { - SetGraphicsAdapterLuid(*(const uint64*)DisplayAdapterId); - } - else - { - UE_LOG(LogHMD, Log, TEXT("Could not determine HMD display adapter")); - } - - const WCHAR* AudioInDeviceId; - if (OVRP_SUCCESS(PluginWrapper.GetAudioInDeviceId2((const void**)&AudioInDeviceId)) && AudioInDeviceId) - { - GConfig->SetString(TEXT("Oculus.Settings"), TEXT("AudioInputDevice"), AudioInDeviceId, GEngineIni); - } - else - { - UE_LOG(LogHMD, Log, TEXT("Could not determine HMD audio input device")); - } - - const WCHAR* AudioOutDeviceId; - if (OVRP_SUCCESS(PluginWrapper.GetAudioOutDeviceId2((const void**)&AudioOutDeviceId)) && AudioOutDeviceId) - { - GConfig->SetString(TEXT("Oculus.Settings"), TEXT("AudioOutputDevice"), AudioOutDeviceId, GEngineIni); - } - else - { - UE_LOG(LogHMD, Log, TEXT("Could not determine HMD audio output device")); - } -#endif - - float ModulePriority; - if (!GConfig->GetFloat(TEXT("HMDPluginPriority"), *GetModuleKeyName(), ModulePriority, GEngineIni)) - { - // if user doesn't set priority set it for them to allow this hmd to be used if enabled - ModulePriority = 45.0f; - GConfig->SetFloat(TEXT("HMDPluginPriority"), *GetModuleKeyName(), ModulePriority, GEngineIni); - } - - UE_LOG(LogHMD, Log, TEXT("FOculusXRHMDModule PreInit successfully")); - - bPreInit = true; - } - } - - return bPreInit; -#else - return false; -#endif // OCULUS_HMD_SUPPORTED_PLATFORMS -} - -bool FOculusXRHMDModule::IsHMDConnected() -{ -#if OCULUS_HMD_SUPPORTED_PLATFORMS - UOculusXRHMDRuntimeSettings* HMDSettings = GetMutableDefault(); - if (FApp::CanEverRender() && HMDSettings->XrApi != EOculusXRXrApi::NativeOpenXR) - { - return true; - } -#endif // OCULUS_HMD_SUPPORTED_PLATFORMS - return false; -} - -uint64 FOculusXRHMDModule::GetGraphicsAdapterLuid() -{ -#if OCULUS_HMD_SUPPORTED_PLATFORMS_D3D11 || OCULUS_HMD_SUPPORTED_PLATFORMS_D3D12 - if (!GraphicsAdapterLuid) - { - int GraphicsAdapter; - - if (GConfig->GetInt(TEXT("Oculus.Settings"), TEXT("GraphicsAdapter"), GraphicsAdapter, GEngineIni) && GraphicsAdapter >= 0) - { - TRefCountPtr DXGIFactory; - TRefCountPtr DXGIAdapter; - DXGI_ADAPTER_DESC DXGIAdapterDesc; - - if (SUCCEEDED(CreateDXGIFactory(__uuidof(IDXGIFactory), (void**)DXGIFactory.GetInitReference())) && SUCCEEDED(DXGIFactory->EnumAdapters(GraphicsAdapter, DXGIAdapter.GetInitReference())) && SUCCEEDED(DXGIAdapter->GetDesc(&DXGIAdapterDesc))) - { - FMemory::Memcpy(&GraphicsAdapterLuid, &DXGIAdapterDesc.AdapterLuid, sizeof(GraphicsAdapterLuid)); - } - } - } -#endif - -#if OCULUS_HMD_SUPPORTED_PLATFORMS - return GraphicsAdapterLuid; -#else - return 0; -#endif -} - -FString FOculusXRHMDModule::GetAudioInputDevice() -{ - FString AudioInputDevice; -#if OCULUS_HMD_SUPPORTED_PLATFORMS - GConfig->GetString(TEXT("Oculus.Settings"), TEXT("AudioInputDevice"), AudioInputDevice, GEngineIni); -#endif - return AudioInputDevice; -} - -FString FOculusXRHMDModule::GetAudioOutputDevice() -{ - FString AudioOutputDevice; -#if OCULUS_HMD_SUPPORTED_PLATFORMS -#if PLATFORM_WINDOWS - if (bPreInit) - { - if (FApp::CanEverRender()) - { - const WCHAR* audioOutDeviceId; - if (OVRP_SUCCESS(PluginWrapper.GetAudioOutDeviceId2((const void**)&audioOutDeviceId)) && audioOutDeviceId) - { - AudioOutputDevice = audioOutDeviceId; - } - } - } -#else - GConfig->GetString(TEXT("Oculus.Settings"), TEXT("AudioOutputDevice"), AudioOutputDevice, GEngineIni); -#endif -#endif - return AudioOutputDevice; -} - -TSharedPtr FOculusXRHMDModule::CreateTrackingSystem() -{ -#if OCULUS_HMD_SUPPORTED_PLATFORMS - if (bPreInit || (GIsEditor && PLATFORM_WINDOWS)) - { - // If -HMDSimulator is used as the command option to launch UE, use simulator runtime instead of the physical HMD runtime (like PC-Link). - if (FParse::Param(FCommandLine::Get(), TEXT("HMDSimulator")) && IsSimulatorInstalled()) - { - if (!IsSimulatorActivated()) - { - ToggleOpenXRRuntime(); - } - } - - OculusXRHMD::FOculusXRHMDPtr OculusXRHMD = FSceneViewExtensions::NewExtension(); - - if (OculusXRHMD->Startup()) - { - HeadMountedDisplay = OculusXRHMD; - return OculusXRHMD; - } - } - HeadMountedDisplay = nullptr; -#endif - return nullptr; -} - -TSharedPtr FOculusXRHMDModule::GetVulkanExtensions() -{ -#if OCULUS_HMD_SUPPORTED_PLATFORMS - if (bPreInit) - { - if (!VulkanExtensions.IsValid()) - { - VulkanExtensions = MakeShareable(new OculusXRHMD::FVulkanExtensions); - } - } -#if WITH_EDITOR && PLATFORM_WINDOWS - else if (GIsEditor) - { - // OpenXR has no ability to query for possible vulkan extensions without connecting a HMD. - // This is a problem, because we need to create our VkInstance and VkDevice to render in 2D and there's no HMD. - // For now, as a workaround, we hardcode the extensions that Oculus's OpenXR implementation needs. - // Eventually, one of three things has to happen for a proper fix: - // - // 1. OculusXRHMD (or, better, OVRPlugin) maintains a separate VkInstance that has the right extensions, - // and uses the vk_external extensions to transfer data between them when needed. - // 2. OpenXR changes to allow querying instance and device extensions without an active HMD. - // It may still require a physical device handle to list device extensions. - // 3. Oculus's Link implementation for OpenXR changes to allow an XrSystemId to be created before a headset - // is connected (possibly as an opt-in OpenXR extension for backwards compatibility). - // - // (2) or (3) are preferable, but if OpenXR is held constant we will have to do (1). - if (!VulkanExtensions.IsValid()) - { - VulkanExtensions = MakeShareable(new OculusXRHMD::FEditorVulkanExtensions); - } - } -#endif - return VulkanExtensions; -#endif - return nullptr; -} - -FString FOculusXRHMDModule::GetDeviceSystemName() -{ -#if OCULUS_HMD_SUPPORTED_PLATFORMS - ovrpSystemHeadset SystemHeadset; - if (PluginWrapper.IsInitialized() && OVRP_SUCCESS(PluginWrapper.GetSystemHeadsetType2(&SystemHeadset))) - { - switch (SystemHeadset) - { - case ovrpSystemHeadset_Oculus_Quest: - return FString("Oculus Quest"); - - case ovrpSystemHeadset_Oculus_Quest_2: - default: - return FString("Oculus Quest2"); - - case ovrpSystemHeadset_Meta_Quest_Pro: - return FString("Meta Quest Pro"); - - case ovrpSystemHeadset_Meta_Quest_3: - return FString("Meta Quest 3"); - - case ovrpSystemHeadset_Meta_Quest_3S: -// The marketplace engine does not have the Quest 3S device profile yet, so just represent the system as Quest 3 to use the closest device profile -#ifdef WITH_OCULUS_BRANCH - return FString("Meta Quest 3S"); -#else // WITH_OCULUS_BRANCH - return FString("Meta Quest 3"); -#endif // WITH_OCULUS_BRANCH - } - } - return FString(); -#else - return FString(); -#endif -} - -bool FOculusXRHMDModule::IsStandaloneStereoOnlyDevice() -{ -#if PLATFORM_ANDROID - return FAndroidMisc::GetDeviceMake() == FString("Oculus"); -#else - return false; -#endif -} - -bool FOculusXRHMDModule::IsSimulatorActivated() -{ -#if PLATFORM_WINDOWS - return FMetaXRSimulator::IsSimulatorActivated(); -#else - return false; -#endif -} - -bool FOculusXRHMDModule::IsSimulatorInstalled() -{ -#if PLATFORM_WINDOWS - return FMetaXRSimulator::IsSimulatorInstalled(); -#else - return false; -#endif -} - -void FOculusXRHMDModule::ToggleOpenXRRuntime() -{ -#if PLATFORM_WINDOWS - FMetaXRSimulator::ToggleOpenXRRuntime(); -#endif -} - -void FOculusXRHMDModule::LaunchEnvironment(int32 EnvironmentIndex) -{ -#if PLATFORM_WINDOWS - FMetaXRSES::LaunchEnvironment(EnvironmentIndex); -#endif -} - -void FOculusXRHMDModule::StopServer() -{ -#if PLATFORM_WINDOWS - FMetaXRSES::StopServer(); -#endif -} - -#if OCULUS_HMD_SUPPORTED_PLATFORMS -void* FOculusXRHMDModule::GetOVRPluginHandle() -{ - void* OVRPluginHandle = nullptr; - -#if PLATFORM_WINDOWS - FString XrApi; - if (!FModuleManager::Get().IsModuleLoaded("OpenXRHMD") || !GConfig->GetString(TEXT("/Script/OculusXRHMD.OculusXRHMDRuntimeSettings"), TEXT("XrApi"), XrApi, GEngineIni) || XrApi.Equals(FString("OVRPluginOpenXR"))) - { - FString BinariesPath = FPaths::Combine(IPluginManager::Get().FindPlugin(TEXT("OculusXR"))->GetBaseDir(), TEXT("/Source/ThirdParty/OVRPlugin/OVRPlugin/Lib/Win64")); - FPlatformProcess::PushDllDirectory(*BinariesPath); - OVRPluginHandle = FPlatformProcess::GetDllHandle(*(BinariesPath / "OpenXR/OVRPlugin.dll")); - FPlatformProcess::PopDllDirectory(*BinariesPath); - } -#elif PLATFORM_ANDROID - OVRPluginHandle = FPlatformProcess::GetDllHandle(TEXT("libOVRPlugin.so")); -#endif // PLATFORM_ANDROID - - return OVRPluginHandle; -} - -bool FOculusXRHMDModule::PoseToOrientationAndPosition(const FQuat& InOrientation, const FVector& InPosition, FQuat& OutOrientation, FVector& OutPosition) const -{ - OculusXRHMD::CheckInGameThread(); - - OculusXRHMD::FOculusXRHMD* OculusXRHMD = static_cast(HeadMountedDisplay.Pin().Get()); - - if (OculusXRHMD) - { - ovrpPosef InPose; - InPose.Orientation = OculusXRHMD::ToOvrpQuatf(InOrientation); - InPose.Position = OculusXRHMD::ToOvrpVector3f(InPosition); - OculusXRHMD::FPose OutPose; - - if (OculusXRHMD->ConvertPose(InPose, OutPose)) - { - OutOrientation = OutPose.Orientation; - OutPosition = OutPose.Position; - return true; - } - } - - return false; -} - -void FOculusXRHMDModule::SetGraphicsAdapterLuid(uint64 InLuid) -{ - GraphicsAdapterLuid = InLuid; - -#if OCULUS_HMD_SUPPORTED_PLATFORMS_D3D11 || OCULUS_HMD_SUPPORTED_PLATFORMS_D3D12 - TRefCountPtr DXGIFactory; - - if (SUCCEEDED(CreateDXGIFactory(__uuidof(IDXGIFactory), (void**)DXGIFactory.GetInitReference()))) - { - for (int32 adapterIndex = 0;; adapterIndex++) - { - TRefCountPtr DXGIAdapter; - DXGI_ADAPTER_DESC DXGIAdapterDesc; - - if (FAILED(DXGIFactory->EnumAdapters(adapterIndex, DXGIAdapter.GetInitReference())) || FAILED(DXGIAdapter->GetDesc(&DXGIAdapterDesc))) - { - break; - } - - if (!FMemory::Memcmp(&GraphicsAdapterLuid, &DXGIAdapterDesc.AdapterLuid, sizeof(GraphicsAdapterLuid))) - { - // Remember this adapterIndex so we use the right adapter, even when we startup without HMD connected - GConfig->SetInt(TEXT("Oculus.Settings"), TEXT("GraphicsAdapter"), adapterIndex, GEngineIni); - break; - } - } - } -#endif // OCULUS_HMD_SUPPORTED_PLATFORMS_D3D11 || OCULUS_HMD_SUPPORTED_PLATFORMS_D3D12 -} -#endif // OCULUS_HMD_SUPPORTED_PLATFORMS - -IMPLEMENT_MODULE(FOculusXRHMDModule, OculusXRHMD) diff --git a/Plugins/MetaXR/Source/OculusXRHMD/Private/OculusXRHMDModule.h b/Plugins/MetaXR/Source/OculusXRHMD/Private/OculusXRHMDModule.h deleted file mode 100644 index cc0f96c..0000000 --- a/Plugins/MetaXR/Source/OculusXRHMD/Private/OculusXRHMDModule.h +++ /dev/null @@ -1,126 +0,0 @@ -// @lint-ignore-every LICENSELINT -// Copyright Epic Games, Inc. All Rights Reserved. - -#pragma once -#include "OculusXRHMDPrivate.h" -#include "IHeadMountedDisplay.h" -#include "OculusXRFunctionLibrary.h" -#include "OculusXRHMD_VulkanExtensions.h" -#include "OculusXRPluginWrapper.h" -#include "OpenXR/OculusXRExtensionPluginManager.h" - -//------------------------------------------------------------------------------------------------- -// FOculusXRHMDModule -//------------------------------------------------------------------------------------------------- - -class FOculusXRHMDModule : public IOculusXRHMDModule -{ -public: - FOculusXRHMDModule(); - - static inline FOculusXRHMDModule& Get() - { - return FModuleManager::LoadModuleChecked(NAME_OculusXRHMD); - } - - // IModuleInterface - virtual void StartupModule() override; - virtual void ShutdownModule() override; - - // IHeadMountedDisplayModule - virtual FString GetModuleKeyName() const override; - virtual void GetModuleAliases(TArray& AliasesOut) const override; - virtual bool PreInit() override; - virtual bool IsHMDConnected() override; - virtual uint64 GetGraphicsAdapterLuid() override; - virtual FString GetAudioInputDevice() override; - virtual FString GetAudioOutputDevice() override; - virtual FString GetDeviceSystemName() override; - - virtual TSharedPtr CreateTrackingSystem() override; - virtual TSharedPtr GetVulkanExtensions() override; - virtual bool IsStandaloneStereoOnlyDevice() override; - - virtual OculusXR::FExtensionPluginManager& GetExtensionPluginManager(); - - // IOculusXRHMDModule - virtual void GetPose(FRotator& DeviceRotation, FVector& DevicePosition, FVector& NeckPosition, bool bUseOrienationForPlayerCamera = false, bool bUsePositionForPlayerCamera = false, const FVector PositionScale = FVector::ZeroVector) override - { - UOculusXRFunctionLibrary::GetPose(DeviceRotation, DevicePosition, NeckPosition, bUseOrienationForPlayerCamera, bUsePositionForPlayerCamera, PositionScale); - } - - virtual void GetRawSensorData(FVector& AngularAcceleration, FVector& LinearAcceleration, FVector& AngularVelocity, FVector& LinearVelocity, float& TimeInSeconds) override - { - UOculusXRFunctionLibrary::GetRawSensorData(AngularAcceleration, LinearAcceleration, AngularVelocity, LinearVelocity, TimeInSeconds, EOculusXRTrackedDeviceType::HMD); - } - - virtual bool GetUserProfile(struct FOculusXRHmdUserProfile& Profile) override - { - return UOculusXRFunctionLibrary::GetUserProfile(Profile); - } - - virtual void SetBaseRotationAndBaseOffsetInMeters(FRotator Rotation, FVector BaseOffsetInMeters, EOrientPositionSelector::Type Options) override - { - UOculusXRFunctionLibrary::SetBaseRotationAndBaseOffsetInMeters(Rotation, BaseOffsetInMeters, Options); - } - - virtual void GetBaseRotationAndBaseOffsetInMeters(FRotator& OutRotation, FVector& OutBaseOffsetInMeters) override - { - UOculusXRFunctionLibrary::GetBaseRotationAndBaseOffsetInMeters(OutRotation, OutBaseOffsetInMeters); - } - - virtual void SetBaseRotationAndPositionOffset(FRotator BaseRot, FVector PosOffset, EOrientPositionSelector::Type Options) override - { - UOculusXRFunctionLibrary::SetBaseRotationAndPositionOffset(BaseRot, PosOffset, Options); - } - - virtual void GetBaseRotationAndPositionOffset(FRotator& OutRot, FVector& OutPosOffset) override - { - UOculusXRFunctionLibrary::GetBaseRotationAndPositionOffset(OutRot, OutPosOffset); - } - - virtual class IStereoLayers* GetStereoLayers() override - { - return UOculusXRFunctionLibrary::GetStereoLayers(); - } - - bool IsOVRPluginAvailable() const - { -#if OCULUS_HMD_SUPPORTED_PLATFORMS - return OVRPluginHandle != nullptr; -#else - return false; -#endif - } - - // FMetaXRSimulator - OCULUSXRHMD_API static bool IsSimulatorActivated(); - OCULUSXRHMD_API static void ToggleOpenXRRuntime(); - OCULUSXRHMD_API static bool IsSimulatorInstalled(); - - // FMetaXRSES - OCULUSXRHMD_API static void LaunchEnvironment(int32 EnvironmentIndex); - OCULUSXRHMD_API static void StopServer(); - -#if OCULUS_HMD_SUPPORTED_PLATFORMS - OCULUSXRHMD_API static void* GetOVRPluginHandle(); - OCULUSXRHMD_API static OculusPluginWrapper& GetPluginWrapper(); - virtual bool PoseToOrientationAndPosition(const FQuat& InOrientation, const FVector& InPosition, FQuat& OutOrientation, FVector& OutPosition) const override; - -protected: - void SetGraphicsAdapterLuid(uint64 InLuid); - - static OculusPluginWrapper PluginWrapper; - - bool bPreInit; - bool bPreInitCalled; - void* OVRPluginHandle; - uint64 GraphicsAdapterLuid; - TWeakPtr HeadMountedDisplay; - TSharedPtr VulkanExtensions; - OculusXR::FExtensionPluginManager ExtensionPluginManager; - - friend class ::OculusXRHMD::FOculusXRHMD; - -#endif // OCULUS_HMD_SUPPORTED_PLATFORMS -}; diff --git a/Plugins/MetaXR/Source/OculusXRHMD/Private/OculusXRHMDPrivate.cpp b/Plugins/MetaXR/Source/OculusXRHMD/Private/OculusXRHMDPrivate.cpp deleted file mode 100644 index df90919..0000000 --- a/Plugins/MetaXR/Source/OculusXRHMD/Private/OculusXRHMDPrivate.cpp +++ /dev/null @@ -1,103 +0,0 @@ -// @lint-ignore-every LICENSELINT -// Copyright Epic Games, Inc. All Rights Reserved. - -#include "OculusXRHMDPrivate.h" -#include "RHICommandList.h" -#include "RenderingThread.h" - -namespace OculusXRHMD -{ - - //------------------------------------------------------------------------------------------------- - // Utility functions - //------------------------------------------------------------------------------------------------- - - // TODO: Change in case of parallel game threads - bool InGameThread() - { - if (GIsGameThreadIdInitialized) - { - return FPlatformTLS::GetCurrentThreadId() == GGameThreadId; - } - else - { - return true; - } - } - - bool InRenderThread() - { -#if UE_VERSION_OLDER_THAN(5, 5, 0) - if (GIsThreadedRendering && !GIsRenderingThreadSuspended.Load(EMemoryOrder::Relaxed)) -#else - if (GIsThreadedRendering) -#endif - { - return IsInParallelRenderingThread(); - } - else - { - return InGameThread(); - } - } - - // TODO: Change in case of parallel RHI threads - bool InRHIThread() - { -#if UE_VERSION_OLDER_THAN(5, 5, 0) - if (GIsThreadedRendering && !GIsRenderingThreadSuspended.Load(EMemoryOrder::Relaxed)) -#else - if (GIsThreadedRendering) -#endif - { - if (IsRHIThreadRunning()) - { - if (IsInRHIThread()) - { - return true; - } - - if (IsInParallelRenderingThread()) - { - return GetImmediateCommandList_ForRenderCommand().Bypass(); - } - - return false; - } - else - { - return IsInParallelRenderingThread(); - } - } - else - { - return InGameThread(); - } - } - - bool ConvertPose_Internal(const FPose& InPose, FPose& OutPose, const FQuat BaseOrientation, const FVector BaseOffset, float WorldToMetersScale) - { - // apply base orientation correction - OutPose.Orientation = BaseOrientation.Inverse() * InPose.Orientation; - OutPose.Orientation.Normalize(); - - // correct position according to BaseOrientation and BaseOffset. - OutPose.Position = (InPose.Position - BaseOffset) * WorldToMetersScale; - OutPose.Position = BaseOrientation.Inverse().RotateVector(OutPose.Position); - - return true; - } - - bool ConvertPose_Internal(const ovrpPosef& InPose, FPose& OutPose, const FQuat BaseOrientation, const FVector BaseOffset, float WorldToMetersScale) - { - return ConvertPose_Internal(FPose(ToFQuat(InPose.Orientation), ToFVector(InPose.Position)), OutPose, BaseOrientation, BaseOffset, WorldToMetersScale); - } - - bool ConvertPose_Internal(const FPose& InPose, ovrpPosef& OutPose, const FQuat BaseOrientation, const FVector BaseOffset, float WorldToMetersScale) - { - OutPose.Orientation = ToOvrpQuatf(BaseOrientation * InPose.Orientation); - OutPose.Position = ToOvrpVector3f(BaseOrientation.RotateVector(InPose.Position) / WorldToMetersScale + BaseOffset); - return true; - } - -} // namespace OculusXRHMD diff --git a/Plugins/MetaXR/Source/OculusXRHMD/Private/OculusXRHMDPrivate.h b/Plugins/MetaXR/Source/OculusXRHMD/Private/OculusXRHMDPrivate.h deleted file mode 100644 index 8e292e9..0000000 --- a/Plugins/MetaXR/Source/OculusXRHMD/Private/OculusXRHMDPrivate.h +++ /dev/null @@ -1,317 +0,0 @@ -// @lint-ignore-every LICENSELINT -// Copyright Epic Games, Inc. All Rights Reserved. - -#pragma once -#include "GameFramework/WorldSettings.h" -#include "IOculusXRHMDModule.h" -#include "OculusXRFunctionLibrary.h" -#include "OculusXRPassthroughLayerShapes.h" -#include "StereoRendering.h" -#include "HAL/RunnableThread.h" -#include "RHI.h" -#include - -#if OCULUS_HMD_SUPPORTED_PLATFORMS -#define OCULUS_HMD_SUPPORTED_PLATFORMS_D3D11 PLATFORM_WINDOWS -#define OCULUS_HMD_SUPPORTED_PLATFORMS_D3D12 PLATFORM_WINDOWS -#define OCULUS_HMD_SUPPORTED_PLATFORMS_VULKAN (PLATFORM_WINDOWS || PLATFORM_ANDROID) -#else -#define OCULUS_HMD_SUPPORTED_PLATFORMS_D3D11 0 -#define OCULUS_HMD_SUPPORTED_PLATFORMS_D3D12 0 -#define OCULUS_HMD_SUPPORTED_PLATFORMS_VULKAN 0 -#endif // OCULUS_HMD_SUPPORTED_PLATFORMS - -//------------------------------------------------------------------------------------------------- -// OVRPlugin -//------------------------------------------------------------------------------------------------- - -#if OCULUS_HMD_SUPPORTED_PLATFORMS -#include "OculusXRPluginWrapper.h" -#endif // OCULUS_HMD_SUPPORTED_PLATFORMS - -//------------------------------------------------------------------------------------------------- -// Utility functions -//------------------------------------------------------------------------------------------------- - -namespace OculusXRHMD -{ -#if OCULUS_HMD_SUPPORTED_PLATFORMS - struct FPose - { - FQuat Orientation; - FVector Position; - - FPose() - : Orientation(EForceInit::ForceInit) - , Position(EForceInit::ForceInit) - { - } - - FPose(const FQuat& InOrientation, const FVector& InPosition) - : Orientation(InOrientation), Position(InPosition) {} - - FPose Inverse() const - { - FQuat InvOrientation = Orientation.Inverse(); - FVector InvPosition = InvOrientation.RotateVector(-Position); - return FPose(InvOrientation, InvPosition); - } - - FPose operator*(const FPose& other) const - { - return FPose(Orientation * other.Orientation, Orientation.RotateVector(other.Position) + Position); - } - }; - - /** Converts ovrpQuatf to FQuat */ - FORCEINLINE FQuat ToFQuat(const ovrpQuatf& InQuat) - { - return FQuat(-InQuat.z, InQuat.x, InQuat.y, -InQuat.w); - } - - /** Converts FQuat to ovrpQuatf */ - FORCEINLINE ovrpQuatf ToOvrpQuatf(const FQuat& InQuat) - { - return ovrpQuatf{ static_cast(InQuat.Y), static_cast(InQuat.Z), static_cast(-InQuat.X), static_cast(-InQuat.W) }; - } - - /** Converts vector from Oculus to Unreal */ - FORCEINLINE FVector ToFVector(const ovrpVector3f& InVec) - { - return FVector(-InVec.z, InVec.x, InVec.y); - } - - /** Converts vector from Unreal to Oculus. */ - FORCEINLINE ovrpVector3f ToOvrpVector3f(const FVector& InVec) - { - return ovrpVector3f{ static_cast(InVec.Y), static_cast(InVec.Z), static_cast(-InVec.X) }; - } - - FORCEINLINE FMatrix ToFMatrix(const ovrpMatrix4f& vtm) - { - // Rows and columns are swapped between ovrpMatrix4f and FMatrix - return FMatrix( - FPlane(vtm.M[0][0], vtm.M[1][0], vtm.M[2][0], vtm.M[3][0]), - FPlane(vtm.M[0][1], vtm.M[1][1], vtm.M[2][1], vtm.M[3][1]), - FPlane(vtm.M[0][2], vtm.M[1][2], vtm.M[2][2], vtm.M[3][2]), - FPlane(vtm.M[0][3], vtm.M[1][3], vtm.M[2][3], vtm.M[3][3])); - } - - FORCEINLINE ovrpVector4f LinearColorToOvrpVector4f(const FLinearColor& InColor) - { - return ovrpVector4f{ InColor.R, InColor.G, InColor.B, InColor.A }; - } - - FORCEINLINE ovrpRecti ToOvrpRecti(const FIntRect& rect) - { - return ovrpRecti{ { rect.Min.X, rect.Min.Y }, { rect.Size().X, rect.Size().Y } }; - } - - FORCEINLINE FLinearColor ToFLinearColor(const ovrpColorf& color) - { - return FLinearColor(color.r, color.g, color.b, color.a); - } - - FORCEINLINE ovrpColorf ToOvrpColorf(const FLinearColor LinearColor) - { - return ovrpColorf{ LinearColor.R, LinearColor.G, LinearColor.B, LinearColor.A }; - } - - FORCEINLINE ovrpMatrix4f ToOvrpMatrix(FMatrix Matrix) - { - ovrpMatrix4f Result; - - Result.M[0][0] = Matrix.M[0][0]; - Result.M[0][1] = Matrix.M[0][1]; - Result.M[0][2] = Matrix.M[0][2]; - Result.M[0][3] = Matrix.M[0][3]; - - Result.M[1][0] = Matrix.M[1][0]; - Result.M[1][1] = Matrix.M[1][1]; - Result.M[1][2] = Matrix.M[1][2]; - Result.M[1][3] = Matrix.M[1][3]; - - Result.M[2][0] = Matrix.M[2][0]; - Result.M[2][1] = Matrix.M[2][1]; - Result.M[2][2] = Matrix.M[2][2]; - Result.M[2][3] = Matrix.M[2][3]; - - Result.M[3][0] = Matrix.M[3][0]; - Result.M[3][1] = Matrix.M[3][1]; - Result.M[3][2] = Matrix.M[3][2]; - Result.M[3][3] = Matrix.M[3][3]; - - return Result; - } - - - /** Helper that converts ovrTrackedDeviceType to EOculusXRTrackedDeviceType */ - FORCEINLINE EOculusXRTrackedDeviceType ToEOculusXRTrackedDeviceType(ovrpNode Source) - { - EOculusXRTrackedDeviceType Destination = EOculusXRTrackedDeviceType::All; // Best attempt at initialization - - switch (Source) - { - case ovrpNode_None: - Destination = EOculusXRTrackedDeviceType::None; - break; - case ovrpNode_Head: - Destination = EOculusXRTrackedDeviceType::HMD; - break; - case ovrpNode_HandLeft: - Destination = EOculusXRTrackedDeviceType::LTouch; - break; - case ovrpNode_HandRight: - Destination = EOculusXRTrackedDeviceType::RTouch; - break; - case ovrpNode_DeviceObjectZero: - Destination = EOculusXRTrackedDeviceType::DeviceObjectZero; - break; - default: - break; - } - return Destination; - } - - /** Helper that converts EOculusXRTrackedDeviceType to ovrTrackedDeviceType */ - FORCEINLINE ovrpNode ToOvrpNode(EOculusXRTrackedDeviceType Source) - { - ovrpNode Destination = ovrpNode_None; // Best attempt at initialization - - switch (Source) - { - case EOculusXRTrackedDeviceType::None: - Destination = ovrpNode_None; - break; - case EOculusXRTrackedDeviceType::HMD: - Destination = ovrpNode_Head; - break; - case EOculusXRTrackedDeviceType::LTouch: - Destination = ovrpNode_HandLeft; - break; - case EOculusXRTrackedDeviceType::RTouch: - Destination = ovrpNode_HandRight; - break; - case EOculusXRTrackedDeviceType::DeviceObjectZero: - Destination = ovrpNode_DeviceObjectZero; - break; - default: - break; - } - return Destination; - } - - FORCEINLINE int32 ToExternalDeviceId(const ovrpNode Source) - { - int32 ExternalDeviceId = INDEX_NONE; - switch (Source) - { - case ovrpNode_Head: - // required to be zero (see IXRTrackingSystem::HMDDeviceId) - ExternalDeviceId = 0; - break; - case ovrpNode_None: - case ovrpNode_Count: - case ovrpNode_EnumSize: - // ExternalDeviceId = INDEX_NONE; - break; - default: - // add one, in case the enum value is zero (conflicting with the HMD) - ExternalDeviceId = 1 + (int32)Source; - break; - } - return ExternalDeviceId; - } - - FORCEINLINE ovrpNode ToOvrpNode(const int32 ExternalDeviceId) - { - ovrpNode Destination = ovrpNode_None; - switch (ExternalDeviceId) - { - case 0: - // zero implies HMD (see ToExternalDeviceId/IXRTrackingSystem::HMDDeviceId) - Destination = ovrpNode_Head; - break; - case -1: - // Destination = ovrpNode_None; - break; - default: - // we added one to avoid collision with the HMD's ID (see ToExternalDeviceId) - Destination = ovrpNode(ExternalDeviceId - 1); - break; - } - return Destination; - } - - bool ConvertPose_Internal(const FPose& InPose, FPose& OutPose, const FQuat BaseOrientation, const FVector BaseOffset, float WorldToMetersScale); - - bool ConvertPose_Internal(const ovrpPosef& InPose, FPose& OutPose, const FQuat BaseOrientation, const FVector BaseOffset, float WorldToMetersScale); - - bool ConvertPose_Internal(const FPose& InPose, ovrpPosef& OutPose, const FQuat BaseOrientation, const FVector BaseOffset, float WorldToMetersScale); - - FORCEINLINE ovrpInsightPassthroughColorMapType ToOVRPColorMapType(EOculusXRColorMapType InColorMapType) - { - switch (InColorMapType) - { - case ColorMapType_GrayscaleToColor: - return ovrpInsightPassthroughColorMapType_MonoToRgba; - case ColorMapType_Grayscale: - return ovrpInsightPassthroughColorMapType_MonoToMono; - case ColorMapType_ColorAdjustment: - return ovrpInsightPassthroughColorMapType_BrightnessContrastSaturation; - case ColorMapType_ColorLut: - return ovrpInsightPassthroughColorMapType_ColorLut; - case ColorMapType_ColorLut_Interpolated: - return ovrpInsightPassthroughColorMapType_InterpolatedColorLut; - default: - return ovrpInsightPassthroughColorMapType_None; - } - } - -#endif // OCULUS_HMD_SUPPORTED_PLATFORMS - - /** Check currently executing from Game thread */ - OCULUSXRHMD_API bool InGameThread(); - - FORCEINLINE void CheckInGameThread() - { -#if DO_CHECK - check(InGameThread()); -#endif - } - - /** Check currently executing from Render thread */ - OCULUSXRHMD_API bool InRenderThread(); - - FORCEINLINE void CheckInRenderThread() - { -#if DO_CHECK - check(InRenderThread()); -#endif - } - - /** Check currently executing from RHI thread */ - OCULUSXRHMD_API bool InRHIThread(); - - FORCEINLINE void CheckInRHIThread() - { -#if DO_CHECK - check(InRHIThread()); -#endif - } - - FORCEINLINE bool GetUnitScaleFactorFromSettings(UWorld* World, float& outWorldToMeters) - { - if (IsValid(World)) - { - const auto* WorldSettings = World->GetWorldSettings(); - if (IsValid(WorldSettings)) - { - outWorldToMeters = WorldSettings->WorldToMeters; - return true; - } - } - return false; - } - -} // namespace OculusXRHMD diff --git a/Plugins/MetaXR/Source/OculusXRHMD/Private/OculusXRHMDPrivateRHI.h b/Plugins/MetaXR/Source/OculusXRHMD/Private/OculusXRHMDPrivateRHI.h deleted file mode 100644 index 2d35c17..0000000 --- a/Plugins/MetaXR/Source/OculusXRHMD/Private/OculusXRHMDPrivateRHI.h +++ /dev/null @@ -1,64 +0,0 @@ -// @lint-ignore-every LICENSELINT -// Copyright Epic Games, Inc. All Rights Reserved. - -#pragma once - -#if OCULUS_HMD_SUPPORTED_PLATFORMS - -//------------------------------------------------------------------------------------------------- -// D3D11 -//------------------------------------------------------------------------------------------------- - -#if OCULUS_HMD_SUPPORTED_PLATFORMS_D3D11 -#include "ID3D11DynamicRHI.h" -#endif // OCULUS_HMD_SUPPORTED_PLATFORMS_D3D11 - -//------------------------------------------------------------------------------------------------- -// D3D12 -//------------------------------------------------------------------------------------------------- - -#if OCULUS_HMD_SUPPORTED_PLATFORMS_D3D12 -#define GetD3D11CubeFace GetD3D12CubeFace -#define VerifyD3D11Result VerifyD3D12Result -#define GetD3D11TextureFromRHITexture GetD3D12TextureFromRHITexture -#define FRingAllocation FRingAllocation_D3D12 -#define GetRenderTargetFormat GetRenderTargetFormat_D3D12 -#define ED3D11ShaderOffsetBuffer ED3D12ShaderOffsetBuffer -#define FindShaderResourceDXGIFormat FindShaderResourceDXGIFormat_D3D12 -#define FindUnorderedAccessDXGIFormat FindUnorderedAccessDXGIFormat_D3D12 -#define FindDepthStencilDXGIFormat FindDepthStencilDXGIFormat_D3D12 -#define HasStencilBits HasStencilBits_D3D12 -#define FVector4VertexDeclaration FVector4VertexDeclaration_D3D12 -#define GLOBAL_CONSTANT_BUFFER_INDEX GLOBAL_CONSTANT_BUFFER_INDEX_D3D12 -#define MAX_CONSTANT_BUFFER_SLOTS MAX_CONSTANT_BUFFER_SLOTS_D3D12 -#define FD3DGPUProfiler FD3D12GPUProfiler -#define FRangeAllocator FRangeAllocator_D3D12 - -#include "ID3D12DynamicRHI.h" - -#undef GetD3D11CubeFace -#undef VerifyD3D11Result -#undef GetD3D11TextureFromRHITexture -#undef FRingAllocation -#undef GetRenderTargetFormat -#undef ED3D11ShaderOffsetBuffer -#undef FindShaderResourceDXGIFormat -#undef FindUnorderedAccessDXGIFormat -#undef FindDepthStencilDXGIFormat -#undef HasStencilBits -#undef FVector4VertexDeclaration -#undef GLOBAL_CONSTANT_BUFFER_INDEX -#undef MAX_CONSTANT_BUFFER_SLOTS -#undef FD3DGPUProfiler -#undef FRangeAllocator -#endif // OCULUS_HMD_SUPPORTED_PLATFORMS_D3D12 - -//------------------------------------------------------------------------------------------------- -// Vulkan -//------------------------------------------------------------------------------------------------- - -#if OCULUS_HMD_SUPPORTED_PLATFORMS_VULKAN -#include "IVulkanDynamicRHI.h" -#endif // OCULUS_HMD_SUPPORTED_PLATFORMS_VULKAN - -#endif // OCULUS_HMD_SUPPORTED_PLATFORMS diff --git a/Plugins/MetaXR/Source/OculusXRHMD/Private/OculusXRHMDRuntimeSettings.cpp b/Plugins/MetaXR/Source/OculusXRHMD/Private/OculusXRHMDRuntimeSettings.cpp deleted file mode 100644 index e01ce5f..0000000 --- a/Plugins/MetaXR/Source/OculusXRHMD/Private/OculusXRHMDRuntimeSettings.cpp +++ /dev/null @@ -1,378 +0,0 @@ -// @lint-ignore-every LICENSELINT -// Copyright Epic Games, Inc. All Rights Reserved. - -#include "OculusXRHMDRuntimeSettings.h" -#include "Algo/ForEach.h" - -////////////////////////////////////////////////////////////////////////// -// UOculusXRHMDRuntimeSettings - -#include "OculusXRHMD_Settings.h" - -#include "DeviceProfiles/DeviceProfile.h" -#include "DeviceProfiles/DeviceProfileManager.h" - -UOculusXRHMDRuntimeSettings::UOculusXRHMDRuntimeSettings(const FObjectInitializer& ObjectInitializer) - : Super(ObjectInitializer) - , bAutoEnabled(false) -{ -#if OCULUS_HMD_SUPPORTED_PLATFORMS - // FSettings is the sole source of truth for Oculus default settings - OculusXRHMD::FSettings DefaultSettings; - SystemSplashBackground = DefaultSettings.SystemSplashBackground; - bSupportsDash = DefaultSettings.Flags.bSupportsDash; - bCompositesDepth = DefaultSettings.Flags.bCompositeDepth; - bHQDistortion = DefaultSettings.Flags.bHQDistortion; - SuggestedCpuPerfLevel = DefaultSettings.SuggestedCpuPerfLevel; - SuggestedGpuPerfLevel = DefaultSettings.SuggestedGpuPerfLevel; - FoveatedRenderingMethod = DefaultSettings.FoveatedRenderingMethod; - FoveatedRenderingLevel = DefaultSettings.FoveatedRenderingLevel; - bDynamicFoveatedRendering = DefaultSettings.bDynamicFoveatedRendering; - bSupportEyeTrackedFoveatedRendering = DefaultSettings.bSupportEyeTrackedFoveatedRendering; - - bFocusAware = DefaultSettings.Flags.bFocusAware; - bDynamicResolution = DefaultSettings.Flags.bPixelDensityAdaptive; - XrApi = DefaultSettings.XrApi; - ColorSpace = DefaultSettings.ColorSpace; - ControllerPoseAlignment = DefaultSettings.ControllerPoseAlignment; - bRequiresSystemKeyboard = DefaultSettings.Flags.bRequiresSystemKeyboard; - HandTrackingSupport = DefaultSettings.HandTrackingSupport; - HandTrackingFrequency = DefaultSettings.HandTrackingFrequency; - HandTrackingVersion = DefaultSettings.HandTrackingVersion; - bInsightPassthroughEnabled = DefaultSettings.Flags.bInsightPassthroughEnabled; - bBodyTrackingEnabled = DefaultSettings.Flags.bBodyTrackingEnabled; - bEyeTrackingEnabled = DefaultSettings.Flags.bEyeTrackingEnabled; - bFaceTrackingEnabled = DefaultSettings.Flags.bFaceTrackingEnabled; - bSupportExperimentalFeatures = DefaultSettings.bSupportExperimentalFeatures; - bAnchorSupportEnabled = DefaultSettings.Flags.bAnchorSupportEnabled; - bAnchorSharingEnabled = DefaultSettings.Flags.bAnchorSharingEnabled; - bSceneSupportEnabled = DefaultSettings.Flags.bSceneSupportEnabled; - bIterativeCookOnTheFly = DefaultSettings.Flags.bIterativeCookOnTheFly; - bSetActivePIEToPrimary = DefaultSettings.Flags.bSetActivePIEToPrimary; - bSetCVarPIEToPrimary = DefaultSettings.Flags.bSetCVarPIEToPrimary; - bUpdateHeadPoseForInactivePlayer = DefaultSettings.Flags.bUpdateHeadPoseForInactivePlayer; - MPPoseRestoreType = DefaultSettings.MPPoseRestoreType; - bBoundaryVisibilitySupportEnabled = DefaultSettings.Flags.bBoundaryVisibilitySupportEnabled; - bDefaultBoundaryVisibilitySuppressed = DefaultSettings.Flags.bDefaultBoundaryVisibilitySuppressed; - bColocationSessionsEnabled = DefaultSettings.Flags.bColocationSessionsEnabled; - ProcessorFavor = DefaultSettings.ProcessorFavor; - bTileTurnOffEnabled = DefaultSettings.Flags.bTileTurnOffEnabled; - - BodyTrackingFidelity = DefaultSettings.BodyTrackingFidelity; - BodyTrackingJointSet = DefaultSettings.BodyTrackingJointSet; - - FaceTrackingDataSource.Empty(static_cast(EFaceTrackingDataSourceConfig::MAX)); - FaceTrackingDataSource.Append(DefaultSettings.FaceTrackingDataSource); - bFaceTrackingVisemesEnabled = DefaultSettings.bFaceTrackingVisemesEnabled; - - // Default this to false, FSettings doesn't have a separate composite depth flag for mobile - bCompositeDepthMobile = false; - - bThumbstickDpadEmulationEnabled = true; - - bSupportSBC = DefaultSettings.Flags.bSupportSBC; - SBCPath = DefaultSettings.SBCPath; -#else - // Some set of reasonable defaults, since blueprints are still available on non-Oculus platforms. - SystemSplashBackground = ESystemSplashBackgroundType::Black; - bSupportsDash = false; - bCompositesDepth = false; - bHQDistortion = false; - SuggestedCpuPerfLevel = EOculusXRProcessorPerformanceLevel::SustainedLow; - SuggestedGpuPerfLevel = EOculusXRProcessorPerformanceLevel::SustainedHigh; - FoveatedRenderingMethod = EOculusXRFoveatedRenderingMethod::FixedFoveatedRendering; - FoveatedRenderingLevel = EOculusXRFoveatedRenderingLevel::Off; - bDynamicFoveatedRendering = false; - bSupportEyeTrackedFoveatedRendering = false; - bDynamicResolution = false; - bCompositeDepthMobile = false; - bFocusAware = true; - XrApi = EOculusXRXrApi::OVRPluginOpenXR; - bLateLatching = false; - ColorSpace = EOculusXRColorSpace::P3; - ControllerPoseAlignment = EOculusXRControllerPoseAlignment::Default; - bRequiresSystemKeyboard = false; - HandTrackingSupport = EOculusXRHandTrackingSupport::ControllersOnly; - HandTrackingFrequency = EOculusXRHandTrackingFrequency::Low; - HandTrackingVersion = EOculusXRHandTrackingVersion::Default; - bInsightPassthroughEnabled = false; - bSupportExperimentalFeatures = false; - bBodyTrackingEnabled = false; - bEyeTrackingEnabled = false; - bFaceTrackingEnabled = false; - bSupportSBC = false; - bFaceTrackingVisemesEnabled = false; - bAnchorSupportEnabled = false; - bAnchorSharingEnabled = false; - bSceneSupportEnabled = false; - bIterativeCookOnTheFly = false; - bSetActivePIEToPrimary = false; - bSetCVarPIEToPrimary = false; - bUpdateHeadPoseForInactivePlayer = false; - MPPoseRestoreType = EOculusXRMPPoseRestoreType::Disabled; - bBoundaryVisibilitySupportEnabled = false; - bDefaultBoundaryVisibilitySuppressed = false; - bColocationSessionsEnabled = false; - ProcessorFavor = EProcessorFavor::FavorEqually; - bTileTurnOffEnabled = false; - bThumbstickDpadEmulationEnabled = true; -#endif - - LoadFromIni(); -} - -#if WITH_EDITOR -bool UOculusXRHMDRuntimeSettings::CanEditChange(const FProperty* InProperty) const -{ - bool bIsEditable = Super::CanEditChange(InProperty); - - if (bIsEditable && InProperty) - { - const FName PropertyName = InProperty->GetFName(); - - if (PropertyName == GET_MEMBER_NAME_CHECKED(UOculusXRHMDRuntimeSettings, XrApi) && !FModuleManager::Get().IsModuleLoaded("OpenXRHMD")) - { - bIsEditable = false; - } - -// Disable settings for marketplace release that are only compatible with the Oculus engine fork -#ifndef WITH_OCULUS_BRANCH - if (PropertyName == GET_MEMBER_NAME_CHECKED(UOculusXRHMDRuntimeSettings, FoveatedRenderingMethod) || PropertyName == GET_MEMBER_NAME_CHECKED(UOculusXRHMDRuntimeSettings, bSupportEyeTrackedFoveatedRendering) || PropertyName == GET_MEMBER_NAME_CHECKED(UOculusXRHMDRuntimeSettings, bDynamicResolution)) - - { - bIsEditable = false; - } -#endif // WITH_OCULUS_BRANCH - } - - return bIsEditable; -} - -void UOculusXRHMDRuntimeSettings::PostEditChangeProperty(struct FPropertyChangedEvent& PropertyChangedEvent) -{ - Super::PostEditChangeProperty(PropertyChangedEvent); - - if (PropertyChangedEvent.Property != nullptr) - { - // Automatically switch to Fixed Foveated Rendering when removing Eye Tracked Foveated rendering support - if (PropertyChangedEvent.Property->GetFName() == GET_MEMBER_NAME_CHECKED(UOculusXRHMDRuntimeSettings, bSupportEyeTrackedFoveatedRendering) && !bSupportEyeTrackedFoveatedRendering) - { - FoveatedRenderingMethod = EOculusXRFoveatedRenderingMethod::FixedFoveatedRendering; - UpdateSinglePropertyInConfigFile(GetClass()->FindPropertyByName(GET_MEMBER_NAME_CHECKED(UOculusXRHMDRuntimeSettings, FoveatedRenderingMethod)), GetDefaultConfigFilename()); - } - // Automatically enable support for eye tracked foveated rendering when selecting the Eye Tracked Foveated Rendering method - if (PropertyChangedEvent.Property->GetFName() == GET_MEMBER_NAME_CHECKED(UOculusXRHMDRuntimeSettings, FoveatedRenderingMethod) && FoveatedRenderingMethod == EOculusXRFoveatedRenderingMethod::EyeTrackedFoveatedRendering) - { - bSupportEyeTrackedFoveatedRendering = true; - UpdateSinglePropertyInConfigFile(GetClass()->FindPropertyByName(GET_MEMBER_NAME_CHECKED(UOculusXRHMDRuntimeSettings, bSupportEyeTrackedFoveatedRendering)), GetDefaultConfigFilename()); - } - - if (PropertyChangedEvent.Property->GetFName() == GET_MEMBER_NAME_CHECKED(UOculusXRHMDRuntimeSettings, SupportedDevices)) - { - if (PropertyChangedEvent.ChangeType == EPropertyChangeType::ArrayAdd) - { - // Get a list of all available devices - TArray deviceList; -#define OCULUS_DEVICE_LOOP(device) deviceList.Add(device); - FOREACH_ENUM_EOCULUSXRSUPPORTEDDEVICES(OCULUS_DEVICE_LOOP); -#undef OCULUS_DEVICE_LOOP - // Add last device that isn't already in the list - for (int i = deviceList.Num() - 1; i >= 0; --i) - { - if (!SupportedDevices.Contains(deviceList[i])) - { - SupportedDevices.Last() = deviceList[i]; - break; - } - // Just add another copy of the first device if nothing was available - SupportedDevices.Last() = deviceList[deviceList.Num() - 1]; - } - } - } - - // Force CTXPT when Passthough is enabled - if (PropertyChangedEvent.Property->GetFName() == GET_MEMBER_NAME_CHECKED(UOculusXRHMDRuntimeSettings, bInsightPassthroughEnabled) && bInsightPassthroughEnabled) - { - SystemSplashBackground = ESystemSplashBackgroundType::Contextual; - UpdateSinglePropertyInConfigFile(GetClass()->FindPropertyByName(GET_MEMBER_NAME_CHECKED(UOculusXRHMDRuntimeSettings, SystemSplashBackground)), GetDefaultConfigFilename()); - } - } -} -#endif // WITH_EDITOR - -void UOculusXRHMDRuntimeSettings::PostInitProperties() -{ - Super::PostInitProperties(); - RenameProperties(); - MigratePixelDensityRange(); - - const TCHAR* OculusSettings = TEXT("/Script/OculusXRHMD.OculusXRHMDRuntimeSettings"); - if (!FModuleManager::Get().IsModuleLoaded("OpenXRHMD")) - { - XrApi = EOculusXRXrApi::OVRPluginOpenXR; - UpdateSinglePropertyInConfigFile(GetClass()->FindPropertyByName(GET_MEMBER_NAME_CHECKED(UOculusXRHMDRuntimeSettings, XrApi)), GetDefaultConfigFilename()); - } - - // Force CTXPT for MR apps - if (bInsightPassthroughEnabled && SystemSplashBackground != ESystemSplashBackgroundType::Contextual) - { - SystemSplashBackground = ESystemSplashBackgroundType::Contextual; - UpdateSinglePropertyInConfigFile(GetClass()->FindPropertyByName(GET_MEMBER_NAME_CHECKED(UOculusXRHMDRuntimeSettings, SystemSplashBackground)), GetDefaultConfigFilename()); - } - - UpdateSinglePropertyInConfigFile(GetClass()->FindPropertyByName(GET_MEMBER_NAME_CHECKED(UOculusXRHMDRuntimeSettings, SBCPath)), GetDefaultConfigFilename()); -} - -void UOculusXRHMDRuntimeSettings::LoadFromIni() -{ - const TCHAR* OculusSettings = TEXT("Oculus.Settings"); - bool v; - float f; - - if (GConfig->GetFloat(OculusSettings, TEXT("PixelDensityMax"), f, GEngineIni)) - { - UE_LOG(LogTemp, Error, TEXT("DONOT manually add setting to Oculus.Settings. PixelDensityMax is ignored.")); - PixelDensityMax = 0.f; - } - if (GConfig->GetFloat(OculusSettings, TEXT("PixelDensityMin"), f, GEngineIni)) - { - UE_LOG(LogTemp, Error, TEXT("DONOT manually add setting to Oculus.Settings. PixelDensityMin is ignored.")); - PixelDensityMin = 0.f; - } - if (GConfig->GetBool(OculusSettings, TEXT("bHQDistortion"), v, GEngineIni)) - { - bHQDistortion = v; - } - if (GConfig->GetBool(OculusSettings, TEXT("bCompositeDepth"), v, GEngineIni)) - { - bCompositesDepth = v; - } -} - -/** This essentially acts like redirects for plugin settings saved in the engine config. - Anything added here should check for the current setting in the config so that if the dev changes the setting manually, we don't overwrite it with the old setting. - Note: Do not use UpdateSinglePropertyInConfigFile() here, since that uses a temp config to save the single property, - it'll get overwritten when GConfig->RemoveKey() marks the main config as dirty and it gets saved again **/ -void UOculusXRHMDRuntimeSettings::RenameProperties() -{ - const TCHAR* OculusSettings = TEXT("/Script/OculusXRHMD.OculusXRHMDRuntimeSettings"); - bool v = false; - FString str; - - // FFRLevel was renamed to FoveatedRenderingLevel - if (!GConfig->GetString(OculusSettings, GET_MEMBER_NAME_STRING_CHECKED(UOculusXRHMDRuntimeSettings, FoveatedRenderingLevel), str, GetDefaultConfigFilename()) && GConfig->GetString(OculusSettings, TEXT("FFRLevel"), str, GetDefaultConfigFilename())) - { - if (str.Equals(TEXT("FFR_Off"))) - { - FoveatedRenderingLevel = EOculusXRFoveatedRenderingLevel::Off; - } - else if (str.Equals(TEXT("FFR_Low"))) - { - FoveatedRenderingLevel = EOculusXRFoveatedRenderingLevel::Low; - } - else if (str.Equals(TEXT("FFR_Medium"))) - { - FoveatedRenderingLevel = EOculusXRFoveatedRenderingLevel::Medium; - } - else if (str.Equals(TEXT("FFR_High"))) - { - FoveatedRenderingLevel = EOculusXRFoveatedRenderingLevel::High; - } - else if (str.Equals(TEXT("FFR_HighTop"))) - { - FoveatedRenderingLevel = EOculusXRFoveatedRenderingLevel::HighTop; - } - // Use GetNameStringByValue() here because GetValueAsString() includes the type name as well - GConfig->SetString(OculusSettings, GET_MEMBER_NAME_STRING_CHECKED(UOculusXRHMDRuntimeSettings, FoveatedRenderingLevel), *StaticEnum()->GetNameStringByValue((int64)FoveatedRenderingLevel), GetDefaultConfigFilename()); - GConfig->RemoveKey(OculusSettings, TEXT("FFRLevel"), GetDefaultConfigFilename()); - } - - // FFRDynamic was renamed to bDynamicFoveatedRendering - if (!GConfig->GetString(OculusSettings, GET_MEMBER_NAME_STRING_CHECKED(UOculusXRHMDRuntimeSettings, bDynamicFoveatedRendering), str, GetDefaultConfigFilename()) && GConfig->GetBool(OculusSettings, TEXT("FFRDynamic"), v, GetDefaultConfigFilename())) - { - bDynamicFoveatedRendering = v; - GConfig->SetBool(OculusSettings, GET_MEMBER_NAME_STRING_CHECKED(UOculusXRHMDRuntimeSettings, bDynamicFoveatedRendering), bDynamicFoveatedRendering, GetDefaultConfigFilename()); - GConfig->RemoveKey(OculusSettings, TEXT("FFRDynamic"), GetDefaultConfigFilename()); - } - - const FString Quest = TEXT("Quest"); - -#ifndef WITH_OCULUS_BRANCH - const TCHAR* AndroidSettings = TEXT("/Script/AndroidRuntimeSettings.AndroidRuntimeSettings"); - TArray PackageList; - const TCHAR* PackageForMobileKey = TEXT("+PackageForOculusMobile"); - if (GConfig->GetArray(AndroidSettings, PackageForMobileKey, PackageList, GetDefaultConfigFilename())) - { - const FString Quest2 = TEXT("Quest2"); - if (PackageList.Contains(Quest)) - { - PackageList.Remove(Quest); - if (!PackageList.Contains(Quest2)) - { - PackageList.Add(Quest2); - } - GConfig->SetArray(AndroidSettings, PackageForMobileKey, PackageList, GetDefaultConfigFilename()); - } - } -#endif // WITH_OCULUS_BRANCH - - TArray DeviceList; - const FString SupportedDevicesKey = FString("+").Append(GET_MEMBER_NAME_STRING_CHECKED(UOculusXRHMDRuntimeSettings, SupportedDevices)); - if (GConfig->GetArray(OculusSettings, *SupportedDevicesKey, DeviceList, GetDefaultConfigFilename())) - { - const EOculusXRSupportedDevices LastSupportedDevice = EOculusXRSupportedDevices::Quest2; - const FString LastSupportedDeviceString = StaticEnum()->GetNameStringByValue((int64)LastSupportedDevice); - if (DeviceList.Contains(Quest)) - { - DeviceList.Remove(Quest); - if (!DeviceList.Contains(LastSupportedDeviceString)) - { - DeviceList.Add(LastSupportedDeviceString); - } - GConfig->SetArray(OculusSettings, *SupportedDevicesKey, DeviceList, GetDefaultConfigFilename()); - - // Reflect the config changes in the Project Settings UI - SupportedDevices.Remove((EOculusXRSupportedDevices)0); // Enums that don't exist just have a value of 0 - if (!SupportedDevices.Contains(LastSupportedDevice)) - { - SupportedDevices.Add(LastSupportedDevice); - } - } - } -} - -void UOculusXRHMDRuntimeSettings::MigratePixelDensityRange() -{ -#if WITH_EDITOR - if (!FMath::IsNearlyZero(PixelDensityMin)) - { - Algo::ForEach(UDeviceProfileManager::Get().Profiles, [&](UDeviceProfile* Profile) { - float ProfilePixelDensityMin = 0.f; - if (Profile->GetConsolidatedCVarValue(VAR_PixelDensityMin, ProfilePixelDensityMin)) - { - Profile->ModifyCVarValue(VAR_PixelDensityMin, FString::SanitizeFloat(PixelDensityMin), true); - UDeviceProfileManager::Get().SaveProfiles(true); - } - }); - - PixelDensityMin = 0.f; - TryUpdateDefaultConfigFile(); - UE_LOG(LogTemp, Log, TEXT("PixelDensityMin %f is migrated to per device range."), PixelDensityMin); - } - if (!FMath::IsNearlyZero(PixelDensityMax)) - { - Algo::ForEach(UDeviceProfileManager::Get().Profiles, [&](UDeviceProfile* Profile) { - float ProfilePixelDensityMax = 0.f; - if (Profile->GetConsolidatedCVarValue(VAR_PixelDensityMax, ProfilePixelDensityMax)) - { - Profile->ModifyCVarValue(VAR_PixelDensityMax, FString::SanitizeFloat(PixelDensityMax), true); - UDeviceProfileManager::Get().SaveProfiles(true); - } - }); - - PixelDensityMax = 0.f; - TryUpdateDefaultConfigFile(); - UE_LOG(LogTemp, Log, TEXT("PixelDensityMax %f is migrated to per device range."), PixelDensityMax); - } -#endif -} diff --git a/Plugins/MetaXR/Source/OculusXRHMD/Private/OculusXRHMD_ConsoleCommands.cpp b/Plugins/MetaXR/Source/OculusXRHMD/Private/OculusXRHMD_ConsoleCommands.cpp deleted file mode 100644 index f908ccf..0000000 --- a/Plugins/MetaXR/Source/OculusXRHMD/Private/OculusXRHMD_ConsoleCommands.cpp +++ /dev/null @@ -1,84 +0,0 @@ -// @lint-ignore-every LICENSELINT -// Copyright Epic Games, Inc. All Rights Reserved. -#include "OculusXRHMD_ConsoleCommands.h" - -#if OCULUS_HMD_SUPPORTED_PLATFORMS -#include "OculusXRHMD.h" -#include "OculusXRSceneCaptureCubemap.h" - -namespace OculusXRHMD -{ - - //------------------------------------------------------------------------------------------------- - // FConsoleCommands - //------------------------------------------------------------------------------------------------- - - /// @cond DOXYGEN_WARNINGS - - FConsoleCommands::FConsoleCommands(class FOculusXRHMD* InHMDPtr) - : UpdateOnRenderThreadCommand(TEXT("vr.oculus.bUpdateOnRenderThread"), - *NSLOCTEXT("OculusRift", "CCommandText_UpdateRT", "Oculus Rift specific extension.\nEnables or disables updating on the render thread.").ToString(), - FConsoleCommandWithWorldArgsAndOutputDeviceDelegate::CreateRaw(InHMDPtr, &FOculusXRHMD::UpdateOnRenderThreadCommandHandler)) - , HQBufferCommand(TEXT("vr.oculus.bHQBuffer"), - *NSLOCTEXT("OculusRift", "CCommandText_HQBuffer", "Oculus Rift specific extension.\nEnable or disable using floating point texture format for the eye layer.").ToString(), - FConsoleCommandWithWorldArgsAndOutputDeviceDelegate::CreateRaw(InHMDPtr, &FOculusXRHMD::HQBufferCommandHandler)) - , HQDistortionCommand(TEXT("vr.oculus.bHQDistortion"), - *NSLOCTEXT("OculusRift", "CCommandText_HQDistortion", "Oculus Rift specific extension.\nEnable or disable using multiple mipmap levels for the eye layer.").ToString(), - FConsoleCommandWithWorldArgsAndOutputDeviceDelegate::CreateRaw(InHMDPtr, &FOculusXRHMD::HQDistortionCommandHandler)) - , ShowGlobalMenuCommand(TEXT("vr.oculus.ShowGlobalMenu"), - *NSLOCTEXT("OculusRift", "CCommandText_GlobalMenu", "Oculus Rift specific extension.\nOpens the global menu.").ToString(), - FConsoleCommandWithWorldArgsAndOutputDeviceDelegate::CreateRaw(InHMDPtr, &FOculusXRHMD::ShowGlobalMenuCommandHandler)) - , ShowQuitMenuCommand(TEXT("vr.oculus.ShowQuitMenu"), - *NSLOCTEXT("OculusRift", "CCommandText_QuitMenu", "Oculus Rift specific extension.\nOpens the quit menu.").ToString(), - FConsoleCommandWithWorldArgsAndOutputDeviceDelegate::CreateRaw(InHMDPtr, &FOculusXRHMD::ShowQuitMenuCommandHandler)) - -#if !UE_BUILD_SHIPPING - , StatsCommand(TEXT("vr.oculus.Debug.bShowStats"), - *NSLOCTEXT("OculusRift", "CCommandText_Stats", "Oculus Rift specific extension.\nEnable or disable rendering of stats.").ToString(), - FConsoleCommandWithWorldArgsAndOutputDeviceDelegate::CreateRaw(InHMDPtr, &FOculusXRHMD::StatsCommandHandler)) - , CubemapCommand(TEXT("vr.oculus.Debug.CaptureCubemap"), - *NSLOCTEXT("OculusRift", "CCommandText_Cubemap", "Oculus Rift specific extension.\nCaptures a cubemap for Oculus Home.\nOptional arguments (default is zero for all numeric arguments):\n xoff= -- X axis offset from the origin\n yoff= -- Y axis offset\n zoff= -- Z axis offset\n yaw= -- the direction to look into (roll and pitch is fixed to zero)\n mobile -- Generate a Mobile format cubemap\n (height of the captured cubemap will be 1024 instead of 2048 pixels)\n").ToString(), - FConsoleCommandWithWorldArgsAndOutputDeviceDelegate::CreateStatic(&UOculusXRSceneCaptureCubemap::CaptureCubemapCommandHandler)) - , ShowSettingsCommand(TEXT("vr.oculus.Debug.Show"), - *NSLOCTEXT("OculusRift", "CCommandText_Show", "Oculus Rift specific extension.\nShows the current value of various stereo rendering params.").ToString(), - FConsoleCommandWithWorldArgsAndOutputDeviceDelegate::CreateRaw(InHMDPtr, &FOculusXRHMD::ShowSettingsCommandHandler)) - , IPDCommand(TEXT("vr.oculus.Debug.IPD"), - *NSLOCTEXT("OculusRift", "CCommandText_IPD", "Oculus Rift specific extension.\nShows or changes the current interpupillary distance in meters.").ToString(), - FConsoleCommandWithWorldArgsAndOutputDeviceDelegate::CreateRaw(InHMDPtr, &FOculusXRHMD::IPDCommandHandler)) -#endif // !UE_BUILD_SHIPPING - { - } - - bool FConsoleCommands::Exec(UWorld* InWorld, const TCHAR* Cmd, FOutputDevice& Ar) - { - const TCHAR* OrigCmd = Cmd; - FString AliasedCommand; - - if (FParse::Command(&Cmd, TEXT("OVRGLOBALMENU"))) - { - AliasedCommand = TEXT("vr.oculus.ShowGlobalMenu"); - } - else if (FParse::Command(&Cmd, TEXT("OVRQUITMENU"))) - { - AliasedCommand = TEXT("vr.oculus.ShowQuitMenu"); - } -#if !UE_BUILD_SHIPPING - else if (FParse::Command(&Cmd, TEXT("vr.oculus.Debug.EnforceHeadTracking"))) - { - AliasedCommand = TEXT("vr.HeadTracking.bEnforced"); - } -#endif // !UE_BUILD_SHIPPING - - if (!AliasedCommand.IsEmpty()) - { - Ar.Logf(ELogVerbosity::Warning, TEXT("%s is deprecated. Use %s instead"), OrigCmd, *AliasedCommand); - return IConsoleManager::Get().ProcessUserConsoleInput(*AliasedCommand, Ar, InWorld); - } - return false; - } - - /// @endcond - -} // namespace OculusXRHMD - -#endif // OCULUS_HMD_SUPPORTED_PLATFORMS diff --git a/Plugins/MetaXR/Source/OculusXRHMD/Private/OculusXRHMD_ConsoleCommands.h b/Plugins/MetaXR/Source/OculusXRHMD/Private/OculusXRHMD_ConsoleCommands.h deleted file mode 100644 index a8ce431..0000000 --- a/Plugins/MetaXR/Source/OculusXRHMD/Private/OculusXRHMD_ConsoleCommands.h +++ /dev/null @@ -1,43 +0,0 @@ -// @lint-ignore-every LICENSELINT -// Copyright Epic Games, Inc. All Rights Reserved. - -#pragma once -#include "OculusXRHMDPrivate.h" - -#if OCULUS_HMD_SUPPORTED_PLATFORMS -#include "HAL/IConsoleManager.h" - -namespace OculusXRHMD -{ - - //------------------------------------------------------------------------------------------------- - // FConsoleCommands - //------------------------------------------------------------------------------------------------- - - class FConsoleCommands : private FSelfRegisteringExec - { - public: - FConsoleCommands(class FOculusXRHMD* InHMDPtr); - - // FSelfRegisteringExec interface - virtual bool Exec(UWorld* InWorld, const TCHAR* Cmd, FOutputDevice& Ar) override; - - private: - FAutoConsoleCommand UpdateOnRenderThreadCommand; - FAutoConsoleCommand HQBufferCommand; - FAutoConsoleCommand HQDistortionCommand; - FAutoConsoleCommand ShowGlobalMenuCommand; - FAutoConsoleCommand ShowQuitMenuCommand; - -#if !UE_BUILD_SHIPPING - // Debug console commands - FAutoConsoleCommand StatsCommand; - FAutoConsoleCommand CubemapCommand; - FAutoConsoleCommand ShowSettingsCommand; - FAutoConsoleCommand IPDCommand; -#endif // !UE_BUILD_SHIPPING - }; - -} // namespace OculusXRHMD - -#endif // OCULUS_HMD_SUPPORTED_PLATFORMS diff --git a/Plugins/MetaXR/Source/OculusXRHMD/Private/OculusXRHMD_CustomPresent.cpp b/Plugins/MetaXR/Source/OculusXRHMD/Private/OculusXRHMD_CustomPresent.cpp deleted file mode 100644 index f6bc4ae..0000000 --- a/Plugins/MetaXR/Source/OculusXRHMD/Private/OculusXRHMD_CustomPresent.cpp +++ /dev/null @@ -1,707 +0,0 @@ -// @lint-ignore-every LICENSELINT -// Copyright Epic Games, Inc. All Rights Reserved. - -#include "OculusXRHMD_CustomPresent.h" - -#if OCULUS_HMD_SUPPORTED_PLATFORMS -#include "OculusXRHMD.h" -#include "ScreenRendering.h" -#include "PipelineStateCache.h" -#include "ClearQuad.h" -#include "OculusShaders.h" -#include "CommonRenderResources.h" -#include "RHIStaticStates.h" - -#if PLATFORM_ANDROID -#include "Android/AndroidJNI.h" -#include "Android/AndroidApplication.h" -#include "Android/AndroidPlatformMisc.h" -#endif - -#define VULKAN_CUBEMAP_POSITIVE_Y 2 -#define VULKAN_CUBEMAP_NEGATIVE_Y 3 - -namespace OculusXRHMD -{ - /** - * A pixel shader for rendering a textured screen element with mip maps and array slice. - */ - class FScreenPSMipLevelArray : public FGlobalShader - { - DECLARE_SHADER_TYPE(FScreenPSMipLevelArray, Global); - - public: - static bool ShouldCompilePermutation(const FGlobalShaderPermutationParameters& Parameters) { return true; } - - FScreenPSMipLevelArray(const ShaderMetaType::CompiledShaderInitializerType& Initializer) - : FGlobalShader(Initializer) - { - InTexture.Bind(Initializer.ParameterMap, TEXT("InTexture"), SPF_Mandatory); - InTextureSampler.Bind(Initializer.ParameterMap, TEXT("InTextureSampler")); - InMipLevelParameter.Bind(Initializer.ParameterMap, TEXT("MipLevel")); - InArraySliceParameter.Bind(Initializer.ParameterMap, TEXT("ArraySlice")); - } - FScreenPSMipLevelArray() {} - - void SetParameters(FRHIBatchedShaderParameters& BatchedParameters, const FTexture* Texture, int ArraySlice, int MipLevel) - { - SetTextureParameter(BatchedParameters, InTexture, InTextureSampler, Texture); - SetShaderValue(BatchedParameters, InMipLevelParameter, MipLevel); - SetShaderValue(BatchedParameters, InArraySliceParameter, ArraySlice); - } - - void SetParameters(FRHIBatchedShaderParameters& BatchedParameters, FRHISamplerState* SamplerStateRHI, FRHITexture* TextureRHI, int ArraySlice, int MipLevel) - { - SetTextureParameter(BatchedParameters, InTexture, InTextureSampler, SamplerStateRHI, TextureRHI); - SetShaderValue(BatchedParameters, InMipLevelParameter, MipLevel); - SetShaderValue(BatchedParameters, InArraySliceParameter, ArraySlice); - } - - private: - LAYOUT_FIELD(FShaderResourceParameter, InTexture); - LAYOUT_FIELD(FShaderResourceParameter, InTextureSampler); - LAYOUT_FIELD(FShaderParameter, InMipLevelParameter); - LAYOUT_FIELD(FShaderParameter, InArraySliceParameter); - }; - IMPLEMENT_SHADER_TYPE(, FScreenPSMipLevelArray, TEXT("/Plugin/OculusXR/Private/ScreenPixelShaderArraySlice.usf"), TEXT("MainMipLevel"), SF_Pixel); - - /** - * A pixel shader for rendering a textured screen element with mip maps and array slice. - */ - class FScreenPSsRGBSourceMipLevelArray : public FGlobalShader - { - DECLARE_SHADER_TYPE(FScreenPSsRGBSourceMipLevelArray, Global); - - public: - static bool ShouldCompilePermutation(const FGlobalShaderPermutationParameters& Parameters) { return true; } - - FScreenPSsRGBSourceMipLevelArray(const ShaderMetaType::CompiledShaderInitializerType& Initializer) - : FGlobalShader(Initializer) - { - InTexture.Bind(Initializer.ParameterMap, TEXT("InTexture"), SPF_Mandatory); - InTextureSampler.Bind(Initializer.ParameterMap, TEXT("InTextureSampler")); - InMipLevelParameter.Bind(Initializer.ParameterMap, TEXT("MipLevel")); - InArraySliceParameter.Bind(Initializer.ParameterMap, TEXT("ArraySlice")); - } - FScreenPSsRGBSourceMipLevelArray() {} - - void SetParameters(FRHIBatchedShaderParameters& BatchedParameters, const FTexture* Texture, int ArraySlice, int MipLevel) - { - SetTextureParameter(BatchedParameters, InTexture, InTextureSampler, Texture); - SetShaderValue(BatchedParameters, InMipLevelParameter, MipLevel); - SetShaderValue(BatchedParameters, InArraySliceParameter, ArraySlice); - } - - void SetParameters(FRHIBatchedShaderParameters& BatchedParameters, FRHISamplerState* SamplerStateRHI, FRHITexture* TextureRHI, int ArraySlice, int MipLevel) - { - SetTextureParameter(BatchedParameters, InTexture, InTextureSampler, SamplerStateRHI, TextureRHI); - SetShaderValue(BatchedParameters, InMipLevelParameter, MipLevel); - SetShaderValue(BatchedParameters, InArraySliceParameter, ArraySlice); - } - - private: - LAYOUT_FIELD(FShaderResourceParameter, InTexture); - LAYOUT_FIELD(FShaderResourceParameter, InTextureSampler); - LAYOUT_FIELD(FShaderParameter, InMipLevelParameter); - LAYOUT_FIELD(FShaderParameter, InArraySliceParameter); - }; - IMPLEMENT_SHADER_TYPE(, FScreenPSsRGBSourceMipLevelArray, TEXT("/Plugin/OculusXR/Private/ScreenPixelShaderArraySlice.usf"), TEXT("MainsRGBSourceMipLevel"), SF_Pixel); - - //------------------------------------------------------------------------------------------------- - // FCustomPresent - //------------------------------------------------------------------------------------------------- - - FCustomPresent::FCustomPresent(class FOculusXRHMD* InOculusXRHMD, ovrpRenderAPIType InRenderAPI, EPixelFormat InDefaultPixelFormat, bool bInSupportsSRGB) - : OculusXRHMD(InOculusXRHMD) - , RenderAPI(InRenderAPI) - , DefaultPixelFormat(InDefaultPixelFormat) - , bSupportsSRGB(bInSupportsSRGB) - , bSupportsSubsampled(false) - , bIsStandaloneStereoDevice(false) - { - CheckInGameThread(); - - DefaultOvrpTextureFormat = GetOvrpTextureFormat(GetDefaultPixelFormat()); - DefaultDepthOvrpTextureFormat = ovrpTextureFormat_None; - -#if PLATFORM_ANDROID - bIsStandaloneStereoDevice = FAndroidMisc::GetDeviceMake() == FString("Oculus"); -#endif - - // grab a pointer to the renderer module for displaying our mirror window - static const FName RendererModuleName("Renderer"); - RendererModule = FModuleManager::GetModulePtr(RendererModuleName); - } - - void FCustomPresent::ReleaseResources_RHIThread() - { - CheckInRHIThread(); - - if (MirrorTextureRHI.IsValid()) - { - FOculusXRHMDModule::GetPluginWrapper().DestroyMirrorTexture2(); - MirrorTextureRHI = nullptr; - } - } - - void FCustomPresent::Shutdown() - { - CheckInGameThread(); - - // OculusXRHMD is going away, but this object can live on until viewport is destroyed - ExecuteOnRenderThread([this]() { - ExecuteOnRHIThread([this]() { - OculusXRHMD = nullptr; - }); - }); - } - - bool FCustomPresent::NeedsNativePresent() - { - return !bIsStandaloneStereoDevice; - } - - bool FCustomPresent::Present(int32& SyncInterval) - { - CheckInRHIThread(); - - if (OculusXRHMD) - { - FGameFrame* Frame_RHIThread = OculusXRHMD->GetFrame_RHIThread(); - if (Frame_RHIThread) - { - FinishRendering_RHIThread(); - } - } - - SyncInterval = 0; // VSync off - - return NeedsNativePresent(); - } - - void FCustomPresent::UpdateMirrorTexture_RenderThread() - { - SCOPE_CYCLE_COUNTER(STAT_BeginRendering); - - CheckInRenderThread(); - - const ESpectatorScreenMode MirrorWindowMode = OculusXRHMD->GetSpectatorScreenMode_RenderThread(); - const FIntPoint MirrorWindowSize = OculusXRHMD->GetFrame_RenderThread()->WindowSize; - - if (FOculusXRHMDModule::GetPluginWrapper().GetInitialized()) - { - // Need to destroy mirror texture? - if (MirrorTextureRHI.IsValid()) - { - const auto MirrorTextureSize = FIntPoint(MirrorTextureRHI->GetDesc().Extent.X, MirrorTextureRHI->GetDesc().Extent.Y); - if (MirrorWindowMode != ESpectatorScreenMode::Distorted || MirrorWindowSize != MirrorTextureSize) - { - ExecuteOnRHIThread([]() { - FOculusXRHMDModule::GetPluginWrapper().DestroyMirrorTexture2(); - }); - - MirrorTextureRHI = nullptr; - } - } - - // Need to create mirror texture? - if (!MirrorTextureRHI.IsValid() && MirrorWindowMode == ESpectatorScreenMode::Distorted && MirrorWindowSize.X != 0 && MirrorWindowSize.Y != 0) - { - const int Width = MirrorWindowSize.X; - const int Height = MirrorWindowSize.Y; - ovrpTextureHandle TextureHandle; - - ExecuteOnRHIThread([&]() { - FOculusXRHMDModule::GetPluginWrapper().SetupMirrorTexture2(GetOvrpDevice(), Height, Width, GetDefaultOvrpTextureFormat(), &TextureHandle); - }); - - UE_LOG(LogHMD, Log, TEXT("Allocated a new mirror texture (size %d x %d)"), Width, Height); - - ETextureCreateFlags TexCreateFlags = TexCreate_ShaderResource | TexCreate_RenderTargetable; - - MirrorTextureRHI = CreateTexture_RenderThread(Width, Height, GetDefaultPixelFormat(), FClearValueBinding::None, 1, 1, 1, RRT_Texture2D, TextureHandle, TexCreateFlags)->GetTexture2D(); - } - } - } - - void FCustomPresent::FinishRendering_RHIThread() - { - SCOPE_CYCLE_COUNTER(STAT_FinishRendering); - CheckInRHIThread(); - -#if STATS - if (OculusXRHMD->GetFrame_RHIThread()->ShowFlags.Rendering) - { - ovrpAppLatencyTimings AppLatencyTimings; - if (OVRP_SUCCESS(FOculusXRHMDModule::GetPluginWrapper().GetAppLatencyTimings2(&AppLatencyTimings))) - { - SET_FLOAT_STAT(STAT_LatencyRender, AppLatencyTimings.LatencyRender * 1000.0f); - SET_FLOAT_STAT(STAT_LatencyTimewarp, AppLatencyTimings.LatencyTimewarp * 1000.0f); - SET_FLOAT_STAT(STAT_LatencyPostPresent, AppLatencyTimings.LatencyPostPresent * 1000.0f); - SET_FLOAT_STAT(STAT_ErrorRender, AppLatencyTimings.ErrorRender * 1000.0f); - SET_FLOAT_STAT(STAT_ErrorTimewarp, AppLatencyTimings.ErrorTimewarp * 1000.0f); - } - } -#endif - - OculusXRHMD->FinishRHIFrame_RHIThread(); - -#if PLATFORM_ANDROID - float GPUFrameTime = 0.0f; - if (OVRP_SUCCESS(FOculusXRHMDModule::GetPluginWrapper().GetGPUFrameTime(&GPUFrameTime))) - { - SubmitGPUFrameTime(GPUFrameTime); - } -#endif - } - - EPixelFormat FCustomPresent::GetPixelFormat(EPixelFormat Format) const - { - switch (Format) - { - // case PF_B8G8R8A8: - case PF_FloatRGBA: - case PF_FloatR11G11B10: - // case PF_R8G8B8A8: - case PF_G16: - case PF_R16F: - case PF_R32_FLOAT: - case PF_ShadowDepth: - case PF_D24: - return Format; - } - - return GetDefaultPixelFormat(); - } - - EPixelFormat FCustomPresent::GetPixelFormat(ovrpTextureFormat Format) const - { - switch (Format) - { - // case ovrpTextureFormat_R8G8B8A8_sRGB: - // case ovrpTextureFormat_R8G8B8A8: - // return PF_R8G8B8A8; - case ovrpTextureFormat_R16G16B16A16_FP: - return PF_FloatRGBA; - case ovrpTextureFormat_R11G11B10_FP: - return PF_FloatR11G11B10; - // case ovrpTextureFormat_B8G8R8A8_sRGB: - // case ovrpTextureFormat_B8G8R8A8: - // return PF_B8G8R8A8; - case ovrpTextureFormat_R16: - return PF_G16; // G stands for grey here, not green, and is actually R16 in RHI - case ovrpTextureFormat_R16_FP: - return PF_R16F; - case ovrpTextureFormat_R32_FP: - return PF_R32_FLOAT; - case ovrpTextureFormat_D16: - return PF_ShadowDepth; // ShadowDepth maps to D16 in Vulkan - case ovrpTextureFormat_D24_S8: - return PF_D24; - } - - return GetDefaultPixelFormat(); - } - - ovrpTextureFormat FCustomPresent::GetOvrpTextureFormat(EPixelFormat Format, bool usesRGB) const - { - switch (GetPixelFormat(Format)) - { - case PF_B8G8R8A8: - return bSupportsSRGB && usesRGB ? ovrpTextureFormat_B8G8R8A8_sRGB : ovrpTextureFormat_B8G8R8A8; - case PF_FloatRGBA: - return ovrpTextureFormat_R16G16B16A16_FP; - case PF_FloatR11G11B10: - return ovrpTextureFormat_R11G11B10_FP; - case PF_R8G8B8A8: - return bSupportsSRGB && usesRGB ? ovrpTextureFormat_R8G8B8A8_sRGB : ovrpTextureFormat_R8G8B8A8; - case PF_G16: - return ovrpTextureFormat_R16; - case PF_R16F: - return ovrpTextureFormat_R16_FP; - case PF_R32_FLOAT: - return ovrpTextureFormat_R32_FP; - case PF_ShadowDepth: - return ovrpTextureFormat_D16; - case PF_D24: - return ovrpTextureFormat_D24_S8; - } - - return ovrpTextureFormat_None; - } - - bool FCustomPresent::IsSRGB(ovrpTextureFormat InFormat) - { - switch (InFormat) - { - case ovrpTextureFormat_B8G8R8A8_sRGB: - case ovrpTextureFormat_R8G8B8A8_sRGB: - return true; - } - - return false; - } - - int FCustomPresent::GetSystemRecommendedMSAALevel() const - { - int SystemRecommendedMSAALevel = 1; - FOculusXRHMDModule::GetPluginWrapper().GetSystemRecommendedMSAALevel2(&SystemRecommendedMSAALevel); - return SystemRecommendedMSAALevel; - } - - FXRSwapChainPtr FCustomPresent::CreateSwapChain_RenderThread(uint32 InSizeX, uint32 InSizeY, EPixelFormat InFormat, FClearValueBinding InBinding, uint32 InNumMips, uint32 InNumSamples, uint32 InNumSamplesTileMem, ERHIResourceType InResourceType, const TArray& InTextures, ETextureCreateFlags InTexCreateFlags, const TCHAR* DebugName) - { - TArray RHITextureSwapChain = CreateSwapChainTextures_RenderThread(InSizeX, InSizeY, InFormat, InBinding, InNumMips, InNumSamples, InNumSamplesTileMem, InResourceType, InTextures, InTexCreateFlags, DebugName); - - FTextureRHIRef RHITexture = GDynamicRHI->RHICreateAliasedTexture(RHITextureSwapChain[0]); - - return CreateXRSwapChain(MoveTemp(RHITextureSwapChain), RHITexture); - } - - TArray FCustomPresent::CreateSwapChainTextures_RenderThread(uint32 InSizeX, uint32 InSizeY, EPixelFormat InFormat, FClearValueBinding InBinding, uint32 InNumMips, uint32 InNumSamples, uint32 InNumSamplesTileMem, ERHIResourceType InResourceType, const TArray& InTextures, ETextureCreateFlags InTexCreateFlags, const TCHAR* DebugName) - { - CheckInRenderThread(); - - TArray RHITextureSwapChain; - { - for (int32 TextureIndex = 0; TextureIndex < InTextures.Num(); ++TextureIndex) - { - FTextureRHIRef TexRef = CreateTexture_RenderThread(InSizeX, InSizeY, InFormat, InBinding, InNumMips, InNumSamples, InNumSamplesTileMem, InResourceType, InTextures[TextureIndex], InTexCreateFlags); - - FString TexName = FString::Printf(TEXT("%s (%d/%d)"), DebugName, TextureIndex, InTextures.Num()); - TexRef->SetName(*TexName); - RHIBindDebugLabelName(TexRef, *TexName); - - RHITextureSwapChain.Add(TexRef); - } - } - - return RHITextureSwapChain; - } - - void FCustomPresent::CopyTexture_RenderThread(FRHICommandListImmediate& RHICmdList, FRHITexture* DstTexture, FRHITexture* SrcTexture, FIntRect DstRect, FIntRect SrcRect, bool bAlphaPremultiply, bool bNoAlphaWrite, bool bInvertY, bool sRGBSource, bool bInvertAlpha) - { - FCustomPresent::CopyTexture_RenderThread(RHICmdList, RendererModule, DstTexture, SrcTexture, OculusXRHMD->GetSettings_RenderThread()->CurrentFeatureLevel, RenderAPI == ovrpRenderAPI_Vulkan, - DstRect, SrcRect, bAlphaPremultiply, bNoAlphaWrite, bInvertY, sRGBSource, bInvertAlpha); - } - - void FCustomPresent::CopyTexture_RenderThread(FRHICommandListImmediate& RHICmdList, IRendererModule* RendererModule, FRHITexture* DstTexture, FRHITexture* SrcTexture, FStaticFeatureLevel FeatureLevel, bool bUsingVulkan, - FIntRect DstRect, FIntRect SrcRect, bool bAlphaPremultiply, bool bNoAlphaWrite, bool bInvertY, bool sRGBSource, bool bInvertAlpha) - { - CheckInRenderThread(); - - FIntPoint DstSize; - FIntPoint SrcSize; - - if (DstTexture->GetDesc().IsTexture2D() && SrcTexture->GetDesc().IsTexture2D()) - { - DstSize = FIntPoint(DstTexture->GetSizeX(), DstTexture->GetSizeY()); - SrcSize = FIntPoint(SrcTexture->GetSizeX(), SrcTexture->GetSizeY()); - } - else if (DstTexture->GetDesc().IsTextureCube() && SrcTexture->GetDesc().IsTextureCube()) - { - DstSize = FIntPoint(DstTexture->GetSize(), DstTexture->GetSize()); - SrcSize = FIntPoint(SrcTexture->GetSize(), SrcTexture->GetSize()); - } - else - { - return; - } - - if (DstRect.IsEmpty()) - { - DstRect = FIntRect(FIntPoint::ZeroValue, DstSize); - } - - if (SrcRect.IsEmpty()) - { - SrcRect = FIntRect(FIntPoint::ZeroValue, SrcSize); - } - - const uint32 ViewportWidth = DstRect.Width(); - const uint32 ViewportHeight = DstRect.Height(); - const FIntPoint TargetSize(ViewportWidth, ViewportHeight); - float U = SrcRect.Min.X / (float)SrcSize.X; - float V = SrcRect.Min.Y / (float)SrcSize.Y; - float USize = SrcRect.Width() / (float)SrcSize.X; - float VSize = SrcRect.Height() / (float)SrcSize.Y; - -#if PLATFORM_ANDROID // on android, top-left isn't 0/0 but 1/0. - if (bInvertY) - { - V = 1.0f - V; - VSize = -VSize; - } -#endif - - FRHITexture* SrcTextureRHI = SrcTexture; - RHICmdList.Transition(FRHITransitionInfo(SrcTextureRHI, ERHIAccess::Unknown, ERHIAccess::SRVGraphics)); - FGraphicsPipelineStateInitializer GraphicsPSOInit; - - if (bInvertAlpha) - { - // write RGBA, RGB = src.rgb * 1 + dst.rgb * 0, A = src.a * 0 + dst.a * (1 - src.a) - GraphicsPSOInit.BlendState = TStaticBlendState::GetRHI(); - } - else if (bAlphaPremultiply) - { - if (bNoAlphaWrite) - { - // for quads, write RGB, RGB = src.rgb * 1 + dst.rgb * 0 - GraphicsPSOInit.BlendState = TStaticBlendState::GetRHI(); - } - else - { - // for quads, write RGBA, RGB = src.rgb * src.a + dst.rgb * 0, A = src.a + dst.a * 0 - GraphicsPSOInit.BlendState = TStaticBlendState::GetRHI(); - } - } - else - { - if (bNoAlphaWrite) - { - GraphicsPSOInit.BlendState = TStaticBlendState::GetRHI(); - } - else - { - // for mirror window, write RGBA, RGB = src.rgb * src.a + dst.rgb * (1 - src.a), A = src.a * 1 + dst.a * (1 - src a) - GraphicsPSOInit.BlendState = TStaticBlendState::GetRHI(); - } - } - - GraphicsPSOInit.RasterizerState = TStaticRasterizerState<>::GetRHI(); - GraphicsPSOInit.DepthStencilState = TStaticDepthStencilState::GetRHI(); - GraphicsPSOInit.PrimitiveType = PT_TriangleList; - - auto ShaderMap = GetGlobalShaderMap(FeatureLevel); - TShaderMapRef VertexShader(ShaderMap); - GraphicsPSOInit.BoundShaderState.VertexDeclarationRHI = GFilterVertexDeclaration.VertexDeclarationRHI; - GraphicsPSOInit.BoundShaderState.VertexShaderRHI = VertexShader.GetVertexShader(); - - if (DstTexture->GetDesc().IsTexture2D()) - { - sRGBSource &= EnumHasAnyFlags(SrcTexture->GetFlags(), TexCreate_SRGB); - - // Need to copy over mip maps on Android since they are not generated like they are on PC -#if PLATFORM_ANDROID - uint32 NumMips = SrcTexture->GetNumMips(); -#else - uint32 NumMips = 1; -#endif - - const bool bUseTexArrayShader = SrcTexture->GetDesc().IsTextureArray() && DstTexture->GetDesc().IsTextureArray(); - const int32 SliceCount = bUseTexArrayShader ? FMath::Min(SrcTexture->GetDesc().ArraySize, DstTexture->GetDesc().ArraySize) : 1; - - for (uint32 MipIndex = 0; MipIndex < NumMips; MipIndex++) - { - FRHIRenderPassInfo RPInfo(DstTexture, ERenderTargetActions::Load_Store); - RPInfo.ColorRenderTargets[0].MipIndex = MipIndex; - - for (int32 SliceIndex = 0; SliceIndex < SliceCount; ++SliceIndex) - { - RPInfo.ColorRenderTargets[0].ArraySlice = SliceIndex; - - RHICmdList.BeginRenderPass(RPInfo, TEXT("CopyTexture")); - { - const uint32 MipViewportWidth = ViewportWidth >> MipIndex; - const uint32 MipViewportHeight = ViewportHeight >> MipIndex; - const FIntPoint MipTargetSize(MipViewportWidth, MipViewportHeight); - - if (bNoAlphaWrite || bInvertAlpha) - { - RHICmdList.SetViewport(DstRect.Min.X, DstRect.Min.Y, 0.0f, DstRect.Max.X, DstRect.Max.Y, 1.0f); - DrawClearQuad(RHICmdList, bAlphaPremultiply ? FLinearColor::Black : FLinearColor::White); - } - - RHICmdList.ApplyCachedRenderTargets(GraphicsPSOInit); - FRHISamplerState* SamplerState = DstRect.Size() == SrcRect.Size() ? TStaticSamplerState::GetRHI() : TStaticSamplerState::GetRHI(); - - if (!sRGBSource) - { - if (bUseTexArrayShader) - { - TShaderMapRef PixelShader(ShaderMap); - GraphicsPSOInit.BoundShaderState.PixelShaderRHI = PixelShader.GetPixelShader(); - SetGraphicsPipelineState(RHICmdList, GraphicsPSOInit, 0); - FRHIBatchedShaderParameters& BatchedParameters = RHICmdList.GetScratchShaderParameters(); - PixelShader->SetParameters(BatchedParameters, SamplerState, SrcTextureRHI, SliceIndex, MipIndex); - RHICmdList.SetBatchedShaderParameters(RHICmdList.GetBoundPixelShader(), BatchedParameters); - } - else - { - - TShaderMapRef PixelShader(ShaderMap); - GraphicsPSOInit.BoundShaderState.PixelShaderRHI = PixelShader.GetPixelShader(); - SetGraphicsPipelineState(RHICmdList, GraphicsPSOInit, 0); -#if UE_VERSION_OLDER_THAN(5, 3, 0) - PixelShader->SetParameters(RHICmdList, SamplerState, SrcTextureRHI, MipIndex); -#else - FRHIBatchedShaderParameters& BatchedParameters = RHICmdList.GetScratchShaderParameters(); - PixelShader->SetParameters(BatchedParameters, SamplerState, SrcTextureRHI, MipIndex); - RHICmdList.SetBatchedShaderParameters(RHICmdList.GetBoundPixelShader(), BatchedParameters); -#endif - } - } - else - { - if (bUseTexArrayShader) - { - TShaderMapRef PixelShader(ShaderMap); - GraphicsPSOInit.BoundShaderState.PixelShaderRHI = PixelShader.GetPixelShader(); - SetGraphicsPipelineState(RHICmdList, GraphicsPSOInit, 0); - FRHIBatchedShaderParameters& BatchedParameters = RHICmdList.GetScratchShaderParameters(); - PixelShader->SetParameters(BatchedParameters, SamplerState, SrcTextureRHI, SliceIndex, MipIndex); - RHICmdList.SetBatchedShaderParameters(RHICmdList.GetBoundPixelShader(), BatchedParameters); - } - else - { - TShaderMapRef PixelShader(ShaderMap); - GraphicsPSOInit.BoundShaderState.PixelShaderRHI = PixelShader.GetPixelShader(); - SetGraphicsPipelineState(RHICmdList, GraphicsPSOInit, 0); -#if UE_VERSION_OLDER_THAN(5, 3, 0) - PixelShader->SetParameters(RHICmdList, SamplerState, SrcTextureRHI, MipIndex); -#else - FRHIBatchedShaderParameters& BatchedParameters = RHICmdList.GetScratchShaderParameters(); - PixelShader->SetParameters(BatchedParameters, SamplerState, SrcTextureRHI, MipIndex); - RHICmdList.SetBatchedShaderParameters(RHICmdList.GetBoundPixelShader(), BatchedParameters); -#endif - } - } - - RHICmdList.SetViewport(DstRect.Min.X, DstRect.Min.Y, 0.0f, DstRect.Min.X + MipViewportWidth, DstRect.Min.Y + MipViewportHeight, 1.0f); - - RendererModule->DrawRectangle( - RHICmdList, - 0, 0, MipViewportWidth, MipViewportHeight, - U, V, USize, VSize, - MipTargetSize, - FIntPoint(1, 1), - VertexShader, - EDRF_Default); - } - RHICmdList.EndRenderPass(); - } - } - } - else - { - for (int FaceIndex = 0; FaceIndex < 6; FaceIndex++) - { - FRHIRenderPassInfo RPInfo(DstTexture, ERenderTargetActions::Load_Store); - -#if defined(WITH_OCULUS_BRANCH) - static const FMatrix44f FaceToSampleMatrix[6] = { - FMatrix44f( - FVector3f(0, 0, 1), - FVector3f(0, 1, 0), - FVector3f(1, 0, 0), - FVector3f(0, 0, 0)), - FMatrix44f( - FVector3f(0, 0, -1), - FVector3f(0, 1, 0), - FVector3f(-1, 0, 0), - FVector3f(0, 0, 0)), - FMatrix44f( - FVector3f(1, 0, 0), - FVector3f(0, 0, 1), - FVector3f(0, 1, 0), - FVector3f(0, 0, 0)), - FMatrix44f( - FVector3f(1, 0, 0), - FVector3f(0, 0, -1), - FVector3f(0, -1, 0), - FVector3f(0, 0, 0)), - FMatrix44f( - FVector3f(1, 0, 0), - FVector3f(0, 1, 0), - FVector3f(0, 0, -1), - FVector3f(0, 0, 0)), - FMatrix44f( - FVector3f(-1, 0, 0), - FVector3f(0, 1, 0), - FVector3f(0, 0, 1), - FVector3f(0, 0, 0)), - }; -#endif - - // On Vulkan the positive and negative Y faces of the cubemap need to be flipped - if (bUsingVulkan) - { - int NewFaceIndex = 0; - - if (FaceIndex == VULKAN_CUBEMAP_POSITIVE_Y) - NewFaceIndex = VULKAN_CUBEMAP_NEGATIVE_Y; - else if (FaceIndex == VULKAN_CUBEMAP_NEGATIVE_Y) - NewFaceIndex = VULKAN_CUBEMAP_POSITIVE_Y; - else - NewFaceIndex = FaceIndex; - - RPInfo.ColorRenderTargets[0].ArraySlice = NewFaceIndex; - } - else - { - RPInfo.ColorRenderTargets[0].ArraySlice = FaceIndex; - } - - RHICmdList.BeginRenderPass(RPInfo, TEXT("CopyTextureFace")); - { - if (bNoAlphaWrite) - { - DrawClearQuad(RHICmdList, bAlphaPremultiply ? FLinearColor::Black : FLinearColor::White); - } - - RHICmdList.ApplyCachedRenderTargets(GraphicsPSOInit); - -#if defined(WITH_OCULUS_BRANCH) - TShaderMapRef PixelShader(ShaderMap); -#else - TShaderMapRef PixelShader(ShaderMap); -#endif - - GraphicsPSOInit.BoundShaderState.PixelShaderRHI = PixelShader.GetPixelShader(); - SetGraphicsPipelineState(RHICmdList, GraphicsPSOInit, 0); - FRHISamplerState* SamplerState = DstRect.Size() == SrcRect.Size() ? TStaticSamplerState::GetRHI() : TStaticSamplerState::GetRHI(); -#if UE_VERSION_OLDER_THAN(5, 3, 0) - PixelShader->SetParameters(RHICmdList, SamplerState, SrcTextureRHI, FaceIndex); -#else - FRHIBatchedShaderParameters& BatchedParameters = RHICmdList.GetScratchShaderParameters(); - -#if defined(WITH_OCULUS_BRANCH) - check(FaceIndex < UE_ARRAY_COUNT(FaceToSampleMatrix)); - PixelShader->SetParameters(BatchedParameters, SamplerState, SrcTextureRHI, FaceToSampleMatrix[FaceIndex]); -#else - PixelShader->SetParameters(BatchedParameters, SamplerState, SrcTextureRHI, FaceIndex); -#endif - RHICmdList.SetBatchedShaderParameters(RHICmdList.GetBoundPixelShader(), BatchedParameters); -#endif - - RHICmdList.SetViewport(DstRect.Min.X, DstRect.Min.Y, 0.0f, DstRect.Max.X, DstRect.Max.Y, 1.0f); - - RendererModule->DrawRectangle( - RHICmdList, - 0, 0, ViewportWidth, ViewportHeight, -#if PLATFORM_ANDROID - U, V, USize, VSize, -#else - U, 1.0 - V, USize, -VSize, -#endif - TargetSize, - FIntPoint(1, 1), - VertexShader, - EDRF_Default); - } - RHICmdList.EndRenderPass(); - } - } - } - - void FCustomPresent::SubmitGPUCommands_RenderThread(FRHICommandListImmediate& RHICmdList) - { - CheckInRenderThread(); - - RHICmdList.ImmediateFlush(EImmediateFlushType::DispatchToRHIThread); - } - -} // namespace OculusXRHMD - -#endif // OCULUS_HMD_SUPPORTED_PLATFORMS diff --git a/Plugins/MetaXR/Source/OculusXRHMD/Private/OculusXRHMD_CustomPresent.h b/Plugins/MetaXR/Source/OculusXRHMD/Private/OculusXRHMD_CustomPresent.h deleted file mode 100644 index a3af061..0000000 --- a/Plugins/MetaXR/Source/OculusXRHMD/Private/OculusXRHMD_CustomPresent.h +++ /dev/null @@ -1,120 +0,0 @@ -// @lint-ignore-every LICENSELINT -// Copyright Epic Games, Inc. All Rights Reserved. - -#pragma once -#include "OculusXRHMDPrivate.h" - -#if OCULUS_HMD_SUPPORTED_PLATFORMS -#include "OculusXRHMD_Settings.h" -#include "OculusXRHMD_GameFrame.h" -#include "XRSwapChain.h" -#include "RHI.h" -#include "RendererInterface.h" -#include "IStereoLayers.h" -#include "XRRenderBridge.h" - -#if PLATFORM_WINDOWS -#include "Windows/WindowsHWrapper.h" -#endif - -DECLARE_STATS_GROUP(TEXT("OculusXRHMD"), STATGROUP_OculusXRHMD, STATCAT_Advanced); -DECLARE_CYCLE_STAT(TEXT("BeginRendering"), STAT_BeginRendering, STATGROUP_OculusXRHMD); -DECLARE_CYCLE_STAT(TEXT("FinishRendering"), STAT_FinishRendering, STATGROUP_OculusXRHMD); -DECLARE_FLOAT_COUNTER_STAT(TEXT("LatencyRender"), STAT_LatencyRender, STATGROUP_OculusXRHMD); -DECLARE_FLOAT_COUNTER_STAT(TEXT("LatencyTimewarp"), STAT_LatencyTimewarp, STATGROUP_OculusXRHMD); -DECLARE_FLOAT_COUNTER_STAT(TEXT("LatencyPostPresent"), STAT_LatencyPostPresent, STATGROUP_OculusXRHMD); -DECLARE_FLOAT_COUNTER_STAT(TEXT("ErrorRender"), STAT_ErrorRender, STATGROUP_OculusXRHMD); -DECLARE_FLOAT_COUNTER_STAT(TEXT("ErrorTimewarp"), STAT_ErrorTimewarp, STATGROUP_OculusXRHMD); - -namespace OculusXRHMD -{ - - //------------------------------------------------------------------------------------------------- - // FCustomPresent - //------------------------------------------------------------------------------------------------- - - class FCustomPresent : public FXRRenderBridge - { - public: - FCustomPresent(class FOculusXRHMD* InOculusXRHMD, ovrpRenderAPIType InRenderAPI, EPixelFormat InDefaultPixelFormat, bool InSupportsSRGB); - - // FXRRenderBridge/FRHICustomPresent - virtual bool NeedsNativePresent() override; - virtual bool Present(int32& SyncInterval) override; - virtual void FinishRendering_RHIThread(); - - ovrpRenderAPIType GetRenderAPI() const { return RenderAPI; } - virtual bool IsUsingCorrectDisplayAdapter() const { return true; } - - void UpdateMirrorTexture_RenderThread(); - void ReleaseResources_RHIThread(); - void Shutdown(); - - FTextureRHIRef GetMirrorTexture() { return MirrorTextureRHI; } - - virtual void* GetOvrpInstance() const { return nullptr; } - virtual void* GetOvrpPhysicalDevice() const { return nullptr; } - virtual void* GetOvrpDevice() const { return nullptr; } - virtual void* GetOvrpCommandQueue() const { return nullptr; } - EPixelFormat GetPixelFormat(EPixelFormat InFormat) const; - EPixelFormat GetPixelFormat(ovrpTextureFormat InFormat) const; - EPixelFormat GetDefaultPixelFormat() const { return DefaultPixelFormat; } - ovrpTextureFormat GetOvrpTextureFormat(EPixelFormat InFormat, bool usesRGB = true) const; - ovrpTextureFormat GetDefaultOvrpTextureFormat() const { return DefaultOvrpTextureFormat; } - ovrpTextureFormat GetDefaultDepthOvrpTextureFormat() const { return DefaultDepthOvrpTextureFormat; } - static bool IsSRGB(ovrpTextureFormat InFormat); - virtual int GetSystemRecommendedMSAALevel() const; - virtual int GetLayerFlags() const { return 0; } - - virtual FTextureRHIRef CreateTexture_RenderThread(uint32 InSizeX, uint32 InSizeY, EPixelFormat InFormat, FClearValueBinding InBinding, uint32 InNumMips, uint32 InNumSamples, uint32 InNumSamplesTileMem, ERHIResourceType InResourceType, ovrpTextureHandle InTexture, ETextureCreateFlags TexCreateFlags) = 0; - FXRSwapChainPtr CreateSwapChain_RenderThread(uint32 InSizeX, uint32 InSizeY, EPixelFormat InFormat, FClearValueBinding InBinding, uint32 InNumMips, uint32 InNumSamples, uint32 InNumSamplesTileMem, ERHIResourceType InResourceType, const TArray& InTextures, ETextureCreateFlags InTexCreateFlags, const TCHAR* DebugName); - TArray CreateSwapChainTextures_RenderThread(uint32 InSizeX, uint32 InSizeY, EPixelFormat InFormat, FClearValueBinding InBinding, uint32 InNumMips, uint32 InNumSamples, uint32 InNumSamplesTileMem, ERHIResourceType InResourceType, const TArray& InTextures, ETextureCreateFlags InTexCreateFlags, const TCHAR* DebugName); - - void CopyTexture_RenderThread(FRHICommandListImmediate& RHICmdList, FRHITexture* DstTexture, FRHITexture* SrcTexture, FIntRect DstRect = FIntRect(), FIntRect SrcRect = FIntRect(), bool bAlphaPremultiply = false, bool bNoAlphaWrite = false, bool bInvertY = true, bool sRGBSource = false, bool bInvertAlpha = false); - OCULUSXRHMD_API static void CopyTexture_RenderThread(FRHICommandListImmediate& RHICmdList, IRendererModule* RendererModule, FRHITexture* DstTexture, FRHITexture* SrcTexture, FStaticFeatureLevel FeatureLevel, bool bUsingVulkan, FIntRect DstRect = FIntRect(), FIntRect SrcRect = FIntRect(), bool bAlphaPremultiply = false, bool bNoAlphaWrite = false, bool bInvertY = true, bool sRGBSource = false, bool bInvertAlpha = false); - - void SubmitGPUCommands_RenderThread(FRHICommandListImmediate& RHICmdList); - virtual void SubmitGPUFrameTime(float GPUFrameTime) {} - // This is a hack to turn force FSR off when we allocate our FDM to avoid a crash on Quest 3 - // TODO: Remove this for UE 5.3 after there's an engine-side fix - virtual void UseFragmentDensityMapOverShadingRate_RHIThread() {}; -#ifdef WITH_OCULUS_BRANCH - virtual void UpdateFoveationOffsets_RHIThread(bool bUseOffsets, FIntPoint Offsets[2]) {}; -#endif // WITH_OCULUS_BRANCH - - bool SupportsSRGB() - { - return bSupportsSRGB; - } - bool SupportsSubsampled() { return bSupportsSubsampled; } - - protected: - FOculusXRHMD* OculusXRHMD; - ovrpRenderAPIType RenderAPI; - EPixelFormat DefaultPixelFormat; - bool bSupportsSRGB; - bool bSupportsSubsampled; - ovrpTextureFormat DefaultOvrpTextureFormat; - ovrpTextureFormat DefaultDepthOvrpTextureFormat; - IRendererModule* RendererModule; - FTextureRHIRef MirrorTextureRHI; - bool bIsStandaloneStereoDevice; - }; - - //------------------------------------------------------------------------------------------------- - // APIs - //------------------------------------------------------------------------------------------------- - -#if OCULUS_HMD_SUPPORTED_PLATFORMS_D3D11 - FCustomPresent* CreateCustomPresent_D3D11(FOculusXRHMD* InOculusXRHMD); -#endif -#if OCULUS_HMD_SUPPORTED_PLATFORMS_D3D12 - FCustomPresent* CreateCustomPresent_D3D12(FOculusXRHMD* InOculusXRHMD); -#endif -#if OCULUS_HMD_SUPPORTED_PLATFORMS_VULKAN - FCustomPresent* CreateCustomPresent_Vulkan(FOculusXRHMD* InOculusXRHMD); -#endif - -} // namespace OculusXRHMD - -#endif // OCULUS_HMD_SUPPORTED_PLATFORMS diff --git a/Plugins/MetaXR/Source/OculusXRHMD/Private/OculusXRHMD_CustomPresent_D3D11.cpp b/Plugins/MetaXR/Source/OculusXRHMD/Private/OculusXRHMD_CustomPresent_D3D11.cpp deleted file mode 100644 index e28915c..0000000 --- a/Plugins/MetaXR/Source/OculusXRHMD/Private/OculusXRHMD_CustomPresent_D3D11.cpp +++ /dev/null @@ -1,118 +0,0 @@ -// @lint-ignore-every LICENSELINT -// Copyright Epic Games, Inc. All Rights Reserved. - -#include "OculusXRHMD_CustomPresent.h" -#include "OculusXRHMDPrivateRHI.h" - -#if OCULUS_HMD_SUPPORTED_PLATFORMS_D3D11 -#include "OculusXRHMD.h" - -#ifndef WINDOWS_PLATFORM_TYPES_GUARD -#include "Windows/AllowWindowsPlatformTypes.h" -#endif - -namespace OculusXRHMD -{ - - //------------------------------------------------------------------------------------------------- - // FD3D11CustomPresent - //------------------------------------------------------------------------------------------------- - - class FD3D11CustomPresent : public FCustomPresent - { - public: - FD3D11CustomPresent(FOculusXRHMD* InOculusXRHMD); - - // Implementation of FCustomPresent, called by Plugin itself - virtual bool IsUsingCorrectDisplayAdapter() const override; - virtual void* GetOvrpDevice() const override; - virtual FTextureRHIRef CreateTexture_RenderThread(uint32 InSizeX, uint32 InSizeY, EPixelFormat InFormat, FClearValueBinding InBinding, uint32 InNumMips, uint32 InNumSamples, uint32 InNumSamplesTileMem, ERHIResourceType InResourceType, ovrpTextureHandle InTexture, ETextureCreateFlags InTexCreateFlags) override; - }; - - FD3D11CustomPresent::FD3D11CustomPresent(FOculusXRHMD* InOculusXRHMD) - : FCustomPresent(InOculusXRHMD, ovrpRenderAPI_D3D11, PF_B8G8R8A8, true) - { - switch (GPixelFormats[PF_DepthStencil].PlatformFormat) - { - case DXGI_FORMAT_R24G8_TYPELESS: - DefaultDepthOvrpTextureFormat = ovrpTextureFormat_D24_S8; - break; - case DXGI_FORMAT_R32G8X24_TYPELESS: - DefaultDepthOvrpTextureFormat = ovrpTextureFormat_D32_FP_S8; - break; - default: - UE_LOG(LogHMD, Error, TEXT("Unrecognized depth buffer format")); - break; - } - } - - bool FD3D11CustomPresent::IsUsingCorrectDisplayAdapter() const - { - const void* luid; - - if (OVRP_SUCCESS(FOculusXRHMDModule::GetPluginWrapper().GetDisplayAdapterId2(&luid)) && luid) - { - TRefCountPtr D3D11Device; - - ExecuteOnRenderThread([&D3D11Device]() { - D3D11Device = (ID3D11Device*)RHIGetNativeDevice(); - }); - - if (D3D11Device) - { - TRefCountPtr DXGIDevice; - TRefCountPtr DXGIAdapter; - DXGI_ADAPTER_DESC DXGIAdapterDesc; - - if (SUCCEEDED(D3D11Device->QueryInterface(__uuidof(IDXGIDevice), (void**)DXGIDevice.GetInitReference())) && SUCCEEDED(DXGIDevice->GetAdapter(DXGIAdapter.GetInitReference())) && SUCCEEDED(DXGIAdapter->GetDesc(&DXGIAdapterDesc))) - { - return !FMemory::Memcmp(luid, &DXGIAdapterDesc.AdapterLuid, sizeof(LUID)); - } - } - } - - // Not enough information. Assume that we are using the correct adapter. - return true; - } - - void* FD3D11CustomPresent::GetOvrpDevice() const - { - return GetID3D11DynamicRHI()->RHIGetDevice(); - } - - FTextureRHIRef FD3D11CustomPresent::CreateTexture_RenderThread(uint32 InSizeX, uint32 InSizeY, EPixelFormat InFormat, FClearValueBinding InBinding, uint32 InNumMips, uint32 InNumSamples, uint32 InNumSamplesTileMem, ERHIResourceType InResourceType, ovrpTextureHandle InTexture, ETextureCreateFlags InTexCreateFlags) - { - CheckInRenderThread(); - - switch (InResourceType) - { - case RRT_Texture2D: - return GetID3D11DynamicRHI()->RHICreateTexture2DFromResource(InFormat, InTexCreateFlags, InBinding, (ID3D11Texture2D*)InTexture).GetReference(); - - case RRT_Texture2DArray: - return GetID3D11DynamicRHI()->RHICreateTexture2DArrayFromResource(InFormat, InTexCreateFlags, InBinding, (ID3D11Texture2D*)InTexture).GetReference(); - - case RRT_TextureCube: - return GetID3D11DynamicRHI()->RHICreateTextureCubeFromResource(InFormat, InTexCreateFlags | TexCreate_TargetArraySlicesIndependently, InBinding, (ID3D11Texture2D*)InTexture).GetReference(); - - default: - return nullptr; - } - } - - //------------------------------------------------------------------------------------------------- - // APIs - //------------------------------------------------------------------------------------------------- - - FCustomPresent* CreateCustomPresent_D3D11(FOculusXRHMD* InOculusXRHMD) - { - return new FD3D11CustomPresent(InOculusXRHMD); - } - -} // namespace OculusXRHMD - -#if PLATFORM_WINDOWS -#undef WINDOWS_PLATFORM_TYPES_GUARD -#endif - -#endif // OCULUS_HMD_SUPPORTED_PLATFORMS_D3D11 diff --git a/Plugins/MetaXR/Source/OculusXRHMD/Private/OculusXRHMD_CustomPresent_D3D12.cpp b/Plugins/MetaXR/Source/OculusXRHMD/Private/OculusXRHMD_CustomPresent_D3D12.cpp deleted file mode 100644 index c5457ea..0000000 --- a/Plugins/MetaXR/Source/OculusXRHMD/Private/OculusXRHMD_CustomPresent_D3D12.cpp +++ /dev/null @@ -1,114 +0,0 @@ -// @lint-ignore-every LICENSELINT -// Copyright Epic Games, Inc. All Rights Reserved. - -#include "OculusXRHMD_CustomPresent.h" -#include "OculusXRHMDPrivateRHI.h" - -#if OCULUS_HMD_SUPPORTED_PLATFORMS_D3D12 -#include "OculusXRHMD.h" - -#ifndef WINDOWS_PLATFORM_TYPES_GUARD -#include "Windows/AllowWindowsPlatformTypes.h" -#endif - -namespace OculusXRHMD -{ - - //------------------------------------------------------------------------------------------------- - // FCustomPresentD3D12 - //------------------------------------------------------------------------------------------------- - - class FD3D12CustomPresent : public FCustomPresent - { - public: - FD3D12CustomPresent(FOculusXRHMD* InOculusXRHMD); - - // Implementation of FCustomPresent, called by Plugin itself - virtual bool IsUsingCorrectDisplayAdapter() const override; - virtual void* GetOvrpDevice() const override; - virtual FTextureRHIRef CreateTexture_RenderThread(uint32 InSizeX, uint32 InSizeY, EPixelFormat InFormat, FClearValueBinding InBinding, uint32 InNumMips, uint32 InNumSamples, uint32 InNumSamplesTileMem, ERHIResourceType InResourceType, ovrpTextureHandle InTexture, ETextureCreateFlags InTexCreateFlags) override; - }; - - FD3D12CustomPresent::FD3D12CustomPresent(FOculusXRHMD* InOculusXRHMD) - : FCustomPresent(InOculusXRHMD, ovrpRenderAPI_D3D12, PF_B8G8R8A8, true) - { - switch (GPixelFormats[PF_DepthStencil].PlatformFormat) - { - case DXGI_FORMAT_R24G8_TYPELESS: - DefaultDepthOvrpTextureFormat = ovrpTextureFormat_D24_S8; - break; - case DXGI_FORMAT_R32G8X24_TYPELESS: - DefaultDepthOvrpTextureFormat = ovrpTextureFormat_D32_FP_S8; - break; - default: - UE_LOG(LogHMD, Error, TEXT("Unrecognized depth buffer format")); - break; - } - } - - bool FD3D12CustomPresent::IsUsingCorrectDisplayAdapter() const - { - const void* luid; - - if (OVRP_SUCCESS(FOculusXRHMDModule::GetPluginWrapper().GetDisplayAdapterId2(&luid)) && luid) - { - TRefCountPtr D3DDevice; - - ExecuteOnRenderThread([&D3DDevice]() { - D3DDevice = (ID3D12Device*)RHIGetNativeDevice(); - }); - - if (D3DDevice) - { - LUID AdapterLuid = D3DDevice->GetAdapterLuid(); - return !FMemory::Memcmp(luid, &AdapterLuid, sizeof(LUID)); - } - } - - // Not enough information. Assume that we are using the correct adapter. - return true; - } - - void* FD3D12CustomPresent::GetOvrpDevice() const - { - return GetID3D12DynamicRHI()->RHIGetCommandQueue(); - } - - FTextureRHIRef FD3D12CustomPresent::CreateTexture_RenderThread(uint32 InSizeX, uint32 InSizeY, EPixelFormat InFormat, FClearValueBinding InBinding, uint32 InNumMips, uint32 InNumSamples, uint32 InNumSamplesTileMem, ERHIResourceType InResourceType, ovrpTextureHandle InTexture, ETextureCreateFlags InTexCreateFlags) - { - CheckInRenderThread(); - - ID3D12DynamicRHI* DynamicRHI = GetID3D12DynamicRHI(); - - switch (InResourceType) - { - case RRT_Texture2D: - return DynamicRHI->RHICreateTexture2DFromResource(InFormat, InTexCreateFlags, InBinding, (ID3D12Resource*)InTexture).GetReference(); - - case RRT_Texture2DArray: - return DynamicRHI->RHICreateTexture2DArrayFromResource(InFormat, InTexCreateFlags, InBinding, (ID3D12Resource*)InTexture).GetReference(); - - case RRT_TextureCube: - return DynamicRHI->RHICreateTextureCubeFromResource(InFormat, InTexCreateFlags | TexCreate_TargetArraySlicesIndependently, InBinding, (ID3D12Resource*)InTexture).GetReference(); - - default: - return nullptr; - } - } - - //------------------------------------------------------------------------------------------------- - // APIs - //------------------------------------------------------------------------------------------------- - - FCustomPresent* CreateCustomPresent_D3D12(FOculusXRHMD* InOculusXRHMD) - { - return new FD3D12CustomPresent(InOculusXRHMD); - } - -} // namespace OculusXRHMD - -#if PLATFORM_WINDOWS -#undef WINDOWS_PLATFORM_TYPES_GUARD -#endif - -#endif // OCULUS_HMD_SUPPORTED_PLATFORMS_D3D12 diff --git a/Plugins/MetaXR/Source/OculusXRHMD/Private/OculusXRHMD_CustomPresent_Vulkan.cpp b/Plugins/MetaXR/Source/OculusXRHMD/Private/OculusXRHMD_CustomPresent_Vulkan.cpp deleted file mode 100644 index 654c63f..0000000 --- a/Plugins/MetaXR/Source/OculusXRHMD/Private/OculusXRHMD_CustomPresent_Vulkan.cpp +++ /dev/null @@ -1,178 +0,0 @@ -// @lint-ignore-every LICENSELINT -// Copyright Epic Games, Inc. All Rights Reserved. - -#include "OculusXRHMD_CustomPresent.h" -#include "OculusXRHMDPrivateRHI.h" - -#if OCULUS_HMD_SUPPORTED_PLATFORMS_VULKAN -#include "OculusXRHMD.h" -#include "IVulkanDynamicRHI.h" -#include "Async/Async.h" - -#if PLATFORM_WINDOWS -#ifndef WINDOWS_PLATFORM_TYPES_GUARD -#include "Windows/AllowWindowsPlatformTypes.h" -#endif -#endif - -namespace OculusXRHMD -{ - - //------------------------------------------------------------------------------------------------- - // FCustomPresentVulkan - //------------------------------------------------------------------------------------------------- - - class FVulkanCustomPresent : public FCustomPresent - { - public: - FVulkanCustomPresent(FOculusXRHMD* InOculusXRHMD); - - // Implementation of FCustomPresent, called by Plugin itself - virtual bool IsUsingCorrectDisplayAdapter() const override; - virtual void* GetOvrpInstance() const override; - virtual void* GetOvrpPhysicalDevice() const override; - virtual void* GetOvrpDevice() const override; - virtual void* GetOvrpCommandQueue() const override; - virtual FTextureRHIRef CreateTexture_RenderThread(uint32 InSizeX, uint32 InSizeY, EPixelFormat InFormat, FClearValueBinding InBinding, uint32 InNumMips, uint32 InNumSamples, uint32 InNumSamplesTileMem, ERHIResourceType InResourceType, ovrpTextureHandle InTexture, ETextureCreateFlags InTexCreateFlags) override; - // This is a hack to turn force FSR off when we allocate our FDM to avoid a crash on Quest 3 - // TODO: Remove this for UE 5.3 after there's an engine-side fix - virtual void UseFragmentDensityMapOverShadingRate_RHIThread() override; -#ifdef WITH_OCULUS_BRANCH - virtual void UpdateFoveationOffsets_RHIThread(bool bUseTileOffsets, FIntPoint TileOffsets[2]) override; -#endif // WITH_OCULUS_BRANCH - }; - - FVulkanCustomPresent::FVulkanCustomPresent(FOculusXRHMD* InOculusXRHMD) - : FCustomPresent(InOculusXRHMD, ovrpRenderAPI_Vulkan, PF_R8G8B8A8, true) - { -#if PLATFORM_ANDROID - AsyncTask(ENamedThreads::GameThread, []() { -#if UE_VERSION_OLDER_THAN(5, 5, 0) - if (GRHISupportsRHIThread && GIsThreadedRendering && GUseRHIThread_InternalUseOnly) - { - SetRHIThreadEnabled(false, false); - } -#else - GPendingRHIThreadMode = ERHIThreadMode::None; -#endif // UE_VERSION_OLDER_THAN - }); -#endif // PLATFORM_ANDROID - - switch (GPixelFormats[PF_DepthStencil].PlatformFormat) - { - case VK_FORMAT_D24_UNORM_S8_UINT: - DefaultDepthOvrpTextureFormat = ovrpTextureFormat_D24_S8; - break; - case VK_FORMAT_D32_SFLOAT_S8_UINT: - DefaultDepthOvrpTextureFormat = ovrpTextureFormat_D32_FP_S8; - break; - default: - UE_LOG(LogHMD, Error, TEXT("Unrecognized depth buffer format")); - break; - } - bSupportsSubsampled = GetIVulkanDynamicRHI()->RHISupportsEXTFragmentDensityMap2(); - } - - bool FVulkanCustomPresent::IsUsingCorrectDisplayAdapter() const - { -#if PLATFORM_WINDOWS - const void* AdapterId = nullptr; - if (OVRP_SUCCESS(FOculusXRHMDModule::GetPluginWrapper().GetDisplayAdapterId2(&AdapterId)) && AdapterId) - { - return GetIVulkanDynamicRHI()->RHIDoesAdapterMatchDevice(AdapterId); - } -#endif - - // Not enough information. Assume that we are using the correct adapter. - return true; - } - - void* FVulkanCustomPresent::GetOvrpInstance() const - { - return GetIVulkanDynamicRHI()->RHIGetVkInstance(); - } - - void* FVulkanCustomPresent::GetOvrpPhysicalDevice() const - { - return GetIVulkanDynamicRHI()->RHIGetVkPhysicalDevice(); - } - - void* FVulkanCustomPresent::GetOvrpDevice() const - { - return GetIVulkanDynamicRHI()->RHIGetVkDevice(); - } - - void* FVulkanCustomPresent::GetOvrpCommandQueue() const - { - return GetIVulkanDynamicRHI()->RHIGetGraphicsVkQueue(); - } - - FTextureRHIRef FVulkanCustomPresent::CreateTexture_RenderThread(uint32 InSizeX, uint32 InSizeY, EPixelFormat InFormat, FClearValueBinding InBinding, uint32 InNumMips, uint32 InNumSamples, uint32 InNumSamplesTileMem, ERHIResourceType InResourceType, ovrpTextureHandle InTexture, ETextureCreateFlags InTexCreateFlags) - { - CheckInRenderThread(); - - IVulkanDynamicRHI* VulkanRHI = GetIVulkanDynamicRHI(); - const VkImageSubresourceRange SubresourceRangeAll = { VK_IMAGE_ASPECT_COLOR_BIT, 0, VK_REMAINING_MIP_LEVELS, 0, VK_REMAINING_ARRAY_LAYERS }; - - if (EnumHasAnyFlags(InTexCreateFlags, TexCreate_RenderTargetable)) - { - VulkanRHI->RHISetImageLayout((VkImage)InTexture, VK_IMAGE_LAYOUT_UNDEFINED, VK_IMAGE_LAYOUT_COLOR_ATTACHMENT_OPTIMAL, SubresourceRangeAll); - } - else if (EnumHasAnyFlags(InTexCreateFlags, TexCreate_Foveation)) - { - VulkanRHI->RHISetImageLayout((VkImage)InTexture, VK_IMAGE_LAYOUT_UNDEFINED, VK_IMAGE_LAYOUT_FRAGMENT_DENSITY_MAP_OPTIMAL_EXT, SubresourceRangeAll); - } - - switch (InResourceType) - { - case RRT_Texture2D: - return VulkanRHI->RHICreateTexture2DFromResource(InFormat, InSizeX, InSizeY, InNumMips, InNumSamples, (VkImage)InTexture, InTexCreateFlags, InBinding).GetReference(); - - case RRT_Texture2DArray: - return VulkanRHI->RHICreateTexture2DArrayFromResource(InFormat, InSizeX, InSizeY, 2, InNumMips, InNumSamples, (VkImage)InTexture, InTexCreateFlags, InBinding).GetReference(); - - case RRT_TextureCube: - return VulkanRHI->RHICreateTextureCubeFromResource(InFormat, InSizeX, false, 1, InNumMips, (VkImage)InTexture, InTexCreateFlags, InBinding).GetReference(); - - default: - return nullptr; - } - } - - // This is a hack to turn force FSR off when we allocate our FDM to avoid a crash on Quest 3 - // TODO: Remove this for UE 5.3 after there's an engine-side fix - void FVulkanCustomPresent::UseFragmentDensityMapOverShadingRate_RHIThread() - { - CheckInRHIThread(); - SCOPED_NAMED_EVENT(UseFragmentDensityMapOverShadingRate_RHIThread, FColor::Red); - - GRHIVariableRateShadingImageDataType = VRSImage_Fractional; - GRHIVariableRateShadingImageFormat = PF_R8G8; - } - -#ifdef WITH_OCULUS_BRANCH - void FVulkanCustomPresent::UpdateFoveationOffsets_RHIThread(bool bUseOffsets, FIntPoint Offsets[2]) - { - CheckInRHIThread(); - - SCOPED_NAMED_EVENT(UpdateFoveationOffsets_RHIThread, FColor::Red); - GetIVulkanDynamicRHI()->RHISetQcomFragmentDensityMapOffsets(bUseOffsets, Offsets); - } -#endif // WITH_OCULUS_BRANCH - - //------------------------------------------------------------------------------------------------- - // APIs - //------------------------------------------------------------------------------------------------- - - FCustomPresent* CreateCustomPresent_Vulkan(FOculusXRHMD* InOculusXRHMD) - { - return new FVulkanCustomPresent(InOculusXRHMD); - } - -} // namespace OculusXRHMD - -#if PLATFORM_WINDOWS -#undef WINDOWS_PLATFORM_TYPES_GUARD -#endif - -#endif // OCULUS_HMD_SUPPORTED_PLATFORMS_VULKAN diff --git a/Plugins/MetaXR/Source/OculusXRHMD/Private/OculusXRHMD_DeferredDeletionQueue.cpp b/Plugins/MetaXR/Source/OculusXRHMD/Private/OculusXRHMD_DeferredDeletionQueue.cpp deleted file mode 100644 index bee832d..0000000 --- a/Plugins/MetaXR/Source/OculusXRHMD/Private/OculusXRHMD_DeferredDeletionQueue.cpp +++ /dev/null @@ -1,80 +0,0 @@ -// @lint-ignore-every LICENSELINT -// Copyright Epic Games, Inc. All Rights Reserved. - -#include "OculusXRHMD_DeferredDeletionQueue.h" - -#if OCULUS_HMD_SUPPORTED_PLATFORMS -#include "OculusXRHMDPrivate.h" -#include "XRThreadUtils.h" -#include "OculusXRHMDModule.h" -#include "Misc/EngineVersionComparison.h" - -namespace OculusXRHMD -{ - - //------------------------------------------------------------------------------------------------- - // FDeferredDeletionQueue - //------------------------------------------------------------------------------------------------- - uint32 GOculusXRHMDLayerDeletionFrameNumber = 0; - const uint32 NUM_FRAMES_TO_WAIT_FOR_LAYER_DELETE = 3; - const uint32 NUM_FRAMES_TO_WAIT_FOR_OVRP_LAYER_DELETE = 7; - - void FDeferredDeletionQueue::AddLayerToDeferredDeletionQueue(const FLayerPtr& ptr) - { - DeferredDeletionEntry Entry; - Entry.Layer = ptr; - Entry.FrameEnqueued = GOculusXRHMDLayerDeletionFrameNumber; - Entry.EntryType = DeferredDeletionEntry::DeferredDeletionEntryType::Layer; - DeferredDeletionArray.Add(Entry); - } - - void FDeferredDeletionQueue::AddOVRPLayerToDeferredDeletionQueue(const uint32 layerID) - { - DeferredDeletionEntry Entry; - Entry.OvrpLayerId = layerID; - Entry.FrameEnqueued = GOculusXRHMDLayerDeletionFrameNumber; - Entry.EntryType = DeferredDeletionEntry::DeferredDeletionEntryType::OvrpLayer; - DeferredDeletionArray.Add(Entry); - } - - void FDeferredDeletionQueue::HandleLayerDeferredDeletionQueue_RenderThread(bool bDeleteImmediately) - { - // Traverse list backwards so the swap switches to elements already tested - for (int32 Index = DeferredDeletionArray.Num() - 1; Index >= 0; --Index) - { - DeferredDeletionEntry* Entry = &DeferredDeletionArray[Index]; - if (Entry->EntryType == DeferredDeletionEntry::DeferredDeletionEntryType::Layer) - { - if (bDeleteImmediately || GOculusXRHMDLayerDeletionFrameNumber > Entry->FrameEnqueued + NUM_FRAMES_TO_WAIT_FOR_LAYER_DELETE) - { -#if UE_VERSION_OLDER_THAN(5, 5, 0) - DeferredDeletionArray.RemoveAtSwap(Index, 1, false); -#else - DeferredDeletionArray.RemoveAtSwap(Index, 1, EAllowShrinking::No); -#endif - } - } - else if (Entry->EntryType == DeferredDeletionEntry::DeferredDeletionEntryType::OvrpLayer) - { - if (bDeleteImmediately || GOculusXRHMDLayerDeletionFrameNumber > Entry->FrameEnqueued + NUM_FRAMES_TO_WAIT_FOR_OVRP_LAYER_DELETE) - { - ExecuteOnRHIThread_DoNotWait([OvrpLayerId = Entry->OvrpLayerId]() { - UE_LOG(LogHMD, Warning, TEXT("Destroying layer %d"), OvrpLayerId); - FOculusXRHMDModule::GetPluginWrapper().DestroyLayer(OvrpLayerId); - }); -#if UE_VERSION_OLDER_THAN(5, 5, 0) - DeferredDeletionArray.RemoveAtSwap(Index, 1, false); -#else - DeferredDeletionArray.RemoveAtSwap(Index, 1, EAllowShrinking::No); -#endif - } - } - } - - // if the function is to be called multiple times, move this increment somewhere unique! - ++GOculusXRHMDLayerDeletionFrameNumber; - } - -} // namespace OculusXRHMD - -#endif // OCULUS_HMD_SUPPORTED_PLATFORMS diff --git a/Plugins/MetaXR/Source/OculusXRHMD/Private/OculusXRHMD_DeferredDeletionQueue.h b/Plugins/MetaXR/Source/OculusXRHMD/Private/OculusXRHMD_DeferredDeletionQueue.h deleted file mode 100644 index ca53586..0000000 --- a/Plugins/MetaXR/Source/OculusXRHMD/Private/OculusXRHMD_DeferredDeletionQueue.h +++ /dev/null @@ -1,45 +0,0 @@ -// @lint-ignore-every LICENSELINT -// Copyright Epic Games, Inc. All Rights Reserved. - -#pragma once -#include "OculusXRHMDPrivate.h" - -#if OCULUS_HMD_SUPPORTED_PLATFORMS -#include "OculusXRHMD_Layer.h" - -namespace OculusXRHMD -{ - - //------------------------------------------------------------------------------------------------- - // FDeferredDeletionQueue - //------------------------------------------------------------------------------------------------- - - class FDeferredDeletionQueue - { - public: - void AddLayerToDeferredDeletionQueue(const FLayerPtr& ptr); - void AddOVRPLayerToDeferredDeletionQueue(const uint32 layerID); - void HandleLayerDeferredDeletionQueue_RenderThread(bool bDeleteImmediately = false); - - private: - struct DeferredDeletionEntry - { - enum class DeferredDeletionEntryType - { - Layer, - OvrpLayer - }; - - FLayerPtr Layer; - uint32 OvrpLayerId; - - uint32 FrameEnqueued; - DeferredDeletionEntryType EntryType; - }; - - TArray DeferredDeletionArray; - }; - -} // namespace OculusXRHMD - -#endif // OCULUS_HMD_SUPPORTED_PLATFORMS diff --git a/Plugins/MetaXR/Source/OculusXRHMD/Private/OculusXRHMD_DynamicResolutionState.cpp b/Plugins/MetaXR/Source/OculusXRHMD/Private/OculusXRHMD_DynamicResolutionState.cpp deleted file mode 100644 index ae2dda4..0000000 --- a/Plugins/MetaXR/Source/OculusXRHMD/Private/OculusXRHMD_DynamicResolutionState.cpp +++ /dev/null @@ -1,97 +0,0 @@ -// @lint-ignore-every LICENSELINT -// Copyright Epic Games, Inc. All Rights Reserved. - -#include "OculusXRHMD_DynamicResolutionState.h" -#include "LegacyScreenPercentageDriver.h" - -#if OCULUS_HMD_SUPPORTED_PLATFORMS -#include "SceneView.h" - -namespace OculusXRHMD -{ - - //------------------------------------------------------------------------------------------------- - // FDynamicResolutionState implementation - //------------------------------------------------------------------------------------------------- - - FDynamicResolutionState::FDynamicResolutionState(const OculusXRHMD::FSettingsPtr InSettings) - : Settings(InSettings) - , ResolutionFraction(-1.0f) - , ResolutionFractionUpperBound(-1.0f) - { - check(Settings.IsValid()); - } - - void FDynamicResolutionState::ResetHistory() { - // Empty - Oculus drives resolution fraction externally - }; - - bool FDynamicResolutionState::IsSupported() const - { - return true; - } - - void FDynamicResolutionState::SetupMainViewFamily(class FSceneViewFamily& ViewFamily) - { - check(IsInGameThread()); - check(ViewFamily.EngineShowFlags.ScreenPercentage == true); - - if (IsEnabled()) - { - // Compute desired resolution fraction range - float MinResolutionFraction = Settings->GetPixelDensityMin(); - float MaxResolutionFraction = Settings->GetPixelDensityMax(); - - // Clamp resolution fraction to what the renderer can do. - MinResolutionFraction = FMath::Max(MinResolutionFraction, ISceneViewFamilyScreenPercentage::kMinResolutionFraction); - MaxResolutionFraction = FMath::Min(MaxResolutionFraction, ISceneViewFamilyScreenPercentage::kMaxResolutionFraction); - - ResolutionFraction = FMath::Clamp(Settings->PixelDensity, MinResolutionFraction, MaxResolutionFraction); - ResolutionFractionUpperBound = MaxResolutionFraction; - - ViewFamily.SetScreenPercentageInterface(new FLegacyScreenPercentageDriver(ViewFamily, ResolutionFraction, ResolutionFractionUpperBound)); - } - } -#if !UE_VERSION_OLDER_THAN(5, 4, 0) - void FDynamicResolutionState::SetTemporalUpscaler(const UE::Renderer::Private::ITemporalUpscaler* InTemporalUpscaler) - { - // Not supported - return; - } -#endif // !UE_VERSION_OLDER_THAN(5, 4, 0) - - DynamicRenderScaling::TMap FDynamicResolutionState::GetResolutionFractionsApproximation() const - { - DynamicRenderScaling::TMap ResolutionFractions; - ResolutionFractions.SetAll(1.0f); - ResolutionFractions[GDynamicPrimaryResolutionFraction] = ResolutionFraction; - return ResolutionFractions; - } - - DynamicRenderScaling::TMap FDynamicResolutionState::GetResolutionFractionsUpperBound() const - { - DynamicRenderScaling::TMap ResolutionFractions; - ResolutionFractions.SetAll(1.0f); - ResolutionFractions[GDynamicPrimaryResolutionFraction] = ResolutionFractionUpperBound; - return ResolutionFractionUpperBound; - } - - void FDynamicResolutionState::SetEnabled(bool bEnable) - { - check(IsInGameThread()); - Settings->Flags.bPixelDensityAdaptive = bEnable; - } - - bool FDynamicResolutionState::IsEnabled() const - { - check(IsInGameThread()); - return Settings->Flags.bPixelDensityAdaptive; - } - - void FDynamicResolutionState::ProcessEvent(EDynamicResolutionStateEvent Event) { - // Empty - Oculus drives resolution fraction externally - }; - -} // namespace OculusXRHMD - -#endif // OCULUS_HMD_SUPPORTED_PLATFORMS diff --git a/Plugins/MetaXR/Source/OculusXRHMD/Private/OculusXRHMD_DynamicResolutionState.h b/Plugins/MetaXR/Source/OculusXRHMD/Private/OculusXRHMD_DynamicResolutionState.h deleted file mode 100644 index fb0380e..0000000 --- a/Plugins/MetaXR/Source/OculusXRHMD/Private/OculusXRHMD_DynamicResolutionState.h +++ /dev/null @@ -1,46 +0,0 @@ -// @lint-ignore-every LICENSELINT -// Copyright Epic Games, Inc. All Rights Reserved. - -#pragma once -#include "OculusXRHMDPrivate.h" - -#if OCULUS_HMD_SUPPORTED_PLATFORMS -#include "OculusXRHMD_Settings.h" -#include "DynamicResolutionState.h" - -namespace OculusXRHMD -{ - - //------------------------------------------------------------------------------------------------- - // FDynamicResolutionState - //------------------------------------------------------------------------------------------------- - - class FDynamicResolutionState : public IDynamicResolutionState - { - public: - FDynamicResolutionState(const OculusXRHMD::FSettingsPtr InSettings); - - // ISceneViewFamilyScreenPercentage - virtual void ResetHistory() override; - virtual bool IsSupported() const override; - virtual void SetupMainViewFamily(class FSceneViewFamily& ViewFamily) override; -#if !UE_VERSION_OLDER_THAN(5, 4, 0) - virtual void SetTemporalUpscaler(const UE::Renderer::Private::ITemporalUpscaler* InTemporalUpscaler) override; -#endif // !UE_VERSION_OLDER_THAN(5, 4, 0) - - protected: - virtual DynamicRenderScaling::TMap GetResolutionFractionsApproximation() const override; - virtual DynamicRenderScaling::TMap GetResolutionFractionsUpperBound() const override; - virtual void SetEnabled(bool bEnable) override; - virtual bool IsEnabled() const override; - virtual void ProcessEvent(EDynamicResolutionStateEvent Event) override; - - private: - const OculusXRHMD::FSettingsPtr Settings; - float ResolutionFraction; - float ResolutionFractionUpperBound; - }; - -} // namespace OculusXRHMD - -#endif // OCULUS_HMD_SUPPORTED_PLATFORMS diff --git a/Plugins/MetaXR/Source/OculusXRHMD/Private/OculusXRHMD_FoveatedRendering.cpp b/Plugins/MetaXR/Source/OculusXRHMD/Private/OculusXRHMD_FoveatedRendering.cpp deleted file mode 100644 index 9939718..0000000 --- a/Plugins/MetaXR/Source/OculusXRHMD/Private/OculusXRHMD_FoveatedRendering.cpp +++ /dev/null @@ -1,74 +0,0 @@ -// @lint-ignore-every LICENSELINT -// Copyright Epic Games, Inc. All Rights Reserved. - -#include "OculusXRHMD_FoveatedRendering.h" - -#include "HeadMountedDisplayTypes.h" // For the LogHMD log category -#include "RenderGraphBuilder.h" -#include "SceneView.h" -#include "StereoRendering.h" - -FOculusXRFoveatedRenderingImageGenerator::FOculusXRFoveatedRenderingImageGenerator(const FXRSwapChainPtr& Swapchain) - : FoveationSwapchain(Swapchain) -{ - GVRSImageManager.RegisterExternalImageGenerator(this); -} - -FOculusXRFoveatedRenderingImageGenerator::~FOculusXRFoveatedRenderingImageGenerator() -{ - GVRSImageManager.UnregisterExternalImageGenerator(this); -} - -#if !UE_VERSION_OLDER_THAN(5, 4, 0) -FRDGTextureRef FOculusXRFoveatedRenderingImageGenerator::GetImage( - FRDGBuilder& GraphBuilder, - const FViewInfo& ViewInfo, - FVariableRateShadingImageManager::EVRSImageType ImageType, bool bGetSoftwareImage) -#else -FRDGTextureRef FOculusXRFoveatedRenderingImageGenerator::GetImage( - FRDGBuilder& GraphBuilder, - const FViewInfo& ViewInfo, - FVariableRateShadingImageManager::EVRSImageType ImageType) -#endif -{ - if (!FoveationSwapchain.IsValid()) - { - return nullptr; - } - - FTextureRHIRef SwapchainTexture = FoveationSwapchain->GetTexture2DArray() ? FoveationSwapchain->GetTexture2DArray() : FoveationSwapchain->GetTexture2D(); - FIntPoint TexSize = SwapchainTexture->GetSizeXY(); - // Only set texture and return true if we have a valid texture of compatible size - if (SwapchainTexture->IsValid() && TexSize.X > 0 && TexSize.Y > 0) - { - TRefCountPtr PooledRenderTarget = CreateRenderTarget(SwapchainTexture, *SwapchainTexture->GetName().ToString()); - return GraphBuilder.RegisterExternalTexture(PooledRenderTarget, *SwapchainTexture->GetName().ToString(), ERDGTextureFlags::SkipTracking); - } - return nullptr; -} - -#if !UE_VERSION_OLDER_THAN(5, 4, 0) -bool FOculusXRFoveatedRenderingImageGenerator::IsSupportedByView(const FSceneView& View) const -#else -bool FOculusXRFoveatedRenderingImageGenerator::IsEnabledForView(const FSceneView& View) const -#endif -{ - return View.StereoPass != EStereoscopicPass::eSSP_FULL; -} - -#if !UE_VERSION_OLDER_THAN(5, 4, 0) -FRDGTextureRef FOculusXRFoveatedRenderingImageGenerator::GetDebugImage( - FRDGBuilder& GraphBuilder, - const FViewInfo& ViewInfo, - FVariableRateShadingImageManager::EVRSImageType ImageType, - bool bGetSoftwareImage) - -#else -FRDGTextureRef FOculusXRFoveatedRenderingImageGenerator::GetDebugImage( - FRDGBuilder& GraphBuilder, - const FViewInfo& ViewInfo, - FVariableRateShadingImageManager::EVRSImageType ImageType) -#endif -{ - return nullptr; -} diff --git a/Plugins/MetaXR/Source/OculusXRHMD/Private/OculusXRHMD_FoveatedRendering.h b/Plugins/MetaXR/Source/OculusXRHMD/Private/OculusXRHMD_FoveatedRendering.h deleted file mode 100644 index 170b8d6..0000000 --- a/Plugins/MetaXR/Source/OculusXRHMD/Private/OculusXRHMD_FoveatedRendering.h +++ /dev/null @@ -1,84 +0,0 @@ -// @lint-ignore-every LICENSELINT -// Copyright Epic Games, Inc. All Rights Reserved. - -#pragma once - -#include "Misc/EngineVersionComparison.h" - -#include "VariableRateShadingImageManager.h" -#include "XRSwapchain.h" - -class FOculusXRFoveatedRenderingImageGenerator : public IVariableRateShadingImageGenerator -{ -public: - FOculusXRFoveatedRenderingImageGenerator(const FXRSwapChainPtr& Swapchain); - virtual ~FOculusXRFoveatedRenderingImageGenerator() override; - - // IVariableRateShadingImageGenerator interface -#if !UE_VERSION_OLDER_THAN(5, 4, 0) - virtual FRDGTextureRef GetImage( - FRDGBuilder& GraphBuilder, - const FViewInfo& ViewInfo, - FVariableRateShadingImageManager::EVRSImageType ImageType, - bool bGetSoftwareImage = false) override; -#else - virtual FRDGTextureRef GetImage( - FRDGBuilder& GraphBuilder, - const FViewInfo& ViewInfo, - FVariableRateShadingImageManager::EVRSImageType ImageType) override; -#endif - -#if !UE_VERSION_OLDER_THAN(5, 4, 0) - virtual void PrepareImages( - FRDGBuilder& GraphBuilder, - const FSceneViewFamily& ViewFamily, - const FMinimalSceneTextures& SceneTextures, - bool bPrepareHardwareImages, - bool bPrepareSoftwareImages) override - { - return; - } -#else - virtual void PrepareImages( - FRDGBuilder& GraphBuilder, - const FSceneViewFamily& ViewFamily, - const FMinimalSceneTextures& SceneTextures) override - { - return; - } -#endif - -#if !UE_VERSION_OLDER_THAN(5, 4, 0) - virtual bool IsEnabled() const override - { - return true; - }; -#endif - -#if !UE_VERSION_OLDER_THAN(5, 4, 0) - virtual bool IsSupportedByView(const FSceneView& View) const override; -#else - virtual bool IsEnabledForView(const FSceneView& View) const override; -#endif - -#if !UE_VERSION_OLDER_THAN(5, 4, 0) - virtual FRDGTextureRef GetDebugImage( - FRDGBuilder& GraphBuilder, - const FViewInfo& ViewInfo, - FVariableRateShadingImageManager::EVRSImageType ImageType, - bool bGetSoftwareImage = false) override; -#else - virtual FRDGTextureRef GetDebugImage( - FRDGBuilder& GraphBuilder, - const FViewInfo& ViewInfo, - FVariableRateShadingImageManager::EVRSImageType ImageType) override; -#endif - - virtual FVariableRateShadingImageManager::EVRSSourceType GetType() const override - { - return FVariableRateShadingImageManager::EVRSSourceType::FixedFoveation; - } - -private: - const FXRSwapChainPtr& FoveationSwapchain; -}; diff --git a/Plugins/MetaXR/Source/OculusXRHMD/Private/OculusXRHMD_GameFrame.cpp b/Plugins/MetaXR/Source/OculusXRHMD/Private/OculusXRHMD_GameFrame.cpp deleted file mode 100644 index 10dadd3..0000000 --- a/Plugins/MetaXR/Source/OculusXRHMD/Private/OculusXRHMD_GameFrame.cpp +++ /dev/null @@ -1,33 +0,0 @@ -// @lint-ignore-every LICENSELINT -// Copyright Epic Games, Inc. All Rights Reserved. - -#include "OculusXRHMD_GameFrame.h" - -#if OCULUS_HMD_SUPPORTED_PLATFORMS -#include "GameFramework/WorldSettings.h" -#include "Engine/Engine.h" -#include "Engine/World.h" - -namespace OculusXRHMD -{ - - //------------------------------------------------------------------------------------------------- - // FGameFrame - //------------------------------------------------------------------------------------------------- - - FGameFrame::FGameFrame() - : FrameNumber(0), WorldToMetersScale(100.f), ShowFlags(ESFIM_All0), PlayerOrientation(FQuat::Identity), PlayerLocation(FVector::ZeroVector), FoveatedRenderingMethod(EOculusXRFoveatedRenderingMethod::FixedFoveatedRendering), FoveatedRenderingLevel(EOculusXRFoveatedRenderingLevel::Off), bDynamicFoveatedRendering(false) - { - Flags.Raw = 0; - Fov[0] = Fov[1] = SymmetricFov[0] = SymmetricFov[1] = ovrpFovf{ 0, 0, 0, 0 }; - } - - TSharedPtr FGameFrame::Clone() const - { - TSharedPtr NewFrame = MakeShareable(new FGameFrame(*this)); - return NewFrame; - } - -} // namespace OculusXRHMD - -#endif // OCULUS_HMD_SUPPORTED_PLATFORMS diff --git a/Plugins/MetaXR/Source/OculusXRHMD/Private/OculusXRHMD_GameFrame.h b/Plugins/MetaXR/Source/OculusXRHMD/Private/OculusXRHMD_GameFrame.h deleted file mode 100644 index 884fbb0..0000000 --- a/Plugins/MetaXR/Source/OculusXRHMD/Private/OculusXRHMD_GameFrame.h +++ /dev/null @@ -1,65 +0,0 @@ -// @lint-ignore-every LICENSELINT -// Copyright Epic Games, Inc. All Rights Reserved. - -#pragma once -#include "OculusXRHMDPrivate.h" - -#if OCULUS_HMD_SUPPORTED_PLATFORMS -#include "OculusXRHMD_Settings.h" -#include "ShowFlags.h" - -namespace OculusXRHMD -{ - - //------------------------------------------------------------------------------------------------- - // FGameFrame - //------------------------------------------------------------------------------------------------- - - class FGameFrame : public TSharedFromThis - { - public: - uint32 FrameNumber; // current frame number. (StartGameFrame_GameThread) - float WorldToMetersScale; // World units (UU) to Meters scale. (OnStartGameFrame) - FIntPoint WindowSize; // actual window size (StartGameFrame_GameThread) - FEngineShowFlags ShowFlags; // (PreRenderViewFamily_RenderThread) - - FQuat HeadOrientation; // (CalculateStereoViewOffset) - FQuat PlayerOrientation; // (CalculateStereoViewOffset) - FVector PlayerLocation; // (CalculateStereoViewOffset) - float NearClippingPlane; // (GetStereoProjectionMatrix) - - FTransform TrackingToWorld; // (OnEndGameFrame) - FTransform LastTrackingToWorld; // (OnEndGameFrame) - - EOculusXRFoveatedRenderingMethod FoveatedRenderingMethod; // OnStartGameFrame - EOculusXRFoveatedRenderingLevel FoveatedRenderingLevel; // OnStartGameFrame - bool bDynamicFoveatedRendering; // OnStartGameFrame - - ovrpFovf Fov[ovrpEye_Count]; // UpdateStereoRenderingParams - ovrpFovf SymmetricFov[ovrpEye_Count]; // UpdateStereoRenderingParams, symmetric FOV if frame is using symmetricFOV. - - union - { - struct - { - /** True, if splash is shown */ - uint64 bSplashIsShown : 1; - /** True, if spectator screen is active */ - uint64 bSpectatorScreenActive : 1; - /** True if the frame's positions have been updated on the render thread */ - uint64 bRTLateUpdateDone : 1; - }; - uint64 Raw; - } Flags; - - public: - FGameFrame(); - - TSharedPtr Clone() const; - }; - - typedef TSharedPtr FGameFramePtr; - -} // namespace OculusXRHMD - -#endif // OCULUS_HMD_SUPPORTED_PLATFORMS diff --git a/Plugins/MetaXR/Source/OculusXRHMD/Private/OculusXRHMD_Layer.cpp b/Plugins/MetaXR/Source/OculusXRHMD/Private/OculusXRHMD_Layer.cpp deleted file mode 100644 index 2778a9d..0000000 --- a/Plugins/MetaXR/Source/OculusXRHMD/Private/OculusXRHMD_Layer.cpp +++ /dev/null @@ -1,1539 +0,0 @@ -// @lint-ignore-every LICENSELINT -// Copyright Epic Games, Inc. All Rights Reserved. - -#include "OculusXRHMD_Layer.h" - -#if OCULUS_HMD_SUPPORTED_PLATFORMS -// #include "MediaTexture.h" -// #include "ScreenRendering.h" -// #include "ScenePrivate.h" -// #include "PostProcess/SceneFilterRendering.h" -#include "PostProcess/SceneRenderTargets.h" -#include "HeadMountedDisplayTypes.h" // for LogHMD -#include "OculusXRHMD.h" -#include "XRThreadUtils.h" -#include "Engine/RendererSettings.h" -#include "Engine/Texture2D.h" -#include "UObject/ConstructorHelpers.h" -#include "Materials/Material.h" -#include "Materials/MaterialInterface.h" -#include "Materials/MaterialInstanceDynamic.h" -#include "Engine/GameEngine.h" -#include "SceneUtils.h" -#include "OculusXRHMDPrivate.h" -#include "OculusXRHMDModule.h" -#include "OculusXRHMD_DeferredDeletionQueue.h" -#include "OculusXRStereoLayersFlagsSupplier.h" -#include "GenerateMips.h" - -namespace OculusXRHMD -{ - - //------------------------------------------------------------------------------------------------- - // FOvrpLayer - //------------------------------------------------------------------------------------------------- - - FOvrpLayer::FOvrpLayer(uint32 InOvrpLayerId, FDeferredDeletionQueue* InDeferredDeletion) - : OvrpLayerId(InOvrpLayerId), DeferredDeletion(InDeferredDeletion) - { - } - - FOvrpLayer::~FOvrpLayer() - { - if (IsInGameThread()) - { - ExecuteOnRenderThread([OvrpLayerId = this->OvrpLayerId, DeferredDeletion = this->DeferredDeletion]() { - DeferredDeletion->AddOVRPLayerToDeferredDeletionQueue(OvrpLayerId); - }); - } - else - { - DeferredDeletion->AddOVRPLayerToDeferredDeletionQueue(OvrpLayerId); - } - } - - //------------------------------------------------------------------------------------------------- - // FLayer - //------------------------------------------------------------------------------------------------- - - FLayer::FLayer(uint32 InId) - : bNeedsTexSrgbCreate(false) - , Id(InId) - , OvrpLayerId(0) - , bUpdateTexture(false) - , bInvertY(false) - , bHasDepth(false) - , bSupportDepthComposite(false) - , bSubmitSpaceWarp(false) - , PokeAHoleComponentPtr(nullptr) - , PokeAHoleActor(nullptr) - { - FMemory::Memzero(OvrpLayerDesc); - FMemory::Memzero(OvrpLayerSubmit); - } - - FLayer::FLayer(const FLayer& Layer) - : bNeedsTexSrgbCreate(Layer.bNeedsTexSrgbCreate) - , Id(Layer.Id) - , Desc(Layer.Desc) - , OvrpLayerId(Layer.OvrpLayerId) - , OvrpLayer(Layer.OvrpLayer) - , SwapChain(Layer.SwapChain) - , DepthSwapChain(Layer.DepthSwapChain) - , FoveationSwapChain(Layer.FoveationSwapChain) - , RightSwapChain(Layer.RightSwapChain) - , RightDepthSwapChain(Layer.RightDepthSwapChain) - , MotionVectorSwapChain(Layer.MotionVectorSwapChain) - , MotionVectorDepthSwapChain(Layer.MotionVectorDepthSwapChain) - , InvAlphaTexture(Layer.InvAlphaTexture) - , bUpdateTexture(Layer.bUpdateTexture) - , bInvertY(Layer.bInvertY) - , bHasDepth(Layer.bHasDepth) - , bSupportDepthComposite(Layer.bSupportDepthComposite) - , bSubmitSpaceWarp(Layer.bSubmitSpaceWarp) - , PokeAHoleComponentPtr(Layer.PokeAHoleComponentPtr) - , PokeAHoleActor(Layer.PokeAHoleActor) - , UserDefinedGeometryMap(Layer.UserDefinedGeometryMap) - , PassthroughPokeActorMap(Layer.PassthroughPokeActorMap) - { - FMemory::Memcpy(&OvrpLayerDesc, &Layer.OvrpLayerDesc, sizeof(OvrpLayerDesc)); - FMemory::Memcpy(&OvrpLayerSubmit, &Layer.OvrpLayerSubmit, sizeof(OvrpLayerSubmit)); - } - - FLayer::~FLayer() - { - } - - void FLayer::SetDesc(const IStereoLayers::FLayerDesc& InDesc) - { - if (Desc.Texture != InDesc.Texture || Desc.LeftTexture != InDesc.LeftTexture) - { - bUpdateTexture = true; - } - - Desc = InDesc; - - if (!UserDefinedGeometryMap) - { - UserDefinedGeometryMap = MakeShared, ESPMode::ThreadSafe>(); - } - - if (!PassthroughPokeActorMap) - { - PassthroughPokeActorMap = MakeShared, ESPMode::ThreadSafe>(); - } - - HandlePokeAHoleComponent(); - -#if !PLATFORM_ANDROID - if (!(Desc.HasShape() || Desc.HasShape())) // If not Passthrough Shape - { - // Mark all layers as supporting depth for now, due to artifacts with ovrpLayerSubmitFlag_NoDepth - Desc.Flags |= IStereoLayers::LAYER_FLAG_SUPPORT_DEPTH; - } -#endif - - UpdatePassthroughPokeActors_GameThread(); - } - - void FLayer::SetDesc(const FSettings* Settings, const IStereoLayers::FLayerDesc& InDesc) - { - bSupportDepthComposite = Settings->Flags.bCompositeDepth; - - SetDesc(InDesc); - } - - static UWorld* GetWorld() - { - UWorld* World = nullptr; - for (const FWorldContext& Context : GEngine->GetWorldContexts()) - { - if (Context.WorldType == EWorldType::Game || Context.WorldType == EWorldType::PIE) - { - World = Context.World(); - } - } - return World; - } - - bool FLayer::NeedsPassthroughPokeAHole() - { - return ((Desc.Flags & IStereoLayers::LAYER_FLAG_SUPPORT_DEPTH) != 0) && Desc.HasShape(); - } - - bool FLayer::NeedsPokeAHole() - { -#if PLATFORM_ANDROID - bool bIsPassthroughShape = (Desc.HasShape() || Desc.HasShape()); - return !bIsPassthroughShape && !bSupportDepthComposite && ((Desc.Flags & IStereoLayers::LAYER_FLAG_SUPPORT_DEPTH) != 0); -#else - return false; -#endif - } - - void FLayer::HandlePokeAHoleComponent() - { - if (NeedsPokeAHole()) - { - const FString BaseComponentName = FString::Printf(TEXT("OculusPokeAHole_%d"), Id); - const FName ComponentName(*BaseComponentName); - - if (!PokeAHoleComponentPtr) - { - UWorld* World = GetWorld(); - - if (!World) - { - return; - } - - PokeAHoleActor = World->SpawnActor(); - - PokeAHoleComponentPtr = NewObject(PokeAHoleActor, ComponentName); - PokeAHoleComponentPtr->RegisterComponent(); - - TArray Vertices; - TArray Triangles; - TArray Normals; - TArray UV0; - TArray VertexColors; - TArray Tangents; - - BuildPokeAHoleMesh(Vertices, Triangles, UV0); - PokeAHoleComponentPtr->CreateMeshSection_LinearColor(0, Vertices, Triangles, Normals, UV0, VertexColors, Tangents, false); - - FOculusXRHMD* OculusXRHMD = static_cast(GEngine->XRSystem->GetHMDDevice()); - UMaterial* PokeAHoleMaterial = OculusXRHMD->GetResourceHolder()->PokeAHoleMaterial; - UMaterialInstanceDynamic* DynamicMaterial = UMaterialInstanceDynamic::Create(PokeAHoleMaterial, nullptr); - PokeAHoleComponentPtr->SetMaterial(0, DynamicMaterial); - } - PokeAHoleComponentPtr->SetWorldTransform(Desc.Transform); - } - - return; - } - - static void AppendFaceIndices(const int v0, const int v1, const int v2, const int v3, TArray& Triangles, bool inverse) - { - if (inverse) - { - Triangles.Add(v0); - Triangles.Add(v2); - Triangles.Add(v1); - Triangles.Add(v0); - Triangles.Add(v3); - Triangles.Add(v2); - } - else - { - Triangles.Add(v0); - Triangles.Add(v1); - Triangles.Add(v2); - Triangles.Add(v0); - Triangles.Add(v2); - Triangles.Add(v3); - } - } - - void FLayer::BuildPokeAHoleMesh(TArray& Vertices, TArray& Triangles, TArray& UV0) - { - if (Desc.HasShape()) - { - const float QuadScale = 0.99; - - FIntPoint TexSize = Desc.Texture.IsValid() ? Desc.Texture->GetTexture2D()->GetSizeXY() : Desc.LayerSize; - float AspectRatio = TexSize.X ? (float)TexSize.Y / (float)TexSize.X : 3.0f / 4.0f; - - float QuadSizeX = Desc.QuadSize.X; - float QuadSizeY = (Desc.Flags & IStereoLayers::LAYER_FLAG_QUAD_PRESERVE_TEX_RATIO) ? Desc.QuadSize.X * AspectRatio : Desc.QuadSize.Y; - - Vertices.Init(FVector::ZeroVector, 4); - Vertices[0] = FVector(0.0, -QuadSizeX / 2, -QuadSizeY / 2) * QuadScale; - Vertices[1] = FVector(0.0, QuadSizeX / 2, -QuadSizeY / 2) * QuadScale; - Vertices[2] = FVector(0.0, QuadSizeX / 2, QuadSizeY / 2) * QuadScale; - Vertices[3] = FVector(0.0, -QuadSizeX / 2, QuadSizeY / 2) * QuadScale; - - UV0.Init(FVector2D::ZeroVector, 4); - UV0[0] = FVector2D(0, 1); - UV0[1] = FVector2D(1, 1); - UV0[2] = FVector2D(1, 0); - UV0[3] = FVector2D(0, 0); - - Triangles.Reserve(6); - AppendFaceIndices(0, 1, 2, 3, Triangles, false); - } - else if (Desc.HasShape()) - { - const FCylinderLayer& CylinderProps = Desc.GetShape(); - const float CylinderScale = 0.99; - - FIntPoint TexSize = Desc.Texture.IsValid() ? Desc.Texture->GetTexture2D()->GetSizeXY() : Desc.LayerSize; - float AspectRatio = TexSize.X ? (float)TexSize.Y / (float)TexSize.X : 3.0f / 4.0f; - - float CylinderHeight = (Desc.Flags & IStereoLayers::LAYER_FLAG_QUAD_PRESERVE_TEX_RATIO) ? CylinderProps.OverlayArc * AspectRatio : CylinderProps.Height; - - const FVector XAxis = FVector(1, 0, 0); - const FVector YAxis = FVector(0, 1, 0); - const FVector HalfHeight = FVector(0, 0, CylinderHeight / 2); - - const float ArcAngle = CylinderProps.OverlayArc / CylinderProps.Radius; - const int Sides = (int)((ArcAngle * 180) / (PI * 5)); // one triangle every 10 degrees of cylinder for a good-cheap approximation - Vertices.Init(FVector::ZeroVector, 2 * (Sides + 1)); - UV0.Init(FVector2D::ZeroVector, 2 * (Sides + 1)); - Triangles.Init(0, Sides * 6); - - float CurrentAngle = -ArcAngle / 2; - const float AngleStep = ArcAngle / Sides; - - for (int Side = 0; Side < Sides + 1; Side++) - { - FVector MidVertex = CylinderProps.Radius * (FMath::Cos(CurrentAngle) * XAxis + FMath::Sin(CurrentAngle) * YAxis); - Vertices[2 * Side] = (MidVertex - HalfHeight) * CylinderScale; - Vertices[(2 * Side) + 1] = (MidVertex + HalfHeight) * CylinderScale; - - UV0[2 * Side] = FVector2D(1 - (Side / (float)Sides), 0); - UV0[(2 * Side) + 1] = FVector2D(1 - (Side / (float)Sides), 1); - - CurrentAngle += AngleStep; - - if (Side < Sides) - { - Triangles[6 * Side + 0] = 2 * Side; - Triangles[6 * Side + 2] = 2 * Side + 1; - Triangles[6 * Side + 1] = 2 * (Side + 1) + 1; - Triangles[6 * Side + 3] = 2 * Side; - Triangles[6 * Side + 5] = 2 * (Side + 1) + 1; - Triangles[6 * Side + 4] = 2 * (Side + 1); - } - } - } - else if (Desc.HasShape()) - { - const float CubemapScale = 1000; - Vertices.Init(FVector::ZeroVector, 8); - Vertices[0] = FVector(-1.0, -1.0, -1.0) * CubemapScale; - Vertices[1] = FVector(-1.0, -1.0, 1.0) * CubemapScale; - Vertices[2] = FVector(-1.0, 1.0, -1.0) * CubemapScale; - Vertices[3] = FVector(-1.0, 1.0, 1.0) * CubemapScale; - Vertices[4] = FVector(1.0, -1.0, -1.0) * CubemapScale; - Vertices[5] = FVector(1.0, -1.0, 1.0) * CubemapScale; - Vertices[6] = FVector(1.0, 1.0, -1.0) * CubemapScale; - Vertices[7] = FVector(1.0, 1.0, 1.0) * CubemapScale; - - Triangles.Reserve(24); - AppendFaceIndices(0, 1, 3, 2, Triangles, false); - AppendFaceIndices(4, 5, 7, 6, Triangles, true); - AppendFaceIndices(0, 1, 5, 4, Triangles, true); - AppendFaceIndices(2, 3, 7, 6, Triangles, false); - AppendFaceIndices(0, 2, 6, 4, Triangles, false); - AppendFaceIndices(1, 3, 7, 5, Triangles, true); - } - } - - bool FLayer::BuildPassthroughPokeActor(FOculusPassthroughMeshRef PassthroughMesh, FPassthroughPokeActor& OutPassthroughPokeActor) - { - UWorld* World = GetWorld(); - - if (!World) - { - return false; - } - - const FString BaseComponentName = FString::Printf(TEXT("OculusPassthroughPoke_%d"), Id); - const FName ComponentName(*BaseComponentName); - AActor* PassthoughPokeActor = World->SpawnActor(); - UProceduralMeshComponent* PassthoughPokeComponentPtr = NewObject(PassthoughPokeActor, ComponentName); - PassthoughPokeComponentPtr->RegisterComponent(); - - const TArray& Triangles = PassthroughMesh->GetTriangles(); - const TArray& Vertices = PassthroughMesh->GetVertices(); - TArray Normals; - TArray UV0; - TArray VertexColors; - TArray Tangents; - - PassthoughPokeComponentPtr->CreateMeshSection_LinearColor(0, Vertices, Triangles, Normals, UV0, VertexColors, Tangents, false); - - FOculusXRHMD* OculusXRHMD = static_cast(GEngine->XRSystem->GetHMDDevice()); - UMaterial* PokeAHoleMaterial = OculusXRHMD->GetResourceHolder()->PokeAHoleMaterial; - - UMaterialInstanceDynamic* DynamicMaterial = UMaterialInstanceDynamic::Create(PokeAHoleMaterial, nullptr); - PassthoughPokeComponentPtr->SetMaterial(0, DynamicMaterial); - - OutPassthroughPokeActor.PokeAHoleActor = PassthoughPokeActor; - OutPassthroughPokeActor.PokeAHoleComponentPtr = PassthoughPokeComponentPtr; - - return true; - } - - void FLayer::UpdatePassthroughPokeActors_GameThread() - { - if (Desc.HasShape()) - { - const FUserDefinedLayer& UserDefinedLayerProps = Desc.GetShape(); - const TArray& UserGeometryList = UserDefinedLayerProps.UserGeometryList; - TSet UsedSet = {}; - - if (NeedsPassthroughPokeAHole()) - { - for (const FUserDefinedGeometryDesc& GeometryDesc : UserGeometryList) - { - const FString MeshName = GeometryDesc.MeshName; - UsedSet.Add(MeshName); - - FPassthroughPokeActor* FoundPassthroughPokeActor = PassthroughPokeActorMap->Find(MeshName); - if (!FoundPassthroughPokeActor) - { - OculusXRHMD::FOculusPassthroughMeshRef GeomPassthroughMesh = GeometryDesc.PassthroughMesh; - if (GeomPassthroughMesh) - { - FPassthroughPokeActor PassthroughPokeActor; - if (BuildPassthroughPokeActor(GeomPassthroughMesh, PassthroughPokeActor)) - { - PassthroughPokeActor.PokeAHoleComponentPtr->SetWorldTransform(GeometryDesc.Transform); - PassthroughPokeActorMap->Add(MeshName, PassthroughPokeActor); - } - } - } - else if (GeometryDesc.bUpdateTransform) - { - (*FoundPassthroughPokeActor).PokeAHoleComponentPtr->SetWorldTransform(GeometryDesc.Transform); - } - } - } - - // find actors that no longer exist - TArray ItemsToRemove; - for (auto& Entry : *UserDefinedGeometryMap) - { - if (!UsedSet.Contains(Entry.Key)) - { - ItemsToRemove.Add(Entry.Key); - } - } - - for (FString Entry : ItemsToRemove) - { - FPassthroughPokeActor* PassthroughPokeActor = PassthroughPokeActorMap->Find(Entry); - if (PassthroughPokeActor) - { - UWorld* World = GetWorld(); - if (World) - { - World->DestroyActor(PassthroughPokeActor->PokeAHoleActor); - } - } - PassthroughPokeActorMap->Remove(Entry); - } - } - } - - bool FLayer::ShapeNeedsTextures(ovrpShape shape) - { - return ((shape != ovrpShape_ReconstructionPassthrough) && (shape != ovrpShape_SurfaceProjectedPassthrough)); - } - - void FLayer::SetEyeLayerDesc(const ovrpLayerDesc_EyeFov& InEyeLayerDesc, bool bInSubmitSpaceWarp) - { - OvrpLayerDesc.EyeFov = InEyeLayerDesc; - - bHasDepth = InEyeLayerDesc.DepthFormat != ovrpTextureFormat_None; - bSubmitSpaceWarp = bInSubmitSpaceWarp; - } - - TSharedPtr FLayer::Clone() const - { - return MakeShareable(new FLayer(*this)); - } - - bool FLayer::CanReuseResources(const FLayer* InLayer) const - { - if (!InLayer || !InLayer->OvrpLayer.IsValid()) - { - return false; - } - - if (OvrpLayerDesc.Shape != InLayer->OvrpLayerDesc.Shape || OvrpLayerDesc.Layout != InLayer->OvrpLayerDesc.Layout || OvrpLayerDesc.TextureSize.w != InLayer->OvrpLayerDesc.TextureSize.w || OvrpLayerDesc.TextureSize.h != InLayer->OvrpLayerDesc.TextureSize.h || OvrpLayerDesc.MipLevels != InLayer->OvrpLayerDesc.MipLevels || OvrpLayerDesc.SampleCount != InLayer->OvrpLayerDesc.SampleCount || OvrpLayerDesc.Format != InLayer->OvrpLayerDesc.Format || OvrpLayerDesc.LayerFlags != InLayer->OvrpLayerDesc.LayerFlags || bNeedsTexSrgbCreate != InLayer->bNeedsTexSrgbCreate) - { - return false; - } - - if (OvrpLayerDesc.Shape == ovrpShape_EyeFov) - { - if (OvrpLayerDesc.EyeFov.DepthFormat != InLayer->OvrpLayerDesc.EyeFov.DepthFormat || OvrpLayerDesc.EyeFov.MotionVectorDepthFormat != InLayer->OvrpLayerDesc.EyeFov.MotionVectorDepthFormat || OvrpLayerDesc.EyeFov.MotionVectorFormat != InLayer->OvrpLayerDesc.EyeFov.MotionVectorFormat || OvrpLayerDesc.EyeFov.MotionVectorTextureSize.w != InLayer->OvrpLayerDesc.EyeFov.MotionVectorTextureSize.w || OvrpLayerDesc.EyeFov.MotionVectorTextureSize.h != InLayer->OvrpLayerDesc.EyeFov.MotionVectorTextureSize.h) - { - return false; - } - } - - return true; - } - - bool FLayer::Initialize_RenderThread(const FSettings* Settings, FCustomPresent* CustomPresent, FDeferredDeletionQueue* DeferredDeletion, FRHICommandListImmediate& RHICmdList, const FLayer* InLayer) - { - CheckInRenderThread(); - - if (Id == 0) - { - // OvrpLayerDesc and OvrpViewportRects already initialized, as this is the eyeFOV layer. The only necessary modification is to take into account MSAA level, that can only be accurately determined on the RT. - } - else - { - bInvertY = (CustomPresent->GetLayerFlags() & ovrpLayerFlag_TextureOriginAtBottomLeft) != 0; - - uint32 SizeX = 0, SizeY = 0; - - if (Desc.Texture.IsValid()) - { - FRHITexture* Texture2D = Desc.Texture->GetTexture2D(); - FRHITexture* TextureCube = Desc.Texture->GetTextureCube(); - - if (Texture2D) - { - SizeX = Texture2D->GetSizeX(); - SizeY = Texture2D->GetSizeY(); - } - else if (TextureCube) - { - SizeX = SizeY = TextureCube->GetSize(); - } - } - else - { - SizeX = Desc.LayerSize.X; - SizeY = Desc.LayerSize.Y; - } - - ovrpShape Shape; - - if (Desc.HasShape()) - { - Shape = ovrpShape_Quad; - } - else if (Desc.HasShape()) - { - Shape = ovrpShape_Cylinder; - } - else if (Desc.HasShape()) - { - Shape = ovrpShape_Cubemap; - } - else if (Desc.HasShape()) - { - Shape = ovrpShape_Equirect; - } - else if (Desc.HasShape()) - { - Shape = ovrpShape_ReconstructionPassthrough; - } - else if (Desc.HasShape()) - { - Shape = ovrpShape_SurfaceProjectedPassthrough; - } - else - { - return false; - } - - if (ShapeNeedsTextures(Shape) && (SizeX == 0 || SizeY == 0)) - { - return false; - } - - EPixelFormat Format = Desc.Texture.IsValid() ? CustomPresent->GetPixelFormat(Desc.Texture->GetFormat()) : CustomPresent->GetDefaultPixelFormat(); -#if PLATFORM_ANDROID - uint32 NumMips = Desc.Texture.IsValid() ? Desc.Texture->GetNumMips() : 1; -#else - uint32 NumMips = 0; -#endif - uint32 NumSamples = 1; - int LayerFlags = CustomPresent->GetLayerFlags(); - - if (!(Desc.Flags & IStereoLayers::LAYER_FLAG_TEX_CONTINUOUS_UPDATE)) - { - LayerFlags |= ovrpLayerFlag_Static; - } - - // AdditionalFlags introduced in UE5.4 - int TempLayerFlags = FOculusXRStereoLayersFlagsSupplier::Get()->GetOvrpFlag(Desc.Flags, false); - -#if defined(WITH_OCULUS_BRANCH) && UE_VERSION_OLDER_THAN(5, 5, 0) - if (Desc.Flags & IStereoLayers::LAYER_FLAG_BICUBIC_FILTERING) - { - TempLayerFlags |= ovrpLayerFlag_BicubicFiltering; - } -#endif - if (TempLayerFlags) - { - if (ShapeNeedsTextures(OvrpLayerDesc.Shape)) - { - LayerFlags |= TempLayerFlags; - } - else - { - UE_LOG(LogTemp, Warning, TEXT("Bicubic filter should not be applied to layers without textures, like Passthrough layers.")); - } - } - // Calculate layer desc - FOculusXRHMDModule::GetPluginWrapper().CalculateLayerDesc( - Shape, - !Desc.LeftTexture.IsValid() ? ovrpLayout_Mono : ovrpLayout_Stereo, - ovrpSizei{ (int)SizeX, (int)SizeY }, - NumMips, - NumSamples, - CustomPresent->GetOvrpTextureFormat(Format), - LayerFlags, - &OvrpLayerDesc); - - // Calculate viewport rect - for (uint32 EyeIndex = 0; EyeIndex < ovrpEye_Count; EyeIndex++) - { - ovrpRecti& ViewportRect = OvrpLayerSubmit.ViewportRect[EyeIndex]; - ViewportRect.Pos.x = (int)(Desc.UVRect.Min.X * SizeX + 0.5f); - ViewportRect.Pos.y = (int)(Desc.UVRect.Min.Y * SizeY + 0.5f); - ViewportRect.Size.w = (int)(Desc.UVRect.Max.X * SizeX + 0.5f) - ViewportRect.Pos.x; - ViewportRect.Size.h = (int)(Desc.UVRect.Max.Y * SizeY + 0.5f) - ViewportRect.Pos.y; - } - } - - // Reuse/Create texture set - if (CanReuseResources(InLayer)) - { - OvrpLayerId = InLayer->OvrpLayerId; - OvrpLayer = InLayer->OvrpLayer; - SwapChain = InLayer->SwapChain; - DepthSwapChain = InLayer->DepthSwapChain; - FoveationSwapChain = InLayer->FoveationSwapChain; - RightSwapChain = InLayer->RightSwapChain; - RightDepthSwapChain = InLayer->RightDepthSwapChain; - MotionVectorSwapChain = InLayer->MotionVectorSwapChain; - MotionVectorDepthSwapChain = InLayer->MotionVectorDepthSwapChain; - InvAlphaTexture = InLayer->InvAlphaTexture; - bUpdateTexture = InLayer->bUpdateTexture; - bNeedsTexSrgbCreate = InLayer->bNeedsTexSrgbCreate; - UserDefinedGeometryMap = InLayer->UserDefinedGeometryMap; - } - else - { - bool bLayerCreated = false; - bool bValidFoveationTextures = true; - TArray ColorTextures; - TArray DepthTextures; - TArray FoveationTextures; - TArray RightColorTextures; - TArray RightDepthTextures; - ovrpSizei FoveationTextureSize; - - bool bValidMotionVectorTextures = false; - TArray MotionVectorTextures; - ovrpSizei MotionVectorTextureSize; - TArray MotionVectorDepthTextures; - ovrpSizei MotionVectorDepthTextureSize; - - ExecuteOnRHIThread([&]() { - // UNDONE Do this in RenderThread once OVRPlugin allows FOculusXRHMDModule::GetPluginWrapper().SetupLayer to be called asynchronously - int32 TextureCount; - if (OVRP_SUCCESS(FOculusXRHMDModule::GetPluginWrapper().SetupLayer(CustomPresent->GetOvrpDevice(), OvrpLayerDesc.Base, (int*)&OvrpLayerId)) && OVRP_SUCCESS(FOculusXRHMDModule::GetPluginWrapper().GetLayerTextureStageCount(OvrpLayerId, &TextureCount))) - { - if (ShapeNeedsTextures(OvrpLayerDesc.Shape)) - { - // Left - { - ColorTextures.SetNum(TextureCount); - if (bHasDepth) - { - DepthTextures.SetNum(TextureCount); - } - - FoveationTextures.SetNum(TextureCount); - FoveationTextureSize.w = 0; - FoveationTextureSize.h = 0; - - MotionVectorTextures.SetNum(TextureCount); - MotionVectorTextureSize.w = 0; - MotionVectorTextureSize.h = 0; - MotionVectorDepthTextures.SetNum(TextureCount); - MotionVectorDepthTextureSize.w = 0; - MotionVectorDepthTextureSize.h = 0; - - bValidMotionVectorTextures = ((OvrpLayerDesc.LayerFlags & ovrpLayerFlag_SpaceWarpDataAllocation) > 0) && (OvrpLayerDesc.Shape == ovrpShape_EyeFov); - for (int32 TextureIndex = 0; TextureIndex < TextureCount; TextureIndex++) - { - ovrpTextureHandle* DepthTexHdlPtr = bHasDepth ? &DepthTextures[TextureIndex] : nullptr; - if (OVRP_FAILURE(FOculusXRHMDModule::GetPluginWrapper().GetLayerTexture2(OvrpLayerId, TextureIndex, ovrpEye_Left, &ColorTextures[TextureIndex], DepthTexHdlPtr))) - { - UE_LOG(LogHMD, Error, TEXT("Failed to create Oculus layer texture. NOTE: This causes a leak of %d other texture(s), which will go unused."), TextureIndex); - // skip setting bLayerCreated and allocating any other textures - return; - } - if (bValidFoveationTextures) - { - // Call fails on unsupported platforms and returns null textures for no foveation texture - // Since this texture is not required for rendering, don't return on failure - if (OVRP_FAILURE(FOculusXRHMDModule::GetPluginWrapper().GetLayerTextureFoveation(OvrpLayerId, TextureIndex, ovrpEye_Left, &FoveationTextures[TextureIndex], &FoveationTextureSize)) || FoveationTextures[TextureIndex] == (unsigned long long)nullptr) - { - bValidFoveationTextures = false; - } - } - - if (bValidMotionVectorTextures) - { - // Call fails on unsupported platforms and returns null textures for no motion vector texture - // Since this texture is not required for rendering, don't return on failure - - if (OVRP_FAILURE(FOculusXRHMDModule::GetPluginWrapper().GetLayerTextureSpaceWarp(OvrpLayerId, TextureIndex, ovrpEye_Left, &MotionVectorTextures[TextureIndex], &MotionVectorTextureSize, &MotionVectorDepthTextures[TextureIndex], &MotionVectorDepthTextureSize)) || MotionVectorTextures[TextureIndex] == (unsigned long long)nullptr) - { - bValidMotionVectorTextures = false; - UE_LOG(LogHMD, Error, TEXT("[Mobile SpaceWarp] Space Warp ovrp_GetLayerTextureMotionVector failed")); - } - } - } - } - - // Right - if (OvrpLayerDesc.Layout == ovrpLayout_Stereo) - { - RightColorTextures.SetNum(TextureCount); - if (bHasDepth) - { - RightDepthTextures.SetNum(TextureCount); - } - - for (int32 TextureIndex = 0; TextureIndex < TextureCount; TextureIndex++) - { - ovrpTextureHandle* DepthTexHdlPtr = bHasDepth ? &RightDepthTextures[TextureIndex] : nullptr; - if (OVRP_FAILURE(FOculusXRHMDModule::GetPluginWrapper().GetLayerTexture2(OvrpLayerId, TextureIndex, ovrpEye_Right, &RightColorTextures[TextureIndex], DepthTexHdlPtr))) - { - UE_LOG(LogHMD, Error, TEXT("Failed to create Oculus layer texture. NOTE: This causes a leak of %d other texture(s), which will go unused."), TextureCount + TextureIndex); - // skip setting bLayerCreated and allocating any other textures - return; - } - } - } - } - else - { - bValidFoveationTextures = false; - } - - bLayerCreated = true; - } - }); - - if (bLayerCreated) - { - OvrpLayer = MakeShareable(new FOvrpLayer(OvrpLayerId, DeferredDeletion)); - - if (ShapeNeedsTextures(OvrpLayerDesc.Shape)) - { - uint32 SizeX = OvrpLayerDesc.TextureSize.w; - uint32 SizeY = OvrpLayerDesc.TextureSize.h; - EPixelFormat ColorFormat = CustomPresent->GetPixelFormat(OvrpLayerDesc.Format); - EPixelFormat DepthFormat = PF_DepthStencil; - uint32 NumMips = OvrpLayerDesc.MipLevels; - uint32 NumSamples = OvrpLayerDesc.SampleCount; - uint32 NumSamplesTileMem = 1; - if (OvrpLayerDesc.Shape == ovrpShape_EyeFov) - { - static const auto CVarMobileMSAA = IConsoleManager::Get().FindTConsoleVariableDataInt(TEXT("r.MobileMSAA")); - NumSamplesTileMem = (CVarMobileMSAA ? CVarMobileMSAA->GetValueOnAnyThread() : 1); - } - - ERHIResourceType ResourceType; - if (OvrpLayerDesc.Shape == ovrpShape_Cubemap || OvrpLayerDesc.Shape == ovrpShape_OffcenterCubemap) - { - ResourceType = RRT_TextureCube; - } - else if (OvrpLayerDesc.Layout == ovrpLayout_Array) - { - ResourceType = RRT_Texture2DArray; - } - else - { - ResourceType = RRT_Texture2D; - } - - const bool bNeedsSRGBFlag = bNeedsTexSrgbCreate || CustomPresent->IsSRGB(OvrpLayerDesc.Format); - - ETextureCreateFlags ColorTexCreateFlags = TexCreate_ShaderResource | TexCreate_RenderTargetable | TexCreate_ResolveTargetable | (bNeedsSRGBFlag ? TexCreate_SRGB : TexCreate_None); - ETextureCreateFlags DepthTexCreateFlags = TexCreate_ShaderResource | TexCreate_DepthStencilTargetable | TexCreate_InputAttachmentRead | (bSupportDepthComposite ? TexCreate_ResolveTargetable : TexCreate_None); - - if (Desc.Texture.IsValid()) - { - ColorTexCreateFlags |= (Desc.Texture->GetFlags() & TexCreate_SRGB); - } - - FClearValueBinding ColorTextureBinding; - FClearValueBinding DepthTextureBinding = FClearValueBinding::DepthFar; - if (OvrpLayerDesc.Shape == ovrpShape_EyeFov) - { - ColorTextureBinding = FClearValueBinding::Black; - } - - SwapChain = CustomPresent->CreateSwapChain_RenderThread(SizeX, SizeY, ColorFormat, ColorTextureBinding, NumMips, NumSamples, NumSamplesTileMem, ResourceType, ColorTextures, ColorTexCreateFlags, *FString::Printf(TEXT("Oculus Color Swapchain %d"), OvrpLayerId)); - -#if PLATFORM_WINDOWS -#if UE_VERSION_OLDER_THAN(5, 5, 0) - const auto CVarPropagateAlpha = IConsoleManager::Get().FindTConsoleVariableDataInt(TEXT("r.PostProcessing.PropagateAlpha")); - const bool bPropagateAlpha = EAlphaChannelMode::FromInt(CVarPropagateAlpha->GetValueOnRenderThread()) == EAlphaChannelMode::AllowThroughTonemapper; -#else - const auto CVarPropagateAlpha = IConsoleManager::Get().FindConsoleVariable(TEXT("r.PostProcessing.PropagateAlpha")); - const bool bPropagateAlpha = CVarPropagateAlpha->GetBool(); -#endif - if (bPropagateAlpha) - { - const ETextureCreateFlags InvTextureCreateFlags = TexCreate_ShaderResource | TexCreate_RenderTargetable; - FRHITextureCreateDesc InvTextureDesc{}; - if (OvrpLayerDesc.Layout == ovrpLayout_Array) - { - InvTextureDesc = FRHITextureCreateDesc::Create2DArray(TEXT("InvAlphaTexture")) - .SetArraySize(2) - .SetExtent(SizeX, SizeY) - .SetFormat(ColorFormat) - .SetNumMips(NumMips) - .SetNumSamples(NumSamples) - .SetFlags(InvTextureCreateFlags | TexCreate_TargetArraySlicesIndependently) - .SetClearValue(ColorTextureBinding); - } - else - { - InvTextureDesc = FRHITextureCreateDesc::Create2D(TEXT("InvAlphaTexture")) - .SetExtent(SizeX, SizeY) - .SetFormat(ColorFormat) - .SetNumMips(NumMips) - .SetNumSamples(NumSamples) - .SetFlags(InvTextureCreateFlags) - .SetClearValue(ColorTextureBinding); - } - InvAlphaTexture = RHICreateTexture(InvTextureDesc); - } -#endif - - if (bHasDepth) - { - DepthSwapChain = CustomPresent->CreateSwapChain_RenderThread(SizeX, SizeY, DepthFormat, DepthTextureBinding, 1, NumSamples, NumSamplesTileMem, ResourceType, DepthTextures, DepthTexCreateFlags, *FString::Printf(TEXT("Oculus Depth Swapchain %d"), OvrpLayerId)); - } - if (bValidFoveationTextures) - { - FoveationSwapChain = CustomPresent->CreateSwapChain_RenderThread(FoveationTextureSize.w, FoveationTextureSize.h, PF_R8G8, FClearValueBinding::White, 1, 1, 1, ResourceType, FoveationTextures, TexCreate_Foveation, *FString::Printf(TEXT("Oculus Foveation Swapchain %d"), OvrpLayerId)); - } - else - { - FoveationSwapChain.Reset(); - } - - if (bValidMotionVectorTextures) - { - EPixelFormat MvPixelFormat = PF_FloatRGBA; - ETextureCreateFlags MVTexCreateFlags = TexCreate_ShaderResource | TexCreate_RenderTargetable; - MotionVectorSwapChain = CustomPresent->CreateSwapChain_RenderThread(MotionVectorTextureSize.w, MotionVectorTextureSize.h, MvPixelFormat, FClearValueBinding::Black, 1, 1, 1, ResourceType, MotionVectorTextures, MVTexCreateFlags, *FString::Printf(TEXT("Oculus MV Swapchain %d"), OvrpLayerId)); - if (MotionVectorDepthTextures.Num() && MotionVectorDepthTextures[0] != (unsigned long long)nullptr) - { - ETextureCreateFlags MVDepthTexCreateFlags = TexCreate_ShaderResource | TexCreate_DepthStencilTargetable; - MotionVectorDepthSwapChain = CustomPresent->CreateSwapChain_RenderThread(MotionVectorDepthTextureSize.w, MotionVectorDepthTextureSize.h, PF_DepthStencil, FClearValueBinding::DepthZero, 1, 1, 1, ResourceType, MotionVectorDepthTextures, MVDepthTexCreateFlags, *FString::Printf(TEXT("Oculus MV Depth Swapchain %d"), OvrpLayerId)); - } - else - { - MotionVectorDepthSwapChain = nullptr; - } - } - else - { - MotionVectorSwapChain.Reset(); - MotionVectorDepthSwapChain.Reset(); - } - - if (OvrpLayerDesc.Layout == ovrpLayout_Stereo) - { - RightSwapChain = CustomPresent->CreateSwapChain_RenderThread(SizeX, SizeY, ColorFormat, ColorTextureBinding, NumMips, NumSamples, NumSamplesTileMem, ResourceType, RightColorTextures, ColorTexCreateFlags, *FString::Printf(TEXT("Oculus Right Color Swapchain %d"), OvrpLayerId)); - - if (bHasDepth) - { - RightDepthSwapChain = CustomPresent->CreateSwapChain_RenderThread(SizeX, SizeY, DepthFormat, DepthTextureBinding, 1, NumSamples, NumSamplesTileMem, ResourceType, RightDepthTextures, DepthTexCreateFlags, *FString::Printf(TEXT("Oculus Right Depth Swapchain %d"), OvrpLayerId)); - } - } - - bUpdateTexture = true; - } - else - { - SwapChain.Reset(); - DepthSwapChain.Reset(); - FoveationSwapChain.Reset(); - RightSwapChain.Reset(); - RightDepthSwapChain.Reset(); - if (UserDefinedGeometryMap) - { - UserDefinedGeometryMap->Reset(); - } - } - } - else - { - return false; - } - } - - if ((Desc.Flags & IStereoLayers::LAYER_FLAG_TEX_CONTINUOUS_UPDATE) && Desc.Texture.IsValid() && IsVisible()) - { - bUpdateTexture = true; - } - - return true; - } - - void FLayer::UpdatePassthroughStyle_RenderThread(const FEdgeStyleParameters& EdgeStyleParameters) - { - ovrpInsightPassthroughStyle Style; - Style.EdgeColor = ovrpColorf{ 0, 0, 0, 0 }; - Style.TextureOpacityFactor = EdgeStyleParameters.TextureOpacityFactor; - Style.Flags = (ovrpInsightPassthroughStyleFlags)(ovrpInsightPassthroughStyleFlags_HasTextureOpacityFactor - | ovrpInsightPassthroughStyleFlags_HasEdgeColor - | ovrpInsightPassthroughStyleFlags_HasTextureColorMap); - Style.TextureColorMapType = ovrpInsightPassthroughColorMapType_None; - Style.TextureColorMapData = nullptr; - Style.TextureColorMapDataSize = 0; - Style.LutWeight = 0; - Style.LutSource = 0; - Style.LutTarget = 0; - - if (EdgeStyleParameters.bEnableEdgeColor) - { - Style.EdgeColor = ToOvrpColorf(EdgeStyleParameters.EdgeColor); - } - - if (EdgeStyleParameters.bEnableColorMap) - { - Style.TextureColorMapType = ToOVRPColorMapType(EdgeStyleParameters.ColorMapType); - Style.TextureColorMapData = (uint8*)EdgeStyleParameters.ColorMapData.GetData(); - Style.TextureColorMapDataSize = EdgeStyleParameters.ColorMapData.Num(); - } - - if (EdgeStyleParameters.bUseColorLuts) - { - Style.LutWeight = EdgeStyleParameters.ColorLutDesc.Weight; - Style.TextureColorMapType = ToOVRPColorMapType(EdgeStyleParameters.ColorMapType); - - if (EdgeStyleParameters.ColorLutDesc.ColorLuts.Num() == 1) - { - check(Style.TextureColorMapType == ovrpInsightPassthroughColorMapType_ColorLut); - Style.LutSource = EdgeStyleParameters.ColorLutDesc.ColorLuts[0]; - } - - if (EdgeStyleParameters.ColorLutDesc.ColorLuts.Num() == 2) - { - check(Style.TextureColorMapType == ovrpInsightPassthroughColorMapType_InterpolatedColorLut); - Style.LutSource = EdgeStyleParameters.ColorLutDesc.ColorLuts[0]; - Style.LutTarget = EdgeStyleParameters.ColorLutDesc.ColorLuts[1]; - } - } - - if (OVRP_FAILURE(FOculusXRHMDModule::GetPluginWrapper().SetInsightPassthroughStyle2(OvrpLayerId, &Style))) - { - UE_LOG(LogTemp, Error, TEXT("Failed setting passthrough style")); - return; - } - } - - static FMatrix TransformToPassthroughSpace(FTransform Transform, const FGameFrame* Frame) - { - const FVector WorldToMetersScaleInv = FVector(Frame->WorldToMetersScale).Reciprocal(); - FTransform TransformWorld = Transform * Frame->TrackingToWorld.Inverse(); - TransformWorld.MultiplyScale3D(WorldToMetersScaleInv); - TransformWorld.ScaleTranslation(WorldToMetersScaleInv); - const FMatrix TransformWorldScaled = TransformWorld.ToMatrixWithScale(); - - const FMatrix SwapAxisMatrix( - FPlane(0.0f, 0.0f, -1.0f, 0.0f), - FPlane(1.0f, 0.0f, 0.0f, 0.0f), - FPlane(0.0f, 1.0f, 0.0f, 0.0f), - FPlane(0.0f, 0.0f, 0.0f, 1.0f)); - - return TransformWorldScaled * SwapAxisMatrix; - } - - void FLayer::UpdatePassthrough_RenderThread(FCustomPresent* CustomPresent, FRHICommandListImmediate& RHICmdList, const FGameFrame* Frame) - { - CheckInRenderThread(); - if (Desc.HasShape()) - { - const FReconstructedLayer& ReconstructedLayerProps = Desc.GetShape(); - UpdatePassthroughStyle_RenderThread(ReconstructedLayerProps.EdgeStyleParameters); - } - else if (Desc.HasShape()) - { - const FUserDefinedLayer& UserDefinedLayerProps = Desc.GetShape(); - UpdatePassthroughStyle_RenderThread(UserDefinedLayerProps.EdgeStyleParameters); - } - - if (Desc.HasShape()) - { - const FUserDefinedLayer& UserDefinedLayerProps = Desc.GetShape(); - const TArray& UserGeometryList = UserDefinedLayerProps.UserGeometryList; - TSet UsedSet; - - for (const FUserDefinedGeometryDesc& GeometryDesc : UserGeometryList) - { - const FString MeshName = GeometryDesc.MeshName; - UsedSet.Add(MeshName); - - FPassthroughMesh* LayerPassthroughMesh = UserDefinedGeometryMap->Find(MeshName); - if (!LayerPassthroughMesh) - { - OculusXRHMD::FOculusPassthroughMeshRef GeomPassthroughMesh = GeometryDesc.PassthroughMesh; - if (GeomPassthroughMesh) - { - const FMatrix Transform = TransformToPassthroughSpace(GeometryDesc.Transform, Frame); - uint64_t MeshHandle = 0; - uint64_t InstanceHandle = 0; - AddPassthroughMesh_RenderThread(GeomPassthroughMesh->GetVertices(), GeomPassthroughMesh->GetTriangles(), Transform, MeshHandle, InstanceHandle); - UserDefinedGeometryMap->Add(MeshName, FPassthroughMesh(MeshHandle, InstanceHandle)); - } - } - else - { - const FMatrix Transform = TransformToPassthroughSpace(GeometryDesc.Transform, Frame); - UpdatePassthroughMeshTransform_RenderThread(LayerPassthroughMesh->InstanceHandle, Transform); - } - } - - // find meshes that no longer exist - TArray ItemsToRemove; - for (auto& Entry : *UserDefinedGeometryMap) - { - if (!UsedSet.Contains(Entry.Key)) - { - ItemsToRemove.Add(Entry.Key); - } - } - - for (FString Entry : ItemsToRemove) - { - FPassthroughMesh* PassthroughMesh = UserDefinedGeometryMap->Find(Entry); - if (PassthroughMesh) - { - const uint64_t MeshHandle = PassthroughMesh->MeshHandle; - const uint64_t InstanceHandle = PassthroughMesh->InstanceHandle; - RemovePassthroughMesh_RenderThread(MeshHandle, InstanceHandle); - } - else - { - UE_LOG(LogTemp, Error, TEXT("PassthroughMesh: %s doesn't exist."), *Entry); - return; - } - - UserDefinedGeometryMap->Remove(Entry); - } - } - } - - static void InvertTextureAlpha_RenderThread(FCustomPresent* CustomPresent, FRHICommandListImmediate& RHICmdList, FRHITexture* Texture, FRHITexture* TempTexture, const FIntRect& ViewportRect) - { - { - FRHITexture* SrcTexture = Texture; - FRHITexture* DstTexture = TempTexture; - const FIntRect SrcRect(ViewportRect); - const FIntRect DstRect(0, 0, ViewportRect.Size().X, ViewportRect.Size().Y); - - const bool bAlphaPremultiply = false; - const bool bNoAlphaWrite = false; - const bool bInvertSrcY = false; - const bool sRGBSource = false; - const bool bInvertAlpha = true; - - CustomPresent->CopyTexture_RenderThread(RHICmdList, DstTexture, SrcTexture, DstRect, SrcRect, bAlphaPremultiply, bNoAlphaWrite, bInvertSrcY, sRGBSource, bInvertAlpha); - } - - { - FRHICopyTextureInfo CopyInfo; - CopyInfo.Size = FIntVector(ViewportRect.Size().X, ViewportRect.Size().Y, 1); - CopyInfo.SourcePosition = FIntVector::ZeroValue; - CopyInfo.DestPosition = FIntVector(ViewportRect.Min.X, ViewportRect.Min.Y, 0); - CopyInfo.SourceSliceIndex = 0; - CopyInfo.DestSliceIndex = 0; - - if (Texture->GetDesc().IsTextureArray() && TempTexture->GetDesc().IsTextureArray()) - { - CopyInfo.NumSlices = FMath::Min(Texture->GetDesc().ArraySize, TempTexture->GetDesc().ArraySize); - } - - FRHITexture* SrcTexture = TempTexture; - FRHITexture* DstTexture = Texture; - RHICmdList.Transition(FRHITransitionInfo(SrcTexture, ERHIAccess::Unknown, ERHIAccess::CopySrc)); - RHICmdList.Transition(FRHITransitionInfo(DstTexture, ERHIAccess::Unknown, ERHIAccess::CopyDest)); - RHICmdList.CopyTexture(SrcTexture, DstTexture, CopyInfo); - RHICmdList.Transition(FRHITransitionInfo(DstTexture, ERHIAccess::CopyDest, ERHIAccess::SRVMask)); - RHICmdList.Transition(FRHITransitionInfo(SrcTexture, ERHIAccess::CopySrc, ERHIAccess::SRVMask)); - } - } - - void FLayer::UpdateTexture_RenderThread(const FSettings* Settings, FCustomPresent* CustomPresent, FRHICommandListImmediate& RHICmdList) - { - CheckInRenderThread(); - - if (bUpdateTexture && SwapChain.IsValid()) - { - // Copy textures - if (Desc.Texture.IsValid()) - { - bool bAlphaPremultiply = true; - bool bNoAlphaWrite = (Desc.Flags & IStereoLayers::LAYER_FLAG_TEX_NO_ALPHA_CHANNEL) != 0; - - // Left - { - FRHITexture* SrcTexture = Desc.LeftTexture.IsValid() ? Desc.LeftTexture : Desc.Texture; - FRHITexture* DstTexture = SwapChain->GetTexture(); - - const ovrpRecti& OvrpViewportRect = OvrpLayerSubmit.ViewportRect[ovrpEye_Left]; - FIntRect DstRect(OvrpViewportRect.Pos.x, OvrpViewportRect.Pos.y, OvrpViewportRect.Pos.x + OvrpViewportRect.Size.w, OvrpViewportRect.Pos.y + OvrpViewportRect.Size.h); - - CustomPresent->CopyTexture_RenderThread(RHICmdList, DstTexture, SrcTexture, DstRect, FIntRect(), bAlphaPremultiply, bNoAlphaWrite, bInvertY); - } - - // Right - if (OvrpLayerDesc.Layout != ovrpLayout_Mono) - { - FRHITexture* SrcTexture = Desc.Texture; - FRHITexture* DstTexture = RightSwapChain.IsValid() ? RightSwapChain->GetTexture() : SwapChain->GetTexture(); - - const ovrpRecti& OvrpViewportRect = OvrpLayerSubmit.ViewportRect[ovrpEye_Right]; - FIntRect DstRect(OvrpViewportRect.Pos.x, OvrpViewportRect.Pos.y, OvrpViewportRect.Pos.x + OvrpViewportRect.Size.w, OvrpViewportRect.Pos.y + OvrpViewportRect.Size.h); - - CustomPresent->CopyTexture_RenderThread(RHICmdList, DstTexture, SrcTexture, DstRect, FIntRect(), bAlphaPremultiply, bNoAlphaWrite, bInvertY); - } - - bUpdateTexture = false; - } - - // Generate mips -#if UE_VERSION_OLDER_THAN(5, 5, 0) - SwapChain->GenerateMips_RenderThread(RHICmdList); - - if (RightSwapChain.IsValid()) - { - RightSwapChain->GenerateMips_RenderThread(RHICmdList); - } -#endif - } - - if (Id == 0 && SwapChain.IsValid() && InvAlphaTexture) - { - // Left - { - FRHITexture* EyeTexture = SwapChain->GetTexture(); - InvertTextureAlpha_RenderThread(CustomPresent, RHICmdList, EyeTexture, InvAlphaTexture, Settings->EyeRenderViewport[ovrpEye_Left]); - } - - // Right - if (OvrpLayerDesc.Layout != ovrpLayout_Mono && OvrpLayerDesc.Layout != ovrpLayout_Array) - { - FRHITexture* EyeTexture = RightSwapChain.IsValid() ? RightSwapChain->GetTexture() : SwapChain->GetTexture(); - InvertTextureAlpha_RenderThread(CustomPresent, RHICmdList, EyeTexture, InvAlphaTexture, Settings->EyeRenderViewport[ovrpEye_Right]); - } - } - } - - // Returned how much the tracking space moved from previous frame to current frame. - // Note: FTransform is following the order of C = A * B, Apply C means, apply A then Apply B. - void GetTrackingSpaceDeltaPose(const FSettings* Settings, const FGameFrame* Frame, FTransform& TrackingSpaceDeltaPose) - { - // TrackingSpaceDeltaPose: describe the tracking space movement in current tracking space - TrackingSpaceDeltaPose = Frame->TrackingToWorld * Frame->LastTrackingToWorld.Inverse(); - - // However There is a intermediete layer from SettingBasePose, which is acting as a bridge between OVRPlugin Device Space and UE4 Device Space - // Define: OVRPlugin-Device-FPose: same space with the OvrPlugin returned Pose ( In FPose, not ovrpPose ). FOculusXRHMDModule::GetPluginWrapper().GetNodePoseState3() returned value in this space - // Define: UE4-Device-FPose: the space UE4 seeing as device pose space. GetCurrentPose() returned result in this space - FTransform SettingBasePose = FTransform(Settings->BaseOrientation, Settings->BaseOffset); - - // According context of GetCurrentPose, all OVRPlugin-Device-FPose will be inversed by Settings->BaseOrientation & Settings->BaseOffset - // before exposing to UE4 as UE4-Device-FPose. which means UE4-Device-FPose = OVRPlugin-Device-FPose * FPose(BaseOrientation, BaseOffset ).Inverse() - // FPose(BaseOrientation, BaseOffset ) is the UE4 device reference frame defined in OVRPlugin Device Space ( In FPose, not ovrpPose ). - // OVRPlugin-Device-FPose_To_UE4-Device-FPose = FPose(BaseOrientation, BaseOffset ).Inverse() - // UE4-Device-FPose_To_OVRPlugin-Device-FPose = FPose(BaseOrientation, BaseOffset ) - - // Eventually we want a transform in OvrPlugin space (both the input and output data are in OvrPlugin Device Space) - TrackingSpaceDeltaPose = SettingBasePose.Inverse() * TrackingSpaceDeltaPose * SettingBasePose; - } - - const ovrpLayerSubmit* FLayer::UpdateLayer_RHIThread(const FSettings* Settings, const FGameFrame* Frame, const int LayerIndex) - { - OvrpLayerSubmit.LayerId = OvrpLayerId; - OvrpLayerSubmit.TextureStage = SwapChain.IsValid() ? SwapChain->GetSwapChainIndex_RHIThread() : 0; - - bool injectColorScale = Id == 0 || Settings->bApplyColorScaleAndOffsetToAllLayers; - OvrpLayerSubmit.ColorOffset = injectColorScale ? Settings->ColorOffset : ovrpVector4f{ 0, 0, 0, 0 }; - OvrpLayerSubmit.ColorScale = injectColorScale ? Settings->ColorScale : ovrpVector4f{ 1, 1, 1, 1 }; - - if (OvrpLayerDesc.Shape == ovrpShape_Equirect) - { - const FEquirectLayer& EquirectProps = Desc.GetShape(); - - ovrpTextureRectMatrixf& RectMatrix = OvrpLayerSubmit.TextureRectMatrix; - ovrpRectf& LeftUVRect = RectMatrix.LeftRect; - ovrpRectf& RightUVRect = RectMatrix.RightRect; - LeftUVRect.Pos.x = EquirectProps.LeftUVRect.Min.X; - LeftUVRect.Pos.y = EquirectProps.LeftUVRect.Min.Y; - LeftUVRect.Size.w = EquirectProps.LeftUVRect.Max.X - EquirectProps.LeftUVRect.Min.X; - LeftUVRect.Size.h = EquirectProps.LeftUVRect.Max.Y - EquirectProps.LeftUVRect.Min.Y; - RightUVRect.Pos.x = EquirectProps.RightUVRect.Min.X; - RightUVRect.Pos.y = EquirectProps.RightUVRect.Min.Y; - RightUVRect.Size.w = EquirectProps.RightUVRect.Max.X - EquirectProps.RightUVRect.Min.X; - RightUVRect.Size.h = EquirectProps.RightUVRect.Max.Y - EquirectProps.RightUVRect.Min.Y; - - ovrpVector4f& LeftScaleBias = RectMatrix.LeftScaleBias; - LeftScaleBias.x = EquirectProps.LeftScale.X; - LeftScaleBias.y = EquirectProps.LeftScale.Y; - LeftScaleBias.z = EquirectProps.LeftBias.X; - LeftScaleBias.w = EquirectProps.LeftBias.Y; - ovrpVector4f& RightScaleBias = RectMatrix.RightScaleBias; - RightScaleBias.x = EquirectProps.RightScale.X; - RightScaleBias.y = EquirectProps.RightScale.Y; - RightScaleBias.z = EquirectProps.RightBias.X; - RightScaleBias.w = EquirectProps.RightBias.Y; - - OvrpLayerSubmit.OverrideTextureRectMatrix = ovrpBool_True; - } - - if (Id != 0) - { - int SizeX = OvrpLayerDesc.TextureSize.w; - int SizeY = OvrpLayerDesc.TextureSize.h; - - float AspectRatio = SizeX ? (float)SizeY / (float)SizeX : 3.0f / 4.0f; - FVector LocationScaleInv(Frame->WorldToMetersScale); - FVector LocationScale = LocationScaleInv.Reciprocal(); - ovrpVector3f Scale = ToOvrpVector3f(Desc.Transform.GetScale3D() * LocationScale); - - switch (OvrpLayerDesc.Shape) - { - case ovrpShape_ReconstructionPassthrough: - { - float QuadSizeY = (Desc.Flags & IStereoLayers::LAYER_FLAG_QUAD_PRESERVE_TEX_RATIO) ? Desc.QuadSize.X * AspectRatio : Desc.QuadSize.Y; - OvrpLayerSubmit.Quad.Size = ovrpSizef{ static_cast(Desc.QuadSize.X * Scale.x), static_cast(QuadSizeY * Scale.y) }; - } - break; - - case ovrpShape_Quad: - { - float QuadSizeY = (Desc.Flags & IStereoLayers::LAYER_FLAG_QUAD_PRESERVE_TEX_RATIO) ? Desc.QuadSize.X * AspectRatio : Desc.QuadSize.Y; - OvrpLayerSubmit.Quad.Size = ovrpSizef{ static_cast(Desc.QuadSize.X * Scale.x), static_cast(QuadSizeY * Scale.y) }; - } - break; - case ovrpShape_Cylinder: - { - const FCylinderLayer& CylinderProps = Desc.GetShape(); - float CylinderHeight = (Desc.Flags & IStereoLayers::LAYER_FLAG_QUAD_PRESERVE_TEX_RATIO) ? CylinderProps.OverlayArc * AspectRatio : CylinderProps.Height; - OvrpLayerSubmit.Cylinder.ArcWidth = CylinderProps.OverlayArc * Scale.x; - OvrpLayerSubmit.Cylinder.Height = CylinderHeight * Scale.x; - OvrpLayerSubmit.Cylinder.Radius = CylinderProps.Radius * Scale.x; - } - break; - } - - FQuat BaseOrientation; - FVector BaseLocation; - - switch (Desc.PositionType) - { - case IStereoLayers::WorldLocked: - BaseOrientation = Frame->TrackingToWorld.GetRotation(); - BaseLocation = Frame->TrackingToWorld.GetTranslation(); - break; - - case IStereoLayers::TrackerLocked: - BaseOrientation = FQuat::Identity; - BaseLocation = FVector::ZeroVector; - break; - - case IStereoLayers::FaceLocked: - BaseOrientation = FQuat::Identity; - BaseLocation = FVector::ZeroVector; - break; - } - - FTransform PlayerTransform(BaseOrientation, BaseLocation); - - FQuat Orientation = BaseOrientation.Inverse() * Desc.Transform.Rotator().Quaternion(); - FVector Location = PlayerTransform.InverseTransformPosition(Desc.Transform.GetLocation()); - FPose OutLayerPose = FPose(Orientation, Location); - if (Desc.PositionType != IStereoLayers::FaceLocked) - ConvertPose_Internal(FPose(Orientation, Location), OutLayerPose, Settings->BaseOrientation.Inverse(), Settings->BaseOrientation.Inverse().RotateVector(-Settings->BaseOffset * LocationScaleInv), 1.0); - - OvrpLayerSubmit.Pose.Orientation = ToOvrpQuatf(OutLayerPose.Orientation); - OvrpLayerSubmit.Pose.Position = ToOvrpVector3f(OutLayerPose.Position * LocationScale); - OvrpLayerSubmit.LayerSubmitFlags = 0; - - if (Desc.PositionType == IStereoLayers::FaceLocked) - { - OvrpLayerSubmit.LayerSubmitFlags |= ovrpLayerSubmitFlag_HeadLocked; - } - - if (!(Desc.Flags & IStereoLayers::LAYER_FLAG_SUPPORT_DEPTH)) - { - OvrpLayerSubmit.LayerSubmitFlags |= ovrpLayerSubmitFlag_NoDepth; - } - - // AdditionalFlags introduced in UE5.4 - int TempLayerSubmitFlags = FOculusXRStereoLayersFlagsSupplier::Get()->GetOvrpFlag(Desc.Flags); - - // Flags in UE5.3 and below. - // TODO: This will be deprecated soon (target at UE5.5) and will be removed once it's deprecated. -#if defined(WITH_OCULUS_BRANCH) && UE_VERSION_OLDER_THAN(5, 5, 0) - if (Desc.Flags & IStereoLayers::LAYER_FLAG_AUTO_FILTERING) - { - TempLayerSubmitFlags |= ovrpLayerSubmitFlag_AutoLayerFilter; - } - if (Desc.Flags & IStereoLayers::LAYER_FLAG_NORMAL_SUPERSAMPLE) - { - TempLayerSubmitFlags |= ovrpLayerSubmitFlag_EfficientSuperSample; - } - if (Desc.Flags & IStereoLayers::LAYER_FLAG_QUALITY_SUPERSAMPLE) - { - TempLayerSubmitFlags |= ovrpLayerSubmitFlag_ExpensiveSuperSample; - } - if (Desc.Flags & IStereoLayers::LAYER_FLAG_NORMAL_SHARPEN) - { - TempLayerSubmitFlags |= ovrpLayerSubmitFlag_EfficientSharpen; - } - if (Desc.Flags & IStereoLayers::LAYER_FLAG_QUALITY_SHARPEN) - { - TempLayerSubmitFlags |= ovrpLayerSubmitFlag_QualitySharpen; - } -#endif - if (TempLayerSubmitFlags) - { - if (ShapeNeedsTextures(OvrpLayerDesc.Shape)) - { - OvrpLayerSubmit.LayerSubmitFlags |= TempLayerSubmitFlags; - } - else if (Frame->FrameNumber <= 1) - { - UE_LOG(LogTemp, Warning, TEXT("Layer filters should not be applied to layers without textures, like Passthrough layers.")); - } - } - } - else - { - OvrpLayerSubmit.EyeFov.DepthFar = 0; - OvrpLayerSubmit.EyeFov.DepthNear = Frame->NearClippingPlane / 100.f; // physical scale is 100UU/meter - OvrpLayerSubmit.LayerSubmitFlags = ovrpLayerSubmitFlag_ReverseZ; - OvrpLayerSubmit.ViewportRect[0] = ToOvrpRecti(Settings->EyeRenderViewport[0]); - OvrpLayerSubmit.ViewportRect[1] = ToOvrpRecti(Settings->EyeRenderViewport[1]); - OvrpLayerSubmit.EyeFov.Fov[0] = Frame->Fov[0]; - OvrpLayerSubmit.EyeFov.Fov[1] = Frame->Fov[1]; - - if (bSubmitSpaceWarp) - { - OvrpLayerSubmit.LayerSubmitFlags |= ovrpLayerSubmitFlag_SpaceWarp; - OvrpLayerSubmit.EyeFov.MotionVectorDepthFar = Frame->NearClippingPlane / 100.f; - OvrpLayerSubmit.EyeFov.MotionVectorDepthNear = INFINITY; - OvrpLayerSubmit.EyeFov.MotionVectorOffset = ovrpVector4f{ 0.0f, 0.0f, 0.0f, 0.0f }; - OvrpLayerSubmit.EyeFov.MotionVectorScale = ovrpVector4f{ 1.0f, 1.0f, 1.0f, 1.0f }; - - FTransform TrackingSpaceDeltaPose; - GetTrackingSpaceDeltaPose(Settings, Frame, TrackingSpaceDeltaPose); - OvrpLayerSubmit.EyeFov.AppSpaceDeltaPose.Orientation = ToOvrpQuatf(TrackingSpaceDeltaPose.GetRotation()); - OvrpLayerSubmit.EyeFov.AppSpaceDeltaPose.Position = ToOvrpVector3f(TrackingSpaceDeltaPose.GetLocation() / Frame->WorldToMetersScale); - } - - ovrpXrApi NativeXrApi; - if (OVRP_SUCCESS(FOculusXRHMDModule::GetPluginWrapper().GetNativeXrApiType(&NativeXrApi)) && (NativeXrApi == ovrpXrApi_OpenXR)) - { - bool bCTXPTEnabled = Settings->SystemSplashBackground == ESystemSplashBackgroundType::Contextual; - -#if PLATFORM_WINDOWS - // Allow CTXPT over Link only if alpha in post processing is enabled -#if UE_VERSION_OLDER_THAN(5, 5, 0) - const auto CVarPropagateAlpha = IConsoleManager::Get().FindTConsoleVariableDataInt(TEXT("r.PostProcessing.PropagateAlpha")); - const bool bPropagateAlpha = EAlphaChannelMode::FromInt(CVarPropagateAlpha->GetValueOnRenderThread()) == EAlphaChannelMode::AllowThroughTonemapper; -#else - const auto CVarPropagateAlpha = IConsoleManager::Get().FindConsoleVariable(TEXT("r.PostProcessing.PropagateAlpha")); - const bool bPropagateAlpha = CVarPropagateAlpha->GetBool(); -#endif - bCTXPTEnabled &= bPropagateAlpha; -#endif - - const bool bShouldIgnoreSrcAlpha = (LayerIndex == 0 && !bCTXPTEnabled); - - if (bShouldIgnoreSrcAlpha) - { - OvrpLayerSubmit.LayerSubmitFlags |= ovrpLayerSubmitFlag_IgnoreSourceAlpha; - } - else if (InvAlphaTexture == nullptr) - { - OvrpLayerSubmit.HasBlendFactors = true; - OvrpLayerSubmit.SrcBlendFactor = ovrpBlendFactorOneMinusSrcAlpha; - OvrpLayerSubmit.DstBlendFactor = ovrpBlendFactorSrcAlpha; - } - } - else - { -#if PLATFORM_WINDOWS - OvrpLayerSubmit.LayerSubmitFlags |= ovrpLayerSubmitFlag_IgnoreSourceAlpha; -#else - OvrpLayerSubmit.LayerSubmitFlags |= ovrpLayerSubmitFlag_InverseAlpha; -#endif - } - } - - return &OvrpLayerSubmit.Base; - } - - void FLayer::IncrementSwapChainIndex_RHIThread(FCustomPresent* CustomPresent) - { - CheckInRHIThread(); - - if (SwapChain.IsValid()) - { - SwapChain->IncrementSwapChainIndex_RHIThread(); - } - - if (DepthSwapChain.IsValid()) - { - DepthSwapChain->IncrementSwapChainIndex_RHIThread(); - } - - if (FoveationSwapChain.IsValid()) - { - FoveationSwapChain->IncrementSwapChainIndex_RHIThread(); - } - - if (RightSwapChain.IsValid()) - { - RightSwapChain->IncrementSwapChainIndex_RHIThread(); - } - - if (RightDepthSwapChain.IsValid()) - { - RightDepthSwapChain->IncrementSwapChainIndex_RHIThread(); - } - - if (MotionVectorSwapChain.IsValid()) - { - MotionVectorSwapChain->IncrementSwapChainIndex_RHIThread(); - } - - if (MotionVectorDepthSwapChain.IsValid()) - { - MotionVectorDepthSwapChain->IncrementSwapChainIndex_RHIThread(); - } - } - - void FLayer::ReleaseResources_RHIThread() - { - CheckInRHIThread(); - - OvrpLayerId = 0; - OvrpLayer.Reset(); - SwapChain.Reset(); - DepthSwapChain.Reset(); - FoveationSwapChain.Reset(); - RightSwapChain.Reset(); - RightDepthSwapChain.Reset(); - MotionVectorSwapChain.Reset(); - MotionVectorDepthSwapChain.Reset(); - bUpdateTexture = false; - } - - void FLayer::AddPassthroughMesh_RenderThread(const TArray& Vertices, const TArray& Triangles, FMatrix Transformation, uint64_t& OutMeshHandle, uint64_t& OutInstanceHandle) - { - CheckInRenderThread(); - - uint64_t MeshHandle = 0; - uint64_t InstanceHandle = 0; - - // Explicit conversion is needed since FVector contains double elements. - // Converting Vertices.Data() to float* causes issues when memory is parsed. - TArray VertexData; - VertexData.SetNumUninitialized(Vertices.Num() * 3); - - size_t i = 0; - for (const FVector& vertex : Vertices) - { - VertexData[i++] = vertex.X; - VertexData[i++] = vertex.Y; - VertexData[i++] = vertex.Z; - } - - if (OVRP_FAILURE(FOculusXRHMDModule::GetPluginWrapper().CreateInsightTriangleMesh( - OvrpLayerId, - VertexData.GetData(), - Vertices.Num(), - (int*)Triangles.GetData(), - Triangles.Num() / 3, - &MeshHandle))) - { - UE_LOG(LogTemp, Error, TEXT("Failed creating passthrough mesh surface.")); - return; - } - - const ovrpMatrix4f OvrTransformation = ToOvrpMatrix(Transformation); - - if (OVRP_FAILURE(FOculusXRHMDModule::GetPluginWrapper().AddInsightPassthroughSurfaceGeometry( - OvrpLayerId, - MeshHandle, - OvrTransformation, - &InstanceHandle))) - { - UE_LOG(LogTemp, Error, TEXT("Failed adding passthrough mesh surface to scene.")); - return; - } - OutMeshHandle = MeshHandle; - OutInstanceHandle = InstanceHandle; - } - - void FLayer::UpdatePassthroughMeshTransform_RenderThread(uint64_t InstanceHandle, FMatrix Transformation) - { - CheckInRenderThread(); - - const ovrpMatrix4f OvrTransformation = ToOvrpMatrix(Transformation); - - if (OVRP_FAILURE(FOculusXRHMDModule::GetPluginWrapper().UpdateInsightPassthroughGeometryTransform( - InstanceHandle, - OvrTransformation))) - { - UE_LOG(LogTemp, Error, TEXT("Failed updating passthrough mesh surface transform.")); - return; - } - } - - void FLayer::RemovePassthroughMesh_RenderThread(uint64_t MeshHandle, uint64_t InstanceHandle) - { - CheckInRenderThread(); - - if (OVRP_FAILURE(FOculusXRHMDModule::GetPluginWrapper().DestroyInsightPassthroughGeometryInstance(InstanceHandle))) - { - UE_LOG(LogTemp, Error, TEXT("Failed removing passthrough surface from scene.")); - return; - } - - if (OVRP_FAILURE(FOculusXRHMDModule::GetPluginWrapper().DestroyInsightTriangleMesh(MeshHandle))) - { - UE_LOG(LogTemp, Error, TEXT("Failed destroying passthrough surface mesh.")); - return; - } - } - - void FLayer::DestroyLayer() - { - CheckInGameThread(); - - if (PassthroughPokeActorMap) - { - UWorld* World = GetWorld(); - if (!World) - { - return; - } - - for (auto& Entry : *PassthroughPokeActorMap) - { - World->DestroyActor(Entry.Value.PokeAHoleActor); - } - PassthroughPokeActorMap.Reset(); - } - } - -} // namespace OculusXRHMD - -#endif // OCULUS_HMD_SUPPORTED_PLATFORMS diff --git a/Plugins/MetaXR/Source/OculusXRHMD/Private/OculusXRHMD_Layer.h b/Plugins/MetaXR/Source/OculusXRHMD/Private/OculusXRHMD_Layer.h deleted file mode 100644 index acb1384..0000000 --- a/Plugins/MetaXR/Source/OculusXRHMD/Private/OculusXRHMD_Layer.h +++ /dev/null @@ -1,234 +0,0 @@ -// @lint-ignore-every LICENSELINT -// Copyright Epic Games, Inc. All Rights Reserved. - -#pragma once -#include "OculusXRHMDPrivate.h" -#include "ProceduralMeshComponent.h" - -#if OCULUS_HMD_SUPPORTED_PLATFORMS -#include "OculusXRHMD_CustomPresent.h" -#include "XRSwapChain.h" -#include "OculusXRPassthroughLayerShapes.h" - -namespace OculusXRHMD -{ - - //------------------------------------------------------------------------------------------------- - // FOvrpLayer - //------------------------------------------------------------------------------------------------- - class FDeferredDeletionQueue; - - class FOvrpLayer : public TSharedFromThis - { - public: - FOvrpLayer(uint32 InOvrpLayerId, FDeferredDeletionQueue* InDeferredDeletion); - ~FOvrpLayer(); - - protected: - uint32 OvrpLayerId; - - private: - FDeferredDeletionQueue* DeferredDeletion; // necessary for deferred deletion queue of the actual OvrpLayer - }; - - typedef TSharedPtr FOvrpLayerPtr; - - //------------------------------------------------------------------------------------------------- - // FLayer - //------------------------------------------------------------------------------------------------- - - class FLayer : public TSharedFromThis - { - public: - FLayer(uint32 InId); - FLayer(const FLayer& InLayer); - ~FLayer(); - - uint32 GetId() const { return Id; } - int GetOvrpId() const { return OvrpLayerId; } - void SetDesc(const IStereoLayers::FLayerDesc& InDesc); - void SetDesc(const FSettings* Settings, const IStereoLayers::FLayerDesc& InDesc); - const IStereoLayers::FLayerDesc& GetDesc() const { return Desc; } - void SetEyeLayerDesc(const ovrpLayerDesc_EyeFov& InEyeLayerDesc, bool bInSubmitSpaceWarp); - const FXRSwapChainPtr& GetSwapChain() const { return SwapChain; } - const FXRSwapChainPtr& GetRightSwapChain() const { return RightSwapChain; } - const FXRSwapChainPtr& GetDepthSwapChain() const { return DepthSwapChain; } - const FXRSwapChainPtr& GetFoveationSwapChain() const { return FoveationSwapChain; } - const FXRSwapChainPtr& GetMotionVectorSwapChain() const { return MotionVectorSwapChain; } - const FXRSwapChainPtr& GetMotionVectorDepthSwapChain() const { return MotionVectorDepthSwapChain; } - void MarkTextureForUpdate() { bUpdateTexture = true; } - bool NeedsPokeAHole(); - void HandlePokeAHoleComponent(); - void BuildPokeAHoleMesh(TArray& Vertices, TArray& Triangles, TArray& UV0); - bool NeedsPassthroughPokeAHole(); - - bool ShapeNeedsTextures(ovrpShape shape); - - FTextureRHIRef GetTexture() { return Desc.Texture; } - - TSharedPtr Clone() const; - - bool CanReuseResources(const FLayer* InLayer) const; - bool Initialize_RenderThread(const FSettings* Settings, FCustomPresent* CustomPresent, FDeferredDeletionQueue* DeferredDeletion, FRHICommandListImmediate& RHICmdList, const FLayer* InLayer = nullptr); - void UpdateTexture_RenderThread(const FSettings* Settings, FCustomPresent* CustomPresent, FRHICommandListImmediate& RHICmdList); - void UpdatePassthrough_RenderThread(FCustomPresent* CustomPresent, FRHICommandListImmediate& RHICmdList, const FGameFrame* Frame); - - const ovrpLayerSubmit* UpdateLayer_RHIThread(const FSettings* Settings, const FGameFrame* Frame, const int LayerIndex); - void IncrementSwapChainIndex_RHIThread(FCustomPresent* CustomPresent); - void ReleaseResources_RHIThread(); - bool IsVisible() { return (Desc.Flags & IStereoLayers::LAYER_FLAG_HIDDEN) == 0; } - - bool bNeedsTexSrgbCreate; - - void AddPassthroughMesh_RenderThread(const TArray& Vertices, const TArray& Triangles, FMatrix Transformation, uint64_t& OutMeshHandle, uint64_t& OutInstanceHandle); - void UpdatePassthroughMeshTransform_RenderThread(uint64_t InstanceHandle, FMatrix Transformation); - void RemovePassthroughMesh_RenderThread(uint64_t MeshHandle, uint64_t InstanceHandle); - - void DestroyLayer(); - - protected: - struct FPassthroughMesh - { - FPassthroughMesh(uint64_t MeshHandle, uint64_t InstanceHandle) - : MeshHandle(MeshHandle) - , InstanceHandle(InstanceHandle) - { - } - uint64_t MeshHandle; - uint64_t InstanceHandle; - }; - - typedef TSharedPtr, ESPMode::ThreadSafe> FUserDefinedGeometryMapPtr; - - void UpdatePassthroughStyle_RenderThread(const FEdgeStyleParameters& EdgeStyleParameters); - - struct FPassthroughPokeActor - { - FPassthroughPokeActor(){}; - FPassthroughPokeActor(UProceduralMeshComponent* PokeAHoleComponentPtr, AActor* PokeAHoleActor) - : PokeAHoleComponentPtr(PokeAHoleComponentPtr) - , PokeAHoleActor(PokeAHoleActor){}; - UProceduralMeshComponent* PokeAHoleComponentPtr; - AActor* PokeAHoleActor; - }; - - typedef TSharedPtr, ESPMode::ThreadSafe> FPassthroughPokeActorMapPtr; - - bool BuildPassthroughPokeActor(FOculusPassthroughMeshRef PassthroughMesh, FPassthroughPokeActor& OutPassthroughPokeActor); - void UpdatePassthroughPokeActors_GameThread(); - - uint32 Id; - IStereoLayers::FLayerDesc Desc; - int OvrpLayerId; - ovrpLayerDescUnion OvrpLayerDesc; - ovrpLayerSubmitUnion OvrpLayerSubmit; - FOvrpLayerPtr OvrpLayer; - FXRSwapChainPtr SwapChain; - FXRSwapChainPtr DepthSwapChain; - FXRSwapChainPtr FoveationSwapChain; - FXRSwapChainPtr RightSwapChain; - FXRSwapChainPtr RightDepthSwapChain; - FXRSwapChainPtr MotionVectorSwapChain; - FXRSwapChainPtr MotionVectorDepthSwapChain; - FTextureRHIRef InvAlphaTexture; - bool bUpdateTexture; - bool bInvertY; - bool bHasDepth; - bool bSupportDepthComposite; - bool bSubmitSpaceWarp; - - UProceduralMeshComponent* PokeAHoleComponentPtr; - AActor* PokeAHoleActor; - - FUserDefinedGeometryMapPtr UserDefinedGeometryMap; - FPassthroughPokeActorMapPtr PassthroughPokeActorMap; - }; - - typedef TSharedPtr FLayerPtr; - - //------------------------------------------------------------------------------------------------- - // FLayerPtr_CompareId - //------------------------------------------------------------------------------------------------- - - struct FLayerPtr_CompareId - { - FORCEINLINE bool operator()(const FLayerPtr& A, const FLayerPtr& B) const - { - return A->GetId() < B->GetId(); - } - }; - - //------------------------------------------------------------------------------------------------- - // FLayerPtr_ComparePriority - //------------------------------------------------------------------------------------------------- - - struct FLayerPtr_ComparePriority - { - FORCEINLINE bool operator()(const FLayerPtr& A, const FLayerPtr& B) const - { - if (A->GetDesc().Priority < B->GetDesc().Priority) - return true; - if (A->GetDesc().Priority > B->GetDesc().Priority) - return false; - - return A->GetId() < B->GetId(); - } - }; - - struct FLayerPtr_CompareTotal - { - FORCEINLINE int32 GetLayerTypePriority(const FLayerPtr& A) const - { - // Draw FReconstructedLayer, PoleAHole layers (Android only), EyeFov layer, followed by other layers - const bool IsEyeFov = (A->GetId() == 0); - const bool IsPokeAHole = A->NeedsPokeAHole() || A->NeedsPassthroughPokeAHole(); - bool IsUnderlay = false; - - if (A->GetDesc().HasShape()) - { - const FReconstructedLayer& ReconstructedLayerProps = A->GetDesc().GetShape(); - IsUnderlay = (ReconstructedLayerProps.PassthroughLayerOrder == PassthroughLayerOrder_Underlay); - } - else if (A->GetDesc().HasShape()) - { - const FUserDefinedLayer& UserDefinedLayerProps = A->GetDesc().GetShape(); - IsUnderlay = (UserDefinedLayerProps.PassthroughLayerOrder == PassthroughLayerOrder_Underlay); - } - - const int32 Priority = IsUnderlay ? -2 : IsPokeAHole ? -1 - : IsEyeFov ? 0 - : 1; - return Priority; - } - - FORCEINLINE bool operator()(const FLayerPtr& A, const FLayerPtr& B) const - { - // First order layers by type - int32 PassA = GetLayerTypePriority(A); - int32 PassB = GetLayerTypePriority(B); - - if (PassA != PassB) - return PassA < PassB; - - // Draw non-FaceLocked layers first - const IStereoLayers::FLayerDesc& DescA = A->GetDesc(); - const IStereoLayers::FLayerDesc& DescB = B->GetDesc(); - - bool bFaceLockedA = (DescA.PositionType == IStereoLayers::ELayerType::FaceLocked); - bool bFaceLockedB = (DescB.PositionType == IStereoLayers::ELayerType::FaceLocked); - - if (bFaceLockedA != bFaceLockedB) - return !bFaceLockedA; - - // Draw layers by ascending priority - if (DescA.Priority != DescB.Priority) - return DescA.Priority < DescB.Priority; - - // Draw layers by ascending id - return A->GetId() < B->GetId(); - } - }; - -} // namespace OculusXRHMD - -#endif // OCULUS_HMD_SUPPORTED_PLATFORMS diff --git a/Plugins/MetaXR/Source/OculusXRHMD/Private/OculusXRHMD_Settings.cpp b/Plugins/MetaXR/Source/OculusXRHMD/Private/OculusXRHMD_Settings.cpp deleted file mode 100644 index d8f0e92..0000000 --- a/Plugins/MetaXR/Source/OculusXRHMD/Private/OculusXRHMD_Settings.cpp +++ /dev/null @@ -1,151 +0,0 @@ -// @lint-ignore-every LICENSELINT -// Copyright Epic Games, Inc. All Rights Reserved. - -#include "OculusXRHMD_Settings.h" -#include "Engine/Engine.h" -#include "OculusXRHMDTypes.h" - -#if OCULUS_HMD_SUPPORTED_PLATFORMS - -namespace OculusXRHMD -{ - - //------------------------------------------------------------------------------------------------- - // FSettings - //------------------------------------------------------------------------------------------------- - - FSettings::FSettings() - : BaseOffset(0, 0, 0) - , BaseOrientation(FQuat::Identity) - , PixelDensity(1.0f) - , SystemHeadset(ovrpSystemHeadset_None) - , SuggestedCpuPerfLevel(EOculusXRProcessorPerformanceLevel::SustainedLow) - , SuggestedGpuPerfLevel(EOculusXRProcessorPerformanceLevel::SustainedHigh) - , FoveatedRenderingMethod(EOculusXRFoveatedRenderingMethod::FixedFoveatedRendering) - , FoveatedRenderingLevel(EOculusXRFoveatedRenderingLevel::Off) - , bDynamicFoveatedRendering(true) - , bSupportEyeTrackedFoveatedRendering(false) - , SystemSplashBackground(ESystemSplashBackgroundType::Black) - , XrApi(EOculusXRXrApi::OVRPluginOpenXR) - , ColorSpace(EOculusXRColorSpace::P3) - , ControllerPoseAlignment(EOculusXRControllerPoseAlignment::Default) - , HandTrackingSupport(EOculusXRHandTrackingSupport::ControllersOnly) - , HandTrackingFrequency(EOculusXRHandTrackingFrequency::LOW) - , HandTrackingVersion(EOculusXRHandTrackingVersion::Default) - , ColorScale(ovrpVector4f{ 1, 1, 1, 1 }) - , ColorOffset(ovrpVector4f{ 0, 0, 0, 0 }) - , bApplyColorScaleAndOffsetToAllLayers(false) - , CurrentFeatureLevel(GMaxRHIFeatureLevel) - , bLateLatching(false) - , bSupportExperimentalFeatures(false) - , ProcessorFavor(EProcessorFavor::FavorEqually) - , BodyTrackingFidelity(EOculusXRHMDBodyTrackingFidelity::Low) - , BodyTrackingJointSet(EOculusXRHMDBodyJointSet::UpperBody) - , FaceTrackingDataSource() - , bFaceTrackingVisemesEnabled(false) - , MPPoseRestoreType(EOculusXRMPPoseRestoreType::Disabled) - { - Flags.Raw = 0; - Flags.bHMDEnabled = true; - Flags.bUpdateOnRT = true; - Flags.bHQBuffer = false; - Flags.bCompositeDepth = true; -#if PLATFORM_ANDROID - Flags.bsRGBEyeBuffer = true; - // oculus mobile is always-on stereo, no need for enableStereo codepaths - Flags.bStereoEnabled = true; -#else - Flags.bsRGBEyeBuffer = false; - Flags.bStereoEnabled = false; -#endif - CurrentFeatureLevel = GEngine ? GEngine->GetDefaultWorldFeatureLevel() : GMaxRHIFeatureLevel; - CurrentShaderPlatform = GShaderPlatformForFeatureLevel[CurrentFeatureLevel]; - - Flags.bSupportsDash = true; - Flags.bFocusAware = true; - Flags.bRequiresSystemKeyboard = false; - Flags.bInsightPassthroughEnabled = false; - Flags.bAnchorSupportEnabled = false; - Flags.bAnchorSharingEnabled = false; - Flags.bSceneSupportEnabled = false; - Flags.bBoundaryVisibilitySupportEnabled = false; - Flags.bDefaultBoundaryVisibilitySuppressed = false; - Flags.bColocationSessionsEnabled = false; - Flags.bBodyTrackingEnabled = false; - Flags.bEyeTrackingEnabled = false; - Flags.bFaceTrackingEnabled = false; - EyeRenderViewport[0] = EyeRenderViewport[1] = FIntRect(0, 0, 0, 0); - - RenderTargetSize = FIntPoint(0, 0); - - Flags.bIterativeCookOnTheFly = false; - Flags.bSupportSBC = false; - // Note: SBCPath should be consistent as other project saved path, e.g. /sdcard/Android/data/[packagename]/files/UnrealGame/[ProjectName]/[ProjectName]/Saved/Profiling/CSV/ - FString ProjectName = !FApp::IsProjectNameEmpty() ? FApp::GetProjectName() : FPlatformProcess::ExecutableName(); - SBCPath = FString("files/UnrealGame/") + ProjectName + FString("/") + ProjectName + FString("/Saved/VulkanCache"); - -#ifdef WITH_OCULUS_BRANCH - Flags.bTileTurnOffEnabled = false; - - Flags.bSetActivePIEToPrimary = true; - Flags.bSetCVarPIEToPrimary = true; - Flags.bUpdateHeadPoseForInactivePlayer = false; -#else - Flags.bTileTurnOffEnabled = true; - - // Vanilla UE doesn't support MultiPlayerTesting well, disable it for now. - Flags.bSetActivePIEToPrimary = false; - Flags.bSetCVarPIEToPrimary = false; - Flags.bUpdateHeadPoseForInactivePlayer = false; -#endif - } - - TSharedPtr FSettings::Clone() const - { - TSharedPtr NewSettings = MakeShareable(new FSettings(*this)); - return NewSettings; - } - - float FSettings::GetPixelDensityMin() const - { - static const IConsoleVariable* CVarPixelDensityMin = IConsoleManager::Get().FindConsoleVariable(VAR_PixelDensityMin); - return CVarPixelDensityMin ? CVarPixelDensityMin->GetFloat() : 0.8f; - } - float FSettings::GetPixelDensityMax() const - { - static const IConsoleVariable* CVarPixelDensityMax = IConsoleManager::Get().FindConsoleVariable(VAR_PixelDensityMax); - return CVarPixelDensityMax ? CVarPixelDensityMax->GetFloat() : 1.2f; - } - void FSettings::SetPixelDensity(float NewPixelDensity) - { - if (Flags.bPixelDensityAdaptive) - { - PixelDensity = FMath::Clamp(NewPixelDensity, GetPixelDensityMin(), GetPixelDensityMax()); - } - else - { - PixelDensity = FMath::Clamp(NewPixelDensity, ClampPixelDensityMin, ClampPixelDensityMax); - } - } - - void FSettings::SetPixelDensitySmooth(float NewPixelDensity) - { - // Pixel Density changes need to be smooth both for artifacts with FFR/TTO (FFR/tile-turnoff is one frame late so shouldn't change too fast) - // but also so that if the developer uses the CVar and not the runtime (which is already smooth) there is no jump artifacts. - constexpr float MaxPerFrameIncrease = 0.010; - constexpr float MaxPerFrameDecrease = 0.045; - - float NewClampedPixelDensity = FMath::Clamp(NewPixelDensity, PixelDensity - MaxPerFrameDecrease, PixelDensity + MaxPerFrameIncrease); - if (Flags.bPixelDensityAdaptive) - { - PixelDensity = FMath::Clamp(NewClampedPixelDensity, GetPixelDensityMin(), GetPixelDensityMax()); - } - else - { - PixelDensity = FMath::Clamp(NewClampedPixelDensity, ClampPixelDensityMin, ClampPixelDensityMax); - } - } - -} // namespace OculusXRHMD - -#endif // OCULUS_HMD_SUPPORTED_PLATFORMS diff --git a/Plugins/MetaXR/Source/OculusXRHMD/Private/OculusXRHMD_Settings.h b/Plugins/MetaXR/Source/OculusXRHMD/Private/OculusXRHMD_Settings.h deleted file mode 100644 index 27e4e31..0000000 --- a/Plugins/MetaXR/Source/OculusXRHMD/Private/OculusXRHMD_Settings.h +++ /dev/null @@ -1,201 +0,0 @@ -// @lint-ignore-every LICENSELINT -// Copyright Epic Games, Inc. All Rights Reserved. - -#pragma once -#include "OculusXRHMDPrivate.h" - -#if OCULUS_HMD_SUPPORTED_PLATFORMS - -namespace OculusXRHMD -{ - - static const float ClampPixelDensityMin = 0.5f; - static const float ClampPixelDensityMax = 2.0f; - - //------------------------------------------------------------------------------------------------- - // FSettings - //------------------------------------------------------------------------------------------------- - - class FSettings : public TSharedFromThis - { - public: - union - { - struct - { - /** Whether stereo is currently on or off. */ - uint64 bStereoEnabled : 1; - - /** Whether or not switching to stereo is allowed */ - uint64 bHMDEnabled : 1; - - /** Turns on/off updating view's orientation/position on a RenderThread. When it is on, - latency should be significantly lower. - See 'HMD UPDATEONRT ON|OFF' console command. - */ - uint64 bUpdateOnRT : 1; - - /** Enforces headtracking to work even in non-stereo mode (for debugging or screenshots). - See 'MOTION ENFORCE' console command. */ - uint64 bHeadTrackingEnforced : 1; - - /** Allocate an high quality OVR_FORMAT_R11G11B10_FLOAT buffer for Rift */ - uint64 bHQBuffer : 1; - - /** Rendering should be (could be) paused */ - uint64 bPauseRendering : 1; - - /** HQ Distortion */ - uint64 bHQDistortion : 1; - - /** Send the depth buffer to the compositor */ - uint64 bCompositeDepth : 1; - - /** Supports Dash in-game compositing */ - uint64 bSupportsDash : 1; -#if !UE_BUILD_SHIPPING - /** Show status / statistics on screen. See 'hmd stats' cmd */ - uint64 bShowStats : 1; -#endif - /** Dynamically update pixel density to maintain framerate */ - uint64 bPixelDensityAdaptive : 1; - - /** All future eye buffers will need to be created with TexSRGB_Create flag due to the current feature level (ES31) */ - uint64 bsRGBEyeBuffer : 1; - - /** Supports Focus Aware state on Quest */ - uint64 bFocusAware : 1; - - /** Requires the Oculus system keyboard */ - uint64 bRequiresSystemKeyboard : 1; - - /** Whether passthrough functionality can be used with the app */ - uint64 bInsightPassthroughEnabled : 1; - - /** Whether Anchors can be used with the app */ - uint64 bAnchorSupportEnabled : 1; - - /** Whether Anchor Sharing can be used with the app */ - uint64 bAnchorSharingEnabled : 1; - - /** Whether Scene can be used with the app */ - uint64 bSceneSupportEnabled : 1; - - /** Whether the guardian boundary visibility toggles can be used with the app */ - uint64 bBoundaryVisibilitySupportEnabled : 1; - - /** Whether the guardian boundary visibility should be suppressed by default, this can only be true if passthrough is enabled */ - uint64 bDefaultBoundaryVisibilitySuppressed : 1; - - /** Whether Colocation Sessions can be used with the app */ - uint64 bColocationSessionsEnabled : 1; - - /** Whether body tracking functionality can be used with the app */ - uint64 bBodyTrackingEnabled : 1; - - /** Whether eye tracking functionality can be used with the app */ - uint64 bEyeTrackingEnabled : 1; - - /** Whether face tracking functionality can be used with the app */ - uint64 bFaceTrackingEnabled : 1; - - /** Whether tile turn off can be used with the app */ - uint64 bTileTurnOffEnabled : 1; - - /** Whether iterative cook-on-the-fly is enabled */ - uint64 bIterativeCookOnTheFly : 1; - - /** When running multiple player windows in a single process with VRPreview, this option determins whether to set the current active PIE to the primary one on the fly.*/ - uint64 bSetActivePIEToPrimary : 1; - - /** When running multiple player windows in a single process with VRPreview, this option determins whether to set the PIE specified by CVar vr.PrimaryPIEIndex to the primary one on the fly.*/ - uint64 bSetCVarPIEToPrimary : 1; - - /* In case of multiple players testing, when the current player is inactive, disabling this setting will make sure the current player does NOT update headpose until it is active again.*/ - uint64 bUpdateHeadPoseForInactivePlayer : 1; - - /* Enable Shader Binary Cache (SBC) and setup its path */ - uint64 bSupportSBC : 1; - }; - uint64 Raw; - } Flags; - - /** HMD base values, specify forward orientation and zero pos offset */ - FVector BaseOffset; // base position, in meters, relatively to the sensor //@todo hmd: clients need to stop using oculus space - FQuat BaseOrientation; // base orientation - - /** Viewports for each eye, in render target texture coordinates */ - FIntRect EyeRenderViewport[ovrpEye_Count]; - /** Viewports for each eye, without DynamicResolution scaling applied */ - FIntRect EyeUnscaledRenderViewport[ovrpEye_Count]; - - ovrpMatrix4f EyeProjectionMatrices[ovrpEye_Count]; // 0 - left, 1 - right same as Views - ovrpMatrix4f MonoProjectionMatrix; - - FIntPoint RenderTargetSize; - float PixelDensity; - - ovrpSystemHeadset SystemHeadset; - - float VsyncToNextVsync; - - EOculusXRProcessorPerformanceLevel SuggestedCpuPerfLevel; - EOculusXRProcessorPerformanceLevel SuggestedGpuPerfLevel; - - EOculusXRFoveatedRenderingMethod FoveatedRenderingMethod; - EOculusXRFoveatedRenderingLevel FoveatedRenderingLevel; - bool bDynamicFoveatedRendering; - bool bSupportEyeTrackedFoveatedRendering; - - ESystemSplashBackgroundType SystemSplashBackground; - - EOculusXRXrApi XrApi; - EOculusXRColorSpace ColorSpace; - EOculusXRControllerPoseAlignment ControllerPoseAlignment; - - EOculusXRHandTrackingSupport HandTrackingSupport; - EOculusXRHandTrackingFrequency HandTrackingFrequency; - EOculusXRHandTrackingVersion HandTrackingVersion; - - ovrpVector4f ColorScale, ColorOffset; - bool bApplyColorScaleAndOffsetToAllLayers; - - FStaticFeatureLevel CurrentFeatureLevel; - EShaderPlatform CurrentShaderPlatform; - - bool bLateLatching; - bool bSupportExperimentalFeatures; - - EProcessorFavor ProcessorFavor; - - EOculusXRHMDBodyTrackingFidelity BodyTrackingFidelity; - EOculusXRHMDBodyJointSet BodyTrackingJointSet; - - TSet FaceTrackingDataSource; - bool bFaceTrackingVisemesEnabled; - - bool bIterativeCookOnTheFly; - - EOculusXRMPPoseRestoreType MPPoseRestoreType; - - FString SBCPath; - - public: - FSettings(); - virtual ~FSettings() {} - - bool IsStereoEnabled() const { return Flags.bStereoEnabled && Flags.bHMDEnabled; } - - float GetPixelDensityMin() const; - float GetPixelDensityMax() const; - void SetPixelDensity(float NewPixelDensity); - void SetPixelDensitySmooth(float NewPixelDensity); - - TSharedPtr Clone() const; - }; - - typedef TSharedPtr FSettingsPtr; - -} // namespace OculusXRHMD - -#endif // OCULUS_HMD_SUPPORTED_PLATFORMS diff --git a/Plugins/MetaXR/Source/OculusXRHMD/Private/OculusXRHMD_SpectatorScreenController.cpp b/Plugins/MetaXR/Source/OculusXRHMD/Private/OculusXRHMD_SpectatorScreenController.cpp deleted file mode 100644 index f62075f..0000000 --- a/Plugins/MetaXR/Source/OculusXRHMD/Private/OculusXRHMD_SpectatorScreenController.cpp +++ /dev/null @@ -1,121 +0,0 @@ -// @lint-ignore-every LICENSELINT -// Copyright Epic Games, Inc. All Rights Reserved. - -#include "OculusXRHMD_SpectatorScreenController.h" - -#if OCULUS_HMD_SUPPORTED_PLATFORMS -#include "OculusXRHMD.h" -#include "TextureResource.h" -#include "Engine/TextureRenderTarget2D.h" - -namespace OculusXRHMD -{ - - //------------------------------------------------------------------------------------------------- - // FSpectatorScreenController - //------------------------------------------------------------------------------------------------- - - FSpectatorScreenController::FSpectatorScreenController(FOculusXRHMD* InOculusXRHMD) - : FDefaultSpectatorScreenController(InOculusXRHMD) - , OculusXRHMD(InOculusXRHMD) - , SpectatorMode(EMRSpectatorScreenMode::Default) - , ForegroundRenderTexture(nullptr) - , BackgroundRenderTexture(nullptr) - { - } - - void FSpectatorScreenController::RenderSpectatorScreen_RenderThread(FRHICommandListImmediate& RHICmdList, FRHITexture* BackBuffer, FTextureRHIRef RenderTexture, FVector2D WindowSize) - { - CheckInRenderThread(); - if (OculusXRHMD->GetCustomPresent_Internal()) - { - if (SpectatorMode == EMRSpectatorScreenMode::ExternalComposition) - { - auto ForegroundResource = ForegroundRenderTexture->GetRenderTargetResource(); - auto BackgroundResource = BackgroundRenderTexture->GetRenderTargetResource(); - if (ForegroundResource && BackgroundResource) - { - RenderSpectatorModeExternalComposition( - RHICmdList, - FTextureRHIRef(BackBuffer), - ForegroundResource->GetRenderTargetTexture(), - BackgroundResource->GetRenderTargetTexture()); - return; - } - } - else if (SpectatorMode == EMRSpectatorScreenMode::DirectComposition) - { - auto BackgroundResource = BackgroundRenderTexture->GetRenderTargetResource(); - if (BackgroundResource) - { - RenderSpectatorModeDirectComposition( - RHICmdList, - FTextureRHIRef(BackBuffer), - BackgroundRenderTexture->GetRenderTargetResource()->GetRenderTargetTexture()); - return; - } - } - FDefaultSpectatorScreenController::RenderSpectatorScreen_RenderThread(RHICmdList, BackBuffer, RenderTexture, WindowSize); - } - } - - void FSpectatorScreenController::RenderSpectatorModeUndistorted(FRHICommandListImmediate& RHICmdList, FTextureRHIRef TargetTexture, FTextureRHIRef EyeTexture, FTextureRHIRef OtherTexture, FVector2D WindowSize) - { - CheckInRenderThread(); - FSettings* Settings = OculusXRHMD->GetSettings_RenderThread(); - FIntRect DestRect(0, 0, TargetTexture->GetSizeX() / 2, TargetTexture->GetSizeY()); - for (int i = 0; i < 2; ++i) - { - OculusXRHMD->CopyTexture_RenderThread(RHICmdList, EyeTexture, Settings->EyeRenderViewport[i], TargetTexture, DestRect, false, true); - DestRect.Min.X += TargetTexture->GetSizeX() / 2; - DestRect.Max.X += TargetTexture->GetSizeX() / 2; - } - } - - void FSpectatorScreenController::RenderSpectatorModeDistorted(FRHICommandListImmediate& RHICmdList, FTextureRHIRef TargetTexture, FTextureRHIRef EyeTexture, FTextureRHIRef OtherTexture, FVector2D WindowSize) - { - CheckInRenderThread(); - FCustomPresent* CustomPresent = OculusXRHMD->GetCustomPresent_Internal(); - FTextureRHIRef MirrorTexture = CustomPresent->GetMirrorTexture(); - if (MirrorTexture) - { - FIntRect SrcRect(0, 0, MirrorTexture->GetSizeX(), MirrorTexture->GetSizeY()); - FIntRect DestRect(0, 0, TargetTexture->GetSizeX(), TargetTexture->GetSizeY()); - OculusXRHMD->CopyTexture_RenderThread(RHICmdList, MirrorTexture, SrcRect, TargetTexture, DestRect, false, true); - } - } - - void FSpectatorScreenController::RenderSpectatorModeSingleEye(FRHICommandListImmediate& RHICmdList, FTextureRHIRef TargetTexture, FTextureRHIRef EyeTexture, FTextureRHIRef OtherTexture, FVector2D WindowSize) - { - CheckInRenderThread(); - FSettings* Settings = OculusXRHMD->GetSettings_RenderThread(); - const FIntRect SrcRect = Settings->EyeRenderViewport[0]; - const FIntRect DstRect(0, 0, TargetTexture->GetSizeX(), TargetTexture->GetSizeY()); - - OculusXRHMD->CopyTexture_RenderThread(RHICmdList, EyeTexture, SrcRect, TargetTexture, DstRect, false, true); - } - - void FSpectatorScreenController::RenderSpectatorModeDirectComposition(FRHICommandListImmediate& RHICmdList, FTextureRHIRef TargetTexture, const FTextureRHIRef SrcTexture) const - { - CheckInRenderThread(); - const FIntRect SrcRect(0, 0, SrcTexture->GetSizeX(), SrcTexture->GetSizeY()); - const FIntRect DstRect(0, 0, TargetTexture->GetSizeX(), TargetTexture->GetSizeY()); - - OculusXRHMD->CopyTexture_RenderThread(RHICmdList, SrcTexture, SrcRect, TargetTexture, DstRect, false, true); - } - - void FSpectatorScreenController::RenderSpectatorModeExternalComposition(FRHICommandListImmediate& RHICmdList, FTextureRHIRef TargetTexture, const FTextureRHIRef FrontTexture, const FTextureRHIRef BackTexture) const - { - CheckInRenderThread(); - const FIntRect FrontSrcRect(0, 0, FrontTexture->GetSizeX(), FrontTexture->GetSizeY()); - const FIntRect FrontDstRect(0, 0, TargetTexture->GetSizeX() / 2, TargetTexture->GetSizeY()); - const FIntRect BackSrcRect(0, 0, BackTexture->GetSizeX(), BackTexture->GetSizeY()); - const FIntRect BackDstRect(TargetTexture->GetSizeX() / 2, 0, TargetTexture->GetSizeX(), TargetTexture->GetSizeY()); - - OculusXRHMD->CopyTexture_RenderThread(RHICmdList, FrontTexture, FrontSrcRect, TargetTexture, FrontDstRect, false, true); - OculusXRHMD->CopyTexture_RenderThread(RHICmdList, BackTexture, BackSrcRect, TargetTexture, BackDstRect, false, true); - } - -} // namespace OculusXRHMD - -#endif // OCULUS_HMD_SUPPORTED_PLATFORMS diff --git a/Plugins/MetaXR/Source/OculusXRHMD/Private/OculusXRHMD_SpectatorScreenController.h b/Plugins/MetaXR/Source/OculusXRHMD/Private/OculusXRHMD_SpectatorScreenController.h deleted file mode 100644 index f2f5075..0000000 --- a/Plugins/MetaXR/Source/OculusXRHMD/Private/OculusXRHMD_SpectatorScreenController.h +++ /dev/null @@ -1,53 +0,0 @@ -// @lint-ignore-every LICENSELINT -// Copyright Epic Games, Inc. All Rights Reserved. - -#pragma once -#include "OculusXRHMDPrivate.h" - -#if OCULUS_HMD_SUPPORTED_PLATFORMS -#include "DefaultSpectatorScreenController.h" - -class UTextureRenderTarget2D; - -namespace OculusXRHMD -{ - - // Oculus specific spectator screen modes that override the regular VR spectator screens - enum class EMRSpectatorScreenMode : uint8 - { - Default, - ExternalComposition, - DirectComposition - }; - - //------------------------------------------------------------------------------------------------- - // FSpectatorScreenController - //------------------------------------------------------------------------------------------------- - - class FSpectatorScreenController : public FDefaultSpectatorScreenController - { - public: - FSpectatorScreenController(class FOculusXRHMD* InOculusXRHMD); - - void SetMRSpectatorScreenMode(EMRSpectatorScreenMode Mode) { SpectatorMode = Mode; } - void SetMRForeground(UTextureRenderTarget2D* Texture) { ForegroundRenderTexture = Texture; } - void SetMRBackground(UTextureRenderTarget2D* Texture) { BackgroundRenderTexture = Texture; } - - virtual void RenderSpectatorScreen_RenderThread(FRHICommandListImmediate& RHICmdList, FRHITexture* BackBuffer, FTextureRHIRef RenderTarget, FVector2D WindowSize) override; - virtual void RenderSpectatorModeUndistorted(FRHICommandListImmediate& RHICmdList, FTextureRHIRef TargetTexture, FTextureRHIRef EyeTexture, FTextureRHIRef OtherTexture, FVector2D WindowSize) override; - virtual void RenderSpectatorModeDistorted(FRHICommandListImmediate& RHICmdList, FTextureRHIRef TargetTexture, FTextureRHIRef EyeTexture, FTextureRHIRef OtherTexture, FVector2D WindowSize) override; - virtual void RenderSpectatorModeSingleEye(FRHICommandListImmediate& RHICmdList, FTextureRHIRef TargetTexture, FTextureRHIRef EyeTexture, FTextureRHIRef OtherTexture, FVector2D WindowSize) override; - - private: - FOculusXRHMD* OculusXRHMD; - EMRSpectatorScreenMode SpectatorMode; - UTextureRenderTarget2D* ForegroundRenderTexture; - UTextureRenderTarget2D* BackgroundRenderTexture; - - void RenderSpectatorModeDirectComposition(FRHICommandListImmediate& RHICmdList, FTextureRHIRef TargetTexture, const FTextureRHIRef SrcTexture) const; - void RenderSpectatorModeExternalComposition(FRHICommandListImmediate& RHICmdList, FTextureRHIRef TargetTexture, const FTextureRHIRef FrontTexture, const FTextureRHIRef BackTexture) const; - }; - -} // namespace OculusXRHMD - -#endif // OCULUS_HMD_SUPPORTED_PLATFORMS diff --git a/Plugins/MetaXR/Source/OculusXRHMD/Private/OculusXRHMD_Splash.cpp b/Plugins/MetaXR/Source/OculusXRHMD/Private/OculusXRHMD_Splash.cpp deleted file mode 100644 index a30c27d..0000000 --- a/Plugins/MetaXR/Source/OculusXRHMD/Private/OculusXRHMD_Splash.cpp +++ /dev/null @@ -1,667 +0,0 @@ -// @lint-ignore-every LICENSELINT -// Copyright Epic Games, Inc. All Rights Reserved. - -#include "OculusXRHMD_Splash.h" - -#if OCULUS_HMD_SUPPORTED_PLATFORMS -#include "OculusXRHMD.h" -#include "RenderingThread.h" -#include "Misc/ScopeLock.h" -#include "OculusXRHMDRuntimeSettings.h" -#include "TextureResource.h" - -#if PLATFORM_ANDROID -#include "Android/AndroidJNI.h" -#include "Android/AndroidApplication.h" -#include "OculusXRHMDTypes.h" -#endif - -namespace OculusXRHMD -{ - - //------------------------------------------------------------------------------------------------- - // FSplash - //------------------------------------------------------------------------------------------------- - - FSplash::FSplash(FOculusXRHMD* InOculusXRHMD) - : OculusXRHMD(InOculusXRHMD), CustomPresent(InOculusXRHMD->GetCustomPresent_Internal()), FramesOutstanding(0), NextLayerId(1), bInitialized(false), bIsShown(false), bNeedSplashUpdate(false), bShouldShowSplash(false), SystemDisplayInterval(1 / 90.0f) - { - // Create empty quad layer for UE layer - { - IStereoLayers::FLayerDesc LayerDesc; - LayerDesc.QuadSize = FVector2D(0.01f, 0.01f); - LayerDesc.Priority = 0; - LayerDesc.PositionType = IStereoLayers::TrackerLocked; - LayerDesc.Texture = nullptr; - UELayer = MakeShareable(new FLayer(NextLayerId++)); - UELayer->SetDesc(LayerDesc); - } - } - - FSplash::~FSplash() - { - // Make sure RenTicker is freed in Shutdown - check(!Ticker.IsValid()) - } - - void FSplash::Tick_RenderThread(float DeltaTime) - { - CheckInRenderThread(); - - if (FramesOutstanding > 0) - { - UE_LOG(LogHMD, VeryVerbose, TEXT("Splash skipping frame; too many frames outstanding")); - return; - } - - const double TimeInSeconds = FPlatformTime::Seconds(); - const double DeltaTimeInSeconds = TimeInSeconds - LastTimeInSeconds; - - if (DeltaTimeInSeconds > 2.f * SystemDisplayInterval && Layers_RenderThread_DeltaRotation.Num() > 0) - { - FScopeLock ScopeLock(&RenderThreadLock); - for (TTuple& Info : Layers_RenderThread_DeltaRotation) - { - FLayerPtr Layer = Info.Key; - const FQuat& DeltaRotation = Info.Value; - check(Layer.IsValid()); - check(!DeltaRotation.Equals(FQuat::Identity)); // Only layers with non-zero delta rotation should be in the DeltaRotation array. - - IStereoLayers::FLayerDesc LayerDesc = Layer->GetDesc(); - LayerDesc.Transform.SetRotation(LayerDesc.Transform.GetRotation() * DeltaRotation); - LayerDesc.Transform.NormalizeRotation(); - Layer->SetDesc(LayerDesc); - } - LastTimeInSeconds = TimeInSeconds; - } - - RenderFrame_RenderThread(FRHICommandListExecutor::GetImmediateCommandList()); - } - - void FSplash::LoadSettings() - { - UOculusXRHMDRuntimeSettings* HMDSettings = GetMutableDefault(); - check(HMDSettings); - ClearSplashes(); - for (const FOculusXRSplashDesc& SplashDesc : HMDSettings->SplashDescs) - { - AddSplash(SplashDesc); - } - - if (HMDSettings->bAutoEnabled) - { - if (!PreLoadLevelDelegate.IsValid()) - { - PreLoadLevelDelegate = FCoreUObjectDelegates::PreLoadMap.AddSP(this, &FSplash::OnPreLoadMap); - } - if (!PostLoadLevelDelegate.IsValid()) - { - PostLoadLevelDelegate = FCoreUObjectDelegates::PostLoadMapWithWorld.AddSP(this, &FSplash::OnPostLoadMap); - } - } - else - { - if (PreLoadLevelDelegate.IsValid()) - { - FCoreUObjectDelegates::PreLoadMap.Remove(PreLoadLevelDelegate); - PreLoadLevelDelegate.Reset(); - } - if (PostLoadLevelDelegate.IsValid()) - { - FCoreUObjectDelegates::PostLoadMapWithWorld.Remove(PostLoadLevelDelegate); - PostLoadLevelDelegate.Reset(); - } - } - } - - void FSplash::OnPreLoadMap(const FString&) - { - DoShow(); - } - - void FSplash::OnPostLoadMap(UWorld* LoadedWorld) - { - // Don't auto-hide splash if show loading screen is called explicitly - if (!bShouldShowSplash) - { - UE_LOG(LogHMD, Log, TEXT("FSplash::OnPostLoadMap Hide Auto Splash")); - HideLoadingScreen(); - } - } - -#if WITH_EDITOR - void FSplash::OnPieBegin(bool bIsSimulating) - { - LoadSettings(); - } -#endif - - void FSplash::Startup() - { - CheckInGameThread(); - - if (!bInitialized) - { - Settings = OculusXRHMD->CreateNewSettings(); - Frame = OculusXRHMD->CreateNewGameFrame(); - // keep units in meters rather than UU (because UU make not much sense). - Frame->WorldToMetersScale = 1.0f; - - float SystemDisplayFrequency; - if (OVRP_SUCCESS(FOculusXRHMDModule::GetPluginWrapper().GetSystemDisplayFrequency2(&SystemDisplayFrequency))) - { - SystemDisplayInterval = 1.0f / SystemDisplayFrequency; - } - - LoadSettings(); - - OculusXRHMD->InitDevice(); - -#if WITH_EDITOR - PieBeginDelegateHandle = FEditorDelegates::BeginPIE.AddRaw(this, &FSplash::OnPieBegin); -#else - UOculusXRHMDRuntimeSettings* HMDSettings = GetMutableDefault(); - check(HMDSettings); - if (HMDSettings->bAutoEnabled) - { - UE_LOG(LogHMD, Log, TEXT("FSplash::Startup Show Splash on Startup")); - DoShow(); - } -#endif - - OculusXRHMD->Settings_RenderThread = OculusXRHMD->Settings->Clone(); - - bInitialized = true; - } - } - - void FSplash::StopTicker() - { - CheckInGameThread(); - - if (!bIsShown) - { - ExecuteOnRenderThread([this]() { - if (Ticker.IsValid()) - { - Ticker->Unregister(); - Ticker = nullptr; - } - }); - UnloadTextures(); - } - } - - void FSplash::StartTicker() - { - CheckInGameThread(); - - if (!Ticker.IsValid()) - { - Ticker = MakeShareable(new FTicker(this)); - - ExecuteOnRenderThread([this]() { - LastTimeInSeconds = FPlatformTime::Seconds(); - Ticker->Register(); - }); - } - } - - void FSplash::RenderFrame_RenderThread(FRHICommandListImmediate& RHICmdList) - { - CheckInRenderThread(); - - FScopeLock ScopeLock(&RenderThreadLock); - - // RenderFrame - FSettingsPtr XSettings = Settings->Clone(); - FGameFramePtr XFrame = Frame->Clone(); - XFrame->FrameNumber = OculusXRHMD->NextFrameNumber; - XFrame->ShowFlags.Rendering = true; - TArray XLayers = Layers_RenderThread_Input; - - ensure(XLayers.Num() != 0); - - ovrpResult Result; - if (FOculusXRHMDModule::GetPluginWrapper().GetInitialized() && OculusXRHMD->WaitFrameNumber != XFrame->FrameNumber) - { - UE_LOG(LogHMD, Verbose, TEXT("Splash FOculusXRHMDModule::GetPluginWrapper().WaitToBeginFrame %u"), XFrame->FrameNumber); - if (OVRP_FAILURE(Result = FOculusXRHMDModule::GetPluginWrapper().WaitToBeginFrame(XFrame->FrameNumber))) - { - UE_LOG(LogHMD, Error, TEXT("Splash FOculusXRHMDModule::GetPluginWrapper().WaitToBeginFrame %u failed (%d)"), XFrame->FrameNumber, Result); - XFrame->ShowFlags.Rendering = false; - } - else - { - OculusXRHMD->WaitFrameNumber = XFrame->FrameNumber; - OculusXRHMD->NextFrameNumber = XFrame->FrameNumber + 1; - FPlatformAtomics::InterlockedIncrement(&FramesOutstanding); - } - } - else - { - XFrame->ShowFlags.Rendering = false; - } - - if (XFrame->ShowFlags.Rendering) - { - if (OVRP_FAILURE(Result = FOculusXRHMDModule::GetPluginWrapper().Update3(ovrpStep_Render, XFrame->FrameNumber, 0.0))) - { - UE_LOG(LogHMD, Error, TEXT("Splash FOculusXRHMDModule::GetPluginWrapper().Update3 %u failed (%d)"), XFrame->FrameNumber, Result); - } - } - - { - int32 LayerIndex = 0; - int32 LayerIndex_RenderThread = 0; - - while (LayerIndex < XLayers.Num() && LayerIndex_RenderThread < Layers_RenderThread.Num()) - { - uint32 LayerIdA = XLayers[LayerIndex]->GetId(); - uint32 LayerIdB = Layers_RenderThread[LayerIndex_RenderThread]->GetId(); - - if (LayerIdA < LayerIdB) - { - XLayers[LayerIndex++]->Initialize_RenderThread(XSettings.Get(), CustomPresent, &OculusXRHMD->DeferredDeletion, RHICmdList); - } - else if (LayerIdA > LayerIdB) - { - OculusXRHMD->DeferredDeletion.AddLayerToDeferredDeletionQueue(Layers_RenderThread[LayerIndex_RenderThread++]); - } - else - { - XLayers[LayerIndex++]->Initialize_RenderThread(XSettings.Get(), CustomPresent, &OculusXRHMD->DeferredDeletion, RHICmdList, Layers_RenderThread[LayerIndex_RenderThread++].Get()); - } - } - - while (LayerIndex < XLayers.Num()) - { - XLayers[LayerIndex++]->Initialize_RenderThread(XSettings.Get(), CustomPresent, &OculusXRHMD->DeferredDeletion, RHICmdList); - } - - while (LayerIndex_RenderThread < Layers_RenderThread.Num()) - { - OculusXRHMD->DeferredDeletion.AddLayerToDeferredDeletionQueue(Layers_RenderThread[LayerIndex_RenderThread++]); - } - } - - Layers_RenderThread = XLayers; - - for (int32 LayerIndex = 0; LayerIndex < Layers_RenderThread.Num(); LayerIndex++) - { - Layers_RenderThread[LayerIndex]->UpdateTexture_RenderThread(XSettings.Get(), CustomPresent, RHICmdList); - } - - // This submit is required since splash happens before the game is rendering, so layers won't be submitted with game render commands - CustomPresent->SubmitGPUCommands_RenderThread(RHICmdList); - - // RHIFrame - for (int32 LayerIndex = 0; LayerIndex < XLayers.Num(); LayerIndex++) - { - XLayers[LayerIndex] = XLayers[LayerIndex]->Clone(); - } - - ExecuteOnRHIThread_DoNotWait([this, XSettings, XFrame, XLayers]() { - ovrpResult ResultT; - - if (XFrame->ShowFlags.Rendering) - { - UE_LOG(LogHMD, Verbose, TEXT("Splash FOculusXRHMDModule::GetPluginWrapper().BeginFrame4 %u"), XFrame->FrameNumber); - if (OVRP_FAILURE(ResultT = FOculusXRHMDModule::GetPluginWrapper().BeginFrame4(XFrame->FrameNumber, CustomPresent->GetOvrpCommandQueue()))) - { - UE_LOG(LogHMD, Error, TEXT("Splash FOculusXRHMDModule::GetPluginWrapper().BeginFrame4 %u failed (%d)"), XFrame->FrameNumber, ResultT); - XFrame->ShowFlags.Rendering = false; - } - } - - FPlatformAtomics::InterlockedDecrement(&FramesOutstanding); - - Layers_RHIThread = XLayers; - Layers_RHIThread.Sort(FLayerPtr_ComparePriority()); - - if (XFrame->ShowFlags.Rendering) - { - TArray LayerSubmitPtr; - LayerSubmitPtr.SetNum(Layers_RHIThread.Num()); - - for (int32 LayerIndex = 0; LayerIndex < Layers_RHIThread.Num(); LayerIndex++) - { - LayerSubmitPtr[LayerIndex] = Layers_RHIThread[LayerIndex]->UpdateLayer_RHIThread(XSettings.Get(), XFrame.Get(), LayerIndex); - } - - UE_LOG(LogHMD, Verbose, TEXT("Splash FOculusXRHMDModule::GetPluginWrapper().EndFrame4 %u"), XFrame->FrameNumber); - if (OVRP_FAILURE(ResultT = FOculusXRHMDModule::GetPluginWrapper().EndFrame4(XFrame->FrameNumber, LayerSubmitPtr.GetData(), LayerSubmitPtr.Num(), CustomPresent->GetOvrpCommandQueue()))) - { - UE_LOG(LogHMD, Error, TEXT("Splash FOculusXRHMDModule::GetPluginWrapper().EndFrame4 %u failed (%d)"), XFrame->FrameNumber, ResultT); - } - else - { - for (int32 LayerIndex = 0; LayerIndex < Layers_RHIThread.Num(); LayerIndex++) - { - Layers_RHIThread[LayerIndex]->IncrementSwapChainIndex_RHIThread(CustomPresent); - } - } - } - }); - - // Splash screen render loop sometimes doesn't trigger RHICmdList flush - CustomPresent->SubmitGPUCommands_RenderThread(FRHICommandListExecutor::GetImmediateCommandList()); - } - - void FSplash::ReleaseResources_RHIThread() - { - for (int32 LayerIndex = 0; LayerIndex < Layers_RenderThread.Num(); LayerIndex++) - { - Layers_RenderThread[LayerIndex]->ReleaseResources_RHIThread(); - } - - for (int32 LayerIndex = 0; LayerIndex < Layers_RHIThread.Num(); LayerIndex++) - { - Layers_RHIThread[LayerIndex]->ReleaseResources_RHIThread(); - } - - Layers_RenderThread.Reset(); - Layers_RHIThread.Reset(); - } - - void FSplash::PreShutdown() - { - CheckInGameThread(); - } - - void FSplash::Shutdown() - { - CheckInGameThread(); - -#if WITH_EDITOR - if (PieBeginDelegateHandle.IsValid()) - { - FEditorDelegates::BeginPIE.Remove(PieBeginDelegateHandle); - PieBeginDelegateHandle.Reset(); - } -#endif - - if (PreLoadLevelDelegate.IsValid()) - { - FCoreUObjectDelegates::PreLoadMap.Remove(PreLoadLevelDelegate); - PreLoadLevelDelegate.Reset(); - } - if (PostLoadLevelDelegate.IsValid()) - { - FCoreUObjectDelegates::PostLoadMapWithWorld.Remove(PostLoadLevelDelegate); - PostLoadLevelDelegate.Reset(); - } - - if (bInitialized) - { - ExecuteOnRenderThread([this]() { - if (Ticker) - { - Ticker->Unregister(); - Ticker = nullptr; - } - - ExecuteOnRHIThread([this]() { - SplashLayers.Reset(); - Layers_RenderThread.Reset(); - Layers_RenderThread_Input.Reset(); - Layers_RHIThread.Reset(); - }); - }); - - bInitialized = false; - } - } - - int FSplash::AddSplash(const FOculusXRSplashDesc& Desc) - { - CheckInGameThread(); - - FScopeLock ScopeLock(&RenderThreadLock); - return SplashLayers.Add(FSplashLayer(Desc)); - } - - void FSplash::AddSplash(const FSplashDesc& Splash) - { - FOculusXRSplashDesc OculusDesc; - OculusDesc.TransformInMeters = Splash.Transform; - OculusDesc.QuadSizeInMeters = Splash.QuadSize; - OculusDesc.DeltaRotation = Splash.DeltaRotation; - OculusDesc.bNoAlphaChannel = Splash.bIgnoreAlpha; - OculusDesc.bIsDynamic = Splash.bIsDynamic || Splash.bIsExternal; - OculusDesc.TextureOffset = Splash.UVRect.Min; - OculusDesc.TextureScale = Splash.UVRect.Max; - OculusDesc.LoadedTexture = Splash.Texture; - - AddSplash(OculusDesc); - } - - void FSplash::ClearSplashes() - { - CheckInGameThread(); - - FScopeLock ScopeLock(&RenderThreadLock); - SplashLayers.Reset(); - } - - bool FSplash::GetSplash(unsigned InSplashLayerIndex, FOculusXRSplashDesc& OutDesc) - { - CheckInGameThread(); - - FScopeLock ScopeLock(&RenderThreadLock); - if (InSplashLayerIndex < unsigned(SplashLayers.Num())) - { - OutDesc = SplashLayers[int32(InSplashLayerIndex)].Desc; - return true; - } - return false; - } - - IStereoLayers::FLayerDesc FSplash::StereoLayerDescFromOculusSplashDesc(FOculusXRSplashDesc OculusDesc) - { - IStereoLayers::FLayerDesc LayerDesc; - if (OculusDesc.LoadedTexture->GetTextureCube() != nullptr) - { - LayerDesc.SetShape(); - } - // else LayerDesc.Shape defaults to FQuadLayer - - LayerDesc.Transform = OculusDesc.TransformInMeters * FTransform(OculusXRHMD->GetSplashRotation().Quaternion()); - LayerDesc.QuadSize = OculusDesc.QuadSizeInMeters; - LayerDesc.UVRect = FBox2D(OculusDesc.TextureOffset, OculusDesc.TextureOffset + OculusDesc.TextureScale); - LayerDesc.Priority = INT32_MAX - (int32)(OculusDesc.TransformInMeters.GetTranslation().X * 1000.f); - LayerDesc.PositionType = IStereoLayers::TrackerLocked; - LayerDesc.Texture = OculusDesc.LoadedTexture; - LayerDesc.Flags = IStereoLayers::LAYER_FLAG_QUAD_PRESERVE_TEX_RATIO | (OculusDesc.bNoAlphaChannel ? IStereoLayers::LAYER_FLAG_TEX_NO_ALPHA_CHANNEL : 0) | (OculusDesc.bIsDynamic ? IStereoLayers::LAYER_FLAG_TEX_CONTINUOUS_UPDATE : 0); - - return LayerDesc; - } - - void FSplash::DoShow() - { - CheckInGameThread(); - - OculusXRHMD->SetSplashRotationToForward(); - - // Create new textures - UnloadTextures(); - - // Make sure all UTextures are loaded and contain Resource->TextureRHI - bool bWaitForRT = false; - - for (int32 SplashLayerIndex = 0; SplashLayerIndex < SplashLayers.Num(); ++SplashLayerIndex) - { - FSplashLayer& SplashLayer = SplashLayers[SplashLayerIndex]; - - if (SplashLayer.Desc.TexturePath.IsValid()) - { - // load temporary texture (if TexturePath was specified) - LoadTexture(SplashLayer); - } - if (SplashLayer.Desc.LoadingTexture && SplashLayer.Desc.LoadingTexture->IsValidLowLevel()) - { - SplashLayer.Desc.LoadingTexture->UpdateResource(); - bWaitForRT = true; - } - } - - FlushRenderingCommands(); - - for (int32 SplashLayerIndex = 0; SplashLayerIndex < SplashLayers.Num(); ++SplashLayerIndex) - { - FSplashLayer& SplashLayer = SplashLayers[SplashLayerIndex]; - - //@DBG BEGIN - if (SplashLayer.Desc.LoadingTexture && SplashLayer.Desc.LoadingTexture->IsValidLowLevel()) - { - if (SplashLayer.Desc.LoadingTexture->GetResource() && SplashLayer.Desc.LoadingTexture->GetResource()->TextureRHI) - { - SplashLayer.Desc.LoadedTexture = SplashLayer.Desc.LoadingTexture->GetResource()->TextureRHI; - } - else - { - UE_LOG(LogHMD, Warning, TEXT("Splash, %s - no Resource"), *SplashLayer.Desc.LoadingTexture->GetDesc()); - } - } - //@DBG END - - if (SplashLayer.Desc.LoadedTexture) - { - SplashLayer.Layer = MakeShareable(new FLayer(NextLayerId++)); - SplashLayer.Layer->SetDesc(StereoLayerDescFromOculusSplashDesc(SplashLayer.Desc)); - } - } - - { - // add oculus-generated layers through the OculusVR settings area - FScopeLock ScopeLock(&RenderThreadLock); - Layers_RenderThread_DeltaRotation.Reset(); - Layers_RenderThread_Input.Reset(); - for (int32 SplashLayerIndex = 0; SplashLayerIndex < SplashLayers.Num(); SplashLayerIndex++) - { - const FSplashLayer& SplashLayer = SplashLayers[SplashLayerIndex]; - - if (SplashLayer.Layer.IsValid()) - { - FLayerPtr ClonedLayer = SplashLayer.Layer->Clone(); - Layers_RenderThread_Input.Add(ClonedLayer); - - // Register layers that need to be rotated every n ticks - if (!SplashLayer.Desc.DeltaRotation.Equals(FQuat::Identity)) - { - Layers_RenderThread_DeltaRotation.Emplace(ClonedLayer, SplashLayer.Desc.DeltaRotation); - } - } - } - - // add UE VR splash screen - FOculusXRSplashDesc UESplashDesc = OculusXRHMD->GetUESplashScreenDesc(); - if (UESplashDesc.LoadedTexture != nullptr) - { - UELayer.Reset(); - UELayer = MakeShareable(new FLayer(NextLayerId++)); - UELayer->SetDesc(StereoLayerDescFromOculusSplashDesc(UESplashDesc)); - Layers_RenderThread_Input.Add(UELayer->Clone()); - } - - Layers_RenderThread_Input.Sort(FLayerPtr_CompareId()); - } - - if (Layers_RenderThread_Input.Num() > 0) - { - // If no textures are loaded, this will push black frame - StartTicker(); - bIsShown = true; - UE_LOG(LogHMD, Log, TEXT("FSplash::DoShow")); - } - else - { - UE_LOG(LogHMD, Log, TEXT("No splash layers in FSplash::DoShow")); - } - } - - void FSplash::DoHide() - { - CheckInGameThread(); - - UE_LOG(LogHMD, Log, TEXT("FSplash::DoHide")); - bIsShown = false; - - StopTicker(); - } - - void FSplash::UpdateLoadingScreen_GameThread() - { - if (bNeedSplashUpdate) - { - if (bShouldShowSplash) - { - DoShow(); - } - else - { - DoHide(); - } - - bNeedSplashUpdate = false; - } - } - - void FSplash::ShowLoadingScreen() - { - bShouldShowSplash = true; - - // DoShow will be called from UpdateSplashScreen_Gamethread(). - // This can can happen if the splashes are already being shown, as it will reset the relative positions and delta rotations of the layers. - bNeedSplashUpdate = true; - } - - void FSplash::HideLoadingScreen() - { - bShouldShowSplash = false; - bNeedSplashUpdate = bIsShown; // no need to call DoHide when the splash is already hidden - } - - void FSplash::UnloadTextures() - { - CheckInGameThread(); - - // unload temporary loaded textures - FScopeLock ScopeLock(&RenderThreadLock); - for (int32 SplashLayerIndex = 0; SplashLayerIndex < SplashLayers.Num(); ++SplashLayerIndex) - { - if (SplashLayers[SplashLayerIndex].Desc.TexturePath.IsValid()) - { - UnloadTexture(SplashLayers[SplashLayerIndex]); - } - } - } - - void FSplash::LoadTexture(FSplashLayer& InSplashLayer) - { - CheckInGameThread(); - - UnloadTexture(InSplashLayer); - - UE_LOG(LogLoadingSplash, Log, TEXT("Loading texture for splash %s..."), *InSplashLayer.Desc.TexturePath.GetAssetName()); - InSplashLayer.Desc.LoadingTexture = Cast(InSplashLayer.Desc.TexturePath.TryLoad()); - if (InSplashLayer.Desc.LoadingTexture != nullptr) - { - UE_LOG(LogLoadingSplash, Log, TEXT("...Success. ")); - } - InSplashLayer.Desc.LoadedTexture = nullptr; - InSplashLayer.Layer.Reset(); - } - - void FSplash::UnloadTexture(FSplashLayer& InSplashLayer) - { - CheckInGameThread(); - - InSplashLayer.Desc.LoadingTexture = nullptr; - InSplashLayer.Desc.LoadedTexture = nullptr; - InSplashLayer.Layer.Reset(); - } - -} // namespace OculusXRHMD - -#endif // OCULUS_HMD_SUPPORTED_PLATFORMS diff --git a/Plugins/MetaXR/Source/OculusXRHMD/Private/OculusXRHMD_Splash.h b/Plugins/MetaXR/Source/OculusXRHMD/Private/OculusXRHMD_Splash.h deleted file mode 100644 index 3d61d84..0000000 --- a/Plugins/MetaXR/Source/OculusXRHMD/Private/OculusXRHMD_Splash.h +++ /dev/null @@ -1,146 +0,0 @@ -// @lint-ignore-every LICENSELINT -// Copyright Epic Games, Inc. All Rights Reserved. - -#pragma once -#include "OculusXRHMDPrivate.h" -#include "IXRLoadingScreen.h" - -#if WITH_EDITOR -#include "Editor.h" -#endif - -#if OCULUS_HMD_SUPPORTED_PLATFORMS -#include "OculusXRHMD_GameFrame.h" -#include "OculusXRHMD_Layer.h" -#include "TickableObjectRenderThread.h" -#include "OculusXRHMDTypes.h" - -namespace OculusXRHMD -{ - - class FOculusXRHMD; - - //------------------------------------------------------------------------------------------------- - // FSplashLayer - //------------------------------------------------------------------------------------------------- - - struct FSplashLayer - { - FOculusXRSplashDesc Desc; - FLayerPtr Layer; - - public: - FSplashLayer(const FOculusXRSplashDesc& InDesc) - : Desc(InDesc) {} - FSplashLayer(const FSplashLayer& InSplashLayer) - : Desc(InSplashLayer.Desc), Layer(InSplashLayer.Layer) {} - }; - - //------------------------------------------------------------------------------------------------- - // FSplash - //------------------------------------------------------------------------------------------------- - - class FSplash : public IXRLoadingScreen, public TSharedFromThis - { - protected: - class FTicker : public FTickableObjectRenderThread, public TSharedFromThis - { - public: - FTicker(FSplash* InSplash) - : FTickableObjectRenderThread(false, true), pSplash(InSplash) {} - - virtual void Tick(float DeltaTime) override { pSplash->Tick_RenderThread(DeltaTime); } - virtual TStatId GetStatId() const override { RETURN_QUICK_DECLARE_CYCLE_STAT(FSplash, STATGROUP_Tickables); } - virtual bool IsTickable() const override { return true; } - - protected: - FSplash* pSplash; - }; - - public: - FSplash(FOculusXRHMD* InPlugin); - virtual ~FSplash(); - - void Tick_RenderThread(float DeltaTime); - - void Startup(); - void LoadSettings(); - void ReleaseResources_RHIThread(); - void PreShutdown(); - void Shutdown(); - - void OnPreLoadMap(const FString&); - void OnPostLoadMap(UWorld* LoadedWorld); -#if WITH_EDITOR - void OnPieBegin(bool bIsSimulating); -#endif - - // Called from FOculusXRHMD - void UpdateLoadingScreen_GameThread(); - - // Internal extended API - int AddSplash(const FOculusXRSplashDesc&); - bool GetSplash(unsigned index, FOculusXRSplashDesc& OutDesc); - void StopTicker(); - void StartTicker(); - - // The standard IXRLoadingScreen interface - virtual void ShowLoadingScreen() override; - virtual void HideLoadingScreen() override; - virtual void ClearSplashes() override; - virtual void AddSplash(const FSplashDesc& Splash) override; - virtual bool IsShown() const override { return bIsShown; } -#if !UE_VERSION_OLDER_THAN(5, 3, 0) - virtual bool IsPlayingLoadingMovie() const override - { - return false; - } -#endif - - protected: - void DoShow(); - void DoHide(); - void UnloadTextures(); - void LoadTexture(FSplashLayer& InSplashLayer); - void UnloadTexture(FSplashLayer& InSplashLayer); - - void RenderFrame_RenderThread(FRHICommandListImmediate& RHICmdList); - IStereoLayers::FLayerDesc StereoLayerDescFromOculusSplashDesc(FOculusXRSplashDesc OculusDesc); - - protected: - FOculusXRHMD* OculusXRHMD; - FCustomPresent* CustomPresent; - TSharedPtr Ticker; - int32 FramesOutstanding; - FCriticalSection RenderThreadLock; - FSettingsPtr Settings; - FGameFramePtr Frame; - TArray SplashLayers; - uint32 NextLayerId; - FLayerPtr BlackLayer; - FLayerPtr UELayer; - TArray> Layers_RenderThread_DeltaRotation; - TArray Layers_RenderThread_Input; - TArray Layers_RenderThread; - TArray Layers_RHIThread; - - // All these flags are only modified from the Game thread - bool bInitialized; - bool bIsShown; - bool bNeedSplashUpdate; - bool bShouldShowSplash; - - float SystemDisplayInterval; - double LastTimeInSeconds; - FDelegateHandle PreLoadLevelDelegate; - FDelegateHandle PostLoadLevelDelegate; -#if WITH_EDITOR - FDelegateHandle PieBeginDelegateHandle; -#endif - }; - - typedef TSharedPtr FSplashPtr; - -} // namespace OculusXRHMD - -#endif // OCULUS_HMD_SUPPORTED_PLATFORMS diff --git a/Plugins/MetaXR/Source/OculusXRHMD/Private/OculusXRHMD_StressTester.cpp b/Plugins/MetaXR/Source/OculusXRHMD/Private/OculusXRHMD_StressTester.cpp deleted file mode 100644 index 022b929..0000000 --- a/Plugins/MetaXR/Source/OculusXRHMD/Private/OculusXRHMD_StressTester.cpp +++ /dev/null @@ -1,309 +0,0 @@ -// @lint-ignore-every LICENSELINT -// Copyright Epic Games, Inc. All Rights Reserved. - -#include "OculusXRHMD_StressTester.h" - -#if OCULUS_STRESS_TESTS_ENABLED -#include "OculusXRHMD.h" -#include "GlobalShader.h" -#include "UniformBuffer.h" -#include "RHICommandList.h" -#include "ShaderParameterUtils.h" -#include "RHIStaticStates.h" -#include "PipelineStateCache.h" -#include "OculusShaders.h" -#include "SceneUtils.h" // for SCOPED_DRAW_EVENT() - -DECLARE_STATS_GROUP(TEXT("Oculus"), STATGROUP_Oculus, STATCAT_Advanced); -DECLARE_CYCLE_STAT(TEXT("GPUStressRendering"), STAT_GPUStressRendering, STATGROUP_Oculus); - -//------------------------------------------------------------------------------------------------- -// Uniform buffers -//------------------------------------------------------------------------------------------------- - -// This buffer should contain variables that never, or rarely change -BEGIN_GLOBAL_SHADER_PARAMETER_STRUCT(FOculusPixelShaderConstantParameters, ) -// SHADER_PARAMETER(FVector4, Name) -END_GLOBAL_SHADER_PARAMETER_STRUCT() - -IMPLEMENT_GLOBAL_SHADER_PARAMETER_STRUCT(FOculusPixelShaderConstantParameters, "PSConstants"); - -typedef TUniformBufferRef FOculusPixelShaderConstantParametersRef; - -// This buffer is for variables that change very often (each frame for example) -BEGIN_GLOBAL_SHADER_PARAMETER_STRUCT(FOculusPixelShaderVariableParameters, ) -SHADER_PARAMETER(int, IterationsMultiplier) -END_GLOBAL_SHADER_PARAMETER_STRUCT() - -IMPLEMENT_GLOBAL_SHADER_PARAMETER_STRUCT(FOculusPixelShaderVariableParameters, "PSVariables"); - -typedef TUniformBufferRef FOculusPixelShaderVariableParametersRef; - -namespace OculusXRHMD -{ - - //------------------------------------------------------------------------------------------------- - // FTextureVertexDeclaration - //------------------------------------------------------------------------------------------------- - - struct FTextureVertex - { - FVector4 Position; - FVector2f UV; - }; - - class FTextureVertexDeclaration : public FRenderResource - { - public: - FVertexDeclarationRHIRef VertexDeclarationRHI; - -#if UE_VERSION_OLDER_THAN(5, 3, 0) - virtual void InitRHI() override -#else - virtual void InitRHI(FRHICommandListBase& RHICmdList) override -#endif - { - FVertexDeclarationElementList Elements; - uint32 Stride = sizeof(FTextureVertex); - Elements.Add(FVertexElement(0, STRUCT_OFFSET(FTextureVertex, Position), VET_Float4, 0, Stride)); - Elements.Add(FVertexElement(0, STRUCT_OFFSET(FTextureVertex, UV), VET_Float2, 1, Stride)); - VertexDeclarationRHI = PipelineStateCache::GetOrCreateVertexDeclaration(Elements); - } - - virtual void ReleaseRHI() override - { - VertexDeclarationRHI.SafeRelease(); - } - }; - - static TGlobalResource GOculusTextureVertexDeclaration; - - //------------------------------------------------------------------------------------------------- - // FStressTester - //------------------------------------------------------------------------------------------------- - - TSharedPtr FStressTester::SharedInstance; - - TSharedRef FStressTester::Get() - { - CheckInGameThread(); - if (!SharedInstance.IsValid()) - { - SharedInstance = TSharedPtr(new FStressTester()); - check(SharedInstance.IsValid()); - } - return SharedInstance.ToSharedRef(); - } - - FStressTester::FStressTester() - : Mode(STM_None) - , CPUSpinOffInSeconds(0.011 / 3.) // one third of the frame (default value) - , PDsTimeLimitInSeconds(10.) // 10 secs - , CPUsTimeLimitInSeconds(10.) // 10 secs - , GPUsTimeLimitInSeconds(10.) // 10 secs - , GPUIterationsMultiplier(0.) - , CPUStartTimeInSeconds(0.) - , GPUStartTimeInSeconds(0.) - , PDStartTimeInSeconds(0.) - { - } - - // multiple masks could be set, see EStressTestMode - void FStressTester::SetStressMode(uint32 InStressMask) - { - check((InStressMask & (~STM__All)) == 0); - Mode = InStressMask; - - for (uint32 m = 1; m < STM__All; m <<= 1) - { - if (InStressMask & m) - { - switch (m) - { - case STM_EyeBufferRealloc: - UE_LOG(LogHMD, Log, TEXT("PD of EyeBuffer stress test is started")); - break; - case STM_CPUSpin: - UE_LOG(LogHMD, Log, TEXT("CPU stress test is started")); - break; - case STM_GPU: - UE_LOG(LogHMD, Log, TEXT("GPU stress test is started")); - break; - } - } - } - } - - void FStressTester::DoTickCPU_GameThread(FOculusXRHMD* pPlugin) - { - CheckInGameThread(); - - if (Mode & STM_EyeBufferRealloc) - { - // Change PixelDensity every frame within MinPixelDensity..MaxPixelDensity range - if (PDStartTimeInSeconds == 0.) - { - PDStartTimeInSeconds = FPlatformTime::Seconds(); - } - else - { - const double Now = FPlatformTime::Seconds(); - if (Now - PDStartTimeInSeconds >= PDsTimeLimitInSeconds) - { - PDStartTimeInSeconds = 0.; - Mode &= ~STM_EyeBufferRealloc; - UE_LOG(LogHMD, Log, TEXT("PD of EyeBuffer stress test is finished")); - } - } - - const int divisor = int((MaxPixelDensity - MinPixelDensity) * 10.f); - float NewPD = float(uint64(FPlatformTime::Seconds() * 1000) % divisor) / 10.f + MinPixelDensity; - - pPlugin->SetPixelDensity(NewPD); - } - - if (Mode & STM_CPUSpin) - { - // Simulate heavy CPU load within specified time limits - - if (CPUStartTimeInSeconds == 0.) - { - CPUStartTimeInSeconds = FPlatformTime::Seconds(); - } - else - { - const double Now = FPlatformTime::Seconds(); - if (Now - CPUStartTimeInSeconds >= CPUsTimeLimitInSeconds) - { - CPUStartTimeInSeconds = 0.; - Mode &= ~STM_CPUSpin; - UE_LOG(LogHMD, Log, TEXT("CPU stress test is finished")); - } - } - - const double StartSeconds = FPlatformTime::Seconds(); - int i, num = 1, primes = 0; - - bool bFinish = false; - while (!bFinish) - { - i = 2; - while (i <= num) - { - if (num % i == 0) - { - break; - } - i++; - const double NowSeconds = FPlatformTime::Seconds(); - if (NowSeconds - StartSeconds >= CPUSpinOffInSeconds) - { - bFinish = true; - } - } - if (i == num) - { - ++primes; - } - - ++num; - } - } - - if (Mode & STM_GPU) - { - // Simulate heavy CPU load within specified time limits - - if (GPUStartTimeInSeconds == 0.) - { - GPUStartTimeInSeconds = FPlatformTime::Seconds(); - } - else - { - const double Now = FPlatformTime::Seconds(); - if (Now - GPUStartTimeInSeconds >= GPUsTimeLimitInSeconds) - { - GPUStartTimeInSeconds = 0.; - Mode &= ~STM_GPU; - UE_LOG(LogHMD, Log, TEXT("GPU stress test is finished")); - } - } - } - } - - //------------------------------------------------------------------------------------------------- - // Console commands for managing the stress tester: - //------------------------------------------------------------------------------------------------- - - static void StressGPUCmdHandler(const TArray& Args, UWorld* World, FOutputDevice& Ar) - { - auto StressTester = FStressTester::Get(); - StressTester->SetStressMode(FStressTester::STM_GPU | StressTester->GetStressMode()); - if (Args.Num() > 0) - { - const int GpuMult = FCString::Atoi(*Args[0]); - StressTester->SetGPULoadMultiplier(GpuMult); - } - if (Args.Num() > 1) - { - const float GpuTimeLimit = FCString::Atof(*Args[1]); - StressTester->SetGPUsTimeLimitInSeconds(GpuTimeLimit); - } - } - - static FAutoConsoleCommand CStressGPUCmd( - TEXT("vr.oculus.Stress.GPU"), - *NSLOCTEXT("OculusRift", "CCommandText_StressGPU", "Initiates a GPU stress test.\n Usage: vr.oculus.Stress.GPU [LoadMultiplier [TimeLimit]]").ToString(), - FConsoleCommandWithWorldArgsAndOutputDeviceDelegate::CreateStatic(StressGPUCmdHandler)); - - static void StressCPUCmdHandler(const TArray& Args, UWorld* World, FOutputDevice& Ar) - { - auto StressTester = FStressTester::Get(); - StressTester->SetStressMode(FStressTester::STM_CPUSpin | StressTester->GetStressMode()); - if (Args.Num() > 0) - { - const float CpuLimit = FCString::Atof(*Args[0]); - StressTester->SetCPUSpinOffPerFrameInSeconds(CpuLimit); - } - if (Args.Num() > 1) - { - const float CpuTimeLimit = FCString::Atof(*Args[1]); - StressTester->SetCPUsTimeLimitInSeconds(CpuTimeLimit); - } - } - - static FAutoConsoleCommand CStressCPUCmd( - TEXT("vr.oculus.Stress.CPU"), - *NSLOCTEXT("OculusRift", "CCommandText_StressCPU", "Initiates a CPU stress test.\n Usage: vr.oculus.Stress.CPU [PerFrameTime [TotalTimeLimit]]").ToString(), - FConsoleCommandWithWorldArgsAndOutputDeviceDelegate::CreateStatic(StressCPUCmdHandler)); - - static void StressPDCmdHandler(const TArray& Args, UWorld* World, FOutputDevice& Ar) - { - auto StressTester = FStressTester::Get(); - StressTester->SetStressMode(FStressTester::STM_EyeBufferRealloc | StressTester->GetStressMode()); - if (Args.Num() > 0) - { - const float TimeLimit = FCString::Atof(*Args[0]); - StressTester->SetPDsTimeLimitInSeconds(TimeLimit); - } - } - - static FAutoConsoleCommand CStressPDCmd( - TEXT("vr.oculus.Stress.PD"), - *NSLOCTEXT("OculusRift", "CCommandText_StressPD", "Initiates a pixel density stress test wher pixel density is changed every frame for TotalTimeLimit seconds.\n Usage: vr.oculus.Stress.PD [TotalTimeLimit]").ToString(), - FConsoleCommandWithWorldArgsAndOutputDeviceDelegate::CreateStatic(StressPDCmdHandler)); - - static void StressResetCmdHandler(const TArray& Args, UWorld* World, FOutputDevice& Ar) - { - auto StressTester = FStressTester::Get(); - StressTester->SetStressMode(0); - } - - static FAutoConsoleCommand CStressResetCmd( - TEXT("vr.oculus.Stress.Reset"), - *NSLOCTEXT("OculusRift", "CCommandText_StressReset", "Resets the stress tester and stops all currently running stress tests.\n Usage: vr.oculus.Stress.Reset").ToString(), - FConsoleCommandWithWorldArgsAndOutputDeviceDelegate::CreateStatic(StressResetCmdHandler)); - -} // namespace OculusXRHMD - -#endif // #if OCULUS_STRESS_TESTS_ENABLED diff --git a/Plugins/MetaXR/Source/OculusXRHMD/Private/OculusXRHMD_StressTester.h b/Plugins/MetaXR/Source/OculusXRHMD/Private/OculusXRHMD_StressTester.h deleted file mode 100644 index 9726c8a..0000000 --- a/Plugins/MetaXR/Source/OculusXRHMD/Private/OculusXRHMD_StressTester.h +++ /dev/null @@ -1,91 +0,0 @@ -// @lint-ignore-every LICENSELINT -// Copyright Epic Games, Inc. All Rights Reserved. - -#pragma once -#include "OculusXRHMDPrivate.h" - -#define OCULUS_STRESS_TESTS_ENABLED (OCULUS_HMD_SUPPORTED_PLATFORMS && !UE_BUILD_SHIPPING && !PLATFORM_ANDROID) - -#if OCULUS_STRESS_TESTS_ENABLED - -namespace OculusXRHMD -{ - - //------------------------------------------------------------------------------------------------- - // FStressTester - //------------------------------------------------------------------------------------------------- - - class FStressTester - { - - public: - const float MinPixelDensity = 0.4f; - const float MaxPixelDensity = 2.0f; - - enum EStressTestMode - { - STM_None, - STM_EyeBufferRealloc = 0x01, - STM_CPUSpin = 0x02, - STM_GPU = 0x04, - - STM__All = ((STM_GPU << 1) - 1) - }; - - // multiple masks could be set, see EStressTestMode - void SetStressMode(uint32 InStressMask); - uint32 GetStressMode() const { return Mode; } - - // sets limits for CPUSpin mode, per frame - void SetCPUSpinOffPerFrameInSeconds(double InCPUSpinOffInSeconds) { CPUSpinOffInSeconds = InCPUSpinOffInSeconds; } - - // set GPU load multiplier - // if IterationsMultiplier is 0 then the multiplier will be randomly changed in 1..20 range. - // the bigger the multiplier the longer it takes GPU to draw the quad. - void SetGPULoadMultiplier(int IterationsMultiplier) { GPUIterationsMultiplier = IterationsMultiplier; } - - // sets time limit for STM_EyeBufferRealloc mode; 0 - unlimited - void SetPDsTimeLimitInSeconds(double InSeconds) { PDsTimeLimitInSeconds = InSeconds; } - - // sets time limit for STM_CPUSpin mode; 0 - unlimited - void SetCPUsTimeLimitInSeconds(double InSeconds) { CPUsTimeLimitInSeconds = InSeconds; } - - // sets time limit for STM_GPU mode; 0 - unlimited - void SetGPUsTimeLimitInSeconds(double InSeconds) { GPUsTimeLimitInSeconds = InSeconds; } - - static TSharedRef Get(); - - static void TickCPU_GameThread(class FOculusXRHMD* pPlugin) - { - CheckInGameThread(); - - if (SharedInstance.IsValid()) - { - SharedInstance->DoTickCPU_GameThread(pPlugin); - } - } - - protected: - void DoTickCPU_GameThread(class FOculusXRHMD* pPlugin); - - FStressTester(); - - uint32 Mode; // bit mask, see EStressTestMode - double CPUSpinOffInSeconds; // limit of additional CPU load per frame, STM_CPUSpin - double PDsTimeLimitInSeconds; // time limit for STM_EyeBufferRealloc mode; 0 - unlimited - double CPUsTimeLimitInSeconds; // time limit for STM_CPUSpin mode; 0 - unlimited - double GPUsTimeLimitInSeconds; // time limit for STM_GPU mode; 0 - unlimited - - // the higher multiplier the longer it takes GPU to draw - int GPUIterationsMultiplier; // if 0 - then it is dynamically changed. - - double CPUStartTimeInSeconds; - double GPUStartTimeInSeconds; - double PDStartTimeInSeconds; - - static TSharedPtr SharedInstance; - }; - -} // namespace OculusXRHMD - -#endif // #if OCULUS_STRESS_TESTS_ENABLED diff --git a/Plugins/MetaXR/Source/OculusXRHMD/Private/OculusXRHMD_VulkanExtensions.cpp b/Plugins/MetaXR/Source/OculusXRHMD/Private/OculusXRHMD_VulkanExtensions.cpp deleted file mode 100644 index 8d627c5..0000000 --- a/Plugins/MetaXR/Source/OculusXRHMD/Private/OculusXRHMD_VulkanExtensions.cpp +++ /dev/null @@ -1,120 +0,0 @@ -// @lint-ignore-every LICENSELINT -// Copyright Epic Games, Inc. All Rights Reserved. - -#include "OculusXRHMD_VulkanExtensions.h" - -#if OCULUS_HMD_SUPPORTED_PLATFORMS -#include "OculusXRHMDPrivateRHI.h" -#include "OculusXRHMDModule.h" - -namespace OculusXRHMD -{ - - //------------------------------------------------------------------------------------------------- - // FVulkanExtensions - //------------------------------------------------------------------------------------------------- - - bool FVulkanExtensions::GetVulkanInstanceExtensionsRequired(TArray& Out) - { -#if OCULUS_HMD_SUPPORTED_PLATFORMS_VULKAN - // TArray Properties = GetIVulkanDynamicRHI()->RHIGetAllInstanceExtensions(); - - TArray Extensions; - { - int32 ExtensionCount = 0; - FOculusXRHMDModule::GetPluginWrapper().GetInstanceExtensionsVk(nullptr, &ExtensionCount); - Extensions.SetNum(ExtensionCount); - FOculusXRHMDModule::GetPluginWrapper().GetInstanceExtensionsVk(Extensions.GetData(), &ExtensionCount); - } - - // int32 ExtensionsFound = 0; - for (int32 ExtensionIndex = 0; ExtensionIndex < Extensions.Num(); ExtensionIndex++) - { - // for (int32 PropertyIndex = 0; PropertyIndex < Properties.Num(); PropertyIndex++) - { - // const char* PropertyExtensionName = Properties[PropertyIndex].extensionName; - - // if (!FCStringAnsi::Strcmp(PropertyExtensionName, Extensions[ExtensionIndex])) - { - Out.Add(Extensions[ExtensionIndex]); - // ExtensionsFound++; - // break; - } - } - } - return true; - -// return ExtensionsFound == Extensions.Num(); -#endif - return true; - } - - bool FVulkanExtensions::GetVulkanDeviceExtensionsRequired(struct VkPhysicalDevice_T* pPhysicalDevice, TArray& Out) - { -#if OCULUS_HMD_SUPPORTED_PLATFORMS_VULKAN - // TArray Properties = GetIVulkanDynamicRHI()->RHIGetAllDeviceExtensions((VkPhysicalDevice)pPhysicalDevice); - - TArray Extensions; - { - int32 ExtensionCount = 0; - FOculusXRHMDModule::GetPluginWrapper().GetDeviceExtensionsVk(nullptr, &ExtensionCount); - Extensions.SetNum(ExtensionCount); - FOculusXRHMDModule::GetPluginWrapper().GetDeviceExtensionsVk(Extensions.GetData(), &ExtensionCount); - } - - // int32 ExtensionsFound = 0; - for (int32 ExtensionIndex = 0; ExtensionIndex < Extensions.Num(); ExtensionIndex++) - { - // for (int32 PropertyIndex = 0; PropertyIndex < Properties.Num(); PropertyIndex++) - { - // const char* PropertyExtensionName = Properties[PropertyIndex].extensionName; - - // if (!FCStringAnsi::Strcmp(PropertyExtensionName, Extensions[ExtensionIndex])) - { - Out.Add(Extensions[ExtensionIndex]); - // ExtensionsFound++; - // break; - } - } - } - return true; - - // return ExtensionsFound == Extensions.Num(); -#endif - return true; - } - -#if WITH_EDITOR - bool FEditorVulkanExtensions::GetVulkanInstanceExtensionsRequired(TArray& Out) - { -#if OCULUS_HMD_SUPPORTED_PLATFORMS_VULKAN && PLATFORM_WINDOWS - Out.Append({ "VK_KHR_surface", - "VK_KHR_external_memory_capabilities", - "VK_KHR_win32_surface", - "VK_KHR_external_fence_capabilities", - "VK_KHR_external_semaphore_capabilities", - "VK_KHR_get_physical_device_properties2" }); -#endif - return true; - } - - bool FEditorVulkanExtensions::GetVulkanDeviceExtensionsRequired(struct VkPhysicalDevice_T* pPhysicalDevice, TArray& Out) - { -#if OCULUS_HMD_SUPPORTED_PLATFORMS_VULKAN && PLATFORM_WINDOWS - Out.Append({ "VK_KHR_swapchain", - "VK_KHR_external_memory", - "VK_KHR_external_memory_win32", - "VK_KHR_external_fence", - "VK_KHR_external_fence_win32", - "VK_KHR_external_semaphore", - "VK_KHR_external_semaphore_win32", - "VK_KHR_get_memory_requirements2", - "VK_KHR_dedicated_allocation" }); -#endif - return true; - } -#endif - -} // namespace OculusXRHMD - -#endif // OCULUS_HMD_SUPPORTED_PLATFORMS diff --git a/Plugins/MetaXR/Source/OculusXRHMD/Private/OculusXRHMD_VulkanExtensions.h b/Plugins/MetaXR/Source/OculusXRHMD/Private/OculusXRHMD_VulkanExtensions.h deleted file mode 100644 index 87a0c6e..0000000 --- a/Plugins/MetaXR/Source/OculusXRHMD/Private/OculusXRHMD_VulkanExtensions.h +++ /dev/null @@ -1,43 +0,0 @@ -// @lint-ignore-every LICENSELINT -// Copyright Epic Games, Inc. All Rights Reserved. - -#pragma once -#include "OculusXRHMDPrivate.h" -#include "IHeadMountedDisplayVulkanExtensions.h" - -#if OCULUS_HMD_SUPPORTED_PLATFORMS - -namespace OculusXRHMD -{ - - //------------------------------------------------------------------------------------------------- - // FVulkanExtensions - //------------------------------------------------------------------------------------------------- - - class FVulkanExtensions : public IHeadMountedDisplayVulkanExtensions, public TSharedFromThis - { - public: - FVulkanExtensions() {} - virtual ~FVulkanExtensions() {} - - // IHeadMountedDisplayVulkanExtensions - virtual bool GetVulkanInstanceExtensionsRequired(TArray& Out) override; - virtual bool GetVulkanDeviceExtensionsRequired(struct VkPhysicalDevice_T* pPhysicalDevice, TArray& Out) override; - }; - -#if WITH_EDITOR - class FEditorVulkanExtensions : public IHeadMountedDisplayVulkanExtensions, public TSharedFromThis - { - public: - FEditorVulkanExtensions() {} - virtual ~FEditorVulkanExtensions() {} - - // IHeadMountedDisplayVulkanExtensions - virtual bool GetVulkanInstanceExtensionsRequired(TArray& Out) override; - virtual bool GetVulkanDeviceExtensionsRequired(struct VkPhysicalDevice_T* pPhysicalDevice, TArray& Out) override; - }; -#endif - -} // namespace OculusXRHMD - -#endif // OCULUS_HMD_SUPPORTED_PLATFORMS diff --git a/Plugins/MetaXR/Source/OculusXRHMD/Private/OculusXRMultiPlayerTestingSubsystem.cpp b/Plugins/MetaXR/Source/OculusXRHMD/Private/OculusXRMultiPlayerTestingSubsystem.cpp deleted file mode 100644 index 7b35216..0000000 --- a/Plugins/MetaXR/Source/OculusXRHMD/Private/OculusXRMultiPlayerTestingSubsystem.cpp +++ /dev/null @@ -1,379 +0,0 @@ -// Copyright (c) Meta Platforms, Inc. and affiliates. - -#include "OculusXRMultiPlayerTestingSubsystem.h" - -#include "IHeadMountedDisplay.h" -#include "IXRTrackingSystem.h" -#include "Widgets/SViewport.h" -#include "Slate/SceneViewport.h" - -#include "OculusXRHMDModule.h" -#include "OculusXRHMDRuntimeSettings.h" -#include "OculusXRHMD.h" - -#if WITH_EDITOR -#include "Editor/UnrealEd/Classes/Editor/EditorEngine.h" -#include "Settings/LevelEditorPlaySettings.h" -#endif - -#if PLATFORM_WINDOWS -#include "Windows/WindowsPlatformProcess.h" -#include -#endif - -/** - * Initialize the subsystem. USubsystem override - */ -void UOculusXRMultiPlayerTestingSubsystem::Initialize(FSubsystemCollectionBase& Collection) -{ - Super::Initialize(Collection); -} - -/** - * De-initializes the subsystem. USubsystem override - */ -void UOculusXRMultiPlayerTestingSubsystem::Deinitialize() -{ - Super::Deinitialize(); -} - -ETickableTickType UOculusXRMultiPlayerTestingSubsystem::GetTickableTickType() const -{ - return IsMultiPlayerTestingSupported() ? ETickableTickType::Always : ETickableTickType::Never; -} - -bool UOculusXRMultiPlayerTestingSubsystem::IsAllowedToTick() const -{ - return IsMultiPlayerTestingSupported(); -} - -void UOculusXRMultiPlayerTestingSubsystem::Tick(float) -{ -#if PLATFORM_WINDOWS && WITH_EDITOR - bool bSingleProcessMode = true; - if (!IsMultiPlayerTestingEnabled(bSingleProcessMode)) - { - return; - } - - if (GEngine) - { - const ULevelEditorPlaySettings* PlayInSettings = GetDefault(); - bool RunUnderOneProcess = true; - PlayInSettings->GetRunUnderOneProcess(RunUnderOneProcess); - if (GetMutableDefault()->bSetActivePIEToPrimary && RunUnderOneProcess) - { - SwitchPrimaryPIE_SingleProcess(); - } - } -#endif -} - -bool UOculusXRMultiPlayerTestingSubsystem::IsMultiPlayerTestingSupported() const -{ -#if PLATFORM_WINDOWS && WITH_EDITOR - return true; -#else - return false; -#endif -} - -#if PLATFORM_WINDOWS -bool UOculusXRMultiPlayerTestingSubsystem::IsMultiPlayerTestingEnabled(bool& bSingleProcessMode) -{ - bSingleProcessMode = false; - NumClients = 1; - // ULevelEditorPlaySettings of 2nd+ player of MultipleProcess mode does NOT have correct GetRunUnderOneProcess() data. - // Let's use InInstanceNum to figure out how many clients are enabled already. - int InInstanceNum = 0; - FParse::Value(FCommandLine::Get(), TEXT("InInstanceNum="), InInstanceNum); - if (InInstanceNum) - { - bSingleProcessMode = false; - NumClients = InInstanceNum + 1; - } -#if WITH_EDITOR - else - { - // SingleProcess mode OR 1st player of MultipleProcess mode are kicked off from editor - const ULevelEditorPlaySettings* PlayInSettings = GetDefault(); - if (PlayInSettings) - { - PlayInSettings->GetPlayNumberOfClients(NumClients); - PlayInSettings->GetRunUnderOneProcess(bSingleProcessMode); - } - } -#endif // WITH_EDITOR - -#ifdef WITH_OCULUS_BRANCH - return (NumClients > 1 - && GEngine - && GEngine->XRSystem.IsValid() - && GEngine->XRSystem->GetStereoRenderingDevice().IsValid() - && GEngine->XRSystem->GetStereoRenderingDevice()->IsStereoEnabled()); -#else - return (NumClients > 1 && OculusXRHMD::FOculusXRHMD::GetOculusXRHMD() && OculusXRHMD::FOculusXRHMD::GetOculusXRHMD()->IsStereoEnabled()); -#endif -} - -static void SwitchPrimaryPIE(const TArray& Args, UWorld*, FOutputDevice& Ar) -{ - if (!GEngine || !GEngine->XRSystem.IsValid()) - { - Ar.Logf(TEXT("XRSystem must be valid to switch PrimaryPIE!")); - return; - } - - if (!GetMutableDefault()->bSetCVarPIEToPrimary) - { - Ar.Logf(TEXT("Please enable \"Set CVar PIE To Primary\" in MetaXRPlugin settings!")); - return; - } - - if (Args.Num()) - { - if (UOculusXRMultiPlayerTestingSubsystem* MPTSSubsystem = GEngine ? GEngine->GetEngineSubsystem() : nullptr) - { - MPTSSubsystem->SwitchPrimaryPIE(nullptr, FCString::Atoi(*Args[0])); - } - } - else - { - Ar.Logf(TEXT("Invalid PrimaryPIEIndex!")); - } -} - -const int DefaultNextProcIndex = -1; -static FAutoConsoleCommand CSwitchHMDCmd( - TEXT("vr.PrimaryPIEIndex"), - TEXT("Set primary PIE index on the fly. Setting it to -1 is to set the index to next PIE window. If RunUnderOneProcess is enabled, this index can be set to any PIE index."), - FConsoleCommandWithWorldArgsAndOutputDeviceDelegate::CreateStatic(SwitchPrimaryPIE)); - -void UOculusXRMultiPlayerTestingSubsystem::SwitchPrimaryPIE(UGameViewportClient* InViewport, TOptional PrimaryPIEIndex) -{ - bool bSingleProcessMode = true; - if (!IsMultiPlayerTestingEnabled(bSingleProcessMode)) - { - return; - } - - if (!bSingleProcessMode) - { - check(PrimaryPIEIndex.IsSet()); - SwitchPrimaryPIE_MultiProcess(PrimaryPIEIndex.GetValue()); - } -#if WITH_EDITOR - else - { - SwitchPrimaryPIE_SingleProcess(InViewport, PrimaryPIEIndex); - } -#endif -} - -void UOculusXRMultiPlayerTestingSubsystem::GetUnrealEditorProcs(TArray& ProcIds) -{ - FString ProcNameWithExtension = "UnrealEditor.exe"; - HANDLE SnapShot = ::CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0); - if (SnapShot != INVALID_HANDLE_VALUE) - { - PROCESSENTRY32 Entry; - Entry.dwSize = sizeof(PROCESSENTRY32); - - const int ProjectNameMaxLength = 512; - if (::Process32First(SnapShot, &Entry)) - { - do - { - // find unreal editor processes - if (FCString::Stricmp(*ProcNameWithExtension, Entry.szExeFile) == 0) - { - int32 ProcID = Entry.th32ProcessID; - HWND HWnd = FWindowsPlatformMisc::GetTopLevelWindowHandle(ProcID); - if (HWnd) - { - const TCHAR* ProjectName = FApp::GetProjectName(); - WCHAR Buffer[ProjectNameMaxLength]; - GetWindowText(HWnd, Buffer, ProjectNameMaxLength); - size_t ProjectNameLen = _tcslen(ProjectName); - if (_tcsnccmp(ProjectName, Buffer, ProjectNameLen) == 0) - { - ProcIds.Add(ProcID); - } - } - } - } - while (::Process32Next(SnapShot, &Entry)); - } - ::CloseHandle(SnapShot); - } - ProcIds.Sort(TLess()); -} - -// Activate PIE window across processes. -void UOculusXRMultiPlayerTestingSubsystem::SwitchPrimaryPIE_MultiProcess(int PrimaryPIEIndex) -{ - uint32 CurProcId = FPlatformProcess::GetCurrentProcessId(); - uint32 DestProcId = -1; - TArray ProcIds; - GetUnrealEditorProcs(ProcIds); - // For now, PrimaryPIEIndex must be -1 which means we always switch to next player. - // The reason is users don't know each process' index and cannot easily set it via vr.PrimaryPIEIndex even if we sort processIDs first. - if (PrimaryPIEIndex == DefaultNextProcIndex) - { // find next process's Id - int32 CurProcIdx = ProcIds.Find(CurProcId); - check(CurProcIdx != INDEX_NONE); - int32 NextProcIdx = (CurProcIdx + 1) % ProcIds.Num(); - DestProcId = ProcIds[NextProcIdx]; - } - else - { - UE_LOG(LogHMD, Warning, TEXT("vr.PrimaryPIEIndex must be -1 if RunUnderOneProcess is not set.")); - return; - } - - if (DestProcId == -1) - { - UE_LOG(LogHMD, Warning, TEXT("Cannot find vr.PrimaryPIEIndex: %d"), PrimaryPIEIndex); - return; - } - else - { - UE_LOG(LogHMD, Log, TEXT("SwitchPrimaryPIE from ProcID: %d to: %d"), CurProcId, DestProcId); - HWND MainWindowHandle = FWindowsPlatformMisc::GetTopLevelWindowHandle(DestProcId); - ::SwitchToThisWindow(MainWindowHandle, true); - } -} - -#if WITH_EDITOR -void UOculusXRMultiPlayerTestingSubsystem::SwitchPrimaryPIE_SingleProcess(UGameViewportClient* InViewport, TOptional PrimaryPIEIndex) -{ - if (InViewport && PrimaryPIEIndex.IsSet()) - { - UE_LOG(LogHMD, Warning, TEXT("InViewport and PrimaryPIEIndex should not be set at the same time.")); - return; - } - - if (!GEditor) - { - UE_LOG(LogHMD, Warning, TEXT("SwitchPrimaryPIE_SingleProcess is only supported in editor.")); - return; - } - - if (PrimaryPIEIndex == DefaultNextProcIndex) - { // Activate the world next to the current primary one - for (const FWorldContext& WorldContext : GEditor->GetWorldContexts()) - { - if (WorldContext.bIsPrimaryPIEInstance) - { - PrimaryPIEIndex = (WorldContext.PIEInstance + 1) % NumClients; - } - } - } - - FWorldContext* OldPrimaryWorld = nullptr; - FWorldContext* NewPrimaryWorld = nullptr; - for (const FWorldContext& WorldContext : GEditor->GetWorldContexts()) - { - if (WorldContext.bIsPrimaryPIEInstance) - { - OldPrimaryWorld = GEditor->GetWorldContextFromWorld(WorldContext.World()); - } - else if (WorldContext.GameViewport == InViewport || (PrimaryPIEIndex.IsSet() && WorldContext.PIEInstance == PrimaryPIEIndex.GetValue())) - { - NewPrimaryWorld = GEditor->GetWorldContextFromWorld(WorldContext.World()); - } - } - - if (OldPrimaryWorld && NewPrimaryWorld) - { - SwitchPrimaryPIE(OldPrimaryWorld, NewPrimaryWorld); - } - else - { - UE_LOG(LogHMD, Warning, TEXT("Failed to switch primary PIE.")); - } -} - -void UOculusXRMultiPlayerTestingSubsystem::SwitchPrimaryPIE_SingleProcess() -{ - NumClients = 0; - const ULevelEditorPlaySettings* PlayInSettings = GetDefault(); - if (PlayInSettings) - { - PlayInSettings->GetPlayNumberOfClients(NumClients); - } - - if (!(GEditor && GEditor->GetPlayInEditorSessionInfo().IsSet() && GEditor->GetPlayInEditorSessionInfo()->NumClientInstancesCreated == NumClients)) - { - return; - } - - FWorldContext* OldPrimaryWorld = nullptr; - FWorldContext* NewPrimaryWorld = nullptr; - for (const FWorldContext& WorldContext : GEditor->GetWorldContexts()) - { - if (!WorldContext.GameViewport || !WorldContext.GameViewport->GetGameViewport()) - { - UE_LOG(LogHMD, Warning, TEXT("No GameViewport or SceneViewPort for the current world %d."), WorldContext.PIEInstance); - continue; - } - const FSceneViewport* SceneViewPort = WorldContext.GameViewport->GetGameViewport(); - if (WorldContext.bIsPrimaryPIEInstance && !SceneViewPort->HasFocus()) - { - OldPrimaryWorld = GEditor->GetWorldContextFromWorld(WorldContext.World()); - } - else if (!WorldContext.bIsPrimaryPIEInstance && SceneViewPort->HasFocus()) - { - NewPrimaryWorld = GEditor->GetWorldContextFromWorld(WorldContext.World()); - } - } - - if (OldPrimaryWorld && NewPrimaryWorld) - { - UE_LOG(LogHMD, Log, TEXT("SwitchPrimaryPIE from %d to %d."), OldPrimaryWorld->PIEInstance, NewPrimaryWorld->PIEInstance); - SwitchPrimaryPIE(OldPrimaryWorld, NewPrimaryWorld); - } -} - -void UOculusXRMultiPlayerTestingSubsystem::SwitchPrimaryPIE(FWorldContext* OldPrimaryWorld, FWorldContext* NewPrimaryWorld) -{ - auto TogglePrimaryWorld = [](FWorldContext* PrimaryWorld, bool bEnable) { - check(PrimaryWorld != nullptr); - - FSceneViewport* SceneViewPort = PrimaryWorld->GameViewport->GetGameViewport(); - - PrimaryWorld->bIsPrimaryPIEInstance = bEnable; - SceneViewPort->GetViewportWidget().Pin()->EnableStereoRendering(bEnable); - SceneViewPort->GetViewportWidget().Pin()->SetRenderDirectlyToWindow(bEnable); - SceneViewPort->SetPlayInEditorGetsMouseControl(bEnable); - SceneViewPort->SetViewportSize(SceneViewPort->GetSizeXY().X, SceneViewPort->GetSizeXY().Y); - if (bEnable) - { - SceneViewPort->FindWindow()->GetNativeWindow()->SetWindowFocus(); - } - else - { - SceneViewPort->FindWindow()->SetViewportSizeDrivenByWindow(true); - } - }; - - if (NewPrimaryWorld->GameViewport && NewPrimaryWorld->GameViewport->GetGameViewport() && OldPrimaryWorld->GameViewport && OldPrimaryWorld->GameViewport->GetGameViewport()) - { - TogglePrimaryWorld(NewPrimaryWorld, true); - TogglePrimaryWorld(OldPrimaryWorld, false); - - // ATM, in Vanilla/Stock UE, no MultiPlayer support in OpenXR plugin. - // TODO: Remove below branch checking and refactor FOculusXRHMD to be the same with FOpenXRHMD once IOpenXRExtensionPlugin::ReCalcPose(...) is upstreamed. -#ifdef WITH_OCULUS_BRANCH - OculusXR::FMultiPlayerStateExtensionPlugin& MPPlugin = FOculusXRHMDModule::Get().GetExtensionPluginManager().GetMultiPlayerStateExtensionPlugin(); - MPPlugin.SwitchPrimaryPIE(NewPrimaryWorld->PIEInstance); -#endif // WITH_OCULUS_BRANCH - - if (OculusXRHMD::FOculusXRHMD::GetOculusXRHMD()) - { - OculusXRHMD::FOculusXRHMD::GetOculusXRHMD()->SwitchPrimaryPIE(NewPrimaryWorld->PIEInstance); - } - } -} -#endif // WITH_EDITOR -#endif // PLATFORM_WINDOWS diff --git a/Plugins/MetaXR/Source/OculusXRHMD/Private/OculusXRPassthroughLayerShapes.cpp b/Plugins/MetaXR/Source/OculusXRHMD/Private/OculusXRPassthroughLayerShapes.cpp deleted file mode 100644 index 697a9d2..0000000 --- a/Plugins/MetaXR/Source/OculusXRHMD/Private/OculusXRPassthroughLayerShapes.cpp +++ /dev/null @@ -1,158 +0,0 @@ -// Copyright (c) Meta Platforms, Inc. and affiliates. - -#include "OculusXRPassthroughLayerShapes.h" - -#include "OculusXRHMDPrivate.h" -#include "Curves/CurveLinearColor.h" -#include "OculusXRPluginWrapper.h" -#include "OpenXR/OculusXROpenXRUtilities.h" - -const FName FReconstructedLayer::ShapeName = FName("ReconstructedLayer"); -const FName FUserDefinedLayer::ShapeName = FName("UserDefinedLayer"); - -FColorLutDesc::FColorLutDesc() - : Weight(0) - , ColorLuts{} -{ -} - -FColorLutDesc::FColorLutDesc(const TArray& InColorLuts, float InWeight) - : Weight(InWeight) - , ColorLuts(InColorLuts) -{ -} - -FEdgeStyleParameters::FEdgeStyleParameters() - : bEnableEdgeColor(false) - , bEnableColorMap(false) - , bUseColorLuts(false) - , TextureOpacityFactor(1.0f) - , EdgeColor{} - , ColorMapType{} - , ColorMapData{} - , ColorLutDesc{} { - - }; - -FEdgeStyleParameters::FEdgeStyleParameters( - bool bEnableEdgeColor, - bool bEnableColorMap, - float TextureOpacityFactor, - float Brightness, - float Contrast, - float Posterize, - float Saturation, - FLinearColor EdgeColor, - FLinearColor ColorScale, - FLinearColor ColorOffset, - EOculusXRColorMapType InColorMapType, - const TArray& InColorMapGradient, - const FColorLutDesc& InLutDesc) - : bEnableEdgeColor(bEnableEdgeColor) - , bEnableColorMap(bEnableColorMap) - , TextureOpacityFactor(TextureOpacityFactor) - , Brightness(Brightness) - , Contrast(Contrast) - , Posterize(Posterize) - , Saturation(Saturation) - , EdgeColor(EdgeColor) - , ColorScale(ColorScale) - , ColorOffset(ColorOffset) - , ColorMapType(InColorMapType) - , ColorLutDesc(InLutDesc) -{ - bUseColorLuts = (InColorMapType == ColorMapType_ColorLut && InLutDesc.ColorLuts.Num() == 1) - || (InColorMapType == ColorMapType_ColorLut_Interpolated && InLutDesc.ColorLuts.Num() == 2); - if ((InColorMapType == ColorMapType_ColorLut || InColorMapType == ColorMapType_ColorLut_Interpolated) - && !bUseColorLuts) - { - ColorMapType = ColorMapType_None; - } - ColorMapData = GenerateColorMapData(InColorMapType, InColorMapGradient); -}; - -TArray FEdgeStyleParameters::GenerateColorMapData(EOculusXRColorMapType InColorMapType, const TArray& InColorMapGradient) -{ - switch (InColorMapType) - { - case ColorMapType_GrayscaleToColor: - { - TArray NewColorMapData = GenerateMonoBrightnessContrastPosterizeMap(); - return GenerateMonoToRGBA(InColorMapGradient, NewColorMapData); - } - case ColorMapType_Grayscale: - return GenerateMonoBrightnessContrastPosterizeMap(); - case ColorMapType_ColorAdjustment: - return GenerateBrightnessContrastSaturationColorMap(); - default: - return TArray(); - } -} - -TArray FEdgeStyleParameters::GenerateMonoToRGBA(const TArray& InColorMapGradient, const TArray& InColorMapData) -{ - TArray NewColorMapData; - FInterpCurveLinearColor InterpCurve; - const uint32 TotalEntries = 256; - - for (int32 Index = 0; Index < InColorMapGradient.Num(); ++Index) - { - InterpCurve.AddPoint(Index, (InColorMapGradient[Index] * ColorScale) + ColorOffset); - } - - // XrColor4f and ovrpColorf need to be same size, as either will be sent to the OVR plugin or OpenXR implementation - static_assert(sizeof(XrColor4f) == sizeof(ovrpColorf)); - - const int32 ColorSize = sizeof(ovrpColorf); - NewColorMapData.SetNum(TotalEntries * ColorSize); - - uint8* Dest = NewColorMapData.GetData(); - for (int32 Index = 0; Index < TotalEntries; ++Index) - { - const ovrpColorf Color = OculusXRHMD::ToOvrpColorf(InterpCurve.Eval(InColorMapData[Index])); - FMemory::Memcpy(Dest, &Color, sizeof(Color)); - Dest += ColorSize; - } - return NewColorMapData; -} - -TArray FEdgeStyleParameters::GenerateMonoBrightnessContrastPosterizeMap() -{ - TArray NewColorMapData; - const int32 TotalEntries = 256; - NewColorMapData.SetNum(TotalEntries * sizeof(uint8)); - for (int32 Index = 0; Index < TotalEntries; ++Index) - { - float Alpha = ((float)Index / TotalEntries); - float ContrastFactor = Contrast + 1.0; - Alpha = (Alpha - 0.5) * ContrastFactor + 0.5 + Brightness; - - if (Posterize > 0.0f) - { - const float PosterizationBase = 50.0f; - float FinalPosterize = (FMath::Pow(PosterizationBase, Posterize) - 1.0) / (PosterizationBase - 1.0); - Alpha = FMath::RoundToFloat(Alpha / FinalPosterize) * FinalPosterize; - } - - NewColorMapData[Index] = (uint8)(FMath::Min(FMath::Max(Alpha, 0.0f), 1.0f) * 255.0f); - } - return NewColorMapData; -} - -TArray FEdgeStyleParameters::GenerateBrightnessContrastSaturationColorMap() -{ - TArray NewColorMapData; - NewColorMapData.SetNum(3 * sizeof(float)); - float newB = Brightness * 100.0f; - float newC = Contrast + 1.0f; - float newS = Saturation + 1.0f; - - uint8* Dest = NewColorMapData.GetData(); - FMemory::Memcpy(Dest, &newB, sizeof(float)); - Dest += sizeof(float); - FMemory::Memcpy(Dest, &newC, sizeof(float)); - Dest += sizeof(float); - FMemory::Memcpy(Dest, &newS, sizeof(float)); - - return NewColorMapData; -} diff --git a/Plugins/MetaXR/Source/OculusXRHMD/Private/OculusXRPluginWrapper.cpp b/Plugins/MetaXR/Source/OculusXRHMD/Private/OculusXRPluginWrapper.cpp deleted file mode 100644 index 5fcd327..0000000 --- a/Plugins/MetaXR/Source/OculusXRHMD/Private/OculusXRPluginWrapper.cpp +++ /dev/null @@ -1,503 +0,0 @@ -// @lint-ignore-every LICENSELINT -// Copyright Epic Games, Inc. All Rights Reserved. - -#include "OculusXRPluginWrapper.h" -#include "OculusXRHMDModule.h" - -#if PLATFORM_ANDROID -#include -#define MIN_SDK_VERSION 29 -#endif - -DEFINE_LOG_CATEGORY(LogOculusPluginWrapper); - -static void* LoadEntryPoint(void* handle, const char* EntryPointName); - -bool OculusPluginWrapper::InitializeOculusPluginWrapper(OculusPluginWrapper* wrapper) -{ - if (wrapper->IsInitialized()) - { - UE_LOG(LogOculusPluginWrapper, Warning, TEXT("wrapper already initialized")); - return true; - } - -#if OCULUS_HMD_SUPPORTED_PLATFORMS - void* LibraryHandle = nullptr; - -#if PLATFORM_ANDROID - const bool VersionValid = FAndroidMisc::GetAndroidBuildVersion() >= MIN_SDK_VERSION; -#else - const bool VersionValid = true; -#endif - - if (VersionValid) - { - LibraryHandle = FOculusXRHMDModule::GetOVRPluginHandle(); - if (LibraryHandle == nullptr) - { - UE_LOG(LogOculusPluginWrapper, Warning, TEXT("GetOVRPluginHandle() returned NULL")); - return false; - } - } - else - { - return false; - } -#else - return false; -#endif - - struct OculusEntryPoint - { - const char* EntryPointName; - void** EntryPointPtr; - }; - -#define OCULUS_BIND_ENTRY_POINT(Func) \ - { \ - "ovrp_" #Func, (void**)&wrapper->Func \ - } - - OculusEntryPoint entryPointArray[] = { - // OVR_Plugin.h - - OCULUS_BIND_ENTRY_POINT(PreInitialize5), - OCULUS_BIND_ENTRY_POINT(GetInitialized), - OCULUS_BIND_ENTRY_POINT(Initialize7), - OCULUS_BIND_ENTRY_POINT(Shutdown2), - OCULUS_BIND_ENTRY_POINT(SetLogCallback2), - OCULUS_BIND_ENTRY_POINT(GetVersion2), - OCULUS_BIND_ENTRY_POINT(GetNativeSDKVersion2), - OCULUS_BIND_ENTRY_POINT(GetNativeSDKPointer2), - OCULUS_BIND_ENTRY_POINT(GetNativeOpenXRHandles), - OCULUS_BIND_ENTRY_POINT(GetDisplayAdapterId2), - OCULUS_BIND_ENTRY_POINT(GetAudioOutId2), - OCULUS_BIND_ENTRY_POINT(GetAudioOutDeviceId2), - OCULUS_BIND_ENTRY_POINT(GetAudioInId2), - OCULUS_BIND_ENTRY_POINT(GetAudioInDeviceId2), - OCULUS_BIND_ENTRY_POINT(GetInstanceExtensionsVk), - OCULUS_BIND_ENTRY_POINT(GetDeviceExtensionsVk), - OCULUS_BIND_ENTRY_POINT(SetupDistortionWindow3), - OCULUS_BIND_ENTRY_POINT(DestroyDistortionWindow2), - OCULUS_BIND_ENTRY_POINT(GetDominantHand), - OCULUS_BIND_ENTRY_POINT(SetRemoteHandedness), - OCULUS_BIND_ENTRY_POINT(SetColorScaleAndOffset), - OCULUS_BIND_ENTRY_POINT(SetupLayer), - OCULUS_BIND_ENTRY_POINT(SetupLayerDepth), - OCULUS_BIND_ENTRY_POINT(SetEyeFovPremultipliedAlphaMode), - OCULUS_BIND_ENTRY_POINT(GetEyeFovLayerId), - OCULUS_BIND_ENTRY_POINT(GetLayerTextureStageCount), - OCULUS_BIND_ENTRY_POINT(GetLayerTexture2), - OCULUS_BIND_ENTRY_POINT(GetLayerTextureFoveation), - OCULUS_BIND_ENTRY_POINT(GetLayerOcclusionMesh), - OCULUS_BIND_ENTRY_POINT(GetLayerAndroidSurfaceObject), - OCULUS_BIND_ENTRY_POINT(GetLayerTextureSpaceWarp), - OCULUS_BIND_ENTRY_POINT(CalculateEyeLayerDesc3), - OCULUS_BIND_ENTRY_POINT(DestroyLayer), - OCULUS_BIND_ENTRY_POINT(CalculateLayerDesc), - OCULUS_BIND_ENTRY_POINT(CalculateEyeLayerDesc2), - OCULUS_BIND_ENTRY_POINT(CalculateEyePreviewRect), - OCULUS_BIND_ENTRY_POINT(SetupMirrorTexture2), - OCULUS_BIND_ENTRY_POINT(DestroyMirrorTexture2), - OCULUS_BIND_ENTRY_POINT(GetAdaptiveGpuPerformanceScale2), - OCULUS_BIND_ENTRY_POINT(GetAppCpuStartToGpuEndTime2), - OCULUS_BIND_ENTRY_POINT(GetEyePixelsPerTanAngleAtCenter2), - OCULUS_BIND_ENTRY_POINT(GetHmdToEyeOffset2), - OCULUS_BIND_ENTRY_POINT(Update3), - OCULUS_BIND_ENTRY_POINT(WaitToBeginFrame), - OCULUS_BIND_ENTRY_POINT(BeginFrame4), - OCULUS_BIND_ENTRY_POINT(UpdateFoveation), - OCULUS_BIND_ENTRY_POINT(EndFrame4), - OCULUS_BIND_ENTRY_POINT(GetTrackingOrientationSupported2), - OCULUS_BIND_ENTRY_POINT(GetTrackingOrientationEnabled2), - OCULUS_BIND_ENTRY_POINT(SetTrackingOrientationEnabled2), - OCULUS_BIND_ENTRY_POINT(GetTrackingPositionSupported2), - OCULUS_BIND_ENTRY_POINT(GetTrackingPositionEnabled2), - OCULUS_BIND_ENTRY_POINT(SetTrackingPositionEnabled2), - OCULUS_BIND_ENTRY_POINT(GetTrackingPoseEnabledForInvisibleSession), - OCULUS_BIND_ENTRY_POINT(SetTrackingPoseEnabledForInvisibleSession), - OCULUS_BIND_ENTRY_POINT(GetTrackingIPDEnabled2), - OCULUS_BIND_ENTRY_POINT(SetTrackingIPDEnabled2), - OCULUS_BIND_ENTRY_POINT(GetTrackingCalibratedOrigin2), - OCULUS_BIND_ENTRY_POINT(SetTrackingCalibratedOrigin2), - OCULUS_BIND_ENTRY_POINT(GetTrackingOriginType2), - OCULUS_BIND_ENTRY_POINT(SetTrackingOriginType2), - OCULUS_BIND_ENTRY_POINT(RecenterTrackingOrigin2), - OCULUS_BIND_ENTRY_POINT(GetNodePresent2), - OCULUS_BIND_ENTRY_POINT(GetNodeOrientationTracked2), - OCULUS_BIND_ENTRY_POINT(GetNodeOrientationValid), - OCULUS_BIND_ENTRY_POINT(GetNodePositionTracked2), - OCULUS_BIND_ENTRY_POINT(GetNodePositionValid), - OCULUS_BIND_ENTRY_POINT(SetNodePositionTracked2), - OCULUS_BIND_ENTRY_POINT(GetNodePoseState3), - OCULUS_BIND_ENTRY_POINT(GetNodePoseStateRaw), - OCULUS_BIND_ENTRY_POINT(GetNodeFrustum2), - OCULUS_BIND_ENTRY_POINT(SetHeadPoseModifier), - OCULUS_BIND_ENTRY_POINT(GetHeadPoseModifier), - OCULUS_BIND_ENTRY_POINT(GetControllerState4), - OCULUS_BIND_ENTRY_POINT(GetControllerState5), - OCULUS_BIND_ENTRY_POINT(GetControllerState6), - OCULUS_BIND_ENTRY_POINT(GetActiveController2), - OCULUS_BIND_ENTRY_POINT(GetConnectedControllers2), - OCULUS_BIND_ENTRY_POINT(SetControllerVibration2), - OCULUS_BIND_ENTRY_POINT(SetControllerLocalizedVibration), - OCULUS_BIND_ENTRY_POINT(SetControllerHapticsAmplitudeEnvelope), - OCULUS_BIND_ENTRY_POINT(SetControllerHapticsPcm), - OCULUS_BIND_ENTRY_POINT(GetControllerHapticsDesc2), - OCULUS_BIND_ENTRY_POINT(GetControllerHapticsState2), - OCULUS_BIND_ENTRY_POINT(GetControllerSampleRateHz), - OCULUS_BIND_ENTRY_POINT(SetControllerHaptics2), - OCULUS_BIND_ENTRY_POINT(SetSuggestedCpuPerformanceLevel), - OCULUS_BIND_ENTRY_POINT(GetSuggestedCpuPerformanceLevel), - OCULUS_BIND_ENTRY_POINT(SetSuggestedGpuPerformanceLevel), - OCULUS_BIND_ENTRY_POINT(GetSuggestedGpuPerformanceLevel), - OCULUS_BIND_ENTRY_POINT(GetAppCPUPriority2), - OCULUS_BIND_ENTRY_POINT(SetAppCPUPriority2), - OCULUS_BIND_ENTRY_POINT(GetSystemPowerSavingMode2), - OCULUS_BIND_ENTRY_POINT(GetSystemDisplayFrequency2), - OCULUS_BIND_ENTRY_POINT(GetSystemDisplayAvailableFrequencies), - OCULUS_BIND_ENTRY_POINT(SetSystemDisplayFrequency), - OCULUS_BIND_ENTRY_POINT(GetSystemVSyncCount2), - OCULUS_BIND_ENTRY_POINT(SetSystemVSyncCount2), - OCULUS_BIND_ENTRY_POINT(GetSystemProductName2), - OCULUS_BIND_ENTRY_POINT(GetSystemRegion2), - OCULUS_BIND_ENTRY_POINT(ShowSystemUI2), - OCULUS_BIND_ENTRY_POINT(GetAppHasVrFocus2), - OCULUS_BIND_ENTRY_POINT(GetAppHasInputFocus), - OCULUS_BIND_ENTRY_POINT(GetAppHasSystemOverlayPresent), - OCULUS_BIND_ENTRY_POINT(GetAppShouldQuit2), - OCULUS_BIND_ENTRY_POINT(GetAppShouldRecenter2), - OCULUS_BIND_ENTRY_POINT(GetAppShouldRecreateDistortionWindow2), - OCULUS_BIND_ENTRY_POINT(GetAppSpace), - OCULUS_BIND_ENTRY_POINT(GetAppLatencyTimings2), - OCULUS_BIND_ENTRY_POINT(SetAppEngineInfo2), - OCULUS_BIND_ENTRY_POINT(GetUserPresent2), - OCULUS_BIND_ENTRY_POINT(GetUserIPD2), - OCULUS_BIND_ENTRY_POINT(SetUserIPD2), - OCULUS_BIND_ENTRY_POINT(GetUserEyeHeight2), - OCULUS_BIND_ENTRY_POINT(SetUserEyeHeight2), - OCULUS_BIND_ENTRY_POINT(GetUserNeckEyeDistance2), - OCULUS_BIND_ENTRY_POINT(SetUserNeckEyeDistance2), - OCULUS_BIND_ENTRY_POINT(SetupDisplayObjects2), - OCULUS_BIND_ENTRY_POINT(GetSystemMultiViewSupported2), - OCULUS_BIND_ENTRY_POINT(GetEyeTextureArraySupported2), - OCULUS_BIND_ENTRY_POINT(GetBoundaryConfigured2), - OCULUS_BIND_ENTRY_POINT(GetDepthCompositingSupported), - OCULUS_BIND_ENTRY_POINT(TestBoundaryNode2), - OCULUS_BIND_ENTRY_POINT(TestBoundaryPoint2), - OCULUS_BIND_ENTRY_POINT(GetBoundaryGeometry3), - OCULUS_BIND_ENTRY_POINT(GetBoundaryDimensions2), - OCULUS_BIND_ENTRY_POINT(GetBoundaryVisible2), - OCULUS_BIND_ENTRY_POINT(SetBoundaryVisible2), - OCULUS_BIND_ENTRY_POINT(GetSystemHeadsetType2), - OCULUS_BIND_ENTRY_POINT(GetAppPerfStats2), - OCULUS_BIND_ENTRY_POINT(ResetAppPerfStats2), - OCULUS_BIND_ENTRY_POINT(GetAppFramerate2), - OCULUS_BIND_ENTRY_POINT(IsPerfMetricsSupported), - OCULUS_BIND_ENTRY_POINT(GetPerfMetricsFloat), - OCULUS_BIND_ENTRY_POINT(GetPerfMetricsInt), - OCULUS_BIND_ENTRY_POINT(SetHandNodePoseStateLatency), - OCULUS_BIND_ENTRY_POINT(GetHandNodePoseStateLatency), - OCULUS_BIND_ENTRY_POINT(GetSystemRecommendedMSAALevel2), - OCULUS_BIND_ENTRY_POINT(SetInhibitSystemUX2), - OCULUS_BIND_ENTRY_POINT(GetTiledMultiResSupported), - OCULUS_BIND_ENTRY_POINT(GetTiledMultiResLevel), - OCULUS_BIND_ENTRY_POINT(SetTiledMultiResLevel), - OCULUS_BIND_ENTRY_POINT(GetTiledMultiResDynamic), - OCULUS_BIND_ENTRY_POINT(SetTiledMultiResDynamic), - OCULUS_BIND_ENTRY_POINT(GetFoveationEyeTrackedSupported), - OCULUS_BIND_ENTRY_POINT(GetFoveationEyeTracked), - OCULUS_BIND_ENTRY_POINT(SetFoveationEyeTracked), - OCULUS_BIND_ENTRY_POINT(GetFoveationEyeTrackedCenter), - OCULUS_BIND_ENTRY_POINT(GetGPUUtilSupported), - OCULUS_BIND_ENTRY_POINT(GetGPUUtilLevel), - OCULUS_BIND_ENTRY_POINT(SetThreadPerformance), - OCULUS_BIND_ENTRY_POINT(AutoThreadScheduling), - OCULUS_BIND_ENTRY_POINT(GetGPUFrameTime), - OCULUS_BIND_ENTRY_POINT(GetViewportStencil), - OCULUS_BIND_ENTRY_POINT(SetDeveloperTelemetryConsent), - OCULUS_BIND_ENTRY_POINT(SendEvent), - OCULUS_BIND_ENTRY_POINT(SendEvent2), - OCULUS_BIND_ENTRY_POINT(AddCustomMetadata), - OCULUS_BIND_ENTRY_POINT(SetDeveloperMode), - OCULUS_BIND_ENTRY_POINT(GetCurrentTrackingTransformPose), - OCULUS_BIND_ENTRY_POINT(GetTrackingTransformRawPose), - OCULUS_BIND_ENTRY_POINT(GetTrackingTransformRelativePose), - OCULUS_BIND_ENTRY_POINT(GetTimeInSeconds), - // OCULUS_BIND_ENTRY_POINT(GetPTWNear), - OCULUS_BIND_ENTRY_POINT(GetASWVelocityScale), - OCULUS_BIND_ENTRY_POINT(GetASWDepthScale), - OCULUS_BIND_ENTRY_POINT(GetASWAdaptiveMode), - OCULUS_BIND_ENTRY_POINT(SetASWAdaptiveMode), - OCULUS_BIND_ENTRY_POINT(IsRequestingASWData), - OCULUS_BIND_ENTRY_POINT(GetPredictedDisplayTime), - OCULUS_BIND_ENTRY_POINT(GetHandTrackingEnabled), - OCULUS_BIND_ENTRY_POINT(GetHandState), - OCULUS_BIND_ENTRY_POINT(GetHandState2), - OCULUS_BIND_ENTRY_POINT(GetSkeleton2), - OCULUS_BIND_ENTRY_POINT(GetSkeleton3), - OCULUS_BIND_ENTRY_POINT(GetMesh), - OCULUS_BIND_ENTRY_POINT(GetLocalTrackingSpaceRecenterCount), - OCULUS_BIND_ENTRY_POINT(GetSystemHmd3DofModeEnabled), - OCULUS_BIND_ENTRY_POINT(SetClientColorDesc), - OCULUS_BIND_ENTRY_POINT(GetHmdColorDesc), - OCULUS_BIND_ENTRY_POINT(PollEvent), - OCULUS_BIND_ENTRY_POINT(RegisterOpenXREventHandler), - OCULUS_BIND_ENTRY_POINT(UnregisterOpenXREventHandler), - OCULUS_BIND_ENTRY_POINT(GetNativeXrApiType), - OCULUS_BIND_ENTRY_POINT(GetLocalDimmingSupported), - OCULUS_BIND_ENTRY_POINT(SetLocalDimming), - OCULUS_BIND_ENTRY_POINT(GetCurrentInteractionProfile), - OCULUS_BIND_ENTRY_POINT(GetLayerRecommendedResolution), - OCULUS_BIND_ENTRY_POINT(IsLayerShapeSupported), - OCULUS_BIND_ENTRY_POINT(SetEyeBufferSharpenType), - OCULUS_BIND_ENTRY_POINT(GetOpenXRInstanceProcAddrFunc), - - OCULUS_BIND_ENTRY_POINT(SaveUnifiedConsent), - OCULUS_BIND_ENTRY_POINT(SaveUnifiedConsentWithOlderVersion), - OCULUS_BIND_ENTRY_POINT(GetUnifiedConsent), - OCULUS_BIND_ENTRY_POINT(GetConsentTitle), - OCULUS_BIND_ENTRY_POINT(GetConsentMarkdownText), - OCULUS_BIND_ENTRY_POINT(GetConsentNotificationMarkdownText), - OCULUS_BIND_ENTRY_POINT(ShouldShowTelemetryConsentWindow), - OCULUS_BIND_ENTRY_POINT(ShouldShowTelemetryNotification), - OCULUS_BIND_ENTRY_POINT(SetNotificationShown), - OCULUS_BIND_ENTRY_POINT(GetConsentSettingsChangeText), - OCULUS_BIND_ENTRY_POINT(IsConsentSettingsChangeEnabled), - - OCULUS_BIND_ENTRY_POINT(InitializeEnvironmentDepth), - OCULUS_BIND_ENTRY_POINT(DestroyEnvironmentDepth), - OCULUS_BIND_ENTRY_POINT(GetEnvironmentDepthTextureDesc), - OCULUS_BIND_ENTRY_POINT(GetEnvironmentDepthTextureStageCount), - OCULUS_BIND_ENTRY_POINT(GetEnvironmentDepthTexture), - OCULUS_BIND_ENTRY_POINT(SetEnvironmentDepthHandRemoval), - OCULUS_BIND_ENTRY_POINT(StartEnvironmentDepth), - OCULUS_BIND_ENTRY_POINT(StopEnvironmentDepth), - OCULUS_BIND_ENTRY_POINT(GetEnvironmentDepthFrameDesc), - - -#ifndef OVRPLUGIN_JNI_LIB_EXCLUDED - OCULUS_BIND_ENTRY_POINT(GetSystemVolume2), - OCULUS_BIND_ENTRY_POINT(GetSystemHeadphonesPresent2), -#endif - - // Anchors - OCULUS_BIND_ENTRY_POINT(LocateSpace), - OCULUS_BIND_ENTRY_POINT(LocateSpace2), - OCULUS_BIND_ENTRY_POINT(CreateSpatialAnchor), - OCULUS_BIND_ENTRY_POINT(DestroySpace), - OCULUS_BIND_ENTRY_POINT(SetSpaceComponentStatus), - OCULUS_BIND_ENTRY_POINT(GetSpaceComponentStatus), - OCULUS_BIND_ENTRY_POINT(EnumerateSpaceSupportedComponents), - OCULUS_BIND_ENTRY_POINT(QuerySpaces), - OCULUS_BIND_ENTRY_POINT(QuerySpaces2), - OCULUS_BIND_ENTRY_POINT(RetrieveSpaceQueryResults), - OCULUS_BIND_ENTRY_POINT(SaveSpace), - OCULUS_BIND_ENTRY_POINT(EraseSpace), - OCULUS_BIND_ENTRY_POINT(GetSpaceUuid), - OCULUS_BIND_ENTRY_POINT(SaveSpaceList), - OCULUS_BIND_ENTRY_POINT(ShareSpaces), - OCULUS_BIND_ENTRY_POINT(ShareSpaces2), - OCULUS_BIND_ENTRY_POINT(CreateSpaceUser), - OCULUS_BIND_ENTRY_POINT(DestroySpaceUser), - - // Anchors 2.0 (APD) - OCULUS_BIND_ENTRY_POINT(DiscoverSpaces), - OCULUS_BIND_ENTRY_POINT(RetrieveSpaceDiscoveryResults), - OCULUS_BIND_ENTRY_POINT(SaveSpaces), - OCULUS_BIND_ENTRY_POINT(EraseSpaces), - - // Scene - OCULUS_BIND_ENTRY_POINT(GetSpaceContainer), - OCULUS_BIND_ENTRY_POINT(GetSpaceBoundingBox2D), - OCULUS_BIND_ENTRY_POINT(GetSpaceBoundingBox3D), - OCULUS_BIND_ENTRY_POINT(GetSpaceSemanticLabels), - OCULUS_BIND_ENTRY_POINT(GetSpaceRoomLayout), - OCULUS_BIND_ENTRY_POINT(GetSpaceBoundary2D), - OCULUS_BIND_ENTRY_POINT(RequestSceneCapture), - OCULUS_BIND_ENTRY_POINT(GetSpaceTriangleMesh), - - - // Boundary Visibility - OCULUS_BIND_ENTRY_POINT(RequestBoundaryVisibility), - OCULUS_BIND_ENTRY_POINT(GetBoundaryVisibility), - - // Colocation Session - OCULUS_BIND_ENTRY_POINT(StartColocationDiscovery), - OCULUS_BIND_ENTRY_POINT(StopColocationDiscovery), - OCULUS_BIND_ENTRY_POINT(StartColocationAdvertisement), - OCULUS_BIND_ENTRY_POINT(StopColocationAdvertisement), - - // MovementSDK - OCULUS_BIND_ENTRY_POINT(GetBodyTrackingEnabled), - OCULUS_BIND_ENTRY_POINT(GetBodyTrackingSupported), - OCULUS_BIND_ENTRY_POINT(StopBodyTracking), - OCULUS_BIND_ENTRY_POINT(GetBodyState4), - OCULUS_BIND_ENTRY_POINT(GetFullBodyTrackingEnabled), - OCULUS_BIND_ENTRY_POINT(StartBodyTracking2), - OCULUS_BIND_ENTRY_POINT(RequestBodyTrackingFidelity), - OCULUS_BIND_ENTRY_POINT(ResetBodyTrackingCalibration), - OCULUS_BIND_ENTRY_POINT(SuggestBodyTrackingCalibrationOverride), - - OCULUS_BIND_ENTRY_POINT(GetFaceTracking2Enabled), - OCULUS_BIND_ENTRY_POINT(GetFaceTracking2Supported), - OCULUS_BIND_ENTRY_POINT(GetFaceState2), - OCULUS_BIND_ENTRY_POINT(StartFaceTracking2), - OCULUS_BIND_ENTRY_POINT(StopFaceTracking2), - OCULUS_BIND_ENTRY_POINT(GetEyeTrackingEnabled), - OCULUS_BIND_ENTRY_POINT(GetEyeTrackingSupported), - OCULUS_BIND_ENTRY_POINT(GetEyeGazesState), - OCULUS_BIND_ENTRY_POINT(StartEyeTracking), - OCULUS_BIND_ENTRY_POINT(StopEyeTracking), - OCULUS_BIND_ENTRY_POINT(GetFaceTrackingVisemesSupported), - OCULUS_BIND_ENTRY_POINT(GetFaceTrackingVisemesEnabled), - OCULUS_BIND_ENTRY_POINT(GetFaceVisemesState), - OCULUS_BIND_ENTRY_POINT(SetFaceTrackingVisemesEnabled), - - // QPL - OCULUS_BIND_ENTRY_POINT(QplMarkerStart), - OCULUS_BIND_ENTRY_POINT(QplMarkerEnd), - OCULUS_BIND_ENTRY_POINT(QplMarkerPoint), - OCULUS_BIND_ENTRY_POINT(QplMarkerPointCached), - OCULUS_BIND_ENTRY_POINT(QplMarkerAnnotation), - OCULUS_BIND_ENTRY_POINT(QplCreateMarkerHandle), - OCULUS_BIND_ENTRY_POINT(QplDestroyMarkerHandle), - OCULUS_BIND_ENTRY_POINT(OnEditorShutdown), - OCULUS_BIND_ENTRY_POINT(QplSetConsent), - - // OVR_Plugin_Insight.h - OCULUS_BIND_ENTRY_POINT(InitializeInsightPassthrough), - OCULUS_BIND_ENTRY_POINT(ShutdownInsightPassthrough), - OCULUS_BIND_ENTRY_POINT(GetInsightPassthroughInitialized), - OCULUS_BIND_ENTRY_POINT(GetInsightPassthroughInitializationState), - OCULUS_BIND_ENTRY_POINT(CreateInsightTriangleMesh), - OCULUS_BIND_ENTRY_POINT(DestroyInsightTriangleMesh), - OCULUS_BIND_ENTRY_POINT(AddInsightPassthroughSurfaceGeometry), - OCULUS_BIND_ENTRY_POINT(DestroyInsightPassthroughGeometryInstance), - OCULUS_BIND_ENTRY_POINT(UpdateInsightPassthroughGeometryTransform), - OCULUS_BIND_ENTRY_POINT(SetInsightPassthroughStyle), - OCULUS_BIND_ENTRY_POINT(SetInsightPassthroughStyle2), - OCULUS_BIND_ENTRY_POINT(GetPassthroughCapabilityFlags), - OCULUS_BIND_ENTRY_POINT(CreatePassthroughColorLut), - OCULUS_BIND_ENTRY_POINT(DestroyPassthroughColorLut), - OCULUS_BIND_ENTRY_POINT(UpdatePassthroughColorLut), - OCULUS_BIND_ENTRY_POINT(GetPassthroughCapabilities), - OCULUS_BIND_ENTRY_POINT(GetPassthroughPreferences), - - // OVR_Plugin_MixedReality.h - - OCULUS_BIND_ENTRY_POINT(InitializeMixedReality), - OCULUS_BIND_ENTRY_POINT(ShutdownMixedReality), - OCULUS_BIND_ENTRY_POINT(GetMixedRealityInitialized), - OCULUS_BIND_ENTRY_POINT(UpdateExternalCamera), - OCULUS_BIND_ENTRY_POINT(GetExternalCameraCount), - OCULUS_BIND_ENTRY_POINT(GetExternalCameraName), - OCULUS_BIND_ENTRY_POINT(GetExternalCameraIntrinsics), - OCULUS_BIND_ENTRY_POINT(GetExternalCameraExtrinsics), - - // OVR_Plugin_Media.h - - OCULUS_BIND_ENTRY_POINT(Media_Initialize), - OCULUS_BIND_ENTRY_POINT(Media_Shutdown), - OCULUS_BIND_ENTRY_POINT(Media_GetInitialized), - OCULUS_BIND_ENTRY_POINT(Media_Update), - OCULUS_BIND_ENTRY_POINT(Media_GetMrcActivationMode), - OCULUS_BIND_ENTRY_POINT(Media_SetMrcActivationMode), - OCULUS_BIND_ENTRY_POINT(Media_IsMrcEnabled), - OCULUS_BIND_ENTRY_POINT(Media_IsMrcActivated), - OCULUS_BIND_ENTRY_POINT(Media_UseMrcDebugCamera), - OCULUS_BIND_ENTRY_POINT(Media_SetMrcInputVideoBufferType), - OCULUS_BIND_ENTRY_POINT(Media_GetMrcInputVideoBufferType), - OCULUS_BIND_ENTRY_POINT(Media_SetMrcFrameSize), - OCULUS_BIND_ENTRY_POINT(Media_GetMrcFrameSize), - OCULUS_BIND_ENTRY_POINT(Media_SetMrcAudioSampleRate), - OCULUS_BIND_ENTRY_POINT(Media_GetMrcAudioSampleRate), - OCULUS_BIND_ENTRY_POINT(Media_SetMrcFrameImageFlipped), - OCULUS_BIND_ENTRY_POINT(Media_GetMrcFrameImageFlipped), - OCULUS_BIND_ENTRY_POINT(Media_SetMrcFrameInverseAlpha), - OCULUS_BIND_ENTRY_POINT(Media_GetMrcFrameInverseAlpha), - OCULUS_BIND_ENTRY_POINT(Media_SetAvailableQueueIndexVulkan), - OCULUS_BIND_ENTRY_POINT(Media_EncodeMrcFrame), - OCULUS_BIND_ENTRY_POINT(Media_EncodeMrcFrameWithDualTextures), - OCULUS_BIND_ENTRY_POINT(Media_SyncMrcFrame), - OCULUS_BIND_ENTRY_POINT(Media_EncodeMrcFrameWithPoseTime), - OCULUS_BIND_ENTRY_POINT(Media_EncodeMrcFrameDualTexturesWithPoseTime), - OCULUS_BIND_ENTRY_POINT(Media_SetHeadsetControllerPose), - OCULUS_BIND_ENTRY_POINT(Media_EnumerateCameraAnchorHandles), - OCULUS_BIND_ENTRY_POINT(Media_GetCurrentCameraAnchorHandle), - OCULUS_BIND_ENTRY_POINT(Media_GetCameraAnchorName), - OCULUS_BIND_ENTRY_POINT(Media_GetCameraAnchorHandle), - OCULUS_BIND_ENTRY_POINT(Media_GetCameraAnchorType), - OCULUS_BIND_ENTRY_POINT(Media_CreateCustomCameraAnchor), - OCULUS_BIND_ENTRY_POINT(Media_DestroyCustomCameraAnchor), - OCULUS_BIND_ENTRY_POINT(Media_GetCustomCameraAnchorPose), - OCULUS_BIND_ENTRY_POINT(Media_SetCustomCameraAnchorPose), - OCULUS_BIND_ENTRY_POINT(Media_GetCameraMinMaxDistance), - OCULUS_BIND_ENTRY_POINT(Media_SetCameraMinMaxDistance), - - OCULUS_BIND_ENTRY_POINT(SetControllerDrivenHandPoses), - OCULUS_BIND_ENTRY_POINT(SetControllerDrivenHandPosesAreNatural), - }; - -#undef OCULUS_BIND_ENTRY_POINT - - bool result = true; - for (int i = 0; i < UE_ARRAY_COUNT(entryPointArray); ++i) - { - *(entryPointArray[i].EntryPointPtr) = LoadEntryPoint(LibraryHandle, entryPointArray[i].EntryPointName); - - if (*entryPointArray[i].EntryPointPtr == nullptr) - { - UE_LOG(LogOculusPluginWrapper, Error, TEXT("OculusPlugin EntryPoint could not be loaded: %s"), ANSI_TO_TCHAR(entryPointArray[i].EntryPointName)); - result = false; - } - } - - wrapper->Initialized = true; - - if (result) - { - UE_LOG(LogOculusPluginWrapper, Log, TEXT("OculusPlugin initialized successfully")); - } - else - { - DestroyOculusPluginWrapper(wrapper); - } - - return result; -} - -void OculusPluginWrapper::DestroyOculusPluginWrapper(OculusPluginWrapper* wrapper) -{ - if (!wrapper->Initialized) - return; - - wrapper->Reset(); - - UE_LOG(LogOculusPluginWrapper, Log, TEXT("OculusPlugin destroyed successfully")); -} - -static void* LoadEntryPoint(void* Handle, const char* EntryPointName) -{ - if (Handle == nullptr) - return nullptr; - -#if PLATFORM_WINDOWS - void* ptr = GetProcAddress((HMODULE)Handle, EntryPointName); - if (ptr == nullptr) - { - UE_LOG(LogOculusPluginWrapper, Error, TEXT("Unable to load entry point: %s"), ANSI_TO_TCHAR(EntryPointName)); - } - return ptr; -#elif PLATFORM_ANDROID - void* ptr = dlsym(Handle, EntryPointName); - if (ptr == nullptr) - { - UE_LOG(LogOculusPluginWrapper, Error, TEXT("Unable to load entry point: %s, error %s"), ANSI_TO_TCHAR(EntryPointName), ANSI_TO_TCHAR(dlerror())); - } - return ptr; -#else - UE_LOG(LogOculusPluginWrapper, Error, TEXT("LoadEntryPoint: Unsupported platform")); - return nullptr; -#endif -} diff --git a/Plugins/MetaXR/Source/OculusXRHMD/Private/OculusXRPluginWrapper.h b/Plugins/MetaXR/Source/OculusXRHMD/Private/OculusXRPluginWrapper.h deleted file mode 100644 index 8730cbc..0000000 --- a/Plugins/MetaXR/Source/OculusXRHMD/Private/OculusXRPluginWrapper.h +++ /dev/null @@ -1,452 +0,0 @@ -// @lint-ignore-every LICENSELINT -// Copyright Epic Games, Inc. All Rights Reserved. - -#pragma once - -#include "CoreMinimal.h" -#include - -#if PLATFORM_SUPPORTS_PRAGMA_PACK -#pragma pack(push, 8) -#endif - -#if PLATFORM_WINDOWS -#include "Windows/AllowWindowsPlatformTypes.h" -#endif - -#pragma warning(push) -#pragma warning(disable : 4201) // nonstandard extension used: nameless struct/union -// #pragma warning(disable:4668) // 'symbol' is not defined as a preprocessor macro, replacing with '0' for 'directives' -#define OVRP_EXPORT typedef -#include "OVR_Plugin.h" -#include "OVR_Plugin_Insight.h" -#include "OVR_Plugin_MixedReality.h" -#include "OVR_Plugin_Media.h" -#undef OVRP_EXPORT -#pragma warning(pop) - -#if PLATFORM_WINDOWS -#include "Windows/HideWindowsPlatformTypes.h" -#endif - -#if PLATFORM_SUPPORTS_PRAGMA_PACK -#pragma pack(pop) -#endif - -#if PLATFORM_WINDOWS -#include "Windows/WindowsHWrapper.h" -#endif - -DECLARE_LOG_CATEGORY_EXTERN(LogOculusPluginWrapper, Log, All); - -#define OCULUS_DECLARE_ENTRY_POINT(Func) ovrp_##Func* Func - -struct OculusPluginWrapper -{ - OculusPluginWrapper() - { - Reset(); - } - - void Reset() - { - memset(this, 0, sizeof(OculusPluginWrapper)); - ovrpHeaderVersion.MajorVersion = OVRP_MAJOR_VERSION; - ovrpHeaderVersion.MinorVersion = OVRP_MINOR_VERSION; - ovrpHeaderVersion.PatchVersion = OVRP_PATCH_VERSION; - } - - bool IsInitialized() const - { - return Initialized; - } - - // OVR_Plugin.h - - OCULUS_DECLARE_ENTRY_POINT(PreInitialize5); - OCULUS_DECLARE_ENTRY_POINT(GetInitialized); - OCULUS_DECLARE_ENTRY_POINT(Initialize7); - OCULUS_DECLARE_ENTRY_POINT(Shutdown2); - OCULUS_DECLARE_ENTRY_POINT(SetLogCallback2); - OCULUS_DECLARE_ENTRY_POINT(GetVersion2); - OCULUS_DECLARE_ENTRY_POINT(GetNativeSDKVersion2); - OCULUS_DECLARE_ENTRY_POINT(GetNativeSDKPointer2); - OCULUS_DECLARE_ENTRY_POINT(GetNativeOpenXRHandles); - OCULUS_DECLARE_ENTRY_POINT(GetDisplayAdapterId2); - OCULUS_DECLARE_ENTRY_POINT(GetAudioOutId2); - OCULUS_DECLARE_ENTRY_POINT(GetAudioOutDeviceId2); - OCULUS_DECLARE_ENTRY_POINT(GetAudioInId2); - OCULUS_DECLARE_ENTRY_POINT(GetAudioInDeviceId2); - OCULUS_DECLARE_ENTRY_POINT(GetInstanceExtensionsVk); - OCULUS_DECLARE_ENTRY_POINT(GetDeviceExtensionsVk); - OCULUS_DECLARE_ENTRY_POINT(SetupDistortionWindow3); - OCULUS_DECLARE_ENTRY_POINT(DestroyDistortionWindow2); - OCULUS_DECLARE_ENTRY_POINT(GetDominantHand); - OCULUS_DECLARE_ENTRY_POINT(SetRemoteHandedness); - OCULUS_DECLARE_ENTRY_POINT(SetColorScaleAndOffset); - OCULUS_DECLARE_ENTRY_POINT(SetupLayer); - OCULUS_DECLARE_ENTRY_POINT(SetupLayerDepth); - OCULUS_DECLARE_ENTRY_POINT(SetEyeFovPremultipliedAlphaMode); - OCULUS_DECLARE_ENTRY_POINT(GetEyeFovLayerId); - OCULUS_DECLARE_ENTRY_POINT(GetLayerTextureStageCount); - OCULUS_DECLARE_ENTRY_POINT(GetLayerTexture2); - OCULUS_DECLARE_ENTRY_POINT(GetLayerTextureFoveation); - OCULUS_DECLARE_ENTRY_POINT(GetLayerTextureSpaceWarp); - OCULUS_DECLARE_ENTRY_POINT(CalculateEyeLayerDesc3); - OCULUS_DECLARE_ENTRY_POINT(GetLayerAndroidSurfaceObject); - OCULUS_DECLARE_ENTRY_POINT(GetLayerOcclusionMesh); - OCULUS_DECLARE_ENTRY_POINT(DestroyLayer); - OCULUS_DECLARE_ENTRY_POINT(CalculateLayerDesc); - OCULUS_DECLARE_ENTRY_POINT(CalculateEyeLayerDesc2); - OCULUS_DECLARE_ENTRY_POINT(CalculateEyePreviewRect); - OCULUS_DECLARE_ENTRY_POINT(SetupMirrorTexture2); - OCULUS_DECLARE_ENTRY_POINT(DestroyMirrorTexture2); - OCULUS_DECLARE_ENTRY_POINT(GetAdaptiveGpuPerformanceScale2); - OCULUS_DECLARE_ENTRY_POINT(GetAppCpuStartToGpuEndTime2); - OCULUS_DECLARE_ENTRY_POINT(GetEyePixelsPerTanAngleAtCenter2); - OCULUS_DECLARE_ENTRY_POINT(GetHmdToEyeOffset2); - OCULUS_DECLARE_ENTRY_POINT(Update3); - OCULUS_DECLARE_ENTRY_POINT(WaitToBeginFrame); - OCULUS_DECLARE_ENTRY_POINT(BeginFrame4); - OCULUS_DECLARE_ENTRY_POINT(UpdateFoveation); - OCULUS_DECLARE_ENTRY_POINT(EndFrame4); - OCULUS_DECLARE_ENTRY_POINT(GetTrackingOrientationSupported2); - OCULUS_DECLARE_ENTRY_POINT(GetTrackingOrientationEnabled2); - OCULUS_DECLARE_ENTRY_POINT(SetTrackingOrientationEnabled2); - OCULUS_DECLARE_ENTRY_POINT(GetTrackingPositionSupported2); - OCULUS_DECLARE_ENTRY_POINT(GetTrackingPositionEnabled2); - OCULUS_DECLARE_ENTRY_POINT(SetTrackingPositionEnabled2); - OCULUS_DECLARE_ENTRY_POINT(GetTrackingPoseEnabledForInvisibleSession); - OCULUS_DECLARE_ENTRY_POINT(SetTrackingPoseEnabledForInvisibleSession); - OCULUS_DECLARE_ENTRY_POINT(GetTrackingIPDEnabled2); - OCULUS_DECLARE_ENTRY_POINT(SetTrackingIPDEnabled2); - OCULUS_DECLARE_ENTRY_POINT(GetTrackingCalibratedOrigin2); - OCULUS_DECLARE_ENTRY_POINT(SetTrackingCalibratedOrigin2); - OCULUS_DECLARE_ENTRY_POINT(GetTrackingOriginType2); - OCULUS_DECLARE_ENTRY_POINT(SetTrackingOriginType2); - OCULUS_DECLARE_ENTRY_POINT(RecenterTrackingOrigin2); - OCULUS_DECLARE_ENTRY_POINT(GetNodePresent2); - OCULUS_DECLARE_ENTRY_POINT(GetNodeOrientationTracked2); - OCULUS_DECLARE_ENTRY_POINT(GetNodeOrientationValid); - OCULUS_DECLARE_ENTRY_POINT(GetNodePositionTracked2); - OCULUS_DECLARE_ENTRY_POINT(GetNodePositionValid); - OCULUS_DECLARE_ENTRY_POINT(SetNodePositionTracked2); - OCULUS_DECLARE_ENTRY_POINT(GetNodePoseState3); - OCULUS_DECLARE_ENTRY_POINT(GetNodePoseStateRaw); - OCULUS_DECLARE_ENTRY_POINT(GetNodeFrustum2); - OCULUS_DECLARE_ENTRY_POINT(SetHeadPoseModifier); - OCULUS_DECLARE_ENTRY_POINT(GetHeadPoseModifier); - OCULUS_DECLARE_ENTRY_POINT(GetControllerState4); - OCULUS_DECLARE_ENTRY_POINT(GetControllerState5); - OCULUS_DECLARE_ENTRY_POINT(GetControllerState6); - OCULUS_DECLARE_ENTRY_POINT(GetActiveController2); - OCULUS_DECLARE_ENTRY_POINT(GetConnectedControllers2); - OCULUS_DECLARE_ENTRY_POINT(SetControllerVibration2); - OCULUS_DECLARE_ENTRY_POINT(SetControllerLocalizedVibration); - OCULUS_DECLARE_ENTRY_POINT(SetControllerHapticsAmplitudeEnvelope); - OCULUS_DECLARE_ENTRY_POINT(SetControllerHapticsPcm); - OCULUS_DECLARE_ENTRY_POINT(GetControllerHapticsDesc2); - OCULUS_DECLARE_ENTRY_POINT(GetControllerHapticsState2); - OCULUS_DECLARE_ENTRY_POINT(GetControllerSampleRateHz); - OCULUS_DECLARE_ENTRY_POINT(SetControllerHaptics2); - OCULUS_DECLARE_ENTRY_POINT(SetSuggestedCpuPerformanceLevel); - OCULUS_DECLARE_ENTRY_POINT(GetSuggestedCpuPerformanceLevel); - OCULUS_DECLARE_ENTRY_POINT(SetSuggestedGpuPerformanceLevel); - OCULUS_DECLARE_ENTRY_POINT(GetSuggestedGpuPerformanceLevel); - OCULUS_DECLARE_ENTRY_POINT(GetAppCPUPriority2); - OCULUS_DECLARE_ENTRY_POINT(SetAppCPUPriority2); - OCULUS_DECLARE_ENTRY_POINT(GetSystemPowerSavingMode2); - OCULUS_DECLARE_ENTRY_POINT(GetSystemDisplayFrequency2); - OCULUS_DECLARE_ENTRY_POINT(GetSystemDisplayAvailableFrequencies); - OCULUS_DECLARE_ENTRY_POINT(SetSystemDisplayFrequency); - OCULUS_DECLARE_ENTRY_POINT(GetSystemVSyncCount2); - OCULUS_DECLARE_ENTRY_POINT(SetSystemVSyncCount2); - OCULUS_DECLARE_ENTRY_POINT(GetSystemProductName2); - OCULUS_DECLARE_ENTRY_POINT(GetSystemRegion2); - OCULUS_DECLARE_ENTRY_POINT(ShowSystemUI2); - OCULUS_DECLARE_ENTRY_POINT(GetAppHasVrFocus2); - OCULUS_DECLARE_ENTRY_POINT(GetAppHasInputFocus); - OCULUS_DECLARE_ENTRY_POINT(GetAppHasSystemOverlayPresent); - OCULUS_DECLARE_ENTRY_POINT(GetAppShouldQuit2); - OCULUS_DECLARE_ENTRY_POINT(GetAppShouldRecenter2); - OCULUS_DECLARE_ENTRY_POINT(GetAppShouldRecreateDistortionWindow2); - OCULUS_DECLARE_ENTRY_POINT(GetAppSpace); - OCULUS_DECLARE_ENTRY_POINT(GetAppLatencyTimings2); - OCULUS_DECLARE_ENTRY_POINT(SetAppEngineInfo2); - OCULUS_DECLARE_ENTRY_POINT(GetUserPresent2); - OCULUS_DECLARE_ENTRY_POINT(GetUserIPD2); - OCULUS_DECLARE_ENTRY_POINT(SetUserIPD2); - OCULUS_DECLARE_ENTRY_POINT(GetUserEyeHeight2); - OCULUS_DECLARE_ENTRY_POINT(SetUserEyeHeight2); - OCULUS_DECLARE_ENTRY_POINT(GetUserNeckEyeDistance2); - OCULUS_DECLARE_ENTRY_POINT(SetUserNeckEyeDistance2); - OCULUS_DECLARE_ENTRY_POINT(SetupDisplayObjects2); - OCULUS_DECLARE_ENTRY_POINT(GetSystemMultiViewSupported2); - OCULUS_DECLARE_ENTRY_POINT(GetEyeTextureArraySupported2); - OCULUS_DECLARE_ENTRY_POINT(GetBoundaryConfigured2); - OCULUS_DECLARE_ENTRY_POINT(GetDepthCompositingSupported); - OCULUS_DECLARE_ENTRY_POINT(TestBoundaryNode2); - OCULUS_DECLARE_ENTRY_POINT(TestBoundaryPoint2); - OCULUS_DECLARE_ENTRY_POINT(GetBoundaryGeometry3); - OCULUS_DECLARE_ENTRY_POINT(GetBoundaryDimensions2); - OCULUS_DECLARE_ENTRY_POINT(GetBoundaryVisible2); - OCULUS_DECLARE_ENTRY_POINT(SetBoundaryVisible2); - OCULUS_DECLARE_ENTRY_POINT(GetSystemHeadsetType2); - OCULUS_DECLARE_ENTRY_POINT(GetAppPerfStats2); - OCULUS_DECLARE_ENTRY_POINT(ResetAppPerfStats2); - OCULUS_DECLARE_ENTRY_POINT(GetAppFramerate2); - OCULUS_DECLARE_ENTRY_POINT(IsPerfMetricsSupported); - OCULUS_DECLARE_ENTRY_POINT(GetPerfMetricsFloat); - OCULUS_DECLARE_ENTRY_POINT(GetPerfMetricsInt); - OCULUS_DECLARE_ENTRY_POINT(SetHandNodePoseStateLatency); - OCULUS_DECLARE_ENTRY_POINT(GetHandNodePoseStateLatency); - OCULUS_DECLARE_ENTRY_POINT(GetSystemRecommendedMSAALevel2); - OCULUS_DECLARE_ENTRY_POINT(SetInhibitSystemUX2); - OCULUS_DECLARE_ENTRY_POINT(GetTiledMultiResSupported); - OCULUS_DECLARE_ENTRY_POINT(GetTiledMultiResLevel); - OCULUS_DECLARE_ENTRY_POINT(SetTiledMultiResLevel); - OCULUS_DECLARE_ENTRY_POINT(GetTiledMultiResDynamic); - OCULUS_DECLARE_ENTRY_POINT(SetTiledMultiResDynamic); - OCULUS_DECLARE_ENTRY_POINT(GetFoveationEyeTrackedSupported); - OCULUS_DECLARE_ENTRY_POINT(GetFoveationEyeTracked); - OCULUS_DECLARE_ENTRY_POINT(SetFoveationEyeTracked); - OCULUS_DECLARE_ENTRY_POINT(GetFoveationEyeTrackedCenter); - OCULUS_DECLARE_ENTRY_POINT(GetGPUUtilSupported); - OCULUS_DECLARE_ENTRY_POINT(GetGPUUtilLevel); - OCULUS_DECLARE_ENTRY_POINT(SetThreadPerformance); - OCULUS_DECLARE_ENTRY_POINT(AutoThreadScheduling); - OCULUS_DECLARE_ENTRY_POINT(GetGPUFrameTime); - OCULUS_DECLARE_ENTRY_POINT(GetViewportStencil); - OCULUS_DECLARE_ENTRY_POINT(SetDeveloperTelemetryConsent); - OCULUS_DECLARE_ENTRY_POINT(SendEvent); - OCULUS_DECLARE_ENTRY_POINT(SendEvent2); - OCULUS_DECLARE_ENTRY_POINT(AddCustomMetadata); - OCULUS_DECLARE_ENTRY_POINT(SetDeveloperMode); - OCULUS_DECLARE_ENTRY_POINT(GetCurrentTrackingTransformPose); - OCULUS_DECLARE_ENTRY_POINT(GetTrackingTransformRawPose); - OCULUS_DECLARE_ENTRY_POINT(GetTrackingTransformRelativePose); - OCULUS_DECLARE_ENTRY_POINT(GetTimeInSeconds); - // OCULUS_DECLARE_ENTRY_POINT(GetPTWNear); - OCULUS_DECLARE_ENTRY_POINT(GetASWVelocityScale); - OCULUS_DECLARE_ENTRY_POINT(GetASWDepthScale); - OCULUS_DECLARE_ENTRY_POINT(GetASWAdaptiveMode); - OCULUS_DECLARE_ENTRY_POINT(SetASWAdaptiveMode); - OCULUS_DECLARE_ENTRY_POINT(IsRequestingASWData); - OCULUS_DECLARE_ENTRY_POINT(GetPredictedDisplayTime); - OCULUS_DECLARE_ENTRY_POINT(GetHandTrackingEnabled); - OCULUS_DECLARE_ENTRY_POINT(GetHandState); - OCULUS_DECLARE_ENTRY_POINT(GetHandState2); - OCULUS_DECLARE_ENTRY_POINT(GetSkeleton2); - OCULUS_DECLARE_ENTRY_POINT(GetSkeleton3); - OCULUS_DECLARE_ENTRY_POINT(GetMesh); - OCULUS_DECLARE_ENTRY_POINT(GetLocalTrackingSpaceRecenterCount); - OCULUS_DECLARE_ENTRY_POINT(GetSystemHmd3DofModeEnabled); - OCULUS_DECLARE_ENTRY_POINT(SetClientColorDesc); - OCULUS_DECLARE_ENTRY_POINT(GetHmdColorDesc); - OCULUS_DECLARE_ENTRY_POINT(PollEvent); - OCULUS_DECLARE_ENTRY_POINT(RegisterOpenXREventHandler); - OCULUS_DECLARE_ENTRY_POINT(UnregisterOpenXREventHandler); - - OCULUS_DECLARE_ENTRY_POINT(SaveUnifiedConsent); - OCULUS_DECLARE_ENTRY_POINT(SaveUnifiedConsentWithOlderVersion); - OCULUS_DECLARE_ENTRY_POINT(GetUnifiedConsent); - OCULUS_DECLARE_ENTRY_POINT(GetConsentTitle); - OCULUS_DECLARE_ENTRY_POINT(GetConsentMarkdownText); - OCULUS_DECLARE_ENTRY_POINT(GetConsentNotificationMarkdownText); - OCULUS_DECLARE_ENTRY_POINT(ShouldShowTelemetryConsentWindow); - OCULUS_DECLARE_ENTRY_POINT(ShouldShowTelemetryNotification); - OCULUS_DECLARE_ENTRY_POINT(SetNotificationShown); - OCULUS_DECLARE_ENTRY_POINT(GetConsentSettingsChangeText); - OCULUS_DECLARE_ENTRY_POINT(IsConsentSettingsChangeEnabled); - - OCULUS_DECLARE_ENTRY_POINT(GetNativeXrApiType); - OCULUS_DECLARE_ENTRY_POINT(GetLocalDimmingSupported); - OCULUS_DECLARE_ENTRY_POINT(SetLocalDimming); - OCULUS_DECLARE_ENTRY_POINT(GetCurrentInteractionProfile); - OCULUS_DECLARE_ENTRY_POINT(GetLayerRecommendedResolution); - OCULUS_DECLARE_ENTRY_POINT(IsLayerShapeSupported); - OCULUS_DECLARE_ENTRY_POINT(SetEyeBufferSharpenType); - OCULUS_DECLARE_ENTRY_POINT(GetOpenXRInstanceProcAddrFunc); - - OCULUS_DECLARE_ENTRY_POINT(InitializeEnvironmentDepth); - OCULUS_DECLARE_ENTRY_POINT(DestroyEnvironmentDepth); - OCULUS_DECLARE_ENTRY_POINT(GetEnvironmentDepthTextureDesc); - OCULUS_DECLARE_ENTRY_POINT(GetEnvironmentDepthTextureStageCount); - OCULUS_DECLARE_ENTRY_POINT(GetEnvironmentDepthTexture); - OCULUS_DECLARE_ENTRY_POINT(SetEnvironmentDepthHandRemoval); - OCULUS_DECLARE_ENTRY_POINT(StartEnvironmentDepth); - OCULUS_DECLARE_ENTRY_POINT(StopEnvironmentDepth); - OCULUS_DECLARE_ENTRY_POINT(GetEnvironmentDepthFrameDesc); - - -#ifndef OVRPLUGIN_JNI_LIB_EXCLUDED - OCULUS_DECLARE_ENTRY_POINT(GetSystemVolume2); - OCULUS_DECLARE_ENTRY_POINT(GetSystemHeadphonesPresent2); -#endif - - // Anchors - OCULUS_DECLARE_ENTRY_POINT(LocateSpace); - OCULUS_DECLARE_ENTRY_POINT(LocateSpace2); - OCULUS_DECLARE_ENTRY_POINT(CreateSpatialAnchor); - OCULUS_DECLARE_ENTRY_POINT(DestroySpace); - OCULUS_DECLARE_ENTRY_POINT(SetSpaceComponentStatus); - OCULUS_DECLARE_ENTRY_POINT(GetSpaceComponentStatus); - OCULUS_DECLARE_ENTRY_POINT(EnumerateSpaceSupportedComponents); - OCULUS_DECLARE_ENTRY_POINT(QuerySpaces); - OCULUS_DECLARE_ENTRY_POINT(QuerySpaces2); - OCULUS_DECLARE_ENTRY_POINT(RetrieveSpaceQueryResults); - OCULUS_DECLARE_ENTRY_POINT(SaveSpace); - OCULUS_DECLARE_ENTRY_POINT(EraseSpace); - OCULUS_DECLARE_ENTRY_POINT(GetSpaceUuid); - OCULUS_DECLARE_ENTRY_POINT(SaveSpaceList); - OCULUS_DECLARE_ENTRY_POINT(ShareSpaces); - OCULUS_DECLARE_ENTRY_POINT(ShareSpaces2); - OCULUS_DECLARE_ENTRY_POINT(CreateSpaceUser); - OCULUS_DECLARE_ENTRY_POINT(DestroySpaceUser); - - // Anchors 2.0 (APD) - OCULUS_DECLARE_ENTRY_POINT(DiscoverSpaces); - OCULUS_DECLARE_ENTRY_POINT(RetrieveSpaceDiscoveryResults); - OCULUS_DECLARE_ENTRY_POINT(SaveSpaces); - OCULUS_DECLARE_ENTRY_POINT(EraseSpaces); - - // Scene - OCULUS_DECLARE_ENTRY_POINT(GetSpaceContainer); - OCULUS_DECLARE_ENTRY_POINT(GetSpaceBoundingBox2D); - OCULUS_DECLARE_ENTRY_POINT(GetSpaceBoundingBox3D); - OCULUS_DECLARE_ENTRY_POINT(GetSpaceSemanticLabels); - OCULUS_DECLARE_ENTRY_POINT(GetSpaceRoomLayout); - OCULUS_DECLARE_ENTRY_POINT(GetSpaceBoundary2D); - OCULUS_DECLARE_ENTRY_POINT(RequestSceneCapture); - OCULUS_DECLARE_ENTRY_POINT(GetSpaceTriangleMesh); - - - // Boundary Visibility - OCULUS_DECLARE_ENTRY_POINT(RequestBoundaryVisibility); - OCULUS_DECLARE_ENTRY_POINT(GetBoundaryVisibility); - - // Colocation Session - OCULUS_DECLARE_ENTRY_POINT(StartColocationDiscovery); - OCULUS_DECLARE_ENTRY_POINT(StopColocationDiscovery); - OCULUS_DECLARE_ENTRY_POINT(StartColocationAdvertisement); - OCULUS_DECLARE_ENTRY_POINT(StopColocationAdvertisement); - - // MovementSDK - OCULUS_DECLARE_ENTRY_POINT(GetBodyTrackingEnabled); - OCULUS_DECLARE_ENTRY_POINT(GetBodyTrackingSupported); - OCULUS_DECLARE_ENTRY_POINT(StopBodyTracking); - OCULUS_DECLARE_ENTRY_POINT(GetBodyState4); - OCULUS_DECLARE_ENTRY_POINT(GetFullBodyTrackingEnabled); - OCULUS_DECLARE_ENTRY_POINT(StartBodyTracking2); - OCULUS_DECLARE_ENTRY_POINT(RequestBodyTrackingFidelity); - OCULUS_DECLARE_ENTRY_POINT(ResetBodyTrackingCalibration); - OCULUS_DECLARE_ENTRY_POINT(SuggestBodyTrackingCalibrationOverride); - - OCULUS_DECLARE_ENTRY_POINT(GetFaceTracking2Enabled); - OCULUS_DECLARE_ENTRY_POINT(GetFaceTracking2Supported); - OCULUS_DECLARE_ENTRY_POINT(GetFaceState2); - OCULUS_DECLARE_ENTRY_POINT(StartFaceTracking2); - OCULUS_DECLARE_ENTRY_POINT(StopFaceTracking2); - OCULUS_DECLARE_ENTRY_POINT(GetEyeTrackingEnabled); - OCULUS_DECLARE_ENTRY_POINT(GetEyeTrackingSupported); - OCULUS_DECLARE_ENTRY_POINT(GetEyeGazesState); - OCULUS_DECLARE_ENTRY_POINT(StartEyeTracking); - OCULUS_DECLARE_ENTRY_POINT(StopEyeTracking); - OCULUS_DECLARE_ENTRY_POINT(GetFaceTrackingVisemesSupported); - OCULUS_DECLARE_ENTRY_POINT(GetFaceTrackingVisemesEnabled); - OCULUS_DECLARE_ENTRY_POINT(GetFaceVisemesState); - OCULUS_DECLARE_ENTRY_POINT(SetFaceTrackingVisemesEnabled); - - // QPL - OCULUS_DECLARE_ENTRY_POINT(QplMarkerStart); - OCULUS_DECLARE_ENTRY_POINT(QplMarkerEnd); - OCULUS_DECLARE_ENTRY_POINT(QplMarkerPoint); - OCULUS_DECLARE_ENTRY_POINT(QplMarkerPointCached); - OCULUS_DECLARE_ENTRY_POINT(QplMarkerAnnotation); - OCULUS_DECLARE_ENTRY_POINT(QplCreateMarkerHandle); - OCULUS_DECLARE_ENTRY_POINT(QplDestroyMarkerHandle); - OCULUS_DECLARE_ENTRY_POINT(OnEditorShutdown); - OCULUS_DECLARE_ENTRY_POINT(QplSetConsent); - - // OVR_Plugin_Insight.h - OCULUS_DECLARE_ENTRY_POINT(InitializeInsightPassthrough); - OCULUS_DECLARE_ENTRY_POINT(ShutdownInsightPassthrough); - OCULUS_DECLARE_ENTRY_POINT(GetInsightPassthroughInitialized); - OCULUS_DECLARE_ENTRY_POINT(GetInsightPassthroughInitializationState); - OCULUS_DECLARE_ENTRY_POINT(CreateInsightTriangleMesh); - OCULUS_DECLARE_ENTRY_POINT(DestroyInsightTriangleMesh); - OCULUS_DECLARE_ENTRY_POINT(AddInsightPassthroughSurfaceGeometry); - OCULUS_DECLARE_ENTRY_POINT(DestroyInsightPassthroughGeometryInstance); - OCULUS_DECLARE_ENTRY_POINT(UpdateInsightPassthroughGeometryTransform); - OCULUS_DECLARE_ENTRY_POINT(SetInsightPassthroughStyle); - OCULUS_DECLARE_ENTRY_POINT(SetInsightPassthroughStyle2); - OCULUS_DECLARE_ENTRY_POINT(GetPassthroughCapabilityFlags); - OCULUS_DECLARE_ENTRY_POINT(CreatePassthroughColorLut); - OCULUS_DECLARE_ENTRY_POINT(DestroyPassthroughColorLut); - OCULUS_DECLARE_ENTRY_POINT(UpdatePassthroughColorLut); - OCULUS_DECLARE_ENTRY_POINT(GetPassthroughCapabilities); - OCULUS_DECLARE_ENTRY_POINT(GetPassthroughPreferences); - - // OVR_Plugin_MixedReality.h - - OCULUS_DECLARE_ENTRY_POINT(InitializeMixedReality); - OCULUS_DECLARE_ENTRY_POINT(ShutdownMixedReality); - OCULUS_DECLARE_ENTRY_POINT(GetMixedRealityInitialized); - OCULUS_DECLARE_ENTRY_POINT(UpdateExternalCamera); - OCULUS_DECLARE_ENTRY_POINT(GetExternalCameraCount); - OCULUS_DECLARE_ENTRY_POINT(GetExternalCameraName); - OCULUS_DECLARE_ENTRY_POINT(GetExternalCameraIntrinsics); - OCULUS_DECLARE_ENTRY_POINT(GetExternalCameraExtrinsics); - - // OVR_Plugin_Media.h - - OCULUS_DECLARE_ENTRY_POINT(Media_Initialize); - OCULUS_DECLARE_ENTRY_POINT(Media_Shutdown); - OCULUS_DECLARE_ENTRY_POINT(Media_GetInitialized); - OCULUS_DECLARE_ENTRY_POINT(Media_Update); - OCULUS_DECLARE_ENTRY_POINT(Media_GetMrcActivationMode); - OCULUS_DECLARE_ENTRY_POINT(Media_SetMrcActivationMode); - OCULUS_DECLARE_ENTRY_POINT(Media_IsMrcEnabled); - OCULUS_DECLARE_ENTRY_POINT(Media_IsMrcActivated); - OCULUS_DECLARE_ENTRY_POINT(Media_UseMrcDebugCamera); - OCULUS_DECLARE_ENTRY_POINT(Media_SetMrcInputVideoBufferType); - OCULUS_DECLARE_ENTRY_POINT(Media_GetMrcInputVideoBufferType); - OCULUS_DECLARE_ENTRY_POINT(Media_SetMrcFrameSize); - OCULUS_DECLARE_ENTRY_POINT(Media_GetMrcFrameSize); - OCULUS_DECLARE_ENTRY_POINT(Media_SetMrcAudioSampleRate); - OCULUS_DECLARE_ENTRY_POINT(Media_GetMrcAudioSampleRate); - OCULUS_DECLARE_ENTRY_POINT(Media_SetMrcFrameImageFlipped); - OCULUS_DECLARE_ENTRY_POINT(Media_GetMrcFrameImageFlipped); - OCULUS_DECLARE_ENTRY_POINT(Media_SetMrcFrameInverseAlpha); - OCULUS_DECLARE_ENTRY_POINT(Media_GetMrcFrameInverseAlpha); - OCULUS_DECLARE_ENTRY_POINT(Media_SetAvailableQueueIndexVulkan); - OCULUS_DECLARE_ENTRY_POINT(Media_EncodeMrcFrame); - OCULUS_DECLARE_ENTRY_POINT(Media_EncodeMrcFrameWithDualTextures); - OCULUS_DECLARE_ENTRY_POINT(Media_SyncMrcFrame); - OCULUS_DECLARE_ENTRY_POINT(Media_EncodeMrcFrameWithPoseTime); - OCULUS_DECLARE_ENTRY_POINT(Media_EncodeMrcFrameDualTexturesWithPoseTime); - OCULUS_DECLARE_ENTRY_POINT(Media_SetHeadsetControllerPose); - OCULUS_DECLARE_ENTRY_POINT(Media_EnumerateCameraAnchorHandles); - OCULUS_DECLARE_ENTRY_POINT(Media_GetCurrentCameraAnchorHandle); - OCULUS_DECLARE_ENTRY_POINT(Media_GetCameraAnchorName); - OCULUS_DECLARE_ENTRY_POINT(Media_GetCameraAnchorHandle); - OCULUS_DECLARE_ENTRY_POINT(Media_GetCameraAnchorType); - OCULUS_DECLARE_ENTRY_POINT(Media_CreateCustomCameraAnchor); - OCULUS_DECLARE_ENTRY_POINT(Media_DestroyCustomCameraAnchor); - OCULUS_DECLARE_ENTRY_POINT(Media_GetCustomCameraAnchorPose); - OCULUS_DECLARE_ENTRY_POINT(Media_SetCustomCameraAnchorPose); - OCULUS_DECLARE_ENTRY_POINT(Media_GetCameraMinMaxDistance); - OCULUS_DECLARE_ENTRY_POINT(Media_SetCameraMinMaxDistance); - - OCULUS_DECLARE_ENTRY_POINT(SetControllerDrivenHandPoses); - OCULUS_DECLARE_ENTRY_POINT(SetControllerDrivenHandPosesAreNatural); - - static bool InitializeOculusPluginWrapper(OculusPluginWrapper* wrapper); - static void DestroyOculusPluginWrapper(OculusPluginWrapper* wrapper); - -private: - ovrpVersion ovrpHeaderVersion; - bool Initialized; -}; - -#undef OCULUS_DECLARE_ENTRY_POINT diff --git a/Plugins/MetaXR/Source/OculusXRHMD/Private/OculusXRQPL.cpp b/Plugins/MetaXR/Source/OculusXRHMD/Private/OculusXRQPL.cpp deleted file mode 100644 index 36fe75b..0000000 --- a/Plugins/MetaXR/Source/OculusXRHMD/Private/OculusXRQPL.cpp +++ /dev/null @@ -1,130 +0,0 @@ -// Copyright (c) Meta Platforms, Inc. and affiliates. - -#include "OculusXRQPL.h" -#include "OculusXRHMDModule.h" -#include "OculusXRPluginWrapper.h" - -namespace OculusXRTelemetry -{ - namespace QPL - { - bool MarkerStart(const int MarkerId, const FTelemetryInstanceKey InstanceKey, const FTelemetryTimestamp Timestamp) - { - const ovrpResult Result = FOculusXRHMDModule::GetPluginWrapper().QplMarkerStart( - MarkerId, - InstanceKey.GetValue(), - Timestamp.GetTimestamp()); - - return OVRP_SUCCESS(Result); - } - bool MarkerEnd(const int MarkerId, const EAction Action, const FTelemetryInstanceKey InstanceKey, const FTelemetryTimestamp Timestamp) - { - const ovrpResult Result = FOculusXRHMDModule::GetPluginWrapper().QplMarkerEnd( - MarkerId, - static_cast(Action), - InstanceKey.GetValue(), - Timestamp.GetTimestamp()); - - return OVRP_SUCCESS(Result); - } - - bool MarkerPoint(const int MarkerId, const char* Name, const FTelemetryInstanceKey InstanceKey, const FTelemetryTimestamp Timestamp) - { - const ovrpResult Result = FOculusXRHMDModule::GetPluginWrapper().QplMarkerPoint( - MarkerId, - Name, - InstanceKey.GetValue(), - Timestamp.GetTimestamp()); - - return OVRP_SUCCESS(Result); - } - - bool MarkerPointCached(const int MarkerId, const int NameHandle, const FTelemetryInstanceKey InstanceKey, const FTelemetryTimestamp Timestamp) - { - const ovrpResult Result = FOculusXRHMDModule::GetPluginWrapper().QplMarkerPointCached( - MarkerId, - NameHandle, - InstanceKey.GetValue(), - Timestamp.GetTimestamp()); - - return OVRP_SUCCESS(Result); - } - - bool MarkerAnnotation(const int MarkerId, const char* AnnotationKey, const char* AnnotationValue, const FTelemetryInstanceKey InstanceKey) - { - if (nullptr == AnnotationValue) - { - return false; - } - const ovrpResult Result = FOculusXRHMDModule::GetPluginWrapper().QplMarkerAnnotation( - MarkerId, - AnnotationKey, - AnnotationValue, - InstanceKey.GetValue()); - - return OVRP_SUCCESS(Result); - } - - bool CreateMarkerHandle(const char* Name, int* NameHandle) - { - if (nullptr == NameHandle) - { - return false; - } - - const ovrpResult Result = FOculusXRHMDModule::GetPluginWrapper().QplCreateMarkerHandle( - Name, - NameHandle); - - return OVRP_SUCCESS(Result); - } - - bool DestroyMarkerHandle(const int NameHandle) - { - const ovrpResult Result = FOculusXRHMDModule::GetPluginWrapper().QplDestroyMarkerHandle( - NameHandle); - - return OVRP_SUCCESS(Result); - } - - bool OnEditorShutdown() - { - const ovrpResult Result = FOculusXRHMDModule::GetPluginWrapper().OnEditorShutdown(); - - return OVRP_SUCCESS(Result); - } - - } // namespace QPL - bool FQPLBackend::MarkerStart(const int MarkerId, const FTelemetryInstanceKey InstanceKey, const FTelemetryTimestamp Timestamp) - { - return QPL::MarkerStart(MarkerId, InstanceKey, Timestamp); - } - bool FQPLBackend::MarkerEnd(const int MarkerId, const EAction Action, const FTelemetryInstanceKey InstanceKey, const FTelemetryTimestamp Timestamp) - { - return QPL::MarkerEnd(MarkerId, Action, InstanceKey, Timestamp); - }; - bool FQPLBackend::MarkerPoint(const int MarkerId, const char* Name, const FTelemetryInstanceKey InstanceKey, const FTelemetryTimestamp Timestamp) - { - return QPL::MarkerPoint(MarkerId, Name, InstanceKey, Timestamp); - }; - bool FQPLBackend::MarkerPointCached(const int MarkerId, const int NameHandle, const FTelemetryInstanceKey InstanceKey, const FTelemetryTimestamp Timestamp) - { - return QPL::MarkerPointCached(MarkerId, NameHandle, InstanceKey, Timestamp); - }; - bool FQPLBackend::MarkerAnnotation(const int MarkerId, const char* AnnotationKey, const char* AnnotationValue, const FTelemetryInstanceKey InstanceKey) - { - return QPL::MarkerAnnotation(MarkerId, AnnotationKey, AnnotationValue, InstanceKey); - }; - bool FQPLBackend::CreateMarkerHandle(const char* Name, int* NameHandle) - { - return QPL::CreateMarkerHandle(Name, NameHandle); - }; - bool FQPLBackend::DestroyMarkerHandle(const int NameHandle) - { - return QPL::DestroyMarkerHandle(NameHandle); - }; - bool FQPLBackend::OnEditorShutdown() - { - return QPL::OnEditorShutdown(); - }; -} // namespace OculusXRTelemetry diff --git a/Plugins/MetaXR/Source/OculusXRHMD/Private/OculusXRResourceHolder.cpp b/Plugins/MetaXR/Source/OculusXRHMD/Private/OculusXRResourceHolder.cpp deleted file mode 100644 index c8c6cb3..0000000 --- a/Plugins/MetaXR/Source/OculusXRHMD/Private/OculusXRResourceHolder.cpp +++ /dev/null @@ -1,27 +0,0 @@ -// @lint-ignore-every LICENSELINT -// Copyright Epic Games, Inc. All Rights Reserved. - -#include "OculusXRResourceHolder.h" -#include "HeadMountedDisplayTypes.h" // for LogHMD -#include "UObject/ConstructorHelpers.h" -#include "Materials/Material.h" - -////////////////////////////////////////////////////////////////////////// -// UOculusResourceManager - -UOculusXRResourceHolder::UOculusXRResourceHolder(const FObjectInitializer& ObjectInitializer) - : Super(ObjectInitializer) -{ - static ConstructorHelpers::FObjectFinder StaticPokeAHoleMaterial(TEXT("/OculusXR/Materials/PokeAHoleMaterial")); - - PokeAHoleMaterial = StaticPokeAHoleMaterial.Object; - - if (!PokeAHoleMaterial) - { - UE_LOG(LogHMD, Error, TEXT("Unable to load PokeAHoleMaterial")); - } - else - { - UE_LOG(LogHMD, Log, TEXT("PokeAHoleMaterial loaded successfully")); - } -} diff --git a/Plugins/MetaXR/Source/OculusXRHMD/Private/OculusXRResourceHolder.h b/Plugins/MetaXR/Source/OculusXRHMD/Private/OculusXRResourceHolder.h deleted file mode 100644 index f13ef77..0000000 --- a/Plugins/MetaXR/Source/OculusXRHMD/Private/OculusXRResourceHolder.h +++ /dev/null @@ -1,22 +0,0 @@ -// @lint-ignore-every LICENSELINT -// Copyright Epic Games, Inc. All Rights Reserved. - -#pragma once - -#include "CoreMinimal.h" -#include "UObject/Object.h" -#include "Materials/MaterialInterface.h" -#include "OculusXRResourceHolder.generated.h" - -/** - * - */ -UCLASS() -class UOculusXRResourceHolder : public UObject -{ - GENERATED_UCLASS_BODY() - -public: - UPROPERTY() - UMaterial* PokeAHoleMaterial; -}; diff --git a/Plugins/MetaXR/Source/OculusXRHMD/Private/OculusXRSceneCaptureCubemap.cpp b/Plugins/MetaXR/Source/OculusXRHMD/Private/OculusXRSceneCaptureCubemap.cpp deleted file mode 100644 index 159a4c0..0000000 --- a/Plugins/MetaXR/Source/OculusXRHMD/Private/OculusXRSceneCaptureCubemap.cpp +++ /dev/null @@ -1,193 +0,0 @@ -// @lint-ignore-every LICENSELINT -// Copyright Epic Games, Inc. All Rights Reserved. - -#include "OculusXRSceneCaptureCubemap.h" -#include "OculusXRHMDPrivate.h" -#include "IImageWrapper.h" -#include "IImageWrapperModule.h" -#include "Kismet/GameplayStatics.h" -#include "GameFramework/PlayerController.h" -#include "Components/SceneCaptureComponent2D.h" -#include "Engine/World.h" -#include "Engine/StaticMeshActor.h" -#include "Engine/TextureRenderTarget2D.h" -#include "TextureResource.h" -#include "HAL/FileManager.h" -#include "Misc/FileHelper.h" -#include "XRThreadUtils.h" -#include "RenderingThread.h" - -//------------------------------------------------------------------------------------------------- -// UOculusXRSceneCaptureCubemap -//------------------------------------------------------------------------------------------------- - -UOculusXRSceneCaptureCubemap::UOculusXRSceneCaptureCubemap() - : Stage(None) - , CaptureBoxSideRes(2048) - , CaptureFormat(EPixelFormat::PF_A16B16G16R16) - , OverriddenLocation(FVector::ZeroVector) - , OverriddenOrientation(FQuat::Identity) - , CaptureOffset(FVector::ZeroVector) -{ -} - -void UOculusXRSceneCaptureCubemap::StartCapture(UWorld* World, uint32 InCaptureBoxSideRes, EPixelFormat InFormat) -{ - CaptureBoxSideRes = InCaptureBoxSideRes; - CaptureFormat = InFormat; - - FVector Location = OverriddenLocation; - FQuat Orientation = OverriddenOrientation; - - APlayerController* CapturePlayerController = UGameplayStatics::GetPlayerController(GWorld, 0); - if (CapturePlayerController) - { - FRotator Rotation; - CapturePlayerController->GetPlayerViewPoint(Location, Rotation); - Rotation.Pitch = Rotation.Roll = 0; - Orientation = FQuat(Rotation); - - Location += CaptureOffset; - } - - if (!OverriddenOrientation.IsIdentity()) - { - Orientation = OverriddenOrientation; - } - if (!OverriddenLocation.IsZero()) - { - Location = OverriddenLocation; - } - - const FVector ZAxis(0, 0, 1); - const FVector YAxis(0, 1, 0); - const FQuat FaceOrientations[] = { { ZAxis, PI / 2 }, { ZAxis, -PI / 2 }, // right, left - { YAxis, -PI / 2 }, { YAxis, PI / 2 }, // top, bottom - { ZAxis, 0 }, { ZAxis, -PI } }; // front, back - - for (int i = 0; i < 6; ++i) - { - USceneCaptureComponent2D* CaptureComponent = NewObject(); - CaptureComponent->SetVisibility(true); - CaptureComponent->SetHiddenInGame(false); - - CaptureComponent->FOVAngle = 90.f; - CaptureComponent->bCaptureEveryFrame = true; - CaptureComponent->CaptureSource = ESceneCaptureSource::SCS_FinalColorLDR; - - const FName TargetName = MakeUniqueObjectName(this, UTextureRenderTarget2D::StaticClass(), TEXT("SceneCaptureTextureTarget")); - CaptureComponent->TextureTarget = NewObject(this, TargetName); - CaptureComponent->TextureTarget->InitCustomFormat(CaptureBoxSideRes, CaptureBoxSideRes, CaptureFormat, false); - - CaptureComponents.Add(CaptureComponent); - - CaptureComponent->RegisterComponentWithWorld(GWorld); - - CaptureComponent->SetWorldLocationAndRotation(Location, Orientation * FaceOrientations[i]); - CaptureComponent->UpdateContent(); - } - Stage = SettingPos; - - FActorSpawnParameters SpawnInfo; - SpawnInfo.SpawnCollisionHandlingOverride = ESpawnActorCollisionHandlingMethod::AlwaysSpawn; - SpawnInfo.bNoFail = true; - SpawnInfo.ObjectFlags = RF_Transient; - - AStaticMeshActor* InGameActor; - InGameActor = World->SpawnActor(SpawnInfo); - - OutputDir = FPaths::ProjectSavedDir() + TEXT("/Cubemaps"); - IFileManager::Get().MakeDirectory(*OutputDir); -} - -void UOculusXRSceneCaptureCubemap::Tick(float DeltaTime) -{ - ExecuteOnRenderThread([]() { - TickRenderingTickables(); - }); - - if (Stage == SettingPos) - { - Stage = Capturing; - return; - } - - // Read Whole Capture Buffer - IImageWrapperModule& ImageWrapperModule = FModuleManager::LoadModuleChecked(FName("ImageWrapper")); - TSharedPtr ImageWrapper = ImageWrapperModule.CreateImageWrapper(EImageFormat::PNG); - - TArray OneFaceSurface, WholeCubemapData; - OneFaceSurface.AddUninitialized(CaptureBoxSideRes * CaptureBoxSideRes); - WholeCubemapData.AddUninitialized(CaptureBoxSideRes * 6 * CaptureBoxSideRes); - // Read pixels - for (int cubeFaceIdx = 0; cubeFaceIdx < 6; ++cubeFaceIdx) - { - auto RenderTarget = CaptureComponents[cubeFaceIdx]->TextureTarget->GameThread_GetRenderTargetResource(); - RenderTarget->ReadPixelsPtr(OneFaceSurface.GetData(), FReadSurfaceDataFlags()); - - // enforce alpha to be 1 - for (FColor& Color : OneFaceSurface) - { - Color.A = 255; - } - - // copy subimage into whole cubemap array - const uint32 Stride = CaptureBoxSideRes * 6; - const uint32 XOff = cubeFaceIdx * CaptureBoxSideRes; - const uint32 StripSizeInBytes = CaptureBoxSideRes * sizeof(FColor); - for (uint32 y = 0; y < CaptureBoxSideRes; ++y) - { - FMemory::Memcpy(WholeCubemapData.GetData() + XOff + y * Stride, OneFaceSurface.GetData() + y * CaptureBoxSideRes, StripSizeInBytes); - } - } - - ImageWrapper->SetRaw(WholeCubemapData.GetData(), WholeCubemapData.GetAllocatedSize(), CaptureBoxSideRes * 6, CaptureBoxSideRes, ERGBFormat::BGRA, 8); - const TArray64& PNGData = ImageWrapper->GetCompressed(100); - - const FString Filename = OutputDir + FString::Printf(TEXT("/Cubemap-%d-%s.png"), CaptureBoxSideRes, *FDateTime::Now().ToString(TEXT("%m.%d-%H.%M.%S"))); - - FFileHelper::SaveArrayToFile(PNGData, *Filename); - - check(Stage == Capturing); - Stage = Finished; - for (int i = 0; i < CaptureComponents.Num(); ++i) - { - CaptureComponents[i]->UnregisterComponent(); - } - CaptureComponents.SetNum(0); - RemoveFromRoot(); // We're done here, so remove ourselves from the root set. @TODO: Fix this later -} - -#if !UE_BUILD_SHIPPING -void UOculusXRSceneCaptureCubemap::CaptureCubemapCommandHandler(const TArray& Args, UWorld* World, FOutputDevice& Ar) -{ - bool bCreateOculusMobileCubemap = false; - FVector CaptureOffset(FVector::ZeroVector); - float Yaw = 0.f; - for (const FString& Arg : Args) - { - FParse::Value(*Arg, TEXT("XOFF="), CaptureOffset.X); - FParse::Value(*Arg, TEXT("YOFF="), CaptureOffset.Y); - FParse::Value(*Arg, TEXT("ZOFF="), CaptureOffset.Z); - FParse::Value(*Arg, TEXT("YAW="), Yaw); - - if (Arg.Equals(TEXT("MOBILE"), ESearchCase::IgnoreCase)) - { - bCreateOculusMobileCubemap = true; - } - } - - UOculusXRSceneCaptureCubemap* CubemapCapturer = NewObject(); - CubemapCapturer->AddToRoot(); // TODO: Don't add the object to the GC root - CubemapCapturer->SetOffset((FVector)CaptureOffset); - if (Yaw != 0.f) - { - FRotator Rotation(FRotator::ZeroRotator); - Rotation.Yaw = Yaw; - const FQuat Orient(Rotation); - CubemapCapturer->SetInitialOrientation(Orient); - } - const uint32 CaptureHeight = 2048; - CubemapCapturer->StartCapture(World, bCreateOculusMobileCubemap ? CaptureHeight / 2 : CaptureHeight); -} -#endif diff --git a/Plugins/MetaXR/Source/OculusXRHMD/Private/OculusXRSceneCaptureCubemap.h b/Plugins/MetaXR/Source/OculusXRHMD/Private/OculusXRSceneCaptureCubemap.h deleted file mode 100644 index 561b13e..0000000 --- a/Plugins/MetaXR/Source/OculusXRHMD/Private/OculusXRSceneCaptureCubemap.h +++ /dev/null @@ -1,79 +0,0 @@ -// @lint-ignore-every LICENSELINT -// Copyright Epic Games, Inc. All Rights Reserved. - -#pragma once -#include "OculusXRHMDPrivate.h" -#include "UObject/ObjectMacros.h" -#include "Tickable.h" -#include "OculusXRSceneCaptureCubemap.generated.h" - -//------------------------------------------------------------------------------------------------- -// UOculusXRSceneCaptureCubemap -//------------------------------------------------------------------------------------------------- - -class USceneCaptureComponent2D; - -UCLASS() -class UOculusXRSceneCaptureCubemap : public UObject, public FTickableGameObject -{ - GENERATED_BODY() -public: - UOculusXRSceneCaptureCubemap(); - - virtual void Tick(float DeltaTime) override; - - virtual bool IsTickable() const override - { - return CaptureComponents.Num() != 0 && Stage != None; - } - - virtual bool IsTickableWhenPaused() const override - { - return IsTickable(); - } - - virtual TStatId GetStatId() const - { - RETURN_QUICK_DECLARE_CYCLE_STAT(USceneCapturer, STATGROUP_Tickables); - } - - // init capture params and start - void StartCapture(UWorld* World, uint32 InCaptureBoxSideRes, EPixelFormat InFormat = EPixelFormat::PF_A16B16G16R16); - - // sets offset for the capture, in UU, relatively to current player 0 location - void SetOffset(FVector InOffset) { CaptureOffset = InOffset; } - - // overrides player's 0 orientation for the capture. - void SetInitialOrientation(const FQuat& InOrientation) { OverriddenOrientation = InOrientation; } - - // overrides player's 0 location for the capture. - void SetInitialLocation(FVector InLocation) { OverriddenLocation = InLocation; } - - bool IsFinished() const { return Stage == Finished; } - bool IsCapturing() const { return Stage == Capturing || Stage == SettingPos; } - -#if !UE_BUILD_SHIPPING - static void CaptureCubemapCommandHandler(const TArray& Args, UWorld* World, FOutputDevice& Ar); -#endif // UE_BUILD_SHIPPING - -private: - enum EStage - { - None, - SettingPos, - Capturing, - Finished - } Stage; - - UPROPERTY() - TArray CaptureComponents; - - uint32 CaptureBoxSideRes; - EPixelFormat CaptureFormat; - - FString OutputDir; - - FVector OverriddenLocation; // overridden location of the capture, world coordinates, UU - FQuat OverriddenOrientation; // overridden orientation of the capture. Full orientation is used (not only yaw, like with player's rotation). - FVector CaptureOffset; // offset relative to current player's 0 location -}; diff --git a/Plugins/MetaXR/Source/OculusXRHMD/Private/OculusXRSimulator.cpp b/Plugins/MetaXR/Source/OculusXRHMD/Private/OculusXRSimulator.cpp deleted file mode 100644 index fe39768..0000000 --- a/Plugins/MetaXR/Source/OculusXRHMD/Private/OculusXRSimulator.cpp +++ /dev/null @@ -1,515 +0,0 @@ -// @lint-ignore-every LICENSELINT -// Copyright Epic Games, Inc. All Rights Reserved. - -#include "OculusXRSimulator.h" - -#if PLATFORM_WINDOWS -#include "HttpModule.h" -#include "Interfaces/IHttpResponse.h" -#include "Interfaces/IHttpRequest.h" -#include "Misc/FileHelper.h" -#include "Misc/Paths.h" -#include "HAL/PlatformFilemanager.h" -#include "GenericPlatform/GenericPlatformFile.h" -#include "libzip/zip.h" - -#include "HAL/FileManager.h" -#include "OculusXRHMDRuntimeSettings.h" -#include "OculusXRTelemetryEvents.h" -#include "Misc/MessageDialog.h" -#include "OpenXR/OculusXROpenXRUtilities.h" -#include "Internationalization/Regex.h" - -#include "Windows/WindowsPlatformMisc.h" -#include "Interfaces/IPluginManager.h" - -#include "Framework/Notifications/NotificationManager.h" -#include "Widgets/Notifications/SNotificationList.h" - -#if WITH_EDITOR -#include "UnrealEdMisc.h" -#endif // WITH_EDITOR - -const FString OpenXrRuntimeEnvKey = "XR_RUNTIME_JSON"; -const FString PreviousOpenXrRuntimeEnvKey = "XR_RUNTIME_JSON_PREV"; - -namespace -{ - class FZipArchiveReader - { - public: - FZipArchiveReader(IFileHandle* InFileHandle); - ~FZipArchiveReader(); - - bool IsValid() const; - TArray GetFileNames() const; - bool TryReadFile(FStringView FileName, TArray& OutData) const; - - private: - TMap EmbeddedFileToIndex; - IFileHandle* FileHandle = nullptr; - zip_source_t* ZipFileSource = nullptr; - zip_t* ZipFile = nullptr; - uint64 FilePos = 0; - uint64 FileSize = 0; - - void Destruct(); - zip_int64_t ZipSourceFunctionReader(void* OutData, zip_uint64_t DataLen, zip_source_cmd_t Command); - - static zip_int64_t ZipSourceFunctionReaderStatic(void* InUserData, void* OutData, zip_uint64_t DataLen, - zip_source_cmd_t Command); - }; - - FZipArchiveReader::FZipArchiveReader(IFileHandle* InFileHandle) - : FileHandle(InFileHandle) - { - if (!FileHandle) - { - Destruct(); - return; - } - - if (FileHandle->Tell() != 0) - { - FileHandle->Seek(0); - } - FilePos = 0; - FileSize = FileHandle->Size(); - zip_error_t ZipError; - zip_error_init(&ZipError); - ZipFileSource = zip_source_function_create(ZipSourceFunctionReaderStatic, this, &ZipError); - if (!ZipFileSource) - { - zip_error_fini(&ZipError); - Destruct(); - return; - } - - zip_error_init(&ZipError); - ZipFile = zip_open_from_source(ZipFileSource, ZIP_RDONLY, &ZipError); - if (!ZipFile) - { - zip_error_fini(&ZipError); - Destruct(); - return; - } - - zip_int64_t NumberOfFiles = zip_get_num_entries(ZipFile, 0); - if (NumberOfFiles < 0 || MAX_int32 < NumberOfFiles) - { - Destruct(); - return; - } - EmbeddedFileToIndex.Reserve(NumberOfFiles); - - // produce the manifest file first in case the operation gets canceled while unzipping - for (zip_int64_t i = 0; i < NumberOfFiles; i++) - { - zip_stat_t ZipFileStat; - if (zip_stat_index(ZipFile, i, 0, &ZipFileStat) != 0) - { - Destruct(); - return; - } - zip_uint64_t ValidStat = ZipFileStat.valid; - if (!(ValidStat & ZIP_STAT_NAME)) - { - Destruct(); - return; - } - EmbeddedFileToIndex.Add(FString(ANSI_TO_TCHAR(ZipFileStat.name)), i); - } - } - - FZipArchiveReader::~FZipArchiveReader() - { - Destruct(); - } - - void FZipArchiveReader::Destruct() - { - EmbeddedFileToIndex.Empty(); - if (ZipFile) - { - zip_close(ZipFile); - ZipFile = nullptr; - } - if (ZipFileSource) - { - zip_source_close(ZipFileSource); - ZipFileSource = nullptr; - } - delete FileHandle; - FileHandle = nullptr; - } - - bool FZipArchiveReader::IsValid() const - { - return ZipFile != nullptr; - } - - TArray FZipArchiveReader::GetFileNames() const - { - TArray Result; - EmbeddedFileToIndex.GenerateKeyArray(Result); - return Result; - } - - bool FZipArchiveReader::TryReadFile(FStringView FileName, TArray& OutData) const - { - OutData.Reset(); - - const zip_int64_t* Index = EmbeddedFileToIndex.FindByHash(GetTypeHash(FileName), FileName); - if (!Index) - { - return false; - } - - zip_stat_t ZipFileStat; - if (zip_stat_index(ZipFile, *Index, 0, &ZipFileStat) != 0) - { - return false; - } - - if (!(ZipFileStat.valid & ZIP_STAT_SIZE)) - { - return false; - } - - if (ZipFileStat.size == 0) - { - return true; - } - if (ZipFileStat.size > MAX_int32) - { - return false; - } - - OutData.SetNumUninitialized(ZipFileStat.size, EAllowShrinking::No); - - zip_file* EmbeddedFile = zip_fopen_index(ZipFile, *Index, 0 /* flags */); - if (!EmbeddedFile) - { - OutData.Reset(); - return false; - } - bool bReadSuccess = zip_fread(EmbeddedFile, OutData.GetData(), ZipFileStat.size) == ZipFileStat.size; - zip_fclose(EmbeddedFile); - if (!bReadSuccess) - { - OutData.Reset(); - return false; - } - return true; - } - - zip_int64_t FZipArchiveReader::ZipSourceFunctionReaderStatic( - void* InUserData, void* OutData, zip_uint64_t DataLen, zip_source_cmd_t Command) - { - return reinterpret_cast(InUserData)->ZipSourceFunctionReader(OutData, DataLen, Command); - } - - zip_int64_t FZipArchiveReader::ZipSourceFunctionReader( - void* OutData, zip_uint64_t DataLen, zip_source_cmd_t Command) - { - switch (Command) - { - case ZIP_SOURCE_OPEN: - return 0; - case ZIP_SOURCE_READ: - if (FilePos == FileSize) - { - return 0; - } - DataLen = FMath::Min(static_cast(FileSize - FilePos), DataLen); - if (!FileHandle->Read(reinterpret_cast(OutData), DataLen)) - { - return 0; - } - FilePos += DataLen; - return DataLen; - case ZIP_SOURCE_CLOSE: - return 0; - case ZIP_SOURCE_STAT: - { - zip_stat_t* OutStat = reinterpret_cast(OutData); - zip_stat_init(OutStat); - OutStat->size = FileSize; - OutStat->comp_size = FileSize; - OutStat->comp_method = ZIP_CM_STORE; - OutStat->encryption_method = ZIP_EM_NONE; - OutStat->valid = ZIP_STAT_SIZE | ZIP_STAT_COMP_SIZE | ZIP_STAT_COMP_METHOD | ZIP_STAT_ENCRYPTION_METHOD; - return sizeof(*OutStat); - } - case ZIP_SOURCE_ERROR: - { - zip_uint32_t* OutLibZipError = reinterpret_cast(OutData); - zip_uint32_t* OutSystemError = OutLibZipError + 1; - *OutLibZipError = ZIP_ER_INTERNAL; - *OutSystemError = 0; - return 2 * sizeof(*OutLibZipError); - } - case ZIP_SOURCE_FREE: - return 0; - case ZIP_SOURCE_SEEK: - { - zip_int64_t NewOffset = zip_source_seek_compute_offset(FilePos, FileSize, OutData, DataLen, nullptr); - if (NewOffset < 0 || FileSize < static_cast(NewOffset)) - { - return -1; - } - - if (!FileHandle->Seek(NewOffset)) - { - return -1; - } - FilePos = NewOffset; - return 0; - } - case ZIP_SOURCE_TELL: - return static_cast(FilePos); - case ZIP_SOURCE_SUPPORTS: - return zip_source_make_command_bitmap(ZIP_SOURCE_OPEN, ZIP_SOURCE_READ, ZIP_SOURCE_CLOSE, ZIP_SOURCE_STAT, - ZIP_SOURCE_ERROR, ZIP_SOURCE_FREE, ZIP_SOURCE_SEEK, ZIP_SOURCE_TELL, ZIP_SOURCE_SUPPORTS, -1); - default: - return 0; - } - } - - bool Unzip(const FString& Path, const FString& TargetPath, const TSharedPtr& Notification) - { - IPlatformFile& FileManager = FPlatformFileManager::Get().GetPlatformFile(); - - IFileHandle* ArchiveFileHandle = FileManager.OpenRead(*Path); - const FZipArchiveReader ZipArchiveReader(ArchiveFileHandle); - if (!ZipArchiveReader.IsValid()) - { - return false; - } - - const TArray ArchiveFiles = ZipArchiveReader.GetFileNames(); - uint64 Size = ArchiveFiles.Num(); - uint64 Index = 0; - for (const FString& FileName : ArchiveFiles) - { - Index++; - if (Notification.IsValid()) - { - Notification->SetText(FText::FromString(FString::Format(TEXT("Unzipping {0} / {1}"), { Index, Size }))); - } - - if (FileName.EndsWith("/") || FileName.EndsWith("\\")) - continue; - if (TArray FileBuffer; ZipArchiveReader.TryReadFile(FileName, FileBuffer)) - { - if (!FFileHelper::SaveArrayToFile(FileBuffer, *(TargetPath / FileName))) - { - return false; - } - } - } - return true; - } -} // namespace -bool FMetaXRSimulator::IsSimulatorActivated() -{ - FString MetaXRSimPath = GetSimulatorJsonPath(); - FString CurRuntimePath = FWindowsPlatformMisc::GetEnvironmentVariable(*OpenXrRuntimeEnvKey); - return (!MetaXRSimPath.IsEmpty() && MetaXRSimPath == CurRuntimePath); -} - -void FMetaXRSimulator::ToggleOpenXRRuntime() -{ - OculusXRTelemetry::TScopedMarker Event; - FString MetaXRSimPath = GetSimulatorJsonPath(); - if (!IFileManager::Get().FileExists(*MetaXRSimPath)) - { - InstallSimulator(ToggleOpenXRRuntime); - UE_LOG(LogMetaXRSim, Log, TEXT("Meta XR Simulator Not Installed.\nInstalling Meta XR Simulator.")); - return; - } - -#if WITH_EDITOR - if (OculusXR::IsOpenXRSystem()) - { - FString ActivationText = IsSimulatorActivated() ? "deactivate" : "activate"; - FString Message = FString::Format(TEXT("A restart is required in order to {0} XR simulator. The restart must be performed from this dialog, opening and closing the editor manually will not work. Restart now?"), { ActivationText }); - if (FMessageDialog::Open(EAppMsgType::OkCancel, FText::FromString(Message)) == EAppReturnType::Cancel) - { - UE_LOG(LogMetaXRSim, Log, TEXT("Meta XR Simulator %s action canceled."), *ActivationText); - const auto& NotEnd = Event.SetResult(OculusXRTelemetry::EAction::Fail).AddAnnotation("reason", "restart canceled"); - return; - } - } -#endif // WITH_EDITOR - - if (IsSimulatorActivated()) - { - // Deactivate MetaXR Simulator - FString PrevOpenXrRuntimeEnvKey = FWindowsPlatformMisc::GetEnvironmentVariable(*PreviousOpenXrRuntimeEnvKey); - - FWindowsPlatformMisc::SetEnvironmentVar(*PreviousOpenXrRuntimeEnvKey, - TEXT("")); - FWindowsPlatformMisc::SetEnvironmentVar(*OpenXrRuntimeEnvKey, *PrevOpenXrRuntimeEnvKey); - - UE_LOG(LogMetaXRSim, Log, TEXT("Meta XR Simulator is deactivated. (%s : %s)"), *OpenXrRuntimeEnvKey, *PrevOpenXrRuntimeEnvKey); - const auto& NotEnd = Event.AddAnnotation("action", "deactivated"); - } - else - { - // Activate MetaXR Simulator - FString CurOpenXrRuntimeEnvKey = FWindowsPlatformMisc::GetEnvironmentVariable(*OpenXrRuntimeEnvKey); - - FWindowsPlatformMisc::SetEnvironmentVar(*PreviousOpenXrRuntimeEnvKey, - *CurOpenXrRuntimeEnvKey); - FWindowsPlatformMisc::SetEnvironmentVar(*OpenXrRuntimeEnvKey, *MetaXRSimPath); - - UE_LOG(LogMetaXRSim, Log, TEXT("Meta XR Simulator is activated. (%s : %s)"), *OpenXrRuntimeEnvKey, *MetaXRSimPath); - const auto& NotEnd = Event.AddAnnotation("action", "activated"); - } - -#if WITH_EDITOR - if (OculusXR::IsOpenXRSystem()) - { - FUnrealEdMisc::Get().RestartEditor(false); - } -#endif // WITH_EDITOR -} - -FString FMetaXRSimulator::GetSimulatorJsonPath() -{ - return FPaths::Combine(GetPackagePath(), TEXT("meta_openxr_simulator.json")); -} - -bool FMetaXRSimulator::IsSimulatorInstalled() -{ - return FPaths::FileExists(GetSimulatorJsonPath()); -} - -void FMetaXRSimulator::TryActivateOnStartup() -{ -#if OCULUS_HMD_SUPPORTED_PLATFORMS && WITH_EDITOR - // If -HMDSimulator is used as the command option to launch UE, use simulator runtime instead of the physical HMD runtime (like PC-Link). - if (FParse::Param(FCommandLine::Get(), TEXT("HMDSimulator"))) - { - if (IsSimulatorActivated()) - { - return; - } - - ToggleOpenXRRuntime(); - } -#endif // OCULUS_HMD_SUPPORTED_PLATFORMS && WITH_EDITOR -} - -FString FMetaXRSimulator::GetPackagePath() -{ - return FPaths::Combine(FPlatformMisc::GetEnvironmentVariable(TEXT("LOCALAPPDATA")), TEXT("MetaXR"), TEXT("MetaXRSimulator"), GetVersion()); -} - -void FMetaXRSimulator::InstallSimulator(const TFunction& OnSuccess) -{ - FNotificationInfo Progress(FText::FromString("Installing Meta XR Simulator...")); - Progress.bFireAndForget = false; - Progress.FadeInDuration = 0.5f; - Progress.FadeOutDuration = 0.5f; - Progress.ExpireDuration = 5.0f; - Progress.bUseThrobber = true; - Progress.bUseSuccessFailIcons = true; - - TSharedPtr NotificationItem = FSlateNotificationManager::Get().AddNotification(Progress); - if (NotificationItem.IsValid()) - { - NotificationItem->SetCompletionState(SNotificationItem::CS_Pending); - } - - auto DestinationFolder = GetPackagePath(); - auto DownloadPath = FPaths::Combine(FPaths::EngineSavedDir(), TEXT("Downloads"), TEXT("MetaXRSimulator"), GetVersion(), TEXT("MetaXRSimulator.zip")); - - if (FPaths::FileExists(DownloadPath)) - { - UnzipSimulator(DownloadPath, DestinationFolder, NotificationItem, OnSuccess); - return; - } - - TSharedPtr Request = FHttpModule::Get().CreateRequest(); - - Request->OnProcessRequestComplete().BindLambda([DownloadPath, DestinationFolder, NotificationItem, OnSuccess](FHttpRequestPtr Request, FHttpResponsePtr Response, bool bWasSuccessful) { - Request->OnRequestProgress64().Unbind(); - if (Response.IsValid() && EHttpResponseCodes::IsOk(Response->GetResponseCode())) - { - // Save the downloaded zip file - FFileHelper::SaveArrayToFile(Response->GetContent(), *DownloadPath); - if (NotificationItem.IsValid()) - { - NotificationItem->SetText(FText::FromString("Unzipping ... ")); - } - - UnzipSimulator(DownloadPath, DestinationFolder, NotificationItem, OnSuccess); - return; - } - - UE_LOG(LogMetaXRSim, Error, TEXT("Failed to install Meta XR Simulator.")); - if (NotificationItem.IsValid()) - { - NotificationItem->SetText(FText::FromString("Installation failed!")); - NotificationItem->SetCompletionState(SNotificationItem::CS_Fail); - NotificationItem->ExpireAndFadeout(); - } - }); - - Request->OnRequestProgress64().BindLambda([NotificationItem](const FHttpRequestPtr& Request, uint64 /* BytesSent */, uint64 BytesReceived) { - uint64 ContentLength = Request->GetResponse()->GetContentLength(); - if (NotificationItem.IsValid()) - { - NotificationItem->SetText(FText::FromString(FString::Format(TEXT("Downloading {0} / {1}"), { BytesReceived, ContentLength }))); - } - }); - - Request->SetURL("https://www.facebook.com/horizon_devcenter_download?app_id=28549923061320041&sdk_version=" + GetVersion()); - Request->SetVerb(TEXT("GET")); - Request->ProcessRequest(); -} - -FString FMetaXRSimulator::GetVersion() -{ - TSharedPtr Plugin = IPluginManager::Get().FindPlugin(TEXT("OculusXR")); - if (Plugin.IsValid()) - { - FString VersionName = Plugin->GetDescriptor().VersionName; - TArray ParsedParts; - VersionName.ParseIntoArray(ParsedParts, TEXT("."), true); - return FString::FromInt(FCString::Atoi(*ParsedParts[1]) - 32); - } - return "0"; -} - -void FMetaXRSimulator::UnzipSimulator(const FString& Path, const FString& TargetPath, const TSharedPtr& Notification, - const TFunction& OnSuccess) -{ - bool bSuccess = Unzip(Path, TargetPath, Notification); - - if (!bSuccess || !IsSimulatorInstalled()) - { - UE_LOG(LogMetaXRSim, Error, TEXT("Failed to unzip the file.")); - if (Notification.IsValid()) - { - Notification->SetText(FText::FromString("Installation failed!")); - Notification->SetCompletionState(SNotificationItem::CS_Fail); - Notification->ExpireAndFadeout(); - } - return; - } - if (Notification.IsValid()) - { - Notification->SetText(FText::FromString("Installation succeeded!")); - Notification->SetCompletionState(SNotificationItem::CS_Success); - Notification->ExpireAndFadeout(); - } - - if (OnSuccess) - { - OnSuccess(); - } -} -#endif // PLATFORM_WINDOWS diff --git a/Plugins/MetaXR/Source/OculusXRHMD/Private/OculusXRSimulator.h b/Plugins/MetaXR/Source/OculusXRHMD/Private/OculusXRSimulator.h deleted file mode 100644 index a4ac4f2..0000000 --- a/Plugins/MetaXR/Source/OculusXRHMD/Private/OculusXRSimulator.h +++ /dev/null @@ -1,30 +0,0 @@ -// @lint-ignore-every LICENSELINT -// Copyright Epic Games, Inc. All Rights Reserved. - -#pragma once - -#include "CoreMinimal.h" - -#if PLATFORM_WINDOWS - -#include "Widgets/Notifications/SNotificationList.h" - -DEFINE_LOG_CATEGORY_STATIC(LogMetaXRSim, Log, All); - -/** */ -class FMetaXRSimulator -{ -public: - static bool IsSimulatorActivated(); - static void ToggleOpenXRRuntime(); - static void TryActivateOnStartup(); - static FString GetPackagePath(); - static bool IsSimulatorInstalled(); - -private: - static FString GetSimulatorJsonPath(); - static void InstallSimulator(const TFunction& OnSuccess); - static FString GetVersion(); - static void UnzipSimulator(const FString& Path, const FString& TargetPath, const TSharedPtr& Notification, const TFunction& OnSuccess); -}; -#endif diff --git a/Plugins/MetaXR/Source/OculusXRHMD/Private/OculusXRStereoLayersFlagsSupplier.cpp b/Plugins/MetaXR/Source/OculusXRHMD/Private/OculusXRStereoLayersFlagsSupplier.cpp deleted file mode 100644 index 40f76c3..0000000 --- a/Plugins/MetaXR/Source/OculusXRHMD/Private/OculusXRStereoLayersFlagsSupplier.cpp +++ /dev/null @@ -1,85 +0,0 @@ -// @lint-ignore-every LICENSELINT -// Copyright Epic Games, Inc. All Rights Reserved. - -#include "OculusXRStereoLayersFlagsSupplier.h" -#include "IStereoLayers.h" -#include "OVR_Plugin_Types.h" - -TSharedPtr FOculusXRStereoLayersFlagsSupplier::Instance = NULL; - -TSharedPtr FOculusXRStereoLayersFlagsSupplier::Get() -{ - if (!Instance.IsValid()) - { - Instance = MakeShared(); - } - - return Instance; -} - -FOculusXRStereoLayersFlagsSupplier::FOculusXRStereoLayersFlagsSupplier() -{ -#if !UE_VERSION_OLDER_THAN(5, 4, 0) - uint32 Value = IStereoLayers::ELayerFlags::LAYER_FLAG_MAX_VALUE << 1; - UnrealFlagValOvrpFlagValMap.Add(Value, ovrpLayerFlag_BicubicFiltering); - SupportedFilters.Add(FName("Bicubic Filtering")); - - Value = Value << 1; - UnrealFlagValOvrpFlagValMap.Add(Value, ovrpLayerSubmitFlag_AutoLayerFilter); - SupportedFilters.Add(FName("Auto Filtering")); - - Value = Value << 1; - UnrealFlagValOvrpFlagValMap.Add(Value, ovrpLayerSubmitFlag_EfficientSuperSample); - SupportedFilters.Add(FName("Normal SuperSampling")); - - Value = Value << 1; - UnrealFlagValOvrpFlagValMap.Add(Value, ovrpLayerSubmitFlag_ExpensiveSuperSample); - SupportedFilters.Add(FName("Quality SuperSampling")); - - Value = Value << 1; - UnrealFlagValOvrpFlagValMap.Add(Value, ovrpLayerSubmitFlag_EfficientSharpen); - SupportedFilters.Add(FName("Normal Sharpening")); - - Value = Value << 1; - UnrealFlagValOvrpFlagValMap.Add(Value, ovrpLayerSubmitFlag_QualitySharpen); - SupportedFilters.Add(FName("Quality Sharpening")); -#endif // !UE_VERSION_OLDER_THAN(5, 4, 0) -} - -int FOculusXRStereoLayersFlagsSupplier::GetOvrpFlag(uint32 DescFlags, bool bMQSR) -{ - int LayerSubmitFlags = 0; -#if !UE_VERSION_OLDER_THAN(5, 4, 0) - for (auto& FlagPair : UnrealFlagValOvrpFlagValMap) - { - if (bMQSR && FlagPair.Value == ovrpLayerFlag_BicubicFiltering) - { - continue; - } - else if (!bMQSR && FlagPair.Value != ovrpLayerFlag_BicubicFiltering) - { - continue; - } - - if (DescFlags & FlagPair.Key) - { - LayerSubmitFlags |= FlagPair.Value; - } - } - - if (bMQSR) - { // validate if autofilter conflicts with supersampling and sharpening - bool bAutoFiltering = LayerSubmitFlags & ovrpLayerSubmitFlag_AutoLayerFilter; - bool bSuperSamplingType = ((LayerSubmitFlags & ovrpLayerSubmitFlag_EfficientSuperSample) || (LayerSubmitFlags & ovrpLayerSubmitFlag_ExpensiveSuperSample)); - bool bSSharpenType = ((LayerSubmitFlags & ovrpLayerSubmitFlag_EfficientSharpen) || (LayerSubmitFlags & ovrpLayerSubmitFlag_QualitySharpen)); - - if (!bAutoFiltering && bSuperSamplingType && bSSharpenType) - { - UE_LOG(LogTemp, Error, TEXT("XR sharpening and supersampling cannot be enabled simultaneously.\n Either enable autofiltering or disable one of the options.")); - return 0; - } - } -#endif // !UE_VERSION_OLDER_THAN(5, 4, 0) - - return LayerSubmitFlags; -} diff --git a/Plugins/MetaXR/Source/OculusXRHMD/Private/OculusXRSyntheticEnvironmentServer.cpp b/Plugins/MetaXR/Source/OculusXRHMD/Private/OculusXRSyntheticEnvironmentServer.cpp deleted file mode 100644 index c09aef8..0000000 --- a/Plugins/MetaXR/Source/OculusXRHMD/Private/OculusXRSyntheticEnvironmentServer.cpp +++ /dev/null @@ -1,176 +0,0 @@ -// @lint-ignore-every LICENSELINT -// Copyright Epic Games, Inc. All Rights Reserved. - -#include "OculusXRSyntheticEnvironmentServer.h" - -#include "OculusXRSimulator.h" -#if PLATFORM_WINDOWS -#include "HAL/FileManager.h" -#include "Internationalization/Regex.h" -#include "OculusXRHMDRuntimeSettings.h" -#include "OculusXRTelemetryEvents.h" -#include "Misc/FileHelper.h" -#include "Misc/MessageDialog.h" -#include "Windows/WindowsPlatformMisc.h" - -const FString SynthEnvServer = "Synthetic Environment Server"; -const FString LocalSharingServer = "Local Sharing Server"; - -FProcHandle FMetaXRSES::EnvProcHandle; -FProcHandle FMetaXRSES::LSSProcHandle; - -void FMetaXRSES::StopServer() -{ - StopProcess(EnvProcHandle, SynthEnvServer); - StopProcess(LSSProcHandle, LocalSharingServer); -} - -void FMetaXRSES::LaunchEnvironment(int32 EnvironmentIndex) -{ - const FString EnvironmentName = SynthEnvRooms[EnvironmentIndex].SynthName; - const FString SESPath = SynthEnvRooms[EnvironmentIndex].Executable; - - if (FMetaXRSimulator::GetPackagePath().IsEmpty() || SESPath.IsEmpty() || EnvironmentName.IsEmpty()) - { - return; - } - StopServer(); - - OculusXRTelemetry::TScopedMarker Event; - const bool bLaunched = LaunchProcess(SESPath, EnvironmentName, LocalSharingServer, EnvProcHandle); - const auto& _ = Event.SetResult(bLaunched ? OculusXRTelemetry::EAction::Success : OculusXRTelemetry::EAction::Fail).AddAnnotation("launch", StringCast(*EnvironmentName).Get()); - - LaunchLocalSharingServer(); -} - -void FMetaXRSES::LaunchLocalSharingServer() -{ - OculusXRTelemetry::TScopedMarker Event; - FString LSSPath = GetLocalSharingServerPath(); - const bool bLaunched = LaunchProcess(LSSPath, "", LocalSharingServer, LSSProcHandle); - const auto& _ = Event.SetResult(bLaunched ? OculusXRTelemetry::EAction::Success : OculusXRTelemetry::EAction::Fail).AddAnnotation("launch", "localsharingserver"); -} - -bool FMetaXRSES::LaunchProcess(FString BinaryPath, FString Arguments, FString LogContext, FProcHandle& OutProcHandle) -{ - if (!IFileManager::Get().FileExists(*BinaryPath)) - { - UE_LOG(LogMetaXRSES, Error, TEXT("Failed to find %s."), *BinaryPath); - return false; - } - UE_LOG(LogMetaXRSES, Log, TEXT("Launching %s."), *BinaryPath); - - uint32 OutProcessId = 0; - OutProcHandle = FPlatformProcess::CreateProc(*BinaryPath, *Arguments, false, false, false, &OutProcessId, 0, NULL, NULL); - if (!OutProcHandle.IsValid()) - { - UE_LOG(LogMetaXRSES, Error, TEXT("Failed to launch %s."), *BinaryPath); - FPlatformProcess::CloseProc(OutProcHandle); - return false; - } - - UE_LOG(LogMetaXRSES, Log, TEXT("Launched %s."), *BinaryPath); - return true; -} - -void FMetaXRSES::StopProcess(FProcHandle& ProcHandle, FString LogContext) -{ - if (ProcHandle.IsValid()) - { - if (FPlatformProcess::IsProcRunning(ProcHandle)) - { - UE_LOG(LogMetaXRSES, Log, TEXT("Stopping %s."), *LogContext); - FPlatformProcess::TerminateProc(ProcHandle); - } - FPlatformProcess::CloseProc(ProcHandle); - } - else - { - UE_LOG(LogMetaXRSES, Warning, TEXT("Failed to stop process %s because it is not active anymore."), *LogContext); - } -} - -TArray FMetaXRSES::SynthEnvRooms = {}; -bool FMetaXRSES::SynthEnvParsed = false; - -TArray GatherServers(const FString& path) -{ - TArray servers{}; - TArray batFiles{}; - const FString ext("bat"); - IFileManager::Get().FindFiles(batFiles, *path, *ext); - const static FRegexPattern pattern(TEXT("start (\\S+) (\\S+)")); - - for (const FString& stem : batFiles) - { - const FString file = path + "/" + stem; - FString result; - if (!FFileHelper::LoadFileToString(result, *file)) - { - continue; - } - - FRegexMatcher matcher(pattern, result); - - if (!matcher.FindNext()) - { - continue; - } - UE_LOG(LogMetaXRSES, Warning, TEXT("In %s, found %s && %s"), *file, *matcher.GetCaptureGroup(1), *matcher.GetCaptureGroup(2)); - FString left; - stem.Split(TEXT("."), &left, NULL); - auto absPath = path + "/" + matcher.GetCaptureGroup(1); - servers.Push({ left, matcher.GetCaptureGroup(2), IFileManager::Get().ConvertToAbsolutePathForExternalAppForRead(absPath.GetCharArray().GetData()) }); - } - return servers; -} - -TArray& FMetaXRSES::GetSynthEnvRooms() -{ - if (SynthEnvParsed) - { - return SynthEnvRooms; - } - - SynthEnvRooms = {}; - - FString dirPath = FMetaXRSimulator::GetPackagePath(); - if (dirPath.IsEmpty()) - { - return SynthEnvRooms; - } - - TArray dirNames; - IFileManager::Get().IterateDirectory(dirPath.GetCharArray().GetData(), [&dirNames](const TCHAR* name, bool) -> bool { - dirNames.Add(name); - return true; - }); - - for (auto dir : dirNames) - { - // find all of the servers in the subdirectories - SynthEnvRooms.Append(GatherServers(dir)); - } - SynthEnvParsed = true; - return SynthEnvRooms; -} - -FString FMetaXRSES::GetLocalSharingServerPath() -{ - FString Path = FMetaXRSimulator::GetPackagePath() + "/local_sharing_server~/local_sharing_server.exe"; - - if (!IFileManager::Get().FileExists(*Path)) - { - UE_LOG(LogMetaXRSES, Warning, TEXT("Failed to find %s, trying the previous version"), *Path); - Path = FMetaXRSimulator::GetPackagePath() + "/.local_sharing_server/local_sharing_server.exe"; - - if (!IFileManager::Get().FileExists(*Path)) - { - UE_LOG(LogMetaXRSES, Error, TEXT("Failed to find LocalSharingServer, giving up")); - Path = ""; - } - } - - return Path; -} -#endif diff --git a/Plugins/MetaXR/Source/OculusXRHMD/Private/OculusXRSyntheticEnvironmentServer.h b/Plugins/MetaXR/Source/OculusXRHMD/Private/OculusXRSyntheticEnvironmentServer.h deleted file mode 100644 index e8b76e9..0000000 --- a/Plugins/MetaXR/Source/OculusXRHMD/Private/OculusXRSyntheticEnvironmentServer.h +++ /dev/null @@ -1,41 +0,0 @@ -// @lint-ignore-every LICENSELINT -// Copyright Epic Games, Inc. All Rights Reserved. - -#pragma once - -#include "CoreMinimal.h" -#if PLATFORM_WINDOWS -DEFINE_LOG_CATEGORY_STATIC(LogMetaXRSES, Log, All); - -struct FProcHandle; - -/** */ -class FMetaXRSES -{ -public: - static void LaunchEnvironment(int32 EnvironmentIndex); - static void StopServer(); - - struct ServerInfo - { - FString GuiName; - FString SynthName; - FString Executable; - }; - - OCULUSXRHMD_API static TArray& GetSynthEnvRooms(); - -private: - static void LaunchLocalSharingServer(); - static bool LaunchProcess(FString BinaryPath, FString Arguments, FString LogContext, FProcHandle& OutProcHandle); - static void StopProcess(FProcHandle& ProcHandle, FString LogContext); - - static FString GetLocalSharingServerPath(); - - static FProcHandle EnvProcHandle; - static FProcHandle LSSProcHandle; - - static TArray SynthEnvRooms; - static bool SynthEnvParsed; -}; -#endif diff --git a/Plugins/MetaXR/Source/OculusXRHMD/Private/OculusXRTelemetry.cpp b/Plugins/MetaXR/Source/OculusXRHMD/Private/OculusXRTelemetry.cpp deleted file mode 100644 index 3d05143..0000000 --- a/Plugins/MetaXR/Source/OculusXRHMD/Private/OculusXRTelemetry.cpp +++ /dev/null @@ -1,93 +0,0 @@ -// Copyright (c) Meta Platforms, Inc. and affiliates. - -#include "OculusXRTelemetry.h" -#include "OculusXRHMDModule.h" -#include "OculusXRTelemetryPrivacySettings.h" -#include "Async/Async.h" -#include "GeneralProjectSettings.h" - -namespace OculusXRTelemetry -{ - namespace - { - const char* TelemetrySource = "UE5Integration"; - } - - bool IsActive() - { -#if OCULUS_HMD_SUPPORTED_PLATFORMS - if constexpr (FTelemetryBackend::IsNullBackend()) - { - return false; - } - // IsActive() can be called during shutdown, after the FOculusXRHMDModule has been unloaded. - // This means we can't use the checked FOculusXRHMDModule::Get(), we instead need to use a fallible - // GetModule(..) and check that the module exists. - FOculusXRHMDModule* HMDModule = static_cast(FModuleManager::Get().GetModule(IOculusXRHMDModule::NAME_OculusXRHMD)); - if (HMDModule && HMDModule->IsOVRPluginAvailable() && FOculusXRHMDModule::GetPluginWrapper().IsInitialized()) - { - return true; - } -#endif // OCULUS_HMD_SUPPORTED_PLATFORMS - return false; - } - - void IfActiveThen(TUniqueFunction Function) - { - AsyncTask(ENamedThreads::GameThread, [F = MoveTemp(Function)]() { - if (IsActive()) - { - F(); - } - }); - } - - void PropagateTelemetryConsent() - { -#ifdef WITH_EDITOR - if (FOculusXRHMDModule::Get().IsOVRPluginAvailable() && FOculusXRHMDModule::GetPluginWrapper().IsInitialized()) - { - const bool bHasConsent = FOculusXRHMDModule::GetPluginWrapper().GetUnifiedConsent(UNREAL_TOOL_ID) == ovrpBool_True; - FOculusXRHMDModule::GetPluginWrapper().QplSetConsent(bHasConsent); - FOculusXRHMDModule::GetPluginWrapper().SetDeveloperTelemetryConsent(bHasConsent); - } -#endif - } - - FString GetProjectId() - { - const UGeneralProjectSettings& ProjectSettings = *GetDefault(); - return ProjectSettings.ProjectID.ToString(); - } - - bool IsConsentGiven() - { -#ifdef WITH_EDITOR - if (const UOculusXRTelemetryPrivacySettings* EditorPrivacySettings = GetDefault()) - { - return EditorPrivacySettings->bIsEnabled; - } -#endif - return false; - } - - void SendEvent(const TCHAR* EventName, float Param) - { - const FString StrVal = FString::Printf(TEXT("%f"), Param); - SendEvent(EventName, *StrVal); - } - - void SendEvent(const TCHAR* EventName, bool bParam) - { - SendEvent(EventName, bParam ? TEXT("true") : TEXT("false")); - } - - void SendEvent(const TCHAR* EventName, const TCHAR* Param) - { - if (IsActive()) - { - FOculusXRHMDModule::GetPluginWrapper().SendEvent2(TCHAR_TO_ANSI(EventName), TCHAR_TO_ANSI(Param), TelemetrySource); - } - } - -} // namespace OculusXRTelemetry diff --git a/Plugins/MetaXR/Source/OculusXRHMD/Private/OculusXRTelemetryEvents.h b/Plugins/MetaXR/Source/OculusXRHMD/Private/OculusXRTelemetryEvents.h deleted file mode 100644 index cb649b3..0000000 --- a/Plugins/MetaXR/Source/OculusXRHMD/Private/OculusXRTelemetryEvents.h +++ /dev/null @@ -1,14 +0,0 @@ -// Copyright (c) Meta Platforms, Inc. and affiliates. - -#pragma once - -#include "OculusXRTelemetry.h" - -namespace OculusXRTelemetry::Events -{ - using FEditorConsent = TMarker<191965622>; - using FSimulator = TMarker<191963436>; - using FEnableHardOcclusions = TMarker<191958638>; - using FEnableSoftOcclusions = TMarker<191958877>; - constexpr const char* ConsentOriginKey = "Origin"; -} // namespace OculusXRTelemetry::Events diff --git a/Plugins/MetaXR/Source/OculusXRHMD/Private/OculusXRTelemetryPrivacySettings.cpp b/Plugins/MetaXR/Source/OculusXRHMD/Private/OculusXRTelemetryPrivacySettings.cpp deleted file mode 100644 index a3331fd..0000000 --- a/Plugins/MetaXR/Source/OculusXRHMD/Private/OculusXRTelemetryPrivacySettings.cpp +++ /dev/null @@ -1,124 +0,0 @@ -// Copyright (c) Meta Platforms, Inc. and affiliates. - -#include "OculusXRTelemetryPrivacySettings.h" - -#include "OculusXRHMDModule.h" -#include "OculusXRTelemetry.h" - -#include - -#define LOCTEXT_NAMESPACE "OculusXRTelemetryPrivacySettings" - -constexpr int CONSENT_NOTIFICATION_MAX_LENGTH = 1024; -TMap GetLinks(const std::string& markdown, std::string& textWithoutLink) -{ - TMap links; - const std::regex linkRegex(R"(\[(.*?)\]\((.*?)\))"); - - std::smatch matches; - std::string::const_iterator searchStart(markdown.cbegin()); - while (std::regex_search(searchStart, markdown.cend(), matches, linkRegex)) - { - links.Add(matches[1].str().c_str(), matches[2].str().c_str()); - searchStart = matches.suffix().first; - } - - const std::string linkReplacement = ""; - textWithoutLink = std::regex_replace(markdown, linkRegex, linkReplacement); - return links; -} - -UOculusXRTelemetryPrivacySettings::UOculusXRTelemetryPrivacySettings(const FObjectInitializer& ObjectInitializer) - : Super(ObjectInitializer) -{ - if (!FOculusXRHMDModule::Get().IsOVRPluginAvailable() || !FOculusXRHMDModule::GetPluginWrapper().IsInitialized()) - { - return; - } - - bIsEnabled = FOculusXRHMDModule::GetPluginWrapper().GetUnifiedConsent(OculusXRTelemetry::UNREAL_TOOL_ID) == ovrpBool_True; - - char SettingsText[CONSENT_NOTIFICATION_MAX_LENGTH]; - if (FOculusXRHMDModule::GetPluginWrapper().GetConsentSettingsChangeText(SettingsText) == ovrpFailure) - { - return; - } - - std::string settingsDesc = ""; - Links = GetLinks(SettingsText, settingsDesc); - Description = FText::FromString(settingsDesc.c_str()); -} - -void UOculusXRTelemetryPrivacySettings::GetToggleCategoryAndPropertyNames(FName& OutCategory, FName& OutProperty) const -{ - OutCategory = FName("Options"); - OutProperty = FName("bIsEnabled"); -} - -FText UOculusXRTelemetryPrivacySettings::GetFalseStateLabel() const -{ - return LOCTEXT("FalseStateLabel", "Only share essential data"); -} - -FText UOculusXRTelemetryPrivacySettings::GetFalseStateTooltip() const -{ - return LOCTEXT("FalseStateTooltip", "Only share essential data"); -} - -FText UOculusXRTelemetryPrivacySettings::GetFalseStateDescription() const -{ - return Description; -} - -FText UOculusXRTelemetryPrivacySettings::GetTrueStateLabel() const -{ - return LOCTEXT("TrueStateLabel", "Share additional data"); -} - -FText UOculusXRTelemetryPrivacySettings::GetTrueStateTooltip() const -{ - return LOCTEXT("TrueStateTooltip", "Share additional data"); -} - -FText UOculusXRTelemetryPrivacySettings::GetTrueStateDescription() const -{ - return Description; -} - -FString UOculusXRTelemetryPrivacySettings::GetAdditionalInfoUrl() const -{ - if (Links.Num() > 0) - { - return Links.begin().Value(); - } - return FString(); -} - -FText UOculusXRTelemetryPrivacySettings::GetAdditionalInfoUrlLabel() const -{ - if (Links.Num() > 0) - { - return FText::FromString(Links.begin().Key()); - } - return FText(); -} - -#if WITH_EDITOR -void UOculusXRTelemetryPrivacySettings::PostEditChangeProperty(struct FPropertyChangedEvent& PropertyChangedEvent) -{ - Super::PostEditChangeProperty(PropertyChangedEvent); - - const FName PropertyName = (PropertyChangedEvent.Property != nullptr) ? PropertyChangedEvent.Property->GetFName() : NAME_None; - if (PropertyName == GET_MEMBER_NAME_CHECKED(UOculusXRTelemetryPrivacySettings, bIsEnabled)) - { - using namespace OculusXRTelemetry; - if (FOculusXRHMDModule::Get().IsOVRPluginAvailable() && FOculusXRHMDModule::GetPluginWrapper().IsInitialized()) - { - FOculusXRHMDModule::GetPluginWrapper().SaveUnifiedConsent(UNREAL_TOOL_ID, bIsEnabled ? ovrpBool_True : ovrpBool_False); - PropagateTelemetryConsent(); - } - } -} -#endif - -#undef LOCTEXT_NAMESPACE diff --git a/Plugins/MetaXR/Source/OculusXRHMD/Private/OculusXRTelemetryPrivacySettings.h b/Plugins/MetaXR/Source/OculusXRHMD/Private/OculusXRTelemetryPrivacySettings.h deleted file mode 100644 index a43f08d..0000000 --- a/Plugins/MetaXR/Source/OculusXRHMD/Private/OculusXRTelemetryPrivacySettings.h +++ /dev/null @@ -1,40 +0,0 @@ -// Copyright (c) Meta Platforms, Inc. and affiliates. - -#pragma once - -#include "CoreMinimal.h" -#include "UObject/Object.h" -#include "Engine/ImportantToggleSettingInterface.h" -#include "OculusXRTelemetryPrivacySettings.generated.h" - -UCLASS(MinimalAPI, hidecategories = Object, config = EditorSettings) -class UOculusXRTelemetryPrivacySettings : public UObject, public IImportantToggleSettingInterface -{ - GENERATED_UCLASS_BODY() - - UPROPERTY(EditAnywhere, Category = Options) - bool bIsEnabled = false; - -public: - // BEGIN IImportantToggleSettingInterface - virtual void GetToggleCategoryAndPropertyNames(FName& OutCategory, FName& OutProperty) const override; - virtual FText GetFalseStateLabel() const override; - virtual FText GetFalseStateTooltip() const override; - virtual FText GetFalseStateDescription() const override; - virtual FText GetTrueStateLabel() const override; - virtual FText GetTrueStateTooltip() const override; - virtual FText GetTrueStateDescription() const override; - virtual FString GetAdditionalInfoUrl() const override; - virtual FText GetAdditionalInfoUrlLabel() const override; - // END IImportantToggleSettingInterface - -#if WITH_EDITOR - //~ Begin UObject Interface - virtual void PostEditChangeProperty(struct FPropertyChangedEvent& PropertyChangedEvent) override; - //~ End UObject Interface -#endif // WITH_EDITOR - -private: - FText Description; - TMap Links; -}; diff --git a/Plugins/MetaXR/Source/OculusXRHMD/Private/OpenXR/OculusXRCoreExtensionPlugin.cpp b/Plugins/MetaXR/Source/OculusXRHMD/Private/OpenXR/OculusXRCoreExtensionPlugin.cpp deleted file mode 100644 index 4ca2638..0000000 --- a/Plugins/MetaXR/Source/OculusXRHMD/Private/OpenXR/OculusXRCoreExtensionPlugin.cpp +++ /dev/null @@ -1,90 +0,0 @@ -// Copyright (c) Meta Platforms, Inc. and affiliates. - -#include "OculusXRCoreExtensionPlugin.h" - -#include "DefaultSpectatorScreenController.h" -#include "OculusXRFunctionLibrary.h" -#include "OculusXRHMDRuntimeSettings.h" -#include "OculusXRXRFunctions.h" -#include "OculusXROpenXRUtilities.h" -#include "OpenXRCore.h" -#include "OpenXRHMDSettings.h" - -#if PLATFORM_ANDROID -// #include -#include -#endif // PLATFORM_ANDROID - -DEFINE_LOG_CATEGORY(LogOculusOpenXRPlugin); - -namespace OculusXR -{ - - bool FCoreExtensionPlugin::IsStandaloneStereoOnlyDevice() - { -#if PLATFORM_ANDROID - const bool bIsStandaloneStereoDevice = FAndroidMisc::GetDeviceMake() == FString("Oculus"); -#else - const bool bIsStandaloneStereoDevice = false; -#endif - return bIsStandaloneStereoDevice; - } - - bool FCoreExtensionPlugin::GetOptionalExtensions(TArray& OutExtensions) - { - return true; - } - - bool FCoreExtensionPlugin::GetSpectatorScreenController(FHeadMountedDisplayBase* InHMDBase, TUniquePtr& OutSpectatorScreenController) - { -#if PLATFORM_ANDROID - OutSpectatorScreenController = nullptr; - return true; -#else // PLATFORM_ANDROID - OutSpectatorScreenController = MakeUnique(InHMDBase); - return false; -#endif // PLATFORM_ANDROID - } - - const void* FCoreExtensionPlugin::OnCreateSession(XrInstance InInstance, XrSystemId InSystem, const void* InNext) - { - check(IsInGameThread()); - - InitOpenXRFunctions(InInstance); - - if (UOpenXRHMDSettings* OpenXRHMDSettings = GetMutableDefault()) - { - OpenXRHMDSettings->bIsFBFoveationEnabled = true; - } - - if (IConsoleVariable* VariableRateShadingCVar = IConsoleManager::Get().FindConsoleVariable(TEXT("r.VRS.Enable"))) - { - VariableRateShadingCVar->Set(1); - } - - if (const UOculusXRHMDRuntimeSettings* OculusXRHMDSettings = GetDefault()) - { - if (IConsoleVariable* FoveationLevelCVar = IConsoleManager::Get().FindConsoleVariable(TEXT("xr.OpenXRFBFoveationLevel"))) - { - FoveationLevelCVar->Set(static_cast(OculusXRHMDSettings->FoveatedRenderingLevel)); - } - if (IConsoleVariable* FoveationDynamicCVar = IConsoleManager::Get().FindConsoleVariable(TEXT("xr.OpenXRFBFoveationDynamic"))) - { - FoveationDynamicCVar->Set(OculusXRHMDSettings->bDynamicFoveatedRendering); - } - } - -#if PLATFORM_ANDROID -#if UE_VERSION_OLDER_THAN(5, 5, 0) - if (GRHISupportsRHIThread && GIsThreadedRendering && GUseRHIThread_InternalUseOnly) - { - SetRHIThreadEnabled(false, false); - } -#else - GPendingRHIThreadMode = ERHIThreadMode::None; -#endif // UE_VERSION_OLDER_THAN -#endif // PLATFORM_ANDROID - return InNext; - } - -} // namespace OculusXR diff --git a/Plugins/MetaXR/Source/OculusXRHMD/Private/OpenXR/OculusXRCoreExtensionPlugin.h b/Plugins/MetaXR/Source/OculusXRHMD/Private/OpenXR/OculusXRCoreExtensionPlugin.h deleted file mode 100644 index dbd1947..0000000 --- a/Plugins/MetaXR/Source/OculusXRHMD/Private/OpenXR/OculusXRCoreExtensionPlugin.h +++ /dev/null @@ -1,23 +0,0 @@ -// Copyright (c) Meta Platforms, Inc. and affiliates. - -#pragma once -#include "CoreMinimal.h" -#include "Misc/EngineVersionComparison.h" -#include "OpenXR/IOculusXRExtensionPlugin.h" - -DECLARE_LOG_CATEGORY_EXTERN(LogOculusOpenXRPlugin, Log, All); - -namespace OculusXR -{ - - class FCoreExtensionPlugin : public IOculusXRExtensionPlugin - { - public: - // IOpenXRExtensionPlugin - virtual bool IsStandaloneStereoOnlyDevice() override; - virtual bool GetOptionalExtensions(TArray& OutExtensions) override; - virtual bool GetSpectatorScreenController(FHeadMountedDisplayBase* InHMDBase, TUniquePtr& OutSpectatorScreenController) override; - virtual const void* OnCreateSession(XrInstance InInstance, XrSystemId InSystem, const void* InNext) override; - }; - -} // namespace OculusXR diff --git a/Plugins/MetaXR/Source/OculusXRHMD/Private/OpenXR/OculusXREnvironmentDepthExtensionPlugin.cpp b/Plugins/MetaXR/Source/OculusXRHMD/Private/OpenXR/OculusXREnvironmentDepthExtensionPlugin.cpp deleted file mode 100644 index 99e4391..0000000 --- a/Plugins/MetaXR/Source/OculusXRHMD/Private/OpenXR/OculusXREnvironmentDepthExtensionPlugin.cpp +++ /dev/null @@ -1,1196 +0,0 @@ -// Copyright (c) Meta Platforms, Inc. and affiliates. - -#include "OculusXREnvironmentDepthExtensionPlugin.h" - -#include "IOpenXRHMDModule.h" -#include "OculusXRHMD_DynamicResolutionState.h" -#include "OpenXR/OculusXROpenXRUtilities.h" -#include "OpenXRPlatformRHI.h" - -#include -#include "khronos/openxr/openxr_platform.h" - -#if PLATFORM_ANDROID -#include "AndroidPermissionCallbackProxy.h" -#include "AndroidPermissionFunctionLibrary.h" -#endif -#include "DataDrivenShaderPlatformInfo.h" -#include "OculusXRHMD.h" -#include "OculusXRHMDModule.h" -#include "OpenXRHMD.h" -#include "HardwareInfo.h" -#include "ScreenRendering.h" -#include "XRThreadUtils.h" -#include "ScreenPass.h" -#include "RenderResource.h" -#include "Shader.h" - -namespace -{ -#ifdef WITH_OCULUS_BRANCH -#if OCULUS_HMD_SUPPORTED_PLATFORMS_VULKAN - FTextureRHIRef CreateTextureVulkan_RenderThread(uint32 InSizeX, uint32 InSizeY, EPixelFormat InFormat, const FClearValueBinding& InBinding, - uint32 InNumMips, uint32 InNumSamples, uint32 InNumSamplesTileMem, ERHIResourceType InResourceType, OculusXR::TextureHandle InTexture, - ETextureCreateFlags InTexCreateFlags) - { - OculusXRHMD::CheckInRenderThread(); - - IVulkanDynamicRHI* VulkanRHI = GetIVulkanDynamicRHI(); - constexpr VkImageSubresourceRange SubresourceRangeAll = { VK_IMAGE_ASPECT_COLOR_BIT, 0, VK_REMAINING_MIP_LEVELS, - 0, VK_REMAINING_ARRAY_LAYERS }; - - if (EnumHasAnyFlags(InTexCreateFlags, TexCreate_RenderTargetable)) - { - VulkanRHI->RHISetImageLayout(reinterpret_cast(InTexture), VK_IMAGE_LAYOUT_UNDEFINED, - VK_IMAGE_LAYOUT_COLOR_ATTACHMENT_OPTIMAL, SubresourceRangeAll); - } - else if (EnumHasAnyFlags(InTexCreateFlags, TexCreate_Foveation)) - { - VulkanRHI->RHISetImageLayout(reinterpret_cast(InTexture), VK_IMAGE_LAYOUT_UNDEFINED, - VK_IMAGE_LAYOUT_FRAGMENT_DENSITY_MAP_OPTIMAL_EXT, SubresourceRangeAll); - } - - switch (InResourceType) - { - case RRT_Texture2D: - return VulkanRHI->RHICreateTexture2DFromResource(InFormat, InSizeX, InSizeY, InNumMips, InNumSamples, - reinterpret_cast(InTexture), InTexCreateFlags, InBinding) - .GetReference(); - - case RRT_Texture2DArray: - return VulkanRHI->RHICreateTexture2DArrayFromResource(InFormat, InSizeX, InSizeY, 2, InNumMips, InNumSamples, - reinterpret_cast(InTexture), InTexCreateFlags, InBinding) - .GetReference(); - - case RRT_TextureCube: - return VulkanRHI->RHICreateTextureCubeFromResource(InFormat, InSizeX, false, 1, InNumMips, - reinterpret_cast(InTexture), InTexCreateFlags, InBinding) - .GetReference(); - - default: - return nullptr; - } - } -#endif - -#if OCULUS_HMD_SUPPORTED_PLATFORMS_D3D11 - FTextureRHIRef CreateTextureD3D11_RenderThread(uint32 InSizeX, uint32 InSizeY, EPixelFormat InFormat, const FClearValueBinding& InBinding, - uint32 InNumMips, uint32 InNumSamples, uint32 InNumSamplesTileMem, ERHIResourceType InResourceType, OculusXR::TextureHandle InTexture, - ETextureCreateFlags InTexCreateFlags) - { - OculusXRHMD::CheckInRenderThread(); - - switch (InResourceType) - { - case RRT_Texture2D: - return GetID3D11DynamicRHI()->RHICreateTexture2DFromResource(InFormat, InTexCreateFlags, InBinding, - reinterpret_cast(InTexture)) - .GetReference(); - - case RRT_Texture2DArray: - return GetID3D11DynamicRHI()->RHICreateTexture2DArrayFromResource(InFormat, InTexCreateFlags, InBinding, - reinterpret_cast(InTexture)) - .GetReference(); - - case RRT_TextureCube: - return GetID3D11DynamicRHI()->RHICreateTextureCubeFromResource(InFormat, InTexCreateFlags | TexCreate_TargetArraySlicesIndependently, - InBinding, reinterpret_cast(InTexture)) - .GetReference(); - - default: - return nullptr; - } - } - -#endif - -#if OCULUS_HMD_SUPPORTED_PLATFORMS_D3D12 - FTextureRHIRef CreateTextureD3D12_RenderThread(uint32 InSizeX, uint32 InSizeY, EPixelFormat InFormat, const FClearValueBinding& InBinding, - uint32 InNumMips, uint32 InNumSamples, uint32 InNumSamplesTileMem, ERHIResourceType InResourceType, OculusXR::TextureHandle InTexture, - ETextureCreateFlags InTexCreateFlags) - { - OculusXRHMD::CheckInRenderThread(); - - ID3D12DynamicRHI* DynamicRHI = GetID3D12DynamicRHI(); - - switch (InResourceType) - { - case RRT_Texture2D: - return DynamicRHI->RHICreateTexture2DFromResource(InFormat, InTexCreateFlags, InBinding, - reinterpret_cast(InTexture)) - .GetReference(); - - case RRT_Texture2DArray: - return DynamicRHI->RHICreateTexture2DArrayFromResource(InFormat, InTexCreateFlags, InBinding, - reinterpret_cast(InTexture)) - .GetReference(); - - case RRT_TextureCube: - return DynamicRHI->RHICreateTextureCubeFromResource(InFormat, InTexCreateFlags, InBinding, - reinterpret_cast(InTexture)) - .GetReference(); - - default: - return nullptr; - } - } -#endif - - void InitOpenXRFunctions(XrInstance InInstance) - { - using namespace OculusXR; - - XRGetInstanceProcAddr(InInstance, "xrCreateEnvironmentDepthProviderMETA", &xrCreateEnvironmentDepthProviderMETA); - XRGetInstanceProcAddr(InInstance, "xrDestroyEnvironmentDepthProviderMETA", &xrDestroyEnvironmentDepthProviderMETA); - XRGetInstanceProcAddr(InInstance, "xrStartEnvironmentDepthProviderMETA", &xrStartEnvironmentDepthProviderMETA); - XRGetInstanceProcAddr(InInstance, "xrStopEnvironmentDepthProviderMETA", &xrStopEnvironmentDepthProviderMETA); - XRGetInstanceProcAddr(InInstance, "xrCreateEnvironmentDepthSwapchainMETA", &xrCreateEnvironmentDepthSwapchainMETA); - XRGetInstanceProcAddr(InInstance, "xrDestroyEnvironmentDepthSwapchainMETA", &xrDestroyEnvironmentDepthSwapchainMETA); - XRGetInstanceProcAddr(InInstance, "xrEnumerateEnvironmentDepthSwapchainImagesMETA", &xrEnumerateEnvironmentDepthSwapchainImagesMETA); - XRGetInstanceProcAddr(InInstance, "xrGetEnvironmentDepthSwapchainStateMETA", &xrGetEnvironmentDepthSwapchainStateMETA); - XRGetInstanceProcAddr(InInstance, "xrAcquireEnvironmentDepthImageMETA", &xrAcquireEnvironmentDepthImageMETA); - XRGetInstanceProcAddr(InInstance, "xrSetEnvironmentDepthHandRemovalMETA", &xrSetEnvironmentDepthHandRemovalMETA); - } - - FMatrix MakeProjection(float ZNear, float ZFar, float UpTan, float DownTan, float LeftTan, float RightTan, bool leftHanded) - { - float handednessScale = leftHanded ? 1.0f : -1.0f; - - // A projection matrix is very like a scaling from NDC, so we can start with that. - float projXScale = 2.0f / (LeftTan + RightTan); - float projXOffset = (LeftTan - RightTan) * projXScale * 0.5f; - float projYScale = 2.0f / (UpTan + DownTan); - float projYOffset = (UpTan - DownTan) * projYScale * 0.5f; - - FMatrix projection; - - // Produces X result, mapping clip edges to [-w,+w] - projection.M[0][0] = projXScale; - projection.M[0][1] = 0.0f; - projection.M[0][2] = handednessScale * projXOffset; - projection.M[0][3] = 0.0f; - - // Produces Y result, mapping clip edges to [-w,+w] - // Hey - why is that YOffset negated? - // It's because a projection matrix transforms from world coords with Y=up, - // whereas this is derived from an NDC scaling, which is Y=down. - projection.M[1][0] = 0.0f; - projection.M[1][1] = projYScale; - projection.M[1][2] = handednessScale * -projYOffset; - projection.M[1][3] = 0.0f; - - // Produces Z-buffer result - projection.M[2][0] = 0.0f; - projection.M[2][1] = 0.0f; - if (FGenericPlatformMath::IsFinite(ZFar)) - { - projection.M[2][2] = -handednessScale * ZFar / (ZNear - ZFar); - projection.M[2][3] = (ZFar * ZNear) / (ZNear - ZFar); - } - else - { - projection.M[2][2] = handednessScale; - projection.M[2][3] = -ZNear; - } - - // Produces W result (= Z in) - projection.M[3][0] = 0.0f; - projection.M[3][1] = 0.0f; - projection.M[3][2] = handednessScale; - projection.M[3][3] = 0.0f; - - return projection.GetTransposed(); - } - - FMatrix44f MakeUnprojectionMatrix(float UpTan, float DownTan, float LeftTan, float RightTan) - { - FMatrix44f Matrix = FMatrix44f::Identity; - - // Scale - Matrix.M[0][0] = RightTan + LeftTan; - Matrix.M[1][1] = UpTan + DownTan; - - // Offset - Matrix.M[0][3] = -LeftTan; - Matrix.M[1][3] = -DownTan; - Matrix.M[2][3] = 1.0; - - return Matrix; - } - - FMatrix44f MakeProjectionMatrix(float UpTan, float DownTan, float LeftTan, float RightTan) - { - const float tanAngleWidth = RightTan + LeftTan; - const float tanAngleHeight = UpTan + DownTan; - - FMatrix44f Matrix = FMatrix44f::Identity; - - // Scale - Matrix.M[0][0] = 1.0f / tanAngleWidth; - Matrix.M[1][1] = 1.0f / tanAngleHeight; - - // Offset - Matrix.M[0][3] = LeftTan / tanAngleWidth; - Matrix.M[1][3] = DownTan / tanAngleHeight; - Matrix.M[2][3] = -1.0f; - - return Matrix; - } - -#endif -#if !UE_VERSION_OLDER_THAN(5, 3, 0) - BEGIN_SHADER_PARAMETER_STRUCT(FDrawRectangleParameters, ) - SHADER_PARAMETER(FVector4f, PosScaleBias) - SHADER_PARAMETER(FVector4f, UVScaleBias) - SHADER_PARAMETER(FVector4f, InvTargetSizeAndTextureSize) - END_SHADER_PARAMETER_STRUCT() -#endif - - void DrawHmdViewMesh(IRendererModule* RendererModule, FRHICommandList& RHICmdList, float X, float Y, float SizeX, float SizeY, float U, - float V, float SizeU, float SizeV, FIntPoint TargetSize, FIntPoint TextureSize, int32 StereoView, const TShaderRef& VertexShader) - { - FDrawRectangleParameters Parameters; - Parameters.PosScaleBias = FVector4f(SizeX, SizeY, X, Y); - Parameters.UVScaleBias = FVector4f(SizeU, SizeV, U, V); - - Parameters.InvTargetSizeAndTextureSize = FVector4f( - 1.0f / TargetSize.X, 1.0f / TargetSize.Y, - 1.0f / TextureSize.X, 1.0f / TextureSize.Y); - -#if UE_VERSION_OLDER_THAN(5, 3, 0) - SetUniformBufferParameterImmediate(RHICmdList, VertexShader.GetVertexShader(), - VertexShader->GetUniformBufferParameter(), Parameters); -#else - FRHIBatchedShaderParameters& BatchedParameters = RHICmdList.GetScratchShaderParameters(); - SetUniformBufferParameterImmediate(BatchedParameters, VertexShader->GetUniformBufferParameter(), Parameters); - RHICmdList.SetBatchedShaderParameters(VertexShader.GetVertexShader(), BatchedParameters); -#endif - RendererModule->DrawRectangle( - RHICmdList, - X, Y, - SizeX, SizeY, - 0, 0, - TextureSize.X, TextureSize.Y, - TargetSize, - TextureSize, - VertexShader); - } - -} // namespace - -namespace OculusXR -{ - void RenderHardOcclusions_RenderThread(IRendererModule* RendererModule, const FVector2f& DepthFactors, const FMatrix44f ScreenToDepthMatrices[EYE_COUNT], - FRHITexture* DepthTexture, FRHICommandList& RHICmdList, const FSceneView& InView) - { - checkSlow(RHICmdList.IsInsideRenderPass()); - - FGraphicsPipelineStateInitializer GraphicsPSOInit; - RHICmdList.ApplyCachedRenderTargets(GraphicsPSOInit); - - GraphicsPSOInit.BlendState = TStaticBlendState<>::GetRHI(); - GraphicsPSOInit.RasterizerState = TStaticRasterizerState<>::GetRHI(); - GraphicsPSOInit.DepthStencilState = TStaticDepthStencilState<>::GetRHI(); - - FGlobalShaderMap* GlobalShaderMap = GetGlobalShaderMap(InView.FeatureLevel); - TShaderMapRef VertexShader(GlobalShaderMap); - TShaderMapRef PixelShader(GlobalShaderMap); - - GraphicsPSOInit.BoundShaderState.VertexDeclarationRHI = GFilterVertexDeclaration.VertexDeclarationRHI; - GraphicsPSOInit.BoundShaderState.VertexShaderRHI = VertexShader.GetVertexShader(); - GraphicsPSOInit.BoundShaderState.PixelShaderRHI = PixelShader.GetPixelShader(); - GraphicsPSOInit.PrimitiveType = PT_TriangleList; - - SetGraphicsPipelineState(RHICmdList, GraphicsPSOInit, 0); - - FRHISamplerState* DepthSampler = TStaticSamplerState<>::GetRHI(); - - FIntPoint TextureSize = DepthTexture->GetDesc().Extent; - FIntRect ScreenRect = InView.UnscaledViewRect; - -#if UE_VERSION_OLDER_THAN(5, 3, 0) - PixelShader->SetParameters(RHICmdList, PixelShader.GetPixelShader(), DepthSampler, DepthTexture, DepthFactors, - ScreenToDepthMatrices, InView.StereoViewIndex); -#else - FRHIBatchedShaderParameters& BatchedParameters = RHICmdList.GetScratchShaderParameters(); - PixelShader->SetParameters(BatchedParameters, DepthSampler, DepthTexture, DepthFactors, ScreenToDepthMatrices, InView.StereoViewIndex); - RHICmdList.SetBatchedShaderParameters(PixelShader.GetPixelShader(), BatchedParameters); -#endif - - const auto FeatureLevel = GEngine ? GEngine->GetDefaultWorldFeatureLevel() : GMaxRHIFeatureLevel; - EShaderPlatform CurrentShaderPlatform = GShaderPlatformForFeatureLevel[FeatureLevel]; - check(CurrentShaderPlatform == InView.Family->Scene->GetShaderPlatform()); - if (!IsMobilePlatform(CurrentShaderPlatform) && InView.StereoViewIndex != INDEX_NONE) - { - SCOPED_DRAW_EVENTF(RHICmdList, RenderHardOcclusions_RenderThread, TEXT("View %d"), InView.StereoViewIndex); - - int32 width = ScreenRect.Width() / 2; - int32 height = ScreenRect.Height(); - int32 x = InView.StereoViewIndex == EStereoscopicEye::eSSE_LEFT_EYE ? 0 : width; - int32 y = 0; - - DrawHmdViewMesh( - RendererModule, - RHICmdList, - x, y, - width, height, - 0, 0, - TextureSize.X, TextureSize.Y, - FIntPoint(ScreenRect.Width(), ScreenRect.Height()), - TextureSize, - InView.StereoViewIndex, - VertexShader); - } - else - { - SCOPED_DRAW_EVENT(RHICmdList, RenderHardOcclusions_RenderThread); - - RendererModule->DrawRectangle( - RHICmdList, - 0, 0, - ScreenRect.Width(), ScreenRect.Height(), - 0, 0, - TextureSize.X, TextureSize.Y, - FIntPoint(ScreenRect.Width(), ScreenRect.Height()), - TextureSize, - VertexShader); - } - } - - void RenderEnvironmentDepthMinMaxTexture_RenderThread(IRendererModule* RendererModule, FTextureRHIRef EnvironmentDepthMinMaxTexture, - FTextureRHIRef EnvironmentDepthSwapchain, FRHICommandListImmediate& RHICmdList) - { - FRHIRenderPassInfo RPInfo(EnvironmentDepthMinMaxTexture, ERenderTargetActions::DontLoad_Store); - int32 SliceCount = EnvironmentDepthMinMaxTexture->GetDesc().ArraySize; -#if PLATFORM_ANDROID - bool bEnableMultiView = GSupportsMobileMultiView; -#else - bool bEnableMultiView = false; -#endif - if (bEnableMultiView) - { - RPInfo.MultiViewCount = 2; - SliceCount = 1; - } - for (int32 SliceIndex = 0; SliceIndex < SliceCount; ++SliceIndex) - { - if (!bEnableMultiView) - { - RPInfo.ColorRenderTargets[0].ArraySlice = SliceIndex; - } - RHICmdList.BeginRenderPass(RPInfo, TEXT("EnvironmentDepthMinMaxPrePass")); - { - auto SrcTexture = EnvironmentDepthSwapchain; - auto Extent = SrcTexture->GetDesc().Extent; - const uint32 ViewportWidth = Extent.X; - const uint32 ViewportHeight = Extent.Y; - const FIntPoint TargetSize(ViewportWidth, ViewportHeight); - - FGraphicsPipelineStateInitializer GraphicsPSOInit; - GraphicsPSOInit.BlendState = TStaticBlendState<>::GetRHI(); - GraphicsPSOInit.RasterizerState = TStaticRasterizerState<>::GetRHI(); - GraphicsPSOInit.DepthStencilState = TStaticDepthStencilState::GetRHI(); - GraphicsPSOInit.PrimitiveType = PT_TriangleList; - - const auto FeatureLevel = GEngine ? GEngine->GetDefaultWorldFeatureLevel() : GMaxRHIFeatureLevel; - auto ShaderMap = GetGlobalShaderMap(FeatureLevel); - TShaderMapRef VertexShader(ShaderMap); - GraphicsPSOInit.BoundShaderState.VertexDeclarationRHI = GFilterVertexDeclaration.VertexDeclarationRHI; - GraphicsPSOInit.BoundShaderState.VertexShaderRHI = VertexShader.GetVertexShader(); - - RHICmdList.ApplyCachedRenderTargets(GraphicsPSOInit); - FRHISamplerState* SamplerState = TStaticSamplerState::GetRHI(); - - FRHIBatchedShaderParameters& BatchedParameters = RHICmdList.GetScratchShaderParameters(); - if (bEnableMultiView) - { - GraphicsPSOInit.MultiViewCount = 2; - TShaderMapRef> PixelShader(ShaderMap); - GraphicsPSOInit.BoundShaderState.PixelShaderRHI = PixelShader.GetPixelShader(); - PixelShader->SetParameters(BatchedParameters, SamplerState, SrcTexture, SliceIndex); - } - else - { - TShaderMapRef> PixelShader(ShaderMap); - GraphicsPSOInit.BoundShaderState.PixelShaderRHI = PixelShader.GetPixelShader(); - PixelShader->SetParameters(BatchedParameters, SamplerState, SrcTexture, SliceIndex); - } - SetGraphicsPipelineState(RHICmdList, GraphicsPSOInit, 0); - RHICmdList.SetBatchedShaderParameters(RHICmdList.GetBoundPixelShader(), BatchedParameters); - -#ifdef WITH_OCULUS_BRANCH - // If GSupportsMultiViewPerViewViewports is true then we must specify a stereo viewport otherwise - // it will lead to undefined behaviour in the right eye. - if (GSupportsMultiViewPerViewViewports) - { - RHICmdList.SetStereoViewport(0.0f, 0.0f, 0.0f, 0.0f, 0.0f, ViewportWidth, - ViewportWidth, ViewportHeight, ViewportHeight, 1.0f); - RHICmdList.SetStereoScissor(0.0f, 0.0f, 0.0f, 0.0f, ViewportWidth, - ViewportWidth, ViewportHeight, ViewportHeight); - } - else -#endif - { - RHICmdList.SetViewport(0.0f, 0.0f, 0.0f, ViewportWidth, ViewportHeight, 1.0f); - } - - RendererModule->DrawRectangle( - RHICmdList, - 0.0f, 0.0f, ViewportWidth, ViewportHeight, - 0.0f, 0.0f, 1.0f, 1.0f, - TargetSize, - FIntPoint(1, 1), - VertexShader, - EDRF_Default); - } - RHICmdList.EndRenderPass(); - } - } - -#ifdef WITH_OCULUS_BRANCH - PFN_xrCreateEnvironmentDepthProviderMETA xrCreateEnvironmentDepthProviderMETA = nullptr; - PFN_xrDestroyEnvironmentDepthProviderMETA xrDestroyEnvironmentDepthProviderMETA = nullptr; - PFN_xrStartEnvironmentDepthProviderMETA xrStartEnvironmentDepthProviderMETA = nullptr; - PFN_xrStopEnvironmentDepthProviderMETA xrStopEnvironmentDepthProviderMETA = nullptr; - PFN_xrCreateEnvironmentDepthSwapchainMETA xrCreateEnvironmentDepthSwapchainMETA = nullptr; - PFN_xrDestroyEnvironmentDepthSwapchainMETA xrDestroyEnvironmentDepthSwapchainMETA = nullptr; - PFN_xrEnumerateEnvironmentDepthSwapchainImagesMETA xrEnumerateEnvironmentDepthSwapchainImagesMETA = nullptr; - PFN_xrGetEnvironmentDepthSwapchainStateMETA xrGetEnvironmentDepthSwapchainStateMETA = nullptr; - PFN_xrAcquireEnvironmentDepthImageMETA xrAcquireEnvironmentDepthImageMETA = nullptr; - PFN_xrSetEnvironmentDepthHandRemovalMETA xrSetEnvironmentDepthHandRemovalMETA = nullptr; - - void FEnvironmentDepthExtensionPlugin::PostCreateSession(XrSession InSession) - { - Session = InSession; - } - - void FEnvironmentDepthExtensionPlugin::BindExtensionPluginDelegates(class IOpenXRExtensionPluginDelegates& OpenXRHMD) - { - // grab a pointer to the renderer module for displaying our mirror window - static const FName RendererModuleName("Renderer"); - RendererModule = FModuleManager::GetModulePtr(RendererModuleName); - - FString HardwareDetails = FHardwareInfo::GetHardwareDetailsString(); - FString RHILookup = NAME_RHI.ToString() + TEXT("="); - - if (!FParse::Value(*HardwareDetails, *RHILookup, RHIString)) - { - UE_LOG(LogHMD, Warning, TEXT("Failed to parse RHI string. A wrong swapchain will probably be created")); - } - -#if OCULUS_HMD_SUPPORTED_PLATFORMS_VULKAN - if (RHIString == TEXT("Vulkan")) - { - CreateTexture_RenderThread_Fn = CreateTextureVulkan_RenderThread; - return; - } -#endif -#if OCULUS_HMD_SUPPORTED_PLATFORMS_D3D11 - if (RHIString == TEXT("D3D11")) - { - CreateTexture_RenderThread_Fn = CreateTextureD3D11_RenderThread; - return; - } -#endif -#if OCULUS_HMD_SUPPORTED_PLATFORMS_D3D12 - if (RHIString == TEXT("D3D12")) - { - CreateTexture_RenderThread_Fn = CreateTextureD3D12_RenderThread; - return; - } -#endif - - UE_LOG(LogHMD, Error, TEXT("Can not create textures for RHIString '%s'. This will result in a crash"), *RHIString); - CreateTexture_RenderThread_Fn = nullptr; - } - - bool FEnvironmentDepthExtensionPlugin::GetRequiredExtensions(TArray& OutExtensions) - { - OutExtensions.Add(XR_META_ENVIRONMENT_DEPTH_EXTENSION_NAME); - return true; - } - - const void* FEnvironmentDepthExtensionPlugin::OnCreateInstance(class IOpenXRHMDModule* InModule, const void* InNext) - { - if (InModule) - { - bExtEnvironmentDepthAvailable = InModule->IsExtensionEnabled(XR_META_ENVIRONMENT_DEPTH_EXTENSION_NAME); - bHandsRemovalSupported = true; - } - return InNext; - } - - const void* FEnvironmentDepthExtensionPlugin::OnCreateSession(XrInstance InInstance, XrSystemId InSystem, const void* InNext) - { - ::InitOpenXRFunctions(InInstance); - return InNext; - } - - void FEnvironmentDepthExtensionPlugin::OnBeginRendering_GameThread(XrSession InSession) - { - ENQUEUE_RENDER_COMMAND(TransferFrameStateToRenderingThread) - ([this](FRHICommandListImmediate& RHICmdList) mutable { - EyeViews_RenderThread = EyeViews; - WorldToMeters_RenderThread = WorldToMeters; - TrackingToWorld_RenderThread = TrackingToWorld; - HeadOrientation_RenderThread = HeadOrientation; - BaseOrientation_RenderThread = BaseOrientation; - }); - } - - void FEnvironmentDepthExtensionPlugin::PostBeginFrame_RHIThread(XrTime PredictedDisplayTime) - { - AcquireEnvironmentDepthTexture_RHIThread(PredictedDisplayTime); - } - - void FEnvironmentDepthExtensionPlugin::OnBeginRenderingLate_RenderThread(XrSession InSession, FRHICommandListImmediate& RHICmdList) - { - if (bSoftOcclusionsEnabled && EnvironmentDepthMinMaxTexture != nullptr && !EnvironmentDepthSwapchain.IsEmpty()) - { - TOptional DepthFrameDesc{}; - if (!GetEnvironmentDepthFrameDesc_RenderThread(DepthFrameDesc) || !DepthFrameDesc.IsSet()) - { - return; - } - if (static_cast(EnvironmentDepthSwapchain.Num()) <= DepthFrameDesc->swapchainIndex - || DepthFrameDesc->swapchainIndex == PrevEnvironmentDepthMinMaxSwapchainIndex) - { - return; - } - - RenderEnvironmentDepthMinMaxTexture_RenderThread(RendererModule, EnvironmentDepthMinMaxTexture, - EnvironmentDepthSwapchain[DepthFrameDesc->swapchainIndex], RHICmdList); - - PrevEnvironmentDepthMinMaxSwapchainIndex = DepthFrameDesc->swapchainIndex; - } - } - - bool FEnvironmentDepthExtensionPlugin::ComputeEnvironmentDepthParameters_RenderThread(FVector2f& DepthFactors, - FMatrix44f ScreenToDepth[EYE_COUNT], FMatrix44f DepthViewProj[EYE_COUNT], int& SwapchainIndex) - { - float ScreenNearZ = GNearClippingPlane / WorldToMeters_RenderThread; - - TOptional DepthFrameDesc; - if (!GetEnvironmentDepthFrameDesc_RenderThread(DepthFrameDesc) || !DepthFrameDesc.IsSet()) - { - return false; - } - - SwapchainIndex = DepthFrameDesc->swapchainIndex; - const auto InverseBaseOrientation = BaseOrientation_RenderThread.Inverse(); - - // Assume NearZ and FarZ are the same for left and right eyes - const float DepthNearZ = DepthFrameDesc->nearZ; - const float DepthFarZ = DepthFrameDesc->farZ; - - float Scale; - float Offset; - - if (DepthFarZ < DepthNearZ || (!FGenericPlatformMath::IsFinite(DepthFarZ))) - { - // Inf far plane: - Scale = DepthNearZ; - Offset = 0.0f; - } - else - { - // Finite far plane: - Scale = (DepthFarZ * DepthNearZ) / (DepthFarZ - DepthNearZ); - Offset = DepthNearZ / (DepthFarZ - DepthNearZ); - } - - DepthFactors.X = -ScreenNearZ / Scale; - DepthFactors.Y = (Offset + 1.0f) * ScreenNearZ / Scale; - - // The pose extrapolated to the predicted display time of the current frame - const FQuat ScreenOrientation = HeadOrientation_RenderThread; - - for (uint32 i = 0; i < EYE_COUNT; ++i) - { - const float DepthUpTan = tanf(DepthFrameDesc->views[i].fov.angleUp); - const float DepthDownTan = tanf(-DepthFrameDesc->views[i].fov.angleDown); - const float DepthLeftTan = tanf(-DepthFrameDesc->views[i].fov.angleLeft); - const float DepthRightTan = tanf(DepthFrameDesc->views[i].fov.angleRight); - - if (DepthViewProj != nullptr) - { - const float ZNear = DepthFrameDesc->nearZ * WorldToMeters_RenderThread; - const float ZFar = DepthFrameDesc->farZ * WorldToMeters_RenderThread; - FMatrix DepthProjectionMatrix = MakeProjection(ZNear, ZFar, DepthUpTan, DepthDownTan, DepthLeftTan, DepthRightTan, true); - - auto DepthOrientation = TrackingToWorld_RenderThread.GetRotation() * InverseBaseOrientation * ToFQuat(DepthFrameDesc->views[i].pose.orientation); - - // NOTE: This matrix is the same as applied in SetupViewFrustum in SceneView.cpp - auto ViewMatrix = DepthOrientation.Inverse().ToMatrix() - * FMatrix(FPlane(0, 0, 1, 0), FPlane(1, 0, 0, 0), - FPlane(0, 1, 0, 0), FPlane(0, 0, 0, 1)); - - FVector EyePos{}; - if (EyeViews_RenderThread.IsValidIndex(i)) - { - EyePos = ToFVector(EyeViews_RenderThread[i].pose.position, WorldToMeters_RenderThread); - } - - auto DepthTranslation = ToFVector(DepthFrameDesc->views[i].pose.position, WorldToMeters_RenderThread); - auto Delta = EyePos - DepthTranslation; - - // NOTE: The view matrix here is relative to the VR camera, this is necessary to support - // Large Worlds and avoid rounding errors when getting very far away from the origin - ViewMatrix = ViewMatrix.ConcatTranslation(ViewMatrix.TransformPosition(Delta)); - - DepthViewProj[i] = static_cast(ViewMatrix * DepthProjectionMatrix); - } - - // Screen To Depth represents the transformation matrix used to map normalised screen UV coordinates to - // normalised environment depth texture UV coordinates. This needs to account for 2 things: - // 1. The field of view of the two textures may be different, Unreal typically renders using a symmetric fov. - // That is to say the FOV of the left and right eyes is the same. The environment depth on the other hand - // has a different FOV for the left and right eyes. So we need to scale and offset accordingly to account - // for this difference. - - float UpAngle, DownAngle, LeftAngle, RightAngle; - const IHeadMountedDisplay* Hmd = GEngine->XRSystem.Get()->GetHMDDevice(); - Hmd->GetStereoFieldOfView(i, LeftAngle, RightAngle, UpAngle, DownAngle); - - const float ScreenUpTan = tanf(UpAngle); - const float ScreenDownTan = tanf(-DownAngle); - const float ScreenLeftTan = tanf(-LeftAngle); - const float ScreenRightTan = tanf(RightAngle); - - auto T_ScreenCamera_ScreenNormCoord = MakeUnprojectionMatrix(ScreenUpTan, ScreenDownTan, ScreenLeftTan, ScreenRightTan); - auto T_DepthNormCoord_DepthCamera = MakeProjectionMatrix(DepthUpTan, DepthDownTan, DepthLeftTan, DepthRightTan); - - // 2. The headset may have moved in between capturing the environment depth and rendering the frame. We - // can only account for rotation of the headset, not translation. - auto DepthOrientation = InverseBaseOrientation * ToFQuat(DepthFrameDesc->views[i].pose.orientation); - if (!DepthOrientation.IsNormalized()) - { - UE_LOG(LogHMD, Error, TEXT("DepthOrientation is not normalized %f %f %f %f"), - DepthOrientation.X, DepthOrientation.Y, DepthOrientation.Z, DepthOrientation.W); - DepthOrientation.Normalize(); - } - const auto ScreenToDepthQuat = ScreenOrientation.Inverse() * DepthOrientation; - - FMatrix44f R_DepthCamera_ScreenCamera = FQuat4f(ScreenToDepthQuat.Y, ScreenToDepthQuat.Z, - ScreenToDepthQuat.X, ScreenToDepthQuat.W) - .GetNormalized() - .ToMatrix(); - - ScreenToDepth[i] = T_DepthNormCoord_DepthCamera * R_DepthCamera_ScreenCamera * T_ScreenCamera_ScreenNormCoord; - } - - return true; - } - - void FEnvironmentDepthExtensionPlugin::PostRenderBasePassMobile_RenderThread(FRHICommandList& RHICmdList, FSceneView& InView) - { - if (bHardOcclusionsEnabled) - { - PrepareAndRenderHardOcclusions_RenderThread(RHICmdList, InView); - } - } - - void FEnvironmentDepthExtensionPlugin::PrepareAndRenderHardOcclusions_RenderThread(FRHICommandList& RHICmdList, FSceneView& InView) - { - FVector2f DepthFactors; - FMatrix44f ScreenToDepthMatrices[EYE_COUNT]; - int SwapchainIndex; - - if (InView.bIsSceneCapture || InView.bIsReflectionCapture || InView.bIsPlanarReflection - || !ComputeEnvironmentDepthParameters_RenderThread(DepthFactors, ScreenToDepthMatrices, nullptr, SwapchainIndex)) - { - return; - } - - if (SwapchainIndex >= EnvironmentDepthSwapchain.Num()) - { - UE_LOG(LogHMD, Error, TEXT("Depth texture swapchain index %d outside of boundaries"), SwapchainIndex); - return; - } - - FRHITexture* DepthTexture = EnvironmentDepthSwapchain[SwapchainIndex]; - - RenderHardOcclusions_RenderThread(RendererModule, DepthFactors, ScreenToDepthMatrices, DepthTexture, RHICmdList, InView); - } - - BEGIN_SHADER_PARAMETER_STRUCT(FPostBasePassViewExtensionParameters, ) - SHADER_PARAMETER_RDG_UNIFORM_BUFFER(FSceneTextureUniformParameters, SceneTextures) - RENDER_TARGET_BINDING_SLOTS() - END_SHADER_PARAMETER_STRUCT() - - void FEnvironmentDepthExtensionPlugin::PostRenderBasePassDeferred_RenderThread(FRDGBuilder& GraphBuilder, FSceneView& InView, - const FRenderTargetBindingSlots& RenderTargets, TRDGUniformBufferRef SceneTextures) - { - if (bHardOcclusionsEnabled) - { - auto* PassParameters = GraphBuilder.AllocParameters(); - PassParameters->RenderTargets = RenderTargets; - PassParameters->SceneTextures = SceneTextures; - - GraphBuilder.AddPass(RDG_EVENT_NAME("RenderHardOcclusions_RenderThread"), PassParameters, ERDGPassFlags::Raster, - [this, &InView](FRHICommandListImmediate& RHICmdList) { - PrepareAndRenderHardOcclusions_RenderThread(RHICmdList, InView); - }); - } - } - - bool FEnvironmentDepthExtensionPlugin::InitializeEnvironmentDepth_RenderThread() - { - if (!bExtEnvironmentDepthAvailable) - { - return false; - } - if (EnvironmentDepthProviderMeta != XR_NULL_HANDLE) - { - return false; - } - - constexpr XrEnvironmentDepthProviderCreateInfoMETA DepthProviderCreateInfo{ XR_TYPE_ENVIRONMENT_DEPTH_PROVIDER_CREATE_INFO_META }; - - XR_ENSURE(xrCreateEnvironmentDepthProviderMETA(Session, &DepthProviderCreateInfo, &EnvironmentDepthProviderMeta)); - - constexpr XrEnvironmentDepthSwapchainCreateInfoMETA DepthSwapchainCreateInfo{ XR_TYPE_ENVIRONMENT_DEPTH_SWAPCHAIN_CREATE_INFO_META }; - XR_ENSURE(xrCreateEnvironmentDepthSwapchainMETA(EnvironmentDepthProviderMeta, &DepthSwapchainCreateInfo, &EnvironmentDepthSwapchainMeta)); - - XR_ENSURE(xrGetEnvironmentDepthSwapchainStateMETA(EnvironmentDepthSwapchainMeta, &EnvironmentDepthSwapchainStateMeta)); - - UE_LOG(LogHMD, Log, TEXT("Initialize env depth: swapchain size=%dx%d"), - EnvironmentDepthSwapchainStateMeta.width, EnvironmentDepthSwapchainStateMeta.height); - - uint32 ImageCount = 0; - XR_ENSURE(xrEnumerateEnvironmentDepthSwapchainImagesMETA(EnvironmentDepthSwapchainMeta, 0, &ImageCount, nullptr)); - - TArray DepthSwapChainImages; - DepthSwapChainImages.SetNum(ImageCount); - for (uint32 i = 0; i < ImageCount; ++i) - { - DepthSwapChainImages[i] = { GetEnvironmentDepthSwapchainImageType() }; - } - - XR_ENSURE(xrEnumerateEnvironmentDepthSwapchainImagesMETA(EnvironmentDepthSwapchainMeta, ImageCount, &ImageCount, - reinterpret_cast(DepthSwapChainImages.GetData()))); - - { - std::lock_guard EnvTexLock(EnvironmentDepthTextureMutex); - EnvironmentDepthTextures.Empty(); - for (auto DepthSwapChainImage : DepthSwapChainImages) - { - EnvironmentDepthTextures.Push(reinterpret_cast(DepthSwapChainImage.image)); - } - } - - return true; - } - - bool FEnvironmentDepthExtensionPlugin::DestroyEnvironmentDepth_RenderThread() - { - if (!bExtEnvironmentDepthAvailable) - { - return false; - } - - if (EnvironmentDepthProviderMeta == XR_NULL_HANDLE) - { - return false; - } - - { - std::lock_guard EnvTexLock(EnvironmentDepthTextureMutex); - EnvironmentDepthTextures.Empty(); - } - - XR_ENSURE(xrDestroyEnvironmentDepthSwapchainMETA(EnvironmentDepthSwapchainMeta)); - EnvironmentDepthSwapchainMeta = XR_NULL_HANDLE; - - XR_ENSURE(xrDestroyEnvironmentDepthProviderMETA(EnvironmentDepthProviderMeta)); - EnvironmentDepthProviderMeta = XR_NULL_HANDLE; - - return true; - } - - bool FEnvironmentDepthExtensionPlugin::GetEnvironmentDepthTextureStageCount_RenderThread(int& OutStageCount) - { - std::lock_guard EnvTexLock(EnvironmentDepthTextureMutex); - OutStageCount = EnvironmentDepthTextures.Num(); - return !EnvironmentDepthTextures.IsEmpty(); - } - - bool FEnvironmentDepthExtensionPlugin::GetEnvironmentDepthTexture_RenderThread(int Stage, TextureHandle& OutHandle) - { - if (!bExtEnvironmentDepthAvailable) - { - return false; - } - - std::lock_guard EnvTexLock(EnvironmentDepthTextureMutex); - - if (Stage >= EnvironmentDepthTextures.Num()) - { - return false; - } - - OutHandle = EnvironmentDepthTextures[Stage]; - - return true; - } - - bool FEnvironmentDepthExtensionPlugin::SetEnvironmentDepthHandRemoval_RenderThread(bool Enabled) - { - // Save the value. If environment depth is not yet started it will enable hand removal when it starts. - bEnvironmentDepthHandRemovalEnabled = Enabled; - - if (EnvironmentDepthProviderMeta == XR_NULL_HANDLE || !bExtEnvironmentDepthAvailable || !bHandsRemovalSupported) - { - return false; - } - - const XrEnvironmentDepthHandRemovalSetInfoMETA SetInfo{ - /*type=*/XR_TYPE_ENVIRONMENT_DEPTH_HAND_REMOVAL_SET_INFO_META, - /*next=*/nullptr, - /*enabled=*/Enabled, - }; - XR_ENSURE(xrSetEnvironmentDepthHandRemovalMETA(EnvironmentDepthProviderMeta, &SetInfo)); - - bEnvironmentDepthHandRemovalEnabled = Enabled; - - return true; - } - - bool FEnvironmentDepthExtensionPlugin::StopEnvironmentDepth() - { - ExecuteOnRenderThread_DoNotWait([this]() { - auto& EnvDepthPlugin = FOculusXRHMDModule::Get().GetExtensionPluginManager().GetEnvironmentDepthExtensionPlugin(); - if (!EnvironmentDepthSwapchain.IsEmpty()) - { - EnvironmentDepthSwapchain.Empty(); - } - if (EnvDepthPlugin.StopEnvironmentDepth_RenderThread()) - { - EnvDepthPlugin.DestroyEnvironmentDepth_RenderThread(); - } - EnvironmentDepthMinMaxTexture = nullptr; - PrevEnvironmentDepthMinMaxSwapchainIndex = -1; - }); - return true; - } - - TArray FEnvironmentDepthExtensionPlugin::CreateSwapChainTextures_RenderThread(uint32 InSizeX, uint32 InSizeY, EPixelFormat InFormat, - const FClearValueBinding& InBinding, uint32 InNumMips, uint32 InNumSamples, uint32 InNumSamplesTileMem, ERHIResourceType InResourceType, - const TArray& InTextures, ETextureCreateFlags InTexCreateFlags, const TCHAR* DebugName) const - { - OculusXRHMD::CheckInRenderThread(); - - TArray RHITextureSwapChain; - for (int32 TextureIndex = 0; TextureIndex < InTextures.Num(); ++TextureIndex) - { - FTextureRHIRef TexRef = CreateTexture_RenderThread_Fn(InSizeX, InSizeY, InFormat, InBinding, InNumMips, InNumSamples, - InNumSamplesTileMem, InResourceType, InTextures[TextureIndex], InTexCreateFlags); - - FString TexName = FString::Printf(TEXT("%s (%d/%d)"), DebugName, TextureIndex, InTextures.Num()); - TexRef->SetName(*TexName); - RHIBindDebugLabelName(TexRef, *TexName); - - RHITextureSwapChain.Add(TexRef); - } - return RHITextureSwapChain; - } - - bool FEnvironmentDepthExtensionPlugin::StartEnvironmentDepth() - { -#if PLATFORM_ANDROID - static const FString USE_SCENE_PERMISSION_NAME("com.oculus.permission.USE_SCENE"); - - // Check and request scene permissions (this is needed for environment depth to work) - // bind delegate for handling permission request result - if (!UAndroidPermissionFunctionLibrary::CheckPermission(USE_SCENE_PERMISSION_NAME)) - { - TArray Permissions; - Permissions.Add(USE_SCENE_PERMISSION_NAME); - UAndroidPermissionCallbackProxy* Proxy = UAndroidPermissionFunctionLibrary::AcquirePermissions(Permissions); - static FDelegateHandle DelegateHandle; - DelegateHandle = Proxy->OnPermissionsGrantedDelegate.AddLambda([this, Proxy](const TArray& Permissions, const TArray& GrantResults) { - int PermIndex = Permissions.Find(USE_SCENE_PERMISSION_NAME); - if (PermIndex != INDEX_NONE && GrantResults[PermIndex]) - { - UE_LOG(LogHMD, Verbose, TEXT("%s permission granted"), *USE_SCENE_PERMISSION_NAME); - StartEnvironmentDepth(); - } - else - { - UE_LOG(LogHMD, Log, TEXT("%s permission denied"), *USE_SCENE_PERMISSION_NAME); - } - Proxy->OnPermissionsGrantedDelegate.Remove(DelegateHandle); - }); - return true; - } -#endif // PLATFORM_ANDROID - - ExecuteOnRenderThread_DoNotWait([this]() { - auto& EnvDepthPlugin = FOculusXRHMDModule::Get().GetExtensionPluginManager().GetEnvironmentDepthExtensionPlugin(); - if (!EnvDepthPlugin.InitializeEnvironmentDepth_RenderThread()) - { - UE_LOG(LogHMD, Error, TEXT("Failed to initialize env depth")); - return; - } - - TArray DepthTextures; - int32 TextureCount; - if (!EnvDepthPlugin.GetEnvironmentDepthTextureStageCount_RenderThread(TextureCount)) - { - UE_LOG(LogHMD, Error, TEXT("Failed to get depth texture stage count")); - return; - } - - // We don't really do different depth texture formats right now and it's always a - // single multiview texture, so no need for a separate right eye texture for now. - // We may need a separate Left/RightDepthTextures in the future. - DepthTextures.SetNum(TextureCount); - - for (int32 TextureIndex = 0; TextureIndex < TextureCount; TextureIndex++) - { - if (!EnvDepthPlugin.GetEnvironmentDepthTexture_RenderThread(TextureIndex, DepthTextures[TextureIndex])) - { - UE_LOG(LogHMD, Error, TEXT("Failed to create insight depth texture. NOTE: This causes a leak of %d other texture(s), which will go unused."), TextureIndex); - return; - } - } - - const uint32 SizeX = EnvironmentDepthSwapchainStateMeta.width; - const uint32 SizeY = EnvironmentDepthSwapchainStateMeta.height; - constexpr EPixelFormat DepthFormat = PF_ShadowDepth; - constexpr uint32 NumMips = 1; - constexpr uint32 NumSamples = 1; - constexpr uint32 NumSamplesTileMem = 1; - constexpr ETextureCreateFlags DepthTexCreateFlags = TexCreate_ShaderResource | TexCreate_InputAttachmentRead; - const FClearValueBinding DepthTextureBinding = FClearValueBinding::DepthFar; - constexpr ERHIResourceType ResourceType = RRT_Texture2DArray; - - if (!EnvironmentDepthSwapchain.IsEmpty()) - { - EnvironmentDepthSwapchain.Empty(); - } - EnvironmentDepthSwapchain = CreateSwapChainTextures_RenderThread(SizeX, SizeY, DepthFormat, DepthTextureBinding, NumMips, - NumSamples, NumSamplesTileMem, ResourceType, DepthTextures, DepthTexCreateFlags, - *FString::Printf(TEXT("Oculus Environment Depth Swapchain"))); - - ETextureCreateFlags MinMaxTextureCreateFlags = TexCreate_ShaderResource | TexCreate_RenderTargetable; - FRHITextureCreateDesc MinMaxTextureDesc = FRHITextureCreateDesc::Create(TEXT("EnvironmentDepthMinMaxTexture"), - ETextureDimension::Texture2DArray) - .SetExtent(SizeX, SizeY) - // Note: PF_R16G16B16A16_UNORM would be better from a precision perspective but is less performant. - .SetFormat(PF_FloatRGBA) - .SetNumMips(NumMips) - .SetNumSamples(NumSamples) - .SetClearValue(FClearValueBinding::None); - MinMaxTextureDesc.SetArraySize(2); - MinMaxTextureCreateFlags |= TexCreate_TargetArraySlicesIndependently; - MinMaxTextureDesc.SetFlags(MinMaxTextureCreateFlags); - EnvironmentDepthMinMaxTexture = RHICreateTexture(MinMaxTextureDesc); - - if (bEnvironmentDepthHandRemovalEnabled) - { - EnvDepthPlugin.SetEnvironmentDepthHandRemoval_RenderThread(bEnvironmentDepthHandRemovalEnabled); - } - EnvDepthPlugin.StartEnvironmentDepth_RenderThread(); - }); - return true; - } - - bool FEnvironmentDepthExtensionPlugin::StartEnvironmentDepth_RenderThread() - { - if (EnvironmentDepthProviderMeta == XR_NULL_HANDLE || bEnvironmentDepthRunning) - { - return false; - } - - XR_ENSURE(xrStartEnvironmentDepthProviderMETA(EnvironmentDepthProviderMeta)); - - bEnvironmentDepthRunning = true; - - StageSpace = OculusXR::GetOpenXRTrackingSystem()->GetIOpenXRHMD()->GetTrackingSpace(); - - return true; - } - - bool FEnvironmentDepthExtensionPlugin::StopEnvironmentDepth_RenderThread() - { - if (EnvironmentDepthProviderMeta == XR_NULL_HANDLE || !bEnvironmentDepthRunning) - { - return false; - } - - XR_ENSURE(xrStopEnvironmentDepthProviderMETA(EnvironmentDepthProviderMeta)); - - bEnvironmentDepthRunning = false; - - return true; - } - - bool FEnvironmentDepthExtensionPlugin::AcquireEnvironmentDepthTexture_RHIThread(XrTime predictedDisplayTime) - { - if (EnvironmentDepthProviderMeta == XR_NULL_HANDLE || !bEnvironmentDepthRunning) - { - return false; - } - - XrEnvironmentDepthImageAcquireInfoMETA AcquireInfo{ XR_TYPE_ENVIRONMENT_DEPTH_IMAGE_ACQUIRE_INFO_META }; - AcquireInfo.space = StageSpace; - - const XrTime PredictedDisplayTime = predictedDisplayTime; - AcquireInfo.displayTime = PredictedDisplayTime ? PredictedDisplayTime : 0; - - XrEnvironmentDepthImageMETA DepthImage{ XR_TYPE_ENVIRONMENT_DEPTH_IMAGE_META }; - DepthImage.views[0].type = XR_TYPE_ENVIRONMENT_DEPTH_IMAGE_VIEW_META; - DepthImage.views[1].type = XR_TYPE_ENVIRONMENT_DEPTH_IMAGE_VIEW_META; - XrResult Result = xrAcquireEnvironmentDepthImageMETA(EnvironmentDepthProviderMeta, &AcquireInfo, &DepthImage); - - std::lock_guard EnvTexLock(EnvironmentDepthTextureMutex); - - if (Result == XR_ENVIRONMENT_DEPTH_NOT_AVAILABLE_META) - { - // ignore this one and keep the old one - } - else if (XR_FAILED(Result)) - { - UE_LOG(LogHMD, Error, TEXT("Can not set environment depth frame desc: %d"), Result); - EnvironmentDepthFrameDesc.Reset(); - return false; - } - else - { - EnvironmentDepthFrameDesc = DepthImage; - } - - return true; - } - - bool FEnvironmentDepthExtensionPlugin::GetEnvironmentDepthFrameDesc_RenderThread(TOptional& OutEnvironmentDepthFrameDesc) - { - if (EnvironmentDepthProviderMeta == XR_NULL_HANDLE || !bEnvironmentDepthRunning) - { - return false; - } - - OutEnvironmentDepthFrameDesc = EnvironmentDepthFrameDesc; - - return true; - } - - void FEnvironmentDepthExtensionPlugin::SetXROcclusionsMode(UObject* WorldContextObject, EOculusXROcclusionsMode Mode) - { - bHardOcclusionsEnabled = (Mode == EOculusXROcclusionsMode::HardOcclusions_Deprecated); - bSoftOcclusionsEnabled = (Mode == EOculusXROcclusionsMode::SoftOcclusions); - -#if defined(WITH_OCULUS_BRANCH) - WorldContextObject->GetWorld()->Scene->SetEnableXRPassthroughSoftOcclusions(Mode == EOculusXROcclusionsMode::SoftOcclusions); -#else - ensureMsgf(Mode != EOculusXROcclusionsMode::SoftOcclusions, TEXT("Soft occlusions are only supported with the Oculus branch of the Unreal Engine")); -#endif - } - - bool FEnvironmentDepthExtensionPlugin::IsEnvironmentDepthStarted() const - { - return !EnvironmentDepthSwapchain.IsEmpty(); - } - - bool FEnvironmentDepthExtensionPlugin::OnStartGameFrame(FWorldContext& WorldContext) - { - FXRTrackingSystemBase* TS = static_cast(GEngine->XRSystem.Get()); - FVector Pos; - TS->GetCurrentPose(IXRTrackingSystem::HMDDeviceId, HeadOrientation, Pos); - BaseOrientation = TS->GetBaseOrientation(); - return true; - } - - bool FEnvironmentDepthExtensionPlugin::OnEndGameFrame(FWorldContext& WorldContext) - { - FXRTrackingSystemBase* TS = static_cast(GEngine->XRSystem.Get()); - WorldToMeters = WorldContext.World()->GetWorldSettings()->WorldToMeters; - TrackingToWorld = TS->GetTrackingToWorldTransform(); - return true; - } - - void FEnvironmentDepthExtensionPlugin::OnDestroySession(XrSession InSession) - { - StopEnvironmentDepth(); - } - - const void* FEnvironmentDepthExtensionPlugin::OnLocateViews(XrSession InSession, XrTime InDisplayTime, XrViewConfigurationType ViewConfigurationType, const void* InNext) - { - if (EnvironmentDepthProviderMeta == XR_NULL_HANDLE || !bEnvironmentDepthRunning) - { - return InNext; - } - - XrViewLocateInfo ViewInfo = {}; - ViewInfo.type = XR_TYPE_VIEW_LOCATE_INFO; - ViewInfo.next = nullptr; - ViewInfo.viewConfigurationType = ViewConfigurationType; - ViewInfo.space = StageSpace; - ViewInfo.displayTime = InDisplayTime; - - uint32_t Count = 0; - XrViewState ViewState{ XR_TYPE_VIEW_STATE }; - XR_ENSURE(xrLocateViews(InSession, &ViewInfo, &ViewState, 0, &Count, nullptr)); - - if (EyeViews.Num() < (int)Count) - { - int OldCount = EyeViews.Num(); - EyeViews.SetNum(Count, EAllowShrinking::No); - for (int i = OldCount; i < (int)Count; ++i) - { - memset(&EyeViews[i], 0, sizeof(XrView)); - EyeViews[i].type = XR_TYPE_VIEW; - EyeViews[i].pose = ToXrPose(FTransform::Identity); - } - } - XR_ENSURE(xrLocateViews(InSession, &ViewInfo, &ViewState, EyeViews.Num(), &Count, EyeViews.GetData())); - - return InNext; - } - - XrStructureType FEnvironmentDepthExtensionPlugin::GetEnvironmentDepthSwapchainImageType() const - { - if (RHIString == TEXT("Vulkan")) - { - return XR_TYPE_SWAPCHAIN_IMAGE_VULKAN_KHR; - } - if (RHIString == TEXT("D3D12")) - { - return XR_TYPE_SWAPCHAIN_IMAGE_D3D12_KHR; - } - if (RHIString == TEXT("D3D11")) - { - return XR_TYPE_SWAPCHAIN_IMAGE_D3D11_KHR; - } - UE_LOG(LogHMD, Error, TEXT("Unknown RHIString '%s'. Fallback to Vulkan"), *RHIString); - return XR_TYPE_SWAPCHAIN_IMAGE_VULKAN_KHR; - } - -#if defined(WITH_OCULUS_BRANCH) - bool FEnvironmentDepthExtensionPlugin::FindEnvironmentDepthTexture_RenderThread(FTextureRHIRef& OutTexture, FTextureRHIRef& OutMinMaxTexture, - FVector2f& OutDepthFactors, FMatrix44f OutScreenToDepthMatrices[2], FMatrix44f OutDepthViewProjMatrices[2]) - { - OculusXRHMD::CheckInRenderThread(); - - if (EnvironmentDepthProviderMeta == XR_NULL_HANDLE || !bEnvironmentDepthRunning) - { - return false; - } - - int SwapchainIndex = 0; - if (ComputeEnvironmentDepthParameters_RenderThread(OutDepthFactors, OutScreenToDepthMatrices, OutDepthViewProjMatrices, SwapchainIndex)) - { - if (SwapchainIndex >= EnvironmentDepthSwapchain.Num()) - { - return false; - } - OutTexture = EnvironmentDepthSwapchain[SwapchainIndex]; - OutMinMaxTexture = EnvironmentDepthMinMaxTexture; - return true; - } - return false; - } -#endif // defined(WITH_OCULUS_BRANCH) -#endif -} // namespace OculusXR diff --git a/Plugins/MetaXR/Source/OculusXRHMD/Private/OpenXR/OculusXREnvironmentDepthExtensionPlugin.h b/Plugins/MetaXR/Source/OculusXRHMD/Private/OpenXR/OculusXREnvironmentDepthExtensionPlugin.h deleted file mode 100644 index aa1f827..0000000 --- a/Plugins/MetaXR/Source/OculusXRHMD/Private/OpenXR/OculusXREnvironmentDepthExtensionPlugin.h +++ /dev/null @@ -1,136 +0,0 @@ -// Copyright (c) Meta Platforms, Inc. and affiliates. - -#pragma once - -#include -#include - -#include "khronos/openxr/openxr.h" -#include "IOpenXRExtensionPlugin.h" -#include "OculusXRHMDTypes.h" -#include "Shader.h" -#include "Misc/EngineVersionComparison.h" - -namespace OculusXR -{ - /// Texture handle which can be cast to GLuint, VkImage, ID3D11Texture2D*, or ID3D12Resource* - using TextureHandle = unsigned long long; - - constexpr uint32 EYE_COUNT = 2; - - void RenderHardOcclusions_RenderThread(IRendererModule* RendererModule, const FVector2f& DepthFactors, - const FMatrix44f ScreenToDepthMatrices[EYE_COUNT], FRHITexture* DepthTexture, FRHICommandList& RHICmdList, const FSceneView& InView); - void RenderEnvironmentDepthMinMaxTexture_RenderThread(IRendererModule* RendererModule, FTextureRHIRef EnvironmentDepthMinMaxTexture, - FTextureRHIRef EnvironmentDepthSwapchain, FRHICommandListImmediate& RHICmdList); - -#ifdef WITH_OCULUS_BRANCH - - extern PFN_xrCreateEnvironmentDepthProviderMETA xrCreateEnvironmentDepthProviderMETA; - extern PFN_xrDestroyEnvironmentDepthProviderMETA xrDestroyEnvironmentDepthProviderMETA; - extern PFN_xrStartEnvironmentDepthProviderMETA xrStartEnvironmentDepthProviderMETA; - extern PFN_xrStopEnvironmentDepthProviderMETA xrStopEnvironmentDepthProviderMETA; - extern PFN_xrCreateEnvironmentDepthSwapchainMETA xrCreateEnvironmentDepthSwapchainMETA; - extern PFN_xrDestroyEnvironmentDepthSwapchainMETA xrDestroyEnvironmentDepthSwapchainMETA; - extern PFN_xrEnumerateEnvironmentDepthSwapchainImagesMETA xrEnumerateEnvironmentDepthSwapchainImagesMETA; - extern PFN_xrGetEnvironmentDepthSwapchainStateMETA xrGetEnvironmentDepthSwapchainStateMETA; - extern PFN_xrAcquireEnvironmentDepthImageMETA xrAcquireEnvironmentDepthImageMETA; - extern PFN_xrSetEnvironmentDepthHandRemovalMETA xrSetEnvironmentDepthHandRemovalMETA; - - class FEnvironmentDepthExtensionPlugin : public IOpenXRExtensionPlugin - { - public: - void RegisterOpenXRExtensionPlugin() - { -#if defined(WITH_OCULUS_BRANCH) - RegisterOpenXRExtensionModularFeature(); -#endif - } - - virtual void PostCreateSession(XrSession InSession) override; - virtual void BindExtensionPluginDelegates(class IOpenXRExtensionPluginDelegates& OpenXRHMD) override; - virtual bool GetRequiredExtensions(TArray& OutExtensions) override; - virtual const void* OnCreateInstance(class IOpenXRHMDModule* InModule, const void* InNext) override; - virtual const void* OnCreateSession(XrInstance InInstance, XrSystemId InSystem, const void* InNext) override; - virtual void OnBeginRendering_GameThread(XrSession InSession) override; - virtual void OnBeginRenderingLate_RenderThread(XrSession InSession, FRHICommandListImmediate& RHICmdList) override; - virtual void PostBeginFrame_RHIThread(XrTime PredictedDisplayTime) override; - virtual void PostRenderBasePassMobile_RenderThread(FRHICommandList& RHICmdList, FSceneView& InView) override; - virtual void PostRenderBasePassDeferred_RenderThread(FRDGBuilder& GraphBuilder, FSceneView& InView, - const FRenderTargetBindingSlots& RenderTargets, TRDGUniformBufferRef SceneTextures) override; - virtual bool OnStartGameFrame(FWorldContext& WorldContext) override; - virtual bool OnEndGameFrame(FWorldContext& WorldContext) override; - virtual void OnDestroySession(XrSession InSession) override; - virtual const void* OnLocateViews(XrSession InSession, XrTime InDisplayTime, XrViewConfigurationType ViewConfigurationType, const void* InNext) override; -#ifdef WITH_OCULUS_BRANCH - virtual bool FindEnvironmentDepthTexture_RenderThread(FTextureRHIRef& OutTexture, FTextureRHIRef& OutMinMaxTexture, - FVector2f& OutDepthFactors, FMatrix44f OutScreenToDepthMatrices[2], FMatrix44f OutDepthViewProjMatrices[2]) override; -#endif // WITH_OCULUS_BRANCH - bool StartEnvironmentDepth(); - bool StopEnvironmentDepth(); - void SetXROcclusionsMode(UObject* WorldContextObject, EOculusXROcclusionsMode Mode); - bool IsEnvironmentDepthStarted() const; - - bool InitializeEnvironmentDepth_RenderThread(); - bool DestroyEnvironmentDepth_RenderThread(); - bool GetEnvironmentDepthTextureStageCount_RenderThread(int& OutStageCount); - bool GetEnvironmentDepthTexture_RenderThread(int Stage, TextureHandle& OutHandle); - bool SetEnvironmentDepthHandRemoval_RenderThread(bool Enabled); - bool StartEnvironmentDepth_RenderThread(); - bool StopEnvironmentDepth_RenderThread(); - bool AcquireEnvironmentDepthTexture_RHIThread(XrTime predictedDisplayTime); - bool GetEnvironmentDepthFrameDesc_RenderThread(TOptional& OutEnvironmentDepthFrameDesc); - - private: - XrSession Session = XR_NULL_HANDLE; - XrSpace StageSpace = XR_NULL_HANDLE; - - XrEnvironmentDepthProviderMETA EnvironmentDepthProviderMeta = XR_NULL_HANDLE; - XrEnvironmentDepthSwapchainMETA EnvironmentDepthSwapchainMeta = XR_NULL_HANDLE; - XrEnvironmentDepthSwapchainStateMETA EnvironmentDepthSwapchainStateMeta{ XR_TYPE_ENVIRONMENT_DEPTH_SWAPCHAIN_STATE_META }; - - std::mutex EnvironmentDepthTextureMutex; - - bool bExtEnvironmentDepthAvailable = false; - bool bHandsRemovalSupported = false; - bool bEnvironmentDepthRunning = false; - - std::function - CreateTexture_RenderThread_Fn; - - TArray EnvironmentDepthSwapchain; - FTextureRHIRef EnvironmentDepthMinMaxTexture; - int PrevEnvironmentDepthMinMaxSwapchainIndex = -1; - - TArray EnvironmentDepthTextures; - TOptional EnvironmentDepthFrameDesc; - - std::atomic bHardOcclusionsEnabled = false; - std::atomic bSoftOcclusionsEnabled = false; - std::atomic bEnvironmentDepthHandRemovalEnabled = false; - - FString RHIString; - IRendererModule* RendererModule = nullptr; - float WorldToMeters; - float WorldToMeters_RenderThread; - FTransform TrackingToWorld; - FTransform TrackingToWorld_RenderThread; - FQuat HeadOrientation; - FQuat HeadOrientation_RenderThread; - FQuat BaseOrientation; - FQuat BaseOrientation_RenderThread; - - TArray EyeViews; - TArray EyeViews_RenderThread; - - XrStructureType GetEnvironmentDepthSwapchainImageType() const; - bool ComputeEnvironmentDepthParameters_RenderThread(FVector2f& DepthFactors, FMatrix44f ScreenToDepth[EYE_COUNT], - FMatrix44f DepthViewProj[EYE_COUNT], int& SwapchainIndex); - TArray CreateSwapChainTextures_RenderThread(uint32 InSizeX, uint32 InSizeY, EPixelFormat InFormat, - const FClearValueBinding& InBinding, uint32 InNumMips, uint32 InNumSamples, uint32 InNumSamplesTileMem, ERHIResourceType InResourceType, - const TArray& InTextures, ETextureCreateFlags InTexCreateFlags, const TCHAR* DebugName) const; - void PrepareAndRenderHardOcclusions_RenderThread(FRHICommandList& RHICmdList, FSceneView& InView); - }; -#endif -} // namespace OculusXR diff --git a/Plugins/MetaXR/Source/OculusXRHMD/Private/OpenXR/OculusXRExtensionPluginManager.cpp b/Plugins/MetaXR/Source/OculusXRHMD/Private/OpenXR/OculusXRExtensionPluginManager.cpp deleted file mode 100644 index 76ca7a7..0000000 --- a/Plugins/MetaXR/Source/OculusXRHMD/Private/OpenXR/OculusXRExtensionPluginManager.cpp +++ /dev/null @@ -1,76 +0,0 @@ -// Copyright (c) Meta Platforms, Inc. and affiliates. - -#include "OculusXRExtensionPluginManager.h" - -namespace OculusXR -{ - FExtensionPluginManager::FExtensionPluginManager() - : CoreExtensionPlugin() - , PerformanceExtensionPlugin() - , XRSimulatorExtensionPlugin() - , GuardianExtensionPlugin() - , LayerExtensionPlugin() -#ifdef WITH_OCULUS_BRANCH - , EnvironmentDepthExtensionPlugin() -#endif -#if defined(WITH_OCULUS_BRANCH) - , SpaceWarpExtensionPlugin() -#endif // defined(WITH_OCULUS_BRANCH) - , SystemInfoExtensionPlugin() - { - } - - FExtensionPluginManager::~FExtensionPluginManager() - { - } - - void FExtensionPluginManager::StartupOpenXRPlugins() - { - CoreExtensionPlugin.RegisterOpenXRExtensionPlugin(); - PerformanceExtensionPlugin.RegisterOpenXRExtensionPlugin(); - XRSimulatorExtensionPlugin.RegisterOpenXRExtensionPlugin(); - SystemInfoExtensionPlugin.RegisterOpenXRExtensionPlugin(); - GuardianExtensionPlugin.RegisterOpenXRExtensionPlugin(); - LayerExtensionPlugin.RegisterOpenXRExtensionPlugin(); -#ifdef WITH_OCULUS_BRANCH - EnvironmentDepthExtensionPlugin.RegisterOpenXRExtensionPlugin(); -#endif -#if defined(WITH_OCULUS_BRANCH) - SpaceWarpExtensionPlugin.RegisterOpenXRExtensionPlugin(); -#endif // defined(WITH_OCULUS_BRANCH) - MultiPlayerStateExtensionPlugin.RegisterOpenXRExtensionPlugin(); - } - - FPerformanceExtensionPlugin& FExtensionPluginManager::GetPerformanceExtensionPlugin() - { - return PerformanceExtensionPlugin; - } - - FSystemInfoExtensionPlugin& FExtensionPluginManager::GetSystemInfoExtensionPlugin() - { - return SystemInfoExtensionPlugin; - } - - FGuardianExtensionPlugin& FExtensionPluginManager::GetGuardianExtensionPlugin() - { - return GuardianExtensionPlugin; - } - - FLayerExtensionPlugin& FExtensionPluginManager::GetLayerExtensionPlugin() - { - return LayerExtensionPlugin; - } - -#ifdef WITH_OCULUS_BRANCH - FEnvironmentDepthExtensionPlugin& FExtensionPluginManager::GetEnvironmentDepthExtensionPlugin() - { - return EnvironmentDepthExtensionPlugin; - } -#endif // WITH_OCULUS_BRANCH - - FMultiPlayerStateExtensionPlugin& FExtensionPluginManager::GetMultiPlayerStateExtensionPlugin() - { - return MultiPlayerStateExtensionPlugin; - } - -} // namespace OculusXR diff --git a/Plugins/MetaXR/Source/OculusXRHMD/Private/OpenXR/OculusXRExtensionPluginManager.h b/Plugins/MetaXR/Source/OculusXRHMD/Private/OpenXR/OculusXRExtensionPluginManager.h deleted file mode 100644 index 46065c9..0000000 --- a/Plugins/MetaXR/Source/OculusXRHMD/Private/OpenXR/OculusXRExtensionPluginManager.h +++ /dev/null @@ -1,52 +0,0 @@ -// Copyright (c) Meta Platforms, Inc. and affiliates. - -#pragma once -#include "CoreMinimal.h" -#include "OculusXREnvironmentDepthExtensionPlugin.h" -#include "OculusXRCoreExtensionPlugin.h" -#include "OculusXRGuardianExtensionPlugin.h" -#include "OculusXRLayerExtensionPlugin.h" -#include "OculusXRPerformanceExtensionPlugin.h" -#include "OculusXRSimulatorExtensionPlugin.h" -#include "OculusXRSpaceWarp.h" -#include "OculusXRSystemInfoExtensionPlugin.h" -#include "OculusXRMultiPlayerStateExtensionPlugin.h" - -namespace OculusXR -{ - - class FExtensionPluginManager - { - public: - FExtensionPluginManager(); - virtual ~FExtensionPluginManager(); - - void StartupOpenXRPlugins(); - - FPerformanceExtensionPlugin& GetPerformanceExtensionPlugin(); - FSystemInfoExtensionPlugin& GetSystemInfoExtensionPlugin(); - FGuardianExtensionPlugin& GetGuardianExtensionPlugin(); - FLayerExtensionPlugin& GetLayerExtensionPlugin(); -#ifdef WITH_OCULUS_BRANCH - FEnvironmentDepthExtensionPlugin& GetEnvironmentDepthExtensionPlugin(); -#endif - FMultiPlayerStateExtensionPlugin& GetMultiPlayerStateExtensionPlugin(); - - private: - FCoreExtensionPlugin CoreExtensionPlugin; - FPerformanceExtensionPlugin PerformanceExtensionPlugin; - FXRSimulatorExtensionPlugin XRSimulatorExtensionPlugin; - FGuardianExtensionPlugin GuardianExtensionPlugin; - FLayerExtensionPlugin LayerExtensionPlugin; -#ifdef WITH_OCULUS_BRANCH - FEnvironmentDepthExtensionPlugin EnvironmentDepthExtensionPlugin; -#endif -#if defined(WITH_OCULUS_BRANCH) - FSpaceWarpExtensionPlugin SpaceWarpExtensionPlugin; -#endif // defined(WITH_OCULUS_BRANCH) - FMultiPlayerStateExtensionPlugin MultiPlayerStateExtensionPlugin; - - FSystemInfoExtensionPlugin SystemInfoExtensionPlugin; - }; - -} // namespace OculusXR diff --git a/Plugins/MetaXR/Source/OculusXRHMD/Private/OpenXR/OculusXRGuardianExtensionPlugin.cpp b/Plugins/MetaXR/Source/OculusXRHMD/Private/OpenXR/OculusXRGuardianExtensionPlugin.cpp deleted file mode 100644 index 3750d2a..0000000 --- a/Plugins/MetaXR/Source/OculusXRHMD/Private/OpenXR/OculusXRGuardianExtensionPlugin.cpp +++ /dev/null @@ -1,78 +0,0 @@ -// Copyright (c) Meta Platforms, Inc. and affiliates. - -#include "OculusXRGuardianExtensionPlugin.h" -#include "Engine/GameEngine.h" -#include "IXRTrackingSystem.h" -#include "OculusXROpenXRUtilities.h" -#include "OpenXRCore.h" - -DEFINE_LOG_CATEGORY(LogOculusXRGuardian); - -namespace OculusXR -{ - void FGuardianExtensionPlugin::PostCreateSession(XrSession InSession) - { - Session = InSession; - } - - bool FGuardianExtensionPlugin::IsGuardianConfigured() - { - XrExtent2Df Extent; - const XrResult Result = xrGetReferenceSpaceBoundsRect(Session, XR_REFERENCE_SPACE_TYPE_STAGE, &Extent); - return (XR_SUCCEEDED(Result) && (Result != XR_SPACE_BOUNDS_UNAVAILABLE)); - } - - bool FGuardianExtensionPlugin::GetGuardianPoints(TArray& BoundaryPoints) - { - XrExtent2Df Extent; - XrResult Result = xrGetReferenceSpaceBoundsRect(Session, XR_REFERENCE_SPACE_TYPE_STAGE, &Extent); - if (!XR_SUCCEEDED(Result) || Result == XR_SPACE_BOUNDS_UNAVAILABLE) - { - return false; - } - - IXRTrackingSystem* TrackingSystem = GetOpenXRTrackingSystem(); - if (TrackingSystem == nullptr) - { - return false; - } - - FTransform OriginTransform; - if (!TrackingSystem->GetTrackingOriginTransform(EHMDTrackingOrigin::Stage, OriginTransform)) - { - return false; - } - - const float WorldToMetersScale = TrackingSystem->GetWorldToMetersScale(); - - const XrVector3f XrPoints[] = { - { -Extent.width * 0.5f, 0.0f, -Extent.height * 0.5 }, - { -Extent.width * 0.5f, 0.0f, Extent.height * 0.5f }, - { Extent.width * 0.5f, 0.0f, Extent.height * 0.5f }, - { Extent.width * 0.5f, 0.0f, -Extent.height * 0.5f } - }; - - BoundaryPoints.Reset(UE_ARRAY_COUNT(XrPoints)); - for (int Index = 0; Index < UE_ARRAY_COUNT(XrPoints); ++Index) - { - BoundaryPoints.Emplace(OriginTransform.TransformPosition(ToFVector(XrPoints[Index], WorldToMetersScale))); - } - - return true; - } - - FVector FGuardianExtensionPlugin::GetGuardianDimensions() - { - XrExtent2Df Extent; - FVector Dimensions; - XrResult Result = xrGetReferenceSpaceBoundsRect(Session, XR_REFERENCE_SPACE_TYPE_STAGE, &Extent); - if (XR_SUCCEEDED(Result) && Result == XR_SPACE_BOUNDS_UNAVAILABLE) - { - // Set height to 10.0f which matches expected OVRPlugin Version - const float BoundsHeight = 10.0f; - Dimensions = FVector(Extent.width, BoundsHeight, Extent.height); - } - return Dimensions; - } - -} // namespace OculusXR diff --git a/Plugins/MetaXR/Source/OculusXRHMD/Private/OpenXR/OculusXRGuardianExtensionPlugin.h b/Plugins/MetaXR/Source/OculusXRHMD/Private/OpenXR/OculusXRGuardianExtensionPlugin.h deleted file mode 100644 index 12674be..0000000 --- a/Plugins/MetaXR/Source/OculusXRHMD/Private/OpenXR/OculusXRGuardianExtensionPlugin.h +++ /dev/null @@ -1,24 +0,0 @@ -// Copyright (c) Meta Platforms, Inc. and affiliates. - -#pragma once -#include "OculusXRHMDTypes.h" -#include "OpenXR/IOculusXRExtensionPlugin.h" - -DECLARE_LOG_CATEGORY_EXTERN(LogOculusXRGuardian, Log, All); - -namespace OculusXR -{ - class FGuardianExtensionPlugin : public IOculusXRExtensionPlugin - { - public: - // IOpenXRExtensionPlugin - virtual void PostCreateSession(XrSession InSession) override; - - bool IsGuardianConfigured(); - bool GetGuardianPoints(TArray& BoundaryPoints); - FVector GetGuardianDimensions(); - - private: - XrSession Session; - }; -} // namespace OculusXR diff --git a/Plugins/MetaXR/Source/OculusXRHMD/Private/OpenXR/OculusXRLayerExtensionPlugin.cpp b/Plugins/MetaXR/Source/OculusXRHMD/Private/OpenXR/OculusXRLayerExtensionPlugin.cpp deleted file mode 100644 index 7883676..0000000 --- a/Plugins/MetaXR/Source/OculusXRHMD/Private/OpenXR/OculusXRLayerExtensionPlugin.cpp +++ /dev/null @@ -1,344 +0,0 @@ -// Copyright (c) Meta Platforms, Inc. and affiliates. - -#include "OculusXRLayerExtensionPlugin.h" -#include "Async/Async.h" -#include "DynamicResolutionState.h" -#include "IHeadMountedDisplay.h" -#include "IOpenXRHMD.h" -#include "IOpenXRHMDModule.h" -#include "OculusXRHMD_DynamicResolutionState.h" -#include "OculusXRHMDRuntimeSettings.h" -#include "OculusXROpenXRUtilities.h" -#include "OculusXRXRFunctions.h" -#include "OpenXRCore.h" -#include "XRThreadUtils.h" - -namespace -{ - XrCompositionLayerSettingsFlagsFB ToSharpenLayerFlag(EOculusXREyeBufferSharpenType EyeBufferSharpenType) - { - XrCompositionLayerSettingsFlagsFB Flag = 0; - switch (EyeBufferSharpenType) - { - case EOculusXREyeBufferSharpenType::SLST_None: - Flag = 0; - break; - case EOculusXREyeBufferSharpenType::SLST_Normal: - Flag = XR_COMPOSITION_LAYER_SETTINGS_NORMAL_SHARPENING_BIT_FB; - break; - case EOculusXREyeBufferSharpenType::SLST_Quality: - Flag = XR_COMPOSITION_LAYER_SETTINGS_QUALITY_SHARPENING_BIT_FB; - break; - case EOculusXREyeBufferSharpenType::SLST_Auto: - Flag = XR_COMPOSITION_LAYER_SETTINGS_AUTO_LAYER_FILTER_BIT_META; - break; - default: - break; - } - return Flag; - } - - XrColor4f ToXrColor4f(FLinearColor Color) - { - return XrColor4f{ Color.R, Color.G, Color.B, Color.A }; - } - -} // namespace - -namespace OculusXR -{ - FLayerExtensionPlugin::FLayerExtensionPlugin() - : Session(XR_NULL_HANDLE) - , bExtLocalDimmingAvailable(false) - , bExtCompositionLayerSettingsAvailable(false) - , bRecommendedResolutionExtensionAvailable(false) - , LocalDimmingMode_RHIThread(XR_LOCAL_DIMMING_MODE_ON_META) - , LocalDimmingExt_RHIThread{} - , EyeSharpenLayerFlags_RHIThread(0) - , ColorScaleInfo_RHIThread{} - , _HeadersStorage{} - , bPixelDensityAdaptive(false) - , RecommendedImageHeight_GameThread(0) - , Settings_GameThread{} - , MaxPixelDensity_RenderThread(0) - { - } - - bool FLayerExtensionPlugin::GetOptionalExtensions(TArray& OutExtensions) - { - OutExtensions.Add(XR_META_LOCAL_DIMMING_EXTENSION_NAME); - OutExtensions.Add(XR_FB_COMPOSITION_LAYER_SETTINGS_EXTENSION_NAME); - OutExtensions.Add(XR_META_RECOMMENDED_LAYER_RESOLUTION_EXTENSION_NAME); - return true; - } - - const void* FLayerExtensionPlugin::OnCreateInstance(class IOpenXRHMDModule* InModule, const void* InNext) - { - if (InModule != nullptr) - { - bExtLocalDimmingAvailable = InModule->IsExtensionEnabled(XR_META_LOCAL_DIMMING_EXTENSION_NAME); - bExtCompositionLayerSettingsAvailable = InModule->IsExtensionEnabled(XR_FB_COMPOSITION_LAYER_SETTINGS_EXTENSION_NAME); - bRecommendedResolutionExtensionAvailable = InModule->IsExtensionEnabled(XR_META_RECOMMENDED_LAYER_RESOLUTION_EXTENSION_NAME); - } - return IOculusXRExtensionPlugin::OnCreateInstance(InModule, InNext); - } - - void FLayerExtensionPlugin::PostCreateSession(XrSession InSession) - { - Session = InSession; - const UOculusXRHMDRuntimeSettings* HMDSettings = GetDefault(); - if (HMDSettings != nullptr) - { -#ifdef WITH_OCULUS_BRANCH - // currently only enabled in fork - bPixelDensityAdaptive = HMDSettings->bDynamicResolution && bRecommendedResolutionExtensionAvailable; -#endif - - if (IConsoleVariable* MobileDynamicResCVar = IConsoleManager::Get().FindConsoleVariable(TEXT("xr.MobileLDRDynamicResolution"))) - { - MobileDynamicResCVar->Set(bPixelDensityAdaptive); - } - - if (bPixelDensityAdaptive) - { - Settings_GameThread = MakeShareable(new OculusXRHMD::FSettings()); - Settings_GameThread->Flags.bPixelDensityAdaptive = bPixelDensityAdaptive; - - if (IConsoleVariable* DynamicResOperationCVar = IConsoleManager::Get().FindConsoleVariable(TEXT("r.DynamicRes.OperationMode"))) - { - // Operation mode for dynamic resolution - // Enable regardless of the game user settings - DynamicResOperationCVar->Set(2); - } - - GEngine->ChangeDynamicResolutionStateAtNextFrame(MakeShareable(new OculusXRHMD::FDynamicResolutionState(Settings_GameThread))); - - const float MaxPixelDensity = Settings_GameThread->GetPixelDensityMax(); - - ENQUEUE_RENDER_COMMAND(OculusXR_SetEnableLocalDimming) - ([this, MaxPixelDensity](FRHICommandListImmediate& RHICmdList) { - MaxPixelDensity_RenderThread = MaxPixelDensity; - }); - } - } - } - - void FLayerExtensionPlugin::OnBeginRendering_GameThread(XrSession InSession) - { - check(IsInGameThread()); - - if (bPixelDensityAdaptive) - { - IXRTrackingSystem* TrackingSystem = OculusXR::GetOpenXRTrackingSystem(); - if (TrackingSystem != nullptr) - { - IOpenXRHMD* OpenXRHMD = TrackingSystem->GetIOpenXRHMD(); - check(OpenXRHMD != nullptr); - - const XrTime PredictedDisplayTime = OpenXRHMD->GetDisplayTime(); - - ENQUEUE_RENDER_COMMAND(OculusXR_UpdatePredictedTime) - ([this, PredictedDisplayTime](FRHICommandListImmediate& RHICmdList) { - RHICmdList.EnqueueLambda([this, PredictedDisplayTime](FRHICommandListImmediate& RHICmdList) { - PredictedDisplayTime_RHIThread = PredictedDisplayTime; - }); - }); - - IHeadMountedDisplay* Hmd = TrackingSystem->GetHMDDevice(); - IHeadMountedDisplay::MonitorInfo MonitorInfo = {}; - check(Hmd != nullptr); - - if (Hmd->GetHMDMonitorInfo(MonitorInfo)) - { - float PixelDensity = RecommendedImageHeight_GameThread == 0 ? Hmd->GetPixelDenity() : static_cast(RecommendedImageHeight_GameThread) / MonitorInfo.ResolutionY; - - static const auto CVarOculusDynamicPixelDensity = IConsoleManager::Get().FindTConsoleVariableDataFloat(TEXT("r.Oculus.DynamicResolution.PixelDensity")); - const float PixelDensityCVarOverride = CVarOculusDynamicPixelDensity != nullptr ? CVarOculusDynamicPixelDensity->GetValueOnAnyThread() : 0.0f; - if (PixelDensityCVarOverride > 0.0f) - { - PixelDensity = PixelDensityCVarOverride; - } - - check(Settings_GameThread != nullptr) - Settings_GameThread->SetPixelDensitySmooth(PixelDensity); - } - } - } - else - { - if (Settings_GameThread != nullptr) - { -#if !UE_VERSION_OLDER_THAN(5, 5, 0) - static const auto PixelDensityCVar = IConsoleManager::Get().FindConsoleVariable(TEXT("xr.SecondaryScreenPercentage.HMDRenderTarget")); -#else - static const auto PixelDensityCVar = IConsoleManager::Get().FindConsoleVariable(TEXT("vr.PixelDensity")); -#endif - - Settings_GameThread->SetPixelDensity(PixelDensityCVar ? PixelDensityCVar->GetFloat() : 1.0f); - } - } - } - -#ifdef WITH_OCULUS_BRANCH - float FLayerExtensionPlugin::GetMaxPixelDensity() - { - check(IsInGameThread() || IsInRenderingThread()); - - float PixelDensity = 0.0f; - if (bPixelDensityAdaptive) - { - // Engine allows this call to happen on game or rendering thread. - PixelDensity = IsInRenderingThread() ? MaxPixelDensity_RenderThread : Settings_GameThread->GetPixelDensityMax(); - } - return PixelDensity; - } -#endif - - const void* FLayerExtensionPlugin::OnEndFrame(XrSession InSession, XrTime DisplayTime, const void* InNext) - { - check(IsInRenderingThread() || IsInRHIThread()); - const void* Next = InNext; - if (bExtLocalDimmingAvailable) - { - LocalDimmingExt_RHIThread.type = XR_TYPE_LOCAL_DIMMING_FRAME_END_INFO_META; - LocalDimmingExt_RHIThread.localDimmingMode = LocalDimmingMode_RHIThread; - LocalDimmingExt_RHIThread.next = Next; - Next = &LocalDimmingExt_RHIThread; - } - return Next; - } - - const void* FLayerExtensionPlugin::OnEndProjectionLayer(XrSession InSession, int32 InLayerIndex, const void* InNext, XrCompositionLayerFlags& OutFlags) - { - check(IsInRenderingThread() || IsInRHIThread()); - const void* Next = InNext; - if (bExtCompositionLayerSettingsAvailable) - { - XrCompositionLayerSettingsExt.type = XR_TYPE_COMPOSITION_LAYER_SETTINGS_FB; - XrCompositionLayerSettingsExt.next = Next; - XrCompositionLayerSettingsExt.layerFlags = EyeSharpenLayerFlags_RHIThread; - Next = &XrCompositionLayerSettingsExt; - } - return Next; - } - - void FLayerExtensionPlugin::SetEnableLocalDimming(bool Enable) - { - ENQUEUE_RENDER_COMMAND(OculusXR_SetEnableLocalDimming) - ([this, Enable](FRHICommandListImmediate& RHICmdList) { - RHICmdList.EnqueueLambda([this, Enable](FRHICommandListImmediate& RHICmdList) { - LocalDimmingMode_RHIThread = Enable ? XR_LOCAL_DIMMING_MODE_ON_META : XR_LOCAL_DIMMING_MODE_OFF_META; - }); - }); - } - - void FLayerExtensionPlugin::SetEyeBufferSharpenType(EOculusXREyeBufferSharpenType EyeBufferSharpenType) - { - ENQUEUE_RENDER_COMMAND(OculusXR_SetEyeBufferSharpenType) - ([this, EyeBufferSharpenType](FRHICommandListImmediate& RHICmdList) { - RHICmdList.EnqueueLambda([this, EyeBufferSharpenType](FRHICommandListImmediate& RHICmdList) { - EyeSharpenLayerFlags_RHIThread = ToSharpenLayerFlag(EyeBufferSharpenType); - }); - }); - } - - void FLayerExtensionPlugin::SetColorScaleAndOffset(FLinearColor ColorScale, FLinearColor ColorOffset, bool bApplyToAllLayers) - { - IXRTrackingSystem* TrackingSystem = OculusXR::GetOpenXRTrackingSystem(); - if (TrackingSystem != nullptr) - { - IHeadMountedDisplay* Hmd = TrackingSystem->GetHMDDevice(); - Hmd->SetColorScaleAndBias(ColorScale, ColorOffset); - } -#ifdef WITH_OCULUS_BRANCH - ENQUEUE_RENDER_COMMAND(OculusXR_SetColorScaleAndOffset) - ([this, ColorScale, ColorOffset, bApplyToAllLayers](FRHICommandListImmediate& RHICmdList) { - RHICmdList.EnqueueLambda([this, ColorScale, ColorOffset, bApplyToAllLayers](FRHICommandListImmediate& RHICmdList) { - ColorScaleInfo_RHIThread.ColorScale = ColorScale; - ColorScaleInfo_RHIThread.ColorOffset = ColorOffset; - ColorScaleInfo_RHIThread.bApplyColorScaleAndOffsetToAllLayers = bApplyToAllLayers; - }); - }); -#endif - } - -#ifdef WITH_OCULUS_BRANCH - static bool ShouldApplyColorScale(const XrCompositionLayerBaseHeader* Header) - { - switch (Header->type) - { - case XR_TYPE_COMPOSITION_LAYER_QUAD: - case XR_TYPE_COMPOSITION_LAYER_EQUIRECT_KHR: - case XR_TYPE_COMPOSITION_LAYER_EQUIRECT2_KHR: - case XR_TYPE_COMPOSITION_LAYER_CYLINDER_KHR: - return true; - break; - default: - break; - } - return false; - } - - void FLayerExtensionPlugin::UpdatePixelDensity(const XrCompositionLayerBaseHeader* LayerHeader) - { - check(LayerHeader != nullptr); - - if (LayerHeader->type == XR_TYPE_COMPOSITION_LAYER_PROJECTION && bPixelDensityAdaptive && bRecommendedResolutionExtensionAvailable) - { - IXRTrackingSystem* TrackingSystem = OculusXR::GetOpenXRTrackingSystem(); - if (TrackingSystem != nullptr) - { - XrRecommendedLayerResolutionMETA ResolutionRecommendation = {}; - ResolutionRecommendation.type = XR_TYPE_RECOMMENDED_LAYER_RESOLUTION_META; - ResolutionRecommendation.next = nullptr; - ResolutionRecommendation.isValid = false; - - XrRecommendedLayerResolutionGetInfoMETA ResolutionRecommendationGetInfo = {}; - ResolutionRecommendationGetInfo.type = XR_TYPE_RECOMMENDED_LAYER_RESOLUTION_GET_INFO_META; - ResolutionRecommendationGetInfo.next = nullptr; - ResolutionRecommendationGetInfo.layer = LayerHeader; - ResolutionRecommendationGetInfo.predictedDisplayTime = PredictedDisplayTime_RHIThread; - - ENSURE_XRCMD(xrGetRecommendedLayerResolutionMETA.GetValue()(Session, &ResolutionRecommendationGetInfo, &ResolutionRecommendation)); - - if (ResolutionRecommendation.isValid == XR_TRUE) - { - AsyncTask(ENamedThreads::GameThread, [this, ResolutionRecommendation] { - RecommendedImageHeight_GameThread = ResolutionRecommendation.recommendedImageDimensions.height; - }); - } - } - } - } - - void FLayerExtensionPlugin::UpdateCompositionLayers(XrSession InSession, TArray& Headers) - { - check(IsInRenderingThread() || IsInRHIThread()); - - if (ColorScaleInfo_RHIThread.bApplyColorScaleAndOffsetToAllLayers) - { - ColorScale_RHIThread.Reset(Headers.Num()); - } - - for (const XrCompositionLayerBaseHeader* Header : Headers) - { - if (Header->type == XR_TYPE_COMPOSITION_LAYER_PROJECTION) - { - UpdatePixelDensity(Header); - } - - if (ColorScaleInfo_RHIThread.bApplyColorScaleAndOffsetToAllLayers && ShouldApplyColorScale(Header)) - { - ColorScale_RHIThread.AddUninitialized(); - XrCompositionLayerColorScaleBiasKHR& ColorScaleBias = ColorScale_RHIThread.Last(); - ColorScaleBias = { XR_TYPE_COMPOSITION_LAYER_COLOR_SCALE_BIAS_KHR }; - ColorScaleBias.next = const_cast(Header->next); - ColorScaleBias.colorScale = ToXrColor4f(ColorScaleInfo_RHIThread.ColorScale); - ColorScaleBias.colorBias = ToXrColor4f(ColorScaleInfo_RHIThread.ColorOffset); - const_cast(Header)->next = &ColorScaleBias; - } - } - } -#endif - -} // namespace OculusXR diff --git a/Plugins/MetaXR/Source/OculusXRHMD/Private/OpenXR/OculusXRLayerExtensionPlugin.h b/Plugins/MetaXR/Source/OculusXRHMD/Private/OpenXR/OculusXRLayerExtensionPlugin.h deleted file mode 100644 index 0a4a31a..0000000 --- a/Plugins/MetaXR/Source/OculusXRHMD/Private/OpenXR/OculusXRLayerExtensionPlugin.h +++ /dev/null @@ -1,71 +0,0 @@ -// Copyright (c) Meta Platforms, Inc. and affiliates. - -#pragma once -#include "khronos/openxr/openxr.h" -#include "CoreMinimal.h" -#include "OculusXRHMDTypes.h" -#include "OculusXRHMD_Settings.h" -#include "OpenXR/IOculusXRExtensionPlugin.h" - -namespace OculusXR -{ - - class FLayerExtensionPlugin : public IOculusXRExtensionPlugin - { - public: - FLayerExtensionPlugin(); - // IOpenXRExtensionPlugin - virtual bool GetOptionalExtensions(TArray& OutExtensions) override; - const void* OnCreateInstance(class IOpenXRHMDModule* InModule, const void* InNext); - virtual const void* OnEndFrame(XrSession InSession, XrTime DisplayTime, const void* InNext) override; - virtual const void* OnEndProjectionLayer(XrSession InSession, int32 InLayerIndex, const void* InNext, XrCompositionLayerFlags& OutFlags); - virtual void PostCreateSession(XrSession InSession) override; - virtual void OnBeginRendering_GameThread(XrSession InSession) override; -#ifdef WITH_OCULUS_BRANCH - virtual float GetMaxPixelDensity() override; -#endif - -#ifdef WITH_OCULUS_BRANCH - // epic branch has member as const, not usable in this case - virtual void UpdateCompositionLayers(XrSession InSession, TArray& Headers) override; -#endif - void SetEnableLocalDimming(bool Enable); - void SetEyeBufferSharpenType(EOculusXREyeBufferSharpenType EyeBufferSharpenType); - void SetColorScaleAndOffset(FLinearColor ColorScale, FLinearColor ColorOffset, bool bApplyToAllLayers); - - private: - void UpdatePixelDensity(const XrCompositionLayerBaseHeader* LayerHeader); - - XrSession Session; - bool bExtLocalDimmingAvailable; - bool bExtCompositionLayerSettingsAvailable; - bool bRecommendedResolutionExtensionAvailable; - - XrLocalDimmingModeMETA LocalDimmingMode_RHIThread; - XrLocalDimmingFrameEndInfoMETA LocalDimmingExt_RHIThread; - XrCompositionLayerSettingsFlagsFB EyeSharpenLayerFlags_RHIThread; - XrCompositionLayerSettingsFB XrCompositionLayerSettingsExt; - - struct FColorScaleInfo - { - FColorScaleInfo() - : ColorScale{ 1.0f, 1.0f, 1.0f, 1.0f } - , ColorOffset{ 0.0f, 0.0f, 0.0f, 0.0f } - , bApplyColorScaleAndOffsetToAllLayers(false){}; - FLinearColor ColorScale; - FLinearColor ColorOffset; - bool bApplyColorScaleAndOffsetToAllLayers; - }; - - FColorScaleInfo ColorScaleInfo_RHIThread; - TArray ColorScale_RHIThread; - - TArray _HeadersStorage; - bool bPixelDensityAdaptive; - uint32_t RecommendedImageHeight_GameThread; - OculusXRHMD::FSettingsPtr Settings_GameThread; - XrTime PredictedDisplayTime_RHIThread; - float MaxPixelDensity_RenderThread; - }; - -} // namespace OculusXR diff --git a/Plugins/MetaXR/Source/OculusXRHMD/Private/OpenXR/OculusXRMultiPlayerStateExtensionPlugin.cpp b/Plugins/MetaXR/Source/OculusXRHMD/Private/OpenXR/OculusXRMultiPlayerStateExtensionPlugin.cpp deleted file mode 100644 index 010a07e..0000000 --- a/Plugins/MetaXR/Source/OculusXRHMD/Private/OpenXR/OculusXRMultiPlayerStateExtensionPlugin.cpp +++ /dev/null @@ -1,120 +0,0 @@ -// Copyright (c) Meta Platforms, Inc. and affiliates. - -#include "OculusXRMultiPlayerStateExtensionPlugin.h" -#include "OculusXRHMDRuntimeSettings.h" - -DEFINE_LOG_CATEGORY(LogOculusMultiPlayerStateExtensionPlugin); - -namespace OculusXR -{ - - FMultiPlayerStateExtensionPlugin::FMultiPlayerStateExtensionPlugin() - { -#ifdef WITH_OCULUS_BRANCH - ResetPose(); -#endif // WITH_OCULUS_BRANCH - } - - FMultiPlayerStateExtensionPlugin::~FMultiPlayerStateExtensionPlugin() - { - } - - void FMultiPlayerStateExtensionPlugin::SwitchPrimaryPIE(int PrimaryPIEIndex) - { - CurPlayerIndex = PrimaryPIEIndex; - } - - void FMultiPlayerStateExtensionPlugin::InitMultiPlayerPoses(const FTransform& CurPose) - { -#if WITH_EDITOR && PLATFORM_WINDOWS - if (!GIsEditor || MultiPlayerPoses.Num()) - { - return; - } - - if (!FApp::HasVRFocus()) - { - return; - } - - ULevelEditorPlaySettings* PlayInSettings = GetMutableDefault(); - check(PlayInSettings); - int PlayNumberOfClients; - PlayInSettings->GetPlayNumberOfClients(PlayNumberOfClients); - if (PlayNumberOfClients <= 1) - { - return; - } - - EPlayNetMode OutPlayNetMode; - PlayInSettings->GetPlayNetMode(OutPlayNetMode); - if (OutPlayNetMode != EPlayNetMode::PIE_Standalone) - { - // In case of non-standalone mode, server is the first player, client idx should start from 1 - PlayNumberOfClients++; - } - - LastFrameHMDHeadPose = CurPose; - MultiPlayerPoses.Empty(); - MultiPlayerPoses.InsertDefaulted(0, PlayNumberOfClients); - for (auto& PlayerPose : MultiPlayerPoses) - { - PlayerPose = CurPose; - } - UE_LOG(LogHMD, Log, TEXT("MultiPlayer poses are initialized.")); -#endif - } - -#ifdef WITH_OCULUS_BRANCH - void FMultiPlayerStateExtensionPlugin::ResetPose() - { -#if WITH_EDITOR && PLATFORM_WINDOWS - CurPlayerIndex = 0; - LastFrameHMDHeadPose = FTransform::Identity; - MultiPlayerPoses.Empty(); -#endif - } - - void FMultiPlayerStateExtensionPlugin::ReCalcPose(FTransform& CurHMDHeadPose) - { -#if WITH_EDITOR && PLATFORM_WINDOWS - if (!GIsEditor || GetMutableDefault()->MPPoseRestoreType == EOculusXRMPPoseRestoreType::Disabled) - { - return; - } - - if (!MultiPlayerPoses.Num()) - { - InitMultiPlayerPoses(CurHMDHeadPose); - } - - if (MultiPlayerPoses.Num() <= 1) - { - return; - } - - if (CurPlayerIndex >= MultiPlayerPoses.Num()) - { - UE_LOG(LogHMD, Error, TEXT("CurPlayerIndex %i is larger than MultiPlayerPoses.Num() !"), CurPlayerIndex, MultiPlayerPoses.Num()); - } - - FTransform& PlayerPose = MultiPlayerPoses[CurPlayerIndex]; - if (GetMutableDefault()->MPPoseRestoreType == EOculusXRMPPoseRestoreType::PositionOnly) - { - FVector DeltaPosition = CurHMDHeadPose.GetTranslation() - LastFrameHMDHeadPose.GetTranslation(); - PlayerPose.SetTranslation(PlayerPose.GetTranslation() + DeltaPosition); - LastFrameHMDHeadPose.SetTranslation(CurHMDHeadPose.GetTranslation()); - CurHMDHeadPose.SetTranslation(PlayerPose.GetTranslation()); - } - else - { - FTransform DeltaPose = LastFrameHMDHeadPose.Inverse() * CurHMDHeadPose; - PlayerPose = PlayerPose * DeltaPose; - LastFrameHMDHeadPose = CurHMDHeadPose; - CurHMDHeadPose = PlayerPose; - } -#endif - } -#endif // WITH_OCULUS_BRANCH - -} // namespace OculusXR diff --git a/Plugins/MetaXR/Source/OculusXRHMD/Private/OpenXR/OculusXRMultiPlayerStateExtensionPlugin.h b/Plugins/MetaXR/Source/OculusXRHMD/Private/OpenXR/OculusXRMultiPlayerStateExtensionPlugin.h deleted file mode 100644 index 7a0478d..0000000 --- a/Plugins/MetaXR/Source/OculusXRHMD/Private/OpenXR/OculusXRMultiPlayerStateExtensionPlugin.h +++ /dev/null @@ -1,31 +0,0 @@ -// Copyright (c) Meta Platforms, Inc. and affiliates. - -#pragma once - -#include "CoreMinimal.h" -#include "OpenXR/IOculusXRExtensionPlugin.h" - -DECLARE_LOG_CATEGORY_EXTERN(LogOculusMultiPlayerStateExtensionPlugin, Log, All); - -namespace OculusXR -{ - class FMultiPlayerStateExtensionPlugin : public IOculusXRExtensionPlugin - { - public: - FMultiPlayerStateExtensionPlugin(); - ~FMultiPlayerStateExtensionPlugin(); - - void SwitchPrimaryPIE(int PrimaryPIEIndex); -#ifdef WITH_OCULUS_BRANCH - virtual void ResetPose() override; - virtual void ReCalcPose(FTransform& CurHMDHeadPose) override; -#endif // WITH_OCULUS_BRANCH - private: - void InitMultiPlayerPoses(const FTransform& CurPose); - - int CurPlayerIndex; - FTransform LastFrameHMDHeadPose; - TArray MultiPlayerPoses; - }; - -} // namespace OculusXR diff --git a/Plugins/MetaXR/Source/OculusXRHMD/Private/OpenXR/OculusXROpenXRUtilities.cpp b/Plugins/MetaXR/Source/OculusXRHMD/Private/OpenXR/OculusXROpenXRUtilities.cpp deleted file mode 100644 index e17b2ee..0000000 --- a/Plugins/MetaXR/Source/OculusXRHMD/Private/OpenXR/OculusXROpenXRUtilities.cpp +++ /dev/null @@ -1,28 +0,0 @@ -// Copyright (c) Meta Platforms, Inc. and affiliates. - -#include "OculusXROpenXRUtilities.h" -#include "RHICommandList.h" -#include "RenderingThread.h" - -namespace OculusXR -{ - XrResult CheckXrResult(XrResult Result, const char* Cmd) - { - if (!XR_SUCCEEDED(Result)) - { - UE_LOG(LogHMD, Error, TEXT("%hs failed (%d)"), Cmd, Result); - } - return Result; - } - - IXRTrackingSystem* GetOpenXRTrackingSystem() - { - static FName SystemName(TEXT("OpenXR")); - if (GEngine && GEngine->XRSystem.IsValid() && (GEngine->XRSystem->GetSystemName() == SystemName)) - { - return GEngine->XRSystem.Get(); - } - return nullptr; - } - -} // namespace OculusXR diff --git a/Plugins/MetaXR/Source/OculusXRHMD/Private/OpenXR/OculusXROpenXRUtilities.h b/Plugins/MetaXR/Source/OculusXRHMD/Private/OpenXR/OculusXROpenXRUtilities.h deleted file mode 100644 index 101d7d0..0000000 --- a/Plugins/MetaXR/Source/OculusXRHMD/Private/OpenXR/OculusXROpenXRUtilities.h +++ /dev/null @@ -1,109 +0,0 @@ -// Copyright (c) Meta Platforms, Inc. and affiliates. - -#pragma once - -#include "khronos/openxr/openxr.h" -#include "RHI.h" -#include "HeadMountedDisplayTypes.h" -#include "OpenXRCore.h" -#include "IXRTrackingSystem.h" -#include "Engine/Engine.h" - -#define ENSURE_XRCMD(cmd) \ - XR_ENSURE(cmd) - -namespace OculusXR -{ - -#if defined(WITH_OCULUS_BRANCH) - template - static void XRGetInstanceProcAddr(XrInstance InInstance, const char* Name, T* Function) - { - if (XR_FAILED(OpenXRDynamicAPI::xrGetInstanceProcAddr(InInstance, Name, reinterpret_cast(Function)))) - { - UE_LOG(LogHMD, Fatal, TEXT("Failed to bind OpenXR entry %s."), ANSI_TO_TCHAR(Name)); - } - } - - template - static void XRGetInstanceProcAddr(XrInstance InInstance, const char* Name, TOptional* Function) - { - if (XR_FAILED(OpenXRDynamicAPI::xrGetInstanceProcAddr(InInstance, Name, reinterpret_cast(Function)))) - { - UE_LOG(LogHMD, Warning, TEXT("Unable to bind optional OpenXR entry %s."), ANSI_TO_TCHAR(Name)); - } - } - - static void XRAppendToChain(XrBaseOutStructure* ToAppend, XrBaseOutStructure* Chain) - { - while (Chain->next != XR_NULL_HANDLE) - { - if (Chain->next == ToAppend) - { - return; - } - Chain = Chain->next; - } - Chain->next = ToAppend; - } -#else - // Don't call xrGetInstanceProcAddr on marketplace build. This prevents the linker - // from adding a dependency on OpenXr. On the marketplace build OpenXR loading is - // currently disabled - template - static void XRGetInstanceProcAddr(XrInstance InInstance, const char* Name, T* Function) - { - (void)InInstance; - (void)Name; - (void)Function; - UE_LOG(LogHMD, Warning, TEXT("Failed to bind OpenXR entry %s."), ANSI_TO_TCHAR(Name)); - } - - template - static void XRGetInstanceProcAddr(XrInstance InInstance, const char* Name, TOptional* Function) - { - (void)InInstance; - (void)Name; - (void)Function; - UE_LOG(LogHMD, Warning, TEXT("Unable to bind optional OpenXR entry %s."), ANSI_TO_TCHAR(Name)); - } - - static void XRAppendToChain(XrBaseOutStructure* ToAppend, XrBaseOutStructure* Chain) - { - (void)ToAppend; - (void)Chain; - UE_LOG(LogHMD, Warning, TEXT("Unable to append structure to structure chain. Appending Type: %d -- Base chain Type: %d"), ToAppend->type, Chain->type); - } -#endif - - XrResult CheckXrResult(XrResult res, const char* cmd); - - static inline double FromXrDuration(const XrDuration duration) - { - return (duration * 1e-9); - } - - static inline XrDuration ToXrDuration(const double duration) - { - return (duration * 1e9); - } - - static inline double FromXrTime(const XrTime time) - { - return (time * 1e-9); - } - - static inline XrTime ToXrTime(const double time) - { - return (time * 1e9); - } - - static bool IsOpenXRSystem() - { - const FName SystemName(TEXT("OpenXR")); - return GEngine->XRSystem.IsValid() && (GEngine->XRSystem->GetSystemName() == SystemName); - } - - IXRTrackingSystem* GetOpenXRTrackingSystem(); - -} // namespace OculusXR diff --git a/Plugins/MetaXR/Source/OculusXRHMD/Private/OpenXR/OculusXRPerformanceExtensionPlugin.cpp b/Plugins/MetaXR/Source/OculusXRHMD/Private/OpenXR/OculusXRPerformanceExtensionPlugin.cpp deleted file mode 100644 index 33ffef7..0000000 --- a/Plugins/MetaXR/Source/OculusXRHMD/Private/OpenXR/OculusXRPerformanceExtensionPlugin.cpp +++ /dev/null @@ -1,244 +0,0 @@ -// Copyright (c) Meta Platforms, Inc. and affiliates. - -#include "OculusXRPerformanceExtensionPlugin.h" -#include "OculusXRXRFunctions.h" -#include "OculusXROpenXRUtilities.h" -#include "OculusXRHMDRuntimeSettings.h" -#include "OpenXRCore.h" - -DEFINE_LOG_CATEGORY(LogOculusPerformanceExtensionPlugin); - -namespace OculusXR -{ - - namespace // anonymous - { - XrPerfSettingsLevelEXT ToXrPerfSettingsLevel(EOculusXRProcessorPerformanceLevel PerformanceLevel) - { - switch (PerformanceLevel) - { - case EOculusXRProcessorPerformanceLevel::PowerSavings: - return XR_PERF_SETTINGS_LEVEL_POWER_SAVINGS_EXT; - case EOculusXRProcessorPerformanceLevel::SustainedLow: - return XR_PERF_SETTINGS_LEVEL_SUSTAINED_LOW_EXT; - case EOculusXRProcessorPerformanceLevel::SustainedHigh: - return XR_PERF_SETTINGS_LEVEL_SUSTAINED_HIGH_EXT; - case EOculusXRProcessorPerformanceLevel::Boost: - return XR_PERF_SETTINGS_LEVEL_BOOST_EXT; - default: - check(false); - } - return XR_PERF_SETTINGS_LEVEL_POWER_SAVINGS_EXT; - } - - static constexpr int MaxCPUCores = CPUCoreLast - CPUCoreStart; - - } // namespace - - FPerformanceExtensionPlugin::FPerformanceExtensionPlugin() - : Instance(XR_NULL_HANDLE) - , bPerfSettingsInitialized(false) - , bPerfLevelsChanged(false) - , CpuPerfLevel(EOculusXRProcessorPerformanceLevel::PowerSavings) - , GpuPerfLevel(EOculusXRProcessorPerformanceLevel::PowerSavings) - , MetricsUpdateMask(0) - , PathPerformanceMetricsMap{} - , PerformanceMetrics{} - , PerformanceMetricsMask(0) - { - PerformanceMetrics.CpuCoreUtil.Init(0, MaxCPUCores); - } - - bool FPerformanceExtensionPlugin::GetRequiredExtensions(TArray& OutExtensions) - { - return true; - } - - bool FPerformanceExtensionPlugin::GetOptionalExtensions(TArray& OutExtensions) - { - OutExtensions.Add(XR_EXT_PERFORMANCE_SETTINGS_EXTENSION_NAME); - OutExtensions.Add(XR_META_PERFORMANCE_METRICS_EXTENSION_NAME); - return true; - } - - void FPerformanceExtensionPlugin::PostCreateSession(XrSession InSession) - { - const UOculusXRHMDRuntimeSettings* HMDSettings = GetDefault(); - LoadFromSettings(); - InitializePerformanceMetrics(InSession); - } - - void* FPerformanceExtensionPlugin::OnWaitFrame(XrSession InSession, void* InNext) - { - UpdatePerformanceLevels(InSession); - UpdatePerformanceMetrics(InSession); - return InNext; - } - - void FPerformanceExtensionPlugin::PostCreateInstance(XrInstance InInstance) - { - Instance = InInstance; - } - - void FPerformanceExtensionPlugin::UpdatePerformanceLevels(XrSession InSession) - { - if (bPerfLevelsChanged && xrPerfSettingsSetPerformanceLevelEXT.IsSet() && xrPerfSettingsSetPerformanceLevelEXT.GetValue() != nullptr) - { - UE_LOG(LogOculusPerformanceExtensionPlugin, Log, TEXT("Oculus OpenXR SetPerformanceLevel CPU=%d, GPU=%d"), CpuPerfLevel, GpuPerfLevel); - ENSURE_XRCMD(xrPerfSettingsSetPerformanceLevelEXT.GetValue()(InSession, XR_PERF_SETTINGS_DOMAIN_CPU_EXT, ToXrPerfSettingsLevel(CpuPerfLevel))); - ENSURE_XRCMD(xrPerfSettingsSetPerformanceLevelEXT.GetValue()(InSession, XR_PERF_SETTINGS_DOMAIN_GPU_EXT, ToXrPerfSettingsLevel(GpuPerfLevel))); - bPerfLevelsChanged = false; - } - } - - void FPerformanceExtensionPlugin::GetSuggestedCpuAndGpuPerformanceLevels(EOculusXRProcessorPerformanceLevel& CpuLevel, EOculusXRProcessorPerformanceLevel& GpuLevel) - { - if (!bPerfSettingsInitialized) - { - LoadFromSettings(); - } - CpuLevel = CpuPerfLevel; - GpuLevel = GpuPerfLevel; - } - - void FPerformanceExtensionPlugin::SetSuggestedCpuAndGpuPerformanceLevels(EOculusXRProcessorPerformanceLevel CpuLevel, EOculusXRProcessorPerformanceLevel GpuLevel) - { - if (CpuPerfLevel != CpuLevel || GpuPerfLevel != GpuLevel) - { - CpuPerfLevel = CpuLevel; - GpuPerfLevel = GpuLevel; - bPerfLevelsChanged = true; - } - bPerfSettingsInitialized = true; - } - - void FPerformanceExtensionPlugin::LoadFromSettings() - { - const UOculusXRHMDRuntimeSettings* HMDSettings = GetDefault(); - SetSuggestedCpuAndGpuPerformanceLevels(HMDSettings->SuggestedCpuPerfLevel, HMDSettings->SuggestedGpuPerfLevel); - } - - void FPerformanceExtensionPlugin::InitializePerformanceMetrics(XrSession InSession) - { - if (xrEnumeratePerformanceMetricsCounterPathsMETA.GetValue() == 0 || xrSetPerformanceMetricsStateMETA.GetValue() == 0 || xrQueryPerformanceMetricsCounterMETA.GetValue() == 0) - { - return; - } - - TArray PerfMetricsCounterPaths; - uint32 NumPerfMetricsCounterPaths = 0; - XrPerformanceMetricsStateMETA MetricsState = { XR_TYPE_PERFORMANCE_METRICS_STATE_META }; - MetricsState.enabled = XR_TRUE; - ENSURE_XRCMD(xrSetPerformanceMetricsStateMETA.GetValue()(InSession, &MetricsState)); - ENSURE_XRCMD(xrEnumeratePerformanceMetricsCounterPathsMETA.GetValue()(Instance, 0, &NumPerfMetricsCounterPaths, nullptr)); - PerfMetricsCounterPaths.SetNum(NumPerfMetricsCounterPaths); - ENSURE_XRCMD(xrEnumeratePerformanceMetricsCounterPathsMETA.GetValue()(Instance, NumPerfMetricsCounterPaths, &NumPerfMetricsCounterPaths, PerfMetricsCounterPaths.GetData())); - - TSet PerfMetricsCounterPathHash; - - for (auto& Path : PerfMetricsCounterPaths) - { - PerfMetricsCounterPathHash.Emplace(Path); - } - - auto AddMetrics = [&](FString Name, EPerformanceMetricsType Metric) { - const FOpenXRPath MetricsPath(Name); - if (PerfMetricsCounterPathHash.Contains(MetricsPath)) - { - PathPerformanceMetricsMap.Add(MetricsPath, Metric); - PerformanceMetricsMask |= static_cast(1) << Metric; - UE_LOG(LogOculusPerformanceExtensionPlugin, Log, TEXT("Supported Performance Metrics: %s"), *Name); - } - }; - - AddMetrics(TEXT("/perfmetrics_meta/app/cpu_frametime"), AppCPUTimeFloat); - AddMetrics(TEXT("/perfmetrics_meta/app/gpu_frametime"), AppGPUTimeFloat); - AddMetrics(TEXT("/perfmetrics_meta/compositor/cpu_frametime"), CompositorCPUTimeFloat); - AddMetrics(TEXT("/perfmetrics_meta/compositor/gpu_frametime"), CompositorGPUTimeFloat); - AddMetrics(TEXT("/perfmetrics_meta/compositor/dropped_frame_count"), CompositorDroppedFramesInt); - AddMetrics(TEXT("/perfmetrics_meta/compositor/spacewarp_mode"), CompositorSpaceWarpModeInt); - AddMetrics(TEXT("/perfmetrics_meta/device/gpu_utilization"), GPUUtilizationFloat); - AddMetrics(TEXT("/perfmetrics_meta/device/cpu_utilization_average"), GPUUtilizationAverageFloat); - AddMetrics(TEXT("/perfmetrics_meta/device/cpu_utilization_worst"), GPUUtilizationWorstFloat); - - for (uint32 CPUId = 0; CPUId < MaxCPUCores; ++CPUId) - { - const FString PerCpuCounterPathString = FString::Printf(TEXT("/perfmetrics_meta/device/cpu%d_utilization"), CPUId); - AddMetrics(PerCpuCounterPathString, - static_cast(CPUCore0UtilizationFloat + CPUId)); - } - } - - bool FPerformanceExtensionPlugin::IsPerformanceMetricsSupported(EPerformanceMetricsType Metric) const - { - const uint64_t Val = static_cast(1) << Metric; - return ((PerformanceMetricsMask & Val) != 0); - } - - void FPerformanceExtensionPlugin::UpdatePerformanceMetrics(XrSession InSession) - { - if ((xrQueryPerformanceMetricsCounterMETA.GetValue() == 0) || (PerformanceMetricsMask == 0)) - { - return; - } - - for (auto& Pair : PathPerformanceMetricsMap) - { - const XrPath Path = Pair.Key; - const EPerformanceMetricsType Metric = Pair.Value; - XrPerformanceMetricsCounterMETA Counter = { XR_TYPE_PERFORMANCE_METRICS_COUNTER_META }; - ENSURE_XRCMD(xrQueryPerformanceMetricsCounterMETA.GetValue()(InSession, Path, &Counter)); - - switch (Metric) - { - case AppCPUTimeFloat: - PerformanceMetrics.AppCpuTime = Counter.floatValue; - break; - case AppGPUTimeFloat: - PerformanceMetrics.AppGpuTime = Counter.floatValue; - break; - case CompositorCPUTimeFloat: - PerformanceMetrics.ComCpuTime = Counter.floatValue; - break; - case CompositorGPUTimeFloat: - PerformanceMetrics.ComGpuTime = Counter.floatValue; - break; - case CompositorDroppedFramesInt: - PerformanceMetrics.DroppedFrames = Counter.uintValue; - break; - case CompositorSpaceWarpModeInt: - PerformanceMetrics.ComSpaceWarpMode = Counter.uintValue; - break; - case GPUUtilizationFloat: - PerformanceMetrics.GpuUtil = Counter.floatValue; - break; - case GPUUtilizationAverageFloat: - PerformanceMetrics.CpuUtilAvg = Counter.floatValue; - break; - case GPUUtilizationWorstFloat: - PerformanceMetrics.CpuUtilWorst = Counter.floatValue; - break; - default: - { - if (Metric >= CPUCore0UtilizationFloat && Metric < CPUCore0UtilizationFloat + MaxCPUCores) - { - const int32 CpuCoreIdx = Metric - CPUCore0UtilizationFloat; - check(CpuCoreIdx < PerformanceMetrics.CpuCoreUtil.Num()); - PerformanceMetrics.CpuCoreUtil[CpuCoreIdx] = Counter.floatValue / 100.0f; - } - else - { - UE_LOG(LogOculusPerformanceExtensionPlugin, Log, TEXT("Unsupported Metric: %d"), static_cast(Metric)); - } - } - break; - } - } - } - - const FOculusXRPerformanceMetrics& FPerformanceExtensionPlugin::GetPerformanceMetrics() const - { - return PerformanceMetrics; - } - -} // namespace OculusXR diff --git a/Plugins/MetaXR/Source/OculusXRHMD/Private/OpenXR/OculusXRPerformanceExtensionPlugin.h b/Plugins/MetaXR/Source/OculusXRHMD/Private/OpenXR/OculusXRPerformanceExtensionPlugin.h deleted file mode 100644 index 9f9aec5..0000000 --- a/Plugins/MetaXR/Source/OculusXRHMD/Private/OpenXR/OculusXRPerformanceExtensionPlugin.h +++ /dev/null @@ -1,70 +0,0 @@ -// Copyright (c) Meta Platforms, Inc. and affiliates. - -#pragma once -#include "CoreMinimal.h" -#include "OculusXRHMDTypes.h" -#include "OpenXR/IOculusXRExtensionPlugin.h" - -DECLARE_LOG_CATEGORY_EXTERN(LogOculusPerformanceExtensionPlugin, Log, All); - -namespace OculusXR -{ - enum EPerformanceMetricsType - { - AppCPUTimeFloat, - AppGPUTimeFloat, - CompositorCPUTimeFloat, - CompositorGPUTimeFloat, - CompositorDroppedFramesInt, - CompositorSpaceWarpModeInt, - GPUUtilizationFloat, - GPUUtilizationAverageFloat, - GPUUtilizationWorstFloat, - CPUCoreStart, - CPUCore0UtilizationFloat, - CPUCore1UtilizationFloat, - CPUCore2UtilizationFloat, - CPUCore3UtilizationFloat, - CPUCore4UtilizationFloat, - CPUCore5UtilizationFloat, - CPUCore6UtilizationFloat, - CPUCore7UtilizationFloat, - CPUCoreLast = CPUCore7UtilizationFloat, - }; - - class FPerformanceExtensionPlugin : public IOculusXRExtensionPlugin - { - private: - XrInstance Instance; - bool bPerfSettingsInitialized; - bool bPerfLevelsChanged; - EOculusXRProcessorPerformanceLevel CpuPerfLevel; - EOculusXRProcessorPerformanceLevel GpuPerfLevel; - uint64_t MetricsUpdateMask; - - TMap PathPerformanceMetricsMap; - FOculusXRPerformanceMetrics PerformanceMetrics; - uint64 PerformanceMetricsMask; - - public: - FPerformanceExtensionPlugin(); - - // IOpenXRExtensionPlugin - virtual bool GetRequiredExtensions(TArray& OutExtensions) override; - virtual bool GetOptionalExtensions(TArray& OutExtensions) override; - virtual void PostCreateSession(XrSession InSession) override; - virtual void PostCreateInstance(XrInstance InInstance) override; - virtual void* OnWaitFrame(XrSession InSession, void* InNext) override; - - void UpdatePerformanceLevels(XrSession InSession); - void GetSuggestedCpuAndGpuPerformanceLevels(EOculusXRProcessorPerformanceLevel& CpuPerfLevel, EOculusXRProcessorPerformanceLevel& GpuPerfLevel); - void SetSuggestedCpuAndGpuPerformanceLevels(EOculusXRProcessorPerformanceLevel CpuPerfLevel, EOculusXRProcessorPerformanceLevel GpuPerfLevel); - void LoadFromSettings(); - - void InitializePerformanceMetrics(XrSession InSession); - bool IsPerformanceMetricsSupported(EPerformanceMetricsType Metric) const; - void UpdatePerformanceMetrics(XrSession InSession); - const FOculusXRPerformanceMetrics& GetPerformanceMetrics() const; - }; - -} // namespace OculusXR diff --git a/Plugins/MetaXR/Source/OculusXRHMD/Private/OpenXR/OculusXRSimulatorExtensionPlugin.cpp b/Plugins/MetaXR/Source/OculusXRHMD/Private/OpenXR/OculusXRSimulatorExtensionPlugin.cpp deleted file mode 100644 index b827f18..0000000 --- a/Plugins/MetaXR/Source/OculusXRHMD/Private/OpenXR/OculusXRSimulatorExtensionPlugin.cpp +++ /dev/null @@ -1,19 +0,0 @@ -// Copyright (c) Meta Platforms, Inc. and affiliates. - -#include "OculusXRSimulatorExtensionPlugin.h" - -#include "OculusXRSimulator.h" - -DEFINE_LOG_CATEGORY(LogOculusXRSimulatorPlugin); - -namespace OculusXR -{ - bool FXRSimulatorExtensionPlugin::GetCustomLoader(PFN_xrGetInstanceProcAddr* OutGetProcAddr) - { -#if PLATFORM_WINDOWS - FMetaXRSimulator::TryActivateOnStartup(); -#endif // PLATFORM_WINDOWS - return false; - } - -} // namespace OculusXR diff --git a/Plugins/MetaXR/Source/OculusXRHMD/Private/OpenXR/OculusXRSimulatorExtensionPlugin.h b/Plugins/MetaXR/Source/OculusXRHMD/Private/OpenXR/OculusXRSimulatorExtensionPlugin.h deleted file mode 100644 index b749ec5..0000000 --- a/Plugins/MetaXR/Source/OculusXRHMD/Private/OpenXR/OculusXRSimulatorExtensionPlugin.h +++ /dev/null @@ -1,18 +0,0 @@ -// Copyright (c) Meta Platforms, Inc. and affiliates. - -#pragma once -#include "OpenXR/IOculusXRExtensionPlugin.h" - -DECLARE_LOG_CATEGORY_EXTERN(LogOculusXRSimulatorPlugin, Log, All); - -namespace OculusXR -{ - - class FXRSimulatorExtensionPlugin : public IOculusXRExtensionPlugin - { - public: - // IOpenXRExtensionPlugin - virtual bool GetCustomLoader(PFN_xrGetInstanceProcAddr* OutGetProcAddr) override; - }; - -} // namespace OculusXR diff --git a/Plugins/MetaXR/Source/OculusXRHMD/Private/OpenXR/OculusXRSpaceWarp.cpp b/Plugins/MetaXR/Source/OculusXRHMD/Private/OpenXR/OculusXRSpaceWarp.cpp deleted file mode 100644 index 4d5dce1..0000000 --- a/Plugins/MetaXR/Source/OculusXRHMD/Private/OpenXR/OculusXRSpaceWarp.cpp +++ /dev/null @@ -1,386 +0,0 @@ -// Copyright (c) Meta Platforms, Inc. and affiliates. - -#include "OculusXRSpaceWarp.h" -#include "IOpenXRHMD.h" -#include "IOpenXRHMDModule.h" -#include "IXRTrackingSystem.h" -#include "OculusXROpenXRUtilities.h" -#include "OpenXRCore.h" -#include "OpenXRHMD_Swapchain.h" -#include "StereoRenderUtils.h" - -#if defined(WITH_OCULUS_BRANCH) - -DEFINE_LOG_CATEGORY(LogOculusSpaceWarpExtensionPlugin); - -static const int64 VELOCITY_SWAPCHAIN_WAIT_TIMEOUT = 100000000ll; // 100ms in nanoseconds. - -namespace OculusXR -{ - FSpaceWarpExtensionPlugin::FSpaceWarpExtensionPlugin() - { - } - - bool FSpaceWarpExtensionPlugin::GetRequiredExtensions(TArray& OutExtensions) - { - UE_LOG(LogOculusSpaceWarpExtensionPlugin, Warning, TEXT("FSpaceWarpExtensionPlugin::GetRequiredExtensions")); - - static const auto CVarSupportMobileSpaceWarp = IConsoleManager::Get().FindTConsoleVariableDataInt(TEXT("vr.SupportMobileSpaceWarp")); - if (CVarSupportMobileSpaceWarp && (CVarSupportMobileSpaceWarp->GetValueOnAnyThread() != 0)) - { - OutExtensions.Add(XR_FB_SPACE_WARP_EXTENSION_NAME); - } - - return true; - } - - void* FSpaceWarpExtensionPlugin::OnEnumerateViewConfigurationViews(XrInstance InInstance, XrSystemId InSystem, XrViewConfigurationType InViewConfigurationType, uint32_t InViewIndex, void* InNext) - { - SelectedViewConfigurationType = InViewConfigurationType; - return InNext; - } - - const void* FSpaceWarpExtensionPlugin::OnCreateInstance(IOpenXRHMDModule* InModule, const void* InNext) - { - static const auto CVarSupportMobileSpaceWarp = IConsoleManager::Get().FindTConsoleVariableDataInt(TEXT("vr.SupportMobileSpaceWarp")); - if (InModule && CVarSupportMobileSpaceWarp && (CVarSupportMobileSpaceWarp->GetValueOnAnyThread() != 0)) - { - bSpaceWarpExtensionEnabled = InModule->IsExtensionEnabled(XR_FB_SPACE_WARP_EXTENSION_NAME); - } - - return InNext; - } - - void FSpaceWarpExtensionPlugin::PostCreateInstance(XrInstance InInstance) - { - if (!bSpaceWarpExtensionEnabled) - { - return; - } - - XrInstanceProperties InstanceProperties = { XR_TYPE_INSTANCE_PROPERTIES, nullptr }; - XR_ENSURE(xrGetInstanceProperties(InInstance, &InstanceProperties)); - InstanceProperties.runtimeName[XR_MAX_RUNTIME_NAME_SIZE - 1] = 0; // Ensure the name is null terminated. - } - - void FSpaceWarpExtensionPlugin::PostCreateSession(XrSession InSession) - { - if (!bSpaceWarpExtensionEnabled) - { - return; - } - - XrSystemProperties SystemProperties; - SystemProperties = XrSystemProperties{ XR_TYPE_SYSTEM_PROPERTIES, &SpaceWarpSystemProperties }; - XR_ENSURE(xrGetSystemProperties(IOpenXRHMDModule::Get().GetInstance(), IOpenXRHMDModule::Get().GetSystemId(), &SystemProperties)); - - SpaceWarpViewExtension = FSceneViewExtensions::NewExtension(this); - - UE::StereoRenderUtils::FStereoShaderAspects Aspects(GMaxRHIShaderPlatform); - bIsMobileMultiViewEnabled = Aspects.IsMobileMultiViewEnabled(); - } - - void FSpaceWarpExtensionPlugin::OnBeginRendering_RenderThread(XrSession InSession) - { - check(IsInRenderingThread()); - - if (!PipelinedVelocityState_RenderThread.bEnabled) - { - return; - } - - SCOPED_NAMED_EVENT(FSpaceWarpExtensionPlugin_OnBeginRendering_RenderThread, FColor::Red); - - const FXRSwapChainPtr& VelocitySwapchain = PipelinedVelocityState_RenderThread.VelocitySwapchain; - const FXRSwapChainPtr& VelocityDepthSwapchain = PipelinedVelocityState_RenderThread.VelocityDepthSwapchain; - if (VelocitySwapchain) - { - VelocitySwapchain->IncrementSwapChainIndex_RHIThread(); - if (VelocityDepthSwapchain) - { - VelocityDepthSwapchain->IncrementSwapChainIndex_RHIThread(); - } - } - } - - const void* FSpaceWarpExtensionPlugin::OnBeginProjectionView(XrSession InSession, int32 InLayerIndex, int32 InViewIndex, const void* InNext) - { - check(IsInRenderingThread()); - - IXRTrackingSystem* XRTrackingSystem = GetOpenXRTrackingSystem(); - if (!XRTrackingSystem || !PipelinedVelocityState_RenderThread.bEnabled) - { - return InNext; - } - - SCOPED_NAMED_EVENT(FSpaceWarpExtensionPlugin_OnBeginProjectionView, FColor::Red); - - TSharedPtr SpaceWarpLayerInfo = MakeShared(); - - FTransform TrackingToWorld = XRTrackingSystem->GetTrackingToWorldTransform(); - FTransform TrackingSpaceDeltaPose = TrackingToWorld * LastTrackingToWorld.Inverse(); - LastTrackingToWorld = TrackingToWorld; - FTransform BaseTransform = FTransform(XRTrackingSystem->GetBaseOrientation(), XRTrackingSystem->GetBasePosition()); - TrackingSpaceDeltaPose = BaseTransform.Inverse() * TrackingSpaceDeltaPose * BaseTransform; - - SpaceWarpLayerInfo->type = XR_TYPE_COMPOSITION_LAYER_SPACE_WARP_INFO_FB; - SpaceWarpLayerInfo->next = InNext; - SpaceWarpLayerInfo->layerFlags = 0; - SpaceWarpLayerInfo->appSpaceDeltaPose = ToXrPose(TrackingSpaceDeltaPose); - SpaceWarpLayerInfo->farZ = GNearClippingPlane / 100.f; - SpaceWarpLayerInfo->nearZ = INFINITY; - SpaceWarpLayerInfo->minDepth = 0.0f; - SpaceWarpLayerInfo->maxDepth = 1.0f; - - FIntPoint TextureSize; - if (GetRecommendedVelocityTextureSize_RenderThread(TextureSize) && PipelinedVelocityState_RenderThread.VelocitySwapchain.IsValid()) - { - FIntPoint TextureOffset(0, 0); - FIntRect ImageRect(TextureOffset, TextureOffset + TextureSize); - - TSharedPtr VelocityImage = MakeShared(); - VelocityImage->swapchain = static_cast(PipelinedVelocityState_RenderThread.VelocitySwapchain.Get())->GetHandle(); - VelocityImage->imageArrayIndex = (bIsMobileMultiViewEnabled && InViewIndex < 2) ? InViewIndex : 0; - VelocityImage->imageRect = ToXrRect(ImageRect); - SpaceWarpLayerInfo->motionVectorSubImage = *VelocityImage; - - TSharedPtr VelocityDepthImage = nullptr; - if (PipelinedVelocityState_RenderThread.VelocityDepthSwapchain.IsValid()) - { - VelocityDepthImage = MakeShared(); - VelocityDepthImage->swapchain = static_cast(PipelinedVelocityState_RenderThread.VelocityDepthSwapchain.Get())->GetHandle(); - VelocityDepthImage->imageArrayIndex = (bIsMobileMultiViewEnabled && InViewIndex < 2) ? InViewIndex : 0; - VelocityDepthImage->imageRect = ToXrRect(ImageRect); - SpaceWarpLayerInfo->depthSubImage = *VelocityDepthImage; - } - - // The SpaceWarpInfo that we return from here gets used when the layer is submitted on xrEndFrame on the RHI Thread, - // so we need to keep the XrSwapchainSubImage objects on the RHI Thread until PostEndFrame_RHIThread() - GetImmediateCommandList_ForRenderCommand().EnqueueLambda([this, SpaceWarpLayerInfo, VelocityImage, VelocityDepthImage, InViewIndex](FRHICommandList& RHICmdList) { - if (SpaceWarpLayerInfo_RHIThread.IsValidIndex(InViewIndex)) - { - SpaceWarpLayerInfo_RHIThread[InViewIndex] = SpaceWarpLayerInfo; - } - - if (VelocityImages_RHIThread.IsValidIndex(InViewIndex) && VelocityImage.IsValid()) - { - VelocityImages_RHIThread[InViewIndex] = VelocityImage; - } - - if (VelocityDepthImages_RHIThread.IsValidIndex(InViewIndex) && VelocityDepthImage.IsValid()) - { - VelocityDepthImages_RHIThread[InViewIndex] = VelocityDepthImage; - } - }); - - return SpaceWarpLayerInfo.Get(); - } - return InNext; - } - - void FSpaceWarpExtensionPlugin::PostBeginFrame_RHIThread(XrTime PredictedDisplayTime) - { - check(IsRunningRHIInSeparateThread() ? IsInRHIThread() : IsInRenderingThread()); - - if (!PipelinedVelocityState_RHIThread.bEnabled) - { - return; - } - - SCOPED_NAMED_EVENT(FSpaceWarpExtensionPlugin_PostBeginFrame_RHIThread, FColor::Red); - - // We need a new swapchain image unless we've already acquired one for rendering - if (PipelinedVelocityState_RHIThread.VelocitySwapchain.IsValid()) - { - PipelinedVelocityState_RHIThread.VelocitySwapchain->WaitCurrentImage_RHIThread(VELOCITY_SWAPCHAIN_WAIT_TIMEOUT); - if (PipelinedVelocityState_RHIThread.VelocityDepthSwapchain.IsValid()) - { - PipelinedVelocityState_RHIThread.VelocityDepthSwapchain->WaitCurrentImage_RHIThread(VELOCITY_SWAPCHAIN_WAIT_TIMEOUT); - } - } - } - - const void* FSpaceWarpExtensionPlugin::OnEndFrame(XrSession InSession, XrTime DisplayTime, const void* InNext) - { - check(IsRunningRHIInSeparateThread() ? IsInRHIThread() : IsInRenderingThread()); - - if (!PipelinedVelocityState_RHIThread.bEnabled) - { - return InNext; - } - - SCOPED_NAMED_EVENT(FSpaceWarpExtensionPlugin_OnEndFrame, FColor::Red); - - if (PipelinedVelocityState_RHIThread.VelocitySwapchain.IsValid()) - { - PipelinedVelocityState_RHIThread.VelocitySwapchain->ReleaseCurrentImage_RHIThread(nullptr); - if (PipelinedVelocityState_RHIThread.VelocityDepthSwapchain.IsValid()) - { - PipelinedVelocityState_RHIThread.VelocityDepthSwapchain->ReleaseCurrentImage_RHIThread(nullptr); - } - } - - return InNext; - } - - void FSpaceWarpExtensionPlugin::PostEndFrame_RHIThread() - { - SpaceWarpLayerInfo_RHIThread.Reset(); - VelocityImages_RHIThread.Reset(); - VelocityDepthImages_RHIThread.Reset(); - } - - void FSpaceWarpExtensionPlugin::AllocateRenderTargetTextures_RenderThread() - { - check(IsInRenderingThread()); - - if (!bSpaceWarpExtensionEnabled) - { - return; - } - - SCOPED_NAMED_EVENT(FSpaceWarpExtensionPlugin_AllocateRenderTargetTextures_RenderThread, FColor::Red); - - FIntPoint VelocitySize; - if (GetRecommendedVelocityTextureSize_RenderThread(VelocitySize)) - { - IOpenXRHMD* OpenXRHMD = nullptr; - if (GEngine && GEngine->XRSystem.IsValid()) - { - OpenXRHMD = GEngine->XRSystem.Get()->GetIOpenXRHMD(); - if (OpenXRHMD) - { - uint8 UnusedActualFormat = 0; - const FOpenXRSwapchainProperties VelocitySwapchainProperties = { - TEXT("VelocitySwapchain"), - PF_FloatRGBA, - static_cast(VelocitySize.X), - static_cast(VelocitySize.Y), - static_cast(bIsMobileMultiViewEnabled ? 2 : 1), - 1, - 1, - // BEGIN META SECTION - Add XR Cubemap Support - (bIsMobileMultiViewEnabled) ? ETextureDimension::Texture2DArray : ETextureDimension::Texture2D, - // END META SECTION - Add XR Cubemap Support - TexCreate_RenderTargetable | TexCreate_ResolveTargetable | TexCreate_ShaderResource | TexCreate_InputAttachmentRead | TexCreate_Dynamic, - FClearValueBinding::Transparent, - TexCreate_None - }; - - OpenXRHMD->AllocateSwapchainTextures_RenderThread( - VelocitySwapchainProperties, - PipelinedVelocityState_RenderThread.VelocitySwapchain, - UnusedActualFormat); - - const FOpenXRSwapchainProperties VelocityDepthSwapchainProperties = { - TEXT("VelocityDepthSwapchain"), - PF_DepthStencil, - static_cast(VelocitySize.X), - static_cast(VelocitySize.Y), - static_cast(bIsMobileMultiViewEnabled ? 2 : 1), - 1, - 1, - // BEGIN META SECTION - Add XR Cubemap Support - (bIsMobileMultiViewEnabled) ? ETextureDimension::Texture2DArray : ETextureDimension::Texture2D, - // END META SECTION - Add XR Cubemap Support - TexCreate_DepthStencilTargetable | TexCreate_ShaderResource | TexCreate_InputAttachmentRead | TexCreate_Dynamic, - FClearValueBinding::DepthZero, - TexCreate_None - }; - OpenXRHMD->AllocateSwapchainTextures_RenderThread( - VelocityDepthSwapchainProperties, - PipelinedVelocityState_RenderThread.VelocityDepthSwapchain, - UnusedActualFormat); - } - } - } - } - - bool FSpaceWarpExtensionPlugin::GetRecommendedVelocityTextureSize_RenderThread(FIntPoint& OutTextureSize) - { - check(IsInRenderingThread()); - - if (!bSpaceWarpExtensionEnabled) - { - return false; - } - - OutTextureSize = FIntPoint(SpaceWarpSystemProperties.recommendedMotionVectorImageRectWidth, SpaceWarpSystemProperties.recommendedMotionVectorImageRectHeight); - - return true; - } - - FXRSwapChainPtr FSpaceWarpExtensionPlugin::GetVelocitySwapchain_RenderThread() - { - check(IsInRenderingThread()); - - if (!PipelinedVelocityState_RenderThread.bEnabled) - { - return nullptr; - } - - return PipelinedVelocityState_RenderThread.VelocitySwapchain; - } - - FXRSwapChainPtr FSpaceWarpExtensionPlugin::GetVelocityDepthSwapchain_RenderThread() - { - check(IsInRenderingThread()); - - if (!PipelinedVelocityState_RenderThread.bEnabled) - { - return nullptr; - } - - return PipelinedVelocityState_RenderThread.VelocityDepthSwapchain; - } - - bool FSpaceWarpExtensionPlugin::IsSpaceWarpEnabled() const - { - if (bSpaceWarpExtensionEnabled) - { - static const auto CVarOculusEnableSpaceWarp = IConsoleManager::Get().FindTConsoleVariableDataInt(TEXT("r.Mobile.Oculus.SpaceWarp.Enable")); - return CVarOculusEnableSpaceWarp && (CVarOculusEnableSpaceWarp->GetValueOnAnyThread() != 0); - } - return false; - } - - FSpaceWarpExtensionPlugin::FSpaceWarpViewExtension::FSpaceWarpViewExtension(const FAutoRegister& AutoRegister, FSpaceWarpExtensionPlugin* InPlugin) - : FHMDSceneViewExtension(AutoRegister) - , SpaceWarpExtensionPlugin(InPlugin) - { - check(SpaceWarpExtensionPlugin); - } - - void FSpaceWarpExtensionPlugin::FSpaceWarpViewExtension::SetupViewFamily(FSceneViewFamily& InViewFamily) - { - check(IsInGameThread()) - InViewFamily.bRenderStereoVelocity = SpaceWarpExtensionPlugin->IsSpaceWarpEnabled(); - } - - void FSpaceWarpExtensionPlugin::FSpaceWarpViewExtension::SetupView(FSceneViewFamily& InViewFamily, FSceneView& InView) - { - } - - void FSpaceWarpExtensionPlugin::FSpaceWarpViewExtension::BeginRenderViewFamily(FSceneViewFamily& InViewFamily) - { - bool bEnabled = SpaceWarpExtensionPlugin->IsSpaceWarpEnabled(); - - ENQUEUE_RENDER_COMMAND(FSpaceWarpViewExtension_BeginRenderViewFamily) - ([this, bEnabled](FRHICommandList& RHICmdList) { - SpaceWarpExtensionPlugin->PipelinedVelocityState_RenderThread.bEnabled = bEnabled; - - FPipelinedVelocityState VelocityState = SpaceWarpExtensionPlugin->PipelinedVelocityState_RenderThread; - RHICmdList.EnqueueLambda([this, VelocityState, bEnabled](FRHICommandList& RHICmdList) { - SpaceWarpExtensionPlugin->PipelinedVelocityState_RHIThread = VelocityState; - - uint32_t ViewConfigCount = 0; - XR_ENSURE(xrEnumerateViewConfigurationViews(IOpenXRHMDModule::Get().GetInstance(), IOpenXRHMDModule::Get().GetSystemId(), SpaceWarpExtensionPlugin->SelectedViewConfigurationType, 0, &ViewConfigCount, nullptr)); - SpaceWarpExtensionPlugin->SpaceWarpLayerInfo_RHIThread.SetNum(ViewConfigCount); - SpaceWarpExtensionPlugin->VelocityImages_RHIThread.SetNum(ViewConfigCount); - SpaceWarpExtensionPlugin->VelocityDepthImages_RHIThread.SetNum(ViewConfigCount); - }); - }); - } -} // namespace OculusXR - -#endif // defined(WITH_OCULUS_BRANCH) diff --git a/Plugins/MetaXR/Source/OculusXRHMD/Private/OpenXR/OculusXRSpaceWarp.h b/Plugins/MetaXR/Source/OculusXRHMD/Private/OpenXR/OculusXRSpaceWarp.h deleted file mode 100644 index 121e2e3..0000000 --- a/Plugins/MetaXR/Source/OculusXRHMD/Private/OpenXR/OculusXRSpaceWarp.h +++ /dev/null @@ -1,84 +0,0 @@ -// Copyright (c) Meta Platforms, Inc. and affiliates. - -#pragma once -#include "CoreMinimal.h" -#include "SceneViewExtension.h" -#include "XRSwapChain.h" -#include "OpenXR/IOculusXRExtensionPlugin.h" - -#if defined(WITH_OCULUS_BRANCH) - -DECLARE_LOG_CATEGORY_EXTERN(LogOculusSpaceWarpExtensionPlugin, Log, All); - -struct FOpenXRSwapchainProperties; - -namespace OculusXR -{ - class FSpaceWarpExtensionPlugin : public IOculusXRExtensionPlugin - { - public: - FSpaceWarpExtensionPlugin(); - - // IOpenXRExtensionPlugin - virtual bool GetRequiredExtensions(TArray& OutExtensions) override; - virtual void* OnEnumerateViewConfigurationViews(XrInstance InInstance, XrSystemId InSystem, XrViewConfigurationType InViewConfigurationType, uint32_t InViewIndex, void* InNext) override; - virtual const void* OnCreateInstance(IOpenXRHMDModule* InModule, const void* InNext) override; - virtual void PostCreateInstance(XrInstance InInstance) override; - virtual void PostCreateSession(XrSession InSession) override; - virtual void OnBeginRendering_RenderThread(XrSession InSession) override; - virtual const void* OnBeginProjectionView(XrSession InSession, int32 InLayerIndex, int32 InViewIndex, const void* InNext) override; - virtual void PostBeginFrame_RHIThread(XrTime PredictedDisplayTime) override; - virtual const void* OnEndFrame(XrSession InSession, XrTime DisplayTime, const void* InNext) override; - virtual void PostEndFrame_RHIThread() override; - virtual void AllocateRenderTargetTextures_RenderThread() override; - virtual bool GetRecommendedVelocityTextureSize_RenderThread(FIntPoint& OutTextureSize) override; - virtual FXRSwapChainPtr GetVelocitySwapchain_RenderThread() override; - virtual FXRSwapChainPtr GetVelocityDepthSwapchain_RenderThread() override; - - bool IsSpaceWarpEnabled() const; - - private: - class FSpaceWarpViewExtension : public FHMDSceneViewExtension - { - public: - FSpaceWarpViewExtension(const FAutoRegister& AutoRegister, FSpaceWarpExtensionPlugin* InPlugin); - - // ISceneViewExtension - virtual void SetupViewFamily(FSceneViewFamily& InViewFamily) override; - virtual void SetupView(FSceneViewFamily& InViewFamily, FSceneView& InView) override; - virtual void BeginRenderViewFamily(FSceneViewFamily& InViewFamily) override; - - private: - friend FSpaceWarpExtensionPlugin; - - FSpaceWarpExtensionPlugin* SpaceWarpExtensionPlugin = nullptr; - }; - - struct FPipelinedVelocityState - { - FXRSwapChainPtr VelocitySwapchain; - FXRSwapChainPtr VelocityDepthSwapchain; - - bool bEnabled = false; - }; - - TArray> VelocityImages_RHIThread; - TArray> VelocityDepthImages_RHIThread; - TArray> SpaceWarpLayerInfo_RHIThread; - - std::atomic bSpaceWarpExtensionEnabled = false; - bool bIsMobileMultiViewEnabled = false; - - TSharedPtr SpaceWarpViewExtension = nullptr; - FPipelinedVelocityState PipelinedVelocityState_RenderThread = {}; - FPipelinedVelocityState PipelinedVelocityState_RHIThread = {}; - - XrViewConfigurationType SelectedViewConfigurationType = XR_VIEW_CONFIGURATION_TYPE_PRIMARY_STEREO; - XrSystemSpaceWarpPropertiesFB SpaceWarpSystemProperties = { XR_TYPE_SYSTEM_SPACE_WARP_PROPERTIES_FB }; - - FTransform LastTrackingToWorld = FTransform::Identity; - }; - -} // namespace OculusXR - -#endif // defined(WITH_OCULUS_BRANCH) diff --git a/Plugins/MetaXR/Source/OculusXRHMD/Private/OpenXR/OculusXRSystemInfoExtensionPlugin.cpp b/Plugins/MetaXR/Source/OculusXRHMD/Private/OpenXR/OculusXRSystemInfoExtensionPlugin.cpp deleted file mode 100644 index b708501..0000000 --- a/Plugins/MetaXR/Source/OculusXRHMD/Private/OpenXR/OculusXRSystemInfoExtensionPlugin.cpp +++ /dev/null @@ -1,619 +0,0 @@ -// Copyright (c) Meta Platforms, Inc. and affiliates. - -#include "OculusXRSystemInfoExtensionPlugin.h" -#include "IOpenXRHMDModule.h" -#include "OculusXRAssetDirectory.h" -#include "OculusXRXRFunctions.h" -#include "OculusXROpenXRUtilities.h" -#include "OculusXRHMDRuntimeSettings.h" - -DEFINE_LOG_CATEGORY(LogOculusSystemInfoExtensionPlugin); - -namespace OculusXR -{ - enum EOculusAsset - { - LeftTouchRiftS, - RightTouchRiftS, - LeftTouchQuest2, - RightTouchQuest2, - LeftTouchQuestPro, - RightTouchQuestPro, - LeftTouchQuest3, - RightTouchQuest3, - OculusAssetTotal - }; - - struct FRenderableDevice - { - FString Device; - EOculusXRDeviceType MinDeviceRange; - EOculusXRDeviceType MaxDeviceRange; - FSoftObjectPath MeshAssetRef; - }; - - static FRenderableDevice RenderableDevices[] = { -#if PLATFORM_ANDROID - // Quest 1 & 2 - { "/user/hand/left", EOculusXRDeviceType::OculusQuest_Deprecated, EOculusXRDeviceType::OculusQuest2, FOculusAssetDirectory::AssetListing[LeftTouchQuest2] }, - { "/user/hand/right", EOculusXRDeviceType::OculusQuest_Deprecated, EOculusXRDeviceType::OculusQuest2, FOculusAssetDirectory::AssetListing[RightTouchQuest2] }, - - // Quest Pro - { "/user/hand/left", EOculusXRDeviceType::MetaQuestPro, EOculusXRDeviceType::MetaQuestPro, FOculusAssetDirectory::AssetListing[LeftTouchQuestPro] }, - { "/user/hand/right", EOculusXRDeviceType::MetaQuestPro, EOculusXRDeviceType::MetaQuestPro, FOculusAssetDirectory::AssetListing[RightTouchQuestPro] }, - - // Quest 3 & 3s - { "/user/hand/left", EOculusXRDeviceType::MetaQuest3, EOculusXRDeviceType::MetaQuest3S, FOculusAssetDirectory::AssetListing[LeftTouchQuest3] }, - { "/user/hand/right", EOculusXRDeviceType::MetaQuest3, EOculusXRDeviceType::MetaQuest3S, FOculusAssetDirectory::AssetListing[RightTouchQuest3] }, -#else - // PC - Rift S - { "/user/hand/left", EOculusXRDeviceType::Rift_S, EOculusXRDeviceType::Rift_S, FOculusAssetDirectory::AssetListing[LeftTouchRiftS] }, - { "/user/hand/right", EOculusXRDeviceType::Rift_S, EOculusXRDeviceType::Rift_S, FOculusAssetDirectory::AssetListing[RightTouchRiftS] }, - - // PC - Quest 1 & 2 - { "/user/hand/left", EOculusXRDeviceType::Quest_Link_Deprecated, EOculusXRDeviceType::Quest2_Link, FOculusAssetDirectory::AssetListing[LeftTouchQuest2] }, - { "/user/hand/right", EOculusXRDeviceType::Quest_Link_Deprecated, EOculusXRDeviceType::Quest2_Link, FOculusAssetDirectory::AssetListing[RightTouchQuest2] }, - - // PC - Quest Pro - { "/user/hand/left", EOculusXRDeviceType::MetaQuestProLink, EOculusXRDeviceType::MetaQuestProLink, FOculusAssetDirectory::AssetListing[LeftTouchQuestPro] }, - { "/user/hand/right", EOculusXRDeviceType::MetaQuestProLink, EOculusXRDeviceType::MetaQuestProLink, FOculusAssetDirectory::AssetListing[RightTouchQuestPro] }, - - // Quest 3 & 3s - { "/user/hand/left", EOculusXRDeviceType::MetaQuest3Link, EOculusXRDeviceType::MetaQuest3SLink, FOculusAssetDirectory::AssetListing[LeftTouchQuest3] }, - { "/user/hand/right", EOculusXRDeviceType::MetaQuest3Link, EOculusXRDeviceType::MetaQuest3SLink, FOculusAssetDirectory::AssetListing[RightTouchQuest3] }, -#endif - }; - static uint32 RenderableDeviceCount = sizeof(RenderableDevices) / sizeof(RenderableDevices[0]); - - FSoftObjectPath FindDeviceMesh(FString DevicePath, EOculusXRDeviceType SystemDeviceType) - { - if (DevicePath == "") - { - return NULL; - } - - for (uint32 DeviceIndex = 0; DeviceIndex < RenderableDeviceCount; ++DeviceIndex) - { - const FRenderableDevice& RenderableDevice = RenderableDevices[DeviceIndex]; - if (RenderableDevice.Device == DevicePath) - { - // If we have information about the current headset, load the model based of the headset information, otherwise load defaults. - if (SystemDeviceType != EOculusXRDeviceType::OculusUnknown) - { - if (SystemDeviceType >= RenderableDevice.MinDeviceRange && SystemDeviceType <= RenderableDevice.MaxDeviceRange) - { - return RenderableDevice.MeshAssetRef; - break; - } - } - else - { - return RenderableDevice.MeshAssetRef; - } - } - } - - return NULL; - } - - namespace // anonymous - { - void AppendToChain(XrBaseOutStructure* ToAppend, XrBaseOutStructure* Chain) - { - while (Chain->next != XR_NULL_HANDLE) - { - if (Chain->next == ToAppend) - { - return; - } - Chain = Chain->next; - } - Chain->next = ToAppend; - } - - bool IsEqualUuid(const XrUuidEXT& a, const XrUuidEXT& b) - { - return FMemory::Memcmp(&a, &b, sizeof(XrUuidEXT)) == 0; - } - - XrColorSpaceFB ToXrColorSpace(EOculusXRColorSpace ColorSpace) - { - XrColorSpaceFB XrColorSpace = XR_COLOR_SPACE_UNMANAGED_FB; - switch (ColorSpace) - { - case EOculusXRColorSpace::Unmanaged: - XrColorSpace = XR_COLOR_SPACE_UNMANAGED_FB; - break; - case EOculusXRColorSpace::Rec_2020: - XrColorSpace = XR_COLOR_SPACE_REC2020_FB; - break; - case EOculusXRColorSpace::Rec_709: - XrColorSpace = XR_COLOR_SPACE_REC709_FB; - break; - case EOculusXRColorSpace::Rift_CV1: - XrColorSpace = XR_COLOR_SPACE_RIFT_CV1_FB; - break; - case EOculusXRColorSpace::Rift_S: - XrColorSpace = XR_COLOR_SPACE_RIFT_S_FB; - break; - case EOculusXRColorSpace::Quest: - XrColorSpace = XR_COLOR_SPACE_QUEST_FB; - break; - case EOculusXRColorSpace::P3: - XrColorSpace = XR_COLOR_SPACE_P3_FB; - break; - case EOculusXRColorSpace::Adobe_RGB: - XrColorSpace = XR_COLOR_SPACE_ADOBE_RGB_FB; - break; - } - return XrColorSpace; - } - - EOculusXRColorSpace ToOculusXRColorSpace(XrColorSpaceFB InXrColorSpace) - { - EOculusXRColorSpace ColorSpace = EOculusXRColorSpace::Unknown; - - switch (InXrColorSpace) - { - case XR_COLOR_SPACE_UNMANAGED_FB: - ColorSpace = EOculusXRColorSpace::Unmanaged; - break; - case XR_COLOR_SPACE_REC2020_FB: - ColorSpace = EOculusXRColorSpace::Rec_2020; - break; - case XR_COLOR_SPACE_REC709_FB: - ColorSpace = EOculusXRColorSpace::Rec_709; - break; - case XR_COLOR_SPACE_RIFT_CV1_FB: - ColorSpace = EOculusXRColorSpace::Rift_CV1; - break; - case XR_COLOR_SPACE_RIFT_S_FB: - ColorSpace = EOculusXRColorSpace::Rift_S; - break; - case XR_COLOR_SPACE_QUEST_FB: - ColorSpace = EOculusXRColorSpace::Quest; - break; - case XR_COLOR_SPACE_P3_FB: - ColorSpace = EOculusXRColorSpace::P3; - break; - case XR_COLOR_SPACE_ADOBE_RGB_FB: - ColorSpace = EOculusXRColorSpace::Adobe_RGB; - break; - default: - ColorSpace = EOculusXRColorSpace::Unknown; - } - return ColorSpace; - } - } // namespace - - FSystemInfoExtensionPlugin::FSystemInfoExtensionPlugin() - : Instance(XR_NULL_HANDLE) - , Session(XR_NULL_HANDLE) - , SystemId(XR_NULL_SYSTEM_ID) - , bExtHeadsetIdAvailable(false) - , SystemHeadsetId{} - , bSystemHeadsetIdValid(false) - , SystemProductName{} - , bExtDisplayRefreshAvailible(false) - , bExtColorspaceAvailable(false) - , bExtPassthroughAvailable(false) - , bExtPassthroughPreferencesAvailable(false) - { - } - - bool FSystemInfoExtensionPlugin::GetRequiredExtensions(TArray& OutExtensions) - { - return true; - } - - bool FSystemInfoExtensionPlugin::GetOptionalExtensions(TArray& OutExtensions) - { - OutExtensions.Add(XR_META_HEADSET_ID_EXTENSION_NAME); - OutExtensions.Add(XR_FB_DISPLAY_REFRESH_RATE_EXTENSION_NAME); - OutExtensions.Add(XR_FB_COLOR_SPACE_EXTENSION_NAME); - OutExtensions.Add(XR_META_PASSTHROUGH_PREFERENCES_EXTENSION_NAME); - - return true; - } - - void FSystemInfoExtensionPlugin::PostCreateInstance(XrInstance InInstance) - { - Instance = InInstance; - } - - const void* FSystemInfoExtensionPlugin::OnCreateInstance(class IOpenXRHMDModule* InModule, const void* InNext) - { - if (InModule != nullptr) - { - bExtHeadsetIdAvailable = InModule->IsExtensionEnabled(XR_META_HEADSET_ID_EXTENSION_NAME); - bExtDisplayRefreshAvailible = InModule->IsExtensionEnabled(XR_FB_DISPLAY_REFRESH_RATE_EXTENSION_NAME); - bExtColorspaceAvailable = InModule->IsExtensionEnabled(XR_FB_COLOR_SPACE_EXTENSION_NAME); - bExtPassthroughAvailable = InModule->IsExtensionEnabled(XR_FB_PASSTHROUGH_EXTENSION_NAME); - bExtPassthroughPreferencesAvailable = InModule->IsExtensionEnabled(XR_META_PASSTHROUGH_PREFERENCES_EXTENSION_NAME); - } - return IOculusXRExtensionPlugin::OnCreateInstance(InModule, InNext); - } - - void FSystemInfoExtensionPlugin::PostCreateSession(XrSession InSession) - { - Session = InSession; - XrSystemGetInfo SystemGetInfo = { XR_TYPE_SYSTEM_GET_INFO }; - SystemGetInfo.formFactor = XR_FORM_FACTOR_HEAD_MOUNTED_DISPLAY; - - ENSURE_XRCMD(xrGetSystem(Instance, &SystemGetInfo, &SystemId)); - - XrSystemHeadsetIdPropertiesMETA SystemHeadsetIdProperties = { XR_TYPE_SYSTEM_HEADSET_ID_PROPERTIES_META }; - - XrSystemProperties SystemProperties = { XR_TYPE_SYSTEM_PROPERTIES }; - - if (bExtHeadsetIdAvailable) - { - AppendToChain( - reinterpret_cast(&SystemHeadsetIdProperties), - reinterpret_cast(&SystemProperties)); - } - - ENSURE_XRCMD(xrGetSystemProperties(Instance, SystemId, &SystemProperties)); - - if (bExtHeadsetIdAvailable) - { - SystemHeadsetId = SystemHeadsetIdProperties.id; - bSystemHeadsetIdValid = true; - } - - SystemProductName = SystemProperties.systemName; - SystemDeviceType = GetSystemHeadsetType(); - - const UOculusXRHMDRuntimeSettings* HMDSettings = GetDefault(); - SetColorSpace(HMDSettings->ColorSpace); - - ControllerPaths.TouchControllerPath = FOpenXRPath("/interaction_profiles/oculus/touch_controller"); - ControllerPaths.TouchControllerProPath = FOpenXRPath("/interaction_profiles/facebook/touch_controller_pro"); - ControllerPaths.TouchControllerPlusPath = FOpenXRPath("/interaction_profiles/meta/touch_controller_plus"); - ControllerPaths.LeftHandPath = FOpenXRPath("/user/hand/left"); - ControllerPaths.RightHandPath = FOpenXRPath("/user/hand/right"); - } - - bool FSystemInfoExtensionPlugin::GetControllerModel(XrInstance InInstance, XrPath InInteractionProfile, XrPath InDevicePath, FSoftObjectPath& OutPath) - { - if (InDevicePath == XR_NULL_PATH) - { - return false; - } - - const FString DevicePath = FOpenXRPath(InDevicePath).ToString(); - OutPath = FindDeviceMesh(DevicePath, SystemDeviceType); - return OutPath.IsValid(); - } - - void FSystemInfoExtensionPlugin::GetControllerModelsForCooking(TArray& OutPaths) - { - OutPaths.Append(FOculusAssetDirectory::AssetListing, OculusAssetTotal); - } - - EOculusXRDeviceType FSystemInfoExtensionPlugin::GetDeviceType() - { - return SystemDeviceType; - } - - EOculusXRDeviceType FSystemInfoExtensionPlugin::GetSystemHeadsetType() - { - // Magic legacy conversion paths from ovrplugin - -#if defined(__ANDROID__) - - constexpr XrUuidEXT XR_HEADSET_ID_QUEST = { - { 0x4c, 0xa2, 0xf7, 0x94, 0xaf, 0x6a, 0x46, 0x9d, 0xbb, 0xe5, 0x1f, 0x7f, 0xce, 0xef, 0x7b, 0xad } - }; - constexpr XrUuidEXT XR_HEADSET_ID_QUEST2 = { - { 0x30, 0x64, 0xf2, 0x39, 0x15, 0xed, 0x47, 0x22, 0xa6, 0x59, 0x5e, 0xa1, 0xec, 0xd8, 0x99, 0xc2 } - }; - // Quest Pro - constexpr XrUuidEXT XR_HEADSET_ID_QUEST_PRO = { - { 0xb5, 0x84, 0x43, 0xc9, 0xdf, 0x86, 0x40, 0xcd, 0x89, 0x18, 0x2a, 0x27, 0x8e, 0x18, 0xab, 0x71 } - }; - // Quest 3 - constexpr XrUuidEXT XR_HEADSET_ID_QUEST_3 = { - { 0x08, 0x27, 0x46, 0xba, 0xa0, 0x71, 0x4c, 0xf7, 0x8f, 0x87, 0xba, 0xde, 0x5c, 0xce, 0x43, 0xce } - }; - // Quest 3S - constexpr XrUuidEXT XR_HEADSET_ID_QUEST_3S = { - { 0x95, 0x10, 0x49, 0x2b, 0x0d, 0x42, 0x48, 0x72, 0xbc, 0xf4, 0xfb, 0x1a, 0x8d, 0xef, 0x6f, 0x0e } - }; -#else - // PC Headsets - constexpr XrUuidEXT XR_HEADSET_ID_RIFT_CV1 = { - { 0xbe, 0x4f, 0x8d, 0x7c, 0x8e, 0x33, 0x4d, 0xa2, 0xbf, 0x54, 0xda, 0xd9, 0xea, 0x57, 0x54, 0x9f } - }; - constexpr XrUuidEXT XR_HEADSET_ID_RIFT_S = { - { 0x0d, 0x42, 0xaa, 0xc6, 0x7f, 0x1c, 0x46, 0x27, 0x9c, 0xc5, 0x2c, 0xba, 0x8b, 0x0b, 0xaf, 0xfc } - }; - constexpr XrUuidEXT XR_HEADSET_ID_QUEST_LINK = { - { 0x2f, 0x03, 0x26, 0xc0, 0x09, 0xeb, 0x4d, 0xa9, 0x9a, 0x88, 0x4c, 0xc2, 0x93, 0x53, 0x0a, 0xb2 } - }; - constexpr XrUuidEXT XR_HEADSET_ID_QUEST2_LINK = { - { 0x52, 0x50, 0x78, 0xa5, 0x5a, 0xab, 0x4d, 0xc9, 0xb8, 0x02, 0x1e, 0xbd, 0x6c, 0x7c, 0xff, 0xf4 } - }; - // Quest Pro - constexpr XrUuidEXT XR_HEADSET_ID_QUEST_PRO_LINK = { - { 0x99, 0x09, 0x86, 0xc7, 0x9b, 0xad, 0x47, 0x5f, 0x89, 0x83, 0xc1, 0xc7, 0xbd, 0x49, 0xad, 0x51 } - }; - // Quest 3 - constexpr XrUuidEXT XR_HEADSET_ID_QUEST_3_LINK = { - { 0x64, 0x09, 0xe3, 0xb3, 0x50, 0x89, 0x4e, 0xd6, 0x86, 0x8e, 0xaa, 0xed, 0x82, 0xda, 0x36, 0x76 } - }; - // Quest 3S - constexpr XrUuidEXT XR_HEADSET_ID_QUEST_3S_LINK = { - { 0x8c, 0x2e, 0xc4, 0x47, 0xac, 0x73, 0x41, 0x9f, 0x90, 0x96, 0x36, 0xa7, 0x72, 0x33, 0x78, 0x62 } - }; -#endif // defined(__ANDROID__) - -#if defined(__ANDROID__) - if (bSystemHeadsetIdValid) - { - UE_LOG(LogOculusSystemInfoExtensionPlugin, Log, TEXT("UID %x %x %x %x - %x %x %x %x - %x %x %x %x - %x %x %x %x"), - SystemHeadsetId.data[0], - SystemHeadsetId.data[1], - SystemHeadsetId.data[2], - SystemHeadsetId.data[3], - - SystemHeadsetId.data[4], - SystemHeadsetId.data[5], - SystemHeadsetId.data[6], - SystemHeadsetId.data[7], - - SystemHeadsetId.data[8], - SystemHeadsetId.data[9], - SystemHeadsetId.data[10], - SystemHeadsetId.data[11], - - SystemHeadsetId.data[12], - SystemHeadsetId.data[13], - SystemHeadsetId.data[14], - SystemHeadsetId.data[15]); - - if (IsEqualUuid(SystemHeadsetId, XR_HEADSET_ID_QUEST)) - { - return EOculusXRDeviceType::OculusQuest_Deprecated; - } - else if (IsEqualUuid(SystemHeadsetId, XR_HEADSET_ID_QUEST2)) - { - return EOculusXRDeviceType::OculusQuest2; - } - else if (IsEqualUuid(SystemHeadsetId, XR_HEADSET_ID_QUEST_PRO)) - { - return EOculusXRDeviceType::MetaQuestPro; - } - else if (IsEqualUuid(SystemHeadsetId, XR_HEADSET_ID_QUEST_3)) - { - return EOculusXRDeviceType::MetaQuest3; - } - else if (IsEqualUuid(SystemHeadsetId, XR_HEADSET_ID_QUEST_3S)) - { - return EOculusXRDeviceType::MetaQuest3S; - } - else - { - return EOculusXRDeviceType::OculusQuest2; // return Quest 2 as the default headset type - } - } - else - { - if (SystemProductName == TEXT("Oculus Quest")) - { - return EOculusXRDeviceType::OculusQuest_Deprecated; - } - else if (SystemProductName == TEXT("Oculus Quest2")) - { - return EOculusXRDeviceType::OculusQuest2; - } - else if (SystemProductName == TEXT("Meta Quest Pro") || SystemProductName == TEXT("Oculus Headset1")) - { - return EOculusXRDeviceType::MetaQuestPro; - } - else if (SystemProductName == TEXT("Meta Quest 3") || SystemProductName == TEXT("Oculus Headset2")) - { - return EOculusXRDeviceType::MetaQuest3; - } - else if (SystemProductName == TEXT("Meta Quest 3S") || SystemProductName == TEXT("Oculus Headset3")) - { - return EOculusXRDeviceType::MetaQuest3S; - } - else - { - return EOculusXRDeviceType::OculusQuest2; // return Quest 2 as the default headset type - } - } -#else - if (bSystemHeadsetIdValid) - { - if (IsEqualUuid(SystemHeadsetId, XR_HEADSET_ID_RIFT_CV1)) - { - return EOculusXRDeviceType::Rift; - } - else if (IsEqualUuid(SystemHeadsetId, XR_HEADSET_ID_RIFT_S)) - { - return EOculusXRDeviceType::Rift_S; - } - else if (IsEqualUuid(SystemHeadsetId, XR_HEADSET_ID_QUEST_LINK)) - { - return EOculusXRDeviceType::Quest_Link_Deprecated; - } - else if (IsEqualUuid(SystemHeadsetId, XR_HEADSET_ID_QUEST2_LINK)) - { - return EOculusXRDeviceType::Quest2_Link; - } - else if (IsEqualUuid(SystemHeadsetId, XR_HEADSET_ID_QUEST_PRO_LINK)) - { - return EOculusXRDeviceType::MetaQuestProLink; - } - else if (IsEqualUuid(SystemHeadsetId, XR_HEADSET_ID_QUEST_3_LINK)) - { - return EOculusXRDeviceType::MetaQuest3Link; - } - else if (IsEqualUuid(SystemHeadsetId, XR_HEADSET_ID_QUEST_3S_LINK)) - { - return EOculusXRDeviceType::MetaQuest3SLink; - } - else - { - return EOculusXRDeviceType::Quest2_Link; // return Quest 2 (over Link) as the default headset type - } - } - else - { - if (SystemProductName == TEXT("Oculus Rift S")) - { - return EOculusXRDeviceType::Rift_S; - } - else if (SystemProductName == TEXT("Oculus Rift CV1")) - { - return EOculusXRDeviceType::Rift; - } - else - { - return EOculusXRDeviceType::Quest2_Link; // return Quest 2 (over Link) as the default headset type - } - } -#endif // defined(__ANDROID__) - } - - TArray FSystemInfoExtensionPlugin::GetSystemDisplayAvailableFrequencies() - { - TArray DisplayFrequencies; - - if (bExtDisplayRefreshAvailible) - { - check(xrEnumerateDisplayRefreshRatesFB.GetValue() != nullptr); - - uint32 TotalRates = 0; - ENSURE_XRCMD(xrEnumerateDisplayRefreshRatesFB.GetValue()(Session, 0, &TotalRates, nullptr)); - - DisplayFrequencies.Init(0, TotalRates); - - ENSURE_XRCMD(xrEnumerateDisplayRefreshRatesFB.GetValue()(Session, TotalRates, &TotalRates, DisplayFrequencies.GetData())); - } - - return DisplayFrequencies; - } - - float FSystemInfoExtensionPlugin::GetSystemDisplayFrequency() - { - float Frequency = 0.0f; - - if (bExtDisplayRefreshAvailible) - { - check(xrGetDisplayRefreshRateFB.GetValue() != nullptr); - ENSURE_XRCMD(xrGetDisplayRefreshRateFB.GetValue()(Session, &Frequency)); - } - return Frequency; - } - - void FSystemInfoExtensionPlugin::SetSystemDisplayFrequency(float DisplayFrequency) - { - if (bExtDisplayRefreshAvailible) - { - check(xrRequestDisplayRefreshRateFB.GetValue() != nullptr); - ENSURE_XRCMD(xrRequestDisplayRefreshRateFB.GetValue()(Session, DisplayFrequency)); - } - } - - void FSystemInfoExtensionPlugin::SetColorSpace(EOculusXRColorSpace ColorSpace) - { - if (bExtColorspaceAvailable) - { - XrColorSpaceFB XrColorSpace = ToXrColorSpace(ColorSpace); - check(xrSetColorSpaceFB.GetValue() != nullptr); - ENSURE_XRCMD(xrSetColorSpaceFB.GetValue()(Session, XrColorSpace)); - } - } - - EOculusXRColorSpace FSystemInfoExtensionPlugin::GetColorSpace() - { - EOculusXRColorSpace ColorSpace = EOculusXRColorSpace::Unknown; - if (bExtColorspaceAvailable) - { - XrSystemColorSpacePropertiesFB ColorSpaceProperties = { XR_TYPE_SYSTEM_COLOR_SPACE_PROPERTIES_FB }; - XrSystemProperties SystemProperties = { XR_TYPE_SYSTEM_PROPERTIES, &ColorSpaceProperties }; - - ENSURE_XRCMD(xrGetSystemProperties(Instance, SystemId, &SystemProperties)); - ColorSpace = ToOculusXRColorSpace(ColorSpaceProperties.colorSpace); - } - return ColorSpace; - } - - bool FSystemInfoExtensionPlugin::IsPassthroughSupported() - { - if (bExtPassthroughAvailable) - { - XrSystemPassthroughProperties2FB PassthroughProperties = { XR_TYPE_SYSTEM_PASSTHROUGH_PROPERTIES2_FB }; - XrSystemProperties SystemProperties = { XR_TYPE_SYSTEM_PROPERTIES, &PassthroughProperties }; - - XR_ENSURE(xrGetSystemProperties(Instance, SystemId, &SystemProperties)); - - return (PassthroughProperties.capabilities & XR_PASSTHROUGH_CAPABILITY_BIT_FB) == XR_PASSTHROUGH_CAPABILITY_BIT_FB; - } - return false; - } - - bool FSystemInfoExtensionPlugin::IsColorPassthroughSupported() - { - if (bExtPassthroughAvailable) - { - XrSystemPassthroughProperties2FB PassthroughProperties = { XR_TYPE_SYSTEM_PASSTHROUGH_PROPERTIES2_FB }; - XrSystemProperties SystemProperties = { XR_TYPE_SYSTEM_PROPERTIES, &PassthroughProperties }; - - XR_ENSURE(xrGetSystemProperties(Instance, SystemId, &SystemProperties)); - - return (PassthroughProperties.capabilities & XR_PASSTHROUGH_CAPABILITY_COLOR_BIT_FB) == XR_PASSTHROUGH_CAPABILITY_COLOR_BIT_FB; - } - return false; - } - - bool FSystemInfoExtensionPlugin::IsPassthroughRecommended() - { - if (bExtPassthroughPreferencesAvailable && OculusXR::xrGetPassthroughPreferencesMETA.IsSet()) - { - XrPassthroughPreferencesMETA PassthroughPreferences = { XR_TYPE_PASSTHROUGH_PREFERENCES_META }; - - ENSURE_XRCMD(OculusXR::xrGetPassthroughPreferencesMETA.GetValue()(Session, &PassthroughPreferences)); - - return (PassthroughPreferences.flags & XR_PASSTHROUGH_PREFERENCE_DEFAULT_TO_ACTIVE_BIT_META) == XR_PASSTHROUGH_PREFERENCE_DEFAULT_TO_ACTIVE_BIT_META; - } - return false; - } - - EOculusXRControllerType FSystemInfoExtensionPlugin::GetControllerType(EControllerHand DeviceHand) - { - EOculusXRControllerType ControllerType = EOculusXRControllerType::Unknown; - IXRTrackingSystem* TrackingSystem = GetOpenXRTrackingSystem(); - - if (TrackingSystem != nullptr) - { - if (DeviceHand != EControllerHand::Left || DeviceHand != EControllerHand::Right) - { - XrInteractionProfileState Profile; - Profile.type = XR_TYPE_INTERACTION_PROFILE_STATE; - Profile.next = nullptr; - const XrPath TopLevelUserPath = DeviceHand != EControllerHand::Left ? ControllerPaths.LeftHandPath : ControllerPaths.RightHandPath; - XR_ENSURE(xrGetCurrentInteractionProfile(Session, TopLevelUserPath, &Profile)); - - const XrPath InteractionProfile = Profile.interactionProfile; - if (InteractionProfile == ControllerPaths.TouchControllerPath) - { - ControllerType = EOculusXRControllerType::MetaQuestTouch; - } - else if (InteractionProfile == ControllerPaths.TouchControllerProPath) - { - ControllerType = EOculusXRControllerType::MetaQuestTouchPro; - } - else if (InteractionProfile == ControllerPaths.TouchControllerPlusPath) - { - ControllerType = EOculusXRControllerType::MetaQuestTouchPlus; - } - } - } - return ControllerType; - } - -} // namespace OculusXR diff --git a/Plugins/MetaXR/Source/OculusXRHMD/Private/OpenXR/OculusXRSystemInfoExtensionPlugin.h b/Plugins/MetaXR/Source/OculusXRHMD/Private/OpenXR/OculusXRSystemInfoExtensionPlugin.h deleted file mode 100644 index ff7defd..0000000 --- a/Plugins/MetaXR/Source/OculusXRHMD/Private/OpenXR/OculusXRSystemInfoExtensionPlugin.h +++ /dev/null @@ -1,75 +0,0 @@ -// Copyright (c) Meta Platforms, Inc. and affiliates. - -#pragma once -#include "CoreMinimal.h" -#include "OculusXRHMDTypes.h" -#include "OpenXR/IOculusXRExtensionPlugin.h" - -DECLARE_LOG_CATEGORY_EXTERN(LogOculusSystemInfoExtensionPlugin, Log, All); - -namespace OculusXR -{ - class FSystemInfoExtensionPlugin : public IOculusXRExtensionPlugin - { - public: - FSystemInfoExtensionPlugin(); - - // IOpenXRExtensionPlugin - virtual bool GetRequiredExtensions(TArray& OutExtensions) override; - virtual bool GetOptionalExtensions(TArray& OutExtensions) override; - virtual const void* OnCreateInstance(class IOpenXRHMDModule* InModule, const void* InNext); - virtual void PostCreateInstance(XrInstance InInstance) override; - virtual void PostCreateSession(XrSession InSession) override; - virtual bool GetControllerModel(XrInstance InInstance, XrPath InInteractionProfile, XrPath InDevicePath, FSoftObjectPath& OutPath) override; - virtual void GetControllerModelsForCooking(TArray& OutPaths) override; - - FString GetSystemProductName(); - EOculusXRDeviceType GetDeviceType(); - - TArray GetSystemDisplayAvailableFrequencies(); - float GetSystemDisplayFrequency(); - void SetSystemDisplayFrequency(float DisplayFrequency); - void SetColorSpace(EOculusXRColorSpace ColorSpace); - EOculusXRColorSpace GetColorSpace(); - EOculusXRControllerType GetControllerType(EControllerHand DeviceHand); - - bool IsPassthroughSupported(); - bool IsColorPassthroughSupported(); - bool IsPassthroughRecommended(); - - private: - EOculusXRDeviceType GetSystemHeadsetType(); - - XrInstance Instance; - XrSession Session; - XrSystemId SystemId; - bool bExtHeadsetIdAvailable; - XrUuidEXT SystemHeadsetId; - bool bSystemHeadsetIdValid; - FString SystemProductName; - EOculusXRDeviceType SystemDeviceType; - bool bExtDisplayRefreshAvailible; - bool bExtColorspaceAvailable; - bool bExtPassthroughAvailable; - bool bExtPassthroughPreferencesAvailable; - - struct FControllerPaths - { - FControllerPaths() - : TouchControllerPath(XR_NULL_PATH) - , TouchControllerProPath(XR_NULL_PATH) - , TouchControllerPlusPath(XR_NULL_PATH) - , LeftHandPath(XR_NULL_PATH) - , RightHandPath(XR_NULL_PATH){}; - - XrPath TouchControllerPath; - XrPath TouchControllerProPath; - XrPath TouchControllerPlusPath; - XrPath LeftHandPath; - XrPath RightHandPath; - }; - - FControllerPaths ControllerPaths; - }; - -} // namespace OculusXR diff --git a/Plugins/MetaXR/Source/OculusXRHMD/Private/OpenXR/OculusXRXRFunctions.cpp b/Plugins/MetaXR/Source/OculusXRHMD/Private/OpenXR/OculusXRXRFunctions.cpp deleted file mode 100644 index 7e98cc2..0000000 --- a/Plugins/MetaXR/Source/OculusXRHMD/Private/OpenXR/OculusXRXRFunctions.cpp +++ /dev/null @@ -1,34 +0,0 @@ -// Copyright (c) Meta Platforms, Inc. and affiliates. - -#include "OculusXRXRFunctions.h" -#include "OpenXRCore.h" -#include "OculusXROpenXRUtilities.h" - -namespace OculusXR -{ - TOptional xrPerfSettingsSetPerformanceLevelEXT = nullptr; - TOptional xrQueryPerformanceMetricsCounterMETA = nullptr; - TOptional xrEnumeratePerformanceMetricsCounterPathsMETA = nullptr; - TOptional xrSetPerformanceMetricsStateMETA = nullptr; - TOptional xrGetDisplayRefreshRateFB = nullptr; - TOptional xrRequestDisplayRefreshRateFB = nullptr; - TOptional xrEnumerateDisplayRefreshRatesFB = nullptr; - TOptional xrSetColorSpaceFB = nullptr; - TOptional xrGetPassthroughPreferencesMETA = nullptr; - TOptional xrGetRecommendedLayerResolutionMETA = nullptr; - - void InitOpenXRFunctions(XrInstance InInstance) - { - OculusXR::XRGetInstanceProcAddr(InInstance, "xrPerfSettingsSetPerformanceLevelEXT", &xrPerfSettingsSetPerformanceLevelEXT); - OculusXR::XRGetInstanceProcAddr(InInstance, "xrQueryPerformanceMetricsCounterMETA", &xrQueryPerformanceMetricsCounterMETA); - OculusXR::XRGetInstanceProcAddr(InInstance, "xrEnumeratePerformanceMetricsCounterPathsMETA", &xrEnumeratePerformanceMetricsCounterPathsMETA); - OculusXR::XRGetInstanceProcAddr(InInstance, "xrSetPerformanceMetricsStateMETA", &xrSetPerformanceMetricsStateMETA); - OculusXR::XRGetInstanceProcAddr(InInstance, "xrGetDisplayRefreshRateFB", &xrGetDisplayRefreshRateFB); - OculusXR::XRGetInstanceProcAddr(InInstance, "xrRequestDisplayRefreshRateFB", &xrRequestDisplayRefreshRateFB); - OculusXR::XRGetInstanceProcAddr(InInstance, "xrEnumerateDisplayRefreshRatesFB", &xrEnumerateDisplayRefreshRatesFB); - OculusXR::XRGetInstanceProcAddr(InInstance, "xrSetColorSpaceFB", &xrSetColorSpaceFB); - OculusXR::XRGetInstanceProcAddr(InInstance, "xrGetPassthroughPreferencesMETA", &xrGetPassthroughPreferencesMETA); - OculusXR::XRGetInstanceProcAddr(InInstance, "xrGetRecommendedLayerResolutionMETA", &xrGetRecommendedLayerResolutionMETA); - } - -} // namespace OculusXR diff --git a/Plugins/MetaXR/Source/OculusXRHMD/Private/OpenXR/OculusXRXRFunctions.h b/Plugins/MetaXR/Source/OculusXRHMD/Private/OpenXR/OculusXRXRFunctions.h deleted file mode 100644 index b032185..0000000 --- a/Plugins/MetaXR/Source/OculusXRHMD/Private/OpenXR/OculusXRXRFunctions.h +++ /dev/null @@ -1,22 +0,0 @@ -// Copyright (c) Meta Platforms, Inc. and affiliates. - -#pragma once - -#include "khronos/openxr/openxr.h" -#include "Misc/Optional.h" - -namespace OculusXR -{ - extern TOptional xrPerfSettingsSetPerformanceLevelEXT; - extern TOptional xrQueryPerformanceMetricsCounterMETA; - extern TOptional xrEnumeratePerformanceMetricsCounterPathsMETA; - extern TOptional xrSetPerformanceMetricsStateMETA; - extern TOptional xrGetDisplayRefreshRateFB; - extern TOptional xrRequestDisplayRefreshRateFB; - extern TOptional xrEnumerateDisplayRefreshRatesFB; - extern TOptional xrSetColorSpaceFB; - extern TOptional xrGetPassthroughPreferencesMETA; - extern TOptional xrGetRecommendedLayerResolutionMETA; - - void InitOpenXRFunctions(XrInstance InInstance); -} // namespace OculusXR diff --git a/Plugins/MetaXR/Source/OculusXRHMD/Public/IOculusXRHMDModule.h b/Plugins/MetaXR/Source/OculusXRHMD/Public/IOculusXRHMDModule.h deleted file mode 100644 index 53755fe..0000000 --- a/Plugins/MetaXR/Source/OculusXRHMD/Public/IOculusXRHMDModule.h +++ /dev/null @@ -1,134 +0,0 @@ -// @lint-ignore-every LICENSELINT -// Copyright Epic Games, Inc. All Rights Reserved. - -#pragma once -#include "Modules/ModuleManager.h" -#include "IHeadMountedDisplayModule.h" -#include "HeadMountedDisplayTypes.h" - -// Oculus support is not available on Windows XP -#define OCULUS_HMD_SUPPORTED_PLATFORMS (PLATFORM_WINDOWS && WINVER > 0x0502) || (PLATFORM_ANDROID_ARM || PLATFORM_ANDROID_ARM64 || PLATFORM_ANDROID_X64) - -//------------------------------------------------------------------------------------------------- -// IOculusXRHMDModule -//------------------------------------------------------------------------------------------------- - -/** - * The public interface to this module. In most cases, this interface is only public to sibling modules - * within this plugin. - */ -class IOculusXRHMDModule : public IHeadMountedDisplayModule -{ -public: - static OCULUSXRHMD_API const FName NAME_OculusXRHMD; - - /** - * Singleton-like access to this module's interface. This is just for convenience! - * Beware of calling this during the shutdown phase, though. Your module might have been unloaded already. - * - * @return Returns singleton instance, loading the module on demand if needed - */ - static inline IOculusXRHMDModule& Get() - { - return FModuleManager::LoadModuleChecked(NAME_OculusXRHMD); - } - - /** - * Checks to see if this module is loaded and ready. It is only valid to call Get() if IsAvailable() returns true. - * - * @return True if the module is loaded and ready to use - */ - static inline bool IsAvailable() - { - return FModuleManager::Get().IsModuleLoaded(NAME_OculusXRHMD); - } - - /** - * Grabs the current orientation and position for the HMD. If positional tracking is not available, DevicePosition will be a zero vector - * - * @param DeviceRotation (out) The device's current rotation - * @param DevicePosition (out) The device's current position, in its own tracking space - * @param NeckPosition (out) The estimated neck position, calculated using NeckToEye vector from User Profile. Same coordinate space as DevicePosition. - * @param bUseOrienationForPlayerCamera (in) Should be set to 'true' if the orientation is going to be used to update orientation of the camera manually. - * @param bUsePositionForPlayerCamera (in) Should be set to 'true' if the position is going to be used to update position of the camera manually. - * @param PositionScale (in) The 3D scale that will be applied to position. - */ - virtual void GetPose(FRotator& DeviceRotation, FVector& DevicePosition, FVector& NeckPosition, bool bUseOrienationForPlayerCamera = false, bool bUsePositionForPlayerCamera = false, const FVector PositionScale = FVector::ZeroVector) = 0; - - /** - * Reports raw sensor data. If HMD doesn't support any of the parameters then it will be set to zero. - * - * @param AngularAcceleration (out) Angular acceleration in radians per second per second. - * @param LinearAcceleration (out) Acceleration in meters per second per second. - * @param AngularVelocity (out) Angular velocity in radians per second. - * @param LinearVelocity (out) Velocity in meters per second. - * @param TimeInSeconds (out) Time when the reported IMU reading took place, in seconds. - */ - virtual void GetRawSensorData(FVector& AngularAcceleration, FVector& LinearAcceleration, FVector& AngularVelocity, FVector& LinearVelocity, float& TimeInSeconds) = 0; - - /** - * Returns current user profile. - * - * @param Profile (out) Structure to hold current user profile. - * @return (boolean) True, if user profile was acquired. - */ - virtual bool GetUserProfile(struct FOculusXRHmdUserProfile& Profile) = 0; - - /** - * Sets 'base rotation' - the rotation that will be subtracted from - * the actual HMD orientation. - * Sets base position offset (in meters). The base position offset is the distance from the physical (0, 0, 0) position - * to current HMD position (bringing the (0, 0, 0) point to the current HMD position) - * Note, this vector is set by ResetPosition call; use this method with care. - * The axis of the vector are the same as in Unreal: X - forward, Y - right, Z - up. - * - * @param Rotation (in) Rotator object with base rotation - * @param BaseOffsetInMeters (in) the vector to be set as base offset, in meters. - * @param Options (in) specifies either position, orientation or both should be set. - */ - virtual void SetBaseRotationAndBaseOffsetInMeters(FRotator Rotation, FVector BaseOffsetInMeters, EOrientPositionSelector::Type Options) = 0; - - /** - * Returns current base rotation and base offset. - * The base offset is currently used base position offset, previously set by the - * ResetPosition or SetBasePositionOffset calls. It represents a vector that translates the HMD's position - * into (0,0,0) point, in meters. - * The axis of the vector are the same as in Unreal: X - forward, Y - right, Z - up. - * - * @param OutRotation (out) Rotator object with base rotation - * @param OutBaseOffsetInMeters (out) base position offset, vector, in meters. - */ - virtual void GetBaseRotationAndBaseOffsetInMeters(FRotator& OutRotation, FVector& OutBaseOffsetInMeters) = 0; - - /** - * Sets 'base rotation' - the rotation that will be subtracted from - * the actual HMD orientation. - * The position offset might be added to current HMD position, - * effectively moving the virtual camera by the specified offset. The addition - * occurs after the HMD orientation and position are applied. - * - * @param BaseRot (in) Rotator object with base rotation - * @param PosOffset (in) the vector to be added to HMD position. - * @param Options (in) specifies either position, orientation or both should be set. - */ - virtual void SetBaseRotationAndPositionOffset(FRotator BaseRot, FVector PosOffset, EOrientPositionSelector::Type Options) = 0; - - /** - * Returns current base rotation and position offset. - * - * @param OutRot (out) Rotator object with base rotation - * @param OutPosOffset (out) the vector with previously set position offset. - */ - virtual void GetBaseRotationAndPositionOffset(FRotator& OutRot, FVector& OutPosOffset) = 0; - - /** - * Returns IStereoLayers interface to work with overlays. - */ - virtual class IStereoLayers* GetStereoLayers() = 0; - - virtual FString GetDeviceSystemName() = 0; - -#if OCULUS_HMD_SUPPORTED_PLATFORMS - virtual bool PoseToOrientationAndPosition(const FQuat& InOrientation, const FVector& InPosition, FQuat& OutOrientation, FVector& OutPosition) const = 0; -#endif // OCULUS_HMD_SUPPORTED_PLATFORMS -}; diff --git a/Plugins/MetaXR/Source/OculusXRHMD/Public/OculusXRAssetDirectory.h b/Plugins/MetaXR/Source/OculusXRHMD/Public/OculusXRAssetDirectory.h deleted file mode 100644 index 86f1019..0000000 --- a/Plugins/MetaXR/Source/OculusXRHMD/Public/OculusXRAssetDirectory.h +++ /dev/null @@ -1,18 +0,0 @@ -// @lint-ignore-every LICENSELINT -// Copyright Epic Games, Inc. All Rights Reserved. - -#pragma once - -#include "CoreMinimal.h" -#include "UObject/SoftObjectPath.h" - -class FOculusAssetDirectory -{ -public: -#if WITH_EDITORONLY_DATA - OCULUSXRHMD_API static void LoadForCook(); - OCULUSXRHMD_API static void ReleaseAll(); -#endif - - static FSoftObjectPath AssetListing[]; -}; diff --git a/Plugins/MetaXR/Source/OculusXRHMD/Public/OculusXREventComponent.h b/Plugins/MetaXR/Source/OculusXRHMD/Public/OculusXREventComponent.h deleted file mode 100644 index 0f44905..0000000 --- a/Plugins/MetaXR/Source/OculusXRHMD/Public/OculusXREventComponent.h +++ /dev/null @@ -1,34 +0,0 @@ -// @lint-ignore-every LICENSELINT -// Copyright Epic Games, Inc. All Rights Reserved. -// OculusEventComponent.h: Component to handle receiving events from Oculus HMDs - -#pragma once - -#include "CoreMinimal.h" -#include "UObject/ObjectMacros.h" -#include "Components/ActorComponent.h" -#include "OculusXREventComponent.generated.h" - -UCLASS(Blueprintable, meta = (BlueprintSpawnableComponent), ClassGroup = OculusXRHMD) -class OCULUSXRHMD_API UOculusXREventComponent : public UActorComponent -{ - GENERATED_BODY() - -public: - DECLARE_DYNAMIC_MULTICAST_DELEGATE_TwoParams(FOculusDisplayRefreshRateChangedEventDelegate, float, fromRefreshRate, float, toRefreshRate); - DECLARE_DYNAMIC_MULTICAST_DELEGATE_OneParam(FOculusEyeTrackingStateChangedEventDelegate, bool, bEyeTrackingOn); - - UPROPERTY(BlueprintAssignable) - FOculusDisplayRefreshRateChangedEventDelegate OculusDisplayRefreshRateChanged; - - UPROPERTY(BlueprintAssignable) - FOculusEyeTrackingStateChangedEventDelegate OculusEyeTrackingStateChanged; - - void OnRegister() override; - void OnUnregister() override; - -private: - /** Native handlers that get registered with the actual FCoreDelegates, and then proceed to broadcast to the delegates above */ - void OculusDisplayRefreshRateChanged_Handler(float fromRefresh, float toRefresh) { OculusDisplayRefreshRateChanged.Broadcast(fromRefresh, toRefresh); } - void OculusEyeTrackingStateChanged_Handler(bool bEyeTrackingOn) { OculusEyeTrackingStateChanged.Broadcast(bEyeTrackingOn); } -}; diff --git a/Plugins/MetaXR/Source/OculusXRHMD/Public/OculusXRFunctionLibrary.h b/Plugins/MetaXR/Source/OculusXRHMD/Public/OculusXRFunctionLibrary.h deleted file mode 100644 index e07d07b..0000000 --- a/Plugins/MetaXR/Source/OculusXRHMD/Public/OculusXRFunctionLibrary.h +++ /dev/null @@ -1,531 +0,0 @@ -// @lint-ignore-every LICENSELINT -// Copyright Epic Games, Inc. All Rights Reserved. - -#pragma once -#include "CoreMinimal.h" -#include "OculusXRHMDTypes.h" -#include "UObject/ObjectMacros.h" -#include "Kismet/BlueprintFunctionLibrary.h" -#include "IOculusXRHMDModule.h" -#include "OculusXRFunctionLibrary.generated.h" - -namespace OculusXRHMD -{ - class FOculusXRHMD; - class IOculusXRFunctionLibrary - { - public: - virtual void GetPose(FRotator& DeviceRotation, FVector& DevicePosition, FVector& NeckPosition) = 0; - virtual void SetBaseRotationAndBaseOffsetInMeters(FRotator Rotation, FVector BaseOffsetInMeters, EOrientPositionSelector::Type Options) = 0; - virtual void GetBaseRotationAndBaseOffsetInMeters(FRotator& OutRotation, FVector& OutBaseOffsetInMeters) = 0; - virtual void GetRawSensorData(FVector& AngularAcceleration, FVector& LinearAcceleration, FVector& AngularVelocity, FVector& LinearVelocity, float& TimeInSeconds, EOculusXRTrackedDeviceType DeviceType) = 0; - virtual bool IsDeviceTracked(EOculusXRTrackedDeviceType DeviceType) = 0; - virtual void GetSuggestedCpuAndGpuPerformanceLevels(EOculusXRProcessorPerformanceLevel& CpuPerfLevel, EOculusXRProcessorPerformanceLevel& GpuPerfLevel) = 0; - virtual void SetSuggestedCpuAndGpuPerformanceLevels(EOculusXRProcessorPerformanceLevel CpuPerfLevel, EOculusXRProcessorPerformanceLevel GpuPerfLevel) = 0; - virtual bool GetUserProfile(FOculusXRHmdUserProfile& Profile) = 0; - virtual void SetBaseRotationAndPositionOffset(FRotator BaseRot, FVector PosOffset, EOrientPositionSelector::Type Options) = 0; - virtual void GetBaseRotationAndPositionOffset(FRotator& OutRot, FVector& OutPosOffset) = 0; - virtual void AddLoadingSplashScreen(class UTexture2D* Texture, FVector TranslationInMeters, FRotator Rotation, FVector2D SizeInMeters, FRotator DeltaRotation, bool bClearBeforeAdd) = 0; - virtual void ClearLoadingSplashScreens() = 0; - virtual bool HasInputFocus() = 0; - virtual bool HasSystemOverlayPresent() = 0; - virtual void GetGPUUtilization(bool& IsGPUAvailable, float& GPUUtilization) = 0; - virtual float GetGPUFrameTime() = 0; - virtual void GetPerformanceMetrics(FOculusXRPerformanceMetrics& PerformanceMetrics) = 0; - - - virtual EOculusXRFoveatedRenderingMethod GetFoveatedRenderingMethod() = 0; - virtual void SetFoveatedRenderingMethod(EOculusXRFoveatedRenderingMethod Method) = 0; - virtual void SetFoveatedRenderingLevel(EOculusXRFoveatedRenderingLevel level, bool isDynamic) = 0; - virtual EOculusXRFoveatedRenderingLevel GetFoveatedRenderingLevel() = 0; - virtual bool GetEyeTrackedFoveatedRenderingSupported() = 0; - virtual FString GetDeviceName() = 0; - virtual EOculusXRDeviceType GetDeviceType() = 0; - virtual EOculusXRControllerType GetControllerType(EControllerHand deviceHand) = 0; - virtual TArray GetAvailableDisplayFrequencies() = 0; - virtual float GetCurrentDisplayFrequency() = 0; - virtual void SetDisplayFrequency(float RequestedFrequency) = 0; - virtual void EnablePositionTracking(bool bPositionTracking) = 0; - virtual void EnableOrientationTracking(bool bOrientationTracking) = 0; - virtual void SetColorScaleAndOffset(FLinearColor ColorScale, FLinearColor ColorOffset, bool bApplyToAllLayers) = 0; - virtual class IStereoLayers* GetStereoLayers() = 0; - virtual bool IsGuardianConfigured() = 0; - virtual bool IsGuardianDisplayed() = 0; - virtual TArray GetGuardianPoints(EOculusXRBoundaryType BoundaryType, bool UsePawnSpace /* = false */) = 0; - virtual FVector GetGuardianDimensions(EOculusXRBoundaryType BoundaryType) = 0; - virtual FTransform GetPlayAreaTransform() = 0; - virtual FOculusXRGuardianTestResult GetPointGuardianIntersection(const FVector Point, EOculusXRBoundaryType BoundaryType) = 0; - virtual FOculusXRGuardianTestResult GetNodeGuardianIntersection(EOculusXRTrackedDeviceType DeviceType, EOculusXRBoundaryType BoundaryType) = 0; - virtual void SetGuardianVisibility(bool GuardianVisible) = 0; - virtual bool GetSystemHmd3DofModeEnabled() = 0; - virtual EOculusXRColorSpace GetHmdColorDesc() = 0; - virtual void SetClientColorDesc(EOculusXRColorSpace ColorSpace) = 0; - virtual void SetLocalDimmingOn(bool LocalDimmingOn) = 0; - virtual bool IsPassthroughSupported() = 0; - virtual bool IsColorPassthroughSupported() = 0; - virtual void StartEnvironmentDepth() = 0; - virtual void StopEnvironmentDepth() = 0; - virtual bool IsEnvironmentDepthStarted() = 0; - virtual void SetEnvironmentDepthHandRemoval(bool RemoveHands) = 0; - virtual void SetXROcclusionsMode(UObject* WorldContextObject, EOculusXROcclusionsMode Mode) = 0; - virtual void SetEyeBufferSharpenType(EOculusXREyeBufferSharpenType EyeBufferSharpenType) = 0; - virtual bool IsPassthroughRecommended() = 0; - virtual void GetOpenXRInstanceProcAddrFunc(void** Func) = 0; - virtual void GetNativeOpenXRHandles(uint64_t* OutXrInstance, uint64_t* OutXrSession) = 0; - virtual void GetAppSpace(uint64_t* OutAppSpace) = 0; - virtual void GetNextPredictedDisplayTime(uint64_t* NextPredictedDisplayTime) = 0; - virtual void RegisterOpenXrEventHandler(void (*OpenXrEventHandler)(void* data, void* context), void* Context) = 0; - virtual void UnregisterOpenXrEventHandler(void (*OpenXrEventHandler)(void* data, void* context)) = 0; - }; -} // namespace OculusXRHMD - -UCLASS() -class OCULUSXRHMD_API UOculusXRFunctionLibrary : public UBlueprintFunctionLibrary -{ - GENERATED_UCLASS_BODY() - - /** - * Grabs the current orientation and position for the HMD. If positional tracking is not available, DevicePosition will be a zero vector - * - * @param DeviceRotation (out) The device's current rotation - * @param DevicePosition (out) The device's current position, in its own tracking space - * @param NeckPosition (out) The estimated neck position, calculated using NeckToEye vector from User Profile. Same coordinate space as DevicePosition. - * @param bUseOrienationForPlayerCamera (in) Should be set to 'true' if the orientation is going to be used to update orientation of the camera manually. - * @param bUsePositionForPlayerCamera (in) Should be set to 'true' if the position is going to be used to update position of the camera manually. - * @param PositionScale (in) The 3D scale that will be applied to position. - */ - UFUNCTION(BlueprintPure, Category = "OculusLibrary") - static void GetPose(FRotator& DeviceRotation, FVector& DevicePosition, FVector& NeckPosition, bool bUseOrienationForPlayerCamera = false, bool bUsePositionForPlayerCamera = false, const FVector PositionScale = FVector::ZeroVector); - - /** - * Reports raw sensor data. If HMD doesn't support any of the parameters then it will be set to zero. - * - * @param AngularAcceleration [Deprecated] (out) Angular acceleration in radians per second per second. - * @param LinearAcceleration [Deprecated] (out) Acceleration in meters per second per second. - * @param AngularVelocity (out) Angular velocity in radians per second. - * @param LinearVelocity (out) Velocity in meters per second. - * @param TimeInSeconds (out) Time when the reported IMU reading took place, in seconds. - */ - UFUNCTION(BlueprintPure, Category = "OculusLibrary") - static void GetRawSensorData(FVector& AngularAcceleration, FVector& LinearAcceleration, FVector& AngularVelocity, FVector& LinearVelocity, float& TimeInSeconds, EOculusXRTrackedDeviceType DeviceType = EOculusXRTrackedDeviceType::HMD); - - /** - * Returns if the device is currently tracked by the runtime or not. - */ - UFUNCTION(BlueprintPure, Category = "OculusLibrary") - static bool IsDeviceTracked(EOculusXRTrackedDeviceType DeviceType); - - /** - * Set the CPU and GPU levels as hints to the Oculus device (Deprecated). - */ - UFUNCTION(BlueprintCallable, Category = "OculusLibrary", meta = (DeprecatedFunction, DeprecatedMessage = "Deprecated. Please use Get/SetSuggestedCpuAndGpuPerformanceLevels instead")) - static void SetCPUAndGPULevels(int CPULevel, int GPULevel); - - /** - * Get the suggested CPU and GPU levels to the Oculus device. - */ - UFUNCTION(BlueprintCallable, Category = "OculusLibrary") - static void GetSuggestedCpuAndGpuPerformanceLevels(EOculusXRProcessorPerformanceLevel& CpuPerfLevel, EOculusXRProcessorPerformanceLevel& GpuPerfLevel); - - /** - * Set the suggested CPU and GPU levels to the Oculus device. - */ - UFUNCTION(BlueprintCallable, Category = "OculusLibrary") - static void SetSuggestedCpuAndGpuPerformanceLevels(EOculusXRProcessorPerformanceLevel CpuPerfLevel, EOculusXRProcessorPerformanceLevel GpuPerfLevel); - - /** - * Returns current user profile. - * - * @param Profile (out) Structure to hold current user profile. - * @return (boolean) True, if user profile was acquired. - */ - UFUNCTION(BlueprintPure, Category = "OculusLibrary") - static bool GetUserProfile(FOculusXRHmdUserProfile& Profile); - - /** - * Sets 'base rotation' - the rotation that will be subtracted from - * the actual HMD orientation. - * Sets base position offset (in meters). The base position offset is the distance from the physical (0, 0, 0) position - * to current HMD position (bringing the (0, 0, 0) point to the current HMD position) - * Note, this vector is set by ResetPosition call; use this method with care. - * The axis of the vector are the same as in Unreal: X - forward, Y - right, Z - up. - * - * @param Rotation (in) Rotator object with base rotation - * @param BaseOffsetInMeters (in) the vector to be set as base offset, in meters. - * @param Options (in) specifies either position, orientation or both should be set. - */ - UFUNCTION(BlueprintCallable, Category = "OculusLibrary") - static void SetBaseRotationAndBaseOffsetInMeters(FRotator Rotation, FVector BaseOffsetInMeters, EOrientPositionSelector::Type Options); - - /** - * Returns current base rotation and base offset. - * The base offset is currently used base position offset, previously set by the - * ResetPosition or SetBasePositionOffset calls. It represents a vector that translates the HMD's position - * into (0,0,0) point, in meters. - * The axis of the vector are the same as in Unreal: X - forward, Y - right, Z - up. - * - * @param OutRotation (out) Rotator object with base rotation - * @param OutBaseOffsetInMeters (out) base position offset, vector, in meters. - */ - UFUNCTION(BlueprintPure, Category = "OculusLibrary") - static void GetBaseRotationAndBaseOffsetInMeters(FRotator& OutRotation, FVector& OutBaseOffsetInMeters); - - /** - * Scales the HMD position that gets added to the virtual camera position. - * - * @param PosScale3D (in) the scale to apply to the HMD position. - */ - UFUNCTION(BlueprintCallable, Category = "OculusLibrary", meta = (DeprecatedFunction, DeprecationMessage = "This feature is no longer supported.")) - static void SetPositionScale3D(FVector PosScale3D) {} - - /** - * Sets 'base rotation' - the rotation that will be subtracted from - * the actual HMD orientation. - * The position offset might be added to current HMD position, - * effectively moving the virtual camera by the specified offset. The addition - * occurs after the HMD orientation and position are applied. - * - * @param BaseRot (in) Rotator object with base rotation - * @param PosOffset (in) the vector to be added to HMD position. - * @param Options (in) specifies either position, orientation or both should be set. - */ - UFUNCTION(BlueprintCallable, Category = "OculusLibrary", meta = (DeprecatedFunction, DeprecationMessage = "A hack, proper camera positioning should be used")) - static void SetBaseRotationAndPositionOffset(FRotator BaseRot, FVector PosOffset, EOrientPositionSelector::Type Options); - - /** - * Returns current base rotation and position offset. - * - * @param OutRot (out) Rotator object with base rotation - * @param OutPosOffset (out) the vector with previously set position offset. - */ - UFUNCTION(BlueprintCallable, Category = "OculusLibrary", meta = (DeprecatedFunction, DeprecationMessage = "A hack, proper camera positioning should be used")) - static void GetBaseRotationAndPositionOffset(FRotator& OutRot, FVector& OutPosOffset); - - /** - * Adds loading splash screen with parameters - * - * @param Texture (in) A texture asset to be used for the splash. - * @param TranslationInMeters (in) Initial translation of the center of the splash screen (in meters). - * @param Rotation (in) Initial rotation of the splash screen, with the origin at the center of the splash screen. - * @param SizeInMeters (in) Size, in meters, of the quad with the splash screen. - * @param DeltaRotation (in) Incremental rotation, that is added each 2nd frame to the quad transform. The quad is rotated around the center of the quad. - * @param bClearBeforeAdd (in) If true, clears splashes before adding a new one. - */ - UFUNCTION(BlueprintCallable, Category = "OculusLibrary", meta = (DeprecatedFunction, DeprecationMessage = "Use Add Loading Screen Splash from the Head Mounted Display Loading Screen functions instead.")) - static void AddLoadingSplashScreen(class UTexture2D* Texture, FVector TranslationInMeters, FRotator Rotation, FVector2D SizeInMeters = FVector2D(1.0f, 1.0f), FRotator DeltaRotation = FRotator::ZeroRotator, bool bClearBeforeAdd = false); - - /** - * Removes all the splash screens. - */ - UFUNCTION(BlueprintCallable, Category = "OculusLibrary", meta = (DeprecatedFunction, DeprecationMessage = "Use Clear Loading Screen Splashes from the Head Mounted Display Loading Screen functions instead.")) - static void ClearLoadingSplashScreens(); - - /** - * Returns true, if the app has input focus. - */ - UFUNCTION(BlueprintPure, Category = "OculusLibrary") - static bool HasInputFocus(); - - /** - * Returns true, if the system overlay is present. - */ - UFUNCTION(BlueprintPure, Category = "OculusLibrary") - static bool HasSystemOverlayPresent(); - - /** - * Returns the GPU utilization availability and value - */ - UFUNCTION(BlueprintPure, Category = "OculusLibrary") - static void GetGPUUtilization(bool& IsGPUAvailable, float& GPUUtilization); - - /** - * Returns the GPU frame time on supported mobile platforms (Go for now) - */ - UFUNCTION(BlueprintPure, Category = "OculusLibrary") - static float GetGPUFrameTime(); - - /** - * Returns the performance metrics - */ - UFUNCTION(BlueprintPure, Category = "OculusLibrary") - static void GetPerformanceMetrics(FOculusXRPerformanceMetrics& PerformanceMetrics); - - /** - * Returns the foveated rendering method currently being used. - */ - UFUNCTION(BlueprintCallable, Category = "OculusLibrary") - static EOculusXRFoveatedRenderingMethod GetFoveatedRenderingMethod(); - - /** - * Set the requested foveated rendering method. Changes to foveated rendering persist across map changes. - */ - UFUNCTION(BlueprintCallable, Category = "OculusLibrary") - static void SetFoveatedRenderingMethod(EOculusXRFoveatedRenderingMethod Method); - - /** - * Returns the current multiresolution level - */ - UFUNCTION(BlueprintPure, Category = "OculusLibrary") - static EOculusXRFoveatedRenderingLevel GetFoveatedRenderingLevel(); - - /** - * Set the requested foveated rendering level for the next frame, and whether FFR's level is now dynamic or not. Changes to foveated rendering persist across map changes. - */ - UFUNCTION(BlueprintCallable, Category = "OculusLibrary") - static void SetFoveatedRenderingLevel(EOculusXRFoveatedRenderingLevel level, bool isDynamic); - - /** - * Returns whether eye-tracked foveated rendering is supported or not - */ - UFUNCTION(BlueprintCallable, Category = "OculusLibrary") - static bool GetEyeTrackedFoveatedRenderingSupported(); - - /** - * Returns the current device's name - */ - UE_DEPRECATED(4.22, "UOculusXRFunctionLibrary::GetDeviceName has been deprecated and no longer functions as before. Please use the enum-based GetDeviceType instead.") - UFUNCTION(BlueprintPure, Category = "OculusLibrary", meta = (DeprecatedFunction, DeprecationMessage = "UOculusXRFunctionLibrary::GetDeviceName has been deprecated and no longer functions as before. Please use the enum-based GetDeviceType instead.")) - static FString GetDeviceName(); - - UFUNCTION(BlueprintPure, Category = "OculusLibrary") - static EOculusXRDeviceType GetDeviceType(); - - /** - * Returns the current controller's type - * @param deviceHand (in) The hand to get the position from - */ - UFUNCTION(BlueprintPure, Category = "OculusLibrary") - static EOculusXRControllerType GetControllerType(EControllerHand deviceHand); - - /** - * Returns the current available frequencies - */ - UFUNCTION(BlueprintPure, Category = "OculusLibrary") - static TArray GetAvailableDisplayFrequencies(); - - /** - * Returns the current display frequency - */ - UFUNCTION(BlueprintPure, Category = "OculusLibrary") - static float GetCurrentDisplayFrequency(); - - /** - * Sets the requested display frequency - */ - UFUNCTION(BlueprintCallable, Category = "OculusLibrary") - static void SetDisplayFrequency(float RequestedFrequency); - - /** - * Enables/disables positional tracking on devices that support it. - */ - UFUNCTION(BlueprintCallable, Category = "OculusLibrary") - static void EnablePositionTracking(bool bPositionTracking); - - /** - * Enables/disables orientation tracking on devices that support it. - */ - UFUNCTION(BlueprintCallable, Category = "OculusLibrary") - static void EnableOrientationTracking(bool bOrientationTracking); - - /** - * Set the Color Scale/Offset - */ - UFUNCTION(BlueprintCallable, Category = "OculusLibrary") - static void SetColorScaleAndOffset(FLinearColor ColorScale, FLinearColor ColorOffset, bool bApplyToAllLayers = false); - - /** - * Returns true if system headset is in 3dof mode - */ - UFUNCTION(BlueprintPure, Category = "OculusLibrary") - static bool GetSystemHmd3DofModeEnabled(); - - /** - * Returns the color space of the target HMD - */ - UFUNCTION(BlueprintPure, Category = "OculusLibrary") - static EOculusXRColorSpace GetHmdColorDesc(); - - /** - * Sets the target HMD to do color space correction to a specific color space - */ - UFUNCTION(BlueprintCallable, Category = "OculusLibrary") - static void SetClientColorDesc(EOculusXRColorSpace ColorSpace); - - /** - * Turns on or off local dimming - */ - UFUNCTION(BlueprintCallable, Category = "OculusLibrary") - static void SetLocalDimmingOn(bool LocalDimmingOn); - - /** - * Checks if passthrough is supported - */ - UFUNCTION(BlueprintCallable, Category = "OculusLibrary") - static bool IsPassthroughSupported(); - - /** - * Checks if color passthrough is supported - */ - UFUNCTION(BlueprintCallable, Category = "OculusLibrary") - static bool IsColorPassthroughSupported(); - - /** - * Create the environment depth texture swap chain and start receiving - * depth texture every frame until stopped. - */ - UFUNCTION(BlueprintCallable, Category = "OculusLibrary") - static void StartEnvironmentDepth(); - - /** - * Destroy the environment depth texture swap chain and stop receiving - * new depth textures every frame. Call this when environment depth is - * no longer needed to free up resources. - */ - UFUNCTION(BlueprintCallable, Category = "OculusLibrary") - static void StopEnvironmentDepth(); - - /** - * Returns true if StartEnvironmentDepth() has been called and is currently running. - * If called right after calling StartEnvironmentDepth() it'll return false as it needs some time for EnvironmentDepth to start - */ - UFUNCTION(BlueprintPure, Category = "OculusLibrary") - static bool IsEnvironmentDepthStarted(); - - /** - * When hands removal is enabled and hand tracking is active, the region - * of the depth texture which contains the hands will be replaced with - * the best estimate for depth behind the hands. - */ - UFUNCTION(BlueprintCallable, Category = "OculusLibrary") - static void SetEnvironmentDepthHandRemoval(bool RemoveHands); - - /** - * Sets the occlusions mode using environment depth. When occlusions are enabled - * virtual objects that are behind physical objects will be occluded so that - * the sense of immersion is preserved. - */ - UFUNCTION(BlueprintCallable, Category = "OculusLibrary", meta = (WorldContext = "WorldContextObject")) - static void SetXROcclusionsMode(UObject* WorldContextObject, EOculusXROcclusionsMode Mode); - - /** - * Sets the eyebuffer sharpen type. This amplifies contrast and fine details. - */ - UFUNCTION(BlueprintCallable, Category = "OculusLibrary") - static void SetEyeBufferSharpenType(EOculusXREyeBufferSharpenType EyeBufferSharpenType); - - /** - * Get a system recommendation on whether Passthrough should be active. - * When set, it is recommended for apps which optionally support an MR experience - * with Passthrough to default to that mode. - * Currently, this is determined based on whether the user has Passthrough active in the home environment. - */ - UFUNCTION(BlueprintCallable, Category = "OculusLibrary") - static bool IsPassthroughRecommended(); - - /** - * Returns IStereoLayers interface to work with overlays. - */ - static class IStereoLayers* GetStereoLayers(); - - - /* GUARDIAN API */ - /** - * Returns true if the Guardian Outer Boundary is being displayed - */ - UE_DEPRECATED(4.27, "UOculusXRFunctionLibrary::IsGuardianDisplayed has been deprecated.") - UFUNCTION(BlueprintPure, Category = "OculusLibrary|Guardian") - static bool IsGuardianDisplayed(); - - /* GUARDIAN API */ - /** - * Returns true if the Guardian has been set up by the user, false if the user is in "seated" mode and has not set up a play space. - */ - UFUNCTION(BlueprintPure, Category = "OculusLibrary|Guardian") - static bool IsGuardianConfigured(); - - /** - * Returns the list of points in UE world space of the requested Boundary Type - * @param BoundaryType (in) An enum representing the boundary type requested, either Outer Boundary (exact guardian bounds) or PlayArea (rectangle inside the Outer Boundary) - * @param UsePawnSpace (in) Boolean indicating to return the points in world space or pawn space - */ - UFUNCTION(BlueprintPure, Category = "OculusLibrary|Guardian") - static TArray GetGuardianPoints(EOculusXRBoundaryType BoundaryType, bool UsePawnSpace = false); - - /** - * Returns the dimensions in UE world space of the requested Boundary Type - * @param BoundaryType (in) An enum representing the boundary type requested, either Outer Boundary (exact guardian bounds) or PlayArea (rectangle inside the Outer Boundary) - */ - UFUNCTION(BlueprintPure, Category = "OculusLibrary|Guardian") - static FVector GetGuardianDimensions(EOculusXRBoundaryType BoundaryType); - - /** - * Returns the transform of the play area rectangle, defining its position, rotation and scale to apply to a unit cube to match it with the play area. - */ - UFUNCTION(BlueprintPure, Category = "OculusLibrary|Guardian") - static FTransform GetPlayAreaTransform(); - - /** - * Get the intersection result between a UE4 coordinate and a guardian boundary - * @param Point (in) Point in UE space to test against guardian boundaries - * @param BoundaryType (in) An enum representing the boundary type requested, either Outer Boundary (exact guardian bounds) or PlayArea (rectangle inside the Outer Boundary) - */ - UE_DEPRECATED(4.27, "UOculusXRFunctionLibrary::GetPointGuardianIntersection has been deprecated.") - UFUNCTION(BlueprintCallable, Category = "OculusLibrary|Guardian") - static FOculusXRGuardianTestResult GetPointGuardianIntersection(const FVector Point, EOculusXRBoundaryType BoundaryType); - - /** - * Get the intersection result between a tracked device (HMD or controllers) and a guardian boundary - * @param DeviceType (in) Tracked Device type to test against guardian boundaries - * @param BoundaryType (in) An enum representing the boundary type requested, either Outer Boundary (exact guardian bounds) or PlayArea (rectangle inside the Outer Boundary) - */ - UE_DEPRECATED(4.27, "UOculusXRFunctionLibrary::GetNodeGuardianIntersection has been deprecated.") - UFUNCTION(BlueprintCallable, Category = "OculusLibrary|Guardian") - static FOculusXRGuardianTestResult GetNodeGuardianIntersection(EOculusXRTrackedDeviceType DeviceType, EOculusXRBoundaryType BoundaryType); - - /** - * Forces the runtime to render guardian at all times or not - * @param GuardianVisible (in) True will display guardian, False will hide it - */ - UE_DEPRECATED(4.27, "UOculusXRFunctionLibrary::SetGuardianVisibility has been deprecated.") - UFUNCTION(BlueprintCallable, Category = "OculusLibrary|Guardian") - static void SetGuardianVisibility(bool GuardianVisible); - - /** When player triggers the Guardian boundary */ - DECLARE_MULTICAST_DELEGATE_OneParam(FOculusGuardianTriggeredEvent, FOculusXRGuardianTestResult); - - /** When player returns within outer bounds */ - DECLARE_MULTICAST_DELEGATE(FOculusGuardianReturnedEvent); - - /** - * For outer boundary only. Devs can bind delegates via something like: BoundaryComponent->OnOuterBoundaryTriggered.AddDynamic(this, &UCameraActor::PauseGameForBoundarySystem) where - * PauseGameForBoundarySystem() takes a TArray parameter. - */ - // UPROPERTY(BlueprintAssignable, Category = "Input|OculusLibrary|Guardian") - // static FOculusGuardianTriggeredEvent OnGuardianTriggered; - - /** For outer boundary only. Devs can bind delegates via something like: BoundaryComponent->OnOuterBoundaryReturned.AddDynamic(this, &UCameraActor::ResumeGameForBoundarySystem) */ - // UPROPERTY(BlueprintAssignable, Category = "OculusLibrary|Guardian") - // FOculusGuardianReturnedEvent OnGuardianReturned; - - static void ShutdownXRFunctionLibrary(); - -protected: - static class OculusXRHMD::FOculusXRHMD* GetOculusXRHMD(); - static TSharedPtr GetOculusXRFunctionImpl(); - static TSharedPtr FunctionLibraryImpl; - -private: - friend class UMRUKSubsytem; - - static void GetOpenXRInstanceProcAddrFunc(void** func); - - static void GetNativeOpenXRHandles(uint64_t* OutXrInstance, uint64_t* OutXrSession); - - static void GetAppSpace(uint64_t* OutAppSpace); - - static void GetNextPredictedDisplayTime(uint64_t* NextPredictedDisplayTime); - - static void RegisterOpenXrEventHandler(void (*OpenXrEventHandler)(void* data, void* context), void* Context); - - static void UnregisterOpenXrEventHandler(void (*OpenXrEventHandler)(void* data, void* context)); -}; diff --git a/Plugins/MetaXR/Source/OculusXRHMD/Public/OculusXRHMDRuntimeSettings.h b/Plugins/MetaXR/Source/OculusXRHMD/Public/OculusXRHMDRuntimeSettings.h deleted file mode 100644 index 3f336c3..0000000 --- a/Plugins/MetaXR/Source/OculusXRHMD/Public/OculusXRHMDRuntimeSettings.h +++ /dev/null @@ -1,268 +0,0 @@ -// @lint-ignore-every LICENSELINT -// Copyright Epic Games, Inc. All Rights Reserved. - -#pragma once - -#include "CoreMinimal.h" -#include "UObject/Object.h" -#include "OculusXRHMDTypes.h" -#include "OculusXRFunctionLibrary.h" -#include "OculusXRHMDRuntimeSettings.generated.h" - -UENUM() -enum class EOculusXRSupportedDevices : uint8 -{ - /** 0 was the deprecated Meta Quest */ - Quest2 = 1 UMETA(DisplayName = "Meta Quest 2"), - QuestPro = 2 UMETA(DisplayName = "Meta Quest Pro"), - Quest3 = 3 UMETA(DisplayName = "Meta Quest 3"), - Quest3S = 4 UMETA(DisplayName = "Meta Quest 3S") -}; - -/** - * Implements the settings for the OculusVR plugin. - */ -UCLASS(config = Engine, defaultconfig) -class OCULUSXRHMD_API UOculusXRHMDRuntimeSettings : public UObject -{ - GENERATED_UCLASS_BODY() - -public: - /** Configure System Splash Screen background type. To configure Splash Image go to Project Settings > Platforms > Android > Launch Image. */ - UPROPERTY(config, EditAnywhere, Category = "System SplashScreen", meta = (DisplayName = "System Splash Screen Background", EditCondition = "!bInsightPassthroughEnabled")) - ESystemSplashBackgroundType SystemSplashBackground; - - /** Whether the Splash screen is enabled. */ - UPROPERTY(config, EditAnywhere, Category = "Engine SplashScreen") - bool bAutoEnabled; - - /** An array of splash screen descriptors listing textures to show and their positions. */ - UPROPERTY(config, EditAnywhere, Category = "Engine SplashScreen") - TArray SplashDescs; - - /** - This selects the XR API that the engine will use. If unsure, OVRPlugin OpenXR is the recommended API. - The OpenXR plugin must also be enabled to use Native OpenXR. - */ - UPROPERTY(config, EditAnywhere, Category = General, meta = (DisplayName = "XR API", ConfigRestartRequired = true)) - EOculusXRXrApi XrApi; - - /** The target color space */ - UPROPERTY(config, EditAnywhere, Category = General) - EOculusXRColorSpace ColorSpace; - - /** Whether the controller hand poses align to the Meta XR pose definitions or the OpenXR pose definitions */ - UPROPERTY(config, EditAnywhere, Category = General, meta = (EditCondition = "XrApi != EOculusXRXrApi::NativeOpenXR")) - EOculusXRControllerPoseAlignment ControllerPoseAlignment; - - /** Whether the app uses emulated thumbstick dpad inputs (ex: thumbstick up) when using Epic's Native OpenXR. */ - UPROPERTY(config, EditAnywhere, Category = General, meta = (EditCondition = "XrApi == EOculusXRXrApi::NativeOpenXR")) - bool bThumbstickDpadEmulationEnabled; - - /** Whether Dash is supported by the app, which will keep the app in foreground when the User presses the oculus button (needs the app to handle input focus loss!) */ - UPROPERTY(config, EditAnywhere, Category = PC) - bool bSupportsDash; - - /** Whether the app's depth buffer is shared with the Rift Compositor, for layer (including Dash) compositing, PTW, and potentially more. */ - UPROPERTY(config, EditAnywhere, Category = PC) - bool bCompositesDepth; - - /** Computes mipmaps for the eye buffers every frame, for a higher quality distortion */ - UPROPERTY(config, EditAnywhere, Category = PC) - bool bHQDistortion; - - /** When running multiple player windows in a single process with VRPreview, this option determins whether to set the current active PIE to the primary one on the fly.*/ - UPROPERTY(config, EditAnywhere, Category = "PC|Multiplayer Options", meta = (DisplayName = "Set Active PIE To Primary")) - bool bSetActivePIEToPrimary; - - /** When running multiple player windows in a single process with VRPreview, this option determins whether to set the PIE specified by CVar vr.PrimaryPIEIndex to the primary one on the fly.*/ - UPROPERTY(config, EditAnywhere, Category = "PC|Multiplayer Options", meta = (DisplayName = "Set CVar PIE To Primary")) - bool bSetCVarPIEToPrimary; - - /** - In case of multiple players testing, when the current player is inactive, disabling this setting will make sure the current player does NOT update headpose until it is active again. - This setting is not limited to multiple players testing and it will be applied to any VRPreview PIE window. - */ - UPROPERTY(config, EditAnywhere, Category = "PC|Multiplayer Options", meta = (DisplayName = "Enable head pose update for inactive VRPreview player.")) - bool bUpdateHeadPoseForInactivePlayer; - - /** - In case of multiple players testing, when the primary player, which is connected to the HMD, is changed, this setting determins how to restore the previous player's head pose - */ - UPROPERTY(config, EditAnywhere, Category = "PC|Multiplayer Options", meta = (DisplayName = "MultiPlayer Pose Restore Type.")) - EOculusXRMPPoseRestoreType MPPoseRestoreType; - - /** Maximum allowed pixel density. */ - UPROPERTY(config, EditAnywhere, Category = "Mobile|Dynamic Resolution", DisplayName = "Enable Dynamic Resolution. (min, max) can be set in device profile.") - bool bDynamicResolution; - - /** Minimum allowed pixel density. */ - UPROPERTY(config, meta = (DeprecatedProperty, DeprecationMessage = "Use DynamicResolutionSettings instead.")) - float PixelDensityMin; - - /** Maximum allowed pixel density. */ - UPROPERTY(config, meta = (DeprecatedProperty, DeprecationMessage = "Use DynamicResolutionSettings instead.")) - float PixelDensityMax; - - /** Default CPU level controlling CPU frequency on the mobile device */ - UPROPERTY(config, meta = (DeprecatedProperty, DeprecationMessage = "Use Blueprint Function Get/SetSuggestedCpuAndGpuPerformanceLevels instead.")) - int CPULevel_DEPRECATED; - - /** Default GPU level controlling GPU frequency on the mobile device */ - UPROPERTY(config, meta = (DeprecatedProperty, DeprecationMessage = "Use Blueprint Function Get/SetSuggestedCpuAndGpuPerformanceLevels instead.")) - int GPULevel_DEPRECATED; - - /** Select supported Meta Quest Devices */ - UPROPERTY(config, EditAnywhere, Category = Mobile, meta = (DisplayName = "Supported Meta Quest devices")) - TArray SupportedDevices; - - /** Suggested CPU perf level when application starts on Oculus Quest */ - UPROPERTY(config, EditAnywhere, Category = Mobile) - EOculusXRProcessorPerformanceLevel SuggestedCpuPerfLevel; - - /** Suggested GPU perf level when application starts on Oculus Quest */ - UPROPERTY(config, EditAnywhere, Category = Mobile) - EOculusXRProcessorPerformanceLevel SuggestedGpuPerfLevel; - - /** Foveated rendering method */ - UPROPERTY(config, EditAnywhere, Category = "Mobile|Foveated Rendering", meta = (EditCondition = "XrApi == EOculusXRXrApi::OVRPluginOpenXR")) - EOculusXRFoveatedRenderingMethod FoveatedRenderingMethod; - - /** Foveated rendering level (maximum level for dynamic foveated rendering) - * A higher foveated rendering level improves GPU performance at the cost of a blurrier periphery - */ - UPROPERTY(config, EditAnywhere, Category = "Mobile|Foveated Rendering") - EOculusXRFoveatedRenderingLevel FoveatedRenderingLevel; - - /** Whether foveated rendering levels will change dynamically based on performance headroom or not (up to the set foveated rendering level) */ - UPROPERTY(config, EditAnywhere, Category = "Mobile|Foveated Rendering") - bool bDynamicFoveatedRendering; - - /** Whether eye tracked foveated rendering can be used with the app. */ - UPROPERTY(config, EditAnywhere, Category = "Mobile|Foveated Rendering", meta = (EditCondition = "XrApi == EOculusXRXrApi::OVRPluginOpenXR")) - bool bSupportEyeTrackedFoveatedRendering; - - /** Whether the app's depth buffer is shared with the compositor to enable depth testing against other layers. - Mobile depth composition has performance overhead both on the engine (for resolving depth) and on the compositor (for depth testing against other layers) */ - UPROPERTY(config, EditAnywhere, Category = Mobile, meta = (DisplayName = "Composite Depth")) - bool bCompositeDepthMobile; - - /** If enabled the app will be focus aware. This will keep the app in foreground when the User presses the oculus button (needs the app to handle input focus loss!) */ - UPROPERTY(config, EditAnywhere, Category = Mobile, meta = (EditCondition = "false")) - bool bFocusAware; - - /** [Experimental]Enable Late latching for reducing HMD and controller latency, improve tracking prediction quality, multiview and vulkan must be enabled for this feature. */ - UPROPERTY(config, EditAnywhere, Category = Mobile) - bool bLateLatching; - - /** If enabled the app will use the Oculus system keyboard for input fields. This requires that the app be focus aware. */ - UPROPERTY(config, EditAnywhere, Category = Mobile) - bool bRequiresSystemKeyboard; - - /** Whether controllers and/or hands can be used with the app */ - UPROPERTY(config, EditAnywhere, Category = Mobile) - EOculusXRHandTrackingSupport HandTrackingSupport; - - /** Note that a higher tracking frequency will reserve some performance headroom from the application's budget. */ - UPROPERTY(config, EditAnywhere, Category = Mobile) - EOculusXRHandTrackingFrequency HandTrackingFrequency; - - /** The version of hand tracking algorithm */ - UPROPERTY(config, EditAnywhere, Category = Mobile) - EOculusXRHandTrackingVersion HandTrackingVersion; - - /** Whether passthrough functionality can be used with the app */ - UPROPERTY(config, EditAnywhere, Category = Mobile, meta = (DisplayName = "Passthrough Enabled")) - bool bInsightPassthroughEnabled; - - /** Whether Spatial Anchors can be used with the app */ - UPROPERTY(config, EditAnywhere, Category = Mobile, meta = (DisplayName = "Anchor Support")) - bool bAnchorSupportEnabled; - - /** Whether Spatial Anchor Sharing can be used with the app */ - UPROPERTY(config, EditAnywhere, Category = Mobile, meta = (DisplayName = "Anchor Sharing")) - bool bAnchorSharingEnabled; - - /** Whether Scene can be used with the app */ - UPROPERTY(config, EditAnywhere, Category = Mobile, meta = (DisplayName = "Scene Support")) - bool bSceneSupportEnabled; - - /** Can boundary visibility be toggled in app */ - UPROPERTY(config, EditAnywhere, Category = Mobile, meta = (DisplayName = "Boundary Visibility Support")) - bool bBoundaryVisibilitySupportEnabled; - - /** Should the guardian boundary visibility be suppressed by default */ - UPROPERTY(config, EditAnywhere, Category = Mobile, meta = (DisplayName = "Default Is Boundary Visibility Suppressed")) - bool bDefaultBoundaryVisibilitySuppressed; - - /** Whether Colocation Sessions can be used with the app */ - UPROPERTY(config, EditAnywhere, Category = Mobile, meta = (DisplayName = "Colocation Sessions")) - bool bColocationSessionsEnabled; - - /** Whether body tracking functionality can be used with the app */ - UPROPERTY(config, EditAnywhere, Category = Mobile, meta = (DisplayName = "Body Tracking Enabled", EditCondition = "XrApi == EOculusXRXrApi::OVRPluginOpenXR")) - bool bBodyTrackingEnabled; - - /** Select a Body Tracking Fidelity */ - UPROPERTY(config, EditAnywhere, Category = Mobile, meta = (DisplayName = "Body Tracking Fidelity", EditCondition = "XrApi == EOculusXRXrApi::OVRPluginOpenXR")) - EOculusXRHMDBodyTrackingFidelity BodyTrackingFidelity; - - /** Select a Body Tracking joint set */ - UPROPERTY(config, EditAnywhere, Category = Mobile, meta = (DisplayName = "Body Tracking Joint Set", EditCondition = "XrApi == EOculusXRXrApi::OVRPluginOpenXR")) - EOculusXRHMDBodyJointSet BodyTrackingJointSet; - - /** Whether eye tracking functionality can be used with the app */ - UPROPERTY(config, EditAnywhere, Category = Mobile, meta = (DisplayName = "Eye Tracking Enabled", EditCondition = "XrApi == EOculusXRXrApi::OVRPluginOpenXR")) - bool bEyeTrackingEnabled; - - /** Whether face tracking functionality can be used with the app */ - UPROPERTY(config, EditAnywhere, Category = Mobile, meta = (DisplayName = "Face Tracking Enabled", EditCondition = "XrApi == EOculusXRXrApi::OVRPluginOpenXR")) - bool bFaceTrackingEnabled; - - /** Select preffered Face Tracking data sources */ - UPROPERTY(config, EditAnywhere, Category = Mobile, meta = (DisplayName = "Face Tracking Source", EditCondition = "XrApi == EOculusXRXrApi::OVRPluginOpenXR")) - TSet FaceTrackingDataSource; - - /** Whether face tracking returns visemes */ - UPROPERTY(config, EditAnywhere, Category = Mobile, meta = (DisplayName = "Face Tracking Visemes Enabled", EditCondition = "XrApi == EOculusXRXrApi::OVRPluginOpenXR")) - bool bFaceTrackingVisemesEnabled; - - /** On supported Oculus mobile platforms, copy compiled .so directly to device. Allows updating compiled code without rebuilding and installing an APK. */ - UPROPERTY(config, EditAnywhere, Category = Mobile, meta = (DisplayName = "Deploy compiled .so directly to device")) - bool bDeploySoToDevice; - - /** Keep previously deployed device contents. Allows cook-on-the-fly to reuse assets from previous runs. */ - UPROPERTY(config, EditAnywhere, Category = Mobile, meta = (DisplayName = "Enable Iterative Cook on the Fly")) - bool bIterativeCookOnTheFly; - - /** Whether experimental features listed below can be used with the app. */ - UPROPERTY(config, EditAnywhere, Category = Experimental) - bool bSupportExperimentalFeatures; - - /** If selected, will increase the frequency of one processor at the expense of decreasing the frequency of the other on supported devices. */ - UPROPERTY(config, EditAnywhere, Category = Mobile, meta = (DisplayName = "Processor Favor")) - EProcessorFavor ProcessorFavor; - - /** Whether Tile Turn Off is enabled in app */ - UPROPERTY(config, EditAnywhere, Category = Mobile, meta = (DisplayName = "Tile Turn Off", EditCondition = "false")) - bool bTileTurnOffEnabled; - - /** Whether Shader Binary Cache is enabled in app */ - UPROPERTY(config, EditAnywhere, Category = Mobile, meta = (DisplayName = "Shader Binary Cache")) - bool bSupportSBC; - - /** Shader Binary Cache path used to save shader cache*/ - UPROPERTY(config, EditAnywhere, Category = Mobile, meta = (DisplayName = "Shader Binary Cache Path", EditCondition = "bSupportSBC")) - FString SBCPath; - -private: -#if WITH_EDITOR - virtual bool CanEditChange(const FProperty* InProperty) const override; - virtual void PostEditChangeProperty(struct FPropertyChangedEvent& PropertyChangedEvent) override; -#endif // WITH_EDITOR - virtual void PostInitProperties() override; - - void LoadFromIni(); - void RenameProperties(); - void MigratePixelDensityRange(); -}; diff --git a/Plugins/MetaXR/Source/OculusXRHMD/Public/OculusXRHMDTypes.h b/Plugins/MetaXR/Source/OculusXRHMD/Public/OculusXRHMDTypes.h deleted file mode 100644 index fb69d48..0000000 --- a/Plugins/MetaXR/Source/OculusXRHMD/Public/OculusXRHMDTypes.h +++ /dev/null @@ -1,436 +0,0 @@ -// @lint-ignore-every LICENSELINT -// Copyright Epic Games, Inc. All Rights Reserved. - -#pragma once - -#include "CoreMinimal.h" -#include "UObject/ObjectMacros.h" -#include "RHI.h" -#include "RHIResources.h" -#include "Engine/Texture2D.h" -#include "UObject/SoftObjectPath.h" -#include "OculusXRHMDTypes.generated.h" - -static const TCHAR* VAR_PixelDensityMin = TEXT("r.Oculus.DynamicResolution.PixelDensityMin"); -static const TCHAR* VAR_PixelDensityMax = TEXT("r.Oculus.DynamicResolution.PixelDensityMax"); -/* Tracked device types corresponding to ovrTrackedDeviceType enum*/ -UENUM(BlueprintType) -enum class EOculusXRTrackedDeviceType : uint8 -{ - None UMETA(DisplayName = "No Devices"), - HMD UMETA(DisplayName = "HMD"), - LTouch UMETA(DisplayName = "Left Hand"), - RTouch UMETA(DisplayName = "Right Hand"), - Touch UMETA(DisplayName = "All Hands"), - DeviceObjectZero UMETA(DisplayName = "DeviceObject Zero"), - All UMETA(DisplayName = "All Devices") -}; - -USTRUCT(BlueprintType, meta = (DisplayName = "HMD User Profile Data Field")) -struct FOculusXRHmdUserProfileField -{ - GENERATED_USTRUCT_BODY() - - UPROPERTY(BlueprintReadWrite, Category = "Input|HeadMountedDisplay") - FString FieldName; - - UPROPERTY(BlueprintReadWrite, Category = "Input|HeadMountedDisplay") - FString FieldValue; - - FOculusXRHmdUserProfileField() {} - FOculusXRHmdUserProfileField(const FString& Name, const FString& Value) - : FieldName(Name), FieldValue(Value) {} -}; - -USTRUCT(BlueprintType, meta = (DisplayName = "HMD User Profile Data")) -struct FOculusXRHmdUserProfile -{ - GENERATED_USTRUCT_BODY() - - /** Name of the user's profile. */ - UPROPERTY(BlueprintReadWrite, Category = "Input|HeadMountedDisplay") - FString Name; - - /** Gender of the user ("male", "female", etc). */ - UPROPERTY(BlueprintReadWrite, Category = "Input|HeadMountedDisplay") - FString Gender; - - /** Height of the player, in meters */ - UPROPERTY(BlueprintReadWrite, Category = "Input|HeadMountedDisplay") - float PlayerHeight; - - /** Height of the player, in meters */ - UPROPERTY(BlueprintReadWrite, Category = "Input|HeadMountedDisplay") - float EyeHeight; - - /** Interpupillary distance of the player, in meters */ - UPROPERTY(BlueprintReadWrite, Category = "Input|HeadMountedDisplay") - float IPD; - - /** Neck-to-eye distance, in meters. X - horizontal, Y - vertical. */ - UPROPERTY(BlueprintReadWrite, Category = "Input|HeadMountedDisplay") - FVector2D NeckToEyeDistance; - - UPROPERTY(BlueprintReadWrite, Category = "Input|HeadMountedDisplay") - TArray ExtraFields; - - FOculusXRHmdUserProfile() - : PlayerHeight(0.f), EyeHeight(0.f), IPD(0.f), NeckToEyeDistance(FVector2D::ZeroVector) {} -}; - -UENUM(BlueprintType) -enum class EOculusXRFoveatedRenderingMethod : uint8 -{ - FixedFoveatedRendering = 0, - EyeTrackedFoveatedRendering = 1, -}; - -UENUM(BlueprintType) -enum class EOculusXRFoveatedRenderingLevel : uint8 -{ - Off = 0, - Low = 1, - Medium = 2, - High = 3, - // High foveation setting with more detail toward the bottom of the view and more foveation near the top - HighTop = 4 -}; - -/* Guardian boundary types*/ -UENUM(BlueprintType) -enum class EOculusXRBoundaryType : uint8 -{ - Boundary_Outer UMETA(DisplayName = "Outer Boundary"), - Boundary_PlayArea UMETA(DisplayName = "Play Area"), -}; - -UENUM(BlueprintType) -enum class EOculusXRColorSpace : uint8 -{ - /// The default value from GetHmdColorSpace until SetClientColorDesc is called. Only valid on PC, and will be remapped to Quest on Mobile - Unknown = 0, - /// No color correction, not recommended for production use. See documentation for more info - Unmanaged = 1, - /// Color space for standardized color across all Oculus HMDs with D65 white point - Rec_2020 = 2, - /// Rec. 709 is used on Oculus Go and shares the same primary color coordinates as sRGB - Rec_709 = 3, - /// Oculus Rift CV1 uses a unique color space, see documentation for more info - Rift_CV1 = 4 UMETA(DisplayName = "Rift CV1"), - /// Oculus Rift S uses a unique color space, see documentation for more info - Rift_S = 5, - /// Oculus Quest's native color space is slightly different than Rift CV1 - Quest = 6 UMETA(DisplayName = "Quest 1"), - /// DCI-P3 color space. See documentation for more details - P3 = 7 UMETA(DisplayName = "P3 (Recommended)"), - /// Similar to sRGB but with deeper greens using D65 white point - Adobe_RGB = 8, -}; - -/* - * Hand tracking settings. Please check https://developer.oculus.com/documentation/unreal/unreal-hand-tracking/ - * for detailed information. - */ -UENUM(BlueprintType) -enum class EOculusXRHandTrackingSupport : uint8 -{ - ControllersOnly, - ControllersAndHands, - HandsOnly, -}; - -UENUM(BlueprintType) -enum class EOculusXRHandTrackingFrequency : uint8 -{ - LOW, - HIGH, - MAX, -}; - -UENUM(BlueprintType) -enum class EOculusXRHandTrackingVersion : uint8 -{ - Default, - V1, - V2, -}; - -UENUM(BlueprintType) -enum class EOculusXRProcessorPerformanceLevel : uint8 -{ - PowerSavings = 0 UMETA(DisplayName = "PowerSavings", ToolTip = "Usually used in non-XR section (head-locked / static screen), during which power savings are to be prioritized"), - SustainedLow = 1 UMETA(DisplayName = "SustainedLow", ToolTip = "App enters a low and stable complexity section, during which reducing power is more important than occasional late rendering frames"), - SustainedHigh = 2 UMETA(DisplayName = "SustainedHigh", ToolTip = "Let XR Runtime to perform consistent XR compositing and frame rendering within a thermally sustainable range"), - Boost = 3 UMETA(DisplayName = "Boost(*)", ToolTip = "Allow XR Runtime to step up beyond the thermally sustainable range for short period. (Currently equivalent to SustainedHigh and not recommended to be used on Quest)") -}; - -UENUM(BlueprintType) -enum class EOculusXRDeviceType : uint8 -{ - // mobile HMDs - OculusMobile_Deprecated0 = 0, - OculusQuest_Deprecated, - OculusQuest2, - MetaQuestPro, - MetaQuest3, - MetaQuest3S, - - // PC HMDs - Rift = 100, - Rift_S, - Quest_Link_Deprecated, - Quest2_Link, - MetaQuestProLink, - MetaQuest3Link, - MetaQuest3SLink, - - // default - OculusUnknown = 200, -}; - -UENUM(BlueprintType) -enum class EOculusXRControllerType : uint8 -{ - None = 0, - MetaQuestTouch = 1, - MetaQuestTouchPro = 2, - MetaQuestTouchPlus = 3, - Unknown = 0x7f, -}; - -UENUM(BlueprintType) -enum class EOculusXRXrApi : uint8 -{ - OVRPluginOpenXR = 0 UMETA(DisplayName = "Oculus OVRPlugin + OpenXR backend (current recommended)", ToolTip = "Oculus plugin integration using OpenXR backend on both Mobile and PC. All new features will ship on backend for the forseeable future."), - - NativeOpenXR = 1 UMETA(DisplayName = "Epic Native OpenXR with Oculus vendor extensions", ToolTip = "Disable Legacy Oculus in favor of the native OpenXR implementation, with Oculus vendor extensions. Must enable the OpenXR plugin. This will be where Epic focuses XR development going forward. Oculus OpenXR extensions may be moved into a separate plugin (or plugins) in the future to improve modularity. The features supported by OpenXR are listed in the OpenXR specification on khronos.org, and the features supported by a given runtime can be verified with the \"OpenXR Explorer\" application on GitHub."), -}; - -/* - * Information about relationships between a triggered boundary (EOculusXRBoundaryType::Boundary_Outer or - * EOculusXRBoundaryType::Boundary_PlayArea) and a device or point in the world. - * All dimensions, points, and vectors are returned in Unreal world coordinate space. - */ -USTRUCT(BlueprintType) -struct FOculusXRGuardianTestResult -{ - GENERATED_BODY() - - /** Is there a triggering interaction between the device/point and specified boundary? */ - UPROPERTY(EditAnywhere, BlueprintReadOnly, Category = "Boundary Test Result") - bool IsTriggering = false; - - /** Device type triggering boundary (EOculusXRTrackedDeviceType::None if BoundaryTestResult corresponds to a point rather than a device) */ - UPROPERTY(EditAnywhere, BlueprintReadOnly, Category = "Boundary Test Result") - EOculusXRTrackedDeviceType DeviceType = EOculusXRTrackedDeviceType::None; - - /** Distance of device/point to surface of boundary specified by BoundaryType */ - UPROPERTY(EditAnywhere, BlueprintReadOnly, Category = "Boundary Test Result") - float ClosestDistance = 0.0f; - - /** Closest point on surface corresponding to specified boundary */ - UPROPERTY(EditAnywhere, BlueprintReadOnly, Category = "Boundary Test Result") - FVector ClosestPoint = FVector(0.0f); - - /** Normal of closest point */ - UPROPERTY(EditAnywhere, BlueprintReadOnly, Category = "Boundary Test Result") - FVector ClosestPointNormal = FVector(0.0f, 0.0f, 1.0f); -}; - -UENUM() -enum class EOculusXRControllerPoseAlignment : uint8 -{ - Default = 0 UMETA(ToolTip = "Default pose alignment used in all versions of the Meta XR plugin. Recommended pose for compatibility with previous assets designed for the Meta XR plugin."), - - Grip = 1 UMETA(ToolTip = "Grip pose alignment as defined by OpenXR. Use this for cross-plugin compatibility with assets designed for the native OpenXR grip pose."), - - Aim = 2 UMETA(ToolTip = "Aim pose alignment as defined by OpenXR. Use this for cross-plugin compatibility with assets designed for the native OpenXR aim pose."), -}; - -USTRUCT() -struct FOculusXRSplashDesc -{ - GENERATED_USTRUCT_BODY() - - UPROPERTY(config, EditAnywhere, Category = Settings, meta = (AllowedClasses = "/Script/Engine.Texture", ToolTip = "Texture to display")) - FSoftObjectPath TexturePath; - - UPROPERTY(config, EditAnywhere, Category = Settings, meta = (ToolTip = "transform of center of quad (meters).")) - FTransform TransformInMeters; - - UPROPERTY(config, EditAnywhere, Category = Settings, meta = (ToolTip = "Dimensions in meters.")) - FVector2D QuadSizeInMeters; - - UPROPERTY(config, EditAnywhere, Category = Settings, meta = (ToolTip = "A delta rotation that will be added each rendering frame (half rate of full vsync).")) - FQuat DeltaRotation; - - UPROPERTY(config, EditAnywhere, Category = Settings, meta = (ToolTip = "Texture offset amount from the top left corner.")) - FVector2D TextureOffset; - - UPROPERTY(config, EditAnywhere, Category = Settings, meta = (ToolTip = "Texture scale.")) - FVector2D TextureScale; - - UPROPERTY(config, EditAnywhere, Category = Settings, meta = (ToolTip = "Whether the splash layer uses it's alpha channel.")) - bool bNoAlphaChannel; - - // Runtime data - UTexture* LoadingTexture; - FTextureRHIRef LoadedTexture; - bool bIsDynamic; - - FOculusXRSplashDesc() - : TransformInMeters(FVector(4.0f, 0.f, 0.f)) - , QuadSizeInMeters(3.f, 3.f) - , DeltaRotation(FQuat::Identity) - , TextureOffset(0.0f, 0.0f) - , TextureScale(1.0f, 1.0f) - , bNoAlphaChannel(false) - , LoadingTexture(nullptr) - , LoadedTexture(nullptr) - , bIsDynamic(false) - { - } - - bool operator==(const FOculusXRSplashDesc& d) const - { - return TexturePath == d.TexturePath && TransformInMeters.Equals(d.TransformInMeters) && QuadSizeInMeters == d.QuadSizeInMeters && DeltaRotation.Equals(d.DeltaRotation) && TextureOffset == d.TextureOffset && TextureScale == d.TextureScale && bNoAlphaChannel == d.bNoAlphaChannel && LoadingTexture == d.LoadingTexture && LoadedTexture == d.LoadedTexture && bIsDynamic == d.bIsDynamic; - } -}; - -UENUM(BlueprintType) -enum class EOculusXROcclusionsMode : uint8 -{ - /// Environment depth occlusions disabled. - Disabled = 0, - /// Hard occlusions, this is deprecated. Use soft occlusions instead. - HardOcclusions_Deprecated = 1, - /// Soft occlusions, shows soft edges between the real and virtual world. - SoftOcclusions = 2, -}; - -UENUM(BlueprintType) -enum class EOculusXREyeBufferSharpenType : uint8 -{ - /// No Sharpening - SLST_None UMETA(DisplayName = "No Sharpening"), - - /// Normal Sharpening - SLST_Normal UMETA(DisplayName = "Normal Sharpening"), - - /// Quality Sharpening - SLST_Quality UMETA(DisplayName = "Quality Sharpening"), - - /// Auto Filtering: Runtime automatically chooses the appropriate sharpening filter - SLST_Auto UMETA(DisplayName = "Auto Filtering"), - - SLST_MAX, -}; - -UENUM() -enum class EProcessorFavor : int8 -{ - FavorEqually = 0 UMETA(DisplayName = "Favor Equally"), - FavorCPU = 1 UMETA(DisplayName = "Favor CPU"), - FavorGPU = 2 UMETA(DisplayName = "Favor GPU"), -}; - -UENUM(BlueprintType) -enum class EOculusXRHMDBodyTrackingFidelity : uint8 -{ - Unset = 0 UMETA(Hidden), - Low = 1, - High = 2, -}; - -UENUM(BlueprintType) -enum class EOculusXRHMDBodyJointSet : uint8 -{ - UpperBody = 0, - FullBody = 1, -}; - -UENUM() -enum class EFaceTrackingDataSourceConfig : int8 -{ - Visual = 0 UMETA(DisplayName = "Visual"), - Audio = 1 UMETA(DisplayName = "Audio"), - MAX = 2 UMETA(Hidden), -}; - -UENUM() -enum class ESystemSplashBackgroundType : int8 -{ - Black = 0 UMETA(DisplayName = "Black"), - Contextual = 1 UMETA(DisplayName = "Passthrough (Contextual)"), -}; - -USTRUCT(BlueprintType, meta = (DisplayName = "Oculus Performance Metrics")) -struct FOculusXRPerformanceMetrics -{ - GENERATED_USTRUCT_BODY() - - /** App CPU Time (ms) */ - UPROPERTY(EditAnywhere, BlueprintReadOnly, Category = "Performance Metrics") - float AppCpuTime; - - /** App GPU Time (ms) */ - UPROPERTY(EditAnywhere, BlueprintReadOnly, Category = "Performance Metrics") - float AppGpuTime; - - /** Compositor CPU Time (ms) */ - UPROPERTY(EditAnywhere, BlueprintReadOnly, Category = "Performance Metrics") - float ComCpuTime; - - /** Compositor GPU Time (ms) */ - UPROPERTY(EditAnywhere, BlueprintReadOnly, Category = "Performance Metrics") - float ComGpuTime; - - /** Compositor Dropped Frames */ - UPROPERTY(EditAnywhere, BlueprintReadOnly, Category = "Performance Metrics") - int DroppedFrames; - - /** System GPU Util % */ - UPROPERTY(EditAnywhere, BlueprintReadOnly, Category = "Performance Metrics") - float GpuUtil; - - /** System CPU Util Avg % */ - UPROPERTY(EditAnywhere, BlueprintReadOnly, Category = "Performance Metrics") - float CpuUtilAvg; - - /** System CPU Util Worst % */ - UPROPERTY(EditAnywhere, BlueprintReadOnly, Category = "Performance Metrics") - float CpuUtilWorst; - - /** Compositor SpaceWarp Mode: 0: Disabled; 1: Enabled */ - UPROPERTY(EditAnywhere, BlueprintReadOnly, Category = "Performance Metrics") - int ComSpaceWarpMode; - - /** CPU Core Util % */ - UPROPERTY(EditAnywhere, BlueprintReadOnly, Category = "Performance Metrics") - TArray CpuCoreUtil; - - FOculusXRPerformanceMetrics() - : AppCpuTime(0.f) - , AppGpuTime(0.f) - , ComCpuTime(0.f) - , ComGpuTime(0.f) - , DroppedFrames(0) - , GpuUtil(0.f) - , CpuUtilAvg(0.f) - , CpuUtilWorst(0.f) - , ComSpaceWarpMode(0) - { - } -}; - -UENUM(BlueprintType) -enum class EOculusXRMPPoseRestoreType : uint8 -{ - /// DONOT restore head and controller poses - Disabled = 0 UMETA(DisplayName = "Disabled"), - /// Only restore head and controller position - PositionOnly = 1 UMETA(DisplayName = "Restore Position Only"), - /// Restore head and controller position and rotation - PositionAndRotation = 2 UMETA(DisplayName = "Restore Position And Rotation"), -}; - diff --git a/Plugins/MetaXR/Source/OculusXRHMD/Public/OculusXRMultiPlayerTestingSubsystem.h b/Plugins/MetaXR/Source/OculusXRHMD/Public/OculusXRMultiPlayerTestingSubsystem.h deleted file mode 100644 index 9e1c9e8..0000000 --- a/Plugins/MetaXR/Source/OculusXRHMD/Public/OculusXRMultiPlayerTestingSubsystem.h +++ /dev/null @@ -1,57 +0,0 @@ -// Copyright (c) Meta Platforms, Inc. and affiliates. - -#pragma once - -#include "CoreMinimal.h" -#include "Tickable.h" -#include "Subsystems/EngineSubsystem.h" -#include "IOculusXRHMDModule.h" -#include "Engine/GameViewportClient.h" - -#include "OculusXRMultiPlayerTestingSubsystem.generated.h" - -/** - * The rule processor handles registration and querying of rules - */ -UCLASS() -class OCULUSXRHMD_API UOculusXRMultiPlayerTestingSubsystem final : public UEngineSubsystem, public FTickableGameObject -{ - GENERATED_BODY() - -public: - /** - * Initialize the subsystem. USubsystem override - */ - virtual void Initialize(FSubsystemCollectionBase& Collection) override; - - /** - * De-initializes the subsystem. USubsystem override - */ - virtual void Deinitialize() override; - - //~ Begin FTickableGameObject interface - virtual bool IsTickableInEditor() const { return true; } - virtual ETickableTickType GetTickableTickType() const override; - virtual bool IsAllowedToTick() const override; - virtual void Tick(float DeltaTime) override; - TStatId GetStatId() const override { RETURN_QUICK_DECLARE_CYCLE_STAT(UOculusXRMultiPlayerTestingSubsystem, STATGROUP_Tickables); } - //~ End FTickableGameObject interface - -#if PLATFORM_WINDOWS - void SwitchPrimaryPIE(UGameViewportClient* InViewport, TOptional PrimaryPIEIndex); - void SwitchPrimaryPIE_MultiProcess(int PrimaryPIEIndex); -#if WITH_EDITOR - void SwitchPrimaryPIE_SingleProcess(); - void SwitchPrimaryPIE(FWorldContext* OldPrimaryWorld, FWorldContext* NewPrimaryWorld); - void SwitchPrimaryPIE_SingleProcess(UGameViewportClient* InViewport, TOptional PrimaryPIEIndex); -#endif // WITH_EDITOR -#endif // PLATFORM_WINDOWS - -private: - bool IsMultiPlayerTestingSupported() const; -#if PLATFORM_WINDOWS - void GetUnrealEditorProcs(TArray& ProcIds); - bool IsMultiPlayerTestingEnabled(bool& bSingleProcessMode); - int32 NumClients; -#endif // PLATFORM_WINDOWS -}; diff --git a/Plugins/MetaXR/Source/OculusXRHMD/Public/OculusXRPassthroughLayerShapes.h b/Plugins/MetaXR/Source/OculusXRHMD/Public/OculusXRPassthroughLayerShapes.h deleted file mode 100644 index 16920c2..0000000 --- a/Plugins/MetaXR/Source/OculusXRHMD/Public/OculusXRPassthroughLayerShapes.h +++ /dev/null @@ -1,171 +0,0 @@ -// Copyright (c) Meta Platforms, Inc. and affiliates. - -#pragma once - -#include "Misc/EngineVersionComparison.h" - -#include "StereoLayerShapes.h" -#include "OculusXRPassthroughMesh.h" -#include "OculusXRPassthroughLayerShapes.generated.h" - -DECLARE_DYNAMIC_MULTICAST_DELEGATE(FOculusXRPassthrough_LayerResumed); - -/** - * The color mapping technique which can be applied to a passthrough layer. - * @see https://developers.meta.com/horizon/documentation/unreal/unreal-customize-passthrough-color-mapping/ for more details. - */ -UENUM() -enum EOculusXRColorMapType -{ - /** No color map is applied */ - ColorMapType_None = 0 UMETA(DisplayName = "None"), - - /** Map input color to an RGB color, optionally with brightness/constrast adjustment or posterization applied */ - ColorMapType_GrayscaleToColor = 1 UMETA(DisplayName = "Grayscale To Color"), - - /** Map input color to a grayscale color, optionally with brightness/constrast adjustment or posterization applied */ - ColorMapType_Grayscale = 2 UMETA(DisplayName = "Grayscale"), - - /** Adjust brightness and contrast */ - ColorMapType_ColorAdjustment = 3 UMETA(DisplayName = "Color Adjustment"), - - /** Apply a color look-up table (LUT), which maps each RGB input color into an arbitrary RGB(A) in the passthrough image stream */ - ColorMapType_ColorLut = 4 UMETA(DisplayName = "Color LUT"), - - /** Apply the blend between two color LUTs to the passthrough image stream. */ - ColorMapType_ColorLut_Interpolated = 5 UMETA(DisplayName = "Interpolated Color LUT"), - - ColorMapType_MAX = 255, -}; - -UENUM() -enum EOculusXRPassthroughLayerOrder -{ - /** Layer is rendered on top of scene */ - PassthroughLayerOrder_Overlay = 0 UMETA(DisplayName = "Overlay"), - - /** Layer is rendered under scene */ - PassthroughLayerOrder_Underlay = 1 UMETA(DisplayName = "Underlay"), - - PassthroughLayerOrder_MAX = 255, -}; - -struct OCULUSXRHMD_API FColorLutDesc -{ - FColorLutDesc(); - - FColorLutDesc(const TArray& InColorLuts, float InWeight); - - float Weight; - TArray ColorLuts; -}; - -struct OCULUSXRHMD_API FEdgeStyleParameters -{ -public: - FEdgeStyleParameters(); - - FEdgeStyleParameters( - bool bEnableEdgeColor, - bool bEnableColorMap, - float TextureOpacityFactor, - float Brightness, - float Contrast, - float Posterize, - float Saturation, - FLinearColor EdgeColor, - FLinearColor ColorScale, - FLinearColor ColorOffset, - EOculusXRColorMapType InColorMapType, - const TArray& InColorMapGradient, - const FColorLutDesc& InLutDesc); - - bool bEnableEdgeColor; - bool bEnableColorMap; - bool bUseColorLuts; - float TextureOpacityFactor; - float Brightness; - float Contrast; - float Posterize; - float Saturation; - FLinearColor EdgeColor; - FLinearColor ColorScale; - FLinearColor ColorOffset; - EOculusXRColorMapType ColorMapType; - TArray ColorMapData; - FColorLutDesc ColorLutDesc; - -private: - /** Generates the corresponding color map based on given color map type */ - TArray GenerateColorMapData(EOculusXRColorMapType InColorMapType, const TArray& InColorMapGradient); - - /** Generates a grayscale to color color map based on given gradient --> It also applies the color scale and offset */ - TArray GenerateMonoToRGBA(const TArray& InGradient, const TArray& InColorMapData); - - /** Generates a grayscale color map with given Brightness/Contrast/Posterize settings */ - TArray GenerateMonoBrightnessContrastPosterizeMap(); - - /** Generates a luminance based colormap from the the Brightness/Contrast */ - TArray GenerateBrightnessContrastSaturationColorMap(); -}; - -#if UE_VERSION_OLDER_THAN(5, 3, 0) -#define OCULUSXRHMD_API_CLASS OCULUSXRHMD_API -#define OCULUSXRHMD_API_MEMBER -#else -#define OCULUSXRHMD_API_CLASS -#define OCULUSXRHMD_API_MEMBER OCULUSXRHMD_API -#endif - -class OCULUSXRHMD_API_CLASS FReconstructedLayer : public IStereoLayerShape -{ -public: - OCULUSXRHMD_API_MEMBER static const FName ShapeName; - virtual FName GetShapeName() override { return ShapeName; } - virtual IStereoLayerShape* Clone() const override { return new FReconstructedLayer(*this); } - -public: - FReconstructedLayer(){}; - FReconstructedLayer(const FEdgeStyleParameters& EdgeStyleParameters, EOculusXRPassthroughLayerOrder PassthroughLayerOrder) - : EdgeStyleParameters(EdgeStyleParameters), PassthroughLayerOrder(PassthroughLayerOrder){}; - FEdgeStyleParameters EdgeStyleParameters; - EOculusXRPassthroughLayerOrder PassthroughLayerOrder; -}; - -struct FUserDefinedGeometryDesc -{ - FUserDefinedGeometryDesc(const FString& MeshName, OculusXRHMD::FOculusPassthroughMeshRef PassthroughMesh, const FTransform& Transform, bool bUpdateTransform) - : MeshName(MeshName) - , PassthroughMesh(PassthroughMesh) - , Transform(Transform) - , bUpdateTransform(bUpdateTransform){}; - - FString MeshName; - OculusXRHMD::FOculusPassthroughMeshRef PassthroughMesh; - FTransform Transform; - bool bUpdateTransform; -}; - -class OCULUSXRHMD_API_CLASS FUserDefinedLayer : public IStereoLayerShape -{ -public: - OCULUSXRHMD_API_MEMBER static const FName ShapeName; - virtual FName GetShapeName() override { return ShapeName; } - virtual IStereoLayerShape* Clone() const override { return new FUserDefinedLayer(*this); } - -public: - FUserDefinedLayer(){}; - FUserDefinedLayer(TArray InUserGeometryList, const FEdgeStyleParameters& EdgeStyleParameters, EOculusXRPassthroughLayerOrder PassthroughLayerOrder) - : UserGeometryList{} - , EdgeStyleParameters(EdgeStyleParameters) - , PassthroughLayerOrder(PassthroughLayerOrder) - { - UserGeometryList = InUserGeometryList; - } - - TArray UserGeometryList; - FEdgeStyleParameters EdgeStyleParameters; - EOculusXRPassthroughLayerOrder PassthroughLayerOrder; - -private: -}; diff --git a/Plugins/MetaXR/Source/OculusXRHMD/Public/OculusXRPassthroughMesh.h b/Plugins/MetaXR/Source/OculusXRHMD/Public/OculusXRPassthroughMesh.h deleted file mode 100644 index 0ac2d5c..0000000 --- a/Plugins/MetaXR/Source/OculusXRHMD/Public/OculusXRPassthroughMesh.h +++ /dev/null @@ -1,30 +0,0 @@ -// Copyright (c) Meta Platforms, Inc. and affiliates. - -#pragma once - -#include "CoreMinimal.h" -#include "Templates/RefCounting.h" - -namespace OculusXRHMD -{ - - class FOculusPassthroughMesh : public FRefCountedObject - { - public: - FOculusPassthroughMesh(const TArray& InVertices, const TArray& InTriangles) - : Vertices(InVertices) - , Triangles(InTriangles) - { - } - - const TArray& GetVertices() const { return Vertices; }; - const TArray& GetTriangles() const { return Triangles; }; - - private: - TArray Vertices; - TArray Triangles; - }; - - typedef TRefCountPtr FOculusPassthroughMeshRef; - -} // namespace OculusXRHMD diff --git a/Plugins/MetaXR/Source/OculusXRHMD/Public/OculusXRQPL.h b/Plugins/MetaXR/Source/OculusXRHMD/Public/OculusXRQPL.h deleted file mode 100644 index fb60663..0000000 --- a/Plugins/MetaXR/Source/OculusXRHMD/Public/OculusXRQPL.h +++ /dev/null @@ -1,75 +0,0 @@ -// Copyright (c) Meta Platforms, Inc. and affiliates. - -#pragma once - -#include "Misc/DateTime.h" - -namespace OculusXRTelemetry -{ - enum class OCULUSXRHMD_API EAction : short - { - Start = 1, - Success = 2, - Fail = 3, - Cancel = 4, - DrawComplete = 5, - OnResume = 6 - }; - - class OCULUSXRHMD_API FTelemetryInstanceKey - { - public: - constexpr FTelemetryInstanceKey(const int InstanceKey) - : Value(InstanceKey){}; - - constexpr int GetValue() const { return Value; } - - private: - int Value; - }; - - constexpr FTelemetryInstanceKey DefaultTelemetryInstance = FTelemetryInstanceKey(0); - - class OCULUSXRHMD_API FTelemetryTimestamp - { - static constexpr int OneHundredNsToMs = 1000; - - public: - FTelemetryTimestamp(FDateTime Timestamp) - : TotalMs(Timestamp.GetTicks() / OneHundredNsToMs){}; - constexpr FTelemetryTimestamp(int64 TimestampMs) - : TotalMs(TimestampMs){}; - - constexpr int64 GetTimestamp() const { return TotalMs; } - - private: - int64 TotalMs; - }; - - constexpr FTelemetryTimestamp AutoSetTimestamp = FTelemetryTimestamp(-1); - - struct OCULUSXRHMD_API FEmptyBackend - { - static bool MarkerStart(int, FTelemetryInstanceKey, FTelemetryTimestamp) { return false; }; - static bool MarkerEnd(int, EAction, FTelemetryInstanceKey, FTelemetryTimestamp) { return false; }; - static bool MarkerPoint(int, const char*, FTelemetryInstanceKey, FTelemetryTimestamp) { return false; }; - static bool MarkerPointCached(int, int, FTelemetryInstanceKey, FTelemetryTimestamp) { return false; }; - static bool MarkerAnnotation(int, const char*, const char*, FTelemetryInstanceKey) { return false; }; - static bool CreateMarkerHandle(const char*, int*) { return false; }; - static bool DestroyMarkerHandle(int) { return false; }; - static bool OnEditorShutdown() { return false; }; - static constexpr bool IsNullBackend() { return true; }; - }; - struct OCULUSXRHMD_API FQPLBackend - { - static bool MarkerStart(int MarkerId, FTelemetryInstanceKey InstanceKey, FTelemetryTimestamp Timestamp); - static bool MarkerEnd(int MarkerId, EAction Action, FTelemetryInstanceKey InstanceKey, FTelemetryTimestamp Timestamp); - static bool MarkerPoint(int MarkerId, const char* Name, FTelemetryInstanceKey InstanceKey, FTelemetryTimestamp Timestamp); - static bool MarkerPointCached(int MarkerId, int NameHandle, FTelemetryInstanceKey InstanceKey, FTelemetryTimestamp Timestamp); - static bool MarkerAnnotation(int MarkerId, const char* AnnotationKey, const char* AnnotationValue, FTelemetryInstanceKey InstanceKey); - static bool CreateMarkerHandle(const char* Name, int* NameHandle); - static bool DestroyMarkerHandle(int NameHandle); - static bool OnEditorShutdown(); - static constexpr bool IsNullBackend() { return false; }; - }; -} // namespace OculusXRTelemetry diff --git a/Plugins/MetaXR/Source/OculusXRHMD/Public/OculusXRStereoLayersFlagsSupplier.h b/Plugins/MetaXR/Source/OculusXRHMD/Public/OculusXRStereoLayersFlagsSupplier.h deleted file mode 100644 index 3e5c258..0000000 --- a/Plugins/MetaXR/Source/OculusXRHMD/Public/OculusXRStereoLayersFlagsSupplier.h +++ /dev/null @@ -1,42 +0,0 @@ -// Copyright Epic Games, Inc. All Rights Reserved. - -#pragma once - -#include "CoreMinimal.h" -#include "Misc\EngineVersionComparison.h" -#if !UE_VERSION_OLDER_THAN(5, 4, 0) -#include "IStereoLayersFlagsSupplier.h" -#endif // !UE_VERSION_OLDER_THAN(5, 4, 0) - -class FOculusXRStereoLayersFlagsSupplier -#if !UE_VERSION_OLDER_THAN(5, 4, 0) - : public IStereoLayersFlagsSupplier -#endif // !UE_VERSION_OLDER_THAN(5, 4, 0) -{ - // Required for creating a TSharedPtr because this class has a private constructor. - template - friend class SharedPointerInternals::TIntrusiveReferenceController; - -public: - /** Returns instance of this class. If it doesn't exist yet, it creates one and collects all the flags. */ - OCULUSXRHMD_API static TSharedPtr Get(); - - virtual ~FOculusXRStereoLayersFlagsSupplier() {} - -#if !UE_VERSION_OLDER_THAN(5, 4, 0) - virtual void EnumerateFlags(TSet& OutFlags) override - { - OutFlags.Append(SupportedFilters); - } -#endif // !UE_VERSION_OLDER_THAN(5, 4, 0) - - OCULUSXRHMD_API int GetOvrpFlag(uint32 DescFlags, bool bMQSR = true); - -private: - FOculusXRStereoLayersFlagsSupplier(); - - static TSharedPtr Instance; - - TMap UnrealFlagValOvrpFlagValMap; - TArray SupportedFilters; -}; diff --git a/Plugins/MetaXR/Source/OculusXRHMD/Public/OculusXRTelemetry.h b/Plugins/MetaXR/Source/OculusXRHMD/Public/OculusXRTelemetry.h deleted file mode 100644 index 915362e..0000000 --- a/Plugins/MetaXR/Source/OculusXRHMD/Public/OculusXRTelemetry.h +++ /dev/null @@ -1,195 +0,0 @@ -// Copyright (c) Meta Platforms, Inc. and affiliates. - -#pragma once - -#include "OculusXRQPL.h" -#include "Containers/StringConv.h" -#include "Templates/Function.h" - -namespace OculusXRTelemetry -{ -#ifndef TURN_OFF_META_TELEMETRY - using FTelemetryBackend = FQPLBackend; -#else - using FTelemetryBackend = FEmptyBackend; -#endif - - constexpr int UNREAL_TOOL_ID = 2; - OCULUSXRHMD_API bool IsActive(); - OCULUSXRHMD_API void IfActiveThen(TUniqueFunction Function); - OCULUSXRHMD_API void PropagateTelemetryConsent(); - - OCULUSXRHMD_API FString GetProjectId(); - - OCULUSXRHMD_API bool IsConsentGiven(); - - template - class OCULUSXRHMD_API TMarkerPoint : FNoncopyable - { - public: - explicit TMarkerPoint(const char* Name) - : bCreated(Backend::CreateMarkerHandle(Name, Handle)) {} - ~TMarkerPoint() - { - if (bCreated) - { - Backend::DestroyMarkerHandle(Handle); - } - } - int GetHandle() const { return Handle; } - - private: - const bool bCreated{ false }; - const int Handle{ -1 }; - }; - - enum class EAnnotationType - { - Required, - Optional, - }; - - template - class TMarker - { - public: - explicit TMarker(const FTelemetryInstanceKey InstanceKey = DefaultTelemetryInstance) - : InstanceKey(InstanceKey) - { - } - TMarker(const TMarker&& Other) noexcept - : InstanceKey(Other.GetMarkerId()) {} - - const TMarker& Start(const FTelemetryTimestamp Timestamp = AutoSetTimestamp) const - { - Backend::MarkerStart(MarkerId, InstanceKey, Timestamp); - return *this; - } - const TMarker& AddAnnotation(const char* Key, const char* Value, EAnnotationType bExtraAnnotation = EAnnotationType::Required) const - { - if (bExtraAnnotation == EAnnotationType::Required || IsConsentGiven()) - { - Backend::MarkerAnnotation(MarkerId, Key, Value, InstanceKey); - } - return *this; - } - const TMarker& AddPoint(const char* Name, const FTelemetryTimestamp Timestamp = AutoSetTimestamp) const - { - Backend::MarkerPoint(MarkerId, Name, InstanceKey, Timestamp); - return *this; - } - const TMarker& AddPoint(const TMarkerPoint& MarkerPoint, const FTelemetryTimestamp Timestamp = AutoSetTimestamp) const - { - Backend::MarkerPoint(MarkerId, MarkerPoint.GetHandle(), InstanceKey, Timestamp); - return *this; - } - void End(EAction Result, const FTelemetryTimestamp Timestamp = AutoSetTimestamp) const - { - Backend::MarkerEnd(MarkerId, Result, InstanceKey, Timestamp); - } - constexpr static int GetMarkerId() - { - return MarkerId; - } - - private: - const FTelemetryInstanceKey InstanceKey; - }; - - struct FIgnoreNotEndedMarker - { - template - constexpr const FIgnoreNotEndedMarker& operator=(const TMarker&) const noexcept - { - // do nothing - return *this; - } - }; - - constexpr FIgnoreNotEndedMarker NotEnd{}; - - enum class EScopeMode - { - StartAndEnd, - Start, - End - }; - - template - class TScopedMarker : public FNoncopyable - { - TOptional Marker; - EAction Result{ EAction::Success }; - static constexpr EScopeMode Scope{ TScope }; - - public: - TScopedMarker(const FTelemetryInstanceKey InstanceKey = DefaultTelemetryInstance) - { - if (IsActive()) - { - Marker.Emplace(InstanceKey); - if constexpr (Scope != EScopeMode::End) - { - const auto& Self = Start(); - } - - const FString ProjectIdString = GetProjectId(); - const auto& AnnotatedWithProjectId = AddAnnotation("project_hash", StringCast(*ProjectIdString).Get(), EAnnotationType::Optional); - - } - } - ~TScopedMarker() - { - if constexpr (Scope != EScopeMode::Start) - { - End(); - } - } - - const TScopedMarker& Start() const - { - if (Marker) - { - Marker->Start(); - } - return *this; - } - - const TScopedMarker& AddPoint(const char* Name) const - { - if (Marker) - { - Marker->AddPoint(Name); - } - return *this; - } - - const TScopedMarker& AddAnnotation(const char* Key, const char* Value, EAnnotationType bExtraAnnotation = EAnnotationType::Required) const - { - if (Marker && (bExtraAnnotation == EAnnotationType::Required || IsConsentGiven())) - { - Marker->AddAnnotation(Key, Value); - } - return *this; - } - - const TScopedMarker& SetResult(EAction InResult) - { - Result = InResult; - return *this; - } - - void End() const - { - if (Marker) - { - Marker->End(Result); - } - } - }; - - void SendEvent(const TCHAR* EventName, const TCHAR* Param); - void SendEvent(const TCHAR* EventName, bool bParam); - void SendEvent(const TCHAR* EventName, float Param); - -} // namespace OculusXRTelemetry diff --git a/Plugins/MetaXR/Source/OculusXRHMD/Public/OpenXR/IOculusXRExtensionPlugin.h b/Plugins/MetaXR/Source/OculusXRHMD/Public/OpenXR/IOculusXRExtensionPlugin.h deleted file mode 100644 index a434b7f..0000000 --- a/Plugins/MetaXR/Source/OculusXRHMD/Public/OpenXR/IOculusXRExtensionPlugin.h +++ /dev/null @@ -1,21 +0,0 @@ -// Copyright (c) Meta Platforms, Inc. and affiliates. - -#pragma once - -// DO NOT REMOVE -// This include is needed in order to have the latest openxr header (from Thirdparty/KhronosOpenXR/) -// Without it, IOpenXRExtensionPlugin.h will include the openxr header from the Engine itself, which is outdated. -#include "khronos/openxr/openxr.h" - -#include "IOpenXRExtensionPlugin.h" - -class IOculusXRExtensionPlugin : public IOpenXRExtensionPlugin -{ -public: - void RegisterOpenXRExtensionPlugin() - { -#if defined(WITH_OCULUS_BRANCH) - RegisterOpenXRExtensionModularFeature(); -#endif - } -}; diff --git a/Plugins/MetaXR/Source/OculusXRInput/OculusXRInput.Build.cs b/Plugins/MetaXR/Source/OculusXRInput/OculusXRInput.Build.cs deleted file mode 100644 index 6dcbb4a..0000000 --- a/Plugins/MetaXR/Source/OculusXRInput/OculusXRInput.Build.cs +++ /dev/null @@ -1,65 +0,0 @@ -// @lint-ignore-every LICENSELINT -// Copyright Epic Games, Inc. All Rights Reserved. - -namespace UnrealBuildTool.Rules -{ - public class OculusXRInput : ModuleRules - { - public OculusXRInput(ReadOnlyTargetRules Target) : base(Target) - { - bUseUnity = true; - - PrivateIncludePathModuleNames.AddRange( - new string[] - { - "InputDevice", // For IInputDevice.h - "HeadMountedDisplay", // For IMotionController.h - "ImageWrapper" - }); - - PrivateDependencyModuleNames.AddRange( - new string[] - { - "Core", - "CoreUObject", - "ApplicationCore", - "Engine", - "InputCore", - "HeadMountedDisplay", - "KhronosOpenXRHeaders", - "OculusXRHMD", - "OculusXRMR", - "OVRPluginXR", - "OpenXRHMD" - }); - - if (Target.Version.MajorVersion > 5 || (Target.Version.MajorVersion == 5 && Target.Version.MinorVersion >= 3)) - { - PrivateDependencyModuleNames.AddRange( - new string[] - { - "XRBase", - }); - } - - PrivateIncludePaths.AddRange( - new string[] { - // Relative to Engine\Plugins\Runtime\Oculus\OculusVR\Source - "OculusXRHMD/Private", - }); - - PublicIncludePaths.AddRange( - new string[] { - "Runtime/Renderer/Private", - "Runtime/Engine/Classes/Components", - }); - - if (Target.Platform == UnrealTargetPlatform.Win64) - { - RuntimeDependencies.Add("$(PluginDir)/Source/ThirdParty/OVRPlugin/OVRPlugin/Lib/" + Target.Platform.ToString() + "/OpenXR/OVRPlugin.dll"); - } - - AddEngineThirdPartyPrivateStaticDependencies(Target, "OpenXR"); - } - } -} diff --git a/Plugins/MetaXR/Source/OculusXRInput/Private/OculusXRControllerComponent.cpp b/Plugins/MetaXR/Source/OculusXRInput/Private/OculusXRControllerComponent.cpp deleted file mode 100644 index 02cb00c..0000000 --- a/Plugins/MetaXR/Source/OculusXRInput/Private/OculusXRControllerComponent.cpp +++ /dev/null @@ -1,122 +0,0 @@ -// Copyright (c) Meta Platforms, Inc. and affiliates. - -// A class to render the currently connected controller. -// Similar to how hands are tracked. - -#include "OculusXRControllerComponent.h" -#include "OculusXRInput.h" -#include "Components/StaticMeshComponent.h" -#include "OculusXRHandTracking.h" -#include - -UOculusXRControllerComponent::UOculusXRControllerComponent() - : Super() -{ - _meshLoadingState = MeshLoadingState::None; - PrimaryComponentTick.bCanEverTick = true; -} - -void UOculusXRControllerComponent::BeginPlay() -{ - Super::BeginPlay(); -} - -void UOculusXRControllerComponent::TickComponent(float DeltaTime, enum ELevelTick TickType, FActorComponentTickFunction* ThisTickFunction) -{ - Super::TickComponent(DeltaTime, TickType, ThisTickFunction); - - // If we're in a capsense mode, we need to offset the controller position so that it's correct / consistent with the hand position. - if (_cachedControllerHandType != OculusXRInput::FOculusHandTracking::ControllerDrivenHandType) - { - _cachedControllerHandType = OculusXRInput::FOculusHandTracking::ControllerDrivenHandType; - - const FVector positionOffset = PositionOffsets[static_cast(SkeletonType)][static_cast(_cachedControllerHandType)]; - const FVector rotationOffset = RotationOffsets[static_cast(SkeletonType)][static_cast(_cachedControllerHandType)]; - - SetRelativeLocation(positionOffset); - SetRelativeRotation(FQuat::MakeFromEuler(rotationOffset)); - } - - bool isHandTrackingEnabled = UOculusXRInputFunctionLibrary::IsHandTrackingEnabled(); - bool shouldHide = isHandTrackingEnabled && !(RenderWhenUsingControllerDrivenHands && OculusXRInput::FOculusHandTracking::ControllerDrivenHandType == EOculusXRControllerDrivenHandPoseTypes::Controller); - if (shouldHide && !bHiddenInGame) - { - SetHiddenInGame(true, false); - } - if (!shouldHide && bHiddenInGame) - { - SetHiddenInGame(false, false); - } - - if (_meshLoadingState == MeshLoadingState::None || _controllerType != GetControllerType()) - { - InitializeMesh(); - } -} - -EOculusXRControllerType UOculusXRControllerComponent::GetControllerType() -{ - EControllerHand controllerHand = EControllerHand::AnyHand; - if (SkeletonType == EOculusXRSide::Left) - { - controllerHand = EControllerHand::Left; - } - else if (SkeletonType == EOculusXRSide::Right) - { - controllerHand = EControllerHand::Right; - } - return UOculusXRFunctionLibrary::GetControllerType(controllerHand); -} - -void UOculusXRControllerComponent::InitializeMesh() -{ - if (_runtimeMesh != nullptr) - { - SetStaticMesh(nullptr); - _streamableManager.Unload(_runtimeMeshPath); - _runtimeMesh = nullptr; - } - - auto left_controller_path = TEXT("none"); - auto right_controller_path = TEXT("none"); - - _controllerType = GetControllerType(); - switch (_controllerType) - { - case EOculusXRControllerType::MetaQuestTouch: - left_controller_path = TEXT("/Script/Engine.StaticMesh'/OculusXR/Meshes/LeftTouchForQuest2.LeftTouchForQuest2'"); - right_controller_path = TEXT("/Script/Engine.StaticMesh'/OculusXR/Meshes/RightTouchForQuest2.RightTouchForQuest2'"); - break; - case EOculusXRControllerType::MetaQuestTouchPlus: - // We don't currently have a model for the touch plus controller, default to the touch pro. - case EOculusXRControllerType::MetaQuestTouchPro: - left_controller_path = TEXT("/Script/Engine.StaticMesh'/OculusXR/Meshes/LeftMetaQuestTouchPro.LeftMetaQuestTouchPro'"); - right_controller_path = TEXT("/Script/Engine.StaticMesh'/OculusXR/Meshes/RightMetaQuestTouchPro.RightMetaQuestTouchPro'"); - break; - case EOculusXRControllerType::None: - case EOculusXRControllerType::Unknown: - default: - return; - } - - auto controllerPath = left_controller_path; - if (SkeletonType == EOculusXRSide::Right) - { - controllerPath = right_controller_path; - } - _runtimeMeshPath = FSoftObjectPath(controllerPath); - - _loadAssetHandle = _streamableManager.RequestAsyncLoad( - _runtimeMeshPath, - FStreamableDelegate::CreateUObject(this, &UOculusXRControllerComponent::MeshLoaded)); -} - -void UOculusXRControllerComponent::MeshLoaded() -{ - if (_loadAssetHandle.IsValid() && _loadAssetHandle.Get()->HasLoadCompleted()) - { - _runtimeMesh = reinterpret_cast(_loadAssetHandle.Get()->GetLoadedAsset()); - _meshLoadingState = MeshLoadingState::Loaded; - SetStaticMesh(_runtimeMesh); - } -} diff --git a/Plugins/MetaXR/Source/OculusXRInput/Private/OculusXRControllerLegacyPoseTransformComponent.cpp b/Plugins/MetaXR/Source/OculusXRInput/Private/OculusXRControllerLegacyPoseTransformComponent.cpp deleted file mode 100644 index 0c0e076..0000000 --- a/Plugins/MetaXR/Source/OculusXRInput/Private/OculusXRControllerLegacyPoseTransformComponent.cpp +++ /dev/null @@ -1,23 +0,0 @@ -// @lint-ignore-every LICENSELINT -// Copyright Epic Games, Inc. All Rights Reserved. - -#include "OculusXRControllerLegacyPoseTransformComponent.h" -#include "OpenXR/OculusXROpenXRUtilities.h" -#include "GameFramework/WorldSettings.h" - -UOculusXRControllerLegacyPoseTransformComponent::UOculusXRControllerLegacyPoseTransformComponent(const FObjectInitializer& ObjectInitializer) - : Super(ObjectInitializer) -{ - SetComponentTickEnabled(false); -} - -void UOculusXRControllerLegacyPoseTransformComponent::BeginPlay() -{ - Super::BeginPlay(); - - USceneComponent* AttachedParentPtr = GetAttachParent(); - if (OculusXR::IsOpenXRSystem() && AttachedParentPtr != nullptr) - { - AttachedParentPtr->AddLocalTransform(FTransform(OculusPoseToGripRotation, OculusPoseToGripPosition * GetWorld()->GetWorldSettings()->WorldToMeters).Inverse()); - } -} diff --git a/Plugins/MetaXR/Source/OculusXRInput/Private/OculusXRControllerTracking.cpp b/Plugins/MetaXR/Source/OculusXRInput/Private/OculusXRControllerTracking.cpp deleted file mode 100644 index 9daaadc..0000000 --- a/Plugins/MetaXR/Source/OculusXRInput/Private/OculusXRControllerTracking.cpp +++ /dev/null @@ -1,67 +0,0 @@ -// @lint-ignore-every LICENSELINT -// Copyright Epic Games, Inc. All Rights Reserved. - -#include "OculusXRControllerTracking.h" -#include "OculusXRHMD.h" -#include "OculusXRInput.h" -#include "Misc/CoreDelegates.h" -#include "IOculusXRInputModule.h" -#include "Haptics/HapticFeedbackEffect_Base.h" - -namespace OculusXRInput -{ - void FOculusXRControllerTracking::PlayHapticEffect( - class UHapticFeedbackEffect_Base* HapticEffect, - EControllerHand Hand, - EOculusXRHandHapticsLocation Location, - bool bAppend, - float Scale, - bool bLoop) - { -#if OCULUS_INPUT_SUPPORTED_PLATFORMS - TSharedPtr OculusXRInputModule = StaticCastSharedPtr(IOculusXRInputModule::Get().GetInputDevice()); - OculusXRInputModule.Get()->PlayHapticEffect(HapticEffect, Hand, Location, bAppend, Scale, bLoop); -#endif - } - - void FOculusXRControllerTracking::PlayAmplitudeEnvelopeHapticEffect(EControllerHand Hand, TArray& Amplitudes, int SampleRate) - { -#if OCULUS_INPUT_SUPPORTED_PLATFORMS - TSharedPtr OculusXRInputModule = StaticCastSharedPtr(IOculusXRInputModule::Get().GetInputDevice()); - OculusXRInputModule.Get()->PlayAmplitudeEnvelopeHapticEffect(Hand, Amplitudes.Num(), Amplitudes.GetData(), SampleRate); -#endif - } - - void FOculusXRControllerTracking::StopHapticEffect(EControllerHand Hand, EOculusXRHandHapticsLocation Location) - { -#if OCULUS_INPUT_SUPPORTED_PLATFORMS - SetHapticsByValue(0.f, 0.f, Hand, Location); -#endif - } - - void FOculusXRControllerTracking::SetHapticsByValue(float Frequency, float Amplitude, EControllerHand Hand, EOculusXRHandHapticsLocation Location) - { -#if OCULUS_INPUT_SUPPORTED_PLATFORMS - TSharedPtr OculusXRInputModule = StaticCastSharedPtr(IOculusXRInputModule::Get().GetInputDevice()); - OculusXRInputModule.Get()->SetHapticsByValue(Frequency, Amplitude, Hand, Location); -#endif - } - - float FOculusXRControllerTracking::GetControllerSampleRateHz(EControllerHand Hand) - { -#if OCULUS_INPUT_SUPPORTED_PLATFORMS - TSharedPtr OculusXRInputModule = StaticCastSharedPtr(IOculusXRInputModule::Get().GetInputDevice()); - return OculusXRInputModule.Get()->GetControllerSampleRateHz(Hand); -#endif - return 0; - } - - int FOculusXRControllerTracking::GetMaxHapticDuration(EControllerHand Hand) - { -#if OCULUS_INPUT_SUPPORTED_PLATFORMS - TSharedPtr OculusXRInputModule = StaticCastSharedPtr(IOculusXRInputModule::Get().GetInputDevice()); - return OculusXRInputModule.Get()->GetMaxHapticDuration(Hand); -#endif - return 0; - } -} // namespace OculusXRInput diff --git a/Plugins/MetaXR/Source/OculusXRInput/Private/OculusXRControllerTracking.h b/Plugins/MetaXR/Source/OculusXRInput/Private/OculusXRControllerTracking.h deleted file mode 100644 index 7a012e9..0000000 --- a/Plugins/MetaXR/Source/OculusXRInput/Private/OculusXRControllerTracking.h +++ /dev/null @@ -1,43 +0,0 @@ -// @lint-ignore-every LICENSELINT -// Copyright Epic Games, Inc. All Rights Reserved. - -#pragma once -#include "OculusXRInputFunctionLibrary.h" - -#define LOCTEXT_NAMESPACE "OculusXRControllerTracking" - -DEFINE_LOG_CATEGORY_STATIC(LogOcXRControllerTracking, Log, All); - -//------------------------------------------------------------------------------------------------- -// FOculusXRControllerTracking -//------------------------------------------------------------------------------------------------- - -class UHapticFeedbackEffect_Base; - -namespace OculusXRInput -{ - class FOculusXRControllerTracking - { - public: - static void PlayHapticEffect( - UHapticFeedbackEffect_Base* HapticEffect, - EControllerHand Hand, - EOculusXRHandHapticsLocation Location = EOculusXRHandHapticsLocation::Hand, - bool bAppend = false, - float Scale = 1.f, - bool bLoop = false); - - static void PlayAmplitudeEnvelopeHapticEffect(EControllerHand Hand, TArray& Amplitudes, int SampleRate); - - static void StopHapticEffect(EControllerHand Hand, EOculusXRHandHapticsLocation Location = EOculusXRHandHapticsLocation::Hand); - - static void SetHapticsByValue(float Frequency, float Amplitude, EControllerHand Hand, EOculusXRHandHapticsLocation Location = EOculusXRHandHapticsLocation::Hand); - - static float GetControllerSampleRateHz(EControllerHand Hand); - - static int GetMaxHapticDuration(EControllerHand Hand); - }; - -} // namespace OculusXRInput - -#undef LOCTEXT_NAMESPACE diff --git a/Plugins/MetaXR/Source/OculusXRInput/Private/OculusXRHandComponent.cpp b/Plugins/MetaXR/Source/OculusXRInput/Private/OculusXRHandComponent.cpp deleted file mode 100644 index 95c1e78..0000000 --- a/Plugins/MetaXR/Source/OculusXRInput/Private/OculusXRHandComponent.cpp +++ /dev/null @@ -1,249 +0,0 @@ -// @lint-ignore-every LICENSELINT -// Copyright Epic Games, Inc. All Rights Reserved. -#include "OculusXRHandComponent.h" -#include "OculusXRInput.h" -#include "OculusXRInputModule.h" -#include "OpenXR/OculusXROpenXRUtilities.h" - -#include "Engine/SkeletalMesh.h" -#include "Components/InputComponent.h" -#include "Materials/MaterialInterface.h" - -#include "GameFramework/Pawn.h" -#include "GameFramework/PlayerController.h" - -UOculusXRHandComponent::UOculusXRHandComponent(const FObjectInitializer& ObjectInitializer) - : Super(ObjectInitializer) -{ - PrimaryComponentTick.bCanEverTick = true; - PrimaryComponentTick.bStartWithTickEnabled = true; - PrimaryComponentTick.TickGroup = TG_PrePhysics; - - bHasAuthority = false; - bAutoActivate = true; - - bWantsInitializeComponent = true; - - for (uint8 BoneIndex = 0; BoneIndex < (uint8)EOculusXRBone::Bone_Max; BoneIndex++) - { - BoneNameMappings.Add((EOculusXRBone)BoneIndex, TEXT("")); - } -} - -void UOculusXRHandComponent::BeginPlay() -{ - Super::BeginPlay(); - - // Use custom mesh if a skeletal mesh is already set, else try to load the runtime mesh - if (GetSkinnedAsset()) - { - bCustomHandMesh = true; - bSkeletalMeshInitialized = true; - } - else - { - RuntimeSkeletalMesh = NewObject(this, TEXT("OculusHandMesh")); - InitializeSkeletalMesh(); - } -} - -void UOculusXRHandComponent::InitializeSkeletalMesh() -{ - const FOculusXRInputModule* InputModule = static_cast(&FOculusXRInputModule::Get()); - if (OculusXR::IsOpenXRSystem() && !InputModule->GetHandTrackingOpenXRExtension()->bIsInitialized) - { - return; - } - - if (RuntimeSkeletalMesh) - { - if (UOculusXRInputFunctionLibrary::GetHandSkeletalMesh(RuntimeSkeletalMesh, SkeletonType, MeshType)) - { - SetSkinnedAssetAndUpdate(RuntimeSkeletalMesh, true); - if (MaterialOverride) - { - SetMaterial(0, MaterialOverride); - } - CachedBaseMaterial = GetMaterial(0); - bSkeletalMeshInitialized = true; - - // Initialize physics capsules on the runtime mesh - if (bInitializePhysics) - { - CollisionCapsules = UOculusXRInputFunctionLibrary::InitializeHandPhysics(SkeletonType, this); - } - } - } -} - -void UOculusXRHandComponent::TickComponent(float DeltaTime, enum ELevelTick TickType, FActorComponentTickFunction* ThisTickFunction) -{ - Super::TickComponent(DeltaTime, TickType, ThisTickFunction); - -#if WITH_EDITOR - if (!bSkeletalMeshInitialized && !bCustomHandMesh) - { - InitializeSkeletalMesh(); - } -#else - // OpenXR session is created after the hand component is initialized - if (OculusXR::IsOpenXRSystem() && !bSkeletalMeshInitialized && !bCustomHandMesh) - { - InitializeSkeletalMesh(); - } -#endif - - if (IsInGameThread()) - { - // Cache state from the game thread for use on the render thread - const AActor* MyOwner = GetOwner(); - bHasAuthority = MyOwner->HasLocalNetOwner(); - int i = 0; - } - - if (bHasAuthority) - { - bool bHidden = false; - if (UOculusXRInputFunctionLibrary::IsHandTrackingEnabled()) - { - // Update Visibility based on Confidence - if (ConfidenceBehavior == EOculusXRConfidenceBehavior::HideActor) - { - EOculusXRTrackingConfidence TrackingConfidence = UOculusXRInputFunctionLibrary::GetTrackingConfidence(SkeletonType); - bHidden |= TrackingConfidence != EOculusXRTrackingConfidence::High; - } - - // Update Hand Scale - if (bUpdateHandScale) - { - float NewScale = UOculusXRInputFunctionLibrary::GetHandScale(SkeletonType); - SetRelativeScale3D(FVector(NewScale)); - } - - // Update Bone Pose Rotations - if (GetSkinnedAsset()) - { - UpdateBonePose(SkeletonType); - } - -#if OCULUS_INPUT_SUPPORTED_PLATFORMS - // Check for system gesture pressed through player controller - if (APawn* Pawn = Cast(GetOwner())) - { - if (APlayerController* PC = Pawn->GetController()) - { - if (PC->WasInputKeyJustPressed(SkeletonType == EOculusXRHandType::HandLeft ? OculusXRInput::FOculusKey::OculusHand_Left_SystemGesture : OculusXRInput::FOculusKey::OculusHand_Right_SystemGesture)) - { - SystemGesturePressed(); - } - if (PC->WasInputKeyJustReleased(SkeletonType == EOculusXRHandType::HandLeft ? OculusXRInput::FOculusKey::OculusHand_Left_SystemGesture : OculusXRInput::FOculusKey::OculusHand_Right_SystemGesture)) - { - SystemGestureReleased(); - } - } - } -#endif - } - else - { - bHidden = true; - } - - if (bHidden != bHiddenInGame) - { - SetHiddenInGame(bHidden); - for (int32 i = 0; i < CollisionCapsules.Num(); i++) - { - CollisionCapsules[i].Capsule->SetCollisionEnabled(bHidden ? ECollisionEnabled::NoCollision : ECollisionEnabled::QueryAndPhysics); - } - } - } -} - -void UOculusXRHandComponent::UpdateBonePose(EOculusXRHandType HandType) -{ - FQuat HandRootFixupRotation = HandRootFixupRotationOVR; - if (OculusXR::IsOpenXRSystem()) - { - check(HandType == EOculusXRHandType::HandLeft || HandType == EOculusXRHandType::HandRight); - if (HandType == EOculusXRHandType::HandLeft) - { - HandRootFixupRotation = LeftHandRootFixupRotationOpenXR; - } - else if (HandType == EOculusXRHandType::HandRight) - { - HandRootFixupRotation = RightHandRootFixupRotationOpenXR; - } - } - - if (bCustomHandMesh) - { - for (auto& BoneElem : BoneNameMappings) - { - // Set Root Bone Rotaiton - if (BoneElem.Key == EOculusXRBone::Wrist_Root) - { - FQuat RootBoneRotation = UOculusXRInputFunctionLibrary::GetBoneRotation(SkeletonType, EOculusXRBone::Wrist_Root); - RootBoneRotation *= HandRootFixupRotation; - RootBoneRotation.Normalize(); - BoneSpaceTransforms[0].SetRotation(RootBoneRotation); - } - else - { - // Set Remaing Bone Rotations - int32 BoneIndex = GetSkinnedAsset()->GetRefSkeleton().FindBoneIndex(BoneElem.Value); - if (BoneIndex >= 0) - { - FQuat BoneRotation = UOculusXRInputFunctionLibrary::GetBoneRotation(SkeletonType, (EOculusXRBone)BoneElem.Key); - BoneSpaceTransforms[BoneIndex].SetRotation(BoneRotation); - } - } - } - } - else - { - // Set Root Bone Rotation - FQuat RootBoneRotation = UOculusXRInputFunctionLibrary::GetBoneRotation(SkeletonType, EOculusXRBone::Wrist_Root); - RootBoneRotation *= HandRootFixupRotation; - RootBoneRotation.Normalize(); - BoneSpaceTransforms[0].SetRotation(RootBoneRotation); - - // Set Remaining Bone Rotations - for (uint32 BoneIndex = 1; BoneIndex < (uint32)GetSkinnedAsset()->GetRefSkeleton().GetNum(); BoneIndex++) - { - FQuat BoneRotation = UOculusXRInputFunctionLibrary::GetBoneRotation(SkeletonType, (EOculusXRBone)BoneIndex); - BoneSpaceTransforms[BoneIndex].SetRotation(BoneRotation); - } - } - MarkRefreshTransformDirty(); -} - -void UOculusXRHandComponent::SystemGesturePressed() -{ - if (SystemGestureBehavior == EOculusXRSystemGestureBehavior::SwapMaterial) - { - if (SystemGestureMaterial) - { - SetMaterial(0, SystemGestureMaterial); - } - else - { - UE_LOG(LogTemp, Log, TEXT("System Gesture Behavior was set to Swap Material but no System Gesture Material was provided!")); - } - } -} - -void UOculusXRHandComponent::SystemGestureReleased() -{ - if (SystemGestureBehavior == EOculusXRSystemGestureBehavior::SwapMaterial) - { - if (CachedBaseMaterial) - { - SetMaterial(0, CachedBaseMaterial); - } - else - { - UE_LOG(LogTemp, Log, TEXT("System Gesture Behavior was set to Swap Material but no System Gesture Material was provided!")); - } - } -} diff --git a/Plugins/MetaXR/Source/OculusXRInput/Private/OculusXRHandTracking.cpp b/Plugins/MetaXR/Source/OculusXRInput/Private/OculusXRHandTracking.cpp deleted file mode 100644 index dfa1a91..0000000 --- a/Plugins/MetaXR/Source/OculusXRInput/Private/OculusXRHandTracking.cpp +++ /dev/null @@ -1,1196 +0,0 @@ -// @lint-ignore-every LICENSELINT -// Copyright Epic Games, Inc. All Rights Reserved. - -#include "OculusXRHandTracking.h" - -#include "Animation/Skeleton.h" -#include "BoneWeights.h" -#include "Components/SkeletalMeshComponent.h" -#include "Engine/SkinnedAssetCommon.h" -#include "Rendering/SkeletalMeshLODModel.h" -#include "Rendering/SkeletalMeshLODRenderData.h" -#include "Rendering/SkeletalMeshModel.h" -#include "Rendering/SkeletalMeshRenderData.h" -#include "IOculusXRInputModule.h" -#include "MaterialDomain.h" -#include "Materials/Material.h" -#include "Materials/MaterialInstanceDynamic.h" -#include "Misc/CoreDelegates.h" -#include "Model.h" -#include "OculusXRHMD.h" -#include "OpenXR/OculusXROpenXRUtilities.h" -#include "OculusXRInputModule.h" -#include "OculusXRInputState.h" - -#define OCULUS_TO_UE4_SCALE 100.0f - -namespace OculusXRInput -{ - - static FInputDeviceId GetDeviceID(int32 ControllerId) - { - IPlatformInputDeviceMapper& DeviceMapper = IPlatformInputDeviceMapper::Get(); - FPlatformUserId InPlatformUser = FGenericPlatformMisc::GetPlatformUserForUserIndex(ControllerId); - FInputDeviceId InDeviceId = INPUTDEVICEID_NONE; - DeviceMapper.RemapControllerIdToPlatformUserAndDevice(ControllerId, InPlatformUser, InDeviceId); - return InDeviceId; - } - - static bool IsPluginWrapperAvailible() - { - return ((IOculusXRHMDModule::IsAvailable() && FOculusXRHMDModule::GetPluginWrapper().IsInitialized())); - } - - FQuat FOculusHandTracking::GetBoneRotation(const int32 ControllerIndex, const EOculusXRHandType DeviceHand, const EOculusXRBone BoneId) - { - FQuat Rotation = FQuat::Identity; - if (BoneId <= EOculusXRBone::Invalid && BoneId >= EOculusXRBone::Bone_Max) - { - return Rotation; - } - -#if OCULUS_INPUT_SUPPORTED_PLATFORMS - if (OculusXRHMD::FOculusXRHMD::GetOculusXRHMD() != nullptr) - { - TSharedPtr OculusXRInputModule = StaticCastSharedPtr(IOculusXRInputModule::Get().GetInputDevice()); - if (OculusXRInputModule.IsValid()) - { - const FInputDeviceId InDeviceId = GetDeviceID(ControllerIndex); - TArray ControllerPairs = OculusXRInputModule.Get()->ControllerPairs; - for (const FOculusControllerPair& HandPair : ControllerPairs) - { - if (HandPair.DeviceId == InDeviceId) - { - if (DeviceHand != EOculusXRHandType::None) - { - ovrpHand Hand = DeviceHand == EOculusXRHandType::HandLeft ? ovrpHand_Left : ovrpHand_Right; - const FOculusHandControllerState& HandState = HandPair.HandControllerStates[Hand]; - int32 OvrBoneId = ToOvrBone(BoneId); - Rotation = HandState.BoneRotations[OvrBoneId]; - break; - } - } - } - } - } - else if (OculusXR::IsOpenXRSystem()) - { - if (DeviceHand != EOculusXRHandType::None) - { - const FOculusXRInputModule* InputModule = static_cast(&FOculusXRInputModule::Get()); - const FOculusHandControllerState& HandState = InputModule->GetHandTrackingOpenXRExtension()->HandControllerStates[DeviceHand]; - const EHandBoneId HandBoneId = ToHandBone(BoneId); - Rotation = HandState.BoneRotations[static_cast(HandBoneId)]; - } - } -#endif - - return Rotation; - } - - float FOculusHandTracking::GetHandScale(const int32 ControllerIndex, const EOculusXRHandType DeviceHand) - { -#if OCULUS_INPUT_SUPPORTED_PLATFORMS - if (OculusXRHMD::FOculusXRHMD::GetOculusXRHMD() != nullptr) - { - TSharedPtr OculusXRInputModule = StaticCastSharedPtr(IOculusXRInputModule::Get().GetInputDevice()); - if (OculusXRInputModule.IsValid()) - { - const FInputDeviceId InDeviceId = GetDeviceID(ControllerIndex); - TArray ControllerPairs = OculusXRInputModule.Get()->ControllerPairs; - for (const FOculusControllerPair& HandPair : ControllerPairs) - { - if (HandPair.DeviceId == InDeviceId) - { - if (DeviceHand != EOculusXRHandType::None) - { - ovrpHand Hand = DeviceHand == EOculusXRHandType::HandLeft ? ovrpHand_Left : ovrpHand_Right; - return HandPair.HandControllerStates[Hand].HandScale; - } - } - } - } - } - else if (OculusXR::IsOpenXRSystem()) - { - if (DeviceHand != EOculusXRHandType::None) - { - const FOculusXRInputModule* InputModule = static_cast(&FOculusXRInputModule::Get()); - const FOculusHandControllerState& HandState = InputModule->GetHandTrackingOpenXRExtension()->HandControllerStates[DeviceHand]; - return HandState.HandScale; - } - } -#endif - return 1.0f; - } - - EOculusXRTrackingConfidence FOculusHandTracking::GetTrackingConfidence(const int32 ControllerIndex, const EOculusXRHandType DeviceHand) - { -#if OCULUS_INPUT_SUPPORTED_PLATFORMS - if (OculusXRHMD::FOculusXRHMD::GetOculusXRHMD() != nullptr) - { - TSharedPtr OculusXRInputModule = StaticCastSharedPtr(IOculusXRInputModule::Get().GetInputDevice()); - if (OculusXRInputModule.IsValid()) - { - const FInputDeviceId InDeviceId = GetDeviceID(ControllerIndex); - TArray ControllerPairs = OculusXRInputModule.Get()->ControllerPairs; - for (const FOculusControllerPair& HandPair : ControllerPairs) - { - if (HandPair.DeviceId == InDeviceId) - { - if (DeviceHand != EOculusXRHandType::None) - { - ovrpHand Hand = DeviceHand == EOculusXRHandType::HandLeft ? ovrpHand_Left : ovrpHand_Right; - return HandPair.HandControllerStates[Hand].TrackingConfidence; - } - } - } - } - } - else if (OculusXR::IsOpenXRSystem()) - { - if (DeviceHand != EOculusXRHandType::None) - { - const FOculusXRInputModule* InputModule = static_cast(&FOculusXRInputModule::Get()); - const FOculusHandControllerState& HandState = InputModule->GetHandTrackingOpenXRExtension()->HandControllerStates[DeviceHand]; - return HandState.TrackingConfidence; - } - } -#endif - return EOculusXRTrackingConfidence::Low; - } - - EOculusXRTrackingConfidence FOculusHandTracking::GetFingerTrackingConfidence(const int32 ControllerIndex, const EOculusXRHandType DeviceHand, const EOculusHandAxes Finger) - { - if (OculusXRHMD::FOculusXRHMD::GetOculusXRHMD() != nullptr) - { - TSharedPtr OculusXRInputModule = StaticCastSharedPtr(IOculusXRInputModule::Get().GetInputDevice()); - if (OculusXRInputModule.IsValid()) - { - const FInputDeviceId InDeviceId = GetDeviceID(ControllerIndex); - TArray ControllerPairs = OculusXRInputModule.Get()->ControllerPairs; - for (const FOculusControllerPair& HandPair : ControllerPairs) - { - if (HandPair.DeviceId == InDeviceId) - { - if (DeviceHand != EOculusXRHandType::None) - { - ovrpHand Hand = DeviceHand == EOculusXRHandType::HandLeft ? ovrpHand_Left : ovrpHand_Right; - return HandPair.HandControllerStates[Hand].FingerConfidences[(int)Finger]; - } - } - } - } - } - else if (OculusXR::IsOpenXRSystem()) - { - if (DeviceHand != EOculusXRHandType::None) - { - const FOculusXRInputModule* InputModule = static_cast(&FOculusXRInputModule::Get()); - const FOculusHandControllerState& HandState = InputModule->GetHandTrackingOpenXRExtension()->HandControllerStates[DeviceHand]; - return HandState.FingerConfidences[(int)Finger]; - } - } - return EOculusXRTrackingConfidence::Low; - } - - FTransform FOculusHandTracking::GetPointerPose(const int32 ControllerIndex, const EOculusXRHandType DeviceHand, const float WorldToMeters) - { -#if OCULUS_INPUT_SUPPORTED_PLATFORMS - if (OculusXRHMD::FOculusXRHMD::GetOculusXRHMD() != nullptr) - { - TSharedPtr OculusXRInputModule = StaticCastSharedPtr(IOculusXRInputModule::Get().GetInputDevice()); - if (OculusXRInputModule.IsValid()) - { - const FInputDeviceId InDeviceId = GetDeviceID(ControllerIndex); - TArray ControllerPairs = OculusXRInputModule.Get()->ControllerPairs; - for (const FOculusControllerPair& HandPair : ControllerPairs) - { - if (HandPair.DeviceId == InDeviceId) - { - if (DeviceHand != EOculusXRHandType::None) - { - ovrpHand Hand = DeviceHand == EOculusXRHandType::HandLeft ? ovrpHand_Left : ovrpHand_Right; - FTransform PoseTransform = HandPair.HandControllerStates[Hand].PointerPose; - PoseTransform.SetLocation(PoseTransform.GetLocation() * WorldToMeters); - return PoseTransform; - } - } - } - } - } - else if (OculusXR::IsOpenXRSystem()) - { - if (DeviceHand != EOculusXRHandType::None) - { - const FOculusXRInputModule* InputModule = static_cast(&FOculusXRInputModule::Get()); - const FOculusHandControllerState& HandState = InputModule->GetHandTrackingOpenXRExtension()->HandControllerStates[DeviceHand]; - FTransform PoseTransform = HandState.PointerPose; - PoseTransform.SetLocation(PoseTransform.GetLocation() * WorldToMeters); - return PoseTransform; - } - } -#endif - - return FTransform(); - } - - bool FOculusHandTracking::IsPointerPoseValid(const int32 ControllerIndex, const EOculusXRHandType DeviceHand) - { -#if OCULUS_INPUT_SUPPORTED_PLATFORMS - if (OculusXRHMD::FOculusXRHMD::GetOculusXRHMD() != nullptr) - { - TSharedPtr OculusXRInputModule = StaticCastSharedPtr(IOculusXRInputModule::Get().GetInputDevice()); - if (OculusXRInputModule.IsValid()) - { - const FInputDeviceId InDeviceId = GetDeviceID(ControllerIndex); - TArray ControllerPairs = OculusXRInputModule.Get()->ControllerPairs; - for (const FOculusControllerPair& HandPair : ControllerPairs) - { - if (HandPair.DeviceId == InDeviceId) - { - if (DeviceHand != EOculusXRHandType::None) - { - ovrpHand Hand = DeviceHand == EOculusXRHandType::HandLeft ? ovrpHand_Left : ovrpHand_Right; - return HandPair.HandControllerStates[Hand].bIsPointerPoseValid; - } - } - } - } - } - else if (OculusXR::IsOpenXRSystem()) - { - if (DeviceHand != EOculusXRHandType::None) - { - const FOculusXRInputModule* InputModule = static_cast(&FOculusXRInputModule::Get()); - const FOculusHandControllerState& HandState = InputModule->GetHandTrackingOpenXRExtension()->HandControllerStates[DeviceHand]; - return HandState.bIsPointerPoseValid; - } - } -#endif - - return false; - } - - bool FOculusHandTracking::IsHandTrackingEnabled() - { - if (OculusXRHMD::FOculusXRHMD::GetOculusXRHMD() != nullptr) - { -#if OCULUS_INPUT_SUPPORTED_PLATFORMS - if (IOculusXRHMDModule::IsAvailable() && FOculusXRHMDModule::GetPluginWrapper().IsInitialized()) - { - ovrpBool result; - FOculusXRHMDModule::GetPluginWrapper().GetHandTrackingEnabled(&result); - return result == ovrpBool_True; - } -#endif // OCULUS_INPUT_SUPPORTED_PLATFORMS - } - else if (OculusXR::IsOpenXRSystem()) - { - const FOculusXRInputModule* InputModule = static_cast(&FOculusXRInputModule::Get()); - return InputModule->GetHandTrackingOpenXRExtension()->IsHandTrackingActive(); - } - - return false; - } - - bool FOculusHandTracking::IsHandDominant(const int32 ControllerIndex, const EOculusXRHandType DeviceHand) - { -#if OCULUS_INPUT_SUPPORTED_PLATFORMS - if (OculusXRHMD::FOculusXRHMD::GetOculusXRHMD() != nullptr) - { - TSharedPtr OculusXRInputModule = StaticCastSharedPtr(IOculusXRInputModule::Get().GetInputDevice()); - if (OculusXRInputModule.IsValid()) - { - const FInputDeviceId InDeviceId = GetDeviceID(ControllerIndex); - TArray ControllerPairs = OculusXRInputModule.Get()->ControllerPairs; - for (const FOculusControllerPair& HandPair : ControllerPairs) - { - if (HandPair.DeviceId == InDeviceId) - { - if (DeviceHand != EOculusXRHandType::None) - { - ovrpHand Hand = DeviceHand == EOculusXRHandType::HandLeft ? ovrpHand_Left : ovrpHand_Right; - return HandPair.HandControllerStates[Hand].bIsDominantHand; - } - } - } - } - } - else if (OculusXR::IsOpenXRSystem()) - { - if (DeviceHand != EOculusXRHandType::None) - { - const FOculusXRInputModule* InputModule = static_cast(&FOculusXRInputModule::Get()); - const FOculusHandControllerState& HandState = InputModule->GetHandTrackingOpenXRExtension()->HandControllerStates[DeviceHand]; - return HandState.bIsDominantHand; - } - } -#endif - - return false; - } - - bool FOculusHandTracking::IsHandPositionValid(int32 ControllerIndex, EOculusXRHandType DeviceHand) - { - if (OculusXRHMD::FOculusXRHMD::GetOculusXRHMD() != nullptr) - { - TSharedPtr OculusXRInputModule = StaticCastSharedPtr(IOculusXRInputModule::Get().GetInputDevice()); - if (OculusXRInputModule.IsValid()) - { - const FInputDeviceId InDeviceId = GetDeviceID(ControllerIndex); - TArray ControllerPairs = OculusXRInputModule.Get()->ControllerPairs; - for (const FOculusControllerPair& HandPair : ControllerPairs) - { - if (HandPair.DeviceId == InDeviceId) - { - if (DeviceHand != EOculusXRHandType::None) - { - ovrpHand Hand = DeviceHand == EOculusXRHandType::HandLeft ? ovrpHand_Left : ovrpHand_Right; - return HandPair.HandControllerStates[Hand].bIsPositionValid; - } - } - } - } - } - else if (OculusXR::IsOpenXRSystem()) - { - if (DeviceHand != EOculusXRHandType::None) - { - const FOculusXRInputModule* InputModule = static_cast(&FOculusXRInputModule::Get()); - const FOculusHandControllerState& HandState = InputModule->GetHandTrackingOpenXRExtension()->HandControllerStates[DeviceHand]; - return HandState.bIsPositionValid; - } - } - - return false; - } - - bool FOculusHandTracking::GetHandSkeletalMesh(USkeletalMesh* HandSkeletalMesh, const EOculusXRHandType SkeletonType, const EOculusXRHandType MeshType, const float WorldToMeters) - { -#if OCULUS_INPUT_SUPPORTED_PLATFORMS - if (HandSkeletalMesh) - { - if (OculusXRHMD::FOculusXRHMD::GetOculusXRHMD() != nullptr) - { - if (!IsPluginWrapperAvailible()) - { - return false; - } - - ovrpMesh* OvrMesh = new ovrpMesh(); - ovrpSkeleton2* OvrSkeleton = new ovrpSkeleton2(); - - ovrpSkeletonType OvrSkeletonType = (ovrpSkeletonType)((int32)SkeletonType - 1); - ovrpMeshType OvrMeshType = (ovrpMeshType)((int32)MeshType - 1); - - ovrpResult SkelResult = FOculusXRHMDModule::GetPluginWrapper().GetSkeleton2(OvrSkeletonType, OvrSkeleton); - ovrpResult MeshResult = FOculusXRHMDModule::GetPluginWrapper().GetMesh(OvrMeshType, OvrMesh); - - if (SkelResult != ovrpSuccess || MeshResult != ovrpSuccess) - { -#if !WITH_EDITOR - UE_LOG(LogOcHandTracking, Error, TEXT("Failed to get mesh or skeleton data from Oculus runtime.")); -#endif - delete OvrMesh; - delete OvrSkeleton; - - return false; - } - - // Create Skeletal Mesh LOD Render Data -#if WITH_EDITOR - FSkeletalMeshLODModel* LodRenderData = new FSkeletalMeshLODModel(); - HandSkeletalMesh->GetImportedModel()->LODModels.Add(LodRenderData); -#else - FSkeletalMeshLODRenderData* LodRenderData = new FSkeletalMeshLODRenderData(); - HandSkeletalMesh->AllocateResourceForRendering(); - HandSkeletalMesh->GetResourceForRendering()->LODRenderData.Add(LodRenderData); -#endif - - // Set default LOD Info - FSkeletalMeshLODInfo& LodInfo = HandSkeletalMesh->AddLODInfo(); - LodInfo.ScreenSize = 0.3f; - LodInfo.LODHysteresis = 0.2f; - LodInfo.BuildSettings.bUseFullPrecisionUVs = true; - LodInfo.bHasBeenSimplified = false; - - InitializeHandSkeleton(HandSkeletalMesh, OvrSkeleton, WorldToMeters); - - // Add default material as backup - LodInfo.LODMaterialMap.Add(0); - UMaterialInterface* DefaultMaterial = UMaterial::GetDefaultMaterial(MD_Surface); - HandSkeletalMesh->GetMaterials().Add(DefaultMaterial); - HandSkeletalMesh->GetMaterials()[0].UVChannelData.bInitialized = true; - - // Set skeletal mesh properties - HandSkeletalMesh->SetHasVertexColors(true); - HandSkeletalMesh->SetEnablePerPolyCollision(false); - - InitializeHandMesh(HandSkeletalMesh, OvrMesh, WorldToMeters); - -#if WITH_EDITOR - HandSkeletalMesh->InvalidateDeriveDataCacheGUID(); - HandSkeletalMesh->PostEditChange(); -#endif - - // Create Skeleton object and merge all bones - HandSkeletalMesh->SetSkeleton(NewObject()); - HandSkeletalMesh->GetSkeleton()->MergeAllBonesToBoneTree(HandSkeletalMesh); - HandSkeletalMesh->PostLoad(); - - delete OvrMesh; - delete OvrSkeleton; - - return true; - } - else if (OculusXR::IsOpenXRSystem()) - { - TSharedPtr HandMesh = MakeShareable(new FHandMesh); - TSharedPtr HandSkeleton = MakeShareable(new FHandSkeleton); - - const FOculusXRInputModule* InputModule = static_cast(&FOculusXRInputModule::Get()); - bool SkelResult = InputModule->GetHandTrackingOpenXRExtension()->GetSkeleton(SkeletonType, HandSkeleton); - bool MeshResult = InputModule->GetHandTrackingOpenXRExtension()->GetMesh(MeshType, HandMesh); - - if (!SkelResult || !MeshResult) - { -#if !WITH_EDITOR - UE_LOG(LogOcHandTracking, Error, TEXT("Failed to get mesh or skeleton data from Oculus runtime.")); -#endif - return false; - } - - // Create Skeletal Mesh LOD Render Data -#if WITH_EDITOR - FSkeletalMeshLODModel* LodRenderData = new FSkeletalMeshLODModel(); - HandSkeletalMesh->GetImportedModel()->LODModels.Add(LodRenderData); -#else - FSkeletalMeshLODRenderData* LodRenderData = new FSkeletalMeshLODRenderData(); - HandSkeletalMesh->AllocateResourceForRendering(); - HandSkeletalMesh->GetResourceForRendering()->LODRenderData.Add(LodRenderData); -#endif - - // Set default LOD Info - FSkeletalMeshLODInfo& LodInfo = HandSkeletalMesh->AddLODInfo(); - LodInfo.ScreenSize = 0.3f; - LodInfo.LODHysteresis = 0.2f; - LodInfo.BuildSettings.bUseFullPrecisionUVs = true; - LodInfo.bHasBeenSimplified = false; - - InitializeHandSkeletonOpenXR(HandSkeletalMesh, HandSkeleton, WorldToMeters); - - // Add default material as backup - LodInfo.LODMaterialMap.Add(0); - UMaterialInterface* DefaultMaterial = UMaterial::GetDefaultMaterial(MD_Surface); - HandSkeletalMesh->GetMaterials().Add(DefaultMaterial); - HandSkeletalMesh->GetMaterials()[0].UVChannelData.bInitialized = true; - - // Set skeletal mesh properties - HandSkeletalMesh->SetHasVertexColors(true); - HandSkeletalMesh->SetEnablePerPolyCollision(false); - - InitializeHandMeshOpenXR(HandSkeletalMesh, HandMesh, WorldToMeters); - -#if WITH_EDITOR - HandSkeletalMesh->InvalidateDeriveDataCacheGUID(); - HandSkeletalMesh->PostEditChange(); -#endif - - // Create Skeleton object and merge all bones - HandSkeletalMesh->SetSkeleton(NewObject()); - HandSkeletalMesh->GetSkeleton()->MergeAllBonesToBoneTree(HandSkeletalMesh); - HandSkeletalMesh->PostLoad(); - - return true; - } - } -#endif - return false; - } - - void FOculusHandTracking::InitializeHandMesh(USkeletalMesh* SkeletalMesh, const ovrpMesh* OvrMesh, const float WorldToMeters) - { -#if WITH_EDITOR - FSkeletalMeshLODModel* LodRenderData = &SkeletalMesh->GetImportedModel()->LODModels[0]; - - // Initialize mesh section - LodRenderData->Sections.SetNumUninitialized(1); - new (&LodRenderData->Sections[0]) FSkelMeshSection(); - auto& MeshSection = LodRenderData->Sections[0]; - - // Set default mesh section properties - MeshSection.MaterialIndex = 0; - MeshSection.BaseIndex = 0; - MeshSection.NumTriangles = OvrMesh->NumIndices / 3; - MeshSection.BaseVertexIndex = 0; - MeshSection.MaxBoneInfluences = 4; - MeshSection.NumVertices = OvrMesh->NumVertices; - - float MaxDistSq = MIN_flt; - for (uint32_t VertexIndex = 0; VertexIndex < OvrMesh->NumVertices; VertexIndex++) - { - FSoftSkinVertex SoftVertex; - FMemory::Memzero(SoftVertex.InfluenceWeights); - FMemory::Memzero(SoftVertex.InfluenceBones); - - // Update vertex data - SoftVertex.Color = FColor::White; - ovrpVector3f VertexPosition = OvrMesh->VertexPositions[VertexIndex]; - ovrpVector3f Normal = OvrMesh->VertexNormals[VertexIndex]; - SoftVertex.Position = FVector3f(VertexPosition.x, VertexPosition.z, VertexPosition.y) * WorldToMeters; - SoftVertex.TangentZ = FVector3f(Normal.x, Normal.z, Normal.y); - SoftVertex.TangentX = FVector3f(1.0f, 0.0f, 0.0f); - SoftVertex.TangentY = FVector3f(0.0f, 1.0f, 0.0f); // SoftVertex.TangentZ^ SoftVertex.TangentX* SoftVertex.TangentZ.W; - SoftVertex.UVs[0] = FVector2f(OvrMesh->VertexUV0[VertexIndex].x, OvrMesh->VertexUV0[VertexIndex].y); - - // Update the Bounds - float VertexDistSq = SoftVertex.Position.SizeSquared(); - if (VertexDistSq > MaxDistSq) - MaxDistSq = VertexDistSq; - - // Update blend weights and indices - ovrpVector4f BlendWeights = OvrMesh->BlendWeights[VertexIndex]; - ovrpVector4s BlendIndices = OvrMesh->BlendIndices[VertexIndex]; - - SoftVertex.InfluenceWeights[0] = UE::AnimationCore::MaxRawBoneWeightFloat * BlendWeights.x; - SoftVertex.InfluenceBones[0] = BlendIndices.x; - SoftVertex.InfluenceWeights[1] = UE::AnimationCore::MaxRawBoneWeightFloat * BlendWeights.y; - SoftVertex.InfluenceBones[1] = BlendIndices.y; - SoftVertex.InfluenceWeights[2] = UE::AnimationCore::MaxRawBoneWeightFloat * BlendWeights.z; - SoftVertex.InfluenceBones[2] = BlendIndices.z; - SoftVertex.InfluenceWeights[3] = UE::AnimationCore::MaxRawBoneWeightFloat * BlendWeights.w; - SoftVertex.InfluenceBones[3] = BlendIndices.w; - - MeshSection.SoftVertices.Add(SoftVertex); - } - - // Update bone map - for (uint32 BoneIndex = 0; BoneIndex < (uint32)SkeletalMesh->GetRefSkeleton().GetNum(); BoneIndex++) - { - MeshSection.BoneMap.Add(BoneIndex); - } - - // Update LOD render data - LodRenderData->NumVertices = OvrMesh->NumVertices; - LodRenderData->NumTexCoords = 1; - - // Create index buffer - for (uint32_t Index = 0; Index < OvrMesh->NumIndices; Index++) - { - LodRenderData->IndexBuffer.Add(OvrMesh->Indices[Index]); - } - - // Finalize Bounds - float MaxDist = FMath::Sqrt(MaxDistSq); - FBoxSphereBounds Bounds; - Bounds.Origin = FVector::ZeroVector; - Bounds.BoxExtent = FVector(MaxDist); - Bounds.SphereRadius = MaxDist; - SkeletalMesh->SetImportedBounds(Bounds); - -#else - FSkeletalMeshLODRenderData* LodRenderData = &SkeletalMesh->GetResourceForRendering()->LODRenderData[0]; - - // Initialize Mesh Section - LodRenderData->RenderSections.SetNumUninitialized(1); - new (&LodRenderData->RenderSections[0]) FSkelMeshRenderSection(); - auto& MeshSection = LodRenderData->RenderSections[0]; - - // Initialize render section properties - MeshSection.MaterialIndex = 0; - MeshSection.BaseIndex = 0; - MeshSection.NumTriangles = OvrMesh->NumIndices / 3; - MeshSection.BaseVertexIndex = 0; - MeshSection.MaxBoneInfluences = 4; - MeshSection.NumVertices = OvrMesh->NumVertices; - MeshSection.bCastShadow = true; - MeshSection.bDisabled = false; - MeshSection.bRecomputeTangent = false; - - // Initialize Vertex Buffers - LodRenderData->StaticVertexBuffers.PositionVertexBuffer.Init(OvrMesh->NumVertices); - LodRenderData->StaticVertexBuffers.StaticMeshVertexBuffer.Init(OvrMesh->NumVertices, 1); - LodRenderData->StaticVertexBuffers.ColorVertexBuffer.Init(OvrMesh->NumVertices); - - // Initialize Skin Weights - TArray InWeights; - InWeights.AddUninitialized(OvrMesh->NumVertices); - - float MaxDistSq = MIN_flt; - TMap> OverlappingVertices; - for (uint32_t VertexIndex = 0; VertexIndex < OvrMesh->NumVertices; VertexIndex++) - { - FMemory::Memzero(InWeights[VertexIndex].InfluenceWeights); - FMemory::Memzero(InWeights[VertexIndex].InfluenceBones); - // Initialize vertex data - FModelVertex ModelVertex; - - // Update Model Vertex - ovrpVector3f VertexPosition = OvrMesh->VertexPositions[VertexIndex]; - ovrpVector3f Normal = OvrMesh->VertexNormals[VertexIndex]; - ModelVertex.Position = FVector3f(VertexPosition.x, VertexPosition.z, VertexPosition.y) * WorldToMeters; - ModelVertex.TangentZ = FVector3f(Normal.x, Normal.z, Normal.y); - ModelVertex.TangentX = FVector3f(1.0f, 0.0f, 0.0f); - ModelVertex.TexCoord = FVector2f(OvrMesh->VertexUV0[VertexIndex].x, OvrMesh->VertexUV0[VertexIndex].y); - - // Add Model Vertex data to vertex buffer - LodRenderData->StaticVertexBuffers.PositionVertexBuffer.VertexPosition(VertexIndex) = ModelVertex.Position; - LodRenderData->StaticVertexBuffers.StaticMeshVertexBuffer.SetVertexTangents(VertexIndex, ModelVertex.TangentX, ModelVertex.GetTangentY(), ModelVertex.TangentZ); - LodRenderData->StaticVertexBuffers.StaticMeshVertexBuffer.SetVertexUV(VertexIndex, 0, ModelVertex.TexCoord); - - // Update the Bounds - float VertexDistSq = ModelVertex.Position.SizeSquared(); - if (VertexDistSq > MaxDistSq) - MaxDistSq = VertexDistSq; - - // Set vertex blend weights and indices - TArray Vertices; - ovrpVector4f BlendWeights = OvrMesh->BlendWeights[VertexIndex]; - ovrpVector4s BlendIndices = OvrMesh->BlendIndices[VertexIndex]; - - InWeights[VertexIndex].InfluenceWeights[0] = UE::AnimationCore::MaxRawBoneWeightFloat * BlendWeights.x; - InWeights[VertexIndex].InfluenceBones[0] = BlendIndices.x; - Vertices.Add(BlendIndices.x); - InWeights[VertexIndex].InfluenceWeights[1] = UE::AnimationCore::MaxRawBoneWeightFloat * BlendWeights.y; - InWeights[VertexIndex].InfluenceBones[1] = BlendIndices.y; - Vertices.Add(BlendIndices.y); - InWeights[VertexIndex].InfluenceWeights[2] = UE::AnimationCore::MaxRawBoneWeightFloat * BlendWeights.z; - InWeights[VertexIndex].InfluenceBones[2] = BlendIndices.z; - Vertices.Add(BlendIndices.z); - InWeights[VertexIndex].InfluenceWeights[3] = UE::AnimationCore::MaxRawBoneWeightFloat * BlendWeights.w; - InWeights[VertexIndex].InfluenceBones[3] = BlendIndices.w; - Vertices.Add(BlendIndices.w); - - OverlappingVertices.Add(VertexIndex, Vertices); - } - - // Update bone map for mesh section - for (uint32 BoneIndex = 0; BoneIndex < (uint32)SkeletalMesh->GetRefSkeleton().GetNum(); BoneIndex++) - { - MeshSection.BoneMap.Add(BoneIndex); - } - - // Finalize Bounds - float MaxDist = FMath::Sqrt(MaxDistSq); - FBoxSphereBounds Bounds; - Bounds.Origin = FVector::ZeroVector; - Bounds.BoxExtent = FVector(MaxDist); - Bounds.SphereRadius = MaxDist; - SkeletalMesh->SetImportedBounds(Bounds); - - // Assign skin weights to vertex buffer - LodRenderData->SkinWeightVertexBuffer = InWeights; - MeshSection.DuplicatedVerticesBuffer.Init(OvrMesh->NumVertices, OverlappingVertices); - - // Set index buffer - LodRenderData->MultiSizeIndexContainer.CreateIndexBuffer(sizeof(uint16_t)); - for (uint32_t Index = 0; Index < OvrMesh->NumIndices; Index++) - { - LodRenderData->MultiSizeIndexContainer.GetIndexBuffer()->AddItem(OvrMesh->Indices[Index]); - } -#endif - } - - void FOculusHandTracking::InitializeHandMeshOpenXR(USkeletalMesh* SkeletalMesh, const TSharedPtr XrMesh, const float WorldToMeters) - { -#if WITH_EDITOR - FSkeletalMeshLODModel* LodRenderData = &SkeletalMesh->GetImportedModel()->LODModels[0]; - - // Initialize mesh section - LodRenderData->Sections.SetNumUninitialized(1); - new (&LodRenderData->Sections[0]) FSkelMeshSection(); - auto& MeshSection = LodRenderData->Sections[0]; - - // Set default mesh section properties - MeshSection.MaterialIndex = 0; - MeshSection.BaseIndex = 0; - MeshSection.NumTriangles = XrMesh->NumIndices / 3; - MeshSection.BaseVertexIndex = 0; - MeshSection.MaxBoneInfluences = 4; - MeshSection.NumVertices = XrMesh->NumVertices; - - float MaxDistSq = MIN_flt; - for (uint32_t VertexIndex = 0; VertexIndex < XrMesh->NumVertices; VertexIndex++) - { - FSoftSkinVertex SoftVertex; - FMemory::Memzero(SoftVertex.InfluenceWeights); - FMemory::Memzero(SoftVertex.InfluenceBones); - - // Update vertex data - SoftVertex.Color = FColor::White; - XrVector3f VertexPosition = XrMesh->VertexPositions[VertexIndex]; - XrVector3f Normal = XrMesh->VertexNormals[VertexIndex]; - SoftVertex.Position = FVector3f(VertexPosition.x, VertexPosition.z, VertexPosition.y) * WorldToMeters; - SoftVertex.TangentZ = FVector3f(Normal.x, Normal.z, Normal.y); - SoftVertex.TangentX = FVector3f(1.0f, 0.0f, 0.0f); - SoftVertex.TangentY = FVector3f(0.0f, 1.0f, 0.0f); // SoftVertex.TangentZ^ SoftVertex.TangentX* SoftVertex.TangentZ.W; - SoftVertex.UVs[0] = FVector2f(XrMesh->VertexUV0[VertexIndex].x, XrMesh->VertexUV0[VertexIndex].y); - - // Update the Bounds - float VertexDistSq = SoftVertex.Position.SizeSquared(); - if (VertexDistSq > MaxDistSq) - MaxDistSq = VertexDistSq; - - // Update blend weights and indices - XrVector4f BlendWeights = XrMesh->BlendWeights[VertexIndex]; - XrVector4sFB BlendIndices = XrMesh->BlendIndices[VertexIndex]; - - SoftVertex.InfluenceWeights[0] = UE::AnimationCore::MaxRawBoneWeightFloat * BlendWeights.x; - SoftVertex.InfluenceBones[0] = BlendIndices.x; - SoftVertex.InfluenceWeights[1] = UE::AnimationCore::MaxRawBoneWeightFloat * BlendWeights.y; - SoftVertex.InfluenceBones[1] = BlendIndices.y; - SoftVertex.InfluenceWeights[2] = UE::AnimationCore::MaxRawBoneWeightFloat * BlendWeights.z; - SoftVertex.InfluenceBones[2] = BlendIndices.z; - SoftVertex.InfluenceWeights[3] = UE::AnimationCore::MaxRawBoneWeightFloat * BlendWeights.w; - SoftVertex.InfluenceBones[3] = BlendIndices.w; - - MeshSection.SoftVertices.Add(SoftVertex); - } - - // Update bone map - for (uint32 BoneIndex = 0; BoneIndex < (uint32)SkeletalMesh->GetRefSkeleton().GetNum(); BoneIndex++) - { - MeshSection.BoneMap.Add(BoneIndex); - } - - // Update LOD render data - LodRenderData->NumVertices = XrMesh->NumVertices; - LodRenderData->NumTexCoords = 1; - - // Create index buffer - for (uint32_t Index = 0; Index < XrMesh->NumIndices; Index++) - { - LodRenderData->IndexBuffer.Add(XrMesh->Indices[Index]); - } - - // Finalize Bounds - float MaxDist = FMath::Sqrt(MaxDistSq); - FBoxSphereBounds Bounds; - Bounds.Origin = FVector::ZeroVector; - Bounds.BoxExtent = FVector(MaxDist); - Bounds.SphereRadius = MaxDist; - SkeletalMesh->SetImportedBounds(Bounds); - -#else - FSkeletalMeshLODRenderData* LodRenderData = &SkeletalMesh->GetResourceForRendering()->LODRenderData[0]; - - // Initialize Mesh Section - LodRenderData->RenderSections.SetNumUninitialized(1); - new (&LodRenderData->RenderSections[0]) FSkelMeshRenderSection(); - auto& MeshSection = LodRenderData->RenderSections[0]; - - // Initialize render section properties - MeshSection.MaterialIndex = 0; - MeshSection.BaseIndex = 0; - MeshSection.NumTriangles = XrMesh->NumIndices / 3; - MeshSection.BaseVertexIndex = 0; - MeshSection.MaxBoneInfluences = 4; - MeshSection.NumVertices = XrMesh->NumVertices; - MeshSection.bCastShadow = true; - MeshSection.bDisabled = false; - MeshSection.bRecomputeTangent = false; - - // Initialize Vertex Buffers - LodRenderData->StaticVertexBuffers.PositionVertexBuffer.Init(XrMesh->NumVertices); - LodRenderData->StaticVertexBuffers.StaticMeshVertexBuffer.Init(XrMesh->NumVertices, 1); - LodRenderData->StaticVertexBuffers.ColorVertexBuffer.Init(XrMesh->NumVertices); - - // Initialize Skin Weights - TArray InWeights; - InWeights.AddUninitialized(XrMesh->NumVertices); - - float MaxDistSq = MIN_flt; - TMap> OverlappingVertices; - for (uint32_t VertexIndex = 0; VertexIndex < XrMesh->NumVertices; VertexIndex++) - { - FMemory::Memzero(InWeights[VertexIndex].InfluenceWeights); - FMemory::Memzero(InWeights[VertexIndex].InfluenceBones); - // Initialize vertex data - FModelVertex ModelVertex; - - // Update Model Vertex - XrVector3f VertexPosition = XrMesh->VertexPositions[VertexIndex]; - XrVector3f Normal = XrMesh->VertexNormals[VertexIndex]; - ModelVertex.Position = FVector3f(VertexPosition.x, VertexPosition.z, VertexPosition.y) * WorldToMeters; - ModelVertex.TangentZ = FVector3f(Normal.x, Normal.z, Normal.y); - ModelVertex.TangentX = FVector3f(1.0f, 0.0f, 0.0f); - ModelVertex.TexCoord = FVector2f(XrMesh->VertexUV0[VertexIndex].x, XrMesh->VertexUV0[VertexIndex].y); - - // Add Model Vertex data to vertex buffer - LodRenderData->StaticVertexBuffers.PositionVertexBuffer.VertexPosition(VertexIndex) = ModelVertex.Position; - LodRenderData->StaticVertexBuffers.StaticMeshVertexBuffer.SetVertexTangents(VertexIndex, ModelVertex.TangentX, ModelVertex.GetTangentY(), ModelVertex.TangentZ); - LodRenderData->StaticVertexBuffers.StaticMeshVertexBuffer.SetVertexUV(VertexIndex, 0, ModelVertex.TexCoord); - - // Update the Bounds - float VertexDistSq = ModelVertex.Position.SizeSquared(); - if (VertexDistSq > MaxDistSq) - MaxDistSq = VertexDistSq; - - // Set vertex blend weights and indices - TArray Vertices; - XrVector4f BlendWeights = XrMesh->BlendWeights[VertexIndex]; - XrVector4sFB BlendIndices = XrMesh->BlendIndices[VertexIndex]; - - InWeights[VertexIndex].InfluenceWeights[0] = UE::AnimationCore::MaxRawBoneWeightFloat * BlendWeights.x; - InWeights[VertexIndex].InfluenceBones[0] = BlendIndices.x; - Vertices.Add(BlendIndices.x); - InWeights[VertexIndex].InfluenceWeights[1] = UE::AnimationCore::MaxRawBoneWeightFloat * BlendWeights.y; - InWeights[VertexIndex].InfluenceBones[1] = BlendIndices.y; - Vertices.Add(BlendIndices.y); - InWeights[VertexIndex].InfluenceWeights[2] = UE::AnimationCore::MaxRawBoneWeightFloat * BlendWeights.z; - InWeights[VertexIndex].InfluenceBones[2] = BlendIndices.z; - Vertices.Add(BlendIndices.z); - InWeights[VertexIndex].InfluenceWeights[3] = UE::AnimationCore::MaxRawBoneWeightFloat * BlendWeights.w; - InWeights[VertexIndex].InfluenceBones[3] = BlendIndices.w; - Vertices.Add(BlendIndices.w); - - OverlappingVertices.Add(VertexIndex, Vertices); - } - - // Update bone map for mesh section - for (uint32 BoneIndex = 0; BoneIndex < (uint32)SkeletalMesh->GetRefSkeleton().GetNum(); BoneIndex++) - { - MeshSection.BoneMap.Add(BoneIndex); - } - - // Finalize Bounds - float MaxDist = FMath::Sqrt(MaxDistSq); - FBoxSphereBounds Bounds; - Bounds.Origin = FVector::ZeroVector; - Bounds.BoxExtent = FVector(MaxDist); - Bounds.SphereRadius = MaxDist; - SkeletalMesh->SetImportedBounds(Bounds); - - // Assign skin weights to vertex buffer - LodRenderData->SkinWeightVertexBuffer = InWeights; - MeshSection.DuplicatedVerticesBuffer.Init(XrMesh->NumVertices, OverlappingVertices); - - // Set index buffer - LodRenderData->MultiSizeIndexContainer.CreateIndexBuffer(sizeof(uint16_t)); - for (uint32_t Index = 0; Index < XrMesh->NumIndices; Index++) - { - LodRenderData->MultiSizeIndexContainer.GetIndexBuffer()->AddItem(XrMesh->Indices[Index]); - } -#endif - } - - void FOculusHandTracking::InitializeHandSkeleton(USkeletalMesh* SkeletalMesh, const ovrpSkeleton2* OvrSkeleton, const float WorldToMeters) - { - SkeletalMesh->GetRefSkeleton().Empty(OvrSkeleton->NumBones); - -#if WITH_EDITOR - FSkeletalMeshLODModel* LodRenderData = &SkeletalMesh->GetImportedModel()->LODModels[0]; -#else - FSkeletalMeshLODRenderData* LodRenderData = &SkeletalMesh->GetResourceForRendering()->LODRenderData[0]; -#endif - SkeletalMesh->SetHasVertexColors(true); - - checkf(OvrSkeleton->NumBones <= static_cast(TNumericLimits::Max()), TEXT("Bone indices are stored as uint8 type.")); - for (uint8 BoneIndex = 0; BoneIndex < static_cast(OvrSkeleton->NumBones); BoneIndex++) - { - LodRenderData->ActiveBoneIndices.Add(BoneIndex); - LodRenderData->RequiredBones.Add(BoneIndex); - - FText BoneDisplayName; - if (!FindBoneDisplayName(BoneDisplayName, BoneIndex)) - { - UE_LOG(LogOcHandTracking, Error, TEXT("Cannot find bone display name for bone index: %d."), BoneIndex) - continue; - } - FString BoneString = BoneDisplayName.ToString(); - FName BoneName = FName(*BoneString); - - FTransform Transform = FTransform::Identity; - FVector BonePosition = OvrBoneVectorToFVector(OvrSkeleton->Bones[BoneIndex].Pose.Position, WorldToMeters); - FQuat BoneRotation = BoneIndex == 0 ? FQuat(-1.0f, 0.0f, 0.0f, 1.0f) : OvrBoneQuatToFQuat(OvrSkeleton->Bones[BoneIndex].Pose.Orientation); - Transform.SetLocation(BonePosition); - Transform.SetRotation(BoneRotation); - - FReferenceSkeletonModifier Modifier = FReferenceSkeletonModifier(SkeletalMesh->GetRefSkeleton(), nullptr); - int32 ParentIndex = -1; - if (BoneIndex > 0) - { - if (OvrSkeleton->Bones[BoneIndex].ParentBoneIndex == ovrpBoneId::ovrpBoneId_Invalid) - { - ParentIndex = 0; - } - else - { - ParentIndex = OvrSkeleton->Bones[BoneIndex].ParentBoneIndex; - } - } - Modifier.Add(FMeshBoneInfo(BoneName, BoneString, ParentIndex), Transform); - } - SkeletalMesh->CalculateInvRefMatrices(); - } - - void FOculusHandTracking::InitializeHandSkeletonOpenXR(USkeletalMesh* SkeletalMesh, const TSharedPtr Skeleton, const float WorldToMeters) - { - SkeletalMesh->GetRefSkeleton().Empty(Skeleton->NumBones); - -#if WITH_EDITOR - FSkeletalMeshLODModel* LodRenderData = &SkeletalMesh->GetImportedModel()->LODModels[0]; -#else - FSkeletalMeshLODRenderData* LodRenderData = &SkeletalMesh->GetResourceForRendering()->LODRenderData[0]; -#endif - SkeletalMesh->SetHasVertexColors(true); - - checkf(Skeleton->NumBones <= static_cast(TNumericLimits::Max()), TEXT("Bone indices are stored as uint8 type.")); - for (uint8 BoneIndex = 0; BoneIndex < static_cast(Skeleton->NumBones); BoneIndex++) - { - LodRenderData->ActiveBoneIndices.Add(BoneIndex); - LodRenderData->RequiredBones.Add(BoneIndex); - - FText BoneDisplayName; - if (!FindBoneDisplayName(BoneDisplayName, BoneIndex)) - { - UE_LOG(LogOcHandTracking, Error, TEXT("Cannot find bone display name for bone index: %d."), BoneIndex) - continue; - } - FString BoneString = BoneDisplayName.ToString(); - FName BoneName = FName(*BoneString); - - FTransform Transform = FTransform::Identity; - FVector BonePosition = HandBoneVectorToFVector(Skeleton->Bones[BoneIndex].Pose.position, WorldToMeters); - FQuat BoneRotation = BoneIndex == 0 ? FQuat(-1.0f, 0.0f, 0.0f, 1.0f) : HandBoneQuatToFQuat(Skeleton->Bones[BoneIndex].Pose.orientation); - - Transform.SetLocation(BonePosition); - Transform.SetRotation(BoneRotation); - - FReferenceSkeletonModifier Modifier = FReferenceSkeletonModifier(SkeletalMesh->GetRefSkeleton(), nullptr); - int32 ParentIndex = -1; - if (BoneIndex > 0) - { - if (Skeleton->Bones[BoneIndex].ParentBoneIndex == static_cast(EHandBoneId::Invalid)) - { - ParentIndex = 0; - } - else - { - ParentIndex = Skeleton->Bones[BoneIndex].ParentBoneIndex; - } - } - Modifier.Add(FMeshBoneInfo(BoneName, BoneString, ParentIndex), Transform); - } - SkeletalMesh->CalculateInvRefMatrices(); - } - - TArray FOculusHandTracking::InitializeHandPhysics(const EOculusXRHandType SkeletonType, USkinnedMeshComponent* HandComponent, const float WorldToMeters) - { - TArray CollisionCapsules; - if (OculusXRHMD::FOculusXRHMD::GetOculusXRHMD() != nullptr) - { - if (!IsPluginWrapperAvailible()) - { - return TArray(); - } - ovrpSkeleton2* OvrSkeleton = new ovrpSkeleton2(); -#if OCULUS_INPUT_SUPPORTED_PLATFORMS - ovrpSkeletonType OvrSkeletonType = (ovrpSkeletonType)((int32)SkeletonType - 1); - if (FOculusXRHMDModule::GetPluginWrapper().GetSkeleton2(OvrSkeletonType, OvrSkeleton) != ovrpSuccess) - { -#if !WITH_EDITOR - UE_LOG(LogOcHandTracking, Error, TEXT("Failed to get skeleton data from Oculus runtime.")); -#endif - delete OvrSkeleton; - return CollisionCapsules; - } -#endif - TArray IgnoreCapsules; - CollisionCapsules.AddDefaulted(OvrSkeleton->NumBoneCapsules); - for (uint32 CapsuleIndex = 0; CapsuleIndex < OvrSkeleton->NumBoneCapsules; CapsuleIndex++) - { - ovrpBoneCapsule OvrBoneCapsule = OvrSkeleton->BoneCapsules[CapsuleIndex]; - - UCapsuleComponent* Capsule = NewObject(HandComponent); - - FVector CapsulePointZero = OvrBoneVectorToFVector(OvrBoneCapsule.Points[0], WorldToMeters); - FVector CapsulePointOne = OvrBoneVectorToFVector(OvrBoneCapsule.Points[1], WorldToMeters); - FVector Delta = (CapsulePointOne - CapsulePointZero); - - FName BoneName = HandComponent->GetSkinnedAsset()->GetRefSkeleton().GetBoneName(OvrBoneCapsule.BoneIndex); - - float CapsuleHeight = Delta.Size(); - float CapsuleRadius = OvrBoneCapsule.Radius * WorldToMeters; - - Capsule->SetCapsuleRadius(CapsuleRadius); - Capsule->SetCapsuleHalfHeight(Delta.Size() / 2 + CapsuleRadius); - Capsule->SetupAttachment(HandComponent, BoneName); - Capsule->SetCollisionProfileName(HandComponent->GetCollisionProfileName()); - Capsule->RegisterComponentWithWorld(HandComponent->GetWorld()); - Capsule->SetCollisionEnabled(ECollisionEnabled::QueryAndPhysics); - FRotator CapsuleRotation = FQuat::FindBetweenVectors(FVector::RightVector, Delta).Rotator() + FRotator(0, 0, 90); - ; - - Capsule->SetRelativeRotation(CapsuleRotation); - Capsule->SetRelativeLocation(CapsulePointZero + (Delta / 2)); - - CollisionCapsules[CapsuleIndex].Capsule = Capsule; - CollisionCapsules[CapsuleIndex].BoneId = (EOculusXRBone)OvrBoneCapsule.BoneIndex; - - IgnoreCapsules.Add(Capsule); - } - - for (int32 CapsuleIndex = 0; CapsuleIndex < CollisionCapsules.Num(); CapsuleIndex++) - { - CollisionCapsules[CapsuleIndex].Capsule->MoveIgnoreComponents = IgnoreCapsules; - } - - return CollisionCapsules; - } - else if (OculusXR::IsOpenXRSystem()) - { - TSharedPtr HandSkeleton = MakeShareable(new FHandSkeleton); -#if OCULUS_INPUT_SUPPORTED_PLATFORMS - const FOculusXRInputModule* InputModule = static_cast(&FOculusXRInputModule::Get()); - if (!InputModule->GetHandTrackingOpenXRExtension()->GetSkeleton(SkeletonType, HandSkeleton)) - { -#if !WITH_EDITOR - UE_LOG(LogOcHandTracking, Error, TEXT("Failed to get skeleton data from Oculus runtime.")); -#endif - return CollisionCapsules; - } -#endif - TArray IgnoreCapsules; - CollisionCapsules.AddDefaulted(HandSkeleton->NumBoneCapsules); - for (uint32 CapsuleIndex = 0; CapsuleIndex < HandSkeleton->NumBoneCapsules; CapsuleIndex++) - { - FHandBoneCapsule XrBoneCapsule = HandSkeleton->BoneCapsules[CapsuleIndex]; - - UCapsuleComponent* Capsule = NewObject(HandComponent); - - FVector CapsulePointZero = HandBoneVectorToFVector(XrBoneCapsule.Points[0], WorldToMeters); - FVector CapsulePointOne = HandBoneVectorToFVector(XrBoneCapsule.Points[1], WorldToMeters); - FVector Delta = (CapsulePointOne - CapsulePointZero); - - FName BoneName = HandComponent->GetSkinnedAsset()->GetRefSkeleton().GetBoneName(XrBoneCapsule.BoneIndex); - - float CapsuleHeight = Delta.Size(); - float CapsuleRadius = XrBoneCapsule.Radius * WorldToMeters; - - Capsule->SetCapsuleRadius(CapsuleRadius); - Capsule->SetCapsuleHalfHeight(Delta.Size() / 2 + CapsuleRadius); - Capsule->SetupAttachment(HandComponent, BoneName); - Capsule->SetCollisionProfileName(HandComponent->GetCollisionProfileName()); - Capsule->RegisterComponentWithWorld(HandComponent->GetWorld()); - Capsule->SetCollisionEnabled(ECollisionEnabled::QueryAndPhysics); - FRotator CapsuleRotation = FQuat::FindBetweenVectors(FVector::RightVector, Delta).Rotator() + FRotator(0, 0, 90); - ; - - Capsule->SetRelativeRotation(CapsuleRotation); - Capsule->SetRelativeLocation(CapsulePointZero + (Delta / 2)); - - CollisionCapsules[CapsuleIndex].Capsule = Capsule; - CollisionCapsules[CapsuleIndex].BoneId = (EOculusXRBone)XrBoneCapsule.BoneIndex; - - IgnoreCapsules.Add(Capsule); - } - - for (int32 CapsuleIndex = 0; CapsuleIndex < CollisionCapsules.Num(); CapsuleIndex++) - { - CollisionCapsules[CapsuleIndex].Capsule->MoveIgnoreComponents = IgnoreCapsules; - } - - return CollisionCapsules; - } - return CollisionCapsules; - } - - ovrpBoneId FOculusHandTracking::ToOvrBone(EOculusXRBone Bone) - { - if (Bone > EOculusXRBone::Bone_Max) - return ovrpBoneId_Invalid; - - return static_cast(Bone); - } - - EHandBoneId FOculusHandTracking::ToHandBone(EOculusXRBone Bone) - { - if (Bone > EOculusXRBone::Bone_Max) - return EHandBoneId::Invalid; - - return static_cast(Bone); - } - - FString FOculusHandTracking::GetBoneName(const uint8 Bone) - { - FText DisplayName; - if (FindBoneDisplayName(DisplayName, Bone)) - { - return DisplayName.ToString(); - } - if (FindBoneDisplayName(DisplayName, static_cast(EOculusXRBone::Invalid))) - { - return DisplayName.ToString(); - } - return { "Invalid" }; - } - - bool FOculusHandTracking::FindBoneDisplayName(FText& DisplayName, uint8 Bone) - { - return StaticEnum()->FindDisplayNameTextByValue(DisplayName, Bone); - } - - EOculusXRTrackingConfidence FOculusHandTracking::ToEOculusXRTrackingConfidence(ovrpTrackingConfidence Confidence) - { - EOculusXRTrackingConfidence TrackingConfidence = EOculusXRTrackingConfidence::Low; - switch (Confidence) - { - case ovrpTrackingConfidence_Low: - TrackingConfidence = EOculusXRTrackingConfidence::Low; - break; - case ovrpTrackingConfidence_High: - TrackingConfidence = EOculusXRTrackingConfidence::High; - break; - } - return TrackingConfidence; - } - - FVector FOculusHandTracking::OvrBoneVectorToFVector(ovrpVector3f ovrpVector, float WorldToMeters) - { - return FVector(ovrpVector.x, -ovrpVector.y, ovrpVector.z) * WorldToMeters; - } - - FQuat FOculusHandTracking::OvrBoneQuatToFQuat(ovrpQuatf ovrpQuat) - { - return FQuat(ovrpQuat.x, -ovrpQuat.y, ovrpQuat.z, -ovrpQuat.w); - } - - FVector FOculusHandTracking::HandBoneVectorToFVector(XrVector3f XrVector, float WorldToMeters) - { - return FVector(XrVector.x, -XrVector.y, XrVector.z) * WorldToMeters; - } - - FQuat FOculusHandTracking::HandBoneQuatToFQuat(XrQuaternionf XrQuat) - { - return FQuat(XrQuat.x, -XrQuat.y, XrQuat.z, -XrQuat.w); - } - - EOculusXRControllerDrivenHandPoseTypes FOculusHandTracking::ControllerDrivenHandType = EOculusXRControllerDrivenHandPoseTypes::None; - - void FOculusHandTracking::SetControllerDrivenHandPoses(const EOculusXRControllerDrivenHandPoseTypes Type) - { - if (!IsPluginWrapperAvailible()) - { - return; - } - - FOculusHandTracking::ControllerDrivenHandType = Type; - switch (Type) - { - case EOculusXRControllerDrivenHandPoseTypes::None: - FOculusXRHMDModule::GetPluginWrapper().SetControllerDrivenHandPoses(false); - FOculusXRHMDModule::GetPluginWrapper().SetControllerDrivenHandPosesAreNatural(false); - break; - case EOculusXRControllerDrivenHandPoseTypes::Natural: - FOculusXRHMDModule::GetPluginWrapper().SetControllerDrivenHandPoses(true); - FOculusXRHMDModule::GetPluginWrapper().SetControllerDrivenHandPosesAreNatural(true); - break; - case EOculusXRControllerDrivenHandPoseTypes::Controller: - FOculusXRHMDModule::GetPluginWrapper().SetControllerDrivenHandPoses(true); - FOculusXRHMDModule::GetPluginWrapper().SetControllerDrivenHandPosesAreNatural(false); - break; - } - } -} // namespace OculusXRInput diff --git a/Plugins/MetaXR/Source/OculusXRInput/Private/OculusXRHandTracking.h b/Plugins/MetaXR/Source/OculusXRInput/Private/OculusXRHandTracking.h deleted file mode 100644 index 2eec796..0000000 --- a/Plugins/MetaXR/Source/OculusXRInput/Private/OculusXRHandTracking.h +++ /dev/null @@ -1,64 +0,0 @@ -// @lint-ignore-every LICENSELINT -// Copyright 1998-2019 Epic Games, Inc. All Rights Reserved. - -#pragma once -#include "OculusXRHMDModule.h" -#include "OculusXRInput.h" -#include "Engine/SkeletalMesh.h" -#include "Components/CapsuleComponent.h" -#include "OculusXRInputHandTrackingTypes.h" - -#include "OculusXRInputFunctionLibrary.h" - -#define LOCTEXT_NAMESPACE "OculusHandTracking" - -DEFINE_LOG_CATEGORY_STATIC(LogOcHandTracking, Log, All); - -//------------------------------------------------------------------------------------------------- -// FOculusHandTracking -//------------------------------------------------------------------------------------------------- -namespace OculusXRInput -{ - class FOculusHandTracking - { - public: - // Oculus Hand Tracking - static FQuat GetBoneRotation(const int32 ControllerIndex, const EOculusXRHandType DeviceHand, const EOculusXRBone BoneId); - static float GetHandScale(const int32 ControllerIndex, const EOculusXRHandType DeviceHand); - static EOculusXRTrackingConfidence GetTrackingConfidence(const int32 ControllerIndex, const EOculusXRHandType DeviceHand); - static EOculusXRTrackingConfidence GetFingerTrackingConfidence(const int32 ControllerIndex, const EOculusXRHandType DeviceHand, const EOculusHandAxes Finger); // OCULUS STRIKE - static FTransform GetPointerPose(const int32 ControllerIndex, const EOculusXRHandType DeviceHand, const float WorldToMeters = 100.f); - static bool IsPointerPoseValid(const int32 ControllerIndex, const EOculusXRHandType DeviceHand); - static bool GetHandSkeletalMesh(USkeletalMesh* HandSkeletalMesh, const EOculusXRHandType SkeletonType, const EOculusXRHandType MeshType, const float WorldToMeters = 100.f); - static TArray InitializeHandPhysics(const EOculusXRHandType SkeletonType, USkinnedMeshComponent* HandComponent, const float WorldToMeters = 100.f); - static EOculusXRTrackingConfidence ToEOculusXRTrackingConfidence(ovrpTrackingConfidence Confidence); - static bool IsHandTrackingEnabled(); - static bool IsHandDominant(const int32 ControllerIndex, const EOculusXRHandType DeviceHand); - static bool IsHandPositionValid(int32 ControllerIndex, EOculusXRHandType DeviceHand); - static void SetControllerDrivenHandPoses(const EOculusXRControllerDrivenHandPoseTypes Type); - - // Helper functions - static ovrpBoneId ToOvrBone(EOculusXRBone Bone); - static EHandBoneId ToHandBone(EOculusXRBone Bone); - static FString GetBoneName(uint8 Bone); - static bool FindBoneDisplayName(FText& DisplayName, uint8 Bone); - - // Converters for converting from ovr bone space (should match up with ovr avatar) - static FVector OvrBoneVectorToFVector(ovrpVector3f ovrpVector, float WorldToMeters); - static FQuat OvrBoneQuatToFQuat(ovrpQuatf ovrpQuat); - static FVector HandBoneVectorToFVector(XrVector3f XrVector, float WorldToMeters); - static FQuat HandBoneQuatToFQuat(XrQuaternionf XrQuat); - - static EOculusXRControllerDrivenHandPoseTypes ControllerDrivenHandType; - - private: - // Initializers for runtime hand assets - static void InitializeHandMesh(USkeletalMesh* SkeletalMesh, const ovrpMesh* OvrMesh, const float WorldToMeters); - static void InitializeHandSkeleton(USkeletalMesh* SkeletalMesh, const ovrpSkeleton2* OvrSkeleton, const float WorldToMeters); - static void InitializeHandMeshOpenXR(USkeletalMesh* SkeletalMesh, const TSharedPtr Mesh, const float WorldToMeters); - static void InitializeHandSkeletonOpenXR(USkeletalMesh* SkeletalMesh, const TSharedPtr Skeleton, const float WorldToMeters); - }; - -} // namespace OculusXRInput - -#undef LOCTEXT_NAMESPACE diff --git a/Plugins/MetaXR/Source/OculusXRInput/Private/OculusXRInput.cpp b/Plugins/MetaXR/Source/OculusXRInput/Private/OculusXRInput.cpp deleted file mode 100644 index 472bac8..0000000 --- a/Plugins/MetaXR/Source/OculusXRInput/Private/OculusXRInput.cpp +++ /dev/null @@ -1,1864 +0,0 @@ -// @lint-ignore-every LICENSELINT -// Copyright Epic Games, Inc. All Rights Reserved. - -#include "OculusXRInput.h" -#include "OculusXRInputOpenXR.h" -#include "OculusXRInputOVR.h" - -#if OCULUS_INPUT_SUPPORTED_PLATFORMS -#include "OculusXRHMD.h" -#include "OculusXRHandTracking.h" -#include "OculusXRMRFunctionLibrary.h" -#include "Misc/CoreDelegates.h" -#include "Features/IModularFeatures.h" -#include "Misc/ConfigCacheIni.h" -#include "Haptics/HapticFeedbackEffect_Base.h" -#include "GenericPlatform/GenericPlatformInputDeviceMapper.h" - -#define OVR_DEBUG_LOGGING 0 - -#define LOCTEXT_NAMESPACE "OculusXRInput" - -static TAutoConsoleVariable CVarOculusPCMBatchDuration( - TEXT("r.Mobile.Oculus.PCMBatchDuration"), - 36, - TEXT("The duration that each PCM haptic batch lasts in ms. Default is 36ms.\n"), - ECVF_Scalability | ECVF_RenderThreadSafe); - -static TAutoConsoleVariable CVarOculusControllerPose( - TEXT("r.Oculus.ControllerPose"), - 0, - TEXT("0 Default controller pose.\n") - TEXT("1 Legacy controller pose.\n") - TEXT("2 Grip controller pose.\n") - TEXT("3 Aim controller pose.\n"), - ECVF_Scalability | ECVF_RenderThreadSafe); - -static TAutoConsoleVariable CVarOculusResetUntrackedInputStates( - TEXT("r.Mobile.Oculus.ResetUntrackedInputStates"), - 0, - TEXT("If true, reset input states of input devices if they are untracked (for example, controllers or hands after Oculus button is held to pause the app).\n"), - ECVF_Scalability | ECVF_RenderThreadSafe); - -namespace OculusXRInput -{ - - const FKey FOculusKey::OculusTouch_Left_Thumbstick("OculusTouch_Left_Thumbstick"); - const FKey FOculusKey::OculusTouch_Left_Trigger("OculusTouch_Left_Trigger"); - const FKey FOculusKey::OculusTouch_Left_FaceButton1("OculusTouch_Left_FaceButton1"); - const FKey FOculusKey::OculusTouch_Left_FaceButton2("OculusTouch_Left_FaceButton2"); - const FKey FOculusKey::OculusTouch_Left_IndexPointing("OculusTouch_Left_IndexPointing"); - const FKey FOculusKey::OculusTouch_Left_Trigger_Proximity("OculusTouch_Left_Trigger_Proximity"); - const FKey FOculusKey::OculusTouch_Left_ThumbUp("OculusTouch_Left_ThumbUp"); - const FKey FOculusKey::OculusTouch_Left_Thumb_Proximity("OculusTouch_Left_Thumb_Proximity"); - const FKey FOculusKey::OculusTouch_Left_ThumbRest("OculusTouch_Left_ThumbRest"); - - const FKey FOculusKey::OculusTouch_Left_ThumbRest_Force("OculusTouch_Left_ThumbRest_Force"); - const FKey FOculusKey::OculusTouch_Left_Stylus_Force("OculusTouch_Left_Stylus_Force"); - const FKey FOculusKey::OculusTouch_Left_IndexTrigger_Curl("OculusTouch_Left_IndexTrigger_Curl"); - const FKey FOculusKey::OculusTouch_Left_IndexTrigger_Slide("OculusTouch_Left_IndexTrigger_Slide"); - const FKey FOculusKey::OculusTouch_Left_IndexTrigger_Force("OculusTouch_Left_IndexTrigger_Force"); - - const FKey FOculusKey::OculusTouch_Right_Thumbstick("OculusTouch_Right_Thumbstick"); - const FKey FOculusKey::OculusTouch_Right_Trigger("OculusTouch_Right_Trigger"); - const FKey FOculusKey::OculusTouch_Right_FaceButton1("OculusTouch_Right_FaceButton1"); - const FKey FOculusKey::OculusTouch_Right_FaceButton2("OculusTouch_Right_FaceButton2"); - const FKey FOculusKey::OculusTouch_Right_IndexPointing("OculusTouch_Right_IndexPointing"); - const FKey FOculusKey::OculusTouch_Right_Trigger_Proximity("OculusTouch_Right_Trigger_Proximity"); - const FKey FOculusKey::OculusTouch_Right_ThumbUp("OculusTouch_Right_ThumbUp"); - const FKey FOculusKey::OculusTouch_Right_Thumb_Proximity("OculusTouch_Right_Thumb_Proximity"); - const FKey FOculusKey::OculusTouch_Right_ThumbRest("OculusTouch_Right_ThumbRest"); - - const FKey FOculusKey::OculusTouch_Right_ThumbRest_Force("OculusTouch_Right_ThumbRest_Force"); - const FKey FOculusKey::OculusTouch_Right_Stylus_Force("OculusTouch_Right_Stylus_Force"); - const FKey FOculusKey::OculusTouch_Right_IndexTrigger_Curl("OculusTouch_Right_IndexTrigger_Curl"); - const FKey FOculusKey::OculusTouch_Right_IndexTrigger_Slide("OculusTouch_Right_IndexTrigger_Slide"); - const FKey FOculusKey::OculusTouch_Right_IndexTrigger_Force("OculusTouch_Right_IndexTrigger_Force"); - - const FKey FOculusKey::OculusRemote_DPad_Down("OculusRemote_DPad_Down"); - const FKey FOculusKey::OculusRemote_DPad_Up("OculusRemote_DPad_Up"); - const FKey FOculusKey::OculusRemote_DPad_Left("OculusRemote_DPad_Left"); - const FKey FOculusKey::OculusRemote_DPad_Right("OculusRemote_DPad_Right"); - const FKey FOculusKey::OculusRemote_Enter("OculusRemote_Enter"); - const FKey FOculusKey::OculusRemote_Back("OculusRemote_Back"); - const FKey FOculusKey::OculusRemote_VolumeUp("OculusRemote_VolumeUp"); - const FKey FOculusKey::OculusRemote_VolumeDown("OculusRemote_VolumeDown"); - const FKey FOculusKey::OculusRemote_Home("OculusRemote_Home"); - - const FKey FOculusKey::OculusHand_Left_ThumbPinch("OculusHand_Left_ThumbPinch"); - const FKey FOculusKey::OculusHand_Left_IndexPinch("OculusHand_Left_IndexPinch"); - const FKey FOculusKey::OculusHand_Left_MiddlePinch("OculusHand_Left_MiddlePinch"); - const FKey FOculusKey::OculusHand_Left_RingPinch("OculusHand_Left_RingPinch"); - const FKey FOculusKey::OculusHand_Left_PinkyPinch("OculusHand_Left_PinkPinch"); - - const FKey FOculusKey::OculusHand_Right_ThumbPinch("OculusHand_Right_ThumbPinch"); - const FKey FOculusKey::OculusHand_Right_IndexPinch("OculusHand_Right_IndexPinch"); - const FKey FOculusKey::OculusHand_Right_MiddlePinch("OculusHand_Right_MiddlePinch"); - const FKey FOculusKey::OculusHand_Right_RingPinch("OculusHand_Right_RingPinch"); - const FKey FOculusKey::OculusHand_Right_PinkyPinch("OculusHand_Right_PinkPinch"); - - const FKey FOculusKey::OculusHand_Left_SystemGesture("OculusHand_Left_SystemGesture"); - const FKey FOculusKey::OculusHand_Right_SystemGesture("OculusHand_Right_SystemGesture"); - - const FKey FOculusKey::OculusHand_Left_ThumbPinchStrength("OculusHand_Left_ThumbPinchStrength"); - const FKey FOculusKey::OculusHand_Left_IndexPinchStrength("OculusHand_Left_IndexPinchStrength"); - const FKey FOculusKey::OculusHand_Left_MiddlePinchStrength("OculusHand_Left_MiddlePinchStrength"); - const FKey FOculusKey::OculusHand_Left_RingPinchStrength("OculusHand_Left_RingPinchStrength"); - const FKey FOculusKey::OculusHand_Left_PinkyPinchStrength("OculusHand_Left_PinkPinchStrength"); - - const FKey FOculusKey::OculusHand_Right_ThumbPinchStrength("OculusHand_Right_ThumbPinchStrength"); - const FKey FOculusKey::OculusHand_Right_IndexPinchStrength("OculusHand_Right_IndexPinchStrength"); - const FKey FOculusKey::OculusHand_Right_MiddlePinchStrength("OculusHand_Right_MiddlePinchStrength"); - const FKey FOculusKey::OculusHand_Right_RingPinchStrength("OculusHand_Right_RingPinchStrength"); - const FKey FOculusKey::OculusHand_Right_PinkyPinchStrength("OculusHand_Right_PinkPinchStrength"); - - const FOculusKeyNames::Type FOculusKeyNames::OculusTouch_Left_Thumbstick("OculusTouch_Left_Thumbstick"); - const FOculusKeyNames::Type FOculusKeyNames::OculusTouch_Left_Trigger("OculusTouch_Left_Trigger"); - const FOculusKeyNames::Type FOculusKeyNames::OculusTouch_Left_FaceButton1("OculusTouch_Left_FaceButton1"); - const FOculusKeyNames::Type FOculusKeyNames::OculusTouch_Left_FaceButton2("OculusTouch_Left_FaceButton2"); - const FOculusKeyNames::Type FOculusKeyNames::OculusTouch_Left_IndexPointing("OculusTouch_Left_IndexPointing"); - const FOculusKeyNames::Type FOculusKeyNames::OculusTouch_Left_Trigger_Proximity("OculusTouch_Left_Trigger_Proximity"); - const FOculusKeyNames::Type FOculusKeyNames::OculusTouch_Left_ThumbUp("OculusTouch_Left_ThumbUp"); - const FOculusKeyNames::Type FOculusKeyNames::OculusTouch_Left_Thumb_Proximity("OculusTouch_Left_Thumb_Proximity"); - const FOculusKeyNames::Type FOculusKeyNames::OculusTouch_Left_ThumbRest("OculusTouch_Left_ThumbRest"); - - const FOculusKeyNames::Type FOculusKeyNames::OculusTouch_Right_Thumbstick("OculusTouch_Right_Thumbstick"); - const FOculusKeyNames::Type FOculusKeyNames::OculusTouch_Right_Trigger("OculusTouch_Right_Trigger"); - const FOculusKeyNames::Type FOculusKeyNames::OculusTouch_Right_FaceButton1("OculusTouch_Right_FaceButton1"); - const FOculusKeyNames::Type FOculusKeyNames::OculusTouch_Right_FaceButton2("OculusTouch_Right_FaceButton2"); - const FOculusKeyNames::Type FOculusKeyNames::OculusTouch_Right_IndexPointing("OculusTouch_Right_IndexPointing"); - const FOculusKeyNames::Type FOculusKeyNames::OculusTouch_Right_Trigger_Proximity("OculusTouch_Right_Trigger_Proximity"); - const FOculusKeyNames::Type FOculusKeyNames::OculusTouch_Right_ThumbUp("OculusTouch_Right_ThumbUp"); - const FOculusKeyNames::Type FOculusKeyNames::OculusTouch_Right_Thumb_Proximity("OculusTouch_Right_Thumb_Proximity"); - const FOculusKeyNames::Type FOculusKeyNames::OculusTouch_Right_ThumbRest("OculusTouch_Right_ThumbRest"); - - const FOculusKeyNames::Type FOculusKeyNames::OculusRemote_DPad_Down("OculusRemote_DPad_Down"); - const FOculusKeyNames::Type FOculusKeyNames::OculusRemote_DPad_Up("OculusRemote_DPad_Up"); - const FOculusKeyNames::Type FOculusKeyNames::OculusRemote_DPad_Left("OculusRemote_DPad_Left"); - const FOculusKeyNames::Type FOculusKeyNames::OculusRemote_DPad_Right("OculusRemote_DPad_Right"); - const FOculusKeyNames::Type FOculusKeyNames::OculusRemote_Enter("OculusRemote_Enter"); - const FOculusKeyNames::Type FOculusKeyNames::OculusRemote_Back("OculusRemote_Back"); - const FOculusKeyNames::Type FOculusKeyNames::OculusRemote_VolumeUp("OculusRemote_VolumeUp"); - const FOculusKeyNames::Type FOculusKeyNames::OculusRemote_VolumeDown("OculusRemote_VolumeDown"); - const FOculusKeyNames::Type FOculusKeyNames::OculusRemote_Home("OculusRemote_Home"); - - const FOculusKeyNames::Type FOculusKeyNames::OculusHand_Left_ThumbPinch("OculusHand_Left_ThumbPinch"); - const FOculusKeyNames::Type FOculusKeyNames::OculusHand_Left_IndexPinch("OculusHand_Left_IndexPinch"); - const FOculusKeyNames::Type FOculusKeyNames::OculusHand_Left_MiddlePinch("OculusHand_Left_MiddlePinch"); - const FOculusKeyNames::Type FOculusKeyNames::OculusHand_Left_RingPinch("OculusHand_Left_RingPinch"); - const FOculusKeyNames::Type FOculusKeyNames::OculusHand_Left_PinkyPinch("OculusHand_Left_PinkPinch"); - - const FOculusKeyNames::Type FOculusKeyNames::OculusHand_Right_ThumbPinch("OculusHand_Right_ThumbPinch"); - const FOculusKeyNames::Type FOculusKeyNames::OculusHand_Right_IndexPinch("OculusHand_Right_IndexPinch"); - const FOculusKeyNames::Type FOculusKeyNames::OculusHand_Right_MiddlePinch("OculusHand_Right_MiddlePinch"); - const FOculusKeyNames::Type FOculusKeyNames::OculusHand_Right_RingPinch("OculusHand_Right_RingPinch"); - const FOculusKeyNames::Type FOculusKeyNames::OculusHand_Right_PinkyPinch("OculusHand_Right_PinkPinch"); - - const FOculusKeyNames::Type FOculusKeyNames::OculusHand_Left_SystemGesture("OculusHand_Left_SystemGesture"); - const FOculusKeyNames::Type FOculusKeyNames::OculusHand_Right_SystemGesture("OculusHand_Right_SystemGesture"); - - const FOculusKeyNames::Type FOculusKeyNames::OculusHand_Left_ThumbPinchStrength("OculusHand_Left_ThumbPinchStrength"); - const FOculusKeyNames::Type FOculusKeyNames::OculusHand_Left_IndexPinchStrength("OculusHand_Left_IndexPinchStrength"); - const FOculusKeyNames::Type FOculusKeyNames::OculusHand_Left_MiddlePinchStrength("OculusHand_Left_MiddlePinchStrength"); - const FOculusKeyNames::Type FOculusKeyNames::OculusHand_Left_RingPinchStrength("OculusHand_Left_RingPinchStrength"); - const FOculusKeyNames::Type FOculusKeyNames::OculusHand_Left_PinkyPinchStrength("OculusHand_Left_PinkPinchStrength"); - - const FOculusKeyNames::Type FOculusKeyNames::OculusHand_Right_ThumbPinchStrength("OculusHand_Right_ThumbPinchStrength"); - const FOculusKeyNames::Type FOculusKeyNames::OculusHand_Right_IndexPinchStrength("OculusHand_Right_IndexPinchStrength"); - const FOculusKeyNames::Type FOculusKeyNames::OculusHand_Right_MiddlePinchStrength("OculusHand_Right_MiddlePinchStrength"); - const FOculusKeyNames::Type FOculusKeyNames::OculusHand_Right_RingPinchStrength("OculusHand_Right_RingPinchStrength"); - const FOculusKeyNames::Type FOculusKeyNames::OculusHand_Right_PinkyPinchStrength("OculusHand_Right_PinkPinchStrength"); - - /** Threshold for treating trigger pulls as button presses, from 0.0 to 1.0 */ - float FOculusXRInput::TriggerThreshold = 0.8f; - - /** Are Remote keys mapped to gamepad or not. */ - bool FOculusXRInput::bRemoteKeysMappedToGamepad = true; - - float FOculusXRInput::InitialButtonRepeatDelay = DefaultInitialButtonRepeatDelay; - float FOculusXRInput::ButtonRepeatDelay = DefaultButtonRepeatDelay; - bool FOculusXRInput::bPulledHapticsDesc = false; - - FOculusXRInput::FOculusXRInput(const TSharedRef& InMessageHandler) - : MessageHandler(InMessageHandler) - , ControllerPairs() - { - // take care of backward compatibility of Remote with Gamepad - if (bRemoteKeysMappedToGamepad) - { - Remote.MapKeysToGamepad(); - } - - FOculusControllerPair& ControllerPair = *new (ControllerPairs) FOculusControllerPair(); - - // TODO: Map the oculus controllers uniquely instead of using the default - ControllerPair.DeviceId = IPlatformInputDeviceMapper::Get().GetDefaultInputDevice(); - - IModularFeatures::Get().RegisterModularFeature(GetModularFeatureName(), this); - - LocalTrackingSpaceRecenterCount = 0; - - UE_LOG(LogOcInput, Log, TEXT("OculusXRInput is initialized")); - } - - FOculusXRInput::~FOculusXRInput() - { - IModularFeatures::Get().UnregisterModularFeature(GetModularFeatureName(), this); - } - - void FOculusXRInput::PreInit() - { - // Load the config, even if we failed to initialize a controller - LoadConfig(); - - // Register the FKeys - EKeys::AddKey(FKeyDetails(FOculusKey::OculusTouch_Left_Thumbstick, LOCTEXT("OculusTouch_Left_Thumbstick", "Oculus Touch (L) Thumbstick CapTouch"), FKeyDetails::GamepadKey | FKeyDetails::Axis1D)); - EKeys::AddKey(FKeyDetails(FOculusKey::OculusTouch_Left_FaceButton1, LOCTEXT("OculusTouch_Left_FaceButton1", "Oculus Touch (L) X Button CapTouch"), FKeyDetails::GamepadKey | FKeyDetails::Axis1D)); - EKeys::AddKey(FKeyDetails(FOculusKey::OculusTouch_Left_Trigger, LOCTEXT("OculusTouch_Left_Trigger", "Oculus Touch (L) Trigger CapTouch"), FKeyDetails::GamepadKey | FKeyDetails::Axis1D)); - EKeys::AddKey(FKeyDetails(FOculusKey::OculusTouch_Left_FaceButton2, LOCTEXT("OculusTouch_Left_FaceButton2", "Oculus Touch (L) Y Button CapTouch"), FKeyDetails::GamepadKey | FKeyDetails::Axis1D)); - EKeys::AddKey(FKeyDetails(FOculusKey::OculusTouch_Left_IndexPointing, LOCTEXT("OculusTouch_Left_IndexPointing", "Oculus Touch (L) Pointing CapTouch"), FKeyDetails::GamepadKey | FKeyDetails::Axis1D | FKeyDetails::NotBlueprintBindableKey, "OculusTouch")); - EKeys::AddKey(FKeyDetails(FOculusKey::OculusTouch_Left_Trigger_Proximity, LOCTEXT("OculusTouch_Left_Trigger_Proximity", "Oculus Touch (L) Trigger Proximity CapTouch"), FKeyDetails::GamepadKey | FKeyDetails::Axis1D | FKeyDetails::NotBlueprintBindableKey, "OculusTouch")); - EKeys::AddKey(FKeyDetails(FOculusKey::OculusTouch_Left_ThumbUp, LOCTEXT("OculusTouch_Left_ThumbUp", "Oculus Touch (L) Thumb Up CapTouch"), FKeyDetails::GamepadKey | FKeyDetails::Axis1D | FKeyDetails::NotBlueprintBindableKey, "OculusTouch")); - EKeys::AddKey(FKeyDetails(FOculusKey::OculusTouch_Left_Thumb_Proximity, LOCTEXT("OculusTouch_Left_Thumb_Proximity", "Oculus Touch (L) Thumbstick Proximity CapTouch"), FKeyDetails::GamepadKey | FKeyDetails::Axis1D | FKeyDetails::NotBlueprintBindableKey, "OculusTouch")); - EKeys::AddKey(FKeyDetails(FOculusKey::OculusTouch_Left_ThumbRest, LOCTEXT("OculusTouch_Left_ThumbRest", "Oculus Touch (L) Thumb Rest CapTouch"), FKeyDetails::GamepadKey | FKeyDetails::Axis1D | FKeyDetails::NotBlueprintBindableKey, "OculusTouch")); - EKeys::AddKey(FKeyDetails(FOculusKey::OculusTouch_Left_ThumbRest_Force, LOCTEXT("OculusTouch_Left_ThumbRest_Force", "Oculus Touch (L) Thumb Rest Force"), FKeyDetails::GamepadKey | FKeyDetails::Axis1D | FKeyDetails::NotBlueprintBindableKey, "OculusTouch")); - EKeys::AddKey(FKeyDetails(FOculusKey::OculusTouch_Left_Stylus_Force, LOCTEXT("OculusTouch_Left_Stylus_Force", "Oculus Touch (L) Stylus Force"), FKeyDetails::GamepadKey | FKeyDetails::Axis1D | FKeyDetails::NotBlueprintBindableKey, "OculusTouch")); - EKeys::AddKey(FKeyDetails(FOculusKey::OculusTouch_Left_IndexTrigger_Curl, LOCTEXT("OculusTouch_Left_IndexTrigger_Curl", "Oculus Touch (L) Trigger Curl CapTouch"), FKeyDetails::GamepadKey | FKeyDetails::Axis1D | FKeyDetails::NotBlueprintBindableKey, "OculusTouch")); - EKeys::AddKey(FKeyDetails(FOculusKey::OculusTouch_Left_IndexTrigger_Slide, LOCTEXT("OculusTouch_Left_IndexTrigger_Slide", "Oculus Touch (L) Trigger Slide CapTouch"), FKeyDetails::GamepadKey | FKeyDetails::Axis1D | FKeyDetails::NotBlueprintBindableKey, "OculusTouch")); - EKeys::AddKey(FKeyDetails(FOculusKey::OculusTouch_Left_IndexTrigger_Force, LOCTEXT("OculusTouch_Left_IndexTrigger_Force", "Oculus Touch (L) Trigger Force"), FKeyDetails::GamepadKey | FKeyDetails::Axis1D | FKeyDetails::NotBlueprintBindableKey, "OculusTouch")); - - EKeys::AddKey(FKeyDetails(FOculusKey::OculusTouch_Right_Thumbstick, LOCTEXT("OculusTouch_Right_Thumbstick", "Oculus Touch (R) Thumbstick CapTouch"), FKeyDetails::GamepadKey | FKeyDetails::Axis1D | FKeyDetails::NotBlueprintBindableKey)); - EKeys::AddKey(FKeyDetails(FOculusKey::OculusTouch_Right_FaceButton1, LOCTEXT("OculusTouch_Right_FaceButton1", "Oculus Touch (R) A Button CapTouch"), FKeyDetails::GamepadKey | FKeyDetails::Axis1D | FKeyDetails::NotBlueprintBindableKey)); - EKeys::AddKey(FKeyDetails(FOculusKey::OculusTouch_Right_Trigger, LOCTEXT("OculusTouch_Right_Trigger", "Oculus Touch (R) Trigger CapTouch"), FKeyDetails::GamepadKey | FKeyDetails::Axis1D | FKeyDetails::NotBlueprintBindableKey)); - EKeys::AddKey(FKeyDetails(FOculusKey::OculusTouch_Right_FaceButton2, LOCTEXT("OculusTouch_Right_FaceButton2", "Oculus Touch (R) B Button CapTouch"), FKeyDetails::GamepadKey | FKeyDetails::Axis1D | FKeyDetails::NotBlueprintBindableKey)); - EKeys::AddKey(FKeyDetails(FOculusKey::OculusTouch_Right_IndexPointing, LOCTEXT("OculusTouch_Right_IndexPointing", "Oculus Touch (R) Pointing CapTouch"), FKeyDetails::GamepadKey | FKeyDetails::Axis1D | FKeyDetails::NotBlueprintBindableKey, "OculusTouch")); - EKeys::AddKey(FKeyDetails(FOculusKey::OculusTouch_Right_Trigger_Proximity, LOCTEXT("OculusTouch_Right_Trigger_Proximity", "Oculus Touch (R) Trigger Proximity CapTouch"), FKeyDetails::GamepadKey | FKeyDetails::Axis1D | FKeyDetails::NotBlueprintBindableKey, "OculusTouch")); - EKeys::AddKey(FKeyDetails(FOculusKey::OculusTouch_Right_ThumbUp, LOCTEXT("OculusTouch_Right_ThumbUp", "Oculus Touch (R) Thumb Up CapTouch"), FKeyDetails::GamepadKey | FKeyDetails::Axis1D | FKeyDetails::NotBlueprintBindableKey, "OculusTouch")); - EKeys::AddKey(FKeyDetails(FOculusKey::OculusTouch_Right_Thumb_Proximity, LOCTEXT("OculusTouch_Right_Thumb_Proximity", "Oculus Touch (R) Thumbstick Proximity CapTouch"), FKeyDetails::GamepadKey | FKeyDetails::Axis1D | FKeyDetails::NotBlueprintBindableKey, "OculusTouch")); - EKeys::AddKey(FKeyDetails(FOculusKey::OculusTouch_Right_ThumbRest, LOCTEXT("OculusTouch_Right_ThumbRest", "Oculus Touch (R) Thumb Rest CapTouch"), FKeyDetails::GamepadKey | FKeyDetails::Axis1D | FKeyDetails::NotBlueprintBindableKey, "OculusTouch")); - EKeys::AddKey(FKeyDetails(FOculusKey::OculusTouch_Right_ThumbRest_Force, LOCTEXT("OculusTouch_Right_ThumbRest_Force", "Oculus Touch (R) Thumb Rest Force"), FKeyDetails::GamepadKey | FKeyDetails::Axis1D | FKeyDetails::NotBlueprintBindableKey, "OculusTouch")); - EKeys::AddKey(FKeyDetails(FOculusKey::OculusTouch_Right_Stylus_Force, LOCTEXT("OculusTouch_Right_Stylus_Force", "Oculus Touch (R) Stylus Force"), FKeyDetails::GamepadKey | FKeyDetails::Axis1D | FKeyDetails::NotBlueprintBindableKey, "OculusTouch")); - EKeys::AddKey(FKeyDetails(FOculusKey::OculusTouch_Right_IndexTrigger_Curl, LOCTEXT("OculusTouch_Right_IndexTrigger_Curl", "Oculus Touch (R) Trigger Curl CapTouch"), FKeyDetails::GamepadKey | FKeyDetails::Axis1D | FKeyDetails::NotBlueprintBindableKey, "OculusTouch")); - EKeys::AddKey(FKeyDetails(FOculusKey::OculusTouch_Right_IndexTrigger_Slide, LOCTEXT("OculusTouch_Right_IndexTrigger_Slide", "Oculus Touch (R) Trigger Slide CapTouch"), FKeyDetails::GamepadKey | FKeyDetails::Axis1D | FKeyDetails::NotBlueprintBindableKey, "OculusTouch")); - EKeys::AddKey(FKeyDetails(FOculusKey::OculusTouch_Right_IndexTrigger_Force, LOCTEXT("OculusTouch_Right_IndexTrigger_Force", "Oculus Touch (R) Trigger Force"), FKeyDetails::GamepadKey | FKeyDetails::Axis1D | FKeyDetails::NotBlueprintBindableKey, "OculusTouch")); - - EKeys::AddMenuCategoryDisplayInfo("OculusRemote", LOCTEXT("OculusRemoteSubCategory", "Oculus Remote"), TEXT("GraphEditor.PadEvent_16x")); - - EKeys::AddKey(FKeyDetails(FOculusKey::OculusRemote_DPad_Up, LOCTEXT("OculusRemote_DPad_Up", "Oculus Remote D-pad Up"), FKeyDetails::GamepadKey, "OculusRemote")); - EKeys::AddKey(FKeyDetails(FOculusKey::OculusRemote_DPad_Down, LOCTEXT("OculusRemote_DPad_Down", "Oculus Remote D-pad Down"), FKeyDetails::GamepadKey, "OculusRemote")); - EKeys::AddKey(FKeyDetails(FOculusKey::OculusRemote_DPad_Left, LOCTEXT("OculusRemote_DPad_Left", "Oculus Remote D-pad Left"), FKeyDetails::GamepadKey, "OculusRemote")); - EKeys::AddKey(FKeyDetails(FOculusKey::OculusRemote_DPad_Right, LOCTEXT("OculusRemote_DPad_Right", "Oculus Remote D-pad Right"), FKeyDetails::GamepadKey, "OculusRemote")); - - EKeys::AddKey(FKeyDetails(FOculusKey::OculusRemote_Enter, LOCTEXT("OculusRemote_Enter", "Oculus Remote Enter"), FKeyDetails::GamepadKey, "OculusRemote")); - EKeys::AddKey(FKeyDetails(FOculusKey::OculusRemote_Back, LOCTEXT("OculusRemote_Back", "Oculus Remote Back"), FKeyDetails::GamepadKey, "OculusRemote")); - - EKeys::AddKey(FKeyDetails(FOculusKey::OculusRemote_VolumeUp, LOCTEXT("OculusRemote_VolumeUp", "Oculus Remote Volume Up"), FKeyDetails::GamepadKey, "OculusRemote")); - EKeys::AddKey(FKeyDetails(FOculusKey::OculusRemote_VolumeDown, LOCTEXT("OculusRemote_VolumeDown", "Oculus Remote Volume Down"), FKeyDetails::GamepadKey, "OculusRemote")); - EKeys::AddKey(FKeyDetails(FOculusKey::OculusRemote_Home, LOCTEXT("OculusRemote_Home", "Oculus Remote Home"), FKeyDetails::GamepadKey, "OculusRemote")); - - EKeys::AddMenuCategoryDisplayInfo("OculusHand", LOCTEXT("OculusHandSubCategory", "Oculus Hand"), TEXT("GraphEditor.PadEvent_16x")); - - EKeys::AddKey(FKeyDetails(FOculusKey::OculusHand_Left_ThumbPinch, LOCTEXT("OculusHand_Left_ThumbPinch", "Oculus Hand (L) Thumb Pinch"), FKeyDetails::GamepadKey | FKeyDetails::NotBlueprintBindableKey, "OculusHand")); - EKeys::AddKey(FKeyDetails(FOculusKey::OculusHand_Left_IndexPinch, LOCTEXT("OculusHand_Left_IndexPinch", "Oculus Hand (L) Index Pinch"), FKeyDetails::GamepadKey | FKeyDetails::NotBlueprintBindableKey, "OculusHand")); - EKeys::AddKey(FKeyDetails(FOculusKey::OculusHand_Left_MiddlePinch, LOCTEXT("OculusHand_Left_MiddlePinch", "Oculus Hand (L) Middle Pinch"), FKeyDetails::GamepadKey | FKeyDetails::NotBlueprintBindableKey, "OculusHand")); - EKeys::AddKey(FKeyDetails(FOculusKey::OculusHand_Left_RingPinch, LOCTEXT("OculusHand_Left_RingPinch", "Oculus Hand (L) Ring Pinch"), FKeyDetails::GamepadKey | FKeyDetails::NotBlueprintBindableKey, "OculusHand")); - EKeys::AddKey(FKeyDetails(FOculusKey::OculusHand_Left_PinkyPinch, LOCTEXT("OculusHand_Left_PinkyPinch", "Oculus Hand (L) Pinky Pinch"), FKeyDetails::GamepadKey | FKeyDetails::NotBlueprintBindableKey, "OculusHand")); - - EKeys::AddKey(FKeyDetails(FOculusKey::OculusHand_Right_ThumbPinch, LOCTEXT("OculusHand_Right_ThumbPinch", "Oculus Hand (R) Thumb Pinch"), FKeyDetails::GamepadKey | FKeyDetails::NotBlueprintBindableKey, "OculusHand")); - EKeys::AddKey(FKeyDetails(FOculusKey::OculusHand_Right_IndexPinch, LOCTEXT("OculusHand_Right_IndexPinch", "Oculus Hand (R) Index Pinch"), FKeyDetails::GamepadKey | FKeyDetails::NotBlueprintBindableKey, "OculusHand")); - EKeys::AddKey(FKeyDetails(FOculusKey::OculusHand_Right_MiddlePinch, LOCTEXT("OculusHand_Right_MiddlePinch", "Oculus Hand (R) Middle Pinch"), FKeyDetails::GamepadKey | FKeyDetails::NotBlueprintBindableKey, "OculusHand")); - EKeys::AddKey(FKeyDetails(FOculusKey::OculusHand_Right_RingPinch, LOCTEXT("OculusHand_Right_RingPinch", "Oculus Hand (R) Ring Pinch"), FKeyDetails::GamepadKey | FKeyDetails::NotBlueprintBindableKey, "OculusHand")); - EKeys::AddKey(FKeyDetails(FOculusKey::OculusHand_Right_PinkyPinch, LOCTEXT("OculusHand_Right_PinkyPinch", "Oculus Hand (R) Pinky Pinch"), FKeyDetails::GamepadKey | FKeyDetails::NotBlueprintBindableKey, "OculusHand")); - - EKeys::AddKey(FKeyDetails(FOculusKey::OculusHand_Left_SystemGesture, LOCTEXT("OculusHand_Left_SystemGesture", "Oculus Hand (L) System Gesture"), FKeyDetails::GamepadKey | FKeyDetails::NotBlueprintBindableKey, "OculusHand")); - EKeys::AddKey(FKeyDetails(FOculusKey::OculusHand_Right_SystemGesture, LOCTEXT("OculusHand_Right_SystemGesture", "Oculus Hand (R) System Gesture"), FKeyDetails::GamepadKey | FKeyDetails::NotBlueprintBindableKey, "OculusHand")); - - EKeys::AddKey(FKeyDetails(FOculusKey::OculusHand_Left_ThumbPinchStrength, LOCTEXT("OculusHand_Left_ThumbPinchStrength", "Oculus Hand (L) Thumb Pinch Strength"), FKeyDetails::GamepadKey | FKeyDetails::Axis1D, "OculusHand")); - EKeys::AddKey(FKeyDetails(FOculusKey::OculusHand_Left_IndexPinchStrength, LOCTEXT("OculusHand_Left_IndexPinchStrength", "Oculus Hand (L) Index Pinch Strength"), FKeyDetails::GamepadKey | FKeyDetails::Axis1D, "OculusHand")); - EKeys::AddKey(FKeyDetails(FOculusKey::OculusHand_Left_MiddlePinchStrength, LOCTEXT("OculusHand_Left_MiddlePinchStrength", "Oculus Hand (L) Middle Pinch Strength"), FKeyDetails::GamepadKey | FKeyDetails::Axis1D, "OculusHand")); - EKeys::AddKey(FKeyDetails(FOculusKey::OculusHand_Left_RingPinchStrength, LOCTEXT("OculusHand_Left_RingPinchStrength", "Oculus Hand (L) Ring Pinch Strength"), FKeyDetails::GamepadKey | FKeyDetails::Axis1D, "OculusHand")); - EKeys::AddKey(FKeyDetails(FOculusKey::OculusHand_Left_PinkyPinchStrength, LOCTEXT("OculusHand_Left_PinkyPinchStrength", "Oculus Hand (L) Pinky Pinch Strength"), FKeyDetails::GamepadKey | FKeyDetails::Axis1D, "OculusHand")); - - EKeys::AddKey(FKeyDetails(FOculusKey::OculusHand_Right_ThumbPinchStrength, LOCTEXT("OculusHand_Right_ThumbPinchStrength", "Oculus Hand (R) Thumb Pinch Strength"), FKeyDetails::GamepadKey | FKeyDetails::Axis1D, "OculusHand")); - EKeys::AddKey(FKeyDetails(FOculusKey::OculusHand_Right_IndexPinchStrength, LOCTEXT("OculusHand_Right_IndexPinchStrength", "Oculus Hand (R) Index Pinch Strength"), FKeyDetails::GamepadKey | FKeyDetails::Axis1D, "OculusHand")); - EKeys::AddKey(FKeyDetails(FOculusKey::OculusHand_Right_MiddlePinchStrength, LOCTEXT("OculusHand_Right_MiddlePinchStrength", "Oculus Hand (R) Middle Pinch Strength"), FKeyDetails::GamepadKey | FKeyDetails::Axis1D, "OculusHand")); - EKeys::AddKey(FKeyDetails(FOculusKey::OculusHand_Right_RingPinchStrength, LOCTEXT("OculusHand_Right_RingPinchStrength", "Oculus Hand (R) Ring Pinch Strength"), FKeyDetails::GamepadKey | FKeyDetails::Axis1D, "OculusHand")); - EKeys::AddKey(FKeyDetails(FOculusKey::OculusHand_Right_PinkyPinchStrength, LOCTEXT("OculusHand_Right_PinkyPinchStrength", "Oculus Hand (R) Pinky Pinch Strength"), FKeyDetails::GamepadKey | FKeyDetails::Axis1D, "OculusHand")); - - UE_LOG(LogOcInput, Log, TEXT("OculusXRInput pre-init called")); - } - - void FOculusXRInput::LoadConfig() - { - const TCHAR* OculusTouchSettings = TEXT("OculusTouch.Settings"); - float ConfigThreshold = TriggerThreshold; - if (GConfig->GetFloat(OculusTouchSettings, TEXT("TriggerThreshold"), ConfigThreshold, GEngineIni)) - { - TriggerThreshold = ConfigThreshold; - } - - const TCHAR* OculusRemoteSettings = TEXT("OculusRemote.Settings"); - bool bConfigRemoteKeysMappedToGamepad; - if (GConfig->GetBool(OculusRemoteSettings, TEXT("bRemoteKeysMappedToGamepad"), bConfigRemoteKeysMappedToGamepad, GEngineIni)) - { - bRemoteKeysMappedToGamepad = bConfigRemoteKeysMappedToGamepad; - } - - GConfig->GetFloat(TEXT("/Script/Engine.InputSettings"), TEXT("InitialButtonRepeatDelay"), InitialButtonRepeatDelay, GInputIni); - GConfig->GetFloat(TEXT("/Script/Engine.InputSettings"), TEXT("ButtonRepeatDelay"), ButtonRepeatDelay, GInputIni); - } - - void FOculusXRInput::Tick(float DeltaTime) - { - // Nothing to do when ticking, for now. SendControllerEvents() handles everything. - } - - void FOculusXRInput::SendControllerEvents() - { - const double CurrentTime = FPlatformTime::Seconds(); - const float AnalogButtonPressThreshold = TriggerThreshold; - float DeltaTime = 0.0; - if (StartTime < CurrentTime) - { - DeltaTime = (float)(CurrentTime - StartTime); - StartTime = CurrentTime; - } - - if (IOculusXRHMDModule::IsAvailable() && FOculusXRHMDModule::GetPluginWrapper().GetInitialized() && FApp::HasVRFocus()) - { - if (MessageHandler.IsValid() && GEngine->XRSystem->GetHMDDevice()) - { - FPlatformUserId PlatUser = IPlatformInputDeviceMapper::Get().GetPrimaryPlatformUser(); - FInputDeviceId DeviceId = IPlatformInputDeviceMapper::Get().GetDefaultInputDevice(); - - OculusXRHMD::FOculusXRHMD* OculusXRHMD = static_cast(GEngine->XRSystem->GetHMDDevice()); - OculusXRHMD->StartGameFrame_GameThread(); - - ovrpControllerState6 OvrpControllerState; - if (OVRP_SUCCESS(FOculusXRHMDModule::GetPluginWrapper().GetControllerState6(ovrpController_Remote, &OvrpControllerState)) && (OvrpControllerState.ConnectedControllerTypes & ovrpController_Remote)) - { - for (int32 ButtonIndex = 0; ButtonIndex < (int32)EOculusRemoteControllerButton::TotalButtonCount; ++ButtonIndex) - { - FOculusButtonState& ButtonState = Remote.Buttons[ButtonIndex]; - check(!ButtonState.Key.IsNone()); // is button's name initialized? - - // Determine if the button is pressed down - bool bButtonPressed = false; - switch ((EOculusRemoteControllerButton)ButtonIndex) - { - case EOculusRemoteControllerButton::DPad_Up: - bButtonPressed = (OvrpControllerState.Buttons & ovrpButton_Up) != 0; - break; - - case EOculusRemoteControllerButton::DPad_Down: - bButtonPressed = (OvrpControllerState.Buttons & ovrpButton_Down) != 0; - break; - - case EOculusRemoteControllerButton::DPad_Left: - bButtonPressed = (OvrpControllerState.Buttons & ovrpButton_Left) != 0; - break; - - case EOculusRemoteControllerButton::DPad_Right: - bButtonPressed = (OvrpControllerState.Buttons & ovrpButton_Right) != 0; - break; - - case EOculusRemoteControllerButton::Enter: - bButtonPressed = (OvrpControllerState.Buttons & ovrpButton_Start) != 0; - break; - - case EOculusRemoteControllerButton::Back: - bButtonPressed = (OvrpControllerState.Buttons & ovrpButton_Back) != 0; - break; - - case EOculusRemoteControllerButton::VolumeUp: -#ifdef SUPPORT_INTERNAL_BUTTONS - bButtonPressed = (OvrpControllerState.Buttons & ovrpButton_VolUp) != 0; -#endif - break; - - case EOculusRemoteControllerButton::VolumeDown: -#ifdef SUPPORT_INTERNAL_BUTTONS - bButtonPressed = (OvrpControllerState.Buttons & ovrpButton_VolDown) != 0; -#endif - break; - - case EOculusRemoteControllerButton::Home: -#ifdef SUPPORT_INTERNAL_BUTTONS - bButtonPressed = (OvrpControllerState.Buttons & ovrpButton_Home) != 0; -#endif - break; - - default: - check(0); // unhandled button, shouldn't happen - break; - } - - // Update button state - if (bButtonPressed != ButtonState.bIsPressed) - { - ButtonState.bIsPressed = bButtonPressed; - if (ButtonState.bIsPressed) - { - OnControllerButtonPressed(ButtonState, PlatUser, DeviceId, false); - - // Set the timer for the first repeat - ButtonState.NextRepeatTime = CurrentTime + InitialButtonRepeatDelay; - } - else - { - OnControllerButtonReleased(ButtonState, PlatUser, DeviceId, false); - } - } - - // Apply key repeat, if its time for that - if (ButtonState.bIsPressed && ButtonState.NextRepeatTime <= CurrentTime) - { - OnControllerButtonPressed(ButtonState, PlatUser, DeviceId, true); - - // Set the timer for the next repeat - ButtonState.NextRepeatTime = CurrentTime + ButtonRepeatDelay; - } - } - } - - if (OVRP_SUCCESS(FOculusXRHMDModule::GetPluginWrapper().GetControllerState6((ovrpController)(ovrpController_LTrackedRemote | ovrpController_RTrackedRemote | ovrpController_Touch), &OvrpControllerState))) - { - UE_CLOG(OVR_DEBUG_LOGGING, LogOcInput, Log, TEXT("SendControllerEvents: ButtonState = 0x%X"), OvrpControllerState.Buttons); - UE_CLOG(OVR_DEBUG_LOGGING, LogOcInput, Log, TEXT("SendControllerEvents: Touches = 0x%X"), OvrpControllerState.Touches); - - // If using touch controllers (Quest) use the local tracking space recentering as a signal for recenter - if ((OvrpControllerState.ConnectedControllerTypes & ovrpController_LTouch) != 0 || (OvrpControllerState.ConnectedControllerTypes & ovrpController_RTouch) != 0) - { - int32 recenterCount = 0; - if (OVRP_SUCCESS(FOculusXRHMDModule::GetPluginWrapper().GetLocalTrackingSpaceRecenterCount(&recenterCount))) - { - if (LocalTrackingSpaceRecenterCount != recenterCount) - { - FCoreDelegates::VRControllerRecentered.Broadcast(); - LocalTrackingSpaceRecenterCount = recenterCount; - } - } - } - - for (FOculusControllerPair& ControllerPair : ControllerPairs) - { - FPlatformUserId PlatformUser = IPlatformInputDeviceMapper::Get().GetUserForInputDevice(ControllerPair.DeviceId); - - for (int32 HandIndex = 0; HandIndex < UE_ARRAY_COUNT(ControllerPair.TouchControllerStates); ++HandIndex) - { - FOculusTouchControllerState& State = ControllerPair.TouchControllerStates[HandIndex]; - bool bIsLeft = (HandIndex == (int32)EControllerHand::Left); - - bool bIsMobileController = bIsLeft ? (OvrpControllerState.ConnectedControllerTypes & ovrpController_LTrackedRemote) != 0 : (OvrpControllerState.ConnectedControllerTypes & ovrpController_RTrackedRemote) != 0; - bool bIsTouchController = bIsLeft ? (OvrpControllerState.ConnectedControllerTypes & ovrpController_LTouch) != 0 : (OvrpControllerState.ConnectedControllerTypes & ovrpController_RTouch) != 0; - bool bIsCurrentlyTracked = bIsMobileController || bIsTouchController; - - if (bIsCurrentlyTracked) - { - ovrpNode OvrpNode = (HandIndex == (int32)EControllerHand::Left) ? ovrpNode_HandLeft : ovrpNode_HandRight; - - State.bIsConnected = true; - ovrpBool bResult = true; - State.bIsPositionTracked = OVRP_SUCCESS(FOculusXRHMDModule::GetPluginWrapper().GetNodePositionTracked2(OvrpNode, &bResult)) && bResult; - State.bIsPositionValid = OVRP_SUCCESS(FOculusXRHMDModule::GetPluginWrapper().GetNodePositionValid(OvrpNode, &bResult)) && bResult; - State.bIsOrientationTracked = OVRP_SUCCESS(FOculusXRHMDModule::GetPluginWrapper().GetNodeOrientationTracked2(OvrpNode, &bResult)) && bResult; - State.bIsOrientationValid = OVRP_SUCCESS(FOculusXRHMDModule::GetPluginWrapper().GetNodeOrientationValid(OvrpNode, &bResult)) && bResult; - - const float OvrTriggerAxis = OvrpControllerState.IndexTrigger[HandIndex]; - const float OvrGripAxis = OvrpControllerState.HandTrigger[HandIndex]; - const float OvrThumbRestForce = OvrpControllerState.ThumbRestForce[HandIndex]; - const float OvrStylusForce = OvrpControllerState.StylusForce[HandIndex]; - const float OvrIndexTriggerCurl = OvrpControllerState.IndexTriggerCurl[HandIndex]; - const float OvrIndexTriggerSlide = OvrpControllerState.IndexTriggerSlide[HandIndex]; - const float OvrIndexTriggerForce = OvrpControllerState.IndexTriggerForce[HandIndex]; - - UE_CLOG(OVR_DEBUG_LOGGING, LogOcInput, Log, TEXT("SendControllerEvents: IndexTrigger[%d] = %f"), int(HandIndex), OvrTriggerAxis); - UE_CLOG(OVR_DEBUG_LOGGING, LogOcInput, Log, TEXT("SendControllerEvents: HandTrigger[%d] = %f"), int(HandIndex), OvrGripAxis); - UE_CLOG(OVR_DEBUG_LOGGING, LogOcInput, Log, TEXT("SendControllerEvents: ThumbStick[%d] = { %f, %f }"), int(HandIndex), OvrpControllerState.Thumbstick[HandIndex].x, OvrpControllerState.Thumbstick[HandIndex].y); - UE_CLOG(OVR_DEBUG_LOGGING, LogOcInput, Log, TEXT("SendControllerEvents: ThumbRestForce[%d] = %f"), int(HandIndex), OvrThumbRestForce); - UE_CLOG(OVR_DEBUG_LOGGING, LogOcInput, Log, TEXT("SendControllerEvents: StylusForce[%d] = %f"), int(HandIndex), OvrStylusForce); - UE_CLOG(OVR_DEBUG_LOGGING, LogOcInput, Log, TEXT("SendControllerEvents: IndexTriggerCurl[%d] = %f"), int(HandIndex), OvrIndexTriggerCurl); - UE_CLOG(OVR_DEBUG_LOGGING, LogOcInput, Log, TEXT("SendControllerEvents: IndexTriggerSlide[%d] = %f"), int(HandIndex), OvrIndexTriggerSlide); - UE_CLOG(OVR_DEBUG_LOGGING, LogOcInput, Log, TEXT("SendControllerEvents: IndexTriggerForce[%d] = %f"), int(HandIndex), OvrIndexTriggerForce); - if (bIsMobileController) - { - if (OvrpControllerState.RecenterCount[HandIndex] != State.RecenterCount) - { - State.RecenterCount = OvrpControllerState.RecenterCount[HandIndex]; - FCoreDelegates::VRControllerRecentered.Broadcast(); - } - } - - if (OvrTriggerAxis != State.TriggerAxis) - { - State.TriggerAxis = OvrTriggerAxis; - MessageHandler->OnControllerAnalog(bIsLeft ? EKeys::OculusTouch_Left_Trigger_Axis.GetFName() : EKeys::OculusTouch_Right_Trigger_Axis.GetFName(), PlatformUser, ControllerPair.DeviceId, State.TriggerAxis); - } - - if (OvrGripAxis != State.GripAxis) - { - State.GripAxis = OvrGripAxis; - MessageHandler->OnControllerAnalog(bIsLeft ? EKeys::OculusTouch_Left_Grip_Axis.GetFName() : EKeys::OculusTouch_Right_Grip_Axis.GetFName(), PlatformUser, ControllerPair.DeviceId, State.GripAxis); - } - - ovrpVector2f ThumbstickValue = OvrpControllerState.Thumbstick[HandIndex]; - ovrpVector2f TouchpadValue = OvrpControllerState.Touchpad[HandIndex]; - - if (ThumbstickValue.x != State.ThumbstickAxes.X) - { - State.ThumbstickAxes.X = ThumbstickValue.x; - MessageHandler->OnControllerAnalog(bIsLeft ? EKeys::OculusTouch_Left_Thumbstick_X.GetFName() : EKeys::OculusTouch_Right_Thumbstick_X.GetFName(), PlatformUser, ControllerPair.DeviceId, State.ThumbstickAxes.X); - } - - if (ThumbstickValue.y != State.ThumbstickAxes.Y) - { - State.ThumbstickAxes.Y = ThumbstickValue.y; - MessageHandler->OnControllerAnalog(bIsLeft ? EKeys::OculusTouch_Left_Thumbstick_Y.GetFName() : EKeys::OculusTouch_Right_Thumbstick_Y.GetFName(), PlatformUser, ControllerPair.DeviceId, State.ThumbstickAxes.Y); - } - - if (TouchpadValue.x != State.TouchpadAxes.X) - { - State.TouchpadAxes.X = TouchpadValue.x; - } - - if (TouchpadValue.y != State.TouchpadAxes.Y) - { - State.TouchpadAxes.Y = TouchpadValue.y; - } - - if (OvrThumbRestForce != State.ThumbRestForce) - { - State.ThumbRestForce = OvrThumbRestForce; - MessageHandler->OnControllerAnalog(bIsLeft ? FOculusKey::OculusTouch_Left_ThumbRest_Force.GetFName() : FOculusKey::OculusTouch_Right_ThumbRest_Force.GetFName(), PlatformUser, ControllerPair.DeviceId, State.ThumbRestForce); - } - - if (OvrStylusForce != State.StylusForce) - { - State.StylusForce = OvrStylusForce; - MessageHandler->OnControllerAnalog(bIsLeft ? FOculusKey::OculusTouch_Left_Stylus_Force.GetFName() : FOculusKey::OculusTouch_Right_Stylus_Force.GetFName(), PlatformUser, ControllerPair.DeviceId, State.StylusForce); - } - - if (OvrIndexTriggerCurl != State.IndexTriggerCurl) - { - State.IndexTriggerCurl = OvrIndexTriggerCurl; - MessageHandler->OnControllerAnalog(bIsLeft ? FOculusKey::OculusTouch_Left_IndexTrigger_Curl.GetFName() : FOculusKey::OculusTouch_Right_IndexTrigger_Curl.GetFName(), PlatformUser, ControllerPair.DeviceId, State.IndexTriggerCurl); - } - - if (OvrIndexTriggerSlide != State.IndexTriggerSlide) - { - State.IndexTriggerSlide = OvrIndexTriggerSlide; - MessageHandler->OnControllerAnalog(bIsLeft ? FOculusKey::OculusTouch_Left_IndexTrigger_Slide.GetFName() : FOculusKey::OculusTouch_Right_IndexTrigger_Slide.GetFName(), PlatformUser, ControllerPair.DeviceId, State.IndexTriggerSlide); - } - - if (OvrIndexTriggerForce != State.IndexTriggerForce) - { - State.IndexTriggerForce = OvrIndexTriggerForce; - MessageHandler->OnControllerAnalog(bIsLeft ? FOculusKey::OculusTouch_Left_IndexTrigger_Force.GetFName() : FOculusKey::OculusTouch_Right_IndexTrigger_Force.GetFName(), PlatformUser, ControllerPair.DeviceId, State.IndexTriggerForce); - } - for (int32 ButtonIndex = 0; ButtonIndex < (int32)EOculusTouchControllerButton::TotalButtonCount; ++ButtonIndex) - { - FOculusButtonState& ButtonState = State.Buttons[ButtonIndex]; - check(!ButtonState.Key.IsNone()); // is button's name initialized? - - // Determine if the button is pressed down - bool bButtonPressed = false; - switch ((EOculusTouchControllerButton)ButtonIndex) - { - case EOculusTouchControllerButton::Trigger: - bButtonPressed = State.TriggerAxis >= AnalogButtonPressThreshold; - break; - - case EOculusTouchControllerButton::Grip: - bButtonPressed = State.GripAxis >= AnalogButtonPressThreshold; - break; - - case EOculusTouchControllerButton::XA: - bButtonPressed = bIsLeft ? (OvrpControllerState.Buttons & ovrpButton_X) != 0 : (OvrpControllerState.Buttons & ovrpButton_A) != 0; - break; - - case EOculusTouchControllerButton::YB: - bButtonPressed = bIsLeft ? (OvrpControllerState.Buttons & ovrpButton_Y) != 0 : (OvrpControllerState.Buttons & ovrpButton_B) != 0; - break; - - case EOculusTouchControllerButton::Thumbstick: - bButtonPressed = bIsLeft ? (OvrpControllerState.Buttons & ovrpButton_LThumb) != 0 : (OvrpControllerState.Buttons & ovrpButton_RThumb) != 0; - break; - - case EOculusTouchControllerButton::Thumbstick_Up: - if (bIsTouchController && State.ThumbstickAxes.Size() > 0.7f || bIsMobileController && State.Buttons[(int)EOculusTouchControllerButton::Thumbstick].bIsPressed && State.ThumbstickAxes.Size() > 0.5f) - { - float Angle = FMath::Atan2(State.ThumbstickAxes.Y, State.ThumbstickAxes.X); - bButtonPressed = Angle >= (1.0f / 8.0f) * PI && Angle <= (7.0f / 8.0f) * PI; - } - break; - - case EOculusTouchControllerButton::Thumbstick_Down: - if (bIsTouchController && State.ThumbstickAxes.Size() > 0.7f || bIsMobileController && State.Buttons[(int)EOculusTouchControllerButton::Thumbstick].bIsPressed && State.ThumbstickAxes.Size() > 0.5f) - { - float Angle = FMath::Atan2(State.ThumbstickAxes.Y, State.ThumbstickAxes.X); - bButtonPressed = Angle >= (-7.0f / 8.0f) * PI && Angle <= (-1.0f / 8.0f) * PI; - } - break; - - case EOculusTouchControllerButton::Thumbstick_Left: - if (bIsTouchController && State.ThumbstickAxes.Size() > 0.7f || bIsMobileController && State.Buttons[(int)EOculusTouchControllerButton::Thumbstick].bIsPressed && State.ThumbstickAxes.Size() > 0.5f) - { - float Angle = FMath::Atan2(State.ThumbstickAxes.Y, State.ThumbstickAxes.X); - bButtonPressed = Angle <= (-5.0f / 8.0f) * PI || Angle >= (5.0f / 8.0f) * PI; - } - break; - - case EOculusTouchControllerButton::Thumbstick_Right: - if (bIsTouchController && State.ThumbstickAxes.Size() > 0.7f || bIsMobileController && State.Buttons[(int)EOculusTouchControllerButton::Thumbstick].bIsPressed && State.ThumbstickAxes.Size() > 0.5f) - { - float Angle = FMath::Atan2(State.ThumbstickAxes.Y, State.ThumbstickAxes.X); - bButtonPressed = Angle >= (-3.0f / 8.0f) * PI && Angle <= (3.0f / 8.0f) * PI; - } - break; - - case EOculusTouchControllerButton::Menu: - bButtonPressed = bIsLeft && (OvrpControllerState.Buttons & ovrpButton_Start); - break; - - case EOculusTouchControllerButton::Thumbstick_Touch: - bButtonPressed = bIsLeft ? (OvrpControllerState.Touches & ovrpTouch_LThumb) != 0 : (OvrpControllerState.Touches & ovrpTouch_RThumb) != 0; - break; - - case EOculusTouchControllerButton::Trigger_Touch: - bButtonPressed = bIsLeft ? (OvrpControllerState.Touches & ovrpTouch_LIndexTrigger) != 0 : (OvrpControllerState.Touches & ovrpTouch_RIndexTrigger) != 0; - break; - - case EOculusTouchControllerButton::XA_Touch: - bButtonPressed = bIsLeft ? (OvrpControllerState.Touches & ovrpTouch_X) != 0 : (OvrpControllerState.Touches & ovrpTouch_A) != 0; - break; - - case EOculusTouchControllerButton::YB_Touch: - bButtonPressed = bIsLeft ? (OvrpControllerState.Touches & ovrpTouch_Y) != 0 : (OvrpControllerState.Touches & ovrpTouch_B) != 0; - break; - - default: - check(0); - break; - } - - // Update button state - if (bButtonPressed != ButtonState.bIsPressed) - { - ButtonState.bIsPressed = bButtonPressed; - if (ButtonState.bIsPressed) - { - OnControllerButtonPressed(ButtonState, PlatformUser, ControllerPair.DeviceId, false); - - // Set the timer for the first repeat - ButtonState.NextRepeatTime = CurrentTime + InitialButtonRepeatDelay; - } - else - { - OnControllerButtonReleased(ButtonState, PlatformUser, ControllerPair.DeviceId, false); - } - } - - // Apply key repeat, if its time for that - if (ButtonState.bIsPressed && ButtonState.NextRepeatTime <= CurrentTime) - { - OnControllerButtonPressed(ButtonState, PlatformUser, ControllerPair.DeviceId, true); - - // Set the timer for the next repeat - ButtonState.NextRepeatTime = CurrentTime + ButtonRepeatDelay; - } - } - - // Handle Capacitive States - for (int32 CapTouchIndex = 0; CapTouchIndex < (int32)EOculusTouchCapacitiveAxes::TotalAxisCount; ++CapTouchIndex) - { - FOculusAxisState& CapState = State.CapacitiveAxes[CapTouchIndex]; - - float CurrentAxisVal = 0.f; - switch ((EOculusTouchCapacitiveAxes)CapTouchIndex) - { - case EOculusTouchCapacitiveAxes::XA: - { - const uint32 mask = (bIsLeft) ? ovrpTouch_X : ovrpTouch_A; - CurrentAxisVal = (OvrpControllerState.Touches & mask) != 0 ? 1.f : 0.f; - break; - } - case EOculusTouchCapacitiveAxes::YB: - { - const uint32 mask = (bIsLeft) ? ovrpTouch_Y : ovrpTouch_B; - CurrentAxisVal = (OvrpControllerState.Touches & mask) != 0 ? 1.f : 0.f; - break; - } - case EOculusTouchCapacitiveAxes::Thumbstick: - { - const uint32 mask = bIsMobileController ? ((bIsLeft) ? ovrpTouch_LTouchpad : ovrpTouch_RTouchpad) : ((bIsLeft) ? ovrpTouch_LThumb : ovrpTouch_RThumb); - CurrentAxisVal = (OvrpControllerState.Touches & mask) != 0 ? 1.f : 0.f; - break; - } - case EOculusTouchCapacitiveAxes::Trigger: - { - const uint32 mask = (bIsLeft) ? ovrpTouch_LIndexTrigger : ovrpTouch_RIndexTrigger; - CurrentAxisVal = (OvrpControllerState.Touches & mask) != 0 ? 1.f : 0.f; - break; - } - case EOculusTouchCapacitiveAxes::IndexPointing: - { - const uint32 mask = (bIsLeft) ? ovrpNearTouch_LIndexTrigger : ovrpNearTouch_RIndexTrigger; - CurrentAxisVal = (OvrpControllerState.NearTouches & mask) != 0 ? 0.f : 1.f; - break; - } - case EOculusTouchCapacitiveAxes::ThumbUp: - { - const uint32 mask = (bIsLeft) ? ovrpNearTouch_LThumbButtons : ovrpNearTouch_RThumbButtons; - CurrentAxisVal = (OvrpControllerState.NearTouches & mask) != 0 ? 0.f : 1.f; - break; - } - case EOculusTouchCapacitiveAxes::ThumbRest: - { - const uint32 mask = (bIsLeft) ? ovrpTouch_LThumbRest : ovrpTouch_RThumbRest; - CurrentAxisVal = (OvrpControllerState.Touches & mask) != 0 ? 1.f : 0.f; - break; - } - default: - check(0); - } - - if (CurrentAxisVal != CapState.State) - { - MessageHandler->OnControllerAnalog(CapState.Axis, PlatformUser, ControllerPair.DeviceId, CurrentAxisVal); - - CapState.State = CurrentAxisVal; - - // handle inverses - if ((EOculusTouchCapacitiveAxes)CapTouchIndex == EOculusTouchCapacitiveAxes::IndexPointing) - { - FKey InverseAxisKey = (bIsLeft) ? FOculusKey::OculusTouch_Left_Trigger_Proximity : FOculusKey::OculusTouch_Right_Trigger_Proximity; - MessageHandler->OnControllerAnalog(InverseAxisKey.GetFName(), PlatformUser, ControllerPair.DeviceId, FMath::IsNearlyEqual(CurrentAxisVal, 0.f) ? 1.f : 0.f); - } - else if ((EOculusTouchCapacitiveAxes)CapTouchIndex == EOculusTouchCapacitiveAxes::ThumbUp) - { - FKey InverseAxisKey = (bIsLeft) ? FOculusKey::OculusTouch_Left_Thumb_Proximity : FOculusKey::OculusTouch_Right_Thumb_Proximity; - MessageHandler->OnControllerAnalog(InverseAxisKey.GetFName(), PlatformUser, ControllerPair.DeviceId, FMath::IsNearlyEqual(CurrentAxisVal, 0.f) ? 1.f : 0.f); - } - } - } - ProcessHaptics(DeltaTime); - } - else - { - // Controller isn't available right now. - if (CVarOculusResetUntrackedInputStates.GetValueOnAnyThread()) - { - // Zero out input state, so that if controller comes back it will send fresh event deltas - State = FOculusTouchControllerState((EControllerHand)HandIndex); - UE_CLOG(OVR_DEBUG_LOGGING, LogOcInput, Log, TEXT("SendControllerEvents: Controller for the hand %d is not tracked and input states are reset"), int(HandIndex)); - } - else - { - // Cache input state, so that if controller comes back it will send event deltas - UE_CLOG(OVR_DEBUG_LOGGING, LogOcInput, Log, TEXT("SendControllerEvents: Controller for the hand %d is not tracked and input states are saved"), int(HandIndex)); - } - } - } - } - } - else - { - // Controller isn't available right now. Zero out input state, so that if it comes back it will send fresh event deltas - for (FOculusControllerPair& ControllerPair : ControllerPairs) - { - for (int32 HandIndex = 0; HandIndex < UE_ARRAY_COUNT(ControllerPair.TouchControllerStates); ++HandIndex) - { - FOculusTouchControllerState& State = ControllerPair.TouchControllerStates[HandIndex]; - State = FOculusTouchControllerState((EControllerHand)HandIndex); - } - } - } - - if (OVRP_SUCCESS(FOculusXRHMDModule::GetPluginWrapper().GetControllerState6((ovrpController)(ovrpController_LHand | ovrpController_RHand | ovrpController_Hands), &OvrpControllerState))) - { - for (FOculusControllerPair& ControllerPair : ControllerPairs) - { - FPlatformUserId PlatformUser = IPlatformInputDeviceMapper::Get().GetUserForInputDevice(ControllerPair.DeviceId); - - for (int32 HandIndex = 0; HandIndex < UE_ARRAY_COUNT(ControllerPair.HandControllerStates); ++HandIndex) - { - FOculusHandControllerState& State = ControllerPair.HandControllerStates[HandIndex]; - - bool bIsLeft = (HandIndex == (int32)EControllerHand::Left); - bool bIsCurrentlyTracked = bIsLeft ? (OvrpControllerState.ConnectedControllerTypes & ovrpController_LHand) != 0 : (OvrpControllerState.ConnectedControllerTypes & ovrpController_RHand) != 0; - - if (bIsCurrentlyTracked) - { - State.bIsConnected = true; - ovrpBool bResult = true; - - // Hand Tracking requires the frame number for accurate results - OculusXRHMD::FGameFrame* CurrentFrame; - if (IsInGameThread()) - { - CurrentFrame = OculusXRHMD->GetNextFrameToRender(); - } - else - { - CurrentFrame = OculusXRHMD->GetFrame_RenderThread(); - } - - // Poll for Hand Tracking State - ovrpHandState HandState; - if (OVRP_SUCCESS(FOculusXRHMDModule::GetPluginWrapper().GetHandState2(ovrpStep_Render, CurrentFrame ? CurrentFrame->FrameNumber : OVRP_CURRENT_FRAMEINDEX, (ovrpHand)HandIndex, &HandState))) - { - // Update various data about hands - State.HandScale = HandState.HandScale; - - // Update Bone Rotations - for (uint32 BoneIndex = 0; BoneIndex < UE_ARRAY_COUNT(State.BoneRotations); BoneIndex++) - { - ovrpQuatf RawRotation = HandState.BoneRotations[BoneIndex]; - FQuat BoneRotation = FOculusHandTracking::OvrBoneQuatToFQuat(RawRotation); - BoneRotation.Normalize(); - State.BoneRotations[BoneIndex] = BoneRotation; - } - - // Update Pinch State and Pinch Strength - bool bTracked = (HandState.Status & ovrpHandStatus_HandTracked) != 0; - State.TrackingConfidence = FOculusHandTracking::ToEOculusXRTrackingConfidence(HandState.HandConfidence); - - State.bIsPositionTracked = bTracked && State.TrackingConfidence == EOculusXRTrackingConfidence::High; - State.bIsPositionValid = bTracked; - State.bIsOrientationTracked = bTracked && State.TrackingConfidence == EOculusXRTrackingConfidence::High; - State.bIsOrientationValid = bTracked; - - State.bIsPointerPoseValid = (HandState.Status & ovrpHandStatus_InputValid) != 0; - - ovrpPosef PointerPose = HandState.PointerPose; - State.PointerPose.SetTranslation(OculusXRHMD::ToFVector(PointerPose.Position)); - State.PointerPose.SetRotation(OculusXRHMD::ToFQuat(PointerPose.Orientation)); - - State.bIsDominantHand = (HandState.Status & ovrpHandStatus_DominantHand) != 0; - - // Poll for finger confidence - for (uint32 FingerIndex = 0; FingerIndex < (int32)EOculusHandAxes::TotalAxisCount; FingerIndex++) - { - State.FingerConfidences[FingerIndex] = FOculusHandTracking::ToEOculusXRTrackingConfidence(HandState.FingerConfidences[FingerIndex]); - } - - // Poll for finger pinches - for (uint32 FingerIndex = 0; FingerIndex < (uint32)EOculusHandButton::TotalButtonCount; FingerIndex++) - { - FOculusButtonState& PinchState = State.HandButtons[FingerIndex]; - check(!PinchState.Key.IsNone()); - - bool bPressed = false; - if (FingerIndex < (uint32)EOculusHandButton::System) - { - bPressed = (((uint32)HandState.Pinches & (1 << FingerIndex)) != 0); - bPressed &= (HandState.HandConfidence == ovrpTrackingConfidence_High) && (HandState.FingerConfidences[FingerIndex] == ovrpTrackingConfidence_High); - } - else if (FingerIndex == (uint32)EOculusHandButton::System) - { - bPressed = (HandState.Status & ovrpHandStatus_SystemGestureInProgress) != 0; - } - else - { - bPressed = (OvrpControllerState.Buttons & ovrpButton_Start) != 0 && !State.bIsDominantHand; - } - - if (bPressed != PinchState.bIsPressed) - { - PinchState.bIsPressed = bPressed; - if (PinchState.bIsPressed) - { - OnControllerButtonPressed(PinchState, PlatformUser, ControllerPair.DeviceId, false); - } - else - { - OnControllerButtonReleased(PinchState, PlatformUser, ControllerPair.DeviceId, false); - } - } - } - - // Poll for finger strength - for (uint32 FingerIndex = 0; FingerIndex < (uint32)EOculusHandAxes::TotalAxisCount; FingerIndex++) - { - FOculusAxisState& PinchStrength = State.HandAxes[FingerIndex]; - check(!PinchStrength.Axis.IsNone()); - - float PinchValue = 0.0f; - if (HandState.HandConfidence == ovrpTrackingConfidence_High) - { - PinchValue = HandState.PinchStrength[FingerIndex]; - } - - if (PinchValue != PinchStrength.State) - { - MessageHandler->OnControllerAnalog(PinchStrength.Axis, PlatformUser, ControllerPair.DeviceId, PinchValue); - PinchStrength.State = PinchValue; - } - } - } - } - else - { - // Hand isn't available right now. - if (CVarOculusResetUntrackedInputStates.GetValueOnAnyThread()) - { - // Zero out input state, so that if hand comes back it will send fresh event deltas - State = FOculusHandControllerState((EControllerHand)HandIndex); - UE_CLOG(OVR_DEBUG_LOGGING, LogOcInput, Log, TEXT("SendControllerEvents: Hand for the hand %d is not tracked and input states are reset"), int32(HandIndex)); - } - else - { - // Cache input state, so that if hand comes back it will send event deltas - UE_CLOG(OVR_DEBUG_LOGGING, LogOcInput, Log, TEXT("SendControllerEvents: Hand for the hand %d is not tracked and input states are saved"), int(HandIndex)); - } - } - } - } - } - else - { - // Hands are not availble right now, zero out the hand state - for (FOculusControllerPair& ControllerPair : ControllerPairs) - { - for (int32 HandIndex = 0; HandIndex < UE_ARRAY_COUNT(ControllerPair.HandControllerStates); ++HandIndex) - { - FOculusHandControllerState& State = ControllerPair.HandControllerStates[HandIndex]; - State = FOculusHandControllerState((EControllerHand)HandIndex); - } - } - } - } - } - UE_CLOG(OVR_DEBUG_LOGGING, LogOcInput, Log, TEXT("")); - } - - void FOculusXRInput::SetMessageHandler(const TSharedRef& InMessageHandler) - { - MessageHandler = InMessageHandler; - } - - bool FOculusXRInput::Exec(UWorld* InWorld, const TCHAR* Cmd, FOutputDevice& Ar) - { - // No exec commands supported, for now. - return false; - } - - void FOculusXRInput::SetChannelValue(int32 ControllerId, FForceFeedbackChannelType ChannelType, float Value) - { - const EControllerHand Hand = (ChannelType == FForceFeedbackChannelType::LEFT_LARGE || ChannelType == FForceFeedbackChannelType::LEFT_SMALL) ? EControllerHand::Left : EControllerHand::Right; - - IPlatformInputDeviceMapper& DeviceMapper = IPlatformInputDeviceMapper::Get(); - FPlatformUserId InPlatformUser = FGenericPlatformMisc::GetPlatformUserForUserIndex(ControllerId); - FInputDeviceId InDeviceId = INPUTDEVICEID_NONE; - DeviceMapper.RemapControllerIdToPlatformUserAndDevice(ControllerId, InPlatformUser, InDeviceId); - - for (FOculusControllerPair& ControllerPair : ControllerPairs) - { - if (ControllerPair.DeviceId == InDeviceId) - { - FOculusTouchControllerState& ControllerState = ControllerPair.TouchControllerStates[(int32)Hand]; - - if (ControllerState.bPlayingHapticEffect) - { - continue; - } - - // @todo: The SMALL channel controls frequency, the LARGE channel controls amplitude. This is a bit of a weird fit. - if (ChannelType == FForceFeedbackChannelType::LEFT_SMALL || ChannelType == FForceFeedbackChannelType::RIGHT_SMALL) - { - ControllerState.ForceFeedbackHapticFrequency = Value; - } - else - { - ControllerState.ForceFeedbackHapticAmplitude = Value; - } - - UpdateForceFeedback(ControllerPair, Hand); - - break; - } - } - } - - void FOculusXRInput::SetChannelValues(int32 ControllerId, const FForceFeedbackValues& Values) - { - IPlatformInputDeviceMapper& DeviceMapper = IPlatformInputDeviceMapper::Get(); - FPlatformUserId InPlatformUser = FGenericPlatformMisc::GetPlatformUserForUserIndex(ControllerId); - FInputDeviceId InDeviceId = INPUTDEVICEID_NONE; - DeviceMapper.RemapControllerIdToPlatformUserAndDevice(ControllerId, InPlatformUser, InDeviceId); - - for (FOculusControllerPair& ControllerPair : ControllerPairs) - { - if (ControllerPair.DeviceId == InDeviceId) - { - // @todo: The SMALL channel controls frequency, the LARGE channel controls amplitude. This is a bit of a weird fit. - FOculusTouchControllerState& LeftControllerState = ControllerPair.TouchControllerStates[(int32)EControllerHand::Left]; - if (!LeftControllerState.bPlayingHapticEffect) - { - LeftControllerState.ForceFeedbackHapticFrequency = Values.LeftSmall; - LeftControllerState.ForceFeedbackHapticAmplitude = Values.LeftLarge; - UpdateForceFeedback(ControllerPair, EControllerHand::Left); - } - - FOculusTouchControllerState& RightControllerState = ControllerPair.TouchControllerStates[(int32)EControllerHand::Right]; - if (!RightControllerState.bPlayingHapticEffect) - { - RightControllerState.ForceFeedbackHapticFrequency = Values.RightSmall; - RightControllerState.ForceFeedbackHapticAmplitude = Values.RightLarge; - UpdateForceFeedback(ControllerPair, EControllerHand::Right); - } - } - } - } - - bool FOculusXRInput::SupportsForceFeedback(int32 ControllerId) - { - IPlatformInputDeviceMapper& DeviceMapper = IPlatformInputDeviceMapper::Get(); - FPlatformUserId InPlatformUser = FGenericPlatformMisc::GetPlatformUserForUserIndex(ControllerId); - FInputDeviceId InDeviceId = INPUTDEVICEID_NONE; - DeviceMapper.RemapControllerIdToPlatformUserAndDevice(ControllerId, InPlatformUser, InDeviceId); - - for (FOculusControllerPair& ControllerPair : ControllerPairs) - { - if (ControllerPair.DeviceId == InDeviceId) - { - const FOculusTouchControllerState& ControllerStateLeft = ControllerPair.TouchControllerStates[(int32)EControllerHand::Left]; - const FOculusTouchControllerState& ControllerStateRight = ControllerPair.TouchControllerStates[(int32)EControllerHand::Right]; - - if (!(ControllerStateLeft.bIsConnected || ControllerStateRight.bIsConnected)) - { - // neither hand connected, won't be receiving force feedback - continue; - } - - if (IOculusXRHMDModule::IsAvailable() && FOculusXRHMDModule::GetPluginWrapper().GetInitialized()) - { - // available so could receive feedback - return true; - } - } - } - - // not handling force feedback - return false; - } - - void FOculusXRInput::UpdateForceFeedback(const FOculusControllerPair& ControllerPair, const EControllerHand Hand) - { - const FOculusTouchControllerState& ControllerState = ControllerPair.TouchControllerStates[(int32)Hand]; - - if (ControllerState.bIsConnected && !ControllerState.bPlayingHapticEffect) - { - if (IOculusXRHMDModule::IsAvailable() && FOculusXRHMDModule::GetPluginWrapper().GetInitialized() && FApp::HasVRFocus()) - { - ovrpControllerState6 OvrpControllerState; - if (OVRP_SUCCESS(FOculusXRHMDModule::GetPluginWrapper().GetControllerState6((ovrpController)(ovrpController_Active | ovrpController_LTrackedRemote | ovrpController_RTrackedRemote), &OvrpControllerState)) && (OvrpControllerState.ConnectedControllerTypes & (ovrpController_Touch | ovrpController_LTrackedRemote | ovrpController_RTrackedRemote))) - { - float FreqMin, FreqMax = 0.f; - GetHapticFrequencyRange(FreqMin, FreqMax); - - // Map the [0.0 - 1.0] range to a useful range of frequencies for the Oculus controllers - const float ActualFrequency = FMath::Lerp(FreqMin, FreqMax, FMath::Clamp(ControllerState.ForceFeedbackHapticFrequency, 0.0f, 1.0f)); - - // Oculus SDK wants amplitude values between 0.0 and 1.0 - const float ActualAmplitude = ControllerState.ForceFeedbackHapticAmplitude * GetHapticAmplitudeScale(); - - ovrpController OvrController = ovrpController_None; - if (OvrpControllerState.ConnectedControllerTypes & (ovrpController_Touch)) - { - OvrController = (Hand == EControllerHand::Left) ? ovrpController_LTouch : ovrpController_RTouch; - } - else if (OvrpControllerState.ConnectedControllerTypes & (ovrpController_LTrackedRemote | ovrpController_RTrackedRemote)) - { - OvrController = (Hand == EControllerHand::Left) ? ovrpController_LTrackedRemote : ovrpController_RTrackedRemote; - } - - static float LastAmplitudeSent = -1; - if (ActualAmplitude != LastAmplitudeSent) - { - ovrpHapticsLocation hapticsLocationMask = ovrpHapticsLocation::ovrpHapticsLocation_Hand; - FOculusXRHMDModule::GetPluginWrapper().SetControllerLocalizedVibration(OvrController, hapticsLocationMask, ActualFrequency, ActualAmplitude); - LastAmplitudeSent = ActualAmplitude; - } - } - } - } - } - - bool FOculusXRInput::OnControllerButtonPressed(const FOculusButtonState& ButtonState, FPlatformUserId UserId, FInputDeviceId DeviceId, bool IsRepeat) - { - bool result = MessageHandler->OnControllerButtonPressed(ButtonState.Key, UserId, DeviceId, IsRepeat); - - if (!ButtonState.EmulatedKey.IsNone()) - { - MessageHandler->OnControllerButtonPressed(ButtonState.EmulatedKey, UserId, DeviceId, IsRepeat); - } - - return result; - } - - bool FOculusXRInput::OnControllerButtonReleased(const FOculusButtonState& ButtonState, FPlatformUserId UserId, FInputDeviceId DeviceId, bool IsRepeat) - { - bool result = MessageHandler->OnControllerButtonReleased(ButtonState.Key, UserId, DeviceId, IsRepeat); - - if (!ButtonState.EmulatedKey.IsNone()) - { - MessageHandler->OnControllerButtonReleased(ButtonState.EmulatedKey, UserId, DeviceId, IsRepeat); - } - - return result; - } - - FName FOculusXRInput::GetMotionControllerDeviceTypeName() const - { - const static FName DefaultName(TEXT("OculusXRInputDevice")); - return DefaultName; - } - - void FOculusXRInput::ShutdownXRFunctionLibrary() - { - FunctionLibraryImpl = nullptr; - } - - struct MotionSourceInfo - { - ovrpNode Primary; - ovrpNode Fallback; - }; - - // Supported motion sources. - // When using both controllers and hand tracking, the 'ovrpNode_Hand(Left|Right)' controller transform is overwritten with the wrist transforms - // Check the controllers first, then fallback to the hands. - const TMap MotionSourceMap{ - { FName("Left"), { ovrpNode_ControllerLeft, ovrpNode_HandLeft } }, - { FName("Right"), { ovrpNode_ControllerRight, ovrpNode_HandRight } }, - { FName("LeftGrip"), { ovrpNode_HandLeft, ovrpNode_None } }, - { FName("RightGrip"), { ovrpNode_HandRight, ovrpNode_None } }, - { FName("LeftAim"), { ovrpNode_HandLeft, ovrpNode_None } }, - { FName("RightAim"), { ovrpNode_HandRight, ovrpNode_None } }, - // Sometimes we can get an enum as the motion source name - { FName("EControllerHand::Left"), { ovrpNode_HandLeft, ovrpNode_None } }, - { FName("EControllerHand::Right"), { ovrpNode_HandRight, ovrpNode_None } }, - }; - -#if UE_VERSION_OLDER_THAN(5, 3, 0) - bool FOculusXRInput::GetControllerOrientationAndPosition(const int32 ControllerIndex, const EControllerHand DeviceHand, FRotator& OutOrientation, FVector& OutPosition, float WorldToMetersScale) const - { - FName MotionSource; - switch (DeviceHand) - { - case EControllerHand::Left: - MotionSource = FName("Left"); - break; - case EControllerHand::Right: - MotionSource = FName("Right"); - break; - default: - MotionSource = FName("Unknown"); - break; - } - return GetControllerOrientationAndPosition(ControllerIndex, MotionSource, OutOrientation, OutPosition, WorldToMetersScale); - } - - ETrackingStatus FOculusXRInput::GetControllerTrackingStatus(const int32 ControllerIndex, const EControllerHand DeviceHand) const - { - ETrackingStatus TrackingStatus = ETrackingStatus::NotTracked; - - if (DeviceHand != EControllerHand::Left && DeviceHand != EControllerHand::Right) - { - return TrackingStatus; - } - - IPlatformInputDeviceMapper& DeviceMapper = IPlatformInputDeviceMapper::Get(); - FPlatformUserId InPlatformUser = FGenericPlatformMisc::GetPlatformUserForUserIndex(ControllerIndex); - FInputDeviceId InDeviceId = INPUTDEVICEID_NONE; - DeviceMapper.RemapControllerIdToPlatformUserAndDevice(ControllerIndex, InPlatformUser, InDeviceId); - - for (const FOculusControllerPair& ControllerPair : ControllerPairs) - { - if (ControllerPair.DeviceId == InDeviceId) - { - const FOculusTouchControllerState& ControllerState = ControllerPair.TouchControllerStates[(int32)DeviceHand]; - if (ControllerState.bIsConnected) - { - if (ControllerState.bIsPositionTracked && ControllerState.bIsOrientationTracked) - { - TrackingStatus = ETrackingStatus::Tracked; - } - else if (ControllerState.bIsPositionValid && ControllerState.bIsOrientationValid) - { - TrackingStatus = ETrackingStatus::InertialOnly; - } - - break; - } - - const FOculusHandControllerState& HandState = ControllerPair.HandControllerStates[(int32)DeviceHand]; - if (HandState.bIsConnected) - { - if (HandState.bIsPositionTracked && HandState.bIsOrientationTracked) - { - TrackingStatus = ETrackingStatus::Tracked; - } - - break; - } - } - } - - return TrackingStatus; - } -#endif - - bool FOculusXRInput::GetControllerOrientationAndPosition(const int32 ControllerIndex, const FName MotionSource, FRotator& OutOrientation, FVector& OutPosition, float WorldToMetersScale) const - { - IPlatformInputDeviceMapper& DeviceMapper = IPlatformInputDeviceMapper::Get(); - FPlatformUserId InPlatformUser = FGenericPlatformMisc::GetPlatformUserForUserIndex(ControllerIndex); - FInputDeviceId InDeviceId = INPUTDEVICEID_NONE; - DeviceMapper.RemapControllerIdToPlatformUserAndDevice(ControllerIndex, InPlatformUser, InDeviceId); - - // Don't do renderthread pose update if MRC is active due to controller jitter issues with SceneCaptures - if (IsInGameThread() || !UOculusXRMRFunctionLibrary::IsMrcActive()) - { - for (const FOculusControllerPair& ControllerPair : ControllerPairs) - { - if (ControllerPair.DeviceId == InDeviceId) - { - if (MotionSourceMap.Contains(MotionSource)) - { - if (IOculusXRHMDModule::IsAvailable() && FOculusXRHMDModule::GetPluginWrapper().GetInitialized()) - { - OculusXRHMD::FOculusXRHMD* OculusXRHMD = static_cast(GEngine->XRSystem->GetHMDDevice()); - const MotionSourceInfo& MotionInfo = MotionSourceMap[MotionSource]; - - ovrpNode Node = MotionInfo.Primary; - - ovrpBool bResult = true; - bool bIsPositionValid = OVRP_SUCCESS(FOculusXRHMDModule::GetPluginWrapper().GetNodePositionValid(Node, &bResult)) && bResult; - bool bIsOrientationValid = OVRP_SUCCESS(FOculusXRHMDModule::GetPluginWrapper().GetNodeOrientationValid(Node, &bResult)) && bResult; - if (!bIsPositionValid && !bIsOrientationValid && MotionInfo.Fallback != ovrpNode_None) - { - Node = MotionInfo.Fallback; - bResult = true; - - bIsPositionValid = - OVRP_SUCCESS( - FOculusXRHMDModule::GetPluginWrapper().GetNodePositionValid(Node, &bResult)) - && bResult; - bIsOrientationValid = - OVRP_SUCCESS( - FOculusXRHMDModule::GetPluginWrapper().GetNodeOrientationValid(Node, &bResult)) - && bResult; - } - - if (bIsPositionValid || bIsOrientationValid) - { - OculusXRHMD::FSettings* Settings; - OculusXRHMD::FGameFrame* CurrentFrame; - - if (IsInGameThread()) - { - Settings = OculusXRHMD->GetSettings(); - CurrentFrame = OculusXRHMD->GetNextFrameToRender(); - } - else - { - Settings = OculusXRHMD->GetSettings_RenderThread(); - CurrentFrame = OculusXRHMD->GetFrame_RenderThread(); - } - - if (Settings) - { - ovrpPoseStatef InPoseState; - OculusXRHMD::FPose OutPose; - - EOculusXRControllerPoseAlignment ControllerPoseAlignment = Settings->ControllerPoseAlignment; - switch (CVarOculusControllerPose.GetValueOnAnyThread()) - { - case 1: - ControllerPoseAlignment = EOculusXRControllerPoseAlignment::Default; - break; - case 2: - ControllerPoseAlignment = EOculusXRControllerPoseAlignment::Grip; - break; - case 3: - ControllerPoseAlignment = EOculusXRControllerPoseAlignment::Aim; - break; - default: - break; - } - - if (OVRP_SUCCESS(FOculusXRHMDModule::GetPluginWrapper().GetNodePoseState3(ovrpStep_Render, CurrentFrame ? CurrentFrame->FrameNumber : OVRP_CURRENT_FRAMEINDEX, Node, &InPoseState)) && OculusXRHMD->ConvertPose_Internal(InPoseState.Pose, OutPose, Settings, WorldToMetersScale)) - { - FName FinalMotionSource = MotionSource; - FString MotionSourceStr = MotionSource.ToString(); - - // Converting controller hand enum to motion source can leave behind the enum name in the resulting motion source, so just remove that before handling it - MotionSourceStr.RemoveFromStart("EControllerHand::"); - - if (MotionSourceStr.Equals("Left") || MotionSourceStr.Equals("Right")) - { - switch (ControllerPoseAlignment) - { - case EOculusXRControllerPoseAlignment::Grip: - FinalMotionSource = FName(MotionSourceStr.Append(FString("Grip"))); - break; - case EOculusXRControllerPoseAlignment::Aim: - FinalMotionSource = FName(MotionSourceStr.Append(FString("Aim"))); - break; - case EOculusXRControllerPoseAlignment::Default: - default: - break; - } - } - - // TODO: Just pass the pose info to OVRPlugin instead of doing the conversion between poses here - if (FinalMotionSource == FName("LeftGrip") || FinalMotionSource == FName("RightGrip")) - { - OutPose = OutPose * OculusXRHMD::FPose(FQuat(FVector(0, 1, 0), -FMath::DegreesToRadians(double(60))), FVector(-0.04, 0, -0.03) * WorldToMetersScale); - } - else if (FinalMotionSource == FName("LeftAim") || FinalMotionSource == FName("RightAim")) - { - OutPose = OutPose * OculusXRHMD::FPose(FQuat::Identity, FVector(0.055, 0, 0) * WorldToMetersScale); - } - - if (bIsPositionValid) - { - OutPosition = OutPose.Position; - } - - if (bIsOrientationValid) - { - OutOrientation = OutPose.Orientation.Rotator(); - } - - // Avoid any broadcasting in other threads than the game thread because that is undefined behavior - if (IsInGameThread()) - { - auto bSuccess = true; - EControllerHand ControllerHand; - if (GetHandEnumForSourceName(MotionSource, ControllerHand)) - { - // TODO: Just use the motion source name here instead of the legacy enum - UOculusXRInputFunctionLibrary::HandMovementFilter.Broadcast( - ControllerHand, - &OutPosition, - &OutOrientation, - &bSuccess); - } - return bSuccess; - } - - return true; - } - } - } - } - } - - break; - } - } - } - - // Avoid any broadcasting in other threads than the game thread because that is undefined behavior - auto bSuccess = false; - if (IsInGameThread()) - { - EControllerHand ControllerHand; - if (GetHandEnumForSourceName(MotionSource, ControllerHand)) - { - // TODO: Just use the motion source name here instead of the legacy enum - UOculusXRInputFunctionLibrary::HandMovementFilter.Broadcast( - ControllerHand, - &OutPosition, - &OutOrientation, - &bSuccess); - } - } - return bSuccess; - } - - ETrackingStatus FOculusXRInput::GetControllerTrackingStatus(const int32 ControllerIndex, const FName MotionSource) const - { - ETrackingStatus TrackingStatus = ETrackingStatus::NotTracked; - - bool IsLeftHand = MotionSource == FName("Left") || MotionSource == FName("EControllerHand::Left") || MotionSource == FName("LeftGrip") || MotionSource == FName("LeftAim"); - bool IsRightHand = MotionSource == FName("Right") || MotionSource == FName("EControllerHand::Right") || MotionSource == FName("RightGrip") || MotionSource == FName("RightAim"); - - if (!IsLeftHand && !IsRightHand) - { - return TrackingStatus; - } - - IPlatformInputDeviceMapper& DeviceMapper = IPlatformInputDeviceMapper::Get(); - FPlatformUserId InPlatformUser = FGenericPlatformMisc::GetPlatformUserForUserIndex(ControllerIndex); - FInputDeviceId InDeviceId = INPUTDEVICEID_NONE; - DeviceMapper.RemapControllerIdToPlatformUserAndDevice(ControllerIndex, InPlatformUser, InDeviceId); - - for (const FOculusControllerPair& ControllerPair : ControllerPairs) - { - if (ControllerPair.DeviceId == InDeviceId) - { - const FOculusTouchControllerState& ControllerState = ControllerPair.TouchControllerStates[IsLeftHand ? 0 : 1]; - if (ControllerState.bIsConnected) - { - if (ControllerState.bIsPositionTracked && ControllerState.bIsOrientationTracked) - { - TrackingStatus = ETrackingStatus::Tracked; - } - else if (ControllerState.bIsPositionValid && ControllerState.bIsOrientationValid) - { - TrackingStatus = ETrackingStatus::InertialOnly; - } - - break; - } - - const FOculusHandControllerState& HandState = ControllerPair.HandControllerStates[IsLeftHand ? 0 : 1]; - if (HandState.bIsConnected) - { - if (HandState.bIsPositionTracked && HandState.bIsOrientationTracked) - { - TrackingStatus = ETrackingStatus::Tracked; - } - - break; - } - } - } - - return TrackingStatus; - } - - void FOculusXRInput::SetHapticFeedbackValues(int32 ControllerId, int32 Hand, const FHapticFeedbackValues& Values) - { - SetHapticFeedbackValues(ControllerId, Hand, Values, nullptr); - } - - void FOculusXRInput::SetHapticFeedbackValues(int32 ControllerId, int32 Hand, const FHapticFeedbackValues& Values, TSharedPtr HapticsDesc) - { - IPlatformInputDeviceMapper& DeviceMapper = IPlatformInputDeviceMapper::Get(); - FPlatformUserId InPlatformUser = FGenericPlatformMisc::GetPlatformUserForUserIndex(ControllerId); - FInputDeviceId InDeviceId = INPUTDEVICEID_NONE; - DeviceMapper.RemapControllerIdToPlatformUserAndDevice(ControllerId, InPlatformUser, InDeviceId); - - for (FOculusControllerPair& ControllerPair : ControllerPairs) - { - if (ControllerPair.DeviceId == InDeviceId) - { - FOculusTouchControllerState& ControllerState = ControllerPair.TouchControllerStates[Hand]; - if (ControllerState.bIsConnected) - { - if (IOculusXRHMDModule::IsAvailable() && FOculusXRHMDModule::GetPluginWrapper().GetInitialized() && FApp::HasVRFocus()) - { - ovrpController ControllerTypes = (ovrpController)(ovrpController_Active | ovrpController_LTrackedRemote | ovrpController_RTrackedRemote); -#ifdef USE_ANDROID_INPUT - ControllerTypes = (ovrpController)(ControllerTypes | ovrpController_Touch); -#endif - ovrpControllerState6 OvrpControllerState; - if (OVRP_FAILURE(FOculusXRHMDModule::GetPluginWrapper().GetControllerState6(ControllerTypes, &OvrpControllerState))) - { - UE_LOG(LogOcInput, Error, TEXT("GetControllerState6 failed.")); - return; - } - if (OvrpControllerState.ConnectedControllerTypes & (ovrpController_Touch | ovrpController_LTrackedRemote | ovrpController_RTrackedRemote)) - { - // Buffered haptics is currently only supported on Touch - FHapticFeedbackBuffer* HapticBuffer = Values.HapticBuffer; - bool bHapticBuffer = (HapticBuffer && HapticBuffer->BufferLength > 0); - if ((OvrpControllerState.ConnectedControllerTypes & (ovrpController_Touch)) && bHapticBuffer) - { - const ovrpController OvrpController = (EControllerHand(Hand) == EControllerHand::Left) ? ovrpController_LTouch : ovrpController_RTouch; - ovrpHapticsState OvrpHapticsState; - if (OVRP_FAILURE(FOculusXRHMDModule::GetPluginWrapper().GetControllerHapticsState2(OvrpController, &OvrpHapticsState))) - { - UE_LOG(LogOcInput, Error, TEXT("ControllerHapticsState2 failed.")); - return; - } - double StartTimePCM = FPlatformTime::Seconds(); - float TimeToSend = GetMaxHapticDuration(EControllerHand(Hand)); - int WantToSend = (int)(TimeToSend * HapticBuffer->SamplingRate); - if (WantToSend == 0) - return; - WantToSend = FMath::Min(WantToSend, OvrpHapticsDesc.MaximumBufferSamplesCount); - WantToSend = FMath::Max(WantToSend, OvrpHapticsDesc.MinimumBufferSamplesCount); - - ovrpUInt32 SamplesSent = 0; - if (OvrpHapticsState.SamplesQueued < OvrpHapticsDesc.MinimumSafeSamplesQueued + WantToSend) // trying to minimize latency - { - WantToSend = (OvrpHapticsDesc.MinimumSafeSamplesQueued + WantToSend - OvrpHapticsState.SamplesQueued); - void* BufferToFree = nullptr; - ovrpHapticsBuffer OvrpHapticsBuffer; - WantToSend = FMath::Min(WantToSend, HapticBuffer->BufferLength - HapticBuffer->SamplesSent); - WantToSend = FMath::Min(WantToSend, (int)(0.001f * CVarOculusPCMBatchDuration.GetValueOnAnyThread() * HapticBuffer->SamplingRate)); - TimeToSend = 1.f * WantToSend / HapticBuffer->SamplingRate; - OvrpHapticsBuffer.SamplesCount = WantToSend; - if (OvrpHapticsBuffer.SamplesCount == 0 && OvrpHapticsState.SamplesQueued == 0) - { - Values.HapticBuffer->bFinishedPlaying = HapticBuffer->bFinishedPlaying = true; - - ControllerState.bPlayingHapticEffect = false; - } - else - { - if (OvrpHapticsDesc.SampleSizeInBytes == 1) - { - uint8* Samples = (uint8*)FMemory::Malloc(OvrpHapticsBuffer.SamplesCount * sizeof(*Samples)); - for (int i = 0; i < OvrpHapticsBuffer.SamplesCount; i++) - { - Samples[i] = static_cast(HapticBuffer->RawData[HapticBuffer->CurrentPtr + i] * HapticBuffer->ScaleFactor); - } - OvrpHapticsBuffer.Samples = BufferToFree = Samples; - } - else if (OvrpHapticsDesc.SampleSizeInBytes == 2) - { - uint16* Samples = (uint16*)FMemory::Malloc(OvrpHapticsBuffer.SamplesCount * sizeof(*Samples)); - for (int i = 0; i < OvrpHapticsBuffer.SamplesCount; i++) - { - const uint32 DataIndex = HapticBuffer->CurrentPtr + (i * 2); - const uint16* const RawData = reinterpret_cast(&HapticBuffer->RawData[DataIndex]); - Samples[i] = static_cast(*RawData * HapticBuffer->ScaleFactor); - } - OvrpHapticsBuffer.Samples = BufferToFree = Samples; - } - else if (OvrpHapticsDesc.SampleSizeInBytes == 4) - { - uint32* Samples = (uint32*)FMemory::Malloc(OvrpHapticsBuffer.SamplesCount * sizeof(*Samples)); - for (int i = 0; i < OvrpHapticsBuffer.SamplesCount; i++) - { - const uint32 DataIndex = HapticBuffer->CurrentPtr + (i * 4); - const uint32* const RawData = reinterpret_cast(&HapticBuffer->RawData[DataIndex]); - Samples[i] = static_cast(*RawData * HapticBuffer->ScaleFactor); - } - OvrpHapticsBuffer.Samples = BufferToFree = Samples; - } - else - { - UE_LOG(LogOcInput, Error, TEXT("Unsupported OvrpHapticsDesc.SampleSizeInBytes: %d."), OvrpHapticsDesc.SampleSizeInBytes); - return; - } - - ovrpHapticsPcmVibration HapticsVibration; - bool bAppend = HapticsDesc ? HapticsDesc->bAppend : false; - HapticsVibration.Append = (bAppend || HapticBuffer->SamplesSent > 0); - float* PCMBuffer = (float*)FMemory::Malloc(OvrpHapticsBuffer.SamplesCount * sizeof(*PCMBuffer)); - for (int i = 0; i < OvrpHapticsBuffer.SamplesCount; i++) - { - float Amplitude = ((uint8_t*)OvrpHapticsBuffer.Samples)[i] / 255.0f; - Amplitude = FMath::Min(1.0f, Amplitude); - Amplitude = FMath::Max(-1.0f, Amplitude); - PCMBuffer[i] = Amplitude; - } - HapticsVibration.Buffer = PCMBuffer; - HapticsVibration.BufferSize = (ovrpUInt32)OvrpHapticsBuffer.SamplesCount; - HapticsVibration.SampleRateHz = HapticBuffer->SamplingRate; - HapticsVibration.SamplesConsumed = &SamplesSent; - FOculusXRHMDModule::GetPluginWrapper().SetControllerHapticsPcm( - OvrpController, - HapticsVibration); - double EndTimePCM = FPlatformTime::Seconds(); - if (PCMBuffer) - { - FMemory::Free(PCMBuffer); - } - UE_CLOG(OVR_HAP_LOGGING, LogOcInput, Log, TEXT("PCMHaptics is finished: bAppend: %d, BufferSize: %d, SampleRate: %.3f, SamplesConsumed: %d, Total SamplesSent: %d, TimeSpent: %fms"), - (int)(HapticsVibration.Append), - HapticsVibration.BufferSize, - HapticsVibration.SampleRateHz, - SamplesSent, - HapticBuffer->SamplesSent + SamplesSent, - (EndTimePCM - StartTimePCM) * 1000.0); - - if (BufferToFree) - { - FMemory::Free(BufferToFree); - } - - HapticBuffer->CurrentPtr += (SamplesSent * OvrpHapticsDesc.SampleSizeInBytes); - HapticBuffer->SamplesSent += SamplesSent; - - ControllerState.bPlayingHapticEffect = true; - } - } - } - else - { - float FreqMin, FreqMax = 0.f; - GetHapticFrequencyRange(FreqMin, FreqMax); - - const float InitialFreq = (Values.Frequency > 0.0f) ? Values.Frequency : 1.0f; - const float Frequency = FMath::Lerp(FreqMin, FreqMax, FMath::Clamp(InitialFreq, 0.f, 1.f)); - - const float Amplitude = Values.Amplitude * GetHapticAmplitudeScale(); - - if (ControllerState.HapticAmplitude != Amplitude || ControllerState.HapticFrequency != Frequency) - { - ControllerState.HapticAmplitude = Amplitude; - ControllerState.HapticFrequency = Frequency; - - ovrpController OvrController = ovrpController_None; - if (OvrpControllerState.ConnectedControllerTypes & (ovrpController_Touch)) - { - OvrController = (EControllerHand(Hand) == EControllerHand::Left) ? ovrpController_LTouch : ovrpController_RTouch; - } - else if (OvrpControllerState.ConnectedControllerTypes & (ovrpController_LTrackedRemote | ovrpController_RTrackedRemote)) - { - OvrController = (EControllerHand(Hand) == EControllerHand::Left) ? ovrpController_LTrackedRemote : ovrpController_RTrackedRemote; - } - - ovrpHapticsLocation Loc = (HapticsDesc ? GetOVRPHapticsLocation(HapticsDesc->Location) : ovrpHapticsLocation::ovrpHapticsLocation_Hand); - FOculusXRHMDModule::GetPluginWrapper().SetControllerLocalizedVibration(OvrController, - Loc, - Frequency, - Amplitude); - UE_CLOG(OVR_HAP_LOGGING, LogOcInput, Log, TEXT("LocalizedVibration is finished: Location: %d, Frequency: %f, Amplitude: %f"), (int)(Loc), Frequency, Amplitude); - - ControllerState.bPlayingHapticEffect = (Amplitude != 0.f) && (Frequency != 0.f); - } - } - } - } - } - - break; - } - } - } - - void FOculusXRInput::PlayHapticEffect( - UHapticFeedbackEffect_Base* HapticEffect, - EControllerHand Hand, - EOculusXRHandHapticsLocation Location, - bool bAppend, - float Scale, - bool bLoop) - { - TSharedPtr Impl = GetOculusXRInputBaseImpl(); - return Impl->PlayHapticEffect(HapticEffect, Hand, Location, bAppend, Scale, bLoop); - } - - void FOculusXRInput::PlayAmplitudeEnvelopeHapticEffect(EControllerHand Hand, int SamplesCount, void* Samples, int InSampleRate) - { - TSharedPtr Impl = GetOculusXRInputBaseImpl(); - Impl->PlayAmplitudeEnvelopeHapticEffect(Hand, SamplesCount, Samples, InSampleRate); - } - - void FOculusXRInput::SetHapticsByValue(float Frequency, float Amplitude, EControllerHand Hand, EOculusXRHandHapticsLocation Location) - { - TSharedPtr Impl = GetOculusXRInputBaseImpl(); - return Impl->SetHapticsByValue(Frequency, Amplitude, Hand, Location); - } - - void FOculusXRInput::ProcessHaptics(const float DeltaTime) - { - FHapticFeedbackValues LeftHaptics, RightHaptics; - bool bLeftHapticsNeedUpdate = false; - bool bRightHapticsNeedUpdate = false; - - if (ActiveHapticEffect_Left.IsValid()) - { - const bool bPlaying = ActiveHapticEffect_Left->Update(DeltaTime, LeftHaptics); - if (!bPlaying) - { - ActiveHapticEffect_Left->bLoop ? HapticsDesc_Left->Restart() : HapticsDesc_Left.Reset(); - ActiveHapticEffect_Left->bLoop ? ActiveHapticEffect_Left->Restart() : ActiveHapticEffect_Left.Reset(); - } - - bLeftHapticsNeedUpdate = true; - } - - if (ActiveHapticEffect_Right.IsValid()) - { - const bool bPlaying = ActiveHapticEffect_Right->Update(DeltaTime, RightHaptics); - if (!bPlaying) - { - ActiveHapticEffect_Right->bLoop ? HapticsDesc_Right->Restart() : HapticsDesc_Right.Reset(); - ActiveHapticEffect_Right->bLoop ? ActiveHapticEffect_Right->Restart() : ActiveHapticEffect_Right.Reset(); - } - - bRightHapticsNeedUpdate = true; - } - - // Haptic Updates - if (bLeftHapticsNeedUpdate) - { - SetHapticFeedbackValues(0, (int32)(EControllerHand::Left), LeftHaptics, HapticsDesc_Left); - } - if (bRightHapticsNeedUpdate) - { - SetHapticFeedbackValues(0, (int32)(EControllerHand::Right), RightHaptics, HapticsDesc_Right); - } - } - - void FOculusTouchControllerState::ResampleHapticBufferData(const FHapticFeedbackBuffer& HapticBuffer, TMap>>& ResampledRawDataCache) - { - const uint8* OriginalRawData = HapticBuffer.RawData; - TSharedPtr>* ResampledRawDataSharedPtrPtr = ResampledRawDataCache.Find(OriginalRawData); - if (ResampledRawDataSharedPtrPtr == nullptr) - { - // We need to resample and cache the resampled data. - - ResampledHapticBuffer = HapticBuffer; - - int32 SampleRate = HapticBuffer.SamplingRate; - int TargetFrequency = 320; - int TargetBufferSize = (HapticBuffer.BufferLength * TargetFrequency) / (SampleRate * 2) + 1; // 2 because we're only using half of the 16bit source PCM buffer - ResampledHapticBuffer.BufferLength = TargetBufferSize; - ResampledHapticBuffer.CurrentPtr = 0; - ResampledHapticBuffer.SamplingRate = TargetFrequency; - - TSharedPtr>& NewResampledRawDataSharedPtr = ResampledRawDataCache.Add(OriginalRawData); - NewResampledRawDataSharedPtr = MakeShared>(); - ResampledRawDataSharedPtrPtr = &NewResampledRawDataSharedPtr; - TArray& ResampledRawData = *NewResampledRawDataSharedPtr; - ResampledRawData.SetNum(TargetBufferSize); - - const uint8* PCMData = HapticBuffer.RawData; - - int previousTargetIndex = -1; - int currentMin = 0; - for (int i = 1; i < HapticBuffer.BufferLength; i += 2) - { - int targetIndex = i * TargetFrequency / (SampleRate * 2); - int val = PCMData[i]; - if (val & 0x80) - { - val = ~val; - } - currentMin = FMath::Min(currentMin, val); - - if (targetIndex != previousTargetIndex) - { - - ResampledRawData[targetIndex] = val * 2; // *Scale; - previousTargetIndex = targetIndex; - currentMin = 0; - } - } - - ResampledHapticBuffer.RawData = ResampledRawData.GetData(); - } - else if (ResampledHapticBuffer.RawData != (*ResampledRawDataSharedPtrPtr)->GetData()) - { - // If this a cached effect, but not the same one we played last so we need to copy the new one's buffer and reference its cached resampled data. - ResampledHapticBuffer = HapticBuffer; - ResampledHapticBuffer.RawData = (*ResampledRawDataSharedPtrPtr)->GetData(); - } - } - - void FOculusXRInput::GetHapticFrequencyRange(float& MinFrequency, float& MaxFrequency) const - { - MinFrequency = 0.f; - MaxFrequency = 1.f; - } - - float FOculusXRInput::GetHapticAmplitudeScale() const - { - return 1.f; - } - - uint32 FOculusXRInput::GetNumberOfTouchControllers() const - { - uint32 RetVal = 0; - - for (FOculusControllerPair Pair : ControllerPairs) - { - RetVal += (Pair.TouchControllerStates[0].bIsConnected ? 1 : 0); - RetVal += (Pair.TouchControllerStates[1].bIsConnected ? 1 : 0); - } - - return RetVal; - } - - uint32 FOculusXRInput::GetNumberOfHandControllers() const - { - uint32 RetVal = 0; - - for (FOculusControllerPair Pair : ControllerPairs) - { - RetVal += (Pair.HandControllerStates[0].bIsConnected ? 1 : 0); - RetVal += (Pair.HandControllerStates[1].bIsConnected ? 1 : 0); - } - - return RetVal; - } - - ovrpHapticsLocation FOculusXRInput::GetOVRPHapticsLocation(EOculusXRHandHapticsLocation Location) - { - switch (Location) - { - case EOculusXRHandHapticsLocation::Hand: - return ovrpHapticsLocation::ovrpHapticsLocation_Hand; - case EOculusXRHandHapticsLocation::Thumb: - return ovrpHapticsLocation::ovrpHapticsLocation_Thumb; - case EOculusXRHandHapticsLocation::Index: - return ovrpHapticsLocation::ovrpHapticsLocation_Index; - default: - UE_LOG(LogOcInput, Error, TEXT("Unsupported Haptics Location: %d"), Location); - return ovrpHapticsLocation::ovrpHapticsLocation_None; - } - } - - bool FOculusXRInput::GetOvrpHapticsDesc(int Hand) - { - if (!bPulledHapticsDesc) - { - const ovrpController OvrpController = (EControllerHand(Hand) == EControllerHand::Left) ? ovrpController_LTouch : ovrpController_RTouch; - // Buffered haptics is currently only supported on Touch - if (OVRP_FAILURE(FOculusXRHMDModule::GetPluginWrapper().GetControllerHapticsDesc2(OvrpController, &OvrpHapticsDesc))) - { - UE_LOG(LogOcInput, Error, TEXT("ControllerHapticsDesc2 failed.")); - return false; - } - bPulledHapticsDesc = true; - if (OvrpHapticsDesc.SampleRateHz == 0) - { - UE_LOG(LogOcInput, Error, TEXT("GetControllerHapticsDesc2 returns OvrpHapticsDesc.SampleRateHz = %d"), OvrpHapticsDesc.SampleRateHz); - OvrpHapticsDesc.SampleRateHz = 2000; - return true; - } - else - { - UE_CLOG(OVR_HAP_LOGGING, LogOcInput, Log, TEXT("GetControllerHapticsDesc2 returns OvrpHapticsDesc.SampleRateHz = %d"), OvrpHapticsDesc.SampleRateHz); - } - } - return true; - } - - TSharedPtr FOculusXRInput::FunctionLibraryImpl = nullptr; - - TSharedPtr FOculusXRInput::GetOculusXRInputBaseImpl() - { - if (FunctionLibraryImpl == nullptr) - { - const FName SystemName(TEXT("OpenXR")); - const bool IsOpenXR = GEngine->XRSystem.IsValid() && (GEngine->XRSystem->GetSystemName() == SystemName); - - if (OculusXRHMD::FOculusXRHMD::GetOculusXRHMD() != nullptr) - { - FunctionLibraryImpl = MakeShared(); - } - else if (IsOpenXR) - { - FunctionLibraryImpl = MakeShared(); - } - } - return FunctionLibraryImpl; - } - - float FOculusXRInput::GetControllerSampleRateHz(EControllerHand Hand) - { - TSharedPtr Impl = GetOculusXRInputBaseImpl(); - return Impl->GetControllerSampleRateHz(Hand); - } - - int FOculusXRInput::GetMaxHapticDuration(EControllerHand Hand) - { - TSharedPtr Impl = GetOculusXRInputBaseImpl(); - return Impl->GetMaxHapticDuration(Hand); - } -} // namespace OculusXRInput - -#undef LOCTEXT_NAMESPACE -#endif // OCULUS_INPUT_SUPPORTED_PLATFORMS diff --git a/Plugins/MetaXR/Source/OculusXRInput/Private/OculusXRInput.h b/Plugins/MetaXR/Source/OculusXRInput/Private/OculusXRInput.h deleted file mode 100644 index 535dd29..0000000 --- a/Plugins/MetaXR/Source/OculusXRInput/Private/OculusXRInput.h +++ /dev/null @@ -1,172 +0,0 @@ -// @lint-ignore-every LICENSELINT -// Copyright Epic Games, Inc. All Rights Reserved. - -#pragma once -#include "IOculusXRInputModule.h" - -#if OCULUS_INPUT_SUPPORTED_PLATFORMS -#include "OculusXRHMDModule.h" -#include "GenericPlatform/IInputInterface.h" -#include "XRMotionControllerBase.h" -#include "IHapticDevice.h" -#include "OculusXRInputState.h" - -#if PLATFORM_SUPPORTS_PRAGMA_PACK -#pragma pack(push, 8) -#endif - -#include "OculusXRPluginWrapper.h" - -#if PLATFORM_SUPPORTS_PRAGMA_PACK -#pragma pack(pop) -#endif - -DEFINE_LOG_CATEGORY_STATIC(LogOcInput, Log, All); - -#define OVR_HAP_LOGGING 0 - -class UHapticFeedbackEffect_Base; -struct FActiveHapticFeedbackEffect; -struct FOculusXRHapticsDesc; - -namespace OculusXRInput -{ - - class IOculusXRInputBase - { - public: - virtual ~IOculusXRInputBase() = default; - - virtual void PlayHapticEffect(UHapticFeedbackEffect_Base* HapticEffect, - EControllerHand Hand, - EOculusXRHandHapticsLocation Location = EOculusXRHandHapticsLocation::Hand, - bool bAppend = false, - float Scale = 1.f, - bool bLoop = false) = 0; - virtual void PlayAmplitudeEnvelopeHapticEffect(EControllerHand Hand, int SamplesCount, void* Samples, int SampleRate = -1) = 0; - virtual void SetHapticsByValue(float Frequency, float Amplitude, EControllerHand Hand, EOculusXRHandHapticsLocation Location = EOculusXRHandHapticsLocation::Hand) = 0; - - virtual float GetControllerSampleRateHz(EControllerHand Hand) const = 0; - virtual int GetMaxHapticDuration(EControllerHand Hand) const = 0; - }; - - //------------------------------------------------------------------------------------------------- - // FOculusXRInput - //------------------------------------------------------------------------------------------------- - - class FOculusXRInput : public IInputDevice, public FXRMotionControllerBase, public IHapticDevice - { - friend class FOculusHandTracking; - friend class FOculusXRInputOVR; - - public: - /** Constructor that takes an initial message handler that will receive motion controller events */ - FOculusXRInput(const TSharedRef& InMessageHandler); - - /** Clean everything up */ - virtual ~FOculusXRInput(); - - static void PreInit(); - - /** Loads any settings from the config folder that we need */ - static void LoadConfig(); - - // IInputDevice overrides - virtual void Tick(float DeltaTime) override; - virtual void SendControllerEvents() override; - virtual void SetMessageHandler(const TSharedRef& InMessageHandler) override; - virtual bool Exec(UWorld* InWorld, const TCHAR* Cmd, FOutputDevice& Ar) override; - virtual void SetChannelValue(int32 ControllerId, FForceFeedbackChannelType ChannelType, float Value) override; - virtual void SetChannelValues(int32 ControllerId, const FForceFeedbackValues& Values) override; - virtual bool SupportsForceFeedback(int32 ControllerId) override; - - // IMotionController overrides - virtual FName GetMotionControllerDeviceTypeName() const override; -#if UE_VERSION_OLDER_THAN(5, 3, 0) - virtual bool GetControllerOrientationAndPosition(const int32 ControllerIndex, const EControllerHand DeviceHand, FRotator& OutOrientation, FVector& OutPosition, float WorldToMetersScale) const override; - virtual ETrackingStatus GetControllerTrackingStatus(const int32 ControllerIndex, const EControllerHand DeviceHand) const override; -#endif - virtual bool GetControllerOrientationAndPosition(const int32 ControllerIndex, const FName MotionSource, FRotator& OutOrientation, FVector& OutPosition, float WorldToMetersScale) const override; - virtual ETrackingStatus GetControllerTrackingStatus(const int32 ControllerIndex, const FName MotionSource) const override; - - // IHapticDevice overrides - IHapticDevice* GetHapticDevice() override { return (IHapticDevice*)this; } - virtual void SetHapticFeedbackValues(int32 ControllerId, int32 Hand, const FHapticFeedbackValues& Values) override; - - void PlayHapticEffect( - UHapticFeedbackEffect_Base* HapticEffect, - EControllerHand Hand, - EOculusXRHandHapticsLocation Location = EOculusXRHandHapticsLocation::Hand, - bool bAppend = false, - float Scale = 1.f, - bool bLoop = false); - void PlayAmplitudeEnvelopeHapticEffect(EControllerHand Hand, int SamplesCount, void* Samples, int SampleRate = -1); - void SetHapticsByValue(float Frequency, float Amplitude, EControllerHand Hand, EOculusXRHandHapticsLocation Location = EOculusXRHandHapticsLocation::Hand); - - virtual void GetHapticFrequencyRange(float& MinFrequency, float& MaxFrequency) const override; - virtual float GetHapticAmplitudeScale() const override; - - uint32 GetNumberOfTouchControllers() const; - uint32 GetNumberOfHandControllers() const; - - float GetControllerSampleRateHz(EControllerHand Hand); - int GetMaxHapticDuration(EControllerHand Hand); - - static void ShutdownXRFunctionLibrary(); - - private: - /** Applies force feedback settings to the controller */ - void UpdateForceFeedback(const FOculusControllerPair& ControllerPair, const EControllerHand Hand); - - bool OnControllerButtonPressed(const FOculusButtonState& ButtonState, FPlatformUserId UserId, FInputDeviceId DeviceId, bool IsRepeat); - bool OnControllerButtonReleased(const FOculusButtonState& ButtonState, FPlatformUserId UserId, FInputDeviceId DeviceId, bool IsRepeat); - - void SetHapticFeedbackValues(int32 ControllerId, int32 Hand, const FHapticFeedbackValues& Values, TSharedPtr HapticsDesc); - ovrpHapticsLocation GetOVRPHapticsLocation(EOculusXRHandHapticsLocation InLocation); - - void ProcessHaptics(const float DeltaTime); - bool GetOvrpHapticsDesc(int Hand); - - private: - /** The recipient of motion controller input events */ - TSharedPtr MessageHandler; - - /** List of the connected pairs of controllers, with state for each controller device */ - TArray ControllerPairs; - - FOculusRemoteControllerState Remote; - - ovrpHapticsDesc OvrpHapticsDesc; - - int LocalTrackingSpaceRecenterCount; - - // Maintain a cache of resampled raw data so we don't resample it on every play. This is a map of OriginalRawData pointers, used only as a key, to ResampledRawData buffers. - // The values are pointers because the map could be reallocated and we cache raw pointers to the uint8 array data elsewhere. - TMap>> ResampledRawDataCache; - - TSharedPtr ActiveHapticEffect_Left; - TSharedPtr ActiveHapticEffect_Right; - TSharedPtr HapticsDesc_Left; - TSharedPtr HapticsDesc_Right; - double StartTime = 0.0; - - /** Threshold for treating trigger pulls as button presses, from 0.0 to 1.0 */ - static float TriggerThreshold; - - /** Are Remote keys mapped to gamepad or not. */ - static bool bRemoteKeysMappedToGamepad; - - /** Repeat key delays, loaded from config */ - static float InitialButtonRepeatDelay; - static float ButtonRepeatDelay; - - static bool bPulledHapticsDesc; - - protected: - static TSharedPtr GetOculusXRInputBaseImpl(); - static TSharedPtr FunctionLibraryImpl; - }; - -} // namespace OculusXRInput - -#endif // OCULUS_INPUT_SUPPORTED_PLATFORMS diff --git a/Plugins/MetaXR/Source/OculusXRInput/Private/OculusXRInputExtensionPlugin.cpp b/Plugins/MetaXR/Source/OculusXRInput/Private/OculusXRInputExtensionPlugin.cpp deleted file mode 100644 index 37c1627..0000000 --- a/Plugins/MetaXR/Source/OculusXRInput/Private/OculusXRInputExtensionPlugin.cpp +++ /dev/null @@ -1,449 +0,0 @@ -// Copyright (c) Meta Platforms, Inc. and affiliates. - -#include "OculusXRInputExtensionPlugin.h" -#include "OculusXRInputState.h" -#include "OculusXRHMDRuntimeSettings.h" -#include "IOpenXRHMDModule.h" -#include "OpenXRCore.h" -#include "Misc/CoreDelegates.h" - -namespace OculusXRInput -{ - void FInputExtensionPlugin::SetMessageHandler(const TSharedRef& InMessageHandler) - { - MessageHandler = InMessageHandler; - } - - bool FInputExtensionPlugin::Exec(UWorld* InWorld, const TCHAR* Cmd, FOutputDevice& Ar) - { - return false; - } - -#if !UE_VERSION_OLDER_THAN(5, 5, 0) - bool FInputExtensionPlugin::GetOptionalExtensions(TArray& OutExtensions) - { - OutExtensions.Add(XR_FB_TOUCH_CONTROLLER_PROXIMITY_EXTENSION_NAME); - return true; - } - - const void* FInputExtensionPlugin::OnCreateInstance(class IOpenXRHMDModule* InModule, const void* InNext) - { - bExtTouchControllerProximityAvailable = InModule->IsExtensionEnabled(XR_FB_TOUCH_CONTROLLER_PROXIMITY_EXTENSION_NAME); - return InNext; - } - - void FInputExtensionPlugin::PostCreateInstance(XrInstance InInstance) - { - Instance = InInstance; - - GConfig->GetFloat(TEXT("/Script/Engine.InputSettings"), TEXT("InitialButtonRepeatDelay"), InitialButtonRepeatDelay, GInputIni); - GConfig->GetFloat(TEXT("/Script/Engine.InputSettings"), TEXT("ButtonRepeatDelay"), ButtonRepeatDelay, GInputIni); - } - - void FInputExtensionPlugin::OnEvent(XrSession InSession, const XrEventDataBaseHeader* InHeader) - { - check(InHeader != nullptr); - if (InHeader->type == XR_TYPE_EVENT_DATA_REFERENCE_SPACE_CHANGE_PENDING) - { - const XrEventDataReferenceSpaceChangePending& SpaceChange = - reinterpret_cast(*InHeader); - if (SpaceChange.referenceSpaceType == XR_REFERENCE_SPACE_TYPE_LOCAL_FLOOR_EXT) - { - FCoreDelegates::VRControllerRecentered.Broadcast(); - } - } - } - - void FInputExtensionPlugin::CreateDerivedActions() - { - InitializeDerivedActionsArray(); - - DerivedActionSet = XR_NULL_HANDLE; - XrActionSetCreateInfo ActionSetInfo{ XR_TYPE_ACTION_SET_CREATE_INFO }; - ActionSetInfo.next = nullptr; - // Using max priority since these actions are needed to calculate and send derived inputs - ActionSetInfo.priority = ToXrPriority(MAX_int32); - FCStringAnsi::Strcpy(ActionSetInfo.actionSetName, XR_MAX_ACTION_SET_NAME_SIZE, "oculustouchderivedinputsactionset"); - FCStringAnsi::Strcpy(ActionSetInfo.localizedActionSetName, XR_MAX_LOCALIZED_ACTION_SET_NAME_SIZE, "OculusTouchDerivedInputsActionSet"); - XR_ENSURE(xrCreateActionSet(Instance, &ActionSetInfo, &DerivedActionSet)); - - for (FDerivedActionProperties& DerivedAction : DerivedActions) - { - XrActionCreateInfo ActionInfo{ XR_TYPE_ACTION_CREATE_INFO }; - ActionInfo.next = nullptr; - ActionInfo.actionType = DerivedAction.Type; - ActionInfo.countSubactionPaths = 0; - FCStringAnsi::Strcpy(ActionInfo.actionName, XR_MAX_ACTION_NAME_SIZE, TCHAR_TO_ANSI(*DerivedAction.Name.ToLower())); - FCStringAnsi::Strcpy(ActionInfo.localizedActionName, XR_MAX_LOCALIZED_ACTION_NAME_SIZE, TCHAR_TO_ANSI(*DerivedAction.Name)); - XR_ENSURE(xrCreateAction(DerivedActionSet, &ActionInfo, &DerivedAction.Action)); - } - } - - bool FInputExtensionPlugin::GetSuggestedBindings(XrPath InInteractionProfile, TArray& OutBindings) - { - if (DerivedActionSet == XR_NULL_HANDLE) - { - return false; - } - - const FString ProfilePath = FOpenXRPath(InInteractionProfile).ToString(); - FDerivedActionProfile ActiveProfile = FDerivedActionProfile::OculusTouch; - if (ProfilePath == OculusTouchProfilePath) - { - ActiveProfile = FDerivedActionProfile::OculusTouch; - } - else if (ProfilePath == OculusTouchProProfilePath) - { - ActiveProfile = FDerivedActionProfile::OculusTouchPro; - } - else if (ProfilePath == OculusTouchPlusProfilePath) - { - ActiveProfile = FDerivedActionProfile::OculusTouchPlus; - } - else - { - return false; - } - - for (FDerivedActionProperties& DerivedAction : DerivedActions) - { - if (DerivedAction.Profile != FDerivedActionProfile::All && DerivedAction.Profile != ActiveProfile) - { - continue; - } - - XrPath Path; - xrStringToPath(Instance, TCHAR_TO_ANSI(*DerivedAction.OpenXRPath), &Path); - OutBindings.Add({ DerivedAction.Action, Path }); - } - return true; - } - - void FInputExtensionPlugin::AttachActionSets(TSet& OutActionSets) - { - if (DerivedActionSet != XR_NULL_PATH) - { - OutActionSets.Add(DerivedActionSet); - } - } - - void FInputExtensionPlugin::GetActiveActionSetsForSync(TArray& OutActiveSets) - { - if (DerivedActionSet != XR_NULL_PATH) - { - OutActiveSets.Add({ DerivedActionSet, XR_NULL_PATH }); - } - } - - void FInputExtensionPlugin::PostSyncActions(XrSession InSession) - { - if (DerivedActionSet == XR_NULL_PATH) - { - return; - } - - const double CurrentTime = FPlatformTime::Seconds(); - IPlatformInputDeviceMapper& DeviceMapper = IPlatformInputDeviceMapper::Get(); - const FPlatformUserId UserId = DeviceMapper.GetPrimaryPlatformUser(); - const FInputDeviceId DeviceId = DeviceMapper.GetDefaultInputDevice(); - - for (FDerivedActionProperties& DerivedAction : DerivedActions) - { - FDerivedInputState& SavedState = DerivedKeysToState.FindOrAdd(DerivedAction.InputKey); - if (DerivedAction.Type == XrActionType::XR_ACTION_TYPE_FLOAT_INPUT) - { - XrActionStateFloat State{ XR_TYPE_ACTION_STATE_FLOAT }; - XrActionStateGetInfo Info{ XR_TYPE_ACTION_STATE_GET_INFO }; - Info.action = DerivedAction.Action; - - XrResult Result = xrGetActionStateFloat(InSession, &Info, &State); - if (XR_SUCCEEDED(Result) && State.isActive) - { - // handle keys with bool-like float values that need to be inverted - if (KeysToInvert.Contains(DerivedAction.InputKey)) - { - State.currentState = FMath::IsNearlyEqual(State.currentState, 0.f) ? 1.f : 0.f; - } - - if (State.changedSinceLastSync) - { - MessageHandler->OnControllerAnalog(DerivedAction.InputKey.GetFName(), UserId, DeviceId, State.currentState); - } - SavedState.ValueFloat = State.currentState; - SavedState.ChangedSinceLastSync = (bool)State.changedSinceLastSync; - } - } - else if (DerivedAction.Type == XrActionType::XR_ACTION_TYPE_BOOLEAN_INPUT) - { - XrActionStateBoolean State{ XR_TYPE_ACTION_STATE_BOOLEAN }; - XrActionStateGetInfo Info{ XR_TYPE_ACTION_STATE_GET_INFO }; - Info.action = DerivedAction.Action; - - XrResult Result = xrGetActionStateBoolean(InSession, &Info, &State); - if (XR_SUCCEEDED(Result) && State.isActive) - { - const bool bIsPressed = (bool)State.currentState; - if (State.changedSinceLastSync) - { - SendControllerButtonPressed(DerivedAction.InputKey, bIsPressed, UserId, DeviceId, false); - SavedState.NextRepeatTime = CurrentTime + InitialButtonRepeatDelay; - } - else if (bIsPressed && SavedState.NextRepeatTime <= CurrentTime) - { - SendControllerButtonPressed(DerivedAction.InputKey, bIsPressed, UserId, DeviceId, true); - SavedState.NextRepeatTime = CurrentTime + ButtonRepeatDelay; - } - SavedState.ValueBool = bIsPressed; - SavedState.ChangedSinceLastSync = (bool)State.changedSinceLastSync; - } - } - else - { - checkf(false, TEXT("Invalid XrActionType for handling Oculus Derived Inputs")); - } - } - - // Handle derived thumbstick cardinal dpad directions - const UOculusXRHMDRuntimeSettings* Settings = GetMutableDefault(); - if (Settings->bThumbstickDpadEmulationEnabled) - { - for (bool isLeft : { true, false }) - { - // Reset changed since last sync state - DerivedKeysToState.FindOrAdd(isLeft ? EKeys::OculusTouch_Left_Thumbstick_Up : EKeys::OculusTouch_Right_Thumbstick_Up).ChangedSinceLastSync = false; - DerivedKeysToState.FindOrAdd(isLeft ? EKeys::OculusTouch_Left_Thumbstick_Down : EKeys::OculusTouch_Right_Thumbstick_Down).ChangedSinceLastSync = false; - DerivedKeysToState.FindOrAdd(isLeft ? EKeys::OculusTouch_Left_Thumbstick_Left : EKeys::OculusTouch_Right_Thumbstick_Left).ChangedSinceLastSync = false; - DerivedKeysToState.FindOrAdd(isLeft ? EKeys::OculusTouch_Left_Thumbstick_Right : EKeys::OculusTouch_Right_Thumbstick_Right).ChangedSinceLastSync = false; - - const FDerivedInputState* ThumbstickXState = DerivedKeysToState.Find(isLeft ? EKeys::OculusTouch_Left_Thumbstick_X : EKeys::OculusTouch_Right_Thumbstick_X); - const FDerivedInputState* ThumbstickYState = DerivedKeysToState.Find(isLeft ? EKeys::OculusTouch_Left_Thumbstick_Y : EKeys::OculusTouch_Right_Thumbstick_Y); - if (ThumbstickXState != nullptr && ThumbstickYState != nullptr && (ThumbstickXState->ChangedSinceLastSync || ThumbstickYState->ChangedSinceLastSync)) - { - // Calculating quadrants for the thumbstick cardinal directions - float Angle = FMath::Atan2(ThumbstickYState->ValueFloat, ThumbstickXState->ValueFloat); - FVector2D Thumbsticks = FVector2D(ThumbstickXState->ValueFloat, ThumbstickYState->ValueFloat); - bool IsAboveThreshold = Thumbsticks.Size() > 0.7f; - bool IsUpPressed = IsAboveThreshold && Angle >= (1.0f / 8.0f) * PI && Angle <= (7.0f / 8.0f) * PI; - bool IsDownPressed = IsAboveThreshold && Angle >= (-7.0f / 8.0f) * PI && Angle <= (-1.0f / 8.0f) * PI; - bool IsLeftPressed = IsAboveThreshold && Angle <= (-5.0f / 8.0f) * PI || Angle >= (5.0f / 8.0f) * PI; - bool IsRightPressed = IsAboveThreshold && Angle >= (-3.0f / 8.0f) * PI && Angle <= (3.0f / 8.0f) * PI; - - SendDerivedDpadButtonPressed(isLeft ? EKeys::OculusTouch_Left_Thumbstick_Up : EKeys::OculusTouch_Right_Thumbstick_Up, IsUpPressed, UserId, DeviceId, CurrentTime); - SendDerivedDpadButtonPressed(isLeft ? EKeys::OculusTouch_Left_Thumbstick_Down : EKeys::OculusTouch_Right_Thumbstick_Down, IsDownPressed, UserId, DeviceId, CurrentTime); - SendDerivedDpadButtonPressed(isLeft ? EKeys::OculusTouch_Left_Thumbstick_Left : EKeys::OculusTouch_Right_Thumbstick_Left, IsLeftPressed, UserId, DeviceId, CurrentTime); - SendDerivedDpadButtonPressed(isLeft ? EKeys::OculusTouch_Left_Thumbstick_Right : EKeys::OculusTouch_Right_Thumbstick_Right, IsRightPressed, UserId, DeviceId, CurrentTime); - } - } - } - } - - void FInputExtensionPlugin::SendControllerButtonPressed(FKey InKey, bool bIsPressed, FPlatformUserId UserId, FInputDeviceId DeviceId, bool bIsRepeat) - { - if (bIsPressed) - { - MessageHandler->OnControllerButtonPressed(InKey.GetFName(), UserId, DeviceId, bIsRepeat); - } - else - { - MessageHandler->OnControllerButtonReleased(InKey.GetFName(), UserId, DeviceId, bIsRepeat); - } - } - - void FInputExtensionPlugin::SendDerivedDpadButtonPressed(FKey InKey, bool bIsPressed, FPlatformUserId UserId, FInputDeviceId DeviceId, double CurrentTime) - { - FDerivedInputState& SavedState = DerivedKeysToState.FindOrAdd(InKey); - if (SavedState.ValueBool != bIsPressed) - { - SendControllerButtonPressed(InKey, bIsPressed, UserId, DeviceId, false); - SavedState.NextRepeatTime = CurrentTime + InitialButtonRepeatDelay; - SavedState.ChangedSinceLastSync = true; - } - else if (bIsPressed && SavedState.NextRepeatTime <= CurrentTime) - { - SendControllerButtonPressed(InKey, bIsPressed, UserId, DeviceId, true); - SavedState.NextRepeatTime = CurrentTime + ButtonRepeatDelay; - } - SavedState.ValueBool = bIsPressed; - } - - void FInputExtensionPlugin::DestroyDerivedActions() - { - xrDestroyActionSet(DerivedActionSet); - DerivedActionSet = XR_NULL_HANDLE; - DerivedActions.Empty(); - } - - bool FInputExtensionPlugin::GetInputKeyOverrides(TArray& OutOverrides) - { - // Each time Unreal sets up input, we must recreate the derived action set - if (DerivedActionSet != XR_NULL_HANDLE) - { - DestroyDerivedActions(); - } - CreateDerivedActions(); - - // Input keys compatible with all oculus interaction profiles - CreateForAllProfiles(OutOverrides, EKeys::OculusTouch_Left_X_Click, "/user/hand/left/input/x/click"); - CreateForAllProfiles(OutOverrides, EKeys::OculusTouch_Left_Y_Click, "/user/hand/left/input/y/click"); - CreateForAllProfiles(OutOverrides, EKeys::OculusTouch_Left_X_Touch, "/user/hand/left/input/x/touch"); - CreateForAllProfiles(OutOverrides, EKeys::OculusTouch_Left_Y_Touch, "/user/hand/left/input/y/touch"); - CreateForAllProfiles(OutOverrides, EKeys::OculusTouch_Left_Menu_Click, "/user/hand/left/input/menu/click"); - CreateForAllProfiles(OutOverrides, EKeys::OculusTouch_Left_Grip_Click, "/user/hand/left/input/squeeze"); - CreateForAllProfiles(OutOverrides, EKeys::OculusTouch_Left_Grip_Axis, "/user/hand/left/input/squeeze/value"); - CreateForAllProfiles(OutOverrides, EKeys::OculusTouch_Left_Trigger_Click, "/user/hand/left/input/trigger"); - CreateForAllProfiles(OutOverrides, EKeys::OculusTouch_Left_Trigger_Axis, "/user/hand/left/input/trigger/value"); - CreateForAllProfiles(OutOverrides, EKeys::OculusTouch_Left_Trigger_Touch, "/user/hand/left/input/trigger/touch"); - CreateForAllProfiles(OutOverrides, EKeys::OculusTouch_Left_Thumbstick_2D, "/user/hand/left/input/thumbstick"); - CreateForAllProfiles(OutOverrides, EKeys::OculusTouch_Left_Thumbstick_X, "/user/hand/left/input/thumbstick/x"); - CreateForAllProfiles(OutOverrides, EKeys::OculusTouch_Left_Thumbstick_Y, "/user/hand/left/input/thumbstick/y"); - CreateForAllProfiles(OutOverrides, EKeys::OculusTouch_Left_Thumbstick_Click, "/user/hand/left/input/thumbstick/click"); - CreateForAllProfiles(OutOverrides, EKeys::OculusTouch_Left_Thumbstick_Touch, "/user/hand/left/input/thumbstick/touch"); - CreateForAllProfiles(OutOverrides, EKeys::OculusTouch_Right_A_Click, "/user/hand/right/input/a/click"); - CreateForAllProfiles(OutOverrides, EKeys::OculusTouch_Right_B_Click, "/user/hand/right/input/b/click"); - CreateForAllProfiles(OutOverrides, EKeys::OculusTouch_Right_A_Touch, "/user/hand/right/input/a/touch"); - CreateForAllProfiles(OutOverrides, EKeys::OculusTouch_Right_B_Touch, "/user/hand/right/input/b/touch"); - CreateForAllProfiles(OutOverrides, EKeys::OculusTouch_Right_Grip_Click, "/user/hand/right/input/squeeze"); - CreateForAllProfiles(OutOverrides, EKeys::OculusTouch_Right_Grip_Axis, "/user/hand/right/input/squeeze/value"); - CreateForAllProfiles(OutOverrides, EKeys::OculusTouch_Right_Trigger_Click, "/user/hand/right/input/trigger"); - CreateForAllProfiles(OutOverrides, EKeys::OculusTouch_Right_Trigger_Axis, "/user/hand/right/input/trigger/value"); - CreateForAllProfiles(OutOverrides, EKeys::OculusTouch_Right_Trigger_Touch, "/user/hand/right/input/trigger/touch"); - CreateForAllProfiles(OutOverrides, EKeys::OculusTouch_Right_Thumbstick_2D, "/user/hand/right/input/thumbstick"); - CreateForAllProfiles(OutOverrides, EKeys::OculusTouch_Right_Thumbstick_X, "/user/hand/right/input/thumbstick/x"); - CreateForAllProfiles(OutOverrides, EKeys::OculusTouch_Right_Thumbstick_Y, "/user/hand/right/input/thumbstick/y"); - CreateForAllProfiles(OutOverrides, EKeys::OculusTouch_Right_Thumbstick_Click, "/user/hand/right/input/thumbstick/click"); - CreateForAllProfiles(OutOverrides, EKeys::OculusTouch_Right_Thumbstick_Touch, "/user/hand/right/input/thumbstick/touch"); - CreateForAllProfiles(OutOverrides, FOculusKey::OculusTouch_Left_ThumbRest, "/user/hand/left/input/thumbrest/touch"); - CreateForAllProfiles(OutOverrides, FOculusKey::OculusTouch_Right_ThumbRest, "/user/hand/right/input/thumbrest/touch"); - - if (bExtTouchControllerProximityAvailable) - { - CreateForAllProfiles(OutOverrides, FOculusKey::OculusTouch_Left_IndexPointing, "/user/hand/left/input/trigger/proximity_fb"); - CreateForAllProfiles(OutOverrides, FOculusKey::OculusTouch_Left_Trigger_Proximity, "/user/hand/left/input/trigger/proximity_fb"); - CreateForAllProfiles(OutOverrides, FOculusKey::OculusTouch_Left_ThumbUp, "/user/hand/left/input/thumb_fb/proximity_fb"); - CreateForAllProfiles(OutOverrides, FOculusKey::OculusTouch_Left_Thumb_Proximity, "/user/hand/left/input/thumb_fb/proximity_fb"); - CreateForAllProfiles(OutOverrides, FOculusKey::OculusTouch_Right_IndexPointing, "/user/hand/right/input/trigger/proximity_fb"); - CreateForAllProfiles(OutOverrides, FOculusKey::OculusTouch_Right_Trigger_Proximity, "/user/hand/right/input/trigger/proximity_fb"); - CreateForAllProfiles(OutOverrides, FOculusKey::OculusTouch_Right_ThumbUp, "/user/hand/right/input/thumb_fb/proximity_fb"); - CreateForAllProfiles(OutOverrides, FOculusKey::OculusTouch_Right_Thumb_Proximity, "/user/hand/right/input/thumb_fb/proximity_fb"); - } - else - { - OutOverrides.Add({ FOculusKey::OculusTouch_Left_IndexPointing.ToString(), OculusTouchProProfile, "/user/hand/left/input/trigger/proximity_fb" }); - OutOverrides.Add({ FOculusKey::OculusTouch_Left_Trigger_Proximity.ToString(), OculusTouchProProfile, "/user/hand/left/input/trigger/proximity_fb" }); - OutOverrides.Add({ FOculusKey::OculusTouch_Left_ThumbUp.ToString(), OculusTouchProProfile, "/user/hand/left/input/thumb_fb/proximity_fb" }); - OutOverrides.Add({ FOculusKey::OculusTouch_Left_Thumb_Proximity.ToString(), OculusTouchProProfile, "/user/hand/left/input/thumb_fb/proximity_fb" }); - OutOverrides.Add({ FOculusKey::OculusTouch_Right_IndexPointing.ToString(), OculusTouchProProfile, "/user/hand/right/input/trigger/proximity_fb" }); - OutOverrides.Add({ FOculusKey::OculusTouch_Right_Trigger_Proximity.ToString(), OculusTouchProProfile, "/user/hand/right/input/trigger/proximity_fb" }); - OutOverrides.Add({ FOculusKey::OculusTouch_Right_ThumbUp.ToString(), OculusTouchProProfile, "/user/hand/right/input/thumb_fb/proximity_fb" }); - OutOverrides.Add({ FOculusKey::OculusTouch_Right_Thumb_Proximity.ToString(), OculusTouchProProfile, "/user/hand/right/input/thumb_fb/proximity_fb" }); - } - - // These keys are duplicated with what Epic already has. Binding for backwards compatibility. - CreateForAllProfiles(OutOverrides, FOculusKey::OculusTouch_Left_Thumbstick, "/user/hand/left/input/thumbstick/touch"); - CreateForAllProfiles(OutOverrides, FOculusKey::OculusTouch_Left_Trigger, "/user/hand/left/input/trigger/touch"); - CreateForAllProfiles(OutOverrides, FOculusKey::OculusTouch_Left_FaceButton1, "/user/hand/left/input/x/touch"); - CreateForAllProfiles(OutOverrides, FOculusKey::OculusTouch_Left_FaceButton2, "/user/hand/left/input/y/touch"); - CreateForAllProfiles(OutOverrides, FOculusKey::OculusTouch_Right_Thumbstick, "/user/hand/right/input/thumbstick/touch"); - CreateForAllProfiles(OutOverrides, FOculusKey::OculusTouch_Right_Trigger, "/user/hand/right/input/trigger/touch"); - CreateForAllProfiles(OutOverrides, FOculusKey::OculusTouch_Right_FaceButton1, "/user/hand/right/input/a/touch"); - CreateForAllProfiles(OutOverrides, FOculusKey::OculusTouch_Right_FaceButton2, "/user/hand/right/input/b/touch"); - - // Input keys compatible with only touch pro - OutOverrides.Add({ FOculusKey::OculusTouch_Left_ThumbRest_Force.ToString(), OculusTouchProProfile, "/user/hand/left/input/thumbrest/force" }); - OutOverrides.Add({ FOculusKey::OculusTouch_Left_Stylus_Force.ToString(), OculusTouchProProfile, "/user/hand/left/input/stylus_fb/force" }); - OutOverrides.Add({ FOculusKey::OculusTouch_Right_ThumbRest_Force.ToString(), OculusTouchProProfile, "/user/hand/right/input/thumbrest/force" }); - OutOverrides.Add({ FOculusKey::OculusTouch_Right_Stylus_Force.ToString(), OculusTouchProProfile, "/user/hand/right/input/stylus_fb/force" }); - - // Input keys compatible with only touch plus - OutOverrides.Add({ FOculusKey::OculusTouch_Left_IndexTrigger_Force.ToString(), OculusTouchPlusProfile, "/user/hand/left/input/trigger/force" }); - OutOverrides.Add({ FOculusKey::OculusTouch_Right_IndexTrigger_Force.ToString(), OculusTouchPlusProfile, "/user/hand/right/input/trigger/force" }); - - // Input key compatible with a mixed selection - OutOverrides.Add({ FOculusKey::OculusTouch_Left_IndexTrigger_Curl.ToString(), OculusTouchProProfile, "/user/hand/left/input/trigger/curl_fb" }); - OutOverrides.Add({ FOculusKey::OculusTouch_Left_IndexTrigger_Curl.ToString(), OculusTouchPlusProfile, "/user/hand/left/input/trigger/curl_meta" }); - OutOverrides.Add({ FOculusKey::OculusTouch_Left_IndexTrigger_Slide.ToString(), OculusTouchProProfile, "/user/hand/left/input/trigger/slide_fb" }); - OutOverrides.Add({ FOculusKey::OculusTouch_Left_IndexTrigger_Slide.ToString(), OculusTouchPlusProfile, "/user/hand/left/input/trigger/slide_meta" }); - OutOverrides.Add({ FOculusKey::OculusTouch_Right_IndexTrigger_Curl.ToString(), OculusTouchProProfile, "/user/hand/right/input/trigger/curl_fb" }); - OutOverrides.Add({ FOculusKey::OculusTouch_Right_IndexTrigger_Curl.ToString(), OculusTouchPlusProfile, "/user/hand/right/input/trigger/curl_meta" }); - OutOverrides.Add({ FOculusKey::OculusTouch_Right_IndexTrigger_Slide.ToString(), OculusTouchProProfile, "/user/hand/right/input/trigger/slide_fb" }); - OutOverrides.Add({ FOculusKey::OculusTouch_Right_IndexTrigger_Slide.ToString(), OculusTouchPlusProfile, "/user/hand/right/input/trigger/slide_meta" }); - - return true; - } - - void FInputExtensionPlugin::CreateForAllProfiles(TArray& OutOverrides, FKey InKey, FString Path) - { - OutOverrides.Add({ InKey.ToString(), OculusTouchProfile, Path }); - OutOverrides.Add({ InKey.ToString(), OculusTouchProProfile, Path }); - OutOverrides.Add({ InKey.ToString(), OculusTouchPlusProfile, Path }); - } - - void FInputExtensionPlugin::InitializeDerivedActionsArray() - { - const UOculusXRHMDRuntimeSettings* Settings = GetMutableDefault(); - if (Settings->bThumbstickDpadEmulationEnabled) - { - // Actions used to derive thumbstick cardinal dpad directions - DerivedActions.Add({ "OculusTouchDerivedLeftThumbstickX", XrActionType::XR_ACTION_TYPE_FLOAT_INPUT, EKeys::OculusTouch_Left_Thumbstick_X, "/user/hand/left/input/thumbstick/x", XR_NULL_HANDLE, FDerivedActionProfile::All }); - DerivedActions.Add({ "OculusTouchDerivedLeftThumbstickY", XrActionType::XR_ACTION_TYPE_FLOAT_INPUT, EKeys::OculusTouch_Left_Thumbstick_Y, "/user/hand/left/input/thumbstick/y", XR_NULL_HANDLE, FDerivedActionProfile::All }); - DerivedActions.Add({ "OculusTouchDerivedRightThumbstickX", XrActionType::XR_ACTION_TYPE_FLOAT_INPUT, EKeys::OculusTouch_Right_Thumbstick_X, "/user/hand/right/input/thumbstick/x", XR_NULL_HANDLE, FDerivedActionProfile::All }); - DerivedActions.Add({ "OculusTouchDerivedRightThumbstickY", XrActionType::XR_ACTION_TYPE_FLOAT_INPUT, EKeys::OculusTouch_Right_Thumbstick_Y, "/user/hand/right/input/thumbstick/y", XR_NULL_HANDLE, FDerivedActionProfile::All }); - - // Remaining thumbstick actions since all thumbstick inputs will now be handled by the derived action set - DerivedActions.Add({ "OculusTouchDerivedLeftThumbstickClick", XrActionType::XR_ACTION_TYPE_BOOLEAN_INPUT, EKeys::OculusTouch_Left_Thumbstick_Click, "/user/hand/left/input/thumbstick/click", XR_NULL_HANDLE, FDerivedActionProfile::All }); - DerivedActions.Add({ "OculusTouchDerivedRightThumbstickClick", XrActionType::XR_ACTION_TYPE_BOOLEAN_INPUT, EKeys::OculusTouch_Right_Thumbstick_Click, "/user/hand/right/input/thumbstick/click", XR_NULL_HANDLE, FDerivedActionProfile::All }); - DerivedActions.Add({ "OculusTouchDerivedLeftThumbstickTouch", XrActionType::XR_ACTION_TYPE_BOOLEAN_INPUT, EKeys::OculusTouch_Left_Thumbstick_Touch, "/user/hand/left/input/thumbstick/touch", XR_NULL_HANDLE, FDerivedActionProfile::All }); - DerivedActions.Add({ "OculusTouchDerivedRightThumbstickTouch", XrActionType::XR_ACTION_TYPE_BOOLEAN_INPUT, EKeys::OculusTouch_Right_Thumbstick_Touch, "/user/hand/right/input/thumbstick/touch", XR_NULL_HANDLE, FDerivedActionProfile::All }); - DerivedActions.Add({ "OculusTouchDerivedLeftThumbstick", XrActionType::XR_ACTION_TYPE_FLOAT_INPUT, FOculusKey::OculusTouch_Left_Thumbstick, "/user/hand/left/input/thumbstick/touch", XR_NULL_HANDLE, FDerivedActionProfile::All }); - DerivedActions.Add({ "OculusTouchDerivedRightThumbstick", XrActionType::XR_ACTION_TYPE_FLOAT_INPUT, FOculusKey::OculusTouch_Right_Thumbstick, "/user/hand/right/input/thumbstick/touch", XR_NULL_HANDLE, FDerivedActionProfile::All }); - } - - // Proximity actions are flipped from OpenXR -> UE, so handle these here - if (bExtTouchControllerProximityAvailable) - { - DerivedActions.Add({ "OculusTouchDerivedLeftIndexPointing", XrActionType::XR_ACTION_TYPE_FLOAT_INPUT, FOculusKey::OculusTouch_Left_IndexPointing, "/user/hand/left/input/trigger/proximity_fb", XR_NULL_HANDLE, FDerivedActionProfile::All }); - DerivedActions.Add({ "OculusTouchDerivedRightIndexPointing", XrActionType::XR_ACTION_TYPE_FLOAT_INPUT, FOculusKey::OculusTouch_Right_IndexPointing, "/user/hand/right/input/trigger/proximity_fb", XR_NULL_HANDLE, FDerivedActionProfile::All }); - DerivedActions.Add({ "OculusTouchDerivedLeftTriggerProximity", XrActionType::XR_ACTION_TYPE_FLOAT_INPUT, FOculusKey::OculusTouch_Left_Trigger_Proximity, "/user/hand/left/input/trigger/proximity_fb", XR_NULL_HANDLE, FDerivedActionProfile::All }); - DerivedActions.Add({ "OculusTouchDerivedRightTriggerProximity", XrActionType::XR_ACTION_TYPE_FLOAT_INPUT, FOculusKey::OculusTouch_Right_Trigger_Proximity, "/user/hand/right/input/trigger/proximity_fb", XR_NULL_HANDLE, FDerivedActionProfile::All }); - DerivedActions.Add({ "OculusTouchDerivedLeftThumbUp", XrActionType::XR_ACTION_TYPE_FLOAT_INPUT, FOculusKey::OculusTouch_Left_ThumbUp, "/user/hand/left/input/thumb_fb/proximity_fb", XR_NULL_HANDLE, FDerivedActionProfile::All }); - DerivedActions.Add({ "OculusTouchDerivedRightThumbUp", XrActionType::XR_ACTION_TYPE_FLOAT_INPUT, FOculusKey::OculusTouch_Right_ThumbUp, "/user/hand/right/input/thumb_fb/proximity_fb", XR_NULL_HANDLE, FDerivedActionProfile::All }); - DerivedActions.Add({ "OculusTouchDerivedLeftThumbProximity", XrActionType::XR_ACTION_TYPE_FLOAT_INPUT, FOculusKey::OculusTouch_Left_Thumb_Proximity, "/user/hand/left/input/thumb_fb/proximity_fb", XR_NULL_HANDLE, FDerivedActionProfile::All }); - DerivedActions.Add({ "OculusTouchDerivedRightThumbProximity", XrActionType::XR_ACTION_TYPE_FLOAT_INPUT, FOculusKey::OculusTouch_Right_Thumb_Proximity, "/user/hand/right/input/thumb_fb/proximity_fb", XR_NULL_HANDLE, FDerivedActionProfile::All }); - } - else - { - DerivedActions.Add({ "OculusTouchDerivedLeftIndexPointing", XrActionType::XR_ACTION_TYPE_FLOAT_INPUT, FOculusKey::OculusTouch_Left_IndexPointing, "/user/hand/left/input/trigger/proximity_fb", XR_NULL_HANDLE, FDerivedActionProfile::OculusTouchPro }); - DerivedActions.Add({ "OculusTouchDerivedRightIndexPointing", XrActionType::XR_ACTION_TYPE_FLOAT_INPUT, FOculusKey::OculusTouch_Right_IndexPointing, "/user/hand/right/input/trigger/proximity_fb", XR_NULL_HANDLE, FDerivedActionProfile::OculusTouchPro }); - DerivedActions.Add({ "OculusTouchDerivedLeftTriggerProximity", XrActionType::XR_ACTION_TYPE_FLOAT_INPUT, FOculusKey::OculusTouch_Left_Trigger_Proximity, "/user/hand/left/input/trigger/proximity_fb", XR_NULL_HANDLE, FDerivedActionProfile::OculusTouchPro }); - DerivedActions.Add({ "OculusTouchDerivedRightTriggerProximity", XrActionType::XR_ACTION_TYPE_FLOAT_INPUT, FOculusKey::OculusTouch_Right_Trigger_Proximity, "/user/hand/right/input/trigger/proximity_fb", XR_NULL_HANDLE, FDerivedActionProfile::OculusTouchPro }); - DerivedActions.Add({ "OculusTouchDerivedLeftThumbUp", XrActionType::XR_ACTION_TYPE_FLOAT_INPUT, FOculusKey::OculusTouch_Left_ThumbUp, "/user/hand/left/input/thumb_fb/proximity_fb", XR_NULL_HANDLE, FDerivedActionProfile::OculusTouchPro }); - DerivedActions.Add({ "OculusTouchDerivedRightThumbUp", XrActionType::XR_ACTION_TYPE_FLOAT_INPUT, FOculusKey::OculusTouch_Right_ThumbUp, "/user/hand/right/input/thumb_fb/proximity_fb", XR_NULL_HANDLE, FDerivedActionProfile::OculusTouchPro }); - DerivedActions.Add({ "OculusTouchDerivedLeftThumbProximity", XrActionType::XR_ACTION_TYPE_FLOAT_INPUT, FOculusKey::OculusTouch_Left_Thumb_Proximity, "/user/hand/left/input/thumb_fb/proximity_fb", XR_NULL_HANDLE, FDerivedActionProfile::OculusTouchPro }); - DerivedActions.Add({ "OculusTouchDerivedRightThumbProximity", XrActionType::XR_ACTION_TYPE_FLOAT_INPUT, FOculusKey::OculusTouch_Right_Thumb_Proximity, "/user/hand/right/input/thumb_fb/proximity_fb", XR_NULL_HANDLE, FDerivedActionProfile::OculusTouchPro }); - } - - // Remaining trigger actions since all trigger inputs will now be handled by the derived action set - DerivedActions.Add({ "OculusTouchDerivedLeftTriggerClick", XrActionType::XR_ACTION_TYPE_BOOLEAN_INPUT, EKeys::OculusTouch_Left_Trigger_Click, "/user/hand/left/input/trigger", XR_NULL_HANDLE, FDerivedActionProfile::All }); - DerivedActions.Add({ "OculusTouchDerivedLeftTriggerAxis", XrActionType::XR_ACTION_TYPE_FLOAT_INPUT, EKeys::OculusTouch_Left_Trigger_Axis, "/user/hand/left/input/trigger/value", XR_NULL_HANDLE, FDerivedActionProfile::All }); - DerivedActions.Add({ "OculusTouchDerivedLeftTriggerTouch", XrActionType::XR_ACTION_TYPE_BOOLEAN_INPUT, EKeys::OculusTouch_Left_Trigger_Touch, "/user/hand/left/input/trigger/touch", XR_NULL_HANDLE, FDerivedActionProfile::All }); - DerivedActions.Add({ "OculusTouchDerivedRightTriggerClick", XrActionType::XR_ACTION_TYPE_BOOLEAN_INPUT, EKeys::OculusTouch_Right_Trigger_Click, "/user/hand/right/input/trigger", XR_NULL_HANDLE, FDerivedActionProfile::All }); - DerivedActions.Add({ "OculusTouchDerivedRightTriggerAxis", XrActionType::XR_ACTION_TYPE_FLOAT_INPUT, EKeys::OculusTouch_Right_Trigger_Axis, "/user/hand/right/input/trigger/value", XR_NULL_HANDLE, FDerivedActionProfile::All }); - DerivedActions.Add({ "OculusTouchDerivedRightTriggerTouch", XrActionType::XR_ACTION_TYPE_BOOLEAN_INPUT, EKeys::OculusTouch_Right_Trigger_Touch, "/user/hand/right/input/trigger/touch", XR_NULL_HANDLE, FDerivedActionProfile::All }); - DerivedActions.Add({ "OculusTouchDerivedLeftTrigger", XrActionType::XR_ACTION_TYPE_FLOAT_INPUT, FOculusKey::OculusTouch_Left_Trigger, "/user/hand/left/input/trigger/touch", XR_NULL_HANDLE, FDerivedActionProfile::All }); - DerivedActions.Add({ "OculusTouchDerivedRightTrigger", XrActionType::XR_ACTION_TYPE_FLOAT_INPUT, FOculusKey::OculusTouch_Right_Trigger, "/user/hand/right/input/trigger/touch", XR_NULL_HANDLE, FDerivedActionProfile::All }); - - DerivedActions.Add({ "OculusTouchPlusDerivedLeftTriggerForce", XrActionType::XR_ACTION_TYPE_FLOAT_INPUT, FOculusKey::OculusTouch_Left_IndexTrigger_Force, "/user/hand/left/input/trigger/force", XR_NULL_HANDLE, FDerivedActionProfile::OculusTouchPlus }); - DerivedActions.Add({ "OculusTouchPlusDerivedRightTriggerForce", XrActionType::XR_ACTION_TYPE_FLOAT_INPUT, FOculusKey::OculusTouch_Right_IndexTrigger_Force, "/user/hand/right/input/trigger/force", XR_NULL_HANDLE, FDerivedActionProfile::OculusTouchPlus }); - - DerivedActions.Add({ "OculusTouchProDerivedLeftTriggerCurl", XrActionType::XR_ACTION_TYPE_FLOAT_INPUT, FOculusKey::OculusTouch_Left_IndexTrigger_Curl, "/user/hand/left/input/trigger/curl_fb", XR_NULL_HANDLE, FDerivedActionProfile::OculusTouchPro }); - DerivedActions.Add({ "OculusTouchPlusDerivedLeftTriggerCurl", XrActionType::XR_ACTION_TYPE_FLOAT_INPUT, FOculusKey::OculusTouch_Left_IndexTrigger_Curl, "/user/hand/left/input/trigger/curl_meta", XR_NULL_HANDLE, FDerivedActionProfile::OculusTouchPlus }); - DerivedActions.Add({ "OculusTouchProDerivedLeftTriggerSlide", XrActionType::XR_ACTION_TYPE_FLOAT_INPUT, FOculusKey::OculusTouch_Left_IndexTrigger_Slide, "/user/hand/left/input/trigger/slide_fb", XR_NULL_HANDLE, FDerivedActionProfile::OculusTouchPro }); - DerivedActions.Add({ "OculusTouchPlusDerivedLeftTriggerSlide", XrActionType::XR_ACTION_TYPE_FLOAT_INPUT, FOculusKey::OculusTouch_Left_IndexTrigger_Slide, "/user/hand/left/input/trigger/slide_meta", XR_NULL_HANDLE, FDerivedActionProfile::OculusTouchPlus }); - DerivedActions.Add({ "OculusTouchProDerivedRightTriggerCurl", XrActionType::XR_ACTION_TYPE_FLOAT_INPUT, FOculusKey::OculusTouch_Right_IndexTrigger_Curl, "/user/hand/right/input/trigger/curl_fb", XR_NULL_HANDLE, FDerivedActionProfile::OculusTouchPro }); - DerivedActions.Add({ "OculusTouchPlusDerivedRightTriggerCurl", XrActionType::XR_ACTION_TYPE_FLOAT_INPUT, FOculusKey::OculusTouch_Right_IndexTrigger_Curl, "/user/hand/right/input/trigger/curl_meta", XR_NULL_HANDLE, FDerivedActionProfile::OculusTouchPlus }); - DerivedActions.Add({ "OculusTouchProDerivedRightTriggerSlide", XrActionType::XR_ACTION_TYPE_FLOAT_INPUT, FOculusKey::OculusTouch_Right_IndexTrigger_Slide, "/user/hand/right/input/trigger/slide_fb", XR_NULL_HANDLE, FDerivedActionProfile::OculusTouchPro }); - DerivedActions.Add({ "OculusTouchPlusDerivedRightTriggerSlide", XrActionType::XR_ACTION_TYPE_FLOAT_INPUT, FOculusKey::OculusTouch_Right_IndexTrigger_Slide, "/user/hand/right/input/trigger/slide_meta", XR_NULL_HANDLE, FDerivedActionProfile::OculusTouchPlus }); - } -#endif - -} // namespace OculusXRInput diff --git a/Plugins/MetaXR/Source/OculusXRInput/Private/OculusXRInputExtensionPlugin.h b/Plugins/MetaXR/Source/OculusXRInput/Private/OculusXRInputExtensionPlugin.h deleted file mode 100644 index 9b549e7..0000000 --- a/Plugins/MetaXR/Source/OculusXRInput/Private/OculusXRInputExtensionPlugin.h +++ /dev/null @@ -1,111 +0,0 @@ -// Copyright (c) Meta Platforms, Inc. and affiliates. - -#pragma once - -#include "khronos/openxr/openxr.h" - -#include "CoreMinimal.h" -#include "IOculusXRInputModule.h" -#include "IOpenXRExtensionPlugin.h" -#include "OculusXRInput.h" -#include "Misc/EngineVersionComparison.h" - -namespace OculusXRInput -{ - enum FDerivedActionProfile - { - All, - OculusTouch, - OculusTouchPro, - OculusTouchPlus - }; - - struct FDerivedActionProperties - { - FString Name; - XrActionType Type; - FKey InputKey; - FString OpenXRPath; - XrAction Action; - FDerivedActionProfile Profile; - }; - - struct FDerivedInputState - { - bool ValueBool; - float ValueFloat; - bool ChangedSinceLastSync; - double NextRepeatTime; - - FDerivedInputState() - : ValueBool(false), ValueFloat(0.f), ChangedSinceLastSync(false), NextRepeatTime(0.0) - { - } - }; - - class FInputExtensionPlugin : public IOpenXRExtensionPlugin, public IInputDevice - { - public: - FInputExtensionPlugin() - : InitialButtonRepeatDelay(DefaultInitialButtonRepeatDelay), ButtonRepeatDelay(DefaultButtonRepeatDelay), MessageHandler(nullptr), bExtTouchControllerProximityAvailable(false), Instance(XR_NULL_HANDLE), DerivedActions({}), DerivedKeysToState({}), DerivedActionSet(XR_NULL_HANDLE) - { - } - - void RegisterOpenXRExtensionPlugin() - { -#if !UE_VERSION_OLDER_THAN(5, 5, 0) - RegisterOpenXRExtensionModularFeature(); -#endif - } - - // IInputDevice - virtual void SetMessageHandler(const TSharedRef& InMessageHandler) override; - void Tick(float DeltaTime) override {}; - void SendControllerEvents() override {}; - virtual bool Exec(UWorld* InWorld, const TCHAR* Cmd, FOutputDevice& Ar) override; - void SetChannelValue(int32 ControllerId, FForceFeedbackChannelType ChannelType, float Value) override {}; - void SetChannelValues(int32 ControllerId, const FForceFeedbackValues& Values) override {}; - - private: - const FString OculusTouchProfile = TEXT("OculusTouch"); - const FString OculusTouchProProfile = TEXT("OculusTouchPro"); - const FString OculusTouchPlusProfile = TEXT("OculusTouchPlus"); - const FString OculusTouchProfilePath = TEXT("/interaction_profiles/oculus/touch_controller"); - const FString OculusTouchProProfilePath = TEXT("/interaction_profiles/facebook/touch_controller_pro"); - const FString OculusTouchPlusProfilePath = TEXT("/interaction_profiles/meta/touch_controller_plus"); - const TSet KeysToInvert = { FOculusKey::OculusTouch_Left_IndexPointing, FOculusKey::OculusTouch_Right_IndexPointing, FOculusKey::OculusTouch_Left_ThumbUp, FOculusKey::OculusTouch_Right_ThumbUp }; - - float InitialButtonRepeatDelay; - float ButtonRepeatDelay; - - TSharedPtr MessageHandler; - bool bExtTouchControllerProximityAvailable; - XrInstance Instance; - - TArray DerivedActions; - TMap DerivedKeysToState; - XrActionSet DerivedActionSet; - -#if !UE_VERSION_OLDER_THAN(5, 5, 0) - public: - // IOpenXRExtensionPlugin - virtual bool GetOptionalExtensions(TArray& OutExtensions) override; - virtual const void* OnCreateInstance(class IOpenXRHMDModule* InModule, const void* InNext) override; - virtual void OnEvent(XrSession InSession, const XrEventDataBaseHeader* InHeader) override; - virtual bool GetInputKeyOverrides(TArray& OutOverrides) override; - virtual void PostCreateInstance(XrInstance InInstance) override; - virtual bool GetSuggestedBindings(XrPath InInteractionProfile, TArray& OutBindings) override; - virtual void PostSyncActions(XrSession InSession) override; - virtual void AttachActionSets(TSet& OutActionSets) override; - virtual void GetActiveActionSetsForSync(TArray& OutActiveSets); - - private: - virtual void CreateForAllProfiles(TArray& OutOverrides, FKey InKey, FString Path); - virtual void CreateDerivedActions(); - virtual void InitializeDerivedActionsArray(); - virtual void SendControllerButtonPressed(FKey InKey, bool bIsPressed, FPlatformUserId UserId, FInputDeviceId DeviceId, bool bIsRepeat); - virtual void SendDerivedDpadButtonPressed(FKey InKey, bool bIsPressed, FPlatformUserId UserId, FInputDeviceId DeviceId, double CurrentTime); - virtual void DestroyDerivedActions(); -#endif - }; -} // namespace OculusXRInput diff --git a/Plugins/MetaXR/Source/OculusXRInput/Private/OculusXRInputFunctionLibrary.cpp b/Plugins/MetaXR/Source/OculusXRInput/Private/OculusXRInputFunctionLibrary.cpp deleted file mode 100644 index cee4547..0000000 --- a/Plugins/MetaXR/Source/OculusXRInput/Private/OculusXRInputFunctionLibrary.cpp +++ /dev/null @@ -1,186 +0,0 @@ -// @lint-ignore-every LICENSELINT -// Copyright Epic Games, Inc. All Rights Reserved. - -#include "OculusXRInputFunctionLibrary.h" -#include "OculusXRControllerLegacyPoseTransformComponent.h" -#include "OculusXRHandTracking.h" -#include "OculusXRControllerTracking.h" -#include "Logging/MessageLog.h" -#include "Haptics/HapticFeedbackEffect_Buffer.h" -#include "Haptics/HapticFeedbackEffect_Curve.h" -#include "Haptics/HapticFeedbackEffect_SoundWave.h" - -//------------------------------------------------------------------------------------------------- -// UOculusHandTrackingFunctionLibrary -//------------------------------------------------------------------------------------------------- -UOculusXRInputFunctionLibrary::UOculusXRInputFunctionLibrary(const FObjectInitializer& ObjectInitializer) - : Super(ObjectInitializer) -{ -} - -UOculusXRInputFunctionLibrary::FHandMovementFilterDelegate UOculusXRInputFunctionLibrary::HandMovementFilter; - -EOculusXRFinger UOculusXRInputFunctionLibrary::ConvertBoneToFinger(const EOculusXRBone Bone) -{ - switch (Bone) - { - case EOculusXRBone::Index_1: - case EOculusXRBone::Index_2: - case EOculusXRBone::Index_3: - case EOculusXRBone::Index_Tip: - return EOculusXRFinger::Index; - case EOculusXRBone::Middle_1: - case EOculusXRBone::Middle_2: - case EOculusXRBone::Middle_3: - case EOculusXRBone::Middle_Tip: - return EOculusXRFinger::Middle; - case EOculusXRBone::Pinky_0: - case EOculusXRBone::Pinky_1: - case EOculusXRBone::Pinky_2: - case EOculusXRBone::Pinky_3: - case EOculusXRBone::Pinky_Tip: - return EOculusXRFinger::Pinky; - case EOculusXRBone::Ring_1: - case EOculusXRBone::Ring_2: - case EOculusXRBone::Ring_3: - case EOculusXRBone::Ring_Tip: - return EOculusXRFinger::Ring; - case EOculusXRBone::Thumb_0: - case EOculusXRBone::Thumb_1: - case EOculusXRBone::Thumb_2: - case EOculusXRBone::Thumb_3: - case EOculusXRBone::Thumb_Tip: - return EOculusXRFinger::Thumb; - default: - return EOculusXRFinger::Invalid; - } -} - -EOculusXRTrackingConfidence UOculusXRInputFunctionLibrary::GetFingerTrackingConfidence(const EOculusXRHandType DeviceHand, const EOculusXRFinger Finger, const int32 ControllerIndex) -{ - return OculusXRInput::FOculusHandTracking::GetFingerTrackingConfidence(ControllerIndex, DeviceHand, (OculusXRInput::EOculusHandAxes)(uint8)Finger); -} - -bool UOculusXRInputFunctionLibrary::GetHandSkeletalMesh(USkeletalMesh* HandSkeletalMesh, EOculusXRHandType SkeletonType, EOculusXRHandType MeshType, float WorldToMeters) -{ - return OculusXRInput::FOculusHandTracking::GetHandSkeletalMesh(HandSkeletalMesh, SkeletonType, MeshType, WorldToMeters); -} - -TArray UOculusXRInputFunctionLibrary::InitializeHandPhysics(EOculusXRHandType SkeletonType, USkinnedMeshComponent* HandComponent, const float WorldToMeters) -{ - return OculusXRInput::FOculusHandTracking::InitializeHandPhysics(SkeletonType, HandComponent, WorldToMeters); -} - -FQuat UOculusXRInputFunctionLibrary::GetBoneRotation(const EOculusXRHandType DeviceHand, const EOculusXRBone BoneId, const int32 ControllerIndex) -{ - return OculusXRInput::FOculusHandTracking::GetBoneRotation(ControllerIndex, DeviceHand, BoneId); -} - -EOculusXRTrackingConfidence UOculusXRInputFunctionLibrary::GetTrackingConfidence(const EOculusXRHandType DeviceHand, const int32 ControllerIndex) -{ - return OculusXRInput::FOculusHandTracking::GetTrackingConfidence(ControllerIndex, DeviceHand); -} - -FTransform UOculusXRInputFunctionLibrary::GetPointerPose(const EOculusXRHandType DeviceHand, const int32 ControllerIndex) -{ - return OculusXRInput::FOculusHandTracking::GetPointerPose(ControllerIndex, DeviceHand); -} - -bool UOculusXRInputFunctionLibrary::IsPointerPoseValid(const EOculusXRHandType DeviceHand, const int32 ControllerIndex) -{ - return OculusXRInput::FOculusHandTracking::IsPointerPoseValid(ControllerIndex, DeviceHand); -} - -float UOculusXRInputFunctionLibrary::GetHandScale(const EOculusXRHandType DeviceHand, const int32 ControllerIndex) -{ - return OculusXRInput::FOculusHandTracking::GetHandScale(ControllerIndex, DeviceHand); -} - -EOculusXRHandType UOculusXRInputFunctionLibrary::GetDominantHand(const int32 ControllerIndex) -{ - EOculusXRHandType DominantHand = EOculusXRHandType::None; - if (OculusXRInput::FOculusHandTracking::IsHandDominant(ControllerIndex, EOculusXRHandType::HandLeft)) - { - DominantHand = EOculusXRHandType::HandLeft; - } - else if (OculusXRInput::FOculusHandTracking::IsHandDominant(ControllerIndex, EOculusXRHandType::HandRight)) - { - DominantHand = EOculusXRHandType::HandRight; - } - return DominantHand; -} - -bool UOculusXRInputFunctionLibrary::IsHandTrackingEnabled() -{ - return OculusXRInput::FOculusHandTracking::IsHandTrackingEnabled(); -} - -bool UOculusXRInputFunctionLibrary::IsHandPositionValid(const EOculusXRHandType DeviceHand, const int32 ControllerIndex) -{ - return OculusXRInput::FOculusHandTracking::IsHandPositionValid(ControllerIndex, DeviceHand); -} - -FString UOculusXRInputFunctionLibrary::GetBoneName(EOculusXRBone BoneId) -{ - const auto ovrBoneId = OculusXRInput::FOculusHandTracking::ToOvrBone(BoneId); - if (ovrBoneId == ovrpBoneId_Invalid) - { - return OculusXRInput::FOculusHandTracking::GetBoneName(static_cast(EOculusXRBone::Invalid)); - } - return OculusXRInput::FOculusHandTracking::GetBoneName(static_cast(ovrBoneId)); -} - -void UOculusXRInputFunctionLibrary::PlayCurveHapticEffect(class UHapticFeedbackEffect_Curve* HapticEffect, EControllerHand Hand, EOculusXRHandHapticsLocation Location, float Scale, bool bLoop) -{ - OculusXRInput::FOculusXRControllerTracking::PlayHapticEffect(HapticEffect, Hand, Location, false, Scale, bLoop); -} - -void UOculusXRInputFunctionLibrary::PlayBufferHapticEffect(class UHapticFeedbackEffect_Buffer* HapticEffect, EControllerHand Hand, EOculusXRHandHapticsLocation Location, float Scale, bool bLoop) -{ - OculusXRInput::FOculusXRControllerTracking::PlayHapticEffect(HapticEffect, Hand, Location, false, Scale, bLoop); -} - -void UOculusXRInputFunctionLibrary::PlayAmplitudeEnvelopeHapticEffect(class UHapticFeedbackEffect_Buffer* HapticEffect, EControllerHand Hand) -{ - OculusXRInput::FOculusXRControllerTracking::PlayAmplitudeEnvelopeHapticEffect(Hand, HapticEffect->Amplitudes, HapticEffect->SampleRate); -} - -void UOculusXRInputFunctionLibrary::PlaySoundWaveHapticEffect(class UHapticFeedbackEffect_SoundWave* HapticEffect, EControllerHand Hand, bool bAppend, float Scale, bool bLoop) -{ - OculusXRInput::FOculusXRControllerTracking::PlayHapticEffect(HapticEffect, Hand, EOculusXRHandHapticsLocation::Hand, bAppend, Scale, bLoop); -} - -void UOculusXRInputFunctionLibrary::StopHapticEffect(EControllerHand Hand, EOculusXRHandHapticsLocation Location) -{ - OculusXRInput::FOculusXRControllerTracking::StopHapticEffect(Hand, Location); -} - -void UOculusXRInputFunctionLibrary::SetHapticsByValue(const float Frequency, const float Amplitude, EControllerHand Hand, EOculusXRHandHapticsLocation Location) -{ - OculusXRInput::FOculusXRControllerTracking::SetHapticsByValue(Frequency, Amplitude, Hand, Location); -} - -float UOculusXRInputFunctionLibrary::GetControllerSampleRateHz(EControllerHand Hand) -{ - return OculusXRInput::FOculusXRControllerTracking::GetControllerSampleRateHz(Hand); -} - -int UOculusXRInputFunctionLibrary::GetMaxHapticDuration(EControllerHand Hand) -{ - return OculusXRInput::FOculusXRControllerTracking::GetMaxHapticDuration(Hand); -} - -void UOculusXRInputFunctionLibrary::SetControllerDrivenHandPoses(EOculusXRControllerDrivenHandPoseTypes Type) -{ - return OculusXRInput::FOculusHandTracking::SetControllerDrivenHandPoses(Type); -} - -EOculusXRControllerDrivenHandPoseTypes UOculusXRInputFunctionLibrary::GetControllerDrivenHandPoses() -{ - return OculusXRInput::FOculusHandTracking::ControllerDrivenHandType; -} - -FTransform UOculusXRInputFunctionLibrary::GetLegacyOculusPoseTransform(float WorldToMeters) -{ - return FTransform(OculusPoseToGripRotation, OculusPoseToGripPosition * WorldToMeters).Inverse(); -} diff --git a/Plugins/MetaXR/Source/OculusXRInput/Private/OculusXRInputHandTrackingExtensionPlugin.cpp b/Plugins/MetaXR/Source/OculusXRInput/Private/OculusXRInputHandTrackingExtensionPlugin.cpp deleted file mode 100644 index 226b0ea..0000000 --- a/Plugins/MetaXR/Source/OculusXRInput/Private/OculusXRInputHandTrackingExtensionPlugin.cpp +++ /dev/null @@ -1,1094 +0,0 @@ -// Copyright (c) Meta Platforms, Inc. and affiliates. - -#include "OculusXRInputHandTrackingExtensionPlugin.h" -#include "OculusXRHMDRuntimeSettings.h" -#include "IOpenXRHMDModule.h" -#include "OpenXRCore.h" -#include "xr_linear.h" - -namespace OculusXRInput -{ - namespace - { - static FORCEINLINE XrPosef XrPosef_Identity() - { - XrPosef result; - XrPosef_CreateIdentity(&result); - return result; - } - - static FORCEINLINE XrQuaternionf XrQuaternionf_Inverse(const XrQuaternionf q) - { - XrQuaternionf r; - XrQuaternionf_Invert(&r, &q); - return r; - } - - static FORCEINLINE XrQuaternionf XrQuaternionf_Multiply(const XrQuaternionf a, const XrQuaternionf b) - { - XrQuaternionf result; - XrQuaternionf_Multiply(&result, &b, &a); - return result; - } - - static FORCEINLINE XrQuaternionf XrFromToRotation(const XrVector3f from, const XrVector3f to) - { - XrQuaternionf result = XrQuaternionf{}; - - const float cx = from.y * to.z - from.z * to.y; - const float cy = from.z * to.x - from.x * to.z; - const float cz = from.x * to.y - from.y * to.x; - const float dot = from.x * to.x + from.y * to.y + from.z * to.z; - const float crossLengthSq = cx * cx + cy * cy + cz * cz; - const float magnitude = static_cast(sqrt(crossLengthSq + dot * dot)); - const float cw = dot + magnitude; - if (cw < SMALLEST_NON_DENORMAL) - { - const float sx = to.y * to.y + to.z * to.z; - const float sz = to.x * to.x + to.y * to.y; - if (sx > sz) - { - const float rcpLength = XrRcpSqrt(sx); - result.x = float(0); - result.y = to.z * rcpLength; - result.z = -to.y * rcpLength; - result.w = float(0); - } - else - { - const float rcpLength = XrRcpSqrt(sz); - result.x = to.y * rcpLength; - result.y = -to.x * rcpLength; - result.z = float(0); - result.w = float(0); - } - return result; - } - const float rcpLength = XrRcpSqrt(crossLengthSq + cw * cw); - result.x = cx * rcpLength; - result.y = cy * rcpLength; - result.z = cz * rcpLength; - result.w = cw * rcpLength; - - return result; - } - } // namespace - - void FHandTrackingExtensionPlugin::SetMessageHandler(const TSharedRef& InMessageHandler) - { - MessageHandler = InMessageHandler; - } - - bool FHandTrackingExtensionPlugin::Exec(UWorld* InWorld, const TCHAR* Cmd, FOutputDevice& Ar) - { - return false; - } - - void FHandTrackingExtensionPlugin::SendControllerButtonPressed(FName Key, bool IsPressed, FPlatformUserId UserId, FInputDeviceId DeviceId) - { - if (IsPressed) - { - MessageHandler->OnControllerButtonPressed(Key, UserId, DeviceId, false); - } - else - { - MessageHandler->OnControllerButtonReleased(Key, UserId, DeviceId, false); - } - } - - bool FHandTrackingExtensionPlugin::GetRequiredExtensions(TArray& OutExtensions) - { - OutExtensions.Add(XR_EXT_HAND_TRACKING_EXTENSION_NAME); - return true; - } - - bool FHandTrackingExtensionPlugin::GetOptionalExtensions(TArray& OutExtensions) - { - OutExtensions.Add(XR_FB_HAND_TRACKING_MESH_EXTENSION_NAME); - OutExtensions.Add(XR_FB_HAND_TRACKING_CAPSULES_EXTENSION_NAME); - OutExtensions.Add(XR_FB_HAND_TRACKING_AIM_EXTENSION_NAME); - return true; - } - - const void* FHandTrackingExtensionPlugin::OnCreateInstance(class IOpenXRHMDModule* InModule, const void* InNext) - { - bExtHandTrackingMeshAvailable = InModule->IsExtensionEnabled(XR_FB_HAND_TRACKING_MESH_EXTENSION_NAME); - - return InNext; - } - - const void* FHandTrackingExtensionPlugin::OnGetSystem(XrInstance InInstance, const void* InNext) - { - // Store extension open xr calls to member function pointers for convenient use. - XR_ENSURE(xrGetInstanceProcAddr(InInstance, "xrGetHandMeshFB", (PFN_xrVoidFunction*)&xrGetHandMeshFB)); - XR_ENSURE(xrGetInstanceProcAddr(InInstance, "xrLocateHandJointsEXT", (PFN_xrVoidFunction*)&xrLocateHandJointsEXT)); - XR_ENSURE(xrGetInstanceProcAddr(InInstance, "xrCreateHandTrackerEXT", (PFN_xrVoidFunction*)&xrCreateHandTrackerEXT)); - XR_ENSURE(xrGetInstanceProcAddr(InInstance, "xrDestroyHandTrackerEXT", (PFN_xrVoidFunction*)&xrDestroyHandTrackerEXT)); - - return InNext; - } - - void FHandTrackingExtensionPlugin::PostCreateInstance(XrInstance InInstance) - { - Instance = InInstance; - } - - const void* FHandTrackingExtensionPlugin::OnCreateSession(XrInstance InInstance, XrSystemId InSystem, const void* InNext) - { - XrSystemHandTrackingPropertiesEXT HandTrackingSystemProperties{ XR_TYPE_SYSTEM_HAND_TRACKING_PROPERTIES_EXT }; - XrSystemProperties systemProperties{ XR_TYPE_SYSTEM_PROPERTIES, &HandTrackingSystemProperties }; - XR_ENSURE(xrGetSystemProperties(InInstance, InSystem, &systemProperties)); - bHandTrackingAvailable = HandTrackingSystemProperties.supportsHandTracking == XR_TRUE; - - return InNext; - } - - const void* FHandTrackingExtensionPlugin::OnBeginSession(XrSession InSession, const void* InNext) - { - if (!bHandTrackingAvailable) - { - return InNext; - } - - XrHandTrackerEXT LeftHandTracker{}; - { - XrHandTrackerCreateInfoEXT CreateInfo{ XR_TYPE_HAND_TRACKER_CREATE_INFO_EXT }; - CreateInfo.hand = XR_HAND_LEFT_EXT; - CreateInfo.handJointSet = XR_HAND_JOINT_SET_DEFAULT_EXT; - XR_ENSURE(xrCreateHandTrackerEXT(InSession, &CreateInfo, &LeftHandTracker)); - } - XrHandTrackerEXT RightHandTracker{}; - { - XrHandTrackerCreateInfoEXT CreateInfo{ XR_TYPE_HAND_TRACKER_CREATE_INFO_EXT }; - CreateInfo.hand = XR_HAND_RIGHT_EXT; - CreateInfo.handJointSet = XR_HAND_JOINT_SET_DEFAULT_EXT; - XR_ENSURE(xrCreateHandTrackerEXT(InSession, &CreateInfo, &RightHandTracker)); - } - OculusHandTrackers.Add(EOculusXRHandType::HandLeft, LeftHandTracker); - OculusHandTrackers.Add(EOculusXRHandType::HandRight, RightHandTracker); - bIsInitialized = true; - return InNext; - } - - void FHandTrackingExtensionPlugin::OnDestroySession(XrSession InSession) - { - for (TPair Pair : OculusHandTrackers) - { - XR_ENSURE(xrDestroyHandTrackerEXT(Pair.Value)); - } - OculusHandTrackers.Reset(); - bIsInitialized = false; - } - - bool FHandTrackingExtensionPlugin::IsHandTrackingAvailable() - { - return bHandTrackingAvailable && bIsInitialized; - } - - bool FHandTrackingExtensionPlugin::IsHandTrackingActive() - { - return IsHandTrackingAvailable() && bHandTrackingActive; - } - - void FHandTrackingExtensionPlugin::UpdateDeviceLocations(XrSession InSession, XrTime DisplayTime, XrSpace TrackingSpace) - { - if (!IsHandTrackingAvailable()) - { - return; - } - - InternalHandsState.PredictedDisplayTime = DisplayTime; - bool bHandTrackingActiveCurrentTick = false; - - for (int HandIndex = 0; HandIndex < MaxHandCount; HandIndex++) - { - const bool bIsLeft = (HandIndex == 0); - XrHandTrackingScaleFB HandScale = { XR_TYPE_HAND_TRACKING_SCALE_FB }; - - XrHandTrackingAimStateFB AimState = { XR_TYPE_HAND_TRACKING_AIM_STATE_FB }; - AimState.next = &HandScale; - - XrHandJointVelocitiesEXT HandJointVelocities = { XR_TYPE_HAND_JOINT_VELOCITIES_EXT }; - HandJointVelocities.next = &AimState; - HandJointVelocities.jointCount = XR_HAND_JOINT_COUNT_EXT; - HandJointVelocities.jointVelocities = bIsLeft ? XrLeftHandJointVelocities : XrRightHandJointVelocities; - - XrHandJointLocationsEXT HandJointLocations = { XR_TYPE_HAND_JOINT_LOCATIONS_EXT }; - HandJointLocations.next = &HandJointVelocities; - HandJointLocations.jointCount = XR_HAND_JOINT_COUNT_EXT; - HandJointLocations.jointLocations = bIsLeft ? XrLeftHandJointLocations : XrRightHandJointLocations; - - XrHandJointsLocateInfoEXT HandLocateInfo = { XR_TYPE_HAND_JOINTS_LOCATE_INFO_EXT }; - HandLocateInfo.baseSpace = TrackingSpace; - HandLocateInfo.time = InternalHandsState.PredictedDisplayTime; - - XrHandTrackingDataSourceStateEXT DataSourceState{ XR_TYPE_HAND_TRACKING_DATA_SOURCE_STATE_EXT }; - XrHandJointsMotionRangeInfoEXT MotionRangeInfo{ XR_TYPE_HAND_JOINTS_MOTION_RANGE_INFO_EXT }; - - XrHandTrackerEXT& HandTracker = bIsLeft ? OculusHandTrackers[EOculusXRHandType::HandLeft] : OculusHandTrackers[EOculusXRHandType::HandRight]; - XR_ENSURE(xrLocateHandJointsEXT(HandTracker, &HandLocateInfo, &HandJointLocations)); - - const bool bHandTrackingActivePerHand = (HandJointLocations.isActive != XR_FALSE); - if (bHandTrackingActivePerHand) - { - InternalHandsState.HandState[HandIndex].PosesGeneratedByControllerData = false; - } - bHandTrackingActiveCurrentTick |= bHandTrackingActivePerHand; - - const XrSpaceLocationFlags IsValidMask = - XR_SPACE_LOCATION_POSITION_VALID_BIT | XR_SPACE_LOCATION_ORIENTATION_VALID_BIT; - const XrSpaceLocationFlags IsTrackedMask = - XR_SPACE_LOCATION_POSITION_TRACKED_BIT | XR_SPACE_LOCATION_ORIENTATION_TRACKED_BIT; - const XrSpaceLocationFlags IsValidAndTrackedMask = IsValidMask | IsTrackedMask; - - const bool HandIsValid = - (HandJointLocations.jointLocations[XR_HAND_JOINT_WRIST_EXT].locationFlags & IsValidMask) == IsValidMask; - const bool HandIsValidAndTracked = (HandJointLocations.jointLocations[XR_HAND_JOINT_WRIST_EXT].locationFlags & IsValidAndTrackedMask) == IsValidAndTrackedMask; - const bool ThumbIsValidAndTracked = (HandJointLocations.jointLocations[XR_HAND_JOINT_THUMB_TIP_EXT].locationFlags & IsValidAndTrackedMask) == IsValidAndTrackedMask; - const bool IndexIsValidAndTracked = (HandJointLocations.jointLocations[XR_HAND_JOINT_INDEX_TIP_EXT].locationFlags & IsValidAndTrackedMask) == IsValidAndTrackedMask; - const bool MiddleIsValidAndTracked = (HandJointLocations.jointLocations[XR_HAND_JOINT_MIDDLE_TIP_EXT].locationFlags & IsValidAndTrackedMask) == IsValidAndTrackedMask; - const bool RingIsValidAndTracked = (HandJointLocations.jointLocations[XR_HAND_JOINT_RING_TIP_EXT].locationFlags & IsValidAndTrackedMask) == IsValidAndTrackedMask; - const bool PinkyIsValidAndTracked = (HandJointLocations.jointLocations[XR_HAND_JOINT_LITTLE_TIP_EXT].locationFlags & IsValidAndTrackedMask) == IsValidAndTrackedMask; - - // seems like unreal only uses v1, so skipping v2 path - InternalHandsState.HandState[HandIndex].Status = 0; - - if (HandIsValid) - { - InternalHandsState.HandState[HandIndex].Status |= static_cast(EHandStatus::HandTracked); - } - if (AimState.status & XR_HAND_TRACKING_AIM_VALID_BIT_FB) - { - InternalHandsState.HandState[HandIndex].Status |= static_cast(EHandStatus::InputValid); - } - if (AimState.status & XR_HAND_TRACKING_AIM_SYSTEM_GESTURE_BIT_FB) - { - InternalHandsState.HandState[HandIndex].Status |= static_cast(EHandStatus::SystemGestureInProgress); - } - if (AimState.status & XR_HAND_TRACKING_AIM_DOMINANT_HAND_BIT_FB) - { - InternalHandsState.HandState[HandIndex].Status |= static_cast(EHandStatus::DominantHand); - } - if (AimState.status & XR_HAND_TRACKING_AIM_MENU_PRESSED_BIT_FB) - { - InternalHandsState.HandState[HandIndex].Status |= static_cast(EHandStatus::MenuPressed); - } - - InternalHandsState.HandState[HandIndex].HandConfidence = - HandIsValidAndTracked ? EOculusXRTrackingConfidence::High : EOculusXRTrackingConfidence::Low; - InternalHandsState.HandState[HandIndex].FingerConfidences[static_cast(EHandFinger::Thumb)] = - ThumbIsValidAndTracked ? EOculusXRTrackingConfidence::High : EOculusXRTrackingConfidence::Low; - InternalHandsState.HandState[HandIndex].FingerConfidences[static_cast(EHandFinger::Index)] = - IndexIsValidAndTracked ? EOculusXRTrackingConfidence::High : EOculusXRTrackingConfidence::Low; - InternalHandsState.HandState[HandIndex].FingerConfidences[static_cast(EHandFinger::Middle)] = - MiddleIsValidAndTracked ? EOculusXRTrackingConfidence::High : EOculusXRTrackingConfidence::Low; - InternalHandsState.HandState[HandIndex].FingerConfidences[static_cast(EHandFinger::Ring)] = - RingIsValidAndTracked ? EOculusXRTrackingConfidence::High : EOculusXRTrackingConfidence::Low; - InternalHandsState.HandState[HandIndex].FingerConfidences[static_cast(EHandFinger::Pinky)] = - PinkyIsValidAndTracked ? EOculusXRTrackingConfidence::High : EOculusXRTrackingConfidence::Low; - - const FQuat4f RotTip = bIsLeft ? FQuat4f({ 1.0f, 0.0f, 0.0f }, FMath::DegreesToRadians(180.0f)) * FQuat4f({ 0.0f, 1.0f, 0.0f }, FMath::DegreesToRadians(-90.0f)) - : FQuat4f({ 0.0f, 1.0f, 0.0f }, FMath::DegreesToRadians(90.0f)); - - const FQuat4f RotThumb = bIsLeft ? RotTip * FQuat4f({ 0.0f, 0.0f, 1.0f }, FMath::DegreesToRadians(90.0f)) - : RotTip * FQuat4f({ 0.0f, 0.0f, 1.0f }, FMath::DegreesToRadians(-90.0f)); - - const XrQuaternionf InvRotTip = XrQuaternionf_Inverse((XrQuaternionf&)RotTip); - XrQuaternionf InvRotThumb = XrQuaternionf_Inverse((XrQuaternionf&)RotThumb); - - if (XR_CURRENT_API_VERSION >= XR_MAKE_VERSION(1, 0, 23)) - { - InvRotThumb = InvRotTip; - } - - // back out last mile OpenXR spec pose adjustment and convert all bones from app space to wrist bone space - XrQuaternionf RotWrist = HandJointLocations.jointLocations[XR_HAND_JOINT_WRIST_EXT].pose.orientation; - RotWrist = XrQuaternionf_Multiply(RotWrist, InvRotTip); - - // vrapi wrist bone was always equal to the identity rot, so any remaining rotation present is the xr space - // transform - XrQuaternionf InvRotSpace = XrQuaternionf_Inverse(RotWrist); - RotWrist = XrQuaternionf_Multiply(InvRotSpace, RotWrist); - - // thumb0 doesn't exist in OpenXR, so we have to do some work to deduce its rotation - XrPosef WristPose = HandJointLocations.jointLocations[XR_HAND_JOINT_WRIST_EXT].pose; - WristPose.orientation = XrQuaternionf_Multiply(WristPose.orientation, InvRotTip); - - // parent-space bind poses for thumb0/1 - XrPosef Thumb0BindPoseParentSpace = bIsLeft ? XrLeftHandLegacyBindPoseThumb0 : XrRightHandLegacyBindPoseThumb0; - XrPosef Thumb1BindPoseParentSpace = bIsLeft ? XrLeftHandLegacyBindPoseThumb1 : XrRightHandLegacyBindPoseThumb1; - - // compute parent-space pose of thumb1 - XrPosef Thumb1PoseWorldSpace = HandJointLocations.jointLocations[XR_HAND_JOINT_THUMB_METACARPAL_EXT].pose; - XrPosef WristPoseInv; - XrPosef_Invert(&WristPoseInv, &WristPose); - XrPosef Thumb1PoseWristSpace{}; - XrPosef_Multiply(&Thumb1PoseWristSpace, &WristPoseInv, &Thumb1PoseWorldSpace); - XrPosef Thumb0BindPoseParentSpaceInv; - XrPosef_Invert(&Thumb0BindPoseParentSpaceInv, &Thumb0BindPoseParentSpace); - XrPosef Thumb1PoseParentSpace{}; - XrPosef_Multiply(&Thumb1PoseParentSpace, &Thumb0BindPoseParentSpaceInv, &Thumb1PoseWristSpace); - - // deduce thumb0 bind space rotation from the change in thumb1 parent-space position - XrQuaternionf Thumb0BindSpaceRot = - XrFromToRotation(Thumb1BindPoseParentSpace.position, Thumb1PoseParentSpace.position); - - // final parent-space rotation of thumb0 is its parent-space bind pose combined with its bind space rotation - XrQuaternionf RotThumb0 = XrQuaternionf_Multiply(Thumb0BindPoseParentSpace.orientation, Thumb0BindSpaceRot); - - XrQuaternionf RotThumb1 = HandJointLocations.jointLocations[XR_HAND_JOINT_THUMB_METACARPAL_EXT].pose.orientation; - RotThumb1 = XrQuaternionf_Multiply(InvRotSpace, RotThumb1); - RotThumb1 = XrQuaternionf_Multiply(RotThumb1, InvRotThumb); - - XrQuaternionf RotThumb2 = HandJointLocations.jointLocations[XR_HAND_JOINT_THUMB_PROXIMAL_EXT].pose.orientation; - RotThumb2 = XrQuaternionf_Multiply(InvRotSpace, RotThumb2); - RotThumb2 = XrQuaternionf_Multiply(RotThumb2, InvRotThumb); - - XrQuaternionf RotThumb3 = HandJointLocations.jointLocations[XR_HAND_JOINT_THUMB_DISTAL_EXT].pose.orientation; - RotThumb3 = XrQuaternionf_Multiply(InvRotSpace, RotThumb3); - RotThumb3 = XrQuaternionf_Multiply(RotThumb3, InvRotThumb); - - XrQuaternionf RotIndex1 = HandJointLocations.jointLocations[XR_HAND_JOINT_INDEX_PROXIMAL_EXT].pose.orientation; - RotIndex1 = XrQuaternionf_Multiply(InvRotSpace, RotIndex1); - RotIndex1 = XrQuaternionf_Multiply(RotIndex1, InvRotTip); - - XrQuaternionf RotIndex2 = - HandJointLocations.jointLocations[XR_HAND_JOINT_INDEX_INTERMEDIATE_EXT].pose.orientation; - RotIndex2 = XrQuaternionf_Multiply(InvRotSpace, RotIndex2); - RotIndex2 = XrQuaternionf_Multiply(RotIndex2, InvRotTip); - - XrQuaternionf RotIndex3 = HandJointLocations.jointLocations[XR_HAND_JOINT_INDEX_DISTAL_EXT].pose.orientation; - RotIndex3 = XrQuaternionf_Multiply(InvRotSpace, RotIndex3); - RotIndex3 = XrQuaternionf_Multiply(RotIndex3, InvRotTip); - - XrQuaternionf RotMiddle1 = HandJointLocations.jointLocations[XR_HAND_JOINT_MIDDLE_PROXIMAL_EXT].pose.orientation; - RotMiddle1 = XrQuaternionf_Multiply(InvRotSpace, RotMiddle1); - RotMiddle1 = XrQuaternionf_Multiply(RotMiddle1, InvRotTip); - - XrQuaternionf RotMiddle2 = - HandJointLocations.jointLocations[XR_HAND_JOINT_MIDDLE_INTERMEDIATE_EXT].pose.orientation; - RotMiddle2 = XrQuaternionf_Multiply(InvRotSpace, RotMiddle2); - RotMiddle2 = XrQuaternionf_Multiply(RotMiddle2, InvRotTip); - - XrQuaternionf RotMiddle3 = HandJointLocations.jointLocations[XR_HAND_JOINT_MIDDLE_DISTAL_EXT].pose.orientation; - RotMiddle3 = XrQuaternionf_Multiply(InvRotSpace, RotMiddle3); - RotMiddle3 = XrQuaternionf_Multiply(RotMiddle3, InvRotTip); - - XrQuaternionf RotRing1 = HandJointLocations.jointLocations[XR_HAND_JOINT_RING_PROXIMAL_EXT].pose.orientation; - RotRing1 = XrQuaternionf_Multiply(InvRotSpace, RotRing1); - RotRing1 = XrQuaternionf_Multiply(RotRing1, InvRotTip); - - XrQuaternionf RotRing2 = HandJointLocations.jointLocations[XR_HAND_JOINT_RING_INTERMEDIATE_EXT].pose.orientation; - RotRing2 = XrQuaternionf_Multiply(InvRotSpace, RotRing2); - RotRing2 = XrQuaternionf_Multiply(RotRing2, InvRotTip); - - XrQuaternionf RotRing3 = HandJointLocations.jointLocations[XR_HAND_JOINT_RING_DISTAL_EXT].pose.orientation; - RotRing3 = XrQuaternionf_Multiply(InvRotSpace, RotRing3); - RotRing3 = XrQuaternionf_Multiply(RotRing3, InvRotTip); - - XrQuaternionf RotPinky0 = HandJointLocations.jointLocations[XR_HAND_JOINT_LITTLE_METACARPAL_EXT].pose.orientation; - RotPinky0 = XrQuaternionf_Multiply(InvRotSpace, RotPinky0); - RotPinky0 = XrQuaternionf_Multiply(RotPinky0, InvRotTip); - - XrQuaternionf RotPinky1 = HandJointLocations.jointLocations[XR_HAND_JOINT_LITTLE_PROXIMAL_EXT].pose.orientation; - RotPinky1 = XrQuaternionf_Multiply(InvRotSpace, RotPinky1); - RotPinky1 = XrQuaternionf_Multiply(RotPinky1, InvRotTip); - - XrQuaternionf RotPinky2 = - HandJointLocations.jointLocations[XR_HAND_JOINT_LITTLE_INTERMEDIATE_EXT].pose.orientation; - RotPinky2 = XrQuaternionf_Multiply(InvRotSpace, RotPinky2); - RotPinky2 = XrQuaternionf_Multiply(RotPinky2, InvRotTip); - - XrQuaternionf RotPinky3 = HandJointLocations.jointLocations[XR_HAND_JOINT_LITTLE_DISTAL_EXT].pose.orientation; - RotPinky3 = XrQuaternionf_Multiply(InvRotSpace, RotPinky3); - RotPinky3 = XrQuaternionf_Multiply(RotPinky3, InvRotTip); - - XrQuaternionf RotThumbTip = HandJointLocations.jointLocations[XR_HAND_JOINT_THUMB_TIP_EXT].pose.orientation; - RotThumbTip = XrQuaternionf_Multiply(InvRotSpace, RotThumbTip); - RotThumbTip = XrQuaternionf_Multiply(RotThumbTip, InvRotThumb); - - XrQuaternionf RotIndexTip = HandJointLocations.jointLocations[XR_HAND_JOINT_INDEX_TIP_EXT].pose.orientation; - RotIndexTip = XrQuaternionf_Multiply(InvRotSpace, RotIndexTip); - RotIndexTip = XrQuaternionf_Multiply(RotIndexTip, InvRotTip); - - XrQuaternionf RotMiddleTip = HandJointLocations.jointLocations[XR_HAND_JOINT_MIDDLE_TIP_EXT].pose.orientation; - RotMiddleTip = XrQuaternionf_Multiply(InvRotSpace, RotMiddleTip); - RotMiddleTip = XrQuaternionf_Multiply(RotMiddleTip, InvRotTip); - - XrQuaternionf RotRingTip = HandJointLocations.jointLocations[XR_HAND_JOINT_RING_TIP_EXT].pose.orientation; - RotRingTip = XrQuaternionf_Multiply(InvRotSpace, RotRingTip); - RotRingTip = XrQuaternionf_Multiply(RotRingTip, InvRotTip); - - XrQuaternionf RotPinkyTip = HandJointLocations.jointLocations[XR_HAND_JOINT_LITTLE_TIP_EXT].pose.orientation; - RotPinkyTip = XrQuaternionf_Multiply(InvRotSpace, RotPinkyTip); - RotPinkyTip = XrQuaternionf_Multiply(RotPinkyTip, InvRotTip); - - // convert all bones from wrist bone space to parent/child hierarchical bone space to match vrapi behavior - InternalHandsState.HandState[HandIndex].BoneRotations[static_cast(EHandBoneId::WristRoot)] = RotWrist; - InternalHandsState.HandState[HandIndex].BoneRotations[static_cast(EHandBoneId::ForearmStub)] = XrQuaternionf{ 0, 0, 0, 1 }; - - // thumb - RotThumbTip = XrQuaternionf_Multiply(XrQuaternionf_Inverse(RotThumb3), RotThumbTip); - InternalHandsState.HandState[HandIndex].BoneRotations[static_cast(EHandBoneId::ThumbTip)] = RotThumbTip; - RotThumb3 = XrQuaternionf_Multiply(XrQuaternionf_Inverse(RotThumb2), RotThumb3); - InternalHandsState.HandState[HandIndex].BoneRotations[static_cast(EHandBoneId::Thumb3)] = RotThumb3; - RotThumb2 = XrQuaternionf_Multiply(XrQuaternionf_Inverse(RotThumb1), RotThumb2); - InternalHandsState.HandState[HandIndex].BoneRotations[static_cast(EHandBoneId::Thumb2)] = RotThumb2; - RotThumb1 = XrQuaternionf_Multiply(XrQuaternionf_Inverse(RotThumb0), RotThumb1); - InternalHandsState.HandState[HandIndex].BoneRotations[static_cast(EHandBoneId::Thumb1)] = RotThumb1; - RotThumb0 = XrQuaternionf_Multiply(XrQuaternionf_Inverse(RotWrist), RotThumb0); - InternalHandsState.HandState[HandIndex].BoneRotations[static_cast(EHandBoneId::Thumb0)] = RotThumb0; - - // index finger - RotIndexTip = XrQuaternionf_Multiply(XrQuaternionf_Inverse(RotIndex3), RotIndexTip); - InternalHandsState.HandState[HandIndex].BoneRotations[static_cast(EHandBoneId::IndexTip)] = RotIndexTip; - RotIndex3 = XrQuaternionf_Multiply(XrQuaternionf_Inverse(RotIndex2), RotIndex3); - InternalHandsState.HandState[HandIndex].BoneRotations[static_cast(EHandBoneId::Index3)] = RotIndex3; - RotIndex2 = XrQuaternionf_Multiply(XrQuaternionf_Inverse(RotIndex1), RotIndex2); - InternalHandsState.HandState[HandIndex].BoneRotations[static_cast(EHandBoneId::Index2)] = RotIndex2; - RotIndex1 = XrQuaternionf_Multiply(XrQuaternionf_Inverse(RotWrist), RotIndex1); - InternalHandsState.HandState[HandIndex].BoneRotations[static_cast(EHandBoneId::Index1)] = RotIndex1; - - // middle finger - RotMiddleTip = XrQuaternionf_Multiply(XrQuaternionf_Inverse(RotMiddle3), RotMiddleTip); - InternalHandsState.HandState[HandIndex].BoneRotations[static_cast(EHandBoneId::MiddleTip)] = RotMiddleTip; - RotMiddle3 = XrQuaternionf_Multiply(XrQuaternionf_Inverse(RotMiddle2), RotMiddle3); - InternalHandsState.HandState[HandIndex].BoneRotations[static_cast(EHandBoneId::Middle3)] = RotMiddle3; - RotMiddle2 = XrQuaternionf_Multiply(XrQuaternionf_Inverse(RotMiddle1), RotMiddle2); - InternalHandsState.HandState[HandIndex].BoneRotations[static_cast(EHandBoneId::Middle2)] = RotMiddle2; - RotMiddle1 = XrQuaternionf_Multiply(XrQuaternionf_Inverse(RotWrist), RotMiddle1); - InternalHandsState.HandState[HandIndex].BoneRotations[static_cast(EHandBoneId::Middle1)] = RotMiddle1; - - // ring finger - RotRingTip = XrQuaternionf_Multiply(XrQuaternionf_Inverse(RotRing3), RotRingTip); - InternalHandsState.HandState[HandIndex].BoneRotations[static_cast(EHandBoneId::RingTip)] = RotRingTip; - RotRing3 = XrQuaternionf_Multiply(XrQuaternionf_Inverse(RotRing2), RotRing3); - InternalHandsState.HandState[HandIndex].BoneRotations[static_cast(EHandBoneId::Ring3)] = RotRing3; - RotRing2 = XrQuaternionf_Multiply(XrQuaternionf_Inverse(RotRing1), RotRing2); - InternalHandsState.HandState[HandIndex].BoneRotations[static_cast(EHandBoneId::Ring2)] = RotRing2; - RotRing1 = XrQuaternionf_Multiply(XrQuaternionf_Inverse(RotWrist), RotRing1); - InternalHandsState.HandState[HandIndex].BoneRotations[static_cast(EHandBoneId::Ring1)] = RotRing1; - - // pinky finger - RotPinkyTip = XrQuaternionf_Multiply(XrQuaternionf_Inverse(RotPinky3), RotPinkyTip); - InternalHandsState.HandState[HandIndex].BoneRotations[static_cast(EHandBoneId::PinkyTip)] = RotPinkyTip; - RotPinky3 = XrQuaternionf_Multiply(XrQuaternionf_Inverse(RotPinky2), RotPinky3); - InternalHandsState.HandState[HandIndex].BoneRotations[static_cast(EHandBoneId::Pinky3)] = RotPinky3; - RotPinky2 = XrQuaternionf_Multiply(XrQuaternionf_Inverse(RotPinky1), RotPinky2); - InternalHandsState.HandState[HandIndex].BoneRotations[static_cast(EHandBoneId::Pinky2)] = RotPinky2; - RotPinky1 = XrQuaternionf_Multiply(XrQuaternionf_Inverse(RotPinky0), RotPinky1); - InternalHandsState.HandState[HandIndex].BoneRotations[static_cast(EHandBoneId::Pinky1)] = RotPinky1; - RotPinky0 = XrQuaternionf_Multiply(XrQuaternionf_Inverse(RotWrist), RotPinky0); - InternalHandsState.HandState[HandIndex].BoneRotations[static_cast(EHandBoneId::Pinky0)] = RotPinky0; - - // compute root pose by using the wrist bone pose with the last mile OpenXR pose adjustment backed out - XrPosef RootPose = HandJointLocations.jointLocations[XR_HAND_JOINT_WRIST_EXT].pose; - RootPose.orientation = XrQuaternionf_Multiply(RootPose.orientation, InvRotTip); - InternalHandsState.HandState[HandIndex].RootPose = RootPose; - - InternalHandsState.HandState[HandIndex].HandScale = - (HandScale.sensorOutput != 0.0f) ? HandScale.sensorOutput : 1.0f; - InternalHandsState.HandState[HandIndex].RequestedTimeStamp = InternalHandsState.PredictedDisplayTime; - InternalHandsState.HandState[HandIndex].SampleTimeStamp = InternalHandsState.PredictedDisplayTime; - InternalHandsState.HandState[HandIndex].PointerPose.orientation = AimState.aimPose.orientation; - InternalHandsState.HandState[HandIndex].PointerPose.position = AimState.aimPose.position; - InternalHandsState.HandState[HandIndex].Pinches = 0; - - if (AimState.status & XR_HAND_TRACKING_AIM_INDEX_PINCHING_BIT_FB) - { - InternalHandsState.HandState[HandIndex].Pinches |= static_cast(EHandFingerPinch::Index); - } - if (AimState.status & XR_HAND_TRACKING_AIM_MIDDLE_PINCHING_BIT_FB) - { - InternalHandsState.HandState[HandIndex].Pinches |= static_cast(EHandFingerPinch::Middle); - } - if (AimState.status & XR_HAND_TRACKING_AIM_RING_PINCHING_BIT_FB) - { - InternalHandsState.HandState[HandIndex].Pinches |= static_cast(EHandFingerPinch::Ring); - } - if (AimState.status & XR_HAND_TRACKING_AIM_LITTLE_PINCHING_BIT_FB) - { - InternalHandsState.HandState[HandIndex].Pinches |= static_cast(EHandFingerPinch::Pinky); - } - if (InternalHandsState.HandState[HandIndex].Pinches != 0) - { - InternalHandsState.HandState[HandIndex].Pinches |= static_cast(EHandFingerPinch::Thumb); - } - - InternalHandsState.HandState[HandIndex].PinchStrength[static_cast(EHandFinger::Index)] = AimState.pinchStrengthIndex; - InternalHandsState.HandState[HandIndex].PinchStrength[static_cast(EHandFinger::Middle)] = - AimState.pinchStrengthMiddle; - InternalHandsState.HandState[HandIndex].PinchStrength[static_cast(EHandFinger::Ring)] = AimState.pinchStrengthRing; - InternalHandsState.HandState[HandIndex].PinchStrength[static_cast(EHandFinger::Pinky)] = AimState.pinchStrengthLittle; - - // find max pinch strength - float MaxPinchStrength = 0.0f; - for (int i = static_cast(EHandFinger::Index); i < static_cast(EHandFinger::Count); i++) - { - if (InternalHandsState.HandState[HandIndex].PinchStrength[i] > MaxPinchStrength) - { - MaxPinchStrength = InternalHandsState.HandState[HandIndex].PinchStrength[i]; - } - } - - // set thumb to max pinch strength - InternalHandsState.HandState[HandIndex].PinchStrength[static_cast(EHandFinger::Thumb)] = MaxPinchStrength; - - // Update the public HandControllerState with the resulting values - EOculusXRHandType HandType = bIsLeft ? EOculusXRHandType::HandLeft : EOculusXRHandType::HandRight; - FOculusHandControllerState& ExternalState = HandControllerStates[HandType]; - FInternalHandState InternalHandState = InternalHandsState.HandState[HandIndex]; - ExternalState.bIsConnected = true; - - // Update various data about hands - ExternalState.HandScale = InternalHandState.HandScale; - - // Update Bone Rotations - for (uint32 BoneIndex = 0; BoneIndex < UE_ARRAY_COUNT(ExternalState.BoneRotations); BoneIndex++) - { - const XrQuaternionf RawRotation = InternalHandState.BoneRotations[BoneIndex]; - FQuat BoneRotation = XrBoneQuatToFQuat(RawRotation); - BoneRotation.Normalize(); - ExternalState.BoneRotations[BoneIndex] = BoneRotation; - } - - // Update Pinch State and Pinch Strength - bool bTracked = (InternalHandState.Status & static_cast(EHandStatus::HandTracked)) != 0; - ExternalState.TrackingConfidence = InternalHandState.HandConfidence; - - ExternalState.bIsPositionTracked = bTracked && ExternalState.TrackingConfidence == EOculusXRTrackingConfidence::High; - ExternalState.bIsPositionValid = bTracked; - ExternalState.bIsOrientationTracked = bTracked && ExternalState.TrackingConfidence == EOculusXRTrackingConfidence::High; - ExternalState.bIsOrientationValid = bTracked; - ExternalState.bIsPointerPoseValid = (InternalHandState.Status & static_cast(EHandStatus::InputValid)) != 0; - - const XrPosef PointerPose = InternalHandState.PointerPose; - FVector PointerPoseTranslation = XrPoseVectorToFVector(PointerPose.position); - FQuat PointerPoseRotation = XrPoseQuatToFQuat(PointerPose.orientation); - ExternalState.PointerPose.SetTranslation(PointerPoseTranslation); - ExternalState.PointerPose.SetRotation(PointerPoseRotation); - - ExternalState.bIsDominantHand = (InternalHandState.Status & static_cast(EHandStatus::DominantHand)) != 0; - - // Poll for finger confidence - for (uint32 FingerIndex = 0; FingerIndex < static_cast(EOculusHandAxes::TotalAxisCount); FingerIndex++) - { - ExternalState.FingerConfidences[FingerIndex] = InternalHandState.FingerConfidences[FingerIndex]; - } - - // Poll for specific actions - const IPlatformInputDeviceMapper& DeviceMapper = IPlatformInputDeviceMapper::Get(); - auto PlatformUser = DeviceMapper.GetPrimaryPlatformUser(); - auto DeviceId = DeviceMapper.GetDefaultInputDevice(); - const bool handMenuButtonPressed = (InternalHandState.Status & static_cast(EHandStatus::MenuPressed)) != 0; - if (handMenuButtonPressed != InternalHandsState.bHandMenuButtonPressed) - { - InternalHandsState.bHandMenuButtonPressed = handMenuButtonPressed; - SendControllerButtonPressed(EKeys::OculusTouch_Left_Menu_Click.GetFName(), InternalHandsState.bHandMenuButtonPressed, PlatformUser, DeviceId); - } - - // Poll for finger pinches - for (uint32 FingerIndex = 0; FingerIndex < static_cast(EOculusHandButton::TotalButtonCount); FingerIndex++) - { - FOculusButtonState& PinchState = ExternalState.HandButtons[FingerIndex]; - check(!PinchState.Key.IsNone()); - - bool bPressed = false; - if (FingerIndex < static_cast(EOculusHandButton::System)) - { - bPressed = ((static_cast(InternalHandState.Pinches) & (1 << FingerIndex)) != 0); - bPressed &= (InternalHandState.HandConfidence == EOculusXRTrackingConfidence::High) && (InternalHandState.FingerConfidences[FingerIndex] == EOculusXRTrackingConfidence::High); - } - else if (FingerIndex == static_cast(EOculusHandButton::System)) - { - bPressed = (InternalHandState.Status & static_cast(EHandStatus::SystemGestureInProgress)) != 0; - } - else - { - bPressed = InternalHandsState.bHandMenuButtonPressed && !ExternalState.bIsDominantHand; - } - - if (bPressed != PinchState.bIsPressed) - { - PinchState.bIsPressed = bPressed; - SendControllerButtonPressed(PinchState.Key, PinchState.bIsPressed, PlatformUser, DeviceId); - } - } - - // Poll for finger strength - for (uint32 FingerIndex = 0; FingerIndex < static_cast(EOculusHandAxes::TotalAxisCount); FingerIndex++) - { - FOculusAxisState& PinchStrength = ExternalState.HandAxes[FingerIndex]; - check(!PinchStrength.Axis.IsNone()); - - float PinchValue = 0.0f; - if (InternalHandState.HandConfidence == EOculusXRTrackingConfidence::High) - { - PinchValue = InternalHandState.PinchStrength[FingerIndex]; - } - - if (PinchValue != PinchStrength.State) - { - MessageHandler->OnControllerAnalog(PinchStrength.Axis, PlatformUser, DeviceId, PinchValue); - PinchStrength.State = PinchValue; - } - } - } - - bHandTrackingActive = bHandTrackingActiveCurrentTick; - } - - bool FHandTrackingExtensionPlugin::GetSkeleton(EOculusXRHandType HandType, TSharedPtr Skeleton) - { - if (!IsHandTrackingAvailable() && bExtHandTrackingMeshAvailable) - { - return false; - } - - if (!Skeleton) - { - return false; - } - - const bool bIsLeft = HandType == EOculusXRHandType::HandLeft; - XrHandTrackerEXT& HandTracker = bIsLeft ? OculusHandTrackers[EOculusXRHandType::HandLeft] : OculusHandTrackers[EOculusXRHandType::HandRight]; - XrHandTrackingMeshFB XrMesh = { XR_TYPE_HAND_TRACKING_MESH_FB }; - if (XR_SUCCEEDED(xrGetHandMeshFB(HandTracker, &XrMesh))) - { - const uint32_t NumCapsules = XR_FB_HAND_TRACKING_CAPSULE_COUNT; - const uint32_t NumJoints = XrMesh.jointCountOutput; - const uint32_t NumVerts = XrMesh.vertexCountOutput; - const uint32_t NumIndices = XrMesh.indexCountOutput; - - if ((NumJoints > static_cast(EHandSkeletonConstants::MaxBones)) || (NumCapsules > static_cast(EHandSkeletonConstants::MaxBoneCapsules))) - { - // fail if runtime mesh data exceeds capacity of Skeleton struct - return false; - } - - // intermediary storage for skeleton data - TArray JointBindPoses; - JointBindPoses.SetNum(NumJoints); - XrMesh.jointBindPoses = JointBindPoses.GetData(); - - TArray JointParents; - JointParents.SetNum(NumJoints); - XrMesh.jointParents = JointParents.GetData(); - - TArray JointRadii; - JointRadii.SetNum(NumJoints); - XrMesh.jointRadii = JointRadii.GetData(); - - FHandMesh HandMesh; - XrMesh.vertexPositions = HandMesh.VertexPositions; - XrMesh.vertexNormals = HandMesh.VertexNormals; - XrMesh.vertexUVs = HandMesh.VertexUV0; - XrMesh.vertexBlendIndices = HandMesh.BlendIndices; - XrMesh.vertexBlendWeights = HandMesh.BlendWeights; - XrMesh.indices = HandMesh.Indices; - - XrMesh.jointCapacityInput = NumJoints; - XrMesh.vertexCapacityInput = NumVerts; - XrMesh.indexCapacityInput = NumIndices; - - XrHandTrackingCapsulesStateFB CapsuleState = { XR_TYPE_HAND_TRACKING_CAPSULES_STATE_FB }; - - XrMesh.next = &CapsuleState; - XrResult Result = xrGetHandMeshFB(HandTracker, &XrMesh); - if (XR_SUCCEEDED(Result)) - { - Skeleton->HandType = HandType; - Skeleton->NumBones = static_cast(EHandSkeletonConstants::MaxHandBones); - Skeleton->NumBoneCapsules = XR_FB_HAND_TRACKING_CAPSULE_COUNT; - - // Compute bone poses without hierarchial transform (needed for capsules) - for (int i = 0; i < static_cast(EHandSkeletonConstants::MaxHandBones); ++i) - { - const EHandBoneId HandBoneId = (EHandBoneId)i; - const XrHandJointEXT Joint = MapBoneToXrHandJoint(HandBoneId); - - const XrPosef RootPose = XrMesh.jointBindPoses[XR_HAND_JOINT_WRIST_EXT]; - XrPosef JointPose = (Joint != XR_HAND_JOINT_MAX_ENUM_EXT) ? XrMesh.jointBindPoses[Joint] : XrPosef_Identity(); - - // fix up thumb0 since it does not exist in OpenXR - if (HandBoneId == EHandBoneId::Thumb0) - { - JointPose = bIsLeft ? XrLeftHandLegacyBindPoseThumb0 : XrRightHandLegacyBindPoseThumb0; - } - - JointPose = TransformXrHandJointPose(HandType, Joint, JointPose, RootPose, true); - - Skeleton->Bones[i].BoneId = HandBoneId; - Skeleton->Bones[i].Pose = JointPose; - } - - // Compute bone capsules using non-hierarchial bone poses - for (int i = 0, OutIndex = 0; - i < XR_FB_HAND_TRACKING_CAPSULE_COUNT && OutIndex < static_cast(EHandSkeletonConstants::MaxBoneCapsules); - ++i) - { - const EHandBoneId HandBoneId = MapXrHandJointToBone(CapsuleState.capsules[i].joint); - - if (HandBoneId != EHandBoneId::Invalid) - { - XrPosef InvBonePose; - XrPosef_Invert(&InvBonePose, &Skeleton->Bones[static_cast(HandBoneId)].Pose); - XrVector3f Point0; - XrPosef_TransformVector3f(&Point0, &InvBonePose, &CapsuleState.capsules[i].points[0]); - XrVector3f Point1; - XrPosef_TransformVector3f(&Point1, &InvBonePose, &CapsuleState.capsules[i].points[1]); - - Skeleton->BoneCapsules[OutIndex].BoneIndex = static_cast(HandBoneId); - Skeleton->BoneCapsules[OutIndex].Points[0] = Point0; - Skeleton->BoneCapsules[OutIndex].Points[1] = Point1; - Skeleton->BoneCapsules[OutIndex].Radius = CapsuleState.capsules[i].radius; - - OutIndex++; - } - } - - // Compute final bone poses with hierarchial transform - for (int i = 0; i < static_cast(EHandSkeletonConstants::MaxHandBones); ++i) - { - const EHandBoneId HandBoneId = (EHandBoneId)i; - - const XrHandJointEXT Joint = MapBoneToXrHandJoint(HandBoneId); - XrHandJointEXT ParentJoint = - (Joint != XR_HAND_JOINT_MAX_ENUM_EXT) ? XrMesh.jointParents[Joint] : XR_HAND_JOINT_MAX_ENUM_EXT; - EHandBoneId ParentHandBoneId = MapXrHandJointToBone(ParentJoint); - - // fix up parent bone mappings for VrApi hand compat - if ((ParentHandBoneId == EHandBoneId::Invalid) && (Joint != XR_HAND_JOINT_WRIST_EXT)) - { - ParentHandBoneId = EHandBoneId::WristRoot; - ParentJoint = MapBoneToXrHandJoint(ParentHandBoneId); - } - - XrPosef ParentPose = - (ParentJoint != XR_HAND_JOINT_MAX_ENUM_EXT) ? XrMesh.jointBindPoses[ParentJoint] : XrPosef_Identity(); - - // fix up thumb1 parent since thumb0 does not exist in OpenXR - if (HandBoneId == EHandBoneId::Thumb1) - { - ParentHandBoneId = EHandBoneId::Thumb0; - ParentJoint = XR_HAND_JOINT_MAX_ENUM_EXT; - ParentPose = bIsLeft ? XrLeftHandLegacyBindPoseThumb0 : XrRightHandLegacyBindPoseThumb0; - } - - ParentPose = TransformXrHandJointPose(HandType, ParentJoint, ParentPose, XrPosef_Identity(), false); - XrPosef ParentPoseInv; - XrPosef_Invert(&ParentPoseInv, &ParentPose); - XrPosef JointPose{}; - XrPosef_Multiply(&JointPose, &ParentPoseInv, (XrPosef*)&Skeleton->Bones[i].Pose); - - Skeleton->Bones[i].BoneId = HandBoneId; - Skeleton->Bones[i].Pose = JointPose; - Skeleton->Bones[i].ParentBoneIndex = static_cast(ParentHandBoneId); - } - - return true; - } - } - - return false; - } - - bool FHandTrackingExtensionPlugin::GetMesh(EOculusXRHandType HandType, TSharedPtr HandMesh) - { - if (!IsHandTrackingAvailable() && bExtHandTrackingMeshAvailable) - { - return false; - } - if (!HandMesh) - { - return false; - } - - if (HandType != EOculusXRHandType::HandLeft && HandType != EOculusXRHandType::HandRight) - { - return false; - } - - const bool bIsLeft = HandType == EOculusXRHandType::HandLeft; - XrHandTrackerEXT& HandTracker = bIsLeft ? OculusHandTrackers[EOculusXRHandType::HandLeft] : OculusHandTrackers[EOculusXRHandType::HandRight]; - - XrHandTrackingMeshFB XrMesh = { XR_TYPE_HAND_TRACKING_MESH_FB }; - - if (XR_SUCCEEDED(xrGetHandMeshFB(HandTracker, &XrMesh))) - { - const uint32_t NumJoints = XrMesh.jointCountOutput; - const uint32_t NumVerts = XrMesh.vertexCountOutput; - const uint32_t NumIndices = XrMesh.indexCountOutput; - - if ((NumVerts > static_cast(EHandMeshConstants::MaxVertices)) || (NumIndices > static_cast(EHandMeshConstants::MaxIndices))) - { - // fail if runtime mesh data exceeds capacity of Mesh struct - return false; - } - - // temp storage for skeleton data since extension spec requires query with joints - TArray JointBindPoses; - JointBindPoses.SetNum(NumJoints); - XrMesh.jointBindPoses = JointBindPoses.GetData(); - - TArray JointParents; - JointParents.SetNum(NumJoints); - XrMesh.jointParents = JointParents.GetData(); - - TArray jointRadii; - jointRadii.SetNum(NumJoints); - XrMesh.jointRadii = jointRadii.GetData(); - - // mesh data - XrMesh.vertexPositions = HandMesh->VertexPositions; - XrMesh.vertexNormals = HandMesh->VertexNormals; - XrMesh.vertexUVs = HandMesh->VertexUV0; - XrMesh.vertexBlendIndices = HandMesh->BlendIndices; - XrMesh.vertexBlendWeights = HandMesh->BlendWeights; - XrMesh.indices = HandMesh->Indices; - - XrMesh.jointCapacityInput = NumJoints; - XrMesh.vertexCapacityInput = NumVerts; - XrMesh.indexCapacityInput = NumIndices; - - if (XR_SUCCEEDED(xrGetHandMeshFB(HandTracker, &XrMesh))) - { - HandMesh->HandType = HandType; - HandMesh->NumVertices = NumVerts; - HandMesh->NumIndices = NumIndices; - - for (int i = 0; i < (int)NumVerts; i++) - { - HandMesh->BlendIndices[i].x = (short)MapXrHandJointToBone((XrHandJointEXT)HandMesh->BlendIndices[i].x); - HandMesh->BlendIndices[i].y = (short)MapXrHandJointToBone((XrHandJointEXT)HandMesh->BlendIndices[i].y); - HandMesh->BlendIndices[i].z = (short)MapXrHandJointToBone((XrHandJointEXT)HandMesh->BlendIndices[i].z); - HandMesh->BlendIndices[i].w = (short)MapXrHandJointToBone((XrHandJointEXT)HandMesh->BlendIndices[i].w); - } - return true; - } - } - return false; - } - - XrPosef FHandTrackingExtensionPlugin::TransformXrHandJointPose( - EOculusXRHandType HandType, - XrHandJointEXT Joint, - XrPosef JointPose, - XrPosef RootPose, - bool ApplyRootPose) - { - if ((Joint == XR_HAND_JOINT_MAX_ENUM_EXT) || ((HandType != EOculusXRHandType::HandLeft) && (HandType != EOculusXRHandType::HandRight))) - { - return JointPose; - } - - // back out last mile OpenXR spec pose adjustment and convert all bones to wrist bone space - const bool bIsLeft = (HandType == EOculusXRHandType::HandLeft); - const FQuat4f RotTip = bIsLeft ? FQuat4f({ 1.0f, 0.0f, 0.0f }, FMath::DegreesToRadians(180.0f)) * FQuat4f({ 0.0f, 1.0f, 0.0f }, FMath::DegreesToRadians(-90.0f)) - : FQuat4f({ 0.0f, 1.0f, 0.0f }, FMath::DegreesToRadians(90.0f)); - const FQuat4f RotThumb = bIsLeft ? RotTip * FQuat4f({ 0.0f, 0.0f, 1.0f }, FMath::DegreesToRadians(90.0f)) - : RotTip * FQuat4f({ 0.0f, 0.0f, 1.0f }, FMath::DegreesToRadians(-90.0f)); - - XrQuaternionf InvRotTip = XrQuaternionf_Inverse((XrQuaternionf&)RotTip); - XrQuaternionf InvRotThumb = XrQuaternionf_Inverse((XrQuaternionf&)RotThumb); - InvRotTip = XrQuaternionf_Inverse((XrQuaternionf&)RotTip); - InvRotThumb = XrQuaternionf_Inverse((XrQuaternionf&)RotThumb); - - if (XR_CURRENT_API_VERSION >= XR_MAKE_VERSION(1, 0, 23)) - { - InvRotThumb = InvRotTip; - } - - if (ApplyRootPose) - { - RootPose.orientation = XrQuaternionf_Multiply(RootPose.orientation, InvRotTip); - XrPosef RootPoseInv; - XrPosef_Invert(&RootPoseInv, &RootPose); - XrPosef_Multiply(&JointPose, &RootPoseInv, &JointPose); - } - - switch (Joint) - { - case XR_HAND_JOINT_THUMB_METACARPAL_EXT: - case XR_HAND_JOINT_THUMB_PROXIMAL_EXT: - case XR_HAND_JOINT_THUMB_DISTAL_EXT: - case XR_HAND_JOINT_THUMB_TIP_EXT: - JointPose.orientation = XrQuaternionf_Multiply(JointPose.orientation, InvRotThumb); - break; - case XR_HAND_JOINT_PALM_EXT: - case XR_HAND_JOINT_WRIST_EXT: - case XR_HAND_JOINT_INDEX_METACARPAL_EXT: - case XR_HAND_JOINT_INDEX_PROXIMAL_EXT: - case XR_HAND_JOINT_INDEX_INTERMEDIATE_EXT: - case XR_HAND_JOINT_INDEX_DISTAL_EXT: - case XR_HAND_JOINT_INDEX_TIP_EXT: - case XR_HAND_JOINT_MIDDLE_METACARPAL_EXT: - case XR_HAND_JOINT_MIDDLE_PROXIMAL_EXT: - case XR_HAND_JOINT_MIDDLE_INTERMEDIATE_EXT: - case XR_HAND_JOINT_MIDDLE_DISTAL_EXT: - case XR_HAND_JOINT_MIDDLE_TIP_EXT: - case XR_HAND_JOINT_RING_METACARPAL_EXT: - case XR_HAND_JOINT_RING_PROXIMAL_EXT: - case XR_HAND_JOINT_RING_INTERMEDIATE_EXT: - case XR_HAND_JOINT_RING_DISTAL_EXT: - case XR_HAND_JOINT_RING_TIP_EXT: - case XR_HAND_JOINT_LITTLE_METACARPAL_EXT: - case XR_HAND_JOINT_LITTLE_PROXIMAL_EXT: - case XR_HAND_JOINT_LITTLE_INTERMEDIATE_EXT: - case XR_HAND_JOINT_LITTLE_DISTAL_EXT: - case XR_HAND_JOINT_LITTLE_TIP_EXT: - JointPose.orientation = XrQuaternionf_Multiply(JointPose.orientation, InvRotTip); - break; - default: - break; - } - - return JointPose; - } - - XrHandJointEXT FHandTrackingExtensionPlugin::MapBoneToXrHandJoint(EHandBoneId bone) - { - switch (bone) - { - // case undefined: - // return XR_HAND_JOINT_PALM_EXT; - case EHandBoneId::WristRoot: - return XR_HAND_JOINT_WRIST_EXT; - case EHandBoneId::ForearmStub: - return XR_HAND_JOINT_MAX_ENUM_EXT; // undefined - case EHandBoneId::Thumb0: - return XR_HAND_JOINT_MAX_ENUM_EXT; // undefined - case EHandBoneId::Thumb1: - return XR_HAND_JOINT_THUMB_METACARPAL_EXT; - case EHandBoneId::Thumb2: - return XR_HAND_JOINT_THUMB_PROXIMAL_EXT; - case EHandBoneId::Thumb3: - return XR_HAND_JOINT_THUMB_DISTAL_EXT; - // case undefined: - // return XR_HAND_JOINT_INDEX_METACARPAL_EXT; - case EHandBoneId::Index1: - return XR_HAND_JOINT_INDEX_PROXIMAL_EXT; - case EHandBoneId::Index2: - return XR_HAND_JOINT_INDEX_INTERMEDIATE_EXT; - case EHandBoneId::Index3: - return XR_HAND_JOINT_INDEX_DISTAL_EXT; - // case undefined: - // return XR_HAND_JOINT_MIDDLE_METACARPAL_EXT; - case EHandBoneId::Middle1: - return XR_HAND_JOINT_MIDDLE_PROXIMAL_EXT; - case EHandBoneId::Middle2: - return XR_HAND_JOINT_MIDDLE_INTERMEDIATE_EXT; - case EHandBoneId::Middle3: - return XR_HAND_JOINT_MIDDLE_DISTAL_EXT; - // case undefined: - // return XR_HAND_JOINT_RING_METACARPAL_EXT; - case EHandBoneId::Ring1: - return XR_HAND_JOINT_RING_PROXIMAL_EXT; - case EHandBoneId::Ring2: - return XR_HAND_JOINT_RING_INTERMEDIATE_EXT; - case EHandBoneId::Ring3: - return XR_HAND_JOINT_RING_DISTAL_EXT; - case EHandBoneId::Pinky0: - return XR_HAND_JOINT_LITTLE_METACARPAL_EXT; - case EHandBoneId::Pinky1: - return XR_HAND_JOINT_LITTLE_PROXIMAL_EXT; - case EHandBoneId::Pinky2: - return XR_HAND_JOINT_LITTLE_INTERMEDIATE_EXT; - case EHandBoneId::Pinky3: - return XR_HAND_JOINT_LITTLE_DISTAL_EXT; - case EHandBoneId::ThumbTip: - return XR_HAND_JOINT_THUMB_TIP_EXT; - case EHandBoneId::IndexTip: - return XR_HAND_JOINT_INDEX_TIP_EXT; - case EHandBoneId::MiddleTip: - return XR_HAND_JOINT_MIDDLE_TIP_EXT; - case EHandBoneId::RingTip: - return XR_HAND_JOINT_RING_TIP_EXT; - case EHandBoneId::PinkyTip: - return XR_HAND_JOINT_LITTLE_TIP_EXT; - default: - return XR_HAND_JOINT_MAX_ENUM_EXT; // undefined - } - } - - EHandBoneId FHandTrackingExtensionPlugin::MapXrHandJointToBone(XrHandJointEXT joint) - { - switch (joint) - { - case XR_HAND_JOINT_PALM_EXT: - return EHandBoneId::Invalid; // undefined - case XR_HAND_JOINT_WRIST_EXT: - return EHandBoneId::WristRoot; - // case undefined: - // return EHandBoneId::ForearmStub; - // case undefined: - // return EHandBoneId::Thumb0; - case XR_HAND_JOINT_THUMB_METACARPAL_EXT: - return EHandBoneId::Thumb1; - case XR_HAND_JOINT_THUMB_PROXIMAL_EXT: - return EHandBoneId::Thumb2; - case XR_HAND_JOINT_THUMB_DISTAL_EXT: - return EHandBoneId::Thumb3; - case XR_HAND_JOINT_INDEX_METACARPAL_EXT: - return EHandBoneId::Invalid; // undefined - case XR_HAND_JOINT_INDEX_PROXIMAL_EXT: - return EHandBoneId::Index1; - case XR_HAND_JOINT_INDEX_INTERMEDIATE_EXT: - return EHandBoneId::Index2; - case XR_HAND_JOINT_INDEX_DISTAL_EXT: - return EHandBoneId::Index3; - case XR_HAND_JOINT_MIDDLE_METACARPAL_EXT: - return EHandBoneId::Invalid; // undefined - case XR_HAND_JOINT_MIDDLE_PROXIMAL_EXT: - return EHandBoneId::Middle1; - case XR_HAND_JOINT_MIDDLE_INTERMEDIATE_EXT: - return EHandBoneId::Middle2; - case XR_HAND_JOINT_MIDDLE_DISTAL_EXT: - return EHandBoneId::Middle3; - case XR_HAND_JOINT_RING_METACARPAL_EXT: - return EHandBoneId::Invalid; // undefined - case XR_HAND_JOINT_RING_PROXIMAL_EXT: - return EHandBoneId::Ring1; - case XR_HAND_JOINT_RING_INTERMEDIATE_EXT: - return EHandBoneId::Ring2; - case XR_HAND_JOINT_RING_DISTAL_EXT: - return EHandBoneId::Ring3; - case XR_HAND_JOINT_LITTLE_METACARPAL_EXT: - return EHandBoneId::Pinky0; - case XR_HAND_JOINT_LITTLE_PROXIMAL_EXT: - return EHandBoneId::Pinky1; - case XR_HAND_JOINT_LITTLE_INTERMEDIATE_EXT: - return EHandBoneId::Pinky2; - case XR_HAND_JOINT_LITTLE_DISTAL_EXT: - return EHandBoneId::Pinky3; - case XR_HAND_JOINT_THUMB_TIP_EXT: - return EHandBoneId::ThumbTip; - case XR_HAND_JOINT_INDEX_TIP_EXT: - return EHandBoneId::IndexTip; - case XR_HAND_JOINT_MIDDLE_TIP_EXT: - return EHandBoneId::MiddleTip; - case XR_HAND_JOINT_RING_TIP_EXT: - return EHandBoneId::RingTip; - case XR_HAND_JOINT_LITTLE_TIP_EXT: - return EHandBoneId::PinkyTip; - default: - return EHandBoneId::Invalid; // undefined - } - } - - FQuat FHandTrackingExtensionPlugin::XrBoneQuatToFQuat(XrQuaternionf XrQuat) - { - return FQuat(XrQuat.x, -XrQuat.y, XrQuat.z, -XrQuat.w); - } - - FVector FHandTrackingExtensionPlugin::XrPoseVectorToFVector(XrVector3f XrVector) - { - return FVector(-XrVector.z, XrVector.x, XrVector.y); - } - - FQuat FHandTrackingExtensionPlugin::XrPoseQuatToFQuat(XrQuaternionf XrQuat) - { - return FQuat(-XrQuat.z, XrQuat.x, XrQuat.y, -XrQuat.w); - } - -} // namespace OculusXRInput diff --git a/Plugins/MetaXR/Source/OculusXRInput/Private/OculusXRInputHandTrackingExtensionPlugin.h b/Plugins/MetaXR/Source/OculusXRInput/Private/OculusXRInputHandTrackingExtensionPlugin.h deleted file mode 100644 index 6cafa8b..0000000 --- a/Plugins/MetaXR/Source/OculusXRInput/Private/OculusXRInputHandTrackingExtensionPlugin.h +++ /dev/null @@ -1,90 +0,0 @@ -// Copyright (c) Meta Platforms, Inc. and affiliates. - -#pragma once - -#include "khronos/openxr/openxr.h" - -#include "CoreMinimal.h" -#include "IOculusXRInputModule.h" -#include "IOpenXRExtensionPlugin.h" -#include "OculusXRInputHandTrackingTypes.h" -#include "OculusXRInputState.h" - -namespace OculusXRInput -{ - class FHandTrackingExtensionPlugin : public IOpenXRExtensionPlugin, public IInputDevice - { - public: - FHandTrackingExtensionPlugin() - { - HandControllerStates.Add(EOculusXRHandType::HandLeft, FOculusHandControllerState(EControllerHand::Left)); - HandControllerStates.Add(EOculusXRHandType::HandRight, FOculusHandControllerState(EControllerHand::Right)); - memset(XrLeftHandJointLocations, 0, sizeof(XrLeftHandJointLocations)); - memset(XrRightHandJointLocations, 0, sizeof(XrRightHandJointLocations)); - memset(XrLeftHandJointVelocities, 0, sizeof(XrLeftHandJointVelocities)); - memset(XrRightHandJointVelocities, 0, sizeof(XrRightHandJointVelocities)); - } - - void RegisterOpenXRExtensionPlugin() - { - RegisterOpenXRExtensionModularFeature(); - } - - // IInputDevice - virtual void SetMessageHandler(const TSharedRef& InMessageHandler) override; - void Tick(float DeltaTime) override {}; - void SendControllerEvents() override {}; - virtual bool Exec(UWorld* InWorld, const TCHAR* Cmd, FOutputDevice& Ar) override; - void SetChannelValue(int32 ControllerId, FForceFeedbackChannelType ChannelType, float Value) override {}; - void SetChannelValues(int32 ControllerId, const FForceFeedbackValues& Values) override {}; - - // IOpenXRExtensionPlugin - virtual bool GetRequiredExtensions(TArray& OutExtensions) override; - virtual bool GetOptionalExtensions(TArray& OutExtensions) override; - virtual const void* OnGetSystem(XrInstance InInstance, const void* InNext) override; - virtual const void* OnCreateInstance(class IOpenXRHMDModule* InModule, const void* InNext) override; - virtual void PostCreateInstance(XrInstance InInstance) override; - virtual const void* OnCreateSession(XrInstance InInstance, XrSystemId InSystem, const void* InNext) override; - virtual const void* OnBeginSession(XrSession InSession, const void* InNext) override; - virtual void UpdateDeviceLocations(XrSession InSession, XrTime DisplayTime, XrSpace TrackingSpace) override; - virtual void OnDestroySession(XrSession InSession) override; - - virtual bool IsHandTrackingAvailable(); - virtual bool IsHandTrackingActive(); - virtual bool GetSkeleton(EOculusXRHandType HandType, TSharedPtr Skeleton); - virtual bool GetMesh(EOculusXRHandType HandType, TSharedPtr Mesh); - - TMap HandControllerStates; - bool bIsInitialized = false; - - private: - virtual void SendControllerButtonPressed(FName Key, bool IsPressed, FPlatformUserId UserId, FInputDeviceId DeviceId); - - XrHandJointLocationEXT XrLeftHandJointLocations[XR_HAND_JOINT_COUNT_EXT]; - XrHandJointLocationEXT XrRightHandJointLocations[XR_HAND_JOINT_COUNT_EXT]; - XrHandJointVelocityEXT XrLeftHandJointVelocities[XR_HAND_JOINT_COUNT_EXT]; - XrHandJointVelocityEXT XrRightHandJointVelocities[XR_HAND_JOINT_COUNT_EXT]; - - PFN_xrGetHandMeshFB xrGetHandMeshFB = nullptr; - PFN_xrLocateHandJointsEXT xrLocateHandJointsEXT = nullptr; - PFN_xrCreateHandTrackerEXT xrCreateHandTrackerEXT = nullptr; - PFN_xrDestroyHandTrackerEXT xrDestroyHandTrackerEXT = nullptr; - - virtual XrPosef TransformXrHandJointPose(EOculusXRHandType HandType, XrHandJointEXT Joint, XrPosef JointPose, XrPosef RootPose, bool ApplyRootPose); - virtual XrHandJointEXT MapBoneToXrHandJoint(EHandBoneId Bone); - virtual EHandBoneId MapXrHandJointToBone(XrHandJointEXT Joint); - - virtual FVector XrPoseVectorToFVector(XrVector3f XrVector); - virtual FQuat XrPoseQuatToFQuat(XrQuaternionf XrQuat); - virtual FQuat XrBoneQuatToFQuat(XrQuaternionf XrQuat); - - bool bExtHandTrackingMeshAvailable = false; - bool bHandTrackingAvailable = false; - bool bHandTrackingActive = false; - - TSharedPtr MessageHandler; - TMap OculusHandTrackers; - XrInstance Instance = XR_NULL_HANDLE; - FInternalHandsState InternalHandsState; - }; -} // namespace OculusXRInput diff --git a/Plugins/MetaXR/Source/OculusXRInput/Private/OculusXRInputHandTrackingTypes.h b/Plugins/MetaXR/Source/OculusXRInput/Private/OculusXRInputHandTrackingTypes.h deleted file mode 100644 index c7515de..0000000 --- a/Plugins/MetaXR/Source/OculusXRInput/Private/OculusXRInputHandTrackingTypes.h +++ /dev/null @@ -1,245 +0,0 @@ -// Copyright (c) Meta Platforms, Inc. and affiliates. - -#pragma once - -#include "khronos/openxr/openxr.h" -#include "xr_linear.h" - -#include "CoreMinimal.h" -#include "OculusXRInputFunctionLibrary.h" - -namespace OculusXRInput -{ - const XrPosef XrLeftHandLegacyBindPoseThumb0 = { - { 0.375387, 0.424584, -0.007779, 0.823864 }, - { 0.020069, 0.011554, -0.010497 } - }; - const XrPosef XrRightHandLegacyBindPoseThumb0 = { - { 0.375387, 0.424584, -0.007779, 0.823864 }, - { -0.020069, -0.011554, 0.010497 } - }; - const XrPosef XrLeftHandLegacyBindPoseThumb1 = { - { 0.260230, 0.024331, 0.125678, 0.957023 }, - { 0.024853, 0.000000, -0.000000 } - }; - const XrPosef XrRightHandLegacyBindPoseThumb1 = { - { 0.260230, 0.024331, 0.125678, 0.957023 }, - { -0.024853, 0.000000, 0.000000 } - }; - const float SMALLEST_NON_DENORMAL = 1.1754943508222875e-038f; // ( 1U << 23 ) - const int MaxHandCount = 2; - - enum class EHandFinger - { - Thumb = 0, - Index = 1, - Middle = 2, - Ring = 3, - Pinky = 4, - Count = 5, - }; - - enum class EHandBoneId - { - Invalid = -1, - - // hand bones - Start = 0, - WristRoot = Start + 0, // root frame of the hand, where the wrist is located - ForearmStub = Start + 1, // frame for user's forearm - Thumb0 = Start + 2, // thumb trapezium bone - Thumb1 = Start + 3, // thumb metacarpal bone - Thumb2 = Start + 4, // thumb proximal phalange bone - Thumb3 = Start + 5, // thumb distal phalange bone - Index1 = Start + 6, // index proximal phalange bone - Index2 = Start + 7, // index intermediate phalange bone - Index3 = Start + 8, // index distal phalange bone - Middle1 = Start + 9, // middle proximal phalange bone - Middle2 = Start + 10, // middle intermediate phalange bone - Middle3 = Start + 11, // middle distal phalange bone - Ring1 = Start + 12, // ring proximal phalange bone - Ring2 = Start + 13, // ring intermediate phalange bone - Ring3 = Start + 14, // ring distal phalange bone - Pinky0 = Start + 15, // pinky metacarpal bone - Pinky1 = Start + 16, // pinky proximal phalange bone - Pinky2 = Start + 17, // pinky intermediate phalange bone - Pinky3 = Start + 18, // pinky distal phalange bone - MaxSkinnable = Start + 19, - // Bone tips are position only. They are not used for skinning but useful for hit-testing. - // NOTE: ThumbTip == MaxSkinnable since the extended tips need to be contiguous - ThumbTip = MaxSkinnable + 0, // tip of the thumb - IndexTip = MaxSkinnable + 1, // tip of the index finger - MiddleTip = MaxSkinnable + 2, // tip of the middle finger - RingTip = MaxSkinnable + 3, // tip of the ring finger - PinkyTip = MaxSkinnable + 4, // tip of the pinky - End = MaxSkinnable + 5, - - // Hand Skeleton V2 format - StartV2 = 0, - PalmV2 = StartV2 + 0, // PALM = 0, - WristV2 = StartV2 + 1, // WRIST = 1, - ThumbMetacarpalV2 = StartV2 + 2, // THUMB_METACARPAL = 2, - ThumbProximalV2 = StartV2 + 3, // THUMB_PROXIMAL = 3, - ThumbDistalV2 = StartV2 + 4, // THUMB_DISTAL = 4, - ThumbTipV2 = StartV2 + 5, // THUMB_TIP = 5, - IndexMetacarpalV2 = StartV2 + 6, // INDEX_METACARPAL = 6, - IndexProximalV2 = StartV2 + 7, // INDEX_PROXIMAL = 7, - IndexIntermediateV2 = StartV2 + 8, // INDEX_INTERMEDIATE = 8, - IndexDistalV2 = StartV2 + 9, // INDEX_DISTAL = 9, - IndexTipV2 = StartV2 + 10, // INDEX_TIP = 10, - MiddleMetacarpalV2 = StartV2 + 11, // MIDDLE_METACARPAL = 11, - MiddleProximalV2 = StartV2 + 12, // MIDDLE_PROXIMAL = 12, - MiddleIntermediateV2 = StartV2 + 13, // MIDDLE_INTERMEDIATE = 13, - MiddleDistalV2 = StartV2 + 14, // MIDDLE_DISTAL = 14, - MiddleTipV2 = StartV2 + 15, // MIDDLE_TIP = 15, - RingMetacarpalV2 = StartV2 + 16, // RING_METACARPAL = 16, - RingProximalV2 = StartV2 + 17, // RING_PROXIMAL = 17, - RingIntermediateV2 = StartV2 + 18, // RING_INTERMEDIATE = 18, - RingDistalV2 = StartV2 + 19, // RING_DISTAL = 19, - RingTipV2 = StartV2 + 20, // RING_TIP = 20, - LittleMetacarpalV2 = StartV2 + 21, // LITTLE_METACARPAL = 21, - LittleProximalV2 = StartV2 + 22, // LITTLE_PROXIMAL = 22, - LittleIntermediateV2 = StartV2 + 23, // LITTLE_INTERMEDIATE = 23, - LittleDistalV2 = StartV2 + 24, // LITTLE_DISTAL = 24, - LittleTipV2 = StartV2 + 25, // LITTLE_TIP = 25, - EndV2 = StartV2 + 26, - - // add other skeleton bone definitions here... - Max = EndV2, - }; - - enum class EHandFingerPinch - { - Thumb = (1 << static_cast(EHandFinger::Thumb)), - Index = (1 << static_cast(EHandFinger::Index)), - Middle = (1 << static_cast(EHandFinger::Middle)), - Ring = (1 << static_cast(EHandFinger::Ring)), - Pinky = (1 << static_cast(EHandFinger::Pinky)), - Max, - }; - - enum class EHandSkeletonConstants - { - MaxHandBones = static_cast(EHandBoneId::End), - MaxHandBones_V2 = static_cast(EHandBoneId::EndV2), - MaxBones = static_cast(EHandBoneId::Max), - MaxBoneCapsules = 19, - }; - - struct FHandBoneCapsule - { - short BoneIndex; - // Points at either end of the cylinder inscribed in the capsule. Also the center points for - // spheres at either end of the capsule. Points A and B in the diagram above. - XrVector3f Points[2]; - // The radius of the capsule cylinder and of the half-sphere caps on the ends of the capsule. - float Radius; - }; - - struct FHandBone - { - EHandBoneId BoneId; - // index of this bone's parent bone (-1 if no parent) - short ParentBoneIndex; - XrPosef Pose; - }; - - struct FHandSkeleton - { - EOculusXRHandType HandType; - unsigned int NumBones; - unsigned int NumBoneCapsules; - FHandBone Bones[static_cast(EHandSkeletonConstants::MaxBones)]; - FHandBoneCapsule BoneCapsules[static_cast(EHandSkeletonConstants::MaxBoneCapsules)]; - }; - - enum class EHandMeshConstants - { - MaxVertices = 3000, - MaxIndices = MaxVertices * 6, - }; - - struct FHandMesh - { - // Type of mesh this data describes. - EOculusXRHandType HandType; - // Number of unique vertices in the mesh. - unsigned int NumVertices; - // Number of unique indices in the mesh. - unsigned int NumIndices; - // An array of count NumVertices positions for each vertex. Always valid. - XrVector3f VertexPositions[static_cast(EHandMeshConstants::MaxVertices)]; - // An array of count NumIndices of vertex indices specifying triangles that make up the mesh. Always valid. - short Indices[static_cast(EHandMeshConstants::MaxIndices)]; - // An array of count NumVertices of normals for each vertex. - // If null, this attribute is not used. - XrVector3f VertexNormals[static_cast(EHandMeshConstants::MaxVertices)]; - // An array of count NumVertices of texture coordinates for each vertex. - // If null, this attribute is not used. - XrVector2f VertexUV0[static_cast(EHandMeshConstants::MaxVertices)]; - // An array of count NumVertices of blend indices for each of the bones that each vertex is weighted to. - // Always valid. An index of < 0 means no blend weight. - XrVector4sFB BlendIndices[static_cast(EHandMeshConstants::MaxVertices)]; - // An array of count NumVertices of weights for each of the bones affecting each vertex. Always valid. - XrVector4f BlendWeights[static_cast(EHandMeshConstants::MaxVertices)]; - }; - - enum class EHandStatus - { - HandTracked = (1 << 0), // hand is currently tracked by hand tracking - InputValid = (1 << 1), // if this is set the pointer pose and pinch data is usable - SystemGestureInProgress = (1 << 6), // if this is set the user is performing the system gesture - DominantHand = (1 << 7), // if this is set the hand is considered the dominant hand - MenuPressed = (1 << 8), // if this is set the hand performed the system gesture as the non-dominant hand - }; - - struct FInternalHandState - { - // Hand Status bitfield described by ovrpHandStatus flags. - unsigned int Status; - - // Root pose of the hand in world space. Not to be confused with the root bone's transform. - // The root bone can still be offset from this by the skeleton's rest pose. - XrPosef RootPose; - - // Current rotation of each bone. - XrQuaternionf BoneRotations[static_cast(EHandSkeletonConstants::MaxHandBones)]; - - // Provides a bitmask indicating if each finger is "pinched" or not. Indexable via bitshifting with the ovrpHandFinger - // enum i.e. (1 << ovrpHandFinger_Index) - unsigned int Pinches; - - // Provides a 0.0f to 1.0f value of how "pinched" each finger is. Indexable via the ovrpHandFinger enum. - float PinchStrength[static_cast(EHandFinger::Count)]; - - // World space position and translation of the pointer attached to the hand. - XrPosef PointerPose; - - float HandScale; - - // Tracking confidence. Range [0,1], 0.0 = lowest confidence, 1.0 = highest confidence. - // This is useful for smoothly de-emphasizing hands as confidence decreases. - // This is the amount of confidence that the system has that the entire hand pose is correct. - EOculusXRTrackingConfidence HandConfidence; - - // Per-finger tracking confidence. Range [0,1], 0.0 = lowest confidence, 1.0 = highest confidence. - // This is the amount of confidence the system has that the individual finger poses are correct. - EOculusXRTrackingConfidence FingerConfidences[static_cast(EHandFinger::Count)]; - - // Time stamp for the pose that was requested in global system time. - double RequestedTimeStamp; - - // Time stamp of the captured sample that the pose was extrapolated from. - double SampleTimeStamp; - - bool PosesGeneratedByControllerData; - }; - - struct FInternalHandsState - { - FInternalHandState HandState[MaxHandCount]; - XrTime PredictedDisplayTime; - bool bHandMenuButtonPressed = false; - }; - -} // namespace OculusXRInput diff --git a/Plugins/MetaXR/Source/OculusXRInput/Private/OculusXRInputHapticsExtensionPlugin.cpp b/Plugins/MetaXR/Source/OculusXRInput/Private/OculusXRInputHapticsExtensionPlugin.cpp deleted file mode 100644 index d507986..0000000 --- a/Plugins/MetaXR/Source/OculusXRInput/Private/OculusXRInputHapticsExtensionPlugin.cpp +++ /dev/null @@ -1,214 +0,0 @@ -// Copyright (c) Meta Platforms, Inc. and affiliates. - -#include "OculusXRInputHapticsExtensionPlugin.h" - -#include "IOpenXRHMDModule.h" -#include "OculusXRInputExtensionPlugin.h" -#include "OculusXRInputXRFunctions.h" -#include "OpenXRCore.h" - -namespace OculusXRInput -{ - - XrInstance FInputHapticsExtensionPlugin::GetOpenXRInstance() const - { - return Instance; - } - - XrSession FInputHapticsExtensionPlugin::GetOpenXRSession() const - { - return Session; - } - - bool FInputHapticsExtensionPlugin::IsPCMExtensionAvailable() const - { - return bExtFBHapticsPcmAvailable; - } - - bool FInputHapticsExtensionPlugin::IsAmplitudeEnvelopeExtensionAvailable() const - { - return bExtFBAmplitudeEnvelopeAvailable; - } - - bool FInputHapticsExtensionPlugin::IsTouchControllerProExtensionAvailable() const - { - return bExtFBTouchControllerProAvailable; - } - - XrAction FInputHapticsExtensionPlugin::GetXrHandHapticVibrationAction() const - { - return XrHandHapticVibrationAction; - } - - XrAction FInputHapticsExtensionPlugin::GetXrThumbHapticVibrationAction() const - { - return XrThumbHapticVibrationAction; - } - - XrAction FInputHapticsExtensionPlugin::GetXrIndexHapticVibrationAction() const - { - return XrIndexHapticVibrationAction; - } - - XrPath* FInputHapticsExtensionPlugin::GetXrHandsSubactionPaths() - { - return XrPathBothHands; - } - - XrPath* FInputHapticsExtensionPlugin::GetXrHandsHapticsSubactionPaths() - { - return XrPathBothHandsHaptics; - } - - XrPath* FInputHapticsExtensionPlugin::GetXrThumbsHapticsSubactionPaths() - { - return XrPathBothThumbsHaptics; - } - - XrPath* FInputHapticsExtensionPlugin::GetXrIndexesHapticsSubactionPaths() - { - return XrPathBothIndexesHaptics; - } - - bool FInputHapticsExtensionPlugin::GetOptionalExtensions(TArray& OutExtensions) - { - OutExtensions.Add(XR_FB_HAPTIC_PCM_EXTENSION_NAME); - OutExtensions.Add(XR_FB_HAPTIC_AMPLITUDE_ENVELOPE_EXTENSION_NAME); - OutExtensions.Add(XR_FB_TOUCH_CONTROLLER_PRO_EXTENSION_NAME); - return true; - } - - const void* FInputHapticsExtensionPlugin::OnCreateInstance(class IOpenXRHMDModule* InModule, const void* InNext) - { - bExtFBHapticsPcmAvailable = InModule->IsExtensionEnabled(XR_FB_HAPTIC_PCM_EXTENSION_NAME); - bExtFBAmplitudeEnvelopeAvailable = InModule->IsExtensionEnabled(XR_FB_HAPTIC_AMPLITUDE_ENVELOPE_EXTENSION_NAME); - bExtFBTouchControllerProAvailable = InModule->IsExtensionEnabled(XR_FB_TOUCH_CONTROLLER_PRO_EXTENSION_NAME); - return InNext; - } - - void FInputHapticsExtensionPlugin::PostCreateInstance(XrInstance InInstance) - { - Instance = InInstance; - InitOpenXRFunctions(Instance); - } - - void FInputHapticsExtensionPlugin::PostCreateSession(XrSession InSession) - { - Session = InSession; - } - - void FInputHapticsExtensionPlugin::CreateHapticActions() - { - // Create action set - HapticsActionSet = XR_NULL_HANDLE; - XrActionSetCreateInfo ActionSetInfo{ XR_TYPE_ACTION_SET_CREATE_INFO }; - ActionSetInfo.next = nullptr; - FCStringAnsi::Strcpy(ActionSetInfo.actionSetName, XR_MAX_ACTION_SET_NAME_SIZE, "oculushapticsactionset"); - FCStringAnsi::Strcpy(ActionSetInfo.localizedActionSetName, XR_MAX_LOCALIZED_ACTION_SET_NAME_SIZE, "OculusHapticsActionSet"); - XR_ENSURE(xrCreateActionSet(Instance, &ActionSetInfo, &HapticsActionSet)); - - // Create hand haptics paths - XR_ENSURE(xrStringToPath(Instance, "/user/hand/left", &XrPathLeftHand)); - XR_ENSURE(xrStringToPath(Instance, "/user/hand/left/output/haptic", &XrPathLeftHandHaptics)); - XR_ENSURE(xrStringToPath(Instance, "/user/hand/right", &XrPathRightHand)); - XR_ENSURE(xrStringToPath(Instance, "/user/hand/right/output/haptic", &XrPathRightHandHaptics)); - XrPathBothHands[0] = XrPathLeftHand; - XrPathBothHands[1] = XrPathRightHand; - XrPathBothHandsHaptics[0] = XrPathLeftHandHaptics; - XrPathBothHandsHaptics[1] = XrPathRightHandHaptics; - - // Create localized haptics paths - XR_ENSURE(xrStringToPath(Instance, "/interaction_profiles/facebook/touch_controller_pro", &XrQuestProInteractionProfile)); - XR_ENSURE(xrStringToPath(Instance, "/user/hand/left/output/thumb_haptic_fb", &XrPathLeftThumbHaptics)); - XR_ENSURE(xrStringToPath(Instance, "/user/hand/left/output/trigger_haptic_fb", &XrPathLeftIndexHaptics)); - XR_ENSURE(xrStringToPath(Instance, "/user/hand/right/output/thumb_haptic_fb", &XrPathRightThumbHaptics)); - XR_ENSURE(xrStringToPath(Instance, "/user/hand/right/output/trigger_haptic_fb", &XrPathRightIndexHaptics)); - - XrPathBothThumbsHaptics[0] = XrPathLeftThumbHaptics; - XrPathBothThumbsHaptics[1] = XrPathRightThumbHaptics; - XrPathBothIndexesHaptics[0] = XrPathLeftIndexHaptics; - XrPathBothIndexesHaptics[1] = XrPathRightIndexHaptics; - - // Create actions - const auto CreateVibrationOutputAction = [this](const char* ActionName) { - XrActionCreateInfo ActionCreateInfo{ XR_TYPE_ACTION_CREATE_INFO }; - ActionCreateInfo.next = nullptr; - ActionCreateInfo.actionType = XR_ACTION_TYPE_VIBRATION_OUTPUT; - - FCStringAnsi::Strcpy(ActionCreateInfo.actionName, XR_MAX_ACTION_NAME_SIZE, ActionName); - FCStringAnsi::Strcpy(ActionCreateInfo.localizedActionName, XR_MAX_LOCALIZED_ACTION_NAME_SIZE, ActionName); - - ActionCreateInfo.countSubactionPaths = sizeof(XrPathBothHands) / sizeof(XrPath); - ActionCreateInfo.subactionPaths = XrPathBothHands; - XrAction Action = XR_NULL_HANDLE; - XR_ENSURE(xrCreateAction(HapticsActionSet, &ActionCreateInfo, &Action)); - return Action; - }; - - XrHandHapticVibrationAction = CreateVibrationOutputAction("hand_haptic_vibration"); - XrThumbHapticVibrationAction = CreateVibrationOutputAction("hand_thumb_haptic_vibration"); - XrIndexHapticVibrationAction = CreateVibrationOutputAction("hand_index_haptic_vibration"); - } - - bool FInputHapticsExtensionPlugin::GetSuggestedBindings(XrPath InInteractionProfile, TArray& OutBindings) - { - if (HapticsActionSet == XR_NULL_HANDLE) - { - return false; - } - - OutBindings.Add({ XrHandHapticVibrationAction, XrPathLeftHandHaptics }); - OutBindings.Add({ XrHandHapticVibrationAction, XrPathRightHandHaptics }); - if (InInteractionProfile == XrQuestProInteractionProfile) - { - OutBindings.Add({ XrIndexHapticVibrationAction, XrPathLeftIndexHaptics }); - OutBindings.Add({ XrIndexHapticVibrationAction, XrPathRightIndexHaptics }); - OutBindings.Add({ XrThumbHapticVibrationAction, XrPathLeftThumbHaptics }); - OutBindings.Add({ XrThumbHapticVibrationAction, XrPathRightThumbHaptics }); - } - - return true; - } - - void FInputHapticsExtensionPlugin::AttachActionSets(TSet& OutActionSets) - { - if (HapticsActionSet != XR_NULL_PATH) - { - OutActionSets.Add(HapticsActionSet); - } - } - - void FInputHapticsExtensionPlugin::GetActiveActionSetsForSync( - TArray& OutActiveSets) - { - if (HapticsActionSet != XR_NULL_PATH) - { - OutActiveSets.Add({ HapticsActionSet, XR_NULL_PATH }); - } - } - - bool FInputHapticsExtensionPlugin::GetInteractionProfile(XrInstance InInstance, FString& OutKeyPrefix, XrPath& OutPath, - bool& OutHasHaptics) - { - // Called at the start of Epic's input action creation - if (HapticsActionSet != XR_NULL_HANDLE) - { - DestroyHapticActions(); - } - CreateHapticActions(); - return true; - } - - void FInputHapticsExtensionPlugin::DestroyHapticActions() - { - if (HapticsActionSet != XR_NULL_HANDLE) - { - xrDestroyActionSet(HapticsActionSet); - XrHandHapticVibrationAction = XR_NULL_HANDLE; - XrThumbHapticVibrationAction = XR_NULL_HANDLE; - XrIndexHapticVibrationAction = XR_NULL_HANDLE; - HapticsActionSet = XR_NULL_HANDLE; - } - } - -} // namespace OculusXRInput diff --git a/Plugins/MetaXR/Source/OculusXRInput/Private/OculusXRInputHapticsExtensionPlugin.h b/Plugins/MetaXR/Source/OculusXRInput/Private/OculusXRInputHapticsExtensionPlugin.h deleted file mode 100644 index 22fbd93..0000000 --- a/Plugins/MetaXR/Source/OculusXRInput/Private/OculusXRInputHapticsExtensionPlugin.h +++ /dev/null @@ -1,82 +0,0 @@ -// Copyright (c) Meta Platforms, Inc. and affiliates. - -#pragma once - -#include "khronos/openxr/openxr.h" - -#include "CoreMinimal.h" -#include "IOpenXRExtensionPlugin.h" - -namespace OculusXRInput -{ - class FInputHapticsExtensionPlugin : public IOpenXRExtensionPlugin - { - public: - void RegisterOpenXRExtensionPlugin() - { -#if defined(WITH_OCULUS_BRANCH) - RegisterOpenXRExtensionModularFeature(); -#endif - } - - XrInstance GetOpenXRInstance() const; - XrSession GetOpenXRSession() const; - - bool IsPCMExtensionAvailable() const; - bool IsAmplitudeEnvelopeExtensionAvailable() const; - bool IsTouchControllerProExtensionAvailable() const; - - XrAction GetXrHandHapticVibrationAction() const; - XrAction GetXrThumbHapticVibrationAction() const; - XrAction GetXrIndexHapticVibrationAction() const; - - XrPath* GetXrHandsSubactionPaths(); - XrPath* GetXrHandsHapticsSubactionPaths(); - XrPath* GetXrThumbsHapticsSubactionPaths(); - XrPath* GetXrIndexesHapticsSubactionPaths(); - - // IOpenXRExtensionPlugin - virtual bool GetOptionalExtensions(TArray& OutExtensions) override; - virtual const void* OnCreateInstance(class IOpenXRHMDModule* InModule, const void* InNext) override; - virtual void PostCreateInstance(XrInstance InInstance) override; - virtual void PostCreateSession(XrSession InSession) override; - virtual bool GetSuggestedBindings(XrPath InInteractionProfile, TArray& OutBindings) override; - virtual void AttachActionSets(TSet& OutActionSets) override; - virtual void GetActiveActionSetsForSync(TArray& OutActiveSets) override; - virtual bool GetInteractionProfile(XrInstance InInstance, FString& OutKeyPrefix, XrPath& OutPath, bool& OutHasHaptics) override; - - private: - void CreateHapticActions(); - void DestroyHapticActions(); - - bool bExtFBHapticsPcmAvailable = false; - bool bExtFBAmplitudeEnvelopeAvailable = false; - bool bExtFBTouchControllerProAvailable = false; - - XrInstance Instance = XR_NULL_HANDLE; - XrSession Session = XR_NULL_HANDLE; - - XrActionSet HapticsActionSet = XR_NULL_HANDLE; - - XrAction XrHandHapticVibrationAction = XR_NULL_HANDLE; - - XrPath XrPathLeftHand = XR_NULL_PATH; - XrPath XrPathLeftHandHaptics = XR_NULL_PATH; - XrPath XrPathRightHand = XR_NULL_PATH; - XrPath XrPathRightHandHaptics = XR_NULL_PATH; - XrPath XrPathBothHands[2] = { XR_NULL_PATH, XR_NULL_PATH }; - XrPath XrPathBothHandsHaptics[2] = { XR_NULL_PATH, XR_NULL_PATH }; - - // Used for localized haptics - XrAction XrThumbHapticVibrationAction = XR_NULL_HANDLE; - XrAction XrIndexHapticVibrationAction = XR_NULL_HANDLE; - - XrPath XrQuestProInteractionProfile = XR_NULL_PATH; - XrPath XrPathRightIndexHaptics = XR_NULL_PATH; - XrPath XrPathRightThumbHaptics = XR_NULL_PATH; - XrPath XrPathLeftThumbHaptics = XR_NULL_PATH; - XrPath XrPathLeftIndexHaptics = XR_NULL_PATH; - XrPath XrPathBothThumbsHaptics[2] = { XR_NULL_PATH, XR_NULL_PATH }; - XrPath XrPathBothIndexesHaptics[2] = { XR_NULL_PATH, XR_NULL_PATH }; - }; -} // namespace OculusXRInput diff --git a/Plugins/MetaXR/Source/OculusXRInput/Private/OculusXRInputModule.cpp b/Plugins/MetaXR/Source/OculusXRInput/Private/OculusXRInputModule.cpp deleted file mode 100644 index 517b129..0000000 --- a/Plugins/MetaXR/Source/OculusXRInput/Private/OculusXRInputModule.cpp +++ /dev/null @@ -1,105 +0,0 @@ -// @lint-ignore-every LICENSELINT -// Copyright Epic Games, Inc. All Rights Reserved. - -#include "OculusXRInputModule.h" - -#if OCULUS_INPUT_SUPPORTED_PLATFORMS -#include "OculusXRInput.h" -#include "OculusXRHMDModule.h" - -#define LOCTEXT_NAMESPACE "OculusXRInput" - -//------------------------------------------------------------------------------------------------- -// FOculusXRInputModule -//------------------------------------------------------------------------------------------------- - -OculusXRInput::FInputExtensionPlugin* FOculusXRInputModule::GetInputOpenXRExtension() const -{ - return InputExtensionPlugin.Get(); -} - -OculusXRInput::FHandTrackingExtensionPlugin* FOculusXRInputModule::GetHandTrackingOpenXRExtension() const -{ - return HandTrackingExtensionPlugin.Get(); -} - -OculusXRInput::FInputHapticsExtensionPlugin* FOculusXRInputModule::GetHapticsOpenXRExtension() const -{ - return HapticsExtensionPlugin.Get(); -} - -void FOculusXRInputModule::StartupModule() -{ - IInputDeviceModule::StartupModule(); - OculusXRInput::FOculusXRInput::PreInit(); - - HapticsExtensionPlugin = MakeShareable(new OculusXRInput::FInputHapticsExtensionPlugin()); - HapticsExtensionPlugin->RegisterOpenXRExtensionPlugin(); - HandTrackingExtensionPlugin = MakeShareable(new OculusXRInput::FHandTrackingExtensionPlugin()); - HandTrackingExtensionPlugin->RegisterOpenXRExtensionPlugin(); - InputExtensionPlugin = MakeShareable(new OculusXRInput::FInputExtensionPlugin()); - InputExtensionPlugin->RegisterOpenXRExtensionPlugin(); - TouchProInputExtensionPlugin = MakeShareable(new OculusXRInput::FTouchProInputExtensionPlugin()); - TouchProInputExtensionPlugin->RegisterOpenXRExtensionPlugin(); - TouchPlusInputExtensionPlugin = MakeShareable(new OculusXRInput::FTouchPlusInputExtensionPlugin()); - TouchPlusInputExtensionPlugin->RegisterOpenXRExtensionPlugin(); -} - -void FOculusXRInputModule::ShutdownModule() -{ - OculusXRInput::FOculusXRInput::ShutdownXRFunctionLibrary(); -} - -TSharedPtr FOculusXRInputModule::CreateInputDevice(const TSharedRef& InMessageHandler) -{ - InputExtensionPlugin->SetMessageHandler(InMessageHandler); - HandTrackingExtensionPlugin->SetMessageHandler(InMessageHandler); - if (IOculusXRHMDModule::IsAvailable()) - { - if (FOculusXRHMDModule::Get().PreInit()) - { - TSharedPtr InputDevice(new OculusXRInput::FOculusXRInput(InMessageHandler)); - OculusXRInputDevice = InputDevice; - return InputDevice; - } - // else, they may just not have a oculus headset plugged in (which we have to account for - no need for a warning) - } - else - { - UE_LOG(LogOcInput, Warning, TEXT("OculusXRInput plugin enabled, but OculusXRHMD plugin is not available.")); - } - return nullptr; -} - -uint32 FOculusXRInputModule::GetNumberOfTouchControllers() const -{ - if (OculusXRInputDevice.IsValid()) - { - return OculusXRInputDevice.Pin()->GetNumberOfTouchControllers(); - } - return 0; -} - -uint32 FOculusXRInputModule::GetNumberOfHandControllers() const -{ - if (OculusXRInputDevice.IsValid()) - { - return OculusXRInputDevice.Pin()->GetNumberOfHandControllers(); - } - return 0; -} - -TSharedPtr FOculusXRInputModule::GetInputDevice() const -{ - if (OculusXRInputDevice.IsValid()) - { - return OculusXRInputDevice.Pin(); - } - return nullptr; -} - -#endif // OCULUS_INPUT_SUPPORTED_PLATFORMS - -IMPLEMENT_MODULE(FOculusXRInputModule, OculusXRInput) - -#undef LOCTEXT_NAMESPACE diff --git a/Plugins/MetaXR/Source/OculusXRInput/Private/OculusXRInputModule.h b/Plugins/MetaXR/Source/OculusXRInput/Private/OculusXRInputModule.h deleted file mode 100644 index fbf45f7..0000000 --- a/Plugins/MetaXR/Source/OculusXRInput/Private/OculusXRInputModule.h +++ /dev/null @@ -1,76 +0,0 @@ -// @lint-ignore-every LICENSELINT -// Copyright Epic Games, Inc. All Rights Reserved. - -#pragma once -#include "IInputDevice.h" -#include "IOculusXRInputModule.h" -#include "OculusXRInputExtensionPlugin.h" -#include "OculusXRInputHapticsExtensionPlugin.h" -#include "OculusXRInputHandTrackingExtensionPlugin.h" -#include "OculusXRTouchPlusInputExtensionPlugin.h" -#include "OculusXRTouchProInputExtensionPlugin.h" -#include "Templates/SharedPointer.h" - -#define LOCTEXT_NAMESPACE "OculusXRInput" - -//------------------------------------------------------------------------------------------------- -// FOculusXRInputModule -//------------------------------------------------------------------------------------------------- - -#if OCULUS_INPUT_SUPPORTED_PLATFORMS - -namespace OculusXRInput -{ - class FOculusXRInput; -} - -class FOculusXRInputModule : public IOculusXRInputModule -{ -public: - OculusXRInput::FInputExtensionPlugin* GetInputOpenXRExtension() const; - OculusXRInput::FHandTrackingExtensionPlugin* GetHandTrackingOpenXRExtension() const; - OculusXRInput::FInputHapticsExtensionPlugin* GetHapticsOpenXRExtension() const; - - TWeakPtr OculusXRInputDevice; - - // IInputDeviceModule overrides - virtual void StartupModule() override; - virtual void ShutdownModule() override; - virtual TSharedPtr CreateInputDevice(const TSharedRef& InMessageHandler) override; - - // IOculusXRInputModule overrides - virtual uint32 GetNumberOfTouchControllers() const override; - virtual uint32 GetNumberOfHandControllers() const override; - virtual TSharedPtr GetInputDevice() const override; - -private: - typedef TSharedPtr FHapticsExtensionPluginPtr; - FHapticsExtensionPluginPtr HapticsExtensionPlugin; - typedef TSharedPtr FHandTrackingExtensionPluginPtr; - FHandTrackingExtensionPluginPtr HandTrackingExtensionPlugin; - typedef TSharedPtr FInputExtensionPluginPtr; - FInputExtensionPluginPtr InputExtensionPlugin; - typedef TSharedPtr FTouchProInputExtensionPluginPtr; - FTouchProInputExtensionPluginPtr TouchProInputExtensionPlugin; - typedef TSharedPtr FTouchPlusInputExtensionPluginPtr; - FTouchPlusInputExtensionPluginPtr TouchPlusInputExtensionPlugin; -}; - -#else // OCULUS_INPUT_SUPPORTED_PLATFORMS - -class FOculusXRInputModule : public FDefaultModuleImpl -{ - virtual uint32 GetNumberOfTouchControllers() const - { - return 0; - }; - - virtual uint32 GetNumberOfHandControllers() const - { - return 0; - }; -}; - -#endif // OCULUS_INPUT_SUPPORTED_PLATFORMS - -#undef LOCTEXT_NAMESPACE diff --git a/Plugins/MetaXR/Source/OculusXRInput/Private/OculusXRInputOVR.cpp b/Plugins/MetaXR/Source/OculusXRInput/Private/OculusXRInputOVR.cpp deleted file mode 100644 index b340aee..0000000 --- a/Plugins/MetaXR/Source/OculusXRInput/Private/OculusXRInputOVR.cpp +++ /dev/null @@ -1,125 +0,0 @@ -// Copyright (c) Meta Platforms, Inc. and affiliates. - -#include "OculusXRInputOVR.h" - -#include "Haptics/HapticFeedbackEffect_Base.h" - -namespace OculusXRInput -{ - - FOculusXRInput* GetOculusXRInput() - { - const TSharedPtr OculusXRInput = StaticCastSharedPtr(IOculusXRInputModule::Get().GetInputDevice()); - if (!OculusXRInput) - { - UE_LOG(LogOcInput, Error, TEXT("Failed getting Oculus XR input.")); - return nullptr; - } - return OculusXRInput.Get(); - } - - float FOculusXRInputOVR::GetControllerSampleRateHz(EControllerHand Hand) const - { - float SampleRateHz = 0.f; - const ovrpController OvrpController = (EControllerHand(Hand) == EControllerHand::Left) ? ovrpController_LTouch : ovrpController_RTouch; - if (OVRP_FAILURE(FOculusXRHMDModule::GetPluginWrapper().GetControllerSampleRateHz(OvrpController, &SampleRateHz))) - { - UE_LOG(LogOcInput, Error, TEXT("GetControllerSampleRateHz failed.")); - } - return SampleRateHz; - } - - int FOculusXRInputOVR::GetMaxHapticDuration(EControllerHand Hand) const - { - const ovrpController OvrpController = (EControllerHand(Hand) == EControllerHand::Left) ? ovrpController_LTouch : ovrpController_RTouch; - if (!GetOculusXRInput()->GetOvrpHapticsDesc((int32)Hand)) - return 0; - - return GetOculusXRInput()->OvrpHapticsDesc.MaximumBufferSamplesCount / GetOculusXRInput()->OvrpHapticsDesc.SampleRateHz; - } - - void FOculusXRInputOVR::PlayHapticEffect( - UHapticFeedbackEffect_Base* HapticEffect, EControllerHand Hand, - EOculusXRHandHapticsLocation Location, bool bAppend, float Scale, - bool bLoop) - { - if (HapticEffect) - { - switch (Hand) - { - case EControllerHand::Left: - GetOculusXRInput()->ActiveHapticEffect_Left.Reset(); - GetOculusXRInput()->HapticsDesc_Left.Reset(); - GetOculusXRInput()->ActiveHapticEffect_Left = MakeShareable(new FActiveHapticFeedbackEffect(HapticEffect, Scale, bLoop)); - GetOculusXRInput()->HapticsDesc_Left = MakeShareable(new FOculusXRHapticsDesc(Location, bAppend)); - break; - case EControllerHand::Right: - GetOculusXRInput()->ActiveHapticEffect_Right.Reset(); - GetOculusXRInput()->HapticsDesc_Right.Reset(); - GetOculusXRInput()->ActiveHapticEffect_Right = MakeShareable(new FActiveHapticFeedbackEffect(HapticEffect, Scale, bLoop)); - GetOculusXRInput()->HapticsDesc_Right = MakeShareable(new FOculusXRHapticsDesc(Location, bAppend)); - break; - default: - UE_LOG(LogOcInput, Warning, TEXT("Invalid hand specified (%d) for haptic feedback effect %s"), (int32)Hand, *HapticEffect->GetName()); - break; - } - } - } - - void FOculusXRInputOVR::PlayAmplitudeEnvelopeHapticEffect(EControllerHand Hand, - int SamplesCount, void* Samples, - int InSampleRate) - { - int TimeToSend = GetMaxHapticDuration(Hand); - if (TimeToSend == 0) - { - return; - } - - const ovrpController OvrpController = (EControllerHand(Hand) == EControllerHand::Left) ? ovrpController_LTouch : ovrpController_RTouch; - int SampleRate = (InSampleRate > 0 ? InSampleRate : GetOculusXRInput()->OvrpHapticsDesc.SampleRateHz); - int MaxSamplesCount = TimeToSend * SampleRate; - if (SamplesCount > MaxSamplesCount || SamplesCount < GetOculusXRInput()->OvrpHapticsDesc.MinimumBufferSamplesCount) - { - UE_LOG(LogOcInput, Error, TEXT("Sample count should be between %d and %d which last %d time."), - GetOculusXRInput()->OvrpHapticsDesc.MinimumBufferSamplesCount, MaxSamplesCount, TimeToSend); - } - int WantToSend = FMath::Min(SamplesCount, MaxSamplesCount); - WantToSend = FMath::Max(WantToSend, GetOculusXRInput()->OvrpHapticsDesc.MinimumBufferSamplesCount); - - float* BufferToSend = (float*)FMemory::Malloc(WantToSend * sizeof(*BufferToSend)); - for (int i = 0; i < WantToSend; i++) - { - float Amplitude = ((uint8_t*)Samples)[i] / 255.0f; - Amplitude = FMath::Min(1.0f, Amplitude); - Amplitude = FMath::Max(0.0f, Amplitude); - BufferToSend[i] = Amplitude; - UE_CLOG(OVR_HAP_LOGGING, LogOcInput, Log, TEXT("amplitude, %.3f"), Amplitude); - } - - ovrpHapticsAmplitudeEnvelopeVibration HapticsVibration; - HapticsVibration.Duration = WantToSend / SampleRate; - HapticsVibration.AmplitudeCount = WantToSend; - HapticsVibration.Amplitudes = BufferToSend; - - FOculusXRHMDModule::GetPluginWrapper().SetControllerHapticsAmplitudeEnvelope( - OvrpController, - HapticsVibration); - UE_CLOG(OVR_HAP_LOGGING, LogOcInput, Log, TEXT("HAEHaptics is finished: AmplitudeCount: %d, SampleRate: %d"), - HapticsVibration.AmplitudeCount, - SampleRate); - - if (BufferToSend) - { - FMemory::Free(BufferToSend); - } - } - - void FOculusXRInputOVR::SetHapticsByValue(float Frequency, float Amplitude, EControllerHand Hand, EOculusXRHandHapticsLocation Location) - { - const ovrpController OvrpController = (EControllerHand(Hand) == EControllerHand::Left) ? ovrpController_LTouch : ovrpController_RTouch; - FOculusXRHMDModule::GetPluginWrapper().SetControllerLocalizedVibration(OvrpController, GetOculusXRInput()->GetOVRPHapticsLocation(Location), Frequency, Amplitude); - UE_CLOG(OVR_HAP_LOGGING, LogOcInput, Log, TEXT("LocalizedVibration is finished: Location: %d, Frequency: %f, Amplitude: %f"), (int)(Location), Frequency, Amplitude); - } - -} // namespace OculusXRInput diff --git a/Plugins/MetaXR/Source/OculusXRInput/Private/OculusXRInputOVR.h b/Plugins/MetaXR/Source/OculusXRInput/Private/OculusXRInputOVR.h deleted file mode 100644 index a7f55c8..0000000 --- a/Plugins/MetaXR/Source/OculusXRInput/Private/OculusXRInputOVR.h +++ /dev/null @@ -1,23 +0,0 @@ -// Copyright (c) Meta Platforms, Inc. and affiliates. - -#pragma once -#include "OculusXRInput.h" - -namespace OculusXRInput -{ - class FOculusXRInputOVR : public IOculusXRInputBase - { - public: - virtual void PlayHapticEffect(UHapticFeedbackEffect_Base* HapticEffect, - EControllerHand Hand, - EOculusXRHandHapticsLocation Location = EOculusXRHandHapticsLocation::Hand, - bool bAppend = false, - float Scale = 1.f, - bool bLoop = false) override; - virtual void PlayAmplitudeEnvelopeHapticEffect(EControllerHand Hand, int SamplesCount, void* Samples, int SampleRate = -1) override; - virtual void SetHapticsByValue(float Frequency, float Amplitude, EControllerHand Hand, EOculusXRHandHapticsLocation Location = EOculusXRHandHapticsLocation::Hand) override; - - virtual float GetControllerSampleRateHz(EControllerHand Hand) const override; - virtual int GetMaxHapticDuration(EControllerHand Hand) const override; - }; -} // namespace OculusXRInput diff --git a/Plugins/MetaXR/Source/OculusXRInput/Private/OculusXRInputOpenXR.cpp b/Plugins/MetaXR/Source/OculusXRInput/Private/OculusXRInputOpenXR.cpp deleted file mode 100644 index e338dc5..0000000 --- a/Plugins/MetaXR/Source/OculusXRInput/Private/OculusXRInputOpenXR.cpp +++ /dev/null @@ -1,356 +0,0 @@ -// Copyright (c) Meta Platforms, Inc. and affiliates. - -#include "OculusXRInputOpenXR.h" -#include "Haptics/HapticFeedbackEffect_Base.h" -#include "OculusXRInputExtensionPlugin.h" -#include "OculusXRInputModule.h" -#include "OculusXRInputXRFunctions.h" -#include "OpenXR/OculusXROpenXRUtilities.h" -#include "OpenXRCore.h" - -#include - -namespace OculusXRInput -{ - FOculusXRInputModule* GetInputModule() - { - FOculusXRInputModule* InputModule = static_cast(&FOculusXRInputModule::Get()); - if (!InputModule) - { - UE_LOG(LogOcInput, Error, TEXT("Failed getting Oculus XR input module.")); - return nullptr; - } - return InputModule; - } - - bool InstanceAndSessionAreValid( - const FOculusXRInputModule* InputModule) - { - if (!InputModule->GetHapticsOpenXRExtension()->GetOpenXRInstance() || !InputModule->GetHapticsOpenXRExtension()->GetOpenXRSession()) - { - UE_LOG(LogOcInput, Error, TEXT("Failed getting OpenXR instance or session.")); - return false; - } - return true; - } - - int ControllerHandToHandIndex(EControllerHand Hand) - { - int HandIndex = -1; - switch (Hand) - { - case EControllerHand::Left: - HandIndex = 0; - break; - case EControllerHand::Right: - HandIndex = 1; - break; - default: - UE_LOG(LogOcInput, Error, TEXT("No action defined for %s."), *UEnum::GetValueAsString(Hand)); - } - return HandIndex; - } - - XrAction LocationToXrAction(EOculusXRHandHapticsLocation Location) - { - const FOculusXRInputModule* InputModule = GetInputModule(); - - if (Location != EOculusXRHandHapticsLocation::Hand && !InputModule->GetHapticsOpenXRExtension()->IsTouchControllerProExtensionAvailable()) - { - UE_LOG(LogOcInput, Warning, TEXT("Touch Controller Pro extension is not available.")); - return XR_NULL_HANDLE; - } - - switch (Location) - { - case EOculusXRHandHapticsLocation::Hand: - return InputModule->GetHapticsOpenXRExtension()->GetXrHandHapticVibrationAction(); - case EOculusXRHandHapticsLocation::Thumb: - return InputModule->GetHapticsOpenXRExtension()->GetXrThumbHapticVibrationAction(); - case EOculusXRHandHapticsLocation::Index: - return InputModule->GetHapticsOpenXRExtension()->GetXrIndexHapticVibrationAction(); - default: - UE_LOG(LogOcInput, Warning, TEXT("Invalid location specified (%d)"), (int32)Location); - } - return XR_NULL_HANDLE; - } - - float FOculusXRInputOpenXR::GetControllerSampleRateHz(EControllerHand Hand) const - { - const FOculusXRInputModule* InputModule = GetInputModule(); - if (!InputModule || !InstanceAndSessionAreValid(InputModule)) - { - return 0.f; - } - - if (!InputModule->GetHapticsOpenXRExtension()->IsPCMExtensionAvailable()) - { - UE_LOG(LogOcInput, Warning, TEXT("PCM extension is not available.")); - return 0.f; - } - - const int HandIndex = ControllerHandToHandIndex(Hand); - if (HandIndex == -1) - { - return 0.f; - } - - XrHapticActionInfo HapticActionInfo = { XR_TYPE_HAPTIC_ACTION_INFO }; - HapticActionInfo.action = InputModule->GetHapticsOpenXRExtension()->GetXrHandHapticVibrationAction(); - HapticActionInfo.subactionPath = InputModule->GetHapticsOpenXRExtension()->GetXrHandsSubactionPaths()[HandIndex]; - HapticActionInfo.next = nullptr; - - XrDevicePcmSampleRateGetInfoFB DeviceSampleRate = { XR_TYPE_DEVICE_PCM_SAMPLE_RATE_GET_INFO_FB }; - - const XrResult result = xrGetDeviceSampleRateFB(InputModule->GetHapticsOpenXRExtension()->GetOpenXRSession(), &HapticActionInfo, &DeviceSampleRate); - - if (XR_FAILED(result)) - { - UE_LOG(LogOcInput, Error, TEXT("xrGetDeviceSampleRateFB failed.")); - return 0.f; - } - - return DeviceSampleRate.sampleRate; - } - - int FOculusXRInputOpenXR::GetMaxHapticDuration(EControllerHand Hand) const - { - const float SampleRate = GetControllerSampleRateHz(Hand); - if (SampleRate == 0.f) - { - UE_LOG(LogOcInput, Warning, TEXT("Sample rate equals 0")); - return 0; - } - return XR_MAX_HAPTIC_PCM_BUFFER_SIZE_FB / SampleRate; - } - - void FOculusXRInputOpenXR::Tick(float DeltaTime) - { - if (ActiveHapticEffect_Left.IsValid()) - { - FHapticFeedbackValues LeftHaptics; - const bool bPlaying = ActiveHapticEffect_Left->Update(DeltaTime, LeftHaptics); - if (!bPlaying) - { - ActiveHapticEffect_Left->bLoop ? HapticsDesc_Left->Restart() : HapticsDesc_Left.Reset(); - ActiveHapticEffect_Left->bLoop ? ActiveHapticEffect_Left->Restart() : ActiveHapticEffect_Left.Reset(); - } - - SetHapticFeedbackValues(EControllerHand::Left, LeftHaptics, HapticsDesc_Left.Get()); - } - - if (ActiveHapticEffect_Right.IsValid()) - { - FHapticFeedbackValues RightHaptics; - const bool bPlaying = ActiveHapticEffect_Right->Update(DeltaTime, RightHaptics); - if (!bPlaying) - { - ActiveHapticEffect_Right->bLoop ? HapticsDesc_Right->Restart() : HapticsDesc_Right.Reset(); - ActiveHapticEffect_Right->bLoop ? ActiveHapticEffect_Right->Restart() : ActiveHapticEffect_Right.Reset(); - } - - SetHapticFeedbackValues(EControllerHand::Right, RightHaptics, HapticsDesc_Right.Get()); - } - } - - // Tick will only get called if the object is created in FOculusXRInput::GetOculusXRInputBaseImpl(), so we do not need ETickableTickType::Conditional - ETickableTickType FOculusXRInputOpenXR::GetTickableTickType() const - { - return ETickableTickType::Always; - } - - TStatId FOculusXRInputOpenXR::GetStatId() const - { - RETURN_QUICK_DECLARE_CYCLE_STAT(FOculusXRInputOpenXR, STATGROUP_Tickables); - } - - void FOculusXRInputOpenXR::SetHapticFeedbackValues(EControllerHand Hand, const FHapticFeedbackValues& Values, FOculusXRHapticsDesc* HapticsDesc) - { - FHapticFeedbackBuffer* const HapticBuffer = Values.HapticBuffer; - const bool bHasBuffer = HapticBuffer && HapticBuffer->BufferLength > 0; - - // UHapticFeedbackEffect_SoundWave - if (bHasBuffer) - { - const FOculusXRInputModule* InputModule = GetInputModule(); - if (!InputModule || !InstanceAndSessionAreValid(InputModule)) - { - return; - } - if (!InputModule->GetHapticsOpenXRExtension()->IsPCMExtensionAvailable()) - { - UE_LOG(LogOcInput, Warning, TEXT("PCM extension is not available.")); - return; - } - - int SamplesToSend = 0.036f * HapticBuffer->SamplingRate; // Related to the duration that each PCM haptic batch lasts (36ms) - if (SamplesToSend == 0 || HapticBuffer->SamplesSent == HapticBuffer->BufferLength) - { - return; - } - - // Makes sure we are not overloading it - SamplesToSend = FMath::Min(SamplesToSend, XR_MAX_HAPTIC_PCM_BUFFER_SIZE_FB); - SamplesToSend = FMath::Min(SamplesToSend, (HapticBuffer->BufferLength - HapticBuffer->SamplesSent) / 2); - - uint32_t SamplesConsumed = 0; - std::vector PCMBuffer(SamplesToSend); - for (int i = 0; i < SamplesToSend; i++) - { - const uint32 DataIndex = HapticBuffer->CurrentPtr + (i * 2); - const int16* const RawData = reinterpret_cast(&HapticBuffer->RawData[DataIndex]); - float SampleValue = (*RawData * HapticBuffer->ScaleFactor) / INT16_MAX; - SampleValue = FMath::Min(1.0f, SampleValue); - SampleValue = FMath::Max(-1.0f, SampleValue); - PCMBuffer[i] = SampleValue; - } - - XrHapticActionInfo HapticActionInfo = { XR_TYPE_HAPTIC_ACTION_INFO }; - HapticActionInfo.action = LocationToXrAction(HapticsDesc->Location); - HapticActionInfo.subactionPath = InputModule->GetHapticsOpenXRExtension()->GetXrHandsSubactionPaths()[ControllerHandToHandIndex(Hand)]; - - XrHapticPcmVibrationFB HapticPcmVibration = { XR_TYPE_HAPTIC_PCM_VIBRATION_FB }; - HapticPcmVibration.buffer = PCMBuffer.data(); - HapticPcmVibration.bufferSize = SamplesToSend; - HapticPcmVibration.sampleRate = HapticBuffer->SamplingRate; - HapticPcmVibration.samplesConsumed = &SamplesConsumed; - HapticPcmVibration.append = HapticsDesc->bIsFirstCall ? HapticsDesc->bAppend : true; - - const XrResult result = xrApplyHapticFeedback(InputModule->GetHapticsOpenXRExtension()->GetOpenXRSession(), &HapticActionInfo, reinterpret_cast(&HapticPcmVibration)); - - if (XR_FAILED(result)) - { - UE_LOG(LogOcInput, Error, TEXT("xrApplyHapticFeedback failed for PCM haptics with result %s"), OpenXRResultToString(result)); - } - - HapticsDesc->bIsFirstCall = false; - HapticBuffer->CurrentPtr = FMath::Min(HapticBuffer->CurrentPtr + SamplesConsumed * 2, static_cast(HapticBuffer->BufferLength)); - HapticBuffer->SamplesSent = FMath::Min(HapticBuffer->SamplesSent + SamplesConsumed * 2, static_cast(HapticBuffer->BufferLength)); - } - // UHapticFeedbackEffect_Curve and UHapticFeedbackEffect_Buffer - else - { - SetHapticsByValue(Values.Frequency, Values.Amplitude, Hand, HapticsDesc ? HapticsDesc->Location : EOculusXRHandHapticsLocation::Hand); - } - } - - void FOculusXRInputOpenXR::PlayHapticEffect( - UHapticFeedbackEffect_Base* HapticEffect, EControllerHand Hand, - EOculusXRHandHapticsLocation Location, bool bAppend, float Scale, - bool bLoop) - { - if (!HapticEffect) - { - return; - } - switch (Hand) - { - case EControllerHand::Left: - ActiveHapticEffect_Left.Reset(); - ActiveHapticEffect_Left = MakeShareable(new FActiveHapticFeedbackEffect(HapticEffect, Scale, bLoop)); - HapticsDesc_Left.Reset(); - HapticsDesc_Left = MakeShareable(new FOculusXRHapticsDesc(Location, bAppend)); - break; - case EControllerHand::Right: - ActiveHapticEffect_Right.Reset(); - ActiveHapticEffect_Right = MakeShareable(new FActiveHapticFeedbackEffect(HapticEffect, Scale, bLoop)); - HapticsDesc_Right.Reset(); - HapticsDesc_Right = MakeShareable(new FOculusXRHapticsDesc(Location, bAppend)); - break; - default: - UE_LOG(LogOcInput, Warning, TEXT("Invalid hand specified (%d) for haptic feedback effect %s"), (int32)Hand, *HapticEffect->GetName()); - break; - } - } - - void FOculusXRInputOpenXR::PlayAmplitudeEnvelopeHapticEffect(EControllerHand Hand, - int SamplesCount, - void* Samples, - int InSampleRate) - { - const FOculusXRInputModule* InputModule = GetInputModule(); - if (!InputModule || !InstanceAndSessionAreValid(InputModule)) - { - return; - } - - if (!InputModule->GetHapticsOpenXRExtension()->IsAmplitudeEnvelopeExtensionAvailable()) - { - UE_LOG(LogOcInput, Warning, TEXT("Amplitude Envelope extension is not available.")); - return; - } - - const int MaxTimeToSend = GetMaxHapticDuration(Hand); - if (MaxTimeToSend == 0) - { - return; - } - - const int SampleRate = InSampleRate > 0 ? InSampleRate : GetControllerSampleRateHz(Hand); - if (SamplesCount > XR_MAX_HAPTIC_AMPLITUDE_ENVELOPE_SAMPLES_FB || SamplesCount < 1) - { - UE_LOG(LogOcInput, Warning, TEXT("Sample count should be between 1 and %d which last %d seconds."), XR_MAX_HAPTIC_PCM_BUFFER_SIZE_FB, MaxTimeToSend); - } - - const int AmplitudesCount = FMath::Min(SamplesCount, static_cast(XR_MAX_HAPTIC_AMPLITUDE_ENVELOPE_SAMPLES_FB)); - - std::vector AmplitudesToSend(AmplitudesCount); - for (int i = 0; i < AmplitudesCount; i++) - { - float Amplitude = static_cast(Samples)[i] / 255.0f; - Amplitude = FMath::Min(1.0f, Amplitude); - Amplitude = FMath::Max(0.0f, Amplitude); - AmplitudesToSend[i] = Amplitude; - } - - XrHapticActionInfo HapticActionInfo = { XR_TYPE_HAPTIC_ACTION_INFO }; - HapticActionInfo.action = InputModule->GetHapticsOpenXRExtension()->GetXrHandHapticVibrationAction(); - HapticActionInfo.subactionPath = InputModule->GetHapticsOpenXRExtension()->GetXrHandsSubactionPaths()[ControllerHandToHandIndex(Hand)]; - - XrHapticAmplitudeEnvelopeVibrationFB HapticAmplitudeEnvelopeVibration = { XR_TYPE_HAPTIC_AMPLITUDE_ENVELOPE_VIBRATION_FB }; - HapticAmplitudeEnvelopeVibration.duration = OculusXR::ToXrDuration(static_cast(AmplitudesCount) / SampleRate); - HapticAmplitudeEnvelopeVibration.amplitudeCount = static_cast(AmplitudesCount); - HapticAmplitudeEnvelopeVibration.amplitudes = AmplitudesToSend.data(); - - const XrResult result = xrApplyHapticFeedback(InputModule->GetHapticsOpenXRExtension()->GetOpenXRSession(), &HapticActionInfo, reinterpret_cast(&HapticAmplitudeEnvelopeVibration)); - - if (XR_FAILED(result)) - { - UE_LOG(LogOcInput, Error, TEXT("xrApplyHapticFeedback failed for amplitude envelope haptics with result %s"), OpenXRResultToString(result)); - } - } - - void FOculusXRInputOpenXR::SetHapticsByValue(float Frequency, float Amplitude, EControllerHand Hand, EOculusXRHandHapticsLocation Location) - { - const FOculusXRInputModule* InputModule = GetInputModule(); - if (!InputModule || !InstanceAndSessionAreValid(InputModule)) - { - return; - } - - const int HandIndex = ControllerHandToHandIndex(Hand); - if (HandIndex == -1) - { - return; - } - - XrHapticActionInfo HapticActionInfo = { XR_TYPE_HAPTIC_ACTION_INFO }; - HapticActionInfo.action = LocationToXrAction(Location); - HapticActionInfo.subactionPath = InputModule->GetHapticsOpenXRExtension()->GetXrHandsSubactionPaths()[ControllerHandToHandIndex(Hand)]; - - XrHapticVibration Vibration = { XR_TYPE_HAPTIC_VIBRATION }; - Vibration.amplitude = Amplitude; - Vibration.frequency = Frequency; - Vibration.duration = 2000000000; // 2 second duration, this is to give enough - // time for a new signal to be received without - // stopping the previous vibration - - const XrResult Result = xrApplyHapticFeedback(InputModule->GetHapticsOpenXRExtension()->GetOpenXRSession(), &HapticActionInfo, reinterpret_cast(&Vibration)); - - if (XR_FAILED(Result)) - { - UE_LOG(LogOcInput, Error, TEXT("xrApplyHapticFeedback failed with result %s"), OpenXRResultToString(Result)); - } - } - -} // namespace OculusXRInput diff --git a/Plugins/MetaXR/Source/OculusXRInput/Private/OculusXRInputOpenXR.h b/Plugins/MetaXR/Source/OculusXRInput/Private/OculusXRInputOpenXR.h deleted file mode 100644 index 2a9d2ff..0000000 --- a/Plugins/MetaXR/Source/OculusXRInput/Private/OculusXRInputOpenXR.h +++ /dev/null @@ -1,39 +0,0 @@ -// Copyright (c) Meta Platforms, Inc. and affiliates. - -#pragma once -#include "OculusXRInput.h" - -class FOculusXRInputModule; - -namespace OculusXRInput -{ - class FOculusXRInputOpenXR : public IOculusXRInputBase, public FTickableGameObject - { - public: - // IOculusXRInputBase overrides - virtual void PlayHapticEffect(UHapticFeedbackEffect_Base* HapticEffect, - EControllerHand Hand, - EOculusXRHandHapticsLocation Location = EOculusXRHandHapticsLocation::Hand, - bool bAppend = false, - float Scale = 1.f, - bool bLoop = false) override; - virtual void PlayAmplitudeEnvelopeHapticEffect(EControllerHand Hand, int SamplesCount, void* Samples, int SampleRate = -1) override; - virtual void SetHapticsByValue(float Frequency, float Amplitude, EControllerHand Hand, EOculusXRHandHapticsLocation Location = EOculusXRHandHapticsLocation::Hand) override; - - virtual float GetControllerSampleRateHz(EControllerHand Hand) const override; - virtual int GetMaxHapticDuration(EControllerHand Hand) const override; - - // FTickableGameObject overrides - virtual void Tick(float DeltaTime) override; - virtual ETickableTickType GetTickableTickType() const override; - virtual TStatId GetStatId() const override; - - private: - void SetHapticFeedbackValues(EControllerHand Hand, const FHapticFeedbackValues& Values, FOculusXRHapticsDesc* HapticsDesc); - - TSharedPtr ActiveHapticEffect_Left; - TSharedPtr ActiveHapticEffect_Right; - TSharedPtr HapticsDesc_Left; - TSharedPtr HapticsDesc_Right; - }; -} // namespace OculusXRInput diff --git a/Plugins/MetaXR/Source/OculusXRInput/Private/OculusXRInputState.h b/Plugins/MetaXR/Source/OculusXRInput/Private/OculusXRInputState.h deleted file mode 100644 index ad6547f..0000000 --- a/Plugins/MetaXR/Source/OculusXRInput/Private/OculusXRInputState.h +++ /dev/null @@ -1,555 +0,0 @@ -// @lint-ignore-every LICENSELINT -// Copyright Epic Games, Inc. All Rights Reserved. - -#pragma once -#include "IOculusXRInputModule.h" - -#if OCULUS_INPUT_SUPPORTED_PLATFORMS -#include "IMotionController.h" -#include "InputCoreTypes.h" -#include "OculusXRInputFunctionLibrary.h" -#include "GenericPlatform/GenericApplicationMessageHandler.h" - -namespace OculusXRInput -{ - - //------------------------------------------------------------------------------------------------- - // Button names - //------------------------------------------------------------------------------------------------- - - enum class EOculusTouchControllerButton - { - // NOTE: The Trigger and Grip digital buttons are synthetic. Oculus hardware doesn't support a digital press for these - Trigger, - Grip, - - XA, - YB, - Thumbstick, - - Thumbstick_Up, - Thumbstick_Down, - Thumbstick_Left, - Thumbstick_Right, - - Menu, - - Thumbstick_Touch, - Trigger_Touch, - XA_Touch, - YB_Touch, - - /** Total number of controller buttons */ - TotalButtonCount - }; - - enum class EOculusRemoteControllerButton - { - DPad_Up, - DPad_Down, - DPad_Left, - DPad_Right, - - Enter, - Back, - - VolumeUp, - VolumeDown, - Home, - - /** Total number of controller buttons */ - TotalButtonCount - }; - - enum class EOculusTouchCapacitiveAxes - { - Thumbstick, - Trigger, - XA, - YB, - IndexPointing, - ThumbUp, - ThumbRest, - - /** Total number of capacitive axes */ - TotalAxisCount - }; - - enum class EOculusHandButton - { - Thumb, - Index, - Middle, - Ring, - Pinky, - System, - Menu, - TotalButtonCount - }; - - enum class EOculusHandAxes - { - Thumb, - Index, - Middle, - Ring, - Pinky, - TotalAxisCount - }; - - //------------------------------------------------------------------------------------------------- - // FOculusKey - //------------------------------------------------------------------------------------------------- - - struct FOculusKey - { - static const FKey OculusTouch_Left_Thumbstick; - static const FKey OculusTouch_Left_Trigger; - static const FKey OculusTouch_Left_FaceButton1; // X or A - static const FKey OculusTouch_Left_FaceButton2; // Y or B - static const FKey OculusTouch_Left_IndexPointing; - static const FKey OculusTouch_Left_Trigger_Proximity; - static const FKey OculusTouch_Left_ThumbUp; - static const FKey OculusTouch_Left_Thumb_Proximity; - static const FKey OculusTouch_Left_ThumbRest; - static const FKey OculusTouch_Left_ThumbRest_Force; - static const FKey OculusTouch_Left_Stylus_Force; - static const FKey OculusTouch_Left_IndexTrigger_Curl; - static const FKey OculusTouch_Left_IndexTrigger_Slide; - static const FKey OculusTouch_Left_IndexTrigger_Force; - - static const FKey OculusTouch_Right_Thumbstick; - static const FKey OculusTouch_Right_Trigger; - static const FKey OculusTouch_Right_FaceButton1; // X or A - static const FKey OculusTouch_Right_FaceButton2; // Y or B - static const FKey OculusTouch_Right_IndexPointing; - static const FKey OculusTouch_Right_Trigger_Proximity; - static const FKey OculusTouch_Right_ThumbUp; - static const FKey OculusTouch_Right_Thumb_Proximity; - static const FKey OculusTouch_Right_ThumbRest; - static const FKey OculusTouch_Right_ThumbRest_Force; - static const FKey OculusTouch_Right_Stylus_Force; - static const FKey OculusTouch_Right_IndexTrigger_Curl; - static const FKey OculusTouch_Right_IndexTrigger_Slide; - static const FKey OculusTouch_Right_IndexTrigger_Force; - - static const FKey OculusRemote_DPad_Up; - static const FKey OculusRemote_DPad_Down; - static const FKey OculusRemote_DPad_Left; - static const FKey OculusRemote_DPad_Right; - - static const FKey OculusRemote_Enter; - static const FKey OculusRemote_Back; - - static const FKey OculusRemote_VolumeUp; - static const FKey OculusRemote_VolumeDown; - static const FKey OculusRemote_Home; - - static const FKey OculusHand_Left_ThumbPinch; - static const FKey OculusHand_Left_IndexPinch; - static const FKey OculusHand_Left_MiddlePinch; - static const FKey OculusHand_Left_RingPinch; - static const FKey OculusHand_Left_PinkyPinch; - - static const FKey OculusHand_Right_ThumbPinch; - static const FKey OculusHand_Right_IndexPinch; - static const FKey OculusHand_Right_MiddlePinch; - static const FKey OculusHand_Right_RingPinch; - static const FKey OculusHand_Right_PinkyPinch; - - static const FKey OculusHand_Left_SystemGesture; - static const FKey OculusHand_Right_SystemGesture; - - static const FKey OculusHand_Left_ThumbPinchStrength; - static const FKey OculusHand_Left_IndexPinchStrength; - static const FKey OculusHand_Left_MiddlePinchStrength; - static const FKey OculusHand_Left_RingPinchStrength; - static const FKey OculusHand_Left_PinkyPinchStrength; - - static const FKey OculusHand_Right_ThumbPinchStrength; - static const FKey OculusHand_Right_IndexPinchStrength; - static const FKey OculusHand_Right_MiddlePinchStrength; - static const FKey OculusHand_Right_RingPinchStrength; - static const FKey OculusHand_Right_PinkyPinchStrength; - }; - - //------------------------------------------------------------------------------------------------- - // FOculusKeyNames - //------------------------------------------------------------------------------------------------- - - struct FOculusKeyNames - { - typedef FName Type; - - static const FName OculusTouch_Left_Thumbstick; - static const FName OculusTouch_Left_Trigger; - static const FName OculusTouch_Left_FaceButton1; // X or A - static const FName OculusTouch_Left_FaceButton2; // Y or B - static const FName OculusTouch_Left_IndexPointing; - static const FName OculusTouch_Left_Trigger_Proximity; - static const FName OculusTouch_Left_ThumbUp; - static const FName OculusTouch_Left_Thumb_Proximity; - static const FName OculusTouch_Left_ThumbRest; - - static const FName OculusTouch_Right_Thumbstick; - static const FName OculusTouch_Right_Trigger; - static const FName OculusTouch_Right_FaceButton1; // X or A - static const FName OculusTouch_Right_FaceButton2; // Y or B - static const FName OculusTouch_Right_IndexPointing; - static const FName OculusTouch_Right_Trigger_Proximity; - static const FName OculusTouch_Right_ThumbUp; - static const FName OculusTouch_Right_Thumb_Proximity; - static const FName OculusTouch_Right_ThumbRest; - - static const FName OculusRemote_DPad_Up; - static const FName OculusRemote_DPad_Down; - static const FName OculusRemote_DPad_Left; - static const FName OculusRemote_DPad_Right; - - static const FName OculusRemote_Enter; - static const FName OculusRemote_Back; - - static const FName OculusRemote_VolumeUp; - static const FName OculusRemote_VolumeDown; - static const FName OculusRemote_Home; - - static const FName OculusHand_Left_ThumbPinch; - static const FName OculusHand_Left_IndexPinch; - static const FName OculusHand_Left_MiddlePinch; - static const FName OculusHand_Left_RingPinch; - static const FName OculusHand_Left_PinkyPinch; - - static const FName OculusHand_Right_ThumbPinch; - static const FName OculusHand_Right_IndexPinch; - static const FName OculusHand_Right_MiddlePinch; - static const FName OculusHand_Right_RingPinch; - static const FName OculusHand_Right_PinkyPinch; - - static const FName OculusHand_Left_SystemGesture; - static const FName OculusHand_Right_SystemGesture; - - static const FName OculusHand_Left_ThumbPinchStrength; - static const FName OculusHand_Left_IndexPinchStrength; - static const FName OculusHand_Left_MiddlePinchStrength; - static const FName OculusHand_Left_RingPinchStrength; - static const FName OculusHand_Left_PinkyPinchStrength; - - static const FName OculusHand_Right_ThumbPinchStrength; - static const FName OculusHand_Right_IndexPinchStrength; - static const FName OculusHand_Right_MiddlePinchStrength; - static const FName OculusHand_Right_RingPinchStrength; - static const FName OculusHand_Right_PinkyPinchStrength; - }; - - //------------------------------------------------------------------------------------------------- - // FOculusButtonState - Digital button state - //------------------------------------------------------------------------------------------------- - - struct FOculusButtonState - { - /** The Unreal button this maps to. Different depending on whether this is the Left or Right hand controller */ - FName Key; - - /** The Unreal button this maps to. Different depending on whether this is the Left or Right hand controller */ - FName EmulatedKey; - - /** Whether we're pressed or not. While pressed, we will generate repeat presses on a timer */ - bool bIsPressed; - - /** Next time a repeat event should be generated for each button */ - double NextRepeatTime; - - /** Default constructor that just sets sensible defaults */ - FOculusButtonState() - : Key(NAME_None), EmulatedKey(NAME_None), bIsPressed(false), NextRepeatTime(0.0) - { - } - }; - - //------------------------------------------------------------------------------------------------- - // FOculusTouchCapacitiveState - Capacitive Axis State - //------------------------------------------------------------------------------------------------- - - struct FOculusAxisState - { - /** The axis that this button state maps to */ - FName Axis; - - /** How close the finger is to this button, from 0.f to 1.f */ - float State; - - FOculusAxisState() - : Axis(NAME_None) - , State(0.f) - { - } - }; - - struct FOculusControllerState - { - /** True if the device is connected, otherwise false */ - bool bIsConnected; - - /** True if position is being tracked, otherwise false */ - bool bIsPositionTracked; - - /** True if position is valid (tracked or estimated), otherwise false */ - bool bIsPositionValid; - - /** True if orientation is being tracked, otherwise false */ - bool bIsOrientationTracked; - - /** True if orientation is valid (tracked or estimated), otherwise false */ - bool bIsOrientationValid; - - FOculusControllerState() - : bIsConnected(false), bIsPositionTracked(false), bIsPositionValid(false), bIsOrientationTracked(false), bIsOrientationValid(false) - { - } - }; - - //------------------------------------------------------------------------------------------------- - // FOculusTouchControllerState - Input state for an Oculus motion controller - //------------------------------------------------------------------------------------------------- - - struct FOculusTouchControllerState : FOculusControllerState - { - /** Analog trigger */ - float TriggerAxis; - - /** Grip trigger */ - float GripAxis; - - /** Thumbstick */ - FVector2D ThumbstickAxes; - - /** Thumbstick */ - FVector2D TouchpadAxes; - - /** Button states */ - FOculusButtonState Buttons[(int32)EOculusTouchControllerButton::TotalButtonCount]; - - /** Capacitive Touch axes */ - FOculusAxisState CapacitiveAxes[(int32)EOculusTouchCapacitiveAxes::TotalAxisCount]; - - /** Thumb Rest Force **/ - float ThumbRestForce; - - /** Stylus tip**/ - float StylusForce; - - /** Index trigger Curl**/ - float IndexTriggerCurl; - - /** Index trigger Slide**/ - float IndexTriggerSlide; - - /** Second stage Index trigger force **/ - float IndexTriggerForce; - - /** Whether or not we're playing a haptic effect. If true, force feedback calls will be early-outed in favor of the haptic effect */ - bool bPlayingHapticEffect; - - /** Haptic frequency (zero to disable) */ - float HapticFrequency; - - /** Haptic amplitude (zero to disable) */ - float HapticAmplitude; - - /** Force feedback haptic frequency (zero to disable) */ - float ForceFeedbackHapticFrequency; - - /** Force feedback haptic amplitude (zero to disable) */ - float ForceFeedbackHapticAmplitude; - - /** Number of times that controller was recentered (for mobile controllers) */ - int RecenterCount; - - public: - FHapticFeedbackBuffer ResampledHapticBuffer; - void ResampleHapticBufferData(const FHapticFeedbackBuffer& HapticBuffer, TMap>>& ResampledRawDataCache); - - /** Explicit constructor sets up sensible defaults */ - FOculusTouchControllerState(const EControllerHand Hand) - : TriggerAxis(0.0f), GripAxis(0.0f), ThumbstickAxes(FVector2D::ZeroVector), bPlayingHapticEffect(false), HapticFrequency(0.0f), HapticAmplitude(0.0f), ForceFeedbackHapticFrequency(0.0f), ForceFeedbackHapticAmplitude(0.0f), RecenterCount(0) - { - for (FOculusButtonState& Button : Buttons) - { - Button.bIsPressed = false; - Button.NextRepeatTime = 0.0; - } - - Buttons[(int32)EOculusTouchControllerButton::Trigger].Key = (Hand == EControllerHand::Left) ? EKeys::OculusTouch_Left_Trigger_Click.GetFName() : EKeys::OculusTouch_Right_Trigger_Click.GetFName(); - Buttons[(int32)EOculusTouchControllerButton::Grip].Key = (Hand == EControllerHand::Left) ? EKeys::OculusTouch_Left_Grip_Click.GetFName() : EKeys::OculusTouch_Right_Grip_Click.GetFName(); - Buttons[(int32)EOculusTouchControllerButton::Thumbstick].Key = (Hand == EControllerHand::Left) ? EKeys::OculusTouch_Left_Thumbstick_Click.GetFName() : EKeys::OculusTouch_Right_Thumbstick_Click.GetFName(); - Buttons[(int32)EOculusTouchControllerButton::XA].Key = (Hand == EControllerHand::Left) ? EKeys::OculusTouch_Left_X_Click.GetFName() : EKeys::OculusTouch_Right_A_Click.GetFName(); - Buttons[(int32)EOculusTouchControllerButton::YB].Key = (Hand == EControllerHand::Left) ? EKeys::OculusTouch_Left_Y_Click.GetFName() : EKeys::OculusTouch_Right_B_Click.GetFName(); - Buttons[(int32)EOculusTouchControllerButton::Thumbstick_Up].Key = (Hand == EControllerHand::Left) ? EKeys::OculusTouch_Left_Thumbstick_Up.GetFName() : EKeys::OculusTouch_Right_Thumbstick_Up.GetFName(); - Buttons[(int32)EOculusTouchControllerButton::Thumbstick_Down].Key = (Hand == EControllerHand::Left) ? EKeys::OculusTouch_Left_Thumbstick_Down.GetFName() : EKeys::OculusTouch_Right_Thumbstick_Down.GetFName(); - Buttons[(int32)EOculusTouchControllerButton::Thumbstick_Left].Key = (Hand == EControllerHand::Left) ? EKeys::OculusTouch_Left_Thumbstick_Left.GetFName() : EKeys::OculusTouch_Right_Thumbstick_Left.GetFName(); - Buttons[(int32)EOculusTouchControllerButton::Thumbstick_Right].Key = (Hand == EControllerHand::Left) ? EKeys::OculusTouch_Left_Thumbstick_Right.GetFName() : EKeys::OculusTouch_Right_Thumbstick_Right.GetFName(); - - Buttons[(int32)EOculusTouchControllerButton::Menu].Key = (Hand == EControllerHand::Left) ? EKeys::OculusTouch_Left_Menu_Click.GetFName() : FName("OculusTouch_Right_System_Click"); - - Buttons[(int32)EOculusTouchControllerButton::Thumbstick_Touch].Key = (Hand == EControllerHand::Left) ? EKeys::OculusTouch_Left_Thumbstick_Touch.GetFName() : EKeys::OculusTouch_Right_Thumbstick_Touch.GetFName(); - Buttons[(int32)EOculusTouchControllerButton::Trigger_Touch].Key = (Hand == EControllerHand::Left) ? EKeys::OculusTouch_Left_Trigger_Touch.GetFName() : EKeys::OculusTouch_Right_Trigger_Touch.GetFName(); - Buttons[(int32)EOculusTouchControllerButton::XA_Touch].Key = (Hand == EControllerHand::Left) ? EKeys::OculusTouch_Left_X_Touch.GetFName() : EKeys::OculusTouch_Right_A_Touch.GetFName(); - Buttons[(int32)EOculusTouchControllerButton::YB_Touch].Key = (Hand == EControllerHand::Left) ? EKeys::OculusTouch_Left_Y_Touch.GetFName() : EKeys::OculusTouch_Right_B_Touch.GetFName(); - - CapacitiveAxes[(int32)EOculusTouchCapacitiveAxes::Thumbstick].Axis = (Hand == EControllerHand::Left) ? FOculusKeyNames::OculusTouch_Left_Thumbstick : FOculusKeyNames::OculusTouch_Right_Thumbstick; - CapacitiveAxes[(int32)EOculusTouchCapacitiveAxes::Trigger].Axis = (Hand == EControllerHand::Left) ? FOculusKeyNames::OculusTouch_Left_Trigger : FOculusKeyNames::OculusTouch_Right_Trigger; - CapacitiveAxes[(int32)EOculusTouchCapacitiveAxes::XA].Axis = (Hand == EControllerHand::Left) ? FOculusKeyNames::OculusTouch_Left_FaceButton1 : FOculusKeyNames::OculusTouch_Right_FaceButton1; - CapacitiveAxes[(int32)EOculusTouchCapacitiveAxes::YB].Axis = (Hand == EControllerHand::Left) ? FOculusKeyNames::OculusTouch_Left_FaceButton2 : FOculusKeyNames::OculusTouch_Right_FaceButton2; - CapacitiveAxes[(int32)EOculusTouchCapacitiveAxes::IndexPointing].Axis = (Hand == EControllerHand::Left) ? FOculusKeyNames::OculusTouch_Left_IndexPointing : FOculusKeyNames::OculusTouch_Right_IndexPointing; - CapacitiveAxes[(int32)EOculusTouchCapacitiveAxes::ThumbUp].Axis = (Hand == EControllerHand::Left) ? FOculusKeyNames::OculusTouch_Left_ThumbUp : FOculusKeyNames::OculusTouch_Right_ThumbUp; - CapacitiveAxes[(int32)EOculusTouchCapacitiveAxes::ThumbRest].Axis = (Hand == EControllerHand::Left) ? FOculusKeyNames::OculusTouch_Left_ThumbRest : FOculusKeyNames::OculusTouch_Right_ThumbRest; - } - - /** Default constructor does nothing. Don't use it. This only exists because we cannot initialize an array of objects with no default constructor on non-C++ 11 compliant compilers (VS 2013) */ - FOculusTouchControllerState() - { - } - }; - - //------------------------------------------------------------------------------------------------- - // FOculusHandControllerState - Input state for an Oculus Hands - //------------------------------------------------------------------------------------------------- - - struct FOculusHandControllerState : FOculusControllerState - { - /** True if the pointer pose for hands is valid */ - bool bIsPointerPoseValid; - - /** True if the current hand is the dominant hand */ - bool bIsDominantHand; - - /** Scale of the hand */ - float HandScale; - - /** Pose of the pointer */ - FTransform PointerPose; - - /** Tracking confidence of hand tracking */ - EOculusXRTrackingConfidence TrackingConfidence; - - /** Finger Pinch States **/ - FOculusButtonState HandButtons[(int32)EOculusHandButton::TotalButtonCount]; - - /** Finger Pinch Strength States **/ - FOculusAxisState HandAxes[(int32)EOculusHandAxes::TotalAxisCount]; - - /** Finger Confidences **/ - EOculusXRTrackingConfidence FingerConfidences[(int32)EOculusHandAxes::TotalAxisCount] = {}; - - FQuat BoneRotations[(int32)EOculusXRBone::Bone_Max]; - - FOculusHandControllerState(const EControllerHand Hand) - { - TrackingConfidence = EOculusXRTrackingConfidence::Low; - bIsPointerPoseValid = false; - bIsDominantHand = false; - HandScale = 0.0f; - PointerPose = FTransform::Identity; - - for (FOculusButtonState& Button : HandButtons) - { - Button.bIsPressed = false; - Button.NextRepeatTime = 0.0; - } - - for (int32 i = 0; i < (int32)EOculusXRBone::Bone_Max; i++) - { - BoneRotations[i] = FQuat::Identity; - } - - HandButtons[(int32)EOculusHandButton::Thumb].Key = (Hand == EControllerHand::Left) ? FOculusKeyNames::OculusHand_Left_ThumbPinch : FOculusKeyNames::OculusHand_Right_ThumbPinch; - HandButtons[(int32)EOculusHandButton::Index].Key = (Hand == EControllerHand::Left) ? FOculusKeyNames::OculusHand_Left_IndexPinch : FOculusKeyNames::OculusHand_Right_IndexPinch; - HandButtons[(int32)EOculusHandButton::Middle].Key = (Hand == EControllerHand::Left) ? FOculusKeyNames::OculusHand_Left_MiddlePinch : FOculusKeyNames::OculusHand_Right_MiddlePinch; - HandButtons[(int32)EOculusHandButton::Ring].Key = (Hand == EControllerHand::Left) ? FOculusKeyNames::OculusHand_Left_RingPinch : FOculusKeyNames::OculusHand_Right_RingPinch; - HandButtons[(int32)EOculusHandButton::Pinky].Key = (Hand == EControllerHand::Left) ? FOculusKeyNames::OculusHand_Left_PinkyPinch : FOculusKeyNames::OculusHand_Right_PinkyPinch; - HandButtons[(int32)EOculusHandButton::System].Key = (Hand == EControllerHand::Left) ? FOculusKeyNames::OculusHand_Left_SystemGesture : FOculusKeyNames::OculusHand_Right_SystemGesture; - HandButtons[(int32)EOculusHandButton::Menu].Key = (Hand == EControllerHand::Left) ? FGamepadKeyNames::SpecialLeft : FGamepadKeyNames::SpecialRight; - - HandAxes[(int32)EOculusHandAxes::Thumb].Axis = (Hand == EControllerHand::Left) ? FOculusKeyNames::OculusHand_Left_ThumbPinchStrength : FOculusKeyNames::OculusHand_Right_ThumbPinchStrength; - HandAxes[(int32)EOculusHandAxes::Index].Axis = (Hand == EControllerHand::Left) ? FOculusKeyNames::OculusHand_Left_IndexPinchStrength : FOculusKeyNames::OculusHand_Right_IndexPinchStrength; - HandAxes[(int32)EOculusHandAxes::Middle].Axis = (Hand == EControllerHand::Left) ? FOculusKeyNames::OculusHand_Left_MiddlePinchStrength : FOculusKeyNames::OculusHand_Right_MiddlePinchStrength; - HandAxes[(int32)EOculusHandAxes::Ring].Axis = (Hand == EControllerHand::Left) ? FOculusKeyNames::OculusHand_Left_RingPinchStrength : FOculusKeyNames::OculusHand_Right_RingPinchStrength; - HandAxes[(int32)EOculusHandAxes::Pinky].Axis = (Hand == EControllerHand::Left) ? FOculusKeyNames::OculusHand_Left_PinkyPinchStrength : FOculusKeyNames::OculusHand_Right_PinkyPinchStrength; - } - - FOculusHandControllerState() - { - } - }; - - //------------------------------------------------------------------------------------------------- - // FOculusRemoteControllerState - //------------------------------------------------------------------------------------------------- - - struct FOculusRemoteControllerState - { - /** Button states */ - FOculusButtonState Buttons[(int32)EOculusRemoteControllerButton::TotalButtonCount]; - - FOculusRemoteControllerState() - { - for (FOculusButtonState& Button : Buttons) - { - Button.bIsPressed = false; - Button.NextRepeatTime = 0.0; - } - - Buttons[(int32)EOculusRemoteControllerButton::DPad_Up].Key = FOculusKeyNames::OculusRemote_DPad_Up; - Buttons[(int32)EOculusRemoteControllerButton::DPad_Down].Key = FOculusKeyNames::OculusRemote_DPad_Down; - Buttons[(int32)EOculusRemoteControllerButton::DPad_Left].Key = FOculusKeyNames::OculusRemote_DPad_Left; - Buttons[(int32)EOculusRemoteControllerButton::DPad_Right].Key = FOculusKeyNames::OculusRemote_DPad_Right; - Buttons[(int32)EOculusRemoteControllerButton::Enter].Key = FOculusKeyNames::OculusRemote_Enter; - Buttons[(int32)EOculusRemoteControllerButton::Back].Key = FOculusKeyNames::OculusRemote_Back; - - Buttons[(int32)EOculusRemoteControllerButton::VolumeUp].Key = FOculusKeyNames::OculusRemote_VolumeUp; - Buttons[(int32)EOculusRemoteControllerButton::VolumeDown].Key = FOculusKeyNames::OculusRemote_VolumeDown; - Buttons[(int32)EOculusRemoteControllerButton::Home].Key = FOculusKeyNames::OculusRemote_Home; - } - - void MapKeysToGamepad() - { - Buttons[(int32)EOculusRemoteControllerButton::DPad_Up].EmulatedKey = FGamepadKeyNames::DPadUp; - Buttons[(int32)EOculusRemoteControllerButton::DPad_Down].EmulatedKey = FGamepadKeyNames::DPadDown; - Buttons[(int32)EOculusRemoteControllerButton::DPad_Left].EmulatedKey = FGamepadKeyNames::DPadLeft; - Buttons[(int32)EOculusRemoteControllerButton::DPad_Right].EmulatedKey = FGamepadKeyNames::DPadRight; - Buttons[(int32)EOculusRemoteControllerButton::Enter].EmulatedKey = FGamepadKeyNames::SpecialRight; - Buttons[(int32)EOculusRemoteControllerButton::Back].EmulatedKey = FGamepadKeyNames::SpecialLeft; - } - }; - - //------------------------------------------------------------------------------------------------- - // FOculusControllerPair - A pair of Oculus controllers, hand/touch, one for either hand - //------------------------------------------------------------------------------------------------- - - struct FOculusControllerPair - { - /** The input device ID for this oculus controller */ - FInputDeviceId DeviceId; - - /** Current device state for either hand */ - FOculusTouchControllerState TouchControllerStates[2]; - - FOculusHandControllerState HandControllerStates[2]; - - FOculusControllerPair() - : DeviceId(INPUTDEVICEID_NONE), TouchControllerStates(), HandControllerStates() - { - TouchControllerStates[(int32)EControllerHand::Left] = FOculusTouchControllerState(EControllerHand::Left); - TouchControllerStates[(int32)EControllerHand::Right] = FOculusTouchControllerState(EControllerHand::Right); - - HandControllerStates[(int32)EControllerHand::Left] = FOculusHandControllerState(EControllerHand::Left); - HandControllerStates[(int32)EControllerHand::Right] = FOculusHandControllerState(EControllerHand::Right); - } - }; - - const float DefaultInitialButtonRepeatDelay = 0.2f; - const float DefaultButtonRepeatDelay = 0.1f; - -} // namespace OculusXRInput - -#endif // OCULUS_INPUT_SUPPORTED_PLATFORMS diff --git a/Plugins/MetaXR/Source/OculusXRInput/Private/OculusXRInputXRFunctions.cpp b/Plugins/MetaXR/Source/OculusXRInput/Private/OculusXRInputXRFunctions.cpp deleted file mode 100644 index cedaeef..0000000 --- a/Plugins/MetaXR/Source/OculusXRInput/Private/OculusXRInputXRFunctions.cpp +++ /dev/null @@ -1,25 +0,0 @@ -// Copyright (c) Meta Platforms, Inc. and affiliates. - -#include "OculusXRInputXRFunctions.h" -#include "OculusXRInputModule.h" -#include "OpenXR/OculusXROpenXRUtilities.h" - -namespace OculusXRInput -{ - PFN_xrGetDeviceSampleRateFB xrGetDeviceSampleRateFB = nullptr; - - void InitOpenXRFunctions(XrInstance InInstance) - { - const FOculusXRInputModule* InputModule = static_cast(&FOculusXRInputModule::Get()); - if (!InputModule) - { - UE_LOG(LogOcInput, Error, TEXT("Failed getting Oculus XR input module.")); - return; - } - if (InputModule->GetHapticsOpenXRExtension()->IsPCMExtensionAvailable()) - { - OculusXR::XRGetInstanceProcAddr(InInstance, "xrGetDeviceSampleRateFB", &xrGetDeviceSampleRateFB); - } - } - -} // namespace OculusXRInput diff --git a/Plugins/MetaXR/Source/OculusXRInput/Private/OculusXRInputXRFunctions.h b/Plugins/MetaXR/Source/OculusXRInput/Private/OculusXRInputXRFunctions.h deleted file mode 100644 index 6761753..0000000 --- a/Plugins/MetaXR/Source/OculusXRInput/Private/OculusXRInputXRFunctions.h +++ /dev/null @@ -1,12 +0,0 @@ -// Copyright (c) Meta Platforms, Inc. and affiliates. - -#pragma once - -#include "khronos/openxr/openxr.h" - -namespace OculusXRInput -{ - extern PFN_xrGetDeviceSampleRateFB xrGetDeviceSampleRateFB; - - void InitOpenXRFunctions(XrInstance InInstance); -} // namespace OculusXRInput diff --git a/Plugins/MetaXR/Source/OculusXRInput/Private/OculusXRLegacyPoseTransformComponent.cpp b/Plugins/MetaXR/Source/OculusXRInput/Private/OculusXRLegacyPoseTransformComponent.cpp deleted file mode 100644 index 96dd81d..0000000 --- a/Plugins/MetaXR/Source/OculusXRInput/Private/OculusXRLegacyPoseTransformComponent.cpp +++ /dev/null @@ -1,22 +0,0 @@ -// @lint-ignore-every LICENSELINT -// Copyright Epic Games, Inc. All Rights Reserved. - -#include "OculusXRLegacyPoseTransformComponent.h" -#include "OpenXR/OculusXROpenXRUtilities.h" -#include "GameFramework/WorldSettings.h" - -UOculusXRLegacyPoseTransformComponent::UOculusXRLegacyPoseTransformComponent(const FObjectInitializer& ObjectInitializer) - : Super(ObjectInitializer) -{ - SetComponentTickEnabled(false); -} - -void UOculusXRLegacyPoseTransformComponent::BeginPlay() -{ - Super::BeginPlay(); - - if (OculusXR::IsOpenXRSystem()) - { - AddLocalTransform(FTransform(OculusPoseToGripRotation, OculusPoseToGripPosition * GetWorld()->GetWorldSettings()->WorldToMeters).Inverse()); - } -} diff --git a/Plugins/MetaXR/Source/OculusXRInput/Private/OculusXRTouchPlusInputExtensionPlugin.cpp b/Plugins/MetaXR/Source/OculusXRInput/Private/OculusXRTouchPlusInputExtensionPlugin.cpp deleted file mode 100644 index 0405385..0000000 --- a/Plugins/MetaXR/Source/OculusXRInput/Private/OculusXRTouchPlusInputExtensionPlugin.cpp +++ /dev/null @@ -1,29 +0,0 @@ -// Copyright (c) Meta Platforms, Inc. and affiliates. - -#include "OculusXRTouchPlusInputExtensionPlugin.h" -#include "OpenXRCore.h" - -namespace OculusXRInput -{ - - bool FTouchPlusInputExtensionPlugin::GetRequiredExtensions(TArray& OutExtensions) - { - OutExtensions.Add(XR_META_TOUCH_CONTROLLER_PLUS_EXTENSION_NAME); - return true; - } - - void FTouchPlusInputExtensionPlugin::PostCreateInstance(XrInstance InInstance) - { - XrResult Result = xrStringToPath(InInstance, "/interaction_profiles/meta/touch_controller_plus", &InteractionProfile); - check(XR_SUCCEEDED(Result)); - } - - bool FTouchPlusInputExtensionPlugin::GetInteractionProfile(XrInstance InInstance, FString& OutKeyPrefix, XrPath& OutPath, bool& OutHasHaptics) - { - OutKeyPrefix = "OculusTouchPlus"; - OutPath = InteractionProfile; - OutHasHaptics = true; - return true; - } - -} // namespace OculusXRInput diff --git a/Plugins/MetaXR/Source/OculusXRInput/Private/OculusXRTouchPlusInputExtensionPlugin.h b/Plugins/MetaXR/Source/OculusXRInput/Private/OculusXRTouchPlusInputExtensionPlugin.h deleted file mode 100644 index 8456ad1..0000000 --- a/Plugins/MetaXR/Source/OculusXRInput/Private/OculusXRTouchPlusInputExtensionPlugin.h +++ /dev/null @@ -1,34 +0,0 @@ -// Copyright (c) Meta Platforms, Inc. and affiliates. - -#pragma once - -#include "khronos/openxr/openxr.h" - -#include "CoreMinimal.h" -#include "IOculusXRInputModule.h" -#include "IOpenXRExtensionPlugin.h" -#include "Misc/EngineVersionComparison.h" - -namespace OculusXRInput -{ - - class FTouchPlusInputExtensionPlugin : public IOpenXRExtensionPlugin - { - public: - void RegisterOpenXRExtensionPlugin() - { -#if !UE_VERSION_OLDER_THAN(5, 5, 0) - RegisterOpenXRExtensionModularFeature(); -#endif - } - - // IOpenXRExtensionPlugin - virtual bool GetRequiredExtensions(TArray& OutExtensions) override; - virtual void PostCreateInstance(XrInstance InInstance) override; - virtual bool GetInteractionProfile(XrInstance InInstance, FString& OutKeyPrefix, XrPath& OutPath, bool& OutHasHaptics) override; - - private: - XrPath InteractionProfile; - }; - -} // namespace OculusXRInput diff --git a/Plugins/MetaXR/Source/OculusXRInput/Private/OculusXRTouchProInputExtensionPlugin.cpp b/Plugins/MetaXR/Source/OculusXRInput/Private/OculusXRTouchProInputExtensionPlugin.cpp deleted file mode 100644 index ba8d681..0000000 --- a/Plugins/MetaXR/Source/OculusXRInput/Private/OculusXRTouchProInputExtensionPlugin.cpp +++ /dev/null @@ -1,29 +0,0 @@ -// Copyright (c) Meta Platforms, Inc. and affiliates. - -#include "OculusXRTouchProInputExtensionPlugin.h" -#include "OpenXRCore.h" - -namespace OculusXRInput -{ - - bool FTouchProInputExtensionPlugin::GetRequiredExtensions(TArray& OutExtensions) - { - OutExtensions.Add(XR_FB_TOUCH_CONTROLLER_PRO_EXTENSION_NAME); - return true; - } - - void FTouchProInputExtensionPlugin::PostCreateInstance(XrInstance InInstance) - { - XrResult Result = xrStringToPath(InInstance, "/interaction_profiles/facebook/touch_controller_pro", &InteractionProfile); - check(XR_SUCCEEDED(Result)); - } - - bool FTouchProInputExtensionPlugin::GetInteractionProfile(XrInstance InInstance, FString& OutKeyPrefix, XrPath& OutPath, bool& OutHasHaptics) - { - OutKeyPrefix = "OculusTouchPro"; - OutPath = InteractionProfile; - OutHasHaptics = true; - return true; - } - -} // namespace OculusXRInput diff --git a/Plugins/MetaXR/Source/OculusXRInput/Private/OculusXRTouchProInputExtensionPlugin.h b/Plugins/MetaXR/Source/OculusXRInput/Private/OculusXRTouchProInputExtensionPlugin.h deleted file mode 100644 index 3cb7dcd..0000000 --- a/Plugins/MetaXR/Source/OculusXRInput/Private/OculusXRTouchProInputExtensionPlugin.h +++ /dev/null @@ -1,34 +0,0 @@ -// Copyright (c) Meta Platforms, Inc. and affiliates. - -#pragma once - -#include "khronos/openxr/openxr.h" - -#include "CoreMinimal.h" -#include "IOculusXRInputModule.h" -#include "IOpenXRExtensionPlugin.h" -#include "Misc/EngineVersionComparison.h" - -namespace OculusXRInput -{ - - class FTouchProInputExtensionPlugin : public IOpenXRExtensionPlugin - { - public: - void RegisterOpenXRExtensionPlugin() - { -#if !UE_VERSION_OLDER_THAN(5, 5, 0) - RegisterOpenXRExtensionModularFeature(); -#endif - } - - // IOpenXRExtensionPlugin - virtual bool GetRequiredExtensions(TArray& OutExtensions) override; - virtual void PostCreateInstance(XrInstance InInstance) override; - virtual bool GetInteractionProfile(XrInstance InInstance, FString& OutKeyPrefix, XrPath& OutPath, bool& OutHasHaptics) override; - - private: - XrPath InteractionProfile; - }; - -} // namespace OculusXRInput diff --git a/Plugins/MetaXR/Source/OculusXRInput/Public/IOculusXRInputModule.h b/Plugins/MetaXR/Source/OculusXRInput/Public/IOculusXRInputModule.h deleted file mode 100644 index 7275e40..0000000 --- a/Plugins/MetaXR/Source/OculusXRInput/Public/IOculusXRInputModule.h +++ /dev/null @@ -1,54 +0,0 @@ -// @lint-ignore-every LICENSELINT -// Copyright Epic Games, Inc. All Rights Reserved. - -#pragma once -#include "Modules/ModuleManager.h" -#include "IInputDeviceModule.h" - -#define OCULUS_INPUT_SUPPORTED_PLATFORMS (PLATFORM_WINDOWS && WINVER > 0x0502) || (PLATFORM_ANDROID_ARM || PLATFORM_ANDROID_ARM64 || PLATFORM_ANDROID_X64) - -/** - * The public interface to this module. In most cases, this interface is only public to sibling modules - * within this plugin. - */ -class IOculusXRInputModule : public IInputDeviceModule -{ - -public: - /** - * Singleton-like access to this module's interface. This is just for convenience! - * Beware of calling this during the shutdown phase, though. Your module might have been unloaded already. - * - * @return Returns singleton instance, loading the module on demand if needed - */ - static inline IOculusXRInputModule& Get() - { - return FModuleManager::LoadModuleChecked("OculusXRInput"); - } - - /** - * Checks to see if this module is loaded and ready. It is only valid to call Get() if IsAvailable() returns true. - * - * @return True if the module is loaded and ready to use - */ - static inline bool IsAvailable() - { - return FModuleManager::Get().IsModuleLoaded("OculusXRInput"); - } - - /** - * Gets the number of Touch controllers that are active, so that games that require them can check to make sure they're present - * - * @return The number of Touch controllers that are active (but not necessarily tracked) - */ - virtual uint32 GetNumberOfTouchControllers() const = 0; - - /** - * Gets the number of hands that are active, so that games that require them can check to make sure they're present - * - * @return The number of Hands that are active (but not necessarily tracked) - */ - virtual uint32 GetNumberOfHandControllers() const = 0; - - virtual TSharedPtr GetInputDevice() const = 0; -}; diff --git a/Plugins/MetaXR/Source/OculusXRInput/Public/OculusXRControllerComponent.h b/Plugins/MetaXR/Source/OculusXRInput/Public/OculusXRControllerComponent.h deleted file mode 100644 index 0944b02..0000000 --- a/Plugins/MetaXR/Source/OculusXRInput/Public/OculusXRControllerComponent.h +++ /dev/null @@ -1,94 +0,0 @@ -// Copyright (c) Meta Platforms, Inc. and affiliates. - -// A class to render the currently connected controller. -// Similar to how hands are tracked. - -#pragma once -#include "OculusXRInputFunctionLibrary.h" -#include "OculusXRFunctionLibrary.h" -#include "Components/StaticMeshComponent.h" -#include - -// Must always be the last include. -#include "OculusXRControllerComponent.generated.h" - -UCLASS(Blueprintable, meta = (BlueprintSpawnableComponent), ClassGroup = OculusHand) -class UOculusXRControllerComponent : public UStaticMeshComponent -{ - GENERATED_BODY() - -public: - UOculusXRControllerComponent(); - - virtual void BeginPlay() override; - - virtual void TickComponent(float DeltaTime, enum ELevelTick TickType, FActorComponentTickFunction* ThisTickFunction) override; - - /** The skeleton that will be loaded */ - UPROPERTY(EditDefaultsOnly, BlueprintReadWrite, Category = "Properties") - EOculusXRSide SkeletonType; - - /** Should this controller be rendered when using controller driven hand poses */ - UPROPERTY(EditDefaultsOnly, BlueprintReadWrite, Category = "Properties") - bool RenderWhenUsingControllerDrivenHands; - -private: - enum MeshLoadingState - { - None, - Loading, - Loaded - }; - - UStaticMesh* _runtimeMesh; - MeshLoadingState _meshLoadingState; - TSharedPtr _loadAssetHandle; - FStreamableManager _streamableManager; - EOculusXRControllerType _controllerType; - FSoftObjectPath _runtimeMeshPath; - EOculusXRControllerDrivenHandPoseTypes _cachedControllerHandType; - - void InitializeMesh(); - void MeshLoaded(); - EOculusXRControllerType GetControllerType(); - - // These position and rotation offsets are needed to correctly position the controller - // when using natural or controller based hand positioning. - // Why do these need to be hardcoded and not come from the skeleton etc? - // It seems like the offset comes from somewhere in unreal in the first place, - // not from a bone position, so there's not a place to load the correct orientation from. - const FVector PositionOffsets[EOculusXRSideCount][EOculusXRControllerDrivenHandPoseTypesCount]{ - { - FVector(0, 0, 0), // Side: None, Controller Mapping: None - FVector(0, 0, 0), // Side: None, Controller Mapping: Natural - FVector(0, 0, 0), // Side: None, Controller Mapping: Controller - }, - { - FVector(0, 0, 0), // Side: Left, Controller Mapping: None - FVector(4.278, 9.969, 4.638), // Side: Left, Controller Mapping: Natural - FVector(4.278, 9.969, 4.638), // Side: Left, Controller Mapping: Controller - }, - { - FVector(0, 0, 0), // Side: Right, Controller Mapping: None - FVector(-4.104, -9.993, -4.244), // Side: Right, Controller Mapping: Natural - FVector(-4.104, -9.993, -4.244), // Side: Right, Controller Mapping: Controller - }, - }; - const FVector RotationOffsets[EOculusXRSideCount][EOculusXRControllerDrivenHandPoseTypesCount]{ - { - FVector(0, 0, 0), // Side: None, Controller Mapping: None - FVector(0, 0, 0), // Side: None, Controller Mapping: Natural - FVector(0, 0, 0), // Side: None, Controller Mapping: Controller - }, - { - FVector(0, 0, 0), // Side: Left, Controller Mapping: None - FVector(90, 166.229, 263.738), // Side: Left, Controller Mapping: Natural - FVector(90, 168.515, 259.149), // Side: Left, Controller Mapping: Controller - }, - { - FVector(0, 0, 0), // Side: Right, Controller Mapping: None - FVector(90, 194.995, 83.863), // Side: Right, Controller Mapping: Natural - FVector(90, 191.485, 79.149), // Side: Right, Controller Mapping: Controller - }, - }; -}; diff --git a/Plugins/MetaXR/Source/OculusXRInput/Public/OculusXRControllerLegacyPoseTransformComponent.h b/Plugins/MetaXR/Source/OculusXRInput/Public/OculusXRControllerLegacyPoseTransformComponent.h deleted file mode 100644 index 68c0bf9..0000000 --- a/Plugins/MetaXR/Source/OculusXRInput/Public/OculusXRControllerLegacyPoseTransformComponent.h +++ /dev/null @@ -1,22 +0,0 @@ -// @lint-ignore-every LICENSELINT -// Copyright Epic Games, Inc. All Rights Reserved. - -#pragma once -#include "Components/SceneComponent.h" -#include "OculusXRLegacyPoseTransformComponent.h" -#include "OculusXRControllerLegacyPoseTransformComponent.generated.h" - -/** - * This class is deprecated, please use OculusXRLegacyPoseTransformComponent instead. - */ -UCLASS(Blueprintable, meta = (BlueprintSpawnableComponent, DeprecationMessage = "Please use OculusXRLegacyPoseTransformComponent instead."), ClassGroup = OculusHand, DisplayName = "[Deprecated] OculusXR Controller Legacy Pose Transform Component") -class OCULUSXRINPUT_API UOculusXRControllerLegacyPoseTransformComponent : public USceneComponent -{ - GENERATED_UCLASS_BODY() - -public: - /** - * Applies the transformation from legacy Oculus pose to OpenXR grip pose onto the parent component. - */ - virtual void BeginPlay() override; -}; diff --git a/Plugins/MetaXR/Source/OculusXRInput/Public/OculusXRHandComponent.h b/Plugins/MetaXR/Source/OculusXRInput/Public/OculusXRHandComponent.h deleted file mode 100644 index dfcdbed..0000000 --- a/Plugins/MetaXR/Source/OculusXRInput/Public/OculusXRHandComponent.h +++ /dev/null @@ -1,102 +0,0 @@ -// @lint-ignore-every LICENSELINT -// Copyright Epic Games, Inc. All Rights Reserved. - -#pragma once -#include "OculusXRInputFunctionLibrary.h" -#include "Components/PoseableMeshComponent.h" -#include "OculusXRHandComponent.generated.h" - -UENUM(BlueprintType) -enum class EOculusXRConfidenceBehavior : uint8 -{ - None, - HideActor -}; - -UENUM(BlueprintType) -enum class EOculusXRSystemGestureBehavior : uint8 -{ - None, - SwapMaterial -}; - -static const FQuat HandRootFixupRotationOVR = FQuat(-0.5f, -0.5f, 0.5f, 0.5f); -static const FQuat LeftHandRootFixupRotationOpenXR = FQuat({ 1.0f, 0.0f, 0.0f }, FMath::DegreesToRadians(90.0)); -static const FQuat RightHandRootFixupRotationOpenXR = FQuat({ 0.0f, 1.0f, 0.0f }, FMath::DegreesToRadians(180.0)) * FQuat({ 1.0f, 0.0f, 0.0f }, FMath::DegreesToRadians(90.0)); - -UCLASS(Blueprintable, meta = (BlueprintSpawnableComponent), ClassGroup = OculusHand) -class OCULUSXRINPUT_API UOculusXRHandComponent : public UPoseableMeshComponent -{ - GENERATED_UCLASS_BODY() - -public: - virtual void BeginPlay() override; - - virtual void TickComponent(float DeltaTime, enum ELevelTick TickType, FActorComponentTickFunction* ThisTickFunction) override; - - /** The hand skeleton that will be loaded */ - UPROPERTY(EditDefaultsOnly, BlueprintReadWrite, Category = "HandProperties") - EOculusXRHandType SkeletonType; - - /** The hand mesh that will be applied to the skeleton */ - UPROPERTY(EditDefaultsOnly, BlueprintReadWrite, Category = "HandProperties") - EOculusXRHandType MeshType; - - /** Behavior for when hand tracking loses high confidence tracking */ - UPROPERTY(EditDefaultsOnly, BlueprintReadWrite, Category = "HandProperties") - EOculusXRConfidenceBehavior ConfidenceBehavior = EOculusXRConfidenceBehavior::HideActor; - - /** Behavior for when the system gesture is actived */ - UPROPERTY(EditDefaultsOnly, BlueprintReadWrite, Category = "HandProperties") - EOculusXRSystemGestureBehavior SystemGestureBehavior = EOculusXRSystemGestureBehavior::SwapMaterial; - - /** Material that gets applied to the hands when the system gesture is active */ - UPROPERTY(EditDefaultsOnly, BlueprintReadWrite, Category = "HandProperties") - class UMaterialInterface* SystemGestureMaterial; - - /** Whether or not to initialize physics capsules on the skeletal mesh */ - UPROPERTY(EditDefaultsOnly, BlueprintReadWrite, Category = "HandProperties") - bool bInitializePhysics; - - /** Whether or not the hand scale should update based on values from the runtime to match the users hand scale */ - UPROPERTY(EditDefaultsOnly, BlueprintReadWrite, Category = "HandProperties") - bool bUpdateHandScale; - - /** Material override for the runtime skeletal mesh */ - UPROPERTY(EditDefaultsOnly, BlueprintReadWrite, Category = "HandProperties") - class UMaterialInterface* MaterialOverride; - - /** Bone mapping for custom hand skeletal meshes */ - UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "CustomSkeletalMesh") - TMap BoneNameMappings; - - /** List of capsule colliders created for the skeletal mesh */ - UPROPERTY(BlueprintReadOnly, Category = "HandProperties") - TArray CollisionCapsules; - - /** Whether or not the runtime skeletal mesh has been loaded and initialized */ - UPROPERTY(BlueprintReadOnly, Category = "HandProperties") - bool bSkeletalMeshInitialized = false; - -protected: - virtual void SystemGesturePressed(); - virtual void SystemGestureReleased(); - -private: - /** Whether or not this component has authority within the frame */ - bool bHasAuthority; - - /** Whether or not a custom hand mesh is being used */ - bool bCustomHandMesh = false; - - /** Whether or not the physics capsules have been initialized */ - bool bInitializedPhysics = false; - - USkeletalMesh* RuntimeSkeletalMesh; - - UMaterialInterface* CachedBaseMaterial; - - void InitializeSkeletalMesh(); - - void UpdateBonePose(EOculusXRHandType HandType); -}; diff --git a/Plugins/MetaXR/Source/OculusXRInput/Public/OculusXRInputFunctionLibrary.h b/Plugins/MetaXR/Source/OculusXRInput/Public/OculusXRInputFunctionLibrary.h deleted file mode 100644 index b8653a2..0000000 --- a/Plugins/MetaXR/Source/OculusXRInput/Public/OculusXRInputFunctionLibrary.h +++ /dev/null @@ -1,365 +0,0 @@ -// @lint-ignore-every LICENSELINT -// Copyright Epic Games, Inc. All Rights Reserved. - -#pragma once -#include "CoreMinimal.h" -#include "UObject/ObjectMacros.h" -#include "Components/CapsuleComponent.h" -#include "Kismet/BlueprintFunctionLibrary.h" - -#include "OculusXRInputFunctionLibrary.generated.h" - -UENUM(BlueprintType) -enum class EOculusXRHandType : uint8 -{ - None, - HandLeft, - HandRight, -}; - -UENUM(BlueprintType) -enum class EOculusXRSide : uint8 -{ - None = 0, - Left = 1, - Right = 2, -}; - -const int EOculusXRSideCount = 3; - -UENUM(BlueprintType) -enum class EOculusXRTrackingConfidence : uint8 -{ - Low, - High -}; - -UENUM(BlueprintType) -enum class EOculusXRFinger : uint8 -{ - Thumb, - Index, - Middle, - Ring, - Pinky, - Invalid -}; - -/** - * EOculusXRBone is enum representing the Bone Ids that come from the Oculus Runtime. - */ -UENUM(BlueprintType) -enum class EOculusXRBone : uint8 -{ - Wrist_Root UMETA(DisplayName = "Wrist Root"), - Hand_Start = Wrist_Root UMETA(DisplayName = "Hand Start"), - Forearm_Stub UMETA(DisplayName = "Forearm Stub"), - Thumb_0 UMETA(DisplayName = "Thumb0"), - Thumb_1 UMETA(DisplayName = "Thumb1"), - Thumb_2 UMETA(DisplayName = "Thumb2"), - Thumb_3 UMETA(DisplayName = "Thumb3"), - Index_1 UMETA(DisplayName = "Index1"), - Index_2 UMETA(DisplayName = "Index2"), - Index_3 UMETA(DisplayName = "Index3"), - Middle_1 UMETA(DisplayName = "Middle1"), - Middle_2 UMETA(DisplayName = "Middle2"), - Middle_3 UMETA(DisplayName = "Middle3"), - Ring_1 UMETA(DisplayName = "Ring1"), - Ring_2 UMETA(DisplayName = "Ring2"), - Ring_3 UMETA(DisplayName = "Ring3"), - Pinky_0 UMETA(DisplayName = "Pinky0"), - Pinky_1 UMETA(DisplayName = "Pinky1"), - Pinky_2 UMETA(DisplayName = "Pinky2"), - Pinky_3 UMETA(DisplayName = "Pinky3"), - Thumb_Tip UMETA(DisplayName = "Thumb Tip"), - Max_Skinnable = Thumb_Tip UMETA(DisplayName = "Max Skinnable"), - Index_Tip UMETA(DisplayName = "Index Tip"), - Middle_Tip UMETA(DisplayName = "Middle Tip"), - Ring_Tip UMETA(DisplayName = "Ring Tip"), - Pinky_Tip UMETA(DisplayName = "Pinky Tip"), - Hand_End UMETA(DisplayName = "Hand End"), - Bone_Max = Hand_End UMETA(DisplayName = "Hand Max"), - Invalid UMETA(DisplayName = "Invalid") -}; - -/** Defines the haptics location of controller hands for tracking. */ -UENUM(BlueprintType) -enum class EOculusXRHandHapticsLocation : uint8 -{ - Hand = 0, // Haptics is applied to the whole controller - Thumb, // Haptics is applied to the thumb finger location - Index, // Haptics is applied to the index finger location - - HandHapticsLocation_Count UMETA(Hidden, DisplayName = ""), -}; - -/** Define how a controllers button touches will be used to generate a hand pose. */ -UENUM(BlueprintType) -enum class EOculusXRControllerDrivenHandPoseTypes : uint8 -{ - None = 0, // Controllers do not generate any hand poses. - Natural, // Controller button inputs will be used to generate a normal hand pose. - Controller, // Controller button inputs will be used to generate a hand pose holding a controller. -}; - -const int EOculusXRControllerDrivenHandPoseTypesCount = 3; - -struct FOculusXRHapticsDesc -{ - FOculusXRHapticsDesc( - EOculusXRHandHapticsLocation InputLocation = EOculusXRHandHapticsLocation::Hand, - bool bInputAppend = false, - bool bInputIsFirstCall = true) - : Location(InputLocation), bAppend(bInputAppend), bIsFirstCall(bInputIsFirstCall) - { - } - - void Restart() - { - Location = EOculusXRHandHapticsLocation::Hand; - bAppend = false; - bIsFirstCall = true; - } - EOculusXRHandHapticsLocation Location; - bool bAppend; - bool bIsFirstCall = true; -}; - -/** - * FOculusXRCapsuleCollider is a struct that contains information on the physics/collider capsules created by the runtime for hands. - * - * @var Capsule The UCapsuleComponent that is the collision capsule on the bone. Use this to register for overlap/collision events - * @var BoneIndex The Bone that this collision capsule is parented to. Corresponds to the EOculusXRBone enum. - * - */ -USTRUCT(BlueprintType) -struct OCULUSXRINPUT_API FOculusXRCapsuleCollider -{ - GENERATED_BODY() - -public: - UPROPERTY(BlueprintReadOnly, Category = "OculusLibrary|HandTracking") - UCapsuleComponent* Capsule = nullptr; - - UPROPERTY(BlueprintReadOnly, Category = "OculusLibrary|HandTracking") - EOculusXRBone BoneId = EOculusXRBone::Wrist_Root; -}; - -UCLASS() -class OCULUSXRINPUT_API UOculusXRInputFunctionLibrary : public UBlueprintFunctionLibrary -{ - GENERATED_UCLASS_BODY() - -public: - UFUNCTION(BlueprintCallable, Category = "OculusLibrary|HandTracking") - static EOculusXRFinger ConvertBoneToFinger(const EOculusXRBone Bone); - - DECLARE_MULTICAST_DELEGATE_FourParams(FHandMovementFilterDelegate, EControllerHand, FVector*, FRotator*, bool*); - static FHandMovementFilterDelegate HandMovementFilter; /// Called to modify Hand position and orientation whenever it is queried - - /** - * Creates a new runtime hand skeletal mesh. - * - * @param HandSkeletalMesh (out) Skeletal Mesh object that will be used for the runtime hand mesh - * @param SkeletonType (in) The skeleton type that will be used for generating the hand bones - * @param MeshType (in) The mesh type that will be used for generating the hand mesh - * @param WorldTometers (in) Optional change to the world to meters conversion value - */ - UFUNCTION(BlueprintCallable, Category = "OculusLibrary|HandTracking") - static bool GetHandSkeletalMesh(USkeletalMesh* HandSkeletalMesh, EOculusXRHandType SkeletonType, EOculusXRHandType MeshType, const float WorldToMeters = 100.0f); - - /** - * Initializes physics capsules for collision and physics on the runtime mesh - * - * @param SkeletonType (in) The skeleton type that will be used to generated the capsules - * @param HandComponent (in) The skinned mesh component that the capsules will be attached to - * @param WorldTometers (in) Optional change to the world to meters conversion value - */ - UFUNCTION(BlueprintCallable, Category = "OculusLibrary|HandTracking") - static TArray InitializeHandPhysics(EOculusXRHandType SkeletonType, USkinnedMeshComponent* HandComponent, const float WorldToMeters = 100.0f); - - /** - * Get the rotation of a specific bone - * - * @param DeviceHand (in) The hand to get the rotations from - * @param BoneId (in) The specific bone to get the rotation from - * @param ControllerIndex (in) Optional different controller index - */ - UFUNCTION(BlueprintPure, Category = "OculusLibrary|HandTracking") - static FQuat GetBoneRotation(const EOculusXRHandType DeviceHand, const EOculusXRBone BoneId, const int32 ControllerIndex = 0); - - /** - * Get the pointer pose - * - * @param DeviceHand (in) The hand to get the pointer pose from - * @param ControllerIndex (in) Optional different controller index - */ - UFUNCTION(BlueprintPure, Category = "OculusLibrary|HandTracking") - static FTransform GetPointerPose(const EOculusXRHandType DeviceHand, const int32 ControllerIndex = 0); - - /** - * Check if the pointer pose is a valid pose - * - * @param DeviceHand (in) The hand to get the pointer status from - * @param ControllerIndex (in) Optional different controller index - */ - UFUNCTION(BlueprintPure, Category = "OculusLibrary|HandTracking") - static bool IsPointerPoseValid(const EOculusXRHandType DeviceHand, const int32 ControllerIndex = 0); - - /** - * Get the tracking confidence of the hand - * - * @param DeviceHand (in) The hand to get tracking confidence of - * @param ControllerIndex (in) Optional different controller index - */ - UFUNCTION(BlueprintPure, Category = "OculusLibrary|HandTracking") - static EOculusXRTrackingConfidence GetTrackingConfidence(const EOculusXRHandType DeviceHand, const int32 ControllerIndex = 0); - - /** - * Get the tracking confidence of a finger - * - * @param DeviceHand (in) The hand to get tracking confidence of - * @param ControllerIndex (in) Optional different controller index - * @param Finger (in) The finger to get tracking confidence of - */ - UFUNCTION(BlueprintPure, Category = "OculusLibrary|HandTracking") - static EOculusXRTrackingConfidence GetFingerTrackingConfidence(const EOculusXRHandType DeviceHand, const EOculusXRFinger Finger, const int32 ControllerIndex = 0); - - /** - * Get the scale of the hand - * - * @param DeviceHand (in) The hand to get scale of - * @param ControllerIndex (in) Optional different controller index - */ - UFUNCTION(BlueprintPure, Category = "OculusLibrary|HandTracking") - static float GetHandScale(const EOculusXRHandType DeviceHand, const int32 ControllerIndex = 0); - - /** - * Get the user's dominant hand. Note that HandTracking must be used. - * - * @param ControllerIndex (in) Optional different controller index - */ - UFUNCTION(BlueprintPure, Category = "OculusLibrary|HandTracking") - static EOculusXRHandType GetDominantHand(const int32 ControllerIndex = 0); - - /** - * Check if hand tracking is enabled currently - */ - UFUNCTION(BlueprintPure, Category = "OculusLibrary|HandTracking") - static bool IsHandTrackingEnabled(); - - /** - * Check if the hand position is valid - * - * @param DeviceHand (in) The hand to get the position from - * @param ControllerIndex (in) Optional different controller index - */ - UFUNCTION(BlueprintPure, Category = "OculusLibrary|HandTracking") - static bool IsHandPositionValid(const EOculusXRHandType DeviceHand, const int32 ControllerIndex = 0); - - /** - * Get the bone name from the bone index - * - * @param BoneIndex (in) Bone index to get the name of - */ - UFUNCTION(BlueprintPure, Category = "OculusLibrary|HandTracking") - static FString GetBoneName(EOculusXRBone BoneId); - - /** - * Play a haptic feedback curve on the player's controller with location support. - * The curve data will be sampled and sent to controller to vibrate a specific location at each frame. - * @param HapticEffect The haptic effect to play - * @param Hand Which hand to play the effect on - * @param Location Which hand location to play the effect on - * @param Scale Scale between 0.0 and 1.0 on the intensity of playback - */ - UFUNCTION(BlueprintCallable, Category = "OculusLibrary|Controller") - static void PlayCurveHapticEffect(class UHapticFeedbackEffect_Curve* HapticEffect, EControllerHand Hand, EOculusXRHandHapticsLocation Location = EOculusXRHandHapticsLocation::Hand, float Scale = 1.f, bool bLoop = false); - - /** - * Play a haptic feedback buffer on the player's controller with location support. - * In each frame, the buffer data will be sampled and the individual sampled data will be sent to controller to vibrate a specific location. - * @param HapticEffect The haptic effect to play - * @param Hand Which hand to play the effect on - * @param Location Which hand location to play the effect on - * @param Scale Scale between 0.0 and 1.0 on the intensity of playback - */ - UFUNCTION(BlueprintCallable, Category = "OculusLibrary|Controller") - static void PlayBufferHapticEffect(class UHapticFeedbackEffect_Buffer* HapticEffect, EControllerHand Hand, EOculusXRHandHapticsLocation Location = EOculusXRHandHapticsLocation::Hand, float Scale = 1.f, bool bLoop = false); - - /** - * Play a haptic feedback buffer on the player's controller. - * All buffer data will be sent to controller together in one frame. - * Data duration should be no greater than controller's maximum haptics duration which can be queried with GetMaxHapticDuration. - * @param HapticEffect The haptic effect to play - * @param Hand Which hand to play the effect on - */ - UFUNCTION(BlueprintCallable, Category = "OculusLibrary|Controller") - static void PlayAmplitudeEnvelopeHapticEffect(class UHapticFeedbackEffect_Buffer* HapticEffect, EControllerHand Hand); - - /** - * Play a haptic feedback soundwave on the player's controller. - * In each frame, the soundwave data will be split into a batch of data and sent to controller. - * The data duration of each frame is equal to controller's maximum haptics duration which can be queried with GetMaxHapticDuration. - * @param HapticEffect The haptic effect to play - * @param Hand Which hand to play the effect on - * @param bAppend False: any existing samples will be cleared and a new haptic effect will begin; True: samples will be appended to the currently playing effect - * @param Scale Scale between 0.0 and 1.0 on the intensity of playback - */ - UFUNCTION(BlueprintCallable, Category = "OculusLibrary|Controller") - static void PlaySoundWaveHapticEffect(class UHapticFeedbackEffect_SoundWave* HapticEffect, EControllerHand Hand, bool bAppend = false, float Scale = 1.f, bool bLoop = false); - - /** - * Stops a playing haptic feedback curve at a specific location. - * @param HapticEffect The haptic effect to stop - * @param Hand Which hand to stop the effect for - * @param Location Which hand location to play the effect on - */ - UFUNCTION(BlueprintCallable, Category = "OculusLibrary|Controller") - static void StopHapticEffect(EControllerHand Hand, EOculusXRHandHapticsLocation Location = EOculusXRHandHapticsLocation::Hand); - - /** - * Set the value of the haptics for the specified hand and location directly, using frequency and amplitude. NOTE: If a curve is already - * playing for this hand, it will be cancelled in favour of the specified values. - * - * @param Frequency The frequency in Hz to play through the haptics system - * @param Amplitude The normalized amplitude [0.0, 1.0] to set the haptic feedback to - * @param Hand Which hand to play the effect on - * @param Location Which hand location to play the effect on - */ - UFUNCTION(BlueprintCallable, Category = "OculusLibrary|Controller") - static void SetHapticsByValue(const float Frequency, const float Amplitude, EControllerHand Hand, EOculusXRHandHapticsLocation Location = EOculusXRHandHapticsLocation::Hand); - - /** - * Get the controller haptics sample rate. - * @param Hand Which hand to play the effect on - */ - UFUNCTION(BlueprintCallable, Category = "OculusLibrary|Controller") - static float GetControllerSampleRateHz(EControllerHand Hand); - - /** - * Get the maximum duration (in seconds) that the controller haptics can handle each time. - * @param Hand Which hand to play the effect on - */ - UFUNCTION(BlueprintCallable, Category = "OculusLibrary|Controller") - static int GetMaxHapticDuration(EControllerHand Hand); - - /** - * Set if / how controller inputs are used to build a syntheic hand pose. - * @param Type How the hand should be posed. - */ - UFUNCTION(BlueprintCallable, Category = "OculusLibrary|Controller") - static void SetControllerDrivenHandPoses(EOculusXRControllerDrivenHandPoseTypes Type); - - /** - * Get if / how controller inputs are used to build a syntheic hand pose. - */ - UFUNCTION(BlueprintPure, Category = "OculusLibrary|Controller") - static EOculusXRControllerDrivenHandPoseTypes GetControllerDrivenHandPoses(); - - /** - * Gets the transformation for transforming the legacy Oculus pose into the OpenXR Grip pose. - */ - UFUNCTION(BlueprintPure, Category = "OculusLibrary|Controller") - static FTransform GetLegacyOculusPoseTransform(float WorldToMeters); -}; diff --git a/Plugins/MetaXR/Source/OculusXRInput/Public/OculusXRLegacyPoseTransformComponent.h b/Plugins/MetaXR/Source/OculusXRInput/Public/OculusXRLegacyPoseTransformComponent.h deleted file mode 100644 index acb7f3a..0000000 --- a/Plugins/MetaXR/Source/OculusXRInput/Public/OculusXRLegacyPoseTransformComponent.h +++ /dev/null @@ -1,25 +0,0 @@ -// @lint-ignore-every LICENSELINT -// Copyright Epic Games, Inc. All Rights Reserved. - -#pragma once -#include "Components/SceneComponent.h" -#include "OculusXRLegacyPoseTransformComponent.generated.h" - -static const FQuat OculusPoseToGripRotation = FQuat(FVector(0, 1, 0), -FMath::DegreesToRadians(double(60))); -static const FVector OculusPoseToGripPosition = FVector(-0.04, 0, -0.03); - -/** - * Handles conversion of components created for the legacy Oculus controller pose into - * the OpenXR Grip pose. Attach components that need to be transformed under this component. - */ -UCLASS(Blueprintable, meta = (BlueprintSpawnableComponent), ClassGroup = OculusHand, DisplayName = "OculusXR Legacy Pose Transform Component") -class OCULUSXRINPUT_API UOculusXRLegacyPoseTransformComponent : public USceneComponent -{ - GENERATED_UCLASS_BODY() - -public: - /** - * Applies the transformation from legacy Oculus pose to OpenXR grip pose onto the parent component. - */ - virtual void BeginPlay() override; -}; diff --git a/Plugins/MetaXR/Source/OculusXRMR/OculusXRMR.Build.cs b/Plugins/MetaXR/Source/OculusXRMR/OculusXRMR.Build.cs deleted file mode 100644 index 82eff85..0000000 --- a/Plugins/MetaXR/Source/OculusXRMR/OculusXRMR.Build.cs +++ /dev/null @@ -1,77 +0,0 @@ -// @lint-ignore-every LICENSELINT -// Copyright Epic Games, Inc. All Rights Reserved. - -namespace UnrealBuildTool.Rules -{ - public class OculusXRMR : ModuleRules - { - public OculusXRMR(ReadOnlyTargetRules Target) : base(Target) - { - bUseUnity = true; - - PrivateIncludePathModuleNames.AddRange( - new string[] - { - "InputDevice", // For IInputDevice.h - "HeadMountedDisplay", // For IMotionController.h - "ImageWrapper", - "Engine" - }); - - PrivateDependencyModuleNames.AddRange( - new string[] - { - "Core", - "CoreUObject", - "Engine", - "InputCore", - "Slate", - "SlateCore", - "RHI", - "VulkanRHI", - "RenderCore", - "MediaAssets", - "HeadMountedDisplay", - "OculusXRHMD", - "OVRPluginXR", - }); - - if (Target.Version.MajorVersion > 5 || (Target.Version.MajorVersion == 5 && Target.Version.MinorVersion >= 3)) - { - PrivateDependencyModuleNames.AddRange( - new string[] - { - "XRBase", - }); - } - - PrivateIncludePaths.AddRange( - new string[] { - "OculusXRHMD/Private", - "OculusXRInput/Private", - }); - - PublicIncludePaths.AddRange( - new string[] { - "Runtime/Renderer/Private", - "Runtime/Engine/Classes/Components", - "Runtime/MediaAssets/Private", - }); - - if (Target.Platform == UnrealTargetPlatform.Win64) - { - PublicDelayLoadDLLs.Add("OVRPluginXR.dll"); - } - - if (Target.Platform == UnrealTargetPlatform.Android) - { - AddEngineThirdPartyPrivateStaticDependencies(Target, "Vulkan"); - } - - if (Target.bBuildEditor == true) - { - PrivateDependencyModuleNames.Add("UnrealEd"); - } - } - } -} diff --git a/Plugins/MetaXR/Source/OculusXRMR/Private/OculusXRMRFunctionLibrary.cpp b/Plugins/MetaXR/Source/OculusXRMR/Private/OculusXRMRFunctionLibrary.cpp deleted file mode 100644 index a9df40f..0000000 --- a/Plugins/MetaXR/Source/OculusXRMR/Private/OculusXRMRFunctionLibrary.cpp +++ /dev/null @@ -1,177 +0,0 @@ -// @lint-ignore-every LICENSELINT -// Copyright Epic Games, Inc. All Rights Reserved. - -#include "OculusXRMRFunctionLibrary.h" -#include "OculusXRMRPrivate.h" -#include "OculusXRMRModule.h" -#include "OculusXRMR_CastingCameraActor.h" -#include "OculusXRMR_State.h" -#include "OculusXRHMD.h" -#include "OculusXRHMDPrivate.h" -#include "IHeadMountedDisplay.h" -#include "IXRTrackingSystem.h" - -#include "GameFramework/Pawn.h" -#include "GameFramework/PlayerController.h" - -//------------------------------------------------------------------------------------------------- -// UOculusXRFunctionLibrary -//------------------------------------------------------------------------------------------------- - -UOculusXRMRFunctionLibrary::UOculusXRMRFunctionLibrary(const FObjectInitializer& ObjectInitializer) - : Super(ObjectInitializer) -{ -} - -void UOculusXRMRFunctionLibrary::GetAllTrackedCamera(TArray& TrackedCameras, bool bCalibratedOnly) -{ - TrackedCameras.Empty(); - - if (!FOculusXRMRModule::IsAvailable() || !FOculusXRMRModule::Get().IsInitialized()) - { - UE_LOG(LogMR, Error, TEXT("OculusXRMR not available")); - return; - } - - if (FOculusXRHMDModule::GetPluginWrapper().GetInitialized() == ovrpBool_False) - { - UE_LOG(LogMR, Error, TEXT("OVRPlugin not initialized")); - return; - } - - if (OVRP_FAILURE(FOculusXRHMDModule::GetPluginWrapper().UpdateExternalCamera())) - { - UE_LOG(LogMR, Error, TEXT("FOculusXRHMDModule::GetPluginWrapper().UpdateExternalCamera failure")); - return; - } - - int cameraCount = 0; - if (OVRP_FAILURE(FOculusXRHMDModule::GetPluginWrapper().GetExternalCameraCount(&cameraCount))) - { - UE_LOG(LogMR, Log, TEXT("FOculusXRHMDModule::GetPluginWrapper().GetExternalCameraCount failure")); - return; - } - - for (int i = 0; i < cameraCount; ++i) - { - char cameraName[OVRP_EXTERNAL_CAMERA_NAME_SIZE]; - ovrpCameraIntrinsics cameraIntrinsics; - ovrpCameraExtrinsics cameraExtrinsics; - FOculusXRHMDModule::GetPluginWrapper().GetExternalCameraName(i, cameraName); - FOculusXRHMDModule::GetPluginWrapper().GetExternalCameraIntrinsics(i, &cameraIntrinsics); - FOculusXRHMDModule::GetPluginWrapper().GetExternalCameraExtrinsics(i, &cameraExtrinsics); - if ((bCalibratedOnly == false || cameraExtrinsics.CameraStatus == ovrpCameraStatus_Calibrated) && cameraIntrinsics.IsValid && cameraExtrinsics.IsValid) - { - FOculusXRTrackedCamera camera; - camera.Index = i; - camera.Name = cameraName; - camera.FieldOfView = FMath::RadiansToDegrees(FMath::Atan(cameraIntrinsics.FOVPort.LeftTan) + FMath::Atan(cameraIntrinsics.FOVPort.RightTan)); - camera.SizeX = cameraIntrinsics.ImageSensorPixelResolution.w; - camera.SizeY = cameraIntrinsics.ImageSensorPixelResolution.h; - camera.AttachedTrackedDevice = OculusXRHMD::ToEOculusXRTrackedDeviceType(cameraExtrinsics.AttachedToNode); - OculusXRHMD::FPose Pose; - static_cast(GEngine->XRSystem.Get())->ConvertPose(cameraExtrinsics.RelativePose, Pose); - camera.CalibratedRotation = Pose.Orientation.Rotator(); - camera.CalibratedOffset = Pose.Position; - camera.UserRotation = FRotator::ZeroRotator; - camera.UserOffset = FVector::ZeroVector; - TrackedCameras.Add(camera); - } - } -} - -TSharedPtr UOculusXRMRFunctionLibrary::GetTrackingSystem() -{ -#if OCULUS_HMD_SUPPORTED_PLATFORMS - if (GEngine && GEngine->XRSystem.IsValid()) - { - return GEngine->XRSystem; - } -#endif - return nullptr; -} - -bool UOculusXRMRFunctionLibrary::GetTrackingReferenceLocationAndRotationInWorldSpace(USceneComponent* TrackingReferenceComponent, FVector& TRLocation, FRotator& TRRotation) -{ - if (!TrackingReferenceComponent) - { - APlayerController* PlayerController = GWorld->GetFirstPlayerController(); - if (!PlayerController) - { - return false; - } - APawn* Pawn = PlayerController->GetPawn(); - if (!Pawn) - { - return false; - } - TRLocation = Pawn->GetActorLocation(); - TRRotation = Pawn->GetActorRotation(); - return true; - } - else - { - TRLocation = TrackingReferenceComponent->GetComponentLocation(); - TRRotation = TrackingReferenceComponent->GetComponentRotation(); - return true; - } -} - -UOculusXRMR_Settings* UOculusXRMRFunctionLibrary::GetOculusXRMRSettings() -{ - UOculusXRMR_Settings* Settings = nullptr; - if (FOculusXRMRModule::IsAvailable()) - { - Settings = FOculusXRMRModule::Get().GetMRSettings(); - } - return Settings; -} - -USceneComponent* UOculusXRMRFunctionLibrary::GetTrackingReferenceComponent() -{ - USceneComponent* TrackingRef = nullptr; - if (FOculusXRMRModule::IsAvailable()) - { - TrackingRef = FOculusXRMRModule::Get().GetMRState()->TrackingReferenceComponent; - } - return TrackingRef; -} - -bool UOculusXRMRFunctionLibrary::SetTrackingReferenceComponent(USceneComponent* Component) -{ - if (FOculusXRMRModule::IsAvailable()) - { - FOculusXRMRModule::Get().GetMRState()->TrackingReferenceComponent = Component; - return true; - } - return false; -} - -float UOculusXRMRFunctionLibrary::GetMrcScalingFactor() -{ - if (FOculusXRMRModule::IsAvailable()) - { - return FOculusXRMRModule::Get().GetMRState()->ScalingFactor; - } - return 0.0; -} - -bool UOculusXRMRFunctionLibrary::SetMrcScalingFactor(float ScalingFactor) -{ - if (FOculusXRMRModule::IsAvailable() && ScalingFactor > 0.0f) - { - FOculusXRMRModule::Get().GetMRState()->ScalingFactor = ScalingFactor; - return true; - } - return false; -} - -bool UOculusXRMRFunctionLibrary::IsMrcEnabled() -{ - return FOculusXRMRModule::IsAvailable() && FOculusXRMRModule::Get().IsInitialized(); -} - -bool UOculusXRMRFunctionLibrary::IsMrcActive() -{ - return FOculusXRMRModule::IsAvailable() && FOculusXRMRModule::Get().IsActive(); -} diff --git a/Plugins/MetaXR/Source/OculusXRMR/Private/OculusXRMRModule.cpp b/Plugins/MetaXR/Source/OculusXRMR/Private/OculusXRMRModule.cpp deleted file mode 100644 index 43097a1..0000000 --- a/Plugins/MetaXR/Source/OculusXRMR/Private/OculusXRMRModule.cpp +++ /dev/null @@ -1,541 +0,0 @@ -// @lint-ignore-every LICENSELINT -// Copyright Epic Games, Inc. All Rights Reserved. -#include "OculusXRMRModule.h" - -#include "Engine/Engine.h" -#include "ISpectatorScreenController.h" -#include "IXRTrackingSystem.h" -#include "StereoRendering.h" -#include "StereoRenderTargetManager.h" -#include "SceneCaptureComponent2D.h" -#include "Engine/TextureRenderTarget2D.h" -#include "EngineUtils.h" -#include "PostProcess/SceneRenderTargets.h" -#include "Kismet/GameplayStatics.h" -#include "OculusXRHMDModule.h" -#include "OculusXRHMD.h" -#include "OculusXRMRFunctionLibrary.h" -#include "OculusXRMRPrivate.h" -#include "OculusXRMR_Settings.h" -#include "OculusXRMR_State.h" -#include "OculusXRMR_CastingCameraActor.h" -#include "AudioDevice.h" -#if PLATFORM_ANDROID -#include "IVulkanDynamicRHI.h" -#endif - -#if WITH_EDITOR -#include "Editor.h" // for FEditorDelegates::PostPIEStarted -#endif - -#define LOCTEXT_NAMESPACE "OculusXRMR" - -FOculusXRMRModule::FOculusXRMRModule() - : bInitialized(false) - , MRSettings(nullptr) - , MRState(nullptr) - , MRActor(nullptr) - , CurrentWorld(nullptr) - , WorldAddedEventBinding() - , WorldDestroyedEventBinding() - , WorldLoadEventBinding() -#if PLATFORM_ANDROID - , bActivated(false) - , InitialWorldAddedEventBinding() - , InitialWorldLoadEventBinding() - , PreWorldTickEventBinding() -#endif -#if WITH_EDITOR - , PieBeginEventBinding() - , PieStartedEventBinding() - , PieEndedEventBinding() -#endif -{ -} - -FOculusXRMRModule::~FOculusXRMRModule() -{ -} - -void FOculusXRMRModule::StartupModule() -{ -#if OCULUS_MR_SUPPORTED_PLATFORMS -#if PLATFORM_WINDOWS - const TCHAR* CmdLine = FCommandLine::Get(); - const bool bAutoOpenFromParams = FParse::Param(CmdLine, TEXT("mixedreality")); - - if (bAutoOpenFromParams && FOculusXRHMDModule::Get().PreInit()) - { - if (FOculusXRHMDModule::GetPluginWrapper().GetInitialized()) - { - if (OVRP_SUCCESS(FOculusXRHMDModule::GetPluginWrapper().InitializeMixedReality())) - { - InitMixedRealityCapture(); - } - else - { - UE_LOG(LogMR, Error, TEXT("ovrp_InitializeMixedReality() failed")); - } - } - else - { - UE_LOG(LogMR, Error, TEXT("OVRPlugin has not been initialized")); - } - } -#elif PLATFORM_ANDROID - // On Android, FOculusXRHMDModule::GetPluginWrapper().Media_Initialize() needs OVRPlugin to be initialized first, so we should handle that when the world is created - if (GEngine) - { - InitialWorldAddedEventBinding = GEngine->OnWorldAdded().AddRaw(this, &FOculusXRMRModule::OnInitialWorldCreated); - } - InitialWorldLoadEventBinding = FCoreUObjectDelegates::PostLoadMapWithWorld.AddRaw(this, &FOculusXRMRModule::OnInitialWorldCreated); -#endif // PLATFORM_WINDOWS || PLATFORM_ANDROID -#endif // OCULUS_MR_SUPPORTED_PLATFORMS -} - -void FOculusXRMRModule::ShutdownModule() -{ -#if OCULUS_MR_SUPPORTED_PLATFORMS - if (bInitialized) - { - if (GEngine) - { - GEngine->OnWorldAdded().Remove(WorldAddedEventBinding); - GEngine->OnWorldDestroyed().Remove(WorldDestroyedEventBinding); - FCoreUObjectDelegates::PostLoadMapWithWorld.Remove(WorldLoadEventBinding); -#if WITH_EDITOR - FEditorDelegates::PostPIEStarted.Remove(PieStartedEventBinding); - FEditorDelegates::PrePIEEnded.Remove(PieEndedEventBinding); -#else - // Stop casting and close camera with module if it's the game - MRSettings->SetIsCasting(false); -#endif - } -#if PLATFORM_ANDROID - ovrpBool mediaInit = false; - if (OVRP_SUCCESS(FOculusXRHMDModule::GetPluginWrapper().Media_GetInitialized(&mediaInit)) && mediaInit == ovrpBool_True) - { - FOculusXRHMDModule::GetPluginWrapper().Media_Shutdown(); - } -#endif - FOculusXRHMDModule::GetPluginWrapper().ShutdownMixedReality(); - - if (MRSettings->IsRooted()) - { - MRSettings->RemoveFromRoot(); - } - if (MRState->IsRooted()) - { - MRState->RemoveFromRoot(); - } - } -#if PLATFORM_ANDROID - if (InitialWorldAddedEventBinding.IsValid() && GEngine) - { - GEngine->OnWorldAdded().Remove(InitialWorldAddedEventBinding); - InitialWorldAddedEventBinding.Reset(); - } - if (InitialWorldLoadEventBinding.IsValid()) - { - FCoreUObjectDelegates::PostLoadMapWithWorld.Remove(InitialWorldLoadEventBinding); - InitialWorldLoadEventBinding.Reset(); - } -#endif -#endif // OCULUS_MR_SUPPORTED_PLATFORMS -} - -bool FOculusXRMRModule::IsActive() -{ - bool bReturn = bInitialized && MRSettings && MRSettings->GetIsCasting(); -#if PLATFORM_ANDROID - bReturn = bReturn && bActivated; -#endif - return bReturn; -} - -UOculusXRMR_Settings* FOculusXRMRModule::GetMRSettings() -{ - return MRSettings; -} - -UOculusXRMR_State* FOculusXRMRModule::GetMRState() -{ - return MRState; -} - -void FOculusXRMRModule::OnWorldCreated(UWorld* NewWorld) -{ -#if PLATFORM_WINDOWS -#if WITH_EDITORONLY_DATA - const bool bIsGameInst = !IsRunningCommandlet() && NewWorld->IsGameWorld(); - if (bIsGameInst) -#endif - { - CurrentWorld = NewWorld; - SetupInGameCapture(); - } -#endif -#if PLATFORM_ANDROID - CurrentWorld = NewWorld; - // Check MRC activation state initially when loading world - ChangeCaptureState(); - // Poll MRC activation state for future changes - PreWorldTickEventBinding = FWorldDelegates::OnWorldPreActorTick.AddRaw(this, &FOculusXRMRModule::OnWorldTick); -#endif -} - -void FOculusXRMRModule::OnWorldDestroyed(UWorld* NewWorld) -{ - CurrentWorld = nullptr; -#if PLATFORM_ANDROID - if (PreWorldTickEventBinding.IsValid()) - { - FWorldDelegates::OnWorldPreActorTick.Remove(PreWorldTickEventBinding); - PreWorldTickEventBinding.Reset(); - } -#endif // PLATFORM_ANDROID -} - -void FOculusXRMRModule::InitMixedRealityCapture() -{ - bInitialized = true; - - MRSettings = NewObject((UObject*)GetTransientPackage(), FName("OculusXRMR_Settings"), RF_MarkAsRootSet); - MRState = NewObject((UObject*)GetTransientPackage(), FName("OculusXRMR_State"), RF_MarkAsRootSet); - - // Always bind the event handlers in case devs call them without MRC on - MRSettings->TrackedCameraIndexChangeDelegate.BindRaw(this, &FOculusXRMRModule::OnTrackedCameraIndexChanged); - MRSettings->CompositionMethodChangeDelegate.BindRaw(this, &FOculusXRMRModule::OnCompositionMethodChanged); - MRSettings->IsCastingChangeDelegate.BindRaw(this, &FOculusXRMRModule::OnIsCastingChanged); - - ResetSettingsAndState(); - - WorldAddedEventBinding = GEngine->OnWorldAdded().AddRaw(this, &FOculusXRMRModule::OnWorldCreated); - WorldDestroyedEventBinding = GEngine->OnWorldDestroyed().AddRaw(this, &FOculusXRMRModule::OnWorldDestroyed); - WorldLoadEventBinding = FCoreUObjectDelegates::PostLoadMapWithWorld.AddRaw(this, &FOculusXRMRModule::OnWorldCreated); - -#if WITH_EDITOR - // Bind events on PIE start/end to open/close camera - PieBeginEventBinding = FEditorDelegates::BeginPIE.AddRaw(this, &FOculusXRMRModule::OnPieBegin); - PieStartedEventBinding = FEditorDelegates::PostPIEStarted.AddRaw(this, &FOculusXRMRModule::OnPieStarted); - PieEndedEventBinding = FEditorDelegates::PrePIEEnded.AddRaw(this, &FOculusXRMRModule::OnPieEnded); -#else // WITH_EDITOR - // Start casting and open camera with the module if it's the game - MRSettings->SetIsCasting(true); -#endif // WITH_EDITOR -} - -void FOculusXRMRModule::SetupExternalCamera() -{ - using namespace OculusXRHMD; - - if (!MRSettings->GetIsCasting()) - { - return; - } - - // Always request the MRC actor to handle a camera state change on its end - MRState->ChangeCameraStateRequested = true; -} - -void FOculusXRMRModule::SetupInGameCapture() -{ - // Don't do anything if we don't have a UWorld or if we are not casting - if (CurrentWorld == nullptr || !MRSettings->GetIsCasting()) - { - return; - } - - // Set the bind camera request to true - MRState->BindToTrackedCameraIndexRequested = true; - - // Don't add another actor if there's already a MRC camera actor - for (TActorIterator ActorIt(CurrentWorld); ActorIt; ++ActorIt) - { - if (IsValidChecked(*ActorIt) && !ActorIt->IsUnreachable() && ActorIt->IsValidLowLevel()) - { - MRActor = *ActorIt; - return; - } - } - - // Spawn an MRC camera actor if one wasn't already there - MRActor = CurrentWorld->SpawnActorDeferred(AOculusXRMR_CastingCameraActor::StaticClass(), FTransform::Identity); - MRActor->InitializeStates(MRSettings, MRState); - UGameplayStatics::FinishSpawningActor(MRActor, FTransform::Identity); -} - -void FOculusXRMRModule::CloseInGameCapture() -{ - // Destory actor and close the camera when we turn MRC off - if (MRActor != nullptr && MRActor->GetWorld() != nullptr) - { - MRActor->Destroy(); - MRActor = nullptr; - } -} - -void FOculusXRMRModule::ResetSettingsAndState() -{ - // Reset MR State - MRState->TrackedCamera = FOculusXRTrackedCamera(); - MRState->TrackingReferenceComponent = nullptr; - MRState->ChangeCameraStateRequested = false; - MRState->BindToTrackedCameraIndexRequested = false; - - // Reset MR Settings - const bool bAutoOpenInExternalComposition = FParse::Param(FCommandLine::Get(), TEXT("externalcomposition")); - MRSettings->BindToTrackedCameraIndexIfAvailable(0); - MRSettings->LoadFromIni(); - - // Save right after load to write defaults to the config if they weren't already there - MRSettings->SaveToIni(); - - if (bAutoOpenInExternalComposition) - { - MRSettings->CompositionMethod = EOculusXRMR_CompositionMethod::ExternalComposition; - } -} - -#if PLATFORM_ANDROID -void FOculusXRMRModule::ChangeCaptureState() -{ - ovrpBool activated; - // Set up or close in-game capture when activation state changes - if (OVRP_SUCCESS(FOculusXRHMDModule::GetPluginWrapper().Media_Update()) && OVRP_SUCCESS(FOculusXRHMDModule::GetPluginWrapper().Media_IsMrcActivated(&activated)) && activated == ovrpBool_True) - { - if (!bActivated) - { - UE_LOG(LogMR, Log, TEXT("Activating MR Capture")) - bActivated = true; - - // UE resizes the main scene color and depth targets to the maximum dimensions of all rendertargets, - // which causes rendering issues if it doesn't match the compositor-allocated eye textures. This is - // a hacky fix by making sure that the scene capture rendertarget is no larger than the eye. - int frameWidth; - int frameHeight; - FOculusXRHMDModule::GetPluginWrapper().Media_GetMrcFrameSize(&frameWidth, &frameHeight); - uint32 maxWidth = frameWidth / 2; - uint32 maxHeight = frameHeight; - IStereoRenderTargetManager* const StereoRenderTargetManager = GEngine->StereoRenderingDevice->GetRenderTargetManager(); - if (StereoRenderTargetManager) - { -#ifdef WITH_OCULUS_BRANCH - StereoRenderTargetManager->CalculateRenderTargetSize(maxWidth, maxHeight); -#else // WITH_OCULUS_BRANCH - StereoRenderTargetManager->CalculateRenderTargetSize(*(FViewport*)GEngine->GameViewport->GetGameViewport(), maxWidth, maxHeight); -#endif // WITH_OCULUS_BRANCH - } - maxWidth *= 2; - frameWidth = frameWidth > maxWidth ? maxWidth : frameWidth; - frameHeight = frameHeight > maxHeight ? maxHeight : frameHeight; - FOculusXRHMDModule::GetPluginWrapper().Media_SetMrcFrameSize(frameWidth, frameHeight); - UE_LOG(LogMR, Log, TEXT("MRC Frame width: %d height %d"), frameWidth, frameHeight); - - SetupInGameCapture(); - } - } - else - { - if (bActivated) - { - UE_LOG(LogMR, Log, TEXT("Deactivating MR Capture")) - bActivated = false; - CloseInGameCapture(); - } - } -} - -void FOculusXRMRModule::OnWorldTick(UWorld* World, ELevelTick Tick, float Delta) -{ - // Poll MRC activation state - if (CurrentWorld && World == CurrentWorld) - { - ChangeCaptureState(); - } -} - -void FOculusXRMRModule::OnInitialWorldCreated(UWorld* NewWorld) -{ - // Remove the initial world load handlers - if (InitialWorldAddedEventBinding.IsValid()) - { - GEngine->OnWorldAdded().Remove(InitialWorldAddedEventBinding); - InitialWorldAddedEventBinding.Reset(); - } - if (InitialWorldLoadEventBinding.IsValid()) - { - FCoreUObjectDelegates::PostLoadMapWithWorld.Remove(InitialWorldLoadEventBinding); - InitialWorldLoadEventBinding.Reset(); - } - - // Initialize and check if MRC is enabled - if (FOculusXRHMDModule::Get().PreInit()) - { - if (FOculusXRHMDModule::GetPluginWrapper().GetInitialized()) - { - if (OVRP_SUCCESS(FOculusXRHMDModule::GetPluginWrapper().InitializeMixedReality())) - { - ovrpBool mrcEnabled; - - if (OVRP_SUCCESS(FOculusXRHMDModule::GetPluginWrapper().Media_Initialize())) - { - UE_LOG(LogMR, Log, TEXT("MRC Initialized")); - - if (OVRP_SUCCESS(FOculusXRHMDModule::GetPluginWrapper().Media_IsMrcEnabled(&mrcEnabled)) && mrcEnabled == ovrpBool_True) - { - UE_LOG(LogMR, Log, TEXT("MRC Enabled")); - - // Find a free queue index for vulkan - if (RHIGetInterfaceType() == ERHIInterfaceType::Vulkan) - { - unsigned int queueIndex = 0; - ExecuteOnRenderThread([&queueIndex]() { - ExecuteOnRHIThread([&queueIndex]() { - const uint32 GraphicsQueueIndex = GetIVulkanDynamicRHI()->RHIGetGraphicsQueueIndex(); - if (GraphicsQueueIndex == queueIndex) - { - ++queueIndex; - } - }); - }); - FOculusXRHMDModule::GetPluginWrapper().Media_SetAvailableQueueIndexVulkan(queueIndex); - } - - FOculusXRHMDModule::GetPluginWrapper().Media_SetMrcInputVideoBufferType(ovrpMediaInputVideoBufferType_TextureHandle); - - FAudioDeviceHandle AudioDevice = FAudioDevice::GetMainAudioDevice(); - if (AudioDevice.GetAudioDevice()) - { - float SampleRate = AudioDevice->GetSampleRate(); - FOculusXRHMDModule::GetPluginWrapper().Media_SetMrcAudioSampleRate((int)SampleRate); - } - - InitMixedRealityCapture(); - OnWorldCreated(NewWorld); - } - else - { - // Shut down if MRC not enabled or the media couldn't be enabled - FOculusXRHMDModule::GetPluginWrapper().Media_Shutdown(); - FOculusXRHMDModule::GetPluginWrapper().ShutdownMixedReality(); - } - } - else - { - // Shut down if MRC not enabled or the media couldn't be enabled - FOculusXRHMDModule::GetPluginWrapper().ShutdownMixedReality(); - } - } - else - { - UE_LOG(LogMR, Error, TEXT("ovrp_InitializeMixedReality() failed")); - } - } - else - { - UE_LOG(LogMR, Error, TEXT("OVRPlugin has not been initialized")); - } - } -} -#endif - -void FOculusXRMRModule::OnTrackedCameraIndexChanged(int OldVal, int NewVal) -{ - if (OldVal == NewVal) - { - return; - } - MRState->BindToTrackedCameraIndexRequested = true; -} - -void FOculusXRMRModule::OnCompositionMethodChanged(EOculusXRMR_CompositionMethod OldVal, EOculusXRMR_CompositionMethod NewVal) -{ - if (OldVal == NewVal) - { - return; - } - SetupExternalCamera(); -} - -void FOculusXRMRModule::OnIsCastingChanged(bool OldVal, bool NewVal) -{ - if (OldVal == NewVal) - { - return; - } - if (NewVal == true) - { -#if PLATFORM_ANDROID - FOculusXRHMDModule::GetPluginWrapper().Media_SetMrcActivationMode(ovrpMediaMrcActivationMode_Automatic); -#endif - // Initialize everything again if we turn MRC on - SetupExternalCamera(); - SetupInGameCapture(); - } - else - { -#if PLATFORM_ANDROID - FOculusXRHMDModule::GetPluginWrapper().Media_SetMrcActivationMode(ovrpMediaMrcActivationMode_Disabled); -#endif - CloseInGameCapture(); - } -} - -void FOculusXRMRModule::OnUseDynamicLightingChanged(bool OldVal, bool NewVal) -{ - if (OldVal == NewVal) - { - return; - } - SetupExternalCamera(); -} - -void FOculusXRMRModule::OnDepthQualityChanged(EOculusXRMR_DepthQuality OldVal, EOculusXRMR_DepthQuality NewVal) -{ - if (OldVal == NewVal) - { - return; - } - SetupExternalCamera(); -} - -#if WITH_EDITOR -void FOculusXRMRModule::OnPieBegin(bool bIsSimulating) -{ - // Reset all the parameters and start casting when PIE starts but before the game is initialized - if (!bIsSimulating) - { - - ResetSettingsAndState(); - - // Always start casting with PIE (since this can only be reached if the command line param is on) - MRSettings->SetIsCasting(true); - } -} - -void FOculusXRMRModule::OnPieStarted(bool bIsSimulating) -{ - // Handle the PIE world as a normal game world - UWorld* PieWorld = GEditor->GetPIEWorldContext()->World(); - if (!bIsSimulating && PieWorld) - { - OnWorldCreated(PieWorld); - } -} - -void FOculusXRMRModule::OnPieEnded(bool bIsSimulating) -{ - UWorld* PieWorld = GEditor->GetPIEWorldContext()->World(); - if (!bIsSimulating && PieWorld) - { - // Stop casting when PIE ends - MRSettings->SetIsCasting(false); - OnWorldDestroyed(PieWorld); - } -} -#endif // WITH_EDITOR - -IMPLEMENT_MODULE(FOculusXRMRModule, OculusXRMR) - -#undef LOCTEXT_NAMESPACE diff --git a/Plugins/MetaXR/Source/OculusXRMR/Private/OculusXRMRModule.h b/Plugins/MetaXR/Source/OculusXRMR/Private/OculusXRMRModule.h deleted file mode 100644 index 9daa5ea..0000000 --- a/Plugins/MetaXR/Source/OculusXRMR/Private/OculusXRMRModule.h +++ /dev/null @@ -1,97 +0,0 @@ -// @lint-ignore-every LICENSELINT -// Copyright Epic Games, Inc. All Rights Reserved. - -#pragma once -#include "IOculusXRMRModule.h" -#include "Engine/EngineBaseTypes.h" - -#define LOCTEXT_NAMESPACE "OculusXRMR" - -enum class EOculusXRMR_CompositionMethod : uint8; -enum class EOculusXRMR_DepthQuality : uint8; - -class UOculusXRMR_Settings; -class AOculusXRMR_CastingCameraActor; -class UOculusXRMR_State; - -//------------------------------------------------------------------------------------------------- -// FOculusXRInputModule -//------------------------------------------------------------------------------------------------- - -class FOculusXRMRModule : public IOculusXRMRModule -{ -public: - FOculusXRMRModule(); - ~FOculusXRMRModule(); - - static inline FOculusXRMRModule& Get() - { - return FModuleManager::GetModuleChecked("OculusXRMR"); - } - - // IOculusXRMRModule - virtual void StartupModule() override; - virtual void ShutdownModule() override; - - bool IsInitialized() { return bInitialized; } - - bool IsActive(); - UOculusXRMR_Settings* GetMRSettings(); - UOculusXRMR_State* GetMRState(); - -private: - bool bInitialized; - UOculusXRMR_Settings* MRSettings; - UOculusXRMR_State* MRState; - AOculusXRMR_CastingCameraActor* MRActor; - UWorld* CurrentWorld; - - FDelegateHandle WorldAddedEventBinding; - FDelegateHandle WorldDestroyedEventBinding; - FDelegateHandle WorldLoadEventBinding; - - void InitMixedRealityCapture(); - - /** Initialize the tracked physical camera */ - void SetupExternalCamera(); - /** Set up the needed settings and actors for MRC in-game */ - void SetupInGameCapture(); - /** Destroy actors for MRC in-game */ - void CloseInGameCapture(); - /** Reset all the MRC settings and state to the config and default */ - void ResetSettingsAndState(); - - /** Handle changes on specific settings */ - void OnCompositionMethodChanged(EOculusXRMR_CompositionMethod OldVal, EOculusXRMR_CompositionMethod NewVal); - void OnIsCastingChanged(bool OldVal, bool NewVal); - void OnUseDynamicLightingChanged(bool OldVal, bool NewVal); - void OnDepthQualityChanged(EOculusXRMR_DepthQuality OldVal, EOculusXRMR_DepthQuality NewVal); - void OnTrackedCameraIndexChanged(int OldVal, int NewVal); - - void OnWorldCreated(UWorld* NewWorld); - void OnWorldDestroyed(UWorld* NewWorld); - -#if PLATFORM_ANDROID - bool bActivated; - - FDelegateHandle InitialWorldAddedEventBinding; - FDelegateHandle InitialWorldLoadEventBinding; - FDelegateHandle PreWorldTickEventBinding; - - void ChangeCaptureState(); - void OnWorldTick(UWorld* World, ELevelTick Tick, float Delta); - void OnInitialWorldCreated(UWorld* NewWorld); -#endif - -#if WITH_EDITOR - FDelegateHandle PieBeginEventBinding; - FDelegateHandle PieStartedEventBinding; - FDelegateHandle PieEndedEventBinding; - - void OnPieBegin(bool bIsSimulating); - void OnPieStarted(bool bIsSimulating); - void OnPieEnded(bool bIsSimulating); -#endif -}; - -#undef LOCTEXT_NAMESPACE diff --git a/Plugins/MetaXR/Source/OculusXRMR/Private/OculusXRMRPrivate.h b/Plugins/MetaXR/Source/OculusXRMR/Private/OculusXRMRPrivate.h deleted file mode 100644 index 9aca9bc..0000000 --- a/Plugins/MetaXR/Source/OculusXRMR/Private/OculusXRMRPrivate.h +++ /dev/null @@ -1,12 +0,0 @@ -// @lint-ignore-every LICENSELINT -// Copyright Epic Games, Inc. All Rights Reserved. -#pragma once - -#include "IOculusXRMRModule.h" -#include "CoreMinimal.h" - -#include "OculusXRPluginWrapper.h" - -#if OCULUS_MR_SUPPORTED_PLATFORMS -DEFINE_LOG_CATEGORY_STATIC(LogMR, Log, All); -#endif // OCULUS_MR_SUPPORTED_PLATFORMS diff --git a/Plugins/MetaXR/Source/OculusXRMR/Private/OculusXRMR_CastingCameraActor.cpp b/Plugins/MetaXR/Source/OculusXRMR/Private/OculusXRMR_CastingCameraActor.cpp deleted file mode 100644 index f5a55af..0000000 --- a/Plugins/MetaXR/Source/OculusXRMR/Private/OculusXRMR_CastingCameraActor.cpp +++ /dev/null @@ -1,869 +0,0 @@ -// @lint-ignore-every LICENSELINT -// Copyright Epic Games, Inc. All Rights Reserved. - -#include "OculusXRMR_CastingCameraActor.h" - -#include "OculusXRMRPrivate.h" -#include "OculusXRHMD_Settings.h" -#include "OculusXRHMD.h" -#include "OculusXRHMD_SpectatorScreenController.h" -#include "OculusXRMRModule.h" -#include "OculusXRMR_Settings.h" -#include "OculusXRMR_State.h" -#include "OculusXRMR_PlaneMeshComponent.h" -#include "OculusXRMRFunctionLibrary.h" -#include "Components/StaticMeshComponent.h" -#include "Components/SceneCaptureComponent2D.h" -#include "UObject/ConstructorHelpers.h" -#include "Engine/Engine.h" -#include "Engine/World.h" -#include "GameFramework/PlayerController.h" -#include "GameFramework/WorldSettings.h" -#include "Engine/TextureRenderTarget2D.h" -#include "Rendering/Texture2DResource.h" -#include "RenderingThread.h" -#include "Materials/MaterialInstanceDynamic.h" -#include "VRNotificationsComponent.h" -#include "RenderUtils.h" -#include "AudioDevice.h" -#include "Materials/Material.h" -#include "RHIDefinitions.h" -#include "DataDrivenShaderPlatformInfo.h" - -#define LOCTEXT_NAMESPACE "OculusXRMR_CastingCameraActor" - -// Possibly add 2=Limited in a future update -static TAutoConsoleVariable CEnableExternalCompositionPostProcess(TEXT("oculus.mr.ExternalCompositionPostProcess"), 0, TEXT("Enable MR external composition post process: 0=Off, 1=On")); -static TAutoConsoleVariable COverrideMixedRealityParametersVar(TEXT("oculus.mr.OverrideParameters"), 0, TEXT("Use the Mixed Reality console variables")); - -namespace -{ - bool GetCameraTrackedObjectPoseInTrackingSpace(OculusXRHMD::FOculusXRHMD* OculusXRHMD, const FOculusXRTrackedCamera& TrackedCamera, OculusXRHMD::FPose& CameraTrackedObjectPose) - { - using namespace OculusXRHMD; - - CameraTrackedObjectPose = FPose(FQuat::Identity, FVector::ZeroVector); - - if (TrackedCamera.AttachedTrackedDevice != EOculusXRTrackedDeviceType::None) - { - ovrpResult result = ovrpSuccess; - ovrpPoseStatef cameraPoseState; - ovrpNode deviceNode = ToOvrpNode(TrackedCamera.AttachedTrackedDevice); - ovrpBool nodePresent = ovrpBool_False; - result = FOculusXRHMDModule::GetPluginWrapper().GetNodePresent2(deviceNode, &nodePresent); - if (OVRP_FAILURE(result)) - { - UE_LOG(LogMR, Warning, TEXT("Unable to check if AttachedTrackedDevice is present")); - return false; - } - if (!nodePresent) - { - UE_LOG(LogMR, Warning, TEXT("AttachedTrackedDevice is not present")); - return false; - } - - OculusXRHMD::FGameFrame* CurrentFrame; - if (IsInGameThread()) - { - CurrentFrame = OculusXRHMD->GetNextFrameToRender(); - } - else - { - CurrentFrame = OculusXRHMD->GetFrame_RenderThread(); - } - - result = CurrentFrame ? FOculusXRHMDModule::GetPluginWrapper().GetNodePoseState3(ovrpStep_Render, CurrentFrame->FrameNumber, deviceNode, &cameraPoseState) : ovrpFailure; - if (OVRP_FAILURE(result)) - { - UE_LOG(LogMR, Warning, TEXT("Unable to retrieve AttachedTrackedDevice pose state")); - return false; - } - OculusXRHMD->ConvertPose(cameraPoseState.Pose, CameraTrackedObjectPose); - } - - return true; - } -} // namespace - -////////////////////////////////////////////////////////////////////////// -// ACastingCameraActor - -AOculusXRMR_CastingCameraActor::AOculusXRMR_CastingCameraActor(const FObjectInitializer& ObjectInitializer) - : Super(ObjectInitializer) - , TrackedCameraCalibrationRequired(false) - , HasTrackedCameraCalibrationCalibrated(false) - , RefreshBoundaryMeshCounter(3) - , ForegroundLayerBackgroundColor(FColor::Green) - , ForegroundMaxDistance(300.0f) -{ - PrimaryActorTick.bCanEverTick = true; - PrimaryActorTick.bTickEvenWhenPaused = true; - - VRNotificationComponent = CreateDefaultSubobject(TEXT("VRNotificationComponent")); - -#if PLATFORM_WINDOWS - PlaneMeshComponent = CreateDefaultSubobject(TEXT("PlaneMeshComponent")); - PlaneMeshComponent->AttachToComponent(GetRootComponent(), FAttachmentTransformRules::KeepRelativeTransform); - PlaneMeshComponent->ResetRelativeTransform(); - PlaneMeshComponent->SetVisibility(false); -#endif - - OpaqueColoredMaterial = Cast(StaticLoadObject(UMaterial::StaticClass(), nullptr, TEXT("/OculusXR/Materials/OculusMR_OpaqueColoredMaterial"))); - if (!OpaqueColoredMaterial) - { - UE_LOG(LogMR, Warning, TEXT("Invalid OpaqueColoredMaterial")); - } - - // Structure to hold one-time initialization - struct FConstructorStatics - { - ConstructorHelpers::FObjectFinder WhiteSquareTexture; - - FConstructorStatics() - : WhiteSquareTexture(TEXT("/Engine/EngineResources/WhiteSquareTexture")) - { - } - }; - static FConstructorStatics ConstructorStatics; - - DefaultTexture_White = ConstructorStatics.WhiteSquareTexture.Object; - check(DefaultTexture_White); - - ForegroundCaptureActor = nullptr; - - // Set the render targets for background and foreground to copies of the default texture -#if PLATFORM_WINDOWS - BackgroundRenderTargets.SetNum(1); - ForegroundRenderTargets.SetNum(1); - - BackgroundRenderTargets[0] = NewObject(); - BackgroundRenderTargets[0]->RenderTargetFormat = RTF_RGBA8_SRGB; - - ForegroundRenderTargets[0] = NewObject(); - ForegroundRenderTargets[0]->RenderTargetFormat = RTF_RGBA8_SRGB; -#elif PLATFORM_ANDROID - BackgroundRenderTargets.SetNum(NumRTs); - ForegroundRenderTargets.SetNum(NumRTs); - AudioBuffers.SetNum(NumRTs); - AudioTimes.SetNum(NumRTs); - PoseTimes.SetNum(NumRTs); - - for (unsigned int i = 0; i < NumRTs; ++i) - { - BackgroundRenderTargets[i] = NewObject(); - BackgroundRenderTargets[i]->RenderTargetFormat = RTF_RGBA8_SRGB; - - ForegroundRenderTargets[i] = NewObject(); - ForegroundRenderTargets[i]->RenderTargetFormat = RTF_RGBA8_SRGB; - - AudioTimes[i] = 0.0; - PoseTimes[i] = 0.0; - } - - SyncId = -1; - RenderedRTs = 0; - CaptureIndex = 0; -#endif -} - -void AOculusXRMR_CastingCameraActor::BeginDestroy() -{ - CloseTrackedCamera(); - Super::BeginDestroy(); -} - -bool AOculusXRMR_CastingCameraActor::RefreshExternalCamera() -{ - using namespace OculusXRHMD; - if (MRState->TrackedCamera.Index >= 0) - { - int cameraCount; - if (OVRP_FAILURE(FOculusXRHMDModule::GetPluginWrapper().GetExternalCameraCount(&cameraCount))) - { - cameraCount = 0; - } - if (MRState->TrackedCamera.Index >= cameraCount) - { - UE_LOG(LogMR, Error, TEXT("Invalid TrackedCamera Index")); - return false; - } - FOculusXRHMD* OculusXRHMD = GEngine->XRSystem.IsValid() ? (FOculusXRHMD*)(GEngine->XRSystem->GetHMDDevice()) : nullptr; - if (!OculusXRHMD) - { - UE_LOG(LogMR, Error, TEXT("Unable to retrieve OculusXRHMD")); - return false; - } - ovrpResult result = ovrpSuccess; - ovrpCameraExtrinsics cameraExtrinsics; - result = FOculusXRHMDModule::GetPluginWrapper().GetExternalCameraExtrinsics(MRState->TrackedCamera.Index, &cameraExtrinsics); - if (OVRP_FAILURE(result)) - { - UE_LOG(LogMR, Error, TEXT("FOculusXRHMDModule::GetPluginWrapper().GetExternalCameraExtrinsics failed")); - return false; - } - MRState->TrackedCamera.AttachedTrackedDevice = OculusXRHMD::ToEOculusXRTrackedDeviceType(cameraExtrinsics.AttachedToNode); - OculusXRHMD::FPose Pose; - OculusXRHMD->ConvertPose(cameraExtrinsics.RelativePose, Pose); - MRState->TrackedCamera.CalibratedRotation = Pose.Orientation.Rotator(); - MRState->TrackedCamera.CalibratedOffset = Pose.Position; - MRState->TrackedCamera.UpdateTime = cameraExtrinsics.LastChangedTimeSeconds; - } - - return true; -} - -void AOculusXRMR_CastingCameraActor::BeginPlay() -{ - Super::BeginPlay(); - - SetupTrackedCamera(); - RequestTrackedCameraCalibration(); - SetupMRCScreen(); - - FScriptDelegate Delegate; - Delegate.BindUFunction(this, FName(TEXT("OnHMDRecentered"))); - VRNotificationComponent->HMDRecenteredDelegate.Add(Delegate); - -#if PLATFORM_ANDROID - FAudioDeviceHandle AudioDevice = FAudioDevice::GetMainAudioDevice(); - if (AudioDevice.GetAudioDevice()) - { - AudioDevice->StartRecording(nullptr, 0.1); - } -#endif -} - -void AOculusXRMR_CastingCameraActor::EndPlay(EEndPlayReason::Type Reason) -{ -#if PLATFORM_ANDROID - FAudioDeviceHandle AudioDevice = FAudioDevice::GetMainAudioDevice(); - if (AudioDevice.GetAudioDevice()) - { - float NumChannels = 2; - float SampleRate = AudioDevice->GetSampleRate(); - AudioDevice->StopRecording(nullptr, NumChannels, SampleRate); - } -#endif - - VRNotificationComponent->HMDRecenteredDelegate.Remove(this, FName(TEXT("OnHMDRecentered"))); - - MRState->TrackingReferenceComponent = nullptr; - - CloseMRCScreen(); - - CloseTrackedCamera(); - Super::EndPlay(Reason); -} - -void AOculusXRMR_CastingCameraActor::Tick(float DeltaTime) -{ - Super::Tick(DeltaTime); - - if (MRState->BindToTrackedCameraIndexRequested) - { - Execute_BindToTrackedCameraIndexIfAvailable(); - } - - if (!RefreshExternalCamera()) - { - CloseTrackedCamera(); - return; - } - - // Reset capturing components if the composition method changes - if (MRState->ChangeCameraStateRequested) - { - CloseTrackedCamera(); - CloseMRCScreen(); - SetupTrackedCamera(); - SetupMRCScreen(); - } - -#if PLATFORM_WINDOWS - if (MRSettings->GetCompositionMethod() == EOculusXRMR_CompositionMethod::ExternalComposition) -#endif - { - if (ForegroundLayerBackgroundColor != MRSettings->BackdropColor) - { - ForegroundLayerBackgroundColor = MRSettings->BackdropColor; - SetBackdropMaterialColor(); - } - // Enable external composition post process based on setting - bool bPostProcess = MRSettings->ExternalCompositionPostProcessEffects != EOculusXRMR_PostProcessEffects::PPE_Off; - if (COverrideMixedRealityParametersVar.GetValueOnAnyThread() > 0) - { - bPostProcess = CEnableExternalCompositionPostProcess.GetValueOnAnyThread() > 0; - } - GetCaptureComponent2D()->ShowFlags.PostProcessing = bPostProcess; - if (ForegroundCaptureActor) - { - ForegroundCaptureActor->GetCaptureComponent2D()->ShowFlags.PostProcessing = bPostProcess; - } - } - - if (TrackedCameraCalibrationRequired) - { - CalibrateTrackedCameraPose(); - } - - UpdateTrackedCameraPosition(); - -#if PLATFORM_WINDOWS - RepositionPlaneMesh(); -#endif - - UpdateRenderTargetSize(); - -#if PLATFORM_ANDROID - OculusXRHMD::FOculusXRHMD* OculusXRHMD = GEngine->XRSystem.IsValid() ? (OculusXRHMD::FOculusXRHMD*)(GEngine->XRSystem->GetHMDDevice()) : nullptr; - if (OculusXRHMD) - { - ovrpPosef OvrpPose, OvrpHeadPose, OvrpLeftHandPose, OvrpRightHandPose; - FOculusXRHMDModule::GetPluginWrapper().GetTrackingTransformRelativePose(&OvrpPose, ovrpTrackingOrigin_Stage); - OculusXRHMD::FPose StageToLocalPose; - OculusXRHMD->ConvertPose(OvrpPose, StageToLocalPose); - OculusXRHMD::FPose LocalToStagePose = StageToLocalPose.Inverse(); - - OculusXRHMD::FPose HeadPose; - OculusXRHMD->GetCurrentPose(OculusXRHMD::ToExternalDeviceId(ovrpNode_Head), HeadPose.Orientation, HeadPose.Position); - HeadPose = LocalToStagePose * HeadPose; - OculusXRHMD->ConvertPose(HeadPose, OvrpHeadPose); - - OculusXRHMD::FPose LeftHandPose; - OculusXRHMD->GetCurrentPose(OculusXRHMD::ToExternalDeviceId(ovrpNode_HandLeft), HeadPose.Orientation, HeadPose.Position); - LeftHandPose = LocalToStagePose * LeftHandPose; - OculusXRHMD->ConvertPose(LeftHandPose, OvrpLeftHandPose); - - OculusXRHMD::FPose RightHandPose; - OculusXRHMD->GetCurrentPose(OculusXRHMD::ToExternalDeviceId(ovrpNode_HandRight), HeadPose.Orientation, HeadPose.Position); - RightHandPose = LocalToStagePose * RightHandPose; - OculusXRHMD->ConvertPose(RightHandPose, OvrpRightHandPose); - - FOculusXRHMDModule::GetPluginWrapper().Media_SetHeadsetControllerPose(OvrpHeadPose, OvrpLeftHandPose, OvrpRightHandPose); - } - - // Alternate foreground and background captures by nulling the capture component texture target - if (GetCaptureComponent2D()->IsVisible()) - { - GetCaptureComponent2D()->SetVisibility(false); - - // Encode a texture the frame before we render to it again to ensure completed render at the cost of latency - unsigned int EncodeIndex = (CaptureIndex + 1) % NumRTs; - - // Skip encoding for the first few frames before they have completed rendering - if (RenderedRTs > EncodeIndex) - { - FOculusXRHMDModule::GetPluginWrapper().Media_SyncMrcFrame(SyncId); - - int NumChannels = 2; - double AudioTime = AudioTimes[EncodeIndex]; - void* BackgroundTexture; - void* ForegroundTexture; - - if (IsVulkanPlatform(GMaxRHIShaderPlatform)) - { - ExecuteOnRenderThread([this, EncodeIndex, &BackgroundTexture, &ForegroundTexture]() { - ExecuteOnRHIThread([this, EncodeIndex, &BackgroundTexture, &ForegroundTexture]() { - // The Vulkan RHI's implementation of GetNativeResource is different and returns the VkImage cast - // as a void* instead of a pointer to the VkImage, so we need this workaround - BackgroundTexture = (void*)BackgroundRenderTargets[EncodeIndex]->GetResource()->TextureRHI->GetNativeResource(); - ForegroundTexture = (void*)ForegroundRenderTargets[EncodeIndex]->GetResource()->TextureRHI->GetNativeResource(); - }); - }); - } - else - { - ExecuteOnRenderThread([this, EncodeIndex, &BackgroundTexture, &ForegroundTexture]() { - ExecuteOnRHIThread([this, EncodeIndex, &BackgroundTexture, &ForegroundTexture]() { - BackgroundTexture = *((void**)BackgroundRenderTargets[EncodeIndex]->GetResource()->TextureRHI->GetNativeResource()); - ForegroundTexture = *((void**)ForegroundRenderTargets[EncodeIndex]->GetResource()->TextureRHI->GetNativeResource()); - }); - }); - } - FOculusXRHMDModule::GetPluginWrapper().Media_EncodeMrcFrameDualTexturesWithPoseTime(BackgroundTexture, ForegroundTexture, AudioBuffers[EncodeIndex].GetData(), AudioBuffers[EncodeIndex].Num() * sizeof(float), NumChannels, AudioTime, PoseTimes[CaptureIndex], &SyncId); - } - ForegroundCaptureActor->GetCaptureComponent2D()->SetVisibility(true); - } - else if (ForegroundCaptureActor && ForegroundCaptureActor->GetCaptureComponent2D()->IsVisible()) - { - ForegroundCaptureActor->GetCaptureComponent2D()->SetVisibility(false); - - // Increment scene captures to next texture - CaptureIndex = (CaptureIndex + 1) % NumRTs; - GetCaptureComponent2D()->TextureTarget = BackgroundRenderTargets[CaptureIndex]; - ForegroundCaptureActor->GetCaptureComponent2D()->TextureTarget = ForegroundRenderTargets[CaptureIndex]; - GetCaptureComponent2D()->SetVisibility(true); - - FAudioDeviceHandle AudioDevice = FAudioDevice::GetMainAudioDevice(); - if (AudioDevice.GetAudioDevice()) - { - float NumChannels, SampleRate; - NumChannels = 2; - SampleRate = AudioDevice->GetSampleRate(); - AudioBuffers[CaptureIndex] = AudioDevice->StopRecording(nullptr, NumChannels, SampleRate); - AudioTimes[CaptureIndex] = AudioDevice->GetAudioTime(); - // UE_LOG(LogMR, Error, TEXT("SampleRate: %f, NumChannels: %f, Time: %f, Buffer Length: %d, Buffer: %p"), SampleRate, NumChannels, AudioDevice->GetAudioTime(), AudioBuffers[EncodeIndex].Num(), AudioBuffers[EncodeIndex].GetData()); - AudioDevice->StartRecording(nullptr, 0.1); - } - - // PoseTimes[CaptureIndex] = MRState->TrackedCamera.UpdateTime; - - // Increment this counter for the initial cycle through "swapchain" - if (RenderedRTs < NumRTs) - { - RenderedRTs++; - } - } -#endif -} - -void AOculusXRMR_CastingCameraActor::Execute_BindToTrackedCameraIndexIfAvailable() -{ - if (!MRState->BindToTrackedCameraIndexRequested) - { - return; - } - - FOculusXRTrackedCamera TempTrackedCamera; - if (MRSettings->GetBindToTrackedCameraIndex() >= 0) - { - TArray TrackedCameras; - UOculusXRMRFunctionLibrary::GetAllTrackedCamera(TrackedCameras); - int i; - for (i = 0; i < TrackedCameras.Num(); ++i) - { - if (TrackedCameras[i].Index == MRSettings->GetBindToTrackedCameraIndex()) - { - TempTrackedCamera = TrackedCameras[i]; - break; - } - } - if (i == TrackedCameras.Num()) - { - UE_LOG(LogMR, Warning, TEXT("Unable to find TrackedCamera at index %d, use TempTrackedCamera"), MRSettings->GetBindToTrackedCameraIndex()); - } - } - else - { - UE_LOG(LogMR, Warning, TEXT("BindToTrackedCameraIndex == %d, use TempTrackedCamera"), MRSettings->GetBindToTrackedCameraIndex()); - } - - MRState->TrackedCamera = TempTrackedCamera; - if (MRState->TrackedCamera.Index < 0) - { - SetTrackedCameraUserPoseWithCameraTransform(); - } - - MRState->BindToTrackedCameraIndexRequested = false; -} - -void AOculusXRMR_CastingCameraActor::RequestTrackedCameraCalibration() -{ - TrackedCameraCalibrationRequired = true; -} - -void AOculusXRMR_CastingCameraActor::CalibrateTrackedCameraPose() -{ - SetTrackedCameraInitialPoseWithPlayerTransform(); - HasTrackedCameraCalibrationCalibrated = true; - TrackedCameraCalibrationRequired = false; -} - -void AOculusXRMR_CastingCameraActor::SetTrackedCameraInitialPoseWithPlayerTransform() -{ - using namespace OculusXRHMD; - - FOculusXRHMD* OculusXRHMD = GEngine->XRSystem.IsValid() ? (FOculusXRHMD*)(GEngine->XRSystem->GetHMDDevice()) : nullptr; - if (!OculusXRHMD) - { - UE_LOG(LogMR, Warning, TEXT("Unable to retrieve OculusXRHMD")); - return; - } - - FPose CameraTrackedObjectPose; - if (!GetCameraTrackedObjectPoseInTrackingSpace(OculusXRHMD, MRState->TrackedCamera, CameraTrackedObjectPose)) - { - return; - } - - FPose CameraPose = CameraTrackedObjectPose * FPose(MRState->TrackedCamera.CalibratedRotation.Quaternion(), MRState->TrackedCamera.CalibratedOffset); - CameraPose = CameraPose * FPose(MRState->TrackedCamera.UserRotation.Quaternion(), MRState->TrackedCamera.UserOffset); - - FQuat TROrientation; - FVector TRLocation; - FRotator TRRotation; - if (!UOculusXRMRFunctionLibrary::GetTrackingReferenceLocationAndRotationInWorldSpace(MRState->TrackingReferenceComponent, TRLocation, TRRotation)) - { - UE_LOG(LogMR, Warning, TEXT("Could not get player position")); - return; - } - - TROrientation = TRRotation.Quaternion(); - FPose FinalPose = FPose(TROrientation, TRLocation) * CameraPose; - - InitialCameraAbsoluteOrientation = FinalPose.Orientation; - InitialCameraAbsolutePosition = FinalPose.Position; - InitialCameraRelativeOrientation = CameraPose.Orientation; - InitialCameraRelativePosition = CameraPose.Position; - - GetCaptureComponent2D()->FOVAngle = MRState->TrackedCamera.FieldOfView; - - if (ForegroundCaptureActor) - { - ForegroundCaptureActor->GetCaptureComponent2D()->FOVAngle = MRState->TrackedCamera.FieldOfView; - } -} - -void AOculusXRMR_CastingCameraActor::SetTrackedCameraUserPoseWithCameraTransform() -{ - using namespace OculusXRHMD; - - FOculusXRHMD* OculusXRHMD = GEngine->XRSystem.IsValid() ? (FOculusXRHMD*)(GEngine->XRSystem->GetHMDDevice()) : nullptr; - if (!OculusXRHMD) - { - UE_LOG(LogMR, Warning, TEXT("Unable to retrieve OculusXRHMD")); - return; - } - - FPose CameraTrackedObjectPose; - if (!GetCameraTrackedObjectPoseInTrackingSpace(OculusXRHMD, MRState->TrackedCamera, CameraTrackedObjectPose)) - { - return; - } - - FPose CameraPose = CameraTrackedObjectPose * FPose(MRState->TrackedCamera.CalibratedRotation.Quaternion(), MRState->TrackedCamera.CalibratedOffset); - - FQuat TROrientation; - FVector TRLocation; - FRotator TRRotation; - if (!UOculusXRMRFunctionLibrary::GetTrackingReferenceLocationAndRotationInWorldSpace(MRState->TrackingReferenceComponent, TRLocation, TRRotation)) - { - UE_LOG(LogMR, Warning, TEXT("Could not get player position")); - return; - } - TROrientation = TRRotation.Quaternion(); - FPose PlayerPose(TROrientation, TRLocation); - FPose CurrentCameraPose = PlayerPose * CameraPose; - - FPose ExpectedCameraPose(GetCaptureComponent2D()->GetComponentRotation().Quaternion(), GetCaptureComponent2D()->GetComponentLocation()); - FPose UserPose = CurrentCameraPose.Inverse() * ExpectedCameraPose; - - MRState->TrackedCamera.UserRotation = UserPose.Orientation.Rotator(); - MRState->TrackedCamera.UserOffset = UserPose.Position; -} - -void AOculusXRMR_CastingCameraActor::UpdateTrackedCameraPosition() -{ - check(HasTrackedCameraCalibrationCalibrated); - - using namespace OculusXRHMD; - - FOculusXRHMD* OculusXRHMD = GEngine->XRSystem.IsValid() ? (FOculusXRHMD*)(GEngine->XRSystem->GetHMDDevice()) : nullptr; - if (!OculusXRHMD) - { - UE_LOG(LogMR, Warning, TEXT("Unable to retrieve OculusXRHMD")); - return; - } - - FPose CameraTrackedObjectPose; - if (!GetCameraTrackedObjectPoseInTrackingSpace(OculusXRHMD, MRState->TrackedCamera, CameraTrackedObjectPose)) - { - return; - } - - FPose CameraTrackingSpacePose = FPose(MRState->TrackedCamera.CalibratedRotation.Quaternion(), MRState->TrackedCamera.CalibratedOffset); -#if PLATFORM_ANDROID - ovrpPosef OvrpPose; - FOculusXRHMDModule::GetPluginWrapper().GetTrackingTransformRelativePose(&OvrpPose, ovrpTrackingOrigin_Stage); - FPose StageToLocalPose; - OculusXRHMD->ConvertPose(OvrpPose, StageToLocalPose); - CameraTrackingSpacePose = StageToLocalPose * CameraTrackingSpacePose; -#endif - FPose CameraPose = CameraTrackedObjectPose * CameraTrackingSpacePose; - CameraPose = CameraPose * FPose(MRState->TrackedCamera.UserRotation.Quaternion(), MRState->TrackedCamera.UserOffset); - CameraPose.Position = CameraPose.Position * MRState->ScalingFactor; - - float Distance = 0.0f; - if (MRSettings->ClippingReference == EOculusXRMR_ClippingReference::CR_TrackingReference) - { - Distance = -FVector::DotProduct(CameraPose.Orientation.GetForwardVector().GetSafeNormal2D(), CameraPose.Position); - } - else if (MRSettings->ClippingReference == EOculusXRMR_ClippingReference::CR_Head) - { - FQuat HeadOrientation; - FVector HeadPosition; - OculusXRHMD->GetCurrentPose(IXRTrackingSystem::HMDDeviceId, HeadOrientation, HeadPosition); - FVector HeadToCamera = HeadPosition - CameraPose.Position; - Distance = FVector::DotProduct(CameraPose.Orientation.GetForwardVector().GetSafeNormal2D(), HeadToCamera); - } - else - { - checkNoEntry(); - } - ForegroundMaxDistance = FMath::Max(Distance, GMinClipZ); - if (ForegroundCaptureActor) - { - ForegroundCaptureActor->GetCaptureComponent2D()->MaxViewDistanceOverride = ForegroundMaxDistance; - } - - FPose FinalPose; - FQuat TROrientation; - FVector TRLocation; - FRotator TRRotation; - if (!UOculusXRMRFunctionLibrary::GetTrackingReferenceLocationAndRotationInWorldSpace(MRState->TrackingReferenceComponent, TRLocation, TRRotation)) - { - UE_LOG(LogMR, Warning, TEXT("Could not get player position")); - return; - } - - TROrientation = TRRotation.Quaternion(); - FinalPose = FPose(TROrientation, TRLocation) * CameraPose; - - FTransform FinalTransform(FinalPose.Orientation, FinalPose.Position); - RootComponent->SetWorldTransform(FinalTransform); - GetCaptureComponent2D()->FOVAngle = MRState->TrackedCamera.FieldOfView; - - if (ForegroundCaptureActor) - { - ForegroundCaptureActor->GetCaptureComponent2D()->FOVAngle = MRState->TrackedCamera.FieldOfView; - } -} - -void AOculusXRMR_CastingCameraActor::InitializeStates(UOculusXRMR_Settings* MRSettingsIn, UOculusXRMR_State* MRStateIn) -{ - MRSettings = MRSettingsIn; - MRState = MRStateIn; -} - -void AOculusXRMR_CastingCameraActor::SetupTrackedCamera() -{ - if (!RefreshExternalCamera()) - { - return; - } - - RequestTrackedCameraCalibration(); - - // Unset this flag before we can return - MRState->ChangeCameraStateRequested = false; - -#if PLATFORM_WINDOWS - if (MRSettings->GetCompositionMethod() == EOculusXRMR_CompositionMethod::ExternalComposition) - { - SetupBackdropMaterialInstance(); - } - - RepositionPlaneMesh(); -#endif -} - -void AOculusXRMR_CastingCameraActor::SetBackdropMaterialColor() -{ - if (BackdropMaterialInstance) - { - BackdropMaterialInstance->SetVectorParameterValue(FName(TEXT("Color")), GetForegroundLayerBackgroundColor()); - } -} - -void AOculusXRMR_CastingCameraActor::SetupBackdropMaterialInstance() -{ - if (!BackdropMaterialInstance && OpaqueColoredMaterial) - { - BackdropMaterialInstance = UMaterialInstanceDynamic::Create(OpaqueColoredMaterial, this); - BackdropMaterialInstance->SetScalarParameterValue(FName("Opacity"), 0.0f); - } - PlaneMeshComponent->SetMaterial(0, BackdropMaterialInstance); - SetBackdropMaterialColor(); -} - -void AOculusXRMR_CastingCameraActor::RepositionPlaneMesh() -{ - FVector PlaneCenter = FVector::ForwardVector * ForegroundMaxDistance; - FVector PlaneUp = FVector::UpVector; - FVector PlaneNormal = -FVector::ForwardVector; - int ViewWidth = MRSettings->bUseTrackedCameraResolution ? MRState->TrackedCamera.SizeX : MRSettings->WidthPerView; - int ViewHeight = MRSettings->bUseTrackedCameraResolution ? MRState->TrackedCamera.SizeY : MRSettings->HeightPerView; - float Width = ForegroundMaxDistance * FMath::Tan(FMath::DegreesToRadians(GetCaptureComponent2D()->FOVAngle) * 0.5f) * 2.0f; - float Height = Width * ViewHeight / ViewWidth; - FVector2D PlaneSize = FVector2D(Width, Height); - PlaneMeshComponent->Place(PlaneCenter, PlaneUp, PlaneNormal, PlaneSize); - PlaneMeshComponent->ResetRelativeTransform(); - PlaneMeshComponent->SetVisibility(true); -} - -void AOculusXRMR_CastingCameraActor::OnHMDRecentered() -{ -#if PLATFORM_WINDOWS - RefreshBoundaryMesh(); -#endif - RequestTrackedCameraCalibration(); -} - -void AOculusXRMR_CastingCameraActor::RefreshBoundaryMesh() -{ - RefreshBoundaryMeshCounter = 3; -} - -void BuildProjectionMatrix(float YMultiplier, float FOV, float FarClipPlane, FMatrix& ProjectionMatrix) -{ - if (FarClipPlane < GNearClippingPlane) - { - FarClipPlane = GNearClippingPlane; - } - - if ((int32)ERHIZBuffer::IsInverted) - { - ProjectionMatrix = FReversedZPerspectiveMatrix( - FOV, - FOV, - 1.0f, - YMultiplier, - GNearClippingPlane, - FarClipPlane); - } - else - { - ProjectionMatrix = FPerspectiveMatrix( - FOV, - FOV, - 1.0f, - YMultiplier, - GNearClippingPlane, - FarClipPlane); - } -} - -void AOculusXRMR_CastingCameraActor::UpdateRenderTargetSize() -{ - int ViewWidth = MRSettings->bUseTrackedCameraResolution ? MRState->TrackedCamera.SizeX : MRSettings->WidthPerView; - int ViewHeight = MRSettings->bUseTrackedCameraResolution ? MRState->TrackedCamera.SizeY : MRSettings->HeightPerView; - -#if PLATFORM_WINDOWS - BackgroundRenderTargets[0]->ResizeTarget(ViewWidth, ViewHeight); - if (ForegroundRenderTargets[0]) - { - ForegroundRenderTargets[0]->ResizeTarget(ViewWidth, ViewHeight); - } -#endif -#if PLATFORM_ANDROID - FIntPoint CameraTargetSize = FIntPoint(ViewWidth, ViewHeight); - float FOV = GetCaptureComponent2D()->FOVAngle * (float)PI / 360.0f; - - if (OVRP_SUCCESS(FOculusXRHMDModule::GetPluginWrapper().Media_GetMrcFrameSize(&ViewWidth, &ViewHeight))) - { - // Frame size is doublewide, so divide by 2 - ViewWidth /= 2; - - for (unsigned int i = 0; i < NumRTs; ++i) - { - BackgroundRenderTargets[i]->ResizeTarget(ViewWidth, ViewHeight); - if (ForegroundRenderTargets[i]) - { - ForegroundRenderTargets[i]->ResizeTarget(ViewWidth, ViewHeight); - } - } - - // Use custom projection matrix for far clip plane and to use camera aspect ratio instead of rendertarget aspect ratio - float YMultiplier = (float)CameraTargetSize.X / (float)CameraTargetSize.Y; - GetCaptureComponent2D()->bUseCustomProjectionMatrix = true; - BuildProjectionMatrix(YMultiplier, FOV, GNearClippingPlane, GetCaptureComponent2D()->CustomProjectionMatrix); - if (ForegroundCaptureActor) - { - ForegroundCaptureActor->GetCaptureComponent2D()->bUseCustomProjectionMatrix = true; - BuildProjectionMatrix(YMultiplier, FOV, ForegroundMaxDistance, ForegroundCaptureActor->GetCaptureComponent2D()->CustomProjectionMatrix); - } - } -#endif -} - -void AOculusXRMR_CastingCameraActor::SetupMRCScreen() -{ -#if PLATFORM_WINDOWS - OculusXRHMD::FSpectatorScreenController* SpecScreen = nullptr; - IHeadMountedDisplay* HMD = GEngine->XRSystem.IsValid() ? GEngine->XRSystem->GetHMDDevice() : nullptr; - if (HMD) - { - SpecScreen = (OculusXRHMD::FSpectatorScreenController*)HMD->GetSpectatorScreenController(); - } - if (SpecScreen) - { -#endif - UpdateRenderTargetSize(); - - // LDR for gamma correction and post process - GetCaptureComponent2D()->CaptureSource = ESceneCaptureSource::SCS_FinalColorLDR; - - // Render scene capture 2D output to spectator screen - GetCaptureComponent2D()->TextureTarget = BackgroundRenderTargets[0]; - -#if PLATFORM_WINDOWS - if (MRSettings->GetCompositionMethod() == EOculusXRMR_CompositionMethod::ExternalComposition) -#endif - { - ForegroundCaptureActor = GetWorld()->SpawnActor(); - - // LDR for gamma correction and post process - ForegroundCaptureActor->GetCaptureComponent2D()->CaptureSource = ESceneCaptureSource::SCS_FinalColorLDR; -#if PLATFORM_ANDROID - // Start with foreground capture actor off on android - ForegroundCaptureActor->GetCaptureComponent2D()->SetVisibility(false); -#endif - - // Don't render anything past the foreground for performance - ForegroundCaptureActor->GetCaptureComponent2D()->MaxViewDistanceOverride = ForegroundMaxDistance; - - ForegroundCaptureActor->GetCaptureComponent2D()->TextureTarget = ForegroundRenderTargets[0]; -#if PLATFORM_WINDOWS - // Render use split foreground/background rendering to spectator screen - SpecScreen->SetMRForeground(ForegroundRenderTargets[0]); - SpecScreen->SetMRBackground(BackgroundRenderTargets[0]); - SpecScreen->SetMRSpectatorScreenMode(OculusXRHMD::EMRSpectatorScreenMode::ExternalComposition); - - // Set the plane mesh to only render to foreground target - PlaneMeshComponent->SetPlaneRenderTarget(ForegroundRenderTargets[0]); -#endif - // Set foreground capture to match background capture - ForegroundCaptureActor->AttachToActor(this, FAttachmentTransformRules(EAttachmentRule::SnapToTarget, true)); - } -#if PLATFORM_WINDOWS - } - else - { - UE_LOG(LogMR, Error, TEXT("Cannot find spectator screen")); - } -#endif -} - -void AOculusXRMR_CastingCameraActor::CloseMRCScreen() -{ -#if PLATFORM_WINDOWS - OculusXRHMD::FSpectatorScreenController* SpecScreen = nullptr; - IHeadMountedDisplay* HMD = GEngine->XRSystem.IsValid() ? GEngine->XRSystem->GetHMDDevice() : nullptr; - if (HMD) - { - SpecScreen = (OculusXRHMD::FSpectatorScreenController*)HMD->GetSpectatorScreenController(); - } - // Restore original spectator screen mode - if (SpecScreen) - { - SpecScreen->SetMRSpectatorScreenMode(OculusXRHMD::EMRSpectatorScreenMode::Default); - SpecScreen->SetMRForeground(nullptr); - SpecScreen->SetMRBackground(nullptr); - } -#endif - if (ForegroundCaptureActor) - { - ForegroundCaptureActor->Destroy(); - ForegroundCaptureActor = nullptr; - } -} - -void AOculusXRMR_CastingCameraActor::CloseTrackedCamera() -{ - if (PlaneMeshComponent) - { - PlaneMeshComponent->SetVisibility(false); - } -} - -#undef LOCTEXT_NAMESPACE diff --git a/Plugins/MetaXR/Source/OculusXRMR/Private/OculusXRMR_CastingCameraActor.h b/Plugins/MetaXR/Source/OculusXRMR/Private/OculusXRMR_CastingCameraActor.h deleted file mode 100644 index 0720f42..0000000 --- a/Plugins/MetaXR/Source/OculusXRMR/Private/OculusXRMR_CastingCameraActor.h +++ /dev/null @@ -1,131 +0,0 @@ -// @lint-ignore-every LICENSELINT -// Copyright Epic Games, Inc. All Rights Reserved. -#pragma once - -#include "UObject/ObjectMacros.h" -#include "Engine/SceneCapture2D.h" -#include "AudioResampler.h" -#include "AudioDefines.h" -#include "OculusXRPluginWrapper.h" -#include "Materials/MaterialInstanceDynamic.h" -#include "AudioMixer.h" -#include "OculusXRMR_CastingCameraActor.generated.h" - -#if PLATFORM_ANDROID -#define MRC_SWAPCHAIN_LENGTH 3 -#endif - -class UOculusXRMR_PlaneMeshComponent; -class UMaterial; -class AOculusXRMR_BoundaryActor; -class UTextureRenderTarget2D; -class UOculusXRMR_Settings; -class UOculusXRMR_State; - -/** - * The camera actor in the level that tracks the binded physical camera in game - */ -UCLASS(ClassGroup = OculusXRMR, NotPlaceable, NotBlueprintable) -class AOculusXRMR_CastingCameraActor : public ASceneCapture2D -{ - GENERATED_BODY() - -public: - AOculusXRMR_CastingCameraActor(const FObjectInitializer& ObjectInitializer); - - /** Initialize the MRC settings and states */ - void InitializeStates(UOculusXRMR_Settings* MRSettingsIn, UOculusXRMR_State* MRStateIn); - - virtual void BeginPlay() override; - virtual void EndPlay(EEndPlayReason::Type Reason) override; - virtual void Tick(float DeltaTime) override; - - virtual void BeginDestroy() override; - - UPROPERTY() - class UVRNotificationsComponent* VRNotificationComponent; - - UPROPERTY() - UOculusXRMR_PlaneMeshComponent* PlaneMeshComponent; - - UPROPERTY() - UMaterial* OpaqueColoredMaterial; - - UPROPERTY() - UMaterialInstanceDynamic* BackdropMaterialInstance; - - UPROPERTY() - class UTexture2D* DefaultTexture_White; - - bool TrackedCameraCalibrationRequired; - bool HasTrackedCameraCalibrationCalibrated; - FQuat InitialCameraAbsoluteOrientation; - FVector InitialCameraAbsolutePosition; - FQuat InitialCameraRelativeOrientation; - FVector InitialCameraRelativePosition; - - int32 RefreshBoundaryMeshCounter; - -private: - /** Move the casting camera to follow the tracking reference (i.e. player) */ - void RequestTrackedCameraCalibration(); - - bool RefreshExternalCamera(); - - void CalibrateTrackedCameraPose(); - void SetTrackedCameraUserPoseWithCameraTransform(); - void SetTrackedCameraInitialPoseWithPlayerTransform(); - void UpdateTrackedCameraPosition(); - - /** Initialize the tracked physical camera */ - void SetupTrackedCamera(); - - /** Close the tracked physical camera */ - void CloseTrackedCamera(); - - void OnHMDRecentered(); - - const FColor& GetForegroundLayerBackgroundColor() const { return ForegroundLayerBackgroundColor; } - - void SetBackdropMaterialColor(); - void SetupBackdropMaterialInstance(); - void RepositionPlaneMesh(); - void RefreshBoundaryMesh(); - void UpdateRenderTargetSize(); - void SetupMRCScreen(); - void CloseMRCScreen(); - - void Execute_BindToTrackedCameraIndexIfAvailable(); - - FColor ForegroundLayerBackgroundColor; - float ForegroundMaxDistance; - - UPROPERTY() - TArray BackgroundRenderTargets; - - UPROPERTY() - ASceneCapture2D* ForegroundCaptureActor; - - UPROPERTY() - TArray ForegroundRenderTargets; - - UPROPERTY() - TArray PoseTimes; - - UPROPERTY() - UOculusXRMR_Settings* MRSettings; - - UPROPERTY() - UOculusXRMR_State* MRState; - -#if PLATFORM_ANDROID - TArray AudioBuffers; - TArray AudioTimes; - - int SyncId; - - const unsigned int NumRTs = MRC_SWAPCHAIN_LENGTH; - unsigned int RenderedRTs; - unsigned int CaptureIndex; -#endif -}; diff --git a/Plugins/MetaXR/Source/OculusXRMR/Private/OculusXRMR_PlaneMeshComponent.cpp b/Plugins/MetaXR/Source/OculusXRMR/Private/OculusXRMR_PlaneMeshComponent.cpp deleted file mode 100644 index 73822f7..0000000 --- a/Plugins/MetaXR/Source/OculusXRMR/Private/OculusXRMR_PlaneMeshComponent.cpp +++ /dev/null @@ -1,270 +0,0 @@ -// @lint-ignore-every LICENSELINT -// Copyright Epic Games, Inc. All Rights Reserved. - -#include "OculusXRMR_PlaneMeshComponent.h" -#include "RenderingThread.h" -#include "RenderResource.h" -#include "PrimitiveViewRelevance.h" -#include "PrimitiveSceneProxy.h" -#include "VertexFactory.h" -#include "Engine/CollisionProfile.h" -#include "Engine/TextureRenderTarget2D.h" -#include "Materials/Material.h" -#include "LocalVertexFactory.h" -#include "SceneManagement.h" -#include "DynamicMeshBuilder.h" -#include "EngineGlobals.h" -#include "Engine/Engine.h" -#include "MaterialShared.h" -#include "SceneInterface.h" -#include "TextureResource.h" -#include "MaterialDomain.h" -#include "Materials/MaterialRenderProxy.h" - -/** Scene proxy */ -class FOculusXRMR_PlaneMeshSceneProxy : public FPrimitiveSceneProxy -{ -public: - FOculusXRMR_PlaneMeshSceneProxy(UOculusXRMR_PlaneMeshComponent* Component, UTextureRenderTarget2D* RenderTarget) - : FPrimitiveSceneProxy(Component) - , MaterialRelevance(Component->GetMaterialRelevance(GetScene().GetFeatureLevel())) - , PlaneRenderTarget(RenderTarget) - { - const FColor VertexColor(255, 255, 255); - - const int32 NumTris = Component->CustomMeshTris.Num(); - Vertices.AddUninitialized(NumTris * 3); - Indices.AddUninitialized(NumTris * 3); - // Add each triangle to the vertex/index buffer - for (int32 TriIdx = 0; TriIdx < NumTris; TriIdx++) - { - FOculusXRMR_PlaneMeshTriangle& Tri = Component->CustomMeshTris[TriIdx]; - - const FVector Edge01 = (Tri.Vertex1 - Tri.Vertex0); - const FVector Edge02 = (Tri.Vertex2 - Tri.Vertex0); - - const FVector TangentX = Edge01.GetSafeNormal(); - const FVector TangentZ = (Edge02 ^ Edge01).GetSafeNormal(); - const FVector TangentY = (TangentX ^ TangentZ).GetSafeNormal(); - - FDynamicMeshVertex Vert; - - Vert.Color = VertexColor; - Vert.SetTangents((FVector3f)TangentX, (FVector3f)TangentY, (FVector3f)TangentZ); - - Vert.Position = (FVector3f)Tri.Vertex0; - Vert.TextureCoordinate[0] = FVector2f(Tri.UV0); // LWC_TODO: Precision loss - Vertices[TriIdx * 3 + 0] = Vert; - Indices[TriIdx * 3 + 0] = TriIdx * 3 + 0; - - Vert.Position = (FVector3f)Tri.Vertex1; - Vert.TextureCoordinate[0] = FVector2f(Tri.UV1); // LWC_TODO: Precision loss - Vertices[TriIdx * 3 + 1] = Vert; - Indices[TriIdx * 3 + 1] = TriIdx * 3 + 1; - - Vert.Position = (FVector3f)Tri.Vertex2; - Vert.TextureCoordinate[0] = FVector2f(Tri.UV2); // LWC_TODO: Precision loss - Vertices[TriIdx * 3 + 2] = Vert; - Indices[TriIdx * 3 + 2] = TriIdx * 3 + 2; - } - - // Grab material - Material = Component->GetMaterial(0); - if (Material == nullptr) - { - Material = UMaterial::GetDefaultMaterial(MD_Surface); - } - } - - virtual ~FOculusXRMR_PlaneMeshSceneProxy() - { - } - - SIZE_T GetTypeHash() const override - { - static size_t UniquePointer; - return reinterpret_cast(&UniquePointer); - } - - virtual void GetDynamicMeshElements(const TArray& Views, const FSceneViewFamily& ViewFamily, uint32 VisibilityMap, FMeshElementCollector& Collector) const override - { - QUICK_SCOPE_CYCLE_COUNTER(STAT_OculusXRMR_PlaneMeshSceneProxy_GetDynamicMeshElements); - - // the mesh is only visible inside the CastingViewport, and the Full CastingLayer (the Composition mode) - if (PlaneRenderTarget && ViewFamily.RenderTarget == PlaneRenderTarget->GetRenderTargetResource()) - { - const bool bWireframe = AllowDebugViewmodes() && ViewFamily.EngineShowFlags.Wireframe; - - FMaterialRenderProxy* MaterialProxy = nullptr; - if (bWireframe) - { - auto WireframeMaterialInstance = new FColoredMaterialRenderProxy( - GEngine->WireframeMaterial->GetRenderProxy(), - FLinearColor(0, 0.5f, 1.f)); - - Collector.RegisterOneFrameMaterialProxy(WireframeMaterialInstance); - MaterialProxy = WireframeMaterialInstance; - } - else - { - MaterialProxy = Material->GetRenderProxy(); - } - - for (int32 ViewIndex = 0; ViewIndex < Views.Num(); ViewIndex++) - { - if (VisibilityMap & (1 << ViewIndex)) - { - const FSceneView* View = Views[ViewIndex]; - - FDynamicMeshBuilder DynamicMeshBuilder(View->GetFeatureLevel()); - DynamicMeshBuilder.AddVertices(Vertices); - DynamicMeshBuilder.AddTriangles(Indices); - - DynamicMeshBuilder.GetMesh(GetLocalToWorld(), MaterialProxy, SDPG_World, true, false, ViewIndex, Collector); - - // -- Original draw code for reference -- - // FMeshBatch& Mesh = Collector.AllocateMesh(); - // FMeshBatchElement& BatchElement = Mesh.Elements[0]; - // BatchElement.IndexBuffer = &IndexBuffer; - // Mesh.bWireframe = bWireframe; - // Mesh.VertexFactory = &VertexFactory; - // Mesh.MaterialRenderProxy = MaterialProxy; - // BatchElement.PrimitiveUniformBuffer = CreatePrimitiveUniformBufferImmediate(GetLocalToWorld(), GetBounds(), GetLocalBounds(), true, DrawsVelocity()); - // BatchElement.FirstIndex = 0; - // BatchElement.NumPrimitives = IndexBuffer.Indices.Num() / 3; - // BatchElement.MinVertexIndex = 0; - // BatchElement.MaxVertexIndex = VertexBuffer.Vertices.Num() - 1; - // Mesh.ReverseCulling = IsLocalToWorldDeterminantNegative(); - // Mesh.Type = PT_TriangleList; - // Mesh.DepthPriorityGroup = SDPG_World; - // Mesh.bCanApplyViewModeOverrides = false; - // Collector.AddMesh(ViewIndex, Mesh); - } - } - } - } - - virtual FPrimitiveViewRelevance GetViewRelevance(const FSceneView* View) const override - { - FPrimitiveViewRelevance Result; - Result.bDrawRelevance = IsShown(View); - Result.bShadowRelevance = IsShadowCast(View); - Result.bDynamicRelevance = true; - Result.bRenderInMainPass = ShouldRenderInMainPass(); - Result.bUsesLightingChannels = GetLightingChannelMask() != GetDefaultLightingChannelMask(); - Result.bRenderCustomDepth = ShouldRenderCustomDepth(); - MaterialRelevance.SetPrimitiveViewRelevance(Result); - return Result; - } - - virtual bool CanBeOccluded() const override - { - return !MaterialRelevance.bDisableDepthTest; - } - - virtual uint32 GetMemoryFootprint(void) const override { return (sizeof(*this) + GetAllocatedSize()); } - - uint32 GetAllocatedSize(void) const { return (FPrimitiveSceneProxy::GetAllocatedSize()); } - -private: - UMaterialInterface* Material; - TArray Vertices; - TArray Indices; - FMaterialRelevance MaterialRelevance; - UTextureRenderTarget2D* PlaneRenderTarget; -}; - -////////////////////////////////////////////////////////////////////////// - -UOculusXRMR_PlaneMeshComponent::UOculusXRMR_PlaneMeshComponent(const FObjectInitializer& ObjectInitializer) - : Super(ObjectInitializer) -{ - PrimaryComponentTick.bCanEverTick = false; - - SetCollisionProfileName(UCollisionProfile::BlockAllDynamic_ProfileName); - - bRenderCustomDepth = true; -} - -bool UOculusXRMR_PlaneMeshComponent::SetCustomMeshTriangles(const TArray& Triangles) -{ - CustomMeshTris = Triangles; - - // Need to recreate scene proxy to send it over - MarkRenderStateDirty(); - - return true; -} - -void UOculusXRMR_PlaneMeshComponent::AddCustomMeshTriangles(const TArray& Triangles) -{ - CustomMeshTris.Append(Triangles); - - // Need to recreate scene proxy to send it over - MarkRenderStateDirty(); -} - -void UOculusXRMR_PlaneMeshComponent::ClearCustomMeshTriangles() -{ - CustomMeshTris.Reset(); - - // Need to recreate scene proxy to send it over - MarkRenderStateDirty(); -} - -void UOculusXRMR_PlaneMeshComponent::Place(const FVector& Center, const FVector& Up, const FVector& Normal, const FVector2D& Size) -{ - FVector Right = FVector::CrossProduct(Up, Normal); - - FVector Up_N = Up.GetUnsafeNormal(); - FVector Right_N = Right.GetUnsafeNormal(); - - FVector V0 = Center - Right_N * Size.X * 0.5f - Up_N * Size.Y * 0.5f; - FVector2D UV0(1, 1); - FVector V1 = Center + Right_N * Size.X * 0.5f - Up_N * Size.Y * 0.5f; - FVector2D UV1(0, 1); - FVector V2 = Center - Right_N * Size.X * 0.5f + Up_N * Size.Y * 0.5f; - FVector2D UV2(1, 0); - FVector V3 = Center + Right_N * Size.X * 0.5f + Up_N * Size.Y * 0.5f; - FVector2D UV3(0, 0); - - FOculusXRMR_PlaneMeshTriangle Tri0, Tri1; - Tri0.Vertex0 = V1; - Tri0.UV0 = UV1; - Tri0.Vertex1 = V0; - Tri0.UV1 = UV0; - Tri0.Vertex2 = V2; - Tri0.UV2 = UV2; - Tri1.Vertex0 = V1; - Tri1.UV0 = UV1; - Tri1.Vertex1 = V2; - Tri1.UV1 = UV2; - Tri1.Vertex2 = V3; - Tri1.UV2 = UV3; - - SetCustomMeshTriangles({ Tri0, Tri1 }); -} - -FPrimitiveSceneProxy* UOculusXRMR_PlaneMeshComponent::CreateSceneProxy() -{ - FPrimitiveSceneProxy* Proxy = nullptr; - if (CustomMeshTris.Num() > 0) - { - Proxy = new FOculusXRMR_PlaneMeshSceneProxy(this, PlaneRenderTarget); - } - return Proxy; -} - -int32 UOculusXRMR_PlaneMeshComponent::GetNumMaterials() const -{ - return 1; -} - -FBoxSphereBounds UOculusXRMR_PlaneMeshComponent::CalcBounds(const FTransform& LocalToWorld) const -{ - FBoxSphereBounds NewBounds; - NewBounds.Origin = FVector::ZeroVector; - NewBounds.BoxExtent = FVector(HALF_WORLD_MAX, HALF_WORLD_MAX, HALF_WORLD_MAX); - NewBounds.SphereRadius = FMath::Sqrt(3.0f * FMath::Square(HALF_WORLD_MAX)); - return NewBounds; -} diff --git a/Plugins/MetaXR/Source/OculusXRMR/Private/OculusXRMR_PlaneMeshComponent.h b/Plugins/MetaXR/Source/OculusXRMR/Private/OculusXRMR_PlaneMeshComponent.h deleted file mode 100644 index 3650687..0000000 --- a/Plugins/MetaXR/Source/OculusXRMR/Private/OculusXRMR_PlaneMeshComponent.h +++ /dev/null @@ -1,77 +0,0 @@ -// @lint-ignore-every LICENSELINT -// Copyright Epic Games, Inc. All Rights Reserved. - -#pragma once - -#include "UObject/ObjectMacros.h" -#include "Components/MeshComponent.h" -#include "OculusXRMR_PlaneMeshComponent.generated.h" - -class FPrimitiveSceneProxy; -class UTextureRenderTarget2D; - -USTRUCT(BlueprintType) -struct FOculusXRMR_PlaneMeshTriangle -{ - GENERATED_USTRUCT_BODY() - - UPROPERTY() - FVector Vertex0 = FVector(0.0f); - - UPROPERTY() - FVector2D UV0 = FVector2D(0.0f); - - UPROPERTY() - FVector Vertex1 = FVector(0.0f); - - UPROPERTY() - FVector2D UV1 = FVector2D(0.0f); - - UPROPERTY() - FVector Vertex2 = FVector(0.0f); - - UPROPERTY() - FVector2D UV2 = FVector2D(0.0f); -}; - -/** Component that allows you to specify custom triangle mesh geometry */ -UCLASS(hidecategories = (Object, LOD, Physics, Collision), editinlinenew, ClassGroup = Rendering, NotPlaceable, NotBlueprintable) -class UOculusXRMR_PlaneMeshComponent : public UMeshComponent -{ - GENERATED_UCLASS_BODY() - - /** Set the geometry to use on this triangle mesh */ - UFUNCTION(BlueprintCallable, Category = "Components|CustomMesh") - bool SetCustomMeshTriangles(const TArray& Triangles); - - /** Add to the geometry to use on this triangle mesh. This may cause an allocation. Use SetCustomMeshTriangles() instead when possible to reduce allocations. */ - UFUNCTION(BlueprintCallable, Category = "Components|CustomMesh") - void AddCustomMeshTriangles(const TArray& Triangles); - - /** Removes all geometry from this triangle mesh. Does not deallocate memory, allowing new geometry to reuse the existing allocation. */ - UFUNCTION(BlueprintCallable, Category = "Components|CustomMesh") - void ClearCustomMeshTriangles(); - - void Place(const FVector& Center, const FVector& Up, const FVector& Normal, const FVector2D& Size); - - void SetPlaneRenderTarget(UTextureRenderTarget2D* RT) { PlaneRenderTarget = RT; } - -private: - //~ Begin UPrimitiveComponent Interface. - virtual FPrimitiveSceneProxy* CreateSceneProxy() override; - //~ End UPrimitiveComponent Interface. - - //~ Begin UMeshComponent Interface. - virtual int32 GetNumMaterials() const override; - //~ End UMeshComponent Interface. - - //~ Begin USceneComponent Interface. - virtual FBoxSphereBounds CalcBounds(const FTransform& LocalToWorld) const override; - //~ Begin USceneComponent Interface. - - TArray CustomMeshTris; - - UTextureRenderTarget2D* PlaneRenderTarget; - - friend class FOculusXRMR_PlaneMeshSceneProxy; -}; diff --git a/Plugins/MetaXR/Source/OculusXRMR/Private/OculusXRMR_Settings.cpp b/Plugins/MetaXR/Source/OculusXRMR/Private/OculusXRMR_Settings.cpp deleted file mode 100644 index e8bd949..0000000 --- a/Plugins/MetaXR/Source/OculusXRMR/Private/OculusXRMR_Settings.cpp +++ /dev/null @@ -1,142 +0,0 @@ -// @lint-ignore-every LICENSELINT -// Copyright Epic Games, Inc. All Rights Reserved. - -#include "OculusXRMR_Settings.h" -#include "OculusXRMRPrivate.h" -#include "OculusXRHMD.h" -#include "Engine/Engine.h" - -UOculusXRMR_Settings::UOculusXRMR_Settings(const FObjectInitializer& ObjectInitializer) - : Super(ObjectInitializer) - , ClippingReference(EOculusXRMR_ClippingReference::CR_Head) - , bUseTrackedCameraResolution(true) - , WidthPerView(960) - , HeightPerView(540) - , CastingLatency(0.0f) - , BackdropColor(FColor::Green) - , ExternalCompositionPostProcessEffects(EOculusXRMR_PostProcessEffects::PPE_Off) - , bIsCasting(false) - , CompositionMethod(EOculusXRMR_CompositionMethod::ExternalComposition) - , BindToTrackedCameraIndex(-1) -{ -} - -void UOculusXRMR_Settings::SetCompositionMethod(EOculusXRMR_CompositionMethod val) -{ - if (CompositionMethod == val) - { - return; - } - auto old = CompositionMethod; - CompositionMethod = val; - CompositionMethodChangeDelegate.Execute(old, val); -} - -void UOculusXRMR_Settings::SetCapturingCamera(EOculusXRMR_CameraDeviceEnum val) -{ - // deprecated -} - -void UOculusXRMR_Settings::SetIsCasting(bool val) -{ - if (bIsCasting == val) - { - return; - } - auto old = bIsCasting; - bIsCasting = val; - IsCastingChangeDelegate.Execute(old, val); -} - -void UOculusXRMR_Settings::BindToTrackedCameraIndexIfAvailable(int InTrackedCameraIndex) -{ - if (BindToTrackedCameraIndex == InTrackedCameraIndex) - { - return; - } - auto old = BindToTrackedCameraIndex; - BindToTrackedCameraIndex = InTrackedCameraIndex; - TrackedCameraIndexChangeDelegate.Execute(old, InTrackedCameraIndex); -} - -void UOculusXRMR_Settings::LoadFromIni() -{ - if (!GConfig) - { - UE_LOG(LogMR, Warning, TEXT("GConfig is NULL")); - return; - } - - // Flushing the GEngineIni is necessary to get the settings reloaded at the runtime, but the manual flushing - // could cause an assert when loading audio settings if launching through editor at the 2nd time. Disabled temporarily. - // GConfig->Flush(true, GEngineIni); - - const TCHAR* OculusXRMRSettings = TEXT("Oculus.Settings.MixedReality"); - bool v; - float f; - int32 i; - - FColor color; - if (GConfig->GetInt(OculusXRMRSettings, TEXT("CompositionMethod"), i, GEngineIni)) - { - SetCompositionMethod((EOculusXRMR_CompositionMethod)i); - } - if (GConfig->GetInt(OculusXRMRSettings, TEXT("ClippingReference"), i, GEngineIni)) - { - ClippingReference = (EOculusXRMR_ClippingReference)i; - } - if (GConfig->GetBool(OculusXRMRSettings, TEXT("bUseTrackedCameraResolution"), v, GEngineIni)) - { - bUseTrackedCameraResolution = v; - } - if (GConfig->GetInt(OculusXRMRSettings, TEXT("WidthPerView"), i, GEngineIni)) - { - WidthPerView = i; - } - if (GConfig->GetInt(OculusXRMRSettings, TEXT("HeightPerView"), i, GEngineIni)) - { - HeightPerView = i; - } - if (GConfig->GetFloat(OculusXRMRSettings, TEXT("CastingLatency"), f, GEngineIni)) - { - CastingLatency = f; - } - if (GConfig->GetColor(OculusXRMRSettings, TEXT("BackdropColor"), color, GEngineIni)) - { - BackdropColor = color; - } - if (GConfig->GetInt(OculusXRMRSettings, TEXT("BindToTrackedCameraIndex"), i, GEngineIni)) - { - BindToTrackedCameraIndexIfAvailable(i); - } - if (GConfig->GetInt(OculusXRMRSettings, TEXT("ExternalCompositionPostProcessEffects"), i, GEngineIni)) - { - ExternalCompositionPostProcessEffects = (EOculusXRMR_PostProcessEffects)i; - } - - UE_LOG(LogMR, Log, TEXT("MixedReality settings loaded from Engine.ini")); -} - -void UOculusXRMR_Settings::SaveToIni() const -{ - if (!GConfig) - { - UE_LOG(LogMR, Warning, TEXT("GConfig is NULL")); - return; - } - - const TCHAR* OculusXRMRSettings = TEXT("Oculus.Settings.MixedReality"); - GConfig->SetInt(OculusXRMRSettings, TEXT("CompositionMethod"), (int32)CompositionMethod, GEngineIni); - GConfig->SetInt(OculusXRMRSettings, TEXT("ClippingReference"), (int32)ClippingReference, GEngineIni); - GConfig->SetBool(OculusXRMRSettings, TEXT("bUseTrackedCameraResolution"), bUseTrackedCameraResolution, GEngineIni); - GConfig->SetInt(OculusXRMRSettings, TEXT("WidthPerView"), WidthPerView, GEngineIni); - GConfig->SetInt(OculusXRMRSettings, TEXT("HeightPerView"), HeightPerView, GEngineIni); - GConfig->SetFloat(OculusXRMRSettings, TEXT("CastingLatency"), CastingLatency, GEngineIni); - GConfig->SetColor(OculusXRMRSettings, TEXT("BackdropColor"), BackdropColor, GEngineIni); - GConfig->SetInt(OculusXRMRSettings, TEXT("BindToTrackedCameraIndex"), (int32)BindToTrackedCameraIndex, GEngineIni); - GConfig->SetInt(OculusXRMRSettings, TEXT("ExternalCompositionPostProcessEffects"), (int32)ExternalCompositionPostProcessEffects, GEngineIni); - - GConfig->Flush(false, GEngineIni); - - UE_LOG(LogMR, Log, TEXT("MixedReality settings saved to Engine.ini")); -} diff --git a/Plugins/MetaXR/Source/OculusXRMR/Private/OculusXRMR_State.cpp b/Plugins/MetaXR/Source/OculusXRMR/Private/OculusXRMR_State.cpp deleted file mode 100644 index e3525fa..0000000 --- a/Plugins/MetaXR/Source/OculusXRMR/Private/OculusXRMR_State.cpp +++ /dev/null @@ -1,13 +0,0 @@ -// @lint-ignore-every LICENSELINT -// Copyright Epic Games, Inc. All Rights Reserved. -#include "OculusXRMR_State.h" -#include "OculusXRMRFunctionLibrary.h" - -UOculusXRMR_State::UOculusXRMR_State(const FObjectInitializer& ObjectInitializer) - : TrackedCamera() - , TrackingReferenceComponent(nullptr) - , ScalingFactor(1.0f) - , ChangeCameraStateRequested(false) - , BindToTrackedCameraIndexRequested(false) -{ -} diff --git a/Plugins/MetaXR/Source/OculusXRMR/Private/OculusXRMR_State.h b/Plugins/MetaXR/Source/OculusXRMR/Private/OculusXRMR_State.h deleted file mode 100644 index 329dd0a..0000000 --- a/Plugins/MetaXR/Source/OculusXRMR/Private/OculusXRMR_State.h +++ /dev/null @@ -1,117 +0,0 @@ -// @lint-ignore-every LICENSELINT -// Copyright Epic Games, Inc. All Rights Reserved. -#pragma once - -#include "UObject/ObjectMacros.h" -#include "OculusXRFunctionLibrary.h" -#include "OculusXRPluginWrapper.h" - -#include "OculusXRMR_State.generated.h" - -USTRUCT() -struct FOculusXRTrackedCamera -{ - GENERATED_USTRUCT_BODY() - - /** >=0: the index of the external camera - * -1: not bind to any external camera (and would be setup to match the manual CastingCameraActor placement) - */ - UPROPERTY() - int32 Index; - - /** The external camera name set through the CameraTool */ - UPROPERTY() - FString Name; - - /** The time that this camera was updated */ - UPROPERTY() - double UpdateTime; - - /** The horizontal FOV, in degrees */ - UPROPERTY(meta = (UIMin = "5.0", UIMax = "170", ClampMin = "0.001", ClampMax = "360.0", Units = deg)) - float FieldOfView; - - /** The resolution of the camera frame */ - UPROPERTY() - int32 SizeX; - - /** The resolution of the camera frame */ - UPROPERTY() - int32 SizeY; - - /** The tracking node the external camera is bound to */ - UPROPERTY() - EOculusXRTrackedDeviceType AttachedTrackedDevice; - - /** The relative pose of the camera to the attached tracking device */ - UPROPERTY() - FRotator CalibratedRotation; - - /** The relative pose of the camera to the attached tracking device */ - UPROPERTY() - FVector CalibratedOffset; - - /** (optional) The user pose is provided to fine tuning the relative camera pose at the run-time */ - UPROPERTY() - FRotator UserRotation; - - /** (optional) The user pose is provided to fine tuning the relative camera pose at the run-time */ - UPROPERTY() - FVector UserOffset; - - /** The raw pose of the camera to the attached tracking device (Deprecated) */ - UPROPERTY(meta = (DeprecatedProperty, DeprecationMessage = "All camera pose info is now in stage space, do not use raw pose data.")) - FRotator RawRotation_DEPRECATED; - - /** The raw pose of the camera to the attached tracking device (Deprecated) */ - UPROPERTY(meta = (DeprecatedProperty, DeprecationMessage = "All camera pose info is now in stage space, do not use raw pose data.")) - FVector RawOffset_DEPRECATED; - - FOculusXRTrackedCamera() - : Index(-1) - , Name(TEXT("Unknown")) - , UpdateTime(0.0f) - , FieldOfView(90.0f) - , SizeX(1280) - , SizeY(720) - , AttachedTrackedDevice(EOculusXRTrackedDeviceType::None) - , CalibratedRotation(EForceInit::ForceInitToZero) - , CalibratedOffset(EForceInit::ForceInitToZero) - , UserRotation(EForceInit::ForceInitToZero) - , UserOffset(EForceInit::ForceInitToZero) - , RawRotation_DEPRECATED(EForceInit::ForceInitToZero) - , RawOffset_DEPRECATED(EForceInit::ForceInitToZero) - { - } -}; - -/** - * Object to hold the state of MR capture and capturing camera - */ -UCLASS(ClassGroup = OculusXRMR, NotPlaceable, NotBlueprintable) -class UOculusXRMR_State : public UObject -{ - GENERATED_BODY() - -public: - UOculusXRMR_State(const FObjectInitializer& ObjectInitializer); - - UPROPERTY() - FOculusXRTrackedCamera TrackedCamera; - - // Component at the tracking origin that the camera calibration is applied to - UPROPERTY() - class USceneComponent* TrackingReferenceComponent; - - // A multiplier on the camera distance, should be based on the scaling of the player component - UPROPERTY() - double ScalingFactor; - - /** Flag indicating a change in the tracked camera state for the camera actor to consume */ - UPROPERTY() - bool ChangeCameraStateRequested; - - /** Flag indicating a change in the tracked camera index for the camera actor to consume */ - UPROPERTY() - bool BindToTrackedCameraIndexRequested; -}; diff --git a/Plugins/MetaXR/Source/OculusXRMR/Public/IOculusXRMRModule.h b/Plugins/MetaXR/Source/OculusXRMR/Public/IOculusXRMRModule.h deleted file mode 100644 index 945dbcd..0000000 --- a/Plugins/MetaXR/Source/OculusXRMR/Public/IOculusXRMRModule.h +++ /dev/null @@ -1,38 +0,0 @@ -// @lint-ignore-every LICENSELINT -// Copyright Epic Games, Inc. All Rights Reserved. - -#pragma once -#include "Modules/ModuleManager.h" - -// Oculus support is not available on Windows XP -#define OCULUS_MR_SUPPORTED_PLATFORMS ((PLATFORM_WINDOWS && WINVER > 0x0502) || PLATFORM_ANDROID) - -/** - * The public interface to this module. In most cases, this interface is only public to sibling modules - * within this plugin. - */ -class IOculusXRMRModule : public IModuleInterface -{ - -public: - /** - * Singleton-like access to this module's interface. This is just for convenience! - * Beware of calling this during the shutdown phase, though. Your module might have been unloaded already. - * - * @return Returns singleton instance, loading the module on demand if needed - */ - static inline IOculusXRMRModule& Get() - { - return FModuleManager::GetModuleChecked("OculusXRMR"); - } - - /** - * Checks to see if this module is loaded and ready. It is only valid to call Get() if IsAvailable() returns true. - * - * @return True if the module is loaded and ready to use - */ - static inline bool IsAvailable() - { - return FModuleManager::Get().IsModuleLoaded("OculusXRMR"); - } -}; diff --git a/Plugins/MetaXR/Source/OculusXRMR/Public/OculusXRMRFunctionLibrary.h b/Plugins/MetaXR/Source/OculusXRMR/Public/OculusXRMRFunctionLibrary.h deleted file mode 100644 index 0f932ca..0000000 --- a/Plugins/MetaXR/Source/OculusXRMR/Public/OculusXRMRFunctionLibrary.h +++ /dev/null @@ -1,59 +0,0 @@ -// @lint-ignore-every LICENSELINT -// Copyright Epic Games, Inc. All Rights Reserved. - -#pragma once -#include "UObject/ObjectMacros.h" -#include "Kismet/BlueprintFunctionLibrary.h" -#include "OculusXRMRFunctionLibrary.generated.h" - -class USceneComponent; -class UOculusXRMR_Settings; -struct FOculusXRTrackedCamera; - -namespace OculusXRHMD -{ - class FOculusXRHMD; -} - -UCLASS() -class OCULUSXRMR_API UOculusXRMRFunctionLibrary : public UBlueprintFunctionLibrary -{ - GENERATED_UCLASS_BODY() - -public: - // Get the OculusXRMR settings object - UFUNCTION(BlueprintCallable, Category = "OculusLibrary|MR", meta = (DisplayName = "Get Oculus MR Settings")) - static UOculusXRMR_Settings* GetOculusXRMRSettings(); - - // Get the component that the OculusXRMR camera is tracking. When this is null, the camera will track the player pawn. - UFUNCTION(BlueprintCallable, Category = "OculusLibrary|MR") - static USceneComponent* GetTrackingReferenceComponent(); - - // Set the component for the OculusXRMR camera to track. If this is set to null, the camera will track the player pawn. - UFUNCTION(BlueprintCallable, Category = "OculusLibrary|MR") - static bool SetTrackingReferenceComponent(USceneComponent* Component); - - // Get the scaling factor for the MRC configuration. Returns 0 if not available. - UFUNCTION(BlueprintCallable, Category = "OculusLibrary|MR", meta = (DisplayName = "Get MRC Scaling Factor")) - static float GetMrcScalingFactor(); - - // Set the scaling factor for the MRC configuration. This should be a positive value set to the same scaling as the VR player pawn so that the game capture and camera video are aligned. - UFUNCTION(BlueprintCallable, Category = "OculusLibrary|MR", meta = (DisplayName = "Set MRC Scaling Factor")) - static bool SetMrcScalingFactor(float ScalingFactor = 1.0f); - - // Check if MRC is enabled - UFUNCTION(BlueprintCallable, Category = "OculusLibrary|MR") - static bool IsMrcEnabled(); - - // Check if MRC is enabled and actively capturing - UFUNCTION(BlueprintCallable, Category = "OculusLibrary|MR") - static bool IsMrcActive(); - -public: - static class TSharedPtr GetTrackingSystem(); - - /** Retrieve an array of all (calibrated) tracked cameras which were calibrated through the CameraTool */ - static void GetAllTrackedCamera(TArray& TrackedCameras, bool bCalibratedOnly = true); - - static bool GetTrackingReferenceLocationAndRotationInWorldSpace(USceneComponent* TrackingReferenceComponent, FVector& TRLocation, FRotator& TRRotation); -}; diff --git a/Plugins/MetaXR/Source/OculusXRMR/Public/OculusXRMR_Settings.h b/Plugins/MetaXR/Source/OculusXRMR/Public/OculusXRMR_Settings.h deleted file mode 100644 index af6954e..0000000 --- a/Plugins/MetaXR/Source/OculusXRMR/Public/OculusXRMR_Settings.h +++ /dev/null @@ -1,175 +0,0 @@ -// @lint-ignore-every LICENSELINT -// Copyright Epic Games, Inc. All Rights Reserved. - -#pragma once -#include "UObject/ObjectMacros.h" - -#include "OculusXRMR_Settings.generated.h" - -UENUM(BlueprintType) -enum class EOculusXRMR_CameraDeviceEnum : uint8 // Deprecated -{ - CD_None_DEPRECATED UMETA(DisplayName = "None"), - CD_WebCamera0_DEPRECATED UMETA(DisplayName = "Web Camera 0"), - CD_WebCamera1_DEPRECATED UMETA(DisplayName = "Web Camera 1"), -}; - -UENUM(BlueprintType) -enum class EOculusXRMR_ClippingReference : uint8 -{ - CR_TrackingReference UMETA(DisplayName = "Tracking Reference"), - CR_Head UMETA(DisplayName = "Head"), -}; - -UENUM(BlueprintType) -enum class EOculusXRMR_PostProcessEffects : uint8 -{ - PPE_Off UMETA(DisplayName = "Off"), - PPE_On UMETA(DisplayName = "On"), -}; - -UENUM(BlueprintType) -enum class EOculusXRMR_CompositionMethod : uint8 -{ - /* Generate both foreground and background views for compositing with 3rd-party software like OBS. */ - ExternalComposition UMETA(DisplayName = "External Composition"), - /* (Deprecated) Composite the camera stream directly to the output with the proper depth.*/ - DirectComposition_DEPRECATED UMETA(DisplayName = "Direct Composition (DEPRECATED)") -}; - -UCLASS(ClassGroup = OculusXRMR, Blueprintable) -class UOculusXRMR_Settings : public UObject -{ - GENERATED_BODY() - -public: - UOculusXRMR_Settings(const FObjectInitializer& ObjectInitializer); - - /** Specify the distance to the camera which divide the background and foreground in MxR casting. - * Set it to CR_TrackingReference to use the distance to the Tracking Reference, which works better - * in the stationary experience. Set it to CR_Head would use the distance to the HMD, which works better - * in the room scale experience. - */ - UPROPERTY(Category = MetaXR, EditAnywhere, BlueprintReadWrite) - EOculusXRMR_ClippingReference ClippingReference; - - /** The casting viewports would use the same resolution of the camera which used in the calibration process. */ - UPROPERTY(Category = MetaXR, EditAnywhere, BlueprintReadWrite) - bool bUseTrackedCameraResolution; - - /** When bUseTrackedCameraResolution is false, the width of each casting viewport */ - UPROPERTY(Category = MetaXR, EditAnywhere, BlueprintReadWrite) - int WidthPerView; - - /** When bUseTrackedCameraResolution is false, the height of each casting viewport */ - UPROPERTY(Category = MetaXR, EditAnywhere, BlueprintReadWrite) - int HeightPerView; - - /** When CompositionMethod is External Composition, the latency of the casting output which could be adjusted to - * match the camera latency in the external composition application */ - UPROPERTY(Category = MetaXR, EditAnywhere, BlueprintReadWrite, meta = (UIMin = "0.0", UIMax = "0.1")) - float CastingLatency; - - /** When CompositionMethod is External Composition, the color of the backdrop in the foreground view */ - UPROPERTY(Category = MetaXR, EditAnywhere, BlueprintReadWrite) - FColor BackdropColor; - - /** When CompositionMethod is Direct Composition, you could adjust this latency to delay the virtual - * hand movement by a small amount of time to match the camera latency */ - UPROPERTY(meta = (DeprecatedProperty, DeprecationMessage = "Direct Composition deprecated.")) - float HandPoseStateLatency_DEPRECATED; - - /** [Green-screen removal] Chroma Key Color. Apply when CompositionMethod is DirectComposition */ - UPROPERTY(meta = (DeprecatedProperty, DeprecationMessage = "Direct Composition deprecated.")) - FColor ChromaKeyColor_DEPRECATED; - - /** [Green-screen removal] Chroma Key Similarity. Apply when CompositionMethod is DirectComposition */ - UPROPERTY(meta = (DeprecatedProperty, DeprecationMessage = "Direct Composition deprecated.")) - float ChromaKeySimilarity_DEPRECATED; - - /** [Green-screen removal] Chroma Key Smooth Range. Apply when CompositionMethod is DirectComposition */ - UPROPERTY(meta = (DeprecatedProperty, DeprecationMessage = "Direct Composition deprecated.")) - float ChromaKeySmoothRange_DEPRECATED; - - /** [Green-screen removal] Chroma Key Spill Range. Apply when CompositionMethod is DirectComposition */ - UPROPERTY(meta = (DeprecatedProperty, DeprecationMessage = "Direct Composition deprecated.")) - float ChromaKeySpillRange_DEPRECATED; - - /** Set the amount of post process effects in the MR view for external composition */ - UPROPERTY(Category = MetaXR, EditAnywhere, BlueprintReadWrite) - EOculusXRMR_PostProcessEffects ExternalCompositionPostProcessEffects; - - /** ExternalComposition: The casting window includes the background and foreground view - * DirectComposition: The game scene would be composited with the camera frame directly - */ - UFUNCTION(BlueprintCallable, Category = MetaXR) - EOculusXRMR_CompositionMethod GetCompositionMethod() { return CompositionMethod; } - - /** ExternalComposition: The casting window includes the background and foreground view - * DirectComposition: The game scene would be composited with the camera frame directly - */ - UFUNCTION(BlueprintCallable, Category = MetaXR) - void SetCompositionMethod(EOculusXRMR_CompositionMethod val); - - /** When CompositionMethod is DirectComposition, the physical camera device which provide the frame */ - UFUNCTION(BlueprintCallable, Category = MetaXR, meta = (DeprecatedFunction, DeprecationMessage = "Direct Composition deprecated.")) - EOculusXRMR_CameraDeviceEnum GetCapturingCamera() { return EOculusXRMR_CameraDeviceEnum::CD_None_DEPRECATED; } - - /** When CompositionMethod is DirectComposition, the physical camera device which provide the frame */ - UFUNCTION(BlueprintCallable, Category = MetaXR, meta = (DeprecatedFunction, DeprecationMessage = "Direct Composition deprecated.")) - void SetCapturingCamera(EOculusXRMR_CameraDeviceEnum val); - - /** Is MRC on and off */ - UFUNCTION(BlueprintCallable, Category = MetaXR) - bool GetIsCasting() { return bIsCasting; } - - /** Turns MRC on and off */ - UFUNCTION(BlueprintCallable, Category = MetaXR) - void SetIsCasting(bool val); - - /** Bind the casting camera to the calibrated external camera. - * (Requires a calibrated external camera) - */ - UFUNCTION(BlueprintCallable, Category = MetaXR) - void BindToTrackedCameraIndexIfAvailable(int InTrackedCameraIndex); - - UFUNCTION(BlueprintCallable, Category = MetaXR) - int GetBindToTrackedCameraIndex() { return BindToTrackedCameraIndex; } - - /** Load settings from the config file */ - UFUNCTION(BlueprintCallable, Category = MetaXR) - void LoadFromIni(); - - /** Save settings to the config file */ - UFUNCTION(BlueprintCallable, Category = MetaXR) - void SaveToIni() const; - -private: - /** Turns MRC on and off (does not get saved to or loaded from ini) */ - UPROPERTY() - bool bIsCasting; - - /** ExternalComposition: The casting window includes the background and foreground view - * DirectComposition: The game scene would be composited with the camera frame directly - */ - UPROPERTY() - EOculusXRMR_CompositionMethod CompositionMethod; - - /** When CompositionMethod is DirectComposition, the physical camera device which provide the frame */ - UPROPERTY(meta = (DeprecatedProperty, DeprecationMessage = "Direct Composition deprecated.")) - EOculusXRMR_CameraDeviceEnum CapturingCamera_DEPRECATED; - - /** Tracked camera that we want to bind the in-game MR camera to*/ - int BindToTrackedCameraIndex; - - DECLARE_DELEGATE_TwoParams(OnCompositionMethodChangeDelegate, EOculusXRMR_CompositionMethod, EOculusXRMR_CompositionMethod); - DECLARE_DELEGATE_TwoParams(OnBooleanSettingChangeDelegate, bool, bool); - DECLARE_DELEGATE_TwoParams(OnIntegerSettingChangeDelegate, int, int); - - OnIntegerSettingChangeDelegate TrackedCameraIndexChangeDelegate; - OnCompositionMethodChangeDelegate CompositionMethodChangeDelegate; - OnBooleanSettingChangeDelegate IsCastingChangeDelegate; - - // Give the OculusXRMR module access to the delegates so that - friend class FOculusXRMRModule; -}; diff --git a/Plugins/MetaXR/Source/OculusXRMovement/OculusXRMovement.Build.cs b/Plugins/MetaXR/Source/OculusXRMovement/OculusXRMovement.Build.cs deleted file mode 100644 index 3b152ec..0000000 --- a/Plugins/MetaXR/Source/OculusXRMovement/OculusXRMovement.Build.cs +++ /dev/null @@ -1,50 +0,0 @@ -// @lint-ignore-every LICENSELINT -// Copyright Epic Games, Inc. All Rights Reserved. - -namespace UnrealBuildTool.Rules -{ - public class OculusXRMovement : ModuleRules - { - public OculusXRMovement(ReadOnlyTargetRules Target) : base(Target) - { - bUseUnity = false; - - PublicDependencyModuleNames.AddRange( - new string[] { - "LiveLinkInterface", - "LiveLinkAnimationCore", - }); - - PrivateDependencyModuleNames.AddRange( - new string[] - { - "Core", - "CoreUObject", - "ApplicationCore", - "Engine", - "InputCore", - "LiveLink", - "HeadMountedDisplay", - "OVRPluginXR", - "OculusXRHMD", - "XRBase", - "OpenXR", - "OpenXRHMD", - }); - - PrivateIncludePaths.AddRange( - new string[] { - "OculusXRHMD/Private", - }); - - PublicDependencyModuleNames.AddRange( - new string[] - { - "KhronosOpenXRHeaders", - }); - - PrivateIncludePathModuleNames.Add("OpenXRHMD"); - AddEngineThirdPartyPrivateStaticDependencies(Target, "OpenXR"); - } - } -} diff --git a/Plugins/MetaXR/Source/OculusXRMovement/Private/LiveLinkOculusXRMovementSourceFactory.cpp b/Plugins/MetaXR/Source/OculusXRMovement/Private/LiveLinkOculusXRMovementSourceFactory.cpp deleted file mode 100644 index 401dcd5..0000000 --- a/Plugins/MetaXR/Source/OculusXRMovement/Private/LiveLinkOculusXRMovementSourceFactory.cpp +++ /dev/null @@ -1,40 +0,0 @@ -// Copyright (c) Meta Platforms, Inc. and affiliates. - -#include "LiveLinkOculusXRMovementSourceFactory.h" -#include "IOculusXRMovementModule.h" - -#include "Features/IModularFeatures.h" -#include "ILiveLinkClient.h" - -#define LOCTEXT_NAMESPACE "OculusXRMovement" - -FText ULiveLinkOculusXRMovementSourceFactory::GetSourceDisplayName() const -{ - return LOCTEXT("OculusXRMovementLiveLinkSourceName", "Meta MovementSDK Live Link"); -} - -FText ULiveLinkOculusXRMovementSourceFactory::GetSourceTooltip() const -{ - return LOCTEXT("OculusXRMovementLiveLinkSourceTooltip", "Meta MovementSDK Live Link Source"); -} - -ULiveLinkOculusXRMovementSourceFactory::EMenuType ULiveLinkOculusXRMovementSourceFactory::GetMenuType() const -{ - if (IModularFeatures::Get().IsModularFeatureAvailable(ILiveLinkClient::ModularFeatureName)) - { - const ILiveLinkClient& LiveLinkClient = IModularFeatures::Get().GetModularFeature(ILiveLinkClient::ModularFeatureName); - - if (!IOculusXRMovementModule::Get().IsLiveLinkSourceValid() || !LiveLinkClient.HasSourceBeenAdded(IOculusXRMovementModule::Get().GetLiveLinkSource())) - { - return EMenuType::MenuEntry; - } - } - return EMenuType::Disabled; -} - -TSharedPtr ULiveLinkOculusXRMovementSourceFactory::CreateSource(const FString& ConnectionString) const -{ - return IOculusXRMovementModule::Get().GetLiveLinkSource(); -} - -#undef LOCTEXT_NAMESPACE diff --git a/Plugins/MetaXR/Source/OculusXRMovement/Private/LiveLinkOculusXRMovementSourceFactory.h b/Plugins/MetaXR/Source/OculusXRMovement/Private/LiveLinkOculusXRMovementSourceFactory.h deleted file mode 100644 index ecacd56..0000000 --- a/Plugins/MetaXR/Source/OculusXRMovement/Private/LiveLinkOculusXRMovementSourceFactory.h +++ /dev/null @@ -1,21 +0,0 @@ -// Copyright (c) Meta Platforms, Inc. and affiliates. - -#pragma once - -#include "LiveLinkSourceFactory.h" -#include "LiveLinkOculusXRMovementSourceFactory.generated.h" - -UCLASS() -class ULiveLinkOculusXRMovementSourceFactory : public ULiveLinkSourceFactory -{ -public: - GENERATED_BODY() - - virtual FText GetSourceDisplayName() const override; - virtual FText GetSourceTooltip() const override; - - virtual EMenuType GetMenuType() const override; - virtual TSharedPtr CreateSource(const FString& ConnectionString) const override; - - TSharedPtr ActiveSourceEditor; -}; diff --git a/Plugins/MetaXR/Source/OculusXRMovement/Private/OculusXRBodyTrackingComponent.cpp b/Plugins/MetaXR/Source/OculusXRMovement/Private/OculusXRBodyTrackingComponent.cpp deleted file mode 100644 index 98eef86..0000000 --- a/Plugins/MetaXR/Source/OculusXRMovement/Private/OculusXRBodyTrackingComponent.cpp +++ /dev/null @@ -1,263 +0,0 @@ -// Copyright (c) Meta Platforms, Inc. and affiliates. - -#include "OculusXRBodyTrackingComponent.h" - -#include "Engine/SkeletalMesh.h" -#include "DrawDebugHelpers.h" -#include "OculusXRHMD.h" -#include "OculusXRPluginWrapper.h" -#include "OculusXRMovementFunctionLibrary.h" -#include "OculusXRMovementLog.h" -#include "OculusXRTelemetryMovementEvents.h" - -#if !(UE_BUILD_SHIPPING || UE_BUILD_TEST) -static TAutoConsoleVariable CVarOVRBodyDebugDraw( - TEXT("ovr.BodyDebugDraw"), - 0, - TEXT("Enables or disables debug drawing for body tracking.\n") - TEXT("<=0: disabled (no drawing)\n") - TEXT(" 1: enabled (debug drawing)\n")); -#endif - -int UOculusXRBodyTrackingComponent::TrackingInstanceCount = 0; - -UOculusXRBodyTrackingComponent::UOculusXRBodyTrackingComponent() - : BodyTrackingMode(EOculusXRBodyTrackingMode::PositionAndRotation) - , ConfidenceThreshold(0.f) - , WorldToMeters(100.f) -{ - PrimaryComponentTick.bCanEverTick = true; - PrimaryComponentTick.bStartWithTickEnabled = true; - - // Setup defaults - BoneNames.Add(EOculusXRBoneID::BodyRoot, "Root"); - BoneNames.Add(EOculusXRBoneID::BodyHips, "Hips"); - BoneNames.Add(EOculusXRBoneID::BodySpineLower, "SpineLower"); - BoneNames.Add(EOculusXRBoneID::BodySpineMiddle, "SpineMiddle"); - BoneNames.Add(EOculusXRBoneID::BodySpineUpper, "SpineUpper"); - BoneNames.Add(EOculusXRBoneID::BodyChest, "Chest"); - BoneNames.Add(EOculusXRBoneID::BodyNeck, "Neck"); - BoneNames.Add(EOculusXRBoneID::BodyHead, "Head"); - BoneNames.Add(EOculusXRBoneID::BodyLeftShoulder, "LeftShoulder"); - BoneNames.Add(EOculusXRBoneID::BodyLeftScapula, "LeftScapula"); - BoneNames.Add(EOculusXRBoneID::BodyLeftArmUpper, "LeftArmUpper"); - BoneNames.Add(EOculusXRBoneID::BodyLeftArmLower, "LeftArmLower"); - BoneNames.Add(EOculusXRBoneID::BodyLeftHandWristTwist, "LeftHandWristTwist"); - BoneNames.Add(EOculusXRBoneID::BodyRightShoulder, "RightShoulder"); - BoneNames.Add(EOculusXRBoneID::BodyRightScapula, "RightScapula"); - BoneNames.Add(EOculusXRBoneID::BodyRightArmUpper, "RightArmUpper"); - BoneNames.Add(EOculusXRBoneID::BodyRightArmLower, "RightArmLower"); - BoneNames.Add(EOculusXRBoneID::BodyRightHandWristTwist, "RightHandWristTwist"); - BoneNames.Add(EOculusXRBoneID::BodyLeftHandPalm, "LeftHandPalm"); - BoneNames.Add(EOculusXRBoneID::BodyLeftHandWrist, "LeftHandWrist"); - BoneNames.Add(EOculusXRBoneID::BodyLeftHandThumbMetacarpal, "LeftHandThumbMetacarpal"); - BoneNames.Add(EOculusXRBoneID::BodyLeftHandThumbProximal, "LeftHandThumbProximal"); - BoneNames.Add(EOculusXRBoneID::BodyLeftHandThumbDistal, "LeftHandThumbDistal"); - BoneNames.Add(EOculusXRBoneID::BodyLeftHandThumbTip, "LeftHandThumbTip"); - BoneNames.Add(EOculusXRBoneID::BodyLeftHandIndexMetacarpal, "LeftHandIndexMetacarpal"); - BoneNames.Add(EOculusXRBoneID::BodyLeftHandIndexProximal, "LeftHandIndexProximal"); - BoneNames.Add(EOculusXRBoneID::BodyLeftHandIndexIntermediate, "LeftHandIndexIntermediate"); - BoneNames.Add(EOculusXRBoneID::BodyLeftHandIndexDistal, "LeftHandIndexDistal"); - BoneNames.Add(EOculusXRBoneID::BodyLeftHandIndexTip, "LeftHandIndexTip"); - BoneNames.Add(EOculusXRBoneID::BodyLeftHandMiddleMetacarpal, "LeftHandMiddleMetacarpal"); - BoneNames.Add(EOculusXRBoneID::BodyLeftHandMiddleProximal, "LeftHandMiddleProximal"); - BoneNames.Add(EOculusXRBoneID::BodyLeftHandMiddleIntermediate, "LeftHandMiddleIntermediate"); - BoneNames.Add(EOculusXRBoneID::BodyLeftHandMiddleDistal, "LeftHandMiddleDistal"); - BoneNames.Add(EOculusXRBoneID::BodyLeftHandMiddleTip, "LeftHandMiddleTip"); - BoneNames.Add(EOculusXRBoneID::BodyLeftHandRingMetacarpal, "LeftHandRingMetacarpal"); - BoneNames.Add(EOculusXRBoneID::BodyLeftHandRingProximal, "LeftHandRingProximal"); - BoneNames.Add(EOculusXRBoneID::BodyLeftHandRingIntermediate, "LeftHandRingIntermediate"); - BoneNames.Add(EOculusXRBoneID::BodyLeftHandRingDistal, "LeftHandRingDistal"); - BoneNames.Add(EOculusXRBoneID::BodyLeftHandRingTip, "LeftHandRingTip"); - BoneNames.Add(EOculusXRBoneID::BodyLeftHandLittleMetacarpal, "LeftHandLittleMetacarpal"); - BoneNames.Add(EOculusXRBoneID::BodyLeftHandLittleProximal, "LeftHandLittleProximal"); - BoneNames.Add(EOculusXRBoneID::BodyLeftHandLittleIntermediate, "LeftHandLittleIntermediate"); - BoneNames.Add(EOculusXRBoneID::BodyLeftHandLittleDistal, "LeftHandLittleDistal"); - BoneNames.Add(EOculusXRBoneID::BodyLeftHandLittleTip, "LeftHandLittleTip"); - BoneNames.Add(EOculusXRBoneID::BodyRightHandPalm, "RightHandPalm"); - BoneNames.Add(EOculusXRBoneID::BodyRightHandWrist, "RightHandWrist"); - BoneNames.Add(EOculusXRBoneID::BodyRightHandThumbMetacarpal, "RightHandThumbMetacarpal"); - BoneNames.Add(EOculusXRBoneID::BodyRightHandThumbProximal, "RightHandThumbProximal"); - BoneNames.Add(EOculusXRBoneID::BodyRightHandThumbDistal, "RightHandThumbDistal"); - BoneNames.Add(EOculusXRBoneID::BodyRightHandThumbTip, "RightHandThumbTip"); - BoneNames.Add(EOculusXRBoneID::BodyRightHandIndexMetacarpal, "RightHandIndexMetacarpal"); - BoneNames.Add(EOculusXRBoneID::BodyRightHandIndexProximal, "RightHandIndexProximal"); - BoneNames.Add(EOculusXRBoneID::BodyRightHandIndexIntermediate, "RightHandIndexIntermediate"); - BoneNames.Add(EOculusXRBoneID::BodyRightHandIndexDistal, "RightHandIndexDistal"); - BoneNames.Add(EOculusXRBoneID::BodyRightHandIndexTip, "RightHandIndexTip"); - BoneNames.Add(EOculusXRBoneID::BodyRightHandMiddleMetacarpal, "RightHandMiddleMetacarpal"); - BoneNames.Add(EOculusXRBoneID::BodyRightHandMiddleProximal, "RightHandMiddleProximal"); - BoneNames.Add(EOculusXRBoneID::BodyRightHandMiddleIntermediate, "RightHandMiddleIntermediate"); - BoneNames.Add(EOculusXRBoneID::BodyRightHandMiddleDistal, "RightHandMiddleDistal"); - BoneNames.Add(EOculusXRBoneID::BodyRightHandMiddleTip, "RightHandMiddleTip"); - BoneNames.Add(EOculusXRBoneID::BodyRightHandRingMetacarpal, "RightHandRingMetacarpal"); - BoneNames.Add(EOculusXRBoneID::BodyRightHandRingProximal, "RightHandRingProximal"); - BoneNames.Add(EOculusXRBoneID::BodyRightHandRingIntermediate, "RightHandRingIntermediate"); - BoneNames.Add(EOculusXRBoneID::BodyRightHandRingDistal, "RightHandRingDistal"); - BoneNames.Add(EOculusXRBoneID::BodyRightHandRingTip, "RightHandRingTip"); - BoneNames.Add(EOculusXRBoneID::BodyRightHandLittleMetacarpal, "RightHandLittleMetacarpal"); - BoneNames.Add(EOculusXRBoneID::BodyRightHandLittleProximal, "RightHandLittleProximal"); - BoneNames.Add(EOculusXRBoneID::BodyRightHandLittleIntermediate, "RightHandLittleIntermediate"); - BoneNames.Add(EOculusXRBoneID::BodyRightHandLittleDistal, "RightHandLittleDistal"); - BoneNames.Add(EOculusXRBoneID::BodyRightHandLittleTip, "RightHandLittleTip"); - BoneNames.Add(EOculusXRBoneID::BodyLeftUpperLeg, "LeftUpperLeg"); - BoneNames.Add(EOculusXRBoneID::BodyLeftLowerLeg, "LeftLowerLeg"); - BoneNames.Add(EOculusXRBoneID::BodyLeftFootAnkleTwist, "LeftFootAnkleTwist"); - BoneNames.Add(EOculusXRBoneID::BodyLeftFootAnkle, "LeftFootAnkle"); - BoneNames.Add(EOculusXRBoneID::BodyLeftFootSubtalar, "LeftFootSubtalar"); - BoneNames.Add(EOculusXRBoneID::BodyLeftFootTransverse, "LeftFootTransverse"); - BoneNames.Add(EOculusXRBoneID::BodyLeftFootBall, "LeftFootBall"); - BoneNames.Add(EOculusXRBoneID::BodyRightUpperLeg, "RightUpperLeg"); - BoneNames.Add(EOculusXRBoneID::BodyRightLowerLeg, "RightLowerLeg"); - BoneNames.Add(EOculusXRBoneID::BodyRightFootAnkleTwist, "RightFootAnkleTwist"); - BoneNames.Add(EOculusXRBoneID::BodyRightFootAnkle, "RightFootAnkle"); - BoneNames.Add(EOculusXRBoneID::BodyRightFootSubtalar, "RightFootSubtalar"); - BoneNames.Add(EOculusXRBoneID::BodyRightFootTransverse, "RightFootTransverse"); - BoneNames.Add(EOculusXRBoneID::BodyRightFootBall, "RightFootBall"); - - OculusXRTelemetry::TScopedMarker(static_cast(GetTypeHash(this))); -} - -void UOculusXRBodyTrackingComponent::BeginPlay() -{ - Super::BeginPlay(); - - if (!UOculusXRMovementFunctionLibrary::IsBodyTrackingSupported()) - { - // Early exit if body tracking isn't supported - UE_LOG(LogOculusXRMovement, Warning, TEXT("Body tracking is not supported. (%s:%s)"), *GetOwner()->GetName(), *GetName()); - SetComponentTickEnabled(false); - return; - } - - if (!OculusXRHMD::GetUnitScaleFactorFromSettings(GetWorld(), WorldToMeters)) - { - UE_LOG(LogOculusXRMovement, Warning, TEXT("Cannot get world settings. (%s:%s)"), *GetOwner()->GetName(), *GetName()); - } - - if (!InitializeBodyBones()) - { - UE_LOG(LogOculusXRMovement, Warning, TEXT("Failed to initialize body data. (%s: %s)"), *GetOwner()->GetName(), *GetName()); - SetComponentTickEnabled(false); - return; - } - - if (!UOculusXRMovementFunctionLibrary::StartBodyTracking()) - { - UE_LOG(LogOculusXRMovement, Warning, TEXT("Failed to start body tracking. (%s: %s)"), *GetOwner()->GetName(), *GetName()); - SetComponentTickEnabled(false); - return; - } - ++TrackingInstanceCount; -} - -void UOculusXRBodyTrackingComponent::EndPlay(const EEndPlayReason::Type EndPlayReason) -{ - if (IsComponentTickEnabled()) - { - if (--TrackingInstanceCount == 0) - { - if (!UOculusXRMovementFunctionLibrary::StopBodyTracking()) - { - UE_LOG(LogOculusXRMovement, Warning, TEXT("Failed to stop body tracking. (%s: %s)"), *GetOwner()->GetName(), *GetName()); - } - } - } - - Super::EndPlay(EndPlayReason); -} - -void UOculusXRBodyTrackingComponent::TickComponent(float DeltaTime, enum ELevelTick TickType, FActorComponentTickFunction* ThisTickFunction) -{ - Super::TickComponent(DeltaTime, TickType, ThisTickFunction); - - if (UOculusXRMovementFunctionLibrary::TryGetBodyState(BodyState, WorldToMeters)) - { - if (BodyState.IsActive && BodyState.Confidence > ConfidenceThreshold) - { - for (int i = 0; i < BodyState.Joints.Num(); ++i) - { - const FOculusXRBodyJoint& Joint = BodyState.Joints[i]; - if (!Joint.bIsValid) - { - continue; - } - - const FVector& Position = Joint.Position; - const FRotator& Orientation = Joint.Orientation; - -#if !(UE_BUILD_SHIPPING || UE_BUILD_TEST) - if (CVarOVRBodyDebugDraw.GetValueOnGameThread() > 0) - { - const FTransform& ParentTransform = GetOwner()->GetActorTransform(); - - FVector DebugPosition = ParentTransform.TransformPosition(Position); - FRotator DebugOrientation = ParentTransform.TransformRotation(Orientation.Quaternion()).Rotator(); - - DrawDebugLine(GetWorld(), DebugPosition, DebugPosition + DebugOrientation.Quaternion().GetUpVector(), FColor::Blue); - DrawDebugLine(GetWorld(), DebugPosition, DebugPosition + DebugOrientation.Quaternion().GetForwardVector(), FColor::Red); - DrawDebugLine(GetWorld(), DebugPosition, DebugPosition + DebugOrientation.Quaternion().GetRightVector(), FColor::Green); - } -#endif - - int32* BoneIndex = MappedBoneIndices.Find(static_cast(i)); - if (BoneIndex != nullptr) - { - switch (BodyTrackingMode) - { - case EOculusXRBodyTrackingMode::PositionAndRotation: - SetBoneTransformByName(BoneNames[static_cast(i)], FTransform(Orientation, Position), EBoneSpaces::ComponentSpace); - break; - case EOculusXRBodyTrackingMode::RotationOnly: - SetBoneRotationByName(BoneNames[static_cast(i)], Orientation, EBoneSpaces::ComponentSpace); - break; - case EOculusXRBodyTrackingMode::NoTracking: - break; - } - } - } - } - } - else - { - UE_LOG(LogOculusXRMovement, Verbose, TEXT("Failed to get body state (%s:%s)."), *GetOwner()->GetName(), *GetName()); - } -} - -void UOculusXRBodyTrackingComponent::ResetAllBoneTransforms() -{ - for (int i = 0; i < BodyState.Joints.Num(); ++i) - { - int32* BoneIndex = MappedBoneIndices.Find(static_cast(i)); - if (BoneIndex != nullptr) - { - ResetBoneTransformByName(BoneNames[static_cast(i)]); - } - } -} - -bool UOculusXRBodyTrackingComponent::InitializeBodyBones() -{ - USkeletalMesh* BodyMesh = Cast(GetSkinnedAsset()); - if (BodyMesh == nullptr) - { - UE_LOG(LogOculusXRMovement, Display, TEXT("No SkeletalMesh in this component.")); - return false; - } - - for (const auto& it : BoneNames) - { - int32 BoneIndex = GetBoneIndex(it.Value); - - if (BoneIndex == INDEX_NONE) - { - UE_LOG(LogOculusXRMovement, Display, TEXT("Could not find bone %s in skeletal mesh %s"), *StaticEnum()->GetValueAsString(it.Key), *BodyMesh->GetName()); - } - else - { - MappedBoneIndices.Add(it.Key, BoneIndex); - } - } - - return true; -} diff --git a/Plugins/MetaXR/Source/OculusXRMovement/Private/OculusXREyeTrackingComponent.cpp b/Plugins/MetaXR/Source/OculusXRMovement/Private/OculusXREyeTrackingComponent.cpp deleted file mode 100644 index 95d3f9c..0000000 --- a/Plugins/MetaXR/Source/OculusXRMovement/Private/OculusXREyeTrackingComponent.cpp +++ /dev/null @@ -1,198 +0,0 @@ -// Copyright (c) Meta Platforms, Inc. and affiliates. - -#include "OculusXREyeTrackingComponent.h" - -#include "GameFramework/WorldSettings.h" -#include "GameFramework/PlayerController.h" -#include "OculusXRHMDPrivate.h" -#include "OculusXRPluginWrapper.h" -#include "OculusXRMovementFunctionLibrary.h" -#include "OculusXRMovementHelpers.h" -#include "OculusXRMovementLog.h" -#include "OculusXRTelemetryMovementEvents.h" - -int UOculusXREyeTrackingComponent::TrackingInstanceCount = 0; - -UOculusXREyeTrackingComponent::UOculusXREyeTrackingComponent() - : TargetMeshComponentName(NAME_None) - , bUpdatePosition(true) - , bUpdateRotation(true) - , ConfidenceThreshold(0.f) - , bAcceptInvalid(false) - , WorldToMeters(100.f) - , TargetPoseableMeshComponent(nullptr) -{ - PrimaryComponentTick.bCanEverTick = true; - PrimaryComponentTick.bStartWithTickEnabled = true; - - EyeToBone.Add(EOculusXREye::Left, "LeftEye"); - EyeToBone.Add(EOculusXREye::Right, "RightEye"); - OculusXRTelemetry::TScopedMarker(static_cast(GetTypeHash(this))); -} - -void UOculusXREyeTrackingComponent::BeginPlay() -{ - Super::BeginPlay(); - - if (!UOculusXRMovementFunctionLibrary::IsEyeTrackingSupported()) - { - // Early exit if eye tracking isn't supported - UE_LOG(LogOculusXRMovement, Warning, TEXT("Eye tracking is not supported. (%s:%s)"), *GetOwner()->GetName(), *GetName()); - SetComponentTickEnabled(false); - return; - } - - // Try & check initializing the eye data - if (!InitializeEyes()) - { - UE_LOG(LogOculusXRMovement, Warning, TEXT("Failed to initialize eye tracking data. (%s:%s)"), *GetOwner()->GetName(), *GetName()); - SetComponentTickEnabled(false); - } - - if (!UOculusXRMovementFunctionLibrary::StartEyeTracking()) - { - UE_LOG(LogOculusXRMovement, Warning, TEXT("Failed to start eye tracking. (%s: %s)"), *GetOwner()->GetName(), *GetName()); - SetComponentTickEnabled(false); - return; - } - ++TrackingInstanceCount; -} - -void UOculusXREyeTrackingComponent::EndPlay(const EEndPlayReason::Type EndPlayReason) -{ - if (IsComponentTickEnabled()) - { - if (--TrackingInstanceCount == 0) - { - if (!UOculusXRMovementFunctionLibrary::StopEyeTracking()) - { - UE_LOG(LogOculusXRMovement, Warning, TEXT("Failed to stop eye tracking. (%s: %s)"), *GetOwner()->GetName(), *GetName()); - } - } - } - - Super::EndPlay(EndPlayReason); -} - -void UOculusXREyeTrackingComponent::TickComponent(float DeltaTime, enum ELevelTick TickType, FActorComponentTickFunction* ThisTickFunction) -{ - Super::TickComponent(DeltaTime, TickType, ThisTickFunction); - - if (!IsValid(TargetPoseableMeshComponent)) - { - UE_LOG(LogOculusXRMovement, VeryVerbose, TEXT("No target mesh specified. (%s:%s)"), *GetOwner()->GetName(), *GetName()); - SetComponentTickEnabled(false); - return; - } - - FOculusXREyeGazesState EyeGazesState; - - if (UOculusXRMovementFunctionLibrary::TryGetEyeGazesState(EyeGazesState, WorldToMeters)) - { - for (uint8 i = 0u; i < static_cast(EOculusXREye::COUNT); ++i) - { - if (PerEyeData[i].EyeIsMapped) - { - const auto& Bone = PerEyeData[i].MappedBoneName; - const auto& EyeGaze = EyeGazesState.EyeGazes[i]; - if ((bAcceptInvalid || EyeGaze.bIsValid) && (EyeGaze.Confidence >= ConfidenceThreshold)) - { - int32 BoneIndex = TargetPoseableMeshComponent->GetBoneIndex(Bone); - FTransform CurrentTransform = TargetPoseableMeshComponent->GetBoneTransformByName(Bone, EBoneSpaces::ComponentSpace); - - if (bUpdatePosition) - { - CurrentTransform.SetLocation(EyeGaze.Position); - } - - if (bUpdateRotation) - { - CurrentTransform.SetRotation(EyeGaze.Orientation.Quaternion() * PerEyeData[i].InitialRotation); - } - - TargetPoseableMeshComponent->SetBoneTransformByName(Bone, CurrentTransform, EBoneSpaces::ComponentSpace); - } - } - } - } - else - { - UE_LOG(LogOculusXRMovement, VeryVerbose, TEXT("Failed to get Eye state from EyeTrackingComponent. (%s:%s)"), *GetOwner()->GetName(), *GetName()); - } -} - -void UOculusXREyeTrackingComponent::ClearRotationValues() -{ - if (!IsValid(TargetPoseableMeshComponent)) - { - UE_LOG(LogOculusXRMovement, VeryVerbose, TEXT("No target mesh specified. (%s:%s)"), *GetOwner()->GetName(), *GetName()); - return; - } - - for (uint8 i = 0u; i < static_cast(EOculusXREye::COUNT); ++i) - { - if (PerEyeData[i].EyeIsMapped) - { - const auto& Bone = PerEyeData[i].MappedBoneName; - - int32 BoneIndex = TargetPoseableMeshComponent->GetBoneIndex(Bone); - FTransform CurrentTransform = TargetPoseableMeshComponent->GetBoneTransformByName(Bone, EBoneSpaces::ComponentSpace); - - CurrentTransform.SetRotation(PerEyeData[i].InitialRotation); - - TargetPoseableMeshComponent->SetBoneTransformByName(Bone, CurrentTransform, EBoneSpaces::ComponentSpace); - } - } -} - -bool UOculusXREyeTrackingComponent::InitializeEyes() -{ - bool bIsAnythingMapped = false; - - TargetPoseableMeshComponent = OculusXRUtility::FindComponentByName(GetOwner(), TargetMeshComponentName); - - if (!IsValid(TargetPoseableMeshComponent)) - { - UE_LOG(LogOculusXRMovement, Warning, TEXT("Could not find mesh with name (%s) for component. (%s:%s)"), *TargetMeshComponentName.ToString(), *GetOwner()->GetName(), *GetName()); - return false; - } - - for (uint8 i = 0u; i < static_cast(EOculusXREye::COUNT); ++i) - { - const EOculusXREye Eye = static_cast(i); - const FName* BoneNameForThisEye = EyeToBone.Find(Eye); - PerEyeData[i].EyeIsMapped = (nullptr != BoneNameForThisEye); - - if (PerEyeData[i].EyeIsMapped) - { - int32 BoneIndex = TargetPoseableMeshComponent->GetBoneIndex(*BoneNameForThisEye); - if (BoneIndex == INDEX_NONE) - { - PerEyeData[i].EyeIsMapped = false; // Eye is explicitly mapped to a bone. But the bone name doesn't exist. - UE_LOG(LogOculusXRMovement, Warning, TEXT("Could not find bone by name (%s) in mesh %s. (%s:%s)"), *BoneNameForThisEye->ToString(), *TargetPoseableMeshComponent->GetName(), *GetOwner()->GetName(), *GetName()); - } - else - { - PerEyeData[i].MappedBoneName = *BoneNameForThisEye; - PerEyeData[i].InitialRotation = TargetPoseableMeshComponent->GetBoneTransformByName(*BoneNameForThisEye, EBoneSpaces::ComponentSpace).GetRotation(); - bIsAnythingMapped = true; - } - } - else - { - UE_LOG(LogOculusXRMovement, Display, TEXT("Eye (%s) is not mapped to any bone on mesh (%s)"), *StaticEnum()->GetValueAsString(Eye), *TargetPoseableMeshComponent->GetName()); - } - } - - if (!bIsAnythingMapped) - { - UE_LOG(LogOculusXRMovement, Warning, TEXT("Component name -- %s:%s, doesn't have a valid configuration."), *GetOwner()->GetName(), *GetName()); - } - - if (!OculusXRHMD::GetUnitScaleFactorFromSettings(GetWorld(), WorldToMeters)) - { - UE_LOG(LogOculusXRMovement, Warning, TEXT("Cannot get world settings. (%s:%s)"), *GetOwner()->GetName(), *GetName()); - } - - return bIsAnythingMapped; -} diff --git a/Plugins/MetaXR/Source/OculusXRMovement/Private/OculusXRFaceTrackingComponent.cpp b/Plugins/MetaXR/Source/OculusXRMovement/Private/OculusXRFaceTrackingComponent.cpp deleted file mode 100644 index e1130f1..0000000 --- a/Plugins/MetaXR/Source/OculusXRMovement/Private/OculusXRFaceTrackingComponent.cpp +++ /dev/null @@ -1,315 +0,0 @@ -// Copyright (c) Meta Platforms, Inc. and affiliates. - -#include "OculusXRFaceTrackingComponent.h" -#include "OculusXRHMD.h" -#include "OculusXRPluginWrapper.h" -#include "OculusXRMovementFunctionLibrary.h" -#include "OculusXRMovementHelpers.h" -#include "OculusXRMovementLog.h" -#include "OculusXRTelemetryMovementEvents.h" - -#include "Engine/SkeletalMesh.h" -#include "Components/SkeletalMeshComponent.h" -#include "Math/UnrealMathUtility.h" - -int UOculusXRFaceTrackingComponent::TrackingInstanceCount = 0; - -UOculusXRFaceTrackingComponent::UOculusXRFaceTrackingComponent() - : TargetMeshComponentName(NAME_None) - , InvalidFaceDataResetTime(2.0f) - , bUpdateFace(true) - , TargetMeshComponent(nullptr) -{ - PrimaryComponentTick.bCanEverTick = true; - PrimaryComponentTick.bStartWithTickEnabled = true; - - // Some defaults - ExpressionNames.Add(EOculusXRFaceExpression::BrowLowererL, "browLowerer_L"); - ExpressionNames.Add(EOculusXRFaceExpression::BrowLowererR, "browLowerer_R"); - ExpressionNames.Add(EOculusXRFaceExpression::CheekPuffL, "cheekPuff_L"); - ExpressionNames.Add(EOculusXRFaceExpression::CheekPuffR, "cheekPuff_R"); - ExpressionNames.Add(EOculusXRFaceExpression::CheekRaiserL, "cheekRaiser_L"); - ExpressionNames.Add(EOculusXRFaceExpression::CheekRaiserR, "cheekRaiser_R"); - ExpressionNames.Add(EOculusXRFaceExpression::CheekSuckL, "cheekSuck_L"); - ExpressionNames.Add(EOculusXRFaceExpression::CheekSuckR, "cheekSuck_R"); - ExpressionNames.Add(EOculusXRFaceExpression::ChinRaiserB, "chinRaiser_B"); - ExpressionNames.Add(EOculusXRFaceExpression::ChinRaiserT, "chinRaiser_T"); - ExpressionNames.Add(EOculusXRFaceExpression::DimplerL, "dimpler_L"); - ExpressionNames.Add(EOculusXRFaceExpression::DimplerR, "dimpler_R"); - ExpressionNames.Add(EOculusXRFaceExpression::EyesClosedL, "eyesClosed_L"); - ExpressionNames.Add(EOculusXRFaceExpression::EyesClosedR, "eyesClosed_R"); - ExpressionNames.Add(EOculusXRFaceExpression::EyesLookDownL, "eyesLookDown_L"); - ExpressionNames.Add(EOculusXRFaceExpression::EyesLookDownR, "eyesLookDown_R"); - ExpressionNames.Add(EOculusXRFaceExpression::EyesLookLeftL, "eyesLookLeft_L"); - ExpressionNames.Add(EOculusXRFaceExpression::EyesLookLeftR, "eyesLookLeft_R"); - ExpressionNames.Add(EOculusXRFaceExpression::EyesLookRightL, "eyesLookRight_L"); - ExpressionNames.Add(EOculusXRFaceExpression::EyesLookRightR, "eyesLookRight_R"); - ExpressionNames.Add(EOculusXRFaceExpression::EyesLookUpL, "eyesLookUp_L"); - ExpressionNames.Add(EOculusXRFaceExpression::EyesLookUpR, "eyesLookUp_R"); - ExpressionNames.Add(EOculusXRFaceExpression::InnerBrowRaiserL, "innerBrowRaiser_L"); - ExpressionNames.Add(EOculusXRFaceExpression::InnerBrowRaiserR, "innerBrowRaiser_R"); - ExpressionNames.Add(EOculusXRFaceExpression::JawDrop, "jawDrop"); - ExpressionNames.Add(EOculusXRFaceExpression::JawSidewaysLeft, "jawSidewaysLeft"); - ExpressionNames.Add(EOculusXRFaceExpression::JawSidewaysRight, "jawSidewaysRight"); - ExpressionNames.Add(EOculusXRFaceExpression::JawThrust, "jawThrust"); - ExpressionNames.Add(EOculusXRFaceExpression::LidTightenerL, "lidTightener_L"); - ExpressionNames.Add(EOculusXRFaceExpression::LidTightenerR, "lidTightener_R"); - ExpressionNames.Add(EOculusXRFaceExpression::LipCornerDepressorL, "lipCornerDepressor_L"); - ExpressionNames.Add(EOculusXRFaceExpression::LipCornerDepressorR, "lipCornerDepressor_R"); - ExpressionNames.Add(EOculusXRFaceExpression::LipCornerPullerL, "lipCornerPuller_L"); - ExpressionNames.Add(EOculusXRFaceExpression::LipCornerPullerR, "lipCornerPuller_R"); - ExpressionNames.Add(EOculusXRFaceExpression::LipFunnelerLB, "lipFunneler_LB"); - ExpressionNames.Add(EOculusXRFaceExpression::LipFunnelerLT, "lipFunneler_LT"); - ExpressionNames.Add(EOculusXRFaceExpression::LipFunnelerRB, "lipFunneler_RB"); - ExpressionNames.Add(EOculusXRFaceExpression::LipFunnelerRT, "lipFunneler_RT"); - ExpressionNames.Add(EOculusXRFaceExpression::LipPressorL, "lipPressor_L"); - ExpressionNames.Add(EOculusXRFaceExpression::LipPressorR, "lipPressor_R"); - ExpressionNames.Add(EOculusXRFaceExpression::LipPuckerL, "lipPucker_L"); - ExpressionNames.Add(EOculusXRFaceExpression::LipPuckerR, "lipPucker_R"); - ExpressionNames.Add(EOculusXRFaceExpression::LipStretcherL, "lipStretcher_L"); - ExpressionNames.Add(EOculusXRFaceExpression::LipStretcherR, "lipStretcher_R"); - ExpressionNames.Add(EOculusXRFaceExpression::LipSuckLB, "lipSuck_LB"); - ExpressionNames.Add(EOculusXRFaceExpression::LipSuckLT, "lipSuck_LT"); - ExpressionNames.Add(EOculusXRFaceExpression::LipSuckRB, "lipSuck_RB"); - ExpressionNames.Add(EOculusXRFaceExpression::LipSuckRT, "lipSuck_RT"); - ExpressionNames.Add(EOculusXRFaceExpression::LipTightenerL, "lipTightener_L"); - ExpressionNames.Add(EOculusXRFaceExpression::LipTightenerR, "lipTightener_R"); - ExpressionNames.Add(EOculusXRFaceExpression::LipsToward, "lipsToward"); - ExpressionNames.Add(EOculusXRFaceExpression::LowerLipDepressorL, "lowerLipDepressor_L"); - ExpressionNames.Add(EOculusXRFaceExpression::LowerLipDepressorR, "lowerLipDepressor_R"); - ExpressionNames.Add(EOculusXRFaceExpression::MouthLeft, "mouthLeft"); - ExpressionNames.Add(EOculusXRFaceExpression::MouthRight, "mouthRight"); - ExpressionNames.Add(EOculusXRFaceExpression::NoseWrinklerL, "noseWrinkler_L"); - ExpressionNames.Add(EOculusXRFaceExpression::NoseWrinklerR, "noseWrinkler_R"); - ExpressionNames.Add(EOculusXRFaceExpression::OuterBrowRaiserL, "outerBrowRaiser_L"); - ExpressionNames.Add(EOculusXRFaceExpression::OuterBrowRaiserR, "outerBrowRaiser_R"); - ExpressionNames.Add(EOculusXRFaceExpression::UpperLidRaiserL, "upperLidRaiser_L"); - ExpressionNames.Add(EOculusXRFaceExpression::UpperLidRaiserR, "upperLidRaiser_R"); - ExpressionNames.Add(EOculusXRFaceExpression::UpperLipRaiserL, "upperLipRaiser_L"); - ExpressionNames.Add(EOculusXRFaceExpression::UpperLipRaiserR, "upperLipRaiser_R"); - ExpressionNames.Add(EOculusXRFaceExpression::TongueTipInterdental, "tongueTipInterdental"); - ExpressionNames.Add(EOculusXRFaceExpression::TongueTipAlveolar, "tongueTipAlveolar"); - ExpressionNames.Add(EOculusXRFaceExpression::TongueFrontDorsalPalate, "tongueFrontDorsalPalate"); - ExpressionNames.Add(EOculusXRFaceExpression::TongueMidDorsalPalate, "tongueMidDorsalPalate"); - ExpressionNames.Add(EOculusXRFaceExpression::TongueBackDorsalVelar, "tongueBackDorsalVelar"); - ExpressionNames.Add(EOculusXRFaceExpression::TongueOut, "tongueOut"); - - const int defaultFaceExpressionModifierLength = 33; - ExpressionModifiers.SetNum(defaultFaceExpressionModifierLength); - ExpressionModifiers[0].FaceExpressions = { EOculusXRFaceExpression::EyesClosedL, EOculusXRFaceExpression::EyesClosedR }; - ExpressionModifiers[1].FaceExpressions = { EOculusXRFaceExpression::EyesLookDownL, EOculusXRFaceExpression::EyesLookDownR }; - ExpressionModifiers[2].FaceExpressions = { EOculusXRFaceExpression::EyesLookLeftL, EOculusXRFaceExpression::EyesLookLeftR }; - ExpressionModifiers[3].FaceExpressions = { EOculusXRFaceExpression::EyesLookRightL, EOculusXRFaceExpression::EyesLookRightR }; - ExpressionModifiers[4].FaceExpressions = { EOculusXRFaceExpression::EyesLookUpL, EOculusXRFaceExpression::EyesLookUpR }; - ExpressionModifiers[5].FaceExpressions = { EOculusXRFaceExpression::LidTightenerL, EOculusXRFaceExpression::LidTightenerR }; - ExpressionModifiers[6].FaceExpressions = { EOculusXRFaceExpression::UpperLidRaiserL, EOculusXRFaceExpression::UpperLidRaiserR }; - ExpressionModifiers[7].FaceExpressions = { EOculusXRFaceExpression::JawDrop }; - ExpressionModifiers[8].FaceExpressions = { EOculusXRFaceExpression::JawSidewaysLeft, EOculusXRFaceExpression::JawSidewaysRight }; - ExpressionModifiers[9].FaceExpressions = { EOculusXRFaceExpression::JawThrust }; - ExpressionModifiers[10].FaceExpressions = { EOculusXRFaceExpression::LipFunnelerLB, EOculusXRFaceExpression::LipFunnelerLT }; - ExpressionModifiers[11].FaceExpressions = { EOculusXRFaceExpression::LipFunnelerRB, EOculusXRFaceExpression::LipFunnelerRT }; - ExpressionModifiers[12].FaceExpressions = { EOculusXRFaceExpression::LipPuckerL, EOculusXRFaceExpression::LipPuckerR }; - ExpressionModifiers[13].FaceExpressions = { EOculusXRFaceExpression::LipSuckLB, EOculusXRFaceExpression::LipSuckLT }; - ExpressionModifiers[14].FaceExpressions = { EOculusXRFaceExpression::LipSuckRB, EOculusXRFaceExpression::LipSuckRT }; - ExpressionModifiers[15].FaceExpressions = { EOculusXRFaceExpression::LipsToward }; - ExpressionModifiers[16].FaceExpressions = { EOculusXRFaceExpression::LowerLipDepressorL, EOculusXRFaceExpression::LowerLipDepressorR }; - ExpressionModifiers[17].FaceExpressions = { EOculusXRFaceExpression::ChinRaiserB, EOculusXRFaceExpression::ChinRaiserT }; - ExpressionModifiers[18].FaceExpressions = { EOculusXRFaceExpression::LipCornerDepressorL, EOculusXRFaceExpression::LipCornerDepressorR }; - ExpressionModifiers[19].FaceExpressions = { EOculusXRFaceExpression::LipCornerPullerL, EOculusXRFaceExpression::LipCornerPullerR }; - ExpressionModifiers[20].FaceExpressions = { EOculusXRFaceExpression::LipStretcherL, EOculusXRFaceExpression::LipStretcherR }; - ExpressionModifiers[21].FaceExpressions = { EOculusXRFaceExpression::MouthLeft, EOculusXRFaceExpression::MouthRight }; - ExpressionModifiers[22].FaceExpressions = { EOculusXRFaceExpression::LipPressorL, EOculusXRFaceExpression::LipPressorR }; - ExpressionModifiers[23].FaceExpressions = { EOculusXRFaceExpression::LipTightenerL, EOculusXRFaceExpression::LipTightenerR }; - ExpressionModifiers[24].FaceExpressions = { EOculusXRFaceExpression::UpperLipRaiserL, EOculusXRFaceExpression::UpperLipRaiserR }; - ExpressionModifiers[25].FaceExpressions = { EOculusXRFaceExpression::CheekPuffL, EOculusXRFaceExpression::CheekPuffR }; - ExpressionModifiers[26].FaceExpressions = { EOculusXRFaceExpression::CheekRaiserL, EOculusXRFaceExpression::CheekRaiserR }; - ExpressionModifiers[27].FaceExpressions = { EOculusXRFaceExpression::CheekSuckL, EOculusXRFaceExpression::CheekSuckR }; - ExpressionModifiers[28].FaceExpressions = { EOculusXRFaceExpression::DimplerL, EOculusXRFaceExpression::DimplerR }; - ExpressionModifiers[29].FaceExpressions = { EOculusXRFaceExpression::NoseWrinklerL, EOculusXRFaceExpression::NoseWrinklerR }; - ExpressionModifiers[30].FaceExpressions = { EOculusXRFaceExpression::BrowLowererL, EOculusXRFaceExpression::BrowLowererR }; - ExpressionModifiers[31].FaceExpressions = { EOculusXRFaceExpression::InnerBrowRaiserL, EOculusXRFaceExpression::InnerBrowRaiserR }; - ExpressionModifiers[32].FaceExpressions = { EOculusXRFaceExpression::OuterBrowRaiserL, EOculusXRFaceExpression::OuterBrowRaiserR }; - - OculusXRTelemetry::TScopedMarker(static_cast(GetTypeHash(this))); -} - -void UOculusXRFaceTrackingComponent::BeginPlay() -{ - Super::BeginPlay(); - - if (!UOculusXRMovementFunctionLibrary::IsFaceTrackingSupported()) - { - // Early exit if face tracking isn't supported - UE_LOG(LogOculusXRMovement, Warning, TEXT("Face tracking is not supported. (%s:%s)"), *GetOwner()->GetName(), *GetName()); - SetComponentTickEnabled(false); - return; - } - - if (TargetMeshComponentName == NAME_None) - { - UE_LOG(LogOculusXRMovement, Warning, TEXT("Invalid mesh component name. (%s:%s)"), *GetOwner()->GetName(), *GetName()); - SetComponentTickEnabled(false); - return; - } - - if (!InitializeFaceTracking()) - { - UE_LOG(LogOculusXRMovement, Warning, TEXT("Failed to initialize face tracking. (%s:%s)"), *GetOwner()->GetName(), *GetName()); - SetComponentTickEnabled(false); - return; - } - - if (!UOculusXRMovementFunctionLibrary::StartFaceTracking()) - { - UE_LOG(LogOculusXRMovement, Warning, TEXT("Failed to start face tracking. (%s: %s)"), *GetOwner()->GetName(), *GetName()); - SetComponentTickEnabled(false); - return; - } - ++TrackingInstanceCount; -} - -void UOculusXRFaceTrackingComponent::EndPlay(const EEndPlayReason::Type EndPlayReason) -{ - if (IsComponentTickEnabled()) - { - if (--TrackingInstanceCount == 0) - { - if (!UOculusXRMovementFunctionLibrary::StopFaceTracking()) - { - UE_LOG(LogOculusXRMovement, Warning, TEXT("Failed to stop face tracking. (%s: %s)"), *GetOwner()->GetName(), *GetName()); - } - } - } - - Super::EndPlay(EndPlayReason); -} - -void UOculusXRFaceTrackingComponent::TickComponent(float DeltaTime, enum ELevelTick TickType, FActorComponentTickFunction* ThisTickFunction) -{ - Super::TickComponent(DeltaTime, TickType, ThisTickFunction); - - if (!IsValid(TargetMeshComponent)) - { - UE_LOG(LogOculusXRMovement, VeryVerbose, TEXT("No target mesh specified. (%s:%s)"), *GetOwner()->GetName(), *GetName()); - return; - } - - if (UOculusXRMovementFunctionLibrary::TryGetFaceState(FaceState) && bUpdateFace) - { - InvalidFaceStateTimer = 0.0f; - - MorphTargets.ResetMorphTargetCurves(TargetMeshComponent); - - for (int32 FaceExpressionIndex = 0; FaceExpressionIndex < static_cast(EOculusXRFaceExpression::COUNT); ++FaceExpressionIndex) - { - if (ExpressionValid[FaceExpressionIndex]) - { - FName ExpressionName = ExpressionNames[static_cast(FaceExpressionIndex)]; - MorphTargets.SetMorphTarget(ExpressionName, FaceState.ExpressionWeights[FaceExpressionIndex]); - } - } - - if (bUseModifiers) - { - for (int32 FaceExpressionModifierIndex = 0; FaceExpressionModifierIndex < ExpressionModifiers.Num(); ++FaceExpressionModifierIndex) - { - for (int32 FaceExpressionIndex = 0; FaceExpressionIndex < ExpressionModifiers[FaceExpressionModifierIndex].FaceExpressions.Num(); ++FaceExpressionIndex) - { - auto Expression = ExpressionModifiers[FaceExpressionModifierIndex].FaceExpressions[FaceExpressionIndex]; - if (ExpressionValid[static_cast(Expression)]) - { - FName ExpressionName = ExpressionNames[Expression]; - float currentValue = MorphTargets.GetMorphTarget(ExpressionName); - - currentValue = FMath::Clamp( - currentValue * ExpressionModifiers[FaceExpressionModifierIndex].Multiplier, - ExpressionModifiers[FaceExpressionModifierIndex].MinValue, - ExpressionModifiers[FaceExpressionModifierIndex].MaxValue); - - MorphTargets.SetMorphTarget(ExpressionName, currentValue); - } - } - } - } - } - else - { - InvalidFaceStateTimer += DeltaTime; - if (InvalidFaceStateTimer >= InvalidFaceDataResetTime) - { - MorphTargets.ResetMorphTargetCurves(TargetMeshComponent); - } - } - - MorphTargets.ApplyMorphTargets(TargetMeshComponent); -} - -void UOculusXRFaceTrackingComponent::SetExpressionValue(EOculusXRFaceExpression Expression, float Value) -{ - if (Expression >= EOculusXRFaceExpression::COUNT) - { - UE_LOG(LogOculusXRMovement, Warning, TEXT("Cannot set expression value with invalid expression index.")); - return; - } - - if (!ExpressionValid[static_cast(Expression)]) - { - UE_LOG(LogOculusXRMovement, Warning, TEXT("Cannot set expression value for an expression with an invalid associated morph target name. Expression name: %s"), *StaticEnum()->GetValueAsString(Expression)); - return; - } - - FName ExpressionName = ExpressionNames[Expression]; - MorphTargets.SetMorphTarget(ExpressionName, Value); -} - -float UOculusXRFaceTrackingComponent::GetExpressionValue(EOculusXRFaceExpression Expression) const -{ - if (Expression >= EOculusXRFaceExpression::COUNT) - { - UE_LOG(LogOculusXRMovement, Warning, TEXT("Cannot request expression value using an invalid expression index.")); - return 0.0f; - } - - FName ExpressionName = ExpressionNames[Expression]; - if (ExpressionName == NAME_None) - { - UE_LOG(LogOculusXRMovement, Warning, TEXT("Cannot request expression value for an expression with an invalid associated morph target name. Expression name: %s"), *StaticEnum()->GetValueAsString(Expression)); - return 0.0f; - } - - return MorphTargets.GetMorphTarget(ExpressionName); -} - -void UOculusXRFaceTrackingComponent::ClearExpressionValues() -{ - MorphTargets.ClearMorphTargets(); -} - -bool UOculusXRFaceTrackingComponent::InitializeFaceTracking() -{ - TargetMeshComponent = OculusXRUtility::FindComponentByName(GetOwner(), TargetMeshComponentName); - - if (!IsValid(TargetMeshComponent)) - { - UE_LOG(LogOculusXRMovement, Warning, TEXT("Could not find skeletal mesh component with name: (%s). (%s:%s)"), *TargetMeshComponentName.ToString(), *GetOwner()->GetName(), *GetName()); - return false; - } - - if (TargetMeshComponent != nullptr) - { - USkeletalMesh* TargetMesh = Cast(TargetMeshComponent->GetSkinnedAsset()); - if (TargetMesh != nullptr) - { - const TMap& MorphTargetIndexMap = TargetMesh->GetMorphTargetIndexMap(); - - for (const auto& it : ExpressionNames) - { - ExpressionValid[static_cast(it.Key)] = MorphTargetIndexMap.Contains(it.Value); - } - - return true; - } - } - - return false; -} diff --git a/Plugins/MetaXR/Source/OculusXRMovement/Private/OculusXRLiveLinkRetargetBodyAsset.cpp b/Plugins/MetaXR/Source/OculusXRMovement/Private/OculusXRLiveLinkRetargetBodyAsset.cpp deleted file mode 100644 index 970edfe..0000000 --- a/Plugins/MetaXR/Source/OculusXRMovement/Private/OculusXRLiveLinkRetargetBodyAsset.cpp +++ /dev/null @@ -1,157 +0,0 @@ -// Copyright (c) Meta Platforms, Inc. and affiliates. - -#include "OculusXRLiveLinkRetargetBodyAsset.h" - -#include "LiveLinkTypes.h" -#include "Algo/Accumulate.h" -#include "Algo/ForEach.h" -#include "Roles/LiveLinkAnimationTypes.h" -#include "BonePose.h" - -#include "OculusXRHMDPrivate.h" -#include "OculusXRMovementLog.h" -#include "OculusXRMovement.h" - -namespace -{ - // EOculusXRAxis to orientation of that direction - FTransform DirectionTransform(EOculusXRAxis Direction) - { - FVector Dir = FVector::ZeroVector; - const uint8 IndexOfDir = static_cast(Direction); - const double Sign = IndexOfDir < static_cast(EOculusXRAxis::NegativeX) ? 1 : -1; - Dir[IndexOfDir % 3] = Sign * 1.0; - return FTransform(Dir.ToOrientationQuat()); - } -} // namespace - -UOculusXRLiveLinkRetargetBodyAsset::UOculusXRLiveLinkRetargetBodyAsset(const FObjectInitializer& ObjectInitializer) - : Super(ObjectInitializer), RetargetingMode(EOculusXRRetargetingMode::Full), ForwardMesh(EOculusXRAxis::X), Scale(100.f), TrackingSpaceToMeshSpace(FTransform::Identity), BoneNames(InPlace, NAME_None), LastBoneContainerSerialNumber(0) -{ -} - -void UOculusXRLiveLinkRetargetBodyAsset::Initialize() -{ - TrackingSpaceToMeshSpace = DirectionTransform(ForwardTracking).Inverse() * DirectionTransform(ForwardMesh); - GlobalBoneCorrection = FTransform(GlobalCorrection.RotationOffset, GlobalCorrection.PositionOffset); - - for (uint8 BoneId = 0; BoneId < static_cast(EOculusXRBoneID::COUNT); ++BoneId) - { - const FTransform LocalCorrectionCombined = Algo::Accumulate(LocalCorrections, FTransform::Identity, [BoneId](FTransform Correction, const FOculusXRBoneCorrectionSet& BoneCorrectionSet) { - if (BoneCorrectionSet.Bones.Contains(static_cast(BoneId))) - { - Correction *= FTransform(BoneCorrectionSet.BoneCorrection.RotationOffset, BoneCorrectionSet.BoneCorrection.PositionOffset); - } - return Correction; - }); - LocalBoneCorrections[BoneId] = LocalCorrectionCombined; - - const EOculusXRBoneID OculusBoneID = static_cast(BoneId); - if (const FName* NameMapping = BoneRemapping.Find(OculusBoneID)) - { - BoneNames[BoneId] = *NameMapping; - } - else - { - BoneNames[BoneId] = NAME_None; - UE_LOG(LogOculusXRMovement, Warning, TEXT("Bone: %s isn't mapped."), *StaticEnum()->GetValueAsString(OculusBoneID)); - } - } - - if (!OculusXRHMD::GetUnitScaleFactorFromSettings(UObject::GetWorld(), Scale)) - { - UE_LOG(LogOculusXRMovement, Warning, TEXT("Cannot get world settings for body retargetting asset.")); - } - - LastBoneContainerSerialNumber = 0; - Algo::ForEach(LastSkeletonBoneRemapping, [](FCompactPoseBoneIndex& BoneIndex) { BoneIndex = FCompactPoseBoneIndex(INDEX_NONE); }); -} - -void UOculusXRLiveLinkRetargetBodyAsset::BuildPoseFromAnimationData(float DeltaTime, const FLiveLinkSkeletonStaticData* InSkeletonData, const FLiveLinkAnimationFrameData* InFrameData, FCompactPose& OutPose) -{ - check(InFrameData); - if (static_cast(EOculusXRBoneID::COUNT) != InFrameData->Transforms.Num()) - { - UE_LOG(LogOculusXRMovement, Error, TEXT("Received wrong data of live link frame. This retargeting asset must be used with Meta MovementSDK Live Link source and Body subject. (received %d bone transforms, expected %d)"), InFrameData->Transforms.Num(), static_cast(EOculusXRBoneID::COUNT)); - return; - } - - if ((LastBoneContainerSerialNumber != OutPose.GetBoneContainer().GetSerialNumber()) || (LastBoneContainerSerialNumber == 0)) - { - OnBoneContainerChanged(OutPose.GetBoneContainer()); - } - - FCSPose MeshPoses; - MeshPoses.InitPose(OutPose); - for (uint8 BoneId = 0; BoneId < static_cast(EOculusXRBoneID::COUNT); ++BoneId) - { - if (const FCompactPoseBoneIndex& BoneIndex = LastSkeletonBoneRemapping[BoneId]; BoneIndex != INDEX_NONE) - { - FTransform BoneTransform = InFrameData->Transforms[BoneId]; - BoneTransform.ScaleTranslation(Scale); - BoneTransform *= TrackingSpaceToMeshSpace; - BoneTransform = GlobalBoneCorrection * BoneTransform; - BoneTransform = LocalBoneCorrections[BoneId] * BoneTransform; - check(!BoneTransform.ContainsNaN()); - - switch (RetargetingMode) - { - case EOculusXRRetargetingMode::Rotations: - BoneTransform.SetLocation(MeshPoses.GetComponentSpaceTransform(BoneIndex).GetLocation()); - MeshPoses.SetComponentSpaceTransform(BoneIndex, BoneTransform); - break; - - case EOculusXRRetargetingMode::RotationsPlusRoot: - if (BoneId != static_cast(EOculusXRBoneID::BodyRoot)) - { - BoneTransform.SetLocation(MeshPoses.GetComponentSpaceTransform(BoneIndex).GetLocation()); - } - MeshPoses.SetComponentSpaceTransform(BoneIndex, BoneTransform); - break; - - case EOculusXRRetargetingMode::RotationsPlusHips: - if (BoneId != static_cast(EOculusXRBoneID::BodyHips)) - { - BoneTransform.SetLocation(MeshPoses.GetComponentSpaceTransform(BoneIndex).GetLocation()); - } - MeshPoses.SetComponentSpaceTransform(BoneIndex, BoneTransform); - break; - - case EOculusXRRetargetingMode::Full: - MeshPoses.SetComponentSpaceTransform(BoneIndex, BoneTransform); - break; - - case EOculusXRRetargetingMode::None: - default: - break; - } - } - } - FCSPose::ConvertComponentPosesToLocalPosesSafe(MeshPoses, OutPose); -} - -void UOculusXRLiveLinkRetargetBodyAsset::OnBoneContainerChanged(const FBoneContainer& BoneContainer) -{ - LastBoneContainerSerialNumber = 0; - - for (uint8 BoneId = 0; BoneId < static_cast(EOculusXRBoneID::COUNT); ++BoneId) - { - const auto& BoneName = BoneNames[BoneId]; - if (BoneName.IsNone()) - { - LastSkeletonBoneRemapping[BoneId] = FCompactPoseBoneIndex(INDEX_NONE); - continue; - } - - if (const int32 MeshIndex = BoneContainer.GetPoseBoneIndexForBoneName(BoneName); MeshIndex != INDEX_NONE) - { - LastSkeletonBoneRemapping[BoneId] = BoneContainer.MakeCompactPoseIndex(FMeshPoseBoneIndex(MeshIndex)); - if (LastSkeletonBoneRemapping[BoneId] == INDEX_NONE) - { - UE_LOG(LogOculusXRMovement, Warning, TEXT("Bone %s was intentionally mapped to %s. But this target doesn't exist in skeleton."), *StaticEnum()->GetValueAsString(static_cast(BoneId)), *BoneName.ToString()); - } - } - } - - LastBoneContainerSerialNumber = BoneContainer.GetSerialNumber(); -} diff --git a/Plugins/MetaXR/Source/OculusXRMovement/Private/OculusXRLiveLinkRetargetFaceAsset.cpp b/Plugins/MetaXR/Source/OculusXRMovement/Private/OculusXRLiveLinkRetargetFaceAsset.cpp deleted file mode 100644 index db7caa7..0000000 --- a/Plugins/MetaXR/Source/OculusXRMovement/Private/OculusXRLiveLinkRetargetFaceAsset.cpp +++ /dev/null @@ -1,82 +0,0 @@ -// Copyright (c) Meta Platforms, Inc. and affiliates. - -#include "OculusXRLiveLinkRetargetFaceAsset.h" - -#include "LiveLinkTypes.h" -#include "Algo/ForEach.h" -#include "Animation/AnimCurveTypes.h" -#include "BonePose.h" -#include "OculusXRMovement.h" -#include "OculusXRMovementLog.h" - -UOculusXRLiveLinkRetargetFaceAsset::UOculusXRLiveLinkRetargetFaceAsset(const FObjectInitializer& ObjectInitializer) - : Super(ObjectInitializer) -{ -} - -void UOculusXRLiveLinkRetargetFaceAsset::Initialize() -{ - LastSkeletonGuid.Invalidate(); -#if UE_VERSION_OLDER_THAN(5, 3, 0) - Algo::ForEach(RemappingForLastSkeleton, [](TArray& Arr) { Arr.Reset(); }); -#else - Algo::ForEach(RemappingForLastSkeleton, [](TArray& Arr) { Arr.Reset(); }); -#endif -} - -void UOculusXRLiveLinkRetargetFaceAsset::BuildPoseAndCurveFromBaseData(float DeltaTime, const FLiveLinkBaseStaticData* InBaseStaticData, const FLiveLinkBaseFrameData* InBaseFrameData, FCompactPose& OutPose, FBlendedCurve& OutCurve) -{ - check(InBaseFrameData); - if (static_cast(EOculusXRFaceExpression::COUNT) != InBaseFrameData->PropertyValues.Num()) - { - UE_LOG(LogOculusXRMovement, Error, TEXT("Received wrong data of live link frame. This retargeting asset must be used with Meta MovementSDK Live Link source and Face subject. (received %d face expressions, expected %d)"), InBaseFrameData->PropertyValues.Num(), static_cast(EOculusXRFaceExpression::COUNT)); - return; - } - const USkeleton* Skeleton = OutPose.GetBoneContainer().GetSkeletonAsset(); - if (!IsValid(Skeleton)) - { - UE_LOG(LogOculusXRMovement, Error, TEXT("No skeleton asset for this retargeting.")); - return; - } - if (LastSkeletonGuid != Skeleton->GetGuid()) - { - OnSkeletonChanged(Skeleton); - } - - for (uint8 ExpressionId = 0; ExpressionId < static_cast(EOculusXRFaceExpression::COUNT); ++ExpressionId) - { -#if UE_VERSION_OLDER_THAN(5, 3, 0) - for (const SmartName::UID_Type UID : RemappingForLastSkeleton[ExpressionId]) - { - OutCurve.Set(UID, InBaseFrameData->PropertyValues[ExpressionId]); - } -#else - for (const FName Name : RemappingForLastSkeleton[ExpressionId]) - { - OutCurve.Set(Name, InBaseFrameData->PropertyValues[ExpressionId]); - } -#endif - } -} - -void UOculusXRLiveLinkRetargetFaceAsset::OnSkeletonChanged(const USkeleton* Skeleton) -{ - Initialize(); - - for (const auto& [ExpressionId, CurveMapping] : CurveRemapping) - { - for (const auto& CurveName : CurveMapping.CurveNames) - { -#if UE_VERSION_OLDER_THAN(5, 3, 0) - if (const SmartName::UID_Type UID = Skeleton->GetUIDByName(USkeleton::AnimCurveMappingName, CurveName); UID != SmartName::MaxUID) - { - RemappingForLastSkeleton[static_cast(ExpressionId)].Emplace(UID); - } -#else - RemappingForLastSkeleton[static_cast(ExpressionId)].Emplace(CurveName); -#endif - } - } - - LastSkeletonGuid = Skeleton->GetGuid(); -} diff --git a/Plugins/MetaXR/Source/OculusXRMovement/Private/OculusXRLiveLinkRetargetFaceVisemesAsset.cpp b/Plugins/MetaXR/Source/OculusXRMovement/Private/OculusXRLiveLinkRetargetFaceVisemesAsset.cpp deleted file mode 100644 index d2aed17..0000000 --- a/Plugins/MetaXR/Source/OculusXRMovement/Private/OculusXRLiveLinkRetargetFaceVisemesAsset.cpp +++ /dev/null @@ -1,82 +0,0 @@ -// Copyright (c) Meta Platforms, Inc. and affiliates. - -#include "OculusXRLiveLinkRetargetFaceVisemesAsset.h" - -#include "LiveLinkTypes.h" -#include "Algo/ForEach.h" -#include "Animation/AnimCurveTypes.h" -#include "BonePose.h" -#include "OculusXRMovement.h" -#include "OculusXRMovementLog.h" - -UOculusXRLiveLinkRetargetFaceVisemesAsset::UOculusXRLiveLinkRetargetFaceVisemesAsset(const FObjectInitializer& ObjectInitializer) - : Super(ObjectInitializer) -{ -} - -void UOculusXRLiveLinkRetargetFaceVisemesAsset::Initialize() -{ - LastSkeletonGuid.Invalidate(); -#if UE_VERSION_OLDER_THAN(5, 3, 0) - Algo::ForEach(RemappingForLastSkeleton, [](TArray& Arr) { Arr.Reset(); }); -#else - Algo::ForEach(RemappingForLastSkeleton, [](TArray& Arr) { Arr.Reset(); }); -#endif -} - -void UOculusXRLiveLinkRetargetFaceVisemesAsset::BuildPoseAndCurveFromBaseData(float DeltaTime, const FLiveLinkBaseStaticData* InBaseStaticData, const FLiveLinkBaseFrameData* InBaseFrameData, FCompactPose& OutPose, FBlendedCurve& OutCurve) -{ - check(InBaseFrameData); - if (static_cast(EOculusXRFaceVisemesExpression::COUNT) != InBaseFrameData->PropertyValues.Num()) - { - UE_LOG(LogOculusXRMovement, Error, TEXT("Received wrong data of live link frame. This retargeting asset must be used with Meta MovementSDK Live Link source and Face subject. (received %d face expressions, expected %d)"), InBaseFrameData->PropertyValues.Num(), static_cast(EOculusXRFaceVisemesExpression::COUNT)); - return; - } - const USkeleton* Skeleton = OutPose.GetBoneContainer().GetSkeletonAsset(); - if (!IsValid(Skeleton)) - { - UE_LOG(LogOculusXRMovement, Error, TEXT("No skeleton asset for this retargeting.")); - return; - } - if (LastSkeletonGuid != Skeleton->GetGuid()) - { - OnSkeletonChanged(Skeleton); - } - - for (uint8 ExpressionId = 0; ExpressionId < static_cast(EOculusXRFaceVisemesExpression::COUNT); ++ExpressionId) - { -#if UE_VERSION_OLDER_THAN(5, 3, 0) - for (const SmartName::UID_Type UID : RemappingForLastSkeleton[ExpressionId]) - { - OutCurve.Set(UID, InBaseFrameData->PropertyValues[ExpressionId]); - } -#else - for (const FName Name : RemappingForLastSkeleton[ExpressionId]) - { - OutCurve.Set(Name, InBaseFrameData->PropertyValues[ExpressionId]); - } -#endif - } -} - -void UOculusXRLiveLinkRetargetFaceVisemesAsset::OnSkeletonChanged(const USkeleton* Skeleton) -{ - Initialize(); - - for (const auto& [ExpressionId, CurveMapping] : CurveRemapping) - { - for (const auto& CurveName : CurveMapping.CurveNames) - { -#if UE_VERSION_OLDER_THAN(5, 3, 0) - if (const SmartName::UID_Type UID = Skeleton->GetUIDByName(USkeleton::AnimCurveMappingName, CurveName); UID != SmartName::MaxUID) - { - RemappingForLastSkeleton[static_cast(ExpressionId)].Emplace(UID); - } -#else - RemappingForLastSkeleton[static_cast(ExpressionId)].Emplace(CurveName); -#endif - } - } - - LastSkeletonGuid = Skeleton->GetGuid(); -} diff --git a/Plugins/MetaXR/Source/OculusXRMovement/Private/OculusXRMorphTargetsController.cpp b/Plugins/MetaXR/Source/OculusXRMovement/Private/OculusXRMorphTargetsController.cpp deleted file mode 100644 index 51b4c21..0000000 --- a/Plugins/MetaXR/Source/OculusXRMovement/Private/OculusXRMorphTargetsController.cpp +++ /dev/null @@ -1,90 +0,0 @@ -// Copyright (c) Meta Platforms, Inc. and affiliates. - -#include "OculusXRMorphTargetsController.h" -#include "Components/SkeletalMeshComponent.h" -#include "Engine/SkeletalMesh.h" - -#include "AnimationRuntime.h" - -void FOculusXRMorphTargetsController::ResetMorphTargetCurves(USkinnedMeshComponent* TargetMeshComponent) -{ - if (TargetMeshComponent) - { - TargetMeshComponent->ActiveMorphTargets.Reset(); - - USkeletalMesh* TargetMesh = Cast(TargetMeshComponent->GetSkinnedAsset()); - if (TargetMesh != nullptr) - { - TargetMeshComponent->MorphTargetWeights.SetNum(TargetMesh->GetMorphTargets().Num()); - - // we need this code to ensure the buffer gets cleared whether or not you have morphtarget curve set - // the case, where you had morphtargets weight on, and when you clear the weight, you want to make sure - // the buffer gets cleared and resized - if (TargetMeshComponent->MorphTargetWeights.Num() > 0) - { - FMemory::Memzero(TargetMeshComponent->MorphTargetWeights.GetData(), TargetMeshComponent->MorphTargetWeights.GetAllocatedSize()); - } - } - else - { - TargetMeshComponent->MorphTargetWeights.Reset(); - } - } -} - -void FOculusXRMorphTargetsController::ApplyMorphTargets(USkinnedMeshComponent* TargetMeshComponent) -{ - if (TargetMeshComponent != nullptr) - { - const USkeletalMesh* TargetMesh = Cast(TargetMeshComponent->GetSkinnedAsset()); - if (TargetMesh != nullptr && MorphTargetCurves.Num() > 0) - { - FAnimationRuntime::AppendActiveMorphTargets(TargetMesh, MorphTargetCurves, TargetMeshComponent->ActiveMorphTargets, TargetMeshComponent->MorphTargetWeights); - } - } -} - -void FOculusXRMorphTargetsController::SetMorphTarget(FName MorphTargetName, float Value) -{ - float* CurveValPtr = MorphTargetCurves.Find(MorphTargetName); - bool bShouldAddToList = FPlatformMath::Abs(Value) > ZERO_ANIMWEIGHT_THRESH; - if (bShouldAddToList) - { - if (CurveValPtr) - { - // sum up, in the future we might normalize, but for now this just sums up - // this won't work well if all of them have full weight - i.e. additive - *CurveValPtr = Value; - } - else - { - MorphTargetCurves.Add(MorphTargetName, Value); - } - } - // if less than ZERO_ANIMWEIGHT_THRESH - // no reason to keep them on the list - else - { - // remove if found - MorphTargetCurves.Remove(MorphTargetName); - } -} - -float FOculusXRMorphTargetsController::GetMorphTarget(FName MorphTargetName) const -{ - const float* CurveValPtr = MorphTargetCurves.Find(MorphTargetName); - - if (CurveValPtr) - { - return *CurveValPtr; - } - else - { - return 0.0f; - } -} - -void FOculusXRMorphTargetsController::ClearMorphTargets() -{ - MorphTargetCurves.Empty(); -} diff --git a/Plugins/MetaXR/Source/OculusXRMovement/Private/OculusXRMovement.cpp b/Plugins/MetaXR/Source/OculusXRMovement/Private/OculusXRMovement.cpp deleted file mode 100644 index c4d46af..0000000 --- a/Plugins/MetaXR/Source/OculusXRMovement/Private/OculusXRMovement.cpp +++ /dev/null @@ -1,193 +0,0 @@ -// Copyright (c) Meta Platforms, Inc. and affiliates. - -#include "OculusXRMovement.h" -#include "OculusXRMovementLog.h" -#include "OculusXRMovementModule.h" -#include "OculusXRHMDPrivate.h" -#include "OculusXRHMD.h" -#include "OculusXRPluginWrapper.h" -#include "OculusXRMovementFunctionsOVR.h" -#include "OculusXRMovementFunctionsOpenXR.h" -#include "Logging/MessageLog.h" - -#define LOCTEXT_NAMESPACE "OculusXRMovement" - -bool OculusXRMovement::GetBodyState(FOculusXRBodyState& outOculusXRBodyState, float WorldToMeters) -{ - return GetOculusXRMovementFunctionsImpl()->GetBodyState(outOculusXRBodyState, WorldToMeters); -} - -bool OculusXRMovement::GetBodySkeleton(FOculusXRBodySkeleton& outOculusXRBodyState, float WorldToMeters) -{ - return GetOculusXRMovementFunctionsImpl()->GetBodySkeleton(outOculusXRBodyState, WorldToMeters); -} - -bool OculusXRMovement::IsBodyTrackingEnabled() -{ - return GetOculusXRMovementFunctionsImpl()->IsBodyTrackingEnabled(); -} - -bool OculusXRMovement::IsBodyTrackingSupported() -{ - return GetOculusXRMovementFunctionsImpl()->IsBodyTrackingSupported(); -} - -bool OculusXRMovement::RequestBodyTrackingFidelity(EOculusXRBodyTrackingFidelity fidelity) -{ - return GetOculusXRMovementFunctionsImpl()->RequestBodyTrackingFidelity(fidelity); -} - -bool OculusXRMovement::ResetBodyTrackingCalibration() -{ - return GetOculusXRMovementFunctionsImpl()->ResetBodyTrackingCalibration(); -} - -bool OculusXRMovement::SuggestBodyTrackingCalibrationOverride(float height) -{ - return GetOculusXRMovementFunctionsImpl()->SuggestBodyTrackingCalibrationOverride(height); -} - -bool OculusXRMovement::StartBodyTracking() -{ - return GetOculusXRMovementFunctionsImpl()->StartBodyTracking(); -} - -bool OculusXRMovement::StartBodyTrackingByJointSet(EOculusXRBodyJointSet jointSet) -{ - return GetOculusXRMovementFunctionsImpl()->StartBodyTrackingByJointSet(jointSet); -} - -bool OculusXRMovement::StopBodyTracking() -{ - return GetOculusXRMovementFunctionsImpl()->StopBodyTracking(); -} - -bool OculusXRMovement::GetFaceState(FOculusXRFaceState& outOculusXRFaceState) -{ - return GetOculusXRMovementFunctionsImpl()->GetFaceState(outOculusXRFaceState); -} - -bool OculusXRMovement::IsFaceTrackingEnabled() -{ - return GetOculusXRMovementFunctionsImpl()->IsFaceTrackingEnabled(); -} - -bool OculusXRMovement::IsFaceTrackingSupported() -{ - return GetOculusXRMovementFunctionsImpl()->IsFaceTrackingSupported(); -} - -bool OculusXRMovement::IsFaceTrackingVisemesEnabled() -{ - // Prevent calling plugin functions if the plugin is not available - if (!FOculusXRHMDModule::Get().IsOVRPluginAvailable()) - { - return false; - } - - bool bResult = false; - - ovrpBool IsEnabled = ovrpBool_False; - ovrpResult TrackingEnabledResult = FOculusXRHMDModule::GetPluginWrapper().GetFaceTrackingVisemesEnabled(&IsEnabled); - - if (OVRP_SUCCESS(TrackingEnabledResult)) - { - bResult = (IsEnabled == ovrpBool_True); - } - - return bResult; -} - -bool OculusXRMovement::IsFaceTrackingVisemesSupported() -{ - // Prevent calling plugin functions if the plugin is not available - if (!FOculusXRHMDModule::Get().IsOVRPluginAvailable()) - { - return false; - } - - bool bResult = false; - - ovrpBool IsSupported = ovrpBool_False; - ovrpResult TrackingSupportedResult = FOculusXRHMDModule::GetPluginWrapper().GetFaceTrackingVisemesSupported(&IsSupported); - - if (OVRP_SUCCESS(TrackingSupportedResult)) - { - bResult = (IsSupported == ovrpBool_True); - } - - return bResult; -} - -bool OculusXRMovement::SetFaceTrackingVisemesEnabled(bool enabled) -{ - return GetOculusXRMovementFunctionsImpl()->SetFaceTrackingVisemesEnabled(enabled); -} - -bool OculusXRMovement::GetFaceVisemesState(FOculusXRFaceVisemesState& outOculusXRFaceVisemesState) -{ - return GetOculusXRMovementFunctionsImpl()->GetFaceVisemesState(outOculusXRFaceVisemesState); -} - -bool OculusXRMovement::StartFaceTracking() -{ - return GetOculusXRMovementFunctionsImpl()->StartFaceTracking(); -} - -bool OculusXRMovement::StopFaceTracking() -{ - return GetOculusXRMovementFunctionsImpl()->StopFaceTracking(); -} - -bool OculusXRMovement::GetEyeGazesState(FOculusXREyeGazesState& outOculusXREyeGazesState, float WorldToMeters) -{ - return GetOculusXRMovementFunctionsImpl()->GetEyeGazesState(outOculusXREyeGazesState, WorldToMeters); -} - -bool OculusXRMovement::IsEyeTrackingEnabled() -{ - return GetOculusXRMovementFunctionsImpl()->IsEyeTrackingEnabled(); -} - -bool OculusXRMovement::IsEyeTrackingSupported() -{ - return GetOculusXRMovementFunctionsImpl()->IsEyeTrackingSupported(); -} - -bool OculusXRMovement::StartEyeTracking() -{ - return GetOculusXRMovementFunctionsImpl()->StartEyeTracking(); -} - -bool OculusXRMovement::StopEyeTracking() -{ - return GetOculusXRMovementFunctionsImpl()->StopEyeTracking(); -} - -bool OculusXRMovement::IsFullBodyTrackingEnabled() -{ - return GetOculusXRMovementFunctionsImpl()->IsFullBodyTrackingEnabled(); -} - -TSharedPtr OculusXRMovement::MovementFunctionsImpl = nullptr; -TSharedPtr OculusXRMovement::GetOculusXRMovementFunctionsImpl() -{ - if (MovementFunctionsImpl == nullptr) - { - const FName SystemName(TEXT("OpenXR")); - const bool IsOpenXR = GEngine->XRSystem.IsValid() && (GEngine->XRSystem->GetSystemName() == SystemName); - if (OculusXRHMD::FOculusXRHMD::GetOculusXRHMD() != nullptr) - { - MovementFunctionsImpl = MakeShared(); - } - else if (IsOpenXR) - { - MovementFunctionsImpl = MakeShared(); - } - } - - check(MovementFunctionsImpl); - return MovementFunctionsImpl; -} - -#undef LOCTEXT_NAMESPACE diff --git a/Plugins/MetaXR/Source/OculusXRMovement/Private/OculusXRMovementFunctionLibrary.cpp b/Plugins/MetaXR/Source/OculusXRMovement/Private/OculusXRMovementFunctionLibrary.cpp deleted file mode 100644 index bca7911..0000000 --- a/Plugins/MetaXR/Source/OculusXRMovement/Private/OculusXRMovementFunctionLibrary.cpp +++ /dev/null @@ -1,125 +0,0 @@ -// Copyright (c) Meta Platforms, Inc. and affiliates. - -#include "OculusXRMovementFunctionLibrary.h" - -#include "IOculusXRMovementModule.h" -#include "LiveLinkOculusXRMovementSourceFactory.h" -#include "OculusXRHMDPrivate.h" -#include "OculusXRMovement.h" -#include "OculusXRHMD.h" -#include "OculusXRMovementLiveLink.h" - -bool UOculusXRMovementFunctionLibrary::TryGetBodyState(FOculusXRBodyState& outBodyState, float WorldToMeters) -{ - return OculusXRMovement::GetBodyState(outBodyState, WorldToMeters); -} - -bool UOculusXRMovementFunctionLibrary::IsBodyTrackingEnabled() -{ - return OculusXRMovement::IsBodyTrackingEnabled(); -} - -bool UOculusXRMovementFunctionLibrary::IsBodyTrackingSupported() -{ - return OculusXRMovement::IsBodyTrackingSupported(); -} - -bool UOculusXRMovementFunctionLibrary::RequestBodyTrackingFidelity(EOculusXRBodyTrackingFidelity fidelity) -{ - return OculusXRMovement::RequestBodyTrackingFidelity(fidelity); -} - -bool UOculusXRMovementFunctionLibrary::ResetBodyTrackingCalibration() -{ - return OculusXRMovement::ResetBodyTrackingCalibration(); -} - -bool UOculusXRMovementFunctionLibrary::SuggestBodyTrackingCalibrationOverride(float height) -{ - return OculusXRMovement::SuggestBodyTrackingCalibrationOverride(height); -} - -bool UOculusXRMovementFunctionLibrary::StartBodyTrackingByJointSet(EOculusXRBodyJointSet jointSet) -{ - return OculusXRMovement::StartBodyTrackingByJointSet(jointSet); -} - -bool UOculusXRMovementFunctionLibrary::StartBodyTracking() -{ - return OculusXRMovement::StartBodyTracking(); -} - -bool UOculusXRMovementFunctionLibrary::StopBodyTracking() -{ - return OculusXRMovement::StopBodyTracking(); -} - -bool UOculusXRMovementFunctionLibrary::TryGetFaceState(FOculusXRFaceState& outFaceState) -{ - return OculusXRMovement::GetFaceState(outFaceState); -} - -bool UOculusXRMovementFunctionLibrary::IsFaceTrackingVisemesSupported() -{ - return OculusXRMovement::IsFaceTrackingVisemesSupported(); -} - -bool UOculusXRMovementFunctionLibrary::IsFaceTrackingVisemesEnabled() -{ - return OculusXRMovement::IsFaceTrackingVisemesEnabled(); -} - -bool UOculusXRMovementFunctionLibrary::SetFaceTrackingVisemesEnabled(bool faceTrackingVisemesEnabled) -{ - return OculusXRMovement::SetFaceTrackingVisemesEnabled(faceTrackingVisemesEnabled); -} - -bool UOculusXRMovementFunctionLibrary::TryGetFaceVisemesState(FOculusXRFaceVisemesState& outFaceVisemesState) -{ - return OculusXRMovement::GetFaceVisemesState(outFaceVisemesState); -} - -bool UOculusXRMovementFunctionLibrary::IsFaceTrackingEnabled() -{ - return OculusXRMovement::IsFaceTrackingEnabled(); -} - -bool UOculusXRMovementFunctionLibrary::IsFaceTrackingSupported() -{ - return OculusXRMovement::IsFaceTrackingSupported(); -} - -bool UOculusXRMovementFunctionLibrary::StartFaceTracking() -{ - return OculusXRMovement::StartFaceTracking(); -} - -bool UOculusXRMovementFunctionLibrary::StopFaceTracking() -{ - return OculusXRMovement::StopFaceTracking(); -} - -bool UOculusXRMovementFunctionLibrary::TryGetEyeGazesState(FOculusXREyeGazesState& outEyeGazesState, float WorldToMeters) -{ - return OculusXRMovement::GetEyeGazesState(outEyeGazesState, WorldToMeters); -} - -bool UOculusXRMovementFunctionLibrary::IsEyeTrackingEnabled() -{ - return OculusXRMovement::IsEyeTrackingEnabled(); -} - -bool UOculusXRMovementFunctionLibrary::IsEyeTrackingSupported() -{ - return OculusXRMovement::IsEyeTrackingSupported(); -} - -bool UOculusXRMovementFunctionLibrary::StartEyeTracking() -{ - return OculusXRMovement::StartEyeTracking(); -} - -bool UOculusXRMovementFunctionLibrary::StopEyeTracking() -{ - return OculusXRMovement::StopEyeTracking(); -} diff --git a/Plugins/MetaXR/Source/OculusXRMovement/Private/OculusXRMovementFunctionsOVR.cpp b/Plugins/MetaXR/Source/OculusXRMovement/Private/OculusXRMovementFunctionsOVR.cpp deleted file mode 100644 index 2e255a6..0000000 --- a/Plugins/MetaXR/Source/OculusXRMovement/Private/OculusXRMovementFunctionsOVR.cpp +++ /dev/null @@ -1,598 +0,0 @@ -// Copyright (c) Meta Platforms, Inc. and affiliates. - -#include "OculusXRMovementFunctionsOVR.h" -#include "OculusXRMovementLog.h" -#include "OculusXRMovementModule.h" -#include "OculusXRHMDPrivate.h" -#include "OculusXRHMD.h" -#include "OculusXRPluginWrapper.h" -#include "Logging/MessageLog.h" - -#define LOCTEXT_NAMESPACE "OculusXRMovement" - -bool FOculusXRMovementFunctionsOVR::GetBodyState(FOculusXRBodyState& outOculusXRBodyState, float WorldToMeters) -{ - // Prevent calling plugin functions if the plugin is not available - if (!FOculusXRHMDModule::Get().IsOVRPluginAvailable()) - { - return false; - } - - static_assert(ovrpBoneId_FullBody_End == static_cast(EOculusXRBoneID::COUNT), "The size of the OVRPlugin Bone ID enum should be the same as the EOculusXRBoneID enum."); - - const auto AvailableJoints = IsFullBodyTrackingEnabled() ? ovrpBoneId_FullBody_End : ovrpBoneId_Body_End; - checkf(outOculusXRBodyState.Joints.Num() >= AvailableJoints, TEXT("Not enough joints in FOculusXRBodyState::Joints array. You must have at least %d joints"), AvailableJoints); - - ovrpBodyState4 OVRBodyState; - ovrpResult OVRBodyStateResult = FOculusXRHMDModule::GetPluginWrapper().GetBodyState4(ovrpStep_Render, OVRP_CURRENT_FRAMEINDEX, &OVRBodyState); - ensureMsgf(OVRBodyStateResult != ovrpFailure_NotYetImplemented, TEXT("Body tracking is not implemented on this platform.")); - - if (OVRP_SUCCESS(OVRBodyStateResult)) - { - outOculusXRBodyState.IsActive = (OVRBodyState.IsActive == ovrpBool_True); - outOculusXRBodyState.Confidence = OVRBodyState.Confidence; - outOculusXRBodyState.SkeletonChangedCount = OVRBodyState.SkeletonChangedCount; - outOculusXRBodyState.Time = static_cast(OVRBodyState.Time); - - for (int i = 0; i < AvailableJoints; ++i) - { - ovrpBodyJointLocation OVRJointLocation = OVRBodyState.JointLocations[i]; - ovrpPosef OVRJointPose = OVRJointLocation.Pose; - - FOculusXRBodyJoint& OculusXRBodyJoint = outOculusXRBodyState.Joints[i]; - OculusXRBodyJoint.LocationFlags = OVRJointLocation.LocationFlags; - OculusXRBodyJoint.bIsValid = OVRJointLocation.LocationFlags & (XRSpaceFlags::XR_SPACE_LOCATION_ORIENTATION_VALID_BIT | XRSpaceFlags::XR_SPACE_LOCATION_POSITION_VALID_BIT); - OculusXRBodyJoint.Orientation = FRotator(OculusXRHMD::ToFQuat(OVRJointPose.Orientation)); - OculusXRBodyJoint.Position = OculusXRHMD::ToFVector(OVRJointPose.Position) * WorldToMeters; - } - if (AvailableJoints < outOculusXRBodyState.Joints.Num()) - { - for (int i = AvailableJoints; i < outOculusXRBodyState.Joints.Num(); ++i) - { - outOculusXRBodyState.Joints[i].bIsValid = false; - } - } - - return true; - } - - return false; -} - -bool FOculusXRMovementFunctionsOVR::GetBodySkeleton(FOculusXRBodySkeleton& outOculusXRBodyState, float WorldToMeters) -{ - // Prevent calling plugin functions if the plugin is not available - if (!FOculusXRHMDModule::Get().IsOVRPluginAvailable()) - { - return false; - } - - ovrpSkeleton3 OVRBodySkeleton = {}; - ovrpResult OVRBodyStateResult = - FOculusXRHMDModule::GetPluginWrapper().GetSkeleton3( - (IsFullBodyTrackingEnabled() ? ovrpSkeletonType_FullBody : ovrpSkeletonType_Body), - &OVRBodySkeleton); - if (OVRP_SUCCESS(OVRBodyStateResult)) - { - checkf(outOculusXRBodyState.Bones.Num() >= static_cast(OVRBodySkeleton.NumBones), - TEXT("Not enough bones in OVRBosySkeleton::Bones array. You must have at least %d joints"), - OVRBodySkeleton.NumBones); - - outOculusXRBodyState.NumBones = OVRBodySkeleton.NumBones; - for (uint32 i = 0; i < OVRBodySkeleton.NumBones; ++i) - { - ovrpBone OVRBone = OVRBodySkeleton.Bones[i]; - ovrpPosef OVRBonePose = OVRBone.Pose; - - FOculusXRBodySkeletonBone& OculusXRBone = outOculusXRBodyState.Bones[i]; - - OculusXRBone.Orientation = FRotator(OculusXRHMD::ToFQuat(OVRBonePose.Orientation)); - OculusXRBone.Position = OculusXRHMD::ToFVector(OVRBonePose.Position) * WorldToMeters; - - if (OVRBone.ParentBoneIndex == ovrpBoneId_Invalid) - { - OculusXRBone.ParentBoneIndex = EOculusXRBoneID::None; - } - else - { - OculusXRBone.ParentBoneIndex = static_cast(OVRBone.ParentBoneIndex); - } - - OculusXRBone.BoneId = static_cast(OVRBone.BoneId); - } - - return true; - } - return false; -} - -bool FOculusXRMovementFunctionsOVR::IsBodyTrackingEnabled() -{ - // Prevent calling plugin functions if the plugin is not available - if (!FOculusXRHMDModule::Get().IsOVRPluginAvailable()) - { - return false; - } - - bool bResult = false; - - ovrpBool IsEnabled = ovrpBool_False; - ovrpResult TrackingEnabledResult = FOculusXRHMDModule::GetPluginWrapper().GetBodyTrackingEnabled(&IsEnabled); - - if (OVRP_SUCCESS(TrackingEnabledResult)) - { - bResult = (IsEnabled == ovrpBool_True); - } - - return bResult; -} - -bool FOculusXRMovementFunctionsOVR::IsBodyTrackingSupported() -{ - // Prevent calling plugin functions if the plugin is not available - if (!FOculusXRHMDModule::Get().IsOVRPluginAvailable()) - { - return false; - } - - bool bResult = false; - - ovrpBool IsSupported = ovrpBool_False; - ovrpResult TrackingSupportedResult = FOculusXRHMDModule::GetPluginWrapper().GetBodyTrackingSupported(&IsSupported); - - if (OVRP_SUCCESS(TrackingSupportedResult)) - { - bResult = (IsSupported == ovrpBool_True); - } - - return bResult; -} - -bool FOculusXRMovementFunctionsOVR::RequestBodyTrackingFidelity(EOculusXRBodyTrackingFidelity fidelity) -{ - // Prevent calling plugin functions if the plugin is not available - if (!FOculusXRHMDModule::Get().IsOVRPluginAvailable()) - { - return false; - } - - static_assert(static_cast(EOculusXRBodyTrackingFidelity::Low) == static_cast(ovrpBodyTrackingFidelity2::ovrpBodyTrackingFidelity2_Low), "EOculusXRBodyTrackingFidelity and ovrpBodyTrackingFidelity2 should be sync"); - static_assert(static_cast(EOculusXRBodyTrackingFidelity::High) == static_cast(ovrpBodyTrackingFidelity2::ovrpBodyTrackingFidelity2_High), "EOculusXRBodyTrackingFidelity and ovrpBodyTrackingFidelity2 should be sync"); - - auto* OculusXRHMD = OculusXRHMD::FOculusXRHMD::GetOculusXRHMD(); - if (OculusXRHMD) - { - OculusXRHMD->GetSettings()->BodyTrackingFidelity = static_cast(fidelity); - } - - return OVRP_SUCCESS(FOculusXRHMDModule::GetPluginWrapper().RequestBodyTrackingFidelity(static_cast(fidelity))); -} - -bool FOculusXRMovementFunctionsOVR::ResetBodyTrackingCalibration() -{ - // Prevent calling plugin functions if the plugin is not available - if (!FOculusXRHMDModule::Get().IsOVRPluginAvailable()) - { - return false; - } - - return OVRP_SUCCESS(FOculusXRHMDModule::GetPluginWrapper().ResetBodyTrackingCalibration()); -} - -bool FOculusXRMovementFunctionsOVR::SuggestBodyTrackingCalibrationOverride(float height) -{ - // Prevent calling plugin functions if the plugin is not available - if (!FOculusXRHMDModule::Get().IsOVRPluginAvailable()) - { - return false; - } - - ovrpBodyTrackingCalibrationInfo calibrationInfo{ height }; - return OVRP_SUCCESS(FOculusXRHMDModule::GetPluginWrapper().SuggestBodyTrackingCalibrationOverride(calibrationInfo)); -} - -bool FOculusXRMovementFunctionsOVR::StartBodyTracking() -{ - // Prevent calling plugin functions if the plugin is not available - if (!FOculusXRHMDModule::Get().IsOVRPluginAvailable()) - { - return false; - } - - static_assert(static_cast(EOculusXRBodyJointSet::UpperBody) == static_cast(ovrpBodyJointSet::ovrpBodyJointSet_UpperBody), "EOculusXRBodyJointSet and ovrpBodyJointSet should be sync"); - static_assert(static_cast(EOculusXRBodyJointSet::FullBody) == static_cast(ovrpBodyJointSet::ovrpBodyJointSet_FullBody), "EOculusXRBodyJointSet and ovrpBodyJointSet should be sync"); - - bool result = false; - - const auto* OculusXRHMD = OculusXRHMD::FOculusXRHMD::GetOculusXRHMD(); - if (OculusXRHMD) - { - const auto JointSet = OculusXRHMD->GetSettings()->BodyTrackingJointSet; - if (!OVRP_SUCCESS(FOculusXRHMDModule::GetPluginWrapper().StartBodyTracking2(static_cast(JointSet)))) - { - return false; - } - - const auto Fidelity = OculusXRHMD->GetSettings()->BodyTrackingFidelity; - FOculusXRHMDModule::GetPluginWrapper().RequestBodyTrackingFidelity(static_cast(Fidelity)); - return true; - } - else - { - return OVRP_SUCCESS(FOculusXRHMDModule::GetPluginWrapper().StartBodyTracking2(ovrpBodyJointSet::ovrpBodyJointSet_UpperBody)); - } -} - -bool FOculusXRMovementFunctionsOVR::StartBodyTrackingByJointSet(EOculusXRBodyJointSet jointSet) -{ - // Prevent calling plugin functions if the plugin is not available - if (!FOculusXRHMDModule::Get().IsOVRPluginAvailable()) - { - return false; - } - - bool result = false; - - auto* OculusXRHMD = OculusXRHMD::FOculusXRHMD::GetOculusXRHMD(); - if (OculusXRHMD) - { - OculusXRHMD->GetSettings()->BodyTrackingJointSet = static_cast(jointSet); - result = StartBodyTracking(); - } - else - { - result = OVRP_SUCCESS(FOculusXRHMDModule::GetPluginWrapper().StartBodyTracking2(static_cast(jointSet))); - } - - return result; -} - -bool FOculusXRMovementFunctionsOVR::StopBodyTracking() -{ - // Prevent calling plugin functions if the plugin is not available - if (!FOculusXRHMDModule::Get().IsOVRPluginAvailable()) - { - return false; - } - - FOculusXRHMDModule::GetPluginWrapper().RequestBodyTrackingFidelity(ovrpBodyTrackingFidelity2::ovrpBodyTrackingFidelity2_Low); - return OVRP_SUCCESS(FOculusXRHMDModule::GetPluginWrapper().StopBodyTracking()); -} - -bool FOculusXRMovementFunctionsOVR::GetFaceState(FOculusXRFaceState& outOculusXRFaceState) -{ - // Prevent calling plugin functions if the plugin is not available - if (!FOculusXRHMDModule::Get().IsOVRPluginAvailable()) - { - return false; - } - - const auto blendShapeCount = ovrpFaceExpression2_Max; - - static_assert(blendShapeCount == static_cast(EOculusXRFaceExpression::COUNT), "The size of the OVRPlugin Face Expression enum should be the same as the EOculusXRFaceExpression enum."); - - checkf(outOculusXRFaceState.ExpressionWeightConfidences.Num() >= ovrpFaceConfidence_Max, TEXT("Not enough expression weight confidences in FOculusXRFaceState::ExpressionWeightConfidences. Requires %d available elements in the array."), ovrpFaceConfidence_Max); - checkf(outOculusXRFaceState.ExpressionWeights.Num() >= blendShapeCount, TEXT("Not enough expression weights in FOculusXRFaceState::ExpressionWeights. Requires %d available elements in the array."), blendShapeCount); - - ovrpFaceState2 OVRFaceState; - ovrpResult OVRFaceStateResult = FOculusXRHMDModule::GetPluginWrapper().GetFaceState2(ovrpStep_Render, OVRP_CURRENT_FRAMEINDEX, &OVRFaceState); - - ensureMsgf(OVRFaceStateResult != ovrpFailure_NotYetImplemented, TEXT("Face tracking is not implemented on this platform.")); - - if (OVRP_SUCCESS(OVRFaceStateResult)) - { - outOculusXRFaceState.bIsValid = (OVRFaceState.Status.IsValid == ovrpBool_True); - outOculusXRFaceState.bIsEyeFollowingBlendshapesValid = (OVRFaceState.Status.IsEyeFollowingBlendshapesValid == ovrpBool_True); - outOculusXRFaceState.Time = static_cast(OVRFaceState.Time); - - for (int i = 0; i < blendShapeCount; ++i) - { - outOculusXRFaceState.ExpressionWeights[i] = OVRFaceState.ExpressionWeights[i]; - } - - for (int i = 0; i < ovrpFaceConfidence_Max; ++i) - { - outOculusXRFaceState.ExpressionWeightConfidences[i] = OVRFaceState.ExpressionWeightConfidences[i]; - } - - outOculusXRFaceState.DataSource = static_cast(OVRFaceState.DataSource); - - return true; - } - - return false; -} - -bool FOculusXRMovementFunctionsOVR::IsFaceTrackingEnabled() -{ - // Prevent calling plugin functions if the plugin is not available - if (!FOculusXRHMDModule::Get().IsOVRPluginAvailable()) - { - return false; - } - - bool bResult = false; - - ovrpBool IsEnabled = ovrpBool_False; - ovrpResult TrackingEnabledResult = FOculusXRHMDModule::GetPluginWrapper().GetFaceTracking2Enabled(&IsEnabled); - - if (OVRP_SUCCESS(TrackingEnabledResult)) - { - bResult = (IsEnabled == ovrpBool_True); - } - - return bResult; -} - -bool FOculusXRMovementFunctionsOVR::IsFaceTrackingSupported() -{ - // Prevent calling plugin functions if the plugin is not available - if (!FOculusXRHMDModule::Get().IsOVRPluginAvailable()) - { - return false; - } - - bool bResult = false; - - ovrpBool IsSupported = ovrpBool_False; - ovrpResult TrackingSupportedResult = FOculusXRHMDModule::GetPluginWrapper().GetFaceTracking2Supported(&IsSupported); - - if (OVRP_SUCCESS(TrackingSupportedResult)) - { - bResult = (IsSupported == ovrpBool_True); - } - - return bResult; -} - -bool FOculusXRMovementFunctionsOVR::StartFaceTracking() -{ - // Prevent calling plugin functions if the plugin is not available - if (!FOculusXRHMDModule::Get().IsOVRPluginAvailable()) - { - return false; - } - - const auto* OculusXRHMD = OculusXRHMD::FOculusXRHMD::GetOculusXRHMD(); - if (OculusXRHMD) - { - ovrpFaceTrackingDataSource2 dataSources[ovrpFaceConstants_FaceTrackingDataSourcesCount]; - int count = 0; - for (auto Iterator = OculusXRHMD->GetSettings()->FaceTrackingDataSource.CreateConstIterator(); Iterator; ++Iterator) - { - dataSources[count++] = static_cast(*Iterator); - } - return OVRP_SUCCESS(FOculusXRHMDModule::GetPluginWrapper().StartFaceTracking2(dataSources, count)); - } - return false; -} - -bool FOculusXRMovementFunctionsOVR::StopFaceTracking() -{ - // Prevent calling plugin functions if the plugin is not available - if (!FOculusXRHMDModule::Get().IsOVRPluginAvailable()) - { - return false; - } - - return OVRP_SUCCESS(FOculusXRHMDModule::GetPluginWrapper().StopFaceTracking2()); -} - -bool FOculusXRMovementFunctionsOVR::SetFaceTrackingVisemesEnabled(bool enabled) -{ - auto* OculusXRHMD = OculusXRHMD::FOculusXRHMD::GetOculusXRHMD(); - if (!OculusXRHMD) - { - return false; - } - - OculusXRHMD->GetSettings()->bFaceTrackingVisemesEnabled = enabled; - - if (FOculusXRHMDModule::Get().IsOVRPluginAvailable()) - { - ovrpBool IsEnabled = ovrpBool_False; - ovrpResult TrackingEnabledResult = FOculusXRHMDModule::GetPluginWrapper().GetFaceTracking2Enabled(&IsEnabled); - - if (OVRP_SUCCESS(TrackingEnabledResult) && IsEnabled == ovrpBool_True) - { - UE_LOG(LogOculusXRMovement, Warning, TEXT("SetFaceTrackingVisemesEnabled should be called before StartFaceTracking, otherwise it takes no effect.")); - return false; - } - } - - return true; -} - -bool FOculusXRMovementFunctionsOVR::GetFaceVisemesState(FOculusXRFaceVisemesState& outOculusXRFaceVisemesState) -{ - // Prevent calling plugin functions if the plugin is not available - if (!FOculusXRHMDModule::Get().IsOVRPluginAvailable()) - { - return false; - } - - const auto visemeCount = ovrpFaceViseme_Max; - static_assert(visemeCount == static_cast(EOculusXRFaceVisemesExpression::COUNT), "The size of the OVRPlugin Face Visemes Expression enum should be the same as the EOculusXRFaceVisemesExpression enum."); - checkf(outOculusXRFaceVisemesState.ExpressionVisemeWeights.Num() >= visemeCount, TEXT("Not enough expression weights in FOculusXRFaceVisemesState::ExpressionVisemeWeights. Requires %d available elements in the array."), visemeCount); - - ovrpFaceVisemesState OVRFaceVisemesState; - ovrpResult OVRFaceVisemesStateResult = FOculusXRHMDModule::GetPluginWrapper().GetFaceVisemesState(ovrpStep_Render, OVRP_CURRENT_FRAMEINDEX, &OVRFaceVisemesState); - - if (!OVRP_SUCCESS(OVRFaceVisemesStateResult)) - { - return false; - } - - outOculusXRFaceVisemesState.bIsValid = (OVRFaceVisemesState.IsValid == ovrpBool_True); - outOculusXRFaceVisemesState.Time = static_cast(OVRFaceVisemesState.Time); - - for (int i = 0; i < visemeCount; ++i) - { - outOculusXRFaceVisemesState.ExpressionVisemeWeights[i] = OVRFaceVisemesState.Visemes[i]; - } - - return true; -} - -bool FOculusXRMovementFunctionsOVR::IsFaceTrackingVisemesEnabled() -{ - // Prevent calling plugin functions if the plugin is not available - if (!FOculusXRHMDModule::Get().IsOVRPluginAvailable()) - { - return false; - } - - bool bResult = false; - - ovrpBool IsEnabled = ovrpBool_False; - ovrpResult TrackingEnabledResult = FOculusXRHMDModule::GetPluginWrapper().GetFaceTrackingVisemesEnabled(&IsEnabled); - - if (OVRP_SUCCESS(TrackingEnabledResult)) - { - bResult = (IsEnabled == ovrpBool_True); - } - - return bResult; -} - -bool FOculusXRMovementFunctionsOVR::IsFaceTrackingVisemesSupported() -{ - // Prevent calling plugin functions if the plugin is not available - if (!FOculusXRHMDModule::Get().IsOVRPluginAvailable()) - { - return false; - } - - bool bResult = false; - - ovrpBool IsSupported = ovrpBool_False; - ovrpResult TrackingSupportedResult = FOculusXRHMDModule::GetPluginWrapper().GetFaceTrackingVisemesSupported(&IsSupported); - - if (OVRP_SUCCESS(TrackingSupportedResult)) - { - bResult = (IsSupported == ovrpBool_True); - } - - return bResult; -} - -bool FOculusXRMovementFunctionsOVR::GetEyeGazesState(FOculusXREyeGazesState& outOculusXREyeGazesState, float WorldToMeters) -{ - // Prevent calling plugin functions if the plugin is not available - if (!FOculusXRHMDModule::Get().IsOVRPluginAvailable()) - { - return false; - } - - static_assert(ovrpEye_Count == (int)EOculusXREye::COUNT, "The size of the OVRPlugin Eye enum should be the same as the EOculusXREye enum."); - - checkf(outOculusXREyeGazesState.EyeGazes.Num() >= ovrpEye_Count, TEXT("Not enough eye gaze states in FOculusXREyeGazesState::EyeGazes. Requires %d available elements in the array."), ovrpEye_Count); - - ovrpEyeGazesState OVREyeGazesState; - ovrpResult OVREyeGazesStateResult = FOculusXRHMDModule::GetPluginWrapper().GetEyeGazesState(ovrpStep_Render, OVRP_CURRENT_FRAMEINDEX, &OVREyeGazesState); - ensureMsgf(OVREyeGazesStateResult != ovrpFailure_NotYetImplemented, TEXT("Eye tracking is not implemented on this platform.")); - - if (OVRP_SUCCESS(OVREyeGazesStateResult)) - { - outOculusXREyeGazesState.Time = static_cast(OVREyeGazesState.Time); - for (int i = 0; i < ovrpEye_Count; ++i) - { - const auto& EyeGazePose = OVREyeGazesState.EyeGazes[i].Pose; - outOculusXREyeGazesState.EyeGazes[i].Orientation = FRotator(OculusXRHMD::ToFQuat(EyeGazePose.Orientation)); - outOculusXREyeGazesState.EyeGazes[i].Position = OculusXRHMD::ToFVector(EyeGazePose.Position) * WorldToMeters; - outOculusXREyeGazesState.EyeGazes[i].bIsValid = (OVREyeGazesState.EyeGazes[i].IsValid == ovrpBool_True); - outOculusXREyeGazesState.EyeGazes[i].Confidence = OVREyeGazesState.EyeGazes[i].Confidence; - } - - return true; - } - - return false; -} - -bool FOculusXRMovementFunctionsOVR::IsEyeTrackingEnabled() -{ - // Prevent calling plugin functions if the plugin is not available - if (!FOculusXRHMDModule::Get().IsOVRPluginAvailable()) - { - return false; - } - - bool bResult = false; - - ovrpBool IsEnabled = ovrpBool_False; - ovrpResult TrackingEnabledResult = FOculusXRHMDModule::GetPluginWrapper().GetEyeTrackingEnabled(&IsEnabled); - - if (OVRP_SUCCESS(TrackingEnabledResult)) - { - bResult = (IsEnabled == ovrpBool_True); - } - - return bResult; -} - -bool FOculusXRMovementFunctionsOVR::IsEyeTrackingSupported() -{ - // Prevent calling plugin functions if the plugin is not available - if (!FOculusXRHMDModule::Get().IsOVRPluginAvailable()) - { - return false; - } - - bool bResult = false; - - ovrpBool IsSupported = ovrpBool_False; - ovrpResult TrackingSupportedResult = FOculusXRHMDModule::GetPluginWrapper().GetEyeTrackingSupported(&IsSupported); - - if (OVRP_SUCCESS(TrackingSupportedResult)) - { - bResult = (IsSupported == ovrpBool_True); - } - - return bResult; -} - -bool FOculusXRMovementFunctionsOVR::StartEyeTracking() -{ - // Prevent calling plugin functions if the plugin is not available - if (!FOculusXRHMDModule::Get().IsOVRPluginAvailable()) - { - return false; - } - - return OVRP_SUCCESS(FOculusXRHMDModule::GetPluginWrapper().StartEyeTracking()); -} - -bool FOculusXRMovementFunctionsOVR::StopEyeTracking() -{ - // Prevent calling plugin functions if the plugin is not available - if (!FOculusXRHMDModule::Get().IsOVRPluginAvailable()) - { - return false; - } - - return OVRP_SUCCESS(FOculusXRHMDModule::GetPluginWrapper().StopEyeTracking()); -} - -bool FOculusXRMovementFunctionsOVR::IsFullBodyTrackingEnabled() -{ - // Prevent calling plugin functions if the plugin is not available - if (!FOculusXRHMDModule::Get().IsOVRPluginAvailable()) - { - return false; - } - - bool bResult = false; - - ovrpBool IsEnabled = ovrpBool_False; - ovrpResult TrackingEnabledResult = FOculusXRHMDModule::GetPluginWrapper().GetFullBodyTrackingEnabled(&IsEnabled); - - if (OVRP_SUCCESS(TrackingEnabledResult)) - { - bResult = (IsEnabled == ovrpBool_True); - } - - return bResult; -} - -#undef LOCTEXT_NAMESPACE diff --git a/Plugins/MetaXR/Source/OculusXRMovement/Private/OculusXRMovementFunctionsOVR.h b/Plugins/MetaXR/Source/OculusXRMovement/Private/OculusXRMovementFunctionsOVR.h deleted file mode 100644 index 4cc2876..0000000 --- a/Plugins/MetaXR/Source/OculusXRMovement/Private/OculusXRMovementFunctionsOVR.h +++ /dev/null @@ -1,39 +0,0 @@ -// Copyright (c) Meta Platforms, Inc. and affiliates. - -#pragma once - -#include "OculusXRMovementFunctions.h" - -struct FOculusXRMovementFunctionsOVR : public IOculusXRMovementFunctions -{ -public: - virtual bool GetBodyState(FOculusXRBodyState& outOculusXRBodyState, float WorldToMeters) override; - virtual bool IsBodyTrackingEnabled() override; - virtual bool IsBodyTrackingSupported() override; - virtual bool StartBodyTracking() override; - virtual bool StopBodyTracking() override; - virtual bool StartBodyTrackingByJointSet(EOculusXRBodyJointSet jointSet) override; - virtual bool RequestBodyTrackingFidelity(EOculusXRBodyTrackingFidelity fidelity) override; - virtual bool ResetBodyTrackingCalibration() override; - virtual bool SuggestBodyTrackingCalibrationOverride(float height) override; - virtual bool GetBodySkeleton(FOculusXRBodySkeleton& outOculusXRBodyState, float WorldToMeters) override; - - virtual bool GetFaceState(FOculusXRFaceState& outOculusXRFaceState) override; - virtual bool IsFaceTrackingEnabled() override; - virtual bool IsFaceTrackingSupported() override; - virtual bool StartFaceTracking() override; - virtual bool StopFaceTracking() override; - - virtual bool SetFaceTrackingVisemesEnabled(bool enabled) override; - virtual bool GetFaceVisemesState(FOculusXRFaceVisemesState& outOculusXRFaceVisemesState) override; - virtual bool IsFaceTrackingVisemesEnabled() override; - virtual bool IsFaceTrackingVisemesSupported() override; - - virtual bool GetEyeGazesState(FOculusXREyeGazesState& outOculusXREyeGazesState, float WorldToMeters) override; - virtual bool IsEyeTrackingEnabled() override; - virtual bool IsEyeTrackingSupported() override; - virtual bool StartEyeTracking() override; - virtual bool StopEyeTracking() override; - - virtual bool IsFullBodyTrackingEnabled() override; -}; diff --git a/Plugins/MetaXR/Source/OculusXRMovement/Private/OculusXRMovementFunctionsOpenXR.cpp b/Plugins/MetaXR/Source/OculusXRMovement/Private/OculusXRMovementFunctionsOpenXR.cpp deleted file mode 100644 index 1ec05de..0000000 --- a/Plugins/MetaXR/Source/OculusXRMovement/Private/OculusXRMovementFunctionsOpenXR.cpp +++ /dev/null @@ -1,156 +0,0 @@ -// Copyright (c) Meta Platforms, Inc. and affiliates. - -#include "OculusXRMovementFunctionsOpenXR.h" -#include "OculusXRMovementLog.h" -#include "OculusXRMovementModule.h" -#include "OculusXRHMDPrivate.h" -#include "OculusXRHMD.h" -#include "OpenXRHMD.h" -#include "Logging/MessageLog.h" -#include "OpenXR/OculusXROpenXRUtilities.h" -#include "openxr/OculusXRBodyTrackingXR.h" - -#define LOCTEXT_NAMESPACE "OculusXRMovement" - -bool FOculusXRMovementFunctionsOpenXR::GetBodyState(FOculusXRBodyState& outState, float WorldToMeters) -{ - auto result = FOculusXRMovementModule::Get().GetXrBodyTracker()->GetCachedBodyState(outState); - return XR_SUCCEEDED(result); -} - -bool FOculusXRMovementFunctionsOpenXR::GetBodySkeleton(FOculusXRBodySkeleton& outSkeleton, float WorldToMeters) -{ - auto result = FOculusXRMovementModule::Get().GetXrBodyTracker()->GetBodySkeleton(outSkeleton); - return XR_SUCCEEDED(result); -} - -bool FOculusXRMovementFunctionsOpenXR::IsBodyTrackingEnabled() -{ - return FOculusXRMovementModule::Get().GetXrBodyTracker()->IsBodyTrackingEnabled(); -} - -bool FOculusXRMovementFunctionsOpenXR::IsBodyTrackingSupported() -{ - return FOculusXRMovementModule::Get().GetXrBodyTracker()->IsBodyTrackingSupported(); -} - -bool FOculusXRMovementFunctionsOpenXR::IsFullBodyTrackingEnabled() -{ - return FOculusXRMovementModule::Get().GetXrBodyTracker()->IsFullBodyTrackingEnabled(); -} - -bool FOculusXRMovementFunctionsOpenXR::StartBodyTracking() -{ - auto result = FOculusXRMovementModule::Get().GetXrBodyTracker()->StartBodyTracking(); - return XR_SUCCEEDED(result); -} - -bool FOculusXRMovementFunctionsOpenXR::StartBodyTrackingByJointSet(EOculusXRBodyJointSet jointSet) -{ - auto result = FOculusXRMovementModule::Get().GetXrBodyTracker()->StartBodyTrackingByJointSet(jointSet); - return XR_SUCCEEDED(result); -} - -bool FOculusXRMovementFunctionsOpenXR::StopBodyTracking() -{ - auto result = FOculusXRMovementModule::Get().GetXrBodyTracker()->StopBodyTracking(); - return XR_SUCCEEDED(result); -} - -bool FOculusXRMovementFunctionsOpenXR::RequestBodyTrackingFidelity(EOculusXRBodyTrackingFidelity fidelity) -{ - auto result = FOculusXRMovementModule::Get().GetXrBodyTracker()->RequestBodyTrackingFidelity(fidelity); - return XR_SUCCEEDED(result); -} - -bool FOculusXRMovementFunctionsOpenXR::ResetBodyTrackingCalibration() -{ - auto result = FOculusXRMovementModule::Get().GetXrBodyTracker()->ResetBodyTrackingFidelity(); - return XR_SUCCEEDED(result); -} - -bool FOculusXRMovementFunctionsOpenXR::SuggestBodyTrackingCalibrationOverride(float height) -{ - auto result = FOculusXRMovementModule::Get().GetXrBodyTracker()->SuggestBodyTrackingCalibrationOverride(height); - return XR_SUCCEEDED(result); -} - -bool FOculusXRMovementFunctionsOpenXR::GetFaceState(FOculusXRFaceState& outOculusXRFaceState) -{ - auto result = FOculusXRMovementModule::Get().GetXrFaceTracker()->GetCachedFaceState(outOculusXRFaceState); - return XR_SUCCEEDED(result); -} - -bool FOculusXRMovementFunctionsOpenXR::IsFaceTrackingEnabled() -{ - return FOculusXRMovementModule::Get().GetXrFaceTracker()->IsFaceTrackingEnabled(); -} - -bool FOculusXRMovementFunctionsOpenXR::IsFaceTrackingSupported() -{ - return FOculusXRMovementModule::Get().GetXrFaceTracker()->IsFaceTrackingSupported(); -} - -bool FOculusXRMovementFunctionsOpenXR::StartFaceTracking() -{ - auto result = FOculusXRMovementModule::Get().GetXrFaceTracker()->StartFaceTracking(); - return XR_SUCCEEDED(result); -} - -bool FOculusXRMovementFunctionsOpenXR::StopFaceTracking() -{ - auto result = FOculusXRMovementModule::Get().GetXrFaceTracker()->StopFaceTracking(); - return XR_SUCCEEDED(result); -} - -bool FOculusXRMovementFunctionsOpenXR::SetFaceTrackingVisemesEnabled(bool enabled) -{ - auto result = FOculusXRMovementModule::Get().GetXrFaceTracker()->SetVisemesEnabled(enabled); - return XR_SUCCEEDED(result); -} - -bool FOculusXRMovementFunctionsOpenXR::GetFaceVisemesState(FOculusXRFaceVisemesState& outOculusXRFaceVisemesState) -{ - auto result = FOculusXRMovementModule::Get().GetXrFaceTracker()->GetCachedVisemeState(outOculusXRFaceVisemesState); - return XR_SUCCEEDED(result); -} - -bool FOculusXRMovementFunctionsOpenXR::IsFaceTrackingVisemesEnabled() -{ - return FOculusXRMovementModule::Get().GetXrFaceTracker()->IsFaceTrackingVisemesEnabled(); -} - -bool FOculusXRMovementFunctionsOpenXR::IsFaceTrackingVisemesSupported() -{ - return FOculusXRMovementModule::Get().GetXrFaceTracker()->IsFaceTrackingVisemesSupported(); -} - -bool FOculusXRMovementFunctionsOpenXR::GetEyeGazesState(FOculusXREyeGazesState& outOculusXREyeGazesState, float WorldToMeters) -{ - auto result = FOculusXRMovementModule::Get().GetXrEyeTracker()->GetCachedEyeState(outOculusXREyeGazesState); - return XR_SUCCEEDED(result); -} - -bool FOculusXRMovementFunctionsOpenXR::IsEyeTrackingEnabled() -{ - return FOculusXRMovementModule::Get().GetXrEyeTracker()->IsEyeTrackingEnabled(); -} - -bool FOculusXRMovementFunctionsOpenXR::IsEyeTrackingSupported() -{ - return FOculusXRMovementModule::Get().GetXrEyeTracker()->IsEyeTrackingSupported(); -} - -bool FOculusXRMovementFunctionsOpenXR::StartEyeTracking() -{ - auto result = FOculusXRMovementModule::Get().GetXrEyeTracker()->StartEyeTracking(); - return XR_SUCCEEDED(result); -} - -bool FOculusXRMovementFunctionsOpenXR::StopEyeTracking() -{ - auto result = FOculusXRMovementModule::Get().GetXrEyeTracker()->StopEyeTracking(); - return XR_SUCCEEDED(result); -} - -#undef LOCTEXT_NAMESPACE diff --git a/Plugins/MetaXR/Source/OculusXRMovement/Private/OculusXRMovementFunctionsOpenXR.h b/Plugins/MetaXR/Source/OculusXRMovement/Private/OculusXRMovementFunctionsOpenXR.h deleted file mode 100644 index 8b0eb02..0000000 --- a/Plugins/MetaXR/Source/OculusXRMovement/Private/OculusXRMovementFunctionsOpenXR.h +++ /dev/null @@ -1,42 +0,0 @@ -// Copyright (c) Meta Platforms, Inc. and affiliates. - -#pragma once - -#include "OculusXRMovementFunctions.h" - -struct FOculusXRMovementFunctionsOpenXR : public IOculusXRMovementFunctions -{ -public: - virtual bool GetBodyState(FOculusXRBodyState& outState, float WorldToMeters) override; - virtual bool GetBodySkeleton(FOculusXRBodySkeleton& outSkeleton, float WorldToMeters) override; - - virtual bool IsBodyTrackingSupported() override; - virtual bool IsBodyTrackingEnabled() override; - // virtual bool IsFullBodyTrackingSupported() override; - virtual bool IsFullBodyTrackingEnabled() override; - - virtual bool StartBodyTracking() override; - virtual bool StartBodyTrackingByJointSet(EOculusXRBodyJointSet jointSet) override; - virtual bool StopBodyTracking() override; - - virtual bool RequestBodyTrackingFidelity(EOculusXRBodyTrackingFidelity fidelity) override; - virtual bool ResetBodyTrackingCalibration() override; - virtual bool SuggestBodyTrackingCalibrationOverride(float height) override; - - virtual bool GetFaceState(FOculusXRFaceState& outOculusXRFaceState) override; - virtual bool IsFaceTrackingEnabled() override; - virtual bool IsFaceTrackingSupported() override; - virtual bool StartFaceTracking() override; - virtual bool StopFaceTracking() override; - - virtual bool SetFaceTrackingVisemesEnabled(bool enabled) override; - virtual bool GetFaceVisemesState(FOculusXRFaceVisemesState& outOculusXRFaceVisemesState) override; - virtual bool IsFaceTrackingVisemesEnabled() override; - virtual bool IsFaceTrackingVisemesSupported() override; - - virtual bool GetEyeGazesState(FOculusXREyeGazesState& outOculusXREyeGazesState, float WorldToMeters) override; - virtual bool IsEyeTrackingEnabled() override; - virtual bool IsEyeTrackingSupported() override; - virtual bool StartEyeTracking() override; - virtual bool StopEyeTracking() override; -}; diff --git a/Plugins/MetaXR/Source/OculusXRMovement/Private/OculusXRMovementLiveLink.cpp b/Plugins/MetaXR/Source/OculusXRMovement/Private/OculusXRMovementLiveLink.cpp deleted file mode 100644 index 54fd90c..0000000 --- a/Plugins/MetaXR/Source/OculusXRMovement/Private/OculusXRMovementLiveLink.cpp +++ /dev/null @@ -1,422 +0,0 @@ -// Copyright (c) Meta Platforms, Inc. and affiliates. - -#include "OculusXRMovementLiveLink.h" - -#include "IHeadMountedDisplayModule.h" -#include "OculusXRHMDModule.h" -#include "OculusXRMovementLog.h" -#include "OculusXRMovement.h" -#include "OculusXRMovementTypes.h" -#include "OculusXRTelemetryMovementEvents.h" - -#include "Roles/LiveLinkAnimationTypes.h" -#include "ILiveLinkClient.h" - -#define LOCTEXT_NAMESPACE "MetaOculusXRMovement" - -namespace -{ - constexpr int32 NoParent = -1; -} - -namespace MetaXRMovement -{ - template <> - void FEyeSubject::InitializeRoleStaticData(FLiveLinkSkeletonStaticData& StaticData) const - { - constexpr auto FieldsCount = static_cast(EOculusXREye::COUNT); - StaticData.BoneNames.Reserve(FieldsCount); - for (uint8 XRBone = 0; XRBone < FieldsCount; ++XRBone) - { - StaticData.BoneNames.Add(UEnum::GetValueAsName(static_cast(XRBone))); - StaticData.BoneParents.Add(NoParent); - } - } - - template <> - void FBodySubject::InitializeRoleStaticData(FLiveLinkSkeletonStaticData& StaticData) const - { - constexpr auto FieldsCount = static_cast(EOculusXRBoneID::COUNT); - StaticData.BoneNames.Reserve(FieldsCount); - for (uint8 XRBone = 0; XRBone < FieldsCount; ++XRBone) - { - StaticData.BoneNames.Add(UEnum::GetValueAsName(static_cast(XRBone))); - StaticData.BoneParents.Add(NoParent); - } - } - - template <> - void FFaceSubject::InitializeRoleStaticData(FLiveLinkBaseStaticData& StaticData) const - { - constexpr auto FieldsCount = static_cast(EOculusXRFaceExpression::COUNT); - StaticData.PropertyNames.Reserve(FieldsCount); - for (uint8 XRProperty = 0; XRProperty < FieldsCount; ++XRProperty) - { - StaticData.PropertyNames.Add(UEnum::GetValueAsName(static_cast(XRProperty))); - } - } - - template <> - void FFaceVisemesSubject::InitializeRoleStaticData(FLiveLinkBaseStaticData& StaticData) const - { - constexpr auto FieldsCount = static_cast(EOculusXRFaceVisemesExpression::COUNT); - StaticData.PropertyNames.Reserve(FieldsCount); - for (uint8 XRProperty = 0; XRProperty < FieldsCount; ++XRProperty) - { - StaticData.PropertyNames.Add(UEnum::GetValueAsName(static_cast(XRProperty))); - } - } - - template - FLiveLinkStaticDataStruct TSubject::StaticData() const - { - FLiveLinkStaticDataStruct StaticDataStruct(RoleTypeStaticData::StaticStruct()); - RoleTypeStaticData& RoleStaticData(*StaticDataStruct.Cast()); - InitializeRoleStaticData(RoleStaticData); - return StaticDataStruct; - } - template - FLiveLinkFrameDataStruct TSubject::FrameData() - { - FLiveLinkFrameDataStruct FrameDataStruct(RoleTypeFrameData::StaticStruct()); - RoleTypeFrameData& FrameData(*FrameDataStruct.Cast()); - UpdateFrame(FrameData); - return FrameDataStruct; - } - - template <> - FEyeSubject::TSubject() - : Name(TEXT("Eye")) - , bLastFrameIsValid(false) - , bStarted(false) - { - } - template <> - FFaceSubject::TSubject() - : Name(TEXT("Face")) - , bLastFrameIsValid(false) - , bStarted(false) - { - } - - template <> - FFaceVisemesSubject::TSubject() - : Name(TEXT("FaceVisemes")) - , bLastFrameIsValid(false) - , bStarted(false) - { - } - - template <> - FBodySubject::TSubject() - : Name(TEXT("Body")) - , bLastFrameIsValid(false) - , bStarted(false) - { - } - template <> - bool FEyeSubject::Start() - { - if (!bStarted) - { - bStarted = OculusXRMovement::StartEyeTracking(); - } - return bStarted; - } - template <> - bool FEyeSubject::Stop() - { - if (bStarted) - { - bStarted = !OculusXRMovement::StopEyeTracking(); - } - return !bStarted; - } - template <> - bool FFaceSubject::Start() - { - if (!bStarted) - { - bStarted = OculusXRMovement::StartFaceTracking(); - } - return bStarted; - } - template <> - bool FFaceSubject::Stop() - { - if (bStarted) - { - bStarted = !OculusXRMovement::StopFaceTracking(); - } - return !bStarted; - } - - template <> - bool FFaceVisemesSubject::Start() - { - if (!bStarted) - { - // TODO calculate consumers - bStarted = OculusXRMovement::StartFaceTracking(); - } - return bStarted; - } - template <> - bool FFaceVisemesSubject::Stop() - { - if (bStarted) - { - bStarted = !OculusXRMovement::StopFaceTracking(); - } - return !bStarted; - } - - template <> - bool FBodySubject::Start() - { - if (!bStarted) - { - bStarted = OculusXRMovement::StartBodyTracking(); - } - return bStarted; - } - template <> - bool FBodySubject::Stop() - { - if (bStarted) - { - bStarted = !OculusXRMovement::StopBodyTracking(); - } - return !bStarted; - } - template <> - bool FEyeSubject::IsSupported() - { - return OculusXRMovement::IsEyeTrackingSupported(); - } - template <> - bool FFaceSubject::IsSupported() - { - return OculusXRMovement::IsFaceTrackingSupported(); - } - - template <> - bool FFaceVisemesSubject::IsSupported() - { - return OculusXRMovement::IsFaceTrackingSupported(); - } - - template <> - bool FBodySubject::IsSupported() - { - return OculusXRMovement::IsBodyTrackingSupported(); - } - template <> - void FEyeSubject::UpdateFrame(FLiveLinkAnimationFrameData& FrameData) - { - bLastFrameIsValid = OculusXRMovement::GetEyeGazesState(LastState, 1.f) - && (LastState.EyeGazes[0].bIsValid || LastState.EyeGazes[1].bIsValid); - if (bLastFrameIsValid) - { - constexpr auto FieldsCount = static_cast(EOculusXREye::COUNT); - FrameData.Transforms.Reserve(FieldsCount); - for (uint8 i = 0u; i < FieldsCount; ++i) - { - const auto& EyeGaze = LastState.EyeGazes[i]; - FrameData.Transforms.Emplace(EyeGaze.Orientation, EyeGaze.Position); - } - FrameData.WorldTime = FPlatformTime::Seconds(); - } - } - template <> - void FFaceSubject::UpdateFrame(FLiveLinkBaseFrameData& FrameData) - { - bLastFrameIsValid = OculusXRMovement::GetFaceState(LastState) && (LastState.bIsValid); - if (bLastFrameIsValid) - { - constexpr auto FieldsCount = static_cast(EOculusXRFaceExpression::COUNT); - FrameData.PropertyValues.Reserve(FieldsCount); - for (uint8 i = 0u; i < FieldsCount; ++i) - { - FrameData.PropertyValues.Emplace(LastState.ExpressionWeights[i]); - } - FrameData.WorldTime = FPlatformTime::Seconds(); - } - } - - template <> - void FFaceVisemesSubject::UpdateFrame(FLiveLinkBaseFrameData& FrameData) - { - bLastFrameIsValid = OculusXRMovement::GetFaceVisemesState(LastState) && (LastState.bIsValid); - if (bLastFrameIsValid) - { - constexpr auto FieldsCount = static_cast(EOculusXRFaceVisemesExpression::COUNT); - FrameData.PropertyValues.Reserve(FieldsCount); - for (uint8 i = 0u; i < FieldsCount; ++i) - { - FrameData.PropertyValues.Emplace(LastState.ExpressionVisemeWeights[i]); - } - FrameData.WorldTime = FPlatformTime::Seconds(); - } - } - - template <> - void FBodySubject::UpdateFrame(FLiveLinkAnimationFrameData& FrameData) - { - bLastFrameIsValid = OculusXRMovement::GetBodyState(LastState, 1.f) && (LastState.IsActive) && (LastState.SkeletonChangedCount > 0); - if (bLastFrameIsValid) - { - constexpr auto FieldsCount = static_cast(EOculusXRBoneID::COUNT); - FrameData.Transforms.Reserve(FieldsCount); - for (uint8 i = 0u; i < FieldsCount; ++i) - { - const auto& Joint = LastState.Joints[i]; - FrameData.Transforms.Emplace(Joint.Orientation, Joint.Position); - } - FrameData.WorldTime = FPlatformTime::Seconds(); - } - } - - LiveLinkSource::LiveLinkSource() - : bAnySupported(FEyeSubject::IsSupported() || FFaceSubject::IsSupported() || FFaceVisemesSubject::IsSupported() || FBodySubject::IsSupported()) - { - OculusXRTelemetry::TScopedMarker(); - } - - void LiveLinkSource::ReceiveClient(ILiveLinkClient* InClient, FGuid InSourceGuid) - { - Client = InClient; - SourceGuid = InSourceGuid; - - InitializeMovementSubjects(); - UpdateMovementSubjects(); - } - - bool LiveLinkSource::IsSourceStillValid() const - { - return Client != nullptr; - } - - bool LiveLinkSource::RequestSourceShutdown() - { - Client = nullptr; - SourceGuid.Invalidate(); - - if (!(Body.Stop() && Face.Stop() - && FaceVisemes.Stop() - && Eye.Stop())) - { - UE_LOG(LogOculusXRMovement, Error, TEXT("At least one of the trackers cannot stop.")); - } - return true; - } - - FText LiveLinkSource::GetSourceType() const - { - return LOCTEXT("MetaOculusXRMovementLiveLinkSourceType", "MetaXR MovementSDK"); - } - - FText LiveLinkSource::GetSourceMachineName() const - { - if (IHeadMountedDisplayModule::IsAvailable()) - { - const FString DeviceName = IHeadMountedDisplayModule::Get().GetDeviceSystemName(); - return FText::FromString(DeviceName); - } - return LOCTEXT("MetaOculusXRMovementLiveLinkMachineName", "MetaXR Device"); - } - - FText LiveLinkSource::GetSourceStatus() const - { - if (bAnySupported) - { - return LOCTEXT("MetaOculusXRMovementLiveLinkStatusSupported", "Active"); - } - return LOCTEXT("MetaOculusXRMovementLiveLinkStatusNotSupported", "Not Supported"); - } - - void LiveLinkSource::Tick(float DeltaTime) - { - UpdateMovementSubjects(); - } - - template - LiveLinkSource::ESubjectInitializationResult LiveLinkSource::InitializeMovementSubject(TOptional& Key, SubjectT& Subject) - { - ESubjectInitializationResult FinalState; - if (Key) - { - if (Key->Source.IsValid()) - { // If the key was already in use. Remove it. - Client->RemoveSubject_AnyThread(*Key); - } - Key.Reset(); - } - if (Subject.IsSupported()) - { - Key = FLiveLinkSubjectKey(SourceGuid, Subject.Name); - FinalState = ESubjectInitializationResult::Started; - if (!Subject.Start()) - { - UE_LOG(LogOculusXRMovement, Error, TEXT("Tracker for LiveLink subject %s cannot start."), *Subject.Name.ToString()); - FinalState = ESubjectInitializationResult::StartFailed; - } - using Role = typename std::remove_reference_t::Role; - Client->PushSubjectStaticData_AnyThread(*Key, Role::StaticClass(), Subject.StaticData()); - } - else - { - UE_LOG(LogOculusXRMovement, Log, TEXT("LiveLink subject %s is not supported."), *Subject.Name.ToString()); - FinalState = ESubjectInitializationResult::NotSupported; - } - return FinalState; - } - - void LiveLinkSource::InitializeMovementSubjects() - { - check(IsInGameThread()); - const OculusXRTelemetry::TScopedMarker LiveLinkInit; - - const auto EyeInit = InitializeMovementSubject(KeyEye, Eye); - const auto FaceInit = InitializeMovementSubject(KeyFace, Face); - const auto FaceVisemesInit = InitializeMovementSubject(KeyFaceVisemes, FaceVisemes); - const auto BodyInit = InitializeMovementSubject(KeyBody, Body); - - LiveLinkInit.AddAnnotation(StringCast(*Eye.Name.ToString()).Get(), ResultToText[static_cast(EyeInit)]) - .AddAnnotation(StringCast(*Face.Name.ToString()).Get(), ResultToText[static_cast(FaceInit)]) - .AddAnnotation(StringCast(*FaceVisemes.Name.ToString()).Get(), ResultToText[static_cast(FaceVisemesInit)]) - .AddAnnotation(StringCast(*Body.Name.ToString()).Get(), ResultToText[static_cast(BodyInit)]); - } - - template - void LiveLinkSource::UpdateMovementSubject(const TOptional& Key, SubjectT& Subject) - { - if (Key) - { - const bool bPreviousFrameValid = Subject.IsLastFrameValid(); - auto FrameData = Subject.FrameData(); - const bool bFrameValid = Subject.IsLastFrameValid(); - if (bPreviousFrameValid != bFrameValid) - { - UE_LOG(LogOculusXRMovement, Log, TEXT("LiveLink subject %s became %s."), *Subject.Name.ToString(), bFrameValid ? TEXT("valid") : TEXT("invalid")); - } - if (bFrameValid) - { - Client->PushSubjectFrameData_AnyThread(*Key, MoveTemp(FrameData)); - } - } - } - - void LiveLinkSource::UpdateMovementSubjects() - { - check(IsInGameThread()); - if (IsSourceStillValid()) - { - UpdateMovementSubject(KeyEye, Eye); - UpdateMovementSubject(KeyFace, Face); - UpdateMovementSubject(KeyFaceVisemes, FaceVisemes); - UpdateMovementSubject(KeyBody, Body); - } - } -} // namespace MetaXRMovement -#undef LOCTEXT_NAMESPACE diff --git a/Plugins/MetaXR/Source/OculusXRMovement/Private/OculusXRMovementLiveLink.h b/Plugins/MetaXR/Source/OculusXRMovement/Private/OculusXRMovementLiveLink.h deleted file mode 100644 index ec30de9..0000000 --- a/Plugins/MetaXR/Source/OculusXRMovement/Private/OculusXRMovementLiveLink.h +++ /dev/null @@ -1,115 +0,0 @@ -// Copyright (c) Meta Platforms, Inc. and affiliates. - -#pragma once - -#include "CoreMinimal.h" -#include "ILiveLinkSource.h" -#include "LiveLinkTypes.h" -#include "Roles/LiveLinkAnimationRole.h" -#include "Roles/LiveLinkAnimationTypes.h" -#include "Roles/LiveLinkBasicRole.h" -#include "Tickable.h" - -#include "OculusXRMovementTypes.h" - -#define LOCTEXT_NAMESPACE "MetaOculusXRMovement" - -namespace MetaXRMovement -{ - - template - class TSubject - { - public: - explicit TSubject(); - using Role = RoleT; - - const FLiveLinkSubjectName Name; - - FLiveLinkStaticDataStruct StaticData() const; - FLiveLinkFrameDataStruct FrameData(); - bool IsLastFrameValid() const { return bLastFrameIsValid; }; - bool Start(); - bool Stop(); - static bool IsSupported(); - - private: - bool bLastFrameIsValid; - bool bStarted; - MetaXRState LastState; - - void InitializeRoleStaticData(RoleTypeStaticData& StaticData) const; - void UpdateFrame(RoleTypeFrameData& FrameData); - }; - - using FEyeSubject = TSubject; - using FFaceSubject = TSubject; - using FBodySubject = TSubject; - using FFaceVisemesSubject = TSubject; - - class LiveLinkSource : public ILiveLinkSource, public FTickableGameObject - { - public: - LiveLinkSource(); - virtual ~LiveLinkSource() override = default; - - // ILiveLinkSource implementation - - virtual void ReceiveClient(ILiveLinkClient* InClient, FGuid InSourceGuid) override; - virtual bool IsSourceStillValid() const override; - virtual bool RequestSourceShutdown() override; - virtual FText GetSourceType() const override; - virtual FText GetSourceMachineName() const override; - virtual FText GetSourceStatus() const override; - - // FTickableGameObject implementation - - virtual void Tick(float DeltaTime) override; - virtual bool IsTickable() const override { return bAnySupported && Client; }; - virtual TStatId GetStatId() const override - { - RETURN_QUICK_DECLARE_CYCLE_STAT(FOculusXRMovementLiveLink, STATGROUP_Tickables); - } - virtual bool IsTickableInEditor() const override { return true; } - virtual bool IsTickableWhenPaused() const override { return true; } - - private: - enum class ESubjectInitializationResult - { - Started = 0, - StartFailed = 1, - NotSupported = 2 - }; - - static constexpr const char* ResultToText[]{ "started", "start_failed", "not_supported" }; - - template - ESubjectInitializationResult InitializeMovementSubject(TOptional& Key, SubjectT& Subject); - void InitializeMovementSubjects(); - template - void UpdateMovementSubject(const TOptional& Key, SubjectT& Subject); - void UpdateMovementSubjects(); - - // LiveLink Data - // The local client to push data updates to - ILiveLinkClient* Client{ nullptr }; - // Our identifier in LiveLink - FGuid SourceGuid; - - // Whenever any of the trackers is supported. - const bool bAnySupported; - - // This subject's keys. Initialized only if a tracker is supported. - TOptional KeyEye; - TOptional KeyFace; - TOptional KeyFaceVisemes; - TOptional KeyBody; - - // Subjects - FEyeSubject Eye; - FFaceSubject Face; - FBodySubject Body; - FFaceVisemesSubject FaceVisemes; - }; -} // namespace MetaXRMovement -#undef LOCTEXT_NAMESPACE diff --git a/Plugins/MetaXR/Source/OculusXRMovement/Private/OculusXRMovementLog.h b/Plugins/MetaXR/Source/OculusXRMovement/Private/OculusXRMovementLog.h deleted file mode 100644 index c507ed1..0000000 --- a/Plugins/MetaXR/Source/OculusXRMovement/Private/OculusXRMovementLog.h +++ /dev/null @@ -1,7 +0,0 @@ -// Copyright (c) Meta Platforms, Inc. and affiliates. - -#pragma once - -#include "CoreMinimal.h" - -DECLARE_LOG_CATEGORY_EXTERN(LogOculusXRMovement, Log, All); diff --git a/Plugins/MetaXR/Source/OculusXRMovement/Private/OculusXRMovementModule.cpp b/Plugins/MetaXR/Source/OculusXRMovement/Private/OculusXRMovementModule.cpp deleted file mode 100644 index 8e50b45..0000000 --- a/Plugins/MetaXR/Source/OculusXRMovement/Private/OculusXRMovementModule.cpp +++ /dev/null @@ -1,64 +0,0 @@ -// Copyright (c) Meta Platforms, Inc. and affiliates. - -#include "OculusXRMovementModule.h" -#include "OculusXRHMDModule.h" -#include "OculusXRMovementLog.h" - -#define LOCTEXT_NAMESPACE "OculusXRMovement" - -DEFINE_LOG_CATEGORY(LogOculusXRMovement); - -//------------------------------------------------------------------------------------------------- -// FOculusXRMovementModule -//------------------------------------------------------------------------------------------------- - -FOculusXRMovementModule::FOculusXRMovementModule() -{ -} - -void FOculusXRMovementModule::StartupModule() -{ - BodyTrackingXR = MakeShareable(new XRMovement::FBodyTrackingXR()); - BodyTrackingXR->RegisterAsOpenXRExtension(); - - EyeTrackingXR = MakeShareable(new XRMovement::FEyeTrackingXR()); - EyeTrackingXR->RegisterAsOpenXRExtension(); - - FaceTrackingXR = MakeShareable(new XRMovement::FFaceTrackingXR()); - FaceTrackingXR->RegisterAsOpenXRExtension(); -} - -void FOculusXRMovementModule::ShutdownModule() -{ -} - -TSharedPtr FOculusXRMovementModule::GetLiveLinkSource() -{ - if (!MovementSource.IsValid()) - { - AddLiveLinkSource(); - } - return MovementSource; -} - -bool FOculusXRMovementModule::IsLiveLinkSourceValid() const -{ - return MovementSource.IsValid(); -} - -void FOculusXRMovementModule::AddLiveLinkSource() -{ - if (!MovementSource.IsValid()) - { - MovementSource = MakeShared(); - } -} - -void FOculusXRMovementModule::RemoveLiveLinkSource() -{ - MovementSource.Reset(); -} - -IMPLEMENT_MODULE(FOculusXRMovementModule, OculusXRMovement) - -#undef LOCTEXT_NAMESPACE diff --git a/Plugins/MetaXR/Source/OculusXRMovement/Private/OculusXRMovementModule.h b/Plugins/MetaXR/Source/OculusXRMovement/Private/OculusXRMovementModule.h deleted file mode 100644 index a0f084c..0000000 --- a/Plugins/MetaXR/Source/OculusXRMovement/Private/OculusXRMovementModule.h +++ /dev/null @@ -1,54 +0,0 @@ -// Copyright (c) Meta Platforms, Inc. and affiliates. - -#pragma once -#include "openxr/OculusXRBodyTrackingXR.h" -#include "openxr/OculusXREyeTrackingXR.h" -#include "openxr/OculusXRFaceTrackingXR.h" - -#include "OculusXRMovement.h" -#include "OculusXRMovementLiveLink.h" -#include "IOculusXRMovementModule.h" -#include "ILiveLinkSource.h" - -#define LOCTEXT_NAMESPACE "OculusXRMovement" - -//------------------------------------------------------------------------------------------------- -// FOculusXRMovementModule -//------------------------------------------------------------------------------------------------- - -typedef TSharedPtr FBodyTrackingXRPtr; -typedef TSharedPtr FEyeTrackingXRPtr; -typedef TSharedPtr FFaceTrackingXRPtr; - -class FOculusXRMovementModule : public IOculusXRMovementModule -{ -public: - FOculusXRMovementModule(); - - static inline FOculusXRMovementModule& Get() - { - return FModuleManager::LoadModuleChecked("OculusXRMovement"); - } - - virtual void StartupModule() override; - virtual void ShutdownModule() override; - - /* Live link */ - virtual TSharedPtr GetLiveLinkSource() override; - virtual bool IsLiveLinkSourceValid() const override; - virtual void AddLiveLinkSource() override; - virtual void RemoveLiveLinkSource() override; - - FBodyTrackingXRPtr GetXrBodyTracker() { return BodyTrackingXR; } - FEyeTrackingXRPtr GetXrEyeTracker() { return EyeTrackingXR; } - FFaceTrackingXRPtr GetXrFaceTracker() { return FaceTrackingXR; } - -private: - FBodyTrackingXRPtr BodyTrackingXR; - FEyeTrackingXRPtr EyeTrackingXR; - FFaceTrackingXRPtr FaceTrackingXR; - - TSharedPtr MovementSource{ nullptr }; -}; - -#undef LOCTEXT_NAMESPACE diff --git a/Plugins/MetaXR/Source/OculusXRMovement/Private/OculusXRMovementTypes.cpp b/Plugins/MetaXR/Source/OculusXRMovement/Private/OculusXRMovementTypes.cpp deleted file mode 100644 index 3c7c541..0000000 --- a/Plugins/MetaXR/Source/OculusXRMovement/Private/OculusXRMovementTypes.cpp +++ /dev/null @@ -1,80 +0,0 @@ -// Copyright (c) Meta Platforms, Inc. and affiliates. - -#include "OculusXRMovementTypes.h" -#include "OculusXRHMDPrivate.h" -#include "OculusXRHMD.h" - -FOculusXRBodyJoint::FOculusXRBodyJoint() - : LocationFlags(0) - , bIsValid(false) - , Orientation(FRotator::ZeroRotator) - , Position(FVector::ZeroVector) -{ -} - -FOculusXRBodyState::FOculusXRBodyState() - : IsActive(false) - , Confidence(0) - , SkeletonChangedCount(0) - , Time(0.f) -{ - Joints.SetNum(static_cast(EOculusXRBoneID::COUNT)); -} - -FOculusXRBodySkeletonBone::FOculusXRBodySkeletonBone() - : Orientation(FRotator::ZeroRotator) - , Position(FVector::ZeroVector) - , BoneId(EOculusXRBoneID::None) - , ParentBoneIndex(EOculusXRBoneID::None) -{ -} - -FOculusXRBodySkeleton::FOculusXRBodySkeleton() - : NumBones(0) -{ - Bones.SetNum(static_cast(EOculusXRBoneID::COUNT)); -} - -FOculusXRBodySkeletonState::FOculusXRBodySkeletonState() - : BodyState() - , SkeletonState() -{ -} - -FOculusXRFaceState::FOculusXRFaceState() - : bIsValid(false) - , bIsEyeFollowingBlendshapesValid(false) - , Time(0.f) - , DataSource() -{ - ExpressionWeights.SetNum(static_cast(EOculusXRFaceExpression::COUNT)); - ExpressionWeightConfidences.SetNum(static_cast(EOculusXRFaceConfidence::COUNT)); -} - -FOculusXRFaceVisemesState::FOculusXRFaceVisemesState() - : bIsValid(false) - , Time(0.f) -{ - ExpressionVisemeWeights.SetNum(static_cast(EOculusXRFaceVisemesExpression::COUNT)); -} - -FOculusXRFaceExpressionModifier::FOculusXRFaceExpressionModifier() - : MinValue(0.f) - , MaxValue(1.f) - , Multiplier(1.f) -{ -} - -FOculusXREyeGazeState::FOculusXREyeGazeState() - : Orientation(FRotator::ZeroRotator) - , Position(FVector::ZeroVector) - , Confidence(0.f) - , bIsValid(false) -{ -} - -FOculusXREyeGazesState::FOculusXREyeGazesState() - : Time(0.f) -{ - EyeGazes.SetNum(static_cast(EOculusXREye::COUNT)); -} diff --git a/Plugins/MetaXR/Source/OculusXRMovement/Private/OculusXRTelemetryMovementEvents.h b/Plugins/MetaXR/Source/OculusXRMovement/Private/OculusXRTelemetryMovementEvents.h deleted file mode 100644 index 54865de..0000000 --- a/Plugins/MetaXR/Source/OculusXRMovement/Private/OculusXRTelemetryMovementEvents.h +++ /dev/null @@ -1,14 +0,0 @@ -// Copyright (c) Meta Platforms, Inc. and affiliates. - -#pragma once - -#include "OculusXRTelemetry.h" - -namespace OculusXRTelemetry::Events -{ - using FMovementSDKLiveLinkCreated = TMarker<191961034>; - using FMovementSDKLiveLinkInit = TMarker<191970472>; - using FMovementSDKBodyStart = TMarker<191958900>; - using FMovementSDKFaceStart = TMarker<191966310>; - using FMovementSDKEyeStart = TMarker<191969182>; -} // namespace OculusXRTelemetry::Events diff --git a/Plugins/MetaXR/Source/OculusXRMovement/Private/openxr/OculusXRBodyTrackingXR.cpp b/Plugins/MetaXR/Source/OculusXRMovement/Private/openxr/OculusXRBodyTrackingXR.cpp deleted file mode 100644 index 1d51ab0..0000000 --- a/Plugins/MetaXR/Source/OculusXRMovement/Private/openxr/OculusXRBodyTrackingXR.cpp +++ /dev/null @@ -1,474 +0,0 @@ -// Copyright (c) Meta Platforms, Inc. and affiliates. - -#include "OculusXRBodytrackingXR.h" -#include "OpenXRCore.h" -#include "IOpenXRHMDModule.h" -#include "OpenXRHMD.h" -#include "OculusXRMovementLog.h" -#include "OpenXR/OculusXROpenXRUtilities.h" - -#define LOCTEXT_NAMESPACE "OculusXRMovement" - -namespace XRMovement -{ - PFN_xrCreateBodyTrackerFB xrCreateBodyTrackerFB = nullptr; - PFN_xrDestroyBodyTrackerFB xrDestroyBodyTrackerFB = nullptr; - PFN_xrLocateBodyJointsFB xrLocateBodyJointsFB = nullptr; - PFN_xrGetBodySkeletonFB xrGetBodySkeletonFB = nullptr; - PFN_xrRequestBodyTrackingFidelityMETA xrRequestBodyTrackingFidelityMETA = nullptr; - PFN_xrSuggestBodyTrackingCalibrationOverrideMETA xrSuggestBodyTrackingCalibrationOverrideMETA = nullptr; - PFN_xrResetBodyTrackingCalibrationMETA xrResetBodyTrackingCalibrationMETA = nullptr; - - FBodyTrackingXR::FBodyTrackingXR() - : bExtBodyTrackingEnabled(false) - , bExtBodyTrackingFullBodyEnabled(false) - , bExtBodyTrackingFidelityEnabled(false) - , bExtBodyTrackingCalibrationEnabled(false) - , OpenXRHMD(nullptr) - , BodyTracker(nullptr) - , FullBodyTracking(false) - { - } - - FBodyTrackingXR::~FBodyTrackingXR() - { - } - - void FBodyTrackingXR::RegisterAsOpenXRExtension() - { -#if defined(WITH_OCULUS_BRANCH) - // Feature not enabled on Marketplace build. Currently only for the meta fork - RegisterOpenXRExtensionModularFeature(); -#endif - } - - bool FBodyTrackingXR::GetRequiredExtensions(TArray& OutExtensions) - { - OutExtensions.Add(XR_FB_BODY_TRACKING_EXTENSION_NAME); - return true; - } - - bool FBodyTrackingXR::GetOptionalExtensions(TArray& OutExtensions) - { - OutExtensions.Add(XR_META_BODY_TRACKING_FULL_BODY_EXTENSION_NAME); - OutExtensions.Add(XR_META_BODY_TRACKING_FIDELITY_EXTENSION_NAME); - OutExtensions.Add(XR_META_BODY_TRACKING_CALIBRATION_EXTENSION_NAME); - return true; - } - - const void* FBodyTrackingXR::OnCreateInstance(class IOpenXRHMDModule* InModule, const void* InNext) - { - if (InModule != nullptr) - { - bExtBodyTrackingEnabled = InModule->IsExtensionEnabled(XR_FB_BODY_TRACKING_EXTENSION_NAME); - bExtBodyTrackingFullBodyEnabled = InModule->IsExtensionEnabled(XR_META_BODY_TRACKING_FULL_BODY_EXTENSION_NAME); - bExtBodyTrackingFidelityEnabled = InModule->IsExtensionEnabled(XR_META_BODY_TRACKING_FIDELITY_EXTENSION_NAME); - bExtBodyTrackingCalibrationEnabled = InModule->IsExtensionEnabled(XR_META_BODY_TRACKING_CALIBRATION_EXTENSION_NAME); - - UE_LOG(LogOculusXRMovement, Log, TEXT("[Body Tracking] Extensions available: Tracking: %hs -- Full Body: %hs -- Fidelity: %hs -- Calibration: %hs"), - bExtBodyTrackingEnabled ? "ENABLED" : "DISABLED", - bExtBodyTrackingFullBodyEnabled ? "ENABLED" : "DISABLED", - bExtBodyTrackingFidelityEnabled ? "ENABLED" : "DISABLED", - bExtBodyTrackingCalibrationEnabled ? "ENABLED" : "DISABLED"); - } - return InNext; - } - - const void* FBodyTrackingXR::OnCreateSession(XrInstance InInstance, XrSystemId InSystem, const void* InNext) - { - InitOpenXRFunctions(InInstance); - - OpenXRHMD = (FOpenXRHMD*)GEngine->XRSystem.Get(); - - return InNext; - } - - void FBodyTrackingXR::OnDestroySession(XrSession InSession) - { - OpenXRHMD = nullptr; - } - - void* FBodyTrackingXR::OnWaitFrame(XrSession InSession, void* InNext) - { - Update_GameThread(InSession); - return InNext; - } - - XrResult FBodyTrackingXR::StartBodyTracking() - { - if (!OpenXRHMD || !OpenXRHMD->GetInstance() || !OpenXRHMD->GetSession()) - { - UE_LOG(LogOculusXRMovement, Warning, TEXT("[StartBodyTracking] XR state is invalid.")); - return XR_ERROR_VALIDATION_FAILURE; - } - - if (!IsBodyTrackingSupported()) - { - UE_LOG(LogOculusXRMovement, Warning, TEXT("[StartBodyTracking] Body tracking is unsupported.")); - return XR_ERROR_VALIDATION_FAILURE; - } - - if (BodyTracker != XR_NULL_HANDLE) - { - UE_LOG(LogOculusXRMovement, Log, TEXT("[StartBodyTracking] Body tracking is already started.")); - return XR_SUCCESS; - } - - XrBodyTrackerCreateInfoFB createInfo = { XR_TYPE_BODY_TRACKER_CREATE_INFO_FB }; - createInfo.next = nullptr; - createInfo.bodyJointSet = XR_BODY_JOINT_SET_DEFAULT_FB; - - auto result = XRMovement::xrCreateBodyTrackerFB(OpenXRHMD->GetSession(), &createInfo, &BodyTracker); - if (XR_FAILED(result)) - { - UE_LOG(LogOculusXRMovement, Warning, TEXT("[StartBodyTracking] Body tracking failed to start. Result: %d"), result); - return result; - } - - return XR_SUCCESS; - } - - XrResult FBodyTrackingXR::StartBodyTrackingByJointSet(EOculusXRBodyJointSet jointSet) - { - if (!OpenXRHMD || !OpenXRHMD->GetInstance() || !OpenXRHMD->GetSession()) - { - UE_LOG(LogOculusXRMovement, Warning, TEXT("[StartBodyTrackingByJointSet] XR state is invalid.")); - return XR_ERROR_VALIDATION_FAILURE; - } - - if (!IsBodyTrackingSupported()) - { - UE_LOG(LogOculusXRMovement, Warning, TEXT("[StartBodyTrackingByJointSet] Body tracking is unsupported.")); - return XR_ERROR_VALIDATION_FAILURE; - } - - if (BodyTracker != XR_NULL_HANDLE) - { - UE_LOG(LogOculusXRMovement, Log, TEXT("[StartBodyTrackingByJointSet] Body tracking is already started.")); - return XR_SUCCESS; - } - - XrBodyTrackerCreateInfoFB createInfo = { XR_TYPE_BODY_TRACKER_CREATE_INFO_FB }; - createInfo.next = nullptr; - - switch (jointSet) - { - case EOculusXRBodyJointSet::UpperBody: - createInfo.bodyJointSet = XR_BODY_JOINT_SET_DEFAULT_FB; - break; - case EOculusXRBodyJointSet::FullBody: - createInfo.bodyJointSet = XR_BODY_JOINT_SET_FULL_BODY_META; - if (!IsFullBodySupported()) - { - UE_LOG(LogOculusXRMovement, Warning, TEXT("[StartBodyTrackingByJointSet] Full body tracking is unsupported.")); - return XR_ERROR_VALIDATION_FAILURE; - } - break; - default: - UE_LOG(LogOculusXRMovement, Warning, TEXT("[StartBodyTrackingByJointSet] Unknown body tracking joint set.")); - return XR_ERROR_VALIDATION_FAILURE; - } - - auto result = XRMovement::xrCreateBodyTrackerFB(OpenXRHMD->GetSession(), &createInfo, &BodyTracker); - if XR_FAILED (result) - { - BodyTracker = XR_NULL_HANDLE; - UE_LOG(LogOculusXRMovement, Warning, TEXT("[StartBodyTrackingByJointSet] Body tracking failed to start. Result: %d"), result); - return result; - } - else - { - FullBodyTracking = (jointSet == EOculusXRBodyJointSet::FullBody); - } - - return XR_SUCCESS; - } - - XrResult FBodyTrackingXR::StopBodyTracking() - { - if (!OpenXRHMD || !OpenXRHMD->GetInstance() || !OpenXRHMD->GetSession()) - { - UE_LOG(LogOculusXRMovement, Warning, TEXT("[StopBodyTracking] XR state is invalid.")); - return XR_ERROR_VALIDATION_FAILURE; - } - - if (!IsBodyTrackingSupported()) - { - UE_LOG(LogOculusXRMovement, Warning, TEXT("[StopBodyTracking] Body tracking is unsupported.")); - return XR_ERROR_VALIDATION_FAILURE; - } - - XrResult result = XR_SUCCESS; - if (IsBodyTrackingEnabled()) - { - result = XRMovement::xrDestroyBodyTrackerFB(BodyTracker); - if XR_FAILED (result) - { - UE_LOG(LogOculusXRMovement, Warning, TEXT("[StopBodyTracking] Body tracking failed to stop. Result: %d"), result); - } - } - - BodyTracker = XR_NULL_HANDLE; - FullBodyTracking = false; - - return result; - } - - XrResult FBodyTrackingXR::GetCachedBodyState(FOculusXRBodyState& OutState) - { - if (!IsBodyTrackingEnabled()) - { - return XR_ERROR_VALIDATION_FAILURE; - } - - OutState = CachedBodyState; - return XR_SUCCESS; - } - - XrResult FBodyTrackingXR::GetBodySkeleton(FOculusXRBodySkeleton& OutSkeleton) - { - if (!OpenXRHMD || !OpenXRHMD->GetInstance() || !OpenXRHMD->GetSession()) - { - UE_LOG(LogOculusXRMovement, Warning, TEXT("[GetBodySkeleton] XR state is invalid.")); - return XR_ERROR_VALIDATION_FAILURE; - } - - int jointCount = IsFullBodyTrackingEnabled() ? (int)XR_FULL_BODY_JOINT_COUNT_META : (int)XR_BODY_JOINT_COUNT_FB; - - // Allocate enough memory for the larger joint set - static_assert((int)XR_FULL_BODY_JOINT_COUNT_META >= (int)XR_BODY_JOINT_COUNT_FB); - XrBodySkeletonJointFB joints[XR_FULL_BODY_JOINT_COUNT_META]; - - XrBodySkeletonFB bodySkeleton = { XR_TYPE_BODY_SKELETON_FB }; - bodySkeleton.jointCount = jointCount; - bodySkeleton.joints = joints; - - auto result = XRMovement::xrGetBodySkeletonFB(BodyTracker, &bodySkeleton); - if (XR_FAILED(result)) - { - return result; - } - - OutSkeleton.NumBones = bodySkeleton.jointCount; - for (uint32 i = 0; i < bodySkeleton.jointCount; ++i) - { - XrBodySkeletonJointFB bone = bodySkeleton.joints[i]; - XrPosef bonePose = bone.pose; - - FOculusXRBodySkeletonBone& OculusXRBone = OutSkeleton.Bones[i]; - - OculusXRBone.Orientation = FRotator(ToFQuat(bonePose.orientation)); - OculusXRBone.Position = ToFVector(bonePose.position) * OpenXRHMD->GetWorldToMetersScale(); - - if (bone.parentJoint == XR_BODY_JOINT_NONE_FB) - { - OculusXRBone.ParentBoneIndex = EOculusXRBoneID::None; - } - else - { - OculusXRBone.ParentBoneIndex = static_cast(bone.parentJoint); - } - - OculusXRBone.BoneId = static_cast(bone.joint); - } - - return XR_SUCCESS; - } - - XrResult FBodyTrackingXR::RequestBodyTrackingFidelity(EOculusXRBodyTrackingFidelity Fidelity) - { - if (!OpenXRHMD || !OpenXRHMD->GetInstance() || !OpenXRHMD->GetSession()) - { - UE_LOG(LogOculusXRMovement, Warning, TEXT("[RequestBodyTrackingFidelity] XR state is invalid.")); - return XR_ERROR_VALIDATION_FAILURE; - } - - if (!IsFidelitySupported()) - { - UE_LOG(LogOculusXRMovement, Warning, TEXT("[RequestBodyTrackingFidelity] Fidelity is unsupported.")); - return XR_ERROR_VALIDATION_FAILURE; - } - - if (BodyTracker == XR_NULL_HANDLE) - { - UE_LOG(LogOculusXRMovement, Warning, TEXT("[RequestBodyTrackingFidelity] Body tracking is not started.")); - return XR_SUCCESS; - } - - XrBodyTrackingFidelityMETA fidelity; - switch (Fidelity) - { - case EOculusXRBodyTrackingFidelity::High: - fidelity = XR_BODY_TRACKING_FIDELITY_HIGH_META; - break; - case EOculusXRBodyTrackingFidelity::Low: - fidelity = XR_BODY_TRACKING_FIDELITY_LOW_META; - break; - default: - UE_LOG(LogOculusXRMovement, Warning, TEXT("[RequestBodyTrackingFidelity] Invalid fidelity level.")); - return XR_ERROR_VALIDATION_FAILURE; - } - - XrResult result = xrRequestBodyTrackingFidelityMETA(BodyTracker, fidelity); - if (XR_FAILED(result)) - { - UE_LOG(LogOculusXRMovement, Warning, TEXT("[RequestBodyTrackingFidelity] Failed to request fidelity level. Result: %d"), result); - } - - return result; - } - - XrResult FBodyTrackingXR::ResetBodyTrackingFidelity() - { - if (!OpenXRHMD || !OpenXRHMD->GetInstance() || !OpenXRHMD->GetSession()) - { - UE_LOG(LogOculusXRMovement, Warning, TEXT("[ResetBodyTrackingFidelity] XR state is invalid.")); - return XR_ERROR_VALIDATION_FAILURE; - } - - if (!IsFidelitySupported()) - { - UE_LOG(LogOculusXRMovement, Warning, TEXT("[ResetBodyTrackingFidelity] Fidelity is unsupported.")); - return XR_ERROR_VALIDATION_FAILURE; - } - - if (BodyTracker == XR_NULL_HANDLE) - { - UE_LOG(LogOculusXRMovement, Warning, TEXT("[ResetBodyTrackingFidelity] Body tracking is not started.")); - return XR_SUCCESS; - } - - XrResult result = xrResetBodyTrackingCalibrationMETA(BodyTracker); - if (XR_FAILED(result)) - { - UE_LOG(LogOculusXRMovement, Warning, TEXT("[ResetBodyTrackingFidelity] Failed to request fidelity level. Result: %d"), result); - } - - return result; - } - - XrResult FBodyTrackingXR::SuggestBodyTrackingCalibrationOverride(float height) - { - if (!OpenXRHMD || !OpenXRHMD->GetInstance() || !OpenXRHMD->GetSession()) - { - UE_LOG(LogOculusXRMovement, Warning, TEXT("[SuggestBodyTrackingCalibrationOverride] XR state is invalid.")); - return XR_ERROR_VALIDATION_FAILURE; - } - - if (!IsCalibrationSupported()) - { - UE_LOG(LogOculusXRMovement, Warning, TEXT("[SuggestBodyTrackingCalibrationOverride] Calibration is unsupported.")); - return XR_ERROR_VALIDATION_FAILURE; - } - - if (BodyTracker == XR_NULL_HANDLE) - { - UE_LOG(LogOculusXRMovement, Warning, TEXT("[SuggestBodyTrackingCalibrationOverride] Body tracking is not started.")); - return XR_SUCCESS; - } - - XrBodyTrackingCalibrationInfoMETA xrCalibrationInfo = { XR_TYPE_BODY_TRACKING_CALIBRATION_INFO_META }; - xrCalibrationInfo.bodyHeight = height; - - XrResult result = xrSuggestBodyTrackingCalibrationOverrideMETA(BodyTracker, &xrCalibrationInfo); - if (XR_FAILED(result)) - { - UE_LOG(LogOculusXRMovement, Warning, TEXT("[SuggestBodyTrackingCalibrationOverride] failed to suggest calibration override! Result: %d"), result); - } - - return result; - } - - void FBodyTrackingXR::InitOpenXRFunctions(XrInstance InInstance) - { - // XR_FB_Body_Tracking - OculusXR::XRGetInstanceProcAddr(InInstance, "xrCreateBodyTrackerFB", &xrCreateBodyTrackerFB); - OculusXR::XRGetInstanceProcAddr(InInstance, "xrDestroyBodyTrackerFB", &xrDestroyBodyTrackerFB); - OculusXR::XRGetInstanceProcAddr(InInstance, "xrLocateBodyJointsFB", &xrLocateBodyJointsFB); - OculusXR::XRGetInstanceProcAddr(InInstance, "xrGetBodySkeletonFB", &xrGetBodySkeletonFB); - - // XR_META_body_tracking_fidelity - OculusXR::XRGetInstanceProcAddr(InInstance, "xrRequestBodyTrackingFidelityMETA", &xrRequestBodyTrackingFidelityMETA); - - // XR_META_body_tracking_calibration - OculusXR::XRGetInstanceProcAddr(InInstance, "xrSuggestBodyTrackingCalibrationOverrideMETA", &xrSuggestBodyTrackingCalibrationOverrideMETA); - OculusXR::XRGetInstanceProcAddr(InInstance, "xrResetBodyTrackingCalibrationMETA", &xrResetBodyTrackingCalibrationMETA); - } - - void FBodyTrackingXR::Update_GameThread(XrSession InSession) - { - check(IsInGameThread()); - - if (!OpenXRHMD || !OpenXRHMD->GetInstance() || !OpenXRHMD->GetSession() || !IsBodyTrackingSupported() || !IsBodyTrackingEnabled()) - { - return; - } - - static_assert(XR_FULL_BODY_JOINT_COUNT_META == static_cast(EOculusXRBoneID::COUNT), "The size of the XR Bone ID enum should be the same as the EOculusXRBoneID count."); - - int jointCount = IsFullBodyTrackingEnabled() ? (int)XR_FULL_BODY_JOINT_COUNT_META : (int)XR_BODY_JOINT_COUNT_FB; - CachedBodyState.Joints.SetNum(static_cast(XR_FULL_BODY_JOINT_COUNT_META)); - - XrBodyJointsLocateInfoFB info = { XR_TYPE_BODY_JOINTS_LOCATE_INFO_FB }; - info.baseSpace = OpenXRHMD->GetTrackingSpace(); - info.time = OpenXRHMD->GetDisplayTime(); - - XrBodyJointLocationsFB locations = { XR_TYPE_BODY_JOINT_LOCATIONS_FB }; - XrBodyJointLocationFB jointLocations[XR_FULL_BODY_JOINT_COUNT_META]; - - locations.jointCount = jointCount; - locations.jointLocations = jointLocations; - - XrBodyTrackingCalibrationStatusMETA calibrationStatus = { XR_TYPE_BODY_TRACKING_CALIBRATION_STATUS_META }; - calibrationStatus.next = XR_NULL_HANDLE; - if (IsCalibrationSupported()) - { - OculusXR::XRAppendToChain( - reinterpret_cast(&calibrationStatus), reinterpret_cast(&locations)); - } - - XrBodyTrackingFidelityStatusMETA fidelityStatus = { XR_TYPE_BODY_TRACKING_FIDELITY_STATUS_META }; - fidelityStatus.next = XR_NULL_HANDLE; - if (IsFidelitySupported()) - { - OculusXR::XRAppendToChain( - reinterpret_cast(&fidelityStatus), reinterpret_cast(&locations)); - } - - auto result = XRMovement::xrLocateBodyJointsFB(BodyTracker, &info, &locations); - if (XR_FAILED(result)) - { - UE_LOG(LogOculusXRMovement, Warning, TEXT("[LocateBodyJoints] Failed to locate joints! Result: %d"), result); - return; - } - - CachedBodyState.IsActive = (bool)locations.isActive; - CachedBodyState.Confidence = locations.confidence; - CachedBodyState.SkeletonChangedCount = locations.skeletonChangedCount; - CachedBodyState.Time = locations.time * 1e-9; // FromXrTime - - for (int i = 0; i < jointCount; ++i) - { - XrBodyJointLocationFB jointLocation = locations.jointLocations[i]; - XrPosef jointPose = jointLocation.pose; - - FOculusXRBodyJoint& OculusXRBodyJoint = CachedBodyState.Joints[i]; - OculusXRBodyJoint.LocationFlags = jointLocation.locationFlags; - OculusXRBodyJoint.bIsValid = jointLocation.locationFlags & (XRSpaceFlags::XR_SPACE_LOCATION_ORIENTATION_VALID_BIT | XRSpaceFlags::XR_SPACE_LOCATION_POSITION_VALID_BIT); - OculusXRBodyJoint.Orientation = FRotator(ToFQuat(jointPose.orientation)); - OculusXRBodyJoint.Position = ToFVector(jointPose.position) * OpenXRHMD->GetWorldToMetersScale(); - } - - // If using less joints than the max count we can just set the remaining joints to null - if (jointCount < CachedBodyState.Joints.Num()) - { - for (int i = jointCount; i < CachedBodyState.Joints.Num(); ++i) - { - CachedBodyState.Joints[i].bIsValid = false; - } - } - } - -} // namespace XRMovement - -#undef LOCTEXT_NAMESPACE diff --git a/Plugins/MetaXR/Source/OculusXRMovement/Private/openxr/OculusXRBodyTrackingXR.h b/Plugins/MetaXR/Source/OculusXRMovement/Private/openxr/OculusXRBodyTrackingXR.h deleted file mode 100644 index 499da75..0000000 --- a/Plugins/MetaXR/Source/OculusXRMovement/Private/openxr/OculusXRBodyTrackingXR.h +++ /dev/null @@ -1,74 +0,0 @@ -// Copyright (c) Meta Platforms, Inc. and affiliates. - -#pragma once - -#include "OculusXRMovementXRIncludes.h" -#include "IOpenXRExtensionPlugin.h" -#include "OculusXRMovementTypes.h" - -#define LOCTEXT_NAMESPACE "OculusXRMovement" - -class FOpenXRHMD; - -namespace XRMovement -{ - extern PFN_xrCreateBodyTrackerFB xrCreateBodyTrackerFB; - extern PFN_xrDestroyBodyTrackerFB xrDestroyBodyTrackerFB; - extern PFN_xrLocateBodyJointsFB xrLocateBodyJointsFB; - extern PFN_xrGetBodySkeletonFB xrGetBodySkeletonFB; - extern PFN_xrRequestBodyTrackingFidelityMETA xrRequestBodyTrackingFidelityMETA; - extern PFN_xrSuggestBodyTrackingCalibrationOverrideMETA xrSuggestBodyTrackingCalibrationOverrideMETA; - extern PFN_xrResetBodyTrackingCalibrationMETA xrResetBodyTrackingCalibrationMETA; - - class FBodyTrackingXR : public IOpenXRExtensionPlugin - { - public: - // IOculusXROpenXRHMDPlugin - virtual bool GetRequiredExtensions(TArray& OutExtensions) override; - virtual bool GetOptionalExtensions(TArray& OutExtensions) override; - virtual const void* OnCreateInstance(class IOpenXRHMDModule* InModule, const void* InNext) override; - virtual const void* OnCreateSession(XrInstance InInstance, XrSystemId InSystem, const void* InNext) override; - virtual void OnDestroySession(XrSession InSession) override; - virtual void* OnWaitFrame(XrSession InSession, void* InNext) override; - - public: - FBodyTrackingXR(); - virtual ~FBodyTrackingXR(); - void RegisterAsOpenXRExtension(); - - bool IsBodyTrackingSupported() const { return bExtBodyTrackingEnabled; } - bool IsFullBodySupported() const { return bExtBodyTrackingFullBodyEnabled; } - bool IsFidelitySupported() const { return bExtBodyTrackingFidelityEnabled; } - bool IsCalibrationSupported() const { return bExtBodyTrackingCalibrationEnabled; } - - bool IsBodyTrackingEnabled() const { return BodyTracker != XR_NULL_HANDLE; } - bool IsFullBodyTrackingEnabled() const { return FullBodyTracking; } - - XrResult StartBodyTracking(); - XrResult StartBodyTrackingByJointSet(EOculusXRBodyJointSet jointSet); - XrResult StopBodyTracking(); - XrResult GetCachedBodyState(FOculusXRBodyState& OutState); - XrResult GetBodySkeleton(FOculusXRBodySkeleton& OutSkeleton); - - XrResult RequestBodyTrackingFidelity(EOculusXRBodyTrackingFidelity Fidelity); - XrResult ResetBodyTrackingFidelity(); - XrResult SuggestBodyTrackingCalibrationOverride(float height); - - private: - void InitOpenXRFunctions(XrInstance InInstance); - void Update_GameThread(XrSession InSession); - - bool bExtBodyTrackingEnabled; - bool bExtBodyTrackingFullBodyEnabled; - bool bExtBodyTrackingFidelityEnabled; - bool bExtBodyTrackingCalibrationEnabled; - - FOpenXRHMD* OpenXRHMD; - FOculusXRBodyState CachedBodyState; - XrBodyTrackerFB BodyTracker = XR_NULL_HANDLE; - bool FullBodyTracking{ false }; - }; - -} // namespace XRMovement - -#undef LOCTEXT_NAMESPACE diff --git a/Plugins/MetaXR/Source/OculusXRMovement/Private/openxr/OculusXREyeTrackingXR.cpp b/Plugins/MetaXR/Source/OculusXRMovement/Private/openxr/OculusXREyeTrackingXR.cpp deleted file mode 100644 index 12df784..0000000 --- a/Plugins/MetaXR/Source/OculusXRMovement/Private/openxr/OculusXREyeTrackingXR.cpp +++ /dev/null @@ -1,192 +0,0 @@ -// Copyright (c) Meta Platforms, Inc. and affiliates. - -#include "OculusXREyeTrackingXR.h" -#include "OpenXRCore.h" -#include "IOpenXRHMDModule.h" -#include "OpenXRHMD.h" -#include "OculusXRMovementLog.h" -#include "OpenXR/OculusXROpenXRUtilities.h" - -#define LOCTEXT_NAMESPACE "OculusXRMovement" - -namespace XRMovement -{ - PFN_xrCreateEyeTrackerFB xrCreateEyeTrackerFB = nullptr; - PFN_xrDestroyEyeTrackerFB xrDestroyEyeTrackerFB = nullptr; - PFN_xrGetEyeGazesFB xrGetEyeGazesFB = nullptr; - - FEyeTrackingXR::FEyeTrackingXR() - : bExtEyeTrackingEnabled(false) - , OpenXRHMD(nullptr) - , EyeTracker(nullptr) - { - CachedEyeState.EyeGazes.SetNum(2); - } - - FEyeTrackingXR::~FEyeTrackingXR() - { - } - - void FEyeTrackingXR::RegisterAsOpenXRExtension() - { -#if defined(WITH_OCULUS_BRANCH) - // Feature not enabled on Marketplace build. Currently only for the meta fork - RegisterOpenXRExtensionModularFeature(); -#endif - } - - bool FEyeTrackingXR::GetRequiredExtensions(TArray& OutExtensions) - { - OutExtensions.Add(XR_FB_EYE_TRACKING_SOCIAL_EXTENSION_NAME); - return true; - } - - bool FEyeTrackingXR::GetOptionalExtensions(TArray& OutExtensions) - { - return true; - } - - const void* FEyeTrackingXR::OnCreateInstance(class IOpenXRHMDModule* InModule, const void* InNext) - { - if (InModule != nullptr) - { - bExtEyeTrackingEnabled = InModule->IsExtensionEnabled(XR_FB_EYE_TRACKING_SOCIAL_EXTENSION_NAME); - } - return InNext; - } - - const void* FEyeTrackingXR::OnCreateSession(XrInstance InInstance, XrSystemId InSystem, const void* InNext) - { - InitOpenXRFunctions(InInstance); - - OpenXRHMD = (FOpenXRHMD*)GEngine->XRSystem.Get(); - - return InNext; - } - - void FEyeTrackingXR::OnDestroySession(XrSession InSession) - { - OpenXRHMD = nullptr; - } - - void* FEyeTrackingXR::OnWaitFrame(XrSession InSession, void* InNext) - { - Update_GameThread(InSession); - return InNext; - } - - XrResult FEyeTrackingXR::StartEyeTracking() - { - if (!OpenXRHMD || !OpenXRHMD->GetInstance() || !OpenXRHMD->GetSession()) - { - UE_LOG(LogOculusXRMovement, Warning, TEXT("[StartEyeTracking] Cannot start eye tracking, the instance or session is null.")); - return XR_ERROR_VALIDATION_FAILURE; - } - - if (!IsEyeTrackingSupported()) - { - UE_LOG(LogOculusXRMovement, Warning, TEXT("[StartEyeTracking] Cannot start eye tracking, body tracking is unsupported.")); - return XR_ERROR_VALIDATION_FAILURE; - } - - if (EyeTracker != XR_NULL_HANDLE) - { - UE_LOG(LogOculusXRMovement, Warning, TEXT("[StartEyeTracking] Cannot start eye tracking, body tracking is already started.")); - return XR_SUCCESS; - } - - XrEyeTrackerCreateInfoFB createInfo = { XR_TYPE_EYE_TRACKER_CREATE_INFO_FB, nullptr }; - - auto result = XRMovement::xrCreateEyeTrackerFB(OpenXRHMD->GetSession(), &createInfo, &EyeTracker); - if (XR_FAILED(result)) - { - UE_LOG(LogOculusXRMovement, Warning, TEXT("[StartEyeTracking] Failed to start eye tracking. Result(%d)"), result); - } - - return result; - } - - XrResult FEyeTrackingXR::StopEyeTracking() - { - if (!OpenXRHMD || !OpenXRHMD->GetInstance() || !OpenXRHMD->GetSession()) - { - UE_LOG(LogOculusXRMovement, Warning, TEXT("[StopEyeTracking] Cannot stop eye tracking, the instance or session is null.")); - return XR_ERROR_VALIDATION_FAILURE; - } - - if (!IsEyeTrackingSupported()) - { - UE_LOG(LogOculusXRMovement, Warning, TEXT("[StopEyeTracking] Cannot stop eye tracking, eye tracking is unsupported.")); - return XR_ERROR_VALIDATION_FAILURE; - } - - XrResult result = XR_SUCCESS; - if (IsEyeTrackingEnabled()) - { - result = XRMovement::xrDestroyEyeTrackerFB(EyeTracker); - if (XR_FAILED(result)) - { - UE_LOG(LogOculusXRMovement, Warning, TEXT("[StopEyeTracking] Failed to stop eye tracking. Result(%d)"), result); - } - } - - EyeTracker = XR_NULL_HANDLE; - - return result; - } - - XrResult FEyeTrackingXR::GetCachedEyeState(FOculusXREyeGazesState& OutState) - { - if (!IsEyeTrackingEnabled()) - { - return XR_ERROR_VALIDATION_FAILURE; - } - - OutState = CachedEyeState; - return XR_SUCCESS; - } - - void FEyeTrackingXR::InitOpenXRFunctions(XrInstance InInstance) - { - // XR_FB_Eye_Tracking_Social - OculusXR::XRGetInstanceProcAddr(InInstance, "xrCreateEyeTrackerFB", &xrCreateEyeTrackerFB); - OculusXR::XRGetInstanceProcAddr(InInstance, "xrDestroyEyeTrackerFB", &xrDestroyEyeTrackerFB); - OculusXR::XRGetInstanceProcAddr(InInstance, "xrGetEyeGazesFB", &xrGetEyeGazesFB); - } - - void FEyeTrackingXR::Update_GameThread(XrSession InSession) - { - check(IsInGameThread()); - - if (!OpenXRHMD || !OpenXRHMD->GetInstance() || !OpenXRHMD->GetSession() || !IsEyeTrackingSupported() || !IsEyeTrackingEnabled()) - { - return; - } - - XrEyeGazesInfoFB info{ XR_TYPE_EYE_GAZES_INFO_FB, nullptr }; - info.baseSpace = OpenXRHMD->GetTrackingSpace(); - info.time = OpenXRHMD->GetDisplayTime(); - - XrEyeGazesFB gazes{ XR_TYPE_EYE_GAZES_FB, nullptr }; - - auto result = XRMovement::xrGetEyeGazesFB(EyeTracker, &info, &gazes); - if (XR_FAILED(result)) - { - UE_LOG(LogOculusXRMovement, Warning, TEXT("[EyeGazeStateUpdate] Failed to get gazes state. Result(%d)"), result); - return; - } - - auto ApplyGazeToUEType = [this](const XrEyeGazeFB& xrGaze, FOculusXREyeGazeState& outUEGaze) { - outUEGaze.bIsValid = static_cast(xrGaze.isValid); - outUEGaze.Confidence = xrGaze.gazeConfidence; - outUEGaze.Orientation = FRotator(ToFQuat(xrGaze.gazePose.orientation)); - outUEGaze.Position = ToFVector(xrGaze.gazePose.position) * OpenXRHMD->GetWorldToMetersScale(); - }; - - ApplyGazeToUEType(gazes.gaze[0], CachedEyeState.EyeGazes[0]); - ApplyGazeToUEType(gazes.gaze[1], CachedEyeState.EyeGazes[1]); - } - -} // namespace XRMovement - -#undef LOCTEXT_NAMESPACE diff --git a/Plugins/MetaXR/Source/OculusXRMovement/Private/openxr/OculusXREyeTrackingXR.h b/Plugins/MetaXR/Source/OculusXRMovement/Private/openxr/OculusXREyeTrackingXR.h deleted file mode 100644 index 4f109e6..0000000 --- a/Plugins/MetaXR/Source/OculusXRMovement/Private/openxr/OculusXREyeTrackingXR.h +++ /dev/null @@ -1,55 +0,0 @@ -// Copyright (c) Meta Platforms, Inc. and affiliates. - -#pragma once - -#include "OculusXRMovementXRIncludes.h" -#include "IOpenXRExtensionPlugin.h" -#include "OculusXRMovementTypes.h" - -#define LOCTEXT_NAMESPACE "OculusXRMovement" - -class FOpenXRHMD; - -namespace XRMovement -{ - extern PFN_xrCreateEyeTrackerFB xrCreateEyeTrackerFB; - extern PFN_xrDestroyEyeTrackerFB xrDestroyEyeTrackerFB; - extern PFN_xrGetEyeGazesFB xrGetEyeGazesFB; - - class FEyeTrackingXR : public IOpenXRExtensionPlugin - { - public: - // IOculusXROpenXRHMDPlugin - virtual bool GetRequiredExtensions(TArray& OutExtensions) override; - virtual bool GetOptionalExtensions(TArray& OutExtensions) override; - virtual const void* OnCreateInstance(class IOpenXRHMDModule* InModule, const void* InNext) override; - virtual const void* OnCreateSession(XrInstance InInstance, XrSystemId InSystem, const void* InNext) override; - virtual void OnDestroySession(XrSession InSession) override; - virtual void* OnWaitFrame(XrSession InSession, void* InNext) override; - - public: - FEyeTrackingXR(); - virtual ~FEyeTrackingXR(); - void RegisterAsOpenXRExtension(); - - bool IsEyeTrackingSupported() const { return bExtEyeTrackingEnabled; } - bool IsEyeTrackingEnabled() const { return EyeTracker != XR_NULL_HANDLE; } - - XrResult StartEyeTracking(); - XrResult StopEyeTracking(); - XrResult GetCachedEyeState(FOculusXREyeGazesState& OutState); - - private: - void InitOpenXRFunctions(XrInstance InInstance); - void Update_GameThread(XrSession InSession); - - bool bExtEyeTrackingEnabled; - - FOpenXRHMD* OpenXRHMD; - FOculusXREyeGazesState CachedEyeState; - XrEyeTrackerFB EyeTracker = XR_NULL_HANDLE; - }; - -} // namespace XRMovement - -#undef LOCTEXT_NAMESPACE diff --git a/Plugins/MetaXR/Source/OculusXRMovement/Private/openxr/OculusXRFaceTrackingXR.cpp b/Plugins/MetaXR/Source/OculusXRMovement/Private/openxr/OculusXRFaceTrackingXR.cpp deleted file mode 100644 index 9b3eb0d..0000000 --- a/Plugins/MetaXR/Source/OculusXRMovement/Private/openxr/OculusXRFaceTrackingXR.cpp +++ /dev/null @@ -1,259 +0,0 @@ -// Copyright (c) Meta Platforms, Inc. and affiliates. - -#include "OculusXRFaceTrackingXR.h" -#include "OpenXRCore.h" -#include "IOpenXRHMDModule.h" -#include "OpenXRHMD.h" -#include "OculusXRMovementLog.h" -#include "OpenXR/OculusXROpenXRUtilities.h" - -#define LOCTEXT_NAMESPACE "OculusXRMovement" - -namespace XRMovement -{ - PFN_xrCreateFaceTracker2FB xrCreateFaceTracker2FB = nullptr; - PFN_xrDestroyFaceTracker2FB xrDestroyFaceTracker2FB = nullptr; - PFN_xrGetFaceExpressionWeights2FB xrGetFaceExpressionWeights2FB = nullptr; - - FFaceTrackingXR::FFaceTrackingXR() - : bExtFaceTrackingSupported(false) - , bExtFaceTrackingVisemesSupported(false) - , bVisemesEnabled(false) - , OpenXRHMD(nullptr) - , FaceTracker(nullptr) - { - CachedFaceState.ExpressionWeights.SetNum(XR_FACE_EXPRESSION2_COUNT_FB); - CachedFaceState.ExpressionWeightConfidences.SetNum(XR_FACE_CONFIDENCE2_COUNT_FB); - CachedVisemeState.ExpressionVisemeWeights.SetNum(XR_FACE_TRACKING_VISEME_COUNT_METAX1); - } - - FFaceTrackingXR::~FFaceTrackingXR() - { - } - - void FFaceTrackingXR::RegisterAsOpenXRExtension() - { -#if defined(WITH_OCULUS_BRANCH) - // Feature not enabled on Marketplace build. Currently only for the meta fork - RegisterOpenXRExtensionModularFeature(); -#endif - } - - bool FFaceTrackingXR::GetRequiredExtensions(TArray& OutExtensions) - { - OutExtensions.Add(XR_FB_FACE_TRACKING2_EXTENSION_NAME); - return true; - } - - bool FFaceTrackingXR::GetOptionalExtensions(TArray& OutExtensions) - { - OutExtensions.Add(XR_METAX1_FACE_TRACKING_VISEMES_EXTENSION_NAME); - return true; - } - - const void* FFaceTrackingXR::OnCreateInstance(class IOpenXRHMDModule* InModule, const void* InNext) - { - if (InModule != nullptr) - { - bExtFaceTrackingSupported = InModule->IsExtensionEnabled(XR_FB_FACE_TRACKING2_EXTENSION_NAME); - bExtFaceTrackingVisemesSupported = InModule->IsExtensionEnabled(XR_METAX1_FACE_TRACKING_VISEMES_EXTENSION_NAME); - } - return InNext; - } - - const void* FFaceTrackingXR::OnCreateSession(XrInstance InInstance, XrSystemId InSystem, const void* InNext) - { - InitOpenXRFunctions(InInstance); - - OpenXRHMD = (FOpenXRHMD*)GEngine->XRSystem.Get(); - - return InNext; - } - - void FFaceTrackingXR::OnDestroySession(XrSession InSession) - { - OpenXRHMD = nullptr; - } - - void* FFaceTrackingXR::OnWaitFrame(XrSession InSession, void* InNext) - { - Update_GameThread(InSession); - return InNext; - } - - XrResult FFaceTrackingXR::StartFaceTracking() - { - if (!OpenXRHMD || !OpenXRHMD->GetInstance() || !OpenXRHMD->GetSession()) - { - UE_LOG(LogOculusXRMovement, Warning, TEXT("[StartFaceTracking] Cannot start face tracking, the instance or session is null.")); - return XR_ERROR_VALIDATION_FAILURE; - } - - if (!IsFaceTrackingSupported()) - { - UE_LOG(LogOculusXRMovement, Warning, TEXT("[StartFaceTracking] Cannot start face tracking, face tracking is unsupported.")); - return XR_ERROR_VALIDATION_FAILURE; - } - - if (FaceTracker != XR_NULL_HANDLE) - { - UE_LOG(LogOculusXRMovement, Warning, TEXT("[StartFaceTracking] Cannot start face tracking, face tracking is already started.")); - return XR_SUCCESS; - } - - XrFaceTrackerCreateInfo2FB createInfo = { XR_TYPE_FACE_TRACKER_CREATE_INFO2_FB, nullptr }; - - auto result = XRMovement::xrCreateFaceTracker2FB(OpenXRHMD->GetSession(), &createInfo, &FaceTracker); - if (XR_FAILED(result)) - { - UE_LOG(LogOculusXRMovement, Warning, TEXT("[StartFaceTracking] Failed to start face tracking. Result(%d)"), result); - } - - return result; - } - - XrResult FFaceTrackingXR::StopFaceTracking() - { - if (!OpenXRHMD || !OpenXRHMD->GetInstance() || !OpenXRHMD->GetSession()) - { - UE_LOG(LogOculusXRMovement, Warning, TEXT("[StopFaceTracking] Cannot stop face tracking, the instance or session is null.")); - return XR_ERROR_VALIDATION_FAILURE; - } - - if (!IsFaceTrackingSupported()) - { - UE_LOG(LogOculusXRMovement, Warning, TEXT("[StopFaceTracking] Cannot stop face tracking, face tracking is unsupported.")); - return XR_ERROR_VALIDATION_FAILURE; - } - - XrResult result = XR_SUCCESS; - if (IsFaceTrackingEnabled()) - { - result = XRMovement::xrDestroyFaceTracker2FB(FaceTracker); - if (XR_FAILED(result)) - { - UE_LOG(LogOculusXRMovement, Warning, TEXT("[StopFaceTracking] Failed to stop face tracking. Result(%d)"), result); - } - } - - FaceTracker = XR_NULL_HANDLE; - - return result; - } - - XrResult FFaceTrackingXR::GetCachedFaceState(FOculusXRFaceState& OutState) - { - if (!IsFaceTrackingEnabled()) - { - return XR_ERROR_VALIDATION_FAILURE; - } - - OutState = CachedFaceState; - return XR_SUCCESS; - } - - XrResult FFaceTrackingXR::SetVisemesEnabled(bool enabled) - { - if (!OpenXRHMD || !OpenXRHMD->GetInstance() || !OpenXRHMD->GetSession()) - { - UE_LOG(LogOculusXRMovement, Warning, TEXT("[SetVisemesEnabled] Cannot change viseme state, the instance of session is null.")); - return XR_ERROR_VALIDATION_FAILURE; - } - - if (!IsFaceTrackingVisemesSupported()) - { - UE_LOG(LogOculusXRMovement, Warning, TEXT("[SetVisemesEnabled] Cannot change viseme state, visemes are not supported.")); - return XR_ERROR_VALIDATION_FAILURE; - } - - UE_LOG(LogOculusXRMovement, Log, TEXT("[SetVisemesEnabled] Changing visemes enabled state: %hs"), enabled ? "TRUE" : "FALSE"); - bVisemesEnabled = enabled; - - return XR_SUCCESS; - } - - XrResult FFaceTrackingXR::GetCachedVisemeState(FOculusXRFaceVisemesState& OutState) - { - if (!IsFaceTrackingEnabled() || !IsFaceTrackingVisemesEnabled()) - { - return XR_ERROR_VALIDATION_FAILURE; - } - - OutState = CachedVisemeState; - return XR_SUCCESS; - } - - void FFaceTrackingXR::InitOpenXRFunctions(XrInstance InInstance) - { - // XR_FB_Eye_Tracking_Social - OculusXR::XRGetInstanceProcAddr(InInstance, "xrCreateFaceTracker2FB", &xrCreateFaceTracker2FB); - OculusXR::XRGetInstanceProcAddr(InInstance, "xrDestroyFaceTracker2FB", &xrDestroyFaceTracker2FB); - OculusXR::XRGetInstanceProcAddr(InInstance, "xrGetFaceExpressionWeights2FB", &xrGetFaceExpressionWeights2FB); - } - - void FFaceTrackingXR::Update_GameThread(XrSession InSession) - { - check(IsInGameThread()); - - if (!OpenXRHMD || !OpenXRHMD->GetInstance() || !OpenXRHMD->GetSession() || !IsFaceTrackingSupported() || !IsFaceTrackingEnabled()) - { - return; - } - - XrFaceExpressionInfo2FB info{ XR_TYPE_FACE_EXPRESSION_INFO2_FB, nullptr }; - info.time = OpenXRHMD->GetDisplayTime(); - - float weightsArray[XR_FACE_EXPRESSION2_COUNT_FB]; - float confidencesArray[XR_FACE_CONFIDENCE2_COUNT_FB]; - - XrFaceExpressionWeights2FB weights{ XR_TYPE_FACE_EXPRESSION_WEIGHTS2_FB, nullptr }; - weights.weights = weightsArray; - weights.weightCount = XR_FACE_EXPRESSION2_COUNT_FB; - weights.confidences = confidencesArray; - weights.confidenceCount = XR_FACE_CONFIDENCE2_COUNT_FB; - - bool useVisemes = IsFaceTrackingVisemesSupported() && IsFaceTrackingVisemesEnabled(); - XrFaceTrackingVisemesMETAX1 faceTrackingVisemes{ XR_TYPE_FACE_TRACKING_VISEMES_METAX1 }; - if (useVisemes) - { - weights.next = &faceTrackingVisemes; - } - - auto result = XRMovement::xrGetFaceExpressionWeights2FB(FaceTracker, &info, &weights); - if (XR_FAILED(result)) - { - UE_LOG(LogOculusXRMovement, Warning, TEXT("[FaceExpressionStateUpdate] Failed to get face tracking state. Result(%d)"), result); - return; - } - - CachedFaceState.bIsValid = (weights.isValid == XR_TRUE); - CachedFaceState.bIsEyeFollowingBlendshapesValid = (weights.isEyeFollowingBlendshapesValid == XR_TRUE); - CachedFaceState.Time = OculusXR::FromXrTime(weights.time); - - switch (weights.dataSource) - { - case XR_FACE_TRACKING_DATA_SOURCE2_AUDIO_FB: - CachedFaceState.DataSource = EFaceTrackingDataSource::Audio; - break; - case XR_FACE_TRACKING_DATA_SOURCE2_VISUAL_FB: - CachedFaceState.DataSource = EFaceTrackingDataSource::Visual; - break; - case XR_FACE_TRACKING_DATA_SOURCE_2FB_MAX_ENUM_FB: - CachedFaceState.DataSource = EFaceTrackingDataSource::MAX; - break; - } - - FMemory::Memcpy(CachedFaceState.ExpressionWeights.GetData(), weights.weights, XR_FACE_EXPRESSION2_COUNT_FB); - FMemory::Memcpy(CachedFaceState.ExpressionWeightConfidences.GetData(), weights.confidences, XR_FACE_CONFIDENCE2_COUNT_FB); - - if (useVisemes) - { - CachedVisemeState.bIsValid = (faceTrackingVisemes.isValid == XR_TRUE); - CachedVisemeState.Time = CachedFaceState.Time; - FMemory::Memcpy(CachedVisemeState.ExpressionVisemeWeights.GetData(), faceTrackingVisemes.visemes, XR_FACE_TRACKING_VISEME_COUNT_METAX1); - } - } - -} // namespace XRMovement - -#undef LOCTEXT_NAMESPACE diff --git a/Plugins/MetaXR/Source/OculusXRMovement/Private/openxr/OculusXRFaceTrackingXR.h b/Plugins/MetaXR/Source/OculusXRMovement/Private/openxr/OculusXRFaceTrackingXR.h deleted file mode 100644 index c2a3394..0000000 --- a/Plugins/MetaXR/Source/OculusXRMovement/Private/openxr/OculusXRFaceTrackingXR.h +++ /dev/null @@ -1,63 +0,0 @@ -// Copyright (c) Meta Platforms, Inc. and affiliates. - -#pragma once - -#include "OculusXRMovementXRIncludes.h" -#include "IOpenXRExtensionPlugin.h" -#include "OculusXRMovementTypes.h" - -#define LOCTEXT_NAMESPACE "OculusXRMovement" - -class FOpenXRHMD; - -namespace XRMovement -{ - extern PFN_xrCreateFaceTracker2FB xrCreateEyeTracker2FB; - extern PFN_xrDestroyFaceTracker2FB xrDestroyEyeTracker2FB; - extern PFN_xrGetFaceExpressionWeights2FB xrGetFaceExpressionWeights2FB; - - class FFaceTrackingXR : public IOpenXRExtensionPlugin - { - public: - // IOculusXROpenXRHMDPlugin - virtual bool GetRequiredExtensions(TArray& OutExtensions) override; - virtual bool GetOptionalExtensions(TArray& OutExtensions) override; - virtual const void* OnCreateInstance(class IOpenXRHMDModule* InModule, const void* InNext) override; - virtual const void* OnCreateSession(XrInstance InInstance, XrSystemId InSystem, const void* InNext) override; - virtual void OnDestroySession(XrSession InSession) override; - virtual void* OnWaitFrame(XrSession InSession, void* InNext) override; - - public: - FFaceTrackingXR(); - virtual ~FFaceTrackingXR(); - void RegisterAsOpenXRExtension(); - - bool IsFaceTrackingSupported() const { return bExtFaceTrackingSupported; } - bool IsFaceTrackingEnabled() const { return FaceTracker != XR_NULL_HANDLE; } - bool IsFaceTrackingVisemesSupported() const { return bExtFaceTrackingVisemesSupported; } - bool IsFaceTrackingVisemesEnabled() const { return bVisemesEnabled; } - - XrResult StartFaceTracking(); - XrResult StopFaceTracking(); - XrResult GetCachedFaceState(FOculusXRFaceState& OutState); - XrResult SetVisemesEnabled(bool enabled); - XrResult GetCachedVisemeState(FOculusXRFaceVisemesState& OutState); - - private: - void InitOpenXRFunctions(XrInstance InInstance); - void Update_GameThread(XrSession InSession); - - bool bExtFaceTrackingSupported; - bool bExtFaceTrackingVisemesSupported; - bool bVisemesEnabled; - - FOpenXRHMD* OpenXRHMD; - FOculusXRFaceState CachedFaceState; - FOculusXRFaceVisemesState CachedVisemeState; - - XrFaceTracker2FB FaceTracker = XR_NULL_HANDLE; - }; - -} // namespace XRMovement - -#undef LOCTEXT_NAMESPACE diff --git a/Plugins/MetaXR/Source/OculusXRMovement/Private/openxr/OculusXRMovementXRIncludes.h b/Plugins/MetaXR/Source/OculusXRMovement/Private/openxr/OculusXRMovementXRIncludes.h deleted file mode 100644 index 61e2961..0000000 --- a/Plugins/MetaXR/Source/OculusXRMovement/Private/openxr/OculusXRMovementXRIncludes.h +++ /dev/null @@ -1,9 +0,0 @@ -// Copyright (c) Meta Platforms, Inc. and affiliates. - -#pragma once - -#include -#include -#include -#include -#include diff --git a/Plugins/MetaXR/Source/OculusXRMovement/Public/IOculusXRMovementModule.h b/Plugins/MetaXR/Source/OculusXRMovement/Public/IOculusXRMovementModule.h deleted file mode 100644 index 928d5cd..0000000 --- a/Plugins/MetaXR/Source/OculusXRMovement/Public/IOculusXRMovementModule.h +++ /dev/null @@ -1,59 +0,0 @@ -// Copyright (c) Meta Platforms, Inc. and affiliates. - -#pragma once - -#include "Modules/ModuleManager.h" - -/** - * The public interface to this module. In most cases, this interface is only public to sibling modules - * within this plugin. - */ -class IOculusXRMovementModule : public IModuleInterface -{ - -public: - /** - * Singleton-like access to this module's interface. This is just for convenience! - * Beware of calling this during the shutdown phase, though. Your module might have been unloaded already. - * - * @return Returns singleton instance, loading the module on demand if needed - */ - static inline IOculusXRMovementModule& Get() - { - return FModuleManager::GetModuleChecked("OculusXRMovement"); - } - - /** - * Checks to see if this module is loaded and ready. It is only valid to call Get() if IsAvailable() returns true. - * - * @return True if the module is loaded and ready to use - */ - static inline bool IsAvailable() - { - return FModuleManager::Get().IsModuleLoaded("OculusXRMovement"); - } - - /** - * Returns the LiveLinkSource associated with this IOculusXRMovementModule. - * - * @return Shared pointer to the Meta MovementSDK source. - */ - virtual TSharedPtr GetLiveLinkSource() = 0; - - /** - * Checks if the LiveLinkSource has been created. - * - * @return True if the LiveLinkSource has been created with GetLiveLinkSource or AddLiveLinkSource. - */ - virtual bool IsLiveLinkSourceValid() const = 0; - - /** - * Make sure Meta MovementSDK Live Link source exist. - */ - virtual void AddLiveLinkSource() = 0; - - /** - * Destroy Meta MovementSDK Live Link source. - */ - virtual void RemoveLiveLinkSource() = 0; -}; diff --git a/Plugins/MetaXR/Source/OculusXRMovement/Public/OculusXRAnimCurveMapping.h b/Plugins/MetaXR/Source/OculusXRMovement/Public/OculusXRAnimCurveMapping.h deleted file mode 100644 index 79ba0a2..0000000 --- a/Plugins/MetaXR/Source/OculusXRMovement/Public/OculusXRAnimCurveMapping.h +++ /dev/null @@ -1,31 +0,0 @@ -// Copyright (c) Meta Platforms, Inc. and affiliates. - -#pragma once - -#include "CoreMinimal.h" -#include "Animation/AnimTypes.h" -#include "LiveLinkRetargetAsset.h" -#include "Containers/StaticArray.h" -#include "OculusXRMovementTypes.h" -#include "Misc/EngineVersionComparison.h" - -#include "OculusXRAnimCurveMapping.generated.h" - -USTRUCT(BlueprintType) -struct OCULUSXRMOVEMENT_API FOculusXRAnimCurveMapping -{ - GENERATED_BODY() - - FOculusXRAnimCurveMapping(){}; - - FOculusXRAnimCurveMapping(const std::initializer_list CurveNamesList) - : CurveNames(CurveNamesList) - { - } - - /** - * Skeleton's animation curve names - */ - UPROPERTY(EditAnywhere, Category = "OculusXR|Movement") - TArray CurveNames; -}; diff --git a/Plugins/MetaXR/Source/OculusXRMovement/Public/OculusXRBodyTrackingComponent.h b/Plugins/MetaXR/Source/OculusXRMovement/Public/OculusXRBodyTrackingComponent.h deleted file mode 100644 index a3a2b69..0000000 --- a/Plugins/MetaXR/Source/OculusXRMovement/Public/OculusXRBodyTrackingComponent.h +++ /dev/null @@ -1,69 +0,0 @@ -// Copyright (c) Meta Platforms, Inc. and affiliates. - -#pragma once - -#include "CoreMinimal.h" -#include "Components/PoseableMeshComponent.h" - -#include "OculusXRMovementTypes.h" - -#include "OculusXRBodyTrackingComponent.generated.h" - -UENUM(BlueprintType) -enum class EOculusXRBodyTrackingMode : uint8 -{ - PositionAndRotation, - RotationOnly, - NoTracking -}; - -UCLASS(Blueprintable, meta = (BlueprintSpawnableComponent, DisplayName = "OculusXR Body Tracking Component"), ClassGroup = OculusXRHMD) -class OCULUSXRMOVEMENT_API UOculusXRBodyTrackingComponent : public UPoseableMeshComponent -{ - GENERATED_BODY() -public: - UOculusXRBodyTrackingComponent(); - - virtual void BeginPlay() override; - virtual void EndPlay(const EEndPlayReason::Type EndPlayReason) override; - virtual void TickComponent(float DeltaTime, enum ELevelTick TickType, FActorComponentTickFunction* ThisTickFunction) override; - - /** - * Restore all bones to their initial transforms - */ - UFUNCTION(BlueprintCallable, Category = "OculusXR|Movement") - void ResetAllBoneTransforms(); - - /** - * How are the results of body tracking applied to the mesh. - */ - UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "OculusXR|Movement") - EOculusXRBodyTrackingMode BodyTrackingMode; - - /** - * The bone name associated with each bone ID. - */ - UPROPERTY(EditAnywhere, BlueprintReadOnly, Category = "OculusXR|Movement") - TMap BoneNames; - - /** - * Do not apply body state to bones if confidence is lower than this value. Confidence is in range [0,1]. - */ - UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "OculusXR|Movement", meta = (ClampMin = "0", ClampMax = "1", UIMin = "0", UIMax = "1")) - float ConfidenceThreshold; - -private: - bool InitializeBodyBones(); - - // One meter in unreal world units. - float WorldToMeters; - - // The index of each mapped bone after the discovery and association of bone names. - TMap MappedBoneIndices; - - // Saved body state. - FOculusXRBodyState BodyState; - - // Stop the tracker just once. - static int TrackingInstanceCount; -}; diff --git a/Plugins/MetaXR/Source/OculusXRMovement/Public/OculusXREyeTrackingComponent.h b/Plugins/MetaXR/Source/OculusXRMovement/Public/OculusXREyeTrackingComponent.h deleted file mode 100644 index 1001b34..0000000 --- a/Plugins/MetaXR/Source/OculusXRMovement/Public/OculusXREyeTrackingComponent.h +++ /dev/null @@ -1,99 +0,0 @@ -// Copyright (c) Meta Platforms, Inc. and affiliates. - -#pragma once - -#include "CoreMinimal.h" -#include "Components/ActorComponent.h" -#include "Components/PoseableMeshComponent.h" - -#include "OculusXRMovementTypes.h" - -#include "OculusXREyeTrackingComponent.generated.h" - -struct FOculusXREyeTrackingData -{ -public: - FOculusXREyeTrackingData() - : EyeIsMapped(false) - , MappedBoneName(NAME_None) - { - } - - bool EyeIsMapped; - FName MappedBoneName; - FQuat InitialRotation; -}; - -UCLASS(Blueprintable, meta = (BlueprintSpawnableComponent, DisplayName = "OculusXR Eye Tracking Component"), ClassGroup = OculusXRHMD) -class OCULUSXRMOVEMENT_API UOculusXREyeTrackingComponent : public UActorComponent -{ - GENERATED_BODY() -public: - UOculusXREyeTrackingComponent(); - - virtual void BeginPlay() override; - virtual void EndPlay(const EEndPlayReason::Type EndPlayReason) override; - virtual void TickComponent(float DeltaTime, enum ELevelTick TickType, FActorComponentTickFunction* ThisTickFunction) override; - - /** - * Reset the rotation values of the eyes to their initial rotation - */ - UFUNCTION(BlueprintCallable, Category = "Oculus|Movement") - void ClearRotationValues(); - - /** - * The name of the poseable mesh component that this component targets for eyes glazes movement. - * This must be the name of a component on this actor. - */ - UPROPERTY(EditAnywhere, BlueprintReadOnly, Category = "OculusXR|Movement") - FName TargetMeshComponentName; - - /** - * The map of eye to mesh bone that this component supports. - * Names are validated on (@see BeginPlay) so only valid bone names will be targeted. - */ - UPROPERTY(EditAnywhere, BlueprintReadOnly, Category = "OculusXR|Movement") - TMap EyeToBone; - - /** - * Update the target mesh position when eye state changes - */ - UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "OculusXR|Movement") - bool bUpdatePosition; - - /** - * Update the target mesh rotation when eye state changes - */ - UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "OculusXR|Movement") - bool bUpdateRotation; - - /** - * Do not accept an eye gaze state if confidence is lower than this value. Confidence is in range [0,1]. - */ - UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "OculusXR|Movement") - float ConfidenceThreshold; - - /** - * Bypass eye gaze state validity. - * - * @Note: It doesn't check the confidence (@see ConfidenceThreshold). The eye gaze state can be marked as invalid. This flag bypass that state flag. - */ - UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "OculusXR|Movement") - bool bAcceptInvalid; - -private: - bool InitializeEyes(); - - // One meter in unreal world units. - float WorldToMeters; - - // Per eye, eye tracking data - TStaticArray(EOculusXREye::COUNT)> PerEyeData; - - // The mesh component targeted for eyes - UPROPERTY() - UPoseableMeshComponent* TargetPoseableMeshComponent; - - // Stop the tracker just once. - static int TrackingInstanceCount; -}; diff --git a/Plugins/MetaXR/Source/OculusXRMovement/Public/OculusXRFaceTrackingComponent.h b/Plugins/MetaXR/Source/OculusXRMovement/Public/OculusXRFaceTrackingComponent.h deleted file mode 100644 index bfb78a7..0000000 --- a/Plugins/MetaXR/Source/OculusXRMovement/Public/OculusXRFaceTrackingComponent.h +++ /dev/null @@ -1,104 +0,0 @@ -// Copyright (c) Meta Platforms, Inc. and affiliates. - -#pragma once - -#include "CoreMinimal.h" -#include "Components/SkeletalMeshComponent.h" -#include "OculusXRMorphTargetsController.h" -#include "OculusXRMovementTypes.h" - -#include "OculusXRFaceTrackingComponent.generated.h" - -UCLASS(Blueprintable, meta = (BlueprintSpawnableComponent, DisplayName = "OculusXR Face Tracking Component"), ClassGroup = OculusXRHMD) -class OCULUSXRMOVEMENT_API UOculusXRFaceTrackingComponent : public UActorComponent -{ - GENERATED_BODY() -public: - UOculusXRFaceTrackingComponent(); - - virtual void BeginPlay() override; - virtual void EndPlay(const EEndPlayReason::Type EndPlayReason) override; - virtual void TickComponent(float DeltaTime, enum ELevelTick TickType, FActorComponentTickFunction* ThisTickFunction) override; - - /** - * Set face expression value with expression key and value(0-1). - * - * @param Expression : The expression key that will be modified. - * @param Value : The new value to assign to the expression, 0 will remove all changes. - */ - UFUNCTION(BlueprintCallable, Category = "Components|OculusXRFaceTracking", meta = (UnsafeDuringActorConstruction = "true")) - void SetExpressionValue(EOculusXRFaceExpression Expression, float Value); - - /** - * Get a face expression value given an expression key. - * - * @param Expression : The expression key that will be queried. - */ - UFUNCTION(BlueprintCallable, Category = "Components|OculusXRFaceTracking") - float GetExpressionValue(EOculusXRFaceExpression Expression) const; - - /** - * Clears all face expression values. - */ - UFUNCTION(BlueprintCallable, Category = "Components|OculusXRFaceTracking") - void ClearExpressionValues(); - - /** - * The name of the skinned mesh component that this component targets for facial expression. - * This must be the name of a component on this actor. - */ - UPROPERTY(EditAnywhere, BlueprintReadOnly, Category = "OculusXR|Movement") - FName TargetMeshComponentName; - - /** - * If the face data is invalid for at least this or longer than this time then all face blendshapes/morph targets are reset to zero. - */ - UPROPERTY(EditAnywhere, BlueprintReadOnly, Category = "OculusXR|Movement") - float InvalidFaceDataResetTime; - - /** - * The list of expressions that this component supports. - * Names are validated on startup so only valid morph targets on the skeletal mesh will be targeted. - */ - UPROPERTY(EditAnywhere, BlueprintReadOnly, Category = "OculusXR|Movement") - TMap ExpressionNames; - - /** - * An array of optional expression modifiers that can be applied. - */ - UPROPERTY(EditAnywhere, BlueprintReadOnly, Category = "OculusXR|Movement") - TArray ExpressionModifiers; - - /** - * This flag determines if the face should be updated or not during the components tick. - */ - UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "OculusXR|Movement") - bool bUpdateFace; - - /** - * This flag determines if the face should be modified with Expression Modifiers or not during the components tick. - */ - UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "OculusXR|Movement") - bool bUseModifiers; - -private: - bool InitializeFaceTracking(); - - // The mesh component targeted for expressions - UPROPERTY() - USkinnedMeshComponent* TargetMeshComponent; - - // Which mapped expressions are valid - TStaticArray(EOculusXRFaceExpression::COUNT)> ExpressionValid; - - // Morph targets controller - FOculusXRMorphTargetsController MorphTargets; - - FOculusXRFaceState FaceState; - - // Timer that counts up until we reset morph curves if we've failed to get face state - float InvalidFaceStateTimer; - - // Stop the tracker just once. - static int TrackingInstanceCount; -}; diff --git a/Plugins/MetaXR/Source/OculusXRMovement/Public/OculusXRLiveLinkRetargetBodyAsset.h b/Plugins/MetaXR/Source/OculusXRMovement/Public/OculusXRLiveLinkRetargetBodyAsset.h deleted file mode 100644 index 58591f9..0000000 --- a/Plugins/MetaXR/Source/OculusXRMovement/Public/OculusXRLiveLinkRetargetBodyAsset.h +++ /dev/null @@ -1,143 +0,0 @@ -// Copyright (c) Meta Platforms, Inc. and affiliates. - -#pragma once - -#include "CoreMinimal.h" -#include "LiveLinkRetargetAsset.h" -#include "OculusXRMovementTypes.h" -#include "Containers/StaticArray.h" -#include "BonePose.h" - -#include "OculusXRLiveLinkRetargetBodyAsset.generated.h" - -UENUM(BlueprintType, meta = (DisplayName = "Axis")) -enum class EOculusXRAxis : uint8 -{ - X = 0 UMETA(DisplayName = "X"), - Y = 1 UMETA(DisplayName = "Y"), - Z = 2 UMETA(DisplayName = "Z"), - NegativeX = 3 UMETA(DisplayName = "-X"), - NegativeY = 4 UMETA(DisplayName = "-Y"), - NegativeZ = 5 UMETA(DisplayName = "-Z"), -}; - -UENUM(BlueprintType, meta = (DisplayName = "Retargeting mode")) -enum class EOculusXRRetargetingMode : uint8 -{ - Full UMETA(DisplayName = "Rotations and positions"), - Rotations UMETA(DisplayName = "Only rotations"), - RotationsPlusRoot UMETA(DisplayName = "Rotations and root position"), - RotationsPlusHips UMETA(DisplayName = "Rotations and hips position"), - None UMETA(DisplayName = "Disabled"), -}; - -USTRUCT(BlueprintType, meta = (DisplayName = "Bone local correction")) -struct OCULUSXRMOVEMENT_API FOculusXRBoneCorrection -{ - GENERATED_BODY() - - FOculusXRBoneCorrection() - : PositionOffset(FVector::ZeroVector), RotationOffset(FRotator::ZeroRotator){}; - - /** - * Position offset in local space. - */ - UPROPERTY(EditAnywhere, Category = "OculusXR|Movement") - FVector PositionOffset; - - /** - * Rotation offset in local space. - */ - UPROPERTY(EditAnywhere, Category = "OculusXR|Movement") - FRotator RotationOffset; -}; - -USTRUCT(BlueprintType, meta = (DisplayName = "Correction applied to set of bones")) -struct OCULUSXRMOVEMENT_API FOculusXRBoneCorrectionSet -{ - GENERATED_BODY() - - FOculusXRBoneCorrectionSet(){}; - - /** - * Set of bones to which the correction will be applied. - */ - UPROPERTY(EditAnywhere, Category = "OculusXR|Movement") - TSet Bones; - - /** - * The correction for this set. - */ - UPROPERTY(EditAnywhere, Category = "OculusXR|Movement") - FOculusXRBoneCorrection BoneCorrection; -}; - -UCLASS(Blueprintable, meta = (DisplayName = "MetaXR MovementSDK LiveLink retarget body asset"), ClassGroup = OculusXRHMD) -class OCULUSXRMOVEMENT_API UOculusXRLiveLinkRetargetBodyAsset : public ULiveLinkRetargetAsset -{ - GENERATED_UCLASS_BODY() - - virtual void Initialize() override; - virtual void BuildPoseFromAnimationData(float DeltaTime, const FLiveLinkSkeletonStaticData* InSkeletonData, const FLiveLinkAnimationFrameData* InFrameData, FCompactPose& OutPose) override; - - /** - * Remapping from bone ID to target skeleton's bone name. - */ - UPROPERTY(EditDefaultsOnly, Category = "OculusXR|Movement") - TMap BoneRemapping; - - /** - * Correction applied to all bones. - */ - UPROPERTY(EditDefaultsOnly, Category = "OculusXR|Movement") - FOculusXRBoneCorrection GlobalCorrection; - - /** - * Groups of local bone corrections. - * - * Order matters. A bone can be corrected multiple times. - * Corrections will be applied with the same order as in this array. - */ - UPROPERTY(EditDefaultsOnly, Category = "OculusXR|Movement") - TArray LocalCorrections; - - /** - * Switch between retargeting modes. - */ - UPROPERTY(EditAnywhere, Category = "OculusXR|Movement") - EOculusXRRetargetingMode RetargetingMode; - - /** - * Forward vector axis is the direction towards which the target mesh is oriented. - */ - UPROPERTY(EditDefaultsOnly, Category = "OculusXR|Movement") - EOculusXRAxis ForwardMesh; - -private: - // Scale the source tracking positions. This will be initialized with WorldToMeters value. - float Scale; - - // Movement tracking is oriented towards X axis. - const EOculusXRAxis ForwardTracking{ EOculusXRAxis::X }; - - // Transform from tracking to mesh space. - FTransform TrackingSpaceToMeshSpace; - - // Correction applied to all bones - FTransform GlobalBoneCorrection; - - // Correction applied per bone - TStaticArray(EOculusXRBoneID::COUNT)> LocalBoneCorrections; - - // Target skeleton's bone name per bone id - TStaticArray(EOculusXRBoneID::COUNT)> BoneNames; - - // Latest bone container serial number - uint16 LastBoneContainerSerialNumber; - - // Compact pose indices per bone id - TStaticArray(EOculusXRBoneID::COUNT)> LastSkeletonBoneRemapping{ InPlace, FCompactPoseBoneIndex(INDEX_NONE) }; - - // Recalculate skeleton dependent mappings - void OnBoneContainerChanged(const FBoneContainer& BoneContainer); -}; diff --git a/Plugins/MetaXR/Source/OculusXRMovement/Public/OculusXRLiveLinkRetargetFaceAsset.h b/Plugins/MetaXR/Source/OculusXRMovement/Public/OculusXRLiveLinkRetargetFaceAsset.h deleted file mode 100644 index b93bdaa..0000000 --- a/Plugins/MetaXR/Source/OculusXRMovement/Public/OculusXRLiveLinkRetargetFaceAsset.h +++ /dev/null @@ -1,42 +0,0 @@ -// Copyright (c) Meta Platforms, Inc. and affiliates. - -#pragma once - -#include "CoreMinimal.h" -#include "Animation/AnimTypes.h" -#include "LiveLinkRetargetAsset.h" -#include "Containers/StaticArray.h" -#include "OculusXRMovementTypes.h" -#include "Misc/EngineVersionComparison.h" -#include "OculusXRAnimCurveMapping.h" - -#include "OculusXRLiveLinkRetargetFaceAsset.generated.h" - -UCLASS(Blueprintable, meta = (DisplayName = "MetaXR MovementSDK LiveLink retarget face asset"), ClassGroup = OculusXRHMD) -class OCULUSXRMOVEMENT_API UOculusXRLiveLinkRetargetFaceAsset : public ULiveLinkRetargetAsset -{ - GENERATED_UCLASS_BODY() - - virtual void Initialize() override; - virtual void BuildPoseAndCurveFromBaseData(float DeltaTime, const FLiveLinkBaseStaticData* InBaseStaticData, const FLiveLinkBaseFrameData* InBaseFrameData, FCompactPose& OutPose, FBlendedCurve& OutCurve) override; - - /** - * Map face expression to Skeleton's animation curve mapping names. - */ - UPROPERTY(EditDefaultsOnly, Category = "OculusXR|Movement") - TMap CurveRemapping; - -private: - // Latest skeleton used to build pose - FGuid LastSkeletonGuid; - - // Remapping used for latest used skeleton -#if UE_VERSION_OLDER_THAN(5, 3, 0) - TStaticArray, static_cast(EOculusXRFaceExpression::COUNT)> RemappingForLastSkeleton; -#else - TStaticArray, static_cast(EOculusXRFaceExpression::COUNT)> RemappingForLastSkeleton; -#endif - - // Recalculate skeleton dependent mappings - void OnSkeletonChanged(const USkeleton* Skeleton); -}; diff --git a/Plugins/MetaXR/Source/OculusXRMovement/Public/OculusXRLiveLinkRetargetFaceVisemesAsset.h b/Plugins/MetaXR/Source/OculusXRMovement/Public/OculusXRLiveLinkRetargetFaceVisemesAsset.h deleted file mode 100644 index e3e9311..0000000 --- a/Plugins/MetaXR/Source/OculusXRMovement/Public/OculusXRLiveLinkRetargetFaceVisemesAsset.h +++ /dev/null @@ -1,42 +0,0 @@ -// Copyright (c) Meta Platforms, Inc. and affiliates. - -#pragma once - -#include "CoreMinimal.h" -#include "Animation/AnimTypes.h" -#include "LiveLinkRetargetAsset.h" -#include "Containers/StaticArray.h" -#include "OculusXRMovementTypes.h" -#include "Misc/EngineVersionComparison.h" -#include "OculusXRAnimCurveMapping.h" - -#include "OculusXRLiveLinkRetargetFaceVisemesAsset.generated.h" - -UCLASS(Blueprintable, meta = (DisplayName = "MetaXR MovementSDK LiveLink retarget face visemes asset"), ClassGroup = OculusXRHMD) -class OCULUSXRMOVEMENT_API UOculusXRLiveLinkRetargetFaceVisemesAsset : public ULiveLinkRetargetAsset -{ - GENERATED_UCLASS_BODY() - - virtual void Initialize() override; - virtual void BuildPoseAndCurveFromBaseData(float DeltaTime, const FLiveLinkBaseStaticData* InBaseStaticData, const FLiveLinkBaseFrameData* InBaseFrameData, FCompactPose& OutPose, FBlendedCurve& OutCurve) override; - - /** - * Map face expression to Skeleton's animation curve mapping names. - */ - UPROPERTY(EditDefaultsOnly, Category = "OculusXR|Movement") - TMap CurveRemapping; - -private: - // Latest skeleton used to build pose - FGuid LastSkeletonGuid; - - // Remapping used for latest used skeleton -#if UE_VERSION_OLDER_THAN(5, 3, 0) - TStaticArray, static_cast(EOculusXRFaceVisemesExpression::COUNT)> RemappingForLastSkeleton; -#else - TStaticArray, static_cast(EOculusXRFaceVisemesExpression::COUNT)> RemappingForLastSkeleton; -#endif - - // Recalculate skeleton dependent mappings - void OnSkeletonChanged(const USkeleton* Skeleton); -}; diff --git a/Plugins/MetaXR/Source/OculusXRMovement/Public/OculusXRMorphTargetsController.h b/Plugins/MetaXR/Source/OculusXRMovement/Public/OculusXRMorphTargetsController.h deleted file mode 100644 index c484a08..0000000 --- a/Plugins/MetaXR/Source/OculusXRMovement/Public/OculusXRMorphTargetsController.h +++ /dev/null @@ -1,36 +0,0 @@ -// Copyright (c) Meta Platforms, Inc. and affiliates. - -#pragma once - -#include "Components/SkinnedMeshComponent.h" - -/* - * Struct that allows applying morph targets data to an arbitrary skinned mesh component - * instead of relying on the skeletal mesh component. - * - * Usage - In a tick method of your choosing: - * 1) ResetMorphTargetCurves(Component) at the start of the update. - * 2) SetMorphTarget(...) as many times as needed based on your data set. - * 3) ApplyMorphTargets(Component) at the end of the update to apply the morph targets to the anim runtime. - */ -struct OCULUSXRMOVEMENT_API FOculusXRMorphTargetsController -{ -public: - // Clears active morph targets - void ResetMorphTargetCurves(USkinnedMeshComponent* TargetMeshComponent); - - // Will apply morph target data to the underlying runtime skeletal mesh - void ApplyMorphTargets(USkinnedMeshComponent* TargetMeshComponent); - - // Sets a specific morph target value - void SetMorphTarget(FName MorphTargetName, float Value); - - // Gets a specific morph target value - float GetMorphTarget(FName MorphTargetName) const; - - // Clears all morph target curves data - void ClearMorphTargets(); - - // List of morph targets on this controller - TMap MorphTargetCurves; -}; diff --git a/Plugins/MetaXR/Source/OculusXRMovement/Public/OculusXRMovement.h b/Plugins/MetaXR/Source/OculusXRMovement/Public/OculusXRMovement.h deleted file mode 100644 index e041964..0000000 --- a/Plugins/MetaXR/Source/OculusXRMovement/Public/OculusXRMovement.h +++ /dev/null @@ -1,44 +0,0 @@ -// Copyright (c) Meta Platforms, Inc. and affiliates. - -#pragma once - -#include "OculusXRMovementTypes.h" -#include "OculusXRMovementFunctions.h" - -struct OCULUSXRMOVEMENT_API OculusXRMovement -{ -public: - static bool GetBodyState(FOculusXRBodyState& outOculusXRBodyState, float WorldToMeters = 100.0f); - static bool IsBodyTrackingEnabled(); - static bool IsBodyTrackingSupported(); - static bool StartBodyTracking(); - static bool StopBodyTracking(); - static bool StartBodyTrackingByJointSet(EOculusXRBodyJointSet jointSet); - static bool RequestBodyTrackingFidelity(EOculusXRBodyTrackingFidelity fidelity); - static bool ResetBodyTrackingCalibration(); - static bool SuggestBodyTrackingCalibrationOverride(float height); - static bool GetBodySkeleton(FOculusXRBodySkeleton& outOculusXRBodyState, float WorldToMeters = 100.0f); - - static bool GetFaceState(FOculusXRFaceState& outOculusXRFaceState); - static bool IsFaceTrackingEnabled(); - static bool IsFaceTrackingSupported(); - static bool StartFaceTracking(); - static bool StopFaceTracking(); - - static bool IsFaceTrackingVisemesEnabled(); - static bool IsFaceTrackingVisemesSupported(); - static bool SetFaceTrackingVisemesEnabled(bool enabled); - static bool GetFaceVisemesState(FOculusXRFaceVisemesState& outOculusXRFaceVisemesState); - - static bool GetEyeGazesState(FOculusXREyeGazesState& outOculusXREyeGazesState, float WorldToMeters = 100.0f); - static bool IsEyeTrackingEnabled(); - static bool IsEyeTrackingSupported(); - static bool StartEyeTracking(); - static bool StopEyeTracking(); - - static bool IsFullBodyTrackingEnabled(); - -private: - static TSharedPtr GetOculusXRMovementFunctionsImpl(); - static TSharedPtr MovementFunctionsImpl; -}; diff --git a/Plugins/MetaXR/Source/OculusXRMovement/Public/OculusXRMovementFunctionLibrary.h b/Plugins/MetaXR/Source/OculusXRMovement/Public/OculusXRMovementFunctionLibrary.h deleted file mode 100644 index 5c48375..0000000 --- a/Plugins/MetaXR/Source/OculusXRMovement/Public/OculusXRMovementFunctionLibrary.h +++ /dev/null @@ -1,83 +0,0 @@ -// Copyright (c) Meta Platforms, Inc. and affiliates. - -#pragma once - -#include "OculusXRMovementTypes.h" -#include "Kismet/BlueprintFunctionLibrary.h" - -#include "OculusXRMovementFunctionLibrary.generated.h" - -UCLASS() -class OCULUSXRMOVEMENT_API UOculusXRMovementFunctionLibrary : public UBlueprintFunctionLibrary -{ - GENERATED_BODY() -public: - UFUNCTION(BlueprintCallable, Category = "OculusXR|Body") - static bool TryGetBodyState(FOculusXRBodyState& outBodyState, float WorldToMeters = 100.0f); - - UFUNCTION(BlueprintCallable, Category = "OculusXR|Body") - static bool IsBodyTrackingEnabled(); - - UFUNCTION(BlueprintCallable, Category = "OculusXR|Body") - static bool IsBodyTrackingSupported(); - - UFUNCTION(BlueprintCallable, Category = "OculusXR|Body") - static bool RequestBodyTrackingFidelity(EOculusXRBodyTrackingFidelity fidelity); - - UFUNCTION(BlueprintCallable, Category = "OculusXR|Body") - static bool ResetBodyTrackingCalibration(); - - UFUNCTION(BlueprintCallable, Category = "OculusXR|Body") - static bool SuggestBodyTrackingCalibrationOverride(float height); - - UFUNCTION(BlueprintCallable, Category = "OculusXR|Body") - static bool StartBodyTrackingByJointSet(EOculusXRBodyJointSet jointSet); - - UFUNCTION(BlueprintCallable, meta = (DeprecatedFunction, DeprecationMessage = "StartBodyTracking is deprecated, use StartBodyTrackingByJointSet."), Category = "OculusXR|Body") - static bool StartBodyTracking(); - - UFUNCTION(BlueprintCallable, Category = "OculusXR|Body") - static bool StopBodyTracking(); - - UFUNCTION(BlueprintCallable, Category = "OculusXR|Face") - static bool TryGetFaceState(FOculusXRFaceState& outFaceState); - - UFUNCTION(BlueprintCallable, Category = "OculusXR|Face") - static bool IsFaceTrackingVisemesSupported(); - - UFUNCTION(BlueprintCallable, Category = "OculusXR|Face") - static bool IsFaceTrackingVisemesEnabled(); - - UFUNCTION(BlueprintCallable, Category = "OculusXR|Face") - static bool SetFaceTrackingVisemesEnabled(bool faceTrackingVisemesEnabled); - - UFUNCTION(BlueprintCallable, Category = "OculusXR|Face") - static bool TryGetFaceVisemesState(FOculusXRFaceVisemesState& outFaceVisemesState); - - UFUNCTION(BlueprintCallable, Category = "OculusXR|Face") - static bool IsFaceTrackingEnabled(); - - UFUNCTION(BlueprintCallable, Category = "OculusXR|Face") - static bool IsFaceTrackingSupported(); - - UFUNCTION(BlueprintCallable, Category = "OculusXR|Face") - static bool StartFaceTracking(); - - UFUNCTION(BlueprintCallable, Category = "OculusXR|Face") - static bool StopFaceTracking(); - - UFUNCTION(BlueprintCallable, Category = "OculusXR|Eyes") - static bool TryGetEyeGazesState(FOculusXREyeGazesState& outEyeGazesState, float WorldToMeters = 100.0f); - - UFUNCTION(BlueprintCallable, Category = "OculusXR|Eyes") - static bool IsEyeTrackingEnabled(); - - UFUNCTION(BlueprintCallable, Category = "OculusXR|Eyes") - static bool IsEyeTrackingSupported(); - - UFUNCTION(BlueprintCallable, Category = "OculusXR|Eyes") - static bool StartEyeTracking(); - - UFUNCTION(BlueprintCallable, Category = "OculusXR|Eyes") - static bool StopEyeTracking(); -}; diff --git a/Plugins/MetaXR/Source/OculusXRMovement/Public/OculusXRMovementFunctions.h b/Plugins/MetaXR/Source/OculusXRMovement/Public/OculusXRMovementFunctions.h deleted file mode 100644 index c2e042d..0000000 --- a/Plugins/MetaXR/Source/OculusXRMovement/Public/OculusXRMovementFunctions.h +++ /dev/null @@ -1,39 +0,0 @@ -// Copyright (c) Meta Platforms, Inc. and affiliates. - -#pragma once - -#include "OculusXRMovementTypes.h" - -class OCULUSXRMOVEMENT_API IOculusXRMovementFunctions -{ -public: - virtual bool GetBodyState(FOculusXRBodyState& outOculusXRBodyState, float WorldToMeters) = 0; - virtual bool IsBodyTrackingEnabled() = 0; - virtual bool IsBodyTrackingSupported() = 0; - virtual bool StartBodyTracking() = 0; - virtual bool StopBodyTracking() = 0; - virtual bool StartBodyTrackingByJointSet(EOculusXRBodyJointSet jointSet) = 0; - virtual bool RequestBodyTrackingFidelity(EOculusXRBodyTrackingFidelity fidelity) = 0; - virtual bool ResetBodyTrackingCalibration() = 0; - virtual bool SuggestBodyTrackingCalibrationOverride(float height) = 0; - virtual bool GetBodySkeleton(FOculusXRBodySkeleton& outOculusXRBodyState, float WorldToMeters) = 0; - - virtual bool GetFaceState(FOculusXRFaceState& outOculusXRFaceState) = 0; - virtual bool IsFaceTrackingEnabled() = 0; - virtual bool IsFaceTrackingSupported() = 0; - virtual bool StartFaceTracking() = 0; - virtual bool StopFaceTracking() = 0; - - virtual bool SetFaceTrackingVisemesEnabled(bool enabled) = 0; - virtual bool GetFaceVisemesState(FOculusXRFaceVisemesState& outOculusXRFaceVisemesState) = 0; - virtual bool IsFaceTrackingVisemesEnabled() = 0; - virtual bool IsFaceTrackingVisemesSupported() = 0; - - virtual bool GetEyeGazesState(FOculusXREyeGazesState& outOculusXREyeGazesState, float WorldToMeters) = 0; - virtual bool IsEyeTrackingEnabled() = 0; - virtual bool IsEyeTrackingSupported() = 0; - virtual bool StartEyeTracking() = 0; - virtual bool StopEyeTracking() = 0; - - virtual bool IsFullBodyTrackingEnabled() = 0; -}; diff --git a/Plugins/MetaXR/Source/OculusXRMovement/Public/OculusXRMovementHelpers.h b/Plugins/MetaXR/Source/OculusXRMovement/Public/OculusXRMovementHelpers.h deleted file mode 100644 index e482d5e..0000000 --- a/Plugins/MetaXR/Source/OculusXRMovement/Public/OculusXRMovementHelpers.h +++ /dev/null @@ -1,24 +0,0 @@ -// Copyright (c) Meta Platforms, Inc. and affiliates. - -#pragma once - -namespace OculusXRUtility -{ - template - T* FindComponentByName(AActor* Actor, const FName& ComponentName) - { - if (IsValid(Actor) && (ComponentName != NAME_None)) - { - TArray ComponentsOfType; - Actor->GetComponents(ComponentsOfType); - T** FoundComponent = ComponentsOfType.FindByPredicate([Name = ComponentName.ToString()](T* Component) { return Component->GetName().Equals(Name); }); - - if (FoundComponent != nullptr) - { - return *FoundComponent; - } - } - - return nullptr; - } -} // namespace OculusXRUtility diff --git a/Plugins/MetaXR/Source/OculusXRMovement/Public/OculusXRMovementTypes.h b/Plugins/MetaXR/Source/OculusXRMovement/Public/OculusXRMovementTypes.h deleted file mode 100644 index 94fa71c..0000000 --- a/Plugins/MetaXR/Source/OculusXRMovement/Public/OculusXRMovementTypes.h +++ /dev/null @@ -1,429 +0,0 @@ -// Copyright (c) Meta Platforms, Inc. and affiliates. - -#pragma once - -#include "CoreMinimal.h" -#include "OculusXRMovementTypes.generated.h" - -namespace XRSpaceFlags -{ - static const uint64 XR_SPACE_LOCATION_ORIENTATION_VALID_BIT = 0x00000001; - static const uint64 XR_SPACE_LOCATION_POSITION_VALID_BIT = 0x00000002; - static const uint64 XR_SPACE_LOCATION_ORIENTATION_TRACKED_BIT = 0x00000004; - static const uint64 XR_SPACE_LOCATION_POSITION_TRACKED_BIT = 0x00000008; -} // namespace XRSpaceFlags - -UENUM(BlueprintType) -enum class EOculusXRBodyJointSet : uint8 -{ - UpperBody = 0, - FullBody = 1 -}; - -UENUM(BlueprintType) -enum class EOculusXRBodyTrackingFidelity : uint8 -{ - Unset = 0 UMETA(Hidden), - Low = 1, - High = 2, -}; - -UENUM(BlueprintType) -enum class EOculusXRBoneID : uint8 -{ - BodyRoot = 0, - BodyHips = 1, - BodySpineLower = 2, - BodySpineMiddle = 3, - BodySpineUpper = 4, - BodyChest = 5, - BodyNeck = 6, - BodyHead = 7, - BodyLeftShoulder = 8, - BodyLeftScapula = 9, - BodyLeftArmUpper = 10, - BodyLeftArmLower = 11, - BodyLeftHandWristTwist = 12, - BodyRightShoulder = 13, - BodyRightScapula = 14, - BodyRightArmUpper = 15, - BodyRightArmLower = 16, - BodyRightHandWristTwist = 17, - BodyLeftHandPalm = 18, - BodyLeftHandWrist = 19, - BodyLeftHandThumbMetacarpal = 20, - BodyLeftHandThumbProximal = 21, - BodyLeftHandThumbDistal = 22, - BodyLeftHandThumbTip = 23, - BodyLeftHandIndexMetacarpal = 24, - BodyLeftHandIndexProximal = 25, - BodyLeftHandIndexIntermediate = 26, - BodyLeftHandIndexDistal = 27, - BodyLeftHandIndexTip = 28, - BodyLeftHandMiddleMetacarpal = 29, - BodyLeftHandMiddleProximal = 30, - BodyLeftHandMiddleIntermediate = 31, - BodyLeftHandMiddleDistal = 32, - BodyLeftHandMiddleTip = 33, - BodyLeftHandRingMetacarpal = 34, - BodyLeftHandRingProximal = 35, - BodyLeftHandRingIntermediate = 36, - BodyLeftHandRingDistal = 37, - BodyLeftHandRingTip = 38, - BodyLeftHandLittleMetacarpal = 39, - BodyLeftHandLittleProximal = 40, - BodyLeftHandLittleIntermediate = 41, - BodyLeftHandLittleDistal = 42, - BodyLeftHandLittleTip = 43, - BodyRightHandPalm = 44, - BodyRightHandWrist = 45, - BodyRightHandThumbMetacarpal = 46, - BodyRightHandThumbProximal = 47, - BodyRightHandThumbDistal = 48, - BodyRightHandThumbTip = 49, - BodyRightHandIndexMetacarpal = 50, - BodyRightHandIndexProximal = 51, - BodyRightHandIndexIntermediate = 52, - BodyRightHandIndexDistal = 53, - BodyRightHandIndexTip = 54, - BodyRightHandMiddleMetacarpal = 55, - BodyRightHandMiddleProximal = 56, - BodyRightHandMiddleIntermediate = 57, - BodyRightHandMiddleDistal = 58, - BodyRightHandMiddleTip = 59, - BodyRightHandRingMetacarpal = 60, - BodyRightHandRingProximal = 61, - BodyRightHandRingIntermediate = 62, - BodyRightHandRingDistal = 63, - BodyRightHandRingTip = 64, - BodyRightHandLittleMetacarpal = 65, - BodyRightHandLittleProximal = 66, - BodyRightHandLittleIntermediate = 67, - BodyRightHandLittleDistal = 68, - BodyRightHandLittleTip = 69, - BodyLeftUpperLeg = 70, - BodyLeftLowerLeg = 71, - BodyLeftFootAnkleTwist = 72, - BodyLeftFootAnkle = 73, - BodyLeftFootSubtalar = 74, - BodyLeftFootTransverse = 75, - BodyLeftFootBall = 76, - BodyRightUpperLeg = 77, - BodyRightLowerLeg = 78, - BodyRightFootAnkleTwist = 79, - BodyRightFootAnkle = 80, - BodyRightFootSubtalar = 81, - BodyRightFootTransverse = 82, - BodyRightFootBall = 83, - COUNT = 84 UMETA(Hidden), - None = 255 UMETA(Hidden), -}; - -USTRUCT(BlueprintType) -struct OCULUSXRMOVEMENT_API FOculusXRBodyJoint -{ - GENERATED_BODY() -public: - FOculusXRBodyJoint(); - - uint64 LocationFlags; - - UPROPERTY(BlueprintReadOnly, Category = "OculusXR|Movement") - bool bIsValid; - - UPROPERTY(BlueprintReadOnly, Category = "OculusXR|Movement") - FRotator Orientation; - - UPROPERTY(BlueprintReadOnly, Category = "OculusXR|Movement") - FVector Position; -}; - -USTRUCT(BlueprintType) -struct OCULUSXRMOVEMENT_API FOculusXRBodyState -{ - GENERATED_BODY() -public: - FOculusXRBodyState(); - - UPROPERTY(BlueprintReadOnly, Category = "OculusXR|Movement") - bool IsActive; - - UPROPERTY(BlueprintReadOnly, Category = "OculusXR|Movement") - float Confidence; - - UPROPERTY(BlueprintReadOnly, Category = "OculusXR|Movement") - int SkeletonChangedCount; - - UPROPERTY(BlueprintReadOnly, Category = "OculusXR|Movement") - float Time; - - UPROPERTY(BlueprintReadOnly, Category = "OculusXR|Movement") - TArray Joints; -}; - -USTRUCT(BlueprintType) -struct OCULUSXRMOVEMENT_API FOculusXRBodySkeletonBone -{ - GENERATED_BODY() -public: - FOculusXRBodySkeletonBone(); - - UPROPERTY(BlueprintReadOnly, Category = "OculusXR|Movement") - FRotator Orientation; - - UPROPERTY(BlueprintReadOnly, Category = "OculusXR|Movement") - FVector Position; - - UPROPERTY(BlueprintReadOnly, Category = "OculusXR|Movement") - EOculusXRBoneID BoneId; - - UPROPERTY(BlueprintReadOnly, Category = "OculusXR|Movement") - EOculusXRBoneID ParentBoneIndex; -}; - -USTRUCT(BlueprintType) -struct OCULUSXRMOVEMENT_API FOculusXRBodySkeleton -{ - GENERATED_BODY() -public: - FOculusXRBodySkeleton(); - - UPROPERTY(BlueprintReadOnly, Category = "OculusXR|Movement") - int NumBones; - - UPROPERTY(BlueprintReadOnly, Category = "OculusXR|Movement") - TArray Bones; -}; - -USTRUCT(BlueprintType) -struct OCULUSXRMOVEMENT_API FOculusXRBodySkeletonState -{ - GENERATED_BODY() -public: - FOculusXRBodySkeletonState(); - - UPROPERTY(BlueprintReadOnly, Category = "OculusXR|Movement") - FOculusXRBodyState BodyState; - - UPROPERTY(BlueprintReadOnly, Category = "OculusXR|Movement") - FOculusXRBodySkeleton SkeletonState; -}; - -UENUM(BlueprintType) -enum class EFaceTrackingDataSource : uint8 -{ - Visual = 0 UMETA(DisplayName = "Visual"), - Audio = 1 UMETA(DisplayName = "Audio"), - MAX = 2 UMETA(Hidden), -}; - -UENUM(BlueprintType) -enum class EOculusXRFaceExpression : uint8 -{ - // Removed invalid to make this supported as a uint8 enum class - BrowLowererL = 0, - BrowLowererR = 1, - CheekPuffL = 2, - CheekPuffR = 3, - CheekRaiserL = 4, - CheekRaiserR = 5, - CheekSuckL = 6, - CheekSuckR = 7, - ChinRaiserB = 8, - ChinRaiserT = 9, - DimplerL = 10, - DimplerR = 11, - EyesClosedL = 12, - EyesClosedR = 13, - EyesLookDownL = 14, - EyesLookDownR = 15, - EyesLookLeftL = 16, - EyesLookLeftR = 17, - EyesLookRightL = 18, - EyesLookRightR = 19, - EyesLookUpL = 20, - EyesLookUpR = 21, - InnerBrowRaiserL = 22, - InnerBrowRaiserR = 23, - JawDrop = 24, - JawSidewaysLeft = 25, - JawSidewaysRight = 26, - JawThrust = 27, - LidTightenerL = 28, - LidTightenerR = 29, - LipCornerDepressorL = 30, - LipCornerDepressorR = 31, - LipCornerPullerL = 32, - LipCornerPullerR = 33, - LipFunnelerLB = 34, - LipFunnelerLT = 35, - LipFunnelerRB = 36, - LipFunnelerRT = 37, - LipPressorL = 38, - LipPressorR = 39, - LipPuckerL = 40, - LipPuckerR = 41, - LipStretcherL = 42, - LipStretcherR = 43, - LipSuckLB = 44, - LipSuckLT = 45, - LipSuckRB = 46, - LipSuckRT = 47, - LipTightenerL = 48, - LipTightenerR = 49, - LipsToward = 50, - LowerLipDepressorL = 51, - LowerLipDepressorR = 52, - MouthLeft = 53, - MouthRight = 54, - NoseWrinklerL = 55, - NoseWrinklerR = 56, - OuterBrowRaiserL = 57, - OuterBrowRaiserR = 58, - UpperLidRaiserL = 59, - UpperLidRaiserR = 60, - UpperLipRaiserL = 61, - UpperLipRaiserR = 62, - TongueTipInterdental = 63, - TongueTipAlveolar = 64, - TongueFrontDorsalPalate = 65, - TongueMidDorsalPalate = 66, - TongueBackDorsalVelar = 67, - TongueOut = 68, - TongueRetreat = 69, - COUNT = 70 UMETA(Hidden), -}; - -UENUM(BlueprintType) -enum class EOculusXRFaceConfidence : uint8 -{ - Lower = 0, - Upper = 1, - COUNT = 2, -}; - -USTRUCT(BlueprintType) -struct OCULUSXRMOVEMENT_API FOculusXRFaceState -{ - GENERATED_BODY() -public: - FOculusXRFaceState(); - - UPROPERTY(BlueprintReadOnly, Category = "OculusXR|Movement") - TArray ExpressionWeights; - - UPROPERTY(BlueprintReadOnly, Category = "OculusXR|Movement") - TArray ExpressionWeightConfidences; - - UPROPERTY(BlueprintReadOnly, Category = "OculusXR|Movement") - bool bIsValid; - - UPROPERTY(BlueprintReadOnly, Category = "OculusXR|Movement") - bool bIsEyeFollowingBlendshapesValid; - - UPROPERTY(BlueprintReadOnly, Category = "OculusXR|Movement") - float Time; - - UPROPERTY(BlueprintReadOnly, Category = "OculusXR|Movement") - EFaceTrackingDataSource DataSource; -}; - -UENUM(BlueprintType) -enum class EOculusXRFaceVisemesExpression : uint8 -{ - SIL = 0, - PP = 1, - FF = 2, - TH = 3, - DD = 4, - KK = 5, - CH = 6, - SS = 7, - NN = 8, - RR = 9, - AA = 10, - E = 11, - IH = 12, - OH = 13, - OU = 14, - COUNT = 15 UMETA(Hidden), -}; - -USTRUCT(BlueprintType) -struct OCULUSXRMOVEMENT_API FOculusXRFaceVisemesState -{ - GENERATED_BODY() -public: - FOculusXRFaceVisemesState(); - - UPROPERTY(BlueprintReadOnly, Category = "OculusXR|Movement") - bool bIsValid; - - UPROPERTY(BlueprintReadOnly, Category = "OculusXR|Movement") - float Time; - - UPROPERTY(BlueprintReadOnly, Category = "OculusXR|Movement") - TArray ExpressionVisemeWeights; -}; - -USTRUCT(BlueprintType) -struct OCULUSXRMOVEMENT_API FOculusXRFaceExpressionModifier -{ - GENERATED_BODY() -public: - FOculusXRFaceExpressionModifier(); - - UPROPERTY(EditAnywhere, Category = "OculusXR|Movement") - TArray FaceExpressions; - - UPROPERTY(EditAnywhere, Category = "OculusXR|Movement") - float MinValue; - - UPROPERTY(EditAnywhere, Category = "OculusXR|Movement") - float MaxValue; - - UPROPERTY(EditAnywhere, Category = "OculusXR|Movement") - float Multiplier; -}; - -UENUM(BlueprintType) -enum class EOculusXREye : uint8 -{ - Left = 0, - Right = 1, - COUNT = 2, -}; - -USTRUCT(BlueprintType) -struct OCULUSXRMOVEMENT_API FOculusXREyeGazeState -{ - GENERATED_BODY() -public: - FOculusXREyeGazeState(); - - UPROPERTY(BlueprintReadOnly, Category = "OculusXR|Movement") - FRotator Orientation; - - UPROPERTY(BlueprintReadOnly, Category = "OculusXR|Movement") - FVector Position; - - UPROPERTY(BlueprintReadOnly, Category = "OculusXR|Movement") - float Confidence; - - UPROPERTY(BlueprintReadOnly, Category = "OculusXR|Movement") - bool bIsValid; -}; - -USTRUCT(BlueprintType) -struct OCULUSXRMOVEMENT_API FOculusXREyeGazesState -{ - GENERATED_BODY() -public: - FOculusXREyeGazesState(); - - UPROPERTY(BlueprintReadOnly, Category = "OculusXR|Movement") - TArray EyeGazes; - - UPROPERTY(BlueprintReadOnly, Category = "OculusXR|Movement") - float Time; -}; diff --git a/Plugins/MetaXR/Source/OculusXRPassthrough/OculusXRPassthrough.Build.cs b/Plugins/MetaXR/Source/OculusXRPassthrough/OculusXRPassthrough.Build.cs deleted file mode 100644 index bd01f21..0000000 --- a/Plugins/MetaXR/Source/OculusXRPassthrough/OculusXRPassthrough.Build.cs +++ /dev/null @@ -1,90 +0,0 @@ -// @lint-ignore-every LICENSELINT -// Copyright Epic Games, Inc. All Rights Reserved. - -using System; -using System.IO; - -namespace UnrealBuildTool.Rules -{ - public class OculusXRPassthrough : ModuleRules - { - public OculusXRPassthrough(ReadOnlyTargetRules Target) : base(Target) - { - bUseUnity = true; - - PrivateDependencyModuleNames.AddRange( - new string[] - { - "Core", - "CoreUObject", - "Engine", - "ProceduralMeshComponent", - "OculusXRHMD", - "KhronosOpenXRHeaders", - "OVRPluginXR", - "RHI", - "HeadMountedDisplay", - "XRBase", - "OpenXR", - "OpenXRHMD", - "RenderCore", - }); - - PublicIncludePaths.AddRange(new string[] { - "Runtime/Engine/Classes/Components", - "Runtime/Engine/Classes/Kismet", - }); - - PrivateIncludePaths.AddRange(new string[] { - // Relative to Engine\Plugins\Runtime\Oculus\OculusVR\Source - "OculusXRHMD/Private", - }); - - PrivateIncludePathModuleNames.Add("OpenXRHMD"); - - AddEngineThirdPartyPrivateStaticDependencies(Target, "OpenXR"); - - //Needed for OpenXRHMD_Swapchain include - { - if (Target.Platform == UnrealTargetPlatform.Win64) - { - PublicDependencyModuleNames.AddRange(new string[] - { - "D3D11RHI", - "D3D12RHI" - }); - - if (!bUsePrecompiled || Target.LinkType == TargetLinkType.Monolithic) - { - PublicDependencyModuleNames.AddRange(new string[] - { - "DX11", - "DX12" - }); - } - } - - if (Target.Platform == UnrealTargetPlatform.Win64 || Target.Platform == UnrealTargetPlatform.Android) - { - PublicDependencyModuleNames.Add("OpenGLDrv"); - - if (!bUsePrecompiled || Target.LinkType == TargetLinkType.Monolithic) - { - PublicDependencyModuleNames.Add("OpenGL"); - } - } - - if (Target.Platform == UnrealTargetPlatform.Win64 || Target.Platform == UnrealTargetPlatform.Android - || Target.IsInPlatformGroup(UnrealPlatformGroup.Linux)) - { - PublicDependencyModuleNames.Add("VulkanRHI"); - - if (!bUsePrecompiled || Target.LinkType == TargetLinkType.Monolithic) - { - PublicDependencyModuleNames.Add("Vulkan"); - } - } - } - } - } -} diff --git a/Plugins/MetaXR/Source/OculusXRPassthrough/Private/OculusXRPassthroughColorLut.cpp b/Plugins/MetaXR/Source/OculusXRPassthrough/Private/OculusXRPassthroughColorLut.cpp deleted file mode 100644 index 8c01e6e..0000000 --- a/Plugins/MetaXR/Source/OculusXRPassthrough/Private/OculusXRPassthroughColorLut.cpp +++ /dev/null @@ -1,369 +0,0 @@ -// Copyright (c) Meta Platforms, Inc. and affiliates. - -#include "OculusXRPassthroughColorLut.h" -#include "OculusXRPassthroughXR.h" -#include "OculusXRPassthroughLayerComponent.h" -#include "OculusXRPassthroughXRFunctions.h" -#include "OculusXRHMDPrivate.h" -#include "OculusXRHMDModule.h" -#include "OpenXR/OculusXROpenXRUtilities.h" -#include "Math/UnrealMathUtility.h" -#include "GenericPlatform/GenericPlatformMath.h" -#include "UObject/ObjectSaveContext.h" -#include "OculusXRHMD.h" -#include "TextureResource.h" - -namespace -{ - ovrpPassthroughColorLutChannels ToOVRPColorLutChannels(EColorLutChannels InColorLutChannels) - { - switch (InColorLutChannels) - { - case ColorLutChannels_RGB: - return ovrpPassthroughColorLutChannels_Rgb; - case ColorLutChannels_RGBA: - return ovrpPassthroughColorLutChannels_Rgba; - default: - return ovrpPassthroughColorLutChannels_Invalid; - } - } - - TArray ColorArrayToColorData(const TArray& InColorArray, bool IgnoreAlphaChannel) - { - TArray Data; - const size_t ElementSize = IgnoreAlphaChannel ? 3 : 4; - Data.SetNum(InColorArray.Num() * ElementSize); - uint8* Dest = Data.GetData(); - for (size_t i = 0; i < InColorArray.Num(); i++) - { - Data[i * ElementSize + 0] = InColorArray[i].R; - Data[i * ElementSize + 1] = InColorArray[i].G; - Data[i * ElementSize + 2] = InColorArray[i].B; - - if (!IgnoreAlphaChannel) - { - Data[i * ElementSize + 3] = InColorArray[i].A; - } - } - - return Data; - } - - bool IsTextureDataValid(const FLutTextureData& Data) - { - return Data.Data.Num() > 0 && Data.Resolution > 0; - } -} // namespace - -void UOculusXRPassthroughColorLut::SetLutFromArray(const TArray& InColorArray, bool InIgnoreAlphaChannel) -{ - const int32 Size = InColorArray.Num(); - const int32 Resolution = FPlatformMath::RoundToInt(FPlatformMath::Pow(Size, 1.0 / 3)); - if (Resolution > GetMaxResolution()) - { - UE_LOG(LogOculusPassthrough, Warning, TEXT("Setting array ignored: Resoluton is exceeding maximum resoluton of %d."), GetMaxResolution()); - return; - } - if (Resolution * Resolution * Resolution != Size) - { - UE_LOG(LogOculusPassthrough, Warning, TEXT("Setting array ignored: Provided array size is not cube.")); - return; - } - - /* Check if size if power of 2 */ - if ((Size & (Size - 1)) != 0) - { - UE_LOG(LogOculusPassthrough, Warning, TEXT("Setting array ignored: Provided array does not result in a resolution that is a power of two.")); - return; - } - - ColorLutType = EColorLutType::Array; - - const TArray& Data = ColorArrayToColorData(InColorArray, InIgnoreAlphaChannel); - - if (LutHandle == 0) - { - LutHandle = CreateLutObject(Data, Resolution); - return; - } - - if (InIgnoreAlphaChannel == IgnoreAlphaChannel && Resolution == ColorArrayResolution) - { - UpdateLutObject(LutHandle, Data); - return; - } - - DestroyLutObject(LutHandle); - LutHandle = CreateLutObject(Data, Resolution); - - IgnoreAlphaChannel = InIgnoreAlphaChannel; - ColorArrayResolution = Resolution; -} - -uint64 UOculusXRPassthroughColorLut::GetHandle(UOculusXRPassthroughLayerBase* LayerRef) -{ - if (LutHandle == 0 && ColorLutType == EColorLutType::TextureLUT && IsTextureDataValid(StoredTextureData)) - { - LutHandle = CreateLutObject(StoredTextureData.Data, StoredTextureData.Resolution); - } - - // Add layer to reference list - LayerRefs.AddUnique(LayerRef->GetUniqueID()); - - return LutHandle; -} - -void UOculusXRPassthroughColorLut::PreSave(FObjectPreSaveContext ObjectSaveContext) -{ - Super::PreSave(ObjectSaveContext); -#if WITH_EDITOR - StoredTextureData = TextureToColorData(LutTexture); -#endif -} - -void UOculusXRPassthroughColorLut::RemoveReference(UOculusXRPassthroughLayerBase* LayerRef) -{ - LayerRefs.Remove(LayerRef->GetUniqueID()); - - if (LayerRefs.Num() == 0) - { - DestroyLutObject(LutHandle); - LutHandle = 0; - } -} - -FLutTextureData UOculusXRPassthroughColorLut::TextureToColorData(class UTexture2D* InLutTexture) const -{ - - if (ColorLutType != EColorLutType::TextureLUT) - { - return FLutTextureData(); - } - - if (InLutTexture == nullptr) - { - UE_LOG(LogOculusPassthrough, Warning, TEXT("Ignoring provided LUT texture. Provided texture is NULL.")); - return FLutTextureData(); - } - - if (InLutTexture->LODGroup != TextureGroup::TEXTUREGROUP_ColorLookupTable) - { - UE_LOG(LogOculusPassthrough, Warning, TEXT("Ignoring provided LUT texture. Provided texture is not LUT texture.")); - return FLutTextureData(); - } - - if (InLutTexture->GetPlatformData()->Mips.Num() <= 0) - { - if (IsTextureDataValid(StoredTextureData)) - { - // We do not need to save it again. Use previously saved data. - return StoredTextureData; - } - return FLutTextureData(); - } - - const uint32 TextureWidth = InLutTexture->GetImportedSize().X; - const uint32 TextureHeight = InLutTexture->GetImportedSize().Y; - - uint32 ColorMapSize; - uint32 SlicesPerRow; - - if (TextureWidth == TextureHeight) - { - float EdgeLength = FPlatformMath::Pow(TextureWidth, 2.0f / 3.0f); - ColorMapSize = FPlatformMath::RoundToInt(EdgeLength); - if (FPlatformMath::Abs(EdgeLength - ColorMapSize) > ZERO_ANIMWEIGHT_THRESH) - { - UE_LOG(LogOculusPassthrough, Warning, TEXT("LUT width and height are equal but don't correspond to an 'exploded cube'")); - return FLutTextureData(); - } - - SlicesPerRow = FPlatformMath::Sqrt(ColorMapSize * 1.0f); - } - else - { - if (TextureWidth != TextureHeight * TextureHeight) - { - UE_LOG(LogOculusPassthrough, Warning, TEXT("For rectangular LUTs, the width is expected to be equal to edgeLength^2")); - return FLutTextureData(); - } - ColorMapSize = TextureHeight; - SlicesPerRow = TextureHeight; - } - - FTexture2DMipMap& MipMap = InLutTexture->GetPlatformData()->Mips[0]; - FByteBulkData* BulkData = &MipMap.BulkData; - const FColor* FormatedImageData = reinterpret_cast(BulkData->Lock(LOCK_READ_ONLY)); - - TArray Colors; - Colors.SetNum(ColorMapSize * ColorMapSize * ColorMapSize); - - for (uint32 bi = 0; bi < ColorMapSize; bi++) - { - uint32 bi_row = bi % SlicesPerRow; - uint32 bi_col = bi / SlicesPerRow; - for (uint32 gi = 0; gi < ColorMapSize; gi++) - { - for (uint32 ri = 0; ri < ColorMapSize; ri++) - { - uint32 sX = ri + bi_row * ColorMapSize; - uint32 sY = gi + bi_col * ColorMapSize; - Colors[bi * ColorMapSize * ColorMapSize + gi * ColorMapSize + ri] = FormatedImageData[sX + sY * TextureWidth]; - } - } - } - BulkData->Unlock(); - return FLutTextureData(ColorArrayToColorData(Colors, IgnoreAlphaChannel), ColorMapSize); -} - -uint64 UOculusXRPassthroughColorLut::CreateLutObject(const TArray& InData, uint32 Resolution) const -{ - if (OculusXR::IsOpenXRSystem()) - { - TWeakPtr Passthrough = XRPassthrough::FPassthroughXR::GetInstance(); - if (!Passthrough.IsValid()) - { - UE_LOG(LogTemp, Error, TEXT("Couldn't retrieve passthrough plugin extension.")); - return 0; - } - - if (!Passthrough.Pin()->GetSettings()->bExtColorLutAvailable) - { - UE_LOG(LogTemp, Warning, TEXT("XR_META_passthrough_color_lut extension is not available.")); - return 0; - } - - XrPassthroughFB PassthroughHandle = Passthrough.Pin()->GetPassthroughInstance(); - if (PassthroughHandle == XR_NULL_HANDLE) - { - UE_LOG(LogTemp, Error, TEXT("Passthrough handle is null.")); - return 0; - } - - XrPassthroughColorLutCreateInfoMETA createInfo = { XR_TYPE_PASSTHROUGH_COLOR_LUT_CREATE_INFO_META }; - createInfo.channels = IgnoreAlphaChannel ? XR_PASSTHROUGH_COLOR_LUT_CHANNELS_RGB_META : XR_PASSTHROUGH_COLOR_LUT_CHANNELS_RGBA_META; - createInfo.resolution = Resolution; - - XrPassthroughColorLutDataMETA lutData; - lutData.bufferSize = InData.Num(); - lutData.buffer = InData.GetData(); - createInfo.data = lutData; - - XrPassthroughColorLutMETA outLut = XR_NULL_HANDLE; - if (XR_FAILED(XRPassthrough::xrCreatePassthroughColorLutMETA(PassthroughHandle, &createInfo, &outLut))) - { - UE_LOG(LogTemp, Error, TEXT("Failed creating passthrough color lut.")); - return 0; - } - - return reinterpret_cast(outLut); - } - else - { - ovrpPassthroughColorLutData OVRPData; - OVRPData.Buffer = InData.GetData(); - OVRPData.BufferSize = InData.Num(); - const EColorLutChannels Channels = IgnoreAlphaChannel ? EColorLutChannels::ColorLutChannels_RGB : EColorLutChannels::ColorLutChannels_RGBA; - ovrpPassthroughColorLut Handle; - if (OVRP_FAILURE(FOculusXRHMDModule::GetPluginWrapper().CreatePassthroughColorLut( - ToOVRPColorLutChannels(Channels), - Resolution, - OVRPData, - &Handle))) - { - UE_LOG(LogTemp, Error, TEXT("Failed creating passthrough color lut.")); - return 0; - } - return Handle; - } -} - -void UOculusXRPassthroughColorLut::UpdateLutObject(uint64 Handle, const TArray& InData) const -{ - if (Handle == 0) - { - return; - } - - if (OculusXR::IsOpenXRSystem()) - { - XrPassthroughColorLutUpdateInfoMETA UpdateInfo = { XR_TYPE_PASSTHROUGH_COLOR_LUT_UPDATE_INFO_META }; - - XrPassthroughColorLutDataMETA LutData; - LutData.bufferSize = InData.Num(); - LutData.buffer = reinterpret_cast(InData.GetData()); - - UpdateInfo.data = LutData; - - if (XR_FAILED(XRPassthrough::xrUpdatePassthroughColorLutMETA(reinterpret_cast(Handle), &UpdateInfo))) - { - UE_LOG(LogTemp, Error, TEXT("Failed updating passthrough color lut data.")); - return; - } - } - else - { - ovrpPassthroughColorLutData OVRPData; - OVRPData.Buffer = InData.GetData(); - OVRPData.BufferSize = InData.Num(); - - if (OVRP_FAILURE(FOculusXRHMDModule::GetPluginWrapper().UpdatePassthroughColorLut( - Handle, - OVRPData))) - { - UE_LOG(LogTemp, Error, TEXT("Failed updating passthrough color lut data.")); - return; - } - } -} - -void UOculusXRPassthroughColorLut::DestroyLutObject(uint64 Handle) const -{ - if (Handle == 0) - { - return; - } - if (OculusXR::IsOpenXRSystem()) - { - if (XR_FAILED(XRPassthrough::xrDestroyPassthroughColorLutMETA(reinterpret_cast(Handle)))) - { - UE_LOG(LogTemp, Error, TEXT("Failed to destroy passthrough color lut.")); - } - } - else - { - if (OVRP_FAILURE(FOculusXRHMDModule::GetPluginWrapper().DestroyPassthroughColorLut(Handle))) - { - UE_LOG(LogTemp, Error, TEXT("Failed to destroy passthrough color lut.")); - } - } -} - -void UOculusXRPassthroughColorLut::BeginDestroy() -{ - Super::BeginDestroy(); - DestroyLutObject(LutHandle); - LutHandle = 0; -} - -int UOculusXRPassthroughColorLut::GetMaxResolution() -{ - if (MaxResolution > -1) - { - return MaxResolution; - } - - ovrpInsightPassthroughCapabilities PassthroughCapabilites; - PassthroughCapabilites.Fields = - static_cast( - ovrpInsightPassthroughCapabilityFields::ovrpInsightPassthroughCapabilityFields_Flags | ovrpInsightPassthroughCapabilityFields::ovrpInsightPassthroughCapabilityFields_MaxColorLutResolution); - - if (OVRP_FAILURE(FOculusXRHMDModule::GetPluginWrapper().GetPassthroughCapabilities(&PassthroughCapabilites))) - { - UE_LOG(LogTemp, Error, TEXT("Failed to fetch passthrough capabilities.")); - // Default MAX resoulution is 64. - return 64; - } - MaxResolution = PassthroughCapabilites.MaxColorLutResolution; - return MaxResolution; -} diff --git a/Plugins/MetaXR/Source/OculusXRPassthrough/Private/OculusXRPassthroughEventHandling.cpp b/Plugins/MetaXR/Source/OculusXRPassthrough/Private/OculusXRPassthroughEventHandling.cpp deleted file mode 100644 index 0719813..0000000 --- a/Plugins/MetaXR/Source/OculusXRPassthrough/Private/OculusXRPassthroughEventHandling.cpp +++ /dev/null @@ -1,59 +0,0 @@ -// Copyright (c) Meta Platforms, Inc. and affiliates. - -#include "OculusXRPassthroughEventHandling.h" - -#include "OculusXRHMD.h" -#include "OculusXRPassthroughModule.h" -#include "OculusXRPassthroughSubsystem.h" - -namespace OculusXRPassthrough -{ - FOculusXRPassthroughEventDelegates::FOculusXRPassthroughLayerResumedDelegate FOculusXRPassthroughEventDelegates::OculusPassthroughLayerResumed; - - template - void GetEventData(ovrpEventDataBuffer& Buffer, T& OutEventData) - { - unsigned char* BufData = Buffer.EventData; - BufData -= sizeof(Buffer.EventType); // Offset buffer data to get to the actual event payload - - memcpy(&OutEventData, BufData, sizeof(T)); - } - - void FOculusXRPassthroughEventHandling::OnPollEvent(ovrpEventDataBuffer* EventDataBuffer, bool& EventPollResult) - { - ovrpEventDataBuffer& buf = *EventDataBuffer; - EventPollResult = true; - - switch (buf.EventType) - { - case ovrpEventType_PassthroughLayerResumed: - { - OculusXRHMD::FOculusXRHMD* HMD = OculusXRHMD::FOculusXRHMD::GetOculusXRHMD(); - - check(HMD); - - ovrpEventDataPassthroughLayerResumed passthroughLayerResumedEvent; - GetEventData(buf, passthroughLayerResumedEvent); - - // Convert OVR plugin layerID to UE layerID - int ovrpID = passthroughLayerResumedEvent.LayerId; - uint32 LayerID = HMD->GetLayerIdFromOvrpId(ovrpID); - - UE_LOG(LogOculusXRPassthrough, Log, TEXT("FOculusXRPassthroughEventHandling - Passthrough Layer #%d resumed"), LayerID); - - // Send event - FOculusXRPassthroughEventDelegates::OculusPassthroughLayerResumed.Broadcast(LayerID); - - break; - } - - - case ovrpEventType_None: - default: - { - EventPollResult = false; - break; - } - } - } -} // namespace OculusXRPassthrough diff --git a/Plugins/MetaXR/Source/OculusXRPassthrough/Private/OculusXRPassthroughEventHandling.h b/Plugins/MetaXR/Source/OculusXRPassthrough/Private/OculusXRPassthroughEventHandling.h deleted file mode 100644 index 481786d..0000000 --- a/Plugins/MetaXR/Source/OculusXRPassthrough/Private/OculusXRPassthroughEventHandling.h +++ /dev/null @@ -1,33 +0,0 @@ -// Copyright (c) Meta Platforms, Inc. and affiliates. - -#pragma once - -#include "OculusXRPluginWrapper.h" -#include "CoreMinimal.h" -#include "OculusXRHMDPrivate.h" - -namespace OculusXRPassthrough -{ - class FOculusXRPassthroughEventDelegates - { - public: - /* ovrpEventType_PassthroughLayerResumed - * - * PassthroughLayerResumed - * Prefix: - * FOculusXRPassthroughLayerResumed - * Suffix: - * FOculusXRPassthroughLayerResumedDelegate - */ - DECLARE_MULTICAST_DELEGATE_OneParam(FOculusXRPassthroughLayerResumedDelegate, int /*layerId*/); - static OCULUSXRPASSTHROUGH_API FOculusXRPassthroughLayerResumedDelegate OculusPassthroughLayerResumed; - - }; - - struct FOculusXRPassthroughEventHandling - { - public: - static void OnPollEvent(ovrpEventDataBuffer* EventDataBuffer, bool& EventPollResult); - }; - -} // namespace OculusXRPassthrough diff --git a/Plugins/MetaXR/Source/OculusXRPassthrough/Private/OculusXRPassthroughLayer.cpp b/Plugins/MetaXR/Source/OculusXRPassthrough/Private/OculusXRPassthroughLayer.cpp deleted file mode 100644 index a1e4c92..0000000 --- a/Plugins/MetaXR/Source/OculusXRPassthrough/Private/OculusXRPassthroughLayer.cpp +++ /dev/null @@ -1,657 +0,0 @@ -// Copyright (c) Meta Platforms, Inc. and affiliates. - -#include "OculusXRPassthroughLayer.h" - -#include "Components/MeshComponent.h" -#include "Engine/Engine.h" -#include "Materials/Material.h" -#include "Materials/MaterialInstanceDynamic.h" -#include "Materials/MaterialInterface.h" -#include "OculusXRHMDPrivate.h" -#include "OculusXRPassthroughXRFunctions.h" -#include "OculusXRPassthroughXR.h" -#include "OculusXRPassthroughModule.h" -#include "ProceduralMeshComponent.h" -#include "XRThreadUtils.h" - -namespace XRPassthrough -{ - static UWorld* GetWorld() - { - UWorld* World = nullptr; - for (const FWorldContext& Context : GEngine->GetWorldContexts()) - { - if (Context.WorldType == EWorldType::Game || Context.WorldType == EWorldType::PIE) - { - World = Context.World(); - } - } - return World; - } - - FPassthroughLayer::FPassthroughLayer(XrPassthroughFB PassthroughInstance, TWeakPtr Extension) - : PassthroughExtension(Extension) - , UserDefinedGeometryMap(nullptr) - , PassthroughPokeActorMap(nullptr) - , XrPassthroughLayer{ XR_NULL_HANDLE } - , XrCompositionLayerHeader{} - , XrPassthroughInstance(PassthroughInstance) - { - } - - FPassthroughLayer::FPassthroughLayer(const FPassthroughLayer& Layer) - : PassthroughExtension(Layer.PassthroughExtension) - , UserDefinedGeometryMap(Layer.UserDefinedGeometryMap) - , PassthroughPokeActorMap(Layer.PassthroughPokeActorMap) - , Session(Layer.Session) - , LayerDesc(Layer.LayerDesc) - , XrPassthroughLayer(Layer.XrPassthroughLayer) - , XrCompositionLayerHeader(Layer.XrCompositionLayerHeader) - , XrPassthroughInstance(Layer.XrPassthroughInstance) - { - } - - TSharedPtr FPassthroughLayer::Clone() const - { - return MakeShareable(new FPassthroughLayer(*this)); - } - - FPassthroughLayer::~FPassthroughLayer() - { - } - - void FPassthroughLayer::SetDesc(const IStereoLayers::FLayerDesc& InLayerDesc) - { - LayerDesc = InLayerDesc; - - if (!PassthroughPokeActorMap) - { - PassthroughPokeActorMap = MakeShared, ESPMode::ThreadSafe>(); - } - - UpdatePassthroughPokeActors_GameThread(); - } - - void FPassthroughLayer::DestroyLayer() - { - OculusXRHMD::CheckInGameThread(); - - ClearPassthroughPokeActors(); - } - - void FPassthroughLayer::DestroyLayer_RenderThread() - { - OculusXRHMD::CheckInRenderThread(); - - // Clear user defined meshes - for (auto& Entry : *UserDefinedGeometryMap) - { - const XrTriangleMeshFB MeshHandle = Entry.Value.MeshHandle; - const XrGeometryInstanceFB InstanceHandle = Entry.Value.InstanceHandle; - RemovePassthroughMesh_RenderThread(MeshHandle, InstanceHandle); - } - UserDefinedGeometryMap->Empty(); - - // Destroy passthrough layer - if (XrPassthroughLayer != XR_NULL_HANDLE) - { - xrDestroyPassthroughLayerFB(XrPassthroughLayer); - } - else - { - UE_LOG(LogOculusXRPassthrough, Warning, TEXT("Failed to destroy layer as handle was null")); - } - } - - bool FPassthroughLayer::IsPassthoughLayerDesc(const IStereoLayers::FLayerDesc& LayerDesc) - { - return LayerDesc.HasShape() || LayerDesc.HasShape(); - } - - bool FPassthroughLayer::CanReuseResources(const FPassthroughLayer* InLayer) const - { - if (!InLayer) - { - return false; - } - - if (!IsPassthoughLayerDesc(InLayer->LayerDesc) || InLayer->LayerDesc.HasShape() != LayerDesc.HasShape() || InLayer->LayerDesc.HasShape() != LayerDesc.HasShape()) - { - return false; - } - - return true; - } - - bool FPassthroughLayer::Initialize_RenderThread(XrSession InSession, const FPassthroughLayer* InLayer) - { - OculusXRHMD::CheckInRenderThread(); - - if (!CanReuseResources(InLayer)) - { - Session = InSession; - - if (XrPassthroughLayer != XR_NULL_HANDLE) - { - xrDestroyPassthroughLayerFB(XrPassthroughLayer); - XrPassthroughLayer = XR_NULL_HANDLE; - } - - if (LayerDesc.HasShape() || LayerDesc.HasShape()) - { - XrPassthroughLayerCreateInfoFB PassthroughLayerCreateInfo = { XR_TYPE_PASSTHROUGH_LAYER_CREATE_INFO_FB }; - PassthroughLayerCreateInfo.passthrough = XrPassthroughInstance; - PassthroughLayerCreateInfo.purpose = LayerDesc.HasShape() ? XR_PASSTHROUGH_LAYER_PURPOSE_RECONSTRUCTION_FB : XR_PASSTHROUGH_LAYER_PURPOSE_PROJECTED_FB; - - XrResult CreateLayerResult = xrCreatePassthroughLayerFB(Session, &PassthroughLayerCreateInfo, &XrPassthroughLayer); - if (!XR_SUCCEEDED(CreateLayerResult)) - { - UE_LOG(LogOculusXRPassthrough, Warning, TEXT("Failed to create passthrough layer, error : %i"), CreateLayerResult); - return false; - } - - XrResult ResumeLayerResult = xrPassthroughLayerResumeFB(XrPassthroughLayer); - if (!XR_SUCCEEDED(ResumeLayerResult)) - { - UE_LOG(LogOculusXRPassthrough, Warning, TEXT("Failed to resume passthrough layer, error : %i"), ResumeLayerResult); - return false; - } - } - } - else - { - PassthroughExtension = InLayer->PassthroughExtension; - UserDefinedGeometryMap = InLayer->UserDefinedGeometryMap; - PassthroughPokeActorMap = InLayer->PassthroughPokeActorMap; - Session = InLayer->Session; - XrPassthroughLayer = InLayer->XrPassthroughLayer; - XrCompositionLayerHeader = InLayer->XrCompositionLayerHeader; - XrPassthroughInstance = InLayer->XrPassthroughInstance; - } - - if (!UserDefinedGeometryMap) - { - UserDefinedGeometryMap = MakeShared, ESPMode::ThreadSafe>(); - } - - check(IsPassthoughLayerDesc(LayerDesc)); - - return true; - } - - bool FPassthroughLayer::BuildPassthroughPokeActor(OculusXRHMD::FOculusPassthroughMeshRef PassthroughMesh, FPassthroughPokeActor& OutPassthroughPokeActor) - { - UWorld* World = GetWorld(); - - if (!World || !PassthroughExtension.IsValid()) - { - return false; - } - - const FString BaseComponentName = FString::Printf(TEXT("OculusPassthroughPoke_%d"), LayerDesc.Id); - const FName ComponentName(*BaseComponentName); - AActor* PassthoughPokeActor = World->SpawnActor(); - UProceduralMeshComponent* PassthoughPokeComponentPtr = NewObject(PassthoughPokeActor, ComponentName); - PassthoughPokeComponentPtr->RegisterComponent(); - - const TArray& Triangles = PassthroughMesh->GetTriangles(); - const TArray& Vertices = PassthroughMesh->GetVertices(); - TArray Normals; - TArray UV0; - TArray VertexColors; - TArray Tangents; - - PassthoughPokeComponentPtr->CreateMeshSection_LinearColor(0, Vertices, Triangles, Normals, UV0, VertexColors, Tangents, false); - - UMaterial* PokeAHoleMaterial = PassthroughExtension.Pin()->GetSettings()->PokeAHoleMaterial; - - if (PokeAHoleMaterial) - { - UMaterialInstanceDynamic* DynamicMaterial = UMaterialInstanceDynamic::Create(PokeAHoleMaterial, nullptr); - PassthoughPokeComponentPtr->SetMaterial(0, DynamicMaterial); - } - - OutPassthroughPokeActor.PokeAHoleActor = PassthoughPokeActor; - OutPassthroughPokeActor.PokeAHoleComponentPtr = PassthoughPokeComponentPtr; - - return true; - } - - void FPassthroughLayer::UpdatePassthroughPokeActors_GameThread() - { - if (LayerDesc.HasShape()) - { - const FUserDefinedLayer& UserDefinedLayerProps = LayerDesc.GetShape(); - const TArray& UserGeometryList = UserDefinedLayerProps.UserGeometryList; - TSet UsedSet = {}; - - if (PassthroughSupportsDepth()) - { - for (const FUserDefinedGeometryDesc& GeometryDesc : UserGeometryList) - { - const FString MeshName = GeometryDesc.MeshName; - UsedSet.Add(MeshName); - - FPassthroughPokeActor* FoundPassthroughPokeActor = PassthroughPokeActorMap->Find(MeshName); - if (!FoundPassthroughPokeActor) - { - OculusXRHMD::FOculusPassthroughMeshRef GeomPassthroughMesh = GeometryDesc.PassthroughMesh; - if (GeomPassthroughMesh) - { - FPassthroughPokeActor PassthroughPokeActor; - if (BuildPassthroughPokeActor(GeomPassthroughMesh, PassthroughPokeActor)) - { - PassthroughPokeActor.PokeAHoleComponentPtr->SetWorldTransform(GeometryDesc.Transform); - PassthroughPokeActorMap->Add(MeshName, PassthroughPokeActor); - } - } - } - else if (GeometryDesc.bUpdateTransform && FoundPassthroughPokeActor->PokeAHoleComponentPtr.IsValid()) - { - FoundPassthroughPokeActor->PokeAHoleComponentPtr->SetWorldTransform(GeometryDesc.Transform); - } - } - } - - // find actors that no longer exist - TArray ItemsToRemove; - for (auto& Entry : *PassthroughPokeActorMap) - { - if (!UsedSet.Contains(Entry.Key)) - { - ItemsToRemove.Add(Entry.Key); - } - } - - for (FString Entry : ItemsToRemove) - { - FPassthroughPokeActor* PassthroughPokeActor = PassthroughPokeActorMap->Find(Entry); - if (PassthroughPokeActor) - { - UWorld* World = GetWorld(); - if (World && PassthroughPokeActor->PokeAHoleActor.IsValid()) - { - World->DestroyActor(PassthroughPokeActor->PokeAHoleActor.Get()); - } - } - PassthroughPokeActorMap->Remove(Entry); - } - } - } - - void FPassthroughLayer::UpdatePassthroughStyle_RenderThread(const FEdgeStyleParameters& EdgeStyleParameters) - { - if (!PassthroughExtension.IsValid()) - { - return; - } - - XrPassthroughStyleFB Style = { XR_TYPE_PASSTHROUGH_STYLE_FB }; - - Style.textureOpacityFactor = EdgeStyleParameters.TextureOpacityFactor; - - Style.edgeColor = { 0, 0, 0, 0 }; - if (EdgeStyleParameters.bEnableEdgeColor) - { - Style.edgeColor = { - EdgeStyleParameters.EdgeColor.R, - EdgeStyleParameters.EdgeColor.G, - EdgeStyleParameters.EdgeColor.B, - EdgeStyleParameters.EdgeColor.A - }; - } - - /// Color map - union AllColorMapDescriptors - { - XrPassthroughColorMapMonoToRgbaFB rgba; - XrPassthroughColorMapMonoToMonoFB mono; - XrPassthroughBrightnessContrastSaturationFB bcs; - XrPassthroughColorMapLutMETA lut; - XrPassthroughColorMapInterpolatedLutMETA interpLut; - }; - AllColorMapDescriptors colorMap; - if (PassthroughExtension.Pin()->GetSettings()->bExtColorLutAvailable && EdgeStyleParameters.bEnableColorMap) - { - void* colorMapDataDestination = nullptr; - unsigned int expectedColorMapDataSize = 0; - switch (EdgeStyleParameters.ColorMapType) - { - case ColorMapType_None: - break; - case ColorMapType_GrayscaleToColor: - colorMap.rgba = { XR_TYPE_PASSTHROUGH_COLOR_MAP_MONO_TO_RGBA_FB }; - expectedColorMapDataSize = sizeof(colorMap.rgba.textureColorMap); - colorMapDataDestination = colorMap.rgba.textureColorMap; - Style.next = &colorMap.rgba; - break; - case ColorMapType_Grayscale: - colorMap.mono = { XR_TYPE_PASSTHROUGH_COLOR_MAP_MONO_TO_MONO_FB }; - expectedColorMapDataSize = sizeof(colorMap.mono.textureColorMap); - colorMapDataDestination = colorMap.mono.textureColorMap; - Style.next = &colorMap.mono; - break; - case ColorMapType_ColorAdjustment: - colorMap.bcs = { XR_TYPE_PASSTHROUGH_BRIGHTNESS_CONTRAST_SATURATION_FB }; - expectedColorMapDataSize = 3 * sizeof(float); - colorMapDataDestination = &colorMap.bcs.brightness; - Style.next = &colorMap.bcs; - break; - case ColorMapType_ColorLut: - colorMap.lut = { XR_TYPE_PASSTHROUGH_COLOR_MAP_LUT_META }; - colorMap.lut.colorLut = reinterpret_cast(EdgeStyleParameters.ColorLutDesc.ColorLuts[0]); - colorMap.lut.weight = EdgeStyleParameters.ColorLutDesc.Weight; - Style.next = &colorMap.lut; - break; - case ColorMapType_ColorLut_Interpolated: - colorMap.interpLut = { XR_TYPE_PASSTHROUGH_COLOR_MAP_INTERPOLATED_LUT_META }; - colorMap.interpLut.sourceColorLut = reinterpret_cast(EdgeStyleParameters.ColorLutDesc.ColorLuts[0]); - colorMap.interpLut.targetColorLut = reinterpret_cast(EdgeStyleParameters.ColorLutDesc.ColorLuts[1]); - colorMap.interpLut.weight = EdgeStyleParameters.ColorLutDesc.Weight; - Style.next = &colorMap.lut; - break; - default: - UE_LOG(LogOculusXRPassthrough, Error, TEXT("Passthrough style has unexpected color map type: %i"), EdgeStyleParameters.ColorMapType); - return; - } - - // Validate color map data size and copy it over - if (colorMapDataDestination != nullptr) - { - if (EdgeStyleParameters.ColorMapData.Num() != expectedColorMapDataSize) - { - UE_LOG(LogOculusXRPassthrough, Error, - TEXT("Passthrough color map size for type %i is expected to be %i instead of %i"), - EdgeStyleParameters.ColorMapType, - expectedColorMapDataSize, - EdgeStyleParameters.ColorMapData.Num()); - return; - } - - uint8* ColorMapData = (uint8*)EdgeStyleParameters.ColorMapData.GetData(); - memcpy(colorMapDataDestination, ColorMapData, expectedColorMapDataSize); - } - } - - XrResult Result = xrPassthroughLayerSetStyleFB(XrPassthroughLayer, &Style); - if (!XR_SUCCEEDED(Result)) - { - UE_LOG(LogOculusXRPassthrough, Error, TEXT("Failed setting passthrough style, error : %i"), Result); - return; - } - } - - static FMatrix TransformToPassthroughSpace(FTransform Transform, float WorldToMetersScale, FTransform TrackingToWorld) - { - const FVector WorldToMetersScaleInv = FVector(WorldToMetersScale).Reciprocal(); - FTransform TransformWorld = Transform * TrackingToWorld.Inverse(); - TransformWorld.MultiplyScale3D(WorldToMetersScaleInv); - TransformWorld.ScaleTranslation(WorldToMetersScaleInv); - const FMatrix TransformWorldScaled = TransformWorld.ToMatrixWithScale(); - - const FMatrix SwapAxisMatrix( - FPlane(0.0f, 0.0f, -1.0f, 0.0f), - FPlane(1.0f, 0.0f, 0.0f, 0.0f), - FPlane(0.0f, 1.0f, 0.0f, 0.0f), - FPlane(0.0f, 0.0f, 0.0f, 1.0f)); - - return TransformWorldScaled * SwapAxisMatrix; - } - - void FPassthroughLayer::UpdatePassthrough_RenderThread(FRHICommandListImmediate& RHICmdList, XrSpace Space, XrTime Time, float WorldToMetersScale, FTransform TrackingToWorld) - { - check(IsInRenderingThread()); - - if (LayerDesc.HasShape()) - { - const FReconstructedLayer& ReconstructedLayerProps = LayerDesc.GetShape(); - UpdatePassthroughStyle_RenderThread(ReconstructedLayerProps.EdgeStyleParameters); - } - else if (LayerDesc.HasShape()) - { - const FUserDefinedLayer& UserDefinedLayerProps = LayerDesc.GetShape(); - UpdatePassthroughStyle_RenderThread(UserDefinedLayerProps.EdgeStyleParameters); - } - - if (LayerDesc.HasShape()) - { - const FUserDefinedLayer& UserDefinedLayerProps = LayerDesc.GetShape(); - const TArray& UserGeometryList = UserDefinedLayerProps.UserGeometryList; - TSet UsedSet; - - for (const FUserDefinedGeometryDesc& GeometryDesc : UserGeometryList) - { - const FString MeshName = GeometryDesc.MeshName; - UsedSet.Add(MeshName); - - FPassthroughMesh* LayerPassthroughMesh = UserDefinedGeometryMap->Find(MeshName); - if (!LayerPassthroughMesh) - { - OculusXRHMD::FOculusPassthroughMeshRef GeomPassthroughMesh = GeometryDesc.PassthroughMesh; - if (GeomPassthroughMesh) - { - const FMatrix Transform = TransformToPassthroughSpace(GeometryDesc.Transform, WorldToMetersScale, TrackingToWorld); - XrTriangleMeshFB MeshHandle = 0; - XrGeometryInstanceFB InstanceHandle = 0; - AddPassthroughMesh_RenderThread(GeomPassthroughMesh->GetVertices(), GeomPassthroughMesh->GetTriangles(), Transform, Space, MeshHandle, InstanceHandle); - UserDefinedGeometryMap->Add(MeshName, FPassthroughMesh(MeshHandle, InstanceHandle, GeometryDesc.Transform)); - } - } - else - { - const FMatrix Transform = TransformToPassthroughSpace(GeometryDesc.Transform, WorldToMetersScale, TrackingToWorld); - UpdatePassthroughMeshTransform_RenderThread(LayerPassthroughMesh->InstanceHandle, Transform, Space, Time); - LayerPassthroughMesh->LastTransform = GeometryDesc.Transform; - } - } - - // find meshes that no longer exist - TArray ItemsToRemove; - for (auto& Entry : *UserDefinedGeometryMap) - { - if (!UsedSet.Contains(Entry.Key)) - { - ItemsToRemove.Add(Entry.Key); - } - } - - for (FString Entry : ItemsToRemove) - { - FPassthroughMesh* PassthroughMesh = UserDefinedGeometryMap->Find(Entry); - if (PassthroughMesh) - { - const XrTriangleMeshFB MeshHandle = PassthroughMesh->MeshHandle; - const XrGeometryInstanceFB InstanceHandle = PassthroughMesh->InstanceHandle; - RemovePassthroughMesh_RenderThread(MeshHandle, InstanceHandle); - } - else - { - UE_LOG(LogOculusXRPassthrough, Error, TEXT("PassthroughMesh: %s doesn't exist."), *Entry); - return; - } - - UserDefinedGeometryMap->Remove(Entry); - } - } - } - - XrCompositionLayerBaseHeaderType* FPassthroughLayer::GetXrCompositionLayerHeader() - { - OculusXRHMD::CheckInRHIThread(); - if (XrPassthroughLayer != nullptr) - { - XrCompositionLayerPassthroughFB& CompositionLayer = XrCompositionLayerHeader; - memset(&CompositionLayer, 0, sizeof(CompositionLayer)); - CompositionLayer.type = XR_TYPE_COMPOSITION_LAYER_PASSTHROUGH_FB; - CompositionLayer.layerHandle = XrPassthroughLayer; - CompositionLayer.flags = XR_COMPOSITION_LAYER_BLEND_TEXTURE_SOURCE_ALPHA_BIT; - CompositionLayer.space = XR_NULL_HANDLE; - return reinterpret_cast(&CompositionLayer); - } - return nullptr; - } - - bool FPassthroughLayer::IsBackgroundLayer() const - { - return (LayerDesc.HasShape() && (LayerDesc.GetShape().PassthroughLayerOrder == PassthroughLayerOrder_Underlay)) - || (LayerDesc.HasShape() && (LayerDesc.GetShape().PassthroughLayerOrder == PassthroughLayerOrder_Underlay)); - } - - bool FPassthroughLayer::IsOverlayLayer() const - { - return (LayerDesc.HasShape() && (LayerDesc.GetShape().PassthroughLayerOrder == PassthroughLayerOrder_Overlay)) - || (LayerDesc.HasShape() && (LayerDesc.GetShape().PassthroughLayerOrder == PassthroughLayerOrder_Overlay)); - } - - bool FPassthroughLayer::PassthroughSupportsDepth() const - { - return ((LayerDesc.Flags & IStereoLayers::LAYER_FLAG_SUPPORT_DEPTH) != 0) && LayerDesc.HasShape(); - } - - // Code taken from OVRPlugin (InsightMrManager.cpp) - static bool DecomposeTransformMatrix(FMatrix Transform, XrPosef& OutPose, XrVector3f& OutScale) - { - FTransform outTransform = FTransform(Transform); - FVector3f scale = FVector3f(outTransform.GetScale3D()); - FQuat4f rotation = FQuat4f(outTransform.GetRotation()); - FVector3f position = FVector3f(outTransform.GetLocation()); - - if (scale.X == 0 || scale.Y == 0 || scale.Z == 0) - { - return false; - } - - OutScale = XrVector3f{ scale.X, scale.Y, scale.Z }; - OutPose = XrPosef{ XrQuaternionf{ rotation.X, rotation.Y, rotation.Z, rotation.W }, XrVector3f{ position.X, position.Y, position.Z } }; - - return true; - } - - void FPassthroughLayer::AddPassthroughMesh_RenderThread(const TArray& Vertices, const TArray& Triangles, FMatrix Transformation, XrSpace Space, XrTriangleMeshFB& OutMeshHandle, XrGeometryInstanceFB& OutInstanceHandle) - { - OculusXRHMD::CheckInRenderThread(); - - XrTriangleMeshFB MeshHandle = 0; - XrGeometryInstanceFB InstanceHandle = 0; - - // Explicit conversion is needed since FVector contains double elements. - // Converting Vertices.Data() to float* causes issues when memory is parsed. - TArray VertexData; - VertexData.SetNumUninitialized(Vertices.Num()); - - size_t i = 0; - for (const FVector& vertex : Vertices) - { - VertexData[i++] = { (float)vertex.X, (float)vertex.Y, (float)vertex.Z }; - } - - TArray TriangleData; - TriangleData.SetNumUninitialized(Triangles.Num()); - - i = 0; - for (const int32& tri : Triangles) - { - TriangleData[i++] = (uint32_t)tri; - } - - XrTriangleMeshCreateInfoFB TriangleMeshInfo = { XR_TYPE_TRIANGLE_MESH_CREATE_INFO_FB }; - TriangleMeshInfo.flags = 0; // not mutable - TriangleMeshInfo.triangleCount = Triangles.Num() / 3; - TriangleMeshInfo.indexBuffer = TriangleData.GetData(); - TriangleMeshInfo.vertexCount = Vertices.Num(); - TriangleMeshInfo.vertexBuffer = VertexData.GetData(); - TriangleMeshInfo.windingOrder = XR_WINDING_ORDER_UNKNOWN_FB; - - if (XR_FAILED(xrCreateTriangleMeshFB.GetValue()(Session, &TriangleMeshInfo, &MeshHandle))) - { - UE_LOG(LogOculusXRPassthrough, Error, TEXT("Failed creating passthrough mesh surface.")); - return; - } - - XrGeometryInstanceCreateInfoFB createInfo = { XR_TYPE_GEOMETRY_INSTANCE_CREATE_INFO_FB }; - - bool result = DecomposeTransformMatrix(Transformation, createInfo.pose, createInfo.scale); - if (!result) - { - UE_LOG(LogOculusXRPassthrough, Error, TEXT("Failed decomposing the transform matrix.")); - return; - } - - createInfo.layer = XrPassthroughLayer; - createInfo.mesh = MeshHandle; - createInfo.baseSpace = Space; - - if (XR_FAILED(xrCreateGeometryInstanceFB(Session, &createInfo, &InstanceHandle))) - { - UE_LOG(LogOculusXRPassthrough, Error, TEXT("Failed adding passthrough mesh surface to scene.")); - return; - } - - OutMeshHandle = MeshHandle; - OutInstanceHandle = InstanceHandle; - } - - void FPassthroughLayer::UpdatePassthroughMeshTransform_RenderThread(XrGeometryInstanceFB InstanceHandle, FMatrix Transformation, XrSpace Space, XrTime Time) - { - OculusXRHMD::CheckInRenderThread(); - - XrGeometryInstanceTransformFB UpdateInfo = { XR_TYPE_GEOMETRY_INSTANCE_TRANSFORM_FB }; - bool result = DecomposeTransformMatrix(Transformation, UpdateInfo.pose, UpdateInfo.scale); - if (!result) - { - UE_LOG(LogOculusXRPassthrough, Error, TEXT("Failed decomposing the transform matrix.")); - return; - } - - UpdateInfo.baseSpace = Space; - UpdateInfo.time = Time; - - if (XR_FAILED(xrGeometryInstanceSetTransformFB(InstanceHandle, &UpdateInfo))) - { - UE_LOG(LogOculusXRPassthrough, Error, TEXT("Failed updating passthrough mesh surface transform.")); - return; - } - } - - void FPassthroughLayer::RemovePassthroughMesh_RenderThread(XrTriangleMeshFB MeshHandle, XrGeometryInstanceFB InstanceHandle) - { - OculusXRHMD::CheckInRenderThread(); - - if (XR_FAILED(xrDestroyGeometryInstanceFB(InstanceHandle))) - { - UE_LOG(LogOculusXRPassthrough, Error, TEXT("Failed removing passthrough surface from scene.")); - return; - } - - if (XR_FAILED(xrDestroyTriangleMeshFB.GetValue()(MeshHandle))) - { - UE_LOG(LogOculusXRPassthrough, Error, TEXT("Failed destroying passthrough surface mesh.")); - return; - } - } - - void FPassthroughLayer::ClearPassthroughPokeActors() - { - if (PassthroughPokeActorMap) - { - UWorld* World = GetWorld(); - if (!World) - { - UE_LOG(LogOculusXRPassthrough, Warning, TEXT("Couldn't retrieve World. Passthrough Pokeahole actors will not be destroyed.")); - return; - } - - for (auto& Entry : *PassthroughPokeActorMap) - { - // Check if actor is still valid. In some specific cases the actor might be destroyed before we clean the PokeActorMap - // (e.g. when loading to a new level) - if (Entry.Value.PokeAHoleActor.IsValid()) - { - World->DestroyActor(Entry.Value.PokeAHoleActor.Get()); - } - } - PassthroughPokeActorMap.Reset(); - } - } - -} // namespace XRPassthrough diff --git a/Plugins/MetaXR/Source/OculusXRPassthrough/Private/OculusXRPassthroughLayer.h b/Plugins/MetaXR/Source/OculusXRPassthrough/Private/OculusXRPassthroughLayer.h deleted file mode 100644 index 76ab3dc..0000000 --- a/Plugins/MetaXR/Source/OculusXRPassthrough/Private/OculusXRPassthroughLayer.h +++ /dev/null @@ -1,155 +0,0 @@ -// Copyright (c) Meta Platforms, Inc. and affiliates. - -#pragma once - -#include "khronos/openxr/openxr.h" -#include "IStereoLayers.h" -#include "OculusXRPassthroughLayerShapes.h" -#include "OculusXRPassthroughMesh.h" - -class UProceduralMeshComponent; - -namespace XRPassthrough -{ - -#ifdef WITH_OCULUS_BRANCH - using XrCompositionLayerBaseHeaderType = XrCompositionLayerBaseHeader; -#else - // epic branch has member as const - using XrCompositionLayerBaseHeaderType = const XrCompositionLayerBaseHeader; -#endif - - class FPassthroughXR; - - class FPassthroughLayer - { - private: - struct FPassthroughMesh - { - FPassthroughMesh(XrTriangleMeshFB MeshHandle, XrGeometryInstanceFB InstanceHandle, FTransform Transform) - : MeshHandle(MeshHandle) - , InstanceHandle(InstanceHandle) - , LastTransform(Transform) - { - } - XrTriangleMeshFB MeshHandle; - XrGeometryInstanceFB InstanceHandle; - FTransform LastTransform; - }; - typedef TSharedPtr, ESPMode::ThreadSafe> FUserDefinedGeometryMapPtr; - - struct FPassthroughPokeActor - { - FPassthroughPokeActor(){}; - FPassthroughPokeActor(TWeakObjectPtr PokeAHoleComponentPtr, TWeakObjectPtr PokeAHoleActor) - : PokeAHoleComponentPtr(PokeAHoleComponentPtr) - , PokeAHoleActor(PokeAHoleActor){}; - TWeakObjectPtr PokeAHoleComponentPtr; - TWeakObjectPtr PokeAHoleActor; - }; - - typedef TSharedPtr, ESPMode::ThreadSafe> FPassthroughPokeActorMapPtr; - - public: - static bool IsPassthoughLayerDesc(const IStereoLayers::FLayerDesc& LayerDesc); - FPassthroughLayer(XrPassthroughFB PassthroughInstance, TWeakPtr Extension); - FPassthroughLayer(const FPassthroughLayer& Layer); - TSharedPtr Clone() const; - virtual ~FPassthroughLayer(); - void SetDesc(const IStereoLayers::FLayerDesc& InLayerDesc); - void DestroyLayer(); - void DestroyLayer_RenderThread(); - bool CanReuseResources(const FPassthroughLayer* InLayer) const; - - bool Initialize_RenderThread(XrSession InSession, const FPassthroughLayer* InLayer = nullptr); - bool BuildPassthroughPokeActor(OculusXRHMD::FOculusPassthroughMeshRef PassthroughMesh, FPassthroughPokeActor& OutPassthroughPokeActor); - void UpdatePassthroughPokeActors_GameThread(); - void UpdatePassthroughStyle_RenderThread(const FEdgeStyleParameters& EdgeStyleParameters); - void UpdatePassthrough_RenderThread(FRHICommandListImmediate& RHICmdList, XrSpace Space, XrTime Time, float WorldToMetersScale, FTransform TrackingToWorld); - - XrCompositionLayerBaseHeaderType* GetXrCompositionLayerHeader(); - bool IsBackgroundLayer() const; - bool IsOverlayLayer() const; - bool PassthroughSupportsDepth() const; - const IStereoLayers::FLayerDesc& GetDesc() const { return LayerDesc; }; - const XrPassthroughLayerFB GetLayerHandle() const { return XrPassthroughLayer; } - - void AddPassthroughMesh_RenderThread(const TArray& Vertices, const TArray& Triangles, FMatrix Transformation, XrSpace Space, XrTriangleMeshFB& OutMeshHandle, XrGeometryInstanceFB& OutInstanceHandle); - void UpdatePassthroughMeshTransform_RenderThread(XrGeometryInstanceFB InstanceHandle, FMatrix Transformation, XrSpace Space, XrTime Time); - void RemovePassthroughMesh_RenderThread(XrTriangleMeshFB MeshHandle, XrGeometryInstanceFB InstanceHandle); - void ClearPassthroughPokeActors(); - - private: - TWeakPtr PassthroughExtension; - - FUserDefinedGeometryMapPtr UserDefinedGeometryMap; - FPassthroughPokeActorMapPtr PassthroughPokeActorMap; - - XrSession Session; - IStereoLayers::FLayerDesc LayerDesc; - XrPassthroughLayerFB XrPassthroughLayer; - XrCompositionLayerPassthroughFB XrCompositionLayerHeader; - XrPassthroughFB XrPassthroughInstance; - }; - - typedef TSharedPtr FPassthroughLayerPtr; - - struct FPassthroughLayerPtr_CompareId - { - FORCEINLINE bool operator()(const FPassthroughLayerPtr& A, const FPassthroughLayerPtr& B) const - { - return A->GetDesc().GetLayerId() < B->GetDesc().GetLayerId(); - } - }; - - struct FLayerDesc_ComparePriority - { - FORCEINLINE int32 GetLayerTypePriority(const IStereoLayers::FLayerDesc& LayerDesc) const - { - const bool IsPokeAHole = ((LayerDesc.Flags & IStereoLayers::LAYER_FLAG_SUPPORT_DEPTH) != 0) && LayerDesc.HasShape(); - bool IsUnderlay = false; - - if (LayerDesc.HasShape()) - { - const FReconstructedLayer& ReconstructedLayerProps = LayerDesc.GetShape(); - IsUnderlay = (ReconstructedLayerProps.PassthroughLayerOrder == PassthroughLayerOrder_Underlay); - } - else if (LayerDesc.HasShape()) - { - const FUserDefinedLayer& UserDefinedLayerProps = LayerDesc.GetShape(); - IsUnderlay = (UserDefinedLayerProps.PassthroughLayerOrder == PassthroughLayerOrder_Underlay); - } - - const int32 Priority = IsUnderlay ? -2 : IsPokeAHole ? -1 - : 1; - return Priority; - } - - FORCEINLINE bool operator()(const IStereoLayers::FLayerDesc& A, const IStereoLayers::FLayerDesc& B) const - { - // First order layers by type - const int32 PassA = GetLayerTypePriority(A); - const int32 PassB = GetLayerTypePriority(B); - - if (PassA != PassB) - { - return PassA < PassB; - } - - // Draw layers by ascending priority - if (A.Priority != B.Priority) - { - return A.Priority < B.Priority; - } - - // Draw layers by ascending id - return A.Id < B.Id; - } - - FORCEINLINE bool operator()(const FPassthroughLayerPtr& A, const FPassthroughLayerPtr& B) const - { - return (*this)(A->GetDesc(), B->GetDesc()); - } - }; - -} // namespace XRPassthrough diff --git a/Plugins/MetaXR/Source/OculusXRPassthrough/Private/OculusXRPassthroughLayerComponent.cpp b/Plugins/MetaXR/Source/OculusXRPassthrough/Private/OculusXRPassthroughLayerComponent.cpp deleted file mode 100644 index c898037..0000000 --- a/Plugins/MetaXR/Source/OculusXRPassthrough/Private/OculusXRPassthroughLayerComponent.cpp +++ /dev/null @@ -1,728 +0,0 @@ -// @lint-ignore-every LICENSELINT -// Copyright 1998-2020 Epic Games, Inc. All Rights Reserved. - -#include "OculusXRPassthroughLayerComponent.h" - -#include "Engine/StaticMesh.h" -#include "Engine/GameEngine.h" -#include "Components/StaticMeshComponent.h" -#include "ProceduralMeshComponent.h" -#include "OculusXRHMD.h" -#include "OculusXRPassthroughLayerShapes.h" -#include "OculusXRPersistentPassthroughInstance.h" -#include "OculusXRPassthroughSubsystem.h" -#include "Curves/CurveLinearColor.h" -#include "StaticMeshResources.h" - -DEFINE_LOG_CATEGORY(LogOculusPassthrough); - -void UOculusXRStereoLayerShapeReconstructed::ApplyShape(IStereoLayers::FLayerDesc& LayerDesc) -{ - const FEdgeStyleParameters EdgeStyleParameters( - bEnableEdgeColor, - bEnableColorMap, - TextureOpacityFactor, - Brightness, - Contrast, - Posterize, - Saturation, - EdgeColor, - ColorScale, - ColorOffset, - ColorMapType, - GetColorArray(bUseColorMapCurve, ColorMapCurve), - GenerateColorLutDescription(LutWeight, ColorLUTSource, ColorLUTTarget)); - LayerDesc.SetShape(EdgeStyleParameters, LayerOrder); -} - -void UOculusXRStereoLayerShapeUserDefined::ApplyShape(IStereoLayers::FLayerDesc& LayerDesc) -{ - // If there is no user geometry, set the layer hidden to avoid unnecessary cost - if (UserGeometryList.IsEmpty()) - LayerDesc.Flags |= IStereoLayers::LAYER_FLAG_HIDDEN; - - const FEdgeStyleParameters EdgeStyleParameters( - bEnableEdgeColor, - bEnableColorMap, - TextureOpacityFactor, - Brightness, - Contrast, - Posterize, - Saturation, - EdgeColor, - ColorScale, - ColorOffset, - ColorMapType, - GetColorArray(bUseColorMapCurve, ColorMapCurve), - GenerateColorLutDescription(LutWeight, ColorLUTSource, ColorLUTTarget)); - LayerDesc.SetShape(UserGeometryList, EdgeStyleParameters, LayerOrder); -} - -void UOculusXRStereoLayerShapeUserDefined::AddGeometry(const FString& MeshName, OculusXRHMD::FOculusPassthroughMeshRef PassthroughMesh, FTransform Transform, bool bUpdateTransform) -{ - FUserDefinedGeometryDesc UserDefinedGeometryDesc( - MeshName, - PassthroughMesh, - Transform, - bUpdateTransform); - - UserGeometryList.Add(UserDefinedGeometryDesc); -} - -void UOculusXRStereoLayerShapeUserDefined::RemoveGeometry(const FString& MeshName) -{ - UserGeometryList.RemoveAll([MeshName](const FUserDefinedGeometryDesc& Desc) { - return Desc.MeshName == MeshName; - }); -} - -UOculusXRPassthroughLayerComponent::UOculusXRPassthroughLayerComponent(const FObjectInitializer& ObjectInitializer) - : Super(ObjectInitializer) -{ -} - -void UOculusXRPassthroughLayerComponent::DestroyComponent(bool bPromoteChildren) -{ - Super::DestroyComponent(bPromoteChildren); - - UOculusXRPassthroughSubsystem* ptSubsystem = UOculusXRPassthroughSubsystem::GetPassthroughSubsystem(GetWorld()); - if (ptSubsystem != nullptr) - { - ptSubsystem->OnAnyLayerResumed.RemoveDynamic(this, &UOculusXRPassthroughLayerComponent::OnAnyLayerResumedEvent); - } - -#ifdef WITH_OCULUS_BRANCH - IStereoLayers* StereoLayers; - if (LayerId && GEngine->StereoRenderingDevice.IsValid() && (StereoLayers = GEngine->StereoRenderingDevice->GetStereoLayers()) != nullptr) - { - StereoLayers->DestroyLayer(LayerId); - LayerId = 0; - } -#endif -} - -void UOculusXRPassthroughLayerComponent::OnRegister() -{ - Super::OnRegister(); - - MarkStereoLayerDirty(); -} - -void UOculusXRPassthroughLayerComponent::BeginPlay() -{ - UOculusXRPassthroughSubsystem* ptSubsystem = UOculusXRPassthroughSubsystem::GetPassthroughSubsystem(GetWorld()); - if (ptSubsystem != nullptr) - { - ptSubsystem->OnAnyLayerResumed.AddDynamic(this, &UOculusXRPassthroughLayerComponent::OnAnyLayerResumedEvent); - } - - Super::BeginPlay(); -} - -void UOculusXRPassthroughLayerComponent::TickComponent(float DeltaTime, enum ELevelTick TickType, FActorComponentTickFunction* ThisTickFunction) -{ - if (Texture == nullptr && !LayerRequiresTexture()) - { - // UStereoLayerComponent hides components without textures - Texture = GEngine->DefaultTexture; - } - - UpdatePassthroughObjects(); - Super::TickComponent(DeltaTime, TickType, ThisTickFunction); -} - -void UOculusXRPassthroughLayerComponent::UpdatePassthroughObjects() -{ - UOculusXRStereoLayerShapeUserDefined* UserShape = Cast(Shape); - if (UserShape) - { - bool bDirty = false; - for (FUserDefinedGeometryDesc& Entry : UserShape->GetUserGeometryList()) - { - if (Entry.bUpdateTransform) - { - const UMeshComponent** MeshComponent = PassthroughComponentMap.Find(Entry.MeshName); - if (MeshComponent) - { - Entry.Transform = (*MeshComponent)->GetComponentTransform(); - bDirty = true; - } - } - } - if (bDirty) - { - MarkStereoLayerDirty(); - } - } -} - -OculusXRHMD::FOculusPassthroughMeshRef UOculusXRPassthroughLayerComponent::CreatePassthroughMesh(UProceduralMeshComponent* ProceduralMeshComponent) -{ - if (!ProceduralMeshComponent) - { - UE_LOG(LogOculusPassthrough, Error, TEXT("Passthrough Procedural Mesh is nullptr")); - return nullptr; - } - - TArray Triangles; - TArray Vertices; - int32 NumSections = ProceduralMeshComponent->GetNumSections(); - int VertexOffset = 0; // Each section start with vertex IDs of 0, in order to create a single mesh from all sections we need to offset those IDs by the amount of previous vertices - for (int32 s = 0; s < NumSections; ++s) - { - FProcMeshSection* ProcMeshSection = ProceduralMeshComponent->GetProcMeshSection(s); - for (int32 i = 0; i < ProcMeshSection->ProcIndexBuffer.Num(); ++i) - { - Triangles.Add(VertexOffset + ProcMeshSection->ProcIndexBuffer[i]); - } - - for (int32 i = 0; i < ProcMeshSection->ProcVertexBuffer.Num(); ++i) - { - Vertices.Add(ProcMeshSection->ProcVertexBuffer[i].Position); - } - - VertexOffset += ProcMeshSection->ProcVertexBuffer.Num(); - } - - OculusXRHMD::FOculusPassthroughMeshRef PassthroughMesh = new OculusXRHMD::FOculusPassthroughMesh(Vertices, Triangles); - return PassthroughMesh; -} - -OculusXRHMD::FOculusPassthroughMeshRef UOculusXRPassthroughLayerComponent::CreatePassthroughMesh(UStaticMeshComponent* StaticMeshComponent) -{ - if (!StaticMeshComponent) - { - UE_LOG(LogOculusPassthrough, Error, TEXT("Passthrough Static Mesh is nullptr")); - return nullptr; - } - - UStaticMesh* Mesh = StaticMeshComponent->GetStaticMesh(); - - if (!Mesh || !Mesh->GetRenderData()) - { - UE_LOG(LogOculusPassthrough, Error, TEXT("Passthrough Static Mesh has no Renderdata")); - return nullptr; - } - - if (Mesh->GetNumLODs() == 0) - { - UE_LOG(LogOculusPassthrough, Error, TEXT("Passthrough Static Mesh has no LODs")); - return nullptr; - } - - if (!Mesh->bAllowCPUAccess) - { - UE_LOG(LogOculusPassthrough, Error, TEXT("Passthrough Static Mesh Requires CPU Access")); - return nullptr; - } - - const int32 LODIndex = 0; - FStaticMeshLODResources& LOD = Mesh->GetRenderData()->LODResources[LODIndex]; - - TArray Triangles; - const int32 NumIndices = LOD.IndexBuffer.GetNumIndices(); - for (int32 i = 0; i < NumIndices; ++i) - { - Triangles.Add(LOD.IndexBuffer.GetIndex(i)); - } - - TArray Vertices; - const int32 NumVertices = LOD.VertexBuffers.PositionVertexBuffer.GetNumVertices(); - for (int32 i = 0; i < NumVertices; ++i) - { - Vertices.Add((FVector)LOD.VertexBuffers.PositionVertexBuffer.VertexPosition(i)); - } - - OculusXRHMD::FOculusPassthroughMeshRef PassthroughMesh = new OculusXRHMD::FOculusPassthroughMesh(Vertices, Triangles); - return PassthroughMesh; -} - -void UOculusXRPassthroughLayerComponent::AddSurfaceGeometry(AStaticMeshActor* StaticMeshActor, bool updateTransform) -{ - if (StaticMeshActor) - { - UStaticMeshComponent* StaticMeshComponent = StaticMeshActor->GetStaticMeshComponent(); - if (StaticMeshComponent) - AddStaticSurfaceGeometry(StaticMeshComponent, updateTransform); - } -} - -void UOculusXRPassthroughLayerComponent::AddStaticSurfaceGeometry(UStaticMeshComponent* StaticMeshComponent, bool updateTransform) -{ - if (!StaticMeshComponent) - return; - - UOculusXRStereoLayerShapeUserDefined* UserShape = Cast(Shape); - if (!UserShape) - return; - - OculusXRHMD::FOculusPassthroughMeshRef PassthroughMesh = CreatePassthroughMesh(StaticMeshComponent); - if (!PassthroughMesh) - return; - - const FString MeshName = StaticMeshComponent->GetFullName(); - const FTransform Transform = StaticMeshComponent->GetComponentTransform(); - UserShape->AddGeometry(MeshName, PassthroughMesh, Transform, updateTransform); - - PassthroughComponentMap.Add(MeshName, StaticMeshComponent); - MarkStereoLayerDirty(); -} - -void UOculusXRPassthroughLayerComponent::AddProceduralSurfaceGeometry(UProceduralMeshComponent* ProceduralMeshComponent, bool updateTransform) -{ - if (!ProceduralMeshComponent) - return; - - UOculusXRStereoLayerShapeUserDefined* UserShape = Cast(Shape); - if (!UserShape) - return; - - OculusXRHMD::FOculusPassthroughMeshRef PassthroughMesh = CreatePassthroughMesh(ProceduralMeshComponent); - if (!PassthroughMesh) - return; - - const FString MeshName = ProceduralMeshComponent->GetFullName(); - const FTransform Transform = ProceduralMeshComponent->GetComponentTransform(); - UserShape->AddGeometry(MeshName, PassthroughMesh, Transform, updateTransform); - - PassthroughComponentMap.Add(MeshName, ProceduralMeshComponent); - MarkStereoLayerDirty(); -} - -void UOculusXRPassthroughLayerComponent::RemoveSurfaceGeometry(AStaticMeshActor* StaticMeshActor) -{ - if (StaticMeshActor) - RemoveSurfaceGeometryComponent(StaticMeshActor->GetStaticMeshComponent()); -} - -void UOculusXRPassthroughLayerComponent::RemoveStaticSurfaceGeometry(UStaticMeshComponent* StaticMeshComponent) -{ - RemoveSurfaceGeometryComponent(StaticMeshComponent); -} - -void UOculusXRPassthroughLayerComponent::RemoveProceduralSurfaceGeometry(UProceduralMeshComponent* ProceduralMeshComponent) -{ - RemoveSurfaceGeometryComponent(ProceduralMeshComponent); -} - -void UOculusXRPassthroughLayerComponent::RemoveSurfaceGeometryComponent(UMeshComponent* MeshComponent) -{ - if (!MeshComponent) - return; - - UOculusXRStereoLayerShapeUserDefined* UserShape = Cast(Shape); - if (!UserShape) - return; - - const FString MeshName = MeshComponent->GetFullName(); - - UserShape->RemoveGeometry(MeshName); - PassthroughComponentMap.Remove(MeshName); - - MarkStereoLayerDirty(); -} - -bool UOculusXRPassthroughLayerComponent::IsSurfaceGeometry(AStaticMeshActor* StaticMeshActor) const -{ - return StaticMeshActor ? IsSurfaceGeometryComponent(StaticMeshActor->GetStaticMeshComponent()) : false; -} - -bool UOculusXRPassthroughLayerComponent::IsSurfaceGeometryComponent(const UMeshComponent* MeshComponent) const -{ - return MeshComponent ? PassthroughComponentMap.Contains(MeshComponent->GetFullName()) : false; -} - -void UOculusXRPassthroughLayerComponent::MarkPassthroughStyleForUpdate() -{ - bPassthroughStyleNeedsUpdate = true; -} - -#if WITH_EDITOR -bool UOculusXRPassthroughLayerComponent::CanEditChange(const FProperty* InProperty) const -{ - if (!Super::CanEditChange(InProperty)) - return false; - - const FName PropertyName = InProperty->GetFName(); - if (PropertyName == GET_MEMBER_NAME_CHECKED(UOculusXRPassthroughLayerComponent, Texture) - || PropertyName == GET_MEMBER_NAME_CHECKED(UOculusXRPassthroughLayerComponent, LeftTexture) - || PropertyName == GET_MEMBER_NAME_CHECKED(UOculusXRPassthroughLayerComponent, bLiveTexture) - || PropertyName == GET_MEMBER_NAME_CHECKED(UOculusXRPassthroughLayerComponent, bNoAlphaChannel) - || PropertyName == GET_MEMBER_NAME_CHECKED(UOculusXRPassthroughLayerComponent, bQuadPreserveTextureRatio) -#if defined(WITH_OCULUS_BRANCH) && UE_VERSION_OLDER_THAN(5, 5, 0) - // clang-format off - PRAGMA_DISABLE_DEPRECATION_WARNINGS - || PropertyName == GET_MEMBER_NAME_CHECKED(UOculusXRPassthroughLayerComponent, bBicubicFiltering) - PRAGMA_ENABLE_DEPRECATION_WARNINGS - // clang-format on -#endif -#if !UE_VERSION_OLDER_THAN(5, 4, 0) - || PropertyName == GET_MEMBER_NAME_CHECKED(UOculusXRPassthroughLayerComponent, AdditionalFlags) -#endif - || PropertyName == GET_MEMBER_NAME_CHECKED(UOculusXRPassthroughLayerComponent, QuadSize) - || PropertyName == GET_MEMBER_NAME_CHECKED(UOculusXRPassthroughLayerComponent, UVRect) - || PropertyName == GET_MEMBER_NAME_CHECKED(UOculusXRPassthroughLayerComponent, StereoLayerType)) - { - return false; - } - - return true; -} -#endif // WITH_EDITOR - -void UOculusXRPassthroughLayerComponent::OnAnyLayerResumedEvent(int InLayerId) -{ - if (LayerId == InLayerId) - { - OnLayerResumed.Broadcast(); - } -} - -bool UOculusXRPassthroughLayerComponent::LayerRequiresTexture() -{ - const bool bIsPassthroughShape = Shape && (Shape->IsA() || Shape->IsA()); - return !bIsPassthroughShape; -} - -void UOculusXRPassthroughLayerBase::SetTextureOpacity(float InOpacity) -{ - if (TextureOpacityFactor == InOpacity) - { - return; - } - - TextureOpacityFactor = InOpacity; - MarkStereoLayerDirty(); -} - -void UOculusXRPassthroughLayerBase::EnableEdgeColor(bool bInEnableEdgeColor) -{ - if (bEnableEdgeColor == bInEnableEdgeColor) - { - return; - } - bEnableEdgeColor = bInEnableEdgeColor; - MarkStereoLayerDirty(); -} - -void UOculusXRPassthroughLayerBase::EnableColorMap(bool bInEnableColorMap) -{ - if (bEnableColorMap == bInEnableColorMap) - { - return; - } - bEnableColorMap = bInEnableColorMap; - MarkStereoLayerDirty(); -} - -void UOculusXRPassthroughLayerBase::SetEdgeRenderingColor(FLinearColor InEdgeColor) -{ - if (EdgeColor == InEdgeColor) - { - return; - } - EdgeColor = InEdgeColor; - MarkStereoLayerDirty(); -} - -void UOculusXRPassthroughLayerBase::EnableColorMapCurve(bool bInEnableColorMapCurve) -{ - if (bUseColorMapCurve == bInEnableColorMapCurve) - { - return; - } - bUseColorMapCurve = bInEnableColorMapCurve; - ColorArray = GenerateColorArray(bUseColorMapCurve, ColorMapCurve); - MarkStereoLayerDirty(); -} - -void UOculusXRPassthroughLayerBase::SetColorMapCurve(UCurveLinearColor* InColorMapCurve) -{ - if (ColorMapCurve == InColorMapCurve) - { - return; - } - ColorMapCurve = InColorMapCurve; - ColorArray = GenerateColorArray(bUseColorMapCurve, ColorMapCurve); - MarkStereoLayerDirty(); -} - -void UOculusXRPassthroughLayerBase::SetColorMapType(EOculusXRColorMapType InColorMapType) -{ - if (ColorMapType == InColorMapType) - { - return; - } - ColorMapType = InColorMapType; - ColorArray = GenerateColorArray(bUseColorMapCurve, ColorMapCurve); - MarkStereoLayerDirty(); -} - -void UOculusXRPassthroughLayerBase::SetColorArray(const TArray& InColorArray) -{ - if (InColorArray.Num() == 0) - { - return; - } - - if (ColorMapType != ColorMapType_GrayscaleToColor) - { - UE_LOG(LogOculusPassthrough, Warning, TEXT("SetColorArray is ignored for color map types other than Grayscale to Color.")); - return; - } - - if (bUseColorMapCurve) - { - UE_LOG(LogOculusPassthrough, Warning, TEXT("UseColorMapCurve is enabled on the layer. Automatic disable and use the Array for color lookup")); - } - bUseColorMapCurve = false; - - ColorArray = InColorArray; - MarkStereoLayerDirty(); -} - -void UOculusXRPassthroughLayerBase::ClearColorMap() -{ - ColorArray.Empty(); -} - -void UOculusXRPassthroughLayerBase::SetColorMapControls(float InContrast, float InBrightness, float InPosterize) -{ - if (ColorMapType != ColorMapType_Grayscale && ColorMapType != ColorMapType_GrayscaleToColor) - { - UE_LOG(LogOculusPassthrough, Warning, TEXT("SetColorMapControls is ignored for color map types other than Grayscale and Grayscale to color.")); - return; - } - Contrast = FMath::Clamp(InContrast, -1.0f, 1.0f); - Brightness = FMath::Clamp(InBrightness, -1.0f, 1.0f); - Posterize = FMath::Clamp(InPosterize, 0.0f, 1.0f); - - MarkStereoLayerDirty(); -} - -void UOculusXRPassthroughLayerBase::SetBrightnessContrastSaturation(float InContrast, float InBrightness, float InSaturation) -{ - if (ColorMapType != ColorMapType_ColorAdjustment) - { - UE_LOG(LogOculusPassthrough, Warning, TEXT("SetBrightnessContrastSaturation is ignored for color map types other than Color Adjustment.")); - return; - } - Contrast = FMath::Clamp(InContrast, -1.0f, 1.0f); - Brightness = FMath::Clamp(InBrightness, -1.0f, 1.0f); - Saturation = FMath::Clamp(InSaturation, -1.0f, 1.0f); - - MarkStereoLayerDirty(); -} - -void UOculusXRPassthroughLayerBase::SetColorScaleAndOffset(FLinearColor InColorScale, FLinearColor InColorOffset) -{ - if (ColorScale == InColorScale && ColorOffset == InColorOffset) - { - return; - } - ColorScale = InColorScale; - ColorOffset = InColorOffset; - MarkStereoLayerDirty(); -} - -void UOculusXRPassthroughLayerBase::SetLayerPlacement(EOculusXRPassthroughLayerOrder InLayerOrder) -{ - if (LayerOrder == InLayerOrder) - { - UE_LOG(LogOculusPassthrough, Warning, TEXT("Same layer order as before, no change needed")); - return; - } - - LayerOrder = InLayerOrder; - this->MarkStereoLayerDirty(); -} - -void UOculusXRPassthroughLayerBase::SetColorLUTSource(class UOculusXRPassthroughColorLut* InColorLUTSource) -{ - if (ColorMapType != ColorMapType_ColorLut && ColorMapType != ColorMapType_ColorLut_Interpolated) - { - UE_LOG(LogOculusPassthrough, Warning, TEXT("SetColorLUT is ignored for color map types other than Color LUT.")); - return; - } - - if (InColorLUTSource == ColorLUTSource) - { - UE_LOG(LogOculusPassthrough, Warning, TEXT("Same color LUT source as before, no change needed")); - return; - } - - // Remove reference from the old LUT - if (ColorLUTSource) - ColorLUTSource->RemoveReference(this); - - ColorLUTSource = InColorLUTSource; - MarkStereoLayerDirty(); -} - -void UOculusXRPassthroughLayerBase::SetColorLUTTarget(class UOculusXRPassthroughColorLut* InColorLUTTarget) -{ - if (ColorMapType != ColorMapType_ColorLut_Interpolated) - { - UE_LOG(LogOculusPassthrough, Warning, TEXT("SetColorLUTTarget is ignored for color map types other than Interpolated Color LUT.")); - return; - } - - if (InColorLUTTarget == ColorLUTTarget) - { - UE_LOG(LogOculusPassthrough, Warning, TEXT("Same color LUT source as before, no change needed")); - return; - } - - // Remove reference from the old LUT - if (ColorLUTTarget) - ColorLUTTarget->RemoveReference(this); - - ColorLUTTarget = InColorLUTTarget; - MarkStereoLayerDirty(); -} - -void UOculusXRPassthroughLayerBase::SetColorLUTWeight(float InWeight) -{ - if (ColorMapType != ColorMapType_ColorLut && ColorMapType != ColorMapType_ColorLut_Interpolated) - { - UE_LOG(LogOculusPassthrough, Warning, TEXT("SetWeight is ignored for color map types other than Color LUT.")); - return; - } - - if (LutWeight == InWeight) - { - UE_LOG(LogOculusPassthrough, Warning, TEXT("Same lut weight as before, no change needed")); - return; - } - - LutWeight = InWeight; - MarkStereoLayerDirty(); -} - -void UOculusXRPassthroughLayerBase::RemoveColorLut() -{ - ClearLUTsReferences(); - - ColorLUTSource = nullptr; - ColorLUTTarget = nullptr; - MarkStereoLayerDirty(); -} - -void UOculusXRPassthroughLayerBase::ClearLUTsReferences() -{ - // Clear lut references - if (ColorLUTSource) - ColorLUTSource->RemoveReference(this); - if (ColorLUTTarget) - ColorLUTTarget->RemoveReference(this); -} - -void UOculusXRPassthroughLayerBase::BeginDestroy() -{ - ClearLUTsReferences(); - - Super::BeginDestroy(); -} - -TArray UOculusXRPassthroughLayerBase::GenerateColorArrayFromColorCurve(const UCurveLinearColor* InColorMapCurve) const -{ - if (InColorMapCurve == nullptr) - { - return TArray(); - } - - TArray NewColorArray; - constexpr uint32 TotalEntries = 256; - NewColorArray.Empty(); - NewColorArray.SetNum(TotalEntries); - - for (int32 Index = 0; Index < TotalEntries; ++Index) - { - const float Alpha = ((float)Index / TotalEntries); - NewColorArray[Index] = InColorMapCurve->GetLinearColorValue(Alpha); - } - return NewColorArray; -} - -TArray UOculusXRPassthroughLayerBase::GetOrGenerateNeutralColorArray() -{ - if (NeutralColorArray.Num() == 0) - { - const uint32 TotalEntries = 256; - NeutralColorArray.SetNum(TotalEntries); - - for (int32 Index = 0; Index < TotalEntries; ++Index) - { - NeutralColorArray[Index] = FLinearColor((float)Index / TotalEntries, (float)Index / TotalEntries, (float)Index / TotalEntries); - } - } - - return NeutralColorArray; -} - -TArray UOculusXRPassthroughLayerBase::GenerateColorArray(bool bInUseColorMapCurve, const UCurveLinearColor* InColorMapCurve) -{ - TArray NewColorArray; - if (bInUseColorMapCurve) - { - NewColorArray = GenerateColorArrayFromColorCurve(InColorMapCurve); - } - - // Check for existing Array, otherwise generate a neutral one - if (NewColorArray.Num() == 0) - { - NewColorArray = GetOrGenerateNeutralColorArray(); - } - - return NewColorArray; -} - -TArray UOculusXRPassthroughLayerBase::GetColorArray(bool bInUseColorMapCurve, const UCurveLinearColor* InColorMapCurve) -{ - if (ColorArray.Num() == 0) - { - if (bInUseColorMapCurve) - { - return GenerateColorArray(bInUseColorMapCurve, InColorMapCurve); - } - return GetOrGenerateNeutralColorArray(); - } - - return ColorArray; -} - -FColorLutDesc UOculusXRPassthroughLayerBase::GenerateColorLutDescription(float InLutWeight, UOculusXRPassthroughColorLut* InLutSource, UOculusXRPassthroughColorLut* InLutTarget) -{ - TArray ColorLuts; - if (InLutSource != nullptr && InLutSource->ColorLutType != EColorLutType::None) - { - uint64 ColorLutHandle = InLutSource->GetHandle(this); - if (ColorLutHandle != 0) - { - ColorLuts.Add(ColorLutHandle); - } - } - - if (InLutTarget != nullptr && ColorMapType == EOculusXRColorMapType::ColorMapType_ColorLut_Interpolated && ColorLuts.Num() > 0 && InLutSource->ColorLutType != EColorLutType::None) - { - uint64 ColorLutHandle = InLutTarget->GetHandle(this); - if (ColorLutHandle != 0) - { - ColorLuts.Add(ColorLutHandle); - } - } - - return FColorLutDesc(ColorLuts, InLutWeight); -} - -void UOculusXRPassthroughLayerBase::MarkStereoLayerDirty() -{ - if (UStereoLayerComponent* stereoLayerComponent = Cast(GetOuter())) - { - stereoLayerComponent->MarkStereoLayerDirty(); - } - else if (UOculusXRPersistentPassthroughInstance* pptInstance = Cast(GetOuter())) - { - pptInstance->UpdateLayer(); - } -} diff --git a/Plugins/MetaXR/Source/OculusXRPassthrough/Private/OculusXRPassthroughModule.cpp b/Plugins/MetaXR/Source/OculusXRPassthrough/Private/OculusXRPassthroughModule.cpp deleted file mode 100644 index a8959c1..0000000 --- a/Plugins/MetaXR/Source/OculusXRPassthrough/Private/OculusXRPassthroughModule.cpp +++ /dev/null @@ -1,59 +0,0 @@ -// Copyright (c) Meta Platforms, Inc. and affiliates. - -#include "OculusXRPassthroughModule.h" - -#include "OculusXRHMD.h" -#include "OculusXRPassthroughEventHandling.h" -#include "Misc/CoreDelegates.h" - -DEFINE_LOG_CATEGORY(LogOculusXRPassthrough); - -#define LOCTEXT_NAMESPACE "OculusXRPassthrough" - -//------------------------------------------------------------------------------------------------- -// FOculusXRPassthroughModule -//------------------------------------------------------------------------------------------------- - -FOculusXRPassthroughModule::FOculusXRPassthroughModule() -{ -} - -void FOculusXRPassthroughModule::StartupModule() -{ - PassthroughXR = MakeShareable(new XRPassthrough::FPassthroughXR()); - PassthroughXR->RegisterAsOpenXRExtension(); - - FCoreDelegates::OnPostEngineInit.AddRaw(this, &FOculusXRPassthroughModule::OnPostEngineInit); -} - -void FOculusXRPassthroughModule::ShutdownModule() -{ -} - -void FOculusXRPassthroughModule::OnPostEngineInit() -{ - if (IsRunningCommandlet()) - { - return; - } - - if (!GEngine) - { - UE_LOG(LogOculusXRPassthrough, Warning, TEXT("No GEngine, cannot add event polling delegate.")); - return; - } - - OculusXRHMD::FOculusXRHMD* HMD = OculusXRHMD::FOculusXRHMD::GetOculusXRHMD(); - if (!HMD) - { - FName XRSystemName = GEngine->XRSystem ? GEngine->XRSystem->GetSystemName() : "None"; - UE_LOG(LogOculusXRPassthrough, Warning, TEXT("Unable to retrieve OculusXRHMD, cannot add event polling delegate. (current xrsystem : %s)"), *XRSystemName.ToString()); - return; - } - - HMD->AddEventPollingDelegate(OculusXRHMD::FOculusXRHMDEventPollingDelegate::CreateStatic(&OculusXRPassthrough::FOculusXRPassthroughEventHandling::OnPollEvent)); -} - -IMPLEMENT_MODULE(FOculusXRPassthroughModule, OculusXRPassthrough) - -#undef LOCTEXT_NAMESPACE diff --git a/Plugins/MetaXR/Source/OculusXRPassthrough/Private/OculusXRPassthroughModule.h b/Plugins/MetaXR/Source/OculusXRPassthrough/Private/OculusXRPassthroughModule.h deleted file mode 100644 index c1cb72c..0000000 --- a/Plugins/MetaXR/Source/OculusXRPassthrough/Private/OculusXRPassthroughModule.h +++ /dev/null @@ -1,41 +0,0 @@ -// Copyright (c) Meta Platforms, Inc. and affiliates. - -#pragma once -#include "IOculusXRPassthroughModule.h" - -#include "OculusXRPassthroughXR.h" - -#define LOCTEXT_NAMESPACE "OculusXRPassthrough" - -DECLARE_LOG_CATEGORY_EXTERN(LogOculusXRPassthrough, Log, All); - -//------------------------------------------------------------------------------------------------- -// FOculusXRPassthroughModule -//------------------------------------------------------------------------------------------------- - -class FOculusXRPassthroughModule : public IOculusXRPassthroughModule -{ -public: - FOculusXRPassthroughModule(); - - static inline FOculusXRPassthroughModule& Get() - { - return FModuleManager::LoadModuleChecked("OculusXRPassthrough"); - } - - virtual void StartupModule() override; - virtual void ShutdownModule() override; - - void OnPostEngineInit(); - - TWeakPtr GetPassthroughExtensionPlugin() - { - return PassthroughXR; - } - -private: - typedef TSharedPtr FPassthroughXRPtr; - FPassthroughXRPtr PassthroughXR; -}; - -#undef LOCTEXT_NAMESPACE diff --git a/Plugins/MetaXR/Source/OculusXRPassthrough/Private/OculusXRPassthroughSubsystem.cpp b/Plugins/MetaXR/Source/OculusXRPassthrough/Private/OculusXRPassthroughSubsystem.cpp deleted file mode 100644 index 4a88511..0000000 --- a/Plugins/MetaXR/Source/OculusXRPassthrough/Private/OculusXRPassthroughSubsystem.cpp +++ /dev/null @@ -1,84 +0,0 @@ -// Copyright (c) Meta Platforms, Inc. and affiliates. - -#include "OculusXRPassthroughSubsystem.h" - -#include "Engine/World.h" -#include "Engine/GameInstance.h" -#include "OculusXRPersistentPassthroughInstance.h" -#include "OculusXRHMDRuntimeSettings.h" -#include "OculusXRHMD.h" -#include "OculusXRPassthroughEventHandling.h" -#include "OculusXRPassthroughModule.h" -#include "Engine/World.h" -#include "Engine/Texture2D.h" -#include "Rendering/Texture2DResource.h" - -UOculusXRPassthroughSubsystem* UOculusXRPassthroughSubsystem::GetPassthroughSubsystem(const UWorld* InWorld) -{ - if (InWorld) - { - return UGameInstance::GetSubsystem(InWorld->GetGameInstance()); - } - - return nullptr; -} - -UOculusXRPassthroughSubsystem::UOculusXRPassthroughSubsystem() -{ -} - -bool UOculusXRPassthroughSubsystem::ShouldCreateSubsystem(UObject* Outer) const -{ - // return true if "Passthrough Enabled" is checked in MetaXR plugin's settings. - - return GetDefault()->bInsightPassthroughEnabled; -} - -void UOculusXRPassthroughSubsystem::Initialize(FSubsystemCollectionBase& Collection) -{ - DelegateHandleLayerResumed = OculusXRPassthrough::FOculusXRPassthroughEventDelegates::OculusPassthroughLayerResumed.AddLambda([this](int layerID) { - UE_LOG(LogOculusXRPassthrough, Log, TEXT("UOculusXRPassthroughSubsystem - Received layer #%d resumed event"), layerID); - OnAnyLayerResumed.Broadcast(layerID); - }); -} - -void UOculusXRPassthroughSubsystem::Deinitialize() -{ - OculusXRPassthrough::FOculusXRPassthroughEventDelegates::OculusPassthroughLayerResumed.Remove(DelegateHandleLayerResumed); -} - -UOculusXRPersistentPassthroughInstance* UOculusXRPassthroughSubsystem::InitializePersistentPassthrough(FOculusXRPersistentPassthroughParameters Parameters, const FOculusXRPassthrough_LayerResumed_Single& LayerResumed) -{ - if (IsValid(PPTInstance)) - { - PPTInstance->AddLayerResumedSingleDelegate(LayerResumed); - PPTInstance->UpdateParameters(Parameters); - - return PPTInstance; - } - - PPTInstance = NewObject(this, "PersistentPassthroughInstance", RF_NoFlags); - PPTInstance->AddLayerResumedSingleDelegate(LayerResumed); - PPTInstance->InitLayer(Parameters); - OnAnyLayerResumed.AddDynamic(PPTInstance, &UOculusXRPersistentPassthroughInstance::OnAnyLayerResumedEvent); - - return PPTInstance; -} - -void UOculusXRPassthroughSubsystem::DestroyPersistentPassthrough() -{ - if (!IsValid(PPTInstance)) - { - return; - } - - OnAnyLayerResumed.RemoveDynamic(PPTInstance, &UOculusXRPersistentPassthroughInstance::OnAnyLayerResumedEvent); - PPTInstance->ConditionalBeginDestroy(); - PPTInstance = nullptr; -} - -UOculusXRPersistentPassthroughInstance* UOculusXRPassthroughSubsystem::GetPersistentPassthrough() const -{ - return PPTInstance; -} - diff --git a/Plugins/MetaXR/Source/OculusXRPassthrough/Private/OculusXRPassthroughXR.cpp b/Plugins/MetaXR/Source/OculusXRPassthrough/Private/OculusXRPassthroughXR.cpp deleted file mode 100644 index 8bc5c25..0000000 --- a/Plugins/MetaXR/Source/OculusXRPassthrough/Private/OculusXRPassthroughXR.cpp +++ /dev/null @@ -1,581 +0,0 @@ -// Copyright (c) Meta Platforms, Inc. and affiliates. - -#include "OculusXRPassthroughXR.h" - -#include "Engine/GameEngine.h" -#include "Engine/RendererSettings.h" -#include "IOpenXRHMDModule.h" -#include "Materials/Material.h" -#include "OculusXRHMD/Private/OculusXRResourceHolder.h" -#include "OculusXRHMD_CustomPresent.h" -#include "OculusXRHMDRuntimeSettings.h" -#include "OculusXRPassthroughXRFunctions.h" -#include "OculusXRPassthroughModule.h" -#include "OculusXRPassthroughEventHandling.h" -#include "OpenXRHMD.h" -#include "OpenXRHMD_Swapchain.h" -#include "StereoRendering.h" -#include "RenderGraphBuilder.h" - -#include "XRThreadUtils.h" - -#define LOCTEXT_NAMESPACE "OculusXRPassthrough" - -namespace XRPassthrough -{ - TWeakPtr FPassthroughXR::GetInstance() - { - return FOculusXRPassthroughModule::Get().GetPassthroughExtensionPlugin(); - } - - FPassthroughXR::FPassthroughXR() - : InvAlphaTexture(nullptr) - , ColorSwapchain(nullptr) - , ColorSwapChainTexture(nullptr) - , ProjectionLayerAlphaBlend{} - , Layers_RenderThread{} - , bPassthroughInitialized(false) - , PassthroughInstance{ XR_NULL_HANDLE } - , Settings(nullptr) - , OpenXRHMD(nullptr) - , WorldToMetersScale(100.0f) - , WorldToMetersScale_RenderThread(100.0f) - { - static const FName RendererModuleName("Renderer"); - RendererModule = FModuleManager::GetModulePtr(RendererModuleName); - Settings = MakeShareable(new FSettings()); - } - - FPassthroughXR::~FPassthroughXR() - { - } - - void FPassthroughXR::RegisterAsOpenXRExtension() - { -#if defined(WITH_OCULUS_BRANCH) - // Feature not enabled on Marketplace build. Currently only for the meta fork - RegisterOpenXRExtensionModularFeature(); -#endif - } - - bool FPassthroughXR::GetRequiredExtensions(TArray& OutExtensions) - { - OutExtensions.Add(XR_FB_PASSTHROUGH_EXTENSION_NAME); - OutExtensions.Add(XR_META_PASSTHROUGH_LAYER_RESUMED_EVENT_EXTENSION_NAME); - return true; - } - - bool FPassthroughXR::GetOptionalExtensions(TArray& OutExtensions) - { - OutExtensions.Add(XR_FB_COMPOSITION_LAYER_ALPHA_BLEND_EXTENSION_NAME); - OutExtensions.Add(XR_FB_TRIANGLE_MESH_EXTENSION_NAME); - OutExtensions.Add(XR_META_PASSTHROUGH_COLOR_LUT_EXTENSION_NAME); - return true; - } - - const void* FPassthroughXR::OnCreateInstance(class IOpenXRHMDModule* InModule, const void* InNext) - { - if (InModule != nullptr) - { - Settings->bExtLayerAlphaBlendAvailable = InModule->IsExtensionEnabled(XR_FB_COMPOSITION_LAYER_ALPHA_BLEND_EXTENSION_NAME); - Settings->bExtPassthroughAvailable = InModule->IsExtensionEnabled(XR_FB_PASSTHROUGH_EXTENSION_NAME); - Settings->bExtTriangleMeshAvailable = InModule->IsExtensionEnabled(XR_FB_TRIANGLE_MESH_EXTENSION_NAME); - Settings->bExtColorLutAvailable = InModule->IsExtensionEnabled(XR_META_PASSTHROUGH_COLOR_LUT_EXTENSION_NAME); - Settings->bExtLayerResumedEventAvailable = InModule->IsExtensionEnabled(XR_META_PASSTHROUGH_LAYER_RESUMED_EVENT_EXTENSION_NAME); - } - return InNext; - } - - const void* FPassthroughXR::OnCreateSession(XrInstance InInstance, XrSystemId InSystem, const void* InNext) - { - InitOpenXRFunctions(InInstance); - - Settings->PokeAHoleMaterial = Cast(FSoftObjectPath(TEXT("/OculusXR/Materials/PokeAHoleMaterial")).TryLoad()); - - OpenXRHMD = (FOpenXRHMD*)GEngine->XRSystem.Get(); - - const UOculusXRHMDRuntimeSettings* HMDSettings = GetDefault(); - Settings->bPassthroughEnabled = HMDSettings->bInsightPassthroughEnabled; - - return InNext; - } - - void FPassthroughXR::PostCreateSession(XrSession InSession) - { - if (Settings->bPassthroughEnabled) - { - ExecuteOnRenderThread([this, InSession](FRHICommandListImmediate& RHICmdList) { - InitializePassthrough(InSession); - }); - } - } - - void FPassthroughXR::OnDestroySession(XrSession InSession) - { - // Release resources - ExecuteOnRenderThread([this, InSession]() { - Layers_RenderThread.Reset(); - InvAlphaTexture.SafeRelease(); - - DeferredDeletion.HandleLayerDeferredDeletionQueue_RenderThread(true); - - ShutdownPassthrough(InSession); - }); - - OpenXRHMD = nullptr; - } - - void* FPassthroughXR::OnWaitFrame(XrSession InSession, void* InNext) - { - Update_GameThread(InSession); - return InNext; - } - - bool FPassthroughXR::IsPassthroughEnabled(void) const - { - return bPassthroughInitialized; - } - - void FPassthroughXR::InvertTextureAlpha_RenderThread(FRHICommandList& RHICmdList, FRHITexture* Texture, FRHITexture* TempTexture, const FIntRect& ViewportRect) - { - { - FRHITexture* SrcTexture = Texture; - FRHITexture* DstTexture = TempTexture; - const FIntRect SrcRect(ViewportRect); - const FIntRect DstRect(0, 0, ViewportRect.Size().X, ViewportRect.Size().Y); - - const bool bAlphaPremultiply = false; - const bool bNoAlphaWrite = false; - const bool bInvertSrcY = false; - const bool sRGBSource = false; - const bool bInvertAlpha = true; - const auto FeatureLevel = GEngine ? GEngine->GetDefaultWorldFeatureLevel() : GMaxRHIFeatureLevel; - const bool bUsingVulkan = RHIGetInterfaceType() == ERHIInterfaceType::Vulkan; - OculusXRHMD::FCustomPresent::CopyTexture_RenderThread(RHICmdList.GetAsImmediate(), RendererModule, DstTexture, SrcTexture, FeatureLevel, bUsingVulkan, - DstRect, SrcRect, bAlphaPremultiply, bNoAlphaWrite, bInvertSrcY, sRGBSource, bInvertAlpha); - } - - { - FRHICopyTextureInfo CopyInfo; - CopyInfo.Size = FIntVector(ViewportRect.Size().X, ViewportRect.Size().Y, 1); - CopyInfo.SourcePosition = FIntVector::ZeroValue; - CopyInfo.DestPosition = FIntVector(ViewportRect.Min.X, ViewportRect.Min.Y, 0); - CopyInfo.SourceSliceIndex = 0; - CopyInfo.DestSliceIndex = 0; - - if (Texture->GetDesc().IsTextureArray() && TempTexture->GetDesc().IsTextureArray()) - { - CopyInfo.NumSlices = FMath::Min(Texture->GetDesc().ArraySize, TempTexture->GetDesc().ArraySize); - } - - FRHITexture* SrcTexture = TempTexture; - FRHITexture* DstTexture = Texture; - RHICmdList.Transition(FRHITransitionInfo(SrcTexture, ERHIAccess::Unknown, ERHIAccess::CopySrc)); - RHICmdList.Transition(FRHITransitionInfo(DstTexture, ERHIAccess::Unknown, ERHIAccess::CopyDest)); - RHICmdList.CopyTexture(SrcTexture, DstTexture, CopyInfo); - RHICmdList.Transition(FRHITransitionInfo(DstTexture, ERHIAccess::CopyDest, ERHIAccess::SRVMask)); - RHICmdList.Transition(FRHITransitionInfo(SrcTexture, ERHIAccess::CopySrc, ERHIAccess::SRVMask)); - } - } - - FPassthroughLayerPtr FPassthroughXR::CreateStereoLayerFromDesc(const IStereoLayers::FLayerDesc& LayerDesc) const - { - FPassthroughLayerPtr Layer = nullptr; - - if (FPassthroughLayer::IsPassthoughLayerDesc(LayerDesc)) - { - check(PassthroughInstance != XR_NULL_HANDLE); - Layer = MakeShareable(new FPassthroughLayer(PassthroughInstance, GetInstance())); - } - return Layer; - } - - void FPassthroughXR::OnSetupLayers_RenderThread(XrSession InSession, const TArray& LayerIds) - { - check(IsInRenderingThread()); - -#ifdef WITH_OCULUS_BRANCH - ColorSwapchain = OpenXRHMD->GetColorSwapchain_RenderThread(); -#endif - -#if PLATFORM_WINDOWS - if (ColorSwapchain && InvAlphaTexture == nullptr) - { -#if UE_VERSION_OLDER_THAN(5, 5, 0) - const auto CVarPropagateAlpha = IConsoleManager::Get().FindTConsoleVariableDataInt(TEXT("r.PostProcessing.PropagateAlpha")); - const bool bPropagateAlpha = EAlphaChannelMode::FromInt(CVarPropagateAlpha->GetValueOnRenderThread()) == EAlphaChannelMode::AllowThroughTonemapper; -#else - const auto CVarPropagateAlpha = IConsoleManager::Get().FindConsoleVariable(TEXT("r.PostProcessing.PropagateAlpha")); - const bool bPropagateAlpha = CVarPropagateAlpha->GetBool(); -#endif - if (bPropagateAlpha) - { - const FRHITextureDesc TextureDesc = ColorSwapchain->GetTexture()->GetDesc(); - uint32 SizeX = TextureDesc.GetSize().X; - uint32 SizeY = TextureDesc.GetSize().Y; - EPixelFormat ColorFormat = TextureDesc.Format; - uint32 NumMips = TextureDesc.NumMips; - uint32 NumSamples = TextureDesc.NumSamples; - - FClearValueBinding ColorTextureBinding = FClearValueBinding::Black; - - const ETextureCreateFlags InvTextureCreateFlags = TexCreate_ShaderResource | TexCreate_RenderTargetable; - FRHITextureCreateDesc InvTextureDesc{}; - if (ColorSwapchain->GetTexture2DArray() != nullptr) - { - InvTextureDesc = FRHITextureCreateDesc::Create2DArray(TEXT("InvAlphaTexture")) - .SetArraySize(2) - .SetExtent(SizeX, SizeY) - .SetFormat(ColorFormat) - .SetNumMips(NumMips) - .SetNumSamples(NumSamples) - .SetFlags(InvTextureCreateFlags | TexCreate_TargetArraySlicesIndependently) - .SetClearValue(ColorTextureBinding); - } - else - { - InvTextureDesc = FRHITextureCreateDesc::Create2D(TEXT("InvAlphaTexture")) - .SetExtent(SizeX, SizeY) - .SetFormat(ColorFormat) - .SetNumMips(NumMips) - .SetNumSamples(NumSamples) - .SetFlags(InvTextureCreateFlags) - .SetClearValue(ColorTextureBinding); - } - InvAlphaTexture = RHICreateTexture(InvTextureDesc); - } - } -#endif - } - - void FPassthroughXR::UpdateCompositionLayers(XrSession InSession, TArray& Headers) - { - check(IsInRenderingThread() || IsInRHIThread()); - - TArray SortedLayers = Layers_RenderThread; - SortedLayers.Sort(FLayerDesc_ComparePriority()); - - // Headers array already contains (at least) one layer which is the eye's layer. - // Underlay/SupportDetph layers need to be inserted before that layer, ordered by priority. - int EyeLayerId = 0; - for (const FPassthroughLayerPtr& Layer : SortedLayers) - { - if (Layer->IsBackgroundLayer() || Layer->PassthroughSupportsDepth()) - { - XrCompositionLayerBaseHeaderType* CompositionLayerHeader = Layer->GetXrCompositionLayerHeader(); - if (CompositionLayerHeader != nullptr) - { - Headers.Insert(CompositionLayerHeader, EyeLayerId++); - } - } - else if (Layer->IsOverlayLayer()) - { - XrCompositionLayerBaseHeaderType* CompositionLayerHeader = Layer->GetXrCompositionLayerHeader(); - if (CompositionLayerHeader != nullptr) - { - Headers.Add(CompositionLayerHeader); - } - } - } - } - -#ifdef WITH_OCULUS_BRANCH - bool FPassthroughXR::OnEndGameFrame(FWorldContext& WorldContext) - { - FXRTrackingSystemBase* TS = static_cast(GEngine->XRSystem.Get()); - TrackingToWorld = TS->GetTrackingToWorldTransform(); - WorldToMetersScale = TS->GetWorldToMetersScale(); - return true; - } -#endif - - void FPassthroughXR::OnBeginRendering_GameThread(XrSession InSession) - { - // Send game thread layers to render thread ones - TArray XLayers; - XLayers.Empty(LayerMap.Num()); - - for (auto& Pair : LayerMap) - { - XLayers.Emplace(Pair.Value->Clone()); - } - - XLayers.Sort(FPassthroughLayerPtr_CompareId()); - - ENQUEUE_RENDER_COMMAND(TransferFrameStateToRenderingThread) - ([this, TrackingToWorld = TrackingToWorld, WorldToMetersScale = WorldToMetersScale, XLayers, InSession](FRHICommandListImmediate& RHICmdList) mutable { - TrackingToWorld_RenderThread = TrackingToWorld; - WorldToMetersScale_RenderThread = WorldToMetersScale; - - int32 XLayerIndex = 0; - int32 LayerIndex_RenderThread = 0; - TArray ValidLayers; - - // Scan for changes - while (XLayerIndex < XLayers.Num() && LayerIndex_RenderThread < Layers_RenderThread.Num()) - { - uint32 LayerIdA = XLayers[XLayerIndex]->GetDesc().GetLayerId(); - uint32 LayerIdB = Layers_RenderThread[LayerIndex_RenderThread]->GetDesc().GetLayerId(); - - if (LayerIdA < LayerIdB) // If a layer was inserted in the middle of existing ones - { - if (XLayers[XLayerIndex]->Initialize_RenderThread(InSession)) - { - ValidLayers.Add(XLayers[XLayerIndex]); - } - XLayerIndex++; - } - else if (LayerIdA > LayerIdB) // If a layer was removed in the middle of existing ones - { - DeferredDeletion.AddOpenXRLayerToDeferredDeletionQueue(Layers_RenderThread[LayerIndex_RenderThread++]); - } - else // This layer is not new nor removed - { - if (XLayers[XLayerIndex]->Initialize_RenderThread(InSession, Layers_RenderThread[LayerIndex_RenderThread].Get())) - { - LayerIndex_RenderThread++; - ValidLayers.Add(XLayers[XLayerIndex]); - } - XLayerIndex++; - } - } - - // Create missing layers - while (XLayerIndex < XLayers.Num()) - { - if (XLayers[XLayerIndex]->Initialize_RenderThread(InSession)) - { - ValidLayers.Add(XLayers[XLayerIndex]); - } - XLayerIndex++; - } - - // Delete remaining layers - while (LayerIndex_RenderThread < Layers_RenderThread.Num()) - { - DeferredDeletion.AddOpenXRLayerToDeferredDeletionQueue(Layers_RenderThread[LayerIndex_RenderThread++]); - } - - Layers_RenderThread = ValidLayers; - - DeferredDeletion.HandleLayerDeferredDeletionQueue_RenderThread(); - }); - } - -#ifdef WITH_OCULUS_BRANCH - void FPassthroughXR::OnBeginRenderingLate_RenderThread(XrSession InSession, FRHICommandListImmediate& RHICmdList) - { - ColorSwapchain = OpenXRHMD->GetColorSwapchain_RenderThread(); - - if (ColorSwapchain && InvAlphaTexture) - { - ColorSwapChainTexture = ColorSwapchain->GetTexture(); - } - } - - void FPassthroughXR::FinishRenderFrame_RenderThread(FRDGBuilder& GraphBuilder) - { - check(IsInRenderingThread()); - - if (ColorSwapChainTexture && InvAlphaTexture) - { - FRDGEventName PassName = RDG_EVENT_NAME("FPassthroughXR_InvertTextureAlpha"); - GraphBuilder.AddPass(MoveTemp(PassName), ERDGPassFlags::None, - [this, SwapchainTexture = ColorSwapChainTexture](FRHICommandListImmediate& RHICmdList) { - const FRHITextureDesc TextureDesc = SwapchainTexture->GetDesc(); - FIntRect TextureRect = FIntRect(0, 0, TextureDesc.GetSize().X, TextureDesc.GetSize().Y); - - InvertTextureAlpha_RenderThread(RHICmdList, SwapchainTexture, InvAlphaTexture, TextureRect); - }); - } - - XrSpace Space = OpenXRHMD->GetTrackingSpace(); - XrTime DisplayTime = OpenXRHMD->GetDisplayTime(); - - FRDGEventName PassName = RDG_EVENT_NAME("FPassthroughXR_UpdatePassthroughLayers"); - GraphBuilder.AddPass(MoveTemp(PassName), ERDGPassFlags::None, - [this, Space, DisplayTime](FRHICommandListImmediate& RHICmdList) { - for (const FPassthroughLayerPtr& Layer : Layers_RenderThread) - { - Layer->UpdatePassthrough_RenderThread(RHICmdList, - Space, - DisplayTime, - WorldToMetersScale_RenderThread, - TrackingToWorld_RenderThread); - } - }); - } -#endif - - void FPassthroughXR::OnEvent(XrSession InSession, const XrEventDataBaseHeader* InHeader) - { - switch (InHeader->type) - { - case XR_TYPE_EVENT_DATA_PASSTHROUGH_LAYER_RESUMED_META: - if (Settings->bExtLayerResumedEventAvailable) - { - const XrEventDataPassthroughLayerResumedMETA* LayerResumedEvent = - reinterpret_cast(InHeader); - - for (auto& Pair : LayerMap) - { - if (Pair.Value->GetLayerHandle() == LayerResumedEvent->layer) - { - UE_LOG(LogOculusXRPassthrough, Log, TEXT("FOculusXRPassthroughEventHandling - Passthrough Layer #%d resumed"), Pair.Value->GetDesc().GetLayerId()); - - // Send event - OculusXRPassthrough::FOculusXRPassthroughEventDelegates::OculusPassthroughLayerResumed.Broadcast(Pair.Value->GetDesc().GetLayerId()); - break; - } - } - } - break; - } - } - - const void* FPassthroughXR::OnEndProjectionLayer(XrSession InSession, int32 InLayerIndex, const void* InNext, XrCompositionLayerFlags& OutFlags) - { - check(IsInRenderingThread() || IsInRHIThread()); - - bool bHasBackgroundLayer = false; - for (const FPassthroughLayerPtr& Layer : Layers_RenderThread) - { - if (Layer->IsBackgroundLayer() || Layer->PassthroughSupportsDepth()) - { - bHasBackgroundLayer = true; - break; - } - } - - if (bHasBackgroundLayer) - { - OutFlags |= XR_COMPOSITION_LAYER_BLEND_TEXTURE_SOURCE_ALPHA_BIT; - - if (Settings->bExtLayerAlphaBlendAvailable) - { - InNext = &ProjectionLayerAlphaBlend; - ProjectionLayerAlphaBlend.type = XR_TYPE_COMPOSITION_LAYER_ALPHA_BLEND_FB; - ProjectionLayerAlphaBlend.srcFactorColor = XR_BLEND_FACTOR_ONE_MINUS_SRC_ALPHA_FB; - ProjectionLayerAlphaBlend.srcFactorAlpha = XR_BLEND_FACTOR_ONE_FB; - ProjectionLayerAlphaBlend.dstFactorColor = XR_BLEND_FACTOR_SRC_ALPHA_FB; - ProjectionLayerAlphaBlend.dstFactorAlpha = XR_BLEND_FACTOR_ZERO_FB; - ProjectionLayerAlphaBlend.next = nullptr; - } - else - { - // XR_COMPOSITION_LAYER_UNPREMULTIPLIED_ALPHA_BIT is required for the eye layer to be correctly blended - // when XR_FB_composition_layer_alpha_blend extension is not available (e.g. Link) - OutFlags |= XR_COMPOSITION_LAYER_UNPREMULTIPLIED_ALPHA_BIT; - } - } - - return InNext; - } - -#ifdef WITH_OCULUS_BRANCH - void FPassthroughXR::OnCreateLayer(const IStereoLayers::FLayerDesc& InLayerDesc, uint32 LayerId) - { - OculusXRHMD::CheckInGameThread(); - - if (FPassthroughLayerPtr Layer = CreateStereoLayerFromDesc(InLayerDesc)) - { - Layer->SetDesc(InLayerDesc); - - LayerMap.Add(LayerId, Layer); - } - } - - void FPassthroughXR::OnDestroyLayer(uint32 LayerId) - { - OculusXRHMD::CheckInGameThread(); - - FPassthroughLayerPtr* LayerFound = LayerMap.Find(LayerId); - if (LayerFound) - { - (*LayerFound)->DestroyLayer(); - } - LayerMap.Remove(LayerId); - } - - void FPassthroughXR::OnSetLayerDesc(uint32 LayerId, const IStereoLayers::FLayerDesc& InLayerDesc) - { - OculusXRHMD::CheckInGameThread(); - - FPassthroughLayerPtr* LayerFound = LayerMap.Find(LayerId); - - if (LayerFound) - { - (*LayerFound)->SetDesc(InLayerDesc); - } - } -#endif - - void FPassthroughXR::InitializePassthrough(XrSession InSession) - { - if (bPassthroughInitialized) - return; - - bPassthroughInitialized = true; - - check(IsInRenderingThread()); - - const XrPassthroughCreateInfoFB PassthroughCreateInfo = { XR_TYPE_PASSTHROUGH_CREATE_INFO_FB }; - - XrResult CreatePassthroughResult = xrCreatePassthroughFB(InSession, &PassthroughCreateInfo, &PassthroughInstance); - if (!XR_SUCCEEDED(CreatePassthroughResult)) - { - UE_LOG(LogOculusXRPassthrough, Error, TEXT("xrCreatePassthroughFB failed, error : %i"), CreatePassthroughResult); - return; - } - - XrResult PassthroughStartResult = xrPassthroughStartFB(PassthroughInstance); - if (!XR_SUCCEEDED(PassthroughStartResult)) - { - UE_LOG(LogOculusXRPassthrough, Error, TEXT("xrPassthroughStartFB failed, error : %i"), PassthroughStartResult); - return; - } - } - - void FPassthroughXR::ShutdownPassthrough(XrSession InSession) - { - if (!bPassthroughInitialized) - return; - - bPassthroughInitialized = false; - - check(IsInRenderingThread()); - - if (PassthroughInstance != XR_NULL_HANDLE) - { - XrResult Result = xrDestroyPassthroughFB(PassthroughInstance); - if (!XR_SUCCEEDED(Result)) - { - UE_LOG(LogOculusXRPassthrough, Error, TEXT("xrDestroyPassthroughFB failed, error : %i"), Result); - } - PassthroughInstance = nullptr; - } - } - - void FPassthroughXR::Update_GameThread(XrSession InSession) - { - check(IsInGameThread()); - - check(Settings != nullptr); - const bool bPassthroughEnabled = Settings->bPassthroughEnabled; - - ExecuteOnRenderThread_DoNotWait([this, InSession, bPassthroughEnabled](FRHICommandListImmediate& RHICmdList) { - if (bPassthroughEnabled && !bPassthroughInitialized) - { - InitializePassthrough(InSession); - } - - if (!bPassthroughEnabled && bPassthroughInitialized) - { - ShutdownPassthrough(InSession); - } - }); - } - -} // namespace XRPassthrough - -#undef LOCTEXT_NAMESPACE diff --git a/Plugins/MetaXR/Source/OculusXRPassthrough/Private/OculusXRPassthroughXR.h b/Plugins/MetaXR/Source/OculusXRPassthrough/Private/OculusXRPassthroughXR.h deleted file mode 100644 index ca45084..0000000 --- a/Plugins/MetaXR/Source/OculusXRPassthrough/Private/OculusXRPassthroughXR.h +++ /dev/null @@ -1,122 +0,0 @@ -// Copyright (c) Meta Platforms, Inc. and affiliates. - -#pragma once - -// Including the khronos openxr header here to override the one included from IOpenXREntensionPlugin, making sure we use the latest one. -#include "khronos/openxr/openxr.h" -#include "khronos/openxr/meta_openxr_preview/meta_passthrough_layer_resumed_event.h" -#include "IOpenXRExtensionPlugin.h" -#include "IStereoLayers.h" -#include "OculusXRPassthroughLayer.h" -#include "OculusXRPassthroughXR_DeletionQueue.h" - -#define LOCTEXT_NAMESPACE "OculusXRPassthrough" - -class FOpenXRSwapchain; -class FOpenXRHMD; -class UMaterial; - -namespace XRPassthrough -{ - struct FSettings - { - UMaterial* PokeAHoleMaterial; - - bool bPassthroughEnabled; - - bool bExtLayerAlphaBlendAvailable; - bool bExtPassthroughAvailable; - bool bExtTriangleMeshAvailable; - bool bExtColorLutAvailable; - bool bExtLayerResumedEventAvailable; - }; - typedef TSharedPtr FSettingsPtr; - - class FPassthroughXR : public IOpenXRExtensionPlugin - { - public: - // IOculusXROpenXRHMDPlugin - virtual void* OnWaitFrame(XrSession InSession, void* InNext) override; - virtual bool GetRequiredExtensions(TArray& OutExtensions) override; - virtual bool GetOptionalExtensions(TArray& OutExtensions) override; - virtual const void* OnCreateInstance(class IOpenXRHMDModule* InModule, const void* InNext) override; - virtual const void* OnCreateSession(XrInstance InInstance, XrSystemId InSystem, const void* InNext) override; - virtual void PostCreateSession(XrSession InSession) override; - virtual void OnDestroySession(XrSession InSession) override; - virtual const void* OnEndProjectionLayer(XrSession InSession, int32 InLayerIndex, const void* InNext, XrCompositionLayerFlags& OutFlags) override; - -#ifdef WITH_OCULUS_BRANCH - virtual void OnCreateLayer(const IStereoLayers::FLayerDesc& InLayerDesc, uint32 LayerId) override; - virtual void OnDestroyLayer(uint32 LayerId) override; - virtual void OnSetLayerDesc(uint32 LayerId, const IStereoLayers::FLayerDesc& InLayerDesc) override; -#endif - - virtual void OnSetupLayers_RenderThread(XrSession InSession, const TArray& LayerIds) override; - virtual void UpdateCompositionLayers(XrSession InSession, TArray& Headers) override; - -#ifdef WITH_OCULUS_BRANCH - virtual bool OnEndGameFrame(FWorldContext& WorldContext) override; -#endif - - virtual void OnBeginRendering_GameThread(XrSession InSession) override; -#ifdef WITH_OCULUS_BRANCH - virtual void OnBeginRenderingLate_RenderThread(XrSession InSession, FRHICommandListImmediate& RHICmdList) override; - virtual void FinishRenderFrame_RenderThread(FRDGBuilder& GraphBuilder) override; -#endif - - virtual void OnEvent(XrSession InSession, const XrEventDataBaseHeader* InHeader) override; - - public: - static TWeakPtr GetInstance(); - static bool IsPassthoughLayerDesc(const IStereoLayers::FLayerDesc& LayerDesc); - FPassthroughXR(); - virtual ~FPassthroughXR(); - void RegisterAsOpenXRExtension(); - - XrPassthroughFB GetPassthroughInstance() const - { - return PassthroughInstance; - } - - FSettingsPtr GetSettings() const - { - return Settings; - } - - OCULUSXRPASSTHROUGH_API bool IsPassthroughEnabled(void) const; - - private: - void InvertTextureAlpha_RenderThread(FRHICommandList& RHICmdList, FRHITexture* Texture, FRHITexture* TempTexture, const FIntRect& ViewportRect); - - FPassthroughLayerPtr CreateStereoLayerFromDesc(const IStereoLayers::FLayerDesc& LayerDesc) const; - void ShutdownPassthrough(XrSession InSession); - void InitializePassthrough(XrSession InSession); - void Update_GameThread(XrSession InSession); - - IRendererModule* RendererModule; - FTextureRHIRef InvAlphaTexture; - FOpenXRSwapchain* ColorSwapchain; - FRHITexture* ColorSwapChainTexture; - - XrCompositionLayerAlphaBlendFB ProjectionLayerAlphaBlend; - TMap LayerMap; - TArray Layers_RenderThread; - - XRPassthrough::FDeferredDeletionQueue DeferredDeletion; - - bool bPassthroughInitialized; - XrPassthroughFB PassthroughInstance; - - FSettingsPtr Settings; - - FOpenXRHMD* OpenXRHMD; - - float WorldToMetersScale; - float WorldToMetersScale_RenderThread; - FTransform TrackingToWorld; - FTransform TrackingToWorld_RenderThread; - }; - -} // namespace XRPassthrough - -#undef LOCTEXT_NAMESPACE diff --git a/Plugins/MetaXR/Source/OculusXRPassthrough/Private/OculusXRPassthroughXRFunctions.cpp b/Plugins/MetaXR/Source/OculusXRPassthrough/Private/OculusXRPassthroughXRFunctions.cpp deleted file mode 100644 index a540e46..0000000 --- a/Plugins/MetaXR/Source/OculusXRPassthrough/Private/OculusXRPassthroughXRFunctions.cpp +++ /dev/null @@ -1,48 +0,0 @@ -// Copyright (c) Meta Platforms, Inc. and affiliates. - -#include "OculusXRPassthroughXRFunctions.h" -#include "OpenXRCore.h" -#include "OpenXR/OculusXROpenXRUtilities.h" - -namespace XRPassthrough -{ - PFN_xrCreatePassthroughFB xrCreatePassthroughFB = nullptr; - PFN_xrDestroyPassthroughFB xrDestroyPassthroughFB = nullptr; - PFN_xrPassthroughStartFB xrPassthroughStartFB = nullptr; - PFN_xrPassthroughPauseFB xrPassthroughPauseFB = nullptr; - PFN_xrCreatePassthroughLayerFB xrCreatePassthroughLayerFB = nullptr; - PFN_xrDestroyPassthroughLayerFB xrDestroyPassthroughLayerFB = nullptr; - PFN_xrPassthroughLayerPauseFB xrPassthroughLayerPauseFB = nullptr; - PFN_xrPassthroughLayerResumeFB xrPassthroughLayerResumeFB = nullptr; - PFN_xrPassthroughLayerSetStyleFB xrPassthroughLayerSetStyleFB = nullptr; - TOptional xrCreateTriangleMeshFB = nullptr; - TOptional xrDestroyTriangleMeshFB = nullptr; - PFN_xrCreateGeometryInstanceFB xrCreateGeometryInstanceFB = nullptr; - PFN_xrDestroyGeometryInstanceFB xrDestroyGeometryInstanceFB = nullptr; - PFN_xrGeometryInstanceSetTransformFB xrGeometryInstanceSetTransformFB = nullptr; - PFN_xrCreatePassthroughColorLutMETA xrCreatePassthroughColorLutMETA = nullptr; - PFN_xrDestroyPassthroughColorLutMETA xrDestroyPassthroughColorLutMETA = nullptr; - PFN_xrUpdatePassthroughColorLutMETA xrUpdatePassthroughColorLutMETA = nullptr; - - void InitOpenXRFunctions(XrInstance InInstance) - { - OculusXR::XRGetInstanceProcAddr(InInstance, "xrCreatePassthroughFB", &xrCreatePassthroughFB); - OculusXR::XRGetInstanceProcAddr(InInstance, "xrDestroyPassthroughFB", &xrDestroyPassthroughFB); - OculusXR::XRGetInstanceProcAddr(InInstance, "xrPassthroughStartFB", &xrPassthroughStartFB); - OculusXR::XRGetInstanceProcAddr(InInstance, "xrPassthroughPauseFB", &xrPassthroughPauseFB); - OculusXR::XRGetInstanceProcAddr(InInstance, "xrCreatePassthroughLayerFB", &xrCreatePassthroughLayerFB); - OculusXR::XRGetInstanceProcAddr(InInstance, "xrDestroyPassthroughLayerFB", &xrDestroyPassthroughLayerFB); - OculusXR::XRGetInstanceProcAddr(InInstance, "xrPassthroughLayerPauseFB", &xrPassthroughLayerPauseFB); - OculusXR::XRGetInstanceProcAddr(InInstance, "xrPassthroughLayerResumeFB", &xrPassthroughLayerResumeFB); - OculusXR::XRGetInstanceProcAddr(InInstance, "xrPassthroughLayerSetStyleFB", &xrPassthroughLayerSetStyleFB); - OculusXR::XRGetInstanceProcAddr(InInstance, "xrCreateTriangleMeshFB", &xrCreateTriangleMeshFB); - OculusXR::XRGetInstanceProcAddr(InInstance, "xrDestroyTriangleMeshFB", &xrDestroyTriangleMeshFB); - OculusXR::XRGetInstanceProcAddr(InInstance, "xrCreateGeometryInstanceFB", &xrCreateGeometryInstanceFB); - OculusXR::XRGetInstanceProcAddr(InInstance, "xrDestroyGeometryInstanceFB", &xrDestroyGeometryInstanceFB); - OculusXR::XRGetInstanceProcAddr(InInstance, "xrGeometryInstanceSetTransformFB", &xrGeometryInstanceSetTransformFB); - OculusXR::XRGetInstanceProcAddr(InInstance, "xrCreatePassthroughColorLutMETA", &xrCreatePassthroughColorLutMETA); - OculusXR::XRGetInstanceProcAddr(InInstance, "xrDestroyPassthroughColorLutMETA", &xrDestroyPassthroughColorLutMETA); - OculusXR::XRGetInstanceProcAddr(InInstance, "xrUpdatePassthroughColorLutMETA", &xrUpdatePassthroughColorLutMETA); - } - -} // namespace XRPassthrough diff --git a/Plugins/MetaXR/Source/OculusXRPassthrough/Private/OculusXRPassthroughXRFunctions.h b/Plugins/MetaXR/Source/OculusXRPassthrough/Private/OculusXRPassthroughXRFunctions.h deleted file mode 100644 index 4a56f30..0000000 --- a/Plugins/MetaXR/Source/OculusXRPassthrough/Private/OculusXRPassthroughXRFunctions.h +++ /dev/null @@ -1,29 +0,0 @@ -// Copyright (c) Meta Platforms, Inc. and affiliates. - -#pragma once - -#include "khronos/openxr/openxr.h" -#include "Misc/Optional.h" - -namespace XRPassthrough -{ - extern PFN_xrCreatePassthroughFB xrCreatePassthroughFB; - extern PFN_xrDestroyPassthroughFB xrDestroyPassthroughFB; - extern PFN_xrPassthroughStartFB xrPassthroughStartFB; - extern PFN_xrPassthroughPauseFB xrPassthroughPauseFB; - extern PFN_xrCreatePassthroughLayerFB xrCreatePassthroughLayerFB; - extern PFN_xrDestroyPassthroughLayerFB xrDestroyPassthroughLayerFB; - extern PFN_xrPassthroughLayerPauseFB xrPassthroughLayerPauseFB; - extern PFN_xrPassthroughLayerResumeFB xrPassthroughLayerResumeFB; - extern PFN_xrPassthroughLayerSetStyleFB xrPassthroughLayerSetStyleFB; - extern TOptional xrCreateTriangleMeshFB; - extern TOptional xrDestroyTriangleMeshFB; - extern PFN_xrCreateGeometryInstanceFB xrCreateGeometryInstanceFB; - extern PFN_xrDestroyGeometryInstanceFB xrDestroyGeometryInstanceFB; - extern PFN_xrGeometryInstanceSetTransformFB xrGeometryInstanceSetTransformFB; - extern PFN_xrCreatePassthroughColorLutMETA xrCreatePassthroughColorLutMETA; - extern PFN_xrDestroyPassthroughColorLutMETA xrDestroyPassthroughColorLutMETA; - extern PFN_xrUpdatePassthroughColorLutMETA xrUpdatePassthroughColorLutMETA; - - void InitOpenXRFunctions(XrInstance InInstance); -} // namespace XRPassthrough diff --git a/Plugins/MetaXR/Source/OculusXRPassthrough/Private/OculusXRPassthroughXR_DeletionQueue.cpp b/Plugins/MetaXR/Source/OculusXRPassthrough/Private/OculusXRPassthroughXR_DeletionQueue.cpp deleted file mode 100644 index d432092..0000000 --- a/Plugins/MetaXR/Source/OculusXRPassthrough/Private/OculusXRPassthroughXR_DeletionQueue.cpp +++ /dev/null @@ -1,50 +0,0 @@ -// @lint-ignore-every LICENSELINT -// Copyright Epic Games, Inc. All Rights Reserved. - -#include "OculusXRPassthroughXR_DeletionQueue.h" - -#include "XRThreadUtils.h" -#include "OculusXRHMDModule.h" -#include "OculusXRPassthroughXRFunctions.h" -#include "OculusXRPassthroughLayer.h" - -namespace XRPassthrough -{ - - //------------------------------------------------------------------------------------------------- - // FDeferredDeletionQueue - //------------------------------------------------------------------------------------------------- - const uint32 NUM_FRAMES_TO_WAIT_FOR_OPENXR_LAYER_DELETE = 7; - - void FDeferredDeletionQueue::AddOpenXRLayerToDeferredDeletionQueue(const XRPassthrough::FPassthroughLayerPtr& ptr) - { - DeferredDeletionEntry Entry; - Entry.OpenXRLayer = ptr; - Entry.FrameEnqueued = GFrameCounter; - Entry.EntryType = DeferredDeletionEntry::DeferredDeletionEntryType::OpenXRLayer; - DeferredDeletionArray.Add(Entry); - } - - void FDeferredDeletionQueue::HandleLayerDeferredDeletionQueue_RenderThread(bool bDeleteImmediately) - { - // Traverse list backwards so the swap switches to elements already tested - for (int32 Index = DeferredDeletionArray.Num() - 1; Index >= 0; --Index) - { - DeferredDeletionEntry* Entry = &DeferredDeletionArray[Index]; - if (Entry->EntryType == DeferredDeletionEntry::DeferredDeletionEntryType::OpenXRLayer) - { - if (bDeleteImmediately || GFrameCounter > Entry->FrameEnqueued + NUM_FRAMES_TO_WAIT_FOR_OPENXR_LAYER_DELETE) - { - Entry->OpenXRLayer->DestroyLayer_RenderThread(); - -#if UE_VERSION_OLDER_THAN(5, 5, 0) - DeferredDeletionArray.RemoveAtSwap(Index, 1, false); -#else - DeferredDeletionArray.RemoveAtSwap(Index, 1, EAllowShrinking::No); -#endif - } - } - } - } - -} // namespace XRPassthrough diff --git a/Plugins/MetaXR/Source/OculusXRPassthrough/Private/OculusXRPassthroughXR_DeletionQueue.h b/Plugins/MetaXR/Source/OculusXRPassthrough/Private/OculusXRPassthroughXR_DeletionQueue.h deleted file mode 100644 index 529f456..0000000 --- a/Plugins/MetaXR/Source/OculusXRPassthrough/Private/OculusXRPassthroughXR_DeletionQueue.h +++ /dev/null @@ -1,42 +0,0 @@ -// @lint-ignore-every LICENSELINT -// Copyright Epic Games, Inc. All Rights Reserved. - -#pragma once -#include "OculusXRHMDPrivate.h" - -namespace XRPassthrough -{ - class FPassthroughLayer; - typedef TSharedPtr FPassthroughLayerPtr; -} // namespace XRPassthrough - -namespace XRPassthrough -{ - //------------------------------------------------------------------------------------------------- - // FDeferredDeletionQueue - //------------------------------------------------------------------------------------------------- - - class FDeferredDeletionQueue - { - public: - void AddOpenXRLayerToDeferredDeletionQueue(const FPassthroughLayerPtr& ptr); - void HandleLayerDeferredDeletionQueue_RenderThread(bool bDeleteImmediately = false); - - private: - struct DeferredDeletionEntry - { - enum class DeferredDeletionEntryType - { - OpenXRLayer - }; - - XRPassthrough::FPassthroughLayerPtr OpenXRLayer; - - uint32 FrameEnqueued; - DeferredDeletionEntryType EntryType; - }; - - TArray DeferredDeletionArray; - }; - -} // namespace XRPassthrough diff --git a/Plugins/MetaXR/Source/OculusXRPassthrough/Private/OculusXRPersistentPassthroughInstance.cpp b/Plugins/MetaXR/Source/OculusXRPassthrough/Private/OculusXRPersistentPassthroughInstance.cpp deleted file mode 100644 index da47c74..0000000 --- a/Plugins/MetaXR/Source/OculusXRPassthrough/Private/OculusXRPersistentPassthroughInstance.cpp +++ /dev/null @@ -1,179 +0,0 @@ -// Copyright (c) Meta Platforms, Inc. and affiliates. - -#include "OculusXRPersistentPassthroughInstance.h" -#include "Engine/GameEngine.h" -#include "IStereoLayers.h" -#include "OculusXRPassthroughLayerComponent.h" -#include "TextureResource.h" - -void UOculusXRPersistentPassthroughInstance::SetVisible(bool InVisible) -{ - Parameters.bVisible = InVisible; - - UpdateLayer(); -} - -void UOculusXRPersistentPassthroughInstance::SetPriority(int32 InPriority) -{ - Parameters.Priority = InPriority; - - UpdateLayer(); -} - -UOculusXRPersistentPassthroughInstance::UOculusXRPersistentPassthroughInstance(const FObjectInitializer& ObjectInitializer) -{ - Parameters.Shape = ObjectInitializer.CreateDefaultSubobject(this, TEXT("PPT_StereoLayerShapeReconstructed")); -} - -void UOculusXRPersistentPassthroughInstance::InitLayer(FOculusXRPersistentPassthroughParameters InParameters) -{ - UpdateParameters(InParameters); -} - -void UOculusXRPersistentPassthroughInstance::UpdateParameters(FOculusXRPersistentPassthroughParameters InParameters) -{ -#if WITH_EDITOR - // We need the instance to be the owner of the shape, but in editor the shape still exist and its owner is the BP calling the method. - // So we clear it to force a new one to be created with LoadShape(this) - InParameters.Shape = nullptr; -#endif - - if (InParameters.LoadShape(this) == nullptr) - { - Parameters.Shape = NewObject(this, NAME_None, RF_Public); - } - - Parameters = InParameters; - - UpdateLayer(); -} - -void UOculusXRPersistentPassthroughInstance::UpdateLayer() -{ - IStereoLayers* StereoLayers; - if (!GEngine->StereoRenderingDevice.IsValid() || (StereoLayers = GEngine->StereoRenderingDevice->GetStereoLayers()) == nullptr) - { - return; - } - - IStereoLayers::FLayerDesc LayerDesc; - LayerDesc.Priority = Parameters.Priority; - LayerDesc.QuadSize = FVector2D(100.f, 100.f); - - LayerDesc.Transform = FTransform::Identity; - - TObjectPtr Texture = GEngine->DefaultTexture; - if (Texture) - { - Texture->SetForceMipLevelsToBeResident(30.0f); - LayerDesc.Texture = Texture->GetResource()->TextureRHI; - LayerDesc.Flags |= (Texture->GetMaterialType() == MCT_TextureExternal) ? IStereoLayers::LAYER_FLAG_TEX_EXTERNAL : 0; - } - - LayerDesc.Flags |= (!Parameters.bVisible) ? IStereoLayers::LAYER_FLAG_HIDDEN : 0; - - LayerDesc.PositionType = IStereoLayers::FaceLocked; - - // Set the correct layer shape and apply any shape-specific properties - Parameters.Shape->ApplyShape(LayerDesc); - - if (LayerId != IStereoLayers::FLayerDesc::INVALID_LAYER_ID) - { - StereoLayers->SetLayerDesc(LayerId, LayerDesc); - } - else - { - LayerId = StereoLayers->CreateLayer(LayerDesc); - } - - StereoLayers->MarkTextureForUpdate(LayerId); -} - -void UOculusXRPersistentPassthroughInstance::BeginDestroy() -{ - IStereoLayers* StereoLayers; - if (LayerId != IStereoLayers::FLayerDesc::INVALID_LAYER_ID && GEngine->StereoRenderingDevice.IsValid() && (StereoLayers = GEngine->StereoRenderingDevice->GetStereoLayers()) != nullptr) - { - StereoLayers->DestroyLayer(LayerId); - LayerId = IStereoLayers::FLayerDesc::INVALID_LAYER_ID; - } - - Super::BeginDestroy(); -} - -void UOculusXRPersistentPassthroughInstance::OnAnyLayerResumedEvent(int InLayerId) -{ - if (LayerId == InLayerId) - { - // Execute all single delegates (added from UOculusXRPassthroughSubsystem::InitializePersistentPassthrough) - for (const FOculusXRPassthrough_LayerResumed_Single& Delegate : LayerResumedSingleDelegates) - { - Delegate.ExecuteIfBound(); - } - - OnLayerResumed.Broadcast(); - } -} - -void UOculusXRPersistentPassthroughInstance::AddLayerResumedSingleDelegate(const FOculusXRPassthrough_LayerResumed_Single& Delegate) -{ - if (!Delegate.IsBound()) - return; - - LayerResumedSingleDelegates.Add(Delegate); -} - -// Save all of the Shape's properties in temporary properties which can always be serialized -void FOculusXRPersistentPassthroughParameters::ApplyShape() -{ - if (!Shape) - return; - - TempShape_LayerOrder = Shape->LayerOrder; - TempShape_TextureOpacityFactor = Shape->TextureOpacityFactor; - TempShape_bEnableEdgeColor = Shape->bEnableEdgeColor; - TempShape_EdgeColor = Shape->EdgeColor; - TempShape_bEnableColorMap = Shape->bEnableColorMap; - TempShape_ColorMapType = Shape->ColorMapType; - TempShape_bUseColorMapCurve = Shape->bUseColorMapCurve; - TempShape_ColorMapCurve = Shape->ColorMapCurve; - TempShape_Contrast = Shape->Contrast; - TempShape_Brightness = Shape->Brightness; - TempShape_Posterize = Shape->Posterize; - TempShape_Saturation = Shape->Saturation; - TempShape_LutWeight = Shape->LutWeight; - TempShape_ColorLUTSource = Shape->ColorLUTSource; - TempShape_ColorLUTTarget = Shape->ColorLUTTarget; - TempShape_ColorScale = Shape->ColorScale; - TempShape_ColorOffset = Shape->ColorOffset; -} - -// If Shape doesn't already exists, create a new one and set it up using the temporary properties -UOculusXRStereoLayerShapeReconstructed* FOculusXRPersistentPassthroughParameters::LoadShape(UObject* owner) -{ - if (Shape) - return Shape; - - UOculusXRStereoLayerShapeReconstructed* NewShape = NewObject(owner); - NewShape->LayerOrder = TempShape_LayerOrder; - NewShape->TextureOpacityFactor = TempShape_TextureOpacityFactor; - NewShape->bEnableEdgeColor = TempShape_bEnableEdgeColor; - NewShape->EdgeColor = TempShape_EdgeColor; - NewShape->bEnableColorMap = TempShape_bEnableColorMap; - NewShape->ColorMapType = TempShape_ColorMapType; - NewShape->bUseColorMapCurve = TempShape_bUseColorMapCurve; - NewShape->ColorMapCurve = TempShape_ColorMapCurve; - NewShape->Contrast = TempShape_Contrast; - NewShape->Brightness = TempShape_Brightness; - NewShape->Posterize = TempShape_Posterize; - NewShape->Saturation = TempShape_Saturation; - NewShape->LutWeight = TempShape_LutWeight; - NewShape->ColorLUTSource = TempShape_ColorLUTSource; - NewShape->ColorLUTTarget = TempShape_ColorLUTTarget; - NewShape->ColorScale = TempShape_ColorScale; - NewShape->ColorOffset = TempShape_ColorOffset; - - Shape = NewShape; - - return Shape; -} diff --git a/Plugins/MetaXR/Source/OculusXRPassthrough/Public/IOculusXRPassthroughModule.h b/Plugins/MetaXR/Source/OculusXRPassthrough/Public/IOculusXRPassthroughModule.h deleted file mode 100644 index 39d90ae..0000000 --- a/Plugins/MetaXR/Source/OculusXRPassthrough/Public/IOculusXRPassthroughModule.h +++ /dev/null @@ -1,35 +0,0 @@ -// Copyright (c) Meta Platforms, Inc. and affiliates. - -#pragma once -#include "Modules/ModuleInterface.h" -#include "Modules/ModuleManager.h" - -/** - * The public interface to this module. In most cases, this interface is only public to sibling modules - * within this plugin. - */ -class IOculusXRPassthroughModule : public IModuleInterface -{ - -public: - /** - * Singleton-like access to this module's interface. This is just for convenience! - * Beware of calling this during the shutdown phase, though. Your module might have been unloaded already. - * - * @return Returns singleton instance, loading the module on demand if needed - */ - static inline IOculusXRPassthroughModule& Get() - { - return FModuleManager::GetModuleChecked("OculusXRPassthrough"); - } - - /** - * Checks to see if this module is loaded and ready. It is only valid to call Get() if IsAvailable() returns true. - * - * @return True if the module is loaded and ready to use - */ - static inline bool IsAvailable() - { - return FModuleManager::Get().IsModuleLoaded("OculusXRPassthrough"); - } -}; diff --git a/Plugins/MetaXR/Source/OculusXRPassthrough/Public/OculusXRPassthroughColorLut.h b/Plugins/MetaXR/Source/OculusXRPassthrough/Public/OculusXRPassthroughColorLut.h deleted file mode 100644 index 0ddd806..0000000 --- a/Plugins/MetaXR/Source/OculusXRPassthrough/Public/OculusXRPassthroughColorLut.h +++ /dev/null @@ -1,104 +0,0 @@ -// Copyright (c) Meta Platforms, Inc. and affiliates. - -#pragma once - -#include "CoreMinimal.h" -#include "UObject/ObjectMacros.h" -#include "Engine/Texture2D.h" - -#include "OculusXRPassthroughColorLut.generated.h" - -class UOculusXRPassthroughLayerBase; - -enum EColorLutChannels -{ - ColorLutChannels_RGB, - ColorLutChannels_RGBA -}; - -USTRUCT() -struct FLutTextureData -{ - GENERATED_BODY() -public: - UPROPERTY() - TArray Data; - - UPROPERTY() - uint32 Resolution; - - FLutTextureData() - : Data{}, Resolution(0) {} - - FLutTextureData(const TArray& InData, uint32 InResolution) - : Data(InData), Resolution(InResolution) {} -}; - -UENUM(BlueprintType) -enum class EColorLutType : uint8 -{ - None = 0 UMETA(DisplayName = "None"), - TextureLUT = 1 UMETA(DisplayName = "Texture"), - Array = 2 UMETA(Hidden) -}; - -/** - * @brief This class represents a color look-up table (LUT) that can be applied to an \ref UOculusXRPassthroughLayerBase - * in order to change the color reproduction of that passthrough layer. - * - * Color LUTs map each RGB input color to a new RGB(A) color. It unlocks a number of effects: - * - Color grading and color correction - * - Stylizations, such as posterization or hue rotation - * - Color filtering and chroma keying. - * - * To apply a color LUT to a Passthrough layer, create a new instance of `UOculusXRPassthroughLayerComponent` - * and call \ref UOculusXRPassthroughLayerBase::SetColorLUTSource()"/>. - * - * @see https://developers.meta.com/horizon/documentation/unreal/unreal-customize-passthrough-color-mapping/ to learn more about passthrough and color LUTs. - */ -UCLASS(BlueprintType, CollapseCategories, meta = (DisplayName = "Passthrough Color LUT")) -class OCULUSXRPASSTHROUGH_API UOculusXRPassthroughColorLut : public UObject -{ - GENERATED_BODY() -public: - /** Keeps the information of the source of the current LUT instance. The source can be an array, another LUT texture, or None. */ - UPROPERTY(EditAnywhere, BlueprintReadOnly, Category = "Passthrough Color LUT") - EColorLutType ColorLutType = EColorLutType::None; - -#if WITH_EDITORONLY_DATA - /** Color LUT texture. */ - UPROPERTY(EditAnywhere, BlueprintReadOnly, Category = "Passthrough Color LUT", meta = (EditCondition = "ColorLutType == EColorLutType::TextureLUT", EditConditionHides)) - UTexture2D* LutTexture; -#endif - /** Informs if the alpha channel of LUT should be ignored. */ - UPROPERTY(EditAnywhere, BlueprintReadOnly, Category = "Passthrough Color LUT", meta = (EditCondition = "ColorLutType == EColorLutType::TextureLUT", EditConditionHides)) - bool IgnoreAlphaChannel = false; - - /** Generate color LUT from array. Array should have format of exploded cube. Its size should be power of 2. */ - UFUNCTION(BlueprintCallable, Category = "Passthrough Color LUT") - void SetLutFromArray(const TArray& InColorArray, bool InIgnoreAlphaChannel); - - /** - * Gets the handle of the lut object. It asks for a layer reference to track the list of objects who currently need the handle. - * Call \ref RemoveReference() when you don't need the lut anymore. - */ - uint64 GetHandle(UOculusXRPassthroughLayerBase* LayerRef); - /** Remove a layer reference. When there's no reference to any layer we destroy the lut object and clear the handle. */ - void RemoveReference(UOculusXRPassthroughLayerBase* LayerRef); - virtual void PreSave(FObjectPreSaveContext ObjectSaveContext) override; - - void BeginDestroy() override; - -private: - UPROPERTY() - FLutTextureData StoredTextureData; - uint64 LutHandle = 0; - int32 ColorArrayResolution = 0; - int MaxResolution = -1; - TArray LayerRefs; - FLutTextureData TextureToColorData(class UTexture2D* InLutTexture) const; - uint64 CreateLutObject(const TArray& InData, uint32 Resolution) const; - void UpdateLutObject(uint64 Handle, const TArray& InData) const; - void DestroyLutObject(uint64 Handle) const; - int GetMaxResolution(); -}; diff --git a/Plugins/MetaXR/Source/OculusXRPassthrough/Public/OculusXRPassthroughLayerComponent.h b/Plugins/MetaXR/Source/OculusXRPassthrough/Public/OculusXRPassthroughLayerComponent.h deleted file mode 100644 index 0a296b9..0000000 --- a/Plugins/MetaXR/Source/OculusXRPassthrough/Public/OculusXRPassthroughLayerComponent.h +++ /dev/null @@ -1,447 +0,0 @@ -// @lint-ignore-every LICENSELINT -// Copyright Epic Games, Inc. All Rights Reserved. -// OculusEventComponent.h: Component to handle receiving events from Oculus HMDs - -#pragma once - -#include "CoreMinimal.h" -#include "Engine/StaticMeshActor.h" -#include "UObject/ObjectMacros.h" -#include "Components/StereoLayerComponent.h" -#include "OculusXRPassthroughLayerShapes.h" -#include "OculusXRPassthroughColorLut.h" -#include "OculusXRHMDRuntimeSettings.h" -#include "OculusXRPassthroughLayerComponent.generated.h" - -DECLARE_LOG_CATEGORY_EXTERN(LogOculusPassthrough, Log, All); - -/** - * @brief Represents a layer used for passthrough. - * - * The Passthrough API enables you to show the user's real environment in your mixed reality experiences. - * It offers several options to customize the appearance of passthrough, such as adjusting opacity, - * highlight salient edges in the image, or control the color reproduction. - * For passthrough to be visible, it must be enabled in the Meta XR Plugin - * via the \ref UOculusXRHMDRuntimeSettings::bInsightPassthroughEnabled property. - * - * @see https://developers.meta.com/horizon/documentation/unreal/unreal-passthrough-overview/ to learn more about passthrough and its features - * @see https://developers.meta.com/horizon/documentation/unreal/unreal-passthrough-tutorial/ to create a simple app which uses passthrough - */ -UCLASS(Abstract, meta = (DisplayName = "Passthrough Layer Base")) -class OCULUSXRPASSTHROUGH_API UOculusXRPassthroughLayerBase : public UStereoLayerShape -{ - GENERATED_BODY() -public: - /** - * Specifies whether passthrough should appear on top of (when \ref LayerOrder is `PassthroughLayerOrder_Overlay`) - * or beneath (when \ref LayerOrder is `PassthroughLayerOrder_Underlay`) the virtual content. The default is `Overlay`. - */ - UPROPERTY(EditAnywhere, BlueprintReadOnly, Category = "Passthrough Properties", DisplayName = "Layer Placement") - TEnumAsByte LayerOrder; - - /** - * Defines the passthrough opacity. It can be used to blend between passthrough and VR when \ref LayerOrder is set to `Overlay`, - * or to dim passthrough when \ref LayerOrder is set to `Underlay`. - */ - UPROPERTY(EditAnywhere, BlueprintReadOnly, Category = "Passthrough Properties", meta = (UIMin = 0.0, UIMax = 1.0, ClampMin = 0.0, ClampMax = 1.0)) - float TextureOpacityFactor = 1.0f; - - /** - * Enables or disables edge rendering. - * Use this flag to toggle the edge rendering but retain the previously selected color (including alpha) in the UI when it is disabled. - */ - UPROPERTY(EditAnywhere, BlueprintReadOnly, Category = "Passthrough Properties", meta = (DisplayName = "Enable Edge Rendering")) - bool bEnableEdgeColor = false; - - /** Color for the edge rendering. */ - UPROPERTY(EditAnywhere, BlueprintReadOnly, Category = "Passthrough Properties", meta = (EditCondition = "bEnableEdgeColor", EditConditionHides)) - FLinearColor EdgeColor; - - /** Enables or disables the color mapping for this layer */ - UPROPERTY(EditAnywhere, BlueprintReadOnly, Category = "Passthrough Properties") - bool bEnableColorMap = false; - - /** Represents the color mapping technique applied to this layer. Prefer setting it with \ref SetColorMapType() method */ - UPROPERTY(EditAnywhere, BlueprintReadOnly, Category = "Passthrough Properties", meta = (EditCondition = "bEnableColorMap", EditConditionHides)) - TEnumAsByte ColorMapType; - - /** Controls whether to use a color map curve or a gradient. Use it together with \ref ColorMapCurve property, or set it with \ref EnableColorMapCurve(). */ - UPROPERTY(EditAnywhere, BlueprintReadOnly, Category = "Passthrough Properties", meta = (EditCondition = "bEnableColorMap && ColorMapType == 1", EditConditionHides)) - bool bUseColorMapCurve = false; - - /** Contains color mapping gradient which is used to convert grayscale passthrough to color. This property only has an effect if \ref ColorMapType is set to \ref ColorMapType_GrayscaleToColor. */ - UPROPERTY(EditAnywhere, BlueprintReadOnly, Category = "Passthrough Properties", meta = (EditCondition = "bEnableColorMap && bUseColorMapCurve && ColorMapType == 1", EditConditionHides)) - UCurveLinearColor* ColorMapCurve; - - /** Contains contrast setting for color mapping. Ranges from -1 (minimum) to 1 (maximum). This property only has an effect if \ref ColorMapType is set to \ref ColorMapType_ColorAdjustment, \ref ColorMapType_Grayscale or \ref ColorMapType_GrayscaleToColor. */ - UPROPERTY(EditAnywhere, BlueprintReadOnly, Category = "Passthrough Properties", meta = (ClampMin = "-1", ClampMax = "1", EditCondition = "bEnableColorMap && ColorMapType > 0 && ColorMapType < 4", EditConditionHides)) - float Contrast = 0.0f; - - /** Contains brightness setting for color mapping. Ranges from -1 (minimum) to 1 (maximum). This property only has an effect if \ref ColorMapType is set to \ref ColorMapType_ColorAdjustment, \ref ColorMapType_Grayscale or \ref ColorMapType_GrayscaleToColor. */ - UPROPERTY(EditAnywhere, BlueprintReadOnly, Category = "Passthrough Properties", meta = (ClampMin = "-1", ClampMax = "1", EditCondition = "bEnableColorMap && ColorMapType > 0 && ColorMapType < 4", EditConditionHides)) - float Brightness = 0.0f; - - /** Contains posterize setting for grayscale and grayscale to color mappings. Ranges from 0 to 1, where 0 = no posterization (no effect), 1 = reduce to two colors. */ - UPROPERTY(EditAnywhere, BlueprintReadOnly, Category = "Passthrough Properties", meta = (ClampMin = "0", ClampMax = "1", EditCondition = "bEnableColorMap && ColorMapType > 0 && ColorMapType < 3", EditConditionHides)) - float Posterize = 0.0f; - - /** Contains saturation for color adjustment mapping. Ranges from -1 (minimum) to 1 (maximum). */ - UPROPERTY(EditAnywhere, BlueprintReadOnly, Category = "Passthrough Properties", meta = (ClampMin = "-1", ClampMax = "1", EditCondition = "bEnableColorMap && ColorMapType == 3", EditConditionHides)) - float Saturation = 0.0f; - - /** - * Controls how \ref ColorMapType_ColorLut color mapping technique is applied to passthrough. - * If the value is 0, then the appearance of Passthrough is unchanged. If it is 1, the colors are fully taken from the LUT. Values between 0 and 1 lead to a linear interpolation - * between the original color and the LUT color. If two LUTs are provided LutWeight is used to blend them. - * This value can be animated to create smooth transitions. - */ - UPROPERTY(EditAnywhere, BlueprintReadOnly, Category = "Passthrough Properties", meta = (ClampMin = "0", ClampMax = "1", EditCondition = "bEnableColorMap && ColorMapType > 3", EditConditionHides)) - float LutWeight = 1.0f; - - /** - * Color LUT properties. If only \ref ColorLUTSource is provided it will be blended with passthrough layer using following formula: - * Result = ColorLUTSource * LutWeight + Passthrough * ( 1 - LutWeight ) - */ - UPROPERTY(EditAnywhere, Category = "Passthrough Properties", meta = (EditCondition = "bEnableColorMap && ColorMapType > 3", EditConditionHides)) - UOculusXRPassthroughColorLut* ColorLUTSource; - - /** - * Color LUT properties. If both \ref ColorLUTSource and \ref ColorLUTTarget are provided they will be blended using following formula: - * Result = ColorLUTsSource * ( 1 - LutWeight ) + ColorLUTsTarget * LutWeight - */ - UPROPERTY(EditAnywhere, Category = "Passthrough Properties", meta = (EditCondition = "bEnableColorMap && ColorMapType > 4", EditConditionHides)) - UOculusXRPassthroughColorLut* ColorLUTTarget; - - /** - * Contains the color value that will be multiplied to the pixel color values during compositing. Default is white = `(1,1,1,1)`. - * This property only has an effect if \ref ColorMapType is set to \ref ColorMapType_GrayscaleToColor. - */ - UPROPERTY(EditAnywhere, BlueprintReadOnly, Category = "Passthrough Properties", meta = (EditCondition = "bEnableColorMap && ColorMapType == 1", EditConditionHides)) - FLinearColor ColorScale = FLinearColor::White; - - /** - * Contains the color value that will be added to the pixel color values during compositing. Default is black = `(0,0,0,0)`. - * This property only has an effect if \ref ColorMapType is set to \ref ColorMapType_GrayscaleToColor. - */ - UPROPERTY(EditAnywhere, BlueprintReadOnly, Category = "Passthrough Properties", meta = (EditCondition = "bEnableColorMap && ColorMapType == 1", EditConditionHides)) - FLinearColor ColorOffset = FLinearColor::Black; - - /** - * This method changes the passthrough texture opacity. See \ref TextureOpacityFactor for more details. - * @param InOpacity New value of the passthrough texture opacity. - */ - UFUNCTION(BlueprintCallable, Category = "Components|Stereo Layer") - void SetTextureOpacity(float InOpacity); - - /** - * This method allows to enable or disable the edge rendering in this passthrough layer. See \ref bEnableEdgeColor for more details. - * @param bInEnableEdgeColor Specify `true` to enable edge rendering. - */ - UFUNCTION(BlueprintCallable, Category = "Components|Stereo Layer") - void EnableEdgeColor(bool bInEnableEdgeColor); - - /** - * This method allows to enable or disable the color mapping technique which is configured for this passthrough layer. - * @param bInEnableColorMap Specify `true` to enable the color mapping, and `false` to disable it. - */ - UFUNCTION(BlueprintCallable, Category = "Components|Stereo Layer") - void EnableColorMap(bool bInEnableColorMap); - - /** - * Enable or disables the color map curve used to convert grayscale passthrough to color. This mehtod only has an effect when the color mapping type is set to \ref ColorMapType_GrayscaleToColor. - * See \ref bUseColorMapCurve for more details. - * @param bInEnableColorMapCurve Specify `true` to apply the color map curve. - */ - UFUNCTION(BlueprintCallable, Category = "Components|Stereo Layer") - void EnableColorMapCurve(bool bInEnableColorMapCurve); - - /** - * This method controls the color of the edges when edge rendering is enabled. See \ref EdgeColor for more details. - * @param InEdgeColor Edge rendering color. - */ - UFUNCTION(BlueprintCallable, Category = "Components|Stereo Layer") - void SetEdgeRenderingColor(FLinearColor InEdgeColor); - - /** - * Sets the color map controls for grayscale and grayscale to rgb color mappings. The method fails if ColorMapType is not set to ColorMapType_Grayscale or ColorMapType_GrayscaleToColor. - * @param InContrast Contast of passthrough. Valid range: [-1, 1]. A value of 0 means that contrast is left unchanged. - * @param InBrightness Brightness of passthrough. Valid range: [-1, 1]. A value of 0 means that brightness is left unchanged. - * @param InPosterize Posterize of passthrough. Ranges from 0 to 1, where 0 = no posterization (no effect), 1 = reduce to two colors. - */ - UFUNCTION(BlueprintCallable, Category = "Components|Stereo Layer") - void SetColorMapControls(float InContrast = 0, float InBrightness = 0, float InPosterize = 0); - - /** - * This method allows to configure brightness and contrast adjustment for Passthrough images. It fails if ColorMapType is not set to ColorMapType_ColorAdjustment. - * @param InContrast Contast of passthrough. Valid range: [-1, 1]. A value of 0 means that contrast is left unchanged. - * @param InBrightness Brightness of passthrough. Valid range: [-1, 1]. A value of 0 means that brightness is left unchanged. - * @param InSaturation Saturation of passthrough. Valid range: [-1, 1]. A value of 0 means that saturation is left unchanged. - */ - UFUNCTION(BlueprintCallable, Category = "Components|Stereo Layer") - void SetBrightnessContrastSaturation(float InContrast = 0, float InBrightness = 0, float InSaturation = 0); - - /** - * This method allows to configure the color scale and offset values applied to passthrough pixels. - * The method only has an effect if \ref ColorMapType is set to \ref ColorMapType_GrayscaleToColor. - * @param InColorScale Color value that will be multiplied to the pixel color values during compositing. Default is `{1,1,1,1}` - * @param InColorOffset Color value that will be added to the pixel color values during compositing. Default is `{0,0,0,0}`. - */ - UFUNCTION(BlueprintCallable, Category = "Components|Stereo Layer") - void SetColorScaleAndOffset(FLinearColor InColorScale = FLinearColor::White, FLinearColor InColorOffset = FLinearColor::Black); - - /** Sets the color curve that will be added to the color map in grayscale modes --> will be converted into a gradient */ - UFUNCTION(BlueprintCallable, Category = "Components|Stereo Layer") - void SetColorMapCurve(UCurveLinearColor* InColorMapCurve); - - /** Sets the color mapping technique applied to the passthrough texture if \ref bEnableColorMap is set to `true` */ - UFUNCTION(BlueprintCallable, Category = "Components|Stereo Layer") - void SetColorMapType(EOculusXRColorMapType InColorMapType); - - /** Set color map array directly instead through a color curve. This method only has an affect when \ref ColorMapType is set to \ref ColorMapType_GrayscaleToColor */ - UFUNCTION(BlueprintCallable, Category = "Components|Stereo Layer") - void SetColorArray(const TArray& InColorArray); - - /** Clears any color maps previously applied to this layer and sets ColorMapType to \ref ColorMapType_None value */ - UFUNCTION(BlueprintCallable, Category = "Components|Stereo Layer") - void ClearColorMap(); - - /** - * Specifies whether passthrough should appear on top of (\ref PassthroughLayerOrder_Overlay) - * or beneath (\ref PassthroughLayerOrder_Underlay) the virtual content. The default is `Overlay`. - * See \ref LayerOrder property for more details */ - UFUNCTION(BlueprintCallable, Category = "Passthrough Properties") - void SetLayerPlacement(EOculusXRPassthroughLayerOrder InLayerOrder); - - /** - * Sets Color LUT source. - * If ColorMapType is `Color LUT`, then source will be blended with passthrough - * using folowing formula: - * Result = ColorLUTSource * LutWeight + Passthrough * (1 - LutWeight ) - * If ColorMapType is `Interpolated Color LUT`, then source will be blended with color LUT target - * using folowing formula: - * Result = ColorLUTSource * ( 1 - LutWeight ) + ColorLUTTarget * LutWeight - */ - UFUNCTION(BlueprintCallable, Category = "Components|Stereo Layer") - void SetColorLUTSource(class UOculusXRPassthroughColorLut* InColorLUTSource); - - /** - * Sets Color LUT target. - * If ColorMapType is `Interpolated Color LUT`, then target will be blended with passthrough - * using folowing formula: - * Result = ColorLUTSource * ( 1 - LutWeight ) + ColorLUTTarget * LutWeight - * Note: If ColorLUTSource is not specified, Color LUT will be not be applied to the Passthrough layer. - */ - UFUNCTION(BlueprintCallable, Category = "Components|Stereo Layer") - void SetColorLUTTarget(class UOculusXRPassthroughColorLut* InColorLUTTarget); - - /** Sets the color LUT weight. See \ref LutWeight for more details */ - UFUNCTION(BlueprintCallable, Category = "Components|Stereo Layer") - void SetColorLUTWeight(float InWeight = 1.0f); - - /** Removes color grading if any is active */ - UFUNCTION(BlueprintCallable, Category = "Components|Stereo Layer") - void RemoveColorLut(); - - void ClearLUTsReferences(); - - virtual void BeginDestroy(); - -protected: - TArray ColorArray; - TArray NeutralColorArray; - TArray GenerateColorArrayFromColorCurve(const UCurveLinearColor* InColorMapCurve) const; - TArray GetOrGenerateNeutralColorArray(); - TArray GenerateColorArray(bool bInUseColorMapCurve, const UCurveLinearColor* InColorMapCurve); - TArray GetColorArray(bool bInUseColorMapCurve, const UCurveLinearColor* InColorMapCurve); - FColorLutDesc GenerateColorLutDescription(float InLutWeight, UOculusXRPassthroughColorLut* InLutSource, UOculusXRPassthroughColorLut* InLutTarget); - - void MarkStereoLayerDirty(); -}; - -/** - * @brief Represents a passthrough layer which uses automatic environment depth reconstruction to render itself. - * - * The Passthrough API enables you to show the user's real environment in your mixed reality experiences. - * It offers several options to customize the appearance of passthrough, such as adjusting opacity, - * highlight salient edges in the image, or control the color reproduction. - * For passthrough to be visible, it must be enabled in the Meta XR Plugin - * via the \ref UOculusXRHMDRuntimeSettings::bInsightPassthroughEnabled property. - * - * Reconstructed passthrough used via this class vanishes when the current component - * is destroyed. Consider using Persistent Passthrough Layer instead, which remains active throughout the application's lifetime, - * including across level transitions. See https://developers.meta.com/horizon/documentation/unreal/unreal-persistent-passthrough/ for more details. - */ -UCLASS(meta = (DisplayName = "Reconstructed Passthrough Layer")) -class OCULUSXRPASSTHROUGH_API UOculusXRStereoLayerShapeReconstructed : public UOculusXRPassthroughLayerBase -{ - GENERATED_BODY() -public: - virtual void ApplyShape(IStereoLayers::FLayerDesc& LayerDesc) override; -}; - -/** - * @brief Represents a passthrough layer which relies on the geometry and the depth provided by the client to render itself. - * - * The Passthrough API enables you to show the user's real environment in your mixed reality experiences. - * It offers several options to customize the appearance of passthrough, such as adjusting opacity, - * highlight salient edges in the image, or control the color reproduction. - * For passthrough to be visible, it must be enabled in the Meta XR Plugin - * via the \ref UOculusXRHMDRuntimeSettings::bInsightPassthroughEnabled property. - * - * @see https://developers.meta.com/horizon/documentation/unreal/unreal-customize-passthrough-surface-projected-passthrough/ to learn more about surface projected passthrough. - */ -UCLASS(meta = (DisplayName = "User Defined Passthrough Layer")) -class OCULUSXRPASSTHROUGH_API UOculusXRStereoLayerShapeUserDefined : public UOculusXRPassthroughLayerBase -{ - GENERATED_BODY() -public: - /** - * Adds a geometry onto which the passthrough images will be projected. - * @param MeshName Name for the geometry to be added. It is used if later you decide to remove the geometry from the layer. - * @param PassthroughMesh Reference to the mesh to be added. - * @param Transform Transform of the mesh to be added. - * @param bUpdateTransform When the value is `true`, current layer will update the transform of the surface mesh every frame. - * Otherwise only the initial transform is recorded. - */ - void AddGeometry(const FString& MeshName, OculusXRHMD::FOculusPassthroughMeshRef PassthroughMesh, FTransform Transform, bool bUpdateTransform); - /** - * Removes the geometry that has previously been added using \ref AddGeometry() from the projection surface - * @param MeshName Name for the geometry to be removed. - */ - void RemoveGeometry(const FString& MeshName); - - virtual void ApplyShape(IStereoLayers::FLayerDesc& LayerDesc) override; - /** - * Returns a list of geometries previously added to this surface projected passthrough layer. - */ - TArray& GetUserGeometryList() { return UserGeometryList; }; - -private: - TArray UserGeometryList; -}; - -class UProceduralMeshComponent; - -/** - * @brief A component which defines reusable passthrough behavior that can be added to different types of Actors. - * - * The Passthrough API enables you to show the user's real environment in your mixed reality experiences. - * It offers several options to customize the appearance of passthrough, such as adjusting opacity, - * highlight salient edges in the image, or control the color reproduction. - * - * @see https://developers.meta.com/horizon/documentation/unreal/unreal-passthrough-overview/ to learn more about passthrough and its features - * @see https://developers.meta.com/horizon/documentation/unreal/unreal-passthrough-tutorial/ to create a simple app which uses passthrough - */ -UCLASS(Blueprintable, meta = (BlueprintSpawnableComponent), ClassGroup = OculusXRHMD) -class OCULUSXRPASSTHROUGH_API UOculusXRPassthroughLayerComponent : public UStereoLayerComponent -{ - GENERATED_UCLASS_BODY() - -public: - void DestroyComponent(bool bPromoteChildren) override; - void OnRegister() override; - - void BeginPlay() override; - void TickComponent(float DeltaTime, enum ELevelTick TickType, FActorComponentTickFunction* ThisTickFunction) override; - - void UpdatePassthroughObjects(); - - /** - * \deprecated Adds a static geometry onto which the passthrough images will be projected. This method is deprecated in favour of \ref AddStaticSurfaceGeometry(). - * - * @param StaticMeshActor The actor containing the static geometry. - * @param bUpdateTransform When the value is `true`, current layer will update the transform of the mesh every frame. - * Otherwise only the initial transform is recorded. - */ - UFUNCTION(BlueprintCallable, Category = "Passthrough", meta = (DeprecatedFunction, DeprecationMessage = "Please use AddStaticSurfaceGeometry instead")) - void AddSurfaceGeometry(AStaticMeshActor* StaticMeshActor, bool updateTransform); - /** - * Adds a static geometry onto which the passthrough images will be projected. This only has an effect with the surface projected passthrough layers. - * @see https://developers.meta.com/horizon/documentation/unreal/unreal-customize-passthrough-surface-projected-passthrough/ to learn more about it. - * - * @param StaticMeshComponent Reference to the component that contains the static mesh to be added. - * @param updateTransform When the value is `true`, corresponding passthrough layer will update the transform of the surface mesh every frame. - * Otherwise only the initial transform is recorded. - */ - UFUNCTION(BlueprintCallable, Category = "Passthrough") - void AddStaticSurfaceGeometry(UStaticMeshComponent* StaticMeshComponent, bool updateTransform); - /** - * Adds a procedural geometry onto which the passthrough images will be projected. This only has an effect with the surface projected passthrough layers. - * @see https://developers.meta.com/horizon/documentation/unreal/unreal-customize-passthrough-surface-projected-passthrough/ to learn more about it. - * - * @param ProceduralMeshComponent Reference to the component that contains the procedural mesh to be added. - * @param updateTransform When the value is `true`, corresponding passthrough will update the transform of the surface mesh every frame. - * Otherwise only the initial transform is recorded. - */ - UFUNCTION(BlueprintCallable, Category = "Passthrough") - void AddProceduralSurfaceGeometry(UProceduralMeshComponent* ProceduralMeshComponent, bool updateTransform); - - /** - * \deprecated Removes previously added static geometry from the projection surface. This method is deprecated in favour of \ref RemoveStaticSurfaceGeometry(). - * @param StaticMeshActor The actor with the static geometry to be removed. - */ - UFUNCTION(BlueprintCallable, Category = "Passthrough", meta = (DeprecatedFunction, DeprecationMessage = "Please use RemoveStaticSurfaceGeometry instead")) - void RemoveSurfaceGeometry(AStaticMeshActor* StaticMeshActor); - - /** - * Removes previously added static geometry from the projection surface. - * @param StaticMeshComponent Reference to the component that contains the static mesh to be removed. - */ - UFUNCTION(BlueprintCallable, Category = "Passthrough") - void RemoveStaticSurfaceGeometry(UStaticMeshComponent* StaticMeshComponent); - /** - * Removes previously added procedural geometry from the projection surface. - * @param ProceduralMeshComponent Reference to the component that contains the procedural mesh to be removed. - */ - UFUNCTION(BlueprintCallable, Category = "Passthrough") - void RemoveProceduralSurfaceGeometry(UProceduralMeshComponent* ProceduralMeshComponent); - - /** - * \deprecated Checks if the actor contains a static geomenty that has been added to the current component. This method is deprecated in favour of \ref IsSurfaceGeometryComponent(). - * @param StaticMeshActor The actor for which the check is to be made. - */ - UFUNCTION(BlueprintCallable, Category = "Passthrough", meta = (DeprecatedFunction, DeprecationMessage = "Please use IsSurfaceGeometryComponent instead")) - bool IsSurfaceGeometry(AStaticMeshActor* StaticMeshActor) const; - /** - * Checks if the current component contains the mesh passed as an argument. - * @param MeshComponent The component with the mesh for which the check is to be made. - */ - UFUNCTION(BlueprintPure, Category = "Passthrough") - bool IsSurfaceGeometryComponent(const UMeshComponent* MeshComponent) const; - - /** - * Manually mark the stereo layer passthrough effect for updating. - */ - UFUNCTION(BlueprintCallable, Category = "Components|Stereo Layer") - void MarkPassthroughStyleForUpdate(); - -#if WITH_EDITOR - virtual bool CanEditChange(const FProperty* InProperty) const override; -#endif // WITH_EDITOR - - /** - * Calling this method results in broadcasting \ref OnLayerResumed event if `InLayerId` matches the Id of the current passthrough layer. - */ - UFUNCTION() - void OnAnyLayerResumedEvent(int InLayerId); - - /** - * Occurs when current passthrough layer has been rendered and presented on the HMD screen for the first time after being restarted. - */ - UPROPERTY(BlueprintAssignable) - FOculusXRPassthrough_LayerResumed OnLayerResumed; - -protected: - virtual bool LayerRequiresTexture(); - virtual void RemoveSurfaceGeometryComponent(UMeshComponent* MeshComponent); - - UPROPERTY(Transient) - TMap PassthroughComponentMap; - -private: - OculusXRHMD::FOculusPassthroughMeshRef CreatePassthroughMesh(UProceduralMeshComponent* ProceduralMeshComponent); - OculusXRHMD::FOculusPassthroughMeshRef CreatePassthroughMesh(UStaticMeshComponent* StaticMeshComponent); - - /** Passthrough style needs to be marked for update **/ - bool bPassthroughStyleNeedsUpdate; -}; diff --git a/Plugins/MetaXR/Source/OculusXRPassthrough/Public/OculusXRPassthroughSubsystem.h b/Plugins/MetaXR/Source/OculusXRPassthrough/Public/OculusXRPassthroughSubsystem.h deleted file mode 100644 index 13a94c4..0000000 --- a/Plugins/MetaXR/Source/OculusXRPassthrough/Public/OculusXRPassthroughSubsystem.h +++ /dev/null @@ -1,49 +0,0 @@ -// Copyright (c) Meta Platforms, Inc. and affiliates. - -#pragma once - -#include "Subsystems/GameInstanceSubsystem.h" -#include "Tickable.h" -#include "OculusXRHMDTypes.h" -#include "OculusXRPersistentPassthroughInstance.h" -#include "OculusXRPassthroughLayerShapes.h" -#include "OculusXRPassthroughSubsystem.generated.h" - -DECLARE_DYNAMIC_MULTICAST_DELEGATE_OneParam(FOculusXRPassthrough_AnyLayerResumed, int, LayerID); - -UCLASS(DisplayName = "Passthrough Subsystem") -class OCULUSXRPASSTHROUGH_API UOculusXRPassthroughSubsystem : public UGameInstanceSubsystem -{ - GENERATED_BODY() -public: - static UOculusXRPassthroughSubsystem* GetPassthroughSubsystem(const UWorld* InWorld); - - UOculusXRPassthroughSubsystem(); - - virtual bool ShouldCreateSubsystem(UObject* Outer) const override; - virtual void Initialize(FSubsystemCollectionBase& Collection) override; - virtual void Deinitialize() override; - - /** - * Creates a Reconstructed Passthrough layer that stays alive until "Destroy Persistent Passthrough" is called. - * If used in blueprints, layer's parameters are available in the Details window when selecting the node. - */ - UFUNCTION(BlueprintCallable, BlueprintInternalUseOnly, Category = "Passthrough|Persistent", meta = (AutoCreateRefTerm = "LayerResumed")) - UOculusXRPersistentPassthroughInstance* InitializePersistentPassthrough(FOculusXRPersistentPassthroughParameters Parameters, const FOculusXRPassthrough_LayerResumed_Single& LayerResumed); - UFUNCTION(BlueprintCallable, Category = "Passthrough|Persistent") - void DestroyPersistentPassthrough(); - UFUNCTION(BlueprintPure, Category = "Passthrough|Persistent") - UOculusXRPersistentPassthroughInstance* GetPersistentPassthrough() const; - - UPROPERTY(BlueprintAssignable) - FOculusXRPassthrough_AnyLayerResumed OnAnyLayerResumed; - - -private: - - UPROPERTY() - UOculusXRPersistentPassthroughInstance* PPTInstance; - - - FDelegateHandle DelegateHandleLayerResumed; -}; diff --git a/Plugins/MetaXR/Source/OculusXRPassthrough/Public/OculusXRPersistentPassthroughInstance.h b/Plugins/MetaXR/Source/OculusXRPassthrough/Public/OculusXRPersistentPassthroughInstance.h deleted file mode 100644 index be5af9f..0000000 --- a/Plugins/MetaXR/Source/OculusXRPassthrough/Public/OculusXRPersistentPassthroughInstance.h +++ /dev/null @@ -1,140 +0,0 @@ -// Copyright (c) Meta Platforms, Inc. and affiliates. - -#pragma once - -#include "CoreMinimal.h" - -#include "Curves/CurveLinearColor.h" -#include "OculusXRPassthroughLayerShapes.h" -#include "StereoLayerComponent.h" -#include "StereoRendering.h" -#include "UObject/NoExportTypes.h" - -#include "OculusXRPersistentPassthroughInstance.generated.h" - -DECLARE_DYNAMIC_DELEGATE(FOculusXRPassthrough_LayerResumed_Single); - -class UOculusXRStereoLayerShapeReconstructed; -class UOculusXRPassthroughColorLut; - -USTRUCT(BlueprintType, meta = (DisableSplitPin, HasNativeMake = "", HasNativeBreak = "")) -struct OCULUSXRPASSTHROUGH_API FOculusXRPersistentPassthroughParameters -{ - GENERATED_BODY() -public: - UPROPERTY(Category = "Passthrough|Persistent", EditAnywhere, BlueprintReadWrite) - bool bVisible; - - UPROPERTY(Category = "Passthrough|Persistent", EditAnywhere, BlueprintReadWrite) - int32 Priority; - - UPROPERTY(Category = "Passthrough|Persistent", EditAnywhere, BlueprintReadOnly, NoClear, Instanced) - TObjectPtr Shape; - - FOculusXRPersistentPassthroughParameters() - { - bVisible = true; - Priority = 0; - - TempShape_LayerOrder = EOculusXRPassthroughLayerOrder::PassthroughLayerOrder_Overlay; - TempShape_TextureOpacityFactor = 0.f; - TempShape_bEnableEdgeColor = false; - TempShape_EdgeColor = FLinearColor::Black; - TempShape_bEnableColorMap = false; - TempShape_ColorMapType = EOculusXRColorMapType::ColorMapType_None; - TempShape_bUseColorMapCurve = false; - TempShape_ColorMapCurve = nullptr; - TempShape_Contrast = 0.f; - TempShape_Brightness = 0.f; - TempShape_Posterize = 0.f; - TempShape_Saturation = 0.f; - TempShape_LutWeight = 0.f; - TempShape_ColorLUTSource = nullptr; - TempShape_ColorLUTTarget = nullptr; - TempShape_ColorScale = FLinearColor::Black; - TempShape_ColorOffset = FLinearColor::Black; - } - - void ApplyShape(); - UOculusXRStereoLayerShapeReconstructed* LoadShape(UObject* Owner); - -private: - // These properties are all the ones from UOculusXRStereoLayerShapeReconstructed. - UPROPERTY() - TEnumAsByte TempShape_LayerOrder; - UPROPERTY() - float TempShape_TextureOpacityFactor; - UPROPERTY() - bool TempShape_bEnableEdgeColor; - UPROPERTY() - FLinearColor TempShape_EdgeColor; - UPROPERTY() - bool TempShape_bEnableColorMap; - UPROPERTY() - TEnumAsByte TempShape_ColorMapType; - UPROPERTY() - bool TempShape_bUseColorMapCurve; - UPROPERTY() - UCurveLinearColor* TempShape_ColorMapCurve; - UPROPERTY() - float TempShape_Contrast; - UPROPERTY() - float TempShape_Brightness; - UPROPERTY() - float TempShape_Posterize; - UPROPERTY() - float TempShape_Saturation; - UPROPERTY() - float TempShape_LutWeight; - UPROPERTY() - UOculusXRPassthroughColorLut* TempShape_ColorLUTSource; - UPROPERTY() - UOculusXRPassthroughColorLut* TempShape_ColorLUTTarget; - UPROPERTY() - FLinearColor TempShape_ColorScale; - UPROPERTY() - FLinearColor TempShape_ColorOffset; -}; - -UCLASS(EditInlineNew, DefaultToInstanced, BlueprintType) -class OCULUSXRPASSTHROUGH_API UOculusXRPersistentPassthroughInstance : public UObject -{ - GENERATED_BODY() - -protected: - UPROPERTY() - FOculusXRPersistentPassthroughParameters Parameters; - -public: - UFUNCTION(Category = "Passthrough|Persistent", BlueprintCallable) - void SetVisible(bool InVisible); - UFUNCTION(Category = "Passthrough|Persistent", BlueprintPure) - bool IsVisible() const { return Parameters.bVisible; } - - UFUNCTION(Category = "Passthrough|Persistent", BlueprintCallable) - void SetPriority(int32 InPriority); - UFUNCTION(Category = "Passthrough|Persistent", BlueprintPure) - int32 GetPriority() const { return Parameters.Priority; } - - UFUNCTION(Category = "Passthrough|Persistent", BlueprintPure) - UOculusXRStereoLayerShapeReconstructed* GetShape() const { return Parameters.Shape; } - - UOculusXRPersistentPassthroughInstance(const FObjectInitializer& ObjectInitializer); - - virtual void InitLayer(FOculusXRPersistentPassthroughParameters InParameters); - virtual void UpdateParameters(FOculusXRPersistentPassthroughParameters InParameters); - virtual void UpdateLayer(); - virtual void BeginDestroy() override; - - void AddLayerResumedSingleDelegate(const FOculusXRPassthrough_LayerResumed_Single& Delegate); - - UFUNCTION() - void OnAnyLayerResumedEvent(int InLayerId); - - UPROPERTY(BlueprintAssignable) - FOculusXRPassthrough_LayerResumed OnLayerResumed; - -protected: - TArray LayerResumedSingleDelegates; - uint32 LayerId = IStereoLayers::FLayerDesc::INVALID_LAYER_ID; -}; diff --git a/Plugins/MetaXR/Source/OculusXRProjectSetupTool/OculusXRProjectSetupTool.Build.cs b/Plugins/MetaXR/Source/OculusXRProjectSetupTool/OculusXRProjectSetupTool.Build.cs deleted file mode 100644 index 34346c4..0000000 --- a/Plugins/MetaXR/Source/OculusXRProjectSetupTool/OculusXRProjectSetupTool.Build.cs +++ /dev/null @@ -1,57 +0,0 @@ -// Copyright (c) Meta Platforms, Inc. and affiliates. - -using UnrealBuildTool; -using System.IO; - -public class OculusXRProjectSetupTool : ModuleRules -{ - public OculusXRProjectSetupTool(ReadOnlyTargetRules Target) : base(Target) - { - - bUseUnity = true; - - PrivateIncludePaths.AddRange( - new string[] { - "OculusXRHMD/Private", - "OculusXRUncookedOnly/Private", - Path.Combine(EngineDirectory, "Source/Developer/Android/AndroidPlatformEditor/Private") - }); - - PublicDependencyModuleNames.AddRange( - new string[] - { - "Core", - "CoreUObject", - "Engine" - } - ); - - PrivateDependencyModuleNames.AddRange( - new string[] - { - "Projects", - "UnrealEd", - "LevelEditor", - "Slate", - "SlateCore", - "EditorStyle", - "EngineSettings", - "OculusXRHMD", - "OculusXRMovement", - "OculusXRPassthrough", - "OculusXRAnchors", - "OculusXRScene", - "OculusXRUncookedOnly", - "AndroidRuntimeSettings", - "AndroidPlatformEditor", - "LauncherServices", - "ToolWidgets", - "WorkspaceMenuStructure", - "PluginBrowser", - "ToolMenus", - "RHI", - "BlueprintGraph", - } - ); - } -} diff --git a/Plugins/MetaXR/Source/OculusXRProjectSetupTool/Private/OculusXRPSTEvents.h b/Plugins/MetaXR/Source/OculusXRProjectSetupTool/Private/OculusXRPSTEvents.h deleted file mode 100644 index 7b79ab5..0000000 --- a/Plugins/MetaXR/Source/OculusXRProjectSetupTool/Private/OculusXRPSTEvents.h +++ /dev/null @@ -1,32 +0,0 @@ -// Copyright (c) Meta Platforms, Inc. and affiliates. - -#pragma once - -#include "OculusXRTelemetry.h" - -namespace OculusXRTelemetry::Events -{ - using FProjectSetupToolIgnore = TMarker<191964172>; - using FProjectSetupToolFix = TMarker<191966457>; - using FProjectSetupToolOption = TMarker<191964194>; - using FProjectSetupToolSummary = TMarker<191966987>; - using FProjectSetupToolOpen = TMarker<191967598>; - using FProjectSetupToolClose = TMarker<191957393>; - using FProjectSetupToolNext = TMarker<191956372>; - using FProjectSetupToolPrev = TMarker<191956161>; - using FProjectSetupToolTutorialClose = TMarker<191962723>; - using FProjectSetupToolReportIssue = TMarker<191957866>; -} // namespace OculusXRTelemetry::Events - -namespace OculusXRTelemetry::Annotations -{ - constexpr const char* Uid = "Uid"; - constexpr const char* Level = "Level"; - constexpr const char* Type = "Type"; - constexpr const char* Value = "Value"; - constexpr const char* BuildTargetGroup = "BuildTargetGroup"; - constexpr const char* Count = "Count"; - constexpr const char* Group = "Group"; - constexpr const char* Origin = "Origin"; - constexpr const char* TutorialCompleted = "TutorialCompleted"; -} // namespace OculusXRTelemetry::Annotations diff --git a/Plugins/MetaXR/Source/OculusXRProjectSetupTool/Private/OculusXRPSTUtils.h b/Plugins/MetaXR/Source/OculusXRProjectSetupTool/Private/OculusXRPSTUtils.h deleted file mode 100644 index 8195568..0000000 --- a/Plugins/MetaXR/Source/OculusXRProjectSetupTool/Private/OculusXRPSTUtils.h +++ /dev/null @@ -1,162 +0,0 @@ -// Copyright (c) Meta Platforms, Inc. and affiliates. - -#pragma once -#include "CoreMinimal.h" -#include "OculusXRProjectSetupToolModule.h" -#include "UObject/UObjectIterator.h" -#include "Styling/SlateStyle.h" -#include "Brushes/SlateImageBrush.h" - -#define OCULUSXR_UPDATE_SETTINGS(SettingsClass, PropertyName, PropertyValue) \ - { \ - SettingsClass* Settings = GetMutableDefault(); \ - Settings->PropertyName = PropertyValue; \ - Settings->UpdateSinglePropertyInConfigFile( \ - Settings->GetClass()->FindPropertyByName( \ - GET_MEMBER_NAME_CHECKED(SettingsClass, PropertyName)), \ - Settings->GetDefaultConfigFilename()); \ - Settings->TryUpdateDefaultConfigFile(); \ - } - -namespace OculusXRPSTUtils -{ - /** - * Return if there is a component of a given type in the world. - */ - template - bool IsComponentOfTypeInWorld() - { - for (TObjectIterator Iterator; Iterator;) - { - return true; - } - - return false; - } - - /** - * Return if there is a component of a given type in the world that matches the condition. - * - * Usage : - * IsComponentOfTypeInWorld([](T* Component){ return Component->SomeProperty == DesiredValue; }) - */ - template - bool IsComponentOfTypeInWorld(TFunction Condition) - { - for (TObjectIterator Iterator; Iterator; ++Iterator) - { - if (Condition(*Iterator)) - return true; - } - - return false; - } - - inline const char* ToString(ESetupRuleSeverity Severity) - { - switch (Severity) - { - case ESetupRuleSeverity::Critical: - return "critical"; - case ESetupRuleSeverity::Performance: - return "performance"; - case ESetupRuleSeverity::Warning: - return "warning"; - default: - UE_LOG(LogTemp, Error, TEXT("Not covered Severity enum. %d"), Severity); - check(false); - } - return ""; - } - - inline const char* ToString(ESetupRuleCategory Category) - { - switch (Category) - { - case ESetupRuleCategory::Compatibility: - return "Compatibility"; - case ESetupRuleCategory::Rendering: - return "Rendering"; - case ESetupRuleCategory::Quality: - return "Quality"; - case ESetupRuleCategory::Physics: - return "Physics"; - case ESetupRuleCategory::Plugins: - return "Plugins"; - case ESetupRuleCategory::Features: - return "Features"; - case ESetupRuleCategory::Miscellaneous: - return "Miscellaneous"; - default: - UE_LOG(LogTemp, Error, TEXT("Not covered Category enum. %d"), Category); - check(false); - } - return ""; - } - - inline const char* ToString(ESetupRulePlatform Platform) - { - FString Result = ""; - if ((Platform & ESetupRulePlatform::MetaLink) == ESetupRulePlatform::MetaLink) - Result += " PC Link"; - if ((Platform & ESetupRulePlatform::MetaQuest_2) == ESetupRulePlatform::MetaQuest_2) - Result += " Quest 2"; - if ((Platform & ESetupRulePlatform::MetaQuest_3) == ESetupRulePlatform::MetaQuest_3) - Result += " Quest 3"; - if ((Platform & ESetupRulePlatform::MetaQuest_Pro) == ESetupRulePlatform::MetaQuest_Pro) - Result += " Quest Pro"; - return TCHAR_TO_ANSI(*Result); - } - - inline const char* GetDisplayName(ESetupRulePlatform Platform) - { - if ((Platform & MetaQuest_All) == MetaQuest_All) - return "All Quest"; - if ((Platform & ESetupRulePlatform::MetaLink) == ESetupRulePlatform::MetaLink) - return "PC Link"; - if ((Platform & ESetupRulePlatform::MetaQuest_2) == ESetupRulePlatform::MetaQuest_2) - return "Quest 2"; - if ((Platform & ESetupRulePlatform::MetaQuest_3) == ESetupRulePlatform::MetaQuest_3) - return "Quest 3"; - if ((Platform & ESetupRulePlatform::MetaQuest_Pro) == ESetupRulePlatform::MetaQuest_Pro) - return "Quest Pro"; - return ""; - } - - inline void SetBrushStyle(const TSharedPtr& Style, const ESetupRulePlatform Platform) - { - FString RelativePath = "PlatformQuest3"; // Quest3 and All Quest - FVector2d Size{ 32.f, 32.f }; - if (Platform == ESetupRulePlatform::MetaLink) - { - RelativePath = "PlatformDesktop"; - Size = { 16.f, 16.f }; - } - - if (Platform == ESetupRulePlatform::MetaQuest_Pro || Platform == ESetupRulePlatform::MetaQuest_2) - { - RelativePath = "PlatformQuest2"; - } - - Style->Set(GetDisplayName(Platform), - new FSlateVectorImageBrush(Style->RootToContentDir(RelativePath, TEXT(".svg")), - Size)); - } - inline bool ShouldRuleBeSkipped(const SetupRulePtr& Rule, ESetupRulePlatform Platform, const TSet& Severities) - { - return !Rule->IsValid() || Rule->IsIgnored() || !Severities.Contains(Rule->GetSeverity()) || (Rule->GetPlatform() & Platform) != Platform; - } - - inline void LogErrorForUnAppliedRules(const TArray& UnAppliedRules) - { - if (!UnAppliedRules.IsEmpty()) - { - UE_LOG(LogProjectSetupTool, Error, TEXT("Following critical rules are not applied:\n%s"), - *FString::JoinBy( - UnAppliedRules, - TEXT("\n"), - [](const SetupRulePtr Rule) { return Rule->GetDisplayName().ToString(); })); - UE_LOG(LogProjectSetupTool, Error, TEXT("To fix them open `Tools > Meta XR Project Setup Tool`")); - } - } -} // namespace OculusXRPSTUtils diff --git a/Plugins/MetaXR/Source/OculusXRProjectSetupTool/Private/OculusXRProjectSetupToolModule.cpp b/Plugins/MetaXR/Source/OculusXRProjectSetupTool/Private/OculusXRProjectSetupToolModule.cpp deleted file mode 100644 index 069bffd..0000000 --- a/Plugins/MetaXR/Source/OculusXRProjectSetupTool/Private/OculusXRProjectSetupToolModule.cpp +++ /dev/null @@ -1,409 +0,0 @@ -// Copyright (c) Meta Platforms, Inc. and affiliates. - -#include "OculusXRProjectSetupToolModule.h" -#include "CoreMinimal.h" -#include "OculusXRPSTEvents.h" -#include "OculusXRPSTSettings.h" -#include "OculusXRPSTUtils.h" -#include "OculusXRRuleProcessorSubsystem.h" -#include "OculusXRTelemetry.h" -#include "WorkspaceMenuStructure.h" -#include "WorkspaceMenuStructureModule.h" -#include "Brushes/SlateImageBrush.h" -#include "Styling/SlateStyle.h" -#include "Interfaces/IPluginManager.h" -#include "Styling/SlateStyleRegistry.h" -#include "Widget/OculusXRProjectSetupToolWidget.h" -#include "Widget/OculusXRStatusBarWidget.h" -#include "Interfaces/IMainFrameModule.h" -#include "Widget/OculusXRProjectTutorialWidget.h" -#include "Framework/Application/SlateApplication.h" -#include "Framework/Docking/TabManager.h" -#include "ToolMenus.h" -#include "Engine/Engine.h" -#include "Widgets/Docking/SDockTab.h" - -DEFINE_LOG_CATEGORY(LogProjectSetupTool); -#define LOCTEXT_NAMESPACE "OculusXRProjectSetupToolModule" - -IMPLEMENT_MODULE(FOculusXRProjectSetupToolModule, OculusXRProjectSetupTool) - -/** Style set */ -TSharedPtr IconStyle = nullptr; - -const char* MetaLogo = "ProjectSetupTool.MetaLogo"; -const FName ProjectSetupToolTabName = FName("OculusXRProjectSetupTool"); -/** - * Perform module initialization - */ -void FOculusXRProjectSetupToolModule::StartupModule() -{ - UE_LOG(LogProjectSetupTool, Display, TEXT("StartupModule: OculusXRProjectSetupTool")); - RegisterConsoleCommands(); - - // Prepare the main project setup tool tab - if (IsRunningCommandlet()) - { - return; - } - RegisterStyleWithStyleRegistry(); - RegisterProjectSetupToolWithTabManager(); - RegisterStatusBarWidgetWithToolMenu(); -} - -/** - * Perform module cleanup - */ -void FOculusXRProjectSetupToolModule::ShutdownModule() -{ - UnregisterConsoleCommands(); - if (IsRunningCommandlet()) - { - return; - } - - UnregisterStyleWithStyleRegistry(); - FGlobalTabmanager::Get()->UnregisterNomadTabSpawner(ProjectSetupToolTabName); -} - -/** - * Show the project setup tool - */ -void FOculusXRProjectSetupToolModule::ShowProjectSetupTool(const FString& Origin) -{ -#if !(UE_BUILD_SHIPPING || UE_BUILD_TEST) - FGlobalTabmanager::Get()->TryInvokeTab(ProjectSetupToolTabName); - TriggerOrigin = Origin; -#endif -} - -#if !(UE_BUILD_SHIPPING || UE_BUILD_TEST) - -TSharedPtr FOculusXRProjectSetupToolModule::GetSlateStyle() -{ - return IconStyle; -} - -/** - * Register console commands - */ -void FOculusXRProjectSetupToolModule::RegisterConsoleCommands() -{ - ConsoleCommands.Add(IConsoleManager::Get().RegisterConsoleCommand(TEXT("vr.oculus.ApplyRule"), TEXT("Applies a rule.\n"), FConsoleCommandWithArgsDelegate::CreateStatic(&FOculusXRProjectSetupToolModule::ProcessApplyRuleCommand), ECVF_Default)); - - ConsoleCommands.Add(IConsoleManager::Get().RegisterConsoleCommand(TEXT("vr.oculus.IsRuleApplied"), TEXT("Determines whether a rule is applied.\n"), FConsoleCommandWithArgsDelegate::CreateStatic(&FOculusXRProjectSetupToolModule::ProcessIsRuleAppliedCommand), ECVF_Default)); - - ConsoleCommands.Add(IConsoleManager::Get().RegisterConsoleCommand(TEXT("vr.oculus.ListAppliedRules"), TEXT("Lists all applied rules.\n"), FConsoleCommandDelegate::CreateStatic(&FOculusXRProjectSetupToolModule::ProcessListAppliedRulesCommand), ECVF_Default)); - - ConsoleCommands.Add(IConsoleManager::Get().RegisterConsoleCommand(TEXT("vr.oculus.ListRules"), TEXT("Lists all registered rules.\n"), FConsoleCommandDelegate::CreateStatic(&FOculusXRProjectSetupToolModule::ProcessListRulesCommand), ECVF_Default)); -} - -/** - * Unregister console commands - */ -void FOculusXRProjectSetupToolModule::UnregisterConsoleCommands() -{ - for (const auto ConsoleCommand : ConsoleCommands) - { - IConsoleManager::Get().UnregisterConsoleObject(ConsoleCommand); - } -} - -/** - * Register styles - */ -void FOculusXRProjectSetupToolModule::RegisterStyleWithStyleRegistry() const -{ - const FString PluginContentRoot = IPluginManager::Get().FindPlugin("OculusXR")->GetBaseDir() / TEXT("Resources"); - - IconStyle = MakeShared("OculusXRProjectSetupToolStyle"); - IconStyle->SetContentRoot(PluginContentRoot); - IconStyle->Set(MetaLogo, - new FSlateVectorImageBrush(IconStyle->RootToContentDir("MetaLogo", TEXT(".svg")), - FVector2D(32.0f, 32.0f))); - - IconStyle->Set("ProjectSetupTool.MetaQuestBackground", - new FSlateImageBrush(IconStyle->RootToContentDir("MetaQuestBackground", TEXT(".png")), - FVector2D(480.f, 570.f))); - - IconStyle->Set("ProjectSetupTool.RedDot", - new FSlateVectorImageBrush(IconStyle->RootToContentDir("RedDot", TEXT(".svg")), - FVector2D(32.0f, 32.0f))); - - IconStyle->Set("ProjectSetupTool.YellowDot", - new FSlateVectorImageBrush(IconStyle->RootToContentDir("YellowDot", TEXT(".svg")), - FVector2D(32.0f, 32.0f))); - - IconStyle->Set("ProjectSetupTool.GreenDot", - new FSlateVectorImageBrush(IconStyle->RootToContentDir("GreenDot", TEXT(".svg")), - FVector2D(32.0f, 32.0f))); - - IconStyle->Set("ProjectSetupTool.GreyDot", - new FSlateVectorImageBrush(IconStyle->RootToContentDir("GreyDot", TEXT(".svg")), - FVector2D(32.0f, 32.0f))); - - IconStyle->Set("ProjectSetupTool.WhiteDot", - new FSlateVectorImageBrush(IconStyle->RootToContentDir("WhiteDot", TEXT(".svg")), - FVector2D(32.0f, 32.0f))); - - IconStyle->Set("ProjectSetupTool.FeedbackIcon", - new FSlateVectorImageBrush(IconStyle->RootToContentDir("BugIcon", TEXT(".svg")), - FVector2D(20.0f, 20.0f))); - - OculusXRPSTUtils::SetBrushStyle(IconStyle, ESetupRulePlatform::MetaLink); - OculusXRPSTUtils::SetBrushStyle(IconStyle, ESetupRulePlatform::MetaQuest_2); - OculusXRPSTUtils::SetBrushStyle(IconStyle, ESetupRulePlatform::MetaQuest_3); - OculusXRPSTUtils::SetBrushStyle(IconStyle, ESetupRulePlatform::MetaQuest_Pro); - OculusXRPSTUtils::SetBrushStyle(IconStyle, MetaQuest_All); - - FSlateStyleRegistry::RegisterSlateStyle(*IconStyle.Get()); -} - -/** - * Unregister styles - */ -void FOculusXRProjectSetupToolModule::UnregisterStyleWithStyleRegistry() const -{ - if (IconStyle.IsValid()) - { - FSlateStyleRegistry::UnRegisterSlateStyle(*IconStyle.Get()); - IconStyle.Reset(); - } -} - -/** - * Register tab widget - */ -void FOculusXRProjectSetupToolModule::RegisterProjectSetupToolWithTabManager() -{ - FGlobalTabmanager::Get()->RegisterNomadTabSpawner( - ProjectSetupToolTabName, - FOnSpawnTab::CreateRaw(this, - &FOculusXRProjectSetupToolModule::OnSpawnProjectSetupToolTab)) - .SetDisplayName(LOCTEXT("ProjectSetupToolTab_Title", "Meta XR Project Setup Tool")) - .SetTooltipText(LOCTEXT("ProjectSetupToolTab_Tooltip", "Meta XR Project Setup tool")) - .SetGroup(WorkspaceMenu::GetMenuStructure().GetToolsCategory()) - .SetIcon(FSlateIcon(IconStyle->GetStyleSetName(), MetaLogo)); -} - -/** - * Register status bar widget - */ -void FOculusXRProjectSetupToolModule::RegisterStatusBarWidgetWithToolMenu() const -{ - UToolMenu* Menu = UToolMenus::Get()->ExtendMenu(TEXT("LevelEditor.StatusBar.ToolBar")); - - FToolMenuSection& ProjectSetupToolSection = Menu->AddSection(TEXT("ProjectSetupTool"), FText::GetEmpty(), FToolMenuInsert(NAME_None, EToolMenuInsertType::First)); - - ProjectSetupToolSection.AddEntry( - FToolMenuEntry::InitWidget(TEXT("ProjectSetupTool"), SNew(SOculusXRStatusBarWidget), FText::GetEmpty(), true, false)); -} - -/** - * Process 'ApplyRule' console command - */ -void FOculusXRProjectSetupToolModule::ProcessApplyRuleCommand(const TArray& Arguments) -{ - if (Arguments.Num() != 1) - { - UE_LOG(LogProjectSetupTool, Warning, TEXT("Expected only 1 argument")); - } - - const UOculusXRRuleProcessorSubsystem* RuleProcessorSubsystem = GEngine->GetEngineSubsystem(); - const FString& ConsoleRuleId = Arguments[0]; - const auto& Rule = RuleProcessorSubsystem->GetRule(FName(ConsoleRuleId)); - - if (Rule != nullptr) - { - bool ShouldRestart; - Rule->Apply(ShouldRestart); - - UE_LOG(LogProjectSetupTool, Display, TEXT("Applied rule <%s>"), *ConsoleRuleId); - } - else - { - UE_LOG(LogProjectSetupTool, Warning, TEXT("Cannot apply unknown rule <%s>"), *ConsoleRuleId); - } -} - -/** - * Process 'IsRuleApplied' console command - */ -void FOculusXRProjectSetupToolModule::ProcessIsRuleAppliedCommand(const TArray& Arguments) -{ - if (Arguments.Num() != 1) - { - UE_LOG(LogProjectSetupTool, Warning, TEXT("Expected only 1 argument")); - } - - const UOculusXRRuleProcessorSubsystem* RuleProcessorSubsystem = GEngine->GetEngineSubsystem(); - const FString& ConsoleRuleId = Arguments[0]; - const auto& Rule = RuleProcessorSubsystem->GetRule(FName(ConsoleRuleId)); - if (Rule != nullptr) - { - UE_LOG(LogProjectSetupTool, Display, TEXT("Rule <%s> is %s"), *ConsoleRuleId, Rule->IsApplied() ? TEXT("applied") : TEXT("not applied")); - } - else - { - UE_LOG(LogProjectSetupTool, Warning, TEXT("Cannot query unknown rule <%s>"), *ConsoleRuleId); - } -} - -/** - * Process 'ListAppliedRules' console command - */ -void FOculusXRProjectSetupToolModule::ProcessListAppliedRulesCommand() -{ - const UOculusXRRuleProcessorSubsystem* RuleProcessorSubsystem = GEngine->GetEngineSubsystem(); - - uint32 Index = 0; - - for (auto& Rule : RuleProcessorSubsystem->GetRules()) - { - if (Rule->IsApplied()) - { - UE_LOG(LogProjectSetupTool, Display, TEXT("Applied rule <%s>"), *(Rule->GetId().ToString())); - ++Index; - } - } - UE_LOG(LogProjectSetupTool, Display, TEXT("There are %d applied rules"), Index); -} - -/** - * Process 'ListRules' console command - */ -void FOculusXRProjectSetupToolModule::ProcessListRulesCommand() -{ - const UOculusXRRuleProcessorSubsystem* RuleProcessorSubsystem = GEngine->GetEngineSubsystem(); - - UE_LOG(LogProjectSetupTool, Display, TEXT("There are %d registered rules"), RuleProcessorSubsystem->GetRules().Num()); - UE_LOG(LogProjectSetupTool, Display, TEXT("|%60hs|%60hs|%20hs|%20hs|%10hs|"), "Rule id", "Display Name", - "Category", "Severity", "Is Ignored"); - - for (const auto& RegisteredRule : RuleProcessorSubsystem->GetRules()) - { - UE_LOG( - LogProjectSetupTool, - Display, - TEXT("|%60ls|%60s|%20hs|%20hs|%10hs|"), - *RegisteredRule->GetId().ToString(), - *RegisteredRule->GetDisplayName().ToString(), - OculusXRPSTUtils::ToString(RegisteredRule->GetCategory()), - OculusXRPSTUtils::ToString(RegisteredRule->GetSeverity()), - RegisteredRule->IsIgnored() ? "yes" : "no"); - } -} - -void FOculusXRProjectSetupToolModule::ProcessIgnoreRuleCommand(const TArray& Arguments) -{ - if (Arguments.Num() != 1) - { - UE_LOG(LogProjectSetupTool, Warning, TEXT("Expected only 1 argument")); - } - - const UOculusXRRuleProcessorSubsystem* RuleProcessorSubsystem = GEngine->GetEngineSubsystem(); - const FString& ConsoleRuleId = Arguments[0]; - const auto& Rule = RuleProcessorSubsystem->GetRule(FName(ConsoleRuleId)); - if (Rule != nullptr) - { - Rule->SetIgnoreRule(true); - } - else - { - UE_LOG(LogProjectSetupTool, Warning, TEXT("Cannot query unknown rule <%s>"), *ConsoleRuleId); - } -} -void FOculusXRProjectSetupToolModule::ProcessUnIgnoreRuleCommand(const TArray& Arguments) -{ - if (Arguments.Num() != 1) - { - UE_LOG(LogProjectSetupTool, Warning, TEXT("Expected only 1 argument")); - } - - const UOculusXRRuleProcessorSubsystem* RuleProcessorSubsystem = GEngine->GetEngineSubsystem(); - const FString& ConsoleRuleId = Arguments[0]; - const auto& Rule = RuleProcessorSubsystem->GetRule(FName(ConsoleRuleId)); - if (Rule != nullptr) - { - Rule->SetIgnoreRule(false); - } - else - { - UE_LOG(LogProjectSetupTool, Warning, TEXT("Cannot query unknown rule <%s>"), *ConsoleRuleId); - } -} -void FOculusXRProjectSetupToolModule::ProcessUnIgnoreAllRulesCommand() -{ - const UOculusXRRuleProcessorSubsystem* RuleProcessorSubsystem = GEngine->GetEngineSubsystem(); - - for (const auto& Rule : RuleProcessorSubsystem->GetRules()) - { - Rule->SetIgnoreRule(false); - } -} - -void FOculusXRProjectSetupToolModule::OnWidgetClosed() -{ - const auto& Platform = static_cast(GetMutableDefault()->CurrentPlatform); - const OculusXRTelemetry::TScopedMarker CloseEvent; - const auto& Annotated = CloseEvent - .AddAnnotation(OculusXRTelemetry::Annotations::BuildTargetGroup, OculusXRPSTUtils::ToString(Platform)) - .AddAnnotation(OculusXRTelemetry::Annotations::Origin, TCHAR_TO_ANSI(*TriggerOrigin)); -} - -/** - * Spawn the project setup tool tab - */ -TSharedRef FOculusXRProjectSetupToolModule::OnSpawnProjectSetupToolTab(const FSpawnTabArgs& SpawnTabArgs) -{ - SpawnTutorialWindowIfNeeded(); - const auto& Platform = static_cast(GetMutableDefault()->CurrentPlatform); - const OculusXRTelemetry::TScopedMarker OpenEvent; - const auto& Annotated = OpenEvent - .AddAnnotation(OculusXRTelemetry::Annotations::BuildTargetGroup, OculusXRPSTUtils::ToString(Platform)) - .AddAnnotation(OculusXRTelemetry::Annotations::Origin, TCHAR_TO_ANSI(*TriggerOrigin)); - TriggerOrigin = "Menu"; - TSharedRef DockTab = SNew(SDockTab) - .TabRole(ETabRole::NomadTab) - .OnTabClosed(SDockTab::FOnTabClosedCallback::CreateLambda([this](TSharedRef) { - OnWidgetClosed(); - })) - .Label(NSLOCTEXT("MetaXRProjectSetupTool", "MetaXRPSTTitle", "Meta XR Project Setup Tool")) - [SNew(SOculusXRProjectSetupToolWidget)]; - - DockTab->SetTabIcon(IconStyle->GetBrush(MetaLogo)); - return DockTab; -} - -void FOculusXRProjectSetupToolModule::SpawnTutorialWindowIfNeeded() const -{ - const auto Settings = GetMutableDefault(); - if (Settings->bShowGuidedTutorial) - { - TSharedPtr ParentWindow; - - if (FModuleManager::Get().IsModuleLoaded("MainFrame")) - { - const IMainFrameModule& MainFrame = FModuleManager::LoadModuleChecked("MainFrame"); - ParentWindow = MainFrame.GetParentWindow(); - } - const TSharedRef Window = SNew(SWindow) - .Title(LOCTEXT("Meta XR Project Setup Tool", "Meta XR Project Setup Tool")) - .SizingRule(ESizingRule::Autosized) - .SupportsMaximize(false) - .SupportsMinimize(false)[SNew(SOculusXRTutorialWindow)]; - - Window->SetOnWindowClosed(FOnWindowClosed::CreateLambda([](const TSharedRef&) { - auto Settings = GetMutableDefault(); - Settings->bShowGuidedTutorial = false; - Settings->TryUpdateDefaultConfigFile(); - const OculusXRTelemetry::TScopedMarker ClosedEvent; - const auto& Annotated = ClosedEvent - .AddAnnotation(OculusXRTelemetry::Annotations::TutorialCompleted, Settings->bGuidedTutorialComplete ? "true" : "false"); - })); - FSlateApplication::Get().AddModalWindow(Window, ParentWindow, false); - } -} - -#endif -#undef LOCTEXT_NAMESPACE diff --git a/Plugins/MetaXR/Source/OculusXRProjectSetupTool/Private/OculusXRProjectSetupToolModule.h b/Plugins/MetaXR/Source/OculusXRProjectSetupTool/Private/OculusXRProjectSetupToolModule.h deleted file mode 100644 index b030602..0000000 --- a/Plugins/MetaXR/Source/OculusXRProjectSetupTool/Private/OculusXRProjectSetupToolModule.h +++ /dev/null @@ -1,67 +0,0 @@ -// Copyright (c) Meta Platforms, Inc. and affiliates. - -#pragma once - -#include "CoreMinimal.h" -#include "IOculusXRProjectSetupModule.h" - -class FSlateStyleSet; -class SDockTab; -class FSpawnTabArgs; -struct IConsoleCommand; - -DECLARE_LOG_CATEGORY_EXTERN(LogProjectSetupTool, Log, All); - -/** - * The module for the implementation of the Project Setup Tool - */ -class FOculusXRProjectSetupToolModule : public IOculusXRProjectSetupToolModule -{ -public: - /** - * IModuleInterface implementation - */ - virtual void StartupModule() override; - virtual void ShutdownModule() override; - - /** Show the project setup tool window */ - virtual void ShowProjectSetupTool(const FString& Origin) override; - -#if !(UE_BUILD_SHIPPING || UE_BUILD_TEST) - static TSharedPtr GetSlateStyle(); - -private: - /** Register and unregister console commands */ - void RegisterConsoleCommands(); - void UnregisterConsoleCommands(); - - /** Register and unregister styles */ - void RegisterStyleWithStyleRegistry() const; - void UnregisterStyleWithStyleRegistry() const; - - /** Register tool extensions */ - void RegisterProjectSetupToolWithTabManager(); - void RegisterStatusBarWidgetWithToolMenu() const; - - /** Process functions for all the console commands */ - static void ProcessApplyRuleCommand(const TArray& Arguments); - static void ProcessIsRuleAppliedCommand(const TArray& Arguments); - static void ProcessListAppliedRulesCommand(); - static void ProcessListRulesCommand(); - static void ProcessIgnoreRuleCommand(const TArray& Arguments); - static void ProcessUnIgnoreRuleCommand(const TArray& Arguments); - static void ProcessUnIgnoreAllRulesCommand(); - - void OnWidgetClosed(); - void SpawnTutorialWindowIfNeeded() const; - - /** Spawn function for creating the project setup tool tab */ - TSharedRef OnSpawnProjectSetupToolTab(const FSpawnTabArgs& SpawnTabArgs); - - /** All registered console commands */ - TArray ConsoleCommands{}; - - /** If PST is triggered from toolbar*/ - FString TriggerOrigin = "Menu"; -#endif -}; diff --git a/Plugins/MetaXR/Source/OculusXRProjectSetupTool/Private/OculusXRRuleProcessorSubsystem.cpp b/Plugins/MetaXR/Source/OculusXRProjectSetupTool/Private/OculusXRRuleProcessorSubsystem.cpp deleted file mode 100644 index 6d885de..0000000 --- a/Plugins/MetaXR/Source/OculusXRProjectSetupTool/Private/OculusXRRuleProcessorSubsystem.cpp +++ /dev/null @@ -1,293 +0,0 @@ -// Copyright (c) Meta Platforms, Inc. and affiliates. - -#include "OculusXRRuleProcessorSubsystem.h" - -#include "LightComponentBase.h" -#include "OculusXRProjectSetupToolModule.h" -#include "OculusXRPSTEvents.h" -#include "OculusXRPSTSettings.h" -#include "OculusXRPSTUtils.h" -#include "OculusXRTelemetry.h" -#include "Developer/LauncherServices/Public/ILauncherServicesModule.h" -#include "Rules/OculusXRAnchorsRules.h" -#include "Rules/OculusXRCompatibilityRules.h" -#include "Rules/OculusXRMovementRules.h" -#include "Rules/OculusXRPassthroughRules.h" -#include "Rules/OculusXRRenderingRules.h" -#include "Rules/OculusXRPluginRules.h" -#include "Editor.h" - -/** - * Initialize the subsystem. USubsystem override - */ -void UOculusXRRuleProcessorSubsystem::Initialize(FSubsystemCollectionBase& Collection) -{ - Super::Initialize(Collection); - - PopulateDynamicLights(); - - // Register rules - RegisterRules(OculusXRRenderingRules::RenderingRules_Table); - RegisterRules(OculusXRPluginRules::PluginRules_Table); - RegisterRules(OculusXRCompatibilityRules::CompatibilityRules_Table); - RegisterRules(OculusXRPassthroughRules::PassthroughRules_Table); - RegisterRules(OculusXRMovementRules::MovementRules_Table); - RegisterRules(OculusXRAnchorsRules::AnchorRules_Table); - - // Register on Launcher Callback - ILauncherServicesModule& ProjectLauncherServicesModule = FModuleManager::LoadModuleChecked( - "LauncherServices"); - LauncherCallbackHandle = ProjectLauncherServicesModule.OnCreateLauncherDelegate.AddUObject( - this, &UOculusXRRuleProcessorSubsystem::OnLauncherCreated); - // Show errors after play in editor is over. - FEditorDelegates::PrePIEEnded.AddUObject(this, &UOculusXRRuleProcessorSubsystem::OnPIEEnded); - - // Update if rules are ignored. Note: At time of the rules construction it is early to fetch settings - const auto& IgnoredRules = GetMutableDefault()->IgnoredRules; - for (const auto& Rule : Rules) - { - Rule->SetIgnoreRule(IgnoredRules.Contains(Rule->GetId()), false); - } - - SendSummaryEvent(); -} - -/** - * De-initializes the subsystem. USubsystem override - */ -void UOculusXRRuleProcessorSubsystem::Deinitialize() -{ - SendSummaryEvent(); - Super::Deinitialize(); - if (LauncherCallbackHandle.IsValid()) - { - ILauncherServicesModule& ProjectLauncherServicesModule = FModuleManager::LoadModuleChecked< - ILauncherServicesModule>( - "LauncherServices"); - ProjectLauncherServicesModule.OnCreateLauncherDelegate.Remove(LauncherCallbackHandle); - LauncherCallbackHandle.Reset(); - } -} - -/** - * Register a rule - */ -bool UOculusXRRuleProcessorSubsystem::RegisterRule(const SetupRulePtr& Rule) -{ - if (Rule == nullptr) - { - UE_LOG(LogProjectSetupTool, Error, TEXT("RegisterRule: Cannot register nullptr")); - return false; - } - bool bIsAlreadyRegistred = false; - Rules.Add(Rule, &bIsAlreadyRegistred); - if (bIsAlreadyRegistred) - { - UE_LOG(LogProjectSetupTool, Warning, TEXT("RegisterRule: rule with id <%s> has already been registered"), - *(Rule->GetId().ToString())); - return false; - } - - UE_LOG(LogProjectSetupTool, Display, TEXT("RegisterRule: added rule with id <%s>"), *(Rule->GetId().ToString())); - - return true; -} - -/** - * Unregister a rule - */ -bool UOculusXRRuleProcessorSubsystem::UnregisterRule(const SetupRulePtr& Rule) -{ - if (Rule == nullptr) - { - UE_LOG(LogProjectSetupTool, Error, TEXT("RegisterRule: Cannot deregister nullptr")); - return false; - } - const auto Id = Rule->GetId(); - if (!Rules.Contains(Id)) - { - UE_LOG(LogProjectSetupTool, Warning, TEXT("UnregisterRule: rule with id <%s> has not been registered"), - *Id.ToString()); - return false; - } - - UE_LOG(LogProjectSetupTool, Display, TEXT("UnregisterRule: removed rule with id <%s>"), *Id.ToString()); - - Rules.Remove(Id); - return true; -} - -/** - * Unregister all rules - */ -void UOculusXRRuleProcessorSubsystem::UnregisterAllRules() -{ - UE_LOG(LogProjectSetupTool, Display, TEXT("UnregisterRule: removed all rules")); - - Rules.Empty(); -} - -/** - * Fetch all rules - */ -const TSet& UOculusXRRuleProcessorSubsystem::GetRules() const -{ - return Rules; -} - -/** - * Fetch rule with given `Id` - */ -SetupRulePtr UOculusXRRuleProcessorSubsystem::GetRule(const FName& Id) const -{ - const auto Found = Rules.Find(Id); - if (Found == nullptr) - { - return nullptr; - } - - return *Found; -} - -bool UOculusXRRuleProcessorSubsystem::DynamicLightsExistInProject() const -{ - return DynamicLights.Num() > 0; -} - -void UOculusXRRuleProcessorSubsystem::SendSummaryEvent() -{ - SendSummaryEvent(ESetupRulePlatform::MetaLink); - SendSummaryEvent(ESetupRulePlatform::MetaQuest_2); - SendSummaryEvent(ESetupRulePlatform::MetaQuest_3); - SendSummaryEvent(ESetupRulePlatform::MetaQuest_Pro); -} - -void UOculusXRRuleProcessorSubsystem::SendSummaryEvent(ESetupRulePlatform Platform) const -{ - const auto& Status = UnAppliedRulesStatus(Platform); - const char* Level = Status.PendingRequiredRulesCount > 0 ? "Critical" : "Recommended"; - const char* Value = TCHAR_TO_ANSI(*FString::FromInt(Status.PendingRequiredRulesCount > 0 ? Status.PendingRequiredRulesCount : Status.PendingRecommendedRulesCount)); - const char* Total = TCHAR_TO_ANSI( - *FString::FromInt(Status.PendingRequiredRulesCount + Status.PendingRecommendedRulesCount)); - const OculusXRTelemetry::TScopedMarker SummaryEvent; - const auto& CriticalAnnotated = SummaryEvent - .AddAnnotation(OculusXRTelemetry::Annotations::Level, Level) - .AddAnnotation(OculusXRTelemetry::Annotations::Value, Value) - .AddAnnotation(OculusXRTelemetry::Annotations::Count, Total) - .AddAnnotation(OculusXRTelemetry::Annotations::BuildTargetGroup, OculusXRPSTUtils::ToString(Platform)); -} - -void UOculusXRRuleProcessorSubsystem::Refresh() -{ - PopulateDynamicLights(); - SendSummaryEvent(); -} - -UOculusXRRuleProcessorSubsystem::RuleStatus UOculusXRRuleProcessorSubsystem::UnAppliedRulesStatus( - ESetupRulePlatform Platform) const -{ - RuleStatus Status{}; - for (const auto& Rule : Rules) - { - if (Rule->IsApplied()) - { - continue; - } - if (OculusXRPSTUtils::ShouldRuleBeSkipped(Rule, Platform, { ESetupRuleSeverity::Critical, ESetupRuleSeverity::Performance, ESetupRuleSeverity::Warning })) - { - continue; - } - - if (Rule->GetSeverity() == ESetupRuleSeverity::Critical) - { - ++Status.PendingRequiredRulesCount; - } - else - { - ++Status.PendingRecommendedRulesCount; - } - } - return Status; -} - -void UOculusXRRuleProcessorSubsystem::PopulateDynamicLights() -{ - DynamicLights.Empty(); - - for (TObjectIterator LightItr; LightItr; ++LightItr) - { - const AActor* owner = LightItr->GetOwner(); - if (owner != nullptr && (owner->IsRootComponentStationary() || owner->IsRootComponentMovable()) && !owner->IsHiddenEd() && LightItr->IsVisible() && owner->IsEditable() && owner->IsSelectable() && LightItr->GetWorld() == GEditor->GetEditorWorldContext().World()) - { - DynamicLights.Add(LightItr->GetFullGroupName(false), TWeakObjectPtr(*LightItr)); - } - } -} - -void UOculusXRRuleProcessorSubsystem::RegisterRules(const TArray& InRules) -{ - for (const auto& Rule : InRules) - { - if (!RegisterRule(Rule)) - { - UE_LOG(LogProjectSetupTool, Error, TEXT("Cannot register rule <%s>"), *Rule->GetId().ToString()); - } - } -} - -void UOculusXRRuleProcessorSubsystem::OnLauncherCreated(ILauncherRef Launcher) -{ - // Add callback for when launcher worker is started - Launcher->FLauncherWorkerStartedDelegate.AddUObject( - this, &UOculusXRRuleProcessorSubsystem::OnLauncherWorkerStarted); -} - -void UOculusXRRuleProcessorSubsystem::OnLauncherWorkerStarted(ILauncherWorkerPtr LauncherWorker, - ILauncherProfileRef Profile) -{ - if (!GetMutableDefault()->bStopBuildOnUnAppliedCriticalItems) - { - return; - } - - const TArray Platforms = Profile.Get().GetCookedPlatforms(); - ESetupRulePlatform RulePlatforms = ESetupRulePlatform::None; - if (Platforms.Contains("Android_ASTC")) - { - RulePlatforms |= MetaQuest_All; - } - - if (Platforms.Contains("Windows")) - { - RulePlatforms |= ESetupRulePlatform::MetaLink; - } - - const auto& UnAppliedRules = UnAppliedRulesForPlatform(RulePlatforms, { ESetupRuleSeverity::Critical }); - - OculusXRPSTUtils::LogErrorForUnAppliedRules(UnAppliedRules); - if (!UnAppliedRules.IsEmpty()) - { - LauncherWorker->Cancel(); - } -} - -void UOculusXRRuleProcessorSubsystem::OnPIEEnded(bool bIsSimulating) -{ - const auto& UnAppliedRules = UnAppliedRulesForPlatform(ESetupRulePlatform::MetaLink, { ESetupRuleSeverity::Critical }); - - OculusXRPSTUtils::LogErrorForUnAppliedRules(UnAppliedRules); -} - -TArray UOculusXRRuleProcessorSubsystem::UnAppliedRulesForPlatform(ESetupRulePlatform Platform, const TSet& Severities) const -{ - TArray UnAppliedRules = {}; - for (const auto Rule : Rules) - { - if (!OculusXRPSTUtils::ShouldRuleBeSkipped(Rule, Platform, Severities) && !Rule->IsApplied()) - { - UnAppliedRules.Add(Rule); - } - } - - return UnAppliedRules; -} diff --git a/Plugins/MetaXR/Source/OculusXRProjectSetupTool/Private/OculusXRSetupRule.cpp b/Plugins/MetaXR/Source/OculusXRProjectSetupTool/Private/OculusXRSetupRule.cpp deleted file mode 100644 index 9b2b032..0000000 --- a/Plugins/MetaXR/Source/OculusXRProjectSetupTool/Private/OculusXRSetupRule.cpp +++ /dev/null @@ -1,120 +0,0 @@ -// Copyright (c) Meta Platforms, Inc. and affiliates. - -#include "OculusXRSetupRule.h" - -#include "OculusXRPSTEvents.h" -#include "OculusXRPSTSettings.h" -#include "OculusXRPSTUtils.h" - -ISetupRule::ISetupRule( - const FName& InId, - const FText& InDisplayName, - const FText& InDescription, - const ESetupRuleCategory InCategory, - const ESetupRuleSeverity InSeverity, - const ESetupRulePlatform InPlatform, - const bool InShowApply) - : Id(InId), DisplayName(InDisplayName), Description(InDescription), Category(InCategory), Severity(InSeverity), Platform(InPlatform), bShowApply(InShowApply) -{ - InfoUrl = FString(); -} - -ISetupRule::ISetupRule( - const FName& InId, - const FText& InDisplayName, - const FText& InDescription, - const FString& InInfoUrl, - const ESetupRuleCategory InCategory, - const ESetupRuleSeverity InSeverity, - const ESetupRulePlatform InPlatform, - const bool InShowApply) - : Id(InId), DisplayName(InDisplayName), Description(InDescription), InfoUrl(InInfoUrl), Category(InCategory), Severity(InSeverity), Platform(InPlatform), bShowApply(InShowApply) -{ -} - -void ISetupRule::Apply(bool& ShouldRestartEditor) -{ - const OculusXRTelemetry::TScopedMarker FixedEvent; - const auto& Annotated = FixedEvent - .AddAnnotation(OculusXRTelemetry::Annotations::Uid, TCHAR_TO_ANSI(*Id.ToString())) - .AddAnnotation(OculusXRTelemetry::Annotations::Level, OculusXRPSTUtils::ToString(Severity)) - .AddAnnotation(OculusXRTelemetry::Annotations::Group, OculusXRPSTUtils::ToString(Category)) - .AddAnnotation(OculusXRTelemetry::Annotations::BuildTargetGroup, OculusXRPSTUtils::ToString(static_cast(Platform))) - .AddAnnotation(OculusXRTelemetry::Annotations::Value, "true"); - ApplyImpl(ShouldRestartEditor); -} - -bool ISetupRule::IsValid() -{ - return true; -} - -bool ISetupRule::IsIgnored() const -{ - return bIsIgnored; -} - -void ISetupRule::SetIgnoreRule(bool bIgnore, bool bSendMetrics) -{ - if (bSendMetrics) - { - const OculusXRTelemetry::TScopedMarker IgnoreEvent; - const auto& Annotated = IgnoreEvent - .AddAnnotation(OculusXRTelemetry::Annotations::Uid, TCHAR_TO_ANSI(*Id.ToString())) - .AddAnnotation(OculusXRTelemetry::Annotations::Level, OculusXRPSTUtils::ToString(Severity)) - .AddAnnotation(OculusXRTelemetry::Annotations::Group, OculusXRPSTUtils::ToString(Category)) - .AddAnnotation(OculusXRTelemetry::Annotations::BuildTargetGroup, OculusXRPSTUtils::ToString(static_cast(Platform))) - .AddAnnotation(OculusXRTelemetry::Annotations::Value, bIgnore ? "true" : "false"); - } - - if (bIsIgnored == bIgnore) - { - return; - } - bIsIgnored = bIgnore; - - if (bIgnore) - { - GetMutableDefault()->IgnoredRules.Add(Id); - } - else - { - GetMutableDefault()->IgnoredRules.Remove(Id); - } - GetMutableDefault()->TryUpdateDefaultConfigFile(); -} - -const FName& ISetupRule::GetId() const -{ - return Id; -} -FText ISetupRule::GetDisplayName() const -{ - return DisplayName; -} -FText ISetupRule::GetDescription() const -{ - return Description; -} -FString ISetupRule::GetInfoUrl() const -{ - return InfoUrl; -} -ESetupRuleCategory ISetupRule::GetCategory() const -{ - return Category; -} -ESetupRuleSeverity ISetupRule::GetSeverity() const -{ - return Severity; -} - -ESetupRulePlatform ISetupRule::GetPlatform() const -{ - return Platform; -} - -bool ISetupRule::ShowApply() const -{ - return bShowApply; -} diff --git a/Plugins/MetaXR/Source/OculusXRProjectSetupTool/Private/Rules/OculusXRAnchorsRules.cpp b/Plugins/MetaXR/Source/OculusXRProjectSetupTool/Private/Rules/OculusXRAnchorsRules.cpp deleted file mode 100644 index 113f625..0000000 --- a/Plugins/MetaXR/Source/OculusXRProjectSetupTool/Private/Rules/OculusXRAnchorsRules.cpp +++ /dev/null @@ -1,49 +0,0 @@ -// Copyright (c) Meta Platforms, Inc. and affiliates. - -#include "OculusXRAnchorsRules.h" -#include "CoreMinimal.h" -#include "OculusXRHMDRuntimeSettings.h" -#include "OculusXRAnchorComponents.h" -#include "OculusXRPSTUtils.h" -#include "OculusXRSceneActor.h" - -namespace OculusXRAnchorsRules -{ - bool FEnableAnchorSupportRule::IsApplied() const - { - const UOculusXRHMDRuntimeSettings* Settings = GetMutableDefault(); - - return Settings->bAnchorSupportEnabled; - } - - void FEnableAnchorSupportRule::ApplyImpl(bool& OutShouldRestartEditor) - { - OCULUSXR_UPDATE_SETTINGS(UOculusXRHMDRuntimeSettings, bAnchorSupportEnabled, true); - OutShouldRestartEditor = false; - } - - bool FEnableAnchorSupportRule::IsValid() - { - return OculusXRPSTUtils::IsComponentOfTypeInWorld() || OculusXRPSTUtils::IsComponentOfTypeInWorld(); - } - - bool FEnableSceneSupportRule::IsApplied() const - { - const UOculusXRHMDRuntimeSettings* Settings = GetMutableDefault(); - - return Settings->bSceneSupportEnabled; - } - - void FEnableSceneSupportRule::ApplyImpl(bool& OutShouldRestartEditor) - { - OCULUSXR_UPDATE_SETTINGS(UOculusXRHMDRuntimeSettings, bSceneSupportEnabled, true); - OutShouldRestartEditor = false; - } - - bool FEnableSceneSupportRule::IsValid() - { - return OculusXRPSTUtils::IsComponentOfTypeInWorld(); - } -} // namespace OculusXRAnchorsRules - -#undef LOCTEXT_NAMESPACE diff --git a/Plugins/MetaXR/Source/OculusXRProjectSetupTool/Private/Rules/OculusXRAnchorsRules.h b/Plugins/MetaXR/Source/OculusXRProjectSetupTool/Private/Rules/OculusXRAnchorsRules.h deleted file mode 100644 index 85fbf0b..0000000 --- a/Plugins/MetaXR/Source/OculusXRProjectSetupTool/Private/Rules/OculusXRAnchorsRules.h +++ /dev/null @@ -1,49 +0,0 @@ -// Copyright (c) Meta Platforms, Inc. and affiliates. - -#pragma once -#include "OculusXRSetupRule.h" - -/* - * Collection of rules related to anchors. Can be extended as needed - */ -namespace OculusXRAnchorsRules -{ - class FEnableAnchorSupportRule final : public ISetupRule - { - public: - FEnableAnchorSupportRule() - : ISetupRule( - "Feature_EnableAnchorSupport", - NSLOCTEXT("OculusXRAnchorsRules", "EnableAnchorSupport_DisplayName", "Enable Anchor Support"), - NSLOCTEXT("OculusXRAnchorsRules", "EnableAnchorSupport_Description", "Anchor support must be enabled when using anchor features"), - ESetupRuleCategory::Features, - ESetupRuleSeverity::Critical) {} - virtual bool IsApplied() const override; - virtual bool IsValid() override; - - protected: - virtual void ApplyImpl(bool& OutShouldRestartEditor) override; - }; - - class FEnableSceneSupportRule final : public ISetupRule - { - public: - FEnableSceneSupportRule() - : ISetupRule( - "Feature_EnableSceneSupport", - NSLOCTEXT("OculusXRAnchorsRules", "EnableSceneSupport_DisplayName", "Enable Scene Support"), - NSLOCTEXT("OculusXRAnchorsRules", "EnableSceneSupport_Description", "Scene support must be enabled when using scene features"), - ESetupRuleCategory::Features, - ESetupRuleSeverity::Critical) {} - virtual bool IsApplied() const override; - virtual bool IsValid() override; - - protected: - virtual void ApplyImpl(bool& OutShouldRestartEditor) override; - }; - - inline TArray AnchorRules_Table{ - MakeShared(), - MakeShared() - }; -} // namespace OculusXRAnchorsRules diff --git a/Plugins/MetaXR/Source/OculusXRProjectSetupTool/Private/Rules/OculusXRCompatibilityRules.cpp b/Plugins/MetaXR/Source/OculusXRProjectSetupTool/Private/Rules/OculusXRCompatibilityRules.cpp deleted file mode 100644 index 89c8520..0000000 --- a/Plugins/MetaXR/Source/OculusXRProjectSetupTool/Private/Rules/OculusXRCompatibilityRules.cpp +++ /dev/null @@ -1,367 +0,0 @@ -// Copyright (c) Meta Platforms, Inc. and affiliates. - -#include "OculusXRCompatibilityRules.h" -#include "CoreMinimal.h" -#include "AndroidRuntimeSettings.h" -#include "AndroidSDKSettings.h" -#include "GeneralProjectSettings.h" -#include "ISettingsModule.h" -#include "ISettingsCategory.h" -#include "ISettingsContainer.h" -#include "ISettingsSection.h" -#include "OculusXRRuleProcessorSubsystem.h" -#include "GameFramework/InputSettings.h" -#include "OculusXRHMDRuntimeSettings.h" -#include "OculusXRPSTUtils.h" -#include "Misc/EngineVersionComparison.h" - -#define LOCTEXT_NAMESPACE "OculusXRCompatibilityRules" -namespace -{ - constexpr int32 MinimumAndroidAPILevel = 32; // With Quest 1 support ending in Jan 2025, API level 29 is no longer supported. - constexpr int32 TargetAndroidAPILevel = 32; // Target API 32 or higher is required to submit to the Meta Quest Store. See https://developer.oculus.com/blog/meta-quest-apps-android-12l-june-30/ - constexpr char AndroidNDKVersionNumber[] = "25.1.8937393"; - -// SDK Max API level is determined by reviewing SetupAndroid.bat for each UE version. -// SDK Min API Level is determined by Quest Store requirements as noted above. -#if UE_VERSION_OLDER_THAN(5, 4, 0) - constexpr char AndroidSDKAPIMinLevel[] = "android-32"; - constexpr char AndroidSDKAPIMaxLevel[] = "android-32"; - constexpr int32 AndroidSDKAPIMinLevelInt = 32; - constexpr int32 AndroidSDKAPIMaxLevelInt = 32; - - constexpr char AndroidNDKAPIMinLevel[] = "android-32"; - constexpr char AndroidNDKAPIMaxLevel[] = "android-32"; - constexpr int32 AndroidNDKAPIMinLevelInt = 32; - constexpr int32 AndroidNDKAPIMaxLevelInt = 32; -#elif UE_VERSION_OLDER_THAN(5, 5, 0) - constexpr char AndroidSDKAPIMinLevel[] = "android-32"; - constexpr char AndroidSDKAPIMaxLevel[] = "android-33"; - constexpr int32 AndroidSDKAPIMinLevelInt = 32; - constexpr int32 AndroidSDKAPIMaxLevelInt = 33; - - constexpr char AndroidNDKAPIMinLevel[] = "android-32"; - constexpr char AndroidNDKAPIMaxLevel[] = "android-33"; - constexpr int32 AndroidNDKAPIMinLevelInt = 32; - constexpr int32 AndroidNDKAPIMaxLevelInt = 33; -#else // 5.5 and newer - constexpr char AndroidSDKAPIMinLevel[] = "android-32"; - constexpr char AndroidSDKAPIMaxLevel[] = "android-34"; - constexpr int32 AndroidSDKAPIMinLevelInt = 32; - constexpr int32 AndroidSDKAPIMaxLevelInt = 34; - - constexpr char AndroidNDKAPIMinLevel[] = "android-32"; - constexpr char AndroidNDKAPIMaxLevel[] = "android-33"; // API level 34 is not supported by NDK 25.1.8937393 - constexpr int32 AndroidNDKAPIMinLevelInt = 32; - constexpr int32 AndroidNDKAPIMaxLevelInt = 33; -#endif -} // namespace - -namespace OculusXRCompatibilityRules -{ - - FUseAndroidSDKMinimumRule::FUseAndroidSDKMinimumRule() - : ISetupRule( - "Compatibility_UseAndroidSDKMinimum", - LOCTEXT("UseAndroidSDKMinimum_DisplayName", "Use Android SDK Minimum Version"), - FText::Format( - LOCTEXT("UseAndroidSDKMinimum_Description", "Minimum Android API level must be at least {0}."), - MinimumAndroidAPILevel), - ESetupRuleCategory::Compatibility, - ESetupRuleSeverity::Critical, - MetaQuest_All) {} - - bool FUseAndroidSDKMinimumRule::IsApplied() const - { - const UAndroidRuntimeSettings* Settings = GetMutableDefault(); - - return Settings->MinSDKVersion >= MinimumAndroidAPILevel; - } - - void FUseAndroidSDKMinimumRule::ApplyImpl(bool& OutShouldRestartEditor) - { - OCULUSXR_UPDATE_SETTINGS(UAndroidRuntimeSettings, MinSDKVersion, MinimumAndroidAPILevel); - OutShouldRestartEditor = false; - } - - FUseAndroidSDKTargetRule::FUseAndroidSDKTargetRule() - : ISetupRule( - "Compatibility_UseAndroidSDKTarget", - LOCTEXT("UseAndroidSDKTarget_DisplayName", "Use Android SDK Target Version"), - FText::Format( - LOCTEXT("UseAndroidSDKTarget_Description", "Target Android API level must be at least {0}."), - TargetAndroidAPILevel), - ESetupRuleCategory::Compatibility, - ESetupRuleSeverity::Critical, - MetaQuest_All) {} - - bool FUseAndroidSDKTargetRule::IsApplied() const - { - const UAndroidRuntimeSettings* Settings = GetMutableDefault(); - - return Settings->TargetSDKVersion >= TargetAndroidAPILevel; - } - - void FUseAndroidSDKTargetRule::ApplyImpl(bool& OutShouldRestartEditor) - { - OCULUSXR_UPDATE_SETTINGS(UAndroidRuntimeSettings, TargetSDKVersion, TargetAndroidAPILevel); - OutShouldRestartEditor = false; - } - FUseAndroidSDKLevelRule::FUseAndroidSDKLevelRule() - : ISetupRule( - "Compatibility_UseAndroidSDKLevel", - LOCTEXT("UseAndroidSDKLevel_DisplayName", "Use Android SDK Level"), - FText::Format( - LOCTEXT("UseAndroidSDKLevel_Description", "Android SDK level should be set between {0} and {1} prior to packaging apks."), - FText::AsCultureInvariant(AndroidSDKAPIMinLevel), FText::AsCultureInvariant(AndroidSDKAPIMaxLevel)), - TEXT("https://developer.oculus.com/blog/meta-quest-apps-android-12l-june-30/"), - ESetupRuleCategory::Compatibility, - ESetupRuleSeverity::Critical, - MetaQuest_All, - true) {} - - bool FUseAndroidSDKLevelRule::IsApplied() const - { - const UAndroidSDKSettings* Settings = GetMutableDefault(); - FString SDKAPILevel = Settings->SDKAPILevel; - - if (SDKAPILevel.IsEmpty()) - { - return false; - } - if (SDKAPILevel.Equals(TEXT("latest")) || SDKAPILevel.Equals(TEXT("matchndk"))) - { - return true; - } - if (!SDKAPILevel.Left(8).Equals(TEXT("android-"))) - { - return false; - } - if (FCString::Atoi(*SDKAPILevel.Right(2)) < AndroidSDKAPIMinLevelInt) - { - return false; - } - if (FCString::Atoi(*SDKAPILevel.Right(2)) > AndroidSDKAPIMaxLevelInt) - { - return false; - } - - return true; - } - - void SaveSDKSettings() - { - ISettingsModule* SettingsModule = FModuleManager::GetModulePtr("Settings"); - if (!SettingsModule) - { - return; - } - ISettingsContainerPtr SettingsContainer = SettingsModule->GetContainer("Project"); - if (!SettingsContainer.IsValid()) - { - return; - } - ISettingsCategoryPtr SettingsCategory = SettingsContainer->GetCategory("Platforms"); - if (!SettingsCategory.IsValid()) - { - return; - } - ISettingsSectionPtr SettingsSection = SettingsCategory->GetSection("AndroidSDK"); - if (!SettingsSection.IsValid()) - { - return; - } - TWeakObjectPtr SettingsObject = SettingsSection->GetSettingsObject(); - if (!SettingsObject.IsValid()) - { - return; - } - - SettingsObject->UpdateGlobalUserConfigFile(); - } - - void FUseAndroidSDKLevelRule::ApplyImpl(bool& OutShouldRestartEditor) - { - OutShouldRestartEditor = false; - OCULUSXR_UPDATE_SETTINGS(UAndroidSDKSettings, SDKAPILevel, FText::AsCultureInvariant(AndroidSDKAPIMinLevel).ToString()); - SaveSDKSettings(); - } - - FUseAndroidNDKLevelRule::FUseAndroidNDKLevelRule() - : ISetupRule( - "Compatibility_UseAndroidNDKLevel", - LOCTEXT("UseAndroidNDKLevel_DisplayName", "Use Android NDK Level"), - FText::Format( - LOCTEXT("UseAndroidNDKLevel_Description", "Android NDK level should be set between {0} and {1} prior to packaging apks."), - FText::AsCultureInvariant(AndroidNDKAPIMinLevel), FText::AsCultureInvariant(AndroidNDKAPIMaxLevel)), - TEXT("https://developer.oculus.com/blog/meta-quest-apps-must-target-android-10-starting-september-29/"), - ESetupRuleCategory::Compatibility, - ESetupRuleSeverity::Critical, - MetaQuest_All, - true) {} - - bool FUseAndroidNDKLevelRule::IsApplied() const - { - const UAndroidSDKSettings* Settings = GetMutableDefault(); - FString NDKAPILevel = Settings->NDKAPILevel; - - if (NDKAPILevel.IsEmpty()) - { - return false; - } - if (NDKAPILevel.Equals(TEXT("latest"))) - { - return true; - } - if (!NDKAPILevel.Left(8).Equals(TEXT("android-"))) - { - return false; - } - if (FCString::Atoi(*NDKAPILevel.Right(2)) < AndroidNDKAPIMinLevelInt) - { - return false; - } - if (FCString::Atoi(*NDKAPILevel.Right(2)) > AndroidNDKAPIMaxLevelInt) - { - return false; - } - - return true; - } - - void FUseAndroidNDKLevelRule::ApplyImpl(bool& OutShouldRestartEditor) - { - OutShouldRestartEditor = false; - OCULUSXR_UPDATE_SETTINGS(UAndroidSDKSettings, NDKAPILevel, FText::AsCultureInvariant(AndroidNDKAPIMinLevel).ToString()); - SaveSDKSettings(); - } - - bool FUseArm64CPURule::IsApplied() const - { - const UAndroidRuntimeSettings* Settings = GetMutableDefault(); - - return Settings->bBuildForArm64 && !Settings->bBuildForX8664; - } - - void FUseArm64CPURule::ApplyImpl(bool& OutShouldRestartEditor) - { - OCULUSXR_UPDATE_SETTINGS(UAndroidRuntimeSettings, bBuildForArm64, true); - OCULUSXR_UPDATE_SETTINGS(UAndroidRuntimeSettings, bBuildForX8664, false); - OutShouldRestartEditor = false; - } - bool FEnablePackageForMetaQuestRule::IsApplied() const - { - const UAndroidRuntimeSettings* Settings = GetMutableDefault(); - - return Settings->bPackageForMetaQuest && !Settings->bSupportsVulkanSM5 && !Settings->bBuildForES31 && Settings->ExtraApplicationSettings.Find("com.oculus.supportedDevices") != INDEX_NONE; - } - - void FEnablePackageForMetaQuestRule::ApplyImpl(bool& OutShouldRestartEditor) - { - OCULUSXR_UPDATE_SETTINGS(UAndroidRuntimeSettings, bPackageForMetaQuest, true); - OCULUSXR_UPDATE_SETTINGS(UAndroidRuntimeSettings, bSupportsVulkanSM5, false); - OCULUSXR_UPDATE_SETTINGS(UAndroidRuntimeSettings, bBuildForES31, false); - - UAndroidRuntimeSettings* Settings = GetMutableDefault(); - if (Settings->ExtraApplicationSettings.Find("com.oculus.supportedDevices") == INDEX_NONE) - { - const FString SupportedDevicesValue("quest|quest2|questpro"); - Settings->ExtraApplicationSettings.Append(""); - Settings->UpdateSinglePropertyInConfigFile(Settings->GetClass()->FindPropertyByName(GET_MEMBER_NAME_CHECKED(UAndroidRuntimeSettings, ExtraApplicationSettings)), Settings->GetDefaultConfigFilename()); - } - - OutShouldRestartEditor = false; - } - - bool FQuest2SupportedDeviceRule::IsApplied() const - { - const UOculusXRHMDRuntimeSettings* Settings = GetMutableDefault(); - - return Settings->SupportedDevices.Contains(EOculusXRSupportedDevices::Quest2); - } - - void FQuest2SupportedDeviceRule::ApplyImpl(bool& OutShouldRestartEditor) - { - UOculusXRHMDRuntimeSettings* Settings = GetMutableDefault(); - - Settings->SupportedDevices.Add(EOculusXRSupportedDevices::Quest2); - // UpdateSinglePropertyInConfigFile does not support arrays - Settings->TryUpdateDefaultConfigFile(); - OutShouldRestartEditor = false; - } - - bool FQuestProSupportedDeviceRule::IsApplied() const - { - const UOculusXRHMDRuntimeSettings* Settings = GetMutableDefault(); - - return Settings->SupportedDevices.Contains(EOculusXRSupportedDevices::QuestPro); - } - - void FQuestProSupportedDeviceRule::ApplyImpl(bool& OutShouldRestartEditor) - { - UOculusXRHMDRuntimeSettings* Settings = GetMutableDefault(); - - Settings->SupportedDevices.Add(EOculusXRSupportedDevices::QuestPro); - // UpdateSinglePropertyInConfigFile does not support arrays - Settings->TryUpdateDefaultConfigFile(); - OutShouldRestartEditor = false; - } - - bool FQuest3SupportedDeviceRule::IsApplied() const - { - const UOculusXRHMDRuntimeSettings* Settings = GetMutableDefault(); - - return Settings->SupportedDevices.Contains(EOculusXRSupportedDevices::Quest3); - } - - void FQuest3SupportedDeviceRule::ApplyImpl(bool& OutShouldRestartEditor) - { - UOculusXRHMDRuntimeSettings* Settings = GetMutableDefault(); - - Settings->SupportedDevices.Add(EOculusXRSupportedDevices::Quest3); - // UpdateSinglePropertyInConfigFile does not support arrays - Settings->TryUpdateDefaultConfigFile(); - OutShouldRestartEditor = false; - } - - bool FEnableFullscreenRule::IsApplied() const - { - const UAndroidRuntimeSettings* Settings = GetMutableDefault(); - - return Settings->bFullScreen; - } - - void FEnableFullscreenRule::ApplyImpl(bool& OutShouldRestartEditor) - { - OCULUSXR_UPDATE_SETTINGS(UAndroidRuntimeSettings, bFullScreen, true); - OutShouldRestartEditor = false; - } - - bool FEnableStartInVRRule::IsApplied() const - { - const UGeneralProjectSettings* Settings = GetDefault(); - - return Settings->bStartInVR != 0; - } - - void FEnableStartInVRRule::ApplyImpl(bool& OutShouldRestartEditor) - { - OCULUSXR_UPDATE_SETTINGS(UGeneralProjectSettings, bStartInVR, true); - OutShouldRestartEditor = false; - } - - bool FDisableTouchInterfaceRule::IsApplied() const - { - const UInputSettings* Settings = GetDefault(); - - return Settings->DefaultTouchInterface.IsNull(); - } - - void FDisableTouchInterfaceRule::ApplyImpl(bool& OutShouldRestartEditor) - { - OCULUSXR_UPDATE_SETTINGS(UInputSettings, DefaultTouchInterface, nullptr); - OutShouldRestartEditor = false; - } -} // namespace OculusXRCompatibilityRules - -#undef LOCTEXT_NAMESPACE diff --git a/Plugins/MetaXR/Source/OculusXRProjectSetupTool/Private/Rules/OculusXRCompatibilityRules.h b/Plugins/MetaXR/Source/OculusXRProjectSetupTool/Private/Rules/OculusXRCompatibilityRules.h deleted file mode 100644 index 8e6b31e..0000000 --- a/Plugins/MetaXR/Source/OculusXRProjectSetupTool/Private/Rules/OculusXRCompatibilityRules.h +++ /dev/null @@ -1,199 +0,0 @@ -// Copyright (c) Meta Platforms, Inc. and affiliates. - -#pragma once -#include "OculusXRSetupRule.h" - -// Collection of rules related to compatibility. Can be extended as needed -namespace OculusXRCompatibilityRules -{ - - class FUseAndroidSDKMinimumRule final : public ISetupRule - { - public: - FUseAndroidSDKMinimumRule(); - virtual bool IsApplied() const override; - - protected: - virtual void ApplyImpl(bool& OutShouldRestartEditor) override; - }; - - class FUseAndroidSDKTargetRule final : public ISetupRule - { - public: - FUseAndroidSDKTargetRule(); - virtual bool IsApplied() const override; - - protected: - virtual void ApplyImpl(bool& OutShouldRestartEditor) override; - }; - void SaveSDKSettings(); - - class FUseAndroidSDKLevelRule final : public ISetupRule - { - public: - FUseAndroidSDKLevelRule(); - virtual bool IsApplied() const override; - - protected: - virtual void ApplyImpl(bool& OutShouldRestartEditor) override; - }; - - class FUseAndroidNDKLevelRule final : public ISetupRule - { - public: - FUseAndroidNDKLevelRule(); - virtual bool IsApplied() const override; - - protected: - virtual void ApplyImpl(bool& OutShouldRestartEditor) override; - }; - - class FUseArm64CPURule final : public ISetupRule - { - public: - FUseArm64CPURule() - : ISetupRule( - "Compatibility_UseArm64CPU", - NSLOCTEXT("OculusXRCompatibilityRules", "UseArm64CPU_DisplayName", "Use Arm64 CPU Architecture"), - NSLOCTEXT("OculusXRCompatibilityRules", "UseArm64CPU_Description", "Meta Quest store requires 64-bit applications"), - ESetupRuleCategory::Compatibility, - ESetupRuleSeverity::Critical, - MetaQuest_All) {} - virtual bool IsApplied() const override; - - protected: - virtual void ApplyImpl(bool& OutShouldRestartEditor) override; - }; - - class FEnablePackageForMetaQuestRule final : public ISetupRule - { - public: - FEnablePackageForMetaQuestRule() - : ISetupRule( - "Compatibility_UsePackageForMetaQuest", - NSLOCTEXT("OculusXRCompatibilityRules", "UsePackageForQuest_DisplayName", "Enable Package for Meta Quest devices"), - NSLOCTEXT("OculusXRCompatibilityRules", "UsePackageForQuest_Description", "\"Package for Meta Quest devices\" must be enabled."), - ESetupRuleCategory::Compatibility, - ESetupRuleSeverity::Critical, - MetaQuest_All) {} - virtual bool IsApplied() const override; - - protected: - virtual void ApplyImpl(bool& OutShouldRestartEditor) override; - }; - - class FQuest2SupportedDeviceRule final : public ISetupRule - { - public: - FQuest2SupportedDeviceRule() - : ISetupRule( - "Compatibility_UsePackageForQuest2", - NSLOCTEXT("OculusXRCompatibilityRules", "UsePackageForQuest_DisplayName", "Use Package for Quest2"), - NSLOCTEXT("OculusXRCompatibilityRules", "UsePackageForQuest_Description", "Meta Quest2 must be added to \"Supported Meta Quest Devices\"."), - ESetupRuleCategory::Compatibility, - ESetupRuleSeverity::Critical, - ESetupRulePlatform::MetaQuest_2) {} - virtual bool IsApplied() const override; - - protected: - virtual void ApplyImpl(bool& OutShouldRestartEditor) override; - }; - - class FQuestProSupportedDeviceRule final : public ISetupRule - { - public: - FQuestProSupportedDeviceRule() - : ISetupRule( - "Compatibility_UsePackageForQuestPro", - NSLOCTEXT("OculusXRCompatibilityRules", "UsePackageForQuest_DisplayName", "Use Package for QuestPro"), - NSLOCTEXT("OculusXRCompatibilityRules", "UsePackageForQuest_Description", "Meta QuestPro must be added to \"Supported Meta Quest Devices\"."), - ESetupRuleCategory::Compatibility, - ESetupRuleSeverity::Critical, - ESetupRulePlatform::MetaQuest_Pro) {} - virtual bool IsApplied() const override; - - protected: - virtual void ApplyImpl(bool& OutShouldRestartEditor) override; - }; - - class FQuest3SupportedDeviceRule final : public ISetupRule - { - public: - FQuest3SupportedDeviceRule() - : ISetupRule( - "Compatibility_UsePackageForQuest3", - NSLOCTEXT("OculusXRCompatibilityRules", "UsePackageForQuest_DisplayName", "Use Package for Quest3"), - NSLOCTEXT("OculusXRCompatibilityRules", "UsePackageForQuest_Description", "Meta Quest3 must be added to \"Supported Meta Quest Devices\"."), - ESetupRuleCategory::Compatibility, - ESetupRuleSeverity::Critical, - ESetupRulePlatform::MetaQuest_3) {} - virtual bool IsApplied() const override; - - protected: - virtual void ApplyImpl(bool& OutShouldRestartEditor) override; - }; - - class FEnableFullscreenRule final : public ISetupRule - { - public: - FEnableFullscreenRule() - : ISetupRule( - "Compatibility_EnableFullscreen", - NSLOCTEXT("OculusXRCompatibilityRules", "EnableFullscreen_DisplayName", "Enable Fullscreen"), - NSLOCTEXT("OculusXRCompatibilityRules", "EnableFullscreen_Description", "Android fullscreen must be enabled for VR"), - ESetupRuleCategory::Compatibility, - ESetupRuleSeverity::Warning, - MetaQuest_All) {} - virtual bool IsApplied() const override; - - protected: - virtual void ApplyImpl(bool& OutShouldRestartEditor) override; - }; - - class FEnableStartInVRRule final : public ISetupRule - { - public: - FEnableStartInVRRule() - : ISetupRule( - "Compatibility_EnableStartInVR", - NSLOCTEXT("OculusXRCompatibilityRules", "EnableStartInVR_DisplayName", "Enable Start in VR"), - NSLOCTEXT("OculusXRCompatibilityRules", "EnableStartInVR_Description", "Enable the \"Start in VR\" setting to ensure your app starts in VR. (You can also ignore this and pass -vr at the command line"), - ESetupRuleCategory::Compatibility, - ESetupRuleSeverity::Warning) {} - virtual bool IsApplied() const override; - - protected: - virtual void ApplyImpl(bool& OutShouldRestartEditor) override; - }; - - class FDisableTouchInterfaceRule final : public ISetupRule - { - public: - FDisableTouchInterfaceRule() - : ISetupRule( - "Compatibility_DisableTouchInterface", - NSLOCTEXT("OculusXRCompatibilityRules", "DisableTouchInterface_DisplayName", "Disable Touch Interface"), - NSLOCTEXT("OculusXRCompatibilityRules", "DisableTouchInterface_Description", "Touch interface will interfere with correct VR input behavior"), - ESetupRuleCategory::Compatibility, - ESetupRuleSeverity::Critical) {} - virtual bool IsApplied() const override; - - protected: - virtual void ApplyImpl(bool& OutShouldRestartEditor) override; - }; - - inline TArray CompatibilityRules_Table{ - MakeShared(), - MakeShared(), - MakeShared(), - MakeShared(), - MakeShared(), - MakeShared(), - MakeShared(), - MakeShared(), - MakeShared(), - MakeShared(), - MakeShared(), - MakeShared() - }; -} // namespace OculusXRCompatibilityRules diff --git a/Plugins/MetaXR/Source/OculusXRProjectSetupTool/Private/Rules/OculusXRMovementRules.cpp b/Plugins/MetaXR/Source/OculusXRProjectSetupTool/Private/Rules/OculusXRMovementRules.cpp deleted file mode 100644 index 1bf6052..0000000 --- a/Plugins/MetaXR/Source/OculusXRProjectSetupTool/Private/Rules/OculusXRMovementRules.cpp +++ /dev/null @@ -1,69 +0,0 @@ -// Copyright (c) Meta Platforms, Inc. and affiliates. - -#include "OculusXRMovementRules.h" -#include "CoreMinimal.h" -#include "OculusXRHMDRuntimeSettings.h" -#include "OculusXRPSTUtils.h" -#include "OculusXRBodyTrackingComponent.h" -#include "OculusXREyeTrackingComponent.h" -#include "OculusXRFaceTrackingComponent.h" -#include "OculusXRProjectSetupToolModule.h" -#include "OculusXRRuleProcessorSubsystem.h" - -namespace OculusXRMovementRules -{ - bool FEnableBodyTrackingRule::IsApplied() const - { - const UOculusXRHMDRuntimeSettings* Settings = GetMutableDefault(); - return Settings->bBodyTrackingEnabled; - } - - void FEnableBodyTrackingRule::ApplyImpl(bool& OutShouldRestartEditor) - { - OCULUSXR_UPDATE_SETTINGS(UOculusXRHMDRuntimeSettings, bBodyTrackingEnabled, true); - OutShouldRestartEditor = false; - } - - bool FEnableBodyTrackingRule::IsValid() - { - return OculusXRPSTUtils::IsComponentOfTypeInWorld(); - } - - bool FEnableFaceTrackingRule::IsApplied() const - { - const UOculusXRHMDRuntimeSettings* Settings = GetMutableDefault(); - - return Settings->bFaceTrackingEnabled; - } - - void FEnableFaceTrackingRule::ApplyImpl(bool& OutShouldRestartEditor) - { - OCULUSXR_UPDATE_SETTINGS(UOculusXRHMDRuntimeSettings, bFaceTrackingEnabled, true); - OutShouldRestartEditor = false; - } - - bool FEnableFaceTrackingRule::IsValid() - { - return OculusXRPSTUtils::IsComponentOfTypeInWorld(); - } - - bool FEnableEyeTrackingRule::IsApplied() const - { - const UOculusXRHMDRuntimeSettings* Settings = GetMutableDefault(); - - return Settings->bEyeTrackingEnabled; - } - - void FEnableEyeTrackingRule::ApplyImpl(bool& OutShouldRestartEditor) - { - OCULUSXR_UPDATE_SETTINGS(UOculusXRHMDRuntimeSettings, bEyeTrackingEnabled, true); - OutShouldRestartEditor = false; - } - - bool FEnableEyeTrackingRule::IsValid() - { - return OculusXRPSTUtils::IsComponentOfTypeInWorld(); - } -} // namespace OculusXRMovementRules - -#undef LOCTEXT_NAMESPACE diff --git a/Plugins/MetaXR/Source/OculusXRProjectSetupTool/Private/Rules/OculusXRMovementRules.h b/Plugins/MetaXR/Source/OculusXRProjectSetupTool/Private/Rules/OculusXRMovementRules.h deleted file mode 100644 index 529dd56..0000000 --- a/Plugins/MetaXR/Source/OculusXRProjectSetupTool/Private/Rules/OculusXRMovementRules.h +++ /dev/null @@ -1,67 +0,0 @@ -// Copyright (c) Meta Platforms, Inc. and affiliates. - -#pragma once -#include "OculusXRSetupRule.h" - -/* - * Collection of rules related to movement SDK. Can be extended as needed - */ -namespace OculusXRMovementRules -{ - class FEnableBodyTrackingRule final : public ISetupRule - { - public: - FEnableBodyTrackingRule() - : ISetupRule( - "Feature_EnableBodyTracking", - NSLOCTEXT("OculusXRMovementRules", "EnableBodyTracking_DisplayName", "Enable Body Tracking"), - NSLOCTEXT("OculusXRMovementRules", "EnableBodyTracking_Description", "Body tracking must be enabled when using body tracking features"), - ESetupRuleCategory::Features, - ESetupRuleSeverity::Critical) {} - virtual bool IsApplied() const override; - virtual bool IsValid() override; - - protected: - virtual void ApplyImpl(bool& OutShouldRestartEditor) override; - }; - - class FEnableFaceTrackingRule final : public ISetupRule - { - public: - FEnableFaceTrackingRule() - : ISetupRule( - "Feature_EnableFaceTracking", - NSLOCTEXT("OculusXRMovementRules", "EnableFaceTracking_DisplayName", "Enable Face Tracking"), - NSLOCTEXT("OculusXRMovementRules", "EnableFaceTracking_Description", "Face tracking must be enabled when using face tracking features"), - ESetupRuleCategory::Features, - ESetupRuleSeverity::Critical) {} - virtual bool IsApplied() const override; - virtual bool IsValid() override; - - protected: - virtual void ApplyImpl(bool& OutShouldRestartEditor) override; - }; - - class FEnableEyeTrackingRule final : public ISetupRule - { - public: - FEnableEyeTrackingRule() - : ISetupRule( - "Feature_EnableEyeTracking", - NSLOCTEXT("OculusXRMovementRules", "EnableEyeTracking_DisplayName", "Enable Eye Tracking"), - NSLOCTEXT("OculusXRMovementRules", "EnableEyeTracking_Description", "Eye tracking must be enabled when using eye tracking features"), - ESetupRuleCategory::Features, - ESetupRuleSeverity::Critical) {} - virtual bool IsApplied() const override; - virtual bool IsValid() override; - - protected: - virtual void ApplyImpl(bool& OutShouldRestartEditor) override; - }; - - inline TArray MovementRules_Table{ - MakeShared(), - MakeShared(), - MakeShared() - }; -} // namespace OculusXRMovementRules diff --git a/Plugins/MetaXR/Source/OculusXRProjectSetupTool/Private/Rules/OculusXRPassthroughRules.cpp b/Plugins/MetaXR/Source/OculusXRProjectSetupTool/Private/Rules/OculusXRPassthroughRules.cpp deleted file mode 100644 index 2e8352f..0000000 --- a/Plugins/MetaXR/Source/OculusXRProjectSetupTool/Private/Rules/OculusXRPassthroughRules.cpp +++ /dev/null @@ -1,72 +0,0 @@ -// Copyright (c) Meta Platforms, Inc. and affiliates. - -#include "OculusXRPassthroughRules.h" -#include "CoreMinimal.h" -#include "OculusXRHMDRuntimeSettings.h" -#include "OculusXRPSTUtils.h" -#include "OculusXRPassthroughLayerComponent.h" -#include "BPNode_InitializePersistentPassthrough.h" -#include "OculusXRProjectSetupToolModule.h" -#include "OculusXRRuleProcessorSubsystem.h" -#include "Engine/RendererSettings.h" -#include "EdGraph/EdGraphPin.h" -#include "K2Node.h" - -namespace OculusXRPassthroughRules -{ - bool FEnablePassthroughRule::IsApplied() const - { - const UOculusXRHMDRuntimeSettings* Settings = GetMutableDefault(); - - return Settings->bInsightPassthroughEnabled; - } - - void FEnablePassthroughRule::ApplyImpl(bool& OutShouldRestartEditor) - { - OCULUSXR_UPDATE_SETTINGS(UOculusXRHMDRuntimeSettings, bInsightPassthroughEnabled, true); - OutShouldRestartEditor = false; - } - - bool FEnablePassthroughRule::IsValid() - { - if (OculusXRPSTUtils::IsComponentOfTypeInWorld() - || OculusXRPSTUtils::IsComponentOfTypeInWorld( - [](UBPNode_InitializePersistentPassthrough* n) { - return n && n->GetExecPin() && n->GetExecPin()->LinkedTo.Num() > 0; - })) - { - return true; - } - - return false; - } - - bool FAllowAlphaToneMapperPassthroughRule::IsApplied() const - { - URendererSettings* Settings = GetMutableDefault(); -#if UE_VERSION_OLDER_THAN(5, 5, 0) - return Settings->bEnableAlphaChannelInPostProcessing == EAlphaChannelMode::AllowThroughTonemapper; -#else - return Settings->bEnableAlphaChannelInPostProcessing; -#endif - } - - bool FAllowAlphaToneMapperPassthroughRule::IsValid() - { - const UOculusXRHMDRuntimeSettings* Settings = GetMutableDefault(); - - return Settings->bInsightPassthroughEnabled || Settings->SystemSplashBackground == ESystemSplashBackgroundType::Contextual; - } - - void FAllowAlphaToneMapperPassthroughRule::ApplyImpl(bool& OutShouldRestartEditor) - { -#if UE_VERSION_OLDER_THAN(5, 5, 0) - OCULUSXR_UPDATE_SETTINGS(URendererSettings, bEnableAlphaChannelInPostProcessing, EAlphaChannelMode::AllowThroughTonemapper); -#else - OCULUSXR_UPDATE_SETTINGS(URendererSettings, bEnableAlphaChannelInPostProcessing, true); -#endif - OutShouldRestartEditor = true; - } -} // namespace OculusXRPassthroughRules - -#undef LOCTEXT_NAMESPACE diff --git a/Plugins/MetaXR/Source/OculusXRProjectSetupTool/Private/Rules/OculusXRPassthroughRules.h b/Plugins/MetaXR/Source/OculusXRProjectSetupTool/Private/Rules/OculusXRPassthroughRules.h deleted file mode 100644 index edac826..0000000 --- a/Plugins/MetaXR/Source/OculusXRProjectSetupTool/Private/Rules/OculusXRPassthroughRules.h +++ /dev/null @@ -1,49 +0,0 @@ -// Copyright (c) Meta Platforms, Inc. and affiliates. - -#pragma once -#include "OculusXRSetupRule.h" - -/* - * Collection of rules related to passthrough. Can be extended as needed - */ -namespace OculusXRPassthroughRules -{ - class FEnablePassthroughRule final : public ISetupRule - { - public: - FEnablePassthroughRule() - : ISetupRule( - "Feature_EnablePassthrough", - NSLOCTEXT("OculusXRPassthroughRules", "EnablePassthrough_DisplayName", "Enable Passthrough"), - NSLOCTEXT("OculusXRPassthroughRules", "EnablePassthrough_Description", "Passthrough must be enabled when using passthrough features"), - ESetupRuleCategory::Features, - ESetupRuleSeverity::Critical) {} - virtual bool IsApplied() const override; - virtual bool IsValid() override; - - protected: - virtual void ApplyImpl(bool& OutShouldRestartEditor) override; - }; - - class FAllowAlphaToneMapperPassthroughRule final : public ISetupRule - { - public: - FAllowAlphaToneMapperPassthroughRule() - : ISetupRule( - "Feature_AllowAlphaToneMapperPassthrough", - NSLOCTEXT("OculusXRPassthroughRules", "AllowAlphaToneMapperPassthrough_DisplayName", "Enable passing alpha channel through tonemapper"), - NSLOCTEXT("OculusXRPassthroughRules", "AllowAlphaToneMapperPassthrough_Description", "For passthrough to work over Link alpha channel must be passed through tonemapper."), - ESetupRuleCategory::Features, - ESetupRuleSeverity::Warning) {} - virtual bool IsApplied() const override; - virtual bool IsValid() override; - - protected: - virtual void ApplyImpl(bool& OutShouldRestartEditor) override; - }; - - inline TArray PassthroughRules_Table{ - MakeShared(), - MakeShared() - }; -} // namespace OculusXRPassthroughRules diff --git a/Plugins/MetaXR/Source/OculusXRProjectSetupTool/Private/Rules/OculusXRPluginRules.cpp b/Plugins/MetaXR/Source/OculusXRProjectSetupTool/Private/Rules/OculusXRPluginRules.cpp deleted file mode 100644 index 7799aea..0000000 --- a/Plugins/MetaXR/Source/OculusXRProjectSetupTool/Private/Rules/OculusXRPluginRules.cpp +++ /dev/null @@ -1,81 +0,0 @@ -// Copyright (c) Meta Platforms, Inc. and affiliates. - -#include "OculusXRPluginRules.h" -#include "CoreMinimal.h" -#include "OculusXRHMDRuntimeSettings.h" -#include "OculusXRPSTUtils.h" -#include "Editor/GameProjectGeneration/Public/GameProjectGenerationModule.h" -#include "Interfaces/IPluginManager.h" -#include "Interfaces/IProjectManager.h" -#include "Misc/MessageDialog.h" - -namespace OculusXRPluginRules -{ - namespace - { - bool IsPluginEnabled(const FString& PluginName) - { - const auto Plugin = IPluginManager::Get().FindPlugin(PluginName); - if (!Plugin) - { - return false; - } - - return Plugin->IsEnabled(); - } - - bool DisablePlugin(const FString& PluginName) - { - FText FailMessage; - bool bSuccess = IProjectManager::Get().SetPluginEnabled( - PluginName, false, FailMessage); - const bool bIsProjectDirty = IProjectManager::Get().IsCurrentProjectDirty(); - if (bSuccess && bIsProjectDirty) - { - FGameProjectGenerationModule::Get().TryMakeProjectFileWriteable(FPaths::GetProjectFilePath()); - bSuccess = IProjectManager::Get().SaveCurrentProjectToDisk(FailMessage); - } - if (!bSuccess) - { - FMessageDialog::Open(EAppMsgType::Ok, FailMessage); - } - - return bSuccess && !bIsProjectDirty; - } - } // namespace - bool FUseRecommendedXRAPIRule::IsApplied() const - { - const UOculusXRHMDRuntimeSettings* Settings = GetMutableDefault(); - return Settings->XrApi == EOculusXRXrApi::OVRPluginOpenXR; - } - - void FUseRecommendedXRAPIRule::ApplyImpl(bool& OutShouldRestartEditor) - { - OCULUSXR_UPDATE_SETTINGS(UOculusXRHMDRuntimeSettings, XrApi, EOculusXRXrApi::OVRPluginOpenXR); - OutShouldRestartEditor = false; - } - - bool FDisableOculusVRRule::IsApplied() const - { - return bApplied || !IsPluginEnabled(PluginName); - } - - void FDisableOculusVRRule::ApplyImpl(bool& OutShouldRestartEditor) - { - OutShouldRestartEditor = DisablePlugin(PluginName); - bApplied = OutShouldRestartEditor; - } - - bool FDisableSteamVRRule::IsApplied() const - { - return bApplied || !IsPluginEnabled(PluginName); - } - - void FDisableSteamVRRule::ApplyImpl(bool& OutShouldRestartEditor) - { - OutShouldRestartEditor = DisablePlugin(PluginName); - bApplied = OutShouldRestartEditor; - } -} // namespace OculusXRPluginRules - -#undef LOCTEXT_NAMESPACE diff --git a/Plugins/MetaXR/Source/OculusXRProjectSetupTool/Private/Rules/OculusXRPluginRules.h b/Plugins/MetaXR/Source/OculusXRProjectSetupTool/Private/Rules/OculusXRPluginRules.h deleted file mode 100644 index 3cafe5a..0000000 --- a/Plugins/MetaXR/Source/OculusXRProjectSetupTool/Private/Rules/OculusXRPluginRules.h +++ /dev/null @@ -1,71 +0,0 @@ -// Copyright (c) Meta Platforms, Inc. and affiliates. - -#pragma once -#include "OculusXRSetupRule.h" - -// Collection of rules related to plugins. Can be extended as needed -namespace OculusXRPluginRules -{ - class FUseRecommendedXRAPIRule final : public ISetupRule - { - public: - FUseRecommendedXRAPIRule() - : ISetupRule("Plugin_UseRecommendedXRAPI", - NSLOCTEXT("OculusXRPluginRules", "UseRecommendedXRAPI_DisplayName", "Use Recommended XR API"), - NSLOCTEXT("OculusXRPluginRules", "UseRecommendedXRAPI_Description", "It is currently recommended to use OVRPlugin + OpenXR for the XR API"), - ESetupRuleCategory::Plugins, - ESetupRuleSeverity::Warning) {} - - virtual bool IsApplied() const override; - - protected: - virtual void ApplyImpl(bool& OutShouldRestartEditor) override; - }; - - class FDisableOculusVRRule final : public ISetupRule - { - public: - FDisableOculusVRRule() - : ISetupRule("Plugin_DisableOculusVR", - NSLOCTEXT("OculusXRPluginRules", "DisableOculusVR_DisplayName", "Disable OculusVR Plugin"), - NSLOCTEXT("OculusXRPluginRules", "DisableOculusVR_Description", "The OculusVR plugin is deprecated and should be disabled"), - ESetupRuleCategory::Plugins, - ESetupRuleSeverity::Warning) {} - - virtual bool IsApplied() const override; - - protected: - virtual void ApplyImpl(bool& OutShouldRestartEditor) override; - - private: - FString PluginName = "OculusVR"; - bool bApplied = false; - }; - - class FDisableSteamVRRule final : public ISetupRule - { - public: - FDisableSteamVRRule() - : ISetupRule("Plugin_DisableSteamVR", - NSLOCTEXT("OculusXRPluginRules", "DisableSteamVR_DisplayName", "Disable SteamVR Plugin"), - NSLOCTEXT("OculusXRPluginRules", "DisableSteamVR_Description", "The SteamVR plugin is deprecated and should be disabled"), - ESetupRuleCategory::Plugins, - ESetupRuleSeverity::Warning) {} - - virtual bool IsApplied() const override; - - protected: - virtual void ApplyImpl(bool& OutShouldRestartEditor) override; - - private: - FString PluginName = "SteamVR"; - bool bApplied = false; - }; - - // All defined plugin rules. Add new rules to this table for them to be auto-registered - inline TArray PluginRules_Table{ - MakeShared(), - MakeShared(), - MakeShared() - }; -} // namespace OculusXRPluginRules diff --git a/Plugins/MetaXR/Source/OculusXRProjectSetupTool/Private/Rules/OculusXRRenderingRules.cpp b/Plugins/MetaXR/Source/OculusXRProjectSetupTool/Private/Rules/OculusXRRenderingRules.cpp deleted file mode 100644 index 21063a8..0000000 --- a/Plugins/MetaXR/Source/OculusXRProjectSetupTool/Private/Rules/OculusXRRenderingRules.cpp +++ /dev/null @@ -1,406 +0,0 @@ -// Copyright (c) Meta Platforms, Inc. and affiliates. - -#include "OculusXRRenderingRules.h" -#include "CoreMinimal.h" -#include "AndroidRuntimeSettings.h" -#include "DataDrivenShaderPlatformInfo.h" -#include "EngineUtils.h" -#include "OculusXRHMDRuntimeSettings.h" -#include "OculusXRPSTUtils.h" -#include "OculusXRRuleProcessorSubsystem.h" -#include "Engine/PostProcessVolume.h" -#include "Engine/RendererSettings.h" -#include "Misc/EngineVersionComparison.h" -#include "Editor.h" -#include "Kismet/KismetSystemLibrary.h" - -namespace OculusXRRenderingRules -{ - namespace - { - FPreviewPlatformInfo GetAndroidPreviewPlatformInfo() - { - const FName AndroidPlatformName(TEXT("AndroidVulkan_Preview")); - - const EShaderPlatform ShaderPlatform = FDataDrivenShaderPlatformInfo::GetShaderPlatformFromName(AndroidPlatformName); - - const ERHIFeatureLevel::Type FeatureLevel = GetMaxSupportedFeatureLevel(ShaderPlatform); - - const auto& AllPreviewPlatforms = FDataDrivenPlatformInfoRegistry::GetAllPreviewPlatformMenuItems(); - - for (const auto& Platform : AllPreviewPlatforms) - { - if (Platform.PreviewShaderPlatformName == AndroidPlatformName) - { - return FPreviewPlatformInfo(FeatureLevel, ShaderPlatform, Platform.PlatformName, Platform.ShaderFormat, Platform.DeviceProfileName, - true, Platform.PreviewShaderPlatformName); - } - } - - return {}; - } - } // namespace - bool FUseVulkanRule::IsApplied() const - { - const UAndroidRuntimeSettings* Settings = GetMutableDefault(); - - return Settings->bSupportsVulkan && !Settings->bBuildForES31; - } - - void FUseVulkanRule::ApplyImpl(bool& OutShouldRestartEditor) - { - OCULUSXR_UPDATE_SETTINGS(UAndroidRuntimeSettings, bSupportsVulkan, true); - OCULUSXR_UPDATE_SETTINGS(UAndroidRuntimeSettings, bBuildForES31, false); - OutShouldRestartEditor = false; - } - - bool FUseHalfPrecisionFloatRule::IsApplied() const - { - const URendererSettings* Settings = GetMutableDefault(); - - return Settings->MobileFloatPrecisionMode == EMobileFloatPrecisionMode::Half; - } - - void FUseHalfPrecisionFloatRule::ApplyImpl(bool& OutShouldRestartEditor) - { - OCULUSXR_UPDATE_SETTINGS(URendererSettings, MobileFloatPrecisionMode, EMobileFloatPrecisionMode::Half); - OutShouldRestartEditor = true; - } - - bool FEnableInstancedStereoRule::IsApplied() const - { - const URendererSettings* Settings = GetMutableDefault(); - return Settings->bMultiView != 0; - } - - void FEnableInstancedStereoRule::ApplyImpl(bool& OutShouldRestartEditor) - { - OCULUSXR_UPDATE_SETTINGS(URendererSettings, bMultiView, 1); - OutShouldRestartEditor = true; - } - - bool FEnableForwardShadingRule::IsApplied() const - { - const URendererSettings* Settings = GetMutableDefault(); - - return Settings->MobileShadingPath == EMobileShadingPath::Forward; - } - - void FEnableForwardShadingRule::ApplyImpl(bool& OutShouldRestartEditor) - { - OCULUSXR_UPDATE_SETTINGS(URendererSettings, MobileShadingPath, EMobileShadingPath::Forward); - OutShouldRestartEditor = true; - } - - bool FEnablePCForwardShadingRule::IsApplied() const - { - const URendererSettings* Settings = GetMutableDefault(); - - return Settings->bForwardShading; - } - - void FEnablePCForwardShadingRule::ApplyImpl(bool& OutShouldRestartEditor) - { - OCULUSXR_UPDATE_SETTINGS(URendererSettings, bForwardShading, true); - OutShouldRestartEditor = true; - } - - bool FEnableMSAARule::IsApplied() const - { - const URendererSettings* Settings = GetMutableDefault(); - return Settings->MobileAntiAliasing == EMobileAntiAliasingMethod::MSAA - && Settings->MSAASampleCount == ECompositingSampleCount::Four; - } - - void FEnableMSAARule::ApplyImpl(bool& OutShouldRestartEditor) - { - OCULUSXR_UPDATE_SETTINGS(URendererSettings, MobileAntiAliasing, EMobileAntiAliasingMethod::MSAA); - OCULUSXR_UPDATE_SETTINGS(URendererSettings, MSAASampleCount, ECompositingSampleCount::Four); - - OutShouldRestartEditor = false; - } - - bool FEnableOcclusionCullingRule::IsApplied() const - { - const URendererSettings* Settings = GetMutableDefault(); - - return Settings->bOcclusionCulling; - } - - void FEnableOcclusionCullingRule::ApplyImpl(bool& OutShouldRestartEditor) - { - OCULUSXR_UPDATE_SETTINGS(URendererSettings, bOcclusionCulling, 1); - OutShouldRestartEditor = false; - } - - bool FEnableDynamicFoveationRule::IsApplied() const - { - const UOculusXRHMDRuntimeSettings* Settings = GetMutableDefault(); - - return Settings->bDynamicFoveatedRendering; - } - - void FEnableDynamicFoveationRule::ApplyImpl(bool& OutShouldRestartEditor) - { - OCULUSXR_UPDATE_SETTINGS(UOculusXRHMDRuntimeSettings, bDynamicFoveatedRendering, true); - OutShouldRestartEditor = false; - } - -#ifdef WITH_OCULUS_BRANCH - bool FEnableDynamicResolutionRule::IsApplied() const - { - const UOculusXRHMDRuntimeSettings* Settings = GetMutableDefault(); - - return Settings->bDynamicResolution; - } - - void FEnableDynamicResolutionRule::ApplyImpl(bool& OutShouldRestartEditor) - { - OCULUSXR_UPDATE_SETTINGS(UOculusXRHMDRuntimeSettings, bDynamicResolution, true); - OutShouldRestartEditor = false; - } - - bool FEnableMobileUniformLocalLightsRule::IsApplied() const - { - return GetMutableDefault()->bMobileUniformLocalLights; - } - - void FEnableMobileUniformLocalLightsRule::ApplyImpl(bool& OutShouldRestartEditor) - { - if (GetMutableDefault()->bMobileSupportGPUScene) - { - UE_LOG(LogTemp, Error, TEXT("Failed to enable MobileUniformLocalLights because MobileUniformLocalLights is incompatible with GPUScene.")); - return; - } - OCULUSXR_UPDATE_SETTINGS(URendererSettings, bMobileUniformLocalLights, true); - OutShouldRestartEditor = true; - } - - bool FEnableEmulatedUniformBuffersRule::IsApplied() const - { - const URendererSettings* Settings = GetMutableDefault(); - return Settings->bVulkanUseEmulatedUBs; - } - - void FEnableEmulatedUniformBuffersRule::ApplyImpl(bool& OutShouldRestartEditor) - { - if (GetMutableDefault()->bMobileSupportGPUScene) - { - UE_LOG(LogTemp, Error, TEXT("Failed to enable EmulatedUniformBuffers because EmulatedUniformBuffers is incompatible with GPUScene.")); - return; - } - OCULUSXR_UPDATE_SETTINGS(URendererSettings, bVulkanUseEmulatedUBs, true); - OutShouldRestartEditor = true; - } -#endif - - bool FDisableLensFlareRule::IsApplied() const - { - const URendererSettings* Settings = GetMutableDefault(); - if (!Settings->bMobilePostProcessing) - { - return true; - } - - for (TActorIterator ActorItr(GEditor->GetEditorWorldContext().World()); ActorItr; ++ActorItr) - { - if (ActorItr->Settings.bOverride_LensFlareIntensity && ActorItr->Settings.LensFlareIntensity > 0.0f) - { - return false; - } - } - return Settings->bDefaultFeatureLensFlare == 0; - } - - void FDisableLensFlareRule::ApplyImpl(bool& OutShouldRestartEditor) - { - OCULUSXR_UPDATE_SETTINGS(URendererSettings, bDefaultFeatureLensFlare, false); - - UKismetSystemLibrary::BeginTransaction("ProjectSetupTool", NSLOCTEXT("OculusXRRenderingRules", "DisableLensFlare", "Disable Lens Flare"), nullptr); - for (TActorIterator ActorItr(GEditor->GetEditorWorldContext().World()); ActorItr; ++ActorItr) - { - if (ActorItr->Settings.bOverride_LensFlareIntensity) - { - UKismetSystemLibrary::TransactObject(*ActorItr); - ActorItr->Settings.bOverride_LensFlareIntensity = false; - } - } - UKismetSystemLibrary::EndTransaction(); - OutShouldRestartEditor = false; - } - - bool FDisablePostProcessingRule::IsApplied() const - { - const URendererSettings* Settings = GetMutableDefault(); - - return Settings->bMobilePostProcessing == 0; - } - - void FDisablePostProcessingRule::ApplyImpl(bool& OutShouldRestartEditor) - { - OCULUSXR_UPDATE_SETTINGS(URendererSettings, bMobilePostProcessing, 0); - OutShouldRestartEditor = true; - } - - bool FDisableAmbientOcclusionRule::IsApplied() const - { - const URendererSettings* Settings = GetMutableDefault(); - - return Settings->bMobileAmbientOcclusion == 0; - } - - void FDisableAmbientOcclusionRule::ApplyImpl(bool& OutShouldRestartEditor) - { - OCULUSXR_UPDATE_SETTINGS(URendererSettings, bMobileAmbientOcclusion, 0); - OutShouldRestartEditor = true; - } - - bool FEnableMultiViewRule::IsApplied() const - { - return GetMutableDefault()->bMobileMultiView != 0; - } - - void FEnableMultiViewRule::ApplyImpl(bool& OutShouldRestartEditor) - { - OCULUSXR_UPDATE_SETTINGS(URendererSettings, bMobileMultiView, 1); - OutShouldRestartEditor = true; - } - - bool FEnableStaticLightingRule::IsApplied() const - { - return GetMutableDefault()->bAllowStaticLighting; - } - - void FEnableStaticLightingRule::ApplyImpl(bool& OutShouldRestartEditor) - { - OCULUSXR_UPDATE_SETTINGS(URendererSettings, bAllowStaticLighting, true); - OutShouldRestartEditor = true; - } - - bool FDisableMobileShaderStaticAndCSMShadowReceiversRule::IsApplied() const - { - return !GetMutableDefault()->bMobileEnableStaticAndCSMShadowReceivers; - } - - void FDisableMobileShaderStaticAndCSMShadowReceiversRule::ApplyImpl(bool& OutShouldRestartEditor) - { - OCULUSXR_UPDATE_SETTINGS(URendererSettings, bMobileEnableStaticAndCSMShadowReceivers, false); - OutShouldRestartEditor = false; - } - - bool FDisableMobileShaderStaticAndCSMShadowReceiversRule::IsValid() - { - const UOculusXRRuleProcessorSubsystem* RuleProcessorSubsystem = GEngine->GetEngineSubsystem(); - return !RuleProcessorSubsystem->DynamicLightsExistInProject(); - } - - bool FDisableMobileShaderAllowDistanceFieldShadowsRule::IsApplied() const - { - return !GetMutableDefault()->bMobileAllowDistanceFieldShadows; - } - - void FDisableMobileShaderAllowDistanceFieldShadowsRule::ApplyImpl(bool& OutShouldRestartEditor) - { - OCULUSXR_UPDATE_SETTINGS(URendererSettings, bMobileAllowDistanceFieldShadows, false); - OutShouldRestartEditor = true; - } - - bool FDisableMobileShaderAllowDistanceFieldShadowsRule::IsValid() - { - const UOculusXRRuleProcessorSubsystem* RuleProcessorSubsystem = GEngine->GetEngineSubsystem(); - return !RuleProcessorSubsystem->DynamicLightsExistInProject(); - } -#if UE_VERSION_OLDER_THAN(5, 5, 0) - bool FDisableMobileShaderAllowMovableDirectionalLightsRule::IsApplied() const - { - return !GetMutableDefault()->bMobileAllowMovableDirectionalLights; - } - - void FDisableMobileShaderAllowMovableDirectionalLightsRule::ApplyImpl(bool& OutShouldRestartEditor) - { - OCULUSXR_UPDATE_SETTINGS(URendererSettings, bMobileAllowMovableDirectionalLights, false); - OutShouldRestartEditor = true; - } - - bool FDisableMobileShaderAllowMovableDirectionalLightsRule::IsValid() - { - const UOculusXRRuleProcessorSubsystem* RuleProcessorSubsystem = GEngine->GetEngineSubsystem(); - return !RuleProcessorSubsystem->DynamicLightsExistInProject(); - } -#endif - -#ifdef WITH_OCULUS_BRANCH - bool FDisableMobileGPUSceneRule::IsApplied() const - { - const URendererSettings* RenderSettings = GetMutableDefault(); - // check if GPUScene conflicts with any existing features: EUB or ULL - return !((RenderSettings->bMobileSupportGPUScene && RenderSettings->bVulkanUseEmulatedUBs) || (RenderSettings->bMobileSupportGPUScene && RenderSettings->bMobileUniformLocalLights)); - } - - void FDisableMobileGPUSceneRule::ApplyImpl(bool& OutShouldRestartEditor) - { - OCULUSXR_UPDATE_SETTINGS(URendererSettings, bMobileSupportGPUScene, false); - OutShouldRestartEditor = true; - } - - bool FDisableMobileGPUSceneRule::IsValid() - { - return true; - } -#endif - - FUseAndroidVulkanPreviewPlatform::FUseAndroidVulkanPreviewPlatform() - : ISetupRule("Rendering_UseAndroidVulkanPreviewPlatform", - NSLOCTEXT("OculusXRRenderingRules", "UseAndroidVulkanPreviewPlatform_DisplayName", "Use Android Vulkan Preview Platform"), - NSLOCTEXT("OculusXRRenderingRules", "UseAndroidVulkanPreviewPlatform_Description", "Android Vulkan Mobile Preview Platform is necessery for correct behaviour of passthrough over Link."), - ESetupRuleCategory::Rendering, - ESetupRuleSeverity::Warning, - ESetupRulePlatform::MetaLink) - { - AndroidVulkanPreview = GetAndroidPreviewPlatformInfo(); - } - - bool FUseAndroidVulkanPreviewPlatform::IsApplied() const - { - FName CurrentPlatformName; - if (!GEditor->GetPreviewPlatformName(CurrentPlatformName)) - { - return false; - } - return CurrentPlatformName == AndroidVulkanPreview.PreviewPlatformName; - } - - bool FUseAndroidVulkanPreviewPlatform::IsValid() - { - const UOculusXRHMDRuntimeSettings* Settings = GetMutableDefault(); - return Settings->bInsightPassthroughEnabled; - } - - void FUseAndroidVulkanPreviewPlatform::ApplyImpl(bool& OutShouldRestartEditor) - { - GEditor->SetPreviewPlatform(AndroidVulkanPreview, true); - OutShouldRestartEditor = false; - } - - FDisableMobileMoveableSpotlightShadowsRule::FDisableMobileMoveableSpotlightShadowsRule() - : ISetupRule("Rendering_MobileMoveableSpotlightShadows", - NSLOCTEXT("OculusXRRenderingRules", "MobileMoveableSpotlightShadows_DisplayName", "Mobile Moveable Spotlight Shadows"), - NSLOCTEXT("OculusXRRenderingRules", "MobileMoveableSpotlightShadows_Description", "Mobile Movable Spotlights Shadows are not supported with Mobile Multi-View enabled."), - ESetupRuleCategory::Rendering, - ESetupRuleSeverity::Critical, - MetaQuest_All) - { - } - - bool FDisableMobileMoveableSpotlightShadowsRule::IsApplied() const - { - const URendererSettings* RenderSettings = GetMutableDefault(); - return RenderSettings->bMobileMultiView ? !RenderSettings->bMobileAllowMovableSpotlightShadows : true; - } - - void FDisableMobileMoveableSpotlightShadowsRule::ApplyImpl(bool& OutShouldRestartEditor) - { - OCULUSXR_UPDATE_SETTINGS(URendererSettings, bMobileAllowMovableSpotlightShadows, false); - OutShouldRestartEditor = true; - } -} // namespace OculusXRRenderingRules diff --git a/Plugins/MetaXR/Source/OculusXRProjectSetupTool/Private/Rules/OculusXRRenderingRules.h b/Plugins/MetaXR/Source/OculusXRProjectSetupTool/Private/Rules/OculusXRRenderingRules.h deleted file mode 100644 index e21415d..0000000 --- a/Plugins/MetaXR/Source/OculusXRProjectSetupTool/Private/Rules/OculusXRRenderingRules.h +++ /dev/null @@ -1,403 +0,0 @@ -// Copyright (c) Meta Platforms, Inc. and affiliates. - -#pragma once - -#include "OculusXRSetupRule.h" -#include "Editor/EditorEngine.h" -#include "Misc/EngineVersionComparison.h" - -// Collection of rules related to rendering. Can be extended as needed -namespace OculusXRRenderingRules -{ - class FUseVulkanRule final : public ISetupRule - { - public: - FUseVulkanRule() - : ISetupRule("Rendering_UseVulkan", - NSLOCTEXT("OculusXRRenderingRules", "UseVulkan_DisplayName", "Use Vulkan Rendering Backend"), - NSLOCTEXT("OculusXRRenderingRules", "UseVulkan_Description", "Oculus recommends using Vulkan as the rendering backend for all mobile apps."), - ESetupRuleCategory::Rendering, - ESetupRuleSeverity::Performance, - MetaQuest_All) {} - virtual bool IsApplied() const override; - - protected: - virtual void ApplyImpl(bool& OutShouldRestartEditor) override; - }; - - class FUseHalfPrecisionFloatRule final : public ISetupRule - { - public: - FUseHalfPrecisionFloatRule() - : ISetupRule("Rendering_UseHalfPrecisionFloat", - NSLOCTEXT("OculusXRRenderingRules", "UseHalfPrecisionFloat_DisplayName", "Use Half Precision Float"), - NSLOCTEXT("OculusXRRenderingRules", "UseHalfPrecisionFloat_Description", "Half precision float provides increased shader performance."), - ESetupRuleCategory::Rendering, - ESetupRuleSeverity::Performance, - MetaQuest_All) {} - virtual bool IsApplied() const override; - - protected: - virtual void ApplyImpl(bool& OutShouldRestartEditor) override; - }; - - class FEnableInstancedStereoRule final : public ISetupRule - { - public: - FEnableInstancedStereoRule() - : ISetupRule("Rendering_EnableInstancedStereo", - NSLOCTEXT("OculusXRRenderingRules", "EnableInstancedStereo_DisplayName", "Enable Instanced Stereo"), - NSLOCTEXT("OculusXRRenderingRules", "EnableInstancedStereo_Description", "Instanced stereo substantially reduces draw calls, and improves rendering performance."), - ESetupRuleCategory::Rendering, - ESetupRuleSeverity::Performance, - ESetupRulePlatform::MetaLink) {} - virtual bool IsApplied() const override; - - protected: - virtual void ApplyImpl(bool& OutShouldRestartEditor) override; - }; - - class FEnableForwardShadingRule final : public ISetupRule - { - public: - FEnableForwardShadingRule() - : ISetupRule("Rendering_EnableForwardShading", - NSLOCTEXT("OculusXRRenderingRules", "EnableForwardShading_DisplayName", "Enable Forward Shading"), - NSLOCTEXT("OculusXRRenderingRules", "EnableForwardShading_Description", "Forward shading is often better suited for VR rendering."), - ESetupRuleCategory::Rendering, - ESetupRuleSeverity::Performance, - ESetupRulePlatform::MetaQuest_2) {} - virtual bool IsApplied() const override; - - protected: - virtual void ApplyImpl(bool& OutShouldRestartEditor) override; - }; - - class FEnablePCForwardShadingRule final : public ISetupRule - { - public: - FEnablePCForwardShadingRule() - : ISetupRule("Rendering_EnablePCForwardShading", - NSLOCTEXT("OculusXRRenderingRules", "EnablePCForwardShading_DisplayName", "Enable PC Forward Shading"), - NSLOCTEXT("OculusXRRenderingRules", "EnablePCForwardShading_Description", "Forward shading is often better suited for VR rendering."), - ESetupRuleCategory::Rendering, - ESetupRuleSeverity::Performance, - ESetupRulePlatform::MetaLink) {} - virtual bool IsApplied() const override; - - protected: - virtual void ApplyImpl(bool& OutShouldRestartEditor) override; - }; - - class FEnableMSAARule final : public ISetupRule - { - public: - FEnableMSAARule() - : ISetupRule("Rendering_EnableMSAA", - NSLOCTEXT("OculusXRRenderingRules", "EnableMSAA_DisplayName", "Enable MSAA"), - NSLOCTEXT("OculusXRRenderingRules", "EnableMSAA_Description", "MSAA provides higher quality antialiasing at a reasonable cost."), - ESetupRuleCategory::Rendering, - ESetupRuleSeverity::Performance, - MetaQuest_All) {} - virtual bool IsApplied() const override; - - protected: - virtual void ApplyImpl(bool& OutShouldRestartEditor) override; - }; - - class FEnableOcclusionCullingRule final : public ISetupRule - { - public: - FEnableOcclusionCullingRule() - : ISetupRule("Rendering_EnableOcclusionCulling", - NSLOCTEXT("OculusXRRenderingRules", "EnableOcclusionCulling_DisplayName", "Enable Occlusion Culling"), - NSLOCTEXT("OculusXRRenderingRules", "EnableOcclusionCulling_Description", "Occlusion culling can provide significant performance gains."), - TEXT("https://developers.meta.com/horizon/documentation/unreal/po-fork-engine-perf"), - ESetupRuleCategory::Rendering, - ESetupRuleSeverity::Performance) {} - virtual bool IsApplied() const override; - - protected: - virtual void ApplyImpl(bool& OutShouldRestartEditor) override; - }; - - class FEnableDynamicFoveationRule final : public ISetupRule - { - public: - FEnableDynamicFoveationRule() - : ISetupRule("Rendering_EnableDynamicFoveation", - NSLOCTEXT("OculusXRRenderingRules", "EnableDynamicFoveation_DisplayName", "Enable Dynamic Foveation"), - NSLOCTEXT("OculusXRRenderingRules", "EnableDynamicFoveation_Description", "Dynamic foveated rendering significantly reduces rendering cost."), - ESetupRuleCategory::Rendering, - ESetupRuleSeverity::Performance, - MetaQuest_All) {} - virtual bool IsApplied() const override; - - protected: - virtual void ApplyImpl(bool& OutShouldRestartEditor) override; - }; - -#ifdef WITH_OCULUS_BRANCH - class FEnableDynamicResolutionRule final : public ISetupRule - { - public: - FEnableDynamicResolutionRule() - : ISetupRule("Rendering_EnableDynamicResolution", - NSLOCTEXT("OculusXRRenderingRules", "EnableDynamicResolution_DisplayName", "Enable Dynamic Resolution"), - NSLOCTEXT("OculusXRRenderingRules", "EnableDynamicResolution_Description", "Dynamic resolution rendering significantly reduces rendering cost."), - TEXT("https://developers.meta.com/horizon/documentation/unreal/dynamic-resolution-unreal"), - ESetupRuleCategory::Rendering, - ESetupRuleSeverity::Performance, - MetaQuest_All) {} - virtual bool IsApplied() const override; - - protected: - virtual void ApplyImpl(bool& OutShouldRestartEditor) override; - }; - - class FEnableMobileUniformLocalLightsRule final : public ISetupRule - { - public: - FEnableMobileUniformLocalLightsRule() - : ISetupRule("Rendering_MobileUniformLocalLights", - NSLOCTEXT("OculusXRRenderingRules", "MobileUniformLocalLights_DisplayName", "Enable OR Ignore MobileUniformLocalLights"), - NSLOCTEXT("OculusXRRenderingRules", - "MobileUniformLocalLights_Description", - "MobileUniformLocalLights might perform better than default LightGrid shading in small number of dynamic local lights cases.\nEither Enable MobileUniformLocalLights in ProjectSettings or Ignore this rule here.\nNOTE: MobileUniformLocalLights is incompatible with GPUScene."), - TEXT("https://developers.meta.com/horizon/documentation/unreal/po-fork-engine-perf"), - ESetupRuleCategory::Rendering, - ESetupRuleSeverity::Performance, - MetaQuest_All, - false) {} - - virtual bool IsApplied() const override; - - protected: - virtual void ApplyImpl(bool& OutShouldRestartEditor) override; - }; - class FEnableEmulatedUniformBuffersRule final : public ISetupRule - { - public: - FEnableEmulatedUniformBuffersRule() - : ISetupRule("Rendering_EnableEmulatedUniformBuffers", - NSLOCTEXT("OculusXRRenderingRules", "EnableEmulatedUniformBuffers_DisplayName", "Enable Emulated Uniform Buffers"), - NSLOCTEXT("OculusXRRenderingRules", "EnableEmulatedUniformBuffers_Description", "Optimizes performance by consolidating constant buffers into a single global uniform buffer for improved shader compiler optimization.\nNOTE: EmulatedUniformBuffers is incompatible with GPUScene."), - TEXT("https://developers.meta.com/horizon/documentation/unreal/po-fork-engine-perf"), - ESetupRuleCategory::Rendering, - ESetupRuleSeverity::Performance, - MetaQuest_All) {} - virtual bool IsApplied() const override; - - protected: - virtual void ApplyImpl(bool& OutShouldRestartEditor) override; - }; -#endif - - class FDisableLensFlareRule final : public ISetupRule - { - public: - FDisableLensFlareRule() - : ISetupRule("Rendering_DisableLensFlare", - NSLOCTEXT("OculusXRRenderingRules", "DisableLensFlare_DisplayName", "Disable Lens Flare"), - NSLOCTEXT("OculusXRRenderingRules", "DisableLensFlare_Description", "Lens flare can be expensive and exhibit visible artifacts in VR."), - ESetupRuleCategory::Rendering, - ESetupRuleSeverity::Performance) {} - virtual bool IsApplied() const override; - - protected: - virtual void ApplyImpl(bool& OutShouldRestartEditor) override; - }; - - class FDisablePostProcessingRule final : public ISetupRule - { - public: - FDisablePostProcessingRule() - : ISetupRule("Rendering_DisablePostProcessing", - NSLOCTEXT("OculusXRRenderingRules", "DisablePostProcessing_DisplayName", "Disable Post Processing"), - NSLOCTEXT("OculusXRRenderingRules", "DisablePostProcessing_Description", "Mobile HDR has performance and stability issues in VR. We strongly recommend disabling it."), - ESetupRuleCategory::Rendering, - ESetupRuleSeverity::Performance, - MetaQuest_All) {} - virtual bool IsApplied() const override; - - protected: - virtual void ApplyImpl(bool& OutShouldRestartEditor) override; - }; - - class FDisableAmbientOcclusionRule final : public ISetupRule - { - public: - FDisableAmbientOcclusionRule() - : ISetupRule("Rendering_DisableAmbientOcclusion", - NSLOCTEXT("OculusXRRenderingRules", "DisableAmbientOcclusion_DisplayName", "Disable Ambient Occlusion"), - NSLOCTEXT("OculusXRRenderingRules", "DisableAmbientOcclusion_Description", "Ambient occlusion has performance issues. We recommend disabling it."), - ESetupRuleCategory::Rendering, - ESetupRuleSeverity::Performance, - MetaQuest_All) {} - virtual bool IsApplied() const override; - - protected: - virtual void ApplyImpl(bool& OutShouldRestartEditor) override; - }; - - class FEnableMultiViewRule final : public ISetupRule - { - public: - FEnableMultiViewRule() - : ISetupRule("Rendering_EnableMultiView", - NSLOCTEXT("OculusXRRenderingRules", "EnableMultiView_DisplayName", "Enable Mobile Multiveiw"), - NSLOCTEXT("OculusXRRenderingRules", "EnableMultiView_Description", "Enable mobile multi-view and direct mobile multi-view to significantly reduce CPU overhead."), - ESetupRuleCategory::Rendering, - ESetupRuleSeverity::Performance, - MetaQuest_All) {} - virtual bool IsApplied() const override; - - protected: - virtual void ApplyImpl(bool& OutShouldRestartEditor) override; - }; - - class FEnableStaticLightingRule final : public ISetupRule - { - public: - FEnableStaticLightingRule() - : ISetupRule("Rendering_EnableStaticLighting", - NSLOCTEXT("OculusXRRenderingRules", "EnableStaticLighting_DisplayName", "Enable Static Lighting"), - NSLOCTEXT("OculusXRRenderingRules", "EnableStaticLighting_Description", "Static lighting should be disallowed only if project is intended to be 100% dynamically lit."), - ESetupRuleCategory::Rendering, - ESetupRuleSeverity::Performance, - All_Platforms) {} - virtual bool IsApplied() const override; - - protected: - virtual void ApplyImpl(bool& OutShouldRestartEditor) override; - }; - - class FDisableMobileShaderStaticAndCSMShadowReceiversRule final : public ISetupRule - { - public: - FDisableMobileShaderStaticAndCSMShadowReceiversRule() - : ISetupRule( - "Rendering_MobileShaderStaticAndCSMShadowReceivers", - NSLOCTEXT("OculusXRRenderingRules", "MobileShaderStaticAndCSMShadowReceivers_DisplayName", "Disable Support Combined Static and CSM Shadowing"), - NSLOCTEXT("OculusXRRenderingRules", "MobileShaderStaticAndCSMShadowReceivers_Description", "The project does not contain any stationary lights. Support Combined Static and CSM Shadowing can be disabled to reduce shader permutations."), - ESetupRuleCategory::Rendering, - ESetupRuleSeverity::Performance) {} - - virtual bool IsApplied() const override; - virtual bool IsValid() override; - - protected: - virtual void ApplyImpl(bool& OutShouldRestartEditor) override; - }; - - class FDisableMobileShaderAllowDistanceFieldShadowsRule final : public ISetupRule - { - public: - FDisableMobileShaderAllowDistanceFieldShadowsRule() - : ISetupRule("Rendering_MobileShaderAllowDistanceFieldShadows", - NSLOCTEXT("OculusXRRenderingRules", "MobileShaderAllowDistanceFieldShadows_DisplayName", "Disable Support Support Distance Field Shadows"), - NSLOCTEXT("OculusXRRenderingRules", "MobileShaderAllowDistanceFieldShadows_Description", "The project does not contain any stationary lights. Support Support Distance Field Shadows can be disabled to reduce shader permutations."), - ESetupRuleCategory::Rendering, - ESetupRuleSeverity::Performance, - MetaQuest_All) {} - - virtual bool IsApplied() const override; - virtual bool IsValid() override; - - protected: - virtual void ApplyImpl(bool& OutShouldRestartEditor) override; - }; -#if UE_VERSION_OLDER_THAN(5, 5, 0) - class FDisableMobileShaderAllowMovableDirectionalLightsRule final : public ISetupRule - { - public: - FDisableMobileShaderAllowMovableDirectionalLightsRule() - : ISetupRule("Rendering_MobileShaderAllowMovableDirectionalLights", - NSLOCTEXT("OculusXRRenderingRules", "MobileShaderAllowMovableDirectionalLights_DisplayName", "Disable Support Movable Directional Lights"), - NSLOCTEXT("OculusXRRenderingRules", "MobileShaderAllowMovableDirectionalLights_Description", "The project does not contain any movable lights. Support Movable Directional Lights can be disabled to reduce shader permutations."), - ESetupRuleCategory::Rendering, - ESetupRuleSeverity::Performance, - MetaQuest_All) {} - - virtual bool IsApplied() const override; - virtual bool IsValid() override; - - protected: - virtual void ApplyImpl(bool& OutShouldRestartEditor) override; - }; -#endif - -#ifdef WITH_OCULUS_BRANCH - class FDisableMobileGPUSceneRule final : public ISetupRule - { - public: - FDisableMobileGPUSceneRule() - : ISetupRule("Rendering_MobileGPUScene", - NSLOCTEXT("OculusXRRenderingRules", "MobileGPUSceneLights_DisplayName", "Disable Support GPUScene"), - NSLOCTEXT("OculusXRRenderingRules", "MobileGPUSceneLights_Description", "GPUScene is not compatible with MobileUniformLocalLights and EmulatedUniformBuffers."), - ESetupRuleCategory::Rendering, - ESetupRuleSeverity::Performance, - MetaQuest_All) {} - - virtual bool IsApplied() const override; - virtual bool IsValid() override; - - protected: - virtual void ApplyImpl(bool& OutShouldRestartEditor) override; - }; -#endif - - class FUseAndroidVulkanPreviewPlatform final : public ISetupRule - { - public: - FUseAndroidVulkanPreviewPlatform(); - virtual bool IsApplied() const override; - virtual bool IsValid() override; - - protected: - virtual void ApplyImpl(bool& OutShouldRestartEditor) override; - - private: - FPreviewPlatformInfo AndroidVulkanPreview; - }; - - class FDisableMobileMoveableSpotlightShadowsRule final : public ISetupRule - { - public: - FDisableMobileMoveableSpotlightShadowsRule(); - virtual bool IsApplied() const override; - - protected: - virtual void ApplyImpl(bool& OutShouldRestartEditor) override; - }; - - // All defined rendering rules. Add new rules to this table for them to be auto-registered - inline TArray RenderingRules_Table{ - MakeShared(), - MakeShared(), - MakeShared(), - MakeShared(), - MakeShared(), - MakeShared(), - MakeShared(), - MakeShared(), -#ifdef WITH_OCULUS_BRANCH - MakeShared(), - MakeShared(), - MakeShared(), - MakeShared(), -#endif - MakeShared(), - MakeShared(), - MakeShared(), - MakeShared(), - MakeShared(), - MakeShared(), - MakeShared(), -#if UE_VERSION_OLDER_THAN(5, 5, 0) - MakeShared(), -#endif - MakeShared(), - MakeShared() - }; -} // namespace OculusXRRenderingRules diff --git a/Plugins/MetaXR/Source/OculusXRProjectSetupTool/Private/Tests/OculusXRProjectSetupTool.spec.cpp b/Plugins/MetaXR/Source/OculusXRProjectSetupTool/Private/Tests/OculusXRProjectSetupTool.spec.cpp deleted file mode 100644 index bc2d0ef..0000000 --- a/Plugins/MetaXR/Source/OculusXRProjectSetupTool/Private/Tests/OculusXRProjectSetupTool.spec.cpp +++ /dev/null @@ -1,179 +0,0 @@ -// Copyright (c) Meta Platforms, Inc. and affiliates. - -#include "Misc/AutomationTest.h" -#include "OculusXRRuleProcessorSubsystem.h" -#include "OculusXRSetupRule.h" -#include "Rules/OculusXRAnchorsRules.h" -#include "Rules/OculusXRCompatibilityRules.h" -#include "Rules/OculusXRMovementRules.h" -#include "Rules/OculusXRPassthroughRules.h" -#include "Rules/OculusXRPluginRules.h" -#include "Rules/OculusXRRenderingRules.h" - -namespace -{ - const char* TestRule_Id = "test_id"; - const FText TestRule_DisName = FText::FromString("Test Display"); - const FText TestRule_Desc = FText::FromString("Test Desc"); -} // namespace - -#if UE_VERSION_OLDER_THAN(5, 5, 0) -BEGIN_DEFINE_SPEC(FOculusXRProjectSetupToolSpec, TEXT("Project Setup Tool"), EAutomationTestFlags::ProductFilter | EAutomationTestFlags::ApplicationContextMask) -#else -BEGIN_DEFINE_SPEC(FOculusXRProjectSetupToolSpec, TEXT("Project Setup Tool"), EAutomationTestFlags::ProductFilter | EAutomationTestFlags_ApplicationContextMask) -#endif - -UOculusXRRuleProcessorSubsystem* ProcessorSubsystem; -bool bShouldRestartEditor = false; -TSet RulesThatRequireRestart = { - FName("Feature_AllowAlphaToneMapperPassthrough"), - FName("Rendering_DisableAmbientOcclusion"), - FName("Rendering_DisablePostProcessing"), - FName("Rendering_EnableEmulatedUniformBuffers"), - FName("Rendering_EnableForwardShading"), - FName("Rendering_EnablePCForwardShading"), - FName("Rendering_EnableInstancedStereo"), - FName("Rendering_EnableMultiView"), - FName("Rendering_EnableStaticLighting"), - FName("Rendering_MobileShaderAllowDistanceFieldShadows"), - FName("Rendering_MobileShaderAllowMovableDirectionalLights"), - FName("Rendering_MobileGPUScene"), - FName("Rendering_MobileUniformLocalLights"), - FName("Rendering_UseHalfPrecisionFloat"), - FName("Rendering_MobileMoveableSpotlightShadows") -}; - -void Setup(); -END_DEFINE_SPEC(FOculusXRProjectSetupToolSpec) - -void FOculusXRProjectSetupToolSpec::Setup() -{ - BeforeEach([this] { - ProcessorSubsystem = GEngine->GetEngineSubsystem(); - bShouldRestartEditor = false; - }); -} - -class FMockRule : public ISetupRule -{ -public: - FMockRule() - : ISetupRule(TestRule_Id, TestRule_DisName, TestRule_Desc, ESetupRuleCategory::Miscellaneous, ESetupRuleSeverity::Warning) - { - } - - virtual bool IsApplied() const override - { - return bIsApplied; - } - -protected: - virtual void ApplyImpl(bool& ShouldRestartEditor) override - { - bIsApplied = true; - } - -private: - bool bIsApplied = false; -}; - -void FOculusXRProjectSetupToolSpec::Define() -{ - Describe(TEXT("Rule Processor"), [this] { - Setup(); - - It(TEXT("Rule registered and unregistered successfully"), [this] { - const auto RuleNum = ProcessorSubsystem->GetRules().Num(); - const SetupRulePtr mockRule = MakeShared(); - TestTrue(TEXT("Rule added"), ProcessorSubsystem->RegisterRule(mockRule)); - TestEqual(TEXT("After rule is added"), ProcessorSubsystem->GetRules().Num(), RuleNum + 1); - - TestTrue(TEXT("Rule removed"), ProcessorSubsystem->UnregisterRule(mockRule)); - TestEqual(TEXT("After rule is removed"), ProcessorSubsystem->GetRules().Num(), RuleNum); - }); - - It(TEXT("Rule applied"), [this] { - const SetupRulePtr mockRule = MakeShared(); - - // apply rule - TestFalse(TEXT("Rule is not applied yet"), mockRule->IsApplied()); - mockRule->Apply(bShouldRestartEditor); - - TestTrue(TEXT("Rule applied"), mockRule->IsApplied()); - }); - - It(TEXT("Rule ignored"), [this] { - const SetupRulePtr mockRule = MakeShared(); - // ignore rule - TestFalse(TEXT("Rule is not ignored yet"), mockRule->IsIgnored()); - mockRule->SetIgnoreRule(true); - TestTrue(TEXT("Rule ignored"), mockRule->IsIgnored()); - }); - }); - - Describe(TEXT("Rendering rules"), [this] { - for (auto Rule : OculusXRRenderingRules::RenderingRules_Table) - { - It(TEXT("Test " + Rule->GetId().ToString()), [this, Rule] { - Rule->Apply(bShouldRestartEditor); - TestTrue(TEXT("Rule is applied"), Rule->IsApplied()); - TestEqual(TEXT("Restart is pending"), RulesThatRequireRestart.Contains(Rule->GetId()), bShouldRestartEditor); - }); - } - }); - - Describe(TEXT("Plugin rules"), [this] { - for (auto Rule : OculusXRPluginRules::PluginRules_Table) - { - It(TEXT("Test " + Rule->GetId().ToString()), [this, Rule] { - Rule->Apply(bShouldRestartEditor); - TestTrue(TEXT("Rule is applied"), Rule->IsApplied()); - TestEqual(TEXT("Restart is pending"), RulesThatRequireRestart.Contains(Rule->GetId()), bShouldRestartEditor); - }); - } - }); - - Describe(TEXT("Compatibility rules"), [this] { - for (auto Rule : OculusXRCompatibilityRules::CompatibilityRules_Table) - { - It(TEXT("Test " + Rule->GetId().ToString()), [this, Rule] { - Rule->Apply(bShouldRestartEditor); - TestTrue(TEXT("Rule is applied"), Rule->IsApplied() || !Rule->ShowApply()); - TestEqual(TEXT("Restart is pending"), RulesThatRequireRestart.Contains(Rule->GetId()), bShouldRestartEditor); - }); - } - }); - - Describe(TEXT("Anchor rules"), [this] { - for (auto Rule : OculusXRAnchorsRules::AnchorRules_Table) - { - It(TEXT("Test " + Rule->GetId().ToString()), [this, Rule] { - Rule->Apply(bShouldRestartEditor); - TestTrue(TEXT("Rule is applied"), Rule->IsApplied()); - TestEqual(TEXT("Restart is pending"), RulesThatRequireRestart.Contains(Rule->GetId()), bShouldRestartEditor); - }); - } - }); - - Describe(TEXT("Movement rules"), [this] { - for (auto Rule : OculusXRMovementRules::MovementRules_Table) - { - It(TEXT("Test " + Rule->GetId().ToString()), [this, Rule] { - Rule->Apply(bShouldRestartEditor); - TestTrue(TEXT("Rule is applied"), Rule->IsApplied()); - TestEqual(TEXT("Restart is pending"), RulesThatRequireRestart.Contains(Rule->GetId()), bShouldRestartEditor); - }); - } - }); - - Describe(TEXT("Passthrough rules"), [this] { - for (auto Rule : OculusXRPassthroughRules::PassthroughRules_Table) - { - It(TEXT("Test " + Rule->GetId().ToString()), [this, Rule] { - Rule->Apply(bShouldRestartEditor); - TestTrue(TEXT("Rule is applied"), Rule->IsApplied()); - TestEqual(TEXT("Restart is pending"), RulesThatRequireRestart.Contains(Rule->GetId()), bShouldRestartEditor); - }); - } - }); -} diff --git a/Plugins/MetaXR/Source/OculusXRProjectSetupTool/Private/Widget/OculusXRProjectSetupToolWidget.cpp b/Plugins/MetaXR/Source/OculusXRProjectSetupTool/Private/Widget/OculusXRProjectSetupToolWidget.cpp deleted file mode 100644 index 461eda1..0000000 --- a/Plugins/MetaXR/Source/OculusXRProjectSetupTool/Private/Widget/OculusXRProjectSetupToolWidget.cpp +++ /dev/null @@ -1,1122 +0,0 @@ -// Copyright (c) Meta Platforms, Inc. and affiliates. - -#include "OculusXRProjectSetupToolWidget.h" - -#include "DetailColumnSizeData.h" -#include "OculusXRProjectSetupToolModule.h" -#include "OculusXRPSTEvents.h" -#include "OculusXRPSTSettings.h" -#include "OculusXRPSTUtils.h" -#include "OculusXRTelemetry.h" -#include "SWarningOrErrorBox.h" -#include "Widgets/Layout/SScrollBox.h" -#include "Widgets/Images/SImage.h" -#include "Widgets/Input/SButton.h" -#include "Widgets/Input/SComboButton.h" -#include "Widgets/Text/STextBlock.h" -#include "Styling/SlateStyle.h" -#include "Framework/MultiBox/MultiBoxBuilder.h" -#include "Framework/Commands/UIAction.h" -#include "Textures/SlateIcon.h" -#include "Engine/Engine.h" -#include "UnrealEdMisc.h" -#include "Framework/Notifications/NotificationManager.h" -#include "Widgets/Notifications/SNotificationList.h" - -#define LOCTEXT_NAMESPACE "OculusXRProjectSetupToolWidget" - -/** - * Construct the layout for the project setup tool tab - * - * @param InArgs [in] the arguments associated with this tool - */ -void SOculusXRProjectSetupToolWidget::Construct(const FArguments& InArgs) -{ - Refresh(); - - // Populate the platform filter - PlatformFilters.Add(MetaQuest_All); - PlatformFilters.Add(ESetupRulePlatform::MetaLink); - PlatformFilters.Add(ESetupRulePlatform::MetaQuest_3); - PlatformFilters.Add(ESetupRulePlatform::MetaQuest_Pro); - PlatformFilters.Add(ESetupRulePlatform::MetaQuest_2); - - const auto Settings = GetMutableDefault(); - - UpdateActiveTimer(Settings->bBackGroundChecks); - - // Apply the starting platform filter. - const auto& Platform = static_cast(Settings->CurrentPlatform); - CurrentPlatformFilterIndex = PlatformFilters.Find(Platform); - - if (CurrentPlatformFilterIndex == INDEX_NONE) - { - CurrentPlatformFilterIndex = 0; - } - - // Setup the column information for the layout - ColumnSizeData = MakeShared(); - ColumnSizeData->SetValueColumnWidth(0.75f); - ColumnSizeData->SetRightColumnMinWidth(150); - - // Construct the layout - - RootContainerWidget = SNew(SVerticalBox); - - BuildLayout(RootContainerWidget); - - ChildSlot - [RootContainerWidget.ToSharedRef()]; -} - -/** - * Build the layout for the main window - */ -void SOculusXRProjectSetupToolWidget::BuildLayout(const TSharedPtr& RootContainer) -{ - // Clear all existing contents - RootContainer->ClearChildren(); - - const TSharedPtr HeaderContainer = SNew(SVerticalBox); - // Section to contain the title bar - BuildTitleSectionLayout(HeaderContainer); - - // Section to contain the filters - BuildFilterSectionLayout(HeaderContainer, CurrentPlatformFilterIndex); - - const TSharedPtr RulesContainer = SNew(SScrollBox); - // Section to contain the required rules - BuildRequiredRulesSectionLayout(RulesContainer); - - // Section to contain the recommended rules - BuildRecommendedRulesSectionLayout(RulesContainer); - - // Section to contain the applied rules - BuildAppliedRulesSectionLayout(RulesContainer); - - // Section to contain the ignored rules - BuildIgnoredRulesSectionLayout(RulesContainer); - - RootContainer->AddSlot() - .AutoHeight() - .Padding(0) - [HeaderContainer.ToSharedRef()]; - - RootContainer->AddSlot() - .Padding(0) - [RulesContainer.ToSharedRef()]; - - // Section to show warning about restarting editor - RootContainer->AddSlot() - .AutoHeight() - [SNew(SVerticalBox) - + SVerticalBox::Slot() - .AutoHeight() - .Padding(FMargin(18.0f, 20.0f, 18.0f, 16.0f)) - [SNew(SWarningOrErrorBox) - .Visibility(this, &SOculusXRProjectSetupToolWidget::OnRestartEditorNoticeVisibility) - .MessageStyle(EMessageStyle::Warning) - .Message(LOCTEXT("PluginSettingsRestartNotice", "You must restart Unreal Editor for your changes to take effect.")) - [SNew(SButton) - .OnClicked(this, &SOculusXRProjectSetupToolWidget::OnRestartEditorButtonClicked) - .TextStyle(FAppStyle::Get(), "NormalText") - .Text(LOCTEXT("PluginSettingsRestartEditor", "Restart Now"))]]]; -} - -/** - * Build the title section layout - */ -void SOculusXRProjectSetupToolWidget::BuildTitleSectionLayout(const TSharedPtr& RootContainer) -{ - const TSharedPtr TitleWidget = SNew(SHorizontalBox) - .Clipping(EWidgetClipping::OnDemand); - - ProjectStatusWidget = SNew(STextBlock) - .Font(FAppStyle::Get().GetFontStyle(TEXT("DetailsView.CategoryFontStyle"))) - .TextStyle(FAppStyle::Get(), "DetailsView.CategoryTextStyle") - .Text(FText()); - - UpdateProjectStatus(); - - TitleWidget->AddSlot() - .HAlign(HAlign_Left) - .VAlign(VAlign_Center) - .Padding(8, 0, 0, 0) - [ProjectStatusWidget.ToSharedRef()]; - - const TSharedPtr ButtonWidget = SNew(SHorizontalBox); - - auto Settings = GetMutableDefault(); - FMenuBuilder DetailViewOptions(true, nullptr); - - DetailViewOptions.AddMenuEntry( - LOCTEXT("BackGroundChecks", "Enable background rule checks"), - LOCTEXT("BackGroundChecks_ToolTip", "If enabled background rule validity will be performed every 30 seconds."), - FSlateIcon(), - FUIAction( - FExecuteAction::CreateLambda([Settings] { - Settings->bBackGroundChecks = !Settings->bBackGroundChecks; - Settings->TryUpdateDefaultConfigFile(); - const OculusXRTelemetry::TScopedMarker OptionEvent; - const auto& Annotated = OptionEvent - .AddAnnotation(OculusXRTelemetry::Annotations::Uid, "bBackGroundChecks") - .AddAnnotation(OculusXRTelemetry::Annotations::Value, - Settings->bBackGroundChecks ? "true" : "false"); - }), - FCanExecuteAction(), - FIsActionChecked::CreateLambda([Settings]() -> bool { - return Settings->bBackGroundChecks; - })), - NAME_None, - EUserInterfaceActionType::ToggleButton); - - DetailViewOptions.AddMenuEntry( - LOCTEXT("StopBuildOnUnappliedRequredItem", "Stop build on unapplied items"), - LOCTEXT("StopBuildOnUnappliedRequredItem_ToolTip", "Stop build if required items are not applied or ignored."), - FSlateIcon(), - FUIAction( - FExecuteAction::CreateLambda([Settings] { - Settings->bStopBuildOnUnAppliedCriticalItems = !Settings->bStopBuildOnUnAppliedCriticalItems; - Settings->TryUpdateDefaultConfigFile(); - const OculusXRTelemetry::TScopedMarker OptionEvent; - const auto& Annotated = OptionEvent - .AddAnnotation(OculusXRTelemetry::Annotations::Uid, "bStopBuildOnUnAppliedCriticalItems") - .AddAnnotation(OculusXRTelemetry::Annotations::Value, - Settings->bStopBuildOnUnAppliedCriticalItems ? "true" : "false"); - }), - FCanExecuteAction(), - FIsActionChecked::CreateLambda([Settings]() -> bool { - return Settings->bStopBuildOnUnAppliedCriticalItems; - })), - NAME_None, - EUserInterfaceActionType::ToggleButton); - - ButtonWidget->AddSlot() - .HAlign(HAlign_Center) - .VAlign(VAlign_Center) - .Padding(FMargin(8.f, 0.f, 8.f, 0.f)) - [SNew(SButton) - .ContentPadding(0) - .ButtonStyle(&FAppStyle::Get().GetWidgetStyle("SimpleButton")) - .ToolTipText(LOCTEXT("FeedbackToolTip", "Give feedback or report bugs")) - .OnClicked(this, &SOculusXRProjectSetupToolWidget::OnReportIssueClicked) - [SNew(SHorizontalBox) - + SHorizontalBox::Slot() - .AutoWidth() - .HAlign(HAlign_Center) - [SNew(SImage) - .Image(FOculusXRProjectSetupToolModule::GetSlateStyle()->GetBrush("ProjectSetupTool.FeedbackIcon")) - .ColorAndOpacity(FSlateColor::UseForeground())]]]; - - ButtonWidget->AddSlot() - .HAlign(HAlign_Center) - .VAlign(VAlign_Center) - .Padding(FMargin(0.f, 0.f, 8.f, 0.f)) - [SNew(SComboButton) - .ContentPadding(0) - .HasDownArrow(false) - .ForegroundColor(FSlateColor::UseForeground()) - .ComboButtonStyle(FAppStyle::Get(), "SimpleComboButton") - .AddMetaData(FTagMetaData(TEXT("ViewOptions"))) - .MenuContent() - [DetailViewOptions.MakeWidget()] - .ButtonContent() - [SNew(SHorizontalBox) - + SHorizontalBox::Slot() - .AutoWidth() - .HAlign(HAlign_Center) - [SNew(SImage) - .Image(FAppStyle::Get().GetBrush("Icons.Toolbar.Settings")) - .ColorAndOpacity(FSlateColor::UseForeground())]]]; - - // Top level container for the whole row - const TSharedPtr RowWidget = SNew(SHorizontalBox); - - RowWidget->AddSlot() - .HAlign(HAlign_Left) - [TitleWidget.ToSharedRef()]; - - RowWidget->AddSlot() - .HAlign(HAlign_Right) - [ButtonWidget.ToSharedRef()]; - - // Add into the root container - RootContainer->AddSlot() - .AutoHeight() - .Padding(0) - [SNew(SBorder) - .BorderImage(FAppStyle::Get().GetBrush("DetailsView.GridLine")) - .Padding(FMargin(0, 0, 0, 1)) - [SNew(SHorizontalBox) - - + SHorizontalBox::Slot() - [SNew(SBorder) - .BorderImage(FAppStyle::Get().GetBrush("DetailsView.CategoryTop")) - .BorderBackgroundColor(FSlateColor(FLinearColor::White)) - .Padding(0) - [SNew(SBox) - .MinDesiredHeight(26.0f) - [RowWidget.ToSharedRef()]]]]]; -} - -/** - * Build the filter section layout - */ -void SOculusXRProjectSetupToolWidget::BuildFilterSectionLayout(const TSharedPtr& RootContainer, const uint32 PlatformFilterIndex) -{ - // Top level container for the whole row - const TSharedPtr RowWidget = SNew(SHorizontalBox); - - uint32 index = 0; - - for (const auto& Platform : PlatformFilters) - { - const FSlateBrush* BorderBrush = FAppStyle::Get().GetBrush("DetailsView.GridLine"); - - if (index == PlatformFilterIndex) - { - BorderBrush = FAppStyle::Get().GetBrush("DetailsView.CategoryTop"); - } - - ++index; - - RowWidget->AddSlot() - .Padding(FMargin(0, 1, 1, 1)) - [SNew(SBorder) - .BorderImage(BorderBrush) - [SNew(SHorizontalBox) - + SHorizontalBox::Slot() - [SNew(SButton) - .HAlign(HAlign_Center) - .VAlign(VAlign_Center) - .ContentPadding(0) - .ButtonStyle(FCoreStyle::Get(), "NoBorder") - .OnClicked(this, &SOculusXRProjectSetupToolWidget::OnPlatformFilterChanged, Platform) - [SNew(SHorizontalBox) - + SHorizontalBox::Slot() - .Padding(0, 3, 3, 3) - [SNew(SImage) - .Image( - FOculusXRProjectSetupToolModule::GetSlateStyle() - ->GetBrush(OculusXRPSTUtils::GetDisplayName( - Platform))) - .ColorAndOpacity(FSlateColor::UseForeground())] - + SHorizontalBox::Slot() - .Padding(3, 0, 0, 0) - .AutoWidth() - .VAlign(VAlign_Center) - [SNew(STextBlock) - .Text(FText::FromString(OculusXRPSTUtils::GetDisplayName(Platform)))]]]]]; - } - - // Add into the root container - RootContainer->AddSlot() - .AutoHeight() - .Padding(0) - [SNew(SBorder) - .BorderImage(FAppStyle::Get().GetBrush("DetailsView.GridLine")) - .Padding(FMargin(0, 0, 0, 1)) - [SNew(SHorizontalBox) - + SHorizontalBox::Slot() - [SNew(SBorder) - .BorderImage(FAppStyle::Get().GetBrush("DetailsView.CategoryTop")) - .BorderBackgroundColor(FSlateColor(FLinearColor::White)) - .Padding(0) - [SNew(SBox) - .MinDesiredHeight(26.0f) - [RowWidget.ToSharedRef()]]]]]; -} - -/** - * Build a container for a rules section - */ -TSharedPtr SOculusXRProjectSetupToolWidget::BuildRulesContainerLayout(const TSharedPtr& RootContainer, ERulesSection Section, const FText& SectionTitle) -{ - // Top level container for the whole row - const TSharedPtr TitleAndExpanderWidget = SNew(SHorizontalBox) - .Clipping(EWidgetClipping::OnDemand); - - TitleAndExpanderWidget->AddSlot() - .HAlign(HAlign_Left) - .VAlign(VAlign_Center) - .Padding(8, 0, 8, 0) - .AutoWidth() - [SNew(SHorizontalBox) - .Visibility_Static(&SOculusXRProjectSetupToolWidget::OnHeaderExpanderVisibility, Section) - + SHorizontalBox::Slot() - [SNew(SButton) - .ButtonStyle(FCoreStyle::Get(), "NoBorder") - .VAlign(VAlign_Center) - .HAlign(HAlign_Center) - .ClickMethod(EButtonClickMethod::MouseDown) - .OnClicked(this, &SOculusXRProjectSetupToolWidget::OnHeaderExpanderClicked, Section) - .ContentPadding(0) - .IsFocusable(false) - [SNew(SImage) - .Image(this, &SOculusXRProjectSetupToolWidget::GetHeaderExpanderImage, Section) - .ColorAndOpacity(FSlateColor::UseSubduedForeground())]]]; - - TitleAndExpanderWidget->AddSlot() - .HAlign(HAlign_Left) - .VAlign(VAlign_Center) - .Padding(0, 0, 0, 0) - [SNew(STextBlock) - .Font(FAppStyle::Get().GetFontStyle(TEXT("DetailsView.CategoryFontStyle"))) - .TextStyle(FAppStyle::Get(), "DetailsView.CategoryTextStyle") - .Text(SectionTitle)]; - - const TSharedPtr EmptyDescriptionWidget = SNew(SHorizontalBox); - const TSharedPtr ButtonWidget = SNew(SHorizontalBox); - - if (Section == ERulesSection::Required || Section == ERulesSection::Recommended) - { - ButtonWidget->AddSlot() - .Padding(FMargin(6, 3, 3, 3)) - [SNew(SButton) - .HAlign(HAlign_Center) - .VAlign(VAlign_Center) - .ButtonStyle(&FAppStyle::Get().GetWidgetStyle("PrimaryButton")) - .Text(LOCTEXT("ApplyAllRules", "Apply All")) - .OnClicked(this, &SOculusXRProjectSetupToolWidget::OnApplyAllRulesClicked, Section) - .IsEnabled_Raw(this, &SOculusXRProjectSetupToolWidget::OnApplyAllRulesEnabled, Section)]; - - // This is not actually needed but we add it to ensure correct alignment - ButtonWidget->AddSlot() - .AutoWidth() - .VAlign(VAlign_Center) - .Padding(FMargin(4.f, 0.f, 8.f, 0.f)) - [SNew(SComboButton) - .ContentPadding(0) - .Visibility_Lambda([this]() -> EVisibility { return EVisibility::Hidden; }) - .HasDownArrow(false) - .ForegroundColor(FSlateColor::UseForeground()) - .ComboButtonStyle(FAppStyle::Get(), "SimpleComboButton") - .ButtonContent() - [SNew(SHorizontalBox) - + SHorizontalBox::Slot() - .AutoWidth() - .HAlign(HAlign_Center) - [SNew(SImage) - .Image(FAppStyle::Get().GetBrush("PropertyWindow.Button_Ellipsis")) - .ColorAndOpacity(FSlateColor::UseForeground())]]]; - } - - // Splitter so each row can contain Name | Description | Buttons - const TSharedPtr Splitter = SNew(SSplitter) - .Style(FAppStyle::Get(), "DetailsView.Splitter") - .PhysicalSplitterHandleSize(1.0f) - .HitDetectionSplitterHandleSize(5.0f); - - // Add the widgets to the splitter - Splitter->AddSlot() - .Value(ColumnSizeData->GetNameColumnWidth()) - .OnSlotResized(ColumnSizeData->GetOnNameColumnResized()) - [TitleAndExpanderWidget.ToSharedRef()]; - - Splitter->AddSlot() - .Value(ColumnSizeData->GetValueColumnWidth()) - .OnSlotResized(ColumnSizeData->GetOnValueColumnResized()) - [EmptyDescriptionWidget.ToSharedRef()]; - - Splitter->AddSlot() - .Value(ColumnSizeData->GetRightColumnWidth()) - .OnSlotResized(ColumnSizeData->GetOnRightColumnResized()) - .MinSize(ColumnSizeData->GetRightColumnMinWidth()) - [ButtonWidget.ToSharedRef()]; - - // Top level container for the whole row - const TSharedPtr RowWidget = SNew(SBox) - .Padding(0) - [Splitter.ToSharedRef()]; - // Add into the root container - RootContainer->AddSlot() - .Padding(0) - [SNew(SBorder) - .BorderImage(FAppStyle::Get().GetBrush("DetailsView.GridLine")) - .Padding(FMargin(0, 0, 0, 1)) - [SNew(SHorizontalBox) - - + SHorizontalBox::Slot() - [SNew(SBorder) - .BorderImage(FAppStyle::Get().GetBrush("DetailsView.CategoryTop")) - .BorderBackgroundColor(FSlateColor(FLinearColor::White)) - .Padding(0) - [SNew(SBox) - .MinDesiredHeight(26.0f) - [RowWidget.ToSharedRef()]]]]]; - - // Contents - TSharedPtr SectionContentContainer = SNew(SVerticalBox); - - RootContainer->AddSlot() - .Padding(0) - [SectionContentContainer.ToSharedRef()]; - - return SectionContentContainer; -} - -/** - * Build the layout for a single row (filter or rule row) - */ -void SOculusXRProjectSetupToolWidget::BuildRowItemLayout(const TSharedPtr& SectionContentContainer, ERulesSection Section, const SetupRulePtr& Rule, const uint32 PlatformFilterIndex) -{ - // RowWidget -> Splitter -> (NameWidget | DescriptionWidget | ButtonWidget) - const bool bShowMoreInfoButton = (!Rule->ShowApply()); - const bool bShouldHideApplyButton = (Section == ERulesSection::Applied); - const FSlateBrush* IconBrush = nullptr; - - if (Rule != nullptr) - { - if (Section == ERulesSection::Applied) - { - IconBrush = FAppStyle::Get().GetBrush("Icons.SuccessWithColor"); - } - else if (Rule->GetSeverity() == ESetupRuleSeverity::Critical) - { - IconBrush = FAppStyle::Get().GetBrush("Icons.ErrorWithColor"); - } - else - { - IconBrush = FAppStyle::Get().GetBrush("Icons.WarningWithColor"); - } - } - - // Name widget - const TSharedPtr NameWidget = SNew(SHorizontalBox) - .Clipping(EWidgetClipping::OnDemand); - - if (IconBrush != nullptr) - { - NameWidget->AddSlot() - .HAlign(HAlign_Left) - .VAlign(VAlign_Center) - .Padding(8, 0, 8, 0) - .AutoWidth() - [SNew(SImage) - .Image(IconBrush)]; - } - - NameWidget->AddSlot() - .HAlign(HAlign_Left) - .VAlign(VAlign_Center) - .Padding(0, 0, 0, 0) - [SNew(STextBlock) - .Font(FAppStyle::Get().GetFontStyle(TEXT("PropertyWindow.NormalFont"))) - .ColorAndOpacity(FSlateColor::UseStyle()) - .Text(Rule != nullptr ? Rule->GetDisplayName() : FText::GetEmpty())]; - - // Description widget - const TSharedPtr DescriptionWidget = SNew(SHorizontalBox) - .Clipping(EWidgetClipping::OnDemand); - - DescriptionWidget->AddSlot() - .VAlign(VAlign_Center) - .Padding(6, 0) - [SNew(STextBlock) - .Font(FAppStyle::Get().GetFontStyle(TEXT("PropertyWindow.NormalFont"))) - .ColorAndOpacity(FSlateColor::UseStyle()) - .Text(Rule != nullptr ? Rule->GetDescription() : FText::GetEmpty()) - .AutoWrapText(true)]; - - // Button widget. There are two buttons slots that are customised based on section - const TSharedPtr ButtonWidget = SNew(SHorizontalBox); - - if (!bShowMoreInfoButton) - { - ButtonWidget->AddSlot() - .Padding(FMargin(6, 3, 3, 3)) - [SNew(SButton) - .HAlign(HAlign_Center) - .VAlign(VAlign_Center) - .Text(LOCTEXT("ApplyRule", "Apply")) - .Visibility_Lambda([bShouldHideApplyButton]() -> EVisibility { return bShouldHideApplyButton ? EVisibility::Hidden : EVisibility::Visible; }) - .OnClicked(this, &SOculusXRProjectSetupToolWidget::OnApplyRuleClicked, Rule) - .IsEnabled_Static(&SOculusXRProjectSetupToolWidget::OnApplyRuleEnabled, Section)]; - } - else - { - ButtonWidget->AddSlot() - .Padding(FMargin(6, 3, 3, 3)) - [SNew(SButton) - .HAlign(HAlign_Center) - .VAlign(VAlign_Center) - .Text(LOCTEXT("MoreInfo", "More Info")) - .Visibility_Lambda([bShouldHideApplyButton]() -> EVisibility { return bShouldHideApplyButton ? EVisibility::Hidden : EVisibility::Visible; }) - .OnClicked(this, &SOculusXRProjectSetupToolWidget::OnMoreInfoClicked, Rule) - .IsEnabled_Static(&SOculusXRProjectSetupToolWidget::OnApplyRuleEnabled, Section)]; - } - - FMenuBuilder EllipsisMenuBuilder(true, nullptr); - - const auto IgnoreButtonText = Section == ERulesSection::Ignored ? LOCTEXT("UnignoreRule", "Unignore") : LOCTEXT("IgnoreRule", "Ignore"); - const auto IgnoreButtonTooltip = Section == ERulesSection::Ignored ? LOCTEXT("UnignoreRule_Tooltip", "Unignore this rule") : LOCTEXT("IgnoreRule_Tooltip", "Ignore this rule"); - FString SupportURL(TEXT("https://forums.oculusvr.com/developer")); - - if (!Rule->GetInfoUrl().IsEmpty()) - { - SupportURL = Rule->GetInfoUrl(); - } - - EllipsisMenuBuilder.AddMenuEntry( - IgnoreButtonText, - IgnoreButtonTooltip, - FSlateIcon(), - FUIAction( - FExecuteAction::CreateRaw(this, &SOculusXRProjectSetupToolWidget::OnIgnoreRuleClicked, Rule, Section), - FCanExecuteAction::CreateStatic(&SOculusXRProjectSetupToolWidget::OnIgnoreRuleEnabled, Section))); - - EllipsisMenuBuilder.AddMenuEntry( - LOCTEXT("SupportButton", "Support"), - LOCTEXT("SupportButton_ToolTip", "Get more information about this rule."), - FSlateIcon(FAppStyle::GetAppStyleSetName(), "Icons.Comment"), - FUIAction( - FExecuteAction::CreateLambda([SupportURL] { FPlatformProcess::LaunchURL(*SupportURL, nullptr, nullptr); }), - FCanExecuteAction())); - - ButtonWidget->AddSlot() - .AutoWidth() - .VAlign(VAlign_Center) - .Padding(FMargin(4.f, 0.f, 8.f, 0.f)) - [SNew(SComboButton) - .ContentPadding(0) - .HasDownArrow(false) - .Visibility_Lambda([bShouldHideApplyButton]() -> EVisibility { return bShouldHideApplyButton ? EVisibility::Hidden : EVisibility::Visible; }) - .ForegroundColor(FSlateColor::UseForeground()) - .ComboButtonStyle(FAppStyle::Get(), "SimpleComboButton") - .AddMetaData(FTagMetaData(TEXT("ViewOptions"))) - .MenuContent() - [EllipsisMenuBuilder.MakeWidget()] - .ButtonContent() - [SNew(SHorizontalBox) - + SHorizontalBox::Slot() - .AutoWidth() - .HAlign(HAlign_Center) - [SNew(SImage) - .Image(FAppStyle::Get().GetBrush("PropertyWindow.Button_Ellipsis")) - .ColorAndOpacity(FSlateColor::UseForeground())]]]; - - // Splitter so each row can contain Name | Description | Buttons - const TSharedPtr Splitter = SNew(SSplitter) - .Style(FAppStyle::Get(), "DetailsView.Splitter") - .PhysicalSplitterHandleSize(1.0f) - .HitDetectionSplitterHandleSize(5.0f); - - // Add the widgets to the splitter - Splitter->AddSlot() - .Value(ColumnSizeData->GetNameColumnWidth()) - .OnSlotResized(ColumnSizeData->GetOnNameColumnResized()) - [NameWidget.ToSharedRef()]; - - Splitter->AddSlot() - .Value(ColumnSizeData->GetValueColumnWidth()) - .OnSlotResized(ColumnSizeData->GetOnValueColumnResized()) - [DescriptionWidget.ToSharedRef()]; - - Splitter->AddSlot() - .Value(ColumnSizeData->GetRightColumnWidth()) - .OnSlotResized(ColumnSizeData->GetOnRightColumnResized()) - .MinSize(ColumnSizeData->GetRightColumnMinWidth()) - [ButtonWidget.ToSharedRef()]; - - // Top level container for the whole row - const TSharedPtr RowWidget = SNew(SBorder) - .BorderImage(FAppStyle::Get().GetBrush("DetailsView.CategoryMiddle")) - .BorderBackgroundColor(FAppStyle::Get().GetSlateColor("Colors.Panel")) - .Padding(0) - [Splitter.ToSharedRef()]; - - // Add a slot into the content container for this item and add the row widget to it - SectionContentContainer->AddSlot() - .AutoHeight() - [SNew(SBorder) - .BorderImage(FAppStyle::Get().GetBrush("DetailsView.GridLine")) - .Padding(FMargin(0, 0, 0, 1)) - .Clipping(EWidgetClipping::ClipToBounds) - .Visibility(this, &SOculusXRProjectSetupToolWidget::OnRowVisibility, Section, PlatformFilters[CurrentPlatformFilterIndex], Rule) - [SNew(SBox) - .MinDesiredHeight(26.0f) - [SNew(SHorizontalBox) - + SHorizontalBox::Slot() - .HAlign(HAlign_Fill) - .VAlign(VAlign_Fill) - [SNew(SBorder) - .BorderImage(FAppStyle::Get().GetBrush("DetailsView.Highlight")) - .Padding(0) - [SNew(SBorder) - .BorderImage(FAppStyle::Get().GetBrush("DetailsView.CategoryMiddle")) - .BorderBackgroundColor(FAppStyle::Get().GetSlateColor("Colors.Panel")) - .Padding(0) - [RowWidget.ToSharedRef()]]]]]]; -} - -/** - * Build the layout for the required rules - */ -void SOculusXRProjectSetupToolWidget::BuildRequiredRulesSectionLayout(const TSharedPtr& RootContainer) -{ - const UOculusXRRuleProcessorSubsystem* RuleProcessorSubsystem = GEngine->GetEngineSubsystem(); - - if (RuleProcessorSubsystem == nullptr) - { - return; - } - - const TSharedPtr SectionContentContainer = BuildRulesContainerLayout(RootContainer, ERulesSection::Required, LOCTEXT("RequiredRules_Title", "Required Rules")); - - for (const auto& Rule : RuleProcessorSubsystem->GetRules()) - { - if (Rule->GetSeverity() == ESetupRuleSeverity::Critical) - { - BuildRowItemLayout(SectionContentContainer, ERulesSection::Required, Rule, 0); - } - } -} - -/** - * Build the layout for the recommended rules - */ -void SOculusXRProjectSetupToolWidget::BuildRecommendedRulesSectionLayout(const TSharedPtr& RootContainer) -{ - const UOculusXRRuleProcessorSubsystem* RuleProcessorSubsystem = GEngine->GetEngineSubsystem(); - - if (RuleProcessorSubsystem == nullptr) - { - return; - } - - const TSharedPtr SectionContentContainer = BuildRulesContainerLayout(RootContainer, ERulesSection::Recommended, LOCTEXT("RecommendedRules_Title", "Recommended Rules")); - - for (const auto& Rule : RuleProcessorSubsystem->GetRules()) - { - if (Rule->GetSeverity() < ESetupRuleSeverity::Critical) - { - BuildRowItemLayout(SectionContentContainer, ERulesSection::Recommended, Rule, 0); - } - } -} - -/** - * Build the layout for the applied rules - */ -void SOculusXRProjectSetupToolWidget::BuildAppliedRulesSectionLayout(const TSharedPtr& RootContainer) -{ - const UOculusXRRuleProcessorSubsystem* RuleProcessorSubsystem = GEngine->GetEngineSubsystem(); - - if (RuleProcessorSubsystem == nullptr) - { - return; - } - - const TSharedPtr SectionContentContainer = BuildRulesContainerLayout(RootContainer, ERulesSection::Applied, LOCTEXT("AppliedRules_Title", "Applied Rules")); - - // Add all rules and let the visibility function take care of which ones to show - - for (const auto& Rule : RuleProcessorSubsystem->GetRules()) - { - BuildRowItemLayout(SectionContentContainer, ERulesSection::Applied, Rule, 0); - } -} - -/** - * Build the layout for the ignored rules - */ -void SOculusXRProjectSetupToolWidget::BuildIgnoredRulesSectionLayout(const TSharedPtr& RootContainer) -{ - const UOculusXRRuleProcessorSubsystem* RuleProcessorSubsystem = GEngine->GetEngineSubsystem(); - - if (RuleProcessorSubsystem == nullptr) - { - return; - } - - const TSharedPtr SectionContentContainer = BuildRulesContainerLayout(RootContainer, ERulesSection::Ignored, LOCTEXT("IgnoredRules_Title", "Ignored Rules")); - - // Add all rules and let the visibility function take care of which ones to show - - for (const auto& Rule : RuleProcessorSubsystem->GetRules()) - { - BuildRowItemLayout(SectionContentContainer, ERulesSection::Ignored, Rule, 0); - } -} - -/** - * Is an un-applied rule visible? - */ -EVisibility SOculusXRProjectSetupToolWidget::OnRowVisibility(ERulesSection Section, ESetupRulePlatform CurrentPlatform, SetupRulePtr Rule) const -{ - if (Section == ERulesSection::Filter) - { - return EVisibility::Visible; - } - - if (!BIsSectionExpanded[static_cast(Section)]) - { - return EVisibility::Collapsed; - } - - if (Rule == nullptr) - { - return EVisibility::Collapsed; - } - - if (!Rule->IsValid()) - { - return EVisibility::Collapsed; - } - - if ((Rule->GetPlatform() & CurrentPlatform) != CurrentPlatform) - { - return EVisibility::Collapsed; - } - - switch (Section) - { - case ERulesSection::Required: - case ERulesSection::Recommended: - { - if (Rule->IsApplied()) - { - return EVisibility::Collapsed; - } - - return Rule->IsIgnored() ? EVisibility::Collapsed : EVisibility::Visible; - } - - case ERulesSection::Applied: - { - return Rule->IsApplied() ? EVisibility::Visible : EVisibility::Collapsed; - } - - case ERulesSection::Ignored: - { - // Applied rules always show in the Applied section even if ignored - - if (Rule->IsApplied()) - { - return EVisibility::Collapsed; - } - - return Rule->IsIgnored() ? EVisibility::Visible : EVisibility::Collapsed; - } - - default: - { - break; - } - } - - return EVisibility::Collapsed; -} - -EVisibility SOculusXRProjectSetupToolWidget::OnRestartEditorNoticeVisibility() const -{ - return bShowButtonToRestart ? EVisibility::Visible : EVisibility::Collapsed; -} - -FReply SOculusXRProjectSetupToolWidget::OnRestartEditorButtonClicked() -{ - bShowButtonToRestart = false; - FUnrealEdMisc::Get().RestartEditor(false); - return FReply::Handled(); -} - -void SOculusXRProjectSetupToolWidget::Refresh() -{ - UOculusXRRuleProcessorSubsystem* RuleProcessorSubsystem = GEngine->GetEngineSubsystem(); - - if (RuleProcessorSubsystem != nullptr) - { - RuleProcessorSubsystem->Refresh(); - } -} - -void SOculusXRProjectSetupToolWidget::UpdateActiveTimer(bool Register) -{ - if (!Register) - { - if (!ActiveTimerHandle.IsValid()) - { - return; - } - UnRegisterActiveTimer(ActiveTimerHandle.Pin().ToSharedRef()); - return; - } - - if (ActiveTimerHandle.IsValid()) - { - UnRegisterActiveTimer(ActiveTimerHandle.Pin().ToSharedRef()); - } - - ActiveTimerHandle = RegisterActiveTimer( - 30.f, - FWidgetActiveTimerDelegate::CreateLambda([this](double /*InCurrentTime*/, float /*InDeltaTime*/) { - Refresh(); - UpdateProjectStatus(); - return EActiveTimerReturnType::Continue; - })); -} - -/** - * Apply a new platform filter - */ -FReply SOculusXRProjectSetupToolWidget::OnPlatformFilterChanged(ESetupRulePlatform ItemSelected) -{ - const UOculusXRRuleProcessorSubsystem* RuleProcessorSubsystem = GEngine->GetEngineSubsystem(); - - if (RuleProcessorSubsystem == nullptr) - { - return FReply::Handled(); - } - - const int32 Index = PlatformFilters.Find(ItemSelected); - - if (Index != INDEX_NONE) - { - CurrentPlatformFilterIndex = Index; - GetMutableDefault()->CurrentPlatform = static_cast(ItemSelected); - BuildLayout(RootContainerWidget); - } - - return FReply::Handled(); -} - -/** - * Apply rule button callback - */ -FReply SOculusXRProjectSetupToolWidget::OnApplyRuleClicked(SetupRulePtr Rule) -{ - if (Rule == nullptr) - { - return FReply::Handled(); - } - bool bShouldRestartEditor = false; - Rule->Apply(bShouldRestartEditor); - bShowButtonToRestart |= bShouldRestartEditor; - UpdateProjectStatus(); - return FReply::Handled(); -} - -/** - * Apply rule enabled callback - */ -bool SOculusXRProjectSetupToolWidget::OnApplyRuleEnabled(ERulesSection Section) -{ - return Section != ERulesSection::Applied && Section != ERulesSection::Ignored; -} - -FReply SOculusXRProjectSetupToolWidget::OnReportIssueClicked() -{ - OculusXRTelemetry::TScopedMarker ReportIssueEvent; - const auto& _ = ReportIssueEvent.AddAnnotation("ToolName", "ProjectSetupTool"); - - const FString MQDHDeepLink("odh://feedback-hub?showSubmitFeedback&platformID=2283488761985181&categoryID=482296384788650"); - - FString error = ""; - FPlatformProcess::LaunchURL(*MQDHDeepLink, nullptr, &error); - if (!error.IsEmpty()) - { - ReportIssueEvent.SetResult(OculusXRTelemetry::EAction::Fail); - FNotificationInfo Info(LOCTEXT("InstallMQDH", "Install Meta Quest Developer Hub")); - Info.ExpireDuration = 30.0f; - Info.Hyperlink = FSimpleDelegate::CreateLambda([]() { - FPlatformProcess::LaunchURL(TEXT("https://developers.meta.com/horizon/documentation/unity/ts-odh-getting-started/"), nullptr, nullptr); - }); - Info.SubText = LOCTEXT("Description", "Meta Quest Developer Hub is not installed on this machine."); - Info.HyperlinkText = LOCTEXT("DownloadUrl", "Get Meta Quest Developer Hub"); - FSlateNotificationManager::Get().AddNotification(Info); - } - return FReply::Handled(); -} - -/** - * More info button callback - */ -FReply SOculusXRProjectSetupToolWidget::OnMoreInfoClicked(SetupRulePtr Rule) -{ - if (Rule == nullptr) - { - return FReply::Handled(); - } - - if (Rule->GetInfoUrl().IsEmpty()) - { - const FString SupportURL(TEXT("https://forums.oculusvr.com/developer")); - FPlatformProcess::LaunchURL(*SupportURL, nullptr, nullptr); - } - else - { - FPlatformProcess::LaunchURL(*Rule->GetInfoUrl(), nullptr, nullptr); - } - - return FReply::Handled(); -} - -/** - * Ignore/Unignore rule button callback - */ -void SOculusXRProjectSetupToolWidget::OnIgnoreRuleClicked(SetupRulePtr Rule, ERulesSection Section) -{ - if (Rule == nullptr) - { - return; - } - - if (Section != ERulesSection::Ignored) - { - Rule->SetIgnoreRule(true); - } - else - { - Rule->SetIgnoreRule(false); - } - - UpdateProjectStatus(); -} - -/** - * Apply rule button callback - */ -FReply SOculusXRProjectSetupToolWidget::OnApplyAllRulesClicked(ERulesSection Section) -{ - bool bShouldRestartEditor = false; - - const UOculusXRRuleProcessorSubsystem* RuleProcessorSubsystem = GEngine->GetEngineSubsystem(); - - for (auto& Rule : RuleProcessorSubsystem->GetRules()) - { - // Only apply rules that are critical and are in the required section or non-critical and are in the recommended section - bool bShouldApplyRule = Rule->GetSeverity() == ESetupRuleSeverity::Critical && Section == ERulesSection::Required; - bShouldApplyRule = bShouldApplyRule || Rule->GetSeverity() != ESetupRuleSeverity::Critical && Section == ERulesSection::Recommended; - // Only apply rules that in the current platform - bShouldApplyRule = bShouldApplyRule && (Rule->GetPlatform() & PlatformFilters[CurrentPlatformFilterIndex]) == PlatformFilters[CurrentPlatformFilterIndex]; - // Only apply rules that are valid - bShouldApplyRule = bShouldApplyRule && Rule->IsValid(); - // Only apply rules that are not applied yet - bShouldApplyRule = bShouldApplyRule && !Rule->IsApplied(); - // Only apply rules that are not ignored - bShouldApplyRule = bShouldApplyRule && !Rule->IsIgnored(); - // Only apply rules that show Apply button - bShouldApplyRule = bShouldApplyRule && Rule->ShowApply(); - if (!bShouldApplyRule) - { - continue; - } - - Rule->Apply(bShouldRestartEditor); - bShowButtonToRestart |= bShouldRestartEditor; - } - - UpdateProjectStatus(); - - return FReply::Handled(); -} - -/** - * Apply rule enabled callback - */ -bool SOculusXRProjectSetupToolWidget::OnApplyAllRulesEnabled(ERulesSection Section) const -{ - switch (Section) - { - case ERulesSection::Required: - return RuleStatus.PendingRequiredRulesCount > 0; - case ERulesSection::Recommended: - return RuleStatus.PendingRecommendedRulesCount > 0; - default: - return false; - } -} - -/** - * Ignore rule enabled callback - */ -bool SOculusXRProjectSetupToolWidget::OnIgnoreRuleEnabled(ERulesSection Section) -{ - return Section != ERulesSection::Applied; -} - -/** - * Expander visibility - */ -EVisibility SOculusXRProjectSetupToolWidget::OnHeaderExpanderVisibility(ERulesSection Section) -{ - return Section == ERulesSection::Filter ? EVisibility::Collapsed : EVisibility::Visible; -} - -/** - * Expander image - */ -const FSlateBrush* SOculusXRProjectSetupToolWidget::GetHeaderExpanderImage(ERulesSection Section) const -{ - const bool bIsHeaderExpanded = BIsSectionExpanded[static_cast(Section)]; - - FName ResourceName; - if (bIsHeaderExpanded) - { - static const FName ExpandedName = "TreeArrow_Expanded"; - ResourceName = ExpandedName; - } - else - { - static const FName CollapsedName = "TreeArrow_Collapsed"; - ResourceName = CollapsedName; - } - - return FAppStyle::Get().GetBrush(ResourceName); -} - -/** - * Expander clicked - */ -FReply SOculusXRProjectSetupToolWidget::OnHeaderExpanderClicked(ERulesSection Section) -{ - const uint8 index = static_cast(Section); - BIsSectionExpanded[index] = !BIsSectionExpanded[index]; - return FReply::Handled(); -} - -void SOculusXRProjectSetupToolWidget::UpdateProjectStatus() -{ - const UOculusXRRuleProcessorSubsystem* RuleProcessorSubsystem = GEngine->GetEngineSubsystem(); - - if (RuleProcessorSubsystem != nullptr) - { - RuleStatus = RuleProcessorSubsystem->UnAppliedRulesStatus(PlatformFilters[CurrentPlatformFilterIndex]); - } - - UpdateProjectStatusString(); -} - -/** - * Build the project status string - */ -void SOculusXRProjectSetupToolWidget::UpdateProjectStatusString() const -{ - if (ProjectStatusWidget == nullptr) - { - return; - } - - FString Status; - - if (RuleStatus.PendingRequiredRulesCount == 0 && RuleStatus.PendingRecommendedRulesCount == 0) - { - Status = TEXT("Current Project Status: All rules have been applied"); - } - else if (RuleStatus.PendingRequiredRulesCount == 0) - { - Status = FString::Printf(TEXT("Current Project Status: There are %d recommended rules to apply"), RuleStatus.PendingRecommendedRulesCount); - } - else if (RuleStatus.PendingRecommendedRulesCount == 0) - { - Status = FString::Printf(TEXT("Current Project Status: There are %d required rules to apply"), RuleStatus.PendingRequiredRulesCount); - } - else - { - Status = FString::Printf(TEXT("Current Project Status: There are %d required rules and %d recommended rules to apply"), RuleStatus.PendingRequiredRulesCount, RuleStatus.PendingRecommendedRulesCount); - } - - ProjectStatusWidget->SetText(FText::FromString(Status)); -} - -#undef LOCTEXT_NAMESPACE diff --git a/Plugins/MetaXR/Source/OculusXRProjectSetupTool/Private/Widget/OculusXRProjectSetupToolWidget.h b/Plugins/MetaXR/Source/OculusXRProjectSetupTool/Private/Widget/OculusXRProjectSetupToolWidget.h deleted file mode 100644 index 734c9cf..0000000 --- a/Plugins/MetaXR/Source/OculusXRProjectSetupTool/Private/Widget/OculusXRProjectSetupToolWidget.h +++ /dev/null @@ -1,124 +0,0 @@ -// Copyright (c) Meta Platforms, Inc. and affiliates. - -#pragma once - -#include "CoreMinimal.h" - -#include "DetailColumnSizeData.h" -#include "Widgets/DeclarativeSyntaxSupport.h" -#include "Widgets/SCompoundWidget.h" -#include "Widgets/Layout/SScrollBox.h" -#include "OculusXRRuleProcessorSubsystem.h" - -class STextBlock; -class FActiveTimerHandle; -/** - * Slate widget for the Project Setup Tool main tab - */ -class SOculusXRProjectSetupToolWidget : public SCompoundWidget -{ - SLATE_BEGIN_ARGS(SOculusXRProjectSetupToolWidget) {} - SLATE_END_ARGS() - - /** Construct the slate layout for the widget */ - - void Construct(const FArguments& InArgs); - -private: - enum class ERulesSection : uint8 - { - Filter, - Required, - Recommended, - Applied, - Ignored - }; - - /** Build the main layout */ - void BuildLayout(const TSharedPtr& RootContainer); - - /** Build the title section layout*/ - void BuildTitleSectionLayout(const TSharedPtr& RootContainer); - - /** Build the filter section layout */ - void BuildFilterSectionLayout(const TSharedPtr& RootContainer, const uint32 PlatformFilterIndex); - - /** Build a container for a rules section */ - TSharedPtr BuildRulesContainerLayout(const TSharedPtr& RootContainer, ERulesSection Section, const FText& SectionTitle); - - /** Build a single rules item */ - void BuildRowItemLayout(const TSharedPtr& SectionContentContainer, ERulesSection Section, const SetupRulePtr& Rule, const uint32 PlatformFilterIndex); - - /** Build the rules section layouts */ - void BuildRequiredRulesSectionLayout(const TSharedPtr& RootContainer); - void BuildRecommendedRulesSectionLayout(const TSharedPtr& RootContainer); - void BuildAppliedRulesSectionLayout(const TSharedPtr& RootContainer); - void BuildIgnoredRulesSectionLayout(const TSharedPtr& RootContainer); - - /** Platform filter callbacks */ - FReply OnPlatformFilterChanged(ESetupRulePlatform ItemSelected); - - /** Button handling callbacks */ - FReply OnApplyRuleClicked(SetupRulePtr Rule); - static bool OnApplyRuleEnabled(ERulesSection Section); - - FReply OnReportIssueClicked(); - - FReply OnMoreInfoClicked(SetupRulePtr Rule); - - FReply OnApplyAllRulesClicked(ERulesSection Section); - bool OnApplyAllRulesEnabled(ERulesSection Section) const; - - void OnIgnoreRuleClicked(SetupRulePtr Rule, ERulesSection Section); - static bool OnIgnoreRuleEnabled(ERulesSection Section); - - /** Rule visibility callback */ - EVisibility OnRowVisibility(ERulesSection Section, ESetupRulePlatform CurrentPlatform, SetupRulePtr Rule) const; - - /** Expander callbacks */ - const FSlateBrush* GetHeaderExpanderImage(ERulesSection Section) const; - static EVisibility OnHeaderExpanderVisibility(ERulesSection Section); - FReply OnHeaderExpanderClicked(ERulesSection Section); - - /** Restart Editor Notice Visibility */ - EVisibility OnRestartEditorNoticeVisibility() const; - /** Restart Editor Button Clicked */ - FReply OnRestartEditorButtonClicked(); - - /** Perform refresh */ - static void Refresh(); - - /** Register/Unregister timer */ - void UpdateActiveTimer(bool Register); - - /** Update the status of rules */ - void UpdateProjectStatus(); - - /** Update the status string */ - void UpdateProjectStatusString() const; - - /** Root container */ - TSharedPtr RootContainerWidget{}; - - /** Column size data */ - TSharedPtr ColumnSizeData{}; - - /** Platform filter */ - TArray PlatformFilters{}; - uint32 CurrentPlatformFilterIndex{}; - - /** Active timer handle */ - TWeakPtr ActiveTimerHandle; - - /** Restart pending after rule application */ - bool bShowButtonToRestart = false; - - /** Expanded/collapsed state for each section */ - TArray BIsSectionExpanded{ true, true, true, true, true }; - - /** Status string */ - TSharedPtr ProjectStatusWidget; - - /** Rules status */ - UOculusXRRuleProcessorSubsystem::RuleStatus RuleStatus{}; -}; diff --git a/Plugins/MetaXR/Source/OculusXRProjectSetupTool/Private/Widget/OculusXRProjectTutorialWidget.cpp b/Plugins/MetaXR/Source/OculusXRProjectSetupTool/Private/Widget/OculusXRProjectTutorialWidget.cpp deleted file mode 100644 index bdae531..0000000 --- a/Plugins/MetaXR/Source/OculusXRProjectSetupTool/Private/Widget/OculusXRProjectTutorialWidget.cpp +++ /dev/null @@ -1,334 +0,0 @@ -// Copyright (c) Meta Platforms, Inc. and affiliates. - -#include "OculusXRProjectTutorialWidget.h" - -#include "OculusXRProjectSetupToolModule.h" -#include "OculusXRPSTEvents.h" -#include "OculusXRPSTSettings.h" -#include "OculusXRTelemetry.h" -#include "Widgets/SOverlay.h" -#include "Widgets/Images/SImage.h" -#include "Widgets/Input/SButton.h" -#include "Widgets/Layout/SBox.h" -#include "Widgets/Layout/SScrollBox.h" -#include "Widgets/Text/STextBlock.h" -#include "Styling/SlateStyle.h" -#include "Styling/SlateStyleMacros.h" -#include "Framework/Application/SlateApplication.h" - -#define LOCTEXT_NAMESPACE "OculusXRProjectTutorialWidget" - -static constexpr int32 NumTutorialPages = 3; - -/** - * Construct the layout for the project setup tool tab - * - * @param InArgs [in] the arguments associated with this tool - */ -void SOculusXRTutorialWindow::Construct(const FArguments& InArgs) -{ - // Construct the layout - RootContainerWidget = SNew(SVerticalBox); - - BuildGuidedTutorialLayout(RootContainerWidget); - - ChildSlot - [SNew(SBox) - .WidthOverride(1080) - .HeightOverride(600) - [RootContainerWidget.ToSharedRef()]]; -} - -/** - * Build the guided tutorial layout - */ -void SOculusXRTutorialWindow::BuildGuidedTutorialLayout(const TSharedPtr& RootContainer) -{ - // Construct the row of buttons - const TSharedPtr PreviousNextWidget = SNew(SHorizontalBox); - - PreviousNextWidget->AddSlot() - .AutoWidth() - [SNew(SButton) - .OnClicked(this, &SOculusXRTutorialWindow::OnPreviousClicked) - .IsEnabled(this, &SOculusXRTutorialWindow::OnPreviousEnabled) - .Text(LOCTEXT("Previous", "Previous"))]; - - PreviousNextWidget->AddSlot() - .AutoWidth() - .Padding(10, 0, 0, 0) - [SNew(SButton) - .OnClicked(this, &SOculusXRTutorialWindow::OnNextClicked) - .IsEnabled(this, &SOculusXRTutorialWindow::OnNextEnabled) - .Text(LOCTEXT("Next", "Next"))]; - - const TSharedPtr SkipWidget = SNew(SHorizontalBox); - - SkipWidget->AddSlot() - .AutoWidth() - [SNew(SButton) - .OnClicked(this, &SOculusXRTutorialWindow::OnSkipClicked) - .ButtonStyle(&FAppStyle::Get().GetWidgetStyle("PrimaryButton")) - .Text_Lambda([this]() { - if (GuidedTutorialPageIndex == NumTutorialPages - 1) - { - return LOCTEXT("Close", "Close"); - } - return LOCTEXT("Skip", "Skip"); - })]; - - const TSharedPtr PaginationWidget = SNew(SHorizontalBox); - - for (int i = 0; i < NumTutorialPages; ++i) - { - PaginationWidget->AddSlot() - .Padding(4.0f, 0.0f) - [SNew(SImage) - .DesiredSizeOverride(FVector2D(8.0f, 8.0f)) - .Image_Raw(this, &SOculusXRTutorialWindow::GetPaginationImageForIndex, i)]; - } - - const TSharedPtr ButtonsWidget = SNew(SHorizontalBox); - - ButtonsWidget->AddSlot() - .HAlign(HAlign_Left) - [PreviousNextWidget.ToSharedRef()]; - - ButtonsWidget->AddSlot() - .Padding(0.0f, 7.0f) - .HAlign(HAlign_Center) - [PaginationWidget.ToSharedRef()]; - - ButtonsWidget->AddSlot() - .HAlign(HAlign_Right) - [SkipWidget.ToSharedRef()]; - - // Construct the text widget - const TSharedPtr TextWidget = SNew(SVerticalBox); - AddTutorialPage1(TextWidget); - AddTutorialPage2(TextWidget); - AddTutorialPage3(TextWidget); - - // Construct the image panel - const TSharedPtr ImagePanel = SNew(SOverlay); - - ImagePanel->AddSlot() - [SNew(SImage) - .Image(FOculusXRProjectSetupToolModule::GetSlateStyle()->GetBrush("ProjectSetupTool.MetaQuestBackground"))]; - - // Construct the instruction panel - const TSharedPtr InstructionsPanel = SNew(SOverlay); - - InstructionsPanel->AddSlot() - [SNew(SVerticalBox) - + SVerticalBox::Slot() - .Padding(40) - .VAlign(VAlign_Center) - [TextWidget.ToSharedRef()]]; - - InstructionsPanel->AddSlot() - [SNew(SVerticalBox) - + SVerticalBox::Slot() - .Padding(40, 20) - .VAlign(VAlign_Bottom) - [ButtonsWidget.ToSharedRef()]]; - - // Construct the main panel - - const TSharedPtr MainPanel = SNew(SHorizontalBox); - - MainPanel->AddSlot() - [ImagePanel.ToSharedRef()]; - - MainPanel->AddSlot() - [InstructionsPanel.ToSharedRef()]; - - // Add to the root container - - RootContainer->AddSlot() - [MainPanel.ToSharedRef()]; -} - -/** - * Previous button clicked - */ -FReply SOculusXRTutorialWindow::OnPreviousClicked() -{ - --GuidedTutorialPageIndex; - - if (GuidedTutorialPageIndex < 0) - { - GuidedTutorialPageIndex = 0; - } - - const OculusXRTelemetry::TScopedMarker Previous; - const auto& Annotated = Previous - .AddAnnotation(OculusXRTelemetry::Annotations::Value, - TCHAR_TO_ANSI(*FString::FromInt(GuidedTutorialPageIndex))); - - return FReply::Handled(); -} - -/** - * Previous button enabled - */ -bool SOculusXRTutorialWindow::OnPreviousEnabled() const -{ - return GuidedTutorialPageIndex > 0; -} - -/** - * Next button clicked - */ -FReply SOculusXRTutorialWindow::OnNextClicked() -{ - ++GuidedTutorialPageIndex; - - if (GuidedTutorialPageIndex == NumTutorialPages - 1) - { - GetMutableDefault()->bGuidedTutorialComplete = true; - GetMutableDefault()->TryUpdateDefaultConfigFile(); - } - const OculusXRTelemetry::TScopedMarker NextEvent; - const auto& Annotated = NextEvent - .AddAnnotation(OculusXRTelemetry::Annotations::Value, - TCHAR_TO_ANSI(*FString::FromInt(GuidedTutorialPageIndex))); - return FReply::Handled(); -} - -/** - * Next button enabled - */ -bool SOculusXRTutorialWindow::OnNextEnabled() const -{ - return GuidedTutorialPageIndex < NumTutorialPages - 1; -} - -/** - * Skip button clicked - */ -FReply SOculusXRTutorialWindow::OnSkipClicked() const -{ - FSlateApplication::Get().FindWidgetWindow(AsShared())->RequestDestroyWindow(); - return FReply::Handled(); -} - -/** - * Get the image to use for the pagination indicator - */ -const FSlateBrush* SOculusXRTutorialWindow::GetPaginationImageForIndex(int32 PageIndex) const -{ - if (PageIndex == GuidedTutorialPageIndex) - { - return FOculusXRProjectSetupToolModule::GetSlateStyle()->GetBrush("ProjectSetupTool.WhiteDot"); - } - - return FOculusXRProjectSetupToolModule::GetSlateStyle()->GetBrush("ProjectSetupTool.GreyDot"); -} - -void SOculusXRTutorialWindow::AddTutorialPage1(const TSharedPtr& TextWidget) const -{ - TextWidget->AddSlot() - .AutoHeight() - [SNew(STextBlock) - .AutoWrapText(true) - .Font(DEFAULT_FONT("Regular", 24)) - .Visibility_Lambda([this]() { return GuidedTutorialPageIndex == 0 ? EVisibility::Visible : EVisibility::Collapsed; }) - .Text(LOCTEXT("Title1", "Welcome to the Meta XR Project Setup Tool"))]; - - TextWidget->AddSlot() - .AutoHeight() - .Padding(0, 20, 0, 0) - [SNew(STextBlock) - .AutoWrapText(true) - .Font(DEFAULT_FONT("Regular", 12)) - .Visibility_Lambda([this]() { return GuidedTutorialPageIndex == 0 ? EVisibility::Visible : EVisibility::Collapsed; }) - .Text(LOCTEXT("Body1", - "The Unreal Project Setup Tool can help you quickly configure projects using the Meta XR Plugin. This tool guides you through the necessary steps so you can start developing faster. The Unreal Project Setup Tool tests a registry of rules called Configuration Tasks. We provide default rules to make your project Quest Ready."))]; -} - -void SOculusXRTutorialWindow::AddTutorialPage2(const TSharedPtr& TextWidget) const -{ - - TextWidget->AddSlot() - .AutoHeight() - [SNew(STextBlock) - .AutoWrapText(true) - .Font(DEFAULT_FONT("Regular", 24)) - .Visibility_Lambda([this]() { return GuidedTutorialPageIndex == 1 ? EVisibility::Visible : EVisibility::Collapsed; }) - .Text(LOCTEXT("Title2", "Here are the key things to know about Unreal Project Setup Tool"))]; - - TextWidget->AddSlot() - .AutoHeight() - .Padding(0, 10, 0, 0) - [SNew(STextBlock) - .AutoWrapText(true) - .Font(DEFAULT_FONT("Bold", 12)) - .Visibility_Lambda([this]() { return GuidedTutorialPageIndex == 1 ? EVisibility::Visible : EVisibility::Collapsed; }) - .Text(LOCTEXT("Body2.1", "Actions"))]; - TextWidget->AddSlot() - .AutoHeight() - .Padding(0, 3, 0, 0) - [SNew(STextBlock) - .AutoWrapText(true) - .Font(DEFAULT_FONT("Regular", 12)) - .Visibility_Lambda([this]() { return GuidedTutorialPageIndex == 1 ? EVisibility::Visible : EVisibility::Collapsed; }) - .Text(LOCTEXT("Body2.2", "A Configuration Task is regularly checked for its validation. You can interact directly with a Task in the following ways."))]; - - TextWidget->AddSlot() - .AutoHeight() - .Padding(0, 3, 0, 0) - [SNew(STextBlock) - .AutoWrapText(true) - .Font(DEFAULT_FONT("Bold", 12)) - .Visibility_Lambda([this]() { return GuidedTutorialPageIndex == 1 ? EVisibility::Visible : EVisibility::Collapsed; }) - .Text(LOCTEXT("Body2.3", "Fix/Apply"))]; - - TextWidget->AddSlot() - .AutoHeight() - .Padding(0, 3, 0, 0) - [SNew(STextBlock) - .AutoWrapText(true) - .Font(DEFAULT_FONT("Regular", 12)) - .Visibility_Lambda([this]() { return GuidedTutorialPageIndex == 1 ? EVisibility::Visible : EVisibility::Collapsed; }) - .Text(LOCTEXT("Body2.3", "Manually call the fix delegate for this Task in order to resolve the issue. This action is only available for tasks that are not already validated."))]; - - TextWidget->AddSlot() - .AutoHeight() - .Padding(0, 3, 0, 0) - [SNew(STextBlock) - .AutoWrapText(true) - .Font(DEFAULT_FONT("Bold", 12)) - .Visibility_Lambda([this]() { return GuidedTutorialPageIndex == 1 ? EVisibility::Visible : EVisibility::Collapsed; }) - .Text(LOCTEXT("Body2.4", "Ignore / Unignore"))]; - - TextWidget->AddSlot() - .AutoHeight() - .Padding(0, 3, 0, 0) - [SNew(STextBlock) - .AutoWrapText(true) - .Font(DEFAULT_FONT("Regular", 12)) - .Visibility_Lambda([this]() { return GuidedTutorialPageIndex == 1 ? EVisibility::Visible : EVisibility::Collapsed; }) - .Text(LOCTEXT("Body2.5", "This moves the task to another category that will get ignored for both checks and fixes. This gives the control back to developers who may not want to be forced to follow some guidelines or even requirements in some specific cases."))]; -} - -void SOculusXRTutorialWindow::AddTutorialPage3(const TSharedPtr& TextWidget) const -{ - TextWidget->AddSlot() - .AutoHeight() - [SNew(STextBlock) - .AutoWrapText(true) - .Font(DEFAULT_FONT("Bold", 24)) - .Visibility_Lambda([this]() { return GuidedTutorialPageIndex == 2 ? EVisibility::Visible : EVisibility::Collapsed; }) - .Text(LOCTEXT("Title3", "You’re good to go! Start developing faster with Unreal Project Setup Tool"))]; - - TextWidget->AddSlot() - .AutoHeight() - .Padding(0, 20, 0, 0) - [SNew(STextBlock) - .AutoWrapText(true) - .Font(DEFAULT_FONT("Regular", 12)) - .Visibility_Lambda([this]() { return GuidedTutorialPageIndex == 2 ? EVisibility::Visible : EVisibility::Collapsed; }) - .Text(LOCTEXT("Body3", "You can check Unreal Project Setup Tool from the Tools menu bar, Meta XR Plugin Settings Page or from the Meta icon on the bottom bar. The tool proactively checks for configuration changes."))]; -} -#undef LOCTEXT_NAMESPACE diff --git a/Plugins/MetaXR/Source/OculusXRProjectSetupTool/Private/Widget/OculusXRProjectTutorialWidget.h b/Plugins/MetaXR/Source/OculusXRProjectSetupTool/Private/Widget/OculusXRProjectTutorialWidget.h deleted file mode 100644 index 053bccc..0000000 --- a/Plugins/MetaXR/Source/OculusXRProjectSetupTool/Private/Widget/OculusXRProjectTutorialWidget.h +++ /dev/null @@ -1,46 +0,0 @@ -// Copyright (c) Meta Platforms, Inc. and affiliates. - -#pragma once - -#include "CoreMinimal.h" - -#include "Widgets/DeclarativeSyntaxSupport.h" -#include "Widgets/SCompoundWidget.h" -#include "Widgets/Layout/SScrollBox.h" - -class FActiveTimerHandle; -/** - * Slate widget for the tutorial - */ -class SOculusXRTutorialWindow : public SCompoundWidget -{ - SLATE_BEGIN_ARGS(SOculusXRTutorialWindow) {} - SLATE_END_ARGS() - - /** Construct the slate layout for the widget */ - void Construct(const FArguments& InArgs); - -private: - /** Build the guided tutorial layout */ - void BuildGuidedTutorialLayout(const TSharedPtr& RootContainer); - - FReply OnPreviousClicked(); - bool OnPreviousEnabled() const; - - FReply OnNextClicked(); - bool OnNextEnabled() const; - - FReply OnSkipClicked() const; - - const FSlateBrush* GetPaginationImageForIndex(int32 PageIndex) const; - - void AddTutorialPage1(const TSharedPtr& TextWidget) const; - void AddTutorialPage2(const TSharedPtr& TextWidget) const; - void AddTutorialPage3(const TSharedPtr& TextWidget) const; - - /** Root container */ - TSharedPtr RootContainerWidget{}; - - /** Current tutorial page */ - int32 GuidedTutorialPageIndex = 0; -}; diff --git a/Plugins/MetaXR/Source/OculusXRProjectSetupTool/Private/Widget/OculusXRStatusBarWidget.cpp b/Plugins/MetaXR/Source/OculusXRProjectSetupTool/Private/Widget/OculusXRStatusBarWidget.cpp deleted file mode 100644 index c351891..0000000 --- a/Plugins/MetaXR/Source/OculusXRProjectSetupTool/Private/Widget/OculusXRStatusBarWidget.cpp +++ /dev/null @@ -1,85 +0,0 @@ -// Copyright (c) Meta Platforms, Inc. and affiliates. - -#include "OculusXRStatusBarWidget.h" - -#include "OculusXRProjectSetupToolModule.h" -#include "OculusXRPSTSettings.h" -#include "OculusXRRuleProcessorSubsystem.h" -#include "Styling/AppStyle.h" -#include "Styling/SlateStyle.h" -#include "Widgets/SBoxPanel.h" -#include "Widgets/SOverlay.h" -#include "Widgets/Images/SImage.h" -#include "Widgets/Input/SButton.h" -#include "Engine/Engine.h" - -#define LOCTEXT_NAMESPACE "OculusXRStatusBarWidget" - -/** - * Construct the layout for the status bar widget - * - * @param InArgs [in] the arguments associated with this tool - */ -void SOculusXRStatusBarWidget::Construct(const FArguments& InArgs) -{ - ChildSlot - [SNew(SHorizontalBox) - + SHorizontalBox::Slot() - [SNew(SButton) - .HAlign(HAlign_Center) - .VAlign(VAlign_Center) - .ButtonStyle(FAppStyle::Get(), "SimpleButton") - .ToolTipText(LOCTEXT("StatusBarWidget_Tooltip", "Launch Meta XR Project Setup tool")) - .OnClicked_Lambda([]() -> FReply { - IOculusXRProjectSetupToolModule::Get().ShowProjectSetupTool("Toolbar"); - return FReply::Handled(); - }) - .ContentPadding(0) - [SNew(SOverlay) - + SOverlay::Slot() - [SNew(SHorizontalBox) - + SHorizontalBox::Slot() - .AutoWidth() - [SNew(SImage) - .Image(FOculusXRProjectSetupToolModule::GetSlateStyle()->GetBrush("ProjectSetupTool.MetaLogo")) - .DesiredSizeOverride(FVector2D(22.0f, 22.0f))]] - + SOverlay::Slot() - [SNew(SHorizontalBox) - + SHorizontalBox::Slot() - .AutoWidth() - .Padding(16, 4, -2, 10) - [SNew(SImage) - .Image_Static(SOculusXRStatusBarWidget::GetDotImage) - .DesiredSizeOverride(FVector2D(8.0f, 8.0f))]]]]]; -} - -/** - * Determine the correct image to use - */ -const FSlateBrush* SOculusXRStatusBarWidget::GetDotImage() -{ - const UOculusXRRuleProcessorSubsystem* RuleProcessorSubsystem = GEngine->GetEngineSubsystem(); - - if (RuleProcessorSubsystem == nullptr) - { - return FOculusXRProjectSetupToolModule::GetSlateStyle()->GetBrush("ProjectSetupTool.GreenDot"); - } - - auto Platform = GetDefault()->CurrentPlatform; - - const auto& RuleStatus = RuleProcessorSubsystem->UnAppliedRulesStatus(static_cast(Platform)); - - if (RuleStatus.PendingRequiredRulesCount > 0) - { - return FOculusXRProjectSetupToolModule::GetSlateStyle()->GetBrush("ProjectSetupTool.RedDot"); - } - - if (RuleStatus.PendingRecommendedRulesCount > 0) - { - return FOculusXRProjectSetupToolModule::GetSlateStyle()->GetBrush("ProjectSetupTool.YellowDot"); - } - - return FOculusXRProjectSetupToolModule::GetSlateStyle()->GetBrush("ProjectSetupTool.GreenDot"); -} - -#undef LOCTEXT_NAMESPACE diff --git a/Plugins/MetaXR/Source/OculusXRProjectSetupTool/Private/Widget/OculusXRStatusBarWidget.h b/Plugins/MetaXR/Source/OculusXRProjectSetupTool/Private/Widget/OculusXRStatusBarWidget.h deleted file mode 100644 index 38c48b4..0000000 --- a/Plugins/MetaXR/Source/OculusXRProjectSetupTool/Private/Widget/OculusXRStatusBarWidget.h +++ /dev/null @@ -1,27 +0,0 @@ -// Copyright (c) Meta Platforms, Inc. and affiliates. - -#pragma once - -#include "CoreMinimal.h" - -#include "Widgets/DeclarativeSyntaxSupport.h" -#include "Widgets/SCompoundWidget.h" - -/** - * Slate widget for the widget used to show any outstanding issues in the status bar - */ -class SOculusXRStatusBarWidget : public SCompoundWidget -{ - SLATE_BEGIN_ARGS(SOculusXRStatusBarWidget) {} - SLATE_END_ARGS() - - /** Construct the slate layout for the widget */ - - void Construct(const FArguments& InArgs); - -private: - /** - * Determine the correct image to use - */ - static const FSlateBrush* GetDotImage(); -}; diff --git a/Plugins/MetaXR/Source/OculusXRProjectSetupTool/Public/IOculusXRProjectSetupModule.h b/Plugins/MetaXR/Source/OculusXRProjectSetupTool/Public/IOculusXRProjectSetupModule.h deleted file mode 100644 index 3d93c1a..0000000 --- a/Plugins/MetaXR/Source/OculusXRProjectSetupTool/Public/IOculusXRProjectSetupModule.h +++ /dev/null @@ -1,29 +0,0 @@ -// Copyright (c) Meta Platforms, Inc. and affiliates. - -#pragma once -#include "Modules/ModuleManager.h" - -//------------------------------------------------------------------------------------------------- -// IOculusXRProjectSetupToolModule -//------------------------------------------------------------------------------------------------- - -/** - * The public interface to this module. - */ -class IOculusXRProjectSetupToolModule : public IModuleInterface -{ -public: - /** - * Singleton-like access to this module's interface. This is just for convenience! - * Beware of calling this during the shutdown phase, though. Your module might have been unloaded already. - * - * @return Returns singleton instance, loading the module on demand if needed - */ - static inline IOculusXRProjectSetupToolModule& Get() - { - return FModuleManager::LoadModuleChecked("OculusXRProjectSetupTool"); - } - - /** Show the project setup tool window */ - virtual void ShowProjectSetupTool(const FString& Origin) = 0; -}; diff --git a/Plugins/MetaXR/Source/OculusXRProjectSetupTool/Public/OculusXRPSTSettings.h b/Plugins/MetaXR/Source/OculusXRProjectSetupTool/Public/OculusXRPSTSettings.h deleted file mode 100644 index 68bd8d1..0000000 --- a/Plugins/MetaXR/Source/OculusXRProjectSetupTool/Public/OculusXRPSTSettings.h +++ /dev/null @@ -1,52 +0,0 @@ -// Copyright (c) Meta Platforms, Inc. and affiliates. - -#pragma once - -#include "CoreMinimal.h" -#include "OculusXRSetupRule.h" -#include "OculusXRPSTSettings.generated.h" - -/** - * Meta XR Project Setup tool Settings - */ -UCLASS(config = EditorPerProjectUserSettings) -class OCULUSXRPROJECTSETUPTOOL_API UOculusXRPSTSettings : public UObject -{ - GENERATED_BODY() -public: - /** - * @brief Ignored rules by developer - */ - UPROPERTY(config) - TSet IgnoredRules = {}; - - /** - * @brief Selected platform for development - */ - UPROPERTY(config) - uint32 CurrentPlatform = static_cast(MetaQuest_All); - - /** - * @brief If tools should periodically check if list of rules and rules' status - */ - UPROPERTY(config, EditAnywhere, Category = MetaXR) - bool bBackGroundChecks = true; - - /** - * @brief If build should fail if critical rule is not applied - */ - UPROPERTY(config, EditAnywhere, Category = MetaXR) - bool bStopBuildOnUnAppliedCriticalItems = false; - - /** - * @brief If guided tutorial has been completed/skipped - */ - UPROPERTY(config, EditAnywhere, Category = MetaXR) - bool bGuidedTutorialComplete = false; - - /** - * @brief If guided tutorial showed - */ - UPROPERTY(config, EditAnywhere, Category = MetaXR) - bool bShowGuidedTutorial = true; -}; diff --git a/Plugins/MetaXR/Source/OculusXRProjectSetupTool/Public/OculusXRRuleProcessorSubsystem.h b/Plugins/MetaXR/Source/OculusXRProjectSetupTool/Public/OculusXRRuleProcessorSubsystem.h deleted file mode 100644 index ae0fa68..0000000 --- a/Plugins/MetaXR/Source/OculusXRProjectSetupTool/Public/OculusXRRuleProcessorSubsystem.h +++ /dev/null @@ -1,102 +0,0 @@ -// Copyright (c) Meta Platforms, Inc. and affiliates. - -#pragma once - -#include "CoreMinimal.h" -#include "OculusXRSetupRule.h" -#include "Developer/LauncherServices/Public/ILauncher.h" -#include "Subsystems/EngineSubsystem.h" -#include "OculusXRRuleProcessorSubsystem.generated.h" - -class ULightComponentBase; - -/** - * The rule processor handles registration and querying of rules - */ -UCLASS() -class OCULUSXRPROJECTSETUPTOOL_API UOculusXRRuleProcessorSubsystem final : public UEngineSubsystem -{ - GENERATED_BODY() - -public: - struct RuleStatus - { - unsigned PendingRequiredRulesCount = 0; - unsigned PendingRecommendedRulesCount = 0; - }; - /** - * Initialize the subsystem. USubsystem override - */ - virtual void Initialize(FSubsystemCollectionBase& Collection) override; - - /** - * De-initializes the subsystem. USubsystem override - */ - virtual void Deinitialize() override; - - /** - * Register a rule - * - * @return true if successfully registered - */ - bool RegisterRule(const SetupRulePtr& Rule); - - /** - * Unregister a rule - * - * @return true if successfully unregistered - */ - bool UnregisterRule(const SetupRulePtr& Rule); - - /** - * Unregister all rules - */ - void UnregisterAllRules(); - - /** - * Fetch all rules - */ - const TSet& GetRules() const; - - /** - * Fetch rule with given `Id` - */ - SetupRulePtr GetRule(const FName& Id) const; - - /** - * Returns if there are dynamic lights in project - */ - bool DynamicLightsExistInProject() const; - - void SendSummaryEvent(); - - void SendSummaryEvent(ESetupRulePlatform Platform) const; - /** - * Refresh state - */ - void Refresh(); - - /** - * Returns number of not applied critical and recommended rules - */ - RuleStatus UnAppliedRulesStatus(ESetupRulePlatform Platform) const; - -private: - void PopulateDynamicLights(); - void RegisterRules(const TArray& Rules); - - //** A set containing all the registered rules - TSet Rules = {}; - - // Dynamic lights in project - TMap> DynamicLights; - - // Launcher handles - FDelegateHandle LauncherCallbackHandle; - void OnLauncherCreated(ILauncherRef Launcher); - void OnLauncherWorkerStarted(ILauncherWorkerPtr LauncherWorker, ILauncherProfileRef Profile); - - void OnPIEEnded(bool bIsSimulating); - - TArray UnAppliedRulesForPlatform(ESetupRulePlatform Platform, const TSet& Severities) const; -}; diff --git a/Plugins/MetaXR/Source/OculusXRProjectSetupTool/Public/OculusXRSetupRule.h b/Plugins/MetaXR/Source/OculusXRProjectSetupTool/Public/OculusXRSetupRule.h deleted file mode 100644 index 6fddd1d..0000000 --- a/Plugins/MetaXR/Source/OculusXRProjectSetupTool/Public/OculusXRSetupRule.h +++ /dev/null @@ -1,166 +0,0 @@ -// Copyright (c) Meta Platforms, Inc. and affiliates. - -#pragma once - -#include "CoreMinimal.h" - -#include "OculusXRSetupRule.generated.h" - -/** - * Rule categories - */ -enum class ESetupRuleCategory : uint8 -{ - Compatibility = 0, - Rendering = 1, - Quality = 2, - Physics = 3, - Plugins = 4, - Features = 5, - Miscellaneous = 6 -}; - -/** - * Rule severities - */ -enum class ESetupRuleSeverity : uint8 -{ - Warning = 0, - Performance = 1, - Critical = 2 -}; - -/** - * Rule platforms - */ - -UENUM() -enum class ESetupRulePlatform : uint32 -{ - // None - None = 0, - // Link - MetaLink = 0x1 UMETA(DisplayName = "Link"), - - // Quest - MetaQuest_2 = 0x2 UMETA(DisplayName = "Quest 2"), - MetaQuest_3 = 0x4 UMETA(DisplayName = "Quest 3"), - MetaQuest_Pro = 0x8 UMETA(DisplayName = "Quest Pro") -}; - -ENUM_CLASS_FLAGS(ESetupRulePlatform) - -static constexpr ESetupRulePlatform MetaQuest_All = ESetupRulePlatform::MetaQuest_2 | ESetupRulePlatform::MetaQuest_3 | ESetupRulePlatform::MetaQuest_Pro; - -static constexpr ESetupRulePlatform All_Platforms = MetaQuest_All | ESetupRulePlatform::MetaLink; - -class OCULUSXRPROJECTSETUPTOOL_API ISetupRule -{ -public: - ISetupRule( - const FName& InId, - const FText& InDisplayName, - const FText& InDescription, - const ESetupRuleCategory InCategory, - const ESetupRuleSeverity InSeverity, - const ESetupRulePlatform InPlatform = All_Platforms, - const bool InShowApply = true); - ISetupRule( - const FName& InId, - const FText& InDisplayName, - const FText& InDescription, - const FString& InInfoUrl, - const ESetupRuleCategory InCategory, - const ESetupRuleSeverity InSeverity, - const ESetupRulePlatform InPlatform = All_Platforms, - const bool InShowApply = true); - virtual ~ISetupRule() = default; - virtual bool IsApplied() const = 0; - - // Returns true if rule is valid. For example, Rule that checks if passthrough enabled is checked and can be applied only if PassthroughComponent is added. - virtual bool IsValid(); - - bool IsIgnored() const; - void SetIgnoreRule(bool bIgnore, bool bSendMetrics = true); - - const FName& GetId() const; - FText GetDisplayName() const; - FText GetDescription() const; - FString GetInfoUrl() const; - - ESetupRuleCategory GetCategory() const; - ESetupRuleSeverity GetSeverity() const; - ESetupRulePlatform GetPlatform() const; - - bool ShowApply() const; - - void Apply(bool& OutShouldRestartEditor); - -protected: - virtual void ApplyImpl(bool& OutShouldRestartEditor) = 0; - -private: - /** Id for the rule */ - FName Id; - - /** Display name of the rule */ - FText DisplayName; - - /** Description of the rule */ - FText Description; - - /** Url to launch for help with rule */ - FString InfoUrl; - - /** Category of the rule */ - ESetupRuleCategory Category; - - /** Severity of the rule */ - ESetupRuleSeverity Severity; - - /** Platforms the rule applies to */ - ESetupRulePlatform Platform; - - /** Is rule ignored */ - bool bIsIgnored = false; - - /** Show apply button */ - bool bShowApply = true; -}; - -typedef TSharedPtr SetupRulePtr; - -/** - * Setup rule symbol database hash. - */ -struct FSetupRuleKeyFunc -{ - enum - { - bAllowDuplicateKeys = 0 - }; - typedef TCallTraits::ParamType KeyInitType; - typedef TCallTraits::ParamType ElementInitType; - - /** - * @return The key used to index the given element. - */ - static FORCEINLINE KeyInitType GetSetKey(ElementInitType Element) - { - return Element->GetId(); - } - - /** - * @return True if the keys match. - */ - static FORCEINLINE bool Matches(KeyInitType A, KeyInitType B) - { - return A == B; - } - - /** Calculates a hash index for a key. */ - static FORCEINLINE uint32 GetKeyHash(KeyInitType Key) - { - return GetTypeHash(Key); - } -}; diff --git a/Plugins/MetaXR/Source/OculusXRScene/OculusXRScene.Build.cs b/Plugins/MetaXR/Source/OculusXRScene/OculusXRScene.Build.cs deleted file mode 100644 index f3a810d..0000000 --- a/Plugins/MetaXR/Source/OculusXRScene/OculusXRScene.Build.cs +++ /dev/null @@ -1,51 +0,0 @@ -// @lint-ignore-every LICENSELINT -// Copyright Epic Games, Inc. All Rights Reserved. - -namespace UnrealBuildTool.Rules -{ - public class OculusXRScene : ModuleRules - { - public OculusXRScene(ReadOnlyTargetRules Target) : base(Target) - { - bUseUnity = true; - - PrivateDependencyModuleNames.AddRange( - new string[] - { - "Core", - "CoreUObject", - "Engine", - "HeadMountedDisplay", - "OculusXRAnchors", - "OculusXRPassthrough", - "OculusXRHMD", - "OVRPluginXR", - "XRBase", - "OpenXR", - "OpenXRHMD", - "ProceduralMeshComponent", - }); - - PublicDependencyModuleNames.AddRange( - new string[] - { - "KhronosOpenXRHeaders", - }); - - PrivateIncludePaths.AddRange( - new string[] { - // Relative to Engine\Plugins\Runtime\Oculus\OculusVR\Source - "OculusXRHMD/Private", - "OculusXRAnchors/Private", - "OculusXRPassthrough/Private", - }); - - PublicIncludePaths.AddRange( - new string[] { - "Runtime/Engine/Classes/Components", - }); - - AddEngineThirdPartyPrivateStaticDependencies(Target, "OpenXR"); - } - } -} diff --git a/Plugins/MetaXR/Source/OculusXRScene/Private/OculusXRRoomLayoutManagerComponent.cpp b/Plugins/MetaXR/Source/OculusXRScene/Private/OculusXRRoomLayoutManagerComponent.cpp deleted file mode 100644 index c8a1e57..0000000 --- a/Plugins/MetaXR/Source/OculusXRScene/Private/OculusXRRoomLayoutManagerComponent.cpp +++ /dev/null @@ -1,82 +0,0 @@ -// Copyright (c) Meta Platforms, Inc. and affiliates. - -#include "OculusXRRoomLayoutManagerComponent.h" -#include "OculusXRScene.h" -#include "OculusXRSceneModule.h" -#include "OculusXRSceneDelegates.h" -#include "OculusXRSceneFunctionLibrary.h" -#include "ProceduralMeshComponent.h" - -UOculusXRRoomLayoutManagerComponent::UOculusXRRoomLayoutManagerComponent(const FObjectInitializer& ObjectInitializer) -{ - bWantsInitializeComponent = true; // so that InitializeComponent() gets called -} - -void UOculusXRRoomLayoutManagerComponent::OnRegister() -{ - Super::OnRegister(); - - FOculusXRSceneEventDelegates::OculusSceneCaptureComplete.AddUObject(this, &UOculusXRRoomLayoutManagerComponent::OculusRoomLayoutSceneCaptureComplete_Handler); -} - -void UOculusXRRoomLayoutManagerComponent::OnUnregister() -{ - Super::OnUnregister(); - - FOculusXRSceneEventDelegates::OculusSceneCaptureComplete.RemoveAll(this); -} - -void UOculusXRRoomLayoutManagerComponent::InitializeComponent() -{ - Super::InitializeComponent(); -} - -void UOculusXRRoomLayoutManagerComponent::UninitializeComponent() -{ - Super::UninitializeComponent(); -} - -bool UOculusXRRoomLayoutManagerComponent::LaunchCaptureFlow() -{ - UE_LOG(LogOculusXRScene, Verbose, TEXT("Launch capture flow -- UOculusXRRoomLayoutManagerComponent")); - - uint64 OutRequest = 0; - auto result = OculusXRScene::FOculusXRScene::RequestSceneCapture(OutRequest); - bool isSuccess = UOculusXRAnchorBPFunctionLibrary::IsAnchorResultSuccess(result); - if (isSuccess) - { - EntityRequestList.Add(OutRequest); - } - - UE_LOG(LogOculusXRScene, Verbose, TEXT("Launch capture flow -- RequestSceneCapture -- %d"), result); - - return isSuccess; -} - -bool UOculusXRRoomLayoutManagerComponent::GetRoomLayout(FOculusXRUInt64 Space, FOculusXRRoomLayout& RoomLayoutOut, int32 MaxWallsCapacity) -{ - return UOculusXRSceneFunctionLibrary::GetRoomLayout(Space, RoomLayoutOut, MaxWallsCapacity); -} - -bool UOculusXRRoomLayoutManagerComponent::LoadTriangleMesh(FOculusXRUInt64 Space, UProceduralMeshComponent* Mesh, bool CreateCollision) const -{ - ensure(Mesh); - TArray Vertices; - TArray Triangles; - - auto result = OculusXRScene::FOculusXRScene::GetTriangleMesh(Space, Vertices, Triangles); - bool isSuccess = UOculusXRAnchorBPFunctionLibrary::IsAnchorResultSuccess(result); - if (!isSuccess) - { - return false; - } - - // Mesh->bUseAsyncCooking = true; - TArray EmptyNormals; - TArray EmptyUV; - TArray EmptyVertexColors; - TArray EmptyTangents; - Mesh->CreateMeshSection(0, Vertices, Triangles, EmptyNormals, EmptyUV, EmptyVertexColors, EmptyTangents, CreateCollision); - - return true; -} diff --git a/Plugins/MetaXR/Source/OculusXRScene/Private/OculusXRScene.cpp b/Plugins/MetaXR/Source/OculusXRScene/Private/OculusXRScene.cpp deleted file mode 100644 index f55ba9d..0000000 --- a/Plugins/MetaXR/Source/OculusXRScene/Private/OculusXRScene.cpp +++ /dev/null @@ -1,85 +0,0 @@ -// Copyright (c) Meta Platforms, Inc. and affiliates. - -#include "OculusXRScene.h" -#include "OculusXRSceneModule.h" -#include "OculusXRHMDPrivate.h" -#include "OculusXRHMD.h" -#include "OculusXRPluginWrapper.h" -#include "OculusXRSceneFunctionsOVR.h" -#include "OculusXRSceneFunctionsOpenXR.h" - -#define LOCTEXT_NAMESPACE "OculusXRScene" - -namespace OculusXRScene -{ - EOculusXRAnchorResult::Type FOculusXRScene::GetScenePlane(uint64 AnchorHandle, FVector& OutPos, FVector& OutSize) - { - return GetOculusXRSceneFunctionsImpl()->GetScenePlane(AnchorHandle, OutPos, OutSize); - } - - EOculusXRAnchorResult::Type FOculusXRScene::GetSceneVolume(uint64 AnchorHandle, FVector& OutPos, FVector& OutSize) - { - return GetOculusXRSceneFunctionsImpl()->GetSceneVolume(AnchorHandle, OutPos, OutSize); - } - - EOculusXRAnchorResult::Type FOculusXRScene::GetSemanticClassification(uint64 AnchorHandle, TArray& OutSemanticClassifications) - { - return GetOculusXRSceneFunctionsImpl()->GetSemanticClassification(AnchorHandle, OutSemanticClassifications); - } - - EOculusXRAnchorResult::Type FOculusXRScene::GetBoundary2D(uint64 AnchorHandle, TArray& OutVertices) - { - return GetOculusXRSceneFunctionsImpl()->GetBoundary2D(AnchorHandle, OutVertices); - } - - EOculusXRAnchorResult::Type FOculusXRScene::RequestSceneCapture(uint64& OutRequestID) - { - return GetOculusXRSceneFunctionsImpl()->RequestSceneCapture(OutRequestID); - } - - EOculusXRAnchorResult::Type FOculusXRScene::GetRoomLayout(uint64 AnchorHandle, const uint32 MaxWallsCapacity, FOculusXRUUID& OutCeilingUuid, FOculusXRUUID& OutFloorUuid, TArray& OutWallsUuid) - { - return GetOculusXRSceneFunctionsImpl()->GetRoomLayout(AnchorHandle, MaxWallsCapacity, OutCeilingUuid, OutFloorUuid, OutWallsUuid); - } - - EOculusXRAnchorResult::Type FOculusXRScene::GetTriangleMesh(uint64 AnchorHandle, TArray& Vertices, TArray& Triangles) - { - return GetOculusXRSceneFunctionsImpl()->GetTriangleMesh(AnchorHandle, Vertices, Triangles); - } - - // Requests to change the current boundary visibility - EOculusXRAnchorResult::Type FOculusXRScene::RequestBoundaryVisibility(EOculusXRBoundaryVisibility NewVisibilityRequest) - { - return GetOculusXRSceneFunctionsImpl()->RequestBoundaryVisibility(NewVisibilityRequest); - } - - EOculusXRAnchorResult::Type FOculusXRScene::GetBoundaryVisibility(EOculusXRBoundaryVisibility& OutVisibility) - { - return GetOculusXRSceneFunctionsImpl()->GetBoundaryVisibility(OutVisibility); - } - - - TSharedPtr FOculusXRScene::SceneFunctionsImpl = nullptr; - - TSharedPtr FOculusXRScene::GetOculusXRSceneFunctionsImpl() - { - if (SceneFunctionsImpl == nullptr) - { - const FName SystemName(TEXT("OpenXR")); - const bool IsOpenXR = GEngine->XRSystem.IsValid() && (GEngine->XRSystem->GetSystemName() == SystemName); - if (OculusXRHMD::FOculusXRHMD::GetOculusXRHMD() != nullptr) - { - SceneFunctionsImpl = MakeShared(); - } - else if (IsOpenXR) - { - SceneFunctionsImpl = MakeShared(); - } - } - - check(SceneFunctionsImpl); - return SceneFunctionsImpl; - } -} // namespace OculusXRScene - -#undef LOCTEXT_NAMESPACE diff --git a/Plugins/MetaXR/Source/OculusXRScene/Private/OculusXRSceneActor.cpp b/Plugins/MetaXR/Source/OculusXRScene/Private/OculusXRSceneActor.cpp deleted file mode 100644 index 73d3aa0..0000000 --- a/Plugins/MetaXR/Source/OculusXRScene/Private/OculusXRSceneActor.cpp +++ /dev/null @@ -1,784 +0,0 @@ -// @lint-ignore-every LICENSELINT -// Copyright Epic Games, Inc. All Rights Reserved. - -#include "OculusXRSceneActor.h" -#include "OculusXRSceneModule.h" -#include "OculusXRHMDModule.h" -#include "OculusXRHMD.h" -#include "OculusXRAnchorManager.h" -#include "OculusXRAnchorTypes.h" -#include "OculusXRAnchorBPFunctionLibrary.h" -#include "OculusXRScene.h" -#include "OculusXRSceneDelegates.h" -#include "OculusXRDelegates.h" -#include "Components/StaticMeshComponent.h" -#include "Engine/AssetManager.h" -#include "Engine/StaticMesh.h" -#include "Engine/StaticMeshActor.h" -#include "Engine/World.h" -#include "GameFramework/WorldSettings.h" -#include "ProceduralMeshComponent.h" -#include "OculusXRSceneGlobalMeshComponent.h" - -#define LOCTEXT_NAMESPACE "OculusXRSceneActor" - -////////////////////////////////////////////////////////////////////////// -// ASceneActor - -AOculusXRSceneActor::AOculusXRSceneActor(const FObjectInitializer& ObjectInitializer) - : Super(ObjectInitializer) -{ - ResetStates(); - - // Create required components - RoomLayoutManagerComponent = CreateDefaultSubobject(TEXT("OculusXRRoomLayoutManagerComponent")); - - // Following are the semantic labels we want to support default properties for. User can always add new ones through the properties panel if needed. - const FString default2DSemanticClassifications[] = { - TEXT("WALL_FACE"), - TEXT("CEILING"), - TEXT("FLOOR"), - TEXT("COUCH"), - TEXT("TABLE"), - TEXT("DOOR_FRAME"), - TEXT("WINDOW_FRAME"), - TEXT("WALL_ART"), - TEXT("INVISIBLE_WALL_FACE"), - TEXT("OTHER") - }; - - const FString default3DSemanticClassifications[] = { - TEXT("COUCH"), - TEXT("TABLE"), - TEXT("SCREEN"), - TEXT("BED"), - TEXT("LAMP"), - TEXT("PLANT"), - TEXT("STORAGE"), - TEXT("OTHER") - }; - - FOculusXRSpawnedSceneAnchorProperties spawnedAnchorProps; - spawnedAnchorProps.ActorComponent = nullptr; - spawnedAnchorProps.StaticMesh = nullptr; - - // Setup initial scene plane and volume properties - for (auto& semanticLabel2D : default2DSemanticClassifications) - { - FOculusXRSpawnedSceneAnchorProperties& props = ScenePlaneSpawnedSceneAnchorProperties.Add(semanticLabel2D, spawnedAnchorProps); - props.ForceParallelToFloor = (semanticLabel2D != "WALL_FACE"); - } - - for (auto& semanticLabel3D : default3DSemanticClassifications) - { - FOculusXRSpawnedSceneAnchorProperties& props = SceneVolumeSpawnedSceneAnchorProperties.Add(semanticLabel3D, spawnedAnchorProps); - props.ForceParallelToFloor = true; - } -} - -void AOculusXRSceneActor::ResetStates() -{ - bCaptureFlowWasLaunched = false; - ClearScene(); -} - -void AOculusXRSceneActor::BeginPlay() -{ - Super::BeginPlay(); - - // Create a scene component as root so we can attach spawned actors to it - USceneComponent* rootSceneComponent = NewObject(this, USceneComponent::StaticClass()); - rootSceneComponent->SetMobility(EComponentMobility::Static); - rootSceneComponent->RegisterComponent(); - SetRootComponent(rootSceneComponent); - - SceneGlobalMeshComponent = FindComponentByClass(); - - // Register delegates - RoomLayoutManagerComponent->OculusXRRoomLayoutSceneCaptureCompleteNative.AddUObject(this, &AOculusXRSceneActor::SceneCaptureComplete_Handler); - - // Make an initial request to query for the room layout if bPopulateSceneOnBeginPlay was set to true - if (bPopulateSceneOnBeginPlay) - { - PopulateScene(); - } -} - -void AOculusXRSceneActor::EndPlay(EEndPlayReason::Type Reason) -{ - // Unregister delegates - RoomLayoutManagerComponent->OculusXRRoomLayoutSceneCaptureCompleteNative.RemoveAll(this); - - // Calling ResetStates will reset member variables to their default values (including the request IDs). - ResetStates(); - - Super::EndPlay(Reason); -} - -void AOculusXRSceneActor::Tick(float DeltaTime) -{ - Super::Tick(DeltaTime); -} - -bool AOculusXRSceneActor::IsValidUuid(const FOculusXRUUID& Uuid) -{ - return Uuid.UUIDBytes != nullptr; -} - -void AOculusXRSceneActor::LaunchCaptureFlow() -{ - UE_LOG(LogOculusXRScene, Verbose, TEXT("Launch capture flow")); - - if (RoomLayoutManagerComponent) - { - UE_LOG(LogOculusXRScene, Verbose, TEXT("Launch capture flow -- RoomLayoutManagerComponent")); - - const bool bResult = RoomLayoutManagerComponent->LaunchCaptureFlow(); - if (!bResult) - { - UE_LOG(LogOculusXRScene, Error, TEXT("LaunchCaptureFlow() failed!")); - } - } -} - -void AOculusXRSceneActor::LaunchCaptureFlowIfNeeded() -{ -#if WITH_EDITOR - UE_LOG(LogOculusXRScene, Display, TEXT("Scene Capture does not work over Link. Please capture a scene with the HMD in standalone mode, then access the scene model over Link.")); -#else - // Depending on LauchCaptureFlowWhenMissingScene, we might not want to launch Capture Flow - if (LauchCaptureFlowWhenMissingScene != EOculusXRLaunchCaptureFlowWhenMissingScene::NEVER) - { - if (LauchCaptureFlowWhenMissingScene == EOculusXRLaunchCaptureFlowWhenMissingScene::ALWAYS || (!bCaptureFlowWasLaunched && LauchCaptureFlowWhenMissingScene == EOculusXRLaunchCaptureFlowWhenMissingScene::ONCE)) - { - LaunchCaptureFlow(); - } - } -#endif -} - -AActor* AOculusXRSceneActor::SpawnActorWithSceneComponent(const FOculusXRUInt64& Space, const FOculusXRUInt64& RoomSpaceID, const TArray& SemanticClassifications, UClass* sceneAnchorComponentInstanceClass) -{ - FActorSpawnParameters actorSpawnParams; - actorSpawnParams.SpawnCollisionHandlingOverride = ESpawnActorCollisionHandlingMethod::AlwaysSpawn; - AActor* Anchor = GetWorld()->SpawnActor(AActor::StaticClass(), FVector::ZeroVector, FRotator::ZeroRotator, actorSpawnParams); - - USceneComponent* rootComponent = NewObject(Anchor, USceneComponent::StaticClass()); - rootComponent->SetMobility(EComponentMobility::Movable); - rootComponent->RegisterComponent(); - Anchor->SetRootComponent(rootComponent); - rootComponent->SetWorldLocation(FVector::ZeroVector); - - Anchor->AttachToActor(this, FAttachmentTransformRules::KeepRelativeTransform); - -#if WITH_EDITOR - if (SemanticClassifications.Num() > 0) - { - Anchor->SetActorLabel(FString::Join(SemanticClassifications, TEXT("-")), false); - } -#endif - - UOculusXRSceneAnchorComponent* sceneAnchorComponent = NewObject(Anchor, sceneAnchorComponentInstanceClass); - sceneAnchorComponent->RegisterComponent(); - - sceneAnchorComponent->SetHandle(Space); - sceneAnchorComponent->SemanticClassifications = SemanticClassifications; - sceneAnchorComponent->RoomSpaceID = RoomSpaceID; - - EOculusXRAnchorResult::Type Result; - OculusXRAnchors::FOculusXRAnchors::SetAnchorComponentStatus(sceneAnchorComponent, EOculusXRSpaceComponentType::Locatable, true, 0.0f, FOculusXRAnchorSetComponentStatusDelegate(), Result); - - return Anchor; -} - -AActor* AOculusXRSceneActor::SpawnOrUpdateSceneAnchor(AActor* Anchor, const FOculusXRUInt64& Space, const FOculusXRUInt64& RoomSpaceID, const FVector& BoundedPos, const FVector& BoundedSize, const TArray& SemanticClassifications, const EOculusXRSpaceComponentType AnchorComponentType) -{ - if (Space.Value == 0) - { - UE_LOG(LogOculusXRScene, Error, TEXT("AOculusXRSceneActor::SpawnOrUpdateSceneAnchor Invalid Space handle.")); - return Anchor; - } - - if (!(AnchorComponentType == EOculusXRSpaceComponentType::ScenePlane || AnchorComponentType == EOculusXRSpaceComponentType::SceneVolume)) - { - UE_LOG(LogOculusXRScene, Error, TEXT("AOculusXRSceneActor::SpawnOrUpdateSceneAnchor Anchor doesn't have ScenePlane or SceneVolume component active.")); - return Anchor; - } - - if (0 == SemanticClassifications.Num()) - { - UE_LOG(LogOculusXRScene, Error, TEXT("AOculusXRSceneActor::SpawnOrUpdateSceneAnchor No semantic classification found.")); - return Anchor; - } - - FOculusXRSpawnedSceneAnchorProperties* foundProperties = (AnchorComponentType == EOculusXRSpaceComponentType::ScenePlane) ? ScenePlaneSpawnedSceneAnchorProperties.Find(SemanticClassifications[0]) : SceneVolumeSpawnedSceneAnchorProperties.Find(SemanticClassifications[0]); - - if (!foundProperties) - { - UE_LOG(LogOculusXRScene, Warning, TEXT("AOculusXRSceneActor::SpawnOrUpdateSceneAnchor Scene object has an unknown semantic label. Will not be spawned.")); - return Anchor; - } - - TSoftClassPtr* sceneAnchorComponentClassPtrRef = &foundProperties->ActorComponent; - TSoftObjectPtr* staticMeshObjPtrRef = &foundProperties->StaticMesh; - - UClass* sceneAnchorComponentInstanceClass = sceneAnchorComponentClassPtrRef->LoadSynchronous(); - if (!sceneAnchorComponentInstanceClass) - { - UE_LOG(LogOculusXRScene, Error, TEXT("AOculusXRSceneActor::SpawnOrUpdateSceneAnchor Scene anchor component class is invalid! Cannot spawn actor to populate the scene.")); - return Anchor; - } - - if (!Anchor) - { - Anchor = SpawnActorWithSceneComponent(Space, RoomSpaceID, SemanticClassifications, sceneAnchorComponentInstanceClass); - } - - if (staticMeshObjPtrRef && staticMeshObjPtrRef->IsPending()) - { - staticMeshObjPtrRef->LoadSynchronous(); - } - UStaticMesh* refStaticMesh = staticMeshObjPtrRef ? staticMeshObjPtrRef->Get() : nullptr; - if (refStaticMesh == nullptr) - { - UE_LOG(LogOculusXRScene, Warning, TEXT("AOculusXRSceneActor::SpawnOrUpdateSceneAnchor Spawn scene anchor mesh is invalid for %s!"), *SemanticClassifications[0]); - return Anchor; - } - - UStaticMeshComponent* staticMeshComponent = NewObject(Anchor, UStaticMeshComponent::StaticClass()); - staticMeshComponent->RegisterComponent(); - staticMeshComponent->SetStaticMesh(refStaticMesh); - staticMeshComponent->AttachToComponent(Anchor->GetRootComponent(), FAttachmentTransformRules::KeepWorldTransform); - const float worldToMeters = GetWorld()->GetWorldSettings()->WorldToMeters; - FVector offset(0.0f, BoundedSize.Y / 2.0f, BoundedSize.Z / 2.0f); - staticMeshComponent->SetRelativeLocation(foundProperties->AddOffset + ((BoundedPos + offset) * worldToMeters), false, nullptr, ETeleportType::ResetPhysics); - - // Setup scale based on bounded size and the actual size of the mesh - UStaticMesh* staticMesh = staticMeshComponent->GetStaticMesh(); - FBoxSphereBounds staticMeshBounds; - staticMeshBounds.BoxExtent = FVector{ 1.f, 1.f, 1.f }; - if (staticMesh) - { - staticMeshBounds = staticMesh->GetBounds(); - } - - staticMeshComponent->SetRelativeScale3D(FVector( - (BoundedSize.X < UE_SMALL_NUMBER) ? 1 : (BoundedSize.X / (staticMeshBounds.BoxExtent.X * 2.f)) * worldToMeters, - (BoundedSize.Y < UE_SMALL_NUMBER) ? 1 : (BoundedSize.Y / (staticMeshBounds.BoxExtent.Y * 2.f)) * worldToMeters, - (BoundedSize.Z < UE_SMALL_NUMBER) ? 1 : (BoundedSize.Z / (staticMeshBounds.BoxExtent.Z * 2.f)) * worldToMeters)); - - return Anchor; -} - -bool AOculusXRSceneActor::IsScenePopulated() -{ - if (!RootComponent) - { - return false; - } - - return RootComponent->GetNumChildrenComponents() > 0; -} - -bool AOculusXRSceneActor::IsRoomLayoutValid() -{ - return true; -} - -void AOculusXRSceneActor::PopulateScene() -{ - if (!RootComponent) - { - return; - } - - const EOculusXRAnchorResult::Type result = QueryAllRooms(); - if (!UOculusXRAnchorBPFunctionLibrary::IsAnchorResultSuccess(result)) - { - UE_LOG(LogOculusXRScene, Error, TEXT("PopulateScene Failed to query available rooms")); - } -} - -void AOculusXRSceneActor::ClearScene() -{ - if (!RootComponent) - return; - - TArray childrenComponents = RootComponent->GetAttachChildren(); - for (USceneComponent* SceneComponent : childrenComponents) - { - Cast(SceneComponent->GetOuter())->Destroy(); - } - - bRoomLayoutIsValid = false; - bFoundCapturedScene = false; -} - -void AOculusXRSceneActor::SetVisibilityToAllSceneAnchors(const bool bIsVisible) -{ - if (!RootComponent) - return; - - TArray childrenComponents = RootComponent->GetAttachChildren(); - for (USceneComponent* sceneComponent : childrenComponents) - { - sceneComponent->SetVisibility(bIsVisible, true); - } -} - -void AOculusXRSceneActor::SetVisibilityToSceneAnchorsBySemanticLabel(const FString SemanticLabel, const bool bIsVisible) -{ - FString label = SemanticLabel; - if (SemanticLabel == TEXT("DESK")) - { - label = TEXT("TABLE"); - UE_LOG(LogOculusXRScene, Warning, TEXT("XR Scene Actor semantic lable 'DESK' is deprecated, use 'TABLE' instead.")); - } - - if (!RootComponent) - return; - - TArray childrenComponents = RootComponent->GetAttachChildren(); - for (USceneComponent* sceneComponent : childrenComponents) - { - UObject* outerObject = sceneComponent->GetOuter(); - if (!outerObject) - { - continue; - } - - AActor* outerActor = Cast(outerObject); - if (!outerActor) - { - continue; - } - - UActorComponent* sceneAnchorComponent = outerActor->GetComponentByClass(UOculusXRSceneAnchorComponent::StaticClass()); - if (!sceneAnchorComponent) - { - continue; - } - - if (Cast(sceneAnchorComponent)->SemanticClassifications.Contains(label)) - { - sceneComponent->SetVisibility(bIsVisible, true); - } - } -} - -TArray AOculusXRSceneActor::GetActorsBySemanticLabel(const FString SemanticLabel) -{ - FString label = SemanticLabel; - if (SemanticLabel == TEXT("DESK")) - { - label = TEXT("TABLE"); - UE_LOG(LogOculusXRScene, Warning, TEXT("XR Scene Actor semantic lable 'DESK' is deprecated, use 'TABLE' instead.")); - } - - TArray actors; - - if (!RootComponent) - return actors; - - TArray childrenComponents = RootComponent->GetAttachChildren(); - for (USceneComponent* sceneComponent : childrenComponents) - { - UObject* outerObject = sceneComponent->GetOuter(); - if (!outerObject) - { - continue; - } - - AActor* outerActor = Cast(outerObject); - if (!outerActor) - { - continue; - } - - UActorComponent* sceneAnchorComponent = outerActor->GetComponentByClass(UOculusXRSceneAnchorComponent::StaticClass()); - if (!sceneAnchorComponent) - { - continue; - } - - if (Cast(sceneAnchorComponent)->SemanticClassifications.Contains(label)) - { - actors.Add(outerActor); - } - } - - return actors; -} - -TArray AOculusXRSceneActor::GetRoomLayouts() const -{ - TArray layouts; - RoomLayouts.GenerateValueArray(layouts); - return layouts; -} - -EOculusXRAnchorResult::Type AOculusXRSceneActor::QueryAllRooms() -{ - EOculusXRAnchorResult::Type anchorQueryResult; - - auto componentFilter = NewObject(this); - componentFilter->ComponentType = EOculusXRSpaceComponentType::RoomLayout; - - FOculusXRSpaceDiscoveryInfo discoveryInfo; - discoveryInfo.Filters.Add(componentFilter); - - OculusXRAnchors::FOculusXRAnchors::DiscoverAnchors(discoveryInfo, - FOculusXRDiscoverAnchorsResultsDelegate::CreateUObject(this, &AOculusXRSceneActor::RoomLayoutDiscoveryResultsAvailable), - FOculusXRDiscoverAnchorsCompleteDelegate(), - anchorQueryResult); - - return anchorQueryResult; -} - -void AOculusXRSceneActor::RoomLayoutDiscoveryResultsAvailable(const TArray& QueryResults) -{ - UE_LOG(LogOculusXRScene, Verbose, TEXT("RoomLayoutDiscoveryResultsAvailable")); - - for (auto& QueryElement : QueryResults) - { - ProcessRoomQueryResult(QueryElement.Space, QueryElement.UUID); - } -} - -void AOculusXRSceneActor::ProcessRoomQueryResult(FOculusXRUInt64 AnchorHandle, FOculusXRUUID UUID) -{ - UE_LOG(LogOculusXRScene, Verbose, TEXT("Process Room Query Result -- Query Element (space = %llu, uuid = %s"), AnchorHandle.Value, *BytesToHex(UUID.UUIDBytes, OCULUSXR_UUID_SIZE)); - - FOculusXRRoomLayout roomLayout; - const bool bGetRoomLayoutResult = RoomLayoutManagerComponent->GetRoomLayout(AnchorHandle.Value, roomLayout, MaxQueries); - if (!bGetRoomLayoutResult) - { - UE_LOG(LogOculusXRScene, Error, TEXT("Process Room Query Result -- Failed to get room layout for space (space = %llu, uuid = %s"), - AnchorHandle.Value, *BytesToHex(UUID.UUIDBytes, OCULUSXR_UUID_SIZE)); - return; - } - - roomLayout.RoomAnchorHandle = AnchorHandle; - roomLayout.RoomUuid = UUID; - - - // If we're only loading the active room we start that floor check query here, otherwise do the room query - if (bActiveRoomOnly) - { - QueryFloorForActiveRoom(AnchorHandle, roomLayout); - } - else - { - StartSingleRoomQuery(AnchorHandle, roomLayout); - } -} - -EOculusXRAnchorResult::Type AOculusXRSceneActor::QueryRoomUUIDs(const FOculusXRUInt64 RoomSpaceID, const TArray& RoomUUIDs) -{ - EOculusXRAnchorResult::Type startAnchorQueryResult; - - auto uuidFilter = NewObject(this); - uuidFilter->Uuids = RoomUUIDs; - - FOculusXRSpaceDiscoveryInfo discoveryInfo; - discoveryInfo.Filters.Add(uuidFilter); - - OculusXRAnchors::FOculusXRAnchors::DiscoverAnchors(discoveryInfo, - FOculusXRDiscoverAnchorsResultsDelegate::CreateUObject(this, &AOculusXRSceneActor::SceneRoomDiscoveryResultsAvailable, RoomSpaceID), - FOculusXRDiscoverAnchorsCompleteDelegate(), - startAnchorQueryResult); - - return startAnchorQueryResult; -} - -void AOculusXRSceneActor::SceneRoomDiscoveryResultsAvailable(const TArray& DiscoveryResults, const FOculusXRUInt64 RoomSpaceID) -{ - for (auto& AnchorQueryElement : DiscoveryResults) - { - ProcessRoomElementsResult(AnchorQueryElement.Space, RoomSpaceID); - } -} - -void AOculusXRSceneActor::ProcessRoomElementsResult(FOculusXRUInt64 AnchorHandle, const FOculusXRUInt64 RoomSpaceID) -{ - bool bOutPending = false; - - if (SceneGlobalMeshComponent) - { - TArray semanticClassifications; - GetSemanticClassifications(AnchorHandle.Value, semanticClassifications); - UE_LOG(LogOculusXRScene, Log, TEXT("SpatialAnchor Scene label is %s"), semanticClassifications.Num() > 0 ? *semanticClassifications[0] : TEXT("unknown")); - if (semanticClassifications.Contains(UOculusXRSceneGlobalMeshComponent::GlobalMeshSemanticLabel)) - { - bool bIsTriangleMesh = false; - EOculusXRAnchorResult::Type result = OculusXRAnchors::FOculusXRAnchorManager::GetAnchorComponentStatus( - AnchorHandle.Value, EOculusXRSpaceComponentType::TriangleMesh, bIsTriangleMesh, bOutPending); - - if (!UOculusXRAnchorBPFunctionLibrary::IsAnchorResultSuccess(result) || !bIsTriangleMesh) - { - UE_LOG(LogOculusXRScene, Error, TEXT("SpatialAnchorQueryResult_Handler Failed to load Triangle Mesh Component for a GLOBAL_MESH")); - return; - } - - UClass* sceneAnchorComponentInstanceClass = SceneGlobalMeshComponent->GetAnchorComponentClass(); - - AActor* globalMeshAnchor = SpawnActorWithSceneComponent(AnchorHandle.Value, RoomSpaceID, semanticClassifications, sceneAnchorComponentInstanceClass); - - SceneGlobalMeshComponent->CreateMeshComponent(AnchorHandle, globalMeshAnchor, RoomLayoutManagerComponent); - return; - } - } - - bool bIsScenePlane = false; - bool bIsSceneVolume = false; - EOculusXRAnchorResult::Type isPlaneResult = OculusXRAnchors::FOculusXRAnchorManager::GetAnchorComponentStatus( - AnchorHandle.Value, EOculusXRSpaceComponentType::ScenePlane, bIsScenePlane, bOutPending); - - EOculusXRAnchorResult::Type isVolumeResult = OculusXRAnchors::FOculusXRAnchorManager::GetAnchorComponentStatus( - AnchorHandle.Value, EOculusXRSpaceComponentType::SceneVolume, bIsSceneVolume, bOutPending); - - bool bIsPlaneResultSuccess = UOculusXRAnchorBPFunctionLibrary::IsAnchorResultSuccess(isPlaneResult); - bool bIsVolumeResultSuccess = UOculusXRAnchorBPFunctionLibrary::IsAnchorResultSuccess(isVolumeResult); - - AActor* anchor = nullptr; - - if (bIsPlaneResultSuccess && bIsScenePlane) - { - FVector scenePlanePos; - FVector scenePlaneSize; - auto getScenePlaneResult = OculusXRScene::FOculusXRScene::GetScenePlane(AnchorHandle.Value, scenePlanePos, scenePlaneSize); - if (UOculusXRAnchorBPFunctionLibrary::IsAnchorResultSuccess(getScenePlaneResult)) - { - UE_LOG(LogOculusXRScene, Log, TEXT("SpatialAnchorQueryResult_Handler ScenePlane pos = [%.2f, %.2f, %.2f], size = [%.2f, %.2f, %.2f]."), - scenePlanePos.X, scenePlanePos.Y, scenePlanePos.Z, - scenePlaneSize.X, scenePlaneSize.Y, scenePlaneSize.Z); - - TArray semanticClassifications; - GetSemanticClassifications(AnchorHandle.Value, semanticClassifications); - - UE_LOG(LogOculusXRScene, Log, TEXT("SpatialAnchor ScenePlane label is %s"), semanticClassifications.Num() > 0 ? *semanticClassifications[0] : TEXT("unknown")); - - anchor = SpawnOrUpdateSceneAnchor(anchor, AnchorHandle, RoomSpaceID, scenePlanePos, scenePlaneSize, semanticClassifications, EOculusXRSpaceComponentType::ScenePlane); - if (!anchor) - { - UE_LOG(LogOculusXRScene, Error, TEXT("SpatialAnchorQueryResult_Handler Failed to spawn scene anchor.")); - } - } - else - { - UE_LOG(LogOculusXRScene, Error, TEXT("SpatialAnchorQueryResult_Handler Failed to get bounds for ScenePlane space.")); - } - } - - if (bIsVolumeResultSuccess && bIsSceneVolume) - { - FVector sceneVolumePos; - FVector sceneVolumeSize; - auto getSceneVolumeResult = OculusXRScene::FOculusXRScene::GetSceneVolume(AnchorHandle.Value, sceneVolumePos, sceneVolumeSize); - if (UOculusXRAnchorBPFunctionLibrary::IsAnchorResultSuccess(getSceneVolumeResult)) - { - UE_LOG(LogOculusXRScene, Log, TEXT("SpatialAnchorQueryResult_Handler SceneVolume pos = [%.2f, %.2f, %.2f], size = [%.2f, %.2f, %.2f]."), - sceneVolumePos.X, sceneVolumePos.Y, sceneVolumePos.Z, - sceneVolumeSize.X, sceneVolumeSize.Y, sceneVolumeSize.Z); - - TArray semanticClassifications; - GetSemanticClassifications(AnchorHandle.Value, semanticClassifications); - - UE_LOG(LogOculusXRScene, Log, TEXT("SpatialAnchor SceneVolume label is %s"), semanticClassifications.Num() > 0 ? *semanticClassifications[0] : TEXT("unknown")); - - anchor = SpawnOrUpdateSceneAnchor(anchor, AnchorHandle, RoomSpaceID, sceneVolumePos, sceneVolumeSize, semanticClassifications, EOculusXRSpaceComponentType::SceneVolume); - if (!anchor) - { - UE_LOG(LogOculusXRScene, Error, TEXT("SpatialAnchorQueryResult_Handler Failed to spawn scene anchor.")); - } - } - else - { - UE_LOG(LogOculusXRScene, Error, TEXT("SpatialAnchorQueryResult_Handler Failed to get bounds for SceneVolume space.")); - } - } -} - -void AOculusXRSceneActor::StartSingleRoomQuery(FOculusXRUInt64 RoomSpaceID, FOculusXRRoomLayout RoomLayout) -{ - EOculusXRAnchorResult::Type startQueryResult = QueryRoomUUIDs(RoomSpaceID, RoomLayout.RoomObjectUUIDs); - if (UOculusXRAnchorBPFunctionLibrary::IsAnchorResultSuccess(startQueryResult)) - { - RoomLayouts.Add(RoomSpaceID, std::move(RoomLayout)); - } -} - -EOculusXRAnchorResult::Type AOculusXRSceneActor::QueryFloorForActiveRoom(FOculusXRUInt64 RoomSpaceID, FOculusXRRoomLayout RoomLayout) -{ - EOculusXRAnchorResult::Type anchorQueryResult; - - auto uuidFilter = NewObject(this); - uuidFilter->Uuids = { RoomLayout.FloorUuid }; - - FOculusXRSpaceDiscoveryInfo discoveryInfo; - discoveryInfo.Filters.Add(uuidFilter); - - OculusXRAnchors::FOculusXRAnchors::DiscoverAnchors(discoveryInfo, - FOculusXRDiscoverAnchorsResultsDelegate::CreateUObject(this, &AOculusXRSceneActor::ActiveRoomFloorDiscoveryResultsAvailable, RoomSpaceID, RoomLayout), - FOculusXRDiscoverAnchorsCompleteDelegate(), - anchorQueryResult); - - return anchorQueryResult; -} - -void AOculusXRSceneActor::ActiveRoomFloorDiscoveryResultsAvailable(const TArray& DiscoveryResults, FOculusXRUInt64 RoomSpaceID, FOculusXRRoomLayout RoomLayout) -{ - if (DiscoveryResults.Num() != 1) - { - UE_LOG(LogOculusXRScene, Error, TEXT("Wrong number of elements returned from discover anchors for floor UUID. Result count (%d), UUID (%s), Room Space ID (%llu)"), DiscoveryResults.Num(), *RoomLayout.FloorUuid.ToString(), RoomSpaceID.Value); - return; - } - - const FOculusXRAnchorsDiscoverResult& floorQueryResult = DiscoveryResults[0]; - if (!CheckFloorBounds(floorQueryResult.Space, floorQueryResult.UUID, RoomLayout.RoomAnchorHandle)) - { - UE_LOG(LogOculusXRScene, Verbose, TEXT("User is not within bounds of queried floor in room. UUID (%s), Room Space ID (%llu)"), *floorQueryResult.UUID.ToString(), RoomLayout.RoomAnchorHandle.GetValue()); - return; - } - - StartSingleRoomQuery(RoomSpaceID, RoomLayout); -} - -bool AOculusXRSceneActor::CheckFloorBounds(FOculusXRUInt64 AnchorHandle, FOculusXRUUID UUID, FOculusXRUInt64 RoomAnchorHandle) -{ - TArray semanticClassifications; - GetSemanticClassifications(AnchorHandle, semanticClassifications); - if (!semanticClassifications.Contains("FLOOR")) - { - UE_LOG(LogOculusXRScene, Error, TEXT("Queried floor in room doesn't contain a floor semantic label. UUID (%s), Room Space ID (%llu)"), *UUID.ToString(), RoomAnchorHandle.GetValue()); - return false; - } - - TArray boundaryVertices; - EOculusXRAnchorResult::Type getBoundaryResult = OculusXRScene::FOculusXRScene::GetBoundary2D(AnchorHandle, boundaryVertices); - if (!UOculusXRAnchorBPFunctionLibrary::IsAnchorResultSuccess(getBoundaryResult)) - { - UE_LOG(LogOculusXRScene, Error, TEXT("Failed to get space boundary vertices for floor. UUID (%s), Room Space ID (%llu)"), *UUID.ToString(), RoomAnchorHandle.GetValue()); - return false; - } - - FQuat HMDOrientation; - FVector HMDPosition; - GEngine->XRSystem->GetCurrentPose(IXRTrackingSystem::HMDDeviceId, HMDOrientation, HMDPosition); - - float scale = GEngine->XRSystem->GetWorldToMetersScale(); - - TArray convertedBoundaryPoints; - - FTransform floorTransform; - if (!UOculusXRAnchorBPFunctionLibrary::GetAnchorTransformByHandle(AnchorHandle, floorTransform)) - { - UE_LOG(LogOculusXRScene, Error, TEXT("Failed to get the floor anchor transform. Floor Space ID (%llu)"), AnchorHandle.GetValue()); - return false; - } - - // Convert the boundary vertices to game engine world space - for (auto& it : boundaryVertices) - { - FVector pos = floorTransform.TransformPosition(FVector(0, it.X * scale, it.Y * scale)); - convertedBoundaryPoints.Add(pos); - } - - // Create the new 2D boundary - TArray new2DBoundary; - for (auto& it : convertedBoundaryPoints) - { - new2DBoundary.Add(FVector2f(it.X, it.Y)); - } - - // Check if inside poly - if (!PointInPolygon2D(FVector2f(HMDPosition.X, HMDPosition.Y), new2DBoundary)) - { - UE_LOG(LogOculusXRScene, Verbose, TEXT("Floor failed active room check. UUID (%s), Room Space ID (%llu)"), *UUID.ToString(), RoomAnchorHandle.GetValue()); - return false; - } - - return true; -} - -bool AOculusXRSceneActor::PointInPolygon2D(FVector2f PointToTest, const TArray& PolyVerts) const -{ - if (PolyVerts.Num() < 3) - { - return false; - } - - int collision = 0; - float x = PointToTest.X; - float y = PointToTest.Y; - - int vertCount = PolyVerts.Num(); - for (int i = 0; i < vertCount; i++) - { - float x1 = PolyVerts[i].X; - float y1 = PolyVerts[i].Y; - - float x2 = PolyVerts[(i + 1) % vertCount].X; - float y2 = PolyVerts[(i + 1) % vertCount].Y; - - if (y < y1 != y < y2 && x < x1 + ((y - y1) / (y2 - y1)) * (x2 - x1)) - { - collision += (y1 < y2) ? 1 : -1; - } - } - - return collision != 0; -} - -void AOculusXRSceneActor::GetSemanticClassifications(uint64 Space, TArray& OutSemanticLabels) const -{ - EOculusXRAnchorResult::Type semanticLabelAnchorResult = OculusXRScene::FOculusXRScene::GetSemanticClassification(Space, OutSemanticLabels); - if (UOculusXRAnchorBPFunctionLibrary::IsAnchorResultSuccess(semanticLabelAnchorResult)) - { - UE_LOG(LogOculusXRScene, Verbose, TEXT("GetSemanticClassifications -- Space (%llu) Classifications:"), Space); - for (FString& label : OutSemanticLabels) - { - UE_LOG(LogOculusXRScene, Verbose, TEXT("%s"), *label); - } - } - else - { - UE_LOG(LogOculusXRScene, Error, TEXT("SpatialAnchorQueryResult_Handler Failed to get semantic classification space.")); - } -} - -// DELEGATE HANDLERS -void AOculusXRSceneActor::SceneCaptureComplete_Handler(FOculusXRUInt64 RequestId, bool bResult) -{ - if (!bResult) - { - UE_LOG(LogOculusXRScene, Error, TEXT("Scene Capture Complete failed!")); - return; - } - - // Mark that we already launched Capture Flow and try to query spatial anchors again - bCaptureFlowWasLaunched = true; - - ClearScene(); - PopulateScene(); -} - -void AOculusXRSceneActor::PostLoad() -{ - Super::PostLoad(); - - FOculusXRSpawnedSceneAnchorProperties desk; - if (ScenePlaneSpawnedSceneAnchorProperties.RemoveAndCopyValue(TEXT("DESK"), desk)) - { - UE_LOG(LogOculusXRScene, Log, TEXT("Running XR Scene Actor plane semantic lable migration: 'DESK' to 'TABLE'")); - ScenePlaneSpawnedSceneAnchorProperties[TEXT("TABLE")] = desk; - } - - if (SceneVolumeSpawnedSceneAnchorProperties.RemoveAndCopyValue(TEXT("DESK"), desk)) - { - UE_LOG(LogOculusXRScene, Log, TEXT("Running XR Scene Actor volume semantic lable migration: 'DESK' to 'TABLE'")); - SceneVolumeSpawnedSceneAnchorProperties[TEXT("TABLE")] = desk; - } -} - -#undef LOCTEXT_NAMESPACE diff --git a/Plugins/MetaXR/Source/OculusXRScene/Private/OculusXRSceneAnchorComponent.cpp b/Plugins/MetaXR/Source/OculusXRScene/Private/OculusXRSceneAnchorComponent.cpp deleted file mode 100644 index 137ce38..0000000 --- a/Plugins/MetaXR/Source/OculusXRScene/Private/OculusXRSceneAnchorComponent.cpp +++ /dev/null @@ -1,21 +0,0 @@ -// Copyright (c) Meta Platforms, Inc. and affiliates. - -#include "OculusXRSceneAnchorComponent.h" - -#include "Engine/StaticMeshActor.h" - -UOculusXRSceneAnchorComponent::UOculusXRSceneAnchorComponent(const FObjectInitializer& ObjectInitializer) - : Super(ObjectInitializer) -{ - bUpdateHeadSpaceTransform = false; -} - -void UOculusXRSceneAnchorComponent::TickComponent(float DeltaTime, enum ELevelTick TickType, FActorComponentTickFunction* ThisTickFunction) -{ - Super::TickComponent(DeltaTime, TickType, ThisTickFunction); - - if (GetHandle().Value == 0) - { - return; - } -} diff --git a/Plugins/MetaXR/Source/OculusXRScene/Private/OculusXRSceneComponents.cpp b/Plugins/MetaXR/Source/OculusXRScene/Private/OculusXRSceneComponents.cpp deleted file mode 100644 index ee81e79..0000000 --- a/Plugins/MetaXR/Source/OculusXRScene/Private/OculusXRSceneComponents.cpp +++ /dev/null @@ -1,59 +0,0 @@ -// Copyright (c) Meta Platforms, Inc. and affiliates. - -#include "OculusXRSceneComponents.h" -#include "OculusXRScene.h" -#include "OculusXRSceneModule.h" -#include "OculusXRAnchorBPFunctionLibrary.h" - -bool UOculusXRPlaneAnchorComponent::GetPositionAndSize(FVector& outPosition, FVector& outSize) const -{ - ensure(IsComponentEnabled()); - - if (!UOculusXRAnchorBPFunctionLibrary::IsAnchorResultSuccess(OculusXRScene::FOculusXRScene::GetScenePlane(Space, outPosition, outSize))) - { - UE_LOG(LogOculusXRScene, Warning, TEXT("Fetching scene plane failed.")); - return false; - } - - return true; -} - -bool UOculusXRVolumeAnchorComponent::GetPositionAndSize(FVector& outPosition, FVector& outSize) const -{ - ensure(IsComponentEnabled()); - - if (!UOculusXRAnchorBPFunctionLibrary::IsAnchorResultSuccess(OculusXRScene::FOculusXRScene::GetSceneVolume(Space, outPosition, outSize))) - { - UE_LOG(LogOculusXRScene, Warning, TEXT("Fetching scene plane failed.")); - return false; - } - - return true; -} - -bool UOculusXRSemanticClassificationAnchorComponent::GetSemanticClassifications(TArray& outClassifications) const -{ - ensure(IsComponentEnabled()); - - if (!UOculusXRAnchorBPFunctionLibrary::IsAnchorResultSuccess(OculusXRScene::FOculusXRScene::GetSemanticClassification(Space, outClassifications))) - { - UE_LOG(LogOculusXRScene, Warning, TEXT("Fetching scene volume failed.")); - return false; - } - - return true; -} - -bool UOculusXRRoomLayoutAnchorComponent::GetRoomLayout(FOculusXRUUID& outFloorUUID, FOculusXRUUID& outCeilingUUID, TArray& outWallsUUIDs) const -{ - ensure(IsComponentEnabled()); - - auto result = OculusXRScene::FOculusXRScene::GetRoomLayout(Space, 64, outCeilingUUID, outFloorUUID, outWallsUUIDs); - if (!UOculusXRAnchorBPFunctionLibrary::IsAnchorResultSuccess(result)) - { - UE_LOG(LogOculusXRScene, Warning, TEXT("Fetching room layout failed.")); - return false; - } - - return true; -} diff --git a/Plugins/MetaXR/Source/OculusXRScene/Private/OculusXRSceneDelegates.cpp b/Plugins/MetaXR/Source/OculusXRScene/Private/OculusXRSceneDelegates.cpp deleted file mode 100644 index b8293ef..0000000 --- a/Plugins/MetaXR/Source/OculusXRScene/Private/OculusXRSceneDelegates.cpp +++ /dev/null @@ -1,7 +0,0 @@ -// Copyright (c) Meta Platforms, Inc. and affiliates. - -#include "OculusXRSceneDelegates.h" - -FOculusXRSceneEventDelegates::FOculusXRBoundaryVisibilityChanged FOculusXRSceneEventDelegates::OculusBoundaryVisibilityChanged; - -FOculusXRSceneEventDelegates::FOculusXRSceneCaptureCompleteDelegate FOculusXRSceneEventDelegates::OculusSceneCaptureComplete; diff --git a/Plugins/MetaXR/Source/OculusXRScene/Private/OculusXRSceneEventHandling.cpp b/Plugins/MetaXR/Source/OculusXRScene/Private/OculusXRSceneEventHandling.cpp deleted file mode 100644 index c5c6363..0000000 --- a/Plugins/MetaXR/Source/OculusXRScene/Private/OculusXRSceneEventHandling.cpp +++ /dev/null @@ -1,83 +0,0 @@ -// Copyright (c) Meta Platforms, Inc. and affiliates. - -#include "OculusXRSceneEventHandling.h" - -#include "OculusXRHMD.h" -#include "IOculusXRSceneModule.h" -#include "OculusXRAnchorBPFunctionLibrary.h" -#include "OculusXRSceneDelegates.h" -#include "OculusXRSceneEventDelegates.h" -#include "OculusXRSceneModule.h" - -namespace OculusXRScene -{ - template - void GetEventData(ovrpEventDataBuffer& Buffer, T& OutEventData) - { - unsigned char* BufData = Buffer.EventData; - BufData -= sizeof(Buffer.EventType); // Offset buffer data to get to the actual event payload - - memcpy(&OutEventData, BufData, sizeof(T)); - } - - void FOculusXRSceneEventHandling::OnPollEvent(ovrpEventDataBuffer* EventDataBuffer, bool& EventPollResult) - { - ovrpEventDataBuffer& buf = *EventDataBuffer; - EventPollResult = true; - - switch (buf.EventType) - { - case ovrpEventType_SceneCaptureComplete: - { - ovrpEventSceneCaptureComplete sceneCaptureComplete; - unsigned char* bufData = buf.EventData; - - memcpy(&sceneCaptureComplete.requestId, bufData, sizeof(sceneCaptureComplete.requestId)); - bufData += sizeof(ovrpUInt64); // move forward - memcpy(&sceneCaptureComplete.result, bufData, sizeof(sceneCaptureComplete.result)); - - FOculusXRSceneEventDelegates::OculusSceneCaptureComplete.Broadcast(FOculusXRUInt64(sceneCaptureComplete.requestId), sceneCaptureComplete.result >= 0); - break; - } - case ovrpEventType_BoundaryVisibilityChanged: - { - ovrpEventDataBoundaryVisibilityChanged visibilityChangedEvent; - GetEventData(buf, visibilityChangedEvent); - - ovrpBoundaryVisibility newVisibility = visibilityChangedEvent.BoundaryVisibility; - EOculusXRBoundaryVisibility ueVisibility = EOculusXRBoundaryVisibility::Invalid; - switch (newVisibility) - { - case ovrpBoundaryVisibility_Suppressed: - ueVisibility = EOculusXRBoundaryVisibility::Suppressed; - break; - - case ovrpBoundaryVisibility_NotSuppressed: - ueVisibility = EOculusXRBoundaryVisibility::NotSuppressed; - break; - - default: - UE_LOG(LogOculusXRScene, Error, TEXT("Unknown ovrp boundary type in BoundaryVisibilityChanged event! Enum value(%d)"), newVisibility); - } - - UE_LOG(LogOculusXRScene, Log, TEXT("FOculusXRSceneEventHandling - Boundary visibility changed. Visibility(%s)"), *UEnum::GetValueAsString(ueVisibility)); - - FOculusXRSceneEventDelegates::OculusBoundaryVisibilityChanged.Broadcast(ueVisibility); - UOculusXRSceneEventDelegates* eventDelegates = GEngine->GetEngineSubsystem(); - if (eventDelegates != nullptr) - { - eventDelegates->OnBoundaryVisibilityChanged.Broadcast(ueVisibility); - } - - break; - } - - case ovrpEventType_None: - default: - { - EventPollResult = false; - break; - } - } - } -} // namespace OculusXRScene diff --git a/Plugins/MetaXR/Source/OculusXRScene/Private/OculusXRSceneEventHandling.h b/Plugins/MetaXR/Source/OculusXRScene/Private/OculusXRSceneEventHandling.h deleted file mode 100644 index 1b24e37..0000000 --- a/Plugins/MetaXR/Source/OculusXRScene/Private/OculusXRSceneEventHandling.h +++ /dev/null @@ -1,19 +0,0 @@ -/* -Copyright (c) Meta Platforms, Inc. and affiliates. -All rights reserved. - -This source code is licensed under the license found in the -LICENSE file in the root directory of this source tree. -*/ -#pragma once - -#include "CoreMinimal.h" -#include "OculusXRHMDPrivate.h" - -namespace OculusXRScene -{ - struct OCULUSXRSCENE_API FOculusXRSceneEventHandling - { - static void OnPollEvent(ovrpEventDataBuffer* EventDataBuffer, bool& EventPollResult); - }; -} // namespace OculusXRScene diff --git a/Plugins/MetaXR/Source/OculusXRScene/Private/OculusXRSceneFunctionLibrary.cpp b/Plugins/MetaXR/Source/OculusXRScene/Private/OculusXRSceneFunctionLibrary.cpp deleted file mode 100644 index d661134..0000000 --- a/Plugins/MetaXR/Source/OculusXRScene/Private/OculusXRSceneFunctionLibrary.cpp +++ /dev/null @@ -1,101 +0,0 @@ -// Copyright (c) Meta Platforms, Inc. and affiliates. - -#include "OculusXRSceneFunctionLibrary.h" - -#include "Engine/GameInstance.h" -#include "OculusXRAnchorBPFunctionLibrary.h" -#include "OculusXRScene.h" -#include "OculusXRSceneModule.h" -#include "OculusXRSceneSubsystem.h" -#include "OculusXRAnchors.h" -#include "OculusXRHMDPrivate.h" -#include "OculusXRHMD.h" - -bool UOculusXRSceneFunctionLibrary::GetBoundaryVisibility(const UObject* WorldContext, EOculusXRBoundaryVisibility& OutVisibility) -{ - OutVisibility = EOculusXRBoundaryVisibility::NotSuppressed; - - check(WorldContext); - check(WorldContext->GetWorld()); - - UOculusXRSceneSubsystem* subsystem = WorldContext->GetWorld()->GetGameInstance()->GetSubsystem(); - if (subsystem == nullptr) - { - return false; - } - - OutVisibility = subsystem->GetBoundaryVisibility(); - return true; -} - -bool UOculusXRSceneFunctionLibrary::GetRequestedBoundaryVisibility(const UObject* WorldContext, EOculusXRBoundaryVisibility& OutVisibility) -{ - OutVisibility = EOculusXRBoundaryVisibility::NotSuppressed; - - check(WorldContext); - check(WorldContext->GetWorld()); - - UOculusXRSceneSubsystem* subsystem = WorldContext->GetWorld()->GetGameInstance()->GetSubsystem(); - if (subsystem == nullptr) - { - return false; - } - - OutVisibility = subsystem->GetRequestedBoundaryVisibility(); - return true; -} - -bool UOculusXRSceneFunctionLibrary::RequestBoundaryVisibility(const UObject* WorldContext, EOculusXRBoundaryVisibility Visibility) -{ - check(WorldContext); - check(WorldContext->GetWorld()); - - UOculusXRSceneSubsystem* subsystem = WorldContext->GetWorld()->GetGameInstance()->GetSubsystem(); - if (subsystem == nullptr) - { - return false; - } - - subsystem->SetRequestedBoundaryVisibility(Visibility); - - return true; -} - -bool UOculusXRSceneFunctionLibrary::GetRoomLayout(FOculusXRUInt64 Space, FOculusXRRoomLayout& RoomLayoutOut, int32 MaxWallsCapacity) -{ - if (MaxWallsCapacity <= 0) - { - return false; - } - - FOculusXRUUID OutCeilingUuid; - FOculusXRUUID OutFloorUuid; - TArray OutWallsUuid; - - auto result = OculusXRScene::FOculusXRScene::GetRoomLayout(Space.Value, static_cast(MaxWallsCapacity), OutCeilingUuid, OutFloorUuid, OutWallsUuid); - auto bSuccess = UOculusXRAnchorBPFunctionLibrary::IsAnchorResultSuccess(result); - - if (bSuccess) - { - RoomLayoutOut.CeilingUuid = OutCeilingUuid; - RoomLayoutOut.FloorUuid = OutFloorUuid; - RoomLayoutOut.WallsUuid.InsertZeroed(0, OutWallsUuid.Num()); - - for (int32 i = 0; i < OutWallsUuid.Num(); ++i) - { - RoomLayoutOut.WallsUuid[i] = OutWallsUuid[i]; - } - - TArray spaceUUIDs; - EOculusXRAnchorResult::Type getContainerUUIDsResult; - OculusXRAnchors::FOculusXRAnchors::GetSpaceContainerUUIDs(Space, spaceUUIDs, getContainerUUIDsResult); - - if (UOculusXRAnchorBPFunctionLibrary::IsAnchorResultSuccess(getContainerUUIDsResult)) - { - RoomLayoutOut.RoomObjectUUIDs = spaceUUIDs; - } - } - - return bSuccess; -} - diff --git a/Plugins/MetaXR/Source/OculusXRScene/Private/OculusXRSceneFunctionsOVR.cpp b/Plugins/MetaXR/Source/OculusXRScene/Private/OculusXRSceneFunctionsOVR.cpp deleted file mode 100644 index 9cd2ba3..0000000 --- a/Plugins/MetaXR/Source/OculusXRScene/Private/OculusXRSceneFunctionsOVR.cpp +++ /dev/null @@ -1,282 +0,0 @@ -// Copyright (c) Meta Platforms, Inc. and affiliates. - -#include "OculusXRSceneFunctionsOVR.h" -#include "OculusXRSceneModule.h" -#include "OculusXRHMDPrivate.h" -#include "OculusXRHMD.h" -#include "OculusXRPluginWrapper.h" - -#define LOCTEXT_NAMESPACE "OculusXRScene" - -namespace OculusXRScene -{ - EOculusXRAnchorResult::Type FOculusXRSceneFunctionsOVR::GetScenePlane(uint64 AnchorHandle, FVector& OutPos, FVector& OutSize) - { - OutPos.X = OutPos.Y = OutPos.Z = 0.f; - OutSize.X = OutSize.Y = OutSize.Z = 0.f; - - ovrpRectf rect; - const ovrpResult Result = FOculusXRHMDModule::GetPluginWrapper().GetSpaceBoundingBox2D(&AnchorHandle, &rect); - - if (OVRP_SUCCESS(Result)) - { - // Convert to UE's coordinates system - OutPos.Y = rect.Pos.x; - OutPos.Z = rect.Pos.y; - OutSize.Y = rect.Size.w; - OutSize.Z = rect.Size.h; - } - - return static_cast(Result); - } - - EOculusXRAnchorResult::Type FOculusXRSceneFunctionsOVR::GetSceneVolume(uint64 AnchorHandle, FVector& OutPos, FVector& OutSize) - { - OutPos.X = OutPos.Y = OutPos.Z = 0.f; - OutSize.X = OutSize.Y = OutSize.Z = 0.f; - - ovrpBoundsf bounds; - const ovrpResult Result = FOculusXRHMDModule::GetPluginWrapper().GetSpaceBoundingBox3D(&AnchorHandle, &bounds); - - if (OVRP_SUCCESS(Result)) - { - // Convert from OpenXR's right-handed to Unreal's left-handed coordinate system. - // OpenXR Unreal - // | y | z - // | | - // z <----+ +----> x - // / / - // x/ y/ - // - OutPos.X = -bounds.Pos.z; - OutPos.Y = bounds.Pos.x; - OutPos.Z = bounds.Pos.y; - - // The position represents the corner of the volume which has the lowest value - // of each axis. Since we flipped the sign of one of the axes we need to adjust - // the position to the other side of the volume - OutPos.X -= bounds.Size.d; - - // We keep the size positive for all dimensions - OutSize.X = bounds.Size.d; - OutSize.Y = bounds.Size.w; - OutSize.Z = bounds.Size.h; - } - - return static_cast(Result); - } - - EOculusXRAnchorResult::Type FOculusXRSceneFunctionsOVR::GetSemanticClassification(uint64 AnchorHandle, TArray& OutSemanticClassifications) - { - OutSemanticClassifications.Empty(); - - const int32 maxByteSize = 1024; - char labelsChars[maxByteSize]; - - ovrpSemanticLabels labels; - labels.byteCapacityInput = maxByteSize; - labels.labels = labelsChars; - - const ovrpResult Result = FOculusXRHMDModule::GetPluginWrapper().GetSpaceSemanticLabels(&AnchorHandle, &labels); - - if (OVRP_SUCCESS(Result)) - { - FString labelsStr(labels.byteCountOutput, labels.labels); - labelsStr.ParseIntoArray(OutSemanticClassifications, TEXT(",")); - } - - return static_cast(Result); - } - - EOculusXRAnchorResult::Type FOculusXRSceneFunctionsOVR::GetBoundary2D(uint64 AnchorHandle, TArray& OutVertices) - { - TArray vertices; - - // Get the number of elements in the container - ovrpBoundary2D boundary; - boundary.vertexCapacityInput = 0; - boundary.vertexCountOutput = 0; - boundary.vertices = nullptr; - - ovrpResult result = FOculusXRHMDModule::GetPluginWrapper().GetSpaceBoundary2D(&AnchorHandle, &boundary); - if (OVRP_FAILURE(result)) - { - UE_LOG(LogOculusXRScene, Warning, TEXT("Failed to get space boundary 2d %d"), result); - return static_cast(result); - } - - // Retrieve the actual array of vertices - vertices.SetNum(boundary.vertexCountOutput); - boundary.vertexCapacityInput = boundary.vertexCountOutput; - boundary.vertices = vertices.GetData(); - - result = FOculusXRHMDModule::GetPluginWrapper().GetSpaceBoundary2D(&AnchorHandle, &boundary); - if (OVRP_FAILURE(result)) - { - UE_LOG(LogOculusXRScene, Warning, TEXT("Failed to get space boundary 2d %d"), result); - return static_cast(result); - } - - // Write out the vertices - OutVertices.Reserve(vertices.Num()); - for (const auto& it : vertices) - { - OutVertices.Add(FVector2f(it.x, it.y)); - } - - return EOculusXRAnchorResult::Success; - } - - EOculusXRAnchorResult::Type FOculusXRSceneFunctionsOVR::RequestSceneCapture(uint64& OutRequestID) - { - OutRequestID = 0; - - ovrpSceneCaptureRequest sceneCaptureRequest; - sceneCaptureRequest.request = nullptr; - sceneCaptureRequest.requestByteCount = 0; - - ovrpResult result = FOculusXRHMDModule::GetPluginWrapper().RequestSceneCapture(&sceneCaptureRequest, &OutRequestID); - - return static_cast(result); - } - - EOculusXRAnchorResult::Type FOculusXRSceneFunctionsOVR::GetRoomLayout(uint64 AnchorHandle, const uint32 MaxWallsCapacity, FOculusXRUUID& OutCeilingUuid, FOculusXRUUID& OutFloorUuid, TArray& OutWallsUuid) - { - ovrpRoomLayout roomLayout; - roomLayout.wallUuidCapacityInput = 0; - roomLayout.wallUuidCountOutput = 0; - - // First call to get output size - ovrpResult firstCallResult = FOculusXRHMDModule::GetPluginWrapper().GetSpaceRoomLayout(&AnchorHandle, &roomLayout); - if (OVRP_FAILURE(firstCallResult)) - { - return static_cast(firstCallResult); - } - - // Set the input size and pointer to the uuid array - TArray uuids; - uuids.InsertZeroed(0, roomLayout.wallUuidCountOutput); - - roomLayout.wallUuidCapacityInput = roomLayout.wallUuidCountOutput; - roomLayout.wallUuids = uuids.GetData(); - - ovrpResult secondCallResult = FOculusXRHMDModule::GetPluginWrapper().GetSpaceRoomLayout(&AnchorHandle, &roomLayout); - if (OVRP_FAILURE(secondCallResult)) - { - return static_cast(secondCallResult); - } - - OutCeilingUuid = FOculusXRUUID(roomLayout.ceilingUuid.data); - OutFloorUuid = FOculusXRUUID(roomLayout.floorUuid.data); - - OutWallsUuid.Empty(); - OutWallsUuid.InsertZeroed(0, uuids.Num()); - - for (int32 i = 0; i < uuids.Num(); ++i) - { - OutWallsUuid[i] = FOculusXRUUID(roomLayout.wallUuids[i].data); - } - - return static_cast(secondCallResult); - } - - EOculusXRAnchorResult::Type FOculusXRSceneFunctionsOVR::GetTriangleMesh(uint64 AnchorHandle, TArray& Vertices, TArray& Triangles) - { - ovrpTriangleMesh OVRPMesh = { 0, 0, nullptr, 0, 0, nullptr }; - - ovrpResult countResult = FOculusXRHMDModule::GetPluginWrapper().GetSpaceTriangleMesh(&AnchorHandle, &OVRPMesh); - if (OVRP_FAILURE(countResult)) - { - UE_LOG(LogOculusXRScene, Warning, TEXT("Failed to load TriangleMesh info - Space: %llu - Result: %d"), AnchorHandle, countResult); - return static_cast(countResult); - } - OVRPMesh.indexCapacityInput = OVRPMesh.indexCountOutput; - OVRPMesh.vertexCapacityInput = OVRPMesh.vertexCountOutput; - - TArray OVRPVertices; - OVRPVertices.SetNum(OVRPMesh.vertexCapacityInput); - OVRPMesh.vertices = OVRPVertices.GetData(); - Triangles.SetNum(OVRPMesh.indexCapacityInput); - check(sizeof(TRemoveReference::Type::ElementType) == sizeof(TRemovePointer::Type)); - OVRPMesh.indices = Triangles.GetData(); - - const ovrpResult meshResult = FOculusXRHMDModule::GetPluginWrapper().GetSpaceTriangleMesh(&AnchorHandle, &OVRPMesh); - if (OVRP_FAILURE(meshResult)) - { - UE_LOG(LogOculusXRScene, Warning, TEXT("Failed to load TriangleMesh data - AnchorHandle: %llu - Result: %d"), AnchorHandle, meshResult); - return static_cast(meshResult); - } - - UE_LOG(LogOculusXRScene, Verbose, TEXT("Loaded TriangleMesh data - AnchorHandle: %llu - Vertices: %d - Faces: %d"), - AnchorHandle, OVRPMesh.vertexCapacityInput, OVRPMesh.indexCapacityInput); - - Vertices.Empty(OVRPVertices.Num()); - Algo::Transform(OVRPVertices, Vertices, [](const auto& Vertex) { return OculusXRHMD::ToFVector(Vertex); }); - - return static_cast(meshResult); - } - - // Requests to change the current boundary visibility - EOculusXRAnchorResult::Type FOculusXRSceneFunctionsOVR::RequestBoundaryVisibility(EOculusXRBoundaryVisibility NewVisibilityRequest) - { - ovrpBoundaryVisibility visibility = ovrpBoundaryVisibility_NotSuppressed; - - switch (NewVisibilityRequest) - { - case EOculusXRBoundaryVisibility::Suppressed: - visibility = ovrpBoundaryVisibility_Suppressed; - break; - case EOculusXRBoundaryVisibility::NotSuppressed: - visibility = ovrpBoundaryVisibility_NotSuppressed; - break; - default: - UE_LOG(LogOculusXRScene, Error, TEXT("RequestBoundaryVisibility -- Unknown boundary visibility value! (%d)"), static_cast(NewVisibilityRequest)); - return EOculusXRAnchorResult::Failure_InvalidParameter; - } - - UE_LOG(LogOculusXRScene, Log, TEXT("RequestBoundaryVisibility -- New Visibility Requested (%s)"), *UEnum::GetValueAsString(NewVisibilityRequest)); - - auto result = FOculusXRHMDModule::GetPluginWrapper().RequestBoundaryVisibility(visibility); - auto castedResult = static_cast(result); - - if (!OVRP_SUCCESS(result)) - { - UE_LOG(LogOculusXRScene, Error, TEXT("RequestBoundaryVisibility failed -- Result(%s)"), *UEnum::GetValueAsString(castedResult)); - } - - return castedResult; - } - - EOculusXRAnchorResult::Type FOculusXRSceneFunctionsOVR::GetBoundaryVisibility(EOculusXRBoundaryVisibility& OutVisibility) - { - ovrpBoundaryVisibility visibility = {}; - auto result = FOculusXRHMDModule::GetPluginWrapper().GetBoundaryVisibility(&visibility); - auto castedResult = static_cast(result); - - if (OVRP_SUCCESS(result)) - { - switch (visibility) - { - case ovrpBoundaryVisibility_Suppressed: - OutVisibility = EOculusXRBoundaryVisibility::Suppressed; - break; - case ovrpBoundaryVisibility_NotSuppressed: - OutVisibility = EOculusXRBoundaryVisibility::NotSuppressed; - break; - default: - OutVisibility = EOculusXRBoundaryVisibility::Invalid; - UE_LOG(LogOculusXRScene, Error, TEXT("GetBoundaryVisibility -- Unknown boundary visibility value! Value(%d)"), visibility); - break; - } - } - else - { - UE_LOG(LogOculusXRScene, Warning, TEXT("GetBoundaryVisibility -- Failed to get boundary visibility. Result(%s)"), *UEnum::GetValueAsString(castedResult)); - } - - return castedResult; - } - -} // namespace OculusXRScene - -#undef LOCTEXT_NAMESPACE diff --git a/Plugins/MetaXR/Source/OculusXRScene/Private/OculusXRSceneFunctionsOVR.h b/Plugins/MetaXR/Source/OculusXRScene/Private/OculusXRSceneFunctionsOVR.h deleted file mode 100644 index 7364aeb..0000000 --- a/Plugins/MetaXR/Source/OculusXRScene/Private/OculusXRSceneFunctionsOVR.h +++ /dev/null @@ -1,27 +0,0 @@ -// Copyright (c) Meta Platforms, Inc. and affiliates. - -#pragma once - -#include "OculusXRSceneFunctions.h" - -namespace OculusXRScene -{ - struct OCULUSXRSCENE_API FOculusXRSceneFunctionsOVR : public IOculusXRSceneFunctions - { - virtual EOculusXRAnchorResult::Type GetScenePlane(uint64 AnchorHandle, FVector& OutPos, FVector& OutSize) override; - virtual EOculusXRAnchorResult::Type GetSceneVolume(uint64 AnchorHandle, FVector& OutPos, FVector& OutSize) override; - virtual EOculusXRAnchorResult::Type GetSemanticClassification(uint64 AnchorHandle, TArray& OutSemanticClassifications) override; - virtual EOculusXRAnchorResult::Type GetBoundary2D(uint64 AnchorHandle, TArray& OutVertices) override; - - virtual EOculusXRAnchorResult::Type RequestSceneCapture(uint64& OutRequestID) override; - virtual EOculusXRAnchorResult::Type GetRoomLayout(uint64 AnchorHandle, const uint32 MaxWallsCapacity, FOculusXRUUID& OutCeilingUuid, FOculusXRUUID& OutFloorUuid, TArray& OutWallsUuid) override; - virtual EOculusXRAnchorResult::Type GetTriangleMesh(uint64 AnchorHandle, TArray& Vertices, TArray& Triangles) override; - - // Requests to change the current boundary visibility - virtual EOculusXRAnchorResult::Type RequestBoundaryVisibility(EOculusXRBoundaryVisibility NewVisibilityRequest) override; - - // Gets the current boundary visibility - virtual EOculusXRAnchorResult::Type GetBoundaryVisibility(EOculusXRBoundaryVisibility& OutVisibility) override; - - }; -} // namespace OculusXRScene diff --git a/Plugins/MetaXR/Source/OculusXRScene/Private/OculusXRSceneFunctionsOpenXR.cpp b/Plugins/MetaXR/Source/OculusXRScene/Private/OculusXRSceneFunctionsOpenXR.cpp deleted file mode 100644 index a790942..0000000 --- a/Plugins/MetaXR/Source/OculusXRScene/Private/OculusXRSceneFunctionsOpenXR.cpp +++ /dev/null @@ -1,71 +0,0 @@ -// Copyright (c) Meta Platforms, Inc. and affiliates. - -#include "OculusXRSceneFunctionsOpenXR.h" -#include "OculusXRSceneModule.h" -#include "OculusXRHMDPrivate.h" -#include "OculusXRHMD.h" -#include "OculusXRPluginWrapper.h" -#include "OculusXRAnchorsUtil.h" - -#define LOCTEXT_NAMESPACE "OculusXRScene" - -namespace OculusXRScene -{ - EOculusXRAnchorResult::Type FOculusXRSceneFunctionsOpenXR::GetScenePlane(uint64 AnchorHandle, FVector& OutPos, FVector& OutSize) - { - auto result = FOculusXRSceneModule::Get().GetXrScene()->GetScenePlane(AnchorHandle, OutPos, OutSize); - return OculusXRAnchors::GetResultFromXrResult(result); - } - - EOculusXRAnchorResult::Type FOculusXRSceneFunctionsOpenXR::GetSceneVolume(uint64 AnchorHandle, FVector& OutPos, FVector& OutSize) - { - auto result = FOculusXRSceneModule::Get().GetXrScene()->GetSceneVolume(AnchorHandle, OutPos, OutSize); - return OculusXRAnchors::GetResultFromXrResult(result); - } - - EOculusXRAnchorResult::Type FOculusXRSceneFunctionsOpenXR::GetSemanticClassification(uint64 AnchorHandle, TArray& OutSemanticClassifications) - { - auto result = FOculusXRSceneModule::Get().GetXrScene()->GetSemanticClassification(AnchorHandle, OutSemanticClassifications); - return OculusXRAnchors::GetResultFromXrResult(result); - } - - EOculusXRAnchorResult::Type FOculusXRSceneFunctionsOpenXR::GetBoundary2D(uint64 AnchorHandle, TArray& OutVertices) - { - auto result = FOculusXRSceneModule::Get().GetXrScene()->GetBoundary2D(AnchorHandle, OutVertices); - return OculusXRAnchors::GetResultFromXrResult(result); - } - - EOculusXRAnchorResult::Type FOculusXRSceneFunctionsOpenXR::RequestSceneCapture(uint64& OutRequestID) - { - auto result = FOculusXRSceneModule::Get().GetXrScene()->RequestSceneCapture(OutRequestID); - return OculusXRAnchors::GetResultFromXrResult(result); - } - - EOculusXRAnchorResult::Type FOculusXRSceneFunctionsOpenXR::GetRoomLayout(uint64 AnchorHandle, const uint32 MaxWallsCapacity, FOculusXRUUID& OutCeilingUuid, FOculusXRUUID& OutFloorUuid, TArray& OutWallsUuid) - { - auto result = FOculusXRSceneModule::Get().GetXrScene()->GetRoomLayout(AnchorHandle, MaxWallsCapacity, OutCeilingUuid, OutFloorUuid, OutWallsUuid); - return OculusXRAnchors::GetResultFromXrResult(result); - } - - EOculusXRAnchorResult::Type FOculusXRSceneFunctionsOpenXR::GetTriangleMesh(uint64 AnchorHandle, TArray& Vertices, TArray& Triangles) - { - auto result = FOculusXRSceneModule::Get().GetXrScene()->GetTriangleMesh(AnchorHandle, Vertices, Triangles); - return OculusXRAnchors::GetResultFromXrResult(result); - } - - // Requests to change the current boundary visibility - EOculusXRAnchorResult::Type FOculusXRSceneFunctionsOpenXR::RequestBoundaryVisibility(EOculusXRBoundaryVisibility NewVisibilityRequest) - { - auto result = FOculusXRSceneModule::Get().GetXrScene()->RequestBoundaryVisibility(NewVisibilityRequest); - return OculusXRAnchors::GetResultFromXrResult(result); - } - - EOculusXRAnchorResult::Type FOculusXRSceneFunctionsOpenXR::GetBoundaryVisibility(EOculusXRBoundaryVisibility& OutVisibility) - { - auto result = FOculusXRSceneModule::Get().GetXrScene()->GetBoundaryVisibility(OutVisibility); - return OculusXRAnchors::GetResultFromXrResult(result); - } - -} // namespace OculusXRScene - -#undef LOCTEXT_NAMESPACE diff --git a/Plugins/MetaXR/Source/OculusXRScene/Private/OculusXRSceneFunctionsOpenXR.h b/Plugins/MetaXR/Source/OculusXRScene/Private/OculusXRSceneFunctionsOpenXR.h deleted file mode 100644 index bfb9672..0000000 --- a/Plugins/MetaXR/Source/OculusXRScene/Private/OculusXRSceneFunctionsOpenXR.h +++ /dev/null @@ -1,27 +0,0 @@ -// Copyright (c) Meta Platforms, Inc. and affiliates. - -#pragma once - -#include "OculusXRSceneFunctions.h" - -namespace OculusXRScene -{ - struct OCULUSXRSCENE_API FOculusXRSceneFunctionsOpenXR : public IOculusXRSceneFunctions - { - virtual EOculusXRAnchorResult::Type GetScenePlane(uint64 AnchorHandle, FVector& OutPos, FVector& OutSize) override; - virtual EOculusXRAnchorResult::Type GetSceneVolume(uint64 AnchorHandle, FVector& OutPos, FVector& OutSize) override; - virtual EOculusXRAnchorResult::Type GetSemanticClassification(uint64 AnchorHandle, TArray& OutSemanticClassifications) override; - virtual EOculusXRAnchorResult::Type GetBoundary2D(uint64 AnchorHandle, TArray& OutVertices) override; - - virtual EOculusXRAnchorResult::Type RequestSceneCapture(uint64& OutRequestID) override; - virtual EOculusXRAnchorResult::Type GetRoomLayout(uint64 AnchorHandle, const uint32 MaxWallsCapacity, FOculusXRUUID& OutCeilingUuid, FOculusXRUUID& OutFloorUuid, TArray& OutWallsUuid) override; - virtual EOculusXRAnchorResult::Type GetTriangleMesh(uint64 AnchorHandle, TArray& Vertices, TArray& Triangles) override; - - // Requests to change the current boundary visibility - virtual EOculusXRAnchorResult::Type RequestBoundaryVisibility(EOculusXRBoundaryVisibility NewVisibilityRequest) override; - - // Gets the current boundary visibility - virtual EOculusXRAnchorResult::Type GetBoundaryVisibility(EOculusXRBoundaryVisibility& OutVisibility) override; - - }; -} // namespace OculusXRScene diff --git a/Plugins/MetaXR/Source/OculusXRScene/Private/OculusXRSceneGlobalMeshComponent.cpp b/Plugins/MetaXR/Source/OculusXRScene/Private/OculusXRSceneGlobalMeshComponent.cpp deleted file mode 100644 index 93e9034..0000000 --- a/Plugins/MetaXR/Source/OculusXRScene/Private/OculusXRSceneGlobalMeshComponent.cpp +++ /dev/null @@ -1,67 +0,0 @@ -// Copyright (c) Meta Platforms, Inc. and affiliates. - -#include "OculusXRSceneGlobalMeshComponent.h" -#include "OculusXRSceneModule.h" -#include "OculusXRRoomLayoutManagerComponent.h" -#include "ProceduralMeshComponent.h" -#include "Engine/World.h" -#include "GameFramework/WorldSettings.h" -#include "Materials/MaterialInterface.h" - -const FString UOculusXRSceneGlobalMeshComponent::GlobalMeshSemanticLabel = TEXT("GLOBAL_MESH"); - -UOculusXRSceneGlobalMeshComponent::UOculusXRSceneGlobalMeshComponent(const FObjectInitializer& ObjectInitializer) - : Super(ObjectInitializer) -{ -} - -void UOculusXRSceneGlobalMeshComponent::TickComponent(float DeltaTime, enum ELevelTick TickType, FActorComponentTickFunction* ThisTickFunction) -{ - Super::TickComponent(DeltaTime, TickType, ThisTickFunction); -} - -bool UOculusXRSceneGlobalMeshComponent::HasCollision() const -{ - return Collision; -} - -bool UOculusXRSceneGlobalMeshComponent::IsVisible() const -{ - return Visible; -} - -UClass* UOculusXRSceneGlobalMeshComponent::GetAnchorComponentClass() const -{ - UClass* sceneAnchorComponentInstanceClass = SceneAnchorComponent ? SceneAnchorComponent.LoadSynchronous() : nullptr; - return sceneAnchorComponentInstanceClass; -} - -void UOculusXRSceneGlobalMeshComponent::CreateMeshComponent(const FOculusXRUInt64& Space, AActor* GlobalMeshAnchor, const UOculusXRRoomLayoutManagerComponent* RoomLayoutManagerComponent) const -{ - bool hasCollision = HasCollision(); - UProceduralMeshComponent* proceduralMeshComponent = NewObject(GlobalMeshAnchor); - proceduralMeshComponent->RegisterComponent(); - - bool bLoaded = RoomLayoutManagerComponent->LoadTriangleMesh(Space.Value, proceduralMeshComponent, hasCollision); - ensure(bLoaded); - UMaterialInterface* refMaterial = Material; - if (refMaterial != nullptr) - { - UE_LOG(LogOculusXRScene, Verbose, TEXT("GLOBAL MESH Set Material %s"), *refMaterial->GetName()); - proceduralMeshComponent->SetMaterial(0, refMaterial); - } - if (hasCollision) - { - FName refCollisionProfile = CollisionProfileName.Name; - proceduralMeshComponent->SetCollisionProfileName(refCollisionProfile); - UE_LOG(LogOculusXRScene, Verbose, TEXT("GLOBAL MESH Set Collision Profile %s"), *refCollisionProfile.ToString()); - } - GlobalMeshAnchor->AddOwnedComponent(proceduralMeshComponent); - proceduralMeshComponent->AttachToComponent(GlobalMeshAnchor->GetRootComponent(), FAttachmentTransformRules::KeepWorldTransform); - proceduralMeshComponent->SetRelativeLocation(FVector::ZeroVector, false, nullptr, ETeleportType::ResetPhysics); - - proceduralMeshComponent->SetVisibility(IsVisible()); - - const float worldToMeters = GetWorld()->GetWorldSettings()->WorldToMeters; - proceduralMeshComponent->SetRelativeScale3D(FVector(worldToMeters, worldToMeters, worldToMeters)); -} diff --git a/Plugins/MetaXR/Source/OculusXRScene/Private/OculusXRSceneLatentActions.cpp b/Plugins/MetaXR/Source/OculusXRScene/Private/OculusXRSceneLatentActions.cpp deleted file mode 100644 index ef6f123..0000000 --- a/Plugins/MetaXR/Source/OculusXRScene/Private/OculusXRSceneLatentActions.cpp +++ /dev/null @@ -1,46 +0,0 @@ -// Copyright (c) Meta Platforms, Inc. and affiliates. - -#include "OculusXRSceneLatentActions.h" -#include "OculusXRHMD.h" -#include "OculusXRAnchorBPFunctionLibrary.h" -#include "OculusXRSceneModule.h" -#include "OculusXRSceneDelegates.h" -#include "OculusXRScene.h" - -UOculusXRAsyncAction_LaunchCaptureFlow* UOculusXRAsyncAction_LaunchCaptureFlow::LaunchCaptureFlowAsync(const UObject* WorldContext) -{ - UWorld* World = GEngine->GetWorldFromContextObject(WorldContext, EGetWorldErrorMode::ReturnNull); - if (!ensureAlwaysMsgf(IsValid(WorldContext), TEXT("World Context was not valid."))) - { - return nullptr; - } - - auto NewAction = NewObject(); - NewAction->RegisterWithGameInstance(World->GetGameInstance()); - return NewAction; -} - -void UOculusXRAsyncAction_LaunchCaptureFlow::Activate() -{ - RequestId = 0; - FOculusXRSceneEventDelegates::OculusSceneCaptureComplete.AddUObject(this, &UOculusXRAsyncAction_LaunchCaptureFlow::OnCaptureFinish); - auto result = OculusXRScene::FOculusXRScene::RequestSceneCapture(RequestId); - if (!UOculusXRAnchorBPFunctionLibrary::IsAnchorResultSuccess(result)) - { - FOculusXRSceneEventDelegates::OculusSceneCaptureComplete.RemoveAll(this); - Failure.Broadcast(); - } -} - -void UOculusXRAsyncAction_LaunchCaptureFlow::OnCaptureFinish(FOculusXRUInt64 Id, bool bSuccess) -{ - if (RequestId != Id.GetValue()) - { - UE_LOG(LogOculusXRScene, Verbose, TEXT("Incoming request id (%llu) doesn't match expected request id (%llu). Ignoring request."), Id.GetValue(), RequestId); - return; - } - - FOculusXRSceneEventDelegates::OculusSceneCaptureComplete.RemoveAll(this); - Success.Broadcast(); - SetReadyToDestroy(); -} diff --git a/Plugins/MetaXR/Source/OculusXRScene/Private/OculusXRSceneModule.cpp b/Plugins/MetaXR/Source/OculusXRScene/Private/OculusXRSceneModule.cpp deleted file mode 100644 index 28cad73..0000000 --- a/Plugins/MetaXR/Source/OculusXRScene/Private/OculusXRSceneModule.cpp +++ /dev/null @@ -1,82 +0,0 @@ -// @lint-ignore-every LICENSELINT -// Copyright Epic Games, Inc. All Rights Reserved. - -#include "OculusXRSceneModule.h" - -#if OCULUS_SCENE_SUPPORTED_PLATFORMS -#include "OculusXRHMDModule.h" - -#include "OculusXRHMD.h" -#include "OculusXRSceneEventHandling.h" -#include "OculusXRSceneComponents.h" - -DEFINE_LOG_CATEGORY(LogOculusXRScene); - -#define LOCTEXT_NAMESPACE "OculusXRScene" - -//------------------------------------------------------------------------------------------------- -// FOculusXRSceneModule -//------------------------------------------------------------------------------------------------- -void FOculusXRSceneModule::StartupModule() -{ - SceneXR = MakeShareable(new XRScene::FSceneXR()); - SceneXR->RegisterAsOpenXRExtension(); - - FCoreDelegates::OnPostEngineInit.AddRaw(this, &FOculusXRSceneModule::OnPostEngineInit); - - auto anchorsModule = FModuleManager::GetModulePtr("OculusXRAnchors"); - anchorsModule->AddCreateAnchorComponentInterface(this); -} - -void FOculusXRSceneModule::ShutdownModule() -{ - auto anchorsModule = FModuleManager::GetModulePtr("OculusXRAnchors"); - anchorsModule->RemoveCreateAnchorComponentInterface(this); -} - -void FOculusXRSceneModule::OnPostEngineInit() -{ - if (IsRunningCommandlet()) - { - return; - } - - if (!GEngine) - { - return; - } - - OculusXRHMD::FOculusXRHMD* HMD = OculusXRHMD::FOculusXRHMD::GetOculusXRHMD(); - if (!HMD) - { - UE_LOG(LogOculusXRScene, Warning, TEXT("Unable to retrieve OculusXRHMD, cannot add event polling delegates.")); - return; - } - - HMD->AddEventPollingDelegate(OculusXRHMD::FOculusXRHMDEventPollingDelegate::CreateStatic(&OculusXRScene::FOculusXRSceneEventHandling::OnPollEvent)); -} - -UOculusXRBaseAnchorComponent* FOculusXRSceneModule::TryCreateAnchorComponent(uint64 AnchorHandle, EOculusXRSpaceComponentType Type, UObject* Outer) -{ - switch (Type) - { - case EOculusXRSpaceComponentType::ScenePlane: - return UOculusXRBaseAnchorComponent::FromSpace(AnchorHandle, Outer); - case EOculusXRSpaceComponentType::SceneVolume: - return UOculusXRBaseAnchorComponent::FromSpace(AnchorHandle, Outer); - case EOculusXRSpaceComponentType::SemanticClassification: - return UOculusXRBaseAnchorComponent::FromSpace(AnchorHandle, Outer); - case EOculusXRSpaceComponentType::RoomLayout: - return UOculusXRBaseAnchorComponent::FromSpace(AnchorHandle, Outer); - case EOculusXRSpaceComponentType::TriangleMesh: - return UOculusXRBaseAnchorComponent::FromSpace(AnchorHandle, Outer); - default: - return nullptr; - } -} - -#endif // OCULUS_SCENE_SUPPORTED_PLATFORMS - -IMPLEMENT_MODULE(FOculusXRSceneModule, OculusXRScene) - -#undef LOCTEXT_NAMESPACE diff --git a/Plugins/MetaXR/Source/OculusXRScene/Private/OculusXRSceneModule.h b/Plugins/MetaXR/Source/OculusXRScene/Private/OculusXRSceneModule.h deleted file mode 100644 index a9dbb6e..0000000 --- a/Plugins/MetaXR/Source/OculusXRScene/Private/OculusXRSceneModule.h +++ /dev/null @@ -1,54 +0,0 @@ -// @lint-ignore-every LICENSELINT -// Copyright Epic Games, Inc. All Rights Reserved. - -#pragma once -#include "IOculusXRSceneModule.h" -#include "OculusXRAnchorsModule.h" -#include "openxr/OculusXRSceneXR.h" - -#define LOCTEXT_NAMESPACE "OculusXRScene" - -//------------------------------------------------------------------------------------------------- -// FOculusXRSceneModule -//------------------------------------------------------------------------------------------------- - -DECLARE_LOG_CATEGORY_EXTERN(LogOculusXRScene, Log, All); - -typedef TSharedPtr FSceneXRPtr; - -#if OCULUS_SCENE_SUPPORTED_PLATFORMS - -class FOculusXRSceneModule : public IOculusXRSceneModule, public IOculusXRCreateAnchorComponent -{ -public: - static inline FOculusXRSceneModule& Get() - { - return FModuleManager::LoadModuleChecked("OculusXRScene"); - } - - virtual ~FOculusXRSceneModule() = default; - - // IModuleInterface interface - virtual void StartupModule() override; - virtual void ShutdownModule() override; - - void OnPostEngineInit(); - - // IOculusXRCreateAnchorComponent - virtual UOculusXRBaseAnchorComponent* TryCreateAnchorComponent(uint64 AnchorHandle, EOculusXRSpaceComponentType Type, UObject* Outer) override; - - FSceneXRPtr GetXrScene() { return SceneXR; } - -private: - FSceneXRPtr SceneXR; -}; - -#else // OCULUS_SCENE_SUPPORTED_PLATFORMS - -class FOculusXRSceneModule : public FDefaultModuleImpl -{ -}; - -#endif // OCULUS_SCENE_SUPPORTED_PLATFORMS - -#undef LOCTEXT_NAMESPACE diff --git a/Plugins/MetaXR/Source/OculusXRScene/Private/OculusXRSceneSubsystem.cpp b/Plugins/MetaXR/Source/OculusXRScene/Private/OculusXRSceneSubsystem.cpp deleted file mode 100644 index aecfd2b..0000000 --- a/Plugins/MetaXR/Source/OculusXRScene/Private/OculusXRSceneSubsystem.cpp +++ /dev/null @@ -1,117 +0,0 @@ -// Copyright (c) Meta Platforms, Inc. and affiliates. - -#include "OculusXRSceneSubsystem.h" -#include "OculusXRSceneTypes.h" -#include "OculusXRScene.h" -#include "IOculusXRSceneModule.h" -#include "OculusXRSceneDelegates.h" -#include "OculusXRAnchorBPFunctionLibrary.h" -#include "OculusXRHMD.h" -#include "OculusXRHMDRuntimeSettings.h" -#include "OculusXRSceneModule.h" -#include "OculusXRPassthroughModule.h" -#include "OculusXRPassthroughXR.h" - -UOculusXRSceneSubsystem::UOculusXRSceneSubsystem() - : requestedVisibilityState_(EOculusXRBoundaryVisibility::NotSuppressed) - , bInitialized(false) -{ -} - -bool UOculusXRSceneSubsystem::ShouldCreateSubsystem(UObject* Outer) const -{ - return GetDefault()->bBoundaryVisibilitySupportEnabled && GetDefault()->bInsightPassthroughEnabled; -} - -void UOculusXRSceneSubsystem::Initialize(FSubsystemCollectionBase& Collection) -{ - bool enabled = GetDefault()->bBoundaryVisibilitySupportEnabled; - bool suppressed = GetDefault()->bDefaultBoundaryVisibilitySuppressed; - - // This is the desired state - bool isBoundaryNotSuppressed = enabled && !suppressed; - requestedVisibilityState_ = isBoundaryNotSuppressed ? EOculusXRBoundaryVisibility::NotSuppressed : EOculusXRBoundaryVisibility::Suppressed; - visChangedEventHandle_ = FOculusXRSceneEventDelegates::OculusBoundaryVisibilityChanged.AddUObject(this, &UOculusXRSceneSubsystem::OnBoundaryVisibilityChanged); - - bInitialized = true; -} - -void UOculusXRSceneSubsystem::Deinitialize() -{ - FOculusXRSceneEventDelegates::OculusBoundaryVisibilityChanged.Remove(visChangedEventHandle_); - bInitialized = false; -} - -ETickableTickType UOculusXRSceneSubsystem::GetTickableTickType() const -{ - return IsTemplate() ? ETickableTickType::Never : FTickableGameObject::GetTickableTickType(); -} - -bool UOculusXRSceneSubsystem::IsAllowedToTick() const -{ - return !IsTemplate() && bInitialized; -} - -void UOculusXRSceneSubsystem::Tick(float DeltaTime) -{ - UpdateBoundary(); -} - -EOculusXRBoundaryVisibility UOculusXRSceneSubsystem::GetBoundaryVisibility() -{ - EOculusXRBoundaryVisibility boundaryVisibility = {}; - OculusXRScene::FOculusXRScene::GetBoundaryVisibility(boundaryVisibility); - return boundaryVisibility; -} - -EOculusXRBoundaryVisibility UOculusXRSceneSubsystem::GetRequestedBoundaryVisibility() -{ - return requestedVisibilityState_; -} - -void UOculusXRSceneSubsystem::SetRequestedBoundaryVisibility(EOculusXRBoundaryVisibility Visibility) -{ - requestedVisibilityState_ = Visibility; -} - -void UOculusXRSceneSubsystem::OnBoundaryVisibilityChanged(EOculusXRBoundaryVisibility visibility) -{ - // Do nothing on event -} - -void UOculusXRSceneSubsystem::UpdateBoundary() -{ - // If the state is the same, skip - auto currentVisibilityState = GetBoundaryVisibility(); - if (currentVisibilityState == requestedVisibilityState_) - { - return; - } - - // Log only if the value != the requested state, else we pollute the log (per-frame call) - UE_LOG(LogOculusXRScene, Log, TEXT("GetBoundaryVisibility -- Visibility(%s)"), *UEnum::GetValueAsString(currentVisibilityState)); - - // TODO: This should probably be part of the passthrough API - const FName SystemName(TEXT("OpenXR")); - const bool IsOpenXR = GEngine->XRSystem.IsValid() && (GEngine->XRSystem->GetSystemName() == SystemName); - if (OculusXRHMD::FOculusXRHMD::GetOculusXRHMD() != nullptr) - { - // If passthrough is not enabled or initialized, skip - auto result = FOculusXRHMDModule::GetPluginWrapper().GetInsightPassthroughInitializationState(); - bool passthroughInitializedOrPending = (result >= 0); - bool passthroughEnabled = GetDefault()->bInsightPassthroughEnabled; - if (!passthroughEnabled || !passthroughInitializedOrPending) - { - return; - } - } - else if (IsOpenXR) - { - if (!FOculusXRPassthroughModule::Get().GetPassthroughExtensionPlugin().Pin()->IsPassthroughEnabled()) - { - return; - } - } - - OculusXRScene::FOculusXRScene::RequestBoundaryVisibility(requestedVisibilityState_); -} diff --git a/Plugins/MetaXR/Source/OculusXRScene/Private/openxr/OculusXRSceneXR.cpp b/Plugins/MetaXR/Source/OculusXRScene/Private/openxr/OculusXRSceneXR.cpp deleted file mode 100644 index 442a3fa..0000000 --- a/Plugins/MetaXR/Source/OculusXRScene/Private/openxr/OculusXRSceneXR.cpp +++ /dev/null @@ -1,551 +0,0 @@ -// Copyright (c) Meta Platforms, Inc. and affiliates. - -#include "OculusXRSceneXR.h" -#include "OpenXRCore.h" -#include "OpenXRHMD.h" -#include "IOpenXRHMDModule.h" -#include "OpenXR/OculusXROpenXRUtilities.h" -#include "OculusXRSceneModule.h" -#include "OculusXRHMDPrivate.h" -#include "OculusXRSceneDelegates.h" -#include "OculusXRAnchorsUtil.h" - -#define LOCTEXT_NAMESPACE "OculusXRScene" - -namespace XRScene -{ - PFN_xrGetSpaceBoundingBox2DFB xrGetSpaceBoundingBox2DFB = nullptr; - PFN_xrGetSpaceBoundingBox3DFB xrGetSpaceBoundingBox3DFB = nullptr; - PFN_xrGetSpaceBoundary2DFB xrGetSpaceBoundary2DFB = nullptr; - PFN_xrGetSpaceSemanticLabelsFB xrGetSpaceSemanticLabelsFB = nullptr; - PFN_xrRequestSceneCaptureFB xrRequestSceneCaptureFB = nullptr; - PFN_xrGetSpaceRoomLayoutFB xrGetSpaceRoomLayoutFB = nullptr; - PFN_xrGetSpaceTriangleMeshMETA xrGetSpaceTriangleMeshMETA = nullptr; - PFN_xrRequestBoundaryVisibilityMETA xrRequestBoundaryVisibilityMETA = nullptr; - - FSceneXR::FSceneXR() - : bExtSceneEnabled(false) - , bExtSceneCaptureEnabled(false) - , bExtBoundaryVisibilityEnabled(false) - , bExtSpatialEntityMeshEnabled(false) - , LastBoundaryVisibility(XR_BOUNDARY_VISIBILITY_MAX_ENUM_META) - , OpenXRHMD(nullptr) - { - } - - FSceneXR::~FSceneXR() - { - } - - void FSceneXR::RegisterAsOpenXRExtension() - { -#if defined(WITH_OCULUS_BRANCH) - // Feature not enabled on Marketplace build. Currently only for the meta fork - RegisterOpenXRExtensionModularFeature(); -#endif - } - - bool FSceneXR::GetRequiredExtensions(TArray& OutExtensions) - { - OutExtensions.Add(XR_FB_SCENE_EXTENSION_NAME); - return true; - } - - bool FSceneXR::GetOptionalExtensions(TArray& OutExtensions) - { - OutExtensions.Add(XR_FB_SCENE_CAPTURE_EXTENSION_NAME); - OutExtensions.Add(XR_META_SPATIAL_ENTITY_MESH_EXTENSION_NAME); - OutExtensions.Add(XR_META_BOUNDARY_VISIBILITY_EXTENSION_NAME); - return true; - } - - const void* FSceneXR::OnCreateInstance(class IOpenXRHMDModule* InModule, const void* InNext) - { - if (InModule != nullptr) - { - bExtSceneEnabled = InModule->IsExtensionEnabled(XR_FB_SCENE_EXTENSION_NAME); - bExtSceneCaptureEnabled = InModule->IsExtensionEnabled(XR_FB_SCENE_CAPTURE_EXTENSION_NAME); - bExtBoundaryVisibilityEnabled = InModule->IsExtensionEnabled(XR_META_BOUNDARY_VISIBILITY_EXTENSION_NAME); - bExtSpatialEntityMeshEnabled = InModule->IsExtensionEnabled(XR_META_SPATIAL_ENTITY_MESH_EXTENSION_NAME); - - UE_LOG(LogOculusXRScene, Log, TEXT("[SCENE] Extensions available")); - UE_LOG(LogOculusXRScene, Log, TEXT(" Scene: %hs"), bExtSceneEnabled ? "ENABLED" : "DISABLED"); - UE_LOG(LogOculusXRScene, Log, TEXT(" Scene Capture: %hs"), bExtSceneCaptureEnabled ? "ENABLED" : "DISABLED"); - UE_LOG(LogOculusXRScene, Log, TEXT(" Boundary: %hs"), bExtBoundaryVisibilityEnabled ? "ENABLED" : "DISABLED"); - UE_LOG(LogOculusXRScene, Log, TEXT(" Mesh: %hs"), bExtSpatialEntityMeshEnabled ? "ENABLED" : "DISABLED"); - } - - return InNext; - } - - const void* FSceneXR::OnCreateSession(XrInstance InInstance, XrSystemId InSystem, const void* InNext) - { - InitOpenXRFunctions(InInstance); - - OpenXRHMD = (FOpenXRHMD*)GEngine->XRSystem.Get(); - - return InNext; - } - - void FSceneXR::OnDestroySession(XrSession InSession) - { - OpenXRHMD = nullptr; - } - - void FSceneXR::OnEvent(XrSession InSession, const XrEventDataBaseHeader* InHeader) - { - if (OpenXRHMD == nullptr) - { - UE_LOG(LogOculusXRScene, Log, TEXT("[FSceneXR::OnEvent] Receieved event but no HMD was present.")); - return; - } - - switch (InHeader->type) - { - case XR_TYPE_EVENT_DATA_BOUNDARY_VISIBILITY_CHANGED_META: - { - if (IsBoundaryVisibilityExtensionSupported()) - { - const XrEventDataBoundaryVisibilityChangedMETA* const event = - reinterpret_cast(InHeader); - - UE_LOG(LogOculusXRScene, Verbose, TEXT("[FSceneXR::OnEvent] XrEventDataBoundaryVisibilityChangedMETA")); - UE_LOG(LogOculusXRScene, Verbose, TEXT(" Visibility: %hs"), (event->boundaryVisibility == XR_BOUNDARY_VISIBILITY_SUPPRESSED_META) ? "SUPPRESSED" : "NOT SUPPRESSED"); - - FOculusXRSceneEventDelegates::OculusBoundaryVisibilityChanged.Broadcast(event->boundaryVisibility == XR_BOUNDARY_VISIBILITY_SUPPRESSED_META ? EOculusXRBoundaryVisibility::Suppressed : EOculusXRBoundaryVisibility::NotSuppressed); - - LastBoundaryVisibility = event->boundaryVisibility; - } - break; - } - case XR_TYPE_EVENT_DATA_SCENE_CAPTURE_COMPLETE_FB: - { - if (IsSceneCaptureExtensionSupported()) - { - const XrEventDataSceneCaptureCompleteFB* const event = - reinterpret_cast(InHeader); - - UE_LOG(LogOculusXRScene, Verbose, TEXT("[FSceneXR::OnEvent] XrEventDataSceneCaptureCompleteFB")); - UE_LOG(LogOculusXRScene, Verbose, TEXT(" Result: d"), event->result); - - FOculusXRSceneEventDelegates::OculusSceneCaptureComplete.Broadcast(event->result, XR_SUCCEEDED(event->result)); - } - break; - } - } - } - - XrResult FSceneXR::GetScenePlane(uint64 AnchorHandle, FVector& OutPos, FVector& OutSize) - { - if (!OpenXRHMD || !OpenXRHMD->GetInstance() || !OpenXRHMD->GetSession()) - { - UE_LOG(LogOculusXRScene, Warning, TEXT("[GetScenePlane] XR state is invalid.")); - return XR_ERROR_VALIDATION_FAILURE; - } - - if (!IsSceneExtensionSupported()) - { - UE_LOG(LogOculusXRScene, Warning, TEXT("[GetScenePlane] Scene extension is unsupported.")); - return XR_ERROR_VALIDATION_FAILURE; - } - - XrRect2Df rect; - auto result = xrGetSpaceBoundingBox2DFB(OpenXRHMD->GetSession(), (XrSpace)AnchorHandle, &rect); - if (XR_FAILED(result)) - { - UE_LOG(LogOculusXRScene, Warning, TEXT("[GetScenePlane] Get space bounding box 2D failed. Result: %d"), result); - return result; - } - - // Convert to UE's coordinates system - OutPos.X = 0; - OutPos.Y = rect.offset.x; - OutPos.Z = rect.offset.y; - OutSize.X = 0; - OutSize.Y = rect.extent.width; - OutSize.Z = rect.extent.height; - - return result; - } - - XrResult FSceneXR::GetSceneVolume(uint64 AnchorHandle, FVector& OutPos, FVector& OutSize) - { - if (!OpenXRHMD || !OpenXRHMD->GetInstance() || !OpenXRHMD->GetSession()) - { - UE_LOG(LogOculusXRScene, Warning, TEXT("[GetSceneVolume] XR state is invalid.")); - return XR_ERROR_VALIDATION_FAILURE; - } - - if (!IsSceneExtensionSupported()) - { - UE_LOG(LogOculusXRScene, Warning, TEXT("[GetSceneVolume] Scene extension is unsupported.")); - return XR_ERROR_VALIDATION_FAILURE; - } - - XrRect3DfFB rect; - auto result = xrGetSpaceBoundingBox3DFB(OpenXRHMD->GetSession(), (XrSpace)AnchorHandle, &rect); - if (XR_FAILED(result)) - { - UE_LOG(LogOculusXRScene, Warning, TEXT("[GetSceneVolume] Get space bounding box 3D failed. Result: %d"), result); - return result; - } - - // Convert from OpenXR's right-handed to Unreal's left-handed coordinate system. - // OpenXR Unreal - // | y | z - // | | - // z <----+ +----> x - // / / - // x/ y/ - // - OutPos.X = -rect.offset.z; - OutPos.Y = rect.offset.x; - OutPos.Z = rect.offset.y; - - // The position represents the corner of the volume which has the lowest value - // of each axis. Since we flipped the sign of one of the axes we need to adjust - // the position to the other side of the volume - OutPos.X -= rect.extent.depth; - - // We keep the size positive for all dimensions - OutSize.X = rect.extent.depth; - OutSize.Y = rect.extent.width; - OutSize.Z = rect.extent.height; - - return result; - } - - XrResult FSceneXR::GetBoundary2D(uint64 AnchorHandle, TArray& OutVertices) - { - if (!OpenXRHMD || !OpenXRHMD->GetInstance() || !OpenXRHMD->GetSession()) - { - UE_LOG(LogOculusXRScene, Warning, TEXT("[GetBoundary2D] XR state is invalid.")); - return XR_ERROR_VALIDATION_FAILURE; - } - - if (!IsSceneExtensionSupported()) - { - UE_LOG(LogOculusXRScene, Warning, TEXT("[GetBoundary2D] Scene extension is unsupported.")); - return XR_ERROR_VALIDATION_FAILURE; - } - - XrBoundary2DFB boundary{ XR_TYPE_BOUNDARY_2D_FB, nullptr }; - boundary.vertexCapacityInput = 0; - boundary.vertexCountOutput = 0; - boundary.vertices = nullptr; - - auto getCountResult = xrGetSpaceBoundary2DFB(OpenXRHMD->GetSession(), (XrSpace)AnchorHandle, &boundary); - if (XR_FAILED(getCountResult)) - { - UE_LOG(LogOculusXRScene, Warning, TEXT("[GetBoundary2D] Get space boundary 2D vertex count failed. Result: %d"), getCountResult); - return getCountResult; - } - - TArray vertices; - vertices.SetNum(boundary.vertexCountOutput); - boundary.vertexCapacityInput = boundary.vertexCountOutput; - boundary.vertices = vertices.GetData(); - - auto getVerticesResult = xrGetSpaceBoundary2DFB(OpenXRHMD->GetSession(), (XrSpace)AnchorHandle, &boundary); - if (XR_FAILED(getVerticesResult)) - { - UE_LOG(LogOculusXRScene, Warning, TEXT("[GetBoundary2D] Get space boundary 2D vertices failed. Result: %d"), getVerticesResult); - return getVerticesResult; - } - - OutVertices.Reserve(vertices.Num()); - for (auto& it : vertices) - { - OutVertices.Add(FVector2f(it.x, it.y)); - } - - return getVerticesResult; - } - - XrResult FSceneXR::GetSemanticClassification(uint64 AnchorHandle, TArray& OutSemanticClassifications) - { - if (!OpenXRHMD || !OpenXRHMD->GetInstance() || !OpenXRHMD->GetSession()) - { - UE_LOG(LogOculusXRScene, Warning, TEXT("[GetSemanticClassification] XR state is invalid.")); - return XR_ERROR_VALIDATION_FAILURE; - } - - if (!IsSceneExtensionSupported()) - { - UE_LOG(LogOculusXRScene, Warning, TEXT("[GetSemanticClassification] Scene extension is unsupported.")); - return XR_ERROR_VALIDATION_FAILURE; - } - - static const char* recognizedLabels = "DESK,COUCH,FLOOR,CEILING,WALL_FACE,WINDOW_FRAME,DOOR_FRAME,STORAGE,BED,SCREEN,LAMP,PLANT,OTHER,TABLE,WALL_ART,INVISIBLE_WALL_FACE,GLOBAL_MESH" - ; - - const XrSemanticLabelsSupportInfoFB semanticLabelsSupportInfo = { - XR_TYPE_SEMANTIC_LABELS_SUPPORT_INFO_FB, - nullptr, - XR_SEMANTIC_LABELS_SUPPORT_ACCEPT_DESK_TO_TABLE_MIGRATION_BIT_FB | XR_SEMANTIC_LABELS_SUPPORT_ACCEPT_INVISIBLE_WALL_FACE_BIT_FB, - recognizedLabels - }; - - XrSemanticLabelsFB xrLabels{ XR_TYPE_SEMANTIC_LABELS_FB, &semanticLabelsSupportInfo }; - xrLabels.bufferCountOutput = 0; - xrLabels.bufferCapacityInput = 0; - xrLabels.buffer = nullptr; - - XrResult result = xrGetSpaceSemanticLabelsFB(OpenXRHMD->GetSession(), (XrSpace)AnchorHandle, &xrLabels); - if (XR_FAILED(result)) - { - UE_LOG(LogOculusXRScene, Warning, TEXT("[GetSemanticClassification] Get semantic label buffer size failed. Result: %d"), result); - return result; - } - - TArray buffer; - buffer.SetNum(xrLabels.bufferCountOutput); - xrLabels.bufferCapacityInput = xrLabels.bufferCountOutput; - xrLabels.buffer = buffer.GetData(); - - result = xrGetSpaceSemanticLabelsFB(OpenXRHMD->GetSession(), (XrSpace)AnchorHandle, &xrLabels); - if (XR_FAILED(result)) - { - UE_LOG(LogOculusXRScene, Warning, TEXT("[GetSemanticClassification] Get semantic label buffer failed. Result: %d"), result); - return result; - } - - FString labelsStr(xrLabels.bufferCountOutput, xrLabels.buffer); - labelsStr.ParseIntoArray(OutSemanticClassifications, TEXT(",")); - - return result; - } - - XrResult FSceneXR::RequestSceneCapture(uint64& OutRequestID) - { - if (!OpenXRHMD || !OpenXRHMD->GetInstance() || !OpenXRHMD->GetSession()) - { - UE_LOG(LogOculusXRScene, Warning, TEXT("[RequestSceneCapture] XR state is invalid.")); - return XR_ERROR_VALIDATION_FAILURE; - } - - if (!IsSceneCaptureExtensionSupported()) - { - UE_LOG(LogOculusXRScene, Warning, TEXT("[RequestSceneCapture] Scene capture extension is unsupported.")); - return XR_ERROR_VALIDATION_FAILURE; - } - - XrSceneCaptureRequestInfoFB info{ XR_TYPE_SCENE_CAPTURE_REQUEST_INFO_FB, nullptr }; - info.request = nullptr; - info.requestByteCount = 0; - - auto result = xrRequestSceneCaptureFB(OpenXRHMD->GetSession(), &info, (XrAsyncRequestIdFB*)&OutRequestID); - if (XR_FAILED(result)) - { - UE_LOG(LogOculusXRScene, Warning, TEXT("[RequestSceneCapture] Get scene capture failed. Result: %d"), result); - } - - UE_LOG(LogOculusXRScene, Log, TEXT("[RequestSceneCapture] Started scene capture: RequestID (%llu)"), OutRequestID); - - return result; - } - - XrResult FSceneXR::GetRoomLayout(uint64 AnchorHandle, const uint32 MaxWallsCapacity, FOculusXRUUID& OutCeilingUuid, FOculusXRUUID& OutFloorUuid, TArray& OutWallsUuid) - { - if (!OpenXRHMD || !OpenXRHMD->GetInstance() || !OpenXRHMD->GetSession()) - { - UE_LOG(LogOculusXRScene, Warning, TEXT("[GetRoomLayout] XR state is invalid.")); - return XR_ERROR_VALIDATION_FAILURE; - } - - if (!IsSceneExtensionSupported()) - { - UE_LOG(LogOculusXRScene, Warning, TEXT("[GetRoomLayout] Scene extension is unsupported.")); - return XR_ERROR_VALIDATION_FAILURE; - } - - XrRoomLayoutFB roomLayout{ XR_TYPE_ROOM_LAYOUT_FB, nullptr }; - roomLayout.wallUuidCapacityInput = 0; - roomLayout.wallUuidCountOutput = 0; - roomLayout.wallUuids = nullptr; - - auto getWallsResult = xrGetSpaceRoomLayoutFB(OpenXRHMD->GetSession(), (XrSpace)AnchorHandle, &roomLayout); - if (XR_FAILED(getWallsResult)) - { - UE_LOG(LogOculusXRScene, Warning, TEXT("[GetRoomLayout] Failed to get wall count. Result: %d"), getWallsResult); - return getWallsResult; - } - - TArray wallUuids; - wallUuids.SetNum(roomLayout.wallUuidCountOutput); - roomLayout.wallUuidCapacityInput = roomLayout.wallUuidCountOutput; - roomLayout.wallUuids = wallUuids.GetData(); - - auto getDataResult = xrGetSpaceRoomLayoutFB(OpenXRHMD->GetSession(), (XrSpace)AnchorHandle, &roomLayout); - if (XR_FAILED(getDataResult)) - { - UE_LOG(LogOculusXRScene, Warning, TEXT("[GetRoomLayout] Failed to get room layout. Result: %d"), getDataResult); - return getDataResult; - } - - OutCeilingUuid = FOculusXRUUID(roomLayout.ceilingUuid.data); - OutFloorUuid = FOculusXRUUID(roomLayout.floorUuid.data); - for (auto& it : wallUuids) - { - OutWallsUuid.Add(it.data); - } - - return getDataResult; - } - - XrResult FSceneXR::GetTriangleMesh(uint64 AnchorHandle, TArray& Vertices, TArray& Triangles) - { - if (!OpenXRHMD || !OpenXRHMD->GetInstance() || !OpenXRHMD->GetSession()) - { - UE_LOG(LogOculusXRScene, Warning, TEXT("[GetTriangleMesh] XR state is invalid.")); - return XR_ERROR_VALIDATION_FAILURE; - } - - if (!IsSpatialEntityMeshExtensionSupported()) - { - UE_LOG(LogOculusXRScene, Warning, TEXT("[GetTriangleMesh] Spatial entity mesh extension is unsupported.")); - return XR_ERROR_VALIDATION_FAILURE; - } - - const XrSpaceTriangleMeshGetInfoMETA xrGetInfo{ XR_TYPE_SPACE_TRIANGLE_MESH_GET_INFO_META }; - - XrSpaceTriangleMeshMETA xrTriangleMesh{ XR_TYPE_SPACE_TRIANGLE_MESH_META, nullptr }; - xrTriangleMesh.indexCapacityInput = 0; - xrTriangleMesh.indexCountOutput = 0; - xrTriangleMesh.indices = nullptr; - xrTriangleMesh.vertexCapacityInput = 0; - xrTriangleMesh.vertexCountOutput = 0; - xrTriangleMesh.vertices = nullptr; - - auto getMeshCountsResult = xrGetSpaceTriangleMeshMETA((XrSpace)AnchorHandle, &xrGetInfo, &xrTriangleMesh); - if (XR_FAILED(getMeshCountsResult)) - { - UE_LOG(LogOculusXRScene, Warning, TEXT("[GetTriangleMesh] Failed to get vertex and index count. Result: %d"), getMeshCountsResult); - return getMeshCountsResult; - } - - TArray indices; - indices.SetNum(xrTriangleMesh.indexCountOutput); - xrTriangleMesh.indexCapacityInput = xrTriangleMesh.indexCountOutput; - xrTriangleMesh.indices = indices.GetData(); - - TArray vertices; - vertices.SetNum(xrTriangleMesh.vertexCountOutput); - xrTriangleMesh.vertexCapacityInput = xrTriangleMesh.vertexCountOutput; - xrTriangleMesh.vertices = vertices.GetData(); - - auto getMeshDataResult = xrGetSpaceTriangleMeshMETA((XrSpace)AnchorHandle, &xrGetInfo, &xrTriangleMesh); - if (XR_FAILED(getMeshDataResult)) - { - UE_LOG(LogOculusXRScene, Warning, TEXT("[GetTriangleMesh] Failed to get vertex and index data. Result: %d"), getMeshDataResult); - return getMeshDataResult; - } - - for (auto& it : indices) - { - Triangles.Add(it); - } - - for (auto& it : vertices) - { - Vertices.Add(ToFVector(it)); - } - - return getMeshDataResult; - } - - XrResult FSceneXR::RequestBoundaryVisibility(EOculusXRBoundaryVisibility NewVisibilityRequest) - { - if (!OpenXRHMD || !OpenXRHMD->GetInstance() || !OpenXRHMD->GetSession()) - { - UE_LOG(LogOculusXRScene, Warning, TEXT("[RequestBoundaryVisibility] XR state is invalid.")); - return XR_ERROR_VALIDATION_FAILURE; - } - - if (!IsBoundaryVisibilityExtensionSupported()) - { - UE_LOG(LogOculusXRScene, Warning, TEXT("[RequestBoundaryVisibility] Boundary visibility extension is unsupported.")); - return XR_ERROR_VALIDATION_FAILURE; - } - - XrSceneCaptureRequestInfoFB info{ XR_TYPE_SCENE_CAPTURE_REQUEST_INFO_FB, nullptr }; - info.request = nullptr; - info.requestByteCount = 0; - - XrBoundaryVisibilityMETA visibility; - switch (NewVisibilityRequest) - { - case EOculusXRBoundaryVisibility::NotSuppressed: - visibility = XR_BOUNDARY_VISIBILITY_NOT_SUPPRESSED_META; - break; - case EOculusXRBoundaryVisibility::Suppressed: - visibility = XR_BOUNDARY_VISIBILITY_SUPPRESSED_META; - break; - default: - visibility = XR_BOUNDARY_VISIBILITY_MAX_ENUM_META; - } - - auto result = xrRequestBoundaryVisibilityMETA(OpenXRHMD->GetSession(), visibility); - if (XR_FAILED(result)) - { - UE_LOG(LogOculusXRScene, Warning, TEXT("[RequestBoundaryVisibility] Get boundary visibility failed. Result: %d"), result); - } - - return result; - } - - XrResult FSceneXR::GetBoundaryVisibility(EOculusXRBoundaryVisibility& OutVisibility) - { - if (!OpenXRHMD || !OpenXRHMD->GetInstance() || !OpenXRHMD->GetSession()) - { - UE_LOG(LogOculusXRScene, Warning, TEXT("[GetBoundaryVisibility] XR state is invalid.")); - return XR_ERROR_VALIDATION_FAILURE; - } - - if (!IsBoundaryVisibilityExtensionSupported()) - { - UE_LOG(LogOculusXRScene, Warning, TEXT("[GetBoundaryVisibility] Boundary visibility extension is unsupported.")); - return XR_ERROR_VALIDATION_FAILURE; - } - - OutVisibility = (LastBoundaryVisibility == XR_BOUNDARY_VISIBILITY_SUPPRESSED_META) - ? EOculusXRBoundaryVisibility::Suppressed - : EOculusXRBoundaryVisibility::NotSuppressed; - - return XR_SUCCESS; - } - - void FSceneXR::InitOpenXRFunctions(XrInstance InInstance) - { - // XR_FB_scene - if (IsSceneExtensionSupported()) - { - OculusXR::XRGetInstanceProcAddr(InInstance, "xrGetSpaceBoundingBox2DFB", &xrGetSpaceBoundingBox2DFB); - OculusXR::XRGetInstanceProcAddr(InInstance, "xrGetSpaceBoundingBox3DFB", &xrGetSpaceBoundingBox3DFB); - OculusXR::XRGetInstanceProcAddr(InInstance, "xrGetSpaceBoundary2DFB", &xrGetSpaceBoundary2DFB); - OculusXR::XRGetInstanceProcAddr(InInstance, "xrGetSpaceSemanticLabelsFB", &xrGetSpaceSemanticLabelsFB); - OculusXR::XRGetInstanceProcAddr(InInstance, "xrGetSpaceRoomLayoutFB", &xrGetSpaceRoomLayoutFB); - } - - // XR_FB_scene_capture - if (IsSceneCaptureExtensionSupported()) - { - OculusXR::XRGetInstanceProcAddr(InInstance, "xrRequestSceneCaptureFB", &xrRequestSceneCaptureFB); - } - - // XR_META_spatial_entity_mesh - if (IsSpatialEntityMeshExtensionSupported()) - { - OculusXR::XRGetInstanceProcAddr(InInstance, "xrGetSpaceTriangleMeshMETA", &xrGetSpaceTriangleMeshMETA); - } - - // XR_META_boundary_visibility - if (IsBoundaryVisibilityExtensionSupported()) - { - OculusXR::XRGetInstanceProcAddr(InInstance, "xrRequestBoundaryVisibilityMETA", &xrRequestBoundaryVisibilityMETA); - } - } - -} // namespace XRScene - -#undef LOCTEXT_NAMESPACE diff --git a/Plugins/MetaXR/Source/OculusXRScene/Private/openxr/OculusXRSceneXR.h b/Plugins/MetaXR/Source/OculusXRScene/Private/openxr/OculusXRSceneXR.h deleted file mode 100644 index fe9cb00..0000000 --- a/Plugins/MetaXR/Source/OculusXRScene/Private/openxr/OculusXRSceneXR.h +++ /dev/null @@ -1,72 +0,0 @@ -// Copyright (c) Meta Platforms, Inc. and affiliates. - -#pragma once - -#include "OculusXRSceneXRIncludes.h" -#include "IOpenXRExtensionPlugin.h" -#include "OculusXRSceneTypes.h" -#include "OculusXRAnchorTypes.h" - -#define LOCTEXT_NAMESPACE "OculusXRScene" - -class FOpenXRHMD; - -namespace XRScene -{ - extern PFN_xrGetSpaceBoundingBox2DFB xrGetSpaceBoundingBox2DFB; - extern PFN_xrGetSpaceBoundingBox3DFB xrGetSpaceBoundingBox3DFB; - extern PFN_xrGetSpaceBoundary2DFB xrGetSpaceBoundary2DFB; - extern PFN_xrGetSpaceSemanticLabelsFB xrGetSpaceSemanticLabelsFB; - extern PFN_xrRequestSceneCaptureFB xrRequestSceneCaptureFB; - extern PFN_xrGetSpaceRoomLayoutFB xrGetSpaceRoomLayoutFB; - extern PFN_xrGetSpaceTriangleMeshMETA xrGetSpaceTriangleMeshMETA; - extern PFN_xrRequestBoundaryVisibilityMETA xrRequestBoundaryVisibilityMETA; - - class FSceneXR : public IOpenXRExtensionPlugin - { - public: - // IOculusXROpenXRHMDPlugin - virtual bool GetRequiredExtensions(TArray& OutExtensions) override; - virtual bool GetOptionalExtensions(TArray& OutExtensions) override; - virtual const void* OnCreateInstance(class IOpenXRHMDModule* InModule, const void* InNext) override; - virtual const void* OnCreateSession(XrInstance InInstance, XrSystemId InSystem, const void* InNext) override; - virtual void OnDestroySession(XrSession InSession) override; - virtual void OnEvent(XrSession InSession, const XrEventDataBaseHeader* InHeader) override; - - public: - FSceneXR(); - virtual ~FSceneXR(); - void RegisterAsOpenXRExtension(); - - bool IsSceneExtensionSupported() const { return bExtSceneEnabled; } - bool IsSceneCaptureExtensionSupported() const { return bExtSceneCaptureEnabled; } - bool IsBoundaryVisibilityExtensionSupported() const { return bExtBoundaryVisibilityEnabled; } - bool IsSpatialEntityMeshExtensionSupported() const { return bExtSpatialEntityMeshEnabled; } - - XrResult GetScenePlane(uint64 AnchorHandle, FVector& OutPos, FVector& OutSize); - XrResult GetSceneVolume(uint64 AnchorHandle, FVector& OutPos, FVector& OutSize); - XrResult GetBoundary2D(uint64 AnchorHandle, TArray& OutVertices); - XrResult GetSemanticClassification(uint64 AnchorHandle, TArray& OutSemanticClassifications); - - XrResult RequestSceneCapture(uint64& OutRequestID); - XrResult GetRoomLayout(uint64 AnchorHandle, const uint32 MaxWallsCapacity, FOculusXRUUID& OutCeilingUuid, FOculusXRUUID& OutFloorUuid, TArray& OutWallsUuid); - XrResult GetTriangleMesh(uint64 AnchorHandle, TArray& Vertices, TArray& Triangles); - - XrResult RequestBoundaryVisibility(EOculusXRBoundaryVisibility NewVisibilityRequest); - XrResult GetBoundaryVisibility(EOculusXRBoundaryVisibility& OutVisibility); - - private: - void InitOpenXRFunctions(XrInstance InInstance); - - bool bExtSceneEnabled; - bool bExtSceneCaptureEnabled; - bool bExtBoundaryVisibilityEnabled; - bool bExtSpatialEntityMeshEnabled; - - XrBoundaryVisibilityMETA LastBoundaryVisibility; - FOpenXRHMD* OpenXRHMD; - }; - -} // namespace XRScene - -#undef LOCTEXT_NAMESPACE diff --git a/Plugins/MetaXR/Source/OculusXRScene/Private/openxr/OculusXRSceneXRIncludes.h b/Plugins/MetaXR/Source/OculusXRScene/Private/openxr/OculusXRSceneXRIncludes.h deleted file mode 100644 index 9067b1d..0000000 --- a/Plugins/MetaXR/Source/OculusXRScene/Private/openxr/OculusXRSceneXRIncludes.h +++ /dev/null @@ -1,7 +0,0 @@ -// Copyright (c) Meta Platforms, Inc. and affiliates. - -#pragma once - -#include -#include -#include "openxr/OculusXRAnchorsXRIncludes.h" diff --git a/Plugins/MetaXR/Source/OculusXRScene/Public/IOculusXRSceneModule.h b/Plugins/MetaXR/Source/OculusXRScene/Public/IOculusXRSceneModule.h deleted file mode 100644 index 6666d4e..0000000 --- a/Plugins/MetaXR/Source/OculusXRScene/Public/IOculusXRSceneModule.h +++ /dev/null @@ -1,37 +0,0 @@ -// @lint-ignore-every LICENSELINT -// Copyright Epic Games, Inc. All Rights Reserved. - -#pragma once -#include "Modules/ModuleManager.h" - -#define OCULUS_SCENE_SUPPORTED_PLATFORMS (PLATFORM_WINDOWS && WINVER > 0x0502) || (PLATFORM_ANDROID_ARM || PLATFORM_ANDROID_ARM64 || PLATFORM_ANDROID_X64) - -/** - * The public interface to this module. In most cases, this interface is only public to sibling modules - * within this plugin. - */ -class IOculusXRSceneModule : public IModuleInterface -{ - -public: - /** - * Singleton-like access to this module's interface. This is just for convenience! - * Beware of calling this during the shutdown phase, though. Your module might have been unloaded already. - * - * @return Returns singleton instance, loading the module on demand if needed - */ - static inline IOculusXRSceneModule& Get() - { - return FModuleManager::LoadModuleChecked("OculusXRScene"); - } - - /** - * Checks to see if this module is loaded and ready. It is only valid to call Get() if IsAvailable() returns true. - * - * @return True if the module is loaded and ready to use - */ - static inline bool IsAvailable() - { - return FModuleManager::Get().IsModuleLoaded("OculusXRScene"); - } -}; diff --git a/Plugins/MetaXR/Source/OculusXRScene/Public/OculusXRRoomLayoutManagerComponent.h b/Plugins/MetaXR/Source/OculusXRScene/Public/OculusXRRoomLayoutManagerComponent.h deleted file mode 100644 index f19e110..0000000 --- a/Plugins/MetaXR/Source/OculusXRScene/Public/OculusXRRoomLayoutManagerComponent.h +++ /dev/null @@ -1,64 +0,0 @@ -// Copyright (c) Meta Platforms, Inc. and affiliates. - -#pragma once - -#include "CoreMinimal.h" -#include "OculusXRSpatialAnchorComponent.h" -#include "OculusXRAnchorBPFunctionLibrary.h" -#include "OculusXRRoomLayoutManagerComponent.generated.h" - -UCLASS(meta = (DisplayName = "OculusXR Room Layout Manager Component", BlueprintSpawnableComponent)) -class OCULUSXRSCENE_API UOculusXRRoomLayoutManagerComponent : public UActorComponent -{ - GENERATED_BODY() - -public: - UOculusXRRoomLayoutManagerComponent(const FObjectInitializer& ObjectInitializer); - - virtual void InitializeComponent() override; - virtual void UninitializeComponent() override; - - virtual void OnRegister() override; - virtual void OnUnregister() override; - - DECLARE_DYNAMIC_MULTICAST_DELEGATE_TwoParams(FOculusXRRoomLayoutSceneCaptureCompleteDelegate, - FOculusXRUInt64, requestId, - bool, result); - - DECLARE_MULTICAST_DELEGATE_TwoParams(FOculusXRRoomLayoutSceneCompleteNativeDelegate, FOculusXRUInt64 /*requestId*/, bool /*success*/); - FOculusXRRoomLayoutSceneCompleteNativeDelegate OculusXRRoomLayoutSceneCaptureCompleteNative; - - UPROPERTY(BlueprintAssignable, Category = "OculusXR|Room Layout Manager") - FOculusXRRoomLayoutSceneCaptureCompleteDelegate OculusXRRoomLayoutSceneCaptureComplete; - - // Requests to launch Capture Flow - UFUNCTION(BlueprintCallable, Category = "OculusXR|Room Layout Manager") - bool LaunchCaptureFlow(); - - // Gets room layout for a specific space - UFUNCTION(BlueprintCallable, Category = "OculusXR|Room Layout Manager") - bool GetRoomLayout(FOculusXRUInt64 Space, UPARAM(ref) FOculusXRRoomLayout& RoomLayoutOut, int32 MaxWallsCapacity = 64); - - // Loads mesh data (vertices, indeces) associated with the space into UProceduralMeshComponent - UFUNCTION(BlueprintCallable, Category = "OculusXR|Room Layout Manager") - bool LoadTriangleMesh(FOculusXRUInt64 Space, class UProceduralMeshComponent* Mesh, bool CreateCollision) const; - -protected: - UPROPERTY(Transient) - TSet EntityRequestList; - - UPROPERTY(Transient) - TMap RoomLayouts; - -private: - UFUNCTION() - void OculusRoomLayoutSceneCaptureComplete_Handler(FOculusXRUInt64 RequestId, bool bSuccess) - { - if (EntityRequestList.Find(RequestId.Value) != nullptr) - { - OculusXRRoomLayoutSceneCaptureComplete.Broadcast(RequestId, bSuccess); - OculusXRRoomLayoutSceneCaptureCompleteNative.Broadcast(RequestId, bSuccess); - EntityRequestList.Remove(RequestId.Value); - } - } -}; diff --git a/Plugins/MetaXR/Source/OculusXRScene/Public/OculusXRScene.h b/Plugins/MetaXR/Source/OculusXRScene/Public/OculusXRScene.h deleted file mode 100644 index 7000e27..0000000 --- a/Plugins/MetaXR/Source/OculusXRScene/Public/OculusXRScene.h +++ /dev/null @@ -1,32 +0,0 @@ -// Copyright (c) Meta Platforms, Inc. and affiliates. - -#pragma once - -#include "OculusXRSceneFunctions.h" -#include "OculusXRAnchorTypes.h" -#include "OculusXRSceneTypes.h" - -namespace OculusXRScene -{ - struct OCULUSXRSCENE_API FOculusXRScene - { - static EOculusXRAnchorResult::Type GetScenePlane(uint64 AnchorHandle, FVector& OutPos, FVector& OutSize); - static EOculusXRAnchorResult::Type GetSceneVolume(uint64 AnchorHandle, FVector& OutPos, FVector& OutSize); - static EOculusXRAnchorResult::Type GetSemanticClassification(uint64 AnchorHandle, TArray& OutSemanticClassifications); - static EOculusXRAnchorResult::Type GetBoundary2D(uint64 AnchorHandle, TArray& OutVertices); - - static EOculusXRAnchorResult::Type RequestSceneCapture(uint64& OutRequestID); - static EOculusXRAnchorResult::Type GetRoomLayout(uint64 AnchorHandle, const uint32 MaxWallsCapacity, FOculusXRUUID& OutCeilingUuid, FOculusXRUUID& OutFloorUuid, TArray& OutWallsUuid); - static EOculusXRAnchorResult::Type GetTriangleMesh(uint64 AnchorHandle, TArray& Vertices, TArray& Triangles); - - // Requests to change the current boundary visibility - static EOculusXRAnchorResult::Type RequestBoundaryVisibility(EOculusXRBoundaryVisibility NewVisibilityRequest); - - // Gets the current boundary visibility - static EOculusXRAnchorResult::Type GetBoundaryVisibility(EOculusXRBoundaryVisibility& OutVisibility); - - private: - static TSharedPtr GetOculusXRSceneFunctionsImpl(); - static TSharedPtr SceneFunctionsImpl; - }; -} // namespace OculusXRScene diff --git a/Plugins/MetaXR/Source/OculusXRScene/Public/OculusXRSceneActor.h b/Plugins/MetaXR/Source/OculusXRScene/Public/OculusXRSceneActor.h deleted file mode 100644 index d0ea5aa..0000000 --- a/Plugins/MetaXR/Source/OculusXRScene/Public/OculusXRSceneActor.h +++ /dev/null @@ -1,184 +0,0 @@ -// @lint-ignore-every LICENSELINT -// Copyright Epic Games, Inc. All Rights Reserved. -#pragma once - -#include "GameFramework/Actor.h" -#include "OculusXRRoomLayoutManagerComponent.h" -#include "OculusXRAnchorComponent.h" -#include "OculusXRFunctionLibrary.h" -#include "OculusXRSceneAnchorComponent.h" -#include "OculusXRSceneTypes.h" -#include "OculusXRSceneActor.generated.h" - -/** EOculusXRLaunchCaptureFlowWhenMissingScene - * Used to dictate whether the actor should launch the Capture Flow application when a scene is not detected on the device. - * The Actor will check if a scene capture is either non-existent or invalid (ie. missing walls/ceiling/floor) before checking if Capture Flow - * should be launched. - * - * NEVER: will never launch Flow Capture. - * ONCE: will only launch it once. If the actor still doesn't detect that a scene was captured, it will not launch Capture Flow again. - * ALWAYS: will always re-launch Flow Capture if a scene was not detected on the device. - */ -UENUM(BlueprintType) -enum EOculusXRLaunchCaptureFlowWhenMissingScene -{ - NEVER UMETA(DisplayName = "Never"), - ONCE UMETA(DisplayName = "Once"), - ALWAYS UMETA(DisplayName = "Always") -}; - -/** FOculusXRSpawnedSceneAnchorProperties - * Properties/Components that a spawned scene anchor will use. - */ -USTRUCT(BlueprintType) -struct OCULUSXRSCENE_API FOculusXRSpawnedSceneAnchorProperties -{ - GENERATED_BODY() - - UPROPERTY(EditAnywhere, Category = "Spawned Scene Anchor Properties") - TSoftClassPtr ActorComponent = TSoftClassPtr(FSoftClassPath(UOculusXRSceneAnchorComponent::StaticClass())); - - UPROPERTY(EditAnywhere, Category = "Spawned Scene Anchor Properties") - TSoftObjectPtr StaticMesh; - - UPROPERTY(EditAnywhere, Category = "Spawned Scene Anchor Properties", Meta = (DeprecatedProperty, DeprecationMessage = "This property is deprecated. Alignment is done automatically at lower level.")) - bool ForceParallelToFloor = false; - - UPROPERTY(EditAnywhere, Category = "Spawned Scene Anchor Properties") - FVector AddOffset = FVector::ZeroVector; -}; - -/** - * AOculusXRSceneActor - * - * DEPRECATED: AOculusXRSceneActor and associated classes are deprecated (v65), please use MR Utility Kit instead - * (https://developer.oculus.com/documentation/unreal/unreal-mr-utility-kit-overview) - * - * The purpose of this actor is to be able to spawn "scene anchor" actors. - * - * Each actor type (based on their semantic label) can be configured to be spawned with a specific mesh and actor component. - * - * Overall, it provides a simple interface to be able to quickly get a captured scene from Capture Flow populated at runtime. - * It also provides a basic and flexible template to making use of the OculusAnchorSDK and UOculusXRRoomLayoutManagerComponent - * to drive the actor's logic. This removes the need for the developer to implement a system from scratch that makes use of - * the native methods and components. - * - * TLDR: - * - This actor populates a captured scene (created in Capture Flow) by spawning child actors with predefined actor and mesh components. - * - Can be used as is, or can be derived or modified as needed depending on the application's needs. - */ -UCLASS(ClassGroup = OculusXRScene) -class OCULUSXRSCENE_API AOculusXRSceneActor : public AActor -{ - GENERATED_BODY() -public: - UFUNCTION(BlueprintCallable, Category = "OculusXR|Scene Actor") - void LaunchCaptureFlow(); - - UFUNCTION(BlueprintCallable, Category = "OculusXR|Scene Actor") - bool IsScenePopulated(); - - UFUNCTION(BlueprintCallable, Category = "OculusXR|Scene Actor", Meta = (DeprecatedFunction, DeprecationMessage = "Is Room Layout Valid is deprecated and no longer returns any value but true. Please validate your room configuration in the way your application requires.")) - bool IsRoomLayoutValid(); - - UFUNCTION(BlueprintCallable, Category = "OculusXR|Scene Actor") - void PopulateScene(); - - UFUNCTION(BlueprintCallable, Category = "OculusXR|Scene Actor") - void ClearScene(); - - UFUNCTION(BlueprintCallable, Category = "OculusXR|Scene Actor") - void SetVisibilityToAllSceneAnchors(const bool bIsVisible); - - UFUNCTION(BlueprintCallable, Category = "OculusXR|Scene Actor") - void SetVisibilityToSceneAnchorsBySemanticLabel(const FString SemanticLabel, const bool bIsVisible); - - UFUNCTION(BlueprintCallable, Category = "OculusXR|Scene Actor") - TArray GetActorsBySemanticLabel(const FString SemanticLabel); - - UFUNCTION(BlueprintPure, BlueprintCallable, Category = "OculusXR|Scene Actor") - TArray GetRoomLayouts() const; - - UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "OculusXR|Scene Actor") - TEnumAsByte LauchCaptureFlowWhenMissingScene = EOculusXRLaunchCaptureFlowWhenMissingScene::ALWAYS; - - UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "OculusXR|Scene Actor", meta = (UIMin = 1, ClampMin = 1, UIMax = 1024, ClampMax = 1024)) - int32 MaxQueries = 64; - - UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "OculusXR|Scene Actor") - bool bPopulateSceneOnBeginPlay = true; - - // If true then when the scene model is loaded we will only attempt to populate the room the user is standing in. - // Otherwise all rooms and all scene anchors will be loaded. - UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "OculusXR|Scene Actor") - bool bActiveRoomOnly = true; - - UPROPERTY(EditAnywhere, Category = "OculusXR|Scene Actor") - TMap ScenePlaneSpawnedSceneAnchorProperties; - - UPROPERTY(EditAnywhere, Category = "OculusXR|Scene Actor") - TMap SceneVolumeSpawnedSceneAnchorProperties; - -public: - AOculusXRSceneActor(const FObjectInitializer& ObjectInitializer); - - virtual void BeginPlay() override; - virtual void EndPlay(EEndPlayReason::Type Reason) override; - virtual void Tick(float DeltaTime) override; - - virtual void PostLoad() override; - -private: - EOculusXRAnchorResult::Type QueryAllRooms(); - void RoomLayoutDiscoveryResultsAvailable(const TArray& QueryResults); - void ProcessRoomQueryResult(FOculusXRUInt64 AnchorHandle, FOculusXRUUID UUID); - - EOculusXRAnchorResult::Type QueryRoomUUIDs(const FOculusXRUInt64 RoomSpaceID, const TArray& RoomUUIDs); - void SceneRoomDiscoveryResultsAvailable(const TArray& QueryResults, const FOculusXRUInt64 RoomSpaceID); - void ProcessRoomElementsResult(FOculusXRUInt64 AnchorHandle, const FOculusXRUInt64 RoomSpaceID); - - void StartSingleRoomQuery(FOculusXRUInt64 RoomSpaceID, FOculusXRRoomLayout RoomLayout); - EOculusXRAnchorResult::Type QueryFloorForActiveRoom(FOculusXRUInt64 RoomSpaceID, FOculusXRRoomLayout RoomLayout); - void ActiveRoomFloorDiscoveryResultsAvailable(const TArray& QueryResults, FOculusXRUInt64 RoomSpaceID, FOculusXRRoomLayout RoomLayout); - - bool CheckFloorBounds(FOculusXRUInt64 AnchorHandle, FOculusXRUUID UUID, FOculusXRUInt64 RoomAnchorHandle); - - bool PointInPolygon2D(FVector2f PointToTest, const TArray& PolyVerts) const; - - void GetSemanticClassifications(uint64 Space, TArray& OutSemanticLabels) const; - - // Scene capture event handler - void SceneCaptureComplete_Handler(FOculusXRUInt64 RequestId, bool bResult); - - // Launches Capture Flow if (based on LauchCaptureFlowWhenMissingScene member value) - void LaunchCaptureFlowIfNeeded(); - - // Resets states of the Actor - void ResetStates(); - - // Validates UUID - bool IsValidUuid(const FOculusXRUUID& Uuid); - - // Helper method to spawn an actor for anchor - AActor* SpawnActorWithSceneComponent(const FOculusXRUInt64& Space, const FOculusXRUInt64& RoomSpaceID, const TArray& SemanticClassifications, UClass* sceneAnchorComponentInstanceClass); - - // Spawns a scene anchor - AActor* SpawnOrUpdateSceneAnchor(AActor* Anchor, const FOculusXRUInt64& Space, const FOculusXRUInt64& RoomSpaceID, const FVector& BoundedPos, const FVector& BoundedSize, const TArray& SemanticClassifications, const EOculusXRSpaceComponentType AnchorComponentType); - - // Components for room layout and spatial anchors functionalities - UOculusXRRoomLayoutManagerComponent* RoomLayoutManagerComponent = nullptr; - - class UOculusXRSceneGlobalMeshComponent* SceneGlobalMeshComponent = nullptr; - - // Whether Capture Flow was already launched once - bool bCaptureFlowWasLaunched; - - // Whether last room layout was valid - bool bRoomLayoutIsValid; - - // Whether we found a captured scene - bool bFoundCapturedScene; - - UPROPERTY(Transient) - TMap RoomLayouts; -}; diff --git a/Plugins/MetaXR/Source/OculusXRScene/Public/OculusXRSceneAnchorComponent.h b/Plugins/MetaXR/Source/OculusXRScene/Public/OculusXRSceneAnchorComponent.h deleted file mode 100644 index 6b9ca86..0000000 --- a/Plugins/MetaXR/Source/OculusXRScene/Public/OculusXRSceneAnchorComponent.h +++ /dev/null @@ -1,28 +0,0 @@ -// Copyright (c) Meta Platforms, Inc. and affiliates. - -#pragma once - -#include "CoreMinimal.h" -#include "OculusXRAnchorComponent.h" -#include "OculusXRSceneAnchorComponent.generated.h" - -/** - * DEPRECATED: AOculusXRSceneActor and associated classes are deprecated (v65), please use MR Utility Kit instead - * (https://developer.oculus.com/documentation/unreal/unreal-mr-utility-kit-overview) - */ -UCLASS(meta = (DisplayName = "OculusXR Scene Anchor Component", BlueprintSpawnableComponent)) -class OCULUSXRSCENE_API UOculusXRSceneAnchorComponent : public UOculusXRAnchorComponent -{ - GENERATED_BODY() - - virtual void TickComponent(float DeltaTime, enum ELevelTick TickType, FActorComponentTickFunction* ThisTickFunction) override; - -public: - UOculusXRSceneAnchorComponent(const FObjectInitializer& ObjectInitializer); - - UPROPERTY(Transient, BlueprintReadOnly, Category = "OculusXR|Scene Anchor Component") - TArray SemanticClassifications; - - UPROPERTY(Transient, BlueprintReadOnly, Category = "OculusXR|Scene Anchor Component") - FOculusXRUInt64 RoomSpaceID = 0; -}; diff --git a/Plugins/MetaXR/Source/OculusXRScene/Public/OculusXRSceneComponents.h b/Plugins/MetaXR/Source/OculusXRScene/Public/OculusXRSceneComponents.h deleted file mode 100644 index 6253ffd..0000000 --- a/Plugins/MetaXR/Source/OculusXRScene/Public/OculusXRSceneComponents.h +++ /dev/null @@ -1,73 +0,0 @@ -// Copyright (c) Meta Platforms, Inc. and affiliates. - -#pragma once -#include "UObject/Class.h" -#include "OculusXRAnchorComponents.h" -#include "OculusXRSceneComponents.generated.h" - -UCLASS(Blueprintable) -class OCULUSXRSCENE_API UOculusXRPlaneAnchorComponent : public UOculusXRBaseAnchorComponent -{ - GENERATED_BODY() -public: - UOculusXRPlaneAnchorComponent() - { - Type = EOculusXRSpaceComponentType::ScenePlane; - } - - UFUNCTION(BlueprintCallable, Category = "OculusXR|SpatialAnchor") - bool GetPositionAndSize(FVector& outPosition, FVector& outSize) const; -}; - -UCLASS(Blueprintable) -class OCULUSXRSCENE_API UOculusXRVolumeAnchorComponent : public UOculusXRBaseAnchorComponent -{ - GENERATED_BODY() -public: - UOculusXRVolumeAnchorComponent() - { - Type = EOculusXRSpaceComponentType::SceneVolume; - } - - UFUNCTION(BlueprintCallable, Category = "OculusXR|SpatialAnchor") - bool GetPositionAndSize(FVector& outPosition, FVector& outSize) const; -}; - -UCLASS(Blueprintable) -class OCULUSXRSCENE_API UOculusXRSemanticClassificationAnchorComponent : public UOculusXRBaseAnchorComponent -{ - GENERATED_BODY() -public: - UOculusXRSemanticClassificationAnchorComponent() - { - Type = EOculusXRSpaceComponentType::SemanticClassification; - } - - UFUNCTION(BlueprintCallable, Category = "OculusXR|SpatialAnchor") - bool GetSemanticClassifications(TArray& outClassifications) const; -}; - -UCLASS(Blueprintable) -class OCULUSXRSCENE_API UOculusXRRoomLayoutAnchorComponent : public UOculusXRBaseAnchorComponent -{ - GENERATED_BODY() -public: - UOculusXRRoomLayoutAnchorComponent() - { - Type = EOculusXRSpaceComponentType::RoomLayout; - } - - UFUNCTION(BlueprintCallable, Category = "OculusXR|SpatialAnchor") - bool GetRoomLayout(FOculusXRUUID& outFloorUUID, FOculusXRUUID& outCeilingUUID, TArray& outWallsUUIDs) const; -}; - -UCLASS(Blueprintable) -class OCULUSXRSCENE_API UOculusXRTriangleMeshAnchorComponent : public UOculusXRBaseAnchorComponent -{ - GENERATED_BODY() -public: - UOculusXRTriangleMeshAnchorComponent() - { - Type = EOculusXRSpaceComponentType::TriangleMesh; - } -}; diff --git a/Plugins/MetaXR/Source/OculusXRScene/Public/OculusXRSceneDelegates.h b/Plugins/MetaXR/Source/OculusXRScene/Public/OculusXRSceneDelegates.h deleted file mode 100644 index 44f4caa..0000000 --- a/Plugins/MetaXR/Source/OculusXRScene/Public/OculusXRSceneDelegates.h +++ /dev/null @@ -1,18 +0,0 @@ -// Copyright (c) Meta Platforms, Inc. and affiliates. - -#pragma once - -#include "CoreTypes.h" -#include "OculusXRAnchorTypes.h" -#include "OculusXRSceneTypes.h" -#include "Delegates/Delegate.h" - -class OCULUSXRSCENE_API FOculusXRSceneEventDelegates -{ -public: - DECLARE_MULTICAST_DELEGATE_OneParam(FOculusXRBoundaryVisibilityChanged, EOculusXRBoundaryVisibility /*Visibility*/); - static FOculusXRBoundaryVisibilityChanged OculusBoundaryVisibilityChanged; - - DECLARE_MULTICAST_DELEGATE_TwoParams(FOculusXRSceneCaptureCompleteDelegate, FOculusXRUInt64 /*RequestId*/, bool /*Success*/); - static FOculusXRSceneCaptureCompleteDelegate OculusSceneCaptureComplete; -}; diff --git a/Plugins/MetaXR/Source/OculusXRScene/Public/OculusXRSceneEventDelegates.h b/Plugins/MetaXR/Source/OculusXRScene/Public/OculusXRSceneEventDelegates.h deleted file mode 100644 index c9786e0..0000000 --- a/Plugins/MetaXR/Source/OculusXRScene/Public/OculusXRSceneEventDelegates.h +++ /dev/null @@ -1,19 +0,0 @@ -// Copyright (c) Meta Platforms, Inc. and affiliates. - -#pragma once - -#include -#include "OculusXRSceneTypes.h" -#include "OculusXRAnchorTypes.h" -#include "OculusXRSceneEventDelegates.generated.h" - -DECLARE_DYNAMIC_MULTICAST_DELEGATE_OneParam(FOculusXRScene_BoundaryVisibilityChanged, EOculusXRBoundaryVisibility, BoundaryVisibility); - -UCLASS() -class OCULUSXRSCENE_API UOculusXRSceneEventDelegates : public UEngineSubsystem -{ - GENERATED_BODY() -public: - UPROPERTY(BlueprintAssignable) - FOculusXRScene_BoundaryVisibilityChanged OnBoundaryVisibilityChanged; -}; diff --git a/Plugins/MetaXR/Source/OculusXRScene/Public/OculusXRSceneFunctionLibrary.h b/Plugins/MetaXR/Source/OculusXRScene/Public/OculusXRSceneFunctionLibrary.h deleted file mode 100644 index 83f3dbc..0000000 --- a/Plugins/MetaXR/Source/OculusXRScene/Public/OculusXRSceneFunctionLibrary.h +++ /dev/null @@ -1,31 +0,0 @@ -// Copyright (c) Meta Platforms, Inc. and affiliates. - -#pragma once - -#include "OculusXRAnchorTypes.h" -#include "Kismet/BlueprintFunctionLibrary.h" - -#include "OculusXRSceneFunctionLibrary.generated.h" - -UCLASS() -class OCULUSXRSCENE_API UOculusXRSceneFunctionLibrary : public UBlueprintFunctionLibrary -{ - GENERATED_BODY() -public: - // Returns the current boundary visibility - UFUNCTION(BlueprintPure, Category = "OculusXR|Scene", meta = (WorldContext = "WorldContext")) - static bool GetBoundaryVisibility(const UObject* WorldContext, EOculusXRBoundaryVisibility& OutVisibility); - - // Returns the requested boundary visibility state - UFUNCTION(BlueprintPure, Category = "OculusXR|Scene", meta = (WorldContext = "WorldContext")) - static bool GetRequestedBoundaryVisibility(const UObject* WorldContext, EOculusXRBoundaryVisibility& OutVisibility); - - // Requests to change the current boundary visibility - UFUNCTION(BlueprintCallable, Category = "OculusXR|Scene", meta = (WorldContext = "WorldContext")) - static bool RequestBoundaryVisibility(const UObject* WorldContext, EOculusXRBoundaryVisibility NewVisibilityRequest); - - // Returns the room layout for the specified anchor handle that contains a RoomLayout component - UFUNCTION(BlueprintCallable, Category = "OculusXR|Scene") - static bool GetRoomLayout(FOculusXRUInt64 AnchorHandle, FOculusXRRoomLayout& RoomLayoutOut, int32 MaxWallsCapacity = 64); - -}; diff --git a/Plugins/MetaXR/Source/OculusXRScene/Public/OculusXRSceneFunctions.h b/Plugins/MetaXR/Source/OculusXRScene/Public/OculusXRSceneFunctions.h deleted file mode 100644 index 840a1ac..0000000 --- a/Plugins/MetaXR/Source/OculusXRScene/Public/OculusXRSceneFunctions.h +++ /dev/null @@ -1,28 +0,0 @@ -// Copyright (c) Meta Platforms, Inc. and affiliates. - -#pragma once - -#include "OculusXRAnchorTypes.h" -#include "OculusXRSceneTypes.h" - -namespace OculusXRScene -{ - struct OCULUSXRSCENE_API IOculusXRSceneFunctions - { - virtual EOculusXRAnchorResult::Type GetScenePlane(uint64 AnchorHandle, FVector& OutPos, FVector& OutSize) = 0; - virtual EOculusXRAnchorResult::Type GetSceneVolume(uint64 AnchorHandle, FVector& OutPos, FVector& OutSize) = 0; - virtual EOculusXRAnchorResult::Type GetSemanticClassification(uint64 AnchorHandle, TArray& OutSemanticClassifications) = 0; - virtual EOculusXRAnchorResult::Type GetBoundary2D(uint64 AnchorHandle, TArray& OutVertices) = 0; - - virtual EOculusXRAnchorResult::Type RequestSceneCapture(uint64& OutRequestID) = 0; - virtual EOculusXRAnchorResult::Type GetRoomLayout(uint64 AnchorHandle, const uint32 MaxWallsCapacity, FOculusXRUUID& OutCeilingUuid, FOculusXRUUID& OutFloorUuid, TArray& OutWallsUuid) = 0; - virtual EOculusXRAnchorResult::Type GetTriangleMesh(uint64 AnchorHandle, TArray& Vertices, TArray& Triangles) = 0; - - // Requests to change the current boundary visibility - virtual EOculusXRAnchorResult::Type RequestBoundaryVisibility(EOculusXRBoundaryVisibility NewVisibilityRequest) = 0; - - // Gets the current boundary visibility - virtual EOculusXRAnchorResult::Type GetBoundaryVisibility(EOculusXRBoundaryVisibility& OutVisibility) = 0; - - }; -} // namespace OculusXRScene diff --git a/Plugins/MetaXR/Source/OculusXRScene/Public/OculusXRSceneGlobalMeshComponent.h b/Plugins/MetaXR/Source/OculusXRScene/Public/OculusXRSceneGlobalMeshComponent.h deleted file mode 100644 index f7a1d87..0000000 --- a/Plugins/MetaXR/Source/OculusXRScene/Public/OculusXRSceneGlobalMeshComponent.h +++ /dev/null @@ -1,53 +0,0 @@ -// Copyright (c) Meta Platforms, Inc. and affiliates. - -#pragma once - -#include "CoreMinimal.h" -#include "OculusXRSceneAnchorComponent.h" -#include "Engine/CollisionProfile.h" -#include "OculusXRRoomLayoutManagerComponent.h" -#include "OculusXRSceneGlobalMeshComponent.generated.h" - -class UMaterialInterface; - -/** - * DEPRECATED: AOculusXRSceneActor and associated classes are deprecated (v65), please use MR Utility Kit instead - * (https://developer.oculus.com/documentation/unreal/unreal-mr-utility-kit-overview) - */ -UCLASS(meta = (DisplayName = "OculusXR Scene Global Mesh Component", BlueprintSpawnableComponent)) -class OCULUSXRSCENE_API UOculusXRSceneGlobalMeshComponent : public UActorComponent -{ - GENERATED_BODY() - - virtual void TickComponent(float DeltaTime, enum ELevelTick TickType, FActorComponentTickFunction* ThisTickFunction) override; - -public: - UOculusXRSceneGlobalMeshComponent(const FObjectInitializer& ObjectInitializer); - - void CreateMeshComponent(const FOculusXRUInt64& Space, AActor* GlobalMeshAnchor, const UOculusXRRoomLayoutManagerComponent* RoomLayoutManagerComponent) const; - - static const FString GlobalMeshSemanticLabel; - -public: - UPROPERTY(BlueprintReadWrite, EditAnywhere, Category = "OculusXR") - bool Collision = false; - - UPROPERTY(BlueprintReadWrite, EditAnywhere, Category = "OculusXR") - FCollisionProfileName CollisionProfileName; - - UPROPERTY(BlueprintReadWrite, EditAnywhere, Category = "OculusXR") - bool Visible = false; - - UPROPERTY(BlueprintReadWrite, EditAnywhere, Category = "OculusXR") - UMaterialInterface* Material = nullptr; - - UPROPERTY(BlueprintReadWrite, EditAnywhere, Category = "OculusXR") - TSoftClassPtr SceneAnchorComponent = TSoftClassPtr(FSoftClassPath(UOculusXRSceneAnchorComponent::StaticClass())); - -public: - bool HasCollision() const; - - bool IsVisible() const; - - UClass* GetAnchorComponentClass() const; -}; diff --git a/Plugins/MetaXR/Source/OculusXRScene/Public/OculusXRSceneLatentActions.h b/Plugins/MetaXR/Source/OculusXRScene/Public/OculusXRSceneLatentActions.h deleted file mode 100644 index 4af537d..0000000 --- a/Plugins/MetaXR/Source/OculusXRScene/Public/OculusXRSceneLatentActions.h +++ /dev/null @@ -1,33 +0,0 @@ -// Copyright (c) Meta Platforms, Inc. and affiliates. - -#pragma once - -#include "Kismet/BlueprintAsyncActionBase.h" -#include "Templates/SharedPointer.h" -#include "OculusXRSceneTypes.h" -#include "OculusXRSceneLatentActions.generated.h" - -UCLASS() -class OCULUSXRSCENE_API UOculusXRAsyncAction_LaunchCaptureFlow : public UBlueprintAsyncActionBase -{ - GENERATED_BODY() -public: - DECLARE_DYNAMIC_MULTICAST_DELEGATE(FOculusXRAsyncAction_CaptureFlowFinished); - - UFUNCTION(BlueprintCallable, Category = "OculusXR|SpatialAnchor", meta = (WorldContext = "WorldContext", BlueprintInternalUseOnly = "true")) - static UOculusXRAsyncAction_LaunchCaptureFlow* LaunchCaptureFlowAsync(const UObject* WorldContext); - - void Activate() override; - - UPROPERTY(BlueprintAssignable) - FOculusXRAsyncAction_CaptureFlowFinished Success; - - UPROPERTY(BlueprintAssignable) - FOculusXRAsyncAction_CaptureFlowFinished Failure; - -private: - uint64 RequestId = 0; - - UFUNCTION(CallInEditor) - void OnCaptureFinish(FOculusXRUInt64 Id, bool bSuccess); -}; diff --git a/Plugins/MetaXR/Source/OculusXRScene/Public/OculusXRSceneSubsystem.h b/Plugins/MetaXR/Source/OculusXRScene/Public/OculusXRSceneSubsystem.h deleted file mode 100644 index 86ccd59..0000000 --- a/Plugins/MetaXR/Source/OculusXRScene/Public/OculusXRSceneSubsystem.h +++ /dev/null @@ -1,45 +0,0 @@ -// Copyright (c) Meta Platforms, Inc. and affiliates. - -#pragma once - -#include "OculusXRSceneTypes.h" -#include -#include - -#include "OculusXRSceneSubsystem.generated.h" - -UCLASS() -class OCULUSXRSCENE_API UOculusXRSceneSubsystem : public UGameInstanceSubsystem, public FTickableGameObject -{ - GENERATED_BODY() -public: - UOculusXRSceneSubsystem(); - - virtual bool ShouldCreateSubsystem(UObject* Outer) const override; - virtual void Initialize(FSubsystemCollectionBase& Collection) override; - virtual void Deinitialize() override; - - // FTickableGameObject implementation Begin - virtual ETickableTickType GetTickableTickType() const override; - virtual bool IsAllowedToTick() const override final; - virtual void Tick(float DeltaTime) override; - virtual TStatId GetStatId() const override { RETURN_QUICK_DECLARE_CYCLE_STAT(UOculusXRSceneSubsystem, STATGROUP_Tickables); } - // FTickableGameObject implementation End - - UFUNCTION(BlueprintCallable, Category = "OculusXR|Scene") - EOculusXRBoundaryVisibility GetBoundaryVisibility(); - - UFUNCTION(BlueprintCallable, Category = "OculusXR|Scene") - EOculusXRBoundaryVisibility GetRequestedBoundaryVisibility(); - - UFUNCTION(BlueprintCallable, Category = "OculusXR|Scene") - void SetRequestedBoundaryVisibility(EOculusXRBoundaryVisibility Visibility); - -private: - void OnBoundaryVisibilityChanged(EOculusXRBoundaryVisibility visibility); - void UpdateBoundary(); - - EOculusXRBoundaryVisibility requestedVisibilityState_; - FDelegateHandle visChangedEventHandle_; - bool bInitialized; -}; diff --git a/Plugins/MetaXR/Source/OculusXRScene/Public/OculusXRSceneTypes.h b/Plugins/MetaXR/Source/OculusXRScene/Public/OculusXRSceneTypes.h deleted file mode 100644 index abd502f..0000000 --- a/Plugins/MetaXR/Source/OculusXRScene/Public/OculusXRSceneTypes.h +++ /dev/null @@ -1,20 +0,0 @@ -// Copyright (c) Meta Platforms, Inc. and affiliates. - -#pragma once - -#include "OculusXRSceneTypes.generated.h" - -USTRUCT() -struct OCULUSXRSCENE_API FSceneTypesPlaceholder -{ - GENERATED_BODY() -public: -}; - -UENUM(BlueprintType) -enum class EOculusXRBoundaryVisibility : uint8 -{ - Invalid = 0, - NotSuppressed = 1, - Suppressed = 2 -}; diff --git a/Plugins/MetaXR/Source/OculusXRUncookedOnly/OculusXRUncookedOnly.Build.cs b/Plugins/MetaXR/Source/OculusXRUncookedOnly/OculusXRUncookedOnly.Build.cs deleted file mode 100644 index 8ba0e2d..0000000 --- a/Plugins/MetaXR/Source/OculusXRUncookedOnly/OculusXRUncookedOnly.Build.cs +++ /dev/null @@ -1,35 +0,0 @@ -// @lint-ignore-every LICENSELINT -// Copyright Epic Games, Inc. All Rights Reserved. - -using UnrealBuildTool; - -public class OculusXRUncookedOnly : ModuleRules -{ - public OculusXRUncookedOnly(ReadOnlyTargetRules Target) : base(Target) - { - bUseUnity = true; - - PrivateDependencyModuleNames.AddRange( - new string[] { - "CoreUObject", - "Engine", - "Core", - "OculusXRHMD", - "BlueprintGraph", - "OculusXRPassthrough", - "KismetCompiler", - } - ); - - PrivateIncludePaths.AddRange( - new string[] { - // Relative to Engine\Plugins\Runtime\Oculus\OculusVR\Source - "OculusXRUncookedOnly/Private", - }); - - PrivateIncludePathModuleNames.AddRange( - new string[] { - } - ); - } -} diff --git a/Plugins/MetaXR/Source/OculusXRUncookedOnly/Private/BPNode_InitializePersistentPassthrough.cpp b/Plugins/MetaXR/Source/OculusXRUncookedOnly/Private/BPNode_InitializePersistentPassthrough.cpp deleted file mode 100644 index fef3412..0000000 --- a/Plugins/MetaXR/Source/OculusXRUncookedOnly/Private/BPNode_InitializePersistentPassthrough.cpp +++ /dev/null @@ -1,120 +0,0 @@ -// Copyright (c) Meta Platforms, Inc. and affiliates. - -#include "BPNode_InitializePersistentPassthrough.h" - -#include "OculusXRPassthroughSubsystem.h" -#include "OculusXRPassthroughLayerComponent.h" -#include "BlueprintActionDatabaseRegistrar.h" -#include "BlueprintFunctionNodeSpawner.h" - -#define LOCTEXT_NAMESPACE "OculusXRPersistentPassthrough" - -// Helper which will store one of the function inputs we excpect BP callable function will have. -struct PPTNode_Helper -{ - static FName ParametersPinName; -}; - -FName PPTNode_Helper::ParametersPinName(TEXT("Parameters")); - -UFunction* UBPNode_InitializePersistentPassthrough::GetFunction() const -{ - return UOculusXRPassthroughSubsystem::StaticClass()->FindFunctionByName(GET_FUNCTION_NAME_CHECKED(UOculusXRPassthroughSubsystem, InitializePersistentPassthrough)); -} - -UEdGraphPin* UBPNode_InitializePersistentPassthrough::GetParametersPin() const -{ - UEdGraphPin* Pin = FindPin(PPTNode_Helper::ParametersPinName); - check(Pin == NULL || Pin->Direction == EGPD_Input); - return Pin; -} - -UBPNode_InitializePersistentPassthrough::UBPNode_InitializePersistentPassthrough(const FObjectInitializer& ObjectInitializer) - : Super(ObjectInitializer) -{ -} - -void UBPNode_InitializePersistentPassthrough::Serialize(FArchive& Ar) -{ - Super::Serialize(Ar); - - // Post-load validation of the enum type. - if (Ar.IsLoading() && Ar.IsPersistent() && !Ar.HasAnyPortFlags(PPF_Duplicate | PPF_DuplicateForPIE)) - { - // If valid, ensure that the shape is loaded. - if (LayerParameters.Shape != nullptr) - { - Ar.Preload(LayerParameters.Shape); - } - } -} - -void UBPNode_InitializePersistentPassthrough::PostEditChangeProperty(FPropertyChangedEvent& PropertyChangedEvent) -{ - const FName PropertyName = (PropertyChangedEvent.Property ? PropertyChangedEvent.Property->GetFName() : NAME_None); - - // When bShowInputPin changes, reconstruct node to update "Parameters" pin visibility - if (PropertyName == GET_MEMBER_NAME_CHECKED(UBPNode_InitializePersistentPassthrough, bShowInputPin)) - { - if (!bShowInputPin) - { - UEdGraphPin* TemplatePin = GetParametersPin(); - TemplatePin->BreakAllPinLinks(); - } - - GetSchema()->ReconstructNode(*this); - } - - Super::PostEditChangeProperty(PropertyChangedEvent); -} - -void UBPNode_InitializePersistentPassthrough::GetMenuActions(FBlueprintActionDatabaseRegistrar& ActionRegistrar) const -{ - // We need to manually add this node to the list of blueprint action as the original method is "BlueprintInternalUseOnly" - UClass* Action = GetClass(); - if (ActionRegistrar.IsOpenForRegistration(Action)) - { - UBlueprintFunctionNodeSpawner* Spawner = UBlueprintFunctionNodeSpawner::Create(GetClass(), GetFunction()); - check(Spawner != nullptr); - - ActionRegistrar.AddBlueprintAction(Action, Spawner); - } -} - -void UBPNode_InitializePersistentPassthrough::AllocateDefaultPins() -{ - // Initialize Shape so that it's filled at node's creation - if (!LayerParameters.Shape) - LayerParameters.Shape = NewObject(GetBlueprint(), TEXT("PPT_StereoLayerShapeReconstructed")); - - // Set "UOculusXRPassthroughSubsystem::InitializePersistentPassthrough" as the function for this node - SetFromFunction(GetFunction()); - - // Call parent method, which will generate all the pins for the function's parameters (including execute, then & self) - Super::AllocateDefaultPins(); - - // "Parameters" pin visibility depends on bShowInputPin value - GetParametersPin()->bHidden = !bShowInputPin; -} - -void UBPNode_InitializePersistentPassthrough::ExpandNode(class FKismetCompilerContext& CompilerContext, UEdGraph* SourceGraph) -{ - ensureAlwaysMsgf(LayerParameters.Shape, TEXT("UBPNode_InitializePersistentPassthrough : Shape is nullptr")); - - // If "bShowInputPin" is set to false, use "LayerParameters" for the pin's default value - if (!bShowInputPin) - { - UScriptStruct* StructType = FOculusXRPersistentPassthroughParameters::StaticStruct(); - - // Applies all the shape properties since this node is editor only and LayerParameters.Shape will not available for standalone builds. - LayerParameters.ApplyShape(); - - FString StringValue; - StructType->ExportText(StringValue, &LayerParameters, nullptr, nullptr, EPropertyPortFlags::PPF_SerializedAsImportText, nullptr); - GetParametersPin()->GetSchema()->TrySetDefaultValue(*GetParametersPin(), StringValue); - } - - Super::ExpandNode(CompilerContext, SourceGraph); -} - -#undef LOCTEXT_NAMESPACE diff --git a/Plugins/MetaXR/Source/OculusXRUncookedOnly/Private/BPNode_InitializePersistentPassthrough.h b/Plugins/MetaXR/Source/OculusXRUncookedOnly/Private/BPNode_InitializePersistentPassthrough.h deleted file mode 100644 index 8886467..0000000 --- a/Plugins/MetaXR/Source/OculusXRUncookedOnly/Private/BPNode_InitializePersistentPassthrough.h +++ /dev/null @@ -1,46 +0,0 @@ -// Copyright (c) Meta Platforms, Inc. and affiliates. - -#pragma once - -#include "CoreMinimal.h" -// #include "EdGraph/EdGraphNode.h" -// #include "K2Node.h" -#include "K2Node_CallFunction.h" -#include "OculusXRPersistentPassthroughInstance.h" - -#include "BPNode_InitializePersistentPassthrough.generated.h" - -class FBlueprintActionDatabaseRegistrar; - -UCLASS(BlueprintType, Blueprintable) -class OCULUSXRUNCOOKEDONLY_API UBPNode_InitializePersistentPassthrough : public UK2Node_CallFunction -{ - GENERATED_UCLASS_BODY() - - UBPNode_InitializePersistentPassthrough(); - - //~ Begin UObject Interface - virtual void Serialize(FArchive& Ar) override; - virtual void PostEditChangeProperty(struct FPropertyChangedEvent& PropertyChangedEvent) override; - //~ End UObject Interface - - // Begin UEdGraphNode interface. - virtual void AllocateDefaultPins() override; - virtual void ExpandNode(class FKismetCompilerContext& CompilerContext, UEdGraph* SourceGraph) override; - // End UEdGraphNode interface. - - // Begin UK2Node interface - void GetMenuActions(FBlueprintActionDatabaseRegistrar& ActionRegistrar) const override; - virtual bool ShouldShowNodeProperties() const override { return true; } - // End UK2Node interface. - - UFunction* GetFunction() const; - UEdGraphPin* GetParametersPin() const; - - UPROPERTY(EditAnywhere, Category = "Parameters") - bool bShowInputPin = false; - UPROPERTY(EditAnywhere, Category = "Parameters", meta = (EditCondition = "!bShowInputPin")) - FOculusXRPersistentPassthroughParameters LayerParameters; - -protected: -}; diff --git a/Plugins/MetaXR/Source/OculusXRUncookedOnly/Private/OculusXRUncookedOnlyModule.cpp b/Plugins/MetaXR/Source/OculusXRUncookedOnly/Private/OculusXRUncookedOnlyModule.cpp deleted file mode 100644 index e390503..0000000 --- a/Plugins/MetaXR/Source/OculusXRUncookedOnly/Private/OculusXRUncookedOnlyModule.cpp +++ /dev/null @@ -1,5 +0,0 @@ -// Copyright (c) Meta Platforms, Inc. and affiliates. - -#include "Modules/ModuleManager.h" - -IMPLEMENT_MODULE(FDefaultModuleImpl, OculusXRUncookedOnly); diff --git a/Plugins/MetaXR/Source/Thirdparty/KhronosOpenXR/KhronosOpenXRHeaders.build.cs b/Plugins/MetaXR/Source/Thirdparty/KhronosOpenXR/KhronosOpenXRHeaders.build.cs deleted file mode 100644 index dafe75a..0000000 --- a/Plugins/MetaXR/Source/Thirdparty/KhronosOpenXR/KhronosOpenXRHeaders.build.cs +++ /dev/null @@ -1,15 +0,0 @@ -using UnrealBuildTool; - -public class KhronosOpenXRHeaders : ModuleRules -{ - public KhronosOpenXRHeaders(ReadOnlyTargetRules Target) : base(Target) - { - Type = ModuleType.External; - - string SourceDirectory = "$(PluginDir)/Source/ThirdParty/KhronosOpenXR/"; - - PublicIncludePaths.Add(SourceDirectory + "include"); - PublicIncludePaths.Add(SourceDirectory + "src/common"); - } -} - diff --git a/Plugins/MetaXR/Source/Thirdparty/KhronosOpenXR/LICENSE b/Plugins/MetaXR/Source/Thirdparty/KhronosOpenXR/LICENSE deleted file mode 100644 index d645695..0000000 --- a/Plugins/MetaXR/Source/Thirdparty/KhronosOpenXR/LICENSE +++ /dev/null @@ -1,202 +0,0 @@ - - Apache License - Version 2.0, January 2004 - http://www.apache.org/licenses/ - - TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION - - 1. Definitions. - - "License" shall mean the terms and conditions for use, reproduction, - and distribution as defined by Sections 1 through 9 of this document. - - "Licensor" shall mean the copyright owner or entity authorized by - the copyright owner that is granting the License. - - "Legal Entity" shall mean the union of the acting entity and all - other entities that control, are controlled by, or are under common - control with that entity. For the purposes of this definition, - "control" means (i) the power, direct or indirect, to cause the - direction or management of such entity, whether by contract or - otherwise, or (ii) ownership of fifty percent (50%) or more of the - outstanding shares, or (iii) beneficial ownership of such entity. - - "You" (or "Your") shall mean an individual or Legal Entity - exercising permissions granted by this License. - - "Source" form shall mean the preferred form for making modifications, - including but not limited to software source code, documentation - source, and configuration files. - - "Object" form shall mean any form resulting from mechanical - transformation or translation of a Source form, including but - not limited to compiled object code, generated documentation, - and conversions to other media types. - - "Work" shall mean the work of authorship, whether in Source or - Object form, made available under the License, as indicated by a - copyright notice that is included in or attached to the work - (an example is provided in the Appendix below). - - "Derivative Works" shall mean any work, whether in Source or Object - form, that is based on (or derived from) the Work and for which the - editorial revisions, annotations, elaborations, or other modifications - represent, as a whole, an original work of authorship. For the purposes - of this License, Derivative Works shall not include works that remain - separable from, or merely link (or bind by name) to the interfaces of, - the Work and Derivative Works thereof. - - "Contribution" shall mean any work of authorship, including - the original version of the Work and any modifications or additions - to that Work or Derivative Works thereof, that is intentionally - submitted to Licensor for inclusion in the Work by the copyright owner - or by an individual or Legal Entity authorized to submit on behalf of - the copyright owner. For the purposes of this definition, "submitted" - means any form of electronic, verbal, or written communication sent - to the Licensor or its representatives, including but not limited to - communication on electronic mailing lists, source code control systems, - and issue tracking systems that are managed by, or on behalf of, the - Licensor for the purpose of discussing and improving the Work, but - excluding communication that is conspicuously marked or otherwise - designated in writing by the copyright owner as "Not a Contribution." - - "Contributor" shall mean Licensor and any individual or Legal Entity - on behalf of whom a Contribution has been received by Licensor and - subsequently incorporated within the Work. - - 2. Grant of Copyright License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - copyright license to reproduce, prepare Derivative Works of, - publicly display, publicly perform, sublicense, and distribute the - Work and such Derivative Works in Source or Object form. - - 3. Grant of Patent License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - (except as stated in this section) patent license to make, have made, - use, offer to sell, sell, import, and otherwise transfer the Work, - where such license applies only to those patent claims licensable - by such Contributor that are necessarily infringed by their - Contribution(s) alone or by combination of their Contribution(s) - with the Work to which such Contribution(s) was submitted. If You - institute patent litigation against any entity (including a - cross-claim or counterclaim in a lawsuit) alleging that the Work - or a Contribution incorporated within the Work constitutes direct - or contributory patent infringement, then any patent licenses - granted to You under this License for that Work shall terminate - as of the date such litigation is filed. - - 4. Redistribution. You may reproduce and distribute copies of the - Work or Derivative Works thereof in any medium, with or without - modifications, and in Source or Object form, provided that You - meet the following conditions: - - (a) You must give any other recipients of the Work or - Derivative Works a copy of this License; and - - (b) You must cause any modified files to carry prominent notices - stating that You changed the files; and - - (c) You must retain, in the Source form of any Derivative Works - that You distribute, all copyright, patent, trademark, and - attribution notices from the Source form of the Work, - excluding those notices that do not pertain to any part of - the Derivative Works; and - - (d) If the Work includes a "NOTICE" text file as part of its - distribution, then any Derivative Works that You distribute must - include a readable copy of the attribution notices contained - within such NOTICE file, excluding those notices that do not - pertain to any part of the Derivative Works, in at least one - of the following places: within a NOTICE text file distributed - as part of the Derivative Works; within the Source form or - documentation, if provided along with the Derivative Works; or, - within a display generated by the Derivative Works, if and - wherever such third-party notices normally appear. The contents - of the NOTICE file are for informational purposes only and - do not modify the License. You may add Your own attribution - notices within Derivative Works that You distribute, alongside - or as an addendum to the NOTICE text from the Work, provided - that such additional attribution notices cannot be construed - as modifying the License. - - You may add Your own copyright statement to Your modifications and - may provide additional or different license terms and conditions - for use, reproduction, or distribution of Your modifications, or - for any such Derivative Works as a whole, provided Your use, - reproduction, and distribution of the Work otherwise complies with - the conditions stated in this License. - - 5. Submission of Contributions. Unless You explicitly state otherwise, - any Contribution intentionally submitted for inclusion in the Work - by You to the Licensor shall be under the terms and conditions of - this License, without any additional terms or conditions. - Notwithstanding the above, nothing herein shall supersede or modify - the terms of any separate license agreement you may have executed - with Licensor regarding such Contributions. - - 6. Trademarks. This License does not grant permission to use the trade - names, trademarks, service marks, or product names of the Licensor, - except as required for reasonable and customary use in describing the - origin of the Work and reproducing the content of the NOTICE file. - - 7. Disclaimer of Warranty. Unless required by applicable law or - agreed to in writing, Licensor provides the Work (and each - Contributor provides its Contributions) on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or - implied, including, without limitation, any warranties or conditions - of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A - PARTICULAR PURPOSE. You are solely responsible for determining the - appropriateness of using or redistributing the Work and assume any - risks associated with Your exercise of permissions under this License. - - 8. Limitation of Liability. In no event and under no legal theory, - whether in tort (including negligence), contract, or otherwise, - unless required by applicable law (such as deliberate and grossly - negligent acts) or agreed to in writing, shall any Contributor be - liable to You for damages, including any direct, indirect, special, - incidental, or consequential damages of any character arising as a - result of this License or out of the use or inability to use the - Work (including but not limited to damages for loss of goodwill, - work stoppage, computer failure or malfunction, or any and all - other commercial damages or losses), even if such Contributor - has been advised of the possibility of such damages. - - 9. Accepting Warranty or Additional Liability. While redistributing - the Work or Derivative Works thereof, You may choose to offer, - and charge a fee for, acceptance of support, warranty, indemnity, - or other liability obligations and/or rights consistent with this - License. However, in accepting such obligations, You may act only - on Your own behalf and on Your sole responsibility, not on behalf - of any other Contributor, and only if You agree to indemnify, - defend, and hold each Contributor harmless for any liability - incurred by, or claims asserted against, such Contributor by reason - of your accepting any such warranty or additional liability. - - END OF TERMS AND CONDITIONS - - APPENDIX: How to apply the Apache License to your work. - - To apply the Apache License to your work, attach the following - boilerplate notice, with the fields enclosed by brackets "[]" - replaced with your own identifying information. (Don't include - the brackets!) The text should be enclosed in the appropriate - comment syntax for the file format. We also recommend that a - file or class name and description of purpose be included on the - same "printed page" as the copyright notice for easier - identification within third-party archives. - - Copyright [yyyy] [name of copyright owner] - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. diff --git a/Plugins/MetaXR/Source/Thirdparty/KhronosOpenXR/LICENSES/Apache-2.0.txt b/Plugins/MetaXR/Source/Thirdparty/KhronosOpenXR/LICENSES/Apache-2.0.txt deleted file mode 100644 index 527a83a..0000000 --- a/Plugins/MetaXR/Source/Thirdparty/KhronosOpenXR/LICENSES/Apache-2.0.txt +++ /dev/null @@ -1,208 +0,0 @@ -Apache License - -Version 2.0, January 2004 - -http://www.apache.org/licenses/ TERMS AND CONDITIONS FOR USE, REPRODUCTION, -AND DISTRIBUTION - - 1. Definitions. - - - -"License" shall mean the terms and conditions for use, reproduction, and distribution -as defined by Sections 1 through 9 of this document. - - - -"Licensor" shall mean the copyright owner or entity authorized by the copyright -owner that is granting the License. - - - -"Legal Entity" shall mean the union of the acting entity and all other entities -that control, are controlled by, or are under common control with that entity. -For the purposes of this definition, "control" means (i) the power, direct -or indirect, to cause the direction or management of such entity, whether -by contract or otherwise, or (ii) ownership of fifty percent (50%) or more -of the outstanding shares, or (iii) beneficial ownership of such entity. - - - -"You" (or "Your") shall mean an individual or Legal Entity exercising permissions -granted by this License. - - - -"Source" form shall mean the preferred form for making modifications, including -but not limited to software source code, documentation source, and configuration -files. - - - -"Object" form shall mean any form resulting from mechanical transformation -or translation of a Source form, including but not limited to compiled object -code, generated documentation, and conversions to other media types. - - - -"Work" shall mean the work of authorship, whether in Source or Object form, -made available under the License, as indicated by a copyright notice that -is included in or attached to the work (an example is provided in the Appendix -below). - - - -"Derivative Works" shall mean any work, whether in Source or Object form, -that is based on (or derived from) the Work and for which the editorial revisions, -annotations, elaborations, or other modifications represent, as a whole, an -original work of authorship. For the purposes of this License, Derivative -Works shall not include works that remain separable from, or merely link (or -bind by name) to the interfaces of, the Work and Derivative Works thereof. - - - -"Contribution" shall mean any work of authorship, including the original version -of the Work and any modifications or additions to that Work or Derivative -Works thereof, that is intentionally submitted to Licensor for inclusion in -the Work by the copyright owner or by an individual or Legal Entity authorized -to submit on behalf of the copyright owner. For the purposes of this definition, -"submitted" means any form of electronic, verbal, or written communication -sent to the Licensor or its representatives, including but not limited to -communication on electronic mailing lists, source code control systems, and -issue tracking systems that are managed by, or on behalf of, the Licensor -for the purpose of discussing and improving the Work, but excluding communication -that is conspicuously marked or otherwise designated in writing by the copyright -owner as "Not a Contribution." - - - -"Contributor" shall mean Licensor and any individual or Legal Entity on behalf -of whom a Contribution has been received by Licensor and subsequently incorporated -within the Work. - -2. Grant of Copyright License. Subject to the terms and conditions of this -License, each Contributor hereby grants to You a perpetual, worldwide, non-exclusive, -no-charge, royalty-free, irrevocable copyright license to reproduce, prepare -Derivative Works of, publicly display, publicly perform, sublicense, and distribute -the Work and such Derivative Works in Source or Object form. - -3. Grant of Patent License. Subject to the terms and conditions of this License, -each Contributor hereby grants to You a perpetual, worldwide, non-exclusive, -no-charge, royalty-free, irrevocable (except as stated in this section) patent -license to make, have made, use, offer to sell, sell, import, and otherwise -transfer the Work, where such license applies only to those patent claims -licensable by such Contributor that are necessarily infringed by their Contribution(s) -alone or by combination of their Contribution(s) with the Work to which such -Contribution(s) was submitted. If You institute patent litigation against -any entity (including a cross-claim or counterclaim in a lawsuit) alleging -that the Work or a Contribution incorporated within the Work constitutes direct -or contributory patent infringement, then any patent licenses granted to You -under this License for that Work shall terminate as of the date such litigation -is filed. - -4. Redistribution. You may reproduce and distribute copies of the Work or -Derivative Works thereof in any medium, with or without modifications, and -in Source or Object form, provided that You meet the following conditions: - -(a) You must give any other recipients of the Work or Derivative Works a copy -of this License; and - -(b) You must cause any modified files to carry prominent notices stating that -You changed the files; and - -(c) You must retain, in the Source form of any Derivative Works that You distribute, -all copyright, patent, trademark, and attribution notices from the Source -form of the Work, excluding those notices that do not pertain to any part -of the Derivative Works; and - -(d) If the Work includes a "NOTICE" text file as part of its distribution, -then any Derivative Works that You distribute must include a readable copy -of the attribution notices contained within such NOTICE file, excluding those -notices that do not pertain to any part of the Derivative Works, in at least -one of the following places: within a NOTICE text file distributed as part -of the Derivative Works; within the Source form or documentation, if provided -along with the Derivative Works; or, within a display generated by the Derivative -Works, if and wherever such third-party notices normally appear. The contents -of the NOTICE file are for informational purposes only and do not modify the -License. You may add Your own attribution notices within Derivative Works -that You distribute, alongside or as an addendum to the NOTICE text from the -Work, provided that such additional attribution notices cannot be construed -as modifying the License. - -You may add Your own copyright statement to Your modifications and may provide -additional or different license terms and conditions for use, reproduction, -or distribution of Your modifications, or for any such Derivative Works as -a whole, provided Your use, reproduction, and distribution of the Work otherwise -complies with the conditions stated in this License. - -5. Submission of Contributions. Unless You explicitly state otherwise, any -Contribution intentionally submitted for inclusion in the Work by You to the -Licensor shall be under the terms and conditions of this License, without -any additional terms or conditions. Notwithstanding the above, nothing herein -shall supersede or modify the terms of any separate license agreement you -may have executed with Licensor regarding such Contributions. - -6. Trademarks. This License does not grant permission to use the trade names, -trademarks, service marks, or product names of the Licensor, except as required -for reasonable and customary use in describing the origin of the Work and -reproducing the content of the NOTICE file. - -7. Disclaimer of Warranty. Unless required by applicable law or agreed to -in writing, Licensor provides the Work (and each Contributor provides its -Contributions) on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY -KIND, either express or implied, including, without limitation, any warranties -or conditions of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR -A PARTICULAR PURPOSE. You are solely responsible for determining the appropriateness -of using or redistributing the Work and assume any risks associated with Your -exercise of permissions under this License. - -8. Limitation of Liability. In no event and under no legal theory, whether -in tort (including negligence), contract, or otherwise, unless required by -applicable law (such as deliberate and grossly negligent acts) or agreed to -in writing, shall any Contributor be liable to You for damages, including -any direct, indirect, special, incidental, or consequential damages of any -character arising as a result of this License or out of the use or inability -to use the Work (including but not limited to damages for loss of goodwill, -work stoppage, computer failure or malfunction, or any and all other commercial -damages or losses), even if such Contributor has been advised of the possibility -of such damages. - -9. Accepting Warranty or Additional Liability. While redistributing the Work -or Derivative Works thereof, You may choose to offer, and charge a fee for, -acceptance of support, warranty, indemnity, or other liability obligations -and/or rights consistent with this License. However, in accepting such obligations, -You may act only on Your own behalf and on Your sole responsibility, not on -behalf of any other Contributor, and only if You agree to indemnify, defend, -and hold each Contributor harmless for any liability incurred by, or claims -asserted against, such Contributor by reason of your accepting any such warranty -or additional liability. END OF TERMS AND CONDITIONS - -APPENDIX: How to apply the Apache License to your work. - -To apply the Apache License to your work, attach the following boilerplate -notice, with the fields enclosed by brackets "[]" replaced with your own identifying -information. (Don't include the brackets!) The text should be enclosed in -the appropriate comment syntax for the file format. We also recommend that -a file or class name and description of purpose be included on the same "printed -page" as the copyright notice for easier identification within third-party -archives. - -Copyright [yyyy] [name of copyright owner] - -Licensed under the Apache License, Version 2.0 (the "License"); - -you may not use this file except in compliance with the License. - -You may obtain a copy of the License at - -http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software - -distributed under the License is distributed on an "AS IS" BASIS, - -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - -See the License for the specific language governing permissions and - -limitations under the License. diff --git a/Plugins/MetaXR/Source/Thirdparty/KhronosOpenXR/LICENSES/MIT.txt b/Plugins/MetaXR/Source/Thirdparty/KhronosOpenXR/LICENSES/MIT.txt deleted file mode 100644 index 204b93d..0000000 --- a/Plugins/MetaXR/Source/Thirdparty/KhronosOpenXR/LICENSES/MIT.txt +++ /dev/null @@ -1,19 +0,0 @@ -MIT License Copyright (c) - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is furnished -to do so, subject to the following conditions: - -The above copyright notice and this permission notice (including the next -paragraph) shall be included in all copies or substantial portions of the -Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS -FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS -OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, -WHETHER IN AN ACTION 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/Plugins/MetaXR/Source/Thirdparty/KhronosOpenXR/include/khronos/openxr/meta_openxr_preview/meta_body_tracking_calibration.h b/Plugins/MetaXR/Source/Thirdparty/KhronosOpenXR/include/khronos/openxr/meta_openxr_preview/meta_body_tracking_calibration.h deleted file mode 100644 index 119b649..0000000 --- a/Plugins/MetaXR/Source/Thirdparty/KhronosOpenXR/include/khronos/openxr/meta_openxr_preview/meta_body_tracking_calibration.h +++ /dev/null @@ -1,74 +0,0 @@ -#ifndef META_BODY_TRACKING_CALIBRATION_H_ -#define META_BODY_TRACKING_CALIBRATION_H_ 1 - -/********************** -This file is @generated from the OpenXR XML API registry. -Language : C99 -Copyright : (c) Meta Platforms, Inc. and affiliates. Confidential and proprietary. -***********************/ - -#include - -#ifdef __cplusplus -extern "C" { -#endif - - -#ifndef XR_META_body_tracking_calibration - -// XR_META_body_tracking_calibration is a preprocessor guard. Do not pass it to API calls. -#define XR_META_body_tracking_calibration 1 -#define XR_META_body_tracking_calibration_SPEC_VERSION 1 -#define XR_META_BODY_TRACKING_CALIBRATION_EXTENSION_NAME "XR_META_body_tracking_calibration" -static const XrStructureType XR_TYPE_BODY_TRACKING_CALIBRATION_INFO_META = (XrStructureType) 1000283002; -static const XrStructureType XR_TYPE_BODY_TRACKING_CALIBRATION_STATUS_META = (XrStructureType) 1000283003; -static const XrStructureType XR_TYPE_SYSTEM_PROPERTIES_BODY_TRACKING_CALIBRATION_META = (XrStructureType) 1000283004; - -typedef enum XrBodyTrackingCalibrationStateMETA { - // Valid calibration, pose is safe to use - XR_BODY_TRACKING_CALIBRATION_STATE_VALID_META = 1, - // Calibration is still running, pose may be incorrect - XR_BODY_TRACKING_CALIBRATION_STATE_CALIBRATING_META = 2, - // Calibration is invalid, pose is not safe to use - XR_BODY_TRACKING_CALIBRATION_STATE_INVALID_META = 3, - XR_BODY_TRACKING_CALIBRATION_STATE_MAX_ENUM_META = 0x7FFFFFFF -} XrBodyTrackingCalibrationStateMETA; -// XrBodyTrackingCalibrationStatusMETA extends XrBodyJointLocationsFB -typedef struct XrBodyTrackingCalibrationStatusMETA { - XrStructureType type; - void* XR_MAY_ALIAS next; - XrBodyTrackingCalibrationStateMETA status; -} XrBodyTrackingCalibrationStatusMETA; - -typedef struct XrBodyTrackingCalibrationInfoMETA { - XrStructureType type; - const void* XR_MAY_ALIAS next; - float bodyHeight; -} XrBodyTrackingCalibrationInfoMETA; - -typedef struct XrSystemPropertiesBodyTrackingCalibrationMETA { - XrStructureType type; - void* XR_MAY_ALIAS next; - XrBool32 supportsHeightOverride; -} XrSystemPropertiesBodyTrackingCalibrationMETA; - -typedef XrResult (XRAPI_PTR *PFN_xrSuggestBodyTrackingCalibrationOverrideMETA)(XrBodyTrackerFB bodyTracker, const XrBodyTrackingCalibrationInfoMETA* calibrationInfo); -typedef XrResult (XRAPI_PTR *PFN_xrResetBodyTrackingCalibrationMETA)(XrBodyTrackerFB bodyTracker); - -#ifndef XR_NO_PROTOTYPES -#ifdef XR_EXTENSION_PROTOTYPES -XRAPI_ATTR XrResult XRAPI_CALL xrSuggestBodyTrackingCalibrationOverrideMETA( - XrBodyTrackerFB bodyTracker, - const XrBodyTrackingCalibrationInfoMETA* calibrationInfo); - -XRAPI_ATTR XrResult XRAPI_CALL xrResetBodyTrackingCalibrationMETA( - XrBodyTrackerFB bodyTracker); -#endif /* XR_EXTENSION_PROTOTYPES */ -#endif /* !XR_NO_PROTOTYPES */ -#endif /* XR_META_body_tracking_calibration */ - -#ifdef __cplusplus -} -#endif - -#endif diff --git a/Plugins/MetaXR/Source/Thirdparty/KhronosOpenXR/include/khronos/openxr/meta_openxr_preview/meta_body_tracking_fidelity.h b/Plugins/MetaXR/Source/Thirdparty/KhronosOpenXR/include/khronos/openxr/meta_openxr_preview/meta_body_tracking_fidelity.h deleted file mode 100644 index bbbb7a0..0000000 --- a/Plugins/MetaXR/Source/Thirdparty/KhronosOpenXR/include/khronos/openxr/meta_openxr_preview/meta_body_tracking_fidelity.h +++ /dev/null @@ -1,59 +0,0 @@ -#ifndef META_BODY_TRACKING_FIDELITY_H_ -#define META_BODY_TRACKING_FIDELITY_H_ 1 - -/********************** -This file is @generated from the OpenXR XML API registry. -Language : C99 -Copyright : (c) Meta Platforms, Inc. and affiliates. Confidential and proprietary. -***********************/ - -#include - -#ifdef __cplusplus -extern "C" { -#endif - - -#ifndef XR_META_body_tracking_fidelity - -// XR_META_body_tracking_fidelity is a preprocessor guard. Do not pass it to API calls. -#define XR_META_body_tracking_fidelity 1 -#define XR_META_body_tracking_fidelity_SPEC_VERSION 1 -#define XR_META_BODY_TRACKING_FIDELITY_EXTENSION_NAME "XR_META_body_tracking_fidelity" -static const XrStructureType XR_TYPE_BODY_TRACKING_FIDELITY_STATUS_META = (XrStructureType) 1000284000; -static const XrStructureType XR_TYPE_SYSTEM_PROPERTIES_BODY_TRACKING_FIDELITY_META = (XrStructureType) 1000284001; - -typedef enum XrBodyTrackingFidelityMETA { - XR_BODY_TRACKING_FIDELITY_LOW_META = 1, - XR_BODY_TRACKING_FIDELITY_HIGH_META = 2, - XR_BODY_TRACKING_FIDELITY_MAX_ENUM_META = 0x7FFFFFFF -} XrBodyTrackingFidelityMETA; -typedef struct XrSystemPropertiesBodyTrackingFidelityMETA { - XrStructureType type; - void* XR_MAY_ALIAS next; - XrBool32 supportsBodyTrackingFidelity; -} XrSystemPropertiesBodyTrackingFidelityMETA; - -// XrBodyTrackingFidelityStatusMETA extends XrBodyJointLocationsFB -typedef struct XrBodyTrackingFidelityStatusMETA { - XrStructureType type; - const void* XR_MAY_ALIAS next; - XrBodyTrackingFidelityMETA fidelity; -} XrBodyTrackingFidelityStatusMETA; - -typedef XrResult (XRAPI_PTR *PFN_xrRequestBodyTrackingFidelityMETA)(XrBodyTrackerFB bodyTracker, const XrBodyTrackingFidelityMETA fidelity); - -#ifndef XR_NO_PROTOTYPES -#ifdef XR_EXTENSION_PROTOTYPES -XRAPI_ATTR XrResult XRAPI_CALL xrRequestBodyTrackingFidelityMETA( - XrBodyTrackerFB bodyTracker, - const XrBodyTrackingFidelityMETA fidelity); -#endif /* XR_EXTENSION_PROTOTYPES */ -#endif /* !XR_NO_PROTOTYPES */ -#endif /* XR_META_body_tracking_fidelity */ - -#ifdef __cplusplus -} -#endif - -#endif diff --git a/Plugins/MetaXR/Source/Thirdparty/KhronosOpenXR/include/khronos/openxr/meta_openxr_preview/meta_body_tracking_full_body.h b/Plugins/MetaXR/Source/Thirdparty/KhronosOpenXR/include/khronos/openxr/meta_openxr_preview/meta_body_tracking_full_body.h deleted file mode 100644 index b496c39..0000000 --- a/Plugins/MetaXR/Source/Thirdparty/KhronosOpenXR/include/khronos/openxr/meta_openxr_preview/meta_body_tracking_full_body.h +++ /dev/null @@ -1,127 +0,0 @@ -#ifndef META_BODY_TRACKING_FULL_BODY_H_ -#define META_BODY_TRACKING_FULL_BODY_H_ 1 - -/********************** -This file is @generated from the OpenXR XML API registry. -Language : C99 -Copyright : (c) Meta Platforms, Inc. and affiliates. Confidential and proprietary. -***********************/ - -#include - -#ifdef __cplusplus -extern "C" { -#endif - - -#ifndef XR_META_body_tracking_full_body - -// XR_META_body_tracking_full_body is a preprocessor guard. Do not pass it to API calls. -#define XR_META_body_tracking_full_body 1 -#define XR_META_body_tracking_full_body_SPEC_VERSION 1 -#define XR_META_BODY_TRACKING_FULL_BODY_EXTENSION_NAME "XR_META_body_tracking_full_body" -static const XrStructureType XR_TYPE_SYSTEM_PROPERTIES_BODY_TRACKING_FULL_BODY_META = (XrStructureType) 1000274000; -static const XrBodyJointSetFB XR_BODY_JOINT_SET_FULL_BODY_META = (XrBodyJointSetFB) 1000274000; - -typedef enum XrFullBodyJointMETA { - XR_FULL_BODY_JOINT_ROOT_META = 0, - XR_FULL_BODY_JOINT_HIPS_META = 1, - XR_FULL_BODY_JOINT_SPINE_LOWER_META = 2, - XR_FULL_BODY_JOINT_SPINE_MIDDLE_META = 3, - XR_FULL_BODY_JOINT_SPINE_UPPER_META = 4, - XR_FULL_BODY_JOINT_CHEST_META = 5, - XR_FULL_BODY_JOINT_NECK_META = 6, - XR_FULL_BODY_JOINT_HEAD_META = 7, - XR_FULL_BODY_JOINT_LEFT_SHOULDER_META = 8, - XR_FULL_BODY_JOINT_LEFT_SCAPULA_META = 9, - XR_FULL_BODY_JOINT_LEFT_ARM_UPPER_META = 10, - XR_FULL_BODY_JOINT_LEFT_ARM_LOWER_META = 11, - XR_FULL_BODY_JOINT_LEFT_HAND_WRIST_TWIST_META = 12, - XR_FULL_BODY_JOINT_RIGHT_SHOULDER_META = 13, - XR_FULL_BODY_JOINT_RIGHT_SCAPULA_META = 14, - XR_FULL_BODY_JOINT_RIGHT_ARM_UPPER_META = 15, - XR_FULL_BODY_JOINT_RIGHT_ARM_LOWER_META = 16, - XR_FULL_BODY_JOINT_RIGHT_HAND_WRIST_TWIST_META = 17, - XR_FULL_BODY_JOINT_LEFT_HAND_PALM_META = 18, - XR_FULL_BODY_JOINT_LEFT_HAND_WRIST_META = 19, - XR_FULL_BODY_JOINT_LEFT_HAND_THUMB_METACARPAL_META = 20, - XR_FULL_BODY_JOINT_LEFT_HAND_THUMB_PROXIMAL_META = 21, - XR_FULL_BODY_JOINT_LEFT_HAND_THUMB_DISTAL_META = 22, - XR_FULL_BODY_JOINT_LEFT_HAND_THUMB_TIP_META = 23, - XR_FULL_BODY_JOINT_LEFT_HAND_INDEX_METACARPAL_META = 24, - XR_FULL_BODY_JOINT_LEFT_HAND_INDEX_PROXIMAL_META = 25, - XR_FULL_BODY_JOINT_LEFT_HAND_INDEX_INTERMEDIATE_META = 26, - XR_FULL_BODY_JOINT_LEFT_HAND_INDEX_DISTAL_META = 27, - XR_FULL_BODY_JOINT_LEFT_HAND_INDEX_TIP_META = 28, - XR_FULL_BODY_JOINT_LEFT_HAND_MIDDLE_METACARPAL_META = 29, - XR_FULL_BODY_JOINT_LEFT_HAND_MIDDLE_PROXIMAL_META = 30, - XR_FULL_BODY_JOINT_LEFT_HAND_MIDDLE_INTERMEDIATE_META = 31, - XR_FULL_BODY_JOINT_LEFT_HAND_MIDDLE_DISTAL_META = 32, - XR_FULL_BODY_JOINT_LEFT_HAND_MIDDLE_TIP_META = 33, - XR_FULL_BODY_JOINT_LEFT_HAND_RING_METACARPAL_META = 34, - XR_FULL_BODY_JOINT_LEFT_HAND_RING_PROXIMAL_META = 35, - XR_FULL_BODY_JOINT_LEFT_HAND_RING_INTERMEDIATE_META = 36, - XR_FULL_BODY_JOINT_LEFT_HAND_RING_DISTAL_META = 37, - XR_FULL_BODY_JOINT_LEFT_HAND_RING_TIP_META = 38, - XR_FULL_BODY_JOINT_LEFT_HAND_LITTLE_METACARPAL_META = 39, - XR_FULL_BODY_JOINT_LEFT_HAND_LITTLE_PROXIMAL_META = 40, - XR_FULL_BODY_JOINT_LEFT_HAND_LITTLE_INTERMEDIATE_META = 41, - XR_FULL_BODY_JOINT_LEFT_HAND_LITTLE_DISTAL_META = 42, - XR_FULL_BODY_JOINT_LEFT_HAND_LITTLE_TIP_META = 43, - XR_FULL_BODY_JOINT_RIGHT_HAND_PALM_META = 44, - XR_FULL_BODY_JOINT_RIGHT_HAND_WRIST_META = 45, - XR_FULL_BODY_JOINT_RIGHT_HAND_THUMB_METACARPAL_META = 46, - XR_FULL_BODY_JOINT_RIGHT_HAND_THUMB_PROXIMAL_META = 47, - XR_FULL_BODY_JOINT_RIGHT_HAND_THUMB_DISTAL_META = 48, - XR_FULL_BODY_JOINT_RIGHT_HAND_THUMB_TIP_META = 49, - XR_FULL_BODY_JOINT_RIGHT_HAND_INDEX_METACARPAL_META = 50, - XR_FULL_BODY_JOINT_RIGHT_HAND_INDEX_PROXIMAL_META = 51, - XR_FULL_BODY_JOINT_RIGHT_HAND_INDEX_INTERMEDIATE_META = 52, - XR_FULL_BODY_JOINT_RIGHT_HAND_INDEX_DISTAL_META = 53, - XR_FULL_BODY_JOINT_RIGHT_HAND_INDEX_TIP_META = 54, - XR_FULL_BODY_JOINT_RIGHT_HAND_MIDDLE_METACARPAL_META = 55, - XR_FULL_BODY_JOINT_RIGHT_HAND_MIDDLE_PROXIMAL_META = 56, - XR_FULL_BODY_JOINT_RIGHT_HAND_MIDDLE_INTERMEDIATE_META = 57, - XR_FULL_BODY_JOINT_RIGHT_HAND_MIDDLE_DISTAL_META = 58, - XR_FULL_BODY_JOINT_RIGHT_HAND_MIDDLE_TIP_META = 59, - XR_FULL_BODY_JOINT_RIGHT_HAND_RING_METACARPAL_META = 60, - XR_FULL_BODY_JOINT_RIGHT_HAND_RING_PROXIMAL_META = 61, - XR_FULL_BODY_JOINT_RIGHT_HAND_RING_INTERMEDIATE_META = 62, - XR_FULL_BODY_JOINT_RIGHT_HAND_RING_DISTAL_META = 63, - XR_FULL_BODY_JOINT_RIGHT_HAND_RING_TIP_META = 64, - XR_FULL_BODY_JOINT_RIGHT_HAND_LITTLE_METACARPAL_META = 65, - XR_FULL_BODY_JOINT_RIGHT_HAND_LITTLE_PROXIMAL_META = 66, - XR_FULL_BODY_JOINT_RIGHT_HAND_LITTLE_INTERMEDIATE_META = 67, - XR_FULL_BODY_JOINT_RIGHT_HAND_LITTLE_DISTAL_META = 68, - XR_FULL_BODY_JOINT_RIGHT_HAND_LITTLE_TIP_META = 69, - XR_FULL_BODY_JOINT_LEFT_UPPER_LEG_META = 70, - XR_FULL_BODY_JOINT_LEFT_LOWER_LEG_META = 71, - XR_FULL_BODY_JOINT_LEFT_FOOT_ANKLE_TWIST_META = 72, - XR_FULL_BODY_JOINT_LEFT_FOOT_ANKLE_META = 73, - XR_FULL_BODY_JOINT_LEFT_FOOT_SUBTALAR_META = 74, - XR_FULL_BODY_JOINT_LEFT_FOOT_TRANSVERSE_META = 75, - XR_FULL_BODY_JOINT_LEFT_FOOT_BALL_META = 76, - XR_FULL_BODY_JOINT_RIGHT_UPPER_LEG_META = 77, - XR_FULL_BODY_JOINT_RIGHT_LOWER_LEG_META = 78, - XR_FULL_BODY_JOINT_RIGHT_FOOT_ANKLE_TWIST_META = 79, - XR_FULL_BODY_JOINT_RIGHT_FOOT_ANKLE_META = 80, - XR_FULL_BODY_JOINT_RIGHT_FOOT_SUBTALAR_META = 81, - XR_FULL_BODY_JOINT_RIGHT_FOOT_TRANSVERSE_META = 82, - XR_FULL_BODY_JOINT_RIGHT_FOOT_BALL_META = 83, - XR_FULL_BODY_JOINT_COUNT_META = 84, - XR_FULL_BODY_JOINT_NONE_META = 85, - XR_FULL_BODY_JOINT_MAX_ENUM_META = 0x7FFFFFFF -} XrFullBodyJointMETA; -typedef struct XrSystemPropertiesBodyTrackingFullBodyMETA { - XrStructureType type; - void* XR_MAY_ALIAS next; - XrBool32 supportsFullBodyTracking; -} XrSystemPropertiesBodyTrackingFullBodyMETA; - -#endif /* XR_META_body_tracking_full_body */ - -#ifdef __cplusplus -} -#endif - -#endif diff --git a/Plugins/MetaXR/Source/Thirdparty/KhronosOpenXR/include/khronos/openxr/meta_openxr_preview/meta_boundary_visibility.h b/Plugins/MetaXR/Source/Thirdparty/KhronosOpenXR/include/khronos/openxr/meta_openxr_preview/meta_boundary_visibility.h deleted file mode 100644 index 3186164..0000000 --- a/Plugins/MetaXR/Source/Thirdparty/KhronosOpenXR/include/khronos/openxr/meta_openxr_preview/meta_boundary_visibility.h +++ /dev/null @@ -1,61 +0,0 @@ -#ifndef META_BOUNDARY_VISIBILITY_H_ -#define META_BOUNDARY_VISIBILITY_H_ 1 - -/********************** -This file is @generated from the OpenXR XML API registry. -Language : C99 -Copyright : (c) Meta Platforms, Inc. and affiliates. Confidential and proprietary. -***********************/ - -#include - -#ifdef __cplusplus -extern "C" { -#endif - - -#ifndef XR_META_boundary_visibility - -// XR_META_boundary_visibility is a preprocessor guard. Do not pass it to API calls. -#define XR_META_boundary_visibility 1 -#define XR_META_boundary_visibility_SPEC_VERSION 1 -#define XR_META_BOUNDARY_VISIBILITY_EXTENSION_NAME "XR_META_boundary_visibility" -static const XrResult XR_BOUNDARY_VISIBILITY_SUPPRESSION_NOT_ALLOWED_META = (XrResult) 1000528000; -static const XrStructureType XR_TYPE_SYSTEM_BOUNDARY_VISIBILITY_PROPERTIES_META = (XrStructureType) 1000528000; -static const XrStructureType XR_TYPE_EVENT_DATA_BOUNDARY_VISIBILITY_CHANGED_META = (XrStructureType) 1000528001; - -typedef enum XrBoundaryVisibilityMETA { - // Boundary is not suppressed. - XR_BOUNDARY_VISIBILITY_NOT_SUPPRESSED_META = 1, - // Boundary is suppressed. - XR_BOUNDARY_VISIBILITY_SUPPRESSED_META = 2, - XR_BOUNDARY_VISIBILITY_MAX_ENUM_META = 0x7FFFFFFF -} XrBoundaryVisibilityMETA; -typedef struct XrSystemBoundaryVisibilityPropertiesMETA { - XrStructureType type; - const void* XR_MAY_ALIAS next; - XrBool32 supportsBoundaryVisibility; -} XrSystemBoundaryVisibilityPropertiesMETA; - -typedef struct XrEventDataBoundaryVisibilityChangedMETA { - XrStructureType type; - const void* XR_MAY_ALIAS next; - XrBoundaryVisibilityMETA boundaryVisibility; -} XrEventDataBoundaryVisibilityChangedMETA; - -typedef XrResult (XRAPI_PTR *PFN_xrRequestBoundaryVisibilityMETA)(XrSession session, XrBoundaryVisibilityMETA boundaryVisibility); - -#ifndef XR_NO_PROTOTYPES -#ifdef XR_EXTENSION_PROTOTYPES -XRAPI_ATTR XrResult XRAPI_CALL xrRequestBoundaryVisibilityMETA( - XrSession session, - XrBoundaryVisibilityMETA boundaryVisibility); -#endif /* XR_EXTENSION_PROTOTYPES */ -#endif /* !XR_NO_PROTOTYPES */ -#endif /* XR_META_boundary_visibility */ - -#ifdef __cplusplus -} -#endif - -#endif diff --git a/Plugins/MetaXR/Source/Thirdparty/KhronosOpenXR/include/khronos/openxr/meta_openxr_preview/meta_colocation_discovery.h b/Plugins/MetaXR/Source/Thirdparty/KhronosOpenXR/include/khronos/openxr/meta_openxr_preview/meta_colocation_discovery.h deleted file mode 100644 index deeb7e1..0000000 --- a/Plugins/MetaXR/Source/Thirdparty/KhronosOpenXR/include/khronos/openxr/meta_openxr_preview/meta_colocation_discovery.h +++ /dev/null @@ -1,158 +0,0 @@ -#ifndef META_COLOCATION_DISCOVERY_H_ -#define META_COLOCATION_DISCOVERY_H_ 1 - -/********************** -This file is @generated from the OpenXR XML API registry. -Language : C99 -Copyright : (c) Meta Platforms, Inc. and affiliates. Confidential and proprietary. -***********************/ - -#include - -#ifdef __cplusplus -extern "C" { -#endif - - -#ifndef XR_META_colocation_discovery - -// XR_META_colocation_discovery is a preprocessor guard. Do not pass it to API calls. -#define XR_META_colocation_discovery 1 -#define XR_MAX_COLOCATION_DISCOVERY_BUFFER_SIZE_META 1024 -#define XR_META_colocation_discovery_SPEC_VERSION 1 -#define XR_META_COLOCATION_DISCOVERY_EXTENSION_NAME "XR_META_colocation_discovery" -// The network request failed. -static const XrResult XR_ERROR_COLOCATION_DISCOVERY_NETWORK_FAILED_META = (XrResult) -1000571001; -// The runtime does not have any methods available to perform discovery. -static const XrResult XR_ERROR_COLOCATION_DISCOVERY_NO_DISCOVERY_METHOD_META = (XrResult) -1000571002; -// Colocation advertisement has already been enabled -static const XrResult XR_COLOCATION_DISCOVERY_ALREADY_ADVERTISING_META = (XrResult) 1000571003; -// Colocation discovery has already been enabled -static const XrResult XR_COLOCATION_DISCOVERY_ALREADY_DISCOVERING_META = (XrResult) 1000571004; -static const XrStructureType XR_TYPE_COLOCATION_DISCOVERY_START_INFO_META = (XrStructureType) 1000571010; -static const XrStructureType XR_TYPE_COLOCATION_DISCOVERY_STOP_INFO_META = (XrStructureType) 1000571011; -static const XrStructureType XR_TYPE_COLOCATION_ADVERTISEMENT_START_INFO_META = (XrStructureType) 1000571012; -static const XrStructureType XR_TYPE_COLOCATION_ADVERTISEMENT_STOP_INFO_META = (XrStructureType) 1000571013; -static const XrStructureType XR_TYPE_EVENT_DATA_START_COLOCATION_ADVERTISEMENT_COMPLETE_META = (XrStructureType) 1000571020; -static const XrStructureType XR_TYPE_EVENT_DATA_STOP_COLOCATION_ADVERTISEMENT_COMPLETE_META = (XrStructureType) 1000571021; -static const XrStructureType XR_TYPE_EVENT_DATA_COLOCATION_ADVERTISEMENT_COMPLETE_META = (XrStructureType) 1000571022; -static const XrStructureType XR_TYPE_EVENT_DATA_START_COLOCATION_DISCOVERY_COMPLETE_META = (XrStructureType) 1000571023; -static const XrStructureType XR_TYPE_EVENT_DATA_COLOCATION_DISCOVERY_RESULT_META = (XrStructureType) 1000571024; -static const XrStructureType XR_TYPE_EVENT_DATA_COLOCATION_DISCOVERY_COMPLETE_META = (XrStructureType) 1000571025; -static const XrStructureType XR_TYPE_EVENT_DATA_STOP_COLOCATION_DISCOVERY_COMPLETE_META = (XrStructureType) 1000571026; -static const XrStructureType XR_TYPE_SYSTEM_COLOCATION_DISCOVERY_PROPERTIES_META = (XrStructureType) 1000571030; -typedef struct XrColocationDiscoveryStartInfoMETA { - XrStructureType type; - const void* XR_MAY_ALIAS next; -} XrColocationDiscoveryStartInfoMETA; - -typedef struct XrColocationDiscoveryStopInfoMETA { - XrStructureType type; - const void* XR_MAY_ALIAS next; -} XrColocationDiscoveryStopInfoMETA; - -typedef struct XrColocationAdvertisementStartInfoMETA { - XrStructureType type; - const void* XR_MAY_ALIAS next; - uint32_t bufferSize; - uint8_t* buffer; -} XrColocationAdvertisementStartInfoMETA; - -typedef struct XrColocationAdvertisementStopInfoMETA { - XrStructureType type; - const void* XR_MAY_ALIAS next; -} XrColocationAdvertisementStopInfoMETA; - -typedef struct XrEventDataStartColocationAdvertisementCompleteMETA { - XrStructureType type; - const void* XR_MAY_ALIAS next; - XrAsyncRequestIdFB advertisementRequestId; - XrResult result; - XrUuid advertisementUuid; -} XrEventDataStartColocationAdvertisementCompleteMETA; - -typedef struct XrEventDataStopColocationAdvertisementCompleteMETA { - XrStructureType type; - const void* XR_MAY_ALIAS next; - XrAsyncRequestIdFB requestId; - XrResult result; -} XrEventDataStopColocationAdvertisementCompleteMETA; - -typedef struct XrEventDataColocationAdvertisementCompleteMETA { - XrStructureType type; - const void* XR_MAY_ALIAS next; - XrAsyncRequestIdFB advertisementRequestId; - XrResult result; -} XrEventDataColocationAdvertisementCompleteMETA; - -typedef struct XrEventDataStartColocationDiscoveryCompleteMETA { - XrStructureType type; - const void* XR_MAY_ALIAS next; - XrAsyncRequestIdFB discoveryRequestId; - XrResult result; -} XrEventDataStartColocationDiscoveryCompleteMETA; - -typedef struct XrEventDataColocationDiscoveryResultMETA { - XrStructureType type; - const void* XR_MAY_ALIAS next; - XrAsyncRequestIdFB discoveryRequestId; - XrUuid advertisementUuid; - uint32_t bufferSize; - uint8_t buffer[XR_MAX_COLOCATION_DISCOVERY_BUFFER_SIZE_META]; -} XrEventDataColocationDiscoveryResultMETA; - -typedef struct XrEventDataColocationDiscoveryCompleteMETA { - XrStructureType type; - const void* XR_MAY_ALIAS next; - XrAsyncRequestIdFB discoveryRequestId; - XrResult result; -} XrEventDataColocationDiscoveryCompleteMETA; - -typedef struct XrEventDataStopColocationDiscoveryCompleteMETA { - XrStructureType type; - const void* XR_MAY_ALIAS next; - XrAsyncRequestIdFB requestId; - XrResult result; -} XrEventDataStopColocationDiscoveryCompleteMETA; - -typedef struct XrSystemColocationDiscoveryPropertiesMETA { - XrStructureType type; - void* XR_MAY_ALIAS next; - XrBool32 supportsColocationDiscovery; -} XrSystemColocationDiscoveryPropertiesMETA; - -typedef XrResult (XRAPI_PTR *PFN_xrStartColocationDiscoveryMETA)(XrSession session, const XrColocationDiscoveryStartInfoMETA* info, XrAsyncRequestIdFB* discoveryRequestId); -typedef XrResult (XRAPI_PTR *PFN_xrStopColocationDiscoveryMETA)(XrSession session, const XrColocationDiscoveryStopInfoMETA* info, XrAsyncRequestIdFB* requestId); -typedef XrResult (XRAPI_PTR *PFN_xrStartColocationAdvertisementMETA)(XrSession session, const XrColocationAdvertisementStartInfoMETA* info, XrAsyncRequestIdFB* advertisementRequestId); -typedef XrResult (XRAPI_PTR *PFN_xrStopColocationAdvertisementMETA)(XrSession session, const XrColocationAdvertisementStopInfoMETA* info, XrAsyncRequestIdFB* requestId); - -#ifndef XR_NO_PROTOTYPES -#ifdef XR_EXTENSION_PROTOTYPES -XRAPI_ATTR XrResult XRAPI_CALL xrStartColocationDiscoveryMETA( - XrSession session, - const XrColocationDiscoveryStartInfoMETA* info, - XrAsyncRequestIdFB* discoveryRequestId); - -XRAPI_ATTR XrResult XRAPI_CALL xrStopColocationDiscoveryMETA( - XrSession session, - const XrColocationDiscoveryStopInfoMETA* info, - XrAsyncRequestIdFB* requestId); - -XRAPI_ATTR XrResult XRAPI_CALL xrStartColocationAdvertisementMETA( - XrSession session, - const XrColocationAdvertisementStartInfoMETA* info, - XrAsyncRequestIdFB* advertisementRequestId); - -XRAPI_ATTR XrResult XRAPI_CALL xrStopColocationAdvertisementMETA( - XrSession session, - const XrColocationAdvertisementStopInfoMETA* info, - XrAsyncRequestIdFB* requestId); -#endif /* XR_EXTENSION_PROTOTYPES */ -#endif /* !XR_NO_PROTOTYPES */ -#endif /* XR_META_colocation_discovery */ - -#ifdef __cplusplus -} -#endif - -#endif diff --git a/Plugins/MetaXR/Source/Thirdparty/KhronosOpenXR/include/khronos/openxr/meta_openxr_preview/meta_passthrough_layer_resumed_event.h b/Plugins/MetaXR/Source/Thirdparty/KhronosOpenXR/include/khronos/openxr/meta_openxr_preview/meta_passthrough_layer_resumed_event.h deleted file mode 100644 index f1ef76e..0000000 --- a/Plugins/MetaXR/Source/Thirdparty/KhronosOpenXR/include/khronos/openxr/meta_openxr_preview/meta_passthrough_layer_resumed_event.h +++ /dev/null @@ -1,36 +0,0 @@ -#ifndef META_PASSTHROUGH_LAYER_RESUMED_EVENT_H_ -#define META_PASSTHROUGH_LAYER_RESUMED_EVENT_H_ 1 - -/********************** -This file is @generated from the OpenXR XML API registry. -Language : C99 -Copyright : (c) Meta Platforms, Inc. and affiliates. Confidential and proprietary. -***********************/ - -#include - -#ifdef __cplusplus -extern "C" { -#endif - - -#ifndef XR_META_passthrough_layer_resumed_event - -// XR_META_passthrough_layer_resumed_event is a preprocessor guard. Do not pass it to API calls. -#define XR_META_passthrough_layer_resumed_event 1 -#define XR_META_passthrough_layer_resumed_event_SPEC_VERSION 1 -#define XR_META_PASSTHROUGH_LAYER_RESUMED_EVENT_EXTENSION_NAME "XR_META_passthrough_layer_resumed_event" -static const XrStructureType XR_TYPE_EVENT_DATA_PASSTHROUGH_LAYER_RESUMED_META = (XrStructureType) 1000282000; -typedef struct XrEventDataPassthroughLayerResumedMETA { - XrStructureType type; - const void* XR_MAY_ALIAS next; - XrPassthroughLayerFB layer; -} XrEventDataPassthroughLayerResumedMETA; - -#endif /* XR_META_passthrough_layer_resumed_event */ - -#ifdef __cplusplus -} -#endif - -#endif diff --git a/Plugins/MetaXR/Source/Thirdparty/KhronosOpenXR/include/khronos/openxr/meta_openxr_preview/meta_spatial_entity_discovery.h b/Plugins/MetaXR/Source/Thirdparty/KhronosOpenXR/include/khronos/openxr/meta_openxr_preview/meta_spatial_entity_discovery.h deleted file mode 100644 index 0f81a5e..0000000 --- a/Plugins/MetaXR/Source/Thirdparty/KhronosOpenXR/include/khronos/openxr/meta_openxr_preview/meta_spatial_entity_discovery.h +++ /dev/null @@ -1,110 +0,0 @@ -#ifndef META_SPATIAL_ENTITY_DISCOVERY_H_ -#define META_SPATIAL_ENTITY_DISCOVERY_H_ 1 - -/********************** -This file is @generated from the OpenXR XML API registry. -Language : C99 -Copyright : (c) Meta Platforms, Inc. and affiliates. Confidential and proprietary. -***********************/ - -#include - -#ifdef __cplusplus -extern "C" { -#endif - - -#ifndef XR_META_spatial_entity_discovery - -// XR_META_spatial_entity_discovery is a preprocessor guard. Do not pass it to API calls. -#define XR_META_spatial_entity_discovery 1 -#define XR_META_spatial_entity_discovery_SPEC_VERSION 1 -#define XR_META_SPATIAL_ENTITY_DISCOVERY_EXTENSION_NAME "XR_META_spatial_entity_discovery" -static const XrStructureType XR_TYPE_SYSTEM_SPACE_DISCOVERY_PROPERTIES_META = (XrStructureType) 1000247000; -static const XrStructureType XR_TYPE_SPACE_DISCOVERY_INFO_META = (XrStructureType) 1000247001; -static const XrStructureType XR_TYPE_SPACE_FILTER_UUID_META = (XrStructureType) 1000247003; -static const XrStructureType XR_TYPE_SPACE_FILTER_COMPONENT_META = (XrStructureType) 1000247004; -static const XrStructureType XR_TYPE_SPACE_DISCOVERY_RESULT_META = (XrStructureType) 1000247005; -static const XrStructureType XR_TYPE_SPACE_DISCOVERY_RESULTS_META = (XrStructureType) 1000247006; -static const XrStructureType XR_TYPE_EVENT_DATA_SPACE_DISCOVERY_RESULTS_AVAILABLE_META = (XrStructureType) 1000247007; -static const XrStructureType XR_TYPE_EVENT_DATA_SPACE_DISCOVERY_COMPLETE_META = (XrStructureType) 1000247008; -typedef struct XrSystemSpaceDiscoveryPropertiesMETA { - XrStructureType type; - const void* XR_MAY_ALIAS next; - XrBool32 supportsSpaceDiscovery; -} XrSystemSpaceDiscoveryPropertiesMETA; - -typedef struct XR_MAY_ALIAS XrSpaceFilterBaseHeaderMETA { - XrStructureType type; - const void* XR_MAY_ALIAS next; -} XrSpaceFilterBaseHeaderMETA; - -typedef struct XrSpaceDiscoveryInfoMETA { - XrStructureType type; - const void* XR_MAY_ALIAS next; - uint32_t filterCount; - const XrSpaceFilterBaseHeaderMETA* const * filters; -} XrSpaceDiscoveryInfoMETA; - -typedef struct XrSpaceFilterUuidMETA { - XrStructureType type; - const void* XR_MAY_ALIAS next; - uint32_t uuidCount; - const XrUuidEXT* uuids; -} XrSpaceFilterUuidMETA; - -typedef struct XrSpaceFilterComponentMETA { - XrStructureType type; - const void* XR_MAY_ALIAS next; - XrSpaceComponentTypeFB componentType; -} XrSpaceFilterComponentMETA; - -typedef struct XrSpaceDiscoveryResultMETA { - XrSpace space; - XrUuidEXT uuid; -} XrSpaceDiscoveryResultMETA; - -typedef struct XrSpaceDiscoveryResultsMETA { - XrStructureType type; - const void* XR_MAY_ALIAS next; - uint32_t resultCapacityInput; - uint32_t resultCountOutput; - XrSpaceDiscoveryResultMETA* results; -} XrSpaceDiscoveryResultsMETA; - -typedef struct XrEventDataSpaceDiscoveryResultsAvailableMETA { - XrStructureType type; - const void* XR_MAY_ALIAS next; - XrAsyncRequestIdFB requestId; -} XrEventDataSpaceDiscoveryResultsAvailableMETA; - -typedef struct XrEventDataSpaceDiscoveryCompleteMETA { - XrStructureType type; - const void* XR_MAY_ALIAS next; - XrAsyncRequestIdFB requestId; - XrResult result; -} XrEventDataSpaceDiscoveryCompleteMETA; - -typedef XrResult (XRAPI_PTR *PFN_xrDiscoverSpacesMETA)(XrSession session, const XrSpaceDiscoveryInfoMETA* info, XrAsyncRequestIdFB* requestId); -typedef XrResult (XRAPI_PTR *PFN_xrRetrieveSpaceDiscoveryResultsMETA)(XrSession session, XrAsyncRequestIdFB requestId, XrSpaceDiscoveryResultsMETA* results); - -#ifndef XR_NO_PROTOTYPES -#ifdef XR_EXTENSION_PROTOTYPES -XRAPI_ATTR XrResult XRAPI_CALL xrDiscoverSpacesMETA( - XrSession session, - const XrSpaceDiscoveryInfoMETA* info, - XrAsyncRequestIdFB* requestId); - -XRAPI_ATTR XrResult XRAPI_CALL xrRetrieveSpaceDiscoveryResultsMETA( - XrSession session, - XrAsyncRequestIdFB requestId, - XrSpaceDiscoveryResultsMETA* results); -#endif /* XR_EXTENSION_PROTOTYPES */ -#endif /* !XR_NO_PROTOTYPES */ -#endif /* XR_META_spatial_entity_discovery */ - -#ifdef __cplusplus -} -#endif - -#endif diff --git a/Plugins/MetaXR/Source/Thirdparty/KhronosOpenXR/include/khronos/openxr/meta_openxr_preview/meta_spatial_entity_group_sharing.h b/Plugins/MetaXR/Source/Thirdparty/KhronosOpenXR/include/khronos/openxr/meta_openxr_preview/meta_spatial_entity_group_sharing.h deleted file mode 100644 index d0c93a1..0000000 --- a/Plugins/MetaXR/Source/Thirdparty/KhronosOpenXR/include/khronos/openxr/meta_openxr_preview/meta_spatial_entity_group_sharing.h +++ /dev/null @@ -1,53 +0,0 @@ -#ifndef META_SPATIAL_ENTITY_GROUP_SHARING_H_ -#define META_SPATIAL_ENTITY_GROUP_SHARING_H_ 1 - -/********************** -This file is @generated from the OpenXR XML API registry. -Language : C99 -Copyright : (c) Meta Platforms, Inc. and affiliates. Confidential and proprietary. -***********************/ - -#include - -#ifdef __cplusplus -extern "C" { -#endif - - -#ifndef XR_META_spatial_entity_group_sharing - -// XR_META_spatial_entity_group_sharing is a preprocessor guard. Do not pass it to API calls. -#define XR_META_spatial_entity_group_sharing 1 -#define XR_META_spatial_entity_group_sharing_SPEC_VERSION 1 -#define XR_META_SPATIAL_ENTITY_GROUP_SHARING_EXTENSION_NAME "XR_META_spatial_entity_group_sharing" -// The group uuid could not be found within the runtime -static const XrResult XR_ERROR_SPACE_GROUP_NOT_FOUND_META = (XrResult) -1000572002; -static const XrStructureType XR_TYPE_SHARE_SPACES_RECIPIENT_GROUPS_META = (XrStructureType) 1000572000; -static const XrStructureType XR_TYPE_SPACE_GROUP_UUID_FILTER_INFO_META = (XrStructureType) 1000572001; -static const XrStructureType XR_TYPE_SYSTEM_SPATIAL_ENTITY_GROUP_SHARING_PROPERTIES_META = (XrStructureType) 1000572100; -typedef struct XrSystemSpatialEntityGroupSharingPropertiesMETA { - XrStructureType type; - void* XR_MAY_ALIAS next; - XrBool32 supportsSpatialEntityGroupSharing; -} XrSystemSpatialEntityGroupSharingPropertiesMETA; - -typedef struct XrShareSpacesRecipientGroupsMETA { - XrStructureType type; - const void* XR_MAY_ALIAS next; - uint32_t groupCount; - XrUuid* groups; -} XrShareSpacesRecipientGroupsMETA; - -typedef struct XrSpaceGroupUuidFilterInfoMETA { - XrStructureType type; - const void* XR_MAY_ALIAS next; - XrUuid groupUuid; -} XrSpaceGroupUuidFilterInfoMETA; - -#endif /* XR_META_spatial_entity_group_sharing */ - -#ifdef __cplusplus -} -#endif - -#endif diff --git a/Plugins/MetaXR/Source/Thirdparty/KhronosOpenXR/include/khronos/openxr/meta_openxr_preview/meta_spatial_entity_persistence.h b/Plugins/MetaXR/Source/Thirdparty/KhronosOpenXR/include/khronos/openxr/meta_openxr_preview/meta_spatial_entity_persistence.h deleted file mode 100644 index 389de95..0000000 --- a/Plugins/MetaXR/Source/Thirdparty/KhronosOpenXR/include/khronos/openxr/meta_openxr_preview/meta_spatial_entity_persistence.h +++ /dev/null @@ -1,100 +0,0 @@ -#ifndef META_SPATIAL_ENTITY_PERSISTENCE_H_ -#define META_SPATIAL_ENTITY_PERSISTENCE_H_ 1 - -/********************** -This file is @generated from the OpenXR XML API registry. -Language : C99 -Copyright : (c) Meta Platforms, Inc. and affiliates. Confidential and proprietary. -***********************/ - -#include - -#ifdef __cplusplus -extern "C" { -#endif - - -#ifndef XR_META_spatial_entity_persistence - -// XR_META_spatial_entity_persistence is a preprocessor guard. Do not pass it to API calls. -#define XR_META_spatial_entity_persistence 1 -#define XR_META_spatial_entity_persistence_SPEC_VERSION 1 -#define XR_META_SPATIAL_ENTITY_PERSISTENCE_EXTENSION_NAME "XR_META_spatial_entity_persistence" -// Error: Resource limitation prevented this operation from executing. Recommend retrying, perhaps after a short delay and/or reducing memory consumption. -static const XrResult XR_ERROR_SPACE_INSUFFICIENT_RESOURCES_META = (XrResult) -1000259000; -// Error: Operation could not be completed until resources used are reduced or storage expanded. -static const XrResult XR_ERROR_SPACE_STORAGE_AT_CAPACITY_META = (XrResult) -1000259001; -// Error: Look around the environment more for space tracking to function. -static const XrResult XR_ERROR_SPACE_INSUFFICIENT_VIEW_META = (XrResult) -1000259002; -// Error: Space operation permission insufficient. Recommend confirming the status of the required permissions needed for using Space APIs. -static const XrResult XR_ERROR_SPACE_PERMISSION_INSUFFICIENT_META = (XrResult) -1000259003; -// Error: Operation cancelled due to rate limiting. Recommend retrying after a short delay. -static const XrResult XR_ERROR_SPACE_RATE_LIMITED_META = (XrResult) -1000259004; -// Error: Environment too dark for tracking to complete operation. -static const XrResult XR_ERROR_SPACE_TOO_DARK_META = (XrResult) -1000259005; -// Error: Environment too bright for tracking to complete operation. -static const XrResult XR_ERROR_SPACE_TOO_BRIGHT_META = (XrResult) -1000259006; -static const XrStructureType XR_TYPE_SYSTEM_SPACE_PERSISTENCE_PROPERTIES_META = (XrStructureType) 1000259000; -static const XrStructureType XR_TYPE_SPACES_SAVE_INFO_META = (XrStructureType) 1000259001; -static const XrStructureType XR_TYPE_EVENT_DATA_SPACES_SAVE_RESULT_META = (XrStructureType) 1000259002; -static const XrStructureType XR_TYPE_SPACES_ERASE_INFO_META = (XrStructureType) 1000259003; -static const XrStructureType XR_TYPE_EVENT_DATA_SPACES_ERASE_RESULT_META = (XrStructureType) 1000259004; -typedef struct XrSystemSpacePersistencePropertiesMETA { - XrStructureType type; - const void* XR_MAY_ALIAS next; - XrBool32 supportsSpacePersistence; -} XrSystemSpacePersistencePropertiesMETA; - -typedef struct XrSpacesSaveInfoMETA { - XrStructureType type; - const void* XR_MAY_ALIAS next; - uint32_t spaceCount; - XrSpace* spaces; -} XrSpacesSaveInfoMETA; - -typedef struct XrEventDataSpacesSaveResultMETA { - XrStructureType type; - const void* XR_MAY_ALIAS next; - XrAsyncRequestIdFB requestId; - XrResult result; -} XrEventDataSpacesSaveResultMETA; - -typedef struct XrSpacesEraseInfoMETA { - XrStructureType type; - const void* XR_MAY_ALIAS next; - uint32_t spaceCount; - XrSpace* spaces; - uint32_t uuidCount; - XrUuidEXT* uuids; -} XrSpacesEraseInfoMETA; - -typedef struct XrEventDataSpacesEraseResultMETA { - XrStructureType type; - const void* XR_MAY_ALIAS next; - XrAsyncRequestIdFB requestId; - XrResult result; -} XrEventDataSpacesEraseResultMETA; - -typedef XrResult (XRAPI_PTR *PFN_xrSaveSpacesMETA)(XrSession session, const XrSpacesSaveInfoMETA* info, XrAsyncRequestIdFB* requestId); -typedef XrResult (XRAPI_PTR *PFN_xrEraseSpacesMETA)(XrSession session, const XrSpacesEraseInfoMETA* info, XrAsyncRequestIdFB* requestId); - -#ifndef XR_NO_PROTOTYPES -#ifdef XR_EXTENSION_PROTOTYPES -XRAPI_ATTR XrResult XRAPI_CALL xrSaveSpacesMETA( - XrSession session, - const XrSpacesSaveInfoMETA* info, - XrAsyncRequestIdFB* requestId); - -XRAPI_ATTR XrResult XRAPI_CALL xrEraseSpacesMETA( - XrSession session, - const XrSpacesEraseInfoMETA* info, - XrAsyncRequestIdFB* requestId); -#endif /* XR_EXTENSION_PROTOTYPES */ -#endif /* !XR_NO_PROTOTYPES */ -#endif /* XR_META_spatial_entity_persistence */ - -#ifdef __cplusplus -} -#endif - -#endif diff --git a/Plugins/MetaXR/Source/Thirdparty/KhronosOpenXR/include/khronos/openxr/meta_openxr_preview/meta_spatial_entity_sharing.h b/Plugins/MetaXR/Source/Thirdparty/KhronosOpenXR/include/khronos/openxr/meta_openxr_preview/meta_spatial_entity_sharing.h deleted file mode 100644 index 292a15b..0000000 --- a/Plugins/MetaXR/Source/Thirdparty/KhronosOpenXR/include/khronos/openxr/meta_openxr_preview/meta_spatial_entity_sharing.h +++ /dev/null @@ -1,68 +0,0 @@ -#ifndef META_SPATIAL_ENTITY_SHARING_H_ -#define META_SPATIAL_ENTITY_SHARING_H_ 1 - -/********************** -This file is @generated from the OpenXR XML API registry. -Language : C99 -Copyright : (c) Meta Platforms, Inc. and affiliates. Confidential and proprietary. -***********************/ - -#include - -#ifdef __cplusplus -extern "C" { -#endif - - -#ifndef XR_META_spatial_entity_sharing - -// XR_META_spatial_entity_sharing is a preprocessor guard. Do not pass it to API calls. -#define XR_META_spatial_entity_sharing 1 -#define XR_META_spatial_entity_sharing_SPEC_VERSION 1 -#define XR_META_SPATIAL_ENTITY_SHARING_EXTENSION_NAME "XR_META_spatial_entity_sharing" -static const XrStructureType XR_TYPE_SYSTEM_SPATIAL_ENTITY_SHARING_PROPERTIES_META = (XrStructureType) 1000290000; -static const XrStructureType XR_TYPE_SHARE_SPACES_INFO_META = (XrStructureType) 1000290001; -static const XrStructureType XR_TYPE_EVENT_DATA_SHARE_SPACES_COMPLETE_META = (XrStructureType) 1000290002; -typedef struct XrSystemSpatialEntitySharingPropertiesMETA { - XrStructureType type; - void* XR_MAY_ALIAS next; - XrBool32 supportsSpatialEntitySharing; -} XrSystemSpatialEntitySharingPropertiesMETA; - -typedef struct XR_MAY_ALIAS XrShareSpacesRecipientBaseHeaderMETA { - XrStructureType type; - const void* XR_MAY_ALIAS next; -} XrShareSpacesRecipientBaseHeaderMETA; - -typedef struct XrShareSpacesInfoMETA { - XrStructureType type; - const void* XR_MAY_ALIAS next; - uint32_t spaceCount; - XrSpace* spaces; - const XrShareSpacesRecipientBaseHeaderMETA* recipientInfo; -} XrShareSpacesInfoMETA; - -typedef struct XrEventDataShareSpacesCompleteMETA { - XrStructureType type; - const void* XR_MAY_ALIAS next; - XrAsyncRequestIdFB requestId; - XrResult result; -} XrEventDataShareSpacesCompleteMETA; - -typedef XrResult (XRAPI_PTR *PFN_xrShareSpacesMETA)(XrSession session, const XrShareSpacesInfoMETA* info, XrAsyncRequestIdFB* requestId); - -#ifndef XR_NO_PROTOTYPES -#ifdef XR_EXTENSION_PROTOTYPES -XRAPI_ATTR XrResult XRAPI_CALL xrShareSpacesMETA( - XrSession session, - const XrShareSpacesInfoMETA* info, - XrAsyncRequestIdFB* requestId); -#endif /* XR_EXTENSION_PROTOTYPES */ -#endif /* !XR_NO_PROTOTYPES */ -#endif /* XR_META_spatial_entity_sharing */ - -#ifdef __cplusplus -} -#endif - -#endif diff --git a/Plugins/MetaXR/Source/Thirdparty/KhronosOpenXR/include/khronos/openxr/meta_openxr_preview/metax1_face_tracking_visemes.h b/Plugins/MetaXR/Source/Thirdparty/KhronosOpenXR/include/khronos/openxr/meta_openxr_preview/metax1_face_tracking_visemes.h deleted file mode 100644 index c4c57e2..0000000 --- a/Plugins/MetaXR/Source/Thirdparty/KhronosOpenXR/include/khronos/openxr/meta_openxr_preview/metax1_face_tracking_visemes.h +++ /dev/null @@ -1,64 +0,0 @@ -#ifndef METAX1_FACE_TRACKING_VISEMES_H_ -#define METAX1_FACE_TRACKING_VISEMES_H_ 1 - -/********************** -This file is @generated from the OpenXR XML API registry. -Language : C99 -Copyright : (c) Meta Platforms, Inc. and affiliates. Confidential and proprietary. -***********************/ - -#include - -#ifdef __cplusplus -extern "C" { -#endif - - -#ifndef XR_METAX1_face_tracking_visemes - -// XR_METAX1_face_tracking_visemes is a preprocessor guard. Do not pass it to API calls. -#define XR_METAX1_face_tracking_visemes 1 -#define XR_FACE_TRACKING_VISEME_COUNT_METAX1 15 -#define XR_METAX1_face_tracking_visemes_SPEC_VERSION 1 -#define XR_METAX1_FACE_TRACKING_VISEMES_EXTENSION_NAME "XR_METAX1_face_tracking_visemes" -static const XrStructureType XR_TYPE_FACE_TRACKING_VISEMES_METAX1 = (XrStructureType) 1000541000; -static const XrStructureType XR_TYPE_SYSTEM_FACE_TRACKING_VISEMES_PROPERTIES_METAX1 = (XrStructureType) 1000541001; - -typedef enum XrFaceTrackingVisemeMETAX1 { - XR_FACE_TRACKING_VISEME_SIL_METAX1 = 0, - XR_FACE_TRACKING_VISEME_PP_METAX1 = 1, - XR_FACE_TRACKING_VISEME_FF_METAX1 = 2, - XR_FACE_TRACKING_VISEME_TH_METAX1 = 3, - XR_FACE_TRACKING_VISEME_DD_METAX1 = 4, - XR_FACE_TRACKING_VISEME_KK_METAX1 = 5, - XR_FACE_TRACKING_VISEME_CH_METAX1 = 6, - XR_FACE_TRACKING_VISEME_SS_METAX1 = 7, - XR_FACE_TRACKING_VISEME_NN_METAX1 = 8, - XR_FACE_TRACKING_VISEME_RR_METAX1 = 9, - XR_FACE_TRACKING_VISEME_AA_METAX1 = 10, - XR_FACE_TRACKING_VISEME_E_METAX1 = 11, - XR_FACE_TRACKING_VISEME_IH_METAX1 = 12, - XR_FACE_TRACKING_VISEME_OH_METAX1 = 13, - XR_FACE_TRACKING_VISEME_OU_METAX1 = 14, - XR_FACE_TRACKING_VISEME_METAX1_MAX_ENUM = 0x7FFFFFFF -} XrFaceTrackingVisemeMETAX1; -typedef struct XrFaceTrackingVisemesMETAX1 { - XrStructureType type; - const void* XR_MAY_ALIAS next; - XrBool32 isValid; - float visemes[XR_FACE_TRACKING_VISEME_COUNT_METAX1]; -} XrFaceTrackingVisemesMETAX1; - -typedef struct XrSystemFaceTrackingVisemesPropertiesMETAX1 { - XrStructureType type; - void* XR_MAY_ALIAS next; - XrBool32 supportsVisemes; -} XrSystemFaceTrackingVisemesPropertiesMETAX1; - -#endif /* XR_METAX1_face_tracking_visemes */ - -#ifdef __cplusplus -} -#endif - -#endif diff --git a/Plugins/MetaXR/Source/Thirdparty/KhronosOpenXR/include/khronos/openxr/openxr.h b/Plugins/MetaXR/Source/Thirdparty/KhronosOpenXR/include/khronos/openxr/openxr.h deleted file mode 100644 index 97970b2..0000000 --- a/Plugins/MetaXR/Source/Thirdparty/KhronosOpenXR/include/khronos/openxr/openxr.h +++ /dev/null @@ -1,7452 +0,0 @@ -#ifndef OPENXR_H_ -#define OPENXR_H_ 1 - -/* -** Copyright 2017-2024, The Khronos Group Inc. -** -** SPDX-License-Identifier: Apache-2.0 OR MIT -*/ - -/* -** This header is generated from the Khronos OpenXR XML API Registry. -** -*/ - - -#ifdef __cplusplus -extern "C" { -#endif - - - -// XR_VERSION_1_0 is a preprocessor guard. Do not pass it to API calls. -#define XR_VERSION_1_0 1 -#include "openxr_platform_defines.h" -#define XR_MAKE_VERSION(major, minor, patch) \ - ((((major) & 0xffffULL) << 48) | (((minor) & 0xffffULL) << 32) | ((patch) & 0xffffffffULL)) - -// OpenXR current version number. -#define XR_CURRENT_API_VERSION XR_MAKE_VERSION(1, 1, 37) - -// OpenXR 1.0 version number -#define XR_API_VERSION_1_0 XR_MAKE_VERSION(1, 0, XR_VERSION_PATCH(XR_CURRENT_API_VERSION)) - -#define XR_VERSION_MAJOR(version) (uint16_t)(((uint64_t)(version) >> 48)& 0xffffULL) -#define XR_VERSION_MINOR(version) (uint16_t)(((uint64_t)(version) >> 32) & 0xffffULL) -#define XR_VERSION_PATCH(version) (uint32_t)((uint64_t)(version) & 0xffffffffULL) - -#define XR_MIN_COMPOSITION_LAYERS_SUPPORTED 16 - - -#if !defined(XR_NULL_HANDLE) -#if (XR_PTR_SIZE == 8) && XR_CPP_NULLPTR_SUPPORTED - #define XR_NULL_HANDLE nullptr -#else - #define XR_NULL_HANDLE 0 -#endif -#endif - - -#define XR_NULL_SYSTEM_ID 0 - - -#define XR_NULL_PATH 0 - - -#define XR_SUCCEEDED(result) ((result) >= 0) - - -#define XR_FAILED(result) ((result) < 0) - - -#define XR_UNQUALIFIED_SUCCESS(result) ((result) == 0) - - -#define XR_NO_DURATION 0 - - -#define XR_INFINITE_DURATION 0x7fffffffffffffffLL - - -#define XR_MIN_HAPTIC_DURATION -1 - - -#define XR_FREQUENCY_UNSPECIFIED 0 - - -#define XR_MAX_EVENT_DATA_SIZE sizeof(XrEventDataBuffer) - - -#define XR_EXTENSION_ENUM_BASE 1000000000 - - -#define XR_EXTENSION_ENUM_STRIDE 1000 - - -#if !defined(XR_MAY_ALIAS) -#if defined(__clang__) || (defined(__GNUC__) && (__GNUC__ > 4)) -#define XR_MAY_ALIAS __attribute__((__may_alias__)) -#else -#define XR_MAY_ALIAS -#endif -#endif - - -#if !defined(XR_DEFINE_HANDLE) -#if (XR_PTR_SIZE == 8) - #define XR_DEFINE_HANDLE(object) typedef struct object##_T* object; -#else - #define XR_DEFINE_HANDLE(object) typedef uint64_t object; -#endif -#endif - - -#if !defined(XR_DEFINE_OPAQUE_64) - #if (XR_PTR_SIZE == 8) - #define XR_DEFINE_OPAQUE_64(object) typedef struct object##_T* object; - #else - #define XR_DEFINE_OPAQUE_64(object) typedef uint64_t object; - #endif -#endif - - -#if !defined(XR_DEFINE_ATOM) - #define XR_DEFINE_ATOM(object) typedef uint64_t object; -#endif - -typedef uint64_t XrVersion; -typedef uint64_t XrFlags64; -XR_DEFINE_ATOM(XrSystemId) -typedef uint32_t XrBool32; -XR_DEFINE_ATOM(XrPath) -typedef int64_t XrTime; -typedef int64_t XrDuration; -XR_DEFINE_HANDLE(XrInstance) -XR_DEFINE_HANDLE(XrSession) -XR_DEFINE_HANDLE(XrSpace) -XR_DEFINE_HANDLE(XrAction) -XR_DEFINE_HANDLE(XrSwapchain) -XR_DEFINE_HANDLE(XrActionSet) -#define XR_TRUE 1 -#define XR_FALSE 0 -#define XR_MAX_EXTENSION_NAME_SIZE 128 -#define XR_MAX_API_LAYER_NAME_SIZE 256 -#define XR_MAX_API_LAYER_DESCRIPTION_SIZE 256 -#define XR_MAX_SYSTEM_NAME_SIZE 256 -#define XR_MAX_APPLICATION_NAME_SIZE 128 -#define XR_MAX_ENGINE_NAME_SIZE 128 -#define XR_MAX_RUNTIME_NAME_SIZE 128 -#define XR_MAX_PATH_LENGTH 256 -#define XR_MAX_STRUCTURE_NAME_SIZE 64 -#define XR_MAX_RESULT_STRING_SIZE 64 -#define XR_MAX_ACTION_SET_NAME_SIZE 64 -#define XR_MAX_LOCALIZED_ACTION_SET_NAME_SIZE 128 -#define XR_MAX_ACTION_NAME_SIZE 64 -#define XR_MAX_LOCALIZED_ACTION_NAME_SIZE 128 - -typedef enum XrResult { - XR_SUCCESS = 0, - XR_TIMEOUT_EXPIRED = 1, - XR_SESSION_LOSS_PENDING = 3, - XR_EVENT_UNAVAILABLE = 4, - XR_SPACE_BOUNDS_UNAVAILABLE = 7, - XR_SESSION_NOT_FOCUSED = 8, - XR_FRAME_DISCARDED = 9, - XR_ERROR_VALIDATION_FAILURE = -1, - XR_ERROR_RUNTIME_FAILURE = -2, - XR_ERROR_OUT_OF_MEMORY = -3, - XR_ERROR_API_VERSION_UNSUPPORTED = -4, - XR_ERROR_INITIALIZATION_FAILED = -6, - XR_ERROR_FUNCTION_UNSUPPORTED = -7, - XR_ERROR_FEATURE_UNSUPPORTED = -8, - XR_ERROR_EXTENSION_NOT_PRESENT = -9, - XR_ERROR_LIMIT_REACHED = -10, - XR_ERROR_SIZE_INSUFFICIENT = -11, - XR_ERROR_HANDLE_INVALID = -12, - XR_ERROR_INSTANCE_LOST = -13, - XR_ERROR_SESSION_RUNNING = -14, - XR_ERROR_SESSION_NOT_RUNNING = -16, - XR_ERROR_SESSION_LOST = -17, - XR_ERROR_SYSTEM_INVALID = -18, - XR_ERROR_PATH_INVALID = -19, - XR_ERROR_PATH_COUNT_EXCEEDED = -20, - XR_ERROR_PATH_FORMAT_INVALID = -21, - XR_ERROR_PATH_UNSUPPORTED = -22, - XR_ERROR_LAYER_INVALID = -23, - XR_ERROR_LAYER_LIMIT_EXCEEDED = -24, - XR_ERROR_SWAPCHAIN_RECT_INVALID = -25, - XR_ERROR_SWAPCHAIN_FORMAT_UNSUPPORTED = -26, - XR_ERROR_ACTION_TYPE_MISMATCH = -27, - XR_ERROR_SESSION_NOT_READY = -28, - XR_ERROR_SESSION_NOT_STOPPING = -29, - XR_ERROR_TIME_INVALID = -30, - XR_ERROR_REFERENCE_SPACE_UNSUPPORTED = -31, - XR_ERROR_FILE_ACCESS_ERROR = -32, - XR_ERROR_FILE_CONTENTS_INVALID = -33, - XR_ERROR_FORM_FACTOR_UNSUPPORTED = -34, - XR_ERROR_FORM_FACTOR_UNAVAILABLE = -35, - XR_ERROR_API_LAYER_NOT_PRESENT = -36, - XR_ERROR_CALL_ORDER_INVALID = -37, - XR_ERROR_GRAPHICS_DEVICE_INVALID = -38, - XR_ERROR_POSE_INVALID = -39, - XR_ERROR_INDEX_OUT_OF_RANGE = -40, - XR_ERROR_VIEW_CONFIGURATION_TYPE_UNSUPPORTED = -41, - XR_ERROR_ENVIRONMENT_BLEND_MODE_UNSUPPORTED = -42, - XR_ERROR_NAME_DUPLICATED = -44, - XR_ERROR_NAME_INVALID = -45, - XR_ERROR_ACTIONSET_NOT_ATTACHED = -46, - XR_ERROR_ACTIONSETS_ALREADY_ATTACHED = -47, - XR_ERROR_LOCALIZED_NAME_DUPLICATED = -48, - XR_ERROR_LOCALIZED_NAME_INVALID = -49, - XR_ERROR_GRAPHICS_REQUIREMENTS_CALL_MISSING = -50, - XR_ERROR_RUNTIME_UNAVAILABLE = -51, - XR_ERROR_EXTENSION_DEPENDENCY_NOT_ENABLED = -1000710001, - XR_ERROR_PERMISSION_INSUFFICIENT = -1000710000, - XR_ERROR_ANDROID_THREAD_SETTINGS_ID_INVALID_KHR = -1000003000, - XR_ERROR_ANDROID_THREAD_SETTINGS_FAILURE_KHR = -1000003001, - XR_ERROR_CREATE_SPATIAL_ANCHOR_FAILED_MSFT = -1000039001, - XR_ERROR_SECONDARY_VIEW_CONFIGURATION_TYPE_NOT_ENABLED_MSFT = -1000053000, - XR_ERROR_CONTROLLER_MODEL_KEY_INVALID_MSFT = -1000055000, - XR_ERROR_REPROJECTION_MODE_UNSUPPORTED_MSFT = -1000066000, - XR_ERROR_COMPUTE_NEW_SCENE_NOT_COMPLETED_MSFT = -1000097000, - XR_ERROR_SCENE_COMPONENT_ID_INVALID_MSFT = -1000097001, - XR_ERROR_SCENE_COMPONENT_TYPE_MISMATCH_MSFT = -1000097002, - XR_ERROR_SCENE_MESH_BUFFER_ID_INVALID_MSFT = -1000097003, - XR_ERROR_SCENE_COMPUTE_FEATURE_INCOMPATIBLE_MSFT = -1000097004, - XR_ERROR_SCENE_COMPUTE_CONSISTENCY_MISMATCH_MSFT = -1000097005, - XR_ERROR_DISPLAY_REFRESH_RATE_UNSUPPORTED_FB = -1000101000, - XR_ERROR_COLOR_SPACE_UNSUPPORTED_FB = -1000108000, - XR_ERROR_SPACE_COMPONENT_NOT_SUPPORTED_FB = -1000113000, - XR_ERROR_SPACE_COMPONENT_NOT_ENABLED_FB = -1000113001, - XR_ERROR_SPACE_COMPONENT_STATUS_PENDING_FB = -1000113002, - XR_ERROR_SPACE_COMPONENT_STATUS_ALREADY_SET_FB = -1000113003, - XR_ERROR_UNEXPECTED_STATE_PASSTHROUGH_FB = -1000118000, - XR_ERROR_FEATURE_ALREADY_CREATED_PASSTHROUGH_FB = -1000118001, - XR_ERROR_FEATURE_REQUIRED_PASSTHROUGH_FB = -1000118002, - XR_ERROR_NOT_PERMITTED_PASSTHROUGH_FB = -1000118003, - XR_ERROR_INSUFFICIENT_RESOURCES_PASSTHROUGH_FB = -1000118004, - XR_ERROR_UNKNOWN_PASSTHROUGH_FB = -1000118050, - XR_ERROR_RENDER_MODEL_KEY_INVALID_FB = -1000119000, - XR_RENDER_MODEL_UNAVAILABLE_FB = 1000119020, - XR_ERROR_MARKER_NOT_TRACKED_VARJO = -1000124000, - XR_ERROR_MARKER_ID_INVALID_VARJO = -1000124001, - XR_ERROR_MARKER_DETECTOR_PERMISSION_DENIED_ML = -1000138000, - XR_ERROR_MARKER_DETECTOR_LOCATE_FAILED_ML = -1000138001, - XR_ERROR_MARKER_DETECTOR_INVALID_DATA_QUERY_ML = -1000138002, - XR_ERROR_MARKER_DETECTOR_INVALID_CREATE_INFO_ML = -1000138003, - XR_ERROR_MARKER_INVALID_ML = -1000138004, - XR_ERROR_LOCALIZATION_MAP_INCOMPATIBLE_ML = -1000139000, - XR_ERROR_LOCALIZATION_MAP_UNAVAILABLE_ML = -1000139001, - XR_ERROR_LOCALIZATION_MAP_FAIL_ML = -1000139002, - XR_ERROR_LOCALIZATION_MAP_IMPORT_EXPORT_PERMISSION_DENIED_ML = -1000139003, - XR_ERROR_LOCALIZATION_MAP_PERMISSION_DENIED_ML = -1000139004, - XR_ERROR_LOCALIZATION_MAP_ALREADY_EXISTS_ML = -1000139005, - XR_ERROR_LOCALIZATION_MAP_CANNOT_EXPORT_CLOUD_MAP_ML = -1000139006, - XR_ERROR_SPATIAL_ANCHOR_NAME_NOT_FOUND_MSFT = -1000142001, - XR_ERROR_SPATIAL_ANCHOR_NAME_INVALID_MSFT = -1000142002, - XR_SCENE_MARKER_DATA_NOT_STRING_MSFT = 1000147000, - XR_ERROR_SPACE_MAPPING_INSUFFICIENT_FB = -1000169000, - XR_ERROR_SPACE_LOCALIZATION_FAILED_FB = -1000169001, - XR_ERROR_SPACE_NETWORK_TIMEOUT_FB = -1000169002, - XR_ERROR_SPACE_NETWORK_REQUEST_FAILED_FB = -1000169003, - XR_ERROR_SPACE_CLOUD_STORAGE_DISABLED_FB = -1000169004, - XR_ERROR_PASSTHROUGH_COLOR_LUT_BUFFER_SIZE_MISMATCH_META = -1000266000, - XR_ENVIRONMENT_DEPTH_NOT_AVAILABLE_META = 1000291000, - XR_ERROR_HINT_ALREADY_SET_QCOM = -1000306000, - XR_ERROR_NOT_AN_ANCHOR_HTC = -1000319000, - XR_ERROR_SPACE_NOT_LOCATABLE_EXT = -1000429000, - XR_ERROR_PLANE_DETECTION_PERMISSION_DENIED_EXT = -1000429001, - XR_ERROR_FUTURE_PENDING_EXT = -1000469001, - XR_ERROR_FUTURE_INVALID_EXT = -1000469002, - XR_ERROR_EXTENSION_DEPENDENCY_NOT_ENABLED_KHR = XR_ERROR_EXTENSION_DEPENDENCY_NOT_ENABLED, - XR_ERROR_PERMISSION_INSUFFICIENT_KHR = XR_ERROR_PERMISSION_INSUFFICIENT, - XR_RESULT_MAX_ENUM = 0x7FFFFFFF -} XrResult; - -typedef enum XrStructureType { - XR_TYPE_UNKNOWN = 0, - XR_TYPE_API_LAYER_PROPERTIES = 1, - XR_TYPE_EXTENSION_PROPERTIES = 2, - XR_TYPE_INSTANCE_CREATE_INFO = 3, - XR_TYPE_SYSTEM_GET_INFO = 4, - XR_TYPE_SYSTEM_PROPERTIES = 5, - XR_TYPE_VIEW_LOCATE_INFO = 6, - XR_TYPE_VIEW = 7, - XR_TYPE_SESSION_CREATE_INFO = 8, - XR_TYPE_SWAPCHAIN_CREATE_INFO = 9, - XR_TYPE_SESSION_BEGIN_INFO = 10, - XR_TYPE_VIEW_STATE = 11, - XR_TYPE_FRAME_END_INFO = 12, - XR_TYPE_HAPTIC_VIBRATION = 13, - XR_TYPE_EVENT_DATA_BUFFER = 16, - XR_TYPE_EVENT_DATA_INSTANCE_LOSS_PENDING = 17, - XR_TYPE_EVENT_DATA_SESSION_STATE_CHANGED = 18, - XR_TYPE_ACTION_STATE_BOOLEAN = 23, - XR_TYPE_ACTION_STATE_FLOAT = 24, - XR_TYPE_ACTION_STATE_VECTOR2F = 25, - XR_TYPE_ACTION_STATE_POSE = 27, - XR_TYPE_ACTION_SET_CREATE_INFO = 28, - XR_TYPE_ACTION_CREATE_INFO = 29, - XR_TYPE_INSTANCE_PROPERTIES = 32, - XR_TYPE_FRAME_WAIT_INFO = 33, - XR_TYPE_COMPOSITION_LAYER_PROJECTION = 35, - XR_TYPE_COMPOSITION_LAYER_QUAD = 36, - XR_TYPE_REFERENCE_SPACE_CREATE_INFO = 37, - XR_TYPE_ACTION_SPACE_CREATE_INFO = 38, - XR_TYPE_EVENT_DATA_REFERENCE_SPACE_CHANGE_PENDING = 40, - XR_TYPE_VIEW_CONFIGURATION_VIEW = 41, - XR_TYPE_SPACE_LOCATION = 42, - XR_TYPE_SPACE_VELOCITY = 43, - XR_TYPE_FRAME_STATE = 44, - XR_TYPE_VIEW_CONFIGURATION_PROPERTIES = 45, - XR_TYPE_FRAME_BEGIN_INFO = 46, - XR_TYPE_COMPOSITION_LAYER_PROJECTION_VIEW = 48, - XR_TYPE_EVENT_DATA_EVENTS_LOST = 49, - XR_TYPE_INTERACTION_PROFILE_SUGGESTED_BINDING = 51, - XR_TYPE_EVENT_DATA_INTERACTION_PROFILE_CHANGED = 52, - XR_TYPE_INTERACTION_PROFILE_STATE = 53, - XR_TYPE_SWAPCHAIN_IMAGE_ACQUIRE_INFO = 55, - XR_TYPE_SWAPCHAIN_IMAGE_WAIT_INFO = 56, - XR_TYPE_SWAPCHAIN_IMAGE_RELEASE_INFO = 57, - XR_TYPE_ACTION_STATE_GET_INFO = 58, - XR_TYPE_HAPTIC_ACTION_INFO = 59, - XR_TYPE_SESSION_ACTION_SETS_ATTACH_INFO = 60, - XR_TYPE_ACTIONS_SYNC_INFO = 61, - XR_TYPE_BOUND_SOURCES_FOR_ACTION_ENUMERATE_INFO = 62, - XR_TYPE_INPUT_SOURCE_LOCALIZED_NAME_GET_INFO = 63, - XR_TYPE_SPACES_LOCATE_INFO = 1000471000, - XR_TYPE_SPACE_LOCATIONS = 1000471001, - XR_TYPE_SPACE_VELOCITIES = 1000471002, - XR_TYPE_COMPOSITION_LAYER_CUBE_KHR = 1000006000, - XR_TYPE_INSTANCE_CREATE_INFO_ANDROID_KHR = 1000008000, - XR_TYPE_COMPOSITION_LAYER_DEPTH_INFO_KHR = 1000010000, - XR_TYPE_VULKAN_SWAPCHAIN_FORMAT_LIST_CREATE_INFO_KHR = 1000014000, - XR_TYPE_EVENT_DATA_PERF_SETTINGS_EXT = 1000015000, - XR_TYPE_COMPOSITION_LAYER_CYLINDER_KHR = 1000017000, - XR_TYPE_COMPOSITION_LAYER_EQUIRECT_KHR = 1000018000, - XR_TYPE_DEBUG_UTILS_OBJECT_NAME_INFO_EXT = 1000019000, - XR_TYPE_DEBUG_UTILS_MESSENGER_CALLBACK_DATA_EXT = 1000019001, - XR_TYPE_DEBUG_UTILS_MESSENGER_CREATE_INFO_EXT = 1000019002, - XR_TYPE_DEBUG_UTILS_LABEL_EXT = 1000019003, - XR_TYPE_GRAPHICS_BINDING_OPENGL_WIN32_KHR = 1000023000, - XR_TYPE_GRAPHICS_BINDING_OPENGL_XLIB_KHR = 1000023001, - XR_TYPE_GRAPHICS_BINDING_OPENGL_XCB_KHR = 1000023002, - XR_TYPE_GRAPHICS_BINDING_OPENGL_WAYLAND_KHR = 1000023003, - XR_TYPE_SWAPCHAIN_IMAGE_OPENGL_KHR = 1000023004, - XR_TYPE_GRAPHICS_REQUIREMENTS_OPENGL_KHR = 1000023005, - XR_TYPE_GRAPHICS_BINDING_OPENGL_ES_ANDROID_KHR = 1000024001, - XR_TYPE_SWAPCHAIN_IMAGE_OPENGL_ES_KHR = 1000024002, - XR_TYPE_GRAPHICS_REQUIREMENTS_OPENGL_ES_KHR = 1000024003, - XR_TYPE_GRAPHICS_BINDING_VULKAN_KHR = 1000025000, - XR_TYPE_SWAPCHAIN_IMAGE_VULKAN_KHR = 1000025001, - XR_TYPE_GRAPHICS_REQUIREMENTS_VULKAN_KHR = 1000025002, - XR_TYPE_GRAPHICS_BINDING_D3D11_KHR = 1000027000, - XR_TYPE_SWAPCHAIN_IMAGE_D3D11_KHR = 1000027001, - XR_TYPE_GRAPHICS_REQUIREMENTS_D3D11_KHR = 1000027002, - XR_TYPE_GRAPHICS_BINDING_D3D12_KHR = 1000028000, - XR_TYPE_SWAPCHAIN_IMAGE_D3D12_KHR = 1000028001, - XR_TYPE_GRAPHICS_REQUIREMENTS_D3D12_KHR = 1000028002, - XR_TYPE_SYSTEM_EYE_GAZE_INTERACTION_PROPERTIES_EXT = 1000030000, - XR_TYPE_EYE_GAZE_SAMPLE_TIME_EXT = 1000030001, - XR_TYPE_VISIBILITY_MASK_KHR = 1000031000, - XR_TYPE_EVENT_DATA_VISIBILITY_MASK_CHANGED_KHR = 1000031001, - XR_TYPE_SESSION_CREATE_INFO_OVERLAY_EXTX = 1000033000, - XR_TYPE_EVENT_DATA_MAIN_SESSION_VISIBILITY_CHANGED_EXTX = 1000033003, - XR_TYPE_COMPOSITION_LAYER_COLOR_SCALE_BIAS_KHR = 1000034000, - XR_TYPE_SPATIAL_ANCHOR_CREATE_INFO_MSFT = 1000039000, - XR_TYPE_SPATIAL_ANCHOR_SPACE_CREATE_INFO_MSFT = 1000039001, - XR_TYPE_COMPOSITION_LAYER_IMAGE_LAYOUT_FB = 1000040000, - XR_TYPE_COMPOSITION_LAYER_ALPHA_BLEND_FB = 1000041001, - XR_TYPE_VIEW_CONFIGURATION_DEPTH_RANGE_EXT = 1000046000, - XR_TYPE_GRAPHICS_BINDING_EGL_MNDX = 1000048004, - XR_TYPE_SPATIAL_GRAPH_NODE_SPACE_CREATE_INFO_MSFT = 1000049000, - XR_TYPE_SPATIAL_GRAPH_STATIC_NODE_BINDING_CREATE_INFO_MSFT = 1000049001, - XR_TYPE_SPATIAL_GRAPH_NODE_BINDING_PROPERTIES_GET_INFO_MSFT = 1000049002, - XR_TYPE_SPATIAL_GRAPH_NODE_BINDING_PROPERTIES_MSFT = 1000049003, - XR_TYPE_SYSTEM_HAND_TRACKING_PROPERTIES_EXT = 1000051000, - XR_TYPE_HAND_TRACKER_CREATE_INFO_EXT = 1000051001, - XR_TYPE_HAND_JOINTS_LOCATE_INFO_EXT = 1000051002, - XR_TYPE_HAND_JOINT_LOCATIONS_EXT = 1000051003, - XR_TYPE_HAND_JOINT_VELOCITIES_EXT = 1000051004, - XR_TYPE_SYSTEM_HAND_TRACKING_MESH_PROPERTIES_MSFT = 1000052000, - XR_TYPE_HAND_MESH_SPACE_CREATE_INFO_MSFT = 1000052001, - XR_TYPE_HAND_MESH_UPDATE_INFO_MSFT = 1000052002, - XR_TYPE_HAND_MESH_MSFT = 1000052003, - XR_TYPE_HAND_POSE_TYPE_INFO_MSFT = 1000052004, - XR_TYPE_SECONDARY_VIEW_CONFIGURATION_SESSION_BEGIN_INFO_MSFT = 1000053000, - XR_TYPE_SECONDARY_VIEW_CONFIGURATION_STATE_MSFT = 1000053001, - XR_TYPE_SECONDARY_VIEW_CONFIGURATION_FRAME_STATE_MSFT = 1000053002, - XR_TYPE_SECONDARY_VIEW_CONFIGURATION_FRAME_END_INFO_MSFT = 1000053003, - XR_TYPE_SECONDARY_VIEW_CONFIGURATION_LAYER_INFO_MSFT = 1000053004, - XR_TYPE_SECONDARY_VIEW_CONFIGURATION_SWAPCHAIN_CREATE_INFO_MSFT = 1000053005, - XR_TYPE_CONTROLLER_MODEL_KEY_STATE_MSFT = 1000055000, - XR_TYPE_CONTROLLER_MODEL_NODE_PROPERTIES_MSFT = 1000055001, - XR_TYPE_CONTROLLER_MODEL_PROPERTIES_MSFT = 1000055002, - XR_TYPE_CONTROLLER_MODEL_NODE_STATE_MSFT = 1000055003, - XR_TYPE_CONTROLLER_MODEL_STATE_MSFT = 1000055004, - XR_TYPE_VIEW_CONFIGURATION_VIEW_FOV_EPIC = 1000059000, - XR_TYPE_HOLOGRAPHIC_WINDOW_ATTACHMENT_MSFT = 1000063000, - XR_TYPE_COMPOSITION_LAYER_REPROJECTION_INFO_MSFT = 1000066000, - XR_TYPE_COMPOSITION_LAYER_REPROJECTION_PLANE_OVERRIDE_MSFT = 1000066001, - XR_TYPE_ANDROID_SURFACE_SWAPCHAIN_CREATE_INFO_FB = 1000070000, - XR_TYPE_COMPOSITION_LAYER_SECURE_CONTENT_FB = 1000072000, - XR_TYPE_BODY_TRACKER_CREATE_INFO_FB = 1000076001, - XR_TYPE_BODY_JOINTS_LOCATE_INFO_FB = 1000076002, - XR_TYPE_SYSTEM_BODY_TRACKING_PROPERTIES_FB = 1000076004, - XR_TYPE_BODY_JOINT_LOCATIONS_FB = 1000076005, - XR_TYPE_BODY_SKELETON_FB = 1000076006, - XR_TYPE_INTERACTION_PROFILE_DPAD_BINDING_EXT = 1000078000, - XR_TYPE_INTERACTION_PROFILE_ANALOG_THRESHOLD_VALVE = 1000079000, - XR_TYPE_HAND_JOINTS_MOTION_RANGE_INFO_EXT = 1000080000, - XR_TYPE_LOADER_INIT_INFO_ANDROID_KHR = 1000089000, - XR_TYPE_VULKAN_INSTANCE_CREATE_INFO_KHR = 1000090000, - XR_TYPE_VULKAN_DEVICE_CREATE_INFO_KHR = 1000090001, - XR_TYPE_VULKAN_GRAPHICS_DEVICE_GET_INFO_KHR = 1000090003, - XR_TYPE_COMPOSITION_LAYER_EQUIRECT2_KHR = 1000091000, - XR_TYPE_SCENE_OBSERVER_CREATE_INFO_MSFT = 1000097000, - XR_TYPE_SCENE_CREATE_INFO_MSFT = 1000097001, - XR_TYPE_NEW_SCENE_COMPUTE_INFO_MSFT = 1000097002, - XR_TYPE_VISUAL_MESH_COMPUTE_LOD_INFO_MSFT = 1000097003, - XR_TYPE_SCENE_COMPONENTS_MSFT = 1000097004, - XR_TYPE_SCENE_COMPONENTS_GET_INFO_MSFT = 1000097005, - XR_TYPE_SCENE_COMPONENT_LOCATIONS_MSFT = 1000097006, - XR_TYPE_SCENE_COMPONENTS_LOCATE_INFO_MSFT = 1000097007, - XR_TYPE_SCENE_OBJECTS_MSFT = 1000097008, - XR_TYPE_SCENE_COMPONENT_PARENT_FILTER_INFO_MSFT = 1000097009, - XR_TYPE_SCENE_OBJECT_TYPES_FILTER_INFO_MSFT = 1000097010, - XR_TYPE_SCENE_PLANES_MSFT = 1000097011, - XR_TYPE_SCENE_PLANE_ALIGNMENT_FILTER_INFO_MSFT = 1000097012, - XR_TYPE_SCENE_MESHES_MSFT = 1000097013, - XR_TYPE_SCENE_MESH_BUFFERS_GET_INFO_MSFT = 1000097014, - XR_TYPE_SCENE_MESH_BUFFERS_MSFT = 1000097015, - XR_TYPE_SCENE_MESH_VERTEX_BUFFER_MSFT = 1000097016, - XR_TYPE_SCENE_MESH_INDICES_UINT32_MSFT = 1000097017, - XR_TYPE_SCENE_MESH_INDICES_UINT16_MSFT = 1000097018, - XR_TYPE_SERIALIZED_SCENE_FRAGMENT_DATA_GET_INFO_MSFT = 1000098000, - XR_TYPE_SCENE_DESERIALIZE_INFO_MSFT = 1000098001, - XR_TYPE_EVENT_DATA_DISPLAY_REFRESH_RATE_CHANGED_FB = 1000101000, - XR_TYPE_VIVE_TRACKER_PATHS_HTCX = 1000103000, - XR_TYPE_EVENT_DATA_VIVE_TRACKER_CONNECTED_HTCX = 1000103001, - XR_TYPE_SYSTEM_FACIAL_TRACKING_PROPERTIES_HTC = 1000104000, - XR_TYPE_FACIAL_TRACKER_CREATE_INFO_HTC = 1000104001, - XR_TYPE_FACIAL_EXPRESSIONS_HTC = 1000104002, - XR_TYPE_SYSTEM_COLOR_SPACE_PROPERTIES_FB = 1000108000, - XR_TYPE_HAND_TRACKING_MESH_FB = 1000110001, - XR_TYPE_HAND_TRACKING_SCALE_FB = 1000110003, - XR_TYPE_HAND_TRACKING_AIM_STATE_FB = 1000111001, - XR_TYPE_HAND_TRACKING_CAPSULES_STATE_FB = 1000112000, - XR_TYPE_SYSTEM_SPATIAL_ENTITY_PROPERTIES_FB = 1000113004, - XR_TYPE_SPATIAL_ANCHOR_CREATE_INFO_FB = 1000113003, - XR_TYPE_SPACE_COMPONENT_STATUS_SET_INFO_FB = 1000113007, - XR_TYPE_SPACE_COMPONENT_STATUS_FB = 1000113001, - XR_TYPE_EVENT_DATA_SPATIAL_ANCHOR_CREATE_COMPLETE_FB = 1000113005, - XR_TYPE_EVENT_DATA_SPACE_SET_STATUS_COMPLETE_FB = 1000113006, - XR_TYPE_FOVEATION_PROFILE_CREATE_INFO_FB = 1000114000, - XR_TYPE_SWAPCHAIN_CREATE_INFO_FOVEATION_FB = 1000114001, - XR_TYPE_SWAPCHAIN_STATE_FOVEATION_FB = 1000114002, - XR_TYPE_FOVEATION_LEVEL_PROFILE_CREATE_INFO_FB = 1000115000, - XR_TYPE_KEYBOARD_SPACE_CREATE_INFO_FB = 1000116009, - XR_TYPE_KEYBOARD_TRACKING_QUERY_FB = 1000116004, - XR_TYPE_SYSTEM_KEYBOARD_TRACKING_PROPERTIES_FB = 1000116002, - XR_TYPE_TRIANGLE_MESH_CREATE_INFO_FB = 1000117001, - XR_TYPE_SYSTEM_PASSTHROUGH_PROPERTIES_FB = 1000118000, - XR_TYPE_PASSTHROUGH_CREATE_INFO_FB = 1000118001, - XR_TYPE_PASSTHROUGH_LAYER_CREATE_INFO_FB = 1000118002, - XR_TYPE_COMPOSITION_LAYER_PASSTHROUGH_FB = 1000118003, - XR_TYPE_GEOMETRY_INSTANCE_CREATE_INFO_FB = 1000118004, - XR_TYPE_GEOMETRY_INSTANCE_TRANSFORM_FB = 1000118005, - XR_TYPE_SYSTEM_PASSTHROUGH_PROPERTIES2_FB = 1000118006, - XR_TYPE_PASSTHROUGH_STYLE_FB = 1000118020, - XR_TYPE_PASSTHROUGH_COLOR_MAP_MONO_TO_RGBA_FB = 1000118021, - XR_TYPE_PASSTHROUGH_COLOR_MAP_MONO_TO_MONO_FB = 1000118022, - XR_TYPE_PASSTHROUGH_BRIGHTNESS_CONTRAST_SATURATION_FB = 1000118023, - XR_TYPE_EVENT_DATA_PASSTHROUGH_STATE_CHANGED_FB = 1000118030, - XR_TYPE_RENDER_MODEL_PATH_INFO_FB = 1000119000, - XR_TYPE_RENDER_MODEL_PROPERTIES_FB = 1000119001, - XR_TYPE_RENDER_MODEL_BUFFER_FB = 1000119002, - XR_TYPE_RENDER_MODEL_LOAD_INFO_FB = 1000119003, - XR_TYPE_SYSTEM_RENDER_MODEL_PROPERTIES_FB = 1000119004, - XR_TYPE_RENDER_MODEL_CAPABILITIES_REQUEST_FB = 1000119005, - XR_TYPE_BINDING_MODIFICATIONS_KHR = 1000120000, - XR_TYPE_VIEW_LOCATE_FOVEATED_RENDERING_VARJO = 1000121000, - XR_TYPE_FOVEATED_VIEW_CONFIGURATION_VIEW_VARJO = 1000121001, - XR_TYPE_SYSTEM_FOVEATED_RENDERING_PROPERTIES_VARJO = 1000121002, - XR_TYPE_COMPOSITION_LAYER_DEPTH_TEST_VARJO = 1000122000, - XR_TYPE_SYSTEM_MARKER_TRACKING_PROPERTIES_VARJO = 1000124000, - XR_TYPE_EVENT_DATA_MARKER_TRACKING_UPDATE_VARJO = 1000124001, - XR_TYPE_MARKER_SPACE_CREATE_INFO_VARJO = 1000124002, - XR_TYPE_FRAME_END_INFO_ML = 1000135000, - XR_TYPE_GLOBAL_DIMMER_FRAME_END_INFO_ML = 1000136000, - XR_TYPE_COORDINATE_SPACE_CREATE_INFO_ML = 1000137000, - XR_TYPE_SYSTEM_MARKER_UNDERSTANDING_PROPERTIES_ML = 1000138000, - XR_TYPE_MARKER_DETECTOR_CREATE_INFO_ML = 1000138001, - XR_TYPE_MARKER_DETECTOR_ARUCO_INFO_ML = 1000138002, - XR_TYPE_MARKER_DETECTOR_SIZE_INFO_ML = 1000138003, - XR_TYPE_MARKER_DETECTOR_APRIL_TAG_INFO_ML = 1000138004, - XR_TYPE_MARKER_DETECTOR_CUSTOM_PROFILE_INFO_ML = 1000138005, - XR_TYPE_MARKER_DETECTOR_SNAPSHOT_INFO_ML = 1000138006, - XR_TYPE_MARKER_DETECTOR_STATE_ML = 1000138007, - XR_TYPE_MARKER_SPACE_CREATE_INFO_ML = 1000138008, - XR_TYPE_LOCALIZATION_MAP_ML = 1000139000, - XR_TYPE_EVENT_DATA_LOCALIZATION_CHANGED_ML = 1000139001, - XR_TYPE_MAP_LOCALIZATION_REQUEST_INFO_ML = 1000139002, - XR_TYPE_LOCALIZATION_MAP_IMPORT_INFO_ML = 1000139003, - XR_TYPE_LOCALIZATION_ENABLE_EVENTS_INFO_ML = 1000139004, - XR_TYPE_EVENT_DATA_HEADSET_FIT_CHANGED_ML = 1000472000, - XR_TYPE_EVENT_DATA_EYE_CALIBRATION_CHANGED_ML = 1000472001, - XR_TYPE_USER_CALIBRATION_ENABLE_EVENTS_INFO_ML = 1000472002, - XR_TYPE_SPATIAL_ANCHOR_PERSISTENCE_INFO_MSFT = 1000142000, - XR_TYPE_SPATIAL_ANCHOR_FROM_PERSISTED_ANCHOR_CREATE_INFO_MSFT = 1000142001, - XR_TYPE_SCENE_MARKERS_MSFT = 1000147000, - XR_TYPE_SCENE_MARKER_TYPE_FILTER_MSFT = 1000147001, - XR_TYPE_SCENE_MARKER_QR_CODES_MSFT = 1000147002, - XR_TYPE_SPACE_QUERY_INFO_FB = 1000156001, - XR_TYPE_SPACE_QUERY_RESULTS_FB = 1000156002, - XR_TYPE_SPACE_STORAGE_LOCATION_FILTER_INFO_FB = 1000156003, - XR_TYPE_SPACE_UUID_FILTER_INFO_FB = 1000156054, - XR_TYPE_SPACE_COMPONENT_FILTER_INFO_FB = 1000156052, - XR_TYPE_EVENT_DATA_SPACE_QUERY_RESULTS_AVAILABLE_FB = 1000156103, - XR_TYPE_EVENT_DATA_SPACE_QUERY_COMPLETE_FB = 1000156104, - XR_TYPE_SPACE_SAVE_INFO_FB = 1000158000, - XR_TYPE_SPACE_ERASE_INFO_FB = 1000158001, - XR_TYPE_EVENT_DATA_SPACE_SAVE_COMPLETE_FB = 1000158106, - XR_TYPE_EVENT_DATA_SPACE_ERASE_COMPLETE_FB = 1000158107, - XR_TYPE_SWAPCHAIN_IMAGE_FOVEATION_VULKAN_FB = 1000160000, - XR_TYPE_SWAPCHAIN_STATE_ANDROID_SURFACE_DIMENSIONS_FB = 1000161000, - XR_TYPE_SWAPCHAIN_STATE_SAMPLER_OPENGL_ES_FB = 1000162000, - XR_TYPE_SWAPCHAIN_STATE_SAMPLER_VULKAN_FB = 1000163000, - XR_TYPE_SPACE_SHARE_INFO_FB = 1000169001, - XR_TYPE_EVENT_DATA_SPACE_SHARE_COMPLETE_FB = 1000169002, - XR_TYPE_COMPOSITION_LAYER_SPACE_WARP_INFO_FB = 1000171000, - XR_TYPE_SYSTEM_SPACE_WARP_PROPERTIES_FB = 1000171001, - XR_TYPE_HAPTIC_AMPLITUDE_ENVELOPE_VIBRATION_FB = 1000173001, - XR_TYPE_SEMANTIC_LABELS_FB = 1000175000, - XR_TYPE_ROOM_LAYOUT_FB = 1000175001, - XR_TYPE_BOUNDARY_2D_FB = 1000175002, - XR_TYPE_SEMANTIC_LABELS_SUPPORT_INFO_FB = 1000175010, - XR_TYPE_DIGITAL_LENS_CONTROL_ALMALENCE = 1000196000, - XR_TYPE_EVENT_DATA_SCENE_CAPTURE_COMPLETE_FB = 1000198001, - XR_TYPE_SCENE_CAPTURE_REQUEST_INFO_FB = 1000198050, - XR_TYPE_SPACE_CONTAINER_FB = 1000199000, - XR_TYPE_FOVEATION_EYE_TRACKED_PROFILE_CREATE_INFO_META = 1000200000, - XR_TYPE_FOVEATION_EYE_TRACKED_STATE_META = 1000200001, - XR_TYPE_SYSTEM_FOVEATION_EYE_TRACKED_PROPERTIES_META = 1000200002, - XR_TYPE_SYSTEM_FACE_TRACKING_PROPERTIES_FB = 1000201004, - XR_TYPE_FACE_TRACKER_CREATE_INFO_FB = 1000201005, - XR_TYPE_FACE_EXPRESSION_INFO_FB = 1000201002, - XR_TYPE_FACE_EXPRESSION_WEIGHTS_FB = 1000201006, - XR_TYPE_EYE_TRACKER_CREATE_INFO_FB = 1000202001, - XR_TYPE_EYE_GAZES_INFO_FB = 1000202002, - XR_TYPE_EYE_GAZES_FB = 1000202003, - XR_TYPE_SYSTEM_EYE_TRACKING_PROPERTIES_FB = 1000202004, - XR_TYPE_PASSTHROUGH_KEYBOARD_HANDS_INTENSITY_FB = 1000203002, - XR_TYPE_COMPOSITION_LAYER_SETTINGS_FB = 1000204000, - XR_TYPE_HAPTIC_PCM_VIBRATION_FB = 1000209001, - XR_TYPE_DEVICE_PCM_SAMPLE_RATE_STATE_FB = 1000209002, - XR_TYPE_COMPOSITION_LAYER_DEPTH_TEST_FB = 1000212000, - XR_TYPE_LOCAL_DIMMING_FRAME_END_INFO_META = 1000216000, - XR_TYPE_PASSTHROUGH_PREFERENCES_META = 1000217000, - XR_TYPE_SYSTEM_VIRTUAL_KEYBOARD_PROPERTIES_META = 1000219001, - XR_TYPE_VIRTUAL_KEYBOARD_CREATE_INFO_META = 1000219002, - XR_TYPE_VIRTUAL_KEYBOARD_SPACE_CREATE_INFO_META = 1000219003, - XR_TYPE_VIRTUAL_KEYBOARD_LOCATION_INFO_META = 1000219004, - XR_TYPE_VIRTUAL_KEYBOARD_MODEL_VISIBILITY_SET_INFO_META = 1000219005, - XR_TYPE_VIRTUAL_KEYBOARD_ANIMATION_STATE_META = 1000219006, - XR_TYPE_VIRTUAL_KEYBOARD_MODEL_ANIMATION_STATES_META = 1000219007, - XR_TYPE_VIRTUAL_KEYBOARD_TEXTURE_DATA_META = 1000219009, - XR_TYPE_VIRTUAL_KEYBOARD_INPUT_INFO_META = 1000219010, - XR_TYPE_VIRTUAL_KEYBOARD_TEXT_CONTEXT_CHANGE_INFO_META = 1000219011, - XR_TYPE_EVENT_DATA_VIRTUAL_KEYBOARD_COMMIT_TEXT_META = 1000219014, - XR_TYPE_EVENT_DATA_VIRTUAL_KEYBOARD_BACKSPACE_META = 1000219015, - XR_TYPE_EVENT_DATA_VIRTUAL_KEYBOARD_ENTER_META = 1000219016, - XR_TYPE_EVENT_DATA_VIRTUAL_KEYBOARD_SHOWN_META = 1000219017, - XR_TYPE_EVENT_DATA_VIRTUAL_KEYBOARD_HIDDEN_META = 1000219018, - XR_TYPE_EXTERNAL_CAMERA_OCULUS = 1000226000, - XR_TYPE_VULKAN_SWAPCHAIN_CREATE_INFO_META = 1000227000, - XR_TYPE_PERFORMANCE_METRICS_STATE_META = 1000232001, - XR_TYPE_PERFORMANCE_METRICS_COUNTER_META = 1000232002, - XR_TYPE_SPACE_LIST_SAVE_INFO_FB = 1000238000, - XR_TYPE_EVENT_DATA_SPACE_LIST_SAVE_COMPLETE_FB = 1000238001, - XR_TYPE_SPACE_USER_CREATE_INFO_FB = 1000241001, - XR_TYPE_SYSTEM_HEADSET_ID_PROPERTIES_META = 1000245000, - XR_TYPE_RECOMMENDED_LAYER_RESOLUTION_META = 1000254000, - XR_TYPE_RECOMMENDED_LAYER_RESOLUTION_GET_INFO_META = 1000254001, - XR_TYPE_SYSTEM_PASSTHROUGH_COLOR_LUT_PROPERTIES_META = 1000266000, - XR_TYPE_PASSTHROUGH_COLOR_LUT_CREATE_INFO_META = 1000266001, - XR_TYPE_PASSTHROUGH_COLOR_LUT_UPDATE_INFO_META = 1000266002, - XR_TYPE_PASSTHROUGH_COLOR_MAP_LUT_META = 1000266100, - XR_TYPE_PASSTHROUGH_COLOR_MAP_INTERPOLATED_LUT_META = 1000266101, - XR_TYPE_SPACE_TRIANGLE_MESH_GET_INFO_META = 1000269001, - XR_TYPE_SPACE_TRIANGLE_MESH_META = 1000269002, - XR_TYPE_SYSTEM_FACE_TRACKING_PROPERTIES2_FB = 1000287013, - XR_TYPE_FACE_TRACKER_CREATE_INFO2_FB = 1000287014, - XR_TYPE_FACE_EXPRESSION_INFO2_FB = 1000287015, - XR_TYPE_FACE_EXPRESSION_WEIGHTS2_FB = 1000287016, - XR_TYPE_ENVIRONMENT_DEPTH_PROVIDER_CREATE_INFO_META = 1000291000, - XR_TYPE_ENVIRONMENT_DEPTH_SWAPCHAIN_CREATE_INFO_META = 1000291001, - XR_TYPE_ENVIRONMENT_DEPTH_SWAPCHAIN_STATE_META = 1000291002, - XR_TYPE_ENVIRONMENT_DEPTH_IMAGE_ACQUIRE_INFO_META = 1000291003, - XR_TYPE_ENVIRONMENT_DEPTH_IMAGE_VIEW_META = 1000291004, - XR_TYPE_ENVIRONMENT_DEPTH_IMAGE_META = 1000291005, - XR_TYPE_ENVIRONMENT_DEPTH_HAND_REMOVAL_SET_INFO_META = 1000291006, - XR_TYPE_SYSTEM_ENVIRONMENT_DEPTH_PROPERTIES_META = 1000291007, - XR_TYPE_PASSTHROUGH_CREATE_INFO_HTC = 1000317001, - XR_TYPE_PASSTHROUGH_COLOR_HTC = 1000317002, - XR_TYPE_PASSTHROUGH_MESH_TRANSFORM_INFO_HTC = 1000317003, - XR_TYPE_COMPOSITION_LAYER_PASSTHROUGH_HTC = 1000317004, - XR_TYPE_FOVEATION_APPLY_INFO_HTC = 1000318000, - XR_TYPE_FOVEATION_DYNAMIC_MODE_INFO_HTC = 1000318001, - XR_TYPE_FOVEATION_CUSTOM_MODE_INFO_HTC = 1000318002, - XR_TYPE_SYSTEM_ANCHOR_PROPERTIES_HTC = 1000319000, - XR_TYPE_SPATIAL_ANCHOR_CREATE_INFO_HTC = 1000319001, - XR_TYPE_ACTIVE_ACTION_SET_PRIORITIES_EXT = 1000373000, - XR_TYPE_SYSTEM_FORCE_FEEDBACK_CURL_PROPERTIES_MNDX = 1000375000, - XR_TYPE_FORCE_FEEDBACK_CURL_APPLY_LOCATIONS_MNDX = 1000375001, - XR_TYPE_HAND_TRACKING_DATA_SOURCE_INFO_EXT = 1000428000, - XR_TYPE_HAND_TRACKING_DATA_SOURCE_STATE_EXT = 1000428001, - XR_TYPE_PLANE_DETECTOR_CREATE_INFO_EXT = 1000429001, - XR_TYPE_PLANE_DETECTOR_BEGIN_INFO_EXT = 1000429002, - XR_TYPE_PLANE_DETECTOR_GET_INFO_EXT = 1000429003, - XR_TYPE_PLANE_DETECTOR_LOCATIONS_EXT = 1000429004, - XR_TYPE_PLANE_DETECTOR_LOCATION_EXT = 1000429005, - XR_TYPE_PLANE_DETECTOR_POLYGON_BUFFER_EXT = 1000429006, - XR_TYPE_SYSTEM_PLANE_DETECTION_PROPERTIES_EXT = 1000429007, - XR_TYPE_FUTURE_CANCEL_INFO_EXT = 1000469000, - XR_TYPE_FUTURE_POLL_INFO_EXT = 1000469001, - XR_TYPE_FUTURE_COMPLETION_EXT = 1000469002, - XR_TYPE_FUTURE_POLL_RESULT_EXT = 1000469003, - XR_TYPE_EVENT_DATA_USER_PRESENCE_CHANGED_EXT = 1000470000, - XR_TYPE_SYSTEM_USER_PRESENCE_PROPERTIES_EXT = 1000470001, - XR_TYPE_GRAPHICS_BINDING_VULKAN2_KHR = XR_TYPE_GRAPHICS_BINDING_VULKAN_KHR, - XR_TYPE_SWAPCHAIN_IMAGE_VULKAN2_KHR = XR_TYPE_SWAPCHAIN_IMAGE_VULKAN_KHR, - XR_TYPE_GRAPHICS_REQUIREMENTS_VULKAN2_KHR = XR_TYPE_GRAPHICS_REQUIREMENTS_VULKAN_KHR, - XR_TYPE_DEVICE_PCM_SAMPLE_RATE_GET_INFO_FB = XR_TYPE_DEVICE_PCM_SAMPLE_RATE_STATE_FB, - XR_TYPE_SPACES_LOCATE_INFO_KHR = XR_TYPE_SPACES_LOCATE_INFO, - XR_TYPE_SPACE_LOCATIONS_KHR = XR_TYPE_SPACE_LOCATIONS, - XR_TYPE_SPACE_VELOCITIES_KHR = XR_TYPE_SPACE_VELOCITIES, - XR_STRUCTURE_TYPE_MAX_ENUM = 0x7FFFFFFF -} XrStructureType; - -typedef enum XrFormFactor { - XR_FORM_FACTOR_HEAD_MOUNTED_DISPLAY = 1, - XR_FORM_FACTOR_HANDHELD_DISPLAY = 2, - XR_FORM_FACTOR_MAX_ENUM = 0x7FFFFFFF -} XrFormFactor; - -typedef enum XrViewConfigurationType { - XR_VIEW_CONFIGURATION_TYPE_PRIMARY_MONO = 1, - XR_VIEW_CONFIGURATION_TYPE_PRIMARY_STEREO = 2, - XR_VIEW_CONFIGURATION_TYPE_PRIMARY_STEREO_WITH_FOVEATED_INSET = 1000037000, - XR_VIEW_CONFIGURATION_TYPE_SECONDARY_MONO_FIRST_PERSON_OBSERVER_MSFT = 1000054000, - XR_VIEW_CONFIGURATION_TYPE_PRIMARY_QUAD_VARJO = XR_VIEW_CONFIGURATION_TYPE_PRIMARY_STEREO_WITH_FOVEATED_INSET, - XR_VIEW_CONFIGURATION_TYPE_MAX_ENUM = 0x7FFFFFFF -} XrViewConfigurationType; - -typedef enum XrEnvironmentBlendMode { - XR_ENVIRONMENT_BLEND_MODE_OPAQUE = 1, - XR_ENVIRONMENT_BLEND_MODE_ADDITIVE = 2, - XR_ENVIRONMENT_BLEND_MODE_ALPHA_BLEND = 3, - XR_ENVIRONMENT_BLEND_MODE_MAX_ENUM = 0x7FFFFFFF -} XrEnvironmentBlendMode; - -typedef enum XrReferenceSpaceType { - XR_REFERENCE_SPACE_TYPE_VIEW = 1, - XR_REFERENCE_SPACE_TYPE_LOCAL = 2, - XR_REFERENCE_SPACE_TYPE_STAGE = 3, - XR_REFERENCE_SPACE_TYPE_LOCAL_FLOOR = 1000426000, - XR_REFERENCE_SPACE_TYPE_UNBOUNDED_MSFT = 1000038000, - XR_REFERENCE_SPACE_TYPE_COMBINED_EYE_VARJO = 1000121000, - XR_REFERENCE_SPACE_TYPE_LOCALIZATION_MAP_ML = 1000139000, - XR_REFERENCE_SPACE_TYPE_LOCAL_FLOOR_EXT = XR_REFERENCE_SPACE_TYPE_LOCAL_FLOOR, - XR_REFERENCE_SPACE_TYPE_MAX_ENUM = 0x7FFFFFFF -} XrReferenceSpaceType; - -typedef enum XrActionType { - XR_ACTION_TYPE_BOOLEAN_INPUT = 1, - XR_ACTION_TYPE_FLOAT_INPUT = 2, - XR_ACTION_TYPE_VECTOR2F_INPUT = 3, - XR_ACTION_TYPE_POSE_INPUT = 4, - XR_ACTION_TYPE_VIBRATION_OUTPUT = 100, - XR_ACTION_TYPE_MAX_ENUM = 0x7FFFFFFF -} XrActionType; - -typedef enum XrEyeVisibility { - XR_EYE_VISIBILITY_BOTH = 0, - XR_EYE_VISIBILITY_LEFT = 1, - XR_EYE_VISIBILITY_RIGHT = 2, - XR_EYE_VISIBILITY_MAX_ENUM = 0x7FFFFFFF -} XrEyeVisibility; - -typedef enum XrSessionState { - XR_SESSION_STATE_UNKNOWN = 0, - XR_SESSION_STATE_IDLE = 1, - XR_SESSION_STATE_READY = 2, - XR_SESSION_STATE_SYNCHRONIZED = 3, - XR_SESSION_STATE_VISIBLE = 4, - XR_SESSION_STATE_FOCUSED = 5, - XR_SESSION_STATE_STOPPING = 6, - XR_SESSION_STATE_LOSS_PENDING = 7, - XR_SESSION_STATE_EXITING = 8, - XR_SESSION_STATE_MAX_ENUM = 0x7FFFFFFF -} XrSessionState; - -typedef enum XrObjectType { - XR_OBJECT_TYPE_UNKNOWN = 0, - XR_OBJECT_TYPE_INSTANCE = 1, - XR_OBJECT_TYPE_SESSION = 2, - XR_OBJECT_TYPE_SWAPCHAIN = 3, - XR_OBJECT_TYPE_SPACE = 4, - XR_OBJECT_TYPE_ACTION_SET = 5, - XR_OBJECT_TYPE_ACTION = 6, - XR_OBJECT_TYPE_DEBUG_UTILS_MESSENGER_EXT = 1000019000, - XR_OBJECT_TYPE_SPATIAL_ANCHOR_MSFT = 1000039000, - XR_OBJECT_TYPE_SPATIAL_GRAPH_NODE_BINDING_MSFT = 1000049000, - XR_OBJECT_TYPE_HAND_TRACKER_EXT = 1000051000, - XR_OBJECT_TYPE_BODY_TRACKER_FB = 1000076000, - XR_OBJECT_TYPE_SCENE_OBSERVER_MSFT = 1000097000, - XR_OBJECT_TYPE_SCENE_MSFT = 1000097001, - XR_OBJECT_TYPE_FACIAL_TRACKER_HTC = 1000104000, - XR_OBJECT_TYPE_FOVEATION_PROFILE_FB = 1000114000, - XR_OBJECT_TYPE_TRIANGLE_MESH_FB = 1000117000, - XR_OBJECT_TYPE_PASSTHROUGH_FB = 1000118000, - XR_OBJECT_TYPE_PASSTHROUGH_LAYER_FB = 1000118002, - XR_OBJECT_TYPE_GEOMETRY_INSTANCE_FB = 1000118004, - XR_OBJECT_TYPE_MARKER_DETECTOR_ML = 1000138000, - XR_OBJECT_TYPE_EXPORTED_LOCALIZATION_MAP_ML = 1000139000, - XR_OBJECT_TYPE_SPATIAL_ANCHOR_STORE_CONNECTION_MSFT = 1000142000, - XR_OBJECT_TYPE_FACE_TRACKER_FB = 1000201000, - XR_OBJECT_TYPE_EYE_TRACKER_FB = 1000202000, - XR_OBJECT_TYPE_VIRTUAL_KEYBOARD_META = 1000219000, - XR_OBJECT_TYPE_SPACE_USER_FB = 1000241000, - XR_OBJECT_TYPE_PASSTHROUGH_COLOR_LUT_META = 1000266000, - XR_OBJECT_TYPE_FACE_TRACKER2_FB = 1000287012, - XR_OBJECT_TYPE_ENVIRONMENT_DEPTH_PROVIDER_META = 1000291000, - XR_OBJECT_TYPE_ENVIRONMENT_DEPTH_SWAPCHAIN_META = 1000291001, - XR_OBJECT_TYPE_PASSTHROUGH_HTC = 1000317000, - XR_OBJECT_TYPE_PLANE_DETECTOR_EXT = 1000429000, - XR_OBJECT_TYPE_MAX_ENUM = 0x7FFFFFFF -} XrObjectType; -typedef XrFlags64 XrInstanceCreateFlags; - -// Flag bits for XrInstanceCreateFlags - -typedef XrFlags64 XrSessionCreateFlags; - -// Flag bits for XrSessionCreateFlags - -typedef XrFlags64 XrSpaceVelocityFlags; - -// Flag bits for XrSpaceVelocityFlags -static const XrSpaceVelocityFlags XR_SPACE_VELOCITY_LINEAR_VALID_BIT = 0x00000001; -static const XrSpaceVelocityFlags XR_SPACE_VELOCITY_ANGULAR_VALID_BIT = 0x00000002; - -typedef XrFlags64 XrSpaceLocationFlags; - -// Flag bits for XrSpaceLocationFlags -static const XrSpaceLocationFlags XR_SPACE_LOCATION_ORIENTATION_VALID_BIT = 0x00000001; -static const XrSpaceLocationFlags XR_SPACE_LOCATION_POSITION_VALID_BIT = 0x00000002; -static const XrSpaceLocationFlags XR_SPACE_LOCATION_ORIENTATION_TRACKED_BIT = 0x00000004; -static const XrSpaceLocationFlags XR_SPACE_LOCATION_POSITION_TRACKED_BIT = 0x00000008; - -typedef XrFlags64 XrSwapchainCreateFlags; - -// Flag bits for XrSwapchainCreateFlags -static const XrSwapchainCreateFlags XR_SWAPCHAIN_CREATE_PROTECTED_CONTENT_BIT = 0x00000001; -static const XrSwapchainCreateFlags XR_SWAPCHAIN_CREATE_STATIC_IMAGE_BIT = 0x00000002; - -typedef XrFlags64 XrSwapchainUsageFlags; - -// Flag bits for XrSwapchainUsageFlags -static const XrSwapchainUsageFlags XR_SWAPCHAIN_USAGE_COLOR_ATTACHMENT_BIT = 0x00000001; -static const XrSwapchainUsageFlags XR_SWAPCHAIN_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT = 0x00000002; -static const XrSwapchainUsageFlags XR_SWAPCHAIN_USAGE_UNORDERED_ACCESS_BIT = 0x00000004; -static const XrSwapchainUsageFlags XR_SWAPCHAIN_USAGE_TRANSFER_SRC_BIT = 0x00000008; -static const XrSwapchainUsageFlags XR_SWAPCHAIN_USAGE_TRANSFER_DST_BIT = 0x00000010; -static const XrSwapchainUsageFlags XR_SWAPCHAIN_USAGE_SAMPLED_BIT = 0x00000020; -static const XrSwapchainUsageFlags XR_SWAPCHAIN_USAGE_MUTABLE_FORMAT_BIT = 0x00000040; -static const XrSwapchainUsageFlags XR_SWAPCHAIN_USAGE_INPUT_ATTACHMENT_BIT_MND = 0x00000080; -static const XrSwapchainUsageFlags XR_SWAPCHAIN_USAGE_INPUT_ATTACHMENT_BIT_KHR = 0x00000080; // alias of XR_SWAPCHAIN_USAGE_INPUT_ATTACHMENT_BIT_MND - -typedef XrFlags64 XrCompositionLayerFlags; - -// Flag bits for XrCompositionLayerFlags -static const XrCompositionLayerFlags XR_COMPOSITION_LAYER_CORRECT_CHROMATIC_ABERRATION_BIT = 0x00000001; -static const XrCompositionLayerFlags XR_COMPOSITION_LAYER_BLEND_TEXTURE_SOURCE_ALPHA_BIT = 0x00000002; -static const XrCompositionLayerFlags XR_COMPOSITION_LAYER_UNPREMULTIPLIED_ALPHA_BIT = 0x00000004; - -typedef XrFlags64 XrViewStateFlags; - -// Flag bits for XrViewStateFlags -static const XrViewStateFlags XR_VIEW_STATE_ORIENTATION_VALID_BIT = 0x00000001; -static const XrViewStateFlags XR_VIEW_STATE_POSITION_VALID_BIT = 0x00000002; -static const XrViewStateFlags XR_VIEW_STATE_ORIENTATION_TRACKED_BIT = 0x00000004; -static const XrViewStateFlags XR_VIEW_STATE_POSITION_TRACKED_BIT = 0x00000008; - -typedef XrFlags64 XrInputSourceLocalizedNameFlags; - -// Flag bits for XrInputSourceLocalizedNameFlags -static const XrInputSourceLocalizedNameFlags XR_INPUT_SOURCE_LOCALIZED_NAME_USER_PATH_BIT = 0x00000001; -static const XrInputSourceLocalizedNameFlags XR_INPUT_SOURCE_LOCALIZED_NAME_INTERACTION_PROFILE_BIT = 0x00000002; -static const XrInputSourceLocalizedNameFlags XR_INPUT_SOURCE_LOCALIZED_NAME_COMPONENT_BIT = 0x00000004; - -typedef void (XRAPI_PTR *PFN_xrVoidFunction)(void); -typedef struct XrApiLayerProperties { - XrStructureType type; - void* XR_MAY_ALIAS next; - char layerName[XR_MAX_API_LAYER_NAME_SIZE]; - XrVersion specVersion; - uint32_t layerVersion; - char description[XR_MAX_API_LAYER_DESCRIPTION_SIZE]; -} XrApiLayerProperties; - -typedef struct XrExtensionProperties { - XrStructureType type; - void* XR_MAY_ALIAS next; - char extensionName[XR_MAX_EXTENSION_NAME_SIZE]; - uint32_t extensionVersion; -} XrExtensionProperties; - -typedef struct XrApplicationInfo { - char applicationName[XR_MAX_APPLICATION_NAME_SIZE]; - uint32_t applicationVersion; - char engineName[XR_MAX_ENGINE_NAME_SIZE]; - uint32_t engineVersion; - XrVersion apiVersion; -} XrApplicationInfo; - -typedef struct XrInstanceCreateInfo { - XrStructureType type; - const void* XR_MAY_ALIAS next; - XrInstanceCreateFlags createFlags; - XrApplicationInfo applicationInfo; - uint32_t enabledApiLayerCount; - const char* const* enabledApiLayerNames; - uint32_t enabledExtensionCount; - const char* const* enabledExtensionNames; -} XrInstanceCreateInfo; - -typedef struct XrInstanceProperties { - XrStructureType type; - void* XR_MAY_ALIAS next; - XrVersion runtimeVersion; - char runtimeName[XR_MAX_RUNTIME_NAME_SIZE]; -} XrInstanceProperties; - -typedef struct XrEventDataBuffer { - XrStructureType type; - const void* XR_MAY_ALIAS next; - uint8_t varying[4000]; -} XrEventDataBuffer; - -typedef struct XrSystemGetInfo { - XrStructureType type; - const void* XR_MAY_ALIAS next; - XrFormFactor formFactor; -} XrSystemGetInfo; - -typedef struct XrSystemGraphicsProperties { - uint32_t maxSwapchainImageHeight; - uint32_t maxSwapchainImageWidth; - uint32_t maxLayerCount; -} XrSystemGraphicsProperties; - -typedef struct XrSystemTrackingProperties { - XrBool32 orientationTracking; - XrBool32 positionTracking; -} XrSystemTrackingProperties; - -typedef struct XrSystemProperties { - XrStructureType type; - void* XR_MAY_ALIAS next; - XrSystemId systemId; - uint32_t vendorId; - char systemName[XR_MAX_SYSTEM_NAME_SIZE]; - XrSystemGraphicsProperties graphicsProperties; - XrSystemTrackingProperties trackingProperties; -} XrSystemProperties; - -typedef struct XrSessionCreateInfo { - XrStructureType type; - const void* XR_MAY_ALIAS next; - XrSessionCreateFlags createFlags; - XrSystemId systemId; -} XrSessionCreateInfo; - -typedef struct XrVector3f { - float x; - float y; - float z; -} XrVector3f; - -// XrSpaceVelocity extends XrSpaceLocation -typedef struct XrSpaceVelocity { - XrStructureType type; - void* XR_MAY_ALIAS next; - XrSpaceVelocityFlags velocityFlags; - XrVector3f linearVelocity; - XrVector3f angularVelocity; -} XrSpaceVelocity; - -typedef struct XrQuaternionf { - float x; - float y; - float z; - float w; -} XrQuaternionf; - -typedef struct XrPosef { - XrQuaternionf orientation; - XrVector3f position; -} XrPosef; - -typedef struct XrReferenceSpaceCreateInfo { - XrStructureType type; - const void* XR_MAY_ALIAS next; - XrReferenceSpaceType referenceSpaceType; - XrPosef poseInReferenceSpace; -} XrReferenceSpaceCreateInfo; - -typedef struct XrExtent2Df { - float width; - float height; -} XrExtent2Df; - -typedef struct XrActionSpaceCreateInfo { - XrStructureType type; - const void* XR_MAY_ALIAS next; - XrAction action; - XrPath subactionPath; - XrPosef poseInActionSpace; -} XrActionSpaceCreateInfo; - -typedef struct XrSpaceLocation { - XrStructureType type; - void* XR_MAY_ALIAS next; - XrSpaceLocationFlags locationFlags; - XrPosef pose; -} XrSpaceLocation; - -typedef struct XrViewConfigurationProperties { - XrStructureType type; - void* XR_MAY_ALIAS next; - XrViewConfigurationType viewConfigurationType; - XrBool32 fovMutable; -} XrViewConfigurationProperties; - -typedef struct XrViewConfigurationView { - XrStructureType type; - void* XR_MAY_ALIAS next; - uint32_t recommendedImageRectWidth; - uint32_t maxImageRectWidth; - uint32_t recommendedImageRectHeight; - uint32_t maxImageRectHeight; - uint32_t recommendedSwapchainSampleCount; - uint32_t maxSwapchainSampleCount; -} XrViewConfigurationView; - -typedef struct XrSwapchainCreateInfo { - XrStructureType type; - const void* XR_MAY_ALIAS next; - XrSwapchainCreateFlags createFlags; - XrSwapchainUsageFlags usageFlags; - int64_t format; - uint32_t sampleCount; - uint32_t width; - uint32_t height; - uint32_t faceCount; - uint32_t arraySize; - uint32_t mipCount; -} XrSwapchainCreateInfo; - -typedef struct XR_MAY_ALIAS XrSwapchainImageBaseHeader { - XrStructureType type; - void* XR_MAY_ALIAS next; -} XrSwapchainImageBaseHeader; - -typedef struct XrSwapchainImageAcquireInfo { - XrStructureType type; - const void* XR_MAY_ALIAS next; -} XrSwapchainImageAcquireInfo; - -typedef struct XrSwapchainImageWaitInfo { - XrStructureType type; - const void* XR_MAY_ALIAS next; - XrDuration timeout; -} XrSwapchainImageWaitInfo; - -typedef struct XrSwapchainImageReleaseInfo { - XrStructureType type; - const void* XR_MAY_ALIAS next; -} XrSwapchainImageReleaseInfo; - -typedef struct XrSessionBeginInfo { - XrStructureType type; - const void* XR_MAY_ALIAS next; - XrViewConfigurationType primaryViewConfigurationType; -} XrSessionBeginInfo; - -typedef struct XrFrameWaitInfo { - XrStructureType type; - const void* XR_MAY_ALIAS next; -} XrFrameWaitInfo; - -typedef struct XrFrameState { - XrStructureType type; - void* XR_MAY_ALIAS next; - XrTime predictedDisplayTime; - XrDuration predictedDisplayPeriod; - XrBool32 shouldRender; -} XrFrameState; - -typedef struct XrFrameBeginInfo { - XrStructureType type; - const void* XR_MAY_ALIAS next; -} XrFrameBeginInfo; - -typedef struct XR_MAY_ALIAS XrCompositionLayerBaseHeader { - XrStructureType type; - const void* XR_MAY_ALIAS next; - XrCompositionLayerFlags layerFlags; - XrSpace space; -} XrCompositionLayerBaseHeader; - -typedef struct XrFrameEndInfo { - XrStructureType type; - const void* XR_MAY_ALIAS next; - XrTime displayTime; - XrEnvironmentBlendMode environmentBlendMode; - uint32_t layerCount; - const XrCompositionLayerBaseHeader* const* layers; -} XrFrameEndInfo; - -typedef struct XrViewLocateInfo { - XrStructureType type; - const void* XR_MAY_ALIAS next; - XrViewConfigurationType viewConfigurationType; - XrTime displayTime; - XrSpace space; -} XrViewLocateInfo; - -typedef struct XrViewState { - XrStructureType type; - void* XR_MAY_ALIAS next; - XrViewStateFlags viewStateFlags; -} XrViewState; - -typedef struct XrFovf { - float angleLeft; - float angleRight; - float angleUp; - float angleDown; -} XrFovf; - -typedef struct XrView { - XrStructureType type; - void* XR_MAY_ALIAS next; - XrPosef pose; - XrFovf fov; -} XrView; - -typedef struct XrActionSetCreateInfo { - XrStructureType type; - const void* XR_MAY_ALIAS next; - char actionSetName[XR_MAX_ACTION_SET_NAME_SIZE]; - char localizedActionSetName[XR_MAX_LOCALIZED_ACTION_SET_NAME_SIZE]; - uint32_t priority; -} XrActionSetCreateInfo; - -typedef struct XrActionCreateInfo { - XrStructureType type; - const void* XR_MAY_ALIAS next; - char actionName[XR_MAX_ACTION_NAME_SIZE]; - XrActionType actionType; - uint32_t countSubactionPaths; - const XrPath* subactionPaths; - char localizedActionName[XR_MAX_LOCALIZED_ACTION_NAME_SIZE]; -} XrActionCreateInfo; - -typedef struct XrActionSuggestedBinding { - XrAction action; - XrPath binding; -} XrActionSuggestedBinding; - -typedef struct XrInteractionProfileSuggestedBinding { - XrStructureType type; - const void* XR_MAY_ALIAS next; - XrPath interactionProfile; - uint32_t countSuggestedBindings; - const XrActionSuggestedBinding* suggestedBindings; -} XrInteractionProfileSuggestedBinding; - -typedef struct XrSessionActionSetsAttachInfo { - XrStructureType type; - const void* XR_MAY_ALIAS next; - uint32_t countActionSets; - const XrActionSet* actionSets; -} XrSessionActionSetsAttachInfo; - -typedef struct XrInteractionProfileState { - XrStructureType type; - void* XR_MAY_ALIAS next; - XrPath interactionProfile; -} XrInteractionProfileState; - -typedef struct XrActionStateGetInfo { - XrStructureType type; - const void* XR_MAY_ALIAS next; - XrAction action; - XrPath subactionPath; -} XrActionStateGetInfo; - -typedef struct XrActionStateBoolean { - XrStructureType type; - void* XR_MAY_ALIAS next; - XrBool32 currentState; - XrBool32 changedSinceLastSync; - XrTime lastChangeTime; - XrBool32 isActive; -} XrActionStateBoolean; - -typedef struct XrActionStateFloat { - XrStructureType type; - void* XR_MAY_ALIAS next; - float currentState; - XrBool32 changedSinceLastSync; - XrTime lastChangeTime; - XrBool32 isActive; -} XrActionStateFloat; - -typedef struct XrVector2f { - float x; - float y; -} XrVector2f; - -typedef struct XrActionStateVector2f { - XrStructureType type; - void* XR_MAY_ALIAS next; - XrVector2f currentState; - XrBool32 changedSinceLastSync; - XrTime lastChangeTime; - XrBool32 isActive; -} XrActionStateVector2f; - -typedef struct XrActionStatePose { - XrStructureType type; - void* XR_MAY_ALIAS next; - XrBool32 isActive; -} XrActionStatePose; - -typedef struct XrActiveActionSet { - XrActionSet actionSet; - XrPath subactionPath; -} XrActiveActionSet; - -typedef struct XrActionsSyncInfo { - XrStructureType type; - const void* XR_MAY_ALIAS next; - uint32_t countActiveActionSets; - const XrActiveActionSet* activeActionSets; -} XrActionsSyncInfo; - -typedef struct XrBoundSourcesForActionEnumerateInfo { - XrStructureType type; - const void* XR_MAY_ALIAS next; - XrAction action; -} XrBoundSourcesForActionEnumerateInfo; - -typedef struct XrInputSourceLocalizedNameGetInfo { - XrStructureType type; - const void* XR_MAY_ALIAS next; - XrPath sourcePath; - XrInputSourceLocalizedNameFlags whichComponents; -} XrInputSourceLocalizedNameGetInfo; - -typedef struct XrHapticActionInfo { - XrStructureType type; - const void* XR_MAY_ALIAS next; - XrAction action; - XrPath subactionPath; -} XrHapticActionInfo; - -typedef struct XR_MAY_ALIAS XrHapticBaseHeader { - XrStructureType type; - const void* XR_MAY_ALIAS next; -} XrHapticBaseHeader; - -typedef struct XR_MAY_ALIAS XrBaseInStructure { - XrStructureType type; - const struct XrBaseInStructure* next; -} XrBaseInStructure; - -typedef struct XR_MAY_ALIAS XrBaseOutStructure { - XrStructureType type; - struct XrBaseOutStructure* next; -} XrBaseOutStructure; - -typedef struct XrOffset2Di { - int32_t x; - int32_t y; -} XrOffset2Di; - -typedef struct XrExtent2Di { - int32_t width; - int32_t height; -} XrExtent2Di; - -typedef struct XrRect2Di { - XrOffset2Di offset; - XrExtent2Di extent; -} XrRect2Di; - -typedef struct XrSwapchainSubImage { - XrSwapchain swapchain; - XrRect2Di imageRect; - uint32_t imageArrayIndex; -} XrSwapchainSubImage; - -typedef struct XrCompositionLayerProjectionView { - XrStructureType type; - const void* XR_MAY_ALIAS next; - XrPosef pose; - XrFovf fov; - XrSwapchainSubImage subImage; -} XrCompositionLayerProjectionView; - -typedef struct XrCompositionLayerProjection { - XrStructureType type; - const void* XR_MAY_ALIAS next; - XrCompositionLayerFlags layerFlags; - XrSpace space; - uint32_t viewCount; - const XrCompositionLayerProjectionView* views; -} XrCompositionLayerProjection; - -typedef struct XrCompositionLayerQuad { - XrStructureType type; - const void* XR_MAY_ALIAS next; - XrCompositionLayerFlags layerFlags; - XrSpace space; - XrEyeVisibility eyeVisibility; - XrSwapchainSubImage subImage; - XrPosef pose; - XrExtent2Df size; -} XrCompositionLayerQuad; - -typedef struct XR_MAY_ALIAS XrEventDataBaseHeader { - XrStructureType type; - const void* XR_MAY_ALIAS next; -} XrEventDataBaseHeader; - -typedef struct XrEventDataEventsLost { - XrStructureType type; - const void* XR_MAY_ALIAS next; - uint32_t lostEventCount; -} XrEventDataEventsLost; - -typedef struct XrEventDataInstanceLossPending { - XrStructureType type; - const void* XR_MAY_ALIAS next; - XrTime lossTime; -} XrEventDataInstanceLossPending; - -typedef struct XrEventDataSessionStateChanged { - XrStructureType type; - const void* XR_MAY_ALIAS next; - XrSession session; - XrSessionState state; - XrTime time; -} XrEventDataSessionStateChanged; - -typedef struct XrEventDataReferenceSpaceChangePending { - XrStructureType type; - const void* XR_MAY_ALIAS next; - XrSession session; - XrReferenceSpaceType referenceSpaceType; - XrTime changeTime; - XrBool32 poseValid; - XrPosef poseInPreviousSpace; -} XrEventDataReferenceSpaceChangePending; - -typedef struct XrEventDataInteractionProfileChanged { - XrStructureType type; - const void* XR_MAY_ALIAS next; - XrSession session; -} XrEventDataInteractionProfileChanged; - -typedef struct XrHapticVibration { - XrStructureType type; - const void* XR_MAY_ALIAS next; - XrDuration duration; - float frequency; - float amplitude; -} XrHapticVibration; - -typedef struct XrOffset2Df { - float x; - float y; -} XrOffset2Df; - -typedef struct XrRect2Df { - XrOffset2Df offset; - XrExtent2Df extent; -} XrRect2Df; - -typedef struct XrVector4f { - float x; - float y; - float z; - float w; -} XrVector4f; - -typedef struct XrColor4f { - float r; - float g; - float b; - float a; -} XrColor4f; - -typedef XrResult (XRAPI_PTR *PFN_xrGetInstanceProcAddr)(XrInstance instance, const char* name, PFN_xrVoidFunction* function); -typedef XrResult (XRAPI_PTR *PFN_xrEnumerateApiLayerProperties)(uint32_t propertyCapacityInput, uint32_t* propertyCountOutput, XrApiLayerProperties* properties); -typedef XrResult (XRAPI_PTR *PFN_xrEnumerateInstanceExtensionProperties)(const char* layerName, uint32_t propertyCapacityInput, uint32_t* propertyCountOutput, XrExtensionProperties* properties); -typedef XrResult (XRAPI_PTR *PFN_xrCreateInstance)(const XrInstanceCreateInfo* createInfo, XrInstance* instance); -typedef XrResult (XRAPI_PTR *PFN_xrDestroyInstance)(XrInstance instance); -typedef XrResult (XRAPI_PTR *PFN_xrGetInstanceProperties)(XrInstance instance, XrInstanceProperties* instanceProperties); -typedef XrResult (XRAPI_PTR *PFN_xrPollEvent)(XrInstance instance, XrEventDataBuffer* eventData); -typedef XrResult (XRAPI_PTR *PFN_xrResultToString)(XrInstance instance, XrResult value, char buffer[XR_MAX_RESULT_STRING_SIZE]); -typedef XrResult (XRAPI_PTR *PFN_xrStructureTypeToString)(XrInstance instance, XrStructureType value, char buffer[XR_MAX_STRUCTURE_NAME_SIZE]); -typedef XrResult (XRAPI_PTR *PFN_xrGetSystem)(XrInstance instance, const XrSystemGetInfo* getInfo, XrSystemId* systemId); -typedef XrResult (XRAPI_PTR *PFN_xrGetSystemProperties)(XrInstance instance, XrSystemId systemId, XrSystemProperties* properties); -typedef XrResult (XRAPI_PTR *PFN_xrEnumerateEnvironmentBlendModes)(XrInstance instance, XrSystemId systemId, XrViewConfigurationType viewConfigurationType, uint32_t environmentBlendModeCapacityInput, uint32_t* environmentBlendModeCountOutput, XrEnvironmentBlendMode* environmentBlendModes); -typedef XrResult (XRAPI_PTR *PFN_xrCreateSession)(XrInstance instance, const XrSessionCreateInfo* createInfo, XrSession* session); -typedef XrResult (XRAPI_PTR *PFN_xrDestroySession)(XrSession session); -typedef XrResult (XRAPI_PTR *PFN_xrEnumerateReferenceSpaces)(XrSession session, uint32_t spaceCapacityInput, uint32_t* spaceCountOutput, XrReferenceSpaceType* spaces); -typedef XrResult (XRAPI_PTR *PFN_xrCreateReferenceSpace)(XrSession session, const XrReferenceSpaceCreateInfo* createInfo, XrSpace* space); -typedef XrResult (XRAPI_PTR *PFN_xrGetReferenceSpaceBoundsRect)(XrSession session, XrReferenceSpaceType referenceSpaceType, XrExtent2Df* bounds); -typedef XrResult (XRAPI_PTR *PFN_xrCreateActionSpace)(XrSession session, const XrActionSpaceCreateInfo* createInfo, XrSpace* space); -typedef XrResult (XRAPI_PTR *PFN_xrLocateSpace)(XrSpace space, XrSpace baseSpace, XrTime time, XrSpaceLocation* location); -typedef XrResult (XRAPI_PTR *PFN_xrDestroySpace)(XrSpace space); -typedef XrResult (XRAPI_PTR *PFN_xrEnumerateViewConfigurations)(XrInstance instance, XrSystemId systemId, uint32_t viewConfigurationTypeCapacityInput, uint32_t* viewConfigurationTypeCountOutput, XrViewConfigurationType* viewConfigurationTypes); -typedef XrResult (XRAPI_PTR *PFN_xrGetViewConfigurationProperties)(XrInstance instance, XrSystemId systemId, XrViewConfigurationType viewConfigurationType, XrViewConfigurationProperties* configurationProperties); -typedef XrResult (XRAPI_PTR *PFN_xrEnumerateViewConfigurationViews)(XrInstance instance, XrSystemId systemId, XrViewConfigurationType viewConfigurationType, uint32_t viewCapacityInput, uint32_t* viewCountOutput, XrViewConfigurationView* views); -typedef XrResult (XRAPI_PTR *PFN_xrEnumerateSwapchainFormats)(XrSession session, uint32_t formatCapacityInput, uint32_t* formatCountOutput, int64_t* formats); -typedef XrResult (XRAPI_PTR *PFN_xrCreateSwapchain)(XrSession session, const XrSwapchainCreateInfo* createInfo, XrSwapchain* swapchain); -typedef XrResult (XRAPI_PTR *PFN_xrDestroySwapchain)(XrSwapchain swapchain); -typedef XrResult (XRAPI_PTR *PFN_xrEnumerateSwapchainImages)(XrSwapchain swapchain, uint32_t imageCapacityInput, uint32_t* imageCountOutput, XrSwapchainImageBaseHeader* images); -typedef XrResult (XRAPI_PTR *PFN_xrAcquireSwapchainImage)(XrSwapchain swapchain, const XrSwapchainImageAcquireInfo* acquireInfo, uint32_t* index); -typedef XrResult (XRAPI_PTR *PFN_xrWaitSwapchainImage)(XrSwapchain swapchain, const XrSwapchainImageWaitInfo* waitInfo); -typedef XrResult (XRAPI_PTR *PFN_xrReleaseSwapchainImage)(XrSwapchain swapchain, const XrSwapchainImageReleaseInfo* releaseInfo); -typedef XrResult (XRAPI_PTR *PFN_xrBeginSession)(XrSession session, const XrSessionBeginInfo* beginInfo); -typedef XrResult (XRAPI_PTR *PFN_xrEndSession)(XrSession session); -typedef XrResult (XRAPI_PTR *PFN_xrRequestExitSession)(XrSession session); -typedef XrResult (XRAPI_PTR *PFN_xrWaitFrame)(XrSession session, const XrFrameWaitInfo* frameWaitInfo, XrFrameState* frameState); -typedef XrResult (XRAPI_PTR *PFN_xrBeginFrame)(XrSession session, const XrFrameBeginInfo* frameBeginInfo); -typedef XrResult (XRAPI_PTR *PFN_xrEndFrame)(XrSession session, const XrFrameEndInfo* frameEndInfo); -typedef XrResult (XRAPI_PTR *PFN_xrLocateViews)(XrSession session, const XrViewLocateInfo* viewLocateInfo, XrViewState* viewState, uint32_t viewCapacityInput, uint32_t* viewCountOutput, XrView* views); -typedef XrResult (XRAPI_PTR *PFN_xrStringToPath)(XrInstance instance, const char* pathString, XrPath* path); -typedef XrResult (XRAPI_PTR *PFN_xrPathToString)(XrInstance instance, XrPath path, uint32_t bufferCapacityInput, uint32_t* bufferCountOutput, char* buffer); -typedef XrResult (XRAPI_PTR *PFN_xrCreateActionSet)(XrInstance instance, const XrActionSetCreateInfo* createInfo, XrActionSet* actionSet); -typedef XrResult (XRAPI_PTR *PFN_xrDestroyActionSet)(XrActionSet actionSet); -typedef XrResult (XRAPI_PTR *PFN_xrCreateAction)(XrActionSet actionSet, const XrActionCreateInfo* createInfo, XrAction* action); -typedef XrResult (XRAPI_PTR *PFN_xrDestroyAction)(XrAction action); -typedef XrResult (XRAPI_PTR *PFN_xrSuggestInteractionProfileBindings)(XrInstance instance, const XrInteractionProfileSuggestedBinding* suggestedBindings); -typedef XrResult (XRAPI_PTR *PFN_xrAttachSessionActionSets)(XrSession session, const XrSessionActionSetsAttachInfo* attachInfo); -typedef XrResult (XRAPI_PTR *PFN_xrGetCurrentInteractionProfile)(XrSession session, XrPath topLevelUserPath, XrInteractionProfileState* interactionProfile); -typedef XrResult (XRAPI_PTR *PFN_xrGetActionStateBoolean)(XrSession session, const XrActionStateGetInfo* getInfo, XrActionStateBoolean* state); -typedef XrResult (XRAPI_PTR *PFN_xrGetActionStateFloat)(XrSession session, const XrActionStateGetInfo* getInfo, XrActionStateFloat* state); -typedef XrResult (XRAPI_PTR *PFN_xrGetActionStateVector2f)(XrSession session, const XrActionStateGetInfo* getInfo, XrActionStateVector2f* state); -typedef XrResult (XRAPI_PTR *PFN_xrGetActionStatePose)(XrSession session, const XrActionStateGetInfo* getInfo, XrActionStatePose* state); -typedef XrResult (XRAPI_PTR *PFN_xrSyncActions)(XrSession session, const XrActionsSyncInfo* syncInfo); -typedef XrResult (XRAPI_PTR *PFN_xrEnumerateBoundSourcesForAction)(XrSession session, const XrBoundSourcesForActionEnumerateInfo* enumerateInfo, uint32_t sourceCapacityInput, uint32_t* sourceCountOutput, XrPath* sources); -typedef XrResult (XRAPI_PTR *PFN_xrGetInputSourceLocalizedName)(XrSession session, const XrInputSourceLocalizedNameGetInfo* getInfo, uint32_t bufferCapacityInput, uint32_t* bufferCountOutput, char* buffer); -typedef XrResult (XRAPI_PTR *PFN_xrApplyHapticFeedback)(XrSession session, const XrHapticActionInfo* hapticActionInfo, const XrHapticBaseHeader* hapticFeedback); -typedef XrResult (XRAPI_PTR *PFN_xrStopHapticFeedback)(XrSession session, const XrHapticActionInfo* hapticActionInfo); - -#ifndef XR_NO_PROTOTYPES -XRAPI_ATTR XrResult XRAPI_CALL xrGetInstanceProcAddr( - XrInstance instance, - const char* name, - PFN_xrVoidFunction* function); - -XRAPI_ATTR XrResult XRAPI_CALL xrEnumerateApiLayerProperties( - uint32_t propertyCapacityInput, - uint32_t* propertyCountOutput, - XrApiLayerProperties* properties); - -XRAPI_ATTR XrResult XRAPI_CALL xrEnumerateInstanceExtensionProperties( - const char* layerName, - uint32_t propertyCapacityInput, - uint32_t* propertyCountOutput, - XrExtensionProperties* properties); - -XRAPI_ATTR XrResult XRAPI_CALL xrCreateInstance( - const XrInstanceCreateInfo* createInfo, - XrInstance* instance); - -XRAPI_ATTR XrResult XRAPI_CALL xrDestroyInstance( - XrInstance instance); - -XRAPI_ATTR XrResult XRAPI_CALL xrGetInstanceProperties( - XrInstance instance, - XrInstanceProperties* instanceProperties); - -XRAPI_ATTR XrResult XRAPI_CALL xrPollEvent( - XrInstance instance, - XrEventDataBuffer* eventData); - -XRAPI_ATTR XrResult XRAPI_CALL xrResultToString( - XrInstance instance, - XrResult value, - char buffer[XR_MAX_RESULT_STRING_SIZE]); - -XRAPI_ATTR XrResult XRAPI_CALL xrStructureTypeToString( - XrInstance instance, - XrStructureType value, - char buffer[XR_MAX_STRUCTURE_NAME_SIZE]); - -XRAPI_ATTR XrResult XRAPI_CALL xrGetSystem( - XrInstance instance, - const XrSystemGetInfo* getInfo, - XrSystemId* systemId); - -XRAPI_ATTR XrResult XRAPI_CALL xrGetSystemProperties( - XrInstance instance, - XrSystemId systemId, - XrSystemProperties* properties); - -XRAPI_ATTR XrResult XRAPI_CALL xrEnumerateEnvironmentBlendModes( - XrInstance instance, - XrSystemId systemId, - XrViewConfigurationType viewConfigurationType, - uint32_t environmentBlendModeCapacityInput, - uint32_t* environmentBlendModeCountOutput, - XrEnvironmentBlendMode* environmentBlendModes); - -XRAPI_ATTR XrResult XRAPI_CALL xrCreateSession( - XrInstance instance, - const XrSessionCreateInfo* createInfo, - XrSession* session); - -XRAPI_ATTR XrResult XRAPI_CALL xrDestroySession( - XrSession session); - -XRAPI_ATTR XrResult XRAPI_CALL xrEnumerateReferenceSpaces( - XrSession session, - uint32_t spaceCapacityInput, - uint32_t* spaceCountOutput, - XrReferenceSpaceType* spaces); - -XRAPI_ATTR XrResult XRAPI_CALL xrCreateReferenceSpace( - XrSession session, - const XrReferenceSpaceCreateInfo* createInfo, - XrSpace* space); - -XRAPI_ATTR XrResult XRAPI_CALL xrGetReferenceSpaceBoundsRect( - XrSession session, - XrReferenceSpaceType referenceSpaceType, - XrExtent2Df* bounds); - -XRAPI_ATTR XrResult XRAPI_CALL xrCreateActionSpace( - XrSession session, - const XrActionSpaceCreateInfo* createInfo, - XrSpace* space); - -XRAPI_ATTR XrResult XRAPI_CALL xrLocateSpace( - XrSpace space, - XrSpace baseSpace, - XrTime time, - XrSpaceLocation* location); - -XRAPI_ATTR XrResult XRAPI_CALL xrDestroySpace( - XrSpace space); - -XRAPI_ATTR XrResult XRAPI_CALL xrEnumerateViewConfigurations( - XrInstance instance, - XrSystemId systemId, - uint32_t viewConfigurationTypeCapacityInput, - uint32_t* viewConfigurationTypeCountOutput, - XrViewConfigurationType* viewConfigurationTypes); - -XRAPI_ATTR XrResult XRAPI_CALL xrGetViewConfigurationProperties( - XrInstance instance, - XrSystemId systemId, - XrViewConfigurationType viewConfigurationType, - XrViewConfigurationProperties* configurationProperties); - -XRAPI_ATTR XrResult XRAPI_CALL xrEnumerateViewConfigurationViews( - XrInstance instance, - XrSystemId systemId, - XrViewConfigurationType viewConfigurationType, - uint32_t viewCapacityInput, - uint32_t* viewCountOutput, - XrViewConfigurationView* views); - -XRAPI_ATTR XrResult XRAPI_CALL xrEnumerateSwapchainFormats( - XrSession session, - uint32_t formatCapacityInput, - uint32_t* formatCountOutput, - int64_t* formats); - -XRAPI_ATTR XrResult XRAPI_CALL xrCreateSwapchain( - XrSession session, - const XrSwapchainCreateInfo* createInfo, - XrSwapchain* swapchain); - -XRAPI_ATTR XrResult XRAPI_CALL xrDestroySwapchain( - XrSwapchain swapchain); - -XRAPI_ATTR XrResult XRAPI_CALL xrEnumerateSwapchainImages( - XrSwapchain swapchain, - uint32_t imageCapacityInput, - uint32_t* imageCountOutput, - XrSwapchainImageBaseHeader* images); - -XRAPI_ATTR XrResult XRAPI_CALL xrAcquireSwapchainImage( - XrSwapchain swapchain, - const XrSwapchainImageAcquireInfo* acquireInfo, - uint32_t* index); - -XRAPI_ATTR XrResult XRAPI_CALL xrWaitSwapchainImage( - XrSwapchain swapchain, - const XrSwapchainImageWaitInfo* waitInfo); - -XRAPI_ATTR XrResult XRAPI_CALL xrReleaseSwapchainImage( - XrSwapchain swapchain, - const XrSwapchainImageReleaseInfo* releaseInfo); - -XRAPI_ATTR XrResult XRAPI_CALL xrBeginSession( - XrSession session, - const XrSessionBeginInfo* beginInfo); - -XRAPI_ATTR XrResult XRAPI_CALL xrEndSession( - XrSession session); - -XRAPI_ATTR XrResult XRAPI_CALL xrRequestExitSession( - XrSession session); - -XRAPI_ATTR XrResult XRAPI_CALL xrWaitFrame( - XrSession session, - const XrFrameWaitInfo* frameWaitInfo, - XrFrameState* frameState); - -XRAPI_ATTR XrResult XRAPI_CALL xrBeginFrame( - XrSession session, - const XrFrameBeginInfo* frameBeginInfo); - -XRAPI_ATTR XrResult XRAPI_CALL xrEndFrame( - XrSession session, - const XrFrameEndInfo* frameEndInfo); - -XRAPI_ATTR XrResult XRAPI_CALL xrLocateViews( - XrSession session, - const XrViewLocateInfo* viewLocateInfo, - XrViewState* viewState, - uint32_t viewCapacityInput, - uint32_t* viewCountOutput, - XrView* views); - -XRAPI_ATTR XrResult XRAPI_CALL xrStringToPath( - XrInstance instance, - const char* pathString, - XrPath* path); - -XRAPI_ATTR XrResult XRAPI_CALL xrPathToString( - XrInstance instance, - XrPath path, - uint32_t bufferCapacityInput, - uint32_t* bufferCountOutput, - char* buffer); - -XRAPI_ATTR XrResult XRAPI_CALL xrCreateActionSet( - XrInstance instance, - const XrActionSetCreateInfo* createInfo, - XrActionSet* actionSet); - -XRAPI_ATTR XrResult XRAPI_CALL xrDestroyActionSet( - XrActionSet actionSet); - -XRAPI_ATTR XrResult XRAPI_CALL xrCreateAction( - XrActionSet actionSet, - const XrActionCreateInfo* createInfo, - XrAction* action); - -XRAPI_ATTR XrResult XRAPI_CALL xrDestroyAction( - XrAction action); - -XRAPI_ATTR XrResult XRAPI_CALL xrSuggestInteractionProfileBindings( - XrInstance instance, - const XrInteractionProfileSuggestedBinding* suggestedBindings); - -XRAPI_ATTR XrResult XRAPI_CALL xrAttachSessionActionSets( - XrSession session, - const XrSessionActionSetsAttachInfo* attachInfo); - -XRAPI_ATTR XrResult XRAPI_CALL xrGetCurrentInteractionProfile( - XrSession session, - XrPath topLevelUserPath, - XrInteractionProfileState* interactionProfile); - -XRAPI_ATTR XrResult XRAPI_CALL xrGetActionStateBoolean( - XrSession session, - const XrActionStateGetInfo* getInfo, - XrActionStateBoolean* state); - -XRAPI_ATTR XrResult XRAPI_CALL xrGetActionStateFloat( - XrSession session, - const XrActionStateGetInfo* getInfo, - XrActionStateFloat* state); - -XRAPI_ATTR XrResult XRAPI_CALL xrGetActionStateVector2f( - XrSession session, - const XrActionStateGetInfo* getInfo, - XrActionStateVector2f* state); - -XRAPI_ATTR XrResult XRAPI_CALL xrGetActionStatePose( - XrSession session, - const XrActionStateGetInfo* getInfo, - XrActionStatePose* state); - -XRAPI_ATTR XrResult XRAPI_CALL xrSyncActions( - XrSession session, - const XrActionsSyncInfo* syncInfo); - -XRAPI_ATTR XrResult XRAPI_CALL xrEnumerateBoundSourcesForAction( - XrSession session, - const XrBoundSourcesForActionEnumerateInfo* enumerateInfo, - uint32_t sourceCapacityInput, - uint32_t* sourceCountOutput, - XrPath* sources); - -XRAPI_ATTR XrResult XRAPI_CALL xrGetInputSourceLocalizedName( - XrSession session, - const XrInputSourceLocalizedNameGetInfo* getInfo, - uint32_t bufferCapacityInput, - uint32_t* bufferCountOutput, - char* buffer); - -XRAPI_ATTR XrResult XRAPI_CALL xrApplyHapticFeedback( - XrSession session, - const XrHapticActionInfo* hapticActionInfo, - const XrHapticBaseHeader* hapticFeedback); - -XRAPI_ATTR XrResult XRAPI_CALL xrStopHapticFeedback( - XrSession session, - const XrHapticActionInfo* hapticActionInfo); -#endif /* !XR_NO_PROTOTYPES */ - - -// XR_VERSION_1_1 is a preprocessor guard. Do not pass it to API calls. -#define XR_VERSION_1_1 1 -// OpenXR 1.1 version number -#define XR_API_VERSION_1_1 XR_MAKE_VERSION(1, 1, XR_VERSION_PATCH(XR_CURRENT_API_VERSION)) - -#define XR_UUID_SIZE 16 -typedef struct XrColor3f { - float r; - float g; - float b; -} XrColor3f; - -typedef struct XrExtent3Df { - float width; - float height; - float depth; -} XrExtent3Df; - -typedef struct XrSpheref { - XrPosef center; - float radius; -} XrSpheref; - -typedef struct XrBoxf { - XrPosef center; - XrExtent3Df extents; -} XrBoxf; - -typedef struct XrFrustumf { - XrPosef pose; - XrFovf fov; - float nearZ; - float farZ; -} XrFrustumf; - -typedef struct XrUuid { - uint8_t data[XR_UUID_SIZE]; -} XrUuid; - -typedef struct XrSpacesLocateInfo { - XrStructureType type; - const void* XR_MAY_ALIAS next; - XrSpace baseSpace; - XrTime time; - uint32_t spaceCount; - const XrSpace* spaces; -} XrSpacesLocateInfo; - -typedef struct XrSpaceLocationData { - XrSpaceLocationFlags locationFlags; - XrPosef pose; -} XrSpaceLocationData; - -typedef struct XrSpaceLocations { - XrStructureType type; - void* XR_MAY_ALIAS next; - uint32_t locationCount; - XrSpaceLocationData* locations; -} XrSpaceLocations; - -typedef struct XrSpaceVelocityData { - XrSpaceVelocityFlags velocityFlags; - XrVector3f linearVelocity; - XrVector3f angularVelocity; -} XrSpaceVelocityData; - -// XrSpaceVelocities extends XrSpaceLocations -typedef struct XrSpaceVelocities { - XrStructureType type; - void* XR_MAY_ALIAS next; - uint32_t velocityCount; - XrSpaceVelocityData* velocities; -} XrSpaceVelocities; - -typedef XrResult (XRAPI_PTR *PFN_xrLocateSpaces)(XrSession session, const XrSpacesLocateInfo* locateInfo, XrSpaceLocations* spaceLocations); - -#ifndef XR_NO_PROTOTYPES -XRAPI_ATTR XrResult XRAPI_CALL xrLocateSpaces( - XrSession session, - const XrSpacesLocateInfo* locateInfo, - XrSpaceLocations* spaceLocations); -#endif /* !XR_NO_PROTOTYPES */ - - -// XR_KHR_composition_layer_cube is a preprocessor guard. Do not pass it to API calls. -#define XR_KHR_composition_layer_cube 1 -#define XR_KHR_composition_layer_cube_SPEC_VERSION 8 -#define XR_KHR_COMPOSITION_LAYER_CUBE_EXTENSION_NAME "XR_KHR_composition_layer_cube" -typedef struct XrCompositionLayerCubeKHR { - XrStructureType type; - const void* XR_MAY_ALIAS next; - XrCompositionLayerFlags layerFlags; - XrSpace space; - XrEyeVisibility eyeVisibility; - XrSwapchain swapchain; - uint32_t imageArrayIndex; - XrQuaternionf orientation; -} XrCompositionLayerCubeKHR; - - - -// XR_KHR_composition_layer_depth is a preprocessor guard. Do not pass it to API calls. -#define XR_KHR_composition_layer_depth 1 -#define XR_KHR_composition_layer_depth_SPEC_VERSION 6 -#define XR_KHR_COMPOSITION_LAYER_DEPTH_EXTENSION_NAME "XR_KHR_composition_layer_depth" -// XrCompositionLayerDepthInfoKHR extends XrCompositionLayerProjectionView -typedef struct XrCompositionLayerDepthInfoKHR { - XrStructureType type; - const void* XR_MAY_ALIAS next; - XrSwapchainSubImage subImage; - float minDepth; - float maxDepth; - float nearZ; - float farZ; -} XrCompositionLayerDepthInfoKHR; - - - -// XR_KHR_composition_layer_cylinder is a preprocessor guard. Do not pass it to API calls. -#define XR_KHR_composition_layer_cylinder 1 -#define XR_KHR_composition_layer_cylinder_SPEC_VERSION 4 -#define XR_KHR_COMPOSITION_LAYER_CYLINDER_EXTENSION_NAME "XR_KHR_composition_layer_cylinder" -typedef struct XrCompositionLayerCylinderKHR { - XrStructureType type; - const void* XR_MAY_ALIAS next; - XrCompositionLayerFlags layerFlags; - XrSpace space; - XrEyeVisibility eyeVisibility; - XrSwapchainSubImage subImage; - XrPosef pose; - float radius; - float centralAngle; - float aspectRatio; -} XrCompositionLayerCylinderKHR; - - - -// XR_KHR_composition_layer_equirect is a preprocessor guard. Do not pass it to API calls. -#define XR_KHR_composition_layer_equirect 1 -#define XR_KHR_composition_layer_equirect_SPEC_VERSION 3 -#define XR_KHR_COMPOSITION_LAYER_EQUIRECT_EXTENSION_NAME "XR_KHR_composition_layer_equirect" -typedef struct XrCompositionLayerEquirectKHR { - XrStructureType type; - const void* XR_MAY_ALIAS next; - XrCompositionLayerFlags layerFlags; - XrSpace space; - XrEyeVisibility eyeVisibility; - XrSwapchainSubImage subImage; - XrPosef pose; - float radius; - XrVector2f scale; - XrVector2f bias; -} XrCompositionLayerEquirectKHR; - - - -// XR_KHR_visibility_mask is a preprocessor guard. Do not pass it to API calls. -#define XR_KHR_visibility_mask 1 -#define XR_KHR_visibility_mask_SPEC_VERSION 2 -#define XR_KHR_VISIBILITY_MASK_EXTENSION_NAME "XR_KHR_visibility_mask" - -typedef enum XrVisibilityMaskTypeKHR { - XR_VISIBILITY_MASK_TYPE_HIDDEN_TRIANGLE_MESH_KHR = 1, - XR_VISIBILITY_MASK_TYPE_VISIBLE_TRIANGLE_MESH_KHR = 2, - XR_VISIBILITY_MASK_TYPE_LINE_LOOP_KHR = 3, - XR_VISIBILITY_MASK_TYPE_MAX_ENUM_KHR = 0x7FFFFFFF -} XrVisibilityMaskTypeKHR; -typedef struct XrVisibilityMaskKHR { - XrStructureType type; - void* XR_MAY_ALIAS next; - uint32_t vertexCapacityInput; - uint32_t vertexCountOutput; - XrVector2f* vertices; - uint32_t indexCapacityInput; - uint32_t indexCountOutput; - uint32_t* indices; -} XrVisibilityMaskKHR; - -typedef struct XrEventDataVisibilityMaskChangedKHR { - XrStructureType type; - const void* XR_MAY_ALIAS next; - XrSession session; - XrViewConfigurationType viewConfigurationType; - uint32_t viewIndex; -} XrEventDataVisibilityMaskChangedKHR; - -typedef XrResult (XRAPI_PTR *PFN_xrGetVisibilityMaskKHR)(XrSession session, XrViewConfigurationType viewConfigurationType, uint32_t viewIndex, XrVisibilityMaskTypeKHR visibilityMaskType, XrVisibilityMaskKHR* visibilityMask); - -#ifndef XR_NO_PROTOTYPES -#ifdef XR_EXTENSION_PROTOTYPES -XRAPI_ATTR XrResult XRAPI_CALL xrGetVisibilityMaskKHR( - XrSession session, - XrViewConfigurationType viewConfigurationType, - uint32_t viewIndex, - XrVisibilityMaskTypeKHR visibilityMaskType, - XrVisibilityMaskKHR* visibilityMask); -#endif /* XR_EXTENSION_PROTOTYPES */ -#endif /* !XR_NO_PROTOTYPES */ - - -// XR_KHR_composition_layer_color_scale_bias is a preprocessor guard. Do not pass it to API calls. -#define XR_KHR_composition_layer_color_scale_bias 1 -#define XR_KHR_composition_layer_color_scale_bias_SPEC_VERSION 5 -#define XR_KHR_COMPOSITION_LAYER_COLOR_SCALE_BIAS_EXTENSION_NAME "XR_KHR_composition_layer_color_scale_bias" -// XrCompositionLayerColorScaleBiasKHR extends XrCompositionLayerBaseHeader -typedef struct XrCompositionLayerColorScaleBiasKHR { - XrStructureType type; - const void* XR_MAY_ALIAS next; - XrColor4f colorScale; - XrColor4f colorBias; -} XrCompositionLayerColorScaleBiasKHR; - - - -// XR_KHR_loader_init is a preprocessor guard. Do not pass it to API calls. -#define XR_KHR_loader_init 1 -#define XR_KHR_loader_init_SPEC_VERSION 2 -#define XR_KHR_LOADER_INIT_EXTENSION_NAME "XR_KHR_loader_init" -typedef struct XR_MAY_ALIAS XrLoaderInitInfoBaseHeaderKHR { - XrStructureType type; - const void* XR_MAY_ALIAS next; -} XrLoaderInitInfoBaseHeaderKHR; - -typedef XrResult (XRAPI_PTR *PFN_xrInitializeLoaderKHR)(const XrLoaderInitInfoBaseHeaderKHR* loaderInitInfo); - -#ifndef XR_NO_PROTOTYPES -#ifdef XR_EXTENSION_PROTOTYPES -XRAPI_ATTR XrResult XRAPI_CALL xrInitializeLoaderKHR( - const XrLoaderInitInfoBaseHeaderKHR* loaderInitInfo); -#endif /* XR_EXTENSION_PROTOTYPES */ -#endif /* !XR_NO_PROTOTYPES */ - - -// XR_KHR_composition_layer_equirect2 is a preprocessor guard. Do not pass it to API calls. -#define XR_KHR_composition_layer_equirect2 1 -#define XR_KHR_composition_layer_equirect2_SPEC_VERSION 1 -#define XR_KHR_COMPOSITION_LAYER_EQUIRECT2_EXTENSION_NAME "XR_KHR_composition_layer_equirect2" -typedef struct XrCompositionLayerEquirect2KHR { - XrStructureType type; - const void* XR_MAY_ALIAS next; - XrCompositionLayerFlags layerFlags; - XrSpace space; - XrEyeVisibility eyeVisibility; - XrSwapchainSubImage subImage; - XrPosef pose; - float radius; - float centralHorizontalAngle; - float upperVerticalAngle; - float lowerVerticalAngle; -} XrCompositionLayerEquirect2KHR; - - - -// XR_KHR_binding_modification is a preprocessor guard. Do not pass it to API calls. -#define XR_KHR_binding_modification 1 -#define XR_KHR_binding_modification_SPEC_VERSION 1 -#define XR_KHR_BINDING_MODIFICATION_EXTENSION_NAME "XR_KHR_binding_modification" -typedef struct XR_MAY_ALIAS XrBindingModificationBaseHeaderKHR { - XrStructureType type; - const void* XR_MAY_ALIAS next; -} XrBindingModificationBaseHeaderKHR; - -// XrBindingModificationsKHR extends XrInteractionProfileSuggestedBinding -typedef struct XrBindingModificationsKHR { - XrStructureType type; - const void* XR_MAY_ALIAS next; - uint32_t bindingModificationCount; - const XrBindingModificationBaseHeaderKHR* const* bindingModifications; -} XrBindingModificationsKHR; - - - -// XR_KHR_swapchain_usage_input_attachment_bit is a preprocessor guard. Do not pass it to API calls. -#define XR_KHR_swapchain_usage_input_attachment_bit 1 -#define XR_KHR_swapchain_usage_input_attachment_bit_SPEC_VERSION 3 -#define XR_KHR_SWAPCHAIN_USAGE_INPUT_ATTACHMENT_BIT_EXTENSION_NAME "XR_KHR_swapchain_usage_input_attachment_bit" - - -// XR_KHR_locate_spaces is a preprocessor guard. Do not pass it to API calls. -#define XR_KHR_locate_spaces 1 -#define XR_KHR_locate_spaces_SPEC_VERSION 1 -#define XR_KHR_LOCATE_SPACES_EXTENSION_NAME "XR_KHR_locate_spaces" -typedef XrSpacesLocateInfo XrSpacesLocateInfoKHR; - -typedef XrSpaceLocationData XrSpaceLocationDataKHR; - -typedef XrSpaceLocations XrSpaceLocationsKHR; - -typedef XrSpaceVelocityData XrSpaceVelocityDataKHR; - -typedef XrSpaceVelocities XrSpaceVelocitiesKHR; - -typedef XrResult (XRAPI_PTR *PFN_xrLocateSpacesKHR)(XrSession session, const XrSpacesLocateInfo* locateInfo, XrSpaceLocations* spaceLocations); - -#ifndef XR_NO_PROTOTYPES -#ifdef XR_EXTENSION_PROTOTYPES -XRAPI_ATTR XrResult XRAPI_CALL xrLocateSpacesKHR( - XrSession session, - const XrSpacesLocateInfo* locateInfo, - XrSpaceLocations* spaceLocations); -#endif /* XR_EXTENSION_PROTOTYPES */ -#endif /* !XR_NO_PROTOTYPES */ - - -// XR_KHR_maintenance1 is a preprocessor guard. Do not pass it to API calls. -#define XR_KHR_maintenance1 1 -#define XR_KHR_maintenance1_SPEC_VERSION 1 -#define XR_KHR_MAINTENANCE1_EXTENSION_NAME "XR_KHR_maintenance1" -typedef XrColor3f XrColor3fKHR; - -typedef XrExtent3Df XrExtent3DfKHR; - -typedef XrSpheref XrSpherefKHR; - -typedef XrBoxf XrBoxfKHR; - -typedef XrFrustumf XrFrustumfKHR; - - - -// XR_EXT_performance_settings is a preprocessor guard. Do not pass it to API calls. -#define XR_EXT_performance_settings 1 -#define XR_EXT_performance_settings_SPEC_VERSION 4 -#define XR_EXT_PERFORMANCE_SETTINGS_EXTENSION_NAME "XR_EXT_performance_settings" - -typedef enum XrPerfSettingsDomainEXT { - XR_PERF_SETTINGS_DOMAIN_CPU_EXT = 1, - XR_PERF_SETTINGS_DOMAIN_GPU_EXT = 2, - XR_PERF_SETTINGS_DOMAIN_MAX_ENUM_EXT = 0x7FFFFFFF -} XrPerfSettingsDomainEXT; - -typedef enum XrPerfSettingsSubDomainEXT { - XR_PERF_SETTINGS_SUB_DOMAIN_COMPOSITING_EXT = 1, - XR_PERF_SETTINGS_SUB_DOMAIN_RENDERING_EXT = 2, - XR_PERF_SETTINGS_SUB_DOMAIN_THERMAL_EXT = 3, - XR_PERF_SETTINGS_SUB_DOMAIN_MAX_ENUM_EXT = 0x7FFFFFFF -} XrPerfSettingsSubDomainEXT; - -typedef enum XrPerfSettingsLevelEXT { - XR_PERF_SETTINGS_LEVEL_POWER_SAVINGS_EXT = 0, - XR_PERF_SETTINGS_LEVEL_SUSTAINED_LOW_EXT = 25, - XR_PERF_SETTINGS_LEVEL_SUSTAINED_HIGH_EXT = 50, - XR_PERF_SETTINGS_LEVEL_BOOST_EXT = 75, - XR_PERF_SETTINGS_LEVEL_MAX_ENUM_EXT = 0x7FFFFFFF -} XrPerfSettingsLevelEXT; - -typedef enum XrPerfSettingsNotificationLevelEXT { - XR_PERF_SETTINGS_NOTIF_LEVEL_NORMAL_EXT = 0, - XR_PERF_SETTINGS_NOTIF_LEVEL_WARNING_EXT = 25, - XR_PERF_SETTINGS_NOTIF_LEVEL_IMPAIRED_EXT = 75, - XR_PERF_SETTINGS_NOTIFICATION_LEVEL_MAX_ENUM_EXT = 0x7FFFFFFF -} XrPerfSettingsNotificationLevelEXT; -typedef struct XrEventDataPerfSettingsEXT { - XrStructureType type; - const void* XR_MAY_ALIAS next; - XrPerfSettingsDomainEXT domain; - XrPerfSettingsSubDomainEXT subDomain; - XrPerfSettingsNotificationLevelEXT fromLevel; - XrPerfSettingsNotificationLevelEXT toLevel; -} XrEventDataPerfSettingsEXT; - -typedef XrResult (XRAPI_PTR *PFN_xrPerfSettingsSetPerformanceLevelEXT)(XrSession session, XrPerfSettingsDomainEXT domain, XrPerfSettingsLevelEXT level); - -#ifndef XR_NO_PROTOTYPES -#ifdef XR_EXTENSION_PROTOTYPES -XRAPI_ATTR XrResult XRAPI_CALL xrPerfSettingsSetPerformanceLevelEXT( - XrSession session, - XrPerfSettingsDomainEXT domain, - XrPerfSettingsLevelEXT level); -#endif /* XR_EXTENSION_PROTOTYPES */ -#endif /* !XR_NO_PROTOTYPES */ - - -// XR_EXT_thermal_query is a preprocessor guard. Do not pass it to API calls. -#define XR_EXT_thermal_query 1 -#define XR_EXT_thermal_query_SPEC_VERSION 2 -#define XR_EXT_THERMAL_QUERY_EXTENSION_NAME "XR_EXT_thermal_query" -typedef XrResult (XRAPI_PTR *PFN_xrThermalGetTemperatureTrendEXT)(XrSession session, XrPerfSettingsDomainEXT domain, XrPerfSettingsNotificationLevelEXT* notificationLevel, float* tempHeadroom, float* tempSlope); - -#ifndef XR_NO_PROTOTYPES -#ifdef XR_EXTENSION_PROTOTYPES -XRAPI_ATTR XrResult XRAPI_CALL xrThermalGetTemperatureTrendEXT( - XrSession session, - XrPerfSettingsDomainEXT domain, - XrPerfSettingsNotificationLevelEXT* notificationLevel, - float* tempHeadroom, - float* tempSlope); -#endif /* XR_EXTENSION_PROTOTYPES */ -#endif /* !XR_NO_PROTOTYPES */ - - -// XR_EXT_debug_utils is a preprocessor guard. Do not pass it to API calls. -#define XR_EXT_debug_utils 1 -XR_DEFINE_HANDLE(XrDebugUtilsMessengerEXT) -#define XR_EXT_debug_utils_SPEC_VERSION 5 -#define XR_EXT_DEBUG_UTILS_EXTENSION_NAME "XR_EXT_debug_utils" -typedef XrFlags64 XrDebugUtilsMessageSeverityFlagsEXT; - -// Flag bits for XrDebugUtilsMessageSeverityFlagsEXT -static const XrDebugUtilsMessageSeverityFlagsEXT XR_DEBUG_UTILS_MESSAGE_SEVERITY_VERBOSE_BIT_EXT = 0x00000001; -static const XrDebugUtilsMessageSeverityFlagsEXT XR_DEBUG_UTILS_MESSAGE_SEVERITY_INFO_BIT_EXT = 0x00000010; -static const XrDebugUtilsMessageSeverityFlagsEXT XR_DEBUG_UTILS_MESSAGE_SEVERITY_WARNING_BIT_EXT = 0x00000100; -static const XrDebugUtilsMessageSeverityFlagsEXT XR_DEBUG_UTILS_MESSAGE_SEVERITY_ERROR_BIT_EXT = 0x00001000; - -typedef XrFlags64 XrDebugUtilsMessageTypeFlagsEXT; - -// Flag bits for XrDebugUtilsMessageTypeFlagsEXT -static const XrDebugUtilsMessageTypeFlagsEXT XR_DEBUG_UTILS_MESSAGE_TYPE_GENERAL_BIT_EXT = 0x00000001; -static const XrDebugUtilsMessageTypeFlagsEXT XR_DEBUG_UTILS_MESSAGE_TYPE_VALIDATION_BIT_EXT = 0x00000002; -static const XrDebugUtilsMessageTypeFlagsEXT XR_DEBUG_UTILS_MESSAGE_TYPE_PERFORMANCE_BIT_EXT = 0x00000004; -static const XrDebugUtilsMessageTypeFlagsEXT XR_DEBUG_UTILS_MESSAGE_TYPE_CONFORMANCE_BIT_EXT = 0x00000008; - -typedef struct XrDebugUtilsObjectNameInfoEXT { - XrStructureType type; - const void* XR_MAY_ALIAS next; - XrObjectType objectType; - uint64_t objectHandle; - const char* objectName; -} XrDebugUtilsObjectNameInfoEXT; - -typedef struct XrDebugUtilsLabelEXT { - XrStructureType type; - const void* XR_MAY_ALIAS next; - const char* labelName; -} XrDebugUtilsLabelEXT; - -typedef struct XrDebugUtilsMessengerCallbackDataEXT { - XrStructureType type; - const void* XR_MAY_ALIAS next; - const char* messageId; - const char* functionName; - const char* message; - uint32_t objectCount; - XrDebugUtilsObjectNameInfoEXT* objects; - uint32_t sessionLabelCount; - XrDebugUtilsLabelEXT* sessionLabels; -} XrDebugUtilsMessengerCallbackDataEXT; - -typedef XrBool32 (XRAPI_PTR *PFN_xrDebugUtilsMessengerCallbackEXT)( - XrDebugUtilsMessageSeverityFlagsEXT messageSeverity, - XrDebugUtilsMessageTypeFlagsEXT messageTypes, - const XrDebugUtilsMessengerCallbackDataEXT* callbackData, - void* userData); - - -// XrDebugUtilsMessengerCreateInfoEXT extends XrInstanceCreateInfo -typedef struct XrDebugUtilsMessengerCreateInfoEXT { - XrStructureType type; - const void* XR_MAY_ALIAS next; - XrDebugUtilsMessageSeverityFlagsEXT messageSeverities; - XrDebugUtilsMessageTypeFlagsEXT messageTypes; - PFN_xrDebugUtilsMessengerCallbackEXT userCallback; - void* XR_MAY_ALIAS userData; -} XrDebugUtilsMessengerCreateInfoEXT; - -typedef XrResult (XRAPI_PTR *PFN_xrSetDebugUtilsObjectNameEXT)(XrInstance instance, const XrDebugUtilsObjectNameInfoEXT* nameInfo); -typedef XrResult (XRAPI_PTR *PFN_xrCreateDebugUtilsMessengerEXT)(XrInstance instance, const XrDebugUtilsMessengerCreateInfoEXT* createInfo, XrDebugUtilsMessengerEXT* messenger); -typedef XrResult (XRAPI_PTR *PFN_xrDestroyDebugUtilsMessengerEXT)(XrDebugUtilsMessengerEXT messenger); -typedef XrResult (XRAPI_PTR *PFN_xrSubmitDebugUtilsMessageEXT)(XrInstance instance, XrDebugUtilsMessageSeverityFlagsEXT messageSeverity, XrDebugUtilsMessageTypeFlagsEXT messageTypes, const XrDebugUtilsMessengerCallbackDataEXT* callbackData); -typedef XrResult (XRAPI_PTR *PFN_xrSessionBeginDebugUtilsLabelRegionEXT)(XrSession session, const XrDebugUtilsLabelEXT* labelInfo); -typedef XrResult (XRAPI_PTR *PFN_xrSessionEndDebugUtilsLabelRegionEXT)(XrSession session); -typedef XrResult (XRAPI_PTR *PFN_xrSessionInsertDebugUtilsLabelEXT)(XrSession session, const XrDebugUtilsLabelEXT* labelInfo); - -#ifndef XR_NO_PROTOTYPES -#ifdef XR_EXTENSION_PROTOTYPES -XRAPI_ATTR XrResult XRAPI_CALL xrSetDebugUtilsObjectNameEXT( - XrInstance instance, - const XrDebugUtilsObjectNameInfoEXT* nameInfo); - -XRAPI_ATTR XrResult XRAPI_CALL xrCreateDebugUtilsMessengerEXT( - XrInstance instance, - const XrDebugUtilsMessengerCreateInfoEXT* createInfo, - XrDebugUtilsMessengerEXT* messenger); - -XRAPI_ATTR XrResult XRAPI_CALL xrDestroyDebugUtilsMessengerEXT( - XrDebugUtilsMessengerEXT messenger); - -XRAPI_ATTR XrResult XRAPI_CALL xrSubmitDebugUtilsMessageEXT( - XrInstance instance, - XrDebugUtilsMessageSeverityFlagsEXT messageSeverity, - XrDebugUtilsMessageTypeFlagsEXT messageTypes, - const XrDebugUtilsMessengerCallbackDataEXT* callbackData); - -XRAPI_ATTR XrResult XRAPI_CALL xrSessionBeginDebugUtilsLabelRegionEXT( - XrSession session, - const XrDebugUtilsLabelEXT* labelInfo); - -XRAPI_ATTR XrResult XRAPI_CALL xrSessionEndDebugUtilsLabelRegionEXT( - XrSession session); - -XRAPI_ATTR XrResult XRAPI_CALL xrSessionInsertDebugUtilsLabelEXT( - XrSession session, - const XrDebugUtilsLabelEXT* labelInfo); -#endif /* XR_EXTENSION_PROTOTYPES */ -#endif /* !XR_NO_PROTOTYPES */ - - -// XR_EXT_eye_gaze_interaction is a preprocessor guard. Do not pass it to API calls. -#define XR_EXT_eye_gaze_interaction 1 -#define XR_EXT_eye_gaze_interaction_SPEC_VERSION 2 -#define XR_EXT_EYE_GAZE_INTERACTION_EXTENSION_NAME "XR_EXT_eye_gaze_interaction" -// XrSystemEyeGazeInteractionPropertiesEXT extends XrSystemProperties -typedef struct XrSystemEyeGazeInteractionPropertiesEXT { - XrStructureType type; - void* XR_MAY_ALIAS next; - XrBool32 supportsEyeGazeInteraction; -} XrSystemEyeGazeInteractionPropertiesEXT; - -// XrEyeGazeSampleTimeEXT extends XrSpaceLocation -typedef struct XrEyeGazeSampleTimeEXT { - XrStructureType type; - void* XR_MAY_ALIAS next; - XrTime time; -} XrEyeGazeSampleTimeEXT; - - - -// XR_EXTX_overlay is a preprocessor guard. Do not pass it to API calls. -#define XR_EXTX_overlay 1 -#define XR_EXTX_overlay_SPEC_VERSION 5 -#define XR_EXTX_OVERLAY_EXTENSION_NAME "XR_EXTX_overlay" -typedef XrFlags64 XrOverlaySessionCreateFlagsEXTX; - -// Flag bits for XrOverlaySessionCreateFlagsEXTX - -typedef XrFlags64 XrOverlayMainSessionFlagsEXTX; - -// Flag bits for XrOverlayMainSessionFlagsEXTX -static const XrOverlayMainSessionFlagsEXTX XR_OVERLAY_MAIN_SESSION_ENABLED_COMPOSITION_LAYER_INFO_DEPTH_BIT_EXTX = 0x00000001; - -// XrSessionCreateInfoOverlayEXTX extends XrSessionCreateInfo -typedef struct XrSessionCreateInfoOverlayEXTX { - XrStructureType type; - const void* XR_MAY_ALIAS next; - XrOverlaySessionCreateFlagsEXTX createFlags; - uint32_t sessionLayersPlacement; -} XrSessionCreateInfoOverlayEXTX; - -typedef struct XrEventDataMainSessionVisibilityChangedEXTX { - XrStructureType type; - const void* XR_MAY_ALIAS next; - XrBool32 visible; - XrOverlayMainSessionFlagsEXTX flags; -} XrEventDataMainSessionVisibilityChangedEXTX; - - - -// XR_VARJO_quad_views is a preprocessor guard. Do not pass it to API calls. -#define XR_VARJO_quad_views 1 -#define XR_VARJO_quad_views_SPEC_VERSION 1 -#define XR_VARJO_QUAD_VIEWS_EXTENSION_NAME "XR_VARJO_quad_views" - - -// XR_MSFT_unbounded_reference_space is a preprocessor guard. Do not pass it to API calls. -#define XR_MSFT_unbounded_reference_space 1 -#define XR_MSFT_unbounded_reference_space_SPEC_VERSION 1 -#define XR_MSFT_UNBOUNDED_REFERENCE_SPACE_EXTENSION_NAME "XR_MSFT_unbounded_reference_space" - - -// XR_MSFT_spatial_anchor is a preprocessor guard. Do not pass it to API calls. -#define XR_MSFT_spatial_anchor 1 -XR_DEFINE_HANDLE(XrSpatialAnchorMSFT) -#define XR_MSFT_spatial_anchor_SPEC_VERSION 2 -#define XR_MSFT_SPATIAL_ANCHOR_EXTENSION_NAME "XR_MSFT_spatial_anchor" -typedef struct XrSpatialAnchorCreateInfoMSFT { - XrStructureType type; - const void* XR_MAY_ALIAS next; - XrSpace space; - XrPosef pose; - XrTime time; -} XrSpatialAnchorCreateInfoMSFT; - -typedef struct XrSpatialAnchorSpaceCreateInfoMSFT { - XrStructureType type; - const void* XR_MAY_ALIAS next; - XrSpatialAnchorMSFT anchor; - XrPosef poseInAnchorSpace; -} XrSpatialAnchorSpaceCreateInfoMSFT; - -typedef XrResult (XRAPI_PTR *PFN_xrCreateSpatialAnchorMSFT)(XrSession session, const XrSpatialAnchorCreateInfoMSFT* createInfo, XrSpatialAnchorMSFT* anchor); -typedef XrResult (XRAPI_PTR *PFN_xrCreateSpatialAnchorSpaceMSFT)(XrSession session, const XrSpatialAnchorSpaceCreateInfoMSFT* createInfo, XrSpace* space); -typedef XrResult (XRAPI_PTR *PFN_xrDestroySpatialAnchorMSFT)(XrSpatialAnchorMSFT anchor); - -#ifndef XR_NO_PROTOTYPES -#ifdef XR_EXTENSION_PROTOTYPES -XRAPI_ATTR XrResult XRAPI_CALL xrCreateSpatialAnchorMSFT( - XrSession session, - const XrSpatialAnchorCreateInfoMSFT* createInfo, - XrSpatialAnchorMSFT* anchor); - -XRAPI_ATTR XrResult XRAPI_CALL xrCreateSpatialAnchorSpaceMSFT( - XrSession session, - const XrSpatialAnchorSpaceCreateInfoMSFT* createInfo, - XrSpace* space); - -XRAPI_ATTR XrResult XRAPI_CALL xrDestroySpatialAnchorMSFT( - XrSpatialAnchorMSFT anchor); -#endif /* XR_EXTENSION_PROTOTYPES */ -#endif /* !XR_NO_PROTOTYPES */ - - -// XR_FB_composition_layer_image_layout is a preprocessor guard. Do not pass it to API calls. -#define XR_FB_composition_layer_image_layout 1 -#define XR_FB_composition_layer_image_layout_SPEC_VERSION 1 -#define XR_FB_COMPOSITION_LAYER_IMAGE_LAYOUT_EXTENSION_NAME "XR_FB_composition_layer_image_layout" -typedef XrFlags64 XrCompositionLayerImageLayoutFlagsFB; - -// Flag bits for XrCompositionLayerImageLayoutFlagsFB -static const XrCompositionLayerImageLayoutFlagsFB XR_COMPOSITION_LAYER_IMAGE_LAYOUT_VERTICAL_FLIP_BIT_FB = 0x00000001; - -// XrCompositionLayerImageLayoutFB extends XrCompositionLayerBaseHeader -typedef struct XrCompositionLayerImageLayoutFB { - XrStructureType type; - void* XR_MAY_ALIAS next; - XrCompositionLayerImageLayoutFlagsFB flags; -} XrCompositionLayerImageLayoutFB; - - - -// XR_FB_composition_layer_alpha_blend is a preprocessor guard. Do not pass it to API calls. -#define XR_FB_composition_layer_alpha_blend 1 -#define XR_FB_composition_layer_alpha_blend_SPEC_VERSION 3 -#define XR_FB_COMPOSITION_LAYER_ALPHA_BLEND_EXTENSION_NAME "XR_FB_composition_layer_alpha_blend" - -typedef enum XrBlendFactorFB { - XR_BLEND_FACTOR_ZERO_FB = 0, - XR_BLEND_FACTOR_ONE_FB = 1, - XR_BLEND_FACTOR_SRC_ALPHA_FB = 2, - XR_BLEND_FACTOR_ONE_MINUS_SRC_ALPHA_FB = 3, - XR_BLEND_FACTOR_DST_ALPHA_FB = 4, - XR_BLEND_FACTOR_ONE_MINUS_DST_ALPHA_FB = 5, - XR_BLEND_FACTOR_MAX_ENUM_FB = 0x7FFFFFFF -} XrBlendFactorFB; -// XrCompositionLayerAlphaBlendFB extends XrCompositionLayerBaseHeader -typedef struct XrCompositionLayerAlphaBlendFB { - XrStructureType type; - void* XR_MAY_ALIAS next; - XrBlendFactorFB srcFactorColor; - XrBlendFactorFB dstFactorColor; - XrBlendFactorFB srcFactorAlpha; - XrBlendFactorFB dstFactorAlpha; -} XrCompositionLayerAlphaBlendFB; - - - -// XR_MND_headless is a preprocessor guard. Do not pass it to API calls. -#define XR_MND_headless 1 -#define XR_MND_headless_SPEC_VERSION 2 -#define XR_MND_HEADLESS_EXTENSION_NAME "XR_MND_headless" - - -// XR_OCULUS_android_session_state_enable is a preprocessor guard. Do not pass it to API calls. -#define XR_OCULUS_android_session_state_enable 1 -#define XR_OCULUS_android_session_state_enable_SPEC_VERSION 1 -#define XR_OCULUS_ANDROID_SESSION_STATE_ENABLE_EXTENSION_NAME "XR_OCULUS_android_session_state_enable" - - -// XR_EXT_view_configuration_depth_range is a preprocessor guard. Do not pass it to API calls. -#define XR_EXT_view_configuration_depth_range 1 -#define XR_EXT_view_configuration_depth_range_SPEC_VERSION 1 -#define XR_EXT_VIEW_CONFIGURATION_DEPTH_RANGE_EXTENSION_NAME "XR_EXT_view_configuration_depth_range" -// XrViewConfigurationDepthRangeEXT extends XrViewConfigurationView -typedef struct XrViewConfigurationDepthRangeEXT { - XrStructureType type; - void* XR_MAY_ALIAS next; - float recommendedNearZ; - float minNearZ; - float recommendedFarZ; - float maxFarZ; -} XrViewConfigurationDepthRangeEXT; - - - -// XR_EXT_conformance_automation is a preprocessor guard. Do not pass it to API calls. -#define XR_EXT_conformance_automation 1 -#define XR_EXT_conformance_automation_SPEC_VERSION 3 -#define XR_EXT_CONFORMANCE_AUTOMATION_EXTENSION_NAME "XR_EXT_conformance_automation" -typedef XrResult (XRAPI_PTR *PFN_xrSetInputDeviceActiveEXT)(XrSession session, XrPath interactionProfile, XrPath topLevelPath, XrBool32 isActive); -typedef XrResult (XRAPI_PTR *PFN_xrSetInputDeviceStateBoolEXT)(XrSession session, XrPath topLevelPath, XrPath inputSourcePath, XrBool32 state); -typedef XrResult (XRAPI_PTR *PFN_xrSetInputDeviceStateFloatEXT)(XrSession session, XrPath topLevelPath, XrPath inputSourcePath, float state); -typedef XrResult (XRAPI_PTR *PFN_xrSetInputDeviceStateVector2fEXT)(XrSession session, XrPath topLevelPath, XrPath inputSourcePath, XrVector2f state); -typedef XrResult (XRAPI_PTR *PFN_xrSetInputDeviceLocationEXT)(XrSession session, XrPath topLevelPath, XrPath inputSourcePath, XrSpace space, XrPosef pose); - -#ifndef XR_NO_PROTOTYPES -#ifdef XR_EXTENSION_PROTOTYPES -XRAPI_ATTR XrResult XRAPI_CALL xrSetInputDeviceActiveEXT( - XrSession session, - XrPath interactionProfile, - XrPath topLevelPath, - XrBool32 isActive); - -XRAPI_ATTR XrResult XRAPI_CALL xrSetInputDeviceStateBoolEXT( - XrSession session, - XrPath topLevelPath, - XrPath inputSourcePath, - XrBool32 state); - -XRAPI_ATTR XrResult XRAPI_CALL xrSetInputDeviceStateFloatEXT( - XrSession session, - XrPath topLevelPath, - XrPath inputSourcePath, - float state); - -XRAPI_ATTR XrResult XRAPI_CALL xrSetInputDeviceStateVector2fEXT( - XrSession session, - XrPath topLevelPath, - XrPath inputSourcePath, - XrVector2f state); - -XRAPI_ATTR XrResult XRAPI_CALL xrSetInputDeviceLocationEXT( - XrSession session, - XrPath topLevelPath, - XrPath inputSourcePath, - XrSpace space, - XrPosef pose); -#endif /* XR_EXTENSION_PROTOTYPES */ -#endif /* !XR_NO_PROTOTYPES */ - - -// XR_MSFT_spatial_graph_bridge is a preprocessor guard. Do not pass it to API calls. -#define XR_MSFT_spatial_graph_bridge 1 -XR_DEFINE_HANDLE(XrSpatialGraphNodeBindingMSFT) -#define XR_GUID_SIZE_MSFT 16 -#define XR_MSFT_spatial_graph_bridge_SPEC_VERSION 2 -#define XR_MSFT_SPATIAL_GRAPH_BRIDGE_EXTENSION_NAME "XR_MSFT_spatial_graph_bridge" - -typedef enum XrSpatialGraphNodeTypeMSFT { - XR_SPATIAL_GRAPH_NODE_TYPE_STATIC_MSFT = 1, - XR_SPATIAL_GRAPH_NODE_TYPE_DYNAMIC_MSFT = 2, - XR_SPATIAL_GRAPH_NODE_TYPE_MAX_ENUM_MSFT = 0x7FFFFFFF -} XrSpatialGraphNodeTypeMSFT; -typedef struct XrSpatialGraphNodeSpaceCreateInfoMSFT { - XrStructureType type; - const void* XR_MAY_ALIAS next; - XrSpatialGraphNodeTypeMSFT nodeType; - uint8_t nodeId[XR_GUID_SIZE_MSFT]; - XrPosef pose; -} XrSpatialGraphNodeSpaceCreateInfoMSFT; - -typedef struct XrSpatialGraphStaticNodeBindingCreateInfoMSFT { - XrStructureType type; - const void* XR_MAY_ALIAS next; - XrSpace space; - XrPosef poseInSpace; - XrTime time; -} XrSpatialGraphStaticNodeBindingCreateInfoMSFT; - -typedef struct XrSpatialGraphNodeBindingPropertiesGetInfoMSFT { - XrStructureType type; - const void* XR_MAY_ALIAS next; -} XrSpatialGraphNodeBindingPropertiesGetInfoMSFT; - -typedef struct XrSpatialGraphNodeBindingPropertiesMSFT { - XrStructureType type; - void* XR_MAY_ALIAS next; - uint8_t nodeId[XR_GUID_SIZE_MSFT]; - XrPosef poseInNodeSpace; -} XrSpatialGraphNodeBindingPropertiesMSFT; - -typedef XrResult (XRAPI_PTR *PFN_xrCreateSpatialGraphNodeSpaceMSFT)(XrSession session, const XrSpatialGraphNodeSpaceCreateInfoMSFT* createInfo, XrSpace* space); -typedef XrResult (XRAPI_PTR *PFN_xrTryCreateSpatialGraphStaticNodeBindingMSFT)(XrSession session, const XrSpatialGraphStaticNodeBindingCreateInfoMSFT* createInfo, XrSpatialGraphNodeBindingMSFT* nodeBinding); -typedef XrResult (XRAPI_PTR *PFN_xrDestroySpatialGraphNodeBindingMSFT)(XrSpatialGraphNodeBindingMSFT nodeBinding); -typedef XrResult (XRAPI_PTR *PFN_xrGetSpatialGraphNodeBindingPropertiesMSFT)(XrSpatialGraphNodeBindingMSFT nodeBinding, const XrSpatialGraphNodeBindingPropertiesGetInfoMSFT* getInfo, XrSpatialGraphNodeBindingPropertiesMSFT* properties); - -#ifndef XR_NO_PROTOTYPES -#ifdef XR_EXTENSION_PROTOTYPES -XRAPI_ATTR XrResult XRAPI_CALL xrCreateSpatialGraphNodeSpaceMSFT( - XrSession session, - const XrSpatialGraphNodeSpaceCreateInfoMSFT* createInfo, - XrSpace* space); - -XRAPI_ATTR XrResult XRAPI_CALL xrTryCreateSpatialGraphStaticNodeBindingMSFT( - XrSession session, - const XrSpatialGraphStaticNodeBindingCreateInfoMSFT* createInfo, - XrSpatialGraphNodeBindingMSFT* nodeBinding); - -XRAPI_ATTR XrResult XRAPI_CALL xrDestroySpatialGraphNodeBindingMSFT( - XrSpatialGraphNodeBindingMSFT nodeBinding); - -XRAPI_ATTR XrResult XRAPI_CALL xrGetSpatialGraphNodeBindingPropertiesMSFT( - XrSpatialGraphNodeBindingMSFT nodeBinding, - const XrSpatialGraphNodeBindingPropertiesGetInfoMSFT* getInfo, - XrSpatialGraphNodeBindingPropertiesMSFT* properties); -#endif /* XR_EXTENSION_PROTOTYPES */ -#endif /* !XR_NO_PROTOTYPES */ - - -// XR_MSFT_hand_interaction is a preprocessor guard. Do not pass it to API calls. -#define XR_MSFT_hand_interaction 1 -#define XR_MSFT_hand_interaction_SPEC_VERSION 1 -#define XR_MSFT_HAND_INTERACTION_EXTENSION_NAME "XR_MSFT_hand_interaction" - - -// XR_EXT_hand_tracking is a preprocessor guard. Do not pass it to API calls. -#define XR_EXT_hand_tracking 1 - -#define XR_HAND_JOINT_COUNT_EXT 26 - -XR_DEFINE_HANDLE(XrHandTrackerEXT) -#define XR_EXT_hand_tracking_SPEC_VERSION 4 -#define XR_EXT_HAND_TRACKING_EXTENSION_NAME "XR_EXT_hand_tracking" - -typedef enum XrHandEXT { - XR_HAND_LEFT_EXT = 1, - XR_HAND_RIGHT_EXT = 2, - XR_HAND_MAX_ENUM_EXT = 0x7FFFFFFF -} XrHandEXT; - -typedef enum XrHandJointEXT { - XR_HAND_JOINT_PALM_EXT = 0, - XR_HAND_JOINT_WRIST_EXT = 1, - XR_HAND_JOINT_THUMB_METACARPAL_EXT = 2, - XR_HAND_JOINT_THUMB_PROXIMAL_EXT = 3, - XR_HAND_JOINT_THUMB_DISTAL_EXT = 4, - XR_HAND_JOINT_THUMB_TIP_EXT = 5, - XR_HAND_JOINT_INDEX_METACARPAL_EXT = 6, - XR_HAND_JOINT_INDEX_PROXIMAL_EXT = 7, - XR_HAND_JOINT_INDEX_INTERMEDIATE_EXT = 8, - XR_HAND_JOINT_INDEX_DISTAL_EXT = 9, - XR_HAND_JOINT_INDEX_TIP_EXT = 10, - XR_HAND_JOINT_MIDDLE_METACARPAL_EXT = 11, - XR_HAND_JOINT_MIDDLE_PROXIMAL_EXT = 12, - XR_HAND_JOINT_MIDDLE_INTERMEDIATE_EXT = 13, - XR_HAND_JOINT_MIDDLE_DISTAL_EXT = 14, - XR_HAND_JOINT_MIDDLE_TIP_EXT = 15, - XR_HAND_JOINT_RING_METACARPAL_EXT = 16, - XR_HAND_JOINT_RING_PROXIMAL_EXT = 17, - XR_HAND_JOINT_RING_INTERMEDIATE_EXT = 18, - XR_HAND_JOINT_RING_DISTAL_EXT = 19, - XR_HAND_JOINT_RING_TIP_EXT = 20, - XR_HAND_JOINT_LITTLE_METACARPAL_EXT = 21, - XR_HAND_JOINT_LITTLE_PROXIMAL_EXT = 22, - XR_HAND_JOINT_LITTLE_INTERMEDIATE_EXT = 23, - XR_HAND_JOINT_LITTLE_DISTAL_EXT = 24, - XR_HAND_JOINT_LITTLE_TIP_EXT = 25, - XR_HAND_JOINT_MAX_ENUM_EXT = 0x7FFFFFFF -} XrHandJointEXT; - -typedef enum XrHandJointSetEXT { - XR_HAND_JOINT_SET_DEFAULT_EXT = 0, - XR_HAND_JOINT_SET_HAND_WITH_FOREARM_ULTRALEAP = 1000149000, - XR_HAND_JOINT_SET_MAX_ENUM_EXT = 0x7FFFFFFF -} XrHandJointSetEXT; -// XrSystemHandTrackingPropertiesEXT extends XrSystemProperties -typedef struct XrSystemHandTrackingPropertiesEXT { - XrStructureType type; - void* XR_MAY_ALIAS next; - XrBool32 supportsHandTracking; -} XrSystemHandTrackingPropertiesEXT; - -typedef struct XrHandTrackerCreateInfoEXT { - XrStructureType type; - const void* XR_MAY_ALIAS next; - XrHandEXT hand; - XrHandJointSetEXT handJointSet; -} XrHandTrackerCreateInfoEXT; - -typedef struct XrHandJointsLocateInfoEXT { - XrStructureType type; - const void* XR_MAY_ALIAS next; - XrSpace baseSpace; - XrTime time; -} XrHandJointsLocateInfoEXT; - -typedef struct XrHandJointLocationEXT { - XrSpaceLocationFlags locationFlags; - XrPosef pose; - float radius; -} XrHandJointLocationEXT; - -typedef struct XrHandJointVelocityEXT { - XrSpaceVelocityFlags velocityFlags; - XrVector3f linearVelocity; - XrVector3f angularVelocity; -} XrHandJointVelocityEXT; - -typedef struct XrHandJointLocationsEXT { - XrStructureType type; - void* XR_MAY_ALIAS next; - XrBool32 isActive; - uint32_t jointCount; - XrHandJointLocationEXT* jointLocations; -} XrHandJointLocationsEXT; - -// XrHandJointVelocitiesEXT extends XrHandJointLocationsEXT -typedef struct XrHandJointVelocitiesEXT { - XrStructureType type; - void* XR_MAY_ALIAS next; - uint32_t jointCount; - XrHandJointVelocityEXT* jointVelocities; -} XrHandJointVelocitiesEXT; - -typedef XrResult (XRAPI_PTR *PFN_xrCreateHandTrackerEXT)(XrSession session, const XrHandTrackerCreateInfoEXT* createInfo, XrHandTrackerEXT* handTracker); -typedef XrResult (XRAPI_PTR *PFN_xrDestroyHandTrackerEXT)(XrHandTrackerEXT handTracker); -typedef XrResult (XRAPI_PTR *PFN_xrLocateHandJointsEXT)(XrHandTrackerEXT handTracker, const XrHandJointsLocateInfoEXT* locateInfo, XrHandJointLocationsEXT* locations); - -#ifndef XR_NO_PROTOTYPES -#ifdef XR_EXTENSION_PROTOTYPES -XRAPI_ATTR XrResult XRAPI_CALL xrCreateHandTrackerEXT( - XrSession session, - const XrHandTrackerCreateInfoEXT* createInfo, - XrHandTrackerEXT* handTracker); - -XRAPI_ATTR XrResult XRAPI_CALL xrDestroyHandTrackerEXT( - XrHandTrackerEXT handTracker); - -XRAPI_ATTR XrResult XRAPI_CALL xrLocateHandJointsEXT( - XrHandTrackerEXT handTracker, - const XrHandJointsLocateInfoEXT* locateInfo, - XrHandJointLocationsEXT* locations); -#endif /* XR_EXTENSION_PROTOTYPES */ -#endif /* !XR_NO_PROTOTYPES */ - - -// XR_MSFT_hand_tracking_mesh is a preprocessor guard. Do not pass it to API calls. -#define XR_MSFT_hand_tracking_mesh 1 -#define XR_MSFT_hand_tracking_mesh_SPEC_VERSION 4 -#define XR_MSFT_HAND_TRACKING_MESH_EXTENSION_NAME "XR_MSFT_hand_tracking_mesh" - -typedef enum XrHandPoseTypeMSFT { - XR_HAND_POSE_TYPE_TRACKED_MSFT = 0, - XR_HAND_POSE_TYPE_REFERENCE_OPEN_PALM_MSFT = 1, - XR_HAND_POSE_TYPE_MAX_ENUM_MSFT = 0x7FFFFFFF -} XrHandPoseTypeMSFT; -// XrSystemHandTrackingMeshPropertiesMSFT extends XrSystemProperties -typedef struct XrSystemHandTrackingMeshPropertiesMSFT { - XrStructureType type; - void* XR_MAY_ALIAS next; - XrBool32 supportsHandTrackingMesh; - uint32_t maxHandMeshIndexCount; - uint32_t maxHandMeshVertexCount; -} XrSystemHandTrackingMeshPropertiesMSFT; - -typedef struct XrHandMeshSpaceCreateInfoMSFT { - XrStructureType type; - const void* XR_MAY_ALIAS next; - XrHandPoseTypeMSFT handPoseType; - XrPosef poseInHandMeshSpace; -} XrHandMeshSpaceCreateInfoMSFT; - -typedef struct XrHandMeshUpdateInfoMSFT { - XrStructureType type; - const void* XR_MAY_ALIAS next; - XrTime time; - XrHandPoseTypeMSFT handPoseType; -} XrHandMeshUpdateInfoMSFT; - -typedef struct XrHandMeshIndexBufferMSFT { - uint32_t indexBufferKey; - uint32_t indexCapacityInput; - uint32_t indexCountOutput; - uint32_t* indices; -} XrHandMeshIndexBufferMSFT; - -typedef struct XrHandMeshVertexMSFT { - XrVector3f position; - XrVector3f normal; -} XrHandMeshVertexMSFT; - -typedef struct XrHandMeshVertexBufferMSFT { - XrTime vertexUpdateTime; - uint32_t vertexCapacityInput; - uint32_t vertexCountOutput; - XrHandMeshVertexMSFT* vertices; -} XrHandMeshVertexBufferMSFT; - -typedef struct XrHandMeshMSFT { - XrStructureType type; - void* XR_MAY_ALIAS next; - XrBool32 isActive; - XrBool32 indexBufferChanged; - XrBool32 vertexBufferChanged; - XrHandMeshIndexBufferMSFT indexBuffer; - XrHandMeshVertexBufferMSFT vertexBuffer; -} XrHandMeshMSFT; - -// XrHandPoseTypeInfoMSFT extends XrHandTrackerCreateInfoEXT -typedef struct XrHandPoseTypeInfoMSFT { - XrStructureType type; - const void* XR_MAY_ALIAS next; - XrHandPoseTypeMSFT handPoseType; -} XrHandPoseTypeInfoMSFT; - -typedef XrResult (XRAPI_PTR *PFN_xrCreateHandMeshSpaceMSFT)(XrHandTrackerEXT handTracker, const XrHandMeshSpaceCreateInfoMSFT* createInfo, XrSpace* space); -typedef XrResult (XRAPI_PTR *PFN_xrUpdateHandMeshMSFT)(XrHandTrackerEXT handTracker, const XrHandMeshUpdateInfoMSFT* updateInfo, XrHandMeshMSFT* handMesh); - -#ifndef XR_NO_PROTOTYPES -#ifdef XR_EXTENSION_PROTOTYPES -XRAPI_ATTR XrResult XRAPI_CALL xrCreateHandMeshSpaceMSFT( - XrHandTrackerEXT handTracker, - const XrHandMeshSpaceCreateInfoMSFT* createInfo, - XrSpace* space); - -XRAPI_ATTR XrResult XRAPI_CALL xrUpdateHandMeshMSFT( - XrHandTrackerEXT handTracker, - const XrHandMeshUpdateInfoMSFT* updateInfo, - XrHandMeshMSFT* handMesh); -#endif /* XR_EXTENSION_PROTOTYPES */ -#endif /* !XR_NO_PROTOTYPES */ - - -// XR_MSFT_secondary_view_configuration is a preprocessor guard. Do not pass it to API calls. -#define XR_MSFT_secondary_view_configuration 1 -#define XR_MSFT_secondary_view_configuration_SPEC_VERSION 1 -#define XR_MSFT_SECONDARY_VIEW_CONFIGURATION_EXTENSION_NAME "XR_MSFT_secondary_view_configuration" -// XrSecondaryViewConfigurationSessionBeginInfoMSFT extends XrSessionBeginInfo -typedef struct XrSecondaryViewConfigurationSessionBeginInfoMSFT { - XrStructureType type; - const void* XR_MAY_ALIAS next; - uint32_t viewConfigurationCount; - const XrViewConfigurationType* enabledViewConfigurationTypes; -} XrSecondaryViewConfigurationSessionBeginInfoMSFT; - -typedef struct XrSecondaryViewConfigurationStateMSFT { - XrStructureType type; - void* XR_MAY_ALIAS next; - XrViewConfigurationType viewConfigurationType; - XrBool32 active; -} XrSecondaryViewConfigurationStateMSFT; - -// XrSecondaryViewConfigurationFrameStateMSFT extends XrFrameState -typedef struct XrSecondaryViewConfigurationFrameStateMSFT { - XrStructureType type; - void* XR_MAY_ALIAS next; - uint32_t viewConfigurationCount; - XrSecondaryViewConfigurationStateMSFT* viewConfigurationStates; -} XrSecondaryViewConfigurationFrameStateMSFT; - -typedef struct XrSecondaryViewConfigurationLayerInfoMSFT { - XrStructureType type; - const void* XR_MAY_ALIAS next; - XrViewConfigurationType viewConfigurationType; - XrEnvironmentBlendMode environmentBlendMode; - uint32_t layerCount; - const XrCompositionLayerBaseHeader* const* layers; -} XrSecondaryViewConfigurationLayerInfoMSFT; - -// XrSecondaryViewConfigurationFrameEndInfoMSFT extends XrFrameEndInfo -typedef struct XrSecondaryViewConfigurationFrameEndInfoMSFT { - XrStructureType type; - const void* XR_MAY_ALIAS next; - uint32_t viewConfigurationCount; - const XrSecondaryViewConfigurationLayerInfoMSFT* viewConfigurationLayersInfo; -} XrSecondaryViewConfigurationFrameEndInfoMSFT; - -// XrSecondaryViewConfigurationSwapchainCreateInfoMSFT extends XrSwapchainCreateInfo -typedef struct XrSecondaryViewConfigurationSwapchainCreateInfoMSFT { - XrStructureType type; - const void* XR_MAY_ALIAS next; - XrViewConfigurationType viewConfigurationType; -} XrSecondaryViewConfigurationSwapchainCreateInfoMSFT; - - - -// XR_MSFT_first_person_observer is a preprocessor guard. Do not pass it to API calls. -#define XR_MSFT_first_person_observer 1 -#define XR_MSFT_first_person_observer_SPEC_VERSION 1 -#define XR_MSFT_FIRST_PERSON_OBSERVER_EXTENSION_NAME "XR_MSFT_first_person_observer" - - -// XR_MSFT_controller_model is a preprocessor guard. Do not pass it to API calls. -#define XR_MSFT_controller_model 1 - -#define XR_NULL_CONTROLLER_MODEL_KEY_MSFT 0 - -XR_DEFINE_ATOM(XrControllerModelKeyMSFT) -#define XR_MAX_CONTROLLER_MODEL_NODE_NAME_SIZE_MSFT 64 -#define XR_MSFT_controller_model_SPEC_VERSION 2 -#define XR_MSFT_CONTROLLER_MODEL_EXTENSION_NAME "XR_MSFT_controller_model" -typedef struct XrControllerModelKeyStateMSFT { - XrStructureType type; - void* XR_MAY_ALIAS next; - XrControllerModelKeyMSFT modelKey; -} XrControllerModelKeyStateMSFT; - -typedef struct XrControllerModelNodePropertiesMSFT { - XrStructureType type; - void* XR_MAY_ALIAS next; - char parentNodeName[XR_MAX_CONTROLLER_MODEL_NODE_NAME_SIZE_MSFT]; - char nodeName[XR_MAX_CONTROLLER_MODEL_NODE_NAME_SIZE_MSFT]; -} XrControllerModelNodePropertiesMSFT; - -typedef struct XrControllerModelPropertiesMSFT { - XrStructureType type; - void* XR_MAY_ALIAS next; - uint32_t nodeCapacityInput; - uint32_t nodeCountOutput; - XrControllerModelNodePropertiesMSFT* nodeProperties; -} XrControllerModelPropertiesMSFT; - -typedef struct XrControllerModelNodeStateMSFT { - XrStructureType type; - void* XR_MAY_ALIAS next; - XrPosef nodePose; -} XrControllerModelNodeStateMSFT; - -typedef struct XrControllerModelStateMSFT { - XrStructureType type; - void* XR_MAY_ALIAS next; - uint32_t nodeCapacityInput; - uint32_t nodeCountOutput; - XrControllerModelNodeStateMSFT* nodeStates; -} XrControllerModelStateMSFT; - -typedef XrResult (XRAPI_PTR *PFN_xrGetControllerModelKeyMSFT)(XrSession session, XrPath topLevelUserPath, XrControllerModelKeyStateMSFT* controllerModelKeyState); -typedef XrResult (XRAPI_PTR *PFN_xrLoadControllerModelMSFT)(XrSession session, XrControllerModelKeyMSFT modelKey, uint32_t bufferCapacityInput, uint32_t* bufferCountOutput, uint8_t* buffer); -typedef XrResult (XRAPI_PTR *PFN_xrGetControllerModelPropertiesMSFT)(XrSession session, XrControllerModelKeyMSFT modelKey, XrControllerModelPropertiesMSFT* properties); -typedef XrResult (XRAPI_PTR *PFN_xrGetControllerModelStateMSFT)(XrSession session, XrControllerModelKeyMSFT modelKey, XrControllerModelStateMSFT* state); - -#ifndef XR_NO_PROTOTYPES -#ifdef XR_EXTENSION_PROTOTYPES -XRAPI_ATTR XrResult XRAPI_CALL xrGetControllerModelKeyMSFT( - XrSession session, - XrPath topLevelUserPath, - XrControllerModelKeyStateMSFT* controllerModelKeyState); - -XRAPI_ATTR XrResult XRAPI_CALL xrLoadControllerModelMSFT( - XrSession session, - XrControllerModelKeyMSFT modelKey, - uint32_t bufferCapacityInput, - uint32_t* bufferCountOutput, - uint8_t* buffer); - -XRAPI_ATTR XrResult XRAPI_CALL xrGetControllerModelPropertiesMSFT( - XrSession session, - XrControllerModelKeyMSFT modelKey, - XrControllerModelPropertiesMSFT* properties); - -XRAPI_ATTR XrResult XRAPI_CALL xrGetControllerModelStateMSFT( - XrSession session, - XrControllerModelKeyMSFT modelKey, - XrControllerModelStateMSFT* state); -#endif /* XR_EXTENSION_PROTOTYPES */ -#endif /* !XR_NO_PROTOTYPES */ - - -// XR_EXT_win32_appcontainer_compatible is a preprocessor guard. Do not pass it to API calls. -#define XR_EXT_win32_appcontainer_compatible 1 -#define XR_EXT_win32_appcontainer_compatible_SPEC_VERSION 1 -#define XR_EXT_WIN32_APPCONTAINER_COMPATIBLE_EXTENSION_NAME "XR_EXT_win32_appcontainer_compatible" - - -// XR_EPIC_view_configuration_fov is a preprocessor guard. Do not pass it to API calls. -#define XR_EPIC_view_configuration_fov 1 -#define XR_EPIC_view_configuration_fov_SPEC_VERSION 2 -#define XR_EPIC_VIEW_CONFIGURATION_FOV_EXTENSION_NAME "XR_EPIC_view_configuration_fov" -// XrViewConfigurationViewFovEPIC extends XrViewConfigurationView -typedef struct XrViewConfigurationViewFovEPIC { - XrStructureType type; - const void* XR_MAY_ALIAS next; - XrFovf recommendedFov; - XrFovf maxMutableFov; -} XrViewConfigurationViewFovEPIC; - - - -// XR_MSFT_composition_layer_reprojection is a preprocessor guard. Do not pass it to API calls. -#define XR_MSFT_composition_layer_reprojection 1 -#define XR_MSFT_composition_layer_reprojection_SPEC_VERSION 1 -#define XR_MSFT_COMPOSITION_LAYER_REPROJECTION_EXTENSION_NAME "XR_MSFT_composition_layer_reprojection" - -typedef enum XrReprojectionModeMSFT { - XR_REPROJECTION_MODE_DEPTH_MSFT = 1, - XR_REPROJECTION_MODE_PLANAR_FROM_DEPTH_MSFT = 2, - XR_REPROJECTION_MODE_PLANAR_MANUAL_MSFT = 3, - XR_REPROJECTION_MODE_ORIENTATION_ONLY_MSFT = 4, - XR_REPROJECTION_MODE_MAX_ENUM_MSFT = 0x7FFFFFFF -} XrReprojectionModeMSFT; -// XrCompositionLayerReprojectionInfoMSFT extends XrCompositionLayerProjection -typedef struct XrCompositionLayerReprojectionInfoMSFT { - XrStructureType type; - const void* XR_MAY_ALIAS next; - XrReprojectionModeMSFT reprojectionMode; -} XrCompositionLayerReprojectionInfoMSFT; - -// XrCompositionLayerReprojectionPlaneOverrideMSFT extends XrCompositionLayerProjection -typedef struct XrCompositionLayerReprojectionPlaneOverrideMSFT { - XrStructureType type; - const void* XR_MAY_ALIAS next; - XrVector3f position; - XrVector3f normal; - XrVector3f velocity; -} XrCompositionLayerReprojectionPlaneOverrideMSFT; - -typedef XrResult (XRAPI_PTR *PFN_xrEnumerateReprojectionModesMSFT)(XrInstance instance, XrSystemId systemId, XrViewConfigurationType viewConfigurationType, uint32_t modeCapacityInput, uint32_t* modeCountOutput, XrReprojectionModeMSFT* modes); - -#ifndef XR_NO_PROTOTYPES -#ifdef XR_EXTENSION_PROTOTYPES -XRAPI_ATTR XrResult XRAPI_CALL xrEnumerateReprojectionModesMSFT( - XrInstance instance, - XrSystemId systemId, - XrViewConfigurationType viewConfigurationType, - uint32_t modeCapacityInput, - uint32_t* modeCountOutput, - XrReprojectionModeMSFT* modes); -#endif /* XR_EXTENSION_PROTOTYPES */ -#endif /* !XR_NO_PROTOTYPES */ - - -// XR_HUAWEI_controller_interaction is a preprocessor guard. Do not pass it to API calls. -#define XR_HUAWEI_controller_interaction 1 -#define XR_HUAWEI_controller_interaction_SPEC_VERSION 1 -#define XR_HUAWEI_CONTROLLER_INTERACTION_EXTENSION_NAME "XR_HUAWEI_controller_interaction" - - -// XR_FB_swapchain_update_state is a preprocessor guard. Do not pass it to API calls. -#define XR_FB_swapchain_update_state 1 -#define XR_FB_swapchain_update_state_SPEC_VERSION 3 -#define XR_FB_SWAPCHAIN_UPDATE_STATE_EXTENSION_NAME "XR_FB_swapchain_update_state" -typedef struct XR_MAY_ALIAS XrSwapchainStateBaseHeaderFB { - XrStructureType type; - void* XR_MAY_ALIAS next; -} XrSwapchainStateBaseHeaderFB; - -typedef XrResult (XRAPI_PTR *PFN_xrUpdateSwapchainFB)(XrSwapchain swapchain, const XrSwapchainStateBaseHeaderFB* state); -typedef XrResult (XRAPI_PTR *PFN_xrGetSwapchainStateFB)(XrSwapchain swapchain, XrSwapchainStateBaseHeaderFB* state); - -#ifndef XR_NO_PROTOTYPES -#ifdef XR_EXTENSION_PROTOTYPES -XRAPI_ATTR XrResult XRAPI_CALL xrUpdateSwapchainFB( - XrSwapchain swapchain, - const XrSwapchainStateBaseHeaderFB* state); - -XRAPI_ATTR XrResult XRAPI_CALL xrGetSwapchainStateFB( - XrSwapchain swapchain, - XrSwapchainStateBaseHeaderFB* state); -#endif /* XR_EXTENSION_PROTOTYPES */ -#endif /* !XR_NO_PROTOTYPES */ - - -// XR_FB_composition_layer_secure_content is a preprocessor guard. Do not pass it to API calls. -#define XR_FB_composition_layer_secure_content 1 -#define XR_FB_composition_layer_secure_content_SPEC_VERSION 1 -#define XR_FB_COMPOSITION_LAYER_SECURE_CONTENT_EXTENSION_NAME "XR_FB_composition_layer_secure_content" -typedef XrFlags64 XrCompositionLayerSecureContentFlagsFB; - -// Flag bits for XrCompositionLayerSecureContentFlagsFB -static const XrCompositionLayerSecureContentFlagsFB XR_COMPOSITION_LAYER_SECURE_CONTENT_EXCLUDE_LAYER_BIT_FB = 0x00000001; -static const XrCompositionLayerSecureContentFlagsFB XR_COMPOSITION_LAYER_SECURE_CONTENT_REPLACE_LAYER_BIT_FB = 0x00000002; - -// XrCompositionLayerSecureContentFB extends XrCompositionLayerBaseHeader -typedef struct XrCompositionLayerSecureContentFB { - XrStructureType type; - const void* XR_MAY_ALIAS next; - XrCompositionLayerSecureContentFlagsFB flags; -} XrCompositionLayerSecureContentFB; - - - -// XR_FB_body_tracking is a preprocessor guard. Do not pass it to API calls. -#define XR_FB_body_tracking 1 -XR_DEFINE_HANDLE(XrBodyTrackerFB) -#define XR_FB_body_tracking_SPEC_VERSION 1 -#define XR_FB_BODY_TRACKING_EXTENSION_NAME "XR_FB_body_tracking" - -typedef enum XrBodyJointFB { - XR_BODY_JOINT_ROOT_FB = 0, - XR_BODY_JOINT_HIPS_FB = 1, - XR_BODY_JOINT_SPINE_LOWER_FB = 2, - XR_BODY_JOINT_SPINE_MIDDLE_FB = 3, - XR_BODY_JOINT_SPINE_UPPER_FB = 4, - XR_BODY_JOINT_CHEST_FB = 5, - XR_BODY_JOINT_NECK_FB = 6, - XR_BODY_JOINT_HEAD_FB = 7, - XR_BODY_JOINT_LEFT_SHOULDER_FB = 8, - XR_BODY_JOINT_LEFT_SCAPULA_FB = 9, - XR_BODY_JOINT_LEFT_ARM_UPPER_FB = 10, - XR_BODY_JOINT_LEFT_ARM_LOWER_FB = 11, - XR_BODY_JOINT_LEFT_HAND_WRIST_TWIST_FB = 12, - XR_BODY_JOINT_RIGHT_SHOULDER_FB = 13, - XR_BODY_JOINT_RIGHT_SCAPULA_FB = 14, - XR_BODY_JOINT_RIGHT_ARM_UPPER_FB = 15, - XR_BODY_JOINT_RIGHT_ARM_LOWER_FB = 16, - XR_BODY_JOINT_RIGHT_HAND_WRIST_TWIST_FB = 17, - XR_BODY_JOINT_LEFT_HAND_PALM_FB = 18, - XR_BODY_JOINT_LEFT_HAND_WRIST_FB = 19, - XR_BODY_JOINT_LEFT_HAND_THUMB_METACARPAL_FB = 20, - XR_BODY_JOINT_LEFT_HAND_THUMB_PROXIMAL_FB = 21, - XR_BODY_JOINT_LEFT_HAND_THUMB_DISTAL_FB = 22, - XR_BODY_JOINT_LEFT_HAND_THUMB_TIP_FB = 23, - XR_BODY_JOINT_LEFT_HAND_INDEX_METACARPAL_FB = 24, - XR_BODY_JOINT_LEFT_HAND_INDEX_PROXIMAL_FB = 25, - XR_BODY_JOINT_LEFT_HAND_INDEX_INTERMEDIATE_FB = 26, - XR_BODY_JOINT_LEFT_HAND_INDEX_DISTAL_FB = 27, - XR_BODY_JOINT_LEFT_HAND_INDEX_TIP_FB = 28, - XR_BODY_JOINT_LEFT_HAND_MIDDLE_METACARPAL_FB = 29, - XR_BODY_JOINT_LEFT_HAND_MIDDLE_PROXIMAL_FB = 30, - XR_BODY_JOINT_LEFT_HAND_MIDDLE_INTERMEDIATE_FB = 31, - XR_BODY_JOINT_LEFT_HAND_MIDDLE_DISTAL_FB = 32, - XR_BODY_JOINT_LEFT_HAND_MIDDLE_TIP_FB = 33, - XR_BODY_JOINT_LEFT_HAND_RING_METACARPAL_FB = 34, - XR_BODY_JOINT_LEFT_HAND_RING_PROXIMAL_FB = 35, - XR_BODY_JOINT_LEFT_HAND_RING_INTERMEDIATE_FB = 36, - XR_BODY_JOINT_LEFT_HAND_RING_DISTAL_FB = 37, - XR_BODY_JOINT_LEFT_HAND_RING_TIP_FB = 38, - XR_BODY_JOINT_LEFT_HAND_LITTLE_METACARPAL_FB = 39, - XR_BODY_JOINT_LEFT_HAND_LITTLE_PROXIMAL_FB = 40, - XR_BODY_JOINT_LEFT_HAND_LITTLE_INTERMEDIATE_FB = 41, - XR_BODY_JOINT_LEFT_HAND_LITTLE_DISTAL_FB = 42, - XR_BODY_JOINT_LEFT_HAND_LITTLE_TIP_FB = 43, - XR_BODY_JOINT_RIGHT_HAND_PALM_FB = 44, - XR_BODY_JOINT_RIGHT_HAND_WRIST_FB = 45, - XR_BODY_JOINT_RIGHT_HAND_THUMB_METACARPAL_FB = 46, - XR_BODY_JOINT_RIGHT_HAND_THUMB_PROXIMAL_FB = 47, - XR_BODY_JOINT_RIGHT_HAND_THUMB_DISTAL_FB = 48, - XR_BODY_JOINT_RIGHT_HAND_THUMB_TIP_FB = 49, - XR_BODY_JOINT_RIGHT_HAND_INDEX_METACARPAL_FB = 50, - XR_BODY_JOINT_RIGHT_HAND_INDEX_PROXIMAL_FB = 51, - XR_BODY_JOINT_RIGHT_HAND_INDEX_INTERMEDIATE_FB = 52, - XR_BODY_JOINT_RIGHT_HAND_INDEX_DISTAL_FB = 53, - XR_BODY_JOINT_RIGHT_HAND_INDEX_TIP_FB = 54, - XR_BODY_JOINT_RIGHT_HAND_MIDDLE_METACARPAL_FB = 55, - XR_BODY_JOINT_RIGHT_HAND_MIDDLE_PROXIMAL_FB = 56, - XR_BODY_JOINT_RIGHT_HAND_MIDDLE_INTERMEDIATE_FB = 57, - XR_BODY_JOINT_RIGHT_HAND_MIDDLE_DISTAL_FB = 58, - XR_BODY_JOINT_RIGHT_HAND_MIDDLE_TIP_FB = 59, - XR_BODY_JOINT_RIGHT_HAND_RING_METACARPAL_FB = 60, - XR_BODY_JOINT_RIGHT_HAND_RING_PROXIMAL_FB = 61, - XR_BODY_JOINT_RIGHT_HAND_RING_INTERMEDIATE_FB = 62, - XR_BODY_JOINT_RIGHT_HAND_RING_DISTAL_FB = 63, - XR_BODY_JOINT_RIGHT_HAND_RING_TIP_FB = 64, - XR_BODY_JOINT_RIGHT_HAND_LITTLE_METACARPAL_FB = 65, - XR_BODY_JOINT_RIGHT_HAND_LITTLE_PROXIMAL_FB = 66, - XR_BODY_JOINT_RIGHT_HAND_LITTLE_INTERMEDIATE_FB = 67, - XR_BODY_JOINT_RIGHT_HAND_LITTLE_DISTAL_FB = 68, - XR_BODY_JOINT_RIGHT_HAND_LITTLE_TIP_FB = 69, - XR_BODY_JOINT_COUNT_FB = 70, - XR_BODY_JOINT_NONE_FB = -1, - XR_BODY_JOINT_MAX_ENUM_FB = 0x7FFFFFFF -} XrBodyJointFB; - -typedef enum XrBodyJointSetFB { - XR_BODY_JOINT_SET_DEFAULT_FB = 0, - XR_BODY_JOINT_SET_MAX_ENUM_FB = 0x7FFFFFFF -} XrBodyJointSetFB; -typedef struct XrBodyJointLocationFB { - XrSpaceLocationFlags locationFlags; - XrPosef pose; -} XrBodyJointLocationFB; - -// XrSystemBodyTrackingPropertiesFB extends XrSystemProperties -typedef struct XrSystemBodyTrackingPropertiesFB { - XrStructureType type; - void* XR_MAY_ALIAS next; - XrBool32 supportsBodyTracking; -} XrSystemBodyTrackingPropertiesFB; - -typedef struct XrBodyTrackerCreateInfoFB { - XrStructureType type; - const void* XR_MAY_ALIAS next; - XrBodyJointSetFB bodyJointSet; -} XrBodyTrackerCreateInfoFB; - -typedef struct XrBodySkeletonJointFB { - int32_t joint; - int32_t parentJoint; - XrPosef pose; -} XrBodySkeletonJointFB; - -typedef struct XrBodySkeletonFB { - XrStructureType type; - void* XR_MAY_ALIAS next; - uint32_t jointCount; - XrBodySkeletonJointFB* joints; -} XrBodySkeletonFB; - -typedef struct XrBodyJointsLocateInfoFB { - XrStructureType type; - const void* XR_MAY_ALIAS next; - XrSpace baseSpace; - XrTime time; -} XrBodyJointsLocateInfoFB; - -typedef struct XrBodyJointLocationsFB { - XrStructureType type; - void* XR_MAY_ALIAS next; - XrBool32 isActive; - float confidence; - uint32_t jointCount; - XrBodyJointLocationFB* jointLocations; - uint32_t skeletonChangedCount; - XrTime time; -} XrBodyJointLocationsFB; - -typedef XrResult (XRAPI_PTR *PFN_xrCreateBodyTrackerFB)(XrSession session, const XrBodyTrackerCreateInfoFB* createInfo, XrBodyTrackerFB* bodyTracker); -typedef XrResult (XRAPI_PTR *PFN_xrDestroyBodyTrackerFB)(XrBodyTrackerFB bodyTracker); -typedef XrResult (XRAPI_PTR *PFN_xrLocateBodyJointsFB)(XrBodyTrackerFB bodyTracker, const XrBodyJointsLocateInfoFB* locateInfo, XrBodyJointLocationsFB* locations); -typedef XrResult (XRAPI_PTR *PFN_xrGetBodySkeletonFB)(XrBodyTrackerFB bodyTracker, XrBodySkeletonFB* skeleton); - -#ifndef XR_NO_PROTOTYPES -#ifdef XR_EXTENSION_PROTOTYPES -XRAPI_ATTR XrResult XRAPI_CALL xrCreateBodyTrackerFB( - XrSession session, - const XrBodyTrackerCreateInfoFB* createInfo, - XrBodyTrackerFB* bodyTracker); - -XRAPI_ATTR XrResult XRAPI_CALL xrDestroyBodyTrackerFB( - XrBodyTrackerFB bodyTracker); - -XRAPI_ATTR XrResult XRAPI_CALL xrLocateBodyJointsFB( - XrBodyTrackerFB bodyTracker, - const XrBodyJointsLocateInfoFB* locateInfo, - XrBodyJointLocationsFB* locations); - -XRAPI_ATTR XrResult XRAPI_CALL xrGetBodySkeletonFB( - XrBodyTrackerFB bodyTracker, - XrBodySkeletonFB* skeleton); -#endif /* XR_EXTENSION_PROTOTYPES */ -#endif /* !XR_NO_PROTOTYPES */ - - -// XR_EXT_dpad_binding is a preprocessor guard. Do not pass it to API calls. -#define XR_EXT_dpad_binding 1 -#define XR_EXT_dpad_binding_SPEC_VERSION 1 -#define XR_EXT_DPAD_BINDING_EXTENSION_NAME "XR_EXT_dpad_binding" -typedef struct XrInteractionProfileDpadBindingEXT { - XrStructureType type; - const void* XR_MAY_ALIAS next; - XrPath binding; - XrActionSet actionSet; - float forceThreshold; - float forceThresholdReleased; - float centerRegion; - float wedgeAngle; - XrBool32 isSticky; - const XrHapticBaseHeader* onHaptic; - const XrHapticBaseHeader* offHaptic; -} XrInteractionProfileDpadBindingEXT; - - - -// XR_VALVE_analog_threshold is a preprocessor guard. Do not pass it to API calls. -#define XR_VALVE_analog_threshold 1 -#define XR_VALVE_analog_threshold_SPEC_VERSION 2 -#define XR_VALVE_ANALOG_THRESHOLD_EXTENSION_NAME "XR_VALVE_analog_threshold" -typedef struct XrInteractionProfileAnalogThresholdVALVE { - XrStructureType type; - const void* XR_MAY_ALIAS next; - XrAction action; - XrPath binding; - float onThreshold; - float offThreshold; - const XrHapticBaseHeader* onHaptic; - const XrHapticBaseHeader* offHaptic; -} XrInteractionProfileAnalogThresholdVALVE; - - - -// XR_EXT_hand_joints_motion_range is a preprocessor guard. Do not pass it to API calls. -#define XR_EXT_hand_joints_motion_range 1 -#define XR_EXT_hand_joints_motion_range_SPEC_VERSION 1 -#define XR_EXT_HAND_JOINTS_MOTION_RANGE_EXTENSION_NAME "XR_EXT_hand_joints_motion_range" - -typedef enum XrHandJointsMotionRangeEXT { - XR_HAND_JOINTS_MOTION_RANGE_UNOBSTRUCTED_EXT = 1, - XR_HAND_JOINTS_MOTION_RANGE_CONFORMING_TO_CONTROLLER_EXT = 2, - XR_HAND_JOINTS_MOTION_RANGE_MAX_ENUM_EXT = 0x7FFFFFFF -} XrHandJointsMotionRangeEXT; -// XrHandJointsMotionRangeInfoEXT extends XrHandJointsLocateInfoEXT -typedef struct XrHandJointsMotionRangeInfoEXT { - XrStructureType type; - const void* XR_MAY_ALIAS next; - XrHandJointsMotionRangeEXT handJointsMotionRange; -} XrHandJointsMotionRangeInfoEXT; - - - -// XR_EXT_samsung_odyssey_controller is a preprocessor guard. Do not pass it to API calls. -#define XR_EXT_samsung_odyssey_controller 1 -#define XR_EXT_samsung_odyssey_controller_SPEC_VERSION 1 -#define XR_EXT_SAMSUNG_ODYSSEY_CONTROLLER_EXTENSION_NAME "XR_EXT_samsung_odyssey_controller" - - -// XR_EXT_hp_mixed_reality_controller is a preprocessor guard. Do not pass it to API calls. -#define XR_EXT_hp_mixed_reality_controller 1 -#define XR_EXT_hp_mixed_reality_controller_SPEC_VERSION 1 -#define XR_EXT_HP_MIXED_REALITY_CONTROLLER_EXTENSION_NAME "XR_EXT_hp_mixed_reality_controller" - - -// XR_MND_swapchain_usage_input_attachment_bit is a preprocessor guard. Do not pass it to API calls. -#define XR_MND_swapchain_usage_input_attachment_bit 1 -#define XR_MND_swapchain_usage_input_attachment_bit_SPEC_VERSION 2 -#define XR_MND_SWAPCHAIN_USAGE_INPUT_ATTACHMENT_BIT_EXTENSION_NAME "XR_MND_swapchain_usage_input_attachment_bit" - - -// XR_MSFT_scene_understanding is a preprocessor guard. Do not pass it to API calls. -#define XR_MSFT_scene_understanding 1 - - XR_DEFINE_HANDLE(XrSceneObserverMSFT) - - - XR_DEFINE_HANDLE(XrSceneMSFT) - -#define XR_MSFT_scene_understanding_SPEC_VERSION 2 -#define XR_MSFT_SCENE_UNDERSTANDING_EXTENSION_NAME "XR_MSFT_scene_understanding" - -typedef enum XrSceneComputeFeatureMSFT { - XR_SCENE_COMPUTE_FEATURE_PLANE_MSFT = 1, - XR_SCENE_COMPUTE_FEATURE_PLANE_MESH_MSFT = 2, - XR_SCENE_COMPUTE_FEATURE_VISUAL_MESH_MSFT = 3, - XR_SCENE_COMPUTE_FEATURE_COLLIDER_MESH_MSFT = 4, - XR_SCENE_COMPUTE_FEATURE_SERIALIZE_SCENE_MSFT = 1000098000, - XR_SCENE_COMPUTE_FEATURE_MARKER_MSFT = 1000147000, - XR_SCENE_COMPUTE_FEATURE_MAX_ENUM_MSFT = 0x7FFFFFFF -} XrSceneComputeFeatureMSFT; - -typedef enum XrSceneComputeConsistencyMSFT { - XR_SCENE_COMPUTE_CONSISTENCY_SNAPSHOT_COMPLETE_MSFT = 1, - XR_SCENE_COMPUTE_CONSISTENCY_SNAPSHOT_INCOMPLETE_FAST_MSFT = 2, - XR_SCENE_COMPUTE_CONSISTENCY_OCCLUSION_OPTIMIZED_MSFT = 3, - XR_SCENE_COMPUTE_CONSISTENCY_MAX_ENUM_MSFT = 0x7FFFFFFF -} XrSceneComputeConsistencyMSFT; - -typedef enum XrMeshComputeLodMSFT { - XR_MESH_COMPUTE_LOD_COARSE_MSFT = 1, - XR_MESH_COMPUTE_LOD_MEDIUM_MSFT = 2, - XR_MESH_COMPUTE_LOD_FINE_MSFT = 3, - XR_MESH_COMPUTE_LOD_UNLIMITED_MSFT = 4, - XR_MESH_COMPUTE_LOD_MAX_ENUM_MSFT = 0x7FFFFFFF -} XrMeshComputeLodMSFT; - -typedef enum XrSceneComponentTypeMSFT { - XR_SCENE_COMPONENT_TYPE_INVALID_MSFT = -1, - XR_SCENE_COMPONENT_TYPE_OBJECT_MSFT = 1, - XR_SCENE_COMPONENT_TYPE_PLANE_MSFT = 2, - XR_SCENE_COMPONENT_TYPE_VISUAL_MESH_MSFT = 3, - XR_SCENE_COMPONENT_TYPE_COLLIDER_MESH_MSFT = 4, - XR_SCENE_COMPONENT_TYPE_SERIALIZED_SCENE_FRAGMENT_MSFT = 1000098000, - XR_SCENE_COMPONENT_TYPE_MARKER_MSFT = 1000147000, - XR_SCENE_COMPONENT_TYPE_MAX_ENUM_MSFT = 0x7FFFFFFF -} XrSceneComponentTypeMSFT; - -typedef enum XrSceneObjectTypeMSFT { - XR_SCENE_OBJECT_TYPE_UNCATEGORIZED_MSFT = -1, - XR_SCENE_OBJECT_TYPE_BACKGROUND_MSFT = 1, - XR_SCENE_OBJECT_TYPE_WALL_MSFT = 2, - XR_SCENE_OBJECT_TYPE_FLOOR_MSFT = 3, - XR_SCENE_OBJECT_TYPE_CEILING_MSFT = 4, - XR_SCENE_OBJECT_TYPE_PLATFORM_MSFT = 5, - XR_SCENE_OBJECT_TYPE_INFERRED_MSFT = 6, - XR_SCENE_OBJECT_TYPE_MAX_ENUM_MSFT = 0x7FFFFFFF -} XrSceneObjectTypeMSFT; - -typedef enum XrScenePlaneAlignmentTypeMSFT { - XR_SCENE_PLANE_ALIGNMENT_TYPE_NON_ORTHOGONAL_MSFT = 0, - XR_SCENE_PLANE_ALIGNMENT_TYPE_HORIZONTAL_MSFT = 1, - XR_SCENE_PLANE_ALIGNMENT_TYPE_VERTICAL_MSFT = 2, - XR_SCENE_PLANE_ALIGNMENT_TYPE_MAX_ENUM_MSFT = 0x7FFFFFFF -} XrScenePlaneAlignmentTypeMSFT; - -typedef enum XrSceneComputeStateMSFT { - XR_SCENE_COMPUTE_STATE_NONE_MSFT = 0, - XR_SCENE_COMPUTE_STATE_UPDATING_MSFT = 1, - XR_SCENE_COMPUTE_STATE_COMPLETED_MSFT = 2, - XR_SCENE_COMPUTE_STATE_COMPLETED_WITH_ERROR_MSFT = 3, - XR_SCENE_COMPUTE_STATE_MAX_ENUM_MSFT = 0x7FFFFFFF -} XrSceneComputeStateMSFT; -typedef struct XrUuidMSFT { - uint8_t bytes[16]; -} XrUuidMSFT; - -typedef struct XrSceneObserverCreateInfoMSFT { - XrStructureType type; - const void* XR_MAY_ALIAS next; -} XrSceneObserverCreateInfoMSFT; - -typedef struct XrSceneCreateInfoMSFT { - XrStructureType type; - const void* XR_MAY_ALIAS next; -} XrSceneCreateInfoMSFT; - -typedef struct XrSceneSphereBoundMSFT { - XrVector3f center; - float radius; -} XrSceneSphereBoundMSFT; - -typedef struct XrSceneOrientedBoxBoundMSFT { - XrPosef pose; - XrVector3f extents; -} XrSceneOrientedBoxBoundMSFT; - -typedef struct XrSceneFrustumBoundMSFT { - XrPosef pose; - XrFovf fov; - float farDistance; -} XrSceneFrustumBoundMSFT; - -typedef struct XrSceneBoundsMSFT { - XrSpace space; - XrTime time; - uint32_t sphereCount; - const XrSceneSphereBoundMSFT* spheres; - uint32_t boxCount; - const XrSceneOrientedBoxBoundMSFT* boxes; - uint32_t frustumCount; - const XrSceneFrustumBoundMSFT* frustums; -} XrSceneBoundsMSFT; - -typedef struct XrNewSceneComputeInfoMSFT { - XrStructureType type; - const void* XR_MAY_ALIAS next; - uint32_t requestedFeatureCount; - const XrSceneComputeFeatureMSFT* requestedFeatures; - XrSceneComputeConsistencyMSFT consistency; - XrSceneBoundsMSFT bounds; -} XrNewSceneComputeInfoMSFT; - -// XrVisualMeshComputeLodInfoMSFT extends XrNewSceneComputeInfoMSFT -typedef struct XrVisualMeshComputeLodInfoMSFT { - XrStructureType type; - const void* XR_MAY_ALIAS next; - XrMeshComputeLodMSFT lod; -} XrVisualMeshComputeLodInfoMSFT; - -typedef struct XrSceneComponentMSFT { - XrSceneComponentTypeMSFT componentType; - XrUuidMSFT id; - XrUuidMSFT parentId; - XrTime updateTime; -} XrSceneComponentMSFT; - -typedef struct XrSceneComponentsMSFT { - XrStructureType type; - void* XR_MAY_ALIAS next; - uint32_t componentCapacityInput; - uint32_t componentCountOutput; - XrSceneComponentMSFT* components; -} XrSceneComponentsMSFT; - -typedef struct XrSceneComponentsGetInfoMSFT { - XrStructureType type; - const void* XR_MAY_ALIAS next; - XrSceneComponentTypeMSFT componentType; -} XrSceneComponentsGetInfoMSFT; - -typedef struct XrSceneComponentLocationMSFT { - XrSpaceLocationFlags flags; - XrPosef pose; -} XrSceneComponentLocationMSFT; - -typedef struct XrSceneComponentLocationsMSFT { - XrStructureType type; - void* XR_MAY_ALIAS next; - uint32_t locationCount; - XrSceneComponentLocationMSFT* locations; -} XrSceneComponentLocationsMSFT; - -typedef struct XrSceneComponentsLocateInfoMSFT { - XrStructureType type; - const void* XR_MAY_ALIAS next; - XrSpace baseSpace; - XrTime time; - uint32_t componentIdCount; - const XrUuidMSFT* componentIds; -} XrSceneComponentsLocateInfoMSFT; - -typedef struct XrSceneObjectMSFT { - XrSceneObjectTypeMSFT objectType; -} XrSceneObjectMSFT; - -// XrSceneObjectsMSFT extends XrSceneComponentsMSFT -typedef struct XrSceneObjectsMSFT { - XrStructureType type; - void* XR_MAY_ALIAS next; - uint32_t sceneObjectCount; - XrSceneObjectMSFT* sceneObjects; -} XrSceneObjectsMSFT; - -// XrSceneComponentParentFilterInfoMSFT extends XrSceneComponentsGetInfoMSFT -typedef struct XrSceneComponentParentFilterInfoMSFT { - XrStructureType type; - const void* XR_MAY_ALIAS next; - XrUuidMSFT parentId; -} XrSceneComponentParentFilterInfoMSFT; - -// XrSceneObjectTypesFilterInfoMSFT extends XrSceneComponentsGetInfoMSFT -typedef struct XrSceneObjectTypesFilterInfoMSFT { - XrStructureType type; - const void* XR_MAY_ALIAS next; - uint32_t objectTypeCount; - const XrSceneObjectTypeMSFT* objectTypes; -} XrSceneObjectTypesFilterInfoMSFT; - -typedef struct XrScenePlaneMSFT { - XrScenePlaneAlignmentTypeMSFT alignment; - XrExtent2Df size; - uint64_t meshBufferId; - XrBool32 supportsIndicesUint16; -} XrScenePlaneMSFT; - -// XrScenePlanesMSFT extends XrSceneComponentsMSFT -typedef struct XrScenePlanesMSFT { - XrStructureType type; - void* XR_MAY_ALIAS next; - uint32_t scenePlaneCount; - XrScenePlaneMSFT* scenePlanes; -} XrScenePlanesMSFT; - -// XrScenePlaneAlignmentFilterInfoMSFT extends XrSceneComponentsGetInfoMSFT -typedef struct XrScenePlaneAlignmentFilterInfoMSFT { - XrStructureType type; - const void* XR_MAY_ALIAS next; - uint32_t alignmentCount; - const XrScenePlaneAlignmentTypeMSFT* alignments; -} XrScenePlaneAlignmentFilterInfoMSFT; - -typedef struct XrSceneMeshMSFT { - uint64_t meshBufferId; - XrBool32 supportsIndicesUint16; -} XrSceneMeshMSFT; - -// XrSceneMeshesMSFT extends XrSceneComponentsMSFT -typedef struct XrSceneMeshesMSFT { - XrStructureType type; - void* XR_MAY_ALIAS next; - uint32_t sceneMeshCount; - XrSceneMeshMSFT* sceneMeshes; -} XrSceneMeshesMSFT; - -typedef struct XrSceneMeshBuffersGetInfoMSFT { - XrStructureType type; - const void* XR_MAY_ALIAS next; - uint64_t meshBufferId; -} XrSceneMeshBuffersGetInfoMSFT; - -typedef struct XrSceneMeshBuffersMSFT { - XrStructureType type; - void* XR_MAY_ALIAS next; -} XrSceneMeshBuffersMSFT; - -typedef struct XrSceneMeshVertexBufferMSFT { - XrStructureType type; - void* XR_MAY_ALIAS next; - uint32_t vertexCapacityInput; - uint32_t vertexCountOutput; - XrVector3f* vertices; -} XrSceneMeshVertexBufferMSFT; - -typedef struct XrSceneMeshIndicesUint32MSFT { - XrStructureType type; - void* XR_MAY_ALIAS next; - uint32_t indexCapacityInput; - uint32_t indexCountOutput; - uint32_t* indices; -} XrSceneMeshIndicesUint32MSFT; - -typedef struct XrSceneMeshIndicesUint16MSFT { - XrStructureType type; - void* XR_MAY_ALIAS next; - uint32_t indexCapacityInput; - uint32_t indexCountOutput; - uint16_t* indices; -} XrSceneMeshIndicesUint16MSFT; - -typedef XrResult (XRAPI_PTR *PFN_xrEnumerateSceneComputeFeaturesMSFT)(XrInstance instance, XrSystemId systemId, uint32_t featureCapacityInput, uint32_t* featureCountOutput, XrSceneComputeFeatureMSFT* features); -typedef XrResult (XRAPI_PTR *PFN_xrCreateSceneObserverMSFT)(XrSession session, const XrSceneObserverCreateInfoMSFT* createInfo, XrSceneObserverMSFT* sceneObserver); -typedef XrResult (XRAPI_PTR *PFN_xrDestroySceneObserverMSFT)(XrSceneObserverMSFT sceneObserver); -typedef XrResult (XRAPI_PTR *PFN_xrCreateSceneMSFT)(XrSceneObserverMSFT sceneObserver, const XrSceneCreateInfoMSFT* createInfo, XrSceneMSFT* scene); -typedef XrResult (XRAPI_PTR *PFN_xrDestroySceneMSFT)(XrSceneMSFT scene); -typedef XrResult (XRAPI_PTR *PFN_xrComputeNewSceneMSFT)(XrSceneObserverMSFT sceneObserver, const XrNewSceneComputeInfoMSFT* computeInfo); -typedef XrResult (XRAPI_PTR *PFN_xrGetSceneComputeStateMSFT)(XrSceneObserverMSFT sceneObserver, XrSceneComputeStateMSFT* state); -typedef XrResult (XRAPI_PTR *PFN_xrGetSceneComponentsMSFT)(XrSceneMSFT scene, const XrSceneComponentsGetInfoMSFT* getInfo, XrSceneComponentsMSFT* components); -typedef XrResult (XRAPI_PTR *PFN_xrLocateSceneComponentsMSFT)(XrSceneMSFT scene, const XrSceneComponentsLocateInfoMSFT* locateInfo, XrSceneComponentLocationsMSFT* locations); -typedef XrResult (XRAPI_PTR *PFN_xrGetSceneMeshBuffersMSFT)(XrSceneMSFT scene, const XrSceneMeshBuffersGetInfoMSFT* getInfo, XrSceneMeshBuffersMSFT* buffers); - -#ifndef XR_NO_PROTOTYPES -#ifdef XR_EXTENSION_PROTOTYPES -XRAPI_ATTR XrResult XRAPI_CALL xrEnumerateSceneComputeFeaturesMSFT( - XrInstance instance, - XrSystemId systemId, - uint32_t featureCapacityInput, - uint32_t* featureCountOutput, - XrSceneComputeFeatureMSFT* features); - -XRAPI_ATTR XrResult XRAPI_CALL xrCreateSceneObserverMSFT( - XrSession session, - const XrSceneObserverCreateInfoMSFT* createInfo, - XrSceneObserverMSFT* sceneObserver); - -XRAPI_ATTR XrResult XRAPI_CALL xrDestroySceneObserverMSFT( - XrSceneObserverMSFT sceneObserver); - -XRAPI_ATTR XrResult XRAPI_CALL xrCreateSceneMSFT( - XrSceneObserverMSFT sceneObserver, - const XrSceneCreateInfoMSFT* createInfo, - XrSceneMSFT* scene); - -XRAPI_ATTR XrResult XRAPI_CALL xrDestroySceneMSFT( - XrSceneMSFT scene); - -XRAPI_ATTR XrResult XRAPI_CALL xrComputeNewSceneMSFT( - XrSceneObserverMSFT sceneObserver, - const XrNewSceneComputeInfoMSFT* computeInfo); - -XRAPI_ATTR XrResult XRAPI_CALL xrGetSceneComputeStateMSFT( - XrSceneObserverMSFT sceneObserver, - XrSceneComputeStateMSFT* state); - -XRAPI_ATTR XrResult XRAPI_CALL xrGetSceneComponentsMSFT( - XrSceneMSFT scene, - const XrSceneComponentsGetInfoMSFT* getInfo, - XrSceneComponentsMSFT* components); - -XRAPI_ATTR XrResult XRAPI_CALL xrLocateSceneComponentsMSFT( - XrSceneMSFT scene, - const XrSceneComponentsLocateInfoMSFT* locateInfo, - XrSceneComponentLocationsMSFT* locations); - -XRAPI_ATTR XrResult XRAPI_CALL xrGetSceneMeshBuffersMSFT( - XrSceneMSFT scene, - const XrSceneMeshBuffersGetInfoMSFT* getInfo, - XrSceneMeshBuffersMSFT* buffers); -#endif /* XR_EXTENSION_PROTOTYPES */ -#endif /* !XR_NO_PROTOTYPES */ - - -// XR_MSFT_scene_understanding_serialization is a preprocessor guard. Do not pass it to API calls. -#define XR_MSFT_scene_understanding_serialization 1 -#define XR_MSFT_scene_understanding_serialization_SPEC_VERSION 2 -#define XR_MSFT_SCENE_UNDERSTANDING_SERIALIZATION_EXTENSION_NAME "XR_MSFT_scene_understanding_serialization" -typedef struct XrSerializedSceneFragmentDataGetInfoMSFT { - XrStructureType type; - const void* XR_MAY_ALIAS next; - XrUuidMSFT sceneFragmentId; -} XrSerializedSceneFragmentDataGetInfoMSFT; - -typedef struct XrDeserializeSceneFragmentMSFT { - uint32_t bufferSize; - const uint8_t* buffer; -} XrDeserializeSceneFragmentMSFT; - -typedef struct XrSceneDeserializeInfoMSFT { - XrStructureType type; - const void* XR_MAY_ALIAS next; - uint32_t fragmentCount; - const XrDeserializeSceneFragmentMSFT* fragments; -} XrSceneDeserializeInfoMSFT; - -typedef XrResult (XRAPI_PTR *PFN_xrDeserializeSceneMSFT)(XrSceneObserverMSFT sceneObserver, const XrSceneDeserializeInfoMSFT* deserializeInfo); -typedef XrResult (XRAPI_PTR *PFN_xrGetSerializedSceneFragmentDataMSFT)(XrSceneMSFT scene, const XrSerializedSceneFragmentDataGetInfoMSFT* getInfo, uint32_t countInput, uint32_t* readOutput, uint8_t* buffer); - -#ifndef XR_NO_PROTOTYPES -#ifdef XR_EXTENSION_PROTOTYPES -XRAPI_ATTR XrResult XRAPI_CALL xrDeserializeSceneMSFT( - XrSceneObserverMSFT sceneObserver, - const XrSceneDeserializeInfoMSFT* deserializeInfo); - -XRAPI_ATTR XrResult XRAPI_CALL xrGetSerializedSceneFragmentDataMSFT( - XrSceneMSFT scene, - const XrSerializedSceneFragmentDataGetInfoMSFT* getInfo, - uint32_t countInput, - uint32_t* readOutput, - uint8_t* buffer); -#endif /* XR_EXTENSION_PROTOTYPES */ -#endif /* !XR_NO_PROTOTYPES */ - - -// XR_FB_display_refresh_rate is a preprocessor guard. Do not pass it to API calls. -#define XR_FB_display_refresh_rate 1 -#define XR_FB_display_refresh_rate_SPEC_VERSION 1 -#define XR_FB_DISPLAY_REFRESH_RATE_EXTENSION_NAME "XR_FB_display_refresh_rate" -typedef struct XrEventDataDisplayRefreshRateChangedFB { - XrStructureType type; - const void* XR_MAY_ALIAS next; - float fromDisplayRefreshRate; - float toDisplayRefreshRate; -} XrEventDataDisplayRefreshRateChangedFB; - -typedef XrResult (XRAPI_PTR *PFN_xrEnumerateDisplayRefreshRatesFB)(XrSession session, uint32_t displayRefreshRateCapacityInput, uint32_t* displayRefreshRateCountOutput, float* displayRefreshRates); -typedef XrResult (XRAPI_PTR *PFN_xrGetDisplayRefreshRateFB)(XrSession session, float* displayRefreshRate); -typedef XrResult (XRAPI_PTR *PFN_xrRequestDisplayRefreshRateFB)(XrSession session, float displayRefreshRate); - -#ifndef XR_NO_PROTOTYPES -#ifdef XR_EXTENSION_PROTOTYPES -XRAPI_ATTR XrResult XRAPI_CALL xrEnumerateDisplayRefreshRatesFB( - XrSession session, - uint32_t displayRefreshRateCapacityInput, - uint32_t* displayRefreshRateCountOutput, - float* displayRefreshRates); - -XRAPI_ATTR XrResult XRAPI_CALL xrGetDisplayRefreshRateFB( - XrSession session, - float* displayRefreshRate); - -XRAPI_ATTR XrResult XRAPI_CALL xrRequestDisplayRefreshRateFB( - XrSession session, - float displayRefreshRate); -#endif /* XR_EXTENSION_PROTOTYPES */ -#endif /* !XR_NO_PROTOTYPES */ - - -// XR_HTC_vive_cosmos_controller_interaction is a preprocessor guard. Do not pass it to API calls. -#define XR_HTC_vive_cosmos_controller_interaction 1 -#define XR_HTC_vive_cosmos_controller_interaction_SPEC_VERSION 1 -#define XR_HTC_VIVE_COSMOS_CONTROLLER_INTERACTION_EXTENSION_NAME "XR_HTC_vive_cosmos_controller_interaction" - - -// XR_HTCX_vive_tracker_interaction is a preprocessor guard. Do not pass it to API calls. -#define XR_HTCX_vive_tracker_interaction 1 -#define XR_HTCX_vive_tracker_interaction_SPEC_VERSION 3 -#define XR_HTCX_VIVE_TRACKER_INTERACTION_EXTENSION_NAME "XR_HTCX_vive_tracker_interaction" -typedef struct XrViveTrackerPathsHTCX { - XrStructureType type; - void* XR_MAY_ALIAS next; - XrPath persistentPath; - XrPath rolePath; -} XrViveTrackerPathsHTCX; - -typedef struct XrEventDataViveTrackerConnectedHTCX { - XrStructureType type; - const void* XR_MAY_ALIAS next; - XrViveTrackerPathsHTCX* paths; -} XrEventDataViveTrackerConnectedHTCX; - -typedef XrResult (XRAPI_PTR *PFN_xrEnumerateViveTrackerPathsHTCX)(XrInstance instance, uint32_t pathCapacityInput, uint32_t* pathCountOutput, XrViveTrackerPathsHTCX* paths); - -#ifndef XR_NO_PROTOTYPES -#ifdef XR_EXTENSION_PROTOTYPES -XRAPI_ATTR XrResult XRAPI_CALL xrEnumerateViveTrackerPathsHTCX( - XrInstance instance, - uint32_t pathCapacityInput, - uint32_t* pathCountOutput, - XrViveTrackerPathsHTCX* paths); -#endif /* XR_EXTENSION_PROTOTYPES */ -#endif /* !XR_NO_PROTOTYPES */ - - -// XR_HTC_facial_tracking is a preprocessor guard. Do not pass it to API calls. -#define XR_HTC_facial_tracking 1 - -#define XR_FACIAL_EXPRESSION_EYE_COUNT_HTC 14 - - -#define XR_FACIAL_EXPRESSION_LIP_COUNT_HTC 37 - -XR_DEFINE_HANDLE(XrFacialTrackerHTC) -#define XR_HTC_facial_tracking_SPEC_VERSION 2 -#define XR_HTC_FACIAL_TRACKING_EXTENSION_NAME "XR_HTC_facial_tracking" - -typedef enum XrEyeExpressionHTC { - XR_EYE_EXPRESSION_LEFT_BLINK_HTC = 0, - XR_EYE_EXPRESSION_LEFT_WIDE_HTC = 1, - XR_EYE_EXPRESSION_RIGHT_BLINK_HTC = 2, - XR_EYE_EXPRESSION_RIGHT_WIDE_HTC = 3, - XR_EYE_EXPRESSION_LEFT_SQUEEZE_HTC = 4, - XR_EYE_EXPRESSION_RIGHT_SQUEEZE_HTC = 5, - XR_EYE_EXPRESSION_LEFT_DOWN_HTC = 6, - XR_EYE_EXPRESSION_RIGHT_DOWN_HTC = 7, - XR_EYE_EXPRESSION_LEFT_OUT_HTC = 8, - XR_EYE_EXPRESSION_RIGHT_IN_HTC = 9, - XR_EYE_EXPRESSION_LEFT_IN_HTC = 10, - XR_EYE_EXPRESSION_RIGHT_OUT_HTC = 11, - XR_EYE_EXPRESSION_LEFT_UP_HTC = 12, - XR_EYE_EXPRESSION_RIGHT_UP_HTC = 13, - XR_EYE_EXPRESSION_MAX_ENUM_HTC = 0x7FFFFFFF -} XrEyeExpressionHTC; - -typedef enum XrLipExpressionHTC { - XR_LIP_EXPRESSION_JAW_RIGHT_HTC = 0, - XR_LIP_EXPRESSION_JAW_LEFT_HTC = 1, - XR_LIP_EXPRESSION_JAW_FORWARD_HTC = 2, - XR_LIP_EXPRESSION_JAW_OPEN_HTC = 3, - XR_LIP_EXPRESSION_MOUTH_APE_SHAPE_HTC = 4, - XR_LIP_EXPRESSION_MOUTH_UPPER_RIGHT_HTC = 5, - XR_LIP_EXPRESSION_MOUTH_UPPER_LEFT_HTC = 6, - XR_LIP_EXPRESSION_MOUTH_LOWER_RIGHT_HTC = 7, - XR_LIP_EXPRESSION_MOUTH_LOWER_LEFT_HTC = 8, - XR_LIP_EXPRESSION_MOUTH_UPPER_OVERTURN_HTC = 9, - XR_LIP_EXPRESSION_MOUTH_LOWER_OVERTURN_HTC = 10, - XR_LIP_EXPRESSION_MOUTH_POUT_HTC = 11, - XR_LIP_EXPRESSION_MOUTH_SMILE_RIGHT_HTC = 12, - XR_LIP_EXPRESSION_MOUTH_SMILE_LEFT_HTC = 13, - XR_LIP_EXPRESSION_MOUTH_SAD_RIGHT_HTC = 14, - XR_LIP_EXPRESSION_MOUTH_SAD_LEFT_HTC = 15, - XR_LIP_EXPRESSION_CHEEK_PUFF_RIGHT_HTC = 16, - XR_LIP_EXPRESSION_CHEEK_PUFF_LEFT_HTC = 17, - XR_LIP_EXPRESSION_CHEEK_SUCK_HTC = 18, - XR_LIP_EXPRESSION_MOUTH_UPPER_UPRIGHT_HTC = 19, - XR_LIP_EXPRESSION_MOUTH_UPPER_UPLEFT_HTC = 20, - XR_LIP_EXPRESSION_MOUTH_LOWER_DOWNRIGHT_HTC = 21, - XR_LIP_EXPRESSION_MOUTH_LOWER_DOWNLEFT_HTC = 22, - XR_LIP_EXPRESSION_MOUTH_UPPER_INSIDE_HTC = 23, - XR_LIP_EXPRESSION_MOUTH_LOWER_INSIDE_HTC = 24, - XR_LIP_EXPRESSION_MOUTH_LOWER_OVERLAY_HTC = 25, - XR_LIP_EXPRESSION_TONGUE_LONGSTEP1_HTC = 26, - XR_LIP_EXPRESSION_TONGUE_LEFT_HTC = 27, - XR_LIP_EXPRESSION_TONGUE_RIGHT_HTC = 28, - XR_LIP_EXPRESSION_TONGUE_UP_HTC = 29, - XR_LIP_EXPRESSION_TONGUE_DOWN_HTC = 30, - XR_LIP_EXPRESSION_TONGUE_ROLL_HTC = 31, - XR_LIP_EXPRESSION_TONGUE_LONGSTEP2_HTC = 32, - XR_LIP_EXPRESSION_TONGUE_UPRIGHT_MORPH_HTC = 33, - XR_LIP_EXPRESSION_TONGUE_UPLEFT_MORPH_HTC = 34, - XR_LIP_EXPRESSION_TONGUE_DOWNRIGHT_MORPH_HTC = 35, - XR_LIP_EXPRESSION_TONGUE_DOWNLEFT_MORPH_HTC = 36, - XR_LIP_EXPRESSION_MAX_ENUM_HTC = 0x7FFFFFFF -} XrLipExpressionHTC; - -typedef enum XrFacialTrackingTypeHTC { - XR_FACIAL_TRACKING_TYPE_EYE_DEFAULT_HTC = 1, - XR_FACIAL_TRACKING_TYPE_LIP_DEFAULT_HTC = 2, - XR_FACIAL_TRACKING_TYPE_MAX_ENUM_HTC = 0x7FFFFFFF -} XrFacialTrackingTypeHTC; -// XrSystemFacialTrackingPropertiesHTC extends XrSystemProperties -typedef struct XrSystemFacialTrackingPropertiesHTC { - XrStructureType type; - void* XR_MAY_ALIAS next; - XrBool32 supportEyeFacialTracking; - XrBool32 supportLipFacialTracking; -} XrSystemFacialTrackingPropertiesHTC; - -typedef struct XrFacialExpressionsHTC { - XrStructureType type; - const void* XR_MAY_ALIAS next; - XrBool32 isActive; - XrTime sampleTime; - uint32_t expressionCount; - float* expressionWeightings; -} XrFacialExpressionsHTC; - -typedef struct XrFacialTrackerCreateInfoHTC { - XrStructureType type; - const void* XR_MAY_ALIAS next; - XrFacialTrackingTypeHTC facialTrackingType; -} XrFacialTrackerCreateInfoHTC; - -typedef XrResult (XRAPI_PTR *PFN_xrCreateFacialTrackerHTC)(XrSession session, const XrFacialTrackerCreateInfoHTC* createInfo, XrFacialTrackerHTC* facialTracker); -typedef XrResult (XRAPI_PTR *PFN_xrDestroyFacialTrackerHTC)(XrFacialTrackerHTC facialTracker); -typedef XrResult (XRAPI_PTR *PFN_xrGetFacialExpressionsHTC)(XrFacialTrackerHTC facialTracker, XrFacialExpressionsHTC* facialExpressions); - -#ifndef XR_NO_PROTOTYPES -#ifdef XR_EXTENSION_PROTOTYPES -XRAPI_ATTR XrResult XRAPI_CALL xrCreateFacialTrackerHTC( - XrSession session, - const XrFacialTrackerCreateInfoHTC* createInfo, - XrFacialTrackerHTC* facialTracker); - -XRAPI_ATTR XrResult XRAPI_CALL xrDestroyFacialTrackerHTC( - XrFacialTrackerHTC facialTracker); - -XRAPI_ATTR XrResult XRAPI_CALL xrGetFacialExpressionsHTC( - XrFacialTrackerHTC facialTracker, - XrFacialExpressionsHTC* facialExpressions); -#endif /* XR_EXTENSION_PROTOTYPES */ -#endif /* !XR_NO_PROTOTYPES */ - - -// XR_HTC_vive_focus3_controller_interaction is a preprocessor guard. Do not pass it to API calls. -#define XR_HTC_vive_focus3_controller_interaction 1 -#define XR_HTC_vive_focus3_controller_interaction_SPEC_VERSION 2 -#define XR_HTC_VIVE_FOCUS3_CONTROLLER_INTERACTION_EXTENSION_NAME "XR_HTC_vive_focus3_controller_interaction" - - -// XR_HTC_hand_interaction is a preprocessor guard. Do not pass it to API calls. -#define XR_HTC_hand_interaction 1 -#define XR_HTC_hand_interaction_SPEC_VERSION 1 -#define XR_HTC_HAND_INTERACTION_EXTENSION_NAME "XR_HTC_hand_interaction" - - -// XR_HTC_vive_wrist_tracker_interaction is a preprocessor guard. Do not pass it to API calls. -#define XR_HTC_vive_wrist_tracker_interaction 1 -#define XR_HTC_vive_wrist_tracker_interaction_SPEC_VERSION 1 -#define XR_HTC_VIVE_WRIST_TRACKER_INTERACTION_EXTENSION_NAME "XR_HTC_vive_wrist_tracker_interaction" - - -// XR_FB_color_space is a preprocessor guard. Do not pass it to API calls. -#define XR_FB_color_space 1 -#define XR_FB_color_space_SPEC_VERSION 3 -#define XR_FB_COLOR_SPACE_EXTENSION_NAME "XR_FB_color_space" - -typedef enum XrColorSpaceFB { - XR_COLOR_SPACE_UNMANAGED_FB = 0, - XR_COLOR_SPACE_REC2020_FB = 1, - XR_COLOR_SPACE_REC709_FB = 2, - XR_COLOR_SPACE_RIFT_CV1_FB = 3, - XR_COLOR_SPACE_RIFT_S_FB = 4, - XR_COLOR_SPACE_QUEST_FB = 5, - XR_COLOR_SPACE_P3_FB = 6, - XR_COLOR_SPACE_ADOBE_RGB_FB = 7, - XR_COLOR_SPACE_MAX_ENUM_FB = 0x7FFFFFFF -} XrColorSpaceFB; -// XrSystemColorSpacePropertiesFB extends XrSystemProperties -typedef struct XrSystemColorSpacePropertiesFB { - XrStructureType type; - void* XR_MAY_ALIAS next; - XrColorSpaceFB colorSpace; -} XrSystemColorSpacePropertiesFB; - -typedef XrResult (XRAPI_PTR *PFN_xrEnumerateColorSpacesFB)(XrSession session, uint32_t colorSpaceCapacityInput, uint32_t* colorSpaceCountOutput, XrColorSpaceFB* colorSpaces); -typedef XrResult (XRAPI_PTR *PFN_xrSetColorSpaceFB)(XrSession session, const XrColorSpaceFB colorSpace); - -#ifndef XR_NO_PROTOTYPES -#ifdef XR_EXTENSION_PROTOTYPES -XRAPI_ATTR XrResult XRAPI_CALL xrEnumerateColorSpacesFB( - XrSession session, - uint32_t colorSpaceCapacityInput, - uint32_t* colorSpaceCountOutput, - XrColorSpaceFB* colorSpaces); - -XRAPI_ATTR XrResult XRAPI_CALL xrSetColorSpaceFB( - XrSession session, - const XrColorSpaceFB colorSpace); -#endif /* XR_EXTENSION_PROTOTYPES */ -#endif /* !XR_NO_PROTOTYPES */ - - -// XR_FB_hand_tracking_mesh is a preprocessor guard. Do not pass it to API calls. -#define XR_FB_hand_tracking_mesh 1 -#define XR_FB_hand_tracking_mesh_SPEC_VERSION 3 -#define XR_FB_HAND_TRACKING_MESH_EXTENSION_NAME "XR_FB_hand_tracking_mesh" -typedef struct XrVector4sFB { - int16_t x; - int16_t y; - int16_t z; - int16_t w; -} XrVector4sFB; - -typedef struct XrHandTrackingMeshFB { - XrStructureType type; - void* XR_MAY_ALIAS next; - uint32_t jointCapacityInput; - uint32_t jointCountOutput; - XrPosef* jointBindPoses; - float* jointRadii; - XrHandJointEXT* jointParents; - uint32_t vertexCapacityInput; - uint32_t vertexCountOutput; - XrVector3f* vertexPositions; - XrVector3f* vertexNormals; - XrVector2f* vertexUVs; - XrVector4sFB* vertexBlendIndices; - XrVector4f* vertexBlendWeights; - uint32_t indexCapacityInput; - uint32_t indexCountOutput; - int16_t* indices; -} XrHandTrackingMeshFB; - -// XrHandTrackingScaleFB extends XrHandJointLocationsEXT -typedef struct XrHandTrackingScaleFB { - XrStructureType type; - void* XR_MAY_ALIAS next; - float sensorOutput; - float currentOutput; - XrBool32 overrideHandScale; - float overrideValueInput; -} XrHandTrackingScaleFB; - -typedef XrResult (XRAPI_PTR *PFN_xrGetHandMeshFB)(XrHandTrackerEXT handTracker, XrHandTrackingMeshFB* mesh); - -#ifndef XR_NO_PROTOTYPES -#ifdef XR_EXTENSION_PROTOTYPES -XRAPI_ATTR XrResult XRAPI_CALL xrGetHandMeshFB( - XrHandTrackerEXT handTracker, - XrHandTrackingMeshFB* mesh); -#endif /* XR_EXTENSION_PROTOTYPES */ -#endif /* !XR_NO_PROTOTYPES */ - - -// XR_FB_hand_tracking_aim is a preprocessor guard. Do not pass it to API calls. -#define XR_FB_hand_tracking_aim 1 -#define XR_FB_hand_tracking_aim_SPEC_VERSION 2 -#define XR_FB_HAND_TRACKING_AIM_EXTENSION_NAME "XR_FB_hand_tracking_aim" -typedef XrFlags64 XrHandTrackingAimFlagsFB; - -// Flag bits for XrHandTrackingAimFlagsFB -static const XrHandTrackingAimFlagsFB XR_HAND_TRACKING_AIM_COMPUTED_BIT_FB = 0x00000001; -static const XrHandTrackingAimFlagsFB XR_HAND_TRACKING_AIM_VALID_BIT_FB = 0x00000002; -static const XrHandTrackingAimFlagsFB XR_HAND_TRACKING_AIM_INDEX_PINCHING_BIT_FB = 0x00000004; -static const XrHandTrackingAimFlagsFB XR_HAND_TRACKING_AIM_MIDDLE_PINCHING_BIT_FB = 0x00000008; -static const XrHandTrackingAimFlagsFB XR_HAND_TRACKING_AIM_RING_PINCHING_BIT_FB = 0x00000010; -static const XrHandTrackingAimFlagsFB XR_HAND_TRACKING_AIM_LITTLE_PINCHING_BIT_FB = 0x00000020; -static const XrHandTrackingAimFlagsFB XR_HAND_TRACKING_AIM_SYSTEM_GESTURE_BIT_FB = 0x00000040; -static const XrHandTrackingAimFlagsFB XR_HAND_TRACKING_AIM_DOMINANT_HAND_BIT_FB = 0x00000080; -static const XrHandTrackingAimFlagsFB XR_HAND_TRACKING_AIM_MENU_PRESSED_BIT_FB = 0x00000100; - -// XrHandTrackingAimStateFB extends XrHandJointLocationsEXT -typedef struct XrHandTrackingAimStateFB { - XrStructureType type; - void* XR_MAY_ALIAS next; - XrHandTrackingAimFlagsFB status; - XrPosef aimPose; - float pinchStrengthIndex; - float pinchStrengthMiddle; - float pinchStrengthRing; - float pinchStrengthLittle; -} XrHandTrackingAimStateFB; - - - -// XR_FB_hand_tracking_capsules is a preprocessor guard. Do not pass it to API calls. -#define XR_FB_hand_tracking_capsules 1 -#define XR_HAND_TRACKING_CAPSULE_POINT_COUNT_FB 2 -#define XR_HAND_TRACKING_CAPSULE_COUNT_FB 19 -#define XR_FB_hand_tracking_capsules_SPEC_VERSION 3 -#define XR_FB_HAND_TRACKING_CAPSULES_EXTENSION_NAME "XR_FB_hand_tracking_capsules" -#define XR_FB_HAND_TRACKING_CAPSULE_POINT_COUNT XR_HAND_TRACKING_CAPSULE_POINT_COUNT_FB -#define XR_FB_HAND_TRACKING_CAPSULE_COUNT XR_HAND_TRACKING_CAPSULE_COUNT_FB -typedef struct XrHandCapsuleFB { - XrVector3f points[XR_HAND_TRACKING_CAPSULE_POINT_COUNT_FB]; - float radius; - XrHandJointEXT joint; -} XrHandCapsuleFB; - -// XrHandTrackingCapsulesStateFB extends XrHandJointLocationsEXT -typedef struct XrHandTrackingCapsulesStateFB { - XrStructureType type; - void* XR_MAY_ALIAS next; - XrHandCapsuleFB capsules[XR_HAND_TRACKING_CAPSULE_COUNT_FB]; -} XrHandTrackingCapsulesStateFB; - - - -// XR_FB_spatial_entity is a preprocessor guard. Do not pass it to API calls. -#define XR_FB_spatial_entity 1 -XR_DEFINE_ATOM(XrAsyncRequestIdFB) -#define XR_FB_spatial_entity_SPEC_VERSION 3 -#define XR_FB_SPATIAL_ENTITY_EXTENSION_NAME "XR_FB_spatial_entity" - -typedef enum XrSpaceComponentTypeFB { - XR_SPACE_COMPONENT_TYPE_LOCATABLE_FB = 0, - XR_SPACE_COMPONENT_TYPE_STORABLE_FB = 1, - XR_SPACE_COMPONENT_TYPE_SHARABLE_FB = 2, - XR_SPACE_COMPONENT_TYPE_BOUNDED_2D_FB = 3, - XR_SPACE_COMPONENT_TYPE_BOUNDED_3D_FB = 4, - XR_SPACE_COMPONENT_TYPE_SEMANTIC_LABELS_FB = 5, - XR_SPACE_COMPONENT_TYPE_ROOM_LAYOUT_FB = 6, - XR_SPACE_COMPONENT_TYPE_SPACE_CONTAINER_FB = 7, - XR_SPACE_COMPONENT_TYPE_TRIANGLE_MESH_META = 1000269000, - XR_SPACE_COMPONENT_TYPE_MAX_ENUM_FB = 0x7FFFFFFF -} XrSpaceComponentTypeFB; -// XrSystemSpatialEntityPropertiesFB extends XrSystemProperties -typedef struct XrSystemSpatialEntityPropertiesFB { - XrStructureType type; - const void* XR_MAY_ALIAS next; - XrBool32 supportsSpatialEntity; -} XrSystemSpatialEntityPropertiesFB; - -typedef struct XrSpatialAnchorCreateInfoFB { - XrStructureType type; - const void* XR_MAY_ALIAS next; - XrSpace space; - XrPosef poseInSpace; - XrTime time; -} XrSpatialAnchorCreateInfoFB; - -typedef struct XrSpaceComponentStatusSetInfoFB { - XrStructureType type; - const void* XR_MAY_ALIAS next; - XrSpaceComponentTypeFB componentType; - XrBool32 enabled; - XrDuration timeout; -} XrSpaceComponentStatusSetInfoFB; - -typedef struct XrSpaceComponentStatusFB { - XrStructureType type; - void* XR_MAY_ALIAS next; - XrBool32 enabled; - XrBool32 changePending; -} XrSpaceComponentStatusFB; - -typedef XrUuid XrUuidEXT; - -typedef struct XrEventDataSpatialAnchorCreateCompleteFB { - XrStructureType type; - const void* XR_MAY_ALIAS next; - XrAsyncRequestIdFB requestId; - XrResult result; - XrSpace space; - XrUuidEXT uuid; -} XrEventDataSpatialAnchorCreateCompleteFB; - -typedef struct XrEventDataSpaceSetStatusCompleteFB { - XrStructureType type; - const void* XR_MAY_ALIAS next; - XrAsyncRequestIdFB requestId; - XrResult result; - XrSpace space; - XrUuidEXT uuid; - XrSpaceComponentTypeFB componentType; - XrBool32 enabled; -} XrEventDataSpaceSetStatusCompleteFB; - -typedef XrResult (XRAPI_PTR *PFN_xrCreateSpatialAnchorFB)(XrSession session, const XrSpatialAnchorCreateInfoFB* info, XrAsyncRequestIdFB* requestId); -typedef XrResult (XRAPI_PTR *PFN_xrGetSpaceUuidFB)(XrSpace space, XrUuidEXT* uuid); -typedef XrResult (XRAPI_PTR *PFN_xrEnumerateSpaceSupportedComponentsFB)(XrSpace space, uint32_t componentTypeCapacityInput, uint32_t* componentTypeCountOutput, XrSpaceComponentTypeFB* componentTypes); -typedef XrResult (XRAPI_PTR *PFN_xrSetSpaceComponentStatusFB)(XrSpace space, const XrSpaceComponentStatusSetInfoFB* info, XrAsyncRequestIdFB* requestId); -typedef XrResult (XRAPI_PTR *PFN_xrGetSpaceComponentStatusFB)(XrSpace space, XrSpaceComponentTypeFB componentType, XrSpaceComponentStatusFB* status); - -#ifndef XR_NO_PROTOTYPES -#ifdef XR_EXTENSION_PROTOTYPES -XRAPI_ATTR XrResult XRAPI_CALL xrCreateSpatialAnchorFB( - XrSession session, - const XrSpatialAnchorCreateInfoFB* info, - XrAsyncRequestIdFB* requestId); - -XRAPI_ATTR XrResult XRAPI_CALL xrGetSpaceUuidFB( - XrSpace space, - XrUuidEXT* uuid); - -XRAPI_ATTR XrResult XRAPI_CALL xrEnumerateSpaceSupportedComponentsFB( - XrSpace space, - uint32_t componentTypeCapacityInput, - uint32_t* componentTypeCountOutput, - XrSpaceComponentTypeFB* componentTypes); - -XRAPI_ATTR XrResult XRAPI_CALL xrSetSpaceComponentStatusFB( - XrSpace space, - const XrSpaceComponentStatusSetInfoFB* info, - XrAsyncRequestIdFB* requestId); - -XRAPI_ATTR XrResult XRAPI_CALL xrGetSpaceComponentStatusFB( - XrSpace space, - XrSpaceComponentTypeFB componentType, - XrSpaceComponentStatusFB* status); -#endif /* XR_EXTENSION_PROTOTYPES */ -#endif /* !XR_NO_PROTOTYPES */ - - -// XR_FB_foveation is a preprocessor guard. Do not pass it to API calls. -#define XR_FB_foveation 1 -XR_DEFINE_HANDLE(XrFoveationProfileFB) -#define XR_FB_foveation_SPEC_VERSION 1 -#define XR_FB_FOVEATION_EXTENSION_NAME "XR_FB_foveation" -typedef XrFlags64 XrSwapchainCreateFoveationFlagsFB; - -// Flag bits for XrSwapchainCreateFoveationFlagsFB -static const XrSwapchainCreateFoveationFlagsFB XR_SWAPCHAIN_CREATE_FOVEATION_SCALED_BIN_BIT_FB = 0x00000001; -static const XrSwapchainCreateFoveationFlagsFB XR_SWAPCHAIN_CREATE_FOVEATION_FRAGMENT_DENSITY_MAP_BIT_FB = 0x00000002; - -typedef XrFlags64 XrSwapchainStateFoveationFlagsFB; - -// Flag bits for XrSwapchainStateFoveationFlagsFB - -typedef struct XrFoveationProfileCreateInfoFB { - XrStructureType type; - void* XR_MAY_ALIAS next; -} XrFoveationProfileCreateInfoFB; - -// XrSwapchainCreateInfoFoveationFB extends XrSwapchainCreateInfo -typedef struct XrSwapchainCreateInfoFoveationFB { - XrStructureType type; - void* XR_MAY_ALIAS next; - XrSwapchainCreateFoveationFlagsFB flags; -} XrSwapchainCreateInfoFoveationFB; - -typedef struct XrSwapchainStateFoveationFB { - XrStructureType type; - void* XR_MAY_ALIAS next; - XrSwapchainStateFoveationFlagsFB flags; - XrFoveationProfileFB profile; -} XrSwapchainStateFoveationFB; - -typedef XrResult (XRAPI_PTR *PFN_xrCreateFoveationProfileFB)(XrSession session, const XrFoveationProfileCreateInfoFB* createInfo, XrFoveationProfileFB* profile); -typedef XrResult (XRAPI_PTR *PFN_xrDestroyFoveationProfileFB)(XrFoveationProfileFB profile); - -#ifndef XR_NO_PROTOTYPES -#ifdef XR_EXTENSION_PROTOTYPES -XRAPI_ATTR XrResult XRAPI_CALL xrCreateFoveationProfileFB( - XrSession session, - const XrFoveationProfileCreateInfoFB* createInfo, - XrFoveationProfileFB* profile); - -XRAPI_ATTR XrResult XRAPI_CALL xrDestroyFoveationProfileFB( - XrFoveationProfileFB profile); -#endif /* XR_EXTENSION_PROTOTYPES */ -#endif /* !XR_NO_PROTOTYPES */ - - -// XR_FB_foveation_configuration is a preprocessor guard. Do not pass it to API calls. -#define XR_FB_foveation_configuration 1 -#define XR_FB_foveation_configuration_SPEC_VERSION 1 -#define XR_FB_FOVEATION_CONFIGURATION_EXTENSION_NAME "XR_FB_foveation_configuration" - -typedef enum XrFoveationLevelFB { - XR_FOVEATION_LEVEL_NONE_FB = 0, - XR_FOVEATION_LEVEL_LOW_FB = 1, - XR_FOVEATION_LEVEL_MEDIUM_FB = 2, - XR_FOVEATION_LEVEL_HIGH_FB = 3, - XR_FOVEATION_LEVEL_MAX_ENUM_FB = 0x7FFFFFFF -} XrFoveationLevelFB; - -typedef enum XrFoveationDynamicFB { - XR_FOVEATION_DYNAMIC_DISABLED_FB = 0, - XR_FOVEATION_DYNAMIC_LEVEL_ENABLED_FB = 1, - XR_FOVEATION_DYNAMIC_MAX_ENUM_FB = 0x7FFFFFFF -} XrFoveationDynamicFB; -// XrFoveationLevelProfileCreateInfoFB extends XrFoveationProfileCreateInfoFB -typedef struct XrFoveationLevelProfileCreateInfoFB { - XrStructureType type; - void* XR_MAY_ALIAS next; - XrFoveationLevelFB level; - float verticalOffset; - XrFoveationDynamicFB dynamic; -} XrFoveationLevelProfileCreateInfoFB; - - - -// XR_FB_keyboard_tracking is a preprocessor guard. Do not pass it to API calls. -#define XR_FB_keyboard_tracking 1 -#define XR_MAX_KEYBOARD_TRACKING_NAME_SIZE_FB 128 -#define XR_FB_keyboard_tracking_SPEC_VERSION 1 -#define XR_FB_KEYBOARD_TRACKING_EXTENSION_NAME "XR_FB_keyboard_tracking" -typedef XrFlags64 XrKeyboardTrackingFlagsFB; - -// Flag bits for XrKeyboardTrackingFlagsFB -static const XrKeyboardTrackingFlagsFB XR_KEYBOARD_TRACKING_EXISTS_BIT_FB = 0x00000001; -static const XrKeyboardTrackingFlagsFB XR_KEYBOARD_TRACKING_LOCAL_BIT_FB = 0x00000002; -static const XrKeyboardTrackingFlagsFB XR_KEYBOARD_TRACKING_REMOTE_BIT_FB = 0x00000004; -static const XrKeyboardTrackingFlagsFB XR_KEYBOARD_TRACKING_CONNECTED_BIT_FB = 0x00000008; - -typedef XrFlags64 XrKeyboardTrackingQueryFlagsFB; - -// Flag bits for XrKeyboardTrackingQueryFlagsFB -static const XrKeyboardTrackingQueryFlagsFB XR_KEYBOARD_TRACKING_QUERY_LOCAL_BIT_FB = 0x00000002; -static const XrKeyboardTrackingQueryFlagsFB XR_KEYBOARD_TRACKING_QUERY_REMOTE_BIT_FB = 0x00000004; - -// XrSystemKeyboardTrackingPropertiesFB extends XrSystemProperties -typedef struct XrSystemKeyboardTrackingPropertiesFB { - XrStructureType type; - void* XR_MAY_ALIAS next; - XrBool32 supportsKeyboardTracking; -} XrSystemKeyboardTrackingPropertiesFB; - -typedef struct XrKeyboardTrackingDescriptionFB { - uint64_t trackedKeyboardId; - XrVector3f size; - XrKeyboardTrackingFlagsFB flags; - char name[XR_MAX_KEYBOARD_TRACKING_NAME_SIZE_FB]; -} XrKeyboardTrackingDescriptionFB; - -typedef struct XrKeyboardSpaceCreateInfoFB { - XrStructureType type; - void* XR_MAY_ALIAS next; - uint64_t trackedKeyboardId; -} XrKeyboardSpaceCreateInfoFB; - -typedef struct XrKeyboardTrackingQueryFB { - XrStructureType type; - void* XR_MAY_ALIAS next; - XrKeyboardTrackingQueryFlagsFB flags; -} XrKeyboardTrackingQueryFB; - -typedef XrResult (XRAPI_PTR *PFN_xrQuerySystemTrackedKeyboardFB)(XrSession session, const XrKeyboardTrackingQueryFB* queryInfo, XrKeyboardTrackingDescriptionFB* keyboard); -typedef XrResult (XRAPI_PTR *PFN_xrCreateKeyboardSpaceFB)(XrSession session, const XrKeyboardSpaceCreateInfoFB* createInfo, XrSpace* keyboardSpace); - -#ifndef XR_NO_PROTOTYPES -#ifdef XR_EXTENSION_PROTOTYPES -XRAPI_ATTR XrResult XRAPI_CALL xrQuerySystemTrackedKeyboardFB( - XrSession session, - const XrKeyboardTrackingQueryFB* queryInfo, - XrKeyboardTrackingDescriptionFB* keyboard); - -XRAPI_ATTR XrResult XRAPI_CALL xrCreateKeyboardSpaceFB( - XrSession session, - const XrKeyboardSpaceCreateInfoFB* createInfo, - XrSpace* keyboardSpace); -#endif /* XR_EXTENSION_PROTOTYPES */ -#endif /* !XR_NO_PROTOTYPES */ - - -// XR_FB_triangle_mesh is a preprocessor guard. Do not pass it to API calls. -#define XR_FB_triangle_mesh 1 -XR_DEFINE_HANDLE(XrTriangleMeshFB) -#define XR_FB_triangle_mesh_SPEC_VERSION 2 -#define XR_FB_TRIANGLE_MESH_EXTENSION_NAME "XR_FB_triangle_mesh" - -typedef enum XrWindingOrderFB { - XR_WINDING_ORDER_UNKNOWN_FB = 0, - XR_WINDING_ORDER_CW_FB = 1, - XR_WINDING_ORDER_CCW_FB = 2, - XR_WINDING_ORDER_MAX_ENUM_FB = 0x7FFFFFFF -} XrWindingOrderFB; -typedef XrFlags64 XrTriangleMeshFlagsFB; - -// Flag bits for XrTriangleMeshFlagsFB -static const XrTriangleMeshFlagsFB XR_TRIANGLE_MESH_MUTABLE_BIT_FB = 0x00000001; - -typedef struct XrTriangleMeshCreateInfoFB { - XrStructureType type; - const void* XR_MAY_ALIAS next; - XrTriangleMeshFlagsFB flags; - XrWindingOrderFB windingOrder; - uint32_t vertexCount; - const XrVector3f* vertexBuffer; - uint32_t triangleCount; - const uint32_t* indexBuffer; -} XrTriangleMeshCreateInfoFB; - -typedef XrResult (XRAPI_PTR *PFN_xrCreateTriangleMeshFB)(XrSession session, const XrTriangleMeshCreateInfoFB* createInfo, XrTriangleMeshFB* outTriangleMesh); -typedef XrResult (XRAPI_PTR *PFN_xrDestroyTriangleMeshFB)(XrTriangleMeshFB mesh); -typedef XrResult (XRAPI_PTR *PFN_xrTriangleMeshGetVertexBufferFB)(XrTriangleMeshFB mesh, XrVector3f** outVertexBuffer); -typedef XrResult (XRAPI_PTR *PFN_xrTriangleMeshGetIndexBufferFB)(XrTriangleMeshFB mesh, uint32_t** outIndexBuffer); -typedef XrResult (XRAPI_PTR *PFN_xrTriangleMeshBeginUpdateFB)(XrTriangleMeshFB mesh); -typedef XrResult (XRAPI_PTR *PFN_xrTriangleMeshEndUpdateFB)(XrTriangleMeshFB mesh, uint32_t vertexCount, uint32_t triangleCount); -typedef XrResult (XRAPI_PTR *PFN_xrTriangleMeshBeginVertexBufferUpdateFB)(XrTriangleMeshFB mesh, uint32_t* outVertexCount); -typedef XrResult (XRAPI_PTR *PFN_xrTriangleMeshEndVertexBufferUpdateFB)(XrTriangleMeshFB mesh); - -#ifndef XR_NO_PROTOTYPES -#ifdef XR_EXTENSION_PROTOTYPES -XRAPI_ATTR XrResult XRAPI_CALL xrCreateTriangleMeshFB( - XrSession session, - const XrTriangleMeshCreateInfoFB* createInfo, - XrTriangleMeshFB* outTriangleMesh); - -XRAPI_ATTR XrResult XRAPI_CALL xrDestroyTriangleMeshFB( - XrTriangleMeshFB mesh); - -XRAPI_ATTR XrResult XRAPI_CALL xrTriangleMeshGetVertexBufferFB( - XrTriangleMeshFB mesh, - XrVector3f** outVertexBuffer); - -XRAPI_ATTR XrResult XRAPI_CALL xrTriangleMeshGetIndexBufferFB( - XrTriangleMeshFB mesh, - uint32_t** outIndexBuffer); - -XRAPI_ATTR XrResult XRAPI_CALL xrTriangleMeshBeginUpdateFB( - XrTriangleMeshFB mesh); - -XRAPI_ATTR XrResult XRAPI_CALL xrTriangleMeshEndUpdateFB( - XrTriangleMeshFB mesh, - uint32_t vertexCount, - uint32_t triangleCount); - -XRAPI_ATTR XrResult XRAPI_CALL xrTriangleMeshBeginVertexBufferUpdateFB( - XrTriangleMeshFB mesh, - uint32_t* outVertexCount); - -XRAPI_ATTR XrResult XRAPI_CALL xrTriangleMeshEndVertexBufferUpdateFB( - XrTriangleMeshFB mesh); -#endif /* XR_EXTENSION_PROTOTYPES */ -#endif /* !XR_NO_PROTOTYPES */ - - -// XR_FB_passthrough is a preprocessor guard. Do not pass it to API calls. -#define XR_FB_passthrough 1 -XR_DEFINE_HANDLE(XrPassthroughFB) -XR_DEFINE_HANDLE(XrPassthroughLayerFB) -XR_DEFINE_HANDLE(XrGeometryInstanceFB) -#define XR_PASSTHROUGH_COLOR_MAP_MONO_SIZE_FB 256 -#define XR_FB_passthrough_SPEC_VERSION 3 -#define XR_FB_PASSTHROUGH_EXTENSION_NAME "XR_FB_passthrough" - -typedef enum XrPassthroughLayerPurposeFB { - XR_PASSTHROUGH_LAYER_PURPOSE_RECONSTRUCTION_FB = 0, - XR_PASSTHROUGH_LAYER_PURPOSE_PROJECTED_FB = 1, - XR_PASSTHROUGH_LAYER_PURPOSE_TRACKED_KEYBOARD_HANDS_FB = 1000203001, - XR_PASSTHROUGH_LAYER_PURPOSE_TRACKED_KEYBOARD_MASKED_HANDS_FB = 1000203002, - XR_PASSTHROUGH_LAYER_PURPOSE_MAX_ENUM_FB = 0x7FFFFFFF -} XrPassthroughLayerPurposeFB; -typedef XrFlags64 XrPassthroughCapabilityFlagsFB; - -// Flag bits for XrPassthroughCapabilityFlagsFB -static const XrPassthroughCapabilityFlagsFB XR_PASSTHROUGH_CAPABILITY_BIT_FB = 0x00000001; -static const XrPassthroughCapabilityFlagsFB XR_PASSTHROUGH_CAPABILITY_COLOR_BIT_FB = 0x00000002; -static const XrPassthroughCapabilityFlagsFB XR_PASSTHROUGH_CAPABILITY_LAYER_DEPTH_BIT_FB = 0x00000004; - -typedef XrFlags64 XrPassthroughFlagsFB; - -// Flag bits for XrPassthroughFlagsFB -static const XrPassthroughFlagsFB XR_PASSTHROUGH_IS_RUNNING_AT_CREATION_BIT_FB = 0x00000001; -static const XrPassthroughFlagsFB XR_PASSTHROUGH_LAYER_DEPTH_BIT_FB = 0x00000002; - -typedef XrFlags64 XrPassthroughStateChangedFlagsFB; - -// Flag bits for XrPassthroughStateChangedFlagsFB -static const XrPassthroughStateChangedFlagsFB XR_PASSTHROUGH_STATE_CHANGED_REINIT_REQUIRED_BIT_FB = 0x00000001; -static const XrPassthroughStateChangedFlagsFB XR_PASSTHROUGH_STATE_CHANGED_NON_RECOVERABLE_ERROR_BIT_FB = 0x00000002; -static const XrPassthroughStateChangedFlagsFB XR_PASSTHROUGH_STATE_CHANGED_RECOVERABLE_ERROR_BIT_FB = 0x00000004; -static const XrPassthroughStateChangedFlagsFB XR_PASSTHROUGH_STATE_CHANGED_RESTORED_ERROR_BIT_FB = 0x00000008; - -// XrSystemPassthroughPropertiesFB extends XrSystemProperties -typedef struct XrSystemPassthroughPropertiesFB { - XrStructureType type; - const void* XR_MAY_ALIAS next; - XrBool32 supportsPassthrough; -} XrSystemPassthroughPropertiesFB; - -// XrSystemPassthroughProperties2FB extends XrSystemProperties -typedef struct XrSystemPassthroughProperties2FB { - XrStructureType type; - const void* XR_MAY_ALIAS next; - XrPassthroughCapabilityFlagsFB capabilities; -} XrSystemPassthroughProperties2FB; - -typedef struct XrPassthroughCreateInfoFB { - XrStructureType type; - const void* XR_MAY_ALIAS next; - XrPassthroughFlagsFB flags; -} XrPassthroughCreateInfoFB; - -typedef struct XrPassthroughLayerCreateInfoFB { - XrStructureType type; - const void* XR_MAY_ALIAS next; - XrPassthroughFB passthrough; - XrPassthroughFlagsFB flags; - XrPassthroughLayerPurposeFB purpose; -} XrPassthroughLayerCreateInfoFB; - -// XrCompositionLayerPassthroughFB extends XrCompositionLayerBaseHeader -typedef struct XrCompositionLayerPassthroughFB { - XrStructureType type; - const void* XR_MAY_ALIAS next; - XrCompositionLayerFlags flags; - XrSpace space; - XrPassthroughLayerFB layerHandle; -} XrCompositionLayerPassthroughFB; - -typedef struct XrGeometryInstanceCreateInfoFB { - XrStructureType type; - const void* XR_MAY_ALIAS next; - XrPassthroughLayerFB layer; - XrTriangleMeshFB mesh; - XrSpace baseSpace; - XrPosef pose; - XrVector3f scale; -} XrGeometryInstanceCreateInfoFB; - -typedef struct XrGeometryInstanceTransformFB { - XrStructureType type; - const void* XR_MAY_ALIAS next; - XrSpace baseSpace; - XrTime time; - XrPosef pose; - XrVector3f scale; -} XrGeometryInstanceTransformFB; - -typedef struct XrPassthroughStyleFB { - XrStructureType type; - const void* XR_MAY_ALIAS next; - float textureOpacityFactor; - XrColor4f edgeColor; -} XrPassthroughStyleFB; - -// XrPassthroughColorMapMonoToRgbaFB extends XrPassthroughStyleFB -typedef struct XrPassthroughColorMapMonoToRgbaFB { - XrStructureType type; - const void* XR_MAY_ALIAS next; - XrColor4f textureColorMap[XR_PASSTHROUGH_COLOR_MAP_MONO_SIZE_FB]; -} XrPassthroughColorMapMonoToRgbaFB; - -// XrPassthroughColorMapMonoToMonoFB extends XrPassthroughStyleFB -typedef struct XrPassthroughColorMapMonoToMonoFB { - XrStructureType type; - const void* XR_MAY_ALIAS next; - uint8_t textureColorMap[XR_PASSTHROUGH_COLOR_MAP_MONO_SIZE_FB]; -} XrPassthroughColorMapMonoToMonoFB; - -// XrPassthroughBrightnessContrastSaturationFB extends XrPassthroughStyleFB -typedef struct XrPassthroughBrightnessContrastSaturationFB { - XrStructureType type; - const void* XR_MAY_ALIAS next; - float brightness; - float contrast; - float saturation; -} XrPassthroughBrightnessContrastSaturationFB; - -typedef struct XrEventDataPassthroughStateChangedFB { - XrStructureType type; - const void* XR_MAY_ALIAS next; - XrPassthroughStateChangedFlagsFB flags; -} XrEventDataPassthroughStateChangedFB; - -typedef XrResult (XRAPI_PTR *PFN_xrCreatePassthroughFB)(XrSession session, const XrPassthroughCreateInfoFB* createInfo, XrPassthroughFB* outPassthrough); -typedef XrResult (XRAPI_PTR *PFN_xrDestroyPassthroughFB)(XrPassthroughFB passthrough); -typedef XrResult (XRAPI_PTR *PFN_xrPassthroughStartFB)(XrPassthroughFB passthrough); -typedef XrResult (XRAPI_PTR *PFN_xrPassthroughPauseFB)(XrPassthroughFB passthrough); -typedef XrResult (XRAPI_PTR *PFN_xrCreatePassthroughLayerFB)(XrSession session, const XrPassthroughLayerCreateInfoFB* createInfo, XrPassthroughLayerFB* outLayer); -typedef XrResult (XRAPI_PTR *PFN_xrDestroyPassthroughLayerFB)(XrPassthroughLayerFB layer); -typedef XrResult (XRAPI_PTR *PFN_xrPassthroughLayerPauseFB)(XrPassthroughLayerFB layer); -typedef XrResult (XRAPI_PTR *PFN_xrPassthroughLayerResumeFB)(XrPassthroughLayerFB layer); -typedef XrResult (XRAPI_PTR *PFN_xrPassthroughLayerSetStyleFB)(XrPassthroughLayerFB layer, const XrPassthroughStyleFB* style); -typedef XrResult (XRAPI_PTR *PFN_xrCreateGeometryInstanceFB)(XrSession session, const XrGeometryInstanceCreateInfoFB* createInfo, XrGeometryInstanceFB* outGeometryInstance); -typedef XrResult (XRAPI_PTR *PFN_xrDestroyGeometryInstanceFB)(XrGeometryInstanceFB instance); -typedef XrResult (XRAPI_PTR *PFN_xrGeometryInstanceSetTransformFB)(XrGeometryInstanceFB instance, const XrGeometryInstanceTransformFB* transformation); - -#ifndef XR_NO_PROTOTYPES -#ifdef XR_EXTENSION_PROTOTYPES -XRAPI_ATTR XrResult XRAPI_CALL xrCreatePassthroughFB( - XrSession session, - const XrPassthroughCreateInfoFB* createInfo, - XrPassthroughFB* outPassthrough); - -XRAPI_ATTR XrResult XRAPI_CALL xrDestroyPassthroughFB( - XrPassthroughFB passthrough); - -XRAPI_ATTR XrResult XRAPI_CALL xrPassthroughStartFB( - XrPassthroughFB passthrough); - -XRAPI_ATTR XrResult XRAPI_CALL xrPassthroughPauseFB( - XrPassthroughFB passthrough); - -XRAPI_ATTR XrResult XRAPI_CALL xrCreatePassthroughLayerFB( - XrSession session, - const XrPassthroughLayerCreateInfoFB* createInfo, - XrPassthroughLayerFB* outLayer); - -XRAPI_ATTR XrResult XRAPI_CALL xrDestroyPassthroughLayerFB( - XrPassthroughLayerFB layer); - -XRAPI_ATTR XrResult XRAPI_CALL xrPassthroughLayerPauseFB( - XrPassthroughLayerFB layer); - -XRAPI_ATTR XrResult XRAPI_CALL xrPassthroughLayerResumeFB( - XrPassthroughLayerFB layer); - -XRAPI_ATTR XrResult XRAPI_CALL xrPassthroughLayerSetStyleFB( - XrPassthroughLayerFB layer, - const XrPassthroughStyleFB* style); - -XRAPI_ATTR XrResult XRAPI_CALL xrCreateGeometryInstanceFB( - XrSession session, - const XrGeometryInstanceCreateInfoFB* createInfo, - XrGeometryInstanceFB* outGeometryInstance); - -XRAPI_ATTR XrResult XRAPI_CALL xrDestroyGeometryInstanceFB( - XrGeometryInstanceFB instance); - -XRAPI_ATTR XrResult XRAPI_CALL xrGeometryInstanceSetTransformFB( - XrGeometryInstanceFB instance, - const XrGeometryInstanceTransformFB* transformation); -#endif /* XR_EXTENSION_PROTOTYPES */ -#endif /* !XR_NO_PROTOTYPES */ - - -// XR_FB_render_model is a preprocessor guard. Do not pass it to API calls. -#define XR_FB_render_model 1 - -#define XR_NULL_RENDER_MODEL_KEY_FB 0 - -XR_DEFINE_ATOM(XrRenderModelKeyFB) -#define XR_MAX_RENDER_MODEL_NAME_SIZE_FB 64 -#define XR_FB_render_model_SPEC_VERSION 4 -#define XR_FB_RENDER_MODEL_EXTENSION_NAME "XR_FB_render_model" -typedef XrFlags64 XrRenderModelFlagsFB; - -// Flag bits for XrRenderModelFlagsFB -static const XrRenderModelFlagsFB XR_RENDER_MODEL_SUPPORTS_GLTF_2_0_SUBSET_1_BIT_FB = 0x00000001; -static const XrRenderModelFlagsFB XR_RENDER_MODEL_SUPPORTS_GLTF_2_0_SUBSET_2_BIT_FB = 0x00000002; - -typedef struct XrRenderModelPathInfoFB { - XrStructureType type; - void* XR_MAY_ALIAS next; - XrPath path; -} XrRenderModelPathInfoFB; - -typedef struct XrRenderModelPropertiesFB { - XrStructureType type; - void* XR_MAY_ALIAS next; - uint32_t vendorId; - char modelName[XR_MAX_RENDER_MODEL_NAME_SIZE_FB]; - XrRenderModelKeyFB modelKey; - uint32_t modelVersion; - XrRenderModelFlagsFB flags; -} XrRenderModelPropertiesFB; - -typedef struct XrRenderModelBufferFB { - XrStructureType type; - void* XR_MAY_ALIAS next; - uint32_t bufferCapacityInput; - uint32_t bufferCountOutput; - uint8_t* buffer; -} XrRenderModelBufferFB; - -typedef struct XrRenderModelLoadInfoFB { - XrStructureType type; - void* XR_MAY_ALIAS next; - XrRenderModelKeyFB modelKey; -} XrRenderModelLoadInfoFB; - -// XrSystemRenderModelPropertiesFB extends XrSystemProperties -typedef struct XrSystemRenderModelPropertiesFB { - XrStructureType type; - void* XR_MAY_ALIAS next; - XrBool32 supportsRenderModelLoading; -} XrSystemRenderModelPropertiesFB; - -// XrRenderModelCapabilitiesRequestFB extends XrRenderModelPropertiesFB -typedef struct XrRenderModelCapabilitiesRequestFB { - XrStructureType type; - void* XR_MAY_ALIAS next; - XrRenderModelFlagsFB flags; -} XrRenderModelCapabilitiesRequestFB; - -typedef XrResult (XRAPI_PTR *PFN_xrEnumerateRenderModelPathsFB)(XrSession session, uint32_t pathCapacityInput, uint32_t* pathCountOutput, XrRenderModelPathInfoFB* paths); -typedef XrResult (XRAPI_PTR *PFN_xrGetRenderModelPropertiesFB)(XrSession session, XrPath path, XrRenderModelPropertiesFB* properties); -typedef XrResult (XRAPI_PTR *PFN_xrLoadRenderModelFB)(XrSession session, const XrRenderModelLoadInfoFB* info, XrRenderModelBufferFB* buffer); - -#ifndef XR_NO_PROTOTYPES -#ifdef XR_EXTENSION_PROTOTYPES -XRAPI_ATTR XrResult XRAPI_CALL xrEnumerateRenderModelPathsFB( - XrSession session, - uint32_t pathCapacityInput, - uint32_t* pathCountOutput, - XrRenderModelPathInfoFB* paths); - -XRAPI_ATTR XrResult XRAPI_CALL xrGetRenderModelPropertiesFB( - XrSession session, - XrPath path, - XrRenderModelPropertiesFB* properties); - -XRAPI_ATTR XrResult XRAPI_CALL xrLoadRenderModelFB( - XrSession session, - const XrRenderModelLoadInfoFB* info, - XrRenderModelBufferFB* buffer); -#endif /* XR_EXTENSION_PROTOTYPES */ -#endif /* !XR_NO_PROTOTYPES */ - - -// XR_VARJO_foveated_rendering is a preprocessor guard. Do not pass it to API calls. -#define XR_VARJO_foveated_rendering 1 -#define XR_VARJO_foveated_rendering_SPEC_VERSION 3 -#define XR_VARJO_FOVEATED_RENDERING_EXTENSION_NAME "XR_VARJO_foveated_rendering" -// XrViewLocateFoveatedRenderingVARJO extends XrViewLocateInfo -typedef struct XrViewLocateFoveatedRenderingVARJO { - XrStructureType type; - const void* XR_MAY_ALIAS next; - XrBool32 foveatedRenderingActive; -} XrViewLocateFoveatedRenderingVARJO; - -// XrFoveatedViewConfigurationViewVARJO extends XrViewConfigurationView -typedef struct XrFoveatedViewConfigurationViewVARJO { - XrStructureType type; - void* XR_MAY_ALIAS next; - XrBool32 foveatedRenderingActive; -} XrFoveatedViewConfigurationViewVARJO; - -// XrSystemFoveatedRenderingPropertiesVARJO extends XrSystemProperties -typedef struct XrSystemFoveatedRenderingPropertiesVARJO { - XrStructureType type; - void* XR_MAY_ALIAS next; - XrBool32 supportsFoveatedRendering; -} XrSystemFoveatedRenderingPropertiesVARJO; - - - -// XR_VARJO_composition_layer_depth_test is a preprocessor guard. Do not pass it to API calls. -#define XR_VARJO_composition_layer_depth_test 1 -#define XR_VARJO_composition_layer_depth_test_SPEC_VERSION 2 -#define XR_VARJO_COMPOSITION_LAYER_DEPTH_TEST_EXTENSION_NAME "XR_VARJO_composition_layer_depth_test" -// XrCompositionLayerDepthTestVARJO extends XrCompositionLayerProjection -typedef struct XrCompositionLayerDepthTestVARJO { - XrStructureType type; - const void* XR_MAY_ALIAS next; - float depthTestRangeNearZ; - float depthTestRangeFarZ; -} XrCompositionLayerDepthTestVARJO; - - - -// XR_VARJO_environment_depth_estimation is a preprocessor guard. Do not pass it to API calls. -#define XR_VARJO_environment_depth_estimation 1 -#define XR_VARJO_environment_depth_estimation_SPEC_VERSION 1 -#define XR_VARJO_ENVIRONMENT_DEPTH_ESTIMATION_EXTENSION_NAME "XR_VARJO_environment_depth_estimation" -typedef XrResult (XRAPI_PTR *PFN_xrSetEnvironmentDepthEstimationVARJO)(XrSession session, XrBool32 enabled); - -#ifndef XR_NO_PROTOTYPES -#ifdef XR_EXTENSION_PROTOTYPES -XRAPI_ATTR XrResult XRAPI_CALL xrSetEnvironmentDepthEstimationVARJO( - XrSession session, - XrBool32 enabled); -#endif /* XR_EXTENSION_PROTOTYPES */ -#endif /* !XR_NO_PROTOTYPES */ - - -// XR_VARJO_marker_tracking is a preprocessor guard. Do not pass it to API calls. -#define XR_VARJO_marker_tracking 1 -#define XR_VARJO_marker_tracking_SPEC_VERSION 1 -#define XR_VARJO_MARKER_TRACKING_EXTENSION_NAME "XR_VARJO_marker_tracking" -// XrSystemMarkerTrackingPropertiesVARJO extends XrSystemProperties -typedef struct XrSystemMarkerTrackingPropertiesVARJO { - XrStructureType type; - void* XR_MAY_ALIAS next; - XrBool32 supportsMarkerTracking; -} XrSystemMarkerTrackingPropertiesVARJO; - -typedef struct XrEventDataMarkerTrackingUpdateVARJO { - XrStructureType type; - const void* XR_MAY_ALIAS next; - uint64_t markerId; - XrBool32 isActive; - XrBool32 isPredicted; - XrTime time; -} XrEventDataMarkerTrackingUpdateVARJO; - -typedef struct XrMarkerSpaceCreateInfoVARJO { - XrStructureType type; - const void* XR_MAY_ALIAS next; - uint64_t markerId; - XrPosef poseInMarkerSpace; -} XrMarkerSpaceCreateInfoVARJO; - -typedef XrResult (XRAPI_PTR *PFN_xrSetMarkerTrackingVARJO)(XrSession session, XrBool32 enabled); -typedef XrResult (XRAPI_PTR *PFN_xrSetMarkerTrackingTimeoutVARJO)(XrSession session, uint64_t markerId, XrDuration timeout); -typedef XrResult (XRAPI_PTR *PFN_xrSetMarkerTrackingPredictionVARJO)(XrSession session, uint64_t markerId, XrBool32 enable); -typedef XrResult (XRAPI_PTR *PFN_xrGetMarkerSizeVARJO)(XrSession session, uint64_t markerId, XrExtent2Df* size); -typedef XrResult (XRAPI_PTR *PFN_xrCreateMarkerSpaceVARJO)(XrSession session, const XrMarkerSpaceCreateInfoVARJO* createInfo, XrSpace* space); - -#ifndef XR_NO_PROTOTYPES -#ifdef XR_EXTENSION_PROTOTYPES -XRAPI_ATTR XrResult XRAPI_CALL xrSetMarkerTrackingVARJO( - XrSession session, - XrBool32 enabled); - -XRAPI_ATTR XrResult XRAPI_CALL xrSetMarkerTrackingTimeoutVARJO( - XrSession session, - uint64_t markerId, - XrDuration timeout); - -XRAPI_ATTR XrResult XRAPI_CALL xrSetMarkerTrackingPredictionVARJO( - XrSession session, - uint64_t markerId, - XrBool32 enable); - -XRAPI_ATTR XrResult XRAPI_CALL xrGetMarkerSizeVARJO( - XrSession session, - uint64_t markerId, - XrExtent2Df* size); - -XRAPI_ATTR XrResult XRAPI_CALL xrCreateMarkerSpaceVARJO( - XrSession session, - const XrMarkerSpaceCreateInfoVARJO* createInfo, - XrSpace* space); -#endif /* XR_EXTENSION_PROTOTYPES */ -#endif /* !XR_NO_PROTOTYPES */ - - -// XR_VARJO_view_offset is a preprocessor guard. Do not pass it to API calls. -#define XR_VARJO_view_offset 1 -#define XR_VARJO_view_offset_SPEC_VERSION 1 -#define XR_VARJO_VIEW_OFFSET_EXTENSION_NAME "XR_VARJO_view_offset" -typedef XrResult (XRAPI_PTR *PFN_xrSetViewOffsetVARJO)(XrSession session, float offset); - -#ifndef XR_NO_PROTOTYPES -#ifdef XR_EXTENSION_PROTOTYPES -XRAPI_ATTR XrResult XRAPI_CALL xrSetViewOffsetVARJO( - XrSession session, - float offset); -#endif /* XR_EXTENSION_PROTOTYPES */ -#endif /* !XR_NO_PROTOTYPES */ - - -// XR_VARJO_xr4_controller_interaction is a preprocessor guard. Do not pass it to API calls. -#define XR_VARJO_xr4_controller_interaction 1 -#define XR_VARJO_xr4_controller_interaction_SPEC_VERSION 1 -#define XR_VARJO_XR4_CONTROLLER_INTERACTION_EXTENSION_NAME "XR_VARJO_xr4_controller_interaction" - - -// XR_ML_ml2_controller_interaction is a preprocessor guard. Do not pass it to API calls. -#define XR_ML_ml2_controller_interaction 1 -#define XR_ML_ml2_controller_interaction_SPEC_VERSION 1 -#define XR_ML_ML2_CONTROLLER_INTERACTION_EXTENSION_NAME "XR_ML_ml2_controller_interaction" - - -// XR_ML_frame_end_info is a preprocessor guard. Do not pass it to API calls. -#define XR_ML_frame_end_info 1 -#define XR_ML_frame_end_info_SPEC_VERSION 1 -#define XR_ML_FRAME_END_INFO_EXTENSION_NAME "XR_ML_frame_end_info" -typedef XrFlags64 XrFrameEndInfoFlagsML; - -// Flag bits for XrFrameEndInfoFlagsML -static const XrFrameEndInfoFlagsML XR_FRAME_END_INFO_PROTECTED_BIT_ML = 0x00000001; -static const XrFrameEndInfoFlagsML XR_FRAME_END_INFO_VIGNETTE_BIT_ML = 0x00000002; - -// XrFrameEndInfoML extends XrFrameEndInfo -typedef struct XrFrameEndInfoML { - XrStructureType type; - const void* XR_MAY_ALIAS next; - float focusDistance; - XrFrameEndInfoFlagsML flags; -} XrFrameEndInfoML; - - - -// XR_ML_global_dimmer is a preprocessor guard. Do not pass it to API calls. -#define XR_ML_global_dimmer 1 -#define XR_ML_global_dimmer_SPEC_VERSION 1 -#define XR_ML_GLOBAL_DIMMER_EXTENSION_NAME "XR_ML_global_dimmer" -typedef XrFlags64 XrGlobalDimmerFrameEndInfoFlagsML; - -// Flag bits for XrGlobalDimmerFrameEndInfoFlagsML -static const XrGlobalDimmerFrameEndInfoFlagsML XR_GLOBAL_DIMMER_FRAME_END_INFO_ENABLED_BIT_ML = 0x00000001; - -// XrGlobalDimmerFrameEndInfoML extends XrFrameEndInfo -typedef struct XrGlobalDimmerFrameEndInfoML { - XrStructureType type; - const void* XR_MAY_ALIAS next; - float dimmerValue; - XrGlobalDimmerFrameEndInfoFlagsML flags; -} XrGlobalDimmerFrameEndInfoML; - - - -// XR_ML_marker_understanding is a preprocessor guard. Do not pass it to API calls. -#define XR_ML_marker_understanding 1 -XR_DEFINE_ATOM(XrMarkerML) -XR_DEFINE_HANDLE(XrMarkerDetectorML) -#define XR_ML_marker_understanding_SPEC_VERSION 1 -#define XR_ML_MARKER_UNDERSTANDING_EXTENSION_NAME "XR_ML_marker_understanding" - -typedef enum XrMarkerDetectorProfileML { - XR_MARKER_DETECTOR_PROFILE_DEFAULT_ML = 0, - XR_MARKER_DETECTOR_PROFILE_SPEED_ML = 1, - XR_MARKER_DETECTOR_PROFILE_ACCURACY_ML = 2, - XR_MARKER_DETECTOR_PROFILE_SMALL_TARGETS_ML = 3, - XR_MARKER_DETECTOR_PROFILE_LARGE_FOV_ML = 4, - XR_MARKER_DETECTOR_PROFILE_CUSTOM_ML = 5, - XR_MARKER_DETECTOR_PROFILE_MAX_ENUM_ML = 0x7FFFFFFF -} XrMarkerDetectorProfileML; - -typedef enum XrMarkerTypeML { - XR_MARKER_TYPE_ARUCO_ML = 0, - XR_MARKER_TYPE_APRIL_TAG_ML = 1, - XR_MARKER_TYPE_QR_ML = 2, - XR_MARKER_TYPE_EAN_13_ML = 3, - XR_MARKER_TYPE_UPC_A_ML = 4, - XR_MARKER_TYPE_CODE_128_ML = 5, - XR_MARKER_TYPE_MAX_ENUM_ML = 0x7FFFFFFF -} XrMarkerTypeML; - -typedef enum XrMarkerArucoDictML { - XR_MARKER_ARUCO_DICT_4X4_50_ML = 0, - XR_MARKER_ARUCO_DICT_4X4_100_ML = 1, - XR_MARKER_ARUCO_DICT_4X4_250_ML = 2, - XR_MARKER_ARUCO_DICT_4X4_1000_ML = 3, - XR_MARKER_ARUCO_DICT_5X5_50_ML = 4, - XR_MARKER_ARUCO_DICT_5X5_100_ML = 5, - XR_MARKER_ARUCO_DICT_5X5_250_ML = 6, - XR_MARKER_ARUCO_DICT_5X5_1000_ML = 7, - XR_MARKER_ARUCO_DICT_6X6_50_ML = 8, - XR_MARKER_ARUCO_DICT_6X6_100_ML = 9, - XR_MARKER_ARUCO_DICT_6X6_250_ML = 10, - XR_MARKER_ARUCO_DICT_6X6_1000_ML = 11, - XR_MARKER_ARUCO_DICT_7X7_50_ML = 12, - XR_MARKER_ARUCO_DICT_7X7_100_ML = 13, - XR_MARKER_ARUCO_DICT_7X7_250_ML = 14, - XR_MARKER_ARUCO_DICT_7X7_1000_ML = 15, - XR_MARKER_ARUCO_DICT_MAX_ENUM_ML = 0x7FFFFFFF -} XrMarkerArucoDictML; - -typedef enum XrMarkerAprilTagDictML { - XR_MARKER_APRIL_TAG_DICT_16H5_ML = 0, - XR_MARKER_APRIL_TAG_DICT_25H9_ML = 1, - XR_MARKER_APRIL_TAG_DICT_36H10_ML = 2, - XR_MARKER_APRIL_TAG_DICT_36H11_ML = 3, - XR_MARKER_APRIL_TAG_DICT_MAX_ENUM_ML = 0x7FFFFFFF -} XrMarkerAprilTagDictML; - -typedef enum XrMarkerDetectorFpsML { - XR_MARKER_DETECTOR_FPS_LOW_ML = 0, - XR_MARKER_DETECTOR_FPS_MEDIUM_ML = 1, - XR_MARKER_DETECTOR_FPS_HIGH_ML = 2, - XR_MARKER_DETECTOR_FPS_MAX_ML = 3, - XR_MARKER_DETECTOR_FPS_MAX_ENUM_ML = 0x7FFFFFFF -} XrMarkerDetectorFpsML; - -typedef enum XrMarkerDetectorResolutionML { - XR_MARKER_DETECTOR_RESOLUTION_LOW_ML = 0, - XR_MARKER_DETECTOR_RESOLUTION_MEDIUM_ML = 1, - XR_MARKER_DETECTOR_RESOLUTION_HIGH_ML = 2, - XR_MARKER_DETECTOR_RESOLUTION_MAX_ENUM_ML = 0x7FFFFFFF -} XrMarkerDetectorResolutionML; - -typedef enum XrMarkerDetectorCameraML { - XR_MARKER_DETECTOR_CAMERA_RGB_CAMERA_ML = 0, - XR_MARKER_DETECTOR_CAMERA_WORLD_CAMERAS_ML = 1, - XR_MARKER_DETECTOR_CAMERA_MAX_ENUM_ML = 0x7FFFFFFF -} XrMarkerDetectorCameraML; - -typedef enum XrMarkerDetectorCornerRefineMethodML { - XR_MARKER_DETECTOR_CORNER_REFINE_METHOD_NONE_ML = 0, - XR_MARKER_DETECTOR_CORNER_REFINE_METHOD_SUBPIX_ML = 1, - XR_MARKER_DETECTOR_CORNER_REFINE_METHOD_CONTOUR_ML = 2, - XR_MARKER_DETECTOR_CORNER_REFINE_METHOD_APRIL_TAG_ML = 3, - XR_MARKER_DETECTOR_CORNER_REFINE_METHOD_MAX_ENUM_ML = 0x7FFFFFFF -} XrMarkerDetectorCornerRefineMethodML; - -typedef enum XrMarkerDetectorFullAnalysisIntervalML { - XR_MARKER_DETECTOR_FULL_ANALYSIS_INTERVAL_MAX_ML = 0, - XR_MARKER_DETECTOR_FULL_ANALYSIS_INTERVAL_FAST_ML = 1, - XR_MARKER_DETECTOR_FULL_ANALYSIS_INTERVAL_MEDIUM_ML = 2, - XR_MARKER_DETECTOR_FULL_ANALYSIS_INTERVAL_SLOW_ML = 3, - XR_MARKER_DETECTOR_FULL_ANALYSIS_INTERVAL_MAX_ENUM_ML = 0x7FFFFFFF -} XrMarkerDetectorFullAnalysisIntervalML; - -typedef enum XrMarkerDetectorStatusML { - XR_MARKER_DETECTOR_STATUS_PENDING_ML = 0, - XR_MARKER_DETECTOR_STATUS_READY_ML = 1, - XR_MARKER_DETECTOR_STATUS_ERROR_ML = 2, - XR_MARKER_DETECTOR_STATUS_MAX_ENUM_ML = 0x7FFFFFFF -} XrMarkerDetectorStatusML; -// XrSystemMarkerUnderstandingPropertiesML extends XrSystemProperties -typedef struct XrSystemMarkerUnderstandingPropertiesML { - XrStructureType type; - void* XR_MAY_ALIAS next; - XrBool32 supportsMarkerUnderstanding; -} XrSystemMarkerUnderstandingPropertiesML; - -typedef struct XrMarkerDetectorCreateInfoML { - XrStructureType type; - const void* XR_MAY_ALIAS next; - XrMarkerDetectorProfileML profile; - XrMarkerTypeML markerType; -} XrMarkerDetectorCreateInfoML; - -// XrMarkerDetectorArucoInfoML extends XrMarkerDetectorCreateInfoML -typedef struct XrMarkerDetectorArucoInfoML { - XrStructureType type; - const void* XR_MAY_ALIAS next; - XrMarkerArucoDictML arucoDict; -} XrMarkerDetectorArucoInfoML; - -// XrMarkerDetectorSizeInfoML extends XrMarkerDetectorCreateInfoML -typedef struct XrMarkerDetectorSizeInfoML { - XrStructureType type; - const void* XR_MAY_ALIAS next; - float markerLength; -} XrMarkerDetectorSizeInfoML; - -// XrMarkerDetectorAprilTagInfoML extends XrMarkerDetectorCreateInfoML -typedef struct XrMarkerDetectorAprilTagInfoML { - XrStructureType type; - const void* XR_MAY_ALIAS next; - XrMarkerAprilTagDictML aprilTagDict; -} XrMarkerDetectorAprilTagInfoML; - -// XrMarkerDetectorCustomProfileInfoML extends XrMarkerDetectorCreateInfoML -typedef struct XrMarkerDetectorCustomProfileInfoML { - XrStructureType type; - const void* XR_MAY_ALIAS next; - XrMarkerDetectorFpsML fpsHint; - XrMarkerDetectorResolutionML resolutionHint; - XrMarkerDetectorCameraML cameraHint; - XrMarkerDetectorCornerRefineMethodML cornerRefineMethod; - XrBool32 useEdgeRefinement; - XrMarkerDetectorFullAnalysisIntervalML fullAnalysisIntervalHint; -} XrMarkerDetectorCustomProfileInfoML; - -typedef struct XrMarkerDetectorSnapshotInfoML { - XrStructureType type; - const void* XR_MAY_ALIAS next; -} XrMarkerDetectorSnapshotInfoML; - -typedef struct XrMarkerDetectorStateML { - XrStructureType type; - void* XR_MAY_ALIAS next; - XrMarkerDetectorStatusML state; -} XrMarkerDetectorStateML; - -typedef struct XrMarkerSpaceCreateInfoML { - XrStructureType type; - const void* XR_MAY_ALIAS next; - XrMarkerDetectorML markerDetector; - XrMarkerML marker; - XrPosef poseInMarkerSpace; -} XrMarkerSpaceCreateInfoML; - -typedef XrResult (XRAPI_PTR *PFN_xrCreateMarkerDetectorML)(XrSession session, const XrMarkerDetectorCreateInfoML* createInfo, XrMarkerDetectorML* markerDetector); -typedef XrResult (XRAPI_PTR *PFN_xrDestroyMarkerDetectorML)(XrMarkerDetectorML markerDetector); -typedef XrResult (XRAPI_PTR *PFN_xrSnapshotMarkerDetectorML)(XrMarkerDetectorML markerDetector, XrMarkerDetectorSnapshotInfoML* snapshotInfo); -typedef XrResult (XRAPI_PTR *PFN_xrGetMarkerDetectorStateML)(XrMarkerDetectorML markerDetector, XrMarkerDetectorStateML* state); -typedef XrResult (XRAPI_PTR *PFN_xrGetMarkersML)(XrMarkerDetectorML markerDetector, uint32_t markerCapacityInput, uint32_t* markerCountOutput, XrMarkerML* markers); -typedef XrResult (XRAPI_PTR *PFN_xrGetMarkerReprojectionErrorML)(XrMarkerDetectorML markerDetector, XrMarkerML marker, float* reprojectionErrorMeters); -typedef XrResult (XRAPI_PTR *PFN_xrGetMarkerLengthML)(XrMarkerDetectorML markerDetector, XrMarkerML marker, float* meters); -typedef XrResult (XRAPI_PTR *PFN_xrGetMarkerNumberML)(XrMarkerDetectorML markerDetector, XrMarkerML marker, uint64_t* number); -typedef XrResult (XRAPI_PTR *PFN_xrGetMarkerStringML)(XrMarkerDetectorML markerDetector, XrMarkerML marker, uint32_t bufferCapacityInput, uint32_t* bufferCountOutput, char* buffer); -typedef XrResult (XRAPI_PTR *PFN_xrCreateMarkerSpaceML)(XrSession session, const XrMarkerSpaceCreateInfoML* createInfo, XrSpace* space); - -#ifndef XR_NO_PROTOTYPES -#ifdef XR_EXTENSION_PROTOTYPES -XRAPI_ATTR XrResult XRAPI_CALL xrCreateMarkerDetectorML( - XrSession session, - const XrMarkerDetectorCreateInfoML* createInfo, - XrMarkerDetectorML* markerDetector); - -XRAPI_ATTR XrResult XRAPI_CALL xrDestroyMarkerDetectorML( - XrMarkerDetectorML markerDetector); - -XRAPI_ATTR XrResult XRAPI_CALL xrSnapshotMarkerDetectorML( - XrMarkerDetectorML markerDetector, - XrMarkerDetectorSnapshotInfoML* snapshotInfo); - -XRAPI_ATTR XrResult XRAPI_CALL xrGetMarkerDetectorStateML( - XrMarkerDetectorML markerDetector, - XrMarkerDetectorStateML* state); - -XRAPI_ATTR XrResult XRAPI_CALL xrGetMarkersML( - XrMarkerDetectorML markerDetector, - uint32_t markerCapacityInput, - uint32_t* markerCountOutput, - XrMarkerML* markers); - -XRAPI_ATTR XrResult XRAPI_CALL xrGetMarkerReprojectionErrorML( - XrMarkerDetectorML markerDetector, - XrMarkerML marker, - float* reprojectionErrorMeters); - -XRAPI_ATTR XrResult XRAPI_CALL xrGetMarkerLengthML( - XrMarkerDetectorML markerDetector, - XrMarkerML marker, - float* meters); - -XRAPI_ATTR XrResult XRAPI_CALL xrGetMarkerNumberML( - XrMarkerDetectorML markerDetector, - XrMarkerML marker, - uint64_t* number); - -XRAPI_ATTR XrResult XRAPI_CALL xrGetMarkerStringML( - XrMarkerDetectorML markerDetector, - XrMarkerML marker, - uint32_t bufferCapacityInput, - uint32_t* bufferCountOutput, - char* buffer); - -XRAPI_ATTR XrResult XRAPI_CALL xrCreateMarkerSpaceML( - XrSession session, - const XrMarkerSpaceCreateInfoML* createInfo, - XrSpace* space); -#endif /* XR_EXTENSION_PROTOTYPES */ -#endif /* !XR_NO_PROTOTYPES */ - - -// XR_ML_localization_map is a preprocessor guard. Do not pass it to API calls. -#define XR_ML_localization_map 1 -XR_DEFINE_HANDLE(XrExportedLocalizationMapML) -#define XR_MAX_LOCALIZATION_MAP_NAME_LENGTH_ML 64 -#define XR_ML_localization_map_SPEC_VERSION 1 -#define XR_ML_LOCALIZATION_MAP_EXTENSION_NAME "XR_ML_localization_map" - -typedef enum XrLocalizationMapStateML { - XR_LOCALIZATION_MAP_STATE_NOT_LOCALIZED_ML = 0, - XR_LOCALIZATION_MAP_STATE_LOCALIZED_ML = 1, - XR_LOCALIZATION_MAP_STATE_LOCALIZATION_PENDING_ML = 2, - XR_LOCALIZATION_MAP_STATE_LOCALIZATION_SLEEPING_BEFORE_RETRY_ML = 3, - XR_LOCALIZATION_MAP_STATE_MAX_ENUM_ML = 0x7FFFFFFF -} XrLocalizationMapStateML; - -typedef enum XrLocalizationMapTypeML { - XR_LOCALIZATION_MAP_TYPE_ON_DEVICE_ML = 0, - XR_LOCALIZATION_MAP_TYPE_CLOUD_ML = 1, - XR_LOCALIZATION_MAP_TYPE_MAX_ENUM_ML = 0x7FFFFFFF -} XrLocalizationMapTypeML; - -typedef enum XrLocalizationMapConfidenceML { - XR_LOCALIZATION_MAP_CONFIDENCE_POOR_ML = 0, - XR_LOCALIZATION_MAP_CONFIDENCE_FAIR_ML = 1, - XR_LOCALIZATION_MAP_CONFIDENCE_GOOD_ML = 2, - XR_LOCALIZATION_MAP_CONFIDENCE_EXCELLENT_ML = 3, - XR_LOCALIZATION_MAP_CONFIDENCE_MAX_ENUM_ML = 0x7FFFFFFF -} XrLocalizationMapConfidenceML; -typedef XrFlags64 XrLocalizationMapErrorFlagsML; - -// Flag bits for XrLocalizationMapErrorFlagsML -static const XrLocalizationMapErrorFlagsML XR_LOCALIZATION_MAP_ERROR_UNKNOWN_BIT_ML = 0x00000001; -static const XrLocalizationMapErrorFlagsML XR_LOCALIZATION_MAP_ERROR_OUT_OF_MAPPED_AREA_BIT_ML = 0x00000002; -static const XrLocalizationMapErrorFlagsML XR_LOCALIZATION_MAP_ERROR_LOW_FEATURE_COUNT_BIT_ML = 0x00000004; -static const XrLocalizationMapErrorFlagsML XR_LOCALIZATION_MAP_ERROR_EXCESSIVE_MOTION_BIT_ML = 0x00000008; -static const XrLocalizationMapErrorFlagsML XR_LOCALIZATION_MAP_ERROR_LOW_LIGHT_BIT_ML = 0x00000010; -static const XrLocalizationMapErrorFlagsML XR_LOCALIZATION_MAP_ERROR_HEADPOSE_BIT_ML = 0x00000020; - -typedef struct XrLocalizationMapML { - XrStructureType type; - void* XR_MAY_ALIAS next; - char name[XR_MAX_LOCALIZATION_MAP_NAME_LENGTH_ML]; - XrUuidEXT mapUuid; - XrLocalizationMapTypeML mapType; -} XrLocalizationMapML; - -typedef struct XrEventDataLocalizationChangedML { - XrStructureType type; - const void* XR_MAY_ALIAS next; - XrSession session; - XrLocalizationMapStateML state; - XrLocalizationMapML map; - XrLocalizationMapConfidenceML confidence; - XrLocalizationMapErrorFlagsML errorFlags; -} XrEventDataLocalizationChangedML; - -typedef struct XrLocalizationMapQueryInfoBaseHeaderML { - XrStructureType type; - const void* XR_MAY_ALIAS next; -} XrLocalizationMapQueryInfoBaseHeaderML; - -typedef struct XrMapLocalizationRequestInfoML { - XrStructureType type; - const void* XR_MAY_ALIAS next; - XrUuidEXT mapUuid; -} XrMapLocalizationRequestInfoML; - -typedef struct XrLocalizationMapImportInfoML { - XrStructureType type; - const void* XR_MAY_ALIAS next; - uint32_t size; - char* data; -} XrLocalizationMapImportInfoML; - -typedef struct XrLocalizationEnableEventsInfoML { - XrStructureType type; - const void* XR_MAY_ALIAS next; - XrBool32 enabled; -} XrLocalizationEnableEventsInfoML; - -typedef XrResult (XRAPI_PTR *PFN_xrEnableLocalizationEventsML)(XrSession session, const XrLocalizationEnableEventsInfoML * info); -typedef XrResult (XRAPI_PTR *PFN_xrQueryLocalizationMapsML)(XrSession session, const XrLocalizationMapQueryInfoBaseHeaderML* queryInfo, uint32_t mapCapacityInput, uint32_t * mapCountOutput, XrLocalizationMapML* maps); -typedef XrResult (XRAPI_PTR *PFN_xrRequestMapLocalizationML)(XrSession session, const XrMapLocalizationRequestInfoML* requestInfo); -typedef XrResult (XRAPI_PTR *PFN_xrImportLocalizationMapML)(XrSession session, const XrLocalizationMapImportInfoML* importInfo, XrUuidEXT* mapUuid); -typedef XrResult (XRAPI_PTR *PFN_xrCreateExportedLocalizationMapML)(XrSession session, const XrUuidEXT* mapUuid, XrExportedLocalizationMapML* map); -typedef XrResult (XRAPI_PTR *PFN_xrDestroyExportedLocalizationMapML)(XrExportedLocalizationMapML map); -typedef XrResult (XRAPI_PTR *PFN_xrGetExportedLocalizationMapDataML)(XrExportedLocalizationMapML map, uint32_t bufferCapacityInput, uint32_t* bufferCountOutput, char* buffer); - -#ifndef XR_NO_PROTOTYPES -#ifdef XR_EXTENSION_PROTOTYPES -XRAPI_ATTR XrResult XRAPI_CALL xrEnableLocalizationEventsML( - XrSession session, - const XrLocalizationEnableEventsInfoML * info); - -XRAPI_ATTR XrResult XRAPI_CALL xrQueryLocalizationMapsML( - XrSession session, - const XrLocalizationMapQueryInfoBaseHeaderML* queryInfo, - uint32_t mapCapacityInput, - uint32_t * mapCountOutput, - XrLocalizationMapML* maps); - -XRAPI_ATTR XrResult XRAPI_CALL xrRequestMapLocalizationML( - XrSession session, - const XrMapLocalizationRequestInfoML* requestInfo); - -XRAPI_ATTR XrResult XRAPI_CALL xrImportLocalizationMapML( - XrSession session, - const XrLocalizationMapImportInfoML* importInfo, - XrUuidEXT* mapUuid); - -XRAPI_ATTR XrResult XRAPI_CALL xrCreateExportedLocalizationMapML( - XrSession session, - const XrUuidEXT* mapUuid, - XrExportedLocalizationMapML* map); - -XRAPI_ATTR XrResult XRAPI_CALL xrDestroyExportedLocalizationMapML( - XrExportedLocalizationMapML map); - -XRAPI_ATTR XrResult XRAPI_CALL xrGetExportedLocalizationMapDataML( - XrExportedLocalizationMapML map, - uint32_t bufferCapacityInput, - uint32_t* bufferCountOutput, - char* buffer); -#endif /* XR_EXTENSION_PROTOTYPES */ -#endif /* !XR_NO_PROTOTYPES */ - - -// XR_MSFT_spatial_anchor_persistence is a preprocessor guard. Do not pass it to API calls. -#define XR_MSFT_spatial_anchor_persistence 1 -XR_DEFINE_HANDLE(XrSpatialAnchorStoreConnectionMSFT) -#define XR_MAX_SPATIAL_ANCHOR_NAME_SIZE_MSFT 256 -#define XR_MSFT_spatial_anchor_persistence_SPEC_VERSION 2 -#define XR_MSFT_SPATIAL_ANCHOR_PERSISTENCE_EXTENSION_NAME "XR_MSFT_spatial_anchor_persistence" -typedef struct XrSpatialAnchorPersistenceNameMSFT { - char name[XR_MAX_SPATIAL_ANCHOR_NAME_SIZE_MSFT]; -} XrSpatialAnchorPersistenceNameMSFT; - -typedef struct XrSpatialAnchorPersistenceInfoMSFT { - XrStructureType type; - const void* XR_MAY_ALIAS next; - XrSpatialAnchorPersistenceNameMSFT spatialAnchorPersistenceName; - XrSpatialAnchorMSFT spatialAnchor; -} XrSpatialAnchorPersistenceInfoMSFT; - -typedef struct XrSpatialAnchorFromPersistedAnchorCreateInfoMSFT { - XrStructureType type; - const void* XR_MAY_ALIAS next; - XrSpatialAnchorStoreConnectionMSFT spatialAnchorStore; - XrSpatialAnchorPersistenceNameMSFT spatialAnchorPersistenceName; -} XrSpatialAnchorFromPersistedAnchorCreateInfoMSFT; - -typedef XrResult (XRAPI_PTR *PFN_xrCreateSpatialAnchorStoreConnectionMSFT)(XrSession session, XrSpatialAnchorStoreConnectionMSFT* spatialAnchorStore); -typedef XrResult (XRAPI_PTR *PFN_xrDestroySpatialAnchorStoreConnectionMSFT)(XrSpatialAnchorStoreConnectionMSFT spatialAnchorStore); -typedef XrResult (XRAPI_PTR *PFN_xrPersistSpatialAnchorMSFT)(XrSpatialAnchorStoreConnectionMSFT spatialAnchorStore, const XrSpatialAnchorPersistenceInfoMSFT* spatialAnchorPersistenceInfo); -typedef XrResult (XRAPI_PTR *PFN_xrEnumeratePersistedSpatialAnchorNamesMSFT)(XrSpatialAnchorStoreConnectionMSFT spatialAnchorStore, uint32_t spatialAnchorNameCapacityInput, uint32_t* spatialAnchorNameCountOutput, XrSpatialAnchorPersistenceNameMSFT* spatialAnchorNames); -typedef XrResult (XRAPI_PTR *PFN_xrCreateSpatialAnchorFromPersistedNameMSFT)(XrSession session, const XrSpatialAnchorFromPersistedAnchorCreateInfoMSFT* spatialAnchorCreateInfo, XrSpatialAnchorMSFT* spatialAnchor); -typedef XrResult (XRAPI_PTR *PFN_xrUnpersistSpatialAnchorMSFT)(XrSpatialAnchorStoreConnectionMSFT spatialAnchorStore, const XrSpatialAnchorPersistenceNameMSFT* spatialAnchorPersistenceName); -typedef XrResult (XRAPI_PTR *PFN_xrClearSpatialAnchorStoreMSFT)(XrSpatialAnchorStoreConnectionMSFT spatialAnchorStore); - -#ifndef XR_NO_PROTOTYPES -#ifdef XR_EXTENSION_PROTOTYPES -XRAPI_ATTR XrResult XRAPI_CALL xrCreateSpatialAnchorStoreConnectionMSFT( - XrSession session, - XrSpatialAnchorStoreConnectionMSFT* spatialAnchorStore); - -XRAPI_ATTR XrResult XRAPI_CALL xrDestroySpatialAnchorStoreConnectionMSFT( - XrSpatialAnchorStoreConnectionMSFT spatialAnchorStore); - -XRAPI_ATTR XrResult XRAPI_CALL xrPersistSpatialAnchorMSFT( - XrSpatialAnchorStoreConnectionMSFT spatialAnchorStore, - const XrSpatialAnchorPersistenceInfoMSFT* spatialAnchorPersistenceInfo); - -XRAPI_ATTR XrResult XRAPI_CALL xrEnumeratePersistedSpatialAnchorNamesMSFT( - XrSpatialAnchorStoreConnectionMSFT spatialAnchorStore, - uint32_t spatialAnchorNameCapacityInput, - uint32_t* spatialAnchorNameCountOutput, - XrSpatialAnchorPersistenceNameMSFT* spatialAnchorNames); - -XRAPI_ATTR XrResult XRAPI_CALL xrCreateSpatialAnchorFromPersistedNameMSFT( - XrSession session, - const XrSpatialAnchorFromPersistedAnchorCreateInfoMSFT* spatialAnchorCreateInfo, - XrSpatialAnchorMSFT* spatialAnchor); - -XRAPI_ATTR XrResult XRAPI_CALL xrUnpersistSpatialAnchorMSFT( - XrSpatialAnchorStoreConnectionMSFT spatialAnchorStore, - const XrSpatialAnchorPersistenceNameMSFT* spatialAnchorPersistenceName); - -XRAPI_ATTR XrResult XRAPI_CALL xrClearSpatialAnchorStoreMSFT( - XrSpatialAnchorStoreConnectionMSFT spatialAnchorStore); -#endif /* XR_EXTENSION_PROTOTYPES */ -#endif /* !XR_NO_PROTOTYPES */ - - -// XR_MSFT_scene_marker is a preprocessor guard. Do not pass it to API calls. -#define XR_MSFT_scene_marker 1 -#define XR_MSFT_scene_marker_SPEC_VERSION 1 -#define XR_MSFT_SCENE_MARKER_EXTENSION_NAME "XR_MSFT_scene_marker" - -typedef enum XrSceneMarkerTypeMSFT { - XR_SCENE_MARKER_TYPE_QR_CODE_MSFT = 1, - XR_SCENE_MARKER_TYPE_MAX_ENUM_MSFT = 0x7FFFFFFF -} XrSceneMarkerTypeMSFT; - -typedef enum XrSceneMarkerQRCodeSymbolTypeMSFT { - XR_SCENE_MARKER_QR_CODE_SYMBOL_TYPE_QR_CODE_MSFT = 1, - XR_SCENE_MARKER_QR_CODE_SYMBOL_TYPE_MICRO_QR_CODE_MSFT = 2, - XR_SCENE_MARKER_QRCODE_SYMBOL_TYPE_MAX_ENUM_MSFT = 0x7FFFFFFF -} XrSceneMarkerQRCodeSymbolTypeMSFT; -typedef struct XrSceneMarkerMSFT { - XrSceneMarkerTypeMSFT markerType; - XrTime lastSeenTime; - XrOffset2Df center; - XrExtent2Df size; -} XrSceneMarkerMSFT; - -// XrSceneMarkersMSFT extends XrSceneComponentsMSFT -typedef struct XrSceneMarkersMSFT { - XrStructureType type; - const void* XR_MAY_ALIAS next; - uint32_t sceneMarkerCapacityInput; - XrSceneMarkerMSFT* sceneMarkers; -} XrSceneMarkersMSFT; - -// XrSceneMarkerTypeFilterMSFT extends XrSceneComponentsGetInfoMSFT -typedef struct XrSceneMarkerTypeFilterMSFT { - XrStructureType type; - const void* XR_MAY_ALIAS next; - uint32_t markerTypeCount; - XrSceneMarkerTypeMSFT* markerTypes; -} XrSceneMarkerTypeFilterMSFT; - -typedef struct XrSceneMarkerQRCodeMSFT { - XrSceneMarkerQRCodeSymbolTypeMSFT symbolType; - uint8_t version; -} XrSceneMarkerQRCodeMSFT; - -// XrSceneMarkerQRCodesMSFT extends XrSceneComponentsMSFT -typedef struct XrSceneMarkerQRCodesMSFT { - XrStructureType type; - const void* XR_MAY_ALIAS next; - uint32_t qrCodeCapacityInput; - XrSceneMarkerQRCodeMSFT* qrCodes; -} XrSceneMarkerQRCodesMSFT; - -typedef XrResult (XRAPI_PTR *PFN_xrGetSceneMarkerRawDataMSFT)(XrSceneMSFT scene, const XrUuidMSFT* markerId, uint32_t bufferCapacityInput, uint32_t* bufferCountOutput, uint8_t* buffer); -typedef XrResult (XRAPI_PTR *PFN_xrGetSceneMarkerDecodedStringMSFT)(XrSceneMSFT scene, const XrUuidMSFT* markerId, uint32_t bufferCapacityInput, uint32_t* bufferCountOutput, char* buffer); - -#ifndef XR_NO_PROTOTYPES -#ifdef XR_EXTENSION_PROTOTYPES -XRAPI_ATTR XrResult XRAPI_CALL xrGetSceneMarkerRawDataMSFT( - XrSceneMSFT scene, - const XrUuidMSFT* markerId, - uint32_t bufferCapacityInput, - uint32_t* bufferCountOutput, - uint8_t* buffer); - -XRAPI_ATTR XrResult XRAPI_CALL xrGetSceneMarkerDecodedStringMSFT( - XrSceneMSFT scene, - const XrUuidMSFT* markerId, - uint32_t bufferCapacityInput, - uint32_t* bufferCountOutput, - char* buffer); -#endif /* XR_EXTENSION_PROTOTYPES */ -#endif /* !XR_NO_PROTOTYPES */ - - -// XR_ULTRALEAP_hand_tracking_forearm is a preprocessor guard. Do not pass it to API calls. -#define XR_ULTRALEAP_hand_tracking_forearm 1 - -#define XR_HAND_FOREARM_JOINT_COUNT_ULTRALEAP 27 - -#define XR_ULTRALEAP_hand_tracking_forearm_SPEC_VERSION 1 -#define XR_ULTRALEAP_HAND_TRACKING_FOREARM_EXTENSION_NAME "XR_ULTRALEAP_hand_tracking_forearm" - -typedef enum XrHandForearmJointULTRALEAP { - XR_HAND_FOREARM_JOINT_PALM_ULTRALEAP = 0, - XR_HAND_FOREARM_JOINT_WRIST_ULTRALEAP = 1, - XR_HAND_FOREARM_JOINT_THUMB_METACARPAL_ULTRALEAP = 2, - XR_HAND_FOREARM_JOINT_THUMB_PROXIMAL_ULTRALEAP = 3, - XR_HAND_FOREARM_JOINT_THUMB_DISTAL_ULTRALEAP = 4, - XR_HAND_FOREARM_JOINT_THUMB_TIP_ULTRALEAP = 5, - XR_HAND_FOREARM_JOINT_INDEX_METACARPAL_ULTRALEAP = 6, - XR_HAND_FOREARM_JOINT_INDEX_PROXIMAL_ULTRALEAP = 7, - XR_HAND_FOREARM_JOINT_INDEX_INTERMEDIATE_ULTRALEAP = 8, - XR_HAND_FOREARM_JOINT_INDEX_DISTAL_ULTRALEAP = 9, - XR_HAND_FOREARM_JOINT_INDEX_TIP_ULTRALEAP = 10, - XR_HAND_FOREARM_JOINT_MIDDLE_METACARPAL_ULTRALEAP = 11, - XR_HAND_FOREARM_JOINT_MIDDLE_PROXIMAL_ULTRALEAP = 12, - XR_HAND_FOREARM_JOINT_MIDDLE_INTERMEDIATE_ULTRALEAP = 13, - XR_HAND_FOREARM_JOINT_MIDDLE_DISTAL_ULTRALEAP = 14, - XR_HAND_FOREARM_JOINT_MIDDLE_TIP_ULTRALEAP = 15, - XR_HAND_FOREARM_JOINT_RING_METACARPAL_ULTRALEAP = 16, - XR_HAND_FOREARM_JOINT_RING_PROXIMAL_ULTRALEAP = 17, - XR_HAND_FOREARM_JOINT_RING_INTERMEDIATE_ULTRALEAP = 18, - XR_HAND_FOREARM_JOINT_RING_DISTAL_ULTRALEAP = 19, - XR_HAND_FOREARM_JOINT_RING_TIP_ULTRALEAP = 20, - XR_HAND_FOREARM_JOINT_LITTLE_METACARPAL_ULTRALEAP = 21, - XR_HAND_FOREARM_JOINT_LITTLE_PROXIMAL_ULTRALEAP = 22, - XR_HAND_FOREARM_JOINT_LITTLE_INTERMEDIATE_ULTRALEAP = 23, - XR_HAND_FOREARM_JOINT_LITTLE_DISTAL_ULTRALEAP = 24, - XR_HAND_FOREARM_JOINT_LITTLE_TIP_ULTRALEAP = 25, - XR_HAND_FOREARM_JOINT_ELBOW_ULTRALEAP = 26, - XR_HAND_FOREARM_JOINT_MAX_ENUM_ULTRALEAP = 0x7FFFFFFF -} XrHandForearmJointULTRALEAP; - - -// XR_FB_spatial_entity_query is a preprocessor guard. Do not pass it to API calls. -#define XR_FB_spatial_entity_query 1 -#define XR_FB_spatial_entity_query_SPEC_VERSION 1 -#define XR_FB_SPATIAL_ENTITY_QUERY_EXTENSION_NAME "XR_FB_spatial_entity_query" - -typedef enum XrSpaceQueryActionFB { - XR_SPACE_QUERY_ACTION_LOAD_FB = 0, - XR_SPACE_QUERY_ACTION_MAX_ENUM_FB = 0x7FFFFFFF -} XrSpaceQueryActionFB; - -typedef enum XrSpaceStorageLocationFB { - XR_SPACE_STORAGE_LOCATION_INVALID_FB = 0, - XR_SPACE_STORAGE_LOCATION_LOCAL_FB = 1, - XR_SPACE_STORAGE_LOCATION_CLOUD_FB = 2, - XR_SPACE_STORAGE_LOCATION_MAX_ENUM_FB = 0x7FFFFFFF -} XrSpaceStorageLocationFB; -typedef struct XR_MAY_ALIAS XrSpaceQueryInfoBaseHeaderFB { - XrStructureType type; - const void* XR_MAY_ALIAS next; -} XrSpaceQueryInfoBaseHeaderFB; - -typedef struct XR_MAY_ALIAS XrSpaceFilterInfoBaseHeaderFB { - XrStructureType type; - const void* XR_MAY_ALIAS next; -} XrSpaceFilterInfoBaseHeaderFB; - -typedef struct XrSpaceQueryInfoFB { - XrStructureType type; - const void* XR_MAY_ALIAS next; - XrSpaceQueryActionFB queryAction; - uint32_t maxResultCount; - XrDuration timeout; - const XrSpaceFilterInfoBaseHeaderFB* filter; - const XrSpaceFilterInfoBaseHeaderFB* excludeFilter; -} XrSpaceQueryInfoFB; - -// XrSpaceStorageLocationFilterInfoFB extends XrSpaceFilterInfoBaseHeaderFB -typedef struct XrSpaceStorageLocationFilterInfoFB { - XrStructureType type; - const void* XR_MAY_ALIAS next; - XrSpaceStorageLocationFB location; -} XrSpaceStorageLocationFilterInfoFB; - -typedef struct XrSpaceUuidFilterInfoFB { - XrStructureType type; - const void* XR_MAY_ALIAS next; - uint32_t uuidCount; - XrUuidEXT* uuids; -} XrSpaceUuidFilterInfoFB; - -typedef struct XrSpaceComponentFilterInfoFB { - XrStructureType type; - const void* XR_MAY_ALIAS next; - XrSpaceComponentTypeFB componentType; -} XrSpaceComponentFilterInfoFB; - -typedef struct XrSpaceQueryResultFB { - XrSpace space; - XrUuidEXT uuid; -} XrSpaceQueryResultFB; - -typedef struct XrSpaceQueryResultsFB { - XrStructureType type; - void* XR_MAY_ALIAS next; - uint32_t resultCapacityInput; - uint32_t resultCountOutput; - XrSpaceQueryResultFB* results; -} XrSpaceQueryResultsFB; - -typedef struct XrEventDataSpaceQueryResultsAvailableFB { - XrStructureType type; - const void* XR_MAY_ALIAS next; - XrAsyncRequestIdFB requestId; -} XrEventDataSpaceQueryResultsAvailableFB; - -typedef struct XrEventDataSpaceQueryCompleteFB { - XrStructureType type; - const void* XR_MAY_ALIAS next; - XrAsyncRequestIdFB requestId; - XrResult result; -} XrEventDataSpaceQueryCompleteFB; - -typedef XrResult (XRAPI_PTR *PFN_xrQuerySpacesFB)(XrSession session, const XrSpaceQueryInfoBaseHeaderFB* info, XrAsyncRequestIdFB* requestId); -typedef XrResult (XRAPI_PTR *PFN_xrRetrieveSpaceQueryResultsFB)(XrSession session, XrAsyncRequestIdFB requestId, XrSpaceQueryResultsFB* results); - -#ifndef XR_NO_PROTOTYPES -#ifdef XR_EXTENSION_PROTOTYPES -XRAPI_ATTR XrResult XRAPI_CALL xrQuerySpacesFB( - XrSession session, - const XrSpaceQueryInfoBaseHeaderFB* info, - XrAsyncRequestIdFB* requestId); - -XRAPI_ATTR XrResult XRAPI_CALL xrRetrieveSpaceQueryResultsFB( - XrSession session, - XrAsyncRequestIdFB requestId, - XrSpaceQueryResultsFB* results); -#endif /* XR_EXTENSION_PROTOTYPES */ -#endif /* !XR_NO_PROTOTYPES */ - - -// XR_FB_spatial_entity_storage is a preprocessor guard. Do not pass it to API calls. -#define XR_FB_spatial_entity_storage 1 -#define XR_FB_spatial_entity_storage_SPEC_VERSION 1 -#define XR_FB_SPATIAL_ENTITY_STORAGE_EXTENSION_NAME "XR_FB_spatial_entity_storage" - -typedef enum XrSpacePersistenceModeFB { - XR_SPACE_PERSISTENCE_MODE_INVALID_FB = 0, - XR_SPACE_PERSISTENCE_MODE_INDEFINITE_FB = 1, - XR_SPACE_PERSISTENCE_MODE_MAX_ENUM_FB = 0x7FFFFFFF -} XrSpacePersistenceModeFB; -typedef struct XrSpaceSaveInfoFB { - XrStructureType type; - const void* XR_MAY_ALIAS next; - XrSpace space; - XrSpaceStorageLocationFB location; - XrSpacePersistenceModeFB persistenceMode; -} XrSpaceSaveInfoFB; - -typedef struct XrSpaceEraseInfoFB { - XrStructureType type; - const void* XR_MAY_ALIAS next; - XrSpace space; - XrSpaceStorageLocationFB location; -} XrSpaceEraseInfoFB; - -typedef struct XrEventDataSpaceSaveCompleteFB { - XrStructureType type; - const void* XR_MAY_ALIAS next; - XrAsyncRequestIdFB requestId; - XrResult result; - XrSpace space; - XrUuidEXT uuid; - XrSpaceStorageLocationFB location; -} XrEventDataSpaceSaveCompleteFB; - -typedef struct XrEventDataSpaceEraseCompleteFB { - XrStructureType type; - const void* XR_MAY_ALIAS next; - XrAsyncRequestIdFB requestId; - XrResult result; - XrSpace space; - XrUuidEXT uuid; - XrSpaceStorageLocationFB location; -} XrEventDataSpaceEraseCompleteFB; - -typedef XrResult (XRAPI_PTR *PFN_xrSaveSpaceFB)(XrSession session, const XrSpaceSaveInfoFB* info, XrAsyncRequestIdFB* requestId); -typedef XrResult (XRAPI_PTR *PFN_xrEraseSpaceFB)(XrSession session, const XrSpaceEraseInfoFB* info, XrAsyncRequestIdFB* requestId); - -#ifndef XR_NO_PROTOTYPES -#ifdef XR_EXTENSION_PROTOTYPES -XRAPI_ATTR XrResult XRAPI_CALL xrSaveSpaceFB( - XrSession session, - const XrSpaceSaveInfoFB* info, - XrAsyncRequestIdFB* requestId); - -XRAPI_ATTR XrResult XRAPI_CALL xrEraseSpaceFB( - XrSession session, - const XrSpaceEraseInfoFB* info, - XrAsyncRequestIdFB* requestId); -#endif /* XR_EXTENSION_PROTOTYPES */ -#endif /* !XR_NO_PROTOTYPES */ - - -// XR_FB_touch_controller_pro is a preprocessor guard. Do not pass it to API calls. -#define XR_FB_touch_controller_pro 1 -#define XR_FB_touch_controller_pro_SPEC_VERSION 1 -#define XR_FB_TOUCH_CONTROLLER_PRO_EXTENSION_NAME "XR_FB_touch_controller_pro" - - -// XR_FB_spatial_entity_sharing is a preprocessor guard. Do not pass it to API calls. -#define XR_FB_spatial_entity_sharing 1 -XR_DEFINE_HANDLE(XrSpaceUserFB) -#define XR_FB_spatial_entity_sharing_SPEC_VERSION 1 -#define XR_FB_SPATIAL_ENTITY_SHARING_EXTENSION_NAME "XR_FB_spatial_entity_sharing" -typedef struct XrSpaceShareInfoFB { - XrStructureType type; - const void* XR_MAY_ALIAS next; - uint32_t spaceCount; - XrSpace* spaces; - uint32_t userCount; - XrSpaceUserFB* users; -} XrSpaceShareInfoFB; - -typedef struct XrEventDataSpaceShareCompleteFB { - XrStructureType type; - const void* XR_MAY_ALIAS next; - XrAsyncRequestIdFB requestId; - XrResult result; -} XrEventDataSpaceShareCompleteFB; - -typedef XrResult (XRAPI_PTR *PFN_xrShareSpacesFB)(XrSession session, const XrSpaceShareInfoFB* info, XrAsyncRequestIdFB* requestId); - -#ifndef XR_NO_PROTOTYPES -#ifdef XR_EXTENSION_PROTOTYPES -XRAPI_ATTR XrResult XRAPI_CALL xrShareSpacesFB( - XrSession session, - const XrSpaceShareInfoFB* info, - XrAsyncRequestIdFB* requestId); -#endif /* XR_EXTENSION_PROTOTYPES */ -#endif /* !XR_NO_PROTOTYPES */ - - -// XR_FB_space_warp is a preprocessor guard. Do not pass it to API calls. -#define XR_FB_space_warp 1 -#define XR_FB_space_warp_SPEC_VERSION 2 -#define XR_FB_SPACE_WARP_EXTENSION_NAME "XR_FB_space_warp" -typedef XrFlags64 XrCompositionLayerSpaceWarpInfoFlagsFB; - -// Flag bits for XrCompositionLayerSpaceWarpInfoFlagsFB -static const XrCompositionLayerSpaceWarpInfoFlagsFB XR_COMPOSITION_LAYER_SPACE_WARP_INFO_FRAME_SKIP_BIT_FB = 0x00000001; - -// XrCompositionLayerSpaceWarpInfoFB extends XrCompositionLayerProjectionView -typedef struct XrCompositionLayerSpaceWarpInfoFB { - XrStructureType type; - const void* XR_MAY_ALIAS next; - XrCompositionLayerSpaceWarpInfoFlagsFB layerFlags; - XrSwapchainSubImage motionVectorSubImage; - XrPosef appSpaceDeltaPose; - XrSwapchainSubImage depthSubImage; - float minDepth; - float maxDepth; - float nearZ; - float farZ; -} XrCompositionLayerSpaceWarpInfoFB; - -// XrSystemSpaceWarpPropertiesFB extends XrSystemProperties -typedef struct XrSystemSpaceWarpPropertiesFB { - XrStructureType type; - void* XR_MAY_ALIAS next; - uint32_t recommendedMotionVectorImageRectWidth; - uint32_t recommendedMotionVectorImageRectHeight; -} XrSystemSpaceWarpPropertiesFB; - - - -// XR_FB_haptic_amplitude_envelope is a preprocessor guard. Do not pass it to API calls. -#define XR_FB_haptic_amplitude_envelope 1 - -#define XR_MAX_HAPTIC_AMPLITUDE_ENVELOPE_SAMPLES_FB 4000u - -#define XR_FB_haptic_amplitude_envelope_SPEC_VERSION 1 -#define XR_FB_HAPTIC_AMPLITUDE_ENVELOPE_EXTENSION_NAME "XR_FB_haptic_amplitude_envelope" -typedef struct XrHapticAmplitudeEnvelopeVibrationFB { - XrStructureType type; - const void* XR_MAY_ALIAS next; - XrDuration duration; - uint32_t amplitudeCount; - const float* amplitudes; -} XrHapticAmplitudeEnvelopeVibrationFB; - - - -// XR_FB_scene is a preprocessor guard. Do not pass it to API calls. -#define XR_FB_scene 1 -#define XR_FB_scene_SPEC_VERSION 4 -#define XR_FB_SCENE_EXTENSION_NAME "XR_FB_scene" -typedef XrFlags64 XrSemanticLabelsSupportFlagsFB; - -// Flag bits for XrSemanticLabelsSupportFlagsFB -static const XrSemanticLabelsSupportFlagsFB XR_SEMANTIC_LABELS_SUPPORT_MULTIPLE_SEMANTIC_LABELS_BIT_FB = 0x00000001; -static const XrSemanticLabelsSupportFlagsFB XR_SEMANTIC_LABELS_SUPPORT_ACCEPT_DESK_TO_TABLE_MIGRATION_BIT_FB = 0x00000002; -static const XrSemanticLabelsSupportFlagsFB XR_SEMANTIC_LABELS_SUPPORT_ACCEPT_INVISIBLE_WALL_FACE_BIT_FB = 0x00000004; - -typedef XrExtent3Df XrExtent3DfFB; - -typedef struct XrOffset3DfFB { - float x; - float y; - float z; -} XrOffset3DfFB; - -typedef struct XrRect3DfFB { - XrOffset3DfFB offset; - XrExtent3DfFB extent; -} XrRect3DfFB; - -typedef struct XrSemanticLabelsFB { - XrStructureType type; - const void* XR_MAY_ALIAS next; - uint32_t bufferCapacityInput; - uint32_t bufferCountOutput; - char* buffer; -} XrSemanticLabelsFB; - -typedef struct XrRoomLayoutFB { - XrStructureType type; - const void* XR_MAY_ALIAS next; - XrUuidEXT floorUuid; - XrUuidEXT ceilingUuid; - uint32_t wallUuidCapacityInput; - uint32_t wallUuidCountOutput; - XrUuidEXT* wallUuids; -} XrRoomLayoutFB; - -typedef struct XrBoundary2DFB { - XrStructureType type; - const void* XR_MAY_ALIAS next; - uint32_t vertexCapacityInput; - uint32_t vertexCountOutput; - XrVector2f* vertices; -} XrBoundary2DFB; - -typedef struct XrSemanticLabelsSupportInfoFB { - XrStructureType type; - const void* XR_MAY_ALIAS next; - XrSemanticLabelsSupportFlagsFB flags; - const char* recognizedLabels; -} XrSemanticLabelsSupportInfoFB; - -typedef XrResult (XRAPI_PTR *PFN_xrGetSpaceBoundingBox2DFB)(XrSession session, XrSpace space, XrRect2Df* boundingBox2DOutput); -typedef XrResult (XRAPI_PTR *PFN_xrGetSpaceBoundingBox3DFB)(XrSession session, XrSpace space, XrRect3DfFB* boundingBox3DOutput); -typedef XrResult (XRAPI_PTR *PFN_xrGetSpaceSemanticLabelsFB)(XrSession session, XrSpace space, XrSemanticLabelsFB* semanticLabelsOutput); -typedef XrResult (XRAPI_PTR *PFN_xrGetSpaceBoundary2DFB)(XrSession session, XrSpace space, XrBoundary2DFB* boundary2DOutput); -typedef XrResult (XRAPI_PTR *PFN_xrGetSpaceRoomLayoutFB)(XrSession session, XrSpace space, XrRoomLayoutFB* roomLayoutOutput); - -#ifndef XR_NO_PROTOTYPES -#ifdef XR_EXTENSION_PROTOTYPES -XRAPI_ATTR XrResult XRAPI_CALL xrGetSpaceBoundingBox2DFB( - XrSession session, - XrSpace space, - XrRect2Df* boundingBox2DOutput); - -XRAPI_ATTR XrResult XRAPI_CALL xrGetSpaceBoundingBox3DFB( - XrSession session, - XrSpace space, - XrRect3DfFB* boundingBox3DOutput); - -XRAPI_ATTR XrResult XRAPI_CALL xrGetSpaceSemanticLabelsFB( - XrSession session, - XrSpace space, - XrSemanticLabelsFB* semanticLabelsOutput); - -XRAPI_ATTR XrResult XRAPI_CALL xrGetSpaceBoundary2DFB( - XrSession session, - XrSpace space, - XrBoundary2DFB* boundary2DOutput); - -XRAPI_ATTR XrResult XRAPI_CALL xrGetSpaceRoomLayoutFB( - XrSession session, - XrSpace space, - XrRoomLayoutFB* roomLayoutOutput); -#endif /* XR_EXTENSION_PROTOTYPES */ -#endif /* !XR_NO_PROTOTYPES */ - - -// XR_EXT_palm_pose is a preprocessor guard. Do not pass it to API calls. -#define XR_EXT_palm_pose 1 -#define XR_EXT_palm_pose_SPEC_VERSION 3 -#define XR_EXT_PALM_POSE_EXTENSION_NAME "XR_EXT_palm_pose" - - -// XR_ALMALENCE_digital_lens_control is a preprocessor guard. Do not pass it to API calls. -#define XR_ALMALENCE_digital_lens_control 1 -#define XR_ALMALENCE_digital_lens_control_SPEC_VERSION 1 -#define XR_ALMALENCE_DIGITAL_LENS_CONTROL_EXTENSION_NAME "XR_ALMALENCE_digital_lens_control" -typedef XrFlags64 XrDigitalLensControlFlagsALMALENCE; - -// Flag bits for XrDigitalLensControlFlagsALMALENCE -static const XrDigitalLensControlFlagsALMALENCE XR_DIGITAL_LENS_CONTROL_PROCESSING_DISABLE_BIT_ALMALENCE = 0x00000001; - -typedef struct XrDigitalLensControlALMALENCE { - XrStructureType type; - const void* XR_MAY_ALIAS next; - XrDigitalLensControlFlagsALMALENCE flags; -} XrDigitalLensControlALMALENCE; - -typedef XrResult (XRAPI_PTR *PFN_xrSetDigitalLensControlALMALENCE)(XrSession session, const XrDigitalLensControlALMALENCE* digitalLensControl); - -#ifndef XR_NO_PROTOTYPES -#ifdef XR_EXTENSION_PROTOTYPES -XRAPI_ATTR XrResult XRAPI_CALL xrSetDigitalLensControlALMALENCE( - XrSession session, - const XrDigitalLensControlALMALENCE* digitalLensControl); -#endif /* XR_EXTENSION_PROTOTYPES */ -#endif /* !XR_NO_PROTOTYPES */ - - -// XR_FB_scene_capture is a preprocessor guard. Do not pass it to API calls. -#define XR_FB_scene_capture 1 -#define XR_FB_scene_capture_SPEC_VERSION 1 -#define XR_FB_SCENE_CAPTURE_EXTENSION_NAME "XR_FB_scene_capture" -typedef struct XrEventDataSceneCaptureCompleteFB { - XrStructureType type; - const void* XR_MAY_ALIAS next; - XrAsyncRequestIdFB requestId; - XrResult result; -} XrEventDataSceneCaptureCompleteFB; - -typedef struct XrSceneCaptureRequestInfoFB { - XrStructureType type; - const void* XR_MAY_ALIAS next; - uint32_t requestByteCount; - const char* request; -} XrSceneCaptureRequestInfoFB; - -typedef XrResult (XRAPI_PTR *PFN_xrRequestSceneCaptureFB)(XrSession session, const XrSceneCaptureRequestInfoFB* info, XrAsyncRequestIdFB* requestId); - -#ifndef XR_NO_PROTOTYPES -#ifdef XR_EXTENSION_PROTOTYPES -XRAPI_ATTR XrResult XRAPI_CALL xrRequestSceneCaptureFB( - XrSession session, - const XrSceneCaptureRequestInfoFB* info, - XrAsyncRequestIdFB* requestId); -#endif /* XR_EXTENSION_PROTOTYPES */ -#endif /* !XR_NO_PROTOTYPES */ - - -// XR_FB_spatial_entity_container is a preprocessor guard. Do not pass it to API calls. -#define XR_FB_spatial_entity_container 1 -#define XR_FB_spatial_entity_container_SPEC_VERSION 2 -#define XR_FB_SPATIAL_ENTITY_CONTAINER_EXTENSION_NAME "XR_FB_spatial_entity_container" -typedef struct XrSpaceContainerFB { - XrStructureType type; - const void* XR_MAY_ALIAS next; - uint32_t uuidCapacityInput; - uint32_t uuidCountOutput; - XrUuidEXT* uuids; -} XrSpaceContainerFB; - -typedef XrResult (XRAPI_PTR *PFN_xrGetSpaceContainerFB)(XrSession session, XrSpace space, XrSpaceContainerFB* spaceContainerOutput); - -#ifndef XR_NO_PROTOTYPES -#ifdef XR_EXTENSION_PROTOTYPES -XRAPI_ATTR XrResult XRAPI_CALL xrGetSpaceContainerFB( - XrSession session, - XrSpace space, - XrSpaceContainerFB* spaceContainerOutput); -#endif /* XR_EXTENSION_PROTOTYPES */ -#endif /* !XR_NO_PROTOTYPES */ - - -// XR_META_foveation_eye_tracked is a preprocessor guard. Do not pass it to API calls. -#define XR_META_foveation_eye_tracked 1 -#define XR_FOVEATION_CENTER_SIZE_META 2 -#define XR_META_foveation_eye_tracked_SPEC_VERSION 1 -#define XR_META_FOVEATION_EYE_TRACKED_EXTENSION_NAME "XR_META_foveation_eye_tracked" -typedef XrFlags64 XrFoveationEyeTrackedProfileCreateFlagsMETA; - -// Flag bits for XrFoveationEyeTrackedProfileCreateFlagsMETA - -typedef XrFlags64 XrFoveationEyeTrackedStateFlagsMETA; - -// Flag bits for XrFoveationEyeTrackedStateFlagsMETA -static const XrFoveationEyeTrackedStateFlagsMETA XR_FOVEATION_EYE_TRACKED_STATE_VALID_BIT_META = 0x00000001; - -// XrFoveationEyeTrackedProfileCreateInfoMETA extends XrFoveationLevelProfileCreateInfoFB -typedef struct XrFoveationEyeTrackedProfileCreateInfoMETA { - XrStructureType type; - const void* XR_MAY_ALIAS next; - XrFoveationEyeTrackedProfileCreateFlagsMETA flags; -} XrFoveationEyeTrackedProfileCreateInfoMETA; - -typedef struct XrFoveationEyeTrackedStateMETA { - XrStructureType type; - void* XR_MAY_ALIAS next; - XrVector2f foveationCenter[XR_FOVEATION_CENTER_SIZE_META]; - XrFoveationEyeTrackedStateFlagsMETA flags; -} XrFoveationEyeTrackedStateMETA; - -// XrSystemFoveationEyeTrackedPropertiesMETA extends XrSystemProperties -typedef struct XrSystemFoveationEyeTrackedPropertiesMETA { - XrStructureType type; - void* XR_MAY_ALIAS next; - XrBool32 supportsFoveationEyeTracked; -} XrSystemFoveationEyeTrackedPropertiesMETA; - -typedef XrResult (XRAPI_PTR *PFN_xrGetFoveationEyeTrackedStateMETA)(XrSession session, XrFoveationEyeTrackedStateMETA* foveationState); - -#ifndef XR_NO_PROTOTYPES -#ifdef XR_EXTENSION_PROTOTYPES -XRAPI_ATTR XrResult XRAPI_CALL xrGetFoveationEyeTrackedStateMETA( - XrSession session, - XrFoveationEyeTrackedStateMETA* foveationState); -#endif /* XR_EXTENSION_PROTOTYPES */ -#endif /* !XR_NO_PROTOTYPES */ - - -// XR_FB_face_tracking is a preprocessor guard. Do not pass it to API calls. -#define XR_FB_face_tracking 1 - -#define XR_FACE_EXPRESSSION_SET_DEFAULT_FB XR_FACE_EXPRESSION_SET_DEFAULT_FB - -XR_DEFINE_HANDLE(XrFaceTrackerFB) -#define XR_FB_face_tracking_SPEC_VERSION 1 -#define XR_FB_FACE_TRACKING_EXTENSION_NAME "XR_FB_face_tracking" - -typedef enum XrFaceExpressionFB { - XR_FACE_EXPRESSION_BROW_LOWERER_L_FB = 0, - XR_FACE_EXPRESSION_BROW_LOWERER_R_FB = 1, - XR_FACE_EXPRESSION_CHEEK_PUFF_L_FB = 2, - XR_FACE_EXPRESSION_CHEEK_PUFF_R_FB = 3, - XR_FACE_EXPRESSION_CHEEK_RAISER_L_FB = 4, - XR_FACE_EXPRESSION_CHEEK_RAISER_R_FB = 5, - XR_FACE_EXPRESSION_CHEEK_SUCK_L_FB = 6, - XR_FACE_EXPRESSION_CHEEK_SUCK_R_FB = 7, - XR_FACE_EXPRESSION_CHIN_RAISER_B_FB = 8, - XR_FACE_EXPRESSION_CHIN_RAISER_T_FB = 9, - XR_FACE_EXPRESSION_DIMPLER_L_FB = 10, - XR_FACE_EXPRESSION_DIMPLER_R_FB = 11, - XR_FACE_EXPRESSION_EYES_CLOSED_L_FB = 12, - XR_FACE_EXPRESSION_EYES_CLOSED_R_FB = 13, - XR_FACE_EXPRESSION_EYES_LOOK_DOWN_L_FB = 14, - XR_FACE_EXPRESSION_EYES_LOOK_DOWN_R_FB = 15, - XR_FACE_EXPRESSION_EYES_LOOK_LEFT_L_FB = 16, - XR_FACE_EXPRESSION_EYES_LOOK_LEFT_R_FB = 17, - XR_FACE_EXPRESSION_EYES_LOOK_RIGHT_L_FB = 18, - XR_FACE_EXPRESSION_EYES_LOOK_RIGHT_R_FB = 19, - XR_FACE_EXPRESSION_EYES_LOOK_UP_L_FB = 20, - XR_FACE_EXPRESSION_EYES_LOOK_UP_R_FB = 21, - XR_FACE_EXPRESSION_INNER_BROW_RAISER_L_FB = 22, - XR_FACE_EXPRESSION_INNER_BROW_RAISER_R_FB = 23, - XR_FACE_EXPRESSION_JAW_DROP_FB = 24, - XR_FACE_EXPRESSION_JAW_SIDEWAYS_LEFT_FB = 25, - XR_FACE_EXPRESSION_JAW_SIDEWAYS_RIGHT_FB = 26, - XR_FACE_EXPRESSION_JAW_THRUST_FB = 27, - XR_FACE_EXPRESSION_LID_TIGHTENER_L_FB = 28, - XR_FACE_EXPRESSION_LID_TIGHTENER_R_FB = 29, - XR_FACE_EXPRESSION_LIP_CORNER_DEPRESSOR_L_FB = 30, - XR_FACE_EXPRESSION_LIP_CORNER_DEPRESSOR_R_FB = 31, - XR_FACE_EXPRESSION_LIP_CORNER_PULLER_L_FB = 32, - XR_FACE_EXPRESSION_LIP_CORNER_PULLER_R_FB = 33, - XR_FACE_EXPRESSION_LIP_FUNNELER_LB_FB = 34, - XR_FACE_EXPRESSION_LIP_FUNNELER_LT_FB = 35, - XR_FACE_EXPRESSION_LIP_FUNNELER_RB_FB = 36, - XR_FACE_EXPRESSION_LIP_FUNNELER_RT_FB = 37, - XR_FACE_EXPRESSION_LIP_PRESSOR_L_FB = 38, - XR_FACE_EXPRESSION_LIP_PRESSOR_R_FB = 39, - XR_FACE_EXPRESSION_LIP_PUCKER_L_FB = 40, - XR_FACE_EXPRESSION_LIP_PUCKER_R_FB = 41, - XR_FACE_EXPRESSION_LIP_STRETCHER_L_FB = 42, - XR_FACE_EXPRESSION_LIP_STRETCHER_R_FB = 43, - XR_FACE_EXPRESSION_LIP_SUCK_LB_FB = 44, - XR_FACE_EXPRESSION_LIP_SUCK_LT_FB = 45, - XR_FACE_EXPRESSION_LIP_SUCK_RB_FB = 46, - XR_FACE_EXPRESSION_LIP_SUCK_RT_FB = 47, - XR_FACE_EXPRESSION_LIP_TIGHTENER_L_FB = 48, - XR_FACE_EXPRESSION_LIP_TIGHTENER_R_FB = 49, - XR_FACE_EXPRESSION_LIPS_TOWARD_FB = 50, - XR_FACE_EXPRESSION_LOWER_LIP_DEPRESSOR_L_FB = 51, - XR_FACE_EXPRESSION_LOWER_LIP_DEPRESSOR_R_FB = 52, - XR_FACE_EXPRESSION_MOUTH_LEFT_FB = 53, - XR_FACE_EXPRESSION_MOUTH_RIGHT_FB = 54, - XR_FACE_EXPRESSION_NOSE_WRINKLER_L_FB = 55, - XR_FACE_EXPRESSION_NOSE_WRINKLER_R_FB = 56, - XR_FACE_EXPRESSION_OUTER_BROW_RAISER_L_FB = 57, - XR_FACE_EXPRESSION_OUTER_BROW_RAISER_R_FB = 58, - XR_FACE_EXPRESSION_UPPER_LID_RAISER_L_FB = 59, - XR_FACE_EXPRESSION_UPPER_LID_RAISER_R_FB = 60, - XR_FACE_EXPRESSION_UPPER_LIP_RAISER_L_FB = 61, - XR_FACE_EXPRESSION_UPPER_LIP_RAISER_R_FB = 62, - XR_FACE_EXPRESSION_COUNT_FB = 63, - XR_FACE_EXPRESSION_MAX_ENUM_FB = 0x7FFFFFFF -} XrFaceExpressionFB; - -typedef enum XrFaceExpressionSetFB { - XR_FACE_EXPRESSION_SET_DEFAULT_FB = 0, - XR_FACE_EXPRESSION_SET_MAX_ENUM_FB = 0x7FFFFFFF -} XrFaceExpressionSetFB; - -typedef enum XrFaceConfidenceFB { - XR_FACE_CONFIDENCE_LOWER_FACE_FB = 0, - XR_FACE_CONFIDENCE_UPPER_FACE_FB = 1, - XR_FACE_CONFIDENCE_COUNT_FB = 2, - XR_FACE_CONFIDENCE_MAX_ENUM_FB = 0x7FFFFFFF -} XrFaceConfidenceFB; -// XrSystemFaceTrackingPropertiesFB extends XrSystemProperties -typedef struct XrSystemFaceTrackingPropertiesFB { - XrStructureType type; - void* XR_MAY_ALIAS next; - XrBool32 supportsFaceTracking; -} XrSystemFaceTrackingPropertiesFB; - -typedef struct XrFaceTrackerCreateInfoFB { - XrStructureType type; - const void* XR_MAY_ALIAS next; - XrFaceExpressionSetFB faceExpressionSet; -} XrFaceTrackerCreateInfoFB; - -typedef struct XrFaceExpressionInfoFB { - XrStructureType type; - const void* XR_MAY_ALIAS next; - XrTime time; -} XrFaceExpressionInfoFB; - -typedef struct XrFaceExpressionStatusFB { - XrBool32 isValid; - XrBool32 isEyeFollowingBlendshapesValid; -} XrFaceExpressionStatusFB; - -typedef struct XrFaceExpressionWeightsFB { - XrStructureType type; - void* XR_MAY_ALIAS next; - uint32_t weightCount; - float* weights; - uint32_t confidenceCount; - float* confidences; - XrFaceExpressionStatusFB status; - XrTime time; -} XrFaceExpressionWeightsFB; - -typedef XrResult (XRAPI_PTR *PFN_xrCreateFaceTrackerFB)(XrSession session, const XrFaceTrackerCreateInfoFB* createInfo, XrFaceTrackerFB* faceTracker); -typedef XrResult (XRAPI_PTR *PFN_xrDestroyFaceTrackerFB)(XrFaceTrackerFB faceTracker); -typedef XrResult (XRAPI_PTR *PFN_xrGetFaceExpressionWeightsFB)(XrFaceTrackerFB faceTracker, const XrFaceExpressionInfoFB* expressionInfo, XrFaceExpressionWeightsFB* expressionWeights); - -#ifndef XR_NO_PROTOTYPES -#ifdef XR_EXTENSION_PROTOTYPES -XRAPI_ATTR XrResult XRAPI_CALL xrCreateFaceTrackerFB( - XrSession session, - const XrFaceTrackerCreateInfoFB* createInfo, - XrFaceTrackerFB* faceTracker); - -XRAPI_ATTR XrResult XRAPI_CALL xrDestroyFaceTrackerFB( - XrFaceTrackerFB faceTracker); - -XRAPI_ATTR XrResult XRAPI_CALL xrGetFaceExpressionWeightsFB( - XrFaceTrackerFB faceTracker, - const XrFaceExpressionInfoFB* expressionInfo, - XrFaceExpressionWeightsFB* expressionWeights); -#endif /* XR_EXTENSION_PROTOTYPES */ -#endif /* !XR_NO_PROTOTYPES */ - - -// XR_FB_eye_tracking_social is a preprocessor guard. Do not pass it to API calls. -#define XR_FB_eye_tracking_social 1 -XR_DEFINE_HANDLE(XrEyeTrackerFB) -#define XR_FB_eye_tracking_social_SPEC_VERSION 1 -#define XR_FB_EYE_TRACKING_SOCIAL_EXTENSION_NAME "XR_FB_eye_tracking_social" - -typedef enum XrEyePositionFB { - XR_EYE_POSITION_LEFT_FB = 0, - XR_EYE_POSITION_RIGHT_FB = 1, - XR_EYE_POSITION_COUNT_FB = 2, - XR_EYE_POSITION_MAX_ENUM_FB = 0x7FFFFFFF -} XrEyePositionFB; -typedef struct XrEyeGazeFB { - XrBool32 isValid; - XrPosef gazePose; - float gazeConfidence; -} XrEyeGazeFB; - -typedef struct XrEyeTrackerCreateInfoFB { - XrStructureType type; - const void* XR_MAY_ALIAS next; -} XrEyeTrackerCreateInfoFB; - -typedef struct XrEyeGazesInfoFB { - XrStructureType type; - const void* XR_MAY_ALIAS next; - XrSpace baseSpace; - XrTime time; -} XrEyeGazesInfoFB; - -// XrSystemEyeTrackingPropertiesFB extends XrSystemProperties -typedef struct XrSystemEyeTrackingPropertiesFB { - XrStructureType type; - void* XR_MAY_ALIAS next; - XrBool32 supportsEyeTracking; -} XrSystemEyeTrackingPropertiesFB; - -typedef struct XrEyeGazesFB { - XrStructureType type; - void* XR_MAY_ALIAS next; - XrEyeGazeFB gaze[XR_EYE_POSITION_COUNT_FB]; - XrTime time; -} XrEyeGazesFB; - -typedef XrResult (XRAPI_PTR *PFN_xrCreateEyeTrackerFB)(XrSession session, const XrEyeTrackerCreateInfoFB* createInfo, XrEyeTrackerFB* eyeTracker); -typedef XrResult (XRAPI_PTR *PFN_xrDestroyEyeTrackerFB)(XrEyeTrackerFB eyeTracker); -typedef XrResult (XRAPI_PTR *PFN_xrGetEyeGazesFB)(XrEyeTrackerFB eyeTracker, const XrEyeGazesInfoFB* gazeInfo, XrEyeGazesFB* eyeGazes); - -#ifndef XR_NO_PROTOTYPES -#ifdef XR_EXTENSION_PROTOTYPES -XRAPI_ATTR XrResult XRAPI_CALL xrCreateEyeTrackerFB( - XrSession session, - const XrEyeTrackerCreateInfoFB* createInfo, - XrEyeTrackerFB* eyeTracker); - -XRAPI_ATTR XrResult XRAPI_CALL xrDestroyEyeTrackerFB( - XrEyeTrackerFB eyeTracker); - -XRAPI_ATTR XrResult XRAPI_CALL xrGetEyeGazesFB( - XrEyeTrackerFB eyeTracker, - const XrEyeGazesInfoFB* gazeInfo, - XrEyeGazesFB* eyeGazes); -#endif /* XR_EXTENSION_PROTOTYPES */ -#endif /* !XR_NO_PROTOTYPES */ - - -// XR_FB_passthrough_keyboard_hands is a preprocessor guard. Do not pass it to API calls. -#define XR_FB_passthrough_keyboard_hands 1 -#define XR_FB_passthrough_keyboard_hands_SPEC_VERSION 2 -#define XR_FB_PASSTHROUGH_KEYBOARD_HANDS_EXTENSION_NAME "XR_FB_passthrough_keyboard_hands" -typedef struct XrPassthroughKeyboardHandsIntensityFB { - XrStructureType type; - const void* XR_MAY_ALIAS next; - float leftHandIntensity; - float rightHandIntensity; -} XrPassthroughKeyboardHandsIntensityFB; - -typedef XrResult (XRAPI_PTR *PFN_xrPassthroughLayerSetKeyboardHandsIntensityFB)(XrPassthroughLayerFB layer, const XrPassthroughKeyboardHandsIntensityFB* intensity); - -#ifndef XR_NO_PROTOTYPES -#ifdef XR_EXTENSION_PROTOTYPES -XRAPI_ATTR XrResult XRAPI_CALL xrPassthroughLayerSetKeyboardHandsIntensityFB( - XrPassthroughLayerFB layer, - const XrPassthroughKeyboardHandsIntensityFB* intensity); -#endif /* XR_EXTENSION_PROTOTYPES */ -#endif /* !XR_NO_PROTOTYPES */ - - -// XR_FB_composition_layer_settings is a preprocessor guard. Do not pass it to API calls. -#define XR_FB_composition_layer_settings 1 -#define XR_FB_composition_layer_settings_SPEC_VERSION 1 -#define XR_FB_COMPOSITION_LAYER_SETTINGS_EXTENSION_NAME "XR_FB_composition_layer_settings" -typedef XrFlags64 XrCompositionLayerSettingsFlagsFB; - -// Flag bits for XrCompositionLayerSettingsFlagsFB -static const XrCompositionLayerSettingsFlagsFB XR_COMPOSITION_LAYER_SETTINGS_NORMAL_SUPER_SAMPLING_BIT_FB = 0x00000001; -static const XrCompositionLayerSettingsFlagsFB XR_COMPOSITION_LAYER_SETTINGS_QUALITY_SUPER_SAMPLING_BIT_FB = 0x00000002; -static const XrCompositionLayerSettingsFlagsFB XR_COMPOSITION_LAYER_SETTINGS_NORMAL_SHARPENING_BIT_FB = 0x00000004; -static const XrCompositionLayerSettingsFlagsFB XR_COMPOSITION_LAYER_SETTINGS_QUALITY_SHARPENING_BIT_FB = 0x00000008; -static const XrCompositionLayerSettingsFlagsFB XR_COMPOSITION_LAYER_SETTINGS_AUTO_LAYER_FILTER_BIT_META = 0x00000020; - -// XrCompositionLayerSettingsFB extends XrCompositionLayerBaseHeader -typedef struct XrCompositionLayerSettingsFB { - XrStructureType type; - const void* XR_MAY_ALIAS next; - XrCompositionLayerSettingsFlagsFB layerFlags; -} XrCompositionLayerSettingsFB; - - - -// XR_FB_touch_controller_proximity is a preprocessor guard. Do not pass it to API calls. -#define XR_FB_touch_controller_proximity 1 -#define XR_FB_touch_controller_proximity_SPEC_VERSION 1 -#define XR_FB_TOUCH_CONTROLLER_PROXIMITY_EXTENSION_NAME "XR_FB_touch_controller_proximity" - - -// XR_FB_haptic_pcm is a preprocessor guard. Do not pass it to API calls. -#define XR_FB_haptic_pcm 1 - -#define XR_MAX_HAPTIC_PCM_BUFFER_SIZE_FB 4000 - -#define XR_FB_haptic_pcm_SPEC_VERSION 1 -#define XR_FB_HAPTIC_PCM_EXTENSION_NAME "XR_FB_haptic_pcm" -typedef struct XrHapticPcmVibrationFB { - XrStructureType type; - const void* XR_MAY_ALIAS next; - uint32_t bufferSize; - const float* buffer; - float sampleRate; - XrBool32 append; - uint32_t* samplesConsumed; -} XrHapticPcmVibrationFB; - -typedef struct XrDevicePcmSampleRateStateFB { - XrStructureType type; - void* XR_MAY_ALIAS next; - float sampleRate; -} XrDevicePcmSampleRateStateFB; - -typedef XrDevicePcmSampleRateStateFB XrDevicePcmSampleRateGetInfoFB; - -typedef XrResult (XRAPI_PTR *PFN_xrGetDeviceSampleRateFB)(XrSession session, const XrHapticActionInfo* hapticActionInfo, XrDevicePcmSampleRateGetInfoFB* deviceSampleRate); - -#ifndef XR_NO_PROTOTYPES -#ifdef XR_EXTENSION_PROTOTYPES -XRAPI_ATTR XrResult XRAPI_CALL xrGetDeviceSampleRateFB( - XrSession session, - const XrHapticActionInfo* hapticActionInfo, - XrDevicePcmSampleRateGetInfoFB* deviceSampleRate); -#endif /* XR_EXTENSION_PROTOTYPES */ -#endif /* !XR_NO_PROTOTYPES */ - - -// XR_FB_composition_layer_depth_test is a preprocessor guard. Do not pass it to API calls. -#define XR_FB_composition_layer_depth_test 1 -#define XR_FB_composition_layer_depth_test_SPEC_VERSION 1 -#define XR_FB_COMPOSITION_LAYER_DEPTH_TEST_EXTENSION_NAME "XR_FB_composition_layer_depth_test" - -typedef enum XrCompareOpFB { - XR_COMPARE_OP_NEVER_FB = 0, - XR_COMPARE_OP_LESS_FB = 1, - XR_COMPARE_OP_EQUAL_FB = 2, - XR_COMPARE_OP_LESS_OR_EQUAL_FB = 3, - XR_COMPARE_OP_GREATER_FB = 4, - XR_COMPARE_OP_NOT_EQUAL_FB = 5, - XR_COMPARE_OP_GREATER_OR_EQUAL_FB = 6, - XR_COMPARE_OP_ALWAYS_FB = 7, - XR_COMPARE_OP_MAX_ENUM_FB = 0x7FFFFFFF -} XrCompareOpFB; -// XrCompositionLayerDepthTestFB extends XrCompositionLayerBaseHeader -typedef struct XrCompositionLayerDepthTestFB { - XrStructureType type; - const void* XR_MAY_ALIAS next; - XrBool32 depthMask; - XrCompareOpFB compareOp; -} XrCompositionLayerDepthTestFB; - - - -// XR_META_local_dimming is a preprocessor guard. Do not pass it to API calls. -#define XR_META_local_dimming 1 -#define XR_META_local_dimming_SPEC_VERSION 1 -#define XR_META_LOCAL_DIMMING_EXTENSION_NAME "XR_META_local_dimming" - -typedef enum XrLocalDimmingModeMETA { - XR_LOCAL_DIMMING_MODE_OFF_META = 0, - XR_LOCAL_DIMMING_MODE_ON_META = 1, - XR_LOCAL_DIMMING_MODE_MAX_ENUM_META = 0x7FFFFFFF -} XrLocalDimmingModeMETA; -// XrLocalDimmingFrameEndInfoMETA extends XrFrameEndInfo -typedef struct XrLocalDimmingFrameEndInfoMETA { - XrStructureType type; - const void* XR_MAY_ALIAS next; - XrLocalDimmingModeMETA localDimmingMode; -} XrLocalDimmingFrameEndInfoMETA; - - - -// XR_META_passthrough_preferences is a preprocessor guard. Do not pass it to API calls. -#define XR_META_passthrough_preferences 1 -#define XR_META_passthrough_preferences_SPEC_VERSION 1 -#define XR_META_PASSTHROUGH_PREFERENCES_EXTENSION_NAME "XR_META_passthrough_preferences" -typedef XrFlags64 XrPassthroughPreferenceFlagsMETA; - -// Flag bits for XrPassthroughPreferenceFlagsMETA -static const XrPassthroughPreferenceFlagsMETA XR_PASSTHROUGH_PREFERENCE_DEFAULT_TO_ACTIVE_BIT_META = 0x00000001; - -typedef struct XrPassthroughPreferencesMETA { - XrStructureType type; - const void* XR_MAY_ALIAS next; - XrPassthroughPreferenceFlagsMETA flags; -} XrPassthroughPreferencesMETA; - -typedef XrResult (XRAPI_PTR *PFN_xrGetPassthroughPreferencesMETA)(XrSession session, XrPassthroughPreferencesMETA* preferences); - -#ifndef XR_NO_PROTOTYPES -#ifdef XR_EXTENSION_PROTOTYPES -XRAPI_ATTR XrResult XRAPI_CALL xrGetPassthroughPreferencesMETA( - XrSession session, - XrPassthroughPreferencesMETA* preferences); -#endif /* XR_EXTENSION_PROTOTYPES */ -#endif /* !XR_NO_PROTOTYPES */ - - -// XR_META_virtual_keyboard is a preprocessor guard. Do not pass it to API calls. -#define XR_META_virtual_keyboard 1 -XR_DEFINE_HANDLE(XrVirtualKeyboardMETA) -#define XR_MAX_VIRTUAL_KEYBOARD_COMMIT_TEXT_SIZE_META 3992 -#define XR_META_virtual_keyboard_SPEC_VERSION 1 -#define XR_META_VIRTUAL_KEYBOARD_EXTENSION_NAME "XR_META_virtual_keyboard" - -typedef enum XrVirtualKeyboardLocationTypeMETA { - XR_VIRTUAL_KEYBOARD_LOCATION_TYPE_CUSTOM_META = 0, - XR_VIRTUAL_KEYBOARD_LOCATION_TYPE_FAR_META = 1, - XR_VIRTUAL_KEYBOARD_LOCATION_TYPE_DIRECT_META = 2, - XR_VIRTUAL_KEYBOARD_LOCATION_TYPE_MAX_ENUM_META = 0x7FFFFFFF -} XrVirtualKeyboardLocationTypeMETA; - -typedef enum XrVirtualKeyboardInputSourceMETA { - XR_VIRTUAL_KEYBOARD_INPUT_SOURCE_CONTROLLER_RAY_LEFT_META = 1, - XR_VIRTUAL_KEYBOARD_INPUT_SOURCE_CONTROLLER_RAY_RIGHT_META = 2, - XR_VIRTUAL_KEYBOARD_INPUT_SOURCE_HAND_RAY_LEFT_META = 3, - XR_VIRTUAL_KEYBOARD_INPUT_SOURCE_HAND_RAY_RIGHT_META = 4, - XR_VIRTUAL_KEYBOARD_INPUT_SOURCE_CONTROLLER_DIRECT_LEFT_META = 5, - XR_VIRTUAL_KEYBOARD_INPUT_SOURCE_CONTROLLER_DIRECT_RIGHT_META = 6, - XR_VIRTUAL_KEYBOARD_INPUT_SOURCE_HAND_DIRECT_INDEX_TIP_LEFT_META = 7, - XR_VIRTUAL_KEYBOARD_INPUT_SOURCE_HAND_DIRECT_INDEX_TIP_RIGHT_META = 8, - XR_VIRTUAL_KEYBOARD_INPUT_SOURCE_MAX_ENUM_META = 0x7FFFFFFF -} XrVirtualKeyboardInputSourceMETA; -typedef XrFlags64 XrVirtualKeyboardInputStateFlagsMETA; - -// Flag bits for XrVirtualKeyboardInputStateFlagsMETA -static const XrVirtualKeyboardInputStateFlagsMETA XR_VIRTUAL_KEYBOARD_INPUT_STATE_PRESSED_BIT_META = 0x00000001; - -// XrSystemVirtualKeyboardPropertiesMETA extends XrSystemProperties -typedef struct XrSystemVirtualKeyboardPropertiesMETA { - XrStructureType type; - void* XR_MAY_ALIAS next; - XrBool32 supportsVirtualKeyboard; -} XrSystemVirtualKeyboardPropertiesMETA; - -typedef struct XrVirtualKeyboardCreateInfoMETA { - XrStructureType type; - const void* XR_MAY_ALIAS next; -} XrVirtualKeyboardCreateInfoMETA; - -typedef struct XrVirtualKeyboardSpaceCreateInfoMETA { - XrStructureType type; - const void* XR_MAY_ALIAS next; - XrVirtualKeyboardLocationTypeMETA locationType; - XrSpace space; - XrPosef poseInSpace; -} XrVirtualKeyboardSpaceCreateInfoMETA; - -typedef struct XrVirtualKeyboardLocationInfoMETA { - XrStructureType type; - const void* XR_MAY_ALIAS next; - XrVirtualKeyboardLocationTypeMETA locationType; - XrSpace space; - XrPosef poseInSpace; - float scale; -} XrVirtualKeyboardLocationInfoMETA; - -typedef struct XrVirtualKeyboardModelVisibilitySetInfoMETA { - XrStructureType type; - const void* XR_MAY_ALIAS next; - XrBool32 visible; -} XrVirtualKeyboardModelVisibilitySetInfoMETA; - -typedef struct XrVirtualKeyboardAnimationStateMETA { - XrStructureType type; - void* XR_MAY_ALIAS next; - int32_t animationIndex; - float fraction; -} XrVirtualKeyboardAnimationStateMETA; - -typedef struct XrVirtualKeyboardModelAnimationStatesMETA { - XrStructureType type; - void* XR_MAY_ALIAS next; - uint32_t stateCapacityInput; - uint32_t stateCountOutput; - XrVirtualKeyboardAnimationStateMETA* states; -} XrVirtualKeyboardModelAnimationStatesMETA; - -typedef struct XrVirtualKeyboardTextureDataMETA { - XrStructureType type; - void* XR_MAY_ALIAS next; - uint32_t textureWidth; - uint32_t textureHeight; - uint32_t bufferCapacityInput; - uint32_t bufferCountOutput; - uint8_t* buffer; -} XrVirtualKeyboardTextureDataMETA; - -typedef struct XrVirtualKeyboardInputInfoMETA { - XrStructureType type; - const void* XR_MAY_ALIAS next; - XrVirtualKeyboardInputSourceMETA inputSource; - XrSpace inputSpace; - XrPosef inputPoseInSpace; - XrVirtualKeyboardInputStateFlagsMETA inputState; -} XrVirtualKeyboardInputInfoMETA; - -typedef struct XrVirtualKeyboardTextContextChangeInfoMETA { - XrStructureType type; - const void* XR_MAY_ALIAS next; - const char* textContext; -} XrVirtualKeyboardTextContextChangeInfoMETA; - -typedef struct XrEventDataVirtualKeyboardCommitTextMETA { - XrStructureType type; - const void* XR_MAY_ALIAS next; - XrVirtualKeyboardMETA keyboard; - char text[XR_MAX_VIRTUAL_KEYBOARD_COMMIT_TEXT_SIZE_META]; -} XrEventDataVirtualKeyboardCommitTextMETA; - -typedef struct XrEventDataVirtualKeyboardBackspaceMETA { - XrStructureType type; - const void* XR_MAY_ALIAS next; - XrVirtualKeyboardMETA keyboard; -} XrEventDataVirtualKeyboardBackspaceMETA; - -typedef struct XrEventDataVirtualKeyboardEnterMETA { - XrStructureType type; - const void* XR_MAY_ALIAS next; - XrVirtualKeyboardMETA keyboard; -} XrEventDataVirtualKeyboardEnterMETA; - -typedef struct XrEventDataVirtualKeyboardShownMETA { - XrStructureType type; - const void* XR_MAY_ALIAS next; - XrVirtualKeyboardMETA keyboard; -} XrEventDataVirtualKeyboardShownMETA; - -typedef struct XrEventDataVirtualKeyboardHiddenMETA { - XrStructureType type; - const void* XR_MAY_ALIAS next; - XrVirtualKeyboardMETA keyboard; -} XrEventDataVirtualKeyboardHiddenMETA; - -typedef XrResult (XRAPI_PTR *PFN_xrCreateVirtualKeyboardMETA)(XrSession session, const XrVirtualKeyboardCreateInfoMETA* createInfo, XrVirtualKeyboardMETA* keyboard); -typedef XrResult (XRAPI_PTR *PFN_xrDestroyVirtualKeyboardMETA)(XrVirtualKeyboardMETA keyboard); -typedef XrResult (XRAPI_PTR *PFN_xrCreateVirtualKeyboardSpaceMETA)(XrSession session, XrVirtualKeyboardMETA keyboard, const XrVirtualKeyboardSpaceCreateInfoMETA* createInfo, XrSpace* keyboardSpace); -typedef XrResult (XRAPI_PTR *PFN_xrSuggestVirtualKeyboardLocationMETA)(XrVirtualKeyboardMETA keyboard, const XrVirtualKeyboardLocationInfoMETA* locationInfo); -typedef XrResult (XRAPI_PTR *PFN_xrGetVirtualKeyboardScaleMETA)(XrVirtualKeyboardMETA keyboard, float* scale); -typedef XrResult (XRAPI_PTR *PFN_xrSetVirtualKeyboardModelVisibilityMETA)(XrVirtualKeyboardMETA keyboard, const XrVirtualKeyboardModelVisibilitySetInfoMETA* modelVisibility); -typedef XrResult (XRAPI_PTR *PFN_xrGetVirtualKeyboardModelAnimationStatesMETA)(XrVirtualKeyboardMETA keyboard, XrVirtualKeyboardModelAnimationStatesMETA* animationStates); -typedef XrResult (XRAPI_PTR *PFN_xrGetVirtualKeyboardDirtyTexturesMETA)(XrVirtualKeyboardMETA keyboard, uint32_t textureIdCapacityInput, uint32_t* textureIdCountOutput, uint64_t* textureIds); -typedef XrResult (XRAPI_PTR *PFN_xrGetVirtualKeyboardTextureDataMETA)(XrVirtualKeyboardMETA keyboard, uint64_t textureId, XrVirtualKeyboardTextureDataMETA* textureData); -typedef XrResult (XRAPI_PTR *PFN_xrSendVirtualKeyboardInputMETA)(XrVirtualKeyboardMETA keyboard, const XrVirtualKeyboardInputInfoMETA* info, XrPosef* interactorRootPose); -typedef XrResult (XRAPI_PTR *PFN_xrChangeVirtualKeyboardTextContextMETA)(XrVirtualKeyboardMETA keyboard, const XrVirtualKeyboardTextContextChangeInfoMETA* changeInfo); - -#ifndef XR_NO_PROTOTYPES -#ifdef XR_EXTENSION_PROTOTYPES -XRAPI_ATTR XrResult XRAPI_CALL xrCreateVirtualKeyboardMETA( - XrSession session, - const XrVirtualKeyboardCreateInfoMETA* createInfo, - XrVirtualKeyboardMETA* keyboard); - -XRAPI_ATTR XrResult XRAPI_CALL xrDestroyVirtualKeyboardMETA( - XrVirtualKeyboardMETA keyboard); - -XRAPI_ATTR XrResult XRAPI_CALL xrCreateVirtualKeyboardSpaceMETA( - XrSession session, - XrVirtualKeyboardMETA keyboard, - const XrVirtualKeyboardSpaceCreateInfoMETA* createInfo, - XrSpace* keyboardSpace); - -XRAPI_ATTR XrResult XRAPI_CALL xrSuggestVirtualKeyboardLocationMETA( - XrVirtualKeyboardMETA keyboard, - const XrVirtualKeyboardLocationInfoMETA* locationInfo); - -XRAPI_ATTR XrResult XRAPI_CALL xrGetVirtualKeyboardScaleMETA( - XrVirtualKeyboardMETA keyboard, - float* scale); - -XRAPI_ATTR XrResult XRAPI_CALL xrSetVirtualKeyboardModelVisibilityMETA( - XrVirtualKeyboardMETA keyboard, - const XrVirtualKeyboardModelVisibilitySetInfoMETA* modelVisibility); - -XRAPI_ATTR XrResult XRAPI_CALL xrGetVirtualKeyboardModelAnimationStatesMETA( - XrVirtualKeyboardMETA keyboard, - XrVirtualKeyboardModelAnimationStatesMETA* animationStates); - -XRAPI_ATTR XrResult XRAPI_CALL xrGetVirtualKeyboardDirtyTexturesMETA( - XrVirtualKeyboardMETA keyboard, - uint32_t textureIdCapacityInput, - uint32_t* textureIdCountOutput, - uint64_t* textureIds); - -XRAPI_ATTR XrResult XRAPI_CALL xrGetVirtualKeyboardTextureDataMETA( - XrVirtualKeyboardMETA keyboard, - uint64_t textureId, - XrVirtualKeyboardTextureDataMETA* textureData); - -XRAPI_ATTR XrResult XRAPI_CALL xrSendVirtualKeyboardInputMETA( - XrVirtualKeyboardMETA keyboard, - const XrVirtualKeyboardInputInfoMETA* info, - XrPosef* interactorRootPose); - -XRAPI_ATTR XrResult XRAPI_CALL xrChangeVirtualKeyboardTextContextMETA( - XrVirtualKeyboardMETA keyboard, - const XrVirtualKeyboardTextContextChangeInfoMETA* changeInfo); -#endif /* XR_EXTENSION_PROTOTYPES */ -#endif /* !XR_NO_PROTOTYPES */ - - -// XR_OCULUS_external_camera is a preprocessor guard. Do not pass it to API calls. -#define XR_OCULUS_external_camera 1 -#define XR_MAX_EXTERNAL_CAMERA_NAME_SIZE_OCULUS 32 -#define XR_OCULUS_external_camera_SPEC_VERSION 1 -#define XR_OCULUS_EXTERNAL_CAMERA_EXTENSION_NAME "XR_OCULUS_external_camera" - -typedef enum XrExternalCameraAttachedToDeviceOCULUS { - XR_EXTERNAL_CAMERA_ATTACHED_TO_DEVICE_NONE_OCULUS = 0, - XR_EXTERNAL_CAMERA_ATTACHED_TO_DEVICE_HMD_OCULUS = 1, - XR_EXTERNAL_CAMERA_ATTACHED_TO_DEVICE_LTOUCH_OCULUS = 2, - XR_EXTERNAL_CAMERA_ATTACHED_TO_DEVICE_RTOUCH_OCULUS = 3, - XR_EXTERNAL_CAMERA_ATTACHED_TO_DEVICE_MAX_ENUM_OCULUS = 0x7FFFFFFF -} XrExternalCameraAttachedToDeviceOCULUS; -typedef XrFlags64 XrExternalCameraStatusFlagsOCULUS; - -// Flag bits for XrExternalCameraStatusFlagsOCULUS -static const XrExternalCameraStatusFlagsOCULUS XR_EXTERNAL_CAMERA_STATUS_CONNECTED_BIT_OCULUS = 0x00000001; -static const XrExternalCameraStatusFlagsOCULUS XR_EXTERNAL_CAMERA_STATUS_CALIBRATING_BIT_OCULUS = 0x00000002; -static const XrExternalCameraStatusFlagsOCULUS XR_EXTERNAL_CAMERA_STATUS_CALIBRATION_FAILED_BIT_OCULUS = 0x00000004; -static const XrExternalCameraStatusFlagsOCULUS XR_EXTERNAL_CAMERA_STATUS_CALIBRATED_BIT_OCULUS = 0x00000008; -static const XrExternalCameraStatusFlagsOCULUS XR_EXTERNAL_CAMERA_STATUS_CAPTURING_BIT_OCULUS = 0x00000010; - -typedef struct XrExternalCameraIntrinsicsOCULUS { - XrTime lastChangeTime; - XrFovf fov; - float virtualNearPlaneDistance; - float virtualFarPlaneDistance; - XrExtent2Di imageSensorPixelResolution; -} XrExternalCameraIntrinsicsOCULUS; - -typedef struct XrExternalCameraExtrinsicsOCULUS { - XrTime lastChangeTime; - XrExternalCameraStatusFlagsOCULUS cameraStatusFlags; - XrExternalCameraAttachedToDeviceOCULUS attachedToDevice; - XrPosef relativePose; -} XrExternalCameraExtrinsicsOCULUS; - -typedef struct XrExternalCameraOCULUS { - XrStructureType type; - const void* XR_MAY_ALIAS next; - char name[XR_MAX_EXTERNAL_CAMERA_NAME_SIZE_OCULUS]; - XrExternalCameraIntrinsicsOCULUS intrinsics; - XrExternalCameraExtrinsicsOCULUS extrinsics; -} XrExternalCameraOCULUS; - -typedef XrResult (XRAPI_PTR *PFN_xrEnumerateExternalCamerasOCULUS)(XrSession session, uint32_t cameraCapacityInput, uint32_t* cameraCountOutput, XrExternalCameraOCULUS* cameras); - -#ifndef XR_NO_PROTOTYPES -#ifdef XR_EXTENSION_PROTOTYPES -XRAPI_ATTR XrResult XRAPI_CALL xrEnumerateExternalCamerasOCULUS( - XrSession session, - uint32_t cameraCapacityInput, - uint32_t* cameraCountOutput, - XrExternalCameraOCULUS* cameras); -#endif /* XR_EXTENSION_PROTOTYPES */ -#endif /* !XR_NO_PROTOTYPES */ - - -// XR_META_performance_metrics is a preprocessor guard. Do not pass it to API calls. -#define XR_META_performance_metrics 1 -#define XR_META_performance_metrics_SPEC_VERSION 2 -#define XR_META_PERFORMANCE_METRICS_EXTENSION_NAME "XR_META_performance_metrics" - -typedef enum XrPerformanceMetricsCounterUnitMETA { - XR_PERFORMANCE_METRICS_COUNTER_UNIT_GENERIC_META = 0, - XR_PERFORMANCE_METRICS_COUNTER_UNIT_PERCENTAGE_META = 1, - XR_PERFORMANCE_METRICS_COUNTER_UNIT_MILLISECONDS_META = 2, - XR_PERFORMANCE_METRICS_COUNTER_UNIT_BYTES_META = 3, - XR_PERFORMANCE_METRICS_COUNTER_UNIT_HERTZ_META = 4, - XR_PERFORMANCE_METRICS_COUNTER_UNIT_MAX_ENUM_META = 0x7FFFFFFF -} XrPerformanceMetricsCounterUnitMETA; -typedef XrFlags64 XrPerformanceMetricsCounterFlagsMETA; - -// Flag bits for XrPerformanceMetricsCounterFlagsMETA -static const XrPerformanceMetricsCounterFlagsMETA XR_PERFORMANCE_METRICS_COUNTER_ANY_VALUE_VALID_BIT_META = 0x00000001; -static const XrPerformanceMetricsCounterFlagsMETA XR_PERFORMANCE_METRICS_COUNTER_UINT_VALUE_VALID_BIT_META = 0x00000002; -static const XrPerformanceMetricsCounterFlagsMETA XR_PERFORMANCE_METRICS_COUNTER_FLOAT_VALUE_VALID_BIT_META = 0x00000004; - -typedef struct XrPerformanceMetricsStateMETA { - XrStructureType type; - const void* XR_MAY_ALIAS next; - XrBool32 enabled; -} XrPerformanceMetricsStateMETA; - -typedef struct XrPerformanceMetricsCounterMETA { - XrStructureType type; - const void* XR_MAY_ALIAS next; - XrPerformanceMetricsCounterFlagsMETA counterFlags; - XrPerformanceMetricsCounterUnitMETA counterUnit; - uint32_t uintValue; - float floatValue; -} XrPerformanceMetricsCounterMETA; - -typedef XrResult (XRAPI_PTR *PFN_xrEnumeratePerformanceMetricsCounterPathsMETA)(XrInstance instance, uint32_t counterPathCapacityInput, uint32_t* counterPathCountOutput, XrPath* counterPaths); -typedef XrResult (XRAPI_PTR *PFN_xrSetPerformanceMetricsStateMETA)(XrSession session, const XrPerformanceMetricsStateMETA* state); -typedef XrResult (XRAPI_PTR *PFN_xrGetPerformanceMetricsStateMETA)(XrSession session, XrPerformanceMetricsStateMETA* state); -typedef XrResult (XRAPI_PTR *PFN_xrQueryPerformanceMetricsCounterMETA)(XrSession session, XrPath counterPath, XrPerformanceMetricsCounterMETA* counter); - -#ifndef XR_NO_PROTOTYPES -#ifdef XR_EXTENSION_PROTOTYPES -XRAPI_ATTR XrResult XRAPI_CALL xrEnumeratePerformanceMetricsCounterPathsMETA( - XrInstance instance, - uint32_t counterPathCapacityInput, - uint32_t* counterPathCountOutput, - XrPath* counterPaths); - -XRAPI_ATTR XrResult XRAPI_CALL xrSetPerformanceMetricsStateMETA( - XrSession session, - const XrPerformanceMetricsStateMETA* state); - -XRAPI_ATTR XrResult XRAPI_CALL xrGetPerformanceMetricsStateMETA( - XrSession session, - XrPerformanceMetricsStateMETA* state); - -XRAPI_ATTR XrResult XRAPI_CALL xrQueryPerformanceMetricsCounterMETA( - XrSession session, - XrPath counterPath, - XrPerformanceMetricsCounterMETA* counter); -#endif /* XR_EXTENSION_PROTOTYPES */ -#endif /* !XR_NO_PROTOTYPES */ - - -// XR_FB_spatial_entity_storage_batch is a preprocessor guard. Do not pass it to API calls. -#define XR_FB_spatial_entity_storage_batch 1 -#define XR_FB_spatial_entity_storage_batch_SPEC_VERSION 1 -#define XR_FB_SPATIAL_ENTITY_STORAGE_BATCH_EXTENSION_NAME "XR_FB_spatial_entity_storage_batch" -typedef struct XrSpaceListSaveInfoFB { - XrStructureType type; - const void* XR_MAY_ALIAS next; - uint32_t spaceCount; - XrSpace* spaces; - XrSpaceStorageLocationFB location; -} XrSpaceListSaveInfoFB; - -typedef struct XrEventDataSpaceListSaveCompleteFB { - XrStructureType type; - const void* XR_MAY_ALIAS next; - XrAsyncRequestIdFB requestId; - XrResult result; -} XrEventDataSpaceListSaveCompleteFB; - -typedef XrResult (XRAPI_PTR *PFN_xrSaveSpaceListFB)(XrSession session, const XrSpaceListSaveInfoFB* info, XrAsyncRequestIdFB* requestId); - -#ifndef XR_NO_PROTOTYPES -#ifdef XR_EXTENSION_PROTOTYPES -XRAPI_ATTR XrResult XRAPI_CALL xrSaveSpaceListFB( - XrSession session, - const XrSpaceListSaveInfoFB* info, - XrAsyncRequestIdFB* requestId); -#endif /* XR_EXTENSION_PROTOTYPES */ -#endif /* !XR_NO_PROTOTYPES */ - - -// XR_FB_spatial_entity_user is a preprocessor guard. Do not pass it to API calls. -#define XR_FB_spatial_entity_user 1 -typedef uint64_t XrSpaceUserIdFB; -#define XR_FB_spatial_entity_user_SPEC_VERSION 1 -#define XR_FB_SPATIAL_ENTITY_USER_EXTENSION_NAME "XR_FB_spatial_entity_user" -typedef struct XrSpaceUserCreateInfoFB { - XrStructureType type; - const void* XR_MAY_ALIAS next; - XrSpaceUserIdFB userId; -} XrSpaceUserCreateInfoFB; - -typedef XrResult (XRAPI_PTR *PFN_xrCreateSpaceUserFB)(XrSession session, const XrSpaceUserCreateInfoFB* info, XrSpaceUserFB* user); -typedef XrResult (XRAPI_PTR *PFN_xrGetSpaceUserIdFB)(XrSpaceUserFB user, XrSpaceUserIdFB* userId); -typedef XrResult (XRAPI_PTR *PFN_xrDestroySpaceUserFB)(XrSpaceUserFB user); - -#ifndef XR_NO_PROTOTYPES -#ifdef XR_EXTENSION_PROTOTYPES -XRAPI_ATTR XrResult XRAPI_CALL xrCreateSpaceUserFB( - XrSession session, - const XrSpaceUserCreateInfoFB* info, - XrSpaceUserFB* user); - -XRAPI_ATTR XrResult XRAPI_CALL xrGetSpaceUserIdFB( - XrSpaceUserFB user, - XrSpaceUserIdFB* userId); - -XRAPI_ATTR XrResult XRAPI_CALL xrDestroySpaceUserFB( - XrSpaceUserFB user); -#endif /* XR_EXTENSION_PROTOTYPES */ -#endif /* !XR_NO_PROTOTYPES */ - - -// XR_META_headset_id is a preprocessor guard. Do not pass it to API calls. -#define XR_META_headset_id 1 -#define XR_META_headset_id_SPEC_VERSION 2 -#define XR_META_HEADSET_ID_EXTENSION_NAME "XR_META_headset_id" -// XrSystemHeadsetIdPropertiesMETA extends XrSystemProperties -typedef struct XrSystemHeadsetIdPropertiesMETA { - XrStructureType type; - void* XR_MAY_ALIAS next; - XrUuidEXT id; -} XrSystemHeadsetIdPropertiesMETA; - - - -// XR_META_recommended_layer_resolution is a preprocessor guard. Do not pass it to API calls. -#define XR_META_recommended_layer_resolution 1 -#define XR_META_recommended_layer_resolution_SPEC_VERSION 1 -#define XR_META_RECOMMENDED_LAYER_RESOLUTION_EXTENSION_NAME "XR_META_recommended_layer_resolution" -typedef struct XrRecommendedLayerResolutionMETA { - XrStructureType type; - void* XR_MAY_ALIAS next; - XrExtent2Di recommendedImageDimensions; - XrBool32 isValid; -} XrRecommendedLayerResolutionMETA; - -typedef struct XrRecommendedLayerResolutionGetInfoMETA { - XrStructureType type; - const void* XR_MAY_ALIAS next; - const XrCompositionLayerBaseHeader* layer; - XrTime predictedDisplayTime; -} XrRecommendedLayerResolutionGetInfoMETA; - -typedef XrResult (XRAPI_PTR *PFN_xrGetRecommendedLayerResolutionMETA)(XrSession session, const XrRecommendedLayerResolutionGetInfoMETA* info, XrRecommendedLayerResolutionMETA* resolution); - -#ifndef XR_NO_PROTOTYPES -#ifdef XR_EXTENSION_PROTOTYPES -XRAPI_ATTR XrResult XRAPI_CALL xrGetRecommendedLayerResolutionMETA( - XrSession session, - const XrRecommendedLayerResolutionGetInfoMETA* info, - XrRecommendedLayerResolutionMETA* resolution); -#endif /* XR_EXTENSION_PROTOTYPES */ -#endif /* !XR_NO_PROTOTYPES */ - - -// XR_META_passthrough_color_lut is a preprocessor guard. Do not pass it to API calls. -#define XR_META_passthrough_color_lut 1 -XR_DEFINE_HANDLE(XrPassthroughColorLutMETA) -#define XR_META_passthrough_color_lut_SPEC_VERSION 1 -#define XR_META_PASSTHROUGH_COLOR_LUT_EXTENSION_NAME "XR_META_passthrough_color_lut" - -typedef enum XrPassthroughColorLutChannelsMETA { - XR_PASSTHROUGH_COLOR_LUT_CHANNELS_RGB_META = 1, - XR_PASSTHROUGH_COLOR_LUT_CHANNELS_RGBA_META = 2, - XR_PASSTHROUGH_COLOR_LUT_CHANNELS_MAX_ENUM_META = 0x7FFFFFFF -} XrPassthroughColorLutChannelsMETA; -typedef struct XrPassthroughColorLutDataMETA { - uint32_t bufferSize; - const uint8_t* buffer; -} XrPassthroughColorLutDataMETA; - -typedef struct XrPassthroughColorLutCreateInfoMETA { - XrStructureType type; - const void* XR_MAY_ALIAS next; - XrPassthroughColorLutChannelsMETA channels; - uint32_t resolution; - XrPassthroughColorLutDataMETA data; -} XrPassthroughColorLutCreateInfoMETA; - -typedef struct XrPassthroughColorLutUpdateInfoMETA { - XrStructureType type; - const void* XR_MAY_ALIAS next; - XrPassthroughColorLutDataMETA data; -} XrPassthroughColorLutUpdateInfoMETA; - -// XrPassthroughColorMapLutMETA extends XrPassthroughStyleFB -typedef struct XrPassthroughColorMapLutMETA { - XrStructureType type; - const void* XR_MAY_ALIAS next; - XrPassthroughColorLutMETA colorLut; - float weight; -} XrPassthroughColorMapLutMETA; - -// XrPassthroughColorMapInterpolatedLutMETA extends XrPassthroughStyleFB -typedef struct XrPassthroughColorMapInterpolatedLutMETA { - XrStructureType type; - const void* XR_MAY_ALIAS next; - XrPassthroughColorLutMETA sourceColorLut; - XrPassthroughColorLutMETA targetColorLut; - float weight; -} XrPassthroughColorMapInterpolatedLutMETA; - -// XrSystemPassthroughColorLutPropertiesMETA extends XrSystemProperties -typedef struct XrSystemPassthroughColorLutPropertiesMETA { - XrStructureType type; - const void* XR_MAY_ALIAS next; - uint32_t maxColorLutResolution; -} XrSystemPassthroughColorLutPropertiesMETA; - -typedef XrResult (XRAPI_PTR *PFN_xrCreatePassthroughColorLutMETA)(XrPassthroughFB passthrough, const XrPassthroughColorLutCreateInfoMETA* createInfo, XrPassthroughColorLutMETA* colorLut); -typedef XrResult (XRAPI_PTR *PFN_xrDestroyPassthroughColorLutMETA)(XrPassthroughColorLutMETA colorLut); -typedef XrResult (XRAPI_PTR *PFN_xrUpdatePassthroughColorLutMETA)(XrPassthroughColorLutMETA colorLut, const XrPassthroughColorLutUpdateInfoMETA* updateInfo); - -#ifndef XR_NO_PROTOTYPES -#ifdef XR_EXTENSION_PROTOTYPES -XRAPI_ATTR XrResult XRAPI_CALL xrCreatePassthroughColorLutMETA( - XrPassthroughFB passthrough, - const XrPassthroughColorLutCreateInfoMETA* createInfo, - XrPassthroughColorLutMETA* colorLut); - -XRAPI_ATTR XrResult XRAPI_CALL xrDestroyPassthroughColorLutMETA( - XrPassthroughColorLutMETA colorLut); - -XRAPI_ATTR XrResult XRAPI_CALL xrUpdatePassthroughColorLutMETA( - XrPassthroughColorLutMETA colorLut, - const XrPassthroughColorLutUpdateInfoMETA* updateInfo); -#endif /* XR_EXTENSION_PROTOTYPES */ -#endif /* !XR_NO_PROTOTYPES */ - - -// XR_META_spatial_entity_mesh is a preprocessor guard. Do not pass it to API calls. -#define XR_META_spatial_entity_mesh 1 -#define XR_META_spatial_entity_mesh_SPEC_VERSION 1 -#define XR_META_SPATIAL_ENTITY_MESH_EXTENSION_NAME "XR_META_spatial_entity_mesh" -typedef struct XrSpaceTriangleMeshGetInfoMETA { - XrStructureType type; - const void* XR_MAY_ALIAS next; -} XrSpaceTriangleMeshGetInfoMETA; - -typedef struct XrSpaceTriangleMeshMETA { - XrStructureType type; - void* XR_MAY_ALIAS next; - uint32_t vertexCapacityInput; - uint32_t vertexCountOutput; - XrVector3f* vertices; - uint32_t indexCapacityInput; - uint32_t indexCountOutput; - uint32_t* indices; -} XrSpaceTriangleMeshMETA; - -typedef XrResult (XRAPI_PTR *PFN_xrGetSpaceTriangleMeshMETA)(XrSpace space, const XrSpaceTriangleMeshGetInfoMETA* getInfo, XrSpaceTriangleMeshMETA* triangleMeshOutput); - -#ifndef XR_NO_PROTOTYPES -#ifdef XR_EXTENSION_PROTOTYPES -XRAPI_ATTR XrResult XRAPI_CALL xrGetSpaceTriangleMeshMETA( - XrSpace space, - const XrSpaceTriangleMeshGetInfoMETA* getInfo, - XrSpaceTriangleMeshMETA* triangleMeshOutput); -#endif /* XR_EXTENSION_PROTOTYPES */ -#endif /* !XR_NO_PROTOTYPES */ - - -// XR_META_automatic_layer_filter is a preprocessor guard. Do not pass it to API calls. -#define XR_META_automatic_layer_filter 1 -#define XR_META_automatic_layer_filter_SPEC_VERSION 1 -#define XR_META_AUTOMATIC_LAYER_FILTER_EXTENSION_NAME "XR_META_automatic_layer_filter" - - -// XR_META_touch_controller_plus is a preprocessor guard. Do not pass it to API calls. -#define XR_META_touch_controller_plus 1 -#define XR_META_touch_controller_plus_SPEC_VERSION 1 -#define XR_META_TOUCH_CONTROLLER_PLUS_EXTENSION_NAME "XR_META_touch_controller_plus" - - -// XR_FB_face_tracking2 is a preprocessor guard. Do not pass it to API calls. -#define XR_FB_face_tracking2 1 -XR_DEFINE_HANDLE(XrFaceTracker2FB) -#define XR_FB_face_tracking2_SPEC_VERSION 1 -#define XR_FB_FACE_TRACKING2_EXTENSION_NAME "XR_FB_face_tracking2" - -typedef enum XrFaceExpression2FB { - XR_FACE_EXPRESSION2_BROW_LOWERER_L_FB = 0, - XR_FACE_EXPRESSION2_BROW_LOWERER_R_FB = 1, - XR_FACE_EXPRESSION2_CHEEK_PUFF_L_FB = 2, - XR_FACE_EXPRESSION2_CHEEK_PUFF_R_FB = 3, - XR_FACE_EXPRESSION2_CHEEK_RAISER_L_FB = 4, - XR_FACE_EXPRESSION2_CHEEK_RAISER_R_FB = 5, - XR_FACE_EXPRESSION2_CHEEK_SUCK_L_FB = 6, - XR_FACE_EXPRESSION2_CHEEK_SUCK_R_FB = 7, - XR_FACE_EXPRESSION2_CHIN_RAISER_B_FB = 8, - XR_FACE_EXPRESSION2_CHIN_RAISER_T_FB = 9, - XR_FACE_EXPRESSION2_DIMPLER_L_FB = 10, - XR_FACE_EXPRESSION2_DIMPLER_R_FB = 11, - XR_FACE_EXPRESSION2_EYES_CLOSED_L_FB = 12, - XR_FACE_EXPRESSION2_EYES_CLOSED_R_FB = 13, - XR_FACE_EXPRESSION2_EYES_LOOK_DOWN_L_FB = 14, - XR_FACE_EXPRESSION2_EYES_LOOK_DOWN_R_FB = 15, - XR_FACE_EXPRESSION2_EYES_LOOK_LEFT_L_FB = 16, - XR_FACE_EXPRESSION2_EYES_LOOK_LEFT_R_FB = 17, - XR_FACE_EXPRESSION2_EYES_LOOK_RIGHT_L_FB = 18, - XR_FACE_EXPRESSION2_EYES_LOOK_RIGHT_R_FB = 19, - XR_FACE_EXPRESSION2_EYES_LOOK_UP_L_FB = 20, - XR_FACE_EXPRESSION2_EYES_LOOK_UP_R_FB = 21, - XR_FACE_EXPRESSION2_INNER_BROW_RAISER_L_FB = 22, - XR_FACE_EXPRESSION2_INNER_BROW_RAISER_R_FB = 23, - XR_FACE_EXPRESSION2_JAW_DROP_FB = 24, - XR_FACE_EXPRESSION2_JAW_SIDEWAYS_LEFT_FB = 25, - XR_FACE_EXPRESSION2_JAW_SIDEWAYS_RIGHT_FB = 26, - XR_FACE_EXPRESSION2_JAW_THRUST_FB = 27, - XR_FACE_EXPRESSION2_LID_TIGHTENER_L_FB = 28, - XR_FACE_EXPRESSION2_LID_TIGHTENER_R_FB = 29, - XR_FACE_EXPRESSION2_LIP_CORNER_DEPRESSOR_L_FB = 30, - XR_FACE_EXPRESSION2_LIP_CORNER_DEPRESSOR_R_FB = 31, - XR_FACE_EXPRESSION2_LIP_CORNER_PULLER_L_FB = 32, - XR_FACE_EXPRESSION2_LIP_CORNER_PULLER_R_FB = 33, - XR_FACE_EXPRESSION2_LIP_FUNNELER_LB_FB = 34, - XR_FACE_EXPRESSION2_LIP_FUNNELER_LT_FB = 35, - XR_FACE_EXPRESSION2_LIP_FUNNELER_RB_FB = 36, - XR_FACE_EXPRESSION2_LIP_FUNNELER_RT_FB = 37, - XR_FACE_EXPRESSION2_LIP_PRESSOR_L_FB = 38, - XR_FACE_EXPRESSION2_LIP_PRESSOR_R_FB = 39, - XR_FACE_EXPRESSION2_LIP_PUCKER_L_FB = 40, - XR_FACE_EXPRESSION2_LIP_PUCKER_R_FB = 41, - XR_FACE_EXPRESSION2_LIP_STRETCHER_L_FB = 42, - XR_FACE_EXPRESSION2_LIP_STRETCHER_R_FB = 43, - XR_FACE_EXPRESSION2_LIP_SUCK_LB_FB = 44, - XR_FACE_EXPRESSION2_LIP_SUCK_LT_FB = 45, - XR_FACE_EXPRESSION2_LIP_SUCK_RB_FB = 46, - XR_FACE_EXPRESSION2_LIP_SUCK_RT_FB = 47, - XR_FACE_EXPRESSION2_LIP_TIGHTENER_L_FB = 48, - XR_FACE_EXPRESSION2_LIP_TIGHTENER_R_FB = 49, - XR_FACE_EXPRESSION2_LIPS_TOWARD_FB = 50, - XR_FACE_EXPRESSION2_LOWER_LIP_DEPRESSOR_L_FB = 51, - XR_FACE_EXPRESSION2_LOWER_LIP_DEPRESSOR_R_FB = 52, - XR_FACE_EXPRESSION2_MOUTH_LEFT_FB = 53, - XR_FACE_EXPRESSION2_MOUTH_RIGHT_FB = 54, - XR_FACE_EXPRESSION2_NOSE_WRINKLER_L_FB = 55, - XR_FACE_EXPRESSION2_NOSE_WRINKLER_R_FB = 56, - XR_FACE_EXPRESSION2_OUTER_BROW_RAISER_L_FB = 57, - XR_FACE_EXPRESSION2_OUTER_BROW_RAISER_R_FB = 58, - XR_FACE_EXPRESSION2_UPPER_LID_RAISER_L_FB = 59, - XR_FACE_EXPRESSION2_UPPER_LID_RAISER_R_FB = 60, - XR_FACE_EXPRESSION2_UPPER_LIP_RAISER_L_FB = 61, - XR_FACE_EXPRESSION2_UPPER_LIP_RAISER_R_FB = 62, - XR_FACE_EXPRESSION2_TONGUE_TIP_INTERDENTAL_FB = 63, - XR_FACE_EXPRESSION2_TONGUE_TIP_ALVEOLAR_FB = 64, - XR_FACE_EXPRESSION2_TONGUE_FRONT_DORSAL_PALATE_FB = 65, - XR_FACE_EXPRESSION2_TONGUE_MID_DORSAL_PALATE_FB = 66, - XR_FACE_EXPRESSION2_TONGUE_BACK_DORSAL_VELAR_FB = 67, - XR_FACE_EXPRESSION2_TONGUE_OUT_FB = 68, - XR_FACE_EXPRESSION2_TONGUE_RETREAT_FB = 69, - XR_FACE_EXPRESSION2_COUNT_FB = 70, - XR_FACE_EXPRESSION_2FB_MAX_ENUM_FB = 0x7FFFFFFF -} XrFaceExpression2FB; - -typedef enum XrFaceExpressionSet2FB { - XR_FACE_EXPRESSION_SET2_DEFAULT_FB = 0, - XR_FACE_EXPRESSION_SET_2FB_MAX_ENUM_FB = 0x7FFFFFFF -} XrFaceExpressionSet2FB; - -typedef enum XrFaceTrackingDataSource2FB { - XR_FACE_TRACKING_DATA_SOURCE2_VISUAL_FB = 0, - XR_FACE_TRACKING_DATA_SOURCE2_AUDIO_FB = 1, - XR_FACE_TRACKING_DATA_SOURCE_2FB_MAX_ENUM_FB = 0x7FFFFFFF -} XrFaceTrackingDataSource2FB; - -typedef enum XrFaceConfidence2FB { - XR_FACE_CONFIDENCE2_LOWER_FACE_FB = 0, - XR_FACE_CONFIDENCE2_UPPER_FACE_FB = 1, - XR_FACE_CONFIDENCE2_COUNT_FB = 2, - XR_FACE_CONFIDENCE_2FB_MAX_ENUM_FB = 0x7FFFFFFF -} XrFaceConfidence2FB; -// XrSystemFaceTrackingProperties2FB extends XrSystemProperties -typedef struct XrSystemFaceTrackingProperties2FB { - XrStructureType type; - void* XR_MAY_ALIAS next; - XrBool32 supportsVisualFaceTracking; - XrBool32 supportsAudioFaceTracking; -} XrSystemFaceTrackingProperties2FB; - -typedef struct XrFaceTrackerCreateInfo2FB { - XrStructureType type; - const void* XR_MAY_ALIAS next; - XrFaceExpressionSet2FB faceExpressionSet; - uint32_t requestedDataSourceCount; - XrFaceTrackingDataSource2FB* requestedDataSources; -} XrFaceTrackerCreateInfo2FB; - -typedef struct XrFaceExpressionInfo2FB { - XrStructureType type; - const void* XR_MAY_ALIAS next; - XrTime time; -} XrFaceExpressionInfo2FB; - -typedef struct XrFaceExpressionWeights2FB { - XrStructureType type; - void* XR_MAY_ALIAS next; - uint32_t weightCount; - float* weights; - uint32_t confidenceCount; - float* confidences; - XrBool32 isValid; - XrBool32 isEyeFollowingBlendshapesValid; - XrFaceTrackingDataSource2FB dataSource; - XrTime time; -} XrFaceExpressionWeights2FB; - -typedef XrResult (XRAPI_PTR *PFN_xrCreateFaceTracker2FB)(XrSession session, const XrFaceTrackerCreateInfo2FB* createInfo, XrFaceTracker2FB* faceTracker); -typedef XrResult (XRAPI_PTR *PFN_xrDestroyFaceTracker2FB)(XrFaceTracker2FB faceTracker); -typedef XrResult (XRAPI_PTR *PFN_xrGetFaceExpressionWeights2FB)(XrFaceTracker2FB faceTracker, const XrFaceExpressionInfo2FB* expressionInfo, XrFaceExpressionWeights2FB* expressionWeights); - -#ifndef XR_NO_PROTOTYPES -#ifdef XR_EXTENSION_PROTOTYPES -XRAPI_ATTR XrResult XRAPI_CALL xrCreateFaceTracker2FB( - XrSession session, - const XrFaceTrackerCreateInfo2FB* createInfo, - XrFaceTracker2FB* faceTracker); - -XRAPI_ATTR XrResult XRAPI_CALL xrDestroyFaceTracker2FB( - XrFaceTracker2FB faceTracker); - -XRAPI_ATTR XrResult XRAPI_CALL xrGetFaceExpressionWeights2FB( - XrFaceTracker2FB faceTracker, - const XrFaceExpressionInfo2FB* expressionInfo, - XrFaceExpressionWeights2FB* expressionWeights); -#endif /* XR_EXTENSION_PROTOTYPES */ -#endif /* !XR_NO_PROTOTYPES */ - - -// XR_META_environment_depth is a preprocessor guard. Do not pass it to API calls. -#define XR_META_environment_depth 1 -XR_DEFINE_HANDLE(XrEnvironmentDepthProviderMETA) -XR_DEFINE_HANDLE(XrEnvironmentDepthSwapchainMETA) -#define XR_META_environment_depth_SPEC_VERSION 1 -#define XR_META_ENVIRONMENT_DEPTH_EXTENSION_NAME "XR_META_environment_depth" -typedef XrFlags64 XrEnvironmentDepthProviderCreateFlagsMETA; - -// Flag bits for XrEnvironmentDepthProviderCreateFlagsMETA - -typedef XrFlags64 XrEnvironmentDepthSwapchainCreateFlagsMETA; - -// Flag bits for XrEnvironmentDepthSwapchainCreateFlagsMETA - -typedef struct XrEnvironmentDepthProviderCreateInfoMETA { - XrStructureType type; - const void* XR_MAY_ALIAS next; - XrEnvironmentDepthProviderCreateFlagsMETA createFlags; -} XrEnvironmentDepthProviderCreateInfoMETA; - -typedef struct XrEnvironmentDepthSwapchainCreateInfoMETA { - XrStructureType type; - const void* XR_MAY_ALIAS next; - XrEnvironmentDepthSwapchainCreateFlagsMETA createFlags; -} XrEnvironmentDepthSwapchainCreateInfoMETA; - -typedef struct XrEnvironmentDepthSwapchainStateMETA { - XrStructureType type; - void* XR_MAY_ALIAS next; - uint32_t width; - uint32_t height; -} XrEnvironmentDepthSwapchainStateMETA; - -typedef struct XrEnvironmentDepthImageAcquireInfoMETA { - XrStructureType type; - const void* XR_MAY_ALIAS next; - XrSpace space; - XrTime displayTime; -} XrEnvironmentDepthImageAcquireInfoMETA; - -typedef struct XrEnvironmentDepthImageViewMETA { - XrStructureType type; - const void* XR_MAY_ALIAS next; - XrFovf fov; - XrPosef pose; -} XrEnvironmentDepthImageViewMETA; - -typedef struct XrEnvironmentDepthImageMETA { - XrStructureType type; - const void* XR_MAY_ALIAS next; - uint32_t swapchainIndex; - float nearZ; - float farZ; - XrEnvironmentDepthImageViewMETA views[2]; -} XrEnvironmentDepthImageMETA; - -typedef struct XrEnvironmentDepthHandRemovalSetInfoMETA { - XrStructureType type; - const void* XR_MAY_ALIAS next; - XrBool32 enabled; -} XrEnvironmentDepthHandRemovalSetInfoMETA; - -// XrSystemEnvironmentDepthPropertiesMETA extends XrSystemProperties -typedef struct XrSystemEnvironmentDepthPropertiesMETA { - XrStructureType type; - void* XR_MAY_ALIAS next; - XrBool32 supportsEnvironmentDepth; - XrBool32 supportsHandRemoval; -} XrSystemEnvironmentDepthPropertiesMETA; - -typedef XrResult (XRAPI_PTR *PFN_xrCreateEnvironmentDepthProviderMETA)(XrSession session, const XrEnvironmentDepthProviderCreateInfoMETA* createInfo, XrEnvironmentDepthProviderMETA* environmentDepthProvider); -typedef XrResult (XRAPI_PTR *PFN_xrDestroyEnvironmentDepthProviderMETA)(XrEnvironmentDepthProviderMETA environmentDepthProvider); -typedef XrResult (XRAPI_PTR *PFN_xrStartEnvironmentDepthProviderMETA)(XrEnvironmentDepthProviderMETA environmentDepthProvider); -typedef XrResult (XRAPI_PTR *PFN_xrStopEnvironmentDepthProviderMETA)(XrEnvironmentDepthProviderMETA environmentDepthProvider); -typedef XrResult (XRAPI_PTR *PFN_xrCreateEnvironmentDepthSwapchainMETA)(XrEnvironmentDepthProviderMETA environmentDepthProvider, const XrEnvironmentDepthSwapchainCreateInfoMETA* createInfo, XrEnvironmentDepthSwapchainMETA* swapchain); -typedef XrResult (XRAPI_PTR *PFN_xrDestroyEnvironmentDepthSwapchainMETA)(XrEnvironmentDepthSwapchainMETA swapchain); -typedef XrResult (XRAPI_PTR *PFN_xrEnumerateEnvironmentDepthSwapchainImagesMETA)(XrEnvironmentDepthSwapchainMETA swapchain, uint32_t imageCapacityInput, uint32_t* imageCountOutput, XrSwapchainImageBaseHeader* images); -typedef XrResult (XRAPI_PTR *PFN_xrGetEnvironmentDepthSwapchainStateMETA)(XrEnvironmentDepthSwapchainMETA swapchain, XrEnvironmentDepthSwapchainStateMETA* state); -typedef XrResult (XRAPI_PTR *PFN_xrAcquireEnvironmentDepthImageMETA)(XrEnvironmentDepthProviderMETA environmentDepthProvider, const XrEnvironmentDepthImageAcquireInfoMETA* acquireInfo, XrEnvironmentDepthImageMETA* environmentDepthImage); -typedef XrResult (XRAPI_PTR *PFN_xrSetEnvironmentDepthHandRemovalMETA)(XrEnvironmentDepthProviderMETA environmentDepthProvider, const XrEnvironmentDepthHandRemovalSetInfoMETA* setInfo); - -#ifndef XR_NO_PROTOTYPES -#ifdef XR_EXTENSION_PROTOTYPES -XRAPI_ATTR XrResult XRAPI_CALL xrCreateEnvironmentDepthProviderMETA( - XrSession session, - const XrEnvironmentDepthProviderCreateInfoMETA* createInfo, - XrEnvironmentDepthProviderMETA* environmentDepthProvider); - -XRAPI_ATTR XrResult XRAPI_CALL xrDestroyEnvironmentDepthProviderMETA( - XrEnvironmentDepthProviderMETA environmentDepthProvider); - -XRAPI_ATTR XrResult XRAPI_CALL xrStartEnvironmentDepthProviderMETA( - XrEnvironmentDepthProviderMETA environmentDepthProvider); - -XRAPI_ATTR XrResult XRAPI_CALL xrStopEnvironmentDepthProviderMETA( - XrEnvironmentDepthProviderMETA environmentDepthProvider); - -XRAPI_ATTR XrResult XRAPI_CALL xrCreateEnvironmentDepthSwapchainMETA( - XrEnvironmentDepthProviderMETA environmentDepthProvider, - const XrEnvironmentDepthSwapchainCreateInfoMETA* createInfo, - XrEnvironmentDepthSwapchainMETA* swapchain); - -XRAPI_ATTR XrResult XRAPI_CALL xrDestroyEnvironmentDepthSwapchainMETA( - XrEnvironmentDepthSwapchainMETA swapchain); - -XRAPI_ATTR XrResult XRAPI_CALL xrEnumerateEnvironmentDepthSwapchainImagesMETA( - XrEnvironmentDepthSwapchainMETA swapchain, - uint32_t imageCapacityInput, - uint32_t* imageCountOutput, - XrSwapchainImageBaseHeader* images); - -XRAPI_ATTR XrResult XRAPI_CALL xrGetEnvironmentDepthSwapchainStateMETA( - XrEnvironmentDepthSwapchainMETA swapchain, - XrEnvironmentDepthSwapchainStateMETA* state); - -XRAPI_ATTR XrResult XRAPI_CALL xrAcquireEnvironmentDepthImageMETA( - XrEnvironmentDepthProviderMETA environmentDepthProvider, - const XrEnvironmentDepthImageAcquireInfoMETA* acquireInfo, - XrEnvironmentDepthImageMETA* environmentDepthImage); - -XRAPI_ATTR XrResult XRAPI_CALL xrSetEnvironmentDepthHandRemovalMETA( - XrEnvironmentDepthProviderMETA environmentDepthProvider, - const XrEnvironmentDepthHandRemovalSetInfoMETA* setInfo); -#endif /* XR_EXTENSION_PROTOTYPES */ -#endif /* !XR_NO_PROTOTYPES */ - - -// XR_EXT_uuid is a preprocessor guard. Do not pass it to API calls. -#define XR_EXT_uuid 1 -#define XR_EXT_uuid_SPEC_VERSION 1 -#define XR_EXT_UUID_EXTENSION_NAME "XR_EXT_uuid" -#define XR_UUID_SIZE_EXT 16 - - -// XR_EXT_hand_interaction is a preprocessor guard. Do not pass it to API calls. -#define XR_EXT_hand_interaction 1 -#define XR_EXT_hand_interaction_SPEC_VERSION 1 -#define XR_EXT_HAND_INTERACTION_EXTENSION_NAME "XR_EXT_hand_interaction" - - -// XR_QCOM_tracking_optimization_settings is a preprocessor guard. Do not pass it to API calls. -#define XR_QCOM_tracking_optimization_settings 1 -#define XR_QCOM_tracking_optimization_settings_SPEC_VERSION 1 -#define XR_QCOM_TRACKING_OPTIMIZATION_SETTINGS_EXTENSION_NAME "XR_QCOM_tracking_optimization_settings" - -typedef enum XrTrackingOptimizationSettingsDomainQCOM { - XR_TRACKING_OPTIMIZATION_SETTINGS_DOMAIN_ALL_QCOM = 1, - XR_TRACKING_OPTIMIZATION_SETTINGS_DOMAIN_MAX_ENUM_QCOM = 0x7FFFFFFF -} XrTrackingOptimizationSettingsDomainQCOM; - -typedef enum XrTrackingOptimizationSettingsHintQCOM { - XR_TRACKING_OPTIMIZATION_SETTINGS_HINT_NONE_QCOM = 0, - XR_TRACKING_OPTIMIZATION_SETTINGS_HINT_LONG_RANGE_PRIORIZATION_QCOM = 1, - XR_TRACKING_OPTIMIZATION_SETTINGS_HINT_CLOSE_RANGE_PRIORIZATION_QCOM = 2, - XR_TRACKING_OPTIMIZATION_SETTINGS_HINT_LOW_POWER_PRIORIZATION_QCOM = 3, - XR_TRACKING_OPTIMIZATION_SETTINGS_HINT_HIGH_POWER_PRIORIZATION_QCOM = 4, - XR_TRACKING_OPTIMIZATION_SETTINGS_HINT_MAX_ENUM_QCOM = 0x7FFFFFFF -} XrTrackingOptimizationSettingsHintQCOM; -typedef XrResult (XRAPI_PTR *PFN_xrSetTrackingOptimizationSettingsHintQCOM)(XrSession session, XrTrackingOptimizationSettingsDomainQCOM domain, XrTrackingOptimizationSettingsHintQCOM hint); - -#ifndef XR_NO_PROTOTYPES -#ifdef XR_EXTENSION_PROTOTYPES -XRAPI_ATTR XrResult XRAPI_CALL xrSetTrackingOptimizationSettingsHintQCOM( - XrSession session, - XrTrackingOptimizationSettingsDomainQCOM domain, - XrTrackingOptimizationSettingsHintQCOM hint); -#endif /* XR_EXTENSION_PROTOTYPES */ -#endif /* !XR_NO_PROTOTYPES */ - - -// XR_HTC_passthrough is a preprocessor guard. Do not pass it to API calls. -#define XR_HTC_passthrough 1 -XR_DEFINE_HANDLE(XrPassthroughHTC) -#define XR_HTC_passthrough_SPEC_VERSION 1 -#define XR_HTC_PASSTHROUGH_EXTENSION_NAME "XR_HTC_passthrough" - -typedef enum XrPassthroughFormHTC { - XR_PASSTHROUGH_FORM_PLANAR_HTC = 0, - XR_PASSTHROUGH_FORM_PROJECTED_HTC = 1, - XR_PASSTHROUGH_FORM_MAX_ENUM_HTC = 0x7FFFFFFF -} XrPassthroughFormHTC; -typedef struct XrPassthroughCreateInfoHTC { - XrStructureType type; - const void* XR_MAY_ALIAS next; - XrPassthroughFormHTC form; -} XrPassthroughCreateInfoHTC; - -typedef struct XrPassthroughColorHTC { - XrStructureType type; - const void* XR_MAY_ALIAS next; - float alpha; -} XrPassthroughColorHTC; - -// XrPassthroughMeshTransformInfoHTC extends XrCompositionLayerPassthroughHTC -typedef struct XrPassthroughMeshTransformInfoHTC { - XrStructureType type; - const void* XR_MAY_ALIAS next; - uint32_t vertexCount; - const XrVector3f* vertices; - uint32_t indexCount; - const uint32_t* indices; - XrSpace baseSpace; - XrTime time; - XrPosef pose; - XrVector3f scale; -} XrPassthroughMeshTransformInfoHTC; - -typedef struct XrCompositionLayerPassthroughHTC { - XrStructureType type; - const void* XR_MAY_ALIAS next; - XrCompositionLayerFlags layerFlags; - XrSpace space; - XrPassthroughHTC passthrough; - XrPassthroughColorHTC color; -} XrCompositionLayerPassthroughHTC; - -typedef XrResult (XRAPI_PTR *PFN_xrCreatePassthroughHTC)(XrSession session, const XrPassthroughCreateInfoHTC* createInfo, XrPassthroughHTC* passthrough); -typedef XrResult (XRAPI_PTR *PFN_xrDestroyPassthroughHTC)(XrPassthroughHTC passthrough); - -#ifndef XR_NO_PROTOTYPES -#ifdef XR_EXTENSION_PROTOTYPES -XRAPI_ATTR XrResult XRAPI_CALL xrCreatePassthroughHTC( - XrSession session, - const XrPassthroughCreateInfoHTC* createInfo, - XrPassthroughHTC* passthrough); - -XRAPI_ATTR XrResult XRAPI_CALL xrDestroyPassthroughHTC( - XrPassthroughHTC passthrough); -#endif /* XR_EXTENSION_PROTOTYPES */ -#endif /* !XR_NO_PROTOTYPES */ - - -// XR_HTC_foveation is a preprocessor guard. Do not pass it to API calls. -#define XR_HTC_foveation 1 -#define XR_HTC_foveation_SPEC_VERSION 1 -#define XR_HTC_FOVEATION_EXTENSION_NAME "XR_HTC_foveation" - -typedef enum XrFoveationModeHTC { - XR_FOVEATION_MODE_DISABLE_HTC = 0, - XR_FOVEATION_MODE_FIXED_HTC = 1, - XR_FOVEATION_MODE_DYNAMIC_HTC = 2, - XR_FOVEATION_MODE_CUSTOM_HTC = 3, - XR_FOVEATION_MODE_MAX_ENUM_HTC = 0x7FFFFFFF -} XrFoveationModeHTC; - -typedef enum XrFoveationLevelHTC { - XR_FOVEATION_LEVEL_NONE_HTC = 0, - XR_FOVEATION_LEVEL_LOW_HTC = 1, - XR_FOVEATION_LEVEL_MEDIUM_HTC = 2, - XR_FOVEATION_LEVEL_HIGH_HTC = 3, - XR_FOVEATION_LEVEL_MAX_ENUM_HTC = 0x7FFFFFFF -} XrFoveationLevelHTC; -typedef XrFlags64 XrFoveationDynamicFlagsHTC; - -// Flag bits for XrFoveationDynamicFlagsHTC -static const XrFoveationDynamicFlagsHTC XR_FOVEATION_DYNAMIC_LEVEL_ENABLED_BIT_HTC = 0x00000001; -static const XrFoveationDynamicFlagsHTC XR_FOVEATION_DYNAMIC_CLEAR_FOV_ENABLED_BIT_HTC = 0x00000002; -static const XrFoveationDynamicFlagsHTC XR_FOVEATION_DYNAMIC_FOCAL_CENTER_OFFSET_ENABLED_BIT_HTC = 0x00000004; - -typedef struct XrFoveationApplyInfoHTC { - XrStructureType type; - const void* XR_MAY_ALIAS next; - XrFoveationModeHTC mode; - uint32_t subImageCount; - XrSwapchainSubImage* subImages; -} XrFoveationApplyInfoHTC; - -typedef struct XrFoveationConfigurationHTC { - XrFoveationLevelHTC level; - float clearFovDegree; - XrVector2f focalCenterOffset; -} XrFoveationConfigurationHTC; - -// XrFoveationDynamicModeInfoHTC extends XrFoveationApplyInfoHTC -typedef struct XrFoveationDynamicModeInfoHTC { - XrStructureType type; - const void* XR_MAY_ALIAS next; - XrFoveationDynamicFlagsHTC dynamicFlags; -} XrFoveationDynamicModeInfoHTC; - -// XrFoveationCustomModeInfoHTC extends XrFoveationApplyInfoHTC -typedef struct XrFoveationCustomModeInfoHTC { - XrStructureType type; - const void* XR_MAY_ALIAS next; - uint32_t configCount; - const XrFoveationConfigurationHTC* configs; -} XrFoveationCustomModeInfoHTC; - -typedef XrResult (XRAPI_PTR *PFN_xrApplyFoveationHTC)(XrSession session, const XrFoveationApplyInfoHTC* applyInfo); - -#ifndef XR_NO_PROTOTYPES -#ifdef XR_EXTENSION_PROTOTYPES -XRAPI_ATTR XrResult XRAPI_CALL xrApplyFoveationHTC( - XrSession session, - const XrFoveationApplyInfoHTC* applyInfo); -#endif /* XR_EXTENSION_PROTOTYPES */ -#endif /* !XR_NO_PROTOTYPES */ - - -// XR_HTC_anchor is a preprocessor guard. Do not pass it to API calls. -#define XR_HTC_anchor 1 -#define XR_MAX_SPATIAL_ANCHOR_NAME_SIZE_HTC 256 -#define XR_HTC_anchor_SPEC_VERSION 1 -#define XR_HTC_ANCHOR_EXTENSION_NAME "XR_HTC_anchor" -// XrSystemAnchorPropertiesHTC extends XrSystemProperties -typedef struct XrSystemAnchorPropertiesHTC { - XrStructureType type; - void* XR_MAY_ALIAS next; - XrBool32 supportsAnchor; -} XrSystemAnchorPropertiesHTC; - -typedef struct XrSpatialAnchorNameHTC { - char name[XR_MAX_SPATIAL_ANCHOR_NAME_SIZE_HTC]; -} XrSpatialAnchorNameHTC; - -typedef struct XrSpatialAnchorCreateInfoHTC { - XrStructureType type; - const void* XR_MAY_ALIAS next; - XrSpace space; - XrPosef poseInSpace; - XrSpatialAnchorNameHTC name; -} XrSpatialAnchorCreateInfoHTC; - -typedef XrResult (XRAPI_PTR *PFN_xrCreateSpatialAnchorHTC)(XrSession session, const XrSpatialAnchorCreateInfoHTC* createInfo, XrSpace* anchor); -typedef XrResult (XRAPI_PTR *PFN_xrGetSpatialAnchorNameHTC)(XrSpace anchor, XrSpatialAnchorNameHTC* name); - -#ifndef XR_NO_PROTOTYPES -#ifdef XR_EXTENSION_PROTOTYPES -XRAPI_ATTR XrResult XRAPI_CALL xrCreateSpatialAnchorHTC( - XrSession session, - const XrSpatialAnchorCreateInfoHTC* createInfo, - XrSpace* anchor); - -XRAPI_ATTR XrResult XRAPI_CALL xrGetSpatialAnchorNameHTC( - XrSpace anchor, - XrSpatialAnchorNameHTC* name); -#endif /* XR_EXTENSION_PROTOTYPES */ -#endif /* !XR_NO_PROTOTYPES */ - - -// XR_EXT_active_action_set_priority is a preprocessor guard. Do not pass it to API calls. -#define XR_EXT_active_action_set_priority 1 -#define XR_EXT_active_action_set_priority_SPEC_VERSION 1 -#define XR_EXT_ACTIVE_ACTION_SET_PRIORITY_EXTENSION_NAME "XR_EXT_active_action_set_priority" -typedef struct XrActiveActionSetPriorityEXT { - XrActionSet actionSet; - uint32_t priorityOverride; -} XrActiveActionSetPriorityEXT; - -// XrActiveActionSetPrioritiesEXT extends XrActionsSyncInfo -typedef struct XrActiveActionSetPrioritiesEXT { - XrStructureType type; - const void* XR_MAY_ALIAS next; - uint32_t actionSetPriorityCount; - const XrActiveActionSetPriorityEXT* actionSetPriorities; -} XrActiveActionSetPrioritiesEXT; - - - -// XR_MNDX_force_feedback_curl is a preprocessor guard. Do not pass it to API calls. -#define XR_MNDX_force_feedback_curl 1 -#define XR_MNDX_force_feedback_curl_SPEC_VERSION 1 -#define XR_MNDX_FORCE_FEEDBACK_CURL_EXTENSION_NAME "XR_MNDX_force_feedback_curl" - -typedef enum XrForceFeedbackCurlLocationMNDX { - XR_FORCE_FEEDBACK_CURL_LOCATION_THUMB_CURL_MNDX = 0, - XR_FORCE_FEEDBACK_CURL_LOCATION_INDEX_CURL_MNDX = 1, - XR_FORCE_FEEDBACK_CURL_LOCATION_MIDDLE_CURL_MNDX = 2, - XR_FORCE_FEEDBACK_CURL_LOCATION_RING_CURL_MNDX = 3, - XR_FORCE_FEEDBACK_CURL_LOCATION_LITTLE_CURL_MNDX = 4, - XR_FORCE_FEEDBACK_CURL_LOCATION_MAX_ENUM_MNDX = 0x7FFFFFFF -} XrForceFeedbackCurlLocationMNDX; -// XrSystemForceFeedbackCurlPropertiesMNDX extends XrSystemProperties -typedef struct XrSystemForceFeedbackCurlPropertiesMNDX { - XrStructureType type; - void* XR_MAY_ALIAS next; - XrBool32 supportsForceFeedbackCurl; -} XrSystemForceFeedbackCurlPropertiesMNDX; - -typedef struct XrForceFeedbackCurlApplyLocationMNDX { - XrForceFeedbackCurlLocationMNDX location; - float value; -} XrForceFeedbackCurlApplyLocationMNDX; - -typedef struct XrForceFeedbackCurlApplyLocationsMNDX { - XrStructureType type; - const void* XR_MAY_ALIAS next; - uint32_t locationCount; - XrForceFeedbackCurlApplyLocationMNDX* locations; -} XrForceFeedbackCurlApplyLocationsMNDX; - -typedef XrResult (XRAPI_PTR *PFN_xrApplyForceFeedbackCurlMNDX)(XrHandTrackerEXT handTracker, const XrForceFeedbackCurlApplyLocationsMNDX* locations); - -#ifndef XR_NO_PROTOTYPES -#ifdef XR_EXTENSION_PROTOTYPES -XRAPI_ATTR XrResult XRAPI_CALL xrApplyForceFeedbackCurlMNDX( - XrHandTrackerEXT handTracker, - const XrForceFeedbackCurlApplyLocationsMNDX* locations); -#endif /* XR_EXTENSION_PROTOTYPES */ -#endif /* !XR_NO_PROTOTYPES */ - - -// XR_BD_controller_interaction is a preprocessor guard. Do not pass it to API calls. -#define XR_BD_controller_interaction 1 -#define XR_BD_controller_interaction_SPEC_VERSION 2 -#define XR_BD_CONTROLLER_INTERACTION_EXTENSION_NAME "XR_BD_controller_interaction" - - -// XR_EXT_local_floor is a preprocessor guard. Do not pass it to API calls. -#define XR_EXT_local_floor 1 -#define XR_EXT_local_floor_SPEC_VERSION 1 -#define XR_EXT_LOCAL_FLOOR_EXTENSION_NAME "XR_EXT_local_floor" - - -// XR_EXT_hand_tracking_data_source is a preprocessor guard. Do not pass it to API calls. -#define XR_EXT_hand_tracking_data_source 1 -#define XR_EXT_hand_tracking_data_source_SPEC_VERSION 1 -#define XR_EXT_HAND_TRACKING_DATA_SOURCE_EXTENSION_NAME "XR_EXT_hand_tracking_data_source" - -typedef enum XrHandTrackingDataSourceEXT { - XR_HAND_TRACKING_DATA_SOURCE_UNOBSTRUCTED_EXT = 1, - XR_HAND_TRACKING_DATA_SOURCE_CONTROLLER_EXT = 2, - XR_HAND_TRACKING_DATA_SOURCE_MAX_ENUM_EXT = 0x7FFFFFFF -} XrHandTrackingDataSourceEXT; -// XrHandTrackingDataSourceInfoEXT extends XrHandTrackerCreateInfoEXT -typedef struct XrHandTrackingDataSourceInfoEXT { - XrStructureType type; - const void* XR_MAY_ALIAS next; - uint32_t requestedDataSourceCount; - XrHandTrackingDataSourceEXT* requestedDataSources; -} XrHandTrackingDataSourceInfoEXT; - -// XrHandTrackingDataSourceStateEXT extends XrHandJointLocationsEXT -typedef struct XrHandTrackingDataSourceStateEXT { - XrStructureType type; - void* XR_MAY_ALIAS next; - XrBool32 isActive; - XrHandTrackingDataSourceEXT dataSource; -} XrHandTrackingDataSourceStateEXT; - - - -// XR_EXT_plane_detection is a preprocessor guard. Do not pass it to API calls. -#define XR_EXT_plane_detection 1 -XR_DEFINE_HANDLE(XrPlaneDetectorEXT) -#define XR_EXT_plane_detection_SPEC_VERSION 1 -#define XR_EXT_PLANE_DETECTION_EXTENSION_NAME "XR_EXT_plane_detection" - -typedef enum XrPlaneDetectorOrientationEXT { - XR_PLANE_DETECTOR_ORIENTATION_HORIZONTAL_UPWARD_EXT = 0, - XR_PLANE_DETECTOR_ORIENTATION_HORIZONTAL_DOWNWARD_EXT = 1, - XR_PLANE_DETECTOR_ORIENTATION_VERTICAL_EXT = 2, - XR_PLANE_DETECTOR_ORIENTATION_ARBITRARY_EXT = 3, - XR_PLANE_DETECTOR_ORIENTATION_MAX_ENUM_EXT = 0x7FFFFFFF -} XrPlaneDetectorOrientationEXT; - -typedef enum XrPlaneDetectorSemanticTypeEXT { - XR_PLANE_DETECTOR_SEMANTIC_TYPE_UNDEFINED_EXT = 0, - XR_PLANE_DETECTOR_SEMANTIC_TYPE_CEILING_EXT = 1, - XR_PLANE_DETECTOR_SEMANTIC_TYPE_FLOOR_EXT = 2, - XR_PLANE_DETECTOR_SEMANTIC_TYPE_WALL_EXT = 3, - XR_PLANE_DETECTOR_SEMANTIC_TYPE_PLATFORM_EXT = 4, - XR_PLANE_DETECTOR_SEMANTIC_TYPE_MAX_ENUM_EXT = 0x7FFFFFFF -} XrPlaneDetectorSemanticTypeEXT; - -typedef enum XrPlaneDetectionStateEXT { - XR_PLANE_DETECTION_STATE_NONE_EXT = 0, - XR_PLANE_DETECTION_STATE_PENDING_EXT = 1, - XR_PLANE_DETECTION_STATE_DONE_EXT = 2, - XR_PLANE_DETECTION_STATE_ERROR_EXT = 3, - XR_PLANE_DETECTION_STATE_FATAL_EXT = 4, - XR_PLANE_DETECTION_STATE_MAX_ENUM_EXT = 0x7FFFFFFF -} XrPlaneDetectionStateEXT; -typedef XrFlags64 XrPlaneDetectionCapabilityFlagsEXT; - -// Flag bits for XrPlaneDetectionCapabilityFlagsEXT -static const XrPlaneDetectionCapabilityFlagsEXT XR_PLANE_DETECTION_CAPABILITY_PLANE_DETECTION_BIT_EXT = 0x00000001; -static const XrPlaneDetectionCapabilityFlagsEXT XR_PLANE_DETECTION_CAPABILITY_PLANE_HOLES_BIT_EXT = 0x00000002; -static const XrPlaneDetectionCapabilityFlagsEXT XR_PLANE_DETECTION_CAPABILITY_SEMANTIC_CEILING_BIT_EXT = 0x00000004; -static const XrPlaneDetectionCapabilityFlagsEXT XR_PLANE_DETECTION_CAPABILITY_SEMANTIC_FLOOR_BIT_EXT = 0x00000008; -static const XrPlaneDetectionCapabilityFlagsEXT XR_PLANE_DETECTION_CAPABILITY_SEMANTIC_WALL_BIT_EXT = 0x00000010; -static const XrPlaneDetectionCapabilityFlagsEXT XR_PLANE_DETECTION_CAPABILITY_SEMANTIC_PLATFORM_BIT_EXT = 0x00000020; -static const XrPlaneDetectionCapabilityFlagsEXT XR_PLANE_DETECTION_CAPABILITY_ORIENTATION_BIT_EXT = 0x00000040; - -typedef XrFlags64 XrPlaneDetectorFlagsEXT; - -// Flag bits for XrPlaneDetectorFlagsEXT -static const XrPlaneDetectorFlagsEXT XR_PLANE_DETECTOR_ENABLE_CONTOUR_BIT_EXT = 0x00000001; - -// XrSystemPlaneDetectionPropertiesEXT extends XrSystemProperties -typedef struct XrSystemPlaneDetectionPropertiesEXT { - XrStructureType type; - void* XR_MAY_ALIAS next; - XrPlaneDetectionCapabilityFlagsEXT supportedFeatures; -} XrSystemPlaneDetectionPropertiesEXT; - -typedef struct XrPlaneDetectorCreateInfoEXT { - XrStructureType type; - const void* XR_MAY_ALIAS next; - XrPlaneDetectorFlagsEXT flags; -} XrPlaneDetectorCreateInfoEXT; - -typedef XrExtent3Df XrExtent3DfEXT; - -typedef struct XrPlaneDetectorBeginInfoEXT { - XrStructureType type; - const void* XR_MAY_ALIAS next; - XrSpace baseSpace; - XrTime time; - uint32_t orientationCount; - const XrPlaneDetectorOrientationEXT* orientations; - uint32_t semanticTypeCount; - const XrPlaneDetectorSemanticTypeEXT* semanticTypes; - uint32_t maxPlanes; - float minArea; - XrPosef boundingBoxPose; - XrExtent3DfEXT boundingBoxExtent; -} XrPlaneDetectorBeginInfoEXT; - -typedef struct XrPlaneDetectorGetInfoEXT { - XrStructureType type; - const void* XR_MAY_ALIAS next; - XrSpace baseSpace; - XrTime time; -} XrPlaneDetectorGetInfoEXT; - -typedef struct XrPlaneDetectorLocationEXT { - XrStructureType type; - void* XR_MAY_ALIAS next; - uint64_t planeId; - XrSpaceLocationFlags locationFlags; - XrPosef pose; - XrExtent2Df extents; - XrPlaneDetectorOrientationEXT orientation; - XrPlaneDetectorSemanticTypeEXT semanticType; - uint32_t polygonBufferCount; -} XrPlaneDetectorLocationEXT; - -typedef struct XrPlaneDetectorLocationsEXT { - XrStructureType type; - void* XR_MAY_ALIAS next; - uint32_t planeLocationCapacityInput; - uint32_t planeLocationCountOutput; - XrPlaneDetectorLocationEXT* planeLocations; -} XrPlaneDetectorLocationsEXT; - -typedef struct XrPlaneDetectorPolygonBufferEXT { - XrStructureType type; - void* XR_MAY_ALIAS next; - uint32_t vertexCapacityInput; - uint32_t vertexCountOutput; - XrVector2f* vertices; -} XrPlaneDetectorPolygonBufferEXT; - -typedef XrResult (XRAPI_PTR *PFN_xrCreatePlaneDetectorEXT)(XrSession session, const XrPlaneDetectorCreateInfoEXT* createInfo, XrPlaneDetectorEXT* planeDetector); -typedef XrResult (XRAPI_PTR *PFN_xrDestroyPlaneDetectorEXT)(XrPlaneDetectorEXT planeDetector); -typedef XrResult (XRAPI_PTR *PFN_xrBeginPlaneDetectionEXT)(XrPlaneDetectorEXT planeDetector, const XrPlaneDetectorBeginInfoEXT* beginInfo); -typedef XrResult (XRAPI_PTR *PFN_xrGetPlaneDetectionStateEXT)(XrPlaneDetectorEXT planeDetector, XrPlaneDetectionStateEXT* state); -typedef XrResult (XRAPI_PTR *PFN_xrGetPlaneDetectionsEXT)(XrPlaneDetectorEXT planeDetector, const XrPlaneDetectorGetInfoEXT* info, XrPlaneDetectorLocationsEXT* locations); -typedef XrResult (XRAPI_PTR *PFN_xrGetPlanePolygonBufferEXT)(XrPlaneDetectorEXT planeDetector, uint64_t planeId, uint32_t polygonBufferIndex, XrPlaneDetectorPolygonBufferEXT* polygonBuffer); - -#ifndef XR_NO_PROTOTYPES -#ifdef XR_EXTENSION_PROTOTYPES -XRAPI_ATTR XrResult XRAPI_CALL xrCreatePlaneDetectorEXT( - XrSession session, - const XrPlaneDetectorCreateInfoEXT* createInfo, - XrPlaneDetectorEXT* planeDetector); - -XRAPI_ATTR XrResult XRAPI_CALL xrDestroyPlaneDetectorEXT( - XrPlaneDetectorEXT planeDetector); - -XRAPI_ATTR XrResult XRAPI_CALL xrBeginPlaneDetectionEXT( - XrPlaneDetectorEXT planeDetector, - const XrPlaneDetectorBeginInfoEXT* beginInfo); - -XRAPI_ATTR XrResult XRAPI_CALL xrGetPlaneDetectionStateEXT( - XrPlaneDetectorEXT planeDetector, - XrPlaneDetectionStateEXT* state); - -XRAPI_ATTR XrResult XRAPI_CALL xrGetPlaneDetectionsEXT( - XrPlaneDetectorEXT planeDetector, - const XrPlaneDetectorGetInfoEXT* info, - XrPlaneDetectorLocationsEXT* locations); - -XRAPI_ATTR XrResult XRAPI_CALL xrGetPlanePolygonBufferEXT( - XrPlaneDetectorEXT planeDetector, - uint64_t planeId, - uint32_t polygonBufferIndex, - XrPlaneDetectorPolygonBufferEXT* polygonBuffer); -#endif /* XR_EXTENSION_PROTOTYPES */ -#endif /* !XR_NO_PROTOTYPES */ - - -// XR_OPPO_controller_interaction is a preprocessor guard. Do not pass it to API calls. -#define XR_OPPO_controller_interaction 1 -#define XR_OPPO_controller_interaction_SPEC_VERSION 1 -#define XR_OPPO_CONTROLLER_INTERACTION_EXTENSION_NAME "XR_OPPO_controller_interaction" - - -// XR_EXT_future is a preprocessor guard. Do not pass it to API calls. -#define XR_EXT_future 1 -XR_DEFINE_OPAQUE_64(XrFutureEXT) -#define XR_EXT_future_SPEC_VERSION 1 -#define XR_EXT_FUTURE_EXTENSION_NAME "XR_EXT_future" -#define XR_NULL_FUTURE_EXT 0 - -typedef enum XrFutureStateEXT { - XR_FUTURE_STATE_PENDING_EXT = 1, - XR_FUTURE_STATE_READY_EXT = 2, - XR_FUTURE_STATE_MAX_ENUM_EXT = 0x7FFFFFFF -} XrFutureStateEXT; -typedef struct XrFutureCancelInfoEXT { - XrStructureType type; - const void* XR_MAY_ALIAS next; - XrFutureEXT future; -} XrFutureCancelInfoEXT; - -typedef struct XrFuturePollInfoEXT { - XrStructureType type; - const void* XR_MAY_ALIAS next; - XrFutureEXT future; -} XrFuturePollInfoEXT; - -typedef struct XR_MAY_ALIAS XrFutureCompletionBaseHeaderEXT { - XrStructureType type; - void* XR_MAY_ALIAS next; - XrResult futureResult; -} XrFutureCompletionBaseHeaderEXT; - -typedef struct XrFutureCompletionEXT { - XrStructureType type; - void* XR_MAY_ALIAS next; - XrResult futureResult; -} XrFutureCompletionEXT; - -typedef struct XrFuturePollResultEXT { - XrStructureType type; - void* XR_MAY_ALIAS next; - XrFutureStateEXT state; -} XrFuturePollResultEXT; - -typedef XrResult (XRAPI_PTR *PFN_xrPollFutureEXT)(XrInstance instance, const XrFuturePollInfoEXT* pollInfo, XrFuturePollResultEXT* pollResult); -typedef XrResult (XRAPI_PTR *PFN_xrCancelFutureEXT)(XrInstance instance, const XrFutureCancelInfoEXT* cancelInfo); - -#ifndef XR_NO_PROTOTYPES -#ifdef XR_EXTENSION_PROTOTYPES -XRAPI_ATTR XrResult XRAPI_CALL xrPollFutureEXT( - XrInstance instance, - const XrFuturePollInfoEXT* pollInfo, - XrFuturePollResultEXT* pollResult); - -XRAPI_ATTR XrResult XRAPI_CALL xrCancelFutureEXT( - XrInstance instance, - const XrFutureCancelInfoEXT* cancelInfo); -#endif /* XR_EXTENSION_PROTOTYPES */ -#endif /* !XR_NO_PROTOTYPES */ - - -// XR_EXT_user_presence is a preprocessor guard. Do not pass it to API calls. -#define XR_EXT_user_presence 1 -#define XR_EXT_user_presence_SPEC_VERSION 1 -#define XR_EXT_USER_PRESENCE_EXTENSION_NAME "XR_EXT_user_presence" -typedef struct XrEventDataUserPresenceChangedEXT { - XrStructureType type; - const void* XR_MAY_ALIAS next; - XrSession session; - XrBool32 isUserPresent; -} XrEventDataUserPresenceChangedEXT; - -// XrSystemUserPresencePropertiesEXT extends XrSystemProperties -typedef struct XrSystemUserPresencePropertiesEXT { - XrStructureType type; - void* XR_MAY_ALIAS next; - XrBool32 supportsUserPresence; -} XrSystemUserPresencePropertiesEXT; - - - -// XR_ML_user_calibration is a preprocessor guard. Do not pass it to API calls. -#define XR_ML_user_calibration 1 -#define XR_ML_user_calibration_SPEC_VERSION 1 -#define XR_ML_USER_CALIBRATION_EXTENSION_NAME "XR_ML_user_calibration" - -typedef enum XrHeadsetFitStatusML { - XR_HEADSET_FIT_STATUS_UNKNOWN_ML = 0, - XR_HEADSET_FIT_STATUS_NOT_WORN_ML = 1, - XR_HEADSET_FIT_STATUS_GOOD_FIT_ML = 2, - XR_HEADSET_FIT_STATUS_BAD_FIT_ML = 3, - XR_HEADSET_FIT_STATUS_MAX_ENUM_ML = 0x7FFFFFFF -} XrHeadsetFitStatusML; - -typedef enum XrEyeCalibrationStatusML { - XR_EYE_CALIBRATION_STATUS_UNKNOWN_ML = 0, - XR_EYE_CALIBRATION_STATUS_NONE_ML = 1, - XR_EYE_CALIBRATION_STATUS_COARSE_ML = 2, - XR_EYE_CALIBRATION_STATUS_FINE_ML = 3, - XR_EYE_CALIBRATION_STATUS_MAX_ENUM_ML = 0x7FFFFFFF -} XrEyeCalibrationStatusML; -typedef struct XrEventDataHeadsetFitChangedML { - XrStructureType type; - const void* XR_MAY_ALIAS next; - XrHeadsetFitStatusML status; - XrTime time; -} XrEventDataHeadsetFitChangedML; - -typedef struct XrEventDataEyeCalibrationChangedML { - XrStructureType type; - const void* XR_MAY_ALIAS next; - XrEyeCalibrationStatusML status; -} XrEventDataEyeCalibrationChangedML; - -typedef struct XrUserCalibrationEnableEventsInfoML { - XrStructureType type; - const void* XR_MAY_ALIAS next; - XrBool32 enabled; -} XrUserCalibrationEnableEventsInfoML; - -typedef XrResult (XRAPI_PTR *PFN_xrEnableUserCalibrationEventsML)(XrInstance instance, const XrUserCalibrationEnableEventsInfoML* enableInfo); - -#ifndef XR_NO_PROTOTYPES -#ifdef XR_EXTENSION_PROTOTYPES -XRAPI_ATTR XrResult XRAPI_CALL xrEnableUserCalibrationEventsML( - XrInstance instance, - const XrUserCalibrationEnableEventsInfoML* enableInfo); -#endif /* XR_EXTENSION_PROTOTYPES */ -#endif /* !XR_NO_PROTOTYPES */ - - -// XR_YVR_controller_interaction is a preprocessor guard. Do not pass it to API calls. -#define XR_YVR_controller_interaction 1 -#define XR_YVR_controller_interaction_SPEC_VERSION 1 -#define XR_YVR_CONTROLLER_INTERACTION_EXTENSION_NAME "XR_YVR_controller_interaction" - -#ifdef __cplusplus -} -#endif - -#endif diff --git a/Plugins/MetaXR/Source/Thirdparty/KhronosOpenXR/include/khronos/openxr/openxr_platform.h b/Plugins/MetaXR/Source/Thirdparty/KhronosOpenXR/include/khronos/openxr/openxr_platform.h deleted file mode 100644 index cbe1008..0000000 --- a/Plugins/MetaXR/Source/Thirdparty/KhronosOpenXR/include/khronos/openxr/openxr_platform.h +++ /dev/null @@ -1,739 +0,0 @@ -#ifndef OPENXR_PLATFORM_H_ -#define OPENXR_PLATFORM_H_ 1 - -/* -** Copyright 2017-2024, The Khronos Group Inc. -** -** SPDX-License-Identifier: Apache-2.0 OR MIT -*/ - -/* -** This header is generated from the Khronos OpenXR XML API Registry. -** -*/ - -#include "openxr.h" - -#ifdef __cplusplus -extern "C" { -#endif - - -#ifdef XR_USE_PLATFORM_ANDROID - -// XR_KHR_android_thread_settings is a preprocessor guard. Do not pass it to API calls. -#define XR_KHR_android_thread_settings 1 -#define XR_KHR_android_thread_settings_SPEC_VERSION 6 -#define XR_KHR_ANDROID_THREAD_SETTINGS_EXTENSION_NAME "XR_KHR_android_thread_settings" - -typedef enum XrAndroidThreadTypeKHR { - XR_ANDROID_THREAD_TYPE_APPLICATION_MAIN_KHR = 1, - XR_ANDROID_THREAD_TYPE_APPLICATION_WORKER_KHR = 2, - XR_ANDROID_THREAD_TYPE_RENDERER_MAIN_KHR = 3, - XR_ANDROID_THREAD_TYPE_RENDERER_WORKER_KHR = 4, - XR_ANDROID_THREAD_TYPE_MAX_ENUM_KHR = 0x7FFFFFFF -} XrAndroidThreadTypeKHR; -typedef XrResult (XRAPI_PTR *PFN_xrSetAndroidApplicationThreadKHR)(XrSession session, XrAndroidThreadTypeKHR threadType, uint32_t threadId); - -#ifndef XR_NO_PROTOTYPES -#ifdef XR_EXTENSION_PROTOTYPES -XRAPI_ATTR XrResult XRAPI_CALL xrSetAndroidApplicationThreadKHR( - XrSession session, - XrAndroidThreadTypeKHR threadType, - uint32_t threadId); -#endif /* XR_EXTENSION_PROTOTYPES */ -#endif /* !XR_NO_PROTOTYPES */ -#endif /* XR_USE_PLATFORM_ANDROID */ - -#ifdef XR_USE_PLATFORM_ANDROID - -// XR_KHR_android_surface_swapchain is a preprocessor guard. Do not pass it to API calls. -#define XR_KHR_android_surface_swapchain 1 -#define XR_KHR_android_surface_swapchain_SPEC_VERSION 4 -#define XR_KHR_ANDROID_SURFACE_SWAPCHAIN_EXTENSION_NAME "XR_KHR_android_surface_swapchain" -typedef XrResult (XRAPI_PTR *PFN_xrCreateSwapchainAndroidSurfaceKHR)(XrSession session, const XrSwapchainCreateInfo* info, XrSwapchain* swapchain, jobject* surface); - -#ifndef XR_NO_PROTOTYPES -#ifdef XR_EXTENSION_PROTOTYPES -XRAPI_ATTR XrResult XRAPI_CALL xrCreateSwapchainAndroidSurfaceKHR( - XrSession session, - const XrSwapchainCreateInfo* info, - XrSwapchain* swapchain, - jobject* surface); -#endif /* XR_EXTENSION_PROTOTYPES */ -#endif /* !XR_NO_PROTOTYPES */ -#endif /* XR_USE_PLATFORM_ANDROID */ - -#ifdef XR_USE_PLATFORM_ANDROID - -// XR_KHR_android_create_instance is a preprocessor guard. Do not pass it to API calls. -#define XR_KHR_android_create_instance 1 -#define XR_KHR_android_create_instance_SPEC_VERSION 3 -#define XR_KHR_ANDROID_CREATE_INSTANCE_EXTENSION_NAME "XR_KHR_android_create_instance" -// XrInstanceCreateInfoAndroidKHR extends XrInstanceCreateInfo -typedef struct XrInstanceCreateInfoAndroidKHR { - XrStructureType type; - const void* XR_MAY_ALIAS next; - void* XR_MAY_ALIAS applicationVM; - void* XR_MAY_ALIAS applicationActivity; -} XrInstanceCreateInfoAndroidKHR; - -#endif /* XR_USE_PLATFORM_ANDROID */ - -#ifdef XR_USE_GRAPHICS_API_VULKAN - -// XR_KHR_vulkan_swapchain_format_list is a preprocessor guard. Do not pass it to API calls. -#define XR_KHR_vulkan_swapchain_format_list 1 -#define XR_KHR_vulkan_swapchain_format_list_SPEC_VERSION 4 -#define XR_KHR_VULKAN_SWAPCHAIN_FORMAT_LIST_EXTENSION_NAME "XR_KHR_vulkan_swapchain_format_list" -typedef struct XrVulkanSwapchainFormatListCreateInfoKHR { - XrStructureType type; - const void* XR_MAY_ALIAS next; - uint32_t viewFormatCount; - const VkFormat* viewFormats; -} XrVulkanSwapchainFormatListCreateInfoKHR; - -#endif /* XR_USE_GRAPHICS_API_VULKAN */ - -#ifdef XR_USE_GRAPHICS_API_OPENGL - -// XR_KHR_opengl_enable is a preprocessor guard. Do not pass it to API calls. -#define XR_KHR_opengl_enable 1 -#define XR_KHR_opengl_enable_SPEC_VERSION 10 -#define XR_KHR_OPENGL_ENABLE_EXTENSION_NAME "XR_KHR_opengl_enable" -#ifdef XR_USE_PLATFORM_WIN32 -// XrGraphicsBindingOpenGLWin32KHR extends XrSessionCreateInfo -typedef struct XrGraphicsBindingOpenGLWin32KHR { - XrStructureType type; - const void* XR_MAY_ALIAS next; - HDC hDC; - HGLRC hGLRC; -} XrGraphicsBindingOpenGLWin32KHR; -#endif // XR_USE_PLATFORM_WIN32 - -#ifdef XR_USE_PLATFORM_XLIB -// XrGraphicsBindingOpenGLXlibKHR extends XrSessionCreateInfo -typedef struct XrGraphicsBindingOpenGLXlibKHR { - XrStructureType type; - const void* XR_MAY_ALIAS next; - Display* xDisplay; - uint32_t visualid; - GLXFBConfig glxFBConfig; - GLXDrawable glxDrawable; - GLXContext glxContext; -} XrGraphicsBindingOpenGLXlibKHR; -#endif // XR_USE_PLATFORM_XLIB - -#ifdef XR_USE_PLATFORM_XCB -// XrGraphicsBindingOpenGLXcbKHR extends XrSessionCreateInfo -typedef struct XrGraphicsBindingOpenGLXcbKHR { - XrStructureType type; - const void* XR_MAY_ALIAS next; - xcb_connection_t* connection; - uint32_t screenNumber; - xcb_glx_fbconfig_t fbconfigid; - xcb_visualid_t visualid; - xcb_glx_drawable_t glxDrawable; - xcb_glx_context_t glxContext; -} XrGraphicsBindingOpenGLXcbKHR; -#endif // XR_USE_PLATFORM_XCB - -#ifdef XR_USE_PLATFORM_WAYLAND -// XrGraphicsBindingOpenGLWaylandKHR extends XrSessionCreateInfo -typedef struct XrGraphicsBindingOpenGLWaylandKHR { - XrStructureType type; - const void* XR_MAY_ALIAS next; - struct wl_display* display; -} XrGraphicsBindingOpenGLWaylandKHR; -#endif // XR_USE_PLATFORM_WAYLAND - -typedef struct XrSwapchainImageOpenGLKHR { - XrStructureType type; - void* XR_MAY_ALIAS next; - uint32_t image; -} XrSwapchainImageOpenGLKHR; - -typedef struct XrGraphicsRequirementsOpenGLKHR { - XrStructureType type; - void* XR_MAY_ALIAS next; - XrVersion minApiVersionSupported; - XrVersion maxApiVersionSupported; -} XrGraphicsRequirementsOpenGLKHR; - -typedef XrResult (XRAPI_PTR *PFN_xrGetOpenGLGraphicsRequirementsKHR)(XrInstance instance, XrSystemId systemId, XrGraphicsRequirementsOpenGLKHR* graphicsRequirements); - -#ifndef XR_NO_PROTOTYPES -#ifdef XR_EXTENSION_PROTOTYPES -XRAPI_ATTR XrResult XRAPI_CALL xrGetOpenGLGraphicsRequirementsKHR( - XrInstance instance, - XrSystemId systemId, - XrGraphicsRequirementsOpenGLKHR* graphicsRequirements); -#endif /* XR_EXTENSION_PROTOTYPES */ -#endif /* !XR_NO_PROTOTYPES */ -#endif /* XR_USE_GRAPHICS_API_OPENGL */ - -#ifdef XR_USE_GRAPHICS_API_OPENGL_ES - -// XR_KHR_opengl_es_enable is a preprocessor guard. Do not pass it to API calls. -#define XR_KHR_opengl_es_enable 1 -#define XR_KHR_opengl_es_enable_SPEC_VERSION 8 -#define XR_KHR_OPENGL_ES_ENABLE_EXTENSION_NAME "XR_KHR_opengl_es_enable" -#ifdef XR_USE_PLATFORM_ANDROID -// XrGraphicsBindingOpenGLESAndroidKHR extends XrSessionCreateInfo -typedef struct XrGraphicsBindingOpenGLESAndroidKHR { - XrStructureType type; - const void* XR_MAY_ALIAS next; - EGLDisplay display; - EGLConfig config; - EGLContext context; -} XrGraphicsBindingOpenGLESAndroidKHR; -#endif // XR_USE_PLATFORM_ANDROID - -typedef struct XrSwapchainImageOpenGLESKHR { - XrStructureType type; - void* XR_MAY_ALIAS next; - uint32_t image; -} XrSwapchainImageOpenGLESKHR; - -typedef struct XrGraphicsRequirementsOpenGLESKHR { - XrStructureType type; - void* XR_MAY_ALIAS next; - XrVersion minApiVersionSupported; - XrVersion maxApiVersionSupported; -} XrGraphicsRequirementsOpenGLESKHR; - -typedef XrResult (XRAPI_PTR *PFN_xrGetOpenGLESGraphicsRequirementsKHR)(XrInstance instance, XrSystemId systemId, XrGraphicsRequirementsOpenGLESKHR* graphicsRequirements); - -#ifndef XR_NO_PROTOTYPES -#ifdef XR_EXTENSION_PROTOTYPES -XRAPI_ATTR XrResult XRAPI_CALL xrGetOpenGLESGraphicsRequirementsKHR( - XrInstance instance, - XrSystemId systemId, - XrGraphicsRequirementsOpenGLESKHR* graphicsRequirements); -#endif /* XR_EXTENSION_PROTOTYPES */ -#endif /* !XR_NO_PROTOTYPES */ -#endif /* XR_USE_GRAPHICS_API_OPENGL_ES */ - -#ifdef XR_USE_GRAPHICS_API_VULKAN - -// XR_KHR_vulkan_enable is a preprocessor guard. Do not pass it to API calls. -#define XR_KHR_vulkan_enable 1 -#define XR_KHR_vulkan_enable_SPEC_VERSION 8 -#define XR_KHR_VULKAN_ENABLE_EXTENSION_NAME "XR_KHR_vulkan_enable" -// XrGraphicsBindingVulkanKHR extends XrSessionCreateInfo -typedef struct XrGraphicsBindingVulkanKHR { - XrStructureType type; - const void* XR_MAY_ALIAS next; - VkInstance instance; - VkPhysicalDevice physicalDevice; - VkDevice device; - uint32_t queueFamilyIndex; - uint32_t queueIndex; -} XrGraphicsBindingVulkanKHR; - -typedef struct XrSwapchainImageVulkanKHR { - XrStructureType type; - void* XR_MAY_ALIAS next; - VkImage image; -} XrSwapchainImageVulkanKHR; - -typedef struct XrGraphicsRequirementsVulkanKHR { - XrStructureType type; - void* XR_MAY_ALIAS next; - XrVersion minApiVersionSupported; - XrVersion maxApiVersionSupported; -} XrGraphicsRequirementsVulkanKHR; - -typedef XrResult (XRAPI_PTR *PFN_xrGetVulkanInstanceExtensionsKHR)(XrInstance instance, XrSystemId systemId, uint32_t bufferCapacityInput, uint32_t* bufferCountOutput, char* buffer); -typedef XrResult (XRAPI_PTR *PFN_xrGetVulkanDeviceExtensionsKHR)(XrInstance instance, XrSystemId systemId, uint32_t bufferCapacityInput, uint32_t* bufferCountOutput, char* buffer); -typedef XrResult (XRAPI_PTR *PFN_xrGetVulkanGraphicsDeviceKHR)(XrInstance instance, XrSystemId systemId, VkInstance vkInstance, VkPhysicalDevice* vkPhysicalDevice); -typedef XrResult (XRAPI_PTR *PFN_xrGetVulkanGraphicsRequirementsKHR)(XrInstance instance, XrSystemId systemId, XrGraphicsRequirementsVulkanKHR* graphicsRequirements); - -#ifndef XR_NO_PROTOTYPES -#ifdef XR_EXTENSION_PROTOTYPES -XRAPI_ATTR XrResult XRAPI_CALL xrGetVulkanInstanceExtensionsKHR( - XrInstance instance, - XrSystemId systemId, - uint32_t bufferCapacityInput, - uint32_t* bufferCountOutput, - char* buffer); - -XRAPI_ATTR XrResult XRAPI_CALL xrGetVulkanDeviceExtensionsKHR( - XrInstance instance, - XrSystemId systemId, - uint32_t bufferCapacityInput, - uint32_t* bufferCountOutput, - char* buffer); - -XRAPI_ATTR XrResult XRAPI_CALL xrGetVulkanGraphicsDeviceKHR( - XrInstance instance, - XrSystemId systemId, - VkInstance vkInstance, - VkPhysicalDevice* vkPhysicalDevice); - -XRAPI_ATTR XrResult XRAPI_CALL xrGetVulkanGraphicsRequirementsKHR( - XrInstance instance, - XrSystemId systemId, - XrGraphicsRequirementsVulkanKHR* graphicsRequirements); -#endif /* XR_EXTENSION_PROTOTYPES */ -#endif /* !XR_NO_PROTOTYPES */ -#endif /* XR_USE_GRAPHICS_API_VULKAN */ - -#ifdef XR_USE_GRAPHICS_API_D3D11 - -// XR_KHR_D3D11_enable is a preprocessor guard. Do not pass it to API calls. -#define XR_KHR_D3D11_enable 1 -#define XR_KHR_D3D11_enable_SPEC_VERSION 9 -#define XR_KHR_D3D11_ENABLE_EXTENSION_NAME "XR_KHR_D3D11_enable" -// XrGraphicsBindingD3D11KHR extends XrSessionCreateInfo -typedef struct XrGraphicsBindingD3D11KHR { - XrStructureType type; - const void* XR_MAY_ALIAS next; - ID3D11Device* device; -} XrGraphicsBindingD3D11KHR; - -typedef struct XrSwapchainImageD3D11KHR { - XrStructureType type; - void* XR_MAY_ALIAS next; - ID3D11Texture2D* texture; -} XrSwapchainImageD3D11KHR; - -typedef struct XrGraphicsRequirementsD3D11KHR { - XrStructureType type; - void* XR_MAY_ALIAS next; - LUID adapterLuid; - D3D_FEATURE_LEVEL minFeatureLevel; -} XrGraphicsRequirementsD3D11KHR; - -typedef XrResult (XRAPI_PTR *PFN_xrGetD3D11GraphicsRequirementsKHR)(XrInstance instance, XrSystemId systemId, XrGraphicsRequirementsD3D11KHR* graphicsRequirements); - -#ifndef XR_NO_PROTOTYPES -#ifdef XR_EXTENSION_PROTOTYPES -XRAPI_ATTR XrResult XRAPI_CALL xrGetD3D11GraphicsRequirementsKHR( - XrInstance instance, - XrSystemId systemId, - XrGraphicsRequirementsD3D11KHR* graphicsRequirements); -#endif /* XR_EXTENSION_PROTOTYPES */ -#endif /* !XR_NO_PROTOTYPES */ -#endif /* XR_USE_GRAPHICS_API_D3D11 */ - -#ifdef XR_USE_GRAPHICS_API_D3D12 - -// XR_KHR_D3D12_enable is a preprocessor guard. Do not pass it to API calls. -#define XR_KHR_D3D12_enable 1 -#define XR_KHR_D3D12_enable_SPEC_VERSION 9 -#define XR_KHR_D3D12_ENABLE_EXTENSION_NAME "XR_KHR_D3D12_enable" -// XrGraphicsBindingD3D12KHR extends XrSessionCreateInfo -typedef struct XrGraphicsBindingD3D12KHR { - XrStructureType type; - const void* XR_MAY_ALIAS next; - ID3D12Device* device; - ID3D12CommandQueue* queue; -} XrGraphicsBindingD3D12KHR; - -typedef struct XrSwapchainImageD3D12KHR { - XrStructureType type; - void* XR_MAY_ALIAS next; - ID3D12Resource* texture; -} XrSwapchainImageD3D12KHR; - -typedef struct XrGraphicsRequirementsD3D12KHR { - XrStructureType type; - void* XR_MAY_ALIAS next; - LUID adapterLuid; - D3D_FEATURE_LEVEL minFeatureLevel; -} XrGraphicsRequirementsD3D12KHR; - -typedef XrResult (XRAPI_PTR *PFN_xrGetD3D12GraphicsRequirementsKHR)(XrInstance instance, XrSystemId systemId, XrGraphicsRequirementsD3D12KHR* graphicsRequirements); - -#ifndef XR_NO_PROTOTYPES -#ifdef XR_EXTENSION_PROTOTYPES -XRAPI_ATTR XrResult XRAPI_CALL xrGetD3D12GraphicsRequirementsKHR( - XrInstance instance, - XrSystemId systemId, - XrGraphicsRequirementsD3D12KHR* graphicsRequirements); -#endif /* XR_EXTENSION_PROTOTYPES */ -#endif /* !XR_NO_PROTOTYPES */ -#endif /* XR_USE_GRAPHICS_API_D3D12 */ - -#ifdef XR_USE_PLATFORM_WIN32 - -// XR_KHR_win32_convert_performance_counter_time is a preprocessor guard. Do not pass it to API calls. -#define XR_KHR_win32_convert_performance_counter_time 1 -#define XR_KHR_win32_convert_performance_counter_time_SPEC_VERSION 1 -#define XR_KHR_WIN32_CONVERT_PERFORMANCE_COUNTER_TIME_EXTENSION_NAME "XR_KHR_win32_convert_performance_counter_time" -typedef XrResult (XRAPI_PTR *PFN_xrConvertWin32PerformanceCounterToTimeKHR)(XrInstance instance, const LARGE_INTEGER* performanceCounter, XrTime* time); -typedef XrResult (XRAPI_PTR *PFN_xrConvertTimeToWin32PerformanceCounterKHR)(XrInstance instance, XrTime time, LARGE_INTEGER* performanceCounter); - -#ifndef XR_NO_PROTOTYPES -#ifdef XR_EXTENSION_PROTOTYPES -XRAPI_ATTR XrResult XRAPI_CALL xrConvertWin32PerformanceCounterToTimeKHR( - XrInstance instance, - const LARGE_INTEGER* performanceCounter, - XrTime* time); - -XRAPI_ATTR XrResult XRAPI_CALL xrConvertTimeToWin32PerformanceCounterKHR( - XrInstance instance, - XrTime time, - LARGE_INTEGER* performanceCounter); -#endif /* XR_EXTENSION_PROTOTYPES */ -#endif /* !XR_NO_PROTOTYPES */ -#endif /* XR_USE_PLATFORM_WIN32 */ - -#ifdef XR_USE_TIMESPEC - -// XR_KHR_convert_timespec_time is a preprocessor guard. Do not pass it to API calls. -#define XR_KHR_convert_timespec_time 1 -#define XR_KHR_convert_timespec_time_SPEC_VERSION 1 -#define XR_KHR_CONVERT_TIMESPEC_TIME_EXTENSION_NAME "XR_KHR_convert_timespec_time" -typedef XrResult (XRAPI_PTR *PFN_xrConvertTimespecTimeToTimeKHR)(XrInstance instance, const struct timespec* timespecTime, XrTime* time); -typedef XrResult (XRAPI_PTR *PFN_xrConvertTimeToTimespecTimeKHR)(XrInstance instance, XrTime time, struct timespec* timespecTime); - -#ifndef XR_NO_PROTOTYPES -#ifdef XR_EXTENSION_PROTOTYPES -XRAPI_ATTR XrResult XRAPI_CALL xrConvertTimespecTimeToTimeKHR( - XrInstance instance, - const struct timespec* timespecTime, - XrTime* time); - -XRAPI_ATTR XrResult XRAPI_CALL xrConvertTimeToTimespecTimeKHR( - XrInstance instance, - XrTime time, - struct timespec* timespecTime); -#endif /* XR_EXTENSION_PROTOTYPES */ -#endif /* !XR_NO_PROTOTYPES */ -#endif /* XR_USE_TIMESPEC */ - -#ifdef XR_USE_PLATFORM_ANDROID - -// XR_KHR_loader_init_android is a preprocessor guard. Do not pass it to API calls. -#define XR_KHR_loader_init_android 1 -#define XR_KHR_loader_init_android_SPEC_VERSION 1 -#define XR_KHR_LOADER_INIT_ANDROID_EXTENSION_NAME "XR_KHR_loader_init_android" -typedef struct XrLoaderInitInfoAndroidKHR { - XrStructureType type; - const void* XR_MAY_ALIAS next; - void* XR_MAY_ALIAS applicationVM; - void* XR_MAY_ALIAS applicationContext; -} XrLoaderInitInfoAndroidKHR; - -#endif /* XR_USE_PLATFORM_ANDROID */ - -#ifdef XR_USE_GRAPHICS_API_VULKAN - -// XR_KHR_vulkan_enable2 is a preprocessor guard. Do not pass it to API calls. -#define XR_KHR_vulkan_enable2 1 -#define XR_KHR_vulkan_enable2_SPEC_VERSION 2 -#define XR_KHR_VULKAN_ENABLE2_EXTENSION_NAME "XR_KHR_vulkan_enable2" -typedef XrFlags64 XrVulkanInstanceCreateFlagsKHR; - -// Flag bits for XrVulkanInstanceCreateFlagsKHR - -typedef XrFlags64 XrVulkanDeviceCreateFlagsKHR; - -// Flag bits for XrVulkanDeviceCreateFlagsKHR - -typedef struct XrVulkanInstanceCreateInfoKHR { - XrStructureType type; - const void* XR_MAY_ALIAS next; - XrSystemId systemId; - XrVulkanInstanceCreateFlagsKHR createFlags; - PFN_vkGetInstanceProcAddr pfnGetInstanceProcAddr; - const VkInstanceCreateInfo* vulkanCreateInfo; - const VkAllocationCallbacks* vulkanAllocator; -} XrVulkanInstanceCreateInfoKHR; - -typedef struct XrVulkanDeviceCreateInfoKHR { - XrStructureType type; - const void* XR_MAY_ALIAS next; - XrSystemId systemId; - XrVulkanDeviceCreateFlagsKHR createFlags; - PFN_vkGetInstanceProcAddr pfnGetInstanceProcAddr; - VkPhysicalDevice vulkanPhysicalDevice; - const VkDeviceCreateInfo* vulkanCreateInfo; - const VkAllocationCallbacks* vulkanAllocator; -} XrVulkanDeviceCreateInfoKHR; - -typedef XrGraphicsBindingVulkanKHR XrGraphicsBindingVulkan2KHR; - -typedef struct XrVulkanGraphicsDeviceGetInfoKHR { - XrStructureType type; - const void* XR_MAY_ALIAS next; - XrSystemId systemId; - VkInstance vulkanInstance; -} XrVulkanGraphicsDeviceGetInfoKHR; - -typedef XrSwapchainImageVulkanKHR XrSwapchainImageVulkan2KHR; - -typedef XrGraphicsRequirementsVulkanKHR XrGraphicsRequirementsVulkan2KHR; - -typedef XrResult (XRAPI_PTR *PFN_xrCreateVulkanInstanceKHR)(XrInstance instance, const XrVulkanInstanceCreateInfoKHR* createInfo, VkInstance* vulkanInstance, VkResult* vulkanResult); -typedef XrResult (XRAPI_PTR *PFN_xrCreateVulkanDeviceKHR)(XrInstance instance, const XrVulkanDeviceCreateInfoKHR* createInfo, VkDevice* vulkanDevice, VkResult* vulkanResult); -typedef XrResult (XRAPI_PTR *PFN_xrGetVulkanGraphicsDevice2KHR)(XrInstance instance, const XrVulkanGraphicsDeviceGetInfoKHR* getInfo, VkPhysicalDevice* vulkanPhysicalDevice); -typedef XrResult (XRAPI_PTR *PFN_xrGetVulkanGraphicsRequirements2KHR)(XrInstance instance, XrSystemId systemId, XrGraphicsRequirementsVulkanKHR* graphicsRequirements); - -#ifndef XR_NO_PROTOTYPES -#ifdef XR_EXTENSION_PROTOTYPES -XRAPI_ATTR XrResult XRAPI_CALL xrCreateVulkanInstanceKHR( - XrInstance instance, - const XrVulkanInstanceCreateInfoKHR* createInfo, - VkInstance* vulkanInstance, - VkResult* vulkanResult); - -XRAPI_ATTR XrResult XRAPI_CALL xrCreateVulkanDeviceKHR( - XrInstance instance, - const XrVulkanDeviceCreateInfoKHR* createInfo, - VkDevice* vulkanDevice, - VkResult* vulkanResult); - -XRAPI_ATTR XrResult XRAPI_CALL xrGetVulkanGraphicsDevice2KHR( - XrInstance instance, - const XrVulkanGraphicsDeviceGetInfoKHR* getInfo, - VkPhysicalDevice* vulkanPhysicalDevice); - -XRAPI_ATTR XrResult XRAPI_CALL xrGetVulkanGraphicsRequirements2KHR( - XrInstance instance, - XrSystemId systemId, - XrGraphicsRequirementsVulkanKHR* graphicsRequirements); -#endif /* XR_EXTENSION_PROTOTYPES */ -#endif /* !XR_NO_PROTOTYPES */ -#endif /* XR_USE_GRAPHICS_API_VULKAN */ - -#ifdef XR_USE_PLATFORM_EGL - -// XR_MNDX_egl_enable is a preprocessor guard. Do not pass it to API calls. -#define XR_MNDX_egl_enable 1 -#define XR_MNDX_egl_enable_SPEC_VERSION 2 -#define XR_MNDX_EGL_ENABLE_EXTENSION_NAME "XR_MNDX_egl_enable" -typedef PFN_xrVoidFunction (*PFN_xrEglGetProcAddressMNDX)(const char *name); -// XrGraphicsBindingEGLMNDX extends XrSessionCreateInfo -typedef struct XrGraphicsBindingEGLMNDX { - XrStructureType type; - const void* XR_MAY_ALIAS next; - PFN_xrEglGetProcAddressMNDX getProcAddress; - EGLDisplay display; - EGLConfig config; - EGLContext context; -} XrGraphicsBindingEGLMNDX; - -#endif /* XR_USE_PLATFORM_EGL */ - -#ifdef XR_USE_PLATFORM_WIN32 - -// XR_MSFT_perception_anchor_interop is a preprocessor guard. Do not pass it to API calls. -#define XR_MSFT_perception_anchor_interop 1 -#define XR_MSFT_perception_anchor_interop_SPEC_VERSION 1 -#define XR_MSFT_PERCEPTION_ANCHOR_INTEROP_EXTENSION_NAME "XR_MSFT_perception_anchor_interop" -typedef XrResult (XRAPI_PTR *PFN_xrCreateSpatialAnchorFromPerceptionAnchorMSFT)(XrSession session, IUnknown* perceptionAnchor, XrSpatialAnchorMSFT* anchor); -typedef XrResult (XRAPI_PTR *PFN_xrTryGetPerceptionAnchorFromSpatialAnchorMSFT)(XrSession session, XrSpatialAnchorMSFT anchor, IUnknown** perceptionAnchor); - -#ifndef XR_NO_PROTOTYPES -#ifdef XR_EXTENSION_PROTOTYPES -XRAPI_ATTR XrResult XRAPI_CALL xrCreateSpatialAnchorFromPerceptionAnchorMSFT( - XrSession session, - IUnknown* perceptionAnchor, - XrSpatialAnchorMSFT* anchor); - -XRAPI_ATTR XrResult XRAPI_CALL xrTryGetPerceptionAnchorFromSpatialAnchorMSFT( - XrSession session, - XrSpatialAnchorMSFT anchor, - IUnknown** perceptionAnchor); -#endif /* XR_EXTENSION_PROTOTYPES */ -#endif /* !XR_NO_PROTOTYPES */ -#endif /* XR_USE_PLATFORM_WIN32 */ - -#ifdef XR_USE_PLATFORM_WIN32 - -// XR_MSFT_holographic_window_attachment is a preprocessor guard. Do not pass it to API calls. -#define XR_MSFT_holographic_window_attachment 1 -#define XR_MSFT_holographic_window_attachment_SPEC_VERSION 1 -#define XR_MSFT_HOLOGRAPHIC_WINDOW_ATTACHMENT_EXTENSION_NAME "XR_MSFT_holographic_window_attachment" -#ifdef XR_USE_PLATFORM_WIN32 -// XrHolographicWindowAttachmentMSFT extends XrSessionCreateInfo -typedef struct XrHolographicWindowAttachmentMSFT { - XrStructureType type; - const void* XR_MAY_ALIAS next; - IUnknown* holographicSpace; - IUnknown* coreWindow; -} XrHolographicWindowAttachmentMSFT; -#endif // XR_USE_PLATFORM_WIN32 - -#endif /* XR_USE_PLATFORM_WIN32 */ - -#ifdef XR_USE_PLATFORM_ANDROID - -// XR_FB_android_surface_swapchain_create is a preprocessor guard. Do not pass it to API calls. -#define XR_FB_android_surface_swapchain_create 1 -#define XR_FB_android_surface_swapchain_create_SPEC_VERSION 1 -#define XR_FB_ANDROID_SURFACE_SWAPCHAIN_CREATE_EXTENSION_NAME "XR_FB_android_surface_swapchain_create" -typedef XrFlags64 XrAndroidSurfaceSwapchainFlagsFB; - -// Flag bits for XrAndroidSurfaceSwapchainFlagsFB -static const XrAndroidSurfaceSwapchainFlagsFB XR_ANDROID_SURFACE_SWAPCHAIN_SYNCHRONOUS_BIT_FB = 0x00000001; -static const XrAndroidSurfaceSwapchainFlagsFB XR_ANDROID_SURFACE_SWAPCHAIN_USE_TIMESTAMPS_BIT_FB = 0x00000002; - -#ifdef XR_USE_PLATFORM_ANDROID -// XrAndroidSurfaceSwapchainCreateInfoFB extends XrSwapchainCreateInfo -typedef struct XrAndroidSurfaceSwapchainCreateInfoFB { - XrStructureType type; - const void* XR_MAY_ALIAS next; - XrAndroidSurfaceSwapchainFlagsFB createFlags; -} XrAndroidSurfaceSwapchainCreateInfoFB; -#endif // XR_USE_PLATFORM_ANDROID - -#endif /* XR_USE_PLATFORM_ANDROID */ - -#ifdef XR_USE_PLATFORM_ML - -// XR_ML_compat is a preprocessor guard. Do not pass it to API calls. -#define XR_ML_compat 1 -#define XR_ML_compat_SPEC_VERSION 1 -#define XR_ML_COMPAT_EXTENSION_NAME "XR_ML_compat" -typedef struct XrCoordinateSpaceCreateInfoML { - XrStructureType type; - const void* XR_MAY_ALIAS next; - MLCoordinateFrameUID cfuid; - XrPosef poseInCoordinateSpace; -} XrCoordinateSpaceCreateInfoML; - -typedef XrResult (XRAPI_PTR *PFN_xrCreateSpaceFromCoordinateFrameUIDML)(XrSession session, const XrCoordinateSpaceCreateInfoML *createInfo, XrSpace* space); - -#ifndef XR_NO_PROTOTYPES -#ifdef XR_EXTENSION_PROTOTYPES -XRAPI_ATTR XrResult XRAPI_CALL xrCreateSpaceFromCoordinateFrameUIDML( - XrSession session, - const XrCoordinateSpaceCreateInfoML * createInfo, - XrSpace* space); -#endif /* XR_EXTENSION_PROTOTYPES */ -#endif /* !XR_NO_PROTOTYPES */ -#endif /* XR_USE_PLATFORM_ML */ - -#ifdef XR_USE_PLATFORM_WIN32 - -// XR_OCULUS_audio_device_guid is a preprocessor guard. Do not pass it to API calls. -#define XR_OCULUS_audio_device_guid 1 -#define XR_OCULUS_audio_device_guid_SPEC_VERSION 1 -#define XR_OCULUS_AUDIO_DEVICE_GUID_EXTENSION_NAME "XR_OCULUS_audio_device_guid" -#define XR_MAX_AUDIO_DEVICE_STR_SIZE_OCULUS 128 -typedef XrResult (XRAPI_PTR *PFN_xrGetAudioOutputDeviceGuidOculus)(XrInstance instance, wchar_t buffer[XR_MAX_AUDIO_DEVICE_STR_SIZE_OCULUS]); -typedef XrResult (XRAPI_PTR *PFN_xrGetAudioInputDeviceGuidOculus)(XrInstance instance, wchar_t buffer[XR_MAX_AUDIO_DEVICE_STR_SIZE_OCULUS]); - -#ifndef XR_NO_PROTOTYPES -#ifdef XR_EXTENSION_PROTOTYPES -XRAPI_ATTR XrResult XRAPI_CALL xrGetAudioOutputDeviceGuidOculus( - XrInstance instance, - wchar_t buffer[XR_MAX_AUDIO_DEVICE_STR_SIZE_OCULUS]); - -XRAPI_ATTR XrResult XRAPI_CALL xrGetAudioInputDeviceGuidOculus( - XrInstance instance, - wchar_t buffer[XR_MAX_AUDIO_DEVICE_STR_SIZE_OCULUS]); -#endif /* XR_EXTENSION_PROTOTYPES */ -#endif /* !XR_NO_PROTOTYPES */ -#endif /* XR_USE_PLATFORM_WIN32 */ - -#ifdef XR_USE_GRAPHICS_API_VULKAN - -// XR_FB_foveation_vulkan is a preprocessor guard. Do not pass it to API calls. -#define XR_FB_foveation_vulkan 1 -#define XR_FB_foveation_vulkan_SPEC_VERSION 1 -#define XR_FB_FOVEATION_VULKAN_EXTENSION_NAME "XR_FB_foveation_vulkan" -// XrSwapchainImageFoveationVulkanFB extends XrSwapchainImageVulkanKHR -typedef struct XrSwapchainImageFoveationVulkanFB { - XrStructureType type; - void* XR_MAY_ALIAS next; - VkImage image; - uint32_t width; - uint32_t height; -} XrSwapchainImageFoveationVulkanFB; - -#endif /* XR_USE_GRAPHICS_API_VULKAN */ - -#ifdef XR_USE_PLATFORM_ANDROID - -// XR_FB_swapchain_update_state_android_surface is a preprocessor guard. Do not pass it to API calls. -#define XR_FB_swapchain_update_state_android_surface 1 -#define XR_FB_swapchain_update_state_android_surface_SPEC_VERSION 1 -#define XR_FB_SWAPCHAIN_UPDATE_STATE_ANDROID_SURFACE_EXTENSION_NAME "XR_FB_swapchain_update_state_android_surface" -#ifdef XR_USE_PLATFORM_ANDROID -typedef struct XrSwapchainStateAndroidSurfaceDimensionsFB { - XrStructureType type; - void* XR_MAY_ALIAS next; - uint32_t width; - uint32_t height; -} XrSwapchainStateAndroidSurfaceDimensionsFB; -#endif // XR_USE_PLATFORM_ANDROID - -#endif /* XR_USE_PLATFORM_ANDROID */ - -#ifdef XR_USE_GRAPHICS_API_OPENGL_ES - -// XR_FB_swapchain_update_state_opengl_es is a preprocessor guard. Do not pass it to API calls. -#define XR_FB_swapchain_update_state_opengl_es 1 -#define XR_FB_swapchain_update_state_opengl_es_SPEC_VERSION 1 -#define XR_FB_SWAPCHAIN_UPDATE_STATE_OPENGL_ES_EXTENSION_NAME "XR_FB_swapchain_update_state_opengl_es" -#ifdef XR_USE_GRAPHICS_API_OPENGL_ES -typedef struct XrSwapchainStateSamplerOpenGLESFB { - XrStructureType type; - void* XR_MAY_ALIAS next; - EGLenum minFilter; - EGLenum magFilter; - EGLenum wrapModeS; - EGLenum wrapModeT; - EGLenum swizzleRed; - EGLenum swizzleGreen; - EGLenum swizzleBlue; - EGLenum swizzleAlpha; - float maxAnisotropy; - XrColor4f borderColor; -} XrSwapchainStateSamplerOpenGLESFB; -#endif // XR_USE_GRAPHICS_API_OPENGL_ES - -#endif /* XR_USE_GRAPHICS_API_OPENGL_ES */ - -#ifdef XR_USE_GRAPHICS_API_VULKAN - -// XR_FB_swapchain_update_state_vulkan is a preprocessor guard. Do not pass it to API calls. -#define XR_FB_swapchain_update_state_vulkan 1 -#define XR_FB_swapchain_update_state_vulkan_SPEC_VERSION 1 -#define XR_FB_SWAPCHAIN_UPDATE_STATE_VULKAN_EXTENSION_NAME "XR_FB_swapchain_update_state_vulkan" -#ifdef XR_USE_GRAPHICS_API_VULKAN -typedef struct XrSwapchainStateSamplerVulkanFB { - XrStructureType type; - void* XR_MAY_ALIAS next; - VkFilter minFilter; - VkFilter magFilter; - VkSamplerMipmapMode mipmapMode; - VkSamplerAddressMode wrapModeS; - VkSamplerAddressMode wrapModeT; - VkComponentSwizzle swizzleRed; - VkComponentSwizzle swizzleGreen; - VkComponentSwizzle swizzleBlue; - VkComponentSwizzle swizzleAlpha; - float maxAnisotropy; - XrColor4f borderColor; -} XrSwapchainStateSamplerVulkanFB; -#endif // XR_USE_GRAPHICS_API_VULKAN - -#endif /* XR_USE_GRAPHICS_API_VULKAN */ - -#ifdef XR_USE_GRAPHICS_API_VULKAN - -// XR_META_vulkan_swapchain_create_info is a preprocessor guard. Do not pass it to API calls. -#define XR_META_vulkan_swapchain_create_info 1 -#define XR_META_vulkan_swapchain_create_info_SPEC_VERSION 1 -#define XR_META_VULKAN_SWAPCHAIN_CREATE_INFO_EXTENSION_NAME "XR_META_vulkan_swapchain_create_info" -// XrVulkanSwapchainCreateInfoMETA extends XrSwapchainCreateInfo -typedef struct XrVulkanSwapchainCreateInfoMETA { - XrStructureType type; - const void* XR_MAY_ALIAS next; - VkImageCreateFlags additionalCreateFlags; - VkImageUsageFlags additionalUsageFlags; -} XrVulkanSwapchainCreateInfoMETA; - -#endif /* XR_USE_GRAPHICS_API_VULKAN */ - -#ifdef __cplusplus -} -#endif - -#endif diff --git a/Plugins/MetaXR/Source/Thirdparty/KhronosOpenXR/include/khronos/openxr/openxr_platform_defines.h b/Plugins/MetaXR/Source/Thirdparty/KhronosOpenXR/include/khronos/openxr/openxr_platform_defines.h deleted file mode 100644 index cd07c91..0000000 --- a/Plugins/MetaXR/Source/Thirdparty/KhronosOpenXR/include/khronos/openxr/openxr_platform_defines.h +++ /dev/null @@ -1,114 +0,0 @@ -/* -** Copyright (c) 2017-2024, The Khronos Group Inc. -** -** SPDX-License-Identifier: Apache-2.0 OR MIT -*/ - -#ifndef OPENXR_PLATFORM_DEFINES_H_ -#define OPENXR_PLATFORM_DEFINES_H_ 1 - -#ifdef __cplusplus -extern "C" { -#endif - -/* Platform-specific calling convention macros. - * - * Platforms should define these so that OpenXR clients call OpenXR functions - * with the same calling conventions that the OpenXR implementation expects. - * - * XRAPI_ATTR - Placed before the return type in function declarations. - * Useful for C++11 and GCC/Clang-style function attribute syntax. - * XRAPI_CALL - Placed after the return type in function declarations. - * Useful for MSVC-style calling convention syntax. - * XRAPI_PTR - Placed between the '(' and '*' in function pointer types. - * - * Function declaration: XRAPI_ATTR void XRAPI_CALL xrFunction(void); - * Function pointer type: typedef void (XRAPI_PTR *PFN_xrFunction)(void); - */ -#if defined(_WIN32) -#define XRAPI_ATTR -// On Windows, functions use the stdcall convention -#define XRAPI_CALL __stdcall -#define XRAPI_PTR XRAPI_CALL -#elif defined(__ANDROID__) && defined(__ARM_ARCH) && __ARM_ARCH < 7 -#error "API not supported for the 'armeabi' NDK ABI" -#elif defined(__ANDROID__) && defined(__ARM_ARCH) && __ARM_ARCH >= 7 && defined(__ARM_32BIT_STATE) -// On Android 32-bit ARM targets, functions use the "hardfloat" -// calling convention, i.e. float parameters are passed in registers. This -// is true even if the rest of the application passes floats on the stack, -// as it does by default when compiling for the armeabi-v7a NDK ABI. -#define XRAPI_ATTR __attribute__((pcs("aapcs-vfp"))) -#define XRAPI_CALL -#define XRAPI_PTR XRAPI_ATTR -#else -// On other platforms, use the default calling convention -#define XRAPI_ATTR -#define XRAPI_CALL -#define XRAPI_PTR -#endif - -#include - -#if !defined(XR_NO_STDINT_H) -#if defined(_MSC_VER) && (_MSC_VER < 1600) -typedef signed __int8 int8_t; -typedef unsigned __int8 uint8_t; -typedef signed __int16 int16_t; -typedef unsigned __int16 uint16_t; -typedef signed __int32 int32_t; -typedef unsigned __int32 uint32_t; -typedef signed __int64 int64_t; -typedef unsigned __int64 uint64_t; -#else -#include -#endif -#endif // !defined( XR_NO_STDINT_H ) - -// XR_PTR_SIZE (in bytes) -#if (defined(__LP64__) || defined(_WIN64) || (defined(__x86_64__) && !defined(__ILP32__) ) || defined(_M_X64) || defined(__ia64) || defined(_M_IA64) || defined(__aarch64__) || defined(__powerpc64__)) -#define XR_PTR_SIZE 8 -#else -#define XR_PTR_SIZE 4 -#endif - -// Needed so we can use clang __has_feature portably. -#if !defined(XR_COMPILER_HAS_FEATURE) -#if defined(__clang__) -#define XR_COMPILER_HAS_FEATURE(x) __has_feature(x) -#else -#define XR_COMPILER_HAS_FEATURE(x) 0 -#endif -#endif - -// Identifies if the current compiler has C++11 support enabled. -// Does not by itself identify if any given C++11 feature is present. -#if !defined(XR_CPP11_ENABLED) && defined(__cplusplus) -#if defined(__GNUC__) && defined(__GXX_EXPERIMENTAL_CXX0X__) -#define XR_CPP11_ENABLED 1 -#elif defined(_MSC_VER) && (_MSC_VER >= 1600) -#define XR_CPP11_ENABLED 1 -#elif (__cplusplus >= 201103L) // 201103 is the first C++11 version. -#define XR_CPP11_ENABLED 1 -#endif -#endif - -// Identifies if the current compiler supports C++11 nullptr. -#if !defined(XR_CPP_NULLPTR_SUPPORTED) -#if defined(XR_CPP11_ENABLED) && \ - ((defined(__clang__) && XR_COMPILER_HAS_FEATURE(cxx_nullptr)) || \ - (defined(__GNUC__) && (((__GNUC__ * 1000) + __GNUC_MINOR__) >= 4006)) || \ - (defined(_MSC_VER) && (_MSC_VER >= 1600)) || \ - (defined(__EDG_VERSION__) && (__EDG_VERSION__ >= 403))) -#define XR_CPP_NULLPTR_SUPPORTED 1 -#endif -#endif - -#if !defined(XR_CPP_NULLPTR_SUPPORTED) -#define XR_CPP_NULLPTR_SUPPORTED 0 -#endif // !defined(XR_CPP_NULLPTR_SUPPORTED) - -#ifdef __cplusplus -} -#endif - -#endif diff --git a/Plugins/MetaXR/Source/Thirdparty/KhronosOpenXR/include/khronos/openxr/openxr_reflection.h b/Plugins/MetaXR/Source/Thirdparty/KhronosOpenXR/include/khronos/openxr/openxr_reflection.h deleted file mode 100644 index c1e9eb5..0000000 --- a/Plugins/MetaXR/Source/Thirdparty/KhronosOpenXR/include/khronos/openxr/openxr_reflection.h +++ /dev/null @@ -1,6262 +0,0 @@ -#ifndef OPENXR_REFLECTION_H_ -#define OPENXR_REFLECTION_H_ 1 - -/* -** Copyright (c) 2017-2024, The Khronos Group Inc. -** -** SPDX-License-Identifier: Apache-2.0 OR MIT -*/ - -/* -** This header is generated from the Khronos OpenXR XML API Registry. -** -*/ - -#include "openxr.h" - -/* -This file contains expansion macros (X Macros) for OpenXR enumerations and structures. -Example of how to use expansion macros to make an enum-to-string function: - -#define XR_ENUM_CASE_STR(name, val) case name: return #name; -#define XR_ENUM_STR(enumType) \ - constexpr const char* XrEnumStr(enumType e) { \ - switch (e) { \ - XR_LIST_ENUM_##enumType(XR_ENUM_CASE_STR) \ - default: return "Unknown"; \ - } \ - } \ - -XR_ENUM_STR(XrResult); -*/ - -#define XR_LIST_ENUM_XrResult(_) \ - _(XR_SUCCESS, 0) \ - _(XR_TIMEOUT_EXPIRED, 1) \ - _(XR_SESSION_LOSS_PENDING, 3) \ - _(XR_EVENT_UNAVAILABLE, 4) \ - _(XR_SPACE_BOUNDS_UNAVAILABLE, 7) \ - _(XR_SESSION_NOT_FOCUSED, 8) \ - _(XR_FRAME_DISCARDED, 9) \ - _(XR_ERROR_VALIDATION_FAILURE, -1) \ - _(XR_ERROR_RUNTIME_FAILURE, -2) \ - _(XR_ERROR_OUT_OF_MEMORY, -3) \ - _(XR_ERROR_API_VERSION_UNSUPPORTED, -4) \ - _(XR_ERROR_INITIALIZATION_FAILED, -6) \ - _(XR_ERROR_FUNCTION_UNSUPPORTED, -7) \ - _(XR_ERROR_FEATURE_UNSUPPORTED, -8) \ - _(XR_ERROR_EXTENSION_NOT_PRESENT, -9) \ - _(XR_ERROR_LIMIT_REACHED, -10) \ - _(XR_ERROR_SIZE_INSUFFICIENT, -11) \ - _(XR_ERROR_HANDLE_INVALID, -12) \ - _(XR_ERROR_INSTANCE_LOST, -13) \ - _(XR_ERROR_SESSION_RUNNING, -14) \ - _(XR_ERROR_SESSION_NOT_RUNNING, -16) \ - _(XR_ERROR_SESSION_LOST, -17) \ - _(XR_ERROR_SYSTEM_INVALID, -18) \ - _(XR_ERROR_PATH_INVALID, -19) \ - _(XR_ERROR_PATH_COUNT_EXCEEDED, -20) \ - _(XR_ERROR_PATH_FORMAT_INVALID, -21) \ - _(XR_ERROR_PATH_UNSUPPORTED, -22) \ - _(XR_ERROR_LAYER_INVALID, -23) \ - _(XR_ERROR_LAYER_LIMIT_EXCEEDED, -24) \ - _(XR_ERROR_SWAPCHAIN_RECT_INVALID, -25) \ - _(XR_ERROR_SWAPCHAIN_FORMAT_UNSUPPORTED, -26) \ - _(XR_ERROR_ACTION_TYPE_MISMATCH, -27) \ - _(XR_ERROR_SESSION_NOT_READY, -28) \ - _(XR_ERROR_SESSION_NOT_STOPPING, -29) \ - _(XR_ERROR_TIME_INVALID, -30) \ - _(XR_ERROR_REFERENCE_SPACE_UNSUPPORTED, -31) \ - _(XR_ERROR_FILE_ACCESS_ERROR, -32) \ - _(XR_ERROR_FILE_CONTENTS_INVALID, -33) \ - _(XR_ERROR_FORM_FACTOR_UNSUPPORTED, -34) \ - _(XR_ERROR_FORM_FACTOR_UNAVAILABLE, -35) \ - _(XR_ERROR_API_LAYER_NOT_PRESENT, -36) \ - _(XR_ERROR_CALL_ORDER_INVALID, -37) \ - _(XR_ERROR_GRAPHICS_DEVICE_INVALID, -38) \ - _(XR_ERROR_POSE_INVALID, -39) \ - _(XR_ERROR_INDEX_OUT_OF_RANGE, -40) \ - _(XR_ERROR_VIEW_CONFIGURATION_TYPE_UNSUPPORTED, -41) \ - _(XR_ERROR_ENVIRONMENT_BLEND_MODE_UNSUPPORTED, -42) \ - _(XR_ERROR_NAME_DUPLICATED, -44) \ - _(XR_ERROR_NAME_INVALID, -45) \ - _(XR_ERROR_ACTIONSET_NOT_ATTACHED, -46) \ - _(XR_ERROR_ACTIONSETS_ALREADY_ATTACHED, -47) \ - _(XR_ERROR_LOCALIZED_NAME_DUPLICATED, -48) \ - _(XR_ERROR_LOCALIZED_NAME_INVALID, -49) \ - _(XR_ERROR_GRAPHICS_REQUIREMENTS_CALL_MISSING, -50) \ - _(XR_ERROR_RUNTIME_UNAVAILABLE, -51) \ - _(XR_ERROR_EXTENSION_DEPENDENCY_NOT_ENABLED, -1000710001) \ - _(XR_ERROR_PERMISSION_INSUFFICIENT, -1000710000) \ - _(XR_ERROR_ANDROID_THREAD_SETTINGS_ID_INVALID_KHR, -1000003000) \ - _(XR_ERROR_ANDROID_THREAD_SETTINGS_FAILURE_KHR, -1000003001) \ - _(XR_ERROR_CREATE_SPATIAL_ANCHOR_FAILED_MSFT, -1000039001) \ - _(XR_ERROR_SECONDARY_VIEW_CONFIGURATION_TYPE_NOT_ENABLED_MSFT, -1000053000) \ - _(XR_ERROR_CONTROLLER_MODEL_KEY_INVALID_MSFT, -1000055000) \ - _(XR_ERROR_REPROJECTION_MODE_UNSUPPORTED_MSFT, -1000066000) \ - _(XR_ERROR_COMPUTE_NEW_SCENE_NOT_COMPLETED_MSFT, -1000097000) \ - _(XR_ERROR_SCENE_COMPONENT_ID_INVALID_MSFT, -1000097001) \ - _(XR_ERROR_SCENE_COMPONENT_TYPE_MISMATCH_MSFT, -1000097002) \ - _(XR_ERROR_SCENE_MESH_BUFFER_ID_INVALID_MSFT, -1000097003) \ - _(XR_ERROR_SCENE_COMPUTE_FEATURE_INCOMPATIBLE_MSFT, -1000097004) \ - _(XR_ERROR_SCENE_COMPUTE_CONSISTENCY_MISMATCH_MSFT, -1000097005) \ - _(XR_ERROR_DISPLAY_REFRESH_RATE_UNSUPPORTED_FB, -1000101000) \ - _(XR_ERROR_COLOR_SPACE_UNSUPPORTED_FB, -1000108000) \ - _(XR_ERROR_SPACE_COMPONENT_NOT_SUPPORTED_FB, -1000113000) \ - _(XR_ERROR_SPACE_COMPONENT_NOT_ENABLED_FB, -1000113001) \ - _(XR_ERROR_SPACE_COMPONENT_STATUS_PENDING_FB, -1000113002) \ - _(XR_ERROR_SPACE_COMPONENT_STATUS_ALREADY_SET_FB, -1000113003) \ - _(XR_ERROR_UNEXPECTED_STATE_PASSTHROUGH_FB, -1000118000) \ - _(XR_ERROR_FEATURE_ALREADY_CREATED_PASSTHROUGH_FB, -1000118001) \ - _(XR_ERROR_FEATURE_REQUIRED_PASSTHROUGH_FB, -1000118002) \ - _(XR_ERROR_NOT_PERMITTED_PASSTHROUGH_FB, -1000118003) \ - _(XR_ERROR_INSUFFICIENT_RESOURCES_PASSTHROUGH_FB, -1000118004) \ - _(XR_ERROR_UNKNOWN_PASSTHROUGH_FB, -1000118050) \ - _(XR_ERROR_RENDER_MODEL_KEY_INVALID_FB, -1000119000) \ - _(XR_RENDER_MODEL_UNAVAILABLE_FB, 1000119020) \ - _(XR_ERROR_MARKER_NOT_TRACKED_VARJO, -1000124000) \ - _(XR_ERROR_MARKER_ID_INVALID_VARJO, -1000124001) \ - _(XR_ERROR_MARKER_DETECTOR_PERMISSION_DENIED_ML, -1000138000) \ - _(XR_ERROR_MARKER_DETECTOR_LOCATE_FAILED_ML, -1000138001) \ - _(XR_ERROR_MARKER_DETECTOR_INVALID_DATA_QUERY_ML, -1000138002) \ - _(XR_ERROR_MARKER_DETECTOR_INVALID_CREATE_INFO_ML, -1000138003) \ - _(XR_ERROR_MARKER_INVALID_ML, -1000138004) \ - _(XR_ERROR_LOCALIZATION_MAP_INCOMPATIBLE_ML, -1000139000) \ - _(XR_ERROR_LOCALIZATION_MAP_UNAVAILABLE_ML, -1000139001) \ - _(XR_ERROR_LOCALIZATION_MAP_FAIL_ML, -1000139002) \ - _(XR_ERROR_LOCALIZATION_MAP_IMPORT_EXPORT_PERMISSION_DENIED_ML, -1000139003) \ - _(XR_ERROR_LOCALIZATION_MAP_PERMISSION_DENIED_ML, -1000139004) \ - _(XR_ERROR_LOCALIZATION_MAP_ALREADY_EXISTS_ML, -1000139005) \ - _(XR_ERROR_LOCALIZATION_MAP_CANNOT_EXPORT_CLOUD_MAP_ML, -1000139006) \ - _(XR_ERROR_SPATIAL_ANCHOR_NAME_NOT_FOUND_MSFT, -1000142001) \ - _(XR_ERROR_SPATIAL_ANCHOR_NAME_INVALID_MSFT, -1000142002) \ - _(XR_SCENE_MARKER_DATA_NOT_STRING_MSFT, 1000147000) \ - _(XR_ERROR_SPACE_MAPPING_INSUFFICIENT_FB, -1000169000) \ - _(XR_ERROR_SPACE_LOCALIZATION_FAILED_FB, -1000169001) \ - _(XR_ERROR_SPACE_NETWORK_TIMEOUT_FB, -1000169002) \ - _(XR_ERROR_SPACE_NETWORK_REQUEST_FAILED_FB, -1000169003) \ - _(XR_ERROR_SPACE_CLOUD_STORAGE_DISABLED_FB, -1000169004) \ - _(XR_ERROR_PASSTHROUGH_COLOR_LUT_BUFFER_SIZE_MISMATCH_META, -1000266000) \ - _(XR_ENVIRONMENT_DEPTH_NOT_AVAILABLE_META, 1000291000) \ - _(XR_ERROR_HINT_ALREADY_SET_QCOM, -1000306000) \ - _(XR_ERROR_NOT_AN_ANCHOR_HTC, -1000319000) \ - _(XR_ERROR_SPACE_NOT_LOCATABLE_EXT, -1000429000) \ - _(XR_ERROR_PLANE_DETECTION_PERMISSION_DENIED_EXT, -1000429001) \ - _(XR_ERROR_FUTURE_PENDING_EXT, -1000469001) \ - _(XR_ERROR_FUTURE_INVALID_EXT, -1000469002) \ - _(XR_RESULT_MAX_ENUM, 0x7FFFFFFF) - -#define XR_LIST_ENUM_XrStructureType(_) \ - _(XR_TYPE_UNKNOWN, 0) \ - _(XR_TYPE_API_LAYER_PROPERTIES, 1) \ - _(XR_TYPE_EXTENSION_PROPERTIES, 2) \ - _(XR_TYPE_INSTANCE_CREATE_INFO, 3) \ - _(XR_TYPE_SYSTEM_GET_INFO, 4) \ - _(XR_TYPE_SYSTEM_PROPERTIES, 5) \ - _(XR_TYPE_VIEW_LOCATE_INFO, 6) \ - _(XR_TYPE_VIEW, 7) \ - _(XR_TYPE_SESSION_CREATE_INFO, 8) \ - _(XR_TYPE_SWAPCHAIN_CREATE_INFO, 9) \ - _(XR_TYPE_SESSION_BEGIN_INFO, 10) \ - _(XR_TYPE_VIEW_STATE, 11) \ - _(XR_TYPE_FRAME_END_INFO, 12) \ - _(XR_TYPE_HAPTIC_VIBRATION, 13) \ - _(XR_TYPE_EVENT_DATA_BUFFER, 16) \ - _(XR_TYPE_EVENT_DATA_INSTANCE_LOSS_PENDING, 17) \ - _(XR_TYPE_EVENT_DATA_SESSION_STATE_CHANGED, 18) \ - _(XR_TYPE_ACTION_STATE_BOOLEAN, 23) \ - _(XR_TYPE_ACTION_STATE_FLOAT, 24) \ - _(XR_TYPE_ACTION_STATE_VECTOR2F, 25) \ - _(XR_TYPE_ACTION_STATE_POSE, 27) \ - _(XR_TYPE_ACTION_SET_CREATE_INFO, 28) \ - _(XR_TYPE_ACTION_CREATE_INFO, 29) \ - _(XR_TYPE_INSTANCE_PROPERTIES, 32) \ - _(XR_TYPE_FRAME_WAIT_INFO, 33) \ - _(XR_TYPE_COMPOSITION_LAYER_PROJECTION, 35) \ - _(XR_TYPE_COMPOSITION_LAYER_QUAD, 36) \ - _(XR_TYPE_REFERENCE_SPACE_CREATE_INFO, 37) \ - _(XR_TYPE_ACTION_SPACE_CREATE_INFO, 38) \ - _(XR_TYPE_EVENT_DATA_REFERENCE_SPACE_CHANGE_PENDING, 40) \ - _(XR_TYPE_VIEW_CONFIGURATION_VIEW, 41) \ - _(XR_TYPE_SPACE_LOCATION, 42) \ - _(XR_TYPE_SPACE_VELOCITY, 43) \ - _(XR_TYPE_FRAME_STATE, 44) \ - _(XR_TYPE_VIEW_CONFIGURATION_PROPERTIES, 45) \ - _(XR_TYPE_FRAME_BEGIN_INFO, 46) \ - _(XR_TYPE_COMPOSITION_LAYER_PROJECTION_VIEW, 48) \ - _(XR_TYPE_EVENT_DATA_EVENTS_LOST, 49) \ - _(XR_TYPE_INTERACTION_PROFILE_SUGGESTED_BINDING, 51) \ - _(XR_TYPE_EVENT_DATA_INTERACTION_PROFILE_CHANGED, 52) \ - _(XR_TYPE_INTERACTION_PROFILE_STATE, 53) \ - _(XR_TYPE_SWAPCHAIN_IMAGE_ACQUIRE_INFO, 55) \ - _(XR_TYPE_SWAPCHAIN_IMAGE_WAIT_INFO, 56) \ - _(XR_TYPE_SWAPCHAIN_IMAGE_RELEASE_INFO, 57) \ - _(XR_TYPE_ACTION_STATE_GET_INFO, 58) \ - _(XR_TYPE_HAPTIC_ACTION_INFO, 59) \ - _(XR_TYPE_SESSION_ACTION_SETS_ATTACH_INFO, 60) \ - _(XR_TYPE_ACTIONS_SYNC_INFO, 61) \ - _(XR_TYPE_BOUND_SOURCES_FOR_ACTION_ENUMERATE_INFO, 62) \ - _(XR_TYPE_INPUT_SOURCE_LOCALIZED_NAME_GET_INFO, 63) \ - _(XR_TYPE_SPACES_LOCATE_INFO, 1000471000) \ - _(XR_TYPE_SPACE_LOCATIONS, 1000471001) \ - _(XR_TYPE_SPACE_VELOCITIES, 1000471002) \ - _(XR_TYPE_COMPOSITION_LAYER_CUBE_KHR, 1000006000) \ - _(XR_TYPE_INSTANCE_CREATE_INFO_ANDROID_KHR, 1000008000) \ - _(XR_TYPE_COMPOSITION_LAYER_DEPTH_INFO_KHR, 1000010000) \ - _(XR_TYPE_VULKAN_SWAPCHAIN_FORMAT_LIST_CREATE_INFO_KHR, 1000014000) \ - _(XR_TYPE_EVENT_DATA_PERF_SETTINGS_EXT, 1000015000) \ - _(XR_TYPE_COMPOSITION_LAYER_CYLINDER_KHR, 1000017000) \ - _(XR_TYPE_COMPOSITION_LAYER_EQUIRECT_KHR, 1000018000) \ - _(XR_TYPE_DEBUG_UTILS_OBJECT_NAME_INFO_EXT, 1000019000) \ - _(XR_TYPE_DEBUG_UTILS_MESSENGER_CALLBACK_DATA_EXT, 1000019001) \ - _(XR_TYPE_DEBUG_UTILS_MESSENGER_CREATE_INFO_EXT, 1000019002) \ - _(XR_TYPE_DEBUG_UTILS_LABEL_EXT, 1000019003) \ - _(XR_TYPE_GRAPHICS_BINDING_OPENGL_WIN32_KHR, 1000023000) \ - _(XR_TYPE_GRAPHICS_BINDING_OPENGL_XLIB_KHR, 1000023001) \ - _(XR_TYPE_GRAPHICS_BINDING_OPENGL_XCB_KHR, 1000023002) \ - _(XR_TYPE_GRAPHICS_BINDING_OPENGL_WAYLAND_KHR, 1000023003) \ - _(XR_TYPE_SWAPCHAIN_IMAGE_OPENGL_KHR, 1000023004) \ - _(XR_TYPE_GRAPHICS_REQUIREMENTS_OPENGL_KHR, 1000023005) \ - _(XR_TYPE_GRAPHICS_BINDING_OPENGL_ES_ANDROID_KHR, 1000024001) \ - _(XR_TYPE_SWAPCHAIN_IMAGE_OPENGL_ES_KHR, 1000024002) \ - _(XR_TYPE_GRAPHICS_REQUIREMENTS_OPENGL_ES_KHR, 1000024003) \ - _(XR_TYPE_GRAPHICS_BINDING_VULKAN_KHR, 1000025000) \ - _(XR_TYPE_SWAPCHAIN_IMAGE_VULKAN_KHR, 1000025001) \ - _(XR_TYPE_GRAPHICS_REQUIREMENTS_VULKAN_KHR, 1000025002) \ - _(XR_TYPE_GRAPHICS_BINDING_D3D11_KHR, 1000027000) \ - _(XR_TYPE_SWAPCHAIN_IMAGE_D3D11_KHR, 1000027001) \ - _(XR_TYPE_GRAPHICS_REQUIREMENTS_D3D11_KHR, 1000027002) \ - _(XR_TYPE_GRAPHICS_BINDING_D3D12_KHR, 1000028000) \ - _(XR_TYPE_SWAPCHAIN_IMAGE_D3D12_KHR, 1000028001) \ - _(XR_TYPE_GRAPHICS_REQUIREMENTS_D3D12_KHR, 1000028002) \ - _(XR_TYPE_SYSTEM_EYE_GAZE_INTERACTION_PROPERTIES_EXT, 1000030000) \ - _(XR_TYPE_EYE_GAZE_SAMPLE_TIME_EXT, 1000030001) \ - _(XR_TYPE_VISIBILITY_MASK_KHR, 1000031000) \ - _(XR_TYPE_EVENT_DATA_VISIBILITY_MASK_CHANGED_KHR, 1000031001) \ - _(XR_TYPE_SESSION_CREATE_INFO_OVERLAY_EXTX, 1000033000) \ - _(XR_TYPE_EVENT_DATA_MAIN_SESSION_VISIBILITY_CHANGED_EXTX, 1000033003) \ - _(XR_TYPE_COMPOSITION_LAYER_COLOR_SCALE_BIAS_KHR, 1000034000) \ - _(XR_TYPE_SPATIAL_ANCHOR_CREATE_INFO_MSFT, 1000039000) \ - _(XR_TYPE_SPATIAL_ANCHOR_SPACE_CREATE_INFO_MSFT, 1000039001) \ - _(XR_TYPE_COMPOSITION_LAYER_IMAGE_LAYOUT_FB, 1000040000) \ - _(XR_TYPE_COMPOSITION_LAYER_ALPHA_BLEND_FB, 1000041001) \ - _(XR_TYPE_VIEW_CONFIGURATION_DEPTH_RANGE_EXT, 1000046000) \ - _(XR_TYPE_GRAPHICS_BINDING_EGL_MNDX, 1000048004) \ - _(XR_TYPE_SPATIAL_GRAPH_NODE_SPACE_CREATE_INFO_MSFT, 1000049000) \ - _(XR_TYPE_SPATIAL_GRAPH_STATIC_NODE_BINDING_CREATE_INFO_MSFT, 1000049001) \ - _(XR_TYPE_SPATIAL_GRAPH_NODE_BINDING_PROPERTIES_GET_INFO_MSFT, 1000049002) \ - _(XR_TYPE_SPATIAL_GRAPH_NODE_BINDING_PROPERTIES_MSFT, 1000049003) \ - _(XR_TYPE_SYSTEM_HAND_TRACKING_PROPERTIES_EXT, 1000051000) \ - _(XR_TYPE_HAND_TRACKER_CREATE_INFO_EXT, 1000051001) \ - _(XR_TYPE_HAND_JOINTS_LOCATE_INFO_EXT, 1000051002) \ - _(XR_TYPE_HAND_JOINT_LOCATIONS_EXT, 1000051003) \ - _(XR_TYPE_HAND_JOINT_VELOCITIES_EXT, 1000051004) \ - _(XR_TYPE_SYSTEM_HAND_TRACKING_MESH_PROPERTIES_MSFT, 1000052000) \ - _(XR_TYPE_HAND_MESH_SPACE_CREATE_INFO_MSFT, 1000052001) \ - _(XR_TYPE_HAND_MESH_UPDATE_INFO_MSFT, 1000052002) \ - _(XR_TYPE_HAND_MESH_MSFT, 1000052003) \ - _(XR_TYPE_HAND_POSE_TYPE_INFO_MSFT, 1000052004) \ - _(XR_TYPE_SECONDARY_VIEW_CONFIGURATION_SESSION_BEGIN_INFO_MSFT, 1000053000) \ - _(XR_TYPE_SECONDARY_VIEW_CONFIGURATION_STATE_MSFT, 1000053001) \ - _(XR_TYPE_SECONDARY_VIEW_CONFIGURATION_FRAME_STATE_MSFT, 1000053002) \ - _(XR_TYPE_SECONDARY_VIEW_CONFIGURATION_FRAME_END_INFO_MSFT, 1000053003) \ - _(XR_TYPE_SECONDARY_VIEW_CONFIGURATION_LAYER_INFO_MSFT, 1000053004) \ - _(XR_TYPE_SECONDARY_VIEW_CONFIGURATION_SWAPCHAIN_CREATE_INFO_MSFT, 1000053005) \ - _(XR_TYPE_CONTROLLER_MODEL_KEY_STATE_MSFT, 1000055000) \ - _(XR_TYPE_CONTROLLER_MODEL_NODE_PROPERTIES_MSFT, 1000055001) \ - _(XR_TYPE_CONTROLLER_MODEL_PROPERTIES_MSFT, 1000055002) \ - _(XR_TYPE_CONTROLLER_MODEL_NODE_STATE_MSFT, 1000055003) \ - _(XR_TYPE_CONTROLLER_MODEL_STATE_MSFT, 1000055004) \ - _(XR_TYPE_VIEW_CONFIGURATION_VIEW_FOV_EPIC, 1000059000) \ - _(XR_TYPE_HOLOGRAPHIC_WINDOW_ATTACHMENT_MSFT, 1000063000) \ - _(XR_TYPE_COMPOSITION_LAYER_REPROJECTION_INFO_MSFT, 1000066000) \ - _(XR_TYPE_COMPOSITION_LAYER_REPROJECTION_PLANE_OVERRIDE_MSFT, 1000066001) \ - _(XR_TYPE_ANDROID_SURFACE_SWAPCHAIN_CREATE_INFO_FB, 1000070000) \ - _(XR_TYPE_COMPOSITION_LAYER_SECURE_CONTENT_FB, 1000072000) \ - _(XR_TYPE_BODY_TRACKER_CREATE_INFO_FB, 1000076001) \ - _(XR_TYPE_BODY_JOINTS_LOCATE_INFO_FB, 1000076002) \ - _(XR_TYPE_SYSTEM_BODY_TRACKING_PROPERTIES_FB, 1000076004) \ - _(XR_TYPE_BODY_JOINT_LOCATIONS_FB, 1000076005) \ - _(XR_TYPE_BODY_SKELETON_FB, 1000076006) \ - _(XR_TYPE_INTERACTION_PROFILE_DPAD_BINDING_EXT, 1000078000) \ - _(XR_TYPE_INTERACTION_PROFILE_ANALOG_THRESHOLD_VALVE, 1000079000) \ - _(XR_TYPE_HAND_JOINTS_MOTION_RANGE_INFO_EXT, 1000080000) \ - _(XR_TYPE_LOADER_INIT_INFO_ANDROID_KHR, 1000089000) \ - _(XR_TYPE_VULKAN_INSTANCE_CREATE_INFO_KHR, 1000090000) \ - _(XR_TYPE_VULKAN_DEVICE_CREATE_INFO_KHR, 1000090001) \ - _(XR_TYPE_VULKAN_GRAPHICS_DEVICE_GET_INFO_KHR, 1000090003) \ - _(XR_TYPE_COMPOSITION_LAYER_EQUIRECT2_KHR, 1000091000) \ - _(XR_TYPE_SCENE_OBSERVER_CREATE_INFO_MSFT, 1000097000) \ - _(XR_TYPE_SCENE_CREATE_INFO_MSFT, 1000097001) \ - _(XR_TYPE_NEW_SCENE_COMPUTE_INFO_MSFT, 1000097002) \ - _(XR_TYPE_VISUAL_MESH_COMPUTE_LOD_INFO_MSFT, 1000097003) \ - _(XR_TYPE_SCENE_COMPONENTS_MSFT, 1000097004) \ - _(XR_TYPE_SCENE_COMPONENTS_GET_INFO_MSFT, 1000097005) \ - _(XR_TYPE_SCENE_COMPONENT_LOCATIONS_MSFT, 1000097006) \ - _(XR_TYPE_SCENE_COMPONENTS_LOCATE_INFO_MSFT, 1000097007) \ - _(XR_TYPE_SCENE_OBJECTS_MSFT, 1000097008) \ - _(XR_TYPE_SCENE_COMPONENT_PARENT_FILTER_INFO_MSFT, 1000097009) \ - _(XR_TYPE_SCENE_OBJECT_TYPES_FILTER_INFO_MSFT, 1000097010) \ - _(XR_TYPE_SCENE_PLANES_MSFT, 1000097011) \ - _(XR_TYPE_SCENE_PLANE_ALIGNMENT_FILTER_INFO_MSFT, 1000097012) \ - _(XR_TYPE_SCENE_MESHES_MSFT, 1000097013) \ - _(XR_TYPE_SCENE_MESH_BUFFERS_GET_INFO_MSFT, 1000097014) \ - _(XR_TYPE_SCENE_MESH_BUFFERS_MSFT, 1000097015) \ - _(XR_TYPE_SCENE_MESH_VERTEX_BUFFER_MSFT, 1000097016) \ - _(XR_TYPE_SCENE_MESH_INDICES_UINT32_MSFT, 1000097017) \ - _(XR_TYPE_SCENE_MESH_INDICES_UINT16_MSFT, 1000097018) \ - _(XR_TYPE_SERIALIZED_SCENE_FRAGMENT_DATA_GET_INFO_MSFT, 1000098000) \ - _(XR_TYPE_SCENE_DESERIALIZE_INFO_MSFT, 1000098001) \ - _(XR_TYPE_EVENT_DATA_DISPLAY_REFRESH_RATE_CHANGED_FB, 1000101000) \ - _(XR_TYPE_VIVE_TRACKER_PATHS_HTCX, 1000103000) \ - _(XR_TYPE_EVENT_DATA_VIVE_TRACKER_CONNECTED_HTCX, 1000103001) \ - _(XR_TYPE_SYSTEM_FACIAL_TRACKING_PROPERTIES_HTC, 1000104000) \ - _(XR_TYPE_FACIAL_TRACKER_CREATE_INFO_HTC, 1000104001) \ - _(XR_TYPE_FACIAL_EXPRESSIONS_HTC, 1000104002) \ - _(XR_TYPE_SYSTEM_COLOR_SPACE_PROPERTIES_FB, 1000108000) \ - _(XR_TYPE_HAND_TRACKING_MESH_FB, 1000110001) \ - _(XR_TYPE_HAND_TRACKING_SCALE_FB, 1000110003) \ - _(XR_TYPE_HAND_TRACKING_AIM_STATE_FB, 1000111001) \ - _(XR_TYPE_HAND_TRACKING_CAPSULES_STATE_FB, 1000112000) \ - _(XR_TYPE_SYSTEM_SPATIAL_ENTITY_PROPERTIES_FB, 1000113004) \ - _(XR_TYPE_SPATIAL_ANCHOR_CREATE_INFO_FB, 1000113003) \ - _(XR_TYPE_SPACE_COMPONENT_STATUS_SET_INFO_FB, 1000113007) \ - _(XR_TYPE_SPACE_COMPONENT_STATUS_FB, 1000113001) \ - _(XR_TYPE_EVENT_DATA_SPATIAL_ANCHOR_CREATE_COMPLETE_FB, 1000113005) \ - _(XR_TYPE_EVENT_DATA_SPACE_SET_STATUS_COMPLETE_FB, 1000113006) \ - _(XR_TYPE_FOVEATION_PROFILE_CREATE_INFO_FB, 1000114000) \ - _(XR_TYPE_SWAPCHAIN_CREATE_INFO_FOVEATION_FB, 1000114001) \ - _(XR_TYPE_SWAPCHAIN_STATE_FOVEATION_FB, 1000114002) \ - _(XR_TYPE_FOVEATION_LEVEL_PROFILE_CREATE_INFO_FB, 1000115000) \ - _(XR_TYPE_KEYBOARD_SPACE_CREATE_INFO_FB, 1000116009) \ - _(XR_TYPE_KEYBOARD_TRACKING_QUERY_FB, 1000116004) \ - _(XR_TYPE_SYSTEM_KEYBOARD_TRACKING_PROPERTIES_FB, 1000116002) \ - _(XR_TYPE_TRIANGLE_MESH_CREATE_INFO_FB, 1000117001) \ - _(XR_TYPE_SYSTEM_PASSTHROUGH_PROPERTIES_FB, 1000118000) \ - _(XR_TYPE_PASSTHROUGH_CREATE_INFO_FB, 1000118001) \ - _(XR_TYPE_PASSTHROUGH_LAYER_CREATE_INFO_FB, 1000118002) \ - _(XR_TYPE_COMPOSITION_LAYER_PASSTHROUGH_FB, 1000118003) \ - _(XR_TYPE_GEOMETRY_INSTANCE_CREATE_INFO_FB, 1000118004) \ - _(XR_TYPE_GEOMETRY_INSTANCE_TRANSFORM_FB, 1000118005) \ - _(XR_TYPE_SYSTEM_PASSTHROUGH_PROPERTIES2_FB, 1000118006) \ - _(XR_TYPE_PASSTHROUGH_STYLE_FB, 1000118020) \ - _(XR_TYPE_PASSTHROUGH_COLOR_MAP_MONO_TO_RGBA_FB, 1000118021) \ - _(XR_TYPE_PASSTHROUGH_COLOR_MAP_MONO_TO_MONO_FB, 1000118022) \ - _(XR_TYPE_PASSTHROUGH_BRIGHTNESS_CONTRAST_SATURATION_FB, 1000118023) \ - _(XR_TYPE_EVENT_DATA_PASSTHROUGH_STATE_CHANGED_FB, 1000118030) \ - _(XR_TYPE_RENDER_MODEL_PATH_INFO_FB, 1000119000) \ - _(XR_TYPE_RENDER_MODEL_PROPERTIES_FB, 1000119001) \ - _(XR_TYPE_RENDER_MODEL_BUFFER_FB, 1000119002) \ - _(XR_TYPE_RENDER_MODEL_LOAD_INFO_FB, 1000119003) \ - _(XR_TYPE_SYSTEM_RENDER_MODEL_PROPERTIES_FB, 1000119004) \ - _(XR_TYPE_RENDER_MODEL_CAPABILITIES_REQUEST_FB, 1000119005) \ - _(XR_TYPE_BINDING_MODIFICATIONS_KHR, 1000120000) \ - _(XR_TYPE_VIEW_LOCATE_FOVEATED_RENDERING_VARJO, 1000121000) \ - _(XR_TYPE_FOVEATED_VIEW_CONFIGURATION_VIEW_VARJO, 1000121001) \ - _(XR_TYPE_SYSTEM_FOVEATED_RENDERING_PROPERTIES_VARJO, 1000121002) \ - _(XR_TYPE_COMPOSITION_LAYER_DEPTH_TEST_VARJO, 1000122000) \ - _(XR_TYPE_SYSTEM_MARKER_TRACKING_PROPERTIES_VARJO, 1000124000) \ - _(XR_TYPE_EVENT_DATA_MARKER_TRACKING_UPDATE_VARJO, 1000124001) \ - _(XR_TYPE_MARKER_SPACE_CREATE_INFO_VARJO, 1000124002) \ - _(XR_TYPE_FRAME_END_INFO_ML, 1000135000) \ - _(XR_TYPE_GLOBAL_DIMMER_FRAME_END_INFO_ML, 1000136000) \ - _(XR_TYPE_COORDINATE_SPACE_CREATE_INFO_ML, 1000137000) \ - _(XR_TYPE_SYSTEM_MARKER_UNDERSTANDING_PROPERTIES_ML, 1000138000) \ - _(XR_TYPE_MARKER_DETECTOR_CREATE_INFO_ML, 1000138001) \ - _(XR_TYPE_MARKER_DETECTOR_ARUCO_INFO_ML, 1000138002) \ - _(XR_TYPE_MARKER_DETECTOR_SIZE_INFO_ML, 1000138003) \ - _(XR_TYPE_MARKER_DETECTOR_APRIL_TAG_INFO_ML, 1000138004) \ - _(XR_TYPE_MARKER_DETECTOR_CUSTOM_PROFILE_INFO_ML, 1000138005) \ - _(XR_TYPE_MARKER_DETECTOR_SNAPSHOT_INFO_ML, 1000138006) \ - _(XR_TYPE_MARKER_DETECTOR_STATE_ML, 1000138007) \ - _(XR_TYPE_MARKER_SPACE_CREATE_INFO_ML, 1000138008) \ - _(XR_TYPE_LOCALIZATION_MAP_ML, 1000139000) \ - _(XR_TYPE_EVENT_DATA_LOCALIZATION_CHANGED_ML, 1000139001) \ - _(XR_TYPE_MAP_LOCALIZATION_REQUEST_INFO_ML, 1000139002) \ - _(XR_TYPE_LOCALIZATION_MAP_IMPORT_INFO_ML, 1000139003) \ - _(XR_TYPE_LOCALIZATION_ENABLE_EVENTS_INFO_ML, 1000139004) \ - _(XR_TYPE_EVENT_DATA_HEADSET_FIT_CHANGED_ML, 1000472000) \ - _(XR_TYPE_EVENT_DATA_EYE_CALIBRATION_CHANGED_ML, 1000472001) \ - _(XR_TYPE_USER_CALIBRATION_ENABLE_EVENTS_INFO_ML, 1000472002) \ - _(XR_TYPE_SPATIAL_ANCHOR_PERSISTENCE_INFO_MSFT, 1000142000) \ - _(XR_TYPE_SPATIAL_ANCHOR_FROM_PERSISTED_ANCHOR_CREATE_INFO_MSFT, 1000142001) \ - _(XR_TYPE_SCENE_MARKERS_MSFT, 1000147000) \ - _(XR_TYPE_SCENE_MARKER_TYPE_FILTER_MSFT, 1000147001) \ - _(XR_TYPE_SCENE_MARKER_QR_CODES_MSFT, 1000147002) \ - _(XR_TYPE_SPACE_QUERY_INFO_FB, 1000156001) \ - _(XR_TYPE_SPACE_QUERY_RESULTS_FB, 1000156002) \ - _(XR_TYPE_SPACE_STORAGE_LOCATION_FILTER_INFO_FB, 1000156003) \ - _(XR_TYPE_SPACE_UUID_FILTER_INFO_FB, 1000156054) \ - _(XR_TYPE_SPACE_COMPONENT_FILTER_INFO_FB, 1000156052) \ - _(XR_TYPE_EVENT_DATA_SPACE_QUERY_RESULTS_AVAILABLE_FB, 1000156103) \ - _(XR_TYPE_EVENT_DATA_SPACE_QUERY_COMPLETE_FB, 1000156104) \ - _(XR_TYPE_SPACE_SAVE_INFO_FB, 1000158000) \ - _(XR_TYPE_SPACE_ERASE_INFO_FB, 1000158001) \ - _(XR_TYPE_EVENT_DATA_SPACE_SAVE_COMPLETE_FB, 1000158106) \ - _(XR_TYPE_EVENT_DATA_SPACE_ERASE_COMPLETE_FB, 1000158107) \ - _(XR_TYPE_SWAPCHAIN_IMAGE_FOVEATION_VULKAN_FB, 1000160000) \ - _(XR_TYPE_SWAPCHAIN_STATE_ANDROID_SURFACE_DIMENSIONS_FB, 1000161000) \ - _(XR_TYPE_SWAPCHAIN_STATE_SAMPLER_OPENGL_ES_FB, 1000162000) \ - _(XR_TYPE_SWAPCHAIN_STATE_SAMPLER_VULKAN_FB, 1000163000) \ - _(XR_TYPE_SPACE_SHARE_INFO_FB, 1000169001) \ - _(XR_TYPE_EVENT_DATA_SPACE_SHARE_COMPLETE_FB, 1000169002) \ - _(XR_TYPE_COMPOSITION_LAYER_SPACE_WARP_INFO_FB, 1000171000) \ - _(XR_TYPE_SYSTEM_SPACE_WARP_PROPERTIES_FB, 1000171001) \ - _(XR_TYPE_HAPTIC_AMPLITUDE_ENVELOPE_VIBRATION_FB, 1000173001) \ - _(XR_TYPE_SEMANTIC_LABELS_FB, 1000175000) \ - _(XR_TYPE_ROOM_LAYOUT_FB, 1000175001) \ - _(XR_TYPE_BOUNDARY_2D_FB, 1000175002) \ - _(XR_TYPE_SEMANTIC_LABELS_SUPPORT_INFO_FB, 1000175010) \ - _(XR_TYPE_DIGITAL_LENS_CONTROL_ALMALENCE, 1000196000) \ - _(XR_TYPE_EVENT_DATA_SCENE_CAPTURE_COMPLETE_FB, 1000198001) \ - _(XR_TYPE_SCENE_CAPTURE_REQUEST_INFO_FB, 1000198050) \ - _(XR_TYPE_SPACE_CONTAINER_FB, 1000199000) \ - _(XR_TYPE_FOVEATION_EYE_TRACKED_PROFILE_CREATE_INFO_META, 1000200000) \ - _(XR_TYPE_FOVEATION_EYE_TRACKED_STATE_META, 1000200001) \ - _(XR_TYPE_SYSTEM_FOVEATION_EYE_TRACKED_PROPERTIES_META, 1000200002) \ - _(XR_TYPE_SYSTEM_FACE_TRACKING_PROPERTIES_FB, 1000201004) \ - _(XR_TYPE_FACE_TRACKER_CREATE_INFO_FB, 1000201005) \ - _(XR_TYPE_FACE_EXPRESSION_INFO_FB, 1000201002) \ - _(XR_TYPE_FACE_EXPRESSION_WEIGHTS_FB, 1000201006) \ - _(XR_TYPE_EYE_TRACKER_CREATE_INFO_FB, 1000202001) \ - _(XR_TYPE_EYE_GAZES_INFO_FB, 1000202002) \ - _(XR_TYPE_EYE_GAZES_FB, 1000202003) \ - _(XR_TYPE_SYSTEM_EYE_TRACKING_PROPERTIES_FB, 1000202004) \ - _(XR_TYPE_PASSTHROUGH_KEYBOARD_HANDS_INTENSITY_FB, 1000203002) \ - _(XR_TYPE_COMPOSITION_LAYER_SETTINGS_FB, 1000204000) \ - _(XR_TYPE_HAPTIC_PCM_VIBRATION_FB, 1000209001) \ - _(XR_TYPE_DEVICE_PCM_SAMPLE_RATE_STATE_FB, 1000209002) \ - _(XR_TYPE_COMPOSITION_LAYER_DEPTH_TEST_FB, 1000212000) \ - _(XR_TYPE_LOCAL_DIMMING_FRAME_END_INFO_META, 1000216000) \ - _(XR_TYPE_PASSTHROUGH_PREFERENCES_META, 1000217000) \ - _(XR_TYPE_SYSTEM_VIRTUAL_KEYBOARD_PROPERTIES_META, 1000219001) \ - _(XR_TYPE_VIRTUAL_KEYBOARD_CREATE_INFO_META, 1000219002) \ - _(XR_TYPE_VIRTUAL_KEYBOARD_SPACE_CREATE_INFO_META, 1000219003) \ - _(XR_TYPE_VIRTUAL_KEYBOARD_LOCATION_INFO_META, 1000219004) \ - _(XR_TYPE_VIRTUAL_KEYBOARD_MODEL_VISIBILITY_SET_INFO_META, 1000219005) \ - _(XR_TYPE_VIRTUAL_KEYBOARD_ANIMATION_STATE_META, 1000219006) \ - _(XR_TYPE_VIRTUAL_KEYBOARD_MODEL_ANIMATION_STATES_META, 1000219007) \ - _(XR_TYPE_VIRTUAL_KEYBOARD_TEXTURE_DATA_META, 1000219009) \ - _(XR_TYPE_VIRTUAL_KEYBOARD_INPUT_INFO_META, 1000219010) \ - _(XR_TYPE_VIRTUAL_KEYBOARD_TEXT_CONTEXT_CHANGE_INFO_META, 1000219011) \ - _(XR_TYPE_EVENT_DATA_VIRTUAL_KEYBOARD_COMMIT_TEXT_META, 1000219014) \ - _(XR_TYPE_EVENT_DATA_VIRTUAL_KEYBOARD_BACKSPACE_META, 1000219015) \ - _(XR_TYPE_EVENT_DATA_VIRTUAL_KEYBOARD_ENTER_META, 1000219016) \ - _(XR_TYPE_EVENT_DATA_VIRTUAL_KEYBOARD_SHOWN_META, 1000219017) \ - _(XR_TYPE_EVENT_DATA_VIRTUAL_KEYBOARD_HIDDEN_META, 1000219018) \ - _(XR_TYPE_EXTERNAL_CAMERA_OCULUS, 1000226000) \ - _(XR_TYPE_VULKAN_SWAPCHAIN_CREATE_INFO_META, 1000227000) \ - _(XR_TYPE_PERFORMANCE_METRICS_STATE_META, 1000232001) \ - _(XR_TYPE_PERFORMANCE_METRICS_COUNTER_META, 1000232002) \ - _(XR_TYPE_SPACE_LIST_SAVE_INFO_FB, 1000238000) \ - _(XR_TYPE_EVENT_DATA_SPACE_LIST_SAVE_COMPLETE_FB, 1000238001) \ - _(XR_TYPE_SPACE_USER_CREATE_INFO_FB, 1000241001) \ - _(XR_TYPE_SYSTEM_HEADSET_ID_PROPERTIES_META, 1000245000) \ - _(XR_TYPE_RECOMMENDED_LAYER_RESOLUTION_META, 1000254000) \ - _(XR_TYPE_RECOMMENDED_LAYER_RESOLUTION_GET_INFO_META, 1000254001) \ - _(XR_TYPE_SYSTEM_PASSTHROUGH_COLOR_LUT_PROPERTIES_META, 1000266000) \ - _(XR_TYPE_PASSTHROUGH_COLOR_LUT_CREATE_INFO_META, 1000266001) \ - _(XR_TYPE_PASSTHROUGH_COLOR_LUT_UPDATE_INFO_META, 1000266002) \ - _(XR_TYPE_PASSTHROUGH_COLOR_MAP_LUT_META, 1000266100) \ - _(XR_TYPE_PASSTHROUGH_COLOR_MAP_INTERPOLATED_LUT_META, 1000266101) \ - _(XR_TYPE_SPACE_TRIANGLE_MESH_GET_INFO_META, 1000269001) \ - _(XR_TYPE_SPACE_TRIANGLE_MESH_META, 1000269002) \ - _(XR_TYPE_SYSTEM_FACE_TRACKING_PROPERTIES2_FB, 1000287013) \ - _(XR_TYPE_FACE_TRACKER_CREATE_INFO2_FB, 1000287014) \ - _(XR_TYPE_FACE_EXPRESSION_INFO2_FB, 1000287015) \ - _(XR_TYPE_FACE_EXPRESSION_WEIGHTS2_FB, 1000287016) \ - _(XR_TYPE_ENVIRONMENT_DEPTH_PROVIDER_CREATE_INFO_META, 1000291000) \ - _(XR_TYPE_ENVIRONMENT_DEPTH_SWAPCHAIN_CREATE_INFO_META, 1000291001) \ - _(XR_TYPE_ENVIRONMENT_DEPTH_SWAPCHAIN_STATE_META, 1000291002) \ - _(XR_TYPE_ENVIRONMENT_DEPTH_IMAGE_ACQUIRE_INFO_META, 1000291003) \ - _(XR_TYPE_ENVIRONMENT_DEPTH_IMAGE_VIEW_META, 1000291004) \ - _(XR_TYPE_ENVIRONMENT_DEPTH_IMAGE_META, 1000291005) \ - _(XR_TYPE_ENVIRONMENT_DEPTH_HAND_REMOVAL_SET_INFO_META, 1000291006) \ - _(XR_TYPE_SYSTEM_ENVIRONMENT_DEPTH_PROPERTIES_META, 1000291007) \ - _(XR_TYPE_PASSTHROUGH_CREATE_INFO_HTC, 1000317001) \ - _(XR_TYPE_PASSTHROUGH_COLOR_HTC, 1000317002) \ - _(XR_TYPE_PASSTHROUGH_MESH_TRANSFORM_INFO_HTC, 1000317003) \ - _(XR_TYPE_COMPOSITION_LAYER_PASSTHROUGH_HTC, 1000317004) \ - _(XR_TYPE_FOVEATION_APPLY_INFO_HTC, 1000318000) \ - _(XR_TYPE_FOVEATION_DYNAMIC_MODE_INFO_HTC, 1000318001) \ - _(XR_TYPE_FOVEATION_CUSTOM_MODE_INFO_HTC, 1000318002) \ - _(XR_TYPE_SYSTEM_ANCHOR_PROPERTIES_HTC, 1000319000) \ - _(XR_TYPE_SPATIAL_ANCHOR_CREATE_INFO_HTC, 1000319001) \ - _(XR_TYPE_ACTIVE_ACTION_SET_PRIORITIES_EXT, 1000373000) \ - _(XR_TYPE_SYSTEM_FORCE_FEEDBACK_CURL_PROPERTIES_MNDX, 1000375000) \ - _(XR_TYPE_FORCE_FEEDBACK_CURL_APPLY_LOCATIONS_MNDX, 1000375001) \ - _(XR_TYPE_HAND_TRACKING_DATA_SOURCE_INFO_EXT, 1000428000) \ - _(XR_TYPE_HAND_TRACKING_DATA_SOURCE_STATE_EXT, 1000428001) \ - _(XR_TYPE_PLANE_DETECTOR_CREATE_INFO_EXT, 1000429001) \ - _(XR_TYPE_PLANE_DETECTOR_BEGIN_INFO_EXT, 1000429002) \ - _(XR_TYPE_PLANE_DETECTOR_GET_INFO_EXT, 1000429003) \ - _(XR_TYPE_PLANE_DETECTOR_LOCATIONS_EXT, 1000429004) \ - _(XR_TYPE_PLANE_DETECTOR_LOCATION_EXT, 1000429005) \ - _(XR_TYPE_PLANE_DETECTOR_POLYGON_BUFFER_EXT, 1000429006) \ - _(XR_TYPE_SYSTEM_PLANE_DETECTION_PROPERTIES_EXT, 1000429007) \ - _(XR_TYPE_FUTURE_CANCEL_INFO_EXT, 1000469000) \ - _(XR_TYPE_FUTURE_POLL_INFO_EXT, 1000469001) \ - _(XR_TYPE_FUTURE_COMPLETION_EXT, 1000469002) \ - _(XR_TYPE_FUTURE_POLL_RESULT_EXT, 1000469003) \ - _(XR_TYPE_EVENT_DATA_USER_PRESENCE_CHANGED_EXT, 1000470000) \ - _(XR_TYPE_SYSTEM_USER_PRESENCE_PROPERTIES_EXT, 1000470001) \ - _(XR_STRUCTURE_TYPE_MAX_ENUM, 0x7FFFFFFF) - -#define XR_LIST_ENUM_XrFormFactor(_) \ - _(XR_FORM_FACTOR_HEAD_MOUNTED_DISPLAY, 1) \ - _(XR_FORM_FACTOR_HANDHELD_DISPLAY, 2) \ - _(XR_FORM_FACTOR_MAX_ENUM, 0x7FFFFFFF) - -#define XR_LIST_ENUM_XrViewConfigurationType(_) \ - _(XR_VIEW_CONFIGURATION_TYPE_PRIMARY_MONO, 1) \ - _(XR_VIEW_CONFIGURATION_TYPE_PRIMARY_STEREO, 2) \ - _(XR_VIEW_CONFIGURATION_TYPE_PRIMARY_STEREO_WITH_FOVEATED_INSET, 1000037000) \ - _(XR_VIEW_CONFIGURATION_TYPE_SECONDARY_MONO_FIRST_PERSON_OBSERVER_MSFT, 1000054000) \ - _(XR_VIEW_CONFIGURATION_TYPE_MAX_ENUM, 0x7FFFFFFF) - -#define XR_LIST_ENUM_XrEnvironmentBlendMode(_) \ - _(XR_ENVIRONMENT_BLEND_MODE_OPAQUE, 1) \ - _(XR_ENVIRONMENT_BLEND_MODE_ADDITIVE, 2) \ - _(XR_ENVIRONMENT_BLEND_MODE_ALPHA_BLEND, 3) \ - _(XR_ENVIRONMENT_BLEND_MODE_MAX_ENUM, 0x7FFFFFFF) - -#define XR_LIST_ENUM_XrReferenceSpaceType(_) \ - _(XR_REFERENCE_SPACE_TYPE_VIEW, 1) \ - _(XR_REFERENCE_SPACE_TYPE_LOCAL, 2) \ - _(XR_REFERENCE_SPACE_TYPE_STAGE, 3) \ - _(XR_REFERENCE_SPACE_TYPE_LOCAL_FLOOR, 1000426000) \ - _(XR_REFERENCE_SPACE_TYPE_UNBOUNDED_MSFT, 1000038000) \ - _(XR_REFERENCE_SPACE_TYPE_COMBINED_EYE_VARJO, 1000121000) \ - _(XR_REFERENCE_SPACE_TYPE_LOCALIZATION_MAP_ML, 1000139000) \ - _(XR_REFERENCE_SPACE_TYPE_MAX_ENUM, 0x7FFFFFFF) - -#define XR_LIST_ENUM_XrActionType(_) \ - _(XR_ACTION_TYPE_BOOLEAN_INPUT, 1) \ - _(XR_ACTION_TYPE_FLOAT_INPUT, 2) \ - _(XR_ACTION_TYPE_VECTOR2F_INPUT, 3) \ - _(XR_ACTION_TYPE_POSE_INPUT, 4) \ - _(XR_ACTION_TYPE_VIBRATION_OUTPUT, 100) \ - _(XR_ACTION_TYPE_MAX_ENUM, 0x7FFFFFFF) - -#define XR_LIST_ENUM_XrEyeVisibility(_) \ - _(XR_EYE_VISIBILITY_BOTH, 0) \ - _(XR_EYE_VISIBILITY_LEFT, 1) \ - _(XR_EYE_VISIBILITY_RIGHT, 2) \ - _(XR_EYE_VISIBILITY_MAX_ENUM, 0x7FFFFFFF) - -#define XR_LIST_ENUM_XrSessionState(_) \ - _(XR_SESSION_STATE_UNKNOWN, 0) \ - _(XR_SESSION_STATE_IDLE, 1) \ - _(XR_SESSION_STATE_READY, 2) \ - _(XR_SESSION_STATE_SYNCHRONIZED, 3) \ - _(XR_SESSION_STATE_VISIBLE, 4) \ - _(XR_SESSION_STATE_FOCUSED, 5) \ - _(XR_SESSION_STATE_STOPPING, 6) \ - _(XR_SESSION_STATE_LOSS_PENDING, 7) \ - _(XR_SESSION_STATE_EXITING, 8) \ - _(XR_SESSION_STATE_MAX_ENUM, 0x7FFFFFFF) - -#define XR_LIST_ENUM_XrObjectType(_) \ - _(XR_OBJECT_TYPE_UNKNOWN, 0) \ - _(XR_OBJECT_TYPE_INSTANCE, 1) \ - _(XR_OBJECT_TYPE_SESSION, 2) \ - _(XR_OBJECT_TYPE_SWAPCHAIN, 3) \ - _(XR_OBJECT_TYPE_SPACE, 4) \ - _(XR_OBJECT_TYPE_ACTION_SET, 5) \ - _(XR_OBJECT_TYPE_ACTION, 6) \ - _(XR_OBJECT_TYPE_DEBUG_UTILS_MESSENGER_EXT, 1000019000) \ - _(XR_OBJECT_TYPE_SPATIAL_ANCHOR_MSFT, 1000039000) \ - _(XR_OBJECT_TYPE_SPATIAL_GRAPH_NODE_BINDING_MSFT, 1000049000) \ - _(XR_OBJECT_TYPE_HAND_TRACKER_EXT, 1000051000) \ - _(XR_OBJECT_TYPE_BODY_TRACKER_FB, 1000076000) \ - _(XR_OBJECT_TYPE_SCENE_OBSERVER_MSFT, 1000097000) \ - _(XR_OBJECT_TYPE_SCENE_MSFT, 1000097001) \ - _(XR_OBJECT_TYPE_FACIAL_TRACKER_HTC, 1000104000) \ - _(XR_OBJECT_TYPE_FOVEATION_PROFILE_FB, 1000114000) \ - _(XR_OBJECT_TYPE_TRIANGLE_MESH_FB, 1000117000) \ - _(XR_OBJECT_TYPE_PASSTHROUGH_FB, 1000118000) \ - _(XR_OBJECT_TYPE_PASSTHROUGH_LAYER_FB, 1000118002) \ - _(XR_OBJECT_TYPE_GEOMETRY_INSTANCE_FB, 1000118004) \ - _(XR_OBJECT_TYPE_MARKER_DETECTOR_ML, 1000138000) \ - _(XR_OBJECT_TYPE_EXPORTED_LOCALIZATION_MAP_ML, 1000139000) \ - _(XR_OBJECT_TYPE_SPATIAL_ANCHOR_STORE_CONNECTION_MSFT, 1000142000) \ - _(XR_OBJECT_TYPE_FACE_TRACKER_FB, 1000201000) \ - _(XR_OBJECT_TYPE_EYE_TRACKER_FB, 1000202000) \ - _(XR_OBJECT_TYPE_VIRTUAL_KEYBOARD_META, 1000219000) \ - _(XR_OBJECT_TYPE_SPACE_USER_FB, 1000241000) \ - _(XR_OBJECT_TYPE_PASSTHROUGH_COLOR_LUT_META, 1000266000) \ - _(XR_OBJECT_TYPE_FACE_TRACKER2_FB, 1000287012) \ - _(XR_OBJECT_TYPE_ENVIRONMENT_DEPTH_PROVIDER_META, 1000291000) \ - _(XR_OBJECT_TYPE_ENVIRONMENT_DEPTH_SWAPCHAIN_META, 1000291001) \ - _(XR_OBJECT_TYPE_PASSTHROUGH_HTC, 1000317000) \ - _(XR_OBJECT_TYPE_PLANE_DETECTOR_EXT, 1000429000) \ - _(XR_OBJECT_TYPE_MAX_ENUM, 0x7FFFFFFF) - -#define XR_LIST_ENUM_XrLoaderInterfaceStructs(_) \ - _(XR_LOADER_INTERFACE_STRUCT_UNINTIALIZED, 0) \ - _(XR_LOADER_INTERFACE_STRUCT_LOADER_INFO, 1) \ - _(XR_LOADER_INTERFACE_STRUCT_API_LAYER_REQUEST, 2) \ - _(XR_LOADER_INTERFACE_STRUCT_RUNTIME_REQUEST, 3) \ - _(XR_LOADER_INTERFACE_STRUCT_API_LAYER_CREATE_INFO, 4) \ - _(XR_LOADER_INTERFACE_STRUCT_API_LAYER_NEXT_INFO, 5) \ - _(XR_LOADER_INTERFACE_STRUCTS_MAX_ENUM, 0x7FFFFFFF) - -#define XR_LIST_ENUM_XrAndroidThreadTypeKHR(_) \ - _(XR_ANDROID_THREAD_TYPE_APPLICATION_MAIN_KHR, 1) \ - _(XR_ANDROID_THREAD_TYPE_APPLICATION_WORKER_KHR, 2) \ - _(XR_ANDROID_THREAD_TYPE_RENDERER_MAIN_KHR, 3) \ - _(XR_ANDROID_THREAD_TYPE_RENDERER_WORKER_KHR, 4) \ - _(XR_ANDROID_THREAD_TYPE_MAX_ENUM_KHR, 0x7FFFFFFF) - -#define XR_LIST_ENUM_XrVisibilityMaskTypeKHR(_) \ - _(XR_VISIBILITY_MASK_TYPE_HIDDEN_TRIANGLE_MESH_KHR, 1) \ - _(XR_VISIBILITY_MASK_TYPE_VISIBLE_TRIANGLE_MESH_KHR, 2) \ - _(XR_VISIBILITY_MASK_TYPE_LINE_LOOP_KHR, 3) \ - _(XR_VISIBILITY_MASK_TYPE_MAX_ENUM_KHR, 0x7FFFFFFF) - -#define XR_LIST_ENUM_XrPerfSettingsDomainEXT(_) \ - _(XR_PERF_SETTINGS_DOMAIN_CPU_EXT, 1) \ - _(XR_PERF_SETTINGS_DOMAIN_GPU_EXT, 2) \ - _(XR_PERF_SETTINGS_DOMAIN_MAX_ENUM_EXT, 0x7FFFFFFF) - -#define XR_LIST_ENUM_XrPerfSettingsSubDomainEXT(_) \ - _(XR_PERF_SETTINGS_SUB_DOMAIN_COMPOSITING_EXT, 1) \ - _(XR_PERF_SETTINGS_SUB_DOMAIN_RENDERING_EXT, 2) \ - _(XR_PERF_SETTINGS_SUB_DOMAIN_THERMAL_EXT, 3) \ - _(XR_PERF_SETTINGS_SUB_DOMAIN_MAX_ENUM_EXT, 0x7FFFFFFF) - -#define XR_LIST_ENUM_XrPerfSettingsLevelEXT(_) \ - _(XR_PERF_SETTINGS_LEVEL_POWER_SAVINGS_EXT, 0) \ - _(XR_PERF_SETTINGS_LEVEL_SUSTAINED_LOW_EXT, 25) \ - _(XR_PERF_SETTINGS_LEVEL_SUSTAINED_HIGH_EXT, 50) \ - _(XR_PERF_SETTINGS_LEVEL_BOOST_EXT, 75) \ - _(XR_PERF_SETTINGS_LEVEL_MAX_ENUM_EXT, 0x7FFFFFFF) - -#define XR_LIST_ENUM_XrPerfSettingsNotificationLevelEXT(_) \ - _(XR_PERF_SETTINGS_NOTIF_LEVEL_NORMAL_EXT, 0) \ - _(XR_PERF_SETTINGS_NOTIF_LEVEL_WARNING_EXT, 25) \ - _(XR_PERF_SETTINGS_NOTIF_LEVEL_IMPAIRED_EXT, 75) \ - _(XR_PERF_SETTINGS_NOTIFICATION_LEVEL_MAX_ENUM_EXT, 0x7FFFFFFF) - -#define XR_LIST_ENUM_XrBlendFactorFB(_) \ - _(XR_BLEND_FACTOR_ZERO_FB, 0) \ - _(XR_BLEND_FACTOR_ONE_FB, 1) \ - _(XR_BLEND_FACTOR_SRC_ALPHA_FB, 2) \ - _(XR_BLEND_FACTOR_ONE_MINUS_SRC_ALPHA_FB, 3) \ - _(XR_BLEND_FACTOR_DST_ALPHA_FB, 4) \ - _(XR_BLEND_FACTOR_ONE_MINUS_DST_ALPHA_FB, 5) \ - _(XR_BLEND_FACTOR_MAX_ENUM_FB, 0x7FFFFFFF) - -#define XR_LIST_ENUM_XrSpatialGraphNodeTypeMSFT(_) \ - _(XR_SPATIAL_GRAPH_NODE_TYPE_STATIC_MSFT, 1) \ - _(XR_SPATIAL_GRAPH_NODE_TYPE_DYNAMIC_MSFT, 2) \ - _(XR_SPATIAL_GRAPH_NODE_TYPE_MAX_ENUM_MSFT, 0x7FFFFFFF) - -#define XR_LIST_ENUM_XrHandEXT(_) \ - _(XR_HAND_LEFT_EXT, 1) \ - _(XR_HAND_RIGHT_EXT, 2) \ - _(XR_HAND_MAX_ENUM_EXT, 0x7FFFFFFF) - -#define XR_LIST_ENUM_XrHandJointEXT(_) \ - _(XR_HAND_JOINT_PALM_EXT, 0) \ - _(XR_HAND_JOINT_WRIST_EXT, 1) \ - _(XR_HAND_JOINT_THUMB_METACARPAL_EXT, 2) \ - _(XR_HAND_JOINT_THUMB_PROXIMAL_EXT, 3) \ - _(XR_HAND_JOINT_THUMB_DISTAL_EXT, 4) \ - _(XR_HAND_JOINT_THUMB_TIP_EXT, 5) \ - _(XR_HAND_JOINT_INDEX_METACARPAL_EXT, 6) \ - _(XR_HAND_JOINT_INDEX_PROXIMAL_EXT, 7) \ - _(XR_HAND_JOINT_INDEX_INTERMEDIATE_EXT, 8) \ - _(XR_HAND_JOINT_INDEX_DISTAL_EXT, 9) \ - _(XR_HAND_JOINT_INDEX_TIP_EXT, 10) \ - _(XR_HAND_JOINT_MIDDLE_METACARPAL_EXT, 11) \ - _(XR_HAND_JOINT_MIDDLE_PROXIMAL_EXT, 12) \ - _(XR_HAND_JOINT_MIDDLE_INTERMEDIATE_EXT, 13) \ - _(XR_HAND_JOINT_MIDDLE_DISTAL_EXT, 14) \ - _(XR_HAND_JOINT_MIDDLE_TIP_EXT, 15) \ - _(XR_HAND_JOINT_RING_METACARPAL_EXT, 16) \ - _(XR_HAND_JOINT_RING_PROXIMAL_EXT, 17) \ - _(XR_HAND_JOINT_RING_INTERMEDIATE_EXT, 18) \ - _(XR_HAND_JOINT_RING_DISTAL_EXT, 19) \ - _(XR_HAND_JOINT_RING_TIP_EXT, 20) \ - _(XR_HAND_JOINT_LITTLE_METACARPAL_EXT, 21) \ - _(XR_HAND_JOINT_LITTLE_PROXIMAL_EXT, 22) \ - _(XR_HAND_JOINT_LITTLE_INTERMEDIATE_EXT, 23) \ - _(XR_HAND_JOINT_LITTLE_DISTAL_EXT, 24) \ - _(XR_HAND_JOINT_LITTLE_TIP_EXT, 25) \ - _(XR_HAND_JOINT_MAX_ENUM_EXT, 0x7FFFFFFF) - -#define XR_LIST_ENUM_XrHandJointSetEXT(_) \ - _(XR_HAND_JOINT_SET_DEFAULT_EXT, 0) \ - _(XR_HAND_JOINT_SET_HAND_WITH_FOREARM_ULTRALEAP, 1000149000) \ - _(XR_HAND_JOINT_SET_MAX_ENUM_EXT, 0x7FFFFFFF) - -#define XR_LIST_ENUM_XrHandPoseTypeMSFT(_) \ - _(XR_HAND_POSE_TYPE_TRACKED_MSFT, 0) \ - _(XR_HAND_POSE_TYPE_REFERENCE_OPEN_PALM_MSFT, 1) \ - _(XR_HAND_POSE_TYPE_MAX_ENUM_MSFT, 0x7FFFFFFF) - -#define XR_LIST_ENUM_XrReprojectionModeMSFT(_) \ - _(XR_REPROJECTION_MODE_DEPTH_MSFT, 1) \ - _(XR_REPROJECTION_MODE_PLANAR_FROM_DEPTH_MSFT, 2) \ - _(XR_REPROJECTION_MODE_PLANAR_MANUAL_MSFT, 3) \ - _(XR_REPROJECTION_MODE_ORIENTATION_ONLY_MSFT, 4) \ - _(XR_REPROJECTION_MODE_MAX_ENUM_MSFT, 0x7FFFFFFF) - -#define XR_LIST_ENUM_XrBodyJointFB(_) \ - _(XR_BODY_JOINT_ROOT_FB, 0) \ - _(XR_BODY_JOINT_HIPS_FB, 1) \ - _(XR_BODY_JOINT_SPINE_LOWER_FB, 2) \ - _(XR_BODY_JOINT_SPINE_MIDDLE_FB, 3) \ - _(XR_BODY_JOINT_SPINE_UPPER_FB, 4) \ - _(XR_BODY_JOINT_CHEST_FB, 5) \ - _(XR_BODY_JOINT_NECK_FB, 6) \ - _(XR_BODY_JOINT_HEAD_FB, 7) \ - _(XR_BODY_JOINT_LEFT_SHOULDER_FB, 8) \ - _(XR_BODY_JOINT_LEFT_SCAPULA_FB, 9) \ - _(XR_BODY_JOINT_LEFT_ARM_UPPER_FB, 10) \ - _(XR_BODY_JOINT_LEFT_ARM_LOWER_FB, 11) \ - _(XR_BODY_JOINT_LEFT_HAND_WRIST_TWIST_FB, 12) \ - _(XR_BODY_JOINT_RIGHT_SHOULDER_FB, 13) \ - _(XR_BODY_JOINT_RIGHT_SCAPULA_FB, 14) \ - _(XR_BODY_JOINT_RIGHT_ARM_UPPER_FB, 15) \ - _(XR_BODY_JOINT_RIGHT_ARM_LOWER_FB, 16) \ - _(XR_BODY_JOINT_RIGHT_HAND_WRIST_TWIST_FB, 17) \ - _(XR_BODY_JOINT_LEFT_HAND_PALM_FB, 18) \ - _(XR_BODY_JOINT_LEFT_HAND_WRIST_FB, 19) \ - _(XR_BODY_JOINT_LEFT_HAND_THUMB_METACARPAL_FB, 20) \ - _(XR_BODY_JOINT_LEFT_HAND_THUMB_PROXIMAL_FB, 21) \ - _(XR_BODY_JOINT_LEFT_HAND_THUMB_DISTAL_FB, 22) \ - _(XR_BODY_JOINT_LEFT_HAND_THUMB_TIP_FB, 23) \ - _(XR_BODY_JOINT_LEFT_HAND_INDEX_METACARPAL_FB, 24) \ - _(XR_BODY_JOINT_LEFT_HAND_INDEX_PROXIMAL_FB, 25) \ - _(XR_BODY_JOINT_LEFT_HAND_INDEX_INTERMEDIATE_FB, 26) \ - _(XR_BODY_JOINT_LEFT_HAND_INDEX_DISTAL_FB, 27) \ - _(XR_BODY_JOINT_LEFT_HAND_INDEX_TIP_FB, 28) \ - _(XR_BODY_JOINT_LEFT_HAND_MIDDLE_METACARPAL_FB, 29) \ - _(XR_BODY_JOINT_LEFT_HAND_MIDDLE_PROXIMAL_FB, 30) \ - _(XR_BODY_JOINT_LEFT_HAND_MIDDLE_INTERMEDIATE_FB, 31) \ - _(XR_BODY_JOINT_LEFT_HAND_MIDDLE_DISTAL_FB, 32) \ - _(XR_BODY_JOINT_LEFT_HAND_MIDDLE_TIP_FB, 33) \ - _(XR_BODY_JOINT_LEFT_HAND_RING_METACARPAL_FB, 34) \ - _(XR_BODY_JOINT_LEFT_HAND_RING_PROXIMAL_FB, 35) \ - _(XR_BODY_JOINT_LEFT_HAND_RING_INTERMEDIATE_FB, 36) \ - _(XR_BODY_JOINT_LEFT_HAND_RING_DISTAL_FB, 37) \ - _(XR_BODY_JOINT_LEFT_HAND_RING_TIP_FB, 38) \ - _(XR_BODY_JOINT_LEFT_HAND_LITTLE_METACARPAL_FB, 39) \ - _(XR_BODY_JOINT_LEFT_HAND_LITTLE_PROXIMAL_FB, 40) \ - _(XR_BODY_JOINT_LEFT_HAND_LITTLE_INTERMEDIATE_FB, 41) \ - _(XR_BODY_JOINT_LEFT_HAND_LITTLE_DISTAL_FB, 42) \ - _(XR_BODY_JOINT_LEFT_HAND_LITTLE_TIP_FB, 43) \ - _(XR_BODY_JOINT_RIGHT_HAND_PALM_FB, 44) \ - _(XR_BODY_JOINT_RIGHT_HAND_WRIST_FB, 45) \ - _(XR_BODY_JOINT_RIGHT_HAND_THUMB_METACARPAL_FB, 46) \ - _(XR_BODY_JOINT_RIGHT_HAND_THUMB_PROXIMAL_FB, 47) \ - _(XR_BODY_JOINT_RIGHT_HAND_THUMB_DISTAL_FB, 48) \ - _(XR_BODY_JOINT_RIGHT_HAND_THUMB_TIP_FB, 49) \ - _(XR_BODY_JOINT_RIGHT_HAND_INDEX_METACARPAL_FB, 50) \ - _(XR_BODY_JOINT_RIGHT_HAND_INDEX_PROXIMAL_FB, 51) \ - _(XR_BODY_JOINT_RIGHT_HAND_INDEX_INTERMEDIATE_FB, 52) \ - _(XR_BODY_JOINT_RIGHT_HAND_INDEX_DISTAL_FB, 53) \ - _(XR_BODY_JOINT_RIGHT_HAND_INDEX_TIP_FB, 54) \ - _(XR_BODY_JOINT_RIGHT_HAND_MIDDLE_METACARPAL_FB, 55) \ - _(XR_BODY_JOINT_RIGHT_HAND_MIDDLE_PROXIMAL_FB, 56) \ - _(XR_BODY_JOINT_RIGHT_HAND_MIDDLE_INTERMEDIATE_FB, 57) \ - _(XR_BODY_JOINT_RIGHT_HAND_MIDDLE_DISTAL_FB, 58) \ - _(XR_BODY_JOINT_RIGHT_HAND_MIDDLE_TIP_FB, 59) \ - _(XR_BODY_JOINT_RIGHT_HAND_RING_METACARPAL_FB, 60) \ - _(XR_BODY_JOINT_RIGHT_HAND_RING_PROXIMAL_FB, 61) \ - _(XR_BODY_JOINT_RIGHT_HAND_RING_INTERMEDIATE_FB, 62) \ - _(XR_BODY_JOINT_RIGHT_HAND_RING_DISTAL_FB, 63) \ - _(XR_BODY_JOINT_RIGHT_HAND_RING_TIP_FB, 64) \ - _(XR_BODY_JOINT_RIGHT_HAND_LITTLE_METACARPAL_FB, 65) \ - _(XR_BODY_JOINT_RIGHT_HAND_LITTLE_PROXIMAL_FB, 66) \ - _(XR_BODY_JOINT_RIGHT_HAND_LITTLE_INTERMEDIATE_FB, 67) \ - _(XR_BODY_JOINT_RIGHT_HAND_LITTLE_DISTAL_FB, 68) \ - _(XR_BODY_JOINT_RIGHT_HAND_LITTLE_TIP_FB, 69) \ - _(XR_BODY_JOINT_COUNT_FB, 70) \ - _(XR_BODY_JOINT_NONE_FB, -1) \ - _(XR_BODY_JOINT_MAX_ENUM_FB, 0x7FFFFFFF) - -#define XR_LIST_ENUM_XrBodyJointSetFB(_) \ - _(XR_BODY_JOINT_SET_DEFAULT_FB, 0) \ - _(XR_BODY_JOINT_SET_MAX_ENUM_FB, 0x7FFFFFFF) - -#define XR_LIST_ENUM_XrHandJointsMotionRangeEXT(_) \ - _(XR_HAND_JOINTS_MOTION_RANGE_UNOBSTRUCTED_EXT, 1) \ - _(XR_HAND_JOINTS_MOTION_RANGE_CONFORMING_TO_CONTROLLER_EXT, 2) \ - _(XR_HAND_JOINTS_MOTION_RANGE_MAX_ENUM_EXT, 0x7FFFFFFF) - -#define XR_LIST_ENUM_XrSceneComputeFeatureMSFT(_) \ - _(XR_SCENE_COMPUTE_FEATURE_PLANE_MSFT, 1) \ - _(XR_SCENE_COMPUTE_FEATURE_PLANE_MESH_MSFT, 2) \ - _(XR_SCENE_COMPUTE_FEATURE_VISUAL_MESH_MSFT, 3) \ - _(XR_SCENE_COMPUTE_FEATURE_COLLIDER_MESH_MSFT, 4) \ - _(XR_SCENE_COMPUTE_FEATURE_SERIALIZE_SCENE_MSFT, 1000098000) \ - _(XR_SCENE_COMPUTE_FEATURE_MARKER_MSFT, 1000147000) \ - _(XR_SCENE_COMPUTE_FEATURE_MAX_ENUM_MSFT, 0x7FFFFFFF) - -#define XR_LIST_ENUM_XrSceneComputeConsistencyMSFT(_) \ - _(XR_SCENE_COMPUTE_CONSISTENCY_SNAPSHOT_COMPLETE_MSFT, 1) \ - _(XR_SCENE_COMPUTE_CONSISTENCY_SNAPSHOT_INCOMPLETE_FAST_MSFT, 2) \ - _(XR_SCENE_COMPUTE_CONSISTENCY_OCCLUSION_OPTIMIZED_MSFT, 3) \ - _(XR_SCENE_COMPUTE_CONSISTENCY_MAX_ENUM_MSFT, 0x7FFFFFFF) - -#define XR_LIST_ENUM_XrMeshComputeLodMSFT(_) \ - _(XR_MESH_COMPUTE_LOD_COARSE_MSFT, 1) \ - _(XR_MESH_COMPUTE_LOD_MEDIUM_MSFT, 2) \ - _(XR_MESH_COMPUTE_LOD_FINE_MSFT, 3) \ - _(XR_MESH_COMPUTE_LOD_UNLIMITED_MSFT, 4) \ - _(XR_MESH_COMPUTE_LOD_MAX_ENUM_MSFT, 0x7FFFFFFF) - -#define XR_LIST_ENUM_XrSceneComponentTypeMSFT(_) \ - _(XR_SCENE_COMPONENT_TYPE_INVALID_MSFT, -1) \ - _(XR_SCENE_COMPONENT_TYPE_OBJECT_MSFT, 1) \ - _(XR_SCENE_COMPONENT_TYPE_PLANE_MSFT, 2) \ - _(XR_SCENE_COMPONENT_TYPE_VISUAL_MESH_MSFT, 3) \ - _(XR_SCENE_COMPONENT_TYPE_COLLIDER_MESH_MSFT, 4) \ - _(XR_SCENE_COMPONENT_TYPE_SERIALIZED_SCENE_FRAGMENT_MSFT, 1000098000) \ - _(XR_SCENE_COMPONENT_TYPE_MARKER_MSFT, 1000147000) \ - _(XR_SCENE_COMPONENT_TYPE_MAX_ENUM_MSFT, 0x7FFFFFFF) - -#define XR_LIST_ENUM_XrSceneObjectTypeMSFT(_) \ - _(XR_SCENE_OBJECT_TYPE_UNCATEGORIZED_MSFT, -1) \ - _(XR_SCENE_OBJECT_TYPE_BACKGROUND_MSFT, 1) \ - _(XR_SCENE_OBJECT_TYPE_WALL_MSFT, 2) \ - _(XR_SCENE_OBJECT_TYPE_FLOOR_MSFT, 3) \ - _(XR_SCENE_OBJECT_TYPE_CEILING_MSFT, 4) \ - _(XR_SCENE_OBJECT_TYPE_PLATFORM_MSFT, 5) \ - _(XR_SCENE_OBJECT_TYPE_INFERRED_MSFT, 6) \ - _(XR_SCENE_OBJECT_TYPE_MAX_ENUM_MSFT, 0x7FFFFFFF) - -#define XR_LIST_ENUM_XrScenePlaneAlignmentTypeMSFT(_) \ - _(XR_SCENE_PLANE_ALIGNMENT_TYPE_NON_ORTHOGONAL_MSFT, 0) \ - _(XR_SCENE_PLANE_ALIGNMENT_TYPE_HORIZONTAL_MSFT, 1) \ - _(XR_SCENE_PLANE_ALIGNMENT_TYPE_VERTICAL_MSFT, 2) \ - _(XR_SCENE_PLANE_ALIGNMENT_TYPE_MAX_ENUM_MSFT, 0x7FFFFFFF) - -#define XR_LIST_ENUM_XrSceneComputeStateMSFT(_) \ - _(XR_SCENE_COMPUTE_STATE_NONE_MSFT, 0) \ - _(XR_SCENE_COMPUTE_STATE_UPDATING_MSFT, 1) \ - _(XR_SCENE_COMPUTE_STATE_COMPLETED_MSFT, 2) \ - _(XR_SCENE_COMPUTE_STATE_COMPLETED_WITH_ERROR_MSFT, 3) \ - _(XR_SCENE_COMPUTE_STATE_MAX_ENUM_MSFT, 0x7FFFFFFF) - -#define XR_LIST_ENUM_XrEyeExpressionHTC(_) \ - _(XR_EYE_EXPRESSION_LEFT_BLINK_HTC, 0) \ - _(XR_EYE_EXPRESSION_LEFT_WIDE_HTC, 1) \ - _(XR_EYE_EXPRESSION_RIGHT_BLINK_HTC, 2) \ - _(XR_EYE_EXPRESSION_RIGHT_WIDE_HTC, 3) \ - _(XR_EYE_EXPRESSION_LEFT_SQUEEZE_HTC, 4) \ - _(XR_EYE_EXPRESSION_RIGHT_SQUEEZE_HTC, 5) \ - _(XR_EYE_EXPRESSION_LEFT_DOWN_HTC, 6) \ - _(XR_EYE_EXPRESSION_RIGHT_DOWN_HTC, 7) \ - _(XR_EYE_EXPRESSION_LEFT_OUT_HTC, 8) \ - _(XR_EYE_EXPRESSION_RIGHT_IN_HTC, 9) \ - _(XR_EYE_EXPRESSION_LEFT_IN_HTC, 10) \ - _(XR_EYE_EXPRESSION_RIGHT_OUT_HTC, 11) \ - _(XR_EYE_EXPRESSION_LEFT_UP_HTC, 12) \ - _(XR_EYE_EXPRESSION_RIGHT_UP_HTC, 13) \ - _(XR_EYE_EXPRESSION_MAX_ENUM_HTC, 0x7FFFFFFF) - -#define XR_LIST_ENUM_XrLipExpressionHTC(_) \ - _(XR_LIP_EXPRESSION_JAW_RIGHT_HTC, 0) \ - _(XR_LIP_EXPRESSION_JAW_LEFT_HTC, 1) \ - _(XR_LIP_EXPRESSION_JAW_FORWARD_HTC, 2) \ - _(XR_LIP_EXPRESSION_JAW_OPEN_HTC, 3) \ - _(XR_LIP_EXPRESSION_MOUTH_APE_SHAPE_HTC, 4) \ - _(XR_LIP_EXPRESSION_MOUTH_UPPER_RIGHT_HTC, 5) \ - _(XR_LIP_EXPRESSION_MOUTH_UPPER_LEFT_HTC, 6) \ - _(XR_LIP_EXPRESSION_MOUTH_LOWER_RIGHT_HTC, 7) \ - _(XR_LIP_EXPRESSION_MOUTH_LOWER_LEFT_HTC, 8) \ - _(XR_LIP_EXPRESSION_MOUTH_UPPER_OVERTURN_HTC, 9) \ - _(XR_LIP_EXPRESSION_MOUTH_LOWER_OVERTURN_HTC, 10) \ - _(XR_LIP_EXPRESSION_MOUTH_POUT_HTC, 11) \ - _(XR_LIP_EXPRESSION_MOUTH_SMILE_RIGHT_HTC, 12) \ - _(XR_LIP_EXPRESSION_MOUTH_SMILE_LEFT_HTC, 13) \ - _(XR_LIP_EXPRESSION_MOUTH_SAD_RIGHT_HTC, 14) \ - _(XR_LIP_EXPRESSION_MOUTH_SAD_LEFT_HTC, 15) \ - _(XR_LIP_EXPRESSION_CHEEK_PUFF_RIGHT_HTC, 16) \ - _(XR_LIP_EXPRESSION_CHEEK_PUFF_LEFT_HTC, 17) \ - _(XR_LIP_EXPRESSION_CHEEK_SUCK_HTC, 18) \ - _(XR_LIP_EXPRESSION_MOUTH_UPPER_UPRIGHT_HTC, 19) \ - _(XR_LIP_EXPRESSION_MOUTH_UPPER_UPLEFT_HTC, 20) \ - _(XR_LIP_EXPRESSION_MOUTH_LOWER_DOWNRIGHT_HTC, 21) \ - _(XR_LIP_EXPRESSION_MOUTH_LOWER_DOWNLEFT_HTC, 22) \ - _(XR_LIP_EXPRESSION_MOUTH_UPPER_INSIDE_HTC, 23) \ - _(XR_LIP_EXPRESSION_MOUTH_LOWER_INSIDE_HTC, 24) \ - _(XR_LIP_EXPRESSION_MOUTH_LOWER_OVERLAY_HTC, 25) \ - _(XR_LIP_EXPRESSION_TONGUE_LONGSTEP1_HTC, 26) \ - _(XR_LIP_EXPRESSION_TONGUE_LEFT_HTC, 27) \ - _(XR_LIP_EXPRESSION_TONGUE_RIGHT_HTC, 28) \ - _(XR_LIP_EXPRESSION_TONGUE_UP_HTC, 29) \ - _(XR_LIP_EXPRESSION_TONGUE_DOWN_HTC, 30) \ - _(XR_LIP_EXPRESSION_TONGUE_ROLL_HTC, 31) \ - _(XR_LIP_EXPRESSION_TONGUE_LONGSTEP2_HTC, 32) \ - _(XR_LIP_EXPRESSION_TONGUE_UPRIGHT_MORPH_HTC, 33) \ - _(XR_LIP_EXPRESSION_TONGUE_UPLEFT_MORPH_HTC, 34) \ - _(XR_LIP_EXPRESSION_TONGUE_DOWNRIGHT_MORPH_HTC, 35) \ - _(XR_LIP_EXPRESSION_TONGUE_DOWNLEFT_MORPH_HTC, 36) \ - _(XR_LIP_EXPRESSION_MAX_ENUM_HTC, 0x7FFFFFFF) - -#define XR_LIST_ENUM_XrFacialTrackingTypeHTC(_) \ - _(XR_FACIAL_TRACKING_TYPE_EYE_DEFAULT_HTC, 1) \ - _(XR_FACIAL_TRACKING_TYPE_LIP_DEFAULT_HTC, 2) \ - _(XR_FACIAL_TRACKING_TYPE_MAX_ENUM_HTC, 0x7FFFFFFF) - -#define XR_LIST_ENUM_XrColorSpaceFB(_) \ - _(XR_COLOR_SPACE_UNMANAGED_FB, 0) \ - _(XR_COLOR_SPACE_REC2020_FB, 1) \ - _(XR_COLOR_SPACE_REC709_FB, 2) \ - _(XR_COLOR_SPACE_RIFT_CV1_FB, 3) \ - _(XR_COLOR_SPACE_RIFT_S_FB, 4) \ - _(XR_COLOR_SPACE_QUEST_FB, 5) \ - _(XR_COLOR_SPACE_P3_FB, 6) \ - _(XR_COLOR_SPACE_ADOBE_RGB_FB, 7) \ - _(XR_COLOR_SPACE_MAX_ENUM_FB, 0x7FFFFFFF) - -#define XR_LIST_ENUM_XrSpaceComponentTypeFB(_) \ - _(XR_SPACE_COMPONENT_TYPE_LOCATABLE_FB, 0) \ - _(XR_SPACE_COMPONENT_TYPE_STORABLE_FB, 1) \ - _(XR_SPACE_COMPONENT_TYPE_SHARABLE_FB, 2) \ - _(XR_SPACE_COMPONENT_TYPE_BOUNDED_2D_FB, 3) \ - _(XR_SPACE_COMPONENT_TYPE_BOUNDED_3D_FB, 4) \ - _(XR_SPACE_COMPONENT_TYPE_SEMANTIC_LABELS_FB, 5) \ - _(XR_SPACE_COMPONENT_TYPE_ROOM_LAYOUT_FB, 6) \ - _(XR_SPACE_COMPONENT_TYPE_SPACE_CONTAINER_FB, 7) \ - _(XR_SPACE_COMPONENT_TYPE_TRIANGLE_MESH_META, 1000269000) \ - _(XR_SPACE_COMPONENT_TYPE_MAX_ENUM_FB, 0x7FFFFFFF) - -#define XR_LIST_ENUM_XrFoveationLevelFB(_) \ - _(XR_FOVEATION_LEVEL_NONE_FB, 0) \ - _(XR_FOVEATION_LEVEL_LOW_FB, 1) \ - _(XR_FOVEATION_LEVEL_MEDIUM_FB, 2) \ - _(XR_FOVEATION_LEVEL_HIGH_FB, 3) \ - _(XR_FOVEATION_LEVEL_MAX_ENUM_FB, 0x7FFFFFFF) - -#define XR_LIST_ENUM_XrFoveationDynamicFB(_) \ - _(XR_FOVEATION_DYNAMIC_DISABLED_FB, 0) \ - _(XR_FOVEATION_DYNAMIC_LEVEL_ENABLED_FB, 1) \ - _(XR_FOVEATION_DYNAMIC_MAX_ENUM_FB, 0x7FFFFFFF) - -#define XR_LIST_ENUM_XrWindingOrderFB(_) \ - _(XR_WINDING_ORDER_UNKNOWN_FB, 0) \ - _(XR_WINDING_ORDER_CW_FB, 1) \ - _(XR_WINDING_ORDER_CCW_FB, 2) \ - _(XR_WINDING_ORDER_MAX_ENUM_FB, 0x7FFFFFFF) - -#define XR_LIST_ENUM_XrPassthroughLayerPurposeFB(_) \ - _(XR_PASSTHROUGH_LAYER_PURPOSE_RECONSTRUCTION_FB, 0) \ - _(XR_PASSTHROUGH_LAYER_PURPOSE_PROJECTED_FB, 1) \ - _(XR_PASSTHROUGH_LAYER_PURPOSE_TRACKED_KEYBOARD_HANDS_FB, 1000203001) \ - _(XR_PASSTHROUGH_LAYER_PURPOSE_TRACKED_KEYBOARD_MASKED_HANDS_FB, 1000203002) \ - _(XR_PASSTHROUGH_LAYER_PURPOSE_MAX_ENUM_FB, 0x7FFFFFFF) - -#define XR_LIST_ENUM_XrMarkerDetectorProfileML(_) \ - _(XR_MARKER_DETECTOR_PROFILE_DEFAULT_ML, 0) \ - _(XR_MARKER_DETECTOR_PROFILE_SPEED_ML, 1) \ - _(XR_MARKER_DETECTOR_PROFILE_ACCURACY_ML, 2) \ - _(XR_MARKER_DETECTOR_PROFILE_SMALL_TARGETS_ML, 3) \ - _(XR_MARKER_DETECTOR_PROFILE_LARGE_FOV_ML, 4) \ - _(XR_MARKER_DETECTOR_PROFILE_CUSTOM_ML, 5) \ - _(XR_MARKER_DETECTOR_PROFILE_MAX_ENUM_ML, 0x7FFFFFFF) - -#define XR_LIST_ENUM_XrMarkerTypeML(_) \ - _(XR_MARKER_TYPE_ARUCO_ML, 0) \ - _(XR_MARKER_TYPE_APRIL_TAG_ML, 1) \ - _(XR_MARKER_TYPE_QR_ML, 2) \ - _(XR_MARKER_TYPE_EAN_13_ML, 3) \ - _(XR_MARKER_TYPE_UPC_A_ML, 4) \ - _(XR_MARKER_TYPE_CODE_128_ML, 5) \ - _(XR_MARKER_TYPE_MAX_ENUM_ML, 0x7FFFFFFF) - -#define XR_LIST_ENUM_XrMarkerArucoDictML(_) \ - _(XR_MARKER_ARUCO_DICT_4X4_50_ML, 0) \ - _(XR_MARKER_ARUCO_DICT_4X4_100_ML, 1) \ - _(XR_MARKER_ARUCO_DICT_4X4_250_ML, 2) \ - _(XR_MARKER_ARUCO_DICT_4X4_1000_ML, 3) \ - _(XR_MARKER_ARUCO_DICT_5X5_50_ML, 4) \ - _(XR_MARKER_ARUCO_DICT_5X5_100_ML, 5) \ - _(XR_MARKER_ARUCO_DICT_5X5_250_ML, 6) \ - _(XR_MARKER_ARUCO_DICT_5X5_1000_ML, 7) \ - _(XR_MARKER_ARUCO_DICT_6X6_50_ML, 8) \ - _(XR_MARKER_ARUCO_DICT_6X6_100_ML, 9) \ - _(XR_MARKER_ARUCO_DICT_6X6_250_ML, 10) \ - _(XR_MARKER_ARUCO_DICT_6X6_1000_ML, 11) \ - _(XR_MARKER_ARUCO_DICT_7X7_50_ML, 12) \ - _(XR_MARKER_ARUCO_DICT_7X7_100_ML, 13) \ - _(XR_MARKER_ARUCO_DICT_7X7_250_ML, 14) \ - _(XR_MARKER_ARUCO_DICT_7X7_1000_ML, 15) \ - _(XR_MARKER_ARUCO_DICT_MAX_ENUM_ML, 0x7FFFFFFF) - -#define XR_LIST_ENUM_XrMarkerAprilTagDictML(_) \ - _(XR_MARKER_APRIL_TAG_DICT_16H5_ML, 0) \ - _(XR_MARKER_APRIL_TAG_DICT_25H9_ML, 1) \ - _(XR_MARKER_APRIL_TAG_DICT_36H10_ML, 2) \ - _(XR_MARKER_APRIL_TAG_DICT_36H11_ML, 3) \ - _(XR_MARKER_APRIL_TAG_DICT_MAX_ENUM_ML, 0x7FFFFFFF) - -#define XR_LIST_ENUM_XrMarkerDetectorFpsML(_) \ - _(XR_MARKER_DETECTOR_FPS_LOW_ML, 0) \ - _(XR_MARKER_DETECTOR_FPS_MEDIUM_ML, 1) \ - _(XR_MARKER_DETECTOR_FPS_HIGH_ML, 2) \ - _(XR_MARKER_DETECTOR_FPS_MAX_ML, 3) \ - _(XR_MARKER_DETECTOR_FPS_MAX_ENUM_ML, 0x7FFFFFFF) - -#define XR_LIST_ENUM_XrMarkerDetectorResolutionML(_) \ - _(XR_MARKER_DETECTOR_RESOLUTION_LOW_ML, 0) \ - _(XR_MARKER_DETECTOR_RESOLUTION_MEDIUM_ML, 1) \ - _(XR_MARKER_DETECTOR_RESOLUTION_HIGH_ML, 2) \ - _(XR_MARKER_DETECTOR_RESOLUTION_MAX_ENUM_ML, 0x7FFFFFFF) - -#define XR_LIST_ENUM_XrMarkerDetectorCameraML(_) \ - _(XR_MARKER_DETECTOR_CAMERA_RGB_CAMERA_ML, 0) \ - _(XR_MARKER_DETECTOR_CAMERA_WORLD_CAMERAS_ML, 1) \ - _(XR_MARKER_DETECTOR_CAMERA_MAX_ENUM_ML, 0x7FFFFFFF) - -#define XR_LIST_ENUM_XrMarkerDetectorCornerRefineMethodML(_) \ - _(XR_MARKER_DETECTOR_CORNER_REFINE_METHOD_NONE_ML, 0) \ - _(XR_MARKER_DETECTOR_CORNER_REFINE_METHOD_SUBPIX_ML, 1) \ - _(XR_MARKER_DETECTOR_CORNER_REFINE_METHOD_CONTOUR_ML, 2) \ - _(XR_MARKER_DETECTOR_CORNER_REFINE_METHOD_APRIL_TAG_ML, 3) \ - _(XR_MARKER_DETECTOR_CORNER_REFINE_METHOD_MAX_ENUM_ML, 0x7FFFFFFF) - -#define XR_LIST_ENUM_XrMarkerDetectorFullAnalysisIntervalML(_) \ - _(XR_MARKER_DETECTOR_FULL_ANALYSIS_INTERVAL_MAX_ML, 0) \ - _(XR_MARKER_DETECTOR_FULL_ANALYSIS_INTERVAL_FAST_ML, 1) \ - _(XR_MARKER_DETECTOR_FULL_ANALYSIS_INTERVAL_MEDIUM_ML, 2) \ - _(XR_MARKER_DETECTOR_FULL_ANALYSIS_INTERVAL_SLOW_ML, 3) \ - _(XR_MARKER_DETECTOR_FULL_ANALYSIS_INTERVAL_MAX_ENUM_ML, 0x7FFFFFFF) - -#define XR_LIST_ENUM_XrMarkerDetectorStatusML(_) \ - _(XR_MARKER_DETECTOR_STATUS_PENDING_ML, 0) \ - _(XR_MARKER_DETECTOR_STATUS_READY_ML, 1) \ - _(XR_MARKER_DETECTOR_STATUS_ERROR_ML, 2) \ - _(XR_MARKER_DETECTOR_STATUS_MAX_ENUM_ML, 0x7FFFFFFF) - -#define XR_LIST_ENUM_XrLocalizationMapStateML(_) \ - _(XR_LOCALIZATION_MAP_STATE_NOT_LOCALIZED_ML, 0) \ - _(XR_LOCALIZATION_MAP_STATE_LOCALIZED_ML, 1) \ - _(XR_LOCALIZATION_MAP_STATE_LOCALIZATION_PENDING_ML, 2) \ - _(XR_LOCALIZATION_MAP_STATE_LOCALIZATION_SLEEPING_BEFORE_RETRY_ML, 3) \ - _(XR_LOCALIZATION_MAP_STATE_MAX_ENUM_ML, 0x7FFFFFFF) - -#define XR_LIST_ENUM_XrLocalizationMapTypeML(_) \ - _(XR_LOCALIZATION_MAP_TYPE_ON_DEVICE_ML, 0) \ - _(XR_LOCALIZATION_MAP_TYPE_CLOUD_ML, 1) \ - _(XR_LOCALIZATION_MAP_TYPE_MAX_ENUM_ML, 0x7FFFFFFF) - -#define XR_LIST_ENUM_XrLocalizationMapConfidenceML(_) \ - _(XR_LOCALIZATION_MAP_CONFIDENCE_POOR_ML, 0) \ - _(XR_LOCALIZATION_MAP_CONFIDENCE_FAIR_ML, 1) \ - _(XR_LOCALIZATION_MAP_CONFIDENCE_GOOD_ML, 2) \ - _(XR_LOCALIZATION_MAP_CONFIDENCE_EXCELLENT_ML, 3) \ - _(XR_LOCALIZATION_MAP_CONFIDENCE_MAX_ENUM_ML, 0x7FFFFFFF) - -#define XR_LIST_ENUM_XrSceneMarkerTypeMSFT(_) \ - _(XR_SCENE_MARKER_TYPE_QR_CODE_MSFT, 1) \ - _(XR_SCENE_MARKER_TYPE_MAX_ENUM_MSFT, 0x7FFFFFFF) - -#define XR_LIST_ENUM_XrSceneMarkerQRCodeSymbolTypeMSFT(_) \ - _(XR_SCENE_MARKER_QR_CODE_SYMBOL_TYPE_QR_CODE_MSFT, 1) \ - _(XR_SCENE_MARKER_QR_CODE_SYMBOL_TYPE_MICRO_QR_CODE_MSFT, 2) \ - _(XR_SCENE_MARKER_QRCODE_SYMBOL_TYPE_MAX_ENUM_MSFT, 0x7FFFFFFF) - -#define XR_LIST_ENUM_XrHandForearmJointULTRALEAP(_) \ - _(XR_HAND_FOREARM_JOINT_PALM_ULTRALEAP, 0) \ - _(XR_HAND_FOREARM_JOINT_WRIST_ULTRALEAP, 1) \ - _(XR_HAND_FOREARM_JOINT_THUMB_METACARPAL_ULTRALEAP, 2) \ - _(XR_HAND_FOREARM_JOINT_THUMB_PROXIMAL_ULTRALEAP, 3) \ - _(XR_HAND_FOREARM_JOINT_THUMB_DISTAL_ULTRALEAP, 4) \ - _(XR_HAND_FOREARM_JOINT_THUMB_TIP_ULTRALEAP, 5) \ - _(XR_HAND_FOREARM_JOINT_INDEX_METACARPAL_ULTRALEAP, 6) \ - _(XR_HAND_FOREARM_JOINT_INDEX_PROXIMAL_ULTRALEAP, 7) \ - _(XR_HAND_FOREARM_JOINT_INDEX_INTERMEDIATE_ULTRALEAP, 8) \ - _(XR_HAND_FOREARM_JOINT_INDEX_DISTAL_ULTRALEAP, 9) \ - _(XR_HAND_FOREARM_JOINT_INDEX_TIP_ULTRALEAP, 10) \ - _(XR_HAND_FOREARM_JOINT_MIDDLE_METACARPAL_ULTRALEAP, 11) \ - _(XR_HAND_FOREARM_JOINT_MIDDLE_PROXIMAL_ULTRALEAP, 12) \ - _(XR_HAND_FOREARM_JOINT_MIDDLE_INTERMEDIATE_ULTRALEAP, 13) \ - _(XR_HAND_FOREARM_JOINT_MIDDLE_DISTAL_ULTRALEAP, 14) \ - _(XR_HAND_FOREARM_JOINT_MIDDLE_TIP_ULTRALEAP, 15) \ - _(XR_HAND_FOREARM_JOINT_RING_METACARPAL_ULTRALEAP, 16) \ - _(XR_HAND_FOREARM_JOINT_RING_PROXIMAL_ULTRALEAP, 17) \ - _(XR_HAND_FOREARM_JOINT_RING_INTERMEDIATE_ULTRALEAP, 18) \ - _(XR_HAND_FOREARM_JOINT_RING_DISTAL_ULTRALEAP, 19) \ - _(XR_HAND_FOREARM_JOINT_RING_TIP_ULTRALEAP, 20) \ - _(XR_HAND_FOREARM_JOINT_LITTLE_METACARPAL_ULTRALEAP, 21) \ - _(XR_HAND_FOREARM_JOINT_LITTLE_PROXIMAL_ULTRALEAP, 22) \ - _(XR_HAND_FOREARM_JOINT_LITTLE_INTERMEDIATE_ULTRALEAP, 23) \ - _(XR_HAND_FOREARM_JOINT_LITTLE_DISTAL_ULTRALEAP, 24) \ - _(XR_HAND_FOREARM_JOINT_LITTLE_TIP_ULTRALEAP, 25) \ - _(XR_HAND_FOREARM_JOINT_ELBOW_ULTRALEAP, 26) \ - _(XR_HAND_FOREARM_JOINT_MAX_ENUM_ULTRALEAP, 0x7FFFFFFF) - -#define XR_LIST_ENUM_XrSpaceQueryActionFB(_) \ - _(XR_SPACE_QUERY_ACTION_LOAD_FB, 0) \ - _(XR_SPACE_QUERY_ACTION_MAX_ENUM_FB, 0x7FFFFFFF) - -#define XR_LIST_ENUM_XrSpaceStorageLocationFB(_) \ - _(XR_SPACE_STORAGE_LOCATION_INVALID_FB, 0) \ - _(XR_SPACE_STORAGE_LOCATION_LOCAL_FB, 1) \ - _(XR_SPACE_STORAGE_LOCATION_CLOUD_FB, 2) \ - _(XR_SPACE_STORAGE_LOCATION_MAX_ENUM_FB, 0x7FFFFFFF) - -#define XR_LIST_ENUM_XrSpacePersistenceModeFB(_) \ - _(XR_SPACE_PERSISTENCE_MODE_INVALID_FB, 0) \ - _(XR_SPACE_PERSISTENCE_MODE_INDEFINITE_FB, 1) \ - _(XR_SPACE_PERSISTENCE_MODE_MAX_ENUM_FB, 0x7FFFFFFF) - -#define XR_LIST_ENUM_XrFaceExpressionFB(_) \ - _(XR_FACE_EXPRESSION_BROW_LOWERER_L_FB, 0) \ - _(XR_FACE_EXPRESSION_BROW_LOWERER_R_FB, 1) \ - _(XR_FACE_EXPRESSION_CHEEK_PUFF_L_FB, 2) \ - _(XR_FACE_EXPRESSION_CHEEK_PUFF_R_FB, 3) \ - _(XR_FACE_EXPRESSION_CHEEK_RAISER_L_FB, 4) \ - _(XR_FACE_EXPRESSION_CHEEK_RAISER_R_FB, 5) \ - _(XR_FACE_EXPRESSION_CHEEK_SUCK_L_FB, 6) \ - _(XR_FACE_EXPRESSION_CHEEK_SUCK_R_FB, 7) \ - _(XR_FACE_EXPRESSION_CHIN_RAISER_B_FB, 8) \ - _(XR_FACE_EXPRESSION_CHIN_RAISER_T_FB, 9) \ - _(XR_FACE_EXPRESSION_DIMPLER_L_FB, 10) \ - _(XR_FACE_EXPRESSION_DIMPLER_R_FB, 11) \ - _(XR_FACE_EXPRESSION_EYES_CLOSED_L_FB, 12) \ - _(XR_FACE_EXPRESSION_EYES_CLOSED_R_FB, 13) \ - _(XR_FACE_EXPRESSION_EYES_LOOK_DOWN_L_FB, 14) \ - _(XR_FACE_EXPRESSION_EYES_LOOK_DOWN_R_FB, 15) \ - _(XR_FACE_EXPRESSION_EYES_LOOK_LEFT_L_FB, 16) \ - _(XR_FACE_EXPRESSION_EYES_LOOK_LEFT_R_FB, 17) \ - _(XR_FACE_EXPRESSION_EYES_LOOK_RIGHT_L_FB, 18) \ - _(XR_FACE_EXPRESSION_EYES_LOOK_RIGHT_R_FB, 19) \ - _(XR_FACE_EXPRESSION_EYES_LOOK_UP_L_FB, 20) \ - _(XR_FACE_EXPRESSION_EYES_LOOK_UP_R_FB, 21) \ - _(XR_FACE_EXPRESSION_INNER_BROW_RAISER_L_FB, 22) \ - _(XR_FACE_EXPRESSION_INNER_BROW_RAISER_R_FB, 23) \ - _(XR_FACE_EXPRESSION_JAW_DROP_FB, 24) \ - _(XR_FACE_EXPRESSION_JAW_SIDEWAYS_LEFT_FB, 25) \ - _(XR_FACE_EXPRESSION_JAW_SIDEWAYS_RIGHT_FB, 26) \ - _(XR_FACE_EXPRESSION_JAW_THRUST_FB, 27) \ - _(XR_FACE_EXPRESSION_LID_TIGHTENER_L_FB, 28) \ - _(XR_FACE_EXPRESSION_LID_TIGHTENER_R_FB, 29) \ - _(XR_FACE_EXPRESSION_LIP_CORNER_DEPRESSOR_L_FB, 30) \ - _(XR_FACE_EXPRESSION_LIP_CORNER_DEPRESSOR_R_FB, 31) \ - _(XR_FACE_EXPRESSION_LIP_CORNER_PULLER_L_FB, 32) \ - _(XR_FACE_EXPRESSION_LIP_CORNER_PULLER_R_FB, 33) \ - _(XR_FACE_EXPRESSION_LIP_FUNNELER_LB_FB, 34) \ - _(XR_FACE_EXPRESSION_LIP_FUNNELER_LT_FB, 35) \ - _(XR_FACE_EXPRESSION_LIP_FUNNELER_RB_FB, 36) \ - _(XR_FACE_EXPRESSION_LIP_FUNNELER_RT_FB, 37) \ - _(XR_FACE_EXPRESSION_LIP_PRESSOR_L_FB, 38) \ - _(XR_FACE_EXPRESSION_LIP_PRESSOR_R_FB, 39) \ - _(XR_FACE_EXPRESSION_LIP_PUCKER_L_FB, 40) \ - _(XR_FACE_EXPRESSION_LIP_PUCKER_R_FB, 41) \ - _(XR_FACE_EXPRESSION_LIP_STRETCHER_L_FB, 42) \ - _(XR_FACE_EXPRESSION_LIP_STRETCHER_R_FB, 43) \ - _(XR_FACE_EXPRESSION_LIP_SUCK_LB_FB, 44) \ - _(XR_FACE_EXPRESSION_LIP_SUCK_LT_FB, 45) \ - _(XR_FACE_EXPRESSION_LIP_SUCK_RB_FB, 46) \ - _(XR_FACE_EXPRESSION_LIP_SUCK_RT_FB, 47) \ - _(XR_FACE_EXPRESSION_LIP_TIGHTENER_L_FB, 48) \ - _(XR_FACE_EXPRESSION_LIP_TIGHTENER_R_FB, 49) \ - _(XR_FACE_EXPRESSION_LIPS_TOWARD_FB, 50) \ - _(XR_FACE_EXPRESSION_LOWER_LIP_DEPRESSOR_L_FB, 51) \ - _(XR_FACE_EXPRESSION_LOWER_LIP_DEPRESSOR_R_FB, 52) \ - _(XR_FACE_EXPRESSION_MOUTH_LEFT_FB, 53) \ - _(XR_FACE_EXPRESSION_MOUTH_RIGHT_FB, 54) \ - _(XR_FACE_EXPRESSION_NOSE_WRINKLER_L_FB, 55) \ - _(XR_FACE_EXPRESSION_NOSE_WRINKLER_R_FB, 56) \ - _(XR_FACE_EXPRESSION_OUTER_BROW_RAISER_L_FB, 57) \ - _(XR_FACE_EXPRESSION_OUTER_BROW_RAISER_R_FB, 58) \ - _(XR_FACE_EXPRESSION_UPPER_LID_RAISER_L_FB, 59) \ - _(XR_FACE_EXPRESSION_UPPER_LID_RAISER_R_FB, 60) \ - _(XR_FACE_EXPRESSION_UPPER_LIP_RAISER_L_FB, 61) \ - _(XR_FACE_EXPRESSION_UPPER_LIP_RAISER_R_FB, 62) \ - _(XR_FACE_EXPRESSION_COUNT_FB, 63) \ - _(XR_FACE_EXPRESSION_MAX_ENUM_FB, 0x7FFFFFFF) - -#define XR_LIST_ENUM_XrFaceExpressionSetFB(_) \ - _(XR_FACE_EXPRESSION_SET_DEFAULT_FB, 0) \ - _(XR_FACE_EXPRESSION_SET_MAX_ENUM_FB, 0x7FFFFFFF) - -#define XR_LIST_ENUM_XrFaceConfidenceFB(_) \ - _(XR_FACE_CONFIDENCE_LOWER_FACE_FB, 0) \ - _(XR_FACE_CONFIDENCE_UPPER_FACE_FB, 1) \ - _(XR_FACE_CONFIDENCE_COUNT_FB, 2) \ - _(XR_FACE_CONFIDENCE_MAX_ENUM_FB, 0x7FFFFFFF) - -#define XR_LIST_ENUM_XrEyePositionFB(_) \ - _(XR_EYE_POSITION_LEFT_FB, 0) \ - _(XR_EYE_POSITION_RIGHT_FB, 1) \ - _(XR_EYE_POSITION_COUNT_FB, 2) \ - _(XR_EYE_POSITION_MAX_ENUM_FB, 0x7FFFFFFF) - -#define XR_LIST_ENUM_XrCompareOpFB(_) \ - _(XR_COMPARE_OP_NEVER_FB, 0) \ - _(XR_COMPARE_OP_LESS_FB, 1) \ - _(XR_COMPARE_OP_EQUAL_FB, 2) \ - _(XR_COMPARE_OP_LESS_OR_EQUAL_FB, 3) \ - _(XR_COMPARE_OP_GREATER_FB, 4) \ - _(XR_COMPARE_OP_NOT_EQUAL_FB, 5) \ - _(XR_COMPARE_OP_GREATER_OR_EQUAL_FB, 6) \ - _(XR_COMPARE_OP_ALWAYS_FB, 7) \ - _(XR_COMPARE_OPFB_MAX_ENUM_FB, 0x7FFFFFFF) - -#define XR_LIST_ENUM_XrLocalDimmingModeMETA(_) \ - _(XR_LOCAL_DIMMING_MODE_OFF_META, 0) \ - _(XR_LOCAL_DIMMING_MODE_ON_META, 1) \ - _(XR_LOCAL_DIMMING_MODE_MAX_ENUM_META, 0x7FFFFFFF) - -#define XR_LIST_ENUM_XrVirtualKeyboardLocationTypeMETA(_) \ - _(XR_VIRTUAL_KEYBOARD_LOCATION_TYPE_CUSTOM_META, 0) \ - _(XR_VIRTUAL_KEYBOARD_LOCATION_TYPE_FAR_META, 1) \ - _(XR_VIRTUAL_KEYBOARD_LOCATION_TYPE_DIRECT_META, 2) \ - _(XR_VIRTUAL_KEYBOARD_LOCATION_TYPE_MAX_ENUM_META, 0x7FFFFFFF) - -#define XR_LIST_ENUM_XrVirtualKeyboardInputSourceMETA(_) \ - _(XR_VIRTUAL_KEYBOARD_INPUT_SOURCE_CONTROLLER_RAY_LEFT_META, 1) \ - _(XR_VIRTUAL_KEYBOARD_INPUT_SOURCE_CONTROLLER_RAY_RIGHT_META, 2) \ - _(XR_VIRTUAL_KEYBOARD_INPUT_SOURCE_HAND_RAY_LEFT_META, 3) \ - _(XR_VIRTUAL_KEYBOARD_INPUT_SOURCE_HAND_RAY_RIGHT_META, 4) \ - _(XR_VIRTUAL_KEYBOARD_INPUT_SOURCE_CONTROLLER_DIRECT_LEFT_META, 5) \ - _(XR_VIRTUAL_KEYBOARD_INPUT_SOURCE_CONTROLLER_DIRECT_RIGHT_META, 6) \ - _(XR_VIRTUAL_KEYBOARD_INPUT_SOURCE_HAND_DIRECT_INDEX_TIP_LEFT_META, 7) \ - _(XR_VIRTUAL_KEYBOARD_INPUT_SOURCE_HAND_DIRECT_INDEX_TIP_RIGHT_META, 8) \ - _(XR_VIRTUAL_KEYBOARD_INPUT_SOURCE_MAX_ENUM_META, 0x7FFFFFFF) - -#define XR_LIST_ENUM_XrExternalCameraAttachedToDeviceOCULUS(_) \ - _(XR_EXTERNAL_CAMERA_ATTACHED_TO_DEVICE_NONE_OCULUS, 0) \ - _(XR_EXTERNAL_CAMERA_ATTACHED_TO_DEVICE_HMD_OCULUS, 1) \ - _(XR_EXTERNAL_CAMERA_ATTACHED_TO_DEVICE_LTOUCH_OCULUS, 2) \ - _(XR_EXTERNAL_CAMERA_ATTACHED_TO_DEVICE_RTOUCH_OCULUS, 3) \ - _(XR_EXTERNAL_CAMERA_ATTACHED_TODEVICE_MAX_ENUM_OCULUS, 0x7FFFFFFF) - -#define XR_LIST_ENUM_XrPerformanceMetricsCounterUnitMETA(_) \ - _(XR_PERFORMANCE_METRICS_COUNTER_UNIT_GENERIC_META, 0) \ - _(XR_PERFORMANCE_METRICS_COUNTER_UNIT_PERCENTAGE_META, 1) \ - _(XR_PERFORMANCE_METRICS_COUNTER_UNIT_MILLISECONDS_META, 2) \ - _(XR_PERFORMANCE_METRICS_COUNTER_UNIT_BYTES_META, 3) \ - _(XR_PERFORMANCE_METRICS_COUNTER_UNIT_HERTZ_META, 4) \ - _(XR_PERFORMANCE_METRICS_COUNTER_UNIT_MAX_ENUM_META, 0x7FFFFFFF) - -#define XR_LIST_ENUM_XrPassthroughColorLutChannelsMETA(_) \ - _(XR_PASSTHROUGH_COLOR_LUT_CHANNELS_RGB_META, 1) \ - _(XR_PASSTHROUGH_COLOR_LUT_CHANNELS_RGBA_META, 2) \ - _(XR_PASSTHROUGH_COLOR_LUT_CHANNELS_MAX_ENUM_META, 0x7FFFFFFF) - -#define XR_LIST_ENUM_XrFaceExpression2FB(_) \ - _(XR_FACE_EXPRESSION2_BROW_LOWERER_L_FB, 0) \ - _(XR_FACE_EXPRESSION2_BROW_LOWERER_R_FB, 1) \ - _(XR_FACE_EXPRESSION2_CHEEK_PUFF_L_FB, 2) \ - _(XR_FACE_EXPRESSION2_CHEEK_PUFF_R_FB, 3) \ - _(XR_FACE_EXPRESSION2_CHEEK_RAISER_L_FB, 4) \ - _(XR_FACE_EXPRESSION2_CHEEK_RAISER_R_FB, 5) \ - _(XR_FACE_EXPRESSION2_CHEEK_SUCK_L_FB, 6) \ - _(XR_FACE_EXPRESSION2_CHEEK_SUCK_R_FB, 7) \ - _(XR_FACE_EXPRESSION2_CHIN_RAISER_B_FB, 8) \ - _(XR_FACE_EXPRESSION2_CHIN_RAISER_T_FB, 9) \ - _(XR_FACE_EXPRESSION2_DIMPLER_L_FB, 10) \ - _(XR_FACE_EXPRESSION2_DIMPLER_R_FB, 11) \ - _(XR_FACE_EXPRESSION2_EYES_CLOSED_L_FB, 12) \ - _(XR_FACE_EXPRESSION2_EYES_CLOSED_R_FB, 13) \ - _(XR_FACE_EXPRESSION2_EYES_LOOK_DOWN_L_FB, 14) \ - _(XR_FACE_EXPRESSION2_EYES_LOOK_DOWN_R_FB, 15) \ - _(XR_FACE_EXPRESSION2_EYES_LOOK_LEFT_L_FB, 16) \ - _(XR_FACE_EXPRESSION2_EYES_LOOK_LEFT_R_FB, 17) \ - _(XR_FACE_EXPRESSION2_EYES_LOOK_RIGHT_L_FB, 18) \ - _(XR_FACE_EXPRESSION2_EYES_LOOK_RIGHT_R_FB, 19) \ - _(XR_FACE_EXPRESSION2_EYES_LOOK_UP_L_FB, 20) \ - _(XR_FACE_EXPRESSION2_EYES_LOOK_UP_R_FB, 21) \ - _(XR_FACE_EXPRESSION2_INNER_BROW_RAISER_L_FB, 22) \ - _(XR_FACE_EXPRESSION2_INNER_BROW_RAISER_R_FB, 23) \ - _(XR_FACE_EXPRESSION2_JAW_DROP_FB, 24) \ - _(XR_FACE_EXPRESSION2_JAW_SIDEWAYS_LEFT_FB, 25) \ - _(XR_FACE_EXPRESSION2_JAW_SIDEWAYS_RIGHT_FB, 26) \ - _(XR_FACE_EXPRESSION2_JAW_THRUST_FB, 27) \ - _(XR_FACE_EXPRESSION2_LID_TIGHTENER_L_FB, 28) \ - _(XR_FACE_EXPRESSION2_LID_TIGHTENER_R_FB, 29) \ - _(XR_FACE_EXPRESSION2_LIP_CORNER_DEPRESSOR_L_FB, 30) \ - _(XR_FACE_EXPRESSION2_LIP_CORNER_DEPRESSOR_R_FB, 31) \ - _(XR_FACE_EXPRESSION2_LIP_CORNER_PULLER_L_FB, 32) \ - _(XR_FACE_EXPRESSION2_LIP_CORNER_PULLER_R_FB, 33) \ - _(XR_FACE_EXPRESSION2_LIP_FUNNELER_LB_FB, 34) \ - _(XR_FACE_EXPRESSION2_LIP_FUNNELER_LT_FB, 35) \ - _(XR_FACE_EXPRESSION2_LIP_FUNNELER_RB_FB, 36) \ - _(XR_FACE_EXPRESSION2_LIP_FUNNELER_RT_FB, 37) \ - _(XR_FACE_EXPRESSION2_LIP_PRESSOR_L_FB, 38) \ - _(XR_FACE_EXPRESSION2_LIP_PRESSOR_R_FB, 39) \ - _(XR_FACE_EXPRESSION2_LIP_PUCKER_L_FB, 40) \ - _(XR_FACE_EXPRESSION2_LIP_PUCKER_R_FB, 41) \ - _(XR_FACE_EXPRESSION2_LIP_STRETCHER_L_FB, 42) \ - _(XR_FACE_EXPRESSION2_LIP_STRETCHER_R_FB, 43) \ - _(XR_FACE_EXPRESSION2_LIP_SUCK_LB_FB, 44) \ - _(XR_FACE_EXPRESSION2_LIP_SUCK_LT_FB, 45) \ - _(XR_FACE_EXPRESSION2_LIP_SUCK_RB_FB, 46) \ - _(XR_FACE_EXPRESSION2_LIP_SUCK_RT_FB, 47) \ - _(XR_FACE_EXPRESSION2_LIP_TIGHTENER_L_FB, 48) \ - _(XR_FACE_EXPRESSION2_LIP_TIGHTENER_R_FB, 49) \ - _(XR_FACE_EXPRESSION2_LIPS_TOWARD_FB, 50) \ - _(XR_FACE_EXPRESSION2_LOWER_LIP_DEPRESSOR_L_FB, 51) \ - _(XR_FACE_EXPRESSION2_LOWER_LIP_DEPRESSOR_R_FB, 52) \ - _(XR_FACE_EXPRESSION2_MOUTH_LEFT_FB, 53) \ - _(XR_FACE_EXPRESSION2_MOUTH_RIGHT_FB, 54) \ - _(XR_FACE_EXPRESSION2_NOSE_WRINKLER_L_FB, 55) \ - _(XR_FACE_EXPRESSION2_NOSE_WRINKLER_R_FB, 56) \ - _(XR_FACE_EXPRESSION2_OUTER_BROW_RAISER_L_FB, 57) \ - _(XR_FACE_EXPRESSION2_OUTER_BROW_RAISER_R_FB, 58) \ - _(XR_FACE_EXPRESSION2_UPPER_LID_RAISER_L_FB, 59) \ - _(XR_FACE_EXPRESSION2_UPPER_LID_RAISER_R_FB, 60) \ - _(XR_FACE_EXPRESSION2_UPPER_LIP_RAISER_L_FB, 61) \ - _(XR_FACE_EXPRESSION2_UPPER_LIP_RAISER_R_FB, 62) \ - _(XR_FACE_EXPRESSION2_TONGUE_TIP_INTERDENTAL_FB, 63) \ - _(XR_FACE_EXPRESSION2_TONGUE_TIP_ALVEOLAR_FB, 64) \ - _(XR_FACE_EXPRESSION2_TONGUE_FRONT_DORSAL_PALATE_FB, 65) \ - _(XR_FACE_EXPRESSION2_TONGUE_MID_DORSAL_PALATE_FB, 66) \ - _(XR_FACE_EXPRESSION2_TONGUE_BACK_DORSAL_VELAR_FB, 67) \ - _(XR_FACE_EXPRESSION2_TONGUE_OUT_FB, 68) \ - _(XR_FACE_EXPRESSION2_TONGUE_RETREAT_FB, 69) \ - _(XR_FACE_EXPRESSION2_COUNT_FB, 70) \ - _(XR_FACE_EXPRESSION_2FB_MAX_ENUM_FB, 0x7FFFFFFF) - -#define XR_LIST_ENUM_XrFaceExpressionSet2FB(_) \ - _(XR_FACE_EXPRESSION_SET2_DEFAULT_FB, 0) \ - _(XR_FACE_EXPRESSION_SET_2FB_MAX_ENUM_FB, 0x7FFFFFFF) - -#define XR_LIST_ENUM_XrFaceTrackingDataSource2FB(_) \ - _(XR_FACE_TRACKING_DATA_SOURCE2_VISUAL_FB, 0) \ - _(XR_FACE_TRACKING_DATA_SOURCE2_AUDIO_FB, 1) \ - _(XR_FACE_TRACKING_DATA_SOURCE_2FB_MAX_ENUM_FB, 0x7FFFFFFF) - -#define XR_LIST_ENUM_XrFaceConfidence2FB(_) \ - _(XR_FACE_CONFIDENCE2_LOWER_FACE_FB, 0) \ - _(XR_FACE_CONFIDENCE2_UPPER_FACE_FB, 1) \ - _(XR_FACE_CONFIDENCE2_COUNT_FB, 2) \ - _(XR_FACE_CONFIDENCE_2FB_MAX_ENUM_FB, 0x7FFFFFFF) - -#define XR_LIST_ENUM_XrTrackingOptimizationSettingsDomainQCOM(_) \ - _(XR_TRACKING_OPTIMIZATION_SETTINGS_DOMAIN_ALL_QCOM, 1) \ - _(XR_TRACKING_OPTIMIZATION_SETTINGS_DOMAIN_MAX_ENUM_QCOM, 0x7FFFFFFF) - -#define XR_LIST_ENUM_XrTrackingOptimizationSettingsHintQCOM(_) \ - _(XR_TRACKING_OPTIMIZATION_SETTINGS_HINT_NONE_QCOM, 0) \ - _(XR_TRACKING_OPTIMIZATION_SETTINGS_HINT_LONG_RANGE_PRIORIZATION_QCOM, 1) \ - _(XR_TRACKING_OPTIMIZATION_SETTINGS_HINT_CLOSE_RANGE_PRIORIZATION_QCOM, 2) \ - _(XR_TRACKING_OPTIMIZATION_SETTINGS_HINT_LOW_POWER_PRIORIZATION_QCOM, 3) \ - _(XR_TRACKING_OPTIMIZATION_SETTINGS_HINT_HIGH_POWER_PRIORIZATION_QCOM, 4) \ - _(XR_TRACKING_OPTIMIZATION_SETTINGS_HINT_MAX_ENUM_QCOM, 0x7FFFFFFF) - -#define XR_LIST_ENUM_XrPassthroughFormHTC(_) \ - _(XR_PASSTHROUGH_FORM_PLANAR_HTC, 0) \ - _(XR_PASSTHROUGH_FORM_PROJECTED_HTC, 1) \ - _(XR_PASSTHROUGH_FORM_MAX_ENUM_HTC, 0x7FFFFFFF) - -#define XR_LIST_ENUM_XrFoveationModeHTC(_) \ - _(XR_FOVEATION_MODE_DISABLE_HTC, 0) \ - _(XR_FOVEATION_MODE_FIXED_HTC, 1) \ - _(XR_FOVEATION_MODE_DYNAMIC_HTC, 2) \ - _(XR_FOVEATION_MODE_CUSTOM_HTC, 3) \ - _(XR_FOVEATION_MODE_MAX_ENUM_HTC, 0x7FFFFFFF) - -#define XR_LIST_ENUM_XrFoveationLevelHTC(_) \ - _(XR_FOVEATION_LEVEL_NONE_HTC, 0) \ - _(XR_FOVEATION_LEVEL_LOW_HTC, 1) \ - _(XR_FOVEATION_LEVEL_MEDIUM_HTC, 2) \ - _(XR_FOVEATION_LEVEL_HIGH_HTC, 3) \ - _(XR_FOVEATION_LEVEL_MAX_ENUM_HTC, 0x7FFFFFFF) - -#define XR_LIST_ENUM_XrForceFeedbackCurlLocationMNDX(_) \ - _(XR_FORCE_FEEDBACK_CURL_LOCATION_THUMB_CURL_MNDX, 0) \ - _(XR_FORCE_FEEDBACK_CURL_LOCATION_INDEX_CURL_MNDX, 1) \ - _(XR_FORCE_FEEDBACK_CURL_LOCATION_MIDDLE_CURL_MNDX, 2) \ - _(XR_FORCE_FEEDBACK_CURL_LOCATION_RING_CURL_MNDX, 3) \ - _(XR_FORCE_FEEDBACK_CURL_LOCATION_LITTLE_CURL_MNDX, 4) \ - _(XR_FORCE_FEEDBACK_CURL_LOCATION_MAX_ENUM_MNDX, 0x7FFFFFFF) - -#define XR_LIST_ENUM_XrHandTrackingDataSourceEXT(_) \ - _(XR_HAND_TRACKING_DATA_SOURCE_UNOBSTRUCTED_EXT, 1) \ - _(XR_HAND_TRACKING_DATA_SOURCE_CONTROLLER_EXT, 2) \ - _(XR_HAND_TRACKING_DATA_SOURCE_MAX_ENUM_EXT, 0x7FFFFFFF) - -#define XR_LIST_ENUM_XrPlaneDetectorOrientationEXT(_) \ - _(XR_PLANE_DETECTOR_ORIENTATION_HORIZONTAL_UPWARD_EXT, 0) \ - _(XR_PLANE_DETECTOR_ORIENTATION_HORIZONTAL_DOWNWARD_EXT, 1) \ - _(XR_PLANE_DETECTOR_ORIENTATION_VERTICAL_EXT, 2) \ - _(XR_PLANE_DETECTOR_ORIENTATION_ARBITRARY_EXT, 3) \ - _(XR_PLANE_DETECTOR_ORIENTATION_MAX_ENUM_EXT, 0x7FFFFFFF) - -#define XR_LIST_ENUM_XrPlaneDetectorSemanticTypeEXT(_) \ - _(XR_PLANE_DETECTOR_SEMANTIC_TYPE_UNDEFINED_EXT, 0) \ - _(XR_PLANE_DETECTOR_SEMANTIC_TYPE_CEILING_EXT, 1) \ - _(XR_PLANE_DETECTOR_SEMANTIC_TYPE_FLOOR_EXT, 2) \ - _(XR_PLANE_DETECTOR_SEMANTIC_TYPE_WALL_EXT, 3) \ - _(XR_PLANE_DETECTOR_SEMANTIC_TYPE_PLATFORM_EXT, 4) \ - _(XR_PLANE_DETECTOR_SEMANTIC_TYPE_MAX_ENUM_EXT, 0x7FFFFFFF) - -#define XR_LIST_ENUM_XrPlaneDetectionStateEXT(_) \ - _(XR_PLANE_DETECTION_STATE_NONE_EXT, 0) \ - _(XR_PLANE_DETECTION_STATE_PENDING_EXT, 1) \ - _(XR_PLANE_DETECTION_STATE_DONE_EXT, 2) \ - _(XR_PLANE_DETECTION_STATE_ERROR_EXT, 3) \ - _(XR_PLANE_DETECTION_STATE_FATAL_EXT, 4) \ - _(XR_PLANE_DETECTION_STATE_MAX_ENUM_EXT, 0x7FFFFFFF) - -#define XR_LIST_ENUM_XrFutureStateEXT(_) \ - _(XR_FUTURE_STATE_PENDING_EXT, 1) \ - _(XR_FUTURE_STATE_READY_EXT, 2) \ - _(XR_FUTURE_STATE_MAX_ENUM_EXT, 0x7FFFFFFF) - -#define XR_LIST_ENUM_XrHeadsetFitStatusML(_) \ - _(XR_HEADSET_FIT_STATUS_UNKNOWN_ML, 0) \ - _(XR_HEADSET_FIT_STATUS_NOT_WORN_ML, 1) \ - _(XR_HEADSET_FIT_STATUS_GOOD_FIT_ML, 2) \ - _(XR_HEADSET_FIT_STATUS_BAD_FIT_ML, 3) \ - _(XR_HEADSET_FIT_STATUS_MAX_ENUM_ML, 0x7FFFFFFF) - -#define XR_LIST_ENUM_XrEyeCalibrationStatusML(_) \ - _(XR_EYE_CALIBRATION_STATUS_UNKNOWN_ML, 0) \ - _(XR_EYE_CALIBRATION_STATUS_NONE_ML, 1) \ - _(XR_EYE_CALIBRATION_STATUS_COARSE_ML, 2) \ - _(XR_EYE_CALIBRATION_STATUS_FINE_ML, 3) \ - _(XR_EYE_CALIBRATION_STATUS_MAX_ENUM_ML, 0x7FFFFFFF) - -#define XR_LIST_BITS_XrInstanceCreateFlags(_) - -#define XR_LIST_BITS_XrSessionCreateFlags(_) - -#define XR_LIST_BITS_XrSpaceVelocityFlags(_) \ - _(XR_SPACE_VELOCITY_LINEAR_VALID_BIT, 0x00000001) \ - _(XR_SPACE_VELOCITY_ANGULAR_VALID_BIT, 0x00000002) \ - -#define XR_LIST_BITS_XrSpaceLocationFlags(_) \ - _(XR_SPACE_LOCATION_ORIENTATION_VALID_BIT, 0x00000001) \ - _(XR_SPACE_LOCATION_POSITION_VALID_BIT, 0x00000002) \ - _(XR_SPACE_LOCATION_ORIENTATION_TRACKED_BIT, 0x00000004) \ - _(XR_SPACE_LOCATION_POSITION_TRACKED_BIT, 0x00000008) \ - -#define XR_LIST_BITS_XrSwapchainCreateFlags(_) \ - _(XR_SWAPCHAIN_CREATE_PROTECTED_CONTENT_BIT, 0x00000001) \ - _(XR_SWAPCHAIN_CREATE_STATIC_IMAGE_BIT, 0x00000002) \ - -#define XR_LIST_BITS_XrSwapchainUsageFlags(_) \ - _(XR_SWAPCHAIN_USAGE_COLOR_ATTACHMENT_BIT, 0x00000001) \ - _(XR_SWAPCHAIN_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT, 0x00000002) \ - _(XR_SWAPCHAIN_USAGE_UNORDERED_ACCESS_BIT, 0x00000004) \ - _(XR_SWAPCHAIN_USAGE_TRANSFER_SRC_BIT, 0x00000008) \ - _(XR_SWAPCHAIN_USAGE_TRANSFER_DST_BIT, 0x00000010) \ - _(XR_SWAPCHAIN_USAGE_SAMPLED_BIT, 0x00000020) \ - _(XR_SWAPCHAIN_USAGE_MUTABLE_FORMAT_BIT, 0x00000040) \ - _(XR_SWAPCHAIN_USAGE_INPUT_ATTACHMENT_BIT_MND, 0x00000080) \ - _(XR_SWAPCHAIN_USAGE_INPUT_ATTACHMENT_BIT_KHR, XR_SWAPCHAIN_USAGE_INPUT_ATTACHMENT_BIT_MND) \ - -#define XR_LIST_BITS_XrCompositionLayerFlags(_) \ - _(XR_COMPOSITION_LAYER_CORRECT_CHROMATIC_ABERRATION_BIT, 0x00000001) \ - _(XR_COMPOSITION_LAYER_BLEND_TEXTURE_SOURCE_ALPHA_BIT, 0x00000002) \ - _(XR_COMPOSITION_LAYER_UNPREMULTIPLIED_ALPHA_BIT, 0x00000004) \ - -#define XR_LIST_BITS_XrViewStateFlags(_) \ - _(XR_VIEW_STATE_ORIENTATION_VALID_BIT, 0x00000001) \ - _(XR_VIEW_STATE_POSITION_VALID_BIT, 0x00000002) \ - _(XR_VIEW_STATE_ORIENTATION_TRACKED_BIT, 0x00000004) \ - _(XR_VIEW_STATE_POSITION_TRACKED_BIT, 0x00000008) \ - -#define XR_LIST_BITS_XrInputSourceLocalizedNameFlags(_) \ - _(XR_INPUT_SOURCE_LOCALIZED_NAME_USER_PATH_BIT, 0x00000001) \ - _(XR_INPUT_SOURCE_LOCALIZED_NAME_INTERACTION_PROFILE_BIT, 0x00000002) \ - _(XR_INPUT_SOURCE_LOCALIZED_NAME_COMPONENT_BIT, 0x00000004) \ - -#define XR_LIST_BITS_XrVulkanInstanceCreateFlagsKHR(_) - -#define XR_LIST_BITS_XrVulkanDeviceCreateFlagsKHR(_) - -#define XR_LIST_BITS_XrDebugUtilsMessageSeverityFlagsEXT(_) \ - _(XR_DEBUG_UTILS_MESSAGE_SEVERITY_VERBOSE_BIT_EXT, 0x00000001) \ - _(XR_DEBUG_UTILS_MESSAGE_SEVERITY_INFO_BIT_EXT, 0x00000010) \ - _(XR_DEBUG_UTILS_MESSAGE_SEVERITY_WARNING_BIT_EXT, 0x00000100) \ - _(XR_DEBUG_UTILS_MESSAGE_SEVERITY_ERROR_BIT_EXT, 0x00001000) \ - -#define XR_LIST_BITS_XrDebugUtilsMessageTypeFlagsEXT(_) \ - _(XR_DEBUG_UTILS_MESSAGE_TYPE_GENERAL_BIT_EXT, 0x00000001) \ - _(XR_DEBUG_UTILS_MESSAGE_TYPE_VALIDATION_BIT_EXT, 0x00000002) \ - _(XR_DEBUG_UTILS_MESSAGE_TYPE_PERFORMANCE_BIT_EXT, 0x00000004) \ - _(XR_DEBUG_UTILS_MESSAGE_TYPE_CONFORMANCE_BIT_EXT, 0x00000008) \ - -#define XR_LIST_BITS_XrOverlaySessionCreateFlagsEXTX(_) - -#define XR_LIST_BITS_XrOverlayMainSessionFlagsEXTX(_) \ - _(XR_OVERLAY_MAIN_SESSION_ENABLED_COMPOSITION_LAYER_INFO_DEPTH_BIT_EXTX, 0x00000001) \ - -#define XR_LIST_BITS_XrCompositionLayerImageLayoutFlagsFB(_) \ - _(XR_COMPOSITION_LAYER_IMAGE_LAYOUT_VERTICAL_FLIP_BIT_FB, 0x00000001) \ - -#define XR_LIST_BITS_XrAndroidSurfaceSwapchainFlagsFB(_) \ - _(XR_ANDROID_SURFACE_SWAPCHAIN_SYNCHRONOUS_BIT_FB, 0x00000001) \ - _(XR_ANDROID_SURFACE_SWAPCHAIN_USE_TIMESTAMPS_BIT_FB, 0x00000002) \ - -#define XR_LIST_BITS_XrCompositionLayerSecureContentFlagsFB(_) \ - _(XR_COMPOSITION_LAYER_SECURE_CONTENT_EXCLUDE_LAYER_BIT_FB, 0x00000001) \ - _(XR_COMPOSITION_LAYER_SECURE_CONTENT_REPLACE_LAYER_BIT_FB, 0x00000002) \ - -#define XR_LIST_BITS_XrHandTrackingAimFlagsFB(_) \ - _(XR_HAND_TRACKING_AIM_COMPUTED_BIT_FB, 0x00000001) \ - _(XR_HAND_TRACKING_AIM_VALID_BIT_FB, 0x00000002) \ - _(XR_HAND_TRACKING_AIM_INDEX_PINCHING_BIT_FB, 0x00000004) \ - _(XR_HAND_TRACKING_AIM_MIDDLE_PINCHING_BIT_FB, 0x00000008) \ - _(XR_HAND_TRACKING_AIM_RING_PINCHING_BIT_FB, 0x00000010) \ - _(XR_HAND_TRACKING_AIM_LITTLE_PINCHING_BIT_FB, 0x00000020) \ - _(XR_HAND_TRACKING_AIM_SYSTEM_GESTURE_BIT_FB, 0x00000040) \ - _(XR_HAND_TRACKING_AIM_DOMINANT_HAND_BIT_FB, 0x00000080) \ - _(XR_HAND_TRACKING_AIM_MENU_PRESSED_BIT_FB, 0x00000100) \ - -#define XR_LIST_BITS_XrSwapchainCreateFoveationFlagsFB(_) \ - _(XR_SWAPCHAIN_CREATE_FOVEATION_SCALED_BIN_BIT_FB, 0x00000001) \ - _(XR_SWAPCHAIN_CREATE_FOVEATION_FRAGMENT_DENSITY_MAP_BIT_FB, 0x00000002) \ - -#define XR_LIST_BITS_XrSwapchainStateFoveationFlagsFB(_) - -#define XR_LIST_BITS_XrKeyboardTrackingFlagsFB(_) \ - _(XR_KEYBOARD_TRACKING_EXISTS_BIT_FB, 0x00000001) \ - _(XR_KEYBOARD_TRACKING_LOCAL_BIT_FB, 0x00000002) \ - _(XR_KEYBOARD_TRACKING_REMOTE_BIT_FB, 0x00000004) \ - _(XR_KEYBOARD_TRACKING_CONNECTED_BIT_FB, 0x00000008) \ - -#define XR_LIST_BITS_XrKeyboardTrackingQueryFlagsFB(_) \ - _(XR_KEYBOARD_TRACKING_QUERY_LOCAL_BIT_FB, 0x00000002) \ - _(XR_KEYBOARD_TRACKING_QUERY_REMOTE_BIT_FB, 0x00000004) \ - -#define XR_LIST_BITS_XrTriangleMeshFlagsFB(_) \ - _(XR_TRIANGLE_MESH_MUTABLE_BIT_FB, 0x00000001) \ - -#define XR_LIST_BITS_XrPassthroughCapabilityFlagsFB(_) \ - _(XR_PASSTHROUGH_CAPABILITY_BIT_FB, 0x00000001) \ - _(XR_PASSTHROUGH_CAPABILITY_COLOR_BIT_FB, 0x00000002) \ - _(XR_PASSTHROUGH_CAPABILITY_LAYER_DEPTH_BIT_FB, 0x00000004) \ - -#define XR_LIST_BITS_XrPassthroughFlagsFB(_) \ - _(XR_PASSTHROUGH_IS_RUNNING_AT_CREATION_BIT_FB, 0x00000001) \ - _(XR_PASSTHROUGH_LAYER_DEPTH_BIT_FB, 0x00000002) \ - -#define XR_LIST_BITS_XrPassthroughStateChangedFlagsFB(_) \ - _(XR_PASSTHROUGH_STATE_CHANGED_REINIT_REQUIRED_BIT_FB, 0x00000001) \ - _(XR_PASSTHROUGH_STATE_CHANGED_NON_RECOVERABLE_ERROR_BIT_FB, 0x00000002) \ - _(XR_PASSTHROUGH_STATE_CHANGED_RECOVERABLE_ERROR_BIT_FB, 0x00000004) \ - _(XR_PASSTHROUGH_STATE_CHANGED_RESTORED_ERROR_BIT_FB, 0x00000008) \ - -#define XR_LIST_BITS_XrRenderModelFlagsFB(_) \ - _(XR_RENDER_MODEL_SUPPORTS_GLTF_2_0_SUBSET_1_BIT_FB, 0x00000001) \ - _(XR_RENDER_MODEL_SUPPORTS_GLTF_2_0_SUBSET_2_BIT_FB, 0x00000002) \ - -#define XR_LIST_BITS_XrFrameEndInfoFlagsML(_) \ - _(XR_FRAME_END_INFO_PROTECTED_BIT_ML, 0x00000001) \ - _(XR_FRAME_END_INFO_VIGNETTE_BIT_ML, 0x00000002) \ - -#define XR_LIST_BITS_XrGlobalDimmerFrameEndInfoFlagsML(_) \ - _(XR_GLOBAL_DIMMER_FRAME_END_INFO_ENABLED_BIT_ML, 0x00000001) \ - -#define XR_LIST_BITS_XrLocalizationMapErrorFlagsML(_) \ - _(XR_LOCALIZATION_MAP_ERROR_UNKNOWN_BIT_ML, 0x00000001) \ - _(XR_LOCALIZATION_MAP_ERROR_OUT_OF_MAPPED_AREA_BIT_ML, 0x00000002) \ - _(XR_LOCALIZATION_MAP_ERROR_LOW_FEATURE_COUNT_BIT_ML, 0x00000004) \ - _(XR_LOCALIZATION_MAP_ERROR_EXCESSIVE_MOTION_BIT_ML, 0x00000008) \ - _(XR_LOCALIZATION_MAP_ERROR_LOW_LIGHT_BIT_ML, 0x00000010) \ - _(XR_LOCALIZATION_MAP_ERROR_HEADPOSE_BIT_ML, 0x00000020) \ - -#define XR_LIST_BITS_XrCompositionLayerSpaceWarpInfoFlagsFB(_) \ - _(XR_COMPOSITION_LAYER_SPACE_WARP_INFO_FRAME_SKIP_BIT_FB, 0x00000001) \ - -#define XR_LIST_BITS_XrSemanticLabelsSupportFlagsFB(_) \ - _(XR_SEMANTIC_LABELS_SUPPORT_MULTIPLE_SEMANTIC_LABELS_BIT_FB, 0x00000001) \ - _(XR_SEMANTIC_LABELS_SUPPORT_ACCEPT_DESK_TO_TABLE_MIGRATION_BIT_FB, 0x00000002) \ - _(XR_SEMANTIC_LABELS_SUPPORT_ACCEPT_INVISIBLE_WALL_FACE_BIT_FB, 0x00000004) \ - -#define XR_LIST_BITS_XrDigitalLensControlFlagsALMALENCE(_) \ - _(XR_DIGITAL_LENS_CONTROL_PROCESSING_DISABLE_BIT_ALMALENCE, 0x00000001) \ - -#define XR_LIST_BITS_XrFoveationEyeTrackedProfileCreateFlagsMETA(_) - -#define XR_LIST_BITS_XrFoveationEyeTrackedStateFlagsMETA(_) \ - _(XR_FOVEATION_EYE_TRACKED_STATE_VALID_BIT_META, 0x00000001) \ - -#define XR_LIST_BITS_XrCompositionLayerSettingsFlagsFB(_) \ - _(XR_COMPOSITION_LAYER_SETTINGS_NORMAL_SUPER_SAMPLING_BIT_FB, 0x00000001) \ - _(XR_COMPOSITION_LAYER_SETTINGS_QUALITY_SUPER_SAMPLING_BIT_FB, 0x00000002) \ - _(XR_COMPOSITION_LAYER_SETTINGS_NORMAL_SHARPENING_BIT_FB, 0x00000004) \ - _(XR_COMPOSITION_LAYER_SETTINGS_QUALITY_SHARPENING_BIT_FB, 0x00000008) \ - _(XR_COMPOSITION_LAYER_SETTINGS_AUTO_LAYER_FILTER_BIT_META, 0x00000020) \ - -#define XR_LIST_BITS_XrPassthroughPreferenceFlagsMETA(_) \ - _(XR_PASSTHROUGH_PREFERENCE_DEFAULT_TO_ACTIVE_BIT_META, 0x00000001) \ - -#define XR_LIST_BITS_XrVirtualKeyboardInputStateFlagsMETA(_) \ - _(XR_VIRTUAL_KEYBOARD_INPUT_STATE_PRESSED_BIT_META, 0x00000001) \ - -#define XR_LIST_BITS_XrExternalCameraStatusFlagsOCULUS(_) \ - _(XR_EXTERNAL_CAMERA_STATUS_CONNECTED_BIT_OCULUS, 0x00000001) \ - _(XR_EXTERNAL_CAMERA_STATUS_CALIBRATING_BIT_OCULUS, 0x00000002) \ - _(XR_EXTERNAL_CAMERA_STATUS_CALIBRATION_FAILED_BIT_OCULUS, 0x00000004) \ - _(XR_EXTERNAL_CAMERA_STATUS_CALIBRATED_BIT_OCULUS, 0x00000008) \ - _(XR_EXTERNAL_CAMERA_STATUS_CAPTURING_BIT_OCULUS, 0x00000010) \ - -#define XR_LIST_BITS_XrPerformanceMetricsCounterFlagsMETA(_) \ - _(XR_PERFORMANCE_METRICS_COUNTER_ANY_VALUE_VALID_BIT_META, 0x00000001) \ - _(XR_PERFORMANCE_METRICS_COUNTER_UINT_VALUE_VALID_BIT_META, 0x00000002) \ - _(XR_PERFORMANCE_METRICS_COUNTER_FLOAT_VALUE_VALID_BIT_META, 0x00000004) \ - -#define XR_LIST_BITS_XrEnvironmentDepthProviderCreateFlagsMETA(_) - -#define XR_LIST_BITS_XrEnvironmentDepthSwapchainCreateFlagsMETA(_) - -#define XR_LIST_BITS_XrFoveationDynamicFlagsHTC(_) \ - _(XR_FOVEATION_DYNAMIC_LEVEL_ENABLED_BIT_HTC, 0x00000001) \ - _(XR_FOVEATION_DYNAMIC_CLEAR_FOV_ENABLED_BIT_HTC, 0x00000002) \ - _(XR_FOVEATION_DYNAMIC_FOCAL_CENTER_OFFSET_ENABLED_BIT_HTC, 0x00000004) \ - -#define XR_LIST_BITS_XrPlaneDetectionCapabilityFlagsEXT(_) \ - _(XR_PLANE_DETECTION_CAPABILITY_PLANE_DETECTION_BIT_EXT, 0x00000001) \ - _(XR_PLANE_DETECTION_CAPABILITY_PLANE_HOLES_BIT_EXT, 0x00000002) \ - _(XR_PLANE_DETECTION_CAPABILITY_SEMANTIC_CEILING_BIT_EXT, 0x00000004) \ - _(XR_PLANE_DETECTION_CAPABILITY_SEMANTIC_FLOOR_BIT_EXT, 0x00000008) \ - _(XR_PLANE_DETECTION_CAPABILITY_SEMANTIC_WALL_BIT_EXT, 0x00000010) \ - _(XR_PLANE_DETECTION_CAPABILITY_SEMANTIC_PLATFORM_BIT_EXT, 0x00000020) \ - _(XR_PLANE_DETECTION_CAPABILITY_ORIENTATION_BIT_EXT, 0x00000040) \ - -#define XR_LIST_BITS_XrPlaneDetectorFlagsEXT(_) \ - _(XR_PLANE_DETECTOR_ENABLE_CONTOUR_BIT_EXT, 0x00000001) \ - -/// Calls your macro with the name of each member of XrApiLayerProperties, in order. -#define XR_LIST_STRUCT_XrApiLayerProperties(_) \ - _(type) \ - _(next) \ - _(layerName) \ - _(specVersion) \ - _(layerVersion) \ - _(description) \ - -/// Calls your macro with the name of each member of XrExtensionProperties, in order. -#define XR_LIST_STRUCT_XrExtensionProperties(_) \ - _(type) \ - _(next) \ - _(extensionName) \ - _(extensionVersion) \ - -/// Calls your macro with the name of each member of XrApplicationInfo, in order. -#define XR_LIST_STRUCT_XrApplicationInfo(_) \ - _(applicationName) \ - _(applicationVersion) \ - _(engineName) \ - _(engineVersion) \ - _(apiVersion) \ - -/// Calls your macro with the name of each member of XrInstanceCreateInfo, in order. -#define XR_LIST_STRUCT_XrInstanceCreateInfo(_) \ - _(type) \ - _(next) \ - _(createFlags) \ - _(applicationInfo) \ - _(enabledApiLayerCount) \ - _(enabledApiLayerNames) \ - _(enabledExtensionCount) \ - _(enabledExtensionNames) \ - -/// Calls your macro with the name of each member of XrInstanceProperties, in order. -#define XR_LIST_STRUCT_XrInstanceProperties(_) \ - _(type) \ - _(next) \ - _(runtimeVersion) \ - _(runtimeName) \ - -/// Calls your macro with the name of each member of XrEventDataBuffer, in order. -#define XR_LIST_STRUCT_XrEventDataBuffer(_) \ - _(type) \ - _(next) \ - _(varying) \ - -/// Calls your macro with the name of each member of XrSystemGetInfo, in order. -#define XR_LIST_STRUCT_XrSystemGetInfo(_) \ - _(type) \ - _(next) \ - _(formFactor) \ - -/// Calls your macro with the name of each member of XrSystemGraphicsProperties, in order. -#define XR_LIST_STRUCT_XrSystemGraphicsProperties(_) \ - _(maxSwapchainImageHeight) \ - _(maxSwapchainImageWidth) \ - _(maxLayerCount) \ - -/// Calls your macro with the name of each member of XrSystemTrackingProperties, in order. -#define XR_LIST_STRUCT_XrSystemTrackingProperties(_) \ - _(orientationTracking) \ - _(positionTracking) \ - -/// Calls your macro with the name of each member of XrSystemProperties, in order. -#define XR_LIST_STRUCT_XrSystemProperties(_) \ - _(type) \ - _(next) \ - _(systemId) \ - _(vendorId) \ - _(systemName) \ - _(graphicsProperties) \ - _(trackingProperties) \ - -/// Calls your macro with the name of each member of XrSessionCreateInfo, in order. -#define XR_LIST_STRUCT_XrSessionCreateInfo(_) \ - _(type) \ - _(next) \ - _(createFlags) \ - _(systemId) \ - -/// Calls your macro with the name of each member of XrVector3f, in order. -#define XR_LIST_STRUCT_XrVector3f(_) \ - _(x) \ - _(y) \ - _(z) \ - -/// Calls your macro with the name of each member of XrSpaceVelocity, in order. -#define XR_LIST_STRUCT_XrSpaceVelocity(_) \ - _(type) \ - _(next) \ - _(velocityFlags) \ - _(linearVelocity) \ - _(angularVelocity) \ - -/// Calls your macro with the name of each member of XrQuaternionf, in order. -#define XR_LIST_STRUCT_XrQuaternionf(_) \ - _(x) \ - _(y) \ - _(z) \ - _(w) \ - -/// Calls your macro with the name of each member of XrPosef, in order. -#define XR_LIST_STRUCT_XrPosef(_) \ - _(orientation) \ - _(position) \ - -/// Calls your macro with the name of each member of XrReferenceSpaceCreateInfo, in order. -#define XR_LIST_STRUCT_XrReferenceSpaceCreateInfo(_) \ - _(type) \ - _(next) \ - _(referenceSpaceType) \ - _(poseInReferenceSpace) \ - -/// Calls your macro with the name of each member of XrExtent2Df, in order. -#define XR_LIST_STRUCT_XrExtent2Df(_) \ - _(width) \ - _(height) \ - -/// Calls your macro with the name of each member of XrActionSpaceCreateInfo, in order. -#define XR_LIST_STRUCT_XrActionSpaceCreateInfo(_) \ - _(type) \ - _(next) \ - _(action) \ - _(subactionPath) \ - _(poseInActionSpace) \ - -/// Calls your macro with the name of each member of XrSpaceLocation, in order. -#define XR_LIST_STRUCT_XrSpaceLocation(_) \ - _(type) \ - _(next) \ - _(locationFlags) \ - _(pose) \ - -/// Calls your macro with the name of each member of XrViewConfigurationProperties, in order. -#define XR_LIST_STRUCT_XrViewConfigurationProperties(_) \ - _(type) \ - _(next) \ - _(viewConfigurationType) \ - _(fovMutable) \ - -/// Calls your macro with the name of each member of XrViewConfigurationView, in order. -#define XR_LIST_STRUCT_XrViewConfigurationView(_) \ - _(type) \ - _(next) \ - _(recommendedImageRectWidth) \ - _(maxImageRectWidth) \ - _(recommendedImageRectHeight) \ - _(maxImageRectHeight) \ - _(recommendedSwapchainSampleCount) \ - _(maxSwapchainSampleCount) \ - -/// Calls your macro with the name of each member of XrSwapchainCreateInfo, in order. -#define XR_LIST_STRUCT_XrSwapchainCreateInfo(_) \ - _(type) \ - _(next) \ - _(createFlags) \ - _(usageFlags) \ - _(format) \ - _(sampleCount) \ - _(width) \ - _(height) \ - _(faceCount) \ - _(arraySize) \ - _(mipCount) \ - -/// Calls your macro with the name of each member of XrSwapchainImageBaseHeader, in order. -#define XR_LIST_STRUCT_XrSwapchainImageBaseHeader(_) \ - _(type) \ - _(next) \ - -/// Calls your macro with the name of each member of XrSwapchainImageAcquireInfo, in order. -#define XR_LIST_STRUCT_XrSwapchainImageAcquireInfo(_) \ - _(type) \ - _(next) \ - -/// Calls your macro with the name of each member of XrSwapchainImageWaitInfo, in order. -#define XR_LIST_STRUCT_XrSwapchainImageWaitInfo(_) \ - _(type) \ - _(next) \ - _(timeout) \ - -/// Calls your macro with the name of each member of XrSwapchainImageReleaseInfo, in order. -#define XR_LIST_STRUCT_XrSwapchainImageReleaseInfo(_) \ - _(type) \ - _(next) \ - -/// Calls your macro with the name of each member of XrSessionBeginInfo, in order. -#define XR_LIST_STRUCT_XrSessionBeginInfo(_) \ - _(type) \ - _(next) \ - _(primaryViewConfigurationType) \ - -/// Calls your macro with the name of each member of XrFrameWaitInfo, in order. -#define XR_LIST_STRUCT_XrFrameWaitInfo(_) \ - _(type) \ - _(next) \ - -/// Calls your macro with the name of each member of XrFrameState, in order. -#define XR_LIST_STRUCT_XrFrameState(_) \ - _(type) \ - _(next) \ - _(predictedDisplayTime) \ - _(predictedDisplayPeriod) \ - _(shouldRender) \ - -/// Calls your macro with the name of each member of XrFrameBeginInfo, in order. -#define XR_LIST_STRUCT_XrFrameBeginInfo(_) \ - _(type) \ - _(next) \ - -/// Calls your macro with the name of each member of XrCompositionLayerBaseHeader, in order. -#define XR_LIST_STRUCT_XrCompositionLayerBaseHeader(_) \ - _(type) \ - _(next) \ - _(layerFlags) \ - _(space) \ - -/// Calls your macro with the name of each member of XrFrameEndInfo, in order. -#define XR_LIST_STRUCT_XrFrameEndInfo(_) \ - _(type) \ - _(next) \ - _(displayTime) \ - _(environmentBlendMode) \ - _(layerCount) \ - _(layers) \ - -/// Calls your macro with the name of each member of XrViewLocateInfo, in order. -#define XR_LIST_STRUCT_XrViewLocateInfo(_) \ - _(type) \ - _(next) \ - _(viewConfigurationType) \ - _(displayTime) \ - _(space) \ - -/// Calls your macro with the name of each member of XrViewState, in order. -#define XR_LIST_STRUCT_XrViewState(_) \ - _(type) \ - _(next) \ - _(viewStateFlags) \ - -/// Calls your macro with the name of each member of XrFovf, in order. -#define XR_LIST_STRUCT_XrFovf(_) \ - _(angleLeft) \ - _(angleRight) \ - _(angleUp) \ - _(angleDown) \ - -/// Calls your macro with the name of each member of XrView, in order. -#define XR_LIST_STRUCT_XrView(_) \ - _(type) \ - _(next) \ - _(pose) \ - _(fov) \ - -/// Calls your macro with the name of each member of XrActionSetCreateInfo, in order. -#define XR_LIST_STRUCT_XrActionSetCreateInfo(_) \ - _(type) \ - _(next) \ - _(actionSetName) \ - _(localizedActionSetName) \ - _(priority) \ - -/// Calls your macro with the name of each member of XrActionCreateInfo, in order. -#define XR_LIST_STRUCT_XrActionCreateInfo(_) \ - _(type) \ - _(next) \ - _(actionName) \ - _(actionType) \ - _(countSubactionPaths) \ - _(subactionPaths) \ - _(localizedActionName) \ - -/// Calls your macro with the name of each member of XrActionSuggestedBinding, in order. -#define XR_LIST_STRUCT_XrActionSuggestedBinding(_) \ - _(action) \ - _(binding) \ - -/// Calls your macro with the name of each member of XrInteractionProfileSuggestedBinding, in order. -#define XR_LIST_STRUCT_XrInteractionProfileSuggestedBinding(_) \ - _(type) \ - _(next) \ - _(interactionProfile) \ - _(countSuggestedBindings) \ - _(suggestedBindings) \ - -/// Calls your macro with the name of each member of XrSessionActionSetsAttachInfo, in order. -#define XR_LIST_STRUCT_XrSessionActionSetsAttachInfo(_) \ - _(type) \ - _(next) \ - _(countActionSets) \ - _(actionSets) \ - -/// Calls your macro with the name of each member of XrInteractionProfileState, in order. -#define XR_LIST_STRUCT_XrInteractionProfileState(_) \ - _(type) \ - _(next) \ - _(interactionProfile) \ - -/// Calls your macro with the name of each member of XrActionStateGetInfo, in order. -#define XR_LIST_STRUCT_XrActionStateGetInfo(_) \ - _(type) \ - _(next) \ - _(action) \ - _(subactionPath) \ - -/// Calls your macro with the name of each member of XrActionStateBoolean, in order. -#define XR_LIST_STRUCT_XrActionStateBoolean(_) \ - _(type) \ - _(next) \ - _(currentState) \ - _(changedSinceLastSync) \ - _(lastChangeTime) \ - _(isActive) \ - -/// Calls your macro with the name of each member of XrActionStateFloat, in order. -#define XR_LIST_STRUCT_XrActionStateFloat(_) \ - _(type) \ - _(next) \ - _(currentState) \ - _(changedSinceLastSync) \ - _(lastChangeTime) \ - _(isActive) \ - -/// Calls your macro with the name of each member of XrVector2f, in order. -#define XR_LIST_STRUCT_XrVector2f(_) \ - _(x) \ - _(y) \ - -/// Calls your macro with the name of each member of XrActionStateVector2f, in order. -#define XR_LIST_STRUCT_XrActionStateVector2f(_) \ - _(type) \ - _(next) \ - _(currentState) \ - _(changedSinceLastSync) \ - _(lastChangeTime) \ - _(isActive) \ - -/// Calls your macro with the name of each member of XrActionStatePose, in order. -#define XR_LIST_STRUCT_XrActionStatePose(_) \ - _(type) \ - _(next) \ - _(isActive) \ - -/// Calls your macro with the name of each member of XrActiveActionSet, in order. -#define XR_LIST_STRUCT_XrActiveActionSet(_) \ - _(actionSet) \ - _(subactionPath) \ - -/// Calls your macro with the name of each member of XrActionsSyncInfo, in order. -#define XR_LIST_STRUCT_XrActionsSyncInfo(_) \ - _(type) \ - _(next) \ - _(countActiveActionSets) \ - _(activeActionSets) \ - -/// Calls your macro with the name of each member of XrBoundSourcesForActionEnumerateInfo, in order. -#define XR_LIST_STRUCT_XrBoundSourcesForActionEnumerateInfo(_) \ - _(type) \ - _(next) \ - _(action) \ - -/// Calls your macro with the name of each member of XrInputSourceLocalizedNameGetInfo, in order. -#define XR_LIST_STRUCT_XrInputSourceLocalizedNameGetInfo(_) \ - _(type) \ - _(next) \ - _(sourcePath) \ - _(whichComponents) \ - -/// Calls your macro with the name of each member of XrHapticActionInfo, in order. -#define XR_LIST_STRUCT_XrHapticActionInfo(_) \ - _(type) \ - _(next) \ - _(action) \ - _(subactionPath) \ - -/// Calls your macro with the name of each member of XrHapticBaseHeader, in order. -#define XR_LIST_STRUCT_XrHapticBaseHeader(_) \ - _(type) \ - _(next) \ - -/// Calls your macro with the name of each member of XrBaseInStructure, in order. -#define XR_LIST_STRUCT_XrBaseInStructure(_) \ - _(type) \ - _(next) \ - -/// Calls your macro with the name of each member of XrBaseOutStructure, in order. -#define XR_LIST_STRUCT_XrBaseOutStructure(_) \ - _(type) \ - _(next) \ - -/// Calls your macro with the name of each member of XrOffset2Di, in order. -#define XR_LIST_STRUCT_XrOffset2Di(_) \ - _(x) \ - _(y) \ - -/// Calls your macro with the name of each member of XrExtent2Di, in order. -#define XR_LIST_STRUCT_XrExtent2Di(_) \ - _(width) \ - _(height) \ - -/// Calls your macro with the name of each member of XrRect2Di, in order. -#define XR_LIST_STRUCT_XrRect2Di(_) \ - _(offset) \ - _(extent) \ - -/// Calls your macro with the name of each member of XrSwapchainSubImage, in order. -#define XR_LIST_STRUCT_XrSwapchainSubImage(_) \ - _(swapchain) \ - _(imageRect) \ - _(imageArrayIndex) \ - -/// Calls your macro with the name of each member of XrCompositionLayerProjectionView, in order. -#define XR_LIST_STRUCT_XrCompositionLayerProjectionView(_) \ - _(type) \ - _(next) \ - _(pose) \ - _(fov) \ - _(subImage) \ - -/// Calls your macro with the name of each member of XrCompositionLayerProjection, in order. -#define XR_LIST_STRUCT_XrCompositionLayerProjection(_) \ - _(type) \ - _(next) \ - _(layerFlags) \ - _(space) \ - _(viewCount) \ - _(views) \ - -/// Calls your macro with the name of each member of XrCompositionLayerQuad, in order. -#define XR_LIST_STRUCT_XrCompositionLayerQuad(_) \ - _(type) \ - _(next) \ - _(layerFlags) \ - _(space) \ - _(eyeVisibility) \ - _(subImage) \ - _(pose) \ - _(size) \ - -/// Calls your macro with the name of each member of XrEventDataBaseHeader, in order. -#define XR_LIST_STRUCT_XrEventDataBaseHeader(_) \ - _(type) \ - _(next) \ - -/// Calls your macro with the name of each member of XrEventDataEventsLost, in order. -#define XR_LIST_STRUCT_XrEventDataEventsLost(_) \ - _(type) \ - _(next) \ - _(lostEventCount) \ - -/// Calls your macro with the name of each member of XrEventDataInstanceLossPending, in order. -#define XR_LIST_STRUCT_XrEventDataInstanceLossPending(_) \ - _(type) \ - _(next) \ - _(lossTime) \ - -/// Calls your macro with the name of each member of XrEventDataSessionStateChanged, in order. -#define XR_LIST_STRUCT_XrEventDataSessionStateChanged(_) \ - _(type) \ - _(next) \ - _(session) \ - _(state) \ - _(time) \ - -/// Calls your macro with the name of each member of XrEventDataReferenceSpaceChangePending, in order. -#define XR_LIST_STRUCT_XrEventDataReferenceSpaceChangePending(_) \ - _(type) \ - _(next) \ - _(session) \ - _(referenceSpaceType) \ - _(changeTime) \ - _(poseValid) \ - _(poseInPreviousSpace) \ - -/// Calls your macro with the name of each member of XrEventDataInteractionProfileChanged, in order. -#define XR_LIST_STRUCT_XrEventDataInteractionProfileChanged(_) \ - _(type) \ - _(next) \ - _(session) \ - -/// Calls your macro with the name of each member of XrHapticVibration, in order. -#define XR_LIST_STRUCT_XrHapticVibration(_) \ - _(type) \ - _(next) \ - _(duration) \ - _(frequency) \ - _(amplitude) \ - -/// Calls your macro with the name of each member of XrOffset2Df, in order. -#define XR_LIST_STRUCT_XrOffset2Df(_) \ - _(x) \ - _(y) \ - -/// Calls your macro with the name of each member of XrRect2Df, in order. -#define XR_LIST_STRUCT_XrRect2Df(_) \ - _(offset) \ - _(extent) \ - -/// Calls your macro with the name of each member of XrVector4f, in order. -#define XR_LIST_STRUCT_XrVector4f(_) \ - _(x) \ - _(y) \ - _(z) \ - _(w) \ - -/// Calls your macro with the name of each member of XrColor4f, in order. -#define XR_LIST_STRUCT_XrColor4f(_) \ - _(r) \ - _(g) \ - _(b) \ - _(a) \ - -/// Calls your macro with the name of each member of XrApiLayerNextInfo, in order. -#define XR_LIST_STRUCT_XrApiLayerNextInfo(_) \ - _(structType) \ - _(structVersion) \ - _(structSize) \ - _(layerName) \ - _(nextGetInstanceProcAddr) \ - _(nextCreateApiLayerInstance) \ - _(next) \ - -/// Calls your macro with the name of each member of XrApiLayerCreateInfo, in order. -#define XR_LIST_STRUCT_XrApiLayerCreateInfo(_) \ - _(structType) \ - _(structVersion) \ - _(structSize) \ - _(loaderInstance) \ - _(settings_file_location) \ - _(nextInfo) \ - -/// Calls your macro with the name of each member of XrNegotiateLoaderInfo, in order. -#define XR_LIST_STRUCT_XrNegotiateLoaderInfo(_) \ - _(structType) \ - _(structVersion) \ - _(structSize) \ - _(minInterfaceVersion) \ - _(maxInterfaceVersion) \ - _(minApiVersion) \ - _(maxApiVersion) \ - -/// Calls your macro with the name of each member of XrNegotiateRuntimeRequest, in order. -#define XR_LIST_STRUCT_XrNegotiateRuntimeRequest(_) \ - _(structType) \ - _(structVersion) \ - _(structSize) \ - _(runtimeInterfaceVersion) \ - _(runtimeApiVersion) \ - _(getInstanceProcAddr) \ - -/// Calls your macro with the name of each member of XrNegotiateApiLayerRequest, in order. -#define XR_LIST_STRUCT_XrNegotiateApiLayerRequest(_) \ - _(structType) \ - _(structVersion) \ - _(structSize) \ - _(layerInterfaceVersion) \ - _(layerApiVersion) \ - _(getInstanceProcAddr) \ - _(createApiLayerInstance) \ - -/// Calls your macro with the name of each member of XrColor3f, in order. -#define XR_LIST_STRUCT_XrColor3f(_) \ - _(r) \ - _(g) \ - _(b) \ - -/// Calls your macro with the name of each member of XrExtent3Df, in order. -#define XR_LIST_STRUCT_XrExtent3Df(_) \ - _(width) \ - _(height) \ - _(depth) \ - -/// Calls your macro with the name of each member of XrSpheref, in order. -#define XR_LIST_STRUCT_XrSpheref(_) \ - _(center) \ - _(radius) \ - -/// Calls your macro with the name of each member of XrBoxf, in order. -#define XR_LIST_STRUCT_XrBoxf(_) \ - _(center) \ - _(extents) \ - -/// Calls your macro with the name of each member of XrFrustumf, in order. -#define XR_LIST_STRUCT_XrFrustumf(_) \ - _(pose) \ - _(fov) \ - _(nearZ) \ - _(farZ) \ - -/// Calls your macro with the name of each member of XrUuid, in order. -#define XR_LIST_STRUCT_XrUuid(_) \ - _(data) \ - -/// Calls your macro with the name of each member of XrSpacesLocateInfo, in order. -#define XR_LIST_STRUCT_XrSpacesLocateInfo(_) \ - _(type) \ - _(next) \ - _(baseSpace) \ - _(time) \ - _(spaceCount) \ - _(spaces) \ - -/// Calls your macro with the name of each member of XrSpaceLocationData, in order. -#define XR_LIST_STRUCT_XrSpaceLocationData(_) \ - _(locationFlags) \ - _(pose) \ - -/// Calls your macro with the name of each member of XrSpaceLocations, in order. -#define XR_LIST_STRUCT_XrSpaceLocations(_) \ - _(type) \ - _(next) \ - _(locationCount) \ - _(locations) \ - -/// Calls your macro with the name of each member of XrSpaceVelocityData, in order. -#define XR_LIST_STRUCT_XrSpaceVelocityData(_) \ - _(velocityFlags) \ - _(linearVelocity) \ - _(angularVelocity) \ - -/// Calls your macro with the name of each member of XrSpaceVelocities, in order. -#define XR_LIST_STRUCT_XrSpaceVelocities(_) \ - _(type) \ - _(next) \ - _(velocityCount) \ - _(velocities) \ - -/// Calls your macro with the name of each member of XrCompositionLayerCubeKHR, in order. -#define XR_LIST_STRUCT_XrCompositionLayerCubeKHR(_) \ - _(type) \ - _(next) \ - _(layerFlags) \ - _(space) \ - _(eyeVisibility) \ - _(swapchain) \ - _(imageArrayIndex) \ - _(orientation) \ - -/// Calls your macro with the name of each member of XrInstanceCreateInfoAndroidKHR, in order. -#define XR_LIST_STRUCT_XrInstanceCreateInfoAndroidKHR(_) \ - _(type) \ - _(next) \ - _(applicationVM) \ - _(applicationActivity) \ - -/// Calls your macro with the name of each member of XrCompositionLayerDepthInfoKHR, in order. -#define XR_LIST_STRUCT_XrCompositionLayerDepthInfoKHR(_) \ - _(type) \ - _(next) \ - _(subImage) \ - _(minDepth) \ - _(maxDepth) \ - _(nearZ) \ - _(farZ) \ - -/// Calls your macro with the name of each member of XrVulkanSwapchainFormatListCreateInfoKHR, in order. -#define XR_LIST_STRUCT_XrVulkanSwapchainFormatListCreateInfoKHR(_) \ - _(type) \ - _(next) \ - _(viewFormatCount) \ - _(viewFormats) \ - -/// Calls your macro with the name of each member of XrCompositionLayerCylinderKHR, in order. -#define XR_LIST_STRUCT_XrCompositionLayerCylinderKHR(_) \ - _(type) \ - _(next) \ - _(layerFlags) \ - _(space) \ - _(eyeVisibility) \ - _(subImage) \ - _(pose) \ - _(radius) \ - _(centralAngle) \ - _(aspectRatio) \ - -/// Calls your macro with the name of each member of XrCompositionLayerEquirectKHR, in order. -#define XR_LIST_STRUCT_XrCompositionLayerEquirectKHR(_) \ - _(type) \ - _(next) \ - _(layerFlags) \ - _(space) \ - _(eyeVisibility) \ - _(subImage) \ - _(pose) \ - _(radius) \ - _(scale) \ - _(bias) \ - -/// Calls your macro with the name of each member of XrGraphicsBindingOpenGLWin32KHR, in order. -#define XR_LIST_STRUCT_XrGraphicsBindingOpenGLWin32KHR(_) \ - _(type) \ - _(next) \ - _(hDC) \ - _(hGLRC) \ - -/// Calls your macro with the name of each member of XrGraphicsBindingOpenGLXlibKHR, in order. -#define XR_LIST_STRUCT_XrGraphicsBindingOpenGLXlibKHR(_) \ - _(type) \ - _(next) \ - _(xDisplay) \ - _(visualid) \ - _(glxFBConfig) \ - _(glxDrawable) \ - _(glxContext) \ - -/// Calls your macro with the name of each member of XrGraphicsBindingOpenGLXcbKHR, in order. -#define XR_LIST_STRUCT_XrGraphicsBindingOpenGLXcbKHR(_) \ - _(type) \ - _(next) \ - _(connection) \ - _(screenNumber) \ - _(fbconfigid) \ - _(visualid) \ - _(glxDrawable) \ - _(glxContext) \ - -/// Calls your macro with the name of each member of XrGraphicsBindingOpenGLWaylandKHR, in order. -#define XR_LIST_STRUCT_XrGraphicsBindingOpenGLWaylandKHR(_) \ - _(type) \ - _(next) \ - _(display) \ - -/// Calls your macro with the name of each member of XrSwapchainImageOpenGLKHR, in order. -#define XR_LIST_STRUCT_XrSwapchainImageOpenGLKHR(_) \ - _(type) \ - _(next) \ - _(image) \ - -/// Calls your macro with the name of each member of XrGraphicsRequirementsOpenGLKHR, in order. -#define XR_LIST_STRUCT_XrGraphicsRequirementsOpenGLKHR(_) \ - _(type) \ - _(next) \ - _(minApiVersionSupported) \ - _(maxApiVersionSupported) \ - -/// Calls your macro with the name of each member of XrGraphicsBindingOpenGLESAndroidKHR, in order. -#define XR_LIST_STRUCT_XrGraphicsBindingOpenGLESAndroidKHR(_) \ - _(type) \ - _(next) \ - _(display) \ - _(config) \ - _(context) \ - -/// Calls your macro with the name of each member of XrSwapchainImageOpenGLESKHR, in order. -#define XR_LIST_STRUCT_XrSwapchainImageOpenGLESKHR(_) \ - _(type) \ - _(next) \ - _(image) \ - -/// Calls your macro with the name of each member of XrGraphicsRequirementsOpenGLESKHR, in order. -#define XR_LIST_STRUCT_XrGraphicsRequirementsOpenGLESKHR(_) \ - _(type) \ - _(next) \ - _(minApiVersionSupported) \ - _(maxApiVersionSupported) \ - -/// Calls your macro with the name of each member of XrGraphicsBindingVulkanKHR, in order. -#define XR_LIST_STRUCT_XrGraphicsBindingVulkanKHR(_) \ - _(type) \ - _(next) \ - _(instance) \ - _(physicalDevice) \ - _(device) \ - _(queueFamilyIndex) \ - _(queueIndex) \ - -/// Calls your macro with the name of each member of XrSwapchainImageVulkanKHR, in order. -#define XR_LIST_STRUCT_XrSwapchainImageVulkanKHR(_) \ - _(type) \ - _(next) \ - _(image) \ - -/// Calls your macro with the name of each member of XrGraphicsRequirementsVulkanKHR, in order. -#define XR_LIST_STRUCT_XrGraphicsRequirementsVulkanKHR(_) \ - _(type) \ - _(next) \ - _(minApiVersionSupported) \ - _(maxApiVersionSupported) \ - -/// Calls your macro with the name of each member of XrGraphicsBindingD3D11KHR, in order. -#define XR_LIST_STRUCT_XrGraphicsBindingD3D11KHR(_) \ - _(type) \ - _(next) \ - _(device) \ - -/// Calls your macro with the name of each member of XrSwapchainImageD3D11KHR, in order. -#define XR_LIST_STRUCT_XrSwapchainImageD3D11KHR(_) \ - _(type) \ - _(next) \ - _(texture) \ - -/// Calls your macro with the name of each member of XrGraphicsRequirementsD3D11KHR, in order. -#define XR_LIST_STRUCT_XrGraphicsRequirementsD3D11KHR(_) \ - _(type) \ - _(next) \ - _(adapterLuid) \ - _(minFeatureLevel) \ - -/// Calls your macro with the name of each member of XrGraphicsBindingD3D12KHR, in order. -#define XR_LIST_STRUCT_XrGraphicsBindingD3D12KHR(_) \ - _(type) \ - _(next) \ - _(device) \ - _(queue) \ - -/// Calls your macro with the name of each member of XrSwapchainImageD3D12KHR, in order. -#define XR_LIST_STRUCT_XrSwapchainImageD3D12KHR(_) \ - _(type) \ - _(next) \ - _(texture) \ - -/// Calls your macro with the name of each member of XrGraphicsRequirementsD3D12KHR, in order. -#define XR_LIST_STRUCT_XrGraphicsRequirementsD3D12KHR(_) \ - _(type) \ - _(next) \ - _(adapterLuid) \ - _(minFeatureLevel) \ - -/// Calls your macro with the name of each member of XrVisibilityMaskKHR, in order. -#define XR_LIST_STRUCT_XrVisibilityMaskKHR(_) \ - _(type) \ - _(next) \ - _(vertexCapacityInput) \ - _(vertexCountOutput) \ - _(vertices) \ - _(indexCapacityInput) \ - _(indexCountOutput) \ - _(indices) \ - -/// Calls your macro with the name of each member of XrEventDataVisibilityMaskChangedKHR, in order. -#define XR_LIST_STRUCT_XrEventDataVisibilityMaskChangedKHR(_) \ - _(type) \ - _(next) \ - _(session) \ - _(viewConfigurationType) \ - _(viewIndex) \ - -/// Calls your macro with the name of each member of XrCompositionLayerColorScaleBiasKHR, in order. -#define XR_LIST_STRUCT_XrCompositionLayerColorScaleBiasKHR(_) \ - _(type) \ - _(next) \ - _(colorScale) \ - _(colorBias) \ - -/// Calls your macro with the name of each member of XrLoaderInitInfoBaseHeaderKHR, in order. -#define XR_LIST_STRUCT_XrLoaderInitInfoBaseHeaderKHR(_) \ - _(type) \ - _(next) \ - -/// Calls your macro with the name of each member of XrLoaderInitInfoAndroidKHR, in order. -#define XR_LIST_STRUCT_XrLoaderInitInfoAndroidKHR(_) \ - _(type) \ - _(next) \ - _(applicationVM) \ - _(applicationContext) \ - -/// Calls your macro with the name of each member of XrVulkanInstanceCreateInfoKHR, in order. -#define XR_LIST_STRUCT_XrVulkanInstanceCreateInfoKHR(_) \ - _(type) \ - _(next) \ - _(systemId) \ - _(createFlags) \ - _(pfnGetInstanceProcAddr) \ - _(vulkanCreateInfo) \ - _(vulkanAllocator) \ - -/// Calls your macro with the name of each member of XrVulkanDeviceCreateInfoKHR, in order. -#define XR_LIST_STRUCT_XrVulkanDeviceCreateInfoKHR(_) \ - _(type) \ - _(next) \ - _(systemId) \ - _(createFlags) \ - _(pfnGetInstanceProcAddr) \ - _(vulkanPhysicalDevice) \ - _(vulkanCreateInfo) \ - _(vulkanAllocator) \ - -/// Calls your macro with the name of each member of XrVulkanGraphicsDeviceGetInfoKHR, in order. -#define XR_LIST_STRUCT_XrVulkanGraphicsDeviceGetInfoKHR(_) \ - _(type) \ - _(next) \ - _(systemId) \ - _(vulkanInstance) \ - -/// Calls your macro with the name of each member of XrCompositionLayerEquirect2KHR, in order. -#define XR_LIST_STRUCT_XrCompositionLayerEquirect2KHR(_) \ - _(type) \ - _(next) \ - _(layerFlags) \ - _(space) \ - _(eyeVisibility) \ - _(subImage) \ - _(pose) \ - _(radius) \ - _(centralHorizontalAngle) \ - _(upperVerticalAngle) \ - _(lowerVerticalAngle) \ - -/// Calls your macro with the name of each member of XrBindingModificationBaseHeaderKHR, in order. -#define XR_LIST_STRUCT_XrBindingModificationBaseHeaderKHR(_) \ - _(type) \ - _(next) \ - -/// Calls your macro with the name of each member of XrBindingModificationsKHR, in order. -#define XR_LIST_STRUCT_XrBindingModificationsKHR(_) \ - _(type) \ - _(next) \ - _(bindingModificationCount) \ - _(bindingModifications) \ - -/// Calls your macro with the name of each member of XrEventDataPerfSettingsEXT, in order. -#define XR_LIST_STRUCT_XrEventDataPerfSettingsEXT(_) \ - _(type) \ - _(next) \ - _(domain) \ - _(subDomain) \ - _(fromLevel) \ - _(toLevel) \ - -/// Calls your macro with the name of each member of XrDebugUtilsObjectNameInfoEXT, in order. -#define XR_LIST_STRUCT_XrDebugUtilsObjectNameInfoEXT(_) \ - _(type) \ - _(next) \ - _(objectType) \ - _(objectHandle) \ - _(objectName) \ - -/// Calls your macro with the name of each member of XrDebugUtilsLabelEXT, in order. -#define XR_LIST_STRUCT_XrDebugUtilsLabelEXT(_) \ - _(type) \ - _(next) \ - _(labelName) \ - -/// Calls your macro with the name of each member of XrDebugUtilsMessengerCallbackDataEXT, in order. -#define XR_LIST_STRUCT_XrDebugUtilsMessengerCallbackDataEXT(_) \ - _(type) \ - _(next) \ - _(messageId) \ - _(functionName) \ - _(message) \ - _(objectCount) \ - _(objects) \ - _(sessionLabelCount) \ - _(sessionLabels) \ - -/// Calls your macro with the name of each member of XrDebugUtilsMessengerCreateInfoEXT, in order. -#define XR_LIST_STRUCT_XrDebugUtilsMessengerCreateInfoEXT(_) \ - _(type) \ - _(next) \ - _(messageSeverities) \ - _(messageTypes) \ - _(userCallback) \ - _(userData) \ - -/// Calls your macro with the name of each member of XrSystemEyeGazeInteractionPropertiesEXT, in order. -#define XR_LIST_STRUCT_XrSystemEyeGazeInteractionPropertiesEXT(_) \ - _(type) \ - _(next) \ - _(supportsEyeGazeInteraction) \ - -/// Calls your macro with the name of each member of XrEyeGazeSampleTimeEXT, in order. -#define XR_LIST_STRUCT_XrEyeGazeSampleTimeEXT(_) \ - _(type) \ - _(next) \ - _(time) \ - -/// Calls your macro with the name of each member of XrSessionCreateInfoOverlayEXTX, in order. -#define XR_LIST_STRUCT_XrSessionCreateInfoOverlayEXTX(_) \ - _(type) \ - _(next) \ - _(createFlags) \ - _(sessionLayersPlacement) \ - -/// Calls your macro with the name of each member of XrEventDataMainSessionVisibilityChangedEXTX, in order. -#define XR_LIST_STRUCT_XrEventDataMainSessionVisibilityChangedEXTX(_) \ - _(type) \ - _(next) \ - _(visible) \ - _(flags) \ - -/// Calls your macro with the name of each member of XrSpatialAnchorCreateInfoMSFT, in order. -#define XR_LIST_STRUCT_XrSpatialAnchorCreateInfoMSFT(_) \ - _(type) \ - _(next) \ - _(space) \ - _(pose) \ - _(time) \ - -/// Calls your macro with the name of each member of XrSpatialAnchorSpaceCreateInfoMSFT, in order. -#define XR_LIST_STRUCT_XrSpatialAnchorSpaceCreateInfoMSFT(_) \ - _(type) \ - _(next) \ - _(anchor) \ - _(poseInAnchorSpace) \ - -/// Calls your macro with the name of each member of XrCompositionLayerImageLayoutFB, in order. -#define XR_LIST_STRUCT_XrCompositionLayerImageLayoutFB(_) \ - _(type) \ - _(next) \ - _(flags) \ - -/// Calls your macro with the name of each member of XrCompositionLayerAlphaBlendFB, in order. -#define XR_LIST_STRUCT_XrCompositionLayerAlphaBlendFB(_) \ - _(type) \ - _(next) \ - _(srcFactorColor) \ - _(dstFactorColor) \ - _(srcFactorAlpha) \ - _(dstFactorAlpha) \ - -/// Calls your macro with the name of each member of XrViewConfigurationDepthRangeEXT, in order. -#define XR_LIST_STRUCT_XrViewConfigurationDepthRangeEXT(_) \ - _(type) \ - _(next) \ - _(recommendedNearZ) \ - _(minNearZ) \ - _(recommendedFarZ) \ - _(maxFarZ) \ - -/// Calls your macro with the name of each member of XrGraphicsBindingEGLMNDX, in order. -#define XR_LIST_STRUCT_XrGraphicsBindingEGLMNDX(_) \ - _(type) \ - _(next) \ - _(getProcAddress) \ - _(display) \ - _(config) \ - _(context) \ - -/// Calls your macro with the name of each member of XrSpatialGraphNodeSpaceCreateInfoMSFT, in order. -#define XR_LIST_STRUCT_XrSpatialGraphNodeSpaceCreateInfoMSFT(_) \ - _(type) \ - _(next) \ - _(nodeType) \ - _(nodeId) \ - _(pose) \ - -/// Calls your macro with the name of each member of XrSpatialGraphStaticNodeBindingCreateInfoMSFT, in order. -#define XR_LIST_STRUCT_XrSpatialGraphStaticNodeBindingCreateInfoMSFT(_) \ - _(type) \ - _(next) \ - _(space) \ - _(poseInSpace) \ - _(time) \ - -/// Calls your macro with the name of each member of XrSpatialGraphNodeBindingPropertiesGetInfoMSFT, in order. -#define XR_LIST_STRUCT_XrSpatialGraphNodeBindingPropertiesGetInfoMSFT(_) \ - _(type) \ - _(next) \ - -/// Calls your macro with the name of each member of XrSpatialGraphNodeBindingPropertiesMSFT, in order. -#define XR_LIST_STRUCT_XrSpatialGraphNodeBindingPropertiesMSFT(_) \ - _(type) \ - _(next) \ - _(nodeId) \ - _(poseInNodeSpace) \ - -/// Calls your macro with the name of each member of XrSystemHandTrackingPropertiesEXT, in order. -#define XR_LIST_STRUCT_XrSystemHandTrackingPropertiesEXT(_) \ - _(type) \ - _(next) \ - _(supportsHandTracking) \ - -/// Calls your macro with the name of each member of XrHandTrackerCreateInfoEXT, in order. -#define XR_LIST_STRUCT_XrHandTrackerCreateInfoEXT(_) \ - _(type) \ - _(next) \ - _(hand) \ - _(handJointSet) \ - -/// Calls your macro with the name of each member of XrHandJointsLocateInfoEXT, in order. -#define XR_LIST_STRUCT_XrHandJointsLocateInfoEXT(_) \ - _(type) \ - _(next) \ - _(baseSpace) \ - _(time) \ - -/// Calls your macro with the name of each member of XrHandJointLocationEXT, in order. -#define XR_LIST_STRUCT_XrHandJointLocationEXT(_) \ - _(locationFlags) \ - _(pose) \ - _(radius) \ - -/// Calls your macro with the name of each member of XrHandJointVelocityEXT, in order. -#define XR_LIST_STRUCT_XrHandJointVelocityEXT(_) \ - _(velocityFlags) \ - _(linearVelocity) \ - _(angularVelocity) \ - -/// Calls your macro with the name of each member of XrHandJointLocationsEXT, in order. -#define XR_LIST_STRUCT_XrHandJointLocationsEXT(_) \ - _(type) \ - _(next) \ - _(isActive) \ - _(jointCount) \ - _(jointLocations) \ - -/// Calls your macro with the name of each member of XrHandJointVelocitiesEXT, in order. -#define XR_LIST_STRUCT_XrHandJointVelocitiesEXT(_) \ - _(type) \ - _(next) \ - _(jointCount) \ - _(jointVelocities) \ - -/// Calls your macro with the name of each member of XrSystemHandTrackingMeshPropertiesMSFT, in order. -#define XR_LIST_STRUCT_XrSystemHandTrackingMeshPropertiesMSFT(_) \ - _(type) \ - _(next) \ - _(supportsHandTrackingMesh) \ - _(maxHandMeshIndexCount) \ - _(maxHandMeshVertexCount) \ - -/// Calls your macro with the name of each member of XrHandMeshSpaceCreateInfoMSFT, in order. -#define XR_LIST_STRUCT_XrHandMeshSpaceCreateInfoMSFT(_) \ - _(type) \ - _(next) \ - _(handPoseType) \ - _(poseInHandMeshSpace) \ - -/// Calls your macro with the name of each member of XrHandMeshUpdateInfoMSFT, in order. -#define XR_LIST_STRUCT_XrHandMeshUpdateInfoMSFT(_) \ - _(type) \ - _(next) \ - _(time) \ - _(handPoseType) \ - -/// Calls your macro with the name of each member of XrHandMeshIndexBufferMSFT, in order. -#define XR_LIST_STRUCT_XrHandMeshIndexBufferMSFT(_) \ - _(indexBufferKey) \ - _(indexCapacityInput) \ - _(indexCountOutput) \ - _(indices) \ - -/// Calls your macro with the name of each member of XrHandMeshVertexMSFT, in order. -#define XR_LIST_STRUCT_XrHandMeshVertexMSFT(_) \ - _(position) \ - _(normal) \ - -/// Calls your macro with the name of each member of XrHandMeshVertexBufferMSFT, in order. -#define XR_LIST_STRUCT_XrHandMeshVertexBufferMSFT(_) \ - _(vertexUpdateTime) \ - _(vertexCapacityInput) \ - _(vertexCountOutput) \ - _(vertices) \ - -/// Calls your macro with the name of each member of XrHandMeshMSFT, in order. -#define XR_LIST_STRUCT_XrHandMeshMSFT(_) \ - _(type) \ - _(next) \ - _(isActive) \ - _(indexBufferChanged) \ - _(vertexBufferChanged) \ - _(indexBuffer) \ - _(vertexBuffer) \ - -/// Calls your macro with the name of each member of XrHandPoseTypeInfoMSFT, in order. -#define XR_LIST_STRUCT_XrHandPoseTypeInfoMSFT(_) \ - _(type) \ - _(next) \ - _(handPoseType) \ - -/// Calls your macro with the name of each member of XrSecondaryViewConfigurationSessionBeginInfoMSFT, in order. -#define XR_LIST_STRUCT_XrSecondaryViewConfigurationSessionBeginInfoMSFT(_) \ - _(type) \ - _(next) \ - _(viewConfigurationCount) \ - _(enabledViewConfigurationTypes) \ - -/// Calls your macro with the name of each member of XrSecondaryViewConfigurationStateMSFT, in order. -#define XR_LIST_STRUCT_XrSecondaryViewConfigurationStateMSFT(_) \ - _(type) \ - _(next) \ - _(viewConfigurationType) \ - _(active) \ - -/// Calls your macro with the name of each member of XrSecondaryViewConfigurationFrameStateMSFT, in order. -#define XR_LIST_STRUCT_XrSecondaryViewConfigurationFrameStateMSFT(_) \ - _(type) \ - _(next) \ - _(viewConfigurationCount) \ - _(viewConfigurationStates) \ - -/// Calls your macro with the name of each member of XrSecondaryViewConfigurationLayerInfoMSFT, in order. -#define XR_LIST_STRUCT_XrSecondaryViewConfigurationLayerInfoMSFT(_) \ - _(type) \ - _(next) \ - _(viewConfigurationType) \ - _(environmentBlendMode) \ - _(layerCount) \ - _(layers) \ - -/// Calls your macro with the name of each member of XrSecondaryViewConfigurationFrameEndInfoMSFT, in order. -#define XR_LIST_STRUCT_XrSecondaryViewConfigurationFrameEndInfoMSFT(_) \ - _(type) \ - _(next) \ - _(viewConfigurationCount) \ - _(viewConfigurationLayersInfo) \ - -/// Calls your macro with the name of each member of XrSecondaryViewConfigurationSwapchainCreateInfoMSFT, in order. -#define XR_LIST_STRUCT_XrSecondaryViewConfigurationSwapchainCreateInfoMSFT(_) \ - _(type) \ - _(next) \ - _(viewConfigurationType) \ - -/// Calls your macro with the name of each member of XrControllerModelKeyStateMSFT, in order. -#define XR_LIST_STRUCT_XrControllerModelKeyStateMSFT(_) \ - _(type) \ - _(next) \ - _(modelKey) \ - -/// Calls your macro with the name of each member of XrControllerModelNodePropertiesMSFT, in order. -#define XR_LIST_STRUCT_XrControllerModelNodePropertiesMSFT(_) \ - _(type) \ - _(next) \ - _(parentNodeName) \ - _(nodeName) \ - -/// Calls your macro with the name of each member of XrControllerModelPropertiesMSFT, in order. -#define XR_LIST_STRUCT_XrControllerModelPropertiesMSFT(_) \ - _(type) \ - _(next) \ - _(nodeCapacityInput) \ - _(nodeCountOutput) \ - _(nodeProperties) \ - -/// Calls your macro with the name of each member of XrControllerModelNodeStateMSFT, in order. -#define XR_LIST_STRUCT_XrControllerModelNodeStateMSFT(_) \ - _(type) \ - _(next) \ - _(nodePose) \ - -/// Calls your macro with the name of each member of XrControllerModelStateMSFT, in order. -#define XR_LIST_STRUCT_XrControllerModelStateMSFT(_) \ - _(type) \ - _(next) \ - _(nodeCapacityInput) \ - _(nodeCountOutput) \ - _(nodeStates) \ - -/// Calls your macro with the name of each member of XrViewConfigurationViewFovEPIC, in order. -#define XR_LIST_STRUCT_XrViewConfigurationViewFovEPIC(_) \ - _(type) \ - _(next) \ - _(recommendedFov) \ - _(maxMutableFov) \ - -/// Calls your macro with the name of each member of XrHolographicWindowAttachmentMSFT, in order. -#define XR_LIST_STRUCT_XrHolographicWindowAttachmentMSFT(_) \ - _(type) \ - _(next) \ - _(holographicSpace) \ - _(coreWindow) \ - -/// Calls your macro with the name of each member of XrCompositionLayerReprojectionInfoMSFT, in order. -#define XR_LIST_STRUCT_XrCompositionLayerReprojectionInfoMSFT(_) \ - _(type) \ - _(next) \ - _(reprojectionMode) \ - -/// Calls your macro with the name of each member of XrCompositionLayerReprojectionPlaneOverrideMSFT, in order. -#define XR_LIST_STRUCT_XrCompositionLayerReprojectionPlaneOverrideMSFT(_) \ - _(type) \ - _(next) \ - _(position) \ - _(normal) \ - _(velocity) \ - -/// Calls your macro with the name of each member of XrAndroidSurfaceSwapchainCreateInfoFB, in order. -#define XR_LIST_STRUCT_XrAndroidSurfaceSwapchainCreateInfoFB(_) \ - _(type) \ - _(next) \ - _(createFlags) \ - -/// Calls your macro with the name of each member of XrSwapchainStateBaseHeaderFB, in order. -#define XR_LIST_STRUCT_XrSwapchainStateBaseHeaderFB(_) \ - _(type) \ - _(next) \ - -/// Calls your macro with the name of each member of XrCompositionLayerSecureContentFB, in order. -#define XR_LIST_STRUCT_XrCompositionLayerSecureContentFB(_) \ - _(type) \ - _(next) \ - _(flags) \ - -/// Calls your macro with the name of each member of XrBodyJointLocationFB, in order. -#define XR_LIST_STRUCT_XrBodyJointLocationFB(_) \ - _(locationFlags) \ - _(pose) \ - -/// Calls your macro with the name of each member of XrSystemBodyTrackingPropertiesFB, in order. -#define XR_LIST_STRUCT_XrSystemBodyTrackingPropertiesFB(_) \ - _(type) \ - _(next) \ - _(supportsBodyTracking) \ - -/// Calls your macro with the name of each member of XrBodyTrackerCreateInfoFB, in order. -#define XR_LIST_STRUCT_XrBodyTrackerCreateInfoFB(_) \ - _(type) \ - _(next) \ - _(bodyJointSet) \ - -/// Calls your macro with the name of each member of XrBodySkeletonJointFB, in order. -#define XR_LIST_STRUCT_XrBodySkeletonJointFB(_) \ - _(joint) \ - _(parentJoint) \ - _(pose) \ - -/// Calls your macro with the name of each member of XrBodySkeletonFB, in order. -#define XR_LIST_STRUCT_XrBodySkeletonFB(_) \ - _(type) \ - _(next) \ - _(jointCount) \ - _(joints) \ - -/// Calls your macro with the name of each member of XrBodyJointsLocateInfoFB, in order. -#define XR_LIST_STRUCT_XrBodyJointsLocateInfoFB(_) \ - _(type) \ - _(next) \ - _(baseSpace) \ - _(time) \ - -/// Calls your macro with the name of each member of XrBodyJointLocationsFB, in order. -#define XR_LIST_STRUCT_XrBodyJointLocationsFB(_) \ - _(type) \ - _(next) \ - _(isActive) \ - _(confidence) \ - _(jointCount) \ - _(jointLocations) \ - _(skeletonChangedCount) \ - _(time) \ - -/// Calls your macro with the name of each member of XrInteractionProfileDpadBindingEXT, in order. -#define XR_LIST_STRUCT_XrInteractionProfileDpadBindingEXT(_) \ - _(type) \ - _(next) \ - _(binding) \ - _(actionSet) \ - _(forceThreshold) \ - _(forceThresholdReleased) \ - _(centerRegion) \ - _(wedgeAngle) \ - _(isSticky) \ - _(onHaptic) \ - _(offHaptic) \ - -/// Calls your macro with the name of each member of XrInteractionProfileAnalogThresholdVALVE, in order. -#define XR_LIST_STRUCT_XrInteractionProfileAnalogThresholdVALVE(_) \ - _(type) \ - _(next) \ - _(action) \ - _(binding) \ - _(onThreshold) \ - _(offThreshold) \ - _(onHaptic) \ - _(offHaptic) \ - -/// Calls your macro with the name of each member of XrHandJointsMotionRangeInfoEXT, in order. -#define XR_LIST_STRUCT_XrHandJointsMotionRangeInfoEXT(_) \ - _(type) \ - _(next) \ - _(handJointsMotionRange) \ - -/// Calls your macro with the name of each member of XrUuidMSFT, in order. -#define XR_LIST_STRUCT_XrUuidMSFT(_) \ - _(bytes) \ - -/// Calls your macro with the name of each member of XrSceneObserverCreateInfoMSFT, in order. -#define XR_LIST_STRUCT_XrSceneObserverCreateInfoMSFT(_) \ - _(type) \ - _(next) \ - -/// Calls your macro with the name of each member of XrSceneCreateInfoMSFT, in order. -#define XR_LIST_STRUCT_XrSceneCreateInfoMSFT(_) \ - _(type) \ - _(next) \ - -/// Calls your macro with the name of each member of XrSceneSphereBoundMSFT, in order. -#define XR_LIST_STRUCT_XrSceneSphereBoundMSFT(_) \ - _(center) \ - _(radius) \ - -/// Calls your macro with the name of each member of XrSceneOrientedBoxBoundMSFT, in order. -#define XR_LIST_STRUCT_XrSceneOrientedBoxBoundMSFT(_) \ - _(pose) \ - _(extents) \ - -/// Calls your macro with the name of each member of XrSceneFrustumBoundMSFT, in order. -#define XR_LIST_STRUCT_XrSceneFrustumBoundMSFT(_) \ - _(pose) \ - _(fov) \ - _(farDistance) \ - -/// Calls your macro with the name of each member of XrSceneBoundsMSFT, in order. -#define XR_LIST_STRUCT_XrSceneBoundsMSFT(_) \ - _(space) \ - _(time) \ - _(sphereCount) \ - _(spheres) \ - _(boxCount) \ - _(boxes) \ - _(frustumCount) \ - _(frustums) \ - -/// Calls your macro with the name of each member of XrNewSceneComputeInfoMSFT, in order. -#define XR_LIST_STRUCT_XrNewSceneComputeInfoMSFT(_) \ - _(type) \ - _(next) \ - _(requestedFeatureCount) \ - _(requestedFeatures) \ - _(consistency) \ - _(bounds) \ - -/// Calls your macro with the name of each member of XrVisualMeshComputeLodInfoMSFT, in order. -#define XR_LIST_STRUCT_XrVisualMeshComputeLodInfoMSFT(_) \ - _(type) \ - _(next) \ - _(lod) \ - -/// Calls your macro with the name of each member of XrSceneComponentMSFT, in order. -#define XR_LIST_STRUCT_XrSceneComponentMSFT(_) \ - _(componentType) \ - _(id) \ - _(parentId) \ - _(updateTime) \ - -/// Calls your macro with the name of each member of XrSceneComponentsMSFT, in order. -#define XR_LIST_STRUCT_XrSceneComponentsMSFT(_) \ - _(type) \ - _(next) \ - _(componentCapacityInput) \ - _(componentCountOutput) \ - _(components) \ - -/// Calls your macro with the name of each member of XrSceneComponentsGetInfoMSFT, in order. -#define XR_LIST_STRUCT_XrSceneComponentsGetInfoMSFT(_) \ - _(type) \ - _(next) \ - _(componentType) \ - -/// Calls your macro with the name of each member of XrSceneComponentLocationMSFT, in order. -#define XR_LIST_STRUCT_XrSceneComponentLocationMSFT(_) \ - _(flags) \ - _(pose) \ - -/// Calls your macro with the name of each member of XrSceneComponentLocationsMSFT, in order. -#define XR_LIST_STRUCT_XrSceneComponentLocationsMSFT(_) \ - _(type) \ - _(next) \ - _(locationCount) \ - _(locations) \ - -/// Calls your macro with the name of each member of XrSceneComponentsLocateInfoMSFT, in order. -#define XR_LIST_STRUCT_XrSceneComponentsLocateInfoMSFT(_) \ - _(type) \ - _(next) \ - _(baseSpace) \ - _(time) \ - _(componentIdCount) \ - _(componentIds) \ - -/// Calls your macro with the name of each member of XrSceneObjectMSFT, in order. -#define XR_LIST_STRUCT_XrSceneObjectMSFT(_) \ - _(objectType) \ - -/// Calls your macro with the name of each member of XrSceneObjectsMSFT, in order. -#define XR_LIST_STRUCT_XrSceneObjectsMSFT(_) \ - _(type) \ - _(next) \ - _(sceneObjectCount) \ - _(sceneObjects) \ - -/// Calls your macro with the name of each member of XrSceneComponentParentFilterInfoMSFT, in order. -#define XR_LIST_STRUCT_XrSceneComponentParentFilterInfoMSFT(_) \ - _(type) \ - _(next) \ - _(parentId) \ - -/// Calls your macro with the name of each member of XrSceneObjectTypesFilterInfoMSFT, in order. -#define XR_LIST_STRUCT_XrSceneObjectTypesFilterInfoMSFT(_) \ - _(type) \ - _(next) \ - _(objectTypeCount) \ - _(objectTypes) \ - -/// Calls your macro with the name of each member of XrScenePlaneMSFT, in order. -#define XR_LIST_STRUCT_XrScenePlaneMSFT(_) \ - _(alignment) \ - _(size) \ - _(meshBufferId) \ - _(supportsIndicesUint16) \ - -/// Calls your macro with the name of each member of XrScenePlanesMSFT, in order. -#define XR_LIST_STRUCT_XrScenePlanesMSFT(_) \ - _(type) \ - _(next) \ - _(scenePlaneCount) \ - _(scenePlanes) \ - -/// Calls your macro with the name of each member of XrScenePlaneAlignmentFilterInfoMSFT, in order. -#define XR_LIST_STRUCT_XrScenePlaneAlignmentFilterInfoMSFT(_) \ - _(type) \ - _(next) \ - _(alignmentCount) \ - _(alignments) \ - -/// Calls your macro with the name of each member of XrSceneMeshMSFT, in order. -#define XR_LIST_STRUCT_XrSceneMeshMSFT(_) \ - _(meshBufferId) \ - _(supportsIndicesUint16) \ - -/// Calls your macro with the name of each member of XrSceneMeshesMSFT, in order. -#define XR_LIST_STRUCT_XrSceneMeshesMSFT(_) \ - _(type) \ - _(next) \ - _(sceneMeshCount) \ - _(sceneMeshes) \ - -/// Calls your macro with the name of each member of XrSceneMeshBuffersGetInfoMSFT, in order. -#define XR_LIST_STRUCT_XrSceneMeshBuffersGetInfoMSFT(_) \ - _(type) \ - _(next) \ - _(meshBufferId) \ - -/// Calls your macro with the name of each member of XrSceneMeshBuffersMSFT, in order. -#define XR_LIST_STRUCT_XrSceneMeshBuffersMSFT(_) \ - _(type) \ - _(next) \ - -/// Calls your macro with the name of each member of XrSceneMeshVertexBufferMSFT, in order. -#define XR_LIST_STRUCT_XrSceneMeshVertexBufferMSFT(_) \ - _(type) \ - _(next) \ - _(vertexCapacityInput) \ - _(vertexCountOutput) \ - _(vertices) \ - -/// Calls your macro with the name of each member of XrSceneMeshIndicesUint32MSFT, in order. -#define XR_LIST_STRUCT_XrSceneMeshIndicesUint32MSFT(_) \ - _(type) \ - _(next) \ - _(indexCapacityInput) \ - _(indexCountOutput) \ - _(indices) \ - -/// Calls your macro with the name of each member of XrSceneMeshIndicesUint16MSFT, in order. -#define XR_LIST_STRUCT_XrSceneMeshIndicesUint16MSFT(_) \ - _(type) \ - _(next) \ - _(indexCapacityInput) \ - _(indexCountOutput) \ - _(indices) \ - -/// Calls your macro with the name of each member of XrSerializedSceneFragmentDataGetInfoMSFT, in order. -#define XR_LIST_STRUCT_XrSerializedSceneFragmentDataGetInfoMSFT(_) \ - _(type) \ - _(next) \ - _(sceneFragmentId) \ - -/// Calls your macro with the name of each member of XrDeserializeSceneFragmentMSFT, in order. -#define XR_LIST_STRUCT_XrDeserializeSceneFragmentMSFT(_) \ - _(bufferSize) \ - _(buffer) \ - -/// Calls your macro with the name of each member of XrSceneDeserializeInfoMSFT, in order. -#define XR_LIST_STRUCT_XrSceneDeserializeInfoMSFT(_) \ - _(type) \ - _(next) \ - _(fragmentCount) \ - _(fragments) \ - -/// Calls your macro with the name of each member of XrEventDataDisplayRefreshRateChangedFB, in order. -#define XR_LIST_STRUCT_XrEventDataDisplayRefreshRateChangedFB(_) \ - _(type) \ - _(next) \ - _(fromDisplayRefreshRate) \ - _(toDisplayRefreshRate) \ - -/// Calls your macro with the name of each member of XrViveTrackerPathsHTCX, in order. -#define XR_LIST_STRUCT_XrViveTrackerPathsHTCX(_) \ - _(type) \ - _(next) \ - _(persistentPath) \ - _(rolePath) \ - -/// Calls your macro with the name of each member of XrEventDataViveTrackerConnectedHTCX, in order. -#define XR_LIST_STRUCT_XrEventDataViveTrackerConnectedHTCX(_) \ - _(type) \ - _(next) \ - _(paths) \ - -/// Calls your macro with the name of each member of XrSystemFacialTrackingPropertiesHTC, in order. -#define XR_LIST_STRUCT_XrSystemFacialTrackingPropertiesHTC(_) \ - _(type) \ - _(next) \ - _(supportEyeFacialTracking) \ - _(supportLipFacialTracking) \ - -/// Calls your macro with the name of each member of XrFacialExpressionsHTC, in order. -#define XR_LIST_STRUCT_XrFacialExpressionsHTC(_) \ - _(type) \ - _(next) \ - _(isActive) \ - _(sampleTime) \ - _(expressionCount) \ - _(expressionWeightings) \ - -/// Calls your macro with the name of each member of XrFacialTrackerCreateInfoHTC, in order. -#define XR_LIST_STRUCT_XrFacialTrackerCreateInfoHTC(_) \ - _(type) \ - _(next) \ - _(facialTrackingType) \ - -/// Calls your macro with the name of each member of XrSystemColorSpacePropertiesFB, in order. -#define XR_LIST_STRUCT_XrSystemColorSpacePropertiesFB(_) \ - _(type) \ - _(next) \ - _(colorSpace) \ - -/// Calls your macro with the name of each member of XrVector4sFB, in order. -#define XR_LIST_STRUCT_XrVector4sFB(_) \ - _(x) \ - _(y) \ - _(z) \ - _(w) \ - -/// Calls your macro with the name of each member of XrHandTrackingMeshFB, in order. -#define XR_LIST_STRUCT_XrHandTrackingMeshFB(_) \ - _(type) \ - _(next) \ - _(jointCapacityInput) \ - _(jointCountOutput) \ - _(jointBindPoses) \ - _(jointRadii) \ - _(jointParents) \ - _(vertexCapacityInput) \ - _(vertexCountOutput) \ - _(vertexPositions) \ - _(vertexNormals) \ - _(vertexUVs) \ - _(vertexBlendIndices) \ - _(vertexBlendWeights) \ - _(indexCapacityInput) \ - _(indexCountOutput) \ - _(indices) \ - -/// Calls your macro with the name of each member of XrHandTrackingScaleFB, in order. -#define XR_LIST_STRUCT_XrHandTrackingScaleFB(_) \ - _(type) \ - _(next) \ - _(sensorOutput) \ - _(currentOutput) \ - _(overrideHandScale) \ - _(overrideValueInput) \ - -/// Calls your macro with the name of each member of XrHandTrackingAimStateFB, in order. -#define XR_LIST_STRUCT_XrHandTrackingAimStateFB(_) \ - _(type) \ - _(next) \ - _(status) \ - _(aimPose) \ - _(pinchStrengthIndex) \ - _(pinchStrengthMiddle) \ - _(pinchStrengthRing) \ - _(pinchStrengthLittle) \ - -/// Calls your macro with the name of each member of XrHandCapsuleFB, in order. -#define XR_LIST_STRUCT_XrHandCapsuleFB(_) \ - _(points) \ - _(radius) \ - _(joint) \ - -/// Calls your macro with the name of each member of XrHandTrackingCapsulesStateFB, in order. -#define XR_LIST_STRUCT_XrHandTrackingCapsulesStateFB(_) \ - _(type) \ - _(next) \ - _(capsules) \ - -/// Calls your macro with the name of each member of XrSystemSpatialEntityPropertiesFB, in order. -#define XR_LIST_STRUCT_XrSystemSpatialEntityPropertiesFB(_) \ - _(type) \ - _(next) \ - _(supportsSpatialEntity) \ - -/// Calls your macro with the name of each member of XrSpatialAnchorCreateInfoFB, in order. -#define XR_LIST_STRUCT_XrSpatialAnchorCreateInfoFB(_) \ - _(type) \ - _(next) \ - _(space) \ - _(poseInSpace) \ - _(time) \ - -/// Calls your macro with the name of each member of XrSpaceComponentStatusSetInfoFB, in order. -#define XR_LIST_STRUCT_XrSpaceComponentStatusSetInfoFB(_) \ - _(type) \ - _(next) \ - _(componentType) \ - _(enabled) \ - _(timeout) \ - -/// Calls your macro with the name of each member of XrSpaceComponentStatusFB, in order. -#define XR_LIST_STRUCT_XrSpaceComponentStatusFB(_) \ - _(type) \ - _(next) \ - _(enabled) \ - _(changePending) \ - -/// Calls your macro with the name of each member of XrEventDataSpatialAnchorCreateCompleteFB, in order. -#define XR_LIST_STRUCT_XrEventDataSpatialAnchorCreateCompleteFB(_) \ - _(type) \ - _(next) \ - _(requestId) \ - _(result) \ - _(space) \ - _(uuid) \ - -/// Calls your macro with the name of each member of XrEventDataSpaceSetStatusCompleteFB, in order. -#define XR_LIST_STRUCT_XrEventDataSpaceSetStatusCompleteFB(_) \ - _(type) \ - _(next) \ - _(requestId) \ - _(result) \ - _(space) \ - _(uuid) \ - _(componentType) \ - _(enabled) \ - -/// Calls your macro with the name of each member of XrFoveationProfileCreateInfoFB, in order. -#define XR_LIST_STRUCT_XrFoveationProfileCreateInfoFB(_) \ - _(type) \ - _(next) \ - -/// Calls your macro with the name of each member of XrSwapchainCreateInfoFoveationFB, in order. -#define XR_LIST_STRUCT_XrSwapchainCreateInfoFoveationFB(_) \ - _(type) \ - _(next) \ - _(flags) \ - -/// Calls your macro with the name of each member of XrSwapchainStateFoveationFB, in order. -#define XR_LIST_STRUCT_XrSwapchainStateFoveationFB(_) \ - _(type) \ - _(next) \ - _(flags) \ - _(profile) \ - -/// Calls your macro with the name of each member of XrFoveationLevelProfileCreateInfoFB, in order. -#define XR_LIST_STRUCT_XrFoveationLevelProfileCreateInfoFB(_) \ - _(type) \ - _(next) \ - _(level) \ - _(verticalOffset) \ - _(dynamic) \ - -/// Calls your macro with the name of each member of XrSystemKeyboardTrackingPropertiesFB, in order. -#define XR_LIST_STRUCT_XrSystemKeyboardTrackingPropertiesFB(_) \ - _(type) \ - _(next) \ - _(supportsKeyboardTracking) \ - -/// Calls your macro with the name of each member of XrKeyboardTrackingDescriptionFB, in order. -#define XR_LIST_STRUCT_XrKeyboardTrackingDescriptionFB(_) \ - _(trackedKeyboardId) \ - _(size) \ - _(flags) \ - _(name) \ - -/// Calls your macro with the name of each member of XrKeyboardSpaceCreateInfoFB, in order. -#define XR_LIST_STRUCT_XrKeyboardSpaceCreateInfoFB(_) \ - _(type) \ - _(next) \ - _(trackedKeyboardId) \ - -/// Calls your macro with the name of each member of XrKeyboardTrackingQueryFB, in order. -#define XR_LIST_STRUCT_XrKeyboardTrackingQueryFB(_) \ - _(type) \ - _(next) \ - _(flags) \ - -/// Calls your macro with the name of each member of XrTriangleMeshCreateInfoFB, in order. -#define XR_LIST_STRUCT_XrTriangleMeshCreateInfoFB(_) \ - _(type) \ - _(next) \ - _(flags) \ - _(windingOrder) \ - _(vertexCount) \ - _(vertexBuffer) \ - _(triangleCount) \ - _(indexBuffer) \ - -/// Calls your macro with the name of each member of XrSystemPassthroughPropertiesFB, in order. -#define XR_LIST_STRUCT_XrSystemPassthroughPropertiesFB(_) \ - _(type) \ - _(next) \ - _(supportsPassthrough) \ - -/// Calls your macro with the name of each member of XrSystemPassthroughProperties2FB, in order. -#define XR_LIST_STRUCT_XrSystemPassthroughProperties2FB(_) \ - _(type) \ - _(next) \ - _(capabilities) \ - -/// Calls your macro with the name of each member of XrPassthroughCreateInfoFB, in order. -#define XR_LIST_STRUCT_XrPassthroughCreateInfoFB(_) \ - _(type) \ - _(next) \ - _(flags) \ - -/// Calls your macro with the name of each member of XrPassthroughLayerCreateInfoFB, in order. -#define XR_LIST_STRUCT_XrPassthroughLayerCreateInfoFB(_) \ - _(type) \ - _(next) \ - _(passthrough) \ - _(flags) \ - _(purpose) \ - -/// Calls your macro with the name of each member of XrCompositionLayerPassthroughFB, in order. -#define XR_LIST_STRUCT_XrCompositionLayerPassthroughFB(_) \ - _(type) \ - _(next) \ - _(flags) \ - _(space) \ - _(layerHandle) \ - -/// Calls your macro with the name of each member of XrGeometryInstanceCreateInfoFB, in order. -#define XR_LIST_STRUCT_XrGeometryInstanceCreateInfoFB(_) \ - _(type) \ - _(next) \ - _(layer) \ - _(mesh) \ - _(baseSpace) \ - _(pose) \ - _(scale) \ - -/// Calls your macro with the name of each member of XrGeometryInstanceTransformFB, in order. -#define XR_LIST_STRUCT_XrGeometryInstanceTransformFB(_) \ - _(type) \ - _(next) \ - _(baseSpace) \ - _(time) \ - _(pose) \ - _(scale) \ - -/// Calls your macro with the name of each member of XrPassthroughStyleFB, in order. -#define XR_LIST_STRUCT_XrPassthroughStyleFB(_) \ - _(type) \ - _(next) \ - _(textureOpacityFactor) \ - _(edgeColor) \ - -/// Calls your macro with the name of each member of XrPassthroughColorMapMonoToRgbaFB, in order. -#define XR_LIST_STRUCT_XrPassthroughColorMapMonoToRgbaFB(_) \ - _(type) \ - _(next) \ - _(textureColorMap) \ - -/// Calls your macro with the name of each member of XrPassthroughColorMapMonoToMonoFB, in order. -#define XR_LIST_STRUCT_XrPassthroughColorMapMonoToMonoFB(_) \ - _(type) \ - _(next) \ - _(textureColorMap) \ - -/// Calls your macro with the name of each member of XrPassthroughBrightnessContrastSaturationFB, in order. -#define XR_LIST_STRUCT_XrPassthroughBrightnessContrastSaturationFB(_) \ - _(type) \ - _(next) \ - _(brightness) \ - _(contrast) \ - _(saturation) \ - -/// Calls your macro with the name of each member of XrEventDataPassthroughStateChangedFB, in order. -#define XR_LIST_STRUCT_XrEventDataPassthroughStateChangedFB(_) \ - _(type) \ - _(next) \ - _(flags) \ - -/// Calls your macro with the name of each member of XrRenderModelPathInfoFB, in order. -#define XR_LIST_STRUCT_XrRenderModelPathInfoFB(_) \ - _(type) \ - _(next) \ - _(path) \ - -/// Calls your macro with the name of each member of XrRenderModelPropertiesFB, in order. -#define XR_LIST_STRUCT_XrRenderModelPropertiesFB(_) \ - _(type) \ - _(next) \ - _(vendorId) \ - _(modelName) \ - _(modelKey) \ - _(modelVersion) \ - _(flags) \ - -/// Calls your macro with the name of each member of XrRenderModelBufferFB, in order. -#define XR_LIST_STRUCT_XrRenderModelBufferFB(_) \ - _(type) \ - _(next) \ - _(bufferCapacityInput) \ - _(bufferCountOutput) \ - _(buffer) \ - -/// Calls your macro with the name of each member of XrRenderModelLoadInfoFB, in order. -#define XR_LIST_STRUCT_XrRenderModelLoadInfoFB(_) \ - _(type) \ - _(next) \ - _(modelKey) \ - -/// Calls your macro with the name of each member of XrSystemRenderModelPropertiesFB, in order. -#define XR_LIST_STRUCT_XrSystemRenderModelPropertiesFB(_) \ - _(type) \ - _(next) \ - _(supportsRenderModelLoading) \ - -/// Calls your macro with the name of each member of XrRenderModelCapabilitiesRequestFB, in order. -#define XR_LIST_STRUCT_XrRenderModelCapabilitiesRequestFB(_) \ - _(type) \ - _(next) \ - _(flags) \ - -/// Calls your macro with the name of each member of XrViewLocateFoveatedRenderingVARJO, in order. -#define XR_LIST_STRUCT_XrViewLocateFoveatedRenderingVARJO(_) \ - _(type) \ - _(next) \ - _(foveatedRenderingActive) \ - -/// Calls your macro with the name of each member of XrFoveatedViewConfigurationViewVARJO, in order. -#define XR_LIST_STRUCT_XrFoveatedViewConfigurationViewVARJO(_) \ - _(type) \ - _(next) \ - _(foveatedRenderingActive) \ - -/// Calls your macro with the name of each member of XrSystemFoveatedRenderingPropertiesVARJO, in order. -#define XR_LIST_STRUCT_XrSystemFoveatedRenderingPropertiesVARJO(_) \ - _(type) \ - _(next) \ - _(supportsFoveatedRendering) \ - -/// Calls your macro with the name of each member of XrCompositionLayerDepthTestVARJO, in order. -#define XR_LIST_STRUCT_XrCompositionLayerDepthTestVARJO(_) \ - _(type) \ - _(next) \ - _(depthTestRangeNearZ) \ - _(depthTestRangeFarZ) \ - -/// Calls your macro with the name of each member of XrSystemMarkerTrackingPropertiesVARJO, in order. -#define XR_LIST_STRUCT_XrSystemMarkerTrackingPropertiesVARJO(_) \ - _(type) \ - _(next) \ - _(supportsMarkerTracking) \ - -/// Calls your macro with the name of each member of XrEventDataMarkerTrackingUpdateVARJO, in order. -#define XR_LIST_STRUCT_XrEventDataMarkerTrackingUpdateVARJO(_) \ - _(type) \ - _(next) \ - _(markerId) \ - _(isActive) \ - _(isPredicted) \ - _(time) \ - -/// Calls your macro with the name of each member of XrMarkerSpaceCreateInfoVARJO, in order. -#define XR_LIST_STRUCT_XrMarkerSpaceCreateInfoVARJO(_) \ - _(type) \ - _(next) \ - _(markerId) \ - _(poseInMarkerSpace) \ - -/// Calls your macro with the name of each member of XrFrameEndInfoML, in order. -#define XR_LIST_STRUCT_XrFrameEndInfoML(_) \ - _(type) \ - _(next) \ - _(focusDistance) \ - _(flags) \ - -/// Calls your macro with the name of each member of XrGlobalDimmerFrameEndInfoML, in order. -#define XR_LIST_STRUCT_XrGlobalDimmerFrameEndInfoML(_) \ - _(type) \ - _(next) \ - _(dimmerValue) \ - _(flags) \ - -/// Calls your macro with the name of each member of XrCoordinateSpaceCreateInfoML, in order. -#define XR_LIST_STRUCT_XrCoordinateSpaceCreateInfoML(_) \ - _(type) \ - _(next) \ - _(cfuid) \ - _(poseInCoordinateSpace) \ - -/// Calls your macro with the name of each member of XrSystemMarkerUnderstandingPropertiesML, in order. -#define XR_LIST_STRUCT_XrSystemMarkerUnderstandingPropertiesML(_) \ - _(type) \ - _(next) \ - _(supportsMarkerUnderstanding) \ - -/// Calls your macro with the name of each member of XrMarkerDetectorCreateInfoML, in order. -#define XR_LIST_STRUCT_XrMarkerDetectorCreateInfoML(_) \ - _(type) \ - _(next) \ - _(profile) \ - _(markerType) \ - -/// Calls your macro with the name of each member of XrMarkerDetectorArucoInfoML, in order. -#define XR_LIST_STRUCT_XrMarkerDetectorArucoInfoML(_) \ - _(type) \ - _(next) \ - _(arucoDict) \ - -/// Calls your macro with the name of each member of XrMarkerDetectorSizeInfoML, in order. -#define XR_LIST_STRUCT_XrMarkerDetectorSizeInfoML(_) \ - _(type) \ - _(next) \ - _(markerLength) \ - -/// Calls your macro with the name of each member of XrMarkerDetectorAprilTagInfoML, in order. -#define XR_LIST_STRUCT_XrMarkerDetectorAprilTagInfoML(_) \ - _(type) \ - _(next) \ - _(aprilTagDict) \ - -/// Calls your macro with the name of each member of XrMarkerDetectorCustomProfileInfoML, in order. -#define XR_LIST_STRUCT_XrMarkerDetectorCustomProfileInfoML(_) \ - _(type) \ - _(next) \ - _(fpsHint) \ - _(resolutionHint) \ - _(cameraHint) \ - _(cornerRefineMethod) \ - _(useEdgeRefinement) \ - _(fullAnalysisIntervalHint) \ - -/// Calls your macro with the name of each member of XrMarkerDetectorSnapshotInfoML, in order. -#define XR_LIST_STRUCT_XrMarkerDetectorSnapshotInfoML(_) \ - _(type) \ - _(next) \ - -/// Calls your macro with the name of each member of XrMarkerDetectorStateML, in order. -#define XR_LIST_STRUCT_XrMarkerDetectorStateML(_) \ - _(type) \ - _(next) \ - _(state) \ - -/// Calls your macro with the name of each member of XrMarkerSpaceCreateInfoML, in order. -#define XR_LIST_STRUCT_XrMarkerSpaceCreateInfoML(_) \ - _(type) \ - _(next) \ - _(markerDetector) \ - _(marker) \ - _(poseInMarkerSpace) \ - -/// Calls your macro with the name of each member of XrLocalizationMapML, in order. -#define XR_LIST_STRUCT_XrLocalizationMapML(_) \ - _(type) \ - _(next) \ - _(name) \ - _(mapUuid) \ - _(mapType) \ - -/// Calls your macro with the name of each member of XrEventDataLocalizationChangedML, in order. -#define XR_LIST_STRUCT_XrEventDataLocalizationChangedML(_) \ - _(type) \ - _(next) \ - _(session) \ - _(state) \ - _(map) \ - _(confidence) \ - _(errorFlags) \ - -/// Calls your macro with the name of each member of XrLocalizationMapQueryInfoBaseHeaderML, in order. -#define XR_LIST_STRUCT_XrLocalizationMapQueryInfoBaseHeaderML(_) \ - _(type) \ - _(next) \ - -/// Calls your macro with the name of each member of XrMapLocalizationRequestInfoML, in order. -#define XR_LIST_STRUCT_XrMapLocalizationRequestInfoML(_) \ - _(type) \ - _(next) \ - _(mapUuid) \ - -/// Calls your macro with the name of each member of XrLocalizationMapImportInfoML, in order. -#define XR_LIST_STRUCT_XrLocalizationMapImportInfoML(_) \ - _(type) \ - _(next) \ - _(size) \ - _(data) \ - -/// Calls your macro with the name of each member of XrLocalizationEnableEventsInfoML, in order. -#define XR_LIST_STRUCT_XrLocalizationEnableEventsInfoML(_) \ - _(type) \ - _(next) \ - _(enabled) \ - -/// Calls your macro with the name of each member of XrSpatialAnchorPersistenceNameMSFT, in order. -#define XR_LIST_STRUCT_XrSpatialAnchorPersistenceNameMSFT(_) \ - _(name) \ - -/// Calls your macro with the name of each member of XrSpatialAnchorPersistenceInfoMSFT, in order. -#define XR_LIST_STRUCT_XrSpatialAnchorPersistenceInfoMSFT(_) \ - _(type) \ - _(next) \ - _(spatialAnchorPersistenceName) \ - _(spatialAnchor) \ - -/// Calls your macro with the name of each member of XrSpatialAnchorFromPersistedAnchorCreateInfoMSFT, in order. -#define XR_LIST_STRUCT_XrSpatialAnchorFromPersistedAnchorCreateInfoMSFT(_) \ - _(type) \ - _(next) \ - _(spatialAnchorStore) \ - _(spatialAnchorPersistenceName) \ - -/// Calls your macro with the name of each member of XrSceneMarkerMSFT, in order. -#define XR_LIST_STRUCT_XrSceneMarkerMSFT(_) \ - _(markerType) \ - _(lastSeenTime) \ - _(center) \ - _(size) \ - -/// Calls your macro with the name of each member of XrSceneMarkersMSFT, in order. -#define XR_LIST_STRUCT_XrSceneMarkersMSFT(_) \ - _(type) \ - _(next) \ - _(sceneMarkerCapacityInput) \ - _(sceneMarkers) \ - -/// Calls your macro with the name of each member of XrSceneMarkerTypeFilterMSFT, in order. -#define XR_LIST_STRUCT_XrSceneMarkerTypeFilterMSFT(_) \ - _(type) \ - _(next) \ - _(markerTypeCount) \ - _(markerTypes) \ - -/// Calls your macro with the name of each member of XrSceneMarkerQRCodeMSFT, in order. -#define XR_LIST_STRUCT_XrSceneMarkerQRCodeMSFT(_) \ - _(symbolType) \ - _(version) \ - -/// Calls your macro with the name of each member of XrSceneMarkerQRCodesMSFT, in order. -#define XR_LIST_STRUCT_XrSceneMarkerQRCodesMSFT(_) \ - _(type) \ - _(next) \ - _(qrCodeCapacityInput) \ - _(qrCodes) \ - -/// Calls your macro with the name of each member of XrSpaceQueryInfoBaseHeaderFB, in order. -#define XR_LIST_STRUCT_XrSpaceQueryInfoBaseHeaderFB(_) \ - _(type) \ - _(next) \ - -/// Calls your macro with the name of each member of XrSpaceFilterInfoBaseHeaderFB, in order. -#define XR_LIST_STRUCT_XrSpaceFilterInfoBaseHeaderFB(_) \ - _(type) \ - _(next) \ - -/// Calls your macro with the name of each member of XrSpaceQueryInfoFB, in order. -#define XR_LIST_STRUCT_XrSpaceQueryInfoFB(_) \ - _(type) \ - _(next) \ - _(queryAction) \ - _(maxResultCount) \ - _(timeout) \ - _(filter) \ - _(excludeFilter) \ - -/// Calls your macro with the name of each member of XrSpaceStorageLocationFilterInfoFB, in order. -#define XR_LIST_STRUCT_XrSpaceStorageLocationFilterInfoFB(_) \ - _(type) \ - _(next) \ - _(location) \ - -/// Calls your macro with the name of each member of XrSpaceUuidFilterInfoFB, in order. -#define XR_LIST_STRUCT_XrSpaceUuidFilterInfoFB(_) \ - _(type) \ - _(next) \ - _(uuidCount) \ - _(uuids) \ - -/// Calls your macro with the name of each member of XrSpaceComponentFilterInfoFB, in order. -#define XR_LIST_STRUCT_XrSpaceComponentFilterInfoFB(_) \ - _(type) \ - _(next) \ - _(componentType) \ - -/// Calls your macro with the name of each member of XrSpaceQueryResultFB, in order. -#define XR_LIST_STRUCT_XrSpaceQueryResultFB(_) \ - _(space) \ - _(uuid) \ - -/// Calls your macro with the name of each member of XrSpaceQueryResultsFB, in order. -#define XR_LIST_STRUCT_XrSpaceQueryResultsFB(_) \ - _(type) \ - _(next) \ - _(resultCapacityInput) \ - _(resultCountOutput) \ - _(results) \ - -/// Calls your macro with the name of each member of XrEventDataSpaceQueryResultsAvailableFB, in order. -#define XR_LIST_STRUCT_XrEventDataSpaceQueryResultsAvailableFB(_) \ - _(type) \ - _(next) \ - _(requestId) \ - -/// Calls your macro with the name of each member of XrEventDataSpaceQueryCompleteFB, in order. -#define XR_LIST_STRUCT_XrEventDataSpaceQueryCompleteFB(_) \ - _(type) \ - _(next) \ - _(requestId) \ - _(result) \ - -/// Calls your macro with the name of each member of XrSpaceSaveInfoFB, in order. -#define XR_LIST_STRUCT_XrSpaceSaveInfoFB(_) \ - _(type) \ - _(next) \ - _(space) \ - _(location) \ - _(persistenceMode) \ - -/// Calls your macro with the name of each member of XrSpaceEraseInfoFB, in order. -#define XR_LIST_STRUCT_XrSpaceEraseInfoFB(_) \ - _(type) \ - _(next) \ - _(space) \ - _(location) \ - -/// Calls your macro with the name of each member of XrEventDataSpaceSaveCompleteFB, in order. -#define XR_LIST_STRUCT_XrEventDataSpaceSaveCompleteFB(_) \ - _(type) \ - _(next) \ - _(requestId) \ - _(result) \ - _(space) \ - _(uuid) \ - _(location) \ - -/// Calls your macro with the name of each member of XrEventDataSpaceEraseCompleteFB, in order. -#define XR_LIST_STRUCT_XrEventDataSpaceEraseCompleteFB(_) \ - _(type) \ - _(next) \ - _(requestId) \ - _(result) \ - _(space) \ - _(uuid) \ - _(location) \ - -/// Calls your macro with the name of each member of XrSwapchainImageFoveationVulkanFB, in order. -#define XR_LIST_STRUCT_XrSwapchainImageFoveationVulkanFB(_) \ - _(type) \ - _(next) \ - _(image) \ - _(width) \ - _(height) \ - -/// Calls your macro with the name of each member of XrSwapchainStateAndroidSurfaceDimensionsFB, in order. -#define XR_LIST_STRUCT_XrSwapchainStateAndroidSurfaceDimensionsFB(_) \ - _(type) \ - _(next) \ - _(width) \ - _(height) \ - -/// Calls your macro with the name of each member of XrSwapchainStateSamplerOpenGLESFB, in order. -#define XR_LIST_STRUCT_XrSwapchainStateSamplerOpenGLESFB(_) \ - _(type) \ - _(next) \ - _(minFilter) \ - _(magFilter) \ - _(wrapModeS) \ - _(wrapModeT) \ - _(swizzleRed) \ - _(swizzleGreen) \ - _(swizzleBlue) \ - _(swizzleAlpha) \ - _(maxAnisotropy) \ - _(borderColor) \ - -/// Calls your macro with the name of each member of XrSwapchainStateSamplerVulkanFB, in order. -#define XR_LIST_STRUCT_XrSwapchainStateSamplerVulkanFB(_) \ - _(type) \ - _(next) \ - _(minFilter) \ - _(magFilter) \ - _(mipmapMode) \ - _(wrapModeS) \ - _(wrapModeT) \ - _(swizzleRed) \ - _(swizzleGreen) \ - _(swizzleBlue) \ - _(swizzleAlpha) \ - _(maxAnisotropy) \ - _(borderColor) \ - -/// Calls your macro with the name of each member of XrSpaceShareInfoFB, in order. -#define XR_LIST_STRUCT_XrSpaceShareInfoFB(_) \ - _(type) \ - _(next) \ - _(spaceCount) \ - _(spaces) \ - _(userCount) \ - _(users) \ - -/// Calls your macro with the name of each member of XrEventDataSpaceShareCompleteFB, in order. -#define XR_LIST_STRUCT_XrEventDataSpaceShareCompleteFB(_) \ - _(type) \ - _(next) \ - _(requestId) \ - _(result) \ - -/// Calls your macro with the name of each member of XrCompositionLayerSpaceWarpInfoFB, in order. -#define XR_LIST_STRUCT_XrCompositionLayerSpaceWarpInfoFB(_) \ - _(type) \ - _(next) \ - _(layerFlags) \ - _(motionVectorSubImage) \ - _(appSpaceDeltaPose) \ - _(depthSubImage) \ - _(minDepth) \ - _(maxDepth) \ - _(nearZ) \ - _(farZ) \ - -/// Calls your macro with the name of each member of XrSystemSpaceWarpPropertiesFB, in order. -#define XR_LIST_STRUCT_XrSystemSpaceWarpPropertiesFB(_) \ - _(type) \ - _(next) \ - _(recommendedMotionVectorImageRectWidth) \ - _(recommendedMotionVectorImageRectHeight) \ - -/// Calls your macro with the name of each member of XrHapticAmplitudeEnvelopeVibrationFB, in order. -#define XR_LIST_STRUCT_XrHapticAmplitudeEnvelopeVibrationFB(_) \ - _(type) \ - _(next) \ - _(duration) \ - _(amplitudeCount) \ - _(amplitudes) \ - -/// Calls your macro with the name of each member of XrOffset3DfFB, in order. -#define XR_LIST_STRUCT_XrOffset3DfFB(_) \ - _(x) \ - _(y) \ - _(z) \ - -/// Calls your macro with the name of each member of XrRect3DfFB, in order. -#define XR_LIST_STRUCT_XrRect3DfFB(_) \ - _(offset) \ - _(extent) \ - -/// Calls your macro with the name of each member of XrSemanticLabelsFB, in order. -#define XR_LIST_STRUCT_XrSemanticLabelsFB(_) \ - _(type) \ - _(next) \ - _(bufferCapacityInput) \ - _(bufferCountOutput) \ - _(buffer) \ - -/// Calls your macro with the name of each member of XrRoomLayoutFB, in order. -#define XR_LIST_STRUCT_XrRoomLayoutFB(_) \ - _(type) \ - _(next) \ - _(floorUuid) \ - _(ceilingUuid) \ - _(wallUuidCapacityInput) \ - _(wallUuidCountOutput) \ - _(wallUuids) \ - -/// Calls your macro with the name of each member of XrBoundary2DFB, in order. -#define XR_LIST_STRUCT_XrBoundary2DFB(_) \ - _(type) \ - _(next) \ - _(vertexCapacityInput) \ - _(vertexCountOutput) \ - _(vertices) \ - -/// Calls your macro with the name of each member of XrSemanticLabelsSupportInfoFB, in order. -#define XR_LIST_STRUCT_XrSemanticLabelsSupportInfoFB(_) \ - _(type) \ - _(next) \ - _(flags) \ - _(recognizedLabels) \ - -/// Calls your macro with the name of each member of XrDigitalLensControlALMALENCE, in order. -#define XR_LIST_STRUCT_XrDigitalLensControlALMALENCE(_) \ - _(type) \ - _(next) \ - _(flags) \ - -/// Calls your macro with the name of each member of XrEventDataSceneCaptureCompleteFB, in order. -#define XR_LIST_STRUCT_XrEventDataSceneCaptureCompleteFB(_) \ - _(type) \ - _(next) \ - _(requestId) \ - _(result) \ - -/// Calls your macro with the name of each member of XrSceneCaptureRequestInfoFB, in order. -#define XR_LIST_STRUCT_XrSceneCaptureRequestInfoFB(_) \ - _(type) \ - _(next) \ - _(requestByteCount) \ - _(request) \ - -/// Calls your macro with the name of each member of XrSpaceContainerFB, in order. -#define XR_LIST_STRUCT_XrSpaceContainerFB(_) \ - _(type) \ - _(next) \ - _(uuidCapacityInput) \ - _(uuidCountOutput) \ - _(uuids) \ - -/// Calls your macro with the name of each member of XrFoveationEyeTrackedProfileCreateInfoMETA, in order. -#define XR_LIST_STRUCT_XrFoveationEyeTrackedProfileCreateInfoMETA(_) \ - _(type) \ - _(next) \ - _(flags) \ - -/// Calls your macro with the name of each member of XrFoveationEyeTrackedStateMETA, in order. -#define XR_LIST_STRUCT_XrFoveationEyeTrackedStateMETA(_) \ - _(type) \ - _(next) \ - _(foveationCenter) \ - _(flags) \ - -/// Calls your macro with the name of each member of XrSystemFoveationEyeTrackedPropertiesMETA, in order. -#define XR_LIST_STRUCT_XrSystemFoveationEyeTrackedPropertiesMETA(_) \ - _(type) \ - _(next) \ - _(supportsFoveationEyeTracked) \ - -/// Calls your macro with the name of each member of XrSystemFaceTrackingPropertiesFB, in order. -#define XR_LIST_STRUCT_XrSystemFaceTrackingPropertiesFB(_) \ - _(type) \ - _(next) \ - _(supportsFaceTracking) \ - -/// Calls your macro with the name of each member of XrFaceTrackerCreateInfoFB, in order. -#define XR_LIST_STRUCT_XrFaceTrackerCreateInfoFB(_) \ - _(type) \ - _(next) \ - _(faceExpressionSet) \ - -/// Calls your macro with the name of each member of XrFaceExpressionInfoFB, in order. -#define XR_LIST_STRUCT_XrFaceExpressionInfoFB(_) \ - _(type) \ - _(next) \ - _(time) \ - -/// Calls your macro with the name of each member of XrFaceExpressionStatusFB, in order. -#define XR_LIST_STRUCT_XrFaceExpressionStatusFB(_) \ - _(isValid) \ - _(isEyeFollowingBlendshapesValid) \ - -/// Calls your macro with the name of each member of XrFaceExpressionWeightsFB, in order. -#define XR_LIST_STRUCT_XrFaceExpressionWeightsFB(_) \ - _(type) \ - _(next) \ - _(weightCount) \ - _(weights) \ - _(confidenceCount) \ - _(confidences) \ - _(status) \ - _(time) \ - -/// Calls your macro with the name of each member of XrEyeGazeFB, in order. -#define XR_LIST_STRUCT_XrEyeGazeFB(_) \ - _(isValid) \ - _(gazePose) \ - _(gazeConfidence) \ - -/// Calls your macro with the name of each member of XrEyeTrackerCreateInfoFB, in order. -#define XR_LIST_STRUCT_XrEyeTrackerCreateInfoFB(_) \ - _(type) \ - _(next) \ - -/// Calls your macro with the name of each member of XrEyeGazesInfoFB, in order. -#define XR_LIST_STRUCT_XrEyeGazesInfoFB(_) \ - _(type) \ - _(next) \ - _(baseSpace) \ - _(time) \ - -/// Calls your macro with the name of each member of XrSystemEyeTrackingPropertiesFB, in order. -#define XR_LIST_STRUCT_XrSystemEyeTrackingPropertiesFB(_) \ - _(type) \ - _(next) \ - _(supportsEyeTracking) \ - -/// Calls your macro with the name of each member of XrEyeGazesFB, in order. -#define XR_LIST_STRUCT_XrEyeGazesFB(_) \ - _(type) \ - _(next) \ - _(gaze) \ - _(time) \ - -/// Calls your macro with the name of each member of XrPassthroughKeyboardHandsIntensityFB, in order. -#define XR_LIST_STRUCT_XrPassthroughKeyboardHandsIntensityFB(_) \ - _(type) \ - _(next) \ - _(leftHandIntensity) \ - _(rightHandIntensity) \ - -/// Calls your macro with the name of each member of XrCompositionLayerSettingsFB, in order. -#define XR_LIST_STRUCT_XrCompositionLayerSettingsFB(_) \ - _(type) \ - _(next) \ - _(layerFlags) \ - -/// Calls your macro with the name of each member of XrHapticPcmVibrationFB, in order. -#define XR_LIST_STRUCT_XrHapticPcmVibrationFB(_) \ - _(type) \ - _(next) \ - _(bufferSize) \ - _(buffer) \ - _(sampleRate) \ - _(append) \ - _(samplesConsumed) \ - -/// Calls your macro with the name of each member of XrDevicePcmSampleRateStateFB, in order. -#define XR_LIST_STRUCT_XrDevicePcmSampleRateStateFB(_) \ - _(type) \ - _(next) \ - _(sampleRate) \ - -/// Calls your macro with the name of each member of XrCompositionLayerDepthTestFB, in order. -#define XR_LIST_STRUCT_XrCompositionLayerDepthTestFB(_) \ - _(type) \ - _(next) \ - _(depthMask) \ - _(compareOp) \ - -/// Calls your macro with the name of each member of XrLocalDimmingFrameEndInfoMETA, in order. -#define XR_LIST_STRUCT_XrLocalDimmingFrameEndInfoMETA(_) \ - _(type) \ - _(next) \ - _(localDimmingMode) \ - -/// Calls your macro with the name of each member of XrPassthroughPreferencesMETA, in order. -#define XR_LIST_STRUCT_XrPassthroughPreferencesMETA(_) \ - _(type) \ - _(next) \ - _(flags) \ - -/// Calls your macro with the name of each member of XrSystemVirtualKeyboardPropertiesMETA, in order. -#define XR_LIST_STRUCT_XrSystemVirtualKeyboardPropertiesMETA(_) \ - _(type) \ - _(next) \ - _(supportsVirtualKeyboard) \ - -/// Calls your macro with the name of each member of XrVirtualKeyboardCreateInfoMETA, in order. -#define XR_LIST_STRUCT_XrVirtualKeyboardCreateInfoMETA(_) \ - _(type) \ - _(next) \ - -/// Calls your macro with the name of each member of XrVirtualKeyboardSpaceCreateInfoMETA, in order. -#define XR_LIST_STRUCT_XrVirtualKeyboardSpaceCreateInfoMETA(_) \ - _(type) \ - _(next) \ - _(locationType) \ - _(space) \ - _(poseInSpace) \ - -/// Calls your macro with the name of each member of XrVirtualKeyboardLocationInfoMETA, in order. -#define XR_LIST_STRUCT_XrVirtualKeyboardLocationInfoMETA(_) \ - _(type) \ - _(next) \ - _(locationType) \ - _(space) \ - _(poseInSpace) \ - _(scale) \ - -/// Calls your macro with the name of each member of XrVirtualKeyboardModelVisibilitySetInfoMETA, in order. -#define XR_LIST_STRUCT_XrVirtualKeyboardModelVisibilitySetInfoMETA(_) \ - _(type) \ - _(next) \ - _(visible) \ - -/// Calls your macro with the name of each member of XrVirtualKeyboardAnimationStateMETA, in order. -#define XR_LIST_STRUCT_XrVirtualKeyboardAnimationStateMETA(_) \ - _(type) \ - _(next) \ - _(animationIndex) \ - _(fraction) \ - -/// Calls your macro with the name of each member of XrVirtualKeyboardModelAnimationStatesMETA, in order. -#define XR_LIST_STRUCT_XrVirtualKeyboardModelAnimationStatesMETA(_) \ - _(type) \ - _(next) \ - _(stateCapacityInput) \ - _(stateCountOutput) \ - _(states) \ - -/// Calls your macro with the name of each member of XrVirtualKeyboardTextureDataMETA, in order. -#define XR_LIST_STRUCT_XrVirtualKeyboardTextureDataMETA(_) \ - _(type) \ - _(next) \ - _(textureWidth) \ - _(textureHeight) \ - _(bufferCapacityInput) \ - _(bufferCountOutput) \ - _(buffer) \ - -/// Calls your macro with the name of each member of XrVirtualKeyboardInputInfoMETA, in order. -#define XR_LIST_STRUCT_XrVirtualKeyboardInputInfoMETA(_) \ - _(type) \ - _(next) \ - _(inputSource) \ - _(inputSpace) \ - _(inputPoseInSpace) \ - _(inputState) \ - -/// Calls your macro with the name of each member of XrVirtualKeyboardTextContextChangeInfoMETA, in order. -#define XR_LIST_STRUCT_XrVirtualKeyboardTextContextChangeInfoMETA(_) \ - _(type) \ - _(next) \ - _(textContext) \ - -/// Calls your macro with the name of each member of XrEventDataVirtualKeyboardCommitTextMETA, in order. -#define XR_LIST_STRUCT_XrEventDataVirtualKeyboardCommitTextMETA(_) \ - _(type) \ - _(next) \ - _(keyboard) \ - _(text) \ - -/// Calls your macro with the name of each member of XrEventDataVirtualKeyboardBackspaceMETA, in order. -#define XR_LIST_STRUCT_XrEventDataVirtualKeyboardBackspaceMETA(_) \ - _(type) \ - _(next) \ - _(keyboard) \ - -/// Calls your macro with the name of each member of XrEventDataVirtualKeyboardEnterMETA, in order. -#define XR_LIST_STRUCT_XrEventDataVirtualKeyboardEnterMETA(_) \ - _(type) \ - _(next) \ - _(keyboard) \ - -/// Calls your macro with the name of each member of XrEventDataVirtualKeyboardShownMETA, in order. -#define XR_LIST_STRUCT_XrEventDataVirtualKeyboardShownMETA(_) \ - _(type) \ - _(next) \ - _(keyboard) \ - -/// Calls your macro with the name of each member of XrEventDataVirtualKeyboardHiddenMETA, in order. -#define XR_LIST_STRUCT_XrEventDataVirtualKeyboardHiddenMETA(_) \ - _(type) \ - _(next) \ - _(keyboard) \ - -/// Calls your macro with the name of each member of XrExternalCameraIntrinsicsOCULUS, in order. -#define XR_LIST_STRUCT_XrExternalCameraIntrinsicsOCULUS(_) \ - _(lastChangeTime) \ - _(fov) \ - _(virtualNearPlaneDistance) \ - _(virtualFarPlaneDistance) \ - _(imageSensorPixelResolution) \ - -/// Calls your macro with the name of each member of XrExternalCameraExtrinsicsOCULUS, in order. -#define XR_LIST_STRUCT_XrExternalCameraExtrinsicsOCULUS(_) \ - _(lastChangeTime) \ - _(cameraStatusFlags) \ - _(attachedToDevice) \ - _(relativePose) \ - -/// Calls your macro with the name of each member of XrExternalCameraOCULUS, in order. -#define XR_LIST_STRUCT_XrExternalCameraOCULUS(_) \ - _(type) \ - _(next) \ - _(name) \ - _(intrinsics) \ - _(extrinsics) \ - -/// Calls your macro with the name of each member of XrVulkanSwapchainCreateInfoMETA, in order. -#define XR_LIST_STRUCT_XrVulkanSwapchainCreateInfoMETA(_) \ - _(type) \ - _(next) \ - _(additionalCreateFlags) \ - _(additionalUsageFlags) \ - -/// Calls your macro with the name of each member of XrPerformanceMetricsStateMETA, in order. -#define XR_LIST_STRUCT_XrPerformanceMetricsStateMETA(_) \ - _(type) \ - _(next) \ - _(enabled) \ - -/// Calls your macro with the name of each member of XrPerformanceMetricsCounterMETA, in order. -#define XR_LIST_STRUCT_XrPerformanceMetricsCounterMETA(_) \ - _(type) \ - _(next) \ - _(counterFlags) \ - _(counterUnit) \ - _(uintValue) \ - _(floatValue) \ - -/// Calls your macro with the name of each member of XrSpaceListSaveInfoFB, in order. -#define XR_LIST_STRUCT_XrSpaceListSaveInfoFB(_) \ - _(type) \ - _(next) \ - _(spaceCount) \ - _(spaces) \ - _(location) \ - -/// Calls your macro with the name of each member of XrEventDataSpaceListSaveCompleteFB, in order. -#define XR_LIST_STRUCT_XrEventDataSpaceListSaveCompleteFB(_) \ - _(type) \ - _(next) \ - _(requestId) \ - _(result) \ - -/// Calls your macro with the name of each member of XrSpaceUserCreateInfoFB, in order. -#define XR_LIST_STRUCT_XrSpaceUserCreateInfoFB(_) \ - _(type) \ - _(next) \ - _(userId) \ - -/// Calls your macro with the name of each member of XrSystemHeadsetIdPropertiesMETA, in order. -#define XR_LIST_STRUCT_XrSystemHeadsetIdPropertiesMETA(_) \ - _(type) \ - _(next) \ - _(id) \ - -/// Calls your macro with the name of each member of XrRecommendedLayerResolutionMETA, in order. -#define XR_LIST_STRUCT_XrRecommendedLayerResolutionMETA(_) \ - _(type) \ - _(next) \ - _(recommendedImageDimensions) \ - _(isValid) \ - -/// Calls your macro with the name of each member of XrRecommendedLayerResolutionGetInfoMETA, in order. -#define XR_LIST_STRUCT_XrRecommendedLayerResolutionGetInfoMETA(_) \ - _(type) \ - _(next) \ - _(layer) \ - _(predictedDisplayTime) \ - -/// Calls your macro with the name of each member of XrPassthroughColorLutDataMETA, in order. -#define XR_LIST_STRUCT_XrPassthroughColorLutDataMETA(_) \ - _(bufferSize) \ - _(buffer) \ - -/// Calls your macro with the name of each member of XrPassthroughColorLutCreateInfoMETA, in order. -#define XR_LIST_STRUCT_XrPassthroughColorLutCreateInfoMETA(_) \ - _(type) \ - _(next) \ - _(channels) \ - _(resolution) \ - _(data) \ - -/// Calls your macro with the name of each member of XrPassthroughColorLutUpdateInfoMETA, in order. -#define XR_LIST_STRUCT_XrPassthroughColorLutUpdateInfoMETA(_) \ - _(type) \ - _(next) \ - _(data) \ - -/// Calls your macro with the name of each member of XrPassthroughColorMapLutMETA, in order. -#define XR_LIST_STRUCT_XrPassthroughColorMapLutMETA(_) \ - _(type) \ - _(next) \ - _(colorLut) \ - _(weight) \ - -/// Calls your macro with the name of each member of XrPassthroughColorMapInterpolatedLutMETA, in order. -#define XR_LIST_STRUCT_XrPassthroughColorMapInterpolatedLutMETA(_) \ - _(type) \ - _(next) \ - _(sourceColorLut) \ - _(targetColorLut) \ - _(weight) \ - -/// Calls your macro with the name of each member of XrSystemPassthroughColorLutPropertiesMETA, in order. -#define XR_LIST_STRUCT_XrSystemPassthroughColorLutPropertiesMETA(_) \ - _(type) \ - _(next) \ - _(maxColorLutResolution) \ - -/// Calls your macro with the name of each member of XrSpaceTriangleMeshGetInfoMETA, in order. -#define XR_LIST_STRUCT_XrSpaceTriangleMeshGetInfoMETA(_) \ - _(type) \ - _(next) \ - -/// Calls your macro with the name of each member of XrSpaceTriangleMeshMETA, in order. -#define XR_LIST_STRUCT_XrSpaceTriangleMeshMETA(_) \ - _(type) \ - _(next) \ - _(vertexCapacityInput) \ - _(vertexCountOutput) \ - _(vertices) \ - _(indexCapacityInput) \ - _(indexCountOutput) \ - _(indices) \ - -/// Calls your macro with the name of each member of XrSystemFaceTrackingProperties2FB, in order. -#define XR_LIST_STRUCT_XrSystemFaceTrackingProperties2FB(_) \ - _(type) \ - _(next) \ - _(supportsVisualFaceTracking) \ - _(supportsAudioFaceTracking) \ - -/// Calls your macro with the name of each member of XrFaceTrackerCreateInfo2FB, in order. -#define XR_LIST_STRUCT_XrFaceTrackerCreateInfo2FB(_) \ - _(type) \ - _(next) \ - _(faceExpressionSet) \ - _(requestedDataSourceCount) \ - _(requestedDataSources) \ - -/// Calls your macro with the name of each member of XrFaceExpressionInfo2FB, in order. -#define XR_LIST_STRUCT_XrFaceExpressionInfo2FB(_) \ - _(type) \ - _(next) \ - _(time) \ - -/// Calls your macro with the name of each member of XrFaceExpressionWeights2FB, in order. -#define XR_LIST_STRUCT_XrFaceExpressionWeights2FB(_) \ - _(type) \ - _(next) \ - _(weightCount) \ - _(weights) \ - _(confidenceCount) \ - _(confidences) \ - _(isValid) \ - _(isEyeFollowingBlendshapesValid) \ - _(dataSource) \ - _(time) \ - -/// Calls your macro with the name of each member of XrEnvironmentDepthProviderCreateInfoMETA, in order. -#define XR_LIST_STRUCT_XrEnvironmentDepthProviderCreateInfoMETA(_) \ - _(type) \ - _(next) \ - _(createFlags) \ - -/// Calls your macro with the name of each member of XrEnvironmentDepthSwapchainCreateInfoMETA, in order. -#define XR_LIST_STRUCT_XrEnvironmentDepthSwapchainCreateInfoMETA(_) \ - _(type) \ - _(next) \ - _(createFlags) \ - -/// Calls your macro with the name of each member of XrEnvironmentDepthSwapchainStateMETA, in order. -#define XR_LIST_STRUCT_XrEnvironmentDepthSwapchainStateMETA(_) \ - _(type) \ - _(next) \ - _(width) \ - _(height) \ - -/// Calls your macro with the name of each member of XrEnvironmentDepthImageAcquireInfoMETA, in order. -#define XR_LIST_STRUCT_XrEnvironmentDepthImageAcquireInfoMETA(_) \ - _(type) \ - _(next) \ - _(space) \ - _(displayTime) \ - -/// Calls your macro with the name of each member of XrEnvironmentDepthImageViewMETA, in order. -#define XR_LIST_STRUCT_XrEnvironmentDepthImageViewMETA(_) \ - _(type) \ - _(next) \ - _(fov) \ - _(pose) \ - -/// Calls your macro with the name of each member of XrEnvironmentDepthImageMETA, in order. -#define XR_LIST_STRUCT_XrEnvironmentDepthImageMETA(_) \ - _(type) \ - _(next) \ - _(swapchainIndex) \ - _(nearZ) \ - _(farZ) \ - _(views) \ - -/// Calls your macro with the name of each member of XrEnvironmentDepthHandRemovalSetInfoMETA, in order. -#define XR_LIST_STRUCT_XrEnvironmentDepthHandRemovalSetInfoMETA(_) \ - _(type) \ - _(next) \ - _(enabled) \ - -/// Calls your macro with the name of each member of XrSystemEnvironmentDepthPropertiesMETA, in order. -#define XR_LIST_STRUCT_XrSystemEnvironmentDepthPropertiesMETA(_) \ - _(type) \ - _(next) \ - _(supportsEnvironmentDepth) \ - _(supportsHandRemoval) \ - -/// Calls your macro with the name of each member of XrPassthroughCreateInfoHTC, in order. -#define XR_LIST_STRUCT_XrPassthroughCreateInfoHTC(_) \ - _(type) \ - _(next) \ - _(form) \ - -/// Calls your macro with the name of each member of XrPassthroughColorHTC, in order. -#define XR_LIST_STRUCT_XrPassthroughColorHTC(_) \ - _(type) \ - _(next) \ - _(alpha) \ - -/// Calls your macro with the name of each member of XrPassthroughMeshTransformInfoHTC, in order. -#define XR_LIST_STRUCT_XrPassthroughMeshTransformInfoHTC(_) \ - _(type) \ - _(next) \ - _(vertexCount) \ - _(vertices) \ - _(indexCount) \ - _(indices) \ - _(baseSpace) \ - _(time) \ - _(pose) \ - _(scale) \ - -/// Calls your macro with the name of each member of XrCompositionLayerPassthroughHTC, in order. -#define XR_LIST_STRUCT_XrCompositionLayerPassthroughHTC(_) \ - _(type) \ - _(next) \ - _(layerFlags) \ - _(space) \ - _(passthrough) \ - _(color) \ - -/// Calls your macro with the name of each member of XrFoveationApplyInfoHTC, in order. -#define XR_LIST_STRUCT_XrFoveationApplyInfoHTC(_) \ - _(type) \ - _(next) \ - _(mode) \ - _(subImageCount) \ - _(subImages) \ - -/// Calls your macro with the name of each member of XrFoveationConfigurationHTC, in order. -#define XR_LIST_STRUCT_XrFoveationConfigurationHTC(_) \ - _(level) \ - _(clearFovDegree) \ - _(focalCenterOffset) \ - -/// Calls your macro with the name of each member of XrFoveationDynamicModeInfoHTC, in order. -#define XR_LIST_STRUCT_XrFoveationDynamicModeInfoHTC(_) \ - _(type) \ - _(next) \ - _(dynamicFlags) \ - -/// Calls your macro with the name of each member of XrFoveationCustomModeInfoHTC, in order. -#define XR_LIST_STRUCT_XrFoveationCustomModeInfoHTC(_) \ - _(type) \ - _(next) \ - _(configCount) \ - _(configs) \ - -/// Calls your macro with the name of each member of XrSystemAnchorPropertiesHTC, in order. -#define XR_LIST_STRUCT_XrSystemAnchorPropertiesHTC(_) \ - _(type) \ - _(next) \ - _(supportsAnchor) \ - -/// Calls your macro with the name of each member of XrSpatialAnchorNameHTC, in order. -#define XR_LIST_STRUCT_XrSpatialAnchorNameHTC(_) \ - _(name) \ - -/// Calls your macro with the name of each member of XrSpatialAnchorCreateInfoHTC, in order. -#define XR_LIST_STRUCT_XrSpatialAnchorCreateInfoHTC(_) \ - _(type) \ - _(next) \ - _(space) \ - _(poseInSpace) \ - _(name) \ - -/// Calls your macro with the name of each member of XrActiveActionSetPriorityEXT, in order. -#define XR_LIST_STRUCT_XrActiveActionSetPriorityEXT(_) \ - _(actionSet) \ - _(priorityOverride) \ - -/// Calls your macro with the name of each member of XrActiveActionSetPrioritiesEXT, in order. -#define XR_LIST_STRUCT_XrActiveActionSetPrioritiesEXT(_) \ - _(type) \ - _(next) \ - _(actionSetPriorityCount) \ - _(actionSetPriorities) \ - -/// Calls your macro with the name of each member of XrSystemForceFeedbackCurlPropertiesMNDX, in order. -#define XR_LIST_STRUCT_XrSystemForceFeedbackCurlPropertiesMNDX(_) \ - _(type) \ - _(next) \ - _(supportsForceFeedbackCurl) \ - -/// Calls your macro with the name of each member of XrForceFeedbackCurlApplyLocationMNDX, in order. -#define XR_LIST_STRUCT_XrForceFeedbackCurlApplyLocationMNDX(_) \ - _(location) \ - _(value) \ - -/// Calls your macro with the name of each member of XrForceFeedbackCurlApplyLocationsMNDX, in order. -#define XR_LIST_STRUCT_XrForceFeedbackCurlApplyLocationsMNDX(_) \ - _(type) \ - _(next) \ - _(locationCount) \ - _(locations) \ - -/// Calls your macro with the name of each member of XrHandTrackingDataSourceInfoEXT, in order. -#define XR_LIST_STRUCT_XrHandTrackingDataSourceInfoEXT(_) \ - _(type) \ - _(next) \ - _(requestedDataSourceCount) \ - _(requestedDataSources) \ - -/// Calls your macro with the name of each member of XrHandTrackingDataSourceStateEXT, in order. -#define XR_LIST_STRUCT_XrHandTrackingDataSourceStateEXT(_) \ - _(type) \ - _(next) \ - _(isActive) \ - _(dataSource) \ - -/// Calls your macro with the name of each member of XrSystemPlaneDetectionPropertiesEXT, in order. -#define XR_LIST_STRUCT_XrSystemPlaneDetectionPropertiesEXT(_) \ - _(type) \ - _(next) \ - _(supportedFeatures) \ - -/// Calls your macro with the name of each member of XrPlaneDetectorCreateInfoEXT, in order. -#define XR_LIST_STRUCT_XrPlaneDetectorCreateInfoEXT(_) \ - _(type) \ - _(next) \ - _(flags) \ - -/// Calls your macro with the name of each member of XrPlaneDetectorBeginInfoEXT, in order. -#define XR_LIST_STRUCT_XrPlaneDetectorBeginInfoEXT(_) \ - _(type) \ - _(next) \ - _(baseSpace) \ - _(time) \ - _(orientationCount) \ - _(orientations) \ - _(semanticTypeCount) \ - _(semanticTypes) \ - _(maxPlanes) \ - _(minArea) \ - _(boundingBoxPose) \ - _(boundingBoxExtent) \ - -/// Calls your macro with the name of each member of XrPlaneDetectorGetInfoEXT, in order. -#define XR_LIST_STRUCT_XrPlaneDetectorGetInfoEXT(_) \ - _(type) \ - _(next) \ - _(baseSpace) \ - _(time) \ - -/// Calls your macro with the name of each member of XrPlaneDetectorLocationEXT, in order. -#define XR_LIST_STRUCT_XrPlaneDetectorLocationEXT(_) \ - _(type) \ - _(next) \ - _(planeId) \ - _(locationFlags) \ - _(pose) \ - _(extents) \ - _(orientation) \ - _(semanticType) \ - _(polygonBufferCount) \ - -/// Calls your macro with the name of each member of XrPlaneDetectorLocationsEXT, in order. -#define XR_LIST_STRUCT_XrPlaneDetectorLocationsEXT(_) \ - _(type) \ - _(next) \ - _(planeLocationCapacityInput) \ - _(planeLocationCountOutput) \ - _(planeLocations) \ - -/// Calls your macro with the name of each member of XrPlaneDetectorPolygonBufferEXT, in order. -#define XR_LIST_STRUCT_XrPlaneDetectorPolygonBufferEXT(_) \ - _(type) \ - _(next) \ - _(vertexCapacityInput) \ - _(vertexCountOutput) \ - _(vertices) \ - -/// Calls your macro with the name of each member of XrFutureCancelInfoEXT, in order. -#define XR_LIST_STRUCT_XrFutureCancelInfoEXT(_) \ - _(type) \ - _(next) \ - _(future) \ - -/// Calls your macro with the name of each member of XrFuturePollInfoEXT, in order. -#define XR_LIST_STRUCT_XrFuturePollInfoEXT(_) \ - _(type) \ - _(next) \ - _(future) \ - -/// Calls your macro with the name of each member of XrFutureCompletionBaseHeaderEXT, in order. -#define XR_LIST_STRUCT_XrFutureCompletionBaseHeaderEXT(_) \ - _(type) \ - _(next) \ - _(futureResult) \ - -/// Calls your macro with the name of each member of XrFutureCompletionEXT, in order. -#define XR_LIST_STRUCT_XrFutureCompletionEXT(_) \ - _(type) \ - _(next) \ - _(futureResult) \ - -/// Calls your macro with the name of each member of XrFuturePollResultEXT, in order. -#define XR_LIST_STRUCT_XrFuturePollResultEXT(_) \ - _(type) \ - _(next) \ - _(state) \ - -/// Calls your macro with the name of each member of XrEventDataUserPresenceChangedEXT, in order. -#define XR_LIST_STRUCT_XrEventDataUserPresenceChangedEXT(_) \ - _(type) \ - _(next) \ - _(session) \ - _(isUserPresent) \ - -/// Calls your macro with the name of each member of XrSystemUserPresencePropertiesEXT, in order. -#define XR_LIST_STRUCT_XrSystemUserPresencePropertiesEXT(_) \ - _(type) \ - _(next) \ - _(supportsUserPresence) \ - -/// Calls your macro with the name of each member of XrEventDataHeadsetFitChangedML, in order. -#define XR_LIST_STRUCT_XrEventDataHeadsetFitChangedML(_) \ - _(type) \ - _(next) \ - _(status) \ - _(time) \ - -/// Calls your macro with the name of each member of XrEventDataEyeCalibrationChangedML, in order. -#define XR_LIST_STRUCT_XrEventDataEyeCalibrationChangedML(_) \ - _(type) \ - _(next) \ - _(status) \ - -/// Calls your macro with the name of each member of XrUserCalibrationEnableEventsInfoML, in order. -#define XR_LIST_STRUCT_XrUserCalibrationEnableEventsInfoML(_) \ - _(type) \ - _(next) \ - _(enabled) \ - - - -/// Calls your macro with the structure type name and the XrStructureType constant for -/// each known/available structure type, excluding those unavailable due to preprocessor definitions. -#define XR_LIST_STRUCTURE_TYPES(_) \ - XR_LIST_STRUCTURE_TYPES_CORE(_) \ - XR_LIST_STRUCTURE_TYPES_XR_USE_GRAPHICS_API_D3D11(_) \ - XR_LIST_STRUCTURE_TYPES_XR_USE_GRAPHICS_API_D3D12(_) \ - XR_LIST_STRUCTURE_TYPES_XR_USE_GRAPHICS_API_OPENGL(_) \ - XR_LIST_STRUCTURE_TYPES_XR_USE_GRAPHICS_API_OPENGL_XR_USE_PLATFORM_WAYLAND(_) \ - XR_LIST_STRUCTURE_TYPES_XR_USE_GRAPHICS_API_OPENGL_XR_USE_PLATFORM_WIN32(_) \ - XR_LIST_STRUCTURE_TYPES_XR_USE_GRAPHICS_API_OPENGL_XR_USE_PLATFORM_XCB(_) \ - XR_LIST_STRUCTURE_TYPES_XR_USE_GRAPHICS_API_OPENGL_XR_USE_PLATFORM_XLIB(_) \ - XR_LIST_STRUCTURE_TYPES_XR_USE_GRAPHICS_API_OPENGL_ES(_) \ - XR_LIST_STRUCTURE_TYPES_XR_USE_GRAPHICS_API_OPENGL_ES_XR_USE_PLATFORM_ANDROID(_) \ - XR_LIST_STRUCTURE_TYPES_XR_USE_GRAPHICS_API_VULKAN(_) \ - XR_LIST_STRUCTURE_TYPES_XR_USE_PLATFORM_ANDROID(_) \ - XR_LIST_STRUCTURE_TYPES_XR_USE_PLATFORM_EGL(_) \ - XR_LIST_STRUCTURE_TYPES_XR_USE_PLATFORM_ML(_) \ - XR_LIST_STRUCTURE_TYPES_XR_USE_PLATFORM_WIN32(_) \ - - -/// Implementation detail of XR_LIST_STRUCTURE_TYPES() - structure types available without any preprocessor definitions -#define XR_LIST_STRUCTURE_TYPES_CORE(_) \ - _(XrApiLayerProperties, XR_TYPE_API_LAYER_PROPERTIES) \ - _(XrExtensionProperties, XR_TYPE_EXTENSION_PROPERTIES) \ - _(XrInstanceCreateInfo, XR_TYPE_INSTANCE_CREATE_INFO) \ - _(XrInstanceProperties, XR_TYPE_INSTANCE_PROPERTIES) \ - _(XrEventDataBuffer, XR_TYPE_EVENT_DATA_BUFFER) \ - _(XrSystemGetInfo, XR_TYPE_SYSTEM_GET_INFO) \ - _(XrSystemProperties, XR_TYPE_SYSTEM_PROPERTIES) \ - _(XrSessionCreateInfo, XR_TYPE_SESSION_CREATE_INFO) \ - _(XrSpaceVelocity, XR_TYPE_SPACE_VELOCITY) \ - _(XrReferenceSpaceCreateInfo, XR_TYPE_REFERENCE_SPACE_CREATE_INFO) \ - _(XrActionSpaceCreateInfo, XR_TYPE_ACTION_SPACE_CREATE_INFO) \ - _(XrSpaceLocation, XR_TYPE_SPACE_LOCATION) \ - _(XrViewConfigurationProperties, XR_TYPE_VIEW_CONFIGURATION_PROPERTIES) \ - _(XrViewConfigurationView, XR_TYPE_VIEW_CONFIGURATION_VIEW) \ - _(XrSwapchainCreateInfo, XR_TYPE_SWAPCHAIN_CREATE_INFO) \ - _(XrSwapchainImageAcquireInfo, XR_TYPE_SWAPCHAIN_IMAGE_ACQUIRE_INFO) \ - _(XrSwapchainImageWaitInfo, XR_TYPE_SWAPCHAIN_IMAGE_WAIT_INFO) \ - _(XrSwapchainImageReleaseInfo, XR_TYPE_SWAPCHAIN_IMAGE_RELEASE_INFO) \ - _(XrSessionBeginInfo, XR_TYPE_SESSION_BEGIN_INFO) \ - _(XrFrameWaitInfo, XR_TYPE_FRAME_WAIT_INFO) \ - _(XrFrameState, XR_TYPE_FRAME_STATE) \ - _(XrFrameBeginInfo, XR_TYPE_FRAME_BEGIN_INFO) \ - _(XrFrameEndInfo, XR_TYPE_FRAME_END_INFO) \ - _(XrViewLocateInfo, XR_TYPE_VIEW_LOCATE_INFO) \ - _(XrViewState, XR_TYPE_VIEW_STATE) \ - _(XrView, XR_TYPE_VIEW) \ - _(XrActionSetCreateInfo, XR_TYPE_ACTION_SET_CREATE_INFO) \ - _(XrActionCreateInfo, XR_TYPE_ACTION_CREATE_INFO) \ - _(XrInteractionProfileSuggestedBinding, XR_TYPE_INTERACTION_PROFILE_SUGGESTED_BINDING) \ - _(XrSessionActionSetsAttachInfo, XR_TYPE_SESSION_ACTION_SETS_ATTACH_INFO) \ - _(XrInteractionProfileState, XR_TYPE_INTERACTION_PROFILE_STATE) \ - _(XrActionStateGetInfo, XR_TYPE_ACTION_STATE_GET_INFO) \ - _(XrActionStateBoolean, XR_TYPE_ACTION_STATE_BOOLEAN) \ - _(XrActionStateFloat, XR_TYPE_ACTION_STATE_FLOAT) \ - _(XrActionStateVector2f, XR_TYPE_ACTION_STATE_VECTOR2F) \ - _(XrActionStatePose, XR_TYPE_ACTION_STATE_POSE) \ - _(XrActionsSyncInfo, XR_TYPE_ACTIONS_SYNC_INFO) \ - _(XrBoundSourcesForActionEnumerateInfo, XR_TYPE_BOUND_SOURCES_FOR_ACTION_ENUMERATE_INFO) \ - _(XrInputSourceLocalizedNameGetInfo, XR_TYPE_INPUT_SOURCE_LOCALIZED_NAME_GET_INFO) \ - _(XrHapticActionInfo, XR_TYPE_HAPTIC_ACTION_INFO) \ - _(XrCompositionLayerProjectionView, XR_TYPE_COMPOSITION_LAYER_PROJECTION_VIEW) \ - _(XrCompositionLayerProjection, XR_TYPE_COMPOSITION_LAYER_PROJECTION) \ - _(XrCompositionLayerQuad, XR_TYPE_COMPOSITION_LAYER_QUAD) \ - _(XrEventDataEventsLost, XR_TYPE_EVENT_DATA_EVENTS_LOST) \ - _(XrEventDataInstanceLossPending, XR_TYPE_EVENT_DATA_INSTANCE_LOSS_PENDING) \ - _(XrEventDataSessionStateChanged, XR_TYPE_EVENT_DATA_SESSION_STATE_CHANGED) \ - _(XrEventDataReferenceSpaceChangePending, XR_TYPE_EVENT_DATA_REFERENCE_SPACE_CHANGE_PENDING) \ - _(XrEventDataInteractionProfileChanged, XR_TYPE_EVENT_DATA_INTERACTION_PROFILE_CHANGED) \ - _(XrHapticVibration, XR_TYPE_HAPTIC_VIBRATION) \ - _(XrSpacesLocateInfo, XR_TYPE_SPACES_LOCATE_INFO) \ - _(XrSpaceLocations, XR_TYPE_SPACE_LOCATIONS) \ - _(XrSpaceVelocities, XR_TYPE_SPACE_VELOCITIES) \ - _(XrCompositionLayerCubeKHR, XR_TYPE_COMPOSITION_LAYER_CUBE_KHR) \ - _(XrCompositionLayerDepthInfoKHR, XR_TYPE_COMPOSITION_LAYER_DEPTH_INFO_KHR) \ - _(XrCompositionLayerCylinderKHR, XR_TYPE_COMPOSITION_LAYER_CYLINDER_KHR) \ - _(XrCompositionLayerEquirectKHR, XR_TYPE_COMPOSITION_LAYER_EQUIRECT_KHR) \ - _(XrVisibilityMaskKHR, XR_TYPE_VISIBILITY_MASK_KHR) \ - _(XrEventDataVisibilityMaskChangedKHR, XR_TYPE_EVENT_DATA_VISIBILITY_MASK_CHANGED_KHR) \ - _(XrCompositionLayerColorScaleBiasKHR, XR_TYPE_COMPOSITION_LAYER_COLOR_SCALE_BIAS_KHR) \ - _(XrCompositionLayerEquirect2KHR, XR_TYPE_COMPOSITION_LAYER_EQUIRECT2_KHR) \ - _(XrBindingModificationsKHR, XR_TYPE_BINDING_MODIFICATIONS_KHR) \ - _(XrEventDataPerfSettingsEXT, XR_TYPE_EVENT_DATA_PERF_SETTINGS_EXT) \ - _(XrDebugUtilsObjectNameInfoEXT, XR_TYPE_DEBUG_UTILS_OBJECT_NAME_INFO_EXT) \ - _(XrDebugUtilsLabelEXT, XR_TYPE_DEBUG_UTILS_LABEL_EXT) \ - _(XrDebugUtilsMessengerCallbackDataEXT, XR_TYPE_DEBUG_UTILS_MESSENGER_CALLBACK_DATA_EXT) \ - _(XrDebugUtilsMessengerCreateInfoEXT, XR_TYPE_DEBUG_UTILS_MESSENGER_CREATE_INFO_EXT) \ - _(XrSystemEyeGazeInteractionPropertiesEXT, XR_TYPE_SYSTEM_EYE_GAZE_INTERACTION_PROPERTIES_EXT) \ - _(XrEyeGazeSampleTimeEXT, XR_TYPE_EYE_GAZE_SAMPLE_TIME_EXT) \ - _(XrSessionCreateInfoOverlayEXTX, XR_TYPE_SESSION_CREATE_INFO_OVERLAY_EXTX) \ - _(XrEventDataMainSessionVisibilityChangedEXTX, XR_TYPE_EVENT_DATA_MAIN_SESSION_VISIBILITY_CHANGED_EXTX) \ - _(XrSpatialAnchorCreateInfoMSFT, XR_TYPE_SPATIAL_ANCHOR_CREATE_INFO_MSFT) \ - _(XrSpatialAnchorSpaceCreateInfoMSFT, XR_TYPE_SPATIAL_ANCHOR_SPACE_CREATE_INFO_MSFT) \ - _(XrCompositionLayerImageLayoutFB, XR_TYPE_COMPOSITION_LAYER_IMAGE_LAYOUT_FB) \ - _(XrCompositionLayerAlphaBlendFB, XR_TYPE_COMPOSITION_LAYER_ALPHA_BLEND_FB) \ - _(XrViewConfigurationDepthRangeEXT, XR_TYPE_VIEW_CONFIGURATION_DEPTH_RANGE_EXT) \ - _(XrSpatialGraphNodeSpaceCreateInfoMSFT, XR_TYPE_SPATIAL_GRAPH_NODE_SPACE_CREATE_INFO_MSFT) \ - _(XrSpatialGraphStaticNodeBindingCreateInfoMSFT, XR_TYPE_SPATIAL_GRAPH_STATIC_NODE_BINDING_CREATE_INFO_MSFT) \ - _(XrSpatialGraphNodeBindingPropertiesGetInfoMSFT, XR_TYPE_SPATIAL_GRAPH_NODE_BINDING_PROPERTIES_GET_INFO_MSFT) \ - _(XrSpatialGraphNodeBindingPropertiesMSFT, XR_TYPE_SPATIAL_GRAPH_NODE_BINDING_PROPERTIES_MSFT) \ - _(XrSystemHandTrackingPropertiesEXT, XR_TYPE_SYSTEM_HAND_TRACKING_PROPERTIES_EXT) \ - _(XrHandTrackerCreateInfoEXT, XR_TYPE_HAND_TRACKER_CREATE_INFO_EXT) \ - _(XrHandJointsLocateInfoEXT, XR_TYPE_HAND_JOINTS_LOCATE_INFO_EXT) \ - _(XrHandJointLocationsEXT, XR_TYPE_HAND_JOINT_LOCATIONS_EXT) \ - _(XrHandJointVelocitiesEXT, XR_TYPE_HAND_JOINT_VELOCITIES_EXT) \ - _(XrSystemHandTrackingMeshPropertiesMSFT, XR_TYPE_SYSTEM_HAND_TRACKING_MESH_PROPERTIES_MSFT) \ - _(XrHandMeshSpaceCreateInfoMSFT, XR_TYPE_HAND_MESH_SPACE_CREATE_INFO_MSFT) \ - _(XrHandMeshUpdateInfoMSFT, XR_TYPE_HAND_MESH_UPDATE_INFO_MSFT) \ - _(XrHandMeshMSFT, XR_TYPE_HAND_MESH_MSFT) \ - _(XrHandPoseTypeInfoMSFT, XR_TYPE_HAND_POSE_TYPE_INFO_MSFT) \ - _(XrSecondaryViewConfigurationSessionBeginInfoMSFT, XR_TYPE_SECONDARY_VIEW_CONFIGURATION_SESSION_BEGIN_INFO_MSFT) \ - _(XrSecondaryViewConfigurationStateMSFT, XR_TYPE_SECONDARY_VIEW_CONFIGURATION_STATE_MSFT) \ - _(XrSecondaryViewConfigurationFrameStateMSFT, XR_TYPE_SECONDARY_VIEW_CONFIGURATION_FRAME_STATE_MSFT) \ - _(XrSecondaryViewConfigurationLayerInfoMSFT, XR_TYPE_SECONDARY_VIEW_CONFIGURATION_LAYER_INFO_MSFT) \ - _(XrSecondaryViewConfigurationFrameEndInfoMSFT, XR_TYPE_SECONDARY_VIEW_CONFIGURATION_FRAME_END_INFO_MSFT) \ - _(XrSecondaryViewConfigurationSwapchainCreateInfoMSFT, XR_TYPE_SECONDARY_VIEW_CONFIGURATION_SWAPCHAIN_CREATE_INFO_MSFT) \ - _(XrControllerModelKeyStateMSFT, XR_TYPE_CONTROLLER_MODEL_KEY_STATE_MSFT) \ - _(XrControllerModelNodePropertiesMSFT, XR_TYPE_CONTROLLER_MODEL_NODE_PROPERTIES_MSFT) \ - _(XrControllerModelPropertiesMSFT, XR_TYPE_CONTROLLER_MODEL_PROPERTIES_MSFT) \ - _(XrControllerModelNodeStateMSFT, XR_TYPE_CONTROLLER_MODEL_NODE_STATE_MSFT) \ - _(XrControllerModelStateMSFT, XR_TYPE_CONTROLLER_MODEL_STATE_MSFT) \ - _(XrViewConfigurationViewFovEPIC, XR_TYPE_VIEW_CONFIGURATION_VIEW_FOV_EPIC) \ - _(XrCompositionLayerReprojectionInfoMSFT, XR_TYPE_COMPOSITION_LAYER_REPROJECTION_INFO_MSFT) \ - _(XrCompositionLayerReprojectionPlaneOverrideMSFT, XR_TYPE_COMPOSITION_LAYER_REPROJECTION_PLANE_OVERRIDE_MSFT) \ - _(XrCompositionLayerSecureContentFB, XR_TYPE_COMPOSITION_LAYER_SECURE_CONTENT_FB) \ - _(XrSystemBodyTrackingPropertiesFB, XR_TYPE_SYSTEM_BODY_TRACKING_PROPERTIES_FB) \ - _(XrBodyTrackerCreateInfoFB, XR_TYPE_BODY_TRACKER_CREATE_INFO_FB) \ - _(XrBodySkeletonFB, XR_TYPE_BODY_SKELETON_FB) \ - _(XrBodyJointsLocateInfoFB, XR_TYPE_BODY_JOINTS_LOCATE_INFO_FB) \ - _(XrBodyJointLocationsFB, XR_TYPE_BODY_JOINT_LOCATIONS_FB) \ - _(XrInteractionProfileDpadBindingEXT, XR_TYPE_INTERACTION_PROFILE_DPAD_BINDING_EXT) \ - _(XrInteractionProfileAnalogThresholdVALVE, XR_TYPE_INTERACTION_PROFILE_ANALOG_THRESHOLD_VALVE) \ - _(XrHandJointsMotionRangeInfoEXT, XR_TYPE_HAND_JOINTS_MOTION_RANGE_INFO_EXT) \ - _(XrSceneObserverCreateInfoMSFT, XR_TYPE_SCENE_OBSERVER_CREATE_INFO_MSFT) \ - _(XrSceneCreateInfoMSFT, XR_TYPE_SCENE_CREATE_INFO_MSFT) \ - _(XrNewSceneComputeInfoMSFT, XR_TYPE_NEW_SCENE_COMPUTE_INFO_MSFT) \ - _(XrVisualMeshComputeLodInfoMSFT, XR_TYPE_VISUAL_MESH_COMPUTE_LOD_INFO_MSFT) \ - _(XrSceneComponentsMSFT, XR_TYPE_SCENE_COMPONENTS_MSFT) \ - _(XrSceneComponentsGetInfoMSFT, XR_TYPE_SCENE_COMPONENTS_GET_INFO_MSFT) \ - _(XrSceneComponentLocationsMSFT, XR_TYPE_SCENE_COMPONENT_LOCATIONS_MSFT) \ - _(XrSceneComponentsLocateInfoMSFT, XR_TYPE_SCENE_COMPONENTS_LOCATE_INFO_MSFT) \ - _(XrSceneObjectsMSFT, XR_TYPE_SCENE_OBJECTS_MSFT) \ - _(XrSceneComponentParentFilterInfoMSFT, XR_TYPE_SCENE_COMPONENT_PARENT_FILTER_INFO_MSFT) \ - _(XrSceneObjectTypesFilterInfoMSFT, XR_TYPE_SCENE_OBJECT_TYPES_FILTER_INFO_MSFT) \ - _(XrScenePlanesMSFT, XR_TYPE_SCENE_PLANES_MSFT) \ - _(XrScenePlaneAlignmentFilterInfoMSFT, XR_TYPE_SCENE_PLANE_ALIGNMENT_FILTER_INFO_MSFT) \ - _(XrSceneMeshesMSFT, XR_TYPE_SCENE_MESHES_MSFT) \ - _(XrSceneMeshBuffersGetInfoMSFT, XR_TYPE_SCENE_MESH_BUFFERS_GET_INFO_MSFT) \ - _(XrSceneMeshBuffersMSFT, XR_TYPE_SCENE_MESH_BUFFERS_MSFT) \ - _(XrSceneMeshVertexBufferMSFT, XR_TYPE_SCENE_MESH_VERTEX_BUFFER_MSFT) \ - _(XrSceneMeshIndicesUint32MSFT, XR_TYPE_SCENE_MESH_INDICES_UINT32_MSFT) \ - _(XrSceneMeshIndicesUint16MSFT, XR_TYPE_SCENE_MESH_INDICES_UINT16_MSFT) \ - _(XrSerializedSceneFragmentDataGetInfoMSFT, XR_TYPE_SERIALIZED_SCENE_FRAGMENT_DATA_GET_INFO_MSFT) \ - _(XrSceneDeserializeInfoMSFT, XR_TYPE_SCENE_DESERIALIZE_INFO_MSFT) \ - _(XrEventDataDisplayRefreshRateChangedFB, XR_TYPE_EVENT_DATA_DISPLAY_REFRESH_RATE_CHANGED_FB) \ - _(XrViveTrackerPathsHTCX, XR_TYPE_VIVE_TRACKER_PATHS_HTCX) \ - _(XrEventDataViveTrackerConnectedHTCX, XR_TYPE_EVENT_DATA_VIVE_TRACKER_CONNECTED_HTCX) \ - _(XrSystemFacialTrackingPropertiesHTC, XR_TYPE_SYSTEM_FACIAL_TRACKING_PROPERTIES_HTC) \ - _(XrFacialExpressionsHTC, XR_TYPE_FACIAL_EXPRESSIONS_HTC) \ - _(XrFacialTrackerCreateInfoHTC, XR_TYPE_FACIAL_TRACKER_CREATE_INFO_HTC) \ - _(XrSystemColorSpacePropertiesFB, XR_TYPE_SYSTEM_COLOR_SPACE_PROPERTIES_FB) \ - _(XrHandTrackingMeshFB, XR_TYPE_HAND_TRACKING_MESH_FB) \ - _(XrHandTrackingScaleFB, XR_TYPE_HAND_TRACKING_SCALE_FB) \ - _(XrHandTrackingAimStateFB, XR_TYPE_HAND_TRACKING_AIM_STATE_FB) \ - _(XrHandTrackingCapsulesStateFB, XR_TYPE_HAND_TRACKING_CAPSULES_STATE_FB) \ - _(XrSystemSpatialEntityPropertiesFB, XR_TYPE_SYSTEM_SPATIAL_ENTITY_PROPERTIES_FB) \ - _(XrSpatialAnchorCreateInfoFB, XR_TYPE_SPATIAL_ANCHOR_CREATE_INFO_FB) \ - _(XrSpaceComponentStatusSetInfoFB, XR_TYPE_SPACE_COMPONENT_STATUS_SET_INFO_FB) \ - _(XrSpaceComponentStatusFB, XR_TYPE_SPACE_COMPONENT_STATUS_FB) \ - _(XrEventDataSpatialAnchorCreateCompleteFB, XR_TYPE_EVENT_DATA_SPATIAL_ANCHOR_CREATE_COMPLETE_FB) \ - _(XrEventDataSpaceSetStatusCompleteFB, XR_TYPE_EVENT_DATA_SPACE_SET_STATUS_COMPLETE_FB) \ - _(XrFoveationProfileCreateInfoFB, XR_TYPE_FOVEATION_PROFILE_CREATE_INFO_FB) \ - _(XrSwapchainCreateInfoFoveationFB, XR_TYPE_SWAPCHAIN_CREATE_INFO_FOVEATION_FB) \ - _(XrSwapchainStateFoveationFB, XR_TYPE_SWAPCHAIN_STATE_FOVEATION_FB) \ - _(XrFoveationLevelProfileCreateInfoFB, XR_TYPE_FOVEATION_LEVEL_PROFILE_CREATE_INFO_FB) \ - _(XrSystemKeyboardTrackingPropertiesFB, XR_TYPE_SYSTEM_KEYBOARD_TRACKING_PROPERTIES_FB) \ - _(XrKeyboardSpaceCreateInfoFB, XR_TYPE_KEYBOARD_SPACE_CREATE_INFO_FB) \ - _(XrKeyboardTrackingQueryFB, XR_TYPE_KEYBOARD_TRACKING_QUERY_FB) \ - _(XrTriangleMeshCreateInfoFB, XR_TYPE_TRIANGLE_MESH_CREATE_INFO_FB) \ - _(XrSystemPassthroughPropertiesFB, XR_TYPE_SYSTEM_PASSTHROUGH_PROPERTIES_FB) \ - _(XrSystemPassthroughProperties2FB, XR_TYPE_SYSTEM_PASSTHROUGH_PROPERTIES2_FB) \ - _(XrPassthroughCreateInfoFB, XR_TYPE_PASSTHROUGH_CREATE_INFO_FB) \ - _(XrPassthroughLayerCreateInfoFB, XR_TYPE_PASSTHROUGH_LAYER_CREATE_INFO_FB) \ - _(XrCompositionLayerPassthroughFB, XR_TYPE_COMPOSITION_LAYER_PASSTHROUGH_FB) \ - _(XrGeometryInstanceCreateInfoFB, XR_TYPE_GEOMETRY_INSTANCE_CREATE_INFO_FB) \ - _(XrGeometryInstanceTransformFB, XR_TYPE_GEOMETRY_INSTANCE_TRANSFORM_FB) \ - _(XrPassthroughStyleFB, XR_TYPE_PASSTHROUGH_STYLE_FB) \ - _(XrPassthroughColorMapMonoToRgbaFB, XR_TYPE_PASSTHROUGH_COLOR_MAP_MONO_TO_RGBA_FB) \ - _(XrPassthroughColorMapMonoToMonoFB, XR_TYPE_PASSTHROUGH_COLOR_MAP_MONO_TO_MONO_FB) \ - _(XrPassthroughBrightnessContrastSaturationFB, XR_TYPE_PASSTHROUGH_BRIGHTNESS_CONTRAST_SATURATION_FB) \ - _(XrEventDataPassthroughStateChangedFB, XR_TYPE_EVENT_DATA_PASSTHROUGH_STATE_CHANGED_FB) \ - _(XrRenderModelPathInfoFB, XR_TYPE_RENDER_MODEL_PATH_INFO_FB) \ - _(XrRenderModelPropertiesFB, XR_TYPE_RENDER_MODEL_PROPERTIES_FB) \ - _(XrRenderModelBufferFB, XR_TYPE_RENDER_MODEL_BUFFER_FB) \ - _(XrRenderModelLoadInfoFB, XR_TYPE_RENDER_MODEL_LOAD_INFO_FB) \ - _(XrSystemRenderModelPropertiesFB, XR_TYPE_SYSTEM_RENDER_MODEL_PROPERTIES_FB) \ - _(XrRenderModelCapabilitiesRequestFB, XR_TYPE_RENDER_MODEL_CAPABILITIES_REQUEST_FB) \ - _(XrViewLocateFoveatedRenderingVARJO, XR_TYPE_VIEW_LOCATE_FOVEATED_RENDERING_VARJO) \ - _(XrFoveatedViewConfigurationViewVARJO, XR_TYPE_FOVEATED_VIEW_CONFIGURATION_VIEW_VARJO) \ - _(XrSystemFoveatedRenderingPropertiesVARJO, XR_TYPE_SYSTEM_FOVEATED_RENDERING_PROPERTIES_VARJO) \ - _(XrCompositionLayerDepthTestVARJO, XR_TYPE_COMPOSITION_LAYER_DEPTH_TEST_VARJO) \ - _(XrSystemMarkerTrackingPropertiesVARJO, XR_TYPE_SYSTEM_MARKER_TRACKING_PROPERTIES_VARJO) \ - _(XrEventDataMarkerTrackingUpdateVARJO, XR_TYPE_EVENT_DATA_MARKER_TRACKING_UPDATE_VARJO) \ - _(XrMarkerSpaceCreateInfoVARJO, XR_TYPE_MARKER_SPACE_CREATE_INFO_VARJO) \ - _(XrFrameEndInfoML, XR_TYPE_FRAME_END_INFO_ML) \ - _(XrGlobalDimmerFrameEndInfoML, XR_TYPE_GLOBAL_DIMMER_FRAME_END_INFO_ML) \ - _(XrSystemMarkerUnderstandingPropertiesML, XR_TYPE_SYSTEM_MARKER_UNDERSTANDING_PROPERTIES_ML) \ - _(XrMarkerDetectorCreateInfoML, XR_TYPE_MARKER_DETECTOR_CREATE_INFO_ML) \ - _(XrMarkerDetectorArucoInfoML, XR_TYPE_MARKER_DETECTOR_ARUCO_INFO_ML) \ - _(XrMarkerDetectorSizeInfoML, XR_TYPE_MARKER_DETECTOR_SIZE_INFO_ML) \ - _(XrMarkerDetectorAprilTagInfoML, XR_TYPE_MARKER_DETECTOR_APRIL_TAG_INFO_ML) \ - _(XrMarkerDetectorCustomProfileInfoML, XR_TYPE_MARKER_DETECTOR_CUSTOM_PROFILE_INFO_ML) \ - _(XrMarkerDetectorSnapshotInfoML, XR_TYPE_MARKER_DETECTOR_SNAPSHOT_INFO_ML) \ - _(XrMarkerDetectorStateML, XR_TYPE_MARKER_DETECTOR_STATE_ML) \ - _(XrMarkerSpaceCreateInfoML, XR_TYPE_MARKER_SPACE_CREATE_INFO_ML) \ - _(XrLocalizationMapML, XR_TYPE_LOCALIZATION_MAP_ML) \ - _(XrEventDataLocalizationChangedML, XR_TYPE_EVENT_DATA_LOCALIZATION_CHANGED_ML) \ - _(XrMapLocalizationRequestInfoML, XR_TYPE_MAP_LOCALIZATION_REQUEST_INFO_ML) \ - _(XrLocalizationMapImportInfoML, XR_TYPE_LOCALIZATION_MAP_IMPORT_INFO_ML) \ - _(XrLocalizationEnableEventsInfoML, XR_TYPE_LOCALIZATION_ENABLE_EVENTS_INFO_ML) \ - _(XrSpatialAnchorPersistenceInfoMSFT, XR_TYPE_SPATIAL_ANCHOR_PERSISTENCE_INFO_MSFT) \ - _(XrSpatialAnchorFromPersistedAnchorCreateInfoMSFT, XR_TYPE_SPATIAL_ANCHOR_FROM_PERSISTED_ANCHOR_CREATE_INFO_MSFT) \ - _(XrSceneMarkersMSFT, XR_TYPE_SCENE_MARKERS_MSFT) \ - _(XrSceneMarkerTypeFilterMSFT, XR_TYPE_SCENE_MARKER_TYPE_FILTER_MSFT) \ - _(XrSceneMarkerQRCodesMSFT, XR_TYPE_SCENE_MARKER_QR_CODES_MSFT) \ - _(XrSpaceQueryInfoFB, XR_TYPE_SPACE_QUERY_INFO_FB) \ - _(XrSpaceStorageLocationFilterInfoFB, XR_TYPE_SPACE_STORAGE_LOCATION_FILTER_INFO_FB) \ - _(XrSpaceUuidFilterInfoFB, XR_TYPE_SPACE_UUID_FILTER_INFO_FB) \ - _(XrSpaceComponentFilterInfoFB, XR_TYPE_SPACE_COMPONENT_FILTER_INFO_FB) \ - _(XrSpaceQueryResultsFB, XR_TYPE_SPACE_QUERY_RESULTS_FB) \ - _(XrEventDataSpaceQueryResultsAvailableFB, XR_TYPE_EVENT_DATA_SPACE_QUERY_RESULTS_AVAILABLE_FB) \ - _(XrEventDataSpaceQueryCompleteFB, XR_TYPE_EVENT_DATA_SPACE_QUERY_COMPLETE_FB) \ - _(XrSpaceSaveInfoFB, XR_TYPE_SPACE_SAVE_INFO_FB) \ - _(XrSpaceEraseInfoFB, XR_TYPE_SPACE_ERASE_INFO_FB) \ - _(XrEventDataSpaceSaveCompleteFB, XR_TYPE_EVENT_DATA_SPACE_SAVE_COMPLETE_FB) \ - _(XrEventDataSpaceEraseCompleteFB, XR_TYPE_EVENT_DATA_SPACE_ERASE_COMPLETE_FB) \ - _(XrSpaceShareInfoFB, XR_TYPE_SPACE_SHARE_INFO_FB) \ - _(XrEventDataSpaceShareCompleteFB, XR_TYPE_EVENT_DATA_SPACE_SHARE_COMPLETE_FB) \ - _(XrCompositionLayerSpaceWarpInfoFB, XR_TYPE_COMPOSITION_LAYER_SPACE_WARP_INFO_FB) \ - _(XrSystemSpaceWarpPropertiesFB, XR_TYPE_SYSTEM_SPACE_WARP_PROPERTIES_FB) \ - _(XrHapticAmplitudeEnvelopeVibrationFB, XR_TYPE_HAPTIC_AMPLITUDE_ENVELOPE_VIBRATION_FB) \ - _(XrSemanticLabelsFB, XR_TYPE_SEMANTIC_LABELS_FB) \ - _(XrRoomLayoutFB, XR_TYPE_ROOM_LAYOUT_FB) \ - _(XrBoundary2DFB, XR_TYPE_BOUNDARY_2D_FB) \ - _(XrSemanticLabelsSupportInfoFB, XR_TYPE_SEMANTIC_LABELS_SUPPORT_INFO_FB) \ - _(XrDigitalLensControlALMALENCE, XR_TYPE_DIGITAL_LENS_CONTROL_ALMALENCE) \ - _(XrEventDataSceneCaptureCompleteFB, XR_TYPE_EVENT_DATA_SCENE_CAPTURE_COMPLETE_FB) \ - _(XrSceneCaptureRequestInfoFB, XR_TYPE_SCENE_CAPTURE_REQUEST_INFO_FB) \ - _(XrSpaceContainerFB, XR_TYPE_SPACE_CONTAINER_FB) \ - _(XrFoveationEyeTrackedProfileCreateInfoMETA, XR_TYPE_FOVEATION_EYE_TRACKED_PROFILE_CREATE_INFO_META) \ - _(XrFoveationEyeTrackedStateMETA, XR_TYPE_FOVEATION_EYE_TRACKED_STATE_META) \ - _(XrSystemFoveationEyeTrackedPropertiesMETA, XR_TYPE_SYSTEM_FOVEATION_EYE_TRACKED_PROPERTIES_META) \ - _(XrSystemFaceTrackingPropertiesFB, XR_TYPE_SYSTEM_FACE_TRACKING_PROPERTIES_FB) \ - _(XrFaceTrackerCreateInfoFB, XR_TYPE_FACE_TRACKER_CREATE_INFO_FB) \ - _(XrFaceExpressionInfoFB, XR_TYPE_FACE_EXPRESSION_INFO_FB) \ - _(XrFaceExpressionWeightsFB, XR_TYPE_FACE_EXPRESSION_WEIGHTS_FB) \ - _(XrEyeTrackerCreateInfoFB, XR_TYPE_EYE_TRACKER_CREATE_INFO_FB) \ - _(XrEyeGazesInfoFB, XR_TYPE_EYE_GAZES_INFO_FB) \ - _(XrSystemEyeTrackingPropertiesFB, XR_TYPE_SYSTEM_EYE_TRACKING_PROPERTIES_FB) \ - _(XrEyeGazesFB, XR_TYPE_EYE_GAZES_FB) \ - _(XrPassthroughKeyboardHandsIntensityFB, XR_TYPE_PASSTHROUGH_KEYBOARD_HANDS_INTENSITY_FB) \ - _(XrCompositionLayerSettingsFB, XR_TYPE_COMPOSITION_LAYER_SETTINGS_FB) \ - _(XrHapticPcmVibrationFB, XR_TYPE_HAPTIC_PCM_VIBRATION_FB) \ - _(XrDevicePcmSampleRateStateFB, XR_TYPE_DEVICE_PCM_SAMPLE_RATE_STATE_FB) \ - _(XrCompositionLayerDepthTestFB, XR_TYPE_COMPOSITION_LAYER_DEPTH_TEST_FB) \ - _(XrLocalDimmingFrameEndInfoMETA, XR_TYPE_LOCAL_DIMMING_FRAME_END_INFO_META) \ - _(XrPassthroughPreferencesMETA, XR_TYPE_PASSTHROUGH_PREFERENCES_META) \ - _(XrSystemVirtualKeyboardPropertiesMETA, XR_TYPE_SYSTEM_VIRTUAL_KEYBOARD_PROPERTIES_META) \ - _(XrVirtualKeyboardCreateInfoMETA, XR_TYPE_VIRTUAL_KEYBOARD_CREATE_INFO_META) \ - _(XrVirtualKeyboardSpaceCreateInfoMETA, XR_TYPE_VIRTUAL_KEYBOARD_SPACE_CREATE_INFO_META) \ - _(XrVirtualKeyboardLocationInfoMETA, XR_TYPE_VIRTUAL_KEYBOARD_LOCATION_INFO_META) \ - _(XrVirtualKeyboardModelVisibilitySetInfoMETA, XR_TYPE_VIRTUAL_KEYBOARD_MODEL_VISIBILITY_SET_INFO_META) \ - _(XrVirtualKeyboardAnimationStateMETA, XR_TYPE_VIRTUAL_KEYBOARD_ANIMATION_STATE_META) \ - _(XrVirtualKeyboardModelAnimationStatesMETA, XR_TYPE_VIRTUAL_KEYBOARD_MODEL_ANIMATION_STATES_META) \ - _(XrVirtualKeyboardTextureDataMETA, XR_TYPE_VIRTUAL_KEYBOARD_TEXTURE_DATA_META) \ - _(XrVirtualKeyboardInputInfoMETA, XR_TYPE_VIRTUAL_KEYBOARD_INPUT_INFO_META) \ - _(XrVirtualKeyboardTextContextChangeInfoMETA, XR_TYPE_VIRTUAL_KEYBOARD_TEXT_CONTEXT_CHANGE_INFO_META) \ - _(XrEventDataVirtualKeyboardCommitTextMETA, XR_TYPE_EVENT_DATA_VIRTUAL_KEYBOARD_COMMIT_TEXT_META) \ - _(XrEventDataVirtualKeyboardBackspaceMETA, XR_TYPE_EVENT_DATA_VIRTUAL_KEYBOARD_BACKSPACE_META) \ - _(XrEventDataVirtualKeyboardEnterMETA, XR_TYPE_EVENT_DATA_VIRTUAL_KEYBOARD_ENTER_META) \ - _(XrEventDataVirtualKeyboardShownMETA, XR_TYPE_EVENT_DATA_VIRTUAL_KEYBOARD_SHOWN_META) \ - _(XrEventDataVirtualKeyboardHiddenMETA, XR_TYPE_EVENT_DATA_VIRTUAL_KEYBOARD_HIDDEN_META) \ - _(XrExternalCameraOCULUS, XR_TYPE_EXTERNAL_CAMERA_OCULUS) \ - _(XrPerformanceMetricsStateMETA, XR_TYPE_PERFORMANCE_METRICS_STATE_META) \ - _(XrPerformanceMetricsCounterMETA, XR_TYPE_PERFORMANCE_METRICS_COUNTER_META) \ - _(XrSpaceListSaveInfoFB, XR_TYPE_SPACE_LIST_SAVE_INFO_FB) \ - _(XrEventDataSpaceListSaveCompleteFB, XR_TYPE_EVENT_DATA_SPACE_LIST_SAVE_COMPLETE_FB) \ - _(XrSpaceUserCreateInfoFB, XR_TYPE_SPACE_USER_CREATE_INFO_FB) \ - _(XrSystemHeadsetIdPropertiesMETA, XR_TYPE_SYSTEM_HEADSET_ID_PROPERTIES_META) \ - _(XrRecommendedLayerResolutionMETA, XR_TYPE_RECOMMENDED_LAYER_RESOLUTION_META) \ - _(XrRecommendedLayerResolutionGetInfoMETA, XR_TYPE_RECOMMENDED_LAYER_RESOLUTION_GET_INFO_META) \ - _(XrPassthroughColorLutCreateInfoMETA, XR_TYPE_PASSTHROUGH_COLOR_LUT_CREATE_INFO_META) \ - _(XrPassthroughColorLutUpdateInfoMETA, XR_TYPE_PASSTHROUGH_COLOR_LUT_UPDATE_INFO_META) \ - _(XrPassthroughColorMapLutMETA, XR_TYPE_PASSTHROUGH_COLOR_MAP_LUT_META) \ - _(XrPassthroughColorMapInterpolatedLutMETA, XR_TYPE_PASSTHROUGH_COLOR_MAP_INTERPOLATED_LUT_META) \ - _(XrSystemPassthroughColorLutPropertiesMETA, XR_TYPE_SYSTEM_PASSTHROUGH_COLOR_LUT_PROPERTIES_META) \ - _(XrSpaceTriangleMeshGetInfoMETA, XR_TYPE_SPACE_TRIANGLE_MESH_GET_INFO_META) \ - _(XrSpaceTriangleMeshMETA, XR_TYPE_SPACE_TRIANGLE_MESH_META) \ - _(XrSystemFaceTrackingProperties2FB, XR_TYPE_SYSTEM_FACE_TRACKING_PROPERTIES2_FB) \ - _(XrFaceTrackerCreateInfo2FB, XR_TYPE_FACE_TRACKER_CREATE_INFO2_FB) \ - _(XrFaceExpressionInfo2FB, XR_TYPE_FACE_EXPRESSION_INFO2_FB) \ - _(XrFaceExpressionWeights2FB, XR_TYPE_FACE_EXPRESSION_WEIGHTS2_FB) \ - _(XrEnvironmentDepthProviderCreateInfoMETA, XR_TYPE_ENVIRONMENT_DEPTH_PROVIDER_CREATE_INFO_META) \ - _(XrEnvironmentDepthSwapchainCreateInfoMETA, XR_TYPE_ENVIRONMENT_DEPTH_SWAPCHAIN_CREATE_INFO_META) \ - _(XrEnvironmentDepthSwapchainStateMETA, XR_TYPE_ENVIRONMENT_DEPTH_SWAPCHAIN_STATE_META) \ - _(XrEnvironmentDepthImageAcquireInfoMETA, XR_TYPE_ENVIRONMENT_DEPTH_IMAGE_ACQUIRE_INFO_META) \ - _(XrEnvironmentDepthImageViewMETA, XR_TYPE_ENVIRONMENT_DEPTH_IMAGE_VIEW_META) \ - _(XrEnvironmentDepthImageMETA, XR_TYPE_ENVIRONMENT_DEPTH_IMAGE_META) \ - _(XrEnvironmentDepthHandRemovalSetInfoMETA, XR_TYPE_ENVIRONMENT_DEPTH_HAND_REMOVAL_SET_INFO_META) \ - _(XrSystemEnvironmentDepthPropertiesMETA, XR_TYPE_SYSTEM_ENVIRONMENT_DEPTH_PROPERTIES_META) \ - _(XrPassthroughCreateInfoHTC, XR_TYPE_PASSTHROUGH_CREATE_INFO_HTC) \ - _(XrPassthroughColorHTC, XR_TYPE_PASSTHROUGH_COLOR_HTC) \ - _(XrPassthroughMeshTransformInfoHTC, XR_TYPE_PASSTHROUGH_MESH_TRANSFORM_INFO_HTC) \ - _(XrCompositionLayerPassthroughHTC, XR_TYPE_COMPOSITION_LAYER_PASSTHROUGH_HTC) \ - _(XrFoveationApplyInfoHTC, XR_TYPE_FOVEATION_APPLY_INFO_HTC) \ - _(XrFoveationDynamicModeInfoHTC, XR_TYPE_FOVEATION_DYNAMIC_MODE_INFO_HTC) \ - _(XrFoveationCustomModeInfoHTC, XR_TYPE_FOVEATION_CUSTOM_MODE_INFO_HTC) \ - _(XrSystemAnchorPropertiesHTC, XR_TYPE_SYSTEM_ANCHOR_PROPERTIES_HTC) \ - _(XrSpatialAnchorCreateInfoHTC, XR_TYPE_SPATIAL_ANCHOR_CREATE_INFO_HTC) \ - _(XrActiveActionSetPrioritiesEXT, XR_TYPE_ACTIVE_ACTION_SET_PRIORITIES_EXT) \ - _(XrSystemForceFeedbackCurlPropertiesMNDX, XR_TYPE_SYSTEM_FORCE_FEEDBACK_CURL_PROPERTIES_MNDX) \ - _(XrForceFeedbackCurlApplyLocationsMNDX, XR_TYPE_FORCE_FEEDBACK_CURL_APPLY_LOCATIONS_MNDX) \ - _(XrHandTrackingDataSourceInfoEXT, XR_TYPE_HAND_TRACKING_DATA_SOURCE_INFO_EXT) \ - _(XrHandTrackingDataSourceStateEXT, XR_TYPE_HAND_TRACKING_DATA_SOURCE_STATE_EXT) \ - _(XrSystemPlaneDetectionPropertiesEXT, XR_TYPE_SYSTEM_PLANE_DETECTION_PROPERTIES_EXT) \ - _(XrPlaneDetectorCreateInfoEXT, XR_TYPE_PLANE_DETECTOR_CREATE_INFO_EXT) \ - _(XrPlaneDetectorBeginInfoEXT, XR_TYPE_PLANE_DETECTOR_BEGIN_INFO_EXT) \ - _(XrPlaneDetectorGetInfoEXT, XR_TYPE_PLANE_DETECTOR_GET_INFO_EXT) \ - _(XrPlaneDetectorLocationEXT, XR_TYPE_PLANE_DETECTOR_LOCATION_EXT) \ - _(XrPlaneDetectorLocationsEXT, XR_TYPE_PLANE_DETECTOR_LOCATIONS_EXT) \ - _(XrPlaneDetectorPolygonBufferEXT, XR_TYPE_PLANE_DETECTOR_POLYGON_BUFFER_EXT) \ - _(XrFutureCancelInfoEXT, XR_TYPE_FUTURE_CANCEL_INFO_EXT) \ - _(XrFuturePollInfoEXT, XR_TYPE_FUTURE_POLL_INFO_EXT) \ - _(XrFutureCompletionEXT, XR_TYPE_FUTURE_COMPLETION_EXT) \ - _(XrFuturePollResultEXT, XR_TYPE_FUTURE_POLL_RESULT_EXT) \ - _(XrEventDataUserPresenceChangedEXT, XR_TYPE_EVENT_DATA_USER_PRESENCE_CHANGED_EXT) \ - _(XrSystemUserPresencePropertiesEXT, XR_TYPE_SYSTEM_USER_PRESENCE_PROPERTIES_EXT) \ - _(XrEventDataHeadsetFitChangedML, XR_TYPE_EVENT_DATA_HEADSET_FIT_CHANGED_ML) \ - _(XrEventDataEyeCalibrationChangedML, XR_TYPE_EVENT_DATA_EYE_CALIBRATION_CHANGED_ML) \ - _(XrUserCalibrationEnableEventsInfoML, XR_TYPE_USER_CALIBRATION_ENABLE_EVENTS_INFO_ML) \ - - -#if defined(XR_USE_GRAPHICS_API_D3D11) -/// Implementation detail of XR_LIST_STRUCTURE_TYPES() -/// Structure types available only when XR_USE_GRAPHICS_API_D3D11 is defined -#define XR_LIST_STRUCTURE_TYPES_XR_USE_GRAPHICS_API_D3D11(_) \ - _(XrGraphicsBindingD3D11KHR, XR_TYPE_GRAPHICS_BINDING_D3D11_KHR) \ - _(XrSwapchainImageD3D11KHR, XR_TYPE_SWAPCHAIN_IMAGE_D3D11_KHR) \ - _(XrGraphicsRequirementsD3D11KHR, XR_TYPE_GRAPHICS_REQUIREMENTS_D3D11_KHR) \ - -#else -#define XR_LIST_STRUCTURE_TYPES_XR_USE_GRAPHICS_API_D3D11(_) -#endif - -#if defined(XR_USE_GRAPHICS_API_D3D12) -/// Implementation detail of XR_LIST_STRUCTURE_TYPES() -/// Structure types available only when XR_USE_GRAPHICS_API_D3D12 is defined -#define XR_LIST_STRUCTURE_TYPES_XR_USE_GRAPHICS_API_D3D12(_) \ - _(XrGraphicsBindingD3D12KHR, XR_TYPE_GRAPHICS_BINDING_D3D12_KHR) \ - _(XrSwapchainImageD3D12KHR, XR_TYPE_SWAPCHAIN_IMAGE_D3D12_KHR) \ - _(XrGraphicsRequirementsD3D12KHR, XR_TYPE_GRAPHICS_REQUIREMENTS_D3D12_KHR) \ - -#else -#define XR_LIST_STRUCTURE_TYPES_XR_USE_GRAPHICS_API_D3D12(_) -#endif - -#if defined(XR_USE_GRAPHICS_API_OPENGL) -/// Implementation detail of XR_LIST_STRUCTURE_TYPES() -/// Structure types available only when XR_USE_GRAPHICS_API_OPENGL is defined -#define XR_LIST_STRUCTURE_TYPES_XR_USE_GRAPHICS_API_OPENGL(_) \ - _(XrSwapchainImageOpenGLKHR, XR_TYPE_SWAPCHAIN_IMAGE_OPENGL_KHR) \ - _(XrGraphicsRequirementsOpenGLKHR, XR_TYPE_GRAPHICS_REQUIREMENTS_OPENGL_KHR) \ - -#else -#define XR_LIST_STRUCTURE_TYPES_XR_USE_GRAPHICS_API_OPENGL(_) -#endif - -#if defined(XR_USE_GRAPHICS_API_OPENGL) && defined(XR_USE_PLATFORM_WAYLAND) -/// Implementation detail of XR_LIST_STRUCTURE_TYPES() -/// Structure types available only when XR_USE_GRAPHICS_API_OPENGL and XR_USE_PLATFORM_WAYLAND are defined -#define XR_LIST_STRUCTURE_TYPES_XR_USE_GRAPHICS_API_OPENGL_XR_USE_PLATFORM_WAYLAND(_) \ - _(XrGraphicsBindingOpenGLWaylandKHR, XR_TYPE_GRAPHICS_BINDING_OPENGL_WAYLAND_KHR) \ - -#else -#define XR_LIST_STRUCTURE_TYPES_XR_USE_GRAPHICS_API_OPENGL_XR_USE_PLATFORM_WAYLAND(_) -#endif - -#if defined(XR_USE_GRAPHICS_API_OPENGL) && defined(XR_USE_PLATFORM_WIN32) -/// Implementation detail of XR_LIST_STRUCTURE_TYPES() -/// Structure types available only when XR_USE_GRAPHICS_API_OPENGL and XR_USE_PLATFORM_WIN32 are defined -#define XR_LIST_STRUCTURE_TYPES_XR_USE_GRAPHICS_API_OPENGL_XR_USE_PLATFORM_WIN32(_) \ - _(XrGraphicsBindingOpenGLWin32KHR, XR_TYPE_GRAPHICS_BINDING_OPENGL_WIN32_KHR) \ - -#else -#define XR_LIST_STRUCTURE_TYPES_XR_USE_GRAPHICS_API_OPENGL_XR_USE_PLATFORM_WIN32(_) -#endif - -#if defined(XR_USE_GRAPHICS_API_OPENGL) && defined(XR_USE_PLATFORM_XCB) -/// Implementation detail of XR_LIST_STRUCTURE_TYPES() -/// Structure types available only when XR_USE_GRAPHICS_API_OPENGL and XR_USE_PLATFORM_XCB are defined -#define XR_LIST_STRUCTURE_TYPES_XR_USE_GRAPHICS_API_OPENGL_XR_USE_PLATFORM_XCB(_) \ - _(XrGraphicsBindingOpenGLXcbKHR, XR_TYPE_GRAPHICS_BINDING_OPENGL_XCB_KHR) \ - -#else -#define XR_LIST_STRUCTURE_TYPES_XR_USE_GRAPHICS_API_OPENGL_XR_USE_PLATFORM_XCB(_) -#endif - -#if defined(XR_USE_GRAPHICS_API_OPENGL) && defined(XR_USE_PLATFORM_XLIB) -/// Implementation detail of XR_LIST_STRUCTURE_TYPES() -/// Structure types available only when XR_USE_GRAPHICS_API_OPENGL and XR_USE_PLATFORM_XLIB are defined -#define XR_LIST_STRUCTURE_TYPES_XR_USE_GRAPHICS_API_OPENGL_XR_USE_PLATFORM_XLIB(_) \ - _(XrGraphicsBindingOpenGLXlibKHR, XR_TYPE_GRAPHICS_BINDING_OPENGL_XLIB_KHR) \ - -#else -#define XR_LIST_STRUCTURE_TYPES_XR_USE_GRAPHICS_API_OPENGL_XR_USE_PLATFORM_XLIB(_) -#endif - -#if defined(XR_USE_GRAPHICS_API_OPENGL_ES) -/// Implementation detail of XR_LIST_STRUCTURE_TYPES() -/// Structure types available only when XR_USE_GRAPHICS_API_OPENGL_ES is defined -#define XR_LIST_STRUCTURE_TYPES_XR_USE_GRAPHICS_API_OPENGL_ES(_) \ - _(XrSwapchainImageOpenGLESKHR, XR_TYPE_SWAPCHAIN_IMAGE_OPENGL_ES_KHR) \ - _(XrGraphicsRequirementsOpenGLESKHR, XR_TYPE_GRAPHICS_REQUIREMENTS_OPENGL_ES_KHR) \ - _(XrSwapchainStateSamplerOpenGLESFB, XR_TYPE_SWAPCHAIN_STATE_SAMPLER_OPENGL_ES_FB) \ - -#else -#define XR_LIST_STRUCTURE_TYPES_XR_USE_GRAPHICS_API_OPENGL_ES(_) -#endif - -#if defined(XR_USE_GRAPHICS_API_OPENGL_ES) && defined(XR_USE_PLATFORM_ANDROID) -/// Implementation detail of XR_LIST_STRUCTURE_TYPES() -/// Structure types available only when XR_USE_GRAPHICS_API_OPENGL_ES and XR_USE_PLATFORM_ANDROID are defined -#define XR_LIST_STRUCTURE_TYPES_XR_USE_GRAPHICS_API_OPENGL_ES_XR_USE_PLATFORM_ANDROID(_) \ - _(XrGraphicsBindingOpenGLESAndroidKHR, XR_TYPE_GRAPHICS_BINDING_OPENGL_ES_ANDROID_KHR) \ - -#else -#define XR_LIST_STRUCTURE_TYPES_XR_USE_GRAPHICS_API_OPENGL_ES_XR_USE_PLATFORM_ANDROID(_) -#endif - -#if defined(XR_USE_GRAPHICS_API_VULKAN) -/// Implementation detail of XR_LIST_STRUCTURE_TYPES() -/// Structure types available only when XR_USE_GRAPHICS_API_VULKAN is defined -#define XR_LIST_STRUCTURE_TYPES_XR_USE_GRAPHICS_API_VULKAN(_) \ - _(XrVulkanSwapchainFormatListCreateInfoKHR, XR_TYPE_VULKAN_SWAPCHAIN_FORMAT_LIST_CREATE_INFO_KHR) \ - _(XrGraphicsBindingVulkanKHR, XR_TYPE_GRAPHICS_BINDING_VULKAN_KHR) \ - _(XrSwapchainImageVulkanKHR, XR_TYPE_SWAPCHAIN_IMAGE_VULKAN_KHR) \ - _(XrGraphicsRequirementsVulkanKHR, XR_TYPE_GRAPHICS_REQUIREMENTS_VULKAN_KHR) \ - _(XrVulkanInstanceCreateInfoKHR, XR_TYPE_VULKAN_INSTANCE_CREATE_INFO_KHR) \ - _(XrVulkanDeviceCreateInfoKHR, XR_TYPE_VULKAN_DEVICE_CREATE_INFO_KHR) \ - _(XrVulkanGraphicsDeviceGetInfoKHR, XR_TYPE_VULKAN_GRAPHICS_DEVICE_GET_INFO_KHR) \ - _(XrSwapchainImageFoveationVulkanFB, XR_TYPE_SWAPCHAIN_IMAGE_FOVEATION_VULKAN_FB) \ - _(XrSwapchainStateSamplerVulkanFB, XR_TYPE_SWAPCHAIN_STATE_SAMPLER_VULKAN_FB) \ - _(XrVulkanSwapchainCreateInfoMETA, XR_TYPE_VULKAN_SWAPCHAIN_CREATE_INFO_META) \ - -#else -#define XR_LIST_STRUCTURE_TYPES_XR_USE_GRAPHICS_API_VULKAN(_) -#endif - -#if defined(XR_USE_PLATFORM_ANDROID) -/// Implementation detail of XR_LIST_STRUCTURE_TYPES() -/// Structure types available only when XR_USE_PLATFORM_ANDROID is defined -#define XR_LIST_STRUCTURE_TYPES_XR_USE_PLATFORM_ANDROID(_) \ - _(XrInstanceCreateInfoAndroidKHR, XR_TYPE_INSTANCE_CREATE_INFO_ANDROID_KHR) \ - _(XrLoaderInitInfoAndroidKHR, XR_TYPE_LOADER_INIT_INFO_ANDROID_KHR) \ - _(XrAndroidSurfaceSwapchainCreateInfoFB, XR_TYPE_ANDROID_SURFACE_SWAPCHAIN_CREATE_INFO_FB) \ - _(XrSwapchainStateAndroidSurfaceDimensionsFB, XR_TYPE_SWAPCHAIN_STATE_ANDROID_SURFACE_DIMENSIONS_FB) \ - -#else -#define XR_LIST_STRUCTURE_TYPES_XR_USE_PLATFORM_ANDROID(_) -#endif - -#if defined(XR_USE_PLATFORM_EGL) -/// Implementation detail of XR_LIST_STRUCTURE_TYPES() -/// Structure types available only when XR_USE_PLATFORM_EGL is defined -#define XR_LIST_STRUCTURE_TYPES_XR_USE_PLATFORM_EGL(_) \ - _(XrGraphicsBindingEGLMNDX, XR_TYPE_GRAPHICS_BINDING_EGL_MNDX) \ - -#else -#define XR_LIST_STRUCTURE_TYPES_XR_USE_PLATFORM_EGL(_) -#endif - -#if defined(XR_USE_PLATFORM_ML) -/// Implementation detail of XR_LIST_STRUCTURE_TYPES() -/// Structure types available only when XR_USE_PLATFORM_ML is defined -#define XR_LIST_STRUCTURE_TYPES_XR_USE_PLATFORM_ML(_) \ - _(XrCoordinateSpaceCreateInfoML, XR_TYPE_COORDINATE_SPACE_CREATE_INFO_ML) \ - -#else -#define XR_LIST_STRUCTURE_TYPES_XR_USE_PLATFORM_ML(_) -#endif - -#if defined(XR_USE_PLATFORM_WIN32) -/// Implementation detail of XR_LIST_STRUCTURE_TYPES() -/// Structure types available only when XR_USE_PLATFORM_WIN32 is defined -#define XR_LIST_STRUCTURE_TYPES_XR_USE_PLATFORM_WIN32(_) \ - _(XrHolographicWindowAttachmentMSFT, XR_TYPE_HOLOGRAPHIC_WINDOW_ATTACHMENT_MSFT) \ - -#else -#define XR_LIST_STRUCTURE_TYPES_XR_USE_PLATFORM_WIN32(_) -#endif - - - -/// Calls your macro with the name and extension number of all known -/// extensions in this version of the spec. -#define XR_LIST_EXTENSIONS(_) \ - _(XR_KHR_android_thread_settings, 4) \ - _(XR_KHR_android_surface_swapchain, 5) \ - _(XR_KHR_composition_layer_cube, 7) \ - _(XR_KHR_android_create_instance, 9) \ - _(XR_KHR_composition_layer_depth, 11) \ - _(XR_KHR_vulkan_swapchain_format_list, 15) \ - _(XR_EXT_performance_settings, 16) \ - _(XR_EXT_thermal_query, 17) \ - _(XR_KHR_composition_layer_cylinder, 18) \ - _(XR_KHR_composition_layer_equirect, 19) \ - _(XR_EXT_debug_utils, 20) \ - _(XR_KHR_opengl_enable, 24) \ - _(XR_KHR_opengl_es_enable, 25) \ - _(XR_KHR_vulkan_enable, 26) \ - _(XR_KHR_D3D11_enable, 28) \ - _(XR_KHR_D3D12_enable, 29) \ - _(XR_EXT_eye_gaze_interaction, 31) \ - _(XR_KHR_visibility_mask, 32) \ - _(XR_EXTX_overlay, 34) \ - _(XR_KHR_composition_layer_color_scale_bias, 35) \ - _(XR_KHR_win32_convert_performance_counter_time, 36) \ - _(XR_KHR_convert_timespec_time, 37) \ - _(XR_VARJO_quad_views, 38) \ - _(XR_MSFT_unbounded_reference_space, 39) \ - _(XR_MSFT_spatial_anchor, 40) \ - _(XR_FB_composition_layer_image_layout, 41) \ - _(XR_FB_composition_layer_alpha_blend, 42) \ - _(XR_MND_headless, 43) \ - _(XR_OCULUS_android_session_state_enable, 45) \ - _(XR_EXT_view_configuration_depth_range, 47) \ - _(XR_EXT_conformance_automation, 48) \ - _(XR_MNDX_egl_enable, 49) \ - _(XR_MSFT_spatial_graph_bridge, 50) \ - _(XR_MSFT_hand_interaction, 51) \ - _(XR_EXT_hand_tracking, 52) \ - _(XR_MSFT_hand_tracking_mesh, 53) \ - _(XR_MSFT_secondary_view_configuration, 54) \ - _(XR_MSFT_first_person_observer, 55) \ - _(XR_MSFT_controller_model, 56) \ - _(XR_MSFT_perception_anchor_interop, 57) \ - _(XR_EXT_win32_appcontainer_compatible, 58) \ - _(XR_EPIC_view_configuration_fov, 60) \ - _(XR_MSFT_holographic_window_attachment, 64) \ - _(XR_MSFT_composition_layer_reprojection, 67) \ - _(XR_HUAWEI_controller_interaction, 70) \ - _(XR_FB_android_surface_swapchain_create, 71) \ - _(XR_FB_swapchain_update_state, 72) \ - _(XR_FB_composition_layer_secure_content, 73) \ - _(XR_FB_body_tracking, 77) \ - _(XR_EXT_dpad_binding, 79) \ - _(XR_VALVE_analog_threshold, 80) \ - _(XR_EXT_hand_joints_motion_range, 81) \ - _(XR_KHR_loader_init, 89) \ - _(XR_KHR_loader_init_android, 90) \ - _(XR_KHR_vulkan_enable2, 91) \ - _(XR_KHR_composition_layer_equirect2, 92) \ - _(XR_EXT_samsung_odyssey_controller, 95) \ - _(XR_EXT_hp_mixed_reality_controller, 96) \ - _(XR_MND_swapchain_usage_input_attachment_bit, 97) \ - _(XR_MSFT_scene_understanding, 98) \ - _(XR_MSFT_scene_understanding_serialization, 99) \ - _(XR_FB_display_refresh_rate, 102) \ - _(XR_HTC_vive_cosmos_controller_interaction, 103) \ - _(XR_HTCX_vive_tracker_interaction, 104) \ - _(XR_HTC_facial_tracking, 105) \ - _(XR_HTC_vive_focus3_controller_interaction, 106) \ - _(XR_HTC_hand_interaction, 107) \ - _(XR_HTC_vive_wrist_tracker_interaction, 108) \ - _(XR_FB_color_space, 109) \ - _(XR_FB_hand_tracking_mesh, 111) \ - _(XR_FB_hand_tracking_aim, 112) \ - _(XR_FB_hand_tracking_capsules, 113) \ - _(XR_FB_spatial_entity, 114) \ - _(XR_FB_foveation, 115) \ - _(XR_FB_foveation_configuration, 116) \ - _(XR_FB_keyboard_tracking, 117) \ - _(XR_FB_triangle_mesh, 118) \ - _(XR_FB_passthrough, 119) \ - _(XR_FB_render_model, 120) \ - _(XR_KHR_binding_modification, 121) \ - _(XR_VARJO_foveated_rendering, 122) \ - _(XR_VARJO_composition_layer_depth_test, 123) \ - _(XR_VARJO_environment_depth_estimation, 124) \ - _(XR_VARJO_marker_tracking, 125) \ - _(XR_VARJO_view_offset, 126) \ - _(XR_VARJO_xr4_controller_interaction, 130) \ - _(XR_ML_ml2_controller_interaction, 135) \ - _(XR_ML_frame_end_info, 136) \ - _(XR_ML_global_dimmer, 137) \ - _(XR_ML_compat, 138) \ - _(XR_ML_marker_understanding, 139) \ - _(XR_ML_localization_map, 140) \ - _(XR_MSFT_spatial_anchor_persistence, 143) \ - _(XR_MSFT_scene_marker, 148) \ - _(XR_ULTRALEAP_hand_tracking_forearm, 150) \ - _(XR_FB_spatial_entity_query, 157) \ - _(XR_FB_spatial_entity_storage, 159) \ - _(XR_OCULUS_audio_device_guid, 160) \ - _(XR_FB_foveation_vulkan, 161) \ - _(XR_FB_swapchain_update_state_android_surface, 162) \ - _(XR_FB_swapchain_update_state_opengl_es, 163) \ - _(XR_FB_swapchain_update_state_vulkan, 164) \ - _(XR_KHR_swapchain_usage_input_attachment_bit, 166) \ - _(XR_FB_touch_controller_pro, 168) \ - _(XR_FB_spatial_entity_sharing, 170) \ - _(XR_FB_space_warp, 172) \ - _(XR_FB_haptic_amplitude_envelope, 174) \ - _(XR_FB_scene, 176) \ - _(XR_EXT_palm_pose, 177) \ - _(XR_ALMALENCE_digital_lens_control, 197) \ - _(XR_FB_scene_capture, 199) \ - _(XR_FB_spatial_entity_container, 200) \ - _(XR_META_foveation_eye_tracked, 201) \ - _(XR_FB_face_tracking, 202) \ - _(XR_FB_eye_tracking_social, 203) \ - _(XR_FB_passthrough_keyboard_hands, 204) \ - _(XR_FB_composition_layer_settings, 205) \ - _(XR_FB_touch_controller_proximity, 207) \ - _(XR_FB_haptic_pcm, 210) \ - _(XR_FB_composition_layer_depth_test, 213) \ - _(XR_META_local_dimming, 217) \ - _(XR_META_passthrough_preferences, 218) \ - _(XR_META_virtual_keyboard, 220) \ - _(XR_OCULUS_external_camera, 227) \ - _(XR_META_vulkan_swapchain_create_info, 228) \ - _(XR_META_performance_metrics, 233) \ - _(XR_FB_spatial_entity_storage_batch, 239) \ - _(XR_FB_spatial_entity_user, 242) \ - _(XR_META_headset_id, 246) \ - _(XR_META_recommended_layer_resolution, 255) \ - _(XR_META_passthrough_color_lut, 267) \ - _(XR_META_spatial_entity_mesh, 270) \ - _(XR_META_automatic_layer_filter, 272) \ - _(XR_META_touch_controller_plus, 280) \ - _(XR_FB_face_tracking2, 288) \ - _(XR_META_environment_depth, 292) \ - _(XR_EXT_uuid, 300) \ - _(XR_EXT_hand_interaction, 303) \ - _(XR_QCOM_tracking_optimization_settings, 307) \ - _(XR_HTC_passthrough, 318) \ - _(XR_HTC_foveation, 319) \ - _(XR_HTC_anchor, 320) \ - _(XR_EXT_active_action_set_priority, 374) \ - _(XR_MNDX_force_feedback_curl, 376) \ - _(XR_BD_controller_interaction, 385) \ - _(XR_EXT_local_floor, 427) \ - _(XR_EXT_hand_tracking_data_source, 429) \ - _(XR_EXT_plane_detection, 430) \ - _(XR_OPPO_controller_interaction, 454) \ - _(XR_EXT_future, 470) \ - _(XR_EXT_user_presence, 471) \ - _(XR_KHR_locate_spaces, 472) \ - _(XR_ML_user_calibration, 473) \ - _(XR_YVR_controller_interaction, 498) \ - _(XR_KHR_maintenance1, 711) \ - - - -/// For every function defined by XR_VERSION_1_0 in this version of the spec, -/// calls your macro with the function name and extension name. -/// Trims the leading `xr` from the function name and the leading `XR_` from the feature name, -/// because it is easy to add back but impossible to remove with the preprocessor. -#define XR_LIST_FUNCTIONS_XR_VERSION_1_0(_) \ - _(GetInstanceProcAddr, VERSION_1_0) \ - _(EnumerateApiLayerProperties, VERSION_1_0) \ - _(EnumerateInstanceExtensionProperties, VERSION_1_0) \ - _(CreateInstance, VERSION_1_0) \ - _(DestroyInstance, VERSION_1_0) \ - _(GetInstanceProperties, VERSION_1_0) \ - _(PollEvent, VERSION_1_0) \ - _(ResultToString, VERSION_1_0) \ - _(StructureTypeToString, VERSION_1_0) \ - _(GetSystem, VERSION_1_0) \ - _(GetSystemProperties, VERSION_1_0) \ - _(EnumerateEnvironmentBlendModes, VERSION_1_0) \ - _(CreateSession, VERSION_1_0) \ - _(DestroySession, VERSION_1_0) \ - _(EnumerateReferenceSpaces, VERSION_1_0) \ - _(CreateReferenceSpace, VERSION_1_0) \ - _(GetReferenceSpaceBoundsRect, VERSION_1_0) \ - _(CreateActionSpace, VERSION_1_0) \ - _(LocateSpace, VERSION_1_0) \ - _(DestroySpace, VERSION_1_0) \ - _(EnumerateViewConfigurations, VERSION_1_0) \ - _(GetViewConfigurationProperties, VERSION_1_0) \ - _(EnumerateViewConfigurationViews, VERSION_1_0) \ - _(EnumerateSwapchainFormats, VERSION_1_0) \ - _(CreateSwapchain, VERSION_1_0) \ - _(DestroySwapchain, VERSION_1_0) \ - _(EnumerateSwapchainImages, VERSION_1_0) \ - _(AcquireSwapchainImage, VERSION_1_0) \ - _(WaitSwapchainImage, VERSION_1_0) \ - _(ReleaseSwapchainImage, VERSION_1_0) \ - _(BeginSession, VERSION_1_0) \ - _(EndSession, VERSION_1_0) \ - _(RequestExitSession, VERSION_1_0) \ - _(WaitFrame, VERSION_1_0) \ - _(BeginFrame, VERSION_1_0) \ - _(EndFrame, VERSION_1_0) \ - _(LocateViews, VERSION_1_0) \ - _(StringToPath, VERSION_1_0) \ - _(PathToString, VERSION_1_0) \ - _(CreateActionSet, VERSION_1_0) \ - _(DestroyActionSet, VERSION_1_0) \ - _(CreateAction, VERSION_1_0) \ - _(DestroyAction, VERSION_1_0) \ - _(SuggestInteractionProfileBindings, VERSION_1_0) \ - _(AttachSessionActionSets, VERSION_1_0) \ - _(GetCurrentInteractionProfile, VERSION_1_0) \ - _(GetActionStateBoolean, VERSION_1_0) \ - _(GetActionStateFloat, VERSION_1_0) \ - _(GetActionStateVector2f, VERSION_1_0) \ - _(GetActionStatePose, VERSION_1_0) \ - _(SyncActions, VERSION_1_0) \ - _(EnumerateBoundSourcesForAction, VERSION_1_0) \ - _(GetInputSourceLocalizedName, VERSION_1_0) \ - _(ApplyHapticFeedback, VERSION_1_0) \ - _(StopHapticFeedback, VERSION_1_0) \ - - -/// For every function defined by XR_LOADER_VERSION_1_0 in this version of the spec, -/// calls your macro with the function name and extension name. -/// Trims the leading `xr` from the function name and the leading `XR_` from the feature name, -/// because it is easy to add back but impossible to remove with the preprocessor. -#define XR_LIST_FUNCTIONS_XR_LOADER_VERSION_1_0(_) \ - _(CreateApiLayerInstance, LOADER_VERSION_1_0) \ - _(NegotiateLoaderRuntimeInterface, LOADER_VERSION_1_0) \ - _(NegotiateLoaderApiLayerInterface, LOADER_VERSION_1_0) \ - - -/// For every function defined by XR_VERSION_1_1 in this version of the spec, -/// calls your macro with the function name and extension name. -/// Trims the leading `xr` from the function name and the leading `XR_` from the feature name, -/// because it is easy to add back but impossible to remove with the preprocessor. -#define XR_LIST_FUNCTIONS_XR_VERSION_1_1(_) \ - _(LocateSpaces, VERSION_1_1) \ - - -/// For every function defined by XR_KHR_android_thread_settings in this version of the spec, -/// calls your macro with the function name and extension name. -/// Trims the leading `xr` from the function name and the leading `XR_` from the feature name, -/// because it is easy to add back but impossible to remove with the preprocessor. -#define XR_LIST_FUNCTIONS_XR_KHR_android_thread_settings(_) \ - _(SetAndroidApplicationThreadKHR, KHR_android_thread_settings) \ - - -/// For every function defined by XR_KHR_android_surface_swapchain in this version of the spec, -/// calls your macro with the function name and extension name. -/// Trims the leading `xr` from the function name and the leading `XR_` from the feature name, -/// because it is easy to add back but impossible to remove with the preprocessor. -#define XR_LIST_FUNCTIONS_XR_KHR_android_surface_swapchain(_) \ - _(CreateSwapchainAndroidSurfaceKHR, KHR_android_surface_swapchain) \ - - -/// For every function defined by XR_KHR_opengl_enable in this version of the spec, -/// calls your macro with the function name and extension name. -/// Trims the leading `xr` from the function name and the leading `XR_` from the feature name, -/// because it is easy to add back but impossible to remove with the preprocessor. -#define XR_LIST_FUNCTIONS_XR_KHR_opengl_enable(_) \ - _(GetOpenGLGraphicsRequirementsKHR, KHR_opengl_enable) \ - - -/// For every function defined by XR_KHR_opengl_es_enable in this version of the spec, -/// calls your macro with the function name and extension name. -/// Trims the leading `xr` from the function name and the leading `XR_` from the feature name, -/// because it is easy to add back but impossible to remove with the preprocessor. -#define XR_LIST_FUNCTIONS_XR_KHR_opengl_es_enable(_) \ - _(GetOpenGLESGraphicsRequirementsKHR, KHR_opengl_es_enable) \ - - -/// For every function defined by XR_KHR_vulkan_enable in this version of the spec, -/// calls your macro with the function name and extension name. -/// Trims the leading `xr` from the function name and the leading `XR_` from the feature name, -/// because it is easy to add back but impossible to remove with the preprocessor. -#define XR_LIST_FUNCTIONS_XR_KHR_vulkan_enable(_) \ - _(GetVulkanInstanceExtensionsKHR, KHR_vulkan_enable) \ - _(GetVulkanDeviceExtensionsKHR, KHR_vulkan_enable) \ - _(GetVulkanGraphicsDeviceKHR, KHR_vulkan_enable) \ - _(GetVulkanGraphicsRequirementsKHR, KHR_vulkan_enable) \ - - -/// For every function defined by XR_KHR_D3D11_enable in this version of the spec, -/// calls your macro with the function name and extension name. -/// Trims the leading `xr` from the function name and the leading `XR_` from the feature name, -/// because it is easy to add back but impossible to remove with the preprocessor. -#define XR_LIST_FUNCTIONS_XR_KHR_D3D11_enable(_) \ - _(GetD3D11GraphicsRequirementsKHR, KHR_D3D11_enable) \ - - -/// For every function defined by XR_KHR_D3D12_enable in this version of the spec, -/// calls your macro with the function name and extension name. -/// Trims the leading `xr` from the function name and the leading `XR_` from the feature name, -/// because it is easy to add back but impossible to remove with the preprocessor. -#define XR_LIST_FUNCTIONS_XR_KHR_D3D12_enable(_) \ - _(GetD3D12GraphicsRequirementsKHR, KHR_D3D12_enable) \ - - -/// For every function defined by XR_KHR_visibility_mask in this version of the spec, -/// calls your macro with the function name and extension name. -/// Trims the leading `xr` from the function name and the leading `XR_` from the feature name, -/// because it is easy to add back but impossible to remove with the preprocessor. -#define XR_LIST_FUNCTIONS_XR_KHR_visibility_mask(_) \ - _(GetVisibilityMaskKHR, KHR_visibility_mask) \ - - -/// For every function defined by XR_KHR_win32_convert_performance_counter_time in this version of the spec, -/// calls your macro with the function name and extension name. -/// Trims the leading `xr` from the function name and the leading `XR_` from the feature name, -/// because it is easy to add back but impossible to remove with the preprocessor. -#define XR_LIST_FUNCTIONS_XR_KHR_win32_convert_performance_counter_time(_) \ - _(ConvertWin32PerformanceCounterToTimeKHR, KHR_win32_convert_performance_counter_time) \ - _(ConvertTimeToWin32PerformanceCounterKHR, KHR_win32_convert_performance_counter_time) \ - - -/// For every function defined by XR_KHR_convert_timespec_time in this version of the spec, -/// calls your macro with the function name and extension name. -/// Trims the leading `xr` from the function name and the leading `XR_` from the feature name, -/// because it is easy to add back but impossible to remove with the preprocessor. -#define XR_LIST_FUNCTIONS_XR_KHR_convert_timespec_time(_) \ - _(ConvertTimespecTimeToTimeKHR, KHR_convert_timespec_time) \ - _(ConvertTimeToTimespecTimeKHR, KHR_convert_timespec_time) \ - - -/// For every function defined by XR_KHR_loader_init in this version of the spec, -/// calls your macro with the function name and extension name. -/// Trims the leading `xr` from the function name and the leading `XR_` from the feature name, -/// because it is easy to add back but impossible to remove with the preprocessor. -#define XR_LIST_FUNCTIONS_XR_KHR_loader_init(_) \ - _(InitializeLoaderKHR, KHR_loader_init) \ - - -/// For every function defined by XR_KHR_vulkan_enable2 in this version of the spec, -/// calls your macro with the function name and extension name. -/// Trims the leading `xr` from the function name and the leading `XR_` from the feature name, -/// because it is easy to add back but impossible to remove with the preprocessor. -#define XR_LIST_FUNCTIONS_XR_KHR_vulkan_enable2(_) \ - _(CreateVulkanInstanceKHR, KHR_vulkan_enable2) \ - _(CreateVulkanDeviceKHR, KHR_vulkan_enable2) \ - _(GetVulkanGraphicsDevice2KHR, KHR_vulkan_enable2) \ - - -/// For every function defined by XR_EXT_performance_settings in this version of the spec, -/// calls your macro with the function name and extension name. -/// Trims the leading `xr` from the function name and the leading `XR_` from the feature name, -/// because it is easy to add back but impossible to remove with the preprocessor. -#define XR_LIST_FUNCTIONS_XR_EXT_performance_settings(_) \ - _(PerfSettingsSetPerformanceLevelEXT, EXT_performance_settings) \ - - -/// For every function defined by XR_EXT_thermal_query in this version of the spec, -/// calls your macro with the function name and extension name. -/// Trims the leading `xr` from the function name and the leading `XR_` from the feature name, -/// because it is easy to add back but impossible to remove with the preprocessor. -#define XR_LIST_FUNCTIONS_XR_EXT_thermal_query(_) \ - _(ThermalGetTemperatureTrendEXT, EXT_thermal_query) \ - - -/// For every function defined by XR_EXT_debug_utils in this version of the spec, -/// calls your macro with the function name and extension name. -/// Trims the leading `xr` from the function name and the leading `XR_` from the feature name, -/// because it is easy to add back but impossible to remove with the preprocessor. -#define XR_LIST_FUNCTIONS_XR_EXT_debug_utils(_) \ - _(SetDebugUtilsObjectNameEXT, EXT_debug_utils) \ - _(CreateDebugUtilsMessengerEXT, EXT_debug_utils) \ - _(DestroyDebugUtilsMessengerEXT, EXT_debug_utils) \ - _(SubmitDebugUtilsMessageEXT, EXT_debug_utils) \ - _(SessionBeginDebugUtilsLabelRegionEXT, EXT_debug_utils) \ - _(SessionEndDebugUtilsLabelRegionEXT, EXT_debug_utils) \ - _(SessionInsertDebugUtilsLabelEXT, EXT_debug_utils) \ - - -/// For every function defined by XR_MSFT_spatial_anchor in this version of the spec, -/// calls your macro with the function name and extension name. -/// Trims the leading `xr` from the function name and the leading `XR_` from the feature name, -/// because it is easy to add back but impossible to remove with the preprocessor. -#define XR_LIST_FUNCTIONS_XR_MSFT_spatial_anchor(_) \ - _(CreateSpatialAnchorMSFT, MSFT_spatial_anchor) \ - _(CreateSpatialAnchorSpaceMSFT, MSFT_spatial_anchor) \ - _(DestroySpatialAnchorMSFT, MSFT_spatial_anchor) \ - - -/// For every function defined by XR_EXT_conformance_automation in this version of the spec, -/// calls your macro with the function name and extension name. -/// Trims the leading `xr` from the function name and the leading `XR_` from the feature name, -/// because it is easy to add back but impossible to remove with the preprocessor. -#define XR_LIST_FUNCTIONS_XR_EXT_conformance_automation(_) \ - _(SetInputDeviceActiveEXT, EXT_conformance_automation) \ - _(SetInputDeviceStateBoolEXT, EXT_conformance_automation) \ - _(SetInputDeviceStateFloatEXT, EXT_conformance_automation) \ - _(SetInputDeviceStateVector2fEXT, EXT_conformance_automation) \ - _(SetInputDeviceLocationEXT, EXT_conformance_automation) \ - - -/// For every function defined by XR_MSFT_spatial_graph_bridge in this version of the spec, -/// calls your macro with the function name and extension name. -/// Trims the leading `xr` from the function name and the leading `XR_` from the feature name, -/// because it is easy to add back but impossible to remove with the preprocessor. -#define XR_LIST_FUNCTIONS_XR_MSFT_spatial_graph_bridge(_) \ - _(CreateSpatialGraphNodeSpaceMSFT, MSFT_spatial_graph_bridge) \ - _(TryCreateSpatialGraphStaticNodeBindingMSFT, MSFT_spatial_graph_bridge) \ - _(DestroySpatialGraphNodeBindingMSFT, MSFT_spatial_graph_bridge) \ - _(GetSpatialGraphNodeBindingPropertiesMSFT, MSFT_spatial_graph_bridge) \ - - -/// For every function defined by XR_EXT_hand_tracking in this version of the spec, -/// calls your macro with the function name and extension name. -/// Trims the leading `xr` from the function name and the leading `XR_` from the feature name, -/// because it is easy to add back but impossible to remove with the preprocessor. -#define XR_LIST_FUNCTIONS_XR_EXT_hand_tracking(_) \ - _(CreateHandTrackerEXT, EXT_hand_tracking) \ - _(DestroyHandTrackerEXT, EXT_hand_tracking) \ - _(LocateHandJointsEXT, EXT_hand_tracking) \ - - -/// For every function defined by XR_MSFT_hand_tracking_mesh in this version of the spec, -/// calls your macro with the function name and extension name. -/// Trims the leading `xr` from the function name and the leading `XR_` from the feature name, -/// because it is easy to add back but impossible to remove with the preprocessor. -#define XR_LIST_FUNCTIONS_XR_MSFT_hand_tracking_mesh(_) \ - _(CreateHandMeshSpaceMSFT, MSFT_hand_tracking_mesh) \ - _(UpdateHandMeshMSFT, MSFT_hand_tracking_mesh) \ - - -/// For every function defined by XR_MSFT_controller_model in this version of the spec, -/// calls your macro with the function name and extension name. -/// Trims the leading `xr` from the function name and the leading `XR_` from the feature name, -/// because it is easy to add back but impossible to remove with the preprocessor. -#define XR_LIST_FUNCTIONS_XR_MSFT_controller_model(_) \ - _(GetControllerModelKeyMSFT, MSFT_controller_model) \ - _(LoadControllerModelMSFT, MSFT_controller_model) \ - _(GetControllerModelPropertiesMSFT, MSFT_controller_model) \ - _(GetControllerModelStateMSFT, MSFT_controller_model) \ - - -/// For every function defined by XR_MSFT_perception_anchor_interop in this version of the spec, -/// calls your macro with the function name and extension name. -/// Trims the leading `xr` from the function name and the leading `XR_` from the feature name, -/// because it is easy to add back but impossible to remove with the preprocessor. -#define XR_LIST_FUNCTIONS_XR_MSFT_perception_anchor_interop(_) \ - _(CreateSpatialAnchorFromPerceptionAnchorMSFT, MSFT_perception_anchor_interop) \ - _(TryGetPerceptionAnchorFromSpatialAnchorMSFT, MSFT_perception_anchor_interop) \ - - -/// For every function defined by XR_MSFT_composition_layer_reprojection in this version of the spec, -/// calls your macro with the function name and extension name. -/// Trims the leading `xr` from the function name and the leading `XR_` from the feature name, -/// because it is easy to add back but impossible to remove with the preprocessor. -#define XR_LIST_FUNCTIONS_XR_MSFT_composition_layer_reprojection(_) \ - _(EnumerateReprojectionModesMSFT, MSFT_composition_layer_reprojection) \ - - -/// For every function defined by XR_FB_swapchain_update_state in this version of the spec, -/// calls your macro with the function name and extension name. -/// Trims the leading `xr` from the function name and the leading `XR_` from the feature name, -/// because it is easy to add back but impossible to remove with the preprocessor. -#define XR_LIST_FUNCTIONS_XR_FB_swapchain_update_state(_) \ - _(UpdateSwapchainFB, FB_swapchain_update_state) \ - _(GetSwapchainStateFB, FB_swapchain_update_state) \ - - -/// For every function defined by XR_FB_body_tracking in this version of the spec, -/// calls your macro with the function name and extension name. -/// Trims the leading `xr` from the function name and the leading `XR_` from the feature name, -/// because it is easy to add back but impossible to remove with the preprocessor. -#define XR_LIST_FUNCTIONS_XR_FB_body_tracking(_) \ - _(CreateBodyTrackerFB, FB_body_tracking) \ - _(DestroyBodyTrackerFB, FB_body_tracking) \ - _(LocateBodyJointsFB, FB_body_tracking) \ - _(GetBodySkeletonFB, FB_body_tracking) \ - - -/// For every function defined by XR_MSFT_scene_understanding in this version of the spec, -/// calls your macro with the function name and extension name. -/// Trims the leading `xr` from the function name and the leading `XR_` from the feature name, -/// because it is easy to add back but impossible to remove with the preprocessor. -#define XR_LIST_FUNCTIONS_XR_MSFT_scene_understanding(_) \ - _(EnumerateSceneComputeFeaturesMSFT, MSFT_scene_understanding) \ - _(CreateSceneObserverMSFT, MSFT_scene_understanding) \ - _(DestroySceneObserverMSFT, MSFT_scene_understanding) \ - _(CreateSceneMSFT, MSFT_scene_understanding) \ - _(DestroySceneMSFT, MSFT_scene_understanding) \ - _(ComputeNewSceneMSFT, MSFT_scene_understanding) \ - _(GetSceneComputeStateMSFT, MSFT_scene_understanding) \ - _(GetSceneComponentsMSFT, MSFT_scene_understanding) \ - _(LocateSceneComponentsMSFT, MSFT_scene_understanding) \ - _(GetSceneMeshBuffersMSFT, MSFT_scene_understanding) \ - - -/// For every function defined by XR_MSFT_scene_understanding_serialization in this version of the spec, -/// calls your macro with the function name and extension name. -/// Trims the leading `xr` from the function name and the leading `XR_` from the feature name, -/// because it is easy to add back but impossible to remove with the preprocessor. -#define XR_LIST_FUNCTIONS_XR_MSFT_scene_understanding_serialization(_) \ - _(DeserializeSceneMSFT, MSFT_scene_understanding_serialization) \ - _(GetSerializedSceneFragmentDataMSFT, MSFT_scene_understanding_serialization) \ - - -/// For every function defined by XR_FB_display_refresh_rate in this version of the spec, -/// calls your macro with the function name and extension name. -/// Trims the leading `xr` from the function name and the leading `XR_` from the feature name, -/// because it is easy to add back but impossible to remove with the preprocessor. -#define XR_LIST_FUNCTIONS_XR_FB_display_refresh_rate(_) \ - _(EnumerateDisplayRefreshRatesFB, FB_display_refresh_rate) \ - _(GetDisplayRefreshRateFB, FB_display_refresh_rate) \ - _(RequestDisplayRefreshRateFB, FB_display_refresh_rate) \ - - -/// For every function defined by XR_HTCX_vive_tracker_interaction in this version of the spec, -/// calls your macro with the function name and extension name. -/// Trims the leading `xr` from the function name and the leading `XR_` from the feature name, -/// because it is easy to add back but impossible to remove with the preprocessor. -#define XR_LIST_FUNCTIONS_XR_HTCX_vive_tracker_interaction(_) \ - _(EnumerateViveTrackerPathsHTCX, HTCX_vive_tracker_interaction) \ - - -/// For every function defined by XR_HTC_facial_tracking in this version of the spec, -/// calls your macro with the function name and extension name. -/// Trims the leading `xr` from the function name and the leading `XR_` from the feature name, -/// because it is easy to add back but impossible to remove with the preprocessor. -#define XR_LIST_FUNCTIONS_XR_HTC_facial_tracking(_) \ - _(CreateFacialTrackerHTC, HTC_facial_tracking) \ - _(DestroyFacialTrackerHTC, HTC_facial_tracking) \ - _(GetFacialExpressionsHTC, HTC_facial_tracking) \ - - -/// For every function defined by XR_FB_color_space in this version of the spec, -/// calls your macro with the function name and extension name. -/// Trims the leading `xr` from the function name and the leading `XR_` from the feature name, -/// because it is easy to add back but impossible to remove with the preprocessor. -#define XR_LIST_FUNCTIONS_XR_FB_color_space(_) \ - _(EnumerateColorSpacesFB, FB_color_space) \ - _(SetColorSpaceFB, FB_color_space) \ - - -/// For every function defined by XR_FB_hand_tracking_mesh in this version of the spec, -/// calls your macro with the function name and extension name. -/// Trims the leading `xr` from the function name and the leading `XR_` from the feature name, -/// because it is easy to add back but impossible to remove with the preprocessor. -#define XR_LIST_FUNCTIONS_XR_FB_hand_tracking_mesh(_) \ - _(GetHandMeshFB, FB_hand_tracking_mesh) \ - - -/// For every function defined by XR_FB_spatial_entity in this version of the spec, -/// calls your macro with the function name and extension name. -/// Trims the leading `xr` from the function name and the leading `XR_` from the feature name, -/// because it is easy to add back but impossible to remove with the preprocessor. -#define XR_LIST_FUNCTIONS_XR_FB_spatial_entity(_) \ - _(CreateSpatialAnchorFB, FB_spatial_entity) \ - _(GetSpaceUuidFB, FB_spatial_entity) \ - _(EnumerateSpaceSupportedComponentsFB, FB_spatial_entity) \ - _(SetSpaceComponentStatusFB, FB_spatial_entity) \ - _(GetSpaceComponentStatusFB, FB_spatial_entity) \ - - -/// For every function defined by XR_FB_foveation in this version of the spec, -/// calls your macro with the function name and extension name. -/// Trims the leading `xr` from the function name and the leading `XR_` from the feature name, -/// because it is easy to add back but impossible to remove with the preprocessor. -#define XR_LIST_FUNCTIONS_XR_FB_foveation(_) \ - _(CreateFoveationProfileFB, FB_foveation) \ - _(DestroyFoveationProfileFB, FB_foveation) \ - - -/// For every function defined by XR_FB_keyboard_tracking in this version of the spec, -/// calls your macro with the function name and extension name. -/// Trims the leading `xr` from the function name and the leading `XR_` from the feature name, -/// because it is easy to add back but impossible to remove with the preprocessor. -#define XR_LIST_FUNCTIONS_XR_FB_keyboard_tracking(_) \ - _(QuerySystemTrackedKeyboardFB, FB_keyboard_tracking) \ - _(CreateKeyboardSpaceFB, FB_keyboard_tracking) \ - - -/// For every function defined by XR_FB_triangle_mesh in this version of the spec, -/// calls your macro with the function name and extension name. -/// Trims the leading `xr` from the function name and the leading `XR_` from the feature name, -/// because it is easy to add back but impossible to remove with the preprocessor. -#define XR_LIST_FUNCTIONS_XR_FB_triangle_mesh(_) \ - _(CreateTriangleMeshFB, FB_triangle_mesh) \ - _(DestroyTriangleMeshFB, FB_triangle_mesh) \ - _(TriangleMeshGetVertexBufferFB, FB_triangle_mesh) \ - _(TriangleMeshGetIndexBufferFB, FB_triangle_mesh) \ - _(TriangleMeshBeginUpdateFB, FB_triangle_mesh) \ - _(TriangleMeshEndUpdateFB, FB_triangle_mesh) \ - _(TriangleMeshBeginVertexBufferUpdateFB, FB_triangle_mesh) \ - _(TriangleMeshEndVertexBufferUpdateFB, FB_triangle_mesh) \ - - -/// For every function defined by XR_FB_passthrough in this version of the spec, -/// calls your macro with the function name and extension name. -/// Trims the leading `xr` from the function name and the leading `XR_` from the feature name, -/// because it is easy to add back but impossible to remove with the preprocessor. -#define XR_LIST_FUNCTIONS_XR_FB_passthrough(_) \ - _(CreatePassthroughFB, FB_passthrough) \ - _(DestroyPassthroughFB, FB_passthrough) \ - _(PassthroughStartFB, FB_passthrough) \ - _(PassthroughPauseFB, FB_passthrough) \ - _(CreatePassthroughLayerFB, FB_passthrough) \ - _(DestroyPassthroughLayerFB, FB_passthrough) \ - _(PassthroughLayerPauseFB, FB_passthrough) \ - _(PassthroughLayerResumeFB, FB_passthrough) \ - _(PassthroughLayerSetStyleFB, FB_passthrough) \ - _(CreateGeometryInstanceFB, FB_passthrough) \ - _(DestroyGeometryInstanceFB, FB_passthrough) \ - _(GeometryInstanceSetTransformFB, FB_passthrough) \ - - -/// For every function defined by XR_FB_render_model in this version of the spec, -/// calls your macro with the function name and extension name. -/// Trims the leading `xr` from the function name and the leading `XR_` from the feature name, -/// because it is easy to add back but impossible to remove with the preprocessor. -#define XR_LIST_FUNCTIONS_XR_FB_render_model(_) \ - _(EnumerateRenderModelPathsFB, FB_render_model) \ - _(GetRenderModelPropertiesFB, FB_render_model) \ - _(LoadRenderModelFB, FB_render_model) \ - - -/// For every function defined by XR_VARJO_environment_depth_estimation in this version of the spec, -/// calls your macro with the function name and extension name. -/// Trims the leading `xr` from the function name and the leading `XR_` from the feature name, -/// because it is easy to add back but impossible to remove with the preprocessor. -#define XR_LIST_FUNCTIONS_XR_VARJO_environment_depth_estimation(_) \ - _(SetEnvironmentDepthEstimationVARJO, VARJO_environment_depth_estimation) \ - - -/// For every function defined by XR_VARJO_marker_tracking in this version of the spec, -/// calls your macro with the function name and extension name. -/// Trims the leading `xr` from the function name and the leading `XR_` from the feature name, -/// because it is easy to add back but impossible to remove with the preprocessor. -#define XR_LIST_FUNCTIONS_XR_VARJO_marker_tracking(_) \ - _(SetMarkerTrackingVARJO, VARJO_marker_tracking) \ - _(SetMarkerTrackingTimeoutVARJO, VARJO_marker_tracking) \ - _(SetMarkerTrackingPredictionVARJO, VARJO_marker_tracking) \ - _(GetMarkerSizeVARJO, VARJO_marker_tracking) \ - _(CreateMarkerSpaceVARJO, VARJO_marker_tracking) \ - - -/// For every function defined by XR_VARJO_view_offset in this version of the spec, -/// calls your macro with the function name and extension name. -/// Trims the leading `xr` from the function name and the leading `XR_` from the feature name, -/// because it is easy to add back but impossible to remove with the preprocessor. -#define XR_LIST_FUNCTIONS_XR_VARJO_view_offset(_) \ - _(SetViewOffsetVARJO, VARJO_view_offset) \ - - -/// For every function defined by XR_ML_compat in this version of the spec, -/// calls your macro with the function name and extension name. -/// Trims the leading `xr` from the function name and the leading `XR_` from the feature name, -/// because it is easy to add back but impossible to remove with the preprocessor. -#define XR_LIST_FUNCTIONS_XR_ML_compat(_) \ - _(CreateSpaceFromCoordinateFrameUIDML, ML_compat) \ - - -/// For every function defined by XR_ML_marker_understanding in this version of the spec, -/// calls your macro with the function name and extension name. -/// Trims the leading `xr` from the function name and the leading `XR_` from the feature name, -/// because it is easy to add back but impossible to remove with the preprocessor. -#define XR_LIST_FUNCTIONS_XR_ML_marker_understanding(_) \ - _(CreateMarkerDetectorML, ML_marker_understanding) \ - _(DestroyMarkerDetectorML, ML_marker_understanding) \ - _(SnapshotMarkerDetectorML, ML_marker_understanding) \ - _(GetMarkerDetectorStateML, ML_marker_understanding) \ - _(GetMarkersML, ML_marker_understanding) \ - _(GetMarkerReprojectionErrorML, ML_marker_understanding) \ - _(GetMarkerLengthML, ML_marker_understanding) \ - _(GetMarkerNumberML, ML_marker_understanding) \ - _(GetMarkerStringML, ML_marker_understanding) \ - _(CreateMarkerSpaceML, ML_marker_understanding) \ - - -/// For every function defined by XR_ML_localization_map in this version of the spec, -/// calls your macro with the function name and extension name. -/// Trims the leading `xr` from the function name and the leading `XR_` from the feature name, -/// because it is easy to add back but impossible to remove with the preprocessor. -#define XR_LIST_FUNCTIONS_XR_ML_localization_map(_) \ - _(EnableLocalizationEventsML, ML_localization_map) \ - _(QueryLocalizationMapsML, ML_localization_map) \ - _(RequestMapLocalizationML, ML_localization_map) \ - _(ImportLocalizationMapML, ML_localization_map) \ - _(CreateExportedLocalizationMapML, ML_localization_map) \ - _(DestroyExportedLocalizationMapML, ML_localization_map) \ - _(GetExportedLocalizationMapDataML, ML_localization_map) \ - - -/// For every function defined by XR_MSFT_spatial_anchor_persistence in this version of the spec, -/// calls your macro with the function name and extension name. -/// Trims the leading `xr` from the function name and the leading `XR_` from the feature name, -/// because it is easy to add back but impossible to remove with the preprocessor. -#define XR_LIST_FUNCTIONS_XR_MSFT_spatial_anchor_persistence(_) \ - _(CreateSpatialAnchorStoreConnectionMSFT, MSFT_spatial_anchor_persistence) \ - _(DestroySpatialAnchorStoreConnectionMSFT, MSFT_spatial_anchor_persistence) \ - _(PersistSpatialAnchorMSFT, MSFT_spatial_anchor_persistence) \ - _(EnumeratePersistedSpatialAnchorNamesMSFT, MSFT_spatial_anchor_persistence) \ - _(CreateSpatialAnchorFromPersistedNameMSFT, MSFT_spatial_anchor_persistence) \ - _(UnpersistSpatialAnchorMSFT, MSFT_spatial_anchor_persistence) \ - _(ClearSpatialAnchorStoreMSFT, MSFT_spatial_anchor_persistence) \ - - -/// For every function defined by XR_MSFT_scene_marker in this version of the spec, -/// calls your macro with the function name and extension name. -/// Trims the leading `xr` from the function name and the leading `XR_` from the feature name, -/// because it is easy to add back but impossible to remove with the preprocessor. -#define XR_LIST_FUNCTIONS_XR_MSFT_scene_marker(_) \ - _(GetSceneMarkerRawDataMSFT, MSFT_scene_marker) \ - _(GetSceneMarkerDecodedStringMSFT, MSFT_scene_marker) \ - - -/// For every function defined by XR_FB_spatial_entity_query in this version of the spec, -/// calls your macro with the function name and extension name. -/// Trims the leading `xr` from the function name and the leading `XR_` from the feature name, -/// because it is easy to add back but impossible to remove with the preprocessor. -#define XR_LIST_FUNCTIONS_XR_FB_spatial_entity_query(_) \ - _(QuerySpacesFB, FB_spatial_entity_query) \ - _(RetrieveSpaceQueryResultsFB, FB_spatial_entity_query) \ - - -/// For every function defined by XR_FB_spatial_entity_storage in this version of the spec, -/// calls your macro with the function name and extension name. -/// Trims the leading `xr` from the function name and the leading `XR_` from the feature name, -/// because it is easy to add back but impossible to remove with the preprocessor. -#define XR_LIST_FUNCTIONS_XR_FB_spatial_entity_storage(_) \ - _(SaveSpaceFB, FB_spatial_entity_storage) \ - _(EraseSpaceFB, FB_spatial_entity_storage) \ - - -/// For every function defined by XR_OCULUS_audio_device_guid in this version of the spec, -/// calls your macro with the function name and extension name. -/// Trims the leading `xr` from the function name and the leading `XR_` from the feature name, -/// because it is easy to add back but impossible to remove with the preprocessor. -#define XR_LIST_FUNCTIONS_XR_OCULUS_audio_device_guid(_) \ - _(GetAudioOutputDeviceGuidOculus, OCULUS_audio_device_guid) \ - _(GetAudioInputDeviceGuidOculus, OCULUS_audio_device_guid) \ - - -/// For every function defined by XR_FB_spatial_entity_sharing in this version of the spec, -/// calls your macro with the function name and extension name. -/// Trims the leading `xr` from the function name and the leading `XR_` from the feature name, -/// because it is easy to add back but impossible to remove with the preprocessor. -#define XR_LIST_FUNCTIONS_XR_FB_spatial_entity_sharing(_) \ - _(ShareSpacesFB, FB_spatial_entity_sharing) \ - - -/// For every function defined by XR_FB_scene in this version of the spec, -/// calls your macro with the function name and extension name. -/// Trims the leading `xr` from the function name and the leading `XR_` from the feature name, -/// because it is easy to add back but impossible to remove with the preprocessor. -#define XR_LIST_FUNCTIONS_XR_FB_scene(_) \ - _(GetSpaceBoundingBox2DFB, FB_scene) \ - _(GetSpaceBoundingBox3DFB, FB_scene) \ - _(GetSpaceSemanticLabelsFB, FB_scene) \ - _(GetSpaceBoundary2DFB, FB_scene) \ - _(GetSpaceRoomLayoutFB, FB_scene) \ - - -/// For every function defined by XR_ALMALENCE_digital_lens_control in this version of the spec, -/// calls your macro with the function name and extension name. -/// Trims the leading `xr` from the function name and the leading `XR_` from the feature name, -/// because it is easy to add back but impossible to remove with the preprocessor. -#define XR_LIST_FUNCTIONS_XR_ALMALENCE_digital_lens_control(_) \ - _(SetDigitalLensControlALMALENCE, ALMALENCE_digital_lens_control) \ - - -/// For every function defined by XR_FB_scene_capture in this version of the spec, -/// calls your macro with the function name and extension name. -/// Trims the leading `xr` from the function name and the leading `XR_` from the feature name, -/// because it is easy to add back but impossible to remove with the preprocessor. -#define XR_LIST_FUNCTIONS_XR_FB_scene_capture(_) \ - _(RequestSceneCaptureFB, FB_scene_capture) \ - - -/// For every function defined by XR_FB_spatial_entity_container in this version of the spec, -/// calls your macro with the function name and extension name. -/// Trims the leading `xr` from the function name and the leading `XR_` from the feature name, -/// because it is easy to add back but impossible to remove with the preprocessor. -#define XR_LIST_FUNCTIONS_XR_FB_spatial_entity_container(_) \ - _(GetSpaceContainerFB, FB_spatial_entity_container) \ - - -/// For every function defined by XR_META_foveation_eye_tracked in this version of the spec, -/// calls your macro with the function name and extension name. -/// Trims the leading `xr` from the function name and the leading `XR_` from the feature name, -/// because it is easy to add back but impossible to remove with the preprocessor. -#define XR_LIST_FUNCTIONS_XR_META_foveation_eye_tracked(_) \ - _(GetFoveationEyeTrackedStateMETA, META_foveation_eye_tracked) \ - - -/// For every function defined by XR_FB_face_tracking in this version of the spec, -/// calls your macro with the function name and extension name. -/// Trims the leading `xr` from the function name and the leading `XR_` from the feature name, -/// because it is easy to add back but impossible to remove with the preprocessor. -#define XR_LIST_FUNCTIONS_XR_FB_face_tracking(_) \ - _(CreateFaceTrackerFB, FB_face_tracking) \ - _(DestroyFaceTrackerFB, FB_face_tracking) \ - _(GetFaceExpressionWeightsFB, FB_face_tracking) \ - - -/// For every function defined by XR_FB_eye_tracking_social in this version of the spec, -/// calls your macro with the function name and extension name. -/// Trims the leading `xr` from the function name and the leading `XR_` from the feature name, -/// because it is easy to add back but impossible to remove with the preprocessor. -#define XR_LIST_FUNCTIONS_XR_FB_eye_tracking_social(_) \ - _(CreateEyeTrackerFB, FB_eye_tracking_social) \ - _(DestroyEyeTrackerFB, FB_eye_tracking_social) \ - _(GetEyeGazesFB, FB_eye_tracking_social) \ - - -/// For every function defined by XR_FB_passthrough_keyboard_hands in this version of the spec, -/// calls your macro with the function name and extension name. -/// Trims the leading `xr` from the function name and the leading `XR_` from the feature name, -/// because it is easy to add back but impossible to remove with the preprocessor. -#define XR_LIST_FUNCTIONS_XR_FB_passthrough_keyboard_hands(_) \ - _(PassthroughLayerSetKeyboardHandsIntensityFB, FB_passthrough_keyboard_hands) \ - - -/// For every function defined by XR_FB_haptic_pcm in this version of the spec, -/// calls your macro with the function name and extension name. -/// Trims the leading `xr` from the function name and the leading `XR_` from the feature name, -/// because it is easy to add back but impossible to remove with the preprocessor. -#define XR_LIST_FUNCTIONS_XR_FB_haptic_pcm(_) \ - _(GetDeviceSampleRateFB, FB_haptic_pcm) \ - - -/// For every function defined by XR_META_passthrough_preferences in this version of the spec, -/// calls your macro with the function name and extension name. -/// Trims the leading `xr` from the function name and the leading `XR_` from the feature name, -/// because it is easy to add back but impossible to remove with the preprocessor. -#define XR_LIST_FUNCTIONS_XR_META_passthrough_preferences(_) \ - _(GetPassthroughPreferencesMETA, META_passthrough_preferences) \ - - -/// For every function defined by XR_META_virtual_keyboard in this version of the spec, -/// calls your macro with the function name and extension name. -/// Trims the leading `xr` from the function name and the leading `XR_` from the feature name, -/// because it is easy to add back but impossible to remove with the preprocessor. -#define XR_LIST_FUNCTIONS_XR_META_virtual_keyboard(_) \ - _(CreateVirtualKeyboardMETA, META_virtual_keyboard) \ - _(DestroyVirtualKeyboardMETA, META_virtual_keyboard) \ - _(CreateVirtualKeyboardSpaceMETA, META_virtual_keyboard) \ - _(SuggestVirtualKeyboardLocationMETA, META_virtual_keyboard) \ - _(GetVirtualKeyboardScaleMETA, META_virtual_keyboard) \ - _(SetVirtualKeyboardModelVisibilityMETA, META_virtual_keyboard) \ - _(GetVirtualKeyboardModelAnimationStatesMETA, META_virtual_keyboard) \ - _(GetVirtualKeyboardDirtyTexturesMETA, META_virtual_keyboard) \ - _(GetVirtualKeyboardTextureDataMETA, META_virtual_keyboard) \ - _(SendVirtualKeyboardInputMETA, META_virtual_keyboard) \ - _(ChangeVirtualKeyboardTextContextMETA, META_virtual_keyboard) \ - - -/// For every function defined by XR_OCULUS_external_camera in this version of the spec, -/// calls your macro with the function name and extension name. -/// Trims the leading `xr` from the function name and the leading `XR_` from the feature name, -/// because it is easy to add back but impossible to remove with the preprocessor. -#define XR_LIST_FUNCTIONS_XR_OCULUS_external_camera(_) \ - _(EnumerateExternalCamerasOCULUS, OCULUS_external_camera) \ - - -/// For every function defined by XR_META_performance_metrics in this version of the spec, -/// calls your macro with the function name and extension name. -/// Trims the leading `xr` from the function name and the leading `XR_` from the feature name, -/// because it is easy to add back but impossible to remove with the preprocessor. -#define XR_LIST_FUNCTIONS_XR_META_performance_metrics(_) \ - _(EnumeratePerformanceMetricsCounterPathsMETA, META_performance_metrics) \ - _(SetPerformanceMetricsStateMETA, META_performance_metrics) \ - _(GetPerformanceMetricsStateMETA, META_performance_metrics) \ - _(QueryPerformanceMetricsCounterMETA, META_performance_metrics) \ - - -/// For every function defined by XR_FB_spatial_entity_storage_batch in this version of the spec, -/// calls your macro with the function name and extension name. -/// Trims the leading `xr` from the function name and the leading `XR_` from the feature name, -/// because it is easy to add back but impossible to remove with the preprocessor. -#define XR_LIST_FUNCTIONS_XR_FB_spatial_entity_storage_batch(_) \ - _(SaveSpaceListFB, FB_spatial_entity_storage_batch) \ - - -/// For every function defined by XR_FB_spatial_entity_user in this version of the spec, -/// calls your macro with the function name and extension name. -/// Trims the leading `xr` from the function name and the leading `XR_` from the feature name, -/// because it is easy to add back but impossible to remove with the preprocessor. -#define XR_LIST_FUNCTIONS_XR_FB_spatial_entity_user(_) \ - _(CreateSpaceUserFB, FB_spatial_entity_user) \ - _(GetSpaceUserIdFB, FB_spatial_entity_user) \ - _(DestroySpaceUserFB, FB_spatial_entity_user) \ - - -/// For every function defined by XR_META_recommended_layer_resolution in this version of the spec, -/// calls your macro with the function name and extension name. -/// Trims the leading `xr` from the function name and the leading `XR_` from the feature name, -/// because it is easy to add back but impossible to remove with the preprocessor. -#define XR_LIST_FUNCTIONS_XR_META_recommended_layer_resolution(_) \ - _(GetRecommendedLayerResolutionMETA, META_recommended_layer_resolution) \ - - -/// For every function defined by XR_META_passthrough_color_lut in this version of the spec, -/// calls your macro with the function name and extension name. -/// Trims the leading `xr` from the function name and the leading `XR_` from the feature name, -/// because it is easy to add back but impossible to remove with the preprocessor. -#define XR_LIST_FUNCTIONS_XR_META_passthrough_color_lut(_) \ - _(CreatePassthroughColorLutMETA, META_passthrough_color_lut) \ - _(DestroyPassthroughColorLutMETA, META_passthrough_color_lut) \ - _(UpdatePassthroughColorLutMETA, META_passthrough_color_lut) \ - - -/// For every function defined by XR_META_spatial_entity_mesh in this version of the spec, -/// calls your macro with the function name and extension name. -/// Trims the leading `xr` from the function name and the leading `XR_` from the feature name, -/// because it is easy to add back but impossible to remove with the preprocessor. -#define XR_LIST_FUNCTIONS_XR_META_spatial_entity_mesh(_) \ - _(GetSpaceTriangleMeshMETA, META_spatial_entity_mesh) \ - - -/// For every function defined by XR_FB_face_tracking2 in this version of the spec, -/// calls your macro with the function name and extension name. -/// Trims the leading `xr` from the function name and the leading `XR_` from the feature name, -/// because it is easy to add back but impossible to remove with the preprocessor. -#define XR_LIST_FUNCTIONS_XR_FB_face_tracking2(_) \ - _(CreateFaceTracker2FB, FB_face_tracking2) \ - _(DestroyFaceTracker2FB, FB_face_tracking2) \ - _(GetFaceExpressionWeights2FB, FB_face_tracking2) \ - - -/// For every function defined by XR_META_environment_depth in this version of the spec, -/// calls your macro with the function name and extension name. -/// Trims the leading `xr` from the function name and the leading `XR_` from the feature name, -/// because it is easy to add back but impossible to remove with the preprocessor. -#define XR_LIST_FUNCTIONS_XR_META_environment_depth(_) \ - _(CreateEnvironmentDepthProviderMETA, META_environment_depth) \ - _(DestroyEnvironmentDepthProviderMETA, META_environment_depth) \ - _(StartEnvironmentDepthProviderMETA, META_environment_depth) \ - _(StopEnvironmentDepthProviderMETA, META_environment_depth) \ - _(CreateEnvironmentDepthSwapchainMETA, META_environment_depth) \ - _(DestroyEnvironmentDepthSwapchainMETA, META_environment_depth) \ - _(EnumerateEnvironmentDepthSwapchainImagesMETA, META_environment_depth) \ - _(GetEnvironmentDepthSwapchainStateMETA, META_environment_depth) \ - _(AcquireEnvironmentDepthImageMETA, META_environment_depth) \ - _(SetEnvironmentDepthHandRemovalMETA, META_environment_depth) \ - - -/// For every function defined by XR_QCOM_tracking_optimization_settings in this version of the spec, -/// calls your macro with the function name and extension name. -/// Trims the leading `xr` from the function name and the leading `XR_` from the feature name, -/// because it is easy to add back but impossible to remove with the preprocessor. -#define XR_LIST_FUNCTIONS_XR_QCOM_tracking_optimization_settings(_) \ - _(SetTrackingOptimizationSettingsHintQCOM, QCOM_tracking_optimization_settings) \ - - -/// For every function defined by XR_HTC_passthrough in this version of the spec, -/// calls your macro with the function name and extension name. -/// Trims the leading `xr` from the function name and the leading `XR_` from the feature name, -/// because it is easy to add back but impossible to remove with the preprocessor. -#define XR_LIST_FUNCTIONS_XR_HTC_passthrough(_) \ - _(CreatePassthroughHTC, HTC_passthrough) \ - _(DestroyPassthroughHTC, HTC_passthrough) \ - - -/// For every function defined by XR_HTC_foveation in this version of the spec, -/// calls your macro with the function name and extension name. -/// Trims the leading `xr` from the function name and the leading `XR_` from the feature name, -/// because it is easy to add back but impossible to remove with the preprocessor. -#define XR_LIST_FUNCTIONS_XR_HTC_foveation(_) \ - _(ApplyFoveationHTC, HTC_foveation) \ - - -/// For every function defined by XR_HTC_anchor in this version of the spec, -/// calls your macro with the function name and extension name. -/// Trims the leading `xr` from the function name and the leading `XR_` from the feature name, -/// because it is easy to add back but impossible to remove with the preprocessor. -#define XR_LIST_FUNCTIONS_XR_HTC_anchor(_) \ - _(CreateSpatialAnchorHTC, HTC_anchor) \ - _(GetSpatialAnchorNameHTC, HTC_anchor) \ - - -/// For every function defined by XR_MNDX_force_feedback_curl in this version of the spec, -/// calls your macro with the function name and extension name. -/// Trims the leading `xr` from the function name and the leading `XR_` from the feature name, -/// because it is easy to add back but impossible to remove with the preprocessor. -#define XR_LIST_FUNCTIONS_XR_MNDX_force_feedback_curl(_) \ - _(ApplyForceFeedbackCurlMNDX, MNDX_force_feedback_curl) \ - - -/// For every function defined by XR_EXT_plane_detection in this version of the spec, -/// calls your macro with the function name and extension name. -/// Trims the leading `xr` from the function name and the leading `XR_` from the feature name, -/// because it is easy to add back but impossible to remove with the preprocessor. -#define XR_LIST_FUNCTIONS_XR_EXT_plane_detection(_) \ - _(CreatePlaneDetectorEXT, EXT_plane_detection) \ - _(DestroyPlaneDetectorEXT, EXT_plane_detection) \ - _(BeginPlaneDetectionEXT, EXT_plane_detection) \ - _(GetPlaneDetectionStateEXT, EXT_plane_detection) \ - _(GetPlaneDetectionsEXT, EXT_plane_detection) \ - _(GetPlanePolygonBufferEXT, EXT_plane_detection) \ - - -/// For every function defined by XR_EXT_future in this version of the spec, -/// calls your macro with the function name and extension name. -/// Trims the leading `xr` from the function name and the leading `XR_` from the feature name, -/// because it is easy to add back but impossible to remove with the preprocessor. -#define XR_LIST_FUNCTIONS_XR_EXT_future(_) \ - _(PollFutureEXT, EXT_future) \ - _(CancelFutureEXT, EXT_future) \ - - -/// For every function defined by XR_ML_user_calibration in this version of the spec, -/// calls your macro with the function name and extension name. -/// Trims the leading `xr` from the function name and the leading `XR_` from the feature name, -/// because it is easy to add back but impossible to remove with the preprocessor. -#define XR_LIST_FUNCTIONS_XR_ML_user_calibration(_) \ - _(EnableUserCalibrationEventsML, ML_user_calibration) \ - - - - -#endif - diff --git a/Plugins/MetaXR/Source/Thirdparty/KhronosOpenXR/include/khronos/openxr/openxr_reflection_parent_structs.h b/Plugins/MetaXR/Source/Thirdparty/KhronosOpenXR/include/khronos/openxr/openxr_reflection_parent_structs.h deleted file mode 100644 index d0d05e9..0000000 --- a/Plugins/MetaXR/Source/Thirdparty/KhronosOpenXR/include/khronos/openxr/openxr_reflection_parent_structs.h +++ /dev/null @@ -1,265 +0,0 @@ -#ifndef OPENXR_REFLECTION_PARENT_STRUCTS_H_ -#define OPENXR_REFLECTION_PARENT_STRUCTS_H_ 1 - -/* -** Copyright (c) 2017-2023, The Khronos Group Inc. -** -** SPDX-License-Identifier: Apache-2.0 OR MIT -*/ - -/* -** This header is generated from the Khronos OpenXR XML API Registry. -** -*/ - -#include "openxr.h" - -/* -This file contains expansion macros (X Macros) for OpenXR structures that have a parent type. -*/ - - -/// Like XR_LIST_ALL_STRUCTURE_TYPES, but only includes types whose parent struct type is XrCompositionLayerBaseHeader -#define XR_LIST_ALL_CHILD_STRUCTURE_TYPES_XrCompositionLayerBaseHeader(_avail, _unavail) \ - _impl_XR_LIST_ALL_CHILD_STRUCTURE_TYPES_XrCompositionLayerBaseHeader_CORE(_avail, _unavail) \ - - -// Implementation detail of XR_LIST_ALL_CHILD_STRUCTURE_TYPES_XrCompositionLayerBaseHeader() -#define _impl_XR_LIST_ALL_CHILD_STRUCTURE_TYPES_XrCompositionLayerBaseHeader_CORE(_avail, _unavail) \ - _avail(XrCompositionLayerProjection, XR_TYPE_COMPOSITION_LAYER_PROJECTION) \ - _avail(XrCompositionLayerQuad, XR_TYPE_COMPOSITION_LAYER_QUAD) \ - _avail(XrCompositionLayerCubeKHR, XR_TYPE_COMPOSITION_LAYER_CUBE_KHR) \ - _avail(XrCompositionLayerCylinderKHR, XR_TYPE_COMPOSITION_LAYER_CYLINDER_KHR) \ - _avail(XrCompositionLayerEquirectKHR, XR_TYPE_COMPOSITION_LAYER_EQUIRECT_KHR) \ - _avail(XrCompositionLayerEquirect2KHR, XR_TYPE_COMPOSITION_LAYER_EQUIRECT2_KHR) \ - _avail(XrCompositionLayerPassthroughHTC, XR_TYPE_COMPOSITION_LAYER_PASSTHROUGH_HTC) \ - - - - - -/// Like XR_LIST_ALL_STRUCTURE_TYPES, but only includes types whose parent struct type is XrEventDataBaseHeader -#define XR_LIST_ALL_CHILD_STRUCTURE_TYPES_XrEventDataBaseHeader(_avail, _unavail) \ - _impl_XR_LIST_ALL_CHILD_STRUCTURE_TYPES_XrEventDataBaseHeader_CORE(_avail, _unavail) \ - - -// Implementation detail of XR_LIST_ALL_CHILD_STRUCTURE_TYPES_XrEventDataBaseHeader() -#define _impl_XR_LIST_ALL_CHILD_STRUCTURE_TYPES_XrEventDataBaseHeader_CORE(_avail, _unavail) \ - _avail(XrEventDataEventsLost, XR_TYPE_EVENT_DATA_EVENTS_LOST) \ - _avail(XrEventDataInstanceLossPending, XR_TYPE_EVENT_DATA_INSTANCE_LOSS_PENDING) \ - _avail(XrEventDataSessionStateChanged, XR_TYPE_EVENT_DATA_SESSION_STATE_CHANGED) \ - _avail(XrEventDataReferenceSpaceChangePending, XR_TYPE_EVENT_DATA_REFERENCE_SPACE_CHANGE_PENDING) \ - _avail(XrEventDataInteractionProfileChanged, XR_TYPE_EVENT_DATA_INTERACTION_PROFILE_CHANGED) \ - _avail(XrEventDataVisibilityMaskChangedKHR, XR_TYPE_EVENT_DATA_VISIBILITY_MASK_CHANGED_KHR) \ - _avail(XrEventDataPerfSettingsEXT, XR_TYPE_EVENT_DATA_PERF_SETTINGS_EXT) \ - _avail(XrEventDataMainSessionVisibilityChangedEXTX, XR_TYPE_EVENT_DATA_MAIN_SESSION_VISIBILITY_CHANGED_EXTX) \ - _avail(XrEventDataDisplayRefreshRateChangedFB, XR_TYPE_EVENT_DATA_DISPLAY_REFRESH_RATE_CHANGED_FB) \ - _avail(XrEventDataViveTrackerConnectedHTCX, XR_TYPE_EVENT_DATA_VIVE_TRACKER_CONNECTED_HTCX) \ - _avail(XrEventDataSpatialAnchorCreateCompleteFB, XR_TYPE_EVENT_DATA_SPATIAL_ANCHOR_CREATE_COMPLETE_FB) \ - _avail(XrEventDataSpaceSetStatusCompleteFB, XR_TYPE_EVENT_DATA_SPACE_SET_STATUS_COMPLETE_FB) \ - _avail(XrEventDataMarkerTrackingUpdateVARJO, XR_TYPE_EVENT_DATA_MARKER_TRACKING_UPDATE_VARJO) \ - _avail(XrEventDataSpaceQueryResultsAvailableFB, XR_TYPE_EVENT_DATA_SPACE_QUERY_RESULTS_AVAILABLE_FB) \ - _avail(XrEventDataSpaceQueryCompleteFB, XR_TYPE_EVENT_DATA_SPACE_QUERY_COMPLETE_FB) \ - _avail(XrEventDataSpaceSaveCompleteFB, XR_TYPE_EVENT_DATA_SPACE_SAVE_COMPLETE_FB) \ - _avail(XrEventDataSpaceEraseCompleteFB, XR_TYPE_EVENT_DATA_SPACE_ERASE_COMPLETE_FB) \ - _avail(XrEventDataSpaceShareCompleteFB, XR_TYPE_EVENT_DATA_SPACE_SHARE_COMPLETE_FB) \ - _avail(XrEventDataSpaceListSaveCompleteFB, XR_TYPE_EVENT_DATA_SPACE_LIST_SAVE_COMPLETE_FB) \ - - - - - -/// Like XR_LIST_ALL_STRUCTURE_TYPES, but only includes types whose parent struct type is XrHapticBaseHeader -#define XR_LIST_ALL_CHILD_STRUCTURE_TYPES_XrHapticBaseHeader(_avail, _unavail) \ - _impl_XR_LIST_ALL_CHILD_STRUCTURE_TYPES_XrHapticBaseHeader_CORE(_avail, _unavail) \ - - -// Implementation detail of XR_LIST_ALL_CHILD_STRUCTURE_TYPES_XrHapticBaseHeader() -#define _impl_XR_LIST_ALL_CHILD_STRUCTURE_TYPES_XrHapticBaseHeader_CORE(_avail, _unavail) \ - _avail(XrHapticVibration, XR_TYPE_HAPTIC_VIBRATION) \ - _avail(XrHapticAmplitudeEnvelopeVibrationFB, XR_TYPE_HAPTIC_AMPLITUDE_ENVELOPE_VIBRATION_FB) \ - _avail(XrHapticPcmVibrationFB, XR_TYPE_HAPTIC_PCM_VIBRATION_FB) \ - - - - - -/// Like XR_LIST_ALL_STRUCTURE_TYPES, but only includes types whose parent struct type is XrSwapchainImageBaseHeader -#define XR_LIST_ALL_CHILD_STRUCTURE_TYPES_XrSwapchainImageBaseHeader(_avail, _unavail) \ - _impl_XR_LIST_ALL_CHILD_STRUCTURE_TYPES_XrSwapchainImageBaseHeader_CORE(_avail, _unavail) \ - _impl_XR_LIST_ALL_CHILD_STRUCTURE_TYPES_XrSwapchainImageBaseHeader_XR_USE_GRAPHICS_API_D3D11(_avail, _unavail) \ - _impl_XR_LIST_ALL_CHILD_STRUCTURE_TYPES_XrSwapchainImageBaseHeader_XR_USE_GRAPHICS_API_D3D12(_avail, _unavail) \ - _impl_XR_LIST_ALL_CHILD_STRUCTURE_TYPES_XrSwapchainImageBaseHeader_XR_USE_GRAPHICS_API_OPENGL(_avail, _unavail) \ - _impl_XR_LIST_ALL_CHILD_STRUCTURE_TYPES_XrSwapchainImageBaseHeader_XR_USE_GRAPHICS_API_OPENGL_ES(_avail, _unavail) \ - _impl_XR_LIST_ALL_CHILD_STRUCTURE_TYPES_XrSwapchainImageBaseHeader_XR_USE_GRAPHICS_API_VULKAN(_avail, _unavail) \ - - -// Implementation detail of XR_LIST_ALL_CHILD_STRUCTURE_TYPES_XrSwapchainImageBaseHeader() -#define _impl_XR_LIST_ALL_CHILD_STRUCTURE_TYPES_XrSwapchainImageBaseHeader_CORE(_avail, _unavail) \ - - -#if defined(XR_USE_GRAPHICS_API_D3D11) -#define _impl_XR_LIST_ALL_CHILD_STRUCTURE_TYPES_XrSwapchainImageBaseHeader_XR_USE_GRAPHICS_API_D3D11(_avail, _unavail) \ - _avail(XrSwapchainImageD3D11KHR, XR_TYPE_SWAPCHAIN_IMAGE_D3D11_KHR) \ - -#else -#define _impl_XR_LIST_ALL_CHILD_STRUCTURE_TYPES_XrSwapchainImageBaseHeader_XR_USE_GRAPHICS_API_D3D11(_avail, _unavail) \ - _unavail(XrSwapchainImageD3D11KHR, XR_TYPE_SWAPCHAIN_IMAGE_D3D11_KHR) \ - -#endif - -#if defined(XR_USE_GRAPHICS_API_D3D12) -#define _impl_XR_LIST_ALL_CHILD_STRUCTURE_TYPES_XrSwapchainImageBaseHeader_XR_USE_GRAPHICS_API_D3D12(_avail, _unavail) \ - _avail(XrSwapchainImageD3D12KHR, XR_TYPE_SWAPCHAIN_IMAGE_D3D12_KHR) \ - -#else -#define _impl_XR_LIST_ALL_CHILD_STRUCTURE_TYPES_XrSwapchainImageBaseHeader_XR_USE_GRAPHICS_API_D3D12(_avail, _unavail) \ - _unavail(XrSwapchainImageD3D12KHR, XR_TYPE_SWAPCHAIN_IMAGE_D3D12_KHR) \ - -#endif - -#if defined(XR_USE_GRAPHICS_API_OPENGL) -#define _impl_XR_LIST_ALL_CHILD_STRUCTURE_TYPES_XrSwapchainImageBaseHeader_XR_USE_GRAPHICS_API_OPENGL(_avail, _unavail) \ - _avail(XrSwapchainImageOpenGLKHR, XR_TYPE_SWAPCHAIN_IMAGE_OPENGL_KHR) \ - -#else -#define _impl_XR_LIST_ALL_CHILD_STRUCTURE_TYPES_XrSwapchainImageBaseHeader_XR_USE_GRAPHICS_API_OPENGL(_avail, _unavail) \ - _unavail(XrSwapchainImageOpenGLKHR, XR_TYPE_SWAPCHAIN_IMAGE_OPENGL_KHR) \ - -#endif - -#if defined(XR_USE_GRAPHICS_API_OPENGL_ES) -#define _impl_XR_LIST_ALL_CHILD_STRUCTURE_TYPES_XrSwapchainImageBaseHeader_XR_USE_GRAPHICS_API_OPENGL_ES(_avail, _unavail) \ - _avail(XrSwapchainImageOpenGLESKHR, XR_TYPE_SWAPCHAIN_IMAGE_OPENGL_ES_KHR) \ - -#else -#define _impl_XR_LIST_ALL_CHILD_STRUCTURE_TYPES_XrSwapchainImageBaseHeader_XR_USE_GRAPHICS_API_OPENGL_ES(_avail, _unavail) \ - _unavail(XrSwapchainImageOpenGLESKHR, XR_TYPE_SWAPCHAIN_IMAGE_OPENGL_ES_KHR) \ - -#endif - -#if defined(XR_USE_GRAPHICS_API_VULKAN) -#define _impl_XR_LIST_ALL_CHILD_STRUCTURE_TYPES_XrSwapchainImageBaseHeader_XR_USE_GRAPHICS_API_VULKAN(_avail, _unavail) \ - _avail(XrSwapchainImageVulkanKHR, XR_TYPE_SWAPCHAIN_IMAGE_VULKAN_KHR) \ - -#else -#define _impl_XR_LIST_ALL_CHILD_STRUCTURE_TYPES_XrSwapchainImageBaseHeader_XR_USE_GRAPHICS_API_VULKAN(_avail, _unavail) \ - _unavail(XrSwapchainImageVulkanKHR, XR_TYPE_SWAPCHAIN_IMAGE_VULKAN_KHR) \ - -#endif - - - - -/// Like XR_LIST_ALL_STRUCTURE_TYPES, but only includes types whose parent struct type is XrLoaderInitInfoBaseHeaderKHR -#define XR_LIST_ALL_CHILD_STRUCTURE_TYPES_XrLoaderInitInfoBaseHeaderKHR(_avail, _unavail) \ - _impl_XR_LIST_ALL_CHILD_STRUCTURE_TYPES_XrLoaderInitInfoBaseHeaderKHR_CORE(_avail, _unavail) \ - _impl_XR_LIST_ALL_CHILD_STRUCTURE_TYPES_XrLoaderInitInfoBaseHeaderKHR_XR_USE_PLATFORM_ANDROID(_avail, _unavail) \ - - -// Implementation detail of XR_LIST_ALL_CHILD_STRUCTURE_TYPES_XrLoaderInitInfoBaseHeaderKHR() -#define _impl_XR_LIST_ALL_CHILD_STRUCTURE_TYPES_XrLoaderInitInfoBaseHeaderKHR_CORE(_avail, _unavail) \ - - -#if defined(XR_USE_PLATFORM_ANDROID) -#define _impl_XR_LIST_ALL_CHILD_STRUCTURE_TYPES_XrLoaderInitInfoBaseHeaderKHR_XR_USE_PLATFORM_ANDROID(_avail, _unavail) \ - _avail(XrLoaderInitInfoAndroidKHR, XR_TYPE_LOADER_INIT_INFO_ANDROID_KHR) \ - -#else -#define _impl_XR_LIST_ALL_CHILD_STRUCTURE_TYPES_XrLoaderInitInfoBaseHeaderKHR_XR_USE_PLATFORM_ANDROID(_avail, _unavail) \ - _unavail(XrLoaderInitInfoAndroidKHR, XR_TYPE_LOADER_INIT_INFO_ANDROID_KHR) \ - -#endif - - - - -/// Like XR_LIST_ALL_STRUCTURE_TYPES, but only includes types whose parent struct type is XrBindingModificationBaseHeaderKHR -#define XR_LIST_ALL_CHILD_STRUCTURE_TYPES_XrBindingModificationBaseHeaderKHR(_avail, _unavail) \ - _impl_XR_LIST_ALL_CHILD_STRUCTURE_TYPES_XrBindingModificationBaseHeaderKHR_CORE(_avail, _unavail) \ - - -// Implementation detail of XR_LIST_ALL_CHILD_STRUCTURE_TYPES_XrBindingModificationBaseHeaderKHR() -#define _impl_XR_LIST_ALL_CHILD_STRUCTURE_TYPES_XrBindingModificationBaseHeaderKHR_CORE(_avail, _unavail) \ - _avail(XrInteractionProfileDpadBindingEXT, XR_TYPE_INTERACTION_PROFILE_DPAD_BINDING_EXT) \ - _avail(XrInteractionProfileAnalogThresholdVALVE, XR_TYPE_INTERACTION_PROFILE_ANALOG_THRESHOLD_VALVE) \ - - - - - -/// Like XR_LIST_ALL_STRUCTURE_TYPES, but only includes types whose parent struct type is XrSwapchainStateBaseHeaderFB -#define XR_LIST_ALL_CHILD_STRUCTURE_TYPES_XrSwapchainStateBaseHeaderFB(_avail, _unavail) \ - _impl_XR_LIST_ALL_CHILD_STRUCTURE_TYPES_XrSwapchainStateBaseHeaderFB_CORE(_avail, _unavail) \ - _impl_XR_LIST_ALL_CHILD_STRUCTURE_TYPES_XrSwapchainStateBaseHeaderFB_XR_USE_GRAPHICS_API_OPENGL_ES(_avail, _unavail) \ - _impl_XR_LIST_ALL_CHILD_STRUCTURE_TYPES_XrSwapchainStateBaseHeaderFB_XR_USE_GRAPHICS_API_VULKAN(_avail, _unavail) \ - _impl_XR_LIST_ALL_CHILD_STRUCTURE_TYPES_XrSwapchainStateBaseHeaderFB_XR_USE_PLATFORM_ANDROID(_avail, _unavail) \ - - -// Implementation detail of XR_LIST_ALL_CHILD_STRUCTURE_TYPES_XrSwapchainStateBaseHeaderFB() -#define _impl_XR_LIST_ALL_CHILD_STRUCTURE_TYPES_XrSwapchainStateBaseHeaderFB_CORE(_avail, _unavail) \ - _avail(XrSwapchainStateFoveationFB, XR_TYPE_SWAPCHAIN_STATE_FOVEATION_FB) \ - - -#if defined(XR_USE_GRAPHICS_API_OPENGL_ES) -#define _impl_XR_LIST_ALL_CHILD_STRUCTURE_TYPES_XrSwapchainStateBaseHeaderFB_XR_USE_GRAPHICS_API_OPENGL_ES(_avail, _unavail) \ - _avail(XrSwapchainStateSamplerOpenGLESFB, XR_TYPE_SWAPCHAIN_STATE_SAMPLER_OPENGL_ES_FB) \ - -#else -#define _impl_XR_LIST_ALL_CHILD_STRUCTURE_TYPES_XrSwapchainStateBaseHeaderFB_XR_USE_GRAPHICS_API_OPENGL_ES(_avail, _unavail) \ - _unavail(XrSwapchainStateSamplerOpenGLESFB, XR_TYPE_SWAPCHAIN_STATE_SAMPLER_OPENGL_ES_FB) \ - -#endif - -#if defined(XR_USE_GRAPHICS_API_VULKAN) -#define _impl_XR_LIST_ALL_CHILD_STRUCTURE_TYPES_XrSwapchainStateBaseHeaderFB_XR_USE_GRAPHICS_API_VULKAN(_avail, _unavail) \ - _avail(XrSwapchainStateSamplerVulkanFB, XR_TYPE_SWAPCHAIN_STATE_SAMPLER_VULKAN_FB) \ - -#else -#define _impl_XR_LIST_ALL_CHILD_STRUCTURE_TYPES_XrSwapchainStateBaseHeaderFB_XR_USE_GRAPHICS_API_VULKAN(_avail, _unavail) \ - _unavail(XrSwapchainStateSamplerVulkanFB, XR_TYPE_SWAPCHAIN_STATE_SAMPLER_VULKAN_FB) \ - -#endif - -#if defined(XR_USE_PLATFORM_ANDROID) -#define _impl_XR_LIST_ALL_CHILD_STRUCTURE_TYPES_XrSwapchainStateBaseHeaderFB_XR_USE_PLATFORM_ANDROID(_avail, _unavail) \ - _avail(XrSwapchainStateAndroidSurfaceDimensionsFB, XR_TYPE_SWAPCHAIN_STATE_ANDROID_SURFACE_DIMENSIONS_FB) \ - -#else -#define _impl_XR_LIST_ALL_CHILD_STRUCTURE_TYPES_XrSwapchainStateBaseHeaderFB_XR_USE_PLATFORM_ANDROID(_avail, _unavail) \ - _unavail(XrSwapchainStateAndroidSurfaceDimensionsFB, XR_TYPE_SWAPCHAIN_STATE_ANDROID_SURFACE_DIMENSIONS_FB) \ - -#endif - - - - -/// Like XR_LIST_ALL_STRUCTURE_TYPES, but only includes types whose parent struct type is XrSpaceQueryInfoBaseHeaderFB -#define XR_LIST_ALL_CHILD_STRUCTURE_TYPES_XrSpaceQueryInfoBaseHeaderFB(_avail, _unavail) \ - _impl_XR_LIST_ALL_CHILD_STRUCTURE_TYPES_XrSpaceQueryInfoBaseHeaderFB_CORE(_avail, _unavail) \ - - -// Implementation detail of XR_LIST_ALL_CHILD_STRUCTURE_TYPES_XrSpaceQueryInfoBaseHeaderFB() -#define _impl_XR_LIST_ALL_CHILD_STRUCTURE_TYPES_XrSpaceQueryInfoBaseHeaderFB_CORE(_avail, _unavail) \ - _avail(XrSpaceQueryInfoFB, XR_TYPE_SPACE_QUERY_INFO_FB) \ - - - - - -/// Like XR_LIST_ALL_STRUCTURE_TYPES, but only includes types whose parent struct type is XrSpaceFilterInfoBaseHeaderFB -#define XR_LIST_ALL_CHILD_STRUCTURE_TYPES_XrSpaceFilterInfoBaseHeaderFB(_avail, _unavail) \ - _impl_XR_LIST_ALL_CHILD_STRUCTURE_TYPES_XrSpaceFilterInfoBaseHeaderFB_CORE(_avail, _unavail) \ - - -// Implementation detail of XR_LIST_ALL_CHILD_STRUCTURE_TYPES_XrSpaceFilterInfoBaseHeaderFB() -#define _impl_XR_LIST_ALL_CHILD_STRUCTURE_TYPES_XrSpaceFilterInfoBaseHeaderFB_CORE(_avail, _unavail) \ - _avail(XrSpaceUuidFilterInfoFB, XR_TYPE_SPACE_UUID_FILTER_INFO_FB) \ - _avail(XrSpaceComponentFilterInfoFB, XR_TYPE_SPACE_COMPONENT_FILTER_INFO_FB) \ - - - - - -#endif - diff --git a/Plugins/MetaXR/Source/Thirdparty/KhronosOpenXR/include/khronos/openxr/openxr_reflection_structs.h b/Plugins/MetaXR/Source/Thirdparty/KhronosOpenXR/include/khronos/openxr/openxr_reflection_structs.h deleted file mode 100644 index e87e55b..0000000 --- a/Plugins/MetaXR/Source/Thirdparty/KhronosOpenXR/include/khronos/openxr/openxr_reflection_structs.h +++ /dev/null @@ -1,549 +0,0 @@ -#ifndef OPENXR_REFLECTION_STRUCTS_H_ -#define OPENXR_REFLECTION_STRUCTS_H_ 1 - -/* -** Copyright (c) 2017-2024, The Khronos Group Inc. -** -** SPDX-License-Identifier: Apache-2.0 OR MIT -*/ - -/* -** This header is generated from the Khronos OpenXR XML API Registry. -** -*/ - -#include "openxr.h" - -/* -This file contains expansion macros (X Macros) for OpenXR structures. -*/ - - - -/// Calls one of your macros with the structure type name and the XrStructureType constant for -/// each known structure type. The first macro (_avail) is called for those that are available, -/// while the second macro (_unavail) is called for those unavailable due to preprocessor definitions. -#define XR_LIST_ALL_STRUCTURE_TYPES(_avail, _unavail) \ - _impl_XR_LIST_ALL_STRUCTURE_TYPES_CORE(_avail, _unavail) \ - _impl_XR_LIST_ALL_STRUCTURE_TYPES_XR_USE_GRAPHICS_API_D3D11(_avail, _unavail) \ - _impl_XR_LIST_ALL_STRUCTURE_TYPES_XR_USE_GRAPHICS_API_D3D12(_avail, _unavail) \ - _impl_XR_LIST_ALL_STRUCTURE_TYPES_XR_USE_GRAPHICS_API_OPENGL(_avail, _unavail) \ - _impl_XR_LIST_ALL_STRUCTURE_TYPES_XR_USE_GRAPHICS_API_OPENGL_XR_USE_PLATFORM_WAYLAND(_avail, _unavail) \ - _impl_XR_LIST_ALL_STRUCTURE_TYPES_XR_USE_GRAPHICS_API_OPENGL_XR_USE_PLATFORM_WIN32(_avail, _unavail) \ - _impl_XR_LIST_ALL_STRUCTURE_TYPES_XR_USE_GRAPHICS_API_OPENGL_XR_USE_PLATFORM_XCB(_avail, _unavail) \ - _impl_XR_LIST_ALL_STRUCTURE_TYPES_XR_USE_GRAPHICS_API_OPENGL_XR_USE_PLATFORM_XLIB(_avail, _unavail) \ - _impl_XR_LIST_ALL_STRUCTURE_TYPES_XR_USE_GRAPHICS_API_OPENGL_ES(_avail, _unavail) \ - _impl_XR_LIST_ALL_STRUCTURE_TYPES_XR_USE_GRAPHICS_API_OPENGL_ES_XR_USE_PLATFORM_ANDROID(_avail, _unavail) \ - _impl_XR_LIST_ALL_STRUCTURE_TYPES_XR_USE_GRAPHICS_API_VULKAN(_avail, _unavail) \ - _impl_XR_LIST_ALL_STRUCTURE_TYPES_XR_USE_PLATFORM_ANDROID(_avail, _unavail) \ - _impl_XR_LIST_ALL_STRUCTURE_TYPES_XR_USE_PLATFORM_EGL(_avail, _unavail) \ - _impl_XR_LIST_ALL_STRUCTURE_TYPES_XR_USE_PLATFORM_ML(_avail, _unavail) \ - _impl_XR_LIST_ALL_STRUCTURE_TYPES_XR_USE_PLATFORM_WIN32(_avail, _unavail) \ - - -// Implementation detail of XR_LIST_ALL_STRUCTURE_TYPES() -#define _impl_XR_LIST_ALL_STRUCTURE_TYPES_CORE(_avail, _unavail) \ - _avail(XrApiLayerProperties, XR_TYPE_API_LAYER_PROPERTIES) \ - _avail(XrExtensionProperties, XR_TYPE_EXTENSION_PROPERTIES) \ - _avail(XrInstanceCreateInfo, XR_TYPE_INSTANCE_CREATE_INFO) \ - _avail(XrInstanceProperties, XR_TYPE_INSTANCE_PROPERTIES) \ - _avail(XrEventDataBuffer, XR_TYPE_EVENT_DATA_BUFFER) \ - _avail(XrSystemGetInfo, XR_TYPE_SYSTEM_GET_INFO) \ - _avail(XrSystemProperties, XR_TYPE_SYSTEM_PROPERTIES) \ - _avail(XrSessionCreateInfo, XR_TYPE_SESSION_CREATE_INFO) \ - _avail(XrSpaceVelocity, XR_TYPE_SPACE_VELOCITY) \ - _avail(XrReferenceSpaceCreateInfo, XR_TYPE_REFERENCE_SPACE_CREATE_INFO) \ - _avail(XrActionSpaceCreateInfo, XR_TYPE_ACTION_SPACE_CREATE_INFO) \ - _avail(XrSpaceLocation, XR_TYPE_SPACE_LOCATION) \ - _avail(XrViewConfigurationProperties, XR_TYPE_VIEW_CONFIGURATION_PROPERTIES) \ - _avail(XrViewConfigurationView, XR_TYPE_VIEW_CONFIGURATION_VIEW) \ - _avail(XrSwapchainCreateInfo, XR_TYPE_SWAPCHAIN_CREATE_INFO) \ - _avail(XrSwapchainImageAcquireInfo, XR_TYPE_SWAPCHAIN_IMAGE_ACQUIRE_INFO) \ - _avail(XrSwapchainImageWaitInfo, XR_TYPE_SWAPCHAIN_IMAGE_WAIT_INFO) \ - _avail(XrSwapchainImageReleaseInfo, XR_TYPE_SWAPCHAIN_IMAGE_RELEASE_INFO) \ - _avail(XrSessionBeginInfo, XR_TYPE_SESSION_BEGIN_INFO) \ - _avail(XrFrameWaitInfo, XR_TYPE_FRAME_WAIT_INFO) \ - _avail(XrFrameState, XR_TYPE_FRAME_STATE) \ - _avail(XrFrameBeginInfo, XR_TYPE_FRAME_BEGIN_INFO) \ - _avail(XrFrameEndInfo, XR_TYPE_FRAME_END_INFO) \ - _avail(XrViewLocateInfo, XR_TYPE_VIEW_LOCATE_INFO) \ - _avail(XrViewState, XR_TYPE_VIEW_STATE) \ - _avail(XrView, XR_TYPE_VIEW) \ - _avail(XrActionSetCreateInfo, XR_TYPE_ACTION_SET_CREATE_INFO) \ - _avail(XrActionCreateInfo, XR_TYPE_ACTION_CREATE_INFO) \ - _avail(XrInteractionProfileSuggestedBinding, XR_TYPE_INTERACTION_PROFILE_SUGGESTED_BINDING) \ - _avail(XrSessionActionSetsAttachInfo, XR_TYPE_SESSION_ACTION_SETS_ATTACH_INFO) \ - _avail(XrInteractionProfileState, XR_TYPE_INTERACTION_PROFILE_STATE) \ - _avail(XrActionStateGetInfo, XR_TYPE_ACTION_STATE_GET_INFO) \ - _avail(XrActionStateBoolean, XR_TYPE_ACTION_STATE_BOOLEAN) \ - _avail(XrActionStateFloat, XR_TYPE_ACTION_STATE_FLOAT) \ - _avail(XrActionStateVector2f, XR_TYPE_ACTION_STATE_VECTOR2F) \ - _avail(XrActionStatePose, XR_TYPE_ACTION_STATE_POSE) \ - _avail(XrActionsSyncInfo, XR_TYPE_ACTIONS_SYNC_INFO) \ - _avail(XrBoundSourcesForActionEnumerateInfo, XR_TYPE_BOUND_SOURCES_FOR_ACTION_ENUMERATE_INFO) \ - _avail(XrInputSourceLocalizedNameGetInfo, XR_TYPE_INPUT_SOURCE_LOCALIZED_NAME_GET_INFO) \ - _avail(XrHapticActionInfo, XR_TYPE_HAPTIC_ACTION_INFO) \ - _avail(XrCompositionLayerProjectionView, XR_TYPE_COMPOSITION_LAYER_PROJECTION_VIEW) \ - _avail(XrCompositionLayerProjection, XR_TYPE_COMPOSITION_LAYER_PROJECTION) \ - _avail(XrCompositionLayerQuad, XR_TYPE_COMPOSITION_LAYER_QUAD) \ - _avail(XrEventDataEventsLost, XR_TYPE_EVENT_DATA_EVENTS_LOST) \ - _avail(XrEventDataInstanceLossPending, XR_TYPE_EVENT_DATA_INSTANCE_LOSS_PENDING) \ - _avail(XrEventDataSessionStateChanged, XR_TYPE_EVENT_DATA_SESSION_STATE_CHANGED) \ - _avail(XrEventDataReferenceSpaceChangePending, XR_TYPE_EVENT_DATA_REFERENCE_SPACE_CHANGE_PENDING) \ - _avail(XrEventDataInteractionProfileChanged, XR_TYPE_EVENT_DATA_INTERACTION_PROFILE_CHANGED) \ - _avail(XrHapticVibration, XR_TYPE_HAPTIC_VIBRATION) \ - _avail(XrSpacesLocateInfo, XR_TYPE_SPACES_LOCATE_INFO) \ - _avail(XrSpaceLocations, XR_TYPE_SPACE_LOCATIONS) \ - _avail(XrSpaceVelocities, XR_TYPE_SPACE_VELOCITIES) \ - _avail(XrCompositionLayerCubeKHR, XR_TYPE_COMPOSITION_LAYER_CUBE_KHR) \ - _avail(XrCompositionLayerDepthInfoKHR, XR_TYPE_COMPOSITION_LAYER_DEPTH_INFO_KHR) \ - _avail(XrCompositionLayerCylinderKHR, XR_TYPE_COMPOSITION_LAYER_CYLINDER_KHR) \ - _avail(XrCompositionLayerEquirectKHR, XR_TYPE_COMPOSITION_LAYER_EQUIRECT_KHR) \ - _avail(XrVisibilityMaskKHR, XR_TYPE_VISIBILITY_MASK_KHR) \ - _avail(XrEventDataVisibilityMaskChangedKHR, XR_TYPE_EVENT_DATA_VISIBILITY_MASK_CHANGED_KHR) \ - _avail(XrCompositionLayerColorScaleBiasKHR, XR_TYPE_COMPOSITION_LAYER_COLOR_SCALE_BIAS_KHR) \ - _avail(XrCompositionLayerEquirect2KHR, XR_TYPE_COMPOSITION_LAYER_EQUIRECT2_KHR) \ - _avail(XrBindingModificationsKHR, XR_TYPE_BINDING_MODIFICATIONS_KHR) \ - _avail(XrEventDataPerfSettingsEXT, XR_TYPE_EVENT_DATA_PERF_SETTINGS_EXT) \ - _avail(XrDebugUtilsObjectNameInfoEXT, XR_TYPE_DEBUG_UTILS_OBJECT_NAME_INFO_EXT) \ - _avail(XrDebugUtilsLabelEXT, XR_TYPE_DEBUG_UTILS_LABEL_EXT) \ - _avail(XrDebugUtilsMessengerCallbackDataEXT, XR_TYPE_DEBUG_UTILS_MESSENGER_CALLBACK_DATA_EXT) \ - _avail(XrDebugUtilsMessengerCreateInfoEXT, XR_TYPE_DEBUG_UTILS_MESSENGER_CREATE_INFO_EXT) \ - _avail(XrSystemEyeGazeInteractionPropertiesEXT, XR_TYPE_SYSTEM_EYE_GAZE_INTERACTION_PROPERTIES_EXT) \ - _avail(XrEyeGazeSampleTimeEXT, XR_TYPE_EYE_GAZE_SAMPLE_TIME_EXT) \ - _avail(XrSessionCreateInfoOverlayEXTX, XR_TYPE_SESSION_CREATE_INFO_OVERLAY_EXTX) \ - _avail(XrEventDataMainSessionVisibilityChangedEXTX, XR_TYPE_EVENT_DATA_MAIN_SESSION_VISIBILITY_CHANGED_EXTX) \ - _avail(XrSpatialAnchorCreateInfoMSFT, XR_TYPE_SPATIAL_ANCHOR_CREATE_INFO_MSFT) \ - _avail(XrSpatialAnchorSpaceCreateInfoMSFT, XR_TYPE_SPATIAL_ANCHOR_SPACE_CREATE_INFO_MSFT) \ - _avail(XrCompositionLayerImageLayoutFB, XR_TYPE_COMPOSITION_LAYER_IMAGE_LAYOUT_FB) \ - _avail(XrCompositionLayerAlphaBlendFB, XR_TYPE_COMPOSITION_LAYER_ALPHA_BLEND_FB) \ - _avail(XrViewConfigurationDepthRangeEXT, XR_TYPE_VIEW_CONFIGURATION_DEPTH_RANGE_EXT) \ - _avail(XrSpatialGraphNodeSpaceCreateInfoMSFT, XR_TYPE_SPATIAL_GRAPH_NODE_SPACE_CREATE_INFO_MSFT) \ - _avail(XrSpatialGraphStaticNodeBindingCreateInfoMSFT, XR_TYPE_SPATIAL_GRAPH_STATIC_NODE_BINDING_CREATE_INFO_MSFT) \ - _avail(XrSpatialGraphNodeBindingPropertiesGetInfoMSFT, XR_TYPE_SPATIAL_GRAPH_NODE_BINDING_PROPERTIES_GET_INFO_MSFT) \ - _avail(XrSpatialGraphNodeBindingPropertiesMSFT, XR_TYPE_SPATIAL_GRAPH_NODE_BINDING_PROPERTIES_MSFT) \ - _avail(XrSystemHandTrackingPropertiesEXT, XR_TYPE_SYSTEM_HAND_TRACKING_PROPERTIES_EXT) \ - _avail(XrHandTrackerCreateInfoEXT, XR_TYPE_HAND_TRACKER_CREATE_INFO_EXT) \ - _avail(XrHandJointsLocateInfoEXT, XR_TYPE_HAND_JOINTS_LOCATE_INFO_EXT) \ - _avail(XrHandJointLocationsEXT, XR_TYPE_HAND_JOINT_LOCATIONS_EXT) \ - _avail(XrHandJointVelocitiesEXT, XR_TYPE_HAND_JOINT_VELOCITIES_EXT) \ - _avail(XrSystemHandTrackingMeshPropertiesMSFT, XR_TYPE_SYSTEM_HAND_TRACKING_MESH_PROPERTIES_MSFT) \ - _avail(XrHandMeshSpaceCreateInfoMSFT, XR_TYPE_HAND_MESH_SPACE_CREATE_INFO_MSFT) \ - _avail(XrHandMeshUpdateInfoMSFT, XR_TYPE_HAND_MESH_UPDATE_INFO_MSFT) \ - _avail(XrHandMeshMSFT, XR_TYPE_HAND_MESH_MSFT) \ - _avail(XrHandPoseTypeInfoMSFT, XR_TYPE_HAND_POSE_TYPE_INFO_MSFT) \ - _avail(XrSecondaryViewConfigurationSessionBeginInfoMSFT, XR_TYPE_SECONDARY_VIEW_CONFIGURATION_SESSION_BEGIN_INFO_MSFT) \ - _avail(XrSecondaryViewConfigurationStateMSFT, XR_TYPE_SECONDARY_VIEW_CONFIGURATION_STATE_MSFT) \ - _avail(XrSecondaryViewConfigurationFrameStateMSFT, XR_TYPE_SECONDARY_VIEW_CONFIGURATION_FRAME_STATE_MSFT) \ - _avail(XrSecondaryViewConfigurationLayerInfoMSFT, XR_TYPE_SECONDARY_VIEW_CONFIGURATION_LAYER_INFO_MSFT) \ - _avail(XrSecondaryViewConfigurationFrameEndInfoMSFT, XR_TYPE_SECONDARY_VIEW_CONFIGURATION_FRAME_END_INFO_MSFT) \ - _avail(XrSecondaryViewConfigurationSwapchainCreateInfoMSFT, XR_TYPE_SECONDARY_VIEW_CONFIGURATION_SWAPCHAIN_CREATE_INFO_MSFT) \ - _avail(XrControllerModelKeyStateMSFT, XR_TYPE_CONTROLLER_MODEL_KEY_STATE_MSFT) \ - _avail(XrControllerModelNodePropertiesMSFT, XR_TYPE_CONTROLLER_MODEL_NODE_PROPERTIES_MSFT) \ - _avail(XrControllerModelPropertiesMSFT, XR_TYPE_CONTROLLER_MODEL_PROPERTIES_MSFT) \ - _avail(XrControllerModelNodeStateMSFT, XR_TYPE_CONTROLLER_MODEL_NODE_STATE_MSFT) \ - _avail(XrControllerModelStateMSFT, XR_TYPE_CONTROLLER_MODEL_STATE_MSFT) \ - _avail(XrViewConfigurationViewFovEPIC, XR_TYPE_VIEW_CONFIGURATION_VIEW_FOV_EPIC) \ - _avail(XrCompositionLayerReprojectionInfoMSFT, XR_TYPE_COMPOSITION_LAYER_REPROJECTION_INFO_MSFT) \ - _avail(XrCompositionLayerReprojectionPlaneOverrideMSFT, XR_TYPE_COMPOSITION_LAYER_REPROJECTION_PLANE_OVERRIDE_MSFT) \ - _avail(XrCompositionLayerSecureContentFB, XR_TYPE_COMPOSITION_LAYER_SECURE_CONTENT_FB) \ - _avail(XrSystemBodyTrackingPropertiesFB, XR_TYPE_SYSTEM_BODY_TRACKING_PROPERTIES_FB) \ - _avail(XrBodyTrackerCreateInfoFB, XR_TYPE_BODY_TRACKER_CREATE_INFO_FB) \ - _avail(XrBodySkeletonFB, XR_TYPE_BODY_SKELETON_FB) \ - _avail(XrBodyJointsLocateInfoFB, XR_TYPE_BODY_JOINTS_LOCATE_INFO_FB) \ - _avail(XrBodyJointLocationsFB, XR_TYPE_BODY_JOINT_LOCATIONS_FB) \ - _avail(XrInteractionProfileDpadBindingEXT, XR_TYPE_INTERACTION_PROFILE_DPAD_BINDING_EXT) \ - _avail(XrInteractionProfileAnalogThresholdVALVE, XR_TYPE_INTERACTION_PROFILE_ANALOG_THRESHOLD_VALVE) \ - _avail(XrHandJointsMotionRangeInfoEXT, XR_TYPE_HAND_JOINTS_MOTION_RANGE_INFO_EXT) \ - _avail(XrSceneObserverCreateInfoMSFT, XR_TYPE_SCENE_OBSERVER_CREATE_INFO_MSFT) \ - _avail(XrSceneCreateInfoMSFT, XR_TYPE_SCENE_CREATE_INFO_MSFT) \ - _avail(XrNewSceneComputeInfoMSFT, XR_TYPE_NEW_SCENE_COMPUTE_INFO_MSFT) \ - _avail(XrVisualMeshComputeLodInfoMSFT, XR_TYPE_VISUAL_MESH_COMPUTE_LOD_INFO_MSFT) \ - _avail(XrSceneComponentsMSFT, XR_TYPE_SCENE_COMPONENTS_MSFT) \ - _avail(XrSceneComponentsGetInfoMSFT, XR_TYPE_SCENE_COMPONENTS_GET_INFO_MSFT) \ - _avail(XrSceneComponentLocationsMSFT, XR_TYPE_SCENE_COMPONENT_LOCATIONS_MSFT) \ - _avail(XrSceneComponentsLocateInfoMSFT, XR_TYPE_SCENE_COMPONENTS_LOCATE_INFO_MSFT) \ - _avail(XrSceneObjectsMSFT, XR_TYPE_SCENE_OBJECTS_MSFT) \ - _avail(XrSceneComponentParentFilterInfoMSFT, XR_TYPE_SCENE_COMPONENT_PARENT_FILTER_INFO_MSFT) \ - _avail(XrSceneObjectTypesFilterInfoMSFT, XR_TYPE_SCENE_OBJECT_TYPES_FILTER_INFO_MSFT) \ - _avail(XrScenePlanesMSFT, XR_TYPE_SCENE_PLANES_MSFT) \ - _avail(XrScenePlaneAlignmentFilterInfoMSFT, XR_TYPE_SCENE_PLANE_ALIGNMENT_FILTER_INFO_MSFT) \ - _avail(XrSceneMeshesMSFT, XR_TYPE_SCENE_MESHES_MSFT) \ - _avail(XrSceneMeshBuffersGetInfoMSFT, XR_TYPE_SCENE_MESH_BUFFERS_GET_INFO_MSFT) \ - _avail(XrSceneMeshBuffersMSFT, XR_TYPE_SCENE_MESH_BUFFERS_MSFT) \ - _avail(XrSceneMeshVertexBufferMSFT, XR_TYPE_SCENE_MESH_VERTEX_BUFFER_MSFT) \ - _avail(XrSceneMeshIndicesUint32MSFT, XR_TYPE_SCENE_MESH_INDICES_UINT32_MSFT) \ - _avail(XrSceneMeshIndicesUint16MSFT, XR_TYPE_SCENE_MESH_INDICES_UINT16_MSFT) \ - _avail(XrSerializedSceneFragmentDataGetInfoMSFT, XR_TYPE_SERIALIZED_SCENE_FRAGMENT_DATA_GET_INFO_MSFT) \ - _avail(XrSceneDeserializeInfoMSFT, XR_TYPE_SCENE_DESERIALIZE_INFO_MSFT) \ - _avail(XrEventDataDisplayRefreshRateChangedFB, XR_TYPE_EVENT_DATA_DISPLAY_REFRESH_RATE_CHANGED_FB) \ - _avail(XrViveTrackerPathsHTCX, XR_TYPE_VIVE_TRACKER_PATHS_HTCX) \ - _avail(XrEventDataViveTrackerConnectedHTCX, XR_TYPE_EVENT_DATA_VIVE_TRACKER_CONNECTED_HTCX) \ - _avail(XrSystemFacialTrackingPropertiesHTC, XR_TYPE_SYSTEM_FACIAL_TRACKING_PROPERTIES_HTC) \ - _avail(XrFacialExpressionsHTC, XR_TYPE_FACIAL_EXPRESSIONS_HTC) \ - _avail(XrFacialTrackerCreateInfoHTC, XR_TYPE_FACIAL_TRACKER_CREATE_INFO_HTC) \ - _avail(XrSystemColorSpacePropertiesFB, XR_TYPE_SYSTEM_COLOR_SPACE_PROPERTIES_FB) \ - _avail(XrHandTrackingMeshFB, XR_TYPE_HAND_TRACKING_MESH_FB) \ - _avail(XrHandTrackingScaleFB, XR_TYPE_HAND_TRACKING_SCALE_FB) \ - _avail(XrHandTrackingAimStateFB, XR_TYPE_HAND_TRACKING_AIM_STATE_FB) \ - _avail(XrHandTrackingCapsulesStateFB, XR_TYPE_HAND_TRACKING_CAPSULES_STATE_FB) \ - _avail(XrSystemSpatialEntityPropertiesFB, XR_TYPE_SYSTEM_SPATIAL_ENTITY_PROPERTIES_FB) \ - _avail(XrSpatialAnchorCreateInfoFB, XR_TYPE_SPATIAL_ANCHOR_CREATE_INFO_FB) \ - _avail(XrSpaceComponentStatusSetInfoFB, XR_TYPE_SPACE_COMPONENT_STATUS_SET_INFO_FB) \ - _avail(XrSpaceComponentStatusFB, XR_TYPE_SPACE_COMPONENT_STATUS_FB) \ - _avail(XrEventDataSpatialAnchorCreateCompleteFB, XR_TYPE_EVENT_DATA_SPATIAL_ANCHOR_CREATE_COMPLETE_FB) \ - _avail(XrEventDataSpaceSetStatusCompleteFB, XR_TYPE_EVENT_DATA_SPACE_SET_STATUS_COMPLETE_FB) \ - _avail(XrFoveationProfileCreateInfoFB, XR_TYPE_FOVEATION_PROFILE_CREATE_INFO_FB) \ - _avail(XrSwapchainCreateInfoFoveationFB, XR_TYPE_SWAPCHAIN_CREATE_INFO_FOVEATION_FB) \ - _avail(XrSwapchainStateFoveationFB, XR_TYPE_SWAPCHAIN_STATE_FOVEATION_FB) \ - _avail(XrFoveationLevelProfileCreateInfoFB, XR_TYPE_FOVEATION_LEVEL_PROFILE_CREATE_INFO_FB) \ - _avail(XrSystemKeyboardTrackingPropertiesFB, XR_TYPE_SYSTEM_KEYBOARD_TRACKING_PROPERTIES_FB) \ - _avail(XrKeyboardSpaceCreateInfoFB, XR_TYPE_KEYBOARD_SPACE_CREATE_INFO_FB) \ - _avail(XrKeyboardTrackingQueryFB, XR_TYPE_KEYBOARD_TRACKING_QUERY_FB) \ - _avail(XrTriangleMeshCreateInfoFB, XR_TYPE_TRIANGLE_MESH_CREATE_INFO_FB) \ - _avail(XrSystemPassthroughPropertiesFB, XR_TYPE_SYSTEM_PASSTHROUGH_PROPERTIES_FB) \ - _avail(XrSystemPassthroughProperties2FB, XR_TYPE_SYSTEM_PASSTHROUGH_PROPERTIES2_FB) \ - _avail(XrPassthroughCreateInfoFB, XR_TYPE_PASSTHROUGH_CREATE_INFO_FB) \ - _avail(XrPassthroughLayerCreateInfoFB, XR_TYPE_PASSTHROUGH_LAYER_CREATE_INFO_FB) \ - _avail(XrCompositionLayerPassthroughFB, XR_TYPE_COMPOSITION_LAYER_PASSTHROUGH_FB) \ - _avail(XrGeometryInstanceCreateInfoFB, XR_TYPE_GEOMETRY_INSTANCE_CREATE_INFO_FB) \ - _avail(XrGeometryInstanceTransformFB, XR_TYPE_GEOMETRY_INSTANCE_TRANSFORM_FB) \ - _avail(XrPassthroughStyleFB, XR_TYPE_PASSTHROUGH_STYLE_FB) \ - _avail(XrPassthroughColorMapMonoToRgbaFB, XR_TYPE_PASSTHROUGH_COLOR_MAP_MONO_TO_RGBA_FB) \ - _avail(XrPassthroughColorMapMonoToMonoFB, XR_TYPE_PASSTHROUGH_COLOR_MAP_MONO_TO_MONO_FB) \ - _avail(XrPassthroughBrightnessContrastSaturationFB, XR_TYPE_PASSTHROUGH_BRIGHTNESS_CONTRAST_SATURATION_FB) \ - _avail(XrEventDataPassthroughStateChangedFB, XR_TYPE_EVENT_DATA_PASSTHROUGH_STATE_CHANGED_FB) \ - _avail(XrRenderModelPathInfoFB, XR_TYPE_RENDER_MODEL_PATH_INFO_FB) \ - _avail(XrRenderModelPropertiesFB, XR_TYPE_RENDER_MODEL_PROPERTIES_FB) \ - _avail(XrRenderModelBufferFB, XR_TYPE_RENDER_MODEL_BUFFER_FB) \ - _avail(XrRenderModelLoadInfoFB, XR_TYPE_RENDER_MODEL_LOAD_INFO_FB) \ - _avail(XrSystemRenderModelPropertiesFB, XR_TYPE_SYSTEM_RENDER_MODEL_PROPERTIES_FB) \ - _avail(XrRenderModelCapabilitiesRequestFB, XR_TYPE_RENDER_MODEL_CAPABILITIES_REQUEST_FB) \ - _avail(XrViewLocateFoveatedRenderingVARJO, XR_TYPE_VIEW_LOCATE_FOVEATED_RENDERING_VARJO) \ - _avail(XrFoveatedViewConfigurationViewVARJO, XR_TYPE_FOVEATED_VIEW_CONFIGURATION_VIEW_VARJO) \ - _avail(XrSystemFoveatedRenderingPropertiesVARJO, XR_TYPE_SYSTEM_FOVEATED_RENDERING_PROPERTIES_VARJO) \ - _avail(XrCompositionLayerDepthTestVARJO, XR_TYPE_COMPOSITION_LAYER_DEPTH_TEST_VARJO) \ - _avail(XrSystemMarkerTrackingPropertiesVARJO, XR_TYPE_SYSTEM_MARKER_TRACKING_PROPERTIES_VARJO) \ - _avail(XrEventDataMarkerTrackingUpdateVARJO, XR_TYPE_EVENT_DATA_MARKER_TRACKING_UPDATE_VARJO) \ - _avail(XrMarkerSpaceCreateInfoVARJO, XR_TYPE_MARKER_SPACE_CREATE_INFO_VARJO) \ - _avail(XrFrameEndInfoML, XR_TYPE_FRAME_END_INFO_ML) \ - _avail(XrGlobalDimmerFrameEndInfoML, XR_TYPE_GLOBAL_DIMMER_FRAME_END_INFO_ML) \ - _avail(XrSystemMarkerUnderstandingPropertiesML, XR_TYPE_SYSTEM_MARKER_UNDERSTANDING_PROPERTIES_ML) \ - _avail(XrMarkerDetectorCreateInfoML, XR_TYPE_MARKER_DETECTOR_CREATE_INFO_ML) \ - _avail(XrMarkerDetectorArucoInfoML, XR_TYPE_MARKER_DETECTOR_ARUCO_INFO_ML) \ - _avail(XrMarkerDetectorSizeInfoML, XR_TYPE_MARKER_DETECTOR_SIZE_INFO_ML) \ - _avail(XrMarkerDetectorAprilTagInfoML, XR_TYPE_MARKER_DETECTOR_APRIL_TAG_INFO_ML) \ - _avail(XrMarkerDetectorCustomProfileInfoML, XR_TYPE_MARKER_DETECTOR_CUSTOM_PROFILE_INFO_ML) \ - _avail(XrMarkerDetectorSnapshotInfoML, XR_TYPE_MARKER_DETECTOR_SNAPSHOT_INFO_ML) \ - _avail(XrMarkerDetectorStateML, XR_TYPE_MARKER_DETECTOR_STATE_ML) \ - _avail(XrMarkerSpaceCreateInfoML, XR_TYPE_MARKER_SPACE_CREATE_INFO_ML) \ - _avail(XrLocalizationMapML, XR_TYPE_LOCALIZATION_MAP_ML) \ - _avail(XrEventDataLocalizationChangedML, XR_TYPE_EVENT_DATA_LOCALIZATION_CHANGED_ML) \ - _avail(XrMapLocalizationRequestInfoML, XR_TYPE_MAP_LOCALIZATION_REQUEST_INFO_ML) \ - _avail(XrLocalizationMapImportInfoML, XR_TYPE_LOCALIZATION_MAP_IMPORT_INFO_ML) \ - _avail(XrLocalizationEnableEventsInfoML, XR_TYPE_LOCALIZATION_ENABLE_EVENTS_INFO_ML) \ - _avail(XrSpatialAnchorPersistenceInfoMSFT, XR_TYPE_SPATIAL_ANCHOR_PERSISTENCE_INFO_MSFT) \ - _avail(XrSpatialAnchorFromPersistedAnchorCreateInfoMSFT, XR_TYPE_SPATIAL_ANCHOR_FROM_PERSISTED_ANCHOR_CREATE_INFO_MSFT) \ - _avail(XrSceneMarkersMSFT, XR_TYPE_SCENE_MARKERS_MSFT) \ - _avail(XrSceneMarkerTypeFilterMSFT, XR_TYPE_SCENE_MARKER_TYPE_FILTER_MSFT) \ - _avail(XrSceneMarkerQRCodesMSFT, XR_TYPE_SCENE_MARKER_QR_CODES_MSFT) \ - _avail(XrSpaceQueryInfoFB, XR_TYPE_SPACE_QUERY_INFO_FB) \ - _avail(XrSpaceStorageLocationFilterInfoFB, XR_TYPE_SPACE_STORAGE_LOCATION_FILTER_INFO_FB) \ - _avail(XrSpaceUuidFilterInfoFB, XR_TYPE_SPACE_UUID_FILTER_INFO_FB) \ - _avail(XrSpaceComponentFilterInfoFB, XR_TYPE_SPACE_COMPONENT_FILTER_INFO_FB) \ - _avail(XrSpaceQueryResultsFB, XR_TYPE_SPACE_QUERY_RESULTS_FB) \ - _avail(XrEventDataSpaceQueryResultsAvailableFB, XR_TYPE_EVENT_DATA_SPACE_QUERY_RESULTS_AVAILABLE_FB) \ - _avail(XrEventDataSpaceQueryCompleteFB, XR_TYPE_EVENT_DATA_SPACE_QUERY_COMPLETE_FB) \ - _avail(XrSpaceSaveInfoFB, XR_TYPE_SPACE_SAVE_INFO_FB) \ - _avail(XrSpaceEraseInfoFB, XR_TYPE_SPACE_ERASE_INFO_FB) \ - _avail(XrEventDataSpaceSaveCompleteFB, XR_TYPE_EVENT_DATA_SPACE_SAVE_COMPLETE_FB) \ - _avail(XrEventDataSpaceEraseCompleteFB, XR_TYPE_EVENT_DATA_SPACE_ERASE_COMPLETE_FB) \ - _avail(XrSpaceShareInfoFB, XR_TYPE_SPACE_SHARE_INFO_FB) \ - _avail(XrEventDataSpaceShareCompleteFB, XR_TYPE_EVENT_DATA_SPACE_SHARE_COMPLETE_FB) \ - _avail(XrCompositionLayerSpaceWarpInfoFB, XR_TYPE_COMPOSITION_LAYER_SPACE_WARP_INFO_FB) \ - _avail(XrSystemSpaceWarpPropertiesFB, XR_TYPE_SYSTEM_SPACE_WARP_PROPERTIES_FB) \ - _avail(XrHapticAmplitudeEnvelopeVibrationFB, XR_TYPE_HAPTIC_AMPLITUDE_ENVELOPE_VIBRATION_FB) \ - _avail(XrSemanticLabelsFB, XR_TYPE_SEMANTIC_LABELS_FB) \ - _avail(XrRoomLayoutFB, XR_TYPE_ROOM_LAYOUT_FB) \ - _avail(XrBoundary2DFB, XR_TYPE_BOUNDARY_2D_FB) \ - _avail(XrSemanticLabelsSupportInfoFB, XR_TYPE_SEMANTIC_LABELS_SUPPORT_INFO_FB) \ - _avail(XrDigitalLensControlALMALENCE, XR_TYPE_DIGITAL_LENS_CONTROL_ALMALENCE) \ - _avail(XrEventDataSceneCaptureCompleteFB, XR_TYPE_EVENT_DATA_SCENE_CAPTURE_COMPLETE_FB) \ - _avail(XrSceneCaptureRequestInfoFB, XR_TYPE_SCENE_CAPTURE_REQUEST_INFO_FB) \ - _avail(XrSpaceContainerFB, XR_TYPE_SPACE_CONTAINER_FB) \ - _avail(XrFoveationEyeTrackedProfileCreateInfoMETA, XR_TYPE_FOVEATION_EYE_TRACKED_PROFILE_CREATE_INFO_META) \ - _avail(XrFoveationEyeTrackedStateMETA, XR_TYPE_FOVEATION_EYE_TRACKED_STATE_META) \ - _avail(XrSystemFoveationEyeTrackedPropertiesMETA, XR_TYPE_SYSTEM_FOVEATION_EYE_TRACKED_PROPERTIES_META) \ - _avail(XrSystemFaceTrackingPropertiesFB, XR_TYPE_SYSTEM_FACE_TRACKING_PROPERTIES_FB) \ - _avail(XrFaceTrackerCreateInfoFB, XR_TYPE_FACE_TRACKER_CREATE_INFO_FB) \ - _avail(XrFaceExpressionInfoFB, XR_TYPE_FACE_EXPRESSION_INFO_FB) \ - _avail(XrFaceExpressionWeightsFB, XR_TYPE_FACE_EXPRESSION_WEIGHTS_FB) \ - _avail(XrEyeTrackerCreateInfoFB, XR_TYPE_EYE_TRACKER_CREATE_INFO_FB) \ - _avail(XrEyeGazesInfoFB, XR_TYPE_EYE_GAZES_INFO_FB) \ - _avail(XrSystemEyeTrackingPropertiesFB, XR_TYPE_SYSTEM_EYE_TRACKING_PROPERTIES_FB) \ - _avail(XrEyeGazesFB, XR_TYPE_EYE_GAZES_FB) \ - _avail(XrPassthroughKeyboardHandsIntensityFB, XR_TYPE_PASSTHROUGH_KEYBOARD_HANDS_INTENSITY_FB) \ - _avail(XrCompositionLayerSettingsFB, XR_TYPE_COMPOSITION_LAYER_SETTINGS_FB) \ - _avail(XrHapticPcmVibrationFB, XR_TYPE_HAPTIC_PCM_VIBRATION_FB) \ - _avail(XrDevicePcmSampleRateStateFB, XR_TYPE_DEVICE_PCM_SAMPLE_RATE_STATE_FB) \ - _avail(XrCompositionLayerDepthTestFB, XR_TYPE_COMPOSITION_LAYER_DEPTH_TEST_FB) \ - _avail(XrLocalDimmingFrameEndInfoMETA, XR_TYPE_LOCAL_DIMMING_FRAME_END_INFO_META) \ - _avail(XrPassthroughPreferencesMETA, XR_TYPE_PASSTHROUGH_PREFERENCES_META) \ - _avail(XrSystemVirtualKeyboardPropertiesMETA, XR_TYPE_SYSTEM_VIRTUAL_KEYBOARD_PROPERTIES_META) \ - _avail(XrVirtualKeyboardCreateInfoMETA, XR_TYPE_VIRTUAL_KEYBOARD_CREATE_INFO_META) \ - _avail(XrVirtualKeyboardSpaceCreateInfoMETA, XR_TYPE_VIRTUAL_KEYBOARD_SPACE_CREATE_INFO_META) \ - _avail(XrVirtualKeyboardLocationInfoMETA, XR_TYPE_VIRTUAL_KEYBOARD_LOCATION_INFO_META) \ - _avail(XrVirtualKeyboardModelVisibilitySetInfoMETA, XR_TYPE_VIRTUAL_KEYBOARD_MODEL_VISIBILITY_SET_INFO_META) \ - _avail(XrVirtualKeyboardAnimationStateMETA, XR_TYPE_VIRTUAL_KEYBOARD_ANIMATION_STATE_META) \ - _avail(XrVirtualKeyboardModelAnimationStatesMETA, XR_TYPE_VIRTUAL_KEYBOARD_MODEL_ANIMATION_STATES_META) \ - _avail(XrVirtualKeyboardTextureDataMETA, XR_TYPE_VIRTUAL_KEYBOARD_TEXTURE_DATA_META) \ - _avail(XrVirtualKeyboardInputInfoMETA, XR_TYPE_VIRTUAL_KEYBOARD_INPUT_INFO_META) \ - _avail(XrVirtualKeyboardTextContextChangeInfoMETA, XR_TYPE_VIRTUAL_KEYBOARD_TEXT_CONTEXT_CHANGE_INFO_META) \ - _avail(XrEventDataVirtualKeyboardCommitTextMETA, XR_TYPE_EVENT_DATA_VIRTUAL_KEYBOARD_COMMIT_TEXT_META) \ - _avail(XrEventDataVirtualKeyboardBackspaceMETA, XR_TYPE_EVENT_DATA_VIRTUAL_KEYBOARD_BACKSPACE_META) \ - _avail(XrEventDataVirtualKeyboardEnterMETA, XR_TYPE_EVENT_DATA_VIRTUAL_KEYBOARD_ENTER_META) \ - _avail(XrEventDataVirtualKeyboardShownMETA, XR_TYPE_EVENT_DATA_VIRTUAL_KEYBOARD_SHOWN_META) \ - _avail(XrEventDataVirtualKeyboardHiddenMETA, XR_TYPE_EVENT_DATA_VIRTUAL_KEYBOARD_HIDDEN_META) \ - _avail(XrExternalCameraOCULUS, XR_TYPE_EXTERNAL_CAMERA_OCULUS) \ - _avail(XrPerformanceMetricsStateMETA, XR_TYPE_PERFORMANCE_METRICS_STATE_META) \ - _avail(XrPerformanceMetricsCounterMETA, XR_TYPE_PERFORMANCE_METRICS_COUNTER_META) \ - _avail(XrSpaceListSaveInfoFB, XR_TYPE_SPACE_LIST_SAVE_INFO_FB) \ - _avail(XrEventDataSpaceListSaveCompleteFB, XR_TYPE_EVENT_DATA_SPACE_LIST_SAVE_COMPLETE_FB) \ - _avail(XrSpaceUserCreateInfoFB, XR_TYPE_SPACE_USER_CREATE_INFO_FB) \ - _avail(XrSystemHeadsetIdPropertiesMETA, XR_TYPE_SYSTEM_HEADSET_ID_PROPERTIES_META) \ - _avail(XrRecommendedLayerResolutionMETA, XR_TYPE_RECOMMENDED_LAYER_RESOLUTION_META) \ - _avail(XrRecommendedLayerResolutionGetInfoMETA, XR_TYPE_RECOMMENDED_LAYER_RESOLUTION_GET_INFO_META) \ - _avail(XrPassthroughColorLutCreateInfoMETA, XR_TYPE_PASSTHROUGH_COLOR_LUT_CREATE_INFO_META) \ - _avail(XrPassthroughColorLutUpdateInfoMETA, XR_TYPE_PASSTHROUGH_COLOR_LUT_UPDATE_INFO_META) \ - _avail(XrPassthroughColorMapLutMETA, XR_TYPE_PASSTHROUGH_COLOR_MAP_LUT_META) \ - _avail(XrPassthroughColorMapInterpolatedLutMETA, XR_TYPE_PASSTHROUGH_COLOR_MAP_INTERPOLATED_LUT_META) \ - _avail(XrSystemPassthroughColorLutPropertiesMETA, XR_TYPE_SYSTEM_PASSTHROUGH_COLOR_LUT_PROPERTIES_META) \ - _avail(XrSpaceTriangleMeshGetInfoMETA, XR_TYPE_SPACE_TRIANGLE_MESH_GET_INFO_META) \ - _avail(XrSpaceTriangleMeshMETA, XR_TYPE_SPACE_TRIANGLE_MESH_META) \ - _avail(XrSystemFaceTrackingProperties2FB, XR_TYPE_SYSTEM_FACE_TRACKING_PROPERTIES2_FB) \ - _avail(XrFaceTrackerCreateInfo2FB, XR_TYPE_FACE_TRACKER_CREATE_INFO2_FB) \ - _avail(XrFaceExpressionInfo2FB, XR_TYPE_FACE_EXPRESSION_INFO2_FB) \ - _avail(XrFaceExpressionWeights2FB, XR_TYPE_FACE_EXPRESSION_WEIGHTS2_FB) \ - _avail(XrEnvironmentDepthProviderCreateInfoMETA, XR_TYPE_ENVIRONMENT_DEPTH_PROVIDER_CREATE_INFO_META) \ - _avail(XrEnvironmentDepthSwapchainCreateInfoMETA, XR_TYPE_ENVIRONMENT_DEPTH_SWAPCHAIN_CREATE_INFO_META) \ - _avail(XrEnvironmentDepthSwapchainStateMETA, XR_TYPE_ENVIRONMENT_DEPTH_SWAPCHAIN_STATE_META) \ - _avail(XrEnvironmentDepthImageAcquireInfoMETA, XR_TYPE_ENVIRONMENT_DEPTH_IMAGE_ACQUIRE_INFO_META) \ - _avail(XrEnvironmentDepthImageViewMETA, XR_TYPE_ENVIRONMENT_DEPTH_IMAGE_VIEW_META) \ - _avail(XrEnvironmentDepthImageMETA, XR_TYPE_ENVIRONMENT_DEPTH_IMAGE_META) \ - _avail(XrEnvironmentDepthHandRemovalSetInfoMETA, XR_TYPE_ENVIRONMENT_DEPTH_HAND_REMOVAL_SET_INFO_META) \ - _avail(XrSystemEnvironmentDepthPropertiesMETA, XR_TYPE_SYSTEM_ENVIRONMENT_DEPTH_PROPERTIES_META) \ - _avail(XrPassthroughCreateInfoHTC, XR_TYPE_PASSTHROUGH_CREATE_INFO_HTC) \ - _avail(XrPassthroughColorHTC, XR_TYPE_PASSTHROUGH_COLOR_HTC) \ - _avail(XrPassthroughMeshTransformInfoHTC, XR_TYPE_PASSTHROUGH_MESH_TRANSFORM_INFO_HTC) \ - _avail(XrCompositionLayerPassthroughHTC, XR_TYPE_COMPOSITION_LAYER_PASSTHROUGH_HTC) \ - _avail(XrFoveationApplyInfoHTC, XR_TYPE_FOVEATION_APPLY_INFO_HTC) \ - _avail(XrFoveationDynamicModeInfoHTC, XR_TYPE_FOVEATION_DYNAMIC_MODE_INFO_HTC) \ - _avail(XrFoveationCustomModeInfoHTC, XR_TYPE_FOVEATION_CUSTOM_MODE_INFO_HTC) \ - _avail(XrSystemAnchorPropertiesHTC, XR_TYPE_SYSTEM_ANCHOR_PROPERTIES_HTC) \ - _avail(XrSpatialAnchorCreateInfoHTC, XR_TYPE_SPATIAL_ANCHOR_CREATE_INFO_HTC) \ - _avail(XrActiveActionSetPrioritiesEXT, XR_TYPE_ACTIVE_ACTION_SET_PRIORITIES_EXT) \ - _avail(XrSystemForceFeedbackCurlPropertiesMNDX, XR_TYPE_SYSTEM_FORCE_FEEDBACK_CURL_PROPERTIES_MNDX) \ - _avail(XrForceFeedbackCurlApplyLocationsMNDX, XR_TYPE_FORCE_FEEDBACK_CURL_APPLY_LOCATIONS_MNDX) \ - _avail(XrHandTrackingDataSourceInfoEXT, XR_TYPE_HAND_TRACKING_DATA_SOURCE_INFO_EXT) \ - _avail(XrHandTrackingDataSourceStateEXT, XR_TYPE_HAND_TRACKING_DATA_SOURCE_STATE_EXT) \ - _avail(XrSystemPlaneDetectionPropertiesEXT, XR_TYPE_SYSTEM_PLANE_DETECTION_PROPERTIES_EXT) \ - _avail(XrPlaneDetectorCreateInfoEXT, XR_TYPE_PLANE_DETECTOR_CREATE_INFO_EXT) \ - _avail(XrPlaneDetectorBeginInfoEXT, XR_TYPE_PLANE_DETECTOR_BEGIN_INFO_EXT) \ - _avail(XrPlaneDetectorGetInfoEXT, XR_TYPE_PLANE_DETECTOR_GET_INFO_EXT) \ - _avail(XrPlaneDetectorLocationEXT, XR_TYPE_PLANE_DETECTOR_LOCATION_EXT) \ - _avail(XrPlaneDetectorLocationsEXT, XR_TYPE_PLANE_DETECTOR_LOCATIONS_EXT) \ - _avail(XrPlaneDetectorPolygonBufferEXT, XR_TYPE_PLANE_DETECTOR_POLYGON_BUFFER_EXT) \ - _avail(XrFutureCancelInfoEXT, XR_TYPE_FUTURE_CANCEL_INFO_EXT) \ - _avail(XrFuturePollInfoEXT, XR_TYPE_FUTURE_POLL_INFO_EXT) \ - _avail(XrFutureCompletionEXT, XR_TYPE_FUTURE_COMPLETION_EXT) \ - _avail(XrFuturePollResultEXT, XR_TYPE_FUTURE_POLL_RESULT_EXT) \ - _avail(XrEventDataUserPresenceChangedEXT, XR_TYPE_EVENT_DATA_USER_PRESENCE_CHANGED_EXT) \ - _avail(XrSystemUserPresencePropertiesEXT, XR_TYPE_SYSTEM_USER_PRESENCE_PROPERTIES_EXT) \ - _avail(XrEventDataHeadsetFitChangedML, XR_TYPE_EVENT_DATA_HEADSET_FIT_CHANGED_ML) \ - _avail(XrEventDataEyeCalibrationChangedML, XR_TYPE_EVENT_DATA_EYE_CALIBRATION_CHANGED_ML) \ - _avail(XrUserCalibrationEnableEventsInfoML, XR_TYPE_USER_CALIBRATION_ENABLE_EVENTS_INFO_ML) \ - - -#if defined(XR_USE_GRAPHICS_API_D3D11) -#define _impl_XR_LIST_ALL_STRUCTURE_TYPES_XR_USE_GRAPHICS_API_D3D11(_avail, _unavail) \ - _avail(XrGraphicsBindingD3D11KHR, XR_TYPE_GRAPHICS_BINDING_D3D11_KHR) \ - _avail(XrSwapchainImageD3D11KHR, XR_TYPE_SWAPCHAIN_IMAGE_D3D11_KHR) \ - _avail(XrGraphicsRequirementsD3D11KHR, XR_TYPE_GRAPHICS_REQUIREMENTS_D3D11_KHR) \ - -#else -#define _impl_XR_LIST_ALL_STRUCTURE_TYPES_XR_USE_GRAPHICS_API_D3D11(_avail, _unavail) \ - _unavail(XrGraphicsBindingD3D11KHR, XR_TYPE_GRAPHICS_BINDING_D3D11_KHR) \ - _unavail(XrSwapchainImageD3D11KHR, XR_TYPE_SWAPCHAIN_IMAGE_D3D11_KHR) \ - _unavail(XrGraphicsRequirementsD3D11KHR, XR_TYPE_GRAPHICS_REQUIREMENTS_D3D11_KHR) \ - -#endif - -#if defined(XR_USE_GRAPHICS_API_D3D12) -#define _impl_XR_LIST_ALL_STRUCTURE_TYPES_XR_USE_GRAPHICS_API_D3D12(_avail, _unavail) \ - _avail(XrGraphicsBindingD3D12KHR, XR_TYPE_GRAPHICS_BINDING_D3D12_KHR) \ - _avail(XrSwapchainImageD3D12KHR, XR_TYPE_SWAPCHAIN_IMAGE_D3D12_KHR) \ - _avail(XrGraphicsRequirementsD3D12KHR, XR_TYPE_GRAPHICS_REQUIREMENTS_D3D12_KHR) \ - -#else -#define _impl_XR_LIST_ALL_STRUCTURE_TYPES_XR_USE_GRAPHICS_API_D3D12(_avail, _unavail) \ - _unavail(XrGraphicsBindingD3D12KHR, XR_TYPE_GRAPHICS_BINDING_D3D12_KHR) \ - _unavail(XrSwapchainImageD3D12KHR, XR_TYPE_SWAPCHAIN_IMAGE_D3D12_KHR) \ - _unavail(XrGraphicsRequirementsD3D12KHR, XR_TYPE_GRAPHICS_REQUIREMENTS_D3D12_KHR) \ - -#endif - -#if defined(XR_USE_GRAPHICS_API_OPENGL) -#define _impl_XR_LIST_ALL_STRUCTURE_TYPES_XR_USE_GRAPHICS_API_OPENGL(_avail, _unavail) \ - _avail(XrSwapchainImageOpenGLKHR, XR_TYPE_SWAPCHAIN_IMAGE_OPENGL_KHR) \ - _avail(XrGraphicsRequirementsOpenGLKHR, XR_TYPE_GRAPHICS_REQUIREMENTS_OPENGL_KHR) \ - -#else -#define _impl_XR_LIST_ALL_STRUCTURE_TYPES_XR_USE_GRAPHICS_API_OPENGL(_avail, _unavail) \ - _unavail(XrSwapchainImageOpenGLKHR, XR_TYPE_SWAPCHAIN_IMAGE_OPENGL_KHR) \ - _unavail(XrGraphicsRequirementsOpenGLKHR, XR_TYPE_GRAPHICS_REQUIREMENTS_OPENGL_KHR) \ - -#endif - -#if defined(XR_USE_GRAPHICS_API_OPENGL) && defined(XR_USE_PLATFORM_WAYLAND) -#define _impl_XR_LIST_ALL_STRUCTURE_TYPES_XR_USE_GRAPHICS_API_OPENGL_XR_USE_PLATFORM_WAYLAND(_avail, _unavail) \ - _avail(XrGraphicsBindingOpenGLWaylandKHR, XR_TYPE_GRAPHICS_BINDING_OPENGL_WAYLAND_KHR) \ - -#else -#define _impl_XR_LIST_ALL_STRUCTURE_TYPES_XR_USE_GRAPHICS_API_OPENGL_XR_USE_PLATFORM_WAYLAND(_avail, _unavail) \ - _unavail(XrGraphicsBindingOpenGLWaylandKHR, XR_TYPE_GRAPHICS_BINDING_OPENGL_WAYLAND_KHR) \ - -#endif - -#if defined(XR_USE_GRAPHICS_API_OPENGL) && defined(XR_USE_PLATFORM_WIN32) -#define _impl_XR_LIST_ALL_STRUCTURE_TYPES_XR_USE_GRAPHICS_API_OPENGL_XR_USE_PLATFORM_WIN32(_avail, _unavail) \ - _avail(XrGraphicsBindingOpenGLWin32KHR, XR_TYPE_GRAPHICS_BINDING_OPENGL_WIN32_KHR) \ - -#else -#define _impl_XR_LIST_ALL_STRUCTURE_TYPES_XR_USE_GRAPHICS_API_OPENGL_XR_USE_PLATFORM_WIN32(_avail, _unavail) \ - _unavail(XrGraphicsBindingOpenGLWin32KHR, XR_TYPE_GRAPHICS_BINDING_OPENGL_WIN32_KHR) \ - -#endif - -#if defined(XR_USE_GRAPHICS_API_OPENGL) && defined(XR_USE_PLATFORM_XCB) -#define _impl_XR_LIST_ALL_STRUCTURE_TYPES_XR_USE_GRAPHICS_API_OPENGL_XR_USE_PLATFORM_XCB(_avail, _unavail) \ - _avail(XrGraphicsBindingOpenGLXcbKHR, XR_TYPE_GRAPHICS_BINDING_OPENGL_XCB_KHR) \ - -#else -#define _impl_XR_LIST_ALL_STRUCTURE_TYPES_XR_USE_GRAPHICS_API_OPENGL_XR_USE_PLATFORM_XCB(_avail, _unavail) \ - _unavail(XrGraphicsBindingOpenGLXcbKHR, XR_TYPE_GRAPHICS_BINDING_OPENGL_XCB_KHR) \ - -#endif - -#if defined(XR_USE_GRAPHICS_API_OPENGL) && defined(XR_USE_PLATFORM_XLIB) -#define _impl_XR_LIST_ALL_STRUCTURE_TYPES_XR_USE_GRAPHICS_API_OPENGL_XR_USE_PLATFORM_XLIB(_avail, _unavail) \ - _avail(XrGraphicsBindingOpenGLXlibKHR, XR_TYPE_GRAPHICS_BINDING_OPENGL_XLIB_KHR) \ - -#else -#define _impl_XR_LIST_ALL_STRUCTURE_TYPES_XR_USE_GRAPHICS_API_OPENGL_XR_USE_PLATFORM_XLIB(_avail, _unavail) \ - _unavail(XrGraphicsBindingOpenGLXlibKHR, XR_TYPE_GRAPHICS_BINDING_OPENGL_XLIB_KHR) \ - -#endif - -#if defined(XR_USE_GRAPHICS_API_OPENGL_ES) -#define _impl_XR_LIST_ALL_STRUCTURE_TYPES_XR_USE_GRAPHICS_API_OPENGL_ES(_avail, _unavail) \ - _avail(XrSwapchainImageOpenGLESKHR, XR_TYPE_SWAPCHAIN_IMAGE_OPENGL_ES_KHR) \ - _avail(XrGraphicsRequirementsOpenGLESKHR, XR_TYPE_GRAPHICS_REQUIREMENTS_OPENGL_ES_KHR) \ - _avail(XrSwapchainStateSamplerOpenGLESFB, XR_TYPE_SWAPCHAIN_STATE_SAMPLER_OPENGL_ES_FB) \ - -#else -#define _impl_XR_LIST_ALL_STRUCTURE_TYPES_XR_USE_GRAPHICS_API_OPENGL_ES(_avail, _unavail) \ - _unavail(XrSwapchainImageOpenGLESKHR, XR_TYPE_SWAPCHAIN_IMAGE_OPENGL_ES_KHR) \ - _unavail(XrGraphicsRequirementsOpenGLESKHR, XR_TYPE_GRAPHICS_REQUIREMENTS_OPENGL_ES_KHR) \ - _unavail(XrSwapchainStateSamplerOpenGLESFB, XR_TYPE_SWAPCHAIN_STATE_SAMPLER_OPENGL_ES_FB) \ - -#endif - -#if defined(XR_USE_GRAPHICS_API_OPENGL_ES) && defined(XR_USE_PLATFORM_ANDROID) -#define _impl_XR_LIST_ALL_STRUCTURE_TYPES_XR_USE_GRAPHICS_API_OPENGL_ES_XR_USE_PLATFORM_ANDROID(_avail, _unavail) \ - _avail(XrGraphicsBindingOpenGLESAndroidKHR, XR_TYPE_GRAPHICS_BINDING_OPENGL_ES_ANDROID_KHR) \ - -#else -#define _impl_XR_LIST_ALL_STRUCTURE_TYPES_XR_USE_GRAPHICS_API_OPENGL_ES_XR_USE_PLATFORM_ANDROID(_avail, _unavail) \ - _unavail(XrGraphicsBindingOpenGLESAndroidKHR, XR_TYPE_GRAPHICS_BINDING_OPENGL_ES_ANDROID_KHR) \ - -#endif - -#if defined(XR_USE_GRAPHICS_API_VULKAN) -#define _impl_XR_LIST_ALL_STRUCTURE_TYPES_XR_USE_GRAPHICS_API_VULKAN(_avail, _unavail) \ - _avail(XrVulkanSwapchainFormatListCreateInfoKHR, XR_TYPE_VULKAN_SWAPCHAIN_FORMAT_LIST_CREATE_INFO_KHR) \ - _avail(XrGraphicsBindingVulkanKHR, XR_TYPE_GRAPHICS_BINDING_VULKAN_KHR) \ - _avail(XrSwapchainImageVulkanKHR, XR_TYPE_SWAPCHAIN_IMAGE_VULKAN_KHR) \ - _avail(XrGraphicsRequirementsVulkanKHR, XR_TYPE_GRAPHICS_REQUIREMENTS_VULKAN_KHR) \ - _avail(XrVulkanInstanceCreateInfoKHR, XR_TYPE_VULKAN_INSTANCE_CREATE_INFO_KHR) \ - _avail(XrVulkanDeviceCreateInfoKHR, XR_TYPE_VULKAN_DEVICE_CREATE_INFO_KHR) \ - _avail(XrVulkanGraphicsDeviceGetInfoKHR, XR_TYPE_VULKAN_GRAPHICS_DEVICE_GET_INFO_KHR) \ - _avail(XrSwapchainImageFoveationVulkanFB, XR_TYPE_SWAPCHAIN_IMAGE_FOVEATION_VULKAN_FB) \ - _avail(XrSwapchainStateSamplerVulkanFB, XR_TYPE_SWAPCHAIN_STATE_SAMPLER_VULKAN_FB) \ - _avail(XrVulkanSwapchainCreateInfoMETA, XR_TYPE_VULKAN_SWAPCHAIN_CREATE_INFO_META) \ - -#else -#define _impl_XR_LIST_ALL_STRUCTURE_TYPES_XR_USE_GRAPHICS_API_VULKAN(_avail, _unavail) \ - _unavail(XrVulkanSwapchainFormatListCreateInfoKHR, XR_TYPE_VULKAN_SWAPCHAIN_FORMAT_LIST_CREATE_INFO_KHR) \ - _unavail(XrGraphicsBindingVulkanKHR, XR_TYPE_GRAPHICS_BINDING_VULKAN_KHR) \ - _unavail(XrSwapchainImageVulkanKHR, XR_TYPE_SWAPCHAIN_IMAGE_VULKAN_KHR) \ - _unavail(XrGraphicsRequirementsVulkanKHR, XR_TYPE_GRAPHICS_REQUIREMENTS_VULKAN_KHR) \ - _unavail(XrVulkanInstanceCreateInfoKHR, XR_TYPE_VULKAN_INSTANCE_CREATE_INFO_KHR) \ - _unavail(XrVulkanDeviceCreateInfoKHR, XR_TYPE_VULKAN_DEVICE_CREATE_INFO_KHR) \ - _unavail(XrVulkanGraphicsDeviceGetInfoKHR, XR_TYPE_VULKAN_GRAPHICS_DEVICE_GET_INFO_KHR) \ - _unavail(XrSwapchainImageFoveationVulkanFB, XR_TYPE_SWAPCHAIN_IMAGE_FOVEATION_VULKAN_FB) \ - _unavail(XrSwapchainStateSamplerVulkanFB, XR_TYPE_SWAPCHAIN_STATE_SAMPLER_VULKAN_FB) \ - _unavail(XrVulkanSwapchainCreateInfoMETA, XR_TYPE_VULKAN_SWAPCHAIN_CREATE_INFO_META) \ - -#endif - -#if defined(XR_USE_PLATFORM_ANDROID) -#define _impl_XR_LIST_ALL_STRUCTURE_TYPES_XR_USE_PLATFORM_ANDROID(_avail, _unavail) \ - _avail(XrInstanceCreateInfoAndroidKHR, XR_TYPE_INSTANCE_CREATE_INFO_ANDROID_KHR) \ - _avail(XrLoaderInitInfoAndroidKHR, XR_TYPE_LOADER_INIT_INFO_ANDROID_KHR) \ - _avail(XrAndroidSurfaceSwapchainCreateInfoFB, XR_TYPE_ANDROID_SURFACE_SWAPCHAIN_CREATE_INFO_FB) \ - _avail(XrSwapchainStateAndroidSurfaceDimensionsFB, XR_TYPE_SWAPCHAIN_STATE_ANDROID_SURFACE_DIMENSIONS_FB) \ - -#else -#define _impl_XR_LIST_ALL_STRUCTURE_TYPES_XR_USE_PLATFORM_ANDROID(_avail, _unavail) \ - _unavail(XrInstanceCreateInfoAndroidKHR, XR_TYPE_INSTANCE_CREATE_INFO_ANDROID_KHR) \ - _unavail(XrLoaderInitInfoAndroidKHR, XR_TYPE_LOADER_INIT_INFO_ANDROID_KHR) \ - _unavail(XrAndroidSurfaceSwapchainCreateInfoFB, XR_TYPE_ANDROID_SURFACE_SWAPCHAIN_CREATE_INFO_FB) \ - _unavail(XrSwapchainStateAndroidSurfaceDimensionsFB, XR_TYPE_SWAPCHAIN_STATE_ANDROID_SURFACE_DIMENSIONS_FB) \ - -#endif - -#if defined(XR_USE_PLATFORM_EGL) -#define _impl_XR_LIST_ALL_STRUCTURE_TYPES_XR_USE_PLATFORM_EGL(_avail, _unavail) \ - _avail(XrGraphicsBindingEGLMNDX, XR_TYPE_GRAPHICS_BINDING_EGL_MNDX) \ - -#else -#define _impl_XR_LIST_ALL_STRUCTURE_TYPES_XR_USE_PLATFORM_EGL(_avail, _unavail) \ - _unavail(XrGraphicsBindingEGLMNDX, XR_TYPE_GRAPHICS_BINDING_EGL_MNDX) \ - -#endif - -#if defined(XR_USE_PLATFORM_ML) -#define _impl_XR_LIST_ALL_STRUCTURE_TYPES_XR_USE_PLATFORM_ML(_avail, _unavail) \ - _avail(XrCoordinateSpaceCreateInfoML, XR_TYPE_COORDINATE_SPACE_CREATE_INFO_ML) \ - -#else -#define _impl_XR_LIST_ALL_STRUCTURE_TYPES_XR_USE_PLATFORM_ML(_avail, _unavail) \ - _unavail(XrCoordinateSpaceCreateInfoML, XR_TYPE_COORDINATE_SPACE_CREATE_INFO_ML) \ - -#endif - -#if defined(XR_USE_PLATFORM_WIN32) -#define _impl_XR_LIST_ALL_STRUCTURE_TYPES_XR_USE_PLATFORM_WIN32(_avail, _unavail) \ - _avail(XrHolographicWindowAttachmentMSFT, XR_TYPE_HOLOGRAPHIC_WINDOW_ATTACHMENT_MSFT) \ - -#else -#define _impl_XR_LIST_ALL_STRUCTURE_TYPES_XR_USE_PLATFORM_WIN32(_avail, _unavail) \ - _unavail(XrHolographicWindowAttachmentMSFT, XR_TYPE_HOLOGRAPHIC_WINDOW_ATTACHMENT_MSFT) \ - -#endif - - - - -#endif - diff --git a/Plugins/MetaXR/Source/Thirdparty/KhronosOpenXR/src/common/xr_linear.h b/Plugins/MetaXR/Source/Thirdparty/KhronosOpenXR/src/common/xr_linear.h deleted file mode 100644 index cc525d3..0000000 --- a/Plugins/MetaXR/Source/Thirdparty/KhronosOpenXR/src/common/xr_linear.h +++ /dev/null @@ -1,869 +0,0 @@ -// Copyright (c) 2017-2024, The Khronos Group Inc. -// Copyright (c) 2016, Oculus VR, LLC. -// -// SPDX-License-Identifier: Apache-2.0 -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. -// -// Author: J.M.P. van Waveren -// - -#ifndef XR_LINEAR_H_ -#define XR_LINEAR_H_ - -#include - -/* REUSE-IgnoreStart */ -/* The following has copyright notices that duplicate the header above */ - -/* -================================================================================================ - -Description : Vector, matrix and quaternion math. -Orig. Author : J.M.P. van Waveren -Orig. Date : 12/10/2016 -Language : C99 -Copyright : Copyright (c) 2016 Oculus VR, LLC. All Rights reserved. - - -DESCRIPTION -=========== - -All matrices are column-major. - -INTERFACE -========= - -XrVector2f -XrVector3f -XrVector4f -XrQuaternionf -XrPosef -XrMatrix4x4f - -inline static void XrVector3f_Set(XrVector3f* v, const float value); -inline static void XrVector3f_Add(XrVector3f* result, const XrVector3f* a, const XrVector3f* b); -inline static void XrVector3f_Sub(XrVector3f* result, const XrVector3f* a, const XrVector3f* b); -inline static void XrVector3f_Min(XrVector3f* result, const XrVector3f* a, const XrVector3f* b); -inline static void XrVector3f_Max(XrVector3f* result, const XrVector3f* a, const XrVector3f* b); -inline static void XrVector3f_Decay(XrVector3f* result, const XrVector3f* a, const float value); -inline static void XrVector3f_Lerp(XrVector3f* result, const XrVector3f* a, const XrVector3f* b, const float fraction); -inline static void XrVector3f_Scale(XrVector3f* result, const XrVector3f* a, const float scaleFactor); -inline static void XrVector3f_Normalize(XrVector3f* v); -inline static float XrVector3f_Length(const XrVector3f* v); - -inline static void XrQuaternionf_CreateIdentity(XrQuaternionf* q); -inline static void XrQuaternionf_CreateFromAxisAngle(XrQuaternionf* result, const XrVector3f* axis, const float angleInRadians); -inline static void XrQuaternionf_Lerp(XrQuaternionf* result, const XrQuaternionf* a, const XrQuaternionf* b, const float fraction); -inline static void XrQuaternionf_Multiply(XrQuaternionf* result, const XrQuaternionf* a, const XrQuaternionf* b); -inline static void XrQuaternionf_Invert(XrQuaternionf* result, const XrQuaternionf* q); -inline static void XrQuaternionf_Normalize(XrQuaternionf* q); -inline static void XrQuaternionf_RotateVector3f(XrVector3f* result, const XrQuaternionf* a, const XrVector3f* v); - -inline static void XrPosef_CreateIdentity(XrPosef* result); -inline static void XrPosef_TransformVector3f(XrVector3f* result, const XrPosef* a, const XrVector3f* v); -inline static void XrPosef_Multiply(XrPosef* result, const XrPosef* a, const XrPosef* b); -inline static void XrPosef_Invert(XrPosef* result, const XrPosef* a); - -inline static void XrMatrix4x4f_CreateIdentity(XrMatrix4x4f* result); -inline static void XrMatrix4x4f_CreateTranslation(XrMatrix4x4f* result, const float x, const float y, const float z); -inline static void XrMatrix4x4f_CreateRotation(XrMatrix4x4f* result, const float degreesX, const float degreesY, - const float degreesZ); -inline static void XrMatrix4x4f_CreateScale(XrMatrix4x4f* result, const float x, const float y, const float z); -inline static void XrMatrix4x4f_CreateTranslationRotationScale(XrMatrix4x4f* result, const XrVector3f* translation, - const XrQuaternionf* rotation, const XrVector3f* scale); -inline static void XrMatrix4x4f_CreateFromRigidTransform(XrMatrix4x4f* result, const XrPosef* s); -inline static void XrMatrix4x4f_CreateProjection(XrMatrix4x4f* result, GraphicsAPI graphicsApi, const float tanAngleLeft, - const float tanAngleRight, const float tanAngleUp, float const tanAngleDown, - const float nearZ, const float farZ); -inline static void XrMatrix4x4f_CreateProjectionFov(XrMatrix4x4f* result, GraphicsAPI graphicsApi, const XrFovf fov, - const float nearZ, const float farZ); -inline static void XrMatrix4x4f_CreateFromQuaternion(XrMatrix4x4f* result, const XrQuaternionf* quat); -inline static void XrMatrix4x4f_CreateOffsetScaleForBounds(XrMatrix4x4f* result, const XrMatrix4x4f* matrix, const XrVector3f* mins, - const XrVector3f* maxs); - -inline static bool XrMatrix4x4f_IsAffine(const XrMatrix4x4f* matrix, const float epsilon); -inline static bool XrMatrix4x4f_IsOrthogonal(const XrMatrix4x4f* matrix, const float epsilon); -inline static bool XrMatrix4x4f_IsOrthonormal(const XrMatrix4x4f* matrix, const float epsilon); -inline static bool XrMatrix4x4f_IsRigidBody(const XrMatrix4x4f* matrix, const float epsilon); - -inline static void XrMatrix4x4f_GetTranslation(XrVector3f* result, const XrMatrix4x4f* src); -inline static void XrMatrix4x4f_GetRotation(XrQuaternionf* result, const XrMatrix4x4f* src); -inline static void XrMatrix4x4f_GetScale(XrVector3f* result, const XrMatrix4x4f* src); - -inline static void XrMatrix4x4f_Multiply(XrMatrix4x4f* result, const XrMatrix4x4f* a, const XrMatrix4x4f* b); -inline static void XrMatrix4x4f_Transpose(XrMatrix4x4f* result, const XrMatrix4x4f* src); -inline static void XrMatrix4x4f_Invert(XrMatrix4x4f* result, const XrMatrix4x4f* src); -inline static void XrMatrix4x4f_InvertRigidBody(XrMatrix4x4f* result, const XrMatrix4x4f* src); - -inline static void XrMatrix4x4f_TransformVector3f(XrVector3f* result, const XrMatrix4x4f* m, const XrVector3f* v); -inline static void XrMatrix4x4f_TransformVector4f(XrVector4f* result, const XrMatrix4x4f* m, const XrVector4f* v); - -inline static void XrMatrix4x4f_TransformBounds(XrVector3f* resultMins, XrVector3f* resultMaxs, const XrMatrix4x4f* matrix, - const XrVector3f* mins, const XrVector3f* maxs); -inline static bool XrMatrix4x4f_CullBounds(const XrMatrix4x4f* mvp, const XrVector3f* mins, const XrVector3f* maxs); - -================================================================================================ -*/ - -#include -#include -#include - -#define MATH_PI 3.14159265358979323846f - -#define DEFAULT_NEAR_Z 0.015625f // exact floating point representation -#define INFINITE_FAR_Z 0.0f - -static const XrColor4f XrColorRed = {1.0f, 0.0f, 0.0f, 1.0f}; -static const XrColor4f XrColorGreen = {0.0f, 1.0f, 0.0f, 1.0f}; -static const XrColor4f XrColorBlue = {0.0f, 0.0f, 1.0f, 1.0f}; -static const XrColor4f XrColorYellow = {1.0f, 1.0f, 0.0f, 1.0f}; -static const XrColor4f XrColorPurple = {1.0f, 0.0f, 1.0f, 1.0f}; -static const XrColor4f XrColorCyan = {0.0f, 1.0f, 1.0f, 1.0f}; -static const XrColor4f XrColorLightGrey = {0.7f, 0.7f, 0.7f, 1.0f}; -static const XrColor4f XrColorDarkGrey = {0.3f, 0.3f, 0.3f, 1.0f}; - -typedef enum GraphicsAPI { GRAPHICS_VULKAN, GRAPHICS_OPENGL, GRAPHICS_OPENGL_ES, GRAPHICS_D3D, GRAPHICS_METAL } GraphicsAPI; - -// Column-major, pre-multiplied. This type does not exist in the OpenXR API and is provided for convenience. -typedef struct XrMatrix4x4f { - float m[16]; -} XrMatrix4x4f; - -inline static float XrRcpSqrt(const float x) { - const float SMALLEST_NON_DENORMAL = 1.1754943508222875e-038f; // ( 1U << 23 ) - const float rcp = (x >= SMALLEST_NON_DENORMAL) ? 1.0f / sqrtf(x) : 1.0f; - return rcp; -} - -inline static float XrVector2f_Length(const XrVector2f* v) { return sqrtf(v->x * v->x + v->y * v->y); } - -inline static void XrVector3f_Set(XrVector3f* v, const float value) { - v->x = value; - v->y = value; - v->z = value; -} - -inline static void XrVector3f_Add(XrVector3f* result, const XrVector3f* a, const XrVector3f* b) { - result->x = a->x + b->x; - result->y = a->y + b->y; - result->z = a->z + b->z; -} - -inline static void XrVector3f_Sub(XrVector3f* result, const XrVector3f* a, const XrVector3f* b) { - result->x = a->x - b->x; - result->y = a->y - b->y; - result->z = a->z - b->z; -} - -inline static void XrVector3f_Min(XrVector3f* result, const XrVector3f* a, const XrVector3f* b) { - result->x = (a->x < b->x) ? a->x : b->x; - result->y = (a->y < b->y) ? a->y : b->y; - result->z = (a->z < b->z) ? a->z : b->z; -} - -inline static void XrVector3f_Max(XrVector3f* result, const XrVector3f* a, const XrVector3f* b) { - result->x = (a->x > b->x) ? a->x : b->x; - result->y = (a->y > b->y) ? a->y : b->y; - result->z = (a->z > b->z) ? a->z : b->z; -} - -inline static void XrVector3f_Decay(XrVector3f* result, const XrVector3f* a, const float value) { - result->x = (fabsf(a->x) > value) ? ((a->x > 0.0f) ? (a->x - value) : (a->x + value)) : 0.0f; - result->y = (fabsf(a->y) > value) ? ((a->y > 0.0f) ? (a->y - value) : (a->y + value)) : 0.0f; - result->z = (fabsf(a->z) > value) ? ((a->z > 0.0f) ? (a->z - value) : (a->z + value)) : 0.0f; -} - -inline static void XrVector3f_Lerp(XrVector3f* result, const XrVector3f* a, const XrVector3f* b, const float fraction) { - result->x = a->x + fraction * (b->x - a->x); - result->y = a->y + fraction * (b->y - a->y); - result->z = a->z + fraction * (b->z - a->z); -} - -inline static void XrVector3f_Scale(XrVector3f* result, const XrVector3f* a, const float scaleFactor) { - result->x = a->x * scaleFactor; - result->y = a->y * scaleFactor; - result->z = a->z * scaleFactor; -} - -inline static float XrVector3f_Dot(const XrVector3f* a, const XrVector3f* b) { return a->x * b->x + a->y * b->y + a->z * b->z; } - -// Compute cross product, which generates a normal vector. -// Direction vector can be determined by right-hand rule: Pointing index finder in -// direction a and middle finger in direction b, thumb will point in Cross(a, b). -inline static void XrVector3f_Cross(XrVector3f* result, const XrVector3f* a, const XrVector3f* b) { - result->x = a->y * b->z - a->z * b->y; - result->y = a->z * b->x - a->x * b->z; - result->z = a->x * b->y - a->y * b->x; -} - -inline static void XrVector3f_Normalize(XrVector3f* v) { - const float lengthRcp = XrRcpSqrt(v->x * v->x + v->y * v->y + v->z * v->z); - v->x *= lengthRcp; - v->y *= lengthRcp; - v->z *= lengthRcp; -} - -inline static float XrVector3f_Length(const XrVector3f* v) { return sqrtf(v->x * v->x + v->y * v->y + v->z * v->z); } - -inline static void XrQuaternionf_CreateIdentity(XrQuaternionf* q) { - q->x = 0.0f; - q->y = 0.0f; - q->z = 0.0f; - q->w = 1.0f; -} - -inline static void XrQuaternionf_CreateFromAxisAngle(XrQuaternionf* result, const XrVector3f* axis, const float angleInRadians) { - float s = sinf(angleInRadians / 2.0f); - float lengthRcp = XrRcpSqrt(axis->x * axis->x + axis->y * axis->y + axis->z * axis->z); - result->x = s * axis->x * lengthRcp; - result->y = s * axis->y * lengthRcp; - result->z = s * axis->z * lengthRcp; - result->w = cosf(angleInRadians / 2.0f); -} - -inline static void XrQuaternionf_Lerp(XrQuaternionf* result, const XrQuaternionf* a, const XrQuaternionf* b, const float fraction) { - const float s = a->x * b->x + a->y * b->y + a->z * b->z + a->w * b->w; - const float fa = 1.0f - fraction; - const float fb = (s < 0.0f) ? -fraction : fraction; - const float x = a->x * fa + b->x * fb; - const float y = a->y * fa + b->y * fb; - const float z = a->z * fa + b->z * fb; - const float w = a->w * fa + b->w * fb; - const float lengthRcp = XrRcpSqrt(x * x + y * y + z * z + w * w); - result->x = x * lengthRcp; - result->y = y * lengthRcp; - result->z = z * lengthRcp; - result->w = w * lengthRcp; -} - -inline static void XrQuaternionf_Multiply(XrQuaternionf* result, const XrQuaternionf* a, const XrQuaternionf* b) { - result->x = (b->w * a->x) + (b->x * a->w) + (b->y * a->z) - (b->z * a->y); - result->y = (b->w * a->y) - (b->x * a->z) + (b->y * a->w) + (b->z * a->x); - result->z = (b->w * a->z) + (b->x * a->y) - (b->y * a->x) + (b->z * a->w); - result->w = (b->w * a->w) - (b->x * a->x) - (b->y * a->y) - (b->z * a->z); -} - -inline static void XrQuaternionf_Invert(XrQuaternionf* result, const XrQuaternionf* q) { - result->x = -q->x; - result->y = -q->y; - result->z = -q->z; - result->w = q->w; -} - -inline static void XrQuaternionf_Normalize(XrQuaternionf* q) { - const float lengthRcp = XrRcpSqrt(q->x * q->x + q->y * q->y + q->z * q->z + q->w * q->w); - q->x *= lengthRcp; - q->y *= lengthRcp; - q->z *= lengthRcp; - q->w *= lengthRcp; -} - -inline static void XrQuaternionf_RotateVector3f(XrVector3f* result, const XrQuaternionf* a, const XrVector3f* v) { - XrQuaternionf q = {v->x, v->y, v->z, 0.0f}; - XrQuaternionf aq; - XrQuaternionf_Multiply(&aq, &q, a); - XrQuaternionf aInv; - XrQuaternionf_Invert(&aInv, a); - XrQuaternionf aqaInv; - XrQuaternionf_Multiply(&aqaInv, &aInv, &aq); - - result->x = aqaInv.x; - result->y = aqaInv.y; - result->z = aqaInv.z; -} - -inline static void XrPosef_CreateIdentity(XrPosef* result) { - XrQuaternionf_CreateIdentity(&result->orientation); - XrVector3f_Set(&result->position, 0); -} - -inline static void XrPosef_TransformVector3f(XrVector3f* result, const XrPosef* a, const XrVector3f* v) { - XrVector3f r0; - XrQuaternionf_RotateVector3f(&r0, &a->orientation, v); - XrVector3f_Add(result, &r0, &a->position); -} - -inline static void XrPosef_Multiply(XrPosef* result, const XrPosef* a, const XrPosef* b) { - XrQuaternionf_Multiply(&result->orientation, &b->orientation, &a->orientation); - XrPosef_TransformVector3f(&result->position, a, &b->position); -} - -inline static void XrPosef_Invert(XrPosef* result, const XrPosef* a) { - XrQuaternionf_Invert(&result->orientation, &a->orientation); - XrVector3f aPosNeg; - XrVector3f_Scale(&aPosNeg, &a->position, -1.0f); - XrQuaternionf_RotateVector3f(&result->position, &result->orientation, &aPosNeg); -} - -// Use left-multiplication to accumulate transformations. -inline static void XrMatrix4x4f_Multiply(XrMatrix4x4f* result, const XrMatrix4x4f* a, const XrMatrix4x4f* b) { - result->m[0] = a->m[0] * b->m[0] + a->m[4] * b->m[1] + a->m[8] * b->m[2] + a->m[12] * b->m[3]; - result->m[1] = a->m[1] * b->m[0] + a->m[5] * b->m[1] + a->m[9] * b->m[2] + a->m[13] * b->m[3]; - result->m[2] = a->m[2] * b->m[0] + a->m[6] * b->m[1] + a->m[10] * b->m[2] + a->m[14] * b->m[3]; - result->m[3] = a->m[3] * b->m[0] + a->m[7] * b->m[1] + a->m[11] * b->m[2] + a->m[15] * b->m[3]; - - result->m[4] = a->m[0] * b->m[4] + a->m[4] * b->m[5] + a->m[8] * b->m[6] + a->m[12] * b->m[7]; - result->m[5] = a->m[1] * b->m[4] + a->m[5] * b->m[5] + a->m[9] * b->m[6] + a->m[13] * b->m[7]; - result->m[6] = a->m[2] * b->m[4] + a->m[6] * b->m[5] + a->m[10] * b->m[6] + a->m[14] * b->m[7]; - result->m[7] = a->m[3] * b->m[4] + a->m[7] * b->m[5] + a->m[11] * b->m[6] + a->m[15] * b->m[7]; - - result->m[8] = a->m[0] * b->m[8] + a->m[4] * b->m[9] + a->m[8] * b->m[10] + a->m[12] * b->m[11]; - result->m[9] = a->m[1] * b->m[8] + a->m[5] * b->m[9] + a->m[9] * b->m[10] + a->m[13] * b->m[11]; - result->m[10] = a->m[2] * b->m[8] + a->m[6] * b->m[9] + a->m[10] * b->m[10] + a->m[14] * b->m[11]; - result->m[11] = a->m[3] * b->m[8] + a->m[7] * b->m[9] + a->m[11] * b->m[10] + a->m[15] * b->m[11]; - - result->m[12] = a->m[0] * b->m[12] + a->m[4] * b->m[13] + a->m[8] * b->m[14] + a->m[12] * b->m[15]; - result->m[13] = a->m[1] * b->m[12] + a->m[5] * b->m[13] + a->m[9] * b->m[14] + a->m[13] * b->m[15]; - result->m[14] = a->m[2] * b->m[12] + a->m[6] * b->m[13] + a->m[10] * b->m[14] + a->m[14] * b->m[15]; - result->m[15] = a->m[3] * b->m[12] + a->m[7] * b->m[13] + a->m[11] * b->m[14] + a->m[15] * b->m[15]; -} - -// Creates the transpose of the given matrix. -inline static void XrMatrix4x4f_Transpose(XrMatrix4x4f* result, const XrMatrix4x4f* src) { - result->m[0] = src->m[0]; - result->m[1] = src->m[4]; - result->m[2] = src->m[8]; - result->m[3] = src->m[12]; - - result->m[4] = src->m[1]; - result->m[5] = src->m[5]; - result->m[6] = src->m[9]; - result->m[7] = src->m[13]; - - result->m[8] = src->m[2]; - result->m[9] = src->m[6]; - result->m[10] = src->m[10]; - result->m[11] = src->m[14]; - - result->m[12] = src->m[3]; - result->m[13] = src->m[7]; - result->m[14] = src->m[11]; - result->m[15] = src->m[15]; -} - -// Returns a 3x3 minor of a 4x4 matrix. -inline static float XrMatrix4x4f_Minor(const XrMatrix4x4f* matrix, int r0, int r1, int r2, int c0, int c1, int c2) { - return matrix->m[4 * r0 + c0] * - (matrix->m[4 * r1 + c1] * matrix->m[4 * r2 + c2] - matrix->m[4 * r2 + c1] * matrix->m[4 * r1 + c2]) - - matrix->m[4 * r0 + c1] * - (matrix->m[4 * r1 + c0] * matrix->m[4 * r2 + c2] - matrix->m[4 * r2 + c0] * matrix->m[4 * r1 + c2]) + - matrix->m[4 * r0 + c2] * - (matrix->m[4 * r1 + c0] * matrix->m[4 * r2 + c1] - matrix->m[4 * r2 + c0] * matrix->m[4 * r1 + c1]); -} - -// Calculates the inverse of a 4x4 matrix. -inline static void XrMatrix4x4f_Invert(XrMatrix4x4f* result, const XrMatrix4x4f* src) { - const float rcpDet = - 1.0f / (src->m[0] * XrMatrix4x4f_Minor(src, 1, 2, 3, 1, 2, 3) - src->m[1] * XrMatrix4x4f_Minor(src, 1, 2, 3, 0, 2, 3) + - src->m[2] * XrMatrix4x4f_Minor(src, 1, 2, 3, 0, 1, 3) - src->m[3] * XrMatrix4x4f_Minor(src, 1, 2, 3, 0, 1, 2)); - - result->m[0] = XrMatrix4x4f_Minor(src, 1, 2, 3, 1, 2, 3) * rcpDet; - result->m[1] = -XrMatrix4x4f_Minor(src, 0, 2, 3, 1, 2, 3) * rcpDet; - result->m[2] = XrMatrix4x4f_Minor(src, 0, 1, 3, 1, 2, 3) * rcpDet; - result->m[3] = -XrMatrix4x4f_Minor(src, 0, 1, 2, 1, 2, 3) * rcpDet; - result->m[4] = -XrMatrix4x4f_Minor(src, 1, 2, 3, 0, 2, 3) * rcpDet; - result->m[5] = XrMatrix4x4f_Minor(src, 0, 2, 3, 0, 2, 3) * rcpDet; - result->m[6] = -XrMatrix4x4f_Minor(src, 0, 1, 3, 0, 2, 3) * rcpDet; - result->m[7] = XrMatrix4x4f_Minor(src, 0, 1, 2, 0, 2, 3) * rcpDet; - result->m[8] = XrMatrix4x4f_Minor(src, 1, 2, 3, 0, 1, 3) * rcpDet; - result->m[9] = -XrMatrix4x4f_Minor(src, 0, 2, 3, 0, 1, 3) * rcpDet; - result->m[10] = XrMatrix4x4f_Minor(src, 0, 1, 3, 0, 1, 3) * rcpDet; - result->m[11] = -XrMatrix4x4f_Minor(src, 0, 1, 2, 0, 1, 3) * rcpDet; - result->m[12] = -XrMatrix4x4f_Minor(src, 1, 2, 3, 0, 1, 2) * rcpDet; - result->m[13] = XrMatrix4x4f_Minor(src, 0, 2, 3, 0, 1, 2) * rcpDet; - result->m[14] = -XrMatrix4x4f_Minor(src, 0, 1, 3, 0, 1, 2) * rcpDet; - result->m[15] = XrMatrix4x4f_Minor(src, 0, 1, 2, 0, 1, 2) * rcpDet; -} - -// Calculates the inverse of a rigid body transform. -inline static void XrMatrix4x4f_InvertRigidBody(XrMatrix4x4f* result, const XrMatrix4x4f* src) { - result->m[0] = src->m[0]; - result->m[1] = src->m[4]; - result->m[2] = src->m[8]; - result->m[3] = 0.0f; - result->m[4] = src->m[1]; - result->m[5] = src->m[5]; - result->m[6] = src->m[9]; - result->m[7] = 0.0f; - result->m[8] = src->m[2]; - result->m[9] = src->m[6]; - result->m[10] = src->m[10]; - result->m[11] = 0.0f; - result->m[12] = -(src->m[0] * src->m[12] + src->m[1] * src->m[13] + src->m[2] * src->m[14]); - result->m[13] = -(src->m[4] * src->m[12] + src->m[5] * src->m[13] + src->m[6] * src->m[14]); - result->m[14] = -(src->m[8] * src->m[12] + src->m[9] * src->m[13] + src->m[10] * src->m[14]); - result->m[15] = 1.0f; -} - -// Creates an identity matrix. -inline static void XrMatrix4x4f_CreateIdentity(XrMatrix4x4f* result) { - result->m[0] = 1.0f; - result->m[1] = 0.0f; - result->m[2] = 0.0f; - result->m[3] = 0.0f; - result->m[4] = 0.0f; - result->m[5] = 1.0f; - result->m[6] = 0.0f; - result->m[7] = 0.0f; - result->m[8] = 0.0f; - result->m[9] = 0.0f; - result->m[10] = 1.0f; - result->m[11] = 0.0f; - result->m[12] = 0.0f; - result->m[13] = 0.0f; - result->m[14] = 0.0f; - result->m[15] = 1.0f; -} - -// Creates a translation matrix. -inline static void XrMatrix4x4f_CreateTranslation(XrMatrix4x4f* result, const float x, const float y, const float z) { - result->m[0] = 1.0f; - result->m[1] = 0.0f; - result->m[2] = 0.0f; - result->m[3] = 0.0f; - result->m[4] = 0.0f; - result->m[5] = 1.0f; - result->m[6] = 0.0f; - result->m[7] = 0.0f; - result->m[8] = 0.0f; - result->m[9] = 0.0f; - result->m[10] = 1.0f; - result->m[11] = 0.0f; - result->m[12] = x; - result->m[13] = y; - result->m[14] = z; - result->m[15] = 1.0f; -} - -// Creates a rotation matrix. -// If -Z=forward, +Y=up, +X=right, then radiansX=pitch, radiansY=yaw, radiansZ=roll. -inline static void XrMatrix4x4f_CreateRotationRadians(XrMatrix4x4f* result, const float radiansX, const float radiansY, - const float radiansZ) { - const float sinX = sinf(radiansX); - const float cosX = cosf(radiansX); - const XrMatrix4x4f rotationX = {{1, 0, 0, 0, 0, cosX, sinX, 0, 0, -sinX, cosX, 0, 0, 0, 0, 1}}; - const float sinY = sinf(radiansY); - const float cosY = cosf(radiansY); - const XrMatrix4x4f rotationY = {{cosY, 0, -sinY, 0, 0, 1, 0, 0, sinY, 0, cosY, 0, 0, 0, 0, 1}}; - const float sinZ = sinf(radiansZ); - const float cosZ = cosf(radiansZ); - const XrMatrix4x4f rotationZ = {{cosZ, sinZ, 0, 0, -sinZ, cosZ, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1}}; - XrMatrix4x4f rotationXY; - XrMatrix4x4f_Multiply(&rotationXY, &rotationY, &rotationX); - XrMatrix4x4f_Multiply(result, &rotationZ, &rotationXY); -} - -// Creates a rotation matrix. -// If -Z=forward, +Y=up, +X=right, then degreesX=pitch, degreesY=yaw, degreesZ=roll. -inline static void XrMatrix4x4f_CreateRotation(XrMatrix4x4f* result, const float degreesX, const float degreesY, - const float degreesZ) { - XrMatrix4x4f_CreateRotationRadians(result, degreesX * (MATH_PI / 180.0f), degreesY * (MATH_PI / 180.0f), - degreesZ * (MATH_PI / 180.0f)); -} - -// Creates a scale matrix. -inline static void XrMatrix4x4f_CreateScale(XrMatrix4x4f* result, const float x, const float y, const float z) { - result->m[0] = x; - result->m[1] = 0.0f; - result->m[2] = 0.0f; - result->m[3] = 0.0f; - result->m[4] = 0.0f; - result->m[5] = y; - result->m[6] = 0.0f; - result->m[7] = 0.0f; - result->m[8] = 0.0f; - result->m[9] = 0.0f; - result->m[10] = z; - result->m[11] = 0.0f; - result->m[12] = 0.0f; - result->m[13] = 0.0f; - result->m[14] = 0.0f; - result->m[15] = 1.0f; -} - -// Creates a matrix from a quaternion. -inline static void XrMatrix4x4f_CreateFromQuaternion(XrMatrix4x4f* result, const XrQuaternionf* quat) { - const float x2 = quat->x + quat->x; - const float y2 = quat->y + quat->y; - const float z2 = quat->z + quat->z; - - const float xx2 = quat->x * x2; - const float yy2 = quat->y * y2; - const float zz2 = quat->z * z2; - - const float yz2 = quat->y * z2; - const float wx2 = quat->w * x2; - const float xy2 = quat->x * y2; - const float wz2 = quat->w * z2; - const float xz2 = quat->x * z2; - const float wy2 = quat->w * y2; - - result->m[0] = 1.0f - yy2 - zz2; - result->m[1] = xy2 + wz2; - result->m[2] = xz2 - wy2; - result->m[3] = 0.0f; - - result->m[4] = xy2 - wz2; - result->m[5] = 1.0f - xx2 - zz2; - result->m[6] = yz2 + wx2; - result->m[7] = 0.0f; - - result->m[8] = xz2 + wy2; - result->m[9] = yz2 - wx2; - result->m[10] = 1.0f - xx2 - yy2; - result->m[11] = 0.0f; - - result->m[12] = 0.0f; - result->m[13] = 0.0f; - result->m[14] = 0.0f; - result->m[15] = 1.0f; -} - -// Creates a combined translation(rotation(scale(object))) matrix. -inline static void XrMatrix4x4f_CreateTranslationRotationScale(XrMatrix4x4f* result, const XrVector3f* translation, - const XrQuaternionf* rotation, const XrVector3f* scale) { - XrMatrix4x4f scaleMatrix; - XrMatrix4x4f_CreateScale(&scaleMatrix, scale->x, scale->y, scale->z); - - XrMatrix4x4f rotationMatrix; - XrMatrix4x4f_CreateFromQuaternion(&rotationMatrix, rotation); - - XrMatrix4x4f translationMatrix; - XrMatrix4x4f_CreateTranslation(&translationMatrix, translation->x, translation->y, translation->z); - - XrMatrix4x4f combinedMatrix; - XrMatrix4x4f_Multiply(&combinedMatrix, &rotationMatrix, &scaleMatrix); - XrMatrix4x4f_Multiply(result, &translationMatrix, &combinedMatrix); -} - -inline static void XrMatrix4x4f_CreateFromRigidTransform(XrMatrix4x4f* result, const XrPosef* s) { - const XrVector3f identityScale = {1.0f, 1.0f, 1.0f}; - XrMatrix4x4f_CreateTranslationRotationScale(result, &s->position, &s->orientation, &identityScale); -} - -// Creates a projection matrix based on the specified dimensions. -// The projection matrix transforms -Z=forward, +Y=up, +X=right to the appropriate clip space for the graphics API. -// The far plane is placed at infinity if farZ <= nearZ. -// An infinite projection matrix is preferred for rasterization because, except for -// things *right* up against the near plane, it always provides better precision: -// "Tightening the Precision of Perspective Rendering" -// Paul Upchurch, Mathieu Desbrun -// Journal of Graphics Tools, Volume 16, Issue 1, 2012 -inline static void XrMatrix4x4f_CreateProjection(XrMatrix4x4f* result, GraphicsAPI graphicsApi, const float tanAngleLeft, - const float tanAngleRight, const float tanAngleUp, float const tanAngleDown, - const float nearZ, const float farZ) { - const float tanAngleWidth = tanAngleRight - tanAngleLeft; - - // Set to tanAngleDown - tanAngleUp for a clip space with positive Y down (Vulkan). - // Set to tanAngleUp - tanAngleDown for a clip space with positive Y up (OpenGL / D3D / Metal). - const float tanAngleHeight = graphicsApi == GRAPHICS_VULKAN ? (tanAngleDown - tanAngleUp) : (tanAngleUp - tanAngleDown); - - // Set to nearZ for a [-1,1] Z clip space (OpenGL / OpenGL ES). - // Set to zero for a [0,1] Z clip space (Vulkan / D3D / Metal). - const float offsetZ = (graphicsApi == GRAPHICS_OPENGL || graphicsApi == GRAPHICS_OPENGL_ES) ? nearZ : 0; - - if (farZ <= nearZ) { - // place the far plane at infinity - result->m[0] = 2.0f / tanAngleWidth; - result->m[4] = 0.0f; - result->m[8] = (tanAngleRight + tanAngleLeft) / tanAngleWidth; - result->m[12] = 0.0f; - - result->m[1] = 0.0f; - result->m[5] = 2.0f / tanAngleHeight; - result->m[9] = (tanAngleUp + tanAngleDown) / tanAngleHeight; - result->m[13] = 0.0f; - - result->m[2] = 0.0f; - result->m[6] = 0.0f; - result->m[10] = -1.0f; - result->m[14] = -(nearZ + offsetZ); - - result->m[3] = 0.0f; - result->m[7] = 0.0f; - result->m[11] = -1.0f; - result->m[15] = 0.0f; - } else { - // normal projection - result->m[0] = 2.0f / tanAngleWidth; - result->m[4] = 0.0f; - result->m[8] = (tanAngleRight + tanAngleLeft) / tanAngleWidth; - result->m[12] = 0.0f; - - result->m[1] = 0.0f; - result->m[5] = 2.0f / tanAngleHeight; - result->m[9] = (tanAngleUp + tanAngleDown) / tanAngleHeight; - result->m[13] = 0.0f; - - result->m[2] = 0.0f; - result->m[6] = 0.0f; - result->m[10] = -(farZ + offsetZ) / (farZ - nearZ); - result->m[14] = -(farZ * (nearZ + offsetZ)) / (farZ - nearZ); - - result->m[3] = 0.0f; - result->m[7] = 0.0f; - result->m[11] = -1.0f; - result->m[15] = 0.0f; - } -} - -// Creates a projection matrix based on the specified FOV. -inline static void XrMatrix4x4f_CreateProjectionFov(XrMatrix4x4f* result, GraphicsAPI graphicsApi, const XrFovf fov, - const float nearZ, const float farZ) { - const float tanLeft = tanf(fov.angleLeft); - const float tanRight = tanf(fov.angleRight); - - const float tanDown = tanf(fov.angleDown); - const float tanUp = tanf(fov.angleUp); - - XrMatrix4x4f_CreateProjection(result, graphicsApi, tanLeft, tanRight, tanUp, tanDown, nearZ, farZ); -} - -// Creates a matrix that transforms the -1 to 1 cube to cover the given 'mins' and 'maxs' transformed with the given 'matrix'. -inline static void XrMatrix4x4f_CreateOffsetScaleForBounds(XrMatrix4x4f* result, const XrMatrix4x4f* matrix, const XrVector3f* mins, - const XrVector3f* maxs) { - const XrVector3f offset = {(maxs->x + mins->x) * 0.5f, (maxs->y + mins->y) * 0.5f, (maxs->z + mins->z) * 0.5f}; - const XrVector3f scale = {(maxs->x - mins->x) * 0.5f, (maxs->y - mins->y) * 0.5f, (maxs->z - mins->z) * 0.5f}; - - result->m[0] = matrix->m[0] * scale.x; - result->m[1] = matrix->m[1] * scale.x; - result->m[2] = matrix->m[2] * scale.x; - result->m[3] = matrix->m[3] * scale.x; - - result->m[4] = matrix->m[4] * scale.y; - result->m[5] = matrix->m[5] * scale.y; - result->m[6] = matrix->m[6] * scale.y; - result->m[7] = matrix->m[7] * scale.y; - - result->m[8] = matrix->m[8] * scale.z; - result->m[9] = matrix->m[9] * scale.z; - result->m[10] = matrix->m[10] * scale.z; - result->m[11] = matrix->m[11] * scale.z; - - result->m[12] = matrix->m[12] + matrix->m[0] * offset.x + matrix->m[4] * offset.y + matrix->m[8] * offset.z; - result->m[13] = matrix->m[13] + matrix->m[1] * offset.x + matrix->m[5] * offset.y + matrix->m[9] * offset.z; - result->m[14] = matrix->m[14] + matrix->m[2] * offset.x + matrix->m[6] * offset.y + matrix->m[10] * offset.z; - result->m[15] = matrix->m[15] + matrix->m[3] * offset.x + matrix->m[7] * offset.y + matrix->m[11] * offset.z; -} - -// Returns true if the given matrix is affine. -inline static bool XrMatrix4x4f_IsAffine(const XrMatrix4x4f* matrix, const float epsilon) { - return fabsf(matrix->m[3]) <= epsilon && fabsf(matrix->m[7]) <= epsilon && fabsf(matrix->m[11]) <= epsilon && - fabsf(matrix->m[15] - 1.0f) <= epsilon; -} - -// Returns true if the given matrix is orthogonal. -inline static bool XrMatrix4x4f_IsOrthogonal(const XrMatrix4x4f* matrix, const float epsilon) { - for (int i = 0; i < 3; i++) { - for (int j = 0; j < 3; j++) { - if (i != j) { - if (fabsf(matrix->m[4 * i + 0] * matrix->m[4 * j + 0] + matrix->m[4 * i + 1] * matrix->m[4 * j + 1] + - matrix->m[4 * i + 2] * matrix->m[4 * j + 2]) > epsilon) { - return false; - } - if (fabsf(matrix->m[4 * 0 + i] * matrix->m[4 * 0 + j] + matrix->m[4 * 1 + i] * matrix->m[4 * 1 + j] + - matrix->m[4 * 2 + i] * matrix->m[4 * 2 + j]) > epsilon) { - return false; - } - } - } - } - return true; -} - -// Returns true if the given matrix is orthonormal. -inline static bool XrMatrix4x4f_IsOrthonormal(const XrMatrix4x4f* matrix, const float epsilon) { - for (int i = 0; i < 3; i++) { - for (int j = 0; j < 3; j++) { - const float kd = (i == j) ? 1.0f : 0.0f; // Kronecker delta - if (fabsf(kd - (matrix->m[4 * i + 0] * matrix->m[4 * j + 0] + matrix->m[4 * i + 1] * matrix->m[4 * j + 1] + - matrix->m[4 * i + 2] * matrix->m[4 * j + 2])) > epsilon) { - return false; - } - if (fabsf(kd - (matrix->m[4 * 0 + i] * matrix->m[4 * 0 + j] + matrix->m[4 * 1 + i] * matrix->m[4 * 1 + j] + - matrix->m[4 * 2 + i] * matrix->m[4 * 2 + j])) > epsilon) { - return false; - } - } - } - return true; -} - -// Returns true if the given matrix is a rigid body transform. -inline static bool XrMatrix4x4f_IsRigidBody(const XrMatrix4x4f* matrix, const float epsilon) { - return XrMatrix4x4f_IsAffine(matrix, epsilon) && XrMatrix4x4f_IsOrthonormal(matrix, epsilon); -} - -// Get the translation from a combined translation(rotation(scale(object))) matrix. -inline static void XrMatrix4x4f_GetTranslation(XrVector3f* result, const XrMatrix4x4f* src) { - assert(XrMatrix4x4f_IsAffine(src, 1e-4f)); - assert(XrMatrix4x4f_IsOrthogonal(src, 1e-4f)); - - result->x = src->m[12]; - result->y = src->m[13]; - result->z = src->m[14]; -} - -// Get the rotation from a combined translation(rotation(scale(object))) matrix. -inline static void XrMatrix4x4f_GetRotation(XrQuaternionf* result, const XrMatrix4x4f* src) { - assert(XrMatrix4x4f_IsAffine(src, 1e-4f)); - assert(XrMatrix4x4f_IsOrthogonal(src, 1e-4f)); - - const float rcpScaleX = XrRcpSqrt(src->m[0] * src->m[0] + src->m[1] * src->m[1] + src->m[2] * src->m[2]); - const float rcpScaleY = XrRcpSqrt(src->m[4] * src->m[4] + src->m[5] * src->m[5] + src->m[6] * src->m[6]); - const float rcpScaleZ = XrRcpSqrt(src->m[8] * src->m[8] + src->m[9] * src->m[9] + src->m[10] * src->m[10]); - const float m[9] = {src->m[0] * rcpScaleX, src->m[1] * rcpScaleX, src->m[2] * rcpScaleX, - src->m[4] * rcpScaleY, src->m[5] * rcpScaleY, src->m[6] * rcpScaleY, - src->m[8] * rcpScaleZ, src->m[9] * rcpScaleZ, src->m[10] * rcpScaleZ}; - if (m[0 * 3 + 0] + m[1 * 3 + 1] + m[2 * 3 + 2] > 0.0f) { - float t = +m[0 * 3 + 0] + m[1 * 3 + 1] + m[2 * 3 + 2] + 1.0f; - float s = XrRcpSqrt(t) * 0.5f; - result->w = s * t; - result->z = (m[0 * 3 + 1] - m[1 * 3 + 0]) * s; - result->y = (m[2 * 3 + 0] - m[0 * 3 + 2]) * s; - result->x = (m[1 * 3 + 2] - m[2 * 3 + 1]) * s; - } else if (m[0 * 3 + 0] > m[1 * 3 + 1] && m[0 * 3 + 0] > m[2 * 3 + 2]) { - float t = +m[0 * 3 + 0] - m[1 * 3 + 1] - m[2 * 3 + 2] + 1.0f; - float s = XrRcpSqrt(t) * 0.5f; - result->x = s * t; - result->y = (m[0 * 3 + 1] + m[1 * 3 + 0]) * s; - result->z = (m[2 * 3 + 0] + m[0 * 3 + 2]) * s; - result->w = (m[1 * 3 + 2] - m[2 * 3 + 1]) * s; - } else if (m[1 * 3 + 1] > m[2 * 3 + 2]) { - float t = -m[0 * 3 + 0] + m[1 * 3 + 1] - m[2 * 3 + 2] + 1.0f; - float s = XrRcpSqrt(t) * 0.5f; - result->y = s * t; - result->x = (m[0 * 3 + 1] + m[1 * 3 + 0]) * s; - result->w = (m[2 * 3 + 0] - m[0 * 3 + 2]) * s; - result->z = (m[1 * 3 + 2] + m[2 * 3 + 1]) * s; - } else { - float t = -m[0 * 3 + 0] - m[1 * 3 + 1] + m[2 * 3 + 2] + 1.0f; - float s = XrRcpSqrt(t) * 0.5f; - result->z = s * t; - result->w = (m[0 * 3 + 1] - m[1 * 3 + 0]) * s; - result->x = (m[2 * 3 + 0] + m[0 * 3 + 2]) * s; - result->y = (m[1 * 3 + 2] + m[2 * 3 + 1]) * s; - } -} - -// Get the scale from a combined translation(rotation(scale(object))) matrix. -inline static void XrMatrix4x4f_GetScale(XrVector3f* result, const XrMatrix4x4f* src) { - assert(XrMatrix4x4f_IsAffine(src, 1e-4f)); - assert(XrMatrix4x4f_IsOrthogonal(src, 1e-4f)); - - result->x = sqrtf(src->m[0] * src->m[0] + src->m[1] * src->m[1] + src->m[2] * src->m[2]); - result->y = sqrtf(src->m[4] * src->m[4] + src->m[5] * src->m[5] + src->m[6] * src->m[6]); - result->z = sqrtf(src->m[8] * src->m[8] + src->m[9] * src->m[9] + src->m[10] * src->m[10]); -} - -// Transforms a 3D vector. -inline static void XrMatrix4x4f_TransformVector3f(XrVector3f* result, const XrMatrix4x4f* m, const XrVector3f* v) { - const float w = m->m[3] * v->x + m->m[7] * v->y + m->m[11] * v->z + m->m[15]; - const float rcpW = 1.0f / w; - result->x = (m->m[0] * v->x + m->m[4] * v->y + m->m[8] * v->z + m->m[12]) * rcpW; - result->y = (m->m[1] * v->x + m->m[5] * v->y + m->m[9] * v->z + m->m[13]) * rcpW; - result->z = (m->m[2] * v->x + m->m[6] * v->y + m->m[10] * v->z + m->m[14]) * rcpW; -} - -// Transforms a 4D vector. -inline static void XrMatrix4x4f_TransformVector4f(XrVector4f* result, const XrMatrix4x4f* m, const XrVector4f* v) { - result->x = m->m[0] * v->x + m->m[4] * v->y + m->m[8] * v->z + m->m[12] * v->w; - result->y = m->m[1] * v->x + m->m[5] * v->y + m->m[9] * v->z + m->m[13] * v->w; - result->z = m->m[2] * v->x + m->m[6] * v->y + m->m[10] * v->z + m->m[14] * v->w; - result->w = m->m[3] * v->x + m->m[7] * v->y + m->m[11] * v->z + m->m[15] * v->w; -} - -// Transforms the 'mins' and 'maxs' bounds with the given 'matrix'. -inline static void XrMatrix4x4f_TransformBounds(XrVector3f* resultMins, XrVector3f* resultMaxs, const XrMatrix4x4f* matrix, - const XrVector3f* mins, const XrVector3f* maxs) { - assert(XrMatrix4x4f_IsAffine(matrix, 1e-4f)); - - const XrVector3f center = {(mins->x + maxs->x) * 0.5f, (mins->y + maxs->y) * 0.5f, (mins->z + maxs->z) * 0.5f}; - const XrVector3f extents = {maxs->x - center.x, maxs->y - center.y, maxs->z - center.z}; - const XrVector3f newCenter = {matrix->m[0] * center.x + matrix->m[4] * center.y + matrix->m[8] * center.z + matrix->m[12], - matrix->m[1] * center.x + matrix->m[5] * center.y + matrix->m[9] * center.z + matrix->m[13], - matrix->m[2] * center.x + matrix->m[6] * center.y + matrix->m[10] * center.z + matrix->m[14]}; - const XrVector3f newExtents = { - fabsf(extents.x * matrix->m[0]) + fabsf(extents.y * matrix->m[4]) + fabsf(extents.z * matrix->m[8]), - fabsf(extents.x * matrix->m[1]) + fabsf(extents.y * matrix->m[5]) + fabsf(extents.z * matrix->m[9]), - fabsf(extents.x * matrix->m[2]) + fabsf(extents.y * matrix->m[6]) + fabsf(extents.z * matrix->m[10])}; - XrVector3f_Sub(resultMins, &newCenter, &newExtents); - XrVector3f_Add(resultMaxs, &newCenter, &newExtents); -} - -// Returns true if the 'mins' and 'maxs' bounds is completely off to one side of the projection matrix. -inline static bool XrMatrix4x4f_CullBounds(const XrMatrix4x4f* mvp, const XrVector3f* mins, const XrVector3f* maxs) { - if (maxs->x <= mins->x && maxs->y <= mins->y && maxs->z <= mins->z) { - return false; - } - - XrVector4f c[8]; - for (int i = 0; i < 8; i++) { - const XrVector4f corner = {(i & 1) != 0 ? maxs->x : mins->x, (i & 2) != 0 ? maxs->y : mins->y, - (i & 4) != 0 ? maxs->z : mins->z, 1.0f}; - XrMatrix4x4f_TransformVector4f(&c[i], mvp, &corner); - } - - int i; - for (i = 0; i < 8; i++) { - if (c[i].x > -c[i].w) { - break; - } - } - if (i == 8) { - return true; - } - for (i = 0; i < 8; i++) { - if (c[i].x < c[i].w) { - break; - } - } - if (i == 8) { - return true; - } - - for (i = 0; i < 8; i++) { - if (c[i].y > -c[i].w) { - break; - } - } - if (i == 8) { - return true; - } - for (i = 0; i < 8; i++) { - if (c[i].y < c[i].w) { - break; - } - } - if (i == 8) { - return true; - } - for (i = 0; i < 8; i++) { - if (c[i].z > -c[i].w) { - break; - } - } - if (i == 8) { - return true; - } - for (i = 0; i < 8; i++) { - if (c[i].z < c[i].w) { - break; - } - } - return i == 8; -} - -#endif // XR_LINEAR_H_ diff --git a/Plugins/MetaXR/Source/Thirdparty/MRUtilityKitShared/LICENSES/Boost.txt b/Plugins/MetaXR/Source/Thirdparty/MRUtilityKitShared/LICENSES/Boost.txt deleted file mode 100644 index 36b7cd9..0000000 --- a/Plugins/MetaXR/Source/Thirdparty/MRUtilityKitShared/LICENSES/Boost.txt +++ /dev/null @@ -1,23 +0,0 @@ -Boost Software License - Version 1.0 - August 17th, 2003 - -Permission is hereby granted, free of charge, to any person or organization -obtaining a copy of the software and accompanying documentation covered by -this license (the "Software") to use, reproduce, display, distribute, -execute, and transmit the Software, and to prepare derivative works of the -Software, and to permit third-parties to whom the Software is furnished to -do so, all subject to the following: - -The copyright notices in the Software and this entire statement, including -the above license grant, this restriction and the following disclaimer, -must be included in all copies of the Software, in whole or in part, and -all derivative works of the Software, unless such copies or derivative -works are solely in the form of machine-executable object code generated by -a source language processor. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE, TITLE AND NON-INFRINGEMENT. IN NO EVENT -SHALL THE COPYRIGHT HOLDERS OR ANYONE DISTRIBUTING THE SOFTWARE BE LIABLE -FOR ANY DAMAGES OR OTHER LIABILITY, WHETHER IN 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/Plugins/MetaXR/Source/Thirdparty/MRUtilityKitShared/LICENSES/ISC.txt b/Plugins/MetaXR/Source/Thirdparty/MRUtilityKitShared/LICENSES/ISC.txt deleted file mode 100644 index 8bafb57..0000000 --- a/Plugins/MetaXR/Source/Thirdparty/MRUtilityKitShared/LICENSES/ISC.txt +++ /dev/null @@ -1,15 +0,0 @@ -ISC License - -Copyright (c) 2015, Mapbox - -Permission to use, copy, modify, and/or distribute this software for any purpose -with or without fee is hereby granted, provided that the above copyright notice -and this permission notice appear in all copies. - -THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH -REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND -FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, -INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS -OF USE, DATA OR PROFITS, WHETHER 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/Plugins/MetaXR/Source/Thirdparty/MRUtilityKitShared/LICENSES/MPL2.txt b/Plugins/MetaXR/Source/Thirdparty/MRUtilityKitShared/LICENSES/MPL2.txt deleted file mode 100644 index a612ad9..0000000 --- a/Plugins/MetaXR/Source/Thirdparty/MRUtilityKitShared/LICENSES/MPL2.txt +++ /dev/null @@ -1,373 +0,0 @@ -Mozilla Public License Version 2.0 -================================== - -1. Definitions --------------- - -1.1. "Contributor" - means each individual or legal entity that creates, contributes to - the creation of, or owns Covered Software. - -1.2. "Contributor Version" - means the combination of the Contributions of others (if any) used - by a Contributor and that particular Contributor's Contribution. - -1.3. "Contribution" - means Covered Software of a particular Contributor. - -1.4. "Covered Software" - means Source Code Form to which the initial Contributor has attached - the notice in Exhibit A, the Executable Form of such Source Code - Form, and Modifications of such Source Code Form, in each case - including portions thereof. - -1.5. "Incompatible With Secondary Licenses" - means - - (a) that the initial Contributor has attached the notice described - in Exhibit B to the Covered Software; or - - (b) that the Covered Software was made available under the terms of - version 1.1 or earlier of the License, but not also under the - terms of a Secondary License. - -1.6. "Executable Form" - means any form of the work other than Source Code Form. - -1.7. "Larger Work" - means a work that combines Covered Software with other material, in - a separate file or files, that is not Covered Software. - -1.8. "License" - means this document. - -1.9. "Licensable" - means having the right to grant, to the maximum extent possible, - whether at the time of the initial grant or subsequently, any and - all of the rights conveyed by this License. - -1.10. "Modifications" - means any of the following: - - (a) any file in Source Code Form that results from an addition to, - deletion from, or modification of the contents of Covered - Software; or - - (b) any new file in Source Code Form that contains any Covered - Software. - -1.11. "Patent Claims" of a Contributor - means any patent claim(s), including without limitation, method, - process, and apparatus claims, in any patent Licensable by such - Contributor that would be infringed, but for the grant of the - License, by the making, using, selling, offering for sale, having - made, import, or transfer of either its Contributions or its - Contributor Version. - -1.12. "Secondary License" - means either the GNU General Public License, Version 2.0, the GNU - Lesser General Public License, Version 2.1, the GNU Affero General - Public License, Version 3.0, or any later versions of those - licenses. - -1.13. "Source Code Form" - means the form of the work preferred for making modifications. - -1.14. "You" (or "Your") - means an individual or a legal entity exercising rights under this - License. For legal entities, "You" includes any entity that - controls, is controlled by, or is under common control with You. For - purposes of this definition, "control" means (a) the power, direct - or indirect, to cause the direction or management of such entity, - whether by contract or otherwise, or (b) ownership of more than - fifty percent (50%) of the outstanding shares or beneficial - ownership of such entity. - -2. License Grants and Conditions --------------------------------- - -2.1. Grants - -Each Contributor hereby grants You a world-wide, royalty-free, -non-exclusive license: - -(a) under intellectual property rights (other than patent or trademark) - Licensable by such Contributor to use, reproduce, make available, - modify, display, perform, distribute, and otherwise exploit its - Contributions, either on an unmodified basis, with Modifications, or - as part of a Larger Work; and - -(b) under Patent Claims of such Contributor to make, use, sell, offer - for sale, have made, import, and otherwise transfer either its - Contributions or its Contributor Version. - -2.2. Effective Date - -The licenses granted in Section 2.1 with respect to any Contribution -become effective for each Contribution on the date the Contributor first -distributes such Contribution. - -2.3. Limitations on Grant Scope - -The licenses granted in this Section 2 are the only rights granted under -this License. No additional rights or licenses will be implied from the -distribution or licensing of Covered Software under this License. -Notwithstanding Section 2.1(b) above, no patent license is granted by a -Contributor: - -(a) for any code that a Contributor has removed from Covered Software; - or - -(b) for infringements caused by: (i) Your and any other third party's - modifications of Covered Software, or (ii) the combination of its - Contributions with other software (except as part of its Contributor - Version); or - -(c) under Patent Claims infringed by Covered Software in the absence of - its Contributions. - -This License does not grant any rights in the trademarks, service marks, -or logos of any Contributor (except as may be necessary to comply with -the notice requirements in Section 3.4). - -2.4. Subsequent Licenses - -No Contributor makes additional grants as a result of Your choice to -distribute the Covered Software under a subsequent version of this -License (see Section 10.2) or under the terms of a Secondary License (if -permitted under the terms of Section 3.3). - -2.5. Representation - -Each Contributor represents that the Contributor believes its -Contributions are its original creation(s) or it has sufficient rights -to grant the rights to its Contributions conveyed by this License. - -2.6. Fair Use - -This License is not intended to limit any rights You have under -applicable copyright doctrines of fair use, fair dealing, or other -equivalents. - -2.7. Conditions - -Sections 3.1, 3.2, 3.3, and 3.4 are conditions of the licenses granted -in Section 2.1. - -3. Responsibilities -------------------- - -3.1. Distribution of Source Form - -All distribution of Covered Software in Source Code Form, including any -Modifications that You create or to which You contribute, must be under -the terms of this License. You must inform recipients that the Source -Code Form of the Covered Software is governed by the terms of this -License, and how they can obtain a copy of this License. You may not -attempt to alter or restrict the recipients' rights in the Source Code -Form. - -3.2. Distribution of Executable Form - -If You distribute Covered Software in Executable Form then: - -(a) such Covered Software must also be made available in Source Code - Form, as described in Section 3.1, and You must inform recipients of - the Executable Form how they can obtain a copy of such Source Code - Form by reasonable means in a timely manner, at a charge no more - than the cost of distribution to the recipient; and - -(b) You may distribute such Executable Form under the terms of this - License, or sublicense it under different terms, provided that the - license for the Executable Form does not attempt to limit or alter - the recipients' rights in the Source Code Form under this License. - -3.3. Distribution of a Larger Work - -You may create and distribute a Larger Work under terms of Your choice, -provided that You also comply with the requirements of this License for -the Covered Software. If the Larger Work is a combination of Covered -Software with a work governed by one or more Secondary Licenses, and the -Covered Software is not Incompatible With Secondary Licenses, this -License permits You to additionally distribute such Covered Software -under the terms of such Secondary License(s), so that the recipient of -the Larger Work may, at their option, further distribute the Covered -Software under the terms of either this License or such Secondary -License(s). - -3.4. Notices - -You may not remove or alter the substance of any license notices -(including copyright notices, patent notices, disclaimers of warranty, -or limitations of liability) contained within the Source Code Form of -the Covered Software, except that You may alter any license notices to -the extent required to remedy known factual inaccuracies. - -3.5. Application of Additional Terms - -You may choose to offer, and to charge a fee for, warranty, support, -indemnity or liability obligations to one or more recipients of Covered -Software. However, You may do so only on Your own behalf, and not on -behalf of any Contributor. You must make it absolutely clear that any -such warranty, support, indemnity, or liability obligation is offered by -You alone, and You hereby agree to indemnify every Contributor for any -liability incurred by such Contributor as a result of warranty, support, -indemnity or liability terms You offer. You may include additional -disclaimers of warranty and limitations of liability specific to any -jurisdiction. - -4. Inability to Comply Due to Statute or Regulation ---------------------------------------------------- - -If it is impossible for You to comply with any of the terms of this -License with respect to some or all of the Covered Software due to -statute, judicial order, or regulation then You must: (a) comply with -the terms of this License to the maximum extent possible; and (b) -describe the limitations and the code they affect. Such description must -be placed in a text file included with all distributions of the Covered -Software under this License. Except to the extent prohibited by statute -or regulation, such description must be sufficiently detailed for a -recipient of ordinary skill to be able to understand it. - -5. Termination --------------- - -5.1. The rights granted under this License will terminate automatically -if You fail to comply with any of its terms. However, if You become -compliant, then the rights granted under this License from a particular -Contributor are reinstated (a) provisionally, unless and until such -Contributor explicitly and finally terminates Your grants, and (b) on an -ongoing basis, if such Contributor fails to notify You of the -non-compliance by some reasonable means prior to 60 days after You have -come back into compliance. Moreover, Your grants from a particular -Contributor are reinstated on an ongoing basis if such Contributor -notifies You of the non-compliance by some reasonable means, this is the -first time You have received notice of non-compliance with this License -from such Contributor, and You become compliant prior to 30 days after -Your receipt of the notice. - -5.2. If You initiate litigation against any entity by asserting a patent -infringement claim (excluding declaratory judgment actions, -counter-claims, and cross-claims) alleging that a Contributor Version -directly or indirectly infringes any patent, then the rights granted to -You by any and all Contributors for the Covered Software under Section -2.1 of this License shall terminate. - -5.3. In the event of termination under Sections 5.1 or 5.2 above, all -end user license agreements (excluding distributors and resellers) which -have been validly granted by You or Your distributors under this License -prior to termination shall survive termination. - -************************************************************************ -* * -* 6. Disclaimer of Warranty * -* ------------------------- * -* * -* Covered Software is provided under this License on an "as is" * -* basis, without warranty of any kind, either expressed, implied, or * -* statutory, including, without limitation, warranties that the * -* Covered Software is free of defects, merchantable, fit for a * -* particular purpose or non-infringing. The entire risk as to the * -* quality and performance of the Covered Software is with You. * -* Should any Covered Software prove defective in any respect, You * -* (not any Contributor) assume the cost of any necessary servicing, * -* repair, or correction. This disclaimer of warranty constitutes an * -* essential part of this License. No use of any Covered Software is * -* authorized under this License except under this disclaimer. * -* * -************************************************************************ - -************************************************************************ -* * -* 7. Limitation of Liability * -* -------------------------- * -* * -* Under no circumstances and under no legal theory, whether tort * -* (including negligence), contract, or otherwise, shall any * -* Contributor, or anyone who distributes Covered Software as * -* permitted above, be liable to You for any direct, indirect, * -* special, incidental, or consequential damages of any character * -* including, without limitation, damages for lost profits, loss of * -* goodwill, work stoppage, computer failure or malfunction, or any * -* and all other commercial damages or losses, even if such party * -* shall have been informed of the possibility of such damages. This * -* limitation of liability shall not apply to liability for death or * -* personal injury resulting from such party's negligence to the * -* extent applicable law prohibits such limitation. Some * -* jurisdictions do not allow the exclusion or limitation of * -* incidental or consequential damages, so this exclusion and * -* limitation may not apply to You. * -* * -************************************************************************ - -8. Litigation -------------- - -Any litigation relating to this License may be brought only in the -courts of a jurisdiction where the defendant maintains its principal -place of business and such litigation shall be governed by laws of that -jurisdiction, without reference to its conflict-of-law provisions. -Nothing in this Section shall prevent a party's ability to bring -cross-claims or counter-claims. - -9. Miscellaneous ----------------- - -This License represents the complete agreement concerning the subject -matter hereof. If any provision of this License is held to be -unenforceable, such provision shall be reformed only to the extent -necessary to make it enforceable. Any law or regulation which provides -that the language of a contract shall be construed against the drafter -shall not be used to construe this License against a Contributor. - -10. Versions of the License ---------------------------- - -10.1. New Versions - -Mozilla Foundation is the license steward. Except as provided in Section -10.3, no one other than the license steward has the right to modify or -publish new versions of this License. Each version will be given a -distinguishing version number. - -10.2. Effect of New Versions - -You may distribute the Covered Software under the terms of the version -of the License under which You originally received the Covered Software, -or under the terms of any subsequent version published by the license -steward. - -10.3. Modified Versions - -If you create software not governed by this License, and you want to -create a new license for such software, you may create and use a -modified version of this License if you rename the license and remove -any references to the name of the license steward (except to note that -such modified license differs from this License). - -10.4. Distributing Source Code Form that is Incompatible With Secondary -Licenses - -If You choose to distribute Source Code Form that is Incompatible With -Secondary Licenses under the terms of this version of the License, the -notice described in Exhibit B of this License must be attached. - -Exhibit A - Source Code Form License Notice -------------------------------------------- - - This Source Code Form is subject to the terms of the Mozilla Public - License, v. 2.0. If a copy of the MPL was not distributed with this - file, You can obtain one at http://mozilla.org/MPL/2.0/. - -If it is not possible or desirable to put the notice in a particular -file, then You may include the notice in a location (such as a LICENSE -file in a relevant directory) where a recipient would be likely to look -for such a notice. - -You may add additional accurate notices of copyright ownership. - -Exhibit B - "Incompatible With Secondary Licenses" Notice ---------------------------------------------------------- - - This Source Code Form is "Incompatible With Secondary Licenses", as - defined by the Mozilla Public License, v. 2.0. diff --git a/Plugins/MetaXR/Source/Thirdparty/MRUtilityKitShared/LICENSES/nlohmann-json.txt b/Plugins/MetaXR/Source/Thirdparty/MRUtilityKitShared/LICENSES/nlohmann-json.txt deleted file mode 100644 index 1c1f7a6..0000000 --- a/Plugins/MetaXR/Source/Thirdparty/MRUtilityKitShared/LICENSES/nlohmann-json.txt +++ /dev/null @@ -1,21 +0,0 @@ -MIT License - -Copyright (c) 2013-2022 Niels Lohmann - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to 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/Plugins/MetaXR/Source/Thirdparty/MRUtilityKitShared/Lib/Win64/mrutilitykitshared.dll b/Plugins/MetaXR/Source/Thirdparty/MRUtilityKitShared/Lib/Win64/mrutilitykitshared.dll deleted file mode 100644 index 303990a..0000000 Binary files a/Plugins/MetaXR/Source/Thirdparty/MRUtilityKitShared/Lib/Win64/mrutilitykitshared.dll and /dev/null differ diff --git a/Plugins/MetaXR/Source/Thirdparty/MRUtilityKitShared/Lib/arm64-v8a/libmrutilitykitshared.so b/Plugins/MetaXR/Source/Thirdparty/MRUtilityKitShared/Lib/arm64-v8a/libmrutilitykitshared.so deleted file mode 100644 index 0abd12d..0000000 Binary files a/Plugins/MetaXR/Source/Thirdparty/MRUtilityKitShared/Lib/arm64-v8a/libmrutilitykitshared.so and /dev/null differ diff --git a/Plugins/MetaXR/Source/Thirdparty/MRUtilityKitShared/MRUtilityKitShared.build.cs b/Plugins/MetaXR/Source/Thirdparty/MRUtilityKitShared/MRUtilityKitShared.build.cs deleted file mode 100644 index 85f6c53..0000000 --- a/Plugins/MetaXR/Source/Thirdparty/MRUtilityKitShared/MRUtilityKitShared.build.cs +++ /dev/null @@ -1,23 +0,0 @@ -// @lint-ignore-every LICENSELINT -// Copyright Epic Games, Inc. All Rights Reserved. - -using UnrealBuildTool; -using System.IO; - -public class MRUtilityKitShared : ModuleRules -{ - public MRUtilityKitShared(ReadOnlyTargetRules Target) : base(Target) - { - Type = ModuleType.External; - - if (Target.Platform == UnrealTargetPlatform.Android) - { - // MRUtilityKit_APL.xml is reponsible for copying over the .so library - AdditionalPropertiesForReceipt.Add("AndroidPlugin", Path.Combine(ModuleDirectory, "MRUtilityKit_APL.xml")); - } - else if (Target.Platform == UnrealTargetPlatform.Win64) - { - RuntimeDependencies.Add(Path.Combine(ModuleDirectory, "Lib/Win64/mrutilitykitshared.dll")); - } - } -} diff --git a/Plugins/MetaXR/Source/Thirdparty/MRUtilityKitShared/MRUtilityKit_APL.xml b/Plugins/MetaXR/Source/Thirdparty/MRUtilityKitShared/MRUtilityKit_APL.xml deleted file mode 100644 index a1015cf..0000000 --- a/Plugins/MetaXR/Source/Thirdparty/MRUtilityKitShared/MRUtilityKit_APL.xml +++ /dev/null @@ -1,28 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/Plugins/MetaXR/Source/Thirdparty/OVRPlugin/OVRPlugin/Include/OVR_Plugin.h b/Plugins/MetaXR/Source/Thirdparty/OVRPlugin/OVRPlugin/Include/OVR_Plugin.h deleted file mode 100644 index a70e6c7..0000000 --- a/Plugins/MetaXR/Source/Thirdparty/OVRPlugin/OVRPlugin/Include/OVR_Plugin.h +++ /dev/null @@ -1,1403 +0,0 @@ -/* - * Copyright (c) Meta Platforms, Inc. and affiliates. - * All rights reserved. - * - * Licensed under the Oculus SDK License Agreement (the "License"); - * you may not use the Oculus SDK except in compliance with the License, - * which is provided at the time of installation or download, or which - * otherwise accompanies this software in either electronic or hard copy form. - * - * You may obtain a copy of the License at - * - * https://developer.oculus.com/licenses/oculussdk/ - * - * Unless required by applicable law or agreed to in writing, the Oculus SDK - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#ifndef OVR_Plugin_h -#define OVR_Plugin_h - -#include "OVR_Plugin_Types.h" - -// OVR_Plugin.h: Minimal high-level plugin proxy to LibOVR. Use instead of OVR_CAPI.h. -// All functions must be called from the same thread as your graphics device, except as noted. - -#ifdef __cplusplus -extern "C" { -#endif - -// The following macros are only defined when building in UE4 and UE5 -#if ( \ - defined(UE_BUILD_DEBUG) || defined(UE_BUILD_DEVELOPMENT) || defined(UE_BUILD_TEST) || \ - defined(UE_BUILD_SHIPPING)) && \ - defined(PLATFORM_ANDROID) -// OVRPlugin does not support Android system callbacks in UE4 and UE5. -// Please use Optional Mobile Features Blueprint Library Plugin or include FAndroidMisc.h in your project -#define OVRPLUGIN_JNI_LIB_EXCLUDED -#endif - -/// Initializes the Oculus display driver before graphics initialization, if applicable. -OVRP_EXPORT ovrpResult -ovrp_PreInitialize5(void* activity, ovrpRenderAPIType apiType, ovrpPreinitializeFlags preinitializeFlags); - -/// Gets the current initialization state of the Oculus runtime, VR tracking, and graphics -/// resources. -OVRP_EXPORT ovrpBool ovrp_GetInitialized(); - -/// Sets up the Oculus runtime, VR tracking, and graphics resources. -/// You must call this before any other function except ovrp_PreInitialize() or -/// ovrp_GetInitialized(). -/// @note In case of D3D12, d3dDevice is an ID3D12CommandQueue object -OVRP_EXPORT ovrpResult ovrp_Initialize7( - ovrpRenderAPIType apiType, - ovrpLogCallback logCallback, - void* activity, - void* vkInstance, - void* vkPhysicalDevice, - void* vkDevice, - void* vkQueue, - void* vkGetInstanceProcAddr, // PFN_vkGetInstanceProcAddr - unsigned int vkQueueFamilyIndex, - void* d3dDevice, - int initializeFlags, - OVRP_CONSTREF(ovrpVersion) version); - -/// Tears down the Oculus runtime, VR tracking, and graphics resources. -OVRP_EXPORT ovrpResult ovrp_Shutdown2(); - -/// Set a function pointer which captures the OVRPlugin log lines. -OVRP_EXPORT ovrpResult ovrp_SetLogCallback2(ovrpLogCallback2 logFunc); - -/// Gets the version of OVRPlugin currently in use. Format: "major.minor.release" -OVRP_EXPORT ovrpResult ovrp_GetVersion2(char const** version); - -/// Gets the version of the underlying VR SDK currently in use. -OVRP_EXPORT ovrpResult ovrp_GetNativeSDKVersion2(char const** nativeSDKVersion); - -/// Returns a pointer that can be used to access the underlying VR SDK -/// (e.g. ovrSession in CAPI, ovrMobile* in VRAPI, XrSession* in OpenXR). -OVRP_EXPORT ovrpResult ovrp_GetNativeSDKPointer2(void** nativeSDKPointer); - -/// Retrieve the current XR API being used by OVRPlugin -OVRP_EXPORT ovrpResult ovrp_GetNativeXrApiType(ovrpXrApi* xrApi); - -/// Retrive XrInstance / XrSession when OpenXR is being used -OVRP_EXPORT ovrpResult ovrp_GetNativeOpenXRHandles(ovrpUInt64* xrInstance, ovrpUInt64* xrSession); - -/// Retrieves the expected Display Adapter ID associated with the Oculus HMD. -/// On Windows systems, this will return a DX11 LUID, otherwise nullptr. -/// @note ovrp_PreInitialize must be called and return a successful result before calling this -/// function. -OVRP_EXPORT ovrpResult ovrp_GetDisplayAdapterId2(void const** displayAdapterId); - -/// Retrieves the expected audio device ID associated with the Oculus HMD's headphones. -/// On Windows systems, this will return the GUID* for the IMMDevice of an audio endpoint. -/// @note ovrp_PreInitialize must be called and return a successful result before calling this -/// function. -OVRP_EXPORT ovrpResult ovrp_GetAudioOutId2(void const** audioOutId); - -/// Retrieves the expected audio device ID associated with the Oculus HMD's headphones. -/// On Windows systems, this will return a LPCWSTR containing the device identifier. -/// @note ovrp_PreInitialize must be called and return a successful result before calling this -/// function. -OVRP_EXPORT ovrpResult ovrp_GetAudioOutDeviceId2(void const** audioOutDeviceId); - -/// Retrieves the expected audio device ID associated with the Oculus HMD's microphone. -/// On Windows systems, this will return the GUID* for the IMMDevice of an audio endpoint. -/// @note ovrp_PreInitialize must be called and return a successful result before calling this -/// function. -OVRP_EXPORT ovrpResult ovrp_GetAudioInId2(void const** audioInId); - -/// Retrieves the expected audio device ID associated with the Oculus HMD's microphone. -/// On Windows systems, this will return a LPCWSTR containing the device identifier. -/// @note ovrp_PreInitialize must be called and return a successful result before calling this -/// function. -OVRP_EXPORT ovrpResult ovrp_GetAudioInDeviceId2(void const** audioInDeviceId); - -/// Returns an array of pointers to extension names which need to be enabled for the instance -/// in order for the VR runtime to support Vulkan-based applications. -/// @note ovrp_PreInitialize must be called and return a successful result before calling this -/// function. -OVRP_EXPORT ovrpResult ovrp_GetInstanceExtensionsVk(char const** instanceExtensions, int* instanceExtensionCount); - -/// Returns an array of pointers to extension names which need to be enabled for the device -/// in order for the VR runtime to support Vulkan-based applications. -/// @note ovrp_PreInitialize must be called and return a successful result before calling this -/// function. -OVRP_EXPORT ovrpResult ovrp_GetDeviceExtensionsVk(char const** deviceExtensions, int* deviceExtensionCount); - -/// Creates a dedicated window for rendering 3D content to the VR display. -OVRP_EXPORT ovrpResult ovrp_SetupDistortionWindow3(int flags); - -/// Destroys the dedicated VR window. -OVRP_EXPORT ovrpResult ovrp_DestroyDistortionWindow2(); - -// Returns handedness as specified in the mobile device -OVRP_EXPORT ovrpResult ovrp_GetDominantHand(ovrpHandedness* dominantHand); - -/// Used by System Activities application for setting the Remote Handedness. -OVRP_EXPORT ovrpResult ovrp_SetRemoteHandedness(ovrpHandedness handedness); - -// Sets color scale parameters; can be used for effects like fade-to-black. Final pixel color will be multiplied by -// colorScale and added to offset. If applyToAllLayers is false, this applies only for the eyefov layer. If it's true, -// it's for every layer submitted. -OVRP_EXPORT ovrpResult ovrp_SetColorScaleAndOffset( - const ovrpVector4f colorScale, - const ovrpVector4f colorOffset, - const ovrpBool applyToAllLayers); - -/// Creates a layer. -/// The desc remains constant for the lifetime of the layer. -/// @note In case of D3D12, device is an ID3D12CommandQueue object -OVRP_EXPORT ovrpResult ovrp_SetupLayer(void* device, OVRP_CONSTREF(ovrpLayerDesc) desc, int* layerId); - -/// Create depth swap chain for a layer -OVRP_EXPORT ovrpResult ovrp_SetupLayerDepth(void* device, ovrpTextureFormat depthFormat, int layerId); - -/// Get Eye Fov layer index if created -/// Otherwise return fail -OVRP_EXPORT ovrpResult ovrp_GetEyeFovLayerId(int* layerId); - -/// Set blending mode of Eye Fov layer to use premultiplied alpha or not -OVRP_EXPORT ovrpResult ovrp_SetEyeFovPremultipliedAlphaMode(const ovrpBool enabled); - -/// Get premultiplied alpha mode of the Eye Fov layer -OVRP_EXPORT ovrpResult ovrp_GetEyeFovPremultipliedAlphaMode(ovrpBool* enabled); - -/// Gets the number of texture stages in the layer. -/// Layers have multiple stages, unless the ovrpLayer_Static flag was specified. -OVRP_EXPORT ovrpResult ovrp_GetLayerTextureStageCount(int layerId, int* layerTextureStageCount); - -/// Gets the texture handle for a specific layer stage and eye. -OVRP_EXPORT ovrpResult ovrp_GetLayerTexture2( - int layerId, - int stage, - ovrpEye eyeId, - ovrpTextureHandle* textureHandle, - ovrpTextureHandle* depthTextureHandle); - -/// Gets the texture handle for a specific layer stage and eye. -OVRP_EXPORT ovrpResult ovrp_GetLayerTextureFoveation( - int layerId, - int stage, - ovrpEye eyeId, - ovrpTextureHandle* foveationTextureHandle, - ovrpSizei* foveationResultSize); - -/// Gets the space warp texture handles for a specific layer stage and eye. -OVRP_EXPORT ovrpResult ovrp_GetLayerTextureSpaceWarp( - int layerId, - int stage, - ovrpEye eyeId, - ovrpTextureHandle* motionVectorTextureHandle, - ovrpSizei* motionVectorResultSize, - ovrpTextureHandle* depthTextureHandle, - ovrpSizei* depthResultSize); - -/// Gets the space warp texture handles for a specific layer stage and eye. -OVRP_EXPORT ovrpResult ovrp_GetLayerTextureSpaceWarp2( - int layerId, - int stage, - ovrpEye eyeId, - ovrpTextureHandle* motionVectorTextureHandle, - ovrpSizei* motionVectorResultSize, - ovrpTextureHandle* depthTextureHandle, - ovrpSizei* depthResultSize, - ovrpTextureHandle* foveationTextureHandle, - ovrpSizei* foveationResultSize); - -/// Gets the motion vector texture handles for a specific layer stage and eye. -OVRP_EXPORT ovrpResult ovrp_GetLayerMotionVectorTextures( - int layerId, - int stage, - ovrpEye eyeId, - ovrpTextureHandle* motionVectorTextureHandle, - ovrpSizei* motionVectorResultSize, - ovrpTextureHandle* depthTextureHandle, - ovrpSizei* depthResultSize, - ovrpTextureHandle* foveationTextureHandle, - ovrpSizei* foveationResultSize); - -/// Gets the texture handle for a specific layer stage and eye. -OVRP_EXPORT ovrpResult ovrp_GetLayerAndroidSurfaceObject(int layerId, void** surfaceObject); - -/// Return the vertices and indices for the eye occlusion mesh. -OVRP_EXPORT ovrpResult ovrp_GetLayerOcclusionMesh( - int layerId, - ovrpEye eyeId, - ovrpVector2f const** vertices, - int* vertexCount, - int const** indices, - int* indexCount); - -/// Destroys a layer -OVRP_EXPORT ovrpResult ovrp_DestroyLayer(int layerId); - -/// Calculates layer description -OVRP_EXPORT ovrpResult ovrp_CalculateLayerDesc( - ovrpShape shape, - ovrpLayout layout, - OVRP_CONSTREF(ovrpSizei) textureSize, - int mipLevels, - int sampleCount, - ovrpTextureFormat format, - int layerFlags, - ovrpLayerDescUnion* layerDesc); - -/// Calculates eye layer description -OVRP_EXPORT ovrpResult ovrp_CalculateEyeLayerDesc2( - ovrpLayout layout, - float textureScale, - int mipLevels, - int sampleCount, - ovrpTextureFormat format, - ovrpTextureFormat depthFormat, - int layerFlags, - ovrpLayerDesc_EyeFov* layerDesc); - -/// Calculates eye layer description -OVRP_EXPORT ovrpResult ovrp_CalculateEyeLayerDesc3( - ovrpLayout layout, - float textureScale, - int mipLevels, - int sampleCount, - ovrpTextureFormat format, - ovrpTextureFormat depthFormat, - ovrpTextureFormat motionVectorFormat, - ovrpTextureFormat motionVectorDepthFormat, - float motionVectorTextureScale, - int layerFlags, - ovrpLayerDesc_EyeFov* layerDesc); - -/// Calculates the recommended viewport rect for the specified eye -OVRP_EXPORT ovrpResult ovrp_CalculateEyeViewportRect( - OVRP_CONSTREF(ovrpLayerDesc_EyeFov) layerDesc, - ovrpEye eyeId, - float viewportScale, - ovrpRecti* viewportRect); - -/// Calculates the area of the viewport unobstructed by the occlusion mesh -OVRP_EXPORT ovrpResult ovrp_CalculateEyePreviewRect( - OVRP_CONSTREF(ovrpLayerDesc_EyeFov) layerDesc, - ovrpEye eyeId, - OVRP_CONSTREF(ovrpRecti) viewportRect, - ovrpRecti* previewRect); - -/// Allocates mirror texture -/// If you called ovrp_Initialize with ovrpRenderAPI_D3D11, pass device argument -/// here to have the texture allocated by that device. -/// If you called ovrp_Initialize with ovrpRenderAPI_OpenGL, you can pass -/// a texture ID allocated by glGenTextures in the device argument and the texture will be -/// associated with that ID. -/// @note In case of D3D12, device is an ID3D12CommandQueue object -OVRP_EXPORT ovrpResult ovrp_SetupMirrorTexture2( - void* device, - int height, - int width, - ovrpTextureFormat format, - ovrpTextureHandle* textureHandle); - -/// Destroys mirror texture. -OVRP_EXPORT ovrpResult ovrp_DestroyMirrorTexture2(); - -/// Returns the recommended amount to scale GPU work in order to maintain framerate. -/// Can be used to adjust viewportScale and textureScale -OVRP_EXPORT ovrpResult ovrp_GetAdaptiveGpuPerformanceScale2(float* adapiveGpuPerformanceScale); - -/// Returns the time from CPU start to GPU end, a meaningful performance metric under OVR -OVRP_EXPORT ovrpResult ovrp_GetAppCpuStartToGpuEndTime2(float* appCpuStartToGpuEndTime); - -/// Return how many display pixels will fit in tan(angle) = 1 -OVRP_EXPORT ovrpResult ovrp_GetEyePixelsPerTanAngleAtCenter2(int eyeIndex, ovrpVector2f* pixelsPerTanAngleAtCenter); - -/// Return the offset HMD to the eye, in meters -OVRP_EXPORT ovrpResult ovrp_GetHmdToEyeOffset2(int eyeIndex, ovrpVector3f* hmdToEyeOffset); - -/// Ensures VR rendering is configured and updates tracking to reflect the latest reported poses. -/// You must call ovrp_Update before calling ovrp_GetNode* for a new frame. -/// Call with ovrpStep_Render from end of frame on Game thread, to hand off state to Render thread -/// Call with ovrpStep_Physics from any thread, using predictionSeconds specify offset from start of -/// frame. -OVRP_EXPORT ovrpResult ovrp_Update3(ovrpStep step, int frameIndex, double predictionSeconds); - -/// Marks the beginning of a frame. Call this before issuing any graphics commands in a given frame. -OVRP_EXPORT ovrpResult ovrp_WaitToBeginFrame(int frameIndex); - -/// Marks the beginning of a frame. Call this before issuing any graphics commands in a given frame. -OVRP_EXPORT ovrpResult ovrp_BeginFrame4(int frameIndex, void* commandQueue); - -/// Late update of foveation parameters, both GL and Vulkan -OVRP_EXPORT ovrpResult ovrp_UpdateFoveation(int frameIndex); - -/// Marks the end of a frame and performs TimeWarp. Call this before Present or SwapBuffers to -/// update the VR window. -OVRP_EXPORT ovrpResult -ovrp_EndFrame4(int frameIndex, ovrpLayerSubmit const* const* layerSubmitPtrs, int layerSubmitCount, void* commandQueue); - -/// If true, the HMD supports orientation tracking. -OVRP_EXPORT ovrpResult ovrp_GetTrackingOrientationSupported2(ovrpBool* trackingOrientationSupported); - -/// If true, head tracking affects the rotation reported by ovrp_GetEyePose. -OVRP_EXPORT ovrpResult ovrp_GetTrackingOrientationEnabled2(ovrpBool* trackingOrientationEnabled); - -/// If true, head tracking affects the rotation reported by ovrp_GetEyePose. -OVRP_EXPORT ovrpResult ovrp_SetTrackingOrientationEnabled2(ovrpBool trackingOrientationEnabled); - -/// If true, the HMD supports position tracking -OVRP_EXPORT ovrpResult ovrp_GetTrackingPositionSupported2(ovrpBool* trackingPositionSupported); - -/// If true, head tracking affects the position reported by ovrp_GetEyePose. -OVRP_EXPORT ovrpResult ovrp_GetTrackingPositionEnabled2(ovrpBool* trackingPositionEnabled); - -/// If true, head tracking affects the position reported by ovrp_GetEyePose. -OVRP_EXPORT ovrpResult ovrp_SetTrackingPositionEnabled2(ovrpBool trackingPositionEnabled); - -/// If true, head tracking affects the pose reported by ovrp_GetEyePose even for invisible sessions. -OVRP_EXPORT ovrpResult ovrp_GetTrackingPoseEnabledForInvisibleSession(ovrpBool* trackingPoseEnabled); - -/// If true, head tracking affects the pose reported by ovrp_GetEyePose even for invisible sessions. -/// If false, last visible frame's head pose is used. -OVRP_EXPORT ovrpResult ovrp_SetTrackingPoseEnabledForInvisibleSession(ovrpBool trackingPoseEnabled); - -/// If true, the inter-pupillary distance affects the position reported by ovrp_GetEyePose. -OVRP_EXPORT ovrpResult ovrp_GetTrackingIPDEnabled2(ovrpBool* trackingIPDEnabled); - -/// If true, the inter-pupillary distance affects the position reported by ovrp_GetEyePose. -OVRP_EXPORT ovrpResult ovrp_SetTrackingIPDEnabled2(ovrpBool trackingIPDEnabled); - -/// Gets the calibrated origin pose. -OVRP_EXPORT ovrpResult ovrp_GetTrackingCalibratedOrigin2(ovrpPosef* trackingCalibratedOrigin); - -/// Oculus Internal. Sets the system-wide calibrated origin for the currently active tracking origin -/// type. -OVRP_EXPORT ovrpResult ovrp_SetTrackingCalibratedOrigin2(); - -/// Gets the currently active tracking origin type. -OVRP_EXPORT ovrpResult ovrp_GetTrackingOriginType2(ovrpTrackingOrigin* trackingOriginType); - -/// Sets the currently active tracking origin type. -OVRP_EXPORT ovrpResult ovrp_SetTrackingOriginType2(ovrpTrackingOrigin trackingOriginType); - -/// Changes the frame of reference used by tracking. -/// See the ovrpRecenterFlag enum for details about available flags. -OVRP_EXPORT ovrpResult ovrp_RecenterTrackingOrigin2(unsigned int flags); - -/// If true, the node is considered present and available. -OVRP_EXPORT ovrpResult ovrp_GetNodePresent2(ovrpNode nodeId, ovrpBool* nodePresent); - -/// If true, the node's orientation is tracked. -OVRP_EXPORT ovrpResult ovrp_GetNodeOrientationTracked2(ovrpNode nodeId, ovrpBool* nodeOrientationTracked); - -/// If true, the node's orientation is valid. -OVRP_EXPORT ovrpResult ovrp_GetNodeOrientationValid(ovrpNode nodeId, ovrpBool* nodeOrientationValid); - -/// If true, the node's position is tracked. -OVRP_EXPORT ovrpResult ovrp_GetNodePositionTracked2(ovrpNode nodeId, ovrpBool* nodePositionTracked); - -/// If true, the node's position is valid. -OVRP_EXPORT ovrpResult ovrp_GetNodePositionValid(ovrpNode nodeId, ovrpBool* nodePositionValid); - -/// Force a node position to be tracked or not. Return false if the node's position tracking cannot -/// be changed. -OVRP_EXPORT ovrpResult ovrp_SetNodePositionTracked2(ovrpNode nodeId, ovrpBool nodePositionTracked); - -/// Gets the current pose, acceleration, and velocity of the given node on the given update cadence. -OVRP_EXPORT ovrpResult -ovrp_GetNodePoseState3(ovrpStep step, int frameIndex, ovrpNode nodeId, ovrpPoseStatef* nodePoseState); - -/// Gets the current pose, acceleration, and velocity of the given node on the given update cadence, without applying -/// any modifier (e.g. HeadPoseModifier) -OVRP_EXPORT ovrpResult -ovrp_GetNodePoseStateRaw(ovrpStep step, int frameIndex, ovrpNode nodeId, ovrpPoseStatef* nodePoseState); - -/// Gets the current frustum for the given node, if available. -OVRP_EXPORT ovrpResult ovrp_GetNodeFrustum2(ovrpNode nodeId, ovrpFrustum2f* nodeFrustum); - - - - - - - - - - - - - - - - - - - - - -/// Set relative rotation/translation to the eye pose -OVRP_EXPORT ovrpResult -ovrp_SetHeadPoseModifier(const ovrpQuatf* relativeRotation, const ovrpVector3f* relativeTranslation); - -/// Get current relative rotation/translation to the eye pose -OVRP_EXPORT ovrpResult ovrp_GetHeadPoseModifier(ovrpQuatf* relativeRotation, ovrpVector3f* relativeTranslation); - -/// Gets the controller state for the given controllers. -OVRP_EXPORT ovrpResult ovrp_GetControllerState4(ovrpController controllerMask, ovrpControllerState4* controllerState); - -/// Gets the controller state for the given controllers. -OVRP_EXPORT ovrpResult ovrp_GetControllerState5(ovrpController controllerMask, ovrpControllerState5* controllerState); - -/// Gets the controller state for the given controllers. -OVRP_EXPORT ovrpResult ovrp_GetControllerState6(ovrpController controllerMask, ovrpControllerState6* controllerState); - -/// Gets the currently active controller type. -OVRP_EXPORT ovrpResult ovrp_GetActiveController2(ovrpController* activeController); - -/// Gets the currently connected controller types as a bitmask. -OVRP_EXPORT ovrpResult ovrp_GetConnectedControllers2(ovrpController* connectedControllers); - -/// Sets the vibration state for the given controllers. -OVRP_EXPORT ovrpResult ovrp_SetControllerVibration2(ovrpController controllerMask, float frequency, float amplitude); - -/// Sets the vibration state for the specified haptics locations on the given controllers. -OVRP_EXPORT ovrpResult ovrp_SetControllerLocalizedVibration( - ovrpController controllerMask, - ovrpHapticsLocation hapticsLocationMask, - float frequency, - float amplitude); - -OVRP_EXPORT ovrpResult ovrp_SetControllerHapticsAmplitudeEnvelope( - ovrpController controllerMask, - ovrpHapticsAmplitudeEnvelopeVibration hapticsVibration); - -OVRP_EXPORT ovrpResult -ovrp_SetControllerHapticsPcm(ovrpController controllerMask, ovrpHapticsPcmVibration hapticsVibration); - - - - - - - - - - - - - - - -/// Gets the current haptics desc for the given controllers. -OVRP_EXPORT ovrpResult -ovrp_GetControllerHapticsDesc2(ovrpController controllerMask, ovrpHapticsDesc* controllerHapticsDesc); - -/// Gets the current haptics state for the given controllers. -OVRP_EXPORT ovrpResult -ovrp_GetControllerHapticsState2(ovrpController controllerMask, ovrpHapticsState* controllerHapticsState); - -/// Gets the preferred sample rate (in Hz) for the given controller. -OVRP_EXPORT ovrpResult ovrp_GetControllerSampleRateHz(ovrpController controller, float* sampleRateHz); - -/// Sets the haptics buffer state for the given controllers. -OVRP_EXPORT ovrpResult ovrp_SetControllerHaptics2(ovrpController controllerMask, ovrpHapticsBuffer hapticsBuffer); - -// Action State Functions -OVRP_EXPORT ovrpResult ovrp_GetActionStateBoolean(const char* actionName, ovrpBool* result); -OVRP_EXPORT ovrpResult ovrp_GetActionStateFloat(const char* actionName, float* result); -OVRP_EXPORT ovrpResult ovrp_GetActionStateVector2f(const char* actionName, ovrpVector2f* value); -OVRP_EXPORT ovrpResult ovrp_GetActionStatePose(const char* actionName, ovrpPosef* result); -OVRP_EXPORT ovrpResult ovrp_GetActionStatePose2(const char* actionName, ovrpHand hand, ovrpPosef* result); -OVRP_EXPORT ovrpResult ovrp_GetCurrentInteractionProfileName(ovrpHand hand, char* interactionProfile); -OVRP_EXPORT ovrpResult -ovrp_TriggerVibrationAction(const char* actionName, ovrpHand hand, float duration, float amplitude); - -/// Sets the suggested CPU performance level -OVRP_EXPORT ovrpResult ovrp_SetSuggestedCpuPerformanceLevel(ovrpProcessorPerformanceLevel perfLevel); - -/// Gets the suggested CPU performance level -OVRP_EXPORT ovrpResult ovrp_GetSuggestedCpuPerformanceLevel(ovrpProcessorPerformanceLevel* perfLevel); - -/// Sets the suggested CPU performance level -OVRP_EXPORT ovrpResult ovrp_SetSuggestedGpuPerformanceLevel(ovrpProcessorPerformanceLevel perfLevel); - -/// Gets the suggested CPU performance level -OVRP_EXPORT ovrpResult ovrp_GetSuggestedGpuPerformanceLevel(ovrpProcessorPerformanceLevel* perfLevel); - -/// Gets the current CPU performance level, integer in the range 0 - 3 (deprecated). -OVRP_EXPORT ovrpResult ovrp_GetSystemCpuLevel2(int* systemCpuLevel); - -/// Sets the current CPU performance level, integer in the range 0 - 3 (deprecated). -OVRP_EXPORT ovrpResult ovrp_SetSystemCpuLevel2(int systemCpuLevel); - -/// Returns true if the application should run at the maximum possible CPU level. -OVRP_EXPORT ovrpResult ovrp_GetAppCPUPriority2(ovrpBool* appCPUPriority); - -/// Determines whether the application should run at the maximum possible CPU level. -OVRP_EXPORT ovrpResult ovrp_SetAppCPUPriority2(ovrpBool appCPUPriority); - -/// Gets the current GPU performance level, integer in the range 0 - 3 (deprecated). -OVRP_EXPORT ovrpResult ovrp_GetSystemGpuLevel2(int* systemGpuLevel); - -/// Sets the current GPU performance level, integer in the range 0 - 3 (deprecated). -OVRP_EXPORT ovrpResult ovrp_SetSystemGpuLevel2(int systemGpuLevel); - -/// If true, the system is running in a reduced performance mode to save power. -OVRP_EXPORT ovrpResult ovrp_GetSystemPowerSavingMode2(ovrpBool* systemPowerSavingMode); - -/// Gets the current refresh rate of the HMD. -OVRP_EXPORT ovrpResult ovrp_GetSystemDisplayFrequency2(float* systemDisplayFrequency); - -/// Gets the available refresh rates of the HMD. -OVRP_EXPORT ovrpResult -ovrp_GetSystemDisplayAvailableFrequencies(float* systemDisplayAvailableFrequencies, int* arraySize); - -/// Sets the refresh rate for the HMD -OVRP_EXPORT ovrpResult ovrp_SetSystemDisplayFrequency(float requestedFrequency); - -/// Gets the minimum number of vsyncs to wait after each frame. -OVRP_EXPORT ovrpResult ovrp_GetSystemVSyncCount2(int* systemVSyncCount); - -/// Sets the minimum number of vsyncs to wait after each frame. -OVRP_EXPORT ovrpResult ovrp_SetSystemVSyncCount2(int systemVSyncCount); - -/// OVRPlugin does not support Android system callbacks in UE4 and UE5. -/// Please use Optional Mobile Features Blueprint Library Plugin or include FAndroidMisc.h in your project -#ifndef OVRPLUGIN_JNI_LIB_EXCLUDED -/// Gets the current system volume level. -OVRP_EXPORT ovrpResult ovrp_GetSystemVolume2(float* systemVolume); - -/// If true, headphones are currently attached to the device. -OVRP_EXPORT ovrpResult ovrp_GetSystemHeadphonesPresent2(ovrpBool* systemHeadphonesPresent); - -/// Gets the status of the system's battery or "Unknown" if there is none. -OVRP_EXPORT ovrpResult ovrp_GetSystemBatteryStatus2(ovrpBatteryStatus* systemBatteryStatus); - -/// Gets the current available battery charge, ranging from 0 (empty) to 1 (full). -OVRP_EXPORT ovrpResult ovrp_GetSystemBatteryLevel2(float* systemBatteryLevel); - -/// Gets the current battery temperature in degrees Celsius. -OVRP_EXPORT ovrpResult ovrp_GetSystemBatteryTemperature2(float* systemBatteryTemperature); -#endif - -/// Gets the current product name for the device, if available. -OVRP_EXPORT ovrpResult ovrp_GetSystemProductName2(char const** systemProductName); - -/// Gets the current region for the device, if available. -OVRP_EXPORT ovrpResult ovrp_GetSystemRegion2(ovrpSystemRegion* systemRegion); - -/// Shows a given platform user interface. -OVRP_EXPORT ovrpResult ovrp_ShowSystemUI2(ovrpUI ui); - -/// If true, the app has VR focus. -OVRP_EXPORT ovrpResult ovrp_GetAppHasVrFocus2(ovrpBool* appHasVrFocus); - -/// True if the application is the foreground application and receives input (e.g. Touch -/// controller state). If this is false then the application is in the background (but possibly -/// still visible) should hide any input representations such as hands. -OVRP_EXPORT ovrpResult ovrp_GetAppHasInputFocus(ovrpBool* appHasInputFocus); - -/// True if a system overlay is present, such as a dashboard. In this case the application -/// (if visible) should pause while still drawing, avoid drawing near-field graphics so they -/// don't visually fight with the system overlay, and consume fewer CPU and GPU resources. -OVRP_EXPORT ovrpResult ovrp_GetAppHasSystemOverlayPresent(ovrpBool* appHasOverlayPresent); - -/// If true, the app should quit as soon as possible. -OVRP_EXPORT ovrpResult ovrp_GetAppShouldQuit2(ovrpBool* appShouldQuit); - -/// If true, the app should recenter as soon as possible. -OVRP_EXPORT ovrpResult ovrp_GetAppShouldRecenter2(ovrpBool* appShouldRecenter); - -/// If true, the app should recreate the distortion window as soon as possible. -OVRP_EXPORT ovrpResult ovrp_GetAppShouldRecreateDistortionWindow2(ovrpBool* appShouldRecreateDistortionWindow); - -/// Returns the the app space. -OVRP_EXPORT ovrpResult ovrp_GetAppSpace(ovrpUInt64* appSpace); - -/// Gets the latest measured latency timings. -OVRP_EXPORT ovrpResult ovrp_GetAppLatencyTimings2(ovrpAppLatencyTimings* appLatencyTimings); - -/// Sets the engine info for the current app. -OVRP_EXPORT ovrpResult ovrp_SetAppEngineInfo2(const char* engineName, const char* engineVersion, ovrpBool isEditor); - -/// If true, the user is currently wearing the VR display and it is not idle. -OVRP_EXPORT ovrpResult ovrp_GetUserPresent2(ovrpBool* userPresent); - -/// Gets the physical inter-pupillary distance (IPD) separating the user's eyes in meters. -OVRP_EXPORT ovrpResult ovrp_GetUserIPD2(float* userIPD); - -/// Sets the physical inter-pupillary distance (IPD) separating the user's eyes in meters. -OVRP_EXPORT ovrpResult ovrp_SetUserIPD2(float value); - -/// Gets the physical height of the player's eyes from the ground in meters. -OVRP_EXPORT ovrpResult ovrp_GetUserEyeHeight2(float* userEyeHeight); - -/// Sets the physical height of the player's eyes from the ground in meters. -OVRP_EXPORT ovrpResult ovrp_SetUserEyeHeight2(float userEyeHeight); - -/// Gets the physical distance from the base of the neck to the center of the player's eyes in -/// meters. -OVRP_EXPORT ovrpResult ovrp_GetUserNeckEyeDistance2(ovrpVector2f* userEyeNeckDistance); - -/// Sets the physical distance from the base of the neck to the center of the player's eyes in -/// meters. -OVRP_EXPORT ovrpResult ovrp_SetUserNeckEyeDistance2(ovrpVector2f userEyeNeckDistance); - -/// Setup the current display objects -OVRP_EXPORT ovrpResult ovrp_SetupDisplayObjects2(void* device, void* display, void* window); - -/// Return true if the device supports multi-view rendering -OVRP_EXPORT ovrpResult ovrp_GetSystemMultiViewSupported2(ovrpBool* systemMultiViewSupported); - -/// Return true is the plugin supports submitting texture arrays -OVRP_EXPORT ovrpResult ovrp_GetEyeTextureArraySupported2(ovrpBool* eyeTextureArraySupported); - -/// If true, the boundary system is configured with valid boundary data. -OVRP_EXPORT ovrpResult ovrp_GetBoundaryConfigured2(ovrpBool* boundaryConfigured); - -/// Return success if the device supports depth compositing -OVRP_EXPORT ovrpResult ovrp_GetDepthCompositingSupported(ovrpBool* depthCompositingSupported); - -/// Performs a boundary test between the specified node and boundary types. -OVRP_EXPORT ovrpResult -ovrp_TestBoundaryNode2(ovrpNode node, ovrpBoundaryType boundaryType, ovrpBoundaryTestResult* boundaryTestResult); - -/// Performs a boundary test between the specified point and boundary types. -OVRP_EXPORT ovrpResult -ovrp_TestBoundaryPoint2(ovrpVector3f point, ovrpBoundaryType boundaryType, ovrpBoundaryTestResult* boundaryTestResult); - -/// Gets the geometry data for the specified boundary type. -OVRP_EXPORT ovrpResult ovrp_GetBoundaryGeometry3(ovrpBoundaryType boundaryType, ovrpVector3f* points, int* pointsCount); - -/// Gets the dimensions for the specified boundary type. Returned x,y,z values correspond to width, -/// height, depth. -OVRP_EXPORT ovrpResult ovrp_GetBoundaryDimensions2(ovrpBoundaryType boundaryType, ovrpVector3f* bounaryDimensions); - -/// Gets the current visiblity status for the boundary system. -OVRP_EXPORT ovrpResult ovrp_GetBoundaryVisible2(ovrpBool* boundaryVisible); - -/// Requests that the boundary system visibility be set to the specified value. Can be overridden by -/// the boundary system or the user. -OVRP_EXPORT ovrpResult ovrp_SetBoundaryVisible2(ovrpBool boundaryVisible); - -/// Returns the currently present headset type. -OVRP_EXPORT ovrpResult ovrp_GetSystemHeadsetType2(ovrpSystemHeadset* systemHeadsetType); - -/// Returns information useful for performance analysis and dynamic quality adjustments. -OVRP_EXPORT ovrpResult ovrp_GetAppPerfStats2(ovrpAppPerfStats* appPerfStats); - -/// Resets internal performance counters to clear previous data from impacting the current reported -/// state. -OVRP_EXPORT ovrpResult ovrp_ResetAppPerfStats2(); - -/// Return the app FPS, thread safe -OVRP_EXPORT ovrpResult ovrp_GetAppFramerate2(float* appFramerate); - -/// Returns if a certain perf metrics is supported -OVRP_EXPORT ovrpResult ovrp_IsPerfMetricsSupported(ovrpPerfMetrics perfMetrics, ovrpBool* supported); - -/// Returns if a floating point perf metrics -OVRP_EXPORT ovrpResult ovrp_GetPerfMetricsFloat(ovrpPerfMetrics perfMetrics, float* value); - -/// Returns if an integer perf metrics -OVRP_EXPORT ovrpResult ovrp_GetPerfMetricsInt(ovrpPerfMetrics perfMetrics, int* value); - -/// Set a latency when getting the hand node poses through ovrp_GetNodePoseState2(ovrpStep_Render, ...) -OVRP_EXPORT ovrpResult ovrp_SetHandNodePoseStateLatency(double latencyInSeconds); - -/// Get the current latency when getting the hand node poses through ovrp_GetNodePoseState2(ovrpStep_Render, ...) -OVRP_EXPORT ovrpResult ovrp_GetHandNodePoseStateLatency(double* latencyInSeconds); - -/// Returns the recommended multisample antialiasing level for the current device. -OVRP_EXPORT ovrpResult ovrp_GetSystemRecommendedMSAALevel2(int* systemRecommendedMSAALevel); - -/// Inhibits system UX behavior. -OVRP_EXPORT ovrpResult ovrp_SetInhibitSystemUX2(ovrpBool inhibitSystemUX); - -/// Return true if the device supports tiled multires -OVRP_EXPORT ovrpResult ovrp_GetTiledMultiResSupported(ovrpBool* foveationSupported); - -/// Returns the current multires level on the device -OVRP_EXPORT ovrpResult ovrp_GetTiledMultiResLevel(ovrpTiledMultiResLevel* level); - -/// Sets MultiRes levels -OVRP_EXPORT ovrpResult ovrp_SetTiledMultiResLevel(ovrpTiledMultiResLevel level); - -/// Return if MultiRes is dynamic or not -OVRP_EXPORT ovrpResult ovrp_GetTiledMultiResDynamic(ovrpBool* isDynamic); - -/// Sets if MultiRes is dynamic or not -OVRP_EXPORT ovrpResult ovrp_SetTiledMultiResDynamic(ovrpBool isDynamic); - -/// Returns the current motion vector multires level on the device -OVRP_EXPORT ovrpResult ovrp_GetMotionVectorTiledMultiResLevel(ovrpTiledMultiResLevel* level); - -/// Sets MultiRes motion vector levels -OVRP_EXPORT ovrpResult ovrp_SetMotionVectorTiledMultiResLevel(ovrpTiledMultiResLevel level); - -/// Return true if the device supports eye tracked foveation -OVRP_EXPORT ovrpResult ovrp_GetFoveationEyeTrackedSupported(ovrpBool* foveationSupported); - -/// Return if foveation is eye tracked -OVRP_EXPORT ovrpResult ovrp_GetFoveationEyeTracked(ovrpBool* isEyeTracked); - -/// Sets if foveation is eye tracked -OVRP_EXPORT ovrpResult ovrp_SetFoveationEyeTracked(ovrpBool isEyeTracked); - -/// Gets the eye tracked foveation center (used for tile offset) -OVRP_EXPORT ovrpResult ovrp_GetFoveationEyeTrackedCenter(ovrpVector2f fovCenter[2]); - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -/// Return true if the device supports GPU Util querying -OVRP_EXPORT ovrpResult ovrp_GetGPUUtilSupported(ovrpBool* gpuUtilSupported); - -/// Return the GPU util if the device supports it -OVRP_EXPORT ovrpResult ovrp_GetGPUUtilLevel(float* gpuUtil); - -/// Set thread's performance level, for example, put the performance critical thread on golden cores, -/// future policy might change for future hardware -OVRP_EXPORT ovrpResult ovrp_SetThreadPerformance(int threadId, ovrpThreadPerf perf); - -/// This is specifically for Unity to fix Core Affinity wrong assignment. -OVRP_EXPORT ovrpResult ovrp_AutoThreadScheduling( - unsigned int bigCoreMaskFromEngine, - unsigned int* threadIds, - ovrpThreadPerf* threadPerfFlags, - int threadCount); - -OVRP_EXPORT ovrpResult ovrp_GetGPUFrameTime(float* gpuTime); - -/// This is to request vertices and indices for the triangle mesh -OVRP_EXPORT ovrpResult ovrp_GetViewportStencil( - ovrpEye eyeId, - ovrpViewportStencilType type, - ovrpVector2f* vertices, - int* vertexCount, - ovrpUInt16* indices, - int* indexCount); - -OVRP_EXPORT ovrpResult ovrp_SetDeveloperTelemetryConsent(ovrpBool consent); - -OVRP_EXPORT ovrpResult ovrp_SendEvent(const char* eventName, const char* param); - -OVRP_EXPORT ovrpResult ovrp_SendEvent2(const char* eventName, const char* param, const char* source); - -OVRP_EXPORT ovrpResult ovrp_AddCustomMetadata(const char* metadataName, const char* metadataParam); - -OVRP_EXPORT ovrpResult ovrp_SetDeveloperMode(ovrpBool active); - -OVRP_EXPORT ovrpResult ovrp_SetDeveloperModeStrict(ovrpBool active); - -OVRP_EXPORT ovrpResult ovrp_SetVrApiPropertyInt(int propertyEnum, int value); - -OVRP_EXPORT ovrpResult ovrp_SetVrApiPropertyFloat(int propertyEnum, float value); - -OVRP_EXPORT ovrpResult ovrp_GetVrApiPropertyInt(int propertyEnum, int* value); - - - - - - - -OVRP_EXPORT ovrpResult ovrp_GetCurrentTrackingTransformPose(ovrpPosef* trackingTransformPose); - -OVRP_EXPORT ovrpResult ovrp_GetTrackingTransformRawPose(ovrpPosef* trackingTransformRawPose); - -OVRP_EXPORT ovrpResult -ovrp_GetTrackingTransformRelativePose(ovrpPosef* trackingTransformRelativePose, ovrpTrackingOrigin trackingOrigin); - -OVRP_EXPORT ovrpResult ovrp_GetTimeInSeconds(double* timeInSeconds); - -OVRP_EXPORT ovrpResult ovrp_GetASWVelocityScale(float* aswVelocityScale); -OVRP_EXPORT ovrpResult ovrp_GetASWDepthScale(float* aswDepthScale); -OVRP_EXPORT ovrpResult ovrp_GetASWAdaptiveMode(ovrpBool* aswAdaptiveMode); -OVRP_EXPORT ovrpResult ovrp_SetASWAdaptiveMode(ovrpBool aswAdaptiveMode); -OVRP_EXPORT ovrpResult ovrp_IsRequestingASWData(ovrpBool* needASWData); - -OVRP_EXPORT ovrpResult ovrp_GetPredictedDisplayTime(int frameIndex, double* predictedDisplayTime); - -/// Set whether the system should be querying for hand poses powered by controller data -OVRP_EXPORT ovrpResult ovrp_SetControllerDrivenHandPoses(ovrpBool controllerDrivenHandPoses); -OVRP_EXPORT ovrpResult ovrp_SetControllerDrivenHandPosesAreNatural(ovrpBool controllerDrivenHandPosesAreNatural); -OVRP_EXPORT ovrpResult ovrp_IsControllerDrivenHandPosesEnabled(ovrpBool* enabled); -OVRP_EXPORT ovrpResult ovrp_AreControllerDrivenHandPosesNatural(ovrpBool* natural); - -OVRP_EXPORT ovrpResult ovrp_SetWideMotionModeHandPoses(ovrpBool wideMotionModeHandPoses); -OVRP_EXPORT ovrpResult ovrp_IsWideMotionModeHandPosesEnabled(ovrpBool* enabled); - -OVRP_EXPORT ovrpResult ovrp_SetHandSkeletonVersion(ovrHandSkeletonVersion version); - - - - - - -OVRP_EXPORT ovrpResult ovrp_SetMultimodalHandsControllersSupported(ovrpBool supported); -OVRP_EXPORT ovrpResult ovrp_IsMultimodalHandsControllersSupported(ovrpBool* supported); -OVRP_EXPORT ovrpResult -ovrp_GetCurrentDetachedInteractionProfile(ovrpHand hand, ovrpInteractionProfile* interactionProfile); - -OVRP_EXPORT ovrpResult ovrp_GetHandTrackingEnabled(ovrpBool* handTrackingEnabled); -OVRP_EXPORT ovrpResult ovrp_GetHandState(ovrpStep step, ovrpHand hand, ovrpHandState* handState); -OVRP_EXPORT ovrpResult ovrp_GetHandState2(ovrpStep step, int frameIndex, ovrpHand hand, ovrpHandState* handState); -OVRP_EXPORT ovrpResult ovrp_GetHandState3(ovrpStep step, int frameIndex, ovrpHand hand, ovrpHandState3* handState); -OVRP_EXPORT ovrpResult -ovrp_GetHandTrackingState(ovrpStep step, int frameIndex, ovrpHand hand, ovrpHandTrackingState* handTrackingState); -OVRP_EXPORT ovrpResult ovrp_GetSkeleton2(ovrpSkeletonType skeletonType, ovrpSkeleton2* skeleton); -OVRP_EXPORT ovrpResult ovrp_GetSkeleton3(ovrpSkeletonType skeletonType, ovrpSkeleton3* skeleton); -OVRP_EXPORT ovrpResult ovrp_GetMesh(ovrpMeshType meshType, ovrpMesh* mesh); - -OVRP_EXPORT ovrpResult ovrp_GetBodyState(ovrpStep step, int frameIndex, ovrpBodyState* bodyState); - - - - -OVRP_EXPORT ovrpResult ovrp_GetBodyState4(ovrpStep step, int frameIndex, ovrpBodyState4* bodyState); -OVRP_EXPORT ovrpResult ovrp_GetBodyTrackingEnabled(ovrpBool* enabled); -OVRP_EXPORT ovrpResult ovrp_GetBodyTrackingSupported(ovrpBool* supported); -OVRP_EXPORT ovrpResult ovrp_GetFullBodyTrackingEnabled(ovrpBool* enabled); - -OVRP_EXPORT ovrpResult ovrp_StartFaceTracking(); -OVRP_EXPORT ovrpResult ovrp_StopFaceTracking(); -OVRP_EXPORT ovrpResult ovrp_GetFaceTracking2Enabled(ovrpBool* faceTracking2Enabled); -OVRP_EXPORT ovrpResult ovrp_GetFaceTracking2Supported(ovrpBool* faceTracking2Supported); -OVRP_EXPORT ovrpResult ovrp_GetFaceTrackingVisemesEnabled(ovrpBool* faceTrackingVisemesEnabled); -OVRP_EXPORT ovrpResult ovrp_GetFaceTrackingVisemesSupported(ovrpBool* faceTrackingVisemesSupported); -OVRP_EXPORT ovrpResult ovrp_StartFaceTracking2( - const ovrpFaceTrackingDataSource2* const requestedDataSources, - unsigned int requestedDataSourcesCount); -OVRP_EXPORT ovrpResult ovrp_StopFaceTracking2(); -OVRP_EXPORT ovrpResult ovrp_StartBodyTracking(); - - - - -OVRP_EXPORT ovrpResult ovrp_StartBodyTracking2(ovrpBodyJointSet jointSet); - -OVRP_EXPORT ovrpResult ovrp_RequestBodyTrackingFidelity(ovrpBodyTrackingFidelity2 bodyTrackingFidelity); - - - - - -OVRP_EXPORT ovrpResult ovrp_SuggestBodyTrackingCalibrationOverride(ovrpBodyTrackingCalibrationInfo calibrationInfo); -OVRP_EXPORT ovrpResult ovrp_ResetBodyTrackingCalibration(); - -OVRP_EXPORT ovrpResult ovrp_StopBodyTracking(); -OVRP_EXPORT ovrpResult ovrp_StartEyeTracking(); -OVRP_EXPORT ovrpResult ovrp_StopEyeTracking(); - -OVRP_EXPORT ovrpResult ovrp_GetLocalTrackingSpaceRecenterCount(int* recenterCount); - -// Returns true if the system Hmd is in 3dof mode -OVRP_EXPORT ovrpResult ovrp_GetSystemHmd3DofModeEnabled(ovrpBool* enabled); - -OVRP_EXPORT ovrpResult ovrp_SetClientColorDesc(ovrpColorSpace colorSpace); -OVRP_EXPORT ovrpResult ovrp_GetHmdColorDesc(ovrpColorSpace* colorSpace); - -OVRP_EXPORT ovrpResult ovrp_SetEyeBufferSharpenType(ovrpLayerSubmitFlags sharpenType); -OVRP_EXPORT ovrpResult ovrp_SetEyeBufferSecure(ovrpBool secure); - -// app should call this in a loop until there are no more events, which will return ovrpSuccess_EventUnavailable and an -// event of type ovrpEventType_None ovrp_PollEvent and ovrp_PollEvent2 are both in use, Unity needed ovrp_PollEvent2 due -// to memory allocation issues -OVRP_EXPORT ovrpResult ovrp_PollEvent(ovrpEventDataBuffer* eventBuffer); -OVRP_EXPORT ovrpResult ovrp_PollEvent2(ovrpEventType* eventType, unsigned char** eventBuffer); - -OVRP_EXPORT ovrpResult ovrp_SetKeyboardOverlayUV(ovrpVector2f uv); -OVRP_EXPORT ovrpResult ovrp_SetKeyboardOverlayPose(ovrpPosef pose); - - - - - - - -OVRP_EXPORT ovrpResult ovrp_CreateVirtualKeyboard(const ovrpVirtualKeyboardCreateInfo* createInfo); -OVRP_EXPORT ovrpResult ovrp_DestroyVirtualKeyboard(); -OVRP_EXPORT ovrpResult -ovrp_SendVirtualKeyboardInput(const ovrpVirtualKeyboardInputInfo* info, ovrpPosef* interactorRootPose); -OVRP_EXPORT ovrpResult ovrp_ChangeVirtualKeyboardTextContext(const char* textContext); -OVRP_EXPORT ovrpResult -ovrp_CreateVirtualKeyboardSpace(const ovrpVirtualKeyboardSpaceCreateInfo* createInfo, ovrpUInt64* keyboardSpace); -OVRP_EXPORT ovrpResult ovrp_SuggestVirtualKeyboardLocation(const ovrpVirtualKeyboardLocationInfo* locationInfo); -OVRP_EXPORT ovrpResult ovrp_GetVirtualKeyboardScale(float* scale); -OVRP_EXPORT ovrpResult -ovrp_GetVirtualKeyboardModelAnimationStates(ovrpVirtualKeyboardModelAnimationStates* animationStates); -OVRP_EXPORT ovrpResult ovrp_GetVirtualKeyboardDirtyTextures(ovrpVirtualKeyboardTextureIds* textureIds); -OVRP_EXPORT ovrpResult -ovrp_GetVirtualKeyboardTextureData(ovrpUInt64 textureId, ovrpVirtualKeyboardTextureData* textureData); -OVRP_EXPORT ovrpResult ovrp_SetVirtualKeyboardModelVisibility(const ovrpVirtualKeyboardModelVisibility* visibility); - -OVRP_EXPORT ovrpResult ovrp_SaveUnifiedConsent(int toolId, ovrpBool consentValue); -OVRP_EXPORT ovrpResult ovrp_SaveUnifiedConsentWithOlderVersion(int toolId, ovrpBool consentValue, int consentVersion); -OVRP_EXPORT ovrpOptionalBool ovrp_GetUnifiedConsent(int toolId); -OVRP_EXPORT ovrpResult ovrp_GetConsentTitle(char* consentTitle); -OVRP_EXPORT ovrpResult ovrp_GetConsentMarkdownText(char* consentMarkdownText); -OVRP_EXPORT ovrpResult ovrp_GetConsentNotificationMarkdownText( - const char* consentChangeLocationMarkdown, - char* consentNotificationMarkdownText); -OVRP_EXPORT ovrpResult ovrp_GetConsentSettingsChangeText(char* consentSettingsChangeText); - -OVRP_EXPORT ovrpBool ovrp_ShouldShowTelemetryConsentWindow(int toolId); -OVRP_EXPORT ovrpBool ovrp_IsConsentSettingsChangeEnabled(int toolId); -OVRP_EXPORT ovrpBool ovrp_ShouldShowTelemetryNotification(int toolId); -OVRP_EXPORT ovrpResult ovrp_SetNotificationShown(int tool); - -OVRP_EXPORT ovrpResult ovrp_QplSetConsent(ovrpBool qplConsent); -OVRP_EXPORT ovrpResult ovrp_QplMarkerStart(int markerId, int instanceKey, ovrpInt64 timestampMs); -OVRP_EXPORT ovrpResult ovrp_QplMarkerStartForJoin( - int markerId, - const char* joinId, - ovrpBool cancelMarkerIfAppBackgrounded, - int instanceKey, - long long timestampMs); -OVRP_EXPORT ovrpResult ovrp_QplMarkerEnd(int markerId, ovrpInt16 actionId, int instanceKey, ovrpInt64 timestampMs); -OVRP_EXPORT ovrpResult ovrp_QplMarkerPoint(int markerId, const char* name, int instanceKey, ovrpInt64 timestampMs); -OVRP_EXPORT ovrpResult ovrp_QplMarkerPointCached(int markerId, int nameHandle, int instanceKey, ovrpInt64 timestampMs); -OVRP_EXPORT ovrpResult -ovrp_QplMarkerAnnotation(int markerId, const char* annotationKey, const char* annotationValue, int instanceKey); -OVRP_EXPORT ovrpResult ovrp_QplMarkerAnnotationVariant( - int markerId, - const char* annotationKey, - const ovrpQplVariant* annotationValue, - int instanceKey); -OVRP_EXPORT ovrpResult ovrp_QplMarkerPointData( - int markerId, - const char* name, - const ovrpQplAnnotation* annotations, - int annotationCount, - int instanceKey, - ovrpInt64 timestampMs); - -OVRP_EXPORT ovrpResult ovrp_QplCreateMarkerHandle(const char* name, int* nameHandle); -OVRP_EXPORT ovrpResult ovrp_QplDestroyMarkerHandle(int nameHandle); -OVRP_EXPORT ovrpResult ovrp_OnEditorShutdown(); - -/// Gets the current recent pose, acceleration, and velocity of the given node for the current time without any -/// prediction -OVRP_EXPORT ovrpResult ovrp_GetNodePoseStateImmediate(ovrpNode nodeId, ovrpPoseStatef* nodePoseState); - -OVRP_EXPORT ovrpResult ovrp_GetNodePoseStateAtTime(double time, ovrpNode nodeId, ovrpPoseStatef* pose); - -OVRP_EXPORT ovrpResult -ovrp_AreHandPosesGeneratedByControllerData(ovrpStep step, ovrpNode nodeId, ovrpBool* generatedByControllerData); - - -OVRP_EXPORT ovrpResult ovrp_SetSimultaneousHandsAndControllersEnabled(ovrpBool enabled); -OVRP_EXPORT ovrpResult ovrp_GetControllerIsInHand(ovrpStep step, ovrpNode nodeId, ovrpBool* isInHand); - -OVRP_EXPORT ovrpResult ovrp_GetRenderModelPaths(unsigned int index, char* path); -OVRP_EXPORT ovrpResult ovrp_GetRenderModelProperties(const char* path, ovrpRenderModelProperties* properties); -OVRP_EXPORT ovrpResult ovrp_GetRenderModelProperties2( - const char* path, - ovrpRenderModelFlags renderModelFlags, - ovrpRenderModelProperties* properties); -OVRP_EXPORT ovrpResult ovrp_LoadRenderModel( - ovrpUInt64 modelKey, - ovrpUInt32 bufferInputCapacity, - ovrpUInt32* bufferCountOutput, - unsigned char* buffer); - -OVRP_EXPORT ovrpResult ovrp_LocateSpace(ovrpPosef* location, const ovrpSpace* space, ovrpTrackingOrigin baseSpaceType); -OVRP_EXPORT ovrpResult -ovrp_LocateSpace2(ovrpSpaceLocationf* location, const ovrpSpace* space, ovrpTrackingOrigin baseSpaceType); -OVRP_EXPORT ovrpResult ovrp_CreateSpatialAnchor(const ovrpSpatialAnchorCreateInfo* createInfo, ovrpUInt64* requestId); -OVRP_EXPORT ovrpResult ovrp_DestroySpace(ovrpSpace* space); -OVRP_EXPORT ovrpResult ovrp_SetSpaceComponentStatus( - const ovrpSpace* space, - ovrpSpaceComponentType componentType, - const ovrpBool enable, - const double timeout, - ovrpUInt64* requestId); -OVRP_EXPORT ovrpResult ovrp_GetSpaceComponentStatus( - const ovrpSpace* space, - ovrpSpaceComponentType componentType, - ovrpBool* enabled, - ovrpBool* changePending); -OVRP_EXPORT ovrpResult ovrp_EnumerateSpaceSupportedComponents( - const ovrpSpace* space, - ovrpUInt32 componentTypesCapacityInput, - ovrpUInt32* componentTypesCountOutput, - ovrpSpaceComponentType* componentTypes); -OVRP_EXPORT ovrpResult ovrp_QuerySpaces(const ovrpSpaceQueryInfo* queryInfo, ovrpUInt64* requestId); -OVRP_EXPORT ovrpResult ovrp_QuerySpaces2(const ovrpSpaceQueryInfo2* queryInfo, ovrpUInt64* requestId); -OVRP_EXPORT ovrpResult ovrp_RetrieveSpaceQueryResults( - ovrpUInt64* requestId, - ovrpUInt32 resultCapacityInput, - ovrpUInt32* resultCountOutput, - ovrpSpaceQueryResult* results); -OVRP_EXPORT ovrpResult ovrp_SaveSpace( - const ovrpSpace* space, - ovrpSpaceStorageLocation location, - ovrpSpaceStoragePersistenceMode mode, - ovrpUInt64* requestId); -OVRP_EXPORT ovrpResult -ovrp_EraseSpace(const ovrpSpace* space, ovrpSpaceStorageLocation location, ovrpUInt64* requestId); -OVRP_EXPORT ovrpResult ovrp_GetSpaceUuid(const ovrpSpace* space, ovrpUuid* uuid); -OVRP_EXPORT ovrpResult ovrp_GetSpaceUserId(const ovrpUser* spaceUser, ovrpUInt64* spaceUserId); -OVRP_EXPORT ovrpResult ovrp_CreateSpaceUser(const ovrpUInt64* spaceUserId, ovrpUser* spaceUser); -OVRP_EXPORT ovrpResult ovrp_DestroySpaceUser(const ovrpUser* spaceUser); -OVRP_EXPORT ovrpResult ovrp_SaveSpaceList( - const ovrpSpace* spaces, - ovrpUInt32 numSpaces, - ovrpSpaceStorageLocation location, - ovrpUInt64* requestId); -OVRP_EXPORT ovrpResult ovrp_ShareSpaces( - const ovrpSpace* spaces, - ovrpUInt32 numSpaces, - const ovrpUser* users, - ovrpUInt32 numUsers, - ovrpUInt64* requestId); - -// XR_META_spatial_entity_sharing -OVRP_EXPORT ovrpResult ovrp_ShareSpaces2(const ovrpShareSpacesInfo* info, ovrpUInt64* requestId); - -OVRP_EXPORT ovrpResult ovrp_GetSpaceContainer(const ovrpSpace* space, ovrpSpaceContainer* container); - -OVRP_EXPORT ovrpResult ovrp_GetSpaceBoundingBox2D(const ovrpSpace* space, ovrpRectf* rect); - -OVRP_EXPORT ovrpResult ovrp_GetSpaceBoundingBox3D(const ovrpSpace* space, ovrpBoundsf* bounds); - -OVRP_EXPORT ovrpResult ovrp_GetSpaceSemanticLabels(const ovrpSpace* space, ovrpSemanticLabels* labels); - -OVRP_EXPORT ovrpResult ovrp_GetSpaceRoomLayout(const ovrpSpace* space, ovrpRoomLayout* layout); - -OVRP_EXPORT ovrpResult ovrp_GetSpaceBoundary2D(const ovrpSpace* space, ovrpBoundary2D* boundary); - -OVRP_EXPORT ovrpResult ovrp_RequestSceneCapture(const ovrpSceneCaptureRequest* request, ovrpUInt64* requestId); - - - - - - - - - - - - - - - - - - -OVRP_EXPORT ovrpResult ovrp_GetSpaceTriangleMesh(const ovrpSpace* space, ovrpTriangleMesh* triangleMeshOutput); - - - - - - - - - - - - - - - - - -OVRP_EXPORT ovrpResult ovrp_GetFaceTrackingEnabled(ovrpBool* faceTrackingEnabled); - -OVRP_EXPORT ovrpResult ovrp_GetFaceTrackingSupported(ovrpBool* faceTrackingSupported); - -OVRP_EXPORT ovrpResult ovrp_GetFaceState(ovrpStep step, int frameIndex, ovrpFaceState* faceState); - -OVRP_EXPORT ovrpResult ovrp_GetFaceState2(ovrpStep step, int frameIndex, ovrpFaceState2* faceState); - -OVRP_EXPORT ovrpResult ovrp_GetFaceVisemesState(ovrpStep step, int frameIndex, ovrpFaceVisemesState* faceVisemesState); -OVRP_EXPORT ovrpResult ovrp_SetFaceTrackingVisemesEnabled(ovrpBool enabled); - -OVRP_EXPORT ovrpResult ovrp_GetEyeTrackingEnabled(ovrpBool* eyeTrackingEnabled); - -OVRP_EXPORT ovrpResult ovrp_GetEyeTrackingSupported(ovrpBool* eyeTrackingSupported); - -OVRP_EXPORT ovrpResult ovrp_GetEyeGazesState(ovrpStep step, int frameIndex, ovrpEyeGazesState* eyeGazesState); - - - - - - - - -// XR_META_colocation_discovery -OVRP_EXPORT ovrpResult ovrp_StartColocationDiscovery(ovrpUInt64* requestId); -OVRP_EXPORT ovrpResult ovrp_StopColocationDiscovery(ovrpUInt64* requestId); -OVRP_EXPORT ovrpResult -ovrp_StartColocationAdvertisement(const ovrpColocationAdvertisementStartInfo* info, ovrpUInt64* requestId); -OVRP_EXPORT ovrpResult ovrp_StopColocationAdvertisement(ovrpUInt64* requestId); - -OVRP_EXPORT ovrpResult -ovrp_FeatureFidelitySetFeatureEnable(ovrpFeatureType feature, ovrpFeatureEnableState featureEnableState); -OVRP_EXPORT ovrpResult -ovrp_FeatureFidelitySetFeatureFidelity(ovrpFeatureType feature, ovrpFeatureFidelity featureFidelity); -OVRP_EXPORT ovrpResult ovrp_FeatureFidelityGetFeatureState( - ovrpFeatureType feature, - ovrpFeatureState* outIdealState, - ovrpFeatureState* outCurrentState); - - - - - - - - - - - - - - - - -OVRP_EXPORT ovrpResult ovrp_GetLocalDimmingSupported(ovrpBool* localDimmingSupported); -OVRP_EXPORT ovrpResult ovrp_SetLocalDimming(ovrpBool localDimmingMode); -OVRP_EXPORT ovrpResult ovrp_GetLocalDimming(ovrpBool* localDimmingMode); - -OVRP_EXPORT ovrpResult ovrp_GetCurrentInteractionProfile(ovrpHand hand, ovrpInteractionProfile* interactionProfile); - - - - - - - - - - - - - -OVRP_EXPORT ovrpResult ovrp_GetLayerRecommendedResolution(int layerId, ovrpSizei* recommendedDimensions); -OVRP_EXPORT ovrpResult ovrp_GetEyeLayerRecommendedResolution(ovrpSizei* recommendedDimensions); - - - - - -OVRP_EXPORT ovrpResult ovrp_RegisterOpenXREventHandler(ovrpOpenXrEventHandler eventHandler, void* context); -OVRP_EXPORT ovrpResult ovrp_UnregisterOpenXREventHandler(ovrpOpenXrEventHandler eventHandler); - -OVRP_EXPORT ovrpResult ovrp_GetOpenXRInstanceProcAddrFunc(void** func); - -OVRP_EXPORT ovrpResult ovrp_DiscoverSpaces(const ovrpSpaceDiscoveryInfo* info, ovrpUInt64* requestId); - -OVRP_EXPORT ovrpResult ovrp_RetrieveSpaceDiscoveryResults(ovrpUInt64 requestId, ovrpSpaceDiscoveryResults* results); - -OVRP_EXPORT ovrpResult ovrp_SaveSpaces(ovrpUInt32 spaceCount, const ovrpSpace* spaces, ovrpUInt64* requestId); - -OVRP_EXPORT ovrpResult ovrp_EraseSpaces( - ovrpUInt32 spaceCount, - const ovrpSpace* spaces, - ovrpUInt32 uuidCount, - const ovrpUuid* uuids, - ovrpUInt64* requestId); - - - - - - -OVRP_EXPORT ovrpResult ovrp_RequestBoundaryVisibility(ovrpBoundaryVisibility boundaryVisibility); -OVRP_EXPORT ovrpResult ovrp_GetBoundaryVisibility(ovrpBoundaryVisibility* boundaryVisibility); - - - - - - - - -OVRP_EXPORT ovrpResult ovrp_IsLayerShapeSupported(ovrpShape shape, ovrpBool* isLayerShapeSupported); - -OVRP_EXPORT ovrpResult ovrp_GetEnvironmentDepthSupported(ovrpBool* supported); -OVRP_EXPORT ovrpResult ovrp_GetEnvironmentDepthHandRemovalSupported(ovrpBool* supported); -OVRP_EXPORT ovrpResult ovrp_InitializeEnvironmentDepth(int createFlags); -OVRP_EXPORT ovrpResult ovrp_DestroyEnvironmentDepth(); -OVRP_EXPORT ovrpResult ovrp_GetEnvironmentDepthTextureDesc(ovrpEnvironmentDepthTextureDesc* desc); -OVRP_EXPORT ovrpResult ovrp_GetEnvironmentDepthTextureStageCount(int* stageCount); -OVRP_EXPORT ovrpResult ovrp_GetEnvironmentDepthTexture(int stage, ovrpEye eyeId, ovrpTextureHandle* texture); -OVRP_EXPORT ovrpResult ovrp_SetEnvironmentDepthHandRemoval(ovrpBool enabled); -OVRP_EXPORT ovrpResult ovrp_StartEnvironmentDepth(); -OVRP_EXPORT ovrpResult ovrp_StopEnvironmentDepth(); -OVRP_EXPORT ovrpResult ovrp_GetEnvironmentDepthFrameDesc(ovrpEye eyeId, ovrpEnvironmentDepthFrameDesc* frameDesc); - -OVRP_EXPORT ovrpResult ovrp_CreateDynamicObjectTracker(ovrpDynamicObjectTracker* trackerOut); -OVRP_EXPORT ovrpResult ovrp_DestroyDynamicObjectTracker(ovrpDynamicObjectTracker tracker); -OVRP_EXPORT ovrpResult ovrp_SetDynamicObjectTrackedClasses( - ovrpDynamicObjectTracker tracker, - const ovrpDynamicObjectTrackedClassesSetInfo* setInfo); -OVRP_EXPORT ovrpResult ovrp_GetSpaceDynamicObjectData(const ovrpSpace* space, ovrpDynamicObjectData* data); -OVRP_EXPORT ovrpResult ovrp_GetDynamicObjectTrackerSupported(ovrpBool* supported); -OVRP_EXPORT ovrpResult ovrp_GetDynamicObjectKeyboardSupported(ovrpBool* supported); - - - - - - - - - - - - - - - - - - -OVRP_EXPORT ovrpResult ovrp_SetDualCoreBoostEnabled(ovrpBool enabled); -OVRP_EXPORT ovrpResult ovrp_SetProcessorFavor(int favorEnum); -OVRP_EXPORT ovrpResult ovrp_GetLowPowerModeEnabled(ovrpBool* enabled); - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -// XR_EXT_future -OVRP_EXPORT ovrpResult ovrp_PollFuture(ovrpFuture future, ovrpFutureState* state); -OVRP_EXPORT ovrpResult ovrp_CancelFuture(ovrpFuture future); - -OVRP_EXPORT ovrpResult ovrp_GetGroupId(ovrpUuid* groupId); -OVRP_EXPORT ovrpResult ovrp_SetExternalLayerDynresEnabled(ovrpBool enabled); - - - - - - - - - - - -OVRP_EXPORT ovrpResult ovrp_SendMicrogestureHint(); - - - - - - - - - -OVRP_EXPORT void ovrp_AllowVisibilityMask(ovrpBool enabled); - -#ifdef __cplusplus -} -#endif - -#endif diff --git a/Plugins/MetaXR/Source/Thirdparty/OVRPlugin/OVRPlugin/Include/OVR_Plugin_Deprecated.h b/Plugins/MetaXR/Source/Thirdparty/OVRPlugin/OVRPlugin/Include/OVR_Plugin_Deprecated.h deleted file mode 100644 index 5e35ad8..0000000 --- a/Plugins/MetaXR/Source/Thirdparty/OVRPlugin/OVRPlugin/Include/OVR_Plugin_Deprecated.h +++ /dev/null @@ -1,430 +0,0 @@ -/* - * Copyright (c) Meta Platforms, Inc. and affiliates. - * All rights reserved. - * - * Licensed under the Oculus SDK License Agreement (the "License"); - * you may not use the Oculus SDK except in compliance with the License, - * which is provided at the time of installation or download, or which - * otherwise accompanies this software in either electronic or hard copy form. - * - * You may obtain a copy of the License at - * - * https://developer.oculus.com/licenses/oculussdk/ - * - * Unless required by applicable law or agreed to in writing, the Oculus SDK - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#ifndef OVR_Plugin_Deprecated_h -#define OVR_Plugin_Deprecated_h - -#include "OVR_Plugin.h" -#include "OVR_Plugin_Types_Deprecated.h" - -#ifdef __cplusplus -extern "C" { -#endif - -// Deprecated to avoid an extra shutdown/initialize on the mobile side -OVRP_EXPORT ovrpResult ovrp_PreInitialize3(void* activity); - -// Deprecated for adding an ovrpPreinitializeFlags parameter -OVRP_EXPORT ovrpResult ovrp_PreInitialize4(void* activity, ovrpRenderAPIType apiType); - -// Deprecated for getting extra Vulkan paramters from Unity Oculus XR Plugin -OVRP_EXPORT ovrpResult ovrp_Initialize6( - ovrpRenderAPIType apiType, - ovrpLogCallback logCallback, - void* activity, - void* vkInstance, - void* vkPhysicalDevice, - void* vkDevice, - void* vkQueue, - void* vkGetInstanceProcAddr, // PFN_vkGetInstanceProcAddr - unsigned int vkQueueFamilyIndex, - int initializeFlags, - OVRP_CONSTREF(ovrpVersion) version); - -OVRP_EXPORT ovrpResult ovrp_Initialize5( - ovrpRenderAPIType apiType, - ovrpLogCallback logCallback, - void* activity, - void* vkInstance, - void* vkPhysicalDevice, - void* vkDevice, - void* vkQueue, - int initializeFlags, - OVRP_CONSTREF(ovrpVersion) version); - -// Deprecated by VRAPI_Vulkan changes -OVRP_EXPORT ovrpResult ovrp_PreInitialize2(); - -OVRP_EXPORT ovrpResult ovrp_Initialize4( - ovrpRenderAPIType apiType, - ovrpLogCallback logCallback, - void* activity, - void* instance, - int initializeFlags, - OVRP_CONSTREF(ovrpVersion) version); - -// Deprecated by CAPI_Vulkan changes -OVRP_EXPORT ovrpResult ovrp_Initialize3( - ovrpRenderAPIType apiType, - ovrpLogCallback logCallback, - void* activity, - int initializeFlags, - OVRP_CONSTREF(ovrpVersion)); - -OVRP_EXPORT ovrpResult ovrp_BeginFrame3(int frameIndex); - -OVRP_EXPORT ovrpResult -ovrp_EndFrame3(int frameIndex, ovrpLayerSubmit const* const* layerSubmitPtrs, int layerSubmitCount); - -// Deprecated by WaitToBeginFrame/BeginFrame/EndFrame changes -OVRP_EXPORT ovrpResult ovrp_BeginFrame2(int frameIndex); - -OVRP_EXPORT ovrpResult -ovrp_EndFrame2(int frameIndex, ovrpLayerSubmit const* const* layerSubmitPtrs, int layerSubmitCount); - -// Deprecated by ovrpResult changes -OVRP_EXPORT ovrpBool ovrp_PreInitialize(); -OVRP_EXPORT ovrpBool ovrp_Shutdown(); -OVRP_EXPORT const char* ovrp_GetVersion(); -OVRP_EXPORT const char* ovrp_GetNativeSDKVersion(); -OVRP_EXPORT void* ovrp_GetNativeSDKPointer(); -OVRP_EXPORT const void* ovrp_GetDisplayAdapterId(); -OVRP_EXPORT const void* ovrp_GetAudioOutId(); -OVRP_EXPORT const void* ovrp_GetAudioOutDeviceId(); -OVRP_EXPORT const void* ovrp_GetAudioInId(); -OVRP_EXPORT const void* ovrp_GetAudioInDeviceId(); -OVRP_EXPORT ovrpBool ovrp_SetupDistortionWindow2(int flags); -OVRP_EXPORT ovrpBool ovrp_DestroyDistortionWindow(); - -OVRP_EXPORT ovrpBool -ovrp_SetupMirrorTexture(void* device, int height, int width, ovrpTextureFormat format, ovrpTextureHandle* result); - -OVRP_EXPORT ovrpBool ovrp_DestroyMirrorTexture(); -OVRP_EXPORT float ovrp_GetAdaptiveGpuPerformanceScale(); -OVRP_EXPORT float ovrp_GetAppCpuStartToGpuEndTime(); -OVRP_EXPORT ovrpVector2f ovrp_GetEyePixelsPerTanAngleAtCenter(int eyeIndex); -OVRP_EXPORT ovrpVector3f ovrp_GetHmdToEyeOffset(int eyeIndex); -OVRP_EXPORT ovrpBool ovrp_Update2(ovrpStep step, int frameIndex, double predictionSeconds); -OVRP_EXPORT ovrpBool ovrp_BeginFrame(int frameIndex); -OVRP_EXPORT ovrpBool ovrp_GetTrackingOrientationSupported(); -OVRP_EXPORT ovrpBool ovrp_GetTrackingOrientationEnabled(); -OVRP_EXPORT ovrpBool ovrp_SetTrackingOrientationEnabled(ovrpBool value); -OVRP_EXPORT ovrpBool ovrp_GetTrackingPositionSupported(); -OVRP_EXPORT ovrpBool ovrp_GetTrackingPositionEnabled(); -OVRP_EXPORT ovrpBool ovrp_SetTrackingPositionEnabled(ovrpBool value); -OVRP_EXPORT ovrpBool ovrp_GetTrackingIPDEnabled(); -OVRP_EXPORT ovrpBool ovrp_SetTrackingIPDEnabled(ovrpBool value); -OVRP_EXPORT ovrpPosef ovrp_GetTrackingCalibratedOrigin(); -OVRP_EXPORT ovrpBool ovrpi_SetTrackingCalibratedOrigin(); -OVRP_EXPORT ovrpTrackingOrigin ovrp_GetTrackingOriginType(); -OVRP_EXPORT ovrpBool ovrp_SetTrackingOriginType(ovrpTrackingOrigin originType); -OVRP_EXPORT ovrpBool ovrp_RecenterTrackingOrigin(unsigned int flags); -OVRP_EXPORT ovrpBool ovrp_GetNodePresent(ovrpNode nodeId); -OVRP_EXPORT ovrpBool ovrp_GetNodeOrientationTracked(ovrpNode nodeId); -OVRP_EXPORT ovrpBool ovrp_GetNodePositionTracked(ovrpNode nodeId); -OVRP_EXPORT ovrpBool ovrp_SetNodePositionTracked(ovrpNode nodeId, ovrpBool tracked); -OVRP_EXPORT ovrpPoseStatef ovrp_GetNodePoseState(ovrpStep step, ovrpNode nodeId); -OVRP_EXPORT ovrpControllerState ovrp_GetControllerState(ovrpController controllerMask); -OVRP_EXPORT ovrpControllerState2 ovrp_GetControllerState2(ovrpController controllerMask); -OVRP_EXPORT ovrpResult ovrp_GetControllerState3(ovrpController controllerMask, ovrpControllerState2* controllerState); -OVRP_EXPORT ovrpController ovrp_GetActiveController(); -OVRP_EXPORT ovrpController ovrp_GetConnectedControllers(); - -OVRP_EXPORT ovrpBool ovrp_SetControllerVibration(ovrpController controllerMask, float frequency, float amplitude); - -OVRP_EXPORT ovrpHapticsDesc ovrp_GetControllerHapticsDesc(ovrpController controllerMask); -OVRP_EXPORT ovrpHapticsState ovrp_GetControllerHapticsState(ovrpController controllerMask); - -OVRP_EXPORT ovrpBool ovrp_SetControllerHaptics(ovrpController controllerMask, ovrpHapticsBuffer hapticsBuffer); - -OVRP_EXPORT int ovrp_GetSystemCpuLevel(); -OVRP_EXPORT ovrpBool ovrp_SetSystemCpuLevel(int value); -OVRP_EXPORT ovrpBool ovrp_SetAppCPUPriority(ovrpBool priority); -OVRP_EXPORT ovrpBool ovrp_GetAppCPUPriority(); -OVRP_EXPORT int ovrp_GetSystemGpuLevel(); -OVRP_EXPORT ovrpBool ovrp_SetSystemGpuLevel(int value); -OVRP_EXPORT ovrpBool ovrp_GetSystemPowerSavingMode(); -OVRP_EXPORT float ovrp_GetSystemDisplayFrequency(); -OVRP_EXPORT int ovrp_GetSystemVSyncCount(); -OVRP_EXPORT ovrpBool ovrp_SetSystemVSyncCount(int value); -OVRP_EXPORT float ovrp_GetSystemVolume(); -OVRP_EXPORT ovrpBool ovrp_GetSystemHeadphonesPresent(); -OVRP_EXPORT ovrpBatteryStatus ovrp_GetSystemBatteryStatus(); -OVRP_EXPORT float ovrp_GetSystemBatteryLevel(); -OVRP_EXPORT float ovrp_GetSystemBatteryTemperature(); -OVRP_EXPORT const char* ovrp_GetSystemProductName(); -OVRP_EXPORT ovrpSystemRegion ovrp_GetSystemRegion(); -OVRP_EXPORT ovrpBool ovrp_ShowSystemUI(ovrpUI ui); -OVRP_EXPORT ovrpBool ovrp_GetAppHasVrFocus(); -OVRP_EXPORT ovrpBool ovrp_GetAppShouldQuit(); -OVRP_EXPORT ovrpBool ovrp_GetAppShouldRecenter(); -OVRP_EXPORT ovrpBool ovrp_GetAppShouldRecreateDistortionWindow(); -OVRP_EXPORT const char* ovrp_GetAppLatencyTimings(); - -OVRP_EXPORT ovrpBool ovrp_SetAppEngineInfo(const char* engineName, const char* engineVersion, ovrpBool isEditor); - -OVRP_EXPORT ovrpBool ovrp_GetUserPresent(); -OVRP_EXPORT float ovrp_GetUserIPD(); -OVRP_EXPORT ovrpBool ovrp_SetUserIPD(float value); -OVRP_EXPORT float ovrp_GetUserEyeHeight(); -OVRP_EXPORT ovrpBool ovrp_SetUserEyeHeight(float value); -OVRP_EXPORT ovrpVector2f ovrp_GetUserNeckEyeDistance(); -OVRP_EXPORT ovrpBool ovrp_SetUserNeckEyeDistance(ovrpVector2f value); -OVRP_EXPORT ovrpBool ovrp_SetupDisplayObjects(void* device, void* display, void* window); -OVRP_EXPORT ovrpBool ovrp_GetSystemMultiViewSupported(); -OVRP_EXPORT ovrpBool ovrp_GetEyeTextureArraySupported(); -OVRP_EXPORT ovrpBool ovrp_GetBoundaryConfigured(); - -OVRP_EXPORT ovrpBoundaryTestResult ovrp_TestBoundaryNode(ovrpNode node, ovrpBoundaryType boundaryType); - -OVRP_EXPORT ovrpBoundaryTestResult ovrp_TestBoundaryPoint(ovrpVector3f point, ovrpBoundaryType boundaryType); - -OVRP_EXPORT ovrpBool ovrp_GetBoundaryGeometry2(ovrpBoundaryType boundaryType, ovrpVector3f* points, int* pointsCount); - -OVRP_EXPORT ovrpVector3f ovrp_GetBoundaryDimensions(ovrpBoundaryType boundaryType); -OVRP_EXPORT ovrpBool ovrp_GetBoundaryVisible(); -OVRP_EXPORT ovrpBool ovrp_SetBoundaryVisible(ovrpBool value); -OVRP_EXPORT ovrpSystemHeadset ovrp_GetSystemHeadsetType(); -OVRP_EXPORT ovrpAppPerfStats ovrp_GetAppPerfStats(); -OVRP_EXPORT ovrpBool ovrp_ResetAppPerfStats(); -OVRP_EXPORT float ovrp_GetAppFramerate(); -OVRP_EXPORT int ovrp_GetSystemRecommendedMSAALevel(); -OVRP_EXPORT ovrpBool ovrp_SetInhibitSystemUX(ovrpBool value); -OVRP_EXPORT ovrpBool ovrp_SetDebugDumpEnabled(ovrpBool value); - -// Deprecated by UE4 integration changes -OVRP_EXPORT ovrpBool -ovrp_Initialize2(ovrpRenderAPIType apiType, ovrpLogCallback logCallback, ovrpBool supportsMixedRendering); - -OVRP_EXPORT ovrpBool ovrp_SetupDistortionWindow(); - -OVRP_EXPORT ovrpBool ovrp_SetupEyeTexture2( - ovrpEye eyeId, - int stage, - void* device, - int height, - int width, - int samples, - ovrpTextureFormat format, - void* result); - -OVRP_EXPORT ovrpBool ovrp_DestroyEyeTexture(ovrpEye eyeId, int stage); -OVRP_EXPORT ovrpSizei ovrp_GetEyeTextureSize(ovrpEye eyeId); -OVRP_EXPORT int ovrp_GetEyeTextureStageCount(); -OVRP_EXPORT float ovrp_GetEyeRecommendedResolutionScale(); -OVRP_EXPORT ovrpBool ovrp_GetEyeTextureFlippedY(); -OVRP_EXPORT ovrpBool ovrp_SetEyeTextureFlippedY(ovrpBool value); -OVRP_EXPORT ovrpBool ovrp_GetEyeTextureShared(); -OVRP_EXPORT ovrpBool ovrp_SetEyeTextureShared(ovrpBool value); -OVRP_EXPORT float ovrp_GetEyeTextureScale(); -OVRP_EXPORT ovrpBool ovrp_SetEyeTextureScale(float value); -OVRP_EXPORT float ovrp_GetEyeViewportScale(); -OVRP_EXPORT ovrpBool ovrp_SetEyeViewportScale(float value); - -OVRP_EXPORT ovrpBool ovrp_GetEyeOcclusionMesh(int eyeIndex, float** vertices, int** indices, int* indexCount); - -OVRP_EXPORT ovrpBool ovrp_GetEyeOcclusionMeshEnabled(); -OVRP_EXPORT ovrpBool ovrp_SetEyeOcclusionMeshEnabled(ovrpBool value); -OVRP_EXPORT ovrpTextureFormat ovrp_GetDesiredEyeTextureFormat(); -OVRP_EXPORT ovrpBool ovrp_SetDesiredEyeTextureFormat(ovrpTextureFormat value); -OVRP_EXPORT ovrpBool ovrp_GetEyePreviewRect(int eyeIndex, ovrpRecti* outputRect); -OVRP_EXPORT ovrpBool ovrp_GetAppChromaticCorrection(); -OVRP_EXPORT ovrpBool ovrp_SetAppChromaticCorrection(ovrpBool value); -OVRP_EXPORT ovrpResult ovrp_GetReorientHMDOnControllerRecenter(ovrpBool* recenter); -OVRP_EXPORT ovrpResult ovrp_SetReorientHMDOnControllerRecenter(ovrpBool recenter); -OVRP_EXPORT ovrpBool ovrp_EndEye(ovrpEye eye); -OVRP_EXPORT ovrpBool ovrp_EndFrame(int frameIndex); -OVRP_EXPORT ovrpBool ovrpi_SetTrackingCalibratedOrigin(); -OVRP_EXPORT ovrpPosef ovrp_GetNodeVelocity2(ovrpStep step, ovrpNode nodeId); -OVRP_EXPORT ovrpPosef ovrp_GetNodeAcceleration2(ovrpStep step, ovrpNode nodeId); -OVRP_EXPORT ovrpFrustumf ovrp_GetNodeFrustum(ovrpNode nodeId); -OVRP_EXPORT ovrpBool ovrp_GetAppMonoscopic(); -OVRP_EXPORT ovrpBool ovrp_SetAppMonoscopic(ovrpBool value); -OVRP_EXPORT ovrpBool ovrp_GetAppSRGB(); -OVRP_EXPORT ovrpBool ovrp_SetAppSRGB(ovrpBool value); -OVRP_EXPORT float ovrp_GetUserEyeDepth(); -OVRP_EXPORT ovrpBool ovrp_SetUserEyeDepth(float value); -OVRP_EXPORT ovrpBool ovrp_SetEyeTextureArrayEnabled(ovrpBool value); -OVRP_EXPORT ovrpBool ovrp_GetEyeTextureArrayEnabled(); -OVRP_EXPORT ovrpResult ovrp_GetAppAsymmetricFov(ovrpBool* useAsymmetricFov); -OVRP_EXPORT ovrpResult ovrp_SetAppAsymmetricFov(ovrpBool value); - - -OVRP_EXPORT ovrpBool ovrp_SetOverlayQuad3( - unsigned int flags, - void* textureLeft, - void* textureRight, - void* device, - ovrpPosef pose, - ovrpVector3f scale, - int layerIndex); - -OVRP_EXPORT ovrpResult ovrp_EnqueueSetupLayer(ovrpLayerDesc* desc, int* layerId); - -OVRP_EXPORT ovrpResult ovrp_EnqueueSetupLayer2(ovrpLayerDesc* desc, int compositionDepth, int* layerId); - -OVRP_EXPORT ovrpResult ovrp_EnqueueDestroyLayer(int* layerId); - -OVRP_EXPORT ovrpResult ovrp_GetLayerTexturePtr(int layerId, int stage, ovrpEye eyeId, void** texturePtr); - -OVRP_EXPORT ovrpResult ovrp_EnqueueSubmitLayer( - unsigned int flags, - void* textureLeft, - void* textureRight, - int layerId, - int frameIndex, - OVRP_CONSTREF(ovrpPosef) pose, - OVRP_CONSTREF(ovrpVector3f) scale, - int layerIndex); - -OVRP_EXPORT ovrpResult ovrp_EnqueueSubmitLayer2( - unsigned int flags, - void* textureLeft, - void* textureRight, - int layerId, - int frameIndex, - OVRP_CONSTREF(ovrpPosef) pose, - OVRP_CONSTREF(ovrpVector3f) scale, - int layerIndex, - ovrpBool overrideTextureRectMatrix, - OVRP_CONSTREF(ovrpTextureRectMatrixf) textureRectMatrix, - ovrpBool overridePerLayerColorScaleAndOffset, - OVRP_CONSTREF(ovrpVector4f) colorScale, - OVRP_CONSTREF(ovrpVector4f) colorOffset); - - - - - - - - - - - - - - - - - - - - - -// Previously deprecated -OVRP_EXPORT ovrpBool ovrp_Initialize(ovrpRenderAPIType apiType, void* platformArgs); -OVRP_EXPORT ovrpBoundaryGeometry ovrp_GetBoundaryGeometry(ovrpBoundaryType boundaryType); -OVRP_EXPORT void* ovrp_GetNativePointer(); -OVRP_EXPORT ovrpBool ovrp_DismissHSW(); -OVRP_EXPORT void* ovrp_GetAdapterId(); -OVRP_EXPORT int ovrp_GetBufferCount(); -OVRP_EXPORT ovrpBool ovrp_SetEyeTexture(ovrpEye eyeId, void* texture, void* device); - -OVRP_EXPORT ovrpBool ovrp_RecreateEyeTexture( - ovrpEye eyeId, - int stage, - void* device, - int height, - int width, - int samples, - ovrpBool isSRGB, - void* result); - -OVRP_EXPORT ovrpBool ovrp_ReleaseEyeTexture(ovrpEye eyeId, int stage); -OVRP_EXPORT ovrpPosef ovrp_GetEyePose(ovrpEye eyeId); -OVRP_EXPORT ovrpPosef ovrp_GetEyeVelocity(ovrpEye eyeId); -OVRP_EXPORT ovrpPosef ovrp_GetEyeAcceleration(ovrpEye eyeId); -OVRP_EXPORT ovrpFrustumf ovrp_GetEyeFrustum(ovrpEye eyeId); -OVRP_EXPORT ovrpPosef ovrp_GetTrackerPose(ovrpTracker trackerId); -OVRP_EXPORT ovrpFrustumf ovrp_GetTrackerFrustum(ovrpTracker trackerId); -OVRP_EXPORT ovrpBool ovrp_RecenterPose(); -OVRP_EXPORT ovrpInputState ovrp_GetInputState(ovrpController controllerMask); -OVRP_EXPORT ovrpBatteryStatus ovrp_GetBatteryStatus(); -OVRP_EXPORT ovrpBool ovrp_ShowUI(ovrpUI ui); -OVRP_EXPORT ovrpCaps ovrp_GetCaps(); -OVRP_EXPORT unsigned int ovrp_GetCaps2(unsigned int query); -OVRP_EXPORT ovrpBool ovrp_SetCaps(ovrpCaps caps); -OVRP_EXPORT ovrpStatus ovrp_GetStatus(); -OVRP_EXPORT unsigned int ovrp_GetStatus2(unsigned int query); -OVRP_EXPORT float ovrp_GetFloat(ovrpKey key); -OVRP_EXPORT ovrpBool ovrp_SetFloat(ovrpKey key, float value); -OVRP_EXPORT const char* ovrp_GetString(ovrpKey key); - -OVRP_EXPORT ovrpBool -ovrp_SetOverlayQuad(ovrpBool onTop, void* texture, void* device, ovrpPosef pose, ovrpVector3f scale); - -OVRP_EXPORT ovrpBool ovrp_SetOverlayQuad2( - ovrpBool onTop, - ovrpBool headLocked, - void* texture, - void* device, - ovrpPosef pose, - ovrpVector3f scale); - -OVRP_EXPORT ovrpResult ovrp_CalculateEyeLayerDesc( - ovrpLayout layout, - float textureScale, - int mipLevels, - int sampleCount, - ovrpTextureFormat format, - int layerFlags, - ovrpLayerDesc_EyeFov* layerDesc); - -OVRP_EXPORT ovrpBool ovrp_SetAppIgnoreVrFocus(ovrpBool value); -OVRP_EXPORT ovrpBool ovrp_GetHeadphonesPresent(); -OVRP_EXPORT ovrpBool ovrp_Update(int frameIndex); -OVRP_EXPORT ovrpPosef ovrp_GetNodePose(ovrpNode nodeId); -OVRP_EXPORT ovrpPosef ovrp_GetNodeVelocity(ovrpNode nodeId); -OVRP_EXPORT ovrpPosef ovrp_GetNodeAcceleration(ovrpNode nodeId); - -/// Gets the texture handle for a specific layer stage and eye. -OVRP_EXPORT ovrpResult ovrp_GetLayerTexture(int layerId, int stage, ovrpEye eyeId, ovrpTextureHandle* textureHandle); - -OVRP_EXPORT ovrpBool ovrp_SetupEyeTexture( - ovrpEye eyeId, - int stage, - void* device, - int height, - int width, - int samples, - ovrpBool isSRGB, - void* result); - -OVRP_EXPORT ovrpPosef ovrp_GetNodePose2(ovrpStep step, ovrpNode nodeId); - -OVRP_EXPORT ovrpResult ovrp_SetFunctionPointer(ovrpFunctionType funcType, void* funcPtr); - -// Return success if updating depth info is finished -OVRP_EXPORT ovrpResult ovrp_SetDepthCompositingInfo(float zNear, float zFar, ovrpBool isReverseZ); - -OVRP_EXPORT ovrpResult ovrp_SetOctilinearInfo(ovrpOctilinearLayout OctilinearLayout[ovrpEye_Count]); - -/// Gets the current pose, acceleration, and velocity of the given node on the given update cadence. -OVRP_EXPORT ovrpResult ovrp_GetNodePoseState2(ovrpStep step, ovrpNode nodeId, ovrpPoseStatef* nodePoseState); - -// Called by Unity render thread after finished each eye rendering -OVRP_EXPORT ovrpResult ovrp_EndEye2(ovrpEye eye, int frameIndex); - -// Update depth projection info, this is a replacement of ovrp_SetDepthCompositingInfo for more generic purpose -OVRP_EXPORT ovrpResult ovrp_SetDepthProjInfo(float zNear, float zFar, ovrpBool isReverseZ); - -// Deprecated -OVRP_EXPORT ovrpResult ovrp_SetASWEnable(ovrpBool enable); - -// Deprecated -OVRP_EXPORT ovrpResult ovrp_GetASWEnable(ovrpBool* enable); - -OVRP_EXPORT ovrpResult ovrp_GetSkeleton(ovrpSkeletonType skeletonType, ovrpSkeleton* skeleton); -#ifdef __cplusplus -} -#endif - -#endif diff --git a/Plugins/MetaXR/Source/Thirdparty/OVRPlugin/OVRPlugin/Include/OVR_Plugin_Insight.h b/Plugins/MetaXR/Source/Thirdparty/OVRPlugin/OVRPlugin/Include/OVR_Plugin_Insight.h deleted file mode 100644 index dae6808..0000000 --- a/Plugins/MetaXR/Source/Thirdparty/OVRPlugin/OVRPlugin/Include/OVR_Plugin_Insight.h +++ /dev/null @@ -1,119 +0,0 @@ -/* - * Copyright (c) Meta Platforms, Inc. and affiliates. - * All rights reserved. - * - * Licensed under the Oculus SDK License Agreement (the "License"); - * you may not use the Oculus SDK except in compliance with the License, - * which is provided at the time of installation or download, or which - * otherwise accompanies this software in either electronic or hard copy form. - * - * You may obtain a copy of the License at - * - * https://developer.oculus.com/licenses/oculussdk/ - * - * Unless required by applicable law or agreed to in writing, the Oculus SDK - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#ifndef OVR_Plugin_Insight_h -#define OVR_Plugin_Insight_h - -#include "OVR_Plugin_Types.h" - -#include - -#ifdef __cplusplus -extern "C" { -#endif - -/// Tests if Insight Passthrough is supported on the device -OVRP_EXPORT ovrpResult ovrp_IsInsightPassthroughSupported(ovrpBool* supported); - -/// Initialize Insight Passthrough functionality -OVRP_EXPORT ovrpResult ovrp_InitializeInsightPassthrough(); - -/// Shutdown Insight Passthrough functionality -OVRP_EXPORT ovrpResult ovrp_ShutdownInsightPassthrough(); - -/// Check whether Insight Passthrough functionality has been initialized -OVRP_EXPORT ovrpBool ovrp_GetInsightPassthroughInitialized(); - -/// Check whether Insight Passthrough functionality has been initialized -OVRP_EXPORT ovrpResult ovrp_GetInsightPassthroughInitializationState(); - -/// Create and initialize an Insight Passthrough triangle mesh -OVRP_EXPORT ovrpResult ovrp_CreateInsightTriangleMesh( - int layerId, - float* vertices, - int vertexCount, - int* triangles, - int triangleCount, - uint64_t* outMeshHandle); - -/// Destroy a triangle mesh -OVRP_EXPORT ovrpResult ovrp_DestroyInsightTriangleMesh(uint64_t meshHandle); - -/// Add a triangle mesh to the passthrough projection surface -OVRP_EXPORT ovrpResult ovrp_AddInsightPassthroughSurfaceGeometry( - int layerId, - uint64_t meshHandle, - ovrpMatrix4f transformation, - uint64_t* geometryInstanceHandle); - -/// Remove a geometry instance from the passthrough projection surface and destroy it. -OVRP_EXPORT ovrpResult ovrp_DestroyInsightPassthroughGeometryInstance(uint64_t geometryInstanceHandle); - -/// Update a transform of a geometry instance. -OVRP_EXPORT ovrpResult -ovrp_UpdateInsightPassthroughGeometryTransform(uint64_t geometryInstanceHandle, ovrpMatrix4f transformation); - -OVRP_EXPORT ovrpResult ovrp_SetInsightPassthroughStyle(int layerId, ovrpInsightPassthroughStyle style); - -// Set hands intensity -OVRP_EXPORT ovrpResult -ovrp_SetInsightPassthroughKeyboardHandsIntensity(int layerId, ovrpInsightPassthroughKeyboardHandsIntensity intensity); - -// Gets passthrough capabilities. -OVRP_EXPORT ovrpResult ovrp_GetPassthroughCapabilityFlags(ovrpInsightPassthroughCapabilityFlags* capabilities); -OVRP_EXPORT ovrpResult ovrp_GetPassthroughCapabilities(ovrpInsightPassthroughCapabilities* capabilities); - -OVRP_EXPORT ovrpResult ovrp_SetInsightPassthroughStyle2(int layerId, const ovrpInsightPassthroughStyle* style); - -OVRP_EXPORT ovrpResult ovrp_CreatePassthroughColorLut( - ovrpPassthroughColorLutChannels channels, - ovrpUInt32 resolution, - ovrpPassthroughColorLutData data, - ovrpPassthroughColorLut* colorLut); - -OVRP_EXPORT ovrpResult ovrp_DestroyPassthroughColorLut(ovrpPassthroughColorLut colorLut); - -OVRP_EXPORT ovrpResult -ovrp_UpdatePassthroughColorLut(ovrpPassthroughColorLut colorLut, ovrpPassthroughColorLutData data); - - - - - - - - - - - - - - - - - - -OVRP_EXPORT ovrpResult ovrp_GetPassthroughPreferences(ovrpPassthroughPreferences* preferences); - -#ifdef __cplusplus -} -#endif - -#endif // OVR_Plugin_Insight_h diff --git a/Plugins/MetaXR/Source/Thirdparty/OVRPlugin/OVRPlugin/Include/OVR_Plugin_Ktx.h b/Plugins/MetaXR/Source/Thirdparty/OVRPlugin/OVRPlugin/Include/OVR_Plugin_Ktx.h deleted file mode 100644 index ceaee7a..0000000 --- a/Plugins/MetaXR/Source/Thirdparty/OVRPlugin/OVRPlugin/Include/OVR_Plugin_Ktx.h +++ /dev/null @@ -1,47 +0,0 @@ -/* - * Copyright (c) Meta Platforms, Inc. and affiliates. - * All rights reserved. - * - * Licensed under the Oculus SDK License Agreement (the "License"); - * you may not use the Oculus SDK except in compliance with the License, - * which is provided at the time of installation or download, or which - * otherwise accompanies this software in either electronic or hard copy form. - * - * You may obtain a copy of the License at - * - * https://developer.oculus.com/licenses/oculussdk/ - * - * Unless required by applicable law or agreed to in writing, the Oculus SDK - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#ifndef OVR_Plugin_KtxLoader_h -#define OVR_Plugin_KtxLoader_h - -#include "OVR_Plugin_Types.h" -#include - -#ifdef __cplusplus -extern "C" { -#endif - -OVRP_EXPORT ovrpResult ovrp_KtxLoadFromMemory(unsigned char** data, unsigned int length, ktxTexture2** texture); -OVRP_EXPORT ovrpResult ovrp_KtxDestroy(ktxTexture2* texture); - -OVRP_EXPORT ovrpResult ovrp_KtxNeedsTranscoding(ktxTexture2* texture, bool* needsTranscoding); -OVRP_EXPORT ovrpResult ovrp_KtxTranscode(ktxTexture2* texture, unsigned int format); - -OVRP_EXPORT ovrpResult ovrp_KtxTextureWidth(ktxTexture2* texture, unsigned int* width); -OVRP_EXPORT ovrpResult ovrp_KtxTextureHeight(ktxTexture2* texture, unsigned int* height); -OVRP_EXPORT ovrpResult ovrp_KtxTextureSize(ktxTexture2* texture, unsigned int* size); - -OVRP_EXPORT ovrpResult ovrp_KtxGetTextureData(ktxTexture2* texture, unsigned char* data, unsigned int bufferSize); - -#ifdef __cplusplus -} -#endif - -#endif diff --git a/Plugins/MetaXR/Source/Thirdparty/OVRPlugin/OVRPlugin/Include/OVR_Plugin_Media.h b/Plugins/MetaXR/Source/Thirdparty/OVRPlugin/OVRPlugin/Include/OVR_Plugin_Media.h deleted file mode 100644 index 2f3acba..0000000 --- a/Plugins/MetaXR/Source/Thirdparty/OVRPlugin/OVRPlugin/Include/OVR_Plugin_Media.h +++ /dev/null @@ -1,112 +0,0 @@ -/* - * Copyright (c) Meta Platforms, Inc. and affiliates. - * All rights reserved. - * - * Licensed under the Oculus SDK License Agreement (the "License"); - * you may not use the Oculus SDK except in compliance with the License, - * which is provided at the time of installation or download, or which - * otherwise accompanies this software in either electronic or hard copy form. - * - * You may obtain a copy of the License at - * - * https://developer.oculus.com/licenses/oculussdk/ - * - * Unless required by applicable law or agreed to in writing, the Oculus SDK - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#ifndef OVR_Plugin_Media_h -#define OVR_Plugin_Media_h - -#include "OVR_Plugin_Types.h" - -#ifdef __cplusplus -extern "C" { -#endif - -OVRP_EXPORT ovrpResult ovrp_Media_Initialize(); -OVRP_EXPORT ovrpResult ovrp_Media_Shutdown(); -OVRP_EXPORT ovrpResult ovrp_Media_GetInitialized(ovrpBool* initialized); -OVRP_EXPORT ovrpResult ovrp_Media_Update(); - -OVRP_EXPORT ovrpResult ovrp_Media_GetMrcActivationMode(ovrpMediaMrcActivationMode* activationMode); -OVRP_EXPORT ovrpResult ovrp_Media_SetMrcActivationMode(ovrpMediaMrcActivationMode activationMode); -OVRP_EXPORT ovrpResult ovrp_Media_SetPlatformInitialized(); -OVRP_EXPORT ovrpResult ovrp_Media_GetPlatformCameraMode(ovrpPlatformCameraMode* platformCameraMode); -OVRP_EXPORT ovrpResult ovrp_Media_SetPlatformCameraMode(ovrpPlatformCameraMode platformCameraMode); -OVRP_EXPORT ovrpResult ovrp_Media_IsMrcEnabled(ovrpBool* mrcEnabled); -OVRP_EXPORT ovrpResult ovrp_Media_IsMrcActivated(ovrpBool* mrcActivated); -OVRP_EXPORT ovrpResult ovrp_Media_UseMrcDebugCamera(ovrpBool* useMrcDebugCamera); - -OVRP_EXPORT ovrpResult ovrp_Media_SetMrcInputVideoBufferType(ovrpMediaInputVideoBufferType inputVideoBufferType); -OVRP_EXPORT ovrpResult ovrp_Media_GetMrcInputVideoBufferType(ovrpMediaInputVideoBufferType* inputVideoBufferType); -OVRP_EXPORT ovrpResult ovrp_Media_SetMrcFrameSize(int frameWidth, int frameHeight); -OVRP_EXPORT ovrpResult ovrp_Media_GetMrcFrameSize(int* frameWidth, int* frameHeight); -OVRP_EXPORT ovrpResult ovrp_Media_SetMrcAudioSampleRate(int sampleRate); -OVRP_EXPORT ovrpResult ovrp_Media_GetMrcAudioSampleRate(int* sampleRate); -OVRP_EXPORT ovrpResult ovrp_Media_SetMrcFrameImageFlipped(ovrpBool flipped); -OVRP_EXPORT ovrpResult ovrp_Media_GetMrcFrameImageFlipped(ovrpBool* flipped); -OVRP_EXPORT ovrpResult ovrp_Media_SetMrcFrameInverseAlpha(ovrpBool inverseAlpha); -OVRP_EXPORT ovrpResult ovrp_Media_GetMrcFrameInverseAlpha(ovrpBool* inverseAlpha); -OVRP_EXPORT ovrpResult ovrp_Media_SetAvailableQueueIndexVulkan(unsigned int queueIndexVk); -OVRP_EXPORT ovrpResult ovrp_Media_EncodeMrcFrame( - void* videoData, - float* audioData, - int audioDataLen, - int audioChannels, - double timestamp, - int* outSyncId); -OVRP_EXPORT ovrpResult ovrp_Media_EncodeMrcFrameWithDualTextures( - void* backgroundTextureHandle, - void* foregroundTextureHandle, - float* audioData, - int audioDataLen, - int audioChannels, - double timestamp, - int* outSyncId); -OVRP_EXPORT ovrpResult ovrp_Media_SyncMrcFrame(int syncId); -OVRP_EXPORT ovrpResult ovrp_Media_EncodeMrcFrameWithPoseTime( - void* videoData, - float* audioData, - int audioDataLen, - int audioChannels, - double timestamp, - double poseTime, - int* outSyncId); -OVRP_EXPORT ovrpResult ovrp_Media_EncodeMrcFrameDualTexturesWithPoseTime( - void* backgroundTextureHandle, - void* foregroundTextureHandle, - float* audioData, - int audioDataLen, - int audioChannels, - double timestamp, - double poseTime, - int* outSyncId); -OVRP_EXPORT ovrpResult -ovrp_Media_SetHeadsetControllerPose(ovrpPosef headsetPose, ovrpPosef leftControllerPose, ovrpPosef rightControllerPose); -OVRP_EXPORT ovrpResult -ovrp_Media_EnumerateCameraAnchorHandles(int* inoutAnchorCount, ovrpCameraAnchorHandle* outHandleArray); -OVRP_EXPORT ovrpResult ovrp_Media_GetCurrentCameraAnchorHandle(ovrpCameraAnchorHandle* outHandle); -OVRP_EXPORT ovrpResult -ovrp_Media_GetCameraAnchorName(ovrpCameraAnchorHandle anchorHandle, char outAnchorName[OVRP_ANCHOR_NAME_SIZE]); -OVRP_EXPORT ovrpResult ovrp_Media_GetCameraAnchorHandle(const char* anchorName, ovrpCameraAnchorHandle* outHandle); -OVRP_EXPORT ovrpResult -ovrp_Media_GetCameraAnchorType(ovrpCameraAnchorHandle anchorHandle, ovrpCameraAnchorType* outAnchorType); -OVRP_EXPORT ovrpResult ovrp_Media_CreateCustomCameraAnchor(const char* anchorName, ovrpCameraAnchorHandle* outHandle); -OVRP_EXPORT ovrpResult ovrp_Media_DestroyCustomCameraAnchor(ovrpCameraAnchorHandle anchorHandle); -OVRP_EXPORT ovrpResult ovrp_Media_GetCustomCameraAnchorPose(ovrpCameraAnchorHandle anchorHandle, ovrpPosef* outPose); -OVRP_EXPORT ovrpResult ovrp_Media_SetCustomCameraAnchorPose(ovrpCameraAnchorHandle anchorHandle, ovrpPosef pose); -OVRP_EXPORT ovrpResult -ovrp_Media_GetCameraMinMaxDistance(ovrpCameraAnchorHandle anchorHandle, double* outMinDistance, double* outMaxDistance); -OVRP_EXPORT ovrpResult -ovrp_Media_SetCameraMinMaxDistance(ovrpCameraAnchorHandle anchorHandle, double minDistance, double maxDistance); -OVRP_EXPORT ovrpResult ovrp_Media_IsCastingToRemoteClient(ovrpBool* isCasting); - -#ifdef __cplusplus -} -#endif - -#endif diff --git a/Plugins/MetaXR/Source/Thirdparty/OVRPlugin/OVRPlugin/Include/OVR_Plugin_MixedReality.h b/Plugins/MetaXR/Source/Thirdparty/OVRPlugin/OVRPlugin/Include/OVR_Plugin_MixedReality.h deleted file mode 100644 index 28d9213..0000000 --- a/Plugins/MetaXR/Source/Thirdparty/OVRPlugin/OVRPlugin/Include/OVR_Plugin_MixedReality.h +++ /dev/null @@ -1,146 +0,0 @@ -/* - * Copyright (c) Meta Platforms, Inc. and affiliates. - * All rights reserved. - * - * Licensed under the Oculus SDK License Agreement (the "License"); - * you may not use the Oculus SDK except in compliance with the License, - * which is provided at the time of installation or download, or which - * otherwise accompanies this software in either electronic or hard copy form. - * - * You may obtain a copy of the License at - * - * https://developer.oculus.com/licenses/oculussdk/ - * - * Unless required by applicable law or agreed to in writing, the Oculus SDK - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#ifndef OVR_Plugin_MixedReality_h -#define OVR_Plugin_MixedReality_h - -#include "OVR_Plugin_Types.h" - -#if OVRP_MIXED_REALITY_PRIVATE -#include "OVR_Plugin_MixedReality_Private.h" -#endif - -#ifdef __cplusplus -extern "C" { -#endif - -//////////////////// Tracked Camera ////////////////////////// - -/// Initialize Mixed Reality functionalities -OVRP_EXPORT ovrpResult ovrp_InitializeMixedReality(); - -/// Shutdown Mixed Reality functionalities -OVRP_EXPORT ovrpResult ovrp_ShutdownMixedReality(); - -/// Check whether Mixed Reality functionalities has been initialized -OVRP_EXPORT ovrpBool ovrp_GetMixedRealityInitialized(); - -/// Update external camera. Need to be called before accessing the camera count or individual camera information -OVRP_EXPORT ovrpResult ovrp_UpdateExternalCamera(); - -/// Get the number of external cameras -OVRP_EXPORT ovrpResult ovrp_GetExternalCameraCount(int* cameraCount); - -/// Get the name of an external camera -OVRP_EXPORT ovrpResult ovrp_GetExternalCameraName(int cameraId, char cameraName[OVRP_EXTERNAL_CAMERA_NAME_SIZE]); - -/// Get intrinsics of an external camera -OVRP_EXPORT ovrpResult ovrp_GetExternalCameraIntrinsics(int cameraId, ovrpCameraIntrinsics* cameraIntrinsics); - -/// Get extrinsics of an external camera -OVRP_EXPORT ovrpResult ovrp_GetExternalCameraExtrinsics(int cameraId, ovrpCameraExtrinsics* cameraExtrinsics); - -/// Get the raw transform pose when the external camera was calibrated -OVRP_EXPORT ovrpResult ovrp_GetExternalCameraCalibrationRawPose(int cameraId, ovrpPosef* rawPose); - -/// Override the FOV of the external camera -OVRP_EXPORT ovrpResult ovrp_OverrideExternalCameraFov(int cameraId, ovrpBool useOverriddenFov, const ovrpFovf* fov); - -/// Get if the FOV of the external camera is overridden -OVRP_EXPORT ovrpResult ovrp_GetUseOverriddenExternalCameraFov(int cameraId, ovrpBool* useOverriddenFov); - -/// Override the Pose of the external camera. -OVRP_EXPORT ovrpResult -ovrp_OverrideExternalCameraStaticPose(int cameraId, ovrpBool useOverriddenPose, const ovrpPosef* pose); - -/// Get if the Pose of the external camera is overridden -OVRP_EXPORT ovrpResult ovrp_GetUseOverriddenExternalCameraStaticPose(int cameraId, ovrpBool* useOverriddenStaticPose); - -/// Helper function to get the camera pose in the tracking space -OVRP_EXPORT ovrpResult ovrp_GetExternalCameraPose(int cameraId, ovrpPosef* cameraPose); - -/// Helper function to get convert a pose in tracking space to camera space -OVRP_EXPORT ovrpResult -ovrp_ConvertPoseToCameraSpace(int cameraId, ovrpPosef* trackingSpacePose, ovrpPosef* cameraSpacePose); - -/// Reset the manual external camera -/// On Quest, it would stop listenting to the MRC port if needed -OVRP_EXPORT ovrpResult ovrp_ResetDefaultExternalCamera(); - -/// Set a manual external camera to the system. The manual external camera is valid when there is no camera -/// configuration can be loaded On Quest, it would start listenting to the MRC port if needed -OVRP_EXPORT ovrpResult ovrp_SetDefaultExternalCamera( - const char* cameraName, - const ovrpCameraIntrinsics* cameraIntrinsics, - const ovrpCameraExtrinsics* cameraExtrinsics); - -/// (PC only) set external camera intrinsics and extrinsics -OVRP_EXPORT ovrpResult ovrp_SetExternalCameraProperties( - const char* cameraName, - const ovrpCameraIntrinsics* cameraIntrinsics, - const ovrpCameraExtrinsics* cameraExtrinsics); - -// {{ DEPRECATED -// The following functions will be moved to OVR_Plugin_MixedReality_Deprecated.h after Unreal Plugin revision -OVRP_EXPORT ovrpResult -ovrp_EnumerateAllCameraDevices(ovrpCameraDevice* deviceArray, int deviceArraySize, int* deviceCount); -OVRP_EXPORT ovrpResult -ovrp_EnumerateAvailableCameraDevices(ovrpCameraDevice* deviceArray, int deviceArraySize, int* deviceCount); -OVRP_EXPORT ovrpResult ovrp_UpdateCameraDevices(); -OVRP_EXPORT ovrpResult ovrp_IsCameraDeviceAvailable2(ovrpCameraDevice camera, ovrpBool* available); -OVRP_EXPORT ovrpResult -ovrp_SetCameraDevicePreferredColorFrameSize(ovrpCameraDevice camera, ovrpSizei preferredColorFrameSize); -OVRP_EXPORT ovrpResult ovrp_OpenCameraDevice(ovrpCameraDevice camera); -OVRP_EXPORT ovrpResult ovrp_CloseCameraDevice(ovrpCameraDevice camera); -OVRP_EXPORT ovrpResult ovrp_HasCameraDeviceOpened2(ovrpCameraDevice camera, ovrpBool* opened); -OVRP_EXPORT ovrpResult ovrp_GetCameraDeviceIntrinsicsParameters( - ovrpCameraDevice camera, - ovrpBool* supportIntrinsics, - ovrpCameraDeviceIntrinsicsParameters* intrinsicsParameters); -OVRP_EXPORT ovrpResult ovrp_IsCameraDeviceColorFrameAvailable2(ovrpCameraDevice camera, ovrpBool* available); -OVRP_EXPORT ovrpResult ovrp_GetCameraDeviceColorFrameSize(ovrpCameraDevice camera, ovrpSizei* colorFrameSize); -OVRP_EXPORT ovrpResult ovrp_GetCameraDeviceColorFrameBgraPixels( - ovrpCameraDevice camera, - const ovrpByte** colorFrameBgraPixels, - int* colorFrameRowPitch); -OVRP_EXPORT ovrpResult ovrp_DoesCameraDeviceSupportDepth(ovrpCameraDevice camera, ovrpBool* supportDepth); -OVRP_EXPORT ovrpResult -ovrp_GetCameraDeviceDepthSensingMode(ovrpCameraDevice camera, ovrpCameraDeviceDepthSensingMode* depthSensingMode); -OVRP_EXPORT ovrpResult -ovrp_SetCameraDeviceDepthSensingMode(ovrpCameraDevice camera, ovrpCameraDeviceDepthSensingMode depthSensingMode); -OVRP_EXPORT ovrpResult -ovrp_GetCameraDevicePreferredDepthQuality(ovrpCameraDevice camera, ovrpCameraDeviceDepthQuality* depthQuality); -OVRP_EXPORT ovrpResult -ovrp_SetCameraDevicePreferredDepthQuality(ovrpCameraDevice camera, ovrpCameraDeviceDepthQuality depthQuality); -OVRP_EXPORT ovrpResult ovrp_IsCameraDeviceDepthFrameAvailable(ovrpCameraDevice camera, ovrpBool* available); -OVRP_EXPORT ovrpResult ovrp_GetCameraDeviceDepthFrameSize(ovrpCameraDevice camera, ovrpSizei* depthFrameSize); -OVRP_EXPORT ovrpResult -ovrp_GetCameraDeviceDepthFramePixels(ovrpCameraDevice camera, const float** depthFramePixels, int* depthFrameRowPitch); -OVRP_EXPORT ovrpResult ovrp_GetCameraDeviceDepthConfidencePixels( - ovrpCameraDevice camera, - const float** depthConfidencePixels, - int* depthConfidenceRowPitch); -// }} DEPRECATED - -#ifdef __cplusplus -} -#endif - -#endif diff --git a/Plugins/MetaXR/Source/Thirdparty/OVRPlugin/OVRPlugin/Include/OVR_Plugin_MixedReality_Deprecated.h b/Plugins/MetaXR/Source/Thirdparty/OVRPlugin/OVRPlugin/Include/OVR_Plugin_MixedReality_Deprecated.h deleted file mode 100644 index 83c2b49..0000000 --- a/Plugins/MetaXR/Source/Thirdparty/OVRPlugin/OVRPlugin/Include/OVR_Plugin_MixedReality_Deprecated.h +++ /dev/null @@ -1,38 +0,0 @@ -/* - * Copyright (c) Meta Platforms, Inc. and affiliates. - * All rights reserved. - * - * Licensed under the Oculus SDK License Agreement (the "License"); - * you may not use the Oculus SDK except in compliance with the License, - * which is provided at the time of installation or download, or which - * otherwise accompanies this software in either electronic or hard copy form. - * - * You may obtain a copy of the License at - * - * https://developer.oculus.com/licenses/oculussdk/ - * - * Unless required by applicable law or agreed to in writing, the Oculus SDK - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#ifndef OVR_Plugin_MixedReality_Deprecated_h -#define OVR_Plugin_MixedReality_Deprecated_h - -#include "OVR_Plugin_MixedReality.h" - -#ifdef __cplusplus -extern "C" { -#endif - -OVRP_EXPORT ovrpBool ovrp_IsCameraDeviceAvailable(ovrpCameraDevice camera); -OVRP_EXPORT ovrpBool ovrp_HasCameraDeviceOpened(ovrpCameraDevice camera); -OVRP_EXPORT ovrpBool ovrp_IsCameraDeviceColorFrameAvailable(ovrpCameraDevice camera); - -#ifdef __cplusplus -} -#endif - -#endif diff --git a/Plugins/MetaXR/Source/Thirdparty/OVRPlugin/OVRPlugin/Include/OVR_Plugin_Types.h b/Plugins/MetaXR/Source/Thirdparty/OVRPlugin/OVRPlugin/Include/OVR_Plugin_Types.h deleted file mode 100644 index dcfd26d..0000000 --- a/Plugins/MetaXR/Source/Thirdparty/OVRPlugin/OVRPlugin/Include/OVR_Plugin_Types.h +++ /dev/null @@ -1,3982 +0,0 @@ -/* - * Copyright (c) Meta Platforms, Inc. and affiliates. - * All rights reserved. - * - * Licensed under the Oculus SDK License Agreement (the "License"); - * you may not use the Oculus SDK except in compliance with the License, - * which is provided at the time of installation or download, or which - * otherwise accompanies this software in either electronic or hard copy form. - * - * You may obtain a copy of the License at - * - * https://developer.oculus.com/licenses/oculussdk/ - * - * Unless required by applicable law or agreed to in writing, the Oculus SDK - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#ifndef OVR_Plugin_Types_h -#define OVR_Plugin_Types_h - -#if !defined(OVRP_STRINGIFY) -#define OVRP_STRINGIFYIMPL(x) #x -#define OVRP_STRINGIFY(x) OVRP_STRINGIFYIMPL(x) -#endif - -// Note: OVRP_MINOR_VERSION == OCULUS_SDK_VERSION + 32 - -#define OVRP_MAJOR_VERSION 1 -#define OVRP_MINOR_VERSION 108 -#define OVRP_PATCH_VERSION 0 - -#define OVRP_VERSION OVRP_MAJOR_VERSION, OVRP_MINOR_VERSION, OVRP_PATCH_VERSION -#define OVRP_VERSION_STR OVRP_STRINGIFY(OVRP_MAJOR_VERSION.OVRP_MINOR_VERSION.OVRP_PATCH_VERSION) - - - - - - -#define OVRP_VERSION_CHANNEL "Release" - - -#define OVRP_CURRENT_FRAMEINDEX -1 - -#ifndef OVRP_EXPORT -#ifdef _WIN32 -#define OVRP_EXPORT __declspec(dllexport) -#elif defined(__ANDROID__) || defined(__APPLE__) -#define OVRP_EXPORT __attribute__((visibility("default"))) -#else -#define OVRP_EXPORT -#endif -#endif - -#if defined ANDROID || defined __linux__ -#define __cdecl -#endif - -#ifdef __cplusplus -#define OVRP_REF(Type) Type& -#define OVRP_CONSTREF(Type) const Type& -#define OVRP_DEFAULTVALUE(Value) = Value -#else -#define OVRP_REF(Type) Type* -#define OVRP_CONSTREF(Type) const Type* -#define OVRP_DEFAULTVALUE(Value) -#endif - -#define OVRP_UNUSED(x) ((void)(x)) - -#define OVRP_FILE_AND_LINE __FILE__ ":" OVRP_STRINGIFY(__LINE__) - -#ifndef OVRP_MIXED_REALITY_PRIVATE -#define OVRP_MIXED_REALITY_PRIVATE 0 -#endif - -#ifndef OVR_PLUGIN_PC_OPENXR -#define OVR_PLUGIN_PC_OPENXR 0 -#endif - -#ifndef OVR_PLUGIN_MOBILE_OPENXR -#define OVR_PLUGIN_MOBILE_OPENXR 0 -#endif - -#if OVR_PLUGIN_PC_OPENXR || OVR_PLUGIN_MOBILE_OPENXR -#define OVR_PLUGIN_USE_OPENXR 1 -#endif - -#ifdef __clang__ -#pragma clang diagnostic push -#pragma clang diagnostic ignored "-Wnested-anon-types" -#pragma clang diagnostic ignored "-Wpedantic" -#endif // __clang__ - -/// True or false -enum { - ovrpBool_False = 0, - ovrpBool_True = 1, -}; -typedef int ovrpBool; - -/// Byte -typedef unsigned char ovrpByte; - -/// UInt32 -typedef unsigned int ovrpUInt32; - -/// UInt32 -typedef const char* ovrpCharArray; - -/// Int16 -typedef short ovrpInt16; - -/// UInt16 -typedef unsigned short ovrpUInt16; - -/// Int64 -typedef long long ovrpInt64; - -/// UInt64 -typedef unsigned long long ovrpUInt64; - -/// Epsilon for floating point comparison -#define OVRP_FLOAT_EPSILON (1e-5f) - -/// Success and failure -typedef enum { - /// Success - ovrpSuccess = 0, - ovrpSuccess_EventUnavailable = 1, - ovrpSuccess_Pending = 2, - - // XR_META_colocation_discovery - ovrpSuccess_ColocationDiscoveryAlreadyAdvertising = 3001, - ovrpSuccess_ColocationDiscoveryAlreadyDiscovering = 3002, - - /// Failure - ovrpFailure = -1000, - ovrpFailure_InvalidParameter = -1001, - ovrpFailure_NotInitialized = -1002, - ovrpFailure_InvalidOperation = -1003, - ovrpFailure_Unsupported = -1004, - ovrpFailure_NotYetImplemented = -1005, - ovrpFailure_OperationFailed = -1006, - ovrpFailure_InsufficientSize = -1007, - ovrpFailure_DataIsInvalid = -1008, - ovrpFailure_DeprecatedOperation = -1009, - ovrpFailure_ErrorLimitReached = -1010, - ovrpFailure_ErrorInitializationFailed = -1011, - ovrpFailure_RuntimeUnavailable = -1012, - ovrpFailure_HandleInvalid = -1013, - - /// Space error cases - ovrpFailure_SpaceCloudStorageDisabled = -2000, - ovrpFailure_SpaceMappingInsufficient = -2001, - ovrpFailure_SpaceLocalizationFailed = -2002, - ovrpFailure_SpaceNetworkTimeout = -2003, - ovrpFailure_SpaceNetworkRequestFailed = -2004, - - /// XR_FB_spatial_entity extension - ovrpFailure_SpaceComponentNotSupported = -2005, - ovrpFailure_SpaceComponentNotEnabled = -2006, - ovrpFailure_SpaceComponentStatusPending = -2007, - ovrpFailure_SpaceComponentStatusAlreadySet = -2008, - - // XR_META_spatial_entity_group_sharing - ovrpFailure_SpaceGroupNotFound = -2009, - - // XR_META_colocation_discovery - ovrpFailure_ColocationDiscoveryNetworkFailed = -3002, - ovrpFailure_ColocationDiscoveryNoDiscoveryMethodAvailable = -3003, - - /// XR_META_spatial_entity_persistence - ovrpFailure_SpaceInsufficientResources = -9000, - ovrpFailure_SpaceStorageAtCapacity = -9001, - ovrpFailure_SpaceInsufficientView = -9002, - ovrpFailure_SpacePermissionInsufficient = -9003, - ovrpFailure_SpaceRateLimited = -9004, - ovrpFailure_SpaceTooDark = -9005, - ovrpFailure_SpaceTooBright = -9006, - - /// Boundary Visibility cases - ovrpWarning_BoundaryVisibilitySuppressionNotAllowed = 9030, - - - - - - - - // XR_EXT_future - ovrpFailure_FuturePending = -10000, - ovrpFailure_FutureInvalid = -10001, - - - - -} ovrpResult; - -#define OVRP_SUCCESS(result) ((result) >= 0) -#define OVRP_FAILURE(result) ((result) < 0) - -/// XR API types -typedef enum { - ovrpXrApi_Unknown = 0, - ovrpXrApi_CAPI = 1, - ovrpXrApi_VRAPI = 2, - ovrpXrApi_OpenXR = 3, - ovrpXrApi_EnumSize = 0x7fffffff -} ovrpXrApi; - -/// Pre-initialization flags -typedef enum { - ovrpPreinitializeFlag_None = 0, - /// Unity native OpenXR Plugin is being used - ovrpPreinitializeFlag_UseUnityOpenXR = (1 << 0), - /// Unreal native OpenXR Plugin is being used - ovrpPreinitializeFlag_UseUnrealOpenXR = (1 << 1), - - - - - - /// Allow OVRPlugin (OpenXR backend) runs with non-Oculus OpenXR runtime - ovrpPreinitializeFlag_SupportNonOculusRuntime = (1 << 3), - ovrpPreinitializeFlag_DisableLogSystemError = (1 << 4), - ovrpPreinitializeFlag_EnumSize = 0x7fffffff -} ovrpPreinitializeFlags; - -/// Initialization flags -typedef enum { - /// Start GearVR battery and volume receivers - ovrpInitializeFlag_StartGearVRReceivers = (1 << 0), - /// Supports 2D/3D switching - ovrpInitializeFlag_SupportsVRToggle = (1 << 1), - /// Supports Life Cycle Focus (Dash) - ovrpInitializeFlag_FocusAware = (1 << 2), - /// DEPRECATED - Turn off Legacy Core Affinity Patch - /// Background: Some legacy unity versions set thread affinities wrong on newer hardware like Oculus Go - /// We need patch it in the runtime for published legacy apps. - /// This flag will be passed from fixed Unity versions explicitly, so we can skip the runtime patch mechanism since we - /// already have proper fixes. - /// Deprecated Background: Several Unity versions incorrectly indicated they handled applying thread affinity, so this - /// flag has been deprecated - /// in order to fallback to runtime thread affinity handling. In the future, a new flag will be introduced to allow - /// engine opt-out of - /// runtime affinity handling. - ovrpInitializeFlag_NoLegacyCoreAffinityPatch = (1 << 3), // DEPRECATED - - /// Allow to use sRGB frame buffer, we use it as an initialization flag because we need make the window surface - /// sRGB compilable, this can't be changed after window created. - ovrpInitializeFlag_SupportSRGBFrameBuffer = (1 << 4), - - - - - - - /// Enable Application SpaceWarp support - ovrpInitializeFlag_SupportAppSpaceWarp = (1 << 6), - - /// XR instance / session would be created by external engine, to support their OpenXR Plugins - ovrpInitializeFlag_ExternalXrObjects = (1 << 7), - - - - - - - ovrpInitializeFlag_EnumSize = 0x7fffffff - -} ovrpInitializeFlags; - -/// Thread Performance -typedef enum { - ovrpOptionalBool_False = 0, - ovrpOptionalBool_True = 1, - ovrpOptionalBool_Unknown = 2, -} ovrpOptionalBool; - - -/// Thread Performance -typedef enum { - ovrpThreadPef_DeadLine_Normal = 0, - ovrpThreadPef_DeadLine_Hard = 1, - ovrpThreadPef_DeadLine_Soft = 2, - ovrpThreadPef_EnumSize = 0x7fffffff -} ovrpThreadPerf; - -/// Identifies an eye in a stereo pair. -typedef enum { - ovrpEye_Center = -2, - ovrpEye_None = -1, - ovrpEye_Left = 0, - ovrpEye_Right = 1, - ovrpEye_Count, - ovrpEye_EnumSize = 0x7fffffff -} ovrpEye; - -/// Identifies a hand. -typedef enum { - ovrpHand_None = -1, - ovrpHand_Left = 0, - ovrpHand_Right = 1, - ovrpHand_Count, - ovrpHand_EnumSize = 0x7fffffff -} ovrpHand; - -/// Identifies a tracked device object. -typedef enum { - ovrpDeviceObject_None = -1, - ovrpDeviceObject_Zero = 0, - ovrpDeviceObject_Count, - ovrpDeviceObject_EnumSize = 0x7fffffff -} ovrpDeviceObject; - -/// Identifies a tracking sensor. -typedef enum { - ovrpTracker_None = -1, - ovrpTracker_Zero = 0, - ovrpTracker_One = 1, - ovrpTracker_Two = 2, - ovrpTracker_Three = 3, - ovrpTracker_Count, - ovrpTracker_EnumSize = 0x7fffffff -} ovrpTracker; - -/// Identifies a tracked VR Node. -typedef enum { - ovrpNode_None = -1, - ovrpNode_EyeLeft = 0, - ovrpNode_EyeRight = 1, - ovrpNode_EyeCenter = 2, - ovrpNode_HandLeft = 3, - ovrpNode_HandRight = 4, - ovrpNode_TrackerZero = 5, - ovrpNode_TrackerOne = 6, - ovrpNode_TrackerTwo = 7, - ovrpNode_TrackerThree = 8, - ovrpNode_Head = 9, - ovrpNode_DeviceObjectZero = 10, - - - - ovrpNode_ControllerLeft = 12, - ovrpNode_ControllerRight = 13, - ovrpNode_Count, - ovrpNode_EnumSize = 0x7fffffff -} ovrpNode; - -/// Identifies a tracking origin -typedef enum { - ovrpTrackingOrigin_EyeLevel = 0, - ovrpTrackingOrigin_FloorLevel = 1, - ovrpTrackingOrigin_Stage = 2, - - - - ovrpTrackingOrigin_View = 4, - - - - - - - ovrpTrackingOrigin_Count, - ovrpTrackingOrigin_EnumSize = 0x7fffffff -} ovrpTrackingOrigin; - -/// The charge status of a battery. -typedef enum { - ovrpBatteryStatus_Charging, - ovrpBatteryStatus_Discharging, - ovrpBatteryStatus_Full, - ovrpBatteryStatus_NotCharging, - ovrpBatteryStatus_Unknown, - ovrpBatteryStatus_EnumSize = 0x7fffffff -} ovrpBatteryStatus; - -// Handedness of user as specified in the mobile device -typedef enum { - ovrpHandedness_Unsupported = 0, - ovrpHandedness_LeftHanded = 1, - ovrpHandedness_RightHanded = 2 -} ovrpHandedness; - -/// An oculus platform UI. -typedef enum { - ovrpUI_None = -1, - ovrpUI_GlobalMenu = 0, - ovrpUI_ConfirmQuit, - ovrpUI_GlobalMenuTutorial, // Deprecated - ovrpUI_EnumSize = 0x7fffffff -} ovrpUI; - -/// A geographical region associated with the current system device. -typedef enum { - ovrpSystemRegion_Unspecified, - ovrpSystemRegion_Japan, - ovrpSystemRegion_China, - ovrpSystemRegion_EnumSize = 0x7fffffff -} ovrpSystemRegion; - -typedef enum { - ovrpSystemHeadset_None = 0, - - // Mobile & Standalone headsets - ovrpSystemHeadset_GearVR_R320, // Note4 Innovator - ovrpSystemHeadset_GearVR_R321, // S6 Innovator - ovrpSystemHeadset_GearVR_R322, // GearVR Commercial 1 - ovrpSystemHeadset_GearVR_R323, // GearVR Commercial 2 (USB Type C) - ovrpSystemHeadset_GearVR_R324, // GearVR Commercial 3 (USB Type C) - ovrpSystemHeadset_GearVR_R325, // GearVR Commercial 4 (USB Type C) - ovrpSystemHeadset_Oculus_Go, // Oculus Go Commercial 1 - ovrpSystemHeadset_Oculus_Quest, // Oculus Quest - ovrpSystemHeadset_Oculus_Quest_2, // Oculus Quest 2 - ovrpSystemHeadset_Meta_Quest_Pro, // Meta Quest Pro - ovrpSystemHeadset_Meta_Quest_3, // Meta Quest 3 - ovrpSystemHeadset_Meta_Quest_3S, // Meta Quest 3S - ovrpSystemHeadset_Placeholder_13, - ovrpSystemHeadset_Placeholder_14, - ovrpSystemHeadset_Placeholder_15, - ovrpSystemHeadset_Placeholder_16, - ovrpSystemHeadset_Placeholder_17, - ovrpSystemHeadset_Placeholder_18, - ovrpSystemHeadset_Placeholder_19, - ovrpSystemHeadset_Placeholder_20, - - // PC headsets - ovrpSystemHeadset_Rift_DK1 = 0x1000, - ovrpSystemHeadset_Rift_DK2, - ovrpSystemHeadset_Rift_CV1, - ovrpSystemHeadset_Rift_CB, - ovrpSystemHeadset_Rift_S, - ovrpSystemHeadset_Oculus_Link_Quest, // Oculus Quest connected through Link - ovrpSystemHeadset_Oculus_Link_Quest_2, // Oculus Quest 2 connected through Link - ovrpSystemHeadset_Meta_Link_Quest_Pro, // Meta Quest Pro connected through Link - ovrpSystemHeadset_Meta_Link_Quest_3, // Meta Quest 3 connected through Link - ovrpSystemHeadset_Meta_Link_Quest_3S, // Meta Quest 3S connected through Link - ovrpSystemHeadset_PC_Placeholder_4106, - ovrpSystemHeadset_PC_Placeholder_4107, - ovrpSystemHeadset_PC_Placeholder_4108, - ovrpSystemHeadset_PC_Placeholder_4109, - ovrpSystemHeadset_PC_Placeholder_4110, - ovrpSystemHeadset_PC_Placeholder_4111, - ovrpSystemHeadset_PC_Placeholder_4112, - ovrpSystemHeadset_PC_Placeholder_4113, - ovrpSystemHeadset_EnumSize = 0x7fffffff -} ovrpSystemHeadset; - -/// These types are used to hide platform-specific details when passing -/// render device, OS, and texture data to the API. -/// -/// The benefit of having these wrappers versus platform-specific API functions is -/// that they allow game glue code to be portable. A typical example is an -/// engine that has multiple back ends, say GL and D3D. Portable code that calls -/// these back ends may also use LibOVR. To do this, back ends can be modified -/// to return portable types such as ovrTexture and ovrRenderAPIConfig. -typedef enum { - ovrpRenderAPI_None, - ovrpRenderAPI_OpenGL, - ovrpRenderAPI_Android_GLES, // Deprecated, use ovrpRenderAPI_OpenGL instead - ovrpRenderAPI_D3D9, // Deprecated, unsupported - ovrpRenderAPI_D3D10, // Deprecated, unsupported - ovrpRenderAPI_D3D11, - ovrpRenderAPI_D3D12, - ovrpRenderAPI_Vulkan, - ovrpRenderAPI_Metal, - ovrpRenderAPI_Count, - ovrpRenderAPI_EnumSize = 0x7fffffff -} ovrpRenderAPIType; - -/// Identifies a controller button. -typedef enum { - ovrpButton_None = 0, - ovrpButton_A = 0x00000001, - ovrpButton_B = 0x00000002, - ovrpButton_X = 0x00000100, - ovrpButton_Y = 0x00000200, - ovrpButton_Up = 0x00010000, - ovrpButton_Down = 0x00020000, - ovrpButton_Left = 0x00040000, - ovrpButton_Right = 0x00080000, - ovrpButton_Start = 0x00100000, - ovrpButton_Back = 0x00200000, - ovrpButton_LShoulder = 0x00000800, - ovrpButton_LThumb = 0x00000400, - ovrpButton_LTouchpad = 0x40000000, - ovrpButton_RShoulder = 0x00000008, - ovrpButton_RThumb = 0x00000004, - ovrpButton_RTouchpad = 0x80000000, - ovrpButton_VolUp = 0x00400000, - ovrpButton_VolDown = 0x00800000, - ovrpButton_Home = 0x01000000, - ovrpButton_EnumSize = 0x7fffffff -} ovrpButton; - -/// Identifies a controller touch. -typedef enum { - ovrpTouch_None = 0, - ovrpTouch_A = ovrpButton_A, - ovrpTouch_B = ovrpButton_B, - ovrpTouch_X = ovrpButton_X, - ovrpTouch_Y = ovrpButton_Y, - ovrpTouch_LIndexTrigger = 0x00001000, - ovrpTouch_LThumb = ovrpButton_LThumb, - ovrpTouch_LThumbRest = 0x00000800, - ovrpTouch_LTouchpad = ovrpButton_LTouchpad, - ovrpTouch_RIndexTrigger = 0x00000010, - ovrpTouch_RThumb = ovrpButton_RThumb, - ovrpTouch_RThumbRest = 0x00000008, - ovrpTouch_RTouchpad = ovrpButton_RTouchpad, - ovrpTouch_EnumSize = 0x7fffffff -} ovrpTouch; - -/// Identifies a controller near touch. -typedef enum { - ovrpNearTouch_None = 0, - ovrpNearTouch_LIndexTrigger = 0x00000001, - ovrpNearTouch_LThumbButtons = 0x00000002, - ovrpNearTouch_RIndexTrigger = 0x00000004, - ovrpNearTouch_RThumbButtons = 0x00000008, - ovrpNearTouch_EnumSize = 0x7fffffff -} ovrpNearTouch; - -/// Identifies a controller. -typedef enum { - ovrpController_None = 0, - ovrpController_LTouch = 0x01, - ovrpController_RTouch = 0x02, - ovrpController_Touch = ovrpController_LTouch | ovrpController_RTouch, - ovrpController_Remote = 0x04, - ovrpController_Gamepad = 0x10, - ovrpController_LHand = 0x20, - ovrpController_RHand = 0x40, - ovrpController_Hands = ovrpController_LHand | ovrpController_RHand, - ovrpController_Touchpad_DEPRECATED = 0x08000000, - ovrpController_LTrackedRemote = 0x01000000, - ovrpController_RTrackedRemote = 0x02000000, - ovrpController_Active = 0x80000000, - ovrpController_EnumSize = 0x7fffffff -} ovrpController; - - -/// Identifies a haptics location on a controller. -typedef enum { - ovrpHapticsLocation_None = 0, - ovrpHapticsLocation_Hand = 0x01, - ovrpHapticsLocation_Thumb = 0x02, - ovrpHapticsLocation_Index = 0x04, - ovrpHapticsLocation_EnumSize = 0x7fffffff -} ovrpHapticsLocation; - -/// Used to specify recentering behavior. -typedef enum { - /// Recenter all default axes as defined by the current tracking origin type. - ovrpRecenterFlag_Default = 0x00000000, - /// Recenter only controllers that require drift correction. - ovrpRecenterFlag_Controllers = 0x40000000, - /// Clear the ShouldRecenter flag and leave all axes unchanged. Useful for apps that perform - /// custom recentering logic. - ovrpRecenterFlag_IgnoreAll = 0x80000000, - ovrpRecenterFlag_EnumSize = 0x7fffffff -} ovrpRecenterFlag; - -/// Logging levels -typedef enum { - ovrpLogLevel_Debug = 0, - ovrpLogLevel_Info = 1, - ovrpLogLevel_Error = 2, - ovrpLogLevel_Warning = 3, - ovrpLogLevel_EnumSize = 0x7fffffff -} ovrpLogLevel; - -/// Foveation levels -/// -/// Levels should be consecutive integer enums, otherwise change GetTiledMultiResLevel -/// and SetTiledMultiResLevel to work without that assumption -typedef enum { - ovrpTiledMultiResLevel_Off = 0, - ovrpTiledMultiResLevel_LMSLow = 1, - ovrpTiledMultiResLevel_LMSMedium = 2, - ovrpTiledMultiResLevel_LMSHigh = 3, - ovrpTiledMultiResLevel_LMSHighTop = 4, - ovrpTiledMultiResLevel_EnumSize = 0x7fffffff -} ovrpTiledMultiResLevel; - -typedef enum { - ovrpFoveationFlag_EyeTracked = (1 << 0), - - - -} ovrpFoveationFlags; - - - - - - - - - - - - - - - - - - - - - - -/// Control the activation of mixed reality capture -typedef enum { - ovrpMediaMrcActivationMode_Automatic = 0, - ovrpMediaMrcActivationMode_Disabled = 1, - ovrpMediaMrcActivationMode_EnumSize = 0x7fffffff -} ovrpMediaMrcActivationMode; - -/// Control the platform camera status -typedef enum { - ovrpPlatformCameraMode_Disabled = -1, - ovrpPlatformCameraMode_Initialized = 0, - ovrpPlatformCameraMode_UserControlled = 1, // Ex: Quest user grab and - ovrpPlatformCameraMode_SmartNavigated = 2, // Ex: Program to follow/zoom, avoid obstacle ...etc - ovrpPlatformCameraMode_StabilizedPoV = 3, // Ex: Stabilized 1st person view - ovrpPlatformCameraMode_RemoteDroneControlled = 4, // Ex: Control by remote clients - ovrpPlatformCameraMode_RemoteSpatialMapped = 5, // Ex: Control by anchor pose and SLAM tracking - ovrpPlatformCameraMode_EnumSize = 0x7fffffff -} ovrpPlatformCameraMode; - -/// Media encoder input buffer types -typedef enum { - /// raw memory. pixel format in RGBA - ovrpMediaInputVideoBufferType_Memory = 0, - /// texture handle (e.g. texId if GLES) - ovrpMediaInputVideoBufferType_TextureHandle = 1, - ovrpMediaInputVideoBufferType_EnumSize = 0x7fffffff -} ovrpMediaInputVideoBufferType; - - - - - - - - - - - - - - - - -/// Feature fidelity for XR Runtime Performance Manager -typedef enum { - ovrpFeatureType_HandTracking = 0, - ovrpFeatureType_KeyboardTracking = 1, - ovrpFeatureType_EyeTracking = 2, - ovrpFeatureType_FaceTracking = 3, - ovrpFeatureType_BodyTracking = 4, - ovrpFeatureType_Passthrough = 5, - ovrpFeatureType_GazeBasedFoveatedRendering = 6, - ovrpFeatureType_Count, - ovrpFeatureType_EnumSize = 0x7fffffff -} ovrpFeatureType; - -typedef enum { - ovrpFeatureFidelity_Default = -1, - ovrpFeatureFidelity_Low = 0, - ovrpFeatureFidelity_MediumLow = 1, - ovrpFeatureFidelity_Medium = 2, - ovrpFeatureFidelity_MediumHigh = 3, - ovrpFeatureFidelity_High = 4, - ovrpFeatureFidelity_EnumSize = 0x7fffffff -} ovrpFeatureFidelity; - -typedef enum { - ovrpFeatureEnableState_Default = -1, - ovrpFeatureEnableState_Off = 0, - ovrpFeatureEnableState_On = 1, - ovrpFeatureEnableState_EnumSize = 0x7fffffff -} ovrpFeatureEnableState; - -typedef struct { - ovrpFeatureEnableState enableState; - ovrpFeatureFidelity fidelity; -} ovrpFeatureState; - -#if defined(__arm__) -typedef void (*ovrpLogCallback)(ovrpLogLevel, const char*); -typedef void (*ovrpLogCallback2)(ovrpLogLevel, const char* /*msg*/, int /*length*/); -#else -typedef void(__cdecl* ovrpLogCallback)(ovrpLogLevel, const char*); -typedef void(__cdecl* ovrpLogCallback2)(ovrpLogLevel, const char* /*msg*/, int /*length*/); -#endif - -typedef struct { - int MajorVersion; - int MinorVersion; - int PatchVersion; -} ovrpVersion; - -typedef struct { - float LatencyRender; - float LatencyTimewarp; - float LatencyPostPresent; - float ErrorRender; - float ErrorTimewarp; -} ovrpAppLatencyTimings; - -enum { ovrpAppPerfFrameStatsMaxCount = 5 }; - -/// App Perf Frame Stats -typedef struct { - int HmdVsyncIndex; - - int AppFrameIndex; - int AppDroppedFrameCount; - float AppMotionToPhotonLatency; - float AppQueueAheadTime; - float AppCpuElapsedTime; - float AppGpuElapsedTime; - - int CompositorFrameIndex; - int CompositorDroppedFrameCount; - float CompositorLatency; - float CompositorCpuElapsedTime; - float CompositorGpuElapsedTime; - float CompositorCpuStartToGpuEndElapsedTime; - float CompositorGpuEndToVsyncElapsedTime; -} ovrpAppPerfFrameStats; - -/// App Perf Stats -typedef struct { - ovrpAppPerfFrameStats FrameStats[ovrpAppPerfFrameStatsMaxCount]; - int FrameStatsCount; - ovrpBool AnyFrameStatsDropped; - float AdaptiveGpuPerformanceScale; -} ovrpAppPerfStats; - -/// Cross-platform perf metrics -typedef enum { - ovrpPerfMetrics_App_CpuTime_Float = 0, - ovrpPerfMetrics_App_GpuTime_Float = 1, - ovrpPerfMetrics_App_MotionToPhotonLatencyTime_Float_DEPRECATED = 2, - - ovrpPerfMetrics_Compositor_CpuTime_Float = 3, - ovrpPerfMetrics_Compositor_GpuTime_Float = 4, - ovrpPerfMetrics_Compositor_DroppedFrameCount_Int = 5, - ovrpPerfMetrics_Compositor_LatencyTime_Float_DEPRECATED = 6, - - ovrpPerfMetrics_System_GpuUtilPercentage_Float = 7, - ovrpPerfMetrics_System_CpuUtilAveragePercentage_Float = 8, - ovrpPerfMetrics_System_CpuUtilWorstPercentage_Float = 9, - - // Added 1.32.0 - ovrpPerfMetrics_Device_CpuClockFrequencyInMHz_Float = 10, // Deprecated 1.68.0 - ovrpPerfMetrics_Device_GpuClockFrequencyInMHz_Float = 11, // Deprecated 1.68.0 - ovrpPerfMetrics_Device_CpuClockLevel_Int = 12, // Deprecated 1.68.0 - ovrpPerfMetrics_Device_GpuClockLevel_Int = 13, // Deprecated 1.68.0 - - ovrpPerfMetrics_Compositor_SpaceWarp_Mode_Int = 14, - - ovrpPerfMetrics_Device_CpuCore0UtilPercentage_Float = 32, - ovrpPerfMetrics_Device_CpuCore1UtilPercentage_Float = ovrpPerfMetrics_Device_CpuCore0UtilPercentage_Float + 1, - ovrpPerfMetrics_Device_CpuCore2UtilPercentage_Float = ovrpPerfMetrics_Device_CpuCore0UtilPercentage_Float + 2, - ovrpPerfMetrics_Device_CpuCore3UtilPercentage_Float = ovrpPerfMetrics_Device_CpuCore0UtilPercentage_Float + 3, - ovrpPerfMetrics_Device_CpuCore4UtilPercentage_Float = ovrpPerfMetrics_Device_CpuCore0UtilPercentage_Float + 4, - ovrpPerfMetrics_Device_CpuCore5UtilPercentage_Float = ovrpPerfMetrics_Device_CpuCore0UtilPercentage_Float + 5, - ovrpPerfMetrics_Device_CpuCore6UtilPercentage_Float = ovrpPerfMetrics_Device_CpuCore0UtilPercentage_Float + 6, - ovrpPerfMetrics_Device_CpuCore7UtilPercentage_Float = ovrpPerfMetrics_Device_CpuCore0UtilPercentage_Float + 7, - // Enum value 32~63 are reserved for CPU Cores' utilization (assuming at most 32 cores). - - ovrpPerfMetrics_Count, - ovrpPerfMetrics_Max = 0x7fffffff, -} ovrpPerfMetrics; - -/// A 2D size with integer components. -typedef struct { - int w, h; -} ovrpSizei; - -/// A 2D size with float components. -typedef struct { - float w, h; -} ovrpSizef; - -/// A 3D size (width, height, depth) with float components. -typedef struct { - float w, h, d; -} ovrpSize3f; - -/// A 2D vector with integer components. -typedef struct { - int x, y; -} ovrpVector2i; - -/// A 2D vector with float components. -typedef struct { - float x, y; -} ovrpVector2f; - -/// A 3D vector with float components. -typedef struct { - float x, y, z; -} ovrpVector3f; - -/// A 4D vector with float components. -typedef struct { - float x, y, z, w; -} ovrpVector4f; - -/// A 4D vector with Int16 components. -typedef struct { - ovrpInt16 x, y, z, w; -} ovrpVector4s; - -/// A quaternion rotation. -typedef struct { - float x, y, z, w; -} ovrpQuatf; - -/// Row-major 4x4 matrix. -typedef struct { - float M[4][4]; -} ovrpMatrix4f; - -/// Position and orientation together. -typedef struct { - ovrpQuatf Orientation; - ovrpVector3f Position; -} ovrpPosef; - -/// Equivalent to XrSpaceLocationFlags, see openxr.h for flag values -typedef ovrpUInt64 ovrpSpaceLocationFlags; - -typedef struct { - ovrpSpaceLocationFlags locationFlags; - ovrpPosef pose; -} ovrpSpaceLocationf; - -/// Position and orientation together. -typedef struct { - ovrpPosef Pose; - ovrpVector3f Velocity; - ovrpVector3f Acceleration; - ovrpVector3f AngularVelocity; - ovrpVector3f AngularAcceleration; - double Time; -} ovrpPoseStatef; - -/// Asymmetric fov port -typedef struct { - float UpTan; - float DownTan; - float LeftTan; - float RightTan; -} ovrpFovf; - -/// Asymmetric frustum for a camera. -typedef struct { - /// Near clip plane. - float zNear; - /// Far clip plane. - float zFar; - ovrpFovf Fov; -} ovrpFrustum2f; - -/// A 2D rectangle with a position and size as integers. -typedef struct { - ovrpVector2i Pos; - ovrpSizei Size; -} ovrpRecti; - -/// A 2D rectangle with a position and size as floats. -typedef struct { - ovrpVector2f Pos; - ovrpSizef Size; -} ovrpRectf; - -/// A 3D bounds with a position and size as floats. -/// \note: Bounds is defined in Unity with center & extent (half size) but ovrpBoundsf here is -/// defined consistent with ovrpRectf using Pos (min) & Size. -typedef struct { - ovrpVector3f Pos; - ovrpSize3f Size; -} ovrpBoundsf; - -typedef struct { - ovrpRectf LeftRect; - ovrpRectf RightRect; - ovrpVector4f LeftScaleBias; - ovrpVector4f RightScaleBias; -} ovrpTextureRectMatrixf; - -typedef struct { - float WarpLeft; - float WarpRight; - float WarpUp; - float WarpDown; - float SizeLeft; - float SizeRight; - float SizeUp; - float SizeDown; -} ovrpOctilinearLayout; - -typedef struct { - float r, g, b, a; -} ovrpColorf; - -/// Describes Input State for use with Gamepads and Oculus Controllers. -typedef struct { - unsigned int ConnectedControllerTypes; - unsigned int Buttons; - unsigned int Touches; - unsigned int NearTouches; - float IndexTrigger[2]; - float HandTrigger[2]; - ovrpVector2f Thumbstick[2]; - ovrpVector2f Touchpad[2]; - unsigned char BatteryPercentRemaining[2]; - unsigned char RecenterCount[2]; - unsigned char Reserved[28]; -} ovrpControllerState4; - -typedef struct { - unsigned int ConnectedControllerTypes; - unsigned int Buttons; - unsigned int Touches; - unsigned int NearTouches; - float IndexTrigger[2]; - float HandTrigger[2]; - ovrpVector2f Thumbstick[2]; - ovrpVector2f Touchpad[2]; - unsigned char BatteryPercentRemaining[2]; - unsigned char RecenterCount[2]; - float ThumbRestForce[2]; - float StylusForce[2]; - float IndexTriggerCurl[2]; - float IndexTriggerSlide[2]; -} ovrpControllerState5; - -typedef struct { - unsigned int ConnectedControllerTypes; - unsigned int Buttons; - unsigned int Touches; - unsigned int NearTouches; - float IndexTrigger[2]; - float HandTrigger[2]; - ovrpVector2f Thumbstick[2]; - ovrpVector2f Touchpad[2]; - unsigned char BatteryPercentRemaining[2]; - unsigned char RecenterCount[2]; - float ThumbRestForce[2]; - float StylusForce[2]; - float IndexTriggerCurl[2]; - float IndexTriggerSlide[2]; - float IndexTriggerForce[2]; -} ovrpControllerState6; - - - - - - - - - - -/// Describes Haptics Buffer for use with Oculus Controllers. -typedef struct { - const void* Samples; - int SamplesCount; -} ovrpHapticsBuffer; - -typedef struct { - int SamplesAvailable; - int SamplesQueued; -} ovrpHapticsState; - -typedef struct { - int SampleRateHz; - int SampleSizeInBytes; - int MinimumSafeSamplesQueued; - int MinimumBufferSamplesCount; - int OptimalBufferSamplesCount; - int MaximumBufferSamplesCount; -} ovrpHapticsDesc; - -typedef struct { - float Duration; - ovrpUInt32 AmplitudeCount; - const float* Amplitudes; -} ovrpHapticsAmplitudeEnvelopeVibration; - -typedef struct { - ovrpUInt32 BufferSize; - const float* Buffer; - float SampleRateHz; - ovrpBool Append; - ovrpUInt32* SamplesConsumed; -} ovrpHapticsPcmVibration; - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -typedef enum ovrpHapticsConstants_ { - ovrpHapticsConstants_MaxSamples = 4000, - ovrpHapticsConstants_EnumSize = 0x7fffffff -} ovrpHapticsConstants; - -/// Boundary types that specify a surface in the boundary system -typedef enum { - /// Outer boundary - closely represents user setup walls, floor and ceiling - ovrpBoundary_Outer = 0x0001, - /// Play area - smaller convex area inside outer boundary where gameplay happens - ovrpBoundary_PlayArea = 0x0100, -} ovrpBoundaryType; - -/// Contains boundary test information -typedef struct { - /// Indicates if the boundary system is being triggered and visible - ovrpBool IsTriggering; - /// Distance to the closest play area or outer boundary surface - float ClosestDistance; - /// Closest point in the surface - ovrpVector3f ClosestPoint; - /// Normal of the closest point - ovrpVector3f ClosestPointNormal; -} ovrpBoundaryTestResult; - -/// Boundary system look and feel -typedef struct { - // Modulate color and alpha (color, brightness and opacity) - ovrpColorf Color; -} ovrpBoundaryLookAndFeel; - -/// Boundary system geometry -typedef struct { - /// The boundary type that the geometry represents. - ovrpBoundaryType BoundaryType; - /// A pointer to a clock-wise ordered array of points. Max count of 256. - ovrpVector3f Points[256]; - /// The number of points. Max count of 256. - int PointsCount; -} ovrpBoundaryGeometry; - -typedef struct { - /// Distance between eyes. - float InterpupillaryDistance; - /// Eye height relative to the ground. - float EyeHeight; - /// Eye offset forward from the head center at EyeHeight. - float HeadModelDepth; - /// Neck joint offset down from the head center at EyeHeight. - float HeadModelHeight; -} ovrpHeadModelParms; - -typedef enum { ovrpFunctionEndFrame = 0, ovrpFunctionCreateTexture } ovrpFunctionType; - -/// Camera status -typedef enum { - ovrpCameraStatus_None, - ovrpCameraStatus_Connected, - ovrpCameraStatus_Calibrating, - ovrpCameraStatus_CalibrationFailed, - ovrpCameraStatus_Calibrated, - ovrpCameraStatus_ThirdPerson, - ovrpCameraStatus_EnumSize = 0x7fffffff -} ovrpCameraStatus; - -// Camera anchor types -typedef enum { - ovrpCameraAnchorType_PreDefined = 0, - ovrpCameraAnchorType_Custom = 1, - ovrpCameraAnchorType_Count, - ovrpCameraAnchorType_EnumSize = 0x7fffffff -} ovrpCameraAnchorType; - -/// Camera intrinsics -typedef struct { - ovrpBool IsValid; - double LastChangedTimeSeconds; - ovrpFovf FOVPort; - float VirtualNearPlaneDistanceMeters; - float VirtualFarPlaneDistanceMeters; - ovrpSizei ImageSensorPixelResolution; -} ovrpCameraIntrinsics; - -/// Camera extrinsics -typedef struct { - ovrpBool IsValid; - double LastChangedTimeSeconds; - ovrpCameraStatus CameraStatus; - ovrpNode AttachedToNode; - ovrpPosef RelativePose; -} ovrpCameraExtrinsics; - -typedef void* ovrpCameraAnchorHandle; -#define OVRP_ANCHOR_INVALID_HANDLE nullptr - -#define OVRP_EXTERNAL_CAMERA_NAME_SIZE 32 -#define OVRP_ANCHOR_NAME_SIZE 32 - -#if !OVRP_MIXED_REALITY_PRIVATE -/// Unified camera device types -typedef enum { - ovrpCameraDevice_None = 0, - ovrpCameraDevice_WebCamera_First = 100, - ovrpCameraDevice_WebCamera0 = ovrpCameraDevice_WebCamera_First + 0, - ovrpCameraDevice_WebCamera1 = ovrpCameraDevice_WebCamera_First + 1, - ovrpCameraDevice_WebCamera_Last = ovrpCameraDevice_WebCamera1, - ovrpCameraDevice_DEPRECATED_DEVICE = 300, // ovrpCameraDevice_ZEDStereoCamera before deprecation - ovrpCameraDevice_EnumSize = 0x7fffffff -} ovrpCameraDevice; -#endif - -typedef enum { - ovrpCameraDeviceDepthSensingMode_Standard = 0, - ovrpCameraDeviceDepthSensingMode_Fill, - ovrpCameraDeviceDepthSensingMode_EnumSize = 0x7fffffff -} ovrpCameraDeviceDepthSensingMode; - -typedef enum { - ovrpCameraDeviceDepthQuality_Low = 0, - ovrpCameraDeviceDepthQuality_Medium, - ovrpCameraDeviceDepthQuality_High, - ovrpCameraDeviceDepthQuality_EnumSize = 0x7fffffff -} ovrpCameraDeviceDepthQuality; - -typedef struct { - float fx; /* Focal length in pixels along x axis. */ - float fy; /* Focal length in pixels along y axis. */ - float cx; /* Optical center along x axis, defined in pixels (usually close to width/2). */ - float cy; /* Optical center along y axis, defined in pixels (usually close to height/2). */ - double disto[5]; /* Distortion factor : [ k1, k2, p1, p2, k3 ]. Radial (k1,k2,k3) and Tangential (p1,p2) distortion.*/ - float v_fov; /* Vertical field of view after stereo rectification, in degrees. */ - float h_fov; /* Horizontal field of view after stereo rectification, in degrees.*/ - float d_fov; /* Diagonal field of view after stereo rectification, in degrees.*/ - int w; /* Resolution width */ - int h; /* Resolution height */ -} ovrpCameraDeviceIntrinsicsParameters; - -const static ovrpPosef s_identityPose = {{0, 0, 0, 1}, {0, 0, 0}}; -const static ovrpPoseStatef s_identityPoseState = - {{{0, 0, 0, 1}, {0, 0, 0}}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, 0}; -const static ovrpFrustum2f s_identityFrustum2 = {0, 0, {0, 0, 0, 0}}; -const static ovrpVector4f s_vec4Zero = {0, 0, 0, 0}; -const static ovrpVector3f s_vec3Zero = {0, 0, 0}; -const static ovrpVector2f s_vec2Zero = {0, 0}; -const static ovrpVector3f s_vec3One = {1, 1, 1}; -const static ovrpQuatf s_identityQuat = {0, 0, 0, 1}; -const static ovrpFovf s_identityFov = {1.0f, 1.0f, 1.0f, 1.0f}; -const static ovrpCameraIntrinsics s_invalidCameraIntrinsics = {ovrpBool_False, -1, {0, 0, 0, 0}, 0, 0, {0, 0}}; -const static ovrpCameraExtrinsics s_invalidCameraExtrinsics = - {ovrpBool_False, -1, ovrpCameraStatus_None, ovrpNode_None, {{0, 0, 0, 1}, {0, 0, 0}}}; - -/// Texture handle which can be cast to GLuint, VkImage, ID3D11Texture2D*, or ID3D12Resource* -typedef unsigned long long ovrpTextureHandle; - -/// Flags passed to ovrp_SetupDistortionWindow. -typedef enum { - ovrpDistortionWindowFlag_None = 0x00000000, - /// If true, the distortion window and eye buffers are set up to handle DRM-protected content. - ovrpDistortionWindowFlag_Protected = 0x00000001, - /// If true, the compositor's graphics device skips error checking to improve performance. - ovrpDistortionWindowFlag_NoErrorContext = 0x00000002, - /// Reserved 0x00000004 in ovrp_SetupDistortionWindow3 - - ovrpDistortionWindowFlag_PhaseSync = 0x00000008, - - ovrpDistortionWindowFlag_EnumSize = 0x7fffffff -} ovrpDistortionWindowFlag; - -/// A timestep type corresponding to a use case for tracking data. -typedef enum { - /// Updated from game thread at end of frame, to hand-off state to Render thread. - ovrpStep_Render = -1, - /// Updated from physics thread, once per simulation step. - ovrpStep_Physics = 0, - ovrpStep_EnumSize = 0x7fffffff -} ovrpStep; - -typedef enum { - ovrpShape_Quad = 0, - ovrpShape_Cylinder = 1, - ovrpShape_Cubemap = 2, - ovrpShape_EyeFov = 3, - ovrpShape_OffcenterCubemap = 4, - ovrpShape_Equirect = 5, - ovrpShape_ReconstructionPassthrough = 7, - ovrpShape_SurfaceProjectedPassthrough = 8, - ovrpShape_Fisheye = 9, - ovrpShape_KeyboardHandsPassthrough = 10, - ovrpShape_KeyboardMaskedHandsPassthrough = 11, - ovrpShape_EnumSize = 0xF -} ovrpShape; - -typedef enum { - ovrpLayout_Stereo = 0, - ovrpLayout_Mono = 1, - ovrpLayout_DoubleWide = 2, - ovrpLayout_Array = 3, - ovrpLayout_EnumSize = 0xF -} ovrpLayout; - -/// A texture format. -typedef enum { - ovrpTextureFormat_R8G8B8A8_sRGB = 0, - ovrpTextureFormat_R8G8B8A8 = 1, - ovrpTextureFormat_R16G16B16A16_FP = 2, - ovrpTextureFormat_R11G11B10_FP = 3, - ovrpTextureFormat_B8G8R8A8_sRGB = 4, - ovrpTextureFormat_B8G8R8A8 = 5, - ovrpTextureFormat_R5G6B5 = 11, - ovrpTextureFormat_R16G16_FP = 12, - ovrpTextureFormat_A2B10G10R10 = 13, - ovrpTextureFormat_R16 = 15, - ovrpTextureFormat_R16_FP = 16, - ovrpTextureFormat_R32_FP = 17, - - // depth texture formats - ovrpTextureFormat_D16 = 6, - ovrpTextureFormat_D24_S8 = 7, - ovrpTextureFormat_D32_FP = 8, - ovrpTextureFormat_D32_FP_S8 = 9, - - ovrpTextureFormat_None = 10, - - ovrpTextureFormat_EnumSize = 0x7fffffff -} ovrpTextureFormat; - -/// Flags used by ovrpLayerDesc -typedef enum { - /// Only create a single stage - ovrpLayerFlag_Static = (1 << 0), - /// Boost CPU priority while visible - ovrpLayerFlag_LoadingScreen = (1 << 1), - /// Force fov to be symmetric - ovrpLayerFlag_SymmetricFov = (1 << 2), - /// Texture origin is in bottom-left - ovrpLayerFlag_TextureOriginAtBottomLeft = (1 << 3), - /// Correct for chromatic aberration, deprecated - ovrpLayerFlag_ChromaticAberrationCorrection = (1 << 4), - /// Does not allocate texture space within the swapchain - ovrpLayerFlag_NoAllocation = (1 << 5), - /// Enable protected content, added in 1.23 - ovrpLayerFlag_ProtectedContent = (1 << 6), - /// Allocate AndroidSurfaceSwapChain, instead of regular TextureSwapChain - ovrpLayerFlag_AndroidSurfaceSwapChain = (1 << 7), - /// Allocate SpaceWarp data with m_textureSwapChain together - ovrpLayerFlag_SpaceWarpDataAllocation = (1 << 8), - ovrpLayerFlag_SpaceWarpDedicatedDepth = (1 << 9), - /// VrApi flag: VRAPI_ANDROID_SURFACE_SWAP_CHAIN_FLAG_SYNCHRONOUS - ovrpLayerFlag_Synchronous = (1 << 10), - /// VrApi flag:VRAPI_ANDROID_SURFACE_SWAP_CHAIN_FLAG_USE_TIMESTAMPS - ovrpLayerFlag_UseTimestamps = (1 << 11), - /// Allocate layer using subsampled layout - ovrpLayerFlag_Subsampled = (1 << 12), - /// if non-static, allocate 4 elements in a swapchain - ovrpLayerFlag_4DeepSwapchain = (1 << 13), - /// Bicubic Filtering - ovrpLayerFlag_BicubicFiltering = (1 << 14), - /// The layer is created through ovrp_EnqueueSetupLayer() - ovrpLayerFlag_LegacyOverlay = (1 << 15), - - - - - - - -} ovrpLayerFlags; - -/// Layer description used by ovrp_SetupLayer to create the layer -#define OVRP_LAYER_DESC \ - struct { \ - ovrpShape Shape; \ - ovrpLayout Layout; \ - ovrpSizei TextureSize; \ - int MipLevels; \ - int SampleCount; \ - ovrpTextureFormat Format; \ - int LayerFlags; \ - } - -typedef OVRP_LAYER_DESC ovrpLayerDesc; - -#define OVRP_LAYER_DESC_TYPE \ - union { \ - ovrpLayerDesc Base; \ - OVRP_LAYER_DESC; \ - } - -typedef OVRP_LAYER_DESC_TYPE ovrpLayerDesc_Quad; -typedef OVRP_LAYER_DESC_TYPE ovrpLayerDesc_Cylinder; -typedef OVRP_LAYER_DESC_TYPE ovrpLayerDesc_Cubemap; -typedef OVRP_LAYER_DESC_TYPE ovrpLayerDesc_InsightPassthrough; - -typedef struct { - OVRP_LAYER_DESC_TYPE; - ovrpFovf Fov[ovrpEye_Count]; - ovrpRectf VisibleRect[ovrpEye_Count]; - ovrpSizei MaxViewportSize; - // added for 1.17 - ovrpTextureFormat DepthFormat; - - // added for 1.49 - ovrpTextureFormat MotionVectorFormat; - ovrpTextureFormat MotionVectorDepthFormat; - ovrpSizei MotionVectorTextureSize; -} ovrpLayerDesc_EyeFov; - -typedef OVRP_LAYER_DESC_TYPE ovrpLayerDesc_OffcenterCubemap; -typedef OVRP_LAYER_DESC_TYPE ovrpLayerDesc_Equirect; -typedef OVRP_LAYER_DESC_TYPE ovrpLayerDesc_Fisheye; - -typedef union { - OVRP_LAYER_DESC_TYPE; - ovrpLayerDesc_Quad Quad; - ovrpLayerDesc_Cylinder Cylinder; - ovrpLayerDesc_Cubemap Cubemap; - ovrpLayerDesc_EyeFov EyeFov; - ovrpLayerDesc_OffcenterCubemap OffcenterCubemap; - ovrpLayerDesc_Equirect Equirect; - ovrpLayerDesc_Fisheye Fisheye; - ovrpLayerDesc_InsightPassthrough InsightPassthrough; -} ovrpLayerDescUnion; - -#undef OVRP_LAYER_DESC -#undef OVRP_LAYER_DESC_TYPE - -/// Flags used by ovrpLayerSubmit -typedef enum { - /// Pose relative to head - ovrpLayerSubmitFlag_HeadLocked = (1 << 0), - /// Layer is octilinear (LMS) - ovrpLayerSubmitFlag_Octilinear = (1 << 1), - /// Use reverse Z - ovrpLayerSubmitFlag_ReverseZ = (1 << 2), - /// Disable layer depth compositing on Rift - ovrpLayerSubmitFlag_NoDepth = (1 << 3), - /// Use inverse alpha for timewarp blending - ovrpLayerSubmitFlag_InverseAlpha = (1 << 4), - /// Combine the submitted layer with the layers generated from OVROverlay commands - ovrpLayerSubmitFlag_CombineLayerSubmits = (1 << 5), - /// Enable VrApi "Expensive" SuperSample Flag. - ovrpLayerSubmitFlag_ExpensiveSuperSample = (1 << 8), - /// Enable per-overlay show/hide functionality. - ovrpLayerSubmitFlag_Hidden = (1 << 9), - /// Force the texture's alpha to 1.0 on Rift - ovrpLayerSubmitFlag_IgnoreSourceAlpha = (1 << 10), - /// Enable Space warp on Fov layer - ovrpLayerSubmitFlag_SpaceWarp = (1 << 11), - /// An efficient version of ovrpLayerSubmitFlag_ExpensiveSuperSample - ovrpLayerSubmitFlag_EfficientSuperSample = (1 << 12), - /// Applies a post-distortion space sharpening filtering - ovrpLayerSubmitFlag_EfficientSharpen = (1 << 13), - /// Be used as a placeholder in combining native layers which was created outside OVRPlugin - ovrpLayerSubmitFlag_ExternalNativeLayer = (1 << 14), - /// Layer submit flag version of bicubic filtering - ovrpLayerSubmitFlag_BicubicFiltering = (1 << 15), - // Higher quality but more costly version of ovrpLayerSubmitFlag_Sharpen - ovrpLayerSubmitFlag_QualitySharpen = (1 << 16), - // Layer submit flag version of secure content - ovrpLayerSubmitFlag_SecureContent = (1 << 17), - // Layer flag to automatically apply sharpening or supersamping filter - ovrpLayerSubmitFlag_AutoLayerFilter = (1 << 18), - - - - - - - // Layer flag to denote this layer has premultiplied alpha - ovrpLayerSubmitFlag_PremultipliedAlpha = (1 << 20), - -} ovrpLayerSubmitFlags; - -/// Factors used for source and dest alpha to make up the blend function. -typedef enum { - ovrpBlendFactorZero = 0, - ovrpBlendFactorOne = 1, - ovrpBlendFactorSrcAlpha = 2, - ovrpBlendFactorOneMinusSrcAlpha = 3, - ovrpBlendFactorDstAlpha = 4, - ovrpBlendFactorOneMinusDstAlpha = 5 -} ovrpBlendFactor; - -/// Layer state to submit to ovrp_EndFrame -#define OVRP_LAYER_SUBMIT \ - struct { \ - int LayerId; \ - int TextureStage; \ - ovrpRecti ViewportRect[ovrpEye_Count]; \ - ovrpPosef Pose; \ - int LayerSubmitFlags; \ - /* Added in 1.31 */ \ - ovrpVector4f ColorScale; \ - ovrpVector4f ColorOffset; \ - /* Added in 1.34 */ \ - ovrpBool OverrideTextureRectMatrix; \ - ovrpTextureRectMatrixf TextureRectMatrix; \ - ovrpBool OverridePerLayerColorScaleAndOffset; \ - /* Added in 1.60 */ \ - /* If blend factors are present (signaled by `HasBlendFactors == true`),*/ \ - /* they override the default blend function and all other influences */ \ - /* like the layer submit flags `ovrpLayerSubmitFlag_InverseAlpha` and */ \ - /* `ovrpLayerSubmitFlag_IgnoreSourceAlpha`. */ \ - /* Blend factors are not supported by CAPI and are ignored in the CAPI */ \ - /* implementation. */ \ - ovrpBool HasBlendFactors; \ - ovrpBlendFactor SrcBlendFactor; \ - ovrpBlendFactor DstBlendFactor; \ - } - -typedef OVRP_LAYER_SUBMIT ovrpLayerSubmit; - -#define OVRP_LAYER_SUBMIT_TYPE \ - union { \ - ovrpLayerSubmit Base; \ - OVRP_LAYER_SUBMIT; \ - } - -typedef struct { - OVRP_LAYER_SUBMIT_TYPE; - ovrpSizef Size; -} ovrpLayerSubmit_Quad; - -typedef struct { - OVRP_LAYER_SUBMIT_TYPE; - float ArcWidth; - float Height; - float Radius; -} ovrpLayerSubmit_Cylinder; - -typedef OVRP_LAYER_SUBMIT_TYPE ovrpLayerSubmit_Cubemap; - -typedef struct { - OVRP_LAYER_SUBMIT_TYPE; - // added in 1.18 - ovrpOctilinearLayout OctilinearLayout[ovrpEye_Count]; - float DepthNear; - float DepthFar; - // added in 1.44 - ovrpFovf Fov[ovrpEye_Count]; - // added in 1.49 - float MotionVectorDepthNear; - float MotionVectorDepthFar; - ovrpVector4f MotionVectorScale; - ovrpVector4f MotionVectorOffset; - ovrpPosef AppSpaceDeltaPose; -} ovrpLayerSubmit_EyeFov; - -typedef OVRP_LAYER_SUBMIT_TYPE ovrpLayerSubmit_OffcenterCubemap; -typedef OVRP_LAYER_SUBMIT_TYPE ovrpLayerSubmit_Equirect; - -typedef struct { - OVRP_LAYER_SUBMIT_TYPE; - float FovX; - float FovY; - float Horizon; - float Meridian; -} ovrpLayerSubmit_Fisheye; - -typedef union { - OVRP_LAYER_SUBMIT_TYPE; - ovrpLayerSubmit_Quad Quad; - ovrpLayerSubmit_Cylinder Cylinder; - ovrpLayerSubmit_Cubemap Cubemap; - ovrpLayerSubmit_EyeFov EyeFov; - ovrpLayerSubmit_OffcenterCubemap OffcenterCubemap; - ovrpLayerSubmit_Equirect Equirect; - ovrpLayerSubmit_Fisheye Fisheye; -} ovrpLayerSubmitUnion; - -typedef enum { - ovrpViewportStencilType_HiddenArea = 0, - ovrpViewportStencilType_VisibleArea = 1, - ovrpViewportStencilType_BorderLine = 2, - ovrpViewportStencilType_VisibleRectangle = 3, -} ovrpViewportStencilType; - -#undef OVRP_LAYER_SUBMIT -#undef OVRP_LAYER_SUBMIT_TYPE - -//----------------------------------------------------------------- -// Hand tracking -//----------------------------------------------------------------- - -typedef enum ovrpHandStatus_ { - ovrpHandStatus_HandTracked = (1 << 0), // hand is currently tracked by hand tracking - ovrpHandStatus_InputValid = (1 << 1), // if this is set the pointer pose and pinch data is usable - ovrpHandStatus_SystemGestureInProgress = (1 << 6), // if this is set the user is performing the system gesture - ovrpHandStatus_DominantHand = (1 << 7), // if this is set the hand is considered the dominant hand - ovrpHandStatus_MenuPressed = - (1 << 8), // if this is set the hand performed the system gesture as the non-dominant hand - ovrpHandStatus_EnumSize = 0x7fffffff -} ovrpHandStatus; - -typedef enum ovrpHandFinger_ { - ovrpHandFinger_Thumb = 0, - ovrpHandFinger_Index = 1, - ovrpHandFinger_Middle = 2, - ovrpHandFinger_Ring = 3, - ovrpHandFinger_Pinky = 4, - ovrpHandFinger_Max, - ovrpHandFinger_EnumSize = 0x7fffffff -} ovrpHandFinger; - -// clang-format off -typedef enum ovrpHandFingerPinch_ { - ovrpHandFingerPinch_Thumb = (1 << ovrpHandFinger_Thumb), - ovrpHandFingerPinch_Index = (1 << ovrpHandFinger_Index), - ovrpHandFingerPinch_Middle = (1 << ovrpHandFinger_Middle), - ovrpHandFingerPinch_Ring = (1 << ovrpHandFinger_Ring), - ovrpHandFingerPinch_Pinky = (1 << ovrpHandFinger_Pinky), - ovrpHandFingerPinch_Max, - ovrpHandFingerPinch_EnumSize = 0x7fffffff -} ovrpHandFingerPinch; -// clang-format on - -// clang-format off -typedef enum ovrpBoneId_ { - ovrpBoneId_Invalid = -1, - - // hand bones - ovrpBoneId_Hand_Start = 0, - ovrpBoneId_Hand_WristRoot = ovrpBoneId_Hand_Start + 0, // root frame of the hand, where the wrist is located - ovrpBoneId_Hand_ForearmStub = ovrpBoneId_Hand_Start + 1, // frame for user's forearm - ovrpBoneId_Hand_Thumb0 = ovrpBoneId_Hand_Start + 2, // thumb trapezium bone - ovrpBoneId_Hand_Thumb1 = ovrpBoneId_Hand_Start + 3, // thumb metacarpal bone - ovrpBoneId_Hand_Thumb2 = ovrpBoneId_Hand_Start + 4, // thumb proximal phalange bone - ovrpBoneId_Hand_Thumb3 = ovrpBoneId_Hand_Start + 5, // thumb distal phalange bone - ovrpBoneId_Hand_Index1 = ovrpBoneId_Hand_Start + 6, // index proximal phalange bone - ovrpBoneId_Hand_Index2 = ovrpBoneId_Hand_Start + 7, // index intermediate phalange bone - ovrpBoneId_Hand_Index3 = ovrpBoneId_Hand_Start + 8, // index distal phalange bone - ovrpBoneId_Hand_Middle1 = ovrpBoneId_Hand_Start + 9, // middle proximal phalange bone - ovrpBoneId_Hand_Middle2 = ovrpBoneId_Hand_Start + 10, // middle intermediate phalange bone - ovrpBoneId_Hand_Middle3 = ovrpBoneId_Hand_Start + 11, // middle distal phalange bone - ovrpBoneId_Hand_Ring1 = ovrpBoneId_Hand_Start + 12, // ring proximal phalange bone - ovrpBoneId_Hand_Ring2 = ovrpBoneId_Hand_Start + 13, // ring intermediate phalange bone - ovrpBoneId_Hand_Ring3 = ovrpBoneId_Hand_Start + 14, // ring distal phalange bone - ovrpBoneId_Hand_Pinky0 = ovrpBoneId_Hand_Start + 15, // pinky metacarpal bone - ovrpBoneId_Hand_Pinky1 = ovrpBoneId_Hand_Start + 16, // pinky proximal phalange bone - ovrpBoneId_Hand_Pinky2 = ovrpBoneId_Hand_Start + 17, // pinky intermediate phalange bone - ovrpBoneId_Hand_Pinky3 = ovrpBoneId_Hand_Start + 18, // pinky distal phalange bone - ovrpBoneId_Hand_MaxSkinnable = ovrpBoneId_Hand_Start + 19, - // Bone tips are position only. They are not used for skinning but useful for hit-testing. - // NOTE: ovrBoneId_Hand_ThumbTip == ovrBoneId_Hand_MaxSkinnable since the extended tips need to be contiguous - ovrpBoneId_Hand_ThumbTip = ovrpBoneId_Hand_MaxSkinnable + 0, // tip of the thumb - ovrpBoneId_Hand_IndexTip = ovrpBoneId_Hand_MaxSkinnable + 1, // tip of the index finger - ovrpBoneId_Hand_MiddleTip = ovrpBoneId_Hand_MaxSkinnable + 2, // tip of the middle finger - ovrpBoneId_Hand_RingTip = ovrpBoneId_Hand_MaxSkinnable + 3, // tip of the ring finger - ovrpBoneId_Hand_PinkyTip = ovrpBoneId_Hand_MaxSkinnable + 4, // tip of the pinky - ovrpBoneId_Hand_End = ovrpBoneId_Hand_MaxSkinnable + 5, - - // Hand Skeleton V2 format - ovrpBoneId_HandV2_Start = 0, - ovrpBoneId_HandV2_Palm = ovrpBoneId_HandV2_Start + 0, // PALM = 0, - ovrpBoneId_HandV2_Wrist = ovrpBoneId_HandV2_Start + 1, // WRIST = 1, - ovrpBoneId_HandV2_ThumbMetacarpal = ovrpBoneId_HandV2_Start + 2, // THUMB_METACARPAL = 2, - ovrpBoneId_HandV2_ThumbProximal = ovrpBoneId_HandV2_Start + 3, // THUMB_PROXIMAL = 3, - ovrpBoneId_HandV2_ThumbDistal = ovrpBoneId_HandV2_Start + 4, // THUMB_DISTAL = 4, - ovrpBoneId_HandV2_ThumbTip = ovrpBoneId_HandV2_Start + 5, // THUMB_TIP = 5, - ovrpBoneId_HandV2_IndexMetacarpal = ovrpBoneId_HandV2_Start + 6, // INDEX_METACARPAL = 6, - ovrpBoneId_HandV2_IndexProximal = ovrpBoneId_HandV2_Start + 7, // INDEX_PROXIMAL = 7, - ovrpBoneId_HandV2_IndexIntermediate = ovrpBoneId_HandV2_Start + 8, // INDEX_INTERMEDIATE = 8, - ovrpBoneId_HandV2_IndexDistal = ovrpBoneId_HandV2_Start + 9, // INDEX_DISTAL = 9, - ovrpBoneId_HandV2_IndexTip = ovrpBoneId_HandV2_Start + 10,// INDEX_TIP = 10, - ovrpBoneId_HandV2_MiddleMetacarpal = ovrpBoneId_HandV2_Start + 11,// MIDDLE_METACARPAL = 11, - ovrpBoneId_HandV2_MiddleProximal = ovrpBoneId_HandV2_Start + 12,// MIDDLE_PROXIMAL = 12, - ovrpBoneId_HandV2_MiddleIntermediate = ovrpBoneId_HandV2_Start + 13,// MIDDLE_INTERMEDIATE = 13, - ovrpBoneId_HandV2_MiddleDistal = ovrpBoneId_HandV2_Start + 14,// MIDDLE_DISTAL = 14, - ovrpBoneId_HandV2_MiddleTip = ovrpBoneId_HandV2_Start + 15,// MIDDLE_TIP = 15, - ovrpBoneId_HandV2_RingMetacarpal = ovrpBoneId_HandV2_Start + 16,// RING_METACARPAL = 16, - ovrpBoneId_HandV2_RingProximal = ovrpBoneId_HandV2_Start + 17,// RING_PROXIMAL = 17, - ovrpBoneId_HandV2_RingIntermediate = ovrpBoneId_HandV2_Start + 18,// RING_INTERMEDIATE = 18, - ovrpBoneId_HandV2_RingDistal = ovrpBoneId_HandV2_Start + 19,// RING_DISTAL = 19, - ovrpBoneId_HandV2_RingTip = ovrpBoneId_HandV2_Start + 20,// RING_TIP = 20, - ovrpBoneId_HandV2_LittleMetacarpal = ovrpBoneId_HandV2_Start + 21,// LITTLE_METACARPAL = 21, - ovrpBoneId_HandV2_LittleProximal = ovrpBoneId_HandV2_Start + 22,// LITTLE_PROXIMAL = 22, - ovrpBoneId_HandV2_LittleIntermediate = ovrpBoneId_HandV2_Start + 23,// LITTLE_INTERMEDIATE = 23, - ovrpBoneId_HandV2_LittleDistal = ovrpBoneId_HandV2_Start + 24,// LITTLE_DISTAL = 24, - ovrpBoneId_HandV2_LittleTip = ovrpBoneId_HandV2_Start + 25,// LITTLE_TIP = 25, - ovrpBoneId_HandV2_End = ovrpBoneId_HandV2_Start + 26, - - // body bones (upper body) - ovrpBoneId_Body_Start = 0, - ovrpBoneId_Body_Root = ovrpBoneId_Body_Start + 0, - ovrpBoneId_Body_Hips = ovrpBoneId_Body_Start + 1, - ovrpBoneId_Body_SpineLower = ovrpBoneId_Body_Start + 2, - ovrpBoneId_Body_SpineMiddle = ovrpBoneId_Body_Start + 3, - ovrpBoneId_Body_SpineUpper = ovrpBoneId_Body_Start + 4, - ovrpBoneId_Body_Chest = ovrpBoneId_Body_Start + 5, - ovrpBoneId_Body_Neck = ovrpBoneId_Body_Start + 6, - ovrpBoneId_Body_Head = ovrpBoneId_Body_Start + 7, - ovrpBoneId_Body_LeftShoulder = ovrpBoneId_Body_Start + 8, - ovrpBoneId_Body_LeftScapula = ovrpBoneId_Body_Start + 9, - ovrpBoneId_Body_LeftArmUpper = ovrpBoneId_Body_Start + 10, - ovrpBoneId_Body_LeftArmLower = ovrpBoneId_Body_Start + 11, - ovrpBoneId_Body_LeftHandWristTwist = ovrpBoneId_Body_Start + 12, - ovrpBoneId_Body_RightShoulder = ovrpBoneId_Body_Start + 13, - ovrpBoneId_Body_RightScapula = ovrpBoneId_Body_Start + 14, - ovrpBoneId_Body_RightArmUpper = ovrpBoneId_Body_Start + 15, - ovrpBoneId_Body_RightArmLower = ovrpBoneId_Body_Start + 16, - ovrpBoneId_Body_RightHandWristTwist = ovrpBoneId_Body_Start + 17, - ovrpBoneId_Body_LeftHandPalm = ovrpBoneId_Body_Start + 18, - ovrpBoneId_Body_LeftHandWrist = ovrpBoneId_Body_Start + 19, - ovrpBoneId_Body_LeftHandThumbMetacarpal = ovrpBoneId_Body_Start + 20, - ovrpBoneId_Body_LeftHandThumbProximal = ovrpBoneId_Body_Start + 21, - ovrpBoneId_Body_LeftHandThumbDistal = ovrpBoneId_Body_Start + 22, - ovrpBoneId_Body_LeftHandThumbTip = ovrpBoneId_Body_Start + 23, - ovrpBoneId_Body_LeftHandIndexMetacarpal = ovrpBoneId_Body_Start + 24, - ovrpBoneId_Body_LeftHandIndexProximal = ovrpBoneId_Body_Start + 25, - ovrpBoneId_Body_LeftHandIndexIntermediate = ovrpBoneId_Body_Start + 26, - ovrpBoneId_Body_LeftHandIndexDistal = ovrpBoneId_Body_Start + 27, - ovrpBoneId_Body_LeftHandIndexTip = ovrpBoneId_Body_Start + 28, - ovrpBoneId_Body_LeftHandMiddleMetacarpal = ovrpBoneId_Body_Start + 29, - ovrpBoneId_Body_LeftHandMiddleProximal = ovrpBoneId_Body_Start + 30, - ovrpBoneId_Body_LeftHandMiddleIntermediate = ovrpBoneId_Body_Start + 31, - ovrpBoneId_Body_LeftHandMiddleDistal = ovrpBoneId_Body_Start + 32, - ovrpBoneId_Body_LeftHandMiddleTip = ovrpBoneId_Body_Start + 33, - ovrpBoneId_Body_LeftHandRingMetacarpal = ovrpBoneId_Body_Start + 34, - ovrpBoneId_Body_LeftHandRingProximal = ovrpBoneId_Body_Start + 35, - ovrpBoneId_Body_LeftHandRingIntermediate = ovrpBoneId_Body_Start + 36, - ovrpBoneId_Body_LeftHandRingDistal = ovrpBoneId_Body_Start + 37, - ovrpBoneId_Body_LeftHandRingTip = ovrpBoneId_Body_Start + 38, - ovrpBoneId_Body_LeftHandLittleMetacarpal = ovrpBoneId_Body_Start + 39, - ovrpBoneId_Body_LeftHandLittleProximal = ovrpBoneId_Body_Start + 40, - ovrpBoneId_Body_LeftHandLittleIntermediate = ovrpBoneId_Body_Start + 41, - ovrpBoneId_Body_LeftHandLittleDistal = ovrpBoneId_Body_Start + 42, - ovrpBoneId_Body_LeftHandLittleTip = ovrpBoneId_Body_Start + 43, - ovrpBoneId_Body_RightHandPalm = ovrpBoneId_Body_Start + 44, - ovrpBoneId_Body_RightHandWrist = ovrpBoneId_Body_Start + 45, - ovrpBoneId_Body_RightHandThumbMetacarpal = ovrpBoneId_Body_Start + 46, - ovrpBoneId_Body_RightHandThumbProximal = ovrpBoneId_Body_Start + 47, - ovrpBoneId_Body_RightHandThumbDistal = ovrpBoneId_Body_Start + 48, - ovrpBoneId_Body_RightHandThumbTip = ovrpBoneId_Body_Start + 49, - ovrpBoneId_Body_RightHandIndexMetacarpal = ovrpBoneId_Body_Start + 50, - ovrpBoneId_Body_RightHandIndexProximal = ovrpBoneId_Body_Start + 51, - ovrpBoneId_Body_RightHandIndexIntermediate = ovrpBoneId_Body_Start + 52, - ovrpBoneId_Body_RightHandIndexDistal = ovrpBoneId_Body_Start + 53, - ovrpBoneId_Body_RightHandIndexTip = ovrpBoneId_Body_Start + 54, - ovrpBoneId_Body_RightHandMiddleMetacarpal = ovrpBoneId_Body_Start + 55, - ovrpBoneId_Body_RightHandMiddleProximal = ovrpBoneId_Body_Start + 56, - ovrpBoneId_Body_RightHandMiddleIntermediate = ovrpBoneId_Body_Start + 57, - ovrpBoneId_Body_RightHandMiddleDistal = ovrpBoneId_Body_Start + 58, - ovrpBoneId_Body_RightHandMiddleTip = ovrpBoneId_Body_Start + 59, - ovrpBoneId_Body_RightHandRingMetacarpal = ovrpBoneId_Body_Start + 60, - ovrpBoneId_Body_RightHandRingProximal = ovrpBoneId_Body_Start + 61, - ovrpBoneId_Body_RightHandRingIntermediate = ovrpBoneId_Body_Start + 62, - ovrpBoneId_Body_RightHandRingDistal = ovrpBoneId_Body_Start + 63, - ovrpBoneId_Body_RightHandRingTip = ovrpBoneId_Body_Start + 64, - ovrpBoneId_Body_RightHandLittleMetacarpal = ovrpBoneId_Body_Start + 65, - ovrpBoneId_Body_RightHandLittleProximal = ovrpBoneId_Body_Start + 66, - ovrpBoneId_Body_RightHandLittleIntermediate = ovrpBoneId_Body_Start + 67, - ovrpBoneId_Body_RightHandLittleDistal = ovrpBoneId_Body_Start + 68, - ovrpBoneId_Body_RightHandLittleTip = ovrpBoneId_Body_Start + 69, - ovrpBoneId_Body_End = ovrpBoneId_Body_Start + 70, - - // full body bones - ovrpBoneId_FullBody_Start = 0, - ovrpBoneId_FullBody_Root = ovrpBoneId_FullBody_Start + 0, - ovrpBoneId_FullBody_Hips = ovrpBoneId_FullBody_Start + 1, - ovrpBoneId_FullBody_SpineLower = ovrpBoneId_FullBody_Start + 2, - ovrpBoneId_FullBody_SpineMiddle = ovrpBoneId_FullBody_Start + 3, - ovrpBoneId_FullBody_SpineUpper = ovrpBoneId_FullBody_Start + 4, - ovrpBoneId_FullBody_Chest = ovrpBoneId_FullBody_Start + 5, - ovrpBoneId_FullBody_Neck = ovrpBoneId_FullBody_Start + 6, - ovrpBoneId_FullBody_Head = ovrpBoneId_FullBody_Start + 7, - ovrpBoneId_FullBody_LeftShoulder = ovrpBoneId_FullBody_Start + 8, - ovrpBoneId_FullBody_LeftScapula = ovrpBoneId_FullBody_Start + 9, - ovrpBoneId_FullBody_LeftArmUpper = ovrpBoneId_FullBody_Start + 10, - ovrpBoneId_FullBody_LeftArmLower = ovrpBoneId_FullBody_Start + 11, - ovrpBoneId_FullBody_LeftHandWristTwist = ovrpBoneId_FullBody_Start + 12, - ovrpBoneId_FullBody_RightShoulder = ovrpBoneId_FullBody_Start + 13, - ovrpBoneId_FullBody_RightScapula = ovrpBoneId_FullBody_Start + 14, - ovrpBoneId_FullBody_RightArmUpper = ovrpBoneId_FullBody_Start + 15, - ovrpBoneId_FullBody_RightArmLower = ovrpBoneId_FullBody_Start + 16, - ovrpBoneId_FullBody_RightHandWristTwist = ovrpBoneId_FullBody_Start + 17, - ovrpBoneId_FullBody_LeftHandPalm = ovrpBoneId_FullBody_Start + 18, - ovrpBoneId_FullBody_LeftHandWrist = ovrpBoneId_FullBody_Start + 19, - ovrpBoneId_FullBody_LeftHandThumbMetacarpal = ovrpBoneId_FullBody_Start + 20, - ovrpBoneId_FullBody_LeftHandThumbProximal = ovrpBoneId_FullBody_Start + 21, - ovrpBoneId_FullBody_LeftHandThumbDistal = ovrpBoneId_FullBody_Start + 22, - ovrpBoneId_FullBody_LeftHandThumbTip = ovrpBoneId_FullBody_Start + 23, - ovrpBoneId_FullBody_LeftHandIndexMetacarpal = ovrpBoneId_FullBody_Start + 24, - ovrpBoneId_FullBody_LeftHandIndexProximal = ovrpBoneId_FullBody_Start + 25, - ovrpBoneId_FullBody_LeftHandIndexIntermediate = ovrpBoneId_FullBody_Start + 26, - ovrpBoneId_FullBody_LeftHandIndexDistal = ovrpBoneId_FullBody_Start + 27, - ovrpBoneId_FullBody_LeftHandIndexTip = ovrpBoneId_FullBody_Start + 28, - ovrpBoneId_FullBody_LeftHandMiddleMetacarpal = ovrpBoneId_FullBody_Start + 29, - ovrpBoneId_FullBody_LeftHandMiddleProximal = ovrpBoneId_FullBody_Start + 30, - ovrpBoneId_FullBody_LeftHandMiddleIntermediate = ovrpBoneId_FullBody_Start + 31, - ovrpBoneId_FullBody_LeftHandMiddleDistal = ovrpBoneId_FullBody_Start + 32, - ovrpBoneId_FullBody_LeftHandMiddleTip = ovrpBoneId_FullBody_Start + 33, - ovrpBoneId_FullBody_LeftHandRingMetacarpal = ovrpBoneId_FullBody_Start + 34, - ovrpBoneId_FullBody_LeftHandRingProximal = ovrpBoneId_FullBody_Start + 35, - ovrpBoneId_FullBody_LeftHandRingIntermediate = ovrpBoneId_FullBody_Start + 36, - ovrpBoneId_FullBody_LeftHandRingDistal = ovrpBoneId_FullBody_Start + 37, - ovrpBoneId_FullBody_LeftHandRingTip = ovrpBoneId_FullBody_Start + 38, - ovrpBoneId_FullBody_LeftHandLittleMetacarpal = ovrpBoneId_FullBody_Start + 39, - ovrpBoneId_FullBody_LeftHandLittleProximal = ovrpBoneId_FullBody_Start + 40, - ovrpBoneId_FullBody_LeftHandLittleIntermediate = ovrpBoneId_FullBody_Start + 41, - ovrpBoneId_FullBody_LeftHandLittleDistal = ovrpBoneId_FullBody_Start + 42, - ovrpBoneId_FullBody_LeftHandLittleTip = ovrpBoneId_FullBody_Start + 43, - ovrpBoneId_FullBody_RightHandPalm = ovrpBoneId_FullBody_Start + 44, - ovrpBoneId_FullBody_RightHandWrist = ovrpBoneId_FullBody_Start + 45, - ovrpBoneId_FullBody_RightHandThumbMetacarpal = ovrpBoneId_FullBody_Start + 46, - ovrpBoneId_FullBody_RightHandThumbProximal = ovrpBoneId_FullBody_Start + 47, - ovrpBoneId_FullBody_RightHandThumbDistal = ovrpBoneId_FullBody_Start + 48, - ovrpBoneId_FullBody_RightHandThumbTip = ovrpBoneId_FullBody_Start + 49, - ovrpBoneId_FullBody_RightHandIndexMetacarpal = ovrpBoneId_FullBody_Start + 50, - ovrpBoneId_FullBody_RightHandIndexProximal = ovrpBoneId_FullBody_Start + 51, - ovrpBoneId_FullBody_RightHandIndexIntermediate = ovrpBoneId_FullBody_Start + 52, - ovrpBoneId_FullBody_RightHandIndexDistal = ovrpBoneId_FullBody_Start + 53, - ovrpBoneId_FullBody_RightHandIndexTip = ovrpBoneId_FullBody_Start + 54, - ovrpBoneId_FullBody_RightHandMiddleMetacarpal = ovrpBoneId_FullBody_Start + 55, - ovrpBoneId_FullBody_RightHandMiddleProximal = ovrpBoneId_FullBody_Start + 56, - ovrpBoneId_FullBody_RightHandMiddleIntermediate = ovrpBoneId_FullBody_Start + 57, - ovrpBoneId_FullBody_RightHandMiddleDistal = ovrpBoneId_FullBody_Start + 58, - ovrpBoneId_FullBody_RightHandMiddleTip = ovrpBoneId_FullBody_Start + 59, - ovrpBoneId_FullBody_RightHandRingMetacarpal = ovrpBoneId_FullBody_Start + 60, - ovrpBoneId_FullBody_RightHandRingProximal = ovrpBoneId_FullBody_Start + 61, - ovrpBoneId_FullBody_RightHandRingIntermediate = ovrpBoneId_FullBody_Start + 62, - ovrpBoneId_FullBody_RightHandRingDistal = ovrpBoneId_FullBody_Start + 63, - ovrpBoneId_FullBody_RightHandRingTip = ovrpBoneId_FullBody_Start + 64, - ovrpBoneId_FullBody_RightHandLittleMetacarpal = ovrpBoneId_FullBody_Start + 65, - ovrpBoneId_FullBody_RightHandLittleProximal = ovrpBoneId_FullBody_Start + 66, - ovrpBoneId_FullBody_RightHandLittleIntermediate = ovrpBoneId_FullBody_Start + 67, - ovrpBoneId_FullBody_RightHandLittleDistal = ovrpBoneId_FullBody_Start + 68, - ovrpBoneId_FullBody_RightHandLittleTip = ovrpBoneId_FullBody_Start + 69, - ovrpBoneId_FullBody_LeftUpperLeg = ovrpBoneId_FullBody_Start + 70, - ovrpBoneId_FullBody_LeftLowerLeg = ovrpBoneId_FullBody_Start + 71, - ovrpBoneId_FullBody_LeftFootAnkleTwist = ovrpBoneId_FullBody_Start + 72, - ovrpBoneId_FullBody_LeftFootAnkle = ovrpBoneId_FullBody_Start + 73, - ovrpBoneId_FullBody_LeftFootSubtalar = ovrpBoneId_FullBody_Start + 74, - ovrpBoneId_FullBody_LeftFootTransverse = ovrpBoneId_FullBody_Start + 75, - ovrpBoneId_FullBody_LeftFootBall = ovrpBoneId_FullBody_Start + 76, - ovrpBoneId_FullBody_RightUpperLeg = ovrpBoneId_FullBody_Start + 77, - ovrpBoneId_FullBody_RightLowerLeg = ovrpBoneId_FullBody_Start + 78, - ovrpBoneId_FullBody_RightFootAnkleTwist = ovrpBoneId_FullBody_Start + 79, - ovrpBoneId_FullBody_RightFootAnkle = ovrpBoneId_FullBody_Start + 80, - ovrpBoneId_FullBody_RightFootSubtalar = ovrpBoneId_FullBody_Start + 81, - ovrpBoneId_FullBody_RightFootTransverse = ovrpBoneId_FullBody_Start + 82, - ovrpBoneId_FullBody_RightFootBall = ovrpBoneId_FullBody_Start + 83, - ovrpBoneId_FullBody_End = ovrpBoneId_FullBody_Start + 84, - - // The new OpenXR extension has invalid mapped to FullBody_End + 1 to avoid using negative values - ovrpBoneId_FullBody_Invalid = ovrpBoneId_FullBody_Start + 85, - - // add other skeleton bone definitions here... - ovrpBoneId_Max = ovrpBoneId_FullBody_End, - - ovrpBoneId_EnumSize = 0x7fff -} ovrpBoneId; -// clang-format on - -//----------------------------------------------------------------- -// Hand skeleton - -// ovrBoneCapsule -// _---_ -// -" "- -// / \ -// |----A----| -// | | | -// | | | -// | |-r->| -// | | | -// | | | -// |----B----| -// \ / -// -. .- -// '---' -typedef struct ovrpBoneCapsule_ { - short BoneIndex; - // Points at either end of the cylinder inscribed in the capsule. Also the center points for - // spheres at either end of the capsule. Points A and B in the diagram above. - ovrpVector3f Points[2]; - // The radius of the capsule cylinder and of the half-sphere caps on the ends of the capsule. - float Radius; -} ovrpBoneCapsule; - -typedef struct ovrpBone_ { - ovrpBoneId BoneId; - // index of this bone's parent bone (-1 if no parent) - short ParentBoneIndex; - ovrpPosef Pose; -} ovrpBone; - - - - - - - - - - - -typedef enum ovrpBodyTrackingCalibrationState_ { - orvpBodyTrackingCalibrationState_Valid = 1, - orvpBodyTrackingCalibrationState_Calibrating = 2, - orvpBodyTrackingCalibrationState_Invalid = 3, - - orvpBodyTrackingCalibrationState_EnumSize = 0x7fffffff -} ovrpBodyTrackingCalibrationState; - -typedef struct ovrpBodyTrackingCalibrationInfo_ { - float bodyHeight; -} ovrpBodyTrackingCalibrationInfo; - -typedef enum ovrpSkeletonConstants_ { - ovrpSkeletonConstants_MaxHandBones = ovrpBoneId_Hand_End, - ovrpSkeletonConstants_MaxHandBones_V2 = ovrpBoneId_HandV2_End, - ovrpSkeletonConstants_MaxBodyBones = ovrpBoneId_Body_End, - ovrpSkeletonConstants_MaxFullBodyBones = ovrpBoneId_FullBody_End, - ovrpSkeletonConstants_MaxUpperBodyBones = ovrpBoneId_Body_End, - ovrpSkeletonConstants_MaxBones = ovrpBoneId_Max, - ovrpSkeletonConstants_MaxBoneCapsules = 19, - ovrpSkeletonConstants_EnumSize = 0x7fffffff -} ovrpSkeletonConstants; - -/// Identifies a skeleton type. -typedef enum ovrpSkeletonType_ { - ovrpSkeletonType_None = -1, - ovrpSkeletonType_HandLeft = 0, - ovrpSkeletonType_HandRight = 1, - ovrpSkeletonType_Body = 2, - ovrpSkeletonType_FullBody = 3, - ovrpSkeletonType_XRHandLeft = 4, - ovrpSkeletonType_XRHandRight = 5, - ovrpSkeletonType_Count, - ovrpSkeletonType_EnumSize = 0x7fffffff -} ovrpSkeletonType; - -typedef struct ovrpSkeleton3_ { - ovrpSkeletonType SkeletonType; - unsigned int NumBones; - unsigned int NumBoneCapsules; - ovrpBone Bones[ovrpSkeletonConstants_MaxBones]; - ovrpBoneCapsule BoneCapsules[ovrpSkeletonConstants_MaxBoneCapsules]; -} ovrpSkeleton3; - -typedef struct ovrpSkeleton2_ { - ovrpSkeletonType SkeletonType; - unsigned int NumBones; - unsigned int NumBoneCapsules; - ovrpBone Bones[ovrpSkeletonConstants_MaxUpperBodyBones]; - ovrpBoneCapsule BoneCapsules[ovrpSkeletonConstants_MaxBoneCapsules]; -} ovrpSkeleton2; - -//----------------------------------------------------------------- -// Hand mesh - -typedef enum ovrpMeshConstants_ { - ovrpMesh_MaxVertices = 3000, - ovrpMesh_MaxIndices = ovrpMesh_MaxVertices * 6, - ovrpMesh_EnumSize = 0x7fffffff -} ovrpMeshConstants; - -/// Identifies a mesh type. -typedef enum ovrpMeshType_ { - ovrpMeshType_None = -1, - ovrpMeshType_HandLeft = 0, - ovrpMeshType_HandRight = 1, - ovrpMeshType_XRHandLeft = 4, - ovrpMeshType_XRHandRight = 5, - ovrpMeshType_Count, - ovrpMeshType_EnumSize = 0x7fffffff -} ovrpMeshType; - - -typedef struct ovrpMesh_ { - // Type of mesh this data describes. - ovrpMeshType MeshType; - // Number of unique vertices in the mesh. - unsigned int NumVertices; - // Number of unique indices in the mesh. - unsigned int NumIndices; - // An array of count NumVertices positions for each vertex. Always valid. - ovrpVector3f VertexPositions[ovrpMesh_MaxVertices]; - // An array of count NumIndices of vertex indices specifying triangles that make up the mesh. Always valid. - ovrpInt16 Indices[ovrpMesh_MaxIndices]; - // An array of count NumVertices of normals for each vertex. - // If null, this attribute is not used. - ovrpVector3f VertexNormals[ovrpMesh_MaxVertices]; - // An array of count NumVertices of texture coordinates for each vertex. - // If null, this attribute is not used. - ovrpVector2f VertexUV0[ovrpMesh_MaxVertices]; - // An array of count NumVertices of blend indices for each of the bones that each vertex is weighted to. - // Always valid. An index of < 0 means no blend weight. - ovrpVector4s BlendIndices[ovrpMesh_MaxVertices]; - // An array of count NumVertices of weights for each of the bones affecting each vertex. Always valid. - ovrpVector4f BlendWeights[ovrpMesh_MaxVertices]; -} ovrpMesh; - -//----------------------------------------------------------------- -// Hand pose -typedef enum ovrpTrackingConfidence_ { - ovrpTrackingConfidence_Low = 0, - ovrpTrackingConfidence_High = 0x3f800000, - ovrpTrackingConfidence_EnumSize = 0x7fffffff -} ovrpTrackingConfidence; - -typedef struct ovrpHandState_ { - // Hand Status bitfield described by ovrpHandStatus flags. - unsigned int Status; - - // Root pose of the hand in world space. Not to be confused with the root bone's transform. - // The root bone can still be offset from this by the skeleton's rest pose. - ovrpPosef RootPose; - - // Current rotation of each bone. - ovrpQuatf BoneRotations[ovrpSkeletonConstants_MaxHandBones]; - - // Provides a bitmask indicating if each finger is "pinched" or not. Indexable via bitshifting with the ovrpHandFinger - // enum i.e. (1 << ovrpHandFinger_Index) - unsigned int Pinches; - - // Provides a 0.0f to 1.0f value of how "pinched" each finger is. Indexable via the ovrpHandFinger enum. - float PinchStrength[ovrpHandFinger_Max]; - - // World space position and translation of the pointer attached to the hand. - ovrpPosef PointerPose; - - float HandScale; - - // Tracking confidence. Range [0,1], 0.0 = lowest confidence, 1.0 = highest confidence. - // This is useful for smoothly de-emphasizing hands as confidence decreases. - // This is the amount of confidence that the system has that the entire hand pose is correct. - ovrpTrackingConfidence HandConfidence; - - // Per-finger tracking confidence. Range [0,1], 0.0 = lowest confidence, 1.0 = highest confidence. - // This is the amount of confidence the system has that the individual finger poses are correct. - ovrpTrackingConfidence FingerConfidences[ovrpHandFinger_Max]; - - // Time stamp for the pose that was requested in global system time. - double RequestedTimeStamp; - - // Time stamp of the captured sample that the pose was extrapolated from. - double SampleTimeStamp; -} ovrpHandState; - -typedef struct ovrpHandState3_ { - // Hand Status bitfield described by ovrpHandStatus flags. - unsigned int Status; - - // Root pose of the hand in world space. Not to be confused with the root bone's transform. - // The root bone can still be offset from this by the skeleton's rest pose. - ovrpPosef RootPose; - - // Current rotation of each bone. - ovrpPosef BonePoses[ovrpSkeletonConstants_MaxHandBones_V2]; - - // Provides a bitmask indicating if each finger is "pinched" or not. Indexable via bitshifting with the ovrpHandFinger - // enum i.e. (1 << ovrpHandFinger_Index) - unsigned int Pinches; - - // Provides a 0.0f to 1.0f value of how "pinched" each finger is. Indexable via the ovrpHandFinger enum. - float PinchStrength[ovrpHandFinger_Max]; - - // World space position and translation of the pointer attached to the hand. - ovrpPosef PointerPose; - - float HandScale; - - // Tracking confidence. Range [0,1], 0.0 = lowest confidence, 1.0 = highest confidence. - // This is useful for smoothly de-emphasizing hands as confidence decreases. - // This is the amount of confidence that the system has that the entire hand pose is correct. - ovrpTrackingConfidence HandConfidence; - - // Per-finger tracking confidence. Range [0,1], 0.0 = lowest confidence, 1.0 = highest confidence. - // This is the amount of confidence the system has that the individual finger poses are correct. - ovrpTrackingConfidence FingerConfidences[ovrpHandFinger_Max]; - - // Time stamp for the pose that was requested in global system time. - double RequestedTimeStamp; - - // Time stamp of the captured sample that the pose was extrapolated from. - double SampleTimeStamp; -} ovrpHandState3; - - -typedef struct ovrpBodyJointLocation_ { - ovrpUInt64 LocationFlags; - ovrpPosef Pose; -} ovrpBodyJointLocation; - -typedef struct ovrpBodyState_ { - ovrpBool IsActive; - float Confidence; - ovrpUInt32 SkeletonChangedCount; - double Time; - ovrpBodyJointLocation JointLocations[ovrpBoneId_Body_End]; -} ovrpBodyState; - -typedef enum ovrpBodyJointSet_ { - ovrpBodyJointSet_None = -1, - ovrpBodyJointSet_UpperBody = 0, - ovrpBodyJointSet_FullBody = 1, - ovrpBodyJointSet_Count = 2 -} ovrpBodyJointSet; - - - - - - - - - - - - - - - - -// Must match XrBodyTrackingFidelityMETA -typedef enum ovrpBodyTrackingFidelity2_ { - ovrpBodyTrackingFidelity2_Low = 1, - ovrpBodyTrackingFidelity2_High = 2, - ovrpBodyTrackingFidelity2_EnumSize = 0x7fffffff, -} ovrpBodyTrackingFidelity2; - - - - - - - - - - - - -typedef struct ovrpBodyState4_ { - ovrpBool IsActive; - float Confidence; - ovrpUInt32 SkeletonChangedCount; - double Time; - ovrpBodyJointLocation JointLocations[ovrpBoneId_Max]; - ovrpBodyTrackingCalibrationState calibrationStatus; - ovrpBodyTrackingFidelity2 fidelity; -} ovrpBodyState4; - -typedef enum ovrpFaceExpression_ { - ovrpFaceExpression_Invalid = -1, - ovrpFaceExpression_Brow_Lowerer_L = 0, - ovrpFaceExpression_Brow_Lowerer_R = 1, - ovrpFaceExpression_Cheek_Puff_L = 2, - ovrpFaceExpression_Cheek_Puff_R = 3, - ovrpFaceExpression_Cheek_Raiser_L = 4, - ovrpFaceExpression_Cheek_Raiser_R = 5, - ovrpFaceExpression_Cheek_Suck_L = 6, - ovrpFaceExpression_Cheek_Suck_R = 7, - ovrpFaceExpression_Chin_Raiser_B = 8, - ovrpFaceExpression_Chin_Raiser_T = 9, - ovrpFaceExpression_Dimpler_L = 10, - ovrpFaceExpression_Dimpler_R = 11, - ovrpFaceExpression_Eyes_Closed_L = 12, - ovrpFaceExpression_Eyes_Closed_R = 13, - ovrpFaceExpression_Eyes_Look_Down_L = 14, - ovrpFaceExpression_Eyes_Look_Down_R = 15, - ovrpFaceExpression_Eyes_Look_Left_L = 16, - ovrpFaceExpression_Eyes_Look_Left_R = 17, - ovrpFaceExpression_Eyes_Look_Right_L = 18, - ovrpFaceExpression_Eyes_Look_Right_R = 19, - ovrpFaceExpression_Eyes_Look_Up_L = 20, - ovrpFaceExpression_Eyes_Look_Up_R = 21, - ovrpFaceExpression_Inner_Brow_Raiser_L = 22, - ovrpFaceExpression_Inner_Brow_Raiser_R = 23, - ovrpFaceExpression_Jaw_Drop = 24, - ovrpFaceExpression_Jaw_Sideways_Left = 25, - ovrpFaceExpression_Jaw_Sideways_Right = 26, - ovrpFaceExpression_Jaw_Thrust = 27, - ovrpFaceExpression_Lid_Tightener_L = 28, - ovrpFaceExpression_Lid_Tightener_R = 29, - ovrpFaceExpression_Lip_Corner_Depressor_L = 30, - ovrpFaceExpression_Lip_Corner_Depressor_R = 31, - ovrpFaceExpression_Lip_Corner_Puller_L = 32, - ovrpFaceExpression_Lip_Corner_Puller_R = 33, - ovrpFaceExpression_Lip_Funneler_LB = 34, - ovrpFaceExpression_Lip_Funneler_LT = 35, - ovrpFaceExpression_Lip_Funneler_RB = 36, - ovrpFaceExpression_Lip_Funneler_RT = 37, - ovrpFaceExpression_Lip_Pressor_L = 38, - ovrpFaceExpression_Lip_Pressor_R = 39, - ovrpFaceExpression_Lip_Pucker_L = 40, - ovrpFaceExpression_Lip_Pucker_R = 41, - ovrpFaceExpression_Lip_Stretcher_L = 42, - ovrpFaceExpression_Lip_Stretcher_R = 43, - ovrpFaceExpression_Lip_Suck_LB = 44, - ovrpFaceExpression_Lip_Suck_LT = 45, - ovrpFaceExpression_Lip_Suck_RB = 46, - ovrpFaceExpression_Lip_Suck_RT = 47, - ovrpFaceExpression_Lip_Tightener_L = 48, - ovrpFaceExpression_Lip_Tightener_R = 49, - ovrpFaceExpression_Lips_Toward = 50, - ovrpFaceExpression_Lower_Lip_Depressor_L = 51, - ovrpFaceExpression_Lower_Lip_Depressor_R = 52, - ovrpFaceExpression_Mouth_Left = 53, - ovrpFaceExpression_Mouth_Right = 54, - ovrpFaceExpression_Nose_Wrinkler_L = 55, - ovrpFaceExpression_Nose_Wrinkler_R = 56, - ovrpFaceExpression_Outer_Brow_Raiser_L = 57, - ovrpFaceExpression_Outer_Brow_Raiser_R = 58, - ovrpFaceExpression_Upper_Lid_Raiser_L = 59, - ovrpFaceExpression_Upper_Lid_Raiser_R = 60, - ovrpFaceExpression_Upper_Lip_Raiser_L = 61, - ovrpFaceExpression_Upper_Lip_Raiser_R = 62, - ovrpFaceExpression_Max = 63, - ovrpFaceExpression_EnumSize = 0x7FFFFFFF -} ovrpFaceExpression; - -typedef enum ovrpFaceExpression2_ { - ovrpFaceExpression2_Invalid = -1, - ovrpFaceExpression2_Brow_Lowerer_L = 0, - ovrpFaceExpression2_Brow_Lowerer_R = 1, - ovrpFaceExpression2_Cheek_Puff_L = 2, - ovrpFaceExpression2_Cheek_Puff_R = 3, - ovrpFaceExpression2_Cheek_Raiser_L = 4, - ovrpFaceExpression2_Cheek_Raiser_R = 5, - ovrpFaceExpression2_Cheek_Suck_L = 6, - ovrpFaceExpression2_Cheek_Suck_R = 7, - ovrpFaceExpression2_Chin_Raiser_B = 8, - ovrpFaceExpression2_Chin_Raiser_T = 9, - ovrpFaceExpression2_Dimpler_L = 10, - ovrpFaceExpression2_Dimpler_R = 11, - ovrpFaceExpression2_Eyes_Closed_L = 12, - ovrpFaceExpression2_Eyes_Closed_R = 13, - ovrpFaceExpression2_Eyes_Look_Down_L = 14, - ovrpFaceExpression2_Eyes_Look_Down_R = 15, - ovrpFaceExpression2_Eyes_Look_Left_L = 16, - ovrpFaceExpression2_Eyes_Look_Left_R = 17, - ovrpFaceExpression2_Eyes_Look_Right_L = 18, - ovrpFaceExpression2_Eyes_Look_Right_R = 19, - ovrpFaceExpression2_Eyes_Look_Up_L = 20, - ovrpFaceExpression2_Eyes_Look_Up_R = 21, - ovrpFaceExpression2_Inner_Brow_Raiser_L = 22, - ovrpFaceExpression2_Inner_Brow_Raiser_R = 23, - ovrpFaceExpression2_Jaw_Drop = 24, - ovrpFaceExpression2_Jaw_Sideways_Left = 25, - ovrpFaceExpression2_Jaw_Sideways_Right = 26, - ovrpFaceExpression2_Jaw_Thrust = 27, - ovrpFaceExpression2_Lid_Tightener_L = 28, - ovrpFaceExpression2_Lid_Tightener_R = 29, - ovrpFaceExpression2_Lip_Corner_Depressor_L = 30, - ovrpFaceExpression2_Lip_Corner_Depressor_R = 31, - ovrpFaceExpression2_Lip_Corner_Puller_L = 32, - ovrpFaceExpression2_Lip_Corner_Puller_R = 33, - ovrpFaceExpression2_Lip_Funneler_LB = 34, - ovrpFaceExpression2_Lip_Funneler_LT = 35, - ovrpFaceExpression2_Lip_Funneler_RB = 36, - ovrpFaceExpression2_Lip_Funneler_RT = 37, - ovrpFaceExpression2_Lip_Pressor_L = 38, - ovrpFaceExpression2_Lip_Pressor_R = 39, - ovrpFaceExpression2_Lip_Pucker_L = 40, - ovrpFaceExpression2_Lip_Pucker_R = 41, - ovrpFaceExpression2_Lip_Stretcher_L = 42, - ovrpFaceExpression2_Lip_Stretcher_R = 43, - ovrpFaceExpression2_Lip_Suck_LB = 44, - ovrpFaceExpression2_Lip_Suck_LT = 45, - ovrpFaceExpression2_Lip_Suck_RB = 46, - ovrpFaceExpression2_Lip_Suck_RT = 47, - ovrpFaceExpression2_Lip_Tightener_L = 48, - ovrpFaceExpression2_Lip_Tightener_R = 49, - ovrpFaceExpression2_Lips_Toward = 50, - ovrpFaceExpression2_Lower_Lip_Depressor_L = 51, - ovrpFaceExpression2_Lower_Lip_Depressor_R = 52, - ovrpFaceExpression2_Mouth_Left = 53, - ovrpFaceExpression2_Mouth_Right = 54, - ovrpFaceExpression2_Nose_Wrinkler_L = 55, - ovrpFaceExpression2_Nose_Wrinkler_R = 56, - ovrpFaceExpression2_Outer_Brow_Raiser_L = 57, - ovrpFaceExpression2_Outer_Brow_Raiser_R = 58, - ovrpFaceExpression2_Upper_Lid_Raiser_L = 59, - ovrpFaceExpression2_Upper_Lid_Raiser_R = 60, - ovrpFaceExpression2_Upper_Lip_Raiser_L = 61, - ovrpFaceExpression2_Upper_Lip_Raiser_R = 62, - ovrpFaceExpression2_Tongue_Tip_Interdental = 63, - ovrpFaceExpression2_Tongue_Tip_Alveolar = 64, - ovrpFaceExpression2_Tongue_Front_Dorsal_Palate = 65, - ovrpFaceExpression2_Tongue_Mid_Dorsal_Palate = 66, - ovrpFaceExpression2_Tongue_Back_Dorsal_Velar = 67, - ovrpFaceExpression2_Tongue_Out = 68, - ovrpFaceExpression2_Tongue_Retreat = 69, - ovrpFaceExpression2_Max = 70, - ovrpFaceExpression2_EnumSize = 0x7FFFFFFF -} ovrpFaceExpression2; - -typedef enum ovrpFaceViseme_ { - ovrpFaceViseme_SIL = 0, - ovrpFaceViseme_PP = 1, - ovrpFaceViseme_FF = 2, - ovrpFaceViseme_TH = 3, - ovrpFaceViseme_DD = 4, - ovrpFaceViseme_KK = 5, - ovrpFaceViseme_CH = 6, - ovrpFaceViseme_SS = 7, - ovrpFaceViseme_NN = 8, - ovrpFaceViseme_RR = 9, - ovrpFaceViseme_AA = 10, - ovrpFaceViseme_E = 11, - ovrpFaceViseme_IH = 12, - ovrpFaceViseme_OH = 13, - ovrpFaceViseme_OU = 14, - ovrpFaceViseme_Max = 15, - ovrpFaceViseme_EnumSize = 0x7FFFFFFF -} ovrpFaceViseme; - -typedef enum ovrpFaceTrackingDataSource2_ { - ovrpFaceTrackingDataSource2_Visual = 0, - ovrpFaceTrackingDataSource2_Audio = 1, - ovrpFaceTrackingDataSource2_EnumSize = 0x7FFFFFFF -} ovrpFaceTrackingDataSource2; - -typedef enum ovrpFaceConfidence_ { - ovrpFaceConfidence_Lower = 0, - ovrpFaceConfidence_Upper = 1, - ovrpFaceConfidence_Max = 2, - ovrpFaceConfidence_None = -1, - ovrpFaceConfidence_EnumSize = 0x7FFFFFFF -} ovrpFaceConfidence; - -typedef enum ovrpFaceConstants_ { - ovrpFaceConstants_FaceTrackingDataSourcesCount = 2, - ovrpFaceConstants_EnumSize = 0x7fffffff -} ovrpFaceConstants; - -typedef struct ovrpFaceExpressionStatus_ { - ovrpBool IsValid; - ovrpBool IsEyeFollowingBlendshapesValid; -} ovrpFaceExpressionStatus; - -typedef struct ovrpFaceState_ { - float ExpressionWeights[ovrpFaceExpression_Max]; - float ExpressionWeightConfidences[ovrpFaceConfidence_Max]; - ovrpFaceExpressionStatus Status; - double Time; -} ovrpFaceState; - -typedef struct ovrpFaceState2_ { - float ExpressionWeights[ovrpFaceExpression2_Max]; - float ExpressionWeightConfidences[ovrpFaceConfidence_Max]; - ovrpFaceExpressionStatus Status; - ovrpFaceTrackingDataSource2 DataSource; - double Time; -} ovrpFaceState2; - -typedef struct ovrpFaceVisemesState_ { - ovrpBool IsValid; - float Visemes[ovrpFaceViseme_Max]; - double Time; -} ovrpFaceVisemesState; - -typedef struct ovrpEyeGazeState_ { - ovrpPosef Pose; - float Confidence; - ovrpBool IsValid; -} ovrpEyeGazeState; - -typedef struct ovrpEyeGazesState_ { - ovrpEyeGazeState EyeGazes[ovrpEye_Count]; - double Time; -} ovrpEyeGazesState; - -/// Identifies a microgesture -typedef enum { - ovrpMicrogestureType_NoGesture = 0x00000000, - ovrpMicrogestureType_SwipeLeft = 0x00000001, - ovrpMicrogestureType_SwipeRight = 0x00000002, - ovrpMicrogestureType_SwipeForward = 0x00000003, - ovrpMicrogestureType_SwipeBackward = 0x00000004, - ovrpMicrogestureType_ThumbTap = 0x00000005, - ovrpMicrogestureType_Invalid = 0xFFFFFFFF, -} ovrpMicrogestureType; - - - - - - - - - - - - - - - - - - -typedef struct ovrpHandTrackingState_ { - // Microgesture prediction - ovrpMicrogestureType Microgesture; - - - - - - - - - - -} ovrpHandTrackingState; - -//----------------------------------------------------------------- -// Color Space Management -//----------------------------------------------------------------- -/// Color space types for HMDs -/// -/// Until vrapi_SetClientColorDesc is called, the client will default to Rec2020 for Quest and -/// Rec709 for Go HMDs. -/// -/// This API only handles color-space remapping. Unless specified, all color spaces use D65 white -/// point. It will not affect brightness, contrast or gamma curves. Some of these aspects such as -/// gamma, is handled by the texture format being used. From the GPU samplers' point-of-view, each -/// texture will continue to be treated as linear luminance including sRGB which is converted to -/// linear by the texture sampler. -/// -/// 'VRAPI_COLORSPACE_UNMANAGED' will force the runtime to skip color correction for the provided -/// content. This is *not* recommended unless the app developer is sure about what they're doing. -/// 'VRAPI_COLORSPACE_UNMANAGED' is mostly useful for research & experimentation, but not for -/// software distribution. This is because unless the client is applying the necessary corrections -/// for each HMD type, the results seen in the HMD will be uncalibrated. This is especially true for -/// future HMDs where the color space is not yet known or defined, which could lead to colors that -/// look too dull, too saturated, or hue shifted. -/// -/// Although native Quest and Rift CV1 color spaces are provided as options, they are not -/// standardized color spaces. While we provide the exact color space primary coordinates, for -/// better standardized visualized of authored content, it's recommended that the developers master -/// using a well-defined color space in the provided in the options such as Rec.2020. -/// -/// It is also recommended that content be authored for the wider color spaces instead of Rec.709 to -/// prevent visuals from looking "washed out", "dull" or "desaturated" on wider gamut devices like -/// the Quest. -/// -/// Unique Color Space Details with Chromaticity Primaries in CIE 1931 xy: -/// -/// Color Space: P3, similar to DCI-P3, but using D65 white point instead. -/// Red : (0.680, 0.320) -/// Green: (0.265, 0.690) -/// Blue : (0.150, 0.060) -/// White: (0.313, 0.329) -/// -/// Color Space: Rift CV1 between P3 & Adobe RGB using D75 white point -/// Red : (0.666, 0.334) -/// Green: (0.238, 0.714) -/// Blue : (0.139, 0.053) -/// White: (0.298, 0.318) -/// -/// Color Space: Quest similar to Rift CV1 using D75 white point -/// Red : (0.661, 0.338) -/// Green: (0.228, 0.718) -/// Blue : (0.142, 0.042) -/// White: (0.298, 0.318) -/// -/// Color Space: Rift S similar to Rec 709 using D75 -/// Red : (0.640, 0.330) -/// Green: (0.292, 0.586) -/// Blue : (0.156, 0.058) -/// White: (0.298, 0.318) -/// -/// Note: Due to LCD limitations, the Go display will not be able to meaningfully differentiate -/// brightness levels below 13 out of 255 for 8-bit sRGB or 0.0015 out of 1.0 max for linear-RGB -/// shader output values. To that end, it is recommended that reliance on a dark and narrow gamut is -/// avoided, and the content is instead spread across a larger brightness range when possible. -/// -typedef enum ovrpColorSpace_ { - /// Default value until client sets calls SetClientColorDesc - ovrpColorSpace_Unknown = 0, - /// No color correction, not recommended for production use. See notes above for more info - ovrpColorSpace_Unmanaged = 1, - /// Preferred color space for standardized color across all Oculus HMDs with D65 white point - ovrpColorSpace_Rec_2020 = 2, - /// Rec. 709 is used on Oculus Go and shares the same primary color coordinates as sRGB - ovrpColorSpace_Rec_709 = 3, - /// Oculus Rift CV1 uses a unique color space, see enum description for more info - ovrpColorSpace_Rift_CV1 = 4, - /// Oculus Rift S uses a unique color space, see enum description for more info - ovrpColorSpace_Rift_S = 5, - /// Oculus Quest's native color space is slightly different than Rift CV1 - ovrpColorSpace_Quest = 6, - /// Similar to DCI-P3. See notes above for more details on P3 - ovrpColorSpace_P3 = 7, - /// Similar to sRGB but with deeper greens using D65 white point - ovrpColorSpace_Adobe_RGB = 8, - ovrpColorSpace_Count -} ovrpColorSpace; - -//----------------------------------------------------------------- -// Event Management -//----------------------------------------------------------------- -// Enum defining the type of the underlying event, required first element in every event struct -typedef enum ovrpEventType_ { - ovrpEventType_None = 0, - /// Refresh rate changed event - ovrpEventType_DisplayRefreshRateChange = 1, - - ovrpEventType_SpatialEntityCreateSpatialAnchorComplete = 49, // Deprecated - ovrpEventType_SpatialAnchorCreateComplete = 49, - - ovrpEventType_SpatialEntitySetComponentEnabledComplete = 50, // Deprecated - ovrpEventType_SpaceSetComponentStatusComplete = 50, - - ovrpEventType_SpatialEntityQueryResults = 51, // Deprecated - ovrpEventType_SpaceQueryResults = 51, - - ovrpEventType_SpatialEntityQueryComplete = 52, // Deprecated - ovrpEventType_SpaceQueryComplete = 52, - - ovrpEventType_SpatialEntityStorageSaveResult = 53, // Deprecated - ovrpEventType_SpaceSaveComplete = 53, - - ovrpEventType_SpatialEntityStorageEraseResult = 54, // Deprecated - ovrpEventType_SpaceEraseComplete = 54, - ovrpEventType_SpaceShareResult = 56, - ovrpEventType_SpaceListSaveResult = 57, - - // XR_META_spatial_entity_sharing - ovrpEventType_ShareSpacesComplete = 58, - - ovrpEventType_SceneCaptureComplete = 100, - - - - - - - - - - - - - - - ovrpEventType_VirtualKeyboardCommitText = 201, - ovrpEventType_VirtualKeyboardBackspace = 202, - ovrpEventType_VirtualKeyboardEnter = 203, - ovrpEventType_VirtualKeyboardShown = 204, - ovrpEventType_VirtualKeyboardHidden = 205, - - // XR_META_spatial_entity_discovery - ovrpEventType_SpaceDiscoveryResultsAvailable = 300, - ovrpEventType_SpaceDiscoveryComplete = 301, - - // XR_META_spatial_entity_persistence - ovrpEventType_SpacesSaveResult = 302, - ovrpEventType_SpacesEraseResult = 303, - - ovrpEventType_PerfSettings = 304, - - // XR_META_colocation_discovery - ovrpEventType_StartColocationAdvertisementComplete = 370, - ovrpEventType_ColocationAdvertisementComplete = 371, - ovrpEventType_StopColocationAdvertisementComplete = 372, - ovrpEventType_StartColocationDiscoveryComplete = 373, - ovrpEventType_ColocationDiscoveryResult = 374, - ovrpEventType_ColocationDiscoveryComplete = 375, - ovrpEventType_StopColocationDiscoveryComplete = 376, - - ovrpEventType_PassthroughLayerResumed = 500, - - ovrpEventType_BoundaryVisibilityChanged = 510, - - // XR_META_dynamic_object_tracker - ovrpEventType_CreateDynamicObjectTrackerResult = 650, - ovrpEventType_SetDynamicObjectTrackedClassesResult = 651, - - - - - - - - - - - - - - - - - - - - - - - - - - - - -} ovrpEventType; - -// biggest event that OVRPlugin can use -typedef struct ovrpEventDataBuffer_ { - ovrpEventType EventType; - unsigned char EventData[4000]; -} ovrpEventDataBuffer; - -typedef struct ovrpEventDisplayRefreshRateChange_ { - ovrpEventType EventType; - float FromRefreshRate; - float ToRefreshRate; -} ovrpEventDisplayRefreshRateChange; - -//----------------------------------------------------------------- -// CPU/GPU Performance Levels and associated events -typedef enum { - ovrpProcessorPerformanceLevel_PowerSavings = 0, - ovrpProcessorPerformanceLevel_SustainedLow = 1, - ovrpProcessorPerformanceLevel_SustainedHigh = 2, - ovrpProcessorPerformanceLevel_Boost = 3, - ovrpProcessorPerformanceLevel_EnumSize = 0x7fffffff -} ovrpProcessorPerformanceLevel; - -typedef enum ovrpProcessorDomain { - ovrpProcessorDomain_CPU = 0, - ovrpProcessorDomain_GPU = 1, - ovrpProcessorDomain_EnumSize = 0x7fffffff -} ovrpProcessorDomain; - -typedef enum ovrpProcessorSubDomain { - ovrpProcessorSubDomain_Compositing = 0, - ovrpProcessorSubDomain_Rendering = 1, - ovrpProcessorSubDomain_Thermal = 2, - ovrpProcessorSubDomain_EnumSize = 0x7fffffff -} ovrpProcessorSubDomain; - -typedef enum ovrpProcessorNotificationLevel { - ovrpProcessorNotificationLevel_Normal = 0, - ovrpProcessorNotificationLevel_Warning = 1, - ovrpProcessorNotificationLevel_Impaired = 2, - ovrpProcessorNotificationLevel_EnumSize = 0x7fffffff -} ovrpProcessorNotificationLevel; - -typedef struct ovrpEventDataPerfSettings_ { - ovrpEventType EventType; - ovrpProcessorDomain Domain; - ovrpProcessorSubDomain SubDomain; - ovrpProcessorNotificationLevel FromLevel; - ovrpProcessorNotificationLevel ToLevel; -} ovrpEventDataPerfSettings; - -//----------------------------------------------------------------- -// Keyboard Tracking - - - - - - - - - - - - - - - - -#define OVRP_KEYBOARD_DESCRIPTION_NAME_LENGTH 128 - -// Enum defining the type of the keyboard model, effect render parameters and passthrough configuration. -typedef enum ovrpKeyboardPresentationStyles_ { - ovrpKeyboardPresentationStyles_Unknown = 0, - ovrpKeyboardPresentationStyles_Opaque = 1, - ovrpKeyboardPresentationStyles_KeyLabel = 2, -} ovrpKeyboardPresentationStyles; - -// Enum defining the type of the keyboard returned -typedef enum ovrpTrackedKeyboardFlags_ { - ovrpTrackedKeyboardFlags_Exists = 1, - ovrpTrackedKeyboardFlags_Local = 2, - ovrpTrackedKeyboardFlags_Remote = 4, - ovrpTrackedKeyboardFlags_Connected = 8, -} ovrpTrackedKeyboardFlags; - -// Enum defining the type of the keyboard requested -typedef enum ovrpTrackedKeyboardTrackingQueryFlags_ { - ovrpTrackedKeyboardQueryFlags_Local = 2, - ovrpTrackedKeyboardQueryFlags_Remote = 4, -} ovrpTrackedKeyboardQueryFlags; - -typedef struct ovrpKeyboardDescription_ { - // Tracked Object Name - char Name[OVRP_KEYBOARD_DESCRIPTION_NAME_LENGTH]; - - // Unique Object Identifier - ovrpUInt64 TrackedKeyboardId; - - // Keyboard Locale - ovrpVector3f Dimensions; - - // State of this keyboard - ovrpTrackedKeyboardFlags KeyboardFlags; - - // What type of rendering can be done for the model. - ovrpKeyboardPresentationStyles SupportedPresentationStyles; -} ovrpKeyboardDescription; - -typedef struct ovrpKeyboardState_ { - // Set to false if keyboard tracking is in an error state - ovrpBool IsActive; - - ovrpBool OrientationValid; - ovrpBool PositionValid; - ovrpBool OrientationTracked; - ovrpBool PositionTracked; - - // Position and orientation of keyboard - ovrpPoseStatef PoseState; - - // Contrast parameters, provided to Mixed Reality SDK for passthrough visualization - // when hands are over keyboard. (Will be deprecated in future.) - ovrpVector4f ContrastParameters; -} ovrpKeyboardState; - -// Keyboard Tracking Internal - - - - - - - - - - - - - - -#define OVRP_RENDER_MODEL_NAME_MAX_LENGTH 64 - -typedef struct ovrpRenderModelProperies_ { - char modelName[OVRP_RENDER_MODEL_NAME_MAX_LENGTH]; - ovrpUInt64 modelKey; - ovrpUInt32 vendorId; - ovrpUInt32 modelVersion; -} ovrpRenderModelProperties; - -// Enum defining the level of GLTF model supported by the application. -// Must match flags defined in openxr/openxr.h -typedef enum { - ovrpRenderModelFlags_SupportsGltf20Subset1 = 1, - ovrpRenderModelFlags_SupportsGltf20Subset2 = 2, - ovrpRenderModelFlags_EnumSize = 0x7fffffff -} ovrpRenderModelFlags; - -typedef enum ovrpVirtualKeyboardLocationType_ { - ovrpVirtualKeyboardLocationType_Custom = 0, - ovrpVirtualKeyboardLocationType_Far = 1, - ovrpVirtualKeyboardLocationType_Direct = 2 -} ovrpVirtualKeyboardLocationType; - -// Info necessary to help build a virtual keyboard -typedef struct ovrpVirtualKeyboardCreateInfo_ { - float placeholder; -} ovrpVirtualKeyboardCreateInfo; - -typedef struct ovrpVirtualKeyboardSpaceCreateInfo_ { - ovrpVirtualKeyboardLocationType locationType; - ovrpPosef pose; - ovrpTrackingOrigin trackingOrigin; -} ovrpVirtualKeyboardSpaceCreateInfo; - -typedef struct ovrpVirtualKeyboardLocationInfo_ { - ovrpVirtualKeyboardLocationType locationType; - ovrpPosef pose; - float scale; - ovrpTrackingOrigin trackingOrigin; -} ovrpVirtualKeyboardLocationInfo; - -// When supplying input info, specifies which input device was used. -// Must match XrVirtualKeyboardInputSourceMETA defined in -// arvr/libraries/openxr/include/openxr/meta_virtual_keyboard.h -typedef enum { - ovrpVirtualKeyboardInputSource_Invalid = 0, - ovrpVirtualKeyboardInputSource_ControllerRayLeft = 1, - ovrpVirtualKeyboardInputSource_ControllerRayRight = 2, - ovrpVirtualKeyboardInputSource_HandRayLeft = 3, - ovrpVirtualKeyboardInputSource_HandRayRight = 4, - ovrpVirtualKeyboardInputSource_ControllerDirectLeft = 5, - ovrpVirtualKeyboardInputSource_ControllerDirectRight = 6, - ovrpVirtualKeyboardInputSource_HandDirectIndexTipLeft = 7, - ovrpVirtualKeyboardInputSource_HandDirectIndexTipRight = 8, - ovrpVirtualKeyboardInputSource_EnumSize = 0x7FFFFFFF -} ovrpVirtualKeyboardInputSource; - -// Indicates an interaction with a location on the virtual keyboard -typedef struct ovrpVirtualKeyboardInputInfo_ { - ovrpVirtualKeyboardInputSource inputSource; - ovrpPosef inputPose; - ovrpUInt64 inputState; - ovrpTrackingOrigin trackingOrigin; -} ovrpVirtualKeyboardInputInfo; - -// Should remain synced with XR_MAX_VIRTUAL_KEYBOARD_COMMIT_TEXT_SIZE_META in meta_virtual_keyboard.h -#define OVRP_MAX_VIRTUAL_KEYBOARD_COMMIT_TEXT_SIZE 3992 - -typedef struct ovrpVirtualKeyboardAnimationState_ { - int animationIndex; - float fraction; -} ovrpVirtualKeyboardAnimationState; - -typedef struct ovrpVirtualKeyboardModelAnimationStates_ { - unsigned int stateCapacityInput; - unsigned int stateCountOutput; - ovrpVirtualKeyboardAnimationState* states; -} ovrpVirtualKeyboardModelAnimationStates; - -typedef struct ovrpVirtualKeyboardTextureIds_ { - unsigned int textureIdCapacityInput; - unsigned int textureIdCountOutput; - ovrpUInt64* textureIds; -} ovrpVirtualKeyboardTextureIds; - -typedef struct ovrpVirtualKeyboardTextureData_ { - unsigned int textureWidth; - unsigned int textureHeight; - unsigned int bufferCapacityInput; - unsigned int bufferCountOutput; - unsigned char* buffer; -} ovrpVirtualKeyboardTextureData; - -typedef struct ovrpVirtualKeyboardModelVisibility_ { - ovrpBool visible; -} ovrpVirtualKeyboardModelVisibility; - -// Events -typedef struct ovrpEventVirtualKeyboardCommitText_ { - ovrpEventType EventType; - char Text[OVRP_MAX_VIRTUAL_KEYBOARD_COMMIT_TEXT_SIZE]; -} ovrpEventVirtualKeyboardCommitText; - -typedef struct ovrpEventVirtualKeyboardBackspace_ { - ovrpEventType EventType; -} ovrpEventVirtualKeyboardBackspace; - -typedef struct ovrpEventVirtualKeyboardEnter_ { - ovrpEventType EventType; -} ovrpEventVirtualKeyboardEnter; - -typedef struct ovrpEventVirtualKeyboardShown_ { - ovrpEventType EventType; -} ovrpEventVirtualKeyboardShown; - -typedef struct ovrpEventVirtualKeyboardHidden_ { - ovrpEventType EventType; -} ovrpEventVirtualKeyboardHidden; - -//----------------------------------------------------------------- -// Insight Passthrough -//----------------------------------------------------------------- -typedef enum { - ovrpInsightPassthroughColorMapType_None = 0, - ovrpInsightPassthroughColorMapType_MonoToRgba = 1, - ovrpInsightPassthroughColorMapType_MonoToMono = 2, - ovrpInsightPassthroughColorMapType_HandsContrast = 3, - ovrpInsightPassthroughColorMapType_BrightnessContrastSaturation = 4, - ovrpInsightPassthroughColorMapType_ColorLut = 6, - ovrpInsightPassthroughColorMapType_InterpolatedColorLut = 7, - ovrpInsightPassthroughColorMapType_EnumSize = 0x7fffffff -} ovrpInsightPassthroughColorMapType; - -typedef enum { - ovrpInsightPassthroughStyleFlags_HasTextureOpacityFactor = 1 << 0, - ovrpInsightPassthroughStyleFlags_HasEdgeColor = 1 << 1, - ovrpInsightPassthroughStyleFlags_HasTextureColorMap = 1 << 2, - ovrpInsightPassthroughStyleFlags_EnumSize = 0x7fffffff -} ovrpInsightPassthroughStyleFlags; - -typedef ovrpUInt64 ovrpPassthroughColorLut; - -typedef struct { - /// The flags determine which fields of the struct have been initialize and - /// should be read. The values of fields which are not indicated to be - /// present by the flags should not be accessed. This is used to establish - /// backward: When new fields are added to the struct, callers of an older - /// version will only initialize the memory of previously known fields and - // indicate which ones those are in the flags. - ovrpInsightPassthroughStyleFlags Flags; - - /// Opacity of the (main) passthrough texture. - float TextureOpacityFactor; - - /// Color of the edge rendering effect. The effect is disabled if the alpha - /// value is set to 0. - ovrpColorf EdgeColor; - - /// The texture color map assigns a new color for each input (image) color. - /// The contents of `TextureColorMapData` is determined by - /// `TextureColorMapType`: - /// - For `MonoToRgba`, it is an array of 256 MrColorf values, i.e. one - /// float color tuple for each 8 bit grayscale input value. - /// - For `MonoToMono`, it is an array of 256 uint8 values, i.e. one - /// 8 bit grayscale output value for each input value. - /// - For `HandsContrast`, it is an array of 4 float values. - /// - For `BrightnessContrastSaturation`, it is an array of 3 float - /// values: [brightness, contrast, saturation]. - ovrpInsightPassthroughColorMapType TextureColorMapType; - unsigned int TextureColorMapDataSize; - unsigned char* TextureColorMapData; - - // Added in v1.84: - - /// Color LUTs are specified as part of the color mapping system. Clients must - /// set `TextureColorMapType` to `ovrpInsightPassthroughColorMapType_ColorLut` - /// or `ovrpInsightPassthroughColorMapType_InterpolatedColorLut` in order - /// to apply a color LUT. If that's the case, `TextureColorMapData` will be - /// ignored. Instead, `LutSource` and optionally `LutTarget` (for - /// `InterpolatedColorLut`) are applied, which must be created using - /// `ovrp_CreatePassthroughColorLut` previously. - /// There is no specific `ovrpInsightPassthroughStyleFlags` for color LUTs, - /// their validity is a consequence of the supplied `TextureColorMapType`. - ovrpPassthroughColorLut LutSource; - ovrpPassthroughColorLut LutTarget; - float LutWeight; -} ovrpInsightPassthroughStyle; - -typedef enum { - ovrpInsightPassthroughCapabilityFlags_Passthrough = 1 << 0, - ovrpInsightPassthroughCapabilityFlags_Color = 1 << 1, - ovrpInsightPassthroughCapabilityFlags_Depth = 1 << 2, - ovrpInsightPassthroughCapabilityFlags_ColorLut = 1 << 3, - ovrpInsightPassthroughCapabilityFlags_EnumSize = 0x7fffffff -} ovrpInsightPassthroughCapabilityFlags; - -typedef enum { - ovrpInsightPassthroughCapabilityFields_Flags = 1 << 0, - ovrpInsightPassthroughCapabilityFields_MaxColorLutResolution = 1 << 1, - ovrpInsightPassthroughCapabilityFields_EnumSize = 0x7fffffff -} ovrpInsightPassthroughCapabilityFields; - -typedef struct { - /// This field determines which other fields of the struct the caller expects to be filled (and has allocated memory - /// for). This is used to establish backward compatibility: when new fields are added to the struct, callers of - /// `ovrp_GetPassthroughCapabilities` may be built based on an older version and thus only provide enough memory for - /// part of the struct. The callee must thus check which fields it is expected to fill. Note that we should only ever - /// add new fields using this mechanism, not change or remove existing ones. - ovrpInsightPassthroughCapabilityFields Fields; - - /// General capability flags ("supports X"). - ovrpInsightPassthroughCapabilityFlags Flags; - - /// Maximum color LUT resolution supported by the system. - ovrpUInt32 MaxColorLutResolution; -} ovrpInsightPassthroughCapabilities; - -typedef enum { - ovrpPassthroughColorLutChannels_Invalid = 0, - ovrpPassthroughColorLutChannels_Rgb = 1, - ovrpPassthroughColorLutChannels_Rgba = 2, - ovrpPassthroughColorLutChannels_Max = 0x7fffffff, -} ovrpPassthroughColorLutChannels; - -typedef struct ovrpPassthroughColorLutData_ { - ovrpUInt32 BufferSize; - const ovrpByte* Buffer; -} ovrpPassthroughColorLutData; - -//----------------------------------------------------------------- -// Insight Passthrough Keyboard Hands -//----------------------------------------------------------------- -typedef struct { - /// An intensity for left tracked hand. - /// An intensity value can be in the range [0.0, 1.0] where 0.0 is the lowest intensity. - float LeftHandIntensity; - - /// An intensity for right tracked hand. - /// An intensity value can be in the range [0.0, 1.0] where 0.0 is the lowest intensity. - float RightHandIntensity; -} ovrpInsightPassthroughKeyboardHandsIntensity; - -//----------------------------------------------------------------- -// Spatial Anchors - -typedef ovrpUInt64 ovrpSpace; -typedef ovrpUInt64 ovrpUser; -#define OVRP_SPACE_INVALID_HANDLE nullptr -#define OVRP_SPATIAL_ENTITY_UUID_SIZE 2 -#define OVRP_UUID_SIZE 16 -#define OVRP_SPACE_MAX_QUERY_RESULTS_PER_EVENT 128 - -// Components used by XrSpaces to determine what functionality they support -// - Locatable, enables location functionality for pose and orientation -// - Storable, enables save and erase functionality -// - Sharable, enables sharing off-device -// - Bounded2D, used in fb_scene extension -// - Bounded3D, used in fb_scene extension -// - SemanticLabels, used in fb_scene extension -// - RoomLayout, used in fb_scene extension -// - SpaceContainer, used in fb_spatial_entity_container extension -typedef enum { - ovrpSpatialEntityComponentType_Locatable = 0, // Deprecated - ovrpSpaceComponentType_Locatable = 0, - - ovrpSpatialEntityComponentType_Storable = 1, // Deprecated - ovrpSpaceComponentType_Storable = 1, - ovrpSpaceComponentType_Sharable = 2, - - ovrpSpaceComponentType_Bounded2D = 3, - ovrpSpaceComponentType_Bounded3D = 4, - ovrpSpaceComponentType_SemanticLabels = 5, - ovrpSpaceComponentType_RoomLayout = 6, - ovrpSpaceComponentType_SpaceContainer = 7, - - - - - - - ovrpSpaceComponentType_TriangleMesh = 1000269000, - - - - // XR_META_dynamic_object_tracker - ovrpSpaceComponentType_DynamicObject = 1000288007, - - - - ovrpSpatialEntityComponentType_Max = 0x7ffffff, // Deprecated - ovrpSpaceComponentType_Max = 0x7ffffff, -} ovrpSpaceComponentType; - -// ovrpSpatialEntityComponentType is deprecated and replaced by ovrpSpaceComponentType -typedef ovrpSpaceComponentType ovrpSpatialEntityComponentType; - -// The storage location for the spatial entity -typedef enum { - ovrpSpaceStorageLocation_Invalid = 0, - ovrpSpaceStorageLocation_Local = 1, - ovrpSpaceStorageLocation_Cloud = 2, - ovrpSpaceStorageLocation_Max = 0x7ffffff, -} ovrpSpaceStorageLocation; - -typedef enum { - ovrpSpaceStoragePersistenceMode_Invalid = 0, - ovrpSpaceStoragePersistenceMode_Indefinite = 1, - ovrpSpaceStoragePersistenceMode_Max = 0x7ffffff, -} ovrpSpaceStoragePersistenceMode; - -// Action to be performed on queried items. -// - Load, Query for spaces and attempt a load on the spaces found. -// Successfully loaded spaces are returned. -typedef enum { - ovrpSpaceQueryActionType_Load = 0, -} ovrpSpaceQueryActionType; - -// Type of query to be performed -// - Action, Query for spaces using an ovrpSpaceQueryActionType -typedef enum { - ovrpSpaceQueryType_Action = 0, - ovrpSpaceQueryType_Max = 0x7ffffff, -} ovrpSpaceQueryType; - -// Filter to be used to narrow the queried spatial entities -// - None, Query for all spatial entities -// - Ids, Query for a single or a list of specific uuids -typedef enum { - ovrpSpaceQueryFilterType_None = 0, - ovrpSpaceQueryFilterType_Ids = 1, - ovrpSpaceQueryFilterType_Components = 2, - ovrpSpaceQueryFilterType_GroupUuid = 3, - ovrpSpaceQueryFilterType_Max = 0x7ffffff, -} ovrpSpaceQueryFilterType; - -typedef struct { - ovrpTrackingOrigin trackingSpace; - ovrpPosef poseInSpace; - double time; -} ovrpSpatialAnchorCreateInfo; - -// New UUID type, uses ovrpByte for uint8_t -typedef struct ovrpUuid { - ovrpByte data[OVRP_UUID_SIZE]; -} ovrpUuid; - -typedef struct { - // list of uuids used for querying - ovrpUuid ids[1024]; - // size of the list - int numIds; -} ovrpSpaceFilterIdInfo; - -typedef struct { - // list of components used for querying - ovrpSpaceComponentType components[16]; - // size of the list - int numComponents; -} ovrpSpaceFilterComponentsInfo; - -typedef struct ovrpSpaceGroupUuidFilterInfo_ { - ovrpUuid groupUuid; -} ovrpSpaceGroupUuidFilterInfo; - -typedef struct { - // type of query to be performed - ovrpSpaceQueryType queryType; - // maximum number of spaces to be returned - int maxQuerySpaces; - // timeout wait on query - double timeout; - // location we are querying for the spaces from - ovrpSpaceStorageLocation location; - // action to be performed on queried items if query type is - // of type ovrpSpaceQueryType_Action - ovrpSpaceQueryActionType actionType; - // type of filtering we wish to use on the spaces we've queried - ovrpSpaceQueryFilterType filterType; - // use only when filter type is ovrpSpaceQueryFilterType_Ids - ovrpSpaceFilterIdInfo IdInfo; - // use only when filter type is ovrpSpaceQueryFilterType_Components - ovrpSpaceFilterComponentsInfo componentsInfo; -} ovrpSpaceQueryInfo; - -typedef struct { - // type of query to be performed - ovrpSpaceQueryType queryType; - // maximum number of spaces to be returned - int maxQuerySpaces; - // timeout wait on query - double timeout; - // location we are querying for the spaces from - ovrpSpaceStorageLocation location; - // action to be performed on queried items if query type is - // of type ovrpSpaceQueryType_Action - ovrpSpaceQueryActionType actionType; - // type of filtering we wish to use on the spaces we've queried - ovrpSpaceQueryFilterType filterType; - // use only when filter type is ovrpSpaceQueryFilterType_Ids - ovrpSpaceFilterIdInfo IdInfo; - // use only when filter type is ovrpSpaceQueryFilterType_Components - ovrpSpaceFilterComponentsInfo componentsInfo; - // use only when filter type is ovrpSpaceQueryFilterType_GroupUuid - ovrpSpaceGroupUuidFilterInfo groupUuidInfo; -} ovrpSpaceQueryInfo2; - -typedef struct ovrpSpaceQueryResult { - ovrpSpace space; - ovrpUuid uuid; -} ovrpSpaceQueryResult; - -typedef struct ovrpEventDataSpatialAnchorCreateComplete_ { - ovrpEventType EventType; - ovrpUInt64 requestId; - ovrpResult result; - ovrpSpace space; - ovrpUuid uuid; -} ovrpEventDataSpatialAnchorCreateComplete; - -typedef struct ovrpEventDataSpaceSetStatusComplete_ { - ovrpEventType EventType; - ovrpUInt64 requestId; - ovrpResult result; - ovrpSpace space; - ovrpUuid uuid; - ovrpSpaceComponentType componentType; - ovrpBool enabled; -} ovrpEventDataSpaceSetStatusComplete; - -typedef struct ovrpEventSpaceQueryResults_ { - ovrpEventType EventType; - ovrpUInt64 requestId; -} ovrpEventSpaceQueryResults; - -typedef struct ovrpEventSpaceQueryComplete_ { - ovrpEventType EventType; - ovrpUInt64 requestId; - ovrpResult result; -} ovrpEventSpaceQueryComplete; - -typedef struct ovrpEventSpaceStorageSaveResult_ { - ovrpEventType EventType; - ovrpUInt64 requestId; - ovrpSpace space; - ovrpResult result; - ovrpUuid uuid; -} ovrpEventSpaceStorageSaveResult; - -typedef struct ovrpEventSpaceStorageEraseResult_ { - ovrpEventType EventType; - ovrpUInt64 requestId; - ovrpResult result; - ovrpUuid uuid; - ovrpSpaceStorageLocation location; -} ovrpEventSpaceStorageEraseResult; - -typedef struct ovrpEventSpaceShareResult_ { - ovrpEventType EventType; - ovrpUInt64 requestId; - ovrpResult result; -} ovrpEventSpaceShareResult; - -typedef struct ovrpEventSpaceListSaveResult_ { - ovrpEventType EventType; - ovrpUInt64 requestId; - ovrpResult result; -} ovrpEventSpaceListSaveResult; - -typedef struct ovrpSpaceContainer_ { - // Input, capacity of UUID list. - int uuidCapacityInput; - // Output, number of spatial entities included in the list. - int uuidCountOutput; - // List of spatial entities contained in the entity to which this component is attached. - ovrpUuid* uuids; -} ovrpSpaceContainer; - -typedef struct ovrpSemanticLabels_ { - // Input, capacity of the label buffer in byte. - int byteCapacityInput; - // Output, size of the label buffer in byte. - int byteCountOutput; - // Multiple labels represented by raw string, separated by comma (,). - char* labels; -} ovrpSemanticLabels; - -typedef struct ovrpRoomLayout_ { - // UUID, floor of the room layout. - ovrpUuid floorUuid; - // UUID, ceiling of the room layout. - ovrpUuid ceilingUuid; - // Input, indicating the capacity of pointer `wallUuids`. - int wallUuidCapacityInput; - // Output, number of walls included in the list. - int wallUuidCountOutput; - // Ordered list of walls of the room layout. - ovrpUuid* wallUuids; -} ovrpRoomLayout; - -typedef struct ovrpBoundary2D_ { - // Input, capacity of the vertex buffer. - int vertexCapacityInput; - // Output, size of the vertex buffer. - int vertexCountOutput; - // Vertices of the polygonal boundary in the coordinate frame of the associated space. - // Currently only support outer bounds. - ovrpVector2f* vertices; -} ovrpBoundary2D; - -typedef struct ovrpEventSceneCaptureComplete_ { - ovrpEventType EventType; - ovrpUInt64 requestId; - ovrpResult result; -} ovrpEventSceneCaptureComplete; - -#define OVRP_SCENE_CAPTURE_MAX_REQUEST_TYPE_COUNT 30 - -typedef struct ovrpSceneCaptureRequest_ { - int requestByteCount; - char* request; -} ovrpSceneCaptureRequest; - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -typedef struct ovrpTriangleMesh_ { - // Input, capacity of the vertex buffer. - int vertexCapacityInput; - // Output, size of the vertex buffer. - int vertexCountOutput; - // Vertices of the triangle mesh in the coordinate frame of the associated space. - ovrpVector3f* vertices; - // Input, capacity of the index buffer. - int indexCapacityInput; - // Output, size of the index buffer. - int indexCountOutput; - // Indices of the triangle mesh. - int* indices; -} ovrpTriangleMesh; - - - - - - - - - - - - - - - - - - - - - - - - - -typedef enum { - ovrpInteractionProfile_None = 0, - ovrpInteractionProfile_Touch = 1, - ovrpInteractionProfile_TouchPro = 2, - - - - ovrpInteractionProfile_TouchPlus = 4, - ovrpInteractionProfile_EnumSize = 0x7fffffff -} ovrpInteractionProfile; - -typedef enum { - ovrpPassthroughPreferenceFields_Flags = 1 << 0, - ovrpPassthroughPreferenceFields_EnumSize = 0x7fffffff -} ovrpPassthroughPreferenceFields; - -typedef enum { - ovrpPassthroughPreferenceFlags_DefaultToActive = 1 << 0, - // OpenXR flag words are 64 bit, use the same size to make them binary-compatible - ovrpPassthroughPreferenceFlags_EnumSize = 0xffffffffffffffff -} ovrpPassthroughPreferenceFlags; - -typedef struct ovrpPassthroughPreferences_ { - ovrpPassthroughPreferenceFields Fields; - ovrpPassthroughPreferenceFlags Flags; -} ovrpPassthroughPreferences; - - - - - - - -// XR_META_colocation_discovery -// This should remain synced with XR_MAX_COLOCATION_DISCOVERY_BUFFER_SIZE_META in meta_colocation_discovery.h -#define OVRP_MAX_COLOCATION_DISCOVERY_BUFFER_SIZE_META 1024 - -typedef struct ovrpColocationAdvertisementStartInfo_ { - ovrpUInt32 BufferSize; - ovrpByte* Buffer; -} ovrpColocationAdvertisementStartInfo; - -typedef struct ovrpEventStartColocationAdvertisementComplete_ { - ovrpEventType EventType; - ovrpUInt64 AdvertisementRequestId; - ovrpResult Result; - ovrpUuid AdvertisementUuid; -} ovrpEventStartColocationAdvertisementComplete; - -typedef struct ovrpEventColocationAdvertisementComplete_ { - ovrpEventType EventType; - ovrpUInt64 AdvertisementRequestId; - ovrpResult Result; -} ovrpEventColocationAdvertisementComplete; - -typedef struct ovrpEventStopColocationAdvertisementComplete_ { - ovrpEventType EventType; - ovrpUInt64 RequestId; - ovrpResult Result; -} ovrpEventStopColocationAdvertisementComplete; - -typedef struct ovrpEventStartColocationDiscoveryComplete_ { - ovrpEventType EventType; - ovrpUInt64 DiscoveryRequestId; - ovrpResult Result; -} ovrpEventStartColocationDiscoveryComplete; - -typedef struct ovrpEventColocationDiscoveryResult_ { - ovrpEventType EventType; - ovrpUInt64 DiscoveryRequestId; - ovrpUuid AdvertisementUuid; - ovrpUInt32 BufferSize; - ovrpByte Buffer[OVRP_MAX_COLOCATION_DISCOVERY_BUFFER_SIZE_META]; -} ovrpEventColocationDiscoveryResult; - -typedef struct ovrpEventColocationDiscoveryComplete_ { - ovrpEventType EventType; - ovrpUInt64 DiscoveryRequestId; - ovrpResult Result; -} ovrpEventColocationDiscoveryComplete; - -typedef struct ovrpEventStopColocationDiscoveryComplete_ { - ovrpEventType EventType; - ovrpUInt64 RequestId; - ovrpResult Result; -} ovrpEventStopColocationDiscoveryComplete; - -// XR_META_spatial_entity_sharing -typedef struct ovrpEventShareSpacesComplete_ { - ovrpEventType EventType; - ovrpUInt64 RequestId; - ovrpResult Result; -} ovrpEventShareSpacesComplete; - -typedef enum { ovrpShareSpacesRecipientType_Group = 1 } ovrpShareSpacesRecipientType; - -typedef struct ovrpShareSpacesInfo_ { - ovrpShareSpacesRecipientType RecipientType; - void* RecipientInfo; - ovrpUInt32 SpaceCount; - ovrpSpace* Spaces; -} ovrpShareSpacesInfo; - -// XR_META_spatial_entity_group_sharing -typedef struct ovrpShareSpacesGroupRecipientInfo_ { - ovrpUInt32 GroupCount; - ovrpUuid* GroupUuids; -} ovrpShareSpacesGroupRecipientInfo; - -typedef enum { - ovrpSpaceDiscoveryFilterType_None = 0, - ovrpSpaceDiscoveryFilterType_Ids = 2, - ovrpSpaceDiscoveryFilterType_Components = 3, - ovrpSpaceDiscoveryFilterType_Max = 0x7ffffff, -} ovrpSpaceDiscoveryFilterType; - -typedef struct ovrpSpaceDiscoveryFilterHeader_ { - ovrpSpaceDiscoveryFilterType Type; -} ovrpSpaceDiscoveryFilterHeader; - -typedef struct ovrpSpaceDiscoveryFilterIds_ { - ovrpSpaceDiscoveryFilterType Type; - ovrpUInt32 Count; - ovrpUuid* Uuids; -} ovrpSpaceDiscoveryFilterIds; - -typedef struct ovrpSpaceDiscoveryFilterComponents_ { - ovrpSpaceDiscoveryFilterType Type; - ovrpSpaceComponentType ComponentType; -} ovrpSpaceDiscoveryFilterComponents; - -typedef struct ovrpSpaceDiscoveryInfo_ { - ovrpUInt32 FilterCount; - const ovrpSpaceDiscoveryFilterHeader* const* Filters; -} ovrpSpaceDiscoveryInfo; - -typedef struct ovrpSpaceDiscoveryResult_ { - ovrpSpace Space; - ovrpUuid Uuid; -} ovrpSpaceDiscoveryResult; - -typedef struct ovrpSpaceDiscoveryResults_ { - ovrpUInt32 ResultCapacityInput; - ovrpUInt32 ResultCountOutput; - ovrpSpaceDiscoveryResult* Results; -} ovrpSpaceDiscoveryResults; - -typedef struct ovrpEventSpaceDiscoveryResults_ { - ovrpEventType EventType; - ovrpUInt64 requestId; -} ovrpEventSpaceDiscoveryResults; - -typedef struct ovrpEventDataSpaceDiscoveryComplete_ { - ovrpEventType EventType; - ovrpUInt64 requestId; - ovrpResult result; -} ovrpEventDataSpaceDiscoveryComplete; - -typedef struct ovrpEventSpacesSaveResult_ { - ovrpEventType EventType; - ovrpUInt64 requestId; - ovrpResult result; -} ovrpEventSpacesSaveResult; - -typedef struct ovrpEventSpacesEraseResult_ { - ovrpEventType EventType; - ovrpUInt64 requestId; - ovrpResult result; -} ovrpEventSpacesEraseResult; - -typedef struct ovrpEventDataPassthroughLayerResumed_ { - ovrpEventType EventType; - int LayerId; -} ovrpEventDataPassthroughLayerResumed; - -typedef enum { - ovrpBoundaryVisibility_NotSuppressed = 1, - ovrpBoundaryVisibility_Suppressed = 2, - ovrpBoundaryVisibility_Max = 0x7FFFFFFF -} ovrpBoundaryVisibility; - -typedef struct ovrpEventDataBoundaryVisibilityChanged_ { - ovrpEventType EventType; - ovrpBoundaryVisibility BoundaryVisibility; -} ovrpEventDataBoundaryVisibilityChanged; - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -typedef struct ovrpEnvironmentDepthTextureDesc_ { - ovrpSizei TextureSize; - int MipLevels; - int SampleCount; - ovrpLayout Layout; - ovrpTextureFormat Format; -} ovrpEnvironmentDepthTextureDesc; - -typedef struct ovrpEnvironmentDepthFrameDesc_ { - ovrpBool IsValid; - double CreateTime; - double PredictedDisplayTime; - int SwapchainIndex; - ovrpPosef CreatePose; - ovrpFovf Fov; - float NearZ; - float FarZ; - float MinDepth; - float MaxDepth; -} ovrpEnvironmentDepthFrameDesc; - -typedef enum { - ovrpEnvironmentDepthCreateFlag_None = 0, - ovrpEnvironmentDepthCreateFlag_RemoveHands = 1 << 0, -} ovrpEnvironmentDepthCreateFlag; - -typedef enum ovrpDynamicObjectClass_ { - ovrpDynamicObjectClass_None = 0, - ovrpDynamicObjectClass_Keyboard = 1000587000, - ovrpDynamicObjectClass_EnumSize = 0x7fffffff -} ovrpDynamicObjectClass; - -typedef ovrpUInt64 ovrpDynamicObjectTracker; - -typedef struct ovrpDynamicObjectTrackerCreateInfo_ { - float placeHolder; -} ovrpDynamicObjectTrackerCreateInfo; - -typedef struct ovrpDynamicObjectTrackedClassesSetInfo_ { - ovrpDynamicObjectClass* classes; - ovrpUInt32 classCount; -} ovrpDynamicObjectTrackedClassesSetInfo; - -typedef struct ovrpDynamicObjectData_ { - ovrpDynamicObjectClass classType; -} ovrpDynamicObjectData; - -typedef struct ovrpEventDataDynamicObjectTrackerCreateResult_ { - ovrpEventType eventType; - ovrpDynamicObjectTracker handle; - ovrpResult result; -} ovrpEventDataDynamicObjectTrackerCreateResult; - -typedef struct ovrpEventDataDynamicObjectSetTrackedClassesResult_ { - ovrpEventType eventType; - ovrpDynamicObjectTracker handle; - ovrpResult result; -} ovrpEventDataDynamicObjectSetTrackedClassesResult; - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -typedef enum { - V1, // A hand skeleton specification used up to January 2023. This is supported for backwards compatability, but needs - // to be phased out because it is different from the OXR specification. - V2, // A new hand skeleton specification used after January 2023 which matches the OpenXR specification. - // This format exports hand joints in global rotation space & includes some extra bones compared to V1. -} ovrHandSkeletonVersion; - -typedef enum { - ovrpQplVariantType_None = 0, - ovrpQplVariantType_String = 1, - ovrpQplVariantType_Int = 2, - ovrpQplVariantType_Double = 3, - ovrpQplVariantType_Bool = 4, - ovrpQplVariantType_StringArray = 5, - ovrpQplVariantType_IntArray = 6, - ovrpQplVariantType_DoubleArray = 7, - ovrpQplVariantType_BoolArray = 8, - ovrpQplVariantType_Max = 0x7fffffff, -} ovrpQplVariantType; - -typedef struct ovrpQplVariant_ { - ovrpQplVariantType Type; - int ValueCount; - union { - const char* StringValue; - ovrpInt64 IntValue; - double DoubleValue; - ovrpBool BoolValue; - const char** StringValues; - ovrpInt64* IntValues; - double* DoubleValues; - ovrpBool* BoolValues; - }; -} ovrpQplVariant; - -typedef struct ovrpQplAnnotation_ { - const char* Key; - ovrpQplVariant Value; -} ovrpQplAnnotation; - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -typedef ovrpUInt64 ovrpFuture; -typedef int ovrpFutureCompletionType; - -typedef enum { - ovrpFutureState_Pending = 1, - ovrpFutureState_Ready = 2, - ovrpFutureState_Max = 0x7FFFFFFF -} ovrpFutureState; - -typedef struct ovrpFutureCompletionBaseHeader_ { - ovrpFutureCompletionType Type; - ovrpResult FutureResult; -} ovrpFutureCompletionBaseHeader; - -typedef struct ovrpFutureCompletion_ { - ovrpFutureCompletionType Type; - ovrpResult FutureResult; -} ovrpFutureCompletion; - -typedef void (*ovrpOpenXrEventHandler)(void* data, void* context); - -typedef enum { - ovrpApertureType_Immersive, - ovrpApertureType_Panel, - ovrpApertureType_Volume, -} ovrpApertureType; - - - - - - - - - - - -typedef enum { - ovrpAllowRecentering = 1 << 0, -} ovrpExternalSpaceFlags; - -#ifdef __clang__ -#pragma clang diagnostic pop -#endif // __clang__ - -#endif diff --git a/Plugins/MetaXR/Source/Thirdparty/OVRPlugin/OVRPlugin/Include/OVR_Plugin_Types_Deprecated.h b/Plugins/MetaXR/Source/Thirdparty/OVRPlugin/OVRPlugin/Include/OVR_Plugin_Types_Deprecated.h deleted file mode 100644 index 510d7c8..0000000 --- a/Plugins/MetaXR/Source/Thirdparty/OVRPlugin/OVRPlugin/Include/OVR_Plugin_Types_Deprecated.h +++ /dev/null @@ -1,237 +0,0 @@ -/* - * Copyright (c) Meta Platforms, Inc. and affiliates. - * All rights reserved. - * - * Licensed under the Oculus SDK License Agreement (the "License"); - * you may not use the Oculus SDK except in compliance with the License, - * which is provided at the time of installation or download, or which - * otherwise accompanies this software in either electronic or hard copy form. - * - * You may obtain a copy of the License at - * - * https://developer.oculus.com/licenses/oculussdk/ - * - * Unless required by applicable law or agreed to in writing, the Oculus SDK - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#ifndef OVR_Plugin_Types_Deprecated_h -#define OVR_Plugin_Types_Deprecated_h - -#include "OVR_Plugin_Types.h" - -#if defined ANDROID || defined __linux__ -#define __cdecl -#endif - -/// Symmetric frustum for a camera. -typedef struct { - /// Near clip plane. - float zNear; - /// Far clip plane. - float zFar; - /// Horizontal field of view. - float fovX; - /// Vertical field of view. - float fovY; -} ovrpFrustumf; - -const static ovrpFrustumf s_identityFrustum = {0, 0, 0, 0}; - -/// Describes Input State for use with Gamepads and Oculus Controllers. -typedef struct { - unsigned int ConnectedControllerTypes; - unsigned int Buttons; - unsigned int Touches; - unsigned int NearTouches; - float IndexTrigger[2]; - float HandTrigger[2]; - ovrpVector2f Thumbstick[2]; - ovrpVector2f Touchpad[2]; -} ovrpControllerState2; - -/// Describes Input State for use with Gamepads and Oculus Controllers. -typedef struct { - unsigned int ConnectedControllerTypes; - unsigned int Buttons; - unsigned int Touches; - unsigned int NearTouches; - float IndexTrigger[2]; - float HandTrigger[2]; - ovrpVector2f Thumbstick[2]; -} ovrpControllerState; - -typedef ovrpControllerState ovrpInputState; - -typedef struct ovrpSkeleton_ { - ovrpSkeletonType SkeletonType; - unsigned int NumBones; - unsigned int NumBoneCapsules; - ovrpBone Bones[ovrpSkeletonConstants_MaxHandBones]; - ovrpBoneCapsule BoneCapsules[ovrpSkeletonConstants_MaxBoneCapsules]; -} ovrpSkeleton; - -// Old UUID type -typedef struct ovrpSpatialEntityUuid { - // unique id value - ovrpUInt64 value[OVRP_SPATIAL_ENTITY_UUID_SIZE]; -} ovrpSpatialEntityUuid; - -// Backward compatibility for Unreal integration -typedef ovrpSpatialAnchorCreateInfo ovrpSpaceAnchorCreateInfo; - -// Single Space Load is no longer supported -typedef struct ovrpEventSpaceStorageLoadResult_ { - ovrpEventType EventType; - ovrpUInt64 requestId; - ovrpSpace space; - ovrpResult result; - ovrpSpatialEntityUuid uuid; -} ovrpEventSpaceStorageLoadResult; - -/// Capability bits that control the plugin's configuration. -/// Each value corresponds to a left-shift offset in the bitfield. -typedef enum { - /// If true, sRGB read-write occurs, reducing eye texture aliasing. - ovrpCap_SRGB = 0, - /// If true, the image will be corrected for chromatic aberration. - ovrpCap_Chromatic, - /// If true, eye textures are flipped on the Y axis before display. - ovrpCap_FlipInput, - /// If true, head tracking affects the rotation reported by ovrp_GetEyePose. - ovrpCap_Rotation, - /// (Deprecated) If true, head rotation affects the position reported by ovrp_GetEyePose. - ovrpCap_HeadModel, - /// If true, head position tracking affects the poses returned by ovrp_GetEyePose. - ovrpCap_Position, - /// If true, the runtime collects performance statistics for debugging. - ovrpCap_CollectPerf, - /// If true, a debugging heads-up display appears in the scene. - ovrpCap_DebugDisplay, - /// If true, the left eye image is shown to both eyes. Right is ignored. - ovrpCap_Monoscopic, - /// If true, both eyes share texture 0, with the left eye on the left side. - ovrpCap_ShareTexture, - /// If true, a clip mesh will be provided for both eyes - ovrpCap_OcclusionMesh, - ovrpCap_EnumSize = 0x7fffffff -} ovrpCaps; - -/// Read-only bits that reflect the plugins' current status. -/// Each value corresponds to a left-shift offset in the bitfield. -typedef enum { - /// If true, the VR display is virtual and no physical device is attached. - ovrpStatus_Debug = 0, - /// (Deprecated) If true, the health & safety warning is currently visible. - ovrpStatus_HSWVisible, - /// If true, the HMD supports position tracking (e.g. a camera is attached). - ovrpStatus_PositionSupported, - /// If true, position tracking is active and not obstructed. - ovrpStatus_PositionTracked, - /// If true, the system has reduced performance to save power. - ovrpStatus_PowerSaving, - /// If true, the plugin is initialized and ready for use. - ovrpStatus_Initialized, - /// If true, a working VR display is present, but it may be a "debug" display. - ovrpStatus_HMDPresent, - /// If true, the user is currently wearing the VR display and it is not idle. - ovrpStatus_UserPresent, - /// If true, the app has VR focus. - ovrpStatus_HasVrFocus, - /// If true, the app should quit as soon as possible. - ovrpStatus_ShouldQuit, - /// If true, the app should call ovrp_RecenterPose as soon as possible. - ovrpStatus_ShouldRecenter, - /// If true, we need to recreate the session - ovrpStatus_ShouldRecreateDistortionWindow, - ovrpStatus_EnumSize = 0x7fffffff -} ovrpStatus; - -typedef enum { - /// (String) Identifies the version of OVRPlugin you are using. Format: "major.minor.release" - ovrpKey_Version, - /// (String) Identifies the type of VR display device in use, if any. - ovrpKey_ProductName, - /// (String) The latest measured latency. - ovrpKey_Latency, - /// (Float) The physical distance from the front of the player's eye to the back of their neck - /// in meters. - ovrpKey_EyeDepth, - /// (Float) The physical height of the player's eyes from the ground in meters. - ovrpKey_EyeHeight, - /// (Float, read-only) The current available battery charge, ranging from 0 (empty) to 1 (full). - ovrpKey_BatteryLevel, - /// (Float, read-only) The current battery temperature in degrees Celsius. - ovrpKey_BatteryTemperature, - /// (Float) The current CPU performance level, rounded down to nearest integer in the range 0-2. - ovrpKey_CpuLevel, - /// (Float) The current GPU performance level, rounded down to nearest integer in the range 0-2. - ovrpKey_GpuLevel, - /// (Float, read-only) The current system volume level. - ovrpKey_SystemVolume, - /// (Float) The fraction of a frame ahead to predict poses and allow GPU-CPU parallelism. - /// Trades latency for performance. - ovrpKey_QueueAheadFraction, - /// (Float) The physical inter-pupillary distance (IPD) separating the user's eyes in meters. - ovrpKey_IPD, - /// (Float) The number of allocated eye texture texels per screen pixel in each direction - /// (horizontal and vertical). - ovrpKey_NativeTextureScale, - /// (Float) The number of rendered eye texture texels per screen pixel based on viewport scaling. - ovrpKey_VirtualTextureScale, - /// (Float) The native refresh rate of the HMD. - ovrpKey_Frequency, - /// (String) The version of the underlying SDK in use. - ovrpKey_SDKVersion, - ovrpKey_EnumSize = 0x7fffffff -} ovrpKey; - -typedef ovrpShape ovrpOverlayShape; - -#ifdef __clang__ -#pragma clang diagnostic push -#pragma clang diagnostic ignored "-Wpedantic" -#endif // __clang__ - -typedef enum { - ovrpOverlayFlag_None = 0x00000000, - /// If true, the overlay appears on top of all lower-indexed layers and the eye buffers. - ovrpOverlayFlag_OnTop = 0x00000001, - /// If true, the overlay bypasses TimeWarp and directly follows head motion. - ovrpOverlayFlag_HeadLocked = 0x00000002, - /// If true, the overlay will not allow depth compositing on Rift. - ovrpOverlayFlag_NoDepth = 0x00000004, - // If true, the overlay will use the VrApi supersample flag, which can be helpful but is extremely expensive. - ovrpOverlayFlag_ExpensiveSuperSample = 0x00000008, - // if true, the overlay will use the Vrapi efficient supersample flag - ovrpOverlayFlag_EfficientSuperSample = 0x00000010, - // If true, the overlay will use the Vrapi sharpen flag - ovrpOverlayFlag_EfficientSharpen = 0x00000020, - // If true, the overlay will use bicubic filtering flag - ovrpOverlayFlag_BicubicFiltering = 0x00000040, - // If true, the overlay will use the Vrapi sharpen flag - ovrpOverlayFlag_QualitySharpen = 0x00000080, - // If true, the overlay will be "secure content"; the contents cannot be recorded by users - ovrpOverlayFlag_SecureContent = 0x00000100, - - ovrpOverlayFlag_Hidden = 0x00000200, - - ovrpOverlayFlag_AutoFilter = 0x00000400, - - // Internal flags - /// If true, the overlay is a loading screen. - ovrpOverlayFlag_LoadingScreen = 0x40000000, - /// If true, the overlay bypasses distortion and is copied directly to the display - /// (possibly with scaling). - ovrpOverlayFlag_Undistorted = 0x80000000, - ovrpOverlayFlag_EnumSize = 0x7fffffff -} ovrpOverlayFlag; - -#ifdef __clang__ -#pragma clang diagnostic pop -#endif // __clang__ - -#endif diff --git a/Plugins/MetaXR/Source/Thirdparty/OVRPlugin/OVRPlugin/LICENSE.txt b/Plugins/MetaXR/Source/Thirdparty/OVRPlugin/OVRPlugin/LICENSE.txt deleted file mode 100644 index 3c024a8..0000000 --- a/Plugins/MetaXR/Source/Thirdparty/OVRPlugin/OVRPlugin/LICENSE.txt +++ /dev/null @@ -1,17 +0,0 @@ -Copyright (c) Meta Platforms, Inc. and affiliates. -All rights reserved. - -Licensed under the Oculus SDK License Agreement (the "License"); -you may not use the Oculus SDK except in compliance with the License, -which is provided at the time of installation or download, or which -otherwise accompanies this software in either electronic or hard copy form. - -You may obtain a copy of the License at - -https://developer.oculus.com/licenses/oculussdk/ - -Unless required by applicable law or agreed to in writing, the Oculus SDK -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. diff --git a/Plugins/MetaXR/Source/Thirdparty/OVRPlugin/OVRPlugin/Lib/Win64/OpenXR/OVRPlugin.dll b/Plugins/MetaXR/Source/Thirdparty/OVRPlugin/OVRPlugin/Lib/Win64/OpenXR/OVRPlugin.dll deleted file mode 100644 index a567ced..0000000 Binary files a/Plugins/MetaXR/Source/Thirdparty/OVRPlugin/OVRPlugin/Lib/Win64/OpenXR/OVRPlugin.dll and /dev/null differ diff --git a/Plugins/MetaXR/Source/Thirdparty/OVRPlugin/OVRPlugin/Lib/Win64/OpenXR/OVRPlugin.lib b/Plugins/MetaXR/Source/Thirdparty/OVRPlugin/OVRPlugin/Lib/Win64/OpenXR/OVRPlugin.lib deleted file mode 100644 index 2e21125..0000000 Binary files a/Plugins/MetaXR/Source/Thirdparty/OVRPlugin/OVRPlugin/Lib/Win64/OpenXR/OVRPlugin.lib and /dev/null differ diff --git a/Plugins/MetaXR/Source/Thirdparty/OVRPlugin/OVRPlugin/Lib/arm64-v8a/OpenXR/libOVRPlugin.so b/Plugins/MetaXR/Source/Thirdparty/OVRPlugin/OVRPlugin/Lib/arm64-v8a/OpenXR/libOVRPlugin.so deleted file mode 100644 index 236e9bc..0000000 Binary files a/Plugins/MetaXR/Source/Thirdparty/OVRPlugin/OVRPlugin/Lib/arm64-v8a/OpenXR/libOVRPlugin.so and /dev/null differ diff --git a/Plugins/MetaXR/Source/Thirdparty/OVRPlugin/OVRPluginXR.build.cs b/Plugins/MetaXR/Source/Thirdparty/OVRPlugin/OVRPluginXR.build.cs deleted file mode 100644 index ca24e74..0000000 --- a/Plugins/MetaXR/Source/Thirdparty/OVRPlugin/OVRPluginXR.build.cs +++ /dev/null @@ -1,25 +0,0 @@ -// @lint-ignore-every LICENSELINT -// Copyright Epic Games, Inc. All Rights Reserved. - -using UnrealBuildTool; - -public class OVRPluginXR : ModuleRules -{ - public OVRPluginXR(ReadOnlyTargetRules Target) : base(Target) - { - - - - - Type = ModuleType.External; - - string SourceDirectory = "$(PluginDir)/Source/ThirdParty/OVRPlugin/OVRPlugin/"; - - PublicIncludePaths.Add(SourceDirectory + "Include"); - - if (Target.Platform == UnrealTargetPlatform.Android) - { - RuntimeDependencies.Add(SourceDirectory + "Lib/arm64-v8a/OpenXR/libOVRPlugin.so"); - } - } -}